ZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS8uY2xhc3NwYXRoIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMTY1ZWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYy8iLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzODQ5ZGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi10ZW1wLmZvbGRlcgotd3NjLWF4aXMuamFyCi1AZG90Ci1zcmMuemlwCi1qYXZhQ29tcGlsZXIuLi5hcmdzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NTQ4NTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVkMDQ0Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jU2F0IERlYyAyMiAxOTo1MDoyNCBFU1QgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWVuY29kaW5nLzxwcm9qZWN0Pj1JU08tODg1OS0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZkMTA0OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6Mjk6MTQgRVNUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbkluRGVwcmVjYXRlZENvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25XaGVuT3ZlcnJpZGluZ0RlcHJlY2F0ZWRNZXRob2Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGlzY291cmFnZWRSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVtcHR5U3RhdGVtZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmhpZGRlbkNhdGNoQmxvY2s9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBhdGlibGVOb25Jbmhlcml0ZWRJbnRlcmZhY2VNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBsZXRlRW51bVN3aXRjaD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5kaXJlY3RTdGF0aWNBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmxvY2FsVmFyaWFibGVIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nRGVwcmVjYXRlZEFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdTZXJpYWxWZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9FZmZlY3RBc3NpZ25tZW50PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9JbXBsaWNpdFN0cmluZ0NvbnZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub25FeHRlcm5hbGl6ZWRTdHJpbmdMaXRlcmFsPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3BlY2lhbFBhcmFtZXRlckhpZGluZ0ZpZWxkPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN0YXRpY0FjY2Vzc1JlY2VpdmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN5bnRoZXRpY0FjY2Vzc0VtdWxhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udHlwZVBhcmFtZXRlckhpZGluZz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuY2hlY2tlZFR5cGVPcGVyYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmRvY3VtZW50ZWRFbXB0eUJsb2NrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeUVsc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5VHlwZUNoZWNrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnF1YWxpZmllZEZpZWxkQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb25XaGVuT3ZlcnJpZGluZz1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRJbXBvcnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5PdmVycmlkaW5nQ29uY3JldGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUHJpdmF0ZU1lbWJlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NzA0MDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jTW9uIEphbiAzMCAxMDo0MTozOSBFU1QgMjAwNgotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0xCi1jb21waWxlcnMucC5uby1yZXF1aXJlZC1hdHQ9MAotY29tcGlsZXJzLnAubm90LWV4dGVybmFsaXplZC1hdHQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1hdHRyaWJ1dGU9MAotY29tcGlsZXJzLnAudW5rbm93bi1jbGFzcz0wCi1jb21waWxlcnMucC51bmtub3duLWVsZW1lbnQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1yZXNvdXJjZT0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWV4LXBvaW50cz0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWltcG9ydD0wCi1jb21waWxlcnMudXNlLXByb2plY3Q9dHJ1ZQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdiYTJmYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmU7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC4zMDYucXVhbGlmaWVyCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnBsdWdpbi5XZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uQ29yZVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbWFuZDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb250ZXh0O3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5wbHVnaW47eC1pbnRlcm5hbDo9dHJ1ZQotUmVxdWlyZS1CdW5kbGU6IG9yZy5hcGFjaGUuYW50O2J1bmRsZS12ZXJzaW9uPSJbMS42LjUsMi4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcztidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5qZHQuY29yZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cztidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuYXBhY2hlLmF4aXM7YnVuZGxlLXZlcnNpb249IlsxLjQuMCwxLjUuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24ubW9kdWxlY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50O2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMCwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAyLDIuMC4wKSIKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2Fib3V0Lmh0bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2FudC9heGlzX2J1amF2YS5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2FudC9heGlzX2J1amF2YS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDU4NWNhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9hbnQvYXhpc19idWphdmEucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSEtLSBTY2VuYXJpb1R5cGUgUkVRVUlSRUQuIERpZmZlcmVudGlhdGVzIGZyb20gImNsaWVudCIgc2NlbmFyaW8uCi1TY2VuYXJpb1R5cGU9c2VydmljZQotCi0hLS0gSW5pdGlhbFNlbGVjdGlvbiBSRVFVSVJFRC4gIFdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgdG8gdGhlIGlucHV0IFdTREwgb3IgSmF2YQotSW5pdGlhbFNlbGVjdGlvbj0vZHluYW1pY1dlYlByb2plY3ROYW1lL3NyYy9wYWNrYWdlbmFtZS9teVNlcnZpY2UuamF2YQotCi0hLS1VdGlsaXR5IHByb3BlcnR5IHZhbHVlcyAtIHVzZSB0aGVzZSB0byBsaXN0IHZhbGlkIHZhbHVlcyBmb3IgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgotIS0tIFNlcnZpY2UuUnVudGltZUlkLCBTZXJ2aWNlLlNlcnZlcklkIAotTGlzdFJ1bnRpbWVzPXRydWUKLUxpc3RTZXJ2ZXJzPXRydWUKLSEtLSBWZXJib3NlIHdpbGwgbGlzdCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIGFzIHdlbGwgYXMgZXJyb3JzIGlmIHNldCB0byB0cnVlCi1WZXJib3NlPXRydWUKLQotIS0tICBTZXJ2aWNlLlJ1bnRpbWVJZCAtIElEIG9mIHdlYiBzZXJ2aWNlIHJ1bnRpbWUgCi1TZXJ2aWNlLlJ1bnRpbWVJZD1vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi5heGlzV2ViU2VydmljZVJUCi0hLS0gU2VydmljZS5TZXJ2ZXJJZCAtICBJRCBvZiB0YXJnZXQgc2VydmVyIAotU2VydmljZS5TZXJ2ZXJJZD1vcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC42MAotIS0tIFNlcnZpY2UuVHlwZUlkIC0gSmF2YSBCZWFuIGlzIGRlZmF1bHQgZm9yIGJvdGggVG9wIERvd24gYW5kIEJvdHRvbSBVcAotIS0tIFNlcnZpY2UuVHlwZUlkPUphdmEgQmVhbgotCi0hLS0gU2VydmljZVByb2plY3ROYW1lIC0gIS0tdHlwZTpTdHJpbmcgLSBuYW1lIG9mIFNlcnZpY2UgcHJvamVjdCAtIHRoaXMgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gZ2l2ZSB0aGUgc2VydmljZSBwcm9qZWN0IGEgZGlmZmVyZW50IG5hbWUgdGhhbiB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBpbml0aWFsIHNlbGVjdGlvbi4gIHR5cGU6IFN0cmluZyAgICAKLSEtLVNlcnZpY2VQcm9qZWN0TmFtZT1zZXJ2aWNlUHJvamVjdE5hbWUKLSEtLSBTZXJ2aWNlRWFyUHJvamVjdE5hbWUgLSAhLS10eXBlOlN0cmluZyAtIG5hbWUgb2YgU2VydmljZSBFQVIgcHJvamVjdCAtIHRoaXMgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gZ2l2ZSB0aGUgc2VydmljZSBFQVIgcHJvamVjdCBhIGRpZmZlcmVudCBuYW1lIHRoYW4gdGhlIEVBUiBwcm9qZWN0IGFscmVhZHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZXJ2aWNlIHByb2plY3QuICB0eXBlOiBTdHJpbmcKLSEtLVNlcnZpY2VFYXJQcm9qZWN0TmFtZT1zZXJ2aWNlRWFyUHJvamVjdE5hbWUKLQotIS0tIE1hcHBpbmdzCi0hLS0gVG9wIGRvd24gb3IgYm90dG9tIHVwIHNjZW5hcmlvLiBXb3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIHByb3BlcnR5IGZpbGUgY29udGFpbmluZyBtYXBwaW5ncy4KLSEtLSBUb3AgRG93bjogTWFwcGluZ3MgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcGFja2FnZSBuYW1lcyBvZiB0aGUgZ2VuZXJhdGVkIEphdmEgdGVtcGxhdGUgY2xhc3Nlcy4KLSEtLSBUaGUgY29udGVudCBvZiB0aGUgcHJvcGVydGllcyBmaWxlIG11c3QgYmUgb2YgdGhlIGZvcm1hdCBuYW1lc3BhY2U9cGFja2FnZSAgCi0hLS0gQm90dG9tIFVwOiBNYXBwaW5ncyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgbmFtZXMgaW4gdGhlIGdlbmVyYXRlZCBXU0RMLgotIS0tIFRoZSBjb250ZW50IG9mIHRoZSBwcm9wZXJ0aWVzIGZpbGUgbXVzdCBiZSBvZiB0aGUgZm9ybWF0IHBhY2thZ2UgPSBuYW1lc3BhY2UgCi0hLS1NYXBwaW5ncz0vdGVzdFByb2ovbWFwcGluZ3MvbWFwcGluZ3MudHh0Ci0KLSEtLSBKYXZhT3V0cHV0Ci0hLS0gVG9wIGRvd24gLSBTdHJpbmc6IHRoZSB3b3Jrc3BhY2UgcmVsYXRpdmUgVVJJIGZvciBhIEphdmEgc291cmNlIGZvbGRlciBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhIGNvZGUgLSBtdXN0IGJlIGV4aXN0aW5nIHdvcmtzcGFjZSBzb3VyY2UgZm9sZGVyCi0hLS1KYXZhT3V0cHV0PS9wcm9qZWN0TmFtZS9KYXZhU291cmNlCi0KLSEtLSBNZXRob2RzCi0hLS0gQm90dG9tIHVwIC0gc3BhY2UgZGVsaW1pdGVkIHN0cmluZyBvZiBtZXRob2Qgc2lnbmF0dXJlcyAoaS5lLiBtZXRob2QxKHBhcm1UeXBlMSkgbWV0aG9kMihwYXJtVHlwZTIpKSB0byBiZSBleHBvc2VkIGluIG91dHB1dCBXU0RMLiAgSWYgbm8gbGlzdCBpcyBwcm92aWRlZCwgYWxsIG1ldGhvZHMgYXJlIGV4cG9zZWQuCi0hLS0gTWV0aG9kcz0KLQotIS0tIFN0eWxlCi0hLS0gQm90dG9tIHVwIC0gU3RyaW5nOiBvbmUgb2Y6IFJQQywgRE9DVU1FTlQsIFdSQVBQRUQKLSEtLVN0eWxlPURPQ1VNRU5UCi0KLSEtLSBVc2UKLSEtLSBCb3R0b20gdXAgLSBTdHJpbmc6IG9uZSBvZjogTElURVJBTCwgRU5DT0RFRCAKLSEtLVVzZT1MSVRFUkFMCi0KLSEtLU92ZXJ3cml0ZUZpbGVzRW5hYmxlZCAtIHNldCB0byB0cnVlIHRvIG92ZXJ3cml0ZSBmaWxlcyB0aGF0IGFscmVhZHkgZXhpc3QuIHR5cGU6Ym9vbGVhbiAKLSEtLSBub3RlIGZvciBub24taW50ZXJhY3RpdmUgbW9kZSBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoaXMgYmUgc2V0IHRvIHRydWUKLSEtLU92ZXJ3cml0ZUZpbGVzRW5hYmxlZD10cnVlCi0KLSEtLUNyZWF0ZUZvbGRlcnNFbmFibGVkIC0gc2V0IHRvIHRydWUgY3JlYXRlIGZvbGRlcnMgbmVjZXNzYXJ5IGR1cmluZyBmaWxlIGdlbmVyYXRpb24gdHlwZTpib29sZWFuCi0hLS0gbm90ZSBmb3Igbm9uLWludGVyYWN0aXZlIG1vZGUgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGlzIGJlIHNldCB0byB0cnVlCi0hLS1DcmVhdGVGb2xkZXJzRW5hYmxlZD10cnVlCi0KLSEtLUNoZWNrb3V0RmlsZXNFbmFibGVkIC0gc2V0IHRvIHRydWUgdG8gY2hlY2sgb3V0IGZpbGVzIHdpdGggbm8gd2FybmluZyB0byB0aGUgdXNlciB0eXBlOmJvb2xlYW4KLSEtLSBub3RlIGZvciBub24taW50ZXJhY3RpdmUgbW9kZSBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoaXMgYmUgc2V0IHRvIHRydWUKLSEtLUNoZWNrb3V0RmlsZXNFbmFibGVkPXRydWUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9hbnQvYXhpc19idWphdmEueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2FudC9heGlzX2J1amF2YS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZjk0MmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2FudC9heGlzX2J1amF2YS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4KLQotPHByb2plY3QgZGVmYXVsdD0ibWFpbiIgYmFzZWRpcj0iLiI+Ci0KLTxlY2hvIG1lc3NhZ2U9InB1bGxpbmcgaW4gcHJvcGVydHkgZmlsZXMiLz4KLTxwcm9wZXJ0eSBmaWxlPSJheGlzX2J1amF2YS5wcm9wZXJ0aWVzIi8+Ci0JCi08ZWNobyBtZXNzYWdlPSJjYWxsaW5nIHRoZSB3ZWIgc2VydmljZXMgZ2VuZXJhdGlvbiBhbnQgdGFzazogYXhpc19idWphdmEiLz4KLSA8dGFyZ2V0IG5hbWU9Im1haW4iID4KLSAgCSA8d3NnZW4vPgotICA8L3RhcmdldD4KLSAgCi08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvYW50L2F4aXNfY2xpZW50LnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvYW50L2F4aXNfY2xpZW50LnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZTVkZTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2FudC9heGlzX2NsaWVudC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIS0tU2NlbmFyaW9UeXBlIFJFUVVJUkVELiBEaWZmZXJlbnRpYXRlcyBmcm9tICJzZXJ2aWNlIiBzY2VuYXJpby4KLVNjZW5hcmlvVHlwZT1jbGllbnQKLQotIS0tSW5pdGlhbFNlbGVjdGlvbiBSRVFVSVJFRC4gIFdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgdG8gdGhlIGlucHV0IFdTREwgb3IgSmF2YS4KLUluaXRpYWxTZWxlY3Rpb249L2R5bmFtaWNXZWJQcm9qZWN0TmFtZS9XZWJDb250ZW50L3dzZGwvbXlTZXJ2aWNlLndzZGwKLQotIS0tVXRpbGl0eSBwcm9wZXJ0eSB2YWx1ZXMgLSB1c2UgdGhlc2UgdG8gbGlzdCB2YWx1ZXMgZm9yIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLSEtLSBDbGllbnQuUnVudGltZUlkLCBDbGllbnQuU2VydmVySWQgCi1MaXN0UnVudGltZXM9dHJ1ZQotTGlzdFNlcnZlcnM9dHJ1ZQotIS0tIFZlcmJvc2Ugd2lsbCBsaXN0IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgYXMgd2VsbCBhcyBlcnJvcnMgaWYgc2V0IHRvIHRydWUKLVZlcmJvc2U9dHJ1ZQotCi0gCi0hLS1DbGllbnQuUnVudGltZUlkIC0gSUQgb2Ygd2ViIHNlcnZpY2UgcnVudGltZSAKLUNsaWVudC5SdW50aW1lSWQ9b3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24uYXhpc1dlYlNlcnZpY2VSVAotIS0tQ2xpZW50LlNlcnZlcklkIC0gSUQgb2YgdGFyZ2V0IHNlcnZlciAKLUNsaWVudC5TZXJ2ZXJJZD1vcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC42MAotCi0hLS1DbGllbnRQcm9qZWN0TmFtZSAtIG5hbWUgb2YgQ2xpZW50IHByb2plY3QgLSB0aGlzIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIGdpdmUgdGhlIGNsaWVudCBwcm9qZWN0IGEgCi0hLS0gZGlmZmVyZW50IG5hbWUgdGhhbiB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBpbml0aWFsIHNlbGVjdGlvbgotIS0tQ2xpZW50UHJvamVjdE5hbWU9Y2xpZW50UHJvamVjdE5hbWUKLQotIS0tQ2xpZW50RWFyUHJvamVjdE5hbWUtIG5hbWUgb2YgQ2xpZW50IEVBUiBwcm9qZWN0IC0gc2V0IG9ubHkgaWYgYXBwbGljYWJsZSBmb3Igc2VsZWN0ZWQgc2VydmVyIHR5cGUKLSEtLUNsaWVudEVhclByb2plY3ROYW1lPWNsaWVudEVBUlByb2plY3ROYW1lCi0KLSEtLUNsaWVudENvbXBvbmVudFR5cGUgLSB0eXBlIG9mIENsaWVudCBwcm9qZWN0IC0gdGhlIGZvbGxvd2luZyBhcmUgdmFsaWQgQXhpcyB0ZW1wbGF0ZXM6IHRlbXBsYXRlLmpzdC53ZWIgYW5kIHRlbXBsYXRlLmpzdC51dGlsaXR5Ci0hLS1DbGllbnRDb21wb25lbnRUeXBlPXRlbXBsYXRlLmpzdC53ZWIKLQotIS0tIEN1c3RvbWl6ZUNsaWVudE1hcHBpbmdzIC0gc2V0IHRvIHRydWUgdG8gc3VwcGx5IHBhY2thZ2UtbmFtZXNwYWNlIG1hcHBpbmdzIHR5cGU6IGJvb2xlYW4KLSEtLUN1c3RvbWl6ZUNsaWVudE1hcHBpbmdzPWZhbHNlICAKLSAgICAKLSEtLSBNYXBwaW5ncyAKLSEtLSBXb3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIHByb3BlcnR5IGZpbGUgY29udGFpbmluZyBtYXBwaW5ncwotIS0tIE1hcHBpbmdzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhY2thZ2UgbmFtZXMgb2YgdGhlIGdlbmVyYXRlZCBKYXZhIGNsYXNzZXMuCi0hLS0gTmVlZCBub3QgYmUgc2V0IGlmIEN1c3RvbWl6ZUNsaWVudE1hcHBpbmdzIGlzIGZhbHNlICAKLSEtLSBUaGUgY29udGVudCBvZiB0aGUgcHJvcGVydGllcyBmaWxlIG11c3QgYmUgb2YgdGhlIGZvcm1hdCBuYW1lc3BhY2U9cGFja2FnZS4KLSEtLU1hcHBpbmdzPS90ZXN0UHJvai9tYXBwaW5ncy9tYXBwaW5ncy50eHQKLQotIS0tT3ZlcndyaXRlRmlsZXNFbmFibGVkIC0gc2V0IHRvIHRydWUgdG8gb3ZlcndyaXRlIGZpbGVzIHRoYXQgYWxyZWFkeSBleGlzdC4gdHlwZTpib29sZWFuIAotIS0tIG5vdGUgZm9yIG5vbi1pbnRlcmFjdGl2ZSBtb2RlIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhpcyBiZSBzZXQgdG8gdHJ1ZQotIS0tIE92ZXJ3cml0ZUZpbGVzRW5hYmxlZD10cnVlCi0KLSEtLUNyZWF0ZUZvbGRlcnNFbmFibGVkIC0gc2V0IHRvIHRydWUgY3JlYXRlIGZvbGRlcnMgbmVjZXNzYXJ5IGR1cmluZyBmaWxlIGdlbmVyYXRpb24gdHlwZTpib29sZWFuCi0hLS0gbm90ZSBmb3Igbm9uLWludGVyYWN0aXZlIG1vZGUgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGlzIGJlIHNldCB0byB0cnVlCi0hLS0gQ3JlYXRlRm9sZGVyc0VuYWJsZWQ9dHJ1ZQotCi0hLS1DaGVja291dEZpbGVzRW5hYmxlZCAtIHNldCB0byB0cnVlIHRvIGNoZWNrIG91dCBmaWxlcyB3aXRoIG5vIHdhcm5pbmcgdG8gdGhlIHVzZXIgdHlwZTpib29sZWFuCi0hLS0gbm90ZSBmb3Igbm9uLWludGVyYWN0aXZlIG1vZGUgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGlzIGJlIHNldCB0byB0cnVlCi0hLS0gQ2hlY2tvdXRGaWxlc0VuYWJsZWQ9dHJ1ZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2FudC9heGlzX2NsaWVudC54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvYW50L2F4aXNfY2xpZW50LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRiZmUyNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvYW50L2F4aXNfY2xpZW50LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/PgotCi08cHJvamVjdCBkZWZhdWx0PSJtYWluIiBiYXNlZGlyPSIuIj4KLQotPGVjaG8gbWVzc2FnZT0icHVsbGluZyBpbiBwcm9wZXJ0eSBmaWxlcyIvPgotPHByb3BlcnR5IGZpbGU9ImF4aXNfY2xpZW50LnByb3BlcnRpZXMiLz4KLQkKLTxlY2hvIG1lc3NhZ2U9ImNhbGxpbmcgdGhlIHdlYiBzZXJ2aWNlcyBnZW5lcmF0aW9uIGFudCB0YXNrOiBheGlzX2NsaWVudCIvPgotIDx0YXJnZXQgbmFtZT0ibWFpbiIgPgotICAJIDx3c2dlbi8+Ci0gIDwvdGFyZ2V0PgotICAKLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9hbnQvYXhpc190ZGphdmEucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9hbnQvYXhpc190ZGphdmEucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NiZDMwOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvYW50L2F4aXNfdGRqYXZhLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0hLS0gU2NlbmFyaW9UeXBlIFJFUVVJUkVELiBEaWZmZXJlbnRpYXRlcyBmcm9tICJjbGllbnQiIHNjZW5hcmlvLgotU2NlbmFyaW9UeXBlPXNlcnZpY2UKLQotIS0tIEluaXRpYWxTZWxlY3Rpb24gUkVRVUlSRUQuICBXb3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIHRoZSBpbnB1dCBXU0RMIG9yIEphdmEKLUluaXRpYWxTZWxlY3Rpb249L2R5bmFtaWNXZWJQcm9qZWN0TmFtZS9XZWJDb250ZW50L215U2VydmljZS53c2RsCi0KLSEtLVV0aWxpdHkgcHJvcGVydHkgdmFsdWVzIC0gdXNlIHRoZXNlIHRvIGxpc3QgdmFsaWQgdmFsdWVzIGZvciB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6Ci0hLS0gU2VydmljZS5SdW50aW1lSWQsIFNlcnZpY2UuU2VydmVySWQgCi1MaXN0UnVudGltZXM9dHJ1ZQotTGlzdFNlcnZlcnM9dHJ1ZQotIS0tIFZlcmJvc2Ugd2lsbCBsaXN0IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgYXMgd2VsbCBhcyBlcnJvcnMgaWYgc2V0IHRvIHRydWUKLVZlcmJvc2U9dHJ1ZQotCi0hLS0gIFNlcnZpY2UuUnVudGltZUlkIC0gSUQgb2Ygd2ViIHNlcnZpY2UgcnVudGltZSAKLVNlcnZpY2UuUnVudGltZUlkPW9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLmF4aXNXZWJTZXJ2aWNlUlQKLSEtLSBTZXJ2aWNlLlNlcnZlcklkIC0gIElEIG9mIHRhcmdldCBzZXJ2ZXIgCi1TZXJ2aWNlLlNlcnZlcklkPW9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjYwCi0hLS0gU2VydmljZS5UeXBlSWQgLSBKYXZhIEJlYW4gaXMgZGVmYXVsdCBmb3IgYm90aCBUb3AgRG93biBhbmQgQm90dG9tIFVwCi0hLS0gU2VydmljZS5UeXBlSWQ9SmF2YSBCZWFuCi0KLSEtLSBTZXJ2aWNlUHJvamVjdE5hbWUgLSAhLS10eXBlOlN0cmluZyAtIG5hbWUgb2YgU2VydmljZSBwcm9qZWN0IC0gdGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBnaXZlIHRoZSBzZXJ2aWNlIHByb2plY3QgYSBkaWZmZXJlbnQgbmFtZSB0aGFuIHRoZSBwcm9qZWN0IGNvbnRhaW5pbmcgdGhlIGluaXRpYWwgc2VsZWN0aW9uLiAgdHlwZTogU3RyaW5nICAgIAotIS0tU2VydmljZVByb2plY3ROYW1lPXNlcnZpY2VQcm9qZWN0TmFtZQotIS0tIFNlcnZpY2VFYXJQcm9qZWN0TmFtZSAtICEtLXR5cGU6U3RyaW5nIC0gbmFtZSBvZiBTZXJ2aWNlIEVBUiBwcm9qZWN0IC0gdGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBnaXZlIHRoZSBzZXJ2aWNlIEVBUiBwcm9qZWN0IGEgZGlmZmVyZW50IG5hbWUgdGhhbiB0aGUgRUFSIHByb2plY3QgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlcnZpY2UgcHJvamVjdC4gIHR5cGU6IFN0cmluZwotIS0tU2VydmljZUVhclByb2plY3ROYW1lPXNlcnZpY2VFYXJQcm9qZWN0TmFtZQotCi0hLS0gTWFwcGluZ3MKLSEtLSBUb3AgZG93biBvciBib3R0b20gdXAgc2NlbmFyaW8uIFdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgdG8gcHJvcGVydHkgZmlsZSBjb250YWluaW5nIG1hcHBpbmdzLgotIS0tIFRvcCBEb3duOiBNYXBwaW5ncyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYWNrYWdlIG5hbWVzIG9mIHRoZSBnZW5lcmF0ZWQgSmF2YSB0ZW1wbGF0ZSBjbGFzc2VzLgotIS0tIFRoZSBjb250ZW50IG9mIHRoZSBwcm9wZXJ0aWVzIGZpbGUgbXVzdCBiZSBvZiB0aGUgZm9ybWF0IG5hbWVzcGFjZT1wYWNrYWdlICAKLSEtLSBCb3R0b20gVXA6IE1hcHBpbmdzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBuYW1lcyBpbiB0aGUgZ2VuZXJhdGVkIFdTREwuCi0hLS0gVGhlIGNvbnRlbnQgb2YgdGhlIHByb3BlcnRpZXMgZmlsZSBtdXN0IGJlIG9mIHRoZSBmb3JtYXQgcGFja2FnZSA9IG5hbWVzcGFjZSAKLSEtLU1hcHBpbmdzPS90ZXN0UHJvai9tYXBwaW5ncy9tYXBwaW5ncy50eHQKLQotIS0tIEphdmFPdXRwdXQKLSEtLSBUb3AgZG93biAtIFN0cmluZzogdGhlIHdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgZm9yIGEgSmF2YSBzb3VyY2UgZm9sZGVyIGZvciB0aGUgZ2VuZXJhdGVkIEphdmEgY29kZSAtIG11c3QgYmUgZXhpc3Rpbmcgd29ya3NwYWNlIHNvdXJjZSBmb2xkZXIKLSEtLUphdmFPdXRwdXQ9L3Byb2plY3ROYW1lL0phdmFTb3VyY2UKLQotIS0tIE1ldGhvZHMKLSEtLSBCb3R0b20gdXAgLSBzcGFjZSBkZWxpbWl0ZWQgc3RyaW5nIG9mIG1ldGhvZCBzaWduYXR1cmVzIChpLmUuIG1ldGhvZDEocGFybVR5cGUxKSBtZXRob2QyKHBhcm1UeXBlMikpIHRvIGJlIGV4cG9zZWQgaW4gb3V0cHV0IFdTREwuICBJZiBubyBsaXN0IGlzIHByb3ZpZGVkLCBhbGwgbWV0aG9kcyBhcmUgZXhwb3NlZC4KLSEtLSBNZXRob2RzPQotCi0hLS0gU3R5bGUKLSEtLSBCb3R0b20gdXAgLSBTdHJpbmc6IG9uZSBvZjogUlBDLCBET0NVTUVOVCwgV1JBUFBFRAotIS0tU3R5bGU9RE9DVU1FTlQKLQotIS0tIFVzZQotIS0tIEJvdHRvbSB1cCAtIFN0cmluZzogb25lIG9mOiBMSVRFUkFMLCBFTkNPREVEIAotIS0tVXNlPUxJVEVSQUwKLQotIS0tT3ZlcndyaXRlRmlsZXNFbmFibGVkIC0gc2V0IHRvIHRydWUgdG8gb3ZlcndyaXRlIGZpbGVzIHRoYXQgYWxyZWFkeSBleGlzdC4gdHlwZTpib29sZWFuIAotIS0tIG5vdGUgZm9yIG5vbi1pbnRlcmFjdGl2ZSBtb2RlIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhpcyBiZSBzZXQgdG8gdHJ1ZQotIS0tT3ZlcndyaXRlRmlsZXNFbmFibGVkPXRydWUKLQotIS0tQ3JlYXRlRm9sZGVyc0VuYWJsZWQgLSBzZXQgdG8gdHJ1ZSBjcmVhdGUgZm9sZGVycyBuZWNlc3NhcnkgZHVyaW5nIGZpbGUgZ2VuZXJhdGlvbiB0eXBlOmJvb2xlYW4KLSEtLSBub3RlIGZvciBub24taW50ZXJhY3RpdmUgbW9kZSBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoaXMgYmUgc2V0IHRvIHRydWUKLSEtLUNyZWF0ZUZvbGRlcnNFbmFibGVkPXRydWUKLQotIS0tQ2hlY2tvdXRGaWxlc0VuYWJsZWQgLSBzZXQgdG8gdHJ1ZSB0byBjaGVjayBvdXQgZmlsZXMgd2l0aCBubyB3YXJuaW5nIHRvIHRoZSB1c2VyIHR5cGU6Ym9vbGVhbgotIS0tIG5vdGUgZm9yIG5vbi1pbnRlcmFjdGl2ZSBtb2RlIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhpcyBiZSBzZXQgdG8gdHJ1ZQotIS0tQ2hlY2tvdXRGaWxlc0VuYWJsZWQ9dHJ1ZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2FudC9heGlzX3RkamF2YS54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvYW50L2F4aXNfdGRqYXZhLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI5MTRiNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvYW50L2F4aXNfdGRqYXZhLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/PgotCi08cHJvamVjdCBkZWZhdWx0PSJtYWluIiBiYXNlZGlyPSIuIj4KLQotPGVjaG8gbWVzc2FnZT0icHVsbGluZyBpbiBwcm9wZXJ0eSBmaWxlcyIvPgotPHByb3BlcnR5IGZpbGU9ImF4aXNfdGRqYXZhLnByb3BlcnRpZXMiLz4KLQkKLTxlY2hvIG1lc3NhZ2U9ImNhbGxpbmcgdGhlIHdlYiBzZXJ2aWNlcyBnZW5lcmF0aW9uIGFudCB0YXNrOiBheGlzX3RkamF2YSIvPgotIDx0YXJnZXQgbmFtZT0ibWFpbiIgPgotICAJIDx3c2dlbi8+Ci0gIDwvdGFyZ2V0PgotICAKLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9idWlsZC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYTJiYWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwODAzMDEgICAyMjA4Nzcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXNvdXJjZS4uID0gc3JjLwotYmluLmluY2x1ZGVzID0gLixcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIGFudC8KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9wbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NmNmU2Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPVdlYiBzZXJ2aWNlIEF4aXMgQ29uc3VtcHRpb24gQ29yZQotUExVR0lOX1BST1ZJREVSPUVjbGlwc2Uub3JnCi0KLXhwV1NERENvbnRlbnRUeXBlID0gQXhpcyBXZWIgU2VydmljZSBEZXBsb3ltZW50IERlc2NyaXB0b3IKLQotWF9XRUJfU0VSVklDRV9MT0NBVE9SX0FYSVM9QXBhY2hlIEF4aXMgV2ViIFNlcnZpY2UgTG9jYXRvcgotWF9XRUJfU0VSVklDRV9MT0NBVE9SX0NBVEVHT1JZX0FYSVM9QXBhY2hlIEF4aXMgQ29tcG9uZW50cwotCi0KLSNydW50aW1lIGxhYmVscwotCi1MQUJFTF9SVU5USU1FX0FYSVM9QXBhY2hlIEF4aXMKLQotI3NjZW5hcmlvIGxhYmVscwotCi1MQUJFTF9CT1RUT01fVVBfSkFWQV9CRUFOPUJvdHRvbSB1cCBKYXZhIGJlYW4gV2ViIFNlcnZpY2UKLUxBQkVMX1RPUF9ET1dOX0pBVkFfQkVBTj1Ub3AgZG93biBKYXZhIGJlYW4gV2ViIFNlcnZpY2UKLUxBQkVMX0NMSUVOVD1DbGllbnQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNjM4ZGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotCi08cGx1Z2luPgotCi0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24ud3NmaW5kZXIiPgotICAgICAgPHdzZmluZGVyCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS53c2ZpbmRlci5XU0ZpbmRlckF4aXMiCi0gICAgICAgICAgICBuYW1lPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLndzZmluZGVyLldTRmluZGVyQXhpcyIKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLndzZmluZGVyLldTRmluZGVyQXhpcyIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLndzZmluZGVyLldTRmluZGVyQXhpcyI+Ci0gICAgICA8L3dzZmluZGVyPgotICAgPC9leHRlbnNpb24+Ci0KLSAgIDwhLS0gRXh0ZW5zaW9uIHByb3ZpZGluZyB3b3Jrc3BhY2UgV1NETCBkaXNjb3ZlcnkgLS0+ICAgCi0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3Qud3MubG9jYXRvciI+Ci0KLSAgICAgIDx3ZWJTZXJ2aWNlTG9jYXRvckNhdGVnb3J5Ci0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5sb2NhdG9yLmNhdGVnb3J5LmF4aXMiCi0gICAgICAgICAgICBsYWJlbD0iJVhfV0VCX1NFUlZJQ0VfTE9DQVRPUl9DQVRFR09SWV9BWElTIi8+Ci0KLSAgICAgIDx3ZWJTZXJ2aWNlTG9jYXRvcgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUubG9jYXRvci5BeGlzV2ViU2VydmljZUxvY2F0b3IiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5sb2NhdG9yLmF4aXMiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5sb2NhdG9yLmNhdGVnb3J5LmF4aXMiCi0gICAgICAgICAgICBsYWJlbD0iJVhfV0VCX1NFUlZJQ0VfTE9DQVRPUl9BWElTIj4KLSAgICAgIDwvd2ViU2VydmljZUxvY2F0b3I+Ci0KLSAgIDwvZXh0ZW5zaW9uPgotCi0KLSAgIDwhLS0gZGVmaW5lIGEgd3NkZCBmaWxlIHR5cGUgZm9yIEF4aXMgV2ViIFNlcnZpY2UgRGVwbG95bWVudCBEZXNjcmlwdG9ycyAtLT4KLSAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLnRlYW0uY29yZS5maWxlVHlwZXMiPgotICAgICAgPGZpbGVUeXBlcwotICAgICAgICAgICAgdHlwZT0idGV4dCIKLSAgICAgICAgICAgIGV4dGVuc2lvbj0id3NkZCI+Ci0gICAgICA8L2ZpbGVUeXBlcz4KLSAgIDwvZXh0ZW5zaW9uPgotICAgCi0gICA8IS0tIGRlZmluZSBhIHdzZGQgY29udGVudCB0eXBlIGZvciBBeGlzIFdlYiBTZXJ2aWNlIERlcGxveW1lbnQgRGVzY3JpcHRvcnMgLS0+Ci0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuY29udGVudFR5cGVzIj4KLSAgICAgIDxjb250ZW50LXR5cGUKLSAgICAgICAgICAgIHByaW9yaXR5PSJoaWdoIgotICAgICAgICAgICAgbmFtZT0iJXhwV1NERENvbnRlbnRUeXBlIgotICAgICAgICAgICAgaWQ9IndzZGRzb3VyY2UiCi0gICAgICAgICAgICBiYXNlLXR5cGU9Im9yZy5lY2xpcHNlLmNvcmUucnVudGltZS54bWwiCi0gICAgICAgICAgICBkZWZhdWx0LWNoYXJzZXQ9IlVURi04IgotICAgICAgICAgICAgZmlsZS1leHRlbnNpb25zPSJ3c2RkIiAvPgotICAgPC9leHRlbnNpb24+Ci0KLQk8ZXh0ZW5zaW9uIAotCQlwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLmFudGZpbGVzIj4KLSAgCQk8YW50ZmlsZXMKLSAgICAJCWlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi5heGlzV2ViU2VydmljZVJUVG9wSmF2YSIKLSAgICAJCXJ1bnRpbWVpZD0iYXhpcyIKLSAgICAJCXBsdWdpbmxvY2F0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlIgotICAgIAkJcGF0aD0iYW50L2F4aXNfdGRqYXZhLnByb3BlcnRpZXMiCi0gICAgCQl3c2dlbnBhdGg9ImFudC9heGlzX3RkamF2YS54bWwiCi0gICAgCQlydW50aW1lbGFiZWw9IiVMQUJFTF9SVU5USU1FX0FYSVMiCi0gICAgCQlzY2VuYXJpb2xhYmVsPSIlTEFCRUxfVE9QX0RPV05fSkFWQV9CRUFOIj4KLSAgCQk8L2FudGZpbGVzPgotICAJCTxhbnRmaWxlcwotICAgIAkJaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLmF4aXNXZWJTZXJ2aWNlUlRCVUphdmEiCi0gICAgCQlydW50aW1laWQ9ImF4aXMiCi0gICAgCQlwbHVnaW5sb2NhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZSIKLSAgICAJCXBhdGg9ImFudC9heGlzX2J1amF2YS5wcm9wZXJ0aWVzIgotICAgIAkJd3NnZW5wYXRoPSJhbnQvYXhpc19idWphdmEueG1sIgotICAgIAkJcnVudGltZWxhYmVsPSIlTEFCRUxfUlVOVElNRV9BWElTIgotICAgIAkJc2NlbmFyaW9sYWJlbD0iJUxBQkVMX0JPVFRPTV9VUF9KQVZBX0JFQU4iPgotICAJCTwvYW50ZmlsZXM+Ci0gIAkJPGFudGZpbGVzCi0gICAgCQlpZD0ib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24uYXhpc1dlYlNlcnZpY2VSVENsaWVudCIKLSAgICAJCXJ1bnRpbWVpZD0iYXhpcyIKLSAgICAJCXBsdWdpbmxvY2F0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlIgotICAgIAkJcGF0aD0iYW50L2F4aXNfY2xpZW50LnByb3BlcnRpZXMiCi0gICAgCQl3c2dlbnBhdGg9ImFudC9heGlzX2NsaWVudC54bWwiCi0gICAgCQlydW50aW1lbGFiZWw9IiVMQUJFTF9SVU5USU1FX0FYSVMiCi0gICAgCQlzY2VuYXJpb2xhYmVsPSIlTEFCRUxfQ0xJRU5UIj4KLSAgCQk8L2FudGZpbGVzPgotICAJPC9leHRlbnNpb24+Ci0KLTwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9BeGlzQ29uc3VtcHRpb25Db3JlLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvQXhpc0NvbnN1bXB0aW9uQ29yZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTgzZmRhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9BeGlzQ29uc3VtcHRpb25Db3JlLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNzA0MTIgICAxNzcwMDUgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIE1lc3NhZ2VzIGZvciBBeGlzRGVwbG95Q29tbWFuZAotIwotTVNHX0VSUk9SX1BST0pFQ1RfVVJMX1BBUkFNX05PVF9TRVQ9SVdBQjAwNTRFIFdlYiBwcm9qZWN0IFVSTCBmb3IgZGVwbG95bWVudCBvZiBXZWIgc2VydmljZSBpcyBub3Qgc2V0IGluIEF4aXNEZXBsb3lDb21tYW5kCi1NU0dfRVJST1JfREVQTE9ZX0ZJTEVfUEFSQU1fTk9UX1NFVD1JV0FCMDQ4OEUgTG9jYXRpb24gb2YgQXhpcyBkZXBsb3ltZW50IGZpbGUgaXMgbm90IHNldCBpbiBBeGlzRGVwbG95Q29tbWFuZAotTVNHX0VSUk9SX0FYSVNfREVQTE9ZPUlXQUIwNDg5RSBFcnJvciB3aGVuIGRlcGxveWluZyBXZWIgc2VydmljZSB0byBBeGlzIHJ1bnRpbWUKLU1TR19BWElTX0RFUExPWT1EZXBsb3lpbmcgV2ViIHNlcnZpY2UgdG8gQXhpcyBydW4tdGltZSBlbnZpcm9ubWVudAotCi0jCi0jIE1lc3NhZ2VzIGZvciBKYXZhMldTRExDb21tYW5kCi0jCi1NU0dfR0VORVJBVEVfV1NETD1HZW5lcmF0aW5nIFdTREwgZmlsZTogezB9Ci1NU0dfRVJST1JfSkFWQV9XU0RMX0dFTkVSQVRFPUlXQUIwMzk4RSBFcnJvciBpbiBnZW5lcmF0aW5nIFdTREwgZnJvbSBKYXZhOiAKLQotIwotIyBNZXNzYWdlcyBmb3IgV1NETDJKYXZhQ29tbWFuZAotIwotTVNHX1BBUlNJTkdfV1NETD1QYXJzaW5nIFdTREwgZmlsZTogezB9Ci1NU0dfRVJST1JfV1NETF9KQVZBX0dFTkVSQVRFPUlXQUIwMzk5RSBFcnJvciBpbiBnZW5lcmF0aW5nIEphdmEgZnJvbSBXU0RMOiAKLU1TR19FUlJPUl9NT1ZFX1JFU09VUkNFPUlXQUIwNTIzRSBFcnJvciBtb3ZpbmcgcmVzb3VyY2U6IHswfQotTVNHX0VSUk9SX0NSRUFURV9URU1QX0RJUj1FcnJvciBjcmVhdGluZyB0ZW1wb3JhcnkgZGlyZWN0b3J5Ci0KLSMKLSMgTWVzc2FnZXMgY29tbW9uIGZvciBhbGwKLSMKLU1TR19FUlJPUl9KQVZBX1dTRExfUEFSQU1fTk9UX1NFVD1JV0FCMDM5N0UgSmF2YVdTRExQYXJhbSBub3Qgc2V0Ci1NU0dfRVJST1JfRk9MREVSX05PVF9GT1VORD1PdXRwdXQgZm9sZGVyOiB7MH0gd2FzIG5vdCBmb3VuZC4KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL0F4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL0F4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmRhODk4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9BeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMiAgIDE3NzAwNSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMgZXh0ZW5kcyBOTFMgewotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuQXhpc0NvbnN1bXB0aW9uQ29yZSI7Ly8kTk9OLU5MUy0xJAotCi0JcHJpdmF0ZSBBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMoKSB7Ci0JCS8vIERvIG5vdCBpbnN0YW50aWF0ZQotCX0KLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9QUk9KRUNUX1VSTF9QQVJBTV9OT1RfU0VUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9ERVBMT1lfRklMRV9QQVJBTV9OT1RfU0VUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9BWElTX0RFUExPWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfQVhJU19ERVBMT1k7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0dFTkVSQVRFX1dTREw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0pBVkFfV1NETF9HRU5FUkFURTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfUEFSU0lOR19XU0RMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9XU0RMX0pBVkFfR0VORVJBVEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0pBVkFfV1NETF9QQVJBTV9OT1RfU0VUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9NT1ZFX1JFU09VUkNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9DUkVBVEVfVEVNUF9ESVI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9GT0xERVJfTk9UX0ZPVU5EOwotICAKLQlzdGF0aWMgewotCQlOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuY2xhc3MpOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb21tYW5kL0F4aXNEZXBsb3lDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29tbWFuZC9BeGlzRGVwbG95Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTliMTIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb21tYW5kL0F4aXNEZXBsb3lDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwMjI3ICAgMTE5OTY0IHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nIEhhCi0gKiAyMDA4MDYxMyAgIDIzNjUyMyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgT3ZlcndyaXRlIHNldHRpbmcgb24gV2ViIHNlcnZpY2Ugd2l6YXJkIGlzIGNvdXBsZWQgd2l0aCBwcmVmZXJlbmNlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tYW5kOwotCi0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmF4aXMuY2xpZW50LkFkbWluQ2xpZW50OwotaW1wb3J0IG9yZy5hcGFjaGUuYXhpcy50b29scy5hbnQuYXhpcy5BZG1pbkNsaWVudFRhc2s7Ci1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQuQnVpbGRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQuUHJvamVjdDsKLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5UYXJnZXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQuZmlsdGVycy5TdHJpbmdJbnB1dFN0cmVhbTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5BeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbW1vbi5GaWxlUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uUHJvZ3Jlc3NVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQmFzZUVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklTdGF0dXNIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0vKioKLSAqIENvbW1hbmRzIGFyZSBleGVjdXRhYmxlLCB1bmRvYWJsZSwgcmVkb2FibGUgb2JqZWN0cy4gRXZlcnkgQ29tbWFuZCBoYXMgYSBuYW1lIGFuZCBhIGRlc2NyaXB0aW9uLgotICovCi0KLXB1YmxpYyBjbGFzcyBBeGlzRGVwbG95Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFNFUlZJQ0VfRVhUID0gIi9zZXJ2aWNlcy9BZG1pblNlcnZpY2UiOyAvLyROT04tTkxTLTEkCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFNFUlZFUl9DT05GSUcgPSAic2VydmVyLWNvbmZpZy53c2RkIjsgLy8kTk9OLU5MUy0xJAotCi0gIHByaXZhdGUgSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbTsKLSAgcHJpdmF0ZSBTdHJpbmcgcHJvamVjdF87Ci0gIAotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIEF4aXNEZXBsb3lDb21tYW5kLgotICAgKiBAcGFyYW0gU3RyaW5nIGRlc2NyaXB0aW9uCi0gICAqIEBwYXJhbSBTdHJpbmcgbmFtZQotICAgKiAKLSAgICovCi0gIHB1YmxpYyBBeGlzRGVwbG95Q29tbWFuZCgpCi0gIHsKLSAgfQotICAKLSAgcHVibGljIEF4aXNEZXBsb3lDb21tYW5kKFN0cmluZyBwcm9qZWN0ICl7Ci0JICB0aGlzLnByb2plY3RfID0gcHJvamVjdDsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgSUVudmlyb25tZW50IGVudmlyb25tZW50ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICBpZiAoamF2YVdTRExQYXJhbSA9PSBudWxsKQotICAgIHsgICAgIAotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfSkFWQV9XU0RMX1BBUkFNX05PVF9TRVQpOwotICAgIH0KLQotICAgIGlmIChqYXZhV1NETFBhcmFtLmdldFByb2plY3RVUkwoKSA9PSBudWxsIHx8IGphdmFXU0RMUGFyYW0uZ2V0UHJvamVjdFVSTCgpLmVxdWFscygiIikpCi0gICAgeyAvLyROT04tTkxTLTEkCi0gICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzLk1TR19FUlJPUl9QUk9KRUNUX1VSTF9QQVJBTV9OT1RfU0VUKTsKLSAgICB9Ci0KLSAgICBpZiAoamF2YVdTRExQYXJhbS5nZXREZXBsb3ltZW50RmlsZXMoKSA9PSBudWxsIHx8IGphdmFXU0RMUGFyYW0uZ2V0RGVwbG95bWVudEZpbGVzKCkubGVuZ3RoID09IDApCi0gICAgewotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfREVQTE9ZX0ZJTEVfUEFSQU1fTk9UX1NFVCk7Ci0gICAgfQotCi0gICAgUHJvZ3Jlc3NVdGlscy5yZXBvcnQobW9uaXRvciwgQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzLk1TR19BWElTX0RFUExPWSk7Ci0KLSAgICBJU3RhdHVzIHN0YXR1cyA9IGV4ZWN1dGVBbnRUYXNrKG1vbml0b3IpOwotICAgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpCi0gICAgewotICAgIAllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotCi0gIHByb3RlY3RlZCBJU3RhdHVzIGV4ZWN1dGVBbnRUYXNrKElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikKLSAgewotICAgIGZpbmFsIGNsYXNzIERlcGxveVRhc2sgZXh0ZW5kcyBBZG1pbkNsaWVudFRhc2sKLSAgICB7Ci0gICAgICBwdWJsaWMgRGVwbG95VGFzaygpCi0gICAgICB7Ci0JCXN1cGVyLnNldFByb2plY3QobmV3IFByb2plY3QoKSk7Ci0JCXN1cGVyLmdldFByb2plY3QoKS5pbml0KCk7Ci0JCXN1cGVyLnNldFRhc2tUeXBlKCJheGlzIik7IC8vJE5PTi1OTFMtMSQKLQkJc3VwZXIuc2V0VGFza05hbWUoImF4aXMtYWRtaW4iKTsgLy8kTk9OLU5MUy0xJAotCQlzdXBlci5zZXRPd25pbmdUYXJnZXQobmV3IFRhcmdldCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBEZXBsb3lUYXNrIGFkbWluQ2xpZW50ID0gbmV3IERlcGxveVRhc2soKTsKLSAgICBTdHJpbmcgdXJsID0gamF2YVdTRExQYXJhbS5nZXRQcm9qZWN0VVJMKCkgKyBTRVJWSUNFX0VYVDsKLSAgICBhZG1pbkNsaWVudC5zZXRVcmwodXJsKTsKLSAgICBhZG1pbkNsaWVudC5zZXRYbWxGaWxlKG5ldyBGaWxlKGphdmFXU0RMUGFyYW0uZ2V0RGVwbG95bWVudEZpbGVzKClbMF0pKTsKLQotICAgIC8vIFNpbmNlIHRoZSBhZG1pbiBzZXJ2ZXIgbWF5IG5vdCBiZSBhdmFpbGFibGUgcmlnaHQgYXdheSB3ZSB3aWxsIHRyeQotICAgIC8vIHNldmVyYWwgdGltZXMgdG8gZXhlY3V0ZSBpdC4KLSAgICB0cnkKLSAgICB7Ci0gICAgICBCdWlsZEV4Y2VwdGlvbiBsYXN0RXhjZXB0aW9uID0gbnVsbDsKLSAgICAgIAotICAgICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IDIwOyBpbmRleCsrICkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBsYXN0RXhjZXB0aW9uID0gbnVsbDsKLSAgICAgICAgICBhZG1pbkNsaWVudC5leGVjdXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goIEJ1aWxkRXhjZXB0aW9uIGV4YyApCi0gICAgICAgIHsKLSAgICAgICAgICBsYXN0RXhjZXB0aW9uID0gZXhjOwotICAgICAgICAgIAotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFRocmVhZC5zbGVlcCggMjAwICk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoKCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB0aHJlYWRFeGNlcHRpb24gICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBJZiBubyBleGNlcHRpb24gb2NjdXJlZCB0aGVuIHdlIHNob3VsZCBicmVhayBvdXQgb2YgdGhlIGxvb3AuCi0gICAgICAgIGlmKCBsYXN0RXhjZXB0aW9uID09IG51bGwgKSBicmVhazsKLSAgICAgIH0KLSAgICAgIAotICAgICAgLy8gSWYgYWZ0ZXIgbWFueSB0cmllcyB3ZSBzdGlsbCBnZXQgYW4gZXhjZXB0aW9uLCB0aGVuIHdlIHdpbGwgcmUgdGhyb3cgaXQuCi0gICAgICBpZiggbGFzdEV4Y2VwdGlvbiAhPSBudWxsICkgdGhyb3cgbGFzdEV4Y2VwdGlvbjsKLSAgICAgIAotICAgICAgcmV0dXJuIGNyZWF0ZUNvbmZpZ0ZpbGUobW9uaXRvciwgdXJsKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEJ1aWxkRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIFN0cmluZyBtZXNzYWdlID0gZS5nZXRNZXNzYWdlKCk7Ci0gICAgICBpZiAoZS5nZXRDYXVzZSgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIG1lc3NhZ2UgPSBlLmdldENhdXNlKCkudG9TdHJpbmcoKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgSVN0YXR1c1tdIGNoaWxkU3RhdHVzID0gbmV3IFN0YXR1c1sxXTsKLSAgICAgIGNoaWxkU3RhdHVzWzBdID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIG1lc3NhZ2UpOwotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLm11bHRpU3RhdHVzKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfQVhJU19ERVBMT1ksIGNoaWxkU3RhdHVzKTsKLSAgICB9Ci0gIH0KLQotICAvKiogQ3JlYXRlcyAnc2VydmVyLWNvbmZpZy53c2RkJyBpbiB0aGUgV2ViQ29udGVudCBmb2xkZXIgaW4gdGhlIEVjbGlwc2Ugd29ya3NwYWNlIHByb2plY3QgCi0gICAqIEBwYXJhbSBtb25pdG9yCi0gICAqIEBwYXJhbSB1cmwKLSAgICogQHJldHVybgotICAgKi8KLSAgcHJpdmF0ZSBJU3RhdHVzIGNyZWF0ZUNvbmZpZ0ZpbGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBTdHJpbmcgdXJsKSB7Ci0JQWRtaW5DbGllbnQgbGlzdEFkbWluID0gbmV3IEFkbWluQ2xpZW50KCk7Ci0JU3RyaW5nIGNvbmZpZyA9ICIiOwotICAgIHRyeSB7Ci0JCWNvbmZpZyA9IGxpc3RBZG1pbi5wcm9jZXNzKG5ldyBTdHJpbmdbXSB7ICItbCIgKyB1cmwsICJsaXN0IiB9KTsKLQotCQlJUGF0aCB3ZWJJbmZQYXRoID0gSjJFRVV0aWxzLmdldFdlYkluZlBhdGgoUmVzb3VyY2VzUGx1Z2luCi0JCQkJCS5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdChwcm9qZWN0XykpOwotCQlJUGF0aCByZWxhdGl2ZVNlcnZlckNvbmZpZ1BhdGggPSB3ZWJJbmZQYXRoLmFwcGVuZChTRVJWRVJfQ09ORklHKTsKLQkJSVN0YXR1c0hhbmRsZXIgc3RhdHVzSGFuZGxlciA9IGdldEVudmlyb25tZW50KCkuZ2V0U3RhdHVzSGFuZGxlcigpOwotCQlSZXNvdXJjZUNvbnRleHQgY29udGV4dCA9ICgoQmFzZUVjbGlwc2VFbnZpcm9ubWVudCkgZ2V0RW52aXJvbm1lbnQoKSkKLQkJCQkJLmdldFJlc291cmNlQ29udGV4dCgpOwotCQlGaWxlUmVzb3VyY2VVdGlscy5jcmVhdGVGaWxlKGNvbnRleHQsIHJlbGF0aXZlU2VydmVyQ29uZmlnUGF0aCwKLQkJCQkJbmV3IFN0cmluZ0lucHV0U3RyZWFtKGNvbmZpZyksIG1vbml0b3IsIHN0YXR1c0hhbmRsZXIpOwotCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkgICAgU3RyaW5nIG1lc3NhZ2UgPSBlLmdldE1lc3NhZ2UoKTsKLQkgICAgaWYgKGUuZ2V0Q2F1c2UoKSAhPSBudWxsKQotCSAgICB7Ci0JICAgICAgIG1lc3NhZ2UgPSBlLmdldENhdXNlKCkudG9TdHJpbmcoKTsKLQkgICAgfQotCSAgICAgIAotCSAgICBJU3RhdHVzW10gY2hpbGRTdGF0dXMgPSBuZXcgU3RhdHVzWzFdOwotCSAgICBjaGlsZFN0YXR1c1swXSA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBtZXNzYWdlKTsKLQkgICAgcmV0dXJuIFN0YXR1c1V0aWxzLm11bHRpU3RhdHVzKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfQVhJU19ERVBMT1ksIGNoaWxkU3RhdHVzKTsKLQl9Ci0JcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7IAotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBqYXZhV1NETFBhcmFtIFRoZSBqYXZhV1NETFBhcmFtIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEphdmFXU0RMUGFyYW0oSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbSkKLSAgewotICAgIHRoaXMuamF2YVdTRExQYXJhbSA9IGphdmFXU0RMUGFyYW07Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2NvbW1hbmQvR2Vyb25pbW9BeGlzRGVwbG95Q29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2NvbW1hbmQvR2Vyb25pbW9BeGlzRGVwbG95Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDU1YTM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb21tYW5kL0dlcm9uaW1vQXhpc0RlcGxveUNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tYW5kOwotCi0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmF4aXMuQXhpc0VuZ2luZTsKLWltcG9ydCBvcmcuYXBhY2hlLmF4aXMuc2VydmVyLkF4aXNTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5heGlzLnRvb2xzLmFudC5heGlzLkFkbWluQ2xpZW50VGFzazsKLWltcG9ydCBvcmcuYXBhY2hlLmF4aXMudXRpbHMuQ2xhc3NVdGlsczsKLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5CdWlsZEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5Qcm9qZWN0OwotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LlRhcmdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLkF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlByb2dyZXNzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotLyoqCi0gKiBDb21tYW5kcyBhcmUgZXhlY3V0YWJsZSwgdW5kb2FibGUsIHJlZG9hYmxlIG9iamVjdHMuIEV2ZXJ5IENvbW1hbmQgaGFzIGEgbmFtZSBhbmQgYSBkZXNjcmlwdGlvbi4KLSAqLwotCi1wdWJsaWMgY2xhc3MgR2Vyb25pbW9BeGlzRGVwbG95Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0KLSAgcHJpdmF0ZSBKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtOwotCi0gIHByaXZhdGUgU3RyaW5nIHByb2plY3ROYW1lXzsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFYSVNfU0VSVkVSX0NPTkZJR19GSUxFID0gImF4aXMuU2VydmVyQ29uZmlnRmlsZSI7Ci0gIAotICBJRm9sZGVyIG91dHB1dFJvb3Q7Ci0gIAotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIEdlcm9uaW1vQXhpc0RlcGxveUNvbW1hbmQuCi0gKiBAcGFyYW0gU3RyaW5nIHByb2plY3ROYW1lCi0gICAqIAotICAgKi8KLSAgcHVibGljIEdlcm9uaW1vQXhpc0RlcGxveUNvbW1hbmQoU3RyaW5nIHByb2plY3ROYW1lKQotICB7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0JSUVudmlyb25tZW50IGVudmlyb25tZW50ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICBpZiAoamF2YVdTRExQYXJhbSA9PSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuTVNHX0VSUk9SX0pBVkFfV1NETF9QQVJBTV9OT1RfU0VUKTsKLSAgICB9Ci0KLSAgICBpZiAoamF2YVdTRExQYXJhbS5nZXRQcm9qZWN0VVJMKCkgPT0gbnVsbCB8fCBqYXZhV1NETFBhcmFtLmdldFByb2plY3RVUkwoKS5lcXVhbHMoIiIpKQotICAgIHsgLy8kTk9OLU5MUy0xJAotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfUFJPSkVDVF9VUkxfUEFSQU1fTk9UX1NFVCk7Ci0gICAgfQotCi0gICAgaWYgKGphdmFXU0RMUGFyYW0uZ2V0RGVwbG95bWVudEZpbGVzKCkgPT0gbnVsbCB8fCBqYXZhV1NETFBhcmFtLmdldERlcGxveW1lbnRGaWxlcygpLmxlbmd0aCA9PSAwKQotICAgIHsKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cygKLSAgICAgIEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfREVQTE9ZX0ZJTEVfUEFSQU1fTk9UX1NFVCk7Ci0gICAgfQotCi0gICAgUHJvZ3Jlc3NVdGlscy5yZXBvcnQobW9uaXRvciwgQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzLk1TR19BWElTX0RFUExPWSk7Ci0KLSAgICBJU3RhdHVzIHN0YXR1cyA9IGV4ZWN1dGVBZG1pblRhc2soKTsKLSAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotICAgIHsKLSAgICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgfSAgICAKLSAgICAKLSAgICBzdGF0dXMgPSBleGVjdXRlQW50VGFzaygpOwotICAgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpCi0gICAgewotICAgICAgICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICB9ICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBJU3RhdHVzIGV4ZWN1dGVBbnRUYXNrKCkKLSAgewotICAgIGZpbmFsIGNsYXNzIERlcGxveVRhc2sgZXh0ZW5kcyBBZG1pbkNsaWVudFRhc2sKLSAgICB7Ci0gICAgICBwdWJsaWMgRGVwbG95VGFzaygpCi0gICAgICB7Ci0gICAgICAgIHN1cGVyLnNldFByb2plY3QobmV3IFByb2plY3QoKSk7Ci0JCXN1cGVyLmdldFByb2plY3QoKS5pbml0KCk7Ci0JCXN1cGVyLnNldFRhc2tUeXBlKCJheGlzIik7IC8vJE5PTi1OTFMtMSQKLQkJc3VwZXIuc2V0VGFza05hbWUoImF4aXMtYWRtaW4iKTsgLy8kTk9OLU5MUy0xJAotCQlzdXBlci5zZXRPd25pbmdUYXJnZXQobmV3IFRhcmdldCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBEZXBsb3lUYXNrIGFkbWluQ2xpZW50ID0gbmV3IERlcGxveVRhc2soKTsKLSAgICBTdHJpbmcgdXJsID0gamF2YVdTRExQYXJhbS5nZXRQcm9qZWN0VVJMKCkgKyBBeGlzRGVwbG95Q29tbWFuZC5TRVJWSUNFX0VYVDsKLSAgICBhZG1pbkNsaWVudC5zZXRVcmwodXJsKTsKLSAgICBhZG1pbkNsaWVudC5zZXRYbWxGaWxlKG5ldyBGaWxlKGphdmFXU0RMUGFyYW0uZ2V0RGVwbG95bWVudEZpbGVzKClbMF0pKTsKLQotICAgIC8vIFNpbmNlIHRoZSBhZG1pbiBzZXJ2ZXIgbWF5IG5vdCBiZSBhdmFpbGFibGUgcmlnaHQgYXdheSB3ZSB3aWxsIHRyeQotICAgIC8vIHNldmVyYWwgdGltZXMgdG8gZXhlY3V0ZSBpdC4KLSAgICB0cnkKLSAgICB7Ci0gICAgICBCdWlsZEV4Y2VwdGlvbiBsYXN0RXhjZXB0aW9uID0gbnVsbDsKLSAgICAgIAotICAgICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IDIwOyBpbmRleCsrICkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBsYXN0RXhjZXB0aW9uID0gbnVsbDsKLSAgICAgICAgICBhZG1pbkNsaWVudC5leGVjdXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goIEJ1aWxkRXhjZXB0aW9uIGV4YyApCi0gICAgICAgIHsKLSAgICAgICAgICBsYXN0RXhjZXB0aW9uID0gZXhjOwotICAgICAgICAgIAotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFRocmVhZC5zbGVlcCggMjAwICk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoKCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB0aHJlYWRFeGNlcHRpb24gICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBJZiBubyBleGNlcHRpb24gb2NjdXJlZCB0aGVuIHdlIHNob3VsZCBicmVhayBvdXQgb2YgdGhlIGxvb3AuCi0gICAgICAgIGlmKCBsYXN0RXhjZXB0aW9uID09IG51bGwgKSBicmVhazsKLSAgICAgIH0KLSAgICAgIAotICAgICAgLy8gSWYgYWZ0ZXIgbWFueSB0cmllcyB3ZSBzdGlsbCBnZXQgYW4gZXhjZXB0aW9uLCB0aGVuIHdlIHdpbGwgcmUgdGhyb3cgaXQuCi0gICAgICBpZiggbGFzdEV4Y2VwdGlvbiAhPSBudWxsICkgdGhyb3cgbGFzdEV4Y2VwdGlvbjsKLSAgICB9Ci0gICAgY2F0Y2ggKEJ1aWxkRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIFN0cmluZyBtZXNzYWdlID0gZS5nZXRNZXNzYWdlKCk7Ci0gICAgICBpZiAoZS5nZXRDYXVzZSgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIG1lc3NhZ2UgPSBlLmdldENhdXNlKCkudG9TdHJpbmcoKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgSVN0YXR1c1tdIGNoaWxkU3RhdHVzID0gbmV3IFN0YXR1c1sxXTsKLSAgICAgIGNoaWxkU3RhdHVzWzBdID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIG1lc3NhZ2UpOwotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLm11bHRpU3RhdHVzKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfQVhJU19ERVBMT1ksIGNoaWxkU3RhdHVzKTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7IAotCi0gIH0KLSAgCi0gIHByb3RlY3RlZCBJU3RhdHVzIGV4ZWN1dGVBZG1pblRhc2soKXsKLSAgICAKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgLy8gY2hlY2sgaWYgc2VydmVyLWNvbmZpZy53c2RkIGV4aXN0cwotICAgIElWaXJ0dWFsQ29tcG9uZW50IGNvbXBvbmVudCA9IEoyRUVVdGlscy5nZXRWaXJ0dWFsQ29tcG9uZW50KCBwcm9qZWN0TmFtZV8gKTsKLSAgICBvdXRwdXRSb290ID0gSjJFRVV0aWxzLmdldE91dHB1dENvbnRhaW5lclJvb3QoIGNvbXBvbmVudCApOwotICAgIElQYXRoIHBhdGggPSBuZXcgUGF0aCggIldFQi1JTkYiICkuYXBwZW5kKCAic2VydmVyLWNvbmZpZy53c2RkIiApOyAgICAKLSAgICBJRmlsZSBkZXNjcmlwdG9yRmlsZSA9IG91dHB1dFJvb3QuZ2V0RmlsZSggcGF0aCApOwotICAgIAotICAgIGlmICghZGVzY3JpcHRvckZpbGUuZXhpc3RzKCkpewotICAgICAgc3RhdHVzID0gY3JlYXRlU2VydmVyQ29uZmlnRmlsZSgpOwotICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuRVJST1IpCi0gICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotICAgIAotICAgIC8vIGNoZWNrIGlmIGRlcGxveS53c2RkIGV4aXN0cwotICAgIFN0cmluZyBkZXBsb3lXU0REID0gamF2YVdTRExQYXJhbS5nZXREZXBsb3ltZW50RmlsZXMoKVswXTsKLSAgICBGaWxlIGRlcGxveUZpbGUgPSBuZXcgRmlsZShkZXBsb3lXU0REKTsKLSAgICBpZiAoZGVwbG95RmlsZT09bnVsbCB8fCAhZGVwbG95RmlsZS5leGlzdHMoKSl7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgICAKLSAgICB0cnkgewotICAgICAgLy8gZ2V0IENsYXNzcGF0aAotICAgICAgU3RyaW5nIGphcnNDUCA9IG5ldyBTdHJpbmcoKTsKLSAgICAgIC8vIGNsYXNzZXMgZGlyCi0gICAgICBJUGF0aCBjbGFzc2VzUGF0aCA9IG5ldyBQYXRoKCJXRUItSU5GIikuYXBwZW5kKCJjbGFzc2VzIik7Ci0gICAgICBJRmlsZSBjbGFzc2VzRGlyID0gb3V0cHV0Um9vdC5nZXRGaWxlKGNsYXNzZXNQYXRoKTsKLSAgICAgIGphcnNDUCA9ICJcIiIrY2xhc3Nlc0Rpci5nZXRSYXdMb2NhdGlvbigpLnRvT1NTdHJpbmcoKSsiXCIiOwotICAgICAgCi0gICAgICAvLyBsaWIgSkFScwotICAgICAgSVBhdGggbGliUGF0aCA9IG5ldyBQYXRoKCJXRUItSU5GIikuYXBwZW5kKCJsaWIiKTsKLSAgICAgIElGaWxlIGxpYkVudHJ5ID0gb3V0cHV0Um9vdC5nZXRGaWxlKGxpYlBhdGgpOwotICAgICAgSUZvbGRlciBsaWJGb2xkZXIgPSAoSUZvbGRlcilSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZShsaWJFbnRyeS5nZXRGdWxsUGF0aCgpKTsKLSAgICAgIElSZXNvdXJjZVtdIEpBUmZpbGVzID0gbGliRm9sZGVyLm1lbWJlcnMoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPEpBUmZpbGVzLmxlbmd0aDtpKyspewotICAgICAgICBJUmVzb3VyY2UgcmVzID0gSkFSZmlsZXNbaV07Ci0gICAgICAgIGlmIChyZXMuZ2V0RmlsZUV4dGVuc2lvbigpLmVxdWFscygiamFyIikpewotICAgICAgICAgIGphcnNDUCA9IGphcnNDUCArICI7XCIiKyByZXMuZ2V0UmF3TG9jYXRpb24oKS50b09TU3RyaW5nKCkrIlwiIjsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyBmb3JtIGFuZCBydW4gdXRpbHMuQWRtaW4gY29tbWFuZAotICAgICAgU3RyaW5nIGFkbWluQ29tbWFuZCA9IG5ldyBTdHJpbmcoImphdmEgLURheGlzLlNlcnZlckNvbmZpZ0ZpbGU9IisgZGVzY3JpcHRvckZpbGUuZ2V0UmF3TG9jYXRpb24oKS50b09TU3RyaW5nKCkgCi0gICAgICAgICAgKyIgLWNwICIramFyc0NQKyIgb3JnLmFwYWNoZS5heGlzLnV0aWxzLkFkbWluIHNlcnZlciAiK2RlcGxveUZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKLSAgICAgIFJ1bnRpbWUuZ2V0UnVudGltZSgpLmV4ZWMoYWRtaW5Db21tYW5kKTsKLQotICAgIH0KLSAgICBjYXRjaChFeGNlcHRpb24gZSl7Ci0gICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoQVhJU19TRVJWRVJfQ09ORklHX0ZJTEUsInNlcnZlci1jb25pZmcud3NkZCIpOyAgICAgIAotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIFN0cmluZyBtZXNzYWdlID0gZS5nZXRNZXNzYWdlKCk7Ci0gICAgICBpZiAoZS5nZXRDYXVzZSgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIG1lc3NhZ2UgPSBlLmdldENhdXNlKCkudG9TdHJpbmcoKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgSVN0YXR1c1tdIGNoaWxkU3RhdHVzID0gbmV3IFN0YXR1c1sxXTsKLSAgICAgIGNoaWxkU3RhdHVzWzBdID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIG1lc3NhZ2UpOwotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLm11bHRpU3RhdHVzKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfQVhJU19ERVBMT1ksIGNoaWxkU3RhdHVzKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotICAKLSAgLyoqdAotICAgKiBDcmVhdGVzIHRoZSBpbml0aWFsIHNlcnZlci1jb25maWcud3NkZCBmaWxlIGZyb20gYSB0ZW1wbGF0ZSBpbiBBeGlzCi0gICAqIEByZXR1cm4KLSAgICovCi0gIHByaXZhdGUgSVN0YXR1cyBjcmVhdGVTZXJ2ZXJDb25maWdGaWxlKCl7Ci0gICAgdHJ5ewotCi0gICAgICAvLyBzZXJ2ZXItY29uZmlnLndzZGQgZmlsZQotICAgICAgSVBhdGggICAgICAgICAgICAgcGF0aCAgICAgICAgICAgPSBuZXcgUGF0aCggIldFQi1JTkYiICkuYXBwZW5kKCAic2VydmVyLWNvbmZpZy53c2RkIiApOyAgICAKLSAgICAgIElGaWxlICAgICAgICAgICAgIGRlc2NyaXB0b3JGaWxlID0gb3V0cHV0Um9vdC5nZXRGaWxlKCBwYXRoICk7ICAgICAgCi0KLSAgICAgIC8vIGNyZWF0ZSB0aGUgaW5pdGlhbCBzZXJ2ZXItY29uZmlnLndzZGQgZmlsZQotICAgICAgQXhpc0VuZ2luZSBwcmVFbmdpbmUgPSBuZXcgQXhpc1NlcnZlcigpOwotICAgICAgSW5wdXRTdHJlYW0gaXMgPSBDbGFzc1V0aWxzLmdldFJlc291cmNlQXNTdHJlYW0ocHJlRW5naW5lLmdldENsYXNzKCksICJzZXJ2ZXItY29uZmlnLndzZGQiKTsKLSAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZGVzY3JpcHRvckZpbGUuZ2V0UmF3TG9jYXRpb24oKS50b09TU3RyaW5nKCkpOwotICAgICAgUmVzb3VyY2VVdGlscy5jb3B5U3RyZWFtKGlzLCBmb3MpOwotICAgICAgZm9zLmNsb3NlKCk7Ci0gICAgICAKLSAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgIH0KLSAgICBjYXRjaChFeGNlcHRpb24gZSl7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBlLmdldE1lc3NhZ2UoKTsKLSAgICAgIGlmIChlLmdldENhdXNlKCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZSA9IGUuZ2V0Q2F1c2UoKS50b1N0cmluZygpOwotICAgICAgfQotCi0gICAgICBJU3RhdHVzW10gY2hpbGRTdGF0dXMgPSBuZXcgU3RhdHVzWzFdOwotICAgICAgY2hpbGRTdGF0dXNbMF0gPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggbWVzc2FnZSk7Ci0gICAgICByZXR1cm4gU3RhdHVzVXRpbHMubXVsdGlTdGF0dXMoQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzLk1TR19FUlJPUl9BWElTX0RFUExPWSwgY2hpbGRTdGF0dXMpOwotCi0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBqYXZhV1NETFBhcmFtIFRoZSBqYXZhV1NETFBhcmFtIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEphdmFXU0RMUGFyYW0oSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbSkKLSAgewotICAgIHRoaXMuamF2YVdTRExQYXJhbSA9IGphdmFXU0RMUGFyYW07Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2NvbW1hbmQvSmF2YTJXU0RMQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2NvbW1hbmQvSmF2YTJXU0RMQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjY2MTIyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb21tYW5kL0phdmEyV1NETENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAxMDYgICAxMjExOTkgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgTfhsbGVyCi0gKiAyMDA2MDMyOSAgIDEyNzAxNiBhbmR5emhhaUBjYS5pYm0uY29tIC0gQW5keSBaaGFpCi0gKiAyMDA2MDUxNSAgIDExNTIyNSBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDcwODEzICAgMTg4OTk5IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1hbmQ7Ci0KLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmF4aXMudG9vbHMuYW50LndzZGwuSmF2YTJXc2RsQW50VGFzazsKLWltcG9ydCBvcmcuYXBhY2hlLmF4aXMudG9vbHMuYW50LndzZGwuTmFtZXNwYWNlTWFwcGluZzsKLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5CdWlsZEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5Qcm9qZWN0OwotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LlRhcmdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLkF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbnRleHQuQXhpc0VtaXR0ZXJDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29udGV4dC5BeGlzRW1pdHRlckRlZmF1bHRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUucGx1Z2luLldlYlNlcnZpY2VBeGlzQ29uc3VtcHRpb25Db3JlUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbW1vbi5GaWxlUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uUHJvZ3Jlc3NVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQmFzZUVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklMb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0vKioKLSAqIENvbW1hbmRzIGFyZSBleGVjdXRhYmxlLCB1bmRvYWJsZSwgcmVkb2FibGUgb2JqZWN0cy4KLSAqIEV2ZXJ5IENvbW1hbmQgaGFzIGEgbmFtZSBhbmQgYSBkZXNjcmlwdGlvbi4KLSAqLwotCi1wdWJsaWMgY2xhc3MgSmF2YTJXU0RMQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0KLQlwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW1fOwotCXByaXZhdGUgRmlsZSB0ZW1wT3V0cHV0V3NkbEZpbGU7Ci0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEVNUCA9ICJ0ZW1wIjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgZmluYWwgU3RyaW5nIFdTRExfRVhUID0gIi53c2RsIjsgLy8kTk9OLU5MUy0xJAotCi0JcHVibGljIEphdmEyV1NETENvbW1hbmQoKSB7Ci0JfQkKLQkvKioKLQkgKiBDb25zdHJ1Y3RvciBmb3IgSmF2YTJXU0RMQ29tbWFuZC4KLQkgKi8KLQlwdWJsaWMgSmF2YTJXU0RMQ29tbWFuZChKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtKSB7Ci0JCXN1cGVyKCk7Ci0JCXRoaXMuamF2YVdTRExQYXJhbV8gPSBqYXZhV1NETFBhcmFtOwotCX0KLQotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLQl7Ci0JCUlFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0JCUlTdGF0dXMgc3RhdHVzOwotCQlpZiAoamF2YVdTRExQYXJhbV8gPT0gbnVsbCkgewotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzLk1TR19FUlJPUl9KQVZBX1dTRExfUEFSQU1fTk9UX1NFVCk7Ci0JCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCXJldHVybiBzdGF0dXM7Ci0JCX0KLQotCQlpZiAoamF2YVdTRExQYXJhbV8uZ2V0QmVhbk5hbWUoKSA9PSBudWxsKSB7Ci0JCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuTVNHX0VSUk9SX0pBVkFfV1NETF9QQVJBTV9OT1RfU0VUKTsKLQkJCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJcmV0dXJuIHN0YXR1czsKLQkJfQotCi0JCVByb2dyZXNzVXRpbHMucmVwb3J0KG1vbml0b3IsIE5MUy5iaW5kKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfR0VORVJBVEVfV1NETCwgamF2YVdTRExQYXJhbV8uZ2V0QmVhbk5hbWUoKSApKTsKLQotCQlyZXR1cm4gZXhlY3V0ZUFudFRhc2soZW52aXJvbm1lbnQsIG1vbml0b3IpOwotCX0KLQotCXByb3RlY3RlZCBJU3RhdHVzIGV4ZWN1dGVBbnRUYXNrKElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKSB7Ci0KLQkJZmluYWwgY2xhc3MgRW1pdHRlciBleHRlbmRzIEphdmEyV3NkbEFudFRhc2sgewotCQkJcHVibGljIEVtaXR0ZXIoKSB7Ci0JCQkJc3VwZXIuc2V0UHJvamVjdChuZXcgUHJvamVjdCgpKTsKLQkJCQlzdXBlci5nZXRQcm9qZWN0KCkuaW5pdCgpOwotCQkJCXN1cGVyLnNldFRhc2tUeXBlKCJheGlzIik7IC8vJE5PTi1OTFMtMSQKLQkJCQlzdXBlci5zZXRUYXNrTmFtZSgiYXhpcy1qYXZhMndzZGwiKTsgLy8kTk9OLU5MUy0xJAotCQkJCXN1cGVyLnNldE93bmluZ1RhcmdldChuZXcgVGFyZ2V0KCkpOwotCQkJfQotCQl9Ci0KLQkJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotCQlJTG9nIGVudkxvZyA9IGVudmlyb25tZW50LmdldExvZygpOwotCQlFbWl0dGVyIGVtaXR0ZXIgPSBuZXcgRW1pdHRlcigpOwotCQllbWl0dGVyLmNyZWF0ZUNsYXNzcGF0aCgpLnNldFBhdGgoamF2YVdTRExQYXJhbV8uZ2V0Q2xhc3NwYXRoKCkpOwotCQllbnZMb2cubG9nKElMb2cuSU5GTywgNTAwOCwgdGhpcywgImV4ZWN1dGVBbnRUYXNrIiwgIkNsYXNzIFBhdGggPSAiKyBqYXZhV1NETFBhcmFtXy5nZXRDbGFzc3BhdGgoKSk7Ci0JCQotCQllbWl0dGVyLnNldFBvcnRUeXBlTmFtZShqYXZhV1NETFBhcmFtXy5nZXRQb3J0VHlwZU5hbWUoKSk7Ci0JCWVudkxvZy5sb2coSUxvZy5JTkZPLCA1MDA5LCB0aGlzLCAiZXhlY3V0ZUFudFRhc2siLCAiUG9ydCBUeXBlIE5hbWUgPSAiKyBqYXZhV1NETFBhcmFtXy5nZXRQb3J0VHlwZU5hbWUoKSk7Ci0JCQotCQllbWl0dGVyLnNldFNlcnZpY2VFbGVtZW50TmFtZShqYXZhV1NETFBhcmFtXy5nZXRTZXJ2aWNlTmFtZSgpKTsKLQkJZW52TG9nLmxvZyhJTG9nLklORk8sIDUwMTAsIHRoaXMsICJleGVjdXRlQW50VGFzayIsICJTZXJ2aWNlIE5hbWUgPSAiKyBqYXZhV1NETFBhcmFtXy5nZXRTZXJ2aWNlTmFtZSgpKTsKLQkJCi0JCWVtaXR0ZXIuc2V0TG9jYXRpb24oamF2YVdTRExQYXJhbV8uZ2V0VXJsTG9jYXRpb24oKSk7Ci0JCWVudkxvZy5sb2coSUxvZy5JTkZPLCA1MDExLCB0aGlzLCAiZXhlY3V0ZUFudFRhc2siLCAiVVJMIExvY2F0aW9uID0gIisgamF2YVdTRExQYXJhbV8uZ2V0VXJsTG9jYXRpb24oKSk7Ci0JCQotCQllbWl0dGVyLnNldE1ldGhvZHMoamF2YVdTRExQYXJhbV8uZ2V0TWV0aG9kU3RyaW5nKCkpOwotCQllbnZMb2cubG9nKElMb2cuSU5GTywgNTAxMiwgdGhpcywgImV4ZWN1dGVBbnRUYXNrIiwgIk1ldGhvZHMgPSAiKyBqYXZhV1NETFBhcmFtXy5nZXRNZXRob2RTdHJpbmcoKSk7Ci0JCQotCQllbWl0dGVyLnNldFN0eWxlKGphdmFXU0RMUGFyYW1fLmdldFN0eWxlKCkpOwotCQllbnZMb2cubG9nKElMb2cuSU5GTywgNTAxMywgdGhpcywgImV4ZWN1dGVBbnRUYXNrIiwgIlN0eWxlID0gIisgamF2YVdTRExQYXJhbV8uZ2V0U3R5bGUoKSk7Ci0JCQotCQllbWl0dGVyLnNldFVzZShqYXZhV1NETFBhcmFtXy5nZXRVc2UoKSk7Ci0JCWVudkxvZy5sb2coSUxvZy5JTkZPLCA1MDE0LCB0aGlzLCAiZXhlY3V0ZUFudFRhc2siLCAiVXNlID0gIisgamF2YVdTRExQYXJhbV8uZ2V0VXNlKCkpOwotCQkJCQotCQkvLyBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byB1c2UgYXMgb3V0cHV0IGRpcmVjdG9yeSBmb3IgamF2YTJ3c2RsCi0JCUlQYXRoIHBsdWdpblN0YXRlTG9jID0gV2ViU2VydmljZUF4aXNDb25zdW1wdGlvbkNvcmVQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTdGF0ZUxvY2F0aW9uKCk7Ci0JCUZpbGUgdGVtcERpciA9IG5ldyBGaWxlKHBsdWdpblN0YXRlTG9jLnRvU3RyaW5nKCkpOwotCQlGaWxlIG5ld1RlbXBGaWxlID0gbnVsbDsKLQkJdHJ5IHsKLQkJCW5ld1RlbXBGaWxlID0gRmlsZS5jcmVhdGVUZW1wRmlsZShURU1QLCBXU0RMX0VYVCwgdGVtcERpcik7Ci0JCQl0ZW1wT3V0cHV0V3NkbEZpbGUgPSBuZXdUZW1wRmlsZTsKLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCXRlbXBPdXRwdXRXc2RsRmlsZSA9IG5ldyBGaWxlIChwbHVnaW5TdGF0ZUxvYy5hcHBlbmQoVEVNUCtXU0RMX0VYVCkudG9TdHJpbmcoKSk7Ci0JCX0KLQotCQllbWl0dGVyLnNldE91dHB1dCh0ZW1wT3V0cHV0V3NkbEZpbGUpOwotCQkKLQkJZW52TG9nLmxvZyhJTG9nLklORk8sIDUwMTUsIHRoaXMsICJleGVjdXRlQW50VGFzayIsICJXU0RMIExvY2F0aW9uID0gIisgamF2YVdTRExQYXJhbV8uZ2V0T3V0cHV0V3NkbExvY2F0aW9uKCkpOwotCQkKLQkJZW1pdHRlci5zZXROYW1lc3BhY2UoamF2YVdTRExQYXJhbV8uZ2V0TmFtZXNwYWNlKCkpOwotCQllbnZMb2cubG9nKElMb2cuSU5GTywgNTAxNiwgdGhpcywgImV4ZWN1dGVBbnRUYXNrIiwgIk5hbWUgU3BhY2UgPSAiKyBqYXZhV1NETFBhcmFtXy5nZXROYW1lc3BhY2UoKSk7Ci0JCQotCQllbWl0dGVyLnNldENsYXNzTmFtZShqYXZhV1NETFBhcmFtXy5nZXRCZWFuTmFtZSgpKTsKLQkJZW52TG9nLmxvZyhJTG9nLklORk8sIDUwMTcsIHRoaXMsICJleGVjdXRlQW50VGFzayIsICJCZWFuIG5hbWUgPSAiKyBqYXZhV1NETFBhcmFtXy5nZXRCZWFuTmFtZSgpKTsKLQkJCi0JCWVtaXR0ZXIuc2V0SW1wbENsYXNzKGphdmFXU0RMUGFyYW1fLmdldEJlYW5OYW1lKCkpOwotCQkKLQkgICAgQXhpc0VtaXR0ZXJDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uQ29yZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldEF4aXNFbWl0dGVyQ29udGV4dCgpOwotCSAgICAKLQkgICAgaWYgKGNvbnRleHQuaXNVc2VJbmhlcml0ZWRNZXRob2RzRW5hYmxlZCgpICE9IEF4aXNFbWl0dGVyRGVmYXVsdHMuZ2V0VXNlSW5oZXJpdGVkTWV0aG9kc0RlZmF1bHQoKSkKLQkgICAgewotCSAgICAJZW1pdHRlci5zZXRVc2VJbmhlcml0ZWRNZXRob2RzKGNvbnRleHQuaXNVc2VJbmhlcml0ZWRNZXRob2RzRW5hYmxlZCgpKTsKLQkJCWVudkxvZy5sb2coSUxvZy5JTkZPLCA1MDk5LCB0aGlzLCAiZXhlY3V0ZUFudFRhc2siLCAiIHNldCBVc2VJbmhlcml0ZWRNZXRob2RzIDogIiArIGNvbnRleHQuaXNVc2VJbmhlcml0ZWRNZXRob2RzRW5hYmxlZCgpICk7Ci0JICAgIH0KLQkJCi0JCUhhc2hNYXAgbWFwcGluZ3MgPSBqYXZhV1NETFBhcmFtXy5nZXRNYXBwaW5ncygpOwotCQlpZihtYXBwaW5ncyAhPSBudWxsKXsKLQkJCUl0ZXJhdG9yIGtleXMgPSBtYXBwaW5ncy5rZXlTZXQoKS5pdGVyYXRvcigpOwotCQkJd2hpbGUoa2V5cy5oYXNOZXh0KCkpewotCQkJCVN0cmluZyBwYWthZ2UgPSAoU3RyaW5nKWtleXMubmV4dCgpOwotCQkJCVN0cmluZyBuYW1lc3BhY2UgPSAoU3RyaW5nKW1hcHBpbmdzLmdldChwYWthZ2UpOwotCQkJCU5hbWVzcGFjZU1hcHBpbmcgbWFwID0gbmV3IE5hbWVzcGFjZU1hcHBpbmcoKTsKLQkJCQltYXAuc2V0UGFja2FnZShwYWthZ2UpOwotCQkJCW1hcC5zZXROYW1lc3BhY2UobmFtZXNwYWNlKTsKLQkJCQllbWl0dGVyLmFkZE1hcHBpbmcobWFwKTsJCQotCQkJfQotCQl9Ci0JCQotCQotCQl0cnkgewotCQkJZW1pdHRlci5leGVjdXRlKCk7Ci0JCQlzdGF0dXMgPSBtb3ZlR2VuZXJhdGVkV1NETChlbnZpcm9ubWVudCwgbW9uaXRvcik7Ci0JCX0gY2F0Y2ggKEJ1aWxkRXhjZXB0aW9uIGUpIHsKLQkJCWVudkxvZy5sb2coSUxvZy5FUlJPUiwgNTAxOCwgdGhpcywgImV4ZWN1dGVBbnRUYXNrIiwgZSk7Ci0JCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cygKLQkJCUF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfSkFWQV9XU0RMX0dFTkVSQVRFICsgIiAiIC8vJE5PTi1OTFMtMSQKLQkJCStlLmdldENhdXNlKCkudG9TdHJpbmcoKSwgZS5nZXRDYXVzZSgpKTsKLQkJCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJcmV0dXJuIHN0YXR1czsKLQl9IGZpbmFsbHkgewotCQlpZiAodGVtcE91dHB1dFdzZGxGaWxlLmV4aXN0cygpKSB7Ci0JCQl0ZW1wT3V0cHV0V3NkbEZpbGUuZGVsZXRlKCk7Ci0JCX0KLQl9Ci0JCXJldHVybiBzdGF0dXM7Ci0KLQl9Ci0JCi0JcHVibGljIElTdGF0dXMgbW92ZUdlbmVyYXRlZFdTREwoSUVudmlyb25tZW50IGVudmlyb25tZW50LAotCQkJSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKSB7Ci0JCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQkJRmlsZUlucHV0U3RyZWFtIGZpblN0cmVhbSA9IG51bGw7Ci0JCQotICAgIFJlc291cmNlQ29udGV4dCBjb250ZXh0ICAgICAgID0gKChCYXNlRWNsaXBzZUVudmlyb25tZW50KWVudmlyb25tZW50KS5nZXRSZXNvdXJjZUNvbnRleHQoKTsgICAgICAgIAotCQlJU3RhdHVzSGFuZGxlciAgc3RhdHVzSGFuZGxlciA9IGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKTsKLQkJCi0JCVN0cmluZyBvdXRwdXRXc2RsTG9jYXRpb24gPSBqYXZhV1NETFBhcmFtXy5nZXRPdXRwdXRXc2RsTG9jYXRpb24oKTsKLQkJSVBhdGggdGFyZ2V0UGF0aCA9IG5ldyBQYXRoKG91dHB1dFdzZGxMb2NhdGlvbik7Ci0JCXRyeSB7Ci0JCQlmaW5TdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKHRlbXBPdXRwdXRXc2RsRmlsZSk7Ci0JCQlpZiAoZmluU3RyZWFtICE9IG51bGwpIHsKLQkJCQlGaWxlUmVzb3VyY2VVdGlscy5jcmVhdGVGaWxlQXRMb2NhdGlvbihjb250ZXh0LCB0YXJnZXRQYXRoLm1ha2VBYnNvbHV0ZSgpLCBmaW5TdHJlYW0sCi0JCQkJCQltb25pdG9yLCBzdGF0dXNIYW5kbGVyKTsKLQkJCQlmaW5TdHJlYW0uY2xvc2UoKTsKLQkJCX0KLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfTU9WRV9SRVNPVVJDRSxuZXcgU3RyaW5nW117ZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCl9KSwgZSk7Ci0JCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJfSBmaW5hbGx5IHsKLQkJCXRyeSB7Ci0JCQkJaWYgKGZpblN0cmVhbSAhPSBudWxsKSB7Ci0JCQkJCWZpblN0cmVhbS5jbG9zZSgpOwotCQkJCX0KLQkJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKLQkJCX0KLQkJfQotCQlyZXR1cm4gc3RhdHVzOwotCX0KLQkKLQlwdWJsaWMgU3RhdHVzIHVuZG8oSUVudmlyb25tZW50IGVudmlyb25tZW50KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCXB1YmxpYyBTdGF0dXMgcmVkbyhJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQpIHsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgamF2YVdTRExQYXJhbS4KLQkgKiBAcmV0dXJuIEphdmFXU0RMUGFyYW1ldGVyCi0JICovCi0JcHVibGljIEphdmFXU0RMUGFyYW1ldGVyIGdldEphdmFXU0RMUGFyYW0oKSB7Ci0JCXJldHVybiBqYXZhV1NETFBhcmFtXzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRKYXZhV1NETFBhcmFtKEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFybSkgewotCQl0aGlzLmphdmFXU0RMUGFyYW1fID0gamF2YVdTRExQYXJtOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldFdzZGxVUkkoKQotCXsKLQkgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGdldEphdmFXU0RMUGFyYW0oKS5nZXRPdXRwdXRXc2RsTG9jYXRpb24oKSk7IAotCSAgICBTdHJpbmcgdXJsID0gIiI7Ci0JCSAgdHJ5IHsKLQkgICAgCXVybCA9IGZpbGUudG9VUkwoKS50b1N0cmluZygpOwotCSAgICB9Ci0JCSAgY2F0Y2goTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11ZSl7fQotCQlyZXR1cm4gdXJsOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb21tYW5kL1dTREwySmF2YUNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb21tYW5kL1dTREwySmF2YUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU1NmM5Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29tbWFuZC9XU0RMMkphdmFDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIHl5eXltbWRkICAgYnVnICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogMjAwNjAzMjkgICAxMjcwMTYgYW5keXpoYWlAY2EuaWJtLmNvbSAtIEFuZHkgWmhhaQotICogMjAwNjA0MDQgICAxMzQ3OTEgYW5keXpoYWlAY2EuaWJtLmNvbSAtIEFuZHkgWmhhaQotICogMjAwNjA1MTUgICAxMTUyMjUgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA3MDgxMyAgIDE4ODk5OSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MDkyNyAgIDIwNDY0OSBrZWx2aW5oY0BjYS5pYm0uY29tIC0gS2VsdmluIENoZXVuZwotICogMjAwODA1MDUgICAyMjU2MjUgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgRml4ZWQgbnVsbCBwb2ludGVyIHByb2JsZW0sIGlmIHVzZXIgY2FuY2VsbHMgb3V0IG9mIG92ZXJ3cml0ZSByZXNvdXJjZS4KLSAqIDIwMDgwNjA0ICAgMjM1NjQ4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBFcnJvcnMgaW4gY2xpZW50IHByb3h5IGlmIHVzaW5nIGRlZmF1bHQgbmFtZXNwYWNlIHRvIHBhY2thZ2UgbWFwcGluZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbWFuZDsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5hcGFjaGUuYXhpcy5jb25zdGFudHMuU2NvcGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS5heGlzLndzZGwudG9KYXZhLkVtaXR0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5heGlzLndzZGwudG9KYXZhLkdlbmVyYXRlZEZpbGVJbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29udGV4dC5BeGlzRW1pdHRlckNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb250ZXh0LkF4aXNFbWl0dGVyRGVmYXVsdHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5wbHVnaW4uV2ViU2VydmljZUF4aXNDb25zdW1wdGlvbkNvcmVQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbW1vbi5GaWxlUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uUHJvZ3Jlc3NVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQmFzZUVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklMb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLXB1YmxpYyBjbGFzcyBXU0RMMkphdmFDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gewotCi0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgREVQTE9ZX1RZUEUgPSAiZGVwbG95IjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgZmluYWwgU3RyaW5nIFVOREVQTE9ZX1RZUEUgPSAidW5kZXBsb3kiOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEVNUCA9ICJ0ZW1wIjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbTsKLQlwcml2YXRlIFN0cmluZyB3c2RsVVJJOwotCXByaXZhdGUgU3RyaW5nIGh0dHBCYXNpY0F1dGhVc2VybmFtZTsKLQlwcml2YXRlIFN0cmluZyBodHRwQmFzaWNBdXRoUGFzc3dvcmQ7Ci0JcHJpdmF0ZSBMaXN0IGRlcGxveUZpbGVzOwotCXByaXZhdGUgTGlzdCBqYXZhRmlsZXM7Ci0JcHJpdmF0ZSBGaWxlIHRlbXBPdXRwdXRGaWxlOwotCi0JcHVibGljIFdTREwySmF2YUNvbW1hbmQoKSB7Ci0JfQotCi0JcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0JewotCQlJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCQlJTG9nIGVudkxvZyA9IGVudmlyb25tZW50LmdldExvZygpOwotCQlJU3RhdHVzIHN0YXR1czsKLQkJaWYgKGphdmFXU0RMUGFyYW0gPT0gbnVsbCkgewotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoCi0JCQkJCUF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfSkFWQV9XU0RMX1BBUkFNX05PVF9TRVQpOwotCQkJZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQlyZXR1cm4gc3RhdHVzOwotCQl9Ci0JCQotCQlpZiAod3NkbFVSSSAhPSBudWxsKSAvL2JvdHRvbSB1cCBjYXNlIGhhcyBhbHJlYWR5IGhhcyB0aGUgY29ycmVjdCBXU0RMIG9uIGphdmFXU0RMUGFyYW0KLQkJewotCQkJamF2YVdTRExQYXJhbS5zZXRJbnB1dFdzZGxMb2NhdGlvbih3c2RsVVJJKTsKLQkJfQotCQlqYXZhV1NETFBhcmFtLnNldEhUVFBVc2VybmFtZShodHRwQmFzaWNBdXRoVXNlcm5hbWUpOwotCQlqYXZhV1NETFBhcmFtLnNldEhUVFBQYXNzd29yZChodHRwQmFzaWNBdXRoUGFzc3dvcmQpOwotCQkKLQkJRW1pdHRlciB3c2RsMkphdmEgPSBuZXcgRW1pdHRlcigpOwotCQlpZiAoZW52TG9nLmlzRW5hYmxlZCgiZW1pdHRlciIpKSB7Ci0JCQl3c2RsMkphdmEuc2V0VmVyYm9zZSh0cnVlKTsKLQkJfSBlbHNlIHsKLQkJCXdzZGwySmF2YS5zZXRWZXJib3NlKGZhbHNlKTsKLQkJfQotCQlib29sZWFuIHNlcnZlclNpZGUgPSBqYXZhV1NETFBhcmFtLmdldFNlcnZlclNpZGUoKSA9PSBKYXZhV1NETFBhcmFtZXRlci5TRVJWRVJfU0lERV9CRUFOOwotCQl3c2RsMkphdmEuc2V0U2VydmVyU2lkZShzZXJ2ZXJTaWRlKTsKLQkJaWYgKHNlcnZlclNpZGUpIHsKLQkJCXdzZGwySmF2YS5zZXRTa2VsZXRvbldhbnRlZChqYXZhV1NETFBhcmFtLmlzU2tlbGV0b25EZXBsb3koKSk7Ci0JCX0KLQkJCi0JCS8vIGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHVzZSBhcyBvdXRwdXQgZGlyZWN0b3J5IGZvciB3c2RsMmphdmEKLQkJdGVtcE91dHB1dEZpbGUgPSBjcmVhdGVUZW1wRGlyKCk7Ci0JCXdzZGwySmF2YS5zZXRPdXRwdXREaXIodGVtcE91dHB1dEZpbGUudG9TdHJpbmcoKSk7Ci0JCQotCQl0cnkgewotCQkJaWYgKGphdmFXU0RMUGFyYW0uaXNNZXRhSW5mT25seSgpKSB7Ci0JCQkJLy8gZm9yIHRoZSBjYXNlIEphdmEyV1NETC1XU0RMMkphdmEKLQkJCQlIYXNoTWFwIHBjazJuc01hcCA9IGphdmFXU0RMUGFyYW0uZ2V0TWFwcGluZ3MoKTsKLQkJCQlpZiAocGNrMm5zTWFwICE9IG51bGwpIHsKLQkJCQkJSGFzaE1hcCBuczJwY2tNYXAgPSBuZXcgSGFzaE1hcCgpOwotCQkJCQlJdGVyYXRvciBrZXlzID0gcGNrMm5zTWFwLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0JCQkJCXdoaWxlIChrZXlzLmhhc05leHQoKSkgewotCQkJCQkJU3RyaW5nIHBha2FnZSA9IChTdHJpbmcpIGtleXMubmV4dCgpOwotCQkJCQkJU3RyaW5nIG5hbWVzcGFjZSA9IChTdHJpbmcpIHBjazJuc01hcC5nZXQocGFrYWdlKTsKLQkJCQkJCW5zMnBja01hcC5wdXQobmFtZXNwYWNlLCBwYWthZ2UpOwotCQkJCQl9Ci0JCQkJCXdzZGwySmF2YS5zZXROYW1lc3BhY2VNYXAobnMycGNrTWFwKTsKLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCS8vICBmb3IgdGhlIGNhc2UgV1NETDJKYXZhCQkJCi0JCQkJaWYgKGphdmFXU0RMUGFyYW0uZ2V0TWFwcGluZ3MoKSAhPSBudWxsKSB7Ci0JCQkJCXdzZGwySmF2YS5zZXROYW1lc3BhY2VNYXAoamF2YVdTRExQYXJhbS5nZXRNYXBwaW5ncygpKTsKLQkJCQl9Ci0JCQl9Ci0JCQllbnZMb2cubG9nKElMb2cuSU5GTywgNTAxOSwgdGhpcywgImV4ZWN1dGUiLCAiSmF2YSBvdXRwdXQgPSAiICsgamF2YVdTRExQYXJhbS5nZXRKYXZhT3V0cHV0KCkpOwotCQkJaWYgKGphdmFXU0RMUGFyYW0uZ2V0SFRUUFBhc3N3b3JkKCkgIT0gbnVsbCkgewotCQkJCXdzZGwySmF2YS5zZXRQYXNzd29yZChqYXZhV1NETFBhcmFtLmdldEhUVFBQYXNzd29yZCgpKTsKLQkJCQllbnZMb2cubG9nKElMb2cuSU5GTywgNTA4MSwgdGhpcywgImV4ZWN1dGUiLCAicGFzc3dvcmQ6ICIgKyBqYXZhV1NETFBhcmFtLmdldEhUVFBQYXNzd29yZCgpKTsKLQkJCX0KLQkJCWlmIChqYXZhV1NETFBhcmFtLmdldEhUVFBVc2VybmFtZSgpICE9IG51bGwpIHsKLQkJCQl3c2RsMkphdmEuc2V0VXNlcm5hbWUoamF2YVdTRExQYXJhbS5nZXRIVFRQVXNlcm5hbWUoKSk7Ci0JCQkJZW52TG9nLmxvZyhJTG9nLklORk8sIDUwODIsIHRoaXMsICJleGVjdXRlIiwgInVzZXJuYW1lOiAiICsgamF2YVdTRExQYXJhbS5nZXRIVFRQVXNlcm5hbWUoKSk7Ci0JCQl9Ci0JCQllbnZMb2cubG9nKElMb2cuSU5GTywgNTAyMCwgdGhpcywgImV4ZWN1dGUiLCAiV1NETCBMb2NhdGlvbiA9ICIgKyBqYXZhV1NETFBhcmFtLmdldElucHV0V3NkbExvY2F0aW9uKCkpOwotCQkJCi0JCQkvLyBJZiB0aW1lb3V0IGlzIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHRpbWVvdXQgZm9yIHdzZGwyamF2YSBpcyA0NSBzZWNvbmRzLiAgCi0JCQkvLyBUaGUgdXNlciBjYW4gY2hhbmdlIHRoZSB0aW1lb3V0IHZhbHVlIGJ5IHNldHRpbmcgCi0JCQkvLyAiLURBeGlzV3NkbDJKYXZhVGltZW91dD08dGltZW91dF92YWx1ZV9pbl9taWxsaXNlY29uZHM+IiBhcyBWTSBhcmd1bWVudAotCQkJLy8gd2hlbiBzdGFydGluZyB0aGUgRWNsaXBzZSB3b3JrYmVuY2guCi0JCQkvLwotCQkJLy8gRm9yIGV4YW1wbGUsIGVudGVyIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBzdGFydCB0aGUgRWNsaXBzZSB3b3JrYmVuY2ggCi0JCQkvLyBpbiBvcmRlciB0byBzZXQgdGhlIEF4aXMgV1NETCB0byBKYXZhIGVtaXR0ZXIgdGltZW91dCB0byA2MCBzZWNvbmRzOgotCQkJLy8KLQkJCS8vIAkJZWNsaXBzZSAtdm1hcmdzICItREF4aXNXc2RsMkphdmFUaW1lb3V0PTYwMDAwIgotCQkJLy8KLQkJCS8vIFdoZW4gQXhpc1dzZGwySmF2YVRpbWVvdXQgaXMgc2V0LCB0aGUgQXhpcyBlbWl0dGVyIHByZWZlcmVuY2UgcGFnZSB0aW1lb3V0IHNldHRpbmcgaXMgaWdub3JlZAotCQkgICAgQXhpc0VtaXR0ZXJDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uQ29yZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldEF4aXNFbWl0dGVyQ29udGV4dCgpOwotCQkJU3RyaW5nIHdzZGwySmF2YVRpbWVvdXRQcm9wZXJ0eSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiQXhpc1dzZGwySmF2YVRpbWVvdXQiKTsKLQkJCWxvbmcgdGltZW91dDsKLQkJCWlmICh3c2RsMkphdmFUaW1lb3V0UHJvcGVydHkgIT0gbnVsbCkgewotCQkJCXRpbWVvdXQgPSBuZXcgSW50ZWdlcih3c2RsMkphdmFUaW1lb3V0UHJvcGVydHkpLmxvbmdWYWx1ZSgpOwotCQkJCXdzZGwySmF2YS5zZXRUaW1lb3V0KHRpbWVvdXQpOwotCQkJCWVudkxvZy5sb2coSUxvZy5JTkZPLCA1MDkxLCB0aGlzLCAiZXhlY3V0ZSIsICJBeGlzV3NkbDJKYXZhVGltZW91dCA9ICIgKyB0aW1lb3V0KTsJCQkJCi0JCQl9Ci0JCQllbHNlIGlmKGNvbnRleHQuZ2V0VGltZU91dCgpICE9IEF4aXNFbWl0dGVyRGVmYXVsdHMuZ2V0VGltZU91dERlZmF1bHQoKSkKLQkJCXsKLQkJCQl0aW1lb3V0ID0gY29udGV4dC5nZXRUaW1lT3V0KCkgPT0gLTEgPyAtMSA6IGNvbnRleHQuZ2V0VGltZU91dCgpKiAxMDAwOyAKLQkJCQl3c2RsMkphdmEuc2V0VGltZW91dCh0aW1lb3V0KTsKLQkJCQllbnZMb2cubG9nKElMb2cuSU5GTywgNTEwMCwgdGhpcywgImV4ZWN1dGUiLCAiVGltZW91dCA9ICIgKyB0aW1lb3V0KTsKLQkJCX0KLQkJICAgIGlmIChjb250ZXh0LmdldERlcGxveVNjb3BlVHlwZSgpICE9IEF4aXNFbWl0dGVyRGVmYXVsdHMuZ2V0RGVwbG95U2NvcGVEZWZhdWx0KCkpCi0JCSAgICB7Ci0JCSAgICAJc3dpdGNoIChjb250ZXh0LmdldERlcGxveVNjb3BlVHlwZSgpKQotCQkgICAgCXsKLQkJICAgIAkJY2FzZSBBeGlzRW1pdHRlckNvbnRleHQuREVQTE9ZX1NDT1BFX1RZUEVfQVBQTElDQVRJT046Ci0JCSAgICAJCQl3c2RsMkphdmEuc2V0U2NvcGUoU2NvcGUuQVBQTElDQVRJT04pOwotCQkJCQkJZW52TG9nLmxvZyhJTG9nLklORk8sIDUxMDEsIHRoaXMsICJleGVjdXRlIiwgIiBEZXBsb3kgU2NvcGU6IEFwcGxpY2F0aW9uIiApOwotCQkgICAgCQkJYnJlYWs7Ci0JCSAgICAJCWNhc2UgQXhpc0VtaXR0ZXJDb250ZXh0LkRFUExPWV9TQ09QRV9UWVBFX1JFUVVFU1Q6Ci0JCSAgICAJCQl3c2RsMkphdmEuc2V0U2NvcGUoU2NvcGUuUkVRVUVTVCk7Ci0JCQkJCQllbnZMb2cubG9nKElMb2cuSU5GTywgNTEwMiwgdGhpcywgImV4ZWN1dGUiLCAiIERlcGxveSBTY29wZTogUmVxdWVzdCIgKTsKLQkJICAgIAkJCWJyZWFrOwotCQkgICAgCQljYXNlIEF4aXNFbWl0dGVyQ29udGV4dC5ERVBMT1lfU0NPUEVfVFlQRV9TRVNTVElPTjoKLQkJICAgIAkJCXdzZGwySmF2YS5zZXRTY29wZShTY29wZS5TRVNTSU9OKTsKLQkJCQkJCWVudkxvZy5sb2coSUxvZy5JTkZPLCA1MTAzLCB0aGlzLCAiZXhlY3V0ZSIsICIgRGVwbG95IFNjb3BlOiBTZXNzaW9uIiApOwotCQkgICAgCQkJYnJlYWs7Ci0JCSAgICAJCWRlZmF1bHQ6Ci0JCSAgICAJfQotCQkgICAgfQotCQkgICAgCi0JCSAgICBpZiAoY29udGV4dC5pc0FsbFdhbnRlZEVuYWJsZWQoKSAhPSBBeGlzRW1pdHRlckRlZmF1bHRzLmdldEFsbFdhbnRlZERlZmF1bHQoKSkKLQkJICAgIHsKLQkJICAgIAl3c2RsMkphdmEuc2V0QWxsV2FudGVkKGNvbnRleHQuaXNBbGxXYW50ZWRFbmFibGVkKCkpOwotCQkJCWVudkxvZy5sb2coSUxvZy5JTkZPLCA1MTA0LCB0aGlzLCAiZXhlY3V0ZSIsICIgc2V0IEFsbFdhbnRlZCA6ICIgKyBjb250ZXh0LmlzQWxsV2FudGVkRW5hYmxlZCgpICk7Ci0JCSAgICB9Ci0KLQkJICAgIGlmIChjb250ZXh0LmlzSGVscGVyV2FudGVkRW5hYmxlZCgpICE9IEF4aXNFbWl0dGVyRGVmYXVsdHMuZ2V0SGVscGVyV2FudGVkRGVmYXVsdCgpKQotCQkgICAgewotCQkgICAgCXdzZGwySmF2YS5zZXRIZWxwZXJXYW50ZWQoY29udGV4dC5pc0hlbHBlcldhbnRlZEVuYWJsZWQoKSk7Ci0JCQkJZW52TG9nLmxvZyhJTG9nLklORk8sIDUxMDUsIHRoaXMsICJleGVjdXRlIiwgIiBzZXQgSGVscGVyV2FudGVkIDogIiArIGNvbnRleHQuaXNIZWxwZXJXYW50ZWRFbmFibGVkKCkgKTsKLQkJCX0KLQkJICAgIGlmIChjb250ZXh0LmlzV3JhcEFycmF5c0VuYWJsZWQoKSAhPSBBeGlzRW1pdHRlckRlZmF1bHRzLmdldFdyYXBBcnJheXNEZWZhdWx0KCkpCi0JCSAgICB7Ci0JCSAgICAJd3NkbDJKYXZhLnNldFdyYXBBcnJheXMoY29udGV4dC5pc1dyYXBBcnJheXNFbmFibGVkKCkpOwotCQkJCWVudkxvZy5sb2coSUxvZy5JTkZPLCA1MTA2LCB0aGlzLCAiZXhlY3V0ZSIsICIgc2V0IFdyYXBBcnJheXMgOiAiICsgY29udGV4dC5pc1dyYXBBcnJheXNFbmFibGVkKCkgKTsKLQkJICAgIH0KLQkJCQotCQkJUHJvZ3Jlc3NVdGlscy5yZXBvcnQobW9uaXRvciwgTkxTLmJpbmQoQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzLk1TR19QQVJTSU5HX1dTREwsIGphdmFXU0RMUGFyYW0uZ2V0SW5wdXRXc2RsTG9jYXRpb24oKSApICk7Ci0JCQkKLQkJCXdzZGwySmF2YS5ydW4oamF2YVdTRExQYXJhbS5nZXRJbnB1dFdzZGxMb2NhdGlvbigpKTsKLQkJCQotCQkJamF2YUZpbGVzID0gd3NkbDJKYXZhLmdldEdlbmVyYXRlZEZpbGVOYW1lcygpOwotCQkJCi0JCQlkZXBsb3lGaWxlcyA9IG5ldyBBcnJheUxpc3QoKTsKLQkJCWlmIChzZXJ2ZXJTaWRlKSB7Ci0JCQkJLy8gc2V0IGRlcGxveW1lbnQgZmlsZXMKLQkJCQlMaXN0IGRlcGxveW1lbnRGaWxlczEgPSB3c2RsMkphdmEuZ2V0R2VuZXJhdGVkRmlsZUluZm8oKS5maW5kVHlwZShERVBMT1lfVFlQRSk7Ci0JCQkJTGlzdCBkZXBsb3ltZW50RmlsZXMyID0gd3NkbDJKYXZhLmdldEdlbmVyYXRlZEZpbGVJbmZvKCkuZmluZFR5cGUoVU5ERVBMT1lfVFlQRSk7Ci0JCQkJaWYgKGRlcGxveW1lbnRGaWxlczEgIT0gbnVsbCAmJiBkZXBsb3ltZW50RmlsZXMyICE9IG51bGwpIHsKLQkJCQkJZGVwbG95bWVudEZpbGVzMS5hZGRBbGwoZGVwbG95bWVudEZpbGVzMik7Ci0JCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgZGVwbG95bWVudEZpbGVzMS5zaXplKCk7IGkrKykgewotCQkJCQkJR2VuZXJhdGVkRmlsZUluZm8uRW50cnkgZW50cnkgPSAoR2VuZXJhdGVkRmlsZUluZm8uRW50cnkpIGRlcGxveW1lbnRGaWxlczEuZ2V0KGkpOwotCQkJCQkJZGVwbG95RmlsZXMuYWRkKGVudHJ5LmZpbGVOYW1lKTsKLQkJCQkJfQotCQkJCX0JCi0JCQkJamF2YUZpbGVzLnJlbW92ZUFsbChkZXBsb3lGaWxlcyk7Ci0JCQl9Ci0JCQkKLQkJCS8vIHVwZGF0ZSB0aGUgbmFtZTJwYWNrYWdlIG1hcCB3aXRoIGFjdHVhbCBwYWNrYWdlIHZhbHVlcyB1c2VkIGJ5IHRoZSBlbWl0dGVyCi0JCQkvLyBiZWNhdXNlIGVtaXR0ZXIgd2lsbCBwcmVmaXggaWxsZWdhbCBwYWNrYWdlIG5hbWVzIHdpdGggIl8iLiAgU2VlIGJ1ZwotCQkJLy8gaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTIzNTY0OAotCQkJaWYgKCFqYXZhV1NETFBhcmFtLmlzTWV0YUluZk9ubHkoKSAmJiBqYXZhV1NETFBhcmFtLmdldE1hcHBpbmdzKCkgIT0gbnVsbCkgewotCQkJCQotCQkJCU1hcCBwa2cyTnNNYXAgPSB3c2RsMkphdmEuZ2V0TmFtZXNwYWNlcygpLmdldFBrZzJOYW1lc3BhY2VzTWFwKCk7Ci0JCQkJCi0JCQkJSXRlcmF0b3IgaXRlciA9IHBrZzJOc01hcC5lbnRyeVNldCgpLml0ZXJhdG9yKCk7Ci0JCQkJd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7Ci0JCQkJCQotCQkJCQlNYXAuRW50cnkgZW50cnkgPSAoTWFwLkVudHJ5KSBpdGVyLm5leHQoKTsKLQkJCQkJCi0JCQkJCVN0cmluZyBwa2cgPSAoU3RyaW5nKSBlbnRyeS5nZXRLZXkoKTsKLQkJCQkJTGlzdCBuc0xpc3QgPSAoTGlzdCkgZW50cnkuZ2V0VmFsdWUoKTsKLQkJCQkJCi0JCQkJCUl0ZXJhdG9yIGl0ZXIyID0gbnNMaXN0Lml0ZXJhdG9yKCk7Ci0JCQkJCXdoaWxlIChpdGVyMi5oYXNOZXh0KCkpIHsKLQkJCQkJCVN0cmluZyBucyA9IChTdHJpbmcpIGl0ZXIyLm5leHQoKTsKLQkJCQkJCWlmIChqYXZhV1NETFBhcmFtLmdldE1hcHBpbmdzKCkuY29udGFpbnNLZXkobnMpKQotCQkJCQkJCWphdmFXU0RMUGFyYW0uZ2V0TWFwcGluZ3MoKS5wdXQobnMsIHBrZyk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCQkKLQkJCXN0YXR1cyA9IG1vdmVHZW5lcmF0ZWRGaWxlcyhlbnZpcm9ubWVudCwgbW9uaXRvcik7Ci0JCQkKLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCWVudkxvZy5sb2coSUxvZy5FUlJPUiwgNTAyMSwgdGhpcywgImV4ZWN1dGUiLCBlKTsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKAotCQkJCQlBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuTVNHX0VSUk9SX1dTRExfSkFWQV9HRU5FUkFURSArICIgIiAvLyROT04tTkxTLTEkCi0JCQkJCSsgZS50b1N0cmluZygpLCBlKTsKLQkJCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQl9IGZpbmFsbHkgewotCQkJZGVsZXRlRGlyKHRlbXBPdXRwdXRGaWxlKTsgCQkJCi0JCX0KLQkJcmV0dXJuIHN0YXR1czsJCi0JfQotCSAgCi0JcHVibGljIElTdGF0dXMgbW92ZUdlbmVyYXRlZEZpbGVzKCBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApIAotCXsKLQkJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotCQlJU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyID0gZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpOwkJCi0JCUZpbGVJbnB1dFN0cmVhbSBmaW5TdHJlYW0gPSBudWxsOwotCQkKLQkJdHJ5IHsKLQkJCVN0cmluZyBvdXRwdXREaXIsIGphdmFPdXRwdXQ7Ci0JCQlvdXRwdXREaXIgPSByZW1vdmVGaWxlUHJvdG9jb2woamF2YVdTRExQYXJhbS5nZXRPdXRwdXQoKSk7Ci0JCQlqYXZhT3V0cHV0ID0gcmVtb3ZlRmlsZVByb3RvY29sKGphdmFXU0RMUGFyYW0uZ2V0SmF2YU91dHB1dCgpKTsKLQkJCQotCQkJUmVzb3VyY2VDb250ZXh0IGNvbnRleHQgICAgPSAoKEJhc2VFY2xpcHNlRW52aXJvbm1lbnQpZW52aXJvbm1lbnQpLmdldFJlc291cmNlQ29udGV4dCgpOwkJCQkKLQkJCUlQYXRoICAgICAgICAgICBvdXRwdXRQYXRoID0gbmV3IFBhdGggKG91dHB1dERpcik7Ci0JCQkKLQkJCVN0cmluZyBmaWxlTmFtZTsKLQkJCUlQYXRoIHRhcmdldFBhdGg9bnVsbDsKLQotCQkJU3RyaW5nIGRlcGxveUZpbGU7Ci0JCQlJdGVyYXRvciBpdGVyYXRvcjsKLQkJCQotCQkJU3RyaW5nIHRlbXBPdXRwdXREaXIgPSB0ZW1wT3V0cHV0RmlsZS50b1N0cmluZygpOwotCQkJU3RyaW5nIFtdIG1vdmVkRGVwbG95RmlsZXMgPSBuZXcgU3RyaW5nIFtkZXBsb3lGaWxlcy5zaXplKCldOwotCQkJaXRlcmF0b3IgPSBkZXBsb3lGaWxlcy5pdGVyYXRvcigpOwotCQkJaW50IGkgPSAwOwotCQkJd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkgewotCQkJCWRlcGxveUZpbGUgPSAoU3RyaW5nKSBpdGVyYXRvci5uZXh0KCk7Ci0JCQkJRmlsZSBzb3VyY2UgPSBuZXcgRmlsZShkZXBsb3lGaWxlKTsKLQkJCQlmaW5TdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKHNvdXJjZSk7Ci0JCQkJaWYgKGZpblN0cmVhbSAhPSBudWxsKSB7Ci0JCQkJCWlmIChkZXBsb3lGaWxlLnN0YXJ0c1dpdGgodGVtcE91dHB1dERpcikpIHsKLQkJCQkJCWZpbGVOYW1lID0gZGVwbG95RmlsZS5zdWJzdHJpbmcodGVtcE91dHB1dERpci5sZW5ndGgoKSk7Ci0JCQkJCQl0YXJnZXRQYXRoID0gb3V0cHV0UGF0aC5hcHBlbmQoZmlsZU5hbWUpLm1ha2VBYnNvbHV0ZSgpOyAgCi0JCQkJCQlGaWxlUmVzb3VyY2VVdGlscy5jcmVhdGVGaWxlQXRMb2NhdGlvbihjb250ZXh0LCAgCi0JCQkJCQkJCXRhcmdldFBhdGgsCi0JCQkJCQkJCWZpblN0cmVhbSwKLQkJCQkJCQkJbW9uaXRvciwKLQkJCQkJCQkJc3RhdHVzSGFuZGxlcik7Ci0JCQkJCQltb3ZlZERlcGxveUZpbGVzW2krK109IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZpbGVGb3JMb2NhdGlvbih0YXJnZXRQYXRoKS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JCQkJCX0KLQkJCQkJZmluU3RyZWFtLmNsb3NlKCk7Ci0JCQkJfQotCQkJfQotCQkJCi0JCQlqYXZhV1NETFBhcmFtLnNldERlcGxveW1lbnRGaWxlcyhtb3ZlZERlcGxveUZpbGVzKTsKLQkJCQotCQkJSVBhdGggamF2YU91dHB1dFBhdGggPSBuZXcgUGF0aCAoamF2YU91dHB1dCk7Ci0JCQkKLQkJCVN0cmluZyBqYXZhRmlsZTsKLQkJCVN0cmluZyBmdWxsQ2xhc3NOYW1lID0gbnVsbDsKLQkJCVZlY3RvciBtb3ZlZEphdmFGaWxlcyA9ICBuZXcgVmVjdG9yKCk7OwotCQkJaXRlcmF0b3IgPSBqYXZhRmlsZXMuaXRlcmF0b3IoKTsKLQkJCWkgPSAwOwotCQkJd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkgewotCQkJCWphdmFGaWxlID0gKFN0cmluZykgaXRlcmF0b3IubmV4dCgpOwotCQkJCUZpbGUgc291cmNlID0gbmV3IEZpbGUoamF2YUZpbGUpOwotCQkJCWZpblN0cmVhbSA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oc291cmNlKTsKLQkJCQlpZiAoZmluU3RyZWFtICE9IG51bGwpIHsKLQkJCQkJLy8gZm9yIHRoZSBjYXNlIEphdmEyV1NETC1XU0RMMkphdmEsIG5vIG5lZWQgdG8gbW92ZSBKYXZhIGZpbGVzLCBqdXN0IGRlbGV0ZSB0aGVtCi0JCQkJCWlmICghamF2YVdTRExQYXJhbS5pc01ldGFJbmZPbmx5KCkpIHsKLQkJCQkJCS8vIGZvciB0aGUgY2FzZSBXU0RMMkphdmEsIG1vdmUgSmF2YSBmaWxlcyB0byBKYXZhIG91dHB1dCBkaXJlY3RvcnkKLQkJCQkJCWlmIChqYXZhRmlsZS5zdGFydHNXaXRoKHRlbXBPdXRwdXREaXIpKSB7Ci0JCQkJCQkJZnVsbENsYXNzTmFtZSA9IGphdmFGaWxlLnN1YnN0cmluZyh0ZW1wT3V0cHV0RGlyLmxlbmd0aCgpKTsKLQkJCQkJCQl0YXJnZXRQYXRoID0gamF2YU91dHB1dFBhdGguYXBwZW5kKGZ1bGxDbGFzc05hbWUpLm1ha2VBYnNvbHV0ZSgpOyAKLQkJCQkJCQlJRmlsZSBmaWxlID0gRmlsZVJlc291cmNlVXRpbHMuY3JlYXRlRmlsZUF0TG9jYXRpb24oY29udGV4dCwgIAotCQkJCQkJCQkJdGFyZ2V0UGF0aCwKLQkJCQkJCQkJCWZpblN0cmVhbSwKLQkJCQkJCQkJCW1vbml0b3IsCi0JCQkJCQkJCQlzdGF0dXNIYW5kbGVyKTsKLQkJCQkJCQkKLQkJCQkJCQlpZiggZmlsZSAhPSBudWxsICkKLQkJCQkJCQl7Ci0JCQkJCQkJICBmaWxlLnNldENoYXJzZXQoIlVURi04IiwgbW9uaXRvcik7Ci0JCQkJCQkJICBtb3ZlZEphdmFGaWxlcy5hZGQoIFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZpbGVGb3JMb2NhdGlvbih0YXJnZXRQYXRoKS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCkgKTsKLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQkJCi0JCQkJCWZpblN0cmVhbS5jbG9zZSgpOwotCQkJCX0KLQkJCX0KLQkJCWphdmFXU0RMUGFyYW0uc2V0SmF2YUZpbGVzKCAoU3RyaW5nW10pbW92ZWRKYXZhRmlsZXMudG9BcnJheSggbmV3IFN0cmluZ1swXSApICk7Ci0JCQkKLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfTU9WRV9SRVNPVVJDRSxuZXcgU3RyaW5nW117ZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCl9KSwgZSk7Ci0JCQlzdGF0dXNIYW5kbGVyLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQkKLQkJfSBmaW5hbGx5IHsKLQkJCWlmIChmaW5TdHJlYW0gIT0gbnVsbCkgewotCQkJCXRyeSB7Ci0JCQkJCWZpblN0cmVhbS5jbG9zZSgpOwotCQkJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKLQkJCQl9Ci0JCQl9CQkJCi0JCX0KLQkJCi0JCXJldHVybiBzdGF0dXM7Ci0JfQotCi0JLyoqCi0JICogRGVsZXRlcyBhbGwgZmlsZXMgYW5kIHN1YmRpcmVjdG9yaWVzIHVuZGVyIGRpci4gCi0JICogSnVzdCBpZ25vcmUgYW5kIGtlZXAgZ29pbmcgaWYgZGVsZXRlIGlzIG5vdCBzdWNjZXNzZnVsCi0JICogCi0JICogQHBhcmFtIGRpciBkaXJlY3RvcnkgdG8gZGVsZXRlCi0JICovCi0JcHVibGljIHZvaWQgZGVsZXRlRGlyKEZpbGUgZGlyKSB7Ci0JCWlmIChkaXIuaXNEaXJlY3RvcnkoKSkgewotCQkJU3RyaW5nW10gY2hpbGRyZW4gPSBkaXIubGlzdCgpOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgewotCQkJCWRlbGV0ZURpcihuZXcgRmlsZShkaXIsIGNoaWxkcmVuW2ldKSk7Ci0JCQl9Ci0JCX0KLQkJLy8gVGhlIGRpcmVjdG9yeSBpcyBub3cgZW1wdHkgc28gZGVsZXRlIGl0Ci0JCWRpci5kZWxldGUoKTsKLQl9Ci0JCi0JLyoqCi0JICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdW5kZXIgdGhlIHBsdWdpbidzIHN0YXRlIGxvY2F0aW9uIChpLmUuCi0JICogLm1ldGFkYXRhLy5wbHVnaW4gZGlyZWN0b3J5KQotCSAqIAotCSAqIEByZXR1cm4gRmlsZQotCSAqLwotCXByaXZhdGUgRmlsZSBjcmVhdGVUZW1wRGlyKCkgewotCQlTdHJpbmcgcGx1Z2luVGVtcERpciA9IFdlYlNlcnZpY2VBeGlzQ29uc3VtcHRpb25Db3JlUGx1Z2luCi0JCS5nZXRJbnN0YW5jZSgpLmdldFN0YXRlTG9jYXRpb24oKS50b1N0cmluZygpOwotCQlGaWxlIHRlbXBEaXIgPSBuZXcgRmlsZShwbHVnaW5UZW1wRGlyKTsKLQkJRmlsZSBuZXdUZW1wRGlyID0gbnVsbDsKLQkJdHJ5IHsKLQkJCW5ld1RlbXBEaXIgPSBGaWxlLmNyZWF0ZVRlbXBGaWxlKFRFTVAsICIiLCB0ZW1wRGlyKTsKLQkJCS8vIGRlbGV0ZSB0aGUgdGVtcCBmaWxlIGFuZCBjcmVhdGUgYSB0ZW1wIGRpcmVjdG9yeSBpbnN0ZWFkCi0JCQlpZiAobmV3VGVtcERpci5kZWxldGUoKSkgewotCQkJCWlmIChuZXdUZW1wRGlyLm1rZGlyKCkpIHsKLQkJCQkJdGVtcERpciA9IG5ld1RlbXBEaXI7Ci0JCQkJfQotCQkJfQotCQkJcmV0dXJuIHRlbXBEaXI7Ci0JCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQlyZXR1cm4gdGVtcERpcjsKLQkJfQotCX0KLQkJCi0JLyoKLQkgKiBIYWNrOiBBeGlzIGRvZXNuJ3QgbGlrZSBmaWxlIFVSTHMKLQkgKi8KLQlwcml2YXRlIFN0cmluZyByZW1vdmVGaWxlUHJvdG9jb2woU3RyaW5nIHMpIHsKLQkJaWYgKHMuc3RhcnRzV2l0aCgiZmlsZToiKSkgewotCQkJU3RyaW5nIG5ld1MgPSBzLnN1YnN0cmluZyg1LCBzLmxlbmd0aCgpKTsKLQkJCWludCBpID0gbmV3Uy5pbmRleE9mKCc6Jyk7Ci0JCQlpZiAoaSAhPSAtMSkgewotCQkJCVN0cmluZyBwcm90b2NvbCA9IG5ld1Muc3Vic3RyaW5nKDAsIGkpOwotCQkJCWludCBqID0gcHJvdG9jb2wuaW5kZXhPZignLycpOwotCQkJCWludCBrID0gcHJvdG9jb2wuaW5kZXhPZignXFwnKTsKLQkJCQlpbnQgbWF4ID0gTWF0aC5tYXgoaiwgayk7Ci0JCQkJaWYgKG1heCAhPSAtMSkKLQkJCQkJbmV3UyA9IG5ld1Muc3Vic3RyaW5nKG1heCArIDEsIG5ld1MubGVuZ3RoKCkpOwotCQkJfQotCQkJcmV0dXJuIG5ld1M7Ci0JCX0KLQkJcmV0dXJuIHM7Ci0JfQotCi0JcHVibGljIFN0YXR1cyB1bmRvKElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQlwdWJsaWMgU3RhdHVzIHJlZG8oSUVudmlyb25tZW50IGVudmlyb25tZW50KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldEphdmFXU0RMUGFyYW0oSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbSkgewotCQl0aGlzLmphdmFXU0RMUGFyYW0gPSBqYXZhV1NETFBhcmFtOwotCX0KLQotCXB1YmxpYyBKYXZhV1NETFBhcmFtZXRlciBnZXRKYXZhV1NETFBhcmFtKCkgewotCQlyZXR1cm4gamF2YVdTRExQYXJhbTsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gaHR0cEJhc2ljQXV0aFBhc3N3b3JkCi0JICogICAgICAgICAgICBUaGUgaHR0cEJhc2ljQXV0aFBhc3N3b3JkIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRIdHRwQmFzaWNBdXRoUGFzc3dvcmQoU3RyaW5nIGh0dHBCYXNpY0F1dGhQYXNzd29yZCkgewotCQl0aGlzLmh0dHBCYXNpY0F1dGhQYXNzd29yZCA9IGh0dHBCYXNpY0F1dGhQYXNzd29yZDsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gaHR0cEJhc2ljQXV0aFVzZXJuYW1lCi0JICogICAgICAgICAgICBUaGUgaHR0cEJhc2ljQXV0aFVzZXJuYW1lIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRIdHRwQmFzaWNBdXRoVXNlcm5hbWUoU3RyaW5nIGh0dHBCYXNpY0F1dGhVc2VybmFtZSkgewotCQl0aGlzLmh0dHBCYXNpY0F1dGhVc2VybmFtZSA9IGh0dHBCYXNpY0F1dGhVc2VybmFtZTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRXc2RsVVJJKFN0cmluZyB3c2RsVVJJKSB7Ci0JCXRoaXMud3NkbFVSSSA9IHdzZGxVUkk7Ci0JfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29tbW9uL0phdmFXU0RMUGFyYW1Nb2RpZmllci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2NvbW1vbi9KYXZhV1NETFBhcmFtTW9kaWZpZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFmYzQzOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29tbW9uL0phdmFXU0RMUGFyYW1Nb2RpZmllci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMiAgIDE3NzAwNSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb247Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7Ci1pbXBvcnQgamF2YS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuQmVhbk1vZGlmaWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uaW50ZXJuYWwuZW52aXJvbm1lbnQuZWNsaXBzZS5GaWxlUmVzb3VyY2VVdGlsczsKLQotcHVibGljIGNsYXNzIEphdmFXU0RMUGFyYW1Nb2RpZmllciBpbXBsZW1lbnRzIEJlYW5Nb2RpZmllciB7Ci0KLQlwdWJsaWMgdm9pZCBtb2RpZnkoT2JqZWN0IGJlYW4sIE9iamVjdCBwcm9wZXJ0eUhvbGRlcikKLQl7Ci0JCUphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW07Ci0JCWlmIChiZWFuICE9IG51bGwpCi0JCXsKLQkJCWphdmFXU0RMUGFyYW0gPSAoSmF2YVdTRExQYXJhbWV0ZXIpYmVhbjsJCi0JCX0KLQkJZWxzZQotCQl7Ci0JCQlqYXZhV1NETFBhcmFtID0gbmV3IEphdmFXU0RMUGFyYW1ldGVyKCk7Ci0JCX0KLQkJIAotCQkvL2xvb2sgZm9yIGVhY2gga25vd24ga2V5IGluIHRoZSBtYXAgJiBpZiB0aGVyZSwgY29udmVydCB0aGUgcHJvcGVydGllcyBhbmQgc2V0IG9uIGphdmFXU0RMUGFyYW0KLQkJaWYgKHByb3BlcnR5SG9sZGVyIGluc3RhbmNlb2YgTWFwKQotCQl7CQotCQkJTWFwIHByb3BlcnR5TWFwID0gKE1hcClwcm9wZXJ0eUhvbGRlcjsKLQkJCQotCQkJaWYgKHByb3BlcnR5TWFwLmNvbnRhaW5zS2V5KCJVc2UiKSkKLQkJCXsJCQkJCi0JCQkgICBqYXZhV1NETFBhcmFtLnNldFVzZSgoU3RyaW5nKXByb3BlcnR5TWFwLmdldCgiVXNlIikpOwkKLQkJCX0KLQkJCWlmIChwcm9wZXJ0eU1hcC5jb250YWluc0tleSgiU3R5bGUiKSkKLQkJCXsKLQkJCQlqYXZhV1NETFBhcmFtLnNldFN0eWxlKChTdHJpbmcpcHJvcGVydHlNYXAuZ2V0KCJTdHlsZSIpKTsKLQkJCX0KLQkJCWlmIChwcm9wZXJ0eU1hcC5jb250YWluc0tleSgiSmF2YU91dHB1dCIpKQotCQkJewkJCQkgCi0gICAgICAgIFN0cmluZyBvdXRwdXRMb2NhdGlvbiA9IChTdHJpbmcpcHJvcGVydHlNYXAuZ2V0KCJKYXZhT3V0cHV0Iik7Ci0gICAgICAgIGludCAgICBpbmRleCAgICAgICAgICA9IG91dHB1dExvY2F0aW9uLmluZGV4T2YoICc6JyApOwotICAgICAgICAKLSAgICAgICAgaWYoIGluZGV4ID09IC0xICkKLSAgICAgICAgewotICAgICAgICAgIC8vIEEgY29sb24gd2FzIG5vdCBmb3VuZCBpbiB0aGUgc3RyaW5nIHNvIHdlIHdpbGwgYXNzdW1lIHRoYXQKLSAgICAgICAgICAvLyBpdCBpcyBhIHdvcmtzcGFjZSByZWxhdGl2ZSB1cmkgZm9yIG5vdy4KLSAgICAgICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBGaWxlUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UoIG5ldyBQYXRoKCBvdXRwdXRMb2NhdGlvbiApICk7Ci0gICAgICAgICAgCi0gICAgICAgICAgaWYoIHJlc291cmNlID09IG51bGwgfHwgcmVzb3VyY2UuZ2V0TG9jYXRpb24oKSA9PSBudWxsICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCBBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuYmluZCggQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzLk1TR19FUlJPUl9GT0xERVJfTk9UX0ZPVU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dExvY2F0aW9uICkgKTsgCi0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIG91dHB1dExvY2F0aW9uID0gcmVzb3VyY2UuZ2V0TG9jYXRpb24oKS50b1N0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIAotCQkJCWphdmFXU0RMUGFyYW0uc2V0SmF2YU91dHB1dCggb3V0cHV0TG9jYXRpb24gKTsKLQkJCX0KLQkJCWlmIChwcm9wZXJ0eU1hcC5jb250YWluc0tleSgiTWV0aG9kcyIpKQotCQkJewotCQkJCS8vZ2V0IE1ldGhvZCBsaXN0IGZyb20gdGhlIG1hcAotCQkJCVN0cmluZyBtZXRob2RMaXN0ID0gKFN0cmluZylwcm9wZXJ0eU1hcC5nZXQoIk1ldGhvZHMiKTsKLQkJCQkKLQkJCQkvL3Rva2VuaXplIHRoZSBtZXRob2QgbGlzdAotCQkJCVN0cmluZ1Rva2VuaXplciB0b2sgPSBuZXcgU3RyaW5nVG9rZW5pemVyKG1ldGhvZExpc3QsICIgIik7Ci0JCQkJSGFzaHRhYmxlIG1ldGhvZHMgPSBuZXcgSGFzaHRhYmxlKCk7Ci0JCQkJd2hpbGUgKHRvay5oYXNNb3JlVG9rZW5zKCkpCi0JCQkJewotICAgICAgICAgIFN0cmluZyBtZXRob2QgPSAoU3RyaW5nKXRvay5uZXh0VG9rZW4oKTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZiggbWV0aG9kLmluZGV4T2YoICcoJyApID09IC0xICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBtZXRob2QgPSBtZXRob2QgKyAiKCkiOwotICAgICAgICAgIH0KLSAgICAgICAgICAKLQkJCQkJbWV0aG9kcy5wdXQoIG1ldGhvZCwgbmV3IEJvb2xlYW4odHJ1ZSkpOwotCQkJCX0JCQkJCi0JCQkJamF2YVdTRExQYXJhbS5zZXRNZXRob2RzKG1ldGhvZHMpOwotCQkJfQotCQkJaWYgKHByb3BlcnR5TWFwLmNvbnRhaW5zS2V5KCJNYXBwaW5ncyIpKQotCQkJewotCQkJCS8vZ2V0IG5hbWUgb2YgdGhlIGZpbGUgdGhhdCBoYXMgdGhlIG1hcHBpbmdzIGluIGl0IGZyb20gdGhlIG1hcAotCQkJCVN0cmluZyBmaWxlbmFtZSA9IChTdHJpbmcpcHJvcGVydHlNYXAuZ2V0KCJNYXBwaW5ncyIpOwotICAgICAgICAKLQkJCQkvL2dldCB0aGUgbGlzdCBvZiBtYXBwaW5nIGZyb20gdGhlIGZpbGUKLQkJCQlIYXNoTWFwIG1hcHBpbmdzID0gcmVhZE1hcHBpbmdzRnJvbUZpbGUoZmlsZW5hbWUpOwotICAgICAgICAKLQkJCQlqYXZhV1NETFBhcmFtLnNldE1hcHBpbmdzKG1hcHBpbmdzKTsKLSAgICAgICAgCi0gICAgICAgIFN0cmluZyBiZWFuTmFtZSA9IGphdmFXU0RMUGFyYW0uZ2V0QmVhbk5hbWUoKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCBiZWFuTmFtZSAhPSBudWxsICYmICFiZWFuTmFtZS5lcXVhbHMoIiIpICkKLSAgICAgICAgewotICAgICAgICAgIGludCAgICBsYXN0RG90ICAgICA9IGJlYW5OYW1lLmxhc3RJbmRleE9mKCAnLicgKTsKLSAgICAgICAgICBTdHJpbmcgcGFja2FnZU5hbWUgPSBsYXN0RG90ID09IC0xID8gbnVsbCA6IGJlYW5OYW1lLnN1YnN0cmluZyggMCwgbGFzdERvdCApOwotICAgICAgICAgIAotICAgICAgICAgIGlmKCBtYXBwaW5ncyAhPSBudWxsICYmIHBhY2thZ2VOYW1lICE9IG51bGwgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyB0bnMgPSAoU3RyaW5nKW1hcHBpbmdzLmdldCggcGFja2FnZU5hbWUgKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYoIHRucyAhPSBudWxsICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgamF2YVdTRExQYXJhbS5zZXROYW1lc3BhY2UodG5zKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9ICAgCi0gICAgICAgIH0KLQkJCX0KLQkJfQotCX0KLQkKLQlwcml2YXRlIEhhc2hNYXAgcmVhZE1hcHBpbmdzRnJvbUZpbGUoU3RyaW5nIGZpbGVuYW1lKQotCSAgewotCQlIYXNoTWFwIGhhc2htYXAgPSBuZXcgSGFzaE1hcCgpOwotCQlJRmlsZSByZXNvdXJjZSA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0RmlsZShuZXcgUGF0aChmaWxlbmFtZSkpOwotCQkKLQkJaWYgKHJlc291cmNlICE9IG51bGwgKQotCQl7Ci0JCSAgdHJ5Ci0JCSAgewotCQkJUHJvcGVydGllcyBwcm9wcyA9IG5ldyBQcm9wZXJ0aWVzKCk7Ci0JCQlwcm9wcy5sb2FkKHJlc291cmNlLmdldENvbnRlbnRzKCkpOwkJCQotCQkJaGFzaG1hcC5wdXRBbGwocHJvcHMpOwkJCQkJCQotCQkgIH0KLQkJICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0JCSAgewotCQkgICAgLy8gVE9ETyBSZXBvcnQgc29tZSBlcnJvciBoZXJlLgotCQkgIH0KLQkJfQkKLQkJcmV0dXJuIGhhc2htYXA7Ci0JICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29tbW9uL0phdmFXU0RMUGFyYW1ldGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29tbW9uL0phdmFXU0RMUGFyYW1ldGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZmExZjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2NvbW1vbi9KYXZhV1NETFBhcmFtZXRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDcyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMzMCAgIDEyNDY2NyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci0KLQotcHVibGljIGNsYXNzIEphdmFXU0RMUGFyYW1ldGVyIHsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBTRVJWRVJfU0lERV9OT05FID0gMDsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgU0VSVkVSX1NJREVfQkVBTiA9IDE7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIFNFUlZFUl9TSURFX0VKQiA9IDI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVFlMRV9SUEMgPSAiUlBDIjsgLy8kTk9OLU5MUy0xJAotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNUWUxFX0RPQ1VNRU5UID0gIkRPQ1VNRU5UIjsgLy8kTk9OLU5MUy0xJAotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNUWUxFX1dSQVBQRUQgPSAiV1JBUFBFRCI7IC8vJE5PTi1OTFMtMSQKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVTRV9MSVRFUkFMID0gIkxJVEVSQUwiOyAvLyROT04tTkxTLTEkCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVNFX0VOQ09ERUQgPSAiRU5DT0RFRCI7IC8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgU3RyaW5nIGJlYW5OYW1lID0gbnVsbDsgLy8gVGhlIG5hbWUgb2YgdGhlIEphdmEgYmVhbgotCXByaXZhdGUgU3RyaW5nIGNsYXNzcGF0aCA9IG51bGw7Ci0JLy8gVGhlIGNsYXNzIHBhdGggZm9yIGxvYWRpbmcgdGhlIGJlYW4gYW5kIGNvbW1hbmQgZXhlY3V0aW9uCi0JcHJpdmF0ZSBTdHJpbmcgYmVhblBhY2thZ2UgPSBudWxsOyAvLyBUaGUgcGFja2FnZSBsb2NhdGlvbiBvZiB0aGUgYmVhbgotCXByaXZhdGUgU3RyaW5nIHBvcnRUeXBlTmFtZSA9IG51bGw7IC8vIFRoZSBuYW1lIG9mIHRoZSBwb3J0IHR5cGUgZWxlbWVudAotCXByaXZhdGUgU3RyaW5nIHNlcnZpY2VOYW1lID0gbnVsbDsgLy8gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgZWxlbWVudAotCXByaXZhdGUgU3RyaW5nIG91dHB1dFdzZGxMb2NhdGlvbiA9IG51bGw7Ci0JLy8gVGhlIG91dHB1dCBsb2NhdGlvbiBvZiB0aGUgV1NETCBmaWxlCi0JcHJpdmF0ZSBTdHJpbmcgaW5wdXRXc2RsTG9jYXRpb24gPSBudWxsOwotCS8vIFRoZSBpbnB1dCBsb2NhdGlvbiBvZiB0aGUgV1NETCBmaWxlCi0JcHJpdmF0ZSBTdHJpbmcgdXJsTG9jYXRpb24gPSBudWxsOyAvLyBUaGUgVVJMIGxvY2F0aW9uIG9mIHRoZSB3ZWIgc2VydmljZQotCXByaXZhdGUgSGFzaHRhYmxlIG1ldGhvZHMgPSBudWxsOyAvLyBUaGUgYXJyYXkgb2YgbWV0aG9kIG5hbWVzCi0JcHJpdmF0ZSBTdHJpbmcgbWV0aG9kU3RyaW5nXyA9ICIiOyAvLyROT04tTkxTLTEkCi0JIC8vVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWV0aG9kIGFycmF5Ci0JcHJpdmF0ZSBTdHJpbmcgc3R5bGUgPSBudWxsOwotCS8vIFRoZSBzdHlsZSAoUlBDIHwgRE9DVU1FTlQgfCBXUkFQUEVEKSBhdHRyaWJ1dGUgZm9yIHRoZSBnZW5lcmF0ZWQgV1NETAotCXByaXZhdGUgU3RyaW5nIHVzZSA9IG51bGw7Ci0JLy8gVGhlIHVzZSAoTElURVJBTCB8IEVOQ09ERUQpIGF0dHJpYnR1ZSBmb3IgdGhlIGdlbmVyYXRlZCBXU0RMCi0JcHJpdmF0ZSBTdHJpbmcgb3V0cHV0ID0gbnVsbDsKLQkvLyBUaGUgb3V0cHV0IGxvY2F0aW9uIGZvciBkZXBsb3ltZW50IGRlc2NyaXB0b3JzICYgSmF2YSBjb2RlIChvdXRwdXQgZnJvbSBXU0RMMkphdmEgY29tbWFuZCkKLQlwcml2YXRlIFN0cmluZyBqYXZhT3V0cHV0ID0gbnVsbDsKLQkvLyBUaGUgb3V0cHV0IGxvY2F0aW9uIGZvciBKYXZhIGNvZGUgKG91dHB1dCBmcm9tIFdTREwySmF2YSBjb21tYW5kKQotCXByaXZhdGUgYm9vbGVhbiBtZXRhSW5mT25seSA9IGZhbHNlOyAvLyBNRVRBLUlORi1PTkxZIGZsYWcKLQlwcml2YXRlIGJ5dGUgc2VydmVyU2lkZSA9IFNFUlZFUl9TSURFX05PTkU7Ci0JLy8gc2VydmVyLXNpZGUgZmxhZyAoU0VSVkVSX1NJREVfTk9ORSB8IFNFUlZFUl9TSURFX0JFQU4gfCBTRVJWRVJfU0lERV9FSkIpCi0JcHJpdmF0ZSBTdHJpbmcgbmFtZXNwYWNlID0gbnVsbDsKLQlwcml2YXRlIGJvb2xlYW4gc2tlbGV0b25EZXBsb3kgPSB0cnVlOwotCXByaXZhdGUgU3RyaW5nIGNvbnRhaW5lciA9IG51bGw7Ci0JcHJpdmF0ZSBTdHJpbmdbXSBkZXBsb3ltZW50RmlsZXMgPSBudWxsOwotCXByaXZhdGUgU3RyaW5nW10gamF2YUZpbGVzID0gbnVsbDsKLQlwcml2YXRlIFN0cmluZyBwcm9qZWN0VVJMID0gbnVsbDsKLQlwcml2YXRlIGJvb2xlYW4gZ3Vlc3NQcm9qZWN0VVJMID0gZmFsc2U7Ci0JcHJpdmF0ZSBIYXNoTWFwIG1hcHBpbmdQYWlyczsKLQlwcml2YXRlIFN0cmluZyBodHRwVXNlcm5hbWVfID0gbnVsbDsKLQlwcml2YXRlIFN0cmluZyBodHRwUGFzc3dvcmRfID0gbnVsbDsKLQotCXB1YmxpYyB2b2lkIHNldENvbnRhaW5lcihTdHJpbmcgY29udGFpbmVyKSB7Ci0JCXRoaXMuY29udGFpbmVyID0gY29udGFpbmVyOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0Q29udGFpbmVyKCkgewotCQlyZXR1cm4gY29udGFpbmVyOwotCX0KLQotCS8qKgotCSAqIENvbnN0cnVjdG9yIGZvciBKYXZhV1NETFBhcmFtZXRlci4KLQkgKi8KLQlwdWJsaWMgSmF2YVdTRExQYXJhbWV0ZXIoKSB7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgYmVhbk5hbWUuCi0JICogQHJldHVybiBTdHJpbmcKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldEJlYW5OYW1lKCkgewotCQlyZXR1cm4gYmVhbk5hbWU7Ci0JfQotCi0JcHVibGljIFN0cmluZyBnZXRCZWFuUGFja2FnZSgpIHsKLQkJcmV0dXJuIGJlYW5QYWNrYWdlOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHBvcnRUeXBlTmFtZS4KLQkgKiBAcmV0dXJuIFN0cmluZwotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0UG9ydFR5cGVOYW1lKCkgewotCQlyZXR1cm4gcG9ydFR5cGVOYW1lOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHNlcnZpY2VOYW1lLgotCSAqIEByZXR1cm4gU3RyaW5nCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlTmFtZSgpIHsKLQkJcmV0dXJuIHNlcnZpY2VOYW1lOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG91dHB1dC4KLQkgKiBAcmV0dXJuIFN0cmluZwotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0T3V0cHV0KCkgewotCQlyZXR1cm4gb3V0cHV0OwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGhvZHMuCi0JICogQHJldHVybiBTdHJpbmdbXQotCSAqLwotCXB1YmxpYyBIYXNodGFibGUgZ2V0TWV0aG9kcygpIHsKLQkJcmV0dXJuIG1ldGhvZHM7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgY29tbWEgc2VwZXJhdGVkIHN0cmluZyByZXByZXNldGF0aW9uIG9mIHRoZSBtZXRob2RzLgotCSAqIEByZXR1cm4gU3RyaW5nCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRNZXRob2RTdHJpbmcoKSB7Ci0JCWlmIChtZXRob2RTdHJpbmdfLmVxdWFscygiIikpCi0JCXsJCQotCQkJRW51bWVyYXRpb24gZSA9IG1ldGhvZHMua2V5cygpOwotCSAJCWZvciAoaW50IGk9MDsgZS5oYXNNb3JlRWxlbWVudHMoKTsgaSsrKQotCSAgICAJewotCQotCQkJCVN0cmluZyBzaWduYXR1cmUgPSAoU3RyaW5nKSBlLm5leHRFbGVtZW50KCk7Ci0JCQkJaWYgKCgoQm9vbGVhbikgbWV0aG9kcy5nZXQoc2lnbmF0dXJlKSkuYm9vbGVhblZhbHVlKCkpewotCQkJCQkJCQlpbnQgaW5kZXggPSBzaWduYXR1cmUuaW5kZXhPZignKCcpOwotCQkJCQkJCQlTdHJpbmcgbmFtZSA9IHNpZ25hdHVyZS5zdWJzdHJpbmcoMCwgaW5kZXgpOwotCQkJCQkJCQltZXRob2RTdHJpbmdfICs9IG5hbWU7Ci0JCQkJfQotCQkgICAgCWlmIChpICE9IG1ldGhvZHMuc2l6ZSgpIC0xKSAvLyB0aGlzIGlzIG5vdCB0aGUgbGFzdCBhcnJheSBpdGVtCQotCQkJCXsKLQkJCQkJbWV0aG9kU3RyaW5nXyArPSAiLCI7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiBtZXRob2RTdHJpbmdfOwotCX0KLQkKLQkvKioKLQkgKiBTZXRzIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZiBtZXRob2RzCSAqCi0JICovCi0JcHVibGljIHZvaWQgc2V0TWV0aG9kU3RyaW5nKFN0cmluZyBtZXRob2RzKQotCXsKLQkJbWV0aG9kU3RyaW5nXyA9IG1ldGhvZHM7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc3R5bGUgYXR0cmlidXRlLgotCSAqIEByZXR1cm4gU3RyaW5nCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRTdHlsZSgpIHsKLQkJcmV0dXJuIHN0eWxlOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHVybExvY2F0aW9uLgotCSAqIEByZXR1cm4gU3RyaW5nCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRVcmxMb2NhdGlvbigpIHsKLQkJcmV0dXJuIHVybExvY2F0aW9uOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHVzZSBhdHRyaWJ1dGUuCi0JICogQHJldHVybiBTdHJpbmcKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFVzZSgpIHsKLQkJcmV0dXJuIHVzZTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBvdXRwdXRXc2RsTG9jYXRpb24uCi0JICogQHJldHVybiBTdHJpbmcKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldE91dHB1dFdzZGxMb2NhdGlvbigpIHsKLQkJcmV0dXJuIG91dHB1dFdzZGxMb2NhdGlvbjsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBiZWFuTmFtZS4KLQkgKiBAcGFyYW0gYmVhbk5hbWUgVGhlIGJlYW5OYW1lIHRvIHNldAotCSAqLwotCXB1YmxpYyB2b2lkIHNldEJlYW5OYW1lKFN0cmluZyBiZWFuTmFtZSkgewotCQl0aGlzLmJlYW5OYW1lID0gYmVhbk5hbWU7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0QmVhblBhY2thZ2UoU3RyaW5nIGJlYW5QYWNrYWdlKSB7Ci0JCXRoaXMuYmVhblBhY2thZ2UgPSBiZWFuUGFja2FnZTsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBwb3J0VHlwZU5hbWUuCi0JICogQHBhcmFtIHBvcnRUeXBlTmFtZSBUaGUgcG9ydFR5cGVOYW1lIHRvIHNldAotCSAqLwotCXB1YmxpYyB2b2lkIHNldFBvcnRUeXBlTmFtZShTdHJpbmcgcG9ydFR5cGVOYW1lKSB7Ci0JCXRoaXMucG9ydFR5cGVOYW1lID0gcG9ydFR5cGVOYW1lOwotCX0KLQotCS8qKgotCSAqIFNldHMgdGhlIHNlcnZpY2VOYW1lLgotCSAqIEBwYXJhbSBzZXJ2aWNlTmFtZSBUaGUgc2VydmljZU5hbWUgdG8gc2V0Ci0JICovCi0JcHVibGljIHZvaWQgc2V0U2VydmljZU5hbWUoU3RyaW5nIHNlcnZpY2VOYW1lKSB7Ci0JCXRoaXMuc2VydmljZU5hbWUgPSBzZXJ2aWNlTmFtZTsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBvdXRwdXQuCi0JICogQHBhcmFtIG91dHB1dCBUaGUgb3V0cHV0IHRvIHNldAotCSAqLwotCXB1YmxpYyB2b2lkIHNldE91dHB1dChTdHJpbmcgb3V0cHV0KSB7Ci0JCXRoaXMub3V0cHV0ID0gb3V0cHV0OwotCX0KLQotCS8qKgotCSAqIFNldHMgdGhlIG1ldGhvZHMuCi0JICogQHBhcmFtIG1ldGhvZHMgVGhlIG1ldGhvZHMgdG8gc2V0Ci0JICovCi0JcHVibGljIHZvaWQgc2V0TWV0aG9kcyhIYXNodGFibGUgbWV0aG9kcykgewotCQl0aGlzLm1ldGhvZHMgPSBtZXRob2RzOwotCX0KLQotCS8qKgotCSAqIFNldHMgdGhlIHN0eWxlLgotCSAqIEBwYXJhbSBzdHlsZSBUaGUgc3R5bGUgdG8gc2V0Ci0JICovCi0JcHVibGljIHZvaWQgc2V0U3R5bGUoU3RyaW5nIHN0eWxlKSB7Ci0JCXRoaXMuc3R5bGUgPSBzdHlsZTsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB1cmxMb2NhdGlvbi4KLQkgKiBAcGFyYW0gdXJsTG9jYXRpb24gVGhlIHVybExvY2F0aW9uIHRvIHNldAotCSAqLwotCXB1YmxpYyB2b2lkIHNldFVybExvY2F0aW9uKFN0cmluZyB1cmxMb2NhdGlvbikgewotCQl0aGlzLnVybExvY2F0aW9uID0gdXJsTG9jYXRpb247Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgdXNlLgotCSAqIEBwYXJhbSB1c2UgVGhlIHVzZSB0byBzZXQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRVc2UoU3RyaW5nIHVzZSkgewotCQl0aGlzLnVzZSA9IHVzZTsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBvdXRwdXRXc2RsTG9jYXRpb24uCi0JICogQHBhcmFtIG91dHB1dFdzZGxMb2NhdGlvbiBUaGUgb3V0cHV0V3NkbExvY2F0aW9uIHRvIHNldAotCSAqLwotCXB1YmxpYyB2b2lkIHNldE91dHB1dFdzZGxMb2NhdGlvbihTdHJpbmcgd3NkbExvY2F0aW9uKSB7Ci0JCXRoaXMub3V0cHV0V3NkbExvY2F0aW9uID0gd3NkbExvY2F0aW9uOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGFJbmZPbmx5LgotCSAqIEByZXR1cm4gYm9vbGVhbgotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzTWV0YUluZk9ubHkoKSB7Ci0JCXJldHVybiBtZXRhSW5mT25seTsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBtZXRhSW5mT25seS4KLQkgKiBAcGFyYW0gbWV0YUluZk9ubHkgVGhlIG1ldGFJbmZPbmx5IHRvIHNldAotCSAqLwotCXB1YmxpYyB2b2lkIHNldE1ldGFJbmZPbmx5KGJvb2xlYW4gbWV0YUluZk9ubHkpIHsKLQkJdGhpcy5tZXRhSW5mT25seSA9IG1ldGFJbmZPbmx5OwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHNlcnZlclNpZGUuCi0JICogQHJldHVybiBieXRlCi0JICovCi0JcHVibGljIGJ5dGUgZ2V0U2VydmVyU2lkZSgpIHsKLQkJcmV0dXJuIHNlcnZlclNpZGU7Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgc2VydmVyU2lkZS4KLQkgKiBAcGFyYW0gc2VydmVyU2lkZSBUaGUgc2VydmVyU2lkZSB0byBzZXQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJTaWRlKGJ5dGUgc2VydmVyU2lkZSkgewotCQl0aGlzLnNlcnZlclNpZGUgPSBzZXJ2ZXJTaWRlOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGlucHV0V3NkbExvY2F0aW9uLgotCSAqIEByZXR1cm4gU3RyaW5nCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRJbnB1dFdzZGxMb2NhdGlvbigpIHsKLQkJcmV0dXJuIGlucHV0V3NkbExvY2F0aW9uOwotCX0KLQotCS8qKgotCSAqIFNldHMgdGhlIGlucHV0V3NkbExvY2F0aW9uLgotCSAqIEBwYXJhbSBpbnB1dFdzZGxMb2NhdGlvbiBUaGUgaW5wdXRXc2RsTG9jYXRpb24gdG8gc2V0Ci0JICovCi0JcHVibGljIHZvaWQgc2V0SW5wdXRXc2RsTG9jYXRpb24oU3RyaW5nIGlucHV0V3NkbExvY2F0aW9uKSB7Ci0JCXRoaXMuaW5wdXRXc2RsTG9jYXRpb24gPSBpbnB1dFdzZGxMb2NhdGlvbjsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBuYW1lc3BhY2UuCi0JICogQHJldHVybiBTdHJpbmcKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldE5hbWVzcGFjZSgpIHsKLQkJcmV0dXJuIG5hbWVzcGFjZTsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBuYW1lc3BhY2UuCi0JICogQHBhcmFtIG5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIHRvIHNldAotCSAqLwotCXB1YmxpYyB2b2lkIHNldE5hbWVzcGFjZShTdHJpbmcgbmFtZXNwYWNlKSB7Ci0JCXRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIEphdmEgb3V0cHV0LgotCSAqIEByZXR1cm4gU3RyaW5nCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRKYXZhT3V0cHV0KCkgewotCQlyZXR1cm4gamF2YU91dHB1dDsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBqYXZhT3V0cHV0LgotCSAqIEBwYXJhbSBqYXZhT3V0cHV0IFRoZSBKYXZhIG91dHB1dCB0byBzZXQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRKYXZhT3V0cHV0KFN0cmluZyBqYXZhT3V0cHV0KSB7Ci0JCXRoaXMuamF2YU91dHB1dCA9IGphdmFPdXRwdXQ7Ci0JfQotCi0JLyoqCi0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0Q2xhc3NwYXRoKCkgewotCQlyZXR1cm4gY2xhc3NwYXRoOwotCX0KLQotCS8qKgotCSAqIEBwYXJhbSBzdHJpbmcKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRDbGFzc3BhdGgoU3RyaW5nIHN0cmluZykgewotCQljbGFzc3BhdGggPSBzdHJpbmc7Ci0JfQotCi0JLyoqCi0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzU2tlbGV0b25EZXBsb3koKSB7Ci0JCXJldHVybiBza2VsZXRvbkRlcGxveTsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gYgotCSAqLwotCXB1YmxpYyB2b2lkIHNldFNrZWxldG9uRGVwbG95KGJvb2xlYW4gYikgewotCQlza2VsZXRvbkRlcGxveSA9IGI7Ci0JfQotCi0JLyoqCi0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBTdHJpbmdbXSBnZXREZXBsb3ltZW50RmlsZXMoKSB7Ci0JCXJldHVybiBkZXBsb3ltZW50RmlsZXM7Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIHN0cmluZ3MKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXREZXBsb3ltZW50RmlsZXMoU3RyaW5nW10gc3RyaW5ncykgewotCQlkZXBsb3ltZW50RmlsZXMgPSBzdHJpbmdzOwotCX0KLQotCS8qKgotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nW10gZ2V0SmF2YUZpbGVzKCkgewotCQlyZXR1cm4gamF2YUZpbGVzOwotCX0KLQotCS8qKgotCSAqIEBwYXJhbSBzdHJpbmdzCi0JICovCi0JcHVibGljIHZvaWQgc2V0SmF2YUZpbGVzKFN0cmluZ1tdIHN0cmluZ3MpIHsKLQkJamF2YUZpbGVzID0gc3RyaW5nczsKLQl9Ci0KLQkvKioKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRQcm9qZWN0VVJMKCkgewotCQlyZXR1cm4gcHJvamVjdFVSTDsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gc3RyaW5nCi0JICovCi0JcHVibGljIHZvaWQgc2V0UHJvamVjdFVSTChTdHJpbmcgc3RyaW5nKSB7Ci0JCXByb2plY3RVUkwgPSBzdHJpbmc7Ci0JfQotCQotCXB1YmxpYyBIYXNoTWFwIGdldE1hcHBpbmdzKCkKLQl7Ci0JCQlyZXR1cm4gbWFwcGluZ1BhaXJzOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldE1hcHBpbmdzKEhhc2hNYXAgbWFwKQotCXsKLQkJCW1hcHBpbmdQYWlycyA9IG1hcDsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdXNlciBuYW1lIGZvciBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uCi0JICogQHJldHVybiBTdHJpbmcKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldEhUVFBVc2VybmFtZSgpCi0JewotCSAgcmV0dXJuIGh0dHBVc2VybmFtZV87Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgdXNlciBuYW1lIGZvciBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uCi0JICogQHBhcmFtIFN0cmluZwotCSAqLwotCXB1YmxpYyB2b2lkIHNldEhUVFBVc2VybmFtZShTdHJpbmcgaHR0cFVzZXJuYW1lKQotCXsKLQkgIGh0dHBVc2VybmFtZV8gPSBodHRwVXNlcm5hbWU7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcGFzc3dvcmQgZm9yIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb24KLQkgKiBAcmV0dXJuIFN0cmluZwotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0SFRUUFBhc3N3b3JkKCkKLQl7Ci0JICByZXR1cm4gaHR0cFBhc3N3b3JkXzsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gc3RyaW5nCi0JICovCi0JcHVibGljIHZvaWQgc2V0SFRUUFBhc3N3b3JkKFN0cmluZyBodHRwUGFzc3dvcmQpIHsKLQkJaHR0cFBhc3N3b3JkXyA9IGh0dHBQYXNzd29yZDsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBpc0d1ZXNzUHJvamVjdFVSTCgpIHsKLQkJcmV0dXJuIGd1ZXNzUHJvamVjdFVSTDsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRHdWVzc1Byb2plY3RVUkwoYm9vbGVhbiBndWVzc1Byb2plY3RVUkwpIHsKLQkJdGhpcy5ndWVzc1Byb2plY3RVUkwgPSBndWVzc1Byb2plY3RVUkw7Ci0JfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29tbW9uL05hbWVNYXBwaW5nVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb21tb24vTmFtZU1hcHBpbmdVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjFmZGFjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb21tb24vTmFtZU1hcHBpbmdVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb247Ci0KLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgb3JnLmFwYWNoZS5heGlzLnV0aWxzLkphdmFVdGlsczsKLWltcG9ydCBvcmcuYXBhY2hlLmF4aXMud3NkbC50b0phdmEuVXRpbHM7Ci0KLXB1YmxpYyBjbGFzcyBOYW1lTWFwcGluZ1V0aWxzIHsKLQotICBwcml2YXRlIE5hbWVNYXBwaW5nVXRpbHMoKSB7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQYWNrYWdlTmFtZShTdHJpbmcgbmFtZXNwYWNlLCBNYXAgbnMycGtnTWFwKQotICB7Ci0gICAgaWYgKG5hbWVzcGFjZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChuczJwa2dNYXAgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IHBrZyA9IG5zMnBrZ01hcC5nZXQobmFtZXNwYWNlKTsKLSAgICAgICAgaWYgKHBrZyAhPSBudWxsKQotICAgICAgICAgIHJldHVybiAoU3RyaW5nKXBrZzsKLSAgICAgIH0KLSAgICAgIHJldHVybiBuYW1lc3BhY2VVUkkyUGFja2FnZU5hbWUobmFtZXNwYWNlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuICIiOwotICB9Ci0KLSAgLyoqCi0gICAqIG5hbWVzcGFjZVVSSTJQYWNrYWdlTmFtZQotICAgKiBAcGFyYW0gbmFtZXNwYWNlVVJJCi0gICAqIEByZXR1cm4gcGFja2FnZSBuYW1lIGJhc2VkIG9uIG5hbWVzcGFjZQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgbmFtZXNwYWNlVVJJMlBhY2thZ2VOYW1lKFN0cmluZyBuYW1lc3BhY2VVUkkpCi0gIHsKLSAgCXJldHVybiBVdGlscy5tYWtlUGFja2FnZU5hbWUobmFtZXNwYWNlVVJJKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIHhtbE5hbWVUb0phdmFDbGFzcwotICAgKiBAcGFyYW0geG1sbmFtZQotICAgKiBAcmV0dXJuIEphdmEgY2xhc3MgbmFtZQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgeG1sTmFtZVRvSmF2YUNsYXNzKFN0cmluZyB4bWxuYW1lKQotICB7Ci0gIAlyZXR1cm4gVXRpbHMueG1sTmFtZVRvSmF2YUNsYXNzKHhtbG5hbWUpOwotICB9Ci0gIAotICAvKioKLSAgICogZ2V0UG9ydE5hbWUKLSAgICogQHBhcmFtIHBhcnROYW1lCi0gICAqIEByZXR1cm4gcG9ydCBuYW1lIHVzZWQgYnkgdGhlIEF4aXMgZW1pdHRlcgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UG9ydE5hbWUoU3RyaW5nIHBvcnROYW1lKSAKLSAgewotICAJaWYgKCFKYXZhVXRpbHMuaXNKYXZhSWQocG9ydE5hbWUpKSAKLSAgICAgICAgcG9ydE5hbWUgPSB4bWxOYW1lVG9KYXZhQ2xhc3MocG9ydE5hbWUpOwotICAJcmV0dXJuIHBvcnROYW1lOwotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2NvbnRleHQvQXhpc0VtaXR0ZXJDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29udGV4dC9BeGlzRW1pdHRlckNvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVhMjgxZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29udGV4dC9BeGlzRW1pdHRlckNvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgICBidWcgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMjkgICAxMjcwMTYgYW5keXpoYWlAY2EuaWJtLmNvbSAtIEFuZHkgWmhhaQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29udGV4dDsKLQotcHVibGljIGludGVyZmFjZSBBeGlzRW1pdHRlckNvbnRleHQgewotCS8qKgotCSAqIFRoaXMgY29uc3RhbnQgc3RyaW5nIGlzIHVzZWQgdG8gbG9va3VwIHRoZSBhbGxfd2FudGVkIGdlbmVyYWwgcHJlZmVyZW5jZQotCSAqIGZyb20gdGhlIHBsdWdpbnMgbG9jYWwgcHJlZmVyZW5jZXMgc3RvcmUuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9BTExfV0FOVEVEID0gImFsbFdhbnRlZCI7Ci0KLQkvKioKLQkgKiBUaGlzIGNvbnN0YW50IHN0cmluZyBpcyB1c2VkIHRvIGxvb2t1cCB0aGUgaGVscGVyX3dhbnRlZCBnZW5lcmFsCi0JICogcHJlZmVyZW5jZSBmcm9tIHRoZSBwbHVnaW5zIGxvY2FsIHByZWZlcmVuY2VzIHN0b3JlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfSEVMUEVSX1dBTlRFRCA9ICJoZWxwZXJXYW50ZWQiOwotCi0JLyoqCi0JICogVGhpcyBjb25zdGFudCBzdHJpbmcgaXMgdXNlZCB0byBsb29rdXAgdGhlIHdyYXBfYXJyYXlzIGdlbmVyYWwgcHJlZmVyZW5jZQotCSAqIGZyb20gdGhlIHBsdWdpbnMgbG9jYWwgcHJlZmVyZW5jZXMgc3RvcmUuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9XUkFQX0FSUkFZUyA9ICJ3cmFwQXJyYXlzIjsKLQotCS8qKgotCSAqIFRoaXMgY29uc3RhbnQgc3RyaW5nIGlzIHVzZWQgdG8gbG9va3VwIHRoZSBkZXBsb3lfc2NvcGUgZ2VuZXJhbAotCSAqIHByZWZlcmVuY2UgZnJvbSB0aGUgcGx1Z2lucyBsb2NhbCBwcmVmZXJlbmNlcyBzdG9yZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGRVJFTkNFX0RFUExPWV9TQ09QRSA9ICJkZXBsb3lTY29wZSI7Ci0KLQkvKioKLQkgKiBUaGlzIGNvbnN0YW50IHN0cmluZyBpcyB1c2VkIHRvIGxvb2t1cCB0aGUgdGltZV9vdXQgZ2VuZXJhbCBwcmVmZXJlbmNlCi0JICogZnJvbSB0aGUgcGx1Z2lucyBsb2NhbCBwcmVmZXJlbmNlcyBzdG9yZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGRVJFTkNFX1RJTUVfT1VUID0gInRpbWVPdXQiOwotCi0JLyoKLQkgKiBFbnN1cmUgdGhlIG9yZGVyIGlzIHRoZSBzYW1lIGFzIGl0IGluIGRlcGxveVNjb3BlVHlwZXMuc2V0SXRlbXMoLi4uKSBmb3IKLQkgKiBjbGFzcwotCSAqIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnByZWZlcmVuY2VzLkF4aXNFbWl0dGVyUHJlZmVyZW5jZVBhZ2UuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVQTE9ZX1NDT1BFX1RZUEVfQVBQTElDQVRJT04gPSAwOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVQTE9ZX1NDT1BFX1RZUEVfUkVRVUVTVCA9IDE7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBERVBMT1lfU0NPUEVfVFlQRV9TRVNTVElPTiA9IDI7Ci0KLQkvKioKLQkgKiBUaGlzIGNvbnN0YW50IHN0cmluZyBpcyB1c2VkIHRvIGxvb2t1cCB0aGUgdXNlX2luaGVyaXRlZF9tZXRob2RzIGdlbmVyYWwKLQkgKiBwcmVmZXJlbmNlIGZyb20gdGhlIHBsdWdpbnMgbG9jYWwgcHJlZmVyZW5jZXMgc3RvcmUuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9VU0VfSU5IRVJJVEVEX01FVEhPRFMgPSAidXNlSW5oZXJpdGVkTWV0aG9kcyI7Ci0JCi0JLyoqCi0JICogVGhpcyBjb25zdGFudCBzdHJpbmcgaXMgdXNlZCB0byBsb29rdXAgdGhlICJ2YWxpZGF0ZSBhZ2FpbnN0IEpBWFJQQyIKLQkgKiBwcmVmZXJlbmNlIGZyb20gdGhlIHBsdWdpbnMgbG9jYWwgcHJlZmVyZW5jZXMgc3RvcmUuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9WQUxJREFURV9BR0FJTlNUX0pBWFJQQyA9ICJ2YWxpZGF0ZUFnYWluc3RKQVhSUEMiOwotCi0JLyoqCi0JICogCi0JICogQHBhcmFtIGVuYWJsZQotCSAqICAgICAgICAgICAgc2V0IHdoZXRoZXIgZ2VuZXJhdGluZyBjb2RlIGZvciBhbGwgZWxlbWVudHMgaXMgZW5hYmxlZC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRBbGxXYW50ZWRFbmFibGVkKGJvb2xlYW4gZW5hYmxlKTsKLQotCS8qKgotCSAqIAotCSAqIEByZXR1cm4gcmV0dXJucyB3aGV0aGVyIGdlbmVyYXRpbmcgY29kZSBmb3IgYWxsIGVsZW1lbnRzIGlzIGVuYWJsZWQuCi0JICovCi0JcHVibGljIGJvb2xlYW4gaXNBbGxXYW50ZWRFbmFibGVkKCk7Ci0KLQkvKioKLQkgKiAKLQkgKiBAcGFyYW0gZW5hYmxlCi0JICogICAgICAgICAgICBzZXQgd2hldGhlciBlbWl0dGluZyBzZXBhcmF0ZSBIZWxwZXIgY2xhc3NlcyBmb3IgbWV0YSBkYXRhIGlzCi0JICogICAgICAgICAgICBlbmFibGVkLgotCSAqLwotCXB1YmxpYyB2b2lkIHNldEhlbHBlcldhbnRlZEVuYWJsZWQoYm9vbGVhbiBlbmFibGUpOwotCi0JLyoqCi0JICogCi0JICogQHBhcmFtIHJldHVybnMKLQkgKiAgICAgICAgICAgIHdoZXRoZXIgZW1pdHRpbmcgc2VwYXJhdGUgSGVscGVyIGNsYXNzZXMgZm9yIG1ldGEgZGF0YSBpcwotCSAqICAgICAgICAgICAgZW5hYmxlZC4KLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBpc0hlbHBlcldhbnRlZEVuYWJsZWQoKTsKLQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBlbmFibGUKLQkgKiAgICAgICAgICAgIHNldCB3aGV0aGVyIHdyYXBwaW5nIGFycmF5cyBpcyBlbmFibGVkLgotCSAqLwotCi0JcHVibGljIHZvaWQgc2V0V3JhcEFycmF5c0VuYWJsZWQoYm9vbGVhbiBlbmFibGUpOwotCi0JLyoqCi0JICogCi0JICogQHBhcmFtIHJldHVybnMKLQkgKiAgICAgICAgICAgIHdoZXRoZXIgd3JhcHBpbmcgYXJyYXlzIGlzIGVuYWJsZWQuCi0JICovCi0KLQlwdWJsaWMgYm9vbGVhbiBpc1dyYXBBcnJheXNFbmFibGVkKCk7Ci0KLQkvKioKLQkgKiAKLQkgKiBAcGFyYW0gZW5hYmxlCi0JICogICAgICAgICAgICBzZXQgd2hldGhlciB1c2luZyBpbmhlcml0ZWQgbWV0aG9kcyBpcyBlbmFibGVkLgotCSAqLwotCXB1YmxpYyB2b2lkIHNldFVzZUluaGVyaXRlZE1ldGhvZHNFbmFibGVkKGJvb2xlYW4gZW5hYmxlKTsKLQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSByZXR1cm5zCi0JICogICAgICAgICAgICB3aGV0aGVyIHVzaW5nIGluaGVyaXRlZCBtZXRob2RzIGlzIGVuYWJsZWQuCi0JICovCi0KLQlwdWJsaWMgYm9vbGVhbiBpc1VzZUluaGVyaXRlZE1ldGhvZHNFbmFibGVkKCk7Ci0KLQkvKioKLQkgKiAKLQkgKiBAcGFyYW0gZW5hYmxlCi0JICogICAgICAgICAgICBzZXQgd2hldGhlciBKQVgtUlBDIGFuYWx5c2lzIG9mIHRoZSBzZXJ2aWNlIGNsYXNzIGlzIGVuYWJsZWQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0VmFsaWRhdGVBZ2FpbnN0SkFYUlBDRW5hYmxlZChib29sZWFuIGVuYWJsZSk7Ci0KLQkvKioKLQkgKiAKLQkgKiBAcGFyYW0gcmV0dXJucwotCSAqICAgICAgICAgICAgd2hldGhlciBKQVgtUlBDIGFuYWx5c2lzIG9mIHRoZSBzZXJ2aWNlIGNsYXNzIGlzIGVuYWJsZWQuCi0JICovCi0KLQlwdWJsaWMgYm9vbGVhbiBpc1ZhbGlkYXRlQWdhaW5zdEpBWFJQQ0VuYWJsZWQoKTsKLQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBzZWxlY3Rpb24KLQkgKiAgICAgICAgICAgIHNldCB0aGUgZGVwbG95IHNjb3BlIHR5cGUuCi0JICovCi0KLQlwdWJsaWMgdm9pZCBzZWxlY3REZXBsb3lTY29wZVR5cGUoaW50IHNlbGVjdGlvbik7Ci0KLQkvKioKLQkgKiAKLQkgKiBAcGFyYW0gcmV0dXJucwotCSAqICAgICAgICAgICAgdGhlIGRlcGxveSBzY29wZSB0eXBlLgotCSAqLwotCi0JcHVibGljIGludCBnZXREZXBsb3lTY29wZVR5cGUoKTsKLQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBzZWNvbmRzCi0JICogICAgICAgICAgICBzZXQgdGhlIHRpbWUgb3V0LgotCSAqLwotCi0JcHVibGljIHZvaWQgc2V0VGltZU91dChpbnQgc2Vjb25kcyk7Ci0KLQkvKioKLQkgKiAKLQkgKiBAcGFyYW0gcmV0dXJucwotCSAqICAgICAgICAgICAgdGhlIHRpbWUgb3V0LgotCSAqLwotCi0JcHVibGljIGludCBnZXRUaW1lT3V0KCk7Ci0KLQkvKioKLQkgKiAKLQkgKiBAcmV0dXJuIHJldHVybnMgYSBjb3B5IG9mIHRoaXMgQXhpc0VtaXR0ZXJDb250ZXh0LgotCSAqLwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2NvbnRleHQvQXhpc0VtaXR0ZXJEZWZhdWx0cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2NvbnRleHQvQXhpc0VtaXR0ZXJEZWZhdWx0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWFkYzZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb250ZXh0L0F4aXNFbWl0dGVyRGVmYXVsdHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCAgIGJ1ZyAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMyOSAgIDEyNzAxNiBhbmR5emhhaUBjYS5pYm0uY29tIC0gQW5keSBaaGFpCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb250ZXh0OwotCi1wdWJsaWMgY2xhc3MgQXhpc0VtaXR0ZXJEZWZhdWx0cwotewotIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gUFJFRkVSRU5DRV9BTExfV0FOVEVEX0RFRkFVTFQgPSBmYWxzZTsKLSBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFBSRUZFUkVOQ0VfSEVMUEVSX1dBTlRFRF9ERUZBVUxUID0gZmFsc2U7Ci0gcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBQUkVGRVJFTkNFX1dSQVBfQVJSQVlTX0RFRkFVTFQgPSBmYWxzZTsKLSBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFBSRUZFUkVOQ0VfVVNFX0lOSEVSSVRFRF9NRVRIT0RTX0RFRkFVTFQgPSBmYWxzZTsKLSBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFBSRUZFUkVOQ0VfVkFMSURBVEVfQUdBSU5TVF9KQVhSUEMgPSB0cnVlOwotIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERVBMT1lfU0NPUEVfREVGQVVMVCA9IEF4aXNFbWl0dGVyQ29udGV4dC5ERVBMT1lfU0NPUEVfVFlQRV9SRVFVRVNUOwotIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUSU1FX09VVF9ERUZBVUxUID0gNDU7Ci0gCi0gLyoqCi0gICogCi0gICogQHJldHVybiByZXR1cm5zIHRoZSBkZWZhdWx0IHNldHRpbmcgZm9yIGdlbmVyYXRpbmcgY29kZSBmb3IgYWxsIGVsZW1lbnRzLgotICAqLwotIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBnZXRBbGxXYW50ZWREZWZhdWx0ICgpCi0gewotIAlyZXR1cm4gUFJFRkVSRU5DRV9BTExfV0FOVEVEX0RFRkFVTFQ7Ci0gfQotIAotIC8qKgotICAqIAotICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZGVmYXVsdCBzZXR0aW5nIGZvciBlbWl0dGluZyBzZXBlcmF0ZSBoZWxwc2VyIGNsYXNzIGZvciBtZXRhZGF0YS4KLSAgKi8KLSBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZ2V0SGVscGVyV2FudGVkRGVmYXVsdCAoKQotIHsgCi0JcmV0dXJuIFBSRUZFUkVOQ0VfSEVMUEVSX1dBTlRFRF9ERUZBVUxUOwotIH0KLQotIC8qKgotICAqIAotICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZGVmYXVsdCBzZXRpbmcgZm9yIHdyYXBwaW5nIGFycmF5cy4KLSAgKi8KLSBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZ2V0V3JhcEFycmF5c0RlZmF1bHQoKQotIHsKLQlyZXR1cm4gUFJFRkVSRU5DRV9XUkFQX0FSUkFZU19ERUZBVUxUOwotIH0KLSAKLSAvKioKLSAgKiAKLSAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgdXNpbmcgaW5oZXJpdGVkIG1ldGhvZHMuCi0gICovCi0gcHVibGljIHN0YXRpYyBib29sZWFuIGdldFVzZUluaGVyaXRlZE1ldGhvZHNEZWZhdWx0KCkKLSB7Ci0JcmV0dXJuIFBSRUZFUkVOQ0VfVVNFX0lOSEVSSVRFRF9NRVRIT0RTX0RFRkFVTFQ7Ci0gfQotIAotIC8qKgotICAqIAotICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZGVmYXVsdCBzZXR0aW5nIGZvciBKQVgtUlBDIHZhbGlkYXRpb24gb2YgdGhlIHNlcnZpY2UgY2xhc3MuCi0gICogTm90ZTogVGhpcyBpcyBub3QgYSB0cnVlIEF4aXMgZW1pdHRlciBwcmVmZXJlbmNlLiBUaGlzIHByZWZlcmVuY2UgY29udHJvbHMgd2hldGhlcgotICAqIHRoZSBBeGlzIFdlYiBzZXJ2aWNlIGJvdHRvbS11cCBzY2VuYXJpbyBhbmFseXplcyB0aGUgc2VydmljZSBjbGFzcyBmb3IgY29tcGxpYW5jZQotICAqIHRvIEpBWC1SUEMgc29tZSB0aW1lIGJlZm9yZSBjYWxsaW5nIHRoZSBlbWl0dGVycy4gCi0gICovCi0gcHVibGljIHN0YXRpYyBib29sZWFuIGdldFZhbGlkYXRlQWdhaW5zdEpBWFJQQygpCi0gewotCXJldHVybiBQUkVGRVJFTkNFX1ZBTElEQVRFX0FHQUlOU1RfSkFYUlBDOwotIH0KLSAKLSAvKioKLSAgKiAKLSAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgZGVwbG95IHNjb3BlIHR5cGUuCi0gICovCi0gcHVibGljIHN0YXRpYyBpbnQgZ2V0RGVwbG95U2NvcGVEZWZhdWx0KCkKLSB7Ci0JIHJldHVybiBERVBMT1lfU0NPUEVfREVGQVVMVDsKLSB9Ci0gCi0gLyoqCi0gICogCi0gICogQHJldHVybiByZXR1cm5zIHRoZSBkZWZhdWx0IHNldHRpbmcgZm9yIHRpbWUgb3V0LgotICAqLwotIHB1YmxpYyBzdGF0aWMgaW50IGdldFRpbWVPdXREZWZhdWx0KCkKLSB7Ci0JIHJldHVybiBUSU1FX09VVF9ERUZBVUxUOwotIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb250ZXh0L1BlcnNpc3RlbnRBeGlzRW1pdHRlckNvbnRleHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9jb250ZXh0L1BlcnNpc3RlbnRBeGlzRW1pdHRlckNvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg1NDNlMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvY29udGV4dC9QZXJzaXN0ZW50QXhpc0VtaXR0ZXJDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkICAgYnVnICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMzI5ICAgMTI3MDE2IGFuZHl6aGFpQGNhLmlibS5jb20gLSBBbmR5IFpoYWkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbnRleHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnBsdWdpbi5XZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uQ29yZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dC5QZXJzaXN0ZW50Q29udGV4dDsKLQotcHVibGljIGNsYXNzIFBlcnNpc3RlbnRBeGlzRW1pdHRlckNvbnRleHQgZXh0ZW5kcyBQZXJzaXN0ZW50Q29udGV4dCBpbXBsZW1lbnRzCUF4aXNFbWl0dGVyQ29udGV4dAotewotCXByaXZhdGUgc3RhdGljIFBlcnNpc3RlbnRBeGlzRW1pdHRlckNvbnRleHQgY29udGV4dF8gPSBudWxsOwotCi0JcHVibGljIHN0YXRpYyBQZXJzaXN0ZW50QXhpc0VtaXR0ZXJDb250ZXh0IGdldEluc3RhbmNlKCkgCi0JewotCQlpZiAoY29udGV4dF8gPT0gbnVsbCkgewotCQkJY29udGV4dF8gPSBuZXcgUGVyc2lzdGVudEF4aXNFbWl0dGVyQ29udGV4dCgpOwotCQkJY29udGV4dF8ubG9hZCgpOwotCQl9Ci0KLQkJcmV0dXJuIGNvbnRleHRfOwotCX0KLQotCXByaXZhdGUgUGVyc2lzdGVudEF4aXNFbWl0dGVyQ29udGV4dCgpIAotCXsKLQkJc3VwZXIoV2ViU2VydmljZUF4aXNDb25zdW1wdGlvbkNvcmVQbHVnaW4uZ2V0SW5zdGFuY2UoKSk7Ci0JfQotCi0JcHVibGljIHZvaWQgbG9hZCgpIAotCXsKLQkJc2V0RGVmYXVsdChQUkVGRVJFTkNFX0FMTF9XQU5URUQsIEF4aXNFbWl0dGVyRGVmYXVsdHMuZ2V0QWxsV2FudGVkRGVmYXVsdCgpKTsKLQkJc2V0RGVmYXVsdChQUkVGRVJFTkNFX0hFTFBFUl9XQU5URUQsIEF4aXNFbWl0dGVyRGVmYXVsdHMuZ2V0SGVscGVyV2FudGVkRGVmYXVsdCgpKTsKLQkJc2V0RGVmYXVsdChQUkVGRVJFTkNFX1dSQVBfQVJSQVlTLCBBeGlzRW1pdHRlckRlZmF1bHRzLmdldFdyYXBBcnJheXNEZWZhdWx0KCkpOwotCQlzZXREZWZhdWx0KFBSRUZFUkVOQ0VfVVNFX0lOSEVSSVRFRF9NRVRIT0RTLCBBeGlzRW1pdHRlckRlZmF1bHRzLmdldFVzZUluaGVyaXRlZE1ldGhvZHNEZWZhdWx0KCkpOwotCQlzZXREZWZhdWx0KFBSRUZFUkVOQ0VfVkFMSURBVEVfQUdBSU5TVF9KQVhSUEMsIEF4aXNFbWl0dGVyRGVmYXVsdHMuZ2V0VmFsaWRhdGVBZ2FpbnN0SkFYUlBDKCkpOwotCQlzZXREZWZhdWx0KFBSRUZFUkVOQ0VfREVQTE9ZX1NDT1BFLCBBeGlzRW1pdHRlckRlZmF1bHRzLmdldERlcGxveVNjb3BlRGVmYXVsdCgpKTsKLQkJc2V0RGVmYXVsdChQUkVGRVJFTkNFX1RJTUVfT1VULCBBeGlzRW1pdHRlckRlZmF1bHRzLmdldFRpbWVPdXREZWZhdWx0KCkpOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldEFsbFdhbnRlZEVuYWJsZWQoYm9vbGVhbiBlbmFibGUpIAotCXsKLQkJc2V0VmFsdWUoUFJFRkVSRU5DRV9BTExfV0FOVEVELCBlbmFibGUpOwotCX0KLQotCXB1YmxpYyBib29sZWFuIGlzQWxsV2FudGVkRW5hYmxlZCgpIAotCXsKLQkJcmV0dXJuIGdldFZhbHVlQXNCb29sZWFuKFBSRUZFUkVOQ0VfQUxMX1dBTlRFRCk7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0SGVscGVyV2FudGVkRW5hYmxlZChib29sZWFuIGVuYWJsZSkgCi0JewotCQlzZXRWYWx1ZShQUkVGRVJFTkNFX0hFTFBFUl9XQU5URUQsIGVuYWJsZSk7Ci0JfQotCi0JcHVibGljIGJvb2xlYW4gaXNIZWxwZXJXYW50ZWRFbmFibGVkKCkgCi0JewotCQlyZXR1cm4gZ2V0VmFsdWVBc0Jvb2xlYW4oUFJFRkVSRU5DRV9IRUxQRVJfV0FOVEVEKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRXcmFwQXJyYXlzRW5hYmxlZChib29sZWFuIGVuYWJsZSkgCi0JewotCQlzZXRWYWx1ZShQUkVGRVJFTkNFX1dSQVBfQVJSQVlTLCBlbmFibGUpOwotCX0KLQotCXB1YmxpYyBib29sZWFuIGlzV3JhcEFycmF5c0VuYWJsZWQoKSAKLQl7Ci0JCXJldHVybiBnZXRWYWx1ZUFzQm9vbGVhbihQUkVGRVJFTkNFX1dSQVBfQVJSQVlTKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRVc2VJbmhlcml0ZWRNZXRob2RzRW5hYmxlZChib29sZWFuIGVuYWJsZSkgCi0JewotCQlzZXRWYWx1ZShQUkVGRVJFTkNFX1VTRV9JTkhFUklURURfTUVUSE9EUywgZW5hYmxlKTsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBpc1VzZUluaGVyaXRlZE1ldGhvZHNFbmFibGVkKCkgCi0JewotCQlyZXR1cm4gZ2V0VmFsdWVBc0Jvb2xlYW4oUFJFRkVSRU5DRV9VU0VfSU5IRVJJVEVEX01FVEhPRFMpOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFZhbGlkYXRlQWdhaW5zdEpBWFJQQ0VuYWJsZWQoYm9vbGVhbiBlbmFibGUpCi0JewotCQlzZXRWYWx1ZShQUkVGRVJFTkNFX1ZBTElEQVRFX0FHQUlOU1RfSkFYUlBDLCBlbmFibGUpOwotCX0KLQkKLQlwdWJsaWMgYm9vbGVhbiBpc1ZhbGlkYXRlQWdhaW5zdEpBWFJQQ0VuYWJsZWQoKQotCXsKLQkJcmV0dXJuIGdldFZhbHVlQXNCb29sZWFuKFBSRUZFUkVOQ0VfVkFMSURBVEVfQUdBSU5TVF9KQVhSUEMpOwotCX0KLQotCXB1YmxpYyB2b2lkIHNlbGVjdERlcGxveVNjb3BlVHlwZShpbnQgc2VsZWN0aW9uKSB7Ci0JCXNldFZhbHVlKFBSRUZFUkVOQ0VfREVQTE9ZX1NDT1BFLCBzZWxlY3Rpb24pOwotCX0KLQotCXB1YmxpYyBpbnQgZ2V0RGVwbG95U2NvcGVUeXBlKCkgewotCQlyZXR1cm4gZ2V0VmFsdWVBc0ludChQUkVGRVJFTkNFX0RFUExPWV9TQ09QRSk7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0VGltZU91dChpbnQgc2Vjb25kcykgewotCQlzZXRWYWx1ZShQUkVGRVJFTkNFX1RJTUVfT1VULCBzZWNvbmRzKTsKLQl9Ci0KLQlwdWJsaWMgaW50IGdldFRpbWVPdXQoKSB7Ci0JCXJldHVybiBnZXRWYWx1ZUFzSW50KFBSRUZFUkVOQ0VfVElNRV9PVVQpOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9sb2NhdG9yL0F4aXNTZXJ2aWNlc1NheEhhbmRsZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9sb2NhdG9yL0F4aXNTZXJ2aWNlc1NheEhhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y2NTIxNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvbG9jYXRvci9BeGlzU2VydmljZXNTYXhIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTE3ICAgMTQwODMyIGFuZHl6aGFpQGNhLmlibS5jb20gLSBBbmR5IFpoYWkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUubG9jYXRvcjsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLnhtbC5zYXguQXR0cmlidXRlczsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlcjsKLQotcHVibGljIGNsYXNzIEF4aXNTZXJ2aWNlc1NheEhhbmRsZXIgZXh0ZW5kcyBEZWZhdWx0SGFuZGxlcgotewotCXByaXZhdGUgVmVjdG9yIHdlYlNlcnZpY2VzTmFtZXMgPSBuZXcgVmVjdG9yKCk7Ci0JCi0JcHVibGljIHZvaWQgc3RhcnRFbGVtZW50KFN0cmluZyBuYW1lc3BhY2VVUkksIFN0cmluZyBsb2NhbE5hbWUsIFN0cmluZyBxTmFtZSwgQXR0cmlidXRlcyBhdHRzKSB0aHJvd3MgU0FYRXhjZXB0aW9uCi0JewotCQlpZiAobG9jYWxOYW1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpLmVxdWFscygic2VydmljZSIpKQotCQl7CQotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRzLmdldExlbmd0aCgpOyBpKyspCi0JCQl7Ci0JCQkJaWYgKGF0dHMuZ2V0TG9jYWxOYW1lKGkpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLmVxdWFscygibmFtZSIpKQotCQkJCXsKLQkJCQkJU3RyaW5nIHNlcnZpY2VOYW1lID0gYXR0cy5nZXRWYWx1ZShpKTsKLQkJICAgICAgICAgICAgd2ViU2VydmljZXNOYW1lcy5hZGQoc2VydmljZU5hbWUpOwotCQkJCX0KLQkJCX0KLQkJfQotCX0KLQkKLQlwdWJsaWMgTGlzdCBnZXRXZWJTZXJ2aWNlc05hbWVzKCkKLQl7Ci0JCXJldHVybiB0aGlzLndlYlNlcnZpY2VzTmFtZXM7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi9jb3JlL2xvY2F0b3IvQXhpc1NlcnZsZXRTYXhIYW5kbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvbG9jYXRvci9BeGlzU2VydmxldFNheEhhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk4YmNjOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvbG9jYXRvci9BeGlzU2VydmxldFNheEhhbmRsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MTcgICAxNDA4MzIgYW5keXpoYWlAY2EuaWJtLmNvbSAtIEFuZHkgWmhhaQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5sb2NhdG9yOwotCi1pbXBvcnQgb3JnLnhtbC5zYXguQXR0cmlidXRlczsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlcjsKLQotcHVibGljIGNsYXNzIEF4aXNTZXJ2bGV0U2F4SGFuZGxlciBleHRlbmRzIERlZmF1bHRIYW5kbGVyCi17Ci0JcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIEFYSVNfU0VSVkxFVF9DTEFTU19OQU1FID0gIm9yZy5hcGFjaGUuYXhpcy50cmFuc3BvcnQuaHR0cC5BeGlzU2VydmxldCI7Ci0JCi0JcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIFNFUlZMRVRfQ0xBU1NfTkFNRSA9ICJzZXJ2bGV0LWNsYXNzIjsKLQkKLQlwcml2YXRlIGJvb2xlYW4gaXNUaGVyZUF4aXNTZXJ2bGV0ID0gZmFsc2U7Ci0JCi0JcHJpdmF0ZSBTdHJpbmcgY3VycmVudEVsZW1lbnQgPSBudWxsOwotCQotCXB1YmxpYyB2b2lkIHN0YXJ0RWxlbWVudChTdHJpbmcgbmFtZXNwYWNlVVJJLCBTdHJpbmcgbG9jYWxOYW1lLCBTdHJpbmcgcU5hbWUsIEF0dHJpYnV0ZXMgYXR0cykgdGhyb3dzIFNBWEV4Y2VwdGlvbgotCXsKLQkJY3VycmVudEVsZW1lbnQgPSBsb2NhbE5hbWU7Ci0JfQotCQotCXB1YmxpYyB2b2lkIGNoYXJhY3RlcnMoY2hhcltdIGNoLCBpbnQgc3RhcnQsIGludCBsZW5ndGgpIHRocm93cyBTQVhFeGNlcHRpb24KLQl7Ci0JCWlmICggIWlzVGhlcmVBeGlzU2VydmxldCAmJiBTRVJWTEVUX0NMQVNTX05BTUUuZXF1YWxzKGN1cnJlbnRFbGVtZW50LnRyaW0oKSkgJiYgU3RyaW5nLnZhbHVlT2YoY2gpLmluZGV4T2YoQVhJU19TRVJWTEVUX0NMQVNTX05BTUUpID4gLTEpCi0JCXsKLQkJCWlzVGhlcmVBeGlzU2VydmxldCA9IHRydWU7Ci0JCX0KLQl9Ci0JCi0JcHVibGljIGJvb2xlYW4gaXNUaGVyZUF4aXNTZXJ2bGV0KCkKLQl7Ci0JCXJldHVybiB0aGlzLmlzVGhlcmVBeGlzU2VydmxldDsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvbG9jYXRvci9BeGlzV2ViU2VydmljZUxvY2F0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9sb2NhdG9yL0F4aXNXZWJTZXJ2aWNlTG9jYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzVhZjYwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9sb2NhdG9yL0F4aXNXZWJTZXJ2aWNlTG9jYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzk0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxNyAgIDEyNzQ1NiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA1MTcgICAxNDA4MzIgYW5keXpoYWlAY2EuaWJtLmNvbSAtIEFuZHkgWmhhaQotICogMjAwNjA2MjAgICAxNDc4NjIgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqIDIwMDYwNjIwICAgMTQ3ODY0IGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5Ci0gKiAyMDA2MTIxNCAgIDE2NTcxNiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViIFNlcnZpY2UgZmluZGVyIGRvZXMgbm90IGxvY2F0ZSBBeGlzIFdlYiBzZXJ2aWNlIGRlcGxveWVkIG9uIGNlcnRhaW4gc2VydmVycwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5sb2NhdG9yOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlNBWFBhcnNlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5TQVhQYXJzZXJGYWN0b3J5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2VSb290OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUphdmFNb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JSmF2YVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSVR5cGVIaWVyYXJjaHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YUNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZUphdmFDbGllbnRJbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJQb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlci5BYnN0cmFjdFdlYlNlcnZpY2VMb2NhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VDbGllbnRJbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VJbmZvOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLQotLyoqCi0gKiBAYXV0aG9yIGNicmVhbGV5Ci0gKiBUaGUgQXhpcyBXZWIgc2VydmljZSBsb2NhdG9yIHBsdWdzIGl0c2VsZiBpbnRvIHRoZQotICogV2ViIFNlcnZpY2VzIEZpbmRlciBmcmFtZXdvcmsgYW5kIGRvZXMgdGhlIGpvYiBvZgotICogbG9jYXRpbmcgQXhpcyBjbGllbnRzIGFuZCBzZXJ2aWNlcy4KLSAqLwotcHVibGljIGNsYXNzIEF4aXNXZWJTZXJ2aWNlTG9jYXRvciBleHRlbmRzIEFic3RyYWN0V2ViU2VydmljZUxvY2F0b3IKLXsKLQlwcml2YXRlIFN0cmluZyBBWElTX1NUVUIgPSAib3JnLmFwYWNoZS5heGlzLmNsaWVudC5TdHViIjsKLQkKLQkvKioKLQkgKiBTZWFyY2hlcyB0aGUgd29ya3NwYWNlIGZvciBBeGlzIGNsaWVudHMgYXMKLQkgKiBpZGVudGlmaWVkIGJ5IG5vbi1zdHViIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQKLQkgKiBTRUlzIHRoYXQgYXJlIGltcGxlbWVudGVkIGJ5IHN0dWJzIHRoYXQgaW1wbGVtZW50Ci0JICogb3JnLmFwYWNoZS5heGlzLmNsaWVudC5TdHViLgotCSAqIEBwYXJhbSBtb25pdG9yIEEgcHJvZ3Jlc3MgbW9uaXRvciwgcG9zc2libHkgbnVsbC4KLQkgKiBAcmV0dXJuIEEgcG9zc2libHkgZW1wdHkgbGlzdCBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzLgotCSAqLwotCXB1YmxpYyBMaXN0IGdldFdlYlNlcnZpY2VDbGllbnRzIChJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCi0JewotCQlMaXN0IGxpc3QgPSBuZXcgTGlua2VkTGlzdCgpOwotCQlJV29ya3NwYWNlUm9vdCByb290ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLQkJSUphdmFNb2RlbCBqYXZhTW9kZWwgPSBKYXZhQ29yZS5jcmVhdGUocm9vdCk7Ci0JCXRyeQotCQl7Ci0JCQlqYXZhTW9kZWwub3Blbihtb25pdG9yKTsKLQkJCUlKYXZhUHJvamVjdFtdIGphdmFQcm9qZWN0cyA9IGphdmFNb2RlbC5nZXRKYXZhUHJvamVjdHMoKTsKLQkJCWZvciAoaW50IGk9MDsgaTxqYXZhUHJvamVjdHMubGVuZ3RoOyBpKyspCi0JCQl7Ci0JCQkJLy8gV2UncmUgb25seSBpbnRlcmVzdGVkIGluIEphdmEgcHJvamVjdHMgd2l0aGluIHdoaWNoCi0JCQkJLy8gdGhlIEF4aXMgcnVudGltZSdzIGNsaWVudCAiU3R1YiIgY2xhc3MgaXMgbG9hZGFibGU6Ci0JCQkJSVR5cGUgYXhpc1N0dWIgPSBqYXZhUHJvamVjdHNbaV0uZmluZFR5cGUoQVhJU19TVFVCKTsKLQkJCQlpZiAoYXhpc1N0dWIgIT0gbnVsbCkKLQkJCQl7Ci0JCQkJCS8vIEZpbmQgIlByb3h5IiBjbGFzc2VzIGluIHRoZSBwcm9qZWN0IGFuZCBhZGQgdG8gdGhlIGxpc3QuCi0JCQkJCWFkZEF4aXNQcm94aWVzKGphdmFQcm9qZWN0c1tpXSxheGlzU3R1YixsaXN0LG1vbml0b3IpOwotCQkJCX0KLQkJCX0KLQkJCWphdmFNb2RlbC5jbG9zZSgpOwotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSkKLQkJewotCQkJLy8gRmFsbCB0aHJ1IGFuZCByZXR1cm4gYW4gZW1wdHkgbGlzdC4KLQkJfQotCQlyZXR1cm4gbGlzdDsKLQl9Ci0JCi0JLyoqCi0JICogU2VhcmNoZXMgdGhlIHdvcmtzcGFjZSBmb3IgQXhpcyBjbGllbnRzIGFzCi0JICogaWRlbnRpZmllZCBieSBub24tc3R1YiBjbGFzc2VzIHRoYXQgaW1wbGVtZW50Ci0JICogU0VJcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBieSBzdHVicyB0aGF0IGltcGxlbWVudAotCSAqIG9yZy5hcGFjaGUuYXhpcy5jbGllbnQuU3R1Yi4KLQkgKiBAcGFyYW0gcHJvamVjdHMgVGhlIHByb2plY3RzIHRvIGNvbmZpbmUgdGhlIHNlYXJjaCB0by4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsIHBvc3NpYmx5IG51bGwuCi0JICogQHJldHVybiBBIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgV2ViU2VydmljZUNsaWVudEluZm8gb2JqZWN0cy4KLQkgKi8KLQlwdWJsaWMgTGlzdCBnZXRXZWJTZXJ2aWNlQ2xpZW50cyAoSVByb2plY3RbXSBwcm9qZWN0cywgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKQotCXsKLQkJaWYgKHByb2plY3RzID09IG51bGwpCi0JCXsKLQkJCXJldHVybiBnZXRXZWJTZXJ2aWNlQ2xpZW50cyhtb25pdG9yKTsKLQkJfQotCQlMaXN0IGxpc3QgPSBuZXcgTGlua2VkTGlzdCgpOwotCQlJV29ya3NwYWNlUm9vdCByb290ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLQkJSUphdmFNb2RlbCBqYXZhTW9kZWwgPSBKYXZhQ29yZS5jcmVhdGUocm9vdCk7Ci0JCXRyeQotCQl7Ci0JCQlqYXZhTW9kZWwub3Blbihtb25pdG9yKTsKLQkJCWZvciAoaW50IGk9MDsgaTxwcm9qZWN0cy5sZW5ndGg7IGkrKykKLQkJCXsKLQkJCQlJSmF2YVByb2plY3QgamF2YVByb2plY3QgPSBqYXZhTW9kZWwuZ2V0SmF2YVByb2plY3QocHJvamVjdHNbaV0uZ2V0TmFtZSgpKTsKLQkJCQkvLyBXZSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gSmF2YSBwcm9qZWN0cyB3aXRoaW4gd2hpY2gKLQkJCQkvLyB0aGUgQXhpcyBydW50aW1lJ3MgY2xpZW50ICJTdHViIiBjbGFzcyBpcyBsb2FkYWJsZToKLQkJCQlJVHlwZSBheGlzU3R1YiA9IGphdmFQcm9qZWN0LmZpbmRUeXBlKEFYSVNfU1RVQik7Ci0JCQkJaWYgKGF4aXNTdHViICE9IG51bGwpCi0JCQkJewotCQkJCQkvLyBGaW5kICJQcm94eSIgY2xhc3NlcyBpbiB0aGUgcHJvamVjdCBhbmQgYWRkIHRvIHRoZSBsaXN0LgotCQkJCQlhZGRBeGlzUHJveGllcyhqYXZhUHJvamVjdCxheGlzU3R1YixsaXN0LG1vbml0b3IpOwotCQkJCX0KLQkJCX0KLQkJCWphdmFNb2RlbC5jbG9zZSgpOwotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSkKLQkJewotCQkJLy8gRmFsbCB0aHJ1IGFuZCByZXR1cm4gYW4gZW1wdHkgbGlzdC4KLQkJfQotCQlyZXR1cm4gbGlzdDsKLQl9Ci0JCi0JLyoqCi0JICogVHJpZXMgdG8gZmluZCBBeGlzICJQcm94eSIgY2xhc3NlcyByZWxhdGVkIHRoZSBnaXZlbiBTdHViLgotCSAqIEBwYXJhbSBheGlzU3R1YiBUaGUgQXhpcyBjbGllbnQgIlN0dWIiIGZyb20gd2hpY2ggdG8gc2VhcmNoLgotCSAqIEBwYXJhbSBsaXN0IEEgbGlzdCB0byB3aGljaCB3ZSdsbCBhZGQgYW5kIFdlYlNlcnZpY2VDbGllbnRJbmZvCi0JICogb2JqZWN0cyBmb3IgIlByb3h5IiBjbGFzc2VzIHdlIGZpbmQgaW4gdGhlIHNlYXJjaC4gCi0JICovCi0JcHJpdmF0ZSB2b2lkIGFkZEF4aXNQcm94aWVzIChJSmF2YVByb2plY3QgamF2YVByb2plY3QsIElUeXBlIGF4aXNTdHViLCBMaXN0IGxpc3QsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikKLQl7Ci0JCXRyeQotCQl7Ci0JCQkvLyBDb21wdXRlIGEgaGllcmFyY2h5IHRvIGhlbHAgdXMgZmluZCBhbGwgdGhlCi0JCQkvLyBnZW5lcmF0ZWQgU3R1YiBzdWJjbGFzc2VzIG9mIHRoZSBBeGlzICJTdHViIgotCQkJLy8gY2xhc3MgYWNyb3NzIHRoZSBlbnRpcmUgd29ya3NwYWNlOgotCQkJSVR5cGVIaWVyYXJjaHkgYXhpc1N0dWJIaWVyYXJjaHkgPSBheGlzU3R1Yi5uZXdUeXBlSGllcmFyY2h5KGphdmFQcm9qZWN0LG1vbml0b3IpOwotCQkJSVR5cGVbXSBzdHVicyA9IGF4aXNTdHViSGllcmFyY2h5LmdldFN1YnR5cGVzKGF4aXNTdHViKTsKLQkJCWZvciAoaW50IHM9MDsgczxzdHVicy5sZW5ndGg7IHMrKykKLQkJCXsKLQkJCQkvLyBGb3IgZWFjaCBzdHViLCBmaW5kIGFsbCBpdHMgc3VwZXItaW50ZXJmYWNlcyBvZiB3aGljaAotCQkJCS8vIHRoZXJlIHNob3VsZCBiZSBvbmUsIG5hbWVseSB0aGUgZ2VuZXJhdGVkIFNFSToKLQkJCQlJVHlwZSBzZWlzW10gPSBheGlzU3R1YkhpZXJhcmNoeS5nZXRTdXBlckludGVyZmFjZXMoc3R1YnNbc10pOwotCQkJCWZvciAoaW50IGk9MDsgaTxzZWlzLmxlbmd0aDsgaSsrKQotCQkJCXsKLQkJCQkJdHJ5Ci0JCQkJCXsKLQkJCQkJCS8vIENvbXB1dGUgYSBoaWVyYXJjaHkgdG8gaGVscCB1cyBmaW5kIGFsbCB0aGUKLQkJCQkJCS8vIGdlbmVyYXRlZCBjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoZSBTRUkKLQkJCQkJCS8vIGNvbmZpbmVkIHRvIHRoZSBjdXJyZW50IHByb2plY3Q6Ci0JCQkJCQlJVHlwZUhpZXJhcmNoeSBzZWlIaWVyYXJjaHkgPSBzZWlzW2ldLm5ld1R5cGVIaWVyYXJjaHkoamF2YVByb2plY3QsbW9uaXRvcik7Ci0JCQkJCQlJVHlwZVtdIHByb3hpZXMgPSBzZWlIaWVyYXJjaHkuZ2V0U3VidHlwZXMoc2Vpc1tpXSk7Ci0JCQkJCQlmb3IgKGludCBwPTA7IHA8cHJveGllcy5sZW5ndGg7IHArKykKLQkJCQkJCXsKLQkJCQkJCQkvLyBVbmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB3ZSBzaG91bGQgZmluZCB0d28gc3ViY2xhc3NlczoKLQkJCQkJCQkvLyAxLiBUaGUgZ2VuZXJhdGVkIHN0dWIgdGhhdCBnb3QgdXMgaGVyZSAodHdvIGxvb3BzIGFib3ZlKS4KLQkJCQkJCQkvLyAyLiBUaGUgZ2VuZXJhdGVkICJQcm94eSIgdGhhdCB3ZSdyZSBsb29raW5nIGZvci4KLQkJCQkJCQkvLyBTa2lwICMxIGFuZCBjYXB0dXJlICMyOgotCQkJCQkJCWlmICghcHJveGllc1twXS5nZXRGdWxseVF1YWxpZmllZE5hbWUoKS5lcXVhbHMoc3R1YnNbc10uZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCkpKQotCQkJCQkJCXsKLQkJCQkJCQkJV2ViU2VydmljZUNsaWVudEluZm8gd3NjSW5mbyA9IG5ld1dlYlNlcnZpY2VDbGllbnRJbmZvKHByb3hpZXNbcF0pOwotCQkJCQkJCQlpZiAod3NjSW5mbyAhPSBudWxsKQotCQkJCQkJCQl7Ci0JCQkJCQkJCQlsaXN0LmFkZCh3c2NJbmZvKTsKLQkJCQkJCQkJfQotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCQljYXRjaCAoRXhjZXB0aW9uIGUpCi0JCQkJCXsKLQkJCQkJCS8vIFdlJ2xsIGxhbmQgaGVyZSBpZiB0aGUgSkRUIHdhcyB1bmFibGUgdG8gY29tcHV0ZQotCQkJCQkJLy8gYSB0eXBlIGhpZXJhcmNoeSBmb3IgdGhlIGN1cnJlbnQgU0VJLgotCQkJCQkJLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBidXQgaWYgaXQgZG9lcywKLQkJCQkJCS8vIHRoZXJlJ3Mgbm90IG11Y2ggd2UgY2FuIGRvIGV4Y2VwdCBieXBhc3MgdGhlIFNFSQotCQkJCQkJLy8gYW5kIGxvb3Agb24gdG8gdGhlIG5leHQgb25lLgotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSkKLQkJewotCQkJLy8gV2UnbGwgbGFuZCBoZXJlIGlmIEpEVCB3YXMgdW5hYmxlIHRvIGNvbXB1dGUKLQkJCS8vIGEgdHlwZSBoaWVyYXJjaHkgZm9yIHRoZSBBeGlzIGNsaWVudCAiU3R1YiIgY2xhc3MuCi0JCQkvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBpZiBpdCBkb2VzLAotCQkJLy8gdGhlcmUncyBub3QgbXVjaCB3ZSBjYW4gZG8gZXhjZXB0IGJhaWwgb3V0LCBoYXZpbmcKLQkJCS8vIGFkZGVkIG5vdGhpbmcgdG8gdGhlIGxpc3QuCi0JCX0KLQl9Ci0JCi0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3QgZm9yIGEKLQkgKiBKRFQgSVR5cGUgb2JqZWN0IHJlcHJlc2VudGluZyBhIGdlbmVyYXRlZCBQcm94eS4KLQkgKiBAcGFyYW0gYXhpc1Byb3h5IFRoZSBJVHlwZSBvZiB0aGUgZ2VuZXJhdGVkIFByb3h5LgotCSAqIEByZXR1cm4gQSBuZXcgV2ViU2VydmljZUNsaWVudEluZm8gb2JqZWN0IGRlc2NyaWJpbmcgdGhlIFByb3h5LAotCSAqIG9yIG51bGwgaWYgdGhlIElUeXBlIGRvZXMgbm90IGFwcGVhciB0byBkZXNjcmliZSBhIG5vcm1hbCBQcm94eS4gCi0JICovCi0JcHJpdmF0ZSBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBuZXdXZWJTZXJ2aWNlQ2xpZW50SW5mbyAoSVR5cGUgYXhpc1Byb3h5KQotCXsKLQkJV2ViU2VydmljZUphdmFDbGllbnRJbmZvIHdzY0luZm8gPSBudWxsOwotCQl0cnkKLQkJewotCQkJSVJlc291cmNlIHJlc291cmNlID0gYXhpc1Byb3h5LmdldFVuZGVybHlpbmdSZXNvdXJjZSgpOwotCQkJaWYgKHJlc291cmNlICE9IG51bGwpCi0JCQl7Ci0JCQkJSVBhdGggcHJveHlQYXRoID0gcmVzb3VyY2UuZ2V0TG9jYXRpb24oKTsKLQkJCQlpZiAocHJveHlQYXRoICE9IG51bGwpCi0JCQkJewotCQkJCQlTdHJpbmcgcHJveHlVUkwgPSBwcm94eVBhdGgudG9GaWxlKCkudG9VUkwoKS50b1N0cmluZygpOwotCQkJCQl3c2NJbmZvID0gbmV3IFdlYlNlcnZpY2VKYXZhQ2xpZW50SW5mbygpOwotCQkJCQl3c2NJbmZvLnNldFR5cGUoYXhpc1Byb3h5KTsKLQkJCQkJd3NjSW5mby5zZXRJbXBsVVJMKHByb3h5VVJMKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCQl7Ci0JCQkvLyBXZSdsbCBsYW5kIGhlcmUgaWYgd2UgY291bGQgbm90IGNvbnZlcnQgdGhlIElUeXBlCi0JCQkvLyBpbnRvIGFuIElSZXNvdXJjZSwgb3IgaWYgd2UgY291bGQgbm90IGNvbXB1dGUgYSBVUkwKLQkJCS8vIGZyb20gdGhhdCByZXNvdXJjZS4gRWl0aGVyIHdheSwgaXQgZGVmaW5pdGVseSBpc24ndAotCQkJLy8gYSBub3JtYWwgZ2VuZXJhdGVkIFByb3h5LCBzbyBnZXQgb3V0IGFuZCByZXR1cm4gbnVsbC4KLQkJfQotCQlyZXR1cm4gd3NjSW5mbzsJCQotCX0KLQotCS8qKgotCSAqIFNlYXJjaGVzIHRoZSB3b3Jrc3BhY2UgZm9yIEF4aXMgc2VydmljZXMgYXMKLQkgKiBpZGVudGlmaWVkIGJ5IHNlcnZlci1jb25maWcud3NkZCA8c2VydmljZT4gZWxlbWVudHMKLQkgKiBpbiBwcm9qZWN0cyB3aXRoIGFuIEF4aXMgc2VydmxldCByZWdpc3RlcmVkCi0JICogaW4gdGhlIHdlYi54bWwgZGVzY3JpcHRvci4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsIHBvc3NpYmx5IG51bGwuCi0JICogQHJldHVybiBBIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cy4KLQkgKi8KLQlwdWJsaWMgTGlzdCBnZXRXZWJTZXJ2aWNlcyAoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKQotCXsKLQkJcmV0dXJuIGdldFdlYlNlcnZpY2VzKG51bGwsbW9uaXRvcik7Ci0JfQotCQotCS8qKgotCSAqIFNlYXJjaGVzIHRoZSB3b3Jrc3BhY2UgZm9yIEF4aXMgc2VydmljZXMgYXMKLQkgKiBpZGVudGlmaWVkIGJ5IHNlcnZlci1jb25maWcud3NkZCA8c2VydmljZT4gZWxlbWVudHMKLQkgKiBpbiBwcm9qZWN0cyB3aXRoIGFuIEF4aXMgc2VydmxldCByZWdpc3RlcmVkCi0JICogaW4gdGhlIHdlYi54bWwgZGVzY3JpcHRvci4KLQkgKiBAcGFyYW0gcHJvamVjdHMgVGhlIHByb2plY3RzIHRvIGNvbmZpbmUgdGhlIHNlYXJjaCB0by4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsIHBvc3NpYmx5IG51bGwuCi0JICogQHJldHVybiBBIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cy4KLQkgKi8KLQlwdWJsaWMgTGlzdCBnZXRXZWJTZXJ2aWNlcyAoSVByb2plY3RbXSBwcm9qZWN0cywgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKQotCXsKLQkJVmVjdG9yIHdlYlNlcnZpY2VzID0gbmV3IFZlY3RvcigpOwotCQlpZiAocHJvamVjdHMgPT0gbnVsbCkKLQkJewotCQkJcHJvamVjdHMgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3RzKCk7Ci0JCX0KLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBwcm9qZWN0cy5sZW5ndGg7IGkrKykKLQkJewotCQkJLy8gd2UgYXJlIG9ubHkgaW50ZXJzdGVkIGluIGR5bmFtaWMgd2ViIHByb2plY3QKLQkJCWlmIChKMkVFVXRpbHMuaXNXZWJDb21wb25lbnQocHJvamVjdHNbaV0pKQotCQkJewotCQkJCXRyeSAKLQkJCQl7Ci0JCQkJCXdlYlNlcnZpY2VzLmFkZEFsbChnZXRXZWJTZXJ2aWNlc0Zyb21Qcm9qZWN0KHByb2plY3RzW2ldLCBtb25pdG9yKSk7Ci0JCQkJfSAKLQkJCQljYXRjaCAoRXhjZXB0aW9uIGUpIAotCQkJCXsKLQkJCQkJLy8gRmFsbCB0aHJ1IGFuZCByZXR1cm4gYW4gZW1wdHkgbGlzdC4KLQkJCQl9IAotCQkJfQotCQl9Ci0JCXJldHVybiB3ZWJTZXJ2aWNlczsKLQl9Ci0JCi0JLyoqCi0JICogU2VhcmNoZXMgZm9yIGEgcGFydGljdWxhciB3ZWIgcHJvamVjdCBmb3IgQXhpcyBzZXJ2aWNlcyBhcwotCSAqIGlkZW50aWZpZWQgYnkgc2VydmVyLWNvbmZpZy53c2RkIDxzZXJ2aWNlPiBlbGVtZW50cwotCSAqIHdpdGggYW4gQXhpcyBzZXJ2bGV0IHJlZ2lzdGVyZWQKLQkgKiBpbiB0aGUgd2ViLnhtbCBkZXNjcmlwdG9yLgotCSAqIEBwYXJhbSBtb25pdG9yIEEgcHJvZ3Jlc3MgbW9uaXRvciwgcG9zc2libHkgbnVsbC4KLQkgKiBAcmV0dXJuIEEgcG9zc2libHkgZW1wdHkgbGlzdCBvZiBXZWJTZXJ2aWNlSW5mbyBvYmplY3RzLgotCSAqLwotCXByaXZhdGUgTGlzdCBnZXRXZWJTZXJ2aWNlc0Zyb21Qcm9qZWN0KElQcm9qZWN0IHByb2plY3QsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgdGhyb3dzIENvcmVFeGNlcHRpb24sIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24KLQl7CQotCQkvLyBTZWFyY2ggdGhlIHdlYi54bWwgaW4gZml4ZWQgbG9jYXRpb24KLQkJSVBhdGggd2ViRGVzY3JpcHRvclBhdGggPSBKMkVFVXRpbHMuZ2V0V2ViSW5mUGF0aChwcm9qZWN0KS5hcHBlbmQoIi93ZWIueG1sIik7Ci0JCUlGaWxlIHdlYlhtbEZpbGUgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldEZpbGUod2ViRGVzY3JpcHRvclBhdGgpOwotCQkKLQkJaWYgKHdlYlhtbEZpbGUgIT0gbnVsbCAmJiBpc0F4aXNTZXJ2bGV0RXhpc3RlZCh3ZWJYbWxGaWxlLCBtb25pdG9yKSkKLQkJewotCQkJLy8gU2VhcmNoIGZvciBhbGwgc2VydmVyLWNvbmZpZy53c2RkIGluc2lkZSB0aGlzIHByb2plY3QKLQkJCVNlcnZlckNvbmZpZ1dTRERWaXNpdG9yIHZpc2l0b3IgPSBuZXcgU2VydmVyQ29uZmlnV1NERFZpc2l0b3IoKTsKLQkJCXByb2plY3QuYWNjZXB0KHZpc2l0b3IpOwkJCi0JCQl2aXNpdG9yLnZpc2l0KHByb2plY3QpOwotCQkJVmVjdG9yIHdzZGRGaWxlcyA9IHZpc2l0b3IuZ2V0V3NkZEZpbGVzKCk7Ci0JCQlWZWN0b3Igc2VydmljZXNOYW1lcyA9IG5ldyBWZWN0b3IoKTsgCi0JCQlmb3IgKGludCBpID0gMDsgaSA8IHdzZGRGaWxlcy5zaXplKCk7IGkrKykKLQkJCXsKLQkJCQlzZXJ2aWNlc05hbWVzLmFkZEFsbChnZXRXZWJTZXJ2aWNlc05hbWVzRnJvbUF4aXNDb25maWcoKElGaWxlKXdzZGRGaWxlcy5nZXQoaSksIG1vbml0b3IpKTsKLQkJCX0KLQkJCXJldHVybiBnZXRXZWJTZXJ2aWNlcyhwcm9qZWN0LCBzZXJ2aWNlc05hbWVzLCBtb25pdG9yKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXJldHVybiBuZXcgVmVjdG9yKCk7Ci0JCX0KLQl9Ci0JCi0JLyoKLQkgKiBEZXRlcm1pbmUgd2hldGhlciB3ZWIueG1sIGNvbnRhaW5zIGF4aXMgc2VydmxldAotCSAqLwotCXByaXZhdGUgYm9vbGVhbiBpc0F4aXNTZXJ2bGV0RXhpc3RlZChJRmlsZSBmaWxlLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cyBDb3JlRXhjZXB0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0JewotCQlJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSA9IGZpbGUuZ2V0Q29udGVudHMoKTsKLQkJU0FYUGFyc2VyRmFjdG9yeSBmYWN0b3J5ID0gU0FYUGFyc2VyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotCQlmYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOwotCQlTQVhQYXJzZXIgcGFyc2VyID0gZmFjdG9yeS5uZXdTQVhQYXJzZXIoKTsKLQkJQXhpc1NlcnZsZXRTYXhIYW5kbGVyIGhhbmRsZXIgPSBuZXcgQXhpc1NlcnZsZXRTYXhIYW5kbGVyKCk7Ci0JCXBhcnNlci5wYXJzZShpbnB1dFN0cmVhbSwgaGFuZGxlcik7Ci0JCWlucHV0U3RyZWFtLmNsb3NlKCk7Ci0JCXJldHVybiBoYW5kbGVyLmlzVGhlcmVBeGlzU2VydmxldCgpOwotCX0KLQkKLQkvKgotCSAqIEdpdmVuIGEgbGlzdCBvZiBzZXJ2aWNlcywgZmluZCB0aGUgc2VydmVycyB0aGlzIHByb2plY3QgaXMgYXNzb2NpYXRlZCwKLQkgKiBDb21iaW5lIHRoZW0gYW5kIGZvcm0gdmFyaW91cyBlbmQgcG9pbnQKLQkgKi8KLQlwcml2YXRlIExpc3QgZ2V0V2ViU2VydmljZXMoSVByb2plY3QgcHJvamVjdCwgTGlzdCBzZXJ2aWNlc05hbWVzLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCi0JewotCQlWZWN0b3Igd2ViU2VydmljZXMgPSBuZXcgVmVjdG9yKCk7Ci0JCUlTZXJ2ZXJbXSBzZXJ2ZXJzID0gU2VydmVyVXRpbC5nZXRTZXJ2ZXJzQnlNb2R1bGUoU2VydmVyVXRpbC5nZXRNb2R1bGUocHJvamVjdCksbW9uaXRvcik7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgc2VydmVycy5sZW5ndGg7IGkrKykKLQkJewotCQkJU3RyaW5nIGhvc3QgPSBzZXJ2ZXJzW2ldLmdldEhvc3QoKTsKLQkJCVNlcnZlclBvcnQgaHR0cFBvcnQgPSBnZXRIdHRwUG9ydChzZXJ2ZXJzW2ldLmdldFNlcnZlclBvcnRzKG1vbml0b3IpKTsKLQkJCWlmIChodHRwUG9ydCAhPSBudWxsKQotCQkJewotCQkJCWZvciAoaW50IGogPSAwOyBqIDwgc2VydmljZXNOYW1lcy5zaXplKCk7IGorKykKLQkJCQl7Ci0JCQkJCVdlYlNlcnZpY2VJbmZvIHdzSW5mbyA9IG5ldyBXZWJTZXJ2aWNlSW5mbygpOwotCQkJCQlTdHJpbmcgZW5kUG9pbnRVUkwgPSAiaHR0cDovLyIgKyBob3N0ICsgIjoiICsgaHR0cFBvcnQuZ2V0UG9ydCgpICsgIi8iICsgSjJFRVV0aWxzLmdldEZpcnN0V2ViTW9kdWxlTmFtZShwcm9qZWN0KSArICIvc2VydmljZXMvIiArIChTdHJpbmcpc2VydmljZXNOYW1lcy5nZXQoaik7Ci0JCQkJCXdzSW5mby5zZXRFbmRQb2ludFVSTChlbmRQb2ludFVSTCk7Ci0JCQkJCXdzSW5mby5zZXRXc2RsVVJMKGVuZFBvaW50VVJMKyI/d3NkbCIpOwotCQkgICAgICAgICAgICB3ZWJTZXJ2aWNlcy5hZGQod3NJbmZvKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIHdlYlNlcnZpY2VzOwotCX0KLQkKLQkvKgotCSAqIFBhcnNlIHRoZSBzZXJ2ZXItY29uZmlnLndzZGQgZmlsZSwgcmV0dXJuIGEgbGlzdCBvZiBuYW1lcyBvZiB3ZWIgc2VydmljZXMgCi0JICovCi0JcHJpdmF0ZSBMaXN0IGdldFdlYlNlcnZpY2VzTmFtZXNGcm9tQXhpc0NvbmZpZyhJRmlsZSBmaWxlLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cyBDb3JlRXhjZXB0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0JewotCQlJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSA9IGZpbGUuZ2V0Q29udGVudHMoKTsKLQkJU0FYUGFyc2VyRmFjdG9yeSBmYWN0b3J5ID0gU0FYUGFyc2VyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotCQlmYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOwotCQlTQVhQYXJzZXIgcGFyc2VyID0gZmFjdG9yeS5uZXdTQVhQYXJzZXIoKTsKLQkJQXhpc1NlcnZpY2VzU2F4SGFuZGxlciBoYW5kbGVyID0gbmV3IEF4aXNTZXJ2aWNlc1NheEhhbmRsZXIoKTsKLQkJcGFyc2VyLnBhcnNlKGlucHV0U3RyZWFtLCBoYW5kbGVyKTsKLQkJaW5wdXRTdHJlYW0uY2xvc2UoKTsKLQkJcmV0dXJuIGhhbmRsZXIuZ2V0V2ViU2VydmljZXNOYW1lcygpOwkKLQl9Ci0JCi0JLyoKLQkgKiBmaW5kIHRoZSByaWdodCBwb3J0IChodHRwKSBmcm9tIGEgbGlzdCBvciBwb3J0cwotCSAqLwotCXByaXZhdGUgU2VydmVyUG9ydCBnZXRIdHRwUG9ydChTZXJ2ZXJQb3J0W10gcG9ydHMpCi0JewotCQlmb3IgKGludCBpID0gMDsgaSA8IHBvcnRzLmxlbmd0aDsgaSsrKQotCQl7Ci0JCQlTdHJpbmcgcHJvdG9jb2wgPSBwb3J0c1tpXS5nZXRQcm90b2NvbCgpOyAKLQkJCWlmICggcHJvdG9jb2wgIT0gbnVsbCAmJiBwcm90b2NvbC50cmltKCkudG9Mb3dlckNhc2UoKS5lcXVhbHMoImh0dHAiKSkgcmV0dXJuIHBvcnRzW2ldOwotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9sb2NhdG9yL1NlcnZlckNvbmZpZ1dTRERWaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvbG9jYXRvci9TZXJ2ZXJDb25maWdXU0REVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTRkMTNmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9sb2NhdG9yL1NlcnZlckNvbmZpZ1dTRERWaXNpdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTE3ICAgMTQwODMyIGFuZHl6aGFpQGNhLmlibS5jb20gLSBBbmR5IFpoYWkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUubG9jYXRvcjsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZVZpc2l0b3I7Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2ZXJDb25maWdXU0REVmlzaXRvciBpbXBsZW1lbnRzIElSZXNvdXJjZVZpc2l0b3IKLXsKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVhJU19TRVJWRVJfQ09ORklHX0ZJTEVfTkFNRSA9ICJTZXJ2ZXItY29uZmlnLndzZGQiOwotCVZlY3RvciB3c2RkRmlsZXMgPSBuZXcgVmVjdG9yKCk7Ci0JCi0JcHVibGljIGJvb2xlYW4gdmlzaXQoSVJlc291cmNlIHJlc291cmNlKQotICAgIHsKLQkJaWYgKHJlc291cmNlLmdldFR5cGUoKSA9PSBJUmVzb3VyY2UuRklMRSkKLQkJeyAgICAgCi0JCQlpZiAocmVzb3VyY2UuZ2V0TmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoQVhJU19TRVJWRVJfQ09ORklHX0ZJTEVfTkFNRSkpCi0JCQl7Ci0JCQkJd3NkZEZpbGVzLmFkZCgoSUZpbGUpcmVzb3VyY2UpOwotCQkJfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotCXB1YmxpYyBWZWN0b3IgZ2V0V3NkZEZpbGVzKCkKLQl7Ci0JCXJldHVybiB3c2RkRmlsZXM7IAotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9wbHVnaW4vV2ViU2VydmljZUF4aXNDb25zdW1wdGlvbkNvcmVQbHVnaW4uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vY29yZS9wbHVnaW4vV2ViU2VydmljZUF4aXNDb25zdW1wdGlvbkNvcmVQbHVnaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZjZjdjNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL2NvcmUvcGx1Z2luL1dlYlNlcnZpY2VBeGlzQ29uc3VtcHRpb25Db3JlUGx1Z2luLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgICBidWcgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMjkgICAxMjcwMTYgYW5keXpoYWlAY2EuaWJtLmNvbSAtIEFuZHkgWmhhaQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5wbHVnaW47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29udGV4dC5BeGlzRW1pdHRlckNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb250ZXh0LlBlcnNpc3RlbnRBeGlzRW1pdHRlckNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwotCi0KLS8qKgotKiBUaGlzIGlzIHRoZSBwbHVnaW4gY2xhc3MgZm9yIHRoZSBXZWIgU2VydmljZXMgcGx1Z2luLgotKiA8cD4KLSogVGhpcyBwbHVnaW4gY29udGFpbnMgdGhlIGdyYXBoaWMgdXNlciBpbnRlcmZhY2UgdG8gdGhlCi0qIFdlYiBTZXJ2aWNlcyBydW50aW1lIGZvdW5kIGluIG9yZy5lY2xpcHNlLmpzdC53cy4KLSovCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZUF4aXNDb25zdW1wdGlvbkNvcmVQbHVnaW4gZXh0ZW5kcyBQbHVnaW4KLXsKLQotCS8qKgotCSogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRlc2NyaXB0b3Igb2YgdGhpcyBwbHVnaW4gaW4gcGx1Z2luLnhtbC4KLQkqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElEID0KLQkJIm9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUiOwotCi0JLyoqCi0JKiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4uCi0JKi8KLQlwcml2YXRlIHN0YXRpYyBXZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uQ29yZVBsdWdpbiBpbnN0YW5jZV87Ci0JcHJpdmF0ZSBJTG9nIGxvZ187Ci0KLQlwcml2YXRlIFBlcnNpc3RlbnRBeGlzRW1pdHRlckNvbnRleHQgYXhpc0VtaXR0ZXJDb250ZXh0XzsKLQkvKioKLQkqIENvbnN0cnVjdHMgYSBydW50aW1lIHBsdWdpbiBvYmplY3QgZm9yIHRoaXMgcGx1Z2luLgotCSogVGhlICJwbHVnaW4iIGVsZW1lbnQgaW4gcGx1Z2luLnhtbCBzaG91bGQgaW5jbHVkZSB0aGUgYXR0cmlidXRlCi0JKiBjbGFzcyA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlIi4KLQkqIEBwYXJhbSBkZXNjcmlwdG9yIFRoZSBkZXNjcmlwdG9yIG9mIHRoaXMgcGx1Z2luLgotCSovCi0JcHVibGljIFdlYlNlcnZpY2VBeGlzQ29uc3VtcHRpb25Db3JlUGx1Z2luKCkgewotCQlzdXBlcigpOwotCQlpZiAoaW5zdGFuY2VfID09IG51bGwpIHsKLQkJCWluc3RhbmNlXyA9IHRoaXM7Ci0JCX0KLQkJbG9nXyA9IEVudmlyb25tZW50U2VydmljZS5nZXRFY2xpcHNlTG9nKCk7Ci0KLQl9Ci0KLSAgLy8gVGhpcyBtZXRob2QgaXMgbmVlZGVkIHRvIGtlZXAgdGhlIGxvZ2dpbmcgZnJvbSBibG93aW5nIHVwLgotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIHJldHVybiBJRDsgIAotICB9Ci0gIAotCS8qKgotCSogUmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgcGx1Z2luLiBFcXVpdmFsZW50IHRvIGNhbGxpbmcKLQkqIChXZWJTZXJ2aWNlV2FzQ29uc3VtcHRpb25QbHVnaW4pUGxhdGZvcm0uZ2V0UGx1Z2luKCJvcmcuZWNsaXBzZS5qc3Qud3Mud2FzLnY1LnRwIik7Ci0JKiBAcmV0dXJuIFRoZSBXZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uQ29yZVBsdWdpbiBzaW5nbGV0b24uCi0JKi8KLQlzdGF0aWMgcHVibGljIFdlYlNlcnZpY2VBeGlzQ29uc3VtcHRpb25Db3JlUGx1Z2luIGdldEluc3RhbmNlKCkgewotCQlyZXR1cm4gaW5zdGFuY2VfOwotCX0KLQkKLQlwdWJsaWMgQXhpc0VtaXR0ZXJDb250ZXh0IGdldEF4aXNFbWl0dGVyQ29udGV4dCgpCi0JewotCQlpZiAoYXhpc0VtaXR0ZXJDb250ZXh0XyA9PSBudWxsKSAKLQkgIAkJYXhpc0VtaXR0ZXJDb250ZXh0XyA9IFBlcnNpc3RlbnRBeGlzRW1pdHRlckNvbnRleHQuZ2V0SW5zdGFuY2UoKTsKLQkJcmV0dXJuIGF4aXNFbWl0dGVyQ29udGV4dF87Ci0JfQotCi0JLyoqCi0JKiBDYWxsZWQgb25jZSBieSB0aGUgcGxhdGZvcm0gd2hlbiB0aGlzIHBsdWdpbiBpcyBmaXJzdCBsb2FkZWQuCi0JKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gSWYgdGhpcyBwbHVnaW4gZmFpbHMgdG8gc3RhcnQuCi0JKi8KLQlwdWJsaWMgdm9pZCBzdGFydCggQnVuZGxlQ29udGV4dCBidW5kbGUgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCWxvZ18ubG9nKElMb2cuSU5GTywgNTA4NywgdGhpcywgInN0YXJ0IiwgIlN0YXJ0aW5nIHBsdWdpbiBvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlIik7Ci0gICAgCi0gICAgdHJ5Ci0gICAgewotCQkgIHN1cGVyLnN0YXJ0KCBidW5kbGUgKTsKLSAgICB9Ci0gICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgIHsKLSAgICAgIGxvZ18ubG9nKCBJTG9nLkVSUk9SLCA1MDg4LCB0aGlzLCAic3RhcnQiLCBleGMgKTsKLSAgICB9Ci0JfQotCi0JLyoqCi0JKiBDYWxsZWQgb25jZSBieSB0aGUgcGxhdGZvcm0gd2hlbiB0aGlzIHBsdWdpbiBpcyB1bmxvYWRlZC4KLQkqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBJZiB0aGlzIHBsdWdpbiBmYWlscyB0byBzaHV0ZG93bi4KLQkqLwotCXB1YmxpYyB2b2lkIHN0b3AoIEJ1bmRsZUNvbnRleHQgY29udGV4dCApIHRocm93cyBDb3JlRXhjZXB0aW9uIHsKLQkJbG9nXy5sb2coSUxvZy5JTkZPLCA1MDg5LCB0aGlzLCAic2h1dGRvd24iLCAiU2h1dHRpbmcgcGx1Z2luIG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUiKTsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0JCSAgc3VwZXIuc3RvcCggY29udGV4dCApOwotICAgIH0KLSAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgbG9nXy5sb2coIElMb2cuRVJST1IsIDUwOTAsIHRoaXMsICJzdG9wIiwgZXhjICk7ICAgICAgCi0gICAgfQotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvLmNsYXNzcGF0aCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk2ZDQ5YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYy8iLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS41Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5YTAzYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi10ZW1wLmZvbGRlcgotd3NjLWF4aXMtdWkuamFyCi1AZG90Ci1zcmMuemlwCi1qYXZhQ29tcGlsZXIuLi5hcmdzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpLy5wcm9qZWN0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJkYWM4NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWk8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjliNzNlZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSNUaHUgTWF5IDMxIDEzOjEwOjE4IEVEVCAyMDA3Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS41Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFubm90YXRpb25TdXBlckludGVyZmFjZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXV0b2JveGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uSW5EZXByZWNhdGVkQ29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbldoZW5PdmVycmlkaW5nRGVwcmVjYXRlZE1ldGhvZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kaXNjb3VyYWdlZFJlZmVyZW5jZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW1wdHlTdGF0ZW1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmhpZGRlbkNhdGNoQmxvY2s9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBhdGlibGVOb25Jbmhlcml0ZWRJbnRlcmZhY2VNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBsZXRlRW51bVN3aXRjaD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5kaXJlY3RTdGF0aWNBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmxvY2FsVmFyaWFibGVIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nRGVwcmVjYXRlZEFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdTZXJpYWxWZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9FZmZlY3RBc3NpZ25tZW50PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9JbXBsaWNpdFN0cmluZ0NvbnZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub25FeHRlcm5hbGl6ZWRTdHJpbmdMaXRlcmFsPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3BlY2lhbFBhcmFtZXRlckhpZGluZ0ZpZWxkPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN0YXRpY0FjY2Vzc1JlY2VpdmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN5bnRoZXRpY0FjY2Vzc0VtdWxhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udHlwZVBhcmFtZXRlckhpZGluZz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuY2hlY2tlZFR5cGVPcGVyYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmRvY3VtZW50ZWRFbXB0eUJsb2NrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeUVsc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5VHlwZUNoZWNrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnF1YWxpZmllZEZpZWxkQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb25XaGVuT3ZlcnJpZGluZz1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRJbXBvcnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5PdmVycmlkaW5nQ29uY3JldGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUHJpdmF0ZU1lbWJlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJiYjU1OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jTW9uIEphbiAzMCAxMDo0MTozNCBFU1QgMjAwNgotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0xCi1jb21waWxlcnMucC5uby1yZXF1aXJlZC1hdHQ9MAotY29tcGlsZXJzLnAubm90LWV4dGVybmFsaXplZC1hdHQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1hdHRyaWJ1dGU9MAotY29tcGlsZXJzLnAudW5rbm93bi1jbGFzcz0wCi1jb21waWxlcnMucC51bmtub3duLWVsZW1lbnQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1yZXNvdXJjZT0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWV4LXBvaW50cz0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWltcG9ydD0wCi1jb21waWxlcnMudXNlLXByb2plY3Q9dHJ1ZQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzY0NGI4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpOyBzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuNDA1LnF1YWxpZmllcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkucGx1Z2luLldlYlNlcnZpY2VBeGlzQ29uc3VtcHRpb25VSVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWk7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS5jb21tYW5kO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkucGx1Z2luO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudGFzazt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnV0aWw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS53aWRnZXRzO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLndzcnQ7eC1pbnRlcm5hbDo9dHJ1ZQotSW1wb3J0LVBhY2thZ2U6IGNvbS5pYm0uaWN1LnRleHQ7IHZlcnNpb249IjMuOCIsCi0gY29tLmlibS5pY3UudXRpbDsgdmVyc2lvbj0iMy44IgotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLnVpO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS51aS5pZGU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuY29tbW9uO2J1bmRsZS12ZXJzaW9uPSJbMi4yLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuZWNvcmU7YnVuZGxlLXZlcnNpb249IlsyLjIuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmpkdC5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5qZW07YnVuZGxlLXZlcnNpb249IlsyLjAuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmplbS51dGlsO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5qZW0ud29ya2JlbmNoO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMCwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LndzO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LndzLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMCwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWk7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMiwyLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS4yLjAsMS4zLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuamVtLndvcmtiZW5jaDtidW5kbGUtdmVyc2lvbj0iWzIuMC4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24ubW9kdWxlY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gamF2YXgud3NkbDtidW5kbGUtdmVyc2lvbj0iWzEuNS4wLDEuNi4wKSIsCi0gb3JnLmFwYWNoZS5heGlzO2J1bmRsZS12ZXJzaW9uPSJbMS40LjAsMS41LjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3M7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQ7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMS4wKSIKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvYWJvdXQuaHRtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvYnVpbGQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc3MmI2NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXNvdXJjZS4uID0gc3JjLwotYmluLmluY2x1ZGVzID0gLixcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E0OTI3ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIE1lc3NhZ2VzIGluIHBsdWdpbi54bWwuCi0jCi1QTFVHSU5fTkFNRT1XZWJzZXJ2aWNlIEF4aXMgQ29uc3VtcHRpb24gVUkKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotCi1XRUJTRVJWSUNFQ0xJRU5UVFlQRV9OQU1FX0pBVkFfQVhJUz1KYXZhIHByb3h5Ci1MQUJFTF9SVU5USU1FX0FYSVNfMTE9QXBhY2hlIEF4aXMKLURFU0NfUlVOVElNRV9BWElTXzExPUFwYWNoZSBBeGlzCi0jCi0jCVdlYiBTZXJ2aWNlcyBQcmVmZXJhbmNlIFBhZ2VzCi0jCi0jIENhdGVnb3JpZXMKLVBSRUZFUkVOQ0VfQ0FURUdPUllfQVhJU19FTUlUVEVSPUF4aXMgRW1pdHRlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTkxN2E0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci0KLTxwbHVnaW4+Ci0gICAKLQk8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0UmVnaXN0cnkiPgotICAgICAgIDx3aWRnZXRGYWN0b3J5ICAgCi0gICAgICAgICAgICAgaWQ9IkF4aXNDbGllbnRDb25maWciCi0gICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbWFuZElkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLkRlZmF1bHRzRm9ySFRUUEJhc2ljQXV0aENvbW1hbmQiCi0gICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLndzcnQuQXhpc0NsaWVudENvbmZpZ1dpZGdldEZhY3RvcnkiLz4KLSAgICA8L2V4dGVuc2lvbj4gCi0gICAgICAgICAgPGV4dGVuc2lvbgotICAgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmFudERhdGFNYXBwaW5nIj4KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkNsaWVudFByb2plY3ROYW1lIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iQ2xpZW50UHJvamVjdCIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lciIvPgotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iQ3VzdG9taXplQ2xpZW50TWFwcGluZ3MiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuY29tbWFuZC5BeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJDdXN0b21pemVDbGllbnRNYXBwaW5ncyIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuYW50LlN0cmluZzJCb29sZWFuVHJhbnNmb3JtZXIiLz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAJCTxtYXAKLSAgICAgICAgICAgICAga2V5PSJNYXBwaW5ncyIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLkNsaWVudENvZGVHZW5PcGVyYXRpb24iCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJKYXZhV1NETFBhcmFtIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1Nb2RpZmllciIvPgotICA8L2V4dGVuc2lvbj4gCi0gICAgIDxleHRlbnNpb24KLSAgICAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5wcmVmZXJlbmNlUGFnZXMiPiAgICAgCi0gICAgICA8cGFnZQotICAgICAgICAgICAgbmFtZT0iJVBSRUZFUkVOQ0VfQ0FURUdPUllfQVhJU19FTUlUVEVSIgotICAgICAgICAgICAgY2F0ZWdvcnk9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS5wcmVmZXJlbmNlcy5uYW1lIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnByZWZlcmVuY2VzLkF4aXNFbWl0dGVyUHJlZmVyZW5jZVBhZ2UiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXMuQXhpc0VtaXR0ZXJQcmVmZXJlbmNlUGFnZSI+Ci0gICAgICA8L3BhZ2U+Ci0KLSAgIDwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvQXhpc0NvbnN1bXB0aW9uVUkucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL0F4aXNDb25zdW1wdGlvblVJLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YWE4NzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvQXhpc0NvbnN1bXB0aW9uVUkucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNjAyMTYgICAxMjY5ODkgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotIyAyMDA2MDMyOSAgIDEyNzAxNiBhbmR5emhhaUBjYS5pYm0uY29tIC0gQW5keSBaaGFpCi0jIDIwMDYwNDI0ICAgMTIwMTM3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLQotTVNHX0VSUk9SX0RFRkFVTFRfQkVBTj1JV0FCMDQ5MUUgRXJyb3IgZW5jb3VudGVyZWQgd2hpbGUgc2V0dGluZyB1cCBkZWZhdWx0IHZhbHVlcyBmb3IgSmF2YSBiZWFuCi1NU0dfRVJST1JfV1NETF9OT19ERUZJTklUSU9OPUlXQUIwNDk1RSBXU0RMIGZpbGUgYXQgezB9IGhhcyBubyBkZWZpbml0aW9uIGVsZW1lbnQKLU1TR19FUlJPUl9XU0RMX05PX1BPUlQ9SVdBQjA0OTZFIFdTREwgZmlsZSBhdCB7MH0gaGFzIG5vIHBvcnQgZWxlbWVudAotTVNHX0VSUk9SX1dSSVRFX1dTREw9SVdBQjA0OTdFIEVycm9yIGluIHdyaXRpbmcgV1NETCBmaWxlIHswfQotCi0jCi0jIE1lc3NhZ2VzIGZvciBDb3B5Q2xpZW50V1NETFRhc2sKLSMKLU1TR19FUlJPUl9JTVBPUlRfV1NETD1JV0FCMDUzMUUgRXJyb3IgaW4gcmVzb2x2aW5nIFdTREwgZmlsZSB7MH0sIGltcG9ydCBXU0RMIGZpbGUgbXVzdCBoYXZlIGFic29sdXRlIFVSTCBvciByZWxhdGl2ZSBVUkwgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0KLQotIwotI0RlZmF1bHRzRm9yQ2xpZW50SmF2YVdTRExDb21tYW5kCi0jCi1NU0dfRVJST1JfV1NETF9MT0NBVElPTl9OT1RfU0VUPUlXQUIwNTAxRSBXU0RMIGxvY2F0aW9uIG5vdCBzZXQuCi0KLSMKLSNBZGRKYXJzVG9Qcm9qZWN0QnVpbGRQYXRoVGFzawotIwotTVNHX1dBUk5fTk9fSkFWQV9OQVRVUkU9SVdBQjA1MDJXIFRoZSBwcm9qZWN0IGlzIG5vdCBhIEphdmEgcHJvamVjdC4KLU1TR19FUlJPUl9CQURfQlVJTERQQVRIPUlXQUIwNTAzRSBVbmFibGUgdG8gdXBkYXRlIEphdmEgYnVpbGQgcGF0aC4gUGxlYXNlIGNoZWNrIHlvdXIgc3lzdGVtIGVudmlyb25tZW50LgotCi0jCi0jQ29weUF4aXNKYXJDb21tYW5kCi0jCi1QUk9HUkVTU19JTkZPX0NPUFlfQVhJU19DRkc9SVdBQjA1MDVJIENvcHlpbmcgQXhpcyBqYXIgZmlsZXMgdG8gd2ViIHByb2plY3QuCi1NU0dfRVJST1JfRklMRUNPUFk9SVdBQjA1MDZFIEVycm9yIHdoZW4gY29weWluZyBBeGlzIGphciBmaWxlcyB0byB3ZWIgcHJvamVjdAotCi0jCi0jUmVmcmVzaFByb2plY3RUYXNrCi0jCi1NU0dfRVJST1JfUkVGUkVTSF9QUk9KRUNUPUlXQUIwNTA4RSBVbmFibGUgdG8gcmVmcmVzaCBwcm9qZWN0LgotCi0jCi0jV2ViU2VydmljZUF4aXNQcm94eVBhZ2UKLSMKLVRPT0xUSVBfUFdKQl9QQUdFPVBhZ2UKLVRPT0xUSVBfUFdKQl9URVhUX0ZPTERFUj1Gb2xkZXIgZm9yIHByb3h5IHRvIGJlIGdlbmVyYXRlZCBmb3IgdGhlIHNlbGVjdGVkIGJpbmRpbmcuCi1UT09MVElQX1BXSkJfQ0hFQ0tCT1hfR0VOUFJPWFk9Q2hlY2sgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIGdlbmVyYXRpb24gb2YgYSBwcm94eS4KLQotUEFHRV9USVRMRV9XU19BWElTX1BST1hZPVdlYiBTZXJ2aWNlIFByb3h5IFBhZ2UKLVBBR0VfREVTQ19XU19BWElTX1BST1hZPVNlbGVjdCBnZW5lcmF0ZSBwcm94eSBpZiB5b3Ugd2FudCB0byBnZW5lcmF0ZSBwcm94eSBmb3IgeW91ciBzZXJ2aWNlLgotQ0hFQ0tCT1hfR0VOUFJPWFk9R2VuZXJhdGUgcHJveHkKLUxBQkVMX0ZPTERFUl9OQU1FPU91dHB1dCBmb2xkZXIKLQotIwotIyBNZXNzYWdlcyBmb3IgV2ViU2VyaXZjZUF4aXNNYXBwaW5nc1BhZ2UKLSMKLVBBR0VfVElUTEVfV1NfQkVBTjJYTUw9V2ViIFNlcnZpY2UgUGFja2FnZSB0byBOYW1lc3BhY2UgTWFwcGluZwotUEFHRV9USVRMRV9XU19YTUwyUFJPWFk9V2ViIFNlcnZpY2UgQ2xpZW50IE5hbWVzcGFjZSB0byBQYWNrYWdlIE1hcHBpbmcKLVBBR0VfREVTQ19QMk5fTUFQUElOR1M9RGVmaW5lIGN1c3RvbSBtYXBwaW5nIGZvciBwYWNrYWdlIHRvIG5hbWVzcGFjZS4KLQotCi1MQUJFTF9NQVBQSU5HX1BBSVJTPU1hcHBpbmcgcGFpcnMKLVRBQkxFX0NPTFVNTl9MQUJFTF9QQUNLQUdFPXBhY2thZ2UKLVRBQkxFX0NPTFVNTl9MQUJFTF9OQU1FU1BBQ0U9bmFtZXNwYWNlCi1MQUJFTF9FWFBMT1JFX01BUFBJTkdTX1hNTDJCRUFOPURlZmluZSBjdXN0b20gbWFwcGluZyBmb3IgbmFtZXNwYWNlIHRvIHBhY2thZ2UuCi1UT09MVElQX04yUF9TSE9XX01BUFBJTkdTPURlZmluZSBuYW1lc3BhY2UgdG8gcGFja2FnZSBtYXBwaW5nIGZvciBjdXN0b21pemF0aW9uLgotCi0jIE1lc3NhZ2VzIGZvciBBeGlzIEVtaXR0ZXIgUHJlZmVyZW5jZSBQYWdlCi1UT09MVElQX1BQQUVfUEFHRT1TZXQgcHJlZmVyZW5jZXMgdGhhdCBjb250cm9sIEF4aXMgRW1pdHRlci4KLVRPT0xUSVBfUFBBRV9DSEVDS0JPWF9BTExfV0FOVEVEPUJ5IGRlZmF1bHQsIGNvZGUgaXMgZ2VuZXJhdGVkIG9ubHkgZm9yIHJlZmVyZW5jZWQgZWxlbWVudHMuIFxuQ2FsbCBiR2VuZXJhdGVBbGwodHJ1ZSkgYW5kIFdTREwySmF2YSB3aWxsIGdlbmVyYXRlIGNvZGUgXG5mb3IgYWxsIGVsZW1lbnRzIGluIHRoZSBzY29wZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBhcmUgcmVmZXJlbmNlZC4gXG5TY29wZSBtZWFuczogYnkgZGVmYXVsdCwgYWxsIFdTREwgZmlsZXM7IGlmIGdlbmVyYXRlSW1wb3J0cyhmYWxzZSksXG50aGVuIG9ubHkgdGhlIGltbWVkaWF0ZSBXU0RMIGZpbGUuCi1UT09MVElQX1BQQUVfQ0hFQ0tCT1hfSEVMUEVSX1dBTlRFRD1FbWl0cyBzZXBhcmF0ZSBIZWxwZXIgY2xhc3NlcyBmb3IgbWV0YSBkYXRhLgotVE9PTFRJUF9QUEFFX0NIRUNLQk9YX1dSQVBfQVJSQVlTPVByZWZlcnMgYnVpbGRpbmcgYmVhbnMgdG8gc3RyYWlnaHQgYXJyYXlzIGZvciB3cmFwcGVkIFhNTCBhcnJheSB0eXBlcy4KLVRPT0xUSVBfUFBBRV9DSEVDS0JPWF9VU0VfSU5IRVJJVEVEX01FVEhPRFM9SWYgdGhpcyBvcHRpb24gaXMgc2VsZWN0ZWQsIHRoZSBKYXZhMldTREwgcGFyc2VyIHdpbGwgbG9vayBpbnRvIGV4dGVuZGVkIGNsYXNzZXMgdG8gZGV0ZXJtaW5lIHRoZSBsaXN0IG9mIG1ldGhvZHMgdG8gZXhwb3J0IGludG8gdGhlIFdTREwgZmlsZS4KLVRPT0xUSVBfUFBBRV9DSEVDS0JPWF9WQUxJREFURV9BR0FJTlNUX0pBWFJQQz1JZiBzZWxlY3RlZCwgdGhlIHRvb2xzIHdpbGwgZXhhbWluZSB0aGUgSmF2YSBzZXJ2aWNlIGNsYXNzIGFuZCBpdHMgdmFsdWUgdHlwZXMgdG8gZGV0ZXJtaW5lIGlmIGl0IHNhdGlzZmllcyBpbXBvcnRhbnQgcmVxdWlyZW1lbnRzIG9mIHRoZSBKQVgtUlBDIHNwZWNpZmljYXRpb24uICAgIAotVE9PTFRJUF9QUEFFX0NPTUJPX0RFUExPWV9TQ09QRT1BZGQgc2NvcGUgdG8gZGVwbG95LndzZGQuCi1UT09MVElQX1BQQUVfRklFTERfVElNRV9PVVQ9VGltZW91dCBpbiBzZWNvbmRzIChkZWZhdWx0IGlzIDQ1LCBzcGVjaWZ5IC0xIHRvIGRpc2FibGUpLgotVE9PTFRJUF9QUEFFX0dST1VQX1dTREwySkFWQT1TZXQgcHJlZmVyZW5jZXMgZm9yIHdzZGwyamF2YS4KLVRPT0xUSVBfUFBBRV9HUk9VUF9KQVZBMldTREw9U2V0IHByZWZlcmVuY2VzIGZvciBqYXZhMndzZGwuCi1CVVRUT05fQUxMX1dBTlRFRD0mR2VuZXJhdGUgY29kZSBmb3IgYWxsIGVsZW1lbnRzLCBldmVuIHVucmVmZXJlbmNlZCBvbmVzCi1CVVRUT05fSEVMUEVSX1dBTlRFRD1FbWl0cyBzZXBhcmF0ZSAmaGVscGVyIGNsYXNzZXMgZm9yIG1ldGEgZGF0YQotQlVUVE9OX1dSQVBfQVJSQVlTPVByZWZlcnMgYnVpbGRpbmcgYmVhbnMgdG8gc3RyYWlnaHQgYXJyYXlzIGZvciAmd3JhcHBlZCBYTUwgYXJyYXkgdHlwZXMKLUJVVFRPTl9VU0VfSU5IRVJJVEVEX01FVEhPRFM9TG9vayBmb3IgYWxsb3dlZCAmbWV0aG9kcyBpbiBpbmhlcml0ZWQgY2xhc3MKLUJVVFRPTl9WQUxJREFURV9BR0FJTlNUX0pBWFJQQz1BbmFseXplIHRoZSBzZXJ2aWNlIGNsYXNzIGZvciBjb21wbGlhbmNlIHRvIEpBWC1SUEMgYmVmb3JlIGdlbmVyYXRpbmcgY29kZQotTEFCRUxfREVQTE9ZX1NDT1BFPUFkZCAmc2NvcGUgdG8gZGVwbG95LndzZGQ6Ci1MQUJFTF9USU1FX09VVD0mVGltZW91dCBpbiBzZWNvbmRzOgotR1JPVVBfV1NETDJKQVZBX05BTUU9V3NkbDJKYXZhCi1HUk9VUF9KQVZBMldTRExfTkFNRT1KYXZhMldzZGwKLURFUExPWV9TQ09QRV9BUFBMSUNBVElPTj1BcHBsaWNhdGlvbgotREVQTE9ZX1NDT1BFX1JFUVVFU1Q9UmVxdWVzdAotREVQTE9ZX1NDT1BFX1NFU1NJT049U2Vzc2lvbgotTVNHX0VSUk9SX0lOVkFMSURfVElNRV9PVVQ9SW52YWxpZCB0aW1lb3V0ISBUaW1lb3V0IHNob3VsZCBiZSBwb3NpdGl2ZSBpbnRlZ2VyIG9yIC0xIHRvIGRpc2FibGUuCi1NU0dfVVNFX0pWTV9BUkdVTUVOVF9GT1JfVElNRV9PVVQ9VXNpbmcgdGltZW91dCB2YWx1ZSAoaW4gbWlsbGlzZWNvbmRzKSBmcm9tIEpWTSBhcmd1bWVudHMgQXhpc1dzZGwySmF2YVRpbWVvdXQKLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS9BeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS9BeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmNDAzOGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIHl5eXltbWRkICAgYnVnICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogMjAwNjAzMjkgICAxMjcwMTYgYW5keXpoYWlAY2EuaWJtLmNvbSAtIEFuZHkgWmhhaQotICogMjAwNjA0MjQgICAxMjAxMzcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzIGV4dGVuZHMgTkxTIHsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCVU5ETEVfTkFNRSA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS5BeGlzQ29uc3VtcHRpb25VSSI7Ly8kTk9OLU5MUy0xJAotCi0JcHJpdmF0ZSBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzKCkgewotCQkvLyBEbyBub3QgaW5zdGFudGlhdGUKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfREVGQVVMVF9CRUFOOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9XU0RMX05PX0RFRklOSVRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1dTRExfTk9fUE9SVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfV1JJVEVfV1NETDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfSU1QT1JUX1dTREw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1dTRExfTE9DQVRJT05fTk9UX1NFVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfV0FSTl9OT19KQVZBX05BVFVSRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQkFEX0JVSUxEUEFUSDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQUk9HUkVTU19JTkZPX0NPUFlfQVhJU19DRkc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0ZJTEVDT1BZOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9SRUZSRVNIX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV0pCX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV0pCX1RFWFRfRk9MREVSOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdKQl9DSEVDS0JPWF9HRU5QUk9YWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1dTX0FYSVNfUFJPWFk7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX1dTX0FYSVNfUFJPWFk7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQ0hFQ0tCT1hfR0VOUFJPWFk7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfRk9MREVSX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9USVRMRV9XU19CRUFOMlhNTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1dTX1hNTDJQUk9YWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX0RFU0NfUDJOX01BUFBJTkdTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX01BUFBJTkdfUEFJUlM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEFCTEVfQ09MVU1OX0xBQkVMX1BBQ0tBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEFCTEVfQ09MVU1OX0xBQkVMX05BTUVTUEFDRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9FWFBMT1JFX01BUFBJTkdTX1hNTDJCRUFOOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfTjJQX1NIT1dfTUFQUElOR1M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUEFFX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUEFFX0NIRUNLQk9YX0FMTF9XQU5URUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUEFFX0NIRUNLQk9YX0hFTFBFUl9XQU5URUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUEFFX0NIRUNLQk9YX1dSQVBfQVJSQVlTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFBBRV9DSEVDS0JPWF9VU0VfSU5IRVJJVEVEX01FVEhPRFM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUEFFX0NIRUNLQk9YX1ZBTElEQVRFX0FHQUlOU1RfSkFYUlBDOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFBBRV9DT01CT19ERVBMT1lfU0NPUEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUEFFX0ZJRUxEX1RJTUVfT1VUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFBBRV9HUk9VUF9XU0RMMkpBVkE7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUEFFX0dST1VQX0pBVkEyV1NETDsJCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgQlVUVE9OX0FMTF9XQU5URUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQlVUVE9OX0hFTFBFUl9XQU5URUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQlVUVE9OX1dSQVBfQVJSQVlTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9VU0VfSU5IRVJJVEVEX01FVEhPRFM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQlVUVE9OX1ZBTElEQVRFX0FHQUlOU1RfSkFYUlBDOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0RFUExPWV9TQ09QRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9USU1FX09VVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBHUk9VUF9XU0RMMkpBVkFfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBHUk9VUF9KQVZBMldTRExfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBERVBMT1lfU0NPUEVfQVBQTElDQVRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgREVQTE9ZX1NDT1BFX1JFUVVFU1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgREVQTE9ZX1NDT1BFX1NFU1NJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0lOVkFMSURfVElNRV9PVVQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1VTRV9KVk1fQVJHVU1FTlRfRk9SX1RJTUVfT1VUOwotCXN0YXRpYyB7Ci0JCU5MUy5pbml0aWFsaXplTWVzc2FnZXMoQlVORExFX05BTUUsIEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuY2xhc3MpOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS9jb21tYW5kL0F4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDIxYjgzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLldTRExQYXJzZXJGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi0vKioKLSAqIAotICogQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kCi0gKiAgCi0gKi8KLXB1YmxpYyBjbGFzcyBBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiAKLXsKLSAgICBwcml2YXRlIGJvb2xlYW4gaXNDbGllbnRTY2VuYXJpb18gID0gdHJ1ZTsKLQlwcml2YXRlIGJvb2xlYW4gY3VzdG9taXplTWFwcGluZ3NfID0gZmFsc2U7Ci0JcHJpdmF0ZSBib29sZWFuIGdlbmVyYXRlUHJveHlfID0gdHJ1ZTsKLQlwcml2YXRlIFN0cmluZyBjbGllbnRSdW50aW1lSWRfOwotCXByaXZhdGUgSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbV87Ci0JcHJpdmF0ZSBJUHJvamVjdCBwcm94eVByb2plY3RfID0gbnVsbDsKLQlwcml2YXRlIElQcm9qZWN0IGNsaWVudFByb2plY3RFQVJfID0gbnVsbDsKLQlwcml2YXRlIFN0cmluZyB3c2RsVVJMXzsKLQlwcml2YXRlIGJvb2xlYW4gdGVzdFByb3h5U2VsZWN0ZWRfOwotCXByaXZhdGUgSVNlcnZlciBjbGllbnRFeGlzdGluZ1NlcnZlcl87Ci0JcHJpdmF0ZSBTdHJpbmcgY2xpZW50U2VydmVyXzsKLQlwcml2YXRlIGJvb2xlYW4gY2xpZW50SXNFeGlzdGluZ1NlcnZlcl87Ci0JcHJpdmF0ZSBTdHJpbmcgcHJveHlQcm9qZWN0Rm9sZGVyXzsKLQlwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyXzsKLQlwdWJsaWMgQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kKCApIAotCXsKLQl9Ci0KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkgCi0JewotCQlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JCQotCQljbGllbnRFeGlzdGluZ1NlcnZlcl8gPSBnZXRTZXJ2ZXJGcm9tU2VydmVyTGFiZWwoKTsKLS8vCQlpZiAoY2xpZW50RXhpc3RpbmdTZXJ2ZXJfICE9IG51bGwpIHsKLS8vCQkJLy9UT0RPIFRoZSBmb2xsb3dpbmcgbGluZSBzaG91bGQgbm8gbG9uZ2VyIGJlIG5lY2Vzc2FyeS4KLS8vCQkJY2xpZW50RXhpc3RpbmdTZXJ2ZXJfLmdldFNlcnZlclR5cGUoKS5nZXRJZCgpOwotLy8JCX0gZWxzZSB7Ci0vLwkJCS8vVE9ETyBnZXQgdGhlIGZhY3RvcnkgaWQgZm9yIHRoZSB0eXBlLgotLy8JCX0KLQkJLy9qYXZhV1NETFBhcmFtCi0JCWphdmFXU0RMUGFyYW1fID0gbmV3IEphdmFXU0RMUGFyYW1ldGVyKCk7Ci0JCQotCQkvLyBwcm94eVByb2plY3RGb2xiZXJfCi0JCQotCQl3ZWJTZXJ2aWNlc1BhcnNlcl8gPSBXU0RMUGFyc2VyRmFjdG9yeS5nZXRXU0RMUGFyc2VyKCk7Ci0JCXJldHVybiBzdGF0dXM7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0Q2xpZW50UnVudGltZUlEKFN0cmluZyBjbGllbnRSdW50aW1lSWQpIHsKLQkJY2xpZW50UnVudGltZUlkXyA9IGNsaWVudFJ1bnRpbWVJZDsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldENsaWVudFJ1bnRpbWVJRCgpIHsKLQkJcmV0dXJuIHRoaXMuY2xpZW50UnVudGltZUlkXzsKLQl9Ci0KLQkvKioKLQkgKiBAcmV0dXJuIFJldHVybnMgdGhlIGphdmFXU0RMUGFyYW0uCi0JICovCi0JcHVibGljIEphdmFXU0RMUGFyYW1ldGVyIGdldEphdmFXU0RMUGFyYW0oKSB7Ci0JCXJldHVybiBqYXZhV1NETFBhcmFtXzsKLQl9Ci0KLQkvKioKLQkgKiBAcmV0dXJuIFJldHVybnMgdGhlIGNsaWVudFByb2plY3QuCi0JICovCi0JcHVibGljIElQcm9qZWN0IGdldENsaWVudFByb2plY3QoKSB7Ci0JCXJldHVybiBwcm94eVByb2plY3RfOwotCX0KLQotCS8qKgotCSAqIEBwYXJhbSBjbGllbnRQcm9qZWN0Ci0JICogICAgICAgICAgICBUaGUgY2xpZW50UHJvamVjdCB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0Q2xpZW50UHJvamVjdChJUHJvamVjdCBjbGllbnRQcm9qZWN0KSB7Ci0JCXRoaXMucHJveHlQcm9qZWN0XyA9IGNsaWVudFByb2plY3Q7Ci0JfQotCi0JLyoqCi0JICogQHJldHVybiBSZXR1cm5zIHRoZSBjbGllbnRQcm9qZWN0RUFSLgotCSAqLwotCXB1YmxpYyBJUHJvamVjdCBnZXRDbGllbnRQcm9qZWN0RUFSKCkgewotCQlyZXR1cm4gY2xpZW50UHJvamVjdEVBUl87Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIGNsaWVudFByb2plY3RFQVIKLQkgKiAgICAgICAgICAgIFRoZSBjbGllbnRQcm9qZWN0RUFSIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRDbGllbnRQcm9qZWN0RUFSKElQcm9qZWN0IGNsaWVudFByb2plY3RFQVIpIHsKLQkJdGhpcy5jbGllbnRQcm9qZWN0RUFSXyA9IGNsaWVudFByb2plY3RFQVI7Ci0JfQotCi0JLyoqCi0JICogQHJldHVybiBSZXR1cm5zIHRoZSB0ZXN0UHJveHlTZWxlY3RlZC4KLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBnZXRUZXN0UHJveHlTZWxlY3RlZCgpIHsKLQkJcmV0dXJuIHRlc3RQcm94eVNlbGVjdGVkXzsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gdGVzdFByb3h5U2VsZWN0ZWQKLQkgKiAgICAgICAgICAgIFRoZSB0ZXN0UHJveHlTZWxlY3RlZCB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0VGVzdFByb3h5U2VsZWN0ZWQoYm9vbGVhbiB0ZXN0UHJveHlTZWxlY3RlZCkgewotCQl0aGlzLnRlc3RQcm94eVNlbGVjdGVkXyA9IHRlc3RQcm94eVNlbGVjdGVkOwotCX0KLQotCS8qKgotCSAqIEByZXR1cm4gUmV0dXJucyB0aGUgd3NkbFVSTC4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFdzZGxVUkwoKSB7Ci0JICByZXR1cm4gd3NkbFVSTF87Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIHdzZGxVUkwKLQkgKiAgICAgICAgICAgIFRoZSB3c2RsVVJMIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRXc2RsVVJMKFN0cmluZyB3c2RsVVJMKSB7Ci0JCXRoaXMud3NkbFVSTF8gPSB3c2RsVVJMOwotCX0KLQotCS8qKgotCSAqIEByZXR1cm4gUmV0dXJucyB0aGUgY2xpZW50U2VydmVyLgotCSAqLwotCXB1YmxpYyBJU2VydmVyIGdldENsaWVudEV4aXN0aW5nU2VydmVyKCkgewotCQlyZXR1cm4gY2xpZW50RXhpc3RpbmdTZXJ2ZXJfOwotCX0KLQotCS8qKgotCSAqIEBwYXJhbSBjbGllbnRTZXJ2ZXIKLQkgKiAgICAgICAgICAgIFRoZSBjbGllbnRTZXJ2ZXIgdG8gc2V0LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldENsaWVudFNlcnZlcihTdHJpbmcgY2xpZW50U2VydmVyKSB7Ci0JCXRoaXMuY2xpZW50U2VydmVyXyA9IGNsaWVudFNlcnZlcjsKLQl9Ci0KLQkvKioKLQkgKiBAcmV0dXJuIFJldHVybnMgdGhlIGNsaWVudElzRXhpc3RpbmdTZXJ2ZXIuCi0JICovCi0JcHVibGljIGJvb2xlYW4gaXNDbGllbnRJc0V4aXN0aW5nU2VydmVyKCkgewotCQlyZXR1cm4gY2xpZW50SXNFeGlzdGluZ1NlcnZlcl87Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIGNsaWVudElzRXhpc3RpbmdTZXJ2ZXIKLQkgKiAgICAgICAgICAgIFRoZSBjbGllbnRJc0V4aXN0aW5nU2VydmVyIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRDbGllbnRJc0V4aXN0aW5nU2VydmVyKGJvb2xlYW4gY2xpZW50SXNFeGlzdGluZ1NlcnZlcikgewotCQl0aGlzLmNsaWVudElzRXhpc3RpbmdTZXJ2ZXJfID0gY2xpZW50SXNFeGlzdGluZ1NlcnZlcjsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBnZXRDdXN0b21pemVDbGllbnRNYXBwaW5ncygpIHsKLQkJcmV0dXJuIGN1c3RvbWl6ZU1hcHBpbmdzXzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRDdXN0b21pemVDbGllbnRNYXBwaW5ncyhib29sZWFuIHZhbHVlKSB7Ci0JCWN1c3RvbWl6ZU1hcHBpbmdzXyA9IHZhbHVlOwotCX0KLQotCXByaXZhdGUgSVNlcnZlciBnZXRTZXJ2ZXJGcm9tU2VydmVyTGFiZWwoKSB7Ci0JCWlmICh0cnVlKQotCQkvLyByc2sgcmV2aXNpdCBpZiAoY2xpZW50SXNFeGlzdGluZ1NlcnZlcl8pCi0JCXsKLQkJCS8vIE1heWJlIHRoaXMgc2hvdWxkIGJlIGluIFdlYlNlcnZpY2VTZXJ2ZXJSdW50aW1lVHlwZVJlZ2lzdHJ5Ci0JCQl7Ci0JCQkJSVNlcnZlcltdIHNlcnZlcnMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlcnMoKTsKLQkJCQlpZiAoc2VydmVycyAhPSBudWxsICYmIHNlcnZlcnMubGVuZ3RoIT0wKSB7Ci0JCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgc2VydmVycy5sZW5ndGg7IGkrKykgewotCQkJCQkJSVNlcnZlciBzZXJ2ZXIgPSAoSVNlcnZlcikgc2VydmVyc1tpXTsKLQkJCQkJCWlmICgoc2VydmVyLmdldE5hbWUoKSkuZXF1YWxzKGNsaWVudFNlcnZlcl8pKQotCQkJCQkJCXJldHVybiBzZXJ2ZXI7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCQkvLwotCQl9IGVsc2UgewotCQkJLy9UT0RPIGNyZWF0ZSB0aGUgc2VydmVyCi0JCX0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCS8qKgotCSAqIEByZXR1cm4gUmV0dXJucyB0aGUgcHJveHlQcm9qZWN0Rm9sZGVyLgotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0UHJveHlQcm9qZWN0Rm9sZGVyKCkgewotCQlpZiAocHJveHlQcm9qZWN0XyE9bnVsbCkgewotCQkJcHJveHlQcm9qZWN0Rm9sZGVyXyA9IFJlc291cmNlVXRpbHMuZ2V0SmF2YVNvdXJjZUxvY2F0aW9uKHByb3h5UHJvamVjdF8gKS50b1N0cmluZygpOwotCQl9CQkKLQkJcmV0dXJuIHByb3h5UHJvamVjdEZvbGRlcl87ICAKLQl9Ci0KLQkvKioKLQkgKiBAcmV0dXJuIFJldHVybnMgdGhlIHdlYlNlcnZpY2VzUGFyc2VyLgotCSAqLwotCXB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpIHsKLQkJcmV0dXJuIHdlYlNlcnZpY2VzUGFyc2VyXzsKLQl9Ci0JLyoqCi0JICogQHBhcmFtIHdlYlNlcnZpY2VzUGFyc2VyIFRoZSB3ZWJTZXJ2aWNlc1BhcnNlciB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXIpIHsKLQkJdGhpcy53ZWJTZXJ2aWNlc1BhcnNlcl8gPSB3ZWJTZXJ2aWNlc1BhcnNlcjsKLQl9Ci0JLyoqCi0JICogQHJldHVybiBSZXR1cm5zIHRoZSBnZW5lcmF0ZVByb3h5LgotCSAqLwotCXB1YmxpYyBib29sZWFuIGdldEdlbmVyYXRlUHJveHkoKSB7Ci0JCXJldHVybiBnZW5lcmF0ZVByb3h5XzsKLQl9Ci0JLyoqCi0JICogQHBhcmFtIGdlbmVyYXRlUHJveHkgVGhlIGdlbmVyYXRlUHJveHkgdG8gc2V0LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldEdlbmVyYXRlUHJveHkoYm9vbGVhbiBnZW5lcmF0ZVByb3h5KSB7Ci0JCXRoaXMuZ2VuZXJhdGVQcm94eV8gPSBnZW5lcmF0ZVByb3h5OwotCX0KLQkKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGlzQ2xpZW50U2NlbmFyaW9fLgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIGdldElzQ2xpZW50U2NlbmFyaW8oKQotICAgIHsKLSAgICAgIHJldHVybiBpc0NsaWVudFNjZW5hcmlvXzsKLSAgICB9Ci0gICAgCi0gICAgLyoqCi0gICAgICogQHBhcmFtIGlzQ2xpZW50U2NlbmFyaW9fIFRoZSBpc0NsaWVudFNjZW5hcmlvXyB0byBzZXQuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgc2V0SXNDbGllbnRTY2VuYXJpbyhib29sZWFuIGlzQ2xpZW50U2NlbmFyaW8pCi0gICAgewotICAgICAgaXNDbGllbnRTY2VuYXJpb18gPSBpc0NsaWVudFNjZW5hcmlvOwotICAgIH0KLSAgICAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0gc2V0RW5kcG9pbnRNZXRob2QgVGhlIHNldEVuZHBvaW50TWV0aG9kIHRvIHNldC4KLSAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNldEVuZHBvaW50TWV0aG9kKCkKLSAgICB7Ci0gICAgICByZXR1cm4gInNldEVuZHBvaW50IjsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS9jb21tYW5kL0F4aXNDbGllbnRJbnB1dENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvQXhpc0NsaWVudElucHV0Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzllZGYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvQXhpc0NsaWVudElucHV0Q29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS5jb21tYW5kOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlQ2xpZW50OwotCi0KLXB1YmxpYyBjbGFzcyBBeGlzQ2xpZW50SW5wdXRDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gewotCQotCXByaXZhdGUgSVdlYlNlcnZpY2VDbGllbnQgd3NjXzsKLQotCQlwcml2YXRlIFN0cmluZyBjbGllbnRQcm9qZWN0XyA9IG51bGw7Ci0JCXByaXZhdGUgU3RyaW5nIHdzZGxVUkxfOwotCQlwcml2YXRlIFN0cmluZyBjbGllbnRTZXJ2ZXJfOwotCQlwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyXzsKLQkgIAotCQkvKioKLQkJKiBEZWZhdWx0IENUT1IKLQkJKi8KLQkJcHVibGljIEF4aXNDbGllbnRJbnB1dENvbW1hbmQoKSB7Ci0JCX0KLQkJCi0JCXB1YmxpYyBBeGlzQ2xpZW50SW5wdXRDb21tYW5kKElXZWJTZXJ2aWNlQ2xpZW50IHdzYywgSUNvbnRleHQgY29udGV4dCwgU3RyaW5nIHByb2plY3QpIHsKLQkJCXdzY18gPSB3c2M7Ci0JCQljbGllbnRQcm9qZWN0XyA9IHByb2plY3Q7IAotCQl9Ci0JCQotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLQl7CSAgICAKLQkJd3NkbFVSTF8gPSB3c2NfLmdldFdlYlNlcnZpY2VDbGllbnRJbmZvKCkuZ2V0V3NkbFVSTCgpOwotCQljbGllbnRTZXJ2ZXJfID0gd3NjXy5nZXRXZWJTZXJ2aWNlQ2xpZW50SW5mbygpLmdldFNlcnZlckluc3RhbmNlSWQoKTsKLQkJCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCSAgfQotCi0JcHVibGljIFN0cmluZyBnZXRDbGllbnRTZXJ2ZXIoKSB7Ci0JCXJldHVybiBjbGllbnRTZXJ2ZXJfOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50UHJvamVjdCgpIHsKLQkJcmV0dXJuIGNsaWVudFByb2plY3RfOwotCX0KLQotCXB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpIHsKLQkJcmV0dXJuIHdlYlNlcnZpY2VzUGFyc2VyXzsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldFdzZGxVUkwoKSB7Ci0JCXJldHVybiB3c2RsVVJMXzsKLQl9Ci0JICAKLQkJCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS9jb21tYW5kL0F4aXNDbGllbnRPdXRwdXRDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS9jb21tYW5kL0F4aXNDbGllbnRPdXRwdXRDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNzI5ZmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvY29tbWFuZC9BeGlzQ2xpZW50T3V0cHV0Q29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNzI4ICAgMTQ1NDI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuY29tbWFuZDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlQ2xpZW50OwotCi0KLXB1YmxpYyBjbGFzcyBBeGlzQ2xpZW50T3V0cHV0Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIHsKLQkKLQlwcml2YXRlIElXZWJTZXJ2aWNlQ2xpZW50IHdzY187Ci0JcHJpdmF0ZSBTdHJpbmcgcHJveHlCZWFuXzsKLQlwcml2YXRlIFN0cmluZyBwcm94eUVuZHBvaW50XzsKLQkgIAotCQkvKioKLQkJKiBEZWZhdWx0IENUT1IKLQkJKi8KLQkJcHVibGljIEF4aXNDbGllbnRPdXRwdXRDb21tYW5kKCkgewotCQl9Ci0JCQotCQlwdWJsaWMgQXhpc0NsaWVudE91dHB1dENvbW1hbmQoSVdlYlNlcnZpY2VDbGllbnQgd3NjLCBJQ29udGV4dCBjb250ZXh0KSB7Ci0JCQl3c2NfID0gd3NjOwotCQl9Ci0JCQotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLQl7CQotCQl3c2NfLmdldFdlYlNlcnZpY2VDbGllbnRJbmZvKCkuc2V0SW1wbFVSTChwcm94eUJlYW5fKTsKLQkJd3NjXy5nZXRXZWJTZXJ2aWNlQ2xpZW50SW5mbygpLnNldFByb3h5RW5kcG9pbnQocHJveHlFbmRwb2ludF8pOwotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQkgIH0KLQotCXB1YmxpYyB2b2lkIHNldFByb3h5QmVhbihTdHJpbmcgcHJveHlCZWFuKSB7Ci0JCXRoaXMucHJveHlCZWFuXyA9IHByb3h5QmVhbjsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRQcm94eUVuZHBvaW50KFN0cmluZyBwcm94eUVuZHBvaW50KSB7Ci0JCXRoaXMucHJveHlFbmRwb2ludF8gPSBwcm94eUVuZHBvaW50OwotCX0KLQkgIAotCQkKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvQ29weUNsaWVudFdTRExDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS9jb21tYW5kL0NvcHlDbGllbnRXU0RMQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmZhNGU3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvQ29weUNsaWVudFdTRExDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwODE1ICAgMTg4OTk5IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFdyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2VSb290OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLkF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbW9uLkZpbGVSZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5CYXNlRWNsaXBzZUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi0KLS8qKgotICoKLSAqLwotcHVibGljIGNsYXNzIENvcHlDbGllbnRXU0RMQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIAotICBwcml2YXRlIFN0cmluZyB3c2RsVVJMXzsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50V1NETFBhdGhOYW1lXzsKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciB3c1BhcnNlcl87Ci0gIAotICBwdWJsaWMgQ29weUNsaWVudFdTRExDb21tYW5kKCkKLSAgewotICAgCi0gIH0KLSAgCi0JcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApIAotCXsKLQkJSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIERlZmluaXRpb24gZGVmID0gd3NQYXJzZXJfLmdldFdTRExEZWZpbml0aW9uKHdzZGxVUkxfKTsKLSAgICBpZihkZWY9PW51bGwpCi0gICAgewotICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1dTRExfTk9fREVGSU5JVElPTiwgbmV3IFN0cmluZ1tde3dzZGxVUkxffSkpOwotICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0gICAgSVBhdGggY2xpZW50V1NETFBhdGggPSBuZXcgUGF0aChjbGllbnRXU0RMUGF0aE5hbWVfKTsKLSAgICBJV29ya3NwYWNlUm9vdCB3b3Jrc3BhY2VSb290ID0gRmlsZVJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpOwotICAgIHN0YXR1cyA9IHJlc29sdmVXU0RMKHdvcmtzcGFjZVJvb3QsIGRlZiwgY2xpZW50V1NETFBhdGgsIGVudiwgbW9uaXRvcik7Ci0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotCi0JcHJpdmF0ZSBJU3RhdHVzIHJlc29sdmVXU0RMKAotCQlJV29ya3NwYWNlUm9vdCB3b3Jrc3BhY2UsCi0JCURlZmluaXRpb24gd3NkbERlZiwKLQkJSVBhdGggd3NkbFBhdGgsCi0JCUlFbnZpcm9ubWVudCBlbnYsIAotCQlJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHsKLQkJdHJ5IHsKLQkJCXdyaXRlV1NETEZpbGUod29ya3NwYWNlLCB3c2RsRGVmLCB3c2RsUGF0aCwgZW52LCBtb25pdG9yKTsKLQkJCU1hcCBpbXBvcnREZWZzID0gd3NkbERlZi5nZXRJbXBvcnRzKCk7Ci0JCQlTZXQga2V5c1NldCA9IGltcG9ydERlZnMua2V5U2V0KCk7Ci0JCQlmb3IgKEl0ZXJhdG9yIGUgPSBrZXlzU2V0Lml0ZXJhdG9yKCk7IGUuaGFzTmV4dCgpOykgewotCQkJCU9iamVjdCBrZXlOYW1lID0gZS5uZXh0KCk7Ci0JCQkJVmVjdG9yIHZlY3RvciA9IChWZWN0b3IpIGltcG9ydERlZnMuZ2V0KGtleU5hbWUpOwotCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgdmVjdG9yLnNpemUoKTsgaSsrKSB7Ci0JCQkJCUltcG9ydCBpbXBvcnREZWYgPSAoSW1wb3J0KSB2ZWN0b3IuZ2V0KGkpOwotCQkJCQlEZWZpbml0aW9uIGRlZiA9IGltcG9ydERlZi5nZXREZWZpbml0aW9uKCk7Ci0JCQkJCVN0cmluZyBuZXdQYXRoU3RyaW5nID0KLQkJCQkJCXdzZGxQYXRoLnRvU3RyaW5nKCkuc3Vic3RyaW5nKAotCQkJCQkJCTAsCi0JCQkJCQkJd3NkbFBhdGgudG9TdHJpbmcoKS5sYXN0SW5kZXhPZigiLyIpICsgMSk7CSAvLyROT04tTkxTLTEkCi0JCQkJCWlmIChpc0ludmFsaWRJbXBvcnRXU0RMKGltcG9ydERlZi5nZXRMb2NhdGlvblVSSSgpKSkgewotCQkJCQkgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9JTVBPUlRfV1NETCxuZXcgU3RyaW5nW117aW1wb3J0RGVmLmdldExvY2F0aW9uVVJJKCl9KSk7Ci0JCQkJCX0KLQkJCQkJSVBhdGggbmV3UGF0aCA9Ci0JCQkJCQluZXcgUGF0aChuZXdQYXRoU3RyaW5nICsgaW1wb3J0RGVmLmdldExvY2F0aW9uVVJJKCkpOwotCQkJCQlJU3RhdHVzIHN0YXR1cyA9IHJlc29sdmVXU0RMKHdvcmtzcGFjZSwgZGVmLCBuZXdQYXRoLCBlbnYsIG1vbml0b3IpOwotCQkJCQlpZiAoc3RhdHVzICE9IG51bGwKLQkJCQkJCSYmIHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgewotCQkJCQkJcmV0dXJuIHN0YXR1czsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggTkxTLmJpbmQoQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfV1JJVEVfV1NETCxuZXcgU3RyaW5nW10geyB3c2RsUGF0aC50b1N0cmluZygpIH0pLCBlKTsKLQkJfQotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0KLQlwcml2YXRlIGJvb2xlYW4gaXNJbnZhbGlkSW1wb3J0V1NETChTdHJpbmcgd3NkbFBhdGgpIHsKLQotCQkvLyByZWxhdGl2ZSB1cmwKLQkJaWYgKCF3c2RsUGF0aC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoImh0dHA6Ly8iKSkgeyAvLyROT04tTkxTLTEkCi0KLQkJCWlmICh3c2RsUGF0aC5pbmRleE9mKCIvIikgIT0gLTEpIHsgLy8kTk9OLU5MUy0xJAotCQkJCWlmICghd3NkbFBhdGguc3RhcnRzV2l0aCgiLi8iKSkgeyAvLyROT04tTkxTLTEkCi0JCQkJCXJldHVybiB0cnVlOwotCQkJCX0KLQkJCX0KLQotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQlwcml2YXRlIHZvaWQgd3JpdGVXU0RMRmlsZSgKLQkJSVdvcmtzcGFjZVJvb3Qgd29ya3NwYWNlLAotCQlEZWZpbml0aW9uIHdzZGxEZWYsCi0JCUlQYXRoIHdzZGxQYXRoLAotCQlJRW52aXJvbm1lbnQgZW52LCAKLQkJSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKQotCQl0aHJvd3MgRXhjZXB0aW9uIHsKLQotCQlCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKLQkJLy9XU0RMRmFjdG9yeSB3c2RsRmFjdG9yeSA9IFdTRExGYWN0b3J5Lm5ld0luc3RhbmNlKCk7Ci0JCS8vV1NETFdyaXRlciB3c2RsV3JpdGVyID0gd3NkbEZhY3RvcnkubmV3V1NETFdyaXRlcigpOwotCQlXU0RMV3JpdGVyIHdzZGxXcml0ZXIgPSAobmV3IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwud3NkbDRqLldTRExGYWN0b3J5SW1wbCgpKS5uZXdXU0RMV3JpdGVyKCk7Ci0JCXdzZGxXcml0ZXIud3JpdGVXU0RMKHdzZGxEZWYsIGJhb3MpOwotCQlieXRlW10gYiA9IGJhb3MudG9CeXRlQXJyYXkoKTsKLQkJQnl0ZUFycmF5SW5wdXRTdHJlYW0gYmFpcyA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShiKTsKLQotICAgIFJlc291cmNlQ29udGV4dCBjb250ZXh0ID0gKChCYXNlRWNsaXBzZUVudmlyb25tZW50KWVudikuZ2V0UmVzb3VyY2VDb250ZXh0KCk7ICAgIAotICAgIAotCQlGaWxlUmVzb3VyY2VVdGlscy5jcmVhdGVGaWxlKAotCQkJY29udGV4dCwKLQkJCXdzZGxQYXRoLm1ha2VBYnNvbHV0ZSgpLAotCQkJYmFpcywKLQkJCW1vbml0b3IsCi0JCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpKTsKLQotCQliYW9zLmNsb3NlKCk7Ci0JCWJhaXMuY2xvc2UoKTsKLQotCX0gIAotICAKLSAgLyoqCi0gICAqIEBwYXJhbSBjbGllbnRXU0RMUGF0aE5hbWVfIFRoZSBjbGllbnRXU0RMUGF0aE5hbWVfIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFdTRExQYXRoTmFtZShTdHJpbmcgY2xpZW50V1NETFBhdGhOYW1lKQotICB7Ci0gICAgdGhpcy5jbGllbnRXU0RMUGF0aE5hbWVfID0gY2xpZW50V1NETFBhdGhOYW1lOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gd3NkbFVSTF8gVGhlIHdzZGxVUkxfIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdzZGxVUkwoU3RyaW5nIHdzZGxVUkwpCi0gIHsKLSAgICB0aGlzLndzZGxVUkxfID0gd3NkbFVSTDsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIHdzUGFyc2VyXyBUaGUgd3NQYXJzZXJfIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHdzUGFyc2VyKQotICB7Ci0gICAgdGhpcy53c1BhcnNlcl8gPSB3c1BhcnNlcjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvY29tbWFuZC9EZWZhdWx0c0ZvckNsaWVudEphdmFXU0RMQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvY29tbWFuZC9EZWZhdWx0c0ZvckNsaWVudEphdmFXU0RMQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmM1ZWMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvRGVmYXVsdHNGb3JDbGllbnRKYXZhV1NETENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMTYgICAxMTUxNDQgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjA1MDMgICAxMjY4MTkgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA4MDEyMiAgIDIxNTg2NiB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZyBIYQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5BeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS51dGlsLlBsYXRmb3JtVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUuTW9kdWxlQ29yZU5hdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi1wdWJsaWMgY2xhc3MgRGVmYXVsdHNGb3JDbGllbnRKYXZhV1NETENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotCXByaXZhdGUgSmF2YVdTRExQYXJhbWV0ZXIJamF2YVdTRExQYXJhbV87Ci0JcHJpdmF0ZSBJUHJvamVjdAkJCQkJcHJveHlQcm9qZWN0XzsKLQlwcml2YXRlIFN0cmluZwkJCQkJCVdTRExTZXJ2aWNlVVJMXzsKLQlwcml2YXRlIFN0cmluZwkJCQkJCVdTRExTZXJ2aWNlUGF0aG5hbWVfOwotCXByaXZhdGUgU3RyaW5nCQkJCQkJb3V0cHV0Rm9sZGVyXzsKLQotCXB1YmxpYyBEZWZhdWx0c0ZvckNsaWVudEphdmFXU0RMQ29tbWFuZCgpCi0JewotCX0KLQotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSkKLQl7Ci0JCUlFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0JCUlTdGF0dXMgc3RhdHVzOwotCQkKLQkJaWYoIG91dHB1dEZvbGRlcl8gPT0gbnVsbCApCi0JCXsKLQkJCUlQYXRoW10gcGF0aHMgPSBSZXNvdXJjZVV0aWxzLmdldEFsbEphdmFTb3VyY2VMb2NhdGlvbnMocHJveHlQcm9qZWN0Xyk7Ci0JCQlvdXRwdXRGb2xkZXJfID0gcGF0aHNbMF0udG9TdHJpbmcoKTsKLQkJfQotCQkKLQkJaWYgKGphdmFXU0RMUGFyYW1fID09IG51bGwpCi0JCXsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzCi0JCQkJCS5lcnJvclN0YXR1cyhBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuTVNHX0VSUk9SX0pBVkFfV1NETF9QQVJBTV9OT1RfU0VUKTsKLQkJCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJcmV0dXJuIHN0YXR1czsKLQkJfQotCQlqYXZhV1NETFBhcmFtXy5zZXRNZXRhSW5mT25seShmYWxzZSk7Ci0JCWphdmFXU0RMUGFyYW1fLnNldFNlcnZlclNpZGUoSmF2YVdTRExQYXJhbWV0ZXIuU0VSVkVSX1NJREVfTk9ORSk7Ci0JCU1vZHVsZUNvcmVOYXR1cmUgbW4gPSBNb2R1bGVDb3JlTmF0dXJlLmdldE1vZHVsZUNvcmVOYXR1cmUocHJveHlQcm9qZWN0Xyk7Ci0JCWlmIChtbiAhPSBudWxsKQotCQl7Ci0JCQlJUGF0aCB3ZWJNb2R1bGVTZXJ2ZXJSb290ID0gUmVzb3VyY2VVdGlscy5nZXRKYXZhU291cmNlTG9jYXRpb24ocHJveHlQcm9qZWN0Xyk7Ci0JCQkvLyBTdHJpbmcgb3V0cHV0ID0gUGxhdGZvcm1VdGlscy5nZXRQbGF0Zm9ybVVSTCh3ZWJNb2R1bGVTZXJ2ZXJSb290KTsKLQkJCVN0cmluZyBvdXRwdXQgPSBSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZSh3ZWJNb2R1bGVTZXJ2ZXJSb290KS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JCQkvLyBTdHJpbmcgb3V0cHV0ID0KLQkJCS8vIFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZvbGRlcih3ZWJNb2R1bGVTZXJ2ZXJSb290KS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JCQlJUGF0aCBqYXZhT3V0cHV0ID0gUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UoIG5ldyBQYXRoKCBvdXRwdXRGb2xkZXJfICkpLmdldExvY2F0aW9uKCk7Ci0JCQlqYXZhV1NETFBhcmFtXy5zZXRKYXZhT3V0cHV0KGphdmFPdXRwdXQudG9TdHJpbmcoKSk7Ci0JCQkKLQotCQkJSVBhdGggd2ViTW9kdWxlUGF0aCA9IFJlc291cmNlVXRpbHMuZ2V0V2ViQ29tcG9uZW50U2VydmVyUm9vdFBhdGgocHJveHlQcm9qZWN0Xyk7Ci0JCQkvLyBvdXRwdXQgPSBQbGF0Zm9ybVV0aWxzLmdldFBsYXRmb3JtVVJMKHdlYk1vZHVsZVBhdGgpOwotCQkJSVJlc291cmNlIHJlcyA9IFJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKHdlYk1vZHVsZVBhdGgpOwotCQkJaWYgKHJlcyAhPSBudWxsKSB7Ci0JCQkJb3V0cHV0ID0gcmVzLmdldExvY2F0aW9uKCkudG9TdHJpbmcoKTsKLQkJCX0KLQkJCWphdmFXU0RMUGFyYW1fLnNldE91dHB1dChvdXRwdXQpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJLy8gQ2hlY2sgaWYgaXQncyBhIHBsYWluIG9sZCBKYXZhIHByb2plY3QKLQkJCWlmIChSZXNvdXJjZVV0aWxzLmlzSmF2YVByb2plY3QocHJveHlQcm9qZWN0XykpCi0JCQl7Ci0JCQkJSVBhdGggb3V0cHV0ID0gUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UoIG5ldyBQYXRoKCBvdXRwdXRGb2xkZXJfICkpLmdldExvY2F0aW9uKCk7Ci0JCQkJamF2YVdTRExQYXJhbV8uc2V0SmF2YU91dHB1dChvdXRwdXQudG9TdHJpbmcoKSk7Ci0JCQkJamF2YVdTRExQYXJhbV8uc2V0T3V0cHV0KG91dHB1dC50b1N0cmluZygpKTsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvLyBOb3QgZmFtaWxpYXIgd2l0aCB0aGlzIGtpbmQgb2YgcHJvamVjdAotCQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1dBUk5fTk9fSkFWQV9OQVRVUkUpOwotCQkJCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJCXJldHVybiBzdGF0dXM7Ci0JCQl9Ci0JCX0KLQkJaWYgKFdTRExTZXJ2aWNlUGF0aG5hbWVfID09IG51bGwpCi0JCXsKLQkJCWlmIChXU0RMU2VydmljZVVSTF8gPT0gbnVsbCkKLQkJCXsKLQkJCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9XU0RMX0xPQ0FUSU9OX05PVF9TRVQpOwotCQkJCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJCXJldHVybiBzdGF0dXM7Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlXU0RMU2VydmljZVVSTF8gPSBQbGF0Zm9ybVV0aWxzLmdldEZpbGVGcm9tUGxhdGZvcm0oV1NETFNlcnZpY2VQYXRobmFtZV8pOwotCQl9Ci0JCWphdmFXU0RMUGFyYW1fLnNldElucHV0V3NkbExvY2F0aW9uKFdTRExTZXJ2aWNlVVJMXyk7Ci0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGphdmFXU0RMUGFyYW0uCi0JICogCi0JICogQHJldHVybiBKYXZhV1NETFBhcmFtZXRlcgotCSAqLwotCXB1YmxpYyBKYXZhV1NETFBhcmFtZXRlciBnZXRKYXZhV1NETFBhcmFtKCkKLQl7Ci0JCXJldHVybiBqYXZhV1NETFBhcmFtXzsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBqYXZhV1NETFBhcmFtLgotCSAqIAotCSAqIEBwYXJhbSBqYXZhV1NETFBhcmFtCi0JICogICAgICAgICAgVGhlIGphdmFXU0RMUGFyYW0gdG8gc2V0Ci0JICovCi0JcHVibGljIHZvaWQgc2V0SmF2YVdTRExQYXJhbShKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtKQotCXsKLQkJdGhpcy5qYXZhV1NETFBhcmFtXyA9IGphdmFXU0RMUGFyYW07Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIHByb3h5UHJvamVjdF8KLQkgKiAgICAgICAgICBUaGUgcHJveHlQcm9qZWN0XyB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0UHJveHlQcm9qZWN0KElQcm9qZWN0IHByb3h5UHJvamVjdCkKLQl7Ci0JCXRoaXMucHJveHlQcm9qZWN0XyA9IHByb3h5UHJvamVjdDsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gc2VydmljZVVSTF8KLQkgKiAgICAgICAgICBUaGUgd1NETFNlcnZpY2VVUkxfIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRXU0RMU2VydmljZVVSTChTdHJpbmcgc2VydmljZVVSTCkKLQl7Ci0JCVdTRExTZXJ2aWNlVVJMXyA9IHNlcnZpY2VVUkw7Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIHNlcnZpY2VQYXRobmFtZV8KLQkgKiAgICAgICAgICBUaGUgd1NETFNlcnZpY2VQYXRobmFtZV8gdG8gc2V0LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldFdTRExTZXJ2aWNlUGF0aG5hbWUoU3RyaW5nIHNlcnZpY2VQYXRobmFtZSkKLQl7Ci0JCVdTRExTZXJ2aWNlUGF0aG5hbWVfID0gc2VydmljZVBhdGhuYW1lOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0T3V0cHV0Rm9sZGVyKCkKLQl7Ci0JICByZXR1cm4gb3V0cHV0Rm9sZGVyXzsJCi0JfQotCQotCXB1YmxpYyB2b2lkIHNldE91dHB1dEZvbGRlcihTdHJpbmcgb3V0cHV0Rm9sZGVyKQotCXsKLQkJb3V0cHV0Rm9sZGVyXyA9IG91dHB1dEZvbGRlcjsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS9wbHVnaW4vV2ViU2VydmljZUF4aXNDb25zdW1wdGlvblVJUGx1Z2luLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS9wbHVnaW4vV2ViU2VydmljZUF4aXNDb25zdW1wdGlvblVJUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMzBiZGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvcGx1Z2luL1dlYlNlcnZpY2VBeGlzQ29uc3VtcHRpb25VSVBsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnBsdWdpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwotCi0KLS8qKgotKiBUaGlzIGlzIHRoZSBwbHVnaW4gY2xhc3MgZm9yIHRoZSBXZWIgU2VydmljZXMgcGx1Z2luLgotKiA8cD4KLSogVGhpcyBwbHVnaW4gY29udGFpbnMgdGhlIGdyYXBoaWMgdXNlciBpbnRlcmZhY2UgdG8gdGhlCi0qIFdlYiBTZXJ2aWNlcyBydW50aW1lIGZvdW5kIGluIG9yZy5lY2xpcHNlLmpzdC53cy4KLSovCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZUF4aXNDb25zdW1wdGlvblVJUGx1Z2luIGV4dGVuZHMgUGx1Z2luCi17Ci0KLQkvKioKLQkqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXNjcmlwdG9yIG9mIHRoaXMgcGx1Z2luIGluIHBsdWdpbi54bWwuCi0JKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJRCA9Ci0JCSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aSI7Ci0KLQkvKioKLQkqIFRoZSByZWZlcmVuY2UgdG8gdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIHBsdWdpbi4KLQkqLwotCXByaXZhdGUgc3RhdGljIFdlYlNlcnZpY2VBeGlzQ29uc3VtcHRpb25VSVBsdWdpbiBpbnN0YW5jZV87Ci0JcHJpdmF0ZSBJTG9nIGxvZ187Ci0KLQkvKioKLQkqIENvbnN0cnVjdHMgYSBydW50aW1lIHBsdWdpbiBvYmplY3QgZm9yIHRoaXMgcGx1Z2luLgotCSogVGhlICJwbHVnaW4iIGVsZW1lbnQgaW4gcGx1Z2luLnhtbCBzaG91bGQgaW5jbHVkZSB0aGUgYXR0cmlidXRlCi0JKiBjbGFzcyA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkucGx1Z2luLldlYlNlcnZpY2VQbHVnaW4iLgotCSogQHBhcmFtIGRlc2NyaXB0b3IgVGhlIGRlc2NyaXB0b3Igb2YgdGhpcyBwbHVnaW4uCi0JKi8KLQlwdWJsaWMgV2ViU2VydmljZUF4aXNDb25zdW1wdGlvblVJUGx1Z2luKCkgewotCQlzdXBlcigpOwotCQlpZiAoaW5zdGFuY2VfID09IG51bGwpIHsKLQkJCWluc3RhbmNlXyA9IHRoaXM7Ci0JCX0KLQkJbG9nXyA9IEVudmlyb25tZW50U2VydmljZS5nZXRFY2xpcHNlTG9nKCk7Ci0KLQl9Ci0KLSAgLy8gVGhpcyBtZXRob2QgaXMgbmVlZGVkIHRvIGtlZXAgdGhlIGxvZ2dpbmcgZnJvbSBibG93aW5nIHVwLgotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIHJldHVybiBJRDsgIAotICB9Ci0gIAotCS8qKgotCSogUmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgcGx1Z2luLiBFcXVpdmFsZW50IHRvIGNhbGxpbmcKLQkqIChXZWJTZXJ2aWNlV2FzQ29uc3VtcHRpb25QbHVnaW4pUGxhdGZvcm0uZ2V0UGx1Z2luKCJvcmcuZWNsaXBzZS5qc3Qud3Mud2FzLnY1LnRwIik7Ci0JKiBAcmV0dXJuIFRoZSBXZWJTZXJ2aWNlV2FzQ29uc3VtcHRpb25QbHVnaW4gc2luZ2xldG9uLgotCSovCi0Jc3RhdGljIHB1YmxpYyBXZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uVUlQbHVnaW4gZ2V0SW5zdGFuY2UoKSB7Ci0JCXJldHVybiBpbnN0YW5jZV87Ci0JfQotCi0JLyoqCi0JKiBDYWxsZWQgb25jZSBieSB0aGUgcGxhdGZvcm0gd2hlbiB0aGlzIHBsdWdpbiBpcyBmaXJzdCBsb2FkZWQuCi0JKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gSWYgdGhpcyBwbHVnaW4gZmFpbHMgdG8gc3RhcnQuCi0JKi8KLQlwdWJsaWMgdm9pZCBzdGFydCggQnVuZGxlQ29udGV4dCBidW5kbGUgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCWxvZ18ubG9nKElMb2cuSU5GTywgNTA2NiwgdGhpcywgInN0YXJ0IiwgIlN0YXJ0aW5nIHBsdWdpbiBvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aSIpOwotICAgIAotICAgIHRyeQotICAgIHsKLQkJICBzdXBlci5zdGFydCggYnVuZGxlICk7Ci0gICAgfQotICAgIGNhdGNoKCBFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICBsb2dfLmxvZyggSUxvZy5FUlJPUiwgNTA2NiwgdGhpcywgInN0YXJ0IiwgZXhjICk7Ci0gICAgfQotCX0KLQotCS8qKgotCSogQ2FsbGVkIG9uY2UgYnkgdGhlIHBsYXRmb3JtIHdoZW4gdGhpcyBwbHVnaW4gaXMgdW5sb2FkZWQuCi0JKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gSWYgdGhpcyBwbHVnaW4gZmFpbHMgdG8gc2h1dGRvd24uCi0JKi8KLQlwdWJsaWMgdm9pZCBzdG9wKCBCdW5kbGVDb250ZXh0IGNvbnRleHQgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCWxvZ18ubG9nKElMb2cuSU5GTywgNTA2NywgdGhpcywgInNodXRkb3duIiwgIlNodXR0aW5nIHBsdWdpbiBvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aSIpOwotICAgIAotICAgIHRyeQotICAgIHsKLQkJICBzdXBlci5zdG9wKCBjb250ZXh0ICk7Ci0gICAgfQotICAgIGNhdGNoKCBFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICBsb2dfLmxvZyggSUxvZy5FUlJPUiwgNTA2NiwgdGhpcywgInN0b3AiLCBleGMgKTsgICAgICAKLSAgICB9Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvQXhpc0VtaXR0ZXJQcmVmZXJlbmNlUGFnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvQXhpc0VtaXR0ZXJQcmVmZXJlbmNlUGFnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjZjYzYwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3ByZWZlcmVuY2VzL0F4aXNFbWl0dGVyUHJlZmVyZW5jZVBhZ2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogeXl5eW1tZGQgICBidWcgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAyMDA2MDMyOSAgIDEyNzAxNiBhbmR5emhhaUBjYS5pYm0uY29tIC0gQW5keSBaaGFpICAgIAotICogMjAwODA0MjggICAyMjQ3MjYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnByZWZlcmVuY2VzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZ1BhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5JTWVzc2FnZVByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnByZWZlcmVuY2UuUHJlZmVyZW5jZVBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb250ZXh0LkF4aXNFbWl0dGVyQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbnRleHQuQXhpc0VtaXR0ZXJEZWZhdWx0czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnBsdWdpbi5XZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uQ29yZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS5BeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmN1c3RvbS5TdGFja0xheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbWJvOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkdyb3VwOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoUHJlZmVyZW5jZVBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5oZWxwLklXb3JrYmVuY2hIZWxwU3lzdGVtOwotCi0KLQotcHVibGljIGNsYXNzIEF4aXNFbWl0dGVyUHJlZmVyZW5jZVBhZ2UgZXh0ZW5kcyBQcmVmZXJlbmNlUGFnZSBpbXBsZW1lbnRzIElXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZQotewotICAvKkNPTlRFWFRfSUQgUFBBRTAwMDEgZm9yIHRoZSBBeGlzIEVtaXR0ZXIgUHJlZmVyZW5jZSBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QUEFFX1BBR0UgPSBXZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uVUlQbHVnaW4uSUQgKyAiLlBQQUUwMDAxIjsKLSAgLy8KLSAgcHJpdmF0ZSBCdXR0b24gYWxsV2FudGVkOwotICAvKkNPTlRFWFRfSUQgUFBBRTAwMDIgZm9yIHRoZSBhbGwgd2FudGVkIGNoZWNrIGJveCBvbiB0aGUgQXhpcyBFbWl0dGVyIFByZWZlcmVuY2UgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFBBRV9DSEVDS0JPWF9BTExfV0FOVEVEID0gIlBQQUUwMDAyIjsKLSAgLy8KLSAgcHJpdmF0ZSBCdXR0b24gaGVscGVyV2FudGVkOwotICAvKkNPTlRFWFRfSUQgUFBBRTAwMDMgZm9yIGhlbHBlciB3YW50ZWQgY2hlY2sgYm94IG9uIHRoZSBBeGlzIEVtaXR0ZXIgUHJlZmVyZW5jZSBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QUEFFX0NIRUNLQk9YX0hFTFBFUl9XQU5URUQgPSAiUFBBRTAwMDMiOwotICAvLwotICBwcml2YXRlIEJ1dHRvbiB3cmFwQXJyYXlzOwotICAvKkNPTlRFWFRfSUQgUFBBRTAwMDQgZm9yIHRoZSB3cmFwIGFycmF5cyBjaGVjayBib3ggb24gdGhlIEF4aXMgRW1pdHRlciBQcmVmZXJlbmNlIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BQQUVfQ0hFQ0tCT1hfV1JBUF9BUlJBWVMgPSAiUFBBRTAwMDQiOwotCi0gIHByaXZhdGUgQ29tYm8gZGVwbG95U2NvcGVUeXBlczsKLSAgLy8qQ09OVEVYVF9JRCBQUEFFMDAwNSBmb3IgdGhlIGRlcGxveSBzY29wZSB0eXBlIGNvbWJvIGJveCBvbiB0aGUgQXhpcyBFbWl0dGVyIHBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BQQUVfQ09NQk9fREVQTE9ZX1NDT1BFID0gIlBQQUUwMDA1IjsKLSAgCi0gIHByaXZhdGUgU3RhY2tMYXlvdXQgdGltZU91dFN1YkNvbXBvc2l0ZVN0YWNrTGF5b3V0OwotICAKLSAgcHJpdmF0ZSBUZXh0IHRpbWVPdXRGaWVsZDsKLSAgaW50IHRpbWVPdXQ7Ci0gIFN0cmluZyB3c2RsMkphdmFUaW1lb3V0UHJvcGVydHkgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIkF4aXNXc2RsMkphdmFUaW1lb3V0Iik7Ci0gIAotICBwcml2YXRlIFRleHQgdGltZU91dE1zZ1RleHQ7Ci0gIC8qQ09OVEVYVF9JRCBQUEFFMDAwNiBmb3IgdGhlIHRpbWUgb3V0IGZpZWxkIG9uIHRoZSBBeGlzIEVtaXR0ZXIgUHJlZmVyZW5jZSBwYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QUEFFX0ZJRUxEX1RJTUVfT1VUID0gIlBQQUUwMDA2IjsKLQotICBwcml2YXRlIEJ1dHRvbiB1c2VJbmhlcml0ZWRNZXRob2RzOwotICAvKkNPTlRFWFRfSUQgUFBBRTAwMDcgZm9yIHRoZSB1c2UgaW5oZXJpdGVkIG1ldGhvZHMgY2hlY2sgYm94IG9uIHRoZSBBeGlzIEVtaXR0ZXIgUHJlZmVyZW5jZSBwYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QUEFFX0NIRUNLQk9YX1VTRV9JTkhFUklURURfTUVUSE9EUyA9ICJQUEFFMDAwNyI7Ci0KLSAgcHJpdmF0ZSBCdXR0b24gdmFsaWRhdGVBZ2FpbnN0SkFYUlBDOwotICAvKkNPTlRFWFRfSUQgUFBBRTAwMTAgZm9yIHRoZSAidmFsaWRhdGUgYWdhaW5zdCBKQVhSUEMuLi4iIGNoZWNrIGJveCBvbiB0aGUgQXhpcyBFbWl0dGVyIFByZWZlcmVuY2UgcGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFBBRV9DSEVDS0JPWF9WQUxJREFURV9BR0FJTlNUX0pBWFJQQyA9ICJQUEFFMDAxMCI7Ci0gIAotICAvKkNPTlRFWFRfSUQgUFBBRTAwMDggZm9yIHRoZSB3c2RsMmphdmEgZ3JvdXAgb24gdGhlIEF4aXMgRW1pdHRlciBQcmVmZXJlbmNlIHBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BQQUVfR1JPVVBfV1NETDJKQVZBID0gIlBQQUUwMDA4IjsKLSAgLypDT05URVhUX0lEIFBQQUUwMDA5IGZvciB0aGUgamF2YTJ3c2RsIGdyb3VwIG9uIHRoZSBBeGlzIEVtaXR0ZXIgUHJlZmVyZW5jZSBwYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QUEFFX0dST1VQX0pBVkEyV1NETCA9ICJQUEFFMDAwOSI7Ci0vKioKLSAgICogQ3JlYXRlcyBwcmVmZXJlbmNlIHBhZ2UgY29udHJvbHMgb24gZGVtYW5kLgotICAgKiAgIEBwYXJhbSBwYXJlbnQgIHRoZSBwYXJlbnQgZm9yIHRoZSBwcmVmZXJlbmNlIHBhZ2UKLSAgICovCi0gIHByb3RlY3RlZCBDb250cm9sIGNyZWF0ZUNvbnRlbnRzKENvbXBvc2l0ZSBzdXBlcnBhcmVudCkKLSAgewotCVVJVXRpbHMgdXRpbHMgPSBuZXcgVUlVdGlscyggV2ViU2VydmljZUF4aXNDb25zdW1wdGlvblVJUGx1Z2luLklEICk7Ci0gIAlJV29ya2JlbmNoSGVscFN5c3RlbSBoZWxwU3lzdGVtID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCk7Ci0gIAkKLSAgICBDb21wb3NpdGUgICBwYXJlbnQgPSBuZXcgQ29tcG9zaXRlKCBzdXBlcnBhcmVudCwgU1dULk5PTkUgKTsJCi0gICAgR3JpZExheW91dCBsYXlvdXQgPSBuZXcgR3JpZExheW91dCgpOwotICAgIGxheW91dC5udW1Db2x1bW5zID0gMTsKLSAgICBwYXJlbnQuc2V0TGF5b3V0KCBsYXlvdXQgKTsKLSAgICBwYXJlbnQuc2V0VG9vbFRpcFRleHQoQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BQQUVfUEFHRSk7Ci0gICAgaGVscFN5c3RlbS5zZXRIZWxwKHBhcmVudCwgSU5GT1BPUF9QUEFFX1BBR0UpOwotICAgIEdyb3VwIHdzZGwySmF2YUdyb3VwID0gdXRpbHMuY3JlYXRlR3JvdXAocGFyZW50LCBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkdST1VQX1dTREwySkFWQV9OQU1FLCBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFBBRV9HUk9VUF9XU0RMMkpBVkEsIElORk9QT1BfUFBBRV9HUk9VUF9XU0RMMkpBVkEsIDIsIDEwLDEwKTsKLSAgICBhbGxXYW50ZWQgPSBjcmVhdGVDaGVja0JveCh3c2RsMkphdmFHcm91cCwgQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5CVVRUT05fQUxMX1dBTlRFRCxBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFBBRV9DSEVDS0JPWF9BTExfV0FOVEVELElORk9QT1BfUFBBRV9DSEVDS0JPWF9BTExfV0FOVEVEKTsKLQotICAgIGhlbHBlcldhbnRlZCAgPSBjcmVhdGVDaGVja0JveCh3c2RsMkphdmFHcm91cCwgQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5CVVRUT05fSEVMUEVSX1dBTlRFRCxBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFBBRV9DSEVDS0JPWF9IRUxQRVJfV0FOVEVELElORk9QT1BfUFBBRV9DSEVDS0JPWF9IRUxQRVJfV0FOVEVEKTsKLQotICAgIHdyYXBBcnJheXMgPSBjcmVhdGVDaGVja0JveCh3c2RsMkphdmFHcm91cCwgQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5CVVRUT05fV1JBUF9BUlJBWVMsQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BQQUVfQ0hFQ0tCT1hfV1JBUF9BUlJBWVMsSU5GT1BPUF9QUEFFX0NIRUNLQk9YX1dSQVBfQVJSQVlTKTsgICAgCi0gICAgCi0gICAgZGVwbG95U2NvcGVUeXBlcyA9IHV0aWxzLmNyZWF0ZUNvbWJvKHdzZGwySmF2YUdyb3VwLCBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0RFUExPWV9TQ09QRSwgQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BQQUVfQ09NQk9fREVQTE9ZX1NDT1BFLCBJTkZPUE9QX1BQQUVfQ09NQk9fREVQTE9ZX1NDT1BFLCBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8IFNXVC5SRUFEX09OTFkpOwotICAgIC8qIAotICAgICAqIEVuc3VyZSB0aGUgb3JkZXIgaXMgdGhlIHNhbWUgYXMgaXQgaW4gdGhlIGZpZWxkcyBmb3IgY2xhc3MKLSAgICAgKiBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbnRleHQuQXhpc0VtaXR0ZXJDb250ZXh0Ci0gICAgICovCi0gICAgZGVwbG95U2NvcGVUeXBlcy5zZXRJdGVtcyhuZXcgU3RyaW5nIFtde0F4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuREVQTE9ZX1NDT1BFX0FQUExJQ0FUSU9OLCBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkRFUExPWV9TQ09QRV9SRVFVRVNULEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuREVQTE9ZX1NDT1BFX1NFU1NJT059KTsKLSAgICAKLSAgICBMYWJlbCB0aW1lb3V0TGFiZWwgPSBuZXcgTGFiZWwod3NkbDJKYXZhR3JvdXAsIFNXVC5XUkFQKTsKLSAgICB0aW1lb3V0TGFiZWwuc2V0VGV4dChBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1RJTUVfT1VUKTsKLSAgICB0aW1lb3V0TGFiZWwuc2V0VG9vbFRpcFRleHQoQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BQQUVfRklFTERfVElNRV9PVVQpOwotICAgIAotICAgIENvbXBvc2l0ZSB0aW1lT3V0U3ViQ29tcG9zaXRlID0gdXRpbHMuY3JlYXRlQ29tcG9zaXRlKHdzZGwySmF2YUdyb3VwLCAxKTsKLSAgICB0aW1lT3V0U3ViQ29tcG9zaXRlU3RhY2tMYXlvdXQgPSBuZXcgU3RhY2tMYXlvdXQoKTsKLSAgICB0aW1lT3V0U3ViQ29tcG9zaXRlLnNldExheW91dCh0aW1lT3V0U3ViQ29tcG9zaXRlU3RhY2tMYXlvdXQpOwotICAgIAotICAgIC8vIG9ubHkgb25lIG9mIHRoaXMgaXMgZGlzcGxheWVkIGF0IG9uZSB0aW1lLCB0aGV5IHNoYXJlIGluZm9wb3AgYW5kIHRvb2x0aXAgdGV4dAotICAgIHRpbWVPdXRGaWVsZCA9IGNyZWF0ZVRleHRGaWVsZCh0aW1lT3V0U3ViQ29tcG9zaXRlLCBudWxsICxBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFBBRV9GSUVMRF9USU1FX09VVCxJTkZPUE9QX1BQQUVfRklFTERfVElNRV9PVVQpOwotICAgIHRpbWVPdXRNc2dUZXh0ID0gY3JlYXRlVGV4dEZpZWxkKHRpbWVPdXRTdWJDb21wb3NpdGUsIG51bGwgLEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QUEFFX0ZJRUxEX1RJTUVfT1VULElORk9QT1BfUFBBRV9GSUVMRF9USU1FX09VVCk7Ci0gICAgCi0gICAgdGltZU91dE1zZ1RleHQuc2V0RWRpdGFibGUoZmFsc2UpOwotICAgIAotICAgIEdyb3VwIGphdmEyV3NkbEdyb3VwID0gdXRpbHMuY3JlYXRlR3JvdXAocGFyZW50LCBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkdST1VQX0pBVkEyV1NETF9OQU1FLCBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFBBRV9HUk9VUF9KQVZBMldTREwsIElORk9QT1BfUFBBRV9HUk9VUF9KQVZBMldTREwsIDIsIDEwLDEwKTsKLSAgICB1c2VJbmhlcml0ZWRNZXRob2RzID0gY3JlYXRlQ2hlY2tCb3goamF2YTJXc2RsR3JvdXAsIEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX1VTRV9JTkhFUklURURfTUVUSE9EUyxBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFBBRV9DSEVDS0JPWF9VU0VfSU5IRVJJVEVEX01FVEhPRFMsSU5GT1BPUF9QUEFFX0NIRUNLQk9YX1VTRV9JTkhFUklURURfTUVUSE9EUyk7Ci0gICAgdmFsaWRhdGVBZ2FpbnN0SkFYUlBDID0gY3JlYXRlQ2hlY2tCb3goamF2YTJXc2RsR3JvdXAsIEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX1ZBTElEQVRFX0FHQUlOU1RfSkFYUlBDLEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QUEFFX0NIRUNLQk9YX1ZBTElEQVRFX0FHQUlOU1RfSkFYUlBDLElORk9QT1BfUFBBRV9DSEVDS0JPWF9WQUxJREFURV9BR0FJTlNUX0pBWFJQQyk7Ci0KLSAgICBpbml0aWFsaXplVmFsdWVzKCk7Ci0gICAgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2cuYXBwbHlEaWFsb2dGb250KHN1cGVycGFyZW50KTsgICAgCi0KLSAgICByZXR1cm4gcGFyZW50OwotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlcyBjaGVja2JveCB3aXRoIGhvcml6b250YWxTcGFuID0gMiBpbiBpdHMgZ3JpZCBkYXRhIGluIG9yZGVyIHRvCi0gICAqIG1hdGNoIHRoZSBncmlkIGxheW91dCBmb3IgY29tYm8gCi0gICAqLwotICBwcml2YXRlIEJ1dHRvbiBjcmVhdGVDaGVja0JveCggQ29tcG9zaXRlIHBhcmVudCwgU3RyaW5nIGxhYmVsTmFtZSwgU3RyaW5nIHRvb2x0aXAsIFN0cmluZyBpbmZvcG9wICkKLSAgewotICAgIEJ1dHRvbiBidXR0b24gPSBuZXcgQnV0dG9uKCBwYXJlbnQsIFNXVC5DSEVDSyApOwotICAgIGJ1dHRvbi5zZXRUZXh0KGxhYmVsTmFtZSk7Ci0gICAgYnV0dG9uLnNldFRvb2xUaXBUZXh0KCB0b29sdGlwICk7Ci0gICAgaWYoIGluZm9wb3AgIT0gbnVsbCApIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAoIGJ1dHRvbiwgV2ViU2VydmljZUF4aXNDb25zdW1wdGlvblVJUGx1Z2luLklEICsgIi4iICsgaW5mb3BvcCApOwotCUdyaWREYXRhIGdkPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9CRUdJTk5JTkcpOwotCWdkLmhvcml6b250YWxTcGFuPSAyOwotCWJ1dHRvbi5zZXRMYXlvdXREYXRhKGdkKTsJCi0gICAgcmV0dXJuIGJ1dHRvbjsKLSAgfQotICAgICAKLSAgcHJpdmF0ZSBUZXh0IGNyZWF0ZVRleHRGaWVsZChDb21wb3NpdGUgcGFyZW50LFN0cmluZyBsYWJlbE5hbWUsIFN0cmluZyB0b29sdGlwLCBTdHJpbmcgaW5mb3BvcCkgCi0gIHsgdG9vbHRpcCA9IHRvb2x0aXAgPT0gbnVsbCA/IGxhYmVsTmFtZSA6IHRvb2x0aXA7Ci0JaWYoIGxhYmVsTmFtZSAhPSBudWxsICkKLSAgICB7Ci0gICAgICBMYWJlbCBsYWJlbCA9IG5ldyBMYWJlbCggcGFyZW50LCBTV1QuV1JBUCk7Ci0gICAgICBsYWJlbC5zZXRUZXh0KCBsYWJlbE5hbWUgKTsKLSAgICAgIGxhYmVsLnNldFRvb2xUaXBUZXh0KCB0b29sdGlwICk7Ci0gICAgfQotICAgICBUZXh0IHRleHQgPSBuZXcgVGV4dChwYXJlbnQsIFNXVC5TSU5HTEUgfCBTV1QuQk9SREVSKTsKLSAgICAgR3JpZERhdGEgZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgICBkYXRhLnZlcnRpY2FsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICAgZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICAgZGF0YS5ncmFiRXhjZXNzSG9yaXpvbnRhbFNwYWNlID0gdHJ1ZTsKLSAgICAgdGV4dC5zZXRMYXlvdXREYXRhKGRhdGEpOwotICAgICB0ZXh0LnNldFRvb2xUaXBUZXh0KHRvb2x0aXApOwotICAgICBpZiggaW5mb3BvcCAhPSBudWxsICkgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscCggdGV4dCwgV2ViU2VydmljZUF4aXNDb25zdW1wdGlvblVJUGx1Z2luLklEICsgIi4iICsgaW5mb3BvcCApOwotICAgICAKLSAgICAgdGV4dC5hZGRNb2RpZnlMaXN0ZW5lciggbmV3IE1vZGlmeUxpc3RlbmVyKCkgewotCQlwdWJsaWMgdm9pZCBtb2RpZnlUZXh0KE1vZGlmeUV2ZW50IGUpIHsKLQkJCW51bWJlckZpZWxkQ2hhbmdlZCgoVGV4dCkgZS53aWRnZXQpOwotCQl9Ci0JIH0KLSAgICAgKTsKLSAgICAgcmV0dXJuIHRleHQ7Ci0gIH0KLQotICAvKioKLSAgICogRG9lcyBhbnl0aGluZyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgZGVmYXVsdCBidXR0b24gaGFzIGJlZW4gcHJlc3NlZC4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHBlcmZvcm1EZWZhdWx0cygpCi0gIHsKLSAgICBzdXBlci5wZXJmb3JtRGVmYXVsdHMoKTsKLSAgICBpbml0aWFsaXplRGVmYXVsdHMoKTsKLSAgfQotCi0gIC8qKgotICAgKiBEbyBhbnl0aGluZyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgT0sgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0gICAqICBAcmV0dXJuIHdoZXRoZXIgaXQgaXMgb2theSB0byBjbG9zZSB0aGUgcHJlZmVyZW5jZSBwYWdlCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBwZXJmb3JtT2soKQotICB7Ci0gICAgaWYodmFsaWRhdGVOdW1iZXIodGltZU91dEZpZWxkLmdldFRleHQoKSkuaXNPSygpKQotICAgIAlzdG9yZVZhbHVlcygpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybUFwcGx5KCkKLSAgewotICAgIHBlcmZvcm1PaygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KElXb3JrYmVuY2ggd29ya2JlbmNoKSAgeyB9Ci0KLSAgLyoqCi0gICAqIEluaXRpYWxpemVzIHN0YXRlcyBvZiB0aGUgY29udHJvbHMgdXNpbmcgZGVmYXVsdCB2YWx1ZXMKLSAgICogaW4gdGhlIHByZWZlcmVuY2Ugc3RvcmUuCi0gICAqLwotICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRzKCkKLSAgewotICAgIGFsbFdhbnRlZC5zZXRTZWxlY3Rpb24oIEF4aXNFbWl0dGVyRGVmYXVsdHMuZ2V0QWxsV2FudGVkRGVmYXVsdCgpKTsKLSAgICBoZWxwZXJXYW50ZWQuc2V0U2VsZWN0aW9uKCBBeGlzRW1pdHRlckRlZmF1bHRzLmdldEhlbHBlcldhbnRlZERlZmF1bHQoKSk7Ci0gICAgd3JhcEFycmF5cy5zZXRTZWxlY3Rpb24oIEF4aXNFbWl0dGVyRGVmYXVsdHMuZ2V0V3JhcEFycmF5c0RlZmF1bHQoKSk7Ci0gICAgZGVwbG95U2NvcGVUeXBlcy5zZWxlY3QoQXhpc0VtaXR0ZXJEZWZhdWx0cy5nZXREZXBsb3lTY29wZURlZmF1bHQoKSk7Ci0gICAgaWYgKHdzZGwySmF2YVRpbWVvdXRQcm9wZXJ0eSAhPSBudWxsKSB0aW1lT3V0RmllbGQuc2V0VGV4dCgiIisgZ2V0VGltZU91dFZhbHVlV2l0aFByb3BlcnR5KCkpOwotICAgIGVsc2UgdGltZU91dEZpZWxkLnNldFRleHQoIiIgKyBBeGlzRW1pdHRlckRlZmF1bHRzLmdldFRpbWVPdXREZWZhdWx0KCkpOwkKLSAgICB1c2VJbmhlcml0ZWRNZXRob2RzLnNldFNlbGVjdGlvbihBeGlzRW1pdHRlckRlZmF1bHRzLmdldFVzZUluaGVyaXRlZE1ldGhvZHNEZWZhdWx0KCkpOwotICAgIHZhbGlkYXRlQWdhaW5zdEpBWFJQQy5zZXRTZWxlY3Rpb24oQXhpc0VtaXR0ZXJEZWZhdWx0cy5nZXRWYWxpZGF0ZUFnYWluc3RKQVhSUEMoKSk7Ci0gIH0KLQotICAvKioKLSAgICogSW5pdGlhbGl6ZXMgc3RhdGVzIG9mIHRoZSBjb250cm9scyBmcm9tIHRoZSBwcmVmZXJlbmNlIHN0b3JlLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVWYWx1ZXMoKQotICB7Ci0gICAgLy8gZ2V0IHRoZSBwZXJzaXN0ZW50IGNvbnRleHQgZnJvbSB0aGUgcGx1Z2luCi0gICAgQXhpc0VtaXR0ZXJDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uQ29yZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldEF4aXNFbWl0dGVyQ29udGV4dCgpOwotICAgIGFsbFdhbnRlZC5zZXRTZWxlY3Rpb24oIGNvbnRleHQuaXNBbGxXYW50ZWRFbmFibGVkKCkpOwotICAgIGhlbHBlcldhbnRlZC5zZXRTZWxlY3Rpb24oIGNvbnRleHQuaXNIZWxwZXJXYW50ZWRFbmFibGVkKCkpOwotICAgIHdyYXBBcnJheXMuc2V0U2VsZWN0aW9uKCBjb250ZXh0LmlzV3JhcEFycmF5c0VuYWJsZWQoKSk7Ci0gICAgZGVwbG95U2NvcGVUeXBlcy5zZWxlY3QoY29udGV4dC5nZXREZXBsb3lTY29wZVR5cGUoKSk7Ci0gICAgdXNlSW5oZXJpdGVkTWV0aG9kcy5zZXRTZWxlY3Rpb24oIGNvbnRleHQuaXNVc2VJbmhlcml0ZWRNZXRob2RzRW5hYmxlZCgpKTsKLSAgICB2YWxpZGF0ZUFnYWluc3RKQVhSUEMuc2V0U2VsZWN0aW9uKCBjb250ZXh0LmlzVmFsaWRhdGVBZ2FpbnN0SkFYUlBDRW5hYmxlZCgpICk7Ci0gICAgaWYgKHdzZGwySmF2YVRpbWVvdXRQcm9wZXJ0eSAhPSBudWxsKSAKLSAgICB7CXRpbWVPdXQ9Z2V0VGltZU91dFZhbHVlV2l0aFByb3BlcnR5KCk7Ci0gICAgCS8vdGltZU91dEZpZWxkLnNldEVuYWJsZWQoZmFsc2UpOwotICAgIAl0aW1lT3V0U3ViQ29tcG9zaXRlU3RhY2tMYXlvdXQudG9wQ29udHJvbCA9IHRpbWVPdXRNc2dUZXh0OwotICAgICAgICB0aW1lT3V0TXNnVGV4dC5zZXRUZXh0KEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1VTRV9KVk1fQVJHVU1FTlRfRk9SX1RJTUVfT1VUKTsJCQotICAgIH0KLQllbHNlCi0JewotCSAgICB0aW1lT3V0ID0gY29udGV4dC5nZXRUaW1lT3V0KCk7Ci0JICAgIHRpbWVPdXRTdWJDb21wb3NpdGVTdGFja0xheW91dC50b3BDb250cm9sID0gdGltZU91dEZpZWxkOwotCX0KLSAgICB0aW1lT3V0RmllbGQuc2V0VGV4dCgiIisgdGltZU91dCk7Ci0gICB9Ci0KLSAgLyoqCi0gICAqIFN0b3JlcyB0aGUgdmFsdWVzIG9mIHRoZSBjb250cm9scyBiYWNrIHRvIHRoZSBwcmVmZXJlbmNlIHN0b3JlLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHN0b3JlVmFsdWVzKCkKLSAgewotICAgIC8vIGdldCB0aGUgcGVyc2lzdGVudCBjb250ZXh0IGZyb20gdGhlIHBsdWdpbgotICAgIEF4aXNFbWl0dGVyQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZUF4aXNDb25zdW1wdGlvbkNvcmVQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRBeGlzRW1pdHRlckNvbnRleHQoKTsKLSAgICBjb250ZXh0LnNldEFsbFdhbnRlZEVuYWJsZWQoIGFsbFdhbnRlZC5nZXRTZWxlY3Rpb24oKSApOwotICAgIGNvbnRleHQuc2V0SGVscGVyV2FudGVkRW5hYmxlZCggaGVscGVyV2FudGVkLmdldFNlbGVjdGlvbigpICk7Ci0gICAgY29udGV4dC5zZXRXcmFwQXJyYXlzRW5hYmxlZCggd3JhcEFycmF5cy5nZXRTZWxlY3Rpb24oKSApOwotICAgIGNvbnRleHQuc2VsZWN0RGVwbG95U2NvcGVUeXBlKGRlcGxveVNjb3BlVHlwZXMuZ2V0U2VsZWN0aW9uSW5kZXgoKSk7Ci0gICAgdGltZU91dCA9IEludGVnZXIucGFyc2VJbnQodGltZU91dEZpZWxkLmdldFRleHQoKS50cmltKCkpOwotICAgIGNvbnRleHQuc2V0VGltZU91dCh0aW1lT3V0KTsKLSAgICBjb250ZXh0LnNldFVzZUluaGVyaXRlZE1ldGhvZHNFbmFibGVkKCB1c2VJbmhlcml0ZWRNZXRob2RzLmdldFNlbGVjdGlvbigpICk7Ci0gICAgY29udGV4dC5zZXRWYWxpZGF0ZUFnYWluc3RKQVhSUENFbmFibGVkKCB2YWxpZGF0ZUFnYWluc3RKQVhSUEMuZ2V0U2VsZWN0aW9uKCkgKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIG51bWJlckZpZWxkQ2hhbmdlZChUZXh0IHRleHRDb250cm9sKSB7Ci0JCUlTdGF0dXMgc3RhdHVzID0gdmFsaWRhdGVOdW1iZXIodGV4dENvbnRyb2wuZ2V0VGV4dCgpKTsKLQkJc2V0VmFsaWQoIXN0YXR1cy5tYXRjaGVzKElTdGF0dXMuRVJST1IpKTsKLQkJYXBwbHlUb1N0YXR1c0xpbmUodGhpcyxzdGF0dXMpOwkKLSB9Ci0gIAotICBwcml2YXRlIGludCBnZXRUaW1lT3V0VmFsdWVXaXRoUHJvcGVydHkoKSAKLSAgewotCSAgaWYgKHdzZGwySmF2YVRpbWVvdXRQcm9wZXJ0eSAhPSBudWxsKQotCSAgewl0cnkgewotCQkgIGxvbmcgdGltZU91dFByb3BlcnR5ID0gTG9uZy5wYXJzZUxvbmcod3NkbDJKYXZhVGltZW91dFByb3BlcnR5KTsKLQkJICBpZiAodGltZU91dFByb3BlcnR5IDwgMCkgcmV0dXJuIC0xOyAvLyB0aW1lb3V0ID0gLTEgZXF1YWxzIG5ldmVyIHRpbWUgb3V0OyB0cmVhdGluZyBhbGwgbmVnYXRpdmUgbnVtYmVyIGFzIC0xCi0JCSAgZWxzZSByZXR1cm4gKGludClNYXRoLmNlaWwodGltZU91dFByb3BlcnR5LzEwMDAuMCk7Ci0JICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKXsKLQkgICAgICBTeXN0ZW0uZXJyLnByaW50KCJBeGlzV1NETDJKYXZhVGltZW91dCBpcyBub3QgYSB2YWxpZCBudW1iZXIiKTsKLQkgICAgICByZXR1cm4gQXhpc0VtaXR0ZXJEZWZhdWx0cy5nZXRUaW1lT3V0RGVmYXVsdCgpOwotCSAgICB9Ci0JICB9Ci0JICBlbHNlIHJldHVybiBBeGlzRW1pdHRlckRlZmF1bHRzLmdldFRpbWVPdXREZWZhdWx0KCk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgSVN0YXR1cyB2YWxpZGF0ZU51bWJlcihTdHJpbmcgbnVtYmVyU3RyaW5nKQotICB7Ci0JICAgIElTdGF0dXMgc3RhdHVzOwotCQl0cnkgCi0JCXsKLQkJCWludCBudW1iZXIgPSBJbnRlZ2VyLnBhcnNlSW50KG51bWJlclN0cmluZyk7Ci0JCQlpZiAobnVtYmVyIDw9IDAgJiYgbnVtYmVyICE9IC0xKQotCQkJewotCQkJCXN0YXR1cyA9IG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUiwgV2ViU2VydmljZUF4aXNDb25zdW1wdGlvblVJUGx1Z2luLklELCBJU3RhdHVzLkVSUk9SLAotCQkJCQkJQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfSU5WQUxJRF9USU1FX09VVCwgbnVsbCk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7CXRpbWVPdXQgPSBudW1iZXI7Ci0JCQkJc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQkJCQkvL3dlIHNldCBwYXJhbTptZXNzYWdlPSIiIGhlcmUsIExhdGVyIGluIAotCQkJCS8vYXBwbHlUb1N0YXR1c0xpbmUoKSwgd2UgZG8gcGFnZS5zZXRNZXNzYWdlKG51bGwsdHlwZSkgCi0JCQkJc3RhdHVzID0gbmV3IFN0YXR1cyhJU3RhdHVzLk9LLCBXZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uVUlQbHVnaW4uSUQsIElTdGF0dXMuT0ssICIiLG51bGwpOwotCQkJfQotCQl9IAotCQljYXRjaCAKLQkJKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSAKLQkJewotCQkJc3RhdHVzID0gbmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLCBXZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uVUlQbHVnaW4uSUQsIElTdGF0dXMuRVJST1IsCi0JCQkJCUF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX0lOVkFMSURfVElNRV9PVVQsIG51bGwpOwotCQl9Ci0JCXJldHVybiBzdGF0dXM7IAotICAJfQotICAKLQlwcml2YXRlIHZvaWQgYXBwbHlUb1N0YXR1c0xpbmUoRGlhbG9nUGFnZSBwYWdlLCBJU3RhdHVzIHN0YXR1cykgewotCQlTdHJpbmcgbWVzc2FnZT0gc3RhdHVzLmdldE1lc3NhZ2UoKTsKLQkJc3dpdGNoIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSkgewotCQkJY2FzZSBJU3RhdHVzLk9LOgotCQkJCXBhZ2Uuc2V0TWVzc2FnZShudWxsLCBJTWVzc2FnZVByb3ZpZGVyLk5PTkUpOwotCQkJCXBhZ2Uuc2V0RXJyb3JNZXNzYWdlKG51bGwpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBJU3RhdHVzLldBUk5JTkc6Ci0JCQkJcGFnZS5zZXRNZXNzYWdlKG1lc3NhZ2UsIElNZXNzYWdlUHJvdmlkZXIuV0FSTklORyk7Ci0JCQkJcGFnZS5zZXRFcnJvck1lc3NhZ2UobnVsbCk7Ci0JCQkJYnJlYWs7CQkJCQotCQkJY2FzZSBJU3RhdHVzLklORk86Ci0JCQkJcGFnZS5zZXRNZXNzYWdlKG1lc3NhZ2UsIElNZXNzYWdlUHJvdmlkZXIuSU5GT1JNQVRJT04pOwotCQkJCXBhZ2Uuc2V0RXJyb3JNZXNzYWdlKG51bGwpOwotCQkJCWJyZWFrOwkJCQotCQkJZGVmYXVsdDoKLQkJCQlpZiAobWVzc2FnZS5sZW5ndGgoKSA9PSAwKSB7Ci0JCQkJCW1lc3NhZ2U9IG51bGw7Ci0JCQkJfQotCQkJCXBhZ2Uuc2V0TWVzc2FnZShudWxsKTsKLQkJCQlwYWdlLnNldEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLQkJCQlicmVhazsJCQotCQl9Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdGFzay9DbGllbnRDb2RlR2VuT3BlcmF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS90YXNrL0NsaWVudENvZGVHZW5PcGVyYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhkY2RmMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS90YXNrL0NsaWVudENvZGVHZW5PcGVyYXRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MDkgICAxMjUwOTQgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MDUxNSAgIDExNTIyNSBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDYwNzI4ICAgMTQ1NDI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDYwMyAgIDIzNTM2NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgIklXQUIwMDE0RSBVbmV4cGVjdGVkIGV4Y2VwdGlvbiBvY2N1cnJlZCIgZnJvbSBhbnQgdGFzayBmb3Igd2ViIHNlcnZpY2UgY2xpZW50IGdlbmVyYXRpb24KLSAqIDIwMDgwNjI2ICAgMjI5ODY3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBNaXNzaW5nIG1ldGhvZCBpbiBnZW5lcmF0ZWQgcHJveHkgY2xhc3MKLSAqIDIwMDgwNzA5ICAgMjQwMjI1IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudGFzazsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tYW5kLldTREwySmF2YUNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuYWN0aW9ucy5Xb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci0KLXB1YmxpYyBjbGFzcyBDbGllbnRDb2RlR2VuT3BlcmF0aW9uIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gewotCQotCXByaXZhdGUgQ29weUF4aXNKYXJDb21tYW5kIGNvcHlBeGlzSmFyQ29tbWFuZCA9IG51bGw7Ci0JCi0JcHJpdmF0ZSBXU0RMMkphdmFDb21tYW5kIHdzZGwySmF2YUNvbW1hbmQgPSBudWxsOwotCXByaXZhdGUgSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbTsKLQlwcml2YXRlIFN0cmluZyB3c2RsVVJJOwotCQotCXByaXZhdGUgSVByb2plY3QgcHJvamVjdDsKLQkKLQlwcml2YXRlIFN0dWIyQmVhbkNvbW1hbmQgc3R1YjJCZWFuQ29tbWFuZCA9IG51bGw7Ci0JcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciB3ZWJTZXJ2aWNlc1BhcnNlcjsKLQlwcml2YXRlIFN0cmluZyBvdXRwdXRGb2xkZXI7Ci0JcHJpdmF0ZSBTdHJpbmcgcHJveHlCZWFuOwotCXByaXZhdGUgU3RyaW5nIHByb3h5RW5kcG9pbnQ7Ci0JCi0JcHJpdmF0ZSBSZWZyZXNoUHJvamVjdENvbW1hbmQgcmVmcmVzaFByb2plY3RDb21tYW5kID0gbnVsbDsKLQotCXB1YmxpYyBDbGllbnRDb2RlR2VuT3BlcmF0aW9uKCl7Ci0JCWNvcHlBeGlzSmFyQ29tbWFuZCA9IG5ldyBDb3B5QXhpc0phckNvbW1hbmQoKTsKLQkJd3NkbDJKYXZhQ29tbWFuZCA9IG5ldyBXU0RMMkphdmFDb21tYW5kKCk7Ci0JCXN0dWIyQmVhbkNvbW1hbmQgPSBuZXcgU3R1YjJCZWFuQ29tbWFuZCgpOwotCQlyZWZyZXNoUHJvamVjdENvbW1hbmQgPSBuZXcgUmVmcmVzaFByb2plY3RDb21tYW5kKCk7Ci0JfQotCQotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHsKLQotCQlJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLQkJQ2xpZW50V1NNb2RpZnlPcGVyYXRpb24gYnVPcGVyYXRpb24gPSBuZXcgQ2xpZW50V1NNb2RpZnlPcGVyYXRpb24oaW5mbywgZW52KTsKLQkJdHJ5IHsKLQkJCWJ1T3BlcmF0aW9uLmV4ZWN1dGUobW9uaXRvcik7Ci0JCX0KLQkJY2F0Y2goQ29yZUV4Y2VwdGlvbiBjZSl7Ci0JCQlJU3RhdHVzIHN0YXR1cyA9IGNlLmdldFN0YXR1cygpOwotCQkJcmV0dXJuIHN0YXR1czsKLQkJfQotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQotCX0KLQotCQotCXByaXZhdGUgY2xhc3MgQ2xpZW50V1NNb2RpZnlPcGVyYXRpb24gZXh0ZW5kcyBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24gewotCQkKLQkJICBwcml2YXRlIElBZGFwdGFibGUgaW5mbyA9IG51bGw7Ci0JCSAgcHJpdmF0ZSBJRW52aXJvbm1lbnQgZW52ID0gbnVsbDsKLQotCQkgIAotCQkgIHByb3RlY3RlZCBDbGllbnRXU01vZGlmeU9wZXJhdGlvbihJQWRhcHRhYmxlIGFkYXB0YWJsZSwgSUVudmlyb25tZW50IGVudmlyb25tZW50KXsKLQkJCSAgaW5mbyA9IGFkYXB0YWJsZTsKLQkJCSAgZW52ID0gZW52aXJvbm1lbnQ7Ci0JCSAgfQotCQkgIAotCQkgIHByb3RlY3RlZCB2b2lkIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbnsKLQkJICAKLQkJCSAgICBJU3RhdHVzIHN0YXR1cyA9IG51bGw7Ci0KLQkJCSAgICAvLyBDb3B5QXhpc0phckNvbW1hbmQKLQkJCSAgICBjb3B5QXhpc0phckNvbW1hbmQuc2V0RW52aXJvbm1lbnQoZW52KTsKLQkJCSAgICBjb3B5QXhpc0phckNvbW1hbmQuc2V0UHJvamVjdChwcm9qZWN0KTsKLQkJCSAgICBzdGF0dXMgPSBjb3B5QXhpc0phckNvbW1hbmQuZXhlY3V0ZShtb25pdG9yLCBpbmZvKTsKLQkJCSAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKXsKLQkJCSAgICAJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24oc3RhdHVzKTsKLQkJCSAgICB9Ci0JCQkJCi0JCQkJLy8gV1NETDJKYXZhQ29tbWFuZAotCQkJCXdzZGwySmF2YUNvbW1hbmQuc2V0RW52aXJvbm1lbnQoZW52KTsKLQkJCQl3c2RsMkphdmFDb21tYW5kLnNldEphdmFXU0RMUGFyYW0oamF2YVdTRExQYXJhbSk7Ci0JCQkJd3NkbDJKYXZhQ29tbWFuZC5zZXRXc2RsVVJJKHdzZGxVUkkpOwotCQkJCXN0YXR1cyA9IHdzZGwySmF2YUNvbW1hbmQuZXhlY3V0ZShtb25pdG9yLCBpbmZvKTsKLQkJCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKHN0YXR1cyk7Ci0JCQkJfQotCQkJCQkJCQkKLQkJCQkvLyBTdHViMkJlYW5Db21tYW5kCi0JCQkJc3R1YjJCZWFuQ29tbWFuZC5zZXRFbnZpcm9ubWVudChlbnYpOwotCQkJCXN0dWIyQmVhbkNvbW1hbmQuc2V0V2ViU2VydmljZXNQYXJzZXIod2ViU2VydmljZXNQYXJzZXIpOwotCQkJCXN0dWIyQmVhbkNvbW1hbmQuc2V0T3V0cHV0Rm9sZGVyKG91dHB1dEZvbGRlcik7Ci0JCQkJc3R1YjJCZWFuQ29tbWFuZC5zZXRKYXZhV1NETFBhcmFtKGphdmFXU0RMUGFyYW0pOwotCQkJCXN0dWIyQmVhbkNvbW1hbmQuc2V0Q2xpZW50UHJvamVjdChwcm9qZWN0KTsKLQkJCQlzdGF0dXMgPSBzdHViMkJlYW5Db21tYW5kLmV4ZWN1dGUobW9uaXRvciwgaW5mbyk7Ci0JCQkJaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgewotCQkJCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihzdGF0dXMpOwotCQkJCX0KLQkJCQlwcm94eUJlYW4gPSBzdHViMkJlYW5Db21tYW5kLmdldFByb3h5QmVhbigpOwotCQkJCXByb3h5RW5kcG9pbnQgPSBzdHViMkJlYW5Db21tYW5kLmdldFByb3h5RW5kcG9pbnQoKTsKLQkJCSAgCi0JCQkJLy8gUmVmcmVzaFByb2plY3RDb21tYW5kCi0JCQkJcmVmcmVzaFByb2plY3RDb21tYW5kLnNldEVudmlyb25tZW50KGVudik7Ci0JCQkJcmVmcmVzaFByb2plY3RDb21tYW5kLnNldFByb2plY3QocHJvamVjdCk7Ci0JCQkJc3RhdHVzID0gcmVmcmVzaFByb2plY3RDb21tYW5kLmV4ZWN1dGUobW9uaXRvciwgaW5mbyk7Ci0JCQkJaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgewotCQkJCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihzdGF0dXMpOwotCQkJCX0KLQkJCQkKLQkJICB9Ci0JCQotCX0KLQotCXB1YmxpYyBKYXZhV1NETFBhcmFtZXRlciBnZXRKYXZhV1NETFBhcmFtKCkgewotCQlyZXR1cm4gamF2YVdTRExQYXJhbTsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0SmF2YVdTRExQYXJhbShKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtKSB7Ci0JCXRoaXMuamF2YVdTRExQYXJhbSA9IGphdmFXU0RMUGFyYW07Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0T3V0cHV0Rm9sZGVyKFN0cmluZyBvdXRwdXRGb2xkZXIpIHsKLQkJdGhpcy5vdXRwdXRGb2xkZXIgPSBvdXRwdXRGb2xkZXI7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0UHJvamVjdChJUHJvamVjdCBwcm9qZWN0KSB7Ci0JCXRoaXMucHJvamVjdCA9IHByb2plY3Q7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXIpIHsKLQkJdGhpcy53ZWJTZXJ2aWNlc1BhcnNlciA9IHdlYlNlcnZpY2VzUGFyc2VyOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFdzZGxVUkkoU3RyaW5nIHdzZGxVUkkpIHsKLQkJdGhpcy53c2RsVVJJID0gd3NkbFVSSTsKLQl9Ci0JCQotCXB1YmxpYyBTdHJpbmcgZ2V0UHJveHlCZWFuKCkgewotCQlyZXR1cm4gcHJveHlCZWFuOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldFByb3h5RW5kcG9pbnQoKSB7Ci0JCXJldHVybiBwcm94eUVuZHBvaW50OwotCX0KLQkKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3Rhc2svQ29weUF4aXNKYXJDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS90YXNrL0NvcHlBeGlzSmFyQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmQwZmMxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3Rhc2svQ29weUF4aXNKYXJDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTA5ICAgMTI1MDk0IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSwgVXNlIFdvcmtzcGFjZU1vZGlmeU9wZXJhdGlvbgotICogMjAwNjA1MTUgICAxMTUyMjUgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MDUxNyAgIDE0MjM0MiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA4MjgJICAxNTU0MzkgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKiAyMDA3MDUwMSAgIDE4NDUwNSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzA1MDIgICAxODQ1MDUga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4sIFVwZGF0ZSBKQVIgc2l6ZXMKLSAqIDIwMDcxMTAyICAgMjA4NjIwIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuLCBVcGRhdGUgSkFSIHNpemVzCi0gKiAyMDA3MTEwMiAgIDIwMjIyMiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAxMjIgICAyMTYxNjUga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMzI2ICAgMjI0MTQ4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgc2VydmljZSBzY2VuYXJpb3MgYnJva2UgaW4gbGF0ZXN0IGJ1aWxkcyB3aXRoIEVxdWlub3ggcDIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrOwotCi0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5GaWxlTG9jYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNsYXNzcGF0aEVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklKYXZhUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5KYXZhQ29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5KYXZhTW9kZWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbW1vbi5GaWxlUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uUHJvZ3Jlc3NVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5UcmFuc2llbnRSZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuY29tbW9uLkJ1bmRsZVV0aWxzOwotCi0KLXB1YmxpYyBjbGFzcyBDb3B5QXhpc0phckNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiB7Ci0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBBWElTX0pBUiA9ICJheGlzLmphciI7IC8vJE5PTi1OTFMtMSQKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBBWElTX1JVTlRJTUVfUExVR0lOX0lEID0gIm9yZy5hcGFjaGUuYXhpcyI7IC8vJE5PTi1OTFMtMSQKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBDT01NT05fRElTQ09WRVJZX1BMVUdJTl9JRCA9ICJvcmcuYXBhY2hlLmNvbW1vbnMuZGlzY292ZXJ5IjsgLy8kTk9OLU5MUy0xJAotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIENPTU1PTl9ESVNDT1ZFUllfSkFSID0gImNvbW1vbnMtZGlzY292ZXJ5LTAuMi5qYXIiOyAvLyROT04tTkxTLTEkCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgSkFWQVhfWE1MX1JQQ19QTFVHSU5fSUQgPSAiamF2YXgueG1sLnJwYyI7IC8vJE5PTi1OTFMtMSQKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBKQVZBWF9YTUxfUlBDX0pBUiA9ICJqYXhycGMuamFyIjsgLy8kTk9OLU5MUy0xJAotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEpBVkFYX1hNTF9TT0FQX1BMVUdJTl9JRCA9ICJqYXZheC54bWwuc29hcCI7IC8vJE5PTi1OTFMtMSQKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBKQVZBWF9YTUxfU09BUF9KQVIgPSAic2Fhai5qYXIiOyAvLyROT04tTkxTLTEkCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgSkFWQVhfV1NETF9QTFVHSU5fSUQgPSAiamF2YXgud3NkbCI7IC8vJE5PTi1OTFMtMSQKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBKQVZBWF9XU0RMX0pBUiA9ICJ3c2RsNGouamFyIjsgLy8kTk9OLU5MUy0xJAotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIENPTU1PTl9MT0dHSU5HX1BMVUdJTl9JRCA9ICJvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZyI7IC8vJE5PTi1OTFMtMSQKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBDT01NT05fTE9HR0lOR19KQVIgPSAiY29tbW9ucy1sb2dnaW5nLmphciI7IC8vJE5PTi1OTFMtMSQKLQlwcml2YXRlIHN0YXRpYyBsb25nIEFYSVNfSkFSX1NJWkUgPSAxNTg4MDYzTDsKLQlwcml2YXRlIHN0YXRpYyBsb25nIENPTU1PTl9ESVNDT1ZFUllfSkFSX1NJWkUgPSA3MTQ1MUw7Ci0JcHJpdmF0ZSBzdGF0aWMgbG9uZyBKQVZBWF9YTUxfUlBDX0pBUl9TSVpFID0gMzIzNjFMOwotCXByaXZhdGUgc3RhdGljIGxvbmcgSkFWQVhfWE1MX1NPQVBfSkFSX1NJWkUgPSAxOTU4Mkw7Ci0JcHJpdmF0ZSBzdGF0aWMgbG9uZyBKQVZBWF9XU0RMX0pBUl9TSVpFID0gMTM0MDg1TDsKLQlwcml2YXRlIHN0YXRpYyBsb25nIENPTU1PTl9MT0dHSU5HX0pBUl9TSVpFID0gMzkzNTNMOwotCi0vLyBXZWIgU2VydmljZXMgSmFycyBVc2VkIGluIHByZXZpb3VzIFZlcnNpb25zIG9mIFdUUCBidXQgbm93IG9ic29sZXRlCi0JcHJpdmF0ZSBzdGF0aWMgU3RyaW5nW10gT0JTT0xFVEVfSkFSUyA9IG5ldyBTdHJpbmdbXXsiY29tbW9ucy1kaXNjb3ZlcnkuamFyIiwgImNvbW1vbnMtbG9nZ2luZy0xLjAuNC5qYXIiLCAibG9nNGotMS4yLjQuamFyIiwgImxvZzRqLTEuMi44LmphciIsICJ3c2RsNGotMS41LjEuamFyIiwgImF4aXMtYW50LmphciJ9OwotCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFUSF9UT19KQVJTX0lOX1BMVUdJTiA9ICJsaWIvIjsKLQotCXByaXZhdGUgSVByb2plY3QgcHJvamVjdDsKLQlwcml2YXRlIEJvb2xlYW4gcHJvamVjdFJlc3RhcnRSZXF1aXJlZF8gPSBCb29sZWFuLkZBTFNFOwotCXByaXZhdGUgSUNsYXNzcGF0aEVudHJ5W10gb2xkQ2xhc3NwYXRoOwotCXByaXZhdGUgQXJyYXlMaXN0IG5ld0phck5hbWVzTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLQotCS8qKgotCSAqIERlZmF1bHQgQ1RPUjsKLQkgKi8KLQlwdWJsaWMgQ29weUF4aXNKYXJDb21tYW5kKCkgewotCX0KLQotCS8qKgotCSAqIEV4ZWN1dGUgdGhlIGNvbW1hbmQKLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUpIHsKLQotCQlJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLQkJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotCQlQcm9ncmVzc1V0aWxzLnJlcG9ydChtb25pdG9yLCBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBST0dSRVNTX0lORk9fQ09QWV9BWElTX0NGRyk7Ci0KLQkJaWYgKEoyRUVVdGlscy5pc1dlYkNvbXBvbmVudChwcm9qZWN0KSkgewotCQkJY29weUF4aXNKYXJzVG9Qcm9qZWN0KHByb2plY3QsIHN0YXR1cywgZW52LCBtb25pdG9yKTsKLQkJfQotCQllbHNlIHsKLQkJCS8vIENoZWNrIGlmIGl0J3MgYSBwbGFpbiBvbGQgSmF2YSBwcm9qZWN0Ci0JCQlpZiAoSjJFRVV0aWxzLmlzSmF2YUNvbXBvbmVudChwcm9qZWN0KSkgewotCQkJCXN0YXR1cyA9IGFkZEF4aXNKYXJzVG9CdWlsZFBhdGgocHJvamVjdCwgZW52LCBtb25pdG9yKTsKLQkJCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQkJCWVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCQkJcmV0dXJuIHN0YXR1czsKLQkJCQl9Ci0JCQl9Ci0JCQllbHNlIHsKLQkJCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19XQVJOX05PX0pBVkFfTkFUVVJFKTsKLQkJCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQkJcmV0dXJuIHN0YXR1czsKLQkJCX0KLQotCQl9Ci0KLQkJcmV0dXJuIHN0YXR1czsKLQotCX0KLQotCXByaXZhdGUgdm9pZCBjb3B5QXhpc0phcnNUb1Byb2plY3QoSVByb2plY3QgcHJvamVjdCwgSVN0YXR1cyBzdGF0dXMsIElFbnZpcm9ubWVudCBlbnYsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgewotCi0JCUlQYXRoIHdlYk1vZHVsZVBhdGggPSBKMkVFVXRpbHMuZ2V0V2ViQ29udGVudFBhdGgocHJvamVjdCk7Ci0JCWlmICh3ZWJNb2R1bGVQYXRoID09IG51bGwpIHsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1BST0pFQ1RfTk9UX0ZPVU5EKTsKLQkJCWVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCXJldHVybjsKLQkJfQotCi0JCWRlbGV0ZU9ic29sZXRlSmFycyh3ZWJNb2R1bGVQYXRoKTsKLQotCi0JCWNvcHlJRmlsZShBWElTX1JVTlRJTUVfUExVR0lOX0lELCAibGliLyIgKyBBWElTX0pBUiwgd2ViTW9kdWxlUGF0aCwgIldFQi1JTkYvbGliLyIgKyBBWElTX0pBUiwgc3RhdHVzLCBlbnYsIG1vbml0b3IpOwotCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQlyZXR1cm47Ci0JCX0KLQkJY29weUlGaWxlKENPTU1PTl9ESVNDT1ZFUllfUExVR0lOX0lELCAibGliLyIgKyBDT01NT05fRElTQ09WRVJZX0pBUiwgd2ViTW9kdWxlUGF0aCwgIldFQi1JTkYvbGliLyIgKyBDT01NT05fRElTQ09WRVJZX0pBUiwgc3RhdHVzLCBlbnYsIG1vbml0b3IpOwotCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQlyZXR1cm47Ci0JCX0KLQkJY29weUlGaWxlKEpBVkFYX1hNTF9SUENfUExVR0lOX0lELCAibGliLyIgKyBKQVZBWF9YTUxfUlBDX0pBUiwgd2ViTW9kdWxlUGF0aCwgIldFQi1JTkYvbGliLyIgKyBKQVZBWF9YTUxfUlBDX0pBUiwgc3RhdHVzLCBlbnYsIG1vbml0b3IpOwotCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQlyZXR1cm47Ci0JCX0KLQkJY29weUlGaWxlKEpBVkFYX1hNTF9TT0FQX1BMVUdJTl9JRCwgImxpYi8iICsgSkFWQVhfWE1MX1NPQVBfSkFSLCB3ZWJNb2R1bGVQYXRoLCAiV0VCLUlORi9saWIvIiArIEpBVkFYX1hNTF9TT0FQX0pBUiwgc3RhdHVzLCBlbnYsIG1vbml0b3IpOwotCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQlyZXR1cm47Ci0JCX0KLQkJY29weVBsdWdpbkphcihKQVZBWF9XU0RMX1BMVUdJTl9JRCwgd2ViTW9kdWxlUGF0aCwgIldFQi1JTkYvbGliLyIgKyBKQVZBWF9XU0RMX0pBUiwgc3RhdHVzLCBlbnYsIG1vbml0b3IpOwotCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQlyZXR1cm47Ci0JCX0KLQotCQljb3B5UGx1Z2luSmFyKENPTU1PTl9MT0dHSU5HX1BMVUdJTl9JRCwgd2ViTW9kdWxlUGF0aCwgIldFQi1JTkYvbGliLyIgKyBDT01NT05fTE9HR0lOR19KQVIsIHN0YXR1cywgZW52LCBtb25pdG9yKTsKLQkJaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgewotCQkJcmV0dXJuOwotCQl9Ci0JCXJldHVybjsKLQl9Ci0KLQkvKioKLQkgKiAKLQkgKi8KLQlwcml2YXRlIHZvaWQgY29weUlGaWxlKFN0cmluZyBwbHVnaW5JZCwgU3RyaW5nIHNvdXJjZSwgSVBhdGggdGFyZ2V0UGF0aCwgU3RyaW5nIHRhcmdldEZpbGUsIElTdGF0dXMgc3RhdHVzLCBJRW52aXJvbm1lbnQgZW52LCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHsKLQkJSVBhdGggdGFyZ2V0ID0gdGFyZ2V0UGF0aC5hcHBlbmQobmV3IFBhdGgodGFyZ2V0RmlsZSkpOwotCQlQcm9ncmVzc1V0aWxzLnJlcG9ydChtb25pdG9yLCBDb25zdW1wdGlvbk1lc3NhZ2VzLlBST0dSRVNTX0lORk9fQ09QWUlOR19GSUxFKTsKLQotCQl0cnkgewotCQkJUmVzb3VyY2VDb250ZXh0IGNvbnRleHQgPSBuZXcgVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0KCk7Ci0JCQljb250ZXh0LnNldE92ZXJ3cml0ZUZpbGVzRW5hYmxlZCh0cnVlKTsKLQkJCWNvbnRleHQuc2V0Q3JlYXRlRm9sZGVyc0VuYWJsZWQodHJ1ZSk7Ci0JCQljb250ZXh0LnNldENoZWNrb3V0RmlsZXNFbmFibGVkKHRydWUpOwotCQkJVVJMIHNvdXJjZVVSTCA9IEJ1bmRsZVV0aWxzLmdldFVSTEZyb21CdW5kbGUocGx1Z2luSWQsIHNvdXJjZSk7Ci0JCQlJRmlsZSByZXNvdXJjZSA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZpbGUodGFyZ2V0KTsKLQkJCWlmICghcmVzb3VyY2UuZXhpc3RzKCkpIHsKLQkJCQlJRmlsZSBmaWxlID0gRmlsZVJlc291cmNlVXRpbHMuY3JlYXRlRmlsZShjb250ZXh0LCB0YXJnZXQsIHNvdXJjZVVSTC5vcGVuU3RyZWFtKCksIG1vbml0b3IsIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkpOwotCQkJCWlmICgocHJvamVjdFJlc3RhcnRSZXF1aXJlZF8uYm9vbGVhblZhbHVlKCkgPT0gZmFsc2UpICYmIGZpbGUuZXhpc3RzKCkpIHsKLQkJCQkJcHJvamVjdFJlc3RhcnRSZXF1aXJlZF8gPSBCb29sZWFuLlRSVUU7Ci0JCQkJfQotCi0JCQl9Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9GSUxFQ09QWSwgZSk7Ci0JCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0KLQkJfQotCX0KLQotCS8qKgotCSAqIENvcHkgcGx1Z2lucyB0aGF0IGhhcyBiZWVuIEpBUmVkCi0JICovCi0JcHJpdmF0ZSB2b2lkIGNvcHlQbHVnaW5KYXIoU3RyaW5nIHBsdWdpbklkLCBJUGF0aCB0YXJnZXRQYXRoLCBTdHJpbmcgdGFyZ2V0RmlsZSwgSVN0YXR1cyBzdGF0dXMsIElFbnZpcm9ubWVudCBlbnYsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgewotCQlJUGF0aCB0YXJnZXQgPSB0YXJnZXRQYXRoLmFwcGVuZChuZXcgUGF0aCh0YXJnZXRGaWxlKSk7Ci0JCVByb2dyZXNzVXRpbHMucmVwb3J0KG1vbml0b3IsIENvbnN1bXB0aW9uTWVzc2FnZXMuUFJPR1JFU1NfSU5GT19DT1BZSU5HX0ZJTEUpOwotCi0JCXRyeSB7Ci0JCQlSZXNvdXJjZUNvbnRleHQgY29udGV4dCA9IG5ldyBUcmFuc2llbnRSZXNvdXJjZUNvbnRleHQoKTsKLQkJCWNvbnRleHQuc2V0T3ZlcndyaXRlRmlsZXNFbmFibGVkKHRydWUpOwotCQkJY29udGV4dC5zZXRDcmVhdGVGb2xkZXJzRW5hYmxlZCh0cnVlKTsKLQkJCWNvbnRleHQuc2V0Q2hlY2tvdXRGaWxlc0VuYWJsZWQodHJ1ZSk7Ci0KLQkJCUZpbGUgamFyRmlsZSA9IEZpbGVMb2NhdG9yLmdldEJ1bmRsZUZpbGUoUGxhdGZvcm0uZ2V0QnVuZGxlKHBsdWdpbklkKSk7Ci0JCQlpZiAoamFyRmlsZSAhPSBudWxsICYmIGphckZpbGUuaXNGaWxlKCkpIHsKLQkJCQlJRmlsZSByZXNvdXJjZSA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZpbGUodGFyZ2V0KTsKLQotCQkJCWlmICghcmVzb3VyY2UuZXhpc3RzKCkpIHsKLQkJCQkJSW5wdXRTdHJlYW0gaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGphckZpbGUpOwotCQkJCQlJRmlsZSBmaWxlID0gRmlsZVJlc291cmNlVXRpbHMuY3JlYXRlRmlsZShjb250ZXh0LCB0YXJnZXQsIGlzLCBtb25pdG9yLCBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpKTsKLQkJCQkJaWYgKChwcm9qZWN0UmVzdGFydFJlcXVpcmVkXy5ib29sZWFuVmFsdWUoKSA9PSBmYWxzZSkgJiYgZmlsZS5leGlzdHMoKSkgewotCQkJCQkJcHJvamVjdFJlc3RhcnRSZXF1aXJlZF8gPSBCb29sZWFuLlRSVUU7Ci0JCQkJCX0KLQotCQkJCX0KLQkJCX0KLQkJfQotCQljYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX0ZJTEVDT1BZLCBlKTsKLQkJCWVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQotCQl9Ci0JfQotCi0JLyoKLQkgKiBDaGVjayBmb3IgYW55IG9ic29sZXRlIEphcnMgaW4gV0VCLUlORi9saWIgZm9sZGVyIE9ic29sZXRlIGphcnMgd291bGQKLQkgKiBiZSBmb3VuZCBpbiBwcm9qZWN0cyBtaWdyYXRlZCBmcm9tIG9sZGVyIHZlcnNpb25zIG9mIFdUUAotCSAqLwotCXByaXZhdGUgdm9pZCBkZWxldGVPYnNvbGV0ZUphcnMoSVBhdGggd2ViTW9kdWxlUGF0aCkgewotCQkvLyBGaXJzdCBjaGVjayBmb3IgQW55IGphcnMgdGhhdCBoYXZlIG5hbWVzIHRoYXQgYXJlIGtub3duIHRvIGJlCi0JCS8vIG9ic29sZXRlCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgT0JTT0xFVEVfSkFSUy5sZW5ndGg7IGkrKykgewotCQkJSVBhdGggcGF0aCA9IHdlYk1vZHVsZVBhdGguYXBwZW5kKCJXRUItSU5GL2xpYi8iICsgT0JTT0xFVEVfSkFSU1tpXSk7Ci0KLQkJCUlGaWxlIHJlc291cmNlID0gUmVzb3VyY2VVdGlscy5nZXRXb3Jrc3BhY2VSb290KCkuZ2V0RmlsZShwYXRoKTsKLQkJCWlmIChyZXNvdXJjZS5leGlzdHMoKSkgewotCQkJCWRlbGV0ZVJlc291cmNlKHJlc291cmNlKTsKLQkJCX0KLQkJfQotCi0JCS8vIGRlbGV0ZSBvbGRlciBKQVJzIG9mIHRoZSBzYW1lIG5hbWUKLQkJZGVsZXRlT2xkSmFyKHdlYk1vZHVsZVBhdGguYXBwZW5kKCJXRUItSU5GL2xpYi8iICsgQVhJU19KQVIpLCBBWElTX0pBUl9TSVpFKTsKLQkJZGVsZXRlT2xkSmFyKHdlYk1vZHVsZVBhdGguYXBwZW5kKCJXRUItSU5GL2xpYi8iICsgQ09NTU9OX0RJU0NPVkVSWV9KQVIpLCBDT01NT05fRElTQ09WRVJZX0pBUl9TSVpFKTsKLQkJZGVsZXRlT2xkSmFyKHdlYk1vZHVsZVBhdGguYXBwZW5kKCJXRUItSU5GL2xpYi8iICsgSkFWQVhfWE1MX1JQQ19KQVIpLCBKQVZBWF9YTUxfUlBDX0pBUl9TSVpFKTsKLQkJZGVsZXRlT2xkSmFyKHdlYk1vZHVsZVBhdGguYXBwZW5kKCJXRUItSU5GL2xpYi8iICsgSkFWQVhfWE1MX1NPQVBfSkFSKSwgSkFWQVhfWE1MX1NPQVBfSkFSX1NJWkUpOwotCQlkZWxldGVPbGRKYXIod2ViTW9kdWxlUGF0aC5hcHBlbmQoIldFQi1JTkYvbGliLyIgKyBKQVZBWF9XU0RMX0pBUiksIEpBVkFYX1dTRExfSkFSX1NJWkUpOwotCQlkZWxldGVPbGRKYXIod2ViTW9kdWxlUGF0aC5hcHBlbmQoIldFQi1JTkYvbGliLyIgKyBDT01NT05fTE9HR0lOR19KQVIpLCBDT01NT05fTE9HR0lOR19KQVJfU0laRSk7Ci0KLQl9Ci0KLQlwcml2YXRlIHZvaWQgZGVsZXRlT2xkSmFyKElQYXRoIGphclBhdGgsIGxvbmcgamFyU2l6ZSkgewotCQlJRmlsZSByZXNvdXJjZSA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZpbGUoamFyUGF0aCk7Ci0JCWlmIChyZXNvdXJjZS5leGlzdHMoKSkgewotCQkJLy8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSByZXNvdXJjZSBieSBnZXR0aW5nIHRoZSBqYXZhLmlvLkZpbGUKLQkJCWxvbmcgZmlsZVNpemUgPSByZXNvdXJjZS5nZXRMb2NhdGlvbigpLnRvRmlsZSgpLmxlbmd0aCgpOwotCQkJaWYgKGZpbGVTaXplICE9IGphclNpemUpIHsKLQkJCQlkZWxldGVSZXNvdXJjZShyZXNvdXJjZSk7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlwcml2YXRlIHZvaWQgZGVsZXRlUmVzb3VyY2UoSUZpbGUgcmVzb3VyY2UpIHsgLy8gZGVsZXRlIHRoZSByZXNvdXJjZQotCQl0cnkgewotCQkJLy8gU3lzdGVtLm91dC5wcmludGxuKCJPYnNvbGV0ZSBKYXIhISAiICsgcmVzb3VyY2UuZ2V0TmFtZSgpKTsKLQkJCXJlc291cmNlLmRlbGV0ZSh0cnVlLCBudWxsKTsKLQkJfQotCQljYXRjaCAoRXhjZXB0aW9uIGUpIHsgLy8gZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJfQotCX0KLQotCi0JLyoqCi0JICogQWRkZXMgQXhpcyBKQVJzIHRvIHRoZSBidWlsZCBwYXRoIG9mIEphdmEgcHJvamVjdAotCSAqIAotCSAqIEBwYXJhbSBlbnYKLQkgKiBAcGFyYW0gbW9uaXRvcgotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBhZGRBeGlzSmFyc1RvQnVpbGRQYXRoKElQcm9qZWN0IHByb2plY3QsIElFbnZpcm9ubWVudCBlbnYsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgewotCi0JCUlTdGF0dXMgc3RhdHVzOwotCi0JCXRyeSB7Ci0JCQlnZXRKYXZhUHJvamVjdENsYXNzcGF0aChlbnYsIG1vbml0b3IpOwotCi0JCQlhZGROZXdKYXJFbnRyeShQQVRIX1RPX0pBUlNfSU5fUExVR0lOICsgQVhJU19KQVIsIGdldFRoZUphclBhdGgoQVhJU19SVU5USU1FX1BMVUdJTl9JRCwgUEFUSF9UT19KQVJTX0lOX1BMVUdJTiArIEFYSVNfSkFSKSk7Ci0JCQlhZGROZXdKYXJFbnRyeShQQVRIX1RPX0pBUlNfSU5fUExVR0lOICsgQ09NTU9OX0RJU0NPVkVSWV9KQVIsIGdldFRoZUphclBhdGgoQ09NTU9OX0RJU0NPVkVSWV9QTFVHSU5fSUQsIFBBVEhfVE9fSkFSU19JTl9QTFVHSU4gKyBDT01NT05fRElTQ09WRVJZX0pBUikpOwotCQkJYWRkTmV3SmFyRW50cnkoUEFUSF9UT19KQVJTX0lOX1BMVUdJTiArIEpBVkFYX1hNTF9SUENfSkFSLCBnZXRUaGVKYXJQYXRoKEpBVkFYX1hNTF9SUENfUExVR0lOX0lELCBQQVRIX1RPX0pBUlNfSU5fUExVR0lOICsgSkFWQVhfWE1MX1JQQ19KQVIpKTsKLQkJCWFkZE5ld0phckVudHJ5KFBBVEhfVE9fSkFSU19JTl9QTFVHSU4gKyBKQVZBWF9YTUxfU09BUF9KQVIsIGdldFRoZUphclBhdGgoSkFWQVhfWE1MX1NPQVBfUExVR0lOX0lELCBQQVRIX1RPX0pBUlNfSU5fUExVR0lOICsgSkFWQVhfWE1MX1NPQVBfSkFSKSk7Ci0KLQkJCUlQYXRoIGphdmF4V3NkbEphclBhdGggPSBCdW5kbGVVdGlscy5nZXRKYXJyZWRQbHVnaW5QYXRoKEpBVkFYX1dTRExfUExVR0lOX0lEKTsKLQkJCWlmIChqYXZheFdzZGxKYXJQYXRoICE9IG51bGwpIHsKLQkJCQlhZGROZXdKYXJFbnRyeShqYXZheFdzZGxKYXJQYXRoLnRvU3RyaW5nKCksIGphdmF4V3NkbEphclBhdGgpOwotCQkJfQotCQkJCi0JCQlJUGF0aCBjb21tb25Mb2dnaW5nSmFyUGF0aCA9IEJ1bmRsZVV0aWxzLmdldEphcnJlZFBsdWdpblBhdGgoQ09NTU9OX0xPR0dJTkdfUExVR0lOX0lEKTsKLQkJCWlmIChjb21tb25Mb2dnaW5nSmFyUGF0aCAhPSBudWxsKSB7Ci0JCQkJYWRkTmV3SmFyRW50cnkoY29tbW9uTG9nZ2luZ0phclBhdGgudG9TdHJpbmcoKSwgY29tbW9uTG9nZ2luZ0phclBhdGgpOwotCQkJfQotCQkJdXBkYXRlQ2xhc3NwYXRoKG1vbml0b3IpOwotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfQkFEX0JVSUxEUEFUSCwgZSk7Ci0JCQlyZXR1cm4gc3RhdHVzOwotCQl9Ci0KLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIGVudgotCSAqIEBwYXJhbSBtb25pdG9yCi0JICogQHJldHVybiBUaGUgSmF2YSBwcm9qZWN0IGNsYXNzcGF0aAotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JICovCi0JcHJpdmF0ZSBJU3RhdHVzIGdldEphdmFQcm9qZWN0Q2xhc3NwYXRoKElFbnZpcm9ubWVudCBlbnYsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbiB7Ci0KLQkJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotCi0JCUlKYXZhUHJvamVjdCBqYXZhUHJvamVjdF8gPSBudWxsOwotCQlvbGRDbGFzc3BhdGggPSBudWxsOwotCQlqYXZhUHJvamVjdF8gPSBKYXZhQ29yZS5jcmVhdGUocHJvamVjdCk7Ci0KLQkJb2xkQ2xhc3NwYXRoID0gamF2YVByb2plY3RfLmdldFJhd0NsYXNzcGF0aCgpOwotCi0JCXJldHVybiBzdGF0dXM7Ci0JfQotCi0JLyoqCi0JICogU3RvcmUgbmV3IEpBUiBuYW1lIGluIG5ld0phck5hbWVzTGlzdCBpZiBpdCdzIG5vdCBhbHJlYWR5IG9uIGJ1aWxkIHBhdGgKLQkgKiAKLQkgKiBAcGFyYW0gamFyTmFtZQotCSAqICAgICAgICAgICAgbmFtZSBvZiB0aGUgSkFSCi0JICogQHBhcmFtIGphclBhdGgKLQkgKiAgICAgICAgICAgIEFic29sdXRlIHBhdGggdG8gdGhlIEpBUgotCSAqLwotCXByaXZhdGUgdm9pZCBhZGROZXdKYXJFbnRyeShTdHJpbmcgamFyTmFtZSwgSVBhdGggamFyUGF0aCkgewotCi0JCWJvb2xlYW4gZm91bmQgPSBmYWxzZTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBvbGRDbGFzc3BhdGgubGVuZ3RoOyBpKyspIHsKLQkJCWZvdW5kID0gb2xkQ2xhc3NwYXRoW2ldLmdldFBhdGgoKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoamFyTmFtZS50b0xvd2VyQ2FzZSgpKTsKLQkJCWlmIChmb3VuZCkgewotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0KLQkJaWYgKCFmb3VuZCkgewotCQkJbmV3SmFyTmFtZXNMaXN0LmFkZChuZXcgSmFyRW50cnkoamFyTmFtZSwgamFyUGF0aCkpOwotCQl9Ci0KLQl9Ci0KLQkvKioKLQkgKiBVcGRhdGUgdGhlIEphdmEgcHJvamVjdCBjbGFzc3BhdGggYWRkaW5nIGNsYXNzcGF0aCBmcm9tIG5ld0phck5hbWVzTGlzdAotCSAqIHRvIG9sZENsYXNzcGF0aAotCSAqIAotCSAqIEBwYXJhbSBtb25pdG9yCi0JICogQHJldHVybgotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JICovCi0JcHJpdmF0ZSBJU3RhdHVzIHVwZGF0ZUNsYXNzcGF0aChJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24gewotCi0JCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQotCQlpZiAobmV3SmFyTmFtZXNMaXN0LnNpemUoKSA+IDApIHsKLQkJCUphckVudHJ5W10gbmV3SmFyRW50cmllcyA9IChKYXJFbnRyeVtdKSBuZXdKYXJOYW1lc0xpc3QudG9BcnJheShuZXcgSmFyRW50cnlbXXt9KTsKLQotCQkJSUNsYXNzcGF0aEVudHJ5W10gbmV3Q2xhc3NwYXRoID0gbmV3IElDbGFzc3BhdGhFbnRyeVtvbGRDbGFzc3BhdGgubGVuZ3RoICsgbmV3SmFyRW50cmllcy5sZW5ndGhdOwotCQkJaW50IGkgPSAwOwotCQkJLy8gQWRkIG9sZENsYXNzcGF0aCBlbnRyaWVzCi0JCQl3aGlsZSAoaSA8IG9sZENsYXNzcGF0aC5sZW5ndGgpIHsKLQkJCQluZXdDbGFzc3BhdGhbaV0gPSBvbGRDbGFzc3BhdGhbaV07Ci0JCQkJaSsrOwotCQkJfQotCi0JCQlpbnQgbSA9IDA7Ci0JCQl3aGlsZSAoaSA8IG5ld0NsYXNzcGF0aC5sZW5ndGgpIHsKLQkJCQluZXdDbGFzc3BhdGhbaV0gPSBKYXZhQ29yZS5uZXdMaWJyYXJ5RW50cnkobmV3SmFyRW50cmllc1ttXS5nZXRKYXJQYXRoKCksIG51bGwsIG51bGwpOwotCQkJCW0rKzsKLQkJCQlpKys7Ci0JCQl9Ci0KLQkJCS8vCi0JCQkvLyBUaGVuIHVwZGF0ZSB0aGUgcHJvamVjdCBjbGFzc3BhdGguCi0JCQkvLwotCi0JCQlJSmF2YVByb2plY3QgamF2YVByb2plY3QgPSBKYXZhQ29yZS5jcmVhdGUocHJvamVjdCk7Ci0JCQlqYXZhUHJvamVjdC5zZXRSYXdDbGFzc3BhdGgobmV3Q2xhc3NwYXRoLCBtb25pdG9yKTsKLQotCQl9Ci0KLQkJcmV0dXJuIHN0YXR1czsKLQotCX0KLQotCS8vCi0JLy8gUmV0dXJucyB0aGUgbG9jYWwgbmF0aXZlIHBhdGhuYW1lIG9mIHRoZSBqYXIuCi0JLy8KLQlwcml2YXRlIElQYXRoIGdldFRoZUphclBhdGgoU3RyaW5nIHBsdWdpbklkLCBTdHJpbmcgdGhlSmFyKSB0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7Ci0JCWlmIChwbHVnaW5JZCAhPSBudWxsKSB7Ci0JCQlVUkwgbG9jYWxVUkwgPSBQbGF0Zm9ybS5hc0xvY2FsVVJMKEJ1bmRsZVV0aWxzLmdldFVSTEZyb21CdW5kbGUocGx1Z2luSWQsIHRoZUphcikpOwotCQkJcmV0dXJuIG5ldyBQYXRoKGxvY2FsVVJMLmdldEZpbGUoKSk7Ci0JCX0KLQkJZWxzZSB7Ci0JCQlyZXR1cm4gbmV3IFBhdGgodGhlSmFyKTsKLQkJfQotCi0JfQotCi0JcHVibGljIHZvaWQgc2V0UHJvamVjdChJUHJvamVjdCBwcm9qZWN0KSB7Ci0JCXRoaXMucHJvamVjdCA9IHByb2plY3Q7Ci0JfQotCi0JcHVibGljIGJvb2xlYW4gZ2V0UHJvamVjdFJlc3RhcnRSZXF1aXJlZCgpIHsKLQkJcmV0dXJuIHByb2plY3RSZXN0YXJ0UmVxdWlyZWRfLmJvb2xlYW5WYWx1ZSgpOwotCX0KLQotCXB1YmxpYyBjbGFzcyBKYXJFbnRyeSB7Ci0JCXByaXZhdGUgU3RyaW5nIGphck5hbWU7Ci0JCXByaXZhdGUgSVBhdGggamFyUGF0aDsKLQotCQlwdWJsaWMgSmFyRW50cnkoU3RyaW5nIG5hbWUsIElQYXRoIHBhdGgpIHsKLQkJCWphck5hbWUgPSBuYW1lOwotCQkJamFyUGF0aCA9IHBhdGg7Ci0JCX0KLQotCQlwdWJsaWMgU3RyaW5nIGdldEphck5hbWUoKSB7Ci0JCQlyZXR1cm4gamFyTmFtZTsKLQkJfQotCi0JCXB1YmxpYyBJUGF0aCBnZXRKYXJQYXRoKCkgewotCQkJcmV0dXJuIGphclBhdGg7Ci0JCX0KLQotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3Rhc2svRGVmYXVsdHNGb3JIVFRQQmFzaWNBdXRoQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdGFzay9EZWZhdWx0c0ZvckhUVFBCYXNpY0F1dGhDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZDc4OTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdGFzay9EZWZhdWx0c0ZvckhUVFBCYXNpY0F1dGhDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnRhc2s7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c2lsLkRpYWxvZ1dXV0F1dGhlbnRpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5XZWJTZXJ2aWNlc1BhcnNlckV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VFbnRpdHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi0KLQotcHVibGljIGNsYXNzIERlZmF1bHRzRm9ySFRUUEJhc2ljQXV0aENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyOwotICBwcml2YXRlIFN0cmluZyB3c2RsU2VydmljZVVSTDsKLSAgcHJpdmF0ZSBKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtOwotCi0gIHB1YmxpYyBEZWZhdWx0c0ZvckhUVFBCYXNpY0F1dGhDb21tYW5kKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLSAgCi0JcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApIAotCXsgICAKLSAgICBpZiAod3NkbFNlcnZpY2VVUkwgIT0gbnVsbCAmJiB3c2RsU2VydmljZVVSTC5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgaWYgKHdlYlNlcnZpY2VzUGFyc2VyID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHdlYlNlcnZpY2VzUGFyc2VyID0gbmV3IFdlYlNlcnZpY2VzUGFyc2VyRXh0KCk7Ci0gICAgICAgIC8vd3NlLnNldFdTUGFyc2VyKHdlYlNlcnZpY2VzUGFyc2VyKTsKLSAgICAgIH0KLSAgICAgIFdlYlNlcnZpY2VFbnRpdHkgd3NFbnRpdHkgPSB3ZWJTZXJ2aWNlc1BhcnNlci5nZXRXZWJTZXJ2aWNlRW50aXR5QnlVUkkod3NkbFNlcnZpY2VVUkwpOwotICAgICAgaWYgKHdzRW50aXR5ID09IG51bGwgfHwgIXdzRW50aXR5LmlzRW50aXR5UmVzb2x2ZWQoKSkKLSAgICAgIHsKLSAgICAgICAgd2ViU2VydmljZXNQYXJzZXIuc2V0VVJJKHdzZGxTZXJ2aWNlVVJMKTsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICB3ZWJTZXJ2aWNlc1BhcnNlci5wYXJzZShXZWJTZXJ2aWNlc1BhcnNlci5QQVJTRV9OT05FKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24gd3d3YWUpCi0gICAgICAgIHsKLSAgICAgICAgICBEaWFsb2dXV1dBdXRoZW50aWNhdGlvbiBkaWFsb2cgPSBuZXcgRGlhbG9nV1dXQXV0aGVudGljYXRpb24oUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKS5nZXRTaGVsbCgpKTsKLSAgICAgICAgICBkaWFsb2cuaGFuZGxlV1dXQXV0aGVudGljYXRpb24od3d3YWUpOwotICAgICAgICAgIFN0cmluZyB1c2VybmFtZSA9IGRpYWxvZy5nZXRVc2VybmFtZSgpOwotICAgICAgICAgIFN0cmluZyBwYXNzd29yZCA9IGRpYWxvZy5nZXRQYXNzd29yZCgpOwotICAgICAgICAgIGlmICh1c2VybmFtZSAhPSBudWxsICYmIHBhc3N3b3JkICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgd2ViU2VydmljZXNQYXJzZXIuc2V0SFRUUEJhc2ljQXV0aFVzZXJuYW1lKHVzZXJuYW1lKTsKLSAgICAgICAgICAgIHdlYlNlcnZpY2VzUGFyc2VyLnNldEhUVFBCYXNpY0F1dGhQYXNzd29yZChwYXNzd29yZCk7Ci0gICAgICAgICAgICB0cnkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgd2ViU2VydmljZXNQYXJzZXIucGFyc2UoV2ViU2VydmljZXNQYXJzZXIuUEFSU0VfTk9ORSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3ZWJTZXJ2aWNlc1BhcnNlci5zZXRIVFRQQmFzaWNBdXRoVXNlcm5hbWUobnVsbCk7Ci0gICAgICAgICAgICB3ZWJTZXJ2aWNlc1BhcnNlci5zZXRIVFRQQmFzaWNBdXRoUGFzc3dvcmQobnVsbCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIHdzRW50aXR5ID0gd2ViU2VydmljZXNQYXJzZXIuZ2V0V2ViU2VydmljZUVudGl0eUJ5VVJJKHdzZGxTZXJ2aWNlVVJMKTsKLSAgICAgIH0KLSAgICAgIGlmICh3c0VudGl0eSAhPSBudWxsICYmIHdzRW50aXR5LmdldFR5cGUoKSA9PSBXZWJTZXJ2aWNlRW50aXR5LlRZUEVfV1NETCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGh0dHBVc2VybmFtZSA9IHdzRW50aXR5LmdldEhUVFBVc2VybmFtZSgpOwotICAgICAgICBTdHJpbmcgaHR0cFBhc3N3b3JkID0gd3NFbnRpdHkuZ2V0SFRUUFBhc3N3b3JkKCk7Ci0gICAgICAgIGlmIChodHRwVXNlcm5hbWUgIT0gbnVsbCAmJiBodHRwUGFzc3dvcmQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGphdmFXU0RMUGFyYW0uc2V0SFRUUFVzZXJuYW1lKGh0dHBVc2VybmFtZSk7Ci0gICAgICAgICAgamF2YVdTRExQYXJhbS5zZXRIVFRQUGFzc3dvcmQoaHR0cFBhc3N3b3JkKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIGphdmFXU0RMUGFyYW0gVGhlIGphdmFXU0RMUGFyYW0gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SmF2YVdTRExQYXJhbShKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtKSB7Ci0gICAgdGhpcy5qYXZhV1NETFBhcmFtID0gamF2YVdTRExQYXJhbTsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gd3NkbFNlcnZpY2VVUkwgVGhlIHdzZGxTZXJ2aWNlVVJMIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdzZGxTZXJ2aWNlVVJMKFN0cmluZyB3c2RsU2VydmljZVVSTCkgewotICAgIHRoaXMud3NkbFNlcnZpY2VVUkwgPSB3c2RsU2VydmljZVVSTDsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGphdmFXU0RMUGFyYW0uCi0gICAqLwotICBwdWJsaWMgSmF2YVdTRExQYXJhbWV0ZXIgZ2V0SmF2YVdTRExQYXJhbSgpIHsKLSAgICByZXR1cm4gamF2YVdTRExQYXJhbTsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHdlYlNlcnZpY2VzUGFyc2VyLgotICAgKi8KLSAgcHVibGljIFdlYlNlcnZpY2VzUGFyc2VyIGdldFdlYlNlcnZpY2VzUGFyc2VyKCkgewotICAgIHJldHVybiB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gd2ViU2VydmljZXNQYXJzZXIgVGhlIHdlYlNlcnZpY2VzUGFyc2VyIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyKSB7Ci0gICAgdGhpcy53ZWJTZXJ2aWNlc1BhcnNlciA9IHdlYlNlcnZpY2VzUGFyc2VyOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3Rhc2svUmVmcmVzaFByb2plY3RDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS90YXNrL1JlZnJlc2hQcm9qZWN0Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTBiNTIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3Rhc2svUmVmcmVzaFByb2plY3RDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudGFzazsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS5BeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLQotcHVibGljIGNsYXNzIFJlZnJlc2hQcm9qZWN0Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0JcHJpdmF0ZSBJUHJvamVjdCBwcm9qZWN0OwotCi0JcHVibGljIFJlZnJlc2hQcm9qZWN0Q29tbWFuZCgpCi0JewotCX0KLQotCS8qKgotCSogRXhlY3V0ZSBSZWZyZXNoUHJvamVjdFRhc2sKLQkqLwotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLQl7Ci0JCUlFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotCQl0cnkKLQkJewotCQkJaWYgKHByb2plY3QhPW51bGwpCi0JCQlwcm9qZWN0LnJlZnJlc2hMb2NhbChJUHJvamVjdC5ERVBUSF9JTkZJTklURSwgbmV3IE51bGxQcm9ncmVzc01vbml0b3IoKSk7Ci0JCX0KLQkJY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkKLQkJewotCQkgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1JFRlJFU0hfUFJPSkVDVCwgZSk7Ci0JCSAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkgIHJldHVybiBzdGF0dXM7Ci0JCX0KLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfQotCi0JcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKSB7Ci0JCXJldHVybiBwcm9qZWN0OwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFByb2plY3QoSVByb2plY3QgcHJvamVjdCkgewotCQl0aGlzLnByb2plY3QgPSBwcm9qZWN0OwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3Rhc2svU3R1YjJCZWFuQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdGFzay9TdHViMkJlYW5Db21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NDAyMWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdGFzay9TdHViMkJlYW5Db21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyODQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjE2ICAgMTE1MTQ0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwNTAzICAgMTI2ODE5IHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA1MTUgICAxMTgzMTUgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKiAyMDA2MDcyOCAgIDE0NTQyNiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODA2MTMgICAyMzY1MjMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIE92ZXJ3cml0ZSBzZXR0aW5nIG9uIFdlYiBzZXJ2aWNlIHdpemFyZCBpcyBjb3VwbGVkIHdpdGggcHJlZmVyZW5jZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudGFzazsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzczsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5OYW1lTWFwcGluZ1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLkF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUuTW9kdWxlQ29yZU5hdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLQotCi1wdWJsaWMgY2xhc3MgU3R1YjJCZWFuQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXI7Ci0gIHByaXZhdGUgSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbV87Ci0gIHByaXZhdGUgU3RyaW5nIGRpc2NvdmVyZWRXc2RsUG9ydEVsZW1lbnROYW1lOwotICBwcml2YXRlIFZlY3RvciBwb3J0VHlwZXNfOwotICBwcml2YXRlIFN0cmluZyBwcm94eUJlYW5fOwotICBwcml2YXRlIFN0cmluZyBvdXRwdXRGb2xkZXJfOwotICBwcml2YXRlIFN0cmluZyBwcm94eUVuZHBvaW50XzsKLSAgCi0gIHByaXZhdGUgSVByb2plY3QgY2xpZW50UHJvamVjdF87Ci0gIAotICBwdWJsaWMgU3R1YjJCZWFuQ29tbWFuZCgpewotCSAgc3VwZXIoKTsKLQkgIHBvcnRUeXBlc18gPSBuZXcgVmVjdG9yKCk7CSAgCi0gIH0KLQotICAvKioKLSAgKiBFeGVjdXRlCi0gICovCi0JcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApIAotCXsKLQkJSUVudmlyb25tZW50IGVudmlyb25tZW50ID0gZ2V0RW52aXJvbm1lbnQoKTsgICAgICAgCi0gICAgU3RyaW5nIGlucHV0V3NkbExvY2F0aW9uID0gamF2YVdTRExQYXJhbV8uZ2V0SW5wdXRXc2RsTG9jYXRpb24oKTsKLSAgICBEZWZpbml0aW9uIGRlZiA9IHdlYlNlcnZpY2VzUGFyc2VyLmdldFdTRExEZWZpbml0aW9uKGlucHV0V3NkbExvY2F0aW9uKTsKLSAgICAvKgotICAgICogSGFjazogQXhpcyBpcyBub3QgdXNpbmcgYSBwcm9wZXIgamF2YS5uZXQuVVJMIGFzIGl0cyBpbnB1dFdzZGxMb2NhdGlvbi4KLSAgICAqIFdlIG5lZWQgdG8gY29udmVydCBpdCB0byBhIHByb3BlciBmaWxlIFVSTC4KLSAgICAqLwotICAgIGlmIChkZWYgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBGaWxlIGZpbGUgPSBuZXcgRmlsZShpbnB1dFdzZGxMb2NhdGlvbik7Ci0gICAgICBpZiAoZmlsZS5leGlzdHMoKSkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBkZWYgPSB3ZWJTZXJ2aWNlc1BhcnNlci5nZXRXU0RMRGVmaW5pdGlvbihmaWxlLnRvVVJMKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBtdXJsZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vRW5zdXJlIHRoZSBjbGllbnQgcHJvamVjdCBpcyBlaXRoZXIgYSBmbGV4aWJsZSBwcm9qZWN0IG9yIGEgSmF2YSBwcm9qZWN0Ci0gICAgTW9kdWxlQ29yZU5hdHVyZSBtbiA9IE1vZHVsZUNvcmVOYXR1cmUuZ2V0TW9kdWxlQ29yZU5hdHVyZShjbGllbnRQcm9qZWN0Xyk7Ci0gICAgaWYgKG1uPT1udWxsKQotICAgIHsKLSAgICAgICAgLy8gQ2hlY2sgaWYgaXQncyBhIHBsYWluIG9sZCBKYXZhIHByb2plY3QgICAgCi0JCWlmICghUmVzb3VyY2VVdGlscy5pc0phdmFQcm9qZWN0KGNsaWVudFByb2plY3RfKSkKLQkJewotCSAJCSAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1dBUk5fTk9fSkFWQV9OQVRVUkUpOwkKLQkgCQkgICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkgCQkgICByZXR1cm4gc3RhdHVzOwotCQl9ICAgIAkKLSAgICB9Ci0gICAgCi0gICAgTWFwIHBrZzJuc01hcHBpbmcgPSBqYXZhV1NETFBhcmFtXy5nZXRNYXBwaW5ncygpOwotICAgIE1hcCBzZXJ2aWNlcyA9IGRlZi5nZXRTZXJ2aWNlcygpOwotICAgIGZvciAoSXRlcmF0b3IgaXQgPSBzZXJ2aWNlcy52YWx1ZXMoKS5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIFNlcnZpY2Ugc2VydmljZSA9IChTZXJ2aWNlKWl0Lm5leHQoKTsKLSAgICAgIFN0cmluZyBzZXJ2aWNlUGtnTmFtZSA9IE5hbWVNYXBwaW5nVXRpbHMuZ2V0UGFja2FnZU5hbWUoc2VydmljZS5nZXRRTmFtZSgpLmdldE5hbWVzcGFjZVVSSSgpLCBwa2cybnNNYXBwaW5nKTsKLSAgICAgIFN0cmluZyBzZXJ2aWNlQ2xhc3NOYW1lID0gY29tcHV0ZUNsYXNzTmFtZShzZXJ2aWNlLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCkpOwotICAgICAgU3RyaW5nIGpuZGlOYW1lID0gc2VydmljZUNsYXNzTmFtZTsKLSAgICAgIE1hcCBwb3J0cyA9IHNlcnZpY2UuZ2V0UG9ydHMoKTsKLSAgICAgIGZvciAoSXRlcmF0b3IgaXQyID0gcG9ydHMudmFsdWVzKCkuaXRlcmF0b3IoKTsgaXQyLmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIGlmIChzZXJ2aWNlQ2xhc3NOYW1lLmVxdWFscyhjb21wdXRlQ2xhc3NOYW1lKCgoUG9ydClpdDIubmV4dCgpKS5nZXRCaW5kaW5nKCkuZ2V0UG9ydFR5cGUoKS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpKSkpCi0gICAgICAgIHsKLSAgICAgICAgICBzZXJ2aWNlQ2xhc3NOYW1lID0gc2VydmljZUNsYXNzTmFtZSArICJfU2VydmljZSI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGZvciAoSXRlcmF0b3IgaXQyID0gcG9ydHMudmFsdWVzKCkuaXRlcmF0b3IoKTsgaXQyLmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIFBvcnQgcG9ydCA9IChQb3J0KWl0Mi5uZXh0KCk7Ci0gICAgICAgIGlmIChkaXNjb3ZlcmVkV3NkbFBvcnRFbGVtZW50TmFtZSAhPSBudWxsICYmICFkaXNjb3ZlcmVkV3NkbFBvcnRFbGVtZW50TmFtZS5lcXVhbHMocG9ydC5nZXROYW1lKCkpKQotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBTT0FQQWRkcmVzcyBzb2FwQWRkcmVzcyA9IG51bGw7Ci0gICAgICAgIExpc3QgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzID0gcG9ydC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgICAgaWYgKGV4dGVuc2liaWxpdHlFbGVtZW50cyAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgZm9yIChJdGVyYXRvciBpdDMgPSBleHRlbnNpYmlsaXR5RWxlbWVudHMuaXRlcmF0b3IoKTsgaXQzLmhhc05leHQoKTspCi0gICAgICAgICAgewotICAgICAgICAgICAgT2JqZWN0IG9iamVjdCA9IGl0My5uZXh0KCk7Ci0gICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgU09BUEFkZHJlc3MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHNvYXBBZGRyZXNzID0gKFNPQVBBZGRyZXNzKW9iamVjdDsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChzb2FwQWRkcmVzcyAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgcHJveHlFbmRwb2ludF8gPSBzb2FwQWRkcmVzcy5nZXRMb2NhdGlvblVSSSgpOwotICAgICAgICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gcG9ydC5nZXRCaW5kaW5nKCkuZ2V0UG9ydFR5cGUoKTsKLSAgICAgICAgICBRTmFtZSBwb3J0VHlwZVFOYW1lID0gcG9ydFR5cGUuZ2V0UU5hbWUoKTsKLSAgICAgICAgICBTdHJpbmdCdWZmZXIgcG9ydFR5cGVJRCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgICBwb3J0VHlwZUlELmFwcGVuZChwb3J0VHlwZVFOYW1lLmdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICAgICAgICBwb3J0VHlwZUlELmFwcGVuZCgiIyIpOwotICAgICAgICAgIHBvcnRUeXBlSUQuYXBwZW5kKHBvcnRUeXBlUU5hbWUuZ2V0TG9jYWxQYXJ0KCkpOwotICAgICAgICAgIGlmICghcG9ydFR5cGVzXy5jb250YWlucyhwb3J0VHlwZUlELnRvU3RyaW5nKCkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBvcnRUeXBlc18uYWRkKHBvcnRUeXBlSUQudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICBTdHViMkJlYW5JbmZvIHN0dWIyQmVhbkluZm8gPSBuZXcgU3R1YjJCZWFuSW5mbygpOwotICAgICAgICAgICAgc3R1YjJCZWFuSW5mby5zZXRDbGllbnRQcm9qZWN0KGNsaWVudFByb2plY3RfKTsKLSAgICAgICAgICAgIHN0dWIyQmVhbkluZm8uc2V0T3V0cHV0Rm9sZGVyKCBvdXRwdXRGb2xkZXJfICk7Ci0gICAgICAgICAgICBTdHJpbmcgcG9ydFR5cGVQa2dOYW1lID0gTmFtZU1hcHBpbmdVdGlscy5nZXRQYWNrYWdlTmFtZShwb3J0VHlwZS5nZXRRTmFtZSgpLmdldE5hbWVzcGFjZVVSSSgpLCBwa2cybnNNYXBwaW5nKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIElmIHRoZSBwYWNrYWdlIG5hbWUgYW5kIG1ldGhvZCBuYW1lIGFyZSB0aGUgc2FtZSB0aGUgQXhpcwotICAgICAgICAgICAgICogd3NkbDJKYXZhIEVtaXR0ZXIgYWRkcyBhICJfcGtnIiBzdWZmaXggdG8gdGhlIHBhY2thZ2UgbmFtZQotICAgICAgICAgICAgICogb2YgZ2VuZXJhdGVkIGNvZGUuCi0gICAgICAgICAgICAgKiAKLSAgICAgICAgICAgICAqIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBwcm94eSBnZXQncyBwdXQgaW4gdGhpcyBzYW1lIHBhY2thZ2UKLSAgICAgICAgICAgICAqIGlmIGFuIG9wZXJhdGlvbiBuYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBwYWNrYWdlIG5hbWUuCi0gICAgICAgICAgICAgKiAoTWFyayBIdXRjaGluc29uIC0gQnVnIDExODMxNSkKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgTGlzdCBvcGVyYXRpb25zID0gcG9ydFR5cGUuZ2V0T3BlcmF0aW9ucygpOwotICAgICAgICAgICAgSXRlcmF0b3Igb3Blckl0ZXIgPSBvcGVyYXRpb25zLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICBib29sZWFuIGFkZFN1ZmZpeCA9IGZhbHNlOwotICAgICAgICAgICAgd2hpbGUgKG9wZXJJdGVyLmhhc05leHQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIAlPcGVyYXRpb24gb3BlcmF0aW9uID0gKE9wZXJhdGlvbilvcGVySXRlci5uZXh0KCk7Ci0gICAgICAgICAgICAJaWYgKG9wZXJhdGlvbi5nZXROYW1lKCkuZXF1YWxzKHBvcnRUeXBlUGtnTmFtZSkpCi0gICAgICAgICAgICAJewotICAgICAgICAgICAgCQlhZGRTdWZmaXggPSB0cnVlOyAgICAgICAgICAgIAkKLSAgICAgICAgICAgIAl9Ci0gICAgICAgICAgICB9ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoYWRkU3VmZml4KSB7Ci0gICAgICAgICAgICAJcG9ydFR5cGVQa2dOYW1lID0gcG9ydFR5cGVQa2dOYW1lICsgIl9wa2ciOwotICAgICAgICAgICAgCXNlcnZpY2VQa2dOYW1lID0gc2VydmljZVBrZ05hbWUgKyAiX3BrZyI7Ci0gICAgICAgICAgICB9ICAgICAgICAgICAgCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIFN0cmluZyBwb3J0VHlwZUNsYXNzTmFtZSA9IGNvbXB1dGVDbGFzc05hbWUocG9ydFR5cGVRTmFtZS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICAgICAgICBzdHViMkJlYW5JbmZvLnNldFBhY2thZ2UocG9ydFR5cGVQa2dOYW1lKTsKLSAgICAgICAgICAgIHN0dWIyQmVhbkluZm8uc2V0Q2xhc3MocG9ydFR5cGVDbGFzc05hbWUgKyAiUHJveHkiKTsKLSAgICAgICAgICAgIHByb3h5QmVhbl8gPSBwb3J0VHlwZVBrZ05hbWUrIi4iK3BvcnRUeXBlQ2xhc3NOYW1lKyJQcm94eSI7Ci0gICAgICAgICAgICBpZiAoam5kaU5hbWUuZXF1YWxzKHBvcnRUeXBlQ2xhc3NOYW1lKSkKLSAgICAgICAgICAgICAgcG9ydFR5cGVDbGFzc05hbWUgPSBwb3J0VHlwZUNsYXNzTmFtZSArICJfUG9ydFR5cGUiOwotICAgICAgICAgICAgc3R1YjJCZWFuSW5mby5hZGRTRUkocG9ydFR5cGVQa2dOYW1lLCBwb3J0VHlwZUNsYXNzTmFtZSwgc2VydmljZVBrZ05hbWUsIHNlcnZpY2VDbGFzc05hbWUsIGpuZGlOYW1lLCBOYW1lTWFwcGluZ1V0aWxzLmdldFBvcnROYW1lKHBvcnQuZ2V0TmFtZSgpKSk7Ci0gICAgICAgICAgICB0cnkKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgIAotICAgICAgICAgICAgICBzdHViMkJlYW5JbmZvLndyaXRlKGVudmlyb25tZW50LCBtb25pdG9yKTsKLSAgICAgICAgICAgICAgaWYgKGRpc2NvdmVyZWRXc2RsUG9ydEVsZW1lbnROYW1lICE9IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgZGlzY292ZXJlZCBwb3J0IHdhcyBwcm9jZXNzZWQuIElnbm9yZSBhbGwgb3RoZXIgcG9ydHMgYW5kIHNlcnZpY2VzLgotICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgY29tcHV0ZUNsYXNzTmFtZShTdHJpbmcgY2xhc3NOYW1lKQotICB7Ci0JICByZXR1cm4gTmFtZU1hcHBpbmdVdGlscy54bWxOYW1lVG9KYXZhQ2xhc3MoY2xhc3NOYW1lKTsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIGphdmFXU0RMUGFyYW0uCi0gICogQHJldHVybiBKYXZhV1NETFBhcmFtZXRlcgotICAqLwotICBwdWJsaWMgSmF2YVdTRExQYXJhbWV0ZXIgZ2V0SmF2YVdTRExQYXJhbSgpCi0gIHsKLSAgICByZXR1cm4gamF2YVdTRExQYXJhbV87Ci0gIH0KLQotICAvKioKLSAgKiBTZXRzIHRoZSBqYXZhV1NETFBhcmFtLgotICAqIEBwYXJhbSBqYXZhV1NETFBhcmFtIFRoZSBqYXZhV1NETFBhcmFtIHRvIHNldAotICAqLwotICBwdWJsaWMgdm9pZCBzZXRKYXZhV1NETFBhcmFtKEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW0pCi0gIHsKLSAgICBqYXZhV1NETFBhcmFtXyA9IGphdmFXU0RMUGFyYW07Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgd2ViU2VydmljZXNQYXJzZXIuCi0gICAqLwotICBwdWJsaWMgV2ViU2VydmljZXNQYXJzZXIgZ2V0V2ViU2VydmljZXNQYXJzZXIoKSB7Ci0gICAgcmV0dXJuIHdlYlNlcnZpY2VzUGFyc2VyOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSB3ZWJTZXJ2aWNlc1BhcnNlciBUaGUgd2ViU2VydmljZXNQYXJzZXIgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXIpIHsKLSAgICB0aGlzLndlYlNlcnZpY2VzUGFyc2VyID0gd2ViU2VydmljZXNQYXJzZXI7Ci0gIH0KLQotCi0gIC8qKgotICAgKiBAcGFyYW0gZGlzY292ZXJlZFdzZGxQb3J0RWxlbWVudE5hbWUgVGhlIGRpc2NvdmVyZWRXc2RsUG9ydEVsZW1lbnROYW1lIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERpc2NvdmVyZWRXc2RsUG9ydEVsZW1lbnROYW1lKFN0cmluZyBkaXNjb3ZlcmVkV3NkbFBvcnRFbGVtZW50TmFtZSkgewotICAgIHRoaXMuZGlzY292ZXJlZFdzZGxQb3J0RWxlbWVudE5hbWUgPSBkaXNjb3ZlcmVkV3NkbFBvcnRFbGVtZW50TmFtZTsKLSAgfQotCi0gIC8qKgotCSogQHBhcmFtIGNsaWVudFByb2plY3QgVGhlIGNsaWVudFByb2plY3QgdG8gc2V0LgotCSovCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFByb2plY3QoSVByb2plY3QgY2xpZW50UHJvamVjdCkgewotCQl0aGlzLmNsaWVudFByb2plY3RfID0gY2xpZW50UHJvamVjdDsKLSAgfQotCQotCS8qKgotCSAqIEByZXR1cm4gUmV0dXJucyB0aGUgcHJveHlCZWFuLgotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0UHJveHlCZWFuKCkgewotCQlyZXR1cm4gcHJveHlCZWFuXzsKLQl9CQotCQotCXB1YmxpYyB2b2lkIHNldE91dHB1dEZvbGRlciggU3RyaW5nIG91dHB1dEZvbGRlciApCi0JewotCQlvdXRwdXRGb2xkZXJfID0gb3V0cHV0Rm9sZGVyOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0UHJveHlFbmRwb2ludCgpIHsKLQkJcmV0dXJuIHByb3h5RW5kcG9pbnRfOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3Rhc2svU3R1YjJCZWFuSW5mby5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdGFzay9TdHViMkJlYW5JbmZvLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMDRlYWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdGFzay9TdHViMkJlYW5JbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjE2ICAgMTE1MTQ0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwMjE2ICAgMTI3MTM4IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwNTE3ICAgMTQxNDgxIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDcwMzEzICAgMTc2NTgwIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBHZW5lcmF0ZSBhIENsaWVudCBXUyBQcm94eSBhY2NlcHRpbmcgVVJMCi0gKiAyMDA4MDYxMyAgIDIzNjUyMyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgT3ZlcndyaXRlIHNldHRpbmcgb24gV2ViIHNlcnZpY2Ugd2l6YXJkIGlzIGNvdXBsZWQgd2l0aCBwcmVmZXJlbmNlCi0gKiAyMDA4MDcwOSAgIDI0MDIyNSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudGFzazsKLQotaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLWltcG9ydCBqYXZhLmlvLldyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JbmNyZW1lbnRhbFByb2plY3RCdWlsZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUhlbHBlcnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YVBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhVmlzaWJpbGl0eUtpbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSmF2YU1PRlV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbW9uLkZpbGVSZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkJhc2VFY2xpcHNlRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBjb20uaWJtLmljdS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotcHVibGljIGNsYXNzIFN0dWIyQmVhbkluZm8KLXsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgTkVXX0xJTkUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImxpbmUuc2VwYXJhdG9yIik7Ci0KLSAgcHJpdmF0ZSBpbnQgaW5kZW50Q291bnQ7Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgcGFja2FnZV87Ci0gIHByaXZhdGUgU3RyaW5nQnVmZmVyIGltcG9ydHNfOwotICBwcml2YXRlIFN0cmluZ0J1ZmZlciBzZWlzXzsKLSAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgc2VydmljZXNfOwotICBwcml2YXRlIFN0cmluZ0J1ZmZlciBqbmRpTmFtZXNfOwotICBwcml2YXRlIFN0cmluZ0J1ZmZlciBwb3J0c187Ci0gIHByaXZhdGUgU3RyaW5nIGNsYXNzXzsKLSAgcHJpdmF0ZSBWZWN0b3IgdXNlZE5hbWVzOwotICAKLSAgcHJpdmF0ZSBJUHJvamVjdCBjbGllbnRQcm9qZWN0XzsKLSAgcHJpdmF0ZSBTdHJpbmcgICBvdXRwdXRGb2xkZXJfOwotICAKLSAgcHVibGljIFN0dWIyQmVhbkluZm8oKQotICB7Ci0gICAgaW5kZW50Q291bnQgPSAwOwotICAgIHBhY2thZ2VfID0gbnVsbDsKLSAgICBpbXBvcnRzXyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBzZWlzXyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBzZXJ2aWNlc18gPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgam5kaU5hbWVzXyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBwb3J0c18gPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgY2xhc3NfID0gIlNFSUJlYW4iOwotICAgIHVzZWROYW1lcyA9IG5ldyBWZWN0b3IoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFByb2plY3QoSVByb2plY3QgY2xpZW50UHJvamVjdCkgewotICAJdGhpcy5jbGllbnRQcm9qZWN0XyA9ICBjbGllbnRQcm9qZWN0OwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRPdXRwdXRGb2xkZXIoIFN0cmluZyBvdXRwdXRGb2xkZXIgKQotICB7Ci0gIAlvdXRwdXRGb2xkZXJfID0gb3V0cHV0Rm9sZGVyOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRQYWNrYWdlKFN0cmluZyBwa2dOYW1lKQotICB7Ci0JICBwYWNrYWdlXyA9IHBrZ05hbWU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRJbXBvcnRzKFN0cmluZyBwa2dOYW1lLCBTdHJpbmcgY2xhc3NOYW1lKQotICB7Ci0gICAgaW1wb3J0c18uYXBwZW5kKHRvRnVsbHlRdWFsaWZpZWRDbGFzc05hbWUocGtnTmFtZSwgY2xhc3NOYW1lKSk7Ci0gICAgaW1wb3J0c18uYXBwZW5kKCI7Iik7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRTRUkoU3RyaW5nIHNlaVBrZ05hbWUsIFN0cmluZyBzZWlDbGFzc05hbWUsIFN0cmluZyBzZXJ2aWNlUGtnTmFtZSwgU3RyaW5nIHNlcnZpY2VDbGFzc05hbWUsIFN0cmluZyBwb3J0TmFtZSkKLSAgewotICAgIGFkZFNFSShzZWlQa2dOYW1lLCBzZWlDbGFzc05hbWUsIHNlcnZpY2VQa2dOYW1lLCBzZXJ2aWNlQ2xhc3NOYW1lLCBzZXJ2aWNlQ2xhc3NOYW1lLCBwb3J0TmFtZSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRTRUkoU3RyaW5nIHNlaVBrZ05hbWUsIFN0cmluZyBzZWlDbGFzc05hbWUsIFN0cmluZyBzZXJ2aWNlUGtnTmFtZSwgU3RyaW5nIHNlcnZpY2VDbGFzc05hbWUsIFN0cmluZyBqbmRpTmFtZSwgU3RyaW5nIHBvcnROYW1lKQotICB7Ci0gICAgc2Vpc18uYXBwZW5kKHRvRnVsbHlRdWFsaWZpZWRDbGFzc05hbWUoc2VpUGtnTmFtZSwgc2VpQ2xhc3NOYW1lKSk7Ci0gICAgc2Vpc18uYXBwZW5kKCI7Iik7Ci0gICAgc2VydmljZXNfLmFwcGVuZCh0b0Z1bGx5UXVhbGlmaWVkQ2xhc3NOYW1lKHNlcnZpY2VQa2dOYW1lLCBzZXJ2aWNlQ2xhc3NOYW1lKSk7Ci0gICAgc2VydmljZXNfLmFwcGVuZCgiOyIpOwotICAgIGpuZGlOYW1lc18uYXBwZW5kKGpuZGlOYW1lKTsKLSAgICBqbmRpTmFtZXNfLmFwcGVuZCgiOyIpOwotICAgIHBvcnRzXy5hcHBlbmQocG9ydE5hbWUpOwotICAgIHBvcnRzXy5hcHBlbmQoIjsiKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENsYXNzKFN0cmluZyBjbGFzc05hbWUpCi0gIHsKLQkgIGNsYXNzXyA9IGNsYXNzTmFtZTsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIHRvRnVsbHlRdWFsaWZpZWRDbGFzc05hbWUoU3RyaW5nIHBrZ05hbWUsIFN0cmluZyBjbGFzc05hbWUpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgc2IuYXBwZW5kKHBrZ05hbWUpOwotICAgIHNiLmFwcGVuZCgiLiIpOwotICAgIHNiLmFwcGVuZChjbGFzc05hbWUpOwotICAgIHJldHVybiBzYi50b1N0cmluZygpOwotICB9Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0UGFja2FnZU5hbWUoU3RyaW5nIHFuYW1lKQotICB7Ci0gICAgaW50IGluZGV4ID0gcW5hbWUubGFzdEluZGV4T2YoIi4iKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICByZXR1cm4gcW5hbWUuc3Vic3RyaW5nKDAsIGluZGV4KTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gcW5hbWU7Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBnZXRDbGFzc05hbWUoU3RyaW5nIHFuYW1lKQotICB7Ci0gICAgaW50IGluZGV4ID0gcW5hbWUubGFzdEluZGV4T2YoIi4iKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICByZXR1cm4gcW5hbWUuc3Vic3RyaW5nKGluZGV4KzEsIHFuYW1lLmxlbmd0aCgpKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gcW5hbWU7Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBmaXJzdENoYXJUb0xvd2VyQ2FzZShTdHJpbmcgcykKLSAgewotICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBzYi5hcHBlbmQocy5zdWJzdHJpbmcoMCwgMSkudG9Mb3dlckNhc2UoKSk7Ci0gICAgc2IuYXBwZW5kKHMuc3Vic3RyaW5nKDEsIHMubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIGdldEZ1bGx5UXVhbGlmaWVkTmFtZShKYXZhSGVscGVycyBqYXZhSGVscGVycykKLSAgewotICAgIGlmIChqYXZhSGVscGVycy5pc1ByaW1pdGl2ZSgpKQotICAgICAgcmV0dXJuIGphdmFIZWxwZXJzLmdldEphdmFOYW1lKCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGphdmFIZWxwZXJzLmdldFF1YWxpZmllZE5hbWUoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHdyaXRlKElFbnZpcm9ubWVudCBlbnYsIElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiwgSU9FeGNlcHRpb24KLSAgewotCUlTdGF0dXNIYW5kbGVyIHN0YXR1c01vbml0b3IgPSBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpOwotCQotICAgIElQYXRoICAgICAgICBvdXRwdXRQYXRoID0gbmV3IFBhdGgoIG91dHB1dEZvbGRlcl8gKTsKLSAgICBJUHJvamVjdCAgICAgcHJvamVjdCAgICA9IFJlc291cmNlVXRpbHMuZ2V0UHJvamVjdE9mKCBvdXRwdXRQYXRoICk7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ICAgICAgICAgPSBuZXcgU3RyaW5nV3JpdGVyKDIwNDgpOwotICAgIAotICAgIHdyaXRlUGFja2FnZShzdyk7Ci0gICAgd3JpdGVJbXBvcnRzKHN3KTsKLSAgICB3cml0ZUNsYXNzKHN3KTsKLSAgICBzdy5jbG9zZSgpOwotICAgIGJ5dGVbXSBieXRlcyA9IHN3LmdldEJ1ZmZlcigpLnRvU3RyaW5nKCkuZ2V0Qnl0ZXMoIHByb2plY3QuZ2V0RGVmYXVsdENoYXJzZXQoKSApOwotICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBpZiAocGFja2FnZV8gIT0gbnVsbCAmJiBwYWNrYWdlXy5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgc2IuYXBwZW5kKHBhY2thZ2VfKTsKLSAgICAgIHNiLmFwcGVuZCgiLiIpOwotICAgIH0KLSAgICBzYi5hcHBlbmQoY2xhc3NfKTsKLSAgICBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoc2IudG9TdHJpbmcoKS5yZXBsYWNlKCcuJywgJy8nKSk7Ci0gICAgc2IuYXBwZW5kKCIuamF2YSIpOwotCi0gICAgQnl0ZUFycmF5SW5wdXRTdHJlYW0gYmFpcyA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShieXRlcyk7Ci0gICAgCi0gICAgSVBhdGggbmV3RmlsZVBhdGggPSBuZXcgUGF0aChvdXRwdXRGb2xkZXJfKS5hcHBlbmQoIHNiLnRvU3RyaW5nKCkgKTsKLSAgICAKLSAgICBGaWxlUmVzb3VyY2VVdGlscy5jcmVhdGVGaWxlKCgoQmFzZUVjbGlwc2VFbnZpcm9ubWVudCkgZW52KS5nZXRSZXNvdXJjZUNvbnRleHQoKSwgbmV3RmlsZVBhdGgsIGJhaXMsIHByb2dyZXNzTW9uaXRvciwgc3RhdHVzTW9uaXRvcik7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgd3JpdGVQYWNrYWdlKFdyaXRlciB3KSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIGlmIChwYWNrYWdlXyAhPSBudWxsICYmIHBhY2thZ2VfLmxlbmd0aCgpID4gMCkKLSAgICB7Ci0gICAgICB3LndyaXRlKCJwYWNrYWdlICIpOwotICAgICAgdy53cml0ZShwYWNrYWdlXyk7Ci0gICAgICB3LndyaXRlKCI7Iik7Ci0gICAgICBuZXdMaW5lKHcpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCB3cml0ZUltcG9ydHMoV3JpdGVyIHcpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihpbXBvcnRzXy50b1N0cmluZygpLCAiOyIpOwotICAgIHdoaWxlIChzdC5oYXNNb3JlVG9rZW5zKCkpCi0gICAgewotICAgICAgdy53cml0ZSgiaW1wb3J0ICIpOwotICAgICAgdy53cml0ZShzdC5uZXh0VG9rZW4oKSk7Ci0gICAgICB3LndyaXRlKCI7Iik7Ci0gICAgICBuZXdMaW5lKHcpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCB3cml0ZUNsYXNzKFdyaXRlciB3KSB0aHJvd3MgSU9FeGNlcHRpb24sIENvcmVFeGNlcHRpb24KLSAgewotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgicHVibGljIGNsYXNzICIpOwotICAgIHcud3JpdGUoY2xhc3NfKTsKLSAgICB3LndyaXRlKCIgIik7Ci0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihzZWlzXy50b1N0cmluZygpLCAiOyIpOwotICAgIGlmIChzdC5oYXNNb3JlVG9rZW5zKCkpCi0gICAgICB3LndyaXRlKCJpbXBsZW1lbnRzICIpOwotICAgIHdoaWxlIChzdC5oYXNNb3JlVG9rZW5zKCkpCi0gICAgewotICAgICAgdy53cml0ZShzdC5uZXh0VG9rZW4oKSk7Ci0gICAgICBpZiAoc3QuaGFzTW9yZVRva2VucygpKQotICAgICAgICB3LndyaXRlKCIsICIpOwotICAgIH0KLSAgICB3LndyaXRlKCIgeyIpOwotICAgIGluY3JlbWVudEluZGVudCgpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgd3JpdGVGaWVsZHNEZWNsYXJhdGlvbnModyk7Ci0gICAgd3JpdGVDb25zdHJ1Y3Rvcih3KTsKLSAgICB3cml0ZUluaXQodyk7Ci0gICAgLyoKLSAgICAqIENhbm5vdCB1c2UgSk5ESSBsb29rdXAgZm9yIEFYSVMKLSAgICAqCi0gICAgd3JpdGVVc2VKTkRJKHcpOwotICAgICovCi0gICAgd3JpdGVHZXRTZXRFbmRwb2ludCh3KTsKLSAgICB3cml0ZVNFSUdldHRlcnModyk7Ci0gICAgd3JpdGVTRUlNZXRob2RzKHcpOwotICAgIGRlY3JlbWVudEluZGVudCgpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgifSIpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHdyaXRlRmllbGRzRGVjbGFyYXRpb25zKFdyaXRlciB3KSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIC8qCi0gICAgKiBDYW5ub3QgdXNlIEpOREkgbG9va3VwIGZvciBBWElTCi0gICAgKgotICAgIHcud3JpdGUoInByaXZhdGUgYm9vbGVhbiBfdXNlSk5ESSA9IHRydWU7Iik7Ci0gICAgbmV3TGluZSh3KTsKLSAgICAqLwotICAgIHcud3JpdGUoInByaXZhdGUgU3RyaW5nIF9lbmRwb2ludCA9IG51bGw7Iik7Ci0gICAgdXNlZE5hbWVzLmFkZCgiX2VuZHBvaW50Iik7Ci0gICAgbmV3TGluZSh3KTsKLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHNlaXNfLnRvU3RyaW5nKCksICI7Iik7Ci0gICAgd2hpbGUgKHN0Lmhhc01vcmVUb2tlbnMoKSkKLSAgICB7Ci0gICAgICB3LndyaXRlKCJwcml2YXRlICIpOwotICAgICAgU3RyaW5nIHNlaSA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgdy53cml0ZShzZWkpOwotICAgICAgdy53cml0ZSgiICIpOwotICAgICAgU3RyaW5nIHN0dWJOYW1lID0gZmlyc3RDaGFyVG9Mb3dlckNhc2UoZ2V0Q2xhc3NOYW1lKHNlaSkpOwotICAgICAgdy53cml0ZShzdHViTmFtZSk7Ci0gICAgICB1c2VkTmFtZXMuYWRkKHN0dWJOYW1lKTsKLSAgICAgIHcud3JpdGUoIiA9IG51bGw7Iik7Ci0gICAgICBuZXdMaW5lKHcpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCB3cml0ZUNvbnN0cnVjdG9yKFdyaXRlciB3KSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgicHVibGljICIpOwotICAgIHcud3JpdGUoY2xhc3NfKTsKLSAgICB3LndyaXRlKCIoKSB7Iik7Ci0gICAgaW5jcmVtZW50SW5kZW50KCk7Ci0gICAgbmV3TGluZSh3KTsKLSAgICB3LndyaXRlKCJfaW5pdCIpOwotICAgIHcud3JpdGUoY2xhc3NfKTsKLSAgICB3LndyaXRlKCIoKTsiKTsKLSAgICBkZWNyZW1lbnRJbmRlbnQoKTsKLSAgICBuZXdMaW5lKHcpOwotICAgIHcud3JpdGUoIn0iKTsKLSAgICBuZXdMaW5lKHcpOwotICAgIAotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgicHVibGljICIpOwotICAgIHcud3JpdGUoY2xhc3NfKTsKLSAgICB3LndyaXRlKCIoU3RyaW5nIGVuZHBvaW50KSB7Iik7Ci0gICAgaW5jcmVtZW50SW5kZW50KCk7Ci0gICAgbmV3TGluZSh3KTsKLSAgICB3LndyaXRlKCJfZW5kcG9pbnQgPSBlbmRwb2ludDsiKTsKLSAgICBuZXdMaW5lKHcpOwotICAgIHcud3JpdGUoIl9pbml0Iik7Ci0gICAgdy53cml0ZShjbGFzc18pOwotICAgIHcud3JpdGUoIigpOyIpOwotICAgIGRlY3JlbWVudEluZGVudCgpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgifSIpOwotICAgIG5ld0xpbmUodyk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgd3JpdGVJbml0KFdyaXRlciB3KSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgicHJpdmF0ZSB2b2lkIF9pbml0Iik7Ci0gICAgdy53cml0ZShjbGFzc18pOwotICAgIHcud3JpdGUoIigpIHsiKTsKLSAgICBpbmNyZW1lbnRJbmRlbnQoKTsKLSAgICBuZXdMaW5lKHcpOwotICAgIHcud3JpdGUoInRyeSB7Iik7Ci0gICAgaW5jcmVtZW50SW5kZW50KCk7Ci0gICAgbmV3TGluZSh3KTsKLSAgICAvKgotICAgICogQ2Fubm90IHVzZSBKTkRJIGxvb2t1cCBmb3IgQVhJUwotICAgICoKLSAgICB3LndyaXRlKCJpZiAoX3VzZUpOREkpIHsiKTsKLSAgICBpbmNyZW1lbnRJbmRlbnQoKTsKLSAgICBuZXdMaW5lKHcpOwotICAgICovCi0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihzZWlzXy50b1N0cmluZygpLCAiOyIpOwotICAgIFN0cmluZ1Rva2VuaXplciBzZXJ2aWNlVG9rZW5zID0gbmV3IFN0cmluZ1Rva2VuaXplcihzZXJ2aWNlc18udG9TdHJpbmcoKSwgIjsiKTsKLSAgICAvL1N0cmluZ1Rva2VuaXplciBqbmRpTmFtZVRva2VucyA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoam5kaU5hbWVzXy50b1N0cmluZygpLCAiOyIpOwotICAgIFN0cmluZ1Rva2VuaXplciBwb3J0VG9rZW5zID0gbmV3IFN0cmluZ1Rva2VuaXplcihwb3J0c18udG9TdHJpbmcoKSwgIjsiKTsKLSAgICAvKgotICAgIGlmIChzdC5oYXNNb3JlVG9rZW5zKCkpCi0gICAgewotICAgICAgdy53cml0ZSgiamF2YXgubmFtaW5nLkluaXRpYWxDb250ZXh0IGN0eCA9IG5ldyBqYXZheC5uYW1pbmcuSW5pdGlhbENvbnRleHQoKTsiKTsKLSAgICAgIG5ld0xpbmUodyk7Ci0gICAgfQotICAgIHdoaWxlIChzdC5oYXNNb3JlVG9rZW5zKCkpCi0gICAgewotICAgICAgdy53cml0ZShmaXJzdENoYXJUb0xvd2VyQ2FzZShnZXRDbGFzc05hbWUoc3QubmV4dFRva2VuKCkpKSk7Ci0gICAgICB3LndyaXRlKCIgPSAoKCIpOwotICAgICAgdy53cml0ZShzZXJ2aWNlVG9rZW5zLm5leHRUb2tlbigpKTsKLSAgICAgIHcud3JpdGUoIiljdHgubG9va3VwKFwiamF2YTpjb21wL2Vudi9zZXJ2aWNlLyIpOwotICAgICAgdy53cml0ZShqbmRpTmFtZVRva2Vucy5uZXh0VG9rZW4oKSk7Ci0gICAgICB3LndyaXRlKCJcIikpLmdldCIpOwotICAgICAgdy53cml0ZShtYW5nbGVDbGFzc05hbWUocG9ydFRva2Vucy5uZXh0VG9rZW4oKSkpOwotICAgICAgdy53cml0ZSgiKCk7Iik7Ci0gICAgICBuZXdMaW5lKHcpOwotICAgIH0KLSAgICBkZWNyZW1lbnRJbmRlbnQoKTsKLSAgICBuZXdMaW5lKHcpOwotICAgIHcud3JpdGUoIn0iKTsKLSAgICBuZXdMaW5lKHcpOwotICAgIHcud3JpdGUoImVsc2UgeyIpOwotICAgIGluY3JlbWVudEluZGVudCgpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHNlaXNfLnRvU3RyaW5nKCksICI7Iik7Ci0gICAgc2VydmljZVRva2VucyA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc2VydmljZXNfLnRvU3RyaW5nKCksICI7Iik7Ci0gICAgcG9ydFRva2VucyA9IG5ldyBTdHJpbmdUb2tlbml6ZXIocG9ydHNfLnRvU3RyaW5nKCksICI7Iik7Ci0gICAgKi8KLSAgICB3aGlsZSAoc3QuaGFzTW9yZVRva2VucygpKQotICAgIHsKLSAgICAgIFN0cmluZyBzZWlOYW1lID0gZmlyc3RDaGFyVG9Mb3dlckNhc2UoZ2V0Q2xhc3NOYW1lKHN0Lm5leHRUb2tlbigpKSk7Ci0gICAgICB3LndyaXRlKHNlaU5hbWUpOwotICAgICAgdy53cml0ZSgiID0gKG5ldyAiKTsKLSAgICAgIHcud3JpdGUoc2VydmljZVRva2Vucy5uZXh0VG9rZW4oKSk7Ci0gICAgICB3LndyaXRlKCJMb2NhdG9yKCkpLmdldCIpOwotICAgICAgdy53cml0ZShwb3J0VG9rZW5zLm5leHRUb2tlbigpKTsKLSAgICAgIHcud3JpdGUoIigpOyIpOwotICAgICAgbmV3TGluZSh3KTsKLSAgICAgIHcud3JpdGUoImlmICgiKTsKLSAgICAgIHcud3JpdGUoc2VpTmFtZSk7Ci0gICAgICB3LndyaXRlKCIgIT0gbnVsbCkgeyIpOwotICAgICAgaW5jcmVtZW50SW5kZW50KCk7Ci0gICAgICBuZXdMaW5lKHcpOwotICAgICAgdy53cml0ZSgiaWYgKF9lbmRwb2ludCAhPSBudWxsKSIpOwotICAgICAgaW5jcmVtZW50SW5kZW50KCk7Ci0gICAgICBuZXdMaW5lKHcpOwotICAgICAgdy53cml0ZSgiKChqYXZheC54bWwucnBjLlN0dWIpIik7Ci0gICAgICB3LndyaXRlKHNlaU5hbWUpOwotICAgICAgdy53cml0ZSgiKS5fc2V0UHJvcGVydHkoXCJqYXZheC54bWwucnBjLnNlcnZpY2UuZW5kcG9pbnQuYWRkcmVzc1wiLCBfZW5kcG9pbnQpOyIpOwotICAgICAgZGVjcmVtZW50SW5kZW50KCk7Ci0gICAgICBuZXdMaW5lKHcpOwotICAgICAgdy53cml0ZSgiZWxzZSIpOwotICAgICAgaW5jcmVtZW50SW5kZW50KCk7Ci0gICAgICBuZXdMaW5lKHcpOwotICAgICAgdy53cml0ZSgiX2VuZHBvaW50ID0gKFN0cmluZykoKGphdmF4LnhtbC5ycGMuU3R1YikiKTsKLSAgICAgIHcud3JpdGUoc2VpTmFtZSk7Ci0gICAgICB3LndyaXRlKCIpLl9nZXRQcm9wZXJ0eShcImphdmF4LnhtbC5ycGMuc2VydmljZS5lbmRwb2ludC5hZGRyZXNzXCIpOyIpOwotICAgICAgZGVjcmVtZW50SW5kZW50KCk7Ci0gICAgICBkZWNyZW1lbnRJbmRlbnQoKTsKLSAgICAgIG5ld0xpbmUodyk7Ci0gICAgICB3LndyaXRlKCJ9Iik7Ci0gICAgICBuZXdMaW5lKHcpOwotICAgIH0KLSAgICAvKgotICAgIGRlY3JlbWVudEluZGVudCgpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgifSIpOwotICAgICovCi0gICAgZGVjcmVtZW50SW5kZW50KCk7Ci0gICAgbmV3TGluZSh3KTsKLSAgICB3LndyaXRlKCJ9Iik7Ci0gICAgbmV3TGluZSh3KTsKLSAgICAvKgotICAgIHcud3JpdGUoImNhdGNoIChqYXZheC5uYW1pbmcuTmFtaW5nRXhjZXB0aW9uIG5hbWluZ0V4Y2VwdGlvbikge30iKTsKLSAgICBuZXdMaW5lKHcpOwotICAgICovCi0gICAgdy53cml0ZSgiY2F0Y2ggKGphdmF4LnhtbC5ycGMuU2VydmljZUV4Y2VwdGlvbiBzZXJ2aWNlRXhjZXB0aW9uKSB7fSIpOwotICAgIGRlY3JlbWVudEluZGVudCgpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgifSIpOwotICAgIG5ld0xpbmUodyk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgd3JpdGVTZXRQcm9wZXJ0eUVuZHBvaW50KFdyaXRlciB3KSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc2Vpc18udG9TdHJpbmcoKSwgIjsiKTsKLSAgICB3aGlsZSAoc3QuaGFzTW9yZVRva2VucygpKQotICAgIHsKLSAgICAgIFN0cmluZyBzZWlOYW1lID0gZmlyc3RDaGFyVG9Mb3dlckNhc2UoZ2V0Q2xhc3NOYW1lKHN0Lm5leHRUb2tlbigpKSk7Ci0gICAgICB3LndyaXRlKCJpZiAoIik7Ci0gICAgICB3LndyaXRlKHNlaU5hbWUpOwotICAgICAgdy53cml0ZSgiICE9IG51bGwpIik7Ci0gICAgICBpbmNyZW1lbnRJbmRlbnQoKTsKLSAgICAgIG5ld0xpbmUodyk7Ci0gICAgICB3LndyaXRlKCIoKGphdmF4LnhtbC5ycGMuU3R1YikiKTsKLSAgICAgIHcud3JpdGUoc2VpTmFtZSk7Ci0gICAgICB3LndyaXRlKCIpLl9zZXRQcm9wZXJ0eShcImphdmF4LnhtbC5ycGMuc2VydmljZS5lbmRwb2ludC5hZGRyZXNzXCIsIF9lbmRwb2ludCk7Iik7Ci0gICAgICBkZWNyZW1lbnRJbmRlbnQoKTsKLSAgICAgIG5ld0xpbmUodyk7Ci0gICAgfQotICB9Ci0KLSAKLSAgcHJpdmF0ZSB2b2lkIHdyaXRlU0VJR2V0dGVycyhXcml0ZXIgdykgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHNlaXNfLnRvU3RyaW5nKCksICI7Iik7Ci0gICAgd2hpbGUgKHN0Lmhhc01vcmVUb2tlbnMoKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgc2VpID0gc3QubmV4dFRva2VuKCk7Ci0gICAgICBTdHJpbmcgc2VpQ2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKHNlaSk7Ci0gICAgICBTdHJpbmcgc2VpRmllbGROYW1lID0gZmlyc3RDaGFyVG9Mb3dlckNhc2Uoc2VpQ2xhc3NOYW1lKTsKLSAgICAgIG5ld0xpbmUodyk7Ci0gICAgICB3LndyaXRlKCJwdWJsaWMgIik7Ci0gICAgICB3LndyaXRlKHNlaSk7Ci0gICAgICB3LndyaXRlKCIgZ2V0Iik7Ci0gICAgICB3LndyaXRlKHNlaUNsYXNzTmFtZSk7Ci0gICAgICB3LndyaXRlKCIoKSB7Iik7Ci0gICAgICBpbmNyZW1lbnRJbmRlbnQoKTsKLSAgICAgIG5ld0xpbmUodyk7Ci0gICAgICB3LndyaXRlKCJpZiAoIik7Ci0gICAgICB3LndyaXRlKHNlaUZpZWxkTmFtZSk7Ci0gICAgICB3LndyaXRlKCIgPT0gbnVsbCkiKTsKLSAgICAgIGluY3JlbWVudEluZGVudCgpOwotICAgICAgbmV3TGluZSh3KTsKLSAgICAgIHcud3JpdGUoIl9pbml0Iik7Ci0gICAgICB3LndyaXRlKGNsYXNzXyk7Ci0gICAgICB3LndyaXRlKCIoKTsiKTsKLSAgICAgIGRlY3JlbWVudEluZGVudCgpOwotICAgICAgbmV3TGluZSh3KTsKLSAgICAgIHcud3JpdGUoInJldHVybiAiKTsKLSAgICAgIHcud3JpdGUoc2VpRmllbGROYW1lKTsKLSAgICAgIHcud3JpdGUoIjsiKTsKLSAgICAgIGRlY3JlbWVudEluZGVudCgpOwotICAgICAgbmV3TGluZSh3KTsKLSAgICAgIHcud3JpdGUoIn0iKTsKLSAgICAgIG5ld0xpbmUodyk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHdyaXRlU0VJTWV0aG9kcyhXcml0ZXIgdykgdGhyb3dzIElPRXhjZXB0aW9uLCBDb3JlRXhjZXB0aW9uCi0gIHsKLSAgICBuZXdMaW5lKHcpOwotICAgIC8vV2ViU2VydmljZUVsZW1lbnQgd3NlID0gV2ViU2VydmljZUVsZW1lbnQuZ2V0V2ViU2VydmljZUVsZW1lbnQobW9kZWxfKTsKLSAgICBpZiAoY2xpZW50UHJvamVjdF8gPT0gbnVsbCkgcmV0dXJuOy8vd3NlLmdldFByb3h5UHJvamVjdCgpOwotICAgIGJvb2xlYW4gYnVpbGRQcm9qZWN0Q2FsbGVkID0gZmFsc2U7Ci0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihzZWlzXy50b1N0cmluZygpLCAiOyIpOwotICAgIHdoaWxlIChzdC5oYXNNb3JlVG9rZW5zKCkpCi0gICAgewotICAgICAgU3RyaW5nIHNlaSA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgSmF2YUNsYXNzIGphdmFDbGFzcyA9IEphdmFNT0ZVdGlscy5nZXRKYXZhQ2xhc3MoZ2V0UGFja2FnZU5hbWUoc2VpKSwgZ2V0Q2xhc3NOYW1lKHNlaSksIGNsaWVudFByb2plY3RfKTsKLSAgICAgIGlmIChqYXZhQ2xhc3MgPT0gbnVsbCkgeyAvLyBidWlsZCB0aGUgcHJvamVjdCBpZiBidWlsZCBwcm9qZWN0IGhhcyBub3QgYmVlbiBjYWxsZWQgeWV0IGFuZCB0cnkgYWdhaW4KLSAgICAJICBpZiAoIWJ1aWxkUHJvamVjdENhbGxlZCkgewotICAgICAgCQljbGllbnRQcm9qZWN0Xy5idWlsZChJbmNyZW1lbnRhbFByb2plY3RCdWlsZGVyLklOQ1JFTUVOVEFMX0JVSUxELCBuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLSAgICAgIAkJYnVpbGRQcm9qZWN0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgIAkJamF2YUNsYXNzID0gSmF2YU1PRlV0aWxzLmdldEphdmFDbGFzcyhnZXRQYWNrYWdlTmFtZShzZWkpLCBnZXRDbGFzc05hbWUoc2VpKSwgY2xpZW50UHJvamVjdF8pOwotICAgICAgCX0KLSAgICAgIH0KLSAgICAgIGlmIChqYXZhQ2xhc3MgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgTGlzdCBtZXRob2RzID0gamF2YUNsYXNzLmdldE1ldGhvZHMoKTsKLSAgICAgICAgaWYgKG1ldGhvZHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIAlpZiAoIWJ1aWxkUHJvamVjdENhbGxlZCkgeyAvLyBidWlsZCB0aGUgcHJvamVjdCBpZiBidWlsZCBwcm9qZWN0IGhhcyBub3QgYmVlbiBjYWxsZWQgeWV0IGFuZCB0cnkgYWdhaW4KLSAgICAgICAgCQljbGllbnRQcm9qZWN0Xy5idWlsZChJbmNyZW1lbnRhbFByb2plY3RCdWlsZGVyLklOQ1JFTUVOVEFMX0JVSUxELCBuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLSAgICAgICAgCQlidWlsZFByb2plY3RDYWxsZWQgPSB0cnVlOwotICAgICAgICAJCWphdmFDbGFzcyA9IEphdmFNT0ZVdGlscy5nZXRKYXZhQ2xhc3MoZ2V0UGFja2FnZU5hbWUoc2VpKSwgZ2V0Q2xhc3NOYW1lKHNlaSksIGNsaWVudFByb2plY3RfKTsKLSAgICAgICAgCQlpZiAoamF2YUNsYXNzICE9IG51bGwpCi0gICAgICAgIAkJCW1ldGhvZHMgPSBqYXZhQ2xhc3MuZ2V0TWV0aG9kcygpOwotICAgICAgICAJfSAgICAJCi0gICAgICAgIH0KLSAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG1ldGhvZHMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgICAgewotICAgICAgICAgIE1ldGhvZCBtZXRob2QgPSAoTWV0aG9kKWl0Lm5leHQoKTsKLSAgICAgICAgICBpZiAoIW1ldGhvZC5pc0NvbnN0cnVjdG9yKCkgJiYgIW1ldGhvZC5pc05hdGl2ZSgpICYmIG1ldGhvZC5nZXRKYXZhVmlzaWJpbGl0eSgpLmdldFZhbHVlKCkgPT0gSmF2YVZpc2liaWxpdHlLaW5kLlBVQkxJQykKLSAgICAgICAgICAgIHdyaXRlU0VJTWV0aG9kcyh3LCBqYXZhQ2xhc3MsIG1ldGhvZCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgd3JpdGVTRUlNZXRob2RzKFdyaXRlciB3LCBKYXZhQ2xhc3MgamF2YUNsYXNzLCBNZXRob2QgbWV0aG9kKSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIHcud3JpdGUoInB1YmxpYyAiKTsKLSAgICAvLyBpc1ZvaWQKLSAgICBpZiAobWV0aG9kLmlzVm9pZCgpKQotICAgICAgdy53cml0ZSgidm9pZCAiKTsKLSAgICBlbHNlCi0gICAgewotICAgICAgdy53cml0ZShnZXRGdWxseVF1YWxpZmllZE5hbWUobWV0aG9kLmdldFJldHVyblR5cGUoKSkpOwotICAgICAgdy53cml0ZSgiICIpOwotICAgIH0KLSAgICAvLyBtZXRob2QgbmFtZQotICAgIHcud3JpdGUobWV0aG9kLmdldE5hbWUoKSk7Ci0gICAgdy53cml0ZSgiKCIpOwotICAgIC8vIGlucHV0IHBhcmFtZXRlcnMKLSAgICBKYXZhUGFyYW1ldGVyW10gaW5wdXRQYXJhbXMgPSBtZXRob2QubGlzdFBhcmFtZXRlcnNXaXRob3V0UmV0dXJuKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnB1dFBhcmFtcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoaSA+IDApCi0gICAgICAgIHcud3JpdGUoIiwgIik7Ci0gICAgICBKYXZhSGVscGVycyBqYXZhSGVscGVycyA9IGlucHV0UGFyYW1zW2ldLmdldEphdmFUeXBlKCk7Ci0gICAgICB3LndyaXRlKGdldEZ1bGx5UXVhbGlmaWVkTmFtZShqYXZhSGVscGVycykpOwotICAgICAgdy53cml0ZSgiICIpOwotICAgICAgU3RyaW5nIHBhcmFtTmFtZSA9IGdldENsYXNzTmFtZShpbnB1dFBhcmFtc1tpXS5nZXRRdWFsaWZpZWROYW1lKCkpOwotICAgICAgdy53cml0ZShnZXRVbnVzZWROYW1lKHBhcmFtTmFtZSkpOwotICAgIH0KLSAgICB3LndyaXRlKCIpIik7Ci0gICAgLy8gZXhjZXB0aW9ucwotICAgIExpc3QgZXhjZXB0aW9ucyA9IG1ldGhvZC5nZXRKYXZhRXhjZXB0aW9ucygpOwotICAgIGlmICghZXhjZXB0aW9ucy5pc0VtcHR5KCkpCi0gICAgICB3LndyaXRlKCIgdGhyb3dzICIpOwotICAgIGZvciAoSXRlcmF0b3IgaXQgPSBleGNlcHRpb25zLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgewotICAgICAgSmF2YUNsYXNzIGV4Y2VwdGlvbiA9IChKYXZhQ2xhc3MpaXQubmV4dCgpOwotICAgICAgdy53cml0ZShleGNlcHRpb24uZ2V0UXVhbGlmaWVkTmFtZUZvclJlZmxlY3Rpb24oKSk7Ci0gICAgICBpZiAoaXQuaGFzTmV4dCgpKQotICAgICAgICB3LndyaXRlKCIsICIpOwotICAgIH0KLSAgICAvLyBtZXRob2QgYm9keQotICAgIHcud3JpdGUoInsiKTsKLSAgICBpbmNyZW1lbnRJbmRlbnQoKTsKLSAgICBuZXdMaW5lKHcpOwotICAgIFN0cmluZyBzdHViTmFtZSA9IGZpcnN0Q2hhclRvTG93ZXJDYXNlKGphdmFDbGFzcy5nZXROYW1lKCkpOwotICAgIHcud3JpdGUoImlmICgiKTsKLSAgICB3LndyaXRlKHN0dWJOYW1lKTsKLSAgICB3LndyaXRlKCIgPT0gbnVsbCkiKTsKLSAgICBpbmNyZW1lbnRJbmRlbnQoKTsKLSAgICBuZXdMaW5lKHcpOwotICAgIHcud3JpdGUoIl9pbml0Iik7Ci0gICAgdy53cml0ZShjbGFzc18pOwotICAgIHcud3JpdGUoIigpOyIpOwotICAgIGRlY3JlbWVudEluZGVudCgpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgaWYgKCFtZXRob2QuaXNWb2lkKCkpCi0gICAgICB3LndyaXRlKCJyZXR1cm4gIik7Ci0gICAgdy53cml0ZShzdHViTmFtZSk7Ci0gICAgdy53cml0ZSgiLiIpOwotICAgIHcud3JpdGUobWV0aG9kLmdldE5hbWUoKSk7Ci0gICAgdy53cml0ZSgiKCIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5wdXRQYXJhbXMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgaWYgKGkgPiAwKQotICAgICAgICB3LndyaXRlKCIsICIpOwotICAgICAgU3RyaW5nIHBhcmFtTmFtZSA9IGdldENsYXNzTmFtZShpbnB1dFBhcmFtc1tpXS5nZXRRdWFsaWZpZWROYW1lKCkpOwotICAgICAgdy53cml0ZShnZXRVbnVzZWROYW1lKHBhcmFtTmFtZSkpOwotICAgIH0KLSAgICB3LndyaXRlKCIpOyIpOwotICAgIGRlY3JlbWVudEluZGVudCgpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgifSIpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgbmV3TGluZSh3KTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCB3cml0ZUdldFNldEVuZHBvaW50KFdyaXRlciB3KSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgicHVibGljIFN0cmluZyBnZXRFbmRwb2ludCgpIHsiKTsKLSAgICBpbmNyZW1lbnRJbmRlbnQoKTsKLSAgICBuZXdMaW5lKHcpOwotICAgIHcud3JpdGUoInJldHVybiBfZW5kcG9pbnQ7Iik7Ci0gICAgZGVjcmVtZW50SW5kZW50KCk7Ci0gICAgbmV3TGluZSh3KTsKLSAgICB3LndyaXRlKCJ9Iik7Ci0gICAgbmV3TGluZSh3KTsKLSAgICBuZXdMaW5lKHcpOwotICAgIHcud3JpdGUoInB1YmxpYyB2b2lkIHNldEVuZHBvaW50KFN0cmluZyBlbmRwb2ludCkgeyIpOwotICAgIGluY3JlbWVudEluZGVudCgpOwotICAgIG5ld0xpbmUodyk7Ci0gICAgdy53cml0ZSgiX2VuZHBvaW50ID0gZW5kcG9pbnQ7Iik7Ci0gICAgbmV3TGluZSh3KTsKLSAgICB3cml0ZVNldFByb3BlcnR5RW5kcG9pbnQodyk7Ci0gICAgZGVjcmVtZW50SW5kZW50KCk7Ci0gICAgbmV3TGluZSh3KTsKLSAgICB3LndyaXRlKCJ9Iik7Ci0gICAgbmV3TGluZSh3KTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBpbmNyZW1lbnRJbmRlbnQoKQotICB7Ci0gICAgaW5kZW50Q291bnQrKzsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBkZWNyZW1lbnRJbmRlbnQoKQotICB7Ci0gICAgaW5kZW50Q291bnQtLTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBpbmRlbnQoV3JpdGVyIHcpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRlbnRDb3VudDsgaSsrKQotICAgICAgdy53cml0ZSgiICAiKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBuZXdMaW5lKFdyaXRlciB3KSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIHcud3JpdGUoTkVXX0xJTkUpOwotICAgIGluZGVudCh3KTsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0VW51c2VkTmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIGlmICh1c2VkTmFtZXMuY29udGFpbnMobmFtZSkpCi0gICAgewotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG5ld05hbWUgPSAobmV3IFN0cmluZ0J1ZmZlcihuYW1lKSkuYXBwZW5kKFN0cmluZy52YWx1ZU9mKGkpKS50b1N0cmluZygpOwotICAgICAgICBpZiAoIXVzZWROYW1lcy5jb250YWlucyhuZXdOYW1lKSkKLSAgICAgICAgICByZXR1cm4gbmV3TmFtZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5hbWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3Rhc2svVmFsaWRhdGVXU0RMQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdGFzay9WYWxpZGF0ZVdTRExDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxY2I5OTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdGFzay9WYWxpZGF0ZVdTRExDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi0KLQotcHVibGljIGNsYXNzIFZhbGlkYXRlV1NETENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyOwotICBwcml2YXRlIFN0cmluZyB3c2RsVVJJOwotCi0gIHB1YmxpYyBWYWxpZGF0ZVdTRExDb21tYW5kKCkKLSAgewotICB9Ci0KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkgCi0JewotCQlJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCQlpZiAod3NkbFVSSSAhPSBudWxsICYmIHdzZGxVUkkubGVuZ3RoKCkgPiAwKQotCQl7Ci0JCQlEZWZpbml0aW9uIGRlZmluaXRpb24gPSB3ZWJTZXJ2aWNlc1BhcnNlci5nZXRXU0RMRGVmaW5pdGlvbih3c2RsVVJJKTsKLQkJCWlmIChkZWZpbml0aW9uICE9IG51bGwpCi0JCQl7Ci0JCQkJaW50IG51bVNlcnZpY2VzID0gZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpLnNpemUoKTsKLQkJCQlpZiAobnVtU2VydmljZXMgPCAxKQotCQkJCXsKLQkJCQkJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9XU0RMX0hBU19OT19TRVJWSUNFX0VMRU1FTlQsIG5ldyBPYmplY3RbXSB7d3NkbFVSSX0pLCBudWxsKTsKLQkJCQkJZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQkJCXJldHVybiBzdGF0dXM7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSB3c2RsVVJJIFRoZSB3c2RsVVJJIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdzZGxVUkkoU3RyaW5nIHdzZGxVUkkpCi0gIHsKLSAgICB0aGlzLndzZGxVUkkgPSB3c2RsVVJJOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSB3ZWJTZXJ2aWNlc1BhcnNlciBUaGUgd2ViU2VydmljZXNQYXJzZXIgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXIpCi0gIHsKLSAgICB0aGlzLndlYlNlcnZpY2VzUGFyc2VyID0gd2ViU2VydmljZXNQYXJzZXI7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdXRpbC9DbGFzc3BhdGhVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdXRpbC9DbGFzc3BhdGhVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzk0Yzc4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3V0aWwvQ2xhc3NwYXRoVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMDMgICAxMjY0MTgga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS51dGlsOwotCi0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklDb250YWluZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNsYXNzcGF0aEVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklKYXZhUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JUGFja2FnZUZyYWdtZW50Um9vdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5KYXZhQ29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5KYXZhTW9kZWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuaW50ZXJuYWwucHJvamVjdC5KMkVFUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLkNvbXBvbmVudENvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLnJlc291cmNlcy5JVmlydHVhbENvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxSZXNvdXJjZTsKLQotcHVibGljIGNsYXNzIENsYXNzcGF0aFV0aWxzIHsKLQotCS8vCUNvcHlyaWdodAotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAzLiI7IC8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgc3RhdGljIENsYXNzcGF0aFV0aWxzIGluc3RhbmNlXzsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgc3RhdGljIFN0cmluZyBET1RfSkFSID0gIi5qYXIiOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIEpBUiA9ICJqYXIiOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIFdFQklORl9MSUIgPSAiL1dFQi1JTkYvbGliIjsgLy8kTk9OLU5MUy0xJAotCi0JcHJpdmF0ZSBDbGFzc3BhdGhVdGlscygpIHsKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIENsYXNzcGF0aFV0aWxzIGdldEluc3RhbmNlKCkgewotCQlpZiAoaW5zdGFuY2VfID09IG51bGwpCi0JCQlpbnN0YW5jZV8gPSBuZXcgQ2xhc3NwYXRoVXRpbHMoKTsKLQkJcmV0dXJuIGluc3RhbmNlXzsKLQl9Ci0JCi0JcHVibGljIFN0cmluZyBnZXRDbGFzc3BhdGhTdHJpbmcoSVByb2plY3QgcHJvamVjdCkgewotCQlTdHJpbmdCdWZmZXIgY2xhc3NwYXRoID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQlTdHJpbmdbXSBjbGFzc3BhdGhFbnRyaWVzID0gZ2V0Q2xhc3NwYXRoKHByb2plY3QsIGZhbHNlKTsKLQotCQlWZWN0b3IgY2xhc3NwYXRoVmVjdG9yID0gbmV3IFZlY3RvcigpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IGNsYXNzcGF0aEVudHJpZXMubGVuZ3RoOyBpKyspIHsKLQkJCWlmICghY2xhc3NwYXRoVmVjdG9yLmNvbnRhaW5zKGNsYXNzcGF0aEVudHJpZXNbaV0pKSB7Ci0JCQkJY2xhc3NwYXRoVmVjdG9yLmFkZChjbGFzc3BhdGhFbnRyaWVzW2ldKTsKLQkJCQljbGFzc3BhdGguYXBwZW5kKGNsYXNzcGF0aEVudHJpZXNbaV0pOwotCQkJCWNsYXNzcGF0aC5hcHBlbmQoIjsiKTsgLy8kTk9OLU5MUy0xJAotCQkJfQotCQl9Ci0JCXJldHVybiBjbGFzc3BhdGgudG9TdHJpbmcoKTsKLQl9Ci0KLQkJCi0JcHJpdmF0ZSBTdHJpbmdbXSBnZXRDbGFzc3BhdGgoSVByb2plY3QgcHJvamVjdCwgYm9vbGVhbiBpc0RlcGVuZGVudCkgewotCQlTdHJpbmdbXSBtb2R1bGVDbGFzc3BhdGggPSBuZXcgU3RyaW5nWzBdOwotCQlBcnJheUxpc3QgcHJvamVjdENsYXNzcGF0aCA9IG5ldyBBcnJheUxpc3QoKTsKLQkJYm9vbGVhbiBuZWVkSmF2YUNsYXNzcGF0aCA9IGZhbHNlOwotCQkKLQkJSVZpcnR1YWxDb21wb25lbnQgY29tcCA9IENvbXBvbmVudENvcmUuY3JlYXRlQ29tcG9uZW50KHByb2plY3QpOwotCQlpZiAoY29tcCAhPSBudWxsKSB7Ci0JCQkvLyBnZXQgdGhlIG1vZHVsZSdzIGNsYXNzcGF0aAotCQkJCi0JCQlpZiAoSjJFRVV0aWxzLmlzRUFSQ29tcG9uZW50KGNvbXApKSB7Ci0JCQkJbW9kdWxlQ2xhc3NwYXRoID0gZ2V0Q2xhc3NwYXRoRm9yRUFSUHJvamVjdChwcm9qZWN0LCBjb21wLmdldE5hbWUoKSk7Ci0vLwkJCQkgYWRkIG1vZHVsZSBjbGFzc3BhdGggdG8gcHJvamVjdCBjbGFzc3BhdGgKLQkJCQlmb3IgKGludCBqID0gMDsgaiA8IG1vZHVsZUNsYXNzcGF0aC5sZW5ndGg7IGorKykgewotCQkJCQlwcm9qZWN0Q2xhc3NwYXRoLmFkZChtb2R1bGVDbGFzc3BhdGhbal0pOwotCQkJCX0KLQkJCX0gZWxzZSBpZiAoSjJFRVV0aWxzLmlzV2ViQ29tcG9uZW50KGNvbXApIHx8IEoyRUVVdGlscy5pc0phdmFDb21wb25lbnQoY29tcCkpIHsKLQkJCQluZWVkSmF2YUNsYXNzcGF0aCA9IHRydWU7Ci0JCQkJCi0JCQkJSUNvbnRhaW5lciBvdXRwdXRDb250YWluZXIgPSBudWxsOwotCQkJCUlSZXNvdXJjZSBmcmFnbWVudFJvb3QgPSBudWxsOwotCQkJCUlQYWNrYWdlRnJhZ21lbnRSb290W10gcGtnRnJhZ21lbnRSb290ID0gUmVzb3VyY2VVdGlscy5nZXRKYXZhUGFja2FnZUZyYWdtZW50Um9vdHMocHJvamVjdCk7Ci0JCQkJQXJyYXlMaXN0IHdlYk1vZHVsZUNsYXNzcGF0aCA9IG5ldyBBcnJheUxpc3QoKTsKLQkJCQl0cnkgewotCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHBrZ0ZyYWdtZW50Um9vdC5sZW5ndGg7IGkrKykgewotCQkJCQkJZnJhZ21lbnRSb290ID0gcGtnRnJhZ21lbnRSb290W2ldLmdldENvcnJlc3BvbmRpbmdSZXNvdXJjZSgpOwotCQkJCQkJaWYgKGZyYWdtZW50Um9vdCAhPSBudWxsCi0JCQkJCQkJCSYmIChmcmFnbWVudFJvb3QuZ2V0UHJvamVjdCgpLmVxdWFscyhwcm9qZWN0KSkKLQkJCQkJCQkJJiYgKGZyYWdtZW50Um9vdC5nZXRUeXBlKCkgIT0gSVJlc291cmNlLkZJTEUpKSB7CQkJCQkKLQkJCQkJCQlvdXRwdXRDb250YWluZXIgPSBKMkVFUHJvamVjdFV0aWxpdGllcy5nZXRPdXRwdXRDb250YWluZXIocHJvamVjdCwgcGtnRnJhZ21lbnRSb290W2ldKTsKLQkJCQkJCQlpZiAob3V0cHV0Q29udGFpbmVyICE9IG51bGwpIHsgCi0JCQkJCQkJCXdlYk1vZHVsZUNsYXNzcGF0aC5hZGQob3V0cHV0Q29udGFpbmVyLmdldExvY2F0aW9uKCkudG9PU1N0cmluZygpKTsKLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9IGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkgewotCQkJCX0KLQkJCQkKLQkJCQkvLyBhZGQgV2ViIG1vZHVsZSBjbGFzc3BhdGggdG8gcHJvamVjdCBjbGFzc3BhdGgKLQkJCQlJdGVyYXRvciBpdGVyID0gd2ViTW9kdWxlQ2xhc3NwYXRoLml0ZXJhdG9yKCk7Ci0JCQkJd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7Ci0JCQkJCXByb2plY3RDbGFzc3BhdGguYWRkKChTdHJpbmcpIGl0ZXIubmV4dCgpKTsKLQkJCQl9CQkKLQkJCX0KLQkJCQotCQkJaWYgKCFpc0RlcGVuZGVudCkgewotCQkJCWlmIChKMkVFVXRpbHMuaXNXZWJDb21wb25lbnQoY29tcCkpIHsKLQkJCQkJbmVlZEphdmFDbGFzc3BhdGggPSB0cnVlOwotCQkJCQltb2R1bGVDbGFzc3BhdGggPSBnZXRXRUJJTkZMaWIocHJvamVjdCk7Ci0JCQkJCWZvciAoaW50IGogPSAwOyBqIDwgbW9kdWxlQ2xhc3NwYXRoLmxlbmd0aDsgaisrKSB7Ci0JCQkJCQlwcm9qZWN0Q2xhc3NwYXRoLmFkZChtb2R1bGVDbGFzc3BhdGhbal0pOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQkJCi0JCX0gZWxzZSB7Ci0JCQluZWVkSmF2YUNsYXNzcGF0aCA9IHRydWU7Ci0JCX0KLQkJCi0JCS8vIElmIHRoZXJlIGFyZSBXZWIgb3IgSmF2YSBtb2R1bGUgaW4gdGhlIHByb2plY3QsIGdldCB0aGUgcHJvamVjdCdzIEphdmEgY2xhc3NwYXRoCi0JCWlmIChuZWVkSmF2YUNsYXNzcGF0aCkgewotCQkJU3RyaW5nW10gamF2YUNsYXNzcGF0aDsKLQkJCXRyeSB7Ci0JCQkJSUphdmFQcm9qZWN0IGphdmFQcm9qID0gKElKYXZhUHJvamVjdCkgcHJvamVjdC5nZXROYXR1cmUoSmF2YUNvcmUuTkFUVVJFX0lEKTsKLQkJCQlpZiAoamF2YVByb2ogIT0gbnVsbCkgewotCQkJCQlqYXZhQ2xhc3NwYXRoID0gZ2V0Q2xhc3NwYXRoRm9ySmF2YVByb2plY3QoamF2YVByb2opOwotCQkJCQlmb3IgKGludCBqID0gMDsgaiA8IGphdmFDbGFzc3BhdGgubGVuZ3RoOyBqKyspIHsKLQkJCQkJCXByb2plY3RDbGFzc3BhdGguYWRkKGphdmFDbGFzc3BhdGhbal0pOwotCQkJCQl9Ci0JCQkJfQotCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJLy8gbm90IGFibGUgdG8gZ2V0IEphdmEgY2xhc3NwYXRoLCBqdXN0IGlnbm9yZQotCQkJfQkKLQkJfQotCQkKLQkJcmV0dXJuIChTdHJpbmdbXSkgcHJvamVjdENsYXNzcGF0aC50b0FycmF5KG5ldyBTdHJpbmdbcHJvamVjdENsYXNzcGF0aC5zaXplKCldKTsKLQl9Ci0KLQkvLyBOZWVkIHRvIGdldCBhbGwgbW9kdWxlcyBpbiB0aGUgcHJvamVjdC4gSWYgdGhlcmUncyBhIEVBUiBtb2R1bGUsIGdldCB0aGUgdXRpbGl0eSBKQVJzIAotCXByaXZhdGUgU3RyaW5nW10gZ2V0VXRpbGl0eUphckNsYXNzcGF0aChJUHJvamVjdCBwcm9qZWN0KSB7Ci0JCVN0cmluZ1tdIHV0aWxpdHlKYXJTdHJpbmcgPSBuZXcgU3RyaW5nWzBdOwotCQlTdHJpbmdbXSBtb2R1bGVDbGFzc3BhdGggPSBuZXcgU3RyaW5nWzBdOwotCQlBcnJheUxpc3QgdXRpbGl0eUphcnNDbGFzc3BhdGggPSBuZXcgQXJyYXlMaXN0KCk7Ci0JCQotCQlTdHJpbmcgbW9kdWxlOwotCQlJVmlydHVhbENvbXBvbmVudCBjb21wID0gQ29tcG9uZW50Q29yZS5jcmVhdGVDb21wb25lbnQocHJvamVjdCk7Ci0JCWlmIChjb21wICE9IG51bGwpIHsKLQkJCW1vZHVsZSA9IGNvbXAuZ2V0TmFtZSgpOwotCQkJaWYgKEoyRUVVdGlscy5pc0VBUkNvbXBvbmVudChjb21wKSkgewotCQkJCW1vZHVsZUNsYXNzcGF0aCA9IGdldENsYXNzcGF0aEZvckVBUlByb2plY3QocHJvamVjdCwgbW9kdWxlKTsKLQkJCQlmb3IgKGludCBqID0gMDsgaiA8IG1vZHVsZUNsYXNzcGF0aC5sZW5ndGg7IGorKykgewotCQkJCQl1dGlsaXR5SmFyc0NsYXNzcGF0aC5hZGQobW9kdWxlQ2xhc3NwYXRoW2pdKTsKLQkJCQl9Ci0JCQkJdXRpbGl0eUphclN0cmluZyA9IChTdHJpbmdbXSkgdXRpbGl0eUphcnNDbGFzc3BhdGgudG9BcnJheShuZXcgU3RyaW5nW3V0aWxpdHlKYXJzQ2xhc3NwYXRoLnNpemUoKV0pOwotCQkJfQotCQl9IAotCi0JCXJldHVybiB1dGlsaXR5SmFyU3RyaW5nOwotCX0KLQkKLQlwcml2YXRlIFN0cmluZ1tdIGdldENsYXNzcGF0aEZvckVBUlByb2plY3QoSVByb2plY3QgcHJvamVjdCwgU3RyaW5nIG1vZHVsZSkgewotCQlJUGF0aCBwcm9qZWN0UGF0aCA9Ci0JCQlwcm9qZWN0LmdldFByb2plY3QoKS5nZXRMb2NhdGlvbigpLmFkZFRyYWlsaW5nU2VwYXJhdG9yKCkuYXBwZW5kKG1vZHVsZSkuYWRkVHJhaWxpbmdTZXBhcmF0b3IoKTsKLQkJcmV0dXJuIGdldERpcmVjdG9yeUphckZpbGVzKHByb2plY3RQYXRoKTsKLQl9Ci0KLQlwcml2YXRlIFN0cmluZ1tdIGdldERpcmVjdG9yeUphckZpbGVzKElQYXRoIGlQYXRoKSB7Ci0JCUZpbGUgZGlyID0gaVBhdGgudG9GaWxlKCk7Ci0JCVZlY3RvciBqYXJzVmVjdG9yID0gbmV3IFZlY3RvcigpOwotCQlpZiAoZGlyLmV4aXN0cygpICYmIGRpci5pc0RpcmVjdG9yeSgpKSB7Ci0JCQlTdHJpbmdbXSBmaWxlbmFtZXMgPSBkaXIubGlzdCgpOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlbmFtZXMubGVuZ3RoOyBpKyspIHsKLQkJCQlpZiAoZmlsZW5hbWVzW2ldLmVuZHNXaXRoKERPVF9KQVIpKQotCQkJCQlqYXJzVmVjdG9yLmFkZChwYXRoMlN0cmluZyhpUGF0aCkgKyBmaWxlbmFtZXNbaV0pOwotCQkJfQotCQl9Ci0JCVN0cmluZ1tdIGphcnMgPSBuZXcgU3RyaW5nW2phcnNWZWN0b3Iuc2l6ZSgpXTsKLQkJamFyc1ZlY3Rvci5jb3B5SW50byhqYXJzKTsKLQkJcmV0dXJuIGphcnM7Ci0JfQotCi0JcHJpdmF0ZSBTdHJpbmdbXSBnZXRXRUJJTkZMaWIoSVByb2plY3QgcHJvamVjdCkgewotCQlTdHJpbmdbXSB3ZWJpbmZMaWJKYXJzID0gbmV3IFN0cmluZ1swXTsKLQkJQXJyYXlMaXN0IGFuQXJyYXlMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotCQl0cnkgewkJCQotCQkJCQlJVmlydHVhbENvbXBvbmVudCBjb21wb25lbnQgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJCQkJaWYgKGNvbXBvbmVudCAhPSBudWxsKSB7Ci0JCQkJCQkKLQkJCQkJCUlWaXJ0dWFsRm9sZGVyIHdlYkluZkxpYiA9IGNvbXBvbmVudC5nZXRSb290Rm9sZGVyKCkuZ2V0Rm9sZGVyKG5ldyBQYXRoKAotCQkJCQkJCQlXRUJJTkZfTElCKSk7Ci0JCQkJCQlpZiAod2ViSW5mTGliICE9IG51bGwpIHsKLQkJCQkJCQlJVmlydHVhbFJlc291cmNlW10gcmVzb3VyY2VzID0gd2ViSW5mTGliLm1lbWJlcnMoKTsKLQkJCQkJCQlJUmVzb3VyY2UgYVJlc291cmNlID0gbnVsbDsKLQkJCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHJlc291cmNlcy5sZW5ndGg7IGkrKykgewotCQkJCQkJCQlhUmVzb3VyY2UgPSByZXNvdXJjZXNbaV0uZ2V0VW5kZXJseWluZ1Jlc291cmNlKCk7Ci0JCQkJCQkJCWlmIChKQVIuZXF1YWxzSWdub3JlQ2FzZShhUmVzb3VyY2UuZ2V0RmlsZUV4dGVuc2lvbigpKSkKLQkJCQkJCQkJCWFuQXJyYXlMaXN0LmFkZCggYVJlc291cmNlLmdldExvY2F0aW9uKCkudG9PU1N0cmluZygpKTsKLQkJCQkJCQl9Ci0JCQkJCQkJaWYgKGFuQXJyYXlMaXN0LnNpemUoKSAhPSAwKQotCQkJCQkJCQl3ZWJpbmZMaWJKYXJzID0gKFN0cmluZ1tdKSBhbkFycmF5TGlzdC50b0FycmF5KG5ldyBTdHJpbmdbYW5BcnJheUxpc3Quc2l6ZSgpXSk7Ci0JCQkJCQkJfQotCQkJCQl9Ci0JCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJfQotCQlyZXR1cm4gd2ViaW5mTGliSmFyczsKLQl9Ci0KLQlwcml2YXRlIFN0cmluZ1tdIGdldENsYXNzcGF0aEZvckphdmFQcm9qZWN0KElKYXZhUHJvamVjdCBqYXZhUHJvamVjdCkgewotCQlBcnJheUxpc3QgcHJvamVjdENsYXNzcGF0aCA9IG5ldyBBcnJheUxpc3QoKTsKLQkJdHJ5IHsKLQkJCUlDbGFzc3BhdGhFbnRyeVtdIGJ1aWxkUGF0aCA9Ci0JCQkJamF2YVByb2plY3QuZ2V0UmVzb2x2ZWRDbGFzc3BhdGgodHJ1ZSk7Ci0JCQlmb3IgKGludCBpID0gMDsgaSA8IGJ1aWxkUGF0aC5sZW5ndGg7IGkrKykgewotCQkJCVN0cmluZ1tdIGJ1aWxkUGF0aFN0cmluZyA9Ci0JCQkJCWNsYXNzcGF0aEVudHJ5MlN0cmluZygKLQkJCQkJCWJ1aWxkUGF0aFtpXSwKLQkJCQkJCWphdmFQcm9qZWN0LmdldFByb2plY3QoKSk7Ci0JCQkJZm9yIChpbnQgaiA9IDA7IGogPCBidWlsZFBhdGhTdHJpbmcubGVuZ3RoOyBqKyspIHsKLQkJCQkJcHJvamVjdENsYXNzcGF0aC5hZGQoYnVpbGRQYXRoU3RyaW5nW2pdKTsKLQkJCQl9Ci0JCQl9Ci0JCX0gY2F0Y2ggKEphdmFNb2RlbEV4Y2VwdGlvbiBqbWUpIHsKLQkJfQotCi0JCVN0cmluZ1tdIHV0aWxpdHlKYXJzQ2xhc3NwYXRoOwotCQlJUHJvamVjdCBwcm9qZWN0ID0gamF2YVByb2plY3QuZ2V0UHJvamVjdCgpOwotCQlJUHJvamVjdFtdIHJlZmVyZW5jaW5nUHJvamVjdHMgPSBwcm9qZWN0LmdldFJlZmVyZW5jaW5nUHJvamVjdHMoKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCByZWZlcmVuY2luZ1Byb2plY3RzLmxlbmd0aDsgaSsrKSB7Ci0JCQl1dGlsaXR5SmFyc0NsYXNzcGF0aCA9IGdldFV0aWxpdHlKYXJDbGFzc3BhdGgocmVmZXJlbmNpbmdQcm9qZWN0c1tpXSk7Ci0JCQlmb3IgKGludCBqID0gMDsgaiA8IHV0aWxpdHlKYXJzQ2xhc3NwYXRoLmxlbmd0aDsgaisrKSB7Ci0JCQkJcHJvamVjdENsYXNzcGF0aC5hZGQodXRpbGl0eUphcnNDbGFzc3BhdGhbal0pOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIChTdHJpbmdbXSkgcHJvamVjdENsYXNzcGF0aC50b0FycmF5KG5ldyBTdHJpbmdbcHJvamVjdENsYXNzcGF0aC5zaXplKCldKTsKLQl9Ci0KLQlwcml2YXRlIFN0cmluZ1tdIGNsYXNzcGF0aEVudHJ5MlN0cmluZygKLQkJSUNsYXNzcGF0aEVudHJ5IGVudHJ5LAotCQlJUHJvamVjdCBwcm9qZWN0KSAKLQl7Ci0JCXN3aXRjaCAoZW50cnkuZ2V0RW50cnlLaW5kKCkpIHsKLQkJCWNhc2UgSUNsYXNzcGF0aEVudHJ5LkNQRV9MSUJSQVJZIDoKLQkJCXsKLQkJCQlyZXR1cm4gbmV3IFN0cmluZ1tdIHsgcGF0aDJTdHJpbmcoZW50cnkuZ2V0UGF0aCgpKX07CQotCQkJfQotCQkJY2FzZSBJQ2xhc3NwYXRoRW50cnkuQ1BFX1BST0pFQ1QgOgotCQkJewkJCQotCQkJCXJldHVybiBnZXRDbGFzc3BhdGgoCi0JCQkJCVJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdCgKLQkJCQkJCWVudHJ5LmdldFBhdGgoKS5sYXN0U2VnbWVudCgpKSwgdHJ1ZSk7Ci0JCQl9Ci0JCQljYXNlIElDbGFzc3BhdGhFbnRyeS5DUEVfU09VUkNFIDoKLQkJCQl7Ci0JCQkJCUlQYXRoIHBhdGggPSBlbnRyeS5nZXRQYXRoKCk7Ci0JCQkJCWlmIChwYXRoLnNlZ21lbnQoMCkuZXF1YWxzKHByb2plY3QuZ2V0TmFtZSgpKSkKLQkJCQkJCXBhdGggPSBwYXRoLnJlbW92ZUZpcnN0U2VnbWVudHMoMSk7Ci0JCQkJCXJldHVybiBuZXcgU3RyaW5nW10gewotCQkJCQkJcGF0aDJTdHJpbmcoCi0JCQkJCQkJcHJvamVjdAotCQkJCQkJCQkuZ2V0TG9jYXRpb24oKQotCQkJCQkJCQkuYWRkVHJhaWxpbmdTZXBhcmF0b3IoKQotCQkJCQkJCQkuYXBwZW5kKAotCQkJCQkJCQlwYXRoKSl9OwotCQkJCX0KLQkJCWNhc2UgSUNsYXNzcGF0aEVudHJ5LkNQRV9WQVJJQUJMRSA6Ci0JCQl7Ci0JCQkJcmV0dXJuIGNsYXNzcGF0aEVudHJ5MlN0cmluZygKLQkJCQkJSmF2YUNvcmUuZ2V0UmVzb2x2ZWRDbGFzc3BhdGhFbnRyeShlbnRyeSksCi0JCQkJCXByb2plY3QpOwotCQkJfQotCQkJZGVmYXVsdCA6Ci0JCQl7Ci0JCQkJcmV0dXJuIG5ldyBTdHJpbmdbXSB7IHBhdGgyU3RyaW5nKGVudHJ5LmdldFBhdGgoKSl9OwotCQkJfQotCQl9Ci0JfQotCi0JcHJpdmF0ZSBTdHJpbmcgcGF0aDJTdHJpbmcoSVBhdGggcGF0aCkgewotCQlyZXR1cm4gcGF0aC50b09TU3RyaW5nKCk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdXRpbC9GaWxlVXRpbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdXRpbC9GaWxlVXRpbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmRiYjhhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3V0aWwvRmlsZVV0aWwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudXRpbDsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JQ29udGFpbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci0KLXB1YmxpYyBjbGFzcyBGaWxlVXRpbAotewotICBwdWJsaWMgRmlsZVV0aWwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBjb3B5RmlsZShTdHJpbmcgc3JjLCBTdHJpbmcgZGVzdCkKLSAgewotICAgIElucHV0U3RyZWFtIGlzID0gbnVsbDsKLSAgICBGaWxlT3V0cHV0U3RyZWFtIGZvcyA9IG51bGw7Ci0gICAgCi0gICAgdHJ5Ci0gICAgewotICAgICAgaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKHNyYyk7Ci0gICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShkZXN0KTsKLSAgICAgIGludCBjID0gMDsKLSAgICAgIGJ5dGVbXSBhcnJheSA9IG5ldyBieXRlWzEwMjRdOwotICAgICAgd2hpbGUgKChjID0gaXMucmVhZChhcnJheSkpID49IDApCi0gICAgICB7Ci0gICAgICAgIGZvcy53cml0ZShhcnJheSwgMCwgYyk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgfQotICAgIGZpbmFsbHkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgZm9zLmNsb3NlKCk7Ci0gICAgICAgIGlzLmNsb3NlKCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBGaWxlIGNyZWF0ZUZpbGVBbmRQYXJlbnREaXJlY3RvcmllcyhTdHJpbmcgZmlsZU5hbWUpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGZpbGVOYW1lKTsKLSAgICBGaWxlIHBhcmVudCA9IGZpbGUuZ2V0UGFyZW50RmlsZSgpOwotICAgIGlmICghcGFyZW50LmV4aXN0cygpKQotICAgIHsKLSAgICAgIHBhcmVudC5ta2RpcnMoKTsKLSAgICB9Ci0gICAgZmlsZS5jcmVhdGVOZXdGaWxlKCk7Ci0gICAgcmV0dXJuIGZpbGU7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgZGVsZXRlRGlyZWN0b3JpZXMoRmlsZSBkaXIpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIEZpbGVbXSBjaGlsZHJlbiA9IGRpci5saXN0RmlsZXMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChjaGlsZHJlbltpXS5saXN0KCkgIT0gbnVsbCAmJiBjaGlsZHJlbltpXS5saXN0KCkubGVuZ3RoID4gMCkKLSAgICAgIHsKLSAgICAgICAgZGVsZXRlRGlyZWN0b3JpZXMoY2hpbGRyZW5baV0pOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBjaGlsZHJlbltpXS5kZWxldGUoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZGlyLmRlbGV0ZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBmb2xkZXIgYW5kIGFsbCBwYXJlbnQgZm9sZGVycyBpZiBub3QgZXhpc3RpbmcgUHJvamVjdCBtdXN0IGV4aXN0Ci0gICAqLwotICBwdWJsaWMgc3RhdGljIHZvaWQgY3JlYXRlRm9sZGVyKElGb2xkZXIgZm9sZGVyLCBib29sZWFuIGZvcmNlLCBib29sZWFuIGxvY2FsKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICB7Ci0gICAgaWYgKCFmb2xkZXIuZXhpc3RzKCkpCi0gICAgewotICAgICAgSUNvbnRhaW5lciBwYXJlbnQgPSBmb2xkZXIuZ2V0UGFyZW50KCk7Ci0gICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgSUZvbGRlcikKLSAgICAgIHsKLSAgICAgICAgY3JlYXRlRm9sZGVyKChJRm9sZGVyKXBhcmVudCwgZm9yY2UsIGxvY2FsKTsKLSAgICAgIH0KLSAgICAgIGZvbGRlci5jcmVhdGUoZm9yY2UsIGxvY2FsLCBuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgY3JlYXRlVGFyZ2V0RmlsZShTdHJpbmcgc291cmNlRmlsZU5hbWUsIFN0cmluZyB0YXJnZXRGaWxlTmFtZSkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgY3JlYXRlVGFyZ2V0RmlsZShzb3VyY2VGaWxlTmFtZSwgdGFyZ2V0RmlsZU5hbWUsIGZhbHNlKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBjcmVhdGVUYXJnZXRGaWxlKFN0cmluZyBzb3VyY2VGaWxlTmFtZSwgU3RyaW5nIHRhcmdldEZpbGVOYW1lLCBib29sZWFuIG92ZXJ3cml0ZSkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgRmlsZSBpZGVhbFJlc3VsdEZpbGUgPSBuZXcgRmlsZSh0YXJnZXRGaWxlTmFtZSk7Ci0gICAgaWYgKG92ZXJ3cml0ZSB8fCAhaWRlYWxSZXN1bHRGaWxlLmV4aXN0cygpKQotICAgIHsKLSAgICAgIEZpbGVVdGlsLmNyZWF0ZUZpbGVBbmRQYXJlbnREaXJlY3Rvcmllcyh0YXJnZXRGaWxlTmFtZSk7Ci0gICAgICBGaWxlVXRpbC5jb3B5RmlsZShzb3VyY2VGaWxlTmFtZSwgdGFyZ2V0RmlsZU5hbWUpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdXRpbC9QbGF0Zm9ybVV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS91dGlsL1BsYXRmb3JtVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFmMGUzYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS91dGlsL1BsYXRmb3JtVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudXRpbDsKLQotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7Ci0KLXB1YmxpYyBjbGFzcyBQbGF0Zm9ybVV0aWxzIHsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMQVRGT1JNX1JPT1QgPSAicGxhdGZvcm06L3Jlc291cmNlIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXSU5fRklMRV9QUk9UT0NPTCA9ICJmaWxlOi8iOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExOWF9GSUxFX1BST1RPQ09MID0gImZpbGU6Ly8iOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMQVRGT1JNID0gInBsYXRmb3JtIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRVNPVVJDRSA9ICIvcmVzb3VyY2UiOwotCi0JcHJpdmF0ZSBQbGF0Zm9ybVV0aWxzKCkgewotCX0KLQotCS8qKgotCSogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHBsYXRmb3JtIFVSTCBnaXZlbiBhbiBJUGF0aAotCSogQHBhcmFtIElQYXRoIHBhdGgKLQkqIEByZXR1cm4gU3RyaW5nIHBsYXRmb3JtVVJMCi0JKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQbGF0Zm9ybVVSTChJUGF0aCBwYXRoKSB7Ci0JCVN0cmluZyBwbGF0Zm9ybVVSTDsKLQkJcGxhdGZvcm1VUkwgPSBVUkkuY3JlYXRlUGxhdGZvcm1SZXNvdXJjZVVSSShwYXRoLnRvU3RyaW5nKCkpLnRvU3RyaW5nKCk7Ci0JCS8vIG9sZCBtZXRob2Q6IGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9uCi0JCS8vIAlwbGF0Zm9ybVVSTCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0RmlsZShwYXRoKS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JCXJldHVybiBwbGF0Zm9ybVVSTDsKLQl9Ci0KLQkvKioKLQkqIFJldHVybnMgdGhlIFVSTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgUGxhdGZvcm0gVVJMIGdpdmVuIGFuIElQYXRoCi0JKiBUaGUgUGxhdGZvcm1SZXNvdXJjZU1hbmFnZXIgdW5kZXJkc3RhbmRzIHRoaXMgZm9ybWF0IGFuZCB0aGVyZWZvcmUKLQkqIHRoaXMgaXMgc3VpdGVkIGZvciBjb21tYW5kIFVSTCdzCi0JKiBAcGFyYW0gSVBhdGggcGF0aAotCSogQHJldHVybiBVUkwgUGxhdGZvcm0gVVJMCi0JKi8KLQlwdWJsaWMgc3RhdGljIFVSTCBnZXRDb21tYW5kUGxhdGZvcm1VUkwoSVBhdGggcGF0aCkgewotCQlVUkwgdXJsID0gbnVsbDsKLQkJdHJ5IHsKLQkJCXVybCA9IG5ldyBVUkwoUExBVEZPUk0sIG51bGwsIFJFU09VUkNFICsgcGF0aC50b1N0cmluZygpKTsKLQkJfSBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpIHsKLQkJCXJldHVybiB1cmw7Ci0JCX0KLQkJcmV0dXJuIHVybDsKLQl9Ci0KLQkvKioKLQkqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBwYXRoIGdpdmVuIHBsYXRmb3JtIFVSTCBzdHJpbmcKLQkqIEBwYXJhbSBTdHJpbmcgcGxhdGZvcm0gVVJMIHN0cmluZwotCSogQHJldHVybiBTdHJpbmcgcGF0aCBzdHJpbmcKLQkqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFBhdGhGcm9tUGxhdGZvcm0oU3RyaW5nIHBsYXRmb3JtU3RyKSB7Ci0JCVN0cmluZyBwYXRoU3RyID0gcGxhdGZvcm1TdHI7Ci0KLQkJU3RyaW5nIHJvb3RMb2NhdGlvbjsKLQkJcm9vdExvY2F0aW9uID0gUExBVEZPUk1fUk9PVDsKLQkJLy8gb2xkIG1ldGhvZDogZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb24KLQkJLy8Jcm9vdExvY2F0aW9uID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JCWlmIChwbGF0Zm9ybVN0ci5zdGFydHNXaXRoKHJvb3RMb2NhdGlvbikpCi0JCQlwYXRoU3RyID0gcGxhdGZvcm1TdHIuc3Vic3RyaW5nKHJvb3RMb2NhdGlvbi5sZW5ndGgoKSk7Ci0JCXJldHVybiBwYXRoU3RyOwotCX0KLQotCS8qKgotCSogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHBsYXRmb3JtIFVSTCBnaXZlbiB0aGUgcGF0aCBzdHJpbmcKLQkqIEBwYXJhbSBTdHJpbmcgcGF0aCBzdHJpbmcKLQkqIEByZXR1cm4gU3RyaW5nIHBsYXRmb3JtIFVSTCBzdHJpbmcKLQkqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFBsYXRmb3JtRnJvbVBhdGgoU3RyaW5nIHBhdGhTdHIpIHsKLQkJU3RyaW5nIHBsYXRmb3JtU3RyID0gcGF0aFN0cjsKLQotCQlTdHJpbmcgcm9vdExvY2F0aW9uOwotCQlyb290TG9jYXRpb24gPSBQTEFURk9STV9ST09UOwotCQkvLyBvbGQgbWV0aG9kOiBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbgotCQkvLwlyb290TG9jYXRpb24gPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldExvY2F0aW9uKCkudG9TdHJpbmcoKTsKLQkJcGxhdGZvcm1TdHIgPSByb290TG9jYXRpb24gKyBwYXRoU3RyOwotCQlyZXR1cm4gcGxhdGZvcm1TdHI7Ci0JfQotCi0JLyoqCi0JKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGxvY2FsIGZpbGUgc3lzdGVtIGZpbGUgZ2l2ZW4gcGxhdGZvcm0gVVJMIHN0cmluZwotCSogQHBhcmFtIFN0cmluZyBwbGF0Zm9ybSBVUkwgc3RyaW5nCi0JKiBAcmV0dXJuIFN0cmluZyBmaWxlIHN0cmluZwotCSovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RmlsZUZyb21QbGF0Zm9ybShTdHJpbmcgcGxhdGZvcm1TdHIpIHsKLQkJU3RyaW5nIGZpbGVTdHIgPSBwbGF0Zm9ybVN0cjsKLQkJU3RyaW5nIHBhdGhTdHIgPSBnZXRQYXRoRnJvbVBsYXRmb3JtKHBsYXRmb3JtU3RyKTsKLQotCQlmaWxlU3RyID0KLQkJCVJlc291cmNlc1BsdWdpbgotCQkJCS5nZXRXb3Jrc3BhY2UoKQotCQkJCS5nZXRSb290KCkKLQkJCQkuZ2V0RmlsZShuZXcgUGF0aChwYXRoU3RyKSkKLQkJCQkuZ2V0TG9jYXRpb24oKQotCQkJCS50b1N0cmluZygpOwotCi0JCS8vIG9sZCBtZXRob2Q6IGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9uCi0JCS8vCURvIG5vdGhpbmcKLQotCQlyZXR1cm4gZmlsZVN0cjsKLQl9Ci0KLQkvKioKLQkqIFJldHVybnMgdGhlIGZpbGUgcHJvdG9jb2wgcmVwcmVzZW50YXRpb24gb2YgdGhlIGxvY2FsIGZpbGUgc3lzdGVtIGZpbGUgZ2l2ZW4gcGxhdGZvcm0gVVJMIHN0cmluZwotCSogQHBhcmFtIFN0cmluZyBwbGF0Zm9ybSBVUkwgc3RyaW5nCi0JKiBAcmV0dXJuIFN0cmluZyB0aGUgZmlsZSBwcm90b2NvbCB1cmkKLQkqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEZpbGVVUkxGcm9tUGxhdGZvcm0oU3RyaW5nIHBsYXRmb3JtU3RyKSB7Ci0JCVN0cmluZyBmaWxlU3RyID0gcGxhdGZvcm1TdHI7Ci0JCVN0cmluZyBwYXRoU3RyID0gZ2V0UGF0aEZyb21QbGF0Zm9ybShwbGF0Zm9ybVN0cik7Ci0JCXRyeSB7Ci0JCQlmaWxlU3RyID0KLQkJCQlSZXNvdXJjZXNQbHVnaW4KLQkJCQkJLmdldFdvcmtzcGFjZSgpCi0JCQkJCS5nZXRSb290KCkKLQkJCQkJLmdldEZpbGUobmV3IFBhdGgocGF0aFN0cikpCi0JCQkJCS5nZXRMb2NhdGlvbigpCi0JCQkJCS50b0ZpbGUoKQotCQkJCQkudG9VUkwoKQotCQkJCQkudG9TdHJpbmcoKTsKLQkJfSBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11cmxlKSB7Ci0JCQlmaWxlU3RyID0gZ2V0RmlsZVVSTEZyb21QYXRoKG5ldyBQYXRoKHBhdGhTdHIpKTsKLQkJfQotCQlyZXR1cm4gZmlsZVN0cjsKLQl9Ci0KLQkvKioKLQkqIFJldHVybnMgdGhlIGZpbGUgcHJvdG9jb2wgcmVwcmVzZW50YXRpb24gb2YgYSBsb2NhbCBmaWxlCi0JKiBAcGFyYW0gSVBhdGggdGhlIFBhdGggb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZmlsZQotCSogQHJldHVybiBTdHJpbmcgdGhlIGZpbGUgcHJvdG9jb2wgdXJpCi0JKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRGaWxlVVJMRnJvbVBhdGgoSVBhdGggcGF0aCkgewotCi0JCVN0cmluZyBmaWxlID0gbnVsbDsKLQkJaWYgKHBhdGggIT0gbnVsbCkgewotCQkJaWYgKCFwYXRoLmlzQWJzb2x1dGUoKSkgewotCQkJCWZpbGUgPQotCQkJCQlSZXNvdXJjZXNQbHVnaW4KLQkJCQkJCS5nZXRXb3Jrc3BhY2UoKQotCQkJCQkJLmdldFJvb3QoKQotCQkJCQkJLmdldEZpbGUocGF0aCkKLQkJCQkJCS5nZXRMb2NhdGlvbigpCi0JCQkJCQkudG9TdHJpbmcoKTsKLQkJCQlpZiAoZmlsZS5jaGFyQXQoMCkgPT0gSVBhdGguU0VQQVJBVE9SKSB7Ci0JCQkJCWZpbGUgPSBMTlhfRklMRV9QUk9UT0NPTCArIGZpbGU7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJZmlsZSA9IFdJTl9GSUxFX1BST1RPQ09MICsgZmlsZTsKLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCWZpbGUgPSBwYXRoLnRvU3RyaW5nKCk7Ci0JCQl9Ci0JCQlpZiAoZmlsZSAhPSBudWxsICYmIGZpbGUuY2hhckF0KDApID09IElQYXRoLlNFUEFSQVRPUikgewotCQkJCWZpbGUgPSBMTlhfRklMRV9QUk9UT0NPTCArIGZpbGU7Ci0JCQl9IGVsc2UgewotCQkJCWZpbGUgPSBXSU5fRklMRV9QUk9UT0NPTCArIGZpbGU7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGZpbGUgPT0gbnVsbCA/IG51bGwgOiBmaWxlOwotCi0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdXRpbC9XU0RMVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3V0aWwvV1NETFV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYjM2NzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvdXRpbC9XU0RMVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUxNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMTYgICAxMjcxMzggcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudXRpbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzczsKLWltcG9ydCBqYXZheC53c2RsLmZhY3RvcnkuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFJlYWRlcjsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotaW1wb3J0IG9yZy5hcGFjaGUuYXhpcy53c2RsLnRvSmF2YS5VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLndzZGw0ai5XU0RMRmFjdG9yeUltcGw7Ci1pbXBvcnQgY29tLmlibS5pY3UudGV4dC5Db2xsYXRvcjsKLWltcG9ydCBjb20uaWJtLmljdS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotcHVibGljIGNsYXNzIFdTRExVdGlscyB7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERPVCA9ICIuIjsKLQotICAvKioKLSAgKiBUaGVzZSBhcmUgamF2YSBrZXl3b3JkcyBhcyBzcGVjaWZpZWQgYXQgdGhlIGZvbGxvd2luZyBVUkwgKHNvcnRlZCBhbHBoYWJldGljYWxseSkuCi0gICogaHR0cDovL2phdmEuc3VuLmNvbS9kb2NzL2Jvb2tzL2pscy9zZWNvbmRfZWRpdGlvbi9odG1sL2xleGljYWwuZG9jLmh0bWwjMjI5MzA4Ci0gICogTm90ZSB0aGF0IGZhbHNlLCB0cnVlLCBhbmQgbnVsbCBhcmUgbm90IHN0cmljdGx5IGtleXdvcmRzOyB0aGV5IGFyZSBsaXRlcmFsIHZhbHVlcywKLSAgKiBidXQgZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGFycmF5LCB0aGV5IGNhbiBiZSB0cmVhdGVkIGFzIGxpdGVyYWxzLgotICAqLwotICBzdGF0aWMgZmluYWwgU3RyaW5nIGtleXdvcmRzW10gPQotICB7Ci0gICAgICAiYWJzdHJhY3QiLCAgImJvb2xlYW4iLCAgICAgICJicmVhayIsICAgICAgImJ5dGUiLCAgICAgICJjYXNlIiwKLSAgICAgICJjYXRjaCIsICAgICAiY2hhciIsICAgICAgICAgImNsYXNzIiwgICAgICAiY29uc3QiLCAgICAgImNvbnRpbnVlIiwKLSAgICAgICJkZWZhdWx0IiwgICAiZG8iLCAgICAgICAgICAgImRvdWJsZSIsICAgICAiZWxzZSIsICAgICAgImV4dGVuZHMiLAotICAgICAgImZhbHNlIiwgICAgICJmaW5hbCIsICAgICAgICAiZmluYWxseSIsICAgICJmbG9hdCIsICAgICAiZm9yIiwKLSAgICAgICJnb3RvIiwgICAgICAiaWYiLCAgICAgICAgICAgImltcGxlbWVudHMiLCAiaW1wb3J0IiwgICAgImluc3RhbmNlb2YiLAotICAgICAgImludCIsICAgICAgICJpbnRlcmZhY2UiLCAgICAibG9uZyIsICAgICAgICJuYXRpdmUiLCAgICAibmV3IiwKLSAgICAgICJudWxsIiwgICAgICAicGFja2FnZSIsICAgICAgInByaXZhdGUiLCAgICAicHJvdGVjdGVkIiwgInB1YmxpYyIsCi0gICAgICAicmV0dXJuIiwgICAgInNob3J0IiwgICAgICAgICJzdGF0aWMiLCAgICAgInN0cmljdGZwIiwgICJzdXBlciIsCi0gICAgICAic3dpdGNoIiwgICAgInN5bmNocm9uaXplZCIsICJ0aGlzIiwgICAgICAgInRocm93IiwgICAgICJ0aHJvd3MiLAotICAgICAgInRyYW5zaWVudCIsICJ0cnVlIiwgICAgICAgICAidHJ5IiwgICAgICAgICJ2b2lkIiwgICAgICAidm9sYXRpbGUiLAotICAgICAgIndoaWxlIgotICB9OwotCi0gIC8qKiBDb2xsYXRvciBmb3IgY29tcGFyaW5nIHRoZSBzdHJpbmdzICovCi0gIHN0YXRpYyBmaW5hbCBDb2xsYXRvciBlbmdsaXNoQ29sbGF0b3IgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRU5HTElTSCk7Ci0KLSAgLyoqIFVzZSB0aGlzIGNoYXJhY3RlciBhcyBzdWZmaXggKi8KLSAgc3RhdGljIGZpbmFsIGNoYXIga2V5d29yZFByZWZpeCA9ICdfJzsKLQotICBwcml2YXRlIFdTRExVdGlscygpIHsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGZpcnN0IHNlcnZpY2UgZWxlbWVudCBpbiB0aGUgV1NETCBkZWZpbml0aW9uLgotICAqIEByZXR1cm4gU3RyaW5nIHNlcnZpY2UgZWxlbWVudCBuYW1lCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNlcnZpY2VFbGVtZW50TmFtZShEZWZpbml0aW9uIGRlZmluaXRpb24pIHsKLSAgCVNlcnZpY2Ugc2VydmljZSA9IChTZXJ2aWNlKSBkZWZpbml0aW9uLmdldFNlcnZpY2VzKCkudmFsdWVzKCkuaXRlcmF0b3IoKS5uZXh0KCk7Ci0gIAlyZXR1cm4gc2VydmljZS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgcG9ydCB0eXBlIGVsZW1lbnQgcG9pbnRzIHRvIGJ5IHRoZSBmaXJzdCBzZXJ2aWNlIGFuZCBwb3J0IGVsZW1lbnQgaW4gdGhlIFdTREwgZGVmaW5pdGlvbi4KLSAgKiBAcmV0dXJuIFN0cmluZyBwb3J0IHR5cGUgZWxlbWVudCBuYW1lCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFBvcnRUeXBlTmFtZShEZWZpbml0aW9uIGRlZmluaXRpb24pIHsKLSAgCVNlcnZpY2Ugc2VydmljZSA9IChTZXJ2aWNlKSBkZWZpbml0aW9uLmdldFNlcnZpY2VzKCkudmFsdWVzKCkuaXRlcmF0b3IoKS5uZXh0KCk7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBzZXJ2aWNlLmdldFBvcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsgCi0gICAgd2hpbGUoaXRlcmF0b3IuaGFzTmV4dCgpKXsKLSAgICAgIFBvcnQgcG9ydCA9IChQb3J0KSBpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBmb3IgKGludCBpPTA7IGk8cG9ydC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5zaXplKCk7aSsrKSB7Ci0gICAgICAgIGlmIChwb3J0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLmdldChpKSBpbnN0YW5jZW9mIFNPQVBBZGRyZXNzKSB7Ci0gICAgICAgICAgIEJpbmRpbmcgYmluZGluZyA9IHBvcnQuZ2V0QmluZGluZygpOwotICAgICAgICAgICByZXR1cm4gYmluZGluZy5nZXRQb3J0VHlwZSgpLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuICIiOwotICAKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBvcnQgZWxlbWVudCBpbiB0aGUgV1NETCBkZWZpbml0aW9uLgotICAqIEByZXR1cm4gU3RyaW5nIHBvcnQgbmFtZQotICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQb3J0TmFtZShEZWZpbml0aW9uIGRlZmluaXRpb24pIHsKLSAgCVNlcnZpY2Ugc2VydmljZSA9IChTZXJ2aWNlKSBkZWZpbml0aW9uLmdldFNlcnZpY2VzKCkudmFsdWVzKCkuaXRlcmF0b3IoKS5uZXh0KCk7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBzZXJ2aWNlLmdldFBvcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsgCi0gICAgd2hpbGUoaXRlcmF0b3IuaGFzTmV4dCgpKXsKLSAgICAgIFBvcnQgcG9ydCA9IChQb3J0KSBpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBmb3IgKGludCBpPTA7IGk8cG9ydC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5zaXplKCk7aSsrKSB7Ci0gICAgICAgIGlmIChwb3J0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLmdldChpKSBpbnN0YW5jZW9mIFNPQVBBZGRyZXNzKSAKLSAgICAgICAgICByZXR1cm4gcG9ydC5nZXROYW1lKCk7Ci0gICAgICB9ICAKLSAgICB9Ci0gICAgIHJldHVybiAiIjsKLSAgfQotCi0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBtYWtlTmFtZXNwYWNlIChTdHJpbmcgY2xzTmFtZSkgewotCSAgcmV0dXJuIG1ha2VOYW1lc3BhY2UoY2xzTmFtZSwgImh0dHAiKTsKLSAgfQotCi0gIC8qKgotICAgKiBNYWtlIG5hbWVzcGFjZSBmcm9tIGEgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWUKLSAgICogYW5kIHRoZSBnaXZlbiBwcm90b2NvbAotICAgKgotICAgKiBAcGFyYW0gY2xzTmFtZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZQotICAgKiBAcGFyYW0gcHJvdG9jb2wgcHJvdG9jb2wgU3RyaW5nCi0gICAqIEByZXR1cm4gbmFtZXNwYWNlIG5hbWVzcGFjZSBTdHJpbmcKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG1ha2VOYW1lc3BhY2UgKFN0cmluZyBjbHNOYW1lLCBTdHJpbmcgcHJvdG9jb2wpIHsKLQkgIGlmIChjbHNOYW1lLmxhc3RJbmRleE9mKCcuJykgPT0gLTEpCi0JCSAgcmV0dXJuIHByb3RvY29sICsgIjovLyIgKyAiRGVmYXVsdE5hbWVzcGFjZSI7Ci0JICBTdHJpbmcgcGFja2FnZU5hbWUgPSBjbHNOYW1lLnN1YnN0cmluZygwLCBjbHNOYW1lLmxhc3RJbmRleE9mKCcuJykpOwotCSAgcmV0dXJuIG1ha2VOYW1lc3BhY2VGcm9tUGFja2FnZU5hbWUocGFja2FnZU5hbWUsIHByb3RvY29sKTsgICAgICAgCi0gIH0KLQotICAgIAotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgbWFrZU5hbWVzcGFjZUZyb21QYWNrYWdlTmFtZShTdHJpbmcgcGFja2FnZU5hbWUsIFN0cmluZyBwcm90b2NvbCkgewotCSAgaWYgKHBhY2thZ2VOYW1lID09IG51bGwgfHwgcGFja2FnZU5hbWUuZXF1YWxzKCIiKSkKLQkJICByZXR1cm4gcHJvdG9jb2wgKyAiOi8vIiArICJEZWZhdWx0TmFtZXNwYWNlIjsKLQkgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoIHBhY2thZ2VOYW1lLCAiLiIgKTsKLQkgIFN0cmluZ1tdIHdvcmRzID0gbmV3IFN0cmluZ1sgc3QuY291bnRUb2tlbnMoKSBdOwotCSAgZm9yKGludCBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgKytpKQotCQkgIHdvcmRzW2ldID0gc3QubmV4dFRva2VuKCk7Ci0KLQkgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoODApOwotCSAgZm9yKGludCBpID0gd29yZHMubGVuZ3RoLTE7IGkgPj0gMDsgLS1pKSB7Ci0JCSAgU3RyaW5nIHdvcmQgPSB3b3Jkc1tpXTsKLQkJICAvLyBzZXBlcmF0ZSB3aXRoIGRvdAotCQkgIGlmKCBpICE9IHdvcmRzLmxlbmd0aC0xICkKLQkJCSAgc2IuYXBwZW5kKCcuJyk7Ci0JCSAgc2IuYXBwZW5kKCB3b3JkICk7Ci0JICB9Ci0JICByZXR1cm4gcHJvdG9jb2wgKyAiOi8vIiArIHNiLnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm4gYSBEZWZpbml0aW9uIGZvciB0aGUgd3NkbCB1cmwgZ2l2ZW4gCi0gICoKLSAgKi8KLSAgcHVibGljIHN0YXRpYyBEZWZpbml0aW9uIGdldFdTRExEZWZpbml0aW9uKFN0cmluZyB3c2RsVVJMKQotICB7Ci0gICAgaWYod3NkbFVSTCA9PSBudWxsKSByZXR1cm4gbnVsbDsKLQotICAgIFdTRExGYWN0b3J5IHdzZGxGYWN0b3J5OwotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IG51bGw7Ci0gICAgdHJ5IHsKLSAgICAgIHdzZGxGYWN0b3J5ID0gbmV3IFdTRExGYWN0b3J5SW1wbCgpOwotICAgICAgV1NETFJlYWRlciB3c2RsUmVhZGVyID0gd3NkbEZhY3RvcnkubmV3V1NETFJlYWRlcigpOwotICAgICAgZGVmaW5pdGlvbiA9IHdzZGxSZWFkZXIucmVhZFdTREwod3NkbFVSTCk7Ci0gICAgfSAKLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsgLy8gY2FuIGJlIFdTRExFeGNlcHRpb24gb3IgSU9FeGNlcHRpb24KLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICByZXR1cm4gZGVmaW5pdGlvbjsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFBhY2thZ2VOYW1lKERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgICBpZiAoZGVmaW5pdGlvbiAhPSBudWxsKQotICAgICB7Ci0gICAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgICByZXR1cm4gbmFtZXNwYWNlVVJJMlBhY2thZ2VOYW1lKG5hbWVzcGFjZSk7Ci0gICAgIH0KLSAgICAgcmV0dXJuICIiOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UGFja2FnZU5hbWVGb3JCaW5kaW5nSW1wbChQb3J0IHBvcnQsIE1hcCBuczJwa2dNYXApCi0gIHsKLSAgICBpZiAocG9ydCAhPSBudWxsICYmIG5zMnBrZ01hcCAhPSBudWxsKQotICAgIHsKLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IHBvcnQuZ2V0QmluZGluZygpOwotICAgICAgUU5hbWUgYm5kUU5hbWUgPSBiaW5kaW5nLmdldFFOYW1lKCk7Ci0gICAgICBTdHJpbmcgbmFtZXNwYWNlID0gYm5kUU5hbWUuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICBPYmplY3QgcGtnID0gbnMycGtnTWFwLmdldChuYW1lc3BhY2UpOwotICAgICAgaWYgKHBrZyAhPSBudWxsKQotICAgICAgICByZXR1cm4gKFN0cmluZylwa2c7Ci0gICAgfQotICAgIHJldHVybiBnZXRQYWNrYWdlTmFtZUZvckJpbmRpbmdJbXBsKHBvcnQpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UGFja2FnZU5hbWVGb3JCaW5kaW5nSW1wbChEZWZpbml0aW9uIGRlZmluaXRpb24sIE1hcCBuczJwa2dNYXApCi0gIHsKLSAgICBpZiAoZGVmaW5pdGlvbiAhPSBudWxsICYmIG5zMnBrZ01hcCAhPSBudWxsKQotICAgIHsKLSAgICAgIFNlcnZpY2Ugc2VydmljZSA9IChTZXJ2aWNlKSBkZWZpbml0aW9uLmdldFNlcnZpY2VzKCkudmFsdWVzKCkuaXRlcmF0b3IoKS5uZXh0KCk7Ci0gICAgICBQb3J0IHBvcnQgPSAoUG9ydCkgc2VydmljZS5nZXRQb3J0cygpLnZhbHVlcygpLml0ZXJhdG9yKCkubmV4dCgpOwotICAgICAgcmV0dXJuIGdldFBhY2thZ2VOYW1lRm9yQmluZGluZ0ltcGwocG9ydCwgbnMycGtnTWFwKTsKLSAgICB9Ci0gICAgcmV0dXJuIGdldFBhY2thZ2VOYW1lRm9yQmluZGluZ0ltcGwoZGVmaW5pdGlvbik7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQYWNrYWdlTmFtZUZvckJpbmRpbmdJbXBsKERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgIFBvcnQgcG9ydCA9IG51bGw7Ci0gICAgaWYgKGRlZmluaXRpb24gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTZXJ2aWNlIHNlcnZpY2UgPSAoU2VydmljZSlkZWZpbml0aW9uLmdldFNlcnZpY2VzKCkudmFsdWVzKCkuaXRlcmF0b3IoKS5uZXh0KCk7Ci0gICAgICBwb3J0ID0gKFBvcnQpc2VydmljZS5nZXRQb3J0cygpLnZhbHVlcygpLml0ZXJhdG9yKCkubmV4dCgpOwotICAgIH0KLSAgICByZXR1cm4gZ2V0UGFja2FnZU5hbWVGb3JCaW5kaW5nSW1wbChwb3J0KTsKLSAgfQotCi0vLyBUaGlzIGlzIHlldCBhbm90aGVyIG5hbWluZyBhbGdvcml0aG0gYmFzZWQgb24gd2Vic2VydmljZXMuamFyCi0vLyBUaGV5IGFsd2F5cyB1c2UgdGhlIGJpbmRpbmcgbmFtZXNwYWNlIGFzIHRoZSBwYWNrYWdlIG5hbWUKLS8vIG9mIHRoZSBCaW5kaW5nSW1wbCBjbGFzcy4KLXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFBhY2thZ2VOYW1lRm9yQmluZGluZ0ltcGwoUG9ydCBwb3J0KQotewotICAgaWYgKHBvcnQgIT0gbnVsbCkKLSAgIHsKLQkgIEJpbmRpbmcgYmluZGluZyA9IHBvcnQuZ2V0QmluZGluZygpOwotLy8JICBQb3J0VHlwZSBwb3J0VHlwZSA9IGJpbmRpbmcuZ2V0UG9ydFR5cGUoKTsKLQkgIFFOYW1lIGJuZFFOYW1lID0gYmluZGluZy5nZXRRTmFtZSgpOwotCSAgU3RyaW5nIG5hbWVzcGFjZSA9IGJuZFFOYW1lLmdldE5hbWVzcGFjZVVSSSgpOwotCSAgcmV0dXJuIG5hbWVzcGFjZVVSSTJQYWNrYWdlTmFtZShuYW1lc3BhY2UpOwotICAgfQotICAgcmV0dXJuICIiOwotfQotCi0vKioKLSogR2V0IHRoZSBuYW1lc3BhY2UgZm9yIHRoZSBQb3J0IFR5cGUKLSogCi0qLwotcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UG9ydFR5cGVOYW1lc3BhY2UoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotewotICBTdHJpbmcgbmFtZXNwYWNlID0gIiI7Ci0gIGlmIChkZWZpbml0aW9uICE9IG51bGwpCi0gIHsKLQlTZXJ2aWNlIHNlcnZpY2UgPSAoU2VydmljZSkgZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpLnZhbHVlcygpLml0ZXJhdG9yKCkubmV4dCgpOwotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gc2VydmljZS5nZXRQb3J0cygpLnZhbHVlcygpLml0ZXJhdG9yKCk7IAotCXdoaWxlKGl0ZXJhdG9yLmhhc05leHQoKSl7Ci0gICAgICBQb3J0IHBvcnQgPSAoUG9ydCkgaXRlcmF0b3IubmV4dCgpOwotICAgICAgZm9yIChpbnQgaT0wOyBpPHBvcnQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuc2l6ZSgpO2krKykgewotICAgICAgICBpZiAocG9ydC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5nZXQoaSkgaW5zdGFuY2VvZiBTT0FQQWRkcmVzcyl7IAotCSAgICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gcG9ydC5nZXRCaW5kaW5nKCkuZ2V0UG9ydFR5cGUoKTsKLQkgICAgICBRTmFtZSBibmRRTmFtZSA9IHBvcnRUeXBlLmdldFFOYW1lKCk7Ci0JICAgICAgbmFtZXNwYWNlID0gYm5kUU5hbWUuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICAJfSAgCi0JICB9Ci0gIAl9Ci0gIH0gIAotICByZXR1cm4gbmFtZXNwYWNlOwotfQotCi0vLyBUaGlzIGlzIHlldCBhbm90aGVyIG5hbWluZyBhbGdvcml0aG0gYmFzZWQgb24gd2Vic2VydmljZXMuamFyCi0vLyBUaGV5IGFsd2F5cyB1c2UgdGhlIHBvcnR0eXBlIG5hbWVzcGFjZSBhcyB0aGUgcGFja2FnZSBuYW1lCi0vLyBvZiB0aGUgSmF2YSBjbGFzcyAoaW4gZWpiKS4KLXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFBhY2thZ2VOYW1lRm9yUG9ydFR5cGUoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotewotICAgaWYgKGRlZmluaXRpb24gIT0gbnVsbCkKLSAgIHsKLQkgIFN0cmluZyBuYW1lc3BhY2UgPSBnZXRQb3J0VHlwZU5hbWVzcGFjZShkZWZpbml0aW9uKTsKLQkgIHJldHVybiBuYW1lc3BhY2VVUkkyUGFja2FnZU5hbWUobmFtZXNwYWNlKTsKLSAgICB9Ci0gICAgcmV0dXJuICIiOwotfQotCi0gIC8qKgotICAqIGNoZWNrcyBpZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgamF2YSBrZXl3b3JkLgotICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlL2ZhbHNlCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0phdmFLZXl3b3JkKFN0cmluZyBrZXl3b3JkKSB7Ci0gICAgcmV0dXJuIChBcnJheXMuYmluYXJ5U2VhcmNoKGtleXdvcmRzLCBrZXl3b3JkLCBlbmdsaXNoQ29sbGF0b3IpID49IDApOwotICB9Ci0KLSAgLyoqCi0gICogVHVybiBhIGphdmEga2V5d29yZCBzdHJpbmcgaW50byBhIG5vbi1KYXZhIGtleXdvcmQgc3RyaW5nLiAgKFJpZ2h0IG5vdwotICAqIHRoaXMgc2ltcGx5IG1lYW5zIGFwcGVuZGluZyBhbiB1bmRlcnNjb3JlLikKLSAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgbWFrZU5vbkphdmFLZXl3b3JkKFN0cmluZyBrZXl3b3JkKXsKLSAgICByZXR1cm4gIGtleXdvcmRQcmVmaXggKyBrZXl3b3JkOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RnVsbHlRdWFsaWZpZWRQb3J0VHlwZU5hbWUoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGJlYW5OYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGJlYW5OYW1lLmFwcGVuZChnZXRQYWNrYWdlTmFtZUZvclBvcnRUeXBlKGRlZmluaXRpb24pKTsgCi0gICAgYmVhbk5hbWUuYXBwZW5kKERPVCk7Ci0gICAgYmVhbk5hbWUuYXBwZW5kKGdldFBvcnRUeXBlTmFtZShkZWZpbml0aW9uKSk7Ci0gICAgcmV0dXJuIGJlYW5OYW1lLnRvU3RyaW5nKCk7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBnZXROYW1lCi0gICAqIEBwYXJhbSB1cmkgU3RyaW5nCi0gICAqIEByZXR1cm4gZ2V0IHRoZSBmaWxlIG5hbWUgYWZ0ZXIgdGhlIGxhc3QgXCBhbmQgLwotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TmFtZShTdHJpbmcgdXJpKSB7Ci0KLQkvLyBHZXQgZXZlcnl0aGluZyBhZnRlciBsYXN0IHNsYXNoIG9yIGJhY2tzbGFzaAotCWludCBic2xhc2ggPSB1cmkubGFzdEluZGV4T2YoIlxcIik7Ci0JaW50IHNsYXNoID0gdXJpLmxhc3RJbmRleE9mKCIvIik7Ci0JaW50IGkgPSAgYnNsYXNoID4gc2xhc2ggPyBic2xhc2ggOiBzbGFzaDsKLQlTdHJpbmcgZmlsZU5hbWUgPSB1cmkuc3Vic3RyaW5nKGkrMSkucmVwbGFjZSgnPycsICcuJyk7Ci0KLQlyZXR1cm4gZmlsZU5hbWU7Ci0gIH0KLQotCi0vKioKLSAqIGdldFdTRExOYW1lCi0gKiBAcGFyYW0gdXJpIFN0cmluZwotICogQHJldHVybiBnZXQgdGhlIGZpbGUgbmFtZSBhZnRlciB0aGUgbGFzdCBcIGFuZCAvLCB0cmltbWVkLCBkZWZhdWx0ZWQgdG8KLSAqICAgICAgICAgImRlZmF1bHQud3NkbCIgaWYgdGhlcmUgaXMgbm8gbmFtZSwgYW5kIGVuZGluZyB3aXRoICIud3NkbCIuCi0gKi8KLSBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRXU0RMTmFtZShTdHJpbmcgdXJpKSB7Ci0KLQkvLyBHZXQgZXZlcnl0aGluZyBhZnRlciBsYXN0IHNsYXNoIG9yIGJhY2tzbGFzaCBmcm9tIGlucHV0IFVSSQotCS8vIHdpdGggbm8gd2hpdGVzcGFjZS4KLQlTdHJpbmcgV1NETE5hbWUgPSBnZXROYW1lKHVyaSkudHJpbSgpOwotCi0JLy8gaWYgZW1wdHksIHJldHVybiB0aGUgZGVmYXVsdCAiZGVmYXVsdC53c2RsIgotCWlmICggV1NETE5hbWUuZXF1YWxzKCAiIiApICkgewotCQlXU0RMTmFtZSA9ICJkZWZhdWx0LndzZGwiOwotCX0KLQotCS8vIG1ha2Ugc3VyZSBuYW1lIGVuZHMgd2l0aCAiLndzZGwiLCBsb3dlciBjYXNlLgotCWVsc2UgewotCQlpZiAoICEgV1NETE5hbWUuZW5kc1dpdGgoICIud3NkbCIgKSApIHsKLQkJCWlmICggV1NETE5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCggIi53c2RsIiApICkgewotCQkJCWludCBsYXN0RG90ID0gV1NETE5hbWUubGFzdEluZGV4T2YoIi4iKTsKLQkJCQlXU0RMTmFtZSA9IFdTRExOYW1lLnN1YnN0cmluZyggMCwgbGFzdERvdCApICsgIi53c2RsIjsKLQkJCX0KLQkJCWVsc2UgewotCQkJCVdTRExOYW1lID0gV1NETE5hbWUgKyAiLndzZGwiOwotCQkJfQotCQl9Ci0JfQotCi0JcmV0dXJuIFdTRExOYW1lOwotIH0KLQotIC8qKgotICAqIGdldFBvcnRUeXBlTmFtZUZyb21CZWFuTmFtZQotICAqIEBwYXJhbSBiZWFubmFtZSBTdHJpbmcKLSAgKiBAcmV0dXJuIGdldCB0aGUgcG9ydCB0eXBlIG5hbWUgYmFzZWQgb24gdGhlIGJlYW4gbmFtZQotICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQb3J0VHlwZU5hbWVGcm9tQmVhbk5hbWUoU3RyaW5nIGJlYW5OYW1lKSB7Ci0gICAgcmV0dXJuIGJlYW5OYW1lLnN1YnN0cmluZyhiZWFuTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSk7CQotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UGFja2FnZU5hbWUoU2VydmljZSBzZXJ2aWNlLCBNYXAgbnMycGtnTWFwKQotICB7Ci0gICAgaWYgKHNlcnZpY2UgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgbmFtZXNwYWNlID0gc2VydmljZS5nZXRRTmFtZSgpLmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgaWYgKG5zMnBrZ01hcCAhPSBudWxsKQotICAgICAgewotICAgICAgICBPYmplY3QgcGtnID0gbnMycGtnTWFwLmdldChuYW1lc3BhY2UpOwotICAgICAgICBpZiAocGtnICE9IG51bGwpCi0gICAgICAgICAgcmV0dXJuIChTdHJpbmcpcGtnOwotICAgICAgfQotICAgICAgcmV0dXJuIG5hbWVzcGFjZVVSSTJQYWNrYWdlTmFtZShuYW1lc3BhY2UpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gIiI7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQYWNrYWdlTmFtZShQb3J0IHBvcnQsIE1hcCBuczJwa2dNYXApCi0gIHsKLSAgICBpZiAocG9ydCAhPSBudWxsKQotICAgICAgcmV0dXJuIGdldFBhY2thZ2VOYW1lKHBvcnQuZ2V0QmluZGluZygpLCBuczJwa2dNYXApOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAiIjsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFBhY2thZ2VOYW1lKEJpbmRpbmcgYmluZGluZywgTWFwIG5zMnBrZ01hcCkKLSAgewotICAgIGlmIChiaW5kaW5nICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIG5hbWVzcGFjZSA9IGJpbmRpbmcuZ2V0UU5hbWUoKS5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgIGlmIChuczJwa2dNYXAgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IHBrZyA9IG5zMnBrZ01hcC5nZXQobmFtZXNwYWNlKTsKLSAgICAgICAgaWYgKHBrZyAhPSBudWxsKQotICAgICAgICAgIHJldHVybiAoU3RyaW5nKXBrZzsKLSAgICAgIH0KLSAgICAgIHJldHVybiBuYW1lc3BhY2VVUkkyUGFja2FnZU5hbWUobmFtZXNwYWNlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuICIiOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UGFja2FnZU5hbWUoUG9ydFR5cGUgcG9ydFR5cGUsIE1hcCBuczJwa2dNYXApCi0gIHsKLSAgICBpZiAocG9ydFR5cGUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgbmFtZXNwYWNlID0gcG9ydFR5cGUuZ2V0UU5hbWUoKS5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgIGlmIChuczJwa2dNYXAgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IHBrZyA9IG5zMnBrZ01hcC5nZXQobmFtZXNwYWNlKTsKLSAgICAgICAgaWYgKHBrZyAhPSBudWxsKQotICAgICAgICAgIHJldHVybiAoU3RyaW5nKXBrZzsKLSAgICAgIH0KLSAgICAgIHJldHVybiBuYW1lc3BhY2VVUkkyUGFja2FnZU5hbWUobmFtZXNwYWNlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuICIiOwotICB9Ci0KLQotICAvKioKLSAgICogbmFtZXNwYWNlVVJJMlBhY2thZ2VOYW1lCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VVUkkKLSAgICogQHJldHVybiBwYWNrYWdlIG5hbWUgYmFzZWQgb24gbmFtZXNwYWNlCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBuYW1lc3BhY2VVUkkyUGFja2FnZU5hbWUoU3RyaW5nIG5hbWVzcGFjZVVSSSkKLSAgewotICAJLyoqCi0gIAkgKiBUT0RPOiAgVGhlIG1ha2VQYWNrYWdlTmFtZSBtZXRob2QgZnJvbSAKLSAgCSAqIG9yZy5hcGFjaGUuYXhpcy53c2RsLnRvSmF2YS5VdGlscyBpbiBheGlzLTFfMSBpcyBjYWxsZWQgdG8gbWFwIG5hbWVzcGFjZSB0byBwYWNrYWdlIG5hbWUuICAKLSAgCSAqIFRoaXMgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGFuIGV4dGVuc2lvbiBwb2ludCB0byBwbHVnIGluIHJ1bnRpbWUgZW1pdHRlciBzcGVjaWZpYyBuYW1lc3BhY2UgdG8gCi0gIAkgKiBwYWNrYWdlIG1hcHBpbmcgYWxnb3JpdGhtIAotICAJICovCi0gIAlyZXR1cm4gVXRpbHMubWFrZVBhY2thZ2VOYW1lKG5hbWVzcGFjZVVSSSk7Ci0gIAkKLS8vICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoODApOwotLy8gICAgaWYgKG5hbWVzcGFjZVVSSSAhPSBudWxsICYmIG5hbWVzcGFjZVVSSS5sZW5ndGgoKSA+IDApCi0vLyAgICB7Ci0vLyAgICAgIFN0cmluZyBob3N0bmFtZSA9IG51bGw7Ci0vLyAgICAgIHRyeQotLy8gICAgICB7Ci0vLyAgICAgICAgaG9zdG5hbWUgPSBuZXcgVVJMKG5hbWVzcGFjZVVSSSkuZ2V0SG9zdCgpOwotLy8gICAgICB9Ci0vLyAgICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLS8vICAgICAgewotLy8gICAgICAgIGludCBpbmRleCA9IG5hbWVzcGFjZVVSSS5pbmRleE9mKCI6Iik7Ci0vLyAgICAgICAgaWYgKGluZGV4ID4gLTEpCi0vLyAgICAgICAgewotLy8gICAgICAgICAgaG9zdG5hbWUgPSBuYW1lc3BhY2VVUkkuc3Vic3RyaW5nKGluZGV4KzEpOwotLy8gICAgICAgICAgaW5kZXggPSBob3N0bmFtZS5pbmRleE9mKCIvIik7Ci0vLyAgICAgICAgICBpZiAoaW5kZXggPiAtMSkKLS8vICAgICAgICAgICAgaG9zdG5hbWUgPSBob3N0bmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpOwotLy8gICAgICAgIH0KLS8vICAgICAgICBlbHNlCi0vLyAgICAgICAgICBob3N0bmFtZSA9IG5hbWVzcGFjZVVSSTsKLS8vICAgICAgfQotLy8gICAgICAKLS8vCSAgLy8gaWYgd2UgZGlkbid0IGZpbGUgYSBob3N0bmFtZSwgYmFpbAotLy8JICBpZiAoaG9zdG5hbWUgPT0gbnVsbCkgewotLy8JCSAgcmV0dXJuIG51bGw7Ci0vLwkgIH0KLS8vCi0vLyAgICAgIC8vY29udmVydCBpbGxlZ2FsIGphdmEgaWRlbnRpZmllcgotLy8gICAgICBob3N0bmFtZSA9IGhvc3RuYW1lLnJlcGxhY2UoJy0nLCAnXycpOwotLy8gICAgICAvLyB0b2tlbml6ZSB0aGUgaG9zdG5hbWUgYW5kIHJldmVyc2UgaXQKLS8vICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihob3N0bmFtZSwgIi4iKTsKLS8vICAgICAgU3RyaW5nW10gd29yZHMgPSBuZXcgU3RyaW5nW3N0LmNvdW50VG9rZW5zKCldOwotLy8gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgKytpKQotLy8gICAgICAgIHdvcmRzW2ldID0gc3QubmV4dFRva2VuKCk7Ci0vLyAgICAgIGZvcihpbnQgaSA9IHdvcmRzLmxlbmd0aC0xOyBpID49IDA7IC0taSkKLS8vICAgICAgewotLy8gICAgICAgIFN0cmluZyB3b3JkID0gd29yZHNbaV07Ci0vLyAgICAgICAgaWYgKGlzSmF2YUtleXdvcmQod29yZCkpCi0vLyAgICAgICAgICB3b3JkID0gbWFrZU5vbkphdmFLZXl3b3JkKHdvcmQpOwotLy8gICAgICAgIC8vIHNlcGVyYXRlIHdpdGggZG90Ci0vLyAgICAgICAgaWYgKGkgIT0gd29yZHMubGVuZ3RoLTEpCi0vLyAgICAgICAgICBzYi5hcHBlbmQoJy4nKTsKLS8vICAgICAgICAvLyBjb252ZXJ0IGRpZ2l0cyB0byB1bmRlcnNjb3JlcwotLy8gICAgICAgIGlmIChDaGFyYWN0ZXIuaXNEaWdpdCh3b3JkLmNoYXJBdCgwKSkpCi0vLyAgICAgICAgICBzYi5hcHBlbmQoJ18nKTsKLS8vICAgICAgICAgIHNiLmFwcGVuZCh3b3JkKTsKLS8vICAgICAgfQotLy8gICAgfQotLy8gICAgcmV0dXJuIG5vcm1hbGl6ZVBhY2thZ2VOYW1lKHNiLnRvU3RyaW5nKCksIERPVC5jaGFyQXQoMCkpOwotICB9Ci0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHJlc29sdmVEb3RJblBvcnROYW1lKFN0cmluZyBuYW1lKSB7Ci0JaWYobmFtZS5pbmRleE9mKCIuIik8MCkKLQl7Ci0JCXJldHVybiBuYW1lOwotCX0KLSAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgYm9vbGVhbiBhZnRlckRvdCA9IGZhbHNlOwotICAgIGZvcihpbnQgaT0wOyBpPG5hbWUubGVuZ3RoKCk7IGkrKykKLSAgICB7Ci0gICAgCWlmKG5hbWUuY2hhckF0KGkpPT0nLicpCi0gICAgCXsKLSAgICAJCWFmdGVyRG90ID0gdHJ1ZTsKLSAgICAJfQotICAgIAllbHNlIGlmKGFmdGVyRG90KQotICAgIAl7Ci0gICAgCQlzYi5hcHBlbmQobmFtZS5zdWJzdHJpbmcoaSxpKzEpLnRvVXBwZXJDYXNlKCkpOwotICAgIAkJYWZ0ZXJEb3Q9ZmFsc2U7Ci0gICAgCX0KLSAgICAJZWxzZQotICAgIAl7Ci0gICAgCQlzYi5hcHBlbmQobmFtZS5jaGFyQXQoaSkpOwotICAgIAl9Ci0gICAgfQotICAgIHJldHVybiBzYi50b1N0cmluZygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93aWRnZXRzL0F4aXNNYXBwaW5nc0ZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93aWRnZXRzL0F4aXNNYXBwaW5nc0ZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZDM0YzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9BeGlzTWFwcGluZ3NGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uQ29uZGl0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkJvb2xlYW5GcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TaW1wbGVGcmFnbWVudDsKLQotCi1wdWJsaWMgY2xhc3MgQXhpc01hcHBpbmdzRnJhZ21lbnQgZXh0ZW5kcyBCb29sZWFuRnJhZ21lbnQKLXsKLSAgcHJpdmF0ZSBib29sZWFuIHNob3dNYXBwaW5nc187Ci0KLSAgcHVibGljIEF4aXNNYXBwaW5nc0ZyYWdtZW50KCkKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgc2V0VHJ1ZUZyYWdtZW50KCBuZXcgU2ltcGxlRnJhZ21lbnQoICJBeGlzTWFwcGluZ3NXaWRnZXQiICkpOwotICAgIHNldENvbmRpdGlvbiggbmV3IENvbmRpdGlvbigpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGV2YWx1YXRlKCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG93TWFwcGluZ3NfOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9ICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNob3dNYXBwaW5nKCBib29sZWFuIHNob3dNYXBwaW5ncyApCi0gIHsKLSAgICBzaG93TWFwcGluZ3NfID0gc2hvd01hcHBpbmdzOwotICB9ICAgICAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93aWRnZXRzL0F4aXNNYXBwaW5nc1dpZGdldC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9BeGlzTWFwcGluZ3NXaWRnZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFkMTFlZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93aWRnZXRzL0F4aXNNYXBwaW5nc1dpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDYxNiAgIDIzNTY0OCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgRXJyb3JzIGluIGNsaWVudCBwcm94eSBpZiB1c2luZyBkZWZhdWx0IG5hbWVzcGFjZSB0byBwYWNrYWdlIG1hcHBpbmcKLSAqIDIwMDgwOTE3ICAgMjQ3NTYxIG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgRXJyb3IgaWYgd2hpdGVzcGFjZSBlbnRlcmVkIGluIG1hcHBpbmcgcGFnZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLndpZGdldHM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5UYWJsZVZpZXdlcldpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRhYmxlSXRlbTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldERhdGFFdmVudHM7Ci0KLQotcHVibGljIGNsYXNzIEF4aXNNYXBwaW5nc1dpZGdldCBleHRlbmRzIFNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcgotewotICBwcml2YXRlIFN0cmluZyBwbHVnaW5JZF8gPSAib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkiOwotICAKLSAgcHJpdmF0ZSBUYWJsZVZpZXdlcldpZGdldCBtYXBwaW5nc187Ci0KLSAgcHJpdmF0ZSBieXRlIG1vZGVfOwotICBwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFQYXJhbWV0ZXJfOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBNT0RFX0JFQU4yWE1MID0gKGJ5dGUpMDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIE1PREVfWE1MMkJFQU4gPSAoYnl0ZSkxOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgTU9ERV9YTUwyUFJPWFkgPSAoYnl0ZSkyOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgTU9ERV9YTUwyRUpCID0gKGJ5dGUpMzsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIE1PREVfRUpCMlhNTCA9IChieXRlKTQ7Ci0gIAotICBwcml2YXRlIGZpbmFsIFN0cmluZyBERUZBVUxUX1BBQ0tBR0UgPSAiY3VzdG9tLmphdmFwYWNrYWdlIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgREVGQVVMVF9OQU1FU1BBQ0UgPSAiaHR0cDovL2N1c3RvbS5uYW1lc3BhY2UiOwotICAKLSAgLypDT05URVhUX0lEIFBXSk0wMDAxIGZvciB0aGUgV1NETCB0byBKYXZhIE1hcHBpbmdzIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXSk1fUEFHRSA9ICJQV0pNMDAwMSI7IC8vJE5PTi1OTFMtMSQKLSAgCi0gIHB1YmxpYyBBeGlzTWFwcGluZ3NXaWRnZXQoIGJ5dGUgbW9kZSApCi0gIHsKLSAgICBtb2RlXyA9IG1vZGU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGFkZENvbnRyb2xzKCBDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lciApCi0gIHsKLSAgICAgICAgCi0gICAgLy8gVE9ETyBUaGUgVE9PTFRJUF9QV0pNX1BBR0Uga2V5IGRvZXNuJ3Qgc2VlbSB0byBleGlzdCBhbnl3aGVyZT8/PwotCS8vcGFyZW50LnNldFRvb2xUaXBUZXh0KCBtc2dVdGlscy5nZXRNZXNzYWdlKCAiVE9PTFRJUF9QV0pNX1BBR0UiICkgKTsKLSAgICBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKCBwYXJlbnQsIHBsdWdpbklkXyArICIuIiArIElORk9QT1BfUFdKTV9QQUdFICk7Ci0gICAgCi0gICAgVGV4dCBtYXBwaW5nTGFiZWwgPSBuZXcgVGV4dCggcGFyZW50LCBTV1QuUkVBRF9PTkxZIHwgU1dULldSQVAgKTsKLSAgICBtYXBwaW5nTGFiZWwuc2V0VGV4dCggQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9NQVBQSU5HX1BBSVJTICk7Ci0gICAgbWFwcGluZ0xhYmVsLnNldExheW91dERhdGEoIG5ldyBHcmlkRGF0YSggR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMICkgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgTGlzdCBpbml0VmFsdWVzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIAotICAgIGlmKCBtb2RlXyA9PSBNT0RFX0JFQU4yWE1MIHx8IG1vZGVfID09IE1PREVfRUpCMlhNTCkgCi0gICAgewotCQlTdHJpbmdbXSBjb2x1bW5zID0geyBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRBQkxFX0NPTFVNTl9MQUJFTF9QQUNLQUdFLAotCQkJCQkJCUF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuVEFCTEVfQ09MVU1OX0xBQkVMX05BTUVTUEFDRX07Ci0JCW1hcHBpbmdzXyA9IG5ldyBUYWJsZVZpZXdlcldpZGdldCggY29sdW1ucywgaW5pdFZhbHVlcywgbmV3IFN0cmluZ1tdIHtERUZBVUxUX1BBQ0tBR0UsIERFRkFVTFRfTkFNRVNQQUNFfSwgVGFibGVWaWV3ZXJXaWRnZXQuTUFQX09ORV9UT19PTkUpOyAvLyROT04tTkxTLTEkCi0gICAgfQotCWVsc2UgCi0JewotICAgICAgCVN0cmluZ1tdIGNvbHVtbnMgPSB7IEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuVEFCTEVfQ09MVU1OX0xBQkVMX05BTUVTUEFDRSwKLSAgICAgIAkJCQkJCUF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuVEFCTEVfQ09MVU1OX0xBQkVMX1BBQ0tBR0V9OwotCQltYXBwaW5nc18gPSBuZXcgVGFibGVWaWV3ZXJXaWRnZXQoIGNvbHVtbnMsIGluaXRWYWx1ZXMsIG5ldyBTdHJpbmdbXSB7REVGQVVMVF9OQU1FU1BBQ0UsIERFRkFVTFRfUEFDS0FHRSB9LCBUYWJsZVZpZXdlcldpZGdldC5NQVBfTUFOWV9UT19PTkUpOyAvLyROT04tTkxTLTEkCi0JfQotICAgIAotCW1hcHBpbmdzXy5hZGRDb250cm9scyggcGFyZW50LCBzdGF0dXNMaXN0ZW5lciApOwotICAgCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpCi0gIHsKLSAgICByZXR1cm4gbWFwcGluZ3NfLmdldFN0YXR1cygpOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEphdmFQYXJhbWV0ZXIoIEphdmFXU0RMUGFyYW1ldGVyIHBhcmFtZXRlciApCi0gIHsKLSAgICBqYXZhUGFyYW1ldGVyXyA9IHBhcmFtZXRlcjsKLSAgfQotICAKLSAgcHVibGljIEphdmFXU0RMUGFyYW1ldGVyIGdldEphdmFQYXJhbWV0ZXIoKQotICB7Ci0gICAgaWYoIG1vZGVfID09IE1PREVfQkVBTjJYTUwgfHwgbW9kZV8gPT0gTU9ERV9FSkIyWE1MIHx8IG1vZGVfID09IE1PREVfWE1MMkJFQU4gfHwgbW9kZV8gPT0gTU9ERV9YTUwyUFJPWFkpCi0gICAgewotICAgICAgLy9TZXQgdGhlIG1hcHBpbmdzIG9uIGphdmFQYXJhbWV0ZXIKLSAgICAgIFRhYmxlSXRlbVtdIHBhaXJzID0gbWFwcGluZ3NfLmdldEl0ZW1zKCk7Ci0gIAkgIEhhc2hNYXAgbWFwID0gbmV3IEhhc2hNYXAoKTsKLSAgCSAgZm9yIChpbnQgaT0wOyBpPHBhaXJzLmxlbmd0aDsgaSsrKQotICAJICB7Ci0gIAkJbWFwLnB1dChwYWlyc1tpXS5nZXRUZXh0KDApLnRyaW0oKSxwYWlyc1tpXS5nZXRUZXh0KDEpLnRyaW0oKSk7Ci0gIAkgIH0KLSAgCSAgamF2YVBhcmFtZXRlcl8uc2V0TWFwcGluZ3MobWFwKTsKLSAgCSAgCi0gIAkgIC8vU2V0IHRoZSBuYW1lc3BhY2Ugb24gdGhlIGphdmFQYXJhbWV0ZXIKLSAgCSAgU3RyaW5nIGJlYW5OYW1lID0gamF2YVBhcmFtZXRlcl8uZ2V0QmVhbk5hbWUoKTsKLQkgIGlmKGJlYW5OYW1lICE9IG51bGwgJiYgIWJlYW5OYW1lLmVxdWFscygiIikpCi0JICB7Ci0JCVN0cmluZyBwYWNrYWdlTmFtZSA9IGJlYW5OYW1lLnN1YnN0cmluZygwLCBiZWFuTmFtZS5sYXN0SW5kZXhPZignLicpKTsKLQkJaWYobWFwLmNvbnRhaW5zS2V5KHBhY2thZ2VOYW1lKSkKLQkJewotCQkgIFN0cmluZyB0bnMgPSAoU3RyaW5nKW1hcC5nZXQocGFja2FnZU5hbWUpOwotCQkgIGphdmFQYXJhbWV0ZXJfLnNldE5hbWVzcGFjZSh0bnMpOwotCQl9CQkKLQkgIH0KLQotICAgIH0KLSAgICByZXR1cm4gamF2YVBhcmFtZXRlcl87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQXhpc1Byb3h5V2lkZ2V0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93aWRnZXRzL0F4aXNQcm94eVdpZGdldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzA4YmYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQXhpc1Byb3h5V2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjE2ICAgMTE1MTQ0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLkF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb24uVUlVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0RGF0YUV2ZW50czsKLQotCi1wdWJsaWMgY2xhc3MgQXhpc1Byb3h5V2lkZ2V0IGV4dGVuZHMgU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yCi17Ci0gIHByaXZhdGUgU3RyaW5nIHBsdWdpbklkXyA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aSI7Ci0gIAotICAvKkNPTlRFWFRfSUQgUFdKQjAwMDEgZm9yIHRoZSBXU0RMIHRvIEphdmEgQmluZGluZ3MgUGFnZSovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUFdKQl9QQUdFID0gIlBXSkIwMDAxIjsJLy8kTk9OLU5MUy0xJAotCQkKLSAgcHJpdmF0ZSBDb21ibyBvdXRwdXRGb2xkZXJDb21ib187Ci0gIC8qQ09OVEVYVF9JRCBQV0pCMDAwMyBmb3IgdGhlIEZvbGRlciBmaWVsZCBvZiB0aGUgV1NETCB0byBKYXZhIEJpbmRpbmdzIFBhZ2UqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1BXSkJfVEVYVF9GT0xERVIgPSAiUFdKQjAwMDMiOwkvLyROT04tTkxTLTEkCi0KLSAgcHJpdmF0ZSBCdXR0b24gZ2VuUHJveHlDaGVja2JveF87Ci0gIC8qQ09OVEVYVF9JRCBQV0pCMDAwOSBJbmRpY2F0ZXMgd2hldGhlciB0byBnZW5lcmF0ZSBhIHByb3h5IG9yIG5vdC4gKi8KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSU5GT1BPUF9QV0pCX0NIRUNLQk9YX0dFTlBST1hZID0gIlBXSkIwMDA5IjsJLy8kTk9OLU5MUy0xJAotCQkKLSAgcHJpdmF0ZSBCdXR0b24gc2hvd01hcHBpbmdzQ2hlY2tib3hfOwotICAvKkNPTlRFWFRfSUQgUFdKQjAwMTYgZm9yIHRoZSBTaG93IE1hcHBpbmdzIGNoZWNrYm94IG9mIHRoZSBCZWFuIE1ldGhvZHMgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfTjJQX1NIT1dfTUFQUElOR1MgPSAiUFdKQjAwMTYiOyAvLyROT04tTkxTLTEkCi0gIAotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyggQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIgKQotICB7Ci0gICAgVUlVdGlscyAgICAgIHVpVXRpbHMgID0gbmV3IFVJVXRpbHMoIHBsdWdpbklkXyApOwotICAgIAotCXBhcmVudC5zZXRUb29sVGlwVGV4dCggQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXSkJfUEFHRSApOwotCVBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAoIHBhcmVudCwgcGx1Z2luSWRfICsgIi4iICsgIElORk9QT1BfUFdKQl9QQUdFKTsKLSAgICAKLSAgICBnZW5Qcm94eUNoZWNrYm94XyA9IHVpVXRpbHMuY3JlYXRlQ2hlY2tib3goIHBhcmVudCwgQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5DSEVDS0JPWF9HRU5QUk9YWSwKLSAgICAJCQkJCQkJCQkJCUF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV0pCX0NIRUNLQk9YX0dFTlBST1hZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9QV0pCX0NIRUNLQk9YX0dFTlBST1hZICk7Ci0gICAgZ2VuUHJveHlDaGVja2JveF8uYWRkTGlzdGVuZXIoIFNXVC5TZWxlY3Rpb24sIHN0YXR1c0xpc3RlbmVyICk7Ci0gICAgZ2VuUHJveHlDaGVja2JveF8uYWRkU2VsZWN0aW9uTGlzdGVuZXIoIG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKCBTZWxlY3Rpb25FdmVudCBldnQgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdlblByb3h5KCk7ICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgIAotICAgIENvbXBvc2l0ZSB0ZXh0R3JvdXAgPSB1aVV0aWxzLmNyZWF0ZUNvbXBvc2l0ZSggcGFyZW50LCAyLCA1LCAwICk7Ci0gICAgCi0gICAgb3V0cHV0Rm9sZGVyQ29tYm9fID0gdWlVdGlscy5jcmVhdGVDb21ibyggdGV4dEdyb3VwLCBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0ZPTERFUl9OQU1FLAotICAgIAkJCQkJCQkJCUF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV0pCX1RFWFRfRk9MREVSLAotICAgIAkJCQkJCQkJCUlORk9QT1BfUFdKQl9URVhUX0ZPTERFUiwKLSAgICAJCQkJCQkJCQlTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8IFNXVC5SRUFEX09OTFkgKTsKLSAgICAKLSAgICBzaG93TWFwcGluZ3NDaGVja2JveF8gPSB1aVV0aWxzLmNyZWF0ZUNoZWNrYm94KCBwYXJlbnQsIEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfRVhQTE9SRV9NQVBQSU5HU19YTUwyQkVBTiwKLSAgICAJCQkJCQkJCQlBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfTjJQX1NIT1dfTUFQUElOR1MsCi0gICAgCQkJCQkJCQkJSU5GT1BPUF9OMlBfU0hPV19NQVBQSU5HUyApOwotICAgIC8vIFNpbmNlIHRoaXMgd2lkZ2V0IGFmZmVjdHMgd2hldGhlciB0aGUgbmV4dCBwYWdlIGlzIHNob3duIG9yIG5vdCB3ZQotICAgIC8vIG5lZWQgdG8gYWRkIHRoZSBzdGF0dXNMaXN0ZW5lci4KLSAgICBzaG93TWFwcGluZ3NDaGVja2JveF8uYWRkTGlzdGVuZXIoIFNXVC5TZWxlY3Rpb24sIHN0YXR1c0xpc3RlbmVyICk7Ci0gICAgCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBoYW5kbGVHZW5Qcm94eSgpCi0gIHsKLSAgICBib29sZWFuIGVuYWJsZWQgPSBnZW5Qcm94eUNoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKTsKLSAgICAKLSAgICBvdXRwdXRGb2xkZXJDb21ib18uc2V0RW5hYmxlZCggZW5hYmxlZCApOwotICAgIHNob3dNYXBwaW5nc0NoZWNrYm94Xy5zZXRFbmFibGVkKCBlbmFibGVkICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFByb2plY3QoSVByb2plY3QgY2xpZW50UHJvamVjdCkKLSAgeyAgCQotICAgIElQYXRoW10gcGF0aHMgPSBSZXNvdXJjZVV0aWxzLmdldEFsbEphdmFTb3VyY2VMb2NhdGlvbnMoY2xpZW50UHJvamVjdCk7Ci0gICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXRocy5sZW5ndGggOyBpKyspCi0gICAgewotICAgICAgb3V0cHV0Rm9sZGVyQ29tYm9fLmFkZChwYXRoc1tpXS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgCi0gICAgaWYoIHBhdGhzLmxlbmd0aCA+IDAgKQotICAgIHsKLSAgICAJb3V0cHV0Rm9sZGVyQ29tYm9fLnNlbGVjdCgwKTsKLSAgICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0T3V0cHV0Rm9sZGVyKCkKLSAgewotICAJcmV0dXJuIG91dHB1dEZvbGRlckNvbWJvXy5nZXRUZXh0KCk7Ci0gIH0KLSAgICAgICAgCi0gIHB1YmxpYyB2b2lkIHNldEdlbmVyYXRlUHJveHkoIEJvb2xlYW4gZ2VuUHJveHkgKQotICB7Ci0gICAgZ2VuUHJveHlDaGVja2JveF8uc2V0U2VsZWN0aW9uKCBnZW5Qcm94eS5ib29sZWFuVmFsdWUoKSApOwotICB9ICAgIAotICAKLSAgcHVibGljIEJvb2xlYW4gZ2V0R2VuZXJhdGVQcm94eSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IEJvb2xlYW4oIGdlblByb3h5Q2hlY2tib3hfLmdldFNlbGVjdGlvbigpICk7Ci0gIH0gICAKLSAgCi0gIHB1YmxpYyB2b2lkIHNldEN1c3RvbWl6ZUNsaWVudE1hcHBpbmdzKCBib29sZWFuIHNob3dNYXBwaW5ncyApCi0gIHsKLSAgICBzaG93TWFwcGluZ3NDaGVja2JveF8uc2V0U2VsZWN0aW9uKCBzaG93TWFwcGluZ3MgKTsKLSAgfSAgICAgICAgICAgIAotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0Q3VzdG9taXplQ2xpZW50TWFwcGluZ3MoKQotICB7Ci0gICAgcmV0dXJuIHNob3dNYXBwaW5nc0NoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKSAmJiBnZW5Qcm94eUNoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKTsKLSAgfSAgIAotICAKLSAgcHVibGljIHZvaWQgc2V0SXNDbGllbnRTY2VuYXJpbyggYm9vbGVhbiBpc0NsaWVudFNjZW5hcmlvICkKLSAgewotICAgIGdlblByb3h5Q2hlY2tib3hfLnNldEVuYWJsZWQoICFpc0NsaWVudFNjZW5hcmlvICk7IAotICB9ICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9jbGllbnQvV2ViU2VydmljZUNsaWVudEF4aXNUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93aXphcmQvY2xpZW50L1dlYlNlcnZpY2VDbGllbnRBeGlzVHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDg1MWFkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9jbGllbnQvV2ViU2VydmljZUNsaWVudEF4aXNUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjE2ICAgMTE1MTQ0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwNTIzICAgMTQzMjg0IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS5BeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuRGVmYXVsdHNGb3JDbGllbnRKYXZhV1NETENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudGFzay5DbGllbnRDb2RlR2VuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnRhc2suRGVmYXVsdHNGb3JIVFRQQmFzaWNBdXRoQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLlZhbGlkYXRlV1NETENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkud2lkZ2V0cy5BeGlzTWFwcGluZ3NXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkud2lkZ2V0cy5BeGlzUHJveHlXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5DbGllbnRFeHRlbnNpb25PdXRwdXRDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TaW1wbGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRDb250cmlidXRvckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnk7Ci0KLQotLyoqCi0gICogRGV2ZWxvcGVycyB3aG8gYXJlIGFkZGluZyB3ZWIgc2VydmljZSBjbGllbnRzIGludG8gdGhlIHdpemFyZCBzaG91bGQgY3JlYXRlCi0gICogYSBjbGFzcyB0aGF0IGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuICAKLSoqLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VDbGllbnRBeGlzVHlwZSBpbXBsZW1lbnRzIENvbW1hbmRXaWRnZXRCaW5kaW5nIAotewotCi0JCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlckRhdGFNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkgCi0gIHsKLSAgCS8vIEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZCAgCQotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDdXN0b21pemVDbGllbnRNYXBwaW5ncyIsIEF4aXNQcm94eVdpZGdldC5jbGFzcyApOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJQcm94eVByb2plY3RGb2xkZXIiLCBBeGlzUHJveHlXaWRnZXQuY2xhc3MsICJQcm94eUZvbGRlciIsIG51bGwgKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiR2VuZXJhdGVQcm94eSIsIEF4aXNQcm94eVdpZGdldC5jbGFzcyk7ICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJc0NsaWVudFNjZW5hcmlvIiwgQXhpc1Byb3h5V2lkZ2V0LmNsYXNzKTsgICAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3QiLCBBeGlzUHJveHlXaWRnZXQuY2xhc3MgKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSmF2YVdTRExQYXJhbSIsIEF4aXNNYXBwaW5nc1dpZGdldC5jbGFzcywgIkphdmFQYXJhbWV0ZXIiLCBudWxsKTsKLSAgICAKLSAgICAvLyBBeGlzUHJveHlXaWRnZXQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQXhpc1Byb3h5V2lkZ2V0LmNsYXNzLCAiR2VuZXJhdGVQcm94eSIsIENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MgKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQXhpc1Byb3h5V2lkZ2V0LmNsYXNzLCAiT3V0cHV0Rm9sZGVyIiwgRGVmYXVsdHNGb3JDbGllbnRKYXZhV1NETENvbW1hbmQuY2xhc3MgKTsKLSAgICAKLSAgICAvL0F4aXNNYXBwaW5nc1dpZGdldAotCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNNYXBwaW5nc1dpZGdldC5jbGFzcywgIkphdmFQYXJhbWV0ZXIiLCBEZWZhdWx0c0ZvckhUVFBCYXNpY0F1dGhDb21tYW5kLmNsYXNzLCAiSmF2YVdTRExQYXJhbSIsIG51bGwpOyAvL09LCi0JZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc01hcHBpbmdzV2lkZ2V0LmNsYXNzLCAiSmF2YVBhcmFtZXRlciIsIERlZmF1bHRzRm9yQ2xpZW50SmF2YVdTRExDb21tYW5kLmNsYXNzLCAiSmF2YVdTRExQYXJhbSIsIG51bGwpOyAvL09LCi0JZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc01hcHBpbmdzV2lkZ2V0LmNsYXNzLCAiSmF2YVBhcmFtZXRlciIsIFZhbGlkYXRlV1NETENvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgbnVsbCk7IC8vT0sKLQlkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzTWFwcGluZ3NXaWRnZXQuY2xhc3MsICJKYXZhUGFyYW1ldGVyIiwgQ2xpZW50Q29kZUdlbk9wZXJhdGlvbi5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBudWxsKTsgLy9PSwotCi0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlcldpZGdldE1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLldpZGdldFJlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyhXaWRnZXRSZWdpc3RyeSB3aWRnZXRSZWdpc3RyeSkgCi0gIHsKLSAgIAotICAgIHdpZGdldFJlZ2lzdHJ5LmFkZCggIkF4aXNDbGllbnRTdGFydCIsIAotICAgICAgICBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfQVhJU19QUk9YWSwKLSAgICAgICAgQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfV1NfQVhJU19QUk9YWSwKLSAgICAgICAgbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0gICAgICAgIHsKLSAgICAgICAgICBwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IEF4aXNQcm94eVdpZGdldCgpOwotICAgICAgICAgIH0KLSAgICAgICAgfSApOwotICAgIAotICAgIHdpZGdldFJlZ2lzdHJ5LmFkZCggIkF4aXNDbGllbnRCZWFuTWFwcGluZyIsIAotICAgICAgICBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfWE1MMlBST1hZLAotICAgICAgICBBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0VYUExPUkVfTUFQUElOR1NfWE1MMkJFQU4sCi0gICAgICAgIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKQotICAgICAgICB7Ci0gICAgICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBBeGlzTWFwcGluZ3NXaWRnZXQoQXhpc01hcHBpbmdzV2lkZ2V0Lk1PREVfWE1MMlBST1hZICk7Ci0gICAgICAgICAgfQotICAgICAgICB9ICk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnRGYWN0b3J5RmFjdG9yeSNjcmVhdGUoKQotICAgKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudEZhY3RvcnkgY3JlYXRlKCkgCi0gIHsKLSAgICByZXR1cm4gbmV3IENvbW1hbmRGcmFnbWVudEZhY3RvcnkoKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgcHVibGljIENvbW1hbmRGcmFnbWVudCBjcmVhdGUoKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vZGVhZCBjb2RlIC0gZG9lc24ndCBtYXR0ZXIgd2hhdCBnZXRzIHJldHVybmVkIGhlcmUuCi0gICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUZyYWdtZW50KCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICB9OwotICB9Ci0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlckNhbkZpbmlzaChvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyQ2FuRmluaXNoKENhbkZpbmlzaFJlZ2lzdHJ5IGNhbkZpbmlzaFJlZ2lzdHJ5KSAKLSAgewotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93c3J0L0F4aXNDbGllbnRDb25maWdXaWRnZXRGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93c3J0L0F4aXNDbGllbnRDb25maWdXaWRnZXRGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkYjdlOWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvd3NydC9BeGlzQ2xpZW50Q29uZmlnV2lkZ2V0RmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS53aWRnZXRzLkF4aXNQcm94eVdpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LldlYlNlcnZpY2VDbGllbnRBeGlzVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldEJpbmRpbmdUb1dpZGdldEZhY3RvcnlBZGFwdGVyOwotCi1wdWJsaWMgY2xhc3MgQXhpc0NsaWVudENvbmZpZ1dpZGdldEZhY3RvcnkgaW1wbGVtZW50cyBJTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3RvcnkgewotCi0JcHJpdmF0ZSBJTmFtZWRXaWRnZXRDb250cmlidXRvciAgICAgICAgICAgICBwcm94eUNvbmZpZ1dpZGdldF87Ci0JcHJpdmF0ZSBJTmFtZWRXaWRnZXRDb250cmlidXRvciAgICAgICAgICAgICBtYXBwaW5nc1dpZGdldF87Ci0JcHJpdmF0ZSBBeGlzUHJveHlXaWRnZXQgICAgICAgICAgICAgICAgICAgICBwcm94eVdpZGdldF87Ci0JcHJpdmF0ZSBXaWRnZXRCaW5kaW5nVG9XaWRnZXRGYWN0b3J5QWRhcHRlciBhZGFwdGVyXzsKLQkKLQlwdWJsaWMgQXhpc0NsaWVudENvbmZpZ1dpZGdldEZhY3RvcnkoKQotCXsKLQkgIGFkYXB0ZXJfID0gbmV3IFdpZGdldEJpbmRpbmdUb1dpZGdldEZhY3RvcnlBZGFwdGVyKCBuZXcgV2ViU2VydmljZUNsaWVudEF4aXNUeXBlKCkgKTsKLQkgIAotCSAgcHJveHlDb25maWdXaWRnZXRfID0gYWRhcHRlcl8uZ2V0V2lkZ2V0KCAiQXhpc0NsaWVudFN0YXJ0IiApOwotCSAgcHJveHlXaWRnZXRfICAgICAgID0gKEF4aXNQcm94eVdpZGdldClwcm94eUNvbmZpZ1dpZGdldF8uZ2V0V2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkuY3JlYXRlKCk7Ci0JICBtYXBwaW5nc1dpZGdldF8gICA9IGFkYXB0ZXJfLmdldFdpZGdldCggIkF4aXNDbGllbnRCZWFuTWFwcGluZyIgKTsKLQl9Ci0JCi0JcHVibGljIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIGdldEZpcnN0TmFtZWRXaWRnZXQoKSAKLQl7Ci0JICByZXR1cm4gcHJveHlDb25maWdXaWRnZXRfOwotCX0KLQotCXB1YmxpYyBJTmFtZWRXaWRnZXRDb250cmlidXRvciBnZXROZXh0TmFtZWRXaWRnZXQoIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIHdpZGdldENvbnRyaWJ1dG9yKSAKLQl7Ci0JICByZXR1cm4gd2lkZ2V0Q29udHJpYnV0b3IgPT0gcHJveHlDb25maWdXaWRnZXRfICYmIHByb3h5V2lkZ2V0Xy5nZXRDdXN0b21pemVDbGllbnRNYXBwaW5ncygpID8gbWFwcGluZ3NXaWRnZXRfIDogbnVsbDsKLQl9Ci0JCi0JcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhUmVnaXN0cnkpIAotCXsKLQkgIGFkYXB0ZXJfLnJlZ2lzdGVyRGF0YU1hcHBpbmdzKCBkYXRhUmVnaXN0cnkgKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93c3J0L0F4aXNXZWJTZXJ2aWNlQ2xpZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jb25zdW1wdGlvbi91aS93c3J0L0F4aXNXZWJTZXJ2aWNlQ2xpZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NDUwOTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY29uc3VtcHRpb24vdWkvd3NydC9BeGlzV2ViU2VydmljZUNsaWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIxNiAgIDExNTE0NCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MDUwOSAgIDEyNTA5NCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUsIFVzZSBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24KLSAqIDIwMDYwNTE1ICAgMTE1MjI1IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNjA3MjggICAxNDU0MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLndzcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuY29tbWFuZC5BeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuY29tbWFuZC5BeGlzQ2xpZW50SW5wdXRDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuQXhpc0NsaWVudE91dHB1dENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuY29tbWFuZC5EZWZhdWx0c0ZvckNsaWVudEphdmFXU0RMQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLkNsaWVudENvZGVHZW5PcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudGFzay5EZWZhdWx0c0ZvckhUVFBCYXNpY0F1dGhDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnRhc2suVmFsaWRhdGVXU0RMQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQnVpbGRQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuU2ltcGxlQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5BYnN0cmFjdFdlYlNlcnZpY2VDbGllbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlQ2xpZW50SW5mbzsKLQotcHVibGljIGNsYXNzIEF4aXNXZWJTZXJ2aWNlQ2xpZW50IGV4dGVuZHMgQWJzdHJhY3RXZWJTZXJ2aWNlQ2xpZW50Ci17CQkKLQotCXB1YmxpYyBBeGlzV2ViU2VydmljZUNsaWVudChXZWJTZXJ2aWNlQ2xpZW50SW5mbyBpbmZvKQotCXsKLQkJc3VwZXIoaW5mbyk7Ci0JCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY29uc3RydWN0b3Igc3R1YgotCX0KLQotCXB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgYXNzZW1ibGUoSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LAotCQkJSVNlbGVjdGlvbiBzZWwsIFN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCkKLQl7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCXB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgZGVwbG95KElFbnZpcm9ubWVudCBlbnYsIElDb250ZXh0IGN0eCwgSVNlbGVjdGlvbiBzZWwsCi0JCQlTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpCi0JewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQlwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGRldmVsb3AoSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwKLQkJCVN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCkKLQl7Ci0gICAgRWNsaXBzZUVudmlyb25tZW50IGVudmlyb25tZW50ID0gKEVjbGlwc2VFbnZpcm9ubWVudCllbnY7Ci0JCXJlZ2lzdGVyRGF0YU1hcHBpbmdzKCBlbnZpcm9ubWVudC5nZXRDb21tYW5kTWFuYWdlcigpLmdldE1hcHBpbmdSZWdpc3RyeSgpKTsKLQkJCi0JCVZlY3RvciBjb21tYW5kcyA9IG5ldyBWZWN0b3IoKTsKLQkJY29tbWFuZHMuYWRkKG5ldyBBeGlzQ2xpZW50SW5wdXRDb21tYW5kKHRoaXMsIGN0eCwgcHJvamVjdCkpOwotCQljb21tYW5kcy5hZGQobmV3IEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZCgpKTsKLS8vCQljb21tYW5kcy5hZGQobmV3IFNpbXBsZUZyYWdtZW50KCJBeGlzQ2xpZW50U3RhcnQiKSk7Ci0vLwkJY29tbWFuZHMuYWRkKG5ldyBTaW1wbGVGcmFnbWVudCgiQXhpc0NsaWVudEJlYW5NYXBwaW5nIikpOwotCQljb21tYW5kcy5hZGQobmV3IERlZmF1bHRzRm9ySFRUUEJhc2ljQXV0aENvbW1hbmQoKSk7Ci0vLwkJY29tbWFuZHMuYWRkKG5ldyBDb3B5QXhpc0phckNvbW1hbmQoKSk7Ci0JCWNvbW1hbmRzLmFkZChuZXcgRGVmYXVsdHNGb3JDbGllbnRKYXZhV1NETENvbW1hbmQoKSk7Ci0JCWNvbW1hbmRzLmFkZChuZXcgVmFsaWRhdGVXU0RMQ29tbWFuZCgpKTsKLQkJY29tbWFuZHMuYWRkKG5ldyBDbGllbnRDb2RlR2VuT3BlcmF0aW9uKCkpOwotCQljb21tYW5kcy5hZGQobmV3IEF4aXNDbGllbnRPdXRwdXRDb21tYW5kKHRoaXMsY3R4KSk7Ci0JCWNvbW1hbmRzLmFkZChuZXcgQnVpbGRQcm9qZWN0Q29tbWFuZCgpKTsKLQkJcmV0dXJuIG5ldyBTaW1wbGVDb21tYW5kRmFjdG9yeShjb21tYW5kcyk7Ci0JfQotCi0JcHVibGljIElDb21tYW5kRmFjdG9yeSBpbnN0YWxsKElFbnZpcm9ubWVudCBlbnYsIElDb250ZXh0IGN0eCwgSVNlbGVjdGlvbiBzZWwsCi0JCQlTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpCi0JewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQlwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IHJ1bihJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotCQkJU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KQotCXsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCQkKLQlwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IHJlZ2lzdHJ5KSAKLQl7Ci0JCS8vIEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZAotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnRJbnB1dENvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0IiwgQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdCIsCi0JCQkJbmV3IFN0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lcigpKTsKLS8vCQlyZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UnVudGltZSIsIEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFJ1bnRpbWVJRCIsCi0vLwkJCQludWxsKTsKLS8vCQlyZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZXNQYXJzZXIiLCBBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotLy8JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0RUFSIiwgQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLAotLy8JCQkJIkNsaWVudFByb2plY3RFQVIiLCBuZXcgU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyKCkpOwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnRJbnB1dENvbW1hbmQuY2xhc3MsICJXc2RsVVJMIiwgQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsgLy8gVVJJCi0JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkvLyB0bwotCQkvLyBVUkwKLQkJLy8gdHJhbnNmb3JtZXIKLQkJLy8gcmVxJ2Q/PwotLy8JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0UHJveHlTZWxlY3RlZCIsIEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywKLS8vCQkJCSJUZXN0UHJveHlTZWxlY3RlZCIsIG51bGwpOwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnRJbnB1dENvbW1hbmQuY2xhc3MsICJDbGllbnRTZXJ2ZXIiLCBBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotLy8JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJc0NsaWVudFNjZW5hcmlvIiwgQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzQ2xpZW50SW5wdXRDb21tYW5kLmNsYXNzLCAiR2VuZXJhdGVQcm94eSIsIEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0JCS8vIERlZmF1bHRzRm9ySFRUUEJhc2ljQXV0aENvbW1hbmQoKQotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBEZWZhdWx0c0ZvckhUVFBCYXNpY0F1dGhDb21tYW5kLmNsYXNzKTsgLy9PSwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldzZGxVUkwiLCBEZWZhdWx0c0ZvckhUVFBCYXNpY0F1dGhDb21tYW5kLmNsYXNzLCAiV3NkbFNlcnZpY2VVUkwiLCBudWxsKTsgLy9PSwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2VzUGFyc2VyIiwgRGVmYXVsdHNGb3JIVFRQQmFzaWNBdXRoQ29tbWFuZC5jbGFzcyk7IC8vT0sgICAgCi0JCQotLy8JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdCIsIENvcHlBeGlzSmFyQ29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBudWxsKTsKLQotCQkvLyBEZWZhdWx0c0ZvckNsaWVudEphdmFXU0RMQ29tbWFuZCgpIC8vIGphdmFQYXJhbV8sIG1vZGVsXwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBEZWZhdWx0c0ZvckNsaWVudEphdmFXU0RMQ29tbWFuZC5jbGFzcyk7Ci0JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdCIsIERlZmF1bHRzRm9yQ2xpZW50SmF2YVdTRExDb21tYW5kLmNsYXNzLCAiUHJveHlQcm9qZWN0IiwKLQkJCQludWxsKTsKLQkJLy8JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV3NkbFVSTCIsCi0JCS8vIERlZmF1bHRzRm9yQ2xpZW50SmF2YVdTRExDb21tYW5kLmNsYXNzLCJXU0RMU2VydmljZVBhdGhuYW1lIixudWxsKTsKLQkJLy8gLy8KLQkJLy8gVVJMIHRvIFVSTD8/Ci0JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV3NkbFVSTCIsIERlZmF1bHRzRm9yQ2xpZW50SmF2YVdTRExDb21tYW5kLmNsYXNzLCAiV1NETFNlcnZpY2VVUkwiLCBudWxsKTsgLy8gVVJJCi0JCS8vIHRvCi0JCS8vIFVSTD8/Ci0JCS8vIFZhbGlkYXRlV1NETENvbW1hbmQoKQotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBWYWxpZGF0ZVdTRExDb21tYW5kLmNsYXNzKTsKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXc2RsU2VydmljZVVSTCIsIFZhbGlkYXRlV1NETENvbW1hbmQuY2xhc3MpOwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2VzUGFyc2VyIiwgVmFsaWRhdGVXU0RMQ29tbWFuZC5jbGFzcyk7Ci0KLQkJLy8gV1NETDJKYXZhQ29tbWFuZCgpIC8vIGphdmFQYXJhbV8KLQkJcmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgQ2xpZW50Q29kZUdlbk9wZXJhdGlvbi5jbGFzcyk7Ci0JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV3NkbFVSTCIsIENsaWVudENvZGVHZW5PcGVyYXRpb24uY2xhc3MsICJXc2RsVVJJIiwgbnVsbCk7Ci0KLQkJLy8gUmVmcmVzaFByb2plY3RDb21tYW5kKCkKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0IiwgQ2xpZW50Q29kZUdlbk9wZXJhdGlvbi5jbGFzcywgIlByb2plY3QiLCBudWxsKTsJCQotCQkKLQkJLy8gU3R1YjJCZWFuQ29tbWFuZCgpCi0JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc0NsaWVudERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZXNQYXJzZXIiLCBDbGllbnRDb2RlR2VuT3BlcmF0aW9uLmNsYXNzKTsKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyhEZWZhdWx0c0ZvckNsaWVudEphdmFXU0RMQ29tbWFuZC5jbGFzcywgIk91dHB1dEZvbGRlciIsIENsaWVudENvZGVHZW5PcGVyYXRpb24uY2xhc3MgKTsKLQkJCi0JCS8vIEJ1aWxkUHJvamVjdENvbW1hbmQoKQotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3QiLCBCdWlsZFByb2plY3RDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIG51bGwpOwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkZvcmNlQnVpbGQiLCBCdWlsZFByb2plY3RDb21tYW5kLmNsYXNzKTsKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzQ2xpZW50RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJWYWxpZGF0aW9uTWFuYWdlciIsIEJ1aWxkUHJvamVjdENvbW1hbmQuY2xhc3MpOwotCQkKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRDb2RlR2VuT3BlcmF0aW9uLmNsYXNzLCAiUHJveHlCZWFuIiwgQXhpc0NsaWVudE91dHB1dENvbW1hbmQuY2xhc3MsICJQcm94eUJlYW4iLCBudWxsKTsKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRDb2RlR2VuT3BlcmF0aW9uLmNsYXNzLCAiUHJveHlFbmRwb2ludCIsIEF4aXNDbGllbnRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLS8vCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBDbGllbnRFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzKTsKLS8vCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNDbGllbnREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNldEVuZHBvaW50TWV0aG9kIiwgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS8uY2xhc3NwYXRoIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTZkNDlhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjLyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjUiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzI2YzM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotYmluCi1idWlsZC54bWwKLXRlbXAuZm9sZGVyCi13c3MtYXhpcy11aS5qYXIKLUBkb3QKLXNyYy56aXAKLWphdmFDb21waWxlci4uLmFyZ3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWU5M2E5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzZkZDg1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jV2VkIFNlcCAyNiAwNjoyODoyNyBFRFQgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWVuY29kaW5nLzxwcm9qZWN0Pj1JU08tODg1OS0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjM2MjJkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotI1RodSBNYXkgMzEgMTM6MTE6MTYgRURUIDIwMDcKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuNQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hdXRvYm94aW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbXB0eVN0YXRlbWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmllbGRIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsUGFyYW1ldGVyQm91bmQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbGx5QmxvY2tOb3RDb21wbGV0aW5nTm9ybWFsbHk9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5mb3JiaWRkZW5SZWZlcmVuY2U9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaGlkZGVuQ2F0Y2hCbG9jaz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGF0aWJsZU5vbkluaGVyaXRlZEludGVyZmFjZU1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGxldGVFbnVtU3dpdGNoPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmRpcmVjdFN0YXRpY0FjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubG9jYWxWYXJpYWJsZUhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWV0aG9kV2l0aENvbnN0cnVjdG9yTmFtZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdEZXByZWNhdGVkQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ092ZXJyaWRlQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ1NlcmlhbFZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0VmZmVjdEFzc2lnbm1lbnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0ltcGxpY2l0U3RyaW5nQ29udmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vbkV4dGVybmFsaXplZFN0cmluZ0xpdGVyYWw9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm92ZXJyaWRpbmdQYWNrYWdlRGVmYXVsdE1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnBvc3NpYmxlQWNjaWRlbnRhbEJvb2xlYW5Bc3NpZ25tZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zcGVjaWFsUGFyYW1ldGVySGlkaW5nRmllbGQ9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3RhdGljQWNjZXNzUmVjZWl2ZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdXBwcmVzc1dhcm5pbmdzPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3ludGhldGljQWNjZXNzRW11bGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS50eXBlUGFyYW1ldGVySGlkaW5nPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5jaGVja2VkVHlwZU9wZXJhdGlvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuZG9jdW1lbnRlZEVtcHR5QmxvY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuaGFuZGxlZFdhcm5pbmdUb2tlbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5RWxzZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlUeXBlQ2hlY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVucXVhbGlmaWVkRmllbGRBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbldoZW5PdmVycmlkaW5nPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZEltcG9ydD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZExvY2FsPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuSW1wbGVtZW50aW5nQWJzdHJhY3Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbk92ZXJyaWRpbmdDb25jcmV0ZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQcml2YXRlTWVtYmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udmFyYXJnc0FyZ3VtZW50TmVlZENhc3Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGRiYmE3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSNNb24gSmFuIDMwIDEwOjQxOjMwIEVTVCAyMDA2Ci1jb21waWxlcnMucC5kZXByZWNhdGVkPTEKLWNvbXBpbGVycy5wLm5vLXJlcXVpcmVkLWF0dD0wCi1jb21waWxlcnMucC5ub3QtZXh0ZXJuYWxpemVkLWF0dD0xCi1jb21waWxlcnMucC51bmtub3duLWF0dHJpYnV0ZT0wCi1jb21waWxlcnMucC51bmtub3duLWNsYXNzPTAKLWNvbXBpbGVycy5wLnVua25vd24tZWxlbWVudD0xCi1jb21waWxlcnMucC51bmtub3duLXJlc291cmNlPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtZXgtcG9pbnRzPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtaW1wb3J0PTAKLWNvbXBpbGVycy51c2UtcHJvamVjdD10cnVlCi1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NjVlODguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVQTFVHSU5fTkFNRQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWk7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC40MDYucXVhbGlmaWVyCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUF4aXNDcmVhdGlvblVJUGx1Z2luCi1CdW5kbGUtVmVuZG9yOiAlUExVR0lOX1BST1ZJREVSCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLUV4cG9ydC1QYWNrYWdlOiBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQ7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5wbHVnaW47eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS50YXNrO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2lkZ2V0cy5iZWFuO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2lkZ2V0cy5za2VsZXRvbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpemFyZC5iZWFuczt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpemFyZC53c2RsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud3NydDt4LWludGVybmFsOj10cnVlCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UudWk7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpLmlkZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmVtZi5lY29yZTtidW5kbGUtdmVyc2lvbj0iWzIuMi4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamVtO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5qZW0ud29ya2JlbmNoO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMCwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cztidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWk7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qc3Qud3MudWk7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmplbS53b3JrYmVuY2g7YnVuZGxlLXZlcnNpb249IlsyLjAuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWk7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMiwyLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53cztidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LmoyZWUuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LmoyZWUud2ViO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBqYXZheC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS41LjAsMS42LjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuY29tbW9uLmZyYW1ld29ya3M7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLmplbS51dGlsO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3M7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQ7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuZGVidWcuY29yZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamR0LmNvcmU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS4yLjAsMS4zLjApIgotRWNsaXBzZS1MYXp5U3RhcnQ6IHRydWUKLUJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9hYm91dC5odG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9idWlsZC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTFmZWUwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotc291cmNlLi4gPSBzcmMvCi1iaW4uaW5jbHVkZXMgPSAuLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIGRlcGxveS54c2wsXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9kZXBsb3kueHNsIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9kZXBsb3kueHNsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmRmMTY0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvZGVwbG95LnhzbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCi0gICAgdmVyc2lvbj0iMS4wIgotICAgIHhtbG5zOnhhbGFuPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveHNsdCIKLSAgICB4bWxuczpuczE9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy9heGlzL3dzZGQvIgotICAgIHhtbG5zOmphdmE9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy9heGlzL3dzZGQvcHJvdmlkZXJzL2phdmEiPgotICAgIDx4c2w6b3V0cHV0IG1ldGhvZD0ieG1sIiBlbmNvZGluZz0iVVRGLTgiLz4KLSAgCi0gICA8eHNsOnBhcmFtIG5hbWU9Im5ld0NsYXNzTmFtZSIgc2VsZWN0PSJzcyIvPgotICAgCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iL25zMTpkZXBsb3ltZW50L25zMTpzZXJ2aWNlL25zMTpwYXJhbWV0ZXJbQG5hbWU9J2NsYXNzTmFtZSddIj4KLSAgICA8eHNsOmNvcHk+Ci0gICAgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0ibmFtZSI+Y2xhc3NOYW1lPC94c2w6YXR0cmlidXRlPgotICAgICAgIAkgPHhzbDphdHRyaWJ1dGUgbmFtZT0idmFsdWUiPiAJCi0gIAkJCTx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkbmV3Q2xhc3NOYW1lIi8+ICAJIAkKLSAgICAgICAJIDwveHNsOmF0dHJpYnV0ZT4KLSAgICAgICAJPHhzbDphcHBseS10ZW1wbGF0ZXMvPgotICAgICAgIAk8L3hzbDpjb3B5PgotICAgIDwveHNsOnRlbXBsYXRlPgotICAgIAotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9IkAqfG5vZGUoKSI+Ci0gICAgCTx4c2w6Y29weT4KLSAgICAJCTx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iQCp8bm9kZSgpIi8+Ci0gICAgCTwveHNsOmNvcHk+Ci0gICAgPC94c2w6dGVtcGxhdGU+Ci08L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9wbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYWEwYmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBNZXNzYWdlcyBpbiBwbHVnaW4ueG1sLgotIwotUExVR0lOX05BTUU9V2Vic2VydmljZSBBeGlzIENyZWF0aW9uIFVJCi1QTFVHSU5fUFJPVklERVI9RWNsaXBzZS5vcmcKLQotTEFCRUxfUlVOVElNRV9BWElTXzExPUFwYWNoZSBBeGlzCi1ERVNDX1JVTlRJTUVfQVhJU18xMT1BcGFjaGUgQXhpcwotCi0jCi0jV1NXU0RMQXhpc1R5cGUKLSMKLVdTX05BTUVfV1NETEFYSVM9U2tlbGV0b24gSmF2YSBiZWFuIEF4aXMgV2ViIHNlcnZpY2UKLQotIwotI1dTQmVhbkF4aXNUeXBlCi0jCi1XU19OQU1FX0JFQU5BWElTPUphdmEgYmVhbiBBeGlzIFdlYiBzZXJ2aWNlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3BsdWdpbi54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZTlhNjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci0KLTxwbHVnaW4+Ci0gICAKLSAgIDwhLS0gU2VydmVyIERlZmF1bHRlcnMgLS0+Ci0gICAKLSAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5zZXJ2ZXJEZWZhdWx0ZXIiPgotICAgICAgPHNlcnZlckRlZmF1bHRlcgotICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuQXhpc1NlcnZlckRlZmF1bHRlciI+Ci0gICAgICA8L3NlcnZlckRlZmF1bHRlcj4KLSAgIDwvZXh0ZW5zaW9uPgotICAgCi0gICA8IS0tCi0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2ViU2VydmljZVJ1bnRpbWUiPgotICAJPHdlYlNlcnZpY2VSdW50aW1lCi0gICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLmF4aXNXZWJTZXJ2aWNlUlQiCi0gICAgbGFiZWw9IiVMQUJFTF9SVU5USU1FX0FYSVNfMTEiCi0gICAgc2VydmljZVR5cGVzPSJvcmcuZWNsaXBzZS5qc3Qud3Muc2VydmljZVR5cGUuamF2YSIKLSAgICBjbGllbnRUeXBlcz0ib3JnLmVjbGlwc2UuanN0LndzLmNsaWVudFR5cGUuamF2YS53ZWJPbmx5IgotICAgIHNlcnZsZXRMZXZlbHM9IjIzIDI0IgotICAgIGoyZWVMZXZlbHM9IjEzIDE0IgotICAgIHNlcnZlcnM9Im9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjQwIG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjQxIG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwIG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjU1IG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuZ2Vyb25pbW8uMTAiCi0gICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndzcnQuQXhpc1dlYlNlcnZpY2VSdW50aW1lIj4KLSAgCTwvd2ViU2VydmljZVJ1bnRpbWU+Ci0JPC9leHRlbnNpb24+IAotICAgLS0+Ci0gICAKLQk8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0UmVnaXN0cnkiPgotICAgICAgIDx3aWRnZXRGYWN0b3J5ICAgCi0gICAgICAgICAgICAgaWQ9IkF4aXNCZWFuQ29uZmlnIgotICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1hbmRJZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkudGFzay5CVUNvbmZpZ0NvbW1hbmQiCi0gICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndzcnQuQXhpc0JlYW5Db25maWdXaWRnZXRGYWN0b3J5Ii8+Ci0gICAgPC9leHRlbnNpb24+IAotICAgIAotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRSZWdpc3RyeSI+Ci0gICAgICAgPHdpZGdldEZhY3RvcnkgICAKLSAgICAgICAgICAgICBpZD0iQXhpc1NrZWxldG9uQ29uZmlnIgotICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1hbmRJZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkudGFzay5URENvbmZpZ0NvbW1hbmQiCi0gICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndzcnQuQXhpc1NrZWxldG9uQ29uZmlnV2lkZ2V0RmFjdG9yeSIvPgotICAgIDwvZXh0ZW5zaW9uPiAKLSAgICAKLSAgICA8IS0tIE05IGV4dGVuc2lvbnMgLS0+Ci0gICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLnJ1bnRpbWVzIj4KLSAgICAgIDxydW50aW1lCi0gICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi5heGlzV2ViU2VydmljZVJUIgotICAgICAgICBsYWJlbD0iJUxBQkVMX1JVTlRJTUVfQVhJU18xMSIKLSAgICAgICAgc2VydmVyUmVxdWlyZWQ9ImZhbHNlIi8+Ci0gICAgPC9leHRlbnNpb24+Ci0KLSAgICA8IS0tIGRlZmluZSBzdXBwb3J0IGZvciBBeGlzIEphdmEgYmVhbiBib3R0b20gdXAgYW5kIHRvcC1kb3duIHN1cHBvcnQgaW4gd2ViIHByb2plY3RzIC0tPgotICAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5zZXJ2aWNlUnVudGltZXMiPgotICAgICAgPHNlcnZpY2VSdW50aW1lCi0gICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi5qYXZhIgotICAgICAgICBzZXJ2aWNlSW1wbGVtZW50YXRpb25UeXBlSWQ9Im9yZy5lY2xpcHNlLmpzdC53cy53c0ltcGwuamF2YSIKLSAgICAgICAgcnVudGltZUlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi5heGlzV2ViU2VydmljZVJUIgotICAgICAgICBydW50aW1lQ2hlY2tlcj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud3NydC5BeGlzV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyIgotICAgICAgICBib3R0b21VcD0idHJ1ZSIKLSAgICAgICAgdG9wRG93bj0idHJ1ZSIKLSAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndzcnQuQXhpc1dlYlNlcnZpY2VSdW50aW1lIj4KLQotICAgICAgICA8cmVxdWlyZWQtZmFjZXQtdmVyc2lvbiBmYWNldD0ianN0LndlYiIgdmVyc2lvbj0iMi4zIiBhbGxvdy1uZXdlcj0idHJ1ZSIvPgotCi0gICAgICA8L3NlcnZpY2VSdW50aW1lPgotICAgIDwvZXh0ZW5zaW9uPiAgIAotCi0gICAgPCEtLSBkZWZpbmUgc3VwcG9ydCBmb3IgQXhpcyBKYXZhIGNsaWVudHMgaW4gSmF2YSBwcm9qZWN0cyAtLT4KLSAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuY2xpZW50UnVudGltZXMiPgotICAgICAgPGNsaWVudFJ1bnRpbWUKLSAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmphdmEiCi0gICAgICAgIGNsaWVudEltcGxlbWVudGF0aW9uVHlwZUlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY2xpZW50LnR5cGUuamF2YSIKLSAgICAgICAgcnVudGltZUlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi5heGlzV2ViU2VydmljZVJUIgotICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud3NydC5BeGlzV2ViU2VydmljZVJ1bnRpbWUiPgotCi0gICAgICAgIDxyZXF1aXJlZC1mYWNldC12ZXJzaW9uIGZhY2V0PSJqc3QudXRpbGl0eSIgdmVyc2lvbj0iMS4wIiBhbGxvdy1uZXdlcj0idHJ1ZSIvPgotCi0gICAgICA8L2NsaWVudFJ1bnRpbWU+Ci0gICAgPC9leHRlbnNpb24+ICAgIAotICAgIAotICAgIDwhLS0gZGVmaW5lIHN1cHBvcnQgZm9yIEF4aXMgSmF2YSBjbGllbnRzIGluIFdlYiBwcm9qZWN0cyAtLT4KLSAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuY2xpZW50UnVudGltZXMiPgotICAgICAgPGNsaWVudFJ1bnRpbWUKLSAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLndlYiIKLSAgICAgICAgY2xpZW50SW1wbGVtZW50YXRpb25UeXBlSWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jbGllbnQudHlwZS5qYXZhIgotICAgICAgICBydW50aW1lSWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLmF4aXNXZWJTZXJ2aWNlUlQiCi0gICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS53c3J0LkF4aXNXZWJTZXJ2aWNlUnVudGltZSI+Ci0KLSAgICAgICAgPHJlcXVpcmVkLWZhY2V0LXZlcnNpb24gZmFjZXQ9ImpzdC53ZWIiIHZlcnNpb249IjIuMyIgYWxsb3ctbmV3ZXI9InRydWUiLz4KLQotICAgICAgPC9jbGllbnRSdW50aW1lPgotICAgIDwvZXh0ZW5zaW9uPiAgICAgICAgCi0gICAgCi0gICAgPCEtLSBleHRlbmQgV2ViU2VydmljZVNhbXBsZVRlc3QgdG8gc3VwcG9ydCB0aGUgQXhpcyBjbGllbnQgcnVudGltZXMgLS0+Ci0gICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLnRlc3RlciI+Ci0gICAgICA8dGVzdGVyCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5XZWJTZXJ2aWNlU2FtcGxlVGVzdCIKLSAgICAgICAgIHN1cHBvcnRlZENsaWVudFJ1bnRpbWVzPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi53ZWIgb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uamF2YSI+Ci0gICAgICA8L3Rlc3Rlcj4KLSAgICA8L2V4dGVuc2lvbj4KLSAgICAKLSAgICAgIDxleHRlbnNpb24KLSAgICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5hbnREYXRhTWFwcGluZyI+Ci0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJJbml0aWFsU2VsZWN0aW9uIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLnRhc2suRGVmYXVsdHNGb3JTZXJ2ZXJKYXZhV1NETENvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJPYmplY3RTZWxlY3Rpb24iCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyU2VsZWN0aW9uVHJhbnNmb3JtZXIiLz4KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkphdmFPdXRwdXQiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuY29tbWFuZC5CVUNvZGVHZW5PcGVyYXRpb24iCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJKYXZhV1NETFBhcmFtIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1Nb2RpZmllciIvPgotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iTWFwcGluZ3MiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuY29tbWFuZC5CVUNvZGVHZW5PcGVyYXRpb24iCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJKYXZhV1NETFBhcmFtIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1Nb2RpZmllciIvPgotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iTWV0aG9kcyIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLkJVQ29kZUdlbk9wZXJhdGlvbiIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IkphdmFXU0RMUGFyYW0iCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbU1vZGlmaWVyIi8+Ci0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJTdHlsZSIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLkJVQ29kZUdlbk9wZXJhdGlvbiIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IkphdmFXU0RMUGFyYW0iCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbU1vZGlmaWVyIi8+Ci0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJVc2UiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuY29tbWFuZC5CVUNvZGVHZW5PcGVyYXRpb24iCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJKYXZhV1NETFBhcmFtIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1Nb2RpZmllciIvPiAgIAotICAgICAgIAotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iSmF2YU91dHB1dCIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLlREQ29kZUdlbk9wZXJhdGlvbiIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IkphdmFXU0RMUGFyYW0iCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbU1vZGlmaWVyIi8+Ci0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJNYXBwaW5ncyIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLlREQ29kZUdlbk9wZXJhdGlvbiIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IkphdmFXU0RMUGFyYW0iCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbU1vZGlmaWVyIi8+ICAgCi0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJNZXRob2RzIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuVERDb2RlR2VuT3BlcmF0aW9uIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iSmF2YVdTRExQYXJhbSIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtTW9kaWZpZXIiLz4gICAKLQkJPG1hcAotICAgICAgICAgICAgICBrZXk9IlN0eWxlIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuVERDb2RlR2VuT3BlcmF0aW9uIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iSmF2YVdTRExQYXJhbSIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtTW9kaWZpZXIiLz4gICAKLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IlVzZSIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLlREQ29kZUdlbk9wZXJhdGlvbiIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IkphdmFXU0RMUGFyYW0iCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbU1vZGlmaWVyIi8+ICAgCi0gIDwvZXh0ZW5zaW9uPiAKLQotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvQXhpc0NyZWF0aW9uVUkucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL0F4aXNDcmVhdGlvblVJLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYjBmNTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvQXhpc0NyZWF0aW9uVUkucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNjAyMTYgICAxMjY5ODkgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotIyAyMDA2MDMyOQkgMTI4ODI3IGthdGh5QGNhLmlibS5jb20gIC0gS2F0aHkgQ2hhbgotIyAyMDA2MDMyOQkgMTI0NjY3IGthdGh5QGNhLmlibS5jb20gIC0gS2F0aHkgQ2hhbgotIyAyMDA2MDYwNyAgIDE0NDk3OCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotIyAyMDA3MDUwOSAgIDE4MjI3NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIE1lc3NhZ2VzIGluIHBsdWdpbi54bWwuCi0jCi0KLSMKLSMgRXJyb3IgbWVzc2FnZXMgdXNlZCBpbiB0aGlzIHBsdWdpbgotIwotTVNHX0VSUk9SX1BST0pFQ1RfVVJMPUlXQUIwNTE0RSBVbmFibGUgdG8gZ2V0IFVSTCBmb3IgcHJvamVjdCB7MH0KLU1TR19FUlJPUl9DQU5OT1RfTk9fSkFWQV9CRUFOPUlXQUIwMDE1RSBBIEphdmEgYmVhbiB3YXMgbm90IHNlbGVjdGVkCi1NU0dfRVJST1JfTk9fUFJPSkVDVD1JV0FCMDAxNkUgQSBwcm9qZWN0IHdhcyBub3Qgc2VsZWN0ZWQKLU1TR19FUlJPUl9DQU5OT1RfTE9BRF9KQVZBX0JFQU49SVdBQjAwMTdFIFRoZSBKYXZhIGJlYW4sIHswfSwgY2Fubm90IGJlIGxvYWRlZCBmcm9tIHsxfQotTVNHX0VSUk9SX0pBVkFfTU9GX1JFRkxFQ1RfRkFJTEVEPUlXQUIwNTIxRSBGYWlsZWQgdG8gYW5hbHl6ZSB0aGUgSmF2YSBiZWFuOiB7MH0uCi1NU0dfRVJST1JfUkVBRF9CRUFOPUlXQUIwNTIyRSBFcnJvciBpbiByZWFkaW5nIG1ldGhvZHMgZnJvbSBKYXZhIGJlYW4uCi1NU0dfRVJST1JfVVBEQVRFX0FYSVNfV1NERD1JV0FCMDUyNEUgRXJyb3IgdXBkYXRpbmcgQXhpcyBkZXBsb3kud3NkZCBmaWxlCi0KLSMKLSNKYXZhVG9XU0RMTWV0aG9kQ29tbWFuZAotIwotTVNHX0VSUk9SX0pBVkFfVE9fTUVUSE9EPUlXQUIwMDE5RSBFcnJvciBpbiBnZXR0aW5nIG1ldGhvZCBmcm9tIEphdmEgYmVhbi4KLQotIwotI1VwZGF0ZVdFQlhNTENvbW1hbmQKLSMKLU1TR19FUlJPUl9VUERBVEVfV0VCX1hNTD1JV0FCMDAyMEUgRXJyb3IgaW4gYWRkaW5nIHNlcnZsZXQgaW4gd2ViLnhtbC4KLQotIwotI1VwZGF0ZUF4aXNXU0RERmlsZVRhc2sKLSMKLU1TR19QTFVHSU5fRklMRV9VUkw9UHJvYmxlbSBsb2NhdGluZyBwbHVnaW4gZmlsZQotCi0jCi0jV2ViU2VydmljZVdTRExBeGlzU2VsZWN0aW9uUGFnZQotIwotUEFHRV9NU0dfTk9fRklMRV9TUEVDSUZJRUQ9Tm8gZmlsZSBzcGVjaWZpZWQuCi1QQUdFX01TR19OT19NRVRIT0RfU0VMRUNURUQ9Tm8gbWV0aG9kcyBzZWxlY3RlZC4KLQotIwotI1dlYlNlcnZpY2VTa2VsZXRvbkF4aXNDb25maWdQYWdlCi0jCi1UT09MVElQX1BCU0NfUEFHRT0KLVRPT0xUSVBfUEJDRl9URVhUX1VSST1UaGUgU09BUCBib2R5IG5hbWVzcGFjZSBhbmQgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIFdlYiBzZXJ2aWNlLgotVE9PTFRJUF9QQkNGX1RFWFRfV1NETF9GT0xERVI9VGhlIGZvbGRlciBvZiB0aGUgV1NETCBmaWxlLgotVE9PTFRJUF9QQkNGX1RFWFRfV1NETF9GSUxFPVRoZSBuYW1lIG9mIHRoZSBXU0RMIGZpbGUuCi1MQUJFTF9VUkk9V2ViIHNlcnZpY2UgVVJJOgotTEFCRUxfT1VUUFVUX0ZPTERFUl9OQU1FPVdTREwgZm9sZGVyOgotTEFCRUxfT1VUUFVUX0ZJTEVfTkFNRT1XU0RMIGZpbGU6Ci0KLSMKLSNXZWJTZXJ2aWNlQXhpc0JlYW5DbGFzc1BhZ2UKLSMKLVBBR0VfVElUTEVfV1NCRUFOX0NMQVNTPVdlYiBTZXJ2aWNlIEphdmEgQmVhbiBTZWxlY3Rpb24KLVBBR0VfREVTQ19XU0JFQU5fQ0xBU1M9U2VsZWN0IGEgSmF2YSBiZWFuCi1MQUJFTF9FWFBMT1JFX01BUFBJTkdTX0JFQU4yWE1MPURlZmluZSBjdXN0b20gbWFwcGluZyBmb3IgcGFja2FnZSB0byBuYW1lc3BhY2UuCi1UT09MVElQX1AyTl9TSE9XX01BUFBJTkdTPURlZmluZSBwYWNrYWdlIHRvIG5hbWVzcGFjZSBtYXBwaW5nIGZvciBjdXN0b21pemF0aW9uLgotCi0jCi0jV2ViU2VydmljZUF4aXNCZWFuQ29uZmlnUGFnZQotIwotVE9PTFRJUF9QQkNGX1BBR0U9Ci1UT09MVElQX1BCTUVfVFJFRV9NRVRIT0RTPUphdmEgYmVhbiBtZXRob2RzIHRvIGluY2x1ZGUuCi1QQUdFX1RJVExFX1dTQkVBTl9DT05GSUc9V2ViIFNlcnZpY2UgSmF2YSBCZWFuIElkZW50aXR5Ci1QQUdFX0RFU0NfV1NCRUFOX0NPTkZJRz1Db25maWd1cmUgdGhlIEphdmEgYmVhbiBhcyBhIFdlYiBzZXJ2aWNlLgotTEFCRUxfU1RZTEVfVVNFPVN0eWxlIGFuZCB1c2UKLVNUWUxFX1JQQ19MSVRFUkFMPWRvY3VtZW50L2xpdGVyYWwKLVNUWUxFX0RPQ19MSVRFUkFMPWRvY3VtZW50L2xpdGVyYWwgKHdyYXBwZWQpCi1TVFlMRV9SUENfRU5DT0RFRD1SUEMvZW5jb2RlZAotCi0jCi0jIEF4aXNDaGVja0NvbXBpbGVyTGV2ZWxDb21tYW5kCi0jCi1NU0dfRVJST1JfQ09NUElMRVJfTEVWRUxfTk9UX0NPTVBBVElCTEU9VGhlIHdvcmtiZW5jaCBpcyBydW5uaW5nIG9uIEphdmEgVk0gdmVyc2lvbiB7MH0sIGhvd2V2ZXIsIHRoZSBjb21waWxlciBjb21wbGlhbmNlIGxldmVsIG9mIFwKLXRoZSBwcm9qZWN0ICJ7MX0iIGlzIHNldCB0byBKYXZhIHZlcnNpb24gezJ9LiAgXAotR2VuZXJhdGlvbiBvZiBhIFdlYiBzZXJ2aWNlIGZyb20gSmF2YSBjYW5ub3QgcHJvY2VlZCBiZWNhdXNlIHRoZSB0b29scyB3aWxsIGJlIHVuYWJsZSB0byBwcm9jZXNzIHRoZSBjbGFzcyBmaWxlIGNvbXBpbGVkIHdpdGhpbiB0aGUgcHJvamVjdC4gIFwKLVRvIGNvcnJlY3QgdGhlIHByb2JsZW0sIHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgYWN0aW9uczogXAotXG4xLiBPcGVuIHByb2plY3QgcHJvcGVydGllcywgc2VsZWN0IFByb2plY3QgRmFjZXRzLCBhbmQgdXNlIEFkZC9SZW1vdmUgUHJvamVjdCBGYWNldCB0byBjaGFuZ2UgSmF2YSB2ZXJzaW9uIHRvIHswfSBvciBsb3dlci5cCi1cbjIuIFJlc3RhcnQgdGhlIHdvcmtiZW5jaCBvbiBhIHZlcnNpb24gezJ9IEphdmEgVk0uCi0KLSMKLSMgTW9kaWZ5V1NETEVuZHBvaW50QWRkcmVzc0NvbW1hbmQKLSMKLU1TR19FUlJPUl9NT0RJRllfRU5EUE9JTlQ9RXJyb3IgaW4gbW9kaWZ5aW5nIHRoZSBzb2FwOmFkZHJlc3MgbG9jYXRpb24gVVJJIGZvciBXU0RMIGZpbGUgezB9LgotCi0jCi0jIE1lc3NhZ2VzIGZvciBWYWxpZGF0ZVdTSUNvbXBsaWFuY2VDb21tYW5kCi0jCi1XU0lfSU5DT01QTElBTkNFX1JQQ19FTkNPREVEPVJQQyBFbmNvZGVkIGlzIHNlbGVjdGVkCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL0F4aXNDcmVhdGlvblVJTWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL0F4aXNDcmVhdGlvblVJTWVzc2FnZXMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAzN2VhYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9BeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMjkJIDEyODgyNyBrYXRoeUBjYS5pYm0uY29tICAtIEthdGh5IENoYW4KLSAqIDIwMDYwMzI5CSAxMjQ2Njcga2F0aHlAY2EuaWJtLmNvbSAgLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDYwNyAgMTQ0OTc4IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MDUwOSAgIDE4MjI3NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLQotcHVibGljIGZpbmFsIGNsYXNzIEF4aXNDcmVhdGlvblVJTWVzc2FnZXMgZXh0ZW5kcyBOTFMgewotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLkF4aXNDcmVhdGlvblVJIjsvLyROT04tTkxTLTEkCi0KLQlwcml2YXRlIEF4aXNDcmVhdGlvblVJTWVzc2FnZXMoKSB7Ci0JCS8vIERvIG5vdCBpbnN0YW50aWF0ZQotCX0KLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9QUk9KRUNUX1VSTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQ0FOTk9UX05PX0pBVkFfQkVBTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfTk9fUFJPSkVDVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQ0FOTk9UX0xPQURfSkFWQV9CRUFOOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9KQVZBX01PRl9SRUZMRUNUX0ZBSUxFRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfUkVBRF9CRUFOOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9VUERBVEVfQVhJU19XU0REOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9KQVZBX1RPX01FVEhPRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfVVBEQVRFX1dFQl9YTUw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1BMVUdJTl9GSUxFX1VSTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX01TR19OT19GSUxFX1NQRUNJRklFRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX01TR19OT19NRVRIT0RfU0VMRUNURUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QQlNDX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QQkNGX1RFWFRfVVJJOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUEJDRl9URVhUX1dTRExfRk9MREVSOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUEJDRl9URVhUX1dTRExfRklMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9VUkk7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfT1VUUFVUX0ZPTERFUl9OQU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX09VVFBVVF9GSUxFX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9USVRMRV9XU0JFQU5fQ0xBU1M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX1dTQkVBTl9DTEFTUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9FWFBMT1JFX01BUFBJTkdTX0JFQU4yWE1MOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUDJOX1NIT1dfTUFQUElOR1M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QQkNGX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QQk1FX1RSRUVfTUVUSE9EUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1dTQkVBTl9DT05GSUc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX1dTQkVBTl9DT05GSUc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfU1RZTEVfVVNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFNUWUxFX1JQQ19MSVRFUkFMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFNUWUxFX0RPQ19MSVRFUkFMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFNUWUxFX1JQQ19FTkNPREVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9DT01QSUxFUl9MRVZFTF9OT1RfQ09NUEFUSUJMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfTU9ESUZZX0VORFBPSU5UOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTSV9JTkNPTVBMSUFOQ0VfUlBDX0VOQ09ERUQ7Ci0KLQlzdGF0aWMgewotCQlOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLmNsYXNzKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0F4aXNDaGVja0NvbXBpbGVyTGV2ZWxDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0F4aXNDaGVja0NvbXBpbGVyTGV2ZWxDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MzYzZWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9BeGlzQ2hlY2tDb21waWxlckxldmVsQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JSmF2YVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YUNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLkF4aXNDcmVhdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotLyoqCi0gKiBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBzZXJ2aWNlIGJlYW4gaXMgbm90IGF0IGEgY29tcGlsZXIgY29tcGxpYW5jZSBzZXR0aW5nCi0gKiB0aGF0J3MgaGlnaGVyIHRoYW4gdGhlIEphdmEgVk0gdGhlIHdvcmtiZW5jaCBpcyBsYXVuY2hlZCB3aXRoLiAKLSAqLwotcHVibGljIGNsYXNzIEF4aXNDaGVja0NvbXBpbGVyTGV2ZWxDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gewotCi0JcHJpdmF0ZSBTdHJpbmcgc2VydmVyUHJvamVjdF87Ci0KLQkvKioKLQkgKiBEZWZhdWx0IENUT1IKLQkgKi8KLQlwdWJsaWMgQXhpc0NoZWNrQ29tcGlsZXJMZXZlbENvbW1hbmQoKSB7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5vcGVyYXRpb25zLklVbmRvYWJsZU9wZXJhdGlvbiNleGVjdXRlKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yLCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZSkKLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUpIHsKLQkJCi0JCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQkJU3RyaW5nIGphdmFTcGVjVmVyc2lvbiA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS5zcGVjaWZpY2F0aW9uLnZlcnNpb24iKTsKLQkJaWYgKGphdmFTcGVjVmVyc2lvbiAhPSBudWxsKQotCQl7Ci0JCQlJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHNlcnZlclByb2plY3RfKTsKLQkJCUlKYXZhUHJvamVjdCBqYXZhUHJvamVjdCA9IEphdmFDb3JlLmNyZWF0ZShwcm9qZWN0KTsgICAgCi0JCQlpZiAoamF2YVByb2plY3QgIT0gbnVsbCkKLQkJCXsKLQkJCQlTdHJpbmcgcHJvamVjdENvbXBpbGVyTGV2ZWwgPSBqYXZhUHJvamVjdC5nZXRPcHRpb24oIm9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2UiLCBmYWxzZSk7Ci0JCQkJaWYgKHByb2plY3RDb21waWxlckxldmVsID09IG51bGwpCi0JCQkJewotCQkJCQlwcm9qZWN0Q29tcGlsZXJMZXZlbCA9IChTdHJpbmcpSmF2YUNvcmUuZ2V0RGVmYXVsdE9wdGlvbnMoKS5nZXQoIm9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2UiKTsKLQkJCQl9Ci0JCQkJaWYgKHByb2plY3RDb21waWxlckxldmVsICE9IG51bGwpCi0JCQkJewotCQkJCQlpZiAoIWNvbXBpbGVyTGV2ZWxzQ29tcGF0aWJsZShqYXZhU3BlY1ZlcnNpb24sIHByb2plY3RDb21waWxlckxldmVsKSkgewotCQkJCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKEF4aXNDcmVhdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX0NPTVBJTEVSX0xFVkVMX05PVF9DT01QQVRJQkxFLCBuZXcgU3RyaW5nW10ge2phdmFTcGVjVmVyc2lvbiwgc2VydmVyUHJvamVjdF8sIHByb2plY3RDb21waWxlckxldmVsfSkpOwotCQkJCQkJZ2V0RW52aXJvbm1lbnQoKS5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCQkJfQkJCQotCQkJCX0gCQotCQkJfQotCQl9Ci0JCXJldHVybiBzdGF0dXM7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZSBKYXZhIHNwZWNpZmljYXRpb24gbGV2ZWwKLQkgKiBvZiB0aGUgRWNsaXBzZSBKUkUgKDxjb2RlPmphdmFTcGVjVmVyc2lvbjwvY29kZT4gaXMgbm90Ci0JICogbG93ZXIgdGhhbiB0aGUgSmF2YSBzcGVjaWZpY2F0aW9uIGxldmVsIG9mIHRoZSBjb21waWxlcgotCSAqICg8Y29kZT5wcm9qZWN0Q29tcGlsZXJMZXZlbDwvY29kZT4uIAotCSAqIEBwYXJhbSBqYXZhU3BlY1ZlcnNpb24gVGhlIEphdmEgU3BlY2lmaWNhdGlvbiBWZXJzaW9uIG9mIHRoZSBKUkUuCi0JICogQHBhcmFtIHByb2plY3RDb21waWxlckxldmVsIFRoZSBKYXZhIHByb2plY3QncyBjb21waWxlciBsZXZlbC4KLQkgKiBAcmV0dXJuIFRydWUgaWYgdGhlIEphdmEgc3BlY2lmaWNhdGlvbiBsZXZlbCBvZiB0aGUgcHJvamVjdCdzCi0JICogY29tcGlsZXIgZG9lcyBub3QgZXhjZWVkIHRoZSBKYXZhIHNwZWNpZmljYXRpb24gbGV2ZWwgb2YgdGhlCi0JICogSlJFIHRoYXQgRWNsaXBzZSBpcyBydW5uaW5nIG9uLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgotCSAqLwotCXByaXZhdGUgYm9vbGVhbiBjb21waWxlckxldmVsc0NvbXBhdGlibGUoU3RyaW5nIGphdmFTcGVjVmVyc2lvbiwgU3RyaW5nIHByb2plY3RDb21waWxlckxldmVsKSB7Ci0JCXJldHVybiAoamF2YVNwZWNWZXJzaW9uLmNvbXBhcmVUbyhwcm9qZWN0Q29tcGlsZXJMZXZlbCkgPj0gMCk7Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgcHJvamVjdCB3aG9zZSBjb21waWxlciBsZXZlbCBzaG91bGQgYmUgY2hlY2tlZC4KLQkgKiBAcGFyYW0gc2VydmVyUHJvamVjdCBUaGUgcHJvamVjdCB3aG9zZSBjb21waWxlciBsZXZlbCBzaG91bGQgYmUgY2hlY2tlZC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJQcm9qZWN0KFN0cmluZyBzZXJ2ZXJQcm9qZWN0KSB7Ci0JCXNlcnZlclByb2plY3RfID0gc2VydmVyUHJvamVjdDsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0F4aXNPdXRwdXRDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0F4aXNPdXRwdXRDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NmRhM2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9BeGlzT3V0cHV0Q29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndzcnQuQXhpc1dlYlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud3NydC5BeGlzV2ViU2VydmljZUluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotCi1wdWJsaWMgY2xhc3MgQXhpc091dHB1dENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiB7Ci0KLQlwcml2YXRlIEF4aXNXZWJTZXJ2aWNlIHdzXzsKLQlwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW1fOwotCi0JcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICB3c2RsVVJJXzsKLQkgIAkgIAotCQkvKioKLQkJKiBEZWZhdWx0IENUT1IKLQkJKi8KLQkJcHVibGljIEF4aXNPdXRwdXRDb21tYW5kKCkgewotCQl9Ci0JCQotCQlwdWJsaWMgQXhpc091dHB1dENvbW1hbmQoQXhpc1dlYlNlcnZpY2Ugd3MpIHsKLQkJCXdzXyA9IHdzOwotCQl9Ci0JCQotCQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkgCi0JCXsKLQkJICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOyAgCQotCQkgIAl3c18uZ2V0V2ViU2VydmljZUluZm8oKS5zZXRXc2RsVVJMKHdzZGxVUklfKTsKLQkJCUF4aXNXZWJTZXJ2aWNlSW5mbyBheGlzV1NJbmZvID0gbmV3IEF4aXNXZWJTZXJ2aWNlSW5mbygpOwotCQkJYXhpc1dTSW5mby5zZXRKYXZhV1NETFBhcmFtZXRlcihqYXZhV1NETFBhcmFtXyk7Ci0JCQl3c18uc2V0QXhpc1dlYlNlcnZpY2VJbmZvKGF4aXNXU0luZm8pOwkJICAgIAotCQkgIAkKLQkJICAJcmV0dXJuIHN0YXR1czsgICAgICAJCi0JCSAgfQotCi0JCSAgLyoqCi0JCSAgICogQHBhcmFtIHdzZGxVUkkKLQkJICAgKiAgICAgICAgICAgIFRoZSB3c2RsVVJJIHRvIHNldC4KLQkJICAgKi8KLQkJICBwdWJsaWMgdm9pZCBzZXRXc2RsVVJJKFN0cmluZyB3c2RsVVJJKQotCQkgIHsKLQkJICAgIHdzZGxVUklfID0gd3NkbFVSSTsKLQkJICB9Ci0KLQkJcHVibGljIHZvaWQgc2V0SmF2YVdTRExQYXJhbSAoSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbV8pIHsKLQkJCXRoaXMuamF2YVdTRExQYXJhbV8gPSBqYXZhV1NETFBhcmFtXzsKLQkJfQotCQkgIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9BeGlzUnVuSW5wdXRDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0F4aXNSdW5JbnB1dENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk2NzQ4MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0F4aXNSdW5JbnB1dENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMzMCAgIDEyNDY2NyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndzcnQuQXhpc1dlYlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotcHVibGljIGNsYXNzIEF4aXNSdW5JbnB1dENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbnsKLQkKLQlwcml2YXRlIEF4aXNXZWJTZXJ2aWNlIHdzXzsKLQlwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW1fOwotCXByaXZhdGUgU3RyaW5nIHNlcnZlclByb2plY3RfOyAKLQlwcml2YXRlIFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkXzsgCi0JcHJpdmF0ZSBTdHJpbmcgc2VydmVyRmFjdG9yeUlkXzsKLQlwcml2YXRlIFN0cmluZyB3c2RsVVJJXzsKLQkKLQlwdWJsaWMgQXhpc1J1bklucHV0Q29tbWFuZCgpIHsKLQl9Ci0JCi0JcHVibGljIEF4aXNSdW5JbnB1dENvbW1hbmQoQXhpc1dlYlNlcnZpY2Ugd3MsIFN0cmluZyBwcm9qZWN0KSB7Ci0JCXdzXyA9IHdzOwotCQlzZXJ2ZXJQcm9qZWN0XyA9IHByb2plY3Q7IAotCX0KLQkKLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkgCi0JewotCSAJamF2YVdTRExQYXJhbV8gPSB3c18uZ2V0QXhpc1dlYlNlcnZpY2VJbmZvKCkuZ2V0SmF2YVdTRExQYXJhbWV0ZXIoKTsKLQkgCXNlcnZlckluc3RhbmNlSWRfID0gd3NfLmdldFdlYlNlcnZpY2VJbmZvKCkuZ2V0U2VydmVySW5zdGFuY2VJZCgpOwotCSAJc2VydmVyRmFjdG9yeUlkXyA9IHdzXy5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldFNlcnZlckZhY3RvcnlJZCgpOwotCSAJd3NkbFVSSV8gPSB3c18uZ2V0V2ViU2VydmljZUluZm8oKS5nZXRXc2RsVVJMKCk7Ci0JCQotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQkgIH0KLQkKLQkgLyoqCi0JICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHNlcnZlclByb2plY3QuCi0JICAgKi8KLQkgIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmVyUHJvamVjdCgpCi0JICB7Ci0JCSAgcmV0dXJuIHNlcnZlclByb2plY3RfOwotCSAgfQotCSAgCi0JcHVibGljIEphdmFXU0RMUGFyYW1ldGVyIGdldEphdmFXU0RMUGFyYW0oKSB7Ci0JCXJldHVybiBqYXZhV1NETFBhcmFtXzsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldFNlcnZlckluc3RhbmNlSWQoKSB7Ci0JCXJldHVybiBzZXJ2ZXJJbnN0YW5jZUlkXzsKLQl9CQotCQotCXB1YmxpYyBTdHJpbmcgZ2V0U2VydmVyRmFjdG9yeUlkKCkgewotCQlyZXR1cm4gc2VydmVyRmFjdG9yeUlkXzsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldFdzZGxVUkkoKSB7Ci0JCXJldHVybiB3c2RsVVJJXzsKLQl9CQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9BeGlzU2VydmVyRGVmYXVsdGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0F4aXNTZXJ2ZXJEZWZhdWx0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM3OGI2Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0F4aXNTZXJ2ZXJEZWZhdWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5JU2VydmVyRGVmYXVsdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uU2VydmVySW5mbzsKLQotCi0KLXB1YmxpYyBjbGFzcyBBeGlzU2VydmVyRGVmYXVsdGVyIGltcGxlbWVudHMgSVNlcnZlckRlZmF1bHRlcgotewotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5JU2VydmVyRGVmYXVsdGVyI3JlY29tbWVuZERlZmF1bHRTZXJ2ZXIob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpCi0gICAqLwotICBwdWJsaWMgU2VydmVySW5mbyByZWNvbW1lbmREZWZhdWx0U2VydmVyKElQcm9qZWN0IHByb2plY3QpCi0gIHsgICAgCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL2NvbW1hbmQvQlVBeGlzSW5wdXRDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0JVQXhpc0lucHV0Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTkzZTJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL2NvbW1hbmQvQlVBeGlzSW5wdXRDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDE5ICAgMTMyOTA1IGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5ICAgICAgICAgIAotICogMjAwNjEwMDQgICAxNTkzNTYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4sIEdldCBjb3JyZWN0IG1vZHVsZSByb290IFVSTCBiYXNlZCBvbiBzZXJ2ZXIgY2hvc2VuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuY29tbWFuZDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb250ZXh0LkF4aXNFbWl0dGVyQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnBsdWdpbi5XZWJTZXJ2aWNlQXhpc0NvbnN1bXB0aW9uQ29yZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSkFYUlBDV2ViU2VydmljZUFuYWx5emVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuU3RhdHVzRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2U7Ci0KLQotcHVibGljIGNsYXNzIEJVQXhpc0lucHV0Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIHsKLQkKLQlwcml2YXRlIElXZWJTZXJ2aWNlIHdzXzsKLQlwcml2YXRlIFN0cmluZyBzZXJ2ZXJQcm9qZWN0XzsgCi0JcHJpdmF0ZSBTdHJpbmcgamF2YUJlYW5OYW1lXzsKLQotCSAgcHJpdmF0ZSBTdHJpbmcgc2VydmljZVNlcnZlclR5cGVJRF87Ci0JICBwcml2YXRlIElTZXJ2ZXIgc2VydmljZUV4aXN0aW5nU2VydmVyXyA9IG51bGw7Ci0JICAKLQkJLyoqCi0JCSogRGVmYXVsdCBDVE9SCi0JCSovCi0JCXB1YmxpYyBCVUF4aXNJbnB1dENvbW1hbmQoKSB7Ci0JCX0KLQkJCi0JCXB1YmxpYyBCVUF4aXNJbnB1dENvbW1hbmQoSVdlYlNlcnZpY2Ugd3MsIFN0cmluZyBwcm9qZWN0KSB7Ci0JCQl3c18gPSB3czsKLQkJCXNlcnZlclByb2plY3RfID0gcHJvamVjdDsgCi0JCX0KLQkJCi0JCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLQkJewotCSAgICAgICAKLQkJU3RyaW5nIHNlcnZlckluc3RhbmNlSWQgPSB3c18uZ2V0V2ViU2VydmljZUluZm8oKS5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCk7Ci0JCVN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQgPSB3c18uZ2V0V2ViU2VydmljZUluZm8oKS5nZXRTZXJ2ZXJGYWN0b3J5SWQoKTsKLQkJamF2YUJlYW5OYW1lXyA9IHdzXy5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldEltcGxVUkwoKTsKLQkJCi0JCS8vIFRoZSBmb2xsb3dpbmcgImlmIiBibG9jayBkcml2ZXMgdmFsaWRhdGlvbiBvZiB0aGUgZ2l2ZW4KLQkJLy8gSmF2YSBzZXJ2aWNlIGNsYXNzIChqYXZhQmVhbk5hbWVfKSBhZ2FpbnN0IEpBWC1SUEMgaWYgdGhlCi0JCS8vIEpBWC1SUEMgdmFsaWRhdGlvbiBwcmVmZXJlbmNlIGlzIHN3aXRjaGVkIG9uLgotCQkvLyBGb3IgdGhlIG1vc3QgcGFydCwgdGhlIEpBWC1SUEMgYW5hbHl6ZXIgcmV0dXJucyB3YXJuaW5ncwotCQkvLyBmb3IgdmlvbGF0aW9ucyBvZiB0aGUgSkFYLVJQQyBzcGVjLCBhbmQgZXJyb3JzIG9ubHkgaWYKLQkJLy8gYWN0dWFsIEpEVCBtb2RlbCBuYXZpZ2F0aW9uIGZhaWxzIGR1ZSB0byBiYWQgY2xhc3NwYXRocy4KLQkJLy8gVGhpcyBhbGxvd3MgdXNlcnMgdGhlIGNob2ljZSBvZiBoZWVkaW5nIG9yIGlnbm9yaW5nIHRoZQotCQkvLyBtZXNzYWdlcyByZXR1cm5lZCBieSB0aGUgYW5hbHl6ZXIuCi0JCUlFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0JCUF4aXNFbWl0dGVyQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZUF4aXNDb25zdW1wdGlvbkNvcmVQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRBeGlzRW1pdHRlckNvbnRleHQoKTsKLQkJaWYgKGphdmFCZWFuTmFtZV8gIT0gbnVsbCAmJiBjb250ZXh0LmlzVmFsaWRhdGVBZ2FpbnN0SkFYUlBDRW5hYmxlZCgpKQotCQl7Ci0JCQlKQVhSUENXZWJTZXJ2aWNlQW5hbHl6ZXIgYW5hbHl6ZXIgPSBuZXcgSkFYUlBDV2ViU2VydmljZUFuYWx5emVyKCk7Ci0JCQlJUHJvamVjdCBwcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KHNlcnZlclByb2plY3RfKTsgCi0JCQlpZiAocHJvamVjdCAhPSBudWxsKQotCQkJewotCQkJCUlTdGF0dXMgc3RhdHVzID0gYW5hbHl6ZXIuYW5hbHl6ZShwcm9qZWN0LGphdmFCZWFuTmFtZV8sbW9uaXRvcik7Ci0JCQkJaWYgKCFzdGF0dXMuaXNPSygpKQotCQkJCXsKLQkJCQkJdHJ5Ci0JCQkJCXsKLQkJCQkJCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzKTsKLQkJCQkJfQotCQkJCQljYXRjaCAoU3RhdHVzRXhjZXB0aW9uIGUpCi0JCQkJCXsKLQkJCQkJCXJldHVybiBuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIm9yZy5lY2xpcHNlLmpzdC53cyIsMCwiIixudWxsKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCQkKLQkJaWYgKHNlcnZlckluc3RhbmNlSWQgIT0gbnVsbCkgeyAvLyBzZXJ2ZXIgZXhpc3RzCi0JICAgIAlzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfID0gU2VydmVyQ29yZS5maW5kU2VydmVyKHNlcnZlckluc3RhbmNlSWQpOwotCQkJaWYgKHNlcnZpY2VFeGlzdGluZ1NlcnZlcl8gIT0gbnVsbCkKLQkJICAgIHsKLQkJICAgICAgc2VydmljZVNlcnZlclR5cGVJRF8gPSBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfLmdldFNlcnZlclR5cGUoKS5nZXRJZCgpOwotCQkgICAgfQotCSAgICB9Ci0JICAgIGVsc2UKLQkgICAgewotCSAgICAJc2VydmljZVNlcnZlclR5cGVJRF8gPSBzZXJ2ZXJGYWN0b3J5SWQ7Ci0JICAgIH0KLQkJCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCSAgfQotCSAgCi0JCS8qKgotCQkgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc2VydmVyUHJvamVjdC4KLQkJICAgKi8KLQkJICBwdWJsaWMgU3RyaW5nIGdldFNlcnZlclByb2plY3QoKQotCQkgIHsKLQkJCSAgcmV0dXJuIHNlcnZlclByb2plY3RfOwotCQkgIH0KLQotCQkgIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZVNlcnZlclR5cGVJRCgpCi0JCSAgewotCQkgICAgcmV0dXJuIHNlcnZpY2VTZXJ2ZXJUeXBlSURfOwotCQkgIH0KLQotCQlwdWJsaWMgU3RyaW5nIGdldEphdmFCZWFuTmFtZSgpIHsKLQkJCXJldHVybiBqYXZhQmVhbk5hbWVfOwotCQl9Ci0JCQotCQlwdWJsaWMgSVNlcnZlciBnZXRTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIoKQotCQkgIHsKLQkJICAgIHJldHVybiBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfOwotCQkgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL2NvbW1hbmQvQlVDb2RlR2VuT3BlcmF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0JVQ29kZUdlbk9wZXJhdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWUyMjU5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL2NvbW1hbmQvQlVDb2RlR2VuT3BlcmF0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqICAgICAgCi0gKiAyMDA2MDUwOSAgIDEyNTA5NCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUsIFVzZSBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24KLSAqIDIwMDYwNTE1ICAgMTE1MjI1IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNjA1MTcgICAxNDIzMjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1hbmQuSmF2YTJXU0RMQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1hbmQuV1NETDJKYXZhQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLkNvcHlBeGlzSmFyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLlJlZnJlc2hQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS50YXNrLlVwZGF0ZUF4aXNXU0RERmlsZVRhc2s7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuYWN0aW9ucy5Xb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotcHVibGljIGNsYXNzIEJVQ29kZUdlbk9wZXJhdGlvbiBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIHsKLQotCS8vIENvcHlBeGlzSmFyQ29tbWFuZAotCXByaXZhdGUgQ29weUF4aXNKYXJDb21tYW5kIGNvcHlBeGlzSmFyQ29tbWFuZCA9IG51bGw7Ci0JCi0JLy8gSmF2YTJXU0RMQ29tbWFuZAotCXByaXZhdGUgSmF2YTJXU0RMQ29tbWFuZCBqYXZhMldTRExDb21tYW5kID0gbnVsbDsKLQlwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW07ICAKLQlwcml2YXRlIFN0cmluZyB3c2RsVVJJOyAKLQkKLQkvLyB3c2RsMkphdmFDb21tYW5kCi0JcHJpdmF0ZSBXU0RMMkphdmFDb21tYW5kIHdzZGwySmF2YUNvbW1hbmQgPSBudWxsOwotCQkKLQkvLyBVcGRhdGVBeGlzV1NEREZpbGVUYXNrCi0JcHJpdmF0ZSBVcGRhdGVBeGlzV1NEREZpbGVUYXNrIHVwZGF0ZUF4aXNXc2RkQ29tbWFuZCA9IG51bGw7Ci0JcHJpdmF0ZSBJUHJvamVjdCBzZXJ2aWNlUHJvamVjdDsKLQkKLQkvLyBVcGRhdGVXRUJYTUxDb21tYW5kCi0JcHJpdmF0ZSBVcGRhdGVXRUJYTUxDb21tYW5kIHVwZGF0ZVdlYlhNTENvbW1hbmQgPSBudWxsOwotCQotCS8vIFJlZnJlc2hQcm9qZWN0Q29tbWFuZAotCXByaXZhdGUgUmVmcmVzaFByb2plY3RDb21tYW5kIHJlZnJlc2hQcm9qZWN0Q29tbWFuZCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGlzIGNvbW1hbmQgcnVucyB0aGUgY29tbWFuZHMgaW4gdGhlIGNvbnN0cnVjdG9yIGluIGEgV29ya3NwYWNlTW9kaWZ5T3BlcmF0aW9uLgotCSAqIFRoZSBjb21tYW5kcyBhcmUgbGlzdGVkIGFib3ZlLCBhbG9uZyB3aXRoIHRoZWlyIHJlbGV2YW50IGRhdGEgcmVnaXN0cnkgcGFyYW1ldGVycyAKLQkgKiBAcGFyYW0gamF2YTJXU0RMCi0JICogQHBhcmFtIHdzZGwySmF2YQotCSAqIEBwYXJhbSB1cGRhdGVBeGlzV3NkZAotCSAqIEBwYXJhbSB1cGRhdGVXZWJYTUwKLQkgKi8KLQlwdWJsaWMgQlVDb2RlR2VuT3BlcmF0aW9uKCl7Ci0JCWNvcHlBeGlzSmFyQ29tbWFuZCA9IG5ldyBDb3B5QXhpc0phckNvbW1hbmQoKTsKLQkJamF2YTJXU0RMQ29tbWFuZCA9IG5ldyBKYXZhMldTRExDb21tYW5kKCk7Ci0JCXdzZGwySmF2YUNvbW1hbmQgPSBuZXcgV1NETDJKYXZhQ29tbWFuZCgpOwotCQl1cGRhdGVBeGlzV3NkZENvbW1hbmQgPSBuZXcgVXBkYXRlQXhpc1dTRERGaWxlVGFzaygpOwotCQl1cGRhdGVXZWJYTUxDb21tYW5kID0gbmV3IFVwZGF0ZVdFQlhNTENvbW1hbmQoKTsKLQkJcmVmcmVzaFByb2plY3RDb21tYW5kID0gbmV3IFJlZnJlc2hQcm9qZWN0Q29tbWFuZCgpOwotCX0KLQotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHsKLQotCQlJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLQkJQm90dG9tVXBXU01vZGlmeU9wZXJhdGlvbiBidU9wZXJhdGlvbiA9IG5ldyBCb3R0b21VcFdTTW9kaWZ5T3BlcmF0aW9uKGluZm8sIGVudik7Ci0JCXRyeSB7Ci0JCQlidU9wZXJhdGlvbi5leGVjdXRlKG1vbml0b3IpOwotCQl9Ci0JCWNhdGNoKENvcmVFeGNlcHRpb24gY2UpewotCQkJSVN0YXR1cyBzdGF0dXMgPSBjZS5nZXRTdGF0dXMoKTsKLQkJCXJldHVybiBzdGF0dXM7Ci0JCX0KLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0KLQl9Ci0KLQlwcml2YXRlIGNsYXNzIEJvdHRvbVVwV1NNb2RpZnlPcGVyYXRpb24gZXh0ZW5kcyBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24gewotCQkKLQkJICBwcml2YXRlIElBZGFwdGFibGUgaW5mbyA9IG51bGw7Ci0JCSAgcHJpdmF0ZSBJRW52aXJvbm1lbnQgZW52ID0gbnVsbDsKLQotCQkgIAotCQkgIHByb3RlY3RlZCBCb3R0b21VcFdTTW9kaWZ5T3BlcmF0aW9uKElBZGFwdGFibGUgYWRhcHRhYmxlLCBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQpewotCQkJICBpbmZvID0gYWRhcHRhYmxlOwotCQkJICBlbnYgPSBlbnZpcm9ubWVudDsKLQkJICB9Ci0JCSAgCi0JCSAgcHJvdGVjdGVkIHZvaWQgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cyBDb3JlRXhjZXB0aW9uewotCQkgIAotCQkJICAgIElTdGF0dXMgc3RhdHVzID0gbnVsbDsKLQkJCSAgCi0JCQkgICAgLy8gQ29weUF4aXNKYXJDb21tYW5kCi0JCQkgICAgY29weUF4aXNKYXJDb21tYW5kLnNldEVudmlyb25tZW50KGVudik7Ci0JCQkgICAgY29weUF4aXNKYXJDb21tYW5kLnNldFByb2plY3Qoc2VydmljZVByb2plY3QpOwotCQkJICAgIHN0YXR1cyA9IGNvcHlBeGlzSmFyQ29tbWFuZC5leGVjdXRlKG1vbml0b3IsIGluZm8pOwotCQkJICAgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpewotCQkJICAgIAl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihzdGF0dXMpOwotCQkJICAgIH0KLQkJCSAgICAKLQkJCSAgCS8vIEphdmEyV1NETENvbW1hbmQKLQkJCQlqYXZhMldTRExDb21tYW5kLnNldEVudmlyb25tZW50KGVudik7Ci0JCQkJamF2YTJXU0RMQ29tbWFuZC5zZXRKYXZhV1NETFBhcmFtKGphdmFXU0RMUGFyYW0pOwotCQkJCXN0YXR1cyA9IGphdmEyV1NETENvbW1hbmQuZXhlY3V0ZShtb25pdG9yLCBpbmZvKTsKLQkJCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKHN0YXR1cyk7Ci0JCQkJfQotCQkJCXdzZGxVUkkgPSBqYXZhMldTRExDb21tYW5kLmdldFdzZGxVUkkoKTsKLQkJCQkKLQkJCQkvLyBXU0RMMkphdmFDb21tYW5kCi0JCQkJd3NkbDJKYXZhQ29tbWFuZC5zZXRFbnZpcm9ubWVudChlbnYpOwotCQkJCXdzZGwySmF2YUNvbW1hbmQuc2V0SmF2YVdTRExQYXJhbShqYXZhV1NETFBhcmFtKTsKLQkJCQlzdGF0dXMgPSB3c2RsMkphdmFDb21tYW5kLmV4ZWN1dGUobW9uaXRvciwgaW5mbyk7Ci0JCQkJaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgewotCQkJCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihzdGF0dXMpOwotCQkJCX0KLQkJCQlqYXZhV1NETFBhcmFtID0gd3NkbDJKYXZhQ29tbWFuZC5nZXRKYXZhV1NETFBhcmFtKCk7Ci0JCQkJCi0JCQkJLy8gVXBkYXRlQXhpc1dzZGRDb21tYW5kCi0JCQkJdXBkYXRlQXhpc1dzZGRDb21tYW5kLnNldEVudmlyb25tZW50KGVudik7Ci0JCQkJdXBkYXRlQXhpc1dzZGRDb21tYW5kLnNldEphdmFXU0RMUGFyYW0oamF2YVdTRExQYXJhbSk7Ci0JCQkJdXBkYXRlQXhpc1dzZGRDb21tYW5kLnNldFNlcnZpY2VQcm9qZWN0KHNlcnZpY2VQcm9qZWN0KTsKLQkJCQlzdGF0dXMgPSB1cGRhdGVBeGlzV3NkZENvbW1hbmQuZXhlY3V0ZShtb25pdG9yLCBpbmZvKTsKLQkJCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKHN0YXR1cyk7Ci0JCQkJfQotCQkJCWphdmFXU0RMUGFyYW0gPSB1cGRhdGVBeGlzV3NkZENvbW1hbmQuZ2V0SmF2YVdTRExQYXJhbSgpOwotCQkJCQotCQkJCS8vIFVwZGF0ZVdlYlhNTENvbW1hbmQKLQkJCQl1cGRhdGVXZWJYTUxDb21tYW5kLnNldEVudmlyb25tZW50KGVudik7Ci0JCQkJdXBkYXRlV2ViWE1MQ29tbWFuZC5zZXRTZXJ2ZXJQcm9qZWN0KHNlcnZpY2VQcm9qZWN0KTsKLQkJCQlzdGF0dXMgPSB1cGRhdGVXZWJYTUxDb21tYW5kLmV4ZWN1dGUobW9uaXRvciwgaW5mbyk7Ci0JCQkJaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgewotCQkJCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihzdGF0dXMpOwotCQkJCX0KLQkJCQkKLQkJCQkvLyBSZWZyZXNoUHJvamVjdENvbW1hbmQKLQkJCQlyZWZyZXNoUHJvamVjdENvbW1hbmQuc2V0RW52aXJvbm1lbnQoZW52KTsKLQkJCQlyZWZyZXNoUHJvamVjdENvbW1hbmQuc2V0UHJvamVjdChzZXJ2aWNlUHJvamVjdCk7Ci0JCQkJc3RhdHVzID0gcmVmcmVzaFByb2plY3RDb21tYW5kLmV4ZWN1dGUobW9uaXRvciwgaW5mbyk7Ci0JCQkJaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgewotCQkJCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihzdGF0dXMpOwotCQkJCX0KLQotCQkJICAKLQkJICB9Ci0JCQotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0V3NkbFVSSSgpIHsKLQkJcmV0dXJuIHdzZGxVUkk7Ci0JfQotCQotCXB1YmxpYyBKYXZhV1NETFBhcmFtZXRlciBnZXRKYXZhV1NETFBhcmFtKCkgewotCQlyZXR1cm4gamF2YVdTRExQYXJhbTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRKYXZhV1NETFBhcmFtKEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW0pIHsKLQkJdGhpcy5qYXZhV1NETFBhcmFtID0gamF2YVdTRExQYXJhbTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlUHJvamVjdChJUHJvamVjdCBzZXJ2aWNlUHJvamVjdCkgewotCQl0aGlzLnNlcnZpY2VQcm9qZWN0ID0gc2VydmljZVByb2plY3Q7Ci0JfQotCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9Db3B5RGVwbG95bWVudEZpbGVDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0NvcHlEZXBsb3ltZW50RmlsZUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVmZTg0Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0NvcHlEZXBsb3ltZW50RmlsZUNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MjQgICAxMzA3NTUga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYxMjIxICAgMTY4Nzg3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MDgxNSAgIDE4ODk5OSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuY29tbWFuZDsKLQotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5BeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbW1vbi5GaWxlUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQmFzZUVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxGb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JTW9kdWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5pbnRlcm5hbC5JTW9kdWxlUHVibGlzaEhlbHBlcjsKLQotLyoqCi0gKiAKLSAqIFRoaXMgY29tbWFuZCBjb3BpZXMgdGhlIHNlcnZlci1jb25maWcud3NkZCBmaWxlIHRvIGl0J3MgcHJvcGVyIGxvY2F0aW9uIGluIHRoZSBtb2R1bGUuCi0gKiAKLSAqLwotCi1wdWJsaWMgY2xhc3MgQ29weURlcGxveW1lbnRGaWxlQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgV0VCX0lORiA9ICJXRUItSU5GIjsKLQlwcml2YXRlIGZpbmFsIFN0cmluZyBTRVJWRVJfQ09ORklHID0gInNlcnZlci1jb25maWcud3NkZCI7Ci0gICAgcHJpdmF0ZSBTdHJpbmcgcHJvamVjdE5hbWVfOwotICAgIHByaXZhdGUgU3RyaW5nIEVBUlByb2plY3ROYW1lXzsKLQlwcml2YXRlIFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkXzsKLSAgCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgQ29weURlcGxveW1lbnRGaWxlQ29tbWFuZC4KLSAqIEBwYXJhbSBTdHJpbmcgZGVzY3JpcHRpb24KLSAqIEBwYXJhbSBTdHJpbmcgbmFtZQotICAgKiAKLSAgICovCi0gIHB1YmxpYyBDb3B5RGVwbG95bWVudEZpbGVDb21tYW5kKCBTdHJpbmcgcHJvamVjdE5hbWUsIFN0cmluZyBlYXJQcm9qZWN0TmFtZSApCi0gIHsgCi0gICAgcHJvamVjdE5hbWVfICAgPSBwcm9qZWN0TmFtZTsKLSAgICBFQVJQcm9qZWN0TmFtZV8gICA9IGVhclByb2plY3ROYW1lOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApIAotICB7Ci0JICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JICBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCSAgCi0JICBGaWxlSW5wdXRTdHJlYW0gZmluU3RyZWFtID0gbnVsbDsKLQkgIHRyeQotCSAgewotCQkgIAotCQkgIElWaXJ0dWFsQ29tcG9uZW50IGNvbXBvbmVudCA9IEoyRUVVdGlscy5nZXRWaXJ0dWFsQ29tcG9uZW50KCBwcm9qZWN0TmFtZV8gKTsKLQkJICBJU2VydmVyIHNlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlciggc2VydmVySW5zdGFuY2VJZF8gKTsKLQkJICBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lXyk7Ci0JCSAgSU1vZHVsZSBwcm9qZWN0TW9kdWxlID0gU2VydmVyVXRpbC5nZXRNb2R1bGUocHJvamVjdCk7Ci0JCSAgCi0JCSAgaWYgKHNlcnZlciAhPSBudWxsICYmIGNvbXBvbmVudCAhPSBudWxsICYmIHByb2plY3RNb2R1bGUgIT0gbnVsbCkgewotCQkJICBJTW9kdWxlUHVibGlzaEhlbHBlciBwdWJsaXNoSGVscGVyID0gKElNb2R1bGVQdWJsaXNoSGVscGVyKSAKLQkJCSAgCXNlcnZlci5sb2FkQWRhcHRlcihJTW9kdWxlUHVibGlzaEhlbHBlci5jbGFzcywgbW9uaXRvcik7Ci0JCQkgIGlmIChwdWJsaXNoSGVscGVyICE9IG51bGwpIHsKLQkJCQkgIElNb2R1bGVbXSBzZXJ2ZXJNb2R1bGVzOwotCQkJCSAgaWYgKEVBUlByb2plY3ROYW1lXyA9PSBudWxsKSB7Ci0JCQkJCSAgc2VydmVyTW9kdWxlcyA9IG5ldyBJTW9kdWxlIFtdIHtwcm9qZWN0TW9kdWxlfTsKLQkJCQkgIH0gZWxzZSB7Ci0JCQkJCSAgSVByb2plY3QgRUFSUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChFQVJQcm9qZWN0TmFtZV8pOwotCQkJCQkgIElNb2R1bGUgRUFSUHJvamVjdE1vZHVsZSA9IFNlcnZlclV0aWwuZ2V0TW9kdWxlKEVBUlByb2plY3QpOwotCQkJCQkgIHNlcnZlck1vZHVsZXMgPSBuZXcgSU1vZHVsZSBbXSB7RUFSUHJvamVjdE1vZHVsZSwgcHJvamVjdE1vZHVsZX07Ci0JCQkJICB9Ci0JCQkJICBJUGF0aCBwdWJsaXNoRGlyUGF0aCA9IHB1Ymxpc2hIZWxwZXIuZ2V0UHVibGlzaERpcmVjdG9yeShzZXJ2ZXJNb2R1bGVzKTsKLQkJCQkgIAotCQkJCSAgaWYgKHB1Ymxpc2hEaXJQYXRoICE9IG51bGwpIHsKLQkJCQkJICBJVmlydHVhbEZvbGRlciByb290Rm9sZGVyID0gY29tcG9uZW50LmdldFJvb3RGb2xkZXIoKTsKLQkJCQkJICBJUGF0aCByb290Rm9sZGVyUGF0aCA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZpbGUocm9vdEZvbGRlci5nZXRXb3Jrc3BhY2VSZWxhdGl2ZVBhdGgoKSkuZ2V0TG9jYXRpb24oKTsKLQkJCQkJICBpZiAocm9vdEZvbGRlclBhdGggIT0gbnVsbCkgewotCQkJCQkJICBGaWxlIHJvb3RGb2xkZXJGaWxlID0gcm9vdEZvbGRlclBhdGgudG9GaWxlKCk7Ci0JCQkJCQkgIEZpbGUgcHVibGlzaERpckZpbGUgPSBwdWJsaXNoRGlyUGF0aC50b0ZpbGUoKTsKLQkJCQkJCSAgaWYgKCFyb290Rm9sZGVyRmlsZS5lcXVhbHMocHVibGlzaERpckZpbGUpKSB7Ci0JCQkJCQkJICAvLyBjb3B5IHRoZSBzZXJ2ZXItY29uZmlnLndzZGQgaWYgdGhlIHB1Ymxpc2ggZGlyZWN0b3J5IGlzIG5vdCBpbiB0aGUgc2FtZSBhcyB0aGUgcHJvamVjdCByb290IGZvbGRlcgotCQkJCQkJCSAgSVBhdGggcGF0aCA9IG5ldyBQYXRoKCBXRUJfSU5GICkuYXBwZW5kKCBTRVJWRVJfQ09ORklHICk7Ci0JCQkJCQkJICBJUGF0aCBzZXJ2ZXJDb25maWdQYXRoID0gcHVibGlzaERpclBhdGguYXBwZW5kKHBhdGgpOwotCQkJCQkJCSAgaWYgKHNlcnZlckNvbmZpZ1BhdGggIT0gbnVsbCkgewkJCSAgCi0JCQkJCQkJCSAgSVZpcnR1YWxGaWxlIG5ld0xvY2F0aW9uID0gcm9vdEZvbGRlci5nZXRGaWxlKHBhdGgpOwotCQkJCQkJCQkgIElQYXRoIHRhcmdldFBhdGggPSBuZXdMb2NhdGlvbi5nZXRXb3Jrc3BhY2VSZWxhdGl2ZVBhdGgoKTsKLQkJCQkJCQkJICBpZiAodGFyZ2V0UGF0aCAhPSBudWxsKSB7Ci0JCQkJCQkJCQkgIGZpblN0cmVhbSA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oc2VydmVyQ29uZmlnUGF0aC50b1N0cmluZygpKTsKLQkJCQkJCQkJCSAgaWYgKGZpblN0cmVhbSAhPSBudWxsKSAKLQkJCQkJCQkJCSAgewotCQkJCQkJCQkJCSAgSVN0YXR1c0hhbmRsZXIgIHN0YXR1c0hhbmRsZXIgPSBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCk7Ci0JCQkJCQkJCQkgICAgUmVzb3VyY2VDb250ZXh0IGNvbnRleHQgICAgICAgPSAoKEJhc2VFY2xpcHNlRW52aXJvbm1lbnQpZW52aXJvbm1lbnQpLmdldFJlc291cmNlQ29udGV4dCgpOwotCQkJCQkJCQkJICAgIAotCQkJCQkJCQkJCSAgRmlsZVJlc291cmNlVXRpbHMuY3JlYXRlRmlsZShjb250ZXh0LCAgCi0JCQkJCQkJCQkJCQkgIHRhcmdldFBhdGgsCi0JCQkJCQkJCQkJCQkgIGZpblN0cmVhbSwKLQkJCQkJCQkJCQkJCSAgbW9uaXRvciwKLQkJCQkJCQkJCQkJCSAgc3RhdHVzSGFuZGxlcik7Ci0JCQkJCQkJCQkJICBmaW5TdHJlYW0uY2xvc2UoKTsKLQkJCQkJCQkJCSAgfQotCQkJCQkJCQkgIH0KLQkJCQkJCQkgIH0KLQkJCQkJCSAgfQotCQkJCQkgIH0KLQkJCQkgIH0gIAotCQkJICB9IAkgIAkJICAKLQkJICB9CSAgCi0JICB9Ci0JICBjYXRjaCggVGhyb3dhYmxlIGUgKQotCSAgewotCQkgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfTU9WRV9SRVNPVVJDRSwgbmV3IFN0cmluZ1tde2UuZ2V0TG9jYWxpemVkTWVzc2FnZSgpfSksIGUpOwotCQkgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCSAgfSBmaW5hbGx5IHsKLQkJICBpZiAoZmluU3RyZWFtICE9IG51bGwpIHsKLQkJCSAgdHJ5IHsKLQkJCQkgIGZpblN0cmVhbS5jbG9zZSgpOwotCQkJICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JCQkgIH0KLQkJICB9CQkJCi0JICB9Ci0JICAKLQkgIHJldHVybiBzdGF0dXM7Ci0JICAKLSAgfQotCi0JcHVibGljIHZvaWQgc2V0U2VydmVySW5zdGFuY2VJZChTdHJpbmcgc2VydmVySW5zdGFuY2VJZCkgewotCQl0aGlzLnNlcnZlckluc3RhbmNlSWRfID0gc2VydmVySW5zdGFuY2VJZDsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0phdmFUb1dTRExNZXRob2RDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL0phdmFUb1dTRExNZXRob2RDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMzQxOGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9KYXZhVG9XU0RMTWV0aG9kQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLk1ldGhvZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5BeGlzQ3JlYXRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSmF2YU1PRlV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLXB1YmxpYyBjbGFzcyBKYXZhVG9XU0RMTWV0aG9kQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIHsKLQotCXByaXZhdGUgc3RhdGljIFN0cmluZyBKQVZBX0VYVEVOU0lPTiA9ICIuamF2YSI7IC8vJE5PTi1OTFMtMSQKLQlwcml2YXRlIHN0YXRpYyBTdHJpbmcgQ0xBU1NfRVhURU5TSU9OID0gIi5jbGFzcyI7IC8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgSGFzaHRhYmxlIGZNZXRob2ROYW1lczsKLQlwcml2YXRlIFN0cmluZyBmQ2xhc3NOYW1lOwotCXByaXZhdGUgU3RyaW5nIGZiZWFuQmFzZU5hbWU7Ci0JcHJpdmF0ZSBKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtXzsKLQlwcml2YXRlIElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0XzsKLQotCS8qKgotCSogRGVmYXVsdCBDVE9SCi0JKi8KLQlwdWJsaWMgSmF2YVRvV1NETE1ldGhvZENvbW1hbmQoKSB7Ci0JfQotCS8qKgotCSogRGVmYXVsdCBDVE9SCi0JKi8KLQlwdWJsaWMgSmF2YVRvV1NETE1ldGhvZENvbW1hbmQoCi0JCUphdmFXU0RMUGFyYW1ldGVyIGphdmFQYXJhbWV0ZXIsCi0JCUlQcm9qZWN0IHNlcnZpY2VQcm9qZWN0KSB7Ci0JCWphdmFXU0RMUGFyYW1fID0gamF2YVBhcmFtZXRlcjsKLQkJc2VydmljZVByb2plY3RfID0gc2VydmljZVByb2plY3Q7Ci0KLQl9Ci0KLQkvKioKLQkqIEphdmFUb1RvV1NETE1ldGhvZCBleGVjdXRlCi0JKi8KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkgCi0JewotCQlJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCi0JCWZiZWFuQmFzZU5hbWUgPSBqYXZhV1NETFBhcmFtXy5nZXRCZWFuTmFtZSgpOwotCQllbnZpcm9ubWVudC5nZXRMb2coKS5sb2coSUxvZy5JTkZPLCA1MDcwLCB0aGlzLCAiZXhlY3V0ZSIsICJiZWFuQmFzZU5hbWUgPSAiK2ZiZWFuQmFzZU5hbWUpOwotCQlJU3RhdHVzIHN0YXR1czsKLQkJdHJ5IHsKLQkJCS8vR2V0IHRoZSBxdWFsaWZpZWQgYmVhbiBuYW1lOyBteS5wYWNrYWdlLk15Q2xhc3MKLQkJCWZNZXRob2ROYW1lcyA9IG5ldyBIYXNodGFibGUoKTsKLQkJCUhhc2h0YWJsZSBvbGRNZXRob2RzTmFtZXMgPSBqYXZhV1NETFBhcmFtXy5nZXRNZXRob2RzKCk7Ci0JCQlTdHJpbmcgcU5hbWUgPSBmYmVhbkJhc2VOYW1lOwotCi0JCQlpZiAocU5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChKQVZBX0VYVEVOU0lPTikKLQkJCQl8fCBxTmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKENMQVNTX0VYVEVOU0lPTikpIHsKLQkJCQlxTmFtZSA9IHFOYW1lLnN1YnN0cmluZygwLCBxTmFtZS5sYXN0SW5kZXhPZignLicpKTsKLQkJCX0KLQotCQkJSmF2YUNsYXNzIGphdmFDbGFzcyA9IEphdmFNT0ZVdGlscy5nZXRKYXZhQ2xhc3MocU5hbWUsIHNlcnZpY2VQcm9qZWN0Xyk7Ci0JCQkKLQkJCWlmICghamF2YUNsYXNzLmlzRXhpc3RpbmdUeXBlKCkpIHsKLQkJCQllbnZpcm9ubWVudC5nZXRMb2coKS5sb2coSUxvZy5FUlJPUiwgNTAyMiwgdGhpcywgImV4ZWN1dGUiLCAKLQkJCQkJCU5MUy5iaW5kKEF4aXNDcmVhdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX0pBVkFfTU9GX1JFRkxFQ1RfRkFJTEVELAotCQkJCQkJbmV3IFN0cmluZ1tdIHsgcU5hbWUgfSkpOwotCQkJCQotCQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKAotCQkJCQkJTkxTLmJpbmQoQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfSkFWQV9NT0ZfUkVGTEVDVF9GQUlMRUQsCi0JCQkJCW5ldyBTdHJpbmdbXSB7IHFOYW1lIH0pKTsKLQkJCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCQlyZXR1cm4gc3RhdHVzOwotCQkJfQotCi0JCQkvLyBHZXQgdGhlIHF1YWxpZmllZCBuYW1lCi0JCQlmQ2xhc3NOYW1lID0gamF2YUNsYXNzLmdldFF1YWxpZmllZE5hbWUoKTsKLQkJCVN0cmluZyBiZWFuTmFtZTsKLQkJCWlmIChmQ2xhc3NOYW1lLmxhc3RJbmRleE9mKCcuJykgIT0gLTEpIHsKLQkJCQliZWFuTmFtZSA9Ci0JCQkJCWZDbGFzc05hbWUuc3Vic3RyaW5nKAotCQkJCQkJZkNsYXNzTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSwKLQkJCQkJCWZDbGFzc05hbWUubGVuZ3RoKCkpOwotCQkJfSBlbHNlCi0JCQkJYmVhbk5hbWUgPSBmQ2xhc3NOYW1lOwotCi0JCQkvLyBXYWxrIHRoZSBqYXZhIGNsYXNzIGFuZCBnZXQgdGhlIG1ldGhvZCBuYW1lcwotCQkJZ2F0aGVyTWV0aG9kcyhqYXZhQ2xhc3MsIGJlYW5OYW1lLCBvbGRNZXRob2RzTmFtZXMpOwotCQkJLyoKLQkJCUl0ZXJhdG9yIG0gPSBqYXZhQ2xhc3MuZ2V0UHVibGljTWV0aG9kc0V4dGVuZGVkKCkuaXRlcmF0b3IoKTsKLQkJCXdoaWxlIChtLmhhc05leHQoKSkgewotCQkJCU1ldGhvZCBtZXRob2QgPSAoTWV0aG9kKSBtLm5leHQoKTsgIAotCQkJCWlmICggISBtZXRob2QuaXNDb25zdHJ1Y3RvcigpKXsgCi0JCQkJaWYgKCFiZWFuTmFtZS5lcXVhbHMobWV0aG9kLmdldE5hbWUoKSkKLQkJCQkJJiYgIShpc0R1cGxpY2F0ZU1ldGhvZE5hbWUobWV0aG9kCi0JCQkJCQkuZ2V0TWV0aG9kRWxlbWVudFNpZ25hdHVyZSgpKSkKLQkJCQkJJiYgIShtZXRob2QKLQkJCQkJCS5nZXRDb250YWluaW5nSmF2YUNsYXNzKCkKLQkJCQkJCS5nZXRKYXZhTmFtZSgpCi0JCQkJCQkuZXF1YWxzSWdub3JlQ2FzZSgiamF2YXguZWpiLkVKQk9iamVjdCIpKQkvLyROT04tTkxTLTEkCi0JCQkJCSYmICEobWV0aG9kCi0JCQkJCQkuZ2V0Q29udGFpbmluZ0phdmFDbGFzcygpCi0JCQkJCQkuZ2V0SmF2YU5hbWUoKQotCQkJCQkJLmVxdWFsc0lnbm9yZUNhc2UoImphdmF4LmVqYi5FSkJPYmplY3RbXSIpKQkvLyROT04tTkxTLTEkCi0JCQkJCSYmICEobWV0aG9kCi0JCQkJCQkuZ2V0Q29udGFpbmluZ0phdmFDbGFzcygpCi0JCQkJCQkuZ2V0SmF2YU5hbWUoKQotCQkJCQkJLmVxdWFsc0lnbm9yZUNhc2UoImphdmEubGFuZy5PYmplY3QiKSkJLy8kTk9OLU5MUy0xJAotCQkJCQkmJiAhKG1ldGhvZAotCQkJCQkJLmdldENvbnRhaW5pbmdKYXZhQ2xhc3MoKQotCQkJCQkJLmdldEphdmFOYW1lKCkKLQkJCQkJCS5lcXVhbHNJZ25vcmVDYXNlKCJqYXZhLmxhbmcuT2JqZWN0W10iKSkpIHsJLy8kTk9OLU5MUy0xJAotCQkJCQkvLyBhZGQgdGhlIG1ldGhvZCBuYW1lIHRvIG91ciBsaXN0IG9mIG1ldGhvZCBuYW1lcwotCQkJCQlTdHJpbmcgbWV0aG9kTmFtZSA9bWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKTsKLQkJICAgICAgICAgIEJvb2xlYW4gaXNTZWxlY3RlZCA9IG5ldyBCb29sZWFuKHRydWUpOwotICAgICAgICAJCSAgaWYgKG9sZE1ldGhvZHNOYW1lcyAhPSBudWxsICYmIG9sZE1ldGhvZHNOYW1lcy5jb250YWluc0tleShtZXRob2ROYW1lKSkKLSAgICAgICAgICAJCQlpc1NlbGVjdGVkID0gKEJvb2xlYW4pb2xkTWV0aG9kc05hbWVzLmdldChtZXRob2ROYW1lKTsKLQkJICAgICAgICAgIGZNZXRob2ROYW1lcy5wdXQobWV0aG9kTmFtZSwgaXNTZWxlY3RlZCk7Ci0JCQkJfSAKLQkJCQl9Ci0JCQl9Ci0JCQkqLwotCQkJamF2YVdTRExQYXJhbV8uc2V0TWV0aG9kcyhmTWV0aG9kTmFtZXMpOwotCQkJCi0JCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJZW52aXJvbm1lbnQuZ2V0TG9nKCkubG9nKElMb2cuRVJST1IsIDUwMjMsIHRoaXMsICJleGVjdXRlIiwgQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfUkVBRF9CRUFOKTsKLQkJCi0JCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9KQVZBX1RPX01FVEhPRCwgZSk7Ci0JCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCXJldHVybiBzdGF0dXM7Ci0JCX0KLQl9Ci0KLSAgcHJpdmF0ZSB2b2lkIGdhdGhlck1ldGhvZHMoSmF2YUNsYXNzIGphdmFDbGFzcywgU3RyaW5nIGJlYW5OYW1lLCBIYXNodGFibGUgb2xkTWV0aG9kc05hbWVzKQotICB7Ci0gICAgU3RyaW5nIGphdmFOYW1lID0gamF2YUNsYXNzLmdldEphdmFOYW1lKCk7Ci0gICAgaWYgKCFqYXZhQ2xhc3MuaXNJbnRlcmZhY2UoKQotICAgICAgICAmJiAhamF2YU5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiamF2YXguZWpiLkVKQk9iamVjdFtdIikKLSAgICAgICAgJiYgIWphdmFOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImphdmF4LmVqYi5FSkJPYmplY3QiKQotICAgICAgICAmJiAhamF2YU5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiamF2YS5sYW5nLk9iamVjdFtdIikKLSAgICAgICAgJiYgIWphdmFOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImphdmEubGFuZy5PYmplY3QiKSkKLSAgICB7Ci0gICAgICBMaXN0IHB1YmxpY01ldGhvZHMgPSBqYXZhQ2xhc3MuZ2V0UHVibGljTWV0aG9kcygpOwotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHB1YmxpY01ldGhvZHMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgIHsKLSAgICAgICAgTWV0aG9kIG1ldGhvZCA9IChNZXRob2QpaXQubmV4dCgpOwotICAgICAgICBpZiAoIW1ldGhvZC5pc0NvbnN0cnVjdG9yKCkKLSAgICAgICAgICAgICYmICFiZWFuTmFtZS5lcXVhbHMobWV0aG9kLmdldE5hbWUoKSkKLSAgICAgICAgICAgICYmICEoaXNEdXBsaWNhdGVNZXRob2ROYW1lKG1ldGhvZC5nZXRNZXRob2RFbGVtZW50U2lnbmF0dXJlKCkpKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIGFkZCB0aGUgbWV0aG9kIG5hbWUgdG8gb3VyIGxpc3Qgb2YgbWV0aG9kIG5hbWVzCi0gICAgICAgICAgU3RyaW5nIG1ldGhvZE5hbWUgPSBtZXRob2QuZ2V0TWV0aG9kRWxlbWVudFNpZ25hdHVyZSgpOwotICAgICAgICAgIEJvb2xlYW4gaXNTZWxlY3RlZCA9IG5ldyBCb29sZWFuKHRydWUpOwotICAgICAgICAgIGlmIChvbGRNZXRob2RzTmFtZXMgIT0gbnVsbCAmJiBvbGRNZXRob2RzTmFtZXMuY29udGFpbnNLZXkobWV0aG9kTmFtZSkpCi0gICAgICAgICAgICBpc1NlbGVjdGVkID0gKEJvb2xlYW4pb2xkTWV0aG9kc05hbWVzLmdldChtZXRob2ROYW1lKTsKLSAgICAgICAgICBmTWV0aG9kTmFtZXMucHV0KG1ldGhvZE5hbWUsIGlzU2VsZWN0ZWQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBnYXRoZXJNZXRob2RzKGphdmFDbGFzcy5nZXRTdXBlcnR5cGUoKSwgYmVhbk5hbWUsIG9sZE1ldGhvZHNOYW1lcyk7Ci0gICAgfQotICB9Ci0JICAKLQkvL1JldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZWQgbWV0aG9kIG5hbWUgYWxyZWFkeSBleGlzdHMgaW4gdGhlIAotCS8vZk1ldGhvZE5hbWVzIHZlY3Rvci4gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBkZXRlY3Qgb3ZlcmxvYWRlZCAKLQkvL21ldGhvZHMgaW4gQmVhbnMgYW5kIEVKQnMsIHdoaWNoIGFyZSBjdXJyZW50bHkgdW5zdXBwb3J0ZWQuCi0JcHJpdmF0ZSBib29sZWFuIGlzRHVwbGljYXRlTWV0aG9kTmFtZShTdHJpbmcgbWV0aG9kTmFtZSkgewotCQlyZXR1cm4gKGZNZXRob2ROYW1lcyA9PSBudWxsID8gZmFsc2U6IGZNZXRob2ROYW1lcy5jb250YWluc0tleShtZXRob2ROYW1lKSk7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIGphdmFXU0RMUGFyYW0uCi0JICogQHJldHVybiBKYXZhV1NETFBhcmFtZXRlcgotCSAqLwotCXB1YmxpYyBKYXZhV1NETFBhcmFtZXRlciBnZXRKYXZhV1NETFBhcmFtKCkgewotCQlyZXR1cm4gamF2YVdTRExQYXJhbV87Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgamF2YVdTRExQYXJhbS4KLQkgKiBAcGFyYW0gamF2YVdTRExQYXJhbSBUaGUgamF2YVdTRExQYXJhbSB0byBzZXQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRKYXZhV1NETFBhcmFtKEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW0pIHsKLQkJdGhpcy5qYXZhV1NETFBhcmFtXyA9IGphdmFXU0RMUGFyYW07Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldFNlcnZpY2VQcm9qZWN0KElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0KQotCXsKLQkgIHNlcnZpY2VQcm9qZWN0XyA9IHNlcnZpY2VQcm9qZWN0OwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL2NvbW1hbmQvTW9kaWZ5V1NETEVuZHBvaW50QWRkcmVzc0NvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL2NvbW1hbmQvTW9kaWZ5V1NETEVuZHBvaW50QWRkcmVzc0NvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI0ZjAyNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL01vZGlmeVdTRExFbmRwb2ludEFkZHJlc3NDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxODcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTE1ICAgMTE1MjI1IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQ7Ci0KLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzczsKLWltcG9ydCBqYXZheC53c2RsLmZhY3RvcnkuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFdyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLkF4aXNDcmVhdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU2VydmVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5XZWJTZXJ2aWNlc1BhcnNlckV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC53c2RsNGouV1NETEZhY3RvcnlJbXBsOwotCi1wdWJsaWMgY2xhc3MgTW9kaWZ5V1NETEVuZHBvaW50QWRkcmVzc0NvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiB7Ci0KLQlwcml2YXRlIFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkOwotCXByaXZhdGUgU3RyaW5nIHNlcnZlckZhY3RvcnlJZDsKLQlwcml2YXRlIElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0OwotCXByaXZhdGUgU3RyaW5nIHdzZGxVUkk7Ci0JcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciB3ZWJTZXJ2aWNlc1BhcnNlcjsKLQlwdWJsaWMgZmluYWwgU3RyaW5nIFNFUlZJQ0VfRVhUID0gIi9zZXJ2aWNlcy8iOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtOwotCi0JcHVibGljIElTdGF0dXMgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlKSAgewotCQlJU3RhdHVzIHN0YXR1czsKLQkJSUVudmlyb25tZW50IGVudmlyb25tZW50ID0gZ2V0RW52aXJvbm1lbnQoKTsKLQkJdHJ5IHsKLQkJCS8vIHRoZSBjb3JyZWN0IHByb2plY3QgVVJMIGhhcyBhbHJlYWR5IGJlZW4gb2J0YWluZWQsIG5vIG5lZWQgdG8gbW9kaWZ5IDxzb2FwOmFkZHJlc3M+IGxvY2F0aW9uIFVSSQotCQkJaWYgKCFqYXZhV1NETFBhcmFtLmlzR3Vlc3NQcm9qZWN0VVJMKCkpIHsgCi0JCQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JCQl9Ci0KLQkJCVN0cmluZyBwcm9qZWN0VVJMID0gbnVsbDsJCQotCi0JCQlJU2VydmVyIHNlcnZlciA9IG51bGw7Ci0JCQlpZihzZXJ2ZXJJbnN0YW5jZUlkIT1udWxsKSB7Ci0JCQkJc2VydmVyID0gU2VydmVyQ29yZS5maW5kU2VydmVyKHNlcnZlckluc3RhbmNlSWQpOwotCQkJfQotCi0JCQlpZihzZXJ2ZXIhPW51bGwpIHsKLQkJCQlwcm9qZWN0VVJMID0gU2VydmVyVXRpbHMuZ2V0RW5jb2RlZFdlYkNvbXBvbmVudFVSTChzZXJ2aWNlUHJvamVjdCwgc2VydmVyRmFjdG9yeUlkLCBzZXJ2ZXIpOwotCQkJfSBlbHNlIHsKLQkJCQlwcm9qZWN0VVJMID0gU2VydmVyVXRpbHMuZ2V0RW5jb2RlZFdlYkNvbXBvbmVudFVSTChzZXJ2aWNlUHJvamVjdCwgc2VydmVyRmFjdG9yeUlkKTsKLQkJCX0KLQotCQkJaWYocHJvamVjdFVSTD09bnVsbCB8fCBwcm9qZWN0VVJMLnRyaW0oKS5sZW5ndGgoKT09MCkgewotCQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKEF4aXNDcmVhdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1BST0pFQ1RfVVJMLCBuZXcgU3RyaW5nW10ge3NlcnZpY2VQcm9qZWN0LmdldE5hbWUoKX0pKTsKLQkJCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCQlyZXR1cm4gc3RhdHVzOwotCQkJfQotCi0JCQlpZiAoamF2YVdTRExQYXJhbS5nZXRQcm9qZWN0VVJMKCkgPT0gcHJvamVjdFVSTCkgewotCQkJCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCQkJfSAKLQotCQkJamF2YVdTRExQYXJhbS5zZXRQcm9qZWN0VVJMKHByb2plY3RVUkwpOyAgLy8gcHJvamVjdCBVUkwgbmVlZGVkIGZvciBBeGlzIGRlcGxveQotCi0JCQkvLyBtb2RpZnkgdGhlIDxzb2FwOmFkZHJlc3M+IGxvY2F0aW9uIFVSSSB0byByZWZsZWN0IHRoZSBjb3JyZWN0IHByb2plY3QgVVJMCi0JCQlpZih3c2RsVVJJIT1udWxsKSB7CQkJCQkJCQotCQkJCWJvb2xlYW4gbW9kaWZpZWQgPSBmYWxzZTsJCQkJCQkJCi0JCQkJaWYgKHdlYlNlcnZpY2VzUGFyc2VyID09IG51bGwpIHsKLQkJCQkJd2ViU2VydmljZXNQYXJzZXIgPSBuZXcgV2ViU2VydmljZXNQYXJzZXJFeHQoKTsKLQkJCQl9Ci0JCQkJRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gd2ViU2VydmljZXNQYXJzZXIuZ2V0V1NETERlZmluaXRpb24od3NkbFVSSSk7Ci0JCQkJTWFwIHNlcnZpY2VzID0gZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpOwotCQkJCWZvciAoSXRlcmF0b3IgaXQgPSBzZXJ2aWNlcy52YWx1ZXMoKS5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KSB7Ci0JCQkJCVNlcnZpY2Ugc2VyID0gKFNlcnZpY2UpaXQubmV4dCgpOwotCQkJCQlNYXAgcG9ydHMgPSBzZXIuZ2V0UG9ydHMoKTsKLQkJCQkJZm9yIChJdGVyYXRvciBpdDIgPSBwb3J0cy52YWx1ZXMoKS5pdGVyYXRvcigpOyBpdDIuaGFzTmV4dCgpOykgewotCQkJCQkJUG9ydCBwID0gKFBvcnQpaXQyLm5leHQoKTsKLQkJCQkJCWZvciAoSXRlcmF0b3IgaXQzID0gcC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOyBpdDMuaGFzTmV4dCgpOykgewotCQkJCQkJCU9iamVjdCBvYmogPSBpdDMubmV4dCgpOwotCQkJCQkJCWlmIChvYmogaW5zdGFuY2VvZiBTT0FQQWRkcmVzcykgewotCQkJCQkJCQlTT0FQQWRkcmVzcyBzb2FwQWRkcmVzcyA9IChTT0FQQWRkcmVzcylvYmo7Ci0JCQkJCQkJCVN0cmluZyB3c2RsU29hcEFkZHJlc3MgPSBzb2FwQWRkcmVzcy5nZXRMb2NhdGlvblVSSSgpOwotCi0JCQkJCQkJCS8vIGNoZWNrIGlmIHRoZSBXU0RMIFNPQVAgYWRkcmVzcyBoYXMgdGhlIHJpZ2h0IHByb2plY3QgVVJMLCBpZiBub3QsIHVwZGF0ZSBpdAotCQkJCQkJCQlpZih3c2RsU29hcEFkZHJlc3MhPW51bGwpIHsKLQkJCQkJCQkJCWlmICghd3NkbFNvYXBBZGRyZXNzLnN0YXJ0c1dpdGgocHJvamVjdFVSTCkpIHsKLQkJCQkJCQkJCQkvLyBlLmcuICJodHRwOi8vdGVtcHVyaS5vcmcvc2VydmljZXMvU2VydmljZU5hbWUiIGJlY29tZXMgIi9zZXJ2aWNlcy9TZXJ2aWNlTmFtZSIgCi0JCQkJCQkJCQkJU3RyaW5nIHNlcnZpY2VzU3RyaW5nID0gd3NkbFNvYXBBZGRyZXNzLnN1YnN0cmluZyh3c2RsU29hcEFkZHJlc3MuaW5kZXhPZihTRVJWSUNFX0VYVCkpOwotCQkJCQkJCQkJCXNvYXBBZGRyZXNzLnNldExvY2F0aW9uVVJJKHByb2plY3RVUkwgKyBzZXJ2aWNlc1N0cmluZyk7Ci0JCQkJCQkJCQkJbW9kaWZpZWQgPSB0cnVlOwotCQkJCQkJCQkJfQotCi0JCQkJCQkJCX0KLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQlpZiAobW9kaWZpZWQpIHsKLQkJCQkJLy8gdXBkYXRlIHRoZSBXU0RMIGZpbGUgYW5kIHJlZnJlc2ggaW4gd29ya3NwYWNlCi0JCQkJCVdTRExGYWN0b3J5IHdzZGxGYWN0b3J5ID0gbmV3IFdTRExGYWN0b3J5SW1wbCgpOwotCQkJCQlXU0RMV3JpdGVyIHdzZGxXcml0ZXIgPSB3c2RsRmFjdG9yeS5uZXdXU0RMV3JpdGVyKCk7Ci0JCQkJCU91dHB1dFN0cmVhbSBvcyA9IGVudmlyb25tZW50LmdldFVSSUZhY3RvcnkoKS5uZXdVUkkod3NkbFVSSS50b1N0cmluZygpKS5nZXRPdXRwdXRTdHJlYW0oKTsKLQkJCQkJd3NkbFdyaXRlci53cml0ZVdTREwoZGVmaW5pdGlvbiwgb3MpOwotCQkJCQlvcy5jbG9zZSgpOwotCi0JCQkJCVVSTCB3c2RsVVJMID0gbmV3IFVSTCAod3NkbFVSSSk7Ci0JCQkJCUlSZXNvdXJjZSB3c2RsRmlsZSA9IFJlc291cmNlVXRpbHMuZmluZFJlc291cmNlQXRMb2NhdGlvbih3c2RsVVJMLmdldFBhdGgoKSwgc2VydmljZVByb2plY3QpOwotCQkJCQlpZiAod3NkbEZpbGUgIT0gbnVsbCkgewotCQkJCQkJd3NkbEZpbGUucmVmcmVzaExvY2FsKElSZXNvdXJjZS5ERVBUSF9aRVJPLCBtb25pdG9yKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0gZWxzZSB7Ci0JCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfTU9ESUZZX0VORFBPSU5ULCBuZXcgU3RyaW5nW10ge3dzZGxVUkl9KSk7Ci0JCQkJZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQkJcmV0dXJuIHN0YXR1czsKLQkJCX0KLQotCQl9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7Ci0JCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9NT0RJRllfRU5EUE9JTlQsIG5ldyBTdHJpbmdbXSB7d3NkbFVSSX0pKTsKLQkJCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJcmV0dXJuIHN0YXR1czsKLQkJfQotCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQotCi0JcHVibGljIHZvaWQgc2V0U2VydmVySW5zdGFuY2VJZChTdHJpbmcgc2VydmVySWQpIHsKLQkJdGhpcy5zZXJ2ZXJJbnN0YW5jZUlkID0gc2VydmVySWQ7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0U2VydmVyRmFjdG9yeUlkKFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQpIHsKLQkJdGhpcy5zZXJ2ZXJGYWN0b3J5SWQgPSBzZXJ2ZXJGYWN0b3J5SWQ7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0U2VydmljZVByb2plY3QoSVByb2plY3Qgc2VydmljZVByb2plY3QpIHsKLQkJdGhpcy5zZXJ2aWNlUHJvamVjdCA9IHNlcnZpY2VQcm9qZWN0OwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFdzZGxVUkkoU3RyaW5nIHdzZGxVUkkpIHsKLQkJdGhpcy53c2RsVVJJID0gd3NkbFVSSTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlc1BhcnNlcihXZWJTZXJ2aWNlc1BhcnNlciBwYXJzZXIpIHsKLQkJd2ViU2VydmljZXNQYXJzZXIgPSBwYXJzZXI7Ci0JfQotCi0KLQlwdWJsaWMgdm9pZCBzZXRKYXZhV1NETFBhcmFtKEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW0pCi0JewotCQl0aGlzLmphdmFXU0RMUGFyYW0gPSBqYXZhV1NETFBhcmFtOwotCX0KLQotCXB1YmxpYyBKYXZhV1NETFBhcmFtZXRlciBnZXRKYXZhV1NETFBhcmFtKCkKLQl7Ci0JCXJldHVybiBqYXZhV1NETFBhcmFtOwotCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9UREF4aXNJbnB1dENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL2NvbW1hbmQvVERBeGlzSW5wdXRDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZWQ2ODUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9UREF4aXNJbnB1dENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMzAgMTI4ODI3ICAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYxMDA0ICAgMTU5MzU2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuLCBHZXQgY29ycmVjdCBtb2R1bGUgcm9vdCBVUkwgYmFzZWQgb24gc2VydmVyIGNob3NlbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQ7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlSW5mbzsKLQotCi1wdWJsaWMgY2xhc3MgVERBeGlzSW5wdXRDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gewotCQotCXByaXZhdGUgSVdlYlNlcnZpY2Ugd3NfOwotCXByaXZhdGUgU3RyaW5nIHNlcnZlclByb2plY3RfOyAKLQotCSAgcHJpdmF0ZSBTdHJpbmcgc2VydmVyU2VydmVyXzsKLSAgICAgIHByaXZhdGUgU3RyaW5nIHNlcnZpY2VTZXJ2ZXJUeXBlSURfOyAKLQkgIHByaXZhdGUgSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfID0gbnVsbDsKLQkgIHByaXZhdGUgU3RyaW5nIHdzZGxVUklfOwotCSAgcHJpdmF0ZSBXZWJTZXJ2aWNlSW5mbyB3ZWJTZXJ2aWNlSW5mb187Ci0JICAJICAKLQkJLyoqCi0JCSogRGVmYXVsdCBDVE9SCi0JCSovCi0JCXB1YmxpYyBUREF4aXNJbnB1dENvbW1hbmQoKSB7Ci0JCX0KLQkJCi0JCXB1YmxpYyBUREF4aXNJbnB1dENvbW1hbmQoSVdlYlNlcnZpY2Ugd3MsIFN0cmluZyBwcm9qZWN0KSB7Ci0JCQl3c18gPSB3czsKLQkJCXNlcnZlclByb2plY3RfID0gcHJvamVjdDsKLQkJfQotCQkKLQkJcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApIAotCQl7CSAgICAKLQkJc2VydmVyU2VydmVyXyA9IHdzXy5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldFNlcnZlckluc3RhbmNlSWQoKTsKLQotCQlTdHJpbmcgc2VydmVySW5zdGFuY2VJZCA9IHdzXy5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldFNlcnZlckluc3RhbmNlSWQoKTsKLQkJU3RyaW5nIHNlcnZlckZhY3RvcnlJZCA9IHdzXy5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldFNlcnZlckZhY3RvcnlJZCgpOwotCQlpZiAoc2VydmVySW5zdGFuY2VJZCAhPSBudWxsKSB7IC8vIHNlcnZlciBleGlzdHMKLQkgICAgCXNlcnZpY2VFeGlzdGluZ1NlcnZlcl8gPSBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXIoc2VydmVySW5zdGFuY2VJZCk7Ci0JCQlpZiAoc2VydmljZUV4aXN0aW5nU2VydmVyXyAhPSBudWxsKQotCQkgICAgewotCQkgICAgICBzZXJ2aWNlU2VydmVyVHlwZUlEXyA9IHNlcnZpY2VFeGlzdGluZ1NlcnZlcl8uZ2V0U2VydmVyVHlwZSgpLmdldElkKCk7Ci0JCSAgICB9Ci0JICAgIH0KLQkgICAgZWxzZQotCSAgICB7Ci0JICAgIAlzZXJ2aWNlU2VydmVyVHlwZUlEXyA9IHNlcnZlckZhY3RvcnlJZDsKLQkgICAgfQotCQkKLQkJd3NkbFVSSV8gPSB3c18uZ2V0V2ViU2VydmljZUluZm8oKS5nZXRXc2RsVVJMKCk7Ci0JCXdlYlNlcnZpY2VJbmZvXyA9IHdzXy5nZXRXZWJTZXJ2aWNlSW5mbygpOwotCQkKLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JICB9Ci0JICAKLQkJLyoqCi0JCSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBzZXJ2ZXJQcm9qZWN0LgotCQkgICAqLwotCQkgIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmVyUHJvamVjdCgpCi0JCSAgewotCQkJICByZXR1cm4gc2VydmVyUHJvamVjdF87Ci0JCSAgfQotCi0JCSAgcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJTZXJ2ZXIoKQotCQkgIHsKLQkJICAgIHJldHVybiBzZXJ2ZXJTZXJ2ZXJfOwotCQkgIH0KLSAgICAgICAgICAKLSAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VTZXJ2ZXJUeXBlSUQoKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlU2VydmVyVHlwZUlEXzsKLSAgICAgICAgICB9ICAgICAgICAgIAotCi0JCXB1YmxpYyBTdHJpbmcgZ2V0V3NkbFVSSSgpIHsKLQkJCXJldHVybiB3c2RsVVJJXzsKLQkJfQotCi0JCXB1YmxpYyBXZWJTZXJ2aWNlSW5mbyBnZXRXZWJTZXJ2aWNlSW5mbygpIHsKLQkJCXJldHVybiB3ZWJTZXJ2aWNlSW5mb187Ci0JCX0KLQkJCi0JCXB1YmxpYyBJU2VydmVyIGdldFNlcnZpY2VFeGlzdGluZ1NlcnZlcigpCi0JCSAgewotCQkgICAgcmV0dXJuIHNlcnZpY2VFeGlzdGluZ1NlcnZlcl87Ci0JCSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL1REQ29kZUdlbk9wZXJhdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9URENvZGVHZW5PcGVyYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRhYjkxYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL1REQ29kZUdlbk9wZXJhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUwOSAgIDEyNTA5NCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUsIFVzZSBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24KLSAqIDIwMDYwNTE1ICAgMTE1MjI1IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNjA1MTcgICAxNDIzMjcgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MTAwNCAgIDE1OTM1NiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbiwgR2V0IGNvcnJlY3QgbW9kdWxlIHJvb3QgVVJMIGJhc2VkIG9uIHNlcnZlciBjaG9zZW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1hbmQuV1NETDJKYXZhQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLkNvcHlBeGlzSmFyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLlJlZnJlc2hQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS50YXNrLkJhY2t1cFNrZWxJbXBsQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS50YXNrLlNrZWxldG9uMldTRExDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmFjdGlvbnMuV29ya3NwYWNlTW9kaWZ5T3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VJbmZvOwotCi1wdWJsaWMgY2xhc3MgVERDb2RlR2VuT3BlcmF0aW9uIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gewotCi0JLy8gQ29weUF4aXNKYXJDb21tYW5kCi0JcHJpdmF0ZSBDb3B5QXhpc0phckNvbW1hbmQgY29weUF4aXNKYXJDb21tYW5kID0gbnVsbDsKLQkKLQkvLyBCYWNrdXBTa2VsSW1wbENvbW1hbmQKLQlwcml2YXRlIEJhY2t1cFNrZWxJbXBsQ29tbWFuZCBiYWNrdXBTa2VsSW1wbENvbW1hbmQgPSBudWxsOwotCXByaXZhdGUgV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXI7Ci0JcHJpdmF0ZSBKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtOwotCXByaXZhdGUgV2ViU2VydmljZUluZm8gd2ViU2VydmljZUluZm87Ci0JCi0JLy8gV1NETDJKYXZhQ29tbWFuZAotCXByaXZhdGUgV1NETDJKYXZhQ29tbWFuZCB3c2RsMkphdmFDb21tYW5kID0gbnVsbDsKLQlwcml2YXRlIFN0cmluZyB3c2RsVVJJOwotCXByaXZhdGUgU3RyaW5nIGh0dHBCYXNpY0F1dGhVc2VybmFtZTsKLQlwcml2YXRlIFN0cmluZyBodHRwQmFzaWNBdXRoUGFzc3dvcmQ7Ci0JCi0JLy8gU2tlbGV0b24yV1NETENvbW1hbmQKLQlwcml2YXRlIFNrZWxldG9uMldTRExDb21tYW5kIHNrZWxldG9uMldTRExDb21tYW5kID0gbnVsbDsKLQlwcml2YXRlIElQcm9qZWN0IHNlcnZlclByb2plY3Q7Ci0JcHJpdmF0ZSBTdHJpbmcgc2VydmljZVNlcnZlclR5cGVJRDsKLQlwcml2YXRlIElTZXJ2ZXIgc2VydmljZUV4aXN0aW5nU2VydmVyOwotCSAgCi0JLy8gVXBkYXRlV2ViWE1MQ29tbWFuZAotCXByaXZhdGUgVXBkYXRlV0VCWE1MQ29tbWFuZCB1cGRhdGVXZWJYTUxDb21tYW5kID0gbnVsbDsKLQotCS8vIFJlZnJlc2hQcm9qZWN0Q29tbWFuZAotCXByaXZhdGUgUmVmcmVzaFByb2plY3RDb21tYW5kIHJlZnJlc2hQcm9qZWN0Q29tbWFuZCA9IG51bGw7Ci0JCi0JLyoqCi0JICogVGhpcyBjb21tYW5kIHJ1bnMgdGhlIGNvbW1hbmRzIHBhc3NlZCBieSB0aGUgY29uc3RydWN0b3IgaW4gYSBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24uCi0JICogVGhlIGNvbW1hbmRzIGFyZSBsaXN0ZWQgYWJvdmUsIHdpdGggb25seSBzb21lIG9mIHRoZWlyIGRhdGEgcmVnaXN0cnkgcGFyYW1ldGVycyBzaW5jZSBzb21lIGFwcGVhciAKLQkgKiB0byBvdmVybGFwIHRoZSBjb21tYW5kcy4KLQkgKiBAcGFyYW0gYmFja3VwU2tlbEltcGwKLQkgKiBAcGFyYW0gd3NkbDJKYXZhCi0JICogQHBhcmFtIHNrZWxldG9uMldTREwKLQkgKiBAcGFyYW0gdXBkYXRlV2ViWE1MCi0JICovCi0JcHVibGljIFREQ29kZUdlbk9wZXJhdGlvbigpIHsgCi0JCWNvcHlBeGlzSmFyQ29tbWFuZCA9IG5ldyBDb3B5QXhpc0phckNvbW1hbmQoKTsKLQkJYmFja3VwU2tlbEltcGxDb21tYW5kID0gbmV3IEJhY2t1cFNrZWxJbXBsQ29tbWFuZCgpOwotCQl3c2RsMkphdmFDb21tYW5kID0gbmV3IFdTREwySmF2YUNvbW1hbmQoKTsKLQkJc2tlbGV0b24yV1NETENvbW1hbmQgPSBuZXcgU2tlbGV0b24yV1NETENvbW1hbmQoKTsKLQkJdXBkYXRlV2ViWE1MQ29tbWFuZCA9IG5ldyBVcGRhdGVXRUJYTUxDb21tYW5kKCk7Ci0JCXJlZnJlc2hQcm9qZWN0Q29tbWFuZCA9IG5ldyBSZWZyZXNoUHJvamVjdENvbW1hbmQoKTsKLQl9Ci0JCi0JcHVibGljIElTdGF0dXMgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgaW5mbykgewotCQlJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLQkJVG9wRG93bldTTW9kaWZ5T3BlcmF0aW9uIHRkT3BlcmF0aW9uID0gbmV3IFRvcERvd25XU01vZGlmeU9wZXJhdGlvbihpbmZvLCBlbnYpOwotCQl0cnkgewotCQkJdGRPcGVyYXRpb24uZXhlY3V0ZShtb25pdG9yKTsKLQkJfQotCQljYXRjaChDb3JlRXhjZXB0aW9uIGNlKXsKLQkJCUlTdGF0dXMgc3RhdHVzID0gY2UuZ2V0U3RhdHVzKCk7Ci0JCQlyZXR1cm4gc3RhdHVzOwotCQl9Ci0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQkKLQkKLQkKLQlwcml2YXRlIGNsYXNzIFRvcERvd25XU01vZGlmeU9wZXJhdGlvbiBleHRlbmRzIFdvcmtzcGFjZU1vZGlmeU9wZXJhdGlvbiB7Ci0KLQkJcHJpdmF0ZSBJQWRhcHRhYmxlIGluZm8gPSBudWxsOwotCQlwcml2YXRlIElFbnZpcm9ubWVudCBlbnYgPSBudWxsOwotCQkKLQkJcHJvdGVjdGVkIFRvcERvd25XU01vZGlmeU9wZXJhdGlvbihJQWRhcHRhYmxlIGFkYXB0YWJsZSwgSUVudmlyb25tZW50IGVudmlyb25tZW50KXsKLQkJCWluZm8gPSBhZGFwdGFibGU7Ci0JCQllbnYgPSBlbnZpcm9ubWVudDsKLQkJfQotCQkKLQkJcHJvdGVjdGVkIHZvaWQgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cyBDb3JlRXhjZXB0aW9uIHsKLQotCQkJSVN0YXR1cyBzdGF0dXMgPSBudWxsOwotCQkJCi0JCSAgICAvLyBDb3B5QXhpc0phckNvbW1hbmQKLQkJICAgIGNvcHlBeGlzSmFyQ29tbWFuZC5zZXRFbnZpcm9ubWVudChlbnYpOwotCQkgICAgY29weUF4aXNKYXJDb21tYW5kLnNldFByb2plY3Qoc2VydmVyUHJvamVjdCk7Ci0JCSAgICBzdGF0dXMgPSBjb3B5QXhpc0phckNvbW1hbmQuZXhlY3V0ZShtb25pdG9yLCBpbmZvKTsKLQkJICAgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpewotCQkgICAgCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKHN0YXR1cyk7Ci0JCSAgICB9Ci0JCQkKLQkJCS8vIGJhY2t1cFNrZWxJbXBsQ29tbWFuZAotCQkJYmFja3VwU2tlbEltcGxDb21tYW5kLnNldEVudmlyb25tZW50KGVudik7Ci0JCQliYWNrdXBTa2VsSW1wbENvbW1hbmQuc2V0V2ViU2VydmljZXNQYXJzZXIod2ViU2VydmljZXNQYXJzZXIpOwotCQkJYmFja3VwU2tlbEltcGxDb21tYW5kLnNldEphdmFXU0RMUGFyYW0oamF2YVdTRExQYXJhbSk7Ci0JCQliYWNrdXBTa2VsSW1wbENvbW1hbmQuc2V0V2ViU2VydmljZUluZm8od2ViU2VydmljZUluZm8pOwotCQkJc3RhdHVzID0gYmFja3VwU2tlbEltcGxDb21tYW5kLmV4ZWN1dGUobW9uaXRvciwgaW5mbyk7Ci0JCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24oc3RhdHVzKTsKLQkJCX0KLQotCQkJLy8gd3NkbDJKYXZhQ29tbWFuZAotCQkJd3NkbDJKYXZhQ29tbWFuZC5zZXRFbnZpcm9ubWVudChlbnYpOwotCQkJd3NkbDJKYXZhQ29tbWFuZC5zZXRXc2RsVVJJKHdzZGxVUkkpOwotCQkJd3NkbDJKYXZhQ29tbWFuZC5zZXRIdHRwQmFzaWNBdXRoVXNlcm5hbWUoaHR0cEJhc2ljQXV0aFVzZXJuYW1lKTsKLQkJCXdzZGwySmF2YUNvbW1hbmQuc2V0SHR0cEJhc2ljQXV0aFBhc3N3b3JkKGh0dHBCYXNpY0F1dGhQYXNzd29yZCk7Ci0JCQl3c2RsMkphdmFDb21tYW5kLnNldEphdmFXU0RMUGFyYW0oamF2YVdTRExQYXJhbSk7Ci0JCQlzdGF0dXMgPSB3c2RsMkphdmFDb21tYW5kLmV4ZWN1dGUobW9uaXRvciwgaW5mbyk7Ci0JCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24oc3RhdHVzKTsKLQkJCX0KLQkJCWphdmFXU0RMUGFyYW0gPSB3c2RsMkphdmFDb21tYW5kLmdldEphdmFXU0RMUGFyYW0oKTsKLQkJCQotCQkJLy8gU2tlbGV0b24yV1NETENvbW1hbmQKLQkJCXNrZWxldG9uMldTRExDb21tYW5kLnNldEVudmlyb25tZW50KGVudik7Ci0JCQlza2VsZXRvbjJXU0RMQ29tbWFuZC5zZXRXZWJTZXJ2aWNlc1BhcnNlcih3ZWJTZXJ2aWNlc1BhcnNlcik7Ci0JCQlza2VsZXRvbjJXU0RMQ29tbWFuZC5zZXRKYXZhV1NETFBhcmFtKGphdmFXU0RMUGFyYW0pOwotCQkJc2tlbGV0b24yV1NETENvbW1hbmQuc2V0U2VydmVyUHJvamVjdChzZXJ2ZXJQcm9qZWN0KTsKLQkJCXNrZWxldG9uMldTRExDb21tYW5kLnNldFNlcnZpY2VTZXJ2ZXJUeXBlSUQoc2VydmljZVNlcnZlclR5cGVJRCk7Ci0JCQlza2VsZXRvbjJXU0RMQ29tbWFuZC5zZXRTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIoc2VydmljZUV4aXN0aW5nU2VydmVyKTsKLQkJCXN0YXR1cyA9IHNrZWxldG9uMldTRExDb21tYW5kLmV4ZWN1dGUobW9uaXRvciwgaW5mbyk7Ci0JCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSB7Ci0JCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24oc3RhdHVzKTsKLQkJCX0KLQkJCXdzZGxVUkkgPSBza2VsZXRvbjJXU0RMQ29tbWFuZC5nZXRXc2RsVVJJKCk7Ci0JCQotCQkJLy8gVXBkYXRlV2ViWE1MQ29tbWFuZAotCQkJdXBkYXRlV2ViWE1MQ29tbWFuZC5zZXRFbnZpcm9ubWVudChlbnYpOwotCQkJdXBkYXRlV2ViWE1MQ29tbWFuZC5zZXRTZXJ2ZXJQcm9qZWN0KHNlcnZlclByb2plY3QpOwotCQkJc3RhdHVzID0gdXBkYXRlV2ViWE1MQ29tbWFuZC5leGVjdXRlKG1vbml0b3IsIGluZm8pOwotCQkJaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgewotCQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKHN0YXR1cyk7Ci0JCQl9Ci0JCQkKLQkJCS8vIFJlZnJlc2hQcm9qZWN0Q29tbWFuZAotCQkJcmVmcmVzaFByb2plY3RDb21tYW5kLnNldEVudmlyb25tZW50KGVudik7Ci0JCQlyZWZyZXNoUHJvamVjdENvbW1hbmQuc2V0UHJvamVjdChzZXJ2ZXJQcm9qZWN0KTsKLQkJCXN0YXR1cyA9IHJlZnJlc2hQcm9qZWN0Q29tbWFuZC5leGVjdXRlKG1vbml0b3IsIGluZm8pOwotCQkJaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgewotCQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKHN0YXR1cyk7Ci0JCQl9Ci0JCQkKLQkJfQotCQotCX0KLQotCi0KLQlwdWJsaWMgSmF2YVdTRExQYXJhbWV0ZXIgZ2V0SmF2YVdTRExQYXJhbSgpIHsKLQkJcmV0dXJuIGphdmFXU0RMUGFyYW07Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0SmF2YVdTRExQYXJhbShKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtKSB7Ci0JCXRoaXMuamF2YVdTRExQYXJhbSA9IGphdmFXU0RMUGFyYW07Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0V2ViU2VydmljZUluZm8oV2ViU2VydmljZUluZm8gd2ViU2VydmljZUluZm8pIHsKLQkJdGhpcy53ZWJTZXJ2aWNlSW5mbyA9IHdlYlNlcnZpY2VJbmZvOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyKSB7Ci0JCXRoaXMud2ViU2VydmljZXNQYXJzZXIgPSB3ZWJTZXJ2aWNlc1BhcnNlcjsKLQl9Ci0JCi0JLyoqCi0JICogQHBhcmFtIGh0dHBCYXNpY0F1dGhQYXNzd29yZAotCSAqICAgICAgICAgICAgVGhlIGh0dHBCYXNpY0F1dGhQYXNzd29yZCB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0SHR0cEJhc2ljQXV0aFBhc3N3b3JkKFN0cmluZyBodHRwQmFzaWNBdXRoUGFzc3dvcmQpIHsKLQkJdGhpcy5odHRwQmFzaWNBdXRoUGFzc3dvcmQgPSBodHRwQmFzaWNBdXRoUGFzc3dvcmQ7Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIGh0dHBCYXNpY0F1dGhVc2VybmFtZQotCSAqICAgICAgICAgICAgVGhlIGh0dHBCYXNpY0F1dGhVc2VybmFtZSB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0SHR0cEJhc2ljQXV0aFVzZXJuYW1lKFN0cmluZyBodHRwQmFzaWNBdXRoVXNlcm5hbWUpIHsKLQkJdGhpcy5odHRwQmFzaWNBdXRoVXNlcm5hbWUgPSBodHRwQmFzaWNBdXRoVXNlcm5hbWU7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0V3NkbFVSSShTdHJpbmcgd3NkbFVSSSkgewotCQl0aGlzLndzZGxVUkkgPSB3c2RsVVJJOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0V3NkbFVSSSgpIHsKLQkJcmV0dXJuIHdzZGxVUkk7Ci0JfQotCQotCS8qKgotCSAqIEBwYXJhbSBzZXJ2ZXJQcm9qZWN0IFRoZSBzZXJ2ZXJQcm9qZWN0IHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJQcm9qZWN0KElQcm9qZWN0IHNlcnZlclByb2plY3QpIHsKLQkgIHRoaXMuc2VydmVyUHJvamVjdCA9IHNlcnZlclByb2plY3Q7Ci0JfQotCQkgIAotCXB1YmxpYyB2b2lkIHNldFNlcnZpY2VTZXJ2ZXJUeXBlSUQoU3RyaW5nIGlkKSB7Ci0JICB0aGlzLnNlcnZpY2VTZXJ2ZXJUeXBlSUQgPSBpZDsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0U2VydmljZUV4aXN0aW5nU2VydmVyKElTZXJ2ZXIgc2VydmVyKSB7Ci0JCSAgdGhpcy5zZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIgPSBzZXJ2ZXI7Ci0JCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9VcGRhdGVXRUJYTUxDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL1VwZGF0ZVdFQlhNTENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVmZWE2Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL1VwZGF0ZVdFQlhNTENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MTUgICAxMTUyMjUgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA3MDUyOCAgIDE4NjA1NiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQ7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLm1vZGVsLklNb2RlbFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLm1vZGVsLk1vZGVsUHJvdmlkZXJNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYmFwcGxpY2F0aW9uLlNlcnZsZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2ViYXBwbGljYXRpb24uU2VydmxldE1hcHBpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2ViYXBwbGljYXRpb24uU2VydmxldFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2ViYXBwbGljYXRpb24uV2ViQXBwOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYmFwcGxpY2F0aW9uLldlYmFwcGxpY2F0aW9uRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuamF2YWVlLmNvcmUuRGlzcGxheU5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmphdmFlZS5jb3JlLkphdmFlZUZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmphdmFlZS5jb3JlLlVybFBhdHRlcm5UeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qYXZhZWUud2ViLldlYkZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuQXhpc0NyZWF0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotcHVibGljIGNsYXNzIFVwZGF0ZVdFQlhNTENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiB7Ci0KLQlwcml2YXRlIElQcm9qZWN0IHNlcnZlclByb2plY3Q7Ci0KLSAgcHVibGljIFVwZGF0ZVdFQlhNTENvbW1hbmQoICkKLSAgewotICB9Ci0KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkgCi0JewotCQlJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCQlpZiAoc2VydmVyUHJvamVjdCAhPSBudWxsKSB7Ci0JCQlJU3RhdHVzIHN0YXR1cyA9IG51bGw7Ci0JCQlzdGF0dXMgPSBhZGRTZXJ2bGV0KHNlcnZlclByb2plY3QsIGdldEF4aXNTZXJ2bGV0RGVzY3JpcHRvcigpKTsKLQkJCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpIHsKLQkJCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCQlyZXR1cm4gc3RhdHVzOwotCQkJfQotCQkJYWRkU2VydmxldChzZXJ2ZXJQcm9qZWN0LCBnZXRBZG1pbnRTZXJ2bGV0RGVzY3JpcHRvcigpKTsKLQkJCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpIHsKLQkJCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCQlyZXR1cm4gc3RhdHVzOwotCQkJfQotCQl9Ci0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQotCXByaXZhdGUgU2VydmxldERlc2NyaXB0b3IgZ2V0QXhpc1NlcnZsZXREZXNjcmlwdG9yKCkgewotCi0JCVNlcnZsZXREZXNjcmlwdG9yIHNkID0gbmV3IFNlcnZsZXREZXNjcmlwdG9yKCk7Ci0JCXNkLl9uYW1lID0gIkF4aXNTZXJ2bGV0IjsgLy8kTk9OLU5MUy0xJAotCQlzZC5fZGlzcGxheU5hbWUgPSAiQXBhY2hlLUF4aXMgU2VydmxldCI7IC8vJE5PTi1OTFMtMSQKLQkJc2QuX2NsYXNzTmFtZSA9ICJvcmcuYXBhY2hlLmF4aXMudHJhbnNwb3J0Lmh0dHAuQXhpc1NlcnZsZXQiOyAvLyROT04tTkxTLTEkCi0JCXNkLl9tYXBwaW5ncyA9IG5ldyBTdHJpbmdbXSB7ICIvc2VydmxldC9BeGlzU2VydmxldCIsIC8vJE5PTi1OTFMtMSQKLQkJCQkJCQkJCQkiKi5qd3MiLCAvLyROT04tTkxTLTEkCi0JCQkJCQkJCQkJIi9zZXJ2aWNlcy8qIiB9OyAvLyROT04tTkxTLTEkCi0JCXJldHVybiBzZDsKLQl9Ci0KLQlwcml2YXRlIFNlcnZsZXREZXNjcmlwdG9yIGdldEFkbWludFNlcnZsZXREZXNjcmlwdG9yKCkgewotCQlTZXJ2bGV0RGVzY3JpcHRvciBzZCA9IG5ldyBTZXJ2bGV0RGVzY3JpcHRvcigpOwotCQlzZC5fbmFtZSA9ICJBZG1pblNlcnZsZXQiOyAvLyROT04tTkxTLTEkCi0JCXNkLl9kaXNwbGF5TmFtZSA9ICJBeGlzIEFkbWluIFNlcnZsZXQiOyAvLyROT04tTkxTLTEkCi0JCXNkLl9jbGFzc05hbWUgPSAib3JnLmFwYWNoZS5heGlzLnRyYW5zcG9ydC5odHRwLkFkbWluU2VydmxldCI7IC8vJE5PTi1OTFMtMSQKLQkJc2QuX21hcHBpbmdzID0gbmV3IFN0cmluZ1tdIHsgIi9zZXJ2bGV0L0FkbWluU2VydmxldCIgfTsgLy8kTk9OLU5MUy0xJAotCQlzZC5fbG9hZE9uU3RhcnR1cCA9IG5ldyBJbnRlZ2VyKDEwMCk7Ci0JCXJldHVybiBzZDsKLQl9Ci0JCi0JcHVibGljIElTdGF0dXMgYWRkU2VydmxldChmaW5hbCBJUHJvamVjdCB3ZWJQcm9qZWN0LCBmaW5hbCBTZXJ2bGV0RGVzY3JpcHRvciBzZXJ2bGV0RGVzY3JpcHRvcikgewotCQotCQl0cnkgewotCQkJCi0JCQlmaW5hbCBJTW9kZWxQcm92aWRlciBwcm92aWRlciA9IE1vZGVsUHJvdmlkZXJNYW5hZ2VyLmdldE1vZGVsUHJvdmlkZXIod2ViUHJvamVjdCk7Ci0JCQkKLQkJCXByb3ZpZGVyLm1vZGlmeShuZXcgUnVubmFibGUoKSB7Ci0JCQkJcHVibGljIHZvaWQgcnVuKCkgewotCQkJCQlPYmplY3Qgb2JqZWN0ID0gcHJvdmlkZXIuZ2V0TW9kZWxPYmplY3QoKTsKLQkJCQkJaWYgKG9iamVjdCBpbnN0YW5jZW9mIG9yZy5lY2xpcHNlLmpzdC5qYXZhZWUud2ViLldlYkFwcCkgewotCQkJCQkJb3JnLmVjbGlwc2UuanN0LmphdmFlZS53ZWIuV2ViQXBwIGphdmFlZVdlYkFwcCA9IChvcmcuZWNsaXBzZS5qc3QuamF2YWVlLndlYi5XZWJBcHApIG9iamVjdDsKLQkJCQkJCWFkZEphdmFlZVNlcnZsZXQod2ViUHJvamVjdCwgc2VydmxldERlc2NyaXB0b3IsIGphdmFlZVdlYkFwcCk7Ci0JCQkJCX0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2Ygb3JnLmVjbGlwc2UuanN0LmoyZWUud2ViYXBwbGljYXRpb24uV2ViQXBwKSB7Ci0JCQkJCQlXZWJBcHAgd2ViQXBwID0gKFdlYkFwcCkgb2JqZWN0OwotCQkJCQkJYWRkU2VydmxldCh3ZWJQcm9qZWN0LCBzZXJ2bGV0RGVzY3JpcHRvciwgd2ViQXBwKTsKLQkJCQkJfQotCQkJCQkKLQkJCQl9Ci0JCQl9Ci0JCQkJLCBudWxsKTsKLQotCQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQotCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoCi0JCQkJQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfVVBEQVRFX1dFQl9YTUwsCi0JCQkJZSk7Ci0JfQotCX0KLQotCXByaXZhdGUgdm9pZCBhZGRTZXJ2bGV0KElQcm9qZWN0IHdlYlByb2plY3QsIFNlcnZsZXREZXNjcmlwdG9yIHNlcnZsZXREZXNjcmlwdG9yLCBXZWJBcHAgd2ViYXBwKSB7Ci0KLQkJTGlzdCB0aGVTZXJ2bGV0cyA9IHdlYmFwcC5nZXRTZXJ2bGV0cygpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IHRoZVNlcnZsZXRzLnNpemUoKTsgaSsrKSB7Ci0JCQlTZXJ2bGV0IGFTZXJ2bGV0ID0gKFNlcnZsZXQpIHRoZVNlcnZsZXRzLmdldChpKTsKLQkJCWlmIChhU2VydmxldC5nZXRTZXJ2bGV0TmFtZSgpLmVxdWFscyhzZXJ2bGV0RGVzY3JpcHRvci5fbmFtZSkpIHsKLQkJCQlyZXR1cm47Ci0JCQl9Ci0JCX0KLQotCQlXZWJhcHBsaWNhdGlvbkZhY3RvcnkgZmFjdG9yeSA9IFdlYmFwcGxpY2F0aW9uRmFjdG9yeS5lSU5TVEFOQ0U7Ci0KLQkJU2VydmxldCBzZXJ2bGV0ID0gZmFjdG9yeS5jcmVhdGVTZXJ2bGV0KCk7Ci0JCVNlcnZsZXRUeXBlIHNlcnZsZXRUeXBlID0gZmFjdG9yeS5jcmVhdGVTZXJ2bGV0VHlwZSgpOwotCQlzZXJ2bGV0LnNldFdlYlR5cGUoc2VydmxldFR5cGUpOwotCQlzZXJ2bGV0LnNldFNlcnZsZXROYW1lKHNlcnZsZXREZXNjcmlwdG9yLl9uYW1lKTsKLQkJc2VydmxldFR5cGUuc2V0Q2xhc3NOYW1lKHNlcnZsZXREZXNjcmlwdG9yLl9jbGFzc05hbWUpOwotCQlpZihzZXJ2bGV0RGVzY3JpcHRvci5fZGlzcGxheU5hbWUgIT0gbnVsbCl7Ci0JCQlzZXJ2bGV0LnNldERpc3BsYXlOYW1lKHNlcnZsZXREZXNjcmlwdG9yLl9kaXNwbGF5TmFtZSk7Ci0JCX0KLQkJaWYoc2VydmxldERlc2NyaXB0b3IuX2xvYWRPblN0YXJ0dXAgIT0gbnVsbCl7Ci0JCQlzZXJ2bGV0LnNldExvYWRPblN0YXJ0dXAoc2VydmxldERlc2NyaXB0b3IuX2xvYWRPblN0YXJ0dXApOwotCQl9Ci0JCWlmKHNlcnZsZXREZXNjcmlwdG9yLl9wYXJhbXMgIT0gbnVsbCl7Ci0JCQlQcm9wZXJ0aWVzIHByb3BlcnRpZXMgPSBzZXJ2bGV0LmdldFBhcmFtc0FzUHJvcGVydGllcygpOwotCQkJcHJvcGVydGllcy5wdXRBbGwoc2VydmxldERlc2NyaXB0b3IuX3BhcmFtcyk7Ci0JCX0KLQkJd2ViYXBwLmdldFNlcnZsZXRzKCkuYWRkKHNlcnZsZXQpOwotCi0JCWlmKHNlcnZsZXREZXNjcmlwdG9yLl9tYXBwaW5ncyAhPSBudWxsKXsKLQkJCWZvcihpbnQgaT0wOyBpPHNlcnZsZXREZXNjcmlwdG9yLl9tYXBwaW5ncy5sZW5ndGg7IGkrKyl7Ci0JCQkJU2VydmxldE1hcHBpbmcgc2VydmxldE1hcHBpbmcgPSBmYWN0b3J5LmNyZWF0ZVNlcnZsZXRNYXBwaW5nKCk7Ci0JCQkJc2VydmxldE1hcHBpbmcuc2V0U2VydmxldChzZXJ2bGV0KTsKLQkJCQlzZXJ2bGV0TWFwcGluZy5zZXRVcmxQYXR0ZXJuKHNlcnZsZXREZXNjcmlwdG9yLl9tYXBwaW5nc1tpXSk7Ci0JCQkJd2ViYXBwLmdldFNlcnZsZXRNYXBwaW5ncygpLmFkZChzZXJ2bGV0TWFwcGluZyk7CQkJCQkKLQkJCX0KLQkJfQotCX0KLQkKLQlwcml2YXRlIHZvaWQgYWRkSmF2YWVlU2VydmxldChJUHJvamVjdCB3ZWJQcm9qZWN0LCBTZXJ2bGV0RGVzY3JpcHRvciBzZXJ2bGV0RGVzY3JpcHRvciwgb3JnLmVjbGlwc2UuanN0LmphdmFlZS53ZWIuV2ViQXBwIHdlYmFwcCkgewotCi0JCUxpc3QgdGhlU2VydmxldHMgPSB3ZWJhcHAuZ2V0U2VydmxldHMoKTsKLQkgICBmb3IgKGludCBpID0gMDsgaSA8IHRoZVNlcnZsZXRzLnNpemUoKTsgaSsrKSB7Ci0JCW9yZy5lY2xpcHNlLmpzdC5qYXZhZWUud2ViLlNlcnZsZXQgYVNlcnZsZXQgPSAob3JnLmVjbGlwc2UuanN0LmphdmFlZS53ZWIuU2VydmxldCkgdGhlU2VydmxldHMuZ2V0KGkpOwotCQlpZiAoYVNlcnZsZXQuZ2V0U2VydmxldE5hbWUoKS5lcXVhbHMoc2VydmxldERlc2NyaXB0b3IuX25hbWUpKSB7Ci0JCQlyZXR1cm47Ci0JCSB9Ci0JICAgfQotCSAgIAotCSAgIFdlYkZhY3RvcnkgZmFjdG9yeSA9IFdlYkZhY3RvcnkuZUlOU1RBTkNFOwotCi0JICAgb3JnLmVjbGlwc2UuanN0LmphdmFlZS53ZWIuU2VydmxldCBzZXJ2bGV0ID0gZmFjdG9yeS5jcmVhdGVTZXJ2bGV0KCk7Ci0KLQkgICBzZXJ2bGV0LnNldFNlcnZsZXROYW1lKHNlcnZsZXREZXNjcmlwdG9yLl9uYW1lKTsKLQkgICBzZXJ2bGV0LnNldFNlcnZsZXRDbGFzcyhzZXJ2bGV0RGVzY3JpcHRvci5fY2xhc3NOYW1lKTsKLQkgICAKLQkgICBpZihzZXJ2bGV0RGVzY3JpcHRvci5fZGlzcGxheU5hbWUgIT0gbnVsbCl7Ci0JCSAgIERpc3BsYXlOYW1lIGRpc3BsYXlOYW1lT2JqID0gSmF2YWVlRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlRGlzcGxheU5hbWUoKTsKLQkJCWRpc3BsYXlOYW1lT2JqLnNldFZhbHVlKHNlcnZsZXREZXNjcmlwdG9yLl9kaXNwbGF5TmFtZSk7Ci0JCQlzZXJ2bGV0LmdldERpc3BsYXlOYW1lcygpLmFkZChkaXNwbGF5TmFtZU9iaik7ICAKLQkgICB9Ci0JICAgaWYoc2VydmxldERlc2NyaXB0b3IuX2xvYWRPblN0YXJ0dXAgIT0gbnVsbCl7Ci0JCSAgc2VydmxldC5zZXRMb2FkT25TdGFydHVwKHNlcnZsZXREZXNjcmlwdG9yLl9sb2FkT25TdGFydHVwKTsKLQkgICB9Ci0vLwkgICBpZihzZXJ2bGV0RGVzY3JpcHRvci5fcGFyYW1zICE9IG51bGwpewotLy8JCSAgUHJvcGVydGllcyBwcm9wZXJ0aWVzID0gc2VydmxldC5nZXRQYXJhbXNBc1Byb3BlcnRpZXMoKTsKLS8vCQkgIHByb3BlcnRpZXMucHV0QWxsKHNlcnZsZXREZXNjcmlwdG9yLl9wYXJhbXMpOwotLy8JICAgfQotCSAgIHdlYmFwcC5nZXRTZXJ2bGV0cygpLmFkZChzZXJ2bGV0KTsKLQkKLQkgICBpZihzZXJ2bGV0RGVzY3JpcHRvci5fbWFwcGluZ3MgIT0gbnVsbCl7Ci0JCSAgZm9yKGludCBpPTA7IGk8c2VydmxldERlc2NyaXB0b3IuX21hcHBpbmdzLmxlbmd0aDsgaSsrKXsKLQkJCW9yZy5lY2xpcHNlLmpzdC5qYXZhZWUud2ViLlNlcnZsZXRNYXBwaW5nIHNlcnZsZXRNYXBwaW5nID0gZmFjdG9yeS5jcmVhdGVTZXJ2bGV0TWFwcGluZygpOwkJCQotCQkJc2VydmxldE1hcHBpbmcuc2V0U2VydmxldE5hbWUoc2VydmxldC5nZXRTZXJ2bGV0TmFtZSgpKTsKLQkJCVVybFBhdHRlcm5UeXBlIHVybCA9IEphdmFlZUZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVVybFBhdHRlcm5UeXBlKCk7Ci0JCQl1cmwuc2V0VmFsdWUoc2VydmxldERlc2NyaXB0b3IuX21hcHBpbmdzW2ldKTsKLQkJCXNlcnZsZXRNYXBwaW5nLmdldFVybFBhdHRlcm5zKCkuYWRkKHVybCk7Ci0JCQl3ZWJhcHAuZ2V0U2VydmxldE1hcHBpbmdzKCkuYWRkKHNlcnZsZXRNYXBwaW5nKTsJCQkJCQotCQkgIH0KLQkgICB9Ci19Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJQcm9qZWN0KElQcm9qZWN0IHNlcnZlclByb2plY3QpCi0gIHsKLSAgICB0aGlzLnNlcnZlclByb2plY3QgPSBzZXJ2ZXJQcm9qZWN0OwotICB9Ci0KLQlwdWJsaWMgY2xhc3MgU2VydmxldERlc2NyaXB0b3IgewotCQlTdHJpbmcgX25hbWU7Ci0JCVN0cmluZyBfY2xhc3NOYW1lOwotCQlTdHJpbmcgX2Rpc3BsYXlOYW1lOwotCQlNYXAgX3BhcmFtczsKLQkJU3RyaW5nW10gX21hcHBpbmdzOwotCQlJbnRlZ2VyIF9sb2FkT25TdGFydHVwOwotCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvY29tbWFuZC9WYWxpZGF0ZVdTSUNvbXBsaWFuY2VDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL1ZhbGlkYXRlV1NJQ29tcGxpYW5jZUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U1NjM1Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9jb21tYW5kL1ZhbGlkYXRlV1NJQ29tcGxpYW5jZUNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDYwNyAgIDE0NDk3OCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuY29tbWFuZDsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLkF4aXNDcmVhdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlcy5XU0lDb21wbGlhbmNlVXRpbHM7Ci0KLQotcHVibGljIGNsYXNzIFZhbGlkYXRlV1NJQ29tcGxpYW5jZUNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICAgcHJpdmF0ZSBKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtID0gbnVsbDsKLSAgIHByaXZhdGUgVmVjdG9yIHN0YXR1cyA9IG51bGw7Ci0gICBwcml2YXRlIElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0XyA9IG51bGw7Ci0KLSAgIHB1YmxpYyBWYWxpZGF0ZVdTSUNvbXBsaWFuY2VDb21tYW5kKCkgewotICB9Ci0KLSAgIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUgKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUpCi0gIHsKLSAKLQkgICBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCi0JICAgaWYgKGphdmFXU0RMUGFyYW0gPT0gbnVsbCkgewotCQkgICBJU3RhdHVzIHNpbXBsZVN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuTVNHX0VSUk9SX0pBVkFfV1NETF9QQVJBTV9OT1RfU0VUKTsKLQkJICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHNpbXBsZVN0YXR1cyk7Ci0JCSAgIHJldHVybiBzaW1wbGVTdGF0dXM7Ci0JICAgfQkJCi0JCi0gICAgc3RhdHVzID0gbmV3IFZlY3RvcigpOwotICAgIAotICAgIFBlcnNpc3RlbnRXU0lDb250ZXh0IHdzaUNvbnRleHQgPSBuZXcgUGVyc2lzdGVudFdTSUNvbnRleHQoKTsKLSAgICBpbnQgc2V2ZXJpdHkgPSBXU0lDb21wbGlhbmNlVXRpbHMuZ2V0V1NJU2V2ZXJpdHkoc2VydmljZVByb2plY3RfLCB3c2lDb250ZXh0KTsKLSAgICBjaGVja1JQQ0VuY29kZWQoc2V2ZXJpdHkpOwotICAgIFN0YXR1c1tdIHN0YXR1c2VzID0gKFN0YXR1c1tdKSBzdGF0dXMudG9BcnJheShuZXcgU3RhdHVzW3N0YXR1cy5zaXplKCldKTsKLQotICAgIGlmIChzdGF0dXNlcy5sZW5ndGggPT0gMCB8fAotICAgIAkJV1NJQ29tcGxpYW5jZVV0aWxzLmNoZWNrV1NJQ29tcGxpYW5jZSAoZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLCBzdGF0dXNlcywgc2VydmljZVByb2plY3RfLCB3c2lDb250ZXh0KSkKLSAgICAJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgZWxzZSB7Ci0gICAgCXJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cygiIik7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGNoZWNrUlBDRW5jb2RlZChpbnQgc2V2ZXJpdHkpCi0gIHsKLSAgCQlpZiAoSmF2YVdTRExQYXJhbWV0ZXIuU1RZTEVfUlBDLmVxdWFscyhqYXZhV1NETFBhcmFtLmdldFN0eWxlKCkpICYmIAotICAJCSAgIEphdmFXU0RMUGFyYW1ldGVyLlVTRV9FTkNPREVELmVxdWFscyhqYXZhV1NETFBhcmFtLmdldFVzZSgpKSkKLSAgCQkgICBzdGF0dXMuYWRkIChuZXcgU3RhdHVzKHNldmVyaXR5LCAiVmFsaWRhdGVXU0lDb21wbGlhbmNlQ29tbWFuZCIsIDAsIAotICAJCQkJIEF4aXNDcmVhdGlvblVJTWVzc2FnZXMuV1NJX0lOQ09NUExJQU5DRV9SUENfRU5DT0RFRCwgbnVsbCkpOwotCi0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWVzc2FnZSBzdHJpbmcgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4ga2V5IGZyb20KLSAgICogcGx1Z2luLnByb3BlcnRpZXMuCi0gICAqIEByZXR1cm4gVGhlIFN0cmluZyBtZXNzYWdlLgotICAgKi8KLQotLyoqCi0gKiBAcGFyYW0gamF2YVdTRExQYXJhbSBUaGUgamF2YVdTRExQYXJhbSB0byBzZXQuCi0gKiBAdG9kbyBHZW5lcmF0ZWQgY29tbWVudAotICovCi1wdWJsaWMgdm9pZCBzZXRKYXZhV1NETFBhcmFtKEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW0pIHsKLQl0aGlzLmphdmFXU0RMUGFyYW0gPSBqYXZhV1NETFBhcmFtOwotfQotCi0vKioKLSAqIEBwYXJhbSBzZXJ2aWNlUHJvamVjdF8gVGhlIHNlcnZpY2VQcm9qZWN0XyB0byBzZXQuCi0gKiBAdG9kbyBHZW5lcmF0ZWQgY29tbWVudAotICovCi1wdWJsaWMgdm9pZCBzZXRTZXJ2aWNlUHJvamVjdChJUHJvamVjdCBzZXJ2aWNlUHJvamVjdF8pIHsKLQl0aGlzLnNlcnZpY2VQcm9qZWN0XyA9IHNlcnZpY2VQcm9qZWN0XzsKLX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3BsdWdpbi9XZWJTZXJ2aWNlQXhpc0NyZWF0aW9uVUlQbHVnaW4uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3BsdWdpbi9XZWJTZXJ2aWNlQXhpc0NyZWF0aW9uVUlQbHVnaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFkZGQyYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS9wbHVnaW4vV2ViU2VydmljZUF4aXNDcmVhdGlvblVJUGx1Z2luLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDI0ICAgMTE1NjkwIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLnBsdWdpbjsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucHJlZmVyZW5jZS5JUHJlZmVyZW5jZVN0b3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuRW52aXJvbm1lbnRTZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUxvZzsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsKLQotLyoqCi0qIFRoaXMgaXMgdGhlIHBsdWdpbiBjbGFzcyBmb3IgdGhlIFdlYiBTZXJ2aWNlcyBwbHVnaW4uCi0qIDxwPgotKiBUaGlzIHBsdWdpbiBjb250YWlucyB0aGUgZ3JhcGhpYyB1c2VyIGludGVyZmFjZSB0byB0aGUKLSogV2ViIFNlcnZpY2VzIHJ1bnRpbWUgZm91bmQgaW4gb3JnLmVjbGlwc2UuanN0LndzLgotKi8KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlQXhpc0NyZWF0aW9uVUlQbHVnaW4gZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luCi17Ci0KLSAgLyoqCi0gICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRlc2NyaXB0b3Igb2YgdGhpcyBwbHVnaW4gaW4gcGx1Z2luLnhtbC4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSUQgPSAib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkiOwkvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICogVGhlIHJlZmVyZW5jZSB0byB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgcGx1Z2luLgotICAqLwotICBwcml2YXRlIHN0YXRpYyBXZWJTZXJ2aWNlQXhpc0NyZWF0aW9uVUlQbHVnaW4gaW5zdGFuY2VfOwotICBwcml2YXRlIElMb2cgbG9nXzsKLQotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgcnVudGltZSBwbHVnaW4gb2JqZWN0IGZvciB0aGlzIHBsdWdpbi4KLSAgKiBUaGUgInBsdWdpbiIgZWxlbWVudCBpbiBwbHVnaW4ueG1sIHNob3VsZCBpbmNsdWRlIHRoZSBhdHRyaWJ1dGUKLSAgKiBjbGFzcyA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkucGx1Z2luLldlYlNlcnZpY2VQbHVnaW4iLgotICAqIEBwYXJhbSBkZXNjcmlwdG9yIFRoZSBkZXNjcmlwdG9yIG9mIHRoaXMgcGx1Z2luLgotICAqLwotICBwdWJsaWMgV2ViU2VydmljZUF4aXNDcmVhdGlvblVJUGx1Z2luKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgaWYgKGluc3RhbmNlXyA9PSBudWxsKQotICAgIHsKLSAgICAgIGluc3RhbmNlXyA9IHRoaXM7Ci0gICAgfQotICAgIGxvZ18gPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZUxvZygpOwotCi0gIH0KLQotICAvLyBUaGlzIG1ldGhvZCBpcyBuZWVkZWQgdG8ga2VlcCB0aGUgbG9nZ2luZyBmcm9tIGJsb3dpbmcgdXAuCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgcmV0dXJuIElEOyAgCi0gIH0KLSAgCi0gIC8qKgotICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIHBsdWdpbi4gRXF1aXZhbGVudCB0byBjYWxsaW5nCi0gICogKFdlYlNlcnZpY2VXYXNDcmVhdGlvblVJUGx1Z2luKVBsYXRmb3JtLmdldFBsdWdpbigib3JnLmVjbGlwc2UuanN0LndzLndhcy52NS50cC51aSIpOwotICAqIEByZXR1cm4gVGhlIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luIHNpbmdsZXRvbi4KLSAgKi8KLSAgc3RhdGljIHB1YmxpYyBXZWJTZXJ2aWNlQXhpc0NyZWF0aW9uVUlQbHVnaW4gZ2V0SW5zdGFuY2UgKCkKLSAgewotICAgIHJldHVybiBpbnN0YW5jZV87Ci0gIH0KLQotICAvKioKLSAgKiBDYWxsZWQgb25jZSBieSB0aGUgcGxhdGZvcm0gd2hlbiB0aGlzIHBsdWdpbiBpcyBmaXJzdCBsb2FkZWQuCi0gICogQHRocm93cyBDb3JlRXhjZXB0aW9uIElmIHRoaXMgcGx1Z2luIGZhaWxzIHRvIHN0YXJ0LgotICAqLwotICBwdWJsaWMgdm9pZCBzdGFydCggQnVuZGxlQ29udGV4dCBjb250ZXh0ICkgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAJbG9nXy5sb2coSUxvZy5JTkZPLCA1MDY4LCB0aGlzLCAic3RhcnQiLCAiU3RhcnRpbmcgcGx1Z2luIG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpIik7Ci0gICAgCi0gICAgdHJ5Ci0gICAgewotICAgICAgc3VwZXIuc3RhcnQoIGNvbnRleHQgKTsKLSAgICB9Ci0gICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgIHsKLSAgICAgIGxvZ18ubG9nKCBJTG9nLkVSUk9SLCA1MDY4LCB0aGlzLCAic3RhcnQiLCBleGMgKTsgIAotICAgIH0KLSAgICAKLSAgICBzZXRQcmVmZXJlbmNlcygpOwotICB9Ci0KLSAgLyoqCi0gICogQ2FsbGVkIG9uY2UgYnkgdGhlIHBsYXRmb3JtIHdoZW4gdGhpcyBwbHVnaW4gaXMgdW5sb2FkZWQuCi0gICogQHRocm93cyBDb3JlRXhjZXB0aW9uIElmIHRoaXMgcGx1Z2luIGZhaWxzIHRvIHNodXRkb3duLgotICAqLwotICBwdWJsaWMgdm9pZCBzdG9wKCBCdW5kbGVDb250ZXh0IGNvbnRleHQgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICB7Ci0gIAlsb2dfLmxvZyhJTG9nLklORk8sIDUwNjksIHRoaXMsICJzdG9wIiwgIlNodXR0aW5nIHBsdWdpbiBvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aSIpOwotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLnN0b3AoIGNvbnRleHQgKTsKLSAgICB9Ci0gICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgIHsKLSAgICAgIGxvZ18ubG9nKCBJTG9nLkVSUk9SLCA1MDY4LCB0aGlzLCAic3RhcnQiLCBleGMgKTsgICAgICAgIAotICAgIH0KLSAgfQotCi0KLSAgLyoqCi0gICAqIFNldHMgdGhlIGdlbmVyYWwgcHJlZmVyZW5jZXMgdG8gdGhlIHZhbHVlcyBpbiB0aGUgcHJlZmVyZW5jZXMgc3RvcmUuCi0gICoqLwotICBwdWJsaWMgdm9pZCBzZXRQcmVmZXJlbmNlcygpCi0gIHsKLSAgIC8vIHNldERpYWxvZ3NQcmVmZXJlbmNlcygpOwotICB9Ci0KLSAvKioKLSAgICogQHNlZSBBYnN0cmFjdFVJUGx1Z2luI2luaXRpYWxpemVEZWZhdWx0UHJlZmVyZW5jZXMKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGluaXRpYWxpemVEZWZhdWx0UHJlZmVyZW5jZXMoSVByZWZlcmVuY2VTdG9yZSBwcmVmZXJlbmNlU3RvcmUpIHsKLQotCS8vIFNldCB0aGUgZGVmYXVsdHMgUHJlZmVyZW5jZQotLy8JQWN0aW9uRGlhbG9nc1ByZWZlcmVuY2VIZWxwZXIuaW5pdGlhbGl6ZURlZmF1bHRzKHByZWZlcmVuY2VTdG9yZSk7Ci0gIH0KLSAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3Rhc2svQlVDb25maWdDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS90YXNrL0JVQ29uZmlnQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDhlZjQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3Rhc2svQlVDb25maWdDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjQgICAxMjAxMzcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLnRhc2s7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLXB1YmxpYyBjbGFzcyBCVUNvbmZpZ0NvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiB7Ci0JcHVibGljIEJVQ29uZmlnQ29tbWFuZCgpIHsKLQl9Ci0KLQkvKgotCSAqIFRoZSBleGVjdXRlIG1ldGhvZCBvZiB0aGlzIGNvbW1hbmQgZG8gbm90aGluZy4gIEl0IGlzIG1lcmVseSBhbiBhbmNob3IgcG9pbnQgZm9yIFVJIHBhZ2UKLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUpIHsKLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS90YXNrL0JhY2t1cFNrZWxJbXBsQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvdGFzay9CYWNrdXBTa2VsSW1wbENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcwNjMyMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS90YXNrL0JhY2t1cFNrZWxJbXBsQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMzMCAxMjg4MjcgICBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA0MDMgMTI4ODI3ICAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNTI0IDEyNzM0MyAgIG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbgotICogMjAwNzAxMTYgMTY5MTM4ICAgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCQotICogMjAwNzA4MTUgICAxODg5OTkgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzExMTMgICAyMDkwNzUga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS50YXNrOwotCi0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLkF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudXRpbC5QbGF0Zm9ybVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnV0aWwuV1NETFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VJbmZvOwotCi1wdWJsaWMgY2xhc3MgQmFja3VwU2tlbEltcGxDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSU1QTCA9ICJJbXBsIjsJLy8kTk9OLU5MUy0xJAotICBwcml2YXRlIGZpbmFsIFN0cmluZyBET1QgPSAiLiI7CS8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSkFWQSA9ICJqYXZhIjsJLy8kTk9OLU5MUy0xJAotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyOwotICBwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW07IAotICAKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlSW5mbyB3ZWJTZXJ2aWNlSW5mbzsKLQotICBwdWJsaWMgQmFja3VwU2tlbEltcGxDb21tYW5kKCApIHsKLSAgfQotICAKLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLSAgewotCSAgSUVudmlyb25tZW50IGVudmlyb25tZW50ID0gZ2V0RW52aXJvbm1lbnQoKTsKLQkgIGlmIChqYXZhV1NETFBhcmFtID09IG51bGwpCi0JICB7Ci0JCSAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuTVNHX0VSUk9SX0pBVkFfV1NETF9QQVJBTV9OT1RfU0VUKTsKLQkJICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJICByZXR1cm4gc3RhdHVzOwotCSAgfQotCSAgCi0JICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JICAvLyBSZWFkIFdTREwKLQkgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IG51bGw7Ci0JICBTdHJpbmcgd3NkbFVSTCA9IGphdmFXU0RMUGFyYW0uZ2V0SW5wdXRXc2RsTG9jYXRpb24oKTsKLQkgIHRyeQotCSAgewotCQkgIFVSTCB1cmwgPSBuZXcgVVJMKHdzZGxVUkwpOwotCQkgIGRlZmluaXRpb24gPSB3ZWJTZXJ2aWNlc1BhcnNlci5nZXRXU0RMRGVmaW5pdGlvbih1cmwudG9TdHJpbmcoKSk7Ci0JICB9Ci0JICBjYXRjaChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLQkgIHsKLQkJICB3c2RsVVJMID0gUGxhdGZvcm1VdGlscy5nZXRGaWxlVVJMRnJvbVBhdGgobmV3IFBhdGgod3NkbFVSTCkpOwotCQkgIGRlZmluaXRpb24gPSB3ZWJTZXJ2aWNlc1BhcnNlci5nZXRXU0RMRGVmaW5pdGlvbih3c2RsVVJMKTsKLQkgIH0KLQkgIAotCSAgLy8gQ29tcHV0ZSB0aGUgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIEphdmEgYmVhbiBza2VsZXRvbgotCSAgU2VydmljZSBzZXJ2aWNlID0gbnVsbDsKLQkgIFBvcnQgcG9ydCA9IG51bGw7Ci0JICBBcnJheUxpc3QgaW1wbFVSTExpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0JICBpZiAoZGVmaW5pdGlvbiAhPSBudWxsKSB7Ci0JCSAgU3RyaW5nQnVmZmVyIGJlYW5OYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQkgIAotCQkgIC8vZmlyc3QgY2hlY2sgaWYgdGhlcmUgaXMgYSBtYXBwaW5nIGZvciB0aGlzIG5hbWVzcGFjZSB0byBhIHBhY2thZ2UgbmFtZQotCQkgIC8vaWYgbm90IHRoZW4gY29tcHV0ZSBwYWNrYWdlIG5hbWUgZnJvbSBuYW1lc3BhY2UKLQkJICBTdHJpbmcgYmVhblBhY2thZ2VOYW1lID0gbnVsbDsKLQkJICBNYXAgbWFwcGluZ3MgPSBqYXZhV1NETFBhcmFtLmdldE1hcHBpbmdzKCk7Ci0JCSAgaWYgKG1hcHBpbmdzICE9IG51bGwpCi0JCSAgewotCQkJICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLQkJCSAgYmVhblBhY2thZ2VOYW1lID0gKFN0cmluZyltYXBwaW5ncy5nZXQodGFyZ2V0TmFtZXNwYWNlKTsKLQkJICB9Ci0JCSAgaWYgKGJlYW5QYWNrYWdlTmFtZSA9PSBudWxsKQotCQkgIHsKLQkJCSAgYmVhblBhY2thZ2VOYW1lID0gV1NETFV0aWxzLmdldFBhY2thZ2VOYW1lKGRlZmluaXRpb24pOwotCQkgIH0JCSAgCi0JCSAgCi0JCSAgamF2YVdTRExQYXJhbS5zZXRCZWFuUGFja2FnZShiZWFuUGFja2FnZU5hbWUpOwkJICAKLQkJICBiZWFuTmFtZS5hcHBlbmQoYmVhblBhY2thZ2VOYW1lKTsKLQkJICBiZWFuTmFtZS5hcHBlbmQoRE9UKTsKLQkJICAKLQkJICBzZXJ2aWNlID0gKFNlcnZpY2UpIGRlZmluaXRpb24uZ2V0U2VydmljZXMoKS52YWx1ZXMoKS5pdGVyYXRvcigpLm5leHQoKTsKLQkJICBwb3J0ID0gKFBvcnQpIHNlcnZpY2UuZ2V0UG9ydHMoKS52YWx1ZXMoKS5pdGVyYXRvcigpLm5leHQoKTsKLQkJICBCaW5kaW5nIGJpbmRpbmcgPSBwb3J0LmdldEJpbmRpbmcoKTsKLQkJICAKLQkJICBTdHJpbmcgcU5hbWUgPSBiaW5kaW5nLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7CQkgIAotCQkgIGJlYW5OYW1lLmFwcGVuZChxTmFtZS5zdWJzdHJpbmcoMCwxKS50b1VwcGVyQ2FzZSgpKTsvL0ZpeCBmb3IgYnVnIDE2OTEzOCwgbmVlZCB0byBlbnN1cmUgZmlyc3QgY2hhciBpcyB1cHBlcmNhc2UKLQkJICBiZWFuTmFtZS5hcHBlbmQocU5hbWUuc3Vic3RyaW5nKDEpKTsKLQotCQkgIGJlYW5OYW1lLmFwcGVuZChJTVBMKTsKLQkJICBTdHJpbmcgYmVhbk5hbWVTdHJpbmcgPSBiZWFuTmFtZS50b1N0cmluZygpOwotCQkgIGphdmFXU0RMUGFyYW0uc2V0QmVhbk5hbWUoYmVhbk5hbWVTdHJpbmcpOwotCQkgIAotCQkgIC8vIERlZmVjdCAyMDkwNzUgLSBEbyBub3QgYmFjayB1cCBhbnltb3JlIHNpbmNlIHNrZWxldG9uIG1lcmdlIGlzIGRlZmF1bHRlZCB0byBvbi4KLQkJICAKLQkJICBTdHJpbmcgYmVhbk5hbWVQYXRoU3RyaW5nID0gYmVhbk5hbWVTdHJpbmcucmVwbGFjZSgnLicsSVBhdGguU0VQQVJBVE9SKTsKLQkJICBJUGF0aCBza2VsSW1wbFBhdGggPSBuZXcgUGF0aCAoamF2YVdTRExQYXJhbS5nZXRKYXZhT3V0cHV0KCkpLmFwcGVuZChuZXcgUGF0aCAoYmVhbk5hbWVQYXRoU3RyaW5nKSkuYWRkRmlsZUV4dGVuc2lvbihKQVZBKTsKLQkJICAKLQkJICAvLyBzdG9yZSB0aGUgbmFtZSBvZiB0aGUgaW1wbFVSTAotCQkgIFN0cmluZyBpbXBsVVJMU3RyaW5nOwotCQkgIHRyeSB7Ci0JCQkgIGltcGxVUkxTdHJpbmcgPSBza2VsSW1wbFBhdGgudG9GaWxlKCkudG9VUkwoKS50b1N0cmluZygpOwotCQkgIH0gY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlMSkgewotCQkJICBpbXBsVVJMU3RyaW5nID0gUGxhdGZvcm1VdGlscy5nZXRGaWxlVVJMRnJvbVBhdGgoc2tlbEltcGxQYXRoKTsKLQkJICB9Ci0JCSAgaW1wbFVSTExpc3QuYWRkKCBpbXBsVVJMU3RyaW5nICk7Ci0JCSAgCi0JCSAgU3RyaW5nW10gaW1wbFVSTEFycmF5ID0gbmV3IFN0cmluZ1tpbXBsVVJMTGlzdC5zaXplKCldOwotCQkgIHdlYlNlcnZpY2VJbmZvLnNldEltcGxVUkxzKCAoU3RyaW5nW10pIChpbXBsVVJMTGlzdC50b0FycmF5KGltcGxVUkxBcnJheSkpKTsKLQotCSAgfSAKLQkgIGVsc2UgewotCQkgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9XU0RMX05PX0RFRklOSVRJT04sIG5ldyBTdHJpbmdbXSB7d3NkbFVSTH0pKTsKLQkJICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkgIH0gIAotCSAgCi0JICByZXR1cm4gc3RhdHVzOwotICB9Ci0gIAotCi0gIC8qKgotICAqIFNldHMgdGhlIGphdmFXU0RMUGFyYW0uCi0gICogQHBhcmFtIGphdmFXU0RMUGFyYW0gVGhlIGphdmFXU0RMUGFyYW0gdG8gc2V0Ci0gICovCi0gIHB1YmxpYyB2b2lkIHNldEphdmFXU0RMUGFyYW0oSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbSkgewotICAgIHRoaXMuamF2YVdTRExQYXJhbSA9IGphdmFXU0RMUGFyYW07Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHdlYlNlcnZpY2VzUGFyc2VyIFRoZSB3ZWJTZXJ2aWNlc1BhcnNlciB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlc1BhcnNlcihXZWJTZXJ2aWNlc1BhcnNlciB3ZWJTZXJ2aWNlc1BhcnNlcikgewotICAgIHRoaXMud2ViU2VydmljZXNQYXJzZXIgPSB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgfQotCi0KLXB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VJbmZvKFdlYlNlcnZpY2VJbmZvIHdlYlNlcnZpY2VJbmZvKSB7Ci0JdGhpcy53ZWJTZXJ2aWNlSW5mbyA9IHdlYlNlcnZpY2VJbmZvOwotfQotICAKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvdGFzay9EZWZhdWx0c0ZvclNlcnZlckphdmFXU0RMQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvdGFzay9EZWZhdWx0c0ZvclNlcnZlckphdmFXU0RMQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjU2MzZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3Rhc2svRGVmYXVsdHNGb3JTZXJ2ZXJKYXZhV1NETENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDMzMCAgIDEyNDY2NyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA1MjQgICAxMjg2MDEgYW5keXpoYWlAY2EuaWJtLmNvbSAtIEFuZHkgWmhhaQotICogMjAwNjEwMDQgICAxNTkzNTYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4sIEdldCBjb3JyZWN0IG1vZHVsZSByb290IFVSTCBiYXNlZCBvbiBzZXJ2ZXIgY2hvc2VuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkudGFzazsKLQotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLkF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS5BeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnV0aWwuQ2xhc3NwYXRoVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudXRpbC5GaWxlVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS51dGlsLlBsYXRmb3JtVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudXRpbC5XU0RMVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU2VydmVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzaWwuVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuV2ViU2VydmljZXNQYXJzZXJFeHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi1wdWJsaWMgY2xhc3MgRGVmYXVsdHNGb3JTZXJ2ZXJKYXZhV1NETENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiB7Ci0KLQlwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW1fID0gbnVsbDsKLQlwcml2YXRlIElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0XzsKLQlwcml2YXRlIFN0cmluZyBqYXZhQmVhbk5hbWVfOyAvLyB0aGlzIG5lZWRzIHRvIGJlIHNldCBieSB0aGUgZXh0ZW5zaW9uIHdpdGggaW5pdGlhbCBzZWxlY3Rpb24KLQlwcml2YXRlIFN0cmluZyBXU0RMU2VydmljZVVSTF87Ci0JcHJpdmF0ZSBTdHJpbmcgV1NETFNlcnZpY2VQYXRobmFtZV87Ci0JcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciBXU1BhcnNlcl87Ci0gICAgcHJpdmF0ZSBTdHJpbmcgc2VydmljZVNlcnZlclR5cGVJRF87Ci0JCi0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgV1NETF9GT0xERVIgPSAid3NkbCI7IC8vJE5PTi1OTFMtMSQKLQlwdWJsaWMgZmluYWwgU3RyaW5nIFNFUlZJQ0VfRVhUID0gIi9zZXJ2aWNlcy8iOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgV1NETF9FWFQgPSAid3NkbCI7IC8vJE5PTi1OTFMtMSQKLQlwdWJsaWMgZmluYWwgYnl0ZSBNT0RFX0JFQU4gPSAoYnl0ZSkgMDsKLQlwdWJsaWMgZmluYWwgU3RyaW5nIFNFUlZJQ0VfTkFNRV9FWFQgPSAiU2VydmljZSI7IC8vJE5PTi1OTFMtMSQKLQlwcml2YXRlIGZpbmFsIFN0cmluZyBURU1QX1VSSSA9ICJodHRwOi8vdGVtcHVyaS5vcmcvIjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXI7Ci0KLQlwdWJsaWMgRGVmYXVsdHNGb3JTZXJ2ZXJKYXZhV1NETENvbW1hbmQoICkgCi0JewotCX0KLQkKLQotCS8qKgotCSogRXhlY3V0ZSBEZWZhdWx0c0ZvckphdmFUb1dTRExUYXNrCi0JKi8KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkgCi0JewotCQlJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCi0JCUlTdGF0dXMgc3RhdHVzOwotCQlpZiAoamF2YVdTRExQYXJhbV8gPT0gbnVsbCkgewotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIEF4aXNDb25zdW1wdGlvbkNvcmVNZXNzYWdlcy5NU0dfRVJST1JfSkFWQV9XU0RMX1BBUkFNX05PVF9TRVQpOwotCQkJZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQlyZXR1cm4gc3RhdHVzOwotCQl9Ci0JCQotCQlpZiAoamF2YUJlYW5OYW1lXyA9PSBudWxsKSB7ICAvLyBlaXRoZXIgc2V0IGJ5IGV4dGVuc2lvbiBwb2ludCBvciBiZWFuIGNsYXNzIHBhZ2UKLQkJCWphdmFCZWFuTmFtZV8gPSBqYXZhV1NETFBhcmFtXy5nZXRCZWFuTmFtZSgpOwotCQkJaWYgKGphdmFCZWFuTmFtZV8gPT0gbnVsbCkgewotCQkJCS8vcm0gamF2YUJlYW5OYW1lXyA9IGlzZEVsZW1lbnQuZ2V0SmF2YUJlYW5OYW1lKCk7Ci0JCQkJamF2YVdTRExQYXJhbV8uc2V0QmVhbk5hbWUoamF2YUJlYW5OYW1lXyk7Ci0JCQl9Ci0JCX0KLQkJLy8gcm0gV1NQYXJzZXJfID0JKFdlYlNlcnZpY2VzUGFyc2VyKSB3c2VfLmdldFdTUGFyc2VyKCk7Ci0JCQotCQlqYXZhV1NETFBhcmFtXy5zZXRTZXJ2ZXJTaWRlKEphdmFXU0RMUGFyYW1ldGVyLlNFUlZFUl9TSURFX0JFQU4pOwotCQlqYXZhV1NETFBhcmFtXy5zZXRTa2VsZXRvbkRlcGxveShmYWxzZSk7Ci0KLQkJamF2YVdTRExQYXJhbV8uc2V0QmVhbk5hbWUoamF2YUJlYW5OYW1lXyk7Ci0JCVN0cmluZyBjbGFzc3BhdGggPSBDbGFzc3BhdGhVdGlscy5nZXRJbnN0YW5jZSgpLmdldENsYXNzcGF0aFN0cmluZyhzZXJ2aWNlUHJvamVjdF8pOwotCQlqYXZhV1NETFBhcmFtXy5zZXRDbGFzc3BhdGgoY2xhc3NwYXRoKTsKLQotCQlTdHJpbmcgc2ltcGxlQmVhbk5hbWUgPSBqYXZhQmVhbk5hbWVfOwotCQlpZiAoamF2YUJlYW5OYW1lXyAhPSBudWxsKSB7Ci0JCQlpbnQgaW5kZXggPSBqYXZhQmVhbk5hbWVfLmxhc3RJbmRleE9mKCcuJyk7Ci0JCQlpZiAoaW5kZXggIT0gLTEpIHsKLQkJCQlzaW1wbGVCZWFuTmFtZSA9IGphdmFCZWFuTmFtZV8uc3Vic3RyaW5nKGluZGV4ICsgMSk7Ci0JCQl9Ci0JCX0KLQkJU3RyaW5nIG5hbWVzcGFjZSA9IFdTRExVdGlscy5tYWtlTmFtZXNwYWNlKGphdmFXU0RMUGFyYW1fLmdldEJlYW5OYW1lKCkpOwotCQlqYXZhV1NETFBhcmFtXy5zZXROYW1lc3BhY2UobmFtZXNwYWNlKTsKLQotCQlqYXZhV1NETFBhcmFtXy5zZXRQb3J0VHlwZU5hbWUoc2ltcGxlQmVhbk5hbWUpOwotCQlqYXZhV1NETFBhcmFtXy5zZXRTZXJ2aWNlTmFtZShzaW1wbGVCZWFuTmFtZSArIFNFUlZJQ0VfTkFNRV9FWFQpOwotCi0JCUlQYXRoIG1vZHVsZVNlcnZlclJvb3QgPSBudWxsOwotCi0JCUlQYXRoIG1vZHVsZVBhdGggPSBzZXJ2aWNlUHJvamVjdF8uZ2V0RnVsbFBhdGgoKTsKLQkJSVBhdGggd2ViaW5mUGF0aCA9IHNlcnZpY2VQcm9qZWN0Xy5nZXRGdWxsUGF0aCgpOwotCQl0cnkgewotCQkJaWYgKEoyRUVVdGlscy5pc1dlYkNvbXBvbmVudChzZXJ2aWNlUHJvamVjdF8pKXsKLQkJCQltb2R1bGVTZXJ2ZXJSb290ID0gUmVzb3VyY2VVdGlscy5nZXRKYXZhU291cmNlTG9jYXRpb24oc2VydmljZVByb2plY3RfKTsKLQkJCQltb2R1bGVQYXRoID0gSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRQYXRoKHNlcnZpY2VQcm9qZWN0Xyk7Ci0JCQkJd2ViaW5mUGF0aCA9IEoyRUVVdGlscy5nZXRXZWJJbmZQYXRoKCBzZXJ2aWNlUHJvamVjdF8gKTsJCQkJCi0JCQl9Ci0JCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQlzdGF0dXMgPSAgU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX0RFRkFVTFRfQkVBTiwgZSApOwotCQkJZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQlyZXR1cm4gc3RhdHVzOwotCQl9Ci0KLQkJSVBhdGggd3NkbFBhdGggPQotCQkJbW9kdWxlUGF0aC5hcHBlbmQoV1NETF9GT0xERVIpLmFwcGVuZChzaW1wbGVCZWFuTmFtZSkuYWRkRmlsZUV4dGVuc2lvbihXU0RMX0VYVCk7Ci0KLQkJdHJ5ewotCQkJSUZvbGRlciBmb2xkZXIgPSBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKS5nZXRGb2xkZXIobW9kdWxlUGF0aC5hcHBlbmQoV1NETF9GT0xERVIpKTsKLQkJCUZpbGVVdGlsLmNyZWF0ZUZvbGRlcihmb2xkZXIsIHRydWUsIHRydWUpOwotCQkKLQkJfQotCQljYXRjaChDb3JlRXhjZXB0aW9uIGUpewotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1dSSVRFX1dTREwsIGUgKTsKLQkJCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJcmV0dXJuIHN0YXR1czsKLQkJfQotCQkKLQkJU3RyaW5nIHdzZGxMb2NhdGlvbiA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZpbGUod3NkbFBhdGgpLmdldExvY2F0aW9uKCkudG9TdHJpbmcoKTsKLQotCQlqYXZhV1NETFBhcmFtXy5zZXRPdXRwdXRXc2RsTG9jYXRpb24od3NkbExvY2F0aW9uKTsKLQkJamF2YVdTRExQYXJhbV8uc2V0SW5wdXRXc2RsTG9jYXRpb24obmV3IEZpbGUod3NkbExvY2F0aW9uKS50b1VSSSgpLnRvU3RyaW5nKCkpOwotCQlXU0RMU2VydmljZVBhdGhuYW1lXyA9IHdzZGxQYXRoLnRvU3RyaW5nKCk7Ci0KLQkJaWYgKHdzZGxQYXRoICE9IG51bGwpIHsKLQkJCVN0cmluZyB3c2RsVVJMID0gUGxhdGZvcm1VdGlscy5nZXRGaWxlVVJMRnJvbVBhdGgobmV3IFBhdGgod3NkbExvY2F0aW9uKSk7Ci0JCQlXU0RMU2VydmljZVVSTF8gPSB3c2RsVVJMOwotCQkJLy8gc2V0IHBhcnNlciAKLQkJCWlmICh3c2RsVVJMID09IG51bGwgfHwgd3NkbFVSTC5sZW5ndGgoKSA8PSAwKSB7Ci0JCQkJSVJlc291cmNlIHJlcyA9Ci0JCQkJCVJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKFdTRExTZXJ2aWNlUGF0aG5hbWVfKTsKLQkJCQlpZiAocmVzICE9IG51bGwpCi0JCQkJCXdzZGxVUkwgPSAobmV3IFV0aWxzKCkpLnRvRmlsZVN5c3RlbVVSSShyZXMpOwotCQkJfQotCQkJaWYgKHdzZGxVUkwgIT0gbnVsbCAmJiB3c2RsVVJMLmxlbmd0aCgpID4gMCkgewotCQkJCWlmIChXU1BhcnNlcl8gPT0gbnVsbCkgewotCQkJCQlXU1BhcnNlcl8gPSBuZXcgV2ViU2VydmljZXNQYXJzZXJFeHQoKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlqYXZhV1NETFBhcmFtXy5zZXRTdHlsZShKYXZhV1NETFBhcmFtZXRlci5TVFlMRV9XUkFQUEVEKTsKLQkJamF2YVdTRExQYXJhbV8uc2V0VXNlKEphdmFXU0RMUGFyYW1ldGVyLlVTRV9MSVRFUkFMKTsKLQotICAgICAgICBTdHJpbmcgcHJvamVjdFVSTCA9IG51bGw7Ci0gICAgICAgIGlmIChzZXJ2aWNlU2VydmVyVHlwZUlEXyAhPSBudWxsICYmIHNlcnZpY2VTZXJ2ZXJUeXBlSURfLmxlbmd0aCgpPjApCi0gICAgICAgIHsKLQkJICBwcm9qZWN0VVJMID0gU2VydmVyVXRpbHMuZ2V0RW5jb2RlZFdlYkNvbXBvbmVudFVSTChzZXJ2aWNlUHJvamVjdF8sIHNlcnZpY2VTZXJ2ZXJUeXBlSURfLCBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIpOyAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvamVjdFVSTCA9PSBudWxsKSAvLyBlaXRoZXIgbm8gc2VydmVyIHR5cGUgZGVmaW5lZCBvciBzZXJ2ZXIgbm90IGFibGUgdG8gZ2V0IHByb2plY3QgVVJMCi0gICAgICAgIHsgCi0gICAgICAgICAgcHJvamVjdFVSTCA9IFRFTVBfVVJJICsgc2VydmljZVByb2plY3RfLmdldE5hbWUoKTsgCi0gICAgICAgICAgamF2YVdTRExQYXJhbV8uc2V0R3Vlc3NQcm9qZWN0VVJMKHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGphdmFXU0RMUGFyYW1fLnNldFByb2plY3RVUkwocHJvamVjdFVSTCk7Ci0JCVN0cmluZyBzZXJ2aWNlVVJMID0gcHJvamVjdFVSTCArIFNFUlZJQ0VfRVhUICsgc2ltcGxlQmVhbk5hbWU7Ci0JCWphdmFXU0RMUGFyYW1fLnNldFVybExvY2F0aW9uKHNlcnZpY2VVUkwpOwotCQkKLQkJamF2YVdTRExQYXJhbV8uc2V0TWV0YUluZk9ubHkodHJ1ZSk7Ci0KLQkJU3RyaW5nIGphdmFPdXRwdXQgPQlSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZShtb2R1bGVTZXJ2ZXJSb290KS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JCi0JCVN0cmluZyBzZXJ2aWNlTmFtZSA9IGphdmFXU0RMUGFyYW1fLmdldFNlcnZpY2VOYW1lKCk7Ci0JCUlQYXRoIG91dHB1dFBhdGggPQlSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZSh3ZWJpbmZQYXRoKS5nZXRMb2NhdGlvbigpOwotCQlTdHJpbmcgb3V0cHV0ID0gc2VydmljZVByb2plY3RfLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKTsKLQkJaWYgKG91dHB1dFBhdGghPW51bGwpCi0JCSBvdXRwdXQgPSBvdXRwdXRQYXRoLmFwcGVuZChzZXJ2aWNlTmFtZSkudG9TdHJpbmcoKTsKLQotCQlqYXZhV1NETFBhcmFtXy5zZXRKYXZhT3V0cHV0KGphdmFPdXRwdXQpOwotCQlqYXZhV1NETFBhcmFtXy5zZXRPdXRwdXQob3V0cHV0KTsKLQkJCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGphdmFXU0RMUGFyYW0uCi0JICogQHJldHVybiBKYXZhV1NETFBhcmFtZXRlcgotCSAqLwotCXB1YmxpYyBKYXZhV1NETFBhcmFtZXRlciBnZXRKYXZhV1NETFBhcmFtKCkgewotCQlyZXR1cm4gamF2YVdTRExQYXJhbV87Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgamF2YVdTRExQYXJhbS4KLQkgKiBAcGFyYW0gamF2YVdTRExQYXJhbSBUaGUgamF2YVdTRExQYXJhbSB0byBzZXQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRKYXZhV1NETFBhcmFtKEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW0pIHsKLQkJdGhpcy5qYXZhV1NETFBhcmFtXyA9IGphdmFXU0RMUGFyYW07Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0U2VydmljZVByb2plY3QoSVByb2plY3Qgc2VydmljZVByb2plY3QpIHsKLQkJdGhpcy5zZXJ2aWNlUHJvamVjdF8gPSBzZXJ2aWNlUHJvamVjdDsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0SmF2YUJlYW5OYW1lKFN0cmluZyBqYXZhQmVhbk5hbWUpIHsKLQkJdGhpcy5qYXZhQmVhbk5hbWVfID0gamF2YUJlYW5OYW1lOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldFdTRExTZXJ2aWNlVVJMKCkgewotCQlyZXR1cm4gV1NETFNlcnZpY2VVUkxfOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldFdTRExTZXJ2aWNlUGF0aG5hbWUoKSB7Ci0JCXJldHVybiBXU0RMU2VydmljZVBhdGhuYW1lXzsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0UGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHdzUGFyc2VyKSB7Ci0JCXRoaXMuV1NQYXJzZXJfID0gd3NQYXJzZXI7Ci0JfQotCQotCXB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRQYXJzZXIoKSB7Ci0JCXJldHVybiBXU1BhcnNlcl87Ci0JfQotCi0gIHB1YmxpYyB2b2lkIHNldE9iamVjdFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3RTZWxlY3Rpb24pCi0gIHsKLSAgICBpZiAob2JqZWN0U2VsZWN0aW9uICE9IG51bGwgJiYgIW9iamVjdFNlbGVjdGlvbi5pc0VtcHR5KCkpCi0gICAgewotICAgICAgT2JqZWN0IG9iamVjdCA9IG9iamVjdFNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKTsKLSAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTdHJpbmcpCi0gICAgICAgIHNldEphdmFCZWFuTmFtZSgoU3RyaW5nKW9iamVjdCk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlU2VydmVyVHlwZUlEKFN0cmluZyBpZCkKLSAgewotICAgIHNlcnZpY2VTZXJ2ZXJUeXBlSURfID0gaWQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VFeGlzdGluZ1NlcnZlcihJU2VydmVyIGV4aXN0aW5nU2VydmVyKSB7Ci0JCXNlcnZpY2VFeGlzdGluZ1NlcnZlciA9IGV4aXN0aW5nU2VydmVyOwotCX0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS90YXNrL1NrZWxldG9uMldTRExDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS90YXNrL1NrZWxldG9uMldTRExDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZjZjNDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvdGFzay9Ta2VsZXRvbjJXU0RMQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjk0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwMzMwICAgMTI0NjY3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MTAwNCAgIDE1OTM1NiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbiwgR2V0IGNvcnJlY3QgbW9kdWxlIHJvb3QgVVJMIGJhc2VkIG9uIHNlcnZlciBjaG9zZW4KLSAqIDIwMDcwMTEyICAgMTY1NzIxIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0RMIGltcG9ydCBjYW5ub3QgdXNlIHJlbGF0aXZlIGltcG9ydCB3aXRoIHRvIHBhcmVudCBkaXJlY3RvcmllcwotICogMjAwNzAxMjUgICAxNzEwNzEgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIENyZWF0ZSBwdWJsaWMgdXRpbGl0eSBtZXRob2QgZm9yIGNvcHlpbmcgV1NETCBmaWxlcwotICogMjAwNzA0MDkgICAxODE2MzUgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRExDb3BpZXIgdXRpbGl0eSBzaG91bGQgY3JlYXRlIHRhcmdldCBmb2xkZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS50YXNrOwotCi0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JV29ya3NwYWNlUm9vdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5BeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS51dGlsLkZpbGVVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLnV0aWwuUGxhdGZvcm1VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS51dGlsLldTRExVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TZXJ2ZXJVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudXRpbC5XU0RMQ29waWVyOwotCi1wdWJsaWMgY2xhc3MgU2tlbGV0b24yV1NETENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTRVJWSUNFX0VYVCA9ICIvc2VydmljZXMvIjsJLy8kTk9OLU5MUy0xJAotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NETF9FWFQgPSAid3NkbCI7CS8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgV1NETF9GT0xERVIgPSAid3NkbCI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgcHJpdmF0ZSBKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtOwotICBwcml2YXRlIElQcm9qZWN0IHNlcnZlclByb2plY3Q7Ci0gIHByaXZhdGUgU3RyaW5nIHNlcnZpY2VTZXJ2ZXJUeXBlSURfOyAgCi0gIHByaXZhdGUgSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXI7ICAKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEVNUF9VUkkgPSAiaHR0cDovL3RlbXB1cmkub3JnLyI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgU2tlbGV0b24yV1NETENvbW1hbmQoICkgewotICB9Ci0KLSAgLyoqCi0gICogRXhlY3V0ZSBTa2VsZXRvbjJXU0RMQ29tbWFuZAotICAqLwotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLQl7Ci0JCUlFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0JCWlmIChqYXZhV1NETFBhcmFtID09IG51bGwpCi0JCXsKLQkJCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoQXhpc0NvbnN1bXB0aW9uQ29yZU1lc3NhZ2VzLk1TR19FUlJPUl9KQVZBX1dTRExfUEFSQU1fTk9UX1NFVCk7Ci0JCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCXJldHVybiBzdGF0dXM7Ci0JCX0KLQotICAvLyBSZWFkIFdTREwKLSAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLQlTdHJpbmcgd3NkbFVSTCA9IGphdmFXU0RMUGFyYW0uZ2V0SW5wdXRXc2RsTG9jYXRpb24oKTsKLQl0cnkKLQl7Ci0JCVVSTCB1cmwgPSBuZXcgVVJMKHdzZGxVUkwpOwotCQlkZWZpbml0aW9uID0gd2ViU2VydmljZXNQYXJzZXIuZ2V0V1NETERlZmluaXRpb24odXJsLnRvU3RyaW5nKCkpOwotCX0KLQljYXRjaChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLQl7Ci0JCXdzZGxVUkwgPSBQbGF0Zm9ybVV0aWxzLmdldEZpbGVVUkxGcm9tUGF0aChuZXcgUGF0aCh3c2RsVVJMKSk7Ci0JCWRlZmluaXRpb24gPSB3ZWJTZXJ2aWNlc1BhcnNlci5nZXRXU0RMRGVmaW5pdGlvbih3c2RsVVJMKTsKLQl9Ci0KLSAgICAvLyBDb21wdXRlIHRoZSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgSmF2YSBiZWFuIHNrZWxldG9uCi0gICAgU2VydmljZSBzZXJ2aWNlID0gbnVsbDsKLSAgICBQb3J0IHBvcnQgPSBudWxsOwotICAgIGlmIChkZWZpbml0aW9uICE9IG51bGwpIHsKLSAgICAJCi0gICAgCS8vIGJlYW5OYW1lIGFuZCBiZWFuUGFja2FnZU5hbWUgYXJlIG5vdyBzZXQgaW4gQmFja3VwU2tlbEltcGxDb21tYW5kCi0gICAgCQotICAgIAlzZXJ2aWNlID0gKFNlcnZpY2UpIGRlZmluaXRpb24uZ2V0U2VydmljZXMoKS52YWx1ZXMoKS5pdGVyYXRvcigpLm5leHQoKTsKLSAgICAJcG9ydCA9IChQb3J0KSBzZXJ2aWNlLmdldFBvcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKS5uZXh0KCk7Ci0gICAgCQotICAgIAlqYXZhV1NETFBhcmFtLnNldFBvcnRUeXBlTmFtZShXU0RMVXRpbHMuZ2V0UG9ydFR5cGVOYW1lKGRlZmluaXRpb24pKTsKLSAgICAJamF2YVdTRExQYXJhbS5zZXRTZXJ2aWNlTmFtZShXU0RMVXRpbHMuZ2V0U2VydmljZUVsZW1lbnROYW1lKGRlZmluaXRpb24pKTsKLQotICAgIH0gCi0gICAgZWxzZSB7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9XU0RMX05PX0RFRklOSVRJT04sIG5ldyBTdHJpbmdbXSB7d3NkbFVSTH0pKTsKLSAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0KLSAgICAvLyBNb2RpZnkgV1NETCBlbmRwb2ludAotICAgIGlmIChwb3J0ID09IG51bGwpIHsKLSAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKEF4aXNDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1dTRExfTk9fUE9SVCwgbmV3IFN0cmluZ1tdIHt3c2RsVVJMfSkpOwotICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgICBNYXAgc2VydmljZXMgPSBkZWZpbml0aW9uLmdldFNlcnZpY2VzKCk7Ci0gICAgZm9yIChJdGVyYXRvciBzZXJ2aWNlc0l0ID0gc2VydmljZXMudmFsdWVzKCkuaXRlcmF0b3IoKTsgc2VydmljZXNJdC5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIFNlcnZpY2UgcyA9IChTZXJ2aWNlKXNlcnZpY2VzSXQubmV4dCgpOwotICAgICAgTWFwIHBvcnRzID0gcy5nZXRQb3J0cygpOwotICAgICAgZm9yIChJdGVyYXRvciBwb3J0c0l0ID0gcG9ydHMudmFsdWVzKCkuaXRlcmF0b3IoKTsgcG9ydHNJdC5oYXNOZXh0KCk7KQotICAgICAgewotICAgICAgICBQb3J0IHAgPSAoUG9ydClwb3J0c0l0Lm5leHQoKTsKLSAgICAgICAgbW9kaWZ5RW5kcG9pbnQocCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gU2V0IFdTREwgZmlsZSBuYW1lOiBqYXZhV1NETFBhcmFtLnNldE91dHB1dFdzZGxMb2NhdGlvbigpOwotICAgIElXb3Jrc3BhY2VSb290IHdvcmtzcGFjZSA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCk7Ci0KLSAgICBTdHJpbmcgd3NkbExvY2F0aW9uID0gamF2YVdTRExQYXJhbS5nZXRPdXRwdXRXc2RsTG9jYXRpb24oKTsKLSAgICBJUGF0aCB3c2RsUGF0aCA9IG51bGw7Ci0gICAgSUZpbGUgb3V0cHV0RmlsZSA9IG51bGw7Ci0gICAgdHJ5IHsKLSAgICAgaWYod3NkbExvY2F0aW9uICE9IG51bGwpewotCQlvdXRwdXRGaWxlID0gd29ya3NwYWNlLmdldEZpbGVGb3JMb2NhdGlvbiggbmV3IFBhdGgod3NkbExvY2F0aW9uKSk7Ci0gICAgIH0KLSAgICAgZWxzZXsKLS8vCQl3c2RsUGF0aCA9IHNlcnZlclByb2plY3QuZ2V0RnVsbFBhdGgoKTsKLS8vCQkKLS8vCQlpZiAoc2VydmVyUHJvamVjdC5oYXNOYXR1cmUoSVdlYk5hdHVyZUNvbnN0YW50cy5KMkVFX05BVFVSRV9JRCkpIHsKLS8vCQkJICAgSjJFRVdlYk5hdHVyZVJ1bnRpbWUgd2ViUHJvamVjdCA9Ci0vLwkJCQkgKEoyRUVXZWJOYXR1cmVSdW50aW1lKSBzZXJ2ZXJQcm9qZWN0LmdldE5hdHVyZSgKLS8vCQkJCSAgIElXZWJOYXR1cmVDb25zdGFudHMuSjJFRV9OQVRVUkVfSUQpOwotLy8JCQkgICB3c2RsUGF0aCA9IEoyRUVVdGlscy5nZXRXZWJDb250ZW50UGF0aCggc2VydmVyUHJvamVjdCwgbW9kdWxlTmFtZV8gKTsKLS8vCQkJICAgLy93c2RsUGF0aCA9IHdzZGxQYXRoLmFwcGVuZCh3ZWJQcm9qZWN0LmdldFdFQklORlBhdGgoKSk7Ci0vLwkJCSB9Ci0vLwkJZWxzZSBpZiAoc2VydmVyUHJvamVjdC5oYXNOYXR1cmUoSUVKQk5hdHVyZUNvbnN0YW50cy5OQVRVUkVfSUQpKQotLy8JCXsKLS8vCQkJRUpCTmF0dXJlUnVudGltZSBlamJQcm9qZWN0ID0gRUpCTmF0dXJlUnVudGltZS5nZXRSdW50aW1lKHNlcnZlclByb2plY3QpOwotLy8JCQl3c2RsUGF0aCA9IHdzZGxQYXRoLmFwcGVuZChlamJQcm9qZWN0LmdldE1ldGFGb2xkZXIoKS5nZXRQcm9qZWN0UmVsYXRpdmVQYXRoKCkuYWRkVHJhaWxpbmdTZXBhcmF0b3IoKSk7Ci0vLwkJfQkJCi0vLyBUT0RPOiAgaGFuZGxlIEVKQiBjYXNlCi0JCSAgICAgd3NkbFBhdGggPSBKMkVFVXRpbHMuZ2V0V2ViQ29udGVudFBhdGgoIHNlcnZlclByb2plY3QgKTsKLQkJCSBJUGF0aCB3c2RsRmlsZVBhdGggPSB3c2RsUGF0aC5hcHBlbmQoV1NETF9GT0xERVIpLmFwcGVuZChwb3J0LmdldE5hbWUoKSkuYWRkRmlsZUV4dGVuc2lvbihXU0RMX0VYVCk7Ci0JCSAgICAgSUZvbGRlciBmb2xkZXIgPSBSZXNvdXJjZVV0aWxzCi0JCQkJCQkJCS5nZXRXb3Jrc3BhY2VSb290KCkKLQkJCQkJCQkJLmdldEZvbGRlcih3c2RsUGF0aC5hcHBlbmQoV1NETF9GT0xERVIpKTsKLQkJCSBGaWxlVXRpbC5jcmVhdGVGb2xkZXIoZm9sZGVyLCB0cnVlLCB0cnVlKTsJCi0JCSAgICAgb3V0cHV0RmlsZSA9IHdvcmtzcGFjZS5nZXRGaWxlKHdzZGxGaWxlUGF0aCk7Ci0JCQkgd3NkbExvY2F0aW9uID0gb3V0cHV0RmlsZS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JCQkgamF2YVdTRExQYXJhbS5zZXRPdXRwdXRXc2RsTG9jYXRpb24od3NkbExvY2F0aW9uKTsKLQkJCSAKLSAgICAgfQotCi0gICAgIFN0cmluZyBmb2xkZXIgICA9IG91dHB1dEZpbGUuZ2V0UGFyZW50KCkuZ2V0TG9jYXRpb24oKS50b0ZpbGUoKS50b1VSTCgpLnRvU3RyaW5nKCk7Ci0gICAgIFN0cmluZyBmaWxlbmFtZSA9IG91dHB1dEZpbGUuZ2V0TmFtZSgpOwotCQotICAgICBXU0RMQ29waWVyIGNvcGllciA9IG5ldyBXU0RMQ29waWVyKHdlYlNlcnZpY2VzUGFyc2VyKTsKLSAgICAgY29waWVyLnNldFNvdXJjZVVSSSh3c2RsVVJMLCBkZWZpbml0aW9uKTsKLSAgICAgY29waWVyLnNldFRhcmdldEZvbGRlclVSSShmb2xkZXIpOwotICAgICBjb3BpZXIuc2V0VGFyZ2V0RmlsZW5hbWUoZmlsZW5hbWUpOwotCQotICAgICBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZSgpLnJ1bihjb3BpZXIsIG1vbml0b3IpOwotCQotICAgICBTdHJpbmcgbmV3UGF0aCA9IG91dHB1dEZpbGUuZ2V0UGFyZW50KCkuZ2V0TG9jYXRpb24oKS5hcHBlbmQoY29waWVyLmdldFJlbGF0aXZlUGF0aCgpKS50b1N0cmluZygpOwotICAgICBqYXZhV1NETFBhcmFtLnNldE91dHB1dFdzZGxMb2NhdGlvbihuZXdQYXRoKTsgICAgIAotICAgIH0gCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9XUklURV9XU0RMLCBuZXcgU3RyaW5nW10geyB3c2RsTG9jYXRpb24gfSksIGUpOwotICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotCi0gIHByaXZhdGUgSVN0YXR1cyBtb2RpZnlFbmRwb2ludChQb3J0IHBvcnQpCi0gIHsKLSAgICBJdGVyYXRvciBpdCA9IHBvcnQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICBTT0FQQWRkcmVzcyBzb2FwQWRkcmVzcyA9IG51bGw7Ci0gICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBPYmplY3Qgb2JqID0gaXQubmV4dCgpOwotICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFNPQVBBZGRyZXNzKQotICAgICAgewotICAgICAgICBzb2FwQWRkcmVzcyA9IChTT0FQQWRkcmVzcylvYmo7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICBpZiAoc29hcEFkZHJlc3MgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAKLSAgICAgIFN0cmluZyBwcm9qZWN0VVJMID0gbnVsbDsKLSAgICAgIGlmIChzZXJ2aWNlU2VydmVyVHlwZUlEXyAhPSBudWxsICYmIHNlcnZpY2VTZXJ2ZXJUeXBlSURfLmxlbmd0aCgpPjApCi0gICAgICB7Ci0JICAgIHByb2plY3RVUkwgPSBTZXJ2ZXJVdGlscy5nZXRFbmNvZGVkV2ViQ29tcG9uZW50VVJMKHNlcnZlclByb2plY3QsIHNlcnZpY2VTZXJ2ZXJUeXBlSURfLCBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIpOwotICAgICAgfQotICAgICAgCi0gICAgICBpZiAocHJvamVjdFVSTCA9PSBudWxsKSAvLyBlaXRoZXIgbm8gc2VydmVyIHR5cGUgZGVmaW5lZCBvciBzZXJ2ZXIgbm90IGFibGUgdG8gZ2V0IHByb2plY3QgVVJMCi0gICAgICB7Ci0gICAgICAgIHByb2plY3RVUkwgPSBURU1QX1VSSSArIHNlcnZlclByb2plY3QuZ2V0TmFtZSgpOyAKLSAgICAgICAgamF2YVdTRExQYXJhbS5zZXRHdWVzc1Byb2plY3RVUkwodHJ1ZSk7Ci0gICAgICB9Ci0gICAgICBqYXZhV1NETFBhcmFtLnNldFByb2plY3RVUkwocHJvamVjdFVSTCk7Ci0gICAgICBTdHJpbmdCdWZmZXIgc2VydmljZVVSTCA9IG5ldyBTdHJpbmdCdWZmZXIocHJvamVjdFVSTCk7Ci0gICAgICBzZXJ2aWNlVVJMLmFwcGVuZChTRVJWSUNFX0VYVCkuYXBwZW5kKHBvcnQuZ2V0TmFtZSgpKTsKLSAgICAgIGphdmFXU0RMUGFyYW0uc2V0VXJsTG9jYXRpb24oc2VydmljZVVSTC50b1N0cmluZygpKTsKLSAgICAgIHNvYXBBZGRyZXNzLnNldExvY2F0aW9uVVJJKHNlcnZpY2VVUkwudG9TdHJpbmcoKSk7Ci0gICAgfQotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0gIAotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBqYXZhV1NETFBhcmFtLgotICAqIEByZXR1cm4gSmF2YVdTRExQYXJhbWV0ZXIKLSAgKi8KLSAgcHVibGljIEphdmFXU0RMUGFyYW1ldGVyIGdldEphdmFXU0RMUGFyYW0oKSB7Ci0gICAgcmV0dXJuIGphdmFXU0RMUGFyYW07Ci0gIH0KLQotICAvKioKLSAgKiBTZXRzIHRoZSBqYXZhV1NETFBhcmFtLgotICAqIEBwYXJhbSBqYXZhV1NETFBhcmFtIFRoZSBqYXZhV1NETFBhcmFtIHRvIHNldAotICAqLwotICBwdWJsaWMgdm9pZCBzZXRKYXZhV1NETFBhcmFtKEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW0pIHsKLSAgICB0aGlzLmphdmFXU0RMUGFyYW0gPSBqYXZhV1NETFBhcmFtOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBzZXJ2ZXJQcm9qZWN0IFRoZSBzZXJ2ZXJQcm9qZWN0IHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZlclByb2plY3QoSVByb2plY3Qgc2VydmVyUHJvamVjdCkgewotICAgIHRoaXMuc2VydmVyUHJvamVjdCA9IHNlcnZlclByb2plY3Q7Ci0gIH0KLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSB3ZWJTZXJ2aWNlc1BhcnNlci4KLSAgICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpIHsKLSAgICByZXR1cm4gd2ViU2VydmljZXNQYXJzZXI7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHdlYlNlcnZpY2VzUGFyc2VyIFRoZSB3ZWJTZXJ2aWNlc1BhcnNlciB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlc1BhcnNlcihXZWJTZXJ2aWNlc1BhcnNlciB3ZWJTZXJ2aWNlc1BhcnNlcikgewotICAgIHRoaXMud2ViU2VydmljZXNQYXJzZXIgPSB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRXc2RsVVJJKCkKLSAgewotICAJRmlsZSBmaWxlID0gbmV3IEZpbGUoZ2V0SmF2YVdTRExQYXJhbSgpLmdldE91dHB1dFdzZGxMb2NhdGlvbigpKTsgCi0gICAgU3RyaW5nIHVybCA9ICIiOwotCSAgdHJ5IHsKLSAgICAJdXJsID0gZmlsZS50b1VSTCgpLnRvU3RyaW5nKCk7Ci0gICAgfQotCSAgY2F0Y2goTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11ZSl7fQotCXJldHVybiB1cmw7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VTZXJ2ZXJUeXBlSUQoU3RyaW5nIGlkKQotICB7Ci0gICAgc2VydmljZVNlcnZlclR5cGVJRF8gPSBpZDsKLSAgfQotCi1wdWJsaWMgdm9pZCBzZXRTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIoSVNlcnZlciBleGlzdGluZ1NlcnZlcikgewotCXNlcnZpY2VFeGlzdGluZ1NlcnZlciA9IGV4aXN0aW5nU2VydmVyOwotfSAgCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3Rhc2svVERDb25maWdDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS90YXNrL1REQ29uZmlnQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzQxMmVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3Rhc2svVERDb25maWdDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjQgICAxMjAxMzcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLnRhc2s7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLXB1YmxpYyBjbGFzcyBURENvbmZpZ0NvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiAKLXsKLSAgcHVibGljIFREQ29uZmlnQ29tbWFuZCgpIAotICB7Ci0gIH0KLSAgCi0gIC8qCi0gICAqIFRoZSBleGVjdXRlIG1ldGhvZCBvZiB0aGlzIGNvbW1hbmQgZG8gbm90aGluZy4gIEl0IGlzIG1lcmVseSBhbiBhbmNob3IgcG9pbnQgZm9yIFVJIHBhZ2UKLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSkgewotCSAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3Rhc2svVXBkYXRlQXhpc1dTRERGaWxlVGFzay5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvdGFzay9VcGRhdGVBeGlzV1NEREZpbGVUYXNrLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MjVjYjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvdGFzay9VcGRhdGVBeGlzV1NEREZpbGVUYXNrLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjIxICAgMTE5MTExIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjAzMzAgICAxMjQ2Njcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNTE3ICAgMTM0MTA0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MTAzMCAgIDEyODQxOSBrZWx2aW5oY0BjYS5pYm0uY29tIC0gS2VsdmluIEguIENoZXVuZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLnRhc2s7Ci0KLQotaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci0KLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5OwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5BeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24uY29yZS5jb21tb24uSmF2YVdTRExQYXJhbWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkudXRpbC5GaWxlVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5BeGlzQ3JlYXRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQXhpc0NyZWF0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLXB1YmxpYyBjbGFzcyBVcGRhdGVBeGlzV1NEREZpbGVUYXNrIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gewotCQotCXByaXZhdGUgZmluYWwgU3RyaW5nIERFUExPWV9YU0wgPSAiZGVwbG95LnhzbCI7CS8vJE5PTi1OTFMtMSQKLQlwcml2YXRlIGZpbmFsIFN0cmluZyBERVBMT1lfQkFLID0gImRlcGxveS53c2RkLmJhayI7CQkvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgQ0xBU1NOQU1FX1BBUkFNID0gIm5ld0NsYXNzTmFtZSI7CQkvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtXzsKLQlwcml2YXRlIElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0XzsKLSAgICAKLQlwdWJsaWMgVXBkYXRlQXhpc1dTRERGaWxlVGFzaygpIAotCXsKLQl9Ci0JCi0JLyoqCi0JKiBFeGVjdXRlIFVwZGF0ZUF4aXNXU0RERmlsZVRhc2sKLQkqLwotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLQl7ICAgIAotCQlJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7CQkKLQkJaWYgKGphdmFXU0RMUGFyYW1fID09IG51bGwpIHsKLQkJICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ29uc3VtcHRpb25Db3JlTWVzc2FnZXMuTVNHX0VSUk9SX0pBVkFfV1NETF9QQVJBTV9OT1RfU0VUKTsKLQkJICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJICByZXR1cm4gc3RhdHVzOwkJICAKLQkJfQotCi0JCUlQcm9qZWN0IHByb2plY3QgPSBzZXJ2aWNlUHJvamVjdF87Ci0gICAgICAgIAotCQlTdHJpbmcgb3V0cHV0TG9jYXRpb24gPSBqYXZhV1NETFBhcmFtXy5nZXRKYXZhT3V0cHV0KCk7Ci0JCWlmIChvdXRwdXRMb2NhdGlvbiA9PSBudWxsKSB7Ci0JCQlyZXR1cm4gc3RhdHVzOwotCQl9Ci0KLQkJU3RyaW5nIHdlYkNvbnRlbnRQYXRoID0JSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRDb250YWluZXIoIHByb2plY3QgKS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JCXRyeSB7Ci0KLQkJCWlmIChqYXZhV1NETFBhcmFtXy5nZXREZXBsb3ltZW50RmlsZXMoKSAhPSBudWxsCi0JCQkJJiYgamF2YVdTRExQYXJhbV8uZ2V0RGVwbG95bWVudEZpbGVzKCkubGVuZ3RoID4gMCkgewotCi0JCQkJU3RyaW5nIHdzZGRfZGVwbG95ID0gamF2YVdTRExQYXJhbV8uZ2V0RGVwbG95bWVudEZpbGVzKClbMF07Ci0JCQkJSVBhdGggZGVwbG95UGF0aCA9IG5ldyBQYXRoKHdzZGRfZGVwbG95KTsKLQkJCQlTdHJpbmcgZGVwbG95QmFja3VwID0KLQkJCQkJZGVwbG95UGF0aAotCQkJCQkJLnJlbW92ZUxhc3RTZWdtZW50cygxKQotCQkJCQkJLmFwcGVuZChERVBMT1lfQkFLKQotCQkJCQkJLnRvU3RyaW5nKCk7Ci0JCQkJRmlsZVV0aWwuY3JlYXRlVGFyZ2V0RmlsZSh3c2RkX2RlcGxveSwgZGVwbG95QmFja3VwLCB0cnVlKTsKLQotCQkJCVRyYW5zZm9ybWVyRmFjdG9yeSB0RmFjdG9yeSA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotCi0JCQkJLy8gVXNlIHRoZSBUcmFuc2Zvcm1lckZhY3RvcnkgdG8gaW5zdGFudGlhdGUgYSBUcmFuc2Zvcm1lciB0aGF0IHdpbGwgd29yayB3aXRoICAKLQkJCQkvLyB0aGUgc3R5bGVzaGVldCB5b3Ugc3BlY2lmeS4gVGhpcyBtZXRob2QgY2FsbCBhbHNvIHByb2Nlc3NlcyB0aGUgc3R5bGVzaGVldAotCQkJCS8vIGludG8gYSBjb21waWxlZCBUZW1wbGF0ZXMgb2JqZWN0LgotCQkJCVRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyID0KLQkJCQkJdEZhY3RvcnkubmV3VHJhbnNmb3JtZXIobmV3IFN0cmVhbVNvdXJjZShnZXRQbHVnaW5GaWxlQXNJbnB1dFN0cmVhbShERVBMT1lfWFNMKSkpOwotCQkJCXRyYW5zZm9ybWVyLnNldFBhcmFtZXRlcihDTEFTU05BTUVfUEFSQU0sIGphdmFXU0RMUGFyYW1fLmdldEJlYW5OYW1lKCkpOwotCi0JCQkJLy8gVXNlIHRoZSBUcmFuc2Zvcm1lciB0byBhcHBseSB0aGUgYXNzb2NpYXRlZCBUZW1wbGF0ZXMgb2JqZWN0IHRvIGFuIFhNTCBkb2N1bWVudAotCQkJCS8vIChmb28ueG1sKSBhbmQgd3JpdGUgdGhlIG91dHB1dCB0byBhIGZpbGUgKGZvby5vdXQpLgotICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIHdzZGRTdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbSggd3NkZF9kZXBsb3kgKTsKLSAgICAgICAgCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0JCQkJICB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oIG5ldyBTdHJlYW1Tb3VyY2UoZGVwbG95QmFja3VwKSwgbmV3IFN0cmVhbVJlc3VsdCh3c2RkU3RyZWFtKSApOwotICAgICAgICB9Ci0gICAgICAgIGZpbmFsbHkKLSAgICAgICAgewotICAgICAgICAgIHdzZGRTdHJlYW0uY2xvc2UoKTsKLSAgICAgICAgfQotCi0KLSAgICAgICAgSVJlc291cmNlIGRlcGxveUZpbGUgPSBSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZUF0TG9jYXRpb24od3NkZF9kZXBsb3ksIHByb2plY3QpOwotICAgICAgICBpZiggZGVwbG95RmlsZSAhPSBudWxsICkKLSAgICAgICAgewotICAgICAgICAJZGVwbG95RmlsZS5yZWZyZXNoTG9jYWwoIElSZXNvdXJjZS5ERVBUSF9aRVJPLCBtb25pdG9yICk7Ci0gICAgICAgIH0KLQotCQl9Ci0KLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJICAgIFN0cmluZ1tdIGVycm9yTXNnU3RyaW5ncyA9IG5ldyBTdHJpbmdbXXtwcm9qZWN0LnRvU3RyaW5nKCksIG91dHB1dExvY2F0aW9uLnRvU3RyaW5nKCksIHdlYkNvbnRlbnRQYXRoLnRvU3RyaW5nKCl9OyAKLQkJICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKEF4aXNDcmVhdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1VQREFURV9BWElTX1dTREQsIGVycm9yTXNnU3RyaW5ncyksIGUpOwotCQkgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCSAgICByZXR1cm4gc3RhdHVzOwkJICAJCSAgCi0JCX0KLQkJCi0JCXJldHVybiBzdGF0dXM7Ci0JfQotCQotCXByaXZhdGUgSW5wdXRTdHJlYW0gZ2V0UGx1Z2luRmlsZUFzSW5wdXRTdHJlYW0oU3RyaW5nIHBsdWdpbmZpbGVOYW1lKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCXRyeSB7Ci0JCQlJbnB1dFN0cmVhbSBpcyA9IFdlYlNlcnZpY2VBeGlzQ3JlYXRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldEJ1bmRsZSgpLmdldEVudHJ5KHBsdWdpbmZpbGVOYW1lKS5vcGVuU3RyZWFtKCk7Ci0JCQotCQkJcmV0dXJuIGlzOwotCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbigKLQkJCQluZXcgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1cygKLQkJCQkJSVN0YXR1cy5XQVJOSU5HLAotCQkJCQlXZWJTZXJ2aWNlQXhpc0NyZWF0aW9uVUlQbHVnaW4uSUQsCi0JCQkJCTAsCi0JCQkJCUF4aXNDcmVhdGlvblVJTWVzc2FnZXMuTVNHX1BMVUdJTl9GSUxFX1VSTCwKLQkJCQkJZSkpOwotCQl9Ci0JfQotCi0JLyoqCi0JKiBTZXRzIHRoZSBqYXZhV1NETFBhcmFtLgotCSogQHBhcmFtIGphdmFXU0RMUGFyYW0gVGhlIGphdmFXU0RMUGFyYW0gdG8gc2V0Ci0JKi8KLQlwdWJsaWMgdm9pZCBzZXRKYXZhV1NETFBhcmFtKEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW0pIHsKLQkJamF2YVdTRExQYXJhbV8gPSBqYXZhV1NETFBhcmFtOwotCX0KLQkKLQlwdWJsaWMgSmF2YVdTRExQYXJhbWV0ZXIgZ2V0SmF2YVdTRExQYXJhbSgpCi0JewotCQlyZXR1cm4gamF2YVdTRExQYXJhbV87Ci0JfQkKLQotCXB1YmxpYyB2b2lkIHNldFNlcnZpY2VQcm9qZWN0KElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0KQotCXsKLQkgIHNlcnZpY2VQcm9qZWN0XyA9IHNlcnZpY2VQcm9qZWN0OwotCX0KLQkgIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd2lkZ2V0cy9iZWFuL0JVQXhpc0RlZmF1bHRpbmdDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aWRnZXRzL2JlYW4vQlVBeGlzRGVmYXVsdGluZ0NvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI3OTVhMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aWRnZXRzL2JlYW4vQlVBeGlzRGVmYXVsdGluZ0NvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2lkZ2V0cy5iZWFuOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5BeGlzQ3JlYXRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwudmFsaWRhdGUuVmFsaWRhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuV2ViU2VydmljZXNQYXJzZXJFeHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi0vKioKLSAqIAotICovCi1wdWJsaWMgY2xhc3MgQlVBeGlzRGVmYXVsdGluZ0NvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICAKLSAgLy9Qcm92aWRlCi0gIHByaXZhdGUgSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfOwotICBwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW1fOwotICBwcml2YXRlIFN0cmluZyBqYXZhQmVhbk5hbWVfOwotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlcl87Ci0gIHByaXZhdGUgYm9vbGVhbiBmb3JjZUJ1aWxkXyA9IHRydWU7Ci0gIHByaXZhdGUgQm9vbGVhbiBJc1dlYlByb2plY3RTdGFydHVwUmVxdWVzdGVkID0gQm9vbGVhbi5UUlVFOyAvLyByc2sgcmV2aXNpdAotICBwcml2YXRlIFZhbGlkYXRpb25NYW5hZ2VyIHZhbGlkYXRpb25NYW5hZ2VyXzsKLSAgcHJpdmF0ZSBib29sZWFuIGN1c3RvbWl6ZVNlcnZpY2VNYXBwaW5nc18gPSBmYWxzZTsKLSAgCi0gIC8vVGhpcyBpcyBwcm94eSBhbmQgY2xpZW50IHJlbGF0ZWQgaW5mb3JtYXRpb24KLSAgLy93aGljaCBjYW4gYmUgbnVsbGVkIGZvciBjb21tYW5kcyBkZWFsaW5nCi0gIC8vd2l0aCBzZXJ2aWNlIGNyZWF0aW9uLgotICAvL3JzayByZXZpc2l0Ci0gIHByaXZhdGUgQm9vbGVhbiBpc1Byb3h5UHJvamVjdF8gPSBCb29sZWFuLkZBTFNFOwotICBwcml2YXRlIFN0cmluZyBjbGllbnRSdW50aW1lSURfID0gbnVsbDsKLSAgcHJpdmF0ZSBJUHJvamVjdCBwcm94eVByb2plY3RfID0gbnVsbDsKLSAgcHJpdmF0ZSBJUHJvamVjdCBzYW1wbGVQcm9qZWN0XyA9IG51bGw7Ci0gIHByaXZhdGUgU3RyaW5nIHNhbXBsZVNlcnZlclR5cGVJRF8gPSBudWxsOwotICBwcml2YXRlIElTZXJ2ZXIgc2FtcGxlRXhpc3RpbmdTZXJ2ZXJfID0gbnVsbDsKLSAgCi0gCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLSAgewotCUlFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgCi0JLy9qYXZhV1NETFBhcmFtCi0JamF2YVdTRExQYXJhbV8gPSBuZXcgSmF2YVdTRExQYXJhbWV0ZXIoKTsKLSAgICAKLQlpZiAoamF2YUJlYW5OYW1lXyA9PSBudWxsKSB7Ci0JCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoCi0JCQkJQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfQ0FOTk9UX05PX0pBVkFfQkVBTik7Ci0JCWVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQlyZXR1cm4gc3RhdHVzOwotCX0KLSAgICAKLSAgICAvL3BhcnNlcgotICAgIHBhcnNlcl8gPSBuZXcgV2ViU2VydmljZXNQYXJzZXJFeHQoKTsKLSAgICAKLSAgICAvL3ZhbGlkYXRpb25NYW5hZ2VyCi0gICAgdmFsaWRhdGlvbk1hbmFnZXJfID0gbmV3IFZhbGlkYXRpb25NYW5hZ2VyKCk7Ci0gICAgCi0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0JCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGNsaWVudFJ1bnRpbWVJRF8uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFJ1bnRpbWVJRCgpCi0gIHsKLSAgICByZXR1cm4gY2xpZW50UnVudGltZUlEXzsKLSAgfQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBmb3JjZUJ1aWxkXy4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldEZvcmNlQnVpbGQoKQotICB7Ci0gICAgcmV0dXJuIGZvcmNlQnVpbGRfOwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGlzUHJveHlQcm9qZWN0Xy4KLSAgICovCi0gIHB1YmxpYyBCb29sZWFuIGdldElzUHJveHlQcm9qZWN0KCkKLSAgewotICAgIHJldHVybiBpc1Byb3h5UHJvamVjdF87Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgamF2YUJlYW5OYW1lXy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SmF2YUJlYW5OYW1lKCkKLSAgewotICAgIHJldHVybiBqYXZhQmVhbk5hbWVfOwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGphdmFXU0RMUGFyYW1fLgotICAgKi8KLSAgcHVibGljIEphdmFXU0RMUGFyYW1ldGVyIGdldEphdmFXU0RMUGFyYW0oKQotICB7Ci0gICAgcmV0dXJuIGphdmFXU0RMUGFyYW1fOwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHBhcnNlcl8uCi0gICAqLwotICBwdWJsaWMgV2ViU2VydmljZXNQYXJzZXIgZ2V0UGFyc2VyKCkKLSAgewotICAgIHJldHVybiBwYXJzZXJfOwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHByb3h5UHJvamVjdF8uCi0gICAqLwotICBwdWJsaWMgSVByb2plY3QgZ2V0UHJveHlQcm9qZWN0KCkKLSAgewotICAgIHJldHVybiBwcm94eVByb2plY3RfOwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHNhbXBsZUV4aXN0aW5nU2VydmVyXy4KLSAgICovCi0gIHB1YmxpYyBJU2VydmVyIGdldFNhbXBsZUV4aXN0aW5nU2VydmVyKCkKLSAgewotICAgIHJldHVybiBzYW1wbGVFeGlzdGluZ1NlcnZlcl87Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc2FtcGxlUHJvamVjdF8uCi0gICAqLwotICBwdWJsaWMgSVByb2plY3QgZ2V0U2FtcGxlUHJvamVjdCgpCi0gIHsKLSAgICByZXR1cm4gc2FtcGxlUHJvamVjdF87Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc2FtcGxlU2VydmVyVHlwZUlEXy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2FtcGxlU2VydmVyVHlwZUlEKCkKLSAgewotICAgIHJldHVybiBzYW1wbGVTZXJ2ZXJUeXBlSURfOwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHZhbGlkYXRpb25NYW5hZ2VyXy4KLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0aW9uTWFuYWdlciBnZXRWYWxpZGF0aW9uTWFuYWdlcigpCi0gIHsKLSAgICByZXR1cm4gdmFsaWRhdGlvbk1hbmFnZXJfOwotICB9Ci0gIAotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfLgotICAgKi8KLSAgcHVibGljIElTZXJ2ZXIgZ2V0U2VydmljZUV4aXN0aW5nU2VydmVyKCkKLSAgewotICAgIHJldHVybiBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfOwotICB9Ci0gIAotIAotICBwdWJsaWMgYm9vbGVhbiBnZXRDdXN0b21pemVTZXJ2aWNlTWFwcGluZ3MoKQotICB7Ci0gICAgcmV0dXJuIGN1c3RvbWl6ZVNlcnZpY2VNYXBwaW5nc187Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaXNXZWJQcm9qZWN0U3RhcnR1cFJlcXVlc3RlZC4KLSAgICovCi0gIHB1YmxpYyBCb29sZWFuIGdldElzV2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWQoKQotICB7Ci0gICAgcmV0dXJuIElzV2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWQ7Ci0gIH0KLQotcHVibGljIHZvaWQgc2V0SmF2YUJlYW5OYW1lKFN0cmluZyBqYXZhQmVhbk5hbWUpIHsKLQl0aGlzLmphdmFCZWFuTmFtZV8gPSBqYXZhQmVhbk5hbWU7Ci19Ci0gIAotLy8gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcihUeXBlUnVudGltZVNlcnZlciBpZHMpCi0vLyAgewotLy8gICAgc2VydmljZUlkc18gPSBpZHM7Ci0vLyAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd2lkZ2V0cy9iZWFuL0JlYW5Db25maWdXaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dpZGdldHMvYmVhbi9CZWFuQ29uZmlnV2lkZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYWI2ODAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd2lkZ2V0cy9iZWFuL0JlYW5Db25maWdXaWRnZXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMjEgICAxMjg4Mjcgam9hbiAtIEpvYW4gSGFnZ2FydHksIHJlbW92ZSByZWR1bmRhbnQgd3NkbCBVUkksIGZvbGRlciBhbmQgZmlsZSBjb250cm9scwotICogMjAwNjA1MjQgICAxMjg2MDEgYW5keXpoYWlAY2EuaWJtLmNvbSAtIEFuZHkgWmhhaQotICogMjAwOTAzMDIgICAyNDI0NjIgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgU2F2ZSBXZWIgc2VydmljZXMgd2l6YXJkIHNldHRpbmdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2lkZ2V0cy5iZWFuOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLkF4aXNDcmVhdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkucGx1Z2luLldlYlNlcnZpY2VBeGlzQ3JlYXRpb25VSVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb24uQ29tYm9XaXRoSGlzdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLlVJVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Hcm91cDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UcmVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRyZWVJdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotCi0KLXB1YmxpYyBjbGFzcyBCZWFuQ29uZmlnV2lkZ2V0IGV4dGVuZHMgU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yIAotewotCi0gIHByaXZhdGUgQnV0dG9uICAgcnBjRW5jb2RlZEJ1dHRvbl87Ci0gIHByaXZhdGUgQnV0dG9uICAgcnBjTGl0ZXJhbEJ1dHRvbl87Ci0gIHByaXZhdGUgQnV0dG9uICAgZG9jTGl0ZXJhbEJ1dHRvbl87Ci0gIAotICBwcml2YXRlIExpc3RlbmVyIHN0YXR1c0xpc3RlbmVyXzsKLSAgCi0gIHByaXZhdGUgSmF2YVdTRExQYXJhbWV0ZXIgamF2YVBhcmFtZXRlcl87Ci0gIAotICAvKiBDT05URVhUX0lEIFBCQ0YwMDAxIGZvciB0aGUgQmVhbiBDb25maWcgUGFnZSAqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1BCQ0ZfUEFHRSA9ICJQQkNGMDAwMSI7IC8vJE5PTi1OTFMtMSQKLQkKLSAgcHJpdmF0ZSBTdHJpbmcgd3NkbEZvbGRlcl87Ci0gIAotICBwcml2YXRlIENvbWJvV2l0aEhpc3Rvcnkgd3NkbEZpbGVUZXh0XzsKLSAgLyogQ09OVEVYVF9JRCBQQkNGMDAwNyBmb3IgdGhlIFdTREwgRmlsZSBmaWVsZCBvZiB0aGUgQmVhbiBDb25maWcgUGFnZSAqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1BCQ0ZfVEVYVF9XU0RMX0ZJTEUgPSAiUEJDRjAwMDciOyAvLyROT04tTkxTLTEkCi0JCi0gIHByaXZhdGUgVHJlZSBtZXRob2RzVHJlZV87Ci0gIC8qIENPTlRFWFRfSUQgUEJNRTAwMDIgZm9yIHRoZSBNZXRob2RzIHRyZWUgb2YgdGhlIEJlYW4gTWV0aG9kcyBQYWdlICovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUEJNRV9UUkVFX01FVEhPRFMgPSAiUEJNRTAwMDIiOyAvLyROT04tTkxTLTEkCi0JCi0gIHByaXZhdGUgQnV0dG9uIHNlbGVjdEFsbE1ldGhvZHNCdXR0b25fOwotICAvKiBDT05URVhUX0lEIFBCTUUwMDEwIGZvciB0aGUgU2VsZWN0IEFsbCBidXR0b24gb2YgdGhlIEJlYW4gTWV0aG9kcyBQYWdlICovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUEJNRV9CVVRUT05fU0VMRUNUX0FMTCA9ICJQQk1FMDAxMCI7IC8vJE5PTi1OTFMtMSQKLQkKLSAgcHJpdmF0ZSBCdXR0b24gZGVzZWxlY3RBbGxNZXRob2RzQnV0dG9uXzsKLSAgLyogQ09OVEVYVF9JRCBQQk1FMDAxMSBmb3IgdGhlIERlc2VsZWN0IEFsbCBidXR0b24gb2YgdGhlIEJlYW4gTWV0aG9kcyBQYWdlICovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUEJNRV9CVVRUT05fREVTRUxFQ1RfQUxMID0gIlBCTUUwMDExIjsgLy8kTk9OLU5MUy0xJAotCQotICBwcml2YXRlIEJ1dHRvbiBzaG93TWFwcGluZ3NDaGVja2JveF87Ci0gIC8qIENPTlRFWFRfSUQgUEJDRjAwMTYgZm9yIHRoZSBTaG93IE1hcHBpbmdzIGNoZWNrYm94IG9mIHRoZSBCZWFuIE1ldGhvZHMgUGFnZSAqLyAgIAotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1AyTl9TSE9XX01BUFBJTkdTID0gIlBCQ0YwMDE2IjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGFkZENvbnRyb2xzKCBDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lciApCi0gIHsKLQlTdHJpbmcgcGx1Z2luSWRfID0gIm9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpIjsJICAKLQotICAgIFVJVXRpbHMgICAgICB1aVV0aWxzICAgICAgICA9IG5ldyBVSVV0aWxzKCBwbHVnaW5JZF8gKTsKLSAgICBVSVV0aWxzICAgICAgYmFzZUNvblVpVXRpbHMgPSBuZXcgVUlVdGlscyggcGx1Z2luSWRfICk7Ci0gICAgCi0gICAgc3RhdHVzTGlzdGVuZXJfID0gc3RhdHVzTGlzdGVuZXI7ICAgIAotCXBhcmVudC5zZXRUb29sVGlwVGV4dCggQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BCQ0ZfUEFHRSAgKTsKLQlQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKCBwYXJlbnQsIHBsdWdpbklkXyArICIuIiArIElORk9QT1BfUEJDRl9QQUdFICk7Ci0gICAgCi0gICAgQ29tcG9zaXRlIGNvbmZpZ0dyb3VwID0gdWlVdGlscy5jcmVhdGVDb21wb3NpdGUoIHBhcmVudCwgMiApOyAgICAKLSAgICAKLSAgICB3c2RsRmlsZVRleHRfID0gdWlVdGlscy5jcmVhdGVDb21ib1dpdGhIaXN0b3J5KGNvbmZpZ0dyb3VwLCBBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLkxBQkVMX09VVFBVVF9GSUxFX05BTUUsCi0gICAgCQlBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUEJDRl9URVhUX1dTRExfRklMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZPUE9QX1BCQ0ZfVEVYVF9XU0RMX0ZJTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgICwgV2ViU2VydmljZUF4aXNDcmVhdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0RGlhbG9nU2V0dGluZ3MoKSk7Ci0gICAgd3NkbEZpbGVUZXh0Xy5hZGRMaXN0ZW5lciggU1dULk1vZGlmeSwgc3RhdHVzTGlzdGVuZXIgKTsKLSAgICAKLSAgICAvLyBUT0RPIHRoaXMgZ3JvdXAgaGFzIG5vIFRPT0xUSVAgb3IgSU5GT1BPUC4KLSAgICBHcm91cCAgICBtZXRob2RzR3JvdXAgPSBiYXNlQ29uVWlVdGlscy5jcmVhdGVHcm91cCggcGFyZW50LCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfTUVUSE9EUywgbnVsbCwgbnVsbCApOwotCW1ldGhvZHNHcm91cC5zZXRMYXlvdXREYXRhKCB1aVV0aWxzLmNyZWF0ZUZpbGxBbGwoKSApOwotCQotCUdyaWRMYXlvdXQgbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoKTsKLQlsYXlvdXQubWFyZ2luSGVpZ2h0ID0gMDsKLQlsYXlvdXQubWFyZ2luV2lkdGggPSAwOwotCW1ldGhvZHNHcm91cC5zZXRMYXlvdXQoIGxheW91dCApOwotCQotCW1ldGhvZHNUcmVlXyA9IHVpVXRpbHMuY3JlYXRlVHJlZSggbWV0aG9kc0dyb3VwLCBBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUEJNRV9UUkVFX01FVEhPRFMsIAotCQkJCQkJCQkJCUlORk9QT1BfUEJNRV9UUkVFX01FVEhPRFMsCi0JICAgICAgICAgICAgICAgICAgIAkJCQkgICBTV1QuTVVMVEkgfCBTV1QuQk9SREVSIHwgU1dULlZfU0NST0xMIHwgU1dULkhfU0NST0xMCXwgU1dULkNIRUNLICk7Ci0JbWV0aG9kc1RyZWVfLmFkZExpc3RlbmVyKCBTV1QuU2VsZWN0aW9uLCBzdGF0dXNMaXN0ZW5lciApOwotCi0gICAgQ29tcG9zaXRlIHNlbGVjdEJ1dHRvbnMgPSB1aVV0aWxzLmNyZWF0ZUNvbXBvc2l0ZSggbWV0aG9kc0dyb3VwLCAyICk7Ci0gICAgCi0gICAgc2VsZWN0QWxsTWV0aG9kc0J1dHRvbl8gCi0gICAgICA9IGJhc2VDb25VaVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oIHNlbGVjdEJ1dHRvbnMsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5CVVRUT05fU0VMRUNUX0FMTCwgCi0gICAgCQkgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BCTUVfQlVUVE9OX1NFTEVDVF9BTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9QQk1FX0JVVFRPTl9TRUxFQ1RfQUxMICk7Ci0gICAgc2VsZWN0QWxsTWV0aG9kc0J1dHRvbl8uYWRkU2VsZWN0aW9uTGlzdGVuZXIoIG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZCggU2VsZWN0aW9uRXZlbnQgZXZ0ICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RBbGwoIHRydWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgIAotICAgIGRlc2VsZWN0QWxsTWV0aG9kc0J1dHRvbl8gCi0gICAgICA9IGJhc2VDb25VaVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oIHNlbGVjdEJ1dHRvbnMsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5CVVRUT05fREVTRUxFQ1RfQUxMLCAKLSAgICAJCSAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUEJNRV9CVVRUT05fREVTRUxFQ1RfQUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORk9QT1BfUEJNRV9CVVRUT05fREVTRUxFQ1RfQUxMICk7Ci0gICAgZGVzZWxlY3RBbGxNZXRob2RzQnV0dG9uXy5hZGRTZWxlY3Rpb25MaXN0ZW5lciggbmV3IFNlbGVjdGlvbkFkYXB0ZXIoKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZCggU2VsZWN0aW9uRXZlbnQgZXZ0ICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0QWxsKCBmYWxzZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgIAotICAgIC8vIFRPRE8gdGhpcyBncm91cCBoYXMgbm8gVE9PTFRJUCBvciBJTkZPUE9QLgotICAgIEdyb3VwIHN0eWxlR3JvdXAgPSB1aVV0aWxzLmNyZWF0ZUdyb3VwKCBwYXJlbnQsIEF4aXNDcmVhdGlvblVJTWVzc2FnZXMuTEFCRUxfU1RZTEVfVVNFLCBudWxsLCBudWxsICk7Ci0gICAgCi0gICAgLy8gVE9ETyByYWRpbyBidXR0b25zIGhhdmUgbm8gVE9PTFRJUCBvciBJTkZPUE9QLgotICAgIGRvY0xpdGVyYWxCdXR0b25fID0gdWlVdGlscy5jcmVhdGVSYWRpb0J1dHRvbiggc3R5bGVHcm91cCwgQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5TVFlMRV9ET0NfTElURVJBTCwgbnVsbCwgbnVsbCApOwotICAgIHJwY0xpdGVyYWxCdXR0b25fID0gdWlVdGlscy5jcmVhdGVSYWRpb0J1dHRvbiggc3R5bGVHcm91cCwgQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5TVFlMRV9SUENfTElURVJBTCwgbnVsbCwgbnVsbCApOwotICAgIHJwY0VuY29kZWRCdXR0b25fID0gdWlVdGlscy5jcmVhdGVSYWRpb0J1dHRvbiggc3R5bGVHcm91cCwgQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5TVFlMRV9SUENfRU5DT0RFRCwgbnVsbCwgbnVsbCApOwotICAgIAotICAgIHNob3dNYXBwaW5nc0NoZWNrYm94XyA9IHVpVXRpbHMuY3JlYXRlQ2hlY2tib3goIHBhcmVudCwgQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5MQUJFTF9FWFBMT1JFX01BUFBJTkdTX0JFQU4yWE1MLAotICAgIAkJQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5UT09MVElQX1AyTl9TSE9XX01BUFBJTkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORk9QT1BfUDJOX1NIT1dfTUFQUElOR1MgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGhhbmRsZVNlbGVjdEFsbCggYm9vbGVhbiB2YWx1ZSApCi0gIHsKLQlUcmVlSXRlbVtdIGl0ZW1zID0gbWV0aG9kc1RyZWVfLmdldEl0ZW1zKCk7Ci0JCi0JZm9yKCBpbnQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKyApIAotCXsKLQkgIGl0ZW1zW2ldLnNldENoZWNrZWQodmFsdWUpOwotCX0KLQkKLQlzdGF0dXNMaXN0ZW5lcl8uaGFuZGxlRXZlbnQoIG51bGwgKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q3VzdG9taXplU2VydmljZU1hcHBpbmdzKCBib29sZWFuIHZhbHVlICkKLSAgewotICAgIHNob3dNYXBwaW5nc0NoZWNrYm94Xy5zZXRTZWxlY3Rpb24oIHZhbHVlICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldEN1c3RvbWl6ZVNlcnZpY2VNYXBwaW5ncygpCi0gIHsKLSAgICByZXR1cm4gc2hvd01hcHBpbmdzQ2hlY2tib3hfID09IG51bGwgPyBmYWxzZSA6IHNob3dNYXBwaW5nc0NoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0SmF2YVBhcmFtZXRlciggSmF2YVdTRExQYXJhbWV0ZXIgamF2YVBhcmFtZXRlciApCi0gIHsKLSAgICBqYXZhUGFyYW1ldGVyXyA9IGphdmFQYXJhbWV0ZXI7Ci0gICAgCi0JU3RyaW5nIHdzZGxMb2NhdGlvbiA9IGphdmFQYXJhbWV0ZXIuZ2V0T3V0cHV0V3NkbExvY2F0aW9uKCk7Ci0JSVBhdGggd3NkbFBhdGggPSBuZXcgUGF0aCggd3NkbExvY2F0aW9uICk7Ci0JCi0Jd3NkbEZvbGRlcl8gPSB3c2RsUGF0aC5yZW1vdmVMYXN0U2VnbWVudHMoMSkudG9TdHJpbmcoKTsgICAgCi0Jd3NkbEZpbGVUZXh0Xy5zZXRUZXh0KHdzZGxQYXRoLmxhc3RTZWdtZW50KCkpOwotICAgIAotCW1ldGhvZHNUcmVlXy5yZW1vdmVBbGwoKTsKLQlIYXNodGFibGUgbWV0aG9kcyA9IGphdmFQYXJhbWV0ZXIuZ2V0TWV0aG9kcygpOwotCUVudW1lcmF0aW9uIGUgPSBtZXRob2RzLmtleXMoKTsKLQkKLQl3aGlsZSggZS5oYXNNb3JlRWxlbWVudHMoKSApCi0JewotCSAgU3RyaW5nICAgbmFtZSA9IChTdHJpbmcpIGUubmV4dEVsZW1lbnQoKTsKLSAgICAgIFRyZWVJdGVtIGl0ZW0gPSBuZXcgVHJlZUl0ZW0obWV0aG9kc1RyZWVfLCBTV1QuTlVMTCk7Ci0gICAgICAKLSAgIAkgIGl0ZW0uc2V0RGF0YShuYW1lKTsKLSAgICAgIGl0ZW0uc2V0VGV4dChuYW1lKTsKLSAgICAgIGl0ZW0uc2V0Q2hlY2tlZCgoKChCb29sZWFuKSBtZXRob2RzLmdldChuYW1lKSkuYm9vbGVhblZhbHVlKCkpKTsKLQl9Ci0JCi0JVHJlZUl0ZW1bXSBpdGVtcyA9IG1ldGhvZHNUcmVlXy5nZXRJdGVtcygpOwotCQotCWlmKCBpdGVtcy5sZW5ndGggPiAwICkgCi0JewotCSAgbWV0aG9kc1RyZWVfLnNldFNlbGVjdGlvbiggbmV3IFRyZWVJdGVtW117IGl0ZW1zWzBdIH0gKTsKLQl9Ci0JCi0JU3RyaW5nIHN0eWxlID0gamF2YVBhcmFtZXRlci5nZXRTdHlsZSgpOwotCQotCWlmKCBzdHlsZS5lcXVhbHMoIEphdmFXU0RMUGFyYW1ldGVyLlNUWUxFX1JQQyApICkKLQl7Ci0JICBycGNFbmNvZGVkQnV0dG9uXy5zZXRTZWxlY3Rpb24odHJ1ZSk7Ci0JfQotCWVsc2UgaWYoIHN0eWxlLmVxdWFscyggSmF2YVdTRExQYXJhbWV0ZXIuU1RZTEVfRE9DVU1FTlQgKSApCi0JewotCSAgcnBjTGl0ZXJhbEJ1dHRvbl8uc2V0U2VsZWN0aW9uKHRydWUpOwkgIAotCX0KLQllbHNlCi0JewotCSAgZG9jTGl0ZXJhbEJ1dHRvbl8uc2V0U2VsZWN0aW9uKHRydWUpOyAgCi0JfQotICB9Ci0gIAotICBwdWJsaWMgSmF2YVdTRExQYXJhbWV0ZXIgZ2V0SmF2YVBhcmFtZXRlcigpCi0gIHsKLSAgICAKLSAgICBJUGF0aCB3c2RsUGF0aCAKLSAgICA9IG5ldyBQYXRoKCB3c2RsRm9sZGVyXy50cmltKCkgKS5hcHBlbmQoIHdzZGxGaWxlVGV4dF8uZ2V0VGV4dCgpLnRyaW0oKSApOwotICAgIAotCS8vIFRPRE8gRG8gd2UgbmVlZCB0byBnbyB0byB0aGUgZWNsaXBzZSBmaWxlIHN5c3RlbT8/Ci0JLy9TdHJpbmcgd3NkbExvY2F0aW9uID0gd29ya3NwYWNlLmdldEZpbGUod3NkbFBhdGgpLmdldExvY2F0aW9uKCkudG9TdHJpbmcoKTsKLQlTdHJpbmcgd3NkbExvY2F0aW9uID0gd3NkbFBhdGgudG9TdHJpbmcoKTsKLQkKLQlqYXZhUGFyYW1ldGVyXy5zZXRPdXRwdXRXc2RsTG9jYXRpb24od3NkbExvY2F0aW9uKTsKLQlqYXZhUGFyYW1ldGVyXy5zZXRJbnB1dFdzZGxMb2NhdGlvbihuZXcgRmlsZSh3c2RsTG9jYXRpb24pLnRvVVJJKCkudG9TdHJpbmcoKSk7Ci0JCi0JSGFzaHRhYmxlIG1ldGhvZHMgPSBuZXcgSGFzaHRhYmxlKCk7Ci0KLQlUcmVlSXRlbVtdIGl0ZW1zID0gbWV0aG9kc1RyZWVfLmdldEl0ZW1zKCk7Ci0JCi0JZm9yKCBpbnQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKyApIAotCXsKLQkgIFRyZWVJdGVtIGl0ZW0gPSBpdGVtc1tpXTsKLQkgIG1ldGhvZHMucHV0KChTdHJpbmcpaXRlbS5nZXREYXRhKCksIG5ldyBCb29sZWFuKGl0ZW0uZ2V0Q2hlY2tlZCgpKSk7Ci0JfQotCQotCWphdmFQYXJhbWV0ZXJfLnNldE1ldGhvZHMobWV0aG9kcyk7Ci0JCi0JaWYoIHJwY0VuY29kZWRCdXR0b25fLmdldFNlbGVjdGlvbigpKSAKLQl7Ci0JICBqYXZhUGFyYW1ldGVyXy5zZXRTdHlsZShKYXZhV1NETFBhcmFtZXRlci5TVFlMRV9SUEMpOwotCSAgamF2YVBhcmFtZXRlcl8uc2V0VXNlKEphdmFXU0RMUGFyYW1ldGVyLlVTRV9FTkNPREVEKTsKLQl9IAotCWVsc2UgaWYoIHJwY0xpdGVyYWxCdXR0b25fLmdldFNlbGVjdGlvbigpKSAKLQl7Ci0JICBqYXZhUGFyYW1ldGVyXy5zZXRTdHlsZShKYXZhV1NETFBhcmFtZXRlci5TVFlMRV9ET0NVTUVOVCk7Ci0JICBqYXZhUGFyYW1ldGVyXy5zZXRVc2UoSmF2YVdTRExQYXJhbWV0ZXIuVVNFX0xJVEVSQUwpOwotCX0gCi0JZWxzZSAKLQl7Ci0JICBqYXZhUGFyYW1ldGVyXy5zZXRTdHlsZShKYXZhV1NETFBhcmFtZXRlci5TVFlMRV9XUkFQUEVEKTsKLQkgIGphdmFQYXJhbWV0ZXJfLnNldFVzZShKYXZhV1NETFBhcmFtZXRlci5VU0VfTElURVJBTCk7Ci0JfQotICAgIAotCXJldHVybiBqYXZhUGFyYW1ldGVyXzsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yI2dldFN0YXR1cygpCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyBnZXRTdGF0dXMoKSAKLSAgewotICAgIElTdGF0dXMgICAgICAgcmVzdWx0ICAgPSBudWxsOwotICAgIAotICAgIGlmKCB3c2RsRmlsZVRleHRfLmdldFRleHQoKS5lcXVhbHMoICIiICkgKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLlBBR0VfTVNHX05PX0ZJTEVfU1BFQ0lGSUVEICk7IAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgVHJlZUl0ZW1bXSBpdGVtcyAgICAgICAgPSBtZXRob2RzVHJlZV8uZ2V0SXRlbXMoKTsKLSAgICAgIGJvb2xlYW4gICAgaXRlbVNlbGVjdGVkID0gZmFsc2U7Ci0gICAgICAKLSAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtcy5sZW5ndGg7IGluZGV4KysgKQotICAgICAgewotICAgICAgICBpZiggaXRlbXNbaW5kZXhdLmdldENoZWNrZWQoKSApCi0gICAgICAgIHsKLSAgICAgICAgICBpdGVtU2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIGlmKCAhaXRlbVNlbGVjdGVkICkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIEF4aXNDcmVhdGlvblVJTWVzc2FnZXMuUEFHRV9NU0dfTk9fTUVUSE9EX1NFTEVDVEVEICk7IAotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLXB1YmxpYyB2b2lkIGV4dGVybmFsaXplKCkgewotCXN1cGVyLmV4dGVybmFsaXplKCk7Ci0Jd3NkbEZpbGVUZXh0Xy5zdG9yZVdpZGdldEhpc3RvcnkoIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpZGdldHMuYmVhbi5CZWFuQ29uZmlnV2lkZ2V0LndzZGxGaWxlVGV4dF8iKTsKLX0KLQotcHVibGljIHZvaWQgaW50ZXJuYWxpemUoKSB7CQkKLQkKLQl3c2RsRmlsZVRleHRfLnJlbW92ZUxpc3RlbmVyKFNXVC5Nb2RpZnksIHN0YXR1c0xpc3RlbmVyXyk7Ci0Jd3NkbEZpbGVUZXh0Xy5yZXN0b3JlV2lkZ2V0SGlzdG9yeSgib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2lkZ2V0cy5iZWFuLkJlYW5Db25maWdXaWRnZXQud3NkbEZpbGVUZXh0XyIpOwotICAgIHdzZGxGaWxlVGV4dF8uYWRkTGlzdGVuZXIoU1dULk1vZGlmeSwgc3RhdHVzTGlzdGVuZXJfKTsKLX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dpZGdldHMvYmVhbi9WYWxpZGF0ZU9iamVjdFNlbGVjdGlvbkNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dpZGdldHMvYmVhbi9WYWxpZGF0ZU9iamVjdFNlbGVjdGlvbkNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFjMDc0Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aWRnZXRzL2JlYW4vVmFsaWRhdGVPYmplY3RTZWxlY3Rpb25Db21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpZGdldHMuYmVhbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5BeGlzQ3JlYXRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSmF2YU1PRlV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkphdmFSZXNvdXJjZUZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZU9iamVjdFNlbGVjdGlvbkNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIFN0cmluZyBKQVZBX0VYVEVOU0lPTiA9ICIuamF2YSI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBTdHJpbmcgQ0xBU1NfRVhURU5TSU9OID0gIi5jbGFzcyI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3RTZWxlY3Rpb247Ci0gIHByaXZhdGUgU3RyaW5nIHNlcnZpY2VQcm9qZWN0TmFtZTsKLQotICAKLSAgLyoqCi0gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBzZWxlY3RlZCBKYXZhIGJlYW4gY2FuIGJlIGxvYWRlZCBmcm9tIHRoZSBzZXJ2aWNlIHByb2plY3QuIElmIGl0IGNhbid0LCBhbiBlcnJvciBpcyBkaXNwbGF5ZWQuCi0gICAqLwotICBwdWJsaWMgVmFsaWRhdGVPYmplY3RTZWxlY3Rpb25Db21tYW5kKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkgCi0JewotCQlJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotICAgIC8vTWFrZSBzdXJlIGEgYmVhbiBpcyBzZWxlY3RlZAotICAgIFN0cmluZyBqYXZhQmVhbk5hbWUgPSBudWxsOwotICAgIGlmIChvYmplY3RTZWxlY3Rpb24gIT0gbnVsbCAmJiAhb2JqZWN0U2VsZWN0aW9uLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICBPYmplY3Qgb2JqZWN0ID0gb2JqZWN0U2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFN0cmluZykKLSAgICAgIHsKLSAgICAgICAgamF2YUJlYW5OYW1lID0gKChTdHJpbmcpb2JqZWN0KTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgIAkvL1RoZSBPYmplY3RTZWxlY3Rpb25XaWRnZXQgbmV2ZXIgYXBwZWFyZWQgYW5kIHNvIHRoZSBJU3R1Y3R1cmVkU2VsZWN0aW9uIGZyb20gCi0gICAgICAJLy9PYmplY3RTZWxlY3Rpb25XaWRnZXRPdXRwdXRDb21tYW5kIGlzIHRoZSBpbml0aWFsIHNlbGVjdGlvbi4gCi0gICAgICAJLy9HZXQgdGhlIEphdmEgYmVhbiBuYW1lIGZyb20gdGhlIHNlbGVjdGlvbi4KLSAgICAgIAl0cnkKLQkJewotICAgICAgCSAgU3lzdGVtLm91dC5wcmludGxuKG9iamVjdC5nZXRDbGFzcygpLnRvU3RyaW5nKCkpOwotICAgICAgCSAgamF2YUJlYW5OYW1lID0gZ2V0SmF2YUJlYW5Gcm9tT2JqZWN0U2VsZWN0aW9uKG9iamVjdFNlbGVjdGlvbik7Ci0JCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0JCXsKLQkJICBJU3RhdHVzIGVycm9yU3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfQ0FOTk9UX05PX0pBVkFfQkVBTik7Ci0JCSAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKGVycm9yU3RhdHVzKTsKLQkJICByZXR1cm4gZXJyb3JTdGF0dXM7CQkJCi0JCX0KLSAgICAgIH0KLSAgICB9ICAgIAotICAgIAotICAgIGlmIChqYXZhQmVhbk5hbWU9PW51bGwgfHwgamF2YUJlYW5OYW1lLmxlbmd0aCgpPT0wKQotICAgIHsKLSAgICAgIElTdGF0dXMgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9DQU5OT1RfTk9fSkFWQV9CRUFOKTsKLSAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihlcnJvclN0YXR1cyk7Ci0gICAgICByZXR1cm4gZXJyb3JTdGF0dXM7Ci0gICAgfQotICAgIAotICAgIC8vTWFrZSBzdXJlIGEgcHJvamVjdCBpcyBzZWxlY3RlZAotICAgIElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHNlcnZpY2VQcm9qZWN0TmFtZSk7Ci0gICAgaWYgKHNlcnZpY2VQcm9qZWN0PT1udWxsKQotICAgIHsKLSAgICAgIElTdGF0dXMgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9OT19QUk9KRUNUKTsKLSAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihlcnJvclN0YXR1cyk7Ci0gICAgICByZXR1cm4gZXJyb3JTdGF0dXM7ICAgICAgCi0gICAgfQotICAgIAotICAgIC8vTWFrZSBzdXJlIHRoZSBzZWxlY3RlZCBiZWFuIGNhbiBiZSBsb2FkZWQgZnJvbSB0aGUgc2VsZWN0ZWQgcHJvamVjdAotCWlmIChqYXZhQmVhbk5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChKQVZBX0VYVEVOU0lPTikKLQkJfHwgamF2YUJlYW5OYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoQ0xBU1NfRVhURU5TSU9OKSkgewotCQlqYXZhQmVhbk5hbWUgPSBqYXZhQmVhbk5hbWUuc3Vic3RyaW5nKDAsIGphdmFCZWFuTmFtZS5sYXN0SW5kZXhPZignLicpKTsKLQl9Ci0JCi0gICAgdHJ5Ci0gICAgewotCSAgSmF2YUNsYXNzIGphdmFDbGFzcyA9IEphdmFNT0ZVdGlscy5nZXRKYXZhQ2xhc3MoamF2YUJlYW5OYW1lLCBzZXJ2aWNlUHJvamVjdCk7IAotCSAgaWYgKCFqYXZhQ2xhc3MuaXNFeGlzdGluZ1R5cGUoKSkgCi0JICB7CQkKLQkJSVN0YXR1cyBlcnJvclN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9DQU5OT1RfTE9BRF9KQVZBX0JFQU4sIG5ldyBTdHJpbmdbXSB7IGphdmFCZWFuTmFtZSwgc2VydmljZVByb2plY3ROYW1lIH0pKTsKLQkJZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKGVycm9yU3RhdHVzKTsKLQkJcmV0dXJuIGVycm9yU3RhdHVzOwotCSAgfQotICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0gICAgewotCSAgSVN0YXR1cyBlcnJvclN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9DQU5OT1RfTE9BRF9KQVZBX0JFQU4sIG5ldyBTdHJpbmdbXSB7IGphdmFCZWFuTmFtZSwgc2VydmljZVByb2plY3ROYW1lIH0pKTsKLQkgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihlcnJvclN0YXR1cyk7Ci0gICAgICByZXR1cm4gZXJyb3JTdGF0dXM7ICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0gIAotICAvKioKLSAgICogQHBhcmFtIHNlcnZpY2VQcm9qZWN0TmFtZSBUaGUgc2VydmljZVByb2plY3ROYW1lIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VQcm9qZWN0TmFtZShTdHJpbmcgc2VydmljZVByb2plY3ROYW1lKQotICB7Ci0gICAgdGhpcy5zZXJ2aWNlUHJvamVjdE5hbWUgPSBzZXJ2aWNlUHJvamVjdE5hbWU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcGFyYW0gb2JqZWN0U2VsZWN0aW9uIFRoZSBvYmplY3RTZWxlY3Rpb24gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0T2JqZWN0U2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIG9iamVjdFNlbGVjdGlvbikKLSAgewotICAgIHRoaXMub2JqZWN0U2VsZWN0aW9uID0gb2JqZWN0U2VsZWN0aW9uOwotICB9Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0SmF2YUJlYW5Gcm9tT2JqZWN0U2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIG9iamVjdFNlbGVjdGlvbikgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBiZWFuQ2xhc3MgPSAiIjsKLSAgICBKYXZhUmVzb3VyY2VGaWx0ZXIgZmlsdGVyID0gbmV3IEphdmFSZXNvdXJjZUZpbHRlcigpOyAKLSAgICAvL0lTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGluaXRpYWxTZWxlY3Rpb25fOwotICAgIC8vCi0gICAgaWYgKG9iamVjdFNlbGVjdGlvbiAhPSBudWxsKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBvYmplY3RTZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAob2JqICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIGdldCB0aGUgSVJlc291cmNlIHJlcHJlc2VudGVkIGJ5IHRoZSBzZWxlY3Rpb24KLSAgICAgICAgSVJlc291cmNlIHJlcyA9IG51bGw7Ci0gICAgICAgIAotICAgICAgICByZXMgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlRnJvbVNlbGVjdGlvbihvYmopOwotICAgICAgICAKLSAgICAgICAgaWYgKGZpbHRlci5hY2NlcHRzKHJlcykpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBnZXQgdGhlIHBhY2thZ2UtcXVhbGlmaWVkIGNsYXNzIG5hbWUgd2l0aG91dCBmaWxlIGV4dGVuc2lvbnMKLSAgICAgICAgICBTdHJpbmcgYmVhblBhY2thZ2UgPSBSZXNvdXJjZVV0aWxzLmdldEphdmFSZXNvdXJjZVBhY2thZ2VOYW1lKHJlcy5nZXRGdWxsUGF0aCgpKTsKLSAgICAgICAgICBpZiAoYmVhblBhY2thZ2U9PW51bGwpCi0gICAgICAgICAgICBiZWFuUGFja2FnZSA9ICIiOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJlYW5QYWNrYWdlID0gYmVhblBhY2thZ2UgKyAiLiI7Ci0KLSAgICAgICAgICBiZWFuQ2xhc3MgPSBiZWFuUGFja2FnZSArIHJlcy5nZXROYW1lKCk7Ci0KLSAgICAgICAgICBpZiAoYmVhbkNsYXNzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5qYXZhIikgfHwgYmVhbkNsYXNzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5jbGFzcyIpKSB7Ci0gICAgICAgICAgICBiZWFuQ2xhc3MgPSBiZWFuQ2xhc3Muc3Vic3RyaW5nKDAsYmVhbkNsYXNzLmxhc3RJbmRleE9mKCcuJykpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLwotICAgIHJldHVybiBiZWFuQ2xhc3M7Ci0gIH0gICAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aWRnZXRzL3NrZWxldG9uL0F4aXNTa2VsZXRvbkRlZmF1bHRpbmdDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aWRnZXRzL3NrZWxldG9uL0F4aXNTa2VsZXRvbkRlZmF1bHRpbmdDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3Y2IxZTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd2lkZ2V0cy9za2VsZXRvbi9BeGlzU2tlbGV0b25EZWZhdWx0aW5nQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS53aWRnZXRzLnNrZWxldG9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uV1NETFBhcnNlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci0KLQotcHVibGljIGNsYXNzIEF4aXNTa2VsZXRvbkRlZmF1bHRpbmdDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uOwotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyOwotICBwcml2YXRlIFN0cmluZyB3c2RsVVJJXzsKLSAgcHJpdmF0ZSBKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtOwotICAKLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkgCi0JewotICAgIGphdmFXU0RMUGFyYW0gPSBuZXcgSmF2YVdTRExQYXJhbWV0ZXIoKTsKLSAgICBqYXZhV1NETFBhcmFtLnNldFNlcnZlclNpZGUoSmF2YVdTRExQYXJhbWV0ZXIuU0VSVkVSX1NJREVfQkVBTik7Ci0gICAgamF2YVdTRExQYXJhbS5zZXRTa2VsZXRvbkRlcGxveSh0cnVlKTsKLSAgICBqYXZhV1NETFBhcmFtLnNldE1ldGFJbmZPbmx5KGZhbHNlKTsKLSAgICBqYXZhV1NETFBhcmFtLnNldElucHV0V3NkbExvY2F0aW9uKHdzZGxVUklfKTsKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKQotICB7Ci0gICAgdGhpcy5pbml0aWFsU2VsZWN0aW9uID0gaW5pdGlhbFNlbGVjdGlvbjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldE9iamVjdFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3RTZWxlY3Rpb24pCi0gIHsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXIpCi0gIHsKLSAgICB0aGlzLndlYlNlcnZpY2VzUGFyc2VyID0gd2ViU2VydmljZXNQYXJzZXI7Ci0gIH0KLSAgCi0gIHB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpCi0gIHsKLSAgICBpZiAod2ViU2VydmljZXNQYXJzZXIgPT0gbnVsbCkKLQkJd2ViU2VydmljZXNQYXJzZXIgPSBXU0RMUGFyc2VyRmFjdG9yeS5nZXRXU0RMUGFyc2VyKCk7Ci0gICAgcmV0dXJuIHdlYlNlcnZpY2VzUGFyc2VyOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlVVJJKCkKLSAgewotICAgIGlmIChpbml0aWFsU2VsZWN0aW9uICE9IG51bGwgJiYgIWluaXRpYWxTZWxlY3Rpb24uaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIE9iamVjdCBmaXJzdEVsZW1lbnQgPSBpbml0aWFsU2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgaWYgKGZpcnN0RWxlbWVudCBpbnN0YW5jZW9mIElGaWxlKQotICAgICAgewotICAgICAgICBJRmlsZSBpZmlsZSA9IChJRmlsZSlmaXJzdEVsZW1lbnQ7Ci0gICAgICAgIFN0cmluZyBmaWxlRXh0ZW5zaW9uID0gaWZpbGUuZ2V0RmlsZUV4dGVuc2lvbigpOwotICAgICAgICBpZiAoZmlsZUV4dGVuc2lvbi5lcXVhbHMoIndzZGwiKSB8fAotICAgICAgICAgICAgZmlsZUV4dGVuc2lvbi5lcXVhbHMoIndzaWwiKSB8fAotICAgICAgICAgICAgZmlsZUV4dGVuc2lvbi5lcXVhbHMoImh0bWwiKSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBpZmlsZS5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCk7ICAKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gIiI7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3NkbFVSSSgpCi0gIHsKLQkgIHJldHVybiB3c2RsVVJJXzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0V3NkbFVSSShTdHJpbmcgd3NkbFVSSSkKLSAgewotCSAgd3NkbFVSSV8gPSB3c2RsVVJJOwotCSAgCi0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldEdlbldTSUwoKQotICB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFdzaWxVUkkoKQotICB7Ci0gICAgU3RyaW5nIHdzVVJJID0gZ2V0V3NkbFVSSSgpOwotICAgIGludCBpbmRleCA9IHdzVVJJLmxhc3RJbmRleE9mKCcuJyk7Ci0gICAgaWYgKGluZGV4ICE9IC0xKQotICAgIHsKLSAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIod3NVUkkuc3Vic3RyaW5nKDAsIGluZGV4KSk7Ci0gICAgICBzYi5hcHBlbmQoIi53c2lsIik7Ci0gICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuICIiOwotICB9Ci0gIAotICBwdWJsaWMgSmF2YVdTRExQYXJhbWV0ZXIgZ2V0SmF2YVdTRExQYXJhbSgpCi0gIHsKLSAgICByZXR1cm4gamF2YVdTRExQYXJhbTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SHR0cEJhc2ljQXV0aFBhc3N3b3JkKCkKLSAgewotICAgIHJldHVybiBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpLmdldEhUVFBCYXNpY0F1dGhQYXNzd29yZCgpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRIdHRwQmFzaWNBdXRoVXNlcm5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGdldFdlYlNlcnZpY2VzUGFyc2VyKCkuZ2V0SFRUUEJhc2ljQXV0aFVzZXJuYW1lKCk7Ci0gIH0KLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aWRnZXRzL3NrZWxldG9uL1NrZWxldG9uQ29uZmlnV2lkZ2V0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aWRnZXRzL3NrZWxldG9uL1NrZWxldG9uQ29uZmlnV2lkZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NjAzMDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd2lkZ2V0cy9za2VsZXRvbi9Ta2VsZXRvbkNvbmZpZ1dpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDEwNiAgIDEyMTE5OSBqZXNwZXJAc2Vsc2thYmV0Lm9yZyAtIEplc3BlciBN+GxsZXIKLSAqIDIwMDYwMzIxICAgMTI4ODI3IGpvYW4gLSBKb2FuIEhhZ2dhcnR5LCByZW1vdmUgcmVkdW5kYW50IHdzZGwgVVJJLCBmb2xkZXIgYW5kIGZpbGUgY29udHJvbHMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS53aWRnZXRzLnNrZWxldG9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS5BeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLkF4aXNDcmVhdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbWJvOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotCi0KLXB1YmxpYyBjbGFzcyBTa2VsZXRvbkNvbmZpZ1dpZGdldCBleHRlbmRzIFNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcgotewotICBwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW07Ci0KLSAgLyogQ09OVEVYVF9JRCBQQlNDMDAwMSBmb3IgdGhlIFNrZWxldG9uIENvbmZpZyBQYWdlICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTkZPUE9QX1BCU0NfUEFHRSA9ICJQQlNDMDAwMSI7IC8vJE5PTi1OTFMtMSQKLSAgCi0gIC8vIHByaXZhdGUgVGV4dCB1cmlUZXh0XzsKLSAgLyogQ09OVEVYVF9JRCBQQkNGMDAwMiBmb3IgdGhlIFVSSSBmaWVsZCBvZiB0aGUgQmVhbiBDb25maWcgUGFnZSAqLwotICAvL3ByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUEJDRl9URVhUX1VSSSA9ICJQQkNGMDAwMiI7IC8vJE5PTi1OTFMtMSQKLSAgCi0gIHByaXZhdGUgQ29tYm8gc2tlbGV0b25Gb2xkZXJUZXh0XzsKLSAgLyogQ09OVEVYVF9JRCBQQlNDMDAwNCBmb3IgdGhlIFNrZWxldG9uIEZvbGRlciBmaWVsZCBvZiB0aGUgU2tlbGV0b24gQ29uZmlnIFBhZ2UgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElORk9QT1BfUEJTQ19URVhUX1NLRUxFVE9OX0ZPTERFUiA9ICJQQlNDMDAwNCI7IC8vJE5PTi1OTFMtMSQKLQotCi0gIC8qIENPTlRFWFRfSUQgUEJTQzAwMDUgZm9yIHRoZSBTa2VsZXRvbiBGb2xkZXIgQnJvd3NlIGJ1dHRvbiBvZiB0aGUgU2tlbGV0b24gQ29uZmlnIFBhZ2UgKi8KLSAgLy8gcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElORk9QT1BfUEJTQ19CVVRUT05fU0tFTEVUT05fRk9MREVSX0JST1dTRSA9ICJQQlNDMDAwNSI7IC8vJE5PTi1OTFMtMSQKLSAgLy8gcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRPT0xUSVBfUEJTQ19CVVRUT05fU0tFTEVUT05fRk9MREVSX0JST1dTRSA9ICJUT09MVElQX1BCU0NfQlVUVE9OX1NLRUxFVE9OX0ZPTERFUl9CUk9XU0UiOwotICAKLSAgcHJpdmF0ZSBCdXR0b24gc2hvd01hcHBpbmdzQ2hlY2tib3hfOwotICAvKiBDT05URVhUX0lEIFBCU0MwMDE2IGZvciB0aGUgU2hvdyBNYXBwaW5ncyBjaGVja2JveCBvZiB0aGUgQmVhbiBNZXRob2RzIFBhZ2UgICovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfTjJQX1NIT1dfTUFQUElOR1MgPSAiUEJTQzAwMTYiOyAvLyROT04tTkxTLTEkCi0gIAotICBwcml2YXRlIElQcm9qZWN0IHNlcnZlclByb2plY3RfOwotCQotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyggQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIpCi0gIHsKLSAgICBTdHJpbmcgICAgICAgcGx1Z2luSWQgICAgICAgID0gIm9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpIjsKLSAgICAKLSAgICBVSVV0aWxzICAgICAgdWlVdGlscyAgICAgICAgID0gbmV3IFVJVXRpbHMoIHBsdWdpbklkICk7Ci0gICAgVUlVdGlscyAgICAgIGNvblVpVXRpbHMgICAgICA9IG5ldyBVSVV0aWxzKCBwbHVnaW5JZCApOwotICAgIFVJVXRpbHMgICAgICBiYXNlQ29uVWlVdGlscyAgPSBuZXcgVUlVdGlscyggcGx1Z2luSWQgKTsKLQotICAJUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscCggcGFyZW50LCBwbHVnaW5JZCArICIuIiArICBJTkZPUE9QX1BCU0NfUEFHRSApOwotICAJcGFyZW50LnNldFRvb2xUaXBUZXh0KCBBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUEJTQ19QQUdFICk7Ci0gICAgCi0gICAgQ29tcG9zaXRlIHRleHRHcm91cCA9IHVpVXRpbHMuY3JlYXRlQ29tcG9zaXRlKCBwYXJlbnQsIDIsIDAsIDAgKTsKLQotICAgIC8qCi0gICAgdXJpVGV4dF8gPSB1aVV0aWxzLmNyZWF0ZVRleHQoIHRleHRHcm91cCwgIkxBQkVMX1VSSSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPT0xUSVBfUEJDRl9URVhUX1VSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9QQkNGX1RFWFRfVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8IFNXVC5SRUFEX09OTFkgKTsKLSAgICAqLwotICAgIAotICAgIHNrZWxldG9uRm9sZGVyVGV4dF8gPSBiYXNlQ29uVWlVdGlscy5jcmVhdGVDb21ibyggdGV4dEdyb3VwLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfU0tFTEVUT05fUk9PVF9OQU1FLAotICAgIAkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUEJTQ19URVhUX1NLRUxFVE9OX0ZPTERFUiwKLSAgICAgICAgSU5GT1BPUF9QQlNDX1RFWFRfU0tFTEVUT05fRk9MREVSLAotICAgICAgICBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8IFNXVC5SRUFEX09OTFkgKTsKLQotICAgIHNob3dNYXBwaW5nc0NoZWNrYm94XyA9IGNvblVpVXRpbHMuY3JlYXRlQ2hlY2tib3goIHBhcmVudCwgQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9FWFBMT1JFX01BUFBJTkdTX1hNTDJCRUFOLAotICAgIAkJCQkJCQkJCQkJCQlBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfTjJQX1NIT1dfTUFQUElOR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9OMlBfU0hPV19NQVBQSU5HUyApOwotICAgICAgICAKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RW5kcG9pbnRVUkkoU3RyaW5nIGVuZHBvaW50VVJJKQotICB7Ci0gIAkvKgotICAgIGlmIChlbmRwb2ludFVSSSAhPSBudWxsKQotICAgICAgdXJpVGV4dF8uc2V0VGV4dChlbmRwb2ludFVSSSk7Ci0gICAgKi8KLSAgfSAgCi0gIAotICBwdWJsaWMgdm9pZCBzZXRPdXRwdXRKYXZhRm9sZGVyKFN0cmluZyBvdXRwdXRKYXZhRm9sZGVyKQotICB7Ci0gICAgaWYgKG91dHB1dEphdmFGb2xkZXIgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpbnQgaW5kZXggPSBza2VsZXRvbkZvbGRlclRleHRfLmluZGV4T2Yob3V0cHV0SmF2YUZvbGRlcik7Ci0gICAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICAgIHNrZWxldG9uRm9sZGVyVGV4dF8uc2VsZWN0KGluZGV4KTsKLSAgICAgIGVsc2UgaWYgKHNrZWxldG9uRm9sZGVyVGV4dF8uZ2V0SXRlbUNvdW50KCkgPD0gMCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHJvb3QgPSBnZXRXb3Jrc3BhY2VSb290TG9jYXRpb24oKTsKLSAgICAgICAgaWYgKG91dHB1dEphdmFGb2xkZXIuc3RhcnRzV2l0aChyb290KSkKLSAgICAgICAgICBza2VsZXRvbkZvbGRlclRleHRfLnNldFRleHQob3V0cHV0SmF2YUZvbGRlci5zdWJzdHJpbmcocm9vdC5sZW5ndGgoKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgc2tlbGV0b25Gb2xkZXJUZXh0Xy5zZXRUZXh0KG91dHB1dEphdmFGb2xkZXIpOwotICAgICAgfQotICAgIH0KLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U2hvd01hcHBpbmcoYm9vbGVhbiBzaG93TWFwcGluZykKLSAgewotICAgIHNob3dNYXBwaW5nc0NoZWNrYm94Xy5zZXRTZWxlY3Rpb24oc2hvd01hcHBpbmcpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRTaG93TWFwcGluZygpCi0gIHsKLSAgICByZXR1cm4gc2hvd01hcHBpbmdzQ2hlY2tib3hfLmdldFNlbGVjdGlvbigpOwotICB9Ci0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgamF2YVdTRExQYXJhbS4KLSAgICovCi0gIHB1YmxpYyBKYXZhV1NETFBhcmFtZXRlciBnZXRKYXZhV1NETFBhcmFtKCkgewotCi0vLwkgIERvIG5vdCBiYXNlIEphdmEgb3V0cHV0IGRpcmVjdG9yeSBvbiB3b3Jrc3BhY2Ugcm9vdCBzaW5jZSB0aGUgcHJvamVjdCBjb3VsZCBiZSBub3QgCi0vLwkgIHBoeXNpY2FsbHkgbG9jYXRlZCBpbiB0aGUgd29ya3NwYWNlIHJvb3QsIGdldCB0aGUgcHJvamVjdCBzcGVjaWZpYyByb290IGluc3RlYWQKLQkgIAotCSAgU3RyaW5nIHByb2plY3RTcGVjaWZpY1Jvb3QgPSBzZXJ2ZXJQcm9qZWN0Xy5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JICBTdHJpbmcgc2tlbGV0b25Gb2xkZXIgPSBza2VsZXRvbkZvbGRlclRleHRfLmdldFRleHQoKTsKLQkgIFN0cmluZyBwcm9qZWN0UGF0aFN0cmluZyA9IHNlcnZlclByb2plY3RfLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKTsKLQkgIGlmIChza2VsZXRvbkZvbGRlci5zdGFydHNXaXRoKHByb2plY3RQYXRoU3RyaW5nKSkgewotCQkgIHNrZWxldG9uRm9sZGVyID0gc2tlbGV0b25Gb2xkZXIuc3Vic3RyaW5nKHByb2plY3RQYXRoU3RyaW5nLmxlbmd0aCgpKTsKLQkgIH0KLQkgIGphdmFXU0RMUGFyYW0uc2V0SmF2YU91dHB1dChwcm9qZWN0U3BlY2lmaWNSb290ICsgc2tlbGV0b25Gb2xkZXIpOwotCSAgcmV0dXJuIGphdmFXU0RMUGFyYW07Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIGphdmFXU0RMUGFyYW0gVGhlIGphdmFXU0RMUGFyYW0gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SmF2YVdTRExQYXJhbShKYXZhV1NETFBhcmFtZXRlciBqYXZhV1NETFBhcmFtKSB7Ci0JICB0aGlzLmphdmFXU0RMUGFyYW0gPSBqYXZhV1NETFBhcmFtOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJQcm9qZWN0KElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0KQotICB7Ci0JICBzZXJ2ZXJQcm9qZWN0XyA9IHNlcnZpY2VQcm9qZWN0OwotICAgIFN0cmluZyBvcmlnaW5hbFNrZWxldG9uRm9sZGVyID0gc2tlbGV0b25Gb2xkZXJUZXh0Xy5nZXRUZXh0KCk7Ci0gICAgc2tlbGV0b25Gb2xkZXJUZXh0Xy5yZW1vdmVBbGwoKTsKLSAgICBJUGF0aFtdIHBhdGhzID0gUmVzb3VyY2VVdGlscy5nZXRBbGxKYXZhU291cmNlTG9jYXRpb25zKHNlcnZpY2VQcm9qZWN0KTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhdGhzLmxlbmd0aCA7IGkrKykKLSAgICAgIHNrZWxldG9uRm9sZGVyVGV4dF8uYWRkKHBhdGhzW2ldLnRvU3RyaW5nKCkpOwotICAgIGludCBpbmRleCA9IHNrZWxldG9uRm9sZGVyVGV4dF8uaW5kZXhPZihvcmlnaW5hbFNrZWxldG9uRm9sZGVyKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICBza2VsZXRvbkZvbGRlclRleHRfLnNlbGVjdChpbmRleCk7Ci0gICAgZWxzZQotICAgICAgc2tlbGV0b25Gb2xkZXJUZXh0Xy5zZWxlY3QoMCk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldFdvcmtzcGFjZVJvb3RMb2NhdGlvbigpCi0gIHsKLSAgCXJldHVybiBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldExvY2F0aW9uKCkucmVtb3ZlVHJhaWxpbmdTZXBhcmF0b3IoKS50b1N0cmluZygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aWRnZXRzL3NrZWxldG9uL1NrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dpZGdldHMvc2tlbGV0b24vU2tlbGV0b25Db25maWdXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2JlODhhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dpZGdldHMvc2tlbGV0b24vU2tlbGV0b25Db25maWdXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwMzMwICAgMTI0NjY3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2lkZ2V0cy5za2VsZXRvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1vbi5KYXZhV1NETFBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotcHVibGljIGNsYXNzIFNrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIFN0cmluZyB3c2RsVVJJOwotICBwcml2YXRlIElQcm9qZWN0IHNlcnZlclByb2plY3Q7Ci0gIHByaXZhdGUgSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbTsKLSAgcHJpdmF0ZSBTdHJpbmcgc2VydmljZVNlcnZlclR5cGVJRF87Ci0KLSAgcHVibGljIFNrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQoICkKLSAgewotICB9Ci0gIAotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLQl7Ci0JCQotCQlTdHJpbmcgb3V0cHV0RGlyID0JUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UoSjJFRVV0aWxzLmdldFdlYkluZlBhdGgoIHNlcnZlclByb2plY3QgKSkuZ2V0TG9jYXRpb24oKS50b1N0cmluZygpOwotCQlqYXZhV1NETFBhcmFtLnNldE91dHB1dCggb3V0cHV0RGlyICk7Ci0vLwkJRG8gbm90IGJhc2UgSmF2YSBvdXRwdXQgZGlyZWN0b3J5IG9uIHdvcmtzcGFjZSByb290IHNpbmNlIHRoZSBwcm9qZWN0IGNvdWxkIGJlIG5vdCBwaHlzaWNhbGx5IGxvY2F0ZWQgaW4gdGhlIHdvcmtzcGFjZSByb290Ci0vLwkJamF2YVdTRExQYXJhbS5zZXRKYXZhT3V0cHV0KGdldFJvb3RVUkwoKSArIGdldE91dHB1dEphdmFGb2xkZXIoKSk7IAotCQlTdHJpbmcgamF2YU91dHB1dCA9CVJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKGdldE91dHB1dEphdmFGb2xkZXIoKSkuZ2V0TG9jYXRpb24oKS50b1N0cmluZygpOwotCQlqYXZhV1NETFBhcmFtLnNldEphdmFPdXRwdXQoamF2YU91dHB1dCk7Ci0JCi0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFdzZGxVUkkoU3RyaW5nIHdzZGxVUkkpCi0gIHsKLSAgICB0aGlzLndzZGxVUkkgPSB3c2RsVVJJOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJQcm9qZWN0KFN0cmluZyBzZXJ2ZXJQcm9qZWN0KQotICB7Ci0gICAgdGhpcy5zZXJ2ZXJQcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KHNlcnZlclByb2plY3QpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRFbmRwb2ludFVSSSgpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRPdXRwdXRXU0RMRm9sZGVyKCkKLSAgewotCSAgSVBhdGggd3NkbFBhdGggPSBKMkVFVXRpbHMuZ2V0V2ViQ29udGVudFBhdGgoc2VydmVyUHJvamVjdCApLmFwcGVuZCgid3NkbCIpOwotICAgICAgcmV0dXJuIHdzZGxQYXRoLnRvU3RyaW5nKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0T3V0cHV0V1NETEZpbGUoKQotICB7Ci0gICAgaW50IGluZGV4ID0gd3NkbFVSSS5sYXN0SW5kZXhPZignLycpOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgIGluZGV4ID0gd3NkbFVSSS5sYXN0SW5kZXhPZignXFwnKTsKLSAgICByZXR1cm4gd3NkbFVSSS5zdWJzdHJpbmcoaW5kZXgrMSwgd3NkbFVSSS5sZW5ndGgoKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0T3V0cHV0SmF2YUZvbGRlcigpCi0gIHsKLSAgICBpZiAoc2VydmVyUHJvamVjdCE9bnVsbCl7Ci0gICAgICByZXR1cm4gUmVzb3VyY2VVdGlscy5nZXRKYXZhU291cmNlTG9jYXRpb24oc2VydmVyUHJvamVjdCkudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRTaG93TWFwcGluZygpCi0gIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGlzU2hvd01hcHBpbmcoKQotICB7Ci0gICAgcmV0dXJuIGdldFNob3dNYXBwaW5nKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEphdmFXU0RMUGFyYW0oSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbSkKLSAgewotICAJdGhpcy5qYXZhV1NETFBhcmFtID0gamF2YVdTRExQYXJhbTsKLSAgfQotICAKLSAgcHVibGljIEphdmFXU0RMUGFyYW1ldGVyIGdldEphdmFXU0RMUGFyYW0oKQotICB7Ci0gICAgcmV0dXJuIGphdmFXU0RMUGFyYW07Ci0gIH0KLQotcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlU2VydmVyVHlwZUlEKCkgewotCXJldHVybiBzZXJ2aWNlU2VydmVyVHlwZUlEXzsKLX0KLQotcHVibGljIHZvaWQgc2V0U2VydmljZVNlcnZlclR5cGVJRChTdHJpbmcgc2VydmljZVNlcnZlclR5cGVJRCkgewotCXRoaXMuc2VydmljZVNlcnZlclR5cGVJRF8gPSBzZXJ2aWNlU2VydmVyVHlwZUlEOwotfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd2l6YXJkL2JlYW5zL1dTQmVhbkF4aXNUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aXphcmQvYmVhbnMvV1NCZWFuQXhpc1R5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ0YmNlMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aXphcmQvYmVhbnMvV1NCZWFuQXhpc1R5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjQgICAxMjAxMzcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNTIzICAgMTQzMjg0IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNjA2MDUgICAxNDU0MDcgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MDYwNyAgIDE0NDk3OCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpemFyZC5iZWFuczsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkuQXhpc0NvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS53aWRnZXRzLkF4aXNNYXBwaW5nc1dpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5BeGlzQ3JlYXRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuQlVDb2RlR2VuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuSmF2YVRvV1NETE1ldGhvZENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuY29tbWFuZC5WYWxpZGF0ZVdTSUNvbXBsaWFuY2VDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLnRhc2suRGVmYXVsdHNGb3JTZXJ2ZXJKYXZhV1NETENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2lkZ2V0cy5iZWFuLkJlYW5Db25maWdXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0Lk9iamVjdFNlbGVjdGlvbldpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldFJlZ2lzdHJ5OwotCi0KLS8qKgotKiBUaGlzIGlzIHRoZSBjbGFzcyBmb3IgdGhlCi0qIEF4aXMgYm90dG9tIHVwIEphdmEgQmVhbiBzY2VuYXJpbwotKiAKLSovCi1wdWJsaWMgY2xhc3MgV1NCZWFuQXhpc1R5cGUgaW1wbGVtZW50cyBDb21tYW5kV2lkZ2V0QmluZGluZwotewkKLSAgcHJpdmF0ZSBTdHJpbmcgc2VydmVyTmFtZV87Ci0gIHByaXZhdGUgU3RyaW5nIHJ1bnRpbWVOYW1lXzsKLSAgcHJpdmF0ZSBib29sZWFuIGlzV2ViTW9kdWxlUmVxdWlyZWRfOwotCi0KLSAgLyoqCi0gICogUmV0dXJucyBhIGxvY2FsZSBzcGVjaWZpYyBsYWJlbCBmb3IgdGhlIFNlcnZlciBzdXBwb3J0ZWQgYnkgdGhpcyBXZWIgU2VydmljZSB0eXBlCi0gICogQHJldHVybiBBIGxvY2FsZSBzcGVjaWZpYyBzZXJ2ZXIgbGFiZWwgZnJvbSBzZXJ2ZXIgcGx1Z2lucwotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZlckxhYmVsKCkKLSAgewotICAgIHJldHVybiBzZXJ2ZXJOYW1lXzsKLSAgfQotCi0gIC8qKgotICAqIFNldHMgdGhlIHNlcnZlciBsYWJlbCB0byB0aGUgYXBwcm9wcmlhdGUgbmFtZSBmb3VuZCBpbiB0aGUgc2VydmVyIHBsdWdpbnMuCi0gICogQHBhcmFtIHNlcnZlciBuYW1lCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZlckxhYmVsKFN0cmluZyBzZXJ2ZXJMYWJlbCkKLSAgewotICAgIHNlcnZlck5hbWVfID0gc2VydmVyTGFiZWw7Ci0gIH0KLSAgCi0gIC8qKgotICAqIFJldHVybnMgYSBsb2NhbGUgc3BlY2lmaWMgbGFiZWwgZm9yIHRoZSBkZXBsb3ltZW50IHJ1bnRpbWUgb2YgdGhpcyBXZWIgU2VydmljZSB0eXBlCi0gICogQHJldHVybiBBIGxvY2FsZSBzcGVjaWZpYyBsYWJlbCBmb3IgdGhlIGRlcGxveW1lbnQgcnVudGltZQotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFJ1bnRpbWVMYWJlbCgpCi0gIHsKLSAgICByZXR1cm4gcnVudGltZU5hbWVfOwotICB9Ci0KLSAgLyoqCi0gICogU2V0cyB0aGUgcnVudGltZSBsYWJlbCBmb3IgdGhlIGFwcHJvcHJpYXRlIHJ1bnRpbWUKLSAgKiBAcGFyYW0gc2VydmVyIG5hbWUKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0UnVudGltZUxhYmVsKFN0cmluZyBydW50aW1lTGFiZWwpCi0gIHsKLSAgICBydW50aW1lTmFtZV8gPSBydW50aW1lTGFiZWw7Ci0gIH0KLQotCi0gIC8qKgotICAqIFJldHVybnMgd2hldGhlciBvciBub3QgYSBXZWIgTW9kdWxlIGlzIHJlcXVpcmVkIGZvciB0aGlzIFdlYlNlcnZpY2VTZXJ2ZXJSdW50aW1lVHlwZQotICAqIEByZXR1cm4gdHJ1ZSBpZiByZXF1aXJlV2ViTW9kdWxlCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGlzV2ViTW9kdWxlUmVxdWlyZWQoKQotICB7Ci0gICAgcmV0dXJuIGlzV2ViTW9kdWxlUmVxdWlyZWRfOwotICB9Ci0KLSAgLyoqCi0gICogU2V0cyB0aGUgYm9vbGVhbiB2YWx1ZSBhdCBydW50aW1lIGFjY29yZGluZyB0byByZXF1aXJlV2ViTW9kdWxlIGF0dHJpYnV0ZSBmcm9tIHRoZSBtYW5pZmVzdCBmaWxlCi0gICogQHBhcmFtIHJlcXVpcmVXZWJNb2R1bGUgCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFdlYk1vZHVsZVJlcXVpcmVkKGJvb2xlYW4gcmVxdWlyZVdlYk1vZHVsZSkKLSAgewotICAgIGlzV2ViTW9kdWxlUmVxdWlyZWRfID0gcmVxdWlyZVdlYk1vZHVsZTsKLSAgfQotCi0gIAotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuV2ViU2VydmljZVNlcnZlclJ1bnRpbWVUeXBlI2lzRUpCTW9kdWxlUmVxdWlyZWQoKQotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzRUpCTW9kdWxlUmVxdWlyZWQoKSB7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLldlYlNlcnZpY2VTZXJ2ZXJSdW50aW1lVHlwZSNzZXRFSkJNb2R1bGVSZXF1aXJlZChib29sZWFuKQotCSAqLwotCXB1YmxpYyB2b2lkIHNldEVKQk1vZHVsZVJlcXVpcmVkKGJvb2xlYW4gYXJnMCkgewotCQlyZXR1cm47Ci0KLQl9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyQ2FuRmluaXNoKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJDYW5GaW5pc2goQ2FuRmluaXNoUmVnaXN0cnkgY2FuRmluaXNoUmVnaXN0cnkpIAotICB7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlckRhdGFNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkgCi0gIHsKLSAgICAvKgotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDdXJyZW50UGFnZUNvbW1hbmQuY2xhc3MsICJDdXJyZW50UGFnZSIsIEJlYW5DbGFzc1dpZGdldC5jbGFzcyApOwotICAgIC8vQmVhbkNsYXNzV2lkZ2V0IC0gYXMgdGFyZ2V0Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJKYXZhQmVhbk5hbWUiLCBCZWFuQ2xhc3NXaWRnZXQuY2xhc3MsICJCZWFuQ2xhc3NOYW1lIiwgbnVsbCk7Ci0gICAgLy9CZWFuQ2xhc3NXaWRnZXQgLSBhcyBzb3VyY2UKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhCZWFuQ2xhc3NXaWRnZXQuY2xhc3MsICJCZWFuQ2xhc3NOYW1lIiwgRGVmYXVsdHNGb3JTZXJ2ZXJKYXZhV1NETENvbW1hbmQuY2xhc3MsICJKYXZhQmVhbk5hbWUiLCBudWxsKTsgICAgLy9CZWFuQ29uZmlnV2lkZ2V0Ci0gICAgKi8KLSAgICAvLyBPYmplY3RTZWxlY3Rpb25XaWRnZXQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25XaWRnZXQuY2xhc3MsICJPYmplY3RTZWxlY3Rpb24iLCBEZWZhdWx0c0ZvclNlcnZlckphdmFXU0RMQ29tbWFuZC5jbGFzcyk7Ci0gICAgCi0gICAgLy9CZWFuQ29uZmlnV2lkZ2V0IC0gYXMgdGFyZ2V0Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoSmF2YVRvV1NETE1ldGhvZENvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgQmVhbkNvbmZpZ1dpZGdldC5jbGFzcywgIkphdmFQYXJhbWV0ZXIiLCBudWxsICk7Ci0gICAgLy9CZWFuQ29uZmlnV2lkZ2V0IC0gYXMgc291cmNlCi0KLSAgICAvLyAgVmFsaWRhdGVXU0lDb21wbGlhbmNlQ29tbWFuZAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEJlYW5Db25maWdXaWRnZXQuY2xhc3MsICJKYXZhUGFyYW1ldGVyIixWYWxpZGF0ZVdTSUNvbXBsaWFuY2VDb21tYW5kLmNsYXNzLCAiSmF2YVdTRExQYXJhbSIsIG51bGwpOwotCi0gICAgLy9kYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhCZWFuQ29uZmlnV2lkZ2V0LmNsYXNzLCAiSmF2YVBhcmFtZXRlciIsIEphdmEyV1NETENvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgbnVsbCk7ICAgICAgIAotICAgIC8vZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQmVhbkNvbmZpZ1dpZGdldC5jbGFzcywgIkphdmFQYXJhbWV0ZXIiLCBXU0RMMkphdmFDb21tYW5kLmNsYXNzLCAiSmF2YVdTRExQYXJhbSIsIG51bGwpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEJlYW5Db25maWdXaWRnZXQuY2xhc3MsICJKYXZhUGFyYW1ldGVyIixCVUNvZGVHZW5PcGVyYXRpb24uY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgbnVsbCk7Ci0gICAgLy9BeGlzTWFwcGluZ3NXaWRnZXQgLSBhcyB0YXJnZXQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhCZWFuQ29uZmlnV2lkZ2V0LmNsYXNzLCAiSmF2YVBhcmFtZXRlciIsIEF4aXNNYXBwaW5nc1dpZGdldC5jbGFzcyk7Ci0gICAgCi0gICAgLy9BeGlzTWFwcGluZ3NXaWRnZXQgLSBhcyBzb3VyY2UKLQotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNNYXBwaW5nc1dpZGdldC5jbGFzcywgIkphdmFQYXJhbWV0ZXIiLCBCVUNvZGVHZW5PcGVyYXRpb24uY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgbnVsbCk7ICAgICAgIAotICAKLSAgICAKLSAgICAvL2RhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBEZWZhdWx0c0ZvckNvbmZpZy5jbGFzcywgIkphdmFQYXJhbWV0ZXIiLCBCZWFuQ29uZmlnV2lkZ2V0LmNsYXNzICk7Ci0gICAgLy9kYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggRGVmYXVsdHNGb3JDb25maWcuY2xhc3MsICJDdXN0b21pemVTZXJ2aWNlTWFwcGluZ3MiLCBCZWFuQ29uZmlnV2lkZ2V0LmNsYXNzICk7Ci0gIH0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlcldpZGdldE1hcHBpbmdzKFdpZGdldFJlZ2lzdHJ5IHdpZGdldFJlZ2lzdHJ5KSAKLSAgewotICAgCi0gICAgLyoKLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoICJCZWFuU2VsZWN0aW9uIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICBBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NCRUFOX0NMQVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgQXhpc0NyZWF0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfV1NCRUFOX0NMQVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXaWRnZXRDb250cmlidXRvciBjcmVhdGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCZWFuQ2xhc3NXaWRnZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotICAgICovCi0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoICJCZWFuQ29uZmlnIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICBBeGlzQ3JlYXRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NCRUFOX0NPTkZJRywKLSAgICAgICAgICAgICAgICAgICAgICAgIEF4aXNDcmVhdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1dTQkVBTl9DT05GSUcsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJlYW5Db25maWdXaWRnZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotCi0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoICJBeGlzU2VydmljZUJlYW5NYXBwaW5nIiwgCi0gICAgCQlBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfQkVBTjJYTUwsCi0gICAgCQlBeGlzQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfREVTQ19QMk5fTUFQUElOR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEF4aXNNYXBwaW5nc1dpZGdldChBeGlzTWFwcGluZ3NXaWRnZXQuTU9ERV9CRUFOMlhNTCApOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnRGYWN0b3J5RmFjdG9yeSNjcmVhdGUoKQotICAgKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudEZhY3RvcnkgY3JlYXRlKCkgCi0gIHsKLSAgICByZXR1cm4gbmV3IENvbW1hbmRGcmFnbWVudEZhY3RvcnkoKQotICAgIHsKLSAgICAgIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgY3JlYXRlKCkKLSAgICAgIHsKLSAgICAgICAgICAvL2RlYWQgY29kZSAtIGRvZXNuJ3QgbWF0dGVyIHdoYXQgZ2V0cyByZXR1cm5lZCBoZXJlLgotICAgIAkgIHJldHVybiBuZXcgU2ltcGxlRnJhZ21lbnQoKTsKLSAgICAgIH0KLSAgICB9OwotICB9Ci0gICAgCi19Ci0KLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aXphcmQvd3NkbC9XU1dTRExBeGlzVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd2l6YXJkL3dzZGwvV1NXU0RMQXhpc1R5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEzZGI4Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93aXphcmQvd3NkbC9XU1dTRExBeGlzVHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMyMSAgIDEyODgyNyBqb2FuIC0gSm9hbiBIYWdnYXJ0eSwgcmVtb3ZlIHJlZHVuZGFudCB3c2RsIFVSSSwgZm9sZGVyIGFuZCBmaWxlIGNvbnRyb2xzCi0gKiAyMDA2MDUyMyAgIDE0MzI4NCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDYwNjA1ICAgMTQ1NDA3IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpemFyZC53c2RsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS53aWRnZXRzLkF4aXNNYXBwaW5nc0ZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQXhpc01hcHBpbmdzV2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuVERDb2RlR2VuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpZGdldHMuc2tlbGV0b24uQXhpc1NrZWxldG9uRGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2lkZ2V0cy5za2VsZXRvbi5Ta2VsZXRvbkNvbmZpZ1dpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS53aWRnZXRzLnNrZWxldG9uLlNrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5kYXRhLlByb2plY3ROYW1lMklQcm9qZWN0VHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5TZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldFJlZ2lzdHJ5OwotCi0vKioKLSogVGhpcyBpcyB0aGUgY2xhc3MgZm9yIHRoZSBBeGlzIFdlYiBzZXJ2aWNlIHR5cGUuCi0qLwotcHVibGljIGNsYXNzIFdTV1NETEF4aXNUeXBlIGltcGxlbWVudHMgQ29tbWFuZFdpZGdldEJpbmRpbmcgCi17Ci0JcHJpdmF0ZSBTdHJpbmcgc2VydmVyTmFtZV87Ci0JcHJpdmF0ZSBTdHJpbmcgcnVudGltZU5hbWVfOwotCXByaXZhdGUgYm9vbGVhbiBpc1dlYk1vZHVsZVJlcXVpcmVkXzsKLQotCS8qKgotCSogUmV0dXJucyBhIGxvY2FsZSBzcGVjaWZpYyBsYWJlbCBmb3IgdGhlIFNlcnZlciBzdXBwb3J0ZWQgYnkgdGhpcyBXZWIgU2VydmljZSB0eXBlCi0JKiBAcmV0dXJuIEEgbG9jYWxlIHNwZWNpZmljIHNlcnZlciBsYWJlbCBmcm9tIHNlcnZlciBwbHVnaW5zCi0JKi8KLQlwdWJsaWMgU3RyaW5nIGdldFNlcnZlckxhYmVsKCkgewotCQlyZXR1cm4gc2VydmVyTmFtZV87Ci0JfQotCi0JLyoqCi0JKiBTZXRzIHRoZSBzZXJ2ZXIgbGFiZWwgdG8gdGhlIGFwcHJvcHJpYXRlIG5hbWUgZm91bmQgaW4gdGhlIHNlcnZlciBwbHVnaW5zLgotCSogQHBhcmFtIHNlcnZlciBuYW1lCi0JKi8KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJMYWJlbChTdHJpbmcgc2VydmVyTGFiZWwpIHsKLQkJc2VydmVyTmFtZV8gPSBzZXJ2ZXJMYWJlbDsKLQl9Ci0KLQkvKioKLQkqIFJldHVybnMgYSBsb2NhbGUgc3BlY2lmaWMgbGFiZWwgZm9yIHRoZSBkZXBsb3ltZW50IHJ1bnRpbWUgb2YgdGhpcyBXZWIgU2VydmljZSB0eXBlCi0JKiBAcmV0dXJuIEEgbG9jYWxlIHNwZWNpZmljIGxhYmVsIGZvciB0aGUgZGVwbG95bWVudCBydW50aW1lCi0JKi8KLQlwdWJsaWMgU3RyaW5nIGdldFJ1bnRpbWVMYWJlbCgpIHsKLQkJcmV0dXJuIHJ1bnRpbWVOYW1lXzsKLQl9Ci0KLQkvKioKLQkqIFNldHMgdGhlIHJ1bnRpbWUgbGFiZWwgZm9yIHRoZSBhcHByb3ByaWF0ZSBydW50aW1lCi0JKiBAcGFyYW0gc2VydmVyIG5hbWUKLQkqLwotCXB1YmxpYyB2b2lkIHNldFJ1bnRpbWVMYWJlbChTdHJpbmcgcnVudGltZUxhYmVsKSB7Ci0JCXJ1bnRpbWVOYW1lXyA9IHJ1bnRpbWVMYWJlbDsKLQl9Ci0KLQkvKioKLQkqIFJldHVybnMgd2hldGhlciBvciBub3QgYSBXZWIgTW9kdWxlIGlzIHJlcXVpcmVkIGZvciB0aGlzIFdlYlNlcnZpY2VTZXJ2ZXJSdW50aW1lVHlwZQotCSogQHJldHVybiB0cnVlIGlmIHJlcXVpcmVXZWJNb2R1bGUKLQkqLwotCXB1YmxpYyBib29sZWFuIGlzV2ViTW9kdWxlUmVxdWlyZWQoKSB7Ci0JCXJldHVybiBpc1dlYk1vZHVsZVJlcXVpcmVkXzsKLQl9Ci0KLQkvKioKLQkqIFNldHMgdGhlIGJvb2xlYW4gdmFsdWUgYXQgcnVudGltZSBhY2NvcmRpbmcgdG8gcmVxdWlyZVdlYk1vZHVsZSBhdHRyaWJ1dGUgZnJvbSB0aGUgbWFuaWZlc3QgZmlsZQotCSogQHBhcmFtIHJlcXVpcmVXZWJNb2R1bGUgCi0JKi8KLQlwdWJsaWMgdm9pZCBzZXRXZWJNb2R1bGVSZXF1aXJlZChib29sZWFuIHJlcXVpcmVXZWJNb2R1bGUpIHsKLQkJaXNXZWJNb2R1bGVSZXF1aXJlZF8gPSByZXF1aXJlV2ViTW9kdWxlOwotCX0KLQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5XZWJTZXJ2aWNlU2VydmVyUnVudGltZVR5cGUjaXNFSkJNb2R1bGVSZXF1aXJlZCgpCi0JICovCi0JcHVibGljIGJvb2xlYW4gaXNFSkJNb2R1bGVSZXF1aXJlZCgpIHsKLQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLldlYlNlcnZpY2VTZXJ2ZXJSdW50aW1lVHlwZSNzZXRFSkJNb2R1bGVSZXF1aXJlZChib29sZWFuKQotCSAqLwotCXB1YmxpYyB2b2lkIHNldEVKQk1vZHVsZVJlcXVpcmVkKGJvb2xlYW4gYXJnMCkgewotCQlyZXR1cm47Ci0KLQl9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyQ2FuRmluaXNoKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJDYW5GaW5pc2goQ2FuRmluaXNoUmVnaXN0cnkgY2FuRmluaXNoUmVnaXN0cnkpIAotICB7Ci0gIH0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KSAKLSAgewotICAgIC8vIFNrZWxldG9uQ29uZmlnV2lkZ2V0Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0IiwgU2tlbGV0b25Db25maWdXaWRnZXQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0IiwgbmV3IFByb2plY3ROYW1lMklQcm9qZWN0VHJhbnNmb3JtZXIoKSk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1NrZWxldG9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgU2tlbGV0b25Db25maWdXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJFbmRwb2ludFVSSSIsIFNrZWxldG9uQ29uZmlnV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTa2VsZXRvbkNvbmZpZ1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiT3V0cHV0SmF2YUZvbGRlciIsIFNrZWxldG9uQ29uZmlnV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTa2VsZXRvbkNvbmZpZ1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2hvd01hcHBpbmciLCBTa2VsZXRvbkNvbmZpZ1dpZGdldC5jbGFzcyk7Ci0KLSAgICAvLyAgQmFja3VwU2tlbEltcGxDb21tYW5kICAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTa2VsZXRvbkNvbmZpZ1dpZGdldC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBURENvZGVHZW5PcGVyYXRpb24uY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgbnVsbCk7Ci0gICAgCi0gICAgLy8gQXhpc01hcHBpbmdzRnJhZ21lbnQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTa2VsZXRvbkNvbmZpZ1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2hvd01hcHBpbmciLCBBeGlzTWFwcGluZ3NGcmFnbWVudC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2tlbGV0b25Db25maWdXaWRnZXQuY2xhc3MsICJTaG93TWFwcGluZyIsIEF4aXNNYXBwaW5nc0ZyYWdtZW50LmNsYXNzKTsKLQotICAgIC8vIEF4aXNNYXBwaW5nc1dpZGdldAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgQXhpc01hcHBpbmdzV2lkZ2V0LmNsYXNzLCAiSmF2YVBhcmFtZXRlciIsIG51bGwpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNrZWxldG9uQ29uZmlnV2lkZ2V0LmNsYXNzLCAiSmF2YVdTRExQYXJhbSIsIEF4aXNNYXBwaW5nc1dpZGdldC5jbGFzcywgIkphdmFQYXJhbWV0ZXIiLCBudWxsKTsKLQotICAgIC8vIFdTREwySmF2YUNvbW1hbmQKLSAgICAvL2RhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgV1NETDJKYXZhQ29tbWFuZC5jbGFzcyk7Ci0gICAgLy9kYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTa2VsZXRvbkNvbmZpZ1dpZGdldC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBXU0RMMkphdmFDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTa2VsZXRvbkNvbmZpZ1dpZGdldC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBURENvZGVHZW5PcGVyYXRpb24uY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgbnVsbCk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc01hcHBpbmdzV2lkZ2V0LmNsYXNzLCAiSmF2YVBhcmFtZXRlciIsIFREQ29kZUdlbk9wZXJhdGlvbi5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBudWxsKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlcldpZGdldE1hcHBpbmdzKFdpZGdldFJlZ2lzdHJ5IHdpZGdldFJlZ2lzdHJ5KSAKLSAgewotICAgCi0gICAgLyoKLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoICJXU0RMU2VsZWN0aW9uIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9USVRMRV9XU19TRUxFQ1RJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1dTX1NFTEVDVElPTiwKLQkJICAgICAgICAgICAgICAgIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKQotICAgICAgICAgICAgICAgICAgICAgICAgewotCQkgICAgICAgICAgICAgICAgICBwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkKLQkJICAgICAgICAgICAgICAgICAgewotCQkgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV1NETFNlbGVjdGlvbldpZGdldCgpOwotCQkgICAgICAgICAgICAgICAgICB9Ci0JCSAgICAgICAgICAgICAgICB9ICk7Ci0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoICJXU0RMU2VsZWN0aW9uVHJlZVdpZGdldCIsIAotICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9USVRMRV9XU0RMX1NFTEVDVElPTiwKLSAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfREVTQ19XU0RMX1NFTEVDVElPTiwKLSAgICAgICAgbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0gICAgICAgIHsKLSAgICAgICAgICBwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBXU0RMU2VsZWN0aW9uVHJlZVdpZGdldCgpOwotICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICovCi0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoICJTa2VsZXRvbkNvbmZpZyIsIAotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NTS0VMX0NPTkZJRywKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfV1NTS0VMX0NPTkZJRywKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2tlbGV0b25Db25maWdXaWRnZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotCi0gICAgd2lkZ2V0UmVnaXN0cnkuYWRkKCAiQXhpc01hcHBpbmdzV2lkZ2V0IiwgCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9USVRMRV9XU19YTUwyQkVBTiwKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfTjJQX01BUFBJTkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXaWRnZXRDb250cmlidXRvciBjcmVhdGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBeGlzTWFwcGluZ3NXaWRnZXQoQXhpc01hcHBpbmdzV2lkZ2V0Lk1PREVfWE1MMkJFQU4pOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnRGYWN0b3J5RmFjdG9yeSNjcmVhdGUoKQotICAgKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudEZhY3RvcnkgY3JlYXRlKCkgCi0gIHsKLSAgICByZXR1cm4gbmV3IENvbW1hbmRGcmFnbWVudEZhY3RvcnkoKQotICAgIHsKLSAgICAgIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgY3JlYXRlKCkKLSAgICAgIHsKLSAgICAgICAgICAvL2RlYWQgY29kZSAtIGRvZXNuJ3QgbWF0dGVyIHdoYXQgZ2V0cyByZXR1cm5lZCBoZXJlLiAKLSAgICAJICByZXR1cm4gbmV3IFNpbXBsZUZyYWdtZW50KCk7Ci0gICAgICB9Ci0gICAgfTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd3NydC9BeGlzQmVhbkNvbmZpZ1dpZGdldEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dzcnQvQXhpc0JlYW5Db25maWdXaWRnZXRGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ZTZiNTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd3NydC9BeGlzQmVhbkNvbmZpZ1dpZGdldEZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS53c3J0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2lkZ2V0cy5iZWFuLkJlYW5Db25maWdXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2l6YXJkLmJlYW5zLldTQmVhbkF4aXNUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5JTmFtZWRXaWRnZXRDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5JTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0QmluZGluZ1RvV2lkZ2V0RmFjdG9yeUFkYXB0ZXI7Ci0KLXB1YmxpYyBjbGFzcyBBeGlzQmVhbkNvbmZpZ1dpZGdldEZhY3RvcnkgaW1wbGVtZW50cyBJTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3RvcnkgewotCi0JcHJpdmF0ZSBJTmFtZWRXaWRnZXRDb250cmlidXRvciAgICAgICAgICAgICBiZWFuQ29uZmlnV2lkZ2V0XzsKLQlwcml2YXRlIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yICAgICAgICAgICAgIG1hcHBpbmdzV2lkZ2V0XzsKLQlwcml2YXRlIEJlYW5Db25maWdXaWRnZXQgICAgICAgICAgICAgICAgICAgIGJlYW5XaWRnZXRfOwotCXByaXZhdGUgV2lkZ2V0QmluZGluZ1RvV2lkZ2V0RmFjdG9yeUFkYXB0ZXIgYWRhcHRlcl87Ci0JCi0JcHVibGljIEF4aXNCZWFuQ29uZmlnV2lkZ2V0RmFjdG9yeSgpCi0JewotCSAgYWRhcHRlcl8gPSBuZXcgV2lkZ2V0QmluZGluZ1RvV2lkZ2V0RmFjdG9yeUFkYXB0ZXIoIG5ldyBXU0JlYW5BeGlzVHlwZSgpICk7Ci0JICAKLQkgIGJlYW5Db25maWdXaWRnZXRfID0gYWRhcHRlcl8uZ2V0V2lkZ2V0KCAiQmVhbkNvbmZpZyIgKTsKLQkgIGJlYW5XaWRnZXRfICAgICAgID0gKEJlYW5Db25maWdXaWRnZXQpYmVhbkNvbmZpZ1dpZGdldF8uZ2V0V2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkuY3JlYXRlKCk7Ci0JICBtYXBwaW5nc1dpZGdldF8gICA9IGFkYXB0ZXJfLmdldFdpZGdldCggIkF4aXNTZXJ2aWNlQmVhbk1hcHBpbmciICk7Ci0JfQotCQotCXB1YmxpYyBJTmFtZWRXaWRnZXRDb250cmlidXRvciBnZXRGaXJzdE5hbWVkV2lkZ2V0KCkgCi0JewotCSAgcmV0dXJuIGJlYW5Db25maWdXaWRnZXRfOwotCX0KLQotCXB1YmxpYyBJTmFtZWRXaWRnZXRDb250cmlidXRvciBnZXROZXh0TmFtZWRXaWRnZXQoIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIHdpZGdldENvbnRyaWJ1dG9yKSAKLQl7Ci0JICByZXR1cm4gd2lkZ2V0Q29udHJpYnV0b3IgPT0gYmVhbkNvbmZpZ1dpZGdldF8gJiYgYmVhbldpZGdldF8uZ2V0Q3VzdG9taXplU2VydmljZU1hcHBpbmdzKCkgPyBtYXBwaW5nc1dpZGdldF8gOiBudWxsOwotCX0KLQkKLQlwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkgCi0JewotCSAgYWRhcHRlcl8ucmVnaXN0ZXJEYXRhTWFwcGluZ3MoIGRhdGFSZWdpc3RyeSApOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dzcnQvQXhpc1NrZWxldG9uQ29uZmlnV2lkZ2V0RmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd3NydC9BeGlzU2tlbGV0b25Db25maWdXaWRnZXRGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkOGI4ZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd3NydC9BeGlzU2tlbGV0b25Db25maWdXaWRnZXRGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud3NydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpZGdldHMuc2tlbGV0b24uU2tlbGV0b25Db25maWdXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud2l6YXJkLndzZGwuV1NXU0RMQXhpc1R5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLklOYW1lZFdpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLklOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRCaW5kaW5nVG9XaWRnZXRGYWN0b3J5QWRhcHRlcjsKLQotcHVibGljIGNsYXNzIEF4aXNTa2VsZXRvbkNvbmZpZ1dpZGdldEZhY3RvcnkgaW1wbGVtZW50cyBJTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3RvcnkgewotCi0JcHJpdmF0ZSBJTmFtZWRXaWRnZXRDb250cmlidXRvciAgICAgICAgICAgICBza2VsQ29uZmlnV2lkZ2V0XzsKLQlwcml2YXRlIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yICAgICAgICAgICAgIG1hcHBpbmdzV2lkZ2V0XzsKLQlwcml2YXRlIFNrZWxldG9uQ29uZmlnV2lkZ2V0ICAgICAgICAgICAgICAgIHNrZWxXaWRnZXRfOwotCXByaXZhdGUgV2lkZ2V0QmluZGluZ1RvV2lkZ2V0RmFjdG9yeUFkYXB0ZXIgYWRhcHRlcl87Ci0JCi0JcHVibGljIEF4aXNTa2VsZXRvbkNvbmZpZ1dpZGdldEZhY3RvcnkoKQotCXsKLQkgIGFkYXB0ZXJfID0gbmV3IFdpZGdldEJpbmRpbmdUb1dpZGdldEZhY3RvcnlBZGFwdGVyKCBuZXcgV1NXU0RMQXhpc1R5cGUoKSApOwotCSAgCi0JICBza2VsQ29uZmlnV2lkZ2V0XyA9IGFkYXB0ZXJfLmdldFdpZGdldCggIlNrZWxldG9uQ29uZmlnIiApOwotCSAgc2tlbFdpZGdldF8gICAgICAgPSAoU2tlbGV0b25Db25maWdXaWRnZXQpc2tlbENvbmZpZ1dpZGdldF8uZ2V0V2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkuY3JlYXRlKCk7Ci0JICBtYXBwaW5nc1dpZGdldF8gICA9IGFkYXB0ZXJfLmdldFdpZGdldCggIkF4aXNNYXBwaW5nc1dpZGdldCIgKTsKLQl9Ci0JCi0JcHVibGljIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIGdldEZpcnN0TmFtZWRXaWRnZXQoKSAKLQl7Ci0JICByZXR1cm4gc2tlbENvbmZpZ1dpZGdldF87Ci0JfQotCi0JcHVibGljIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIGdldE5leHROYW1lZFdpZGdldCggSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3Igd2lkZ2V0Q29udHJpYnV0b3IpIAotCXsKLQkgIHJldHVybiB3aWRnZXRDb250cmlidXRvciA9PSBza2VsQ29uZmlnV2lkZ2V0XyAmJiBza2VsV2lkZ2V0Xy5nZXRTaG93TWFwcGluZygpID8gbWFwcGluZ3NXaWRnZXRfIDogbnVsbDsKLQl9Ci0JCi0JcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhUmVnaXN0cnkpIAotCXsKLQkgIGFkYXB0ZXJfLnJlZ2lzdGVyRGF0YU1hcHBpbmdzKCBkYXRhUmVnaXN0cnkgKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93c3J0L0F4aXNXZWJTZXJ2aWNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93c3J0L0F4aXNXZWJTZXJ2aWNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ODE3MzUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd3NydC9BeGlzV2ViU2VydmljZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMzMCAgIDEyNDY2NyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjAzMzAgICAxMjg4Mjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNDI0ICAgMTIwMTM3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDUwOSAgIDEyNTA5NCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUsIFVzZSBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24KLSAqIDIwMDYwNTE1ICAgMTE1MjI1IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNjA1MTcgICAxNDIzMjcgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MDUyNCAgIDEzMDc1NSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA2MDcgICAxNDQ5Nzgga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwODEwICAgMTM1Mzk1IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBFbmFibGUgV1RQIFdlYiBzZXJ2aWNlIGZyYW1ld29yayBvcGVuaW5nIEphdmEgZWRpdG9yCi0gKiAyMDA2MTAwNCAgIDE1OTM1NiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbiwgR2V0IGNvcnJlY3QgbW9kdWxlIHJvb3QgVVJMIGJhc2VkIG9uIHNlcnZlciBjaG9zZW4KLSAqIDIwMDgwMjI3ICAgMTE5OTY0IHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nIEhhCi0gKiAyMDA4MTExMSAgIDI1MjA2MiBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24sIERvbid0IGRlcGVuZCBvbiBBdXRvQnVpbGQgdG8gY29tcGlsZSBiZWFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS53c3J0OwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbWFuZC5BeGlzRGVwbG95Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi5jb3JlLmNvbW1hbmQuR2Vyb25pbW9BeGlzRGVwbG95Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLlJlZnJlc2hQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jb25zdW1wdGlvbi51aS50YXNrLlZhbGlkYXRlV1NETENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuY29tbWFuZC5BeGlzQ2hlY2tDb21waWxlckxldmVsQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLkF4aXNPdXRwdXRDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuQXhpc1J1bklucHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLkJVQXhpc0lucHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLkJVQ29kZUdlbk9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLkNvcHlEZXBsb3ltZW50RmlsZUNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkuY29tbWFuZC5KYXZhVG9XU0RMTWV0aG9kQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS5jb21tYW5kLk1vZGlmeVdTRExFbmRwb2ludEFkZHJlc3NDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuVERBeGlzSW5wdXRDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuVERDb2RlR2VuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLmNvbW1hbmQuVmFsaWRhdGVXU0lDb21wbGlhbmNlQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS50YXNrLkJVQ29uZmlnQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS50YXNrLkRlZmF1bHRzRm9yU2VydmVySmF2YVdTRExDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLnRhc2suVERDb25maWdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpZGdldHMuYmVhbi5CVUF4aXNEZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS53aWRnZXRzLnNrZWxldG9uLkF4aXNTa2VsZXRvbkRlZmF1bHRpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNyZWF0aW9uLnVpLndpZGdldHMuc2tlbGV0b24uU2tlbGV0b25Db25maWdXaWRnZXREZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQnVpbGRCZWFuQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQnVpbGRQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5kYXRhLlByb2plY3ROYW1lMklQcm9qZWN0VHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuSUNvbW1hbmRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLlNpbXBsZUNvbW1hbmRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5FY2xpcHNlRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuQWJzdHJhY3RXZWJTZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZUluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotCi1wdWJsaWMgY2xhc3MgQXhpc1dlYlNlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdFdlYlNlcnZpY2UKLXsKLQlwcml2YXRlIEF4aXNXZWJTZXJ2aWNlSW5mbyBheGlzV2ViU2VydmljZUluZm9fOwotCi0JcHVibGljIEF4aXNXZWJTZXJ2aWNlKFdlYlNlcnZpY2VJbmZvIGluZm8pCi0JewotCQlzdXBlcihpbmZvKTsKLQl9Ci0KLQlwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGFzc2VtYmxlKElFbnZpcm9ubWVudCBlbnYsIElDb250ZXh0IGN0eCwKLQkJCUlTZWxlY3Rpb24gc2VsLCBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpCi0JewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQlwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGRlcGxveShJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotCQkJU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KQotCXsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JcHVibGljIElDb21tYW5kRmFjdG9yeSBkZXZlbG9wKElFbnZpcm9ubWVudCBlbnYsIElDb250ZXh0IGN0eCwgSVNlbGVjdGlvbiBzZWwsCi0JCQlTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpCi0JewotCQkKLQkJVmVjdG9yIGNvbW1hbmRzID0gbmV3IFZlY3RvcigpOwotICAgIEVjbGlwc2VFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IChFY2xpcHNlRW52aXJvbm1lbnQpZW52OwotCQkKLQkJaWYgKGN0eC5nZXRTY2VuYXJpbygpLmdldFZhbHVlKCkgPT0gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTVVQKSB7Ci0JCQkKLQkJCXJlZ2lzdGVyQlVEYXRhTWFwcGluZ3MoIGVudmlyb25tZW50LmdldENvbW1hbmRNYW5hZ2VyKCkuZ2V0TWFwcGluZ1JlZ2lzdHJ5KCkpOwotCQkJCi0JCQljb21tYW5kcy5hZGQobmV3IEJVQXhpc0lucHV0Q29tbWFuZCh0aGlzLCBwcm9qZWN0KSk7Ci0JCQljb21tYW5kcy5hZGQobmV3IEF4aXNDaGVja0NvbXBpbGVyTGV2ZWxDb21tYW5kKCkpOwotLy8JCQljb21tYW5kcy5hZGQobmV3IFZhbGlkYXRlT2JqZWN0U2VsZWN0aW9uQ29tbWFuZCgpKTsKLQkJCWNvbW1hbmRzLmFkZChuZXcgQlVBeGlzRGVmYXVsdGluZ0NvbW1hbmQoKSk7Ci0JCQljb21tYW5kcy5hZGQobmV3IERlZmF1bHRzRm9yU2VydmVySmF2YVdTRExDb21tYW5kKCkpOwotCQkJY29tbWFuZHMuYWRkKG5ldyBKYXZhVG9XU0RMTWV0aG9kQ29tbWFuZCgpKTsKLQkJCS8vIGNvbW1hbmRzLmFkZChuZXcgU2ltcGxlRnJhZ21lbnQoICJCZWFuQ29uZmlnIiApKTsKLQkJCS8vIGNvbW1hbmRzLmFkZChuZXcgU2ltcGxlRnJhZ21lbnQoICJBeGlzU2VydmljZUJlYW5NYXBwaW5nIiApKTsKLQkJCWNvbW1hbmRzLmFkZChuZXcgQlVDb25maWdDb21tYW5kKCkpOwotCQkJY29tbWFuZHMuYWRkKG5ldyBWYWxpZGF0ZVdTSUNvbXBsaWFuY2VDb21tYW5kKCkpOwotCQkJLy9jb21tYW5kcy5hZGQobmV3IFdhaXRGb3JBdXRvQnVpbGRDb21tYW5kKCkpOwotCQkJY29tbWFuZHMuYWRkKG5ldyBCdWlsZEJlYW5Db21tYW5kKCkpOwotCQkJY29tbWFuZHMuYWRkKG5ldyBCVUNvZGVHZW5PcGVyYXRpb24oKSk7Ci0vLwkJCWNvbW1hbmRzLmFkZChuZXcgUmVmcmVzaFByb2plY3RDb21tYW5kKCkpOwotCQkJY29tbWFuZHMuYWRkKG5ldyBCdWlsZFByb2plY3RDb21tYW5kKCkpOwotCQkJY29tbWFuZHMuYWRkKG5ldyBBeGlzT3V0cHV0Q29tbWFuZCh0aGlzKSk7Ci0JCQkKLQkJfSBlbHNlIGlmIChjdHguZ2V0U2NlbmFyaW8oKS5nZXRWYWx1ZSgpID09IFdlYlNlcnZpY2VTY2VuYXJpby5UT1BET1dOKSB7Ci0JCQkKLQkJCXJlZ2lzdGVyVEREYXRhTWFwcGluZ3MoIGVudmlyb25tZW50LmdldENvbW1hbmRNYW5hZ2VyKCkuZ2V0TWFwcGluZ1JlZ2lzdHJ5KCkpOwotCQkJCi0JCQljb21tYW5kcy5hZGQobmV3IFREQXhpc0lucHV0Q29tbWFuZCh0aGlzLCBwcm9qZWN0KSk7Ci0JCQljb21tYW5kcy5hZGQobmV3IEF4aXNTa2VsZXRvbkRlZmF1bHRpbmdDb21tYW5kKCkpOwotCQkgICAgY29tbWFuZHMuYWRkKG5ldyBWYWxpZGF0ZVdTRExDb21tYW5kKCkpOwotCQkgICAgY29tbWFuZHMuYWRkKG5ldyBTa2VsZXRvbkNvbmZpZ1dpZGdldERlZmF1bHRpbmdDb21tYW5kKCkpOwotLy8JCQljb21tYW5kcy5hZGQobmV3IFNpbXBsZUZyYWdtZW50KCAiU2tlbGV0b25Db25maWciICkpOwotLy8JCQljb21tYW5kcy5hZGQobmV3IFNpbXBsZUZyYWdtZW50KCAiQXhpc01hcHBpbmdzV2lkZ2V0IiApKTsKLQkJICAgIGNvbW1hbmRzLmFkZChuZXcgVERDb25maWdDb21tYW5kKCkpOwotCQkJY29tbWFuZHMuYWRkKG5ldyBURENvZGVHZW5PcGVyYXRpb24oKSk7Ci0vLwkJICAgIGNvbW1hbmRzLmFkZChuZXcgUmVmcmVzaFByb2plY3RDb21tYW5kKCkpOwotCQkgICAgY29tbWFuZHMuYWRkKG5ldyBCdWlsZFByb2plY3RDb21tYW5kKCkpOwotCQkJY29tbWFuZHMuYWRkKG5ldyBBeGlzT3V0cHV0Q29tbWFuZCh0aGlzKSk7Ci0JCQkKLQkJfSBlbHNlIHsKLQkJCS8vVE9ETzogUmVtb3ZlIHByaW50bG4gYW5kIHJlYXNzZXNzIHRoaXMgImVycm9yIi4KLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiRXJyb3IgLSBXZWJTZXJ2aWNlU2NlbmFyaW8gc2hvdWxkIG5vdCBiZSBDbGllbnQgZm9yIEF4aXNXZWJTZXJ2aWNlIik7Ci0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCQkKLQkJCi0JCXJldHVybiBuZXcgU2ltcGxlQ29tbWFuZEZhY3RvcnkoY29tbWFuZHMpOwotCX0KLQotCXB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgaW5zdGFsbChJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotCQkJU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KQotCXsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JcHVibGljIElDb21tYW5kRmFjdG9yeSBydW4oSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwKLQkJCVN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCkKLQl7Ci0JCVZlY3RvciBjb21tYW5kcyA9IG5ldyBWZWN0b3IoKTsKLQotCQlpZiAoY3R4LmdldFNjZW5hcmlvKCkuZ2V0VmFsdWUoKSA9PSBXZWJTZXJ2aWNlU2NlbmFyaW8uQ0xJRU5UKSB7Ci0JCQkvL1RPRE86IFJlbW92ZSBwcmludGxuIGFuZCByZWFzc2VzcyB0aGlzICJlcnJvciIuCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9yIC0gV2ViU2VydmljZVNjZW5hcmlvIHNob3VsZCBub3QgYmUgQ2xpZW50IGZvciBBeGlzV2ViU2VydmljZSIpOwotCQkJcmV0dXJuIG51bGw7Ci0JCX0gZWxzZSB7Ly8gRm9yIEJPVFRPTV9VUCBhbmQgVE9QX0RPV04KLQkJCWNvbW1hbmRzLmFkZChuZXcgQXhpc1J1bklucHV0Q29tbWFuZCh0aGlzLCBwcm9qZWN0KSk7Ci0JCQljb21tYW5kcy5hZGQobmV3IE1vZGlmeVdTRExFbmRwb2ludEFkZHJlc3NDb21tYW5kKCkpOwotCQkgICAgY29tbWFuZHMuYWRkKG5ldyBBeGlzRGVwbG95Q29tbWFuZChwcm9qZWN0KSk7Ci0KLQkJCWNvbW1hbmRzLmFkZChuZXcgUmVmcmVzaFByb2plY3RDb21tYW5kKCkpOwotCi0JCQlyZXR1cm4gbmV3IFNpbXBsZUNvbW1hbmRGYWN0b3J5KGNvbW1hbmRzKTsKLQkJfQotCX0KLQkKLQlwdWJsaWMgdm9pZCByZWdpc3RlckJVRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgcmVnaXN0cnkpIAotCSAgewotCQkvL0JVQXhpc0lucHV0Q29tbWFuZAotLy8JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmljZVNlcnZlclR5cGVJRCIsIFN0YXJ0UHJvamVjdENvbW1hbmQuY2xhc3MpOwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0lucHV0Q29tbWFuZC5jbGFzcywgIkphdmFCZWFuTmFtZSIsIEJVQXhpc0RlZmF1bHRpbmdDb21tYW5kLmNsYXNzICk7Ci0JCQotCSAgICAvL1ZhbGlkYXRlT2JqZWN0U2VsZWN0aW9uQ29tbWFuZAotLy8JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIk9iamVjdFNlbGVjdGlvbiIsIFZhbGlkYXRlT2JqZWN0U2VsZWN0aW9uQ29tbWFuZC5jbGFzcyk7Ci0vLwkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhCVUF4aXNJbnB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0IiwgVmFsaWRhdGVPYmplY3RTZWxlY3Rpb25Db21tYW5kLmNsYXNzLCJTZXJ2aWNlUHJvamVjdE5hbWUiLCBudWxsICk7Ci0JICAgIAotCSAgICAvL0JVQXhpc0RlZmF1bHRpbmdDb21tYW5kCi0vLwkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhTZWxlY3Rpb25Db21tYW5kLmNsYXNzLCAiSW5pdGlhbFNlbGVjdGlvbiIsIEJVQXhpc0RlZmF1bHRpbmdDb21tYW5kLmNsYXNzICk7Ci0vL0tTQyAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmljZVR5cGVSdW50aW1lU2VydmVyIiwgQlVBeGlzRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MgKTsKLQkgICAgCSAgICAKLQkJLy8gQXhpc0NoZWNrQ29tcGlsZXJMZXZlbENvbW1hbmQKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyhCVUF4aXNJbnB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0IiwgQXhpc0NoZWNrQ29tcGlsZXJMZXZlbENvbW1hbmQuY2xhc3MpOwotCQkKLQkgICAgLy9CVUF4aXNDb21tYW5kczIgLSB0aGVzZSBydW4gYWZ0ZXIgQmVhbkNsYXNzV2lkZ2V0Ci0JICAgIC8vRGVmYXVsdHNGb3JTZXJ2ZXJKYXZhV1NETENvbW1hbmQKLQkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhCVUF4aXNEZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBEZWZhdWx0c0ZvclNlcnZlckphdmFXU0RMQ29tbWFuZC5jbGFzcyk7Ci0JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIERlZmF1bHRzRm9yU2VydmVySmF2YVdTRExDb21tYW5kLmNsYXNzLCAiU2VydmljZVByb2plY3QiLCBuZXcgU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyKCkpOwotICAgICAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0lucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZpY2VTZXJ2ZXJUeXBlSUQiLCBEZWZhdWx0c0ZvclNlcnZlckphdmFXU0RMQ29tbWFuZC5jbGFzcyk7IAotICAgICAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0lucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZpY2VFeGlzdGluZ1NlcnZlciIsIERlZmF1bHRzRm9yU2VydmVySmF2YVdTRExDb21tYW5kLmNsYXNzKTsgICAgICAgIAotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0RlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSmF2YUJlYW5OYW1lIiwgRGVmYXVsdHNGb3JTZXJ2ZXJKYXZhV1NETENvbW1hbmQuY2xhc3MpOwotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0RlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUGFyc2VyIiwgRGVmYXVsdHNGb3JTZXJ2ZXJKYXZhV1NETENvbW1hbmQuY2xhc3MpOwotCSAgICAKLQkgICAgLy9KYXZhV1NETE1ldGhvZENvbW1hbmQKLQkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhEZWZhdWx0c0ZvclNlcnZlckphdmFXU0RMQ29tbWFuZC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBKYXZhVG9XU0RMTWV0aG9kQ29tbWFuZC5jbGFzcyk7Ci0JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIEphdmFUb1dTRExNZXRob2RDb21tYW5kLmNsYXNzLCAiU2VydmljZVByb2plY3QiLCBuZXcgU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyKCkpOwotCi0JICAgIC8vIEJVQXhpc0NvbW1hbmRzMyAtIHRoZXNlIHJ1biBhZnRlciBCZWFuQ29uZmlnV2lkZ2V0Ci0gICAgCSAgICAKLQkgICAgLy9Db3B5QXhpc0phckNvbW1hbmQKLQkgICAgLy9yZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0lucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlclByb2plY3QiLCBDb3B5QXhpc0phckNvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgbmV3IFN0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lcigpKTsKLQkgICAgCSAgICAKLQkgICAgLy8gVmFsaWRhdGVXU0lDb21wbGlhbmNlQ29tbWFuZAotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKERlZmF1bHRzRm9yU2VydmVySmF2YVdTRExDb21tYW5kLmNsYXNzLCAiSmF2YVdTRExQYXJhbSIsIFZhbGlkYXRlV1NJQ29tcGxpYW5jZUNvbW1hbmQuY2xhc3MpOwotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0lucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlclByb2plY3QiLCBWYWxpZGF0ZVdTSUNvbXBsaWFuY2VDb21tYW5kLmNsYXNzLCAiU2VydmljZVByb2plY3QiLCBuZXcgU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyKCkpOwotCSAgICAKLQkgICAgLy9KYXZhMldTRExDb21tYW5kCi0JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoSmF2YVRvV1NETE1ldGhvZENvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgQlVDb2RlR2VuT3BlcmF0aW9uLmNsYXNzKTsKLQkgICAgCi0JICAgIC8vUmVmcmVzaFByb2plY3RDb21tYW5kCi0JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIFJlZnJlc2hQcm9qZWN0Q29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBuZXcgU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyKCkpOwotCSAgICAKLQkgICAgLy9VcGRhdGVXRUJYTUxDb21tYW5kCi0JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIEJVQ29kZUdlbk9wZXJhdGlvbi5jbGFzcywgIlNlcnZpY2VQcm9qZWN0IiwgbmV3IFN0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lcigpKTsKLQkgICAgCi0JICAgIC8vQnVpbGRCZWFuQ29tbWFuZAotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0lucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlclByb2plY3QiLCBCdWlsZEJlYW5Db21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIG5ldyBTdHJpbmdUb0lQcm9qZWN0VHJhbnNmb3JtZXIoKSk7Ci0JICAgIAotCSAgICAvL0J1aWxkUHJvamVjdENvbW1hbmQKLQkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhCVUF4aXNJbnB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0IiwgQnVpbGRQcm9qZWN0Q29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBuZXcgU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyKCkpOwotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0RlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRm9yY2VCdWlsZCIsIEJ1aWxkUHJvamVjdENvbW1hbmQuY2xhc3MpOwotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0RlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVmFsaWRhdGlvbk1hbmFnZXIiLCBCdWlsZFByb2plY3RDb21tYW5kLmNsYXNzKTsKLQkgICAgCi0JICAgIC8vU3RhcnRQcm9qZWN0Q29tbWFuZAotLy8JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIFN0YXJ0UHJvamVjdENvbW1hbmQuY2xhc3MsICJTZXJ2aWNlUHJvamVjdCIsIG5ldyBTdHJpbmdUb0lQcm9qZWN0VHJhbnNmb3JtZXIoKSk7ICAgIAotLy8JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTYW1wbGVQcm9qZWN0IiwgU3RhcnRQcm9qZWN0Q29tbWFuZC5jbGFzcyk7Ci0vL0tTQyAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlU2VydmVyVHlwZUlEIiwgU3RhcnRQcm9qZWN0Q29tbWFuZC5jbGFzcyk7Ci0vLwkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhCVUF4aXNEZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNhbXBsZVNlcnZlclR5cGVJRCIsIFN0YXJ0UHJvamVjdENvbW1hbmQuY2xhc3MpOwotLy8JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQlVBeGlzRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIiLCBTdGFydFByb2plY3RDb21tYW5kLmNsYXNzKTsKLS8vCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0RlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2FtcGxlRXhpc3RpbmdTZXJ2ZXIiLCBTdGFydFByb2plY3RDb21tYW5kLmNsYXNzKTsKLS8vCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQXhpc0RlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSXNXZWJQcm9qZWN0U3RhcnR1cFJlcXVlc3RlZCIsU3RhcnRQcm9qZWN0Q29tbWFuZC5jbGFzcyk7Ci0JICAgICAgICAKLQkJLy8gQXhpc091dHB1dENvbW1hbmQKLQkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhCVUNvZGVHZW5PcGVyYXRpb24uY2xhc3MsICJXc2RsVVJJIiwgQXhpc091dHB1dENvbW1hbmQuY2xhc3MpOwotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEJVQ29kZUdlbk9wZXJhdGlvbi5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBBeGlzT3V0cHV0Q29tbWFuZC5jbGFzcyk7CSAgICAKLSAgIAotCQkKLQkJLy8gUnVuIGV4dGVuc2lvbgotCQkKLS8vCQlNb2RpZnlXU0RMRW5kcG9pbnRBZGRyZXNzQ29tbWFuZAotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNSdW5JbnB1dENvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgTW9kaWZ5V1NETEVuZHBvaW50QWRkcmVzc0NvbW1hbmQuY2xhc3MpOwotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNSdW5JbnB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJJbnN0YW5jZUlkIiwgTW9kaWZ5V1NETEVuZHBvaW50QWRkcmVzc0NvbW1hbmQuY2xhc3MpOwotCSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNSdW5JbnB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJGYWN0b3J5SWQiLCBNb2RpZnlXU0RMRW5kcG9pbnRBZGRyZXNzQ29tbWFuZC5jbGFzcyk7Ci0JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1J1bklucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlclByb2plY3QiLCBNb2RpZnlXU0RMRW5kcG9pbnRBZGRyZXNzQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VQcm9qZWN0IiwgbmV3IFN0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lcigpKTsKLQkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzUnVuSW5wdXRDb21tYW5kLmNsYXNzLCAiV3NkbFVSSSIsIE1vZGlmeVdTRExFbmRwb2ludEFkZHJlc3NDb21tYW5kLmNsYXNzKTsKLQkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhCVUF4aXNEZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlBhcnNlciIsIE1vZGlmeVdTRExFbmRwb2ludEFkZHJlc3NDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZXNQYXJzZXIiLCBudWxsKTsKLQotCQkvLyBHZXJvbmltb0F4aXNEZXBsb3lDb21tYW5kCi0JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoTW9kaWZ5V1NETEVuZHBvaW50QWRkcmVzc0NvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgR2Vyb25pbW9BeGlzRGVwbG95Q29tbWFuZC5jbGFzcyk7CQkKLQkgICAgCi0JCS8vQXhpc0RlcGxveUNvbW1hbmQKLQkgICAgcmVnaXN0cnkuYWRkTWFwcGluZyhNb2RpZnlXU0RMRW5kcG9pbnRBZGRyZXNzQ29tbWFuZC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBBeGlzRGVwbG95Q29tbWFuZC5jbGFzcyk7Ci0JCQotCSAgICAvLyBDb3B5RGVwbG95bWVudEZpbGVDb21tYW5kCi0JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1J1bklucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlckluc3RhbmNlSWQiLCBDb3B5RGVwbG95bWVudEZpbGVDb21tYW5kLmNsYXNzKTsKLQkgICAgCi0JICAgIC8vUmVmcmVzaFByb2plY3RDb21tYW5kCi0JICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1J1bklucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlclByb2plY3QiLCBSZWZyZXNoUHJvamVjdENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgbmV3IFN0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lcigpKTsKLQkgICAgCi0JICB9Ci0KLQlwdWJsaWMgdm9pZCByZWdpc3RlclRERGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotCSAgewotCSAgICAvLyBUcmFuc2Zvcm1lcnMKLQkgICAgUHJvamVjdE5hbWUySVByb2plY3RUcmFuc2Zvcm1lciBwcm9qZWN0VHJhbnNmb3JtZXIgPSBuZXcgUHJvamVjdE5hbWUySVByb2plY3RUcmFuc2Zvcm1lcigpOwotCi0JCS8vIFRPRE86ICBtYXAgIkluaXRpYWxTZWxlY3Rpb24iIGFuZCAiT2JqZWN0U2VsZWN0aW9uIiBmcm9tIFREQXhpc0lucHV0Q29tbWFuZAotCQkKLS8vCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZWxlY3Rpb25Db21tYW5kLmNsYXNzLCAiSW5pdGlhbFNlbGVjdGlvbiIsIEF4aXNTa2VsZXRvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLS8vCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiT2JqZWN0U2VsZWN0aW9uIiwgQXhpc1NrZWxldG9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotLy8JICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFREQXhpc0lucHV0Q29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2VzUGFyc2VyIiwgQXhpc1NrZWxldG9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotCSAgICAKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1NrZWxldG9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgU2tlbGV0b25Db25maWdXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0JCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFREQXhpc0lucHV0Q29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBBeGlzU2tlbGV0b25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0JICAgIC8vIFZhbGlkYXRlV1NETENvbW1hbmQKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1NrZWxldG9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlc1BhcnNlciIsIFZhbGlkYXRlV1NETENvbW1hbmQuY2xhc3MpOwotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzU2tlbGV0b25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBWYWxpZGF0ZVdTRExDb21tYW5kLmNsYXNzKTsKLQkgICAgCi0JICAgIC8vIFNrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoVERBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIFNrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzU2tlbGV0b25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBTa2VsZXRvbkNvbmZpZ1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoVERBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmljZVNlcnZlclR5cGVJRCIsIFNrZWxldG9uQ29uZmlnV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotCSAgICAgICAKLQkgICAgLy8gQXhpc1NrZWxldG9uRGVmYXVsdGluZ0NvbW1hbmQKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1NrZWxldG9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgVERDb2RlR2VuT3BlcmF0aW9uLmNsYXNzKTsKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1NrZWxldG9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJIdHRwQmFzaWNBdXRoVXNlcm5hbWUiLCBURENvZGVHZW5PcGVyYXRpb24uY2xhc3MpOwotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzU2tlbGV0b25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkh0dHBCYXNpY0F1dGhQYXNzd29yZCIsIFREQ29kZUdlbk9wZXJhdGlvbi5jbGFzcyk7Ci0JICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNTa2VsZXRvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSmF2YVdTRExQYXJhbSIsIFREQ29kZUdlbk9wZXJhdGlvbi5jbGFzcyk7Ci0JICAgIAotCSAgICAvLyBDb3B5QXhpc0phckNvbW1hbmQKLQkgICAgLy9kYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhUREF4aXNJbnB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0IiwgQ29weUF4aXNKYXJDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIHByb2plY3RUcmFuc2Zvcm1lcik7Ci0KLQkgICAgLy8gQmFja3VwU2tlbEltcGxDb21tYW5kCi0JICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNTa2VsZXRvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZXNQYXJzZXIiLCBURENvZGVHZW5PcGVyYXRpb24uY2xhc3MpOyAgICAgIAotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhUREF4aXNJbnB1dENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlSW5mbyIsIFREQ29kZUdlbk9wZXJhdGlvbi5jbGFzcyk7Ci0JICAgIAotCSAgICAvLyBTa2VsZXRvbjJXU0RMQ29tbWFuZAotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhUREF4aXNJbnB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0IiwgVERDb2RlR2VuT3BlcmF0aW9uLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIHByb2plY3RUcmFuc2Zvcm1lcik7Ci0JICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFREQXhpc0lucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZpY2VTZXJ2ZXJUeXBlSUQiLCBURENvZGVHZW5PcGVyYXRpb24uY2xhc3MpOwotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhUREF4aXNJbnB1dENvbW1hbmQuY2xhc3MsICJTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIiLCBURENvZGVHZW5PcGVyYXRpb24uY2xhc3MpOwkKLQotCSAgICAvLyBSZWZyZXNoUHJvamVjdENvbW1hbmQKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoVERBeGlzSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIFJlZnJlc2hQcm9qZWN0Q29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBwcm9qZWN0VHJhbnNmb3JtZXIpOwotCSAgICAKLQkgICAgLy8gQnVpbGRQcm9qZWN0Q29tbWFuZAotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhUREF4aXNJbnB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0IiwgQnVpbGRQcm9qZWN0Q29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBwcm9qZWN0VHJhbnNmb3JtZXIpOwotCi0JICAgIC8vCU1vZGlmeVdTRExFbmRwb2ludEFkZHJlc3NDb21tYW5kCi0JICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNSdW5JbnB1dENvbW1hbmQuY2xhc3MsICJKYXZhV1NETFBhcmFtIiwgTW9kaWZ5V1NETEVuZHBvaW50QWRkcmVzc0NvbW1hbmQuY2xhc3MpOwotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhBeGlzUnVuSW5wdXRDb21tYW5kLmNsYXNzLCAiU2VydmVySW5zdGFuY2VJZCIsIE1vZGlmeVdTRExFbmRwb2ludEFkZHJlc3NDb21tYW5kLmNsYXNzKTsKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1J1bklucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlckZhY3RvcnlJZCIsIE1vZGlmeVdTRExFbmRwb2ludEFkZHJlc3NDb21tYW5kLmNsYXNzKTsKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1J1bklucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlclByb2plY3QiLCBNb2RpZnlXU0RMRW5kcG9pbnRBZGRyZXNzQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VQcm9qZWN0IiwgbmV3IFN0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lcigpKTsKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1J1bklucHV0Q29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBNb2RpZnlXU0RMRW5kcG9pbnRBZGRyZXNzQ29tbWFuZC5jbGFzcyk7Ci0JICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEF4aXNTa2VsZXRvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZXNQYXJzZXIiLCBNb2RpZnlXU0RMRW5kcG9pbnRBZGRyZXNzQ29tbWFuZC5jbGFzcyk7Ci0KLQkgICAgLy8gR2Vyb25pbW9BeGlzRGVwbG95Q29tbWFuZAotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhNb2RpZnlXU0RMRW5kcG9pbnRBZGRyZXNzQ29tbWFuZC5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBHZXJvbmltb0F4aXNEZXBsb3lDb21tYW5kLmNsYXNzKTsKLQkgICAgCi0JICAgIC8vIEF4aXNEZXBsb3lDb21tYW5kCi0JICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKE1vZGlmeVdTRExFbmRwb2ludEFkZHJlc3NDb21tYW5kLmNsYXNzLCAiSmF2YVdTRExQYXJhbSIsIEF4aXNEZXBsb3lDb21tYW5kLmNsYXNzKTsKLQkgICAgCi0JICAgIC8vIENvcHlEZXBsb3ltZW50RmlsZUNvbW1hbmQKLQkgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQXhpc1J1bklucHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlckluc3RhbmNlSWQiLCBDb3B5RGVwbG95bWVudEZpbGVDb21tYW5kLmNsYXNzKTsKLQkgICAgCi0JICAgIC8vIEF4aXNPdXRwdXRDb21tYW5kCi0JICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFREQ29kZUdlbk9wZXJhdGlvbi5jbGFzcywgIldzZGxVUkkiLCBBeGlzT3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0JICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFREQ29kZUdlbk9wZXJhdGlvbi5jbGFzcywgIkphdmFXU0RMUGFyYW0iLCBBeGlzT3V0cHV0Q29tbWFuZC5jbGFzcyk7IAotCSAgfQotCXB1YmxpYyBBeGlzV2ViU2VydmljZUluZm8gZ2V0QXhpc1dlYlNlcnZpY2VJbmZvKCkgewotCQlyZXR1cm4gYXhpc1dlYlNlcnZpY2VJbmZvXzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRBeGlzV2ViU2VydmljZUluZm8oQXhpc1dlYlNlcnZpY2VJbmZvIGF4aXNXZWJTZXJ2aWNlSW5mbykgewotCQlheGlzV2ViU2VydmljZUluZm9fID0gYXhpc1dlYlNlcnZpY2VJbmZvOwotCX0KLX0JCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dzcnQvQXhpc1dlYlNlcnZpY2VJbmZvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvYXhpcy9jcmVhdGlvbi91aS93c3J0L0F4aXNXZWJTZXJ2aWNlSW5mby5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTdmNzhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dzcnQvQXhpc1dlYlNlcnZpY2VJbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY3JlYXRpb24udWkud3NydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUuY29tbW9uLkphdmFXU0RMUGFyYW1ldGVyOwotCi1wdWJsaWMgY2xhc3MgQXhpc1dlYlNlcnZpY2VJbmZvIHsKLQkKLQlwcml2YXRlIEphdmFXU0RMUGFyYW1ldGVyIGphdmFXU0RMUGFyYW1ldGVyOwotCi0JcHVibGljIEphdmFXU0RMUGFyYW1ldGVyIGdldEphdmFXU0RMUGFyYW1ldGVyKCkgewotCQlyZXR1cm4gamF2YVdTRExQYXJhbWV0ZXI7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0SmF2YVdTRExQYXJhbWV0ZXIoSmF2YVdTRExQYXJhbWV0ZXIgamF2YVdTRExQYXJhbWV0ZXIpIHsKLQkJdGhpcy5qYXZhV1NETFBhcmFtZXRlciA9IGphdmFXU0RMUGFyYW1ldGVyOwotCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd3NydC9BeGlzV2ViU2VydmljZVJ1bnRpbWUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dzcnQvQXhpc1dlYlNlcnZpY2VSdW50aW1lLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYmQxMGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd3NydC9BeGlzV2ViU2VydmljZVJ1bnRpbWUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS53c3J0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmF4aXMuY29uc3VtcHRpb24udWkud3NydC5BeGlzV2ViU2VydmljZUNsaWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5BYnN0cmFjdFdlYlNlcnZpY2VSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlQ2xpZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VDbGllbnRJbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VJbmZvOwotCi1wdWJsaWMgY2xhc3MgQXhpc1dlYlNlcnZpY2VSdW50aW1lIGV4dGVuZHMgQWJzdHJhY3RXZWJTZXJ2aWNlUnVudGltZQotewotCi0JcHVibGljIElXZWJTZXJ2aWNlIGdldFdlYlNlcnZpY2UoV2ViU2VydmljZUluZm8gaW5mbykKLQl7Ci0gICAgcmV0dXJuIG5ldyBBeGlzV2ViU2VydmljZShpbmZvKTsKLQl9Ci0KLQlwdWJsaWMgSVdlYlNlcnZpY2VDbGllbnQgZ2V0V2ViU2VydmljZUNsaWVudChXZWJTZXJ2aWNlQ2xpZW50SW5mbyBpbmZvKQotCXsKLQkJcmV0dXJuIG5ldyBBeGlzV2ViU2VydmljZUNsaWVudChpbmZvKTsKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9heGlzL2NyZWF0aW9uL3VpL3dzcnQvQXhpc1dlYlNlcnZpY2VSdW50aW1lQ2hlY2tlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd3NydC9BeGlzV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MWE0MWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2F4aXMvY3JlYXRpb24vdWkvd3NydC9BeGlzV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwODAzMjYgICAxOTg0Mzkga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuYXhpcy5jcmVhdGlvbi51aS53c3J0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LkFic3RyYWN0V2ViU2VydmljZVJ1bnRpbWVDaGVja2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlUnVudGltZUNoZWNrZXI7Ci0KLXB1YmxpYyBjbGFzcyBBeGlzV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyIGV4dGVuZHMKLQkJQWJzdHJhY3RXZWJTZXJ2aWNlUnVudGltZUNoZWNrZXIgaW1wbGVtZW50cyBJV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyIHsKLQkKLQlwdWJsaWMgSVN0YXR1cyBjaGVja1NlcnZpY2VDbGllbnRDb21wYXRpYmlsaXR5KGJvb2xlYW4gc2VydmljZU5lZWRFQVIsCi0JCQlTdHJpbmcgc2VydmljZUVBUk5hbWUsIFN0cmluZyBzZXJ2aWNlUHJvamVjdE5hbWUsCi0JCQlib29sZWFuIGNsaWVudE5lZWRFQVIsIFN0cmluZyBjbGllbnRFQVJOYW1lLAotCQkJU3RyaW5nIGNsaWVudFByb2plY3ROYW1lKSB7Ci0KLQkJaWYgKHNlcnZpY2VQcm9qZWN0TmFtZSAhPSBudWxsICYmIHNlcnZpY2VQcm9qZWN0TmFtZS5lcXVhbHNJZ25vcmVDYXNlKGNsaWVudFByb2plY3ROYW1lKSkgewotCQkJcmV0dXJuIFN0YXR1c1V0aWxzCi0JCQkuZXJyb3JTdGF0dXMoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19TQU1FX0NMSUVOVF9BTkRfU0VSVklDRV9QUk9KRUNUUyk7Ci0JCX0KLQkJaWYgKHNlcnZpY2VOZWVkRUFSICYmIGNsaWVudE5lZWRFQVIpIHsKLQkJCWlmIChzZXJ2aWNlRUFSTmFtZSAhPSBudWxsICYmIHNlcnZpY2VFQVJOYW1lLmVxdWFscyhjbGllbnRFQVJOYW1lKSkgewotCQkJCXJldHVybiBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19TQU1FX0NMSUVOVF9BTkRfU0VSVklDRV9FQVJTLAotCQkJCQkJbmV3IFN0cmluZ1tdIHsgIkVBUiIgfSkpOwotCQkJfQotCQl9Ci0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvLmNsYXNzcGF0aCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NmQ0OWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjLyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjUiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YzA3OWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotYmluCi1idWlsZC54bWwKLXRlbXAuZm9sZGVyCi13c2MtdWkuamFyCi1AZG90Ci1zcmMuemlwCi1qYXZhQ29tcGlsZXIuLi5hcmdzCi1vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWlfKi5qYXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLy5wcm9qZWN0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMDI2MDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWk8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjQwMmVlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSNNb24gTm92IDE5IDEzOjU5OjU2IEVTVCAyMDA3Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS41Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFubm90YXRpb25TdXBlckludGVyZmFjZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXV0b2JveGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uSW5EZXByZWNhdGVkQ29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbldoZW5PdmVycmlkaW5nRGVwcmVjYXRlZE1ldGhvZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kaXNjb3VyYWdlZFJlZmVyZW5jZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW1wdHlTdGF0ZW1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmhpZGRlbkNhdGNoQmxvY2s9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBhdGlibGVOb25Jbmhlcml0ZWRJbnRlcmZhY2VNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBsZXRlRW51bVN3aXRjaD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5kaXJlY3RTdGF0aWNBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmxvY2FsVmFyaWFibGVIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nRGVwcmVjYXRlZEFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdTZXJpYWxWZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9FZmZlY3RBc3NpZ25tZW50PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9JbXBsaWNpdFN0cmluZ0NvbnZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub25FeHRlcm5hbGl6ZWRTdHJpbmdMaXRlcmFsPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3BlY2lhbFBhcmFtZXRlckhpZGluZ0ZpZWxkPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN0YXRpY0FjY2Vzc1JlY2VpdmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN5bnRoZXRpY0FjY2Vzc0VtdWxhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udHlwZVBhcmFtZXRlckhpZGluZz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuY2hlY2tlZFR5cGVPcGVyYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmRvY3VtZW50ZWRFbXB0eUJsb2NrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeUVsc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5VHlwZUNoZWNrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnF1YWxpZmllZEZpZWxkQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb25XaGVuT3ZlcnJpZGluZz1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRJbXBvcnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5PdmVycmlkaW5nQ29uY3JldGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUHJpdmF0ZU1lbWJlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTNlZGRmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jTW9uIEphbiAzMCAxMDo0MToyMCBFU1QgMjAwNgotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0xCi1jb21waWxlcnMucC5uby1yZXF1aXJlZC1hdHQ9MAotY29tcGlsZXJzLnAubm90LWV4dGVybmFsaXplZC1hdHQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1hdHRyaWJ1dGU9MAotY29tcGlsZXJzLnAudW5rbm93bi1jbGFzcz0wCi1jb21waWxlcnMucC51bmtub3duLWVsZW1lbnQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1yZXNvdXJjZT0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWV4LXBvaW50cz0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWltcG9ydD0wCi1jb21waWxlcnMudXNlLXByb2plY3Q9dHJ1ZQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL01FVEEtSU5GL01BTklGRVNULk1GIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlODdkZmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aTsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4xLjEwNC5xdWFsaWZpZXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4KLUJ1bmRsZS1WZW5kb3I6ICVQTFVHSU5fUFJPVklERVIKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5hbnQ7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLmRhdGE7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmV4dGVuc2lvbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW47eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXM7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuc2VsZWN0aW9uO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnNlcnZlcjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuYmluZGluZzt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnM7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3Q7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5ydW50aW1lO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuZXhwbG9yZXI7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0Lndzc2FtcGxlO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQudWRkaTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c2lsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQ7eC1pbnRlcm5hbDo9dHJ1ZQotSW1wb3J0LVBhY2thZ2U6IGNvbS5pYm0uaWN1LnV0aWw7IHZlcnNpb249IjMuOCIsCi0gY29tLmlibS5pY3UudGV4dDsgdmVyc2lvbj0iMy44IgotUmVxdWlyZS1CdW5kbGU6IG9yZy5hcGFjaGUueGVyY2VzO2J1bmRsZS12ZXJzaW9uPSJbMi44LjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMCwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWk7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LmNvbW1vbi5mcmFtZXdvcmtzO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXI7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LndzO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cy51aTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb247YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuamVtO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5qZW0ud29ya2JlbmNoO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuY29tbW9uO2J1bmRsZS12ZXJzaW9uPSJbMi4yLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuZWNvcmU7YnVuZGxlLXZlcnNpb249IlsyLjIuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmpkdC5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5qZHQudWk7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3M7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuamVtLndvcmtiZW5jaDtidW5kbGUtdmVyc2lvbj0iWzIuMC4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaTtidW5kbGUtdmVyc2lvbj0iWzIuMi4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMi4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMiwyLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS4yLjAsMS4zLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LmoyZWUuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LmoyZWUuZWpiO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWI7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW1mO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVtZndvcmtiZW5jaC5pbnRlZ3JhdGlvbjtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLm1vZHVsZWNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53cy51aTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gamF2YXgud3NkbDtidW5kbGUtdmVyc2lvbj0iWzEuNS4wLDEuNi4wKSIsCi0gb3JnLmVjbGlwc2UuamVtLnV0aWw7YnVuZGxlLXZlcnNpb249IlsyLjAuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb247YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy51aTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudDtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LnNlcnZlci5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMiwyLjAuMCkiLAotIG9yZy5lY2xpcHNlLmRlYnVnLmNvcmU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpLmZvcm1zO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIgotRWNsaXBzZS1MYXp5U3RhcnQ6IHRydWUKLUJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvYWJvdXQuaHRtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvYnVpbGQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYjhjYjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotc291cmNlLi4gPSBzcmMvCi1iaW4uaW5jbHVkZXMgPSAuLFwKLSAgICAgICAgICAgICAgIGljb25zLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sCi1zcmMuaW5jbHVkZXMgPSBzY2hlbWEvCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9jbGllbnRfYXNzZW1ibGUuanBnIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvY2xpZW50X2Fzc2VtYmxlLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY3NjY3OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9jbGllbnRfYXNzZW1ibGUuanBnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvY2xpZW50X2RlcGxveS5qcGcgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9jbGllbnRfZGVwbG95LmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NmYzg2Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9jbGllbnRfZGVwbG95LmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2NsaWVudF9kZXZlbG9wLmpwZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2NsaWVudF9kZXZlbG9wLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY1OWUyNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9jbGllbnRfZGV2ZWxvcC5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9jbGllbnRfaW5zdGFsbC5qcGcgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9jbGllbnRfaW5zdGFsbC5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4MjI1MDguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvY2xpZW50X2luc3RhbGwuanBnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvY2xpZW50X25vbmUuanBnIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvY2xpZW50X25vbmUuanBnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWM4ZmE5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2NsaWVudF9ub25lLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2NsaWVudF9ydW4uanBnIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvY2xpZW50X3J1bi5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2M2FjNzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvY2xpZW50X3J1bi5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9jbGllbnRfdGVzdC5qcGcgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9jbGllbnRfdGVzdC5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2Yjk0NDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvY2xpZW50X3Rlc3QuanBnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvZnVsbC9jdG9vbDE2L2NvbmZpZ3VyZV9oYW5kbGVycy5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9mdWxsL2N0b29sMTYvY29uZmlndXJlX2hhbmRsZXJzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExM2M4NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9mdWxsL2N0b29sMTYvY29uZmlndXJlX2hhbmRsZXJzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvY3Rvb2wxNi9nZW5lcmF0ZWRfc2FtcGxlLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvY3Rvb2wxNi9nZW5lcmF0ZWRfc2FtcGxlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFiYTUxZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9mdWxsL2N0b29sMTYvZ2VuZXJhdGVkX3NhbXBsZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9mdWxsL2N0b29sMTYvbmV3Y2xpZW50X3dlYnNlcnZfd2l6LmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvY3Rvb2wxNi9uZXdjbGllbnRfd2Vic2Vydl93aXouZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWUwNWZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvY3Rvb2wxNi9uZXdjbGllbnRfd2Vic2Vydl93aXouZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvZnVsbC9kdG9vbC9jb25maWd1cmVfaGFuZGxlcnMuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvZnVsbC9kdG9vbC9jb25maWd1cmVfaGFuZGxlcnMuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDYwZGQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvZHRvb2wvY29uZmlndXJlX2hhbmRsZXJzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvZHRvb2wvZ2VuZXJhdGVkX3NhbXBsZS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9mdWxsL2R0b29sL2dlbmVyYXRlZF9zYW1wbGUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTBkMzk2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvZHRvb2wvZ2VuZXJhdGVkX3NhbXBsZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9mdWxsL3dpemJhbi9jb25maWdfaGFuZGxlcl93aXoucG5nIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvZnVsbC93aXpiYW4vY29uZmlnX2hhbmRsZXJfd2l6LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIxMTg5Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9mdWxsL3dpemJhbi9jb25maWdfaGFuZGxlcl93aXoucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvZnVsbC93aXpiYW4vZ2VuX3NhbXBsZV93aXoucG5nIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvZnVsbC93aXpiYW4vZ2VuX3NhbXBsZV93aXoucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWJhZmM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvd2l6YmFuL2dlbl9zYW1wbGVfd2l6LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvd2l6YmFuL2ltcG9ydC13c2lsX3dpei5wbmcgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9mdWxsL3dpemJhbi9pbXBvcnQtd3NpbF93aXoucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjliZGIyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvd2l6YmFuL2ltcG9ydC13c2lsX3dpei5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9mdWxsL3dpemJhbi9pbXBvcnRfd3Nfd2l6LnBuZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvd2l6YmFuL2ltcG9ydF93c193aXoucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzc4ZWU2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvd2l6YmFuL2ltcG9ydF93c193aXoucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvZnVsbC93aXpiYW4vd2Vic2VydmljZXNjbGllbnRfd2l6LnBuZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2Z1bGwvd2l6YmFuL3dlYnNlcnZpY2VzY2xpZW50X3dpei5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMjMzNWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvZnVsbC93aXpiYW4vd2Vic2VydmljZXNjbGllbnRfd2l6LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2ltcG9ydF93cy5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9pbXBvcnRfd3MuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDFmZTg0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL2ltcG9ydF93cy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9yZWdpc3RyeS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9yZWdpc3RyeS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNDNjYWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvcmVnaXN0cnkuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvc2NhbGUwX2Jncm91bmQuanBnIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvc2NhbGUwX2Jncm91bmQuanBnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGE1Y2EwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NjYWxlMF9iZ3JvdW5kLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NjYWxlMV9iZ3JvdW5kLmpwZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NjYWxlMV9iZ3JvdW5kLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYxMjA3ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9zY2FsZTFfYmdyb3VuZC5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9zY2FsZTJfYmdyb3VuZC5qcGcgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9zY2FsZTJfYmdyb3VuZC5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NDFmZGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvc2NhbGUyX2Jncm91bmQuanBnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvc2NhbGUzX2Jncm91bmQuanBnIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvc2NhbGUzX2Jncm91bmQuanBnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWQ0ZTIyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NjYWxlM19iZ3JvdW5kLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NjYWxlNF9iZ3JvdW5kLmpwZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NjYWxlNF9iZ3JvdW5kLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJiYmQ1Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9zY2FsZTRfYmdyb3VuZC5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9zY2FsZTVfYmdyb3VuZC5qcGcgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9zY2FsZTVfYmdyb3VuZC5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwODA2ZjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvc2NhbGU1X2Jncm91bmQuanBnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvc2NhbGU2X2Jncm91bmQuanBnIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvc2NhbGU2X2Jncm91bmQuanBnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MThiY2ZmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NjYWxlNl9iZ3JvdW5kLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NlcnZlcnMvZXhpc3Rpbmdfc2VydmVyX29iai5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9zZXJ2ZXJzL2V4aXN0aW5nX3NlcnZlcl9vYmouZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmI2Y2I3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NlcnZlcnMvZXhpc3Rpbmdfc2VydmVyX29iai5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy9zZXJ2ZXJzL3NlcnZlcnNfb2JqLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NlcnZlcnMvc2VydmVyc19vYmouZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmI2Y2I3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3NlcnZlcnMvc2VydmVyc19vYmouZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvd3NpbC9odG1sLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3dzaWwvaHRtbC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZTdkYmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvd3NpbC9odG1sLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3dzaWwvaW1wb3J0X3dzaWwuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvd3NpbC9pbXBvcnRfd3NpbC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxOGE5NDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvd3NpbC9pbXBvcnRfd3NpbC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy93c2lsL3dzZGwuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvd3NpbC93c2RsLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZiODQ0Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9pY29ucy93c2lsL3dzZGwuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvd3NpbC93c2lsLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL2ljb25zL3dzaWwvd3NpbC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNTkxNmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvaWNvbnMvd3NpbC93c2lsLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ODA3MDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDYwNTE1ICAgMTQxNTM2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSMgMjAwNzA4MjAgICAxOTE1ODUgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotIyAyMDA3MDkxNyAgIDIwMjMwMyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0jIDIwMDgwMzI1ICAgMTg0NzYxIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBNZXNzYWdlcyBpbiBwbHVnaW4ueG1sLgotIwotUExVR0lOX05BTUU9V2ViIFNlcnZpY2VzIENvbnN1bXB0aW9uIEdyYXBoaWNhbCBVc2VyIEludGVyZmFjZQotUExVR0lOX1BST1ZJREVSPUVjbGlwc2Uub3JnCi0KLUZFQVRVUkVfREVTQ1JJUFRJT049V2ViIHNlcnZpY2VzCi1XRUJTRVJWSUNFU19DQVRFR09SWT1XZWIgc2VydmljZXMKLQotWFBfd3NJbXBsPVdlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9ucwotWFBfd3NDbGllbnRJbXBsPVdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbnMKLVhQX3J1bnRpbWVzPVdlYiBzZXJ2aWNlIHJ1bnRpbWVzCi1YUF9zZXJ2aWNlUnVudGltZXM9Q29tYmluYXRpb24gb2YgYSBXZWIgc2VydmljZSBydW5pbWUsIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdHlwZSwgYW5kIHJlcXVpcmVkIGZhY2V0cwotWFBfY2xpZW50UnVudGltZXM9Q29tYmluYXRpb24gb2YgYSBXZWIgc2VydmljZSBydW5pbWUsIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlLCBhbmQgcmVxdWlyZWQgZmFjZXRzCi1YUF90ZXN0ZXI9V2ViIHNlcnZpY2UgdGVzdCBmYWNpbGl0aWVzCi0KLVhQX1BVQkxJQ19VRERJX1JFR0lTVFJZX1RZUEVTPVB1YmxpYyBVRERJIFJlZ2lzdHJ5IFR5cGVzCi1YUF9QUklWQVRFX1VERElfUkVHSVNUUllfVFlQRVM9UHJpdmF0ZSBVRERJIFJlZ2lzdHJ5IFR5cGVzCi1YUF9XRUJfU0VSVklDRV9DTElFTlRfVFlQRVM9V2ViIFNlcnZpY2UgQ2xpZW50IFR5cGVzCi1YUF9XRUJfU0VSVklDRV9URVNUPVdlYiBTZXJ2aWNlIFRlc3QKLVhQX1dFQl9TRVJWSUNFX1NFUlZFUl9SVU5USU1FX1RZUEVTPVdlYiBTZXJ2aWNlIFNlcnZlciBSdW50aW1lIFR5cGVzCi1YUF9XRUJfU0VSVklDRV9DTElFTlRfUFJPSkVDVF9UWVBFPWNsaWVudFByb2plY3RUeXBlCi1YUF9PQkpFQ1RfU0VMRUNUSU9OX1dJREdFVD1vYmplY3RTZWxlY3Rpb25XaWRnZXQKLQotIwotIyBXaXphcmRzLgotIwotV0laQVJEX1RJVExFX1dTQz1XZWIgU2VydmljZSBDbGllbnQKLQotUExVR0lOX05FV19XSVpBUkRfTkFNRV9XU19DTElFTlQ9V2ViIFNlcnZpY2UgQ2xpZW50Ci1QTFVHSU5fSU1QT1JUX1dJWkFSRF9OQU1FX1dTPVdlYiBTZXJ2aWNlCi1QTFVHSU5fTkVXX1dJWkFSRF9ERVNDX1dTX0NMSUVOVD1BY2Nlc3MgYW4gZXhpc3RpbmcgWE1MIHdlYiBzZXJ2aWNlCi1QTFVHSU5fSU1QT1JUX1dJWkFSRF9ERVNDX1dTPUEgd2l6YXJkIGZvciBpbXBvcnRpbmcgYSB3ZWIgc2VydmljZQotSU1QT1JUX1dJWkFSRF9ERVNDX1dTSUw9SW1wb3J0IFdTREwgcmVmZXJlbmNlcyB0byBhIFdTSUwgZG9jdW1lbnQKLQotIwotIyBXZWIgU2FtcGxlcyBJRHMKLSMKLVNBTVBMRV9UWVBFX1dFQlNFUlZJQ0VTX0lEPVdlYiBTZXJ2aWNlIFNhbXBsZSBKU1BzCi0KLSMKLSMgUG9wLXVwIGFjdGlvbnMKLSMKLUFDVElPTl9HRU5FUkFURV9KQVZBX1BST1hZPUdlbmVyYXRlIENsaWVudAotQUNUSU9OX0dFTl9TQU1QTEU9R2VuZXJhdGUgSkFYLVJQQyBKU1BzCi0KLSMKLSMgRGlhbG9ncwotIwotQ0hFQ0tCT1hfU0hPV19HRU5FUkFURV9KQVZBX1BST1hZX0RJQUxPRz1IaWRlICZHZW5lcmF0ZSBKYXZhIGJlYW4gUHJveHkgRGlhbG9nCi1DSEVDS0JPWF9TSE9XX1BST1hZMlNBTVBMRV9ESUFMT0c9SGlkZSAmUHJveHkgVG8gU2FtcGxlIEdlbmVyYXRpb24gRGlhbG9nCi1UT09MVElQX1BQQURfQ0hFQ0tCT1hfV1NETDJQUk9YWT1IaWRlIHRoZSBkaWFsb2cgZm9yIGdlbmVyYXRpbmcgdGhlIEphdmEgYmVhbiBwcm94eSBhY3Rpb24uCi1UT09MVElQX1BQQURfQ0hFQ0tCT1hfUFJPWFkyU0FNUExFPUhpZGUgdGhlIGRpYWxvZyBmb3IgZ2VuZXJhdGluZyB0aGUgc2FtcGxlIGFwcGxpY2F0aW9uIGFjdGlvbi4KLQotIwotIyAgICAgICBXZWIgU2VydmljZXMgUHJlZmVyYW5jZSBQYWdlcwotIwotIyBDYXRlZ29yaWVzCi0KLVBSRUZFUkVOQ0VfQ0FURUdPUllfU0VSVkVSX1JVTlRJTUU9U2VydmVyIGFuZCBSdW50aW1lCi1QUkVGRVJFTkNFX0NBVEVHT1JZX1BST0pFQ1RfVE9QT0xPR1k9UHJvamVjdCBUb3BvbG9neQotUFJFRkVSRU5DRV9DQVRFR09SWV9URVNUX0ZBQ0lMSVRZPVRlc3QgRmFjaWxpdHkgRGVmYXVsdHMKLVBSRUZFUkVOQ0VfQ0FURUdPUllfRElBTE9HUz1Qb3B1cCBEaWFsb2cgU2VsZWN0aW9uCi0KLQotIwotIyBXZWJTZXJ2aWNlVGVzdFBhZ2UKLSMKLVdTRVhQTE9SRVJfSUQ9V2ViIFNlcnZpY2VzIEV4cGxvcmVyCi0KLSMKLSMgUHVibGljVURESVJlZ2lzdHJ5VHlwZQotIwotUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX1NBUD1TQVAgVURESSBSZWdpc3RyeQotUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX1NBUF9URVNUPVNBUCBVRERJIFRlc3QgUmVnaXN0cnkKLVBVQkxJQ1VERElSRUdJU1RSWVRZUEVfTkFNRV9YTUVUSE9EUz1YTWV0aG9kcyBSZWdpc3RyeQotUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX05UVENPTU09TlRUIENvbW11bmljYXRpb25zIFJlZ2lzdHJ5Ci0KLSMKLSMgV1NJTCBwcm94eQotIwotSU1QT1JUX1dJWkFSRF9OQU1FX1dTSUw9V1NJTAotUE9QVVBfR0VORVJBVEVfV1NJTD1HZW5lcmF0ZSBXU0lMCi0KLSMKLSMgV2ViIFNlcnZpY2UgU2VydmVyIFJ1bnRpbWUgVHlwZQotIwotV0VCU0VSVklDRVRZUEVfTkFNRV9XU0RMPVNrZWxldG9uIEphdmEgYmVhbiBXZWIgU2VydmljZQotV0VCU0VSVklDRVRZUEVfTkFNRV9KQVZBPUphdmEgYmVhbiBXZWIgU2VydmljZQotCi0jCi0jIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlCi0jCi1KQVZBX1BST1hZPUphdmEgUHJveHkKLSMKLSMgQ2xpZW50IHByb2plY3QgdHlwZQotIwotTEFCRUxfQ0xJRU5UX1RZUEVfV0VCPVdlYgotTEFCRUxfQ0xJRU5UX1RZUEVfRUpCPUVKQgotTEFCRUxfQ0xJRU5UX1RZUEVfQVBQX0NMSUVOVD1BcHBsaWNhdGlvbiBDbGllbnQKLUxBQkVMX0NMSUVOVF9UWVBFX0NPTlRBSU5FUkxFU1M9SmF2YQotCi0jCi0jIEhhbmRsZXJzIENvbmZpZ3VyYXRpb24gd2l6YXJkIHBhZ2UKLSMKLVBPUFVQX0FERF9IQU5ETEVSUz1Db25maWd1cmUgSGFuZGxlcnMKLVBPUFVQX0NPTkZJR19DTElFTlRfSEFORExFUlM9Q29uZmlndXJlIENsaWVudCBIYW5kbGVycwotTEFCRUxfSEFORExFUlNfQ09ORklHPUNvbmZpZ3VyZSBIYW5kbGVycwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvcGx1Z2luLnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YWEyNjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDc2OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotCi08cGx1Z2luPgotCi0gICA8IS0tIFRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsIGFuZCBsaWtlbHkgdG8gYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAtLT4KLSAgIDxleHRlbnNpb24tcG9pbnQKLSAgICAgIGlkPSJwdWJsaWNVRERJUmVnaXN0cnlUeXBlIgotICAgICAgbmFtZT0iJVhQX1BVQkxJQ19VRERJX1JFR0lTVFJZX1RZUEVTIi8+Ci0KLSAgIDwhLS0gVGhlIGZvbGxvd2luZyBleHRlbnNpb24gcG9pbnQgaXMgaW50ZXJuYWwgYW5kIGxpa2VseSB0byBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIC0tPgotICAgPGV4dGVuc2lvbi1wb2ludAotICAgICAgaWQ9InByaXZhdGVVRERJUmVnaXN0cnlUeXBlIgotICAgICAgbmFtZT0iJVhQX1BSSVZBVEVfVURESV9SRUdJU1RSWV9UWVBFUyIvPgotCi0gICA8IS0tIFRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsIGFuZCBsaWtlbHkgdG8gYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAtLT4KLSAgIDxleHRlbnNpb24tcG9pbnQKLSAgICAgIGlkPSJ3ZWJTZXJ2aWNlVGVzdCIKLSAgICAgIG5hbWU9IiVYUF9XRUJfU0VSVklDRV9URVNUIgotICAgICAgc2NoZW1hPSJzY2hlbWEvd2ViU2VydmljZVRlc3QuZXhzZCIvPgotCi0gICA8IS0tIFRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsLCB0aG91Z2ggbGlrZWx5IHRvIGJlIG1hZGUgcHVibGljIHdpdGggY2hhbmdlcyBpbiBhIGZ1dHVyZSByZWxlYXNlLiAtLT4KLSAgIDxleHRlbnNpb24tcG9pbnQKLSAgICAgIGlkPSJvYmplY3RTZWxlY3Rpb25XaWRnZXQiCi0gICAgICBuYW1lPSIlWFBfT0JKRUNUX1NFTEVDVElPTl9XSURHRVQiCi0gICAgICBzY2hlbWE9InNjaGVtYS9vYmplY3RTZWxlY3Rpb25XaWRnZXQuZXhzZCIvPgotCi0gICA8IS0tIFVEREkgUmVnaXN0cnkgVHlwZXMgLS0+Ci0gICAKLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkucHVibGljVURESVJlZ2lzdHJ5VHlwZSI+Ci0gICAgICA8cHVibGljVURESVJlZ2lzdHJ5VHlwZQotICAgICAgICAgICAgbmFtZT0iJVBVQkxJQ1VERElSRUdJU1RSWVRZUEVfTkFNRV9TQVBfVEVTVCIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLnVkZGkuUHVibGljVURESVJlZ2lzdHJ5U0FQVGVzdCIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLnVkZGkuUHVibGljVURESVJlZ2lzdHJ5U0FQVGVzdCI+Ci0gICAgICA8L3B1YmxpY1VERElSZWdpc3RyeVR5cGU+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5wdWJsaWNVRERJUmVnaXN0cnlUeXBlIj4KLSAgICAgIDxwdWJsaWNVRERJUmVnaXN0cnlUeXBlCi0gICAgICAgICAgICBuYW1lPSIlUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX1NBUCIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLnVkZGkuUHVibGljVURESVJlZ2lzdHJ5U0FQIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQudWRkaS5QdWJsaWNVRERJUmVnaXN0cnlTQVAiPgotICAgICAgPC9wdWJsaWNVRERJUmVnaXN0cnlUeXBlPgotICAgPC9leHRlbnNpb24+Ci0KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkucHVibGljVURESVJlZ2lzdHJ5VHlwZSI+Ci0gICAgICA8cHVibGljVURESVJlZ2lzdHJ5VHlwZQotICAgICAgICAgICAgbmFtZT0iJVBVQkxJQ1VERElSRUdJU1RSWVRZUEVfTkFNRV9YTUVUSE9EUyIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLnVkZGkuUHVibGljVURESVJlZ2lzdHJ5WE1ldGhvZHMiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC51ZGRpLlB1YmxpY1VERElSZWdpc3RyeVhNZXRob2RzIj4KLSAgICAgIDwvcHVibGljVURESVJlZ2lzdHJ5VHlwZT4KLSAgIDwvZXh0ZW5zaW9uPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLnB1YmxpY1VERElSZWdpc3RyeVR5cGUiPgotICAgICAgPHB1YmxpY1VERElSZWdpc3RyeVR5cGUKLSAgICAgICAgICAgIG5hbWU9IiVQVUJMSUNVRERJUkVHSVNUUllUWVBFX05BTUVfTlRUQ09NTSIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLnVkZGkuUHVibGljVURESVJlZ2lzdHJ5TlRUQ29tbSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLnVkZGkuUHVibGljVURESVJlZ2lzdHJ5TlRUQ29tbSI+Ci0gICAgICA8L3B1YmxpY1VERElSZWdpc3RyeVR5cGU+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPCEtLSBUZXN0IEZhY2lsaXRpZXMgLS0+Ci0gICAKLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2ViU2VydmljZVRlc3QiPgotCi0gICAgICA8d2ViU2VydmljZVRlc3QKLSAgICAgICAgICAgIG1ldGhvZHNuZWVkZWQ9InRydWUiCi0gICAgICAgICAgICBuYW1lPSIlU0FNUExFX1RZUEVfV0VCU0VSVklDRVNfSUQiCi0gICAgICAgICAgICBqYXZhPSJ0cnVlIgotICAgICAgICAgICAgY29kZWdlbj0idHJ1ZSIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0Lndzc2FtcGxlLldlYlNlcnZpY2VXU1NhbXBsZUV4ZWN1dGFibGUiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5XZWJTZXJ2aWNlU2FtcGxlVGVzdCI+Ci0gICAgICA8L3dlYlNlcnZpY2VUZXN0PgotCi0gICAgICA8d2ViU2VydmljZVRlc3QKLSAgICAgICAgICAgIG1ldGhvZHNuZWVkZWQ9ImZhbHNlIgotICAgICAgICAgICAgbmFtZT0iJVdTRVhQTE9SRVJfSUQiCi0gICAgICAgICAgICBqYXZhPSJmYWxzZSIKLSAgICAgICAgICAgIGNvZGVnZW49ImZhbHNlIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuZXhwbG9yZXIuV2ViU2VydmljZUV4cGxvcmVyRXhlY3V0YWJsZSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LmV4cGxvcmVyLldlYlNlcnZpY2VFeHBsb3JlckV4ZWN1dGFibGUiPgotICAgICAgPC93ZWJTZXJ2aWNlVGVzdD4KLQotICAgPC9leHRlbnNpb24+Ci0KLSAgIDwhLS0gRHluYW1pYyBXaXphcmRzIC0tPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkubmV3V2l6YXJkcyI+Ci0gICAgICA8d2l6YXJkCi0gICAgICAgICAgICBuYW1lPSIlUExVR0lOX05FV19XSVpBUkRfTkFNRV9XU19DTElFTlQiCi0gICAgICAgICAgICBpY29uPSJpY29ucy9mdWxsL2N0b29sMTYvbmV3Y2xpZW50X3dlYnNlcnZfd2l6LmdpZiIKLSAgICAgICAgICAgIGNhdGVnb3J5PSJvcmcuZWNsaXBzZS5qc3Qud3MudWkubmV3IgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkR5bmFtaWNXaXphcmQiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuY2xpZW50d2l6YXJkIj4KLSAgICAgICAgIDxkZXNjcmlwdGlvbj4KLSAgICAgICAgICAgICAgICVQTFVHSU5fTkVXX1dJWkFSRF9ERVNDX1dTX0NMSUVOVAotICAgICAgICAgPC9kZXNjcmlwdGlvbj4KLSAgICAgICAgIDxzZWxlY3Rpb24KLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2UiPgotICAgICAgICAgPC9zZWxlY3Rpb24+Ci0gICAgICA8L3dpemFyZD4KLSAgIDwvZXh0ZW5zaW9uPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmR5bmFtaWNXaXphcmQiPgotICAgICAgPGR5bmFtaWNXaXphcmQKLSAgICAgICAgICAgIGljb25iYW5uZXI9Imljb25zL2Z1bGwvd2l6YmFuL3dlYnNlcnZpY2VzY2xpZW50X3dpei5wbmciCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuYmluZGluZy5DbGllbnRXaWRnZXRCaW5kaW5nIgotICAgICAgICAgICAgdGl0bGU9IiVXSVpBUkRfVElUTEVfV1NDIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZCI+Ci0gICAgICA8L2R5bmFtaWNXaXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5keW5hbWljV2l6YXJkIj4KLSAgICAgIDxkeW5hbWljV2l6YXJkCi0gICAgICAgICAgICBpY29uYmFubmVyPSJpY29ucy9mdWxsL3dpemJhbi9nZW5fc2FtcGxlX3dpei5wbmciCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuYmluZGluZy5HZW5TYW1wbGVXaWRnZXRCaW5kaW5nIgotICAgICAgICAgICAgdGl0bGU9IiVXSVpBUkRfVElUTEVfV1NDIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmdlbnNhbXBsZXdpemFyZCI+Ci0gICAgICA8L2R5bmFtaWNXaXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPCEtLSBIYW5kbGVyIGV4dGVuc2lvbnMgLS0+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmR5bmFtaWNXaXphcmQiPgotICAgICAgPGR5bmFtaWNXaXphcmQKLSAgICAgICAgICAgIGljb25iYW5uZXI9Imljb25zL2Z1bGwvd2l6YmFuL2NvbmZpZ19oYW5kbGVyX3dpei5wbmciCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuYmluZGluZy5Db25maWdTZXJ2aWNlSGFuZGxlcnNXaWRnZXRCaW5kaW5nIgotICAgICAgICAgICAgdGl0bGU9IiVMQUJFTF9IQU5ETEVSU19DT05GSUciCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5oYW5kbGVycy5zZXJ2aWNlIj4KLSAgICAgIDwvZHluYW1pY1dpemFyZD4KLSAgIDwvZXh0ZW5zaW9uPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmR5bmFtaWNXaXphcmQiPgotICAgICAgPGR5bmFtaWNXaXphcmQKLSAgICAgICAgICAgIGljb25iYW5uZXI9Imljb25zL2Z1bGwvd2l6YmFuL2NvbmZpZ19oYW5kbGVyX3dpei5wbmciCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuYmluZGluZy5Db25maWdDbGllbnRIYW5kbGVyc1dpZGdldEJpbmRpbmciCi0gICAgICAgICAgICB0aXRsZT0iJUxBQkVMX0hBTkRMRVJTX0NPTkZJRyIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmhhbmRsZXJzLmNsaWVudCI+Ci0gICAgICA8L2R5bmFtaWNXaXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5keW5hbWljV2l6YXJkIj4KLSAgICAgIDxkeW5hbWljV2l6YXJkCi0gICAgICAgICAgICBpY29uYmFubmVyPSJpY29ucy9mdWxsL3dpemJhbi9jb25maWdfaGFuZGxlcl93aXoucG5nIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmJpbmRpbmcuQ29uZmlndXJlSGFuZGxlcnNXaWRnZXRCaW5kaW5nIgotICAgICAgICAgICAgdGl0bGU9IiVMQUJFTF9IQU5ETEVSU19DT05GSUciCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5oYW5kbGVycyI+Ci0gICAgICA8L2R5bmFtaWNXaXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4gIAotICAgIAotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLmltcG9ydFdpemFyZHMiPgotICAgICAgPGNhdGVnb3J5Ci0gICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53c2ltcG9ydC5jYXRlZ29yeSIKLSAgICAgICAgICAgICBuYW1lPSIlV0VCU0VSVklDRVNfQ0FURUdPUlkiLz4KLSAgIDwvZXh0ZW5zaW9uPgotICAgICAgCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkuaW1wb3J0V2l6YXJkcyI+Ci0gICAgICA8d2l6YXJkCi0gICAgICAgICAgICBuYW1lPSIlUExVR0lOX0lNUE9SVF9XSVpBUkRfTkFNRV9XUyIKLSAgICAgICAgICAgIGljb249Imljb25zL2ltcG9ydF93cy5naWYiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzaW1wb3J0LmNhdGVnb3J5IgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkR5bmFtaWNXaXphcmQiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzaW1wb3J0Ij4KLSAgICAgICAgIDxkZXNjcmlwdGlvbj4KLSAgICAgICAgICAgICAgICVQTFVHSU5fSU1QT1JUX1dJWkFSRF9ERVNDX1dTCi0gICAgICAgICA8L2Rlc2NyaXB0aW9uPgotICAgICAgPC93aXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5keW5hbWljV2l6YXJkIj4KLSAgICAgIDxkeW5hbWljV2l6YXJkCi0gICAgICAgICAgICBpY29uYmFubmVyPSJpY29ucy9mdWxsL3dpemJhbi9pbXBvcnRfd3Nfd2l6LnBuZyIKLSAgICAgICAgICAgIG5hbWU9IiVQTFVHSU5fSU1QT1JUX1dJWkFSRF9OQU1FX1dTIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmJpbmRpbmcuSW1wb3J0V1NXaWRnZXRCaW5kaW5nIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53c2ltcG9ydCI+Ci0gICAgICA8L2R5bmFtaWNXaXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLmltcG9ydFdpemFyZHMiPgotICAgICAgPHdpemFyZAotICAgICAgICAgICAgbmFtZT0iJUlNUE9SVF9XSVpBUkRfTkFNRV9XU0lMIgotICAgICAgICAgICAgaWNvbj0iaWNvbnMvd3NpbC9pbXBvcnRfd3NpbC5naWYiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzaW1wb3J0LmNhdGVnb3J5IgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkR5bmFtaWNXaXphcmQiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzaWxpbXBvcnQiPgotICAgICAgICAgPGRlc2NyaXB0aW9uPgotICAgICAgICAgICAgICAgJUlNUE9SVF9XSVpBUkRfREVTQ19XU0lMCi0gICAgICAgICA8L2Rlc2NyaXB0aW9uPgotICAgICAgPC93aXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5keW5hbWljV2l6YXJkIj4KLSAgICAgIDxkeW5hbWljV2l6YXJkCi0gICAgICAgICAgICBpY29uYmFubmVyPSJpY29ucy9mdWxsL3dpemJhbi9pbXBvcnQtd3NpbF93aXoucG5nIgotICAgICAgICAgICAgbmFtZT0iJUlNUE9SVF9XSVpBUkRfTkFNRV9XU0lMIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmJpbmRpbmcuSW1wb3J0V1NJTFdpZGdldEJpbmRpbmciCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzaWxpbXBvcnQiPgotICAgICAgPC9keW5hbWljV2l6YXJkPgotICAgPC9leHRlbnNpb24+Ci0KLSAgIDwhLS0gUHJlZmVyZW5jZSBQYWdlcyAtLT4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLnByZWZlcmVuY2VQYWdlcyI+Ci0KLSAgICAgIDxwYWdlCi0gICAgICAgICAgICBuYW1lPSIlUFJFRkVSRU5DRV9DQVRFR09SWV9TRVJWRVJfUlVOVElNRSIKLSAgICAgICAgICAgIGNhdGVnb3J5PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkucHJlZmVyZW5jZXMubmFtZSIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXMuU2VydmVyUnVudGltZVByZWZlcmVuY2VQYWdlIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wcmVmZXJlbmNlcy5TZXJ2ZXJSdW50aW1lUHJlZmVyZW5jZVBhZ2UiPiAgICAgICAgICAgIAotICAgICAgPC9wYWdlPgotICAgICAgCi0gICAgICA8cGFnZQotICAgICAgICAgICAgbmFtZT0iJVBSRUZFUkVOQ0VfQ0FURUdPUllfRElBTE9HUyIKLSAgICAgICAgICAgIGNhdGVnb3J5PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkucHJlZmVyZW5jZXMubmFtZSIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkucHJlZmVyZW5jZXMuQWN0aW9uRGlhbG9nc1ByZWZlcmVuY2VQYWdlIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53c3MucG9wdXAuY2F0ZWdvcnkiPgotICAgICAgPC9wYWdlPgotCi0gICAgICA8cGFnZQotICAgICAgICAgICAgbmFtZT0iJVBSRUZFUkVOQ0VfQ0FURUdPUllfVEVTVF9GQUNJTElUWSIKLSAgICAgICAgICAgIGNhdGVnb3J5PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkucHJlZmVyZW5jZXMubmFtZSIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkucHJlZmVyZW5jZXMuVGVzdEZhY2lsaXR5RGVmYXVsdHNQcmVmZXJlbmNlUGFnZSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkucHJlZmVyZW5jZXMuVGVzdEZhY2lsaXR5RGVmYXVsdHNQcmVmZXJlbmNlUGFnZSI+Ci0gICAgICA8L3BhZ2U+Ci0KLSAgICAgIDxwYWdlCi0gICAgICAgICAgICBuYW1lPSIlUFJFRkVSRU5DRV9DQVRFR09SWV9QUk9KRUNUX1RPUE9MT0dZIgotICAgICAgICAgICAgY2F0ZWdvcnk9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS5wcmVmZXJlbmNlcy5uYW1lIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wcmVmZXJlbmNlcy5Qcm9qZWN0VG9wb2xvZ3lQcmVmZXJlbmNlUGFnZSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXMuUHJvamVjdFRvcG9sb2d5UHJlZmVyZW5jZVBhZ2UiPgotICAgICAgPC9wYWdlPgotICAgICAgCi0gICA8L2V4dGVuc2lvbj4KLQotCi0gICA8IS0tICJEb24ndCBTaG93IE1lIiBFeHRlbnNpb25zIC0tPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlIj4KLQotICAgICAgPGFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlCi0gICAgICAgICAgICBzaG93Y2hlY2tib3g9InRydWUiCi0gICAgICAgICAgICBuYW1lPSIlQ0hFQ0tCT1hfU0hPV19HRU5FUkFURV9KQVZBX1BST1hZX0RJQUxPRyIKLSAgICAgICAgICAgIGNhdGVnb3J5PSJvcmcuZWNsaXBzZS5qc3Qud3NzLnBvcHVwLmNhdGVnb3J5IgotICAgICAgICAgICAgdG9vbHRpcD0iJVRPT0xUSVBfUFBBRF9DSEVDS0JPWF9XU0RMMlBST1hZIgotICAgICAgICAgICAgaW5mb3BvcD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLlBQQUQwMDA0IgotICAgICAgICAgICAgYWx3YXlzaGlkZT0iZmFsc2UiCi0gICAgICAgICAgICBvYmplY3RpZHM9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZC53c2RsIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZC53c2lsIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZC5zZXJ2aWNlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZC53c2RsLnJlc291cmNlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZC5zZXJ2aWNlcmVmIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZCI+Ci0gICAgICA8L2FjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlPgotCi0gICAgICA8YWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUKLSAgICAgICAgICAgIG5hbWU9IiVDSEVDS0JPWF9TSE9XX1BST1hZMlNBTVBMRV9ESUFMT0ciCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0Lndzcy5wb3B1cC5jYXRlZ29yeSIKLSAgICAgICAgICAgIHRvb2x0aXA9IiVUT09MVElQX1BQQURfQ0hFQ0tCT1hfUFJPWFkyU0FNUExFIgotICAgICAgICAgICAgaW5mb3BvcD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLlBQQUQwMDA1IgotICAgICAgICAgICAgb2JqZWN0aWRzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5nZW5zYW1wbGV3aXphcmQuZmlsZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5nZW5zYW1wbGV3aXphcmQuamF2YSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5nZW5zYW1wbGV3aXphcmQiPgotICAgICAgPC9hY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZT4KLQotICAgICAgPGFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlCi0gICAgICAgICAgICBzaG93Y2hlY2tib3g9ImZhbHNlIgotICAgICAgICAgICAgYWx3YXlzaGlkZT0iZmFsc2UiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuZ2Vud3NpbCI+Ci0gICAgICA8L2FjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlPgotCi0gICAgICA8IS0tIGFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlCi0gICAgICAgICAgICBzaG93Y2hlY2tib3g9ImZhbHNlIgotICAgICAgICAgICAgYWx3YXlzaGlkZT0iZmFsc2UiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5oYW5kbGVycy5lZGl0b3IiPgotICAgICAgPC9hY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZSAtLT4KLQotICAgPC9leHRlbnNpb24+Ci0KLSAgIDwhLS0gUG9wdXBzIC0tPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkucG9wdXBNZW51cyI+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9Iioud3NkbCIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5nZW53c2lsIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlUE9QVVBfR0VORVJBVEVfV1NJTCIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0ib3JnLmVjbGlwc2Uud3N0LndzLnVpLndlYnNlcnZpY2UuY2F0ZWdvcnkucG9wdXBNZW51L3BvcHVwQWN0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud3NpbGltcG9ydCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotCi0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqLndzZGwiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuY2xpZW50d2l6YXJkLndzZGwiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVBQ1RJT05fR0VORVJBVEVfSkFWQV9QUk9YWSIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0ib3JnLmVjbGlwc2Uud3N0LndzLnVpLndlYnNlcnZpY2UuY2F0ZWdvcnkucG9wdXBNZW51L3BvcHVwQWN0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iKi53c2lsIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZC53c2lsIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX0dFTkVSQVRFX0pBVkFfUFJPWFkiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9Im9yZy5lY2xpcHNlLndzdC53cy51aS53ZWJzZXJ2aWNlLmNhdGVnb3J5LnBvcHVwTWVudS9wb3B1cEFjdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuY2xpZW50d2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9IiouamF2YSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5nZW5zYW1wbGV3aXphcmQuZmlsZSI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iJUFDVElPTl9HRU5fU0FNUExFIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJvcmcuZWNsaXBzZS53c3Qud3MudWkud2Vic2VydmljZS5jYXRlZ29yeS5wb3B1cE1lbnUvcG9wdXBBY3Rpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmdlbnNhbXBsZXdpemFyZCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotCi0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuamR0LmludGVybmFsLmNvcmUuQ29tcGlsYXRpb25Vbml0IgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iKi5qYXZhIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmdlbnNhbXBsZXdpemFyZC5qYXZhIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX0dFTl9TQU1QTEUiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9Im9yZy5lY2xpcHNlLndzdC53cy51aS53ZWJzZXJ2aWNlLmNhdGVnb3J5LnBvcHVwTWVudS9wb3B1cEFjdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuZ2Vuc2FtcGxld2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iKiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQuc2VydmljZSI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iJUFDVElPTl9HRU5FUkFURV9KQVZBX1BST1hZIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJhZGRpdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuY2xpZW50d2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iKiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5nZW53c2lsLnNlcnZpY2UiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9HRU5FUkFURV9XU0lMIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJhZGRpdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzaWxpbXBvcnQiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0id2Vic2VydmljZXMueG1sIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuaGFuZGxlcnMuZWRpdG9yLmZpbGUiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9BRERfSEFORExFUlMiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9Im9yZy5lY2xpcHNlLndzdC53cy51aS53ZWJzZXJ2aWNlLmNhdGVnb3J5LnBvcHVwTWVudS9wb3B1cEFjdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5oYW5kbGVycy5zZXJ2aWNlIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iKiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmhhbmRsZXJzLmVkaXRvci5zZXJ2aWNlIgotICAgICAgICAgICAgYWRhcHRhYmxlPSJ0cnVlIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlUE9QVVBfQUREX0hBTkRMRVJTIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJhZGRpdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5oYW5kbGVycy5zZXJ2aWNlIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+ICAgCi0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC53ZWJzZXJ2aWNlLldlYlNlcnZpY2VOYXZpZ2F0b3JHcm91cFR5cGUiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5oYW5kbGVycy5lZGl0b3IubmF2R3JvdXAiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9BRERfSEFORExFUlMiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmhhbmRsZXJzIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgICAgPHZpc2liaWxpdHk+Ci0JCQk8b2JqZWN0U3RhdGUKLSAgICAgICAgICAgICAgICAgIG5hbWU9InR5cGUiCi0gICAgICAgICAgICAgICAgICB2YWx1ZT0iSGFuZGxlcnMiPgotICAgICAgICAgICAgPC9vYmplY3RTdGF0ZT4KLSAgICAgICAgIDwvdmlzaWJpbGl0eT4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPiAgICAgCi0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuaGFuZGxlcnMuZWRpdG9yLndzZGxSZXMiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9BRERfSEFORExFUlMiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmhhbmRsZXJzLnNlcnZpY2UiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4gICAgICAgICAgICAKLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0id2Vic2VydmljZXNjbGllbnQueG1sIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuaGFuZGxlcnMuZWRpdG9yLnhtbGZpbGUiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9DT05GSUdfQ0xJRU5UX0hBTkRMRVJTIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJvcmcuZWNsaXBzZS53c3Qud3MudWkud2Vic2VydmljZS5jYXRlZ29yeS5wb3B1cE1lbnUvcG9wdXBBY3Rpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuaGFuZGxlcnMuY2xpZW50Ij4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9ImVqYi1qYXIueG1sIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuaGFuZGxlcnMuZWRpdG9yLmVqYmZpbGUiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9DT05GSUdfQ0xJRU5UX0hBTkRMRVJTIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJvcmcuZWNsaXBzZS53c3Qud3MudWkud2Vic2VydmljZS5jYXRlZ29yeS5wb3B1cE1lbnUvcG9wdXBBY3Rpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuaGFuZGxlcnMuY2xpZW50Ij4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+ICAgIAotCi0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSJ3ZWIueG1sIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuaGFuZGxlcnMuZWRpdG9yLndlYmZpbGUiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9DT05GSUdfQ0xJRU5UX0hBTkRMRVJTIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJvcmcuZWNsaXBzZS53c3Qud3MudWkud2Vic2VydmljZS5jYXRlZ29yeS5wb3B1cE1lbnUvcG9wdXBBY3Rpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuaGFuZGxlcnMuY2xpZW50Ij4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+ICAKLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iYXBwbGljYXRpb24tY2xpZW50LnhtbCIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmhhbmRsZXJzLmVkaXRvci5hcHBmaWxlIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlUE9QVVBfQ09ORklHX0NMSUVOVF9IQU5ETEVSUyIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0ib3JnLmVjbGlwc2Uud3N0LndzLnVpLndlYnNlcnZpY2UuY2F0ZWdvcnkucG9wdXBNZW51L3BvcHVwQWN0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmhhbmRsZXJzLmNsaWVudCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPiAKLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NjbGllbnQuU2VydmljZVJlZiIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9IioiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5oYW5kbGVycy5lZGl0b3Iuc2VydmljZXJlZiIKLSAgICAgICAgICAgIGFkYXB0YWJsZT0idHJ1ZSI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iJVBPUFVQX0NPTkZJR19DTElFTlRfSEFORExFUlMiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmhhbmRsZXJzLmNsaWVudCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPiAgICAgIAotICAgICAgCi0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iKiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQud3NkbC5yZXNvdXJjZSI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iJUFDVElPTl9HRU5FUkFURV9KQVZBX1BST1hZIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJhZGRpdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuY2xpZW50d2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWYiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZC5zZXJ2aWNlcmVmIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX0dFTkVSQVRFX0pBVkFfUFJPWFkiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbCIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9IioiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuZ2Vud3NpbC53c2RsLnJlc291cmNlIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlUE9QVVBfR0VORVJBVEVfV1NJTCIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53c2lsaW1wb3J0Ij4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWYiCi0gICAgICAgICBuYW1lRmlsdGVyPSIqIgotICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmdlbndzaWwuc2VydmljZXJlZiI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICBsYWJlbD0iJVBPUFVQX0dFTkVSQVRFX1dTSUwiCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgbWVudWJhclBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud3NpbGltcG9ydCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotICAgPC9leHRlbnNpb24+Ci0KLSAgIDwhLS0gT2JqZWN0IFNlbGVjdGlvbiBXaWRnZXRzIC0tPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLm9iamVjdFNlbGVjdGlvbldpZGdldCI+Ci0gICAgICA8b2JqZWN0U2VsZWN0aW9uV2lkZ2V0Ci0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuSmF2YUJlYW5TZWxlY3Rpb25MYXVuY2hhYmxlIgotICAgICAgICAgICAgZXh0ZXJuYWxfbW9kaWZ5PSJ0cnVlIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5KYXZhQmVhblNlbGVjdGlvbldpZGdldCIKLSAgICAgICAgICAgIHRyYW5zZm9ybWVyPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuSmF2YUJlYW5TZWxlY3Rpb25UcmFuc2Zvcm1lciI+Ci0gICAgICA8L29iamVjdFNlbGVjdGlvbldpZGdldD4KLSAgIDwvZXh0ZW5zaW9uPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLm9iamVjdFNlbGVjdGlvbldpZGdldCI+Ci0gICAgICA8b2JqZWN0U2VsZWN0aW9uV2lkZ2V0Ci0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LkVKQlNlbGVjdGlvbldpZGdldCIKLSAgICAgICAgICAgIGV4dGVybmFsX21vZGlmeT0iZmFsc2UiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LkVKQlNlbGVjdGlvbldpZGdldCIKLSAgICAgICAgICAgIHRyYW5zZm9ybWVyPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuRUpCU2VsZWN0aW9uVHJhbnNmb3JtZXIiPgotICAgICAgPC9vYmplY3RTZWxlY3Rpb25XaWRnZXQ+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5vYmplY3RTZWxlY3Rpb25XaWRnZXQiPgotICAgICAgPG9iamVjdFNlbGVjdGlvbldpZGdldAotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5XU0RMU2VsZWN0aW9uV2lkZ2V0IgotICAgICAgICAgICAgZXh0ZXJuYWxfbW9kaWZ5PSJ0cnVlIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5XU0RMU2VsZWN0aW9uV2lkZ2V0IgotICAgICAgICAgICAgdHJhbnNmb3JtZXI9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5XU0RMU2VsZWN0aW9uVHJhbnNmb3JtZXIiPgotICAgICAgPC9vYmplY3RTZWxlY3Rpb25XaWRnZXQ+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIAotICAgPCEtLSBUaGUgZm9sbG93aW5nIGV4dGVuc2lvbiBwb2ludCBpcyBpbnRlcm5hbCwgdGhvdWdoIGxpa2VseSB0byBiZSBtYWRlIHB1YmxpYyB3aXRoIGNoYW5nZXMgaW4gYSBmdXR1cmUgcmVsZWFzZS4gLS0+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJ3c0ltcGwiIG5hbWU9IiVYUF93c0ltcGwiLz4KLQotICAgPCEtLSBUaGUgZm9sbG93aW5nIGV4dGVuc2lvbiBwb2ludCBpcyBpbnRlcm5hbCwgdGhvdWdoIGxpa2VseSB0byBiZSBtYWRlIHB1YmxpYyB3aXRoIGNoYW5nZXMgaW4gYSBmdXR1cmUgcmVsZWFzZS4gLS0+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJ3c0NsaWVudEltcGwiIG5hbWU9IiVYUF93c0NsaWVudEltcGwiLz4KLQotICAgPCEtLSBUaGUgZm9sbG93aW5nIGV4dGVuc2lvbiBwb2ludCBpcyBpbnRlcm5hbCwgdGhvdWdoIGxpa2VseSB0byBiZSBtYWRlIHB1YmxpYyB3aXRoIGNoYW5nZXMgaW4gYSBmdXR1cmUgcmVsZWFzZS4gLS0+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJydW50aW1lcyIgbmFtZT0iJVhQX3J1bnRpbWVzIiAvPgotICAgCi0gICA8IS0tIFRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsLCB0aG91Z2ggbGlrZWx5IHRvIGJlIG1hZGUgcHVibGljIHdpdGggY2hhbmdlcyBpbiBhIGZ1dHVyZSByZWxlYXNlLiAtLT4KLSAgIDxleHRlbnNpb24tcG9pbnQgaWQ9InNlcnZpY2VSdW50aW1lcyIgbmFtZT0iJVhQX3NlcnZpY2VSdW50aW1lcyIgLz4KLQotICAgPCEtLSBUaGUgZm9sbG93aW5nIGV4dGVuc2lvbiBwb2ludCBpcyBpbnRlcm5hbCwgdGhvdWdoIGxpa2VseSB0byBiZSBtYWRlIHB1YmxpYyB3aXRoIGNoYW5nZXMgaW4gYSBmdXR1cmUgcmVsZWFzZS4gLS0+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJjbGllbnRSdW50aW1lcyIgbmFtZT0iJVhQX2NsaWVudFJ1bnRpbWVzIiAvPgotCi0gICA8IS0tIFRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsLCB0aG91Z2ggbGlrZWx5IHRvIGJlIG1hZGUgcHVibGljIHdpdGggY2hhbmdlcyBpbiBhIGZ1dHVyZSByZWxlYXNlLiAtLT4KLSAgIDxleHRlbnNpb24tcG9pbnQgaWQ9InRlc3RlciIgbmFtZT0iJVhQX3Rlc3RlciIvPgotCi08IS0tIFRlc3QgRXh0ZW5zaW9ucyBiZWdpbm5pbmcgIC0tPgotCi08ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkudGVzdGVyIj4KLSAgPHRlc3RlcgotICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LldlYlNlcnZpY2VTYW1wbGVUZXN0IgotICAgIGxhYmVsPSIlU0FNUExFX1RZUEVfV0VCU0VSVklDRVNfSUQiCi0gICAgdGVzdFdTREw9Im5vIgotICAgIHRlc3RKYXZhUHJveHk9InllcyIKLSAgICB3c0NsaWVudEltcGxJZHM9Im9yZy5lY2xpcHNlLmpzdC53cy5jbGllbnQudHlwZS5qYXZhIgotICAgIG1vZHVsZXR5cGVzPSJ3ZWJtb2R1bGUiCi0gICAgbWV0aG9kc25lZWRlZD0idHJ1ZSIKLSAgICBjb2RlR2VuZXJhdGVkPSJ0cnVlIgotICAgIHNlcnZlclJlcXVpcmVkPSJ0cnVlIgotICAgIGlzZGVmYXVsdGpheHJwYz0idHJ1ZSIKLSAgICBhbGxvd0NsaWVudFJ1bnRpbWVzUmVzdHJpY3Rpb249InRydWUiCi0gICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3Qud3NzYW1wbGUuR1NUQ1dlYlNlcnZpY2VUZXN0ZXIiPgotICA8L3Rlc3Rlcj4KLTwvZXh0ZW5zaW9uPgotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLnRlc3RlciI+Ci0gIDx0ZXN0ZXIKLSAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5leHBsb3Jlci5XZWJTZXJ2aWNlRXhwbG9yZXIiCi0gICAgbGFiZWw9IiVXU0VYUExPUkVSX0lEIgotICAgIHRlc3RXU0RMPSJ5ZXMiCi0gICAgdGVzdEphdmFQcm94eT0ibm8iCi0gICAgd3NDbGllbnRJbXBsSWRzPSJvcmcuZWNsaXBzZS5qc3Qud3MuY2xpZW50LnR5cGUuamF2YSIKLSAgICBtb2R1bGV0eXBlcz0id2VibW9kdWxlIgotICAgIG1ldGhvZHNuZWVkZWQ9ImZhbHNlIgotICAgIGNvZGVHZW5lcmF0ZWQ9ImZhbHNlIgotICAgIHNlcnZlclJlcXVpcmVkPSJmYWxzZSIKLSAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5leHBsb3Jlci5XU0VXZWJTZXJ2aWNlVGVzdGVyIj4KLSAgPC90ZXN0ZXI+Ci08L2V4dGVuc2lvbj4KLQotPCEtLSBUZXN0IEV4dGVuc2lvbnMgZW5kICAtLT4KLQotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzSW1wbCI+Ci0gIDx3ZWJTZXJ2aWNlSW1wbAotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy53c0ltcGwuamF2YSIKLSAgICAgICAgICAgIGxhYmVsPSIlV0VCU0VSVklDRVRZUEVfTkFNRV9KQVZBIgotICAgICAgICAgICAgcmVzb3VyY2VUeXBlTWV0YWRhdGE9IkZpbGUgSVJlc291cmNlIENvbXBpbGF0aW9uVW5pdCIKLSAgICAgICAgICAgIGV4dGVuc2lvbk1ldGFkYXRhPSIuamF2YSAuY2xhc3MiCi0gICAgICAgICAgICBvYmplY3RTZWxlY3Rpb25XaWRnZXQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5KYXZhQmVhblNlbGVjdGlvbldpZGdldCIKLSAgICAgICAgICAgIG1lcmdlckNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkphdmFNZXJnZXIiPgotICA8L3dlYlNlcnZpY2VJbXBsPgotPC9leHRlbnNpb24+ICAgCi08ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud3NDbGllbnRJbXBsIj4KLSAgPHdlYlNlcnZpY2VDbGllbnRJbXBsCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNsaWVudC50eXBlLmphdmEiCi0gICAgICAgICAgICBsYWJlbD0iJUpBVkFfUFJPWFkiPgotICA8L3dlYlNlcnZpY2VDbGllbnRJbXBsPgotPC9leHRlbnNpb24+ICAgCi0KLSAgIAk8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0UmVnaXN0cnkiPgotICAgICAgIDx3aWRnZXRGYWN0b3J5ICAgCi0gICAgICAgICAgICAgaWQ9IlN0YXJ0Q2xpZW50U2VydmVyIgotICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1hbmRJZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmV4dGVuc2lvbi5QcmVDbGllbnRSdW5Db21tYW5kIgotICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuc2VydmVyLlN0YXJ0Q2xpZW50V2lkZ2V0RmFjdG9yeSIvPgotICAgIDwvZXh0ZW5zaW9uPgotICAgIAotICAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5hbnRTY2VuYXJpbyI+Ci0gICAgICAgIDxhbnRTY2VuYXJpbwotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5hbnQuQW50Q2xpZW50Um9vdENvbW1hbmRGcmFnbWVudCIKLSAgICAgICAgICAgIHNjZW5hcmlvVHlwZT0iY2xpZW50Ii8+Ci0gICAgIDwvZXh0ZW5zaW9uPgotICAgICAKLSAgICAgPGV4dGVuc2lvbgotICAgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmFudERhdGFNYXBwaW5nIj4KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkluaXRpYWxTZWxlY3Rpb24iCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMucnVudGltZS5DbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJJbml0aWFsSW5pdGlhbFNlbGVjdGlvbiIKLSAgICAgICAgICAgICAgcmVxdWlyZWQ9InRydWUiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyU2VsZWN0aW9uVHJhbnNmb3JtZXIiLz4KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkluaXRpYWxTZWxlY3Rpb24iCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iSW5pdGlhbFNlbGVjdGlvbiIKLSAgICAgICAgICAgICAgcmVxdWlyZWQ9InRydWUiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyU2VsZWN0aW9uVHJhbnNmb3JtZXIiLz4KLQotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iQ2xpZW50LlJ1bnRpbWVJZCIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5DbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllciIvPgotCi0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJDbGllbnQuU2VydmVySWQiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IkNsaWVudFR5cGVSdW50aW1lU2VydmVyIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nMlR5cGVSdW50aW1lU2VydmVyTW9kaWZpZXIiLz4KLQotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iQ2xpZW50LlR5cGVJZCIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5DbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllciIvPgotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iVGVzdFNlcnZpY2UiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5DbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IlRlc3RTZXJ2aWNlIi8+Ci0KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9Ik1vbml0b3JTZXJ2aWNlIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJNb25pdG9yU2VydmljZSIvPiAgICAgICAgICAgICAgCi0KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkNsaWVudC5SdW50aW1lSWQiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5DbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IkNsaWVudFR5cGVSdW50aW1lU2VydmVyIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nMlR5cGVSdW50aW1lU2VydmVyTW9kaWZpZXIiLz4KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkNsaWVudC5TZXJ2ZXJJZCIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLkNsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllciIvPiAgICAgCi0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJDbGllbnQuVHlwZUlkIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJDbGllbnRUeXBlUnVudGltZVNlcnZlciIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZzJUeXBlUnVudGltZVNlcnZlck1vZGlmaWVyIi8+ICAgICAgICAKLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkNsaWVudFByb2plY3ROYW1lIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJDbGllbnRQcm9qZWN0TmFtZSIvPiAgCi0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJDbGllbnRQcm9qZWN0TmFtZSIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5ydW50aW1lLkNsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IkNsaWVudFByb2plY3ROYW1lIi8+ICAgICAgICAgICAgICAKLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkNsaWVudEVhclByb2plY3ROYW1lIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJDbGllbnRFYXJQcm9qZWN0TmFtZSIvPiAgICAgICAgIAotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iQ2xpZW50Q29tcG9uZW50VHlwZSIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLkNsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iQ2xpZW50Q29tcG9uZW50VHlwZSIvPgotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iQ2xpZW50LlJ1bnRpbWVJZCIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLkNsaWVudEV4dGVuc2lvbkZyYWdtZW50IgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllciIvPiAgICAgICAgICAgICAgICAKLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkNsaWVudC5TZXJ2ZXJJZCIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLkNsaWVudEV4dGVuc2lvbkZyYWdtZW50IgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllciIvPiAgICAgICAgICAgICAgICAKLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkNsaWVudC5UeXBlSWQiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5DbGllbnRFeHRlbnNpb25GcmFnbWVudCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IkNsaWVudFR5cGVSdW50aW1lU2VydmVyIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nMlR5cGVSdW50aW1lU2VydmVyTW9kaWZpZXIiLz4gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgIAotICAgICAgICAgPCEtLSBtYXBwaW5ncyBmb3IgbGlzdGluZyBvcHRpb25zIC0tPgotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iTGlzdFJ1bnRpbWVzIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLkxpc3RPcHRpb25zQ29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9Ikxpc3RSdW50aW1lcyIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuYW50LlN0cmluZzJCb29sZWFuVHJhbnNmb3JtZXIiCi0gICAgICAgICAgICAgIC8+IAotCi0gIAkJPG1hcAotICAgICAgICAgICAgICBrZXk9Ikxpc3RTZXJ2ZXJzIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLkxpc3RPcHRpb25zQ29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9Ikxpc3RTZXJ2ZXJzIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5hbnQuU3RyaW5nMkJvb2xlYW5UcmFuc2Zvcm1lciIKLSAgICAgICAgICAgICAgLz4gIAkKLSAgICAgIDwvZXh0ZW5zaW9uPgotICAgICAgCi0gICAgIDxleHRlbnNpb24KLSAgICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbnRlcm5hbEZhY2V0T3BlcmF0aW9uRGVsZWdhdGUiPgotICAJCQk8RmFjZXRPcGVyYXRpb25EZWxlZ2F0ZSBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1vbi5GYWNldE9wZXJhdGlvbkRlbGVnYXRlIiAvPgotICAgICA8L2V4dGVuc2lvbj4gCi08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NjaGVtYS9jbGllbnRQcm9qZWN0VHlwZS5leHNkIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc2NoZW1hL2NsaWVudFByb2plY3RUeXBlLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNDBkYjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc2NoZW1hL2NsaWVudFByb2plY3RUeXBlLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIj4KLTxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zY2hlbWEgcGx1Z2luPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiIGlkPSJjbGllbnRQcm9qZWN0VHlwZSIgbmFtZT0iQ2xpZW50IFByb2plY3QgVHlwZSIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGlzIGV4dGVuc2lvbiBwb2ludCBkZWZpbmVzIGNsaWVudCBjb250YWluZXIgdHlwZXMuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImV4dGVuc2lvbiI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8c2VxdWVuY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9ImNsaWVudFByb2plY3RUeXBlIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwb2ludCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhIGZ1bGx5IHF1YWxpZmllZCBpZGVudGlmaWVyIG9mIHRoZSB0YXJnZXQgZXh0ZW5zaW9uIHBvaW50Ci0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYW4gb3B0aW9uYWwgaWRlbnRpZmllciBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0iY2xpZW50UHJvamVjdFR5cGUiPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbmNsdWRlIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgYmxhbmsgZGVsaW1pdGVkIGxpc3Qgb2YgUHJvamVjdCBOYXR1cmUgSWRzLiAgVGhlIGxpc3RlZCBJRHMgaW5kaWNhdGUgdGhhdCB0aGlzIHR5cGUgb25seSB3b3JrcyB3aXRoIHRoZXNlIHBhcnRpY3VsYXIgcHJvamVjdCB0eXBlcy4gIEZvciBleGFtcGxlLCBpZiB0aGlzIHR5cGUgb25seSB3b3JrcyB3aXRoIHdlYiBwcm9qZWN0cyBhbiBJRCBvZiBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWIuV2ViTmF0dXJlIHdvdWxkIGJlIHNwZWNpZmllZC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJleGNsdWRlIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgYmxhbmsgZGVsaW1pdGVkIGxpc3Qgb2YgUHJvamVjdCBOYXR1cmUgSWRzLiAgVGhlIGxpc3RlZCBJRHMgaW5kaWNhdGUgdGhhdCB0aGlzIHR5cGUgRE9FUyBOT1Qgd29yayB3aXRoIHRoZXNlIHBhcnRpY3VsYXIgcHJvamVjdCB0eXBlcy4gIEZvciBleGFtcGxlLCBpZiB0aGlzIHR5cGUgZG9lcyBub3Qgd29yayB3aXRoIHdlYiBwcm9qZWN0cyBhbiBJRCBvZiBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWIuV2ViTmF0dXJlIHdvdWxkIGJlIHNwZWNpZmllZC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGxhYmVsIHJlcHJlc2VudHMgdGhpcyBjbGllbnQgcHJvamVjdCB0eXBlLiAgSXQgaXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyIHNvIGl0IG11c3QgYmUgdHJhbnNsYXRlZC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGNsaWVudCBwcm9qZWN0IHR5cGUuICBUaGlzIGlkZW50aWZpZXIgaXMgcmVmZXJlbmNlZCBpbiB0aGUgY2xpZW50UHJvamVjdFR5cGUgYXR0cmlidXRlIG9mIHRoZSB3ZWJTZXJ2aWNlQ2xpZW50VHlwZSBlbGVtZW50IG9mIGFuIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53ZWJTZXJ2aWNlQ2xpZW50VHlwZSBleHRlbnNpb24uCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9InNpbmNlIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICZsdDtiJmd0O1RoaXMgZXh0ZW5zaW9uIHBvaW50IGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuJmx0Oy9iJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJleGFtcGxlcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpSW5mbyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iaW1wbGVtZW50YXRpb24iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImNvcHlyaWdodCIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0O2JyJmd0OwotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSAKLWF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyAKLXRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICZsdDthCi1ocmVmPSZxdW90O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJnF1b3Q7Jmd0O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJmx0Oy9hJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NjaGVtYS9vYmplY3RTZWxlY3Rpb25XaWRnZXQuZXhzZCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NjaGVtYS9vYmplY3RTZWxlY3Rpb25XaWRnZXQuZXhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUyZDQyOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zY2hlbWEvb2JqZWN0U2VsZWN0aW9uV2lkZ2V0LmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIj4KLTxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zY2hlbWEgcGx1Z2luPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiIGlkPSJvYmplY3RTZWxlY3Rpb25XaWRnZXQiIG5hbWU9Ik9iamVjdCBTZWxlY3Rpb24gV2lkZ2V0Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8ZWxlbWVudCBuYW1lPSJleHRlbnNpb24iPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJvYmplY3RTZWxlY3Rpb25XaWRnZXQiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLSAgICAgICAgIDwvc2VxdWVuY2U+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBvaW50IiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGEgZnVsbHkgcXVhbGlmaWVkIGlkZW50aWZpZXIgb2YgdGhlIHRhcmdldCBleHRlbnNpb24gcG9pbnQKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhbiBvcHRpb25hbCBpZGVudGlmaWVyIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZQotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJvYmplY3RTZWxlY3Rpb25XaWRnZXQiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZXh0ZW5zaW9uIHBvaW50IGVudHJ5IGFsbG93cyBhbiBleHRlbmRlciB0byBhZGQgbmV3IHdheXMgb2YgYnJvd3NpbmcvZmluZGluZyBhcnRpZmFjdHMgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgV2ViIHNlcnZpY2VzLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGNsYXNzIGRlZmluZXMgU2VsZWN0aW9uIFdpZGdldCB0byBiZSBkaXNwbGF5ZWQgb24gdGhlIE9iamVjdCBTZWxlY3Rpb24gcGFnZSBvZiB0aGUgV2ViIHNlcnZpY2VzIHdpemFyZHMuICBUaGlzIGNsYXNzIG11c3QgaW1wbGVtZW50IHRoZSBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuSU9iamVjdFNlbGVjdGlvbldpZGdldCBpbnRlcmZhY2UuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBpZCB1bmlxdWVseSBpZGVudGlmaWVzIHRoaXMgb2JqZWN0U2VsZWN0aW9uV2lkZ2V0IGVsZW1lbnQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idHJhbnNmb3JtZXIiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIGEgY2xhc3MgdGhhdCBtdXN0IGltcGxlbWVudCB0aGUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lciBpbnRlcmZhY2UuICBUaGlzIGludGVyZmFjZSBjb250YWlucyBhIHRyYW5zZm9ybSBtZXRob2QuICBFdmVuIHRob3VnaCB0aGUgdHlwZSBvZiB0aGUgaW5wdXQgcGFyYW1ldGVyIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGFyZSBvZiB0eXBlIE9iamVjdCBpdCBpcyBleHBlY3RlZCB0aGF0IHRoZXkgd2lsbCBiZSB1c2VkIHdpdGggdGhlIHR5cGUgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbi4gIFRoaXMgdHJhbnNmb3JtYXRpb24gbWV0aG9kIGFsbG93cyB0aGUgZXh0ZW5kZXIgdG8gbW9kaWZ5IHRoZSBpbml0aWFsIHNlbGVjdGlvbiB0byBhbiBJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3QgdGhhdCBpcyBtb3JlIHJlYWRpbHkgdXNhYmxlIGJ5IHRoZSBydW50aW1lIHNlcnZlciB0eXBlLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImV4dGVybmFsX21vZGlmeSIgdHlwZT0iYm9vbGVhbiIgdXNlPSJkZWZhdWx0IiB2YWx1ZT0iZmFsc2UiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBvYmplY3Qgc2VsZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgb3V0c2lkZSB0aGUgb2JqZWN0IHNlbGVjdGlvbiB3aWRnZXQuICBBbiBleGFtcGxlLCBvZiB0aGlzIHdvdWxkIGJlIG9uIHBhZ2Ugb25lIG9mIHRoZSB3ZWIgc2VydmljZSB3aWRnZXQgYnkgdHlwaW5nIGluIGEgdGV4dCBmaWVsZC4gIElmIHNldCB0byB0cnVlLCB0aGUgZXh0ZW5kZXIgb2YgT2JqZWN0U2VsZWN0aW9uV2lkZ2V0IG11c3QgcHJvdmlkZSBhIHZhbGlkYXRlKFN0cmluZykgaW1wbGVtZW50YXRpb24gdGhhdCBkb2VzIGFueSBuZWNlc3NhcnkgdmFsaWRhdGlvbiBhbmQgc2V0cyB0aGUgb2JqZWN0IHNlbGVjdGlvbiBvbiB0aGUgd2lkZ2V0LiAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgZmFsc2UuICBBbnkgdGV4dCBmaWVsZHMgd2lsbCBiZSBzZXQgdG8gUkVBRF9PTkxZIHN0eWxlIHNvIHRoZSBvYmplY3Qgc2VsZWN0aW9uIGNhbiBvbmx5IGJlIG1vZGlmaWVkIHdpdGggb2JqZWN0IHNlbGVjdGlvbiB3aWRnZXQgaW1wbGVtZW50YXRpb24gZGlyZWN0bHkuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9InNpbmNlIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICZsdDtiJmd0O1RoaXMgZXh0ZW5zaW9uIHBvaW50IGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuJmx0Oy9iJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJleGFtcGxlcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpSW5mbyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iaW1wbGVtZW50YXRpb24iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImNvcHlyaWdodCIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0O2JyJmd0OwotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSAKLWF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyAKLXRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICZsdDthCi1ocmVmPSZxdW90O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJnF1b3Q7Jmd0O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJmx0Oy9hJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NjaGVtYS93ZWJTZXJ2aWNlQ2xpZW50VHlwZS5leHNkIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc2NoZW1hL3dlYlNlcnZpY2VDbGllbnRUeXBlLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzYmRkM2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc2NoZW1hL3dlYlNlcnZpY2VDbGllbnRUeXBlLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwyNTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIj4KLTxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zY2hlbWEgcGx1Z2luPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiIGlkPSJ3ZWJTZXJ2aWNlQ2xpZW50VHlwZSIgbmFtZT0iV2ViIFNlcnZpY2UgQ2xpZW50IFR5cGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoaXMgZXh0ZW5zaW9uIHBvaW50IGRlZmluZXMgV2ViIFNlcnZpY2UgQ2xpZW50IHR5cGVzLiAgVGhpcyBpcyBkb25lIGJ5IGRlZmluaW5nIHdlYlNlcnZpY2VDbGllbnRUeXBlIGVsZW1lbnRzLiAgVGhlc2UgZWxlbWVudHMgcmVmZXIgdG8gYSBzZXJ2ZXIgYW5kIGEgV2ViIFNlcnZpY2UgcnVudGltZS4gIFRoZXNlIGFyZSByZXNwZWN0aXZlbHkgZGVmaW5lZCBpbiB0aGUgd2ViU2VydmljZVNlcnZlciBlbGVtZW50IGFuZCB0aGUgd2ViU2VydmljZVJ1bnRpbWUgZWxlbWVudC4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaW9uIj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxzZXF1ZW5jZT4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0id2ViU2VydmljZVNlcnZlciIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ3ZWJTZXJ2aWNlUnVudGltZSIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ3ZWJTZXJ2aWNlQ2xpZW50VHlwZSIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotICAgICAgICAgPC9zZXF1ZW5jZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9pbnQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYSBmdWxseSBxdWFsaWZpZWQgaWRlbnRpZmllciBvZiB0aGUgdGFyZ2V0IGV4dGVuc2lvbiBwb2ludAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIGlkZW50aWZpZXIgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZQotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9IndlYlNlcnZpY2VTZXJ2ZXIiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZWxlbWVudCBzcGVjaWZpZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIHNlcnZlciB0eXBlLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJmYWN0b3J5SWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgZmFjdG9yeSBpZCBmb3IgYSBzZXJ2ZXIuICBUaGlzIGlkIGlzIGRlZmluZWQgYnkKLXRoZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuc2VydmVyVHlwZXMgZXh0ZW5zaW9uIHBvaW50LgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlzRGVmYXVsdCIgdHlwZT0iYm9vbGVhbiIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIGlmIHRoaXMgc2VydmVyIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHNlcnZlci4gIE5vdGU6ICB0aGlzIGRlZmF1bHQgcGFyYW1ldGVyIGlzIG9ubHkgdXNlZCBpbiB0aGUgYWJzZW5jZSBvZiBvdGhlciBpbmZvcm1hdGlvbi4gIElmIHRoZSB1c2VyIGhhcyBkZWZpbmVkIGEgcGFydGljdWxhciBzZXJ2ZXIgYXMgdGhlaXIgZGVmYXVsdCB0aGVuIHRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQuICBTaG91bGQgY29udGFpbiBhIHZhbHVlIG9mIGVpdGhlciAmcXVvdDt0cnVlJnF1b3Q7IG9yICZxdW90O2ZhbHNlJnF1b3Q7LgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBsb2NhbCBJRCBmb3IgdGhpcyBzZXJ2ZXIuICBUaGUgc2VydmVyIGF0dHJpYnV0ZSBvZiB0aGUgd2Vic2VydmljZUNsaWVudFR5cGUgZWxlbWVudCByZWZlcnMgdG8gdGhpcyBJRC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJydW50aW1lVHlwZUlkcyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBpcyBjdXJyZW50bHkgYSBwbGFjZSBob2xkZXIgZm9yIGZ1dHVyZSBkZXZlbG9wbWVudC4gIFBsZWFzZSwgZG8gbm90IHVzZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0id2ViU2VydmljZVJ1bnRpbWUiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZWxlbWVudCBzcGVjaWZpZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIFdlYiBTZXJ2aWNlcyBydW50aW1lLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGxhYmVsIGlzIGRpc3BsYXllZCB0byB0aGUgdXNlciBmb3IgdGhpcyBydW50aW1lLiAgVGhlcmVmb3JlLCBpcyBtdXN0IGJlIHRyYW5zbGF0ZWQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgQSBkZXNjcmlwdGlvbiBvZiB0aGlzIFdlYiBTZXJ2aWNlcyBydW50aW1lLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlzRGVmYXVsdCIgdHlwZT0iYm9vbGVhbiIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIGlmIHRoaXMgcnVudGltZSBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBydW50aW1lLiAgTm90ZTogIHRoaXMgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgb25seSB1c2VkIGluIHRoZSBhYnNlbmNlIG9mIG90aGVyIGluZm9ybWF0aW9uLiAgSWYgdGhlIHVzZXIgaGFzIGRlZmluZWQgYSBwYXJ0aWN1bGFyIHJ1bnRpbWUgYXMgdGhlaXIgZGVmYXVsdCB0aGVuIHRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQuICBTaG91bGQgY29udGFpbiBhIHZhbHVlIG9mIGVpdGhlciAmcXVvdDt0cnVlJnF1b3Q7IG9yICZxdW90O2ZhbHNlJnF1b3Q7LgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImoyZWV2ZXJzaW9uIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgSjJFRSB2ZXJzaW9ucyBzdXBwb3J0ZWQgYnkgdGhpcyBydW50aW1lLiAgVGhlIGFsbG93YWJsZSB2YWx1ZXMgYXJlIDEyLCAxMywgYW5kIDE0LiAgSWYgbW9yZSB0aGFuIG9uZSBKMkVFIHZlcnNpb24gaXMgc3VwcG9ydGVkIGVhY2ggSjJFRSBsZXZlbCBzaG91bGQgYmUgc3BlY2lmaWVkIHdpdGggYSBibGFuayBkZWxpbWl0ZXIuKGVnLiBpZiBKMkVFIHZlcnNpb24gMS4yIGFuZCAxLjMgYXJlIHN1cHBvcnRlZCB0aGVuIHRoaXMgYXR0cmlidXRlIHN0cmluZyB3b3VsZCBiZSAmcXVvdDsxMiAxMyZxdW90Oy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0id2ViU2VydmljZUNsaWVudFR5cGUiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZWxlbWVudCBzcGVjaWZpZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIFdlYiBTZXJ2aWNlcyBjbGllbnQgdHlwZS4KLSAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgSUQgZm9yIHRoaXMgV2ViIFNlcnZpY2UgQ2xpZW50IHR5cGUuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBuYW1lIGZvciB0aGlzIFdlYiBTZXJ2aWNlIENsaWVudCB0eXBlLiAgSXQgaXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyIHNvIGl0IG11c3QgYmUgdHJhbnNsYXRlZC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGllbnRUeXBlIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGtpbmQgb2YgV2ViIFNlcnZpY2UgQ2xpZW50IHR5cGUgYmVpbmcgZGVmaW5lZC4gKGllLiB0aGUgdmFsdWUgb2YgdGhlIEphdmEgY2xpZW50IGlzIG9yZy5lY2xpcHNlLmpzdC53cy5jbGllbnQudHlwZS5qYXZhLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InJ1bnRpbWUiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgcnVudGltZSBJRCBmb3IgdGhpcyBXZWIgU2VydmljZSBjbGllbnQgdHlwZS4gIFRoZXJlIHNob3VsZCBiZSBhIGNvcnJlc3BvbmRpbmcgd2ViU2VydmljZVJ1bnRpbWUgZWxlbWVudCB3aXRoIGFuIGF0dHJpYnV0ZSBjYWxsZWQgaWQgdGhhdCBoYXMgdGhpcyB2YWx1ZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZXJ2ZXIiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBzZXJ2ZXIgZm9yIHRoaXMgV2ViIFNlcnZpY2UgY2xpZW50IHR5cGUuICBUaGVyZSBzaG91bGQgYmUgYSBjb3JyZXNwb25kaW5nIHdlYlNlcnZpY2VTZXJ2ZXIgZWxlbWVudCB3aXRoIGFuIGF0dHJpYnV0ZSBjYWxsZWQgaWQgdGhhdCBoYXMgdGhpcyB2YWx1ZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGllbnRQcm9qZWN0VHlwZSIgdHlwZT0ic3RyaW5nIiB1c2U9ImRlZmF1bHQiIHZhbHVlPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuY2xpZW50UHJvamVjdFR5cGUuV2ViIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIHNwYWNlIGRlbGltaXRlZCBsaXN0IG9mIGNsaWVudCBwcm9qZWN0IHR5cGUgaWRzIHN1cHBvcnRlZCBieSB0aGlzIGJ5IHRoaXMgd2ViU2VydmljZUNsaWVudFR5cGUgZWxlbWVudC4gIFRoZSBjbGllbnQgcHJvamVjdCB0eXBlIGlkcyBhcmUgZGVmaW5lZCBieSB0aGUgb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmNsaWVudFByb2plY3RUeXBlIGV4dGVuc2lvbiBwb2ludC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJkZXZlbG9wQmluZGluZyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgYSBDb21tYW5kV2lkZ2V0QmluZGluZyBjbGFzcy4gIFRoaXMgY2xhc3Mgc3BlY2lmaWVzIHRoZSBDb21tYW5kcyBhbmQgVUkgZWxlbWVudHMgYXNzb2NpYXRlIHdpdGggSjJFRSBkZXZlbG9wbWVudCBwaGFzZS4gIFRoZSBDb21tYW5kIGFuZCBVSSBlbGVtZW50cyBpbiB0aGlzIGJpbmRpbmcgYWx3YXlzIGNvbWUgZmlyc3QgaW4gdGhlIHdpemFyZC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJhc3NlbWJseUJpbmRpbmciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIGEgQ29tbWFuZFdpZGdldEJpbmRpbmcgY2xhc3MuICBUaGlzIGNsYXNzIHNwZWNpZmllcyB0aGUgQ29tbWFuZHMgYW5kIFVJIGVsZW1lbnRzIGFzc29jaWF0ZSB3aXRoIEoyRUUgYXNzZW1ibHkgcGhhc2UuICBUaGUgQ29tbWFuZCBhbmQgVUkgZWxlbWVudHMgaW4gdGhpcyBiaW5kaW5nIGFsd2F5cyBjb21lIGFmdGVyIHRoZSBkZXZlbG9wbWVudCBwaGFzZSBiaW5kaW5nIGluIHRoZSB3aXphcmQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVwbG95QmluZGluZyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgYSBDb21tYW5kV2lkZ2V0QmluZGluZyBjbGFzcy4gIFRoaXMgY2xhc3Mgc3BlY2lmaWVzIHRoZSBDb21tYW5kcyBhbmQgVUkgZWxlbWVudHMgYXNzb2NpYXRlIHdpdGggSjJFRSBkZXBsb3kgcGhhc2UuICBUaGUgQ29tbWFuZCBhbmQgVUkgZWxlbWVudHMgaW4gdGhpcyBiaW5kaW5nIGFsd2F5cyBjb21lIGFmdGVyIHRoZSBhc3NlbWJseSBwaGFzZSBiaW5kaW5nIGluIHRoZSB3aXphcmQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5zdGFsbEJpbmRpbmciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIGEgQ29tbWFuZFdpZGdldEJpbmRpbmcgY2xhc3MuICBUaGlzIGNsYXNzIHNwZWNpZmllcyB0aGUgQ29tbWFuZHMgYW5kIFVJIGVsZW1lbnRzIGFzc29jaWF0ZSB3aXRoIEoyRUUgaW5zdGFsbCBwaGFzZS4gIFRoZSBDb21tYW5kIGFuZCBVSSBlbGVtZW50cyBpbiB0aGlzIGJpbmRpbmcgYWx3YXlzIGNvbWUgYWZ0ZXIgdGhlIGRlcGxveSBwaGFzZSBiaW5kaW5nIGluIHRoZSB3aXphcmQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9InNpbmNlIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICZsdDtiJmd0O1RoaXMgZXh0ZW5zaW9uIHBvaW50IGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuJmx0Oy9iJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJleGFtcGxlcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpSW5mbyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iaW1wbGVtZW50YXRpb24iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImNvcHlyaWdodCIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0O2JyJmd0OwotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSAKLWF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyAKLXRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICZsdDthCi1ocmVmPSZxdW90O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJnF1b3Q7Jmd0O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJmx0Oy9hJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NjaGVtYS93ZWJTZXJ2aWNlU2VydmVyUnVudGltZVR5cGUuZXhzZCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NjaGVtYS93ZWJTZXJ2aWNlU2VydmVyUnVudGltZVR5cGUuZXhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JkZDcxMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zY2hlbWEvd2ViU2VydmljZVNlcnZlclJ1bnRpbWVUeXBlLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIj4KLTxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zY2hlbWEgcGx1Z2luPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiIGlkPSJ3ZWJTZXJ2aWNlU2VydmVyUnVudGltZVR5cGUiIG5hbWU9IldlYiBTZXJ2aWNlIFNlcnZlciBSdW50aW1lIFR5cGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoaXMgZXh0ZW5zaW9uIHBvaW50IGRlZmluZXMgV2ViIFNlcnZpY2UgU2VydmVyIHR5cGVzLiAgVGhpcyBpcyBkb25lIGJ5IGRlZmluaW5nIHdlYlNlcnZpY2VTZXJ2ZXJSdW50aW1lVHlwZSBlbGVtZW50cy4gIFRoZXNlIGVsZW1lbnRzIHJlZmVyIHRvIGEgc2VydmVyIGFuZCBhIFdlYiBTZXJ2aWNlIHJ1bnRpbWUuICBUaGVzZSBhcmUgcmVzcGVjdGl2ZWx5IGRlZmluZWQgaW4gdGhlIHdlYlNlcnZpY2VTZXJ2ZXIgZWxlbWVudCBhbmQgdGhlIHdlYlNlcnZpY2VSdW50aW1lIGVsZW1lbnQuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImV4dGVuc2lvbiI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8c2VxdWVuY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9IndlYlNlcnZpY2VTZXJ2ZXIiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0id2ViU2VydmljZVJ1bnRpbWUiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0id2ViU2VydmljZVNlcnZlclJ1bnRpbWVUeXBlIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9IndlYlNlcnZpY2VUeXBlIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwb2ludCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhIGZ1bGx5IHF1YWxpZmllZCBpZGVudGlmaWVyIG9mIHRoZSB0YXJnZXQgZXh0ZW5zaW9uIHBvaW50Ci0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYW4gb3B0aW9uYWwgaWRlbnRpZmllciBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0id2ViU2VydmljZVNlcnZlciI+Ci0gICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgVGhpcyBlbGVtZW50IHNwZWNpZmllcyBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgc2VydmVyIHR5cGUuCi0gICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICA8L2Fubm90YXRpb24+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImZhY3RvcnlJZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBmYWN0b3J5IGlkIGZvciBhIHNlcnZlci4gIFRoaXMgaWQgaXMgZGVmaW5lZCBieQotdGhlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5zZXJ2ZXJUeXBlcyBleHRlbnNpb24gcG9pbnQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNEZWZhdWx0IiB0eXBlPSJib29sZWFuIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBpbmRpY2F0ZXMgaWYgdGhpcyBzZXJ2ZXIgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGRlZmF1bHQgc2VydmVyLiAgTm90ZTogIHRoaXMgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgb25seSB1c2VkIGluIHRoZSBhYnNlbmNlIG9mIG90aGVyIGluZm9ybWF0aW9uLiAgSWYgdGhlIHVzZXIgaGFzIGRlZmluZWQgYSBwYXJ0aWN1bGFyIHNlcnZlciBhcyB0aGVpciBkZWZhdWx0IHRoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZC4gIFNob3VsZCBjb250YWluIGEgdmFsdWUgb2YgZWl0aGVyICZxdW90O3RydWUmcXVvdDsgb3IgJnF1b3Q7ZmFsc2UmcXVvdDsuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIGxvY2FsIElEIGZvciB0aGlzIHNlcnZlci4gIFRoZSBzZXJ2ZXIgYXR0cmlidXRlIG9mIHRoZSB3ZWJzZXJ2aWNlU2VydmVyUnVudGltZVR5cGUgZWxlbWVudCByZWZlcnMgdG8gdGhpcyBJRC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJydW50aW1lVHlwZUlkcyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBpcyBjdXJyZW50bHkgYSBwbGFjZSBob2xkZXIgZm9yIGZ1dHVyZSBkZXZlbG9wbWVudC4gIFBsZWFzZSwgZG8gbm90IHVzZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0id2ViU2VydmljZVJ1bnRpbWUiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZWxlbWVudCBzcGVjaWZpZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIFdlYiBTZXJ2aWNlcyBydW50aW1lLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGxhYmVsIGlzIGRpc3BsYXllZCB0byB0aGUgdXNlciBmb3IgdGhpcyBydW50aW1lLiAgVGhlcmVmb3JlLCBpcyBtdXN0IGJlIHRyYW5zbGF0ZWQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgQSBkZXNjcmlwdGlvbiBvZiB0aGlzIFdlYiBTZXJ2aWNlcyBydW50aW1lLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlzRGVmYXVsdCIgdHlwZT0iYm9vbGVhbiIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIGlmIHRoaXMgcnVudGltZSBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBydW50aW1lLiAgTm90ZTogIHRoaXMgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgb25seSB1c2VkIGluIHRoZSBhYnNlbmNlIG9mIG90aGVyIGluZm9ybWF0aW9uLiAgSWYgdGhlIHVzZXIgaGFzIGRlZmluZWQgYSBwYXJ0aWN1bGFyIHJ1bnRpbWUgYXMgdGhlaXIgZGVmYXVsdCB0aGVuIHRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQuICBTaG91bGQgY29udGFpbiBhIHZhbHVlIG9mIGVpdGhlciAmcXVvdDt0cnVlJnF1b3Q7IG9yICZxdW90O2ZhbHNlJnF1b3Q7LgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImoyZWV2ZXJzaW9uIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgSjJFRSB2ZXJzaW9ucyBzdXBwb3J0ZWQgYnkgdGhpcyBydW50aW1lLiAgVGhlIGFsbG93YWJsZSB2YWx1ZXMgYXJlIDEyLCAxMywgYW5kIDE0LiAgSWYgbW9yZSB0aGFuIG9uZSBKMkVFIHZlcnNpb24gaXMgc3VwcG9ydGVkIGVhY2ggSjJFRSBsZXZlbCBzaG91bGQgYmUgc3BlY2lmaWVkIHdpdGggYSBibGFuayBkZWxpbWl0ZXIuKGVnLiBpZiBKMkVFIHZlcnNpb24gMS4yIGFuZCAxLjMgYXJlIHN1cHBvcnRlZCB0aGVuIHRoaXMgYXR0cmlidXRlIHN0cmluZyB3b3VsZCBiZSAmcXVvdDsxMiAxMyZxdW90Oy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0id2ViU2VydmljZVNlcnZlclJ1bnRpbWVUeXBlIj4KLSAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICBUaGlzIGVsZW1lbnQgc3BlY2lmaWVzIGluZm9ybWF0aW9uIGFib3V0IGEgcGFydGljdWxhciBXZWIgU2VydmljZXMgc2VydmVyIHJ1bnRpbWUgdHlwZS4gIEFuIGVudHJ5IGZvciB0aGlzIGVsZW1lbnQgZGVmaW5lcyBhIHZhbGlkIGNvbWJpbmF0aW9uIG9mIHNlcnZlciwgcnVudGltZSwgYW5kIHdlYnNlcnZpY2UgdHlwZS4KLSAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgSUQgZm9yIHRoaXMgV2ViIFNlcnZpY2UgU2VydmVyIFJ1bnRpbWUgdHlwZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIG5hbWUgZm9yIHRoaXMgV2ViIFNlcnZpY2UgU2VydmVyIFJ1bnRpbWUgdHlwZS4gIEl0IGlzIGRpc3BsYXllZCB0byB0aGUgdXNlciBzbyBpdCBtdXN0IGJlIHRyYW5zbGF0ZWQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icnVudGltZSIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBydW50aW1lIElEIGZvciB0aGlzIFdlYiBTZXJ2aWNlIFNlcnZlciBSdW50aW1lIHR5cGUuICBUaGVyZSBzaG91bGQgYmUgYSBjb3JyZXNwb25kaW5nIHdlYlNlcnZpY2VSdW50aW1lIGVsZW1lbnQgd2l0aCBhbiBhdHRyaWJ1dGUgY2FsbGVkIGlkIHRoYXQgaGFzIHRoaXMgdmFsdWUuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VydmVyIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgc2VydmVyIGZvciB0aGlzIFdlYiBTZXJ2aWNlIFNlcnZlciBSdW50aW1lIHR5cGUuICBUaGVyZSBzaG91bGQgYmUgYSBjb3JyZXNwb25kaW5nIHdlYlNlcnZpY2VTZXJ2ZXIgZWxlbWVudCB3aXRoIGFuIGF0dHJpYnV0ZSBjYWxsZWQgaWQgdGhhdCBoYXMgdGhpcyB2YWx1ZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGtpbmQgb2YgV2ViIFNlcnZpY2UgUnVudGltZSB0eXBlIGJlaW5nIGRlZmluZWQuIChlZy4gdGhlIHZhbHVlIG9mIGEgSmF2YSBCZWFuIFdlYnNlcnZpY2UgaXMgb3JnLmVjbGlwc2UuanN0LndzLnR5cGUuamF2YSkKLVRoZXJlIHNob3VsZCBiZSBhIGNvcnJlc3BvbmRpbmcgd2ViU2VydmljZVR5cGUgZWxlbWVudCB3aXRoIGFuIGF0dHJpYnV0ZSBjYWxsZWQgaWQgdGhhdCBoYXMgdGhpcyB2YWx1ZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJkZXZlbG9wQmluZGluZyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgYSBDb21tYW5kV2lkZ2V0QmluZGluZyBjbGFzcy4gIFRoaXMgY2xhc3Mgc3BlY2lmaWVzIHRoZSBDb21tYW5kcyBhbmQgVUkgZWxlbWVudHMgYXNzb2NpYXRlIHdpdGggSjJFRSBkZXZlbG9wbWVudCBwaGFzZS4gIFRoZSBDb21tYW5kIGFuZCBVSSBlbGVtZW50cyBpbiB0aGlzIGJpbmRpbmcgYWx3YXlzIGNvbWUgZmlyc3QgaW4gdGhlIHdpemFyZC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJhc3NlbWJseUJpbmRpbmciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIGEgQ29tbWFuZFdpZGdldEJpbmRpbmcgY2xhc3MuICBUaGlzIGNsYXNzIHNwZWNpZmllcyB0aGUgQ29tbWFuZHMgYW5kIFVJIGVsZW1lbnRzIGFzc29jaWF0ZSB3aXRoIEoyRUUgYXNzZW1ibHkgcGhhc2UuICBUaGUgQ29tbWFuZCBhbmQgVUkgZWxlbWVudHMgaW4gdGhpcyBiaW5kaW5nIGFsd2F5cyBjb21lIGFmdGVyIHRoZSBkZXZlbG9wbWVudCBwaGFzZSBiaW5kaW5nIGluIHRoZSB3aXphcmQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVwbG95QmluZGluZyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgYSBDb21tYW5kV2lkZ2V0QmluZGluZyBjbGFzcy4gIFRoaXMgY2xhc3Mgc3BlY2lmaWVzIHRoZSBDb21tYW5kcyBhbmQgVUkgZWxlbWVudHMgYXNzb2NpYXRlIHdpdGggSjJFRSBkZXBsb3kgcGhhc2UuICBUaGUgQ29tbWFuZCBhbmQgVUkgZWxlbWVudHMgaW4gdGhpcyBiaW5kaW5nIGFsd2F5cyBjb21lIGFmdGVyIHRoZSBhc3NlbWJseSBwaGFzZSBiaW5kaW5nIGluIHRoZSB3aXphcmQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5zdGFsbEJpbmRpbmciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIGEgQ29tbWFuZFdpZGdldEJpbmRpbmcgY2xhc3MuICBUaGlzIGNsYXNzIHNwZWNpZmllcyB0aGUgQ29tbWFuZHMgYW5kIFVJIGVsZW1lbnRzIGFzc29jaWF0ZSB3aXRoIEoyRUUgaW5zdGFsbCBwaGFzZS4gIFRoZSBDb21tYW5kIGFuZCBVSSBlbGVtZW50cyBpbiB0aGlzIGJpbmRpbmcgYWx3YXlzIGNvbWUgYWZ0ZXIgdGhlIGRlcGxveSBwaGFzZSBiaW5kaW5nIGluIHRoZSB3aXphcmQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVxdWlyZUVKQk1vZHVsZSIgdHlwZT0iYm9vbGVhbiIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgSWYgdGhlIFdlYnNlcnZpY2UgZm9yIHRoaXMgU2VydmVyIFJ1bnRpbWUgVHlwZSBpcyByZXF1aXJlZCB0byBiZSBpbiBhbiBFSkIgbW9kdWxlIHRoZW4gdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHNob3VsZCBiZSB0cnVlLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InJlcXVpcmVXZWJNb2R1bGUiIHR5cGU9ImJvb2xlYW4iIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIElmIHRoZSBXZWJzZXJ2aWNlIGZvciB0aGlzIFNlcnZlciBSdW50aW1lIFR5cGUgaXMgcmVxdWlyZWQgdG8gYmUgaW4gYW4gV2ViIG1vZHVsZSB0aGVuIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBzaG91bGQgYmUgdHJ1ZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0id2ViU2VydmljZVR5cGUiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZWxlbWVudCBkZWZpbmVzIGEgcGFydGljdWxhciBXZWIgc2VydmljZSBraW5kLiAgU3VjaCBhcyBhIEphdmEgQmVhbiB3ZWIgc2VydmljZSwgYSBTa2VsZXRvbiBXZWIgc2VydmljZSwgYW4gRUpCICBXZWIgc2VydmljZSwgZXRjLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGEgdW5pcXVlIElEIGZvciB0aGlzIFdlYiBzZXJ2aWNlIHR5cGUuICBJdCBpcyByZWZlcmVuY2VkIGluIHRoZSB3ZWJTZXJ2aWNlU2VydmVyUnVudGltZVR5cGUgZWxlbWVudCB3aXRoIHRoZSB0eXBlIGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGlzIGEgdHJhbnNsYXRhYmxlIGxhYmVsIGZvciB0aGlzIHdlYiBzZXJ2aWNlIHR5cGUuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2VUeXBlTWV0YWRhdGEiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBibGFuayBkZWxpbWl0ZWQgbGlzdCBjbGFzcyBOYW1lcy4gKGllLk5vIHBhY2thZ2UgcHJlZml4KSAgVGhlIGNsYXNzZXMgbGlzdGVkIGRlZmluZSB0aGUgYWxsb3dhYmxlIEVjbGlwc2UgcmVzb3VyY2VzIHRoYXQgdGhpcyB3ZWIgc2VydmljZSB0eXBlIHVuZGVyc3RhbmRzIGFuZCB0dXJuIGludG8gYSBXZWIgc2VydmljZS4gIEZvciBleGFtcGxlLCBpZiBhIHVzZXIgc2VsZWN0cyBhIEphdmEgc291cmNlIGZpbGUgaW4gdGhlIHBhY2thZ2UgZXhwbG9yZXIgdmlldyBhbmQgdGhlbiBzdGFydHMgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmQgYSBDb21waWxhdGlvblVuaXQgb2JqZWN0IHdpbGwgYmUgcGFzc2VkIGluIGFzIHBhcnQgb2YgYW4gSVN0cnVjdHVyZWRTZWxlY3Rpb24uICBCeSBwdXR0aW5nICZxdW90O0NvbXBpbGF0aW9uVW5pdCZxdW90OyBhcyBvbmUgb2YgdGhlIGNsYXNzZXMgaW4gdGhpcyBhdHRyaWJ1dGUgaXQgaW5kaWNhdGVzIHRoYXQgdGhpcyB0eXBlIGNhbiBjcmVhdGUgYSBXZWIgc2VydmljZSBmcm9tIHRoZSBDb21waWxhdGlvblVuaXQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZXh0ZW5zaW9uTWV0YWRhdGEiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgYWxsb3dzIHRoaXMgV2ViIHNlcnZpY2UgdHlwZSB0byByZXN0cmljdCBuYW1lcyBvZiB0aGUgaW5wdXQgZmlsZXMgdGhhdCBpdCB1bmRlcnN0YW5kcy4gIEZvciBleGFtcGxlLCBpZiB0aGUgdmFsdWUgaXMgc2V0IHRvICZxdW90Oy5qYXZhIC5jbGFzcyZxdW90OyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGlzIFdlYiBzZXJ2aWNlIHR5cGUgb25seSB1bmRlcnN0YW5kcyByZXNvdXJjZSBuYW1lcyB0aGF0IGVuZCB3aXRoIC5qYXZhIG9yIGVuZCB3aXRoIC5jbGFzcy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJvYmplY3RTZWxlY3Rpb25XaWRnZXQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgT24gcGFnZSAyIG9mIHRoZSBXZWIgc2VydmljZSB3aXphcmQgdGhlcmUgaXMgYW4gT2JqZWN0IHNlbGVjdGlvbiBwYWdlLiAgVGhpcyBzZWxlY3Rpb24gcGFnZSBjYW4gYmUgY3VzdG9taXplZCB1c2luZyB0aGlzIGF0dHJpYnV0ZSwgc2luY2UgZGlmZmVyZW50IFdlYiBzZXJ2aWNlIHR5cGVzIG1heSBuZWVkIGRpZmZlcmVudCBtZXRob2RzIG9mIHNlbGVjdGluZyB0aGVtLiAgVGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHNob3VsZCBiZSB0aGUgaWQgb2YgYSBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkub2JqZWN0U2VsZWN0aW9uV2lkZ2V0IGV4dGVuc2lvbi4gIFRoZSBwcmVkZWZpbmVkIGlkIGZvciBhIEphdmEgc2VsZWN0aW9uIHdpZGdldCBpcyBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuSmF2YUJlYW5TZWxlY3Rpb25XaWRnZXQuICBUaGUgcHJlZGVmaW5lZCBpZCBmb3IgYSBXU0RMIHNlbGVjdGlvbiB3aWRnZXQgaXMgb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LldTRExTZWxlY3Rpb25XaWRnZXQuICBUaGUgcHJlZGVmaW5lZCBpZCBmb3IgYW4gRUpCIHNlbGVjdGlvbiB3aWRnZXQgaXMgb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LkVKQlNlbGVjdGlvbldpZGdldC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbmNsdWRlTmF0dXJlcyIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIGJsYW5rIGRlbGltaXRlZCBsaXN0IG9mIFByb2plY3QgTmF0dXJlIElkcy4gIFRoZSBsaXN0ZWQgSURzIGluZGljYXRlIHRoYXQgdGhpcyB0eXBlIG9ubHkgd29ya3Mgd2l0aCB0aGVzZSBwYXJ0aWN1bGFyIHByb2plY3QgdHlwZXMuICBGb3IgZXhhbXBsZSwgaWYgdGhpcyB0eXBlIG9ubHkgd29ya3Mgd2l0aCB3ZWIgcHJvamVjdHMgYW4gSUQgb2Ygb3JnLmVjbGlwc2UuanN0LmoyZWUud2ViLldlYk5hdHVyZSB3b3VsZCBiZSBzcGVjaWZpZWQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZXhjbHVkZU5hdHVyZXMiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBibGFuayBkZWxpbWl0ZWQgbGlzdCBvZiBQcm9qZWN0IE5hdHVyZSBJZHMuICBUaGUgbGlzdGVkIElEcyBpbmRpY2F0ZSB0aGF0IHRoaXMgdHlwZSBET0VTIE5PVCB3b3JrIHdpdGggdGhlc2UgcGFydGljdWxhciBwcm9qZWN0IHR5cGVzLiAgRm9yIGV4YW1wbGUsIGlmIHRoaXMgdHlwZSBkb2VzIG5vdCB3b3JrIHdpdGggd2ViIHByb2plY3RzIGFuIElEIG9mIG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYi5XZWJOYXR1cmUgd291bGQgYmUgc3BlY2lmaWVkLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJzaW5jZSIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAmbHQ7YiZndDtUaGlzIGV4dGVuc2lvbiBwb2ludCBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjayBmcm9tIHBpb25lZXJpbmcgYWRvcHRlcnMgb24gdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBhbnkgY29kZSB0aGF0IHVzZXMgdGhpcyBBUEkgd2lsbCBhbG1vc3QgY2VydGFpbmx5IGJlIGJyb2tlbiAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLiZsdDsvYiZndDsKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iZXhhbXBsZXMiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImFwaUluZm8iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImltcGxlbWVudGF0aW9uIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJjb3B5cmlnaHQiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiZsdDticiZndDsKLUFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgCi1hdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgCi10aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAmbHQ7YQotaHJlZj0mcXVvdDtodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCZxdW90OyZndDtodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCZsdDsvYSZndDsKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotPC9zY2hlbWE+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zY2hlbWEvd2ViU2VydmljZVRlc3QuZXhzZCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NjaGVtYS93ZWJTZXJ2aWNlVGVzdC5leHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGJmNjMwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NjaGVtYS93ZWJTZXJ2aWNlVGVzdC5leHNkCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+Ci08IS0tIFNjaGVtYSBmaWxlIHdyaXR0ZW4gYnkgUERFIC0tPgotPHNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSI+Ci08YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2NoZW1hIHBsdWdpbj0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIiBpZD0id2ViU2VydmljZVRlc3QiIG5hbWU9IldlYiBTZXJ2aWNlIFRlc3QiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgVGhpcyBleHRlbnNpb24gcG9pbnQgZGVmaW5lcyBXZWIgc2VydmljZSB0ZXN0IGZhY2lsaXRpZXMgdGhhdCBjYW4gYmUgcGx1Z2dlZCBpbnRvIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkcy4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaW9uIj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxzZXF1ZW5jZT4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0id2ViU2VydmljZVRlc3QiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLSAgICAgICAgIDwvc2VxdWVuY2U+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBvaW50IiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGEgZnVsbHkgcXVhbGlmaWVkIGlkZW50aWZpZXIgb2YgdGhlIHRhcmdldCBleHRlbnNpb24gcG9pbnQKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhbiBvcHRpb25hbCBpZGVudGlmaWVyIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZQotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJ3ZWJTZXJ2aWNlVGVzdCI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im1ldGhvZHNuZWVkZWQiIHR5cGU9ImJvb2xlYW4iPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgYXR0cmlidXRlIGluZGljYXRlcyBpZiB0aGlzIHRlc3QgZmFjaWxpdHkgbmVlZCB0byBtZXRob2RzIGZyb20gYSBwcm94eSBiZWFuLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGlzIGRpc3BsYXllZCB0byB0aGUgdXNlciBmb3IgdGhpcyB0ZXN0IGZhY2lsaXR5LiAgSXQgbXVzdCBiZSB0cmFuc2xhdGVkLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImphdmEiIHR5cGU9ImJvb2xlYW4iPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIHRoaXMgdGVzdCBmYWNpbGl0eSBpcyBpbnRlbmRlZCBmb3IgY2xpZW50cyB0aGF0IGdlbmVyYXRlIGEgSmF2YSBiZWFuIGFzIG91dHB1dC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2RlZ2VuIiB0eXBlPSJib29sZWFuIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaWYgdGhpcyB0ZXN0IGZhY2lsaXR5IGdlbmVyYXRlcyBjb2RlIG9yIG5vdCwgc3VjaCBhcyBKU1AgZmlsZXMuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBjbGFzcyBuYW1lLiAgVGhlIGNsYXNzIG11c3QgaW1wbGVtZW50IG9yZy5lY2xpcHNlLmpzdC53cy5leHQuV2ViU2VydmljZUV4ZWN1dGFibGUuICBUaGlzIGNsYXNzIGFsbG93cyB0aGUgZXh0ZW5kZXIgdG8gcHJvdmlkZSB0aGUgQ29tbWFuZHMgdGhhdCB3aWxsIGV4ZWN1dGUgZm9yIHRoaXMgdGVzdCBmYWNpbGl0eS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGlzIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgdGVzdCBmYWNpbGl0eS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0ic2luY2UiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgJmx0O2ImZ3Q7VGhpcyBleHRlbnNpb24gcG9pbnQgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBleHBlY3RlZCB0byBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sgZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4gKHJlcGVhdGVkbHkpIGFzIHRoZSBBUEkgZXZvbHZlcy4mbHQ7L2ImZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJhcGlJbmZvIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJpbXBsZW1lbnRhdGlvbiIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iY29weXJpZ2h0Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4mbHQ7YnImZ3Q7Ci1BbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIAotYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIAotdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgJmx0O2EKLWhyZWY9JnF1b3Q7aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwmcXVvdDsmZ3Q7aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwmbHQ7L2EmZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLTwvc2NoZW1hPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9Db25zdW1wdGlvblVJLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL0NvbnN1bXB0aW9uVUkucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg1ZTNjZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL0NvbnN1bXB0aW9uVUkucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDY1OSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNCwgMjAwOCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgIDIwMDYwMjA0IDEyNDE0MyAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotIyAgMjAwNjAyMDQgMTI0NDA4ICAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyICAgICAKLSMgMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0jIDIwMDYwMzIxICAgMTI4ODI3IGpvYW4gLSBKb2FuIEhhZ2dhcnR5Ci0jIDIwMDYwMzI5ICAgMTI4MDY5IHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotIyAyMDA2MDQwNyAgIDEzNTQ0MyBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0jIDIwMDYwNDExICAgMTM2MTM0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0jIDIwMDYwNDE3ICAgMTM2MzkwIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSMgMjAwNjA0MTMgICAxMzU1ODEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0jIDIwMDYwNDE4ICAgMTM2MzM1IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSMgMjAwNjA0MjAgICAxMzYxNTggcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0jIDIwMDYwNDIwICAgMTIwNzE0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0jIDIwMDYwNDIwICAgMTM1OTEyIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSMgMjAwNjA1MTAgICAxNDExMTUgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0jIDIwMDYwNTA5ICAgMTE5Mjk2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSMgMjAwNjA2MDIgICAxNDUwNTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMgMjAwNzA0MjcgICAxNzczNjAgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotIyAyMDA3MTAzMSAgIDE0MDUxOCBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0jIDIwMDgwMzE4ICAgMjEzMzMwIHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nLCBOb24tY29udmVudGlvbmFsIEphdmEgbmFtaW5nIHByZXZlbnRzIGNyZWF0aW5nIFdlYiBTZXJ2aWNlcyAoY2xpZW50KQotIyAyMDA4MDMyNiAgIDE3MTcwNSB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZywgaW1wcm92ZSBBbnRUYXNrIGVycm9ycyByZXBvcnQKLSMgMjAwODAzMjUgICAxODQ3NjEgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotIyAyMDA4MDMzMSAgIDIyNTAzMiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgRXJyb3IgbXNnIHJlZmVyZW5jZXMgcmVuYW1lZCBjYXRlZ29yeQotIyAyMDA4MDQxNiAgIDIxNTA4NCBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0jIDIwMDgwNDI1ICAgMjIxMjMyIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSMgMjAwOTAzMDIgICAyNDk2MDIgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgUElJLSBhc3NvY2lhdGlvbiB3YXJuaW5nIG1lc3NhZ2UgbmVlZHMgdXBkYXRlCi0jIDIwMDkwNDAxICAgMjY5OTk0IGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIE5MUy0gVmFsaWRhdGlvbiBtZXNzYWdlcyB1bmNsZWFyIHdoZW4gc2VydmVycyBkb24ndCBzdXBwb3J0IHJ1bnRpbWUvcHJvamVjdCBjb21ibwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIE1lc3NhZ2VzIGluIHBsdWdpbi54bWwuCi0jCi0KLVBMVUdJTl9ORVdfV0laQVJEX05BTUVfV1NfQ0xJRU5UPVdlYiBTZXJ2aWNlIENsaWVudAotIwotIyBXZWIgc2VydmljZXMgIkludGVybmV0IiBwcmVmZXJlbmNlcyBleHRlbnNpb24uCi0jCi0KLSMKLSMgV2ViIFNhbXBsZXMgSURzCi0jCi0KLSMKLSMgUG9wLXVwIGFjdGlvbnMKLSMKLUFDVElPTl9HRU5FUkFURV9KQVZBX1BST1hZPUdlbmVyYXRlIENsaWVudAotCi0jCi0jIERpYWxvZ3MKLSMKLUNIRUNLQk9YX1NIT1dfR0VORVJBVEVfSkFWQV9QUk9YWV9ESUFMT0c9U2hvdyBHZW5lcmF0ZSBKYXZhIGJlYW4gUHJveHkgRGlhbG9nCi1UT09MVElQX1BQQURfQ0hFQ0tCT1hfV1NETDJQUk9YWT1TaG93IHRoZSBkaWFsb2cgZm9yIGdlbmVyYXRpbmcgdGhlIEphdmEgYmVhbiBwcm94eSBhY3Rpb24uCi0KLSMKLSMgICAgICAgV2ViIFNlcnZpY2VzIFByZWZlcmFuY2UgUGFnZXMKLSMKLSMgQ2F0ZWdvcmllcwotIwotCi0jCi0jIFByZWZlcmVuY2VzIFRvb2x0aXBzCi0jCi0KLSMKLSNTZXJ2ZXIgUnVudGltZSBQcmVmZXJlbmNlcwotIwotVE9PTFRJUF9TUlBGX0NPTUJPX1NFUlZFUj1UaGUgcHJlZmVycmVkIHNlcnZlciB0eXBlCi1UT09MVElQX1NSUEZfQ09NQk9fUlVOVElNRT1UaGUgcHJlZmVycmVkIFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLVRPT0xUSVBfU1JQRl9DT01CT19KMkVFPVRoZSBwcmVmZXJyZWQgSjJFRSB2ZXJzaW9uCi0KLSMKLSMgR2VuZXJhbCBtZXNzYWdlcy4KLSMKLU1TR19FUlJPUl9UQVNLX0VYQ0VQVEVEPUlXQUIwMjM0RSBBbiBpbnRlcm5hbCBlcnJvciBvY2N1cnJlZC4gRGV0YWlsczogezB9Ci1NU0dfRVJST1JfTk9fU0VSVkVSX1JVTlRJTUU9Tm8gc3VpdGFibGUgc2VydmVyIGNhbiBiZSBmb3VuZCBmb3IgdGhlIHswfSBXZWIgc2VydmljZSBydW50aW1lLiBHbyB0byBXaW5kb3cgPiBQcmVmZXJlbmNlcy4gU2VsZWN0IFNlcnZlciA+IFJ1bnRpbWUgRW52aXJvbm1lbnRzIGFuZCBjb25maWd1cmUgYSBzZXJ2ZXIgcnVudGltZS4KLU1TR19FUlJPUl9OT19TRVJWRVJfUlVOVElNRV9JTlNUQUxMRUQ9ezB9IGlzIG5vdCBpbnN0YWxsZWQuIEdvIHRvIFdpbmRvdyA+IFByZWZlcmVuY2VzLiBTZWxlY3QgU2VydmVyID4gUnVudGltZSBFbnZpcm9ubWVudHMgYW5kIGNvbmZpZ3VyZSBhIHNlcnZlciBydW50aW1lLgotCi0KLSMKLSMgV2l6YXJkIHBhZ2UgdGFzayBsYWJlbHMgYW5kIGRlc2NyaXB0aW9ucwotIyAodXNlZCBvbmx5IGZvciBwcm9ncmVzcyBpbmRpY2F0aW9uKS4KLSMKLQotIwotIyBDb21tb24gd2l6YXJkIHN0cmluZ3MuCi0jCi1MQUJFTF9GT0xERVJfTkFNRT1Gb2xkZXI6Ci1MQUJFTF9KU1BfRk9MREVSX05BTUU9SlNQIGZvbGRlcjoKLUxBQkVMX1dFQl9QUk9KRUNUX05BTUU9V2ViIHByb2plY3Q6Ci1MQUJFTF9XRUJTRVJWSUNFVFlQRT0mV2ViIHNlcnZpY2UgdHlwZToKLUxBQkVMX1dFQlNFUlZJQ0VJTVBMPVNlcnZpY2UgaW1wbGVtZW50YXRpb246Ci1MQUJFTF9XRUJTRVJWSUNFREVGPVNlcnZpY2UgZGVmaW5pdGlvbjoKLUxBQkVMX0oyRUVfVkVSU0lPTj1KMkVFIHZlcnNpb246Ci1MQUJFTF9OQT1OL0EKLQotQlVUVE9OX0JST1dTRT1CJnJvd3NlLi4uCi1CVVRUT05fQlJPV1NFX0ZJTEVTPUJyb3dzZSBmaWxlcy4uLgotCi1CT1RUT01VUF9MQUJFTD1Cb3R0b20gdXAKLVRPUERPV05fTEFCRUw9VG9wIGRvd24KLUNMSUVOVF9MQUJFTD1DbGllbnQKLUNPTUJJTkVEX1RZUEVfQU5EX1JVTlRJTUVfTEFCRUw9ezB9IHsxfQotCi0jCi0jIFdpemFyZHMuCi0jCi1XSVpBUkRfVElUTEVfV1NDPVdlYiBTZXJ2aWNlIENsaWVudAotCi0jCi0jIFdlYlNlcnZpY2VQcm9qZWN0UGFnZQotIwotUEFHRV9USVRMRV9XU19QUk9KRUNUPVdlYiBTZXJ2aWNlcwotUEFHRV9ERVNDX1dTX1NFUlZJQ0U9U2VsZWN0IGEgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBvciBkZWZpbml0aW9uIGFuZCBtb3ZlIHRoZSBzbGlkZXJzIHRvIHNldCB0aGUgbGV2ZWwgb2Ygc2VydmljZSBhbmQgY2xpZW50IGdlbmVyYXRpb24uCi1QQUdFX0RFU0NfV1NfQ0xJRU5UPVNlbGVjdCBhIHNlcnZpY2UgZGVmaW5pdGlvbiBhbmQgbW92ZSB0aGUgc2xpZGVyIHRvIHNldCB0aGUgbGV2ZWwgb2YgY2xpZW50IGdlbmVyYXRpb24uCi1CVVRUT05fU1RBUlRfV0VCX1BST0pFQ1Q9JlN0YXJ0IFdlYiBzZXJ2aWNlIGluIFdlYiBwcm9qZWN0Ci0jQlVUVE9OX0RFUExPWV9XRUJfUFJPSkVDVD1EZXBsb3kgV2ViIHNlcnZpY2UgdG8gYSBzZXJ2ZXIgdHlwZQotQlVUVE9OX0lOU1RBTExfU0VSVklDRV9XRUJfUFJPSkVDVD0mSW5zdGFsbCBXZWIgc2VydmljZSBvbiBzZXJ2ZXIKLUJVVFRPTl9JTlNUQUxMX0NMSUVOVF9XRUJfUFJPSkVDVD1JbnN0YWxsIFdlYiBzZXJ2aWNlICZjbGllbnQgb24gc2VydmVyIChtYW5hZ2VkIGNsaWVudHMgb25seSkKLUdST1VQX1NDRU5BUklPX1NFUlZJQ0U9U2VydmljZQotR1JPVVBfU0NFTkFSSU9fQ0xJRU5UPUNsaWVudCBwcm94eQotTEFCRUxfV0VCU0VSVklDRUNMSUVOVFRZUEU9JkNsaWVudCB0eXBlOgotCi1UT09MVElQX1dTV1NDRU5fU0VSVklDRVBST0pFQ1RfTElOSz1DbGljayBvbiB0aGUgbGluayB0byBlZGl0IHNlcnZpY2UgcHJvamVjdCBhbmQgRUFSIHNldHRpbmdzLgotVE9PTFRJUF9XU1dTQ0VOX0NMSUVOVFBST0pFQ1RfTElOSz1DbGljayBvbiB0aGUgbGluayB0byBlZGl0IGNsaWVudCBwcm9qZWN0IGFuZCBFQVIgc2V0dGluZ3MuCi0KLURJQUxPR19USVRJTEVfU0VSVklDRV9JTVBMX1NFTEVDVElPTj1TZWxlY3QgU2VydmljZSBJbXBsZW1lbnRhdGlvbgotRElBTE9HX1RJVElMRV9TRVJWSUNFX0RFRl9TRUxFQ1RJT049U2VsZWN0IFNlcnZpY2UgRGVmaW5pdGlvbgotRElBTE9HX1RJVElMRV9TRVJWSUNFX1BST0pFQ1RfU0VUVElOR1M9U3BlY2lmeSBTZXJ2aWNlIFByb2plY3QgU2V0dGluZ3MKLURJQUxPR19USVRJTEVfQ0xJRU5UX1BST0pFQ1RfU0VUVElOR1M9U3BlY2lmeSBDbGllbnQgUHJvamVjdCBTZXR0aW5ncwotCi0jIEl0ZW1zIGNvbW1vbiB0byBXZWJTZXJ2aWNlUnVudGltZVNlbGVjdGlvblBhZ2UgYW5kIFdlYlNlcnZpY2VDbGllbnRSdW50aW1lU2VsZWN0aW9uUGFnZQotIyBXZWJTZXJ2aWNlUnVudGltZVNlbGVjdGlvblBhZ2UKLUxBQkVMX1NVTU1BUlk9Q29uZmlndXJhdGlvbjoKLUxBQkVMX1NVTU1BUllfTk9fQ0xJRU5UPUNvbmZpZ3VyYXRpb246IE5vIGNsaWVudCBnZW5lcmF0aW9uLgotUEFHRV9USVRMRV9XU19SVU5USU1FX1NFTEVDVElPTj1TZXJ2aWNlIERlcGxveW1lbnQgQ29uZmlndXJhdGlvbgotUEFHRV9ERVNDX1dTX1JVTlRJTUVfU0VMRUNUSU9OPUNob29zZSBmcm9tIHRoZSBsaXN0IG9mIHJ1bnRpbWVzIGFuZCBkZXBsb3ltZW50IHNlcnZlcnMsIG9yIHVzZSB0aGUgZGVmYXVsdCBzZXR0aW5ncy4KLUxBQkVMX1JVTlRJTUVTX0xJU1Q9V2ViIHNlcnZpY2UgcnVudGltZToKLUxBQkVMX1NFUlZFUlNfTElTVD1TZXJ2ZXI6Ci1MQUJFTF9TRVJWRVJTX0lOU1RBTkNFUz1TZXJ2ZXIgaW5zdGFuY2U6Ci1MQUJFTF9FRElUX0JVVFRPTj1FZGl0Li4uCi1MQUJFTF9TRVJWSUNFX0VBUl9NT0RVTEU9U2VydmljZSBFQVIgbW9kdWxlOgotTEFCRUxfQ0xJRU5UX0VBUl9NT0RVTEU9Q2xpZW50IEVBUiBtb2R1bGU6Ci1MQUJFTF9DTElFTlRfTU9EVUxFPUNsaWVudCBtb2R1bGU6Ci1MQUJFTF9TRVJWSUNFX01PRFVMRT1TZXJ2aWNlIG1vZHVsZToKLUxBQkVMX0NMSUVOVF9QUk9KRUNUPUNsaWVudCBwcm9qZWN0OgotTEFCRUxfU0VSVklDRV9QUk9KRUNUPVNlcnZpY2UgcHJvamVjdDoKLUxBQkVMX0NMSUVOVF9FQVJfUFJPSkVDVD1DbGllbnQgRUFSIHByb2plY3Q6Ci1MQUJFTF9TRVJWSUNFX0VBUl9QUk9KRUNUPVNlcnZpY2UgRUFSIHByb2plY3Q6Ci0KLSMKLSMgQ2xpZW50IGNvbXBvbmVudCB0eXBlIGxhYmVscwotIwotTEFCRUxfQ0xJRU5UX0NPTVBfVFlQRV9XRUI9V2ViCi1MQUJFTF9DTElFTlRfQ09NUF9UWVBFX0VKQj1FSkIKLUxBQkVMX0NMSUVOVF9DT01QX1RZUEVfQVBQX0NMSUVOVD1BcHBsaWNhdGlvbiBDbGllbnQKLUxBQkVMX0NMSUVOVF9DT01QX1RZUEVfQ09OVEFJTkVSTEVTUz1KYXZhCi0KLQotVE9PTFRJUF9QV1JTX1RFWFRfUlVOVElNRT1DbGljayBvbiB0aGUgbGluayB0byBzcGVjaWZ5IHRoZSB3ZWIgc2VydmljZSBydW50aW1lLgotVE9PTFRJUF9QV1JTX1RFWFRfU0VSVkVSPUNsaWNrIG9uIHRoZSBsaW5rIHRvIHNwZWNpZnkgYSBzZXJ2ZXIuCi1UT09MVElQX1BXUlNfSjJFRV9WRVJTSU9OPUoyRUUgdmVyc2lvbiB0byBiZSB1c2VkLgotCi1MQUJFTF9TRUxFQ1RJT05fVklFV19USVRMRT1TZXJ2ZXItU2lkZSBEZXBsb3ltZW50IFNlbGVjdGlvbjoKLUxBQkVMX1NFTEVDVElPTl9WSUVXX1JVTlRJTUU9Q2hvb3NlIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgZmlyc3QKLUxBQkVMX1NFTEVDVElPTl9WSUVXX1NFUlZFUj1DaG9vc2Ugc2VydmVyIGZpcnN0Ci1MQUJFTF9TRUxFQ1RJT05fVklFV19FWFBMT1JFPUV4cGxvcmUgb3B0aW9ucwotCi1MQUJFTF9UUkVFX0VYSVNUSU5HX1NFUlZFUlM9RXhpc3RpbmcgU2VydmVycwotTEFCRUxfVFJFRV9TRVJWRVJfVFlQRVM9U2VydmVyIFR5cGVzCi0KLU1TR19OT19PQkpFQ1RfU0VMRUNUSU9OPVNlbGVjdCBhIHNlcnZpY2UgaW1wbGVtZW50YXRpb24uCi1NU0dfTk9fU0VSVklDRV9TRUxFQ1RJT049U2VsZWN0IGEgc2VydmljZSBkZWZpbml0aW9uLgotTVNHX1dBUk5fU0VSVklDRV9JTVBMX05BTUlOR19DT05WRU5USU9OPVRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHNlbGVjdGVkIGRvZXMgbm90IGZvbGxvdyBKYXZhIG5hbWluZyBjb252ZW50aW9ucy4KLU1TR19JTlZBTElEX1NFUlZJQ0VfSU1QTD1UaGUgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBzZWxlY3RlZCBpcyBpbnZhbGlkLgotTVNHX0lOVkFMSURfU0VSVklDRV9ERUY9VGhlIHNlcnZpY2UgZGVmaW5pdGlvbiBzZWxlY3RlZCBpcyBpbnZhbGlkLgotTVNHX0lOVkFMSURfU1JUX1NFTEVDVElPTlM9ezB9IGRvZXMgbm90IHN1cHBvcnQgdGhlIHsxfSBXZWIgc2VydmljZSBydW50aW1lLiBDaG9vc2UgYSBkaWZmZXJlbnQgc2VydmVyIG9yIHJ1bnRpbWUgdG8gcHJvY2VlZCB0aHJvdWdoIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkLgotTVNHX05PX1JVTlRJTUU9Tm8gcnVudGltZSBzcGVjaWZpZWQgZm9yIHRoZSB7MH0gc2NlbmFyaW8uCi1NU0dfTk9fU0VSVkVSPU5vIHNlcnZlciBzcGVjaWZpZWQgZm9yIHRoZSB7MH0gc2NlbmFyaW8uCi1NU0dfRVJST1JfU1RVQl9PTkxZPXswfSBoYXMgb25seSBzdHViIHJ1bnRpbWVzIGFzc29jaWF0ZWQgd2l0aCBpdC4gQ2hvb3NlIGEgZGlmZmVyZW50IHNlcnZlciBvciBjb25maWd1cmUgYSBub24tc3R1YiBydW50aW1lIGluIHRoZSBzZXJ2ZXIgcHJlZmVyZW5jZXMuIAotTVNHX1dBUk5fU1RVQl9PTkxZPXswfSBoYXMgb25seSBzdHViIHJ1bnRpbWVzIGFzc29jaWF0ZWQgd2l0aCBpdCBzbyB0aGUgc2VydmVyIHdpbGwgbm90IGJlIGNyZWF0ZWQgb3Igc3RhcnRlZC4KLU1TR19XQVJOX05PX1NFUlZJQ0VfU0VSVkVSPU5vIHNlcnZlciBoYXMgYmVlbiBzZWxlY3RlZC4gVGhlIFdlYiBzZXJ2aWNlIHdpbGwgbm90IGJlIGRlcGxveWVkLCBpbnN0YWxsZWQsIG9yIHJ1bi4KLU1TR19XQVJOX05PX0NMSUVOVF9TRVJWRVI9Tm8gc2VydmVyIGhhcyBiZWVuIHNlbGVjdGVkLiBUaGUgV2ViIHNlcnZpY2UgY2xpZW50IHdpbGwgbm90IGJlIGRlcGxveWVkLCBpbnN0YWxsZWQsIG9yIHJ1bi4KLQotTVNHX1NFUlZFUl9UQVJHRVRfTUlTTUFUQ0g9VGhlIHByb2plY3QsIHswfSwgaGFzIGEgc2VydmVyIHRhcmdldCB3aGljaCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBzZWxlY3RlZCBzZXJ2ZXIgdHlwZQotTVNHX0oyRUVfTUlTTUFUQ0g9VGhlIHByb2plY3QsIHswfSwgaGFzIGEgZGlmZmVyZW50IEoyRUUgbGV2ZWwgZnJvbSB0aGUgc2VsZWN0ZWQgSjJFRSBsZXZlbAotTVNHX1NFUlZJQ0VfUFJPSkVDVF9FTVBUWT1UaGUgc2VydmljZSBwcm9qZWN0IHswfSBjYW5ub3QgYmUgZW1wdHkuIFNlbGVjdCBhIHNlcnZpY2UgcHJvamVjdCB7MH0uCi1NU0dfU0VSVklDRV9QUk9KRUNUX1RZUEVfRU1QVFk9U2VsZWN0IGEgc2VydmljZSBwcm9qZWN0IHR5cGUuCi1NU0dfU0VSVklDRV9FQVJfRU1QVFk9VGhlIHNlcnZpY2UgRUFSIHswfSBjYW5ub3QgYmUgZW1wdHkuIFNlbGVjdCBhIHNlcnZpY2UgRUFSIHswfS4KLU1TR19DTElFTlRfUFJPSkVDVF9FTVBUWT1UaGUgY2xpZW50IHByb2plY3QgezB9IGNhbm5vdCBiZSBlbXB0eS4gU2VsZWN0IGEgY2xpZW50IHByb2plY3QgezB9LgotTVNHX0NMSUVOVF9QUk9KRUNUX1RZUEVfRU1QVFk9U2VsZWN0IGEgY2xpZW50IHByb2plY3QgdHlwZS4KLU1TR19DTElFTlRfRUFSX0VNUFRZPVRoZSBjbGllbnQgRUFSIHswfSBjYW5ub3QgYmUgZW1wdHkuIFNlbGVjdCBhIGNsaWVudCBFQVIgezB9LgotCi1NU0dfSU5WQUxJRF9FSkJfUFJPSkVDVD17MH0gaXMgbm90IGFuIEVKQiBwcm9qZWN0LiBDaG9vc2UgYW4gRUpCIHByb2plY3QsIG9yIGVudGVyIGEgbmV3IEVKQiBwcm9qZWN0IG5hbWUuCi1NU0dfSU5WQUxJRF9XRUJfUFJPSkVDVD17MH0gaXMgbm90IGEgV2ViIHByb2plY3QuIENob29zZSBhIFdlYiBwcm9qZWN0LCBvciBlbnRlciBhIG5ldyBXZWIgcHJvamVjdCBuYW1lLgotTVNHX0lOVkFMSURfUFJPSkVDVF9UWVBFPXswfSBpcyBub3QgYSB7MX0gcHJvamVjdC4gQ2hvb3NlIGEgezF9IHByb2plY3QsIG9yIGVudGVyIGEgbmV3IHByb2plY3QgbmFtZS4KLU1TR19NT0RVTEU9bW9kdWxlCi1NU0dfTU9EVUxFX05BTUVfQU5EX1BST0pFQ1RfTkFNRV9OT1RfVEhFX1NBTUU9VGhlIGZsZXhpYmxlIHByb2plY3QgcHJlZmVyZW5jZSBpcyBvZmYuIFRoZXJlZm9yZSwgcHJvamVjdCBuYW1lcyBhbmQgbW9kdWxlIG5hbWVzIG11c3QgYmUgdGhlIHNhbWUgZm9yIG5ldyBtb2R1bGVzLgotCi1NU0dfU0VSVklDRV9SVU5USU1FX0RPRVNfTk9UX1NVUFBPUlRfUFJPSkVDVD1UaGUgezB9IFdlYiBzZXJ2aWNlIHJ1bnRpbWUgaW4gezF9IGRvZXMgbm90IHN1cHBvcnQgdGhlIHNlcnZpY2UgcHJvamVjdCB7Mn0uCi1NU0dfU0VSVklDRV9TRVJWRVJfRE9FU19OT1RfU1VQUE9SVF9QUk9KRUNUPVRoZSB7MH0gc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNlcnZpY2UgcHJvamVjdCB7MX0uCi1NU0dfU0VSVklDRV9TRVJWRVJfRE9FU19OT1RfU1VQUE9SVF9KQVZBUFJPSkVDVD1UaGUgezB9IHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBKYXZhIHByb2plY3QgezF9LgotTVNHX1NFUlZJQ0VfUlVOVElNRV9ET0VTX05PVF9TVVBQT1JUX1RFTVBMQVRFPVRoZSB7MH0gV2ViIHNlcnZpY2UgcnVudGltZSBpbiB7MX0gZG9lcyBub3Qgc3VwcG9ydCB0aGUgc2VydmljZSBwcm9qZWN0IHR5cGUgezJ9LgotTVNHX1NFUlZJQ0VfU0VSVkVSX0RPRVNfTk9UX1NVUFBPUlRfVEVNUExBVEU9VGhlIHswfSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgc2VydmljZSBwcm9qZWN0IHR5cGUgezF9LgotCi1NU0dfQ0xJRU5UX1JVTlRJTUVfRE9FU19OT1RfU1VQUE9SVF9QUk9KRUNUPVRoZSB7MH0gV2ViIHNlcnZpY2UgcnVudGltZSBpbiB7MX0gZG9lcyBub3Qgc3VwcG9ydCB0aGUgY2xpZW50IHByb2plY3QgezJ9LgotTVNHX0NMSUVOVF9TRVJWRVJfRE9FU19OT1RfU1VQUE9SVF9QUk9KRUNUPVRoZSB7MH0gc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNsaWVudCBwcm9qZWN0IHsxfS4KLU1TR19DTElFTlRfUlVOVElNRV9ET0VTX05PVF9TVVBQT1JUX1RFTVBMQVRFPVRoZSB7MH0gV2ViIHNlcnZpY2UgcnVudGltZSBpbiB7MX0gZG9lcyBub3Qgc3VwcG9ydCB0aGUgY2xpZW50IHByb2plY3QgdHlwZSB7Mn0uCi1NU0dfQ0xJRU5UX1NFUlZFUl9ET0VTX05PVF9TVVBQT1JUX1RFTVBMQVRFPVRoZSB7MH0gc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNsaWVudCBwcm9qZWN0IHR5cGUgezF9LgotCi1NU0dfU0FNRV9DTElFTlRfQU5EX1NFUlZJQ0VfRUFSUz1Zb3VyIHNlbGVjdGVkIHNlcnZpY2UgYW5kIGNsaWVudCB7MH0gbW9kdWxlcyBoYXZlIHRoZSBzYW1lIG5hbWUuICBQcm9jZWVkaW5nIHdpdGggdGhpcyBjb25maWd1cmF0aW9uIG1heSByZXN1bHQgaW4gcnVudGltZSBlcnJvcnMuCi1NU0dfU0FNRV9DTElFTlRfQU5EX1NFUlZJQ0VfQ09NUE9ORU5UUz1Zb3VyIHNlbGVjdGVkIHNlcnZpY2UgYW5kIGNsaWVudCB7MH0gbW9kdWxlcyBoYXZlIHRoZSBzYW1lIG5hbWUuICBQcm9jZWVkaW5nIHdpdGggdGhpcyBjb25maWd1cmF0aW9uIHdpbGwgcmVzdWx0IGluIHJ1bnRpbWUgZXJyb3JzLgotTVNHX1NBTUVfQ0xJRU5UX0FORF9TRVJWSUNFX1BST0pFQ1RTPVlvdXIgc2VsZWN0ZWQgc2VydmljZSBhbmQgY2xpZW50IHByb2plY3RzIGFyZSB0aGUgc2FtZS4gIFByb2NlZWRpbmcgd2l0aCB0aGlzIGNvbmZpZ3VyYXRpb24gd2lsbCByZXN1bHQgaW4gZXJyb3JzLgotTVNHX1dST05HX0NMSUVOVF9QUk9KRUNUX1RZUEU9VGhlIHNlbGVjdGVkIGNsaWVudCBwcm9qZWN0LCB7MH0sIGlzIG5vdCBhIHsxfSBwcm9qZWN0LiBQbGVhc2Ugc2VsZWN0IGEgezF9IHByb2plY3Qgb3IgZW50ZXIgYSBuZXcgcHJvamVjdCBuYW1lLgotTVNHX0NMSUVOVF9TVUI9Y2xpZW50Ci1NU0dfU0VSVklDRV9TVUI9c2VydmljZQotTVNHX0dFTkVSQUxfUFJPSkVDVF9BTkRfRUFSPVNlbGVjdCB0aGUgezB9IHByb2plY3QgYW5kIHRoZSBFQVIgcHJvamVjdCB3aXRoIHdoaWNoIHlvdSB3YW50IGl0IHRvIGJlIGFzc29jaWF0ZWQuCi1NU0dfRUFSX1BST0pFQ1RfV0lMTF9CRV9DUkVBVEVEPUlmIGFuIEVBUiBvciBwcm9qZWN0IGRvZXMgbm90IGV4aXN0IG9yIGlzIGN1cnJlbnRseSB1bmFzc29jaWF0ZWQsIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgXG5hc3NvY2lhdGVkIGFzIHJlcXVpcmVkIHdoZW4geW91IGNsaWNrIE5leHQuCi0KLU1TR19FQVJfV0lMTF9CRV9BU1NPQ0lBVEVEPVRoZSBzZWxlY3RlZCB7MH0gcHJvamVjdCB3aWxsIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgRUFSIHByb2plY3QuCi1NU0dfUFJPSkVDVF9XSUxMX0JFX0NSRUFURUQ9VGhlIHswfSBwcm9qZWN0IHdpbGwgYmUgY3JlYXRlZCBhbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBFQVIgcHJvamVjdC4KLU1TR19FQVJfV0lMTF9CRV9DUkVBVEVEPVRoZSB7MH0gRUFSIHByb2plY3Qgd2lsbCBiZSBjcmVhdGVkIGFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIHByb2plY3QuCi1NU0dfUFJPSkVDVF9BTkRfRUFSX0NSRUFURUQ9VGhlIHswfSBwcm9qZWN0IGFuZCBFQVIgcHJvamVjdCB3aWxsIGJlIGNyZWF0ZWQgYW5kIGFzc29jaWF0ZWQgd2l0aCBvbmUgYW5vdGhlci4KLQotTVNHX0NMSUVOVF9DQU5OT1RfQVNTT0NJQVRFPVRoZSBjbGllbnQgcHJvamVjdCwgezB9LCBpcyBhdCBhbiBpbmNvbXBhdGlibGUgSmF2YSBFRSBzcGVjaWZpY2F0aW9uIGxldmVsIHRoYW4gdGhhdCBvZiB0aGUgInsxfSIgRW50ZXJwcmlzZSBBcHBsaWNhdGlvbi4KLU1TR19TRVJWSUNFX0NBTk5PVF9BU1NPQ0lBVEU9VGhlIHNlcnZpY2UgcHJvamVjdCwgezB9LCBpcyBhdCBhbiBpbmNvbXBhdGlibGUgSmF2YSBFRSBzcGVjaWZpY2F0aW9uIGxldmVsIHRoYW4gdGhhdCBvZiB0aGUgInsxfSIgRW50ZXJwcmlzZSBBcHBsaWNhdGlvbi4KLQotTVNHX1BST0pFQ1RfTVVTVF9FWElTVD1ObyBzZXJ2ZXIgY2FuIGJlIGZvdW5kIGFuZCB7MH0gZG9lcyBub3QgZXhpc3QuIENob29zZSBhbiBleGlzdGluZyBwcm9qZWN0IG9yIHVzZSB0aGUgcHJlZmVyZW5jZXMgdG8gY29uZmlndXJlIGEgc2VydmVyIHJ1bnRpbWUuICAKLQotCi0jIFdlYlNlcnZpY2VDbGllbnRSdW50aW1lU2VsZWN0aW9uUGFnZQotUEFHRV9USVRMRV9XU19DTElFTlRfUlVOVElNRV9TRUxFQ1RJT049Q2xpZW50IEVudmlyb25tZW50IENvbmZpZ3VyYXRpb24KLVBBR0VfREVTQ19XU19DTElFTlRfUlVOVElNRV9TRUxFQ1RJT049Q2hvb3NlIGZyb20gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIHJ1bnRpbWVzIGFuZCBzZXJ2ZXJzIGZvciB0aGUgY2xpZW50IGVudmlyb25tZW50LCBvciB1c2UgdGhlIGRlZmF1bHQgc2V0dGluZ3MuCi0KLUxBQkVMX0NMSUVOVF9TRUxFQ1RJT05fVklFV19USVRMRT1DbGllbnQtU2lkZSBFbnZpcm9ubWVudCBTZWxlY3Rpb246Ci1MQUJFTF9DTElFTlRfVFlQRT1DbGllbnQgUHJvamVjdCB0eXBlOgotTEFCRUxfU0VSVklDRV9UWVBFPVNlcnZpY2UgUHJvamVjdCB0eXBlOgotTEFCRUxfV0VCPVdlYgotTEFCRUxfRUpCPUVKQgotTEFCRUxfTk9fTEFCRUw9Ci0KLSMKLSMgSXRlbXMgY29tbW9uIHRvIFdlYlNlcnZpY2VNYXBwaW5nc1BhZ2UsIFdlYlNlcnZpY2VNYXBwaW5nc1BhZ2UgKGNsaWVudCksIGFuZCBXZWJTZXJ2aWNlU09BUEJpbmRpbmdQYWdlCi0jCi1QQUdFX01TR19WQUxJREFUSU9OX0lOVEVSTkFMX0VSUk9SPUFuIGludGVybmFsIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYWdlIHZhbGlkYXRpb24uIFNlZSBsb2dzIGZvciBkZXRhaWxzLgotCi0jCi0jIFdlYlNlcnZpY2VNYXBwaW5nc1BhZ2UKLSMKLVBBR0VfVElUTEVfV1NfWE1MMkJFQU49V2ViIFNlcnZpY2UgU2tlbGV0b24gWE1MIHRvIEphdmEgTWFwcGluZ3MKLVBBR0VfREVTQ19OMlBfTUFQUElOR1M9RGVmaW5lIGN1c3RvbSBtYXBwaW5nIGZvciBuYW1lc3BhY2UgdG8gcGFja2FnZS4KLU1TR19NQVBQSU5HX0RVUExJQ0FURV9FTlRSSUVTPUR1cGxpY2F0ZSB7MH0gbWFwcGVkIHRvIHRoZSBzYW1lIHsxfS4KLQotCi0jCi0jIFRoZSB0d28gSVRFTV8qIHN0cmluZ3MgYXJlIGVudHJpZXMgaW4gYSBsaXN0IGJveCBvZiBtYXBwaW5ncy4KLSMgVGhlcmUgYXJlIHR3byBmb3Jtcywgb25lIHdoZW4gdGhlIHBhZ2UgaXMgaW4gSmF2YS10by1YTUwgbW9kZToKLSMgICA8amF2YS1iZWFuLW5hbWU+LCA8ZW5jb2Rpbmctc3R5bGU+Ci0jIGFuZCBvbmUgd2hlbiB0aGUgcGFnZSBpcyBpbiBYTUwtdG8tSmF2YSBtb2RlOgotIyAgIDx4bWwtbmFtZXNwYWNlLXVyaT46PHhtbC1zaG9ydC1uYW1lPiwgPGVuY29kaW5nLXN0eWxlPgotIyB3aGVyZToKLSMgICA8amF2YS1iZWFuLW5hbWU+IGlzIGEgZnVsbHktcXVhbGlmaWVkIEphdmEgY2xhc3MgbmFtZQotIyAgIDx4bWwtbmFtZXNwYWNlLXVyaT4gaXMgdGhlIG5hbWVzcGFjZSBvZiBhbiBYTUwgdHlwZQotIyAgIDx4bWwtc2hvcnQtbmFtZT4gaXMgdGhlIFhNTCB0eXBlIG5hbWUgd2l0aGluIHRoZSBuYW1lc3BhY2UKLSMgICA8ZW5jb2Rpbmctc3R5bGU+IGlzIHRoZSBlbmNvZGluZyBzdHlsZSAoU09BUCBvciBMaXRlcmFsIFhNTCkKLSMKLQotIwotIyBXZWJTZXJ2aWNlUHJveHlQYWdlCi0jCi1CVVRUT05fR0VORVJBVEVfUFJPWFk9JkdlbmVyYXRlIGEgcHJveHkKLQotIwotIyBXZWJTZXJ2aWNlU2tlbGV0b25Db25maWdQYWdlCi0jCi1QQUdFX0RFU0NfV1NTS0VMX0NPTkZJRz1EZWZpbmUgYSBza2VsZXRvbiBKYXZhIGJlYW4gYXMgYSBXZWIgc2VydmljZS4KLVBBR0VfVElUTEVfV1NTS0VMX0NPTkZJRz1XZWIgU2VydmljZSBTa2VsZXRvbiBKYXZhIEJlYW4gQ29uZmlndXJhdGlvbgotVE9PTFRJUF9QQlNDX1RFWFRfU0tFTEVUT05fRk9MREVSPUZvbGRlciBmb3IgZ2VuZXJhdGVkIEphdmEgc2tlbGV0b24uCi1UT09MVElQX1BCU0NfQlVUVE9OX1NLRUxFVE9OX0ZPTERFUl9CUk9XU0U9QnJvd3NlIGZvbGRlcnMuCi1MQUJFTF9TS0VMRVRPTl9ST09UX05BTUU9U2tlbGV0b24gZm9sZGVyOgotCi0jCi0jIFdlYlNlcnZpY2VCZWFuQ2xhc3NQYWdlCi0jCi1MQUJFTF9CRUFOX0NMQVNTX05BTUU9QmVhbjoKLVBBR0VfTVNHX0JFQU5fQ0FOTk9UX0JFX0VNUFRZPVBsZWFzZSBzZWxlY3QgYSBKYXZhIGJlYW4gY2xhc3MuCi1CVVRUT05fQlJPV1NFX0NMQVNTRVM9QnJvd3NlIGNsYXNzZXMuLi4KLQotCi0jCi0jIFdlYlNlcnZpY2VUZXN0UGFnZQotIwotUEFHRV9USVRMRV9XU1RFU1Q9VGVzdCBXZWIgU2VydmljZQotUEFHRV9ERVNDX1dTVEVTVD1TZWxlY3QgYSB0ZXN0IGZhY2lsaXR5Ci1DSEVDS0JPWF9URVNUX1dFQlNFUlZJQ0U9JlRlc3QgdGhlIFdlYiBzZXJ2aWNlCi1DSEVDS0JPWF9NT05JVE9SX1dFQlNFUlZJQ0U9Jk1vbml0b3IgdGhlIFdlYiBzZXJ2aWNlCi1DSEVDS0JPWF9PVkVSV1JJVEVfRklMRVM9Jk92ZXJ3cml0ZSBmaWxlcyB3aXRob3V0IHdhcm5pbmcKLU1TR19FUlJPUl9VTkFCTEVfVE9fTEFVTkNIX1dTRExfVEVTVD1BbiBlcnJvciBvY2N1cnJlZC4gVW5hYmxlIHRvIGxhdW5jaCBXU0RMIHRlc3QgZmFjaWxpdHkuCi0KLSMKLSMgV2ViU2VydmljZUV4cGxvcmVyUGFnZQotIwotQlVUVE9OX0xBVU5DSF9TRVJWSUNFX1RFU1Q9TGF1bmNoCi0KLSMKLSMgV2ViU2VydmljZUNsaWVudFRlc3RQYWdlCi0jCi1QQUdFX1RJVExFX1dTX1NBTVBMRT1XZWIgU2VydmljZSBDbGllbnQgVGVzdAotUEFHRV9ERVNDX1dTX1NBTVBMRT1EbyB5b3Ugd2FudCB0byB0ZXN0IHRoZSBnZW5lcmF0ZWQgcHJveHk/Ci1CVVRUT05fVEVTVD1UZXN0IHRoZSBnZW5lcmF0ZWQgcHJveHkKLUxBQkVMX1RFU1RfVFlQRVM9VGVzdCBmYWNpbGl0eQotQlVUVE9OX1JVTl9URVNUPVJ1biB0ZXN0IG9uIHNlcnZlcgotTEFCRUxfTUVUSE9EUz1NZXRob2RzCi1MQUJFTF9KU1BfUFJPSkVDVF9OQU1FPUpTUCBwcm9qZWN0OgotTVNHX0VSUk9SX0pUU19QUk9YWV9OT1RfQ09NUElMRUQ9SVdBQjAzNTdFIFRoZSBHZW5lcmF0ZWQgcHJveHkgd2FzIG5vdCBmb3VuZC4gV2ViU2VydmljZSBzYW1wbGUganNwcyBjYW5ub3QgYmUgZ2VuZXJhdGVkLgotTVNHX0VSUk9SX01BTEZPUk1FRF9VUkw9SVdBQjAzNThFIFRlc3QgY2xpZW50IFVSTCBpcyBtYWxmb3JtZWQuCi1NU0dfRVJST1JfTU9EVUxFX0RFUEVOREVOQ1k9VW5hYmxlIHRvIGVzdGFibGlzaCBtb2R1bGUgZGVwZW5kZW5jeSBmcm9tIHswfSB0byB7MX0uCi0KLSMKLSMgV2ViU2VydmljZUJlYW5NZXRob2RzUGFnZQotIwotQlVUVE9OX1NFTEVDVF9BTEw9U2VsZWN0IEFsbAotQlVUVE9OX0RFU0VMRUNUX0FMTD1EZXNlbGVjdCBBbGwKLVRPT0xUSVBfUEJNRV9CVVRUT05fU0VMRUNUX0FMTD1TZWxlY3QgYWxsIG1ldGhvZHMKLVRPT0xUSVBfUEJNRV9CVVRUT05fREVTRUxFQ1RfQUxMPURlc2VsZWN0IGFsbCBtZXRob2RzCi0KLSMKLSMgV2ViU2VydmljZVdTRExTZWxlY3Rpb25QYWdlCi0jCi1QQUdFX1RJVExFX1dTRExfU0VMRUNUSU9OPVdlYiBTZXJ2aWNlIFdTREwgRmlsZSBTZWxlY3Rpb24KLVBBR0VfREVTQ19XU0RMX1NFTEVDVElPTj1TZWxlY3QgYSBXU0RMIGZpbGUuCi0KLSMKLSMgV2ViU2VydmljZVB1Ymxpc2hQYWdlCi0jCi1QQUdFX1RJVExFX1dTX1BVQkxJU0g9V2ViIFNlcnZpY2UgUHVibGljYXRpb24KLVBBR0VfREVTQ19XU19QVUJMSVNIPURvIHlvdSB3YW50IHRvIHB1Ymxpc2ggeW91ciBXZWIgc2VydmljZT8KLVBBR0VfVElUTEVfV1NfRklORD1GaW5kIGEgV2ViIHNlcnZpY2UKLVBBR0VfREVTQ19XU19GSU5EPURvIHlvdSB3YW50IHRvIGZpbmQgYSBXZWIgc2VydmljZT8KLUJVVFRPTl9XU19QVUJMSVNIPSZMYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB0byBwdWJsaXNoIHRoaXMgV2ViIHNlcnZpY2UgdG8gYSBVRERJIFJlZ2lzdHJ5Ci1CVVRUT05fV1NfUFVCTElTSF9QUklWQVRFX1VEREk9TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdG8gcHVibGlzaCB0aGlzIFdlYiBzZXJ2aWNlIHRvIHRoZSBVbml0IFRlc3QgVURESSBSZWdpc3RyeQotQlVUVE9OX1dTX0ZJTkQ9TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdG8gZmluZCBhIFdlYiBzZXJ2aWNlIGZyb20gYSBVRERJIFJlZ2lzdHJ5Ci1CVVRUT05fV1NfRklORF9QUklWQVRFX1VEREk9TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdG8gZmluZCBhIFdlYiBzZXJ2aWNlIGZyb20gdGhlIFVuaXQgVGVzdCBVRERJIFJlZ2lzdHJ5Ci1MQUJFTF9QVUJMSUNfVURESV9SRUdJU1RSSUVTPVB1YmxpYyBVRERJIFJlZ2lzdHJ5Ci0KLSMKLSMgRUpCIFVJIHN0cmluZ3MKLSMKLUxBQkVMX0VKQl9CRUFOX05BTUU9RUpCIGJlYW4KLVRBQkxFX1RJVExFX0VKQl9CRUFOX05BTUVTPVN0YXRlbGVzcyBFSkIgYmVhbnMKLVRBQkxFX1RJVExFX0VKQl9QUk9KRUNUX05BTUU9RUpCIHByb2plY3QKLUxBQkVMX0VBUl9QUk9KRUNUUz1FQVIgcHJvamVjdHMKLVRPT0xUSVBfRUFSX1BST0pFQ1RTPUVudGVycHJpc2UgYXBwbGljYXRpb24gcHJvamVjdHMuCi1UT09MVElQX1RBQkxFX0JFQU5fTkFNRVM9U2VsZWN0IGFuIEVKQi4KLUxBQkVMX1NIT1dfQUxMX1NUQVRFTEVTU19TRVNTSU9OX0VKQlM9PDxTaG93IGFsbCBzdGF0ZWxlc3Mgc2Vzc2lvbiBFSkJzPj4KLQotIwotIyBUb29sdGlwcyBmb3IgV2ViU2VydmljZVdTRExTZWxlY3Rpb25QYWdlCi0jCi1UT09MVElQX1BXV1NfUEFHRT0KLQotIwotIyBUb29sdGlwcyBmb3IgV2ViIFNlcnZpY2UgV2l6YXJkIFNjZW5hcmlvIFBhZ2UKLSMKLUJVVFRPTl9XU1dTQ0VOX1BVQkxJU0g9JlB1Ymxpc2ggdGhlIFdlYiBzZXJ2aWNlCi1UT09MVElQX1dTV1NDRU5fU0NBTEVfREVWRUxPUD1EZXZlbG9wCi1UT09MVElQX1dTV1NDRU5fU0NBTEVfQVNTRU1CTEU9QXNzZW1ibGUKLVRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9ERVBMT1k9RGVwbG95Ci1UT09MVElQX1dTV1NDRU5fU0NBTEVfSU5TVEFMTD1JbnN0YWxsCi1UT09MVElQX1dTV1NDRU5fU0NBTEVfUlVOPVN0YXJ0Ci1UT09MVElQX1dTV1NDRU5fU0NBTEVfVEVTVD1UZXN0Ci1UT09MVElQX1dTV1NDRU5fU0NBTEVfU0VSVklDRT1Nb3ZlIHRoZSBzbGlkZXIgdG8gc2V0IHRoZSBsZXZlbCBvZiBzZXJ2aWNlIGdlbmVyYXRpb24uCi1UT09MVElQX1dTV1NDRU5fU0NBTEVfQ0xJRU5UPU1vdmUgdGhlIHNsaWRlciB0byBzZXQgdGhlIGxldmVsIG9mIGNsaWVudCBnZW5lcmF0aW9uLiBTZXJ2aWNlIG11c3QgYmUgc3RhcnRlZCB0byBlbmFibGUgY2xpZW50IGdlbmVyYXRpb24uCi1UT09MVElQX1dTV1NDRU5fU0NBTEVfQ0xJRU5UX09OTFk9TW92ZSB0aGUgc2xpZGVyIHRvIHNldCB0aGUgbGV2ZWwgb2YgY2xpZW50IGdlbmVyYXRpb24uIAotVE9PTFRJUF9XU1dTQ0VOX1RFWFRfSU1QTD1JbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHdlYiBzZXJ2aWNlLgotVE9PTFRJUF9XU1dTQ0VOX0JVVFRPTl9CUk9XU0VfSU1QTD1Ccm93c2UgaW1wbGVtZW50YXRpb24gZmlsZXMgZm9yIHNwZWNpZmllZCBzZXJ2aWNlIHR5cGUuCi1UT09MVElQX1dTV1NDRU5fQlVUVE9OX09WRVJXUklURV9GSUxFUz1FeGlzdGluZyBmaWxlcyB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggbm8gd2FybmluZyBkdXJpbmcgZ2VuZXJhdGlvbi4KLQotIwotIyBUb29sdGlwcyBmb3IgYmVhbnMuV2ViU2VydmljZUJlYW5DbGFzc1BhZ2UKLSMKLVRPT0xUSVBfUEJDTF9QQUdFPQotVE9PTFRJUF9QQkNMX1RFWFRfQkVBTl9DTEFTUz1TZWxlY3RlZCBKYXZhIGJlYW4uCi1UT09MVElQX1BCQ0xfQlVUVE9OX0JFQU5fQ0xBU1NfQlJPV1NFPUJyb3dzZSBjbGFzc2VzLgotVE9PTFRJUF9QQkNMX0JVVFRPTl9CRUFOX1JFU09VUkNFX0JST1dTRT1Ccm93c2UgSmF2YSBmaWxlcy4KLQotIwotIyBUb29sdGlwcyBmb3IgYmVhbnMuV2ViU2VydmljZVRlc3RQYWdlCi0jCi1UT09MVElQX1BTVFBfQ09NQk9CT1hfVEVTVD1UZXN0IGZhY2lsaXRpZXMgYXZhaWxhYmxlIHRvIHRlc3QgdGhlIHNlcnZpY2UuCi1UT09MVElQX1BTVFBfTEFVTkNIX0JVVFRPTj1MYXVuY2ggdGhlIHNlbGVjdGVkIHRlc3QgZmFjaWxpdHkuCi0KLSMKLSMgVG9vbHRpcHMgZm9yIFdlYlNlcnZpY2VSdW50aW1lU2VsZWN0aW9uUGFnZQotIwotVE9PTFRJUF9QV1JTX1BBR0U9Ci1UT09MVElQX1BXUlNfTElTVF9SVU5USU1FUz1TZWxlY3QgZnJvbSB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgcnVudGltZShzKS4KLVRPT0xUSVBfUFdSU19MSVNUX1NFUlZFUlM9U2VsZWN0IGZyb20gYXBwbGljYXRpb24gc2VydmVyKHMpLgotVE9PTFRJUF9QV1JTX1JBRElPX1NFUlZFUj1TZXJ2ZXIgb3JpZW50ZWQgc2VsZWN0aW9uLgotVE9PTFRJUF9QV1JTX1JBRElPX1JVTlRJTUU9UnVudGltZSBvcmllbnRlZCBzZWxlY3Rpb24uCi1UT09MVElQX1BXUlNfUkFESU9fRVhQTE9SRT1FeHBsb3JlIGNvbWJpbmF0aW9ucy4KLQotIwotIyBUb29sdGlwcyBmb3IgV2ViU2VydmljZUNsaWVudFJ1bnRpbWVTZWxlY3Rpb25QYWdlCi0jCi1UT09MVElQX1BXQ1JfQ09NQk9fQ0xJRU5UX1RZUEU9Q2xpZW50IHByb2plY3QgdHlwZS4KLVRPT0xUSVBfUFdDUl9DT01CT19TRVJWSUNFX1RZUEU9U2VydmljZSBwcm9qZWN0IHR5cGUuCi0KLSMKLSMgVG9vbHRpcHMgZm9yIFdlYlNlcnZpY2VQcm9qZWN0UGFnZQotIwotVE9PTFRJUF9QV1BSX0NPTUJPX1RZUEU9V2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdHlwZS4KLVRPT0xUSVBfUFdQUl9HUk9VUF9TQ0VOQVJJT19TRVJWSUNFPVNlcnZpY2UgZGVmYXVsdHMgZm9yIHRoaXMgd2l6YXJkIHNjZW5hcmlvLgotVE9PTFRJUF9QV1BSX0NIRUNLQk9YX0dFTkVSQVRFX1BST1hZPUVuYWJsZS9kaXNhYmxlIHByb3h5IGdlbmVyYXRpb24gZm9yIHRoaXMgc2NlbmFyaW8uCi1UT09MVElQX1BXUFJfQ0hFQ0tCT1hfU1RBUlRfV0VCX1BST0pFQ1Q9U3RhcnQgV2ViIHNlcnZpY2UgaW4gV2ViIHByb2plY3QgZm9yIHRoaXMgc2NlbmFyaW8uCi1UT09MVElQX1BXUFJfQ0hFQ0tCT1hfSU5TVEFMTF9TRVJWSUNFX1dFQl9QUk9KRUNUPUluc3RhbGwgdGhlIFdlYiBzZXJ2aWNlIG9uIHRoZSBzZXJ2ZXIgZm9yIHRoaXMgc2NlbmFyaW8uCi1UT09MVElQX1BXUFJfQ0hFQ0tCT1hfSU5TVEFMTF9DTElFTlRfV0VCX1BST0pFQ1Q9SW5zdGFsbCB0aGUgV2ViIHNlcnZpY2UgY2xpZW50IG9uIHRoZSBzZXJ2ZXIgZm9yIHRoaXMgc2NlbmFyaW8gKG1hbmFnZWQgY2xpZW50IG9ubHkpLiAKLVRPT0xUSVBfUFdQUl9DSEVDS0JPWF9MQVVOQ0hfV1M9TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdG8gcHVibGlzaCB0aGUgV2ViIHNlcnZpY2UgaW4gdGhpcyBzY2VuYXJpbyB0byBhIFVEREkgUmVnaXN0cnkuCi1UT09MVElQX1BXUFJfQ0hFQ0tCT1hfVEVTVF9TRVJWSUNFPVNlbGVjdCB0aGlzIHRvIGV4cGxvcmUgdGhlIFdlYiBzZXJ2aWNlIGNyZWF0ZWQuCi1UT09MVElQX1BXUFJfQ0hFQ0tCT1hfTU9OSVRPUl9TRVJWSUNFPVNlbGVjdCB0aGlzIHRvIG1vbml0b3IgdGhlIFNPQVAgdHJhZmZpYyBvZiB0aGlzIFdlYiBzZXJ2aWNlLgotVE9PTFRJUF9QV1BSX0dST1VQX1NDRU5BUklPX0NMSUVOVD1DbGllbnQgcHJveHkgZGVmYXVsdHMgZm9yIHRoaXMgd2l6YXJkIHNjZW5hcmlvLgotVE9PTFRJUF9QV1BSX0NPTUJPX0NMSUVOVFRZUEU9Q2xpZW50IHByb3h5IHNlbGVjdGlvbiB0eXBlLgotCi0jCi0jIFRvb2x0aXBzIGZvciBXZWJTZXJ2aWNlUHVibGlzaFBhZ2UKLSMKLVRPT0xUSVBfUFdQQl9QQUdFPQotVE9PTFRJUF9QV1BCX0NIRUNLQk9YX1dTX0xBVU5DSD1QdWJsaXNoIHRoZSBXZWIgc2VydmljZS4KLQotIwotIyBXU0lMIHByb3h5Ci0jCi1QQUdFX1dTSUxfSU1QT1JUPVdTSUwgSW1wb3J0IFBhZ2UKLVRJVExFX1dTSUxfSU1QT1JUPVdTSUwgSW1wb3J0Ci1ERVNDX1dTSUxfSU1QT1JUPUltcG9ydCBXU0RMIHJlZmVyZW5jZXMgdG8gYSBXU0lMIGRvY3VtZW50Ci1QQUdFX1RJVExFX1dTX1NFTEVDVElPTj1XZWIgU2VydmljZSBTZWxlY3Rpb24gUGFnZQotUEFHRV9ERVNDX1dTX1NFTEVDVElPTj1FbnRlciBhIHdlYiBzZXJ2aWNlIFVSSS4KLQotUEFHRV9NU0dfTE9BRElOR19XRUJfU0VSVklDRV9VUkk9TG9hZGluZyBXZWIgc2VydmljZSBVUkkuLi4KLVBBR0VfTVNHX0lOVkFMSURfV0VCX1NFUlZJQ0VfVVJJPUludmFsaWQgV2ViIHNlcnZpY2UgVVJJLiAgRW50ZXIgYSBVUkkgdG8gYSBXU0RMLCBXU0lMIG9yIEhUTUwgZG9jdW1lbnQuCi1QQUdFX01TR19OT19TVUNIX0ZJTEU9RmlsZSAiezB9IiBkb2VzIG5vdCBleGlzdC4KLVBBR0VfTVNHX1NFTEVDVElPTl9NVVNUX0JFX1dTREw9U2VsZWN0aW9uIG11c3QgYmUgV1NETC4KLVBBR0VfTVNHX0lOVkFMSURfV1NJTF9GSUxFX05BTUU9SW52YWxpZCBXU0lMIGZpbGUgbmFtZS4gIFdTSUwgZmlsZSBuYW1lIG11c3QgZW5kIHdpdGggLndzaWwKLQotTVNHX0VSUk9SX1VSSV9OT1RfUkVTT0xWQUJMRT1JV0FCMDQ2OUUgInswfSIgaXMgbm90IHJlc29sdmFibGUuCi1NU0dfRVJST1JfV1NETF9IQVNfTk9fU0VSVklDRV9FTEVNRU5UPUlXQUIwNTUxRSBXU0RMIGZpbGUgYXQgezB9IGhhcyBubyBzZXJ2aWNlIGVsZW1lbnQuCi0KLUxBQkVMX1dTSUxfVVJJPVdTSUwgVVJJOgotTEFCRUxfQlJPV1NFPUJyb3dzZQotTEFCRUxfV1NETD1XU0RMOgotTEFCRUxfV1NETF9VUkk9V1NETCBVUkkKLUxBQkVMX0lNUE9SVD1JbXBvcnQuLi4KLUxBQkVMX0FERD1BZGQKLUxBQkVMX1JFTU9WRT1SZW1vdmUKLUxBQkVMX1dTX1NFTEVDVElPTj1FbnRlciBhIFVSSSB0byBhIFdTREwsIFdTSUwgb3IgSFRNTCBkb2N1bWVudDoKLUxBQkVMX1NFTEVDVF9XU0RMPVNlbGVjdCBhIFdTREwKLUxBQkVMX1ZBTElEQVRFX01FU1NBR0VTPVdTREwgdmFsaWRhdGlvbiBtZXNzYWdlczoKLQotVE9PTFRJUF9XU0lMX0lNUE9SVF9QQUdFPVRoaXMgcGFnZSBhbGxvd3MgeW91IHRvIGFkZCBXU0RMIHJlZmVyZW5jZXMgdG8gYSBXU0lMIGRvY3VtZW50LgotVE9PTFRJUF9XU0lMX1RFWFRfV1NJTD1FbnRlciB0aGUgbG9jYXRpb24gb2YgYSBuZXcgb3IgZXhpc3RpbmcgV1NJTCBkb2N1bWVudC4KLVRPT0xUSVBfV1NJTF9CVVRUT05fQlJPV1NFX1dTSUw9QnJvd3NlIGZvciBhIFdTSUwgZG9jdW1lbnQuCi1UT09MVElQX1dTSUxfVEFCTEVfV1NETD1FbnRlciB0aGUgVVJJcyBvZiB0aGUgV1NETHMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgYWRkZWQgYXMgc2VydmljZSByZWZlcmVuY2VzLgotVE9PTFRJUF9QQ09OX1BBR0U9U2VsZWN0IGEgd2ViIHNlcnZpY2UgZm9yIGNvbnN1bXB0aW9uLgotVE9PTFRJUF9QQ09OX1RFWFRfV1M9RW50ZXIgYSBVUkkgdG8gYSBXU0RMLCBXU0lMIG9yIEhUTUwgZG9jdW1lbnQuCi1UT09MVElQX1BDT05fQlVUVE9OX0JST1dTRV9XUz1Ccm93c2UgZm9yIGEgd2ViIHNlcnZpY2UgcmVzb3VyY2UuCi1UT09MVElQX1ZBTElEQVRFX1RFWFRfTUVTU0FHRT1NZXNzYWdlcyBmcm9tIFdTREwgdmFsaWRhdGlvbi4KLVRPT0xUSVBfVEFCTEVfVkFMSURBVEVfTUVTU0FHRT1Vc2UgdGhlIFdlYiBTZXJ2aWNlIFByb2ZpbGUgQ29tcGxpYW5jZSBhbmQgVmFsaWRhdGlvbiBwcmVmZXJlbmNlIHRvIGVuYWJsZSBvciBkaXNhYmxlIFdTREwgdmFsaWRhdGlvbi4KLQotIwotIyBUYWJsZSBjb2x1bW4gaGVhZGluZyBmb3IgVmFsaWRhdGlvbk1lc3NhZ2VWaWV3ZXJXaWRnZXQKLSMKLVRBQkxFX0NPTFVNTl9WQUxJREFUSU9OX1NFVkVSSVRZPVNldmVyaXR5Ci1UQUJMRV9DT0xVTU5fVkFMSURBVElPTl9MSU5FPUxpbmUKLVRBQkxFX0NPTFVNTl9WQUxJREFUSU9OX0NPTFVNTj1Db2x1bW4KLVRBQkxFX0NPTFVNTl9WQUxJREFUSU9OX01FU1NBR0U9TWVzc2FnZQotIwotIyBUb29sdGlwcyBmb3IgY2xpZW50LldlYlNlcnZpY2VDbGllblRlc3RQYWdlCi0jCi1UT09MVElQX1BXU01fUEFHRT0KLVRPT0xUSVBfUFdTTV9DSEVDS0JPWF9URVNUPUVuYWJsZS9kaXNhYmxlIFRlc3QuCi1UT09MVElQX1BXU01fQ09NQk9CT1hfVEVTVD1TZWxlY3QgdGhlIHRlc3QgdHlwZS4KLVRPT0xUSVBfUFdTTV9DT01CT0JPWF9TRVJWRVI9U2VsZWN0IHRoZSBzZXJ2ZXIgdHlwZS4KLVRPT0xUSVBfUFdTTV9DT01CT0JPWF9TRVJWRVJfSU5TVEFOQ0U9U2VsZWN0IHRoZSBzZXJ2ZXIgaW5zdGFuY2UuCi1UT09MVElQX1BXU01fQ0hFQ0tCT1hfTEFVTkNIPVJ1biB0ZXN0IG9uIGEgc2VydmVyLgotVE9PTFRJUF9QV1NNX1RFWFRfSlNQX0ZPTERFUj1EZXN0aW5hdGlvbiBmb2xkZXIgb2YgZ2VuZXJhdGVkIHNhbXBsZSBmaWxlcy4KLVRPT0xUSVBfUFdTTV9CVVRUT05fSlNQX0ZPTERFUl9CUk9XU0U9QnJvd3NlIGZvbGRlcnMuCi1UT09MVElQX1BXU01fQlVUVE9OX1NFTEVDVF9BTEw9U2VsZWN0IGFsbCBtZXRob2RzLgotVE9PTFRJUF9QV1NNX0JVVFRPTl9ERVNFTEVDVF9BTEw9RGVzZWxlY3QgYWxsIG1ldGhvZHMuCi1UT09MVElQX1BXU01fQ09NQk9fUFJPSkVDVD1XZWIgcHJvamVjdCBmb3IgZ2VuZXJhdGVkIHNhbXBsZS4KLVRPT0xUSVBfUFdTTV9URVhUX1NBTVBMRV9GT0xERVI9RGVzdGluYXRpb24gZm9sZGVyIG9mIGdlbmVyYXRlZCBzYW1wbGUgZmlsZXMuCi1UT09MVElQX1BXU01fVFJFRV9NRVRIT0RTPU1ldGhvZHMgdG8gZ2VuZXJhdGUgaW50byB0aGUgc2FtcGxlLgotVE9PTFRJUF9QV1NNX0VBUl9QUk9KRUNUPUVBUiBwcm9qZWN0IGZvciB0aGUgZ2VuZXJhdGVkIHNhbXBsZS4KLQotIwotIyBIVFRQIEJhc2ljIEF1dGgKLSMKLURJQUxPR19USVRMRV9IVFRQX0JBU0lDX0FVVEg9SFRUUCBCYXNpYyBBdXRoZW50aWNhdGlvbgotTEFCRUxfVVJMPVVSTDoKLUxBQkVMX0hUVFBfQkFTSUNfQVVUSF9VU0VSTkFNRT1Vc2VyIG5hbWU6Ci1MQUJFTF9IVFRQX0JBU0lDX0FVVEhfUEFTU1dPUkQ9UGFzc3dvcmQ6Ci0KLVRPT0xUSVBfSFRUUF9CQVNJQ19BVVRIX1VTRVJOQU1FPUVudGVyIHlvdXIgSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvbiB1c2VyIG5hbWUuCi1UT09MVElQX0hUVFBfQkFTSUNfQVVUSF9QQVNTV09SRD1FbnRlciB5b3VyIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb24gcGFzc3dvcmQuCi0KLSMKLSMgR2VuZXJhdGUgSGFuZGxlciBTa2VsZXRvbgotIwotTVNHX0VSUk9SX0dFTkVSQVRFX0hBTkRMRVJfU0tFTEVUT049SVdBQjAzNTlFIEVycm9yIGluIGdlbmVyYXRpbmcgaGFuZGxlciBza2VsZXRvbi4KLU1TR19FUlJPUl9XUklURV9GSUxFPUlXQUIwMzYwRSBFcnJvciBpbiB3cml0aW5nIGZpbGUgezB9LgotCi0jCi0jIEhhbmRsZXJzIENvbmZpZ3VyYXRpb24gd2l6YXJkIHBhZ2UKLSMKLUxBQkVMX0hBTkRMRVJTX0NPTkZJRz1IYW5kbGVyIGNvbmZpZ3VyYXRpb24KLUxBQkVMX0JVVFRPTl9BREQ9QWRkCi1MQUJFTF9CVVRUT05fUkVNT1ZFPVJlbW92ZQotTEFCRUxfQlVUVE9OX01PVkVfVVA9TW92ZSB1cAotTEFCRUxfQlVUVE9OX01PVkVfRE9XTj1Nb3ZlIGRvd24KLUxBQkVMX0JVVFRPTl9HRU5fU0tFTEVUT049R2VuZXJhdGUgc2tlbGV0b24gY2xhc3NlcyBmb3IgbmV3IGhhbmRsZXJzCi1MQUJFTF9DT01CT19TT1VSQ0VfTE9DPU91dHB1dCBmb2xkZXI6Ci1MQUJFTF9DT01CT19XU19DTElFTlRfUkVGPUNsaWVudCBTZXJ2aWNlIFJlZmVyZW5jZXM6Ci1MQUJFTF9DT01CT19XU19TRVJWSUNFX0RFU0M9U2VydmljZSBEZXNjcmlwdGlvbnM6Ci1NU0dfVEVYVF9OVU1fT0ZfU0VSVklDRVM9WW91IGhhdmUgc2VsZWN0ZWQgezB9IHNlcnZpY2VzLgotTVNHX1RFWFRfTlVNX09GX0NMSUVOVFM9WW91IGhhdmUgc2VsZWN0ZWQgezB9IGNsaWVudCBzZXJ2aWNlcy4KLSAKLUxBQkVMX0hBTkRMRVJfTkFNRT1OYW1lCi1MQUJMRV9IQU5ETEVSX0NMQVNTPUNsYXNzIG5hbWUKLUxBQkVMX0hBTkRMRVJfUE9SVD1Qb3J0IG5hbWUKLSAKLURJQUxPR19USVRMRV9XU19BRERfSEFORExFUj1BZGQgTmV3IEhhbmRsZXIKLUxBQkVMX1RFWFRfSEFORExFUl9OQU1FPU5hbWU6Ci1MQUJFTF9URVhUX0hBTkRMRVJfQ0xBU1M9Q2xhc3MgbmFtZToKLUxBQkVMX1RFWFRfSEFORExFUl9QT1JUPVBvcnQgbmFtZToKLSAKLVBBR0VfVElUTEVfU0VSVklDRV9IRExSX0NPTkZJRz1TZXJ2aWNlIEhhbmRsZXJzIENvbmZpZ3VyYXRpb24KLVBBR0VfREVTQ19TRVJWSUNFX0hETFJfQ09ORklHPUNvbmZpZ3VyZSBzZXJ2aWNlLXNpZGUgaGFuZGxlcnMKLVBBR0VfVElUTEVfQ0xJRU5UX0hETFJfQ09ORklHPUNsaWVudCBIYW5kbGVycyBDb25maWd1cmF0aW9uCi1QQUdFX0RFU0NfQ0xJRU5UX0hETFJfQ09ORklHPUNvbmZpZ3VyZSBjbGllbnQtc2lkZSBoYW5kbGVycwotUEFHRV9ERVNDX01VTFRJUExFX1NFUlZJQ0VTX0NPTkZJRz1BZGQgaGFuZGxlcnMgdG8gbXVsdGlwbGUgV2ViIHNlcnZpY2VzLgotUEFHRV9ERVNDX01VTFRJUExFX0NMSUVOVFNfQ09ORklHPUFkZCBoYW5kbGVycyB0byBtdWx0aXBsZSBXZWIgc2VydmljZSBjbGllbnRzLgotIAotVE9PTFRJUF9FRElUX1dTX0hBTkRMRVJTPUNvbmZpZ3VyZSBXZWIgU2VydmljZSBIYW5kbGVycwotVE9PTFRJUF9CVVRUT05fR0VOX1NLRUxFVE9OPVNlbGVjdCB0byBnZW5lcmF0ZSBza2VsZXRvbiBjbGFzc2VzIGZvciBuZXcgaGFuZGxlcnMuCi1UT09MVElQX0NPTUJPX1NPVVJDRV9MT0M9U2VsZWN0IHRoZSBvdXRwdXQgbG9jYXRpb24gZm9yIGZpbGUgZ2VuZXJhdGlvbi4KLVRPT0xUSVBfVEVYVF9IQU5ETEVSX05BTUU9SGFuZGxlciBuYW1lCi1UT09MVElQX1RFWFRfSEFORExFUl9DTEFTUz1IYW5kbGVyIGNsYXNzIG5hbWUKLVRPT0xUSVBfVEVYVF9IQU5ETEVSX1BPUlQ9SGFuZGxlciBwb3J0IGNvbXBvbmVudCBuYW1lCi1UT09MVElQX1dTX0NMSUVOVF9SRUY9U2VsZWN0IGEgY2xpZW50IHNlcnZpY2UtcmVmZXJlbmNlIHRvIHNob3cgaXRzIGhhbmRsZXJzLgotVE9PTFRJUF9XU19TRVJWSUNFX0RFU0M9U2VsZWN0IGEgc2VydmljZSBkZXNjcmlwdGlvbiB0byBzaG93IGl0cyBoYW5kbGVycy4KLSAKLSMKLSMgQ2xpZW50SGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZAotIwotTVNHX0VSUk9SX1dFQl9TRVJWSUNFX0NMSUVOVFNfTk9UX0ZPVU5EPU5vIFdlYiBzZXJ2aWNlIGNsaWVudHMgd2VyZSBmb3VuZC4gQ3JlYXRlIGEgV2ViIHNlcnZpY2UgY2xpZW50IGJlZm9yZSBjb25maWd1cmluZyBXZWIgc2VydmljZSBjbGllbnQgaGFuZGxlcnMuCi0gCi0jCi0jIFNlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kCi0jCi1NU0dfRVJST1JfV0VCX1NFUlZJQ0VTX05PVF9GT1VORD1ObyBXZWIgc2VydmljZXMgd2VyZSBmb3VuZC4gIENyZWF0ZSBhIFdlYiBzZXJ2aWNlIGJlZm9yZSBjb25maWd1cmluZyBXZWIgc2VydmljZSBoYW5kbGVycy4KLU1TR19FUlJPUl9XU0REX05PVF9GT1VORD1VbmFibGUgdG8gbGF1bmNoIGhhbmRsZXIgd2l6YXJkLiAgTm8gZGVwbG95bWVudCBkZXNjcmlwdG9yIHdhcyBmb3VuZCBmb3IgdGhpcyBXZWIgc2VydmljZS4KLU1TR19FUlJPUl9JTlZBTElEX01VTFRJUExFX1NFUlZJQ0VfU0VMRUNUPUludmFsaWQgbXVsdGlwbGUgc2VsZWN0aW9uIG9mIFNlcnZpY2VzLiAgRW5zdXJlIGFsbCBzZWxlY3Rpb25zIGFyZSBTZXJ2aWNlcy4jCi0KLSMgT3BlbkphdmFFZGl0b3JDb21tYW5kCi0jCi1NU0dfRVJST1JfVU5BQkxFX1RPX09QRU5fSkFWQV9FRElUT1I9SVdBQjAwMjlFIFVuYWJsZSB0byBvcGVuIGNsYXNzIHswfSBmcm9tIHByb2plY3QgezF9IGluIHRoZSBKYXZhIGVkaXRvci4KLQotIwotIyBDaGVja0lmU2VydmljZVByb2plY3QKLSMKLU1TR19XQVJOX0lTX1NFUlZJQ0VfUFJPSkVDVD1UaGUgc2VsZWN0ZWQgY2xpZW50IHByb2plY3QsIHswfSwgY29udGFpbnMgdGhlIFdlYiBzZXJ2aWNlLiBQcm9jZWVkaW5nIHdpdGggdGhpcyBjb25maWd1cmF0aW9uIG1heSByZXN1bHQgaW4gcnVudGltZSBlcnJvcnMgd2hlbiBpbnZva2luZyB0aGUgV2ViIHNlcnZpY2UuIFdvdWxkIHlvdSBsaWtlIHRvIHByb2NlZWQ/Ci1NU0dfVVNFUl9BQk9SVEVEPVVzZXIgcHJlc3NlZCBjYW5jZWwgaW4gd2FybmluZyBkaWFsb2cgd2hpY2ggd2FybmVkIGFib3V0IHRoZSBzZWxlY3RlZCBjbGllbnQgcHJvamVjdCBiZWluZyB0aGUgc2VydmljZSBwcm9qZWN0LgotCi0jCi0jIE1pc3NpbmcgdGhpcmQgcGFydHkgZmlsZSBlcnJvciBtZXNzYWdlCi0jCi1NU0dfTUlTU0lOR19USElSRF9QQVJUWV9GSUxFUz1NaXNzaW5nIHRoaXJkIHBhcnR5IGZpbGVzLiAgUmVmZXIgdG8gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy93c3QvY29tcG9uZW50cy93cy9kb3dubG9hZF9pbnN0cnVjdGlvbnNfZm9yX2phcnMuaHRtbAotCi0jCi0jIFdTRExTZWxlY3Rpb25PdXRwdXRDb21tYW5kCi0jCi1NU0dfV0FSTklOR19OT19TRVJWSUNFX0VMRU1FTlQ9VGhlIFdTREwgZmlsZSBkb2VzIG5vdCBjb250YWluIGEgU2VydmljZSBlbGVtZW50LiAgVGhlcmVmb3JlIGEgc2VydmljZSBpbnRlcmZhY2UgYW5kIEphdmEgcHJveHkgd2lsbCBub3QgYmUgZ2VuZXJhdGVkIGFuZCBhcyBhIHJlc3VsdCwgYSBKYXZhIHRlc3QgY2xpZW50IHdpbGwgbm90IGJlIGxhdW5jaGVkLiAgQ2xpY2sgT0sgdG8gcHJvY2VlZCwgb3IgY2xpY2sgQ2FuY2VsIHRvIHNlbGVjdCBhbm90aGVyIFdTREwgZmlsZS4gIEFsdGVybmF0ZWx5LCBleGl0IHRoZSB3aXphcmQgYW5kIHVzZSB0aGUgV1NETCBlZGl0b3IgdG8gY3JlYXRlIGEgU2VydmljZSBXU0RMIGRvY3VtZW50LgotCi0jCi0jIENoZWNrV1NETFZhbGlkYXRpb25Db21tYW5kCi0jCi1TVElMTF9WQUxJREFUSU5HX1dTREw9V2l6YXJkIFdTREwgdmFsaWRhdGlvbiBpbiBQcm9ncmVzcy4gIFxuLSBDbGljayBDYW5jZWwgdG8gY2FuY2VsIHRoZSBjdXJyZW50IFdTREwgdmFsaWRhdGlvbiBhbmQgY29udGludWUuIFxuLSBDbGljayBDYW5jZWwgYW5kIFVwZGF0ZSB0byB1cGRhdGUgdGhlIHByZWZlcmVuY2UgdG8gYWx3YXlzIGNhbmNlbCBpbmNvbXBsZXRlIFdTREwgdmFsaWRhdGlvbiB3aGlsZSB0cmF2ZXJzaW5nIHRoZSB3aXphcmQuICBcbi0gQ2xpY2sgV2FpdCB0byB3YWl0IGZvciBXU0RMIHZhbGlkYXRpb24gdG8gY29tcGxldGUuCi1DQU5DRUxfVkFMSURBVElPTl9MQUJFTD1DYW5jZWwKLUNBTkNFTF9WQUxJREFUSU9OX0RFU0NSSVBUSU9OPUNhbmNlbCB0aGUgY3VycmVudCBXU0RMIHZhbGlkYXRpb24gYW5kIGNvbnRpbnVlCi1DQU5DRUxfQUxMX1ZBTElEQVRJT05fTEFCRUw9Q2FuY2VsIGFuZCBVcGRhdGUKLUNBTkNFTF9BTExfVkFMSURBVElPTl9ERVNDUklQVElPTj1VcGRhdGUgdGhlIHByZWZlcmVuY2UgdG8gYWx3YXlzIGNhbmNlbCBpbmNvbXBsZXRlIFdTREwgdmFsaWRhdGlvbiB3aGlsZSB0cmF2ZXJzaW5nIHRoZSB3aXphcmQuCi1XQUlUX1ZBTElEQVRJT05fTEFCRUw9V2FpdAotV0FJVF9WQUxJREFUSU9OX0RFU0NSSVBUSU9OPVdhaXQgZm9yIFdTREwgdmFsaWRhdGlvbiB0byBjb21wbGV0ZQotVEFTS19MQUJFTF9DSEVDS19XU0RMX1ZBTElEQVRJT049Q2hlY2sgZm9yIFdTREwgdmFsaWRhdGlvbgotVEFTS19ERVNDX0NIRUNLX1dTRExfVkFMSURBVElPTj1DaGVjayBpZiBXU0RMIHZhbGlkYXRpb24gaGFzIGNvbXBsZXRlZAotCi0jCi0jIFdTRExWYWxpZGF0aW9uIG1lc3NhZ2VzCi0jCi1NRVNTQUdFX1ZBTElEQVRFX05PX1dTREw9V2l6YXJkIFdTREwgdmFsaWRhdGlvbiBpcyBkaXNhYmxlZC4KLU1FU1NBR0VfVkFMSURBVEVfUkVNT1RFX1dTREw9V2l6YXJkIFdTREwgdmFsaWRhdGlvbiBpcyBvbmx5IGVuYWJsZWQgZm9yIHJlbW90ZSBmaWxlcy4KLU1FU1NBR0VfVkFMSURBVEVfQUxMX1dTREw9V2l6YXJkIFdTREwgdmFsaWRhdGlvbiBpcyBlbmFibGVkLgotTUVTU0FHRV9WQUxJREFURV9JTl9QUk9HUkVTUz1XU0RMIHZhbGlkYXRpb24gaW4gcHJvZ3Jlc3MgLi4uCi1FUlJPUl9NRVNTQUdFU19JTl9WQUxJREFUSU9OPVRoZSBXU0RMIGZpbGUgY29udGFpbnMgdmFsaWRhdGlvbiBlcnJvcihzKS4KLVdBUk5JTkdfTUVTU0FHRVNfSU5fVkFMSURBVElPTj1UaGUgV1NETCBmaWxlIGNvbnRhaW5zIHZhbGlkYXRpb24gd2FybmluZyhzKS4KLVdBUk5JTkdfSUZfQ09OVElOVUU9Q29udGludWluZyB3aXRoIHRoZSB3aXphcmQgbWF5IHJlc3VsdCBpbiBnZW5lcmF0aW9uIG9yIHJ1bnRpbWUgcHJvYmxlbS4KLVZBTElEQVRJT05fQ09NUExFVEVEPVdTREwgdmFsaWRhdGlvbiBjb21wbGV0ZXMgd2l0aCBubyB3YXJuaW5nIG9yIGVycm9yLgotVE9PTFRJUF9WQUxJREFURV9URVhUX01FU1NBR0VfU1VNTUFSWT1XU0RMIHZhbGlkYXRpb24gcHJlZmVyZW5jZSBjYW4gYmUgY2hhbmdlZCB1c2luZyB0aGUgV2ViIFNlcnZpY2VzIFByb2ZpbGUgQ29tcGxpYW5jZSBhbmQgVmFsaWRhdGlvbiBwcmVmZXJlbmNlLgotCi1MQUJFTF9CVVRUT05fU1RPUF9XU0RMX1ZBTElEQVRJT049U3RvcCBWYWxpZGF0aW9uCi1UT09MVElQX1NUT1BfVkFMSURBVElPTl9CVVRUT049U3RvcHMgdGhlIGN1cnJlbnQgV1NETCB2YWxpZGF0aW9uIG9wZXJhdGlvbi4KLQotCi0jCi0jIFN0YXJ0IHNlcnZlciBwYWdlCi0jCi1QQUdFX1RJVExFX1dTX1NUQVJUX1NFUlZFUj1TZXJ2ZXIgc3RhcnR1cAotUEFHRV9ERVNDX1dTX1NUQVJUX1NFUlZFUj1TdGFydCB0aGUgc2VydmVyIGZyb20gdGhpcyBwYWdlLgotTEFCRUxfU1RBUlRfU0VSVkVSX1RFWFQxPUluIG9yZGVyIHRvIHByb2NlZWQgdGhlIHNlcnZlciAiezB9IiBtdXN0IGJlIHN0YXJ0ZWQuCi1MQUJFTF9TVEFSVF9TRVJWRVJfVEVYVDI9T25jZSB0aGUgc2VydmVyIGlzIHN0YXJ0ZWQgdGhlICJuZXh0IiBidXR0b24gd2lsbCBiZSBlbmFibGVkLgotTEFCRUxfU1RBUlRfU0VSVkVSX1RFWFQzPVRoZSAiYmFjayIgYnV0dG9uIGNhbiBiZSB1c2VkIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgc3RhcnRpbmcgdG8KLUxBQkVMX1NUQVJUX1NFUlZFUl9URVhUND1jaGFuZ2UgYW55IHByZXZpb3VzIHNldHRpbmdzIGluIHRoaXMgd2l6YXJkLgotTEFCRUxfU1RBUlRfU0VSVkVSX0JVVFRPTj0mU3RhcnQgc2VydmVyCi1UT09MVElQX1NUQVJUX1NFUlZFUl9CVVRUT049U3RhcnQgdGhlIHNlcnZlcgotVEVYVF9TRVJWRVJfU1RBVFVTPUN1cnJlbnRseSB0aGUgc2VydmVyIGlzIHswfS4KLVRFWFRfU0VSVkVSX01TRz1TZXJ2ZXIgezB9Ci1URVhUX1NFUlZFUl9TVEFSVEVEPXN0YXJ0ZWQKLVRFWFRfU0VSVkVSX1NUQVJUSU5HPXN0YXJ0aW5nCi1URVhUX1NFUlZFUl9TVE9QUEVEPXN0b3BwZWQKLQotIwotIyBXYXJuaW5ncwotIwotCi1NU0dfU0VSVkVSX05PVF9GT1VORF9XQVJOSU5HPUEgc3VpdGFibGUgc2VydmVyIHdhcyBub3QgZm91bmQuIFRoZSBzYW1wbGUgY2FuIGJlIGdlbmVyYXRlZCBidXQgY2Fubm90IGJlIGxhdW5jaGVkLgotCi0KLSMKLSMgQW50IHRhc2sgTGlzdCBvcHRpb25zCi0jCi0KLSMgTm90ZSB0byB0cmFuc2xhdGlvbiBkbyBub3QgdHJhbnNsYXRlIGtleXdvcmQgUnVudGltZUlkCi1NU0dfSU5GT19BTlRfUlVOVElNRV9IRUFESU5HPVdlYiBTZXJ2aWNlIFJ1bnRpbWUgSURzIChSdW50aW1lSWQpCi1NU0dfSU5GT19BTlRfU0VSVkVSX1JVTlRJTUU9U2VydmVyIHJ1bnRpbWU6IHswfQotTVNHX0lORk9fQU5UX0NMSUVOVF9SVU5USU1FPUNsaWVudCBydW50aW1lOiB7MH0gCi0KLSMgTm90ZSB0byB0cmFuc2xhdGlvbiBkbyBub3QgdHJhbnNsYXRlIGtleXdvcmQgU2VydmVySWQKLU1TR19JTkZPX0FOVF9TRVJWRVJfSEVBRElORz1TZXJ2ZXIgSURzIChTZXJ2ZXJJZCkKLU1TR19JTkZPX0FOVF9TRVJWRVI9U2VydmVyOiB7MH0KLQotTVNHX0lORk9fV1NETF9PUEVSQVRJT05fVElNRURfT1VUPUNvdWxkIG5vdCByZXRyaWV2ZSB0aGUgV1NETCBmaWxlIHswfS4gIERvIHlvdSB3YW50IHRvIGNvbnRpbnVlIHRvIHdhaXQgZm9yIHRoaXMgZmlsZT8KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvQ29uc3VtcHRpb25VSU1lc3NhZ2VzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL0NvbnN1bXB0aW9uVUlNZXNzYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzkxZTgyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvQ29uc3VtcHRpb25VSU1lc3NhZ2VzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjA0IDEyNDE0MyAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lciAgICAgICAgICAKLSAqIDIwMDYwMjA0IDEyNDQwOCAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lciAgICAgCi0gKiAyMDA2MDIyMSAxMTkxMTEgICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwMzI5IDEyODA2OSAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MDQgMTM0OTEzICAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1IAotICogMjAwNjA0MTEgICAxMzYxMzQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNDE3ICAgMTM2MzkwLzEzNjE1OSBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDQxMyAgIDEzNTU4MSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDE4ICAgMTM2MzM1IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNDIwICAgMTM2MTU4IHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MjAgICAxMjA3MTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNDIwICAgMTM1OTEyIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNDI2ICAgMTM4NjQ3IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNTEwICAgMTQxMTE1IHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA1MDkgICAxMTkyOTYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjA3MTkgICAxMzk5Nzcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcxMDMxICAgMTQwNTE4IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDgwMzE4ICAgMjEzMzMwIHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nLCBOb24tY29udmVudGlvbmFsIEphdmEgbmFtaW5nIHByZXZlbnRzIGNyZWF0aW5nIFdlYiBTZXJ2aWNlcyAoY2xpZW50KQotICogMjAwODAzMjYgICAxNzE3MDUgdHJ1bmdoYUBjYS5pYm0uY29tIC0gVHJ1bmcsIGltcHJvdmUgQW50VGFzayBlcnJvcnMgcmVwb3J0Ci0gKiAyMDA4MDMyNSAgIDE4NDc2MSBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA4MDQxNiAgIDIxNTA4NCBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA4MDQyNSAgIDIyMTIzMiBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLQotcHVibGljIGZpbmFsIGNsYXNzIENvbnN1bXB0aW9uVUlNZXNzYWdlcyBleHRlbmRzIE5MUyB7Ci0KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQlVORExFX05BTUUgPSAib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUkiOy8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgQ29uc3VtcHRpb25VSU1lc3NhZ2VzKCkgewotCQkvLyBEbyBub3QgaW5zdGFudGlhdGUKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQTFVHSU5fTkVXX1dJWkFSRF9OQU1FX1dTX0NMSUVOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBBQ1RJT05fR0VORVJBVEVfSkFWQV9QUk9YWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBDSEVDS0JPWF9TSE9XX0dFTkVSQVRFX0pBVkFfUFJPWFlfRElBTE9HOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFBBRF9DSEVDS0JPWF9XU0RMMlBST1hZOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfU1JQRl9DT01CT19TRVJWRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9TUlBGX0NPTUJPX1JVTlRJTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9TUlBGX0NPTUJPX0oyRUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1RBU0tfRVhDRVBURUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX05PX1NFUlZFUl9SVU5USU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9OT19TRVJWRVJfUlVOVElNRV9JTlNUQUxMRUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfRk9MREVSX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfSlNQX0ZPTERFUl9OQU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1dFQl9QUk9KRUNUX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfV0VCU0VSVklDRVRZUEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfV0VCU0VSVklDRUlNUEw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfV0VCU0VSVklDRURFRjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9KMkVFX1ZFUlNJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfTkE7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQlVUVE9OX0JST1dTRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fQlJPV1NFX0ZJTEVTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJPVFRPTVVQX0xBQkVMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPUERPV05fTEFCRUw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQ0xJRU5UX0xBQkVMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIENPTUJJTkVEX1RZUEVfQU5EX1JVTlRJTUVfTEFCRUw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV0laQVJEX1RJVExFX1dTQzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1dTX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX1dTX1NFUlZJQ0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX1dTX0NMSUVOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fU1RBUlRfV0VCX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQlVUVE9OX0lOU1RBTExfU0VSVklDRV9XRUJfUFJPSkVDVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fSU5TVEFMTF9DTElFTlRfV0VCX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgR1JPVVBfU0NFTkFSSU9fU0VSVklDRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBHUk9VUF9TQ0VOQVJJT19DTElFTlQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfV0VCU0VSVklDRUNMSUVOVFRZUEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9USVRMRV9XU19SVU5USU1FX1NFTEVDVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX0RFU0NfV1NfUlVOVElNRV9TRUxFQ1RJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfU1VNTUFSWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TVU1NQVJZX05PX0NMSUVOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9SVU5USU1FU19MSVNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1NFUlZFUlNfTElTVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TRVJWRVJTX0lOU1RBTkNFUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9FRElUX0JVVFRPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TRVJWSUNFX0VBUl9NT0RVTEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQ0xJRU5UX0VBUl9NT0RVTEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQ0xJRU5UX01PRFVMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TRVJWSUNFX01PRFVMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9DTElFTlRfUFJPSkVDVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TRVJWSUNFX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQ0xJRU5UX0VBUl9QUk9KRUNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1NFUlZJQ0VfRUFSX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQ0xJRU5UX0NPTVBfVFlQRV9XRUI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQ0xJRU5UX0NPTVBfVFlQRV9FSkI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQ0xJRU5UX0NPTVBfVFlQRV9BUFBfQ0xJRU5UOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0NMSUVOVF9DT01QX1RZUEVfQ09OVEFJTkVSTEVTUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXUlNfVEVYVF9SVU5USU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdSU19URVhUX1NFUlZFUjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXUlNfSjJFRV9WRVJTSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1NFTEVDVElPTl9WSUVXX1RJVExFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1NFTEVDVElPTl9WSUVXX1JVTlRJTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfU0VMRUNUSU9OX1ZJRVdfU0VSVkVSOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1NFTEVDVElPTl9WSUVXX0VYUExPUkU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfVFJFRV9FWElTVElOR19TRVJWRVJTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1RSRUVfU0VSVkVSX1RZUEVTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19OT19PQkpFQ1RfU0VMRUNUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19OT19TRVJWSUNFX1NFTEVDVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSU5WQUxJRF9TRVJWSUNFX0RFRjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSU5WQUxJRF9TRVJWSUNFX0lNUEw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0lOVkFMSURfU1JUX1NFTEVDVElPTlM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fU0VSVklDRV9JTVBMX05BTUlOR19DT05WRU5USU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19OT19SVU5USU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19OT19TRVJWRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1NUVUJfT05MWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfV0FSTl9TVFVCX09OTFk7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fTk9fU0VSVklDRV9TRVJWRVI7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fTk9fQ0xJRU5UX1NFUlZFUjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVkVSX1RBUkdFVF9NSVNNQVRDSDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSjJFRV9NSVNNQVRDSDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVklDRV9QUk9KRUNUX0VNUFRZOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19TRVJWSUNFX1BST0pFQ1RfVFlQRV9FTVBUWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVklDRV9FQVJfRU1QVFk7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0NMSUVOVF9QUk9KRUNUX0VNUFRZOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19DTElFTlRfUFJPSkVDVF9UWVBFX0VNUFRZOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19DTElFTlRfRUFSX0VNUFRZOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19JTlZBTElEX0VKQl9QUk9KRUNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19JTlZBTElEX1dFQl9QUk9KRUNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19JTlZBTElEX1BST0pFQ1RfVFlQRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfTU9EVUxFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19NT0RVTEVfTkFNRV9BTkRfUFJPSkVDVF9OQU1FX05PVF9USEVfU0FNRTsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVklDRV9SVU5USU1FX0RPRVNfTk9UX1NVUFBPUlRfUFJPSkVDVDsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVklDRV9TRVJWRVJfRE9FU19OT1RfU1VQUE9SVF9KQVZBUFJPSkVDVDsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVklDRV9TRVJWRVJfRE9FU19OT1RfU1VQUE9SVF9QUk9KRUNUOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19TRVJWSUNFX1JVTlRJTUVfRE9FU19OT1RfU1VQUE9SVF9URU1QTEFURTsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVklDRV9TRVJWRVJfRE9FU19OT1RfU1VQUE9SVF9URU1QTEFURTsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfQ0xJRU5UX1JVTlRJTUVfRE9FU19OT1RfU1VQUE9SVF9QUk9KRUNUOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19DTElFTlRfU0VSVkVSX0RPRVNfTk9UX1NVUFBPUlRfUFJPSkVDVDsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfQ0xJRU5UX1JVTlRJTUVfRE9FU19OT1RfU1VQUE9SVF9URU1QTEFURTsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfQ0xJRU5UX1NFUlZFUl9ET0VTX05PVF9TVVBQT1JUX1RFTVBMQVRFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19TQU1FX0NMSUVOVF9BTkRfU0VSVklDRV9FQVJTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19TQU1FX0NMSUVOVF9BTkRfU0VSVklDRV9DT01QT05FTlRTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19TQU1FX0NMSUVOVF9BTkRfU0VSVklDRV9QUk9KRUNUUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfV1JPTkdfQ0xJRU5UX1BST0pFQ1RfVFlQRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfQ0xJRU5UX1NVQjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVklDRV9TVUI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0dFTkVSQUxfUFJPSkVDVF9BTkRfRUFSOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FQVJfUFJPSkVDVF9XSUxMX0JFX0NSRUFURUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VBUl9XSUxMX0JFX0FTU09DSUFURUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1BST0pFQ1RfV0lMTF9CRV9DUkVBVEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FQVJfV0lMTF9CRV9DUkVBVEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19QUk9KRUNUX0FORF9FQVJfQ1JFQVRFRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1dTX0NMSUVOVF9SVU5USU1FX1NFTEVDVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX0RFU0NfV1NfQ0xJRU5UX1JVTlRJTUVfU0VMRUNUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0NMSUVOVF9TRUxFQ1RJT05fVklFV19USVRMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9DTElFTlRfVFlQRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TRVJWSUNFX1RZUEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfV0VCOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0VKQjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9OT19MQUJFTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX01TR19WQUxJREFUSU9OX0lOVEVSTkFMX0VSUk9SOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfVElUTEVfV1NfWE1MMkJFQU47Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX04yUF9NQVBQSU5HUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfTUFQUElOR19EVVBMSUNBVEVfRU5UUklFUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fR0VORVJBVEVfUFJPWFk7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX1dTU0tFTF9DT05GSUc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9USVRMRV9XU1NLRUxfQ09ORklHOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUEJTQ19URVhUX1NLRUxFVE9OX0ZPTERFUjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BCU0NfQlVUVE9OX1NLRUxFVE9OX0ZPTERFUl9CUk9XU0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfU0tFTEVUT05fUk9PVF9OQU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0JFQU5fQ0xBU1NfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX01TR19CRUFOX0NBTk5PVF9CRV9FTVBUWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fQlJPV1NFX0NMQVNTRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9USVRMRV9XU1RFU1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX1dTVEVTVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBDSEVDS0JPWF9URVNUX1dFQlNFUlZJQ0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQ0hFQ0tCT1hfTU9OSVRPUl9XRUJTRVJWSUNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9VTkFCTEVfVE9fTEFVTkNIX1dTRExfVEVTVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fTEFVTkNIX1NFUlZJQ0VfVEVTVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1dTX1NBTVBMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX0RFU0NfV1NfU0FNUExFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9URVNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1RFU1RfVFlQRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQlVUVE9OX1JVTl9URVNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX01FVEhPRFM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfSlNQX1BST0pFQ1RfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfSlRTX1BST1hZX05PVF9DT01QSUxFRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfTUFMRk9STUVEX1VSTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fU0VMRUNUX0FMTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fREVTRUxFQ1RfQUxMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUEJNRV9CVVRUT05fU0VMRUNUX0FMTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BCTUVfQlVUVE9OX0RFU0VMRUNUX0FMTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1dTRExfU0VMRUNUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfREVTQ19XU0RMX1NFTEVDVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1dTX1BVQkxJU0g7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX1dTX1BVQkxJU0g7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9USVRMRV9XU19GSU5EOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfREVTQ19XU19GSU5EOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9XU19QVUJMSVNIOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9XU1dTQ0VOX1BVQkxJU0g7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQlVUVE9OX1dTX1BVQkxJU0hfUFJJVkFURV9VRERJOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9XU19GSU5EOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9XU19GSU5EX1BSSVZBVEVfVURESTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9QVUJMSUNfVURESV9SRUdJU1RSSUVTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0VKQl9CRUFOX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEFCTEVfVElUTEVfRUpCX0JFQU5fTkFNRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEFCTEVfVElUTEVfRUpCX1BST0pFQ1RfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9FQVJfUFJPSkVDVFM7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfU0hPV19BTExfU1RBVEVMRVNTX1NFU1NJT05fRUpCUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBDSEVDS0JPWF9PVkVSV1JJVEVfRklMRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRElBTE9HX1RJVElMRV9TRVJWSUNFX1BST0pFQ1RfU0VUVElOR1M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRElBTE9HX1RJVElMRV9DTElFTlRfUFJPSkVDVF9TRVRUSU5HUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBESUFMT0dfVElUSUxFX1NFUlZJQ0VfSU1QTF9TRUxFQ1RJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRElBTE9HX1RJVElMRV9TRVJWSUNFX0RFRl9TRUxFQ1RJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9XU1dTQ0VOX1NFUlZJQ0VQUk9KRUNUX0xJTks7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9XU1dTQ0VOX0NMSUVOVFBST0pFQ1RfTElOSzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1dTV1NDRU5fU0NBTEVfREVWRUxPUDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1dTV1NDRU5fU0NBTEVfQVNTRU1CTEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX0RFUExPWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1dTV1NDRU5fU0NBTEVfSU5TVEFMTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1dTV1NDRU5fU0NBTEVfUlVOOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9URVNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9TRVJWSUNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9DTElFTlQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX0NMSUVOVF9PTkxZOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfV1NXU0NFTl9URVhUX0lNUEw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9XU1dTQ0VOX0JVVFRPTl9PVkVSV1JJVEVfRklMRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9XU1dTQ0VOX0JVVFRPTl9CUk9XU0VfSU1QTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX0VBUl9QUk9KRUNUUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1RBQkxFX0JFQU5fTkFNRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1dTX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QQkNMX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QQkNMX1RFWFRfQkVBTl9DTEFTUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BCQ0xfQlVUVE9OX0JFQU5fQ0xBU1NfQlJPV1NFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUEJDTF9CVVRUT05fQkVBTl9SRVNPVVJDRV9CUk9XU0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QU1RQX0NPTUJPQk9YX1RFU1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QU1RQX0xBVU5DSF9CVVRUT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1JTX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1JTX0xJU1RfUlVOVElNRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1JTX0xJU1RfU0VSVkVSUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXUlNfUkFESU9fU0VSVkVSOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdSU19SQURJT19SVU5USU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdSU19SQURJT19FWFBMT1JFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdDUl9DT01CT19DTElFTlRfVFlQRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXQ1JfQ09NQk9fU0VSVklDRV9UWVBFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdQUl9DT01CT19UWVBFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdQUl9HUk9VUF9TQ0VOQVJJT19TRVJWSUNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdQUl9DSEVDS0JPWF9HRU5FUkFURV9QUk9YWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXUFJfQ0hFQ0tCT1hfU1RBUlRfV0VCX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1BSX0NIRUNLQk9YX0lOU1RBTExfU0VSVklDRV9XRUJfUFJPSkVDVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXUFJfQ0hFQ0tCT1hfSU5TVEFMTF9DTElFTlRfV0VCX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1BSX0NIRUNLQk9YX0xBVU5DSF9XUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXUFJfQ0hFQ0tCT1hfVEVTVF9TRVJWSUNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdQUl9DSEVDS0JPWF9NT05JVE9SX1NFUlZJQ0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1BSX0dST1VQX1NDRU5BUklPX0NMSUVOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXUFJfQ09NQk9fQ0xJRU5UVFlQRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXUEJfUEFHRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXUEJfQ0hFQ0tCT1hfV1NfTEFVTkNIOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfV1NJTF9JTVBPUlQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVElUTEVfV1NJTF9JTVBPUlQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgREVTQ19XU0lMX0lNUE9SVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1dTX1NFTEVDVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX0RFU0NfV1NfU0VMRUNUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfTVNHX0xPQURJTkdfV0VCX1NFUlZJQ0VfVVJJOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfTVNHX0lOVkFMSURfV0VCX1NFUlZJQ0VfVVJJOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfTVNHX05PX1NVQ0hfRklMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX01TR19TRUxFQ1RJT05fTVVTVF9CRV9XU0RMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfTVNHX0lOVkFMSURfV1NJTF9GSUxFX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1VSSV9OT1RfUkVTT0xWQUJMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfV1NETF9IQVNfTk9fU0VSVklDRV9FTEVNRU5UOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1dTSUxfVVJJOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0JST1dTRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9XU0RMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1dTRExfVVJJOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0lNUE9SVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9BREQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfUkVNT1ZFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1dTX1NFTEVDVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TRUxFQ1RfV1NETDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9WQUxJREFURV9NRVNTQUdFUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1dTSUxfSU1QT1JUX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9XU0lMX1RFWFRfV1NJTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1dTSUxfQlVUVE9OX0JST1dTRV9XU0lMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfV1NJTF9UQUJMRV9XU0RMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUENPTl9QQUdFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUENPTl9URVhUX1dTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUENPTl9CVVRUT05fQlJPV1NFX1dTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfVkFMSURBVEVfVEVYVF9NRVNTQUdFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfVEFCTEVfVkFMSURBVEVfTUVTU0FHRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUQUJMRV9DT0xVTU5fVkFMSURBVElPTl9TRVZFUklUWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUQUJMRV9DT0xVTU5fVkFMSURBVElPTl9MSU5FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRBQkxFX0NPTFVNTl9WQUxJREFUSU9OX0NPTFVNTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUQUJMRV9DT0xVTU5fVkFMSURBVElPTl9NRVNTQUdFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTTV9QQUdFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTTV9DSEVDS0JPWF9URVNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTTV9DT01CT0JPWF9URVNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTTV9DT01CT0JPWF9TRVJWRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1NNX0NPTUJPQk9YX1NFUlZFUl9JTlNUQU5DRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXU01fQ0hFQ0tCT1hfTEFVTkNIOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTTV9URVhUX0pTUF9GT0xERVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1NNX0JVVFRPTl9KU1BfRk9MREVSX0JST1dTRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXU01fQlVUVE9OX1NFTEVDVF9BTEw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1NNX0JVVFRPTl9ERVNFTEVDVF9BTEw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1NNX0NPTUJPX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1NNX1RFWFRfU0FNUExFX0ZPTERFUjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXU01fVFJFRV9NRVRIT0RTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTTV9FQVJfUFJPSkVDVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBESUFMT0dfVElUTEVfSFRUUF9CQVNJQ19BVVRIOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1VSTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9IVFRQX0JBU0lDX0FVVEhfVVNFUk5BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfSFRUUF9CQVNJQ19BVVRIX1BBU1NXT1JEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfSFRUUF9CQVNJQ19BVVRIX1VTRVJOQU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfSFRUUF9CQVNJQ19BVVRIX1BBU1NXT1JEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9HRU5FUkFURV9IQU5ETEVSX1NLRUxFVE9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9XUklURV9GSUxFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0hBTkRMRVJTX0NPTkZJRzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9CVVRUT05fQUREOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0JVVFRPTl9SRU1PVkU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQlVUVE9OX01PVkVfVVA7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQlVUVE9OX01PVkVfRE9XTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9CVVRUT05fR0VOX1NLRUxFVE9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0NPTUJPX1NPVVJDRV9MT0M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQ09NQk9fV1NfQ0xJRU5UX1JFRjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9DT01CT19XU19TRVJWSUNFX0RFU0M7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1RFWFRfTlVNX09GX1NFUlZJQ0VTOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19URVhUX05VTV9PRl9DTElFTlRTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0hBTkRMRVJfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJMRV9IQU5ETEVSX0NMQVNTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0hBTkRMRVJfUE9SVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBESUFMT0dfVElUTEVfV1NfQUREX0hBTkRMRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfVEVYVF9IQU5ETEVSX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfVEVYVF9IQU5ETEVSX0NMQVNTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1RFWFRfSEFORExFUl9QT1JUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfVElUTEVfU0VSVklDRV9IRExSX0NPTkZJRzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX0RFU0NfU0VSVklDRV9IRExSX0NPTkZJRzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX0NMSUVOVF9IRExSX0NPTkZJRzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX0RFU0NfQ0xJRU5UX0hETFJfQ09ORklHOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfREVTQ19NVUxUSVBMRV9TRVJWSUNFU19DT05GSUc7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX01VTFRJUExFX0NMSUVOVFNfQ09ORklHOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfRURJVF9XU19IQU5ETEVSUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX0JVVFRPTl9HRU5fU0tFTEVUT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9DT01CT19TT1VSQ0VfTE9DOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfVEVYVF9IQU5ETEVSX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9URVhUX0hBTkRMRVJfQ0xBU1M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9URVhUX0hBTkRMRVJfUE9SVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1dTX0NMSUVOVF9SRUY7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9XU19TRVJWSUNFX0RFU0M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1VOQUJMRV9UT19PUEVOX0pBVkFfRURJVE9SOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19XQVJOX0lTX1NFUlZJQ0VfUFJPSkVDVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfVVNFUl9BQk9SVEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19NSVNTSU5HX1RISVJEX1BBUlRZX0ZJTEVTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19XQVJOSU5HX05PX1NFUlZJQ0VfRUxFTUVOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBTVElMTF9WQUxJREFUSU5HX1dTREw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQ0FOQ0VMX1ZBTElEQVRJT05fTEFCRUw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQ0FOQ0VMX1ZBTElEQVRJT05fREVTQ1JJUFRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQ0FOQ0VMX0FMTF9WQUxJREFUSU9OX0xBQkVMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIENBTkNFTF9BTExfVkFMSURBVElPTl9ERVNDUklQVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXQUlUX1ZBTElEQVRJT05fTEFCRUw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV0FJVF9WQUxJREFUSU9OX0RFU0NSSVBUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRBU0tfTEFCRUxfQ0hFQ0tfV1NETF9WQUxJREFUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRBU0tfREVTQ19DSEVDS19XU0RMX1ZBTElEQVRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTUVTU0FHRV9WQUxJREFURV9OT19XU0RMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1FU1NBR0VfVkFMSURBVEVfUkVNT1RFX1dTREw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTUVTU0FHRV9WQUxJREFURV9BTExfV1NETDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNRVNTQUdFX1ZBTElEQVRFX0lOX1BST0dSRVNTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEVSUk9SX01FU1NBR0VTX0lOX1ZBTElEQVRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV0FSTklOR19NRVNTQUdFU19JTl9WQUxJREFUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdBUk5JTkdfSUZfQ09OVElOVUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVkFMSURBVElPTl9DT01QTEVURUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9WQUxJREFURV9URVhUX01FU1NBR0VfU1VNTUFSWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9CVVRUT05fU1RPUF9XU0RMX1ZBTElEQVRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9TVE9QX1ZBTElEQVRJT05fQlVUVE9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfVElUTEVfV1NfU1RBUlRfU0VSVkVSOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfREVTQ19XU19TVEFSVF9TRVJWRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfU1RBUlRfU0VSVkVSX1RFWFQxOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1NUQVJUX1NFUlZFUl9URVhUMjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TVEFSVF9TRVJWRVJfVEVYVDM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfU1RBUlRfU0VSVkVSX1RFWFQ0OwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1NUQVJUX1NFUlZFUl9CVVRUT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9TVEFSVF9TRVJWRVJfQlVUVE9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRFWFRfU0VSVkVSX1NUQVRVUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBURVhUX1NFUlZFUl9NU0c7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEVYVF9TRVJWRVJfU1RBUlRFRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBURVhUX1NFUlZFUl9TVEFSVElORzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBURVhUX1NFUlZFUl9TVE9QUEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19JTkZPX0FOVF9SVU5USU1FX0hFQURJTkc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0lORk9fQU5UX1NFUlZFUl9SVU5USU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19JTkZPX0FOVF9DTElFTlRfUlVOVElNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSU5GT19BTlRfU0VSVkVSX0hFQURJTkc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0lORk9fQU5UX1NFUlZFUjsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfV0VCX1NFUlZJQ0VfQ0xJRU5UU19OT1RfRk9VTkQ7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1dFQl9TRVJWSUNFU19OT1RfRk9VTkQ7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1dTRERfTk9UX0ZPVU5EOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19DTElFTlRfQ0FOTk9UX0FTU09DSUFURTsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVklDRV9DQU5OT1RfQVNTT0NJQVRFOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19QUk9KRUNUX01VU1RfRVhJU1Q7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0lOVkFMSURfTVVMVElQTEVfU0VSVklDRV9TRUxFQ1Q7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX01PRFVMRV9ERVBFTkRFTkNZOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19JTkZPX1dTRExfT1BFUkFUSU9OX1RJTUVEX09VVDsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VSVkVSX05PVF9GT1VORF9XQVJOSU5HOwotCi0KLQlzdGF0aWMgewotCQlOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuY2xhc3MpOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvYW50L0FudENsaWVudFJvb3RDb21tYW5kRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvYW50L0FudENsaWVudFJvb3RDb21tYW5kRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRlMGQzNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2FudC9BbnRDbGllbnRSb290Q29tbWFuZEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjIxICAgMTE5MTExIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNTMwICAgMTQ0MzU4IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDUzMCAgIDE0NDM1MCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA4MjUgICAxNTUxMTQgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjEwMTEgICAxNTkyODMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIHByb2plY3Qgbm90IGFzc29jaWF0ZWQgdG8gRUFSIHdoZW4gdXNpbmcgYW50IG9uIGNvbW1hbmQtbGluZQotICogMjAwNzA1MDEgICAxNzgxMjkgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIHdvcmtzcGFjZSByZXBvcnRzICJjcmFzaCBkZXRlY3RlZCIgYWZ0ZXIgcnVubmluZyBXUyBhbnQgdGFzayAoY21kbGluZSkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuYW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuQW50RGVmYXVsdGluZ09wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5BbnRSZXN0b3JpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLkFudFdvcmtzcGFjZVNhdmVDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLkNoZWNrRm9yU2VydmljZVByb2plY3RDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLkxpc3RPcHRpb25zQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5kYXRhLkVjbGlwc2VJUGF0aDJVUkxTdHJpbmdUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkZpbmlzaEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uU2NlbmFyaW9DbGVhbnVwQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuZXh0ZW5zaW9uLkNsaWVudFJvb3RGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuZXh0ZW5zaW9uLlByZUNsaWVudERldmVsb3BDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLkNsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLkNsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5DbGllbnRFeHRlbnNpb25GcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLkNsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMucnVudGltZS5DbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5DbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuQ2xpZW50VGVzdEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuRmluaXNoRGVmYXVsdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnMuQXNzZW1ibGVDbGllbnRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9ucy5EZXBsb3lDbGllbnRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9ucy5EZXZlbG9wQ2xpZW50RnJhZ21lbnQ7Ci0KLS8qKgotICogCi0gKiBDb21tYW5kIGZyYWdtZW50IGZvciBnZW5lcmF0aW5nIGEgd2ViIHNlcnZpY2UgY2xpZW50IHVzaW5nIEFudCB0YXNrLgotICogUnVuIGhlYWRsZXNzIEVjbGlwc2Ugb3Igd2l0aGluIHdvcmtzcGFjZSB1c2luZyBSdW4gYXMgQW50IEJ1aWxkLiAgVGhpcyBmcmFnbWVudCBlbGltaW5hdGVzIGFueSBVSSBzcGVjaWZpYyAKLSAqIGNvbW1hbmRzIGFuZCBkYXRhIG1hcHBpbmdzIGJldHdlZW4gY29tbWFuZHMgYW5kIHdpZGdldHMuICBXaWRnZXQgdG8gY29tbWFuZCBtYXBwaW5ncyBhcmUKLSAqIHJlcGxhY2VkIGJ5IEFudCBwcm9wZXJ0eSBmaWxlIHRvIGNvbW1hbmQgbWFwcGluZ3Mgd2hpY2ggYXJlIGVuYWJsZWQgYnkgYSBhbnREYXRhTWFwcGluZyBleHRlbnNpb24gCi0gKiBwb2ludCBpbiB0aGUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52IHBsdWdpbi4KLSAqIAotICogQGF1dGhvciBqb2FuCi0gKgotICovCi0KLXB1YmxpYyBjbGFzcyBBbnRDbGllbnRSb290Q29tbWFuZEZyYWdtZW50IGV4dGVuZHMgU2VxdWVuY2VGcmFnbWVudHsKLQkKLSAgcHVibGljIEFudENsaWVudFJvb3RDb21tYW5kRnJhZ21lbnQoKQotICB7CSAKLQkgICAgCi0gIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2NlbmFyaW9DbGVhbnVwQ29tbWFuZCgpLCAiIiApKTsKLSAgCi0gIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KG5ldyBMaXN0T3B0aW9uc0NvbW1hbmQoKSwgIiIpKTsKLSAgYWRkIChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IEFudERlZmF1bHRpbmdPcGVyYXRpb24oKSwgIiIpKTsKLSAgCi0gIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQodHJ1ZSksICIiICkgKTsKLSAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kKCksICIiICkpOwotICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IFdTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpLCAiIikpOwotICAKLSAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZCgpLCAiIikpOwotICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpLCAiIikpOwotICAKLSAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCggdHJ1ZSApLCAiIikpOwotICBhZGQoIG5ldyBDbGllbnRSb290RnJhZ21lbnQoKSApOwotICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQoKSwgIiIgKSApOwotIAotICBhZGQobmV3IEZpbmlzaEZyYWdtZW50KCkpOwotICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IEFudFJlc3RvcmluZ0NvbW1hbmQoKSwgIiIgKSk7Ci0gIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2NlbmFyaW9DbGVhbnVwQ29tbWFuZCgpLCAiIiApKTsKLSAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBBbnRXb3Jrc3BhY2VTYXZlQ29tbWFuZCgpLCAiIikpOwotIAotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50I3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLnByb3Zpc2lvbmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICB7ICAgICAKLSAgICAgIC8vIE1hcCBDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCBjb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJSZXNvdXJjZUNvbnRleHQiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXZlbG9wQ2xpZW50IiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkFzc2VtYmxlQ2xpZW50IiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkRlcGxveUNsaWVudCIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTdGFydENsaWVudCIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJSZXNvdXJjZUNvbnRleHQiLCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotCi0gICAgICAKLSAgICAgIC8vIE1hcCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kIGNvbW1hbmQuCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlRlc3RTZXJ2aWNlIiwgV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOyAgICAgICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsgICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJSZXNvdXJjZUNvbnRleHQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJJbnN0YWxsQ2xpZW50IiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlN0YXJ0Q2xpZW50IiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIkRldmVsb3BDbGllbnQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiQXNzZW1ibGVDbGllbnQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiRGVwbG95Q2xpZW50IiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgCi0gICAgICAKLSAgICAgIC8vIE1hcCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQgY29tbWFuZAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRSdW50aW1lSWQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJSdW50aW1lMkNsaWVudFR5cGVzIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdE5hbWUiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhckNvbXBvbmVudE5hbWUiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRDb21wb25lbnROYW1lIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50Q29tcG9uZW50VHlwZSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEoyRUVWZXJzaW9uIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50TmVlZEVBUiIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlJ1bnRpbWUyQ2xpZW50VHlwZXMiLCBDaGVja0ZvclNlcnZpY2VQcm9qZWN0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICAKLS8vICAgIE1hcCBBbnREZWZhdWx0aW5nT3BlcmF0aW9uICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhBbnREZWZhdWx0aW5nT3BlcmF0aW9uLmNsYXNzLCAiQ2xpZW50SWRzRml4ZWQiLCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQW50RGVmYXVsdGluZ09wZXJhdGlvbi5jbGFzcywgIlN0YXJ0U2VydmljZSIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEFudERlZmF1bHRpbmdPcGVyYXRpb24uY2xhc3MsICJJbnN0YWxsQ2xpZW50IiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MpOyAgICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhBbnREZWZhdWx0aW5nT3BlcmF0aW9uLmNsYXNzLCAiRGVwbG95Q2xpZW50IiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgICAgICAgIAotICAgICAgLy8gTWFwIFdTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCBjb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiR2VuV1NJTCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldzaWxVUkkiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlVVJJIiwgV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgbmV3IEVjbGlwc2VJUGF0aDJVUkxTdHJpbmdUcmFuc2Zvcm1lcigpKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDb21wb25lbnROYW1lIiwgV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgCi0gICAgICAvLyBXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlc1BhcnNlciIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEluaXRpYWxQcm9qZWN0IiwgbnVsbCk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJDb21wb25lbnROYW1lIiwgQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50SW5pdGlhbENvbXBvbmVudE5hbWUiLCBudWxsKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZXNQYXJzZXIiLCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgQ2hlY2tGb3JTZXJ2aWNlUHJvamVjdENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlc1BhcnNlciIsIENoZWNrRm9yU2VydmljZVByb2plY3RDb21tYW5kLmNsYXNzKTsgICAgICAKLQkgIAotICAgICAgLy8gU2V0dXAgdGhlIFByZUNsaWVudERldmVsb3BDb21tYW5kLiAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRSdW50aW1lSWQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzKTsgICAgICAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJSZXNvdXJjZUNvbnRleHQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRKMkVFVmVyc2lvbiIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3QiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3RUeXBlIiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJNb2R1bGVUeXBlIiwgbnVsbCk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0RUFSIiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXIiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlJlc291cmNlQ29udGV4dCIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzKTsKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyApOwotCSAgCi0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXZlbG9wQ2xpZW50IiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQXNzZW1ibGVDbGllbnQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXBsb3lDbGllbnQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU3RhcnRDbGllbnQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIlN0YXJ0U2VydmljZSIsIG51bGwpOyAgICAgIAotCSAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2VDbGllbnQiLCBudWxsICk7Ci0JCQkKLSAgICAgIC8vIE1hcCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCBjb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIENsaWVudEV4dGVuc2lvbkZyYWdtZW50LmNsYXNzKTsgICAgICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBDbGllbnRUZXN0RnJhZ21lbnQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnROZWVkRUFSIiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhclByb2plY3ROYW1lIiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhckNvbXBvbmVudE5hbWUiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdCIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7ICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgLy8gTWFwIENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQgY29tbWFuZC4KLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJJbnN0YW5jZUlkIiwgRmluaXNoRGVmYXVsdENvbW1hbmQuY2xhc3MpOwotCi0gICAgICAvLyBNQVAgcG9zdCBzZXJ2ZXIgY29uZmlnIGNhbGwgICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdEVBUiIsIENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJFYXJQcm9qZWN0TmFtZSIsIG51bGwpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRTZXJ2ZXJJbnN0YW5jZSIsIENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJFeGlzdGluZ1NlcnZlcklkIiwgbnVsbCk7ICAgICAKLSAgICAgICAgICAgIAotICAgICAgLy9NYXBwaW5ncyB0byBlbmFibGUgcGVlay1haGVhZCBmb3IgUGFnZSAzIG9mIHRoZSBjbGllbnQgd2l6YXJkCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIERldmVsb3BDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRW52aXJvbm1lbnQiLCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNvbnRleHQiLCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlbGVjdGlvbiIsIERldmVsb3BDbGllbnRGcmFnbWVudC5jbGFzcyApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3ROYW1lIiwgRGV2ZWxvcENsaWVudEZyYWdtZW50LmNsYXNzLCAiUHJvamVjdCIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRDb21wb25lbnROYW1lIiwgRGV2ZWxvcENsaWVudEZyYWdtZW50LmNsYXNzLCAiTW9kdWxlIiwgbnVsbCApOyAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50RWFyUHJvamVjdE5hbWUiLCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQuY2xhc3MsICJFYXJQcm9qZWN0IiwgbnVsbCApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhckNvbXBvbmVudE5hbWUiLCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQuY2xhc3MsICJFYXIiLCBudWxsICk7Ci0gICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkVudmlyb25tZW50IiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ29udGV4dCIsIEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlbGVjdGlvbiIsIEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0TmFtZSIsIEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQuY2xhc3MsICJQcm9qZWN0IiwgbnVsbCApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudENvbXBvbmVudE5hbWUiLCBBc3NlbWJsZUNsaWVudEZyYWdtZW50LmNsYXNzLCAiTW9kdWxlIiwgbnVsbCApOyAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50RWFyUHJvamVjdE5hbWUiLCBBc3NlbWJsZUNsaWVudEZyYWdtZW50LmNsYXNzLCAiRWFyUHJvamVjdCIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJDb21wb25lbnROYW1lIiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcywgIkVhciIsIG51bGwgKTsKLSAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgRGVwbG95Q2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkVudmlyb25tZW50IiwgRGVwbG95Q2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNvbnRleHQiLCBEZXBsb3lDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VsZWN0aW9uIiwgRGVwbG95Q2xpZW50RnJhZ21lbnQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0TmFtZSIsIERlcGxveUNsaWVudEZyYWdtZW50LmNsYXNzLCAiUHJvamVjdCIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRDb21wb25lbnROYW1lIiwgRGVwbG95Q2xpZW50RnJhZ21lbnQuY2xhc3MsICJNb2R1bGUiLCBudWxsICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIERlcGxveUNsaWVudEZyYWdtZW50LmNsYXNzLCAiRWFyUHJvamVjdCIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJDb21wb25lbnROYW1lIiwgRGVwbG95Q2xpZW50RnJhZ21lbnQuY2xhc3MsICJFYXIiLCBudWxsICk7ICAKLSAgICAgICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEFudERlZmF1bHRpbmdPcGVyYXRpb24uY2xhc3MsICJSZW5kZXJlclZhbGlkYXRpb24iLCBBbnRSZXN0b3JpbmdDb21tYW5kLmNsYXNzKTsgICAgICAgICAgCi0gICB9ICAgICAgICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9BbnREZWZhdWx0aW5nT3BlcmF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvQW50RGVmYXVsdGluZ09wZXJhdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmJmNTdiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9BbnREZWZhdWx0aW5nT3BlcmF0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MTAxMSAgIDE1OTI4MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgcHJvamVjdCBub3QgYXNzb2NpYXRlZCB0byBFQVIgd2hlbiB1c2luZyBhbnQgb24gY29tbWFuZC1saW5lCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5pbnRlcm5hbC5lbWYucmVzb3VyY2UuUmVuZGVyZXJGYWN0b3J5OwotCi1wdWJsaWMgY2xhc3MgQW50RGVmYXVsdGluZ09wZXJhdGlvbiBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uewotCi0JcHJpdmF0ZSBib29sZWFuIHJlbmRlcmVyVmFsaWRhdGlvbjsKLQkKLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBpbmZvKSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsKLQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotCi0JCXJlbmRlcmVyVmFsaWRhdGlvbiA9IFJlbmRlcmVyRmFjdG9yeS5nZXREZWZhdWx0UmVuZGVyZXJGYWN0b3J5KCkuaXNWYWxpZGF0aW5nKCk7CQkKLQkJUmVuZGVyZXJGYWN0b3J5LmdldERlZmF1bHRSZW5kZXJlckZhY3RvcnkoKS5zZXRWYWxpZGF0aW5nKGZhbHNlKTsKLQkJCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQkKLQlwdWJsaWMgSVN0YXR1cyB1bmRvKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBpbmZvKSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsKLQkJCi0JCVJlbmRlcmVyRmFjdG9yeS5nZXREZWZhdWx0UmVuZGVyZXJGYWN0b3J5KCkuc2V0VmFsaWRhdGluZyhyZW5kZXJlclZhbGlkYXRpb24pOwotCQkKLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfQotCQotCXB1YmxpYyBib29sZWFuIGdldFNlcnZpY2VJZHNGaXhlZCgpCi0JewotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBnZXRDbGllbnRJZHNGaXhlZCgpCi0JewotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0U3RhcnRTZXJ2aWNlKCkKLQl7Ci0JCXJldHVybiBmYWxzZTsJCi0JfQotCQotCXB1YmxpYyBib29sZWFuIGdldEluc3RhbGxTZXJ2aWNlKCkKLQl7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0gICAgCi0gICAgcHVibGljIGJvb2xlYW4gZ2V0RGVwbG95U2VydmljZSgpCi0gICAgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBib29sZWFuIGdldERlcGxveUNsaWVudCgpCi0gICAgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBib29sZWFuIGdldFJlbmRlcmVyVmFsaWRhdGlvbigpCi0gICAgewotICAgIAlyZXR1cm4gcmVuZGVyZXJWYWxpZGF0aW9uOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9BbnRSZXN0b3JpbmdDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvQW50UmVzdG9yaW5nQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzczOTAyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9BbnRSZXN0b3JpbmdDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjEwMTEgICAxNTkyODMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIHByb2plY3Qgbm90IGFzc29jaWF0ZWQgdG8gRUFSIHdoZW4gdXNpbmcgYW50IG9uIGNvbW1hbmQtbGluZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uaW50ZXJuYWwuZW1mLnJlc291cmNlLlJlbmRlcmVyRmFjdG9yeTsKLQotcHVibGljIGNsYXNzIEFudFJlc3RvcmluZ0NvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbnsKLQotCXByaXZhdGUgYm9vbGVhbiByZW5kZXJlclZhbGlkYXRpb247Ci0JCi0JcHVibGljIElTdGF0dXMgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgaW5mbykgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbiB7Ci0KLQkJUmVuZGVyZXJGYWN0b3J5LmdldERlZmF1bHRSZW5kZXJlckZhY3RvcnkoKS5zZXRWYWxpZGF0aW5nKHJlbmRlcmVyVmFsaWRhdGlvbik7Ci0KLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfQotCQotICAgIHB1YmxpYyB2b2lkIHNldFJlbmRlcmVyVmFsaWRhdGlvbihib29sZWFuIHJlbmRlcmVyVmFsaWRhdGlvbikKLSAgICB7Ci0gICAgCXRoaXMucmVuZGVyZXJWYWxpZGF0aW9uID0gcmVuZGVyZXJWYWxpZGF0aW9uOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9BbnRXb3Jrc3BhY2VTYXZlQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tYW5kL0FudFdvcmtzcGFjZVNhdmVDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMDAwOTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tYW5kL0FudFdvcmtzcGFjZVNhdmVDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA1MDEgICAxNzgxMjkgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIHdvcmtzcGFjZSByZXBvcnRzICJjcmFzaCBkZXRlY3RlZCIgYWZ0ZXIgcnVubmluZyBXUyBhbnQgdGFzayAoY21kbGluZSkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLXB1YmxpYyBjbGFzcyBBbnRXb3Jrc3BhY2VTYXZlQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIHsKLQkKLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBpbmZvKSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsKLQkJdHJ5IHsKLQkJCS8vIGF0dGVtcHQgdG8gc2F2ZSB0aGUgc3RhdGUgb2YgdGhlIHdvcmtzcGFjZQotCQkJUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLnNhdmUodHJ1ZSwgbW9uaXRvcik7Ci0JCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQkJfQotCQljYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQl0aHJvdyBuZXcgRXhlY3V0aW9uRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLQkJfQotCX0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvQ2hlY2tGb3JTZXJ2aWNlUHJvamVjdENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9DaGVja0ZvclNlcnZpY2VQcm9qZWN0Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzU2NzQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9DaGVja0ZvclNlcnZpY2VQcm9qZWN0Q29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLlZhbGlkYXRpb25VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LlN0YXR1c0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLQotCi0vKioKLSAqIFRoaXMgY29tbWFuZCBjaGVja3MgdG8gc2VlIGlmIHRoZSBzZWxlY3RlZCBjbGllbnQgcHJvamVjdCBpcyB0aGUKLSAqIHNlcnZpY2UgcHJvamVjdC4gSWYgc28sIHRoZSB1c2VyIGlzIHdhcm5lZC4KLSAqLwotcHVibGljIGNsYXNzIENoZWNrRm9yU2VydmljZVByb2plY3RDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgLy9TZWxlY3Rpb25MaXN0Q2hvaWNlcyBydW50aW1lMkNsaWVudFR5cGVzOwotICBTdHJpbmcgY2xpZW50UHJvamVjdE5hbWU7Ci0gIFN0cmluZyB3c2RsVVJJOwotICBXZWJTZXJ2aWNlc1BhcnNlciB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgICAKLSAgcHVibGljIENoZWNrRm9yU2VydmljZVByb2plY3RDb21tYW5kKCkKLSAgewotICB9Ci0gIAotCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFByb2plY3ROYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gICAgY2xpZW50UHJvamVjdE5hbWUgPSBuYW1lOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRXc2RsVVJJKFN0cmluZyB3c2RsVVJJKQotICB7Ci0gICAgdGhpcy53c2RsVVJJID0gd3NkbFVSSTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyKQotICB7Ci0gICAgdGhpcy53ZWJTZXJ2aWNlc1BhcnNlciA9IHdlYlNlcnZpY2VzUGFyc2VyOwotICB9Ci0gIAotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlLkNvbW1hbmQjZXhlY3V0ZShvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uRW52aXJvbm1lbnQpCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotICAgIElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIGlmIChjbGllbnRQcm9qZWN0TmFtZT09bnVsbCB8fCB3c2RsVVJJPT1udWxsIHx8IHdzZGxVUkkubGVuZ3RoKCk9PTAgfHwgd2ViU2VydmljZXNQYXJzZXI9PW51bGwpCi0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIAotICAgIGlmIChjbGllbnRQcm9qZWN0TmFtZT09bnVsbCB8fCBjbGllbnRQcm9qZWN0TmFtZS5sZW5ndGgoKT09MCkKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgCi0gICAgSVByb2plY3QgY2xpZW50UHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChjbGllbnRQcm9qZWN0TmFtZSk7Ci0gICAgVmFsaWRhdGlvblV0aWxzIHZ1ID0gbmV3IFZhbGlkYXRpb25VdGlscygpOwotICAgIGJvb2xlYW4gaXNTZXJ2aWNlUHJvamVjdCA9IHZ1LmlzUHJvamVjdFNlcnZpY2VQcm9qZWN0KGNsaWVudFByb2plY3QsIHdzZGxVUkksIHdlYlNlcnZpY2VzUGFyc2VyKTsKLSAgICBpZiAoaXNTZXJ2aWNlUHJvamVjdCkKLSAgICB7Ci0gICAgICBJU3RhdHVzIHdTdGF0dXMgPSBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKCBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1dBUk5fSVNfU0VSVklDRV9QUk9KRUNULCBuZXcgU3RyaW5nW117Y2xpZW50UHJvamVjdE5hbWV9KSApOwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQod1N0YXR1cyk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoU3RhdHVzRXhjZXB0aW9uIHNlKQotICAgICAgewotICAgICAgICAvL1VzZXIgZGVjaWRlZCB0byBhYm9ydC4gUmV0dXJuIGFuIGVycm9yIHN0YXR1cwotICAgICAgICBJU3RhdHVzIGVTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19VU0VSX0FCT1JURUQgKTsKLSAgICAgICAgcmV0dXJuIGVTdGF0dXM7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9HZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9HZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg3ODI2MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvR2VuZXJhdGVIYW5kbGVyU2tlbGV0b25Db21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQwNCAgIDEzNDkxMyBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUgICAgICAKLSAqIDIwMDYwNTE3ICAgMTQyMDI3IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5NdWx0aVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uSGFuZGxlclNlcnZpY2VSZWZIb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LkhhbmRsZXJUYWJsZUl0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbW9uLkZpbGVSZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZWNsaXBzZS5FbnZpcm9ubWVudFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLQotCi1wdWJsaWMgY2xhc3MgR2VuZXJhdGVIYW5kbGVyU2tlbGV0b25Db21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBJUGF0aCBvdXRwdXRMb2NhdGlvbl87Ci0gIHByaXZhdGUgYm9vbGVhbiBnZW5Ta2VsZXRvbl87Ci0gIHByaXZhdGUgU3RyaW5nIGhhbmRsZXJOYW1lRm9yRWRpdF8gPSBudWxsOwotICAKLSAgcHJpdmF0ZSBIYW5kbGVyU2VydmljZVJlZkhvbGRlcltdIGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXzsKLSAgcHJpdmF0ZSBIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJbXWhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl87Ci0gIAotICBwdWJsaWMgR2VuZXJhdGVIYW5kbGVyU2tlbGV0b25Db21tYW5kKCkKLSAgewotICB9Ci0gIAotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gIAotICAgIElTdGF0dXMgICAgIHJldHVyblN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gIAkKLSAgCWlmICghZ2VuU2tlbGV0b25fKQlyZXR1cm4gcmV0dXJuU3RhdHVzOyAKLSAgCQotICAgICAgLy8gZm9ybSB0aGUgbWFwIG9mIGNsYXNzbmFtZSB0byBsb2NhdGlvbnMKLSAgICAgIGlmIChoYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfIT1udWxsKXsKLSAgICAgICAgZm9yIChpbnQgaT0wO2k8aGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyXy5sZW5ndGg7aSsrKXsKLSAgICAgICAgICBIYXNodGFibGUgaGFuZGxlclRhYmxlID0gbmV3IEhhc2h0YWJsZSgpOwotICAgICAgICAgIElQYXRoIG91dFBhdGggPSBoYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfW2ldLmdldFNvdXJjZU91dHB1dFBhdGgoKTsKLSAgICAgICAgICBMaXN0IGhhbmRsZXJzID0gaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyX1tpXS5nZXRIYW5kbGVyTGlzdCgpOwotICAgICAgICAgIGZvciAoaW50IGo9MDtqPGhhbmRsZXJzLnNpemUoKTtqKyspewotICAgICAgICAgICAgSGFuZGxlclRhYmxlSXRlbSBodGkgPSAoSGFuZGxlclRhYmxlSXRlbSloYW5kbGVycy5nZXQoaik7Ci0gICAgICAgICAgICBTdHJpbmcgY2xhc3NOYW1lID0gaHRpLmdldEhhbmRsZXJDbGFzc05hbWUoKTsKLSAgICAgICAgICAgIGlmIChjbGFzc05hbWUhPW51bGwgJiYgb3V0UGF0aCE9bnVsbCkKLSAgICAgICAgICAgICAgaGFuZGxlclRhYmxlLnB1dChjbGFzc05hbWUsIG91dFBhdGgpOwotICAgICAgICAgIH0KLSAgICAgICAgICByZXR1cm5TdGF0dXMgPSBnZW5IYW5kbGVyc0NsYXNzZXMoaGFuZGxlclRhYmxlLCBtb25pdG9yKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBmb3IgKGludCBpPTA7aTxoYW5kbGVyU2VydmljZVJlZkhvbGRlcl8ubGVuZ3RoO2krKyl7Ci0gICAgICAgICAgSGFzaHRhYmxlIGhhbmRsZXJUYWJsZSA9IG5ldyBIYXNodGFibGUoKTsKLSAgICAgICAgICBJUGF0aCBvdXRQYXRoID0gaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfW2ldLmdldFNvdXJjZU91dHB1dFBhdGgoKTsKLSAgICAgICAgICBMaXN0IGhhbmRsZXJzID0gaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfW2ldLmdldEhhbmRsZXJMaXN0KCk7Ci0gICAgICAgICAgZm9yIChpbnQgaj0wO2o8aGFuZGxlcnMuc2l6ZSgpO2orKyl7Ci0gICAgICAgICAgICBIYW5kbGVyVGFibGVJdGVtIGh0aSA9IChIYW5kbGVyVGFibGVJdGVtKWhhbmRsZXJzLmdldChqKTsKLSAgICAgICAgICAgIFN0cmluZyBjbGFzc05hbWUgPSBodGkuZ2V0SGFuZGxlckNsYXNzTmFtZSgpOwotICAgICAgICAgICAgaWYgKGNsYXNzTmFtZSE9bnVsbCAmJiBvdXRQYXRoIT1udWxsKQotICAgICAgICAgICAgICBoYW5kbGVyVGFibGUucHV0KGNsYXNzTmFtZSwgb3V0UGF0aCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVyblN0YXR1cyA9IGdlbkhhbmRsZXJzQ2xhc3NlcyhoYW5kbGVyVGFibGUsIG1vbml0b3IpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgCi0gCi0gICAgcmV0dXJuIHJldHVyblN0YXR1czsKLQotICB9Ci0gIAotICBwcml2YXRlIElTdGF0dXMgZ2VuSGFuZGxlcnNDbGFzc2VzKEhhc2h0YWJsZSBoYW5kbGVyc0ZvckdlbiwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKXsKLSAgICBJRW52aXJvbm1lbnQgZW52ICAgICAgICAgID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICBNdWx0aVN0YXR1cyBzdGF0dXMgICAgICAgPSBudWxsOwotICAgIElTdGF0dXMgICAgIHJldHVyblN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgYm9vbGVhbiBlcnJvciA9IGZhbHNlOwotICAgIAotICAgIElTdGF0dXMgd3JpdGVTdGF0dXM7ICAgIAotICAgIEVudW1lcmF0aW9uIGtleXMgPSBoYW5kbGVyc0Zvckdlbi5rZXlzKCk7Ci0gICAgd2hpbGUgKGtleXMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgU3RyaW5nIGNsYXNzTmFtZSA9IChTdHJpbmcpa2V5cy5uZXh0RWxlbWVudCgpOwotICAgICAgICB3cml0ZVN0YXR1cyA9IHdyaXRlRmlsZShlbnYsIGNsYXNzTmFtZSwgKElQYXRoKWhhbmRsZXJzRm9yR2VuLmdldChjbGFzc05hbWUpLCBtb25pdG9yICk7Ci0gICAgICAgIC8vIGhhbmRsZSBzdGF0dXMgcmV0dXJuCi0gICAgICAgIGlmICh3cml0ZVN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgeyAgLy8gd3JpdGUgc3RhdHVzIGlzIE9LIG9yIEVSUk9SCi0gICAgICAgICAgICBlcnJvciA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc3RhdHVzID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5tdWx0aVN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9HRU5FUkFURV9IQU5ETEVSX1NLRUxFVE9OLCBuZXcgSVN0YXR1c1swXSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdHVzLmFkZCh3cml0ZVN0YXR1cyk7Ci0gICAgICAgIH0gCi0gICAgfQotICAgIAotICAgIGlmIChlcnJvcikgCi0gICAgewotICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgICByZXR1cm5TdGF0dXMgPSBzdGF0dXM7Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXR1cm5TdGF0dXM7Ci0gICAgCi0gIH0KLSAgCi0gIAotICBwcml2YXRlIElTdGF0dXMgd3JpdGVGaWxlIChJRW52aXJvbm1lbnQgZW52LCBTdHJpbmcgY2xhc3NOYW1lLCBJUGF0aCBvdXRwdXRMb2NhdGlvbiwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkgCi0gIHsKLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgCWludCBpbmRleDsKLSAgCQotICAJU3RyaW5nIHNpbXBsZUNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKLSAgCVN0cmluZyBwYWNrYWdlTmFtZSA9IG51bGw7Ci0gIAlJUGF0aCBmaWxlUGF0aCA9IG91dHB1dExvY2F0aW9uOwotICAJaWYgKGNsYXNzTmFtZSAhPSBudWxsKSB7Ci0gIAkJaW5kZXggPSBjbGFzc05hbWUubGFzdEluZGV4T2YoJy4nKTsKLSAgCQlpZiAoaW5kZXggIT0gLTEpIHsKLSAgCQkJc2ltcGxlQ2xhc3NOYW1lID0gY2xhc3NOYW1lLnN1YnN0cmluZyhpbmRleCArIDEpOwotICAJCQlwYWNrYWdlTmFtZSA9IGNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpOwotICAJCQkKLSAgCQkgIAlTdHJpbmcgcGFja2FnZVNlZ21lbnQgPSBwYWNrYWdlTmFtZTsKLSAgCQkgIAlpbnQgaiA9IDA7Ci0gIAkJICAJaiA9IHBhY2thZ2VTZWdtZW50LmluZGV4T2YoJy4nKTsKLSAgCQkgIAl3aGlsZSAoaiAhPSAtMSkgewotICAJCSAgCQlmaWxlUGF0aCA9IGZpbGVQYXRoLmFwcGVuZChwYWNrYWdlU2VnbWVudC5zdWJzdHJpbmcoMCwgaikpOwotICAJCSAgCQlwYWNrYWdlU2VnbWVudCA9IHBhY2thZ2VTZWdtZW50LnN1YnN0cmluZyhqICsgMSk7Ci0gIAkJICAJCWogPSBwYWNrYWdlU2VnbWVudC5pbmRleE9mKCcuJyk7Ci0gIAkJICAJfQotICAJCSAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLmFwcGVuZChwYWNrYWdlU2VnbWVudCk7Ci0gIAkJfQotICAJCWVsc2UgewotICAJCSAgcGFja2FnZU5hbWUgPSAiIjsKLSAgCQl9Ci0gIAl9Ci0gIAkKLSAgCWZpbGVQYXRoID0gZmlsZVBhdGguYXBwZW5kKHNpbXBsZUNsYXNzTmFtZSk7Ci0gIAkKLSAgCWZpbGVQYXRoID0gZmlsZVBhdGguYWRkRmlsZUV4dGVuc2lvbigiamF2YSIpOwotCi0gIAkvLyBjaGVjayBpZiBIYW5kbGVyIGFscmVhZHkgZXhpc3RzOyBkbyBub3Qgb3ZlcndyaXRlIGV4aXN0aW5nIEhhbmRsZXJzCi0gIAlJUmVzb3VyY2Ugd29ya3NwYWNlUmVzID0gUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UoZmlsZVBhdGgpOwotICAJaWYgKHdvcmtzcGFjZVJlcyE9bnVsbCAmJiB3b3Jrc3BhY2VSZXMuZXhpc3RzKCkpIHsKLSAgCQlyZXR1cm4gc3RhdHVzOwotICAJfQotICAJCi0gIAlpZiAoaGFuZGxlck5hbWVGb3JFZGl0XyA9PSBudWxsKXsKLSAgCQloYW5kbGVyTmFtZUZvckVkaXRfID0gY2xhc3NOYW1lOwotICAgICAgICBvdXRwdXRMb2NhdGlvbl8gPSBvdXRwdXRMb2NhdGlvbjsKLSAgCX0KLSAgCQotICAJT3V0cHV0U3RyZWFtIG91dHB1dFN0cmVhbSA9IEZpbGVSZXNvdXJjZVV0aWxzLm5ld0ZpbGVPdXRwdXRTdHJlYW0oIEVudmlyb25tZW50VXRpbHMuZ2V0UmVzb3VyY2VDb250ZXh0KGVudiksIGZpbGVQYXRoLCBtb25pdG9yLCBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpKTsKLSAgCS8vIGNyZWF0ZSBidWZmZXJlZCB3cml0ZXIgZm9yIHdyaXRpbmcgZmlsZQotICAJQnVmZmVyZWRXcml0ZXIgYncgPSBuZXcgQnVmZmVyZWRXcml0ZXIobmV3IE91dHB1dFN0cmVhbVdyaXRlcihvdXRwdXRTdHJlYW0pKTsKLSAgCXRyeSB7Ci0gIAkJaWYgKHBhY2thZ2VOYW1lLmxlbmd0aCgpICE9IDApIHsKLSAgCQkJYncud3JpdGUoInBhY2thZ2UgIiArcGFja2FnZU5hbWUrIjsiKTsKLSAgCQkJYncubmV3TGluZSgpOwotICAJCQlidy5uZXdMaW5lKCk7Ci0gIAkJfQotICAJCWJ3LndyaXRlKCJpbXBvcnQgamF2YXgueG1sLnJwYy5oYW5kbGVyLkdlbmVyaWNIYW5kbGVyOyIpOwotICAJCWJ3Lm5ld0xpbmUoKTsKLSAgCQlidy53cml0ZSgiaW1wb3J0IGphdmF4LnhtbC5ycGMuaGFuZGxlci5NZXNzYWdlQ29udGV4dDsiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoImltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOyIpOwotICAJCWJ3Lm5ld0xpbmUoKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJCi0gIAkJYncud3JpdGUoInB1YmxpYyBjbGFzcyAiK3NpbXBsZUNsYXNzTmFtZSsiIGV4dGVuZHMgR2VuZXJpY0hhbmRsZXIiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoInsiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCQotICAJCWJ3LndyaXRlKCIgICBwdWJsaWMgUU5hbWVbXSBnZXRIZWFkZXJzICgpIik7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCIgICB7Iik7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCIgICAgICAvLyBGaWxsIGluIG1ldGhvZCBib2R5Iik7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCIgICAgICByZXR1cm4gbnVsbDsiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoIiAgIH0iKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCIgICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVSZXF1ZXN0KCBNZXNzYWdlQ29udGV4dCBjb250ZXh0ICkiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoIiAgIHsiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoIiAgICAgIC8vIEZpbGwgaW4gbWV0aG9kIGJvZHkgb3IgZGVsZXRlIG1ldGhvZCB0byB1c2UgR2VuZXJpY0hhbmRsZXIiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoIiAgICAgIHJldHVybiB0cnVlOyIpOwotICAJCWJ3Lm5ld0xpbmUoKTsKLSAgCQlidy53cml0ZSgiICAgfSIpOwotICAJCWJ3Lm5ld0xpbmUoKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoIiAgIHB1YmxpYyBib29sZWFuIGhhbmRsZVJlc3BvbnNlKCBNZXNzYWdlQ29udGV4dCBjb250ZXh0ICkiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoIiAgIHsiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoIiAgICAgIC8vIEZpbGwgaW4gbWV0aG9kIGJvZHkgb3IgZGVsZXRlIG1ldGhvZCB0byB1c2UgR2VuZXJpY0hhbmRsZXIgIik7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCIgICAgICByZXR1cm4gdHJ1ZTsiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoIiAgIH0iKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCIgICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVGYXVsdCggTWVzc2FnZUNvbnRleHQgY29udGV4dCApIik7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCIgICB7Iik7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCIgICAgICAvLyBGaWxsIGluIG1ldGhvZCBib2R5IG9yIGRlbGV0ZSBtZXRob2QgdG8gdXNlIEdlbmVyaWNIYW5kbGVyIik7Ci0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCIgICAgICByZXR1cm4gdHJ1ZTsiKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJYncud3JpdGUoIiAgIH0iKTsKLSAgCQlidy5uZXdMaW5lKCk7Ci0gIAkJCi0gIAkJYncubmV3TGluZSgpOwotICAJCWJ3LndyaXRlKCJ9Iik7Ci0gIAkJYncuY2xvc2UoKTsKLSAgCQlzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwkKLSAgCX0gCi0gICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpIAotICAgIHsKLSAgCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9XUklURV9GSUxFLCBuZXcgU3RyaW5nW117IGNsYXNzTmFtZSB9KSwgZSApOwotICAJCWlmIChidyAhPSBudWxsKSB7Ci0gIAkJCXRyeSB7Ci0gIAkJCQlidy5jbG9zZSgpOwotICAJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlMSkgewotICAJCQl9Ci0gIAkJfQotICAJfQotICAJcmV0dXJuIHN0YXR1czsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0R2VuU2tlbGV0b25FbmFibGVkKGJvb2xlYW4gZ2VuU2tlbGV0b24pCi0gIHsKLSAgCXRoaXMuZ2VuU2tlbGV0b25fID0gZ2VuU2tlbGV0b247Ci0gIH0KLSAgCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRQcm9qZWN0KCl7Ci0gIAlJUHJvamVjdCBwcm9qZWN0ID0gbnVsbDsKLSAgCWlmIChvdXRwdXRMb2NhdGlvbl8hPW51bGwpewotICAJCXByb2plY3QgPSBSZXNvdXJjZVV0aWxzLmdldFByb2plY3RPZihvdXRwdXRMb2NhdGlvbl8pOwotICAJfQotICAJcmV0dXJuIHByb2plY3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyBMaXN0IGdldENsYXNzTmFtZXMoKXsKLSAgCUxpc3QgY2xhc3NlcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgCWlmIChoYW5kbGVyTmFtZUZvckVkaXRfIT1udWxsKXsKLSAgCQljbGFzc2VzLmFkZChoYW5kbGVyTmFtZUZvckVkaXRfKTsKLSAgCX0KLSAgCXJldHVybiBjbGFzc2VzOwotICB9Ci0gIAotICAvKioKLSAgICogQW4gYXJyYXkgb2YgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVycwotICAgKiBAcmV0dXJuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIYW5kbGVyU2VydmljZVJlZkhvbGRlcihIYW5kbGVyU2VydmljZVJlZkhvbGRlcltdIGhhbmRsZXJIb2xkZXJzKXsKLSAgICB0aGlzLmhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXyA9IGhhbmRsZXJIb2xkZXJzOwotICB9Ci0gIAotICAvKioKLSAgICogQW4gYXJyYXkgb2YgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVycwotICAgKiBAcmV0dXJuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJzKEhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcltdIGhhbmRsZXJIb2xkZXJzKXsKLSAgICB0aGlzLmhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl8gPSBoYW5kbGVySG9sZGVyczsKLSAgfQotICAKLSAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9MaXN0T3B0aW9uc0NvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9MaXN0T3B0aW9uc0NvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUxYTdjMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvTGlzdE9wdGlvbnNDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMjsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXJUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJDb3JlOwotCi0vKioKLSAqIENvbW1hbmQgbGlzdHMgdmFsaWQgcHJvcGVydHkgdmFsdWVzIHdoZXJlIHJlcXVlc3RlZC4KLSAqIFJlcXVlc3RzIG1hZGUgdmlhIGEgQW50IHByb3BlcnR5IHZhbHVlIHNldHRpbmcgd2hpY2ggaXMgbWFwcGVkIHRvIHRoaXMgY29tbWFuZCBpbiB0aGUgcGx1Z2luLnhtbCAKLSAqLwotCi1wdWJsaWMgY2xhc3MgTGlzdE9wdGlvbnNDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gewotCi0JcHJpdmF0ZSBib29sZWFuIHJ1bnRpbWVzXyA9IGZhbHNlOwotCXByaXZhdGUgYm9vbGVhbiBzZXJ2ZXJzXyA9IGZhbHNlOwotCQotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pCi0JCQl0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsKLQkJCQkgIAkKLQkJaWYgKHJ1bnRpbWVzXykKLQkJewkJCQkKLQkJCQlTdHJpbmdbXSB0eXBlSWRzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmljZVR5cGVMYWJlbHMoKS5nZXRJZHNfKCk7Ci0JCQkgICAgVmVjdG9yIHJ1bnRpbWVJZHMgPSBuZXcgVmVjdG9yKCk7Ci0JCQkJCWZvciAoaW50IGsgPSAwOyBrIDwgdHlwZUlkcy5sZW5ndGg7IGsrKykgewotCQkJCQkJCi0JCQkJCQlTdHJpbmcgdHlwZUlkID0gdHlwZUlkc1trXTsJCQkJCQkKLQkJCQkgICAgCVN0cmluZ1tdIHJ1bnRpbWVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZXNCeVNlcnZpY2VUeXBlKHR5cGVJZCk7CQkJCSAgICAJCi0JCQkJCQkJCSAgICAKLQkJCQkgICAgCWZvciAoaW50IGogPSAwOyBqIDwgcnVudGltZXMubGVuZ3RoOyBqKyspIHsKLQkJCQkgICAgCQlTdHJpbmcgcnVudGltZSA9IHJ1bnRpbWVzW2pdOwotCQkJCSAgICAJCWlmICghcnVudGltZUlkcy5jb250YWlucyhydW50aW1lKSkKLQkJCQkgICAgCQl7Ci0JCQkJICAgIAkJCXJ1bnRpbWVJZHMuYWRkKHJ1bnRpbWUpOwkKLQkJCQkgICAgCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCi0JCQkJCVN0YXR1cyBzdGF0dXNPYmogPSBuZXcgU3RhdHVzKElTdGF0dXMuSU5GTywgCi0JCQkJCQkJV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uSUQsCi0JCQkJCQkJSVN0YXR1cy5PSywKLQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0lORk9fQU5UX1JVTlRJTUVfSEVBRElORywgCi0JCQkJCQkJbnVsbCk7CQkJCQkKLQkJCQkJZ2V0RW52aXJvbm1lbnQoKS5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0SW5mbyhzdGF0dXNPYmopOwotCQkJCQkKLQkgICAgICAgIAotCQkJZm9yIChJdGVyYXRvciBpdGVyYXRvciA9IHJ1bnRpbWVJZHMuaXRlcmF0b3IoKTsgaXRlcmF0b3IKLQkJCQkJLmhhc05leHQoKTspIHsJCQkKLQkJCQkgIGdldEVudmlyb25tZW50KCkuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEluZm8obmV3IFN0YXR1cyhJU3RhdHVzLklORk8sIAotCQkJCQkJV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uSUQsCi0JCQkJCQlJU3RhdHVzLk9LLCAKLQkJCQkJCU5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfSU5GT19BTlRfU0VSVkVSX1JVTlRJTUUsCi0JCQkJCQkJCWl0ZXJhdG9yLm5leHQoKSksIG51bGwpKTsKLQkJCX0KLQkJCQkKLQkJCQotCQkgICAgU3RyaW5nW10gY2xpZW50UnVudGltZXMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRBbGxSdW50aW1lc0ZvckNsaWVudFNpZGUoKTsKLQkJICAgIAotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBjbGllbnRSdW50aW1lcy5sZW5ndGg7IGkrKykgewkJCQkKLQkJCQkKLQkJCQlnZXRFbnZpcm9ubWVudCgpLmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRJbmZvKG5ldyBTdGF0dXMoSVN0YXR1cy5JTkZPLCAKLQkJCQkJCVdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLklELAotCQkJCQkJSVN0YXR1cy5PSywgCi0JCQkJCQlOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0lORk9fQU5UX0NMSUVOVF9SVU5USU1FLAotCQkJCQkJCQljbGllbnRSdW50aW1lc1tpXSksIG51bGwpKTsKLQkJCX0KLQkJfQotCQkKLQkJaWYgKHNlcnZlcnNfKQotCQl7CQkJCi0JCQlnZXRFbnZpcm9ubWVudCgpLmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRJbmZvKG5ldyBTdGF0dXMoSVN0YXR1cy5JTkZPLCAKLQkJCQkJV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uSUQsCi0JCQkJCUlTdGF0dXMuT0ssIAotCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0lORk9fQU5UX1NFUlZFUl9IRUFESU5HLCBudWxsKSk7Ci0JCQkKLQkJCUlTZXJ2ZXJUeXBlW10gc2VydmVyVHlwZXMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlclR5cGVzKCk7Ci0JCSAgICAgIGZvciAoaW50IGk9MDsgaTxzZXJ2ZXJUeXBlcy5sZW5ndGg7IGkrKykKLQkJICAgICAgewkJICAgICAgICAKLQkJCQlnZXRFbnZpcm9ubWVudCgpLmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRJbmZvKG5ldyBTdGF0dXMoSVN0YXR1cy5JTkZPLCAKLQkJCQkJCVdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLklELAotCQkJCQkJSVN0YXR1cy5PSywgCi0JCQkJCQlOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0lORk9fQU5UX1NFUlZFUiwKLQkJCQkJCQkJc2VydmVyVHlwZXNbaV0uZ2V0SWQoKSksIG51bGwpKTsKLQotCQkgICAgICB9Ci0JCX0gIAotCQkgIAotCQlyZXR1cm4gT0tfU1RBVFVTOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXRMaXN0UnVudGltZXMoYm9vbGVhbiB2YWx1ZSkKLQl7CQkKLQkJcnVudGltZXNfPXZhbHVlOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXRMaXN0U2VydmVycyhib29sZWFuIHZhbHVlKQotCXsJCQotCQlzZXJ2ZXJzXz12YWx1ZTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvT3BlbkphdmFFZGl0b3JDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvT3BlbkphdmFFZGl0b3JDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzYmVkZDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tYW5kL09wZW5KYXZhRWRpdG9yQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MDQgMTM0OTEzICAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1ICAgICAgIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuam9icy5Kb2I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUphdmFQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC51aS5KYXZhVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkucHJvZ3Jlc3MuVUlKb2I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotCi1wdWJsaWMgY2xhc3MgT3BlbkphdmFFZGl0b3JDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBMaXN0IGNsYXNzTmFtZXM7Ci0gIHByaXZhdGUgSVByb2plY3QgcHJvamVjdDsKLSAgcHJpdmF0ZSBib29sZWFuIGlzRW5hYmxlZF8gPSB0cnVlOyAgLy8gaXMgdHJ1ZSBieSBkZWZhdWx0Ci0KLSAgcHVibGljIE9wZW5KYXZhRWRpdG9yQ29tbWFuZCgpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgaWYgKGlzRW5hYmxlZF8pIHsKLSAgICAgIE9wZW5KYXZhRWRpdG9ySm9iIGpvYiA9IG5ldyBPcGVuSmF2YUVkaXRvckpvYihjbGFzc05hbWVzLCBwcm9qZWN0KTsKLSAgICAgIGpvYi5zZXRQcmlvcml0eShKb2IuTE9ORyk7Ci0gICAgICBqb2Iuc2NoZWR1bGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRDbGFzc05hbWVzKExpc3QgY2xhc3NOYW1lcykKLSAgewotICAgIHRoaXMuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KElQcm9qZWN0IHByb2plY3QpCi0gIHsKLSAgICB0aGlzLnByb2plY3QgPSBwcm9qZWN0OwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJc0VuYWJsZWQoYm9vbGVhbiBpc0VuYWJsZWQpewotICAgIHRoaXMuaXNFbmFibGVkXyA9IGlzRW5hYmxlZDsKLSAgfQotICAKLSAgcHJpdmF0ZSBjbGFzcyBPcGVuSmF2YUVkaXRvckpvYiBleHRlbmRzIFVJSm9iCi0gIHsKLSAgICBwcml2YXRlIExpc3QgY2xhc3NOYW1lczsKLSAgICBwcml2YXRlIElQcm9qZWN0IHByb2plY3Q7Ci0KLSAgICBwdWJsaWMgT3BlbkphdmFFZGl0b3JKb2IoTGlzdCBjbGFzc05hbWVzLCBJUHJvamVjdCBwcm9qZWN0KQotICAgIHsKLSAgICAgIHN1cGVyKCJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5PcGVuSmF2YUVkaXRvckpvYiIpOwotICAgICAgdGhpcy5jbGFzc05hbWVzID0gY2xhc3NOYW1lczsKLSAgICAgIHRoaXMucHJvamVjdCA9IHByb2plY3Q7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBJU3RhdHVzIHJ1bkluVUlUaHJlYWQoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKQotICAgIHsKLSAgICAgIGlmIChwcm9qZWN0ICE9IG51bGwgJiYgY2xhc3NOYW1lcyAhPSBudWxsKQotICAgICAgewotICAgICAgICBJSmF2YVByb2plY3QgamF2YVByb2plY3QgPSBKYXZhQ29yZS5jcmVhdGUocHJvamVjdCk7Ci0gICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBjbGFzc05hbWVzLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgY2xhc3NOYW1lID0gKFN0cmluZylpdC5uZXh0KCk7Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgSVR5cGUgdHlwZSA9IGphdmFQcm9qZWN0LmZpbmRUeXBlKGNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBKYXZhVUkub3BlbkluRWRpdG9yKHR5cGUpOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXMuRVJST1IsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLklELCAwLCBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1VOQUJMRV9UT19PUEVOX0pBVkFfRURJVE9SLCBuZXcgU3RyaW5nW117Y2xhc3NOYW1lLCBwcm9qZWN0LmdldE5hbWUoKX0pLCB0KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChwcm9qZWN0IT1udWxsIHx8IGNsYXNzTmFtZXMuaXNFbXB0eSgpKXsKLSAgICAgICAgLy8gZG8gbm90aGluZyA7IG5vdGhpbmcgdG8gb3BlbgotICAgICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIG5ldyBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXMuRVJST1IsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLklELCAwLCBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1VOQUJMRV9UT19PUEVOX0pBVkFfRURJVE9SLCBuZXcgU3RyaW5nW117Y2xhc3NOYW1lcyAhPSBudWxsID8gY2xhc3NOYW1lcy50b1N0cmluZygpIDogIiIsIHByb2plY3QgIT0gbnVsbCA/IHByb2plY3QuZ2V0TmFtZSgpIDogIiJ9KSwgbnVsbCk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvU3RhcnRTZXJ2ZXJDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvU3RhcnRTZXJ2ZXJDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4M2YwMTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tYW5kL1N0YXJ0U2VydmVyQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQyNiAgIDE2MjI4NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgU2VydmVyIHB1Ymxpc2ggY2FuY2VsIGJ1dHRvbiB1bmF2YWlsYWJsZQotICogMjAwODA1MDkgICAxNjUzMjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4sIFVzZSBBUEkgZnJvbSBJU2VydmVyIHRvIGNhbGwgc2hvdWxkUHVibGlzaCBhbmQgc2hvdWxkUmVzdGFydAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQ7Ci0KLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlLklMYXVuY2hNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuUHJvZ3Jlc3NNb25pdG9yRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLm9wZXJhdGlvbi5JUnVubmFibGVXaXRoUHJvZ3Jlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuRW52aXJvbm1lbnRTZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJDb3JlOwotCi0vKioKLSAqIChSZSlTdGFydHMgYW5kIHB1Ymxpc2hlcyB0aGUgc2VydmVyIHNwZWNpZmVkIGJ5IHRoZSBzZXJ2ZXJJbnN0YW5jZUlkIGF0dHJpYnV0ZS4KLSAqIAotICoKLSAqLwotcHVibGljIGNsYXNzIFN0YXJ0U2VydmVyQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgSUxvZyBsb2c7Ci0gIHByaXZhdGUgYm9vbGVhbiBkb0FzeW5jUHVibGlzaF87Ci0gIAotICBwcml2YXRlIFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkOwotCQotICAKLSAgcHVibGljIFN0YXJ0U2VydmVyQ29tbWFuZCgpCi0gIHsKLSAgICBsb2cgICAgICAgICAgICAgPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZUxvZygpOwotICAgIGRvQXN5bmNQdWJsaXNoXyA9IHRydWU7Ci0gIH0KLQkgCi0gIHB1YmxpYyBTdGFydFNlcnZlckNvbW1hbmQoIGJvb2xlYW4gZG9Bc3luY1B1Ymxpc2ggKQotICB7Ci0gICAgdGhpcygpOwotICAgIAotICAgIGRvQXN5bmNQdWJsaXNoXyA9IGRvQXN5bmNQdWJsaXNoOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0KLSAgICBJU2VydmVyIHNlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlcihzZXJ2ZXJJbnN0YW5jZUlkKTsKLSAgICBpZiAoc2VydmVyID09IG51bGwpCi0gICAgewotICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfSU5TVEFOQ0VfTk9UX0ZPVU5EKTsKLSAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotCi0gICAgaW50IHNlcnZlclN0YXRlID0gc2VydmVyLmdldFNlcnZlclN0YXRlKCk7Ci0KLSAgICAvLyAgUHVibGlzaCBpZiByZXF1aXJlZAotICAgIGlmIChzZXJ2ZXIuc2hvdWxkUHVibGlzaCgpKSB7Ci0gICAgCWlmIChzZXJ2ZXIuY2FuUHVibGlzaCgpLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5PSykKLSAgICAgICAgewotICAgICAgICAgIHN0YXR1cyA9IHB1Ymxpc2goc2VydmVyLCBJU2VydmVyLlBVQkxJU0hfSU5DUkVNRU5UQUwsIG1vbml0b3IgKTsKLSAgICAgICAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vICBzdGFydC9yZXN0YXJ0IHNlcnZlciBpZiByZXF1aXJlZAotICAgIAkKLSAgICBzd2l0Y2ggKHNlcnZlclN0YXRlKQotICAgIHsKLSAgICAgIGNhc2UgSVNlcnZlci5TVEFURV9TVE9QUEVEOgotICAgICAgICBpZiAoc2VydmVyLmNhblN0YXJ0KElMYXVuY2hNYW5hZ2VyLlJVTl9NT0RFKS5nZXRTZXZlcml0eSgpPT1JU3RhdHVzLk9LKQotICAgICAgICB7Ci0gICAgICAgICAgc3RhdHVzID0gc3RhcnQoc2VydmVyLCBtb25pdG9yICk7Ci0gICAgICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdHVzOwotICAgICAgICAgIH0gICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIElTZXJ2ZXIuU1RBVEVfU1RBUlRFRDogICAgCQotICAgIAlib29sZWFuIHNob3VsZFJlc3RhcnQgPSBzZXJ2ZXIuc2hvdWxkUmVzdGFydCgpOyAgICAJCi0gICAgCQotICAgIAlpZiAoc2hvdWxkUmVzdGFydCAmJiBzZXJ2ZXIuY2FuUmVzdGFydChJTGF1bmNoTWFuYWdlci5SVU5fTU9ERSkuZ2V0U2V2ZXJpdHkoKT09SVN0YXR1cy5PSykKLSAgICAgICAgewotICAgICAgICAgIHN0YXR1cyA9IHJlc3RhcnQoc2VydmVyLCBtb25pdG9yICk7Ci0gICAgICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdHVzOwotICAgICAgICAgIH0gICAgICAgCi0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotCi0gIHByaXZhdGUgSVN0YXR1cyBwdWJsaXNoKGZpbmFsIElTZXJ2ZXIgc2VydmVyLCBmaW5hbCBpbnQga2luZCwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLSAgewotICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICBmaW5hbCBJU3RhdHVzW10gaXN0YXR1cyA9IG5ldyBJU3RhdHVzWzFdOyAKLSAgICBtb25pdG9yLnN1YlRhc2soQ29uc3VtcHRpb25NZXNzYWdlcy5QUk9HUkVTU19JTkZPX1BVQkxJU0hJTkdfU0VSVkVSKTsKLSAgICBJUnVubmFibGVXaXRoUHJvZ3Jlc3MgcnVubmFibGUgPSBuZXcgSVJ1bm5hYmxlV2l0aFByb2dyZXNzKCkKLQl7Ci0gIAkJcHVibGljIHZvaWQgcnVuKElQcm9ncmVzc01vbml0b3Igc2hlbGxNb25pdG9yKSB0aHJvd3MgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24KLQkJewotICAJCQlpc3RhdHVzWzBdID0gc2VydmVyLnB1Ymxpc2goa2luZCwgc2hlbGxNb25pdG9yKTsKLQkJfSAgCQkKLQl9OwotCQotCXRyeQotCXsKLQkJaWYoIGRvQXN5bmNQdWJsaXNoXyApCi0JCXsJCi0JCSAgUHJvZ3Jlc3NNb25pdG9yRGlhbG9nIGRpYWxvZyA9IG5ldyBQcm9ncmVzc01vbml0b3JEaWFsb2cobnVsbCk7Ci0JCSAgZGlhbG9nLnJ1bih0cnVlLCB0cnVlLCBydW5uYWJsZSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCSAgcnVubmFibGUucnVuKCBtb25pdG9yICk7Ci0JCX0KLQkJCi0JfQotCWNhdGNoKEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gaXRlKQotCXsKLQkgIGlzdGF0dXNbMF0gPSBuZXcgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1cyggSVN0YXR1cy5FUlJPUiwgImlkIiwgMCwgaXRlLmdldE1lc3NhZ2UoKSwgaXRlICk7Ci0JICBpdGUucHJpbnRTdGFja1RyYWNlKCk7Ci0JfQotCWNhdGNoKEludGVycnVwdGVkRXhjZXB0aW9uIGllKQotCXsKLQkgIGlzdGF0dXNbMF0gPSBuZXcgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1cyggSVN0YXR1cy5FUlJPUiwgImlkIiwgMCwgaWUuZ2V0TWVzc2FnZSgpLCBpZSApOwotCSAgaWUucHJpbnRTdGFja1RyYWNlKCk7Ci0JfQotICAgIAotICAgIAotCWlmIChpc3RhdHVzWzBdLmdldFNldmVyaXR5KCkgIT0gSVN0YXR1cy5PSykKLSAgICB7Ci0gICAgICBzdGF0dXMgPSBpc3RhdHVzWzBdOwotICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuQ0FOQ0VMKQotICAgIAkgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCIiKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotICAgIAotICAgIGxvZy5sb2coSUxvZy5JTkZPLCA1MDUxLCB0aGlzLCAicHVibGlzaFByb2plY3QiLCAiSVNlcnZlcj0iICsgc2VydmVyICsgIiwgUHVibGlzaCBjb21tYW5kIGNvbXBsZXRlZCIpOwotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLQotICBwcml2YXRlIElTdGF0dXMgcmVzdGFydChJU2VydmVyIHNlcnZlciwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLSAgewotICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBtb25pdG9yLnN1YlRhc2soQ29uc3VtcHRpb25NZXNzYWdlcy5QUk9HUkVTU19JTkZPX1NUQVJUSU5HX1NFUlZFUik7Ci0gICAgICBzZXJ2ZXIuc3luY2hyb25vdXNSZXN0YXJ0KElMYXVuY2hNYW5hZ2VyLlJVTl9NT0RFLCBtb25pdG9yKTsKLSAgICAgIGxvZy5sb2coSUxvZy5JTkZPLCA1MDUyLCB0aGlzLCAiZXhlY3V0ZSIsICJJU2VydmVyPSIgKyBzZXJ2ZXIgKyAiLCBSZXN0YXJ0IGNvbW1hbmQgY29tcGxldGVkIik7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9TRVJWRVIsIGUpOwotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0KLSAgfQotCi0gIHByaXZhdGUgSVN0YXR1cyBzdGFydChJU2VydmVyIHNlcnZlciwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLSAgewotICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBtb25pdG9yLnN1YlRhc2soQ29uc3VtcHRpb25NZXNzYWdlcy5QUk9HUkVTU19JTkZPX1NUQVJUSU5HX1NFUlZFUik7Ci0gICAgICBzZXJ2ZXIuc3luY2hyb25vdXNTdGFydChJTGF1bmNoTWFuYWdlci5SVU5fTU9ERSwgbW9uaXRvcik7Ci0gICAgICBsb2cubG9nKElMb2cuSU5GTywgNTA1MywgdGhpcywgImV4ZWN1dGUiLCAiSVNlcnZlcj0iICsgc2VydmVyICsgIiwgU3RhcnQgY29tbWFuZCBjb21wbGV0ZWQiKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1NFUlZFUiwgZSk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZlckluc3RhbmNlSWQoU3RyaW5nIHNlcnZlckluc3RhbmNlSWQpCi0gIHsKLSAgICB0aGlzLnNlcnZlckluc3RhbmNlSWQgPSBzZXJ2ZXJJbnN0YW5jZUlkOwotICB9CQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tYW5kL1dTSU5vbkNvbXBsaWFudFJ1bnRpbWVDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvV1NJTm9uQ29tcGxpYW50UnVudGltZUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA3Y2RhZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvV1NJTm9uQ29tcGxpYW50UnVudGltZUNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyMCAgIDEyMDcxNCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuV3N0V1NQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlcy5QZXJzaXN0ZW50V1NJQVBDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlcy5QZXJzaXN0ZW50V1NJU1NCUENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLldTSUNvbXBsaWFuY2VVdGlsczsKLQotCi0KLXB1YmxpYyBjbGFzcyBXU0lOb25Db21wbGlhbnRSdW50aW1lQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0KLSAgcHJpdmF0ZSBJUHJvamVjdCBzZXJ2aWNlUHJvamVjdF87Ci0JCi0gIHB1YmxpYyBXU0lOb25Db21wbGlhbnRSdW50aW1lQ29tbWFuZCgpCi0gIHsKLSAgfSAKLSAgCi0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotICAgIAotICAJUGVyc2lzdGVudFdTSVNTQlBDb250ZXh0IHdzaVNTQlBDb250ZXh0ID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRXU0lTU0JQQ29udGV4dCgpOyAKLSAgCVBlcnNpc3RlbnRXU0lBUENvbnRleHQgd3NpQVBDb250ZXh0ID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRXU0lBUENvbnRleHQoKTsgCi0gICAgVmVjdG9yIHN0YXR1c1NTQlAgPSBuZXcgVmVjdG9yKCk7Ci0gICAgc3RhdHVzU1NCUC5hZGQoIG5ldyBTdGF0dXMoIFdTSUNvbXBsaWFuY2VVdGlscy5nZXRXU0lTZXZlcml0eShzZXJ2aWNlUHJvamVjdF8sIHdzaVNTQlBDb250ZXh0KSwgImlkIiwgMCwKLSAgICAgICAgV3N0V1NQbHVnaW5NZXNzYWdlcy5XU0lfU1NCUF9JTkNPTVBMSUFOVF9SVU5USU1FLCBudWxsICkgKTsKLSAgICBTdGF0dXNbXSBzdGF0dXNlc1NTQlAgPSAoU3RhdHVzW10pIHN0YXR1c1NTQlAudG9BcnJheShuZXcgU3RhdHVzW3N0YXR1c1NTQlAuc2l6ZSgpXSk7Ci0gICAgCi0gICAgVmVjdG9yIHN0YXR1c0FQID0gbmV3IFZlY3RvcigpOwotICAgIHN0YXR1c0FQLmFkZCggbmV3IFN0YXR1cyggV1NJQ29tcGxpYW5jZVV0aWxzLmdldFdTSVNldmVyaXR5KHNlcnZpY2VQcm9qZWN0Xywgd3NpQVBDb250ZXh0KSwgImlkIiwgMCwgCi0gICAgCQlXc3RXU1BsdWdpbk1lc3NhZ2VzLldTSV9BUF9JTkNPTVBMSUFOVF9SVU5USU1FLCBudWxsICkpOwotICAgIFN0YXR1c1tdIHN0YXR1c2VzQVAgPSAoU3RhdHVzW10pIHN0YXR1c0FQLnRvQXJyYXkobmV3IFN0YXR1c1tzdGF0dXNBUC5zaXplKCldKTsKLQotICAgIGlmIChXU0lDb21wbGlhbmNlVXRpbHMuY2hlY2tXU0lDb21wbGlhbmNlIChlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCksIHN0YXR1c2VzQVAsIHNlcnZpY2VQcm9qZWN0Xywgd3NpQVBDb250ZXh0KSkgCi0gICAgewotICAgIAlpZiAoV1NJQ29tcGxpYW5jZVV0aWxzLmNoZWNrV1NJQ29tcGxpYW5jZSAoZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLCBzdGF0dXNlc1NTQlAsIHNlcnZpY2VQcm9qZWN0Xywgd3NpU1NCUENvbnRleHQpKSAKLSAgICAgIHsKLSAgICAJCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgIAl9IAotICAgICAgZWxzZSAKLSAgICAgIHsKLSAgICAJICAvLyBTZXQgbWVzc2FnZSB0byBlbXB0eSBzdHJpbmcgc28gdGhhdCBhbiBlcnJvciBkaWFsb2cgZG9lcwotICAgIAkgIC8vIG5vdCBwb3AtdXAgdGVsbGluZyB0aGUgdXNlciB0aGF0IHRoZXkgY2Fubm90IGNvbnRpbnVlCi0gICAgCSAgLy8gYmVjYXVzZSB0aGV5IGNob29zZSBub3QgdG8gaWdub3JlIHRoZSBXUy1JIG5vbi1jb21wbGlhbmNlIHdhcm5pbmcuCi0gICAgCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoICIiICk7Ci0gICAgCX0KLSAgICB9IAotICAgIGVsc2UgCi0gICAgewotICAgIAkvLyBTZXQgbWVzc2FnZSB0byBlbXB0eSBzdHJpbmcgc28gdGhhdCBhbiBlcnJvciBkaWFsb2cgZG9lcwotICAJICAJLy8gbm90IHBvcC11cCB0ZWxsaW5nIHRoZSB1c2VyIHRoYXQgdGhleSBjYW5ub3QgY29udGludWUKLSAgCSAgCS8vIGJlY2F1c2UgdGhleSBjaG9vc2Ugbm90IHRvIGlnbm9yZSB0aGUgV1MtSSBub24tY29tcGxpYW5jZSB3YXJuaW5nLgotCQkgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggIiIgKTsKLQl9Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VQcm9qZWN0KElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0KSB7Ci0JdGhpcy5zZXJ2aWNlUHJvamVjdF8gPSBzZXJ2aWNlUHJvamVjdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tYW5kL2RhdGEvRWNsaXBzZUlQYXRoMlVSTFN0cmluZ1RyYW5zZm9ybWVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvZGF0YS9FY2xpcHNlSVBhdGgyVVJMU3RyaW5nVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EzNWUzOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvZGF0YS9FY2xpcHNlSVBhdGgyVVJMU3RyaW5nVHJhbnNmb3JtZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5kYXRhOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lcjsKLQotCi1wdWJsaWMgY2xhc3MgRWNsaXBzZUlQYXRoMlVSTFN0cmluZ1RyYW5zZm9ybWVyIGltcGxlbWVudHMgVHJhbnNmb3JtZXIKLXsKLSAgcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oT2JqZWN0IHZhbHVlKQotICB7Ci0gICAgU3RyaW5nIHMgPSB2YWx1ZS50b1N0cmluZygpOwotICAgIGlmIChzLmluZGV4T2YoIjoiKSA8IDApCi0gICAgewotICAgICAgSVJlc291cmNlIHJlcyA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZmluZE1lbWJlcih2YWx1ZS50b1N0cmluZygpKTsKLSAgICAgIGlmIChyZXMuZXhpc3RzKCkpCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgcyA9IHJlcy5nZXRMb2NhdGlvbigpLnRvRmlsZSgpLnRvVVJMKCkudG9TdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11cmxlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9kYXRhL1Byb2plY3ROYW1lMklQcm9qZWN0VHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9kYXRhL1Byb2plY3ROYW1lMklQcm9qZWN0VHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM2NWY0MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvZGF0YS9Qcm9qZWN0TmFtZTJJUHJvamVjdFRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjEgICAxMjQzMDIgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuZGF0YTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyOwotCi1wdWJsaWMgY2xhc3MgUHJvamVjdE5hbWUySVByb2plY3RUcmFuc2Zvcm1lciBpbXBsZW1lbnRzIFRyYW5zZm9ybWVyCi17Ci0gIHB1YmxpYyBPYmplY3QgdHJhbnNmb3JtKE9iamVjdCB2YWx1ZSkKLSAgewotICAgIGlmICh2YWx1ZSAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyBwcm9qZWN0ID0gKFN0cmluZykgdmFsdWU7Ci0gICAgICBpbnQgc2xhc2hJbmRleCA9IHByb2plY3QuaW5kZXhPZignLycpOwotICAgICAgU3RyaW5nIHByb2plY3ROYW1lID0gcHJvamVjdDsKLQotICAgICAgaWYgKHNsYXNoSW5kZXggIT0gLTEpCi0gICAgICB7Ci0gICAgICAgIHByb2plY3ROYW1lID0gcHJvamVjdC5zdWJzdHJpbmcoMCwgc2xhc2hJbmRleCk7Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotICAgIH0gZWxzZQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tYW5kL2RhdGEvU2VydmVySW5zdFRvSVNlcnZlclRyYW5zZm9ybWVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvZGF0YS9TZXJ2ZXJJbnN0VG9JU2VydmVyVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY4ODFjYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1hbmQvZGF0YS9TZXJ2ZXJJbnN0VG9JU2VydmVyVHJhbnNmb3JtZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIENyZWF0ZWQgb24gQXByIDIwLCAyMDA0Ci0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuZGF0YTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci0KLS8qCi0gKiBUcmFuc2Zvcm1zIGEgc2VydmVyIGluc3RhbmNlIGlkIHRvIGFuIElTZXJ2ZXIKLSAqLwotcHVibGljIGNsYXNzIFNlcnZlckluc3RUb0lTZXJ2ZXJUcmFuc2Zvcm1lciBpbXBsZW1lbnRzIFRyYW5zZm9ybWVyIHsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lciN0cmFuc2Zvcm0oamF2YS5sYW5nLk9iamVjdCkKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgdHJhbnNmb3JtKE9iamVjdCB2YWx1ZSkgewotICAgIAotICAgIFN0cmluZyBleGlzdGluZ1NlcnZlckluc3RJZCA9IChTdHJpbmcpdmFsdWU7Ci0gICAgSVNlcnZlciBzZXJ2ZXJJbnN0ID0gbnVsbDsKLSAgICBpZiAoZXhpc3RpbmdTZXJ2ZXJJbnN0SWQgIT0gbnVsbCkgewotICAgIAlzZXJ2ZXJJbnN0ID0gU2VydmVyQ29yZS5maW5kU2VydmVyKGV4aXN0aW5nU2VydmVySW5zdElkKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlcnZlckluc3Q7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tYW5kL2RhdGEvU2VydmVyTmFtZTJJU2VydmVyVHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbWFuZC9kYXRhL1NlcnZlck5hbWUySVNlcnZlclRyYW5zZm9ybWVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNWQ3OTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tYW5kL2RhdGEvU2VydmVyTmFtZTJJU2VydmVyVHJhbnNmb3JtZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5kYXRhOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZTsKLQotcHVibGljIGNsYXNzIFNlcnZlck5hbWUySVNlcnZlclRyYW5zZm9ybWVyIGltcGxlbWVudHMgVHJhbnNmb3JtZXIKLXsKLSAgcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oT2JqZWN0IHZhbHVlKQotICB7Ci0gICAgewotICAgICAgU3RyaW5nIHNlcnZlck5hbWUgPSB2YWx1ZS50b1N0cmluZygpOwotICAgICAgSVNlcnZlcltdIHNlcnZlcnMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlcnMoKTsKLSAgICAgIGlmIChzZXJ2ZXJzICE9IG51bGwgJiYgc2VydmVycy5sZW5ndGghPTApCi0gICAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VydmVycy5sZW5ndGg7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIElTZXJ2ZXIgc2VydmVyID0gKElTZXJ2ZXIpc2VydmVyc1tpXTsKLSAgICAgICAgICBpZiAoKHNlcnZlci5nZXROYW1lKCkpLmVxdWFscyhzZXJ2ZXJOYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBzZXJ2ZXI7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0RlZmF1bHRpbmdVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vRGVmYXVsdGluZ1V0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyODY2N2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vRGVmYXVsdGluZ1V0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDI3ICAgMTM4MDU4IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDcwNzIzICAgMTk0NDM0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuLCBDaGVjayBmb3Igbm9uLWV4aXN0aW5nIEVBUiB3aXRoIGNvbnRlbnQgbm90IGRlbGV0ZWQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLnJlc291cmNlcy5JVmlydHVhbENvbXBvbmVudDsKLQotcHVibGljIGNsYXNzIERlZmF1bHRpbmdVdGlscyB7Ci0JCi0JcHVibGljIERlZmF1bHRpbmdVdGlscygpCi0JewotCQkJCi0JfQotCQotCS8qKgotCSAqIAotCSAqIFVzZXMgdGhlIGZvbGxvd2luZyBzdGVwcyB0byBkZXRlcm1pbmUgYSB2YWxpZCBkZWZhdWx0IEVBUiBwcm9qZWN0IG5hbWU6Ci0JICogIAotCSAqIDEuIElmIHByb2plY3QgZG9lcyBleGlzdDoKLQkgKiAJCWEgLSBsb29rIGZvciBhbiBleGlzdGluZywgcmVmZXJlbmNpbmcgRUFSIGNvbXBvbmVudCwgaWYgb25lIGV4aXN0cyByZXR1cm4gdGhhdCBFQVIgbmFtZQotCSAqIAkJYiAtIGxvb2sgZm9yIGFuIGV4aXN0aW5nIEVBUiBjb21wb25lbnQgd2l0aCB0aGUgc2FtZSBKMkVFIHZlcnNpb24gYXMgdGhlIHByb2plY3QKLQkgKiAyLiBJZiBjYW4ndCBmaW5kIGFuIGFwcHJvcHJpYXRlIGV4aXN0aW5nIEVBUiBjb21wb25lbnQgb3IgcHJvamVjdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgCi0JICogICAgIHdvcmtzcGFjZSwgcmV0dXJuIGEgbmV3IEVBUiBuYW1lIG9mIGZvcm0gcHJvamVjdE5hbWVFQVIKLQkgKiAzLiBJZiBwcm9qZWN0IG5hbWUgaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcgcmV0dXJuIHRoZSBkZWZhdWx0IEVBUiBuYW1lCi0JICogCi0JICogQHBhcmFtIHByb2plY3ROYW1lIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBmb3IgdGhlIHNlcnZpY2UKLQkgKiBAcmV0dXJuIGEgc3RyaW5nIHRvIGJlIHVzZWQgYXMgdGhlIGRlZmF1bHQgRUFSIHByb2plY3QgbmFtZSBmb3IgdGhlIHByb2plY3QgbmFtZSBwcm92aWRlZAotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERlZmF1bHRFQVJQcm9qZWN0TmFtZShTdHJpbmcgcHJvamVjdE5hbWUpCi0JewotCi0JCWlmIChwcm9qZWN0TmFtZSAhPSBudWxsICYmIHByb2plY3ROYW1lLmxlbmd0aCgpID4gMCkgewotCQkJCi0JCQlJUHJvamVjdCBwcm9qID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQotCQkJaWYgKHByb2ouZXhpc3RzKCkpIHsKLQkJCQkKLQkJCQkvL1N0ZXAgMWEgLSByZXR1cm4gYSByZWZlcmVuY2luZyBFQVIgcHJvamVjdAotCQkJCUlWaXJ0dWFsQ29tcG9uZW50W10gZWFycyA9IEoyRUVVdGlscy5nZXRSZWZlcmVuY2luZ0VBUkNvbXBvbmVudHMocHJvaik7Ci0JCQkJaWYgKGVhcnMgIT0gbnVsbCAmJiBlYXJzLmxlbmd0aCA+IDApIHsKLQkJCQkJcmV0dXJuIGVhcnNbMF0uZ2V0TmFtZSgpOwotCQkJCX0KLQkJCQkKLQkJCQkvL1N0ZXAgMWIgLSByZXR1cm4gYW4gYXBwcm9wcmlhdGUgZXhpc3RpbmcgRUFSIHByb2plY3QKLQkJCSAgICBJVmlydHVhbENvbXBvbmVudFtdIGFsbEVhckNvbXBzID0gSjJFRVV0aWxzLmdldEFsbEVBUkNvbXBvbmVudHMoKTsJCQkgICAgICAKLQotCQkJICAgIGlmIChhbGxFYXJDb21wcy5sZW5ndGggPiAwKQotCQkJICAgIHsJCQkgICAgICAKLQkJCSAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgYWxsRWFyQ29tcHMubGVuZ3RoOyBpKyspCi0JCQkgICAgICAgIHsKLQkJCSAgICAgICAgICBJUHJvamVjdCBlYXJQcm9qZWN0ID0gYWxsRWFyQ29tcHNbaV0uZ2V0UHJvamVjdCgpOwotCQkJICAgICAgICAgIGJvb2xlYW4gY2FuQXNzb2NpYXRlID0gSjJFRVV0aWxzLmNhbkFzc29jaWF0ZVByb2plY3RUb0VBUldpdGhvdXRXYXJuaW5nKHByb2osIGVhclByb2plY3QpOwotCQkJICAgICAgICAgIGlmIChjYW5Bc3NvY2lhdGUpCi0JCQkgICAgICAgICAgewotCQkJICAgICAgICAgICAgcmV0dXJuIGFsbEVhckNvbXBzW2ldLmdldE5hbWUoKTsgCi0JCQkgICAgICAgICAgfQotCQkJICAgICAgICB9CQkJICAgICAgCQkJICAgICAgCi0JCQkgICAgfQotCQkJfQotCQkJCi0JCQkKLQkJCVN0cmluZyBiYXNlRUFSTmFtZSA9IHByb2plY3ROYW1lICsgUmVzb3VyY2VVdGlscy5nZXREZWZhdWx0RUFSRXh0ZW5zaW9uKCk7Ci0JCQlTdHJpbmcgZWFyTmFtZSA9IGJhc2VFQVJOYW1lOwotCi0JCQlib29sZWFuIGZvdW5kRUFSID0gZmFsc2U7Ci0JCQlpbnQgaSA9IDE7Ci0JCQkKLQkJCXdoaWxlICghZm91bmRFQVIpIHsKLQkJCQkvLyAxOTQ0MzQgLSBDaGVjayBmb3Igbm9uLWV4aXN0aW5nIEVBUiB3aXRoIGNvbnRlbnRzIHRoYXQncyBub3QgZGVsZXRlZCBwcmV2aW91c2x5Ci0JCQkJSVN0YXR1cyBjYW5DcmVhdGVFQVJTdGF0dXMgPSBKMkVFVXRpbHMuY2FuQ3JlYXRlRUFSKFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChlYXJOYW1lKSk7Ci0JCQkJaWYgKGNhbkNyZWF0ZUVBUlN0YXR1cy5pc09LKCkpIHsKLQkJCQkJZm91bmRFQVIgPSB0cnVlOwotCQkJCX0gZWxzZSB7Ci0JCQkJCWVhck5hbWUgPSBiYXNlRUFSTmFtZSArIGk7Ci0JCQkJCWkrKzsKLQkJCQl9Ci0JCQl9Ci0JCQkKLQkJCQotCQkJLy9TdGVwIDIgLSByZXR1cm4gcHJvamVjdCBuYW1lIHdpdGggRUFSIG9uIHRoZSBlbmQKLQkJCXJldHVybiBlYXJOYW1lOwkJCQotCQl9Ci0JCQotCQkvL1N0ZXAgMyAtIHJldHVybiB0aGUgZGVmYXVsdCBFQVIgcHJvamVjdCBuYW1lCi0JCXJldHVybiBSZXNvdXJjZVV0aWxzLmdldERlZmF1bHRTZXJ2aWNlRUFSUHJvamVjdE5hbWUoKTsJCQotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0ZhY2V0T3BlcmF0aW9uRGVsZWdhdGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0ZhY2V0T3BlcmF0aW9uRGVsZWdhdGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA0ODE5Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1vbi9GYWNldE9wZXJhdGlvbkRlbGVnYXRlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDkwMzAzICAgMjQyNjM1IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgUmVtb3ZlIHVubmVjZXNzYXJ5IFVJIGRlcGVuZGVuY2llcyBmcm9tIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb247Ci0KLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5vcGVyYXRpb24uSVJ1bm5hYmxlV2l0aFByb2dyZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uRmFjZXRVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLklGYWNldE9wZXJhdGlvbkRlbGVnYXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JRmFjZXRlZFByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSVByb2plY3RGYWNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JUHJvamVjdEZhY2V0VmVyc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5Qcm9qZWN0RmFjZXRzTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5ydW50aW1lLklSdW50aW1lOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGU7Ci0KLXB1YmxpYyBjbGFzcyBGYWNldE9wZXJhdGlvbkRlbGVnYXRlIGltcGxlbWVudHMgSUZhY2V0T3BlcmF0aW9uRGVsZWdhdGUgewotCi0JcHVibGljIElTdGF0dXMgYWRkRmFjZXRzVG9Qcm9qZWN0KGZpbmFsIElGYWNldGVkUHJvamVjdCBmcHJvamVjdCwgZmluYWwgU2V0IHByb2plY3RGYWNldFZlcnNpb25zKSB7Ci0JCWZpbmFsIElTdGF0dXNbXSBzdGF0dXMgPSBuZXcgSVN0YXR1c1sxXTsKLQkJc3RhdHVzWzBdID0gU3RhdHVzLk9LX1NUQVRVUzsKLQkJZmluYWwgU2V0IGFjdGlvbnMgPSBGYWNldFV0aWxzLmdldEluc3RhbGxBY3Rpb25zKHByb2plY3RGYWNldFZlcnNpb25zKTsKLQotCQkvLyBDcmVhdGUgYSBydW5uYWJsZSB0aGF0IGFwcGxpZXMgdGhlIGluc3RhbGwgYWN0aW9ucyB0byB0aGUgZmFjZXRlZCBwcm9qZWN0Ci0JCUlSdW5uYWJsZVdpdGhQcm9ncmVzcyBydW5uYWJsZSA9IG5ldyBJUnVubmFibGVXaXRoUHJvZ3Jlc3MoKSB7Ci0JCQlwdWJsaWMgdm9pZCBydW4oSVByb2dyZXNzTW9uaXRvciBzaGVsbE1vbml0b3IpIHRocm93cyBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7Ci0JCQkJdHJ5IHsKLQkJCQkJZnByb2plY3QubW9kaWZ5KGFjdGlvbnMsIHNoZWxsTW9uaXRvcik7Ci0JCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJCXN0YXR1c1swXSA9IGdldEVycm9yU3RhdHVzRm9yQWRkaW5nRmFjZXRzKGZwcm9qZWN0LmdldFByb2plY3QoKS5nZXROYW1lKCksIHByb2plY3RGYWNldFZlcnNpb25zLCBlKTsKLQkJCQl9Ci0JCQl9Ci0JCX07Ci0KLQkJLy8gUnVuIHRoZSBydW5uYWJsZSBpbiBhbm90aGVyIHRocmVhZCB1bmxlc3MgdGhlcmUgaXMgbm8gVUkgdGhyZWFkIChBbnQgc2NlbmFyaW9zKQotCQlpZiAoZGlzcGxheVByZXNlbnQoKSkgewotCQkJdHJ5IHsKLQkJCQlQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldFByb2dyZXNzU2VydmljZSgpLnJ1bih0cnVlLCBmYWxzZSwgcnVubmFibGUpOwotCQkJfSBjYXRjaCAoSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBpdGUpIHsKLQkJCQlzdGF0dXNbMF0gPSBnZXRFcnJvclN0YXR1c0ZvckFkZGluZ0ZhY2V0cyhmcHJvamVjdC5nZXRQcm9qZWN0KCkuZ2V0TmFtZSgpLCBwcm9qZWN0RmFjZXRWZXJzaW9ucywgaXRlKTsKLQkJCX0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGllKSB7Ci0JCQkJc3RhdHVzWzBdID0gZ2V0RXJyb3JTdGF0dXNGb3JBZGRpbmdGYWNldHMoZnByb2plY3QuZ2V0UHJvamVjdCgpLmdldE5hbWUoKSwgcHJvamVjdEZhY2V0VmVyc2lvbnMsIGllKTsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCXRyeSB7Ci0JCQkJZnByb2plY3QubW9kaWZ5KGFjdGlvbnMsIG51bGwpOwotCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJc3RhdHVzWzBdID0gZ2V0RXJyb3JTdGF0dXNGb3JBZGRpbmdGYWNldHMoZnByb2plY3QuZ2V0UHJvamVjdCgpLmdldE5hbWUoKSwgcHJvamVjdEZhY2V0VmVyc2lvbnMsIGUpOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHN0YXR1c1swXTsKLQl9Ci0KLQlwdWJsaWMgSVN0YXR1cyBjcmVhdGVOZXdGYWNldGVkUHJvamVjdChmaW5hbCBTdHJpbmcgcHJvamVjdE5hbWUpIHsKLQkJZmluYWwgSVN0YXR1c1tdIHN0YXR1cyA9IG5ldyBJU3RhdHVzWzFdOwotCQlzdGF0dXNbMF0gPSBTdGF0dXMuT0tfU1RBVFVTOwotCQlJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQkJaWYgKCFwcm9qZWN0LmV4aXN0cygpKSB7Ci0JCQkvLyBDcmVhdGUgYSBydW5uYWJsZSB0aGF0IGNyZWF0ZXMgYSBuZXcgZmFjZXRlZCBwcm9qZWN0LgotCQkJSVJ1bm5hYmxlV2l0aFByb2dyZXNzIHJ1bm5hYmxlID0gbmV3IElSdW5uYWJsZVdpdGhQcm9ncmVzcygpIHsKLQkJCQlwdWJsaWMgdm9pZCBydW4oSVByb2dyZXNzTW9uaXRvciBzaGVsbE1vbml0b3IpIHRocm93cyBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7Ci0JCQkJCXRyeSB7Ci0JCQkJCQlJRmFjZXRlZFByb2plY3QgZlByb2plY3QgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5jcmVhdGUocHJvamVjdE5hbWUsIG51bGwsIHNoZWxsTW9uaXRvcik7Ci0JCQkJCQlpZiAoZlByb2plY3QgPT0gbnVsbCkgewotCQkJCQkJCXN0YXR1c1swXSA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1BST0pFQ1RfQ1JFQVRJT04sIG5ldyBTdHJpbmdbXSB7IHByb2plY3ROYW1lIH0pKTsKLQkJCQkJCX0KLQkJCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJCQlzdGF0dXNbMF0gPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9QUk9KRUNUX0NSRUFUSU9OLCBuZXcgU3RyaW5nW10geyBwcm9qZWN0TmFtZSB9KSwgZSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9OwotCi0JCQkvLyBSdW4gdGhlIHJ1bm5hYmxlIGluIGFub3RoZXIgdGhyZWFkIHVubGVzcyB0aGVyZSBpcyBubyBVSSB0aHJlYWQgKEFudCBzY2VuYXJpb3MpCi0JCQl0cnkgewotCQkJCWlmIChkaXNwbGF5UHJlc2VudCgpKSB7Ci0JCQkJCVBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0UHJvZ3Jlc3NTZXJ2aWNlKCkucnVuKHRydWUsIGZhbHNlLCBydW5uYWJsZSk7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJdHJ5IHsKLQkJCQkJCUlGYWNldGVkUHJvamVjdCBmUHJvamVjdCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmNyZWF0ZShwcm9qZWN0TmFtZSwgbnVsbCwgbnVsbCk7Ci0JCQkJCQlpZiAoZlByb2plY3QgPT0gbnVsbCkgewotCQkJCQkJCXN0YXR1c1swXSA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1BST0pFQ1RfQ1JFQVRJT04sIG5ldyBTdHJpbmdbXSB7IHByb2plY3ROYW1lIH0pKTsKLQkJCQkJCX0KLQkJCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJCQlzdGF0dXNbMF0gPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9QUk9KRUNUX0NSRUFUSU9OLCBuZXcgU3RyaW5nW10geyBwcm9qZWN0TmFtZSB9KSwgZSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9IGNhdGNoIChJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGl0ZSkgewotCQkJCXN0YXR1c1swXSA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1BST0pFQ1RfQ1JFQVRJT04sIG5ldyBTdHJpbmdbXSB7IHByb2plY3ROYW1lIH0pLCBpdGUpOwotCQkJfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gaWUpIHsKLQkJCQlzdGF0dXNbMF0gPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9QUk9KRUNUX0NSRUFUSU9OLCBuZXcgU3RyaW5nW10geyBwcm9qZWN0TmFtZSB9KSwgaWUpOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHN0YXR1c1swXTsKLQl9Ci0KLQlwdWJsaWMgSVN0YXR1cyBzZXRGYWNldFJ1bnRpbWVPblByb2plY3QoZmluYWwgSUZhY2V0ZWRQcm9qZWN0IGZQcm9qZWN0LCBmaW5hbCBJUnVudGltZSBmUnVudGltZSkgewotCQlmaW5hbCBJU3RhdHVzW10gc3RhdHVzID0gbmV3IElTdGF0dXNbMV07Ci0JCXN0YXR1c1swXSA9IFN0YXR1cy5PS19TVEFUVVM7Ci0KLQkJLy8gQ3JlYXRlIGEgcnVubmFibGUgdGhhdCBzZXRzIHRoZSBmYWNldCBydW50aW1lIG9uIHRoZSBmYWNldGVkIHByb2plY3QKLQkJSVJ1bm5hYmxlV2l0aFByb2dyZXNzIHJ1bm5hYmxlID0gbmV3IElSdW5uYWJsZVdpdGhQcm9ncmVzcygpIHsKLQkJCXB1YmxpYyB2b2lkIHJ1bihJUHJvZ3Jlc3NNb25pdG9yIHNoZWxsTW9uaXRvcikgdGhyb3dzIEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKLQkJCQl0cnkgewotCQkJCQlmUHJvamVjdC5zZXRUYXJnZXRlZFJ1bnRpbWVzKENvbGxlY3Rpb25zLnNpbmdsZXRvbihmUnVudGltZSksIHNoZWxsTW9uaXRvcik7Ci0JCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJCXN0YXR1c1swXSA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1NFVFRJTkdfUlVOVElNRSwgbmV3IFN0cmluZ1tdIHsgZlByb2plY3QuZ2V0UHJvamVjdCgpLmdldE5hbWUoKSwgZlJ1bnRpbWUuZ2V0TmFtZSgpIH0pLCBlKTsKLQkJCQl9Ci0JCQl9Ci0JCX07Ci0KLQkJLy8gUnVuIHRoZSBydW5uYWJsZSBpbiBhbm90aGVyIHRocmVhZCB1bmxlc3MgdGhlcmUgaXMgbm8gVUkgdGhyZWFkIChBbnQgc2NlbmFyaW9zKQotCQlpZiAoZGlzcGxheVByZXNlbnQoKSkgewotCQkJdHJ5IHsKLQkJCQlQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldFByb2dyZXNzU2VydmljZSgpLnJ1bih0cnVlLCBmYWxzZSwgcnVubmFibGUpOwotCQkJfSBjYXRjaCAoSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBpdGUpIHsKLQkJCQlzdGF0dXNbMF0gPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9TRVRUSU5HX1JVTlRJTUUsIG5ldyBTdHJpbmdbXSB7IGZQcm9qZWN0LmdldFByb2plY3QoKS5nZXROYW1lKCksIGZSdW50aW1lLmdldE5hbWUoKSB9KSwgaXRlKTsKLQkJCX0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGllKSB7Ci0JCQkJc3RhdHVzWzBdID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfU0VUVElOR19SVU5USU1FLCBuZXcgU3RyaW5nW10geyBmUHJvamVjdC5nZXRQcm9qZWN0KCkuZ2V0TmFtZSgpLCBmUnVudGltZS5nZXROYW1lKCkgfSksIGllKTsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCXRyeSB7Ci0JCQkJZlByb2plY3Quc2V0VGFyZ2V0ZWRSdW50aW1lcyhDb2xsZWN0aW9ucy5zaW5nbGV0b24oZlJ1bnRpbWUpLCBudWxsKTsKLQotCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJc3RhdHVzWzBdID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfU0VUVElOR19SVU5USU1FLCBuZXcgU3RyaW5nW10geyBmUHJvamVjdC5nZXRQcm9qZWN0KCkuZ2V0TmFtZSgpLCBmUnVudGltZS5nZXROYW1lKCkgfSksIGUpOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHN0YXR1c1swXTsKLQl9Ci0KLQlwdWJsaWMgSVN0YXR1cyBzZXRGaXhlZEZhY2V0c09uUHJvamVjdChmaW5hbCBJRmFjZXRlZFByb2plY3QgZlByb2plY3QsIGZpbmFsIFNldCBmaXhlZEZhY2V0cykgewotCQlmaW5hbCBJU3RhdHVzW10gc3RhdHVzID0gbmV3IElTdGF0dXNbMV07Ci0JCXN0YXR1c1swXSA9IFN0YXR1cy5PS19TVEFUVVM7Ci0KLQkJLy8gQ3JlYXRlIGEgcnVubmFibGUgdGhhdCBzZXRzIHRoZSBmaXhlZCBmYWNldHMgb24gdGhlIGZhY2V0ZWQgcHJvamVjdAotCQlJUnVubmFibGVXaXRoUHJvZ3Jlc3MgcnVubmFibGUgPSBuZXcgSVJ1bm5hYmxlV2l0aFByb2dyZXNzKCkgewotCQkJcHVibGljIHZvaWQgcnVuKElQcm9ncmVzc01vbml0b3Igc2hlbGxNb25pdG9yKSB0aHJvd3MgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotCQkJCXRyeSB7Ci0JCQkJCWZQcm9qZWN0LnNldEZpeGVkUHJvamVjdEZhY2V0cyhmaXhlZEZhY2V0cyk7Ci0JCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJCXN0YXR1c1swXSA9IGdldEVycm9yU3RhdHVzRm9yU2V0dGluZ0ZpeGVkRmFjZXRzKGZQcm9qZWN0LmdldFByb2plY3QoKS5nZXROYW1lKCksIGZpeGVkRmFjZXRzLCBlKTsKLQkJCQl9Ci0JCQl9Ci0JCX07Ci0KLQkJLy8gUnVuIHRoZSBydW5uYWJsZSBpbiBhbm90aGVyIHRocmVhZCB1bmxlc3MgdGhlcmUgaXMgbm8gVUkgdGhyZWFkIChBbnQgc2NlbmFyaW9zKQotCQlpZiAoZGlzcGxheVByZXNlbnQoKSkgewotCQkJdHJ5IHsKLQkJCQlQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldFByb2dyZXNzU2VydmljZSgpLnJ1bih0cnVlLCBmYWxzZSwgcnVubmFibGUpOwotCQkJfSBjYXRjaCAoSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBpdGUpIHsKLQkJCQlzdGF0dXNbMF0gPSBnZXRFcnJvclN0YXR1c0ZvclNldHRpbmdGaXhlZEZhY2V0cyhmUHJvamVjdC5nZXRQcm9qZWN0KCkuZ2V0TmFtZSgpLCBmaXhlZEZhY2V0cywgaXRlKTsKLQkJCX0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGllKSB7Ci0JCQkJc3RhdHVzWzBdID0gZ2V0RXJyb3JTdGF0dXNGb3JTZXR0aW5nRml4ZWRGYWNldHMoZlByb2plY3QuZ2V0UHJvamVjdCgpLmdldE5hbWUoKSwgZml4ZWRGYWNldHMsIGllKTsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCXRyeSB7Ci0JCQkJZlByb2plY3Quc2V0Rml4ZWRQcm9qZWN0RmFjZXRzKGZpeGVkRmFjZXRzKTsKLQkJCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotCQkJCXN0YXR1c1swXSA9IGdldEVycm9yU3RhdHVzRm9yU2V0dGluZ0ZpeGVkRmFjZXRzKGZQcm9qZWN0LmdldFByb2plY3QoKS5nZXROYW1lKCksIGZpeGVkRmFjZXRzLCBlKTsKLQkJCX0KLQkJfQotCi0JCXJldHVybiBzdGF0dXNbMF07Ci0JfQotCi0JLy8gQ2hlY2sgdG8gc2VlIGlmIFNXVCBpcyBhY3RpdmUgYW5kIHRoZSBEaXNwbGF5IGlzIHByZXNlbnQgb3Igbm90Ci0JcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBkaXNwbGF5UHJlc2VudCgpIHsKLQkJQnVuZGxlIGIgPSBQbGF0Zm9ybS5nZXRCdW5kbGUoIm9yZy5lY2xpcHNlLnN3dCIpOwotCQlpZiAoYiA9PSBudWxsKSB7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJaWYgKChiLmdldFN0YXRlKCkgIT0gQnVuZGxlLlJFU09MVkVEICYmIGIuZ2V0U3RhdGUoKSAhPSBCdW5kbGUuQUNUSVZFKSkgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JCXRyeSB7Ci0JCQlpZiAoRGlzcGxheS5nZXRDdXJyZW50KCkgPT0gbnVsbCkgewotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0gZWxzZSB7Ci0JCQkJcmV0dXJuIHRydWU7Ci0JCQl9Ci0JCX0gY2F0Y2ggKE5vQ2xhc3NEZWZGb3VuZEVycm9yIGUxKSB7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IAotCQkJLy8gaWYgdGhlIERpc3BsYXkgY2xhc3MgY2Fubm90IGJlIGxvYWRlZCBmb3Igd2hhdGV2ZXIgcmVhc29uCi0JCQlyZXR1cm4gZmFsc2U7Ci0KLQkJfQotCX0KLQotCS8vIHRoZSBmb2xsb3dpbmcgcHJpdmF0ZSBtZXRob2RzIGhhZCB0byBiZSBjb3BpZWQgZnJvbSBGYWNldFV0aWxzCi0JLyoqCi0JICogUmV0dXJucyBhIHRyYW5zbGF0YWJsZSBkZWxpbWl0ZWQgbGlzdCBvZiBmYWNldCBsYWJlbHMgZGVyaXZlZCBmcm9tIHRoZQotCSAqIHByb3ZpZGVkIHNldCBvZiBmYWNldHMKLQkgKiAKLQkgKiBAcGFyYW0gZmFjZXRzCi0JICogICAgICAgICAgICBhIHNldCBjb250YWluaW5nIGVsZW1lbnRzIG9mIHR5cGUge0BsaW5rIElQcm9qZWN0RmFjZXR9Ci0JICogQHJldHVybiBTdHJpbmcgYSBkZWxpbWl0ZWQgbGlzdCBvZiBmYWNldCBsYWJlbHMKLQkgKi8KLQlwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0RmFjZXRMaXN0TWVzc2FnZVN0cmluZyhTZXQgZmFjZXRzKSB7Ci0JCVN0cmluZyBmYWNldExpc3RNZXNzYWdlID0gIiI7Ci0JCWludCBzaXplID0gZmFjZXRzLnNpemUoKTsKLQkJaWYgKHNpemUgPiAwKSB7Ci0JCQlJdGVyYXRvciBpdHIgPSBmYWNldHMuaXRlcmF0b3IoKTsKLQkJCUlQcm9qZWN0RmFjZXQgZmlyc3RQcm9qZWN0RmFjZXQgPSAoSVByb2plY3RGYWNldCkgaXRyLm5leHQoKTsKLQkJCWZhY2V0TGlzdE1lc3NhZ2UgPSBmaXJzdFByb2plY3RGYWNldC5nZXRMYWJlbCgpOwotCi0JCQkvLyBDb250aW51ZSBhcHBlbmRpbmcgdG8gZmFjZXRMaXN0TWVzc2FnZSB1bnRpbCBhbGwgdGhlIGZhY2V0IGxhYmVscwotCQkJLy8gYXJlIGluIHRoZSBsaXN0LgotCQkJd2hpbGUgKGl0ci5oYXNOZXh0KCkpIHsKLQkJCQlJUHJvamVjdEZhY2V0IHByb2plY3RGYWNldCA9IChJUHJvamVjdEZhY2V0KSBpdHIubmV4dCgpOwotCQkJCVN0cmluZyBwZkxhYmVsID0gcHJvamVjdEZhY2V0LmdldExhYmVsKCk7Ci0JCQkJZmFjZXRMaXN0TWVzc2FnZSA9IE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0ZBQ0VUUywgbmV3IFN0cmluZ1tdIHsgZmFjZXRMaXN0TWVzc2FnZSwgcGZMYWJlbCB9KTsKLQkJCX0KLQkJfQotCi0JCXJldHVybiBmYWNldExpc3RNZXNzYWdlOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgYW4gZXJyb3Igc3RhdHVzIGluZGljYXRpbmcgdGhhdCB0aGUgZmFjZXRzIGNvdWxkIG5vdCBiZSBzZXQgYXMKLQkgKiBmaXhlZCBmYWNldHMgb24gdGhlIGZhY2V0ZWQgcHJvamVjdAotCSAqIAotCSAqIEBwYXJhbSBwcm9qZWN0TmFtZQotCSAqICAgICAgICAgICAgYSBwcm9qZWN0IG5hbWUgdG8gaW5zZXJ0IGluIHRoZSBlcnJvciBtZXNzYWdlIGluIHRoZSBJU3RhdHVzCi0JICogQHBhcmFtIGZhY2V0cwotCSAqICAgICAgICAgICAgYSBzZXQgY29udGFpbmluZyBlbGVtZW50cyBvZiB0eXBlIHtAbGluayBJUHJvamVjdEZhY2V0fS4gVGhlCi0JICogICAgICAgICAgICBmYWNldHMgaW4gdGhpcyBzZXQgd2lsbCBiZSBsaXN0ZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UgaW4gdGhlCi0JICogICAgICAgICAgICBJU3RhdHVzLgotCSAqIEBwYXJhbSB0Ci0JICogICAgICAgICAgICBhIFRocm93YWJsZSB3aGljaCB3aWxsIGJlIGluc2VydGVkIGluIHRoZSBJU3RhdHVzCi0JICogQHJldHVybiBhbiBJU3RhdHVzIHdpdGggc2V2ZXJpdHkgSVN0YXR1cy5FUlJPUgotCSAqLwotCXByaXZhdGUgc3RhdGljIElTdGF0dXMgZ2V0RXJyb3JTdGF0dXNGb3JTZXR0aW5nRml4ZWRGYWNldHMoU3RyaW5nIHByb2plY3ROYW1lLCBTZXQgZmFjZXRzLCBUaHJvd2FibGUgdCkgewotCQlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JCWludCBzaXplID0gZmFjZXRzLnNpemUoKTsKLQkJaWYgKHNpemUgPiAwKSB7Ci0JCQlTdHJpbmcgZmFjZXRMaXN0ID0gZ2V0RmFjZXRMaXN0TWVzc2FnZVN0cmluZyhmYWNldHMpOwotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfRklYRURfRkFDRVRTLCBuZXcgU3RyaW5nW10geyBwcm9qZWN0TmFtZSwgZmFjZXRMaXN0IH0pLCB0KTsKLQkJfQotCi0JCXJldHVybiBzdGF0dXM7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhbiBlcnJvciBzdGF0dXMgaW5kaWNhdGluZyB0aGF0IHRoZSBmYWNldCB2ZXJzaW9ucyBjb3VsZCBub3QgYmUKLQkgKiBhZGRlZCB0byB0aGUgZmFjZXRlZCBwcm9qZWN0Ci0JICogCi0JICogQHBhcmFtIHByb2plY3ROYW1lCi0JICogICAgICAgICAgICBhIHByb2plY3QgbmFtZSB0byBpbnNlcnQgaW4gdGhlIGVycm9yIG1lc3NhZ2UgaW4gdGhlIElTdGF0dXMKLQkgKiBAcGFyYW0gcHJvamVjdEZhY2V0VmVyc2lvbnMKLQkgKiAgICAgICAgICAgIGEgc2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgSVByb2plY3RGYWNldFZlcnNpb259Ci0JICogICAgICAgICAgICAuIFRoZSBmYWNldHMgaW4gdGhpcyBzZXQgd2lsbCBiZSBsaXN0ZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UKLQkgKiAgICAgICAgICAgIGluIHRoZSBJU3RhdHVzLgotCSAqIEBwYXJhbSB0Ci0JICogICAgICAgICAgICBhIFRocm93YWJsZSB3aGljaCB3aWxsIGJlIGluc2VydGVkIGluIHRoZSBJU3RhdHVzCi0JICogQHJldHVybiBhbiBJU3RhdHVzIHdpdGggc2V2ZXJpdHkgSVN0YXR1cy5FUlJPUgotCSAqLwotCXByaXZhdGUgc3RhdGljIElTdGF0dXMgZ2V0RXJyb3JTdGF0dXNGb3JBZGRpbmdGYWNldHMoU3RyaW5nIHByb2plY3ROYW1lLCBTZXQgcHJvamVjdEZhY2V0VmVyc2lvbnMsIFRocm93YWJsZSB0KSB7Ci0JCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQkJaW50IHNpemUgPSBwcm9qZWN0RmFjZXRWZXJzaW9ucy5zaXplKCk7Ci0JCWlmIChzaXplID4gMCkgewotCQkJU2V0IGZhY2V0cyA9IG5ldyBIYXNoU2V0KCk7Ci0JCQkvLyBJdGVyYXRlIG92ZXIgcHJvamVjdEZhY2V0VmVyc2lvbnMgdG8gZm9ybSBhIHNldCBvZiBJUHJvamVjdEZhY2V0cwotCQkJSXRlcmF0b3IgaXRyID0gcHJvamVjdEZhY2V0VmVyc2lvbnMuaXRlcmF0b3IoKTsKLQkJCXdoaWxlIChpdHIuaGFzTmV4dCgpKSB7Ci0JCQkJSVByb2plY3RGYWNldFZlcnNpb24gcHJvamVjdEZhY2V0ID0gKElQcm9qZWN0RmFjZXRWZXJzaW9uKSBpdHIubmV4dCgpOwotCQkJCUlQcm9qZWN0RmFjZXQgZmFjZXQgPSBwcm9qZWN0RmFjZXQuZ2V0UHJvamVjdEZhY2V0KCk7Ci0JCQkJZmFjZXRzLmFkZChmYWNldCk7Ci0JCQl9Ci0JCQlTdHJpbmcgZmFjZXRMaXN0ID0gZ2V0RmFjZXRMaXN0TWVzc2FnZVN0cmluZyhmYWNldHMpOwotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfQURESU5HX0ZBQ0VUU19UT19QUk9KRUNULCBuZXcgU3RyaW5nW10geyBwcm9qZWN0TmFtZSwgZmFjZXRMaXN0IH0pLCB0KTsKLQkJfQotCi0JCXJldHVybiBzdGF0dXM7Ci0JfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1vbi9GaW5pc2hGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vRmluaXNoRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q4ZTcwOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1vbi9GaW5pc2hGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKgotICogQ3JlYXRlZCBvbiBNYXkgNCwgMjAwNAotICoKLSAqIFRPRE8gVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgZmlsZSBnbyB0bwotICogV2luZG93IC0gUHJlZmVyZW5jZXMgLSBKYXZhIC0gQ29kZSBTdHlsZSAtIENvZGUgVGVtcGxhdGVzCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1vbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuRmluaXNoVGVzdEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci0KLQotLyoqCi0gKiBAYXV0aG9yIGdpbGJlcnRhCi0gKgotICogVE9ETyBUbyBjaGFuZ2UgdGhlIHRlbXBsYXRlIGZvciB0aGlzIGdlbmVyYXRlZCB0eXBlIGNvbW1lbnQgZ28gdG8KLSAqIFdpbmRvdyAtIFByZWZlcmVuY2VzIC0gSmF2YSAtIENvZGUgU3R5bGUgLSBDb2RlIFRlbXBsYXRlcwotICovCi1wdWJsaWMgY2xhc3MgRmluaXNoRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50Ci17Ci0gIHB1YmxpYyBGaW5pc2hGcmFnbWVudCgpCi0gIHsJCi0JYWRkKG5ldyBGaW5pc2hUZXN0RnJhZ21lbnQoKSApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1vbi9IYW5kbGVyRGVzY3JpcHRpb25IZWxwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0hhbmRsZXJEZXNjcmlwdGlvbkhlbHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTYzYmJiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0hhbmRsZXJEZXNjcmlwdGlvbkhlbHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogMjAwNjA0MDQgMTM0OTEzICBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1vbjsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuSGFuZGxlclRhYmxlSXRlbTsKLQotCi0KLXB1YmxpYyBjbGFzcyBIYW5kbGVyRGVzY3JpcHRpb25IZWxwZXIgewotCi0gIC8qKgotICAgKiBIZWxwZXIgbWV0aG9kIGZvciBnZXR0aW5nIHRoZSBIYW5kbGVyRGVzY3JpcHRvckhvbGRlciBnaXZlbiB0aGUgbmFtZQotICAgKiBAcGFyYW0gaGRocwotICAgKiBAcGFyYW0gZGVzY05hbWUKLSAgICogQHJldHVybgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXIgZ2V0Rm9yRGVzY3JpcHRpb25OYW1lKEhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcltdIGhkaHMsIFN0cmluZyBkZXNjTmFtZSl7Ci0gICAgZm9yIChpbnQgaT0wO2k8aGRocy5sZW5ndGg7aSsrKXsKLSAgICAgIFN0cmluZyBuYW1lID0gaGRoc1tpXS5nZXREZXNjcmlwdGlvbk5hbWUoKTsKLSAgICAgIGlmIChuYW1lIT1udWxsICYmIG5hbWUuZXF1YWxzKGRlc2NOYW1lKSl7Ci0gICAgICAgIHJldHVybiBoZGhzW2ldOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gIG51bGw7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBIZWxwZXIgbWV0aG9kIGZvciBnZXR0aW5nIGFsbCBkZXNjcmlwdGlvbiBuYW1lcwotICAgKiBAcGFyYW0gaGRocwotICAgKiBAcmV0dXJuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldEFsbERlc2NyaXB0aW9uTmFtZXMoSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyW10gaGRocyl7Ci0gICAgU3RyaW5nW10gbmFtZXMgPSBuZXcgU3RyaW5nW2hkaHMubGVuZ3RoXTsKLSAgICBmb3IoaW50IGk9MDtpPGhkaHMubGVuZ3RoO2krKyl7Ci0gICAgICBuYW1lc1tpXT1oZGhzW2ldLmdldERlc2NyaXB0aW9uTmFtZSgpOwotICAgIH0KLSAgICByZXR1cm4gbmFtZXM7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldEFsbEhhbmRsZXJDbGFzc05hbWVzKEhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcltdIGhkaHMpewotICAgIFZlY3RvciB2ID0gbmV3IFZlY3RvcigpOwotICAgIGZvciAoaW50IGk9MDtpPGhkaHMubGVuZ3RoO2krKyl7Ci0gICAgICBMaXN0IGxpc3QgPSBoZGhzW2ldLmdldEhhbmRsZXJMaXN0KCk7Ci0gICAgICBpZiAobGlzdCE9bnVsbCAmJiAhbGlzdC5pc0VtcHR5KCkpewotICAgICAgICBmb3IgKGludCBqPTA7ajxsaXN0LnNpemUoKTtqKyspewotICAgICAgICAgIEhhbmRsZXJUYWJsZUl0ZW0gaHRpID0gKEhhbmRsZXJUYWJsZUl0ZW0pbGlzdC5nZXQoaik7Ci0gICAgICAgICAgdi5hZGQoaHRpLmdldEhhbmRsZXJDbGFzc05hbWUoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChTdHJpbmdbXSl2LnRvQXJyYXkobmV3IFN0cmluZ1swXSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0hhbmRsZXJEZXNjcmlwdGlvbkhvbGRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwY2JhZGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDA0IDEzNDkxMyAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MDUxOCAxNDI1NTQgc2VuZ3BsQGNhLmlibS5jb20gIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb247Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLkhhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLlBvcnRDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLldlYlNlcnZpY2VEZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuV3NkZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLmludGVybmFsLmltcGwuV3NkZEZhY3RvcnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5IYW5kbGVyVGFibGVJdGVtOwotCi0KLXB1YmxpYyBjbGFzcyBIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXIgewotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZGVzY3JpcHRpb25OYW1lOwotICBwcml2YXRlIExpc3QgaGFuZGxlckxpc3Q7Ci0gIHByaXZhdGUgV2ViU2VydmljZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uT2JqZWN0OwotICBwcml2YXRlIElQYXRoIHNvdXJjZU91dHB1dFBhdGg7Ci0gIAotICAgIAotICBwdWJsaWMgSVBhdGggZ2V0U291cmNlT3V0cHV0UGF0aCgpIHsKLSAgICByZXR1cm4gc291cmNlT3V0cHV0UGF0aDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U291cmNlT3V0cHV0UGF0aChJUGF0aCBzb3VyY2VPdXRwdXRQYXRoKSB7Ci0gICAgdGhpcy5zb3VyY2VPdXRwdXRQYXRoID0gc291cmNlT3V0cHV0UGF0aDsKLSAgfQotCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRQcm9qZWN0KCl7Ci0gICAgaWYgKGRlc2NyaXB0aW9uT2JqZWN0IT1udWxsKQotICAgICAgcmV0dXJuIFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChkZXNjcmlwdGlvbk9iamVjdCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIC8qCi0gICAqIGdldCB0aGUgV2ViU2VydmljZURlc2NyaXB0aW9uIG9iamVjdCAKLSAgICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlRGVzY3JpcHRpb24gZ2V0RGVzY3JpcHRpb25PYmplY3QoKSB7Ci0gICAgcmV0dXJuIGRlc2NyaXB0aW9uT2JqZWN0OwotICB9Ci0gIAotICAvKioKLSAgICogc2V0IFdlYlNlcnZpY2VEZXNjcmlwdGlvbiBvYmplY3QKLSAgICogQHBhcmFtIGRlc2NyaXB0aW9uT2JqZWN0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXREZXNjcmlwdGlvbk9iamVjdChXZWJTZXJ2aWNlRGVzY3JpcHRpb24gZGVzY3JpcHRpb25PYmplY3QpIHsKLSAgICB0aGlzLmRlc2NyaXB0aW9uT2JqZWN0ID0gZGVzY3JpcHRpb25PYmplY3Q7Ci0gIH0KLQotICAvKioKLSAgICogZ2V0IERlc2NyaXB0aW9uIG5hbWUKLSAgICogQHJldHVybgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbk5hbWUoKSB7Ci0gICAgcmV0dXJuIGRlc2NyaXB0aW9uTmFtZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIHNldCBEZXNjcmlwdGlvbiBuYW1lCi0gICAqIEBwYXJhbSBkZXNjcmlwdGlvbk5hbWUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERlc2NyaXB0aW9uTmFtZShTdHJpbmcgZGVzY3JpcHRpb25OYW1lKSB7Ci0gICAgdGhpcy5kZXNjcmlwdGlvbk5hbWUgPSBkZXNjcmlwdGlvbk5hbWU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBnZXQgTGlzdCBvZiBIYW5kbGVyVGFibGVJdGVtIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlcnZpY2UgZGVzY3JpcHRpb24KLSAgICogQHJldHVybgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0SGFuZGxlckxpc3QoKSB7Ci0gICAgcmV0dXJuIGhhbmRsZXJMaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIHNldCBMaXN0IG9mIEhhbmRsZXJUYWJsZUl0ZW0gYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2VydmljZSBkZXNjcmlwdGlvbgotICAgKiBAcGFyYW0gaGFuZGxlckxpc3QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEhhbmRsZXJMaXN0KExpc3QgaGFuZGxlckxpc3QpIHsKLSAgICB0aGlzLmhhbmRsZXJMaXN0ID0gaGFuZGxlckxpc3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGFkZEhhbmRsZXJUb0FsbFBvcnRzKCl7Ci0gICAgCi0gICAgaWYgKGhhbmRsZXJMaXN0IT1udWxsICYmICFoYW5kbGVyTGlzdC5pc0VtcHR5KCkpewotICAgICAgCi0gICAgICBmb3IgKGludCB6PTA7ejxoYW5kbGVyTGlzdC5zaXplKCk7eisrKXsKLSAgICAgICAgSGFuZGxlclRhYmxlSXRlbSBodGkgPSAoSGFuZGxlclRhYmxlSXRlbSloYW5kbGVyTGlzdC5nZXQoeik7ICAKLSAgICAgICAgaWYgKGRlc2NyaXB0aW9uT2JqZWN0IT1udWxsKSB7Ci0gICAgICAgICAgTGlzdCBwb3J0Q29tcG9uZW50cyA9IGRlc2NyaXB0aW9uT2JqZWN0LmdldFBvcnRDb21wb25lbnRzKCk7Ci0gICAgICAgICAgZm9yIChpbnQgeD0wO3g8cG9ydENvbXBvbmVudHMuc2l6ZSgpO3grKyl7Ci0gICAgICAgICAgICBQb3J0Q29tcG9uZW50IHdzUG9ydCA9IChQb3J0Q29tcG9uZW50KSBwb3J0Q29tcG9uZW50cy5nZXQoeCk7Ci0gICAgICAgICAgICBMaXN0IHdzSGFuZGxlcnMgPSB3c1BvcnQuZ2V0SGFuZGxlcnMoKTsKLSAgICAgICAgICAgIGlmICh3c0hhbmRsZXJzIT1udWxsKXsKLSAgICAgICAgICAgICAgYm9vbGVhbiBhbHJlYWR5RXhpc3RzID0gZmFsc2U7Ci0gICAgICAgICAgICAgIGZvciAoaW50IHk9MDt5PHdzSGFuZGxlcnMuc2l6ZSgpO3krKyl7Ci0gICAgICAgICAgICAgICAgSGFuZGxlciBoYW5kbGVyID0gKEhhbmRsZXIpd3NIYW5kbGVycy5nZXQoeSk7Ci0gICAgICAgICAgICAgICAgaWYgKGhhbmRsZXIuZ2V0SGFuZGxlckNsYXNzKCkuZXF1YWxzKGh0aS5nZXRIYW5kbGVyQ2xhc3NOYW1lKCkpKXsKLSAgICAgICAgICAgICAgICAgIGFscmVhZHlFeGlzdHMgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgICAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHsKLSAgICAgICAgICAgICAgICAvL2NyZWF0ZSBpdCBhbmQgYWRkIHRvIHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAgV3NkZEZhY3Rvcnkgd3NkZEZhY3RvcnkgPSBuZXcgV3NkZEZhY3RvcnlJbXBsKCk7Ci0gICAgICAgICAgICAgICAgSGFuZGxlciBuZXdIYW5kbGVyID0gd3NkZEZhY3RvcnkuY3JlYXRlSGFuZGxlcigpOwotICAgICAgICAgICAgICAgIG5ld0hhbmRsZXIuc2V0SGFuZGxlck5hbWUoaHRpLmdldEhhbmRsZXJOYW1lKCkpOwotICAgICAgICAgICAgICAgIG5ld0hhbmRsZXIuc2V0SGFuZGxlckNsYXNzKGh0aS5nZXRIYW5kbGVyQ2xhc3NOYW1lKCkpOwotICAgICAgICAgICAgICAgIHdzSGFuZGxlcnMuYWRkKG5ld0hhbmRsZXIpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICB9Ci0gIAotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0hhbmRsZXJTZXJ2aWNlUmVmSGVscGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1vbi9IYW5kbGVyU2VydmljZVJlZkhlbHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGFmZjNiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0hhbmRsZXJTZXJ2aWNlUmVmSGVscGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAyMDA2MDQwNCAxMzQ5MTMgIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSAKLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1vbjsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuSGFuZGxlclRhYmxlSXRlbTsKLQotCi1wdWJsaWMgY2xhc3MgSGFuZGxlclNlcnZpY2VSZWZIZWxwZXIgewotCi0gIC8qKgotICAgKiBIZWxwZXIgbWV0aG9kIGZvciBnZXR0aW5nIHRoZSBIYW5kbGVyU2VydmljZVJlZkhvbGRlciBnaXZlbiB0aGUgbmFtZQotICAgKiBAcGFyYW0gaHNyaAotICAgKiBAcGFyYW0gZGVzY05hbWUKLSAgICogQHJldHVybgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBIYW5kbGVyU2VydmljZVJlZkhvbGRlciBnZXRGb3JTZXJ2aWNlUmVmTmFtZShIYW5kbGVyU2VydmljZVJlZkhvbGRlcltdIGhzcmgsIFN0cmluZyBkZXNjTmFtZSl7Ci0gICAgZm9yIChpbnQgaT0wO2k8aHNyaC5sZW5ndGg7aSsrKXsKLSAgICAgIFN0cmluZyBuYW1lID0gaHNyaFtpXS5nZXRTZXJ2aWNlUmVmTmFtZSgpOwotICAgICAgaWYgKG5hbWUhPW51bGwgJiYgbmFtZS5lcXVhbHMoZGVzY05hbWUpKXsKLSAgICAgICAgcmV0dXJuIGhzcmhbaV07Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiAgbnVsbDsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldHMgYWxsIHRoZSBoYW5kbGVyIENsYXNzIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHNlcnZpY2UgcmVmCi0gICAqIEBwYXJhbSBoc3JoCi0gICAqIEByZXR1cm4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QWxsSGFuZGxlckNsYXNzTmFtZXMoSGFuZGxlclNlcnZpY2VSZWZIb2xkZXJbXSBoc3JoKXsKLSAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICBmb3IgKGludCBpPTA7aTxoc3JoLmxlbmd0aDtpKyspewotICAgICAgTGlzdCBsaXN0ID0gaHNyaFtpXS5nZXRIYW5kbGVyTGlzdCgpOwotICAgICAgaWYgKGxpc3QhPW51bGwgJiYgIWxpc3QuaXNFbXB0eSgpKXsKLSAgICAgICAgZm9yIChpbnQgaj0wO2o8bGlzdC5zaXplKCk7aisrKXsKLSAgICAgICAgICBIYW5kbGVyVGFibGVJdGVtIGh0aSA9IChIYW5kbGVyVGFibGVJdGVtKWxpc3QuZ2V0KGopOwotICAgICAgICAgIHYuYWRkKGh0aS5nZXRIYW5kbGVyQ2xhc3NOYW1lKCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiAoU3RyaW5nW10pdi50b0FycmF5KG5ldyBTdHJpbmdbMF0pOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IGFsbCB0aGUgc2VydmljZSBSZWYgbmFtZXMKLSAgICogQHBhcmFtIGhzcmgKLSAgICogQHJldHVybgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRBbGxTZXJ2aWNlUmVmTmFtZXMoSGFuZGxlclNlcnZpY2VSZWZIb2xkZXJbXSBoc3JoKXsKLSAgICBTdHJpbmdbXSBuYW1lcyA9IG5ldyBTdHJpbmdbaHNyaC5sZW5ndGhdOwotICAgIGZvcihpbnQgaT0wO2k8aHNyaC5sZW5ndGg7aSsrKXsKLSAgICAgIG5hbWVzW2ldPWhzcmhbaV0uZ2V0U2VydmljZVJlZk5hbWUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5hbWVzOwotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vSGFuZGxlclNlcnZpY2VSZWZIb2xkZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0hhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxYjAwNGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vSGFuZGxlclNlcnZpY2VSZWZIb2xkZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MDQgICAxMzQ5MTNzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDYwNTE3ICAgMTQyMzM5IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb247Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NjbGllbnQuSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWY7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2NsaWVudC5XZWJzZXJ2aWNlX2NsaWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2NsaWVudC5pbnRlcm5hbC5pbXBsLldlYnNlcnZpY2VfY2xpZW50RmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KYXZhTU9GVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LkhhbmRsZXJUYWJsZUl0ZW07Ci0KLQotcHVibGljIGNsYXNzIEhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyIHsKLQotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlUmVmTmFtZTsKLSAgcHJpdmF0ZSBMaXN0IGhhbmRsZXJMaXN0OwotICBwcml2YXRlIFNlcnZpY2VSZWYgc2VydmljZVJlZjsKLSAgcHJpdmF0ZSBJUGF0aCBzb3VyY2VPdXRwdXRQYXRoOwotICAKLSAgcHVibGljIElQYXRoIGdldFNvdXJjZU91dHB1dFBhdGgoKSB7Ci0gICAgcmV0dXJuIHNvdXJjZU91dHB1dFBhdGg7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNvdXJjZU91dHB1dFBhdGgoSVBhdGggc291cmNlT3V0cHV0UGF0aCkgewotICAgIHRoaXMuc291cmNlT3V0cHV0UGF0aCA9IHNvdXJjZU91dHB1dFBhdGg7Ci0gIH0gIAotICAKLSAgcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKSB7Ci0gICAgaWYgKHNlcnZpY2VSZWYhPW51bGwpCi0gICAgICByZXR1cm4gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHNlcnZpY2VSZWYpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIExpc3QgZ2V0SGFuZGxlckxpc3QoKSB7Ci0gICAgcmV0dXJuIGhhbmRsZXJMaXN0OwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRIYW5kbGVyTGlzdChMaXN0IGhhbmRsZXJMaXN0KSB7Ci0gICAgdGhpcy5oYW5kbGVyTGlzdCA9IGhhbmRsZXJMaXN0OwotICB9Ci0gIAotICBwdWJsaWMgU2VydmljZVJlZiBnZXRTZXJ2aWNlUmVmKCkgewotICAgIHJldHVybiBzZXJ2aWNlUmVmOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlUmVmKFNlcnZpY2VSZWYgc2VydmljZVJlZikgewotICAgIHRoaXMuc2VydmljZVJlZiA9IHNlcnZpY2VSZWY7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZVJlZk5hbWUoKSB7Ci0gICAgcmV0dXJuIHNlcnZpY2VSZWZOYW1lOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlUmVmTmFtZShTdHJpbmcgc2VydmljZVJlZk5hbWUpIHsKLSAgICB0aGlzLnNlcnZpY2VSZWZOYW1lID0gc2VydmljZVJlZk5hbWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGFkZEhhbmRsZXJUb1NlcnZpY2VSZWYoKXsKLSAgICBpZiAoaGFuZGxlckxpc3QhPW51bGwgJiYgIWhhbmRsZXJMaXN0LmlzRW1wdHkoKSl7Ci0gICAgICAKLSAgICAgIGZvciAoaW50IHg9MDt4PGhhbmRsZXJMaXN0LnNpemUoKTt4KyspewotICAgICAgICBIYW5kbGVyVGFibGVJdGVtIGh0aSA9IChIYW5kbGVyVGFibGVJdGVtKWhhbmRsZXJMaXN0LmdldCh4KTsKLSAgICAgICAgaWYgKHNlcnZpY2VSZWYhPW51bGwpewotICAgICAgICAgIExpc3QgZXhpc3RpbmdIYW5kbGVycyA9IHNlcnZpY2VSZWYuZ2V0SGFuZGxlcnMoKTsKLSAgICAgICAgICBib29sZWFuIGFscmVhZHlFeGlzdHMgPSBmYWxzZTsKLSAgICAgICAgICBmb3IgKGludCBpPTA7aTxleGlzdGluZ0hhbmRsZXJzLnNpemUoKTtpKyspewotICAgICAgICAgICAgSGFuZGxlciBoYW5kbGVyID0gKEhhbmRsZXIpZXhpc3RpbmdIYW5kbGVycy5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoaGFuZGxlci5nZXRIYW5kbGVyQ2xhc3MoKS5nZXRKYXZhTmFtZSgpLmVxdWFscyhodGkuZ2V0SGFuZGxlckNsYXNzTmFtZSgpKSl7Ci0gICAgICAgICAgICAgIGFscmVhZHlFeGlzdHMgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICAKLSAgICAgICAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgV2Vic2VydmljZV9jbGllbnRGYWN0b3J5IHdzQ2xpZW50RmFjdG9yeSA9IG5ldyBXZWJzZXJ2aWNlX2NsaWVudEZhY3RvcnlJbXBsKCk7Ci0gICAgICAgICAgICBIYW5kbGVyIG5ld0hhbmRsZXIgPSB3c0NsaWVudEZhY3RvcnkuY3JlYXRlSGFuZGxlcigpOwotICAgICAgICAgICAgbmV3SGFuZGxlci5zZXRIYW5kbGVyTmFtZShodGkuZ2V0SGFuZGxlck5hbWUoKSk7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHNlcnZpY2VSZWYpOwotICAgICAgICAgICAgICBpZiAocHJvamVjdCE9bnVsbCkgewotICAgICAgICAgICAgICAgIEphdmFDbGFzcyBqYXZhQ2xhc3MgPSBKYXZhTU9GVXRpbHMuZ2V0SmF2YUNsYXNzKGh0aS5nZXRIYW5kbGVyQ2xhc3NOYW1lKCksIHByb2plY3QpOwotICAgICAgICAgICAgICAgIGlmIChqYXZhQ2xhc3MgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgbmV3SGFuZGxlci5zZXRIYW5kbGVyQ2xhc3MoamF2YUNsYXNzKTsKLSAgICAgICAgICAgICAgICB9ICAgIAotICAgICAgICAgICAgICAgIGV4aXN0aW5nSGFuZGxlcnMuYWRkKG5ld0hhbmRsZXIpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gZSl7Ci0gICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICAKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1vbi9MYWJlbHNBbmRJZHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0xhYmVsc0FuZElkcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGE2MDE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL0xhYmVsc0FuZElkcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwMjIxIDE0NjAyMyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzIAotICogMjAwODA0MjUgICAyMjEyMzIgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODA2MTYgICAyMzcyOTggZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODA2MTkgICAyMzc3OTcgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotcHVibGljIGNsYXNzIExhYmVsc0FuZElkcwotewotICBwcml2YXRlIFZlY3RvciBsYWJlbHNfID0gbmV3IFZlY3RvcigpOwotICBwcml2YXRlIFZlY3RvciBpZHNfID0gbmV3IFZlY3RvcigpOwotICAKLSAgCi0gIHB1YmxpYyB2b2lkIGFkZChTdHJpbmcgaWQsIFN0cmluZyBsYWJlbCl7Ci0JICBpZHNfLmFkZChpZCk7Ci0JICBsYWJlbHNfLmFkZChsYWJlbCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBpbnQgc2l6ZSgpewotCSAgcmV0dXJuIGxhYmVsc18uc2l6ZSgpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldElkKGludCBpbmRleCl7Ci0JICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ICsgMSA+IGlkc18uc2l6ZSgpKSByZXR1cm4gbnVsbDsKLQkgIHJldHVybiAoU3RyaW5nKWlkc18uZ2V0KGluZGV4KTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgY2xlYXIoKXsKLQkgIGxhYmVsc18uY2xlYXIoKTsKLQkgIGlkc18uY2xlYXIoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaWRzXy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRJZHMoKQotICB7Ci0JICBTdHJpbmdbXSBzdHJpbmdBcnJheSA9IG5ldyBTdHJpbmdbaWRzXy5zaXplKCldOyAKLQkgIGlkc18uY29weUludG8oc3RyaW5nQXJyYXkpOwotCSAgcmV0dXJuIHN0cmluZ0FycmF5OwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nW10gZ2V0TGFiZWxzKCkKLSAgewotCSAgU3RyaW5nW10gc3RyaW5nQXJyYXkgPSBuZXcgU3RyaW5nW2lkc18uc2l6ZSgpXTsgCi0JICBsYWJlbHNfLmNvcHlJbnRvKHN0cmluZ0FycmF5KTsKLQkgIHJldHVybiBzdHJpbmdBcnJheTsKLSAgfQotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL1NjZW5hcmlvQ2xlYW51cENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL1NjZW5hcmlvQ2xlYW51cENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTliNDRmNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2NvbW1vbi9TY2VuYXJpb0NsZWFudXBDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA4MjUgICAxNTUxMTQgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1vbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5XU0RMUGFyc2VyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuT2JqZWN0U2VsZWN0aW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotLyoqCi0gKiAgVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIHRvIGNsZWFuIHVwIGRhdGEgYWZ0ZXIgZWl0aGVyIHRoZQotICogIGNsaWVudCBvciBzZXJ2aWNlIHdpemFyZHMuICBDdXJyZW50bHkgaXMganVzdCByZXNldHMgdGhlCi0gKiAgcGFyc2VyIGZhY3RvcnkuIAotICoKLSAqLwotcHVibGljIGNsYXNzIFNjZW5hcmlvQ2xlYW51cENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0JICBXU0RMUGFyc2VyRmFjdG9yeS5raWxsUGFyc2VyKCk7Ci0gICAgT2JqZWN0U2VsZWN0aW9uUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5jbGVhbnVwKCk7Ci0JCi0JICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotCi0gIAotICBwdWJsaWMgSVN0YXR1cyB1bmRvKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotCSAgLy8gRXZlbiBpZiB0aGUgdXNlciBjYW5jZWxzIG91dCBvZiB0aGUgd2l6YXJkIHdlIHdhbnQgdG8KLQkgIC8vIGtpbGwgdGhlIHBhcnNlci4KLQkgIFdTRExQYXJzZXJGYWN0b3J5LmtpbGxQYXJzZXIoKTsKLSAgICBPYmplY3RTZWxlY3Rpb25SZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmNsZWFudXAoKTsKLSAgICAKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vU2VydmVyU2VsZWN0aW9uVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL1NlcnZlclNlbGVjdGlvblV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZGZhYjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vU2VydmVyU2VsZWN0aW9uVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMjQgICAxMTY3NTAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA3MDExOSAgIDE1OTQ1OCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb247Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb25SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5JU2VydmVyRGVmYXVsdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uU2VydmVySW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVJ1bnRpbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklSdW50aW1lVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZTsKLQotCi1wdWJsaWMgY2xhc3MgU2VydmVyU2VsZWN0aW9uVXRpbHMKLXsKLQotICBwdWJsaWMgc3RhdGljIElSdW50aW1lIGdldFJ1bnRpbWVUYXJnZXQoU3RyaW5nIHByb2plY3ROYW1lKQotICB7Ci0gIAlpZiggcHJvamVjdE5hbWUgIT0gbnVsbCAmJiBwcm9qZWN0TmFtZS5sZW5ndGgoKSA+IDAgKXsgLy8kTk9OLU5MUy0xJAotICAJCUlQcm9qZWN0IHByb2plY3QgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotICAJCWlmKCBwcm9qZWN0ICE9IG51bGwgJiYgcHJvamVjdC5leGlzdHMoKSApewotICAJCQlyZXR1cm4gU2VydmVyQ29yZS5nZXRQcm9qZWN0UHJvcGVydGllcyhwcm9qZWN0KS5nZXRSdW50aW1lVGFyZ2V0KCk7IAotICAJCX0KLSAgCX0KLSAgCXJldHVybiBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIElTZXJ2ZXIgZ2V0Rmlyc3RFeGlzdGluZ1NlcnZlckZyb21GYWN0b3J5SWQoU3RyaW5nIGZhY3RvcnlJZCkKLSAgewotICAJSVNlcnZlcltdIHNlcnZlcnMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlcnMoKTsKLSAgCWlmIChzZXJ2ZXJzPT1udWxsIHx8IHNlcnZlcnMubGVuZ3RoIT0wKQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgCWVsc2UKLSAgCXsKLSAgCSAgZm9yIChpbnQgaT0wOyBpPHNlcnZlcnMubGVuZ3RoOyBpKyspCi0gIAkgIHsKLSAgCSAgICBJU2VydmVyIHNlcnZlciA9IChJU2VydmVyKXNlcnZlcnNbaV07Ci0gIAkgICAgaWYgKHNlcnZlci5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKS5lcXVhbHMoZmFjdG9yeUlkKSkKLSAgCSAgICB7Ci0gIAkgICAgICByZXR1cm4gc2VydmVyOwotICAJICAgIH0KLSAgCSAgfQotICAJfQotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIElTZXJ2ZXJbXSBnZXRDb21wYXRpYmxlRXhpc3RpbmdTZXJ2ZXJzKElSdW50aW1lIHJ1bnRpbWUpCi0gIHsKLSAgICBpZiAocnVudGltZSA9PSBudWxsKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgCi0gICAgSVNlcnZlcltdIHNlcnZlcnMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlcnMoKTsKLSAgICBpZiAoc2VydmVycz09bnVsbCB8fCBzZXJ2ZXJzLmxlbmd0aD09MCkKLSAgICAgIHJldHVybiBudWxsOwotICAgIAotICAgIEFycmF5TGlzdCBjb21wYXRpYmxlU2VydmVyc0xpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgSVJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBlID0gcnVudGltZS5nZXRSdW50aW1lVHlwZSgpOwotICAgIGlmIChydW50aW1lVHlwZSAhPSBudWxsKQotICAgIHsKLSAgICAJU3RyaW5nIHJ1bnRpbWVJZCA9IHJ1bnRpbWVUeXBlLmdldElkKCk7Ci0JCWZvciAoaW50IGk9MDsgaTxzZXJ2ZXJzLmxlbmd0aDsgaSsrKQotCQl7Ci0JCSAgSVNlcnZlciBzZXJ2ZXIgPSAoSVNlcnZlcilzZXJ2ZXJzW2ldOwotCQkgIElSdW50aW1lVHlwZSBydW50aW1lVHlwZTIgPSBzZXJ2ZXIuZ2V0UnVudGltZSgpLmdldFJ1bnRpbWVUeXBlKCk7Ci0JCSAgaWYgKHJ1bnRpbWVUeXBlMiAhPSBudWxsKQotCQkgIHsKLQkJCSAgU3RyaW5nIHNlcnZlclJ1bnRpbWVJZCA9IHJ1bnRpbWVUeXBlMi5nZXRJZCgpOwotCQkJICBpZiAoc2VydmVyUnVudGltZUlkLmVxdWFscyhydW50aW1lSWQpKQotCQkJICAgIGNvbXBhdGlibGVTZXJ2ZXJzTGlzdC5hZGQoc2VydmVyKTsKLQkJICB9Ci0JCSAgCi0JCX0KLSAgICB9Ci0gICAgaWYgKGNvbXBhdGlibGVTZXJ2ZXJzTGlzdC5zaXplKCk8MSkKLSAgICAgIHJldHVybiBudWxsOwotICAgIAotICAgIAotICAgIE9iamVjdFtdIGNvbXBhdGlibGVTZXJ2ZXJzQXJyYXkgPSBjb21wYXRpYmxlU2VydmVyc0xpc3QudG9BcnJheSgpOwotICAgIElTZXJ2ZXJbXSBjb21wYXRpYmxlU2VydmVycyA9IG5ldyBJU2VydmVyW2NvbXBhdGlibGVTZXJ2ZXJzQXJyYXkubGVuZ3RoXTsKLSAgICBmb3IgKGludCBqPTA7IGo8Y29tcGF0aWJsZVNlcnZlcnNBcnJheS5sZW5ndGg7IGorKykKLSAgICB7Ci0gICAgICBjb21wYXRpYmxlU2VydmVyc1tqXSA9IChJU2VydmVyKWNvbXBhdGlibGVTZXJ2ZXJzQXJyYXlbal07Ci0gICAgfQotICAgIAotICAgIHJldHVybiBjb21wYXRpYmxlU2VydmVyczsKLSAgfQotICAgIAotICBwdWJsaWMgc3RhdGljIFNlcnZlckluZm8gZ2V0RXh0ZW5kZXJSZWNvbW1lbmRhdGlvbihJUHJvamVjdCBwcm9qZWN0KQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgIElFeHRlbnNpb25SZWdpc3RyeSByZWcgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGVsZW1lbnRzID0gcmVnLmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0Zvcigib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uIiwgInNlcnZlckRlZmF1bHRlciIpOwotICAgIGZvciAoaW50IGk9MDsgaTxlbGVtZW50cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBPYmplY3Qgc2VydmVyRGVmYXVsdGVyT2JqZWN0ID0gZWxlbWVudHNbaV0uY3JlYXRlRXhlY3V0YWJsZUV4dGVuc2lvbigiY2xhc3MiKTsKLSAgICAgIGlmIChzZXJ2ZXJEZWZhdWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBJU2VydmVyRGVmYXVsdGVyKQotICAgICAgewotICAgICAgICBJU2VydmVyRGVmYXVsdGVyIHNlcnZlckRlZmF1bHRlciA9IChJU2VydmVyRGVmYXVsdGVyKXNlcnZlckRlZmF1bHRlck9iamVjdDsKLSAgICAgICAgU2VydmVySW5mbyBzZXJ2ZXJJbmZvID0gc2VydmVyRGVmYXVsdGVyLnJlY29tbWVuZERlZmF1bHRTZXJ2ZXIocHJvamVjdCk7Ci0gICAgICAgIGlmIChzZXJ2ZXJJbmZvICE9IG51bGwpCi0gICAgICAgICAgcmV0dXJuIHNlcnZlckluZm87Ci0gICAgICB9Ci0gICAgICAKLSAgICB9Ci0gICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvY29tbW9uL1ZhbGlkYXRpb25VdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vVmFsaWRhdGlvblV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZTRmYTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9jb21tb24vVmFsaWRhdGlvblV0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDczICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMiAgIDExNTgzNCByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDEzICAgMTM1NTgxIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MjAgICAxMzYxNTggcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQyMCAgIDEzNjcwNSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDIxICAgMTM2NzYxIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MjUgICAxMzc4MzEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQyNyAgIDEyNjc4MCByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDI3ICAgMTM4MDU4IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwOTA1ICAgMTU2MjMwIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuLCBIYW5kbGluZyBwcm9qZWN0cyB3aXRoIG5vIHRhcmdldCBydW50aW1lCi0gKiAyMDA3MDExOSAgIDE1OTQ1OCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqIDIwMDcwNzIzICAgMTk0NDM0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuLCBDaGVjayBmb3Igbm9uLWV4aXN0aW5nIEVBUiB3aXRoIGNvbnRlbnQgbm90IGRlbGV0ZWQKLSAqIDIwMDcxMTA3ICAgMjAzODI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MTEzMCAgIDIwMzgyNiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAyMDUgICAxNzAxNDEga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNDE2ICAgMjE1MDg0IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNDE3ICAgMjI3NTk5IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDcxNyAgIDI0MTI4MyBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBDbGFzcyB2ZXJzaW9uIGVycm9yIHdoZW4gaW52b2tpbmcgc2FtcGxlIEpTUCBvbiBUb21jYXQgNS41IHdoZW4gSmF2YSBwcm9qZWN0IGlzIEphdmEgNgotICogMjAwODEwMDEgICAyNDM4NjkgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgV2ViIFNlcnZpY2UgdG9vbHMgYWxsb3dpbmcgbWl4ZWQgSjJFRSBsZXZlbHMKLSAqIDIwMDkwMTIxICAgMjYxNzMwIHpoYW5nQGNhLmlibS5jb20gLSBBbGxhbiBaaGFuZywgV2ViU2VydmljZSBjbGllbnQgcnVudGltZSBpZCByZXR1cm4gbnVsbAotICogMjAwOTAzMDIgICAyNDk2MDIgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgUElJLSBhc3NvY2lhdGlvbiB3YXJuaW5nIG1lc3NhZ2UgbmVlZHMgdXBkYXRlCi0gKiAyMDA5MDQwMSAgIDI2OTk5NCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBOTFMtIFZhbGlkYXRpb24gbWVzc2FnZXMgdW5jbGVhciB3aGVuIHNlcnZlcnMgZG9uJ3Qgc3VwcG9ydCBydW50aW1lL3Byb2plY3QgY29tYm8KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JQ29udGFpbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guV29ya2JlbmNoUmVzb3VyY2VIZWxwZXJCYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLnByb2plY3QuSjJFRVByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUubW9kZWwuaW50ZXJuYWwudmFsaWRhdGlvbi5FQVJWYWxpZGF0aW9uTWVzc2FnZVJlc291cmNlSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLmludGVybmFsLldlYlNlcnZpY2VDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLlBvcnRDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLldTRExQb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5XZWJTZXJ2aWNlRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLldlYlNlcnZpY2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5Xc2RkUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LnNlcnZlci5jb3JlLkZhY2V0VXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TZXJ2ZXJVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5SdW50aW1lRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuVHlwZVJ1bnRpbWVTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uLlNlbGVjdGlvbkxpc3RDaG9pY2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5Db21wb25lbnRDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5pbnRlcm5hbC51dGlsLklNb2R1bGVDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLnJlc291cmNlcy5JVmlydHVhbENvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JRmFjZXRlZFByb2plY3RUZW1wbGF0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JUHJvamVjdEZhY2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklQcm9qZWN0RmFjZXRWZXJzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLlByb2plY3RGYWNldHNNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLlZlcnNpb25Gb3JtYXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXJUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VTY2VuYXJpbzsKLQotLyoqCi0gKgotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGlvblV0aWxzCi17Ci0JLy9Db25zdGFudHMgdG8gaGVscCBkZWNpZGUgaG93IG11Y2ggdmFsaWRhdGlvbiB0byBkby4KLQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBWQUxJREFURV9OT05FID0gMDsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBWQUxJREFURV9BTEwgPSAxOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFZBTElEQVRFX1NFUlZFUl9SVU5USU1FX0NIQU5HRVMgPSAyOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFZBTElEQVRFX1BST0pFQ1RfQ0hBTkdFUyA9IDM7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVkFMSURBVEVfU0NBTEVfQ0hBTkdFUyA9IDQ7Ci0KLSAgLyoqCi0gICAqIAotICAgKi8KLSAgcHVibGljIFZhbGlkYXRpb25VdGlscygpCi0gIHsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgdmFsaWRhdGlvbiBzdGF0ZSBiYXNlZCBvbiB0aGUgY3VycmVudCB2YWxpZGF0aW9uIHN0YXRlCi0gICAqIGFuZCB0aGUgcmVxdWVzdGVkIHZhbGlkYXRpb24gc3RhdGUuIElmIHRoZSByZXF1ZXN0ZWQgdmFsaWRhdGlvbiBzdGF0ZQotICAgKiBkb2VzIG5vdCBjb3ZlciBhbGwgdGhlIHZhbGlkYXRpb24gY292ZXJlZCBieSB0aGUgY3VycmVudCB2YWxpZGF0aW9uCi0gICAqIHN0YXRlLCBWQUxJREFURV9BTEwgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgdGhlIHJlcXVlc3RlZCB2YWxpZGF0aW9uCi0gICAqIHN0YXRlIGlzIHJldHVybmVkLgotICAgKiAKLSAgICogQHBhcmFtIGN1cnJlbnRWYWxpZGF0aW9uU3RhdGUgdGhlIHZhbGlkYXRvbiBzdGF0ZSBhdCB0aGUgdGltZSB0aGUgY2FsbGVyJ3MgcmVxdWVzdHMgYSBjaGFuZ2UKLSAgICogQHBhcmFtIHJlcXVlc3RlZFZhbGlkYXRpb25TdGF0ZSB0aGUgdmFsaWRhdGlvbiBzdGF0ZSBiZWluZyByZXF1ZXN0ZWQgYnkgdGhlIGNhbGxlci4KLSAgICogQHJldHVybiBSZXR1cm5zIFZBTElEQVRFX0FMTCBpZiB0aGUgcmVxdWVzdGVkIHZhbGlkYXRpb24gc3RhdGUKLSAgICogZG9lcyBub3QgY292ZXIgYWxsIHRoZSB2YWxpZGF0aW9uIGNvdmVyZWQgYnkgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbgotICAgKiBzdGF0ZS4gUmV0dXJuZWQgcmVxdWVzdGVkVmFsaWRhdGlvblN0YXRlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0TmV3VmFsaWRhdGlvblN0YXRlKGludCBjdXJyZW50VmFsaWRhdGlvblN0YXRlLCBpbnQgcmVxdWVzdGVkVmFsaWRhdGlvblN0YXRlKSB7Ci0JCWludCBuZXdWYWxpZGF0aW9uU3RhdGU7Ci0JCWlmIChjdXJyZW50VmFsaWRhdGlvblN0YXRlID09IFZBTElEQVRFX05PTkUKLQkJCQl8fCBjdXJyZW50VmFsaWRhdGlvblN0YXRlID09IHJlcXVlc3RlZFZhbGlkYXRpb25TdGF0ZSkgewotCQkJbmV3VmFsaWRhdGlvblN0YXRlID0gcmVxdWVzdGVkVmFsaWRhdGlvblN0YXRlOwotCQl9IGVsc2UgewotCQkJbmV3VmFsaWRhdGlvblN0YXRlID0gVkFMSURBVEVfQUxMOwotCQl9Ci0KLQkJcmV0dXJuIG5ld1ZhbGlkYXRpb25TdGF0ZTsKLQotCX0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIElTdGF0dXMgcmVzdWx0aW5nIGZyb20gY2hlY2tpbmcgZm9yIGVtcHR5IGZpZWxkcy4gVXNlZCBmb3IgdmFsaWRhdGlvbiBvZiBwYWdlIDEgb2YgdGhlCi0gICAqIFdlYiBzZXJ2aWNlL2NsaWVudCB3aXphcmRzLgotICAgKiBAcGFyYW0gdmFsaWRhdGlvblN0YXRlIG9uZSBvZiBWQUxJREFURV9OT05FLCBWQUxJREFURV9BTEwsIFZBTElEQVRFX1NFUlZFUl9SVU5USU1FX0NIQU5HRVMsIFZBTElEQVRFX1BST0pFQ1RfQ0hBTkdFUywgVkFMSURBVEVfU0NBTEVfQ0hBTkdFUwotICAgKiBAcGFyYW0gdHlwZUlkIFdlYiBzZXJ2aWNlIHR5cGUgaWQgKGlzQ2xpZW50PWZhbHNlKSBvciBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZSBpZCAoaXNDbGllbnQ9dHJ1ZSkgCi0gICAqIEBwYXJhbSBzZXJ2aWNlSW1wbCBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdCBzZWxlY3Rpb24gZnJvbSBwYWdlIDEKLSAgICogQHBhcmFtIHJ1bnRpbWVJZCBXZWIgc2VydmljZSBydW50aW1lIGlkCi0gICAqIEBwYXJhbSBzZXJ2ZXJJZCBzZXJ2ZXIgdHlwZSBpZAotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgbmFtZSBvZiBwcm9qZWN0Ci0gICAqIEBwYXJhbSBuZWVkRWFyIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgRUFSIGlzIHJlcXVpcmVkLCA8Y29kZT5mYWxzZTwvY29kZT4gaWYgbm90LgotICAgKiBAcGFyYW0gZWFyUHJvamVjdE5hbWUgbmFtZSBvZiBFQVIgcHJvamVjdAotICAgKiBAcGFyYW0gcHJvamVjdFR5cGVJZCB0ZW1wbGF0ZSBpZAotICAgKiBAcGFyYW0gaXNDbGllbnQgYm9vbGVhbiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgbWV0aG9kIGlzIGJlaW5nIGNhbGxlZCBmb3IgY2xpZW50IHNpZGUgdmFsaWRhdGlvbiwgCi0gICAqIDxjb2RlPmZhbHNlPC9jb2RlPiBmb3Igc2VydmljZSBzaWRlIHZhbGlkYXRpb24uCi0gICAqIEByZXR1cm4gSVN0YXR1cyB3aXRoIHNldmVyaXR5IElTdGF0dXMuT0sgaWYgYWxsIG1hbmRhdG9yeSBmaWVsZHMgYXJlIG5vbi1udWxsIGFuZCBub24tZW1wdHkuIAotICAgKiBJU3RhdHVzIHdpdGggc2V2ZXJpdHkgSVN0YXR1cy5FUlJPUiBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyBjaGVja01pc3NpbmdGaWVsZFN0YXR1cyhpbnQgdmFsaWRhdGlvblN0YXRlLCBTdHJpbmcgdHlwZUlkLCBTdHJpbmcgc2VydmljZUltcGwsIFN0cmluZyBydW50aW1lSWQsIFN0cmluZyBzZXJ2ZXJJZCwKLQkJCVN0cmluZyBwcm9qZWN0TmFtZSwgYm9vbGVhbiBuZWVkRWFyLCBTdHJpbmcgZWFyUHJvamVjdE5hbWUsIFN0cmluZyBwcm9qZWN0VHlwZUlkLAotCQkJYm9vbGVhbiBpc0NsaWVudCkKLSAgewotCQkvLyBPYmplY3Qgc2VsZWN0aW9uCSAgCi0JICBpZiAodmFsaWRhdGlvblN0YXRlPT1WQUxJREFURV9BTEwgJiYgIWlzQ2xpZW50KQotCSAgewotCQlpZiAoc2VydmljZUltcGwubGVuZ3RoKCkgPT0gMCkgewotCQkJaW50IHNjZW5hcmlvID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2NlbmFyaW9Gcm9tVHlwZUlkKHR5cGVJZCk7Ci0JCQlpZiAoc2NlbmFyaW8gPT0gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTVVQKQotCQkJewotCQkJICByZXR1cm4gU3RhdHVzVXRpbHMKLQkJCQkJLmVycm9yU3RhdHVzKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfTk9fT0JKRUNUX1NFTEVDVElPTik7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkgIHJldHVybiBTdGF0dXNVdGlscwotCQkJCQkuZXJyb3JTdGF0dXMoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19OT19TRVJWSUNFX1NFTEVDVElPTik7CQkJCQotCQkJfQotCQl9Ci0JICB9Ci0KLQkJLy8gV2ViIHNlcnZpY2UgcnVudGltZQotCSAgICBpZiAodmFsaWRhdGlvblN0YXRlID09IFZBTElEQVRFX0FMTCB8fCB2YWxpZGF0aW9uU3RhdGUgPT0gVkFMSURBVEVfU0VSVkVSX1JVTlRJTUVfQ0hBTkdFUykgewotCQkJaWYgKHJ1bnRpbWVJZCA9PSBudWxsIHx8IHJ1bnRpbWVJZC5sZW5ndGgoKSA9PSAwKSB7Ci0JCQkJaWYgKGlzQ2xpZW50KSB7Ci0JCQkJCXJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX05PX1JVTlRJTUUsCi0JCQkJCQkJbmV3IFN0cmluZ1tdIHsgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19DTElFTlRfU1VCIH0pKTsKLQkJCQl9IGVsc2UgewotCQkJCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19OT19SVU5USU1FLAotCQkJCQkJCW5ldyBTdHJpbmdbXSB7IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfU0VSVklDRV9TVUIgfSkpOwotCQkJCX0KLQkJCX0KLQkJfQotCi0JICAgIGlmICh2YWxpZGF0aW9uU3RhdGUgPT0gVkFMSURBVEVfQUxMIHx8IHZhbGlkYXRpb25TdGF0ZSA9PSBWQUxJREFURV9QUk9KRUNUX0NIQU5HRVMpIHsKLQkJCS8vIFByb2plY3QKLQkJCWlmIChwcm9qZWN0TmFtZSA9PSBudWxsIHx8IHByb2plY3ROYW1lLmxlbmd0aCgpID09IDApIHsKLQkJCQlpZiAoaXNDbGllbnQpIHsKLQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfQ0xJRU5UX1BST0pFQ1RfRU1QVFksIG5ldyBTdHJpbmdbXSB7ICIiIH0pKTsKLQkJCQl9IGVsc2UgewotCQkJCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19TRVJWSUNFX1BST0pFQ1RfRU1QVFksIG5ldyBTdHJpbmdbXSB7ICIiIH0pKTsKLQkJCQl9Ci0JCQl9Ci0KLQkJCS8vIFByb2plY3QgdHlwZSAoaWYgcHJvamVjdCBkb2VzIG5vdCBleGlzdCkKLQkJCUlQcm9qZWN0IHByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotCQkJaWYgKCFwcm9qZWN0LmV4aXN0cygpKSB7Ci0JCQkJaWYgKHByb2plY3RUeXBlSWQgPT0gbnVsbCB8fCBwcm9qZWN0VHlwZUlkLmxlbmd0aCgpID09IDApIHsKLQotCQkJCQlpZiAoaXNDbGllbnQpIHsKLQkJCQkJCXJldHVybiBTdGF0dXNVdGlscwotCQkJCQkJCQkuZXJyb3JTdGF0dXMoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19DTElFTlRfUFJPSkVDVF9UWVBFX0VNUFRZKTsKLQkJCQkJfSBlbHNlIHsKLQkJCQkJCXJldHVybiBTdGF0dXNVdGlscwotCQkJCQkJCQkuZXJyb3JTdGF0dXMoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19TRVJWSUNFX1BST0pFQ1RfVFlQRV9FTVBUWSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0KLQkJCS8vIEVhciAoaWYgbmVlZCBlYXIpCi0JCQlpZiAobmVlZEVhcikgewotCQkJCWlmIChlYXJQcm9qZWN0TmFtZSA9PSBudWxsIHx8IGVhclByb2plY3ROYW1lLmxlbmd0aCgpID09IDApIHsKLQkJCQkJaWYgKGlzQ2xpZW50KSB7Ci0JCQkJCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfQ0xJRU5UX0VBUl9FTVBUWSwgbmV3IFN0cmluZ1tdIHsgIiIgfSkpOwotCQkJCQl9IGVsc2UgewotCQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1NFUlZJQ0VfRUFSX0VNUFRZLCBuZXcgU3RyaW5nW10geyAiIiB9KSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkgICAgCi0JCS8vIFNlcnZlciAoaWYgV2ViIHNlcnZpY2UgcnVudGltZSByZXF1aXJlcyBhIHNlcnZlciBvciBwcm9qZWN0IGRvZXMgbm90Ci0JCS8vIGV4aXN0KQotCSAgICBpZiAodmFsaWRhdGlvblN0YXRlID09IFZBTElEQVRFX0FMTCB8fCB2YWxpZGF0aW9uU3RhdGUgPT0gVkFMSURBVEVfU0VSVkVSX1JVTlRJTUVfQ0hBTkdFUwotCQkJCXx8IHZhbGlkYXRpb25TdGF0ZSA9PSBWQUxJREFURV9QUk9KRUNUX0NIQU5HRVMpIHsKLQkJCWlmIChzZXJ2ZXJJZCA9PSBudWxsIHx8IHNlcnZlcklkLmxlbmd0aCgpID09IDApIHsKLQkJCQlSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZUJ5SWQocnVudGltZUlkKTsKLQkJCQlpZiAoZGVzYy5nZXRTZXJ2ZXJSZXF1aXJlZCgpKSB7Ci0JCQkJCWlmIChpc0NsaWVudCkgewotCQkJCQkJU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19OT19TRVJWRVIsCi0JCQkJCQkJCW5ldyBTdHJpbmdbXSB7IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfQ0xJRU5UX1NVQiB9KSk7Ci0JCQkJCX0gZWxzZSB7Ci0JCQkJCQlTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX05PX1NFUlZFUiwKLQkJCQkJCQkJbmV3IFN0cmluZ1tdIHsgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19TRVJWSUNFX1NVQiB9KSk7Ci0JCQkJCX0KLQkJCQl9IGVsc2UgewotCQkJCQlJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQkJCQkJaWYgKCFwcm9qZWN0LmV4aXN0cygpKSB7Ci0JCQkJCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfUFJPSkVDVF9NVVNUX0VYSVNULAotCQkJCQkJCQluZXcgU3RyaW5nW10geyBwcm9qZWN0TmFtZSB9KSk7Ci0KLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCQkKLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIElTdGF0dXMgcmVzdWx0aW5nIGZyb20gY2hlY2tpbmcgZm9yIGVycm9ycy4gVXNlZCBmb3IgdmFsaWRhdGlvbiBvZiBwYWdlIDEgb2YgdGhlCi0gICAqIFdlYiBzZXJ2aWNlL2NsaWVudCB3aXphcmRzLgotICAgKiBAcGFyYW0gdmFsaWRhdGlvblN0YXRlIG9uZSBvZiBWQUxJREFURV9OT05FLCBWQUxJREFURV9BTEwsIFZBTElEQVRFX1NFUlZFUl9SVU5USU1FX0NIQU5HRVMsIFZBTElEQVRFX1BST0pFQ1RfQ0hBTkdFUywgVkFMSURBVEVfU0NBTEVfQ0hBTkdFUwotICAgKiBAcGFyYW0gdHlwZVJ1bnRpbWVTZXJ2ZXIgV2ViIHNlcnZpY2UgcnVudGltZSwgdHlwZSBhbmQgc2VydmVyIAotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgbmFtZSBvZiBwcm9qZWN0Ci0gICAqIEBwYXJhbSBuZWVkRWFyIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgRUFSIGlzIHJlcXVpcmVkLCA8Y29kZT5mYWxzZTwvY29kZT4gaWYgbm90LgotICAgKiBAcGFyYW0gZWFyUHJvamVjdE5hbWUgbmFtZSBvZiBFQVIgcHJvamVjdAotICAgKiBAcGFyYW0gcHJvamVjdFR5cGVJZCB0ZW1wbGF0ZSBpZAotICAgKiBAcGFyYW0gaXNDbGllbnQgYm9vbGVhbiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgbWV0aG9kIGlzIGJlaW5nIGNhbGxlZCBmb3IgY2xpZW50IHNpZGUgdmFsaWRhdGlvbiwgCi0gICAqIDxjb2RlPmZhbHNlPC9jb2RlPiBmb3Igc2VydmljZSBzaWRlIHZhbGlkYXRpb24uCi0gICAqIEByZXR1cm4gSVN0YXR1cyB3aXRoIHNldmVyaXR5IElTdGF0dXMuT0sgaWYgbm8gZXJyb3JzIGFyZSBwcmVzZW50LAotICAgKiBJU3RhdHVzIHdpdGggc2V2ZXJpdHkgSVN0YXR1cy5FUlJPUiBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyBjaGVja0Vycm9yU3RhdHVzKGludCB2YWxpZGF0aW9uU3RhdGUsIFR5cGVSdW50aW1lU2VydmVyIHR5cGVSdW50aW1lU2VydmVyLCBTdHJpbmcgcHJvamVjdE5hbWUsIFN0cmluZyBpbml0aWFsUHJvamVjdE5hbWUsIGJvb2xlYW4gbmVlZEVhciwgU3RyaW5nIGVhclByb2plY3ROYW1lLCBTdHJpbmcgcHJvamVjdFR5cGVJZCwKLQkJCWJvb2xlYW4gaXNDbGllbnQpIHsKLQkKLQkgIAkvLyBFbnN1cmUgc2VydmVyLCBXZWIgc2VydmljZSBydW50aW1lLCBhbmQgV2ViIHNlcnZpY2UgdHlwZSBhcmUKLQkJLy8gY29tcGF0aWJsZQotCi0JCVN0cmluZyB0eXBlSWQgPSB0eXBlUnVudGltZVNlcnZlci5nZXRUeXBlSWQoKTsKLQkJU3RyaW5nIHJ1bnRpbWVJZCA9IHR5cGVSdW50aW1lU2VydmVyLmdldFJ1bnRpbWVJZCgpOwotCQlTdHJpbmcgc2VydmVySWQgPSB0eXBlUnVudGltZVNlcnZlci5nZXRTZXJ2ZXJJZCgpOwotCQlTdHJpbmcgc2VydmVySW5zdGFuY2VJZCA9IHR5cGVSdW50aW1lU2VydmVyLmdldFNlcnZlckluc3RhbmNlSWQoKTsKLQotCQkvLyBMYWJlbHMKLQkgICAgU3RyaW5nIHNlcnZlckxhYmVsID0gIiI7Ci0JICAgIGlmIChzZXJ2ZXJJZCAhPSBudWxsICYmIHNlcnZlcklkLmxlbmd0aCgpPjApCi0JICAgIHsKLQkgICAgCXNlcnZlckxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmVyTGFiZWxCeUlkKHNlcnZlcklkKTsKLQkgICAgfQotCQlTdHJpbmcgcnVudGltZUxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZUxhYmVsQnlJZChydW50aW1lSWQpOwotCQkKLQkgICAgaWYgKHZhbGlkYXRpb25TdGF0ZSA9PSBWQUxJREFURV9BTEwgfHwgdmFsaWRhdGlvblN0YXRlID09IFZBTElEQVRFX1NFUlZFUl9SVU5USU1FX0NIQU5HRVMpIHsKLQkgICAgCWlmIChzZXJ2ZXJJZCAhPSBudWxsICYmIHNlcnZlcklkLmxlbmd0aCgpID4gMCkgewotCQkJCWlmIChpc0NsaWVudCkgewotCQkJCQlpZiAoIVdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyCi0JCQkJCQkJLmlzU2VydmVyQ2xpZW50UnVudGltZVR5cGVTdXBwb3J0ZWQoc2VydmVySWQsCi0JCQkJCQkJCQlydW50aW1lSWQsIHR5cGVJZCkpIHsKLQkJCQkJCXJldHVybiBTdGF0dXNVdGlscwotCQkJCQkJCQkuZXJyb3JTdGF0dXMoTkxTCi0JCQkJCQkJCQkJLmJpbmQoCi0JCQkJCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0lOVkFMSURfU1JUX1NFTEVDVElPTlMsCi0JCQkJCQkJCQkJCQluZXcgU3RyaW5nW10geyBzZXJ2ZXJMYWJlbCwKLQkJCQkJCQkJCQkJCQkJcnVudGltZUxhYmVsIH0pKTsKLQkJCQkJfQotCQkJCX0gZWxzZSB7Ci0JCQkJCWlmICghV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIKLQkJCQkJCQkuaXNTZXJ2ZXJSdW50aW1lVHlwZVN1cHBvcnRlZChzZXJ2ZXJJZCwgcnVudGltZUlkLAotCQkJCQkJCQkJdHlwZUlkKSkgewotCQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzCi0JCQkJCQkJCS5lcnJvclN0YXR1cyhOTFMKLQkJCQkJCQkJCQkuYmluZCgKLQkJCQkJCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfSU5WQUxJRF9TUlRfU0VMRUNUSU9OUywKLQkJCQkJCQkJCQkJCW5ldyBTdHJpbmdbXSB7IHNlcnZlckxhYmVsLAotCQkJCQkJCQkJCQkJCQlydW50aW1lTGFiZWwgfSkpOwotCQkJCQl9Ci0JCQkJCi0JCQkJCWlmIChpbml0aWFsUHJvamVjdE5hbWUgIT0gIiIgJiYgc2VydmVySWQgIT0gbnVsbCAmJiAhcHJvamVjdE5hbWUuZXF1YWxzKGluaXRpYWxQcm9qZWN0TmFtZSkgJiYKLQkJCQkgICAgCQkoV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2NlbmFyaW9Gcm9tVHlwZUlkKHR5cGVJZCkgPT0gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTVVQKSAmJgotCQkJCSAgICAJCUoyRUVVdGlscy5pc0phdmFDb21wb25lbnQoUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KGluaXRpYWxQcm9qZWN0TmFtZSkpKXsKLQkJCQkgICAgCQkKLQkJCQkgICAgCQlpZighZG9lc1NlcnZlclN1cHBvcnRQcm9qZWN0KHNlcnZlcklkLGluaXRpYWxQcm9qZWN0TmFtZSkpewotCQkJCSAgICAJICAgIAlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19TRVJWSUNFX1NFUlZFUl9ET0VTX05PVF9TVVBQT1JUX0pBVkFQUk9KRUNULAotCQkJCQkJCQkJCW5ldyBTdHJpbmdbXSB7IHNlcnZlckxhYmVsLCBpbml0aWFsUHJvamVjdE5hbWUgfSkpOwotCQkJCSAgCQkgICAgfQotCQkJCSAgICAJfQotCQkJCX0KLQkJCX0KLQkgICAgCQotCQl9Ci0JICAgIAotCQkvLyBJZiB0aGUgcHJvamVjdCBleGlzdHMsIGVuc3VyZSBpdCBzdXBwb3J0cyB0aGUgV2ViIHNlcnZpY2UgdHlwZSwgV2ViCi0JCS8vIHNlcnZpY2UgcnVudGltZSwgYW5kIHNlcnZlci4gSWYgdGhlIEVhciBhbHNvIGV4aXN0cyBhbmQgdGhlIHByb2plY3QKLQkJLy8gYW5kIEVhciBhcmUgbm90IGFscmVhZHkgYXNzb2NpYXRlZCwgZW5zdXJlIHRoZXkgY2FuIGJlLgotCQkvLyBJZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdCwgZW5zdXJlIHRoZSBwcm9qZWN0IHR5cGUgc3VwcG9ydHMgdGhlCi0JCS8vIFdlYiBzZXJ2aWNlIHR5cGUsIFdlYiBzZXJ2aWNlIHJ1bnRpbWUsIGFuZCBzZXJ2ZXIKLQkJaWYgKHZhbGlkYXRpb25TdGF0ZSA9PSBWQUxJREFURV9BTEwgfHwgdmFsaWRhdGlvblN0YXRlID09IFZBTElEQVRFX1NFUlZFUl9SVU5USU1FX0NIQU5HRVMKLQkJCQl8fCB2YWxpZGF0aW9uU3RhdGUgPT0gVkFMSURBVEVfUFJPSkVDVF9DSEFOR0VTKSB7Ci0JCQlWYWxpZGF0aW9uVXRpbHMgdmFsVXRpbHMgPSBuZXcgVmFsaWRhdGlvblV0aWxzKCk7Ci0JCQlJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQkJCWlmIChwcm9qZWN0LmV4aXN0cygpKSB7Ci0KLQkJCQlpZiAoaXNDbGllbnQpIHsKLQkJCQkJLy8gQ2hlY2sgaWYgdGhlIHJ1bnRpbWUgc3VwcG9ydHMgaXQuCi0JCQkJCWlmICghV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZG9lc0NsaWVudFR5cGVBbmRSdW50aW1lU3VwcG9ydFByb2plY3QoCi0JCQkJCQkJdHlwZUlkLCBydW50aW1lSWQsIHByb2plY3ROYW1lKSkgewotCQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0NMSUVOVF9SVU5USU1FX0RPRVNfTk9UX1NVUFBPUlRfUFJPSkVDVCwKLQkJCQkJCQkJbmV3IFN0cmluZ1tdIHsgcnVudGltZUxhYmVsLCBzZXJ2ZXJMYWJlbCwgcHJvamVjdE5hbWUgfSkpOwotCQkJCQl9Ci0KLQkJCQkJLy8gQ2hlY2sgaWYgdGhlIHNlcnZlciBzdXBwb3J0cyBpdC4KLQkJCQkJaWYgKHNlcnZlcklkICE9IG51bGwgJiYgc2VydmVySWQubGVuZ3RoKCkgPiAwKSB7Ci0JCQkJCQlpZiAoIXZhbFV0aWxzLmRvZXNTZXJ2ZXJTdXBwb3J0UHJvamVjdChzZXJ2ZXJJZCwgcHJvamVjdE5hbWUpKSB7Ci0JCQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfQ0xJRU5UX1NFUlZFUl9ET0VTX05PVF9TVVBQT1JUX1BST0pFQ1QsCi0JCQkJCQkJCQkJCQkJbmV3IFN0cmluZ1tdIHsgc2VydmVyTGFiZWwsIHByb2plY3ROYW1lIH0pKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0gZWxzZSB7Ci0JCQkJCS8vIENoZWNrIGlmIHRoZSBydW50aW1lIHN1cHBvcnRzIGl0LgotCQkJCQlpZiAoIVdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmRvZXNTZXJ2aWNlVHlwZUFuZFJ1bnRpbWVTdXBwb3J0UHJvamVjdCgKLQkJCQkJCQl0eXBlSWQsIHJ1bnRpbWVJZCwgcHJvamVjdE5hbWUpKSB7Ci0JCQkJCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfU0VSVklDRV9SVU5USU1FX0RPRVNfTk9UX1NVUFBPUlRfUFJPSkVDVCwKLQkJCQkJCQkJbmV3IFN0cmluZ1tdIHsgcnVudGltZUxhYmVsLCBzZXJ2ZXJMYWJlbCwgcHJvamVjdE5hbWUgfSkpOwotCQkJCQl9Ci0KLQkJCQkJLy8gQ2hlY2sgaWYgdGhlIHNlcnZlciBzdXBwb3J0cyBpdC4KLQkJCQkJaWYgKHNlcnZlcklkICE9IG51bGwgJiYgc2VydmVySWQubGVuZ3RoKCkgPiAwKQotCQkJCQl7Ci0JCQkJCSAgaWYgKCF2YWxVdGlscy5kb2VzU2VydmVyU3VwcG9ydFByb2plY3Qoc2VydmVySWQsIHByb2plY3ROYW1lKSkgewotCQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1NFUlZJQ0VfU0VSVkVSX0RPRVNfTk9UX1NVUFBPUlRfUFJPSkVDVCwKLQkJCQkJCQkJbmV3IFN0cmluZ1tdIHsgc2VydmVyTGFiZWwsIHByb2plY3ROYW1lIH0pKTsKLQkJCQkJICB9Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCS8vIExvb2sgYXQgdGhlIHByb2plY3QgdHlwZSB0byBlbnN1cmUgdGhhdCBpdCBpcyBzdWl0YWJsZSBmb3IKLQkJCQkvLyB0aGUKLQkJCQkvLyBzZWxlY3RlZCBydW50aW1lIGFuZCBzZXJ2ZXIuCi0JCQkJU3RyaW5nIHRlbXBsYXRlSWQgPSBwcm9qZWN0VHlwZUlkOwotCQkJCVN0cmluZyB0ZW1wbGF0ZUxhYmVsID0gRmFjZXRVdGlscy5nZXRUZW1wbGF0ZUxhYmVsQnlJZCh0ZW1wbGF0ZUlkKTsKLQotCQkJCWlmIChpc0NsaWVudCkgewotCQkJCQkvLyBDaGVjayBpZiB0aGUgcnVudGltZSBzdXBwb3J0cyBpdC4KLQkJCQkJaWYgKCFXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5kb2VzQ2xpZW50VHlwZUFuZFJ1bnRpbWVTdXBwb3J0VGVtcGxhdGUoCi0JCQkJCQkJdHlwZUlkLCBydW50aW1lSWQsIHRlbXBsYXRlSWQpKSB7Ci0KLQkJCQkJCXJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZCgKLQkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19DTElFTlRfUlVOVElNRV9ET0VTX05PVF9TVVBQT1JUX1RFTVBMQVRFLAotCQkJCQkJCQluZXcgU3RyaW5nW10geyBydW50aW1lTGFiZWwsIHNlcnZlckxhYmVsLCB0ZW1wbGF0ZUxhYmVsIH0pKTsKLQkJCQkJfQotCi0JCQkJCS8vIENoZWNrIGlmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgaXQuCi0JCQkJCWlmIChzZXJ2ZXJJZCAhPSBudWxsICYmIHNlcnZlcklkLmxlbmd0aCgpPjApCi0JCQkJCXsKLQkJCQkJICBpZiAoIXZhbFV0aWxzLmRvZXNTZXJ2ZXJTdXBwb3J0VGVtcGxhdGUoc2VydmVySWQsIHRlbXBsYXRlSWQpKSB7Ci0JCQkJCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfQ0xJRU5UX1NFUlZFUl9ET0VTX05PVF9TVVBQT1JUX1RFTVBMQVRFLAotCQkJCQkJCQluZXcgU3RyaW5nW10geyBzZXJ2ZXJMYWJlbCwgdGVtcGxhdGVMYWJlbCB9KSk7Ci0JCQkJCSAgfQotCQkJCQl9Ci0KLQkJCQkgICAgaWYgKFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldENsaWVudFJ1bnRpbWVJZCh0eXBlUnVudGltZVNlcnZlciwgcHJvamVjdE5hbWUsIHByb2plY3RUeXBlSWQpID09ICIiKQotCQkJCSAgICB7Ci0JCQkJICAgIAlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfQ0xJRU5UX1JVTlRJTUVfRE9FU19OT1RfU1VQUE9SVF9URU1QTEFURSwKLQkJCQkJCQkJbmV3IFN0cmluZ1tdIHsgcnVudGltZUxhYmVsLCBzZXJ2ZXJMYWJlbCwgdGVtcGxhdGVMYWJlbCB9KSk7Ci0JCQkJICAgIH0KLQkJCQkJCi0JCQkJfSBlbHNlIHsKLQkJCQkJLy8gQ2hlY2sgaWYgdGhlIHJ1bnRpbWUgc3VwcG9ydHMgaXQuCi0JCQkJCWlmICghV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZG9lc1NlcnZpY2VUeXBlQW5kUnVudGltZVN1cHBvcnRUZW1wbGF0ZSgKLQkJCQkJCQl0eXBlSWQsIHJ1bnRpbWVJZCwgdGVtcGxhdGVJZCkpIHsKLQkJCQkJCXJldHVybiBTdGF0dXNVdGlscwotCQkJCQkJCQkuZXJyb3JTdGF0dXMoTkxTCi0JCQkJCQkJCQkJLmJpbmQoCi0JCQkJCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1NFUlZJQ0VfUlVOVElNRV9ET0VTX05PVF9TVVBQT1JUX1RFTVBMQVRFLAotCQkJCQkJCQkJCQkJbmV3IFN0cmluZ1tdIHsgcnVudGltZUxhYmVsLCBzZXJ2ZXJMYWJlbCwgdGVtcGxhdGVMYWJlbCB9KSk7Ci0JCQkJCX0KLQotCQkJCQkvLyBDaGVjayBpZiB0aGUgc2VydmVyIHN1cHBvcnRzIGl0LgotCQkJCQlpZiAoc2VydmVySWQgIT0gbnVsbCAmJiBzZXJ2ZXJJZC5sZW5ndGgoKT4wKQotCQkJCQl7Ci0JCQkJCSAgaWYgKCF2YWxVdGlscy5kb2VzU2VydmVyU3VwcG9ydFRlbXBsYXRlKHNlcnZlcklkLCB0ZW1wbGF0ZUlkKSkgewotCQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1NFUlZJQ0VfU0VSVkVSX0RPRVNfTk9UX1NVUFBPUlRfVEVNUExBVEUsCi0JCQkJCQkJCW5ldyBTdHJpbmdbXSB7IHNlcnZlckxhYmVsLCB0ZW1wbGF0ZUxhYmVsIH0pKTsKLQkJCQkJICB9Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCX0JCQkJCQkKLQkJCQotCQl9Ci0JCQotCSAgICBpZiAodmFsaWRhdGlvblN0YXRlID09IFZBTElEQVRFX0FMTCB8fCB2YWxpZGF0aW9uU3RhdGUgPT0gVkFMSURBVEVfUFJPSkVDVF9DSEFOR0VTKSB7Ci0JCQkvLyBDaGVjayBpZiBwcm9qZWN0L0VBUiBhc3NvY2lhdGlvbiBpcyBnb29kLgotCQkJaWYgKG5lZWRFYXIpIHsKLQkJCQlJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQkJCQlJUHJvamVjdCBlcCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChlYXJQcm9qZWN0TmFtZSk7Ci0JCQkJCi0JCQkJLy8gMTk0NDM0IC0gQ2hlY2sgZm9yIG5vbi1leGlzdGluZyBFQVIgd2l0aCBjb250ZW50cyB0aGF0J3Mgbm90IGRlbGV0ZWQgcHJldmlvdXNseQotCQkJCUlTdGF0dXMgY2FuQ3JlYXRlRUFSU3RhdHVzID0gSjJFRVV0aWxzLmNhbkNyZWF0ZUVBUihlcCk7Ci0JCQkJaWYgKCFjYW5DcmVhdGVFQVJTdGF0dXMuaXNPSygpKSB7Ci0JCQkJCXJldHVybiBjYW5DcmVhdGVFQVJTdGF0dXM7Ci0JCQkJfQotCQkJCi0JCQkJaWYgKHByb2plY3QuZXhpc3RzKCkgJiYgZXAuZXhpc3RzKCkpIHsKLQkJCQkJaWYgKCFKMkVFVXRpbHMuaXNDb21wb25lbnRBc3NvY2lhdGVkKGVwLCBwcm9qZWN0KSkgewotCQkJCQkJYm9vbGVhbiBhc3NvY2lhdGVTdGF0dXMgPSBKMkVFVXRpbHMuY2FuQXNzb2NpYXRlUHJvamVjdFRvRUFSV2l0aG91dFdhcm5pbmcocHJvamVjdCwgZXApOwotCQkJCQkJaWYgKCFhc3NvY2lhdGVTdGF0dXMpIHsKLQkJCQkJCQlpZiAoaXNDbGllbnQpIHsKLQkJCQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzLndhcm5pbmdTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19DTElFTlRfQ0FOTk9UX0FTU09DSUFURSwKLQkJCQkJCQkJCQluZXcgU3RyaW5nW10geyBwcm9qZWN0TmFtZSwgZXAuZ2V0TmFtZSgpfSkpOwotCQkJCQkJCX0gZWxzZSB7Ci0JCQkJCQkJCXJldHVybiBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfU0VSVklDRV9DQU5OT1RfQVNTT0NJQVRFLAotCQkJCQkJCQkJCW5ldyBTdHJpbmdbXSB7IHByb2plY3ROYW1lLCBlcC5nZXROYW1lKCl9KSk7Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9CQkKLQkgICAgICAgIAkKLQkgICAgLy8gRGVmZWN0IDIwMzgyNiAtIEdpdmUgZXh0ZW5kZXIgYSB3YXkgdG8gdmV0byBzZXJ2ZXIsIHByb2plY3QsIHByb2plY3QgdHlwZSBhbmQgRUFSIGNob2ljZXMKLQkgICAgaWYgKHZhbGlkYXRpb25TdGF0ZSA9PSBWQUxJREFURV9BTEwgfHwgdmFsaWRhdGlvblN0YXRlID09IFZBTElEQVRFX1NFUlZFUl9SVU5USU1FX0NIQU5HRVMKLQkJCQl8fCB2YWxpZGF0aW9uU3RhdGUgPT0gVkFMSURBVEVfUFJPSkVDVF9DSEFOR0VTKSB7CQotCSAgICAJVHlwZVJ1bnRpbWVTZXJ2ZXIgdHJzID0gbmV3IFR5cGVSdW50aW1lU2VydmVyKCk7Ci0JICAgIAl0cnMuc2V0VHlwZUlkKHR5cGVJZCk7Ci0JICAgIAl0cnMuc2V0UnVudGltZUlkKHJ1bnRpbWVJZCk7Ci0JICAgIAl0cnMuc2V0U2VydmVySWQoc2VydmVySWQpOwotCSAgICAJSVdlYlNlcnZpY2VSdW50aW1lQ2hlY2tlciBydW50aW1lQ2hlY2tlciA9IG51bGw7Ci0JICAgIAlpZiAoaXNDbGllbnQpIHsKLQkgICAgCQlTdHJpbmcgY2xpZW50UnVudGltZUlkID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50UnVudGltZUlkKHRycywgcHJvamVjdE5hbWUsIHByb2plY3RUeXBlSWQpOwotCSAgICAJCXJ1bnRpbWVDaGVja2VyID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50UnVudGltZUNoZWNrZXIoY2xpZW50UnVudGltZUlkKTsKLQkgICAgCQkKLQkgICAgCX0gZWxzZSB7Ci0JICAgIAkJU3RyaW5nIHNlcnZpY2VSdW50aW1lSWQgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2aWNlUnVudGltZUlkKHRycywgcHJvamVjdE5hbWUsIHByb2plY3RUeXBlSWQpOwotCSAgICAJCXJ1bnRpbWVDaGVja2VyID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmljZVJ1bnRpbWVDaGVja2VyKHNlcnZpY2VSdW50aW1lSWQpOwotCSAgICAJfQotCSAgICAJaWYgKHJ1bnRpbWVDaGVja2VyICE9IG51bGwpIHsKLQkgICAgCQlyZXR1cm4gcnVudGltZUNoZWNrZXIuY2hlY2tSdW50aW1lQ29tcGF0aWJpbGl0eShzZXJ2ZXJJZCwgc2VydmVySW5zdGFuY2VJZCwgcHJvamVjdE5hbWUsIHByb2plY3RUeXBlSWQsIGVhclByb2plY3ROYW1lKTsKLQkJICAgIH0KLQkgICAgfQotCSAgICAJICAgIAotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQotCX0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIElTdGF0dXMgcmVzdWx0aW5nIGZyb20gY2hlY2tpbmcgZm9yIHdhcm5pbmdzLiBVc2VkIGZvciB2YWxpZGF0aW9uIG9mIHBhZ2UgMSBvZiB0aGUKLSAgICogV2ViIHNlcnZpY2UvY2xpZW50IHdpemFyZHMuIAotICAgKiBAcGFyYW0gdmFsaWRhdGlvblN0YXRlIG9uZSBvZiBWQUxJREFURV9OT05FLCBWQUxJREFURV9BTEwsIFZBTElEQVRFX1NFUlZFUl9SVU5USU1FX0NIQU5HRVMsIFZBTElEQVRFX1BST0pFQ1RfQ0hBTkdFUywgVkFMSURBVEVfU0NBTEVfQ0hBTkdFUwotICAgKiBAcGFyYW0gc2NhbGVTZXR0aW5nIG9uZSBvZiA8QlIvPgotICAgKiBTY2VuYXJpb0NvbnRleHQuV1NfVEVTVDxCUi8+Ci0gICAqIFNjZW5hcmlvQ29udGV4dC5XU19TVEFSVDxCUi8+Ci0gICAqIFNjZW5hcmlvQ29udGV4dC5XU19JTlNUQUxMPEJSLz4KLSAgICogU2NlbmFyaW9Db250ZXh0LldTX0RFUExPWTxCUi8+Ci0gICAqIFNjZW5hcmlvQ29udGV4dC5XU19BU1NFTUJMRTxCUi8+Ci0gICAqIFNjZW5hcmlvQ29udGV4dC5XU19ERVZFTE9QPEJSLz4KLSAgICogU2NlbmFyaW9Db250ZXh0LldTX05PTkUKLSAgICogQHBhcmFtIHNlcnZlcklkIHNlcnZlciB0eXBlIGlkCi0gICAqIEBwYXJhbSBzZXJ2ZXJJZCBzZXJ2ZXIgaW5zdGFuY2UgaWQKLSAgICogQHBhcmFtIGlzQ2xpZW50IGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG1ldGhvZCBpcyBiZWluZyBjYWxsZWQgZm9yIGNsaWVudCBzaWRlIHZhbGlkYXRpb24sIAotICAgKiA8Y29kZT5mYWxzZTwvY29kZT4gZm9yIHNlcnZpY2Ugc2lkZSB2YWxpZGF0aW9uLgotICAgKiBAcmV0dXJuIElTdGF0dXMgd2l0aCBzZXZlcml0eSBJU3RhdHVzLk9LIGlmIG5vIGVycm9ycyBhcmUgcHJlc2VudCwKLSAgICogSVN0YXR1cyB3aXRoIHNldmVyaXR5IElTdGF0dXMuV0FSTklORyBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyBjaGVja1dhcm5pbmdTdGF0dXMoaW50IHZhbGlkYXRpb25TdGF0ZSwgaW50IHNjYWxlU2V0dGluZywgU3RyaW5nIHNlcnZlcklkLAotCQkJU3RyaW5nIHNlcnZlckluc3RhbmNlSWQsIGJvb2xlYW4gaXNDbGllbnQpIHsKLQkJLy8gUmV0dXJuIGEgd2FybmluZyBpZiB0aGVyZSBpcyBubyBzZXJ2ZXIgc2VsZWN0aW9uIGFuZCBzY2FsZSBzZXR0aW5nIGlzCi0JCS8vIGFueXRoaW5nIGJleW9uZCBhc3NlbWJsZS4KLQkJaWYgKHZhbGlkYXRpb25TdGF0ZSA9PSBWQUxJREFURV9BTEwgfHwgdmFsaWRhdGlvblN0YXRlID09IFZBTElEQVRFX1NDQUxFX0NIQU5HRVMKLQkJCQl8fCB2YWxpZGF0aW9uU3RhdGUgPT0gVkFMSURBVEVfU0VSVkVSX1JVTlRJTUVfQ0hBTkdFUykgewotCQkJaWYgKHNlcnZlcklkID09IG51bGwgfHwgc2VydmVySWQubGVuZ3RoKCkgPT0gMCkgewotCQkJCWlmIChzY2FsZVNldHRpbmcgPCBTY2VuYXJpb0NvbnRleHQuV1NfQVNTRU1CTEUpIHsKLQkJCQkJaWYgKGlzQ2xpZW50KSB7Ci0JCQkJCQlyZXR1cm4gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyhOTFMuYmluZCgKLQkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19XQVJOX05PX0NMSUVOVF9TRVJWRVIsIG5ldyBTdHJpbmdbMF0pKTsKLQkJCQkJfSBlbHNlIHsKLQkJCQkJCXJldHVybiBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1dBUk5fTk9fU0VSVklDRV9TRVJWRVIsIG5ldyBTdHJpbmdbMF0pKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0gZWxzZSB7Ci0JCQkJLy8gUmV0dXJuIGEgd2FybmluZyBpZiB0aGUgc2VsZWN0ZWQgc2VydmVyIGhhcyBvbmx5IHN0dWIKLQkJCQkvLyBydW50aW1lcwotCQkJCS8vIGFuZCB0aGUgc2NhbGUgc2V0dGluZyBpcyBhbnl0aGluZyBiZXlvbmQgZGVwbG95LgotCQkJCUlTZXJ2ZXJUeXBlIHNlcnZlclR5cGUgPSBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXJUeXBlKHNlcnZlcklkKTsKLQkJCQlpZiAoc2VydmVyVHlwZSAhPSBudWxsKSB7Ci0JCQkJCS8vIEZpbmQgYSBSdW50aW1lIHdoaWNoIGlzIG5vdCBhIHN0dWIKLQkJCQkJSVJ1bnRpbWUgbm9uU3R1YlJ1bnRpbWUgPSBTZXJ2ZXJVdGlscy5nZXROb25TdHViUnVudGltZShzZXJ2ZXJJZCk7Ci0JCQkJCWlmICgoc2NhbGVTZXR0aW5nIDwgU2NlbmFyaW9Db250ZXh0LldTX0RFUExPWSkgJiYgbm9uU3R1YlJ1bnRpbWUgPT0gbnVsbCAmJiBzZXJ2ZXJJbnN0YW5jZUlkID09IG51bGwpIHsKLQkJCQkJCVN0cmluZyBzZXJ2ZXJ0eXBlTGFiZWwgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMgotCQkJCQkJCQkuZ2V0U2VydmVyTGFiZWxCeUlkKHNlcnZlcklkKTsKLQkJCQkJCXJldHVybiBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKE5MUy5iaW5kKAotCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1dBUk5fU1RVQl9PTkxZLAotCQkJCQkJCQluZXcgU3RyaW5nW10geyBzZXJ2ZXJ0eXBlTGFiZWwgfSkpOwotCQkJCQl9Ci0JCQkJfQotCi0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQotCX0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBwcm92aWRlZCBzZXJ2ZXIgdHlwZSBzdXBwb3J0cyB0aGUgZmFjZXQgdmVyc2lvbnMgb24gdGhlIHByb3ZpZGVkIHByb2plY3QKLSAgICogQHBhcmFtIHNlcnZlckZhY3RvcnlJZCBzZXJ2ZXIgdHlwZSBpZAotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgbmFtZSBvZiBhIHByb2plY3QgdGhhdCBtYXkgb3IgbWF5IG5vdCBleGlzdC4KLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBzZXJ2ZXIgdHlwZSBzdXBwb3J0cyB0aGUgZmFjZXQgdmVyc2lvbnMgb24gdGhlIHByb2plY3QgKGZhY2V0cyB2ZXJzaW9ucyBhcmUgaW5mZXJyZWQgZnJvbSBhIEphdmEgcHJvamVjdCksIAotICAgKiA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdGhlIHNlcnZlciB0eXBlIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZhY2V0IHZlcnNpb25zIG9yIGZhY2V0IHZlcnNpb25zIG9uIHRoZSBwcm9qZWN0IGNhbm5vdCBiZSBkZXRlcm1pbmVkLiAgICovCi0gIHB1YmxpYyBib29sZWFuIGRvZXNTZXJ2ZXJTdXBwb3J0UHJvamVjdChTdHJpbmcgc2VydmVyRmFjdG9yeUlkLCBTdHJpbmcgcHJvamVjdE5hbWUpCi0gIHsKLQlTZXQgZmFjZXRzID0gRmFjZXRVdGlscy5nZXRGYWNldHNGb3JQcm9qZWN0KHByb2plY3ROYW1lKTsKLQlpZiAoZmFjZXRzID09IG51bGwpCi0JCXJldHVybiB0cnVlOwotCWVsc2UgCi0JCXJldHVybiBkb2VzU2VydmVyU3VwcG9ydEZhY2V0cyhzZXJ2ZXJGYWN0b3J5SWQsIGZhY2V0cyk7IAotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHByb3ZpZGVkIHNlcnZlciB0eXBlIHN1cHBvcnRzIHRoZSBmYWNldCB2ZXJzaW9ucyBpbiB0aGUgcHJvdmlkZWQgc2V0LgotICAgKiBAcGFyYW0gc2VydmVyRmFjdG9yeUlkIHNlcnZlciB0eXBlIGlkCi0gICAqIEBwYXJhbSBmYWNldHMgc2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgSVByb2plY3RGYWNldFZlcnNpb259Ci0gICAqIEByZXR1cm4gYm9vbGVhbiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgc2VydmVyIHR5cGUgc3VwcG9ydHMgdGhlIGZhY2V0IHZlcnNpb25zIGluIHRoZSBwcm92aWRlZCBzZXQsCi0gICAqIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBkb2VzU2VydmVyU3VwcG9ydEZhY2V0cyhTdHJpbmcgc2VydmVyRmFjdG9yeUlkLCBTZXQgZmFjZXRzKQotICB7Ci0gICAgU2V0IHJ1bnRpbWVzID0gRmFjZXRVdGlscy5nZXRSdW50aW1lcyhuZXcgU2V0W117ZmFjZXRzfSk7Ci0gICAgSXRlcmF0b3IgaXRyID0gcnVudGltZXMuaXRlcmF0b3IoKTsKLSAgICBJU2VydmVyVHlwZSBzdCA9IFNlcnZlckNvcmUuZmluZFNlcnZlclR5cGUoc2VydmVyRmFjdG9yeUlkKTsgICAgICAgIAotICAgIFN0cmluZyBydW50aW1lVHlwZUlkID0gc3QuZ2V0UnVudGltZVR5cGUoKS5nZXRJZCgpOwotICAgIHdoaWxlIChpdHIuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnJ1bnRpbWUuSVJ1bnRpbWUgZlJ1bnRpbWUgPSAob3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUucnVudGltZS5JUnVudGltZSlpdHIubmV4dCgpOwotICAgICAgSVJ1bnRpbWUgc1J1bnRpbWUgPSBGYWNldFV0aWwuZ2V0UnVudGltZShmUnVudGltZSk7Ci0gICAgICBpZiAoc1J1bnRpbWUgIT0gbnVsbCkKLSAgICAgIHsKLQkgICAgICBJUnVudGltZVR5cGUgcnVudGltZVR5cGUgPSBzUnVudGltZS5nZXRSdW50aW1lVHlwZSgpOwotCSAgICAgIGlmIChydW50aW1lVHlwZSAhPSBudWxsICYmIHJ1bnRpbWVUeXBlSWQuZXF1YWxzKHJ1bnRpbWVUeXBlLmdldElkKCkpKQotCSAgICAgIHsKLQkgICAgICAgIC8vZm91bmQgYSBtYXRjaAotCSAgICAgICAgcmV0dXJuIHRydWU7Ci0JICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7ICAgIAotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgcHJvdmlkZWQgc2VydmVyIHR5cGUgc3VwcG9ydHMgYXQgbGVhc3Qgb25lIHZlcnNpb24gb2YKLSAgICogZWFjaCBvZiB0aGUgZml4ZWQgZmFjZXRzIG9uIHRoZSBwcm92aWRlZCB0ZW1wbGF0ZQotICAgKiBAcGFyYW0gc2VydmVyRmFjdG9yeUlkIHNlcnZlciB0eXBlIGlkCi0gICAqIEBwYXJhbSB0ZW1wbGF0ZUlkIGlkIG9mIGEge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfQotICAgKiBAcmV0dXJuIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNlcnZlciB0eXBlIHN1cHBvcnRzIGF0IGxlYXN0IG9uZSB2ZXJzaW9uIG9mCi0gICAqIGVhY2ggb2YgdGhlIGZpeGVkIGZhY2V0cyBvbiB0aGUgcHJvdmlkZWQgdGVtcGxhdGUsIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBkb2VzU2VydmVyU3VwcG9ydFRlbXBsYXRlKFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQsIFN0cmluZyB0ZW1wbGF0ZUlkKQotICB7Ci0gICAgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUgdGVtcGxhdGUgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRUZW1wbGF0ZSh0ZW1wbGF0ZUlkKTsKLSAgICBTZXQgdGVtcGxhdGVGYWNldHMgPSB0ZW1wbGF0ZS5nZXRGaXhlZFByb2plY3RGYWNldHMoKTsKLSAgICBJdGVyYXRvciB0ZW1wbGF0ZUZhY2V0c0l0ciA9IHRlbXBsYXRlRmFjZXRzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKHRlbXBsYXRlRmFjZXRzSXRyLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBib29sZWFuIHNlcnZlclN1cHBvcnRzVGhpc09uZSA9IGZhbHNlOwotICAgICAgSVByb2plY3RGYWNldCBmaXhlZEZhY2V0ID0gKElQcm9qZWN0RmFjZXQpdGVtcGxhdGVGYWNldHNJdHIubmV4dCgpOyAgICAgIAotICAgICAgTGlzdCB2ZXJzaW9ucyA9IG51bGw7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgdmVyc2lvbnMgPSBmaXhlZEZhY2V0LmdldFNvcnRlZFZlcnNpb25zKHRydWUpOwotICAgICAgfSBjYXRjaCAoVmVyc2lvbkZvcm1hdEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICBTZXQgdmVyc2lvblNldCA9IGZpeGVkRmFjZXQuZ2V0VmVyc2lvbnMoKTsKLSAgICAgICAgSXRlcmF0b3IgaXRyID0gdmVyc2lvblNldC5pdGVyYXRvcigpOwotICAgICAgICB2ZXJzaW9ucyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZlcnNpb25zLmFkZChpdHIubmV4dCgpKTsKLSAgICAgICAgfSAgICAgICAgICAgIAotICAgICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICBTZXQgdmVyc2lvblNldCA9IGZpeGVkRmFjZXQuZ2V0VmVyc2lvbnMoKTsKLSAgICAgICAgSXRlcmF0b3IgaXRyID0gdmVyc2lvblNldC5pdGVyYXRvcigpOwotICAgICAgICB2ZXJzaW9ucyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZlcnNpb25zLmFkZChpdHIubmV4dCgpKTsKLSAgICAgICAgfSAgICAgICAgICAgIAotICAgICAgfSAKLSAgICAgIEl0ZXJhdG9yIHZlcnNpb25zSXRyID0gdmVyc2lvbnMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlKHZlcnNpb25zSXRyLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gcGZ2ID0gKElQcm9qZWN0RmFjZXRWZXJzaW9uKXZlcnNpb25zSXRyLm5leHQoKTsKLSAgICAgICAgU2V0IHBmdnMgPSBuZXcgSGFzaFNldCgpOwotICAgICAgICBwZnZzLmFkZChwZnYpOwotICAgICAgICBpZiAoZG9lc1NlcnZlclN1cHBvcnRGYWNldHMoc2VydmVyRmFjdG9yeUlkLCBwZnZzKSkKLSAgICAgICAgewotICAgICAgICAgIHNlcnZlclN1cHBvcnRzVGhpc09uZSA9IHRydWU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gICAgICAgIAotICAgICAgfQotICAgICAgCi0gICAgICBpZiAoIXNlcnZlclN1cHBvcnRzVGhpc09uZSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHByb3ZpZGVkIHByb2plY3Qgb3IgcHJvamVjdCB0eXBlIChpZiB0aGUgcHJvamVjdCBpcyBudWxsIG9yIGRvZXMgbm90IGV4aXN0KQotICAgKiBydWxlcyBvdXQgdGhlIG5lZWQgZm9yIGFuIEVBUi4KLSAgICogQHBhcmFtIHByb2plY3ROYW1lIG5hbWUgb2YgYSBwcm9qZWN0Ci0gICAqIEBwYXJhbSBwcm9qZWN0VHlwZUlkIGlkIG9mIGEge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfS4gTXVzdCBiZSBub24tZW1wdHkgaWYgdGhlIHByb2plY3QgaXMgbnVsbCBvcgotICAgKiBkb2VzIG5vdCBleGlzdC4gCi0gICAqIEByZXR1cm4gYm9vbGVhbiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgbmVlZCBmb3IgYW4gRUFSIGlzIG5vdCBydWxlZCBvdXQsIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCi0gICAqLwotCXB1YmxpYyBib29sZWFuIHByb2plY3RPclByb2plY3RUeXBlTmVlZHNFYXIoU3RyaW5nIHByb2plY3ROYW1lLCBTdHJpbmcgcHJvamVjdFR5cGVJZCkKLQl7Ci0JCS8vIElmIHRoZSBwcm9qZWN0IGlzIGEgc2ltcGxlIEphdmEgcHJvamVjdCBvciB0aGUgcHJvamVjdCB0eXBlIGlzCi0JCS8vIEphdmEgdXRpbGl0eSByZXR1cm4gZmFsc2UuCi0JCWlmIChwcm9qZWN0TmFtZSAhPSBudWxsICYmIHByb2plY3ROYW1lLmxlbmd0aCgpID4gMCkgewotCQkJSVByb2plY3QgcHJvamVjdCA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotCQkJaWYgKHByb2plY3QuZXhpc3RzKCkpIHsKLQkJCQlpZiAoRmFjZXRVdGlscy5pc0phdmFQcm9qZWN0KHByb2plY3QpKSB7Ci0JCQkJCXJldHVybiBmYWxzZTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQkvLyBQcm9qZWN0IGRpZG4ndCBydWxlIG91dCB0aGUgbmVlZCBmb3IgYW4gRUFSCi0JCS8vIHNvIGNoZWNrIHRoZSBwcm9lY3QgdHlwZQotCQlTdHJpbmcgdGVtcGxhdGVJZCA9IHByb2plY3RUeXBlSWQ7Ci0JCWlmICh0ZW1wbGF0ZUlkICE9IG51bGwgJiYgdGVtcGxhdGVJZC5sZW5ndGgoKSA+IDApIHsKLQkJCWlmIChGYWNldFV0aWxzLmlzVXRpbGl0eVRlbXBsYXRlKHRlbXBsYXRlSWQpKSB7Ci0JCQkJcmV0dXJuIGZhbHNlOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHRydWU7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgd2hldGhlciBvciBub3QgYW4gSjJFRSAxLjMgRUFSIHByb2plY3QgY2FuIGJlIGluc3RhbGxlZCBvbiBhIHNlcnZlciBvZgotCSAqIHRoZSBwcm92aWRlZCBzZXJ2ZXIgdHlwZS4KLQkgKiBAcGFyYW0gc2VydmVyVHlwZUlkIHNlcnZlciB0eXBlIGlkCi0JICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIGEgSjJFRSAxLjMgRUFSIHByb2plY3QgY2FuIGJlIGluc3RhbGxlZCBvbiBhIHNlcnZlciBvZgotCSAqIHRoZSBwcm92aWRlZCBzZXJ2ZXIgdHlwZSwgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4gCi0JICovCi0JcHVibGljIGJvb2xlYW4gc2VydmVyTmVlZHNFQVIoU3RyaW5nIHNlcnZlclR5cGVJZCkKLQl7Ci0JCWlmIChzZXJ2ZXJUeXBlSWQgPT0gbnVsbCkgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JICAgIGlmIChzZXJ2ZXJUeXBlSWQubGVuZ3RoKCkgPiAwKSB7Ci0JCQlTdHJpbmcgdGFyZ2V0SWQgPSBTZXJ2ZXJVdGlscy5nZXRSdW50aW1lVGFyZ2V0SWRGcm9tRmFjdG9yeUlkKHNlcnZlclR5cGVJZCk7Ci0JCQlpZiAodGFyZ2V0SWQgIT0gbnVsbCAmJiB0YXJnZXRJZC5sZW5ndGgoKSA+IDApIHsKLQkJCQlpZiAoIVNlcnZlclV0aWxzLmlzVGFyZ2V0VmFsaWRGb3JFQVIodGFyZ2V0SWQsICIxMyIpKSAvLyBybSBqMmVlCi0JCQkJewotCQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHRydWU7Ci0JfQotCQotICBwdWJsaWMgSVN0YXR1cyB2YWxpZGF0ZVByb2plY3RUYXJnZXRBbmRKMkVFKFN0cmluZyBwcm9qZWN0TmFtZSwgU3RyaW5nIGNvbXBOYW1lLCBTdHJpbmcgZWFyTmFtZSwgU3RyaW5nIGVhckNvbXBOYW1lLCBTdHJpbmcgc2VydmVyRmFjdG9yeUlkLCBTdHJpbmcgajJlZUxldmVsKQotICB7Ci0gICAgSVByb2plY3QgcCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChwcm9qZWN0TmFtZSk7Ci0gICAgSVByb2plY3QgZWFyUCA9IG51bGw7Ci0gICAgaWYgKGVhck5hbWUhPW51bGwgJiYgIWVhck5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiIikpIHsKLSAgICAJZWFyUCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChlYXJOYW1lKTsKLSAgICB9Ci0gICAgSVN0YXR1cyB0YXJnZXRTdGF0dXMgPSBkb2VzUHJvamVjdFRhcmdldE1hdGNoU2VydmVyVHlwZShwLCBzZXJ2ZXJGYWN0b3J5SWQpOwotICAgIGlmIChlYXJQIT1udWxsICYmIHRhcmdldFN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuT0spCi0gICAgewotICAgICAgLy9jaGVjayB0aGUgRUFSICAgICAgCi0gICAgICBJU3RhdHVzIGVhclRhcmdldFN0YXR1cyA9IGRvZXNQcm9qZWN0VGFyZ2V0TWF0Y2hTZXJ2ZXJUeXBlKGVhclAsIHNlcnZlckZhY3RvcnlJZCk7Ci0gICAgICBpZihlYXJUYXJnZXRTdGF0dXMuZ2V0U2V2ZXJpdHkoKT09U3RhdHVzLkVSUk9SKQotICAgICAgewotICAgICAgICByZXR1cm4gZWFyVGFyZ2V0U3RhdHVzOwotICAgICAgfSAgICAgICAgICAgIAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuIHRhcmdldFN0YXR1czsKLSAgICB9Ci0gICAgCi0KLSAgICAvL1ZhbGlkYXRlIHNlcnZpY2Ugc2lkZSBKMkVFIGxldmVsICAgIAotICAgIElTdGF0dXMgajJlZVN0YXR1cyA9IGRvZXNQcm9qZWN0TWF0Y2hKMkVFTGV2ZWwocCwgY29tcE5hbWUsIGoyZWVMZXZlbCk7Ci0gICAgaWYoZWFyUCE9bnVsbCAmJiBqMmVlU3RhdHVzLmdldFNldmVyaXR5KCk9PVN0YXR1cy5PSykKLSAgICB7Ci0gICAgICBJU3RhdHVzIGVhckoyRUVTdGF0dXMgPSBkb2VzUHJvamVjdE1hdGNoSjJFRUxldmVsKGVhclAsIGVhckNvbXBOYW1lLCBqMmVlTGV2ZWwpOwotICAgICAgaWYoZWFySjJFRVN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuRVJST1IpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBlYXJKMkVFU3RhdHVzOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuIGoyZWVTdGF0dXM7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0gIAotICAvL1RPRE86IFRoaXMgbWV0aG9kIGlzIG9ic2VsZXRlIC0gc2hvdWxkIGJlIHJlbW92ZWQuCi0gIHByaXZhdGUgSVN0YXR1cyBkb2VzUHJvamVjdFRhcmdldE1hdGNoU2VydmVyVHlwZShJUHJvamVjdCBwLCBTdHJpbmcgc2VydmVyRmFjdG9yeUlkKQotICB7Ci0gICAgaWYgKHAhPW51bGwgJiYgcC5leGlzdHMoKSkKLSAgICB7Ci0gICAgICBJUnVudGltZSBwcm9qZWN0VGFyZ2V0ID0gU2VydmVyU2VsZWN0aW9uVXRpbHMuZ2V0UnVudGltZVRhcmdldChwLmdldE5hbWUoKSk7Ci0gICAgICBpZiAocHJvamVjdFRhcmdldCE9bnVsbCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHByb2plY3RUYXJnZXRJZCA9IHByb2plY3RUYXJnZXQuZ2V0UnVudGltZVR5cGUoKS5nZXRJZCgpOwotICAgICAgICBTdHJpbmcgc2VydmVyVGFyZ2V0SWQgPSBTZXJ2ZXJVdGlscy5nZXRSdW50aW1lVGFyZ2V0SWRGcm9tRmFjdG9yeUlkKHNlcnZlckZhY3RvcnlJZCk7Ci0gICAgICAgIGlmIChzZXJ2ZXJUYXJnZXRJZCE9bnVsbCAmJiBzZXJ2ZXJUYXJnZXRJZC5sZW5ndGgoKT4wKQotICAgICAgICB7Ci0gICAgICAgICAgaWYoIXByb2plY3RUYXJnZXRJZC5lcXVhbHMoc2VydmVyVGFyZ2V0SWQpKQotICAgICAgICAgIHsgCi0gICAgICAgICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfU0VSVkVSX1RBUkdFVF9NSVNNQVRDSCxuZXcgU3RyaW5nW117cC5nZXROYW1lKCl9KSApOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsgICAgICAgIAotICB9Ci0KLSAgLy9UT0RPOiBUaGlzIG1ldGhvZCBpcyBvYnNlbGV0ZSAtIHNob3VsZCBiZSByZW1vdmVkLgotICBwcml2YXRlIElTdGF0dXMgZG9lc1Byb2plY3RNYXRjaEoyRUVMZXZlbChJUHJvamVjdCBwLCBTdHJpbmcgY29tcE5hbWUsIFN0cmluZyBqMmVlTGV2ZWwpCi0gIHsKLQotICAgIHRyeSB7Ci0JCWlmIChwIT1udWxsICYmIHAuZXhpc3RzKCkpCi0JCXsKLSAgCSAgaW50IHByb2plY3RKMkVFTGV2ZWwgPSBKMkVFVXRpbHMuZ2V0SjJFRVZlcnNpb24ocCk7Ci0JCSAgaWYgKHByb2plY3RKMkVFTGV2ZWwhPS0xKQotCQkgIHsKLQkJICAgIFN0cmluZyBwcm9qZWN0SjJFRUxldmVsU3RyaW5nID0gU3RyaW5nLnZhbHVlT2YocHJvamVjdEoyRUVMZXZlbCk7Ci0JCSAgICBpZiAoajJlZUxldmVsIT1udWxsICYmIGoyZWVMZXZlbC5sZW5ndGgoKT4wKQotCQkgICAgewotCQkgICAgICBpZiAoIXByb2plY3RKMkVFTGV2ZWxTdHJpbmcuZXF1YWxzKGoyZWVMZXZlbCkpCi0JCSAgICAgIHsKLQkJICAgICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfSjJFRV9NSVNNQVRDSCxuZXcgU3RyaW5nW117cC5nZXROYW1lKCl9KSApOwotCQkgICAgICB9Ci0JCSAgICB9Ci0JCSAgfQotCQl9Ci0JfSBjYXRjaChFeGNlcHRpb24gZSl7Ci0gICAgCi0gIH0KLSAgICAKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsgICAgICAgIAotICB9Ci0gIAotICAvL1RPRE86IFRoaXMgbWV0aG9kIGlzIG9ic2VsZXRlIC0gc2hvdWxkIGJlIHJlbW92ZWQuCi0gIHB1YmxpYyBJU3RhdHVzIHZhbGlkYXRlUHJvamVjdFR5cGUoU3RyaW5nIHByb2plY3ROYW1lLCBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBydW50aW1lMkNsaWVudFR5cGVzKQotICB7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIElQcm9qZWN0IHAgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotICAgIGlmIChwPT1udWxsIHx8ICFwLmV4aXN0cygpKQotICAgIHsKLSAgICAgIC8vUHJvamVjdCBkb2VzIG5vdCBleGlzdCB3aGljaCBtZWFucyBhIG5ldyBwcm9qZWN0IG9mIHRoZSBjb3JyZWN0IHR5cGUgd2lsbCBiZSBjcmVhdGVkCi0gICAgICAvL1dlJ3JlIGRvbmUuIEFsbCBpcyBnb29kLgotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0gICAgICAKLSAgICAvL0lmIHRoZSBwcm9qZWN0IGV4aXN0cywgd2Ugc2hvdWxkIHNlZSBpdCBpbiB0aGUgcHJvamVjdCBsaXN0IGZvciB0aGUgc2VsZWN0ZWQgY2xpZW50Ci0gICAgLy9wcm9qZWN0IHR5cGUuCi0gICAgU3RyaW5nW10gcHJvamVjdE5hbWVzID0gcnVudGltZTJDbGllbnRUeXBlcy5nZXRDaG9pY2UoKS5nZXRDaG9pY2UoKS5nZXRMaXN0KCkuZ2V0TGlzdCgpOwotICAgIGZvciAoaW50IGk9MDsgaTxwcm9qZWN0TmFtZXMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgaWYgKHByb2plY3ROYW1lLmVxdWFscyhwcm9qZWN0TmFtZXNbaV0pKQotICAgICAgewotICAgICAgICAvL0ZvdW5kIHRoZSBwcm9qZWN0LiBBbGwgaXMgZ29vZC4KLSAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy9EaWRuJ3QgZmluZCB0aGUgcHJvamVjdC4gUmV0dXJuIGFuIGVycm9yLgotICAgIC8vR2V0IHRoZSBsYWJlbCBmb3IgdGhlIGNsaWVudCB0eXBlIGlkCi0gICAgU3RyaW5nIGNsaWVudFR5cGVMYWJlbCA9IGdldENsaWVudFR5cGVMYWJlbChydW50aW1lMkNsaWVudFR5cGVzLmdldENob2ljZSgpLmdldExpc3QoKS5nZXRTZWxlY3Rpb24oKSk7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1dST05HX0NMSUVOVF9QUk9KRUNUX1RZUEUsbmV3IFN0cmluZ1tde3Byb2plY3ROYW1lLCBjbGllbnRUeXBlTGFiZWx9KTsKLSAgICBJU3RhdHVzIGVTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggbWVzc2FnZSApOwotICAgIHJldHVybiBlU3RhdHVzOwotICAgIAotICB9Ci0gIAotICAvL1RPRE86IFRoaXMgbWV0aG9kIGlzIG9ic2VsZXRlIC0gc2hvdWxkIGJlIHJlbW92ZWQuCi0gIHByaXZhdGUgU3RyaW5nIGdldENsaWVudFR5cGVMYWJlbCggU3RyaW5nIHR5cGUgKQotICB7CSAgCi0JICBpZiAodHlwZS5lcXVhbHMoSU1vZHVsZUNvbnN0YW50cy5KU1RfV0VCX01PRFVMRSkpCi0JICB7Ci0JCSAgcmV0dXJuIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9DTElFTlRfQ09NUF9UWVBFX1dFQjsKLQkgIH0KLQkgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKElNb2R1bGVDb25zdGFudHMuSlNUX0VKQl9NT0RVTEUpKQotCSAgewotCQkgIHJldHVybiBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQ0xJRU5UX0NPTVBfVFlQRV9FSkI7Ci0JICB9Ci0JICBlbHNlIGlmICh0eXBlLmVxdWFscyhJTW9kdWxlQ29uc3RhbnRzLkpTVF9BUFBDTElFTlRfTU9EVUxFKSkKLQkgIHsKLQkJICByZXR1cm4gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0NMSUVOVF9DT01QX1RZUEVfQVBQX0NMSUVOVDsKLQkgIH0KLQkgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKElNb2R1bGVDb25zdGFudHMuSlNUX1VUSUxJVFlfTU9EVUxFKSkKLQkgIHsKLQkJICByZXR1cm4gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0NMSUVOVF9DT01QX1RZUEVfQ09OVEFJTkVSTEVTUzsKLQkgIH0KLQkgIGVsc2UKLQkgIHsKLQkJICAvL05vIGtub3duIGxhYmVsLCByZXR1cm4gdGhlIHR5cGVJZCBpdHNlbGYuIAotCQkgIHJldHVybiB0eXBlOwotCSAgfQkgIAkgIAotICB9ICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoaXMgcHJvamVjdCBpcyBsaWtlbHkgaG9zdGluZyBhbnkgb2YgdGhlIHNlcnZpY2VzCi0gICAqIGluIHRoZSBwcm92aWRlZCBXU0RMIGFzIGEgSjJFRSBXZWIgc2VydmljZS4KLSAgICogQHBhcmFtIHAgSVByb2plY3QgaW4gdGhlIHdvcmtzcGFjZQotICAgKiBAcGFyYW0gd3NkbFVSTCBVUkwgb2YgYSBXU0RMIGRvY3VtZW50Ci0gICAqIEBwYXJhbSBwYXJzZXIKLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBwcm9qZWN0IGNvbnRhaW5zIGEgd2Vic2VydmljZXMueG1sIAotICAgKiBkZXBsb3ltZW50IGRlc2NyaXB0b3IgdGhhdCBwb2ludHMgdG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBwb3J0cyBpbiB0aGUgcHJvdmlkZWQgV1NETC4gCi0gICAqIFJldHVybnMgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzUHJvamVjdFNlcnZpY2VQcm9qZWN0KElQcm9qZWN0IHAsIFN0cmluZyB3c2RsVVJMLCBXZWJTZXJ2aWNlc1BhcnNlciBwYXJzZXIpCi0gIHsKLSAgICBpZiAocD09bnVsbCB8fCB3c2RsVVJMPT1udWxsIHx8IHdzZGxVUkwubGVuZ3RoKCk9PTAgfHwgcGFyc2VyPT1udWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIElSZXNvdXJjZSB3c1hNTCA9IGdldFdlYlNlcnZjZXNYTUwocCk7Ci0gICAgaWYgKHdzWE1MPT1udWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIAotICAgIC8vTWFrZSBhIGxpc3Qgb2YgYWxsIHRoZSB3c2RsLXBvcnQncyBpbiB3ZWJzZXJ2aWNlcy54bWwKLSAgICBpZiAoISh3c1hNTCBpbnN0YW5jZW9mIElGaWxlKSkKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgICAKLSAgICBSZXNvdXJjZSByZXMgPSBXb3JrYmVuY2hSZXNvdXJjZUhlbHBlckJhc2UuZ2V0UmVzb3VyY2UoKElGaWxlKXdzWE1MLCB0cnVlKTsKLSAgICBXc2RkUmVzb3VyY2Ugd3NkZFJlcyA9IChXc2RkUmVzb3VyY2UpcmVzOyAgICAKLSAgICBXZWJTZXJ2aWNlcyB3ZWJTZXJ2aWNlcyA9IHdzZGRSZXMuZ2V0V2ViU2VydmljZXMoKTsKLSAgICBJdGVyYXRvciB3c0Rlc2NzID0gd2ViU2VydmljZXMuZ2V0V2ViU2VydmljZURlc2NyaXB0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgQXJyYXlMaXN0IHdzZGxQb3J0TGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICB3aGlsZSh3c0Rlc2NzLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBXZWJTZXJ2aWNlRGVzY3JpcHRpb24gd3NEZXNjID0gKFdlYlNlcnZpY2VEZXNjcmlwdGlvbil3c0Rlc2NzLm5leHQoKTsKLSAgICAgIEl0ZXJhdG9yIHBjcyA9IHdzRGVzYy5nZXRQb3J0Q29tcG9uZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZShwY3MuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBQb3J0Q29tcG9uZW50IHBjID0gKFBvcnRDb21wb25lbnQpcGNzLm5leHQoKTsKLSAgICAgICAgV1NETFBvcnQgd3NkbFBvcnQgPSBwYy5nZXRXc2RsUG9ydCgpOwotICAgICAgICB3c2RsUG9ydExpc3QuYWRkKG5ldyBRdWFsaWZpZWROYW1lKHdzZGxQb3J0LmdldE5hbWVzcGFjZVVSSSgpLCB3c2RsUG9ydC5nZXRMb2NhbFBhcnQoKSkpOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICBBcnJheUxpc3QgcG9ydExpc3QgPSBnZXRQb3J0TmFtZXNGcm9tV3NkbCh3c2RsVVJMLCBwYXJzZXIpOwotCi0gICAgLy9JZiBhbnkgb2YgdGhlIFF1YWxpZmllZE5hbWVzIGluIHBvcnRMaXN0IGVxdWFscyBhbnkgb2YgdGhlIFF1YWxpZmllZE5hbWVzCi0gICAgLy9pbiB3c2RsUG9ydExpc3QsIHRoaXMgaXMgdGhlIHNlcnZpY2UgcHJvamVjdC4gUmV0dXJuIHRydWUuCi0gICAgT2JqZWN0W10gcG9ydHMgPSBwb3J0TGlzdC50b0FycmF5KCk7Ci0gICAgT2JqZWN0W10gd3NkbFBvcnRzID0gd3NkbFBvcnRMaXN0LnRvQXJyYXkoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHBvcnRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIFF1YWxpZmllZE5hbWUgcG9ydE5hbWUgPSAoUXVhbGlmaWVkTmFtZSkgcG9ydHNbaV07Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdzZGxQb3J0cy5sZW5ndGg7IGorKykKLSAgICAgIHsKLSAgICAgICAgUXVhbGlmaWVkTmFtZSB3c2RsUG9ydE5hbWUgPSAoUXVhbGlmaWVkTmFtZSkgd3NkbFBvcnRzW2pdOwotICAgICAgICBpZiAocG9ydE5hbWUuZXF1YWxzKHdzZGxQb3J0TmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIElSZXNvdXJjZSBjb3JyZXNwb25kaW5nIHRvIHRoZSB3ZWJzZXJ2aWNlcy54bWwgaW4gdGhlIHByb3ZpZGVkIHByb2plY3QuCi0gICAqIEBwYXJhbSBwIGFuIElQcm9qZWN0IGluIHRoZSB3b3Jrc3BhY2UuCi0gICAqIEByZXR1cm4gSVJlc291cmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHdlYnNlcnZpY2VzLnhtbCBpbiB0aGUgcHJvdmlkZWQgcHJvamVjdCwKLSAgICogbnVsbCBpZiB0aGVyZSBpcyBubyB3ZWJzZXJ2aWNlcy54bWwgaW4gdGhlIHByb2plY3QuCi0gICAqLwotICBwcml2YXRlIElSZXNvdXJjZSBnZXRXZWJTZXJ2Y2VzWE1MKElQcm9qZWN0IHApCi0gIHsKLSAgICAvL0dldCB0aGUgbW9kdWxlIHJvb3QuICAgIAotICAgIElSZXNvdXJjZSBtb2R1bGVSb290ID0gZ2V0TW9kdWxlUm9vdChwKTsKLSAgICBpZiAoIShtb2R1bGVSb290IGluc3RhbmNlb2YgSUNvbnRhaW5lcikpCi0gICAgICByZXR1cm4gbnVsbDsKLQotICAgIElSZXNvdXJjZSB3ZWJTZXJ2aWNlc1hNTCA9IG51bGw7Ci0gICAgaWYgKEoyRUVQcm9qZWN0VXRpbGl0aWVzLmlzRHluYW1pY1dlYlByb2plY3QocCkpCi0gICAgewotICAgICAgU3RyaW5nQnVmZmVyIHdzUGF0aCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgIHdzUGF0aC5hcHBlbmQoIldFQi1JTkYvIik7Ci0gICAgICB3c1BhdGguYXBwZW5kKFdlYlNlcnZpY2VDb25zdGFudHMuV0VCU0VSVklDRV9ERF9TSE9SVF9OQU1FKTsKLSAgICAgIHdlYlNlcnZpY2VzWE1MID0gKChJQ29udGFpbmVyKSBtb2R1bGVSb290KS5maW5kTWVtYmVyKHdzUGF0aC50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFN0cmluZ0J1ZmZlciB3c1BhdGggPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICB3c1BhdGguYXBwZW5kKCJNRVRBLUlORi8iKTsKLSAgICAgIHdzUGF0aC5hcHBlbmQoV2ViU2VydmljZUNvbnN0YW50cy5XRUJTRVJWSUNFX0REX1NIT1JUX05BTUUpOwotICAgICAgd2ViU2VydmljZXNYTUwgPSAoKElDb250YWluZXIpIG1vZHVsZVJvb3QpLmZpbmRNZW1iZXIod3NQYXRoLnRvU3RyaW5nKCkpOyAgICAgIAotICAgIH0KLSAgICByZXR1cm4gd2ViU2VydmljZXNYTUw7Ci0gIH0KLSAgCi0gIHByaXZhdGUgSVJlc291cmNlIGdldE1vZHVsZVJvb3QoSVByb2plY3QgcCkKLSAgewotICAgIElQYXRoIG1vZHVsZVBhdGggPSBudWxsOwotICAgIHRyeSAKLSAgICB7Ci0gICAgICBJVmlydHVhbENvbXBvbmVudCB2YyA9IENvbXBvbmVudENvcmUuY3JlYXRlQ29tcG9uZW50KHApOwotICAgICAgaWYgKHZjICE9IG51bGwpIAotICAgICAgewotICAgICAgICBtb2R1bGVQYXRoID0gdmMuZ2V0Um9vdEZvbGRlcigpLmdldFdvcmtzcGFjZVJlbGF0aXZlUGF0aCgpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaChFeGNlcHRpb24gZXgpCi0gICAgewotICAgICAgCi0gICAgfSAKLSAgICAKLSAgICBJUmVzb3VyY2UgcmVzID0gUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UobW9kdWxlUGF0aCk7Ci0gICAgcmV0dXJuIHJlczsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYSBsaXN0IG9mIFdTREwgcG9ydHMgaW4gdGhlIHByb3ZpZGVkIFdTREwKLSAgICogQHBhcmFtIHdzZGxVUkwgVVJMIG9mIGEgV1NETCBkb2N1bWVudAotICAgKiBAcGFyYW0gcGFyc2VyIAotICAgKiBAcmV0dXJuIEFycmF5TGlzdCBjb250YWluaW5nIGVsZW1lbnRzIG9mIHR5cGUge0BsaW5rIFF1YWxpZmllZE5hbWV9Ci0gICAqLwotICBwcml2YXRlIEFycmF5TGlzdCBnZXRQb3J0TmFtZXNGcm9tV3NkbChTdHJpbmcgd3NkbFVSTCwgV2ViU2VydmljZXNQYXJzZXIgcGFyc2VyKQotICB7Ci0gIAlBcnJheUxpc3QgcG9ydE5hbWVMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAJRGVmaW5pdGlvbiBkZWYgPSBwYXJzZXIuZ2V0V1NETERlZmluaXRpb24od3NkbFVSTCk7Ci0gICAgTWFwIHNlcnZpY2VzID0gZGVmLmdldFNlcnZpY2VzKCk7Ci0gICAgU2VydmljZSBzZXJ2aWNlID0gbnVsbDsKLSAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gc2VydmljZXMudmFsdWVzKCkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBzZXJ2aWNlID0gKFNlcnZpY2UpaXQubmV4dCgpOwotICAgICAgU3RyaW5nIG5hbWVzcGFjZSA9IHNlcnZpY2UuZ2V0UU5hbWUoKS5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgIE1hcCBwb3J0cyA9IHNlcnZpY2UuZ2V0UG9ydHMoKTsKLSAgICAgIGZvciAoSXRlcmF0b3IgaXQyID0gcG9ydHMudmFsdWVzKCkuaXRlcmF0b3IoKTsgaXQyLmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAJUG9ydCBwb3J0ID0gKFBvcnQpaXQyLm5leHQoKTsKLSAgICAgIAlwb3J0TmFtZUxpc3QuYWRkKG5ldyBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZSwgcG9ydC5nZXROYW1lKCkpKTsKLSAgICAgIH0KLSAgICB9ICAgICAgICAKLSAgCQotICAJcmV0dXJuIHBvcnROYW1lTGlzdDsKLSAgCQotICB9Ci0gIAotICBwcml2YXRlIGNsYXNzIFF1YWxpZmllZE5hbWUKLSAgewotICAgIFN0cmluZyBuYW1lc3BhY2VVUkk7Ci0KLSAgICBTdHJpbmcgbG9jYWxQYXJ0OwotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIG5hbWVzcGFjZVVSSQotICAgICAqIEBwYXJhbSBsb2NhbFBhcnQKLSAgICAgKi8KLSAgICBwdWJsaWMgUXVhbGlmaWVkTmFtZShTdHJpbmcgbmFtZXNwYWNlVVJJLCBTdHJpbmcgbG9jYWxQYXJ0KQotICAgIHsKLSAgICAgIHN1cGVyKCk7Ci0gICAgICB0aGlzLm5hbWVzcGFjZVVSSSA9IG5hbWVzcGFjZVVSSTsKLSAgICAgIHRoaXMubG9jYWxQYXJ0ID0gbG9jYWxQYXJ0OwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgbG9jYWxQYXJ0LgotICAgICAqLwotICAgIHB1YmxpYyBTdHJpbmcgZ2V0TG9jYWxQYXJ0KCkKLSAgICB7Ci0gICAgICByZXR1cm4gbG9jYWxQYXJ0OwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBwYXJhbSBsb2NhbFBhcnQKLSAgICAgKiAgICAgICAgICBUaGUgbG9jYWxQYXJ0IHRvIHNldC4KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzZXRMb2NhbFBhcnQoU3RyaW5nIGxvY2FsUGFydCkKLSAgICB7Ci0gICAgICB0aGlzLmxvY2FsUGFydCA9IGxvY2FsUGFydDsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIG5hbWVzcGFjZVVSSS4KLSAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWVzcGFjZVVSSSgpCi0gICAgewotICAgICAgcmV0dXJuIG5hbWVzcGFjZVVSSTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0gbmFtZXNwYWNlVVJJCi0gICAgICogICAgICAgICAgVGhlIG5hbWVzcGFjZVVSSSB0byBzZXQuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgc2V0TmFtZXNwYWNlVVJJKFN0cmluZyBuYW1lc3BhY2VVUkkpCi0gICAgewotICAgICAgdGhpcy5uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkk7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKFF1YWxpZmllZE5hbWUgcW4pCi0gICAgewotICAgICAgcmV0dXJuIChxbi5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMobmFtZXNwYWNlVVJJKSAmJiBxbi5nZXRMb2NhbFBhcnQoKQotICAgICAgICAgIC5lcXVhbHMobG9jYWxQYXJ0KSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2V4dGVuc2lvbi9DbGllbnRSb290RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvZXh0ZW5zaW9uL0NsaWVudFJvb3RGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTRmZWFjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvZXh0ZW5zaW9uL0NsaWVudFJvb3RGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDEzMSAxMjEwNzEgICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIgICAgICAgICAgCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuZXh0ZW5zaW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuRGF0YU9iamVjdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnMuQXNzZW1ibGVDbGllbnRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9ucy5EZXBsb3lDbGllbnRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9ucy5EZXZlbG9wQ2xpZW50RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnMuSW5zdGFsbENsaWVudEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHRlbnNpb25zLlJ1bkNsaWVudEZyYWdtZW50OwotCi1wdWJsaWMgY2xhc3MgQ2xpZW50Um9vdEZyYWdtZW50IGV4dGVuZHMgU2VxdWVuY2VGcmFnbWVudCAKLXsKLSAgcHVibGljIENsaWVudFJvb3RGcmFnbWVudCgpCi0gIHsKLSAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IFByZUNsaWVudERldmVsb3BDb21tYW5kKCksICIiICkgKTsKLSAgICBhZGQoIG5ldyBEZXZlbG9wQ2xpZW50RnJhZ21lbnQoKSApOwotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgUHJlQ2xpZW50QXNzZW1ibGVDb21tYW5kKCksICIiICkgKTsKLSAgICBhZGQoIG5ldyBBc3NlbWJsZUNsaWVudEZyYWdtZW50KCkgKTsKLSAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IFByZUNsaWVudERlcGxveUNvbW1hbmQoKSwgIiIgKSApOwotICAgIGFkZCggbmV3IERlcGxveUNsaWVudEZyYWdtZW50KCkgKTsKLSAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IFByZUNsaWVudEluc3RhbGxDb21tYW5kKCksICIiICkgKTsKLSAgICBhZGQoIG5ldyBJbnN0YWxsQ2xpZW50RnJhZ21lbnQoKSApOwotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgUHJlQ2xpZW50UnVuQ29tbWFuZCgpLCAKLSAgICAJICJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuZXh0ZW5zaW9uLlByZUNsaWVudFJ1bkNvbW1hbmQiICkgKTsKLSAgICBhZGQoIG5ldyBSdW5DbGllbnRGcmFnbWVudCgpICk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IHJlZ2lzdHJ5KSAKLSAgewotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgRGV2ZWxvcENsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiRW52aXJvbm1lbnQiLCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgRGV2ZWxvcENsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiU2VsZWN0aW9uIiwgRGV2ZWxvcENsaWVudEZyYWdtZW50LmNsYXNzICk7Ci0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgRGV2ZWxvcENsaWVudEZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIERldmVsb3BDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXJQcm9qZWN0IiwgRGV2ZWxvcENsaWVudEZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhciIsIERldmVsb3BDbGllbnRGcmFnbWVudC5jbGFzcyApOwotICAJCi0JLy8gTWFwIHRoZSBQcmVDbGllbnREZXZlbG9wQ29tbWFuZCBpbnRvIHRoZSBkYXRhT2JqZWN0LgotCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiRGF0YU9iamVjdCIsIERhdGFPYmplY3RDb21tYW5kLmNsYXNzICk7Ci0JCQotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVudmlyb25tZW50IiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkNvbnRleHQiLCBBc3NlbWJsZUNsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiU2VsZWN0aW9uIiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcyApOwotICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiTW9kdWxlIiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXJQcm9qZWN0IiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcyApOwotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXIiLCBBc3NlbWJsZUNsaWVudEZyYWdtZW50LmNsYXNzICk7Ci0JCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2UiLCBEZXBsb3lDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVudmlyb25tZW50IiwgRGVwbG95Q2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgRGVwbG95Q2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJTZWxlY3Rpb24iLCBEZXBsb3lDbGllbnRGcmFnbWVudC5jbGFzcyApOwotICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIERlcGxveUNsaWVudEZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIERlcGxveUNsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhclByb2plY3QiLCBEZXBsb3lDbGllbnRGcmFnbWVudC5jbGFzcyApOwotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXIiLCBEZXBsb3lDbGllbnRGcmFnbWVudC5jbGFzcyApOwotCQotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgSW5zdGFsbENsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiRW52aXJvbm1lbnQiLCBJbnN0YWxsQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgSW5zdGFsbENsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiU2VsZWN0aW9uIiwgSW5zdGFsbENsaWVudEZyYWdtZW50LmNsYXNzICk7Ci0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgSW5zdGFsbENsaWVudEZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIEluc3RhbGxDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXJQcm9qZWN0IiwgSW5zdGFsbENsaWVudEZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhciIsIEluc3RhbGxDbGllbnRGcmFnbWVudC5jbGFzcyApOwotCQotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgUnVuQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFbnZpcm9ubWVudCIsIFJ1bkNsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiQ29udGV4dCIsIFJ1bkNsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiU2VsZWN0aW9uIiwgUnVuQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIFJ1bkNsaWVudEZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIFJ1bkNsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhclByb2plY3QiLCBSdW5DbGllbnRGcmFnbWVudC5jbGFzcyApOwotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXIiLCBSdW5DbGllbnRGcmFnbWVudC5jbGFzcyApOwotICAgIAotICAgIC8vTWFwcGluZ3MgZnJvbSBmcmFtZXdvcmsgdG8gZnJhbWV3b3JrIGNvbW1hbmRzCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkNvbnRleHQiLCBQcmVDbGllbnRBc3NlbWJsZUNvbW1hbmQuY2xhc3MgKTsKLSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkNvbnRleHQiLCBQcmVDbGllbnREZXBsb3lDb21tYW5kLmNsYXNzICk7Ci0gICAgCi0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgUHJlQ2xpZW50QXNzZW1ibGVDb21tYW5kLmNsYXNzICk7Ci0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgUHJlQ2xpZW50QXNzZW1ibGVDb21tYW5kLmNsYXNzICk7Ci0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJNb2R1bGUiLCBQcmVDbGllbnRBc3NlbWJsZUNvbW1hbmQuY2xhc3MgKTsKLSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhclByb2plY3QiLCBQcmVDbGllbnRBc3NlbWJsZUNvbW1hbmQuY2xhc3MgKTsKLSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhciIsIFByZUNsaWVudEFzc2VtYmxlQ29tbWFuZC5jbGFzcyApOwotICAgIAotICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIFByZUNsaWVudEluc3RhbGxDb21tYW5kLmNsYXNzICk7Ci0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgUHJlQ2xpZW50SW5zdGFsbENvbW1hbmQuY2xhc3MgKTsKLSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkNvbnRleHQiLCBQcmVDbGllbnRJbnN0YWxsQ29tbWFuZC5jbGFzcyApOwotICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiTW9kdWxlIiwgUHJlQ2xpZW50SW5zdGFsbENvbW1hbmQuY2xhc3MgKTsKLSAgICByZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhclByb2plY3QiLCBQcmVDbGllbnRJbnN0YWxsQ29tbWFuZC5jbGFzcyApOwotICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiRWFyIiwgUHJlQ2xpZW50SW5zdGFsbENvbW1hbmQuY2xhc3MgKTsgICAKLQotICAgIHJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIFByZUNsaWVudFJ1bkNvbW1hbmQuY2xhc3MgKTsgICAgCi0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgUHJlQ2xpZW50UnVuQ29tbWFuZC5jbGFzcyApOwotCQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2V4dGVuc2lvbi9QcmVDbGllbnRBc3NlbWJsZUNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvZXh0ZW5zaW9uL1ByZUNsaWVudEFzc2VtYmxlQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2U1ZDQ4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvZXh0ZW5zaW9uL1ByZUNsaWVudEFzc2VtYmxlQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDEzMSAxMjEwNzEgICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIgICAgICAgICAgCi0gKiAyMDA2MDUyOSAgIDE0MTQyMiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAzMjUgICAyMjI0NzMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIENyZWF0ZSBFQVIgdmVyc2lvbiBiYXNlZCBvbiB0aGUgdmVyc2lvbiBvZiBtb2R1bGVzIHRvIGJlIGFkZGVkCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuZXh0ZW5zaW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuaW50ZXJuYWwucGx1Z2luLklKMkVFTW9kdWxlQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5Bc3NvY2lhdGVNb2R1bGVXaXRoRUFSQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQ3JlYXRlRmFjZXRlZFByb2plY3RDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uRmFjZXRVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlQ2xpZW50OwotCi1wdWJsaWMgY2xhc3MgUHJlQ2xpZW50QXNzZW1ibGVDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0gIHByaXZhdGUgSVdlYlNlcnZpY2VDbGllbnQgICAgICAgd2ViU2VydmljZUNsaWVudF87Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgICAgcHJvamVjdF87Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgICAgbW9kdWxlXzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICAgICAgICBlYXJQcm9qZWN0XzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICAgICAgICBlYXJfOwotICBwcml2YXRlIElDb250ZXh0ICAgICAgICAgIAkgIGNvbnRleHRfOwotICAKLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLQkgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQotCSAgaWYgKGNvbnRleHRfICE9IG51bGwgJiYgY29udGV4dF8uZ2V0QXNzZW1ibGUoKSkgewotCQkgIElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0KLQkJICAvLyBDaGVjayBpZiBFQVIgbW9kdWxlIGlzIHJlcSdkLCBpZS4gIT1udWxsCi0JCSAgaWYgKGVhclByb2plY3RfPT1udWxsKQotCQkJICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQotCQkgIC8vICBDcmVhdGUgdGhlIGNsaWVudCBFQVIgbW9kdWxlCi0JCSAgQ3JlYXRlRmFjZXRlZFByb2plY3RDb21tYW5kIGNvbW1hbmQgPSBuZXcgQ3JlYXRlRmFjZXRlZFByb2plY3RDb21tYW5kKCk7Ci0JCSAgY29tbWFuZC5zZXRQcm9qZWN0TmFtZShlYXJQcm9qZWN0Xyk7Ci0JCSAgY29tbWFuZC5zZXRUZW1wbGF0ZUlkKElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FQVJfVEVNUExBVEUpOwotCi0JCSAgSVByb2plY3QgcHJvamVjdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdChwcm9qZWN0Xyk7Ci0JCSAgY29tbWFuZC5zZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoRmFjZXRVdGlscy5nZXRSZXF1aXJlZEVBUkZhY2V0VmVyc2lvbnMocHJvamVjdCkpOyAKLQotCQkgIGNvbW1hbmQuc2V0U2VydmVyRmFjdG9yeUlkKHdlYlNlcnZpY2VDbGllbnRfLmdldFdlYlNlcnZpY2VDbGllbnRJbmZvKCkuZ2V0U2VydmVyRmFjdG9yeUlkKCkpOwotCQkgIGNvbW1hbmQuc2V0U2VydmVySW5zdGFuY2VJZCh3ZWJTZXJ2aWNlQ2xpZW50Xy5nZXRXZWJTZXJ2aWNlQ2xpZW50SW5mbygpLmdldFNlcnZlckluc3RhbmNlSWQoKSk7Ci0JCSAgc3RhdHVzID0gY29tbWFuZC5leGVjdXRlKCBtb25pdG9yLCBhZGFwdGFibGUgKTsKLQkJICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotCQkgIHsKLQkJCSAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKCBzdGF0dXMgKTsKLQkJCSAgcmV0dXJuIHN0YXR1czsKLQkJICB9ICAgICAgICAKLQotCi0JCSAgLy9Bc3NvY2lhdGUgdGhlIGNsaWVudCBtb2R1bGUgYW5kIHNlcnZpY2UgRUFSCi0JCSAgQXNzb2NpYXRlTW9kdWxlV2l0aEVBUkNvbW1hbmQgYXNzb2NpYXRlQ29tbWFuZCA9IG5ldyBBc3NvY2lhdGVNb2R1bGVXaXRoRUFSQ29tbWFuZCgpOwotCQkgIGFzc29jaWF0ZUNvbW1hbmQuc2V0UHJvamVjdChwcm9qZWN0Xyk7Ci0JCSAgYXNzb2NpYXRlQ29tbWFuZC5zZXRNb2R1bGUobW9kdWxlXyk7Ci0JCSAgYXNzb2NpYXRlQ29tbWFuZC5zZXRFQVJQcm9qZWN0KGVhclByb2plY3RfKTsKLQkJICBhc3NvY2lhdGVDb21tYW5kLnNldEVhcihlYXJfKTsKLQkJICBhc3NvY2lhdGVDb21tYW5kLnNldEVudmlyb25tZW50KCBlbnZpcm9ubWVudCApOwotCQkgIHN0YXR1cyA9IGFzc29jaWF0ZUNvbW1hbmQuZXhlY3V0ZSggbW9uaXRvciwgYWRhcHRhYmxlICk7Ci0JCSAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuRVJST1IpCi0JCSAgewotCQkJICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoICBzdGF0dXMgKTsgICAgIAotCQkgIH0gICAgIAotCi0JICB9Ci0JICByZXR1cm4gc3RhdHVzOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KCBTdHJpbmcgcHJvamVjdCApCi0gIHsKLSAgICBwcm9qZWN0XyA9IHByb2plY3Q7Ci0gIH0KLSAgICAKLSAgcHVibGljIHZvaWQgc2V0TW9kdWxlKCBTdHJpbmcgbW9kdWxlICkKLSAgewotICAgIG1vZHVsZV8gPSBtb2R1bGU7Ci0gIH0gCi0gIAotICBwdWJsaWMgdm9pZCBzZXRFYXJQcm9qZWN0KCBTdHJpbmcgZWFyUHJvamVjdCApCi0gIHsKLSAgICBlYXJQcm9qZWN0XyA9IGVhclByb2plY3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVhciggU3RyaW5nIGVhciApCi0gIHsKLSAgICBlYXJfID0gZWFyOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2UoIElXZWJTZXJ2aWNlQ2xpZW50IHdlYlNlcnZpY2VDbGllbnQgKQotICB7Ci0gICAgd2ViU2VydmljZUNsaWVudF8gPSB3ZWJTZXJ2aWNlQ2xpZW50OyAgCi0gIH0gICAKLSAgCi0gIHB1YmxpYyB2b2lkIHNldENvbnRleHQgKElDb250ZXh0IGNvbnRleHQpIHsKLQkgIGNvbnRleHRfID0gY29udGV4dDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9leHRlbnNpb24vUHJlQ2xpZW50RGVwbG95Q29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9leHRlbnNpb24vUHJlQ2xpZW50RGVwbG95Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjU3MWQ4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvZXh0ZW5zaW9uL1ByZUNsaWVudERlcGxveUNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuZXh0ZW5zaW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotCi1wdWJsaWMgY2xhc3MgUHJlQ2xpZW50RGVwbG95Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIAotewotICBwcml2YXRlIElDb250ZXh0ICAgIGNvbnRleHRfOwotICAKLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBpZiAoY29udGV4dF8gIT0gbnVsbCAmJiBjb250ZXh0Xy5nZXREZXBsb3koKSkKLSAgICB7Ci0gICAgICAvL0lmIGFuZCB3aGVuIHRoZXJlIGFyZSBmcmFtZXdvcmsgc3BlY2lmaWMgZGVwbG95IHRoaW5ncyB0byBiZSBkb25lLAotICAgICAgLy9kbyB0aGVtIGhlcmUuCi0gICAgfQotICAgIAotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDb250ZXh0KElDb250ZXh0IGNvbnRleHQpCi0gIHsKLSAgICAgIGNvbnRleHRfPWNvbnRleHQ7Ci0gIH0gICAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2V4dGVuc2lvbi9QcmVDbGllbnREZXZlbG9wQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9leHRlbnNpb24vUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIyY2MwYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2V4dGVuc2lvbi9QcmVDbGllbnREZXZlbG9wQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDEzMSAxMjEwNzEgICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIgICAgIAotICogMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDUxNiAgIDEyNjk2NSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcwMTIzICAgMTY3NDg3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrCi0gKiAyMDA3MDQwMyAgIDE3MzY1NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAzMjYgICAyMjEzNjQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNzI0ICAgMjQxMjc1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIFZhbGlkYXRlIFdTREwgYmVmb3JlIGRvaW5nIG1ham9yIFdlYiBzZXJ2aWNlIHByb2Nlc3NpbmcuCi0gKiAyMDA4MTAwMSAgIDI0Mzg2OSBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBXZWIgU2VydmljZSB0b29scyBhbGxvd2luZyBtaXhlZCBKMkVFIGxldmVscwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmV4dGVuc2lvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5DcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uUmVxdWlyZWRGYWNldFZlcnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5XU0RMUGFyc2VyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLlRpbWVkV1NETFNlbGVjdGlvbkNvbmRpdGlvbkNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuVHlwZVJ1bnRpbWVTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQuUmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb21tb24uSFRUUFV0aWxpdHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VFbnRpdHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VDbGllbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LlNpbXBsZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZUNsaWVudEluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VTdGF0ZTsKLQotcHVibGljIGNsYXNzIFByZUNsaWVudERldmVsb3BDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0gIAotICBwcml2YXRlIFR5cGVSdW50aW1lU2VydmVyIHR5cGVSdW50aW1lU2VydmVyXzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBjbGllbnRSdW50aW1lSWRfOwotICBwcml2YXRlIElDb250ZXh0ICAgICAgICAgIGNvbnRleHRfOwotICBwcml2YXRlIElTZWxlY3Rpb24gICAgICAgIHNlbGVjdGlvbl87Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgcHJvamVjdF87Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgbW9kdWxlXzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBtb2R1bGVUeXBlXzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBlYXJQcm9qZWN0XzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBlYXJfOwotICBwcml2YXRlIElXZWJTZXJ2aWNlQ2xpZW50IHdlYlNlcnZpY2VDbGllbnRfOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgIGoyZWVMZXZlbF87Ci0gIHByaXZhdGUgUmVzb3VyY2VDb250ZXh0ICAgcmVzb3VyY2VDb250ZXh0XzsKLSAgcHJpdmF0ZSBib29sZWFuICAgICAgICAgICBkZXZlbG9wXzsKLSAgcHJpdmF0ZSBib29sZWFuICAgICAgICAgICBhc3NlbWJsZV87Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgZGVwbG95XzsKLSAgcHJpdmF0ZSBib29sZWFuCQkJdGVzdF87Ci0gIHByaXZhdGUgYm9vbGVhbgkJCWluc3RhbGxfOwotICBwcml2YXRlIGJvb2xlYW4JCQlydW5fOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgIHdzZGxVUklfOwotICBwcml2YXRlIE9iamVjdCAgICAgICAgICAgIGRhdGFPYmplY3RfOwotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0JICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JICAKLQkgIGlmIChkZXZlbG9wXykgewotCQkgIElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0KLQkJICAvLyBTcGxpdCB1cCB0aGUgcHJvamVjdCBhbmQgbW9kdWxlCi0JCSAgaW50IGluZGV4ID0gbW9kdWxlXy5pbmRleE9mKCIvIik7Ci0JCSAgaWYgKGluZGV4IT0tMSl7Ci0JCQkgIHByb2plY3RfID0gbW9kdWxlXy5zdWJzdHJpbmcoMCxpbmRleCk7Ci0JCQkgIG1vZHVsZV8gPSBtb2R1bGVfLnN1YnN0cmluZyhpbmRleCsxKTsKLQkJICB9Ci0KLQkJICBpZiAoZWFyXyE9bnVsbCAmJiBlYXJfLmxlbmd0aCgpPjApCi0JCSAgewotCQkJICBpbnQgZWFySW5kZXggPSBlYXJfLmluZGV4T2YoIi8iKTsKLQkJCSAgaWYgKGVhckluZGV4IT0tMSkgewotCQkJCSAgZWFyUHJvamVjdF8gPSBlYXJfLnN1YnN0cmluZygwLGVhckluZGV4KTsKLQkJCQkgIGVhcl8gPSBlYXJfLnN1YnN0cmluZyhlYXJJbmRleCsxKTsKLQkJCSAgfQotCQkgIH0gICAgCi0KLQkJICBlbnZpcm9ubWVudC5nZXRMb2coKS5sb2coSUxvZy5JTkZPLCAid3NfZnJhbWV3b3JrIiwgNTEwOCwgdGhpcywgIlByZUNsaWVudERldmVsb3BDb21tYW5kIiwgImNsaWVudFJ1bnRpbWVJZF8gPSAiKyBjbGllbnRSdW50aW1lSWRfKTsKLQkJICBJV2ViU2VydmljZVJ1bnRpbWUgd3NydCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyCi0JCSAgLmdldENsaWVudFJ1bnRpbWUoY2xpZW50UnVudGltZUlkXyk7Ci0JCSAgV2ViU2VydmljZUNsaWVudEluZm8gd3NJbmZvID0gbmV3IFdlYlNlcnZpY2VDbGllbnRJbmZvKCk7Ci0KLQkJICB3c0luZm8uc2V0U2VydmVyRmFjdG9yeUlkKHR5cGVSdW50aW1lU2VydmVyXy5nZXRTZXJ2ZXJJZCgpKTsKLQkJICB3c0luZm8uc2V0U2VydmVySW5zdGFuY2VJZCh0eXBlUnVudGltZVNlcnZlcl8uZ2V0U2VydmVySW5zdGFuY2VJZCgpKTsKLQkJICB3c0luZm8uc2V0U3RhdGUoV2ViU2VydmljZVN0YXRlLlVOS05PV05fTElURVJBTCk7Ci0JCSAgd3NJbmZvLnNldFdlYlNlcnZpY2VSdW50aW1lSWQodHlwZVJ1bnRpbWVTZXJ2ZXJfLmdldFJ1bnRpbWVJZCgpKTsKLQkJICAKLQkJICAvLyBjaGVjayBmb3IgcmVkaXJlY3Rpb24gaW4gdGhlIHdzZGwKLQkJICBIVFRQVXRpbGl0eSBodHRwVXRpbCA9IG5ldyBIVFRQVXRpbGl0eSgpOwkJICAKLSAgICAgIFN0cmluZyAgICAgIG5ld1dzZGxVUkwgID0gaHR0cFV0aWwuaGFuZGxlUmVkaXJlY3Qod3NkbFVSSV8pOwotICAgICAgCi0gICAgICB3c0luZm8uc2V0V3NkbFVSTCggbmV3V3NkbFVSTCApOyAgIAotICAgICAgCi0gICAgICAvLyBWYWxpZGF0ZSB0aGUgdXJsIGJlZm9yZSBwcm9jZWVkaW5nLgotICAgICAgVGltZWRXU0RMU2VsZWN0aW9uQ29uZGl0aW9uQ29tbWFuZCB0aW1lZENtZCA9IG5ldyBUaW1lZFdTRExTZWxlY3Rpb25Db25kaXRpb25Db21tYW5kKCk7Ci0gICAgICBXZWJTZXJ2aWNlc1BhcnNlciAgICAgICAgICAgICAgICAgIHBhcnNlciAgID0gV1NETFBhcnNlckZhY3RvcnkuZ2V0V1NETFBhcnNlcigpOwotICAgICAgCi0gICAgICB0aW1lZENtZC5zZXRXZWJTZXJ2aWNlc1BhcnNlciggcGFyc2VyICk7Ci0gICAgICB0aW1lZENtZC5zZXRXZWJTZXJ2aWNlVVJJKCBuZXdXc2RsVVJMICk7Ci0gICAgICB0aW1lZENtZC5leGVjdXRlKCBudWxsLCBudWxsICk7Ci0gICAgICAKLSAgICAgIFdlYlNlcnZpY2VFbnRpdHkgZW50aXR5ID0gcGFyc2VyLmdldFdlYlNlcnZpY2VFbnRpdHlCeVVSSSggbmV3V3NkbFVSTCApOwotICAgICAgCi0gICAgICBpZiggZW50aXR5ID09IG51bGwgfHwgZW50aXR5LmdldFR5cGUoKSAhPSBXZWJTZXJ2aWNlRW50aXR5LlRZUEVfV1NETCApCi0gICAgICB7Ci0gICAgICAgIC8vIFRoaXMgaXNuJ3QgYSB3c2RsIGZpbGUKLSAgICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX01TR19TRUxFQ1RJT05fTVVTVF9CRV9XU0RMICk7Ci0gICAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvciggc3RhdHVzICk7Ci0gICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgICB9Ci0KLQkJICB3ZWJTZXJ2aWNlQ2xpZW50XyA9IHdzcnQuZ2V0V2ViU2VydmljZUNsaWVudCh3c0luZm8pOwotCQkgIFdlYlNlcnZpY2VTY2VuYXJpbyBzY2VuYXJpbyA9IFdlYlNlcnZpY2VTY2VuYXJpby5DTElFTlRfTElURVJBTDsKLQkJICBjb250ZXh0XyA9IG5ldyBTaW1wbGVDb250ZXh0KGRldmVsb3BfLCBhc3NlbWJsZV8sIGRlcGxveV8sIGluc3RhbGxfLCBydW5fLCB0cnVlLCB0ZXN0XywKLQkJCQkgIGZhbHNlLCBzY2VuYXJpbywgcmVzb3VyY2VDb250ZXh0Xy5pc092ZXJ3cml0ZUZpbGVzRW5hYmxlZCgpLAotCQkJCSAgcmVzb3VyY2VDb250ZXh0Xy5pc0NyZWF0ZUZvbGRlcnNFbmFibGVkKCksIHJlc291cmNlQ29udGV4dF8KLQkJCQkgIC5pc0NoZWNrb3V0RmlsZXNFbmFibGVkKCkpOwotCi0JCSAgLy8gQ3JlYXRlIHRoZSBjbGllbnQgbW9kdWxlIGlmIG5lZWRlZC4KLQkJICBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3RfKTsKLQkJICBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHJmdiA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChjbGllbnRSdW50aW1lSWRfKS5nZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoKTsKLQkJICBpZiAoIXByb2plY3QuZXhpc3RzKCkpCi0JCSAgewotCQkJICBib29sZWFuIG1hdGNoZXMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5kb2VzQ2xpZW50UnVudGltZVN1cHBvcnRUZW1wbGF0ZShjbGllbnRSdW50aW1lSWRfLCBtb2R1bGVUeXBlXyk7Ci0JCQkgIGlmIChtYXRjaGVzKQotCQkJICB7ICAKLQkJCQkgIENyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZCBjb21tYW5kID0gbmV3IENyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZCgpOwotCQkJCSAgY29tbWFuZC5zZXRQcm9qZWN0TmFtZShwcm9qZWN0Xyk7Ci0JCQkJICBjb21tYW5kLnNldFRlbXBsYXRlSWQobW9kdWxlVHlwZV8pOwotCQkJCSAgY29tbWFuZC5zZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMocmZ2KTsKLQkJCQkgIGNvbW1hbmQuc2V0U2VydmVyRmFjdG9yeUlkKHR5cGVSdW50aW1lU2VydmVyXy5nZXRTZXJ2ZXJJZCgpKTsKLQkJCQkgIGNvbW1hbmQuc2V0U2VydmVySW5zdGFuY2VJZCh0eXBlUnVudGltZVNlcnZlcl8uZ2V0U2VydmVySW5zdGFuY2VJZCgpKTsKLQkJCQkgIGNvbW1hbmQuc2V0RWFyUHJvamVjdE5hbWUoZWFyUHJvamVjdF8pOwotCQkJCSAgc3RhdHVzID0gY29tbWFuZC5leGVjdXRlKCBtb25pdG9yLCBhZGFwdGFibGUgKTsKLQkJCQkgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpCi0JCQkJICB7Ci0JCQkJCSAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKCBzdGF0dXMgKTsKLQkJCQkJICByZXR1cm4gc3RhdHVzOwotCQkJCSAgfSAgICAgICAgCi0JCQkgIH0gICAgICAgICAgICAKLQkJICB9IGVsc2UgewotCQkJCS8vIGFkZCBmYWNldHMgcmVxdWlyZWQgYnkgV2ViIHNlcnZpY2UgcnVudGltZQotCQkgICAgICAgIGlmIChyZnYubGVuZ3RoICE9IDApIHsKLQkJICAgICAgICAJc3RhdHVzID0gRmFjZXRVdGlscy5hZGRSZXF1aXJlZEZhY2V0c1RvUHJvamVjdChwcm9qZWN0LCByZnYsIG1vbml0b3IpOwotCQkgICAgICAgIAlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotCQkgICAgICAgIAl7Ci0JCSAgICAgICAgCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoIHN0YXR1cyApOwotCQkgICAgICAgIAkJcmV0dXJuIHN0YXR1czsKLQkJICAgICAgICAJfSAgICAgIAotCQkgICAgICAgIH0KLQkJICB9ICAgICAgICAKLQkgIH0KLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRUeXBlUnVudGltZVNlcnZlciggVHlwZVJ1bnRpbWVTZXJ2ZXIgdHlwZVJ1bnRpbWVTZXJ2ZXIgKQotICB7Ci0JdHlwZVJ1bnRpbWVTZXJ2ZXJfID0gdHlwZVJ1bnRpbWVTZXJ2ZXI7ICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50UnVudGltZUlkKCBTdHJpbmcgaWQpCi0gIHsKLSAgICBjbGllbnRSdW50aW1lSWRfID0gaWQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudEoyRUVWZXJzaW9uKCBTdHJpbmcgajJlZUxldmVsICkKLSAgewotCWoyZWVMZXZlbF8gPSBqMmVlTGV2ZWw7ICAKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRKMmVlTGV2ZWwoKQotICB7Ci0gICAgcmV0dXJuIGoyZWVMZXZlbF87ICAKLSAgfQotICAKLSAgcHVibGljIElXZWJTZXJ2aWNlQ2xpZW50IGdldFdlYlNlcnZpY2UoKQotICB7Ci0JcmV0dXJuIHdlYlNlcnZpY2VDbGllbnRfOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBJQ29udGV4dCBnZXRDb250ZXh0KCkKLSAgewotICAgIHJldHVybiBjb250ZXh0XzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0UmVzb3VyY2VDb250ZXh0KCBSZXNvdXJjZUNvbnRleHQgcmVzb3VyY2VDb250ZXh0ICkKLSAgewotICAgIHJlc291cmNlQ29udGV4dF8gPSByZXNvdXJjZUNvbnRleHQ7CSAgCi0gIH0KLSAgCi0gIHB1YmxpYyBJU2VsZWN0aW9uIGdldFNlbGVjdGlvbigpCi0gIHsKLSAgICByZXR1cm4gc2VsZWN0aW9uXzsJICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U2VsZWN0aW9uKCBJU2VsZWN0aW9uIHNlbGVjdGlvbiApCi0gIHsKLQlzZWxlY3Rpb25fID0gc2VsZWN0aW9uOyAgCi0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFByb2plY3QoKQotICB7Ci0gICAgcmV0dXJuIHByb2plY3RfOyAgICAKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRNb2R1bGUoKQotICB7Ci0gICAgcmV0dXJuIG1vZHVsZV87CSAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldE1vZHVsZSggU3RyaW5nIG1vZHVsZSApCi0gIHsKLQltb2R1bGVfID0gbW9kdWxlOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRNb2R1bGVUeXBlKCBTdHJpbmcgbW9kdWxlVHlwZSkKLSAgewotICAgIG1vZHVsZVR5cGVfID0gbW9kdWxlVHlwZTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RWFyUHJvamVjdCgpCi0gIHsKLSAgICByZXR1cm4gZWFyUHJvamVjdF87ICAgCi0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RWFyKCkKLSAgewotCXJldHVybiBlYXJfOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVhciggU3RyaW5nIGVhciApCi0gIHsKLQllYXJfID0gZWFyOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldERldmVsb3BDbGllbnQoYm9vbGVhbiBkZXZlbG9wQ2xpZW50KSB7Ci0JICBkZXZlbG9wXyA9IGRldmVsb3BDbGllbnQ7Ci0gIH0JCi0KLSAgcHVibGljIHZvaWQgc2V0QXNzZW1ibGVDbGllbnQoYm9vbGVhbiBhc3NlbWJsZUNsaWVudCkgewotCSAgYXNzZW1ibGVfID0gYXNzZW1ibGVDbGllbnQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXREZXBsb3lDbGllbnQoYm9vbGVhbiBkZXBsb3lDbGllbnQpCi0gIHsKLSAgICAgIGRlcGxveV8gPSBkZXBsb3lDbGllbnQ7Ci0gIH0KLQkKLSAgcHVibGljIHZvaWQgc2V0SW5zdGFsbENsaWVudChib29sZWFuIGluc3RhbGxDbGllbnQpCi0gIHsKLQlpbnN0YWxsXyA9IGluc3RhbGxDbGllbnQ7Ci0gIH0JCi0gIAotICBwdWJsaWMgdm9pZCBzZXRUZXN0U2VydmljZShib29sZWFuIHRlc3RTZXJ2aWNlKQotICB7Ci0JdGVzdF8gPSB0ZXN0U2VydmljZTsKLSAgfQkJCi0gIAotICBwdWJsaWMgdm9pZCBzZXRTdGFydFNlcnZpY2UoYm9vbGVhbiBzdGFydFNlcnZpY2UpCi0gIHsKLQkgIHJ1bl8gPSBzdGFydFNlcnZpY2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFdzZGxVUkkoU3RyaW5nIHVyaSkKLSAgewotICAgIHdzZGxVUklfID0gdXJpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXREYXRhT2JqZWN0KCBPYmplY3Qgb2JqZWN0ICkKLSAgewotICAgIGRhdGFPYmplY3RfID0gb2JqZWN0OwkgIAotICB9Ci0gIAotICBwdWJsaWMgT2JqZWN0IGdldERhdGFPYmplY3QoKQotICB7Ci0JT2JqZWN0IHJlc3VsdCA9IG51bGw7Ci0JCi0gICAgaWYoIGRhdGFPYmplY3RfICE9IG51bGwgJiYgZGF0YU9iamVjdF8gaW5zdGFuY2VvZiBJV2ViU2VydmljZSApCi0JewotCSAgLy8gVGhlIGRhdGEgb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gc2V0IHdpdGggYW4gSVdlYlNlcnZpY2UKLQkgIC8vIHNvIHdlIHdpbGwga2VlcCB0aGlzIHZhbHVlLgotCSAgcmVzdWx0ID0gZGF0YU9iamVjdF87Ci0JfQotICAgIGVsc2UKLQl7Ci0JICByZXN1bHQgPSB3ZWJTZXJ2aWNlQ2xpZW50XzsJCi0JfQotCQotCXJldHVybiByZXN1bHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvZXh0ZW5zaW9uL1ByZUNsaWVudEluc3RhbGxDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2V4dGVuc2lvbi9QcmVDbGllbnRJbnN0YWxsQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2Y4ODA5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvZXh0ZW5zaW9uL1ByZUNsaWVudEluc3RhbGxDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MDgxNSAgIDE5OTYyNiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzExMzAgICAyMDM4MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNDI1ICAgMjIwOTg1IHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nIEhhLCBTZXJ2ZXIgaXMgcmVjcmVhdGVkIHdoZW4gcHJldiBwdWJsaXNoIGZhaWxlZAotICogMjAwODA0MjkgICAyMjA5ODUgdHJ1bmdoYUBjYS5pYm0uY29tIC0gVHJ1bmcgSGEKLSAqIDIwMDgwNTIwICAgMjMzMDY1IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBTZXJ2ZXIgbm90IGZvdW5kIGVycm9yIGluIFdlYiBzZXJ2aWNlIGdlbmVyYXRpb24KLSAqIDIwMDgwNzIyICAgMjQwMjMxIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmV4dGVuc2lvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkFkZE1vZHVsZVRvU2VydmVyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQ3JlYXRlU2VydmVyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlQ2xpZW50OwotCi1wdWJsaWMgY2xhc3MgUHJlQ2xpZW50SW5zdGFsbENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiAKLXsKLSAgcHJpdmF0ZSBJV2ViU2VydmljZUNsaWVudCB3ZWJTZXJ2aWNlQ2xpZW50XzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBwcm9qZWN0XzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBtb2R1bGVfOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgIGVhclByb2plY3RfOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgIGVhcl87Ci0gIHByaXZhdGUgSUNvbnRleHQJCQljb250ZXh0XzsKLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7CSAgCi0JICBpZiAoY29udGV4dF8gIT0gbnVsbCAmJiBjb250ZXh0Xy5nZXRJbnN0YWxsKCkpCi0JICB7ICAKLQkgICAgICBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCSAgICAgIAotCSAgICAgIGlmICh3ZWJTZXJ2aWNlQ2xpZW50Xy5nZXRXZWJTZXJ2aWNlQ2xpZW50SW5mbygpLmdldFNlcnZlckluc3RhbmNlSWQoKT09bnVsbCkKLQkgICAgICB7Ci0gICAgCQkvLyBBdHRlbXB0IHRvIGZpbmQgYSBzZXJ2ZXIgaW5zdGFuY2UgaW4gdGhlIHdvcmtzcGFjZSBtYXRjaGluZwotCQkJLy8gdGhlIHNlcnZlciBpZCBvZiB0aGUgd2ViU2VydmljZV8KLQkJCS8vIElmIHdlIGNhbiBmaW5kIG9uZSwgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgc2VydmVyLgotCQkJSVNlcnZlcltdIGFsbFNlcnZlcnMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlcnMoKTsKLQkJCWlmIChhbGxTZXJ2ZXJzICE9IG51bGwgJiYgYWxsU2VydmVycy5sZW5ndGggPiAwKSB7Ci0JCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhbGxTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7Ci0JCQkJCUlTZXJ2ZXIgb25lU2VydmVyID0gYWxsU2VydmVyc1tpXTsKLQkJCQkJaWYgKG9uZVNlcnZlci5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKS5lcXVhbHMoCi0JCQkJCQkJd2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5nZXRTZXJ2ZXJGYWN0b3J5SWQoKSkpIHsKLQkJCQkJCQotCQkJCQkJd2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5zZXRTZXJ2ZXJJbnN0YW5jZUlkKG9uZVNlcnZlci5nZXRJZCgpKTsKLQkJCQkJCXdlYlNlcnZpY2VDbGllbnRfLmdldFdlYlNlcnZpY2VDbGllbnRJbmZvKCkuc2V0U2VydmVyQ3JlYXRlZCh0cnVlKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJCS8vIENhbm5vdCBmaW5kIGFuIGFwcHJvcHJpYXRlIHNlcnZlciwgc28gd2Ugd2lsbCBjcmVhdGUgb25lCi0JCQlpZiAod2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkgPT0gbnVsbCkgewotCQkgICAgICAgIENyZWF0ZVNlcnZlckNvbW1hbmQgY3JlYXRlU2VydmVyQ29tbWFuZCA9IG5ldyBDcmVhdGVTZXJ2ZXJDb21tYW5kKCk7Ci0JCSAgICAgICAgY3JlYXRlU2VydmVyQ29tbWFuZC5zZXRTZXJ2ZXJGYWN0b3J5aWQod2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5nZXRTZXJ2ZXJGYWN0b3J5SWQoKSk7Ci0JCSAgICAgICAgY3JlYXRlU2VydmVyQ29tbWFuZC5zZXRTZXJ2ZXJSdW50aW1lSWQod2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5nZXRTZXJ2ZXJSdW50aW1lSWQoKSk7Ci0JCSAgICAgICAgY3JlYXRlU2VydmVyQ29tbWFuZC5zZXRFbnZpcm9ubWVudCggZW52aXJvbm1lbnQgKTsKLQkJICAgICAgICBJU3RhdHVzIGNyZWF0ZVNlcnZlclN0YXR1cyA9IGNyZWF0ZVNlcnZlckNvbW1hbmQuZXhlY3V0ZShudWxsLCBudWxsKTsKLQkJICAgICAgICBpZiAoY3JlYXRlU2VydmVyU3RhdHVzLmdldFNldmVyaXR5KCk9PVN0YXR1cy5PSykKLQkJICAgICAgICB7Ci0JCSAgICAgICAgICB3ZWJTZXJ2aWNlQ2xpZW50Xy5nZXRXZWJTZXJ2aWNlQ2xpZW50SW5mbygpLnNldFNlcnZlckluc3RhbmNlSWQoY3JlYXRlU2VydmVyQ29tbWFuZC5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkpOwotCQkgICAgICAgICAgd2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5zZXRTZXJ2ZXJDcmVhdGVkKHRydWUpOwotCQkgICAgICAgIH0KLQkJICAgICAgICBlbHNlCi0JCSAgICAgICAgewotCQkgICAgICAgICAgaWYgKGNyZWF0ZVNlcnZlclN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuRVJST1IpCi0JCSAgICAgICAgICB7Ci0JCSAgICAgICAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvciggY3JlYXRlU2VydmVyU3RhdHVzICk7Ci0JCSAgICAgICAgICB9ICAgICAgICAgICAgICAgCi0JCSAgICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyU3RhdHVzOwotCQkgICAgICAgIH0KLQkJCX0KLQkgICAgICB9Ci0JICAgICAgCi0JICAgICAgQWRkTW9kdWxlVG9TZXJ2ZXJDb21tYW5kIGNvbW1hbmQgPSBuZXcgQWRkTW9kdWxlVG9TZXJ2ZXJDb21tYW5kKCk7Ci0JICAgICAgY29tbWFuZC5zZXRTZXJ2ZXJJbnN0YW5jZUlkKHdlYlNlcnZpY2VDbGllbnRfLmdldFdlYlNlcnZpY2VDbGllbnRJbmZvKCkuZ2V0U2VydmVySW5zdGFuY2VJZCgpKTsKLQkgICAgICBpZiAoZWFyUHJvamVjdF8gIT0gbnVsbCAmJiBlYXJQcm9qZWN0Xy5sZW5ndGgoKT4wICYmIGVhcl8hPSBudWxsICYmIGVhcl8ubGVuZ3RoKCk+MCkKLQkgICAgICB7Ci0JICAgICAgICBjb21tYW5kLnNldFByb2plY3QoZWFyUHJvamVjdF8pOwotCSAgICAgICAgY29tbWFuZC5zZXRNb2R1bGUoZWFyXyk7Ci0JICAgICAgfQotCSAgICAgIGVsc2UKLQkgICAgICB7Ci0JICAgICAgICBjb21tYW5kLnNldFByb2plY3QocHJvamVjdF8pOwotCSAgICAgICAgY29tbWFuZC5zZXRNb2R1bGUobW9kdWxlXyk7ICAgICAgIAotCSAgICAgIH0KLQkKLQkgICAgICBjb21tYW5kLnNldEVudmlyb25tZW50KCBlbnZpcm9ubWVudCApOwotCSAgICAgIElTdGF0dXMgc3RhdHVzID0gY29tbWFuZC5leGVjdXRlKCBudWxsLCBudWxsICk7Ci0JICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuRVJST1IpCi0JICAgICAgewotCSAgICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKCBzdGF0dXMgKTsKLQkgICAgICB9ICAgICAKLQkgICAgICByZXR1cm4gc3RhdHVzOwotCSAgIH0KLQkgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KCBTdHJpbmcgcHJvamVjdCApCi0gICAgewotICAgICAgcHJvamVjdF8gPSBwcm9qZWN0OwotICAgIH0KLSAgICAgIAotICAgIHB1YmxpYyBib29sZWFuIGdldENhblJ1blRlc3RDbGllbnQoKXsKLSAgCSAgaWYod2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkgIT0gbnVsbCkgcmV0dXJuIHRydWU7Ci0gIAkgIAotICAJICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIHNldE1vZHVsZSggU3RyaW5nIG1vZHVsZSApCi0gICAgewotICAgICAgbW9kdWxlXyA9IG1vZHVsZTsKLSAgICB9IAotICAgIAotICAgIHB1YmxpYyB2b2lkIHNldEVhclByb2plY3QoIFN0cmluZyBlYXJQcm9qZWN0ICkKLSAgICB7Ci0gICAgICBlYXJQcm9qZWN0XyA9IGVhclByb2plY3Q7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIHNldEVhciggU3RyaW5nIGVhciApCi0gICAgewotICAgICAgZWFyXyA9IGVhcjsgIAotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlKCBJV2ViU2VydmljZUNsaWVudCB3ZWJTZXJ2aWNlQ2xpZW50ICkKLSAgICB7Ci0gICAgICB3ZWJTZXJ2aWNlQ2xpZW50XyA9IHdlYlNlcnZpY2VDbGllbnQ7ICAKLSAgICB9ICAgIAotICAgIAotICAgIHB1YmxpYyB2b2lkIHNldENvbnRleHQoSUNvbnRleHQgY29udGV4dCkKLSAgICB7Ci0gICAgCWNvbnRleHRfID0gY29udGV4dDsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2V4dGVuc2lvbi9QcmVDbGllbnRSdW5Db21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL2V4dGVuc2lvbi9QcmVDbGllbnRSdW5Db21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MzE1YmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9leHRlbnNpb24vUHJlQ2xpZW50UnVuQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUyOSAgIDE0MTQyMiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmV4dGVuc2lvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuU3RhcnRTZXJ2ZXJDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VDbGllbnQ7Ci0KLXB1YmxpYyBjbGFzcyBQcmVDbGllbnRSdW5Db21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0gIHByaXZhdGUgSVdlYlNlcnZpY2VDbGllbnQgd2ViU2VydmljZUNsaWVudF87Ci0gIHByaXZhdGUgSUNvbnRleHQgY29udGV4dF87Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLQkgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQkgCi0JICBpZiAoY29udGV4dF8gIT0gbnVsbCAmJiBjb250ZXh0Xy5nZXRSdW4oKSkKLQkgIHsKLQkgICAgSUVudmlyb25tZW50IGVudmlyb25tZW50ID0gZ2V0RW52aXJvbm1lbnQoKTsgICAKLQkgICAgCi0JICAgIFN0YXJ0U2VydmVyQ29tbWFuZCBjb21tYW5kID0gbmV3IFN0YXJ0U2VydmVyQ29tbWFuZCgpOwotCSAgICBjb21tYW5kLnNldFNlcnZlckluc3RhbmNlSWQod2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkpOwotCSAgICBjb21tYW5kLnNldEVudmlyb25tZW50KCBlbnZpcm9ubWVudCApOwotCSAgICBzdGF0dXMgPSBjb21tYW5kLmV4ZWN1dGUoIG1vbml0b3IsIG51bGwgKTsKLQkgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuRVJST1IpCi0JICAgIHsKLQkgICAgICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoIHN0YXR1cyApOyAgICAgICAKLQkgICAgfSAKLQkgIH0KLQkgIAotICAgIHJldHVybiBzdGF0dXM7CSAgCi0gIH0KLQkgIAotCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2UoIElXZWJTZXJ2aWNlQ2xpZW50IHdlYlNlcnZpY2VDbGllbnQgKQotICB7Ci0gICAgd2ViU2VydmljZUNsaWVudF8gPSB3ZWJTZXJ2aWNlQ2xpZW50OyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENvbnRleHQoSUNvbnRleHQgY29udGV4dCkKLSAgewotCSAgY29udGV4dF89Y29udGV4dDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9wbHVnaW4vV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcGx1Z2luL1dlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1OTkzNjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9wbHVnaW4vV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjQgICAxMTU2OTAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MDUwNCAgIDEzNjExOCBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucGx1Z2luOwotCi1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkZpbGVMb2NhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnJlc291cmNlLkltYWdlRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXMuUGVyc2lzdGVudFByb2plY3RUb3BvbG9neUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRTZXJ2ZXJSdW50aW1lQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXMuUHJvamVjdFRvcG9sb2d5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbjsKLQotCi0vKioKLSogVGhpcyBpcyB0aGUgcGx1Z2luIGNsYXNzIGZvciB0aGUgV2ViIFNlcnZpY2VzIHBsdWdpbi4KLSogPHA+Ci0qIFRoaXMgcGx1Z2luIGNvbnRhaW5zIHRoZSBncmFwaGljIHVzZXIgaW50ZXJmYWNlIHRvIHRoZQotKiBXZWIgU2VydmljZXMgcnVudGltZSBmb3VuZCBpbiBvcmcuZWNsaXBzZS5qc3Qud3MuCi0qLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbgotewotCi0gIC8qKgotICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXNjcmlwdG9yIG9mIHRoaXMgcGx1Z2luIGluIHBsdWdpbi54bWwuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElEID0gIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSI7Ci0KLSAgLyoqCi0gICogVGhlIHJlZmVyZW5jZSB0byB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgcGx1Z2luLgotICAqLwotICBwcml2YXRlIHN0YXRpYyBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbiBpbnN0YW5jZV87Ci0KLSAgcHJpdmF0ZSBQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgc2VydmVyUnVudGltZUNvbnRleHRfOwotICBwcml2YXRlIFBlcnNpc3RlbnRQcm9qZWN0VG9wb2xvZ3lDb250ZXh0IHByb2plY3RUb3BvbG9neUNvbnRleHRfOwotICAKLSAgLyoqCi0gICogQ29uc3RydWN0cyBhIHJ1bnRpbWUgcGx1Z2luIG9iamVjdCBmb3IgdGhpcyBwbHVnaW4uCi0gICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbiAoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgICBpbnN0YW5jZV8gPSB0aGlzOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgcGx1Z2luLiBFcXVpdmFsZW50IHRvIGNhbGxpbmcKLSAgKiAoV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4pUGxhdGZvcm0uZ2V0UGx1Z2luKCJvcmcuZWNsaXBzZS5qc3Qud3MudWkiKTsKLSAgKiBAcmV0dXJuIFRoZSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbiBzaW5nbGV0b24uCi0gICovCi0gIHN0YXRpYyBwdWJsaWMgV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4gZ2V0SW5zdGFuY2UgKCkKLSAgewotICAgIHJldHVybiBpbnN0YW5jZV87Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyBhbiBpbWFnZSBkZXNjcmlwdG9yIGZvciB0aGUgbmFtZWQgcmVzb3VyY2UKLSAgICogYXMgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiBpbnN0YWxsIGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIEFuIGltYWdlIGRlc2NyaXB0b3IsIHBvc3NpYmx5IG51bGwuCi0gICAqLwotICAgcHVibGljIHN0YXRpYyBJbWFnZURlc2NyaXB0b3IgZ2V0SW1hZ2VEZXNjcmlwdG9yICggU3RyaW5nIG5hbWUgKQotICAgewotIAl0cnkKLSAgICAgewkKLSAgICAgCVVSTCBpbWFnZVVSTCA9IEZpbGVMb2NhdG9yLmZpbmQoaW5zdGFuY2VfLmdldEJ1bmRsZSgpLCBuZXcgUGF0aCgiJG5sJC8iK25hbWUpLCBudWxsKTsKLSAgICAgCXJldHVybiBJbWFnZURlc2NyaXB0b3IuY3JlYXRlRnJvbVVSTChpbWFnZVVSTCk7Ci0gICAgIH0KLSAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICB7Ci0gICAgICAgcmV0dXJuIG51bGw7Ci0gICAgIH0KLSAgIH0KLQotICBwdWJsaWMgUHJvamVjdFRvcG9sb2d5Q29udGV4dCBnZXRQcm9qZWN0VG9wb2xvZ3lDb250ZXh0KCkKLSAgewotICAgIGlmIChwcm9qZWN0VG9wb2xvZ3lDb250ZXh0XyA9PSBudWxsKQotICAgIHsKLSAgICAgIHByb2plY3RUb3BvbG9neUNvbnRleHRfID0gbmV3IFBlcnNpc3RlbnRQcm9qZWN0VG9wb2xvZ3lDb250ZXh0KCk7Ci0gICAgICBwcm9qZWN0VG9wb2xvZ3lDb250ZXh0Xy5sb2FkKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBwcm9qZWN0VG9wb2xvZ3lDb250ZXh0XzsKLSAgfQotCi0gIHB1YmxpYyBQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgZ2V0U2VydmVyUnVudGltZUNvbnRleHQoKSAKLQl7Ci0JICBpZiAoc2VydmVyUnVudGltZUNvbnRleHRfID09IG51bGwpCi0JICAJewotCSAgCQlzZXJ2ZXJSdW50aW1lQ29udGV4dF8gPSBuZXcgUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0KCk7Ci0JICAJCXNlcnZlclJ1bnRpbWVDb250ZXh0Xy5sb2FkKCk7Ci0JICAJfQotCSAgcmV0dXJuIHNlcnZlclJ1bnRpbWVDb250ZXh0XzsKLQl9ICAKLSAgfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9wcmVmZXJlbmNlcy9QZXJzaXN0ZW50UHJvamVjdFRvcG9sb2d5Q29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9wcmVmZXJlbmNlcy9QZXJzaXN0ZW50UHJvamVjdFRvcG9sb2d5Q29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjYyZTk4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFByb2plY3RUb3BvbG9neUNvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMDIgICAxMTk3ODAgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjAyMTYgICAxMjcxMzggcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjAyMjcgICAxMjQzOTIgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0LlBlcnNpc3RlbnRDb250ZXh0OwotaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU3RyaW5nVG9rZW5pemVyOwotCi0KLXB1YmxpYyBjbGFzcyBQZXJzaXN0ZW50UHJvamVjdFRvcG9sb2d5Q29udGV4dCBleHRlbmRzIFBlcnNpc3RlbnRDb250ZXh0IGltcGxlbWVudHMgUHJvamVjdFRvcG9sb2d5Q29udGV4dAotewotCi0gIHB1YmxpYyBQZXJzaXN0ZW50UHJvamVjdFRvcG9sb2d5Q29udGV4dCAoKSAKLSAgewotCSAgc3VwZXIoIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBsb2FkKCkgCi0gIHsKLSAgICAvL0xvYWQgdGhlIHNlcnZpY2UgcHJvamVjdCB0eXBlcwotICAgIFN0cmluZ1tdIHNlcnZpY2VJZHMgPSBQcm9qZWN0VG9wb2xvZ3lEZWZhdWx0cy5nZXRTZXJ2aWNlVHlwZXMoKTsKLSAgICBTdHJpbmdCdWZmZXIgc2VydmljZVNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VydmljZUlkcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoaSAhPSAwKQotICAgICAgICBzZXJ2aWNlU2IuYXBwZW5kKCIgIik7Ci0gICAgICBzZXJ2aWNlU2IuYXBwZW5kKHNlcnZpY2VJZHNbaV0pOwotICAgIH0KLSAgICBzZXREZWZhdWx0U3RyaW5nSWZOb0RlZmF1bHQoUFJFRkVSRU5DRV9TRVJWSUNFX1RZUEVTLCBzZXJ2aWNlU2IudG9TdHJpbmcoKSk7Ci0gICAgCi0gICAgLy9Mb2FkIHRoZSBjbGllbnQgcHJvamVjdCB0eXBlcwotICAgIFN0cmluZ1tdIGlkcyA9IFByb2plY3RUb3BvbG9neURlZmF1bHRzLmdldENsaWVudFR5cGVzKCk7Ci0gICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChpICE9IDApCi0gICAgICAgIHNiLmFwcGVuZCgiICIpOwotICAgICAgc2IuYXBwZW5kKGlkc1tpXSk7Ci0gICAgfQotICAgIHNldERlZmF1bHRTdHJpbmdJZk5vRGVmYXVsdChQUkVGRVJFTkNFX0NMSUVOVF9UWVBFUywgc2IudG9TdHJpbmcoKSk7Ci0gICAgc2V0RGVmYXVsdChQUkVGRVJFTkNFX1VTRV9UV09fRUFSUywgUHJvamVjdFRvcG9sb2d5RGVmYXVsdHMuaXNVc2VUd29FQVJzKCkpOwotIH0KLQotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlVHlwZXMoU3RyaW5nW10gaWRzKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChpICE9IDApCi0gICAgICAgIHNiLmFwcGVuZCgiICIpOwotICAgICAgc2IuYXBwZW5kKGlkc1tpXSk7Ci0gICAgfQotICAgIHNldFZhbHVlKFBSRUZFUkVOQ0VfU0VSVklDRV9UWVBFUywgc2IudG9TdHJpbmcoKSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nW10gZ2V0U2VydmljZVR5cGVzKCkKLSAgewotICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoZ2V0VmFsdWVBc1N0cmluZyhQUkVGRVJFTkNFX1NFUlZJQ0VfVFlQRVMpKTsKLSAgICBTdHJpbmdbXSBzID0gbmV3IFN0cmluZ1tzdC5jb3VudFRva2VucygpXTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspCi0gICAgICBzW2ldID0gc3QubmV4dFRva2VuKCk7Ci0gICAgcmV0dXJuIHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXREZWZhdWx0U2VydmljZVR5cGVzKCkKLSAgewotICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoZ2V0RGVmYXVsdFN0cmluZyhQUkVGRVJFTkNFX1NFUlZJQ0VfVFlQRVMpKTsKLSAgICBTdHJpbmdbXSBzID0gbmV3IFN0cmluZ1tzdC5jb3VudFRva2VucygpXTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspCi0gICAgICBzW2ldID0gc3QubmV4dFRva2VuKCk7Ci0gICAgcmV0dXJuIHM7ICAgICAgICAKLSAgfQotICAgIAotIHB1YmxpYyB2b2lkIHNldENsaWVudFR5cGVzKFN0cmluZ1tdIGlkcykKLSB7Ci0gICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICBmb3IgKGludCBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykKLSAgIHsKLSAgICAgaWYgKGkgIT0gMCkKLSAgICAgICBzYi5hcHBlbmQoIiAiKTsKLSAgICAgc2IuYXBwZW5kKGlkc1tpXSk7Ci0gICB9Ci0gICBzZXRWYWx1ZShQUkVGRVJFTkNFX0NMSUVOVF9UWVBFUywgc2IudG9TdHJpbmcoKSk7Ci0gfQotCi0gcHVibGljIFN0cmluZ1tdIGdldENsaWVudFR5cGVzKCkKLSB7Ci0gICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGdldFZhbHVlQXNTdHJpbmcoUFJFRkVSRU5DRV9DTElFTlRfVFlQRVMpKTsKLSAgIFN0cmluZ1tdIHMgPSBuZXcgU3RyaW5nW3N0LmNvdW50VG9rZW5zKCldOwotICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKQotICAgICBzW2ldID0gc3QubmV4dFRva2VuKCk7Ci0gICByZXR1cm4gczsKLSB9Ci0gCi0gcHVibGljIFN0cmluZ1tdIGdldERlZmF1bHRDbGllbnRUeXBlcygpCi0gewotICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihnZXREZWZhdWx0U3RyaW5nKFBSRUZFUkVOQ0VfQ0xJRU5UX1RZUEVTKSk7Ci0gICBTdHJpbmdbXSBzID0gbmV3IFN0cmluZ1tzdC5jb3VudFRva2VucygpXTsKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykKLSAgICAgc1tpXSA9IHN0Lm5leHRUb2tlbigpOwotICAgcmV0dXJuIHM7ICAgICAgICAKLSB9IAotCi0gcHVibGljIHZvaWQgc2V0VXNlVHdvRUFScyhib29sZWFuIHVzZSkKLSB7Ci0gICBzZXRWYWx1ZShQUkVGRVJFTkNFX1VTRV9UV09fRUFSUywgdXNlKTsKLSB9Ci0gcHVibGljIGJvb2xlYW4gaXNVc2VUd29FQVJzKCkKLSB7Ci0gICByZXR1cm4gZ2V0VmFsdWVBc0Jvb2xlYW4oUFJFRkVSRU5DRV9VU0VfVFdPX0VBUlMpOwotIH0KLQotIHB1YmxpYyBQcm9qZWN0VG9wb2xvZ3lDb250ZXh0IGNvcHkoKSB7Ci0gCVRyYW5zaWVudFByb2plY3RUb3BvbG9neUNvbnRleHQgY29udGV4dCA9IG5ldyBUcmFuc2llbnRQcm9qZWN0VG9wb2xvZ3lDb250ZXh0KCk7Ci0gICAgY29udGV4dC5zZXRTZXJ2aWNlVHlwZXMoZ2V0U2VydmljZVR5cGVzKCkpOwotICAgIGNvbnRleHQuc2V0RGVmYXVsdFNlcnZpY2VUeXBlcyhnZXREZWZhdWx0U2VydmljZVR5cGVzKCkpOwotCWNvbnRleHQuc2V0Q2xpZW50VHlwZXMoZ2V0Q2xpZW50VHlwZXMoKSk7Ci0gICAgY29udGV4dC5zZXREZWZhdWx0Q2xpZW50VHlwZXMoZ2V0RGVmYXVsdENsaWVudFR5cGVzKCkpOwotCWNvbnRleHQuc2V0VXNlVHdvRUFScyhpc1VzZVR3b0VBUnMoKSk7Ci0JcmV0dXJuIGNvbnRleHQ7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3ByZWZlcmVuY2VzL1BlcnNpc3RlbnRTZXJ2ZXJSdW50aW1lQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTZlYWE4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwNDE1ICAgMjI3MTUyIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBOZWVkIGEgd2F5IHRvIHNwZWNpZnkgYSBiYWNrdXAgV2ViIHNlcnZpY2UgcnVudGltZQotICogMjAwODA5MTggICAyNDc1MzcgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBVcGRhdGUgZGVmYXVsdCBzZXJ2ZXIgcnVudGltZSB0byBUb21jYXQgNgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnByZWZlcmVuY2VzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dC5QZXJzaXN0ZW50Q29udGV4dDsKLQotCi0vKioKLSAqIAotICovCi1wdWJsaWMgY2xhc3MgUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0IGV4dGVuZHMgUGVyc2lzdGVudENvbnRleHQgewotCQotCXByaXZhdGUgU3RyaW5nIFBSRUZFUkVOQ0VfU0VSVkVSID0gIlBSRUZFUkVOQ0VfU0VSVkVSIjsKLQlwcml2YXRlIFN0cmluZyBQUkVGRVJFTkNFX1JVTlRJTUUgPSAiUFJFRkVSRU5DRV9SVU5USU1FIjsKLQlwcml2YXRlIFN0cmluZyBGQUxMQkFDS19SVU5USU1FID0gIkZBTExCQUNLX1JVTlRJTUUiOyAgLy8gV2ViIHNlcnZpY2UgcnVudGltZSB0byBmYWxsYmFjayB0byBpZiBwcmVmZXJyZWQgcnVudGltZSBpcyBub3Qgc3VpdGFibGUKLQkvL3ByaXZhdGUgU3RyaW5nIFBSRUZFUkVOQ0VfSjJFRV9WRVJTSU9OID0gIlBSRUZFUkVOQ0VfSjJFRV9WRVJTSU9OIjsKLQkKLQlwcml2YXRlIFN0cmluZyBTRVJWRVJfRkFDVE9SWV9JRF9ERUZBVUxUID0gIm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjYwIjsKLQlwcml2YXRlIFN0cmluZyBSVU5USU1FX0lEX0RFRkFVTFQgPSAib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24uYXhpc1dlYlNlcnZpY2VSVCI7Ci0JCi0JcHVibGljIFBlcnNpc3RlbnRTZXJ2ZXJSdW50aW1lQ29udGV4dCgpCi0JewotCQlzdXBlcihXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpKTsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuQ29udGV4dCNsb2FkKCkKLQkgKi8KLQlwdWJsaWMgdm9pZCBsb2FkKCkgewotCQkvL0RlZmF1bHRzIHdpbGwgYmUgc2V0IHZpYSB0aGUgLmluaSBjdXN0b21pemF0aW9uLiBUaGV5IGFyZSBoYXJkIGNvZGVkIHRvIGRlZmF1bHQgdmFsdWVzIGluIHRoZQotCQkvL2Fic2VuY2Ugb2YgYSAuaW5pIGZpbGUuCi0JCVN0cmluZyBzZXJ2ZXJEZWZhdWx0ID0gZ2V0RGVmYXVsdFN0cmluZyhQUkVGRVJFTkNFX1NFUlZFUik7Ci0JCWlmIChzZXJ2ZXJEZWZhdWx0PT1udWxsIHx8IHNlcnZlckRlZmF1bHQubGVuZ3RoKCk9PTApCi0JCXsKLQkJICBzZXREZWZhdWx0KFBSRUZFUkVOQ0VfU0VSVkVSLCBTRVJWRVJfRkFDVE9SWV9JRF9ERUZBVUxUKTsKLQkJfQotCi0JCVN0cmluZyBydW50aW1lRGVmYXVsdCA9IGdldERlZmF1bHRTdHJpbmcoUFJFRkVSRU5DRV9SVU5USU1FKTsKLQkJaWYgKHJ1bnRpbWVEZWZhdWx0PT1udWxsIHx8IHJ1bnRpbWVEZWZhdWx0Lmxlbmd0aCgpPT0wKQotCQl7Ci0JCSAgc2V0RGVmYXVsdChQUkVGRVJFTkNFX1JVTlRJTUUsIFJVTlRJTUVfSURfREVGQVVMVCk7Ci0JCX0KLQkJCQkKLQl9Ci0JCi0JcHVibGljIFN0cmluZyBnZXREZWZhdWx0U2VydmVyRmFjdG9yeUlkKCkKLQl7Ci0JCXJldHVybiBnZXREZWZhdWx0U3RyaW5nKFBSRUZFUkVOQ0VfU0VSVkVSKTsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldERlZmF1bHRSdW50aW1lSWQoKQotCXsKLQkJcmV0dXJuIGdldERlZmF1bHRTdHJpbmcoUFJFRkVSRU5DRV9SVU5USU1FKTsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldEZhbGxiYWNrUnVudGltZUlkKCkKLQl7Ci0JCXJldHVybiBnZXREZWZhdWx0U3RyaW5nKEZBTExCQUNLX1JVTlRJTUUpOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldFNlcnZlckZhY3RvcnlJZCgpCi0JewotCQlTdHJpbmcgdmFsdWUgPSBnZXRWYWx1ZUFzU3RyaW5nKFBSRUZFUkVOQ0VfU0VSVkVSKTsgCi0JCS8qCi0JCWlmICh2YWx1ZT09bnVsbCB8fCB2YWx1ZS5sZW5ndGgoKT09MCkKLQkJewotCQkJdmFsdWUgPSBTRVJWRVJfRkFDVE9SWV9JRF9ERUZBVUxUOyAKLQkJCXNldFNlcnZlckZhY3RvcnlJZCh2YWx1ZSk7Ci0JCX0KLQkJKi8KLQkJcmV0dXJuIHZhbHVlOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldFJ1bnRpbWVJZCgpCi0JewotCQlTdHJpbmcgdmFsdWUgPSBnZXRWYWx1ZUFzU3RyaW5nKFBSRUZFUkVOQ0VfUlVOVElNRSk7Ci0JCS8qCi0JCWlmICh2YWx1ZT09bnVsbCB8fCB2YWx1ZS5sZW5ndGgoKT09MCkKLQkJewotCQkJdmFsdWUgPSBSVU5USU1FX0lEX0RFRkFVTFQ7IAotCQkJc2V0UnVudGltZUlkKHZhbHVlKTsKLQkJfQotCQkqLwotCQlyZXR1cm4gdmFsdWU7CQkKLQl9Ci0JCi0JCi0JcHVibGljIHZvaWQgc2V0U2VydmVyRmFjdG9yeUlkKFN0cmluZyBpZCkKLQl7Ci0JCXNldFZhbHVlKFBSRUZFUkVOQ0VfU0VSVkVSLGlkKTsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0UnVudGltZUlkKFN0cmluZyBpZCkKLQl7Ci0JCXNldFZhbHVlKFBSRUZFUkVOQ0VfUlVOVElNRSwgaWQpOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvUHJvamVjdFRvcG9sb2d5Q29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9wcmVmZXJlbmNlcy9Qcm9qZWN0VG9wb2xvZ3lDb250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMjFjNGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9wcmVmZXJlbmNlcy9Qcm9qZWN0VG9wb2xvZ3lDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjcgICAxMjQzOTIgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXM7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgUHJvamVjdFRvcG9sb2d5Q29udGV4dCAKLXsKLSAgLyoqCi0gICAgKiBUaGlzIGNvbnN0YW50IFN0cmluZyBpcyB1c2VkIHRvIGxvb2t1cCB0aGUgcHJlZmVycmVkIG9yZGVyIG9mIHRoZSBkaWZmZXJlbnQgY2xpZW50IHR5cGVzCi0gICoqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGRVJFTkNFX0NMSUVOVF9UWVBFUyA9ICJjbGllbnRUeXBlcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfU0VSVklDRV9UWVBFUyA9ICJzZXJ2aWNlVHlwZXMiOwotICAKLSAgLyoqCi0gICAgKiBUaGlzIGNvbnN0YW50IFN0cmluZyBpcyB1c2VkIHRvIGxvb2t1cCB0aGUgdHdvIEVBUiBvcHRpb24KLSAgKiovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfVVNFX1RXT19FQVJTID0gInVzZVR3b0VBUnMiOwotICAKLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVR5cGVzKFN0cmluZ1tdIGlkcyk7Ci0gIHB1YmxpYyBTdHJpbmdbXSBnZXRTZXJ2aWNlVHlwZXMoKTsKLSAgcHVibGljIFN0cmluZ1tdIGdldERlZmF1bHRTZXJ2aWNlVHlwZXMoKTsKLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFR5cGVzKFN0cmluZ1tdIGlkcyk7Ci0gIHB1YmxpYyBTdHJpbmdbXSBnZXRDbGllbnRUeXBlcygpOwotICBwdWJsaWMgU3RyaW5nW10gZ2V0RGVmYXVsdENsaWVudFR5cGVzKCk7Ci0KLSAgcHVibGljIHZvaWQgc2V0VXNlVHdvRUFScyhib29sZWFuIHVzZSk7Ci0gIHB1YmxpYyBib29sZWFuIGlzVXNlVHdvRUFScygpOwotCi0gIHB1YmxpYyBQcm9qZWN0VG9wb2xvZ3lDb250ZXh0IGNvcHkoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvUHJvamVjdFRvcG9sb2d5RGVmYXVsdHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvUHJvamVjdFRvcG9sb2d5RGVmYXVsdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE5ZTFmNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3ByZWZlcmVuY2VzL1Byb2plY3RUb3BvbG9neURlZmF1bHRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjcgICAxMjQzOTIgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMjsKLQotcHVibGljIGNsYXNzIFByb2plY3RUb3BvbG9neURlZmF1bHRzCi17Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZ1tdIGdldFNlcnZpY2VUeXBlcygpCi0gIHsKLSAgICByZXR1cm4gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0QWxsU2VydmljZVByb2plY3RUeXBlcygpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZ1tdIGdldENsaWVudFR5cGVzKCkKLSAgewotICAgIHJldHVybiBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRBbGxDbGllbnRQcm9qZWN0VHlwZXMoKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc1VzZVR3b0VBUnMoKQotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvUHJvamVjdFRvcG9sb2d5UHJlZmVyZW5jZVBhZ2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvUHJvamVjdFRvcG9sb2d5UHJlZmVyZW5jZVBhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE2NWIyYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3ByZWZlcmVuY2VzL1Byb2plY3RUb3BvbG9neVByZWZlcmVuY2VQYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjI3ICAgMTI0MzkyIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA1MTUgICAxNDEzOTggY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wcmVmZXJlbmNlczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLlByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuQ29sdW1uV2VpZ2h0RGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkQ29udGVudFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuTGFiZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlRhYmxlTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVGFibGVWaWV3ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5WaWV3ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuV1NVSVBsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5wbHVnaW4uV2ViU2VydmljZVVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5JbWFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuR3JvdXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGFibGVDb2x1bW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoUHJlZmVyZW5jZVBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JRmFjZXRlZFByb2plY3RUZW1wbGF0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5Qcm9qZWN0RmFjZXRzTWFuYWdlcjsKLQotCi0KLXB1YmxpYyBjbGFzcyBQcm9qZWN0VG9wb2xvZ3lQcmVmZXJlbmNlUGFnZSBleHRlbmRzIFByZWZlcmVuY2VQYWdlIGltcGxlbWVudHMgSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlLCBTZWxlY3Rpb25MaXN0ZW5lcgotewotICAvKkNPTlRFWFRfSUQgUFRQUDAwMDEgZm9yIHRoZSBQcm9qZWN0IFRvcG9sb2d5IFByZWZlcmVuY2UgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFRQUF9QQUdFID0gV2ViU2VydmljZVVJUGx1Z2luLklEICsgIi5QVFBQMDAwMSI7Ci0KLSAgcHJpdmF0ZSBUYWJsZVZpZXdlciBzZXJ2aWNlVHlwZVZpZXdlcl87Ci0gIHByaXZhdGUgQnV0dG9uIHNlcnZpY2VNb3ZlVXBfOwotICBwcml2YXRlIEJ1dHRvbiBzZXJ2aWNlTW92ZURvd25fOwotICBwcml2YXRlIFZlY3RvciBzZXJ2aWNlVHlwZXNfOwotICAKLSAgcHJpdmF0ZSBUYWJsZVZpZXdlciBjbGllbnRUeXBlVmlld2VyXzsKLSAgcHJpdmF0ZSBCdXR0b24gbW92ZVVwXzsKLSAgcHJpdmF0ZSBCdXR0b24gbW92ZURvd25fOwotICBwcml2YXRlIFZlY3RvciBjbGllbnRUeXBlc187Ci0KLSAgcHJpdmF0ZSBCdXR0b24gdHdvRUFSXzsKLQotIC8qKgotICAgKiBDcmVhdGVzIHByZWZlcmVuY2UgcGFnZSBjb250cm9scyBvbiBkZW1hbmQuCi0gICAqICAgQHBhcmFtIHBhcmVudCAgdGhlIHBhcmVudCBmb3IgdGhlIHByZWZlcmVuY2UgcGFnZQotICAgKi8KLSAgcHJvdGVjdGVkIENvbnRyb2wgY3JlYXRlQ29udGVudHMoQ29tcG9zaXRlIHN1cGVycGFyZW50KQotICB7Ci0gICAgQ29tcG9zaXRlICAgcGFyZW50ID0gbmV3IENvbXBvc2l0ZSggc3VwZXJwYXJlbnQsIFNXVC5OT05FICk7CQotICAgIEdyaWRMYXlvdXQgbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICBsYXlvdXQubnVtQ29sdW1ucyA9IDE7Ci0gICAgcGFyZW50LnNldExheW91dCggbGF5b3V0ICk7Ci0gICAgcGFyZW50LnNldFRvb2xUaXBUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5UT09MVElQX1BUUFBfUEFHRSk7Ci0gICAgcGFyZW50LnNldExheW91dERhdGEoIG5ldyBHcmlkRGF0YSggR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMICkgKTsKLSAgICBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKHBhcmVudCxJTkZPUE9QX1BUUFBfUEFHRSk7ICAKLQotICAgIEdyb3VwIHNlcnZpY2VUeXBlQ29tcG9zaXRlID0gbmV3IEdyb3VwKCBwYXJlbnQsIFNXVC5OT05FICk7Ci0gICAgR3JpZExheW91dCBzZXJ2aWNlZ2wgPSBuZXcgR3JpZExheW91dCgpOwotICAgIHNlcnZpY2VnbC5udW1Db2x1bW5zID0gMjsKLSAgICAvL3NlcnZpY2VnbC5tYXJnaW5IZWlnaHQgPSAwOwotICAgIC8vc2VydmljZWdsLm1hcmdpbldpZHRoID0gMDsKLSAgICBzZXJ2aWNlVHlwZUNvbXBvc2l0ZS5zZXRMYXlvdXQoc2VydmljZWdsKTsKLSAgICBzZXJ2aWNlVHlwZUNvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKCBuZXcgR3JpZERhdGEoIEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCApKTsKLSAgICBzZXJ2aWNlVHlwZUNvbXBvc2l0ZS5zZXRUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5MQUJFTF9TRVJWSUNFX1RZUEVfTkFNRSk7Ci0gICAgCi0gICAgVGFibGUgc2VydmljZVRhYmxlPSBuZXcgVGFibGUoc2VydmljZVR5cGVDb21wb3NpdGUsIFNXVC5CT1JERVIgfCBTV1QuU0lOR0xFIHwgU1dULkZVTExfU0VMRUNUSU9OIHwgU1dULkhfU0NST0xMIHwgU1dULlZfU0NST0xMKTsKLSAgICBHcmlkRGF0YSBzZXJ2aWNlZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMIHwgR3JpZERhdGEuRklMTF9WRVJUSUNBTCk7Ci0gICAgc2VydmljZWdkLndpZHRoSGludCA9IDI1NjsKLSAgICBzZXJ2aWNlVGFibGUuc2V0TGF5b3V0RGF0YShzZXJ2aWNlZ2QpOwotICAgIHNlcnZpY2VUYWJsZS5zZXRUb29sVGlwVGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9TRVJWSUNFX1RZUEVfVEFCTEVfVklFV0VSKTsKLQotICAgIHNlcnZpY2VUeXBlc18gPSBuZXcgVmVjdG9yKCk7Ci0gICAgc2VydmljZVR5cGVWaWV3ZXJfID0gbmV3IFRhYmxlVmlld2VyKHNlcnZpY2VUYWJsZSk7Ci0gICAgc2VydmljZVR5cGVWaWV3ZXJfLnNldENvbnRlbnRQcm92aWRlcihuZXcgQ2xpZW50VHlwZUNvbnRlbnRQcm92aWRlcigpKTsKLSAgICBzZXJ2aWNlVHlwZVZpZXdlcl8uc2V0TGFiZWxQcm92aWRlcihuZXcgQ2xpZW50VHlwZUxhYmVsUHJvdmlkZXIoKSk7Ci0gICAgc2VydmljZVR5cGVWaWV3ZXJfLnNldElucHV0KHNlcnZpY2VUeXBlc18pOwotCi0gICAgVGFibGVMYXlvdXQgc2VydmljZVRhYmxlTGF5b3V0ID0gbmV3IFRhYmxlTGF5b3V0KCk7Ci0gICAgVGFibGVDb2x1bW4gc2VydmljZVRhYmxlQ29sdW1uID0gbmV3IFRhYmxlQ29sdW1uKHNlcnZpY2VUYWJsZSwgU1dULk5PTkUpOwotICAgIHNlcnZpY2VUYWJsZUNvbHVtbi5zZXRUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5MQUJFTF9TRVJWSUNFX1RZUEVfTkFNRSk7Ci0gICAgQ29sdW1uV2VpZ2h0RGF0YSBzZXJ2aWNlQ29sdW1uRGF0YSA9IG5ldyBDb2x1bW5XZWlnaHREYXRhKDI1NiwgMjU2LCBmYWxzZSk7Ci0gICAgc2VydmljZVRhYmxlTGF5b3V0LmFkZENvbHVtbkRhdGEoc2VydmljZUNvbHVtbkRhdGEpOwotICAgIHNlcnZpY2VUYWJsZS5zZXRMYXlvdXQoc2VydmljZVRhYmxlTGF5b3V0KTsKLSAgICAKLSAgICBDb21wb3NpdGUgc2VydmljZWMgPSBuZXcgQ29tcG9zaXRlKHNlcnZpY2VUeXBlQ29tcG9zaXRlLCBTV1QuTk9ORSk7Ci0gICAgc2VydmljZWdsID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICBzZXJ2aWNlZ2wubnVtQ29sdW1ucyA9IDE7Ci0gICAgLy9zZXJ2aWNlZ2wubWFyZ2luSGVpZ2h0ID0gMTA7Ci0gICAgc2VydmljZWdsLm1hcmdpbldpZHRoID0gMDsKLSAgICBzZXJ2aWNlYy5zZXRMYXlvdXQoc2VydmljZWdsKTsKLSAgICBzZXJ2aWNlYy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9CRUdJTk5JTkcpKTsKLQotICAgIHNlcnZpY2VNb3ZlVXBfID0gbmV3IEJ1dHRvbihzZXJ2aWNlYywgU1dULlBVU0gpOwotICAgIHNlcnZpY2VNb3ZlVXBfLnNldFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX01PVkVfVVApOwotICAgIHNlcnZpY2VNb3ZlVXBfLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCkpOwotICAgIHNlcnZpY2VNb3ZlVXBfLmFkZFNlbGVjdGlvbkxpc3RlbmVyKHRoaXMpOwotICAgIHNlcnZpY2VNb3ZlVXBfLnNldFRvb2xUaXBUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5UT09MVElQX01PVkVfVVApOwotCi0gICAgc2VydmljZU1vdmVEb3duXyA9IG5ldyBCdXR0b24oc2VydmljZWMsIFNXVC5QVVNIKTsKLSAgICBzZXJ2aWNlTW92ZURvd25fLnNldFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX01PVkVfRE9XTik7Ci0gICAgc2VydmljZU1vdmVEb3duXy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwpKTsKLSAgICBzZXJ2aWNlTW92ZURvd25fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKHRoaXMpOwotICAgIHNlcnZpY2VNb3ZlRG93bl8uc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfTU9WRV9ET1dOKTsKLQotICAgIHNlcnZpY2VUYWJsZS5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgVGFibGVTZWxlY3Rpb25MaXN0ZW5lcihzZXJ2aWNlTW92ZVVwXywgc2VydmljZU1vdmVEb3duXywgc2VydmljZVRhYmxlKSk7Ci0KLSAgICBHcm91cCBjbGllbnRUeXBlQ29tcG9zaXRlID0gbmV3IEdyb3VwKCBwYXJlbnQsIFNXVC5OT05FICk7Ci0gICAgR3JpZExheW91dCBnbCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgZ2wubnVtQ29sdW1ucyA9IDI7Ci0gICAgLy9nbC5tYXJnaW5IZWlnaHQgPSAwOwotICAgIC8vZ2wubWFyZ2luV2lkdGggPSAwOwotICAgIGNsaWVudFR5cGVDb21wb3NpdGUuc2V0TGF5b3V0KGdsKTsKLSAgICBjbGllbnRUeXBlQ29tcG9zaXRlLnNldExheW91dERhdGEoIG5ldyBHcmlkRGF0YSggR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMICkpOwotICAgIGNsaWVudFR5cGVDb21wb3NpdGUuc2V0VGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuTEFCRUxfQ0xJRU5UX1RZUEVfTkFNRSk7Ci0KLSAgICBUYWJsZSBjbGllbnRUYWJsZT0gbmV3IFRhYmxlKGNsaWVudFR5cGVDb21wb3NpdGUsIFNXVC5CT1JERVIgfCBTV1QuU0lOR0xFIHwgU1dULkZVTExfU0VMRUNUSU9OIHwgU1dULkhfU0NST0xMIHwgU1dULlZfU0NST0xMKTsKLSAgICBHcmlkRGF0YSBnZCA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5GSUxMX0hPUklaT05UQUwgfCBHcmlkRGF0YS5GSUxMX1ZFUlRJQ0FMKTsKLSAgICBnZC53aWR0aEhpbnQgPSAyNTY7Ci0gICAgY2xpZW50VGFibGUuc2V0TGF5b3V0RGF0YShnZCk7Ci0gICAgY2xpZW50VGFibGUuc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfQ0xJRU5UX1RZUEVfVEFCTEVfVklFV0VSKTsKLQotICAgIGNsaWVudFR5cGVzXyA9IG5ldyBWZWN0b3IoKTsKLSAgICBjbGllbnRUeXBlVmlld2VyXyA9IG5ldyBUYWJsZVZpZXdlcihjbGllbnRUYWJsZSk7Ci0gICAgY2xpZW50VHlwZVZpZXdlcl8uc2V0Q29udGVudFByb3ZpZGVyKG5ldyBDbGllbnRUeXBlQ29udGVudFByb3ZpZGVyKCkpOwotICAgIGNsaWVudFR5cGVWaWV3ZXJfLnNldExhYmVsUHJvdmlkZXIobmV3IENsaWVudFR5cGVMYWJlbFByb3ZpZGVyKCkpOwotICAgIGNsaWVudFR5cGVWaWV3ZXJfLnNldElucHV0KGNsaWVudFR5cGVzXyk7Ci0KLSAgICBUYWJsZUxheW91dCB0YWJsZUxheW91dCA9IG5ldyBUYWJsZUxheW91dCgpOwotICAgIFRhYmxlQ29sdW1uIHRhYmxlQ29sdW1uID0gbmV3IFRhYmxlQ29sdW1uKGNsaWVudFRhYmxlLCBTV1QuTk9ORSk7Ci0gICAgdGFibGVDb2x1bW4uc2V0VGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuTEFCRUxfQ0xJRU5UX1RZUEVfTkFNRSk7Ci0gICAgQ29sdW1uV2VpZ2h0RGF0YSBjb2x1bW5EYXRhID0gbmV3IENvbHVtbldlaWdodERhdGEoMjU2LCAyNTYsIGZhbHNlKTsKLSAgICB0YWJsZUxheW91dC5hZGRDb2x1bW5EYXRhKGNvbHVtbkRhdGEpOwotICAgIGNsaWVudFRhYmxlLnNldExheW91dCh0YWJsZUxheW91dCk7Ci0KLSAgICBDb21wb3NpdGUgYyA9IG5ldyBDb21wb3NpdGUoY2xpZW50VHlwZUNvbXBvc2l0ZSwgU1dULk5PTkUpOwotICAgIGdsID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICBnbC5udW1Db2x1bW5zID0gMTsKLSAgICAvL2dsLm1hcmdpbkhlaWdodCA9IDEwOwotICAgIGdsLm1hcmdpbldpZHRoID0gMDsKLSAgICBjLnNldExheW91dChnbCk7Ci0gICAgYy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9CRUdJTk5JTkcpKTsKLQotICAgIG1vdmVVcF8gPSBuZXcgQnV0dG9uKGMsIFNXVC5QVVNIKTsKLSAgICBtb3ZlVXBfLnNldFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX01PVkVfVVBfMik7Ci0gICAgbW92ZVVwXy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwpKTsKLSAgICBtb3ZlVXBfLmFkZFNlbGVjdGlvbkxpc3RlbmVyKHRoaXMpOwotICAgIG1vdmVVcF8uc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfTU9WRV9VUCk7Ci0KLSAgICBtb3ZlRG93bl8gPSBuZXcgQnV0dG9uKGMsIFNXVC5QVVNIKTsKLSAgICBtb3ZlRG93bl8uc2V0VGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuTEFCRUxfTU9WRV9ET1dOXzIpOwotICAgIG1vdmVEb3duXy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwpKTsKLSAgICBtb3ZlRG93bl8uYWRkU2VsZWN0aW9uTGlzdGVuZXIodGhpcyk7Ci0gICAgbW92ZURvd25fLnNldFRvb2xUaXBUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5UT09MVElQX01PVkVfRE9XTik7Ci0KLSAgICBjbGllbnRUYWJsZS5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgVGFibGVTZWxlY3Rpb25MaXN0ZW5lcihtb3ZlVXBfLCBtb3ZlRG93bl8sIGNsaWVudFRhYmxlKSk7Ci0KLSAgICB0d29FQVJfID0gbmV3IEJ1dHRvbihwYXJlbnQsIFNXVC5DSEVDSyB8IFNXVC5XUkFQICk7Ci0gICAgdHdvRUFSXy5zZXRUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5MQUJFTF9FTkFCTEVfVFdPX0VBUlMpOwotICAgIHR3b0VBUl8uc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfRU5BQkxFX1RXT19FQVJTKTsKLQotICAgIGluaXRpYWxpemVWYWx1ZXMoKTsKLSAgICBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZy5hcHBseURpYWxvZ0ZvbnQoc3VwZXJwYXJlbnQpOyAgICAKLQotICAgIHJldHVybiBwYXJlbnQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBEb2VzIGFueXRoaW5nIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBkZWZhdWx0IGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybURlZmF1bHRzKCkKLSAgewotICAgIHN1cGVyLnBlcmZvcm1EZWZhdWx0cygpOwotICAgIGluaXRpYWxpemVEZWZhdWx0cygpOwotICB9Ci0KLSAgLyoqCi0gICAqIERvIGFueXRoaW5nIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBPSyBidXR0b24gaGFzIGJlZW4gcHJlc3NlZC4KLSAgICogIEByZXR1cm4gd2hldGhlciBpdCBpcyBva2F5IHRvIGNsb3NlIHRoZSBwcmVmZXJlbmNlIHBhZ2UKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHBlcmZvcm1PaygpCi0gIHsKLSAgICBzdG9yZVZhbHVlcygpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybUFwcGx5KCkKLSAgewotICAgIHBlcmZvcm1PaygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KElXb3JrYmVuY2ggd29ya2JlbmNoKSAgeyB9Ci0KLSAgCi0gIC8qKgotICAgKiBBZGRzIHRoZSBTdHJpbmcgZWxlbWVudHMgb2YgYXJyYXkgYSBpbnRvIFZlY3RvciB2LiBJZiBTdHJpbmcgYXJyYXkgYiBjb250YWlucyBhbnkgZWxlbWVudHMKLSAgICogdGhhdCBhcmUgbm90IGFscmVhZHkgaW4gYXJyYXkgYSwgYXBwZW5kcyB0aGVzZSBlbGVtZW50cyBmcm9tIGFycmF5IGIgdG8gdGhlIGVuZCBvZiBWZWN0b3Igdi4gCi0gICAqIEBwYXJhbSBhIGEgU3RyaW5nIGFycmF5Ci0gICAqIEBwYXJhbSBiIGEgU3RyaW5nIGFycmF5Ci0gICAqIEBwYXJhbSB2IGEgbm9uLW51bGwgVmVjdG9yCi0gICAqLwotICBwcml2YXRlIHZvaWQgc2V0VmVjdG9yQ29udGVudHNGcm9tVHdvQXJyYXlzKFN0cmluZ1tdIGEsIFN0cmluZ1tdIGIsIFZlY3RvciB2KQotICB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIHYuYWRkKGFbaV0pOwotICAgIH0KLSAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgaWYgKHYuaW5kZXhPZihiW2ldKSA9PSAtMSkKLSAgICAgIHsKLSAgICAgICAgdi5hZGQoYltpXSk7Ci0gICAgICB9Ci0gICAgfSAgIAotICB9Ci0gIAotICAvKioKLSAgICogSW5pdGlhbGl6ZXMgc3RhdGVzIG9mIHRoZSBjb250cm9scyB0byB0aGVpciBidXJuZWQtaW4gZGVmYXVsdHMuCi0gICAqLwotICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRzKCkKLSAgewotICAgIFByb2plY3RUb3BvbG9neUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0UHJvamVjdFRvcG9sb2d5Q29udGV4dCgpOwotICAgIHNlcnZpY2VUeXBlc18uY2xlYXIoKTsKLSAgICBTdHJpbmdbXSBkZWZhdWx0U2VydmljZVR5cGVzID0gY29udGV4dC5nZXREZWZhdWx0U2VydmljZVR5cGVzKCk7Ci0gICAgU3RyaW5nW10gYWxsU2VydmljZVR5cGVzID0gUHJvamVjdFRvcG9sb2d5RGVmYXVsdHMuZ2V0U2VydmljZVR5cGVzKCk7Ci0gICAgc2V0VmVjdG9yQ29udGVudHNGcm9tVHdvQXJyYXlzKGRlZmF1bHRTZXJ2aWNlVHlwZXMsIGFsbFNlcnZpY2VUeXBlcywgc2VydmljZVR5cGVzXyk7ICAgIAotICAgIHNlcnZpY2VUeXBlVmlld2VyXy5yZWZyZXNoKCk7Ci0gICAgCi0gICAgY2xpZW50VHlwZXNfLmNsZWFyKCk7Ci0gICAgU3RyaW5nW10gZGVmYXVsdENsaWVudFR5cGVzID0gY29udGV4dC5nZXREZWZhdWx0Q2xpZW50VHlwZXMoKTsKLSAgICBTdHJpbmdbXSBhbGxDbGllbnRUeXBlcyA9IFByb2plY3RUb3BvbG9neURlZmF1bHRzLmdldENsaWVudFR5cGVzKCk7Ci0gICAgc2V0VmVjdG9yQ29udGVudHNGcm9tVHdvQXJyYXlzKGRlZmF1bHRDbGllbnRUeXBlcywgYWxsQ2xpZW50VHlwZXMsIGNsaWVudFR5cGVzXyk7ICAgICAgICAgCi0gICAgY2xpZW50VHlwZVZpZXdlcl8ucmVmcmVzaCgpOwotICAgIAotICAgIHR3b0VBUl8uc2V0U2VsZWN0aW9uKHRydWUpOwotICB9Ci0gIAotICAvKioKLSAgICogSW5pdGlhbGl6ZXMgc3RhdGVzIG9mIHRoZSBjb250cm9scyBmcm9tIHRoZSBwcmVmZXJlbmNlIGhlbHBlci4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBpbml0aWFsaXplVmFsdWVzKCkKLSAgewotICAgIC8vSW5pdGlhbCBzZXJ2aWNlIHByb2plY3QgdHlwZXMuCi0gICAgUHJvamVjdFRvcG9sb2d5Q29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRQcm9qZWN0VG9wb2xvZ3lDb250ZXh0KCk7Ci0gICAgU3RyaW5nW10gc2VydmljZVR5cGVzRnJvbUNvbnRleHQgPSBjb250ZXh0LmdldFNlcnZpY2VUeXBlcygpOwotICAgIFN0cmluZ1tdIGFsbFNlcnZpY2VUeXBlcyA9IFByb2plY3RUb3BvbG9neURlZmF1bHRzLmdldFNlcnZpY2VUeXBlcygpOwotICAgIHNldFZlY3RvckNvbnRlbnRzRnJvbVR3b0FycmF5cyhzZXJ2aWNlVHlwZXNGcm9tQ29udGV4dCwgYWxsU2VydmljZVR5cGVzLCBzZXJ2aWNlVHlwZXNfKTsKLSAgICBpZiAoYWxsU2VydmljZVR5cGVzLmxlbmd0aCA+IHNlcnZpY2VUeXBlc0Zyb21Db250ZXh0Lmxlbmd0aCkKLSAgICB7Ci0gICAgICBTdHJpbmdbXSBzZXJ2aWNlVHlwZXNBcnJheSA9IG5ldyBTdHJpbmdbc2VydmljZVR5cGVzXy5zaXplKCldOwotICAgICAgc2VydmljZVR5cGVzXy5jb3B5SW50byhzZXJ2aWNlVHlwZXNBcnJheSk7Ci0gICAgICBjb250ZXh0LnNldFNlcnZpY2VUeXBlcyhzZXJ2aWNlVHlwZXNBcnJheSk7Ci0gICAgfQotICAgIC8vIHJlZnJlc2ggdmlld2VyCi0gICAgc2VydmljZVR5cGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgICAKLSAgICAvLyBzZWxlY3QgdGhlIGZpcnN0IGl0ZW0gaW4gdGhpcyB0YWJsZQotICAgIGlmIChzZXJ2aWNlVHlwZVZpZXdlcl8uZ2V0VGFibGUoKS5nZXRJdGVtQ291bnQoKSA+IDApewotICAgIAlzZXJ2aWNlVHlwZVZpZXdlcl8uZ2V0VGFibGUoKS5zZXRTZWxlY3Rpb24oMCk7Ci0gICAgCXNlcnZpY2VUeXBlVmlld2VyXy5nZXRUYWJsZSgpLm5vdGlmeUxpc3RlbmVycyhTV1QuU2VsZWN0aW9uLCBuZXcgRXZlbnQoKSk7Ci0gICAgfQotCi0gICAgLy9Jbml0aWFsaXplIGNsaWVudCBwcm9qZWN0IHR5cGVzLgotICAgIFN0cmluZ1tdIGNsaWVudFR5cGVzRnJvbUNvbnRleHQgPSBjb250ZXh0LmdldENsaWVudFR5cGVzKCk7Ci0gICAgU3RyaW5nW10gYWxsQ2xpZW50VHlwZXMgPSBQcm9qZWN0VG9wb2xvZ3lEZWZhdWx0cy5nZXRDbGllbnRUeXBlcygpOwotICAgIHNldFZlY3RvckNvbnRlbnRzRnJvbVR3b0FycmF5cyhjbGllbnRUeXBlc0Zyb21Db250ZXh0LCBhbGxDbGllbnRUeXBlcywgY2xpZW50VHlwZXNfKTsKLSAgICBpZiAoYWxsQ2xpZW50VHlwZXMubGVuZ3RoID4gY2xpZW50VHlwZXNGcm9tQ29udGV4dC5sZW5ndGgpCi0gICAgewotICAgICAgU3RyaW5nW10gY2xpZW50VHlwZXNBcnJheSA9IG5ldyBTdHJpbmdbY2xpZW50VHlwZXNfLnNpemUoKV07Ci0gICAgICBjbGllbnRUeXBlc18uY29weUludG8oY2xpZW50VHlwZXNBcnJheSk7Ci0gICAgICBjb250ZXh0LnNldENsaWVudFR5cGVzKGNsaWVudFR5cGVzQXJyYXkpOwotICAgIH0KLSAgICAKLSAgICAvLyByZWZyZXNoIHZpZXdlcgotICAgIGNsaWVudFR5cGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgICAKLSAgICAvLyBzZWxlY3QgdGhlIGZpcnN0IGl0ZW0gaW4gdGhpcyB0YWJsZQotICAgIFRhYmxlIHRhYmxlID0gY2xpZW50VHlwZVZpZXdlcl8uZ2V0VGFibGUoKTsKLQlpZiAodGFibGUuZ2V0SXRlbUNvdW50KCkgPiAwKXsKLSAgICAJdGFibGUuc2V0U2VsZWN0aW9uKDApOwotICAgIAl0YWJsZS5ub3RpZnlMaXN0ZW5lcnMoU1dULlNlbGVjdGlvbiwgbmV3IEV2ZW50KCkpOwotICAgIH0KLSAgICAKLSAgICB0d29FQVJfLnNldFNlbGVjdGlvbihjb250ZXh0LmlzVXNlVHdvRUFScygpKTsKLSAgIH0KLQotICAvKioKLSAgICogU3RvcmVzIHRoZSB2YWx1ZXMgb2YgdGhlIGNvbnRyb2xzIGJhY2sgdG8gdGhlIHByZWZlcmVuY2UgaGVscGVyLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHN0b3JlVmFsdWVzKCkKLSAgewotICAgIFByb2plY3RUb3BvbG9neUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0UHJvamVjdFRvcG9sb2d5Q29udGV4dCgpOwotICAgIFN0cmluZ1tdIHNlcnZpY2VUeXBlc0FycmF5ID0gbmV3IFN0cmluZ1tzZXJ2aWNlVHlwZXNfLnNpemUoKV07Ci0gICAgc2VydmljZVR5cGVzXy5jb3B5SW50byhzZXJ2aWNlVHlwZXNBcnJheSk7Ci0gICAgY29udGV4dC5zZXRTZXJ2aWNlVHlwZXMoc2VydmljZVR5cGVzQXJyYXkpOyAgICAKLSAgICBTdHJpbmdbXSB0eXBlcyA9IG5ldyBTdHJpbmdbY2xpZW50VHlwZXNfLnNpemUoKV07Ci0gICAgY2xpZW50VHlwZXNfLmNvcHlJbnRvKHR5cGVzKTsKLSAgICBjb250ZXh0LnNldENsaWVudFR5cGVzKHR5cGVzKTsKLSAgICBjb250ZXh0LnNldFVzZVR3b0VBUnModHdvRUFSXy5nZXRTZWxlY3Rpb24oKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgewotICB9Ci0KLSAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgewotICAgIGlmIChlLndpZGdldCA9PSBzZXJ2aWNlTW92ZVVwXyB8fCBlLndpZGdldCA9PSBzZXJ2aWNlTW92ZURvd25fKQotICAgIHsKLSAgICAgIGludCBpbmRleCA9IHNlcnZpY2VUeXBlVmlld2VyXy5nZXRUYWJsZSgpLmdldFNlbGVjdGlvbkluZGV4KCk7Ci0gICAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICB7Ci0gICAgICAgIGlmIChlLndpZGdldCA9PSBzZXJ2aWNlTW92ZVVwXyAmJiBpbmRleCA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICBPYmplY3Qgb2JqZWN0ID0gc2VydmljZVR5cGVzXy5yZW1vdmUoaW5kZXgpOwotICAgICAgICAgIHNlcnZpY2VUeXBlc18uaW5zZXJ0RWxlbWVudEF0KG9iamVjdCwgaW5kZXgtMSk7Ci0gICAgICAgICAgc2VydmljZVR5cGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChlLndpZGdldCA9PSBzZXJ2aWNlTW92ZURvd25fICYmIGluZGV4IDwgc2VydmljZVR5cGVzXy5zaXplKCktMSkKLSAgICAgICAgewotICAgICAgICAgIE9iamVjdCBvYmplY3QgPSBzZXJ2aWNlVHlwZXNfLnJlbW92ZShpbmRleCk7Ci0gICAgICAgICAgc2VydmljZVR5cGVzXy5pbnNlcnRFbGVtZW50QXQob2JqZWN0LCBpbmRleCsxKTsKLSAgICAgICAgICBzZXJ2aWNlVHlwZVZpZXdlcl8ucmVmcmVzaCgpOwotICAgICAgICB9Ci0gICAgICAgIHNlcnZpY2VUeXBlVmlld2VyXy5nZXRUYWJsZSgpLm5vdGlmeUxpc3RlbmVycyhTV1QuU2VsZWN0aW9uLCBuZXcgRXZlbnQoKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGUud2lkZ2V0ID09IG1vdmVVcF8gfHwgZS53aWRnZXQgPT0gbW92ZURvd25fKQotICAgIHsKLSAgICAgIGludCBpbmRleCA9IGNsaWVudFR5cGVWaWV3ZXJfLmdldFRhYmxlKCkuZ2V0U2VsZWN0aW9uSW5kZXgoKTsKLSAgICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGUud2lkZ2V0ID09IG1vdmVVcF8gJiYgaW5kZXggPiAwKQotICAgICAgICB7Ci0gICAgICAgICAgT2JqZWN0IG9iamVjdCA9IGNsaWVudFR5cGVzXy5yZW1vdmUoaW5kZXgpOwotICAgICAgICAgIGNsaWVudFR5cGVzXy5pbnNlcnRFbGVtZW50QXQob2JqZWN0LCBpbmRleCAtIDEpOwotICAgICAgICAgIGNsaWVudFR5cGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgICAgICAgfSBlbHNlIGlmIChlLndpZGdldCA9PSBtb3ZlRG93bl8gJiYgaW5kZXggPCBjbGllbnRUeXBlc18uc2l6ZSgpIC0gMSkKLSAgICAgICAgewotICAgICAgICAgIE9iamVjdCBvYmplY3QgPSBjbGllbnRUeXBlc18ucmVtb3ZlKGluZGV4KTsKLSAgICAgICAgICBjbGllbnRUeXBlc18uaW5zZXJ0RWxlbWVudEF0KG9iamVjdCwgaW5kZXggKyAxKTsKLSAgICAgICAgICBjbGllbnRUeXBlVmlld2VyXy5yZWZyZXNoKCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2xpZW50VHlwZVZpZXdlcl8uZ2V0VGFibGUoKS5ub3RpZnlMaXN0ZW5lcnMoU1dULlNlbGVjdGlvbiwgbmV3IEV2ZW50KCkpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgY2xhc3MgQ2xpZW50VHlwZUNvbnRlbnRQcm92aWRlciBpbXBsZW1lbnRzIElTdHJ1Y3R1cmVkQ29udGVudFByb3ZpZGVyCi0gIHsKLSAgICAvKioKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRDb250ZW50UHJvdmlkZXIjZ2V0RWxlbWVudHMoT2JqZWN0KQotICAgICAqLwotICAgIHB1YmxpYyBPYmplY3RbXSBnZXRFbGVtZW50cyhPYmplY3QgdmFsdWUpIAotICAgIHsKLSAgICAgIHJldHVybiAoKFZlY3Rvcil2YWx1ZSkudG9BcnJheShuZXcgU3RyaW5nWzBdKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSUNvbnRlbnRQcm92aWRlciNkaXNwb3NlKCkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBkaXNwb3NlKCkgCi0gICAgewotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JQ29udGVudFByb3ZpZGVyI2lucHV0Q2hhbmdlZChWaWV3ZXIsIE9iamVjdCwgT2JqZWN0KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIGlucHV0Q2hhbmdlZChWaWV3ZXIgYXJnMCwgT2JqZWN0IGFyZzEsIE9iamVjdCBhcmcyKSAKLSAgICB7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBjbGFzcyBDbGllbnRUeXBlTGFiZWxQcm92aWRlciBleHRlbmRzIExhYmVsUHJvdmlkZXIKLSAgewotICAgIHB1YmxpYyBDbGllbnRUeXBlTGFiZWxQcm92aWRlcigpCi0gICAgewotICAgIH0KLQotICAgIC8qKgotICAgICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklMYWJlbFByb3ZpZGVyI2dldEltYWdlKE9iamVjdCkKLSAgICAqLwotICAgIHB1YmxpYyBJbWFnZSBnZXRJbWFnZShPYmplY3QgYXJnMCkgCi0gICAgeyAKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JTGFiZWxQcm92aWRlciNnZXRUZXh0KE9iamVjdCkKLSAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IHZhbHVlKSAKLSAgICB7Ci0gICAgICBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSB0ZW1wbGF0ZSA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFRlbXBsYXRlKCAoU3RyaW5nKXZhbHVlICk7Ci0gICAgICAKLSAgICAgIHJldHVybiB0ZW1wbGF0ZS5nZXRMYWJlbCgpOwotICAgIH0KLSAgfQotICAKLSAgcHJvdGVjdGVkIGNsYXNzIFRhYmxlU2VsZWN0aW9uTGlzdGVuZXIgaW1wbGVtZW50cyBTZWxlY3Rpb25MaXN0ZW5lcgotICB7Ci0gICAgcHJpdmF0ZSBCdXR0b24gZG93bjsKLSAgICBwcml2YXRlIEJ1dHRvbiB1cDsKLSAgICBwcml2YXRlIFRhYmxlICB0YWJsZTsKLQotICAgIHB1YmxpYyBUYWJsZVNlbGVjdGlvbkxpc3RlbmVyKEJ1dHRvbiB1cCwgQnV0dG9uIGRvd24sIFRhYmxlIG93bmVyVGFibGUpCi0gICAgewotICAgICAgdGhpcy51cCA9IHVwOwotICAgICAgdGhpcy5kb3duID0gZG93bjsKLSAgICAgIHRoaXMudGFibGUgPSBvd25lclRhYmxlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKQotICAgIHsKLSAgICAgIHdpZGdldFNlbGVjdGVkKGUpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gICAgewotICAgICAgaW50IGkgPSB0YWJsZS5nZXRTZWxlY3Rpb25JbmRleCgpOwotICAgICAgaWYgKGkgPT0gdGFibGUuZ2V0SXRlbUNvdW50KCkgLSAxKSBkb3duLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgZWxzZSBpZiAoaSA+IC0xKSBkb3duLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgICBpZiAoaSA9PSAwKSB1cC5zZXRFbmFibGVkKGZhbHNlKTsKLSAgICAgIGVsc2UgaWYgKGkgPiAtMSkgdXAuc2V0RW5hYmxlZCh0cnVlKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvU2VydmVyUnVudGltZVByZWZlcmVuY2VQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3ByZWZlcmVuY2VzL1NlcnZlclJ1bnRpbWVQcmVmZXJlbmNlUGFnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGFiZTUxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvcHJlZmVyZW5jZXMvU2VydmVyUnVudGltZVByZWZlcmVuY2VQYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNzI4CSAgMTUxNzIzIG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbgotICogMjAwNzAxMDkgICAxMzA5NjUga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNDI4ICAgMjI0NzI2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwNTEyICAgMTgwMTM1IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLlByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLlVJVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5zZWxlY3Rpb24uU2VsZWN0aW9uTGlzdENob2ljZXM7Ci0KLWltcG9ydCBjb20uaWJtLmljdS50ZXh0LkNvbGxhdG9yOwotCi0KLS8qKgotICoKLSAqLwotcHVibGljIGNsYXNzIFNlcnZlclJ1bnRpbWVQcmVmZXJlbmNlUGFnZSBleHRlbmRzIFByZWZlcmVuY2VQYWdlIGltcGxlbWVudHMgSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlLCBMaXN0ZW5lciAKLXsKLQlwcml2YXRlIFN0cmluZyBwbHVnaW5JZF89ICJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiOwotCQotCS8qIENPTlRFWFRfSUQgU1JQRjAwMDEgZm9yIHNlcnZlciBwcmVmZXJlbmNlIG9uIHRoZSBzZXJ2ZXIgcnVudGltZSBwcmVmZXJlbmNlIHBhZ2UgKi8KLQlwcml2YXRlIFN0cmluZyBJTkZPUE9QX1NSUEZfU0VSVkVSX1BSRUYgPSAiU1JQRjAwMDEiOwotCXByaXZhdGUgQ29tYm8gc2VydmVyXzsKLQotCS8qIENPTlRFWFRfSUQgU1JQRjAwMDIgZm9yIHJ1bnRpbWUgcHJlZmVyZW5jZSBvbiB0aGUgc2VydmVyIHJ1bnRpbWUgcHJlZmVyZW5jZSBwYWdlICovCi0JcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9TUlBGX1JVTlRJTUVfUFJFRiA9ICJTUlBGMDAwMiI7Ci0JcHJpdmF0ZSBDb21ibyBydW50aW1lXzsJCi0KLQkvKiBDT05URVhUX0lEIFNSUEYwMDAzIGZvciBKMkVFIHZlcnNpb24gcHJlZmVyZW5jZSBvbiB0aGUgc2VydmVyIHJ1bnRpbWUgcHJlZmVyZW5jZSBwYWdlICovCi0gICAgLyoKLQlwcml2YXRlIFN0cmluZyBJTkZPUE9QX1NSUEZfSjJFRV9QUkVGID0gcGx1Z2luSWRfICsgIi5TUlBGMDAwMyI7Ci0JcHJpdmF0ZSBDb21ibyBqMmVlVmVyc2lvbl87Ci0gICAgKi8KLQkKLQlTZWxlY3Rpb25MaXN0Q2hvaWNlcyBzZXJ2ZXJUb1J1bnRpbWVUb0oyRUVfOwotCQotCXB1YmxpYyB2b2lkIGluaXQoSVdvcmtiZW5jaCB3b3JrYmVuY2gpICAgeyB9CQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpmYWNlLnByZWZlcmVuY2UuUHJlZmVyZW5jZVBhZ2UjY3JlYXRlQ29udGVudHMob3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlKQotCSAqLwotCXByb3RlY3RlZCBDb250cm9sIGNyZWF0ZUNvbnRlbnRzKENvbXBvc2l0ZSBwYXJlbnQpIAotCXsKLQkgIFVJVXRpbHMgdWlVdGlscyA9IG5ldyBVSVV0aWxzKHBsdWdpbklkXyk7Ci0JICAKLQkgIENvbXBvc2l0ZSBwYWdlID0gbmV3IENvbXBvc2l0ZShwYXJlbnQsIFNXVC5OT05FKTsKLQkgIEdyaWRMYXlvdXQgZ2wgPSBuZXcgR3JpZExheW91dCgpOwotCSAgZ2wubnVtQ29sdW1ucyA9IDI7Ci0JICBwYWdlLnNldExheW91dChnbCk7Ci0JICBHcmlkRGF0YSBnZCA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKTsKLQkgIHBhZ2Uuc2V0TGF5b3V0RGF0YShnZCk7Ci0JICAKLQkgIHNlcnZlcl8gPSB1aVV0aWxzLmNyZWF0ZUNvbWJvKHBhZ2UsQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NFUlZFUlNfTElTVCwKLQkJCSAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfU1JQRl9DT01CT19TRVJWRVIsCi0JCQkJCQkJCQlJTkZPUE9QX1NSUEZfU0VSVkVSX1BSRUYsCi0JCQkJCQkJCQlTV1QuU0lOR0xFfFNXVC5CT1JERVJ8U1dULlJFQURfT05MWSk7Ci0JICAKLQkgIHJ1bnRpbWVfID0gdWlVdGlscy5jcmVhdGVDb21ibyhwYWdlLENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9SVU5USU1FU19MSVNULAotCQkJICBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9TUlBGX0NPTUJPX1JVTlRJTUUsCi0JCQkJCQkJCQkgSU5GT1BPUF9TUlBGX1JVTlRJTUVfUFJFRiwKLQkJCQkJCQkJCSBTV1QuU0lOR0xFfFNXVC5CT1JERVJ8U1dULlJFQURfT05MWSk7Ci0KLS8qCi0JICBqMmVlVmVyc2lvbl8gPSB1aVV0aWxzLmNyZWF0ZUNvbWJvKHBhZ2UsQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0oyRUVfVkVSU0lPTiwKLQkJCSAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfU1JQRl9DT01CT19KMkVFLAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZPUE9QX1NSUEZfSjJFRV9QUkVGLAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTV1QuU0lOR0xFfFNXVC5CT1JERVJ8U1dULlJFQURfT05MWSk7CSAgCi0qLwotCi0JICBpbml0aWFsaXplVmFsdWVzKCk7Ci0JICBzdGFydExpc3RlbmluZygpOwotCSAgYXBwbHlEaWFsb2dGb250KHBhZ2UpOwotCSAgcmV0dXJuIHBhZ2U7Ci0JfQotCi0JcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVWYWx1ZXMoKQotCXsKLQkJUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNlcnZlclJ1bnRpbWVDb250ZXh0KCk7Ci0gICAgICAgIHNlcnZlclRvUnVudGltZVRvSjJFRV8gPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2ZXJUb1J1bnRpbWVUb0oyRUUoKTsKLQotCi0JCXNldFNlcnZlckl0ZW1zKHNlcnZlclRvUnVudGltZVRvSjJFRV8uZ2V0TGlzdCgpLmdldExpc3QoKSk7Ci0JCVN0cmluZyBkZWZhdWx0U2VydmVyVGV4dCA9IGNvbnRleHQuZ2V0U2VydmVyRmFjdG9yeUlkKCk7Ci0JCXNlcnZlclRvUnVudGltZVRvSjJFRV8uZ2V0TGlzdCgpLnNldFNlbGVjdGlvblZhbHVlKGRlZmF1bHRTZXJ2ZXJUZXh0KTsKLQkJc2V0U2VydmVyU2VsZWN0aW9uKGRlZmF1bHRTZXJ2ZXJUZXh0KTsKLQkJCi0JCXNldFJ1bnRpbWVJdGVtcyhzZXJ2ZXJUb1J1bnRpbWVUb0oyRUVfLmdldENob2ljZSgpLmdldExpc3QoKS5nZXRMaXN0KCkpOwotCQlTdHJpbmcgZGVmYXVsdFJ1bnRpbWVUZXh0ID0gY29udGV4dC5nZXRSdW50aW1lSWQoKTsKLQkJc2VydmVyVG9SdW50aW1lVG9KMkVFXy5nZXRDaG9pY2UoKS5nZXRMaXN0KCkuc2V0U2VsZWN0aW9uVmFsdWUoZGVmYXVsdFJ1bnRpbWVUZXh0KTsKLQkJc2V0UnVudGltZVNlbGVjdGlvbihkZWZhdWx0UnVudGltZVRleHQpOwkJCQotCX0KLQkKLQlwdWJsaWMgdm9pZCBoYW5kbGVFdmVudChFdmVudCBldmVudCkKLQl7Ci0JCWlmIChzZXJ2ZXJfID09IGV2ZW50LndpZGdldCkKLQkJewotCQkJaGFuZGxlU2VydmVyU2VsZWN0ZWQoKTsKLQkJfQotCQllbHNlIGlmIChydW50aW1lXyA9PSBldmVudC53aWRnZXQpCi0JCXsKLQkJCWhhbmRsZVJ1bnRpbWVTZWxlY3RlZCgpOwotCQl9Ci0JfQotCi0JcHJpdmF0ZSB2b2lkIGhhbmRsZVNlcnZlclNlbGVjdGVkKCkKLQl7Ci0JCXN0b3BMaXN0ZW5pbmcoKTsKLQkJCi0JCVN0cmluZyBzZWxlY3RlZFRleHQgPSBnZXRTZXJ2ZXJTZWxlY3Rpb24oKTsKLQkJc2VydmVyVG9SdW50aW1lVG9KMkVFXy5nZXRMaXN0KCkuc2V0U2VsZWN0aW9uVmFsdWUoc2VsZWN0ZWRUZXh0KTsKLQkJCi0JCS8vIFRPRE8gKHNlZSBidWcgMTE2MDI1KSAtIFNpbmNlIHRoZSBzZXJ2ZXIgYW5kIHJ1bnRpbWUgc2V0IGluIHNlcnZlclRvUnVudGltZVRvSjJFRSBpcyBqdXN0IHRoZSBsaXN0IG9mIAotCQkvLyBhbGwgc2VydmVycyBhbmQgYWxsIHJ1bnRpbWUgKGkuZS4gbm8gdmFsaWRhdGlvbiBjaGVja2luZyBpcyBiZWluZyBkb25lKSwgbm8gbmVlZCB0byB1cGRhdGUgdGhlIHJ1bnRpbWUsCi0JCS8vIGp1c3Qga2VlcCB0aGUgb3JpZ2luYWwgdmFsdWUuCi0JCS8vVXBkYXRlIHRoZSBydW50aW1lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCQlzZXRSdW50aW1lSXRlbXMoc2VydmVyVG9SdW50aW1lVG9KMkVFXy5nZXRDaG9pY2UoKS5nZXRMaXN0KCkuZ2V0TGlzdCgpKTsKLS8vCQlpZiAoc2VydmVyVG9SdW50aW1lVG9KMkVFXy5nZXRDaG9pY2UoKS5nZXRMaXN0KCkuZ2V0TGlzdCgpLmxlbmd0aCA+IDApCi0vLwkJICBzZXJ2ZXJUb1J1bnRpbWVUb0oyRUVfLmdldENob2ljZSgpLmdldExpc3QoKS5zZXRJbmRleCgwKTsKLS8vCQkKLS8vCQlTdHJpbmcgbmV3UnVudGltZVRleHQgPSBzZXJ2ZXJUb1J1bnRpbWVUb0oyRUVfLmdldENob2ljZSgpLmdldExpc3QoKS5nZXRTZWxlY3Rpb24oKTsKLS8vCQlpZiAobmV3UnVudGltZVRleHQhPW51bGwgJiYgbmV3UnVudGltZVRleHQubGVuZ3RoKCk+MCkKLS8vCQkJc2V0UnVudGltZVNlbGVjdGlvbihuZXdSdW50aW1lVGV4dCk7CQkKLQkJCi0JCXN0YXJ0TGlzdGVuaW5nKCk7Ci0JfQotCQotCXByaXZhdGUgdm9pZCBoYW5kbGVSdW50aW1lU2VsZWN0ZWQoKQotCXsKLQkJc3RvcExpc3RlbmluZygpOwotCQkKLQkJU3RyaW5nIHNlbGVjdGVkVGV4dCA9IGdldFJ1bnRpbWVTZWxlY3Rpb24oKTsKLQkJc2VydmVyVG9SdW50aW1lVG9KMkVFXy5nZXRDaG9pY2UoKS5nZXRMaXN0KCkuc2V0U2VsZWN0aW9uVmFsdWUoc2VsZWN0ZWRUZXh0KTsJCQkJCQkKLQkJc3RhcnRMaXN0ZW5pbmcoKTsJCQotCX0KLQkKLQotICAgIC8qKgotCSAqIERvZXMgYW55dGhpbmcgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIGRlZmF1bHQgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0JKi8KLQlwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtRGVmYXVsdHMoKQotCXsKLQkgIHN1cGVyLnBlcmZvcm1EZWZhdWx0cygpOwotCSAgc2V0VG9EZWZhdWx0cygpOwotCX0KLQkKLQlwcml2YXRlIHZvaWQgc2V0VG9EZWZhdWx0cygpCi0JewotCQlQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0U2VydmVyUnVudGltZUNvbnRleHQoKTsKLQotCQlTdHJpbmcgZGVmYXVsdFNlcnZlclRleHQgPSBjb250ZXh0LmdldERlZmF1bHRTZXJ2ZXJGYWN0b3J5SWQoKTsKLQkJc2VydmVyVG9SdW50aW1lVG9KMkVFXy5nZXRMaXN0KCkuc2V0U2VsZWN0aW9uVmFsdWUoZGVmYXVsdFNlcnZlclRleHQpOwotCQlzZXRTZXJ2ZXJTZWxlY3Rpb24oZGVmYXVsdFNlcnZlclRleHQpOwotCQkKLQkJc2V0UnVudGltZUl0ZW1zKHNlcnZlclRvUnVudGltZVRvSjJFRV8uZ2V0Q2hvaWNlKCkuZ2V0TGlzdCgpLmdldExpc3QoKSk7Ci0JCVN0cmluZyBkZWZhdWx0UnVudGltZVRleHQgPSBjb250ZXh0LmdldERlZmF1bHRSdW50aW1lSWQoKTsKLQkJc2VydmVyVG9SdW50aW1lVG9KMkVFXy5nZXRDaG9pY2UoKS5nZXRMaXN0KCkuc2V0U2VsZWN0aW9uVmFsdWUoZGVmYXVsdFJ1bnRpbWVUZXh0KTsKLQkJc2V0UnVudGltZVNlbGVjdGlvbihkZWZhdWx0UnVudGltZVRleHQpOwotCX0KLQotCS8qKgotCSAqIERvIGFueXRoaW5nIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBPSyBidXR0b24gaGFzIGJlZW4gcHJlc3NlZC4KLQkgKiAgQHJldHVybiB3aGV0aGVyIGl0IGlzIG9rYXkgdG8gY2xvc2UgdGhlIHByZWZlcmVuY2UgcGFnZQotCSAqLwotCXB1YmxpYyBib29sZWFuIHBlcmZvcm1PaygpCi0JewotCSAgc3RvcmVWYWx1ZXMoKTsKLQkgIHJldHVybiB0cnVlOwotCX0KLQotCXByaXZhdGUgdm9pZCBzdG9yZVZhbHVlcygpCi0JewotICAgICAgUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNlcnZlclJ1bnRpbWVDb250ZXh0KCk7Ci0gICAgICBjb250ZXh0LnNldFNlcnZlckZhY3RvcnlJZChnZXRTZXJ2ZXJTZWxlY3Rpb24oKSk7Ci0gICAgICBjb250ZXh0LnNldFJ1bnRpbWVJZChnZXRSdW50aW1lU2VsZWN0aW9uKCkpOyAgICAgIAotCX0KLQkKLQlwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtQXBwbHkoKQotCXsKLQkgIHBlcmZvcm1PaygpOwotCX0KLQkKLSAgCQotCXByaXZhdGUgdm9pZCBzdGFydExpc3RlbmluZygpCi0JewotCSAgc2VydmVyXy5hZGRMaXN0ZW5lcihTV1QuU2VsZWN0aW9uLHRoaXMpOwotCSAgcnVudGltZV8uYWRkTGlzdGVuZXIoU1dULlNlbGVjdGlvbix0aGlzKTsKLQl9Ci0KLQlwcml2YXRlIHZvaWQgc3RvcExpc3RlbmluZygpCi0JewotCSAgc2VydmVyXy5yZW1vdmVMaXN0ZW5lcihTV1QuU2VsZWN0aW9uLCB0aGlzKTsKLQkgIHJ1bnRpbWVfLnJlbW92ZUxpc3RlbmVyKFNXVC5TZWxlY3Rpb24sIHRoaXMpOwotCX0KLQotCXByaXZhdGUgdm9pZCBzZXRTZXJ2ZXJJdGVtcyhTdHJpbmdbXSBmYWN0b3J5SWRzKQotCXsKLQkgIAotCSAgaWYgKGZhY3RvcnlJZHMgIT0gbnVsbCkKLQkgIHsKLQkgICAgQXJyYXlMaXN0IHNlcnZlckxhYmVsc0xpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0JCSAgZm9yIChpbnQgaT0wO2k8ZmFjdG9yeUlkcy5sZW5ndGg7aSsrKQotCQkgIHsKLQkJCSAgLy9TdHJpbmcgdGhpc1NlcnZlckxhYmVsID0gV2ViU2VydmljZVNlcnZlclJ1bnRpbWVUeXBlUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRTZXJ2ZXJMYWJlbChmYWN0b3J5SWRzW2ldKTsKLSAgICAgICAgU3RyaW5nIHRoaXNTZXJ2ZXJMYWJlbCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZlckxhYmVsQnlJZChmYWN0b3J5SWRzW2ldKTsKLQkJCSAgaWYgKHRoaXNTZXJ2ZXJMYWJlbCE9bnVsbCAmJiB0aGlzU2VydmVyTGFiZWwubGVuZ3RoKCk+MCkKLQkJCSAgewotCQkJICAgIHNlcnZlckxhYmVsc0xpc3QuYWRkKHRoaXNTZXJ2ZXJMYWJlbCk7Ci0JCQkgIH0KLQkJCQotCQkgIH0KLQkJICBTdHJpbmdbXSBzZXJ2ZXJMYWJlbHMgPSBjb252ZXJ0VG9TdHJpbmdBcnJheShzZXJ2ZXJMYWJlbHNMaXN0LnRvQXJyYXkoKSk7Ci0JCSAgQ29sbGF0b3IgY29sbGF0b3IgPSBDb2xsYXRvci5nZXRJbnN0YW5jZSgpOwotCQkgIEFycmF5cy5zb3J0KHNlcnZlckxhYmVscywgY29sbGF0b3IpOwotCQkgIHNlcnZlcl8uc2V0SXRlbXMoc2VydmVyTGFiZWxzKTsKLQkgIH0KLQkJCi0JfQotCQotCXByaXZhdGUgdm9pZCBzZXRSdW50aW1lSXRlbXMoU3RyaW5nW10gaWRzKQotCXsKLQkgIGlmIChpZHMgIT0gbnVsbCkKLQkgIHsKLQkJU3RyaW5nW10gcnVudGltZUxhYmVscyA9IG5ldyBTdHJpbmdbaWRzLmxlbmd0aF07Ci0JCWZvciAoaW50IGk9MDtpPGlkcy5sZW5ndGg7aSsrKQotCQl7Ci0JCSAgLy9ydW50aW1lTGFiZWxzW2ldID0gV2ViU2VydmljZVNlcnZlclJ1bnRpbWVUeXBlUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRSdW50aW1lTGFiZWwoaWRzW2ldKTsKLSAgICAgIHJ1bnRpbWVMYWJlbHNbaV0gPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRSdW50aW1lTGFiZWxCeUlkKGlkc1tpXSk7Ci0JCX0KLQotCQkvL3NvcnQgdGhlIGxhYmVscyAoYnVnIDE1MTcyMykKLQkJQ29sbGF0b3IgY29sbGF0b3IgPSBDb2xsYXRvci5nZXRJbnN0YW5jZSgpOwotCQlBcnJheXMuc29ydChydW50aW1lTGFiZWxzLCBjb2xsYXRvcik7Ci0JCXJ1bnRpbWVfLnNldEl0ZW1zKHJ1bnRpbWVMYWJlbHMpOwotCSAgfQotCQkKLQl9Ci0JCi0gICAgLyoKLSAgICBwcml2YXRlIHZvaWQgc2V0SjJFRUl0ZW1zKFN0cmluZ1tdIHZlcnNpb25zKQotICAgIHsKLSAgICAgIGlmICh2ZXJzaW9ucyAhPSBudWxsKQotICAgICAgewotICAgICAgICBTdHJpbmdbXSBqMmVlTGFiZWxzID0gbmV3IFN0cmluZ1t2ZXJzaW9ucy5sZW5ndGhdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZlcnNpb25zLmxlbmd0aDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIGxhYmVsID0gSjJFRVV0aWxzLmdldExhYmVsRnJvbUoyRUVWZXJzaW9uKHZlcnNpb25zW2ldKTsKLSAgICAgICAgICBpZiAobGFiZWwgIT0gbnVsbCAmJiBsYWJlbC5sZW5ndGgoKT4wKQotICAgICAgICAgICAgajJlZUxhYmVsc1tpXSA9IGxhYmVsOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGoyZWVMYWJlbHNbaV0gPSBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfTkE7Ci0gICAgICAgIH0KLSAgICAgICAgajJlZVZlcnNpb25fLnNldEl0ZW1zKGoyZWVMYWJlbHMpOwotICAgICAgICAKLSAgICAgICAgLy9EaXNhYmxlIHRoZSBjb21ibyBpZiBpdCBoYXMgbm8gaXRlbXMuCi0gICAgICAgIGlmIChqMmVlTGFiZWxzLmxlbmd0aCA+IDApCi0gICAgICAgICAgajJlZVZlcnNpb25fLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBqMmVlVmVyc2lvbl8uc2V0RW5hYmxlZChmYWxzZSk7Ci0gICAgICB9Ci0gICAgICAgIAotICAgIH0KLSAgICAqLwotCQotCXByaXZhdGUgU3RyaW5nIGdldFNlcnZlclNlbGVjdGlvbigpCi0JewotCSAgU3RyaW5nIHNlcnZlckxhYmVsID0gc2VydmVyXy5nZXRUZXh0KCk7Ci0JICAvL3JldHVybiBXZWJTZXJ2aWNlU2VydmVyUnVudGltZVR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFNlcnZlckZhY3RvcnlJZChzZXJ2ZXJMYWJlbCk7Ci0gICAgcmV0dXJuIFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZlckZhY3RvcnlJZChzZXJ2ZXJMYWJlbCk7Ci0JfQotCQotCXByaXZhdGUgU3RyaW5nIGdldFJ1bnRpbWVTZWxlY3Rpb24oKQotCXsKLSAgICAgIFN0cmluZyBydW50aW1lTGFiZWwgPSBydW50aW1lXy5nZXRUZXh0KCk7Ci0JICAvL3JldHVybiBXZWJTZXJ2aWNlU2VydmVyUnVudGltZVR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFJ1bnRpbWVJZChydW50aW1lTGFiZWwpOwotICAgICAgcmV0dXJuIFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFJ1bnRpbWVJZChydW50aW1lTGFiZWwpOwotCX0KLQkKLSAgICAvKgotCXByaXZhdGUgU3RyaW5nIGdldEoyRUVTZWxlY3Rpb24oKQotCXsKLQkgIFN0cmluZyBqMmVlTGFiZWwgPSBqMmVlVmVyc2lvbl8uZ2V0VGV4dCgpOwotCSAgcmV0dXJuIEoyRUVVdGlscy5nZXRKMkVFVmVyc2lvbkZyb21MYWJlbChqMmVlTGFiZWwpOwkJCi0JfQotICAgICovCi0JCi0JcHJpdmF0ZSB2b2lkIHNldFNlcnZlclNlbGVjdGlvbihTdHJpbmcgZmFjdG9yeUlkKQotCXsKLQkJLy9TdHJpbmcgbGFiZWwgPSBXZWJTZXJ2aWNlU2VydmVyUnVudGltZVR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFNlcnZlckxhYmVsKGZhY3RvcnlJZCk7Ci0gICAgU3RyaW5nIGxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmVyTGFiZWxCeUlkKGZhY3RvcnlJZCk7Ci0JCXNldFNlbGVjdGlvbihzZXJ2ZXJfLGxhYmVsKTsKLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIHNldFJ1bnRpbWVTZWxlY3Rpb24oU3RyaW5nIGlkKQotCXsKLQkJLy9TdHJpbmcgbGFiZWwgPSBXZWJTZXJ2aWNlU2VydmVyUnVudGltZVR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFJ1bnRpbWVMYWJlbChpZCk7Ci0gICAgU3RyaW5nIGxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZUxhYmVsQnlJZChpZCk7Ci0JCXNldFNlbGVjdGlvbihydW50aW1lXyxsYWJlbCk7CQkKLQl9Ci0JCi0gICAgLyoKLQlwcml2YXRlIHZvaWQgc2V0SjJFRVNlbGVjdGlvbihTdHJpbmcgdmVyc2lvbikKLQl7Ci0JICBTdHJpbmcgbGFiZWwgPSBKMkVFVXRpbHMuZ2V0TGFiZWxGcm9tSjJFRVZlcnNpb24odmVyc2lvbik7Ci0gICAgICBzZXRTZWxlY3Rpb24oajJlZVZlcnNpb25fLCBsYWJlbCk7Ci0JfQotICAgICovCi0JCi0JcHJpdmF0ZSB2b2lkIHNldFNlbGVjdGlvbihDb21ibyBjb21ibywgU3RyaW5nIHMpCi0JewotCQlTdHJpbmdbXSBpdGVtcyA9IGNvbWJvLmdldEl0ZW1zKCk7Ci0JCWZvciAoaW50IGk9MDsgaTxpdGVtcy5sZW5ndGg7IGkrKykKLQkJewotCQkJaWYgKGl0ZW1zW2ldLmVxdWFscyhzKSkKLQkJCXsKLQkJCQljb21iby5zZWxlY3QoaSk7Ci0JCQkJcmV0dXJuOwotCQkJfQotCQl9Ci0JfQotCQotCXByaXZhdGUgU3RyaW5nW10gY29udmVydFRvU3RyaW5nQXJyYXkoT2JqZWN0W10gYSkKLQl7Ci0JICBpZiAoYT09bnVsbCkgcmV0dXJuIG5ldyBTdHJpbmdbMF07Ci0JICAJCi0JICBpbnQgbGVuZ3RoID0gYS5sZW5ndGg7Ci0JICBTdHJpbmdbXSBzYSA9IG5ldyBTdHJpbmdbbGVuZ3RoXTsKLQkgIGZvciAoaW50IGk9MDsgaTxsZW5ndGg7IGkrKykKLQkgIHsKLQkgIAlPYmplY3Qgb2JqID0gYVtpXTsKLQkgIAlpZiAob2JqIGluc3RhbmNlb2YgU3RyaW5nKQotCSAgCXsKLQkgICAgICBzYVtpXSA9IChTdHJpbmcpb2JqOwotCSAgCX0KLQkgIH0KLQkgIHJldHVybiBzYTsKLQl9CQotCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9wcmVmZXJlbmNlcy9UcmFuc2llbnRQcm9qZWN0VG9wb2xvZ3lDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3ByZWZlcmVuY2VzL1RyYW5zaWVudFByb2plY3RUb3BvbG9neUNvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEwMjczMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3ByZWZlcmVuY2VzL1RyYW5zaWVudFByb2plY3RUb3BvbG9neUNvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyNyAgIDEyNDM5MiByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wcmVmZXJlbmNlczsKLQotCi1wdWJsaWMgY2xhc3MgVHJhbnNpZW50UHJvamVjdFRvcG9sb2d5Q29udGV4dCBpbXBsZW1lbnRzIFByb2plY3RUb3BvbG9neUNvbnRleHQKLXsKLSBwcml2YXRlIFN0cmluZ1tdIHNlcnZpY2VUeXBlczsKLSBwcml2YXRlIFN0cmluZ1tdIGRlZmF1bHRTZXJ2aWNlVHlwZXM7Ci0gCi0gcHJpdmF0ZSBTdHJpbmdbXSBjbGllbnRUeXBlczsKLSBwcml2YXRlIFN0cmluZ1tdIGRlZmF1bHRDbGllbnRUeXBlczsKLSAKLSBwcml2YXRlIGJvb2xlYW4gdHdvRUFSczsKLSAKLSBwdWJsaWMgVHJhbnNpZW50UHJvamVjdFRvcG9sb2d5Q29udGV4dCAoKSB7fQotCi0gcHVibGljIHZvaWQgc2V0U2VydmljZVR5cGVzKFN0cmluZ1tdIHNlcnZpY2VUeXBlcykKLSB7Ci0gICB0aGlzLnNlcnZpY2VUeXBlcyA9IHNlcnZpY2VUeXBlczsKLSB9Ci0gcHVibGljIFN0cmluZ1tdIGdldFNlcnZpY2VUeXBlcygpCi0gewotICAgcmV0dXJuIHNlcnZpY2VUeXBlczsKLSB9Ci0gCi0gcHVibGljIHZvaWQgc2V0Q2xpZW50VHlwZXMoU3RyaW5nW10gY2xpZW50VHlwZXMpCi0gewotICAgdGhpcy5jbGllbnRUeXBlcyA9IGNsaWVudFR5cGVzOwotIH0KLSBwdWJsaWMgU3RyaW5nW10gZ2V0Q2xpZW50VHlwZXMoKQotIHsKLSAgIHJldHVybiBjbGllbnRUeXBlczsKLSB9Ci0KLSBwdWJsaWMgdm9pZCBzZXRVc2VUd29FQVJzKGJvb2xlYW4gdXNlKQotIHsKLSAgIHRoaXMudHdvRUFScyA9IHVzZTsKLSB9Ci0gcHVibGljIGJvb2xlYW4gaXNVc2VUd29FQVJzKCkKLSB7Ci0gICByZXR1cm4gdHdvRUFSczsKLSB9Ci0KLSBwdWJsaWMgUHJvamVjdFRvcG9sb2d5Q29udGV4dCBjb3B5KCkgewotIAlUcmFuc2llbnRQcm9qZWN0VG9wb2xvZ3lDb250ZXh0IGNvbnRleHQgPSBuZXcgVHJhbnNpZW50UHJvamVjdFRvcG9sb2d5Q29udGV4dCgpOwotICAgIGNvbnRleHQuc2V0U2VydmljZVR5cGVzKGdldFNlcnZpY2VUeXBlcygpKTsKLSAgICBjb250ZXh0LnNldERlZmF1bHRTZXJ2aWNlVHlwZXMoZ2V0RGVmYXVsdFNlcnZpY2VUeXBlcygpKTsKLQljb250ZXh0LnNldENsaWVudFR5cGVzKGdldENsaWVudFR5cGVzKCkpOwotICAgIGNvbnRleHQuc2V0RGVmYXVsdENsaWVudFR5cGVzKGdldERlZmF1bHRDbGllbnRUeXBlcygpKTsKLQljb250ZXh0LnNldFVzZVR3b0VBUnMoaXNVc2VUd29FQVJzKCkpOwotCXJldHVybiBjb250ZXh0OwotIH0KLQotIAotcHVibGljIHZvaWQgc2V0RGVmYXVsdFNlcnZpY2VUeXBlcyhTdHJpbmdbXSBkZWZhdWx0U2VydmljZVR5cGVzKQotewotICB0aGlzLmRlZmF1bHRTZXJ2aWNlVHlwZXMgPSBkZWZhdWx0U2VydmljZVR5cGVzOwotfQotCi1wdWJsaWMgU3RyaW5nW10gZ2V0RGVmYXVsdFNlcnZpY2VUeXBlcygpCi17Ci0gIHJldHVybiBkZWZhdWx0U2VydmljZVR5cGVzOwotCi19Ci0KLQotcHVibGljIHZvaWQgc2V0RGVmYXVsdENsaWVudFR5cGVzKFN0cmluZ1tdIGRlZmF1bHRDbGllbnRUeXBlcykKLXsKLSAgdGhpcy5kZWZhdWx0Q2xpZW50VHlwZXMgPSBkZWZhdWx0Q2xpZW50VHlwZXM7Ci19Ci0KLXB1YmxpYyBTdHJpbmdbXSBnZXREZWZhdWx0Q2xpZW50VHlwZXMoKQotewotICByZXR1cm4gZGVmYXVsdENsaWVudFR5cGVzOwotCi19Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3NlbGVjdGlvbi9TZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9zZWxlY3Rpb24vU2VsZWN0aW9uVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5N2YyYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3NlbGVjdGlvbi9TZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnNlbGVjdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuVHJhbnNmb3JtZXI7Ci0KLXB1YmxpYyBjbGFzcyBTZWxlY3Rpb25UcmFuc2Zvcm1lciBpbXBsZW1lbnRzIFRyYW5zZm9ybWVyIAotewotICBwdWJsaWMgT2JqZWN0IHRyYW5zZm9ybShPYmplY3QgdmFsdWUpIAotICB7Ci0JSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5TZWxlY3Rpb24gID0gKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKXZhbHVlOwotCVNlbGVjdGlvbiAgICAgICAgICAgIG91dFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oKTsKLQkKLQlpZiAoaW5TZWxlY3Rpb24gIT0gbnVsbCkKLQl7Ci0JCW91dFNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oIGluU2VsZWN0aW9uLnRvQXJyYXkoKSApOwkKLQl9Ci0JCi0JcmV0dXJuIG91dFNlbGVjdGlvbjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9zZXJ2ZXIvU3RhcnRDbGllbnRXaWRnZXRDb250cmlidXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS9zZXJ2ZXIvU3RhcnRDbGllbnRXaWRnZXRDb250cmlidXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTVhNzZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvc2VydmVyL1N0YXJ0Q2xpZW50V2lkZ2V0Q29udHJpYnV0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuc2VydmVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5JTmFtZWRXaWRnZXRDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRDb250cmlidXRvckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci0KLXB1YmxpYyBjbGFzcyBTdGFydENsaWVudFdpZGdldENvbnRyaWJ1dG9yIGltcGxlbWVudHMgSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3IgCi17Ci0gIHByaXZhdGUgSVNlcnZlciAgICAgIHNlcnZlcl87Ci0JICAKLSAgcHVibGljIFN0YXJ0Q2xpZW50V2lkZ2V0Q29udHJpYnV0b3IoIElTZXJ2ZXIgc2VydmVyICkKLSAgewotCXNlcnZlcl8gPSBzZXJ2ZXI7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVzY3JpcHRpb24oKSAKLSAgewotCXJldHVybiBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1dTX1NUQVJUX1NFUlZFUjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIAotICB7Ci0JcmV0dXJuICIiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRUaXRsZSgpIAotICB7Ci0JcmV0dXJuIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX1RJVExFX1dTX1NUQVJUX1NFUlZFUjsKLSAgfQotCi0gIHB1YmxpYyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkgZ2V0V2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkgCi0gIHsKLQlyZXR1cm4gbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0JICAgICAgIHsKLQkJCSBwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkgCi0JCQkgewotCQkJCXJldHVybiBuZXcgU3RhcnRTZXJ2ZXJXaWRnZXQoIHNlcnZlcl8gKTsKLSAJCQkgfQotCSAgICAgICB9OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3NlcnZlci9TdGFydENsaWVudFdpZGdldEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvc2VydmVyL1N0YXJ0Q2xpZW50V2lkZ2V0RmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjc3MjA4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvc2VydmVyL1N0YXJ0Q2xpZW50V2lkZ2V0RmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDcyMiAgIDI0MDIzMSBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5zZXJ2ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuZXh0ZW5zaW9uLlByZUNsaWVudERldmVsb3BDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5JTmFtZWRXaWRnZXRDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5JTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VDbGllbnQ7Ci0KLXB1YmxpYyBjbGFzcyBTdGFydENsaWVudFdpZGdldEZhY3RvcnkgaW1wbGVtZW50cyBJTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3RvcnkgCi17Ci0gIHByaXZhdGUgSVdlYlNlcnZpY2VDbGllbnQgd2Vic2VydmljZUNsaWVudF87Ci0gIHByaXZhdGUgSUNvbnRleHQgY29udGV4dF87Ci0gIAotICBwdWJsaWMgSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3IgZ2V0Rmlyc3ROYW1lZFdpZGdldCgpIAotICB7Ci0gICAgSVNlcnZlciBzZXJ2ZXIgPSBudWxsOwotICAgIAotICAgIGlmKCB3ZWJzZXJ2aWNlQ2xpZW50XyAhPSBudWxsICYmIHdlYnNlcnZpY2VDbGllbnRfLmdldFdlYlNlcnZpY2VDbGllbnRJbmZvKCkuZ2V0U2VydmVySW5zdGFuY2VJZCgpICE9IG51bGwgICYmIGNvbnRleHRfLmdldFJ1bigpKQotICAgIHsKLSAgICAgIHNlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlcih3ZWJzZXJ2aWNlQ2xpZW50Xy5nZXRXZWJTZXJ2aWNlQ2xpZW50SW5mbygpLmdldFNlcnZlckluc3RhbmNlSWQoKSApOwotICAgIH0KLSAgICAKLSAgICBpZiggc2VydmVyICE9IG51bGwgJiYgc2VydmVyLmdldFNlcnZlclN0YXRlKCkgIT0gSVNlcnZlci5TVEFURV9TVEFSVEVEICkKLSAgICB7Ci0gICAgICByZXR1cm4gbmV3IFN0YXJ0Q2xpZW50V2lkZ2V0Q29udHJpYnV0b3IoIHNlcnZlciApOwotICAgIH0KLSAgICAKLQlyZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBJTmFtZWRXaWRnZXRDb250cmlidXRvciBnZXROZXh0TmFtZWRXaWRnZXQoIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIHdpZGdldENvbnRyaWJ1dG9yKSAKLSAgewotCXJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhUmVnaXN0cnkpIAotICB7Ci0JZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIFN0YXJ0Q2xpZW50V2lkZ2V0RmFjdG9yeS5jbGFzcyApOwotCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkNvbnRleHQiLCBTdGFydENsaWVudFdpZGdldEZhY3RvcnkuY2xhc3MgKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZSggSVdlYlNlcnZpY2VDbGllbnQgd2Vic2VydmljZUNsaWVudCApCi0gIHsKLSAgICB3ZWJzZXJ2aWNlQ2xpZW50XyA9IHdlYnNlcnZpY2VDbGllbnQ7ICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q29udGV4dCAoIElDb250ZXh0IGNvbnRleHQgKQotICB7Ci0gICAgY29udGV4dF8gPSBjb250ZXh0OyAgCi0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvc2VydmVyL1N0YXJ0U2VydmVyV2lkZ2V0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3NlcnZlci9TdGFydFNlcnZlcldpZGdldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTYyZmVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvc2VydmVyL1N0YXJ0U2VydmVyV2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzE0ICAgMTc2ODg2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5zZXJ2ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuam9icy5JSm9iQ2hhbmdlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLmpvYnMuSUpvYk1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLmpvYnMuSm9iOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5qb2JzLkpvYkNoYW5nZUFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLlByb2dyZXNzTW9uaXRvclBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5TdGFydFNlcnZlckNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlRyYW5zaWVudFJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5CYXNlU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5FY2xpcHNlRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmVjbGlwc2UuRWNsaXBzZVN0YXR1c0hhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldERhdGFFdmVudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci0KLXB1YmxpYyBjbGFzcyBTdGFydFNlcnZlcldpZGdldCBleHRlbmRzIFNpbXBsZVdpZGdldERhdGFDb250cmlidXRvciAKLXsKLSAgcHJpdmF0ZSBJU2VydmVyICAgICAgICAgICAgIHNlcnZlcl87Ci0gIHByaXZhdGUgSVN0YXR1cyAgICAgICAgICAgICAgc3RhdHVzXzsKLSAgcHJpdmF0ZSBMaXN0ZW5lciAgICAgICAgICAgIHN0YXR1c0xpc3RlbmVyXzsKLSAgcHJpdmF0ZSBCdXR0b24gICAgICAgICAgICAgIGJ1dHRvbl87Ci0gIHByaXZhdGUgSm9iQ2hhbmdlQWRhcHRlciAgICBqb2JDaGFuZ2VBZGFwdGVyXzsKLSAgcHJpdmF0ZSBUZXh0ICAgICAgICAgICAgICAgIHNlcnZlclN0YXRlVGV4dF87Ci0gIHByaXZhdGUgUHJvZ3Jlc3NNb25pdG9yUGFydCBwcm9ncmVzc01vbml0b3JfOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgcGx1Z2luSWRfOwotICBwcml2YXRlIENvbXBvc2l0ZSAgICAgICAgICAgYnV0dG9uR3JvdXBfOwotICAgIAotICAvKkNPTlRFWFRfSUQgU1NXUDAwMDEgU3RhcnQgdGhlIHNlcnZlciBidXR0b24uICovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfU1NXUF9TRVJWRVJfQlVUVE9OID0gIlNTV1AwMDAxIjsKLSAgCi0gIHB1YmxpYyBTdGFydFNlcnZlcldpZGdldCggSVNlcnZlciBzZXJ2ZXIgKQotICB7Ci0JcGx1Z2luSWRfID0gIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSI7Ci0JCQotICAgIHNlcnZlcl8gPSBzZXJ2ZXI7Ci0gICAgCi0gICAgam9iQ2hhbmdlQWRhcHRlcl8gPSBuZXcgSm9iQ2hhbmdlQWRhcHRlcigpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGRvbmUoZmluYWwgSUpvYkNoYW5nZUV2ZW50IGV2ZW50KSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgCURpc3BsYXkuZ2V0RGVmYXVsdCgpLmFzeW5jRXhlYyggbmV3IFJ1bm5hYmxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIAkJCSAgICAgICAgICAgICAgICAgICAgICAgIHsKLQkgICAgICAgIAkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgCi0JCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLQkgICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIXByb2dyZXNzTW9uaXRvcl8uaXNEaXNwb3NlZCgpICkKLQkgICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0JCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZXJ2ZXJTdGF0ZSgpOwkKLQkJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzTW9uaXRvcl8uZG9uZSgpOwotCQkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JJZlJlcXVpcmVkKCAoU3RhcnRTZXJ2ZXJKb2IpZXZlbnQuZ2V0Sm9iKCkgKTsKLQkgICAgICAgIAkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0JCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAkJCSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotICB9Ci0gIAotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyhDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lcikgCi0gIHsKLQlzdGF0dXNMaXN0ZW5lcl8gPSBzdGF0dXNMaXN0ZW5lcjsKLQkKLQlVSVV0aWxzICAgICAgdWlVdGlscyAgICAgPSBuZXcgVUlVdGlscyggcGx1Z2luSWRfICk7Ci0JQ29tcG9zaXRlICAgIGdyb3VwICAgICAgID0gdWlVdGlscy5jcmVhdGVDb21wb3NpdGUoIHBhcmVudCwgMSApOwotCQotCVRleHQgICAgICAgICB0ZXh0MSAgICAgICAgPSB1aVV0aWxzLmNyZWF0ZVRleHQoIGdyb3VwLCBudWxsLCBudWxsLCBudWxsLCBTV1QuUkVBRF9PTkxZICk7Ci0JdGV4dDEuc2V0VGV4dCggTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NUQVJUX1NFUlZFUl9URVhUMSwgbmV3IFN0cmluZ1tdeyBzZXJ2ZXJfLmdldE5hbWUoKSB9ICkpOwotCQotCVRleHQgICAgICAgICB0ZXh0MiAgICAgICAgPSB1aVV0aWxzLmNyZWF0ZVRleHQoIGdyb3VwLCBudWxsLCBudWxsLCBudWxsLCBTV1QuUkVBRF9PTkxZICk7Ci0JdGV4dDIuc2V0VGV4dCggTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NUQVJUX1NFUlZFUl9URVhUMiwgbmV3IFN0cmluZ1tdeyBzZXJ2ZXJfLmdldE5hbWUoKSB9ICkpOwotCQotCVRleHQgICAgICAgICB0ZXh0MyAgICAgICAgPSB1aVV0aWxzLmNyZWF0ZVRleHQoIGdyb3VwLCBudWxsLCBudWxsLCBudWxsLCBTV1QuUkVBRF9PTkxZICk7Ci0JdGV4dDMuc2V0VGV4dCggTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NUQVJUX1NFUlZFUl9URVhUMywgbmV3IFN0cmluZ1tdeyBzZXJ2ZXJfLmdldE5hbWUoKSB9ICkpOwotCQotCVRleHQgICAgICAgICB0ZXh0NCAgICAgICAgPSB1aVV0aWxzLmNyZWF0ZVRleHQoIGdyb3VwLCBudWxsLCBudWxsLCBudWxsLCBTV1QuUkVBRF9PTkxZICk7Ci0JdGV4dDQuc2V0VGV4dCggTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NUQVJUX1NFUlZFUl9URVhUNCwgbmV3IFN0cmluZ1tdeyBzZXJ2ZXJfLmdldE5hbWUoKSB9ICkpOyAKLQkKLQlidXR0b25Hcm91cF8gPSB1aVV0aWxzLmNyZWF0ZUNvbXBvc2l0ZSggZ3JvdXAsIDIsLTEsIDAgKTsKLQlzZXJ2ZXJTdGF0ZVRleHRfID0gdWlVdGlscy5jcmVhdGVUZXh0KCBidXR0b25Hcm91cF8sIG51bGwsIG51bGwsIG51bGwsIFNXVC5SRUFEX09OTFkgKTsKLQlzZXJ2ZXJTdGF0ZVRleHRfLnNldExheW91dERhdGEoIG5ldyBHcmlkRGF0YSgpICk7Ci0JCQotCWJ1dHRvbl8gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oIGJ1dHRvbkdyb3VwXywgCi0JCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfU1RBUlRfU0VSVkVSX0JVVFRPTiwKLQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1NUQVJUX1NFUlZFUl9CVVRUT04sCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9TU1dQX1NFUlZFUl9CVVRUT04gKTsKLQkKLQlidXR0b25fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKCBuZXcgU2VsZWN0aW9uQWRhcHRlcigpCi0JCQkgICAgICAgICAgICAgICAgICAgICAgewotCQkJCQkJCQkJIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKCBTZWxlY3Rpb25FdmVudCBldnQgKQotCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgCSAgIHNlcnZlclN0YXRlVGV4dF8uc2V0VGV4dCggZ2V0U3RhdGVNZXNzYWdlKCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVEVYVF9TRVJWRVJfU1RBVFVTLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVEVYVF9TRVJWRVJfU1RBUlRJTkcgKSApOwotCQkJICAgICAgICAgICAgICAgICAgICAJICAgcHJvZ3Jlc3NNb25pdG9yXy5iZWdpblRhc2soIGdldFN0YXRlTWVzc2FnZSggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRFWFRfU0VSVkVSX01TRywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRFWFRfU0VSVkVSX1NUQVJUSU5HICksIElQcm9ncmVzc01vbml0b3IuVU5LTk9XTiApOwotCQkJICAgICAgICAgICAgICAgICAgICAJICAgYnV0dG9uXy5zZXRFbmFibGVkKCBmYWxzZSApOwotCQkJICAgICAgICAgICAgICAgICAgICAJICAgYnV0dG9uR3JvdXBfLnBhY2soKTsKLQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0U2VydmVySm9iKCk7Ci0JCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQkgICAgICAgICAgICAgICAgICAgICAgICAgIAotCQkJICAgICAgICAgICAgICAgICAgICAgIH0gKTsJCi0JCi0JcHJvZ3Jlc3NNb25pdG9yXyA9IG5ldyBQcm9ncmVzc01vbml0b3JQYXJ0KCBncm91cCwgbmV3IEdyaWRMYXlvdXQoKSApOwotCXByb2dyZXNzTW9uaXRvcl8uc2V0TGF5b3V0RGF0YSggbmV3IEdyaWREYXRhKCBHcmlkRGF0YS5GSUxMX0hPUklaT05UQUwgKSk7Ci0JCi0Jc2V0U2VydmVyU3RhdGUoKTsKLQlyZXR1cm4gdGhpczsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpIAotICB7Ci0JcmV0dXJuIHN0YXR1c187Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBzZXRTZXJ2ZXJTdGF0ZSgpCi0gIHsKLQlpbnQgc3RhdGUgPSBzZXJ2ZXJfLmdldFNlcnZlclN0YXRlKCk7Ci0JCi0Jc3dpdGNoKCBzdGF0ZSApCi0JewotCSAgY2FzZSBJU2VydmVyLlNUQVRFX1NUQVJURUQ6Ci0JICB7Ci0JCXN0YXR1c18gPSBTdGF0dXMuT0tfU1RBVFVTOwotCQlidXR0b25fLnNldEVuYWJsZWQoIGZhbHNlICk7Ci0JCXNlcnZlclN0YXRlVGV4dF8uc2V0VGV4dCggZ2V0U3RhdGVNZXNzYWdlKCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVEVYVF9TRVJWRVJfU1RBVFVTLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVEVYVF9TRVJWRVJfU1RBUlRFRCApICk7Ci0JCQotCSAgICBicmVhazsJICAKLQkgIH0KLQkgIAotCSAgY2FzZSBJU2VydmVyLlNUQVRFX1NUQVJUSU5HOgotCSAgewotCQlzdGF0dXNfID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoICIiICk7Ci0JCWJ1dHRvbl8uc2V0RW5hYmxlZCggZmFsc2UgKTsgIAotCQlzZXJ2ZXJTdGF0ZVRleHRfLnNldFRleHQoIGdldFN0YXRlTWVzc2FnZSggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRFWFRfU0VSVkVSX1NUQVRVUywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRFWFRfU0VSVkVSX1NUQVJUSU5HICkgKTsKLQkJcHJvZ3Jlc3NNb25pdG9yXy5iZWdpblRhc2soIGdldFN0YXRlTWVzc2FnZSggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRFWFRfU0VSVkVSX01TRywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRFWFRfU0VSVkVSX1NUQVJUSU5HICksIElQcm9ncmVzc01vbml0b3IuVU5LTk9XTiApOwotCQkKLQkJLy8gVGhlIHNlcnZlciBpcyBzdGlsbCBzdGFydGluZyBzbyB3ZSBuZWVkIHRvIHJlY29ubmVjdCB0byB0aGUgam9iCi0JCS8vIHRoYXQgaXMgc3RhcnRpbmcgaXQuCi0JCXN0YXJ0U2VydmVySm9iKCk7Ci0JICAgIGJyZWFrOwkgIAotCSAgfQotCSAgCi0JICBkZWZhdWx0OgotCSAgewotCQlzdGF0dXNfID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoICIiICk7Ci0gICAgICAgIGJ1dHRvbl8uc2V0RW5hYmxlZCggdHJ1ZSApOwotCQlzZXJ2ZXJTdGF0ZVRleHRfLnNldFRleHQoIGdldFN0YXRlTWVzc2FnZSggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRFWFRfU0VSVkVSX1NUQVRVUywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRFWFRfU0VSVkVSX1NUT1BQRUQgKSApOwotCQlicmVhazsgIAotCSAgfQotCX07Ci0JCi0Jc3RhdHVzTGlzdGVuZXJfLmhhbmRsZUV2ZW50KCBudWxsICk7Ci0JYnV0dG9uR3JvdXBfLnBhY2soKTsKLSAgfSAgCi0gIAotICBwcml2YXRlIFN0cmluZyBnZXRTdGF0ZU1lc3NhZ2UoIFN0cmluZyBtYWluS2V5LCBTdHJpbmcgc3ViS2V5ICkKLSAgewotCXJldHVybiBOTFMuYmluZCggbWFpbktleSwgbmV3IFN0cmluZ1tdeyBzdWJLZXkgfSApOwotICB9Ci0gIAotICAvLyBDb25uZWN0IHRvIGFuIGV4aXN0aW5nIHNlcnZlciB0aHJlYWQgb3RoZXJ3aXNlIHN0YXJ0IGEgbmV3IG9uZS4KLSAgcHJpdmF0ZSB2b2lkIHN0YXJ0U2VydmVySm9iKCkKLSAgewotCUlKb2JNYW5hZ2VyICAgIGpvYk1hbmFnZXIgICAgID0gUGxhdGZvcm0uZ2V0Sm9iTWFuYWdlcigpOwotCUpvYltdICAgICAgICAgIGpvYnMgICAgICAgICAgID0gam9iTWFuYWdlci5maW5kKCBTdGFydFNlcnZlckZhbWlseSApOwotCVN0YXJ0U2VydmVySm9iIHN0YXJ0U2VydmVySm9iID0gbnVsbDsKLQkKLQkvLyBUaGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBqb2Igc3RhcnRpbmcgZm9yIGRpZmZlcmVudCBzZXJ2ZXJzLgotCS8vIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBmaW5kIHRoZSBvbmUgZm9yIG91ciBzZXJ2ZXIgaWYgaXQgaXMgYXZhaWxhYmxlLgotCWZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBqb2JzLmxlbmd0aDsgaW5kZXgrKyApCi0JewotCSAgU3RhcnRTZXJ2ZXJKb2Igam9iRm91bmQgPSAoU3RhcnRTZXJ2ZXJKb2Ipam9ic1tpbmRleF07Ci0JICAKLQkgIGlmKCBqb2JGb3VuZC5nZXRTZXJ2ZXIoKSA9PSBzZXJ2ZXJfICkKLQkgIHsKLQkgICAgc3RhcnRTZXJ2ZXJKb2IgPSBqb2JGb3VuZDsKLQkgICAgYnJlYWs7Ci0JICB9Ci0JfQotCQotCWlmKCBzdGFydFNlcnZlckpvYiAhPSBudWxsICkKLQl7Ci0JICBzeW5jaHJvbml6ZWQoIFN0YXJ0U2VydmVyRmFtaWx5ICkgCi0JICB7Ci0gICAgICAgIElTdGF0dXMgc3RhdHVzID0gc3RhcnRTZXJ2ZXJKb2IuZ2V0U3RhdHVzKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBXZSBhcmUgdXNpbmcgc3RhdHVzIHRvIGRldGVybWluZSBpZiB0aGUgam9iIGhhcyBjb21wbGV0ZWQgb3Igbm90LgotICAgICAgICAvLyBOb3JtYWxseSwgd2Ugd291bGQgbm90IGdldCBoZXJlIGlmIHRoZSBqb2IgaGFkIGFscmVhZHkgY29tcGxldGVkLAotICAgICAgICAvLyBidXQgdGhlcmUgaXMgYSBzbGltIHdpbmRvdyB3aGVyZSB0aGUgam9iIG1hbmFnZXIgZ2l2ZXMgdXMgdGhlIGpvYgotICAgICAgICAvLyBhbmQgdGhlbiBpdCBpbW1lZGlhdGVseSBjb21wbGV0ZXMuCi0gICAgICAgIGlmKCBzdGF0dXMgPT0gbnVsbCApCi0gICAgICAgIHsgICAgICAgIAotICAgICAgICAgIC8vIFRoZSBqb2IgaGFkIG5vdCBjb21wbGV0ZWQgeWV0IHNvIHdlIHdpbGwgYWRkIGEgam9iIGNoYW5nZSBsaXN0ZW5lci4KLSAgICAgICAgICAvLyBXZSBhcmUgYWRkaW5nIHRoZSBqb2IgbGlzdGVuZXIgaGVyZSBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gYXNzdW1lCi0gICAgICAgICAgLy8gdGhhdCB0aGlzIGluc3RhbmNlIG9mIHRoaXMgd2lkZ2V0IGlzIHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBpbnN0YW5jZS4KLSAgICAgICAgICAvLyBJZiBzdGFydFNlcnZlckpvYiBhbHJlYWR5IGhhcyAiam9iQ2hhbmdlQWRhcHRlcl8iIGFkZGVkIHRvIGl0IHRoaXMKLSAgICAgICAgICAvLyBtZXRob2QgY2FsbCB3aWxsIG5vdCBoYXZlIGFuIGVmZmVjdC4oV2hpY2ggaXMgd2hhdCB3ZSB3YW50LikKLSAgICAgICAgICBzdGFydFNlcnZlckpvYi5hZGRKb2JDaGFuZ2VMaXN0ZW5lciggam9iQ2hhbmdlQWRhcHRlcl8gKTsgCi0gICAgICAgICAgCi0gICAgICAgICAgLy8gTm90ZTogdGhpcyBqb2Igd2FzIHJlcG9ydGluZyBwcm9ncmVzcyB0byBkaWZmZXJlbnQgcHJvZ3Jlc3NNb25pdG9yXwotICAgICAgICAgIC8vICAgICAgIGNvbnRyb2wuICBXZSBuZWVkIHRvIHRlbGwgdGhlIGpvYiB0aGF0IGl0IHNob3VsZCByZXBvcnQgcHJvZ3Jlc3MKLSAgICAgICAgICAvLyAgICAgICB0byBvdXIgbmV3IHByb2dyZXNzTW9uaXRvcl8gY29udHJvbCBvbiB0aGlzIHdpemFyZCBwYWdlLgotICAgICAgICAgIFByb2dyZXNzTW9uaXRvcldyYXBwZXIgbW9uaXRvciA9IChQcm9ncmVzc01vbml0b3JXcmFwcGVyKXN0YXJ0U2VydmVySm9iLmdldE1vbml0b3IoKTsKLSAgICAgICAgICBtb25pdG9yLnNldE1vbml0b3IoIHByb2dyZXNzTW9uaXRvcl8gKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBUaGUgam9iIGNvbXBsZXRlZCBiZWZvcmUgd2UgaGFkIGEgY2hhbmNlIHRvIGFkZCB0aGUgam9iIGNoYW5nZSBsaXN0ZW5lcgotICAgICAgICAgIC8vIFRoZXJlZm9yZSwgd2Ugd2lsbCBqdXN0IGNhbGwgam9iQ2hhbmdlQWRhcHRlcl8gZGlyZWN0bHkgdG8gbm90aWZ5Ci0gICAgICAgICAgLy8gdGhlIFVJIHRoYXQgdGhlIGpvYiBoYXMgY29tcGxldGVkLgotICAgICAgICAgIGpvYkNoYW5nZUFkYXB0ZXJfLmRvbmUoIG51bGwgKTsKLSAgICAgICAgfQotCSAgfQotCX0KLQllbHNlCi0JewotCSAgc3RhcnRTZXJ2ZXJKb2IgPSBuZXcgU3RhcnRTZXJ2ZXJKb2IoKTsJCi0JICBzdGFydFNlcnZlckpvYi5hZGRKb2JDaGFuZ2VMaXN0ZW5lciggam9iQ2hhbmdlQWRhcHRlcl8gKTsKLQkgIHN0YXJ0U2VydmVySm9iLnNjaGVkdWxlKCk7Ci0JfQotICB9Ci0gICAgIAotICBwcml2YXRlIHZvaWQgcmVwb3J0RXJyb3JJZlJlcXVpcmVkKCBTdGFydFNlcnZlckpvYiBzZXJ2ZXJKb2IgKQotICB7Ci0JICBJU3RhdHVzIHN0YXR1cyA9IHNlcnZlckpvYi5nZXRTdGF0dXMoKTsKLQkKLQkgIGlmKCBzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IgKQotCSAgewotCSAgICBTaGVsbCAgICAgICAgICAgICAgICBzaGVsbCAgID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKS5nZXRTaGVsbCgpOwotICAgICAgRWNsaXBzZVN0YXR1c0hhbmRsZXIgaGFuZGxlciA9IG5ldyBFY2xpcHNlU3RhdHVzSGFuZGxlciggc2hlbGwgKTsKLSAgICAgIAotICAgICAgaGFuZGxlci5yZXBvcnRFcnJvciggc3RhdHVzICk7Ci0JICB9Ci0gIH0KLSAgCi0gIGZpbmFsIHByaXZhdGUgc3RhdGljIFN0cmluZyAgU3RhcnRTZXJ2ZXJGYW1pbHkgPSAiU3RhcnRTZXJ2ZXJGYW1pbHkiOwotICAKLSAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHN0YXJ0IHVwIHRoZSBzZXJ2ZXIgaW4gYW4gRWNsaXBzZSBqb2IuCi0gIHByaXZhdGUgY2xhc3MgU3RhcnRTZXJ2ZXJKb2IgZXh0ZW5kcyBKb2IKLSAgewotCSAgcHJpdmF0ZSBJU3RhdHVzICAgICAgICAgICAgICAgIHN0YXR1c18gPSBudWxsOwotCSAgcHJpdmF0ZSBQcm9ncmVzc01vbml0b3JXcmFwcGVyIGVudk1vbml0b3JfOwotCQotCSAgcHVibGljIFN0YXJ0U2VydmVySm9iKCkKLQkgIHsKLQkgICAgc3VwZXIoICJTdGFydFNlcnZlckpvYiIgKTsKLQkgIAotCSAgICBlbnZNb25pdG9yXyA9IG5ldyBQcm9ncmVzc01vbml0b3JXcmFwcGVyKCBwcm9ncmVzc01vbml0b3JfICk7Ci0JICB9Ci0JCi0JICBwdWJsaWMgSVNlcnZlciBnZXRTZXJ2ZXIoKQotCSAgewotCSAgICByZXR1cm4gc2VydmVyXzsJCi0JICB9Ci0JCi0JICBwdWJsaWMgUHJvZ3Jlc3NNb25pdG9yV3JhcHBlciBnZXRNb25pdG9yKCkKLQkgIHsKLQkgICAgcmV0dXJuIGVudk1vbml0b3JfOwkKLQkgIH0KLQkKLQkgIHB1YmxpYyBib29sZWFuIGJlbG9uZ3NUbyhPYmplY3QgZmFtaWx5KSAKLQkgIHsKLQkgICAgcmV0dXJuIGZhbWlseSA9PSBTdGFydFNlcnZlckZhbWlseTsKLQkgIH0KLQotCSAgcHJvdGVjdGVkIElTdGF0dXMgcnVuKElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgCi0JICB7Ci0JICAgIEJhc2VTdGF0dXNIYW5kbGVyICAgICAgICBoYW5kbGVyICAgICAgICAgPSBuZXcgQmFzZVN0YXR1c0hhbmRsZXIoKTsKLQkgICAgVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dCA9IG5ldyBUcmFuc2llbnRSZXNvdXJjZUNvbnRleHQoKTsKLQkgICAgRWNsaXBzZUVudmlyb25tZW50ICAgICAgIGVudmlyb25tZW50ICAgICA9IG5ldyBFY2xpcHNlRW52aXJvbm1lbnQoIG51bGwscmVzb3VyY2VDb250ZXh0LCBoYW5kbGVyICk7Ci0JICAgIFN0YXJ0U2VydmVyQ29tbWFuZCAgICAgICBzZXJ2ZXJDb21tYW5kICAgPSBuZXcgU3RhcnRTZXJ2ZXJDb21tYW5kKCBmYWxzZSApOwotCSAgICAKLQkgICAgc2VydmVyQ29tbWFuZC5zZXRTZXJ2ZXJJbnN0YW5jZUlkKCBzZXJ2ZXJfLmdldElkKCkgKTsKLSAgICAgIHNlcnZlckNvbW1hbmQuc2V0RW52aXJvbm1lbnQoIGVudmlyb25tZW50ICk7Ci0JICAgIAotCSAgICB0cnkKLQkgICAgewotCSAgICAgIHNldFN0YXR1cyggc2VydmVyQ29tbWFuZC5leGVjdXRlKCBlbnZNb25pdG9yXywgbnVsbCApICk7CQkKLQkgICAgfQotCSAgICBjYXRjaCggVGhyb3dhYmxlIGV4YyApCi0JICAgIHsKLQkJICAgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLQkgICAgICBzZXRTdGF0dXMoIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBleGMgKSApOwotCSAgICB9Ci0JICAJCi0JICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCSAgfQotCQotCSAgLy8gQ2FsbHMgdG8gdGhpcyBtZXRob2QgbmVlZCB0byBmaXJzdCBzeW5jaHJvbml6ZSBvbiB0aGUKLQkgIC8vIFN0YXJ0U2VydmVyRmFtaWx5IG9iamVjdC4KLQkgIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpCi0JICB7Ci0JICAgIHJldHVybiBzdGF0dXNfOwotCSAgfQotCQotCSAgcHJpdmF0ZSB2b2lkIHNldFN0YXR1cyggSVN0YXR1cyBzdGF0dXMgKQotCSAgewotCSAgICBzeW5jaHJvbml6ZWQoIFN0YXJ0U2VydmVyRmFtaWx5ICkgCi0JICAgIHsKLSAgICAgICAgc3RhdHVzXyA9IHN0YXR1czsKLQkgICAgfQotCSAgfQotICB9Ci0gICAgCi0gIHByaXZhdGUgY2xhc3MgUHJvZ3Jlc3NNb25pdG9yV3JhcHBlciBpbXBsZW1lbnRzIElQcm9ncmVzc01vbml0b3IKLSAgewotICAgIHByaXZhdGUgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yXyA9IG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCk7Ci0gIAkgIAkKLSAgICBwdWJsaWMgUHJvZ3Jlc3NNb25pdG9yV3JhcHBlciggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLSAgICB7Ci0gICAgICBtb25pdG9yXyA9IG1vbml0b3I7ICAKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHZvaWQgc2V0TW9uaXRvciggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLSAgICB7Ci0gICAgICBtb25pdG9yXyA9IG1vbml0b3I7CQotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgdm9pZCBiZWdpblRhc2soZmluYWwgU3RyaW5nIG5hbWUsIGZpbmFsIGludCB0b3RhbFdvcmspIAotICAgIHsKLSAgICAgIERpc3BsYXkuZ2V0RGVmYXVsdCgpLmFzeW5jRXhlYyggbmV3IFJ1bm5hYmxlKCkKLSAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIXByb2dyZXNzTW9uaXRvcl8uaXNEaXNwb3NlZCgpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICBtb25pdG9yXy5iZWdpblRhc2soIG5hbWUsIHRvdGFsV29yayApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZG9uZSgpIAotICAgIHsKLSAgICAgIERpc3BsYXkuZ2V0RGVmYXVsdCgpLmFzeW5jRXhlYyggbmV3IFJ1bm5hYmxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICFwcm9ncmVzc01vbml0b3JfLmlzRGlzcG9zZWQoKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uaXRvcl8uZG9uZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGludGVybmFsV29ya2VkKGZpbmFsIGRvdWJsZSB3b3JrKSAKLSAgICB7Ci0gICAgICBEaXNwbGF5LmdldERlZmF1bHQoKS5hc3luY0V4ZWMoIG5ldyBSdW5uYWJsZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhcHJvZ3Jlc3NNb25pdG9yXy5pc0Rpc3Bvc2VkKCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbml0b3JfLmludGVybmFsV29ya2VkKCB3b3JrICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaXNDYW5jZWxlZCgpIAotICAgIHsKLSAgICAgIHJldHVybiBwcm9ncmVzc01vbml0b3JfLmlzRGlzcG9zZWQoKSA/IGZhbHNlIDogbW9uaXRvcl8uaXNDYW5jZWxlZCgpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldENhbmNlbGVkKGJvb2xlYW4gdmFsdWUpIAotICAgIHsKLSAgICAgIGlmKCAhcHJvZ3Jlc3NNb25pdG9yXy5pc0Rpc3Bvc2VkKCkgKQotICAgICAgewotICAJICAgIG1vbml0b3JfLnNldENhbmNlbGVkKCB2YWx1ZSApOwotICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRhc2tOYW1lKGZpbmFsIFN0cmluZyBuYW1lKSAKLSAgICB7Ci0gIAkgIERpc3BsYXkuZ2V0RGVmYXVsdCgpLmFzeW5jRXhlYyggbmV3IFJ1bm5hYmxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICFwcm9ncmVzc01vbml0b3JfLmlzRGlzcG9zZWQoKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgbW9uaXRvcl8uc2V0VGFza05hbWUoIG5hbWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzdWJUYXNrKCBmaW5hbCBTdHJpbmcgbmFtZSkgCi0gICAgewotICAJICBEaXNwbGF5LmdldERlZmF1bHQoKS5hc3luY0V4ZWMoIG5ldyBSdW5uYWJsZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhcHJvZ3Jlc3NNb25pdG9yXy5pc0Rpc3Bvc2VkKCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIG1vbml0b3JfLnN1YlRhc2soIG5hbWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB3b3JrZWQoZmluYWwgaW50IHdvcmspIAotICAgIHsKLSAgICAgIERpc3BsYXkuZ2V0RGVmYXVsdCgpLmFzeW5jRXhlYyggbmV3IFJ1bm5hYmxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICFwcm9ncmVzc01vbml0b3JfLmlzRGlzcG9zZWQoKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uaXRvcl8ud29ya2VkKCB3b3JrICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQWJzdHJhY3RIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDbWQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9BYnN0cmFjdEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NtZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTJmNmFiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9BYnN0cmFjdEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NtZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MDQgMTM0OTEzICAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1ICAgICAgIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLQotLyoqCi0gKiBBYnN0cmFjdEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NtZAotICoKLSAqIEluaXRpYWxpemUgYW5kIGxvYWQgdGhlIGhhbmRsZXJzIGRhdGEKLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ21kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0gIAotICBwcml2YXRlIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGluaXRpYWxTZWxlY3Rpb25fOyAKLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIAotICAgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGluaXRpYWxTZWxlY3Rpb25fOwotICAgIGlmIChzZWxlY3Rpb24gPT0gbnVsbCkgewotICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfVEFTS19FWENFUFRFRCApOwotICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgcmV0dXJuIHN0YXR1czsgICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgCi0gICAgcmV0dXJuIHN0YXR1czsKLSAgICAKLSAgfQotICAKLQotICBwdWJsaWMgTGlzdCBnZXRDbGllbnRIYW5kbGVycygpewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0U2VsZWN0aW9uKXsKLSAgICB0aGlzLmluaXRpYWxTZWxlY3Rpb25fID0gaW5pdFNlbGVjdGlvbjsKLSAgfQotICAKLSAgcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldEluaXRpYWxTZWxlY3Rpb24oKXsKLSAgICByZXR1cm4gdGhpcy5pbml0aWFsU2VsZWN0aW9uXzsKLSAgfQotICAKLSAgcHJvdGVjdGVkIElSZXNvdXJjZSBnZXRSZXNvdXJjZUZyb21Jbml0aWFsU2VsZWN0aW9uKCkKLSAgewotICAgIGlmIChpbml0aWFsU2VsZWN0aW9uXyAhPSBudWxsICYmIGluaXRpYWxTZWxlY3Rpb25fLnNpemUoKSA9PSAxKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBpbml0aWFsU2VsZWN0aW9uXy5nZXRGaXJzdEVsZW1lbnQoKTsKLSAgICAgIGlmIChvYmogIT0gbnVsbCkgCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7IAotICAgICAgICAgIElSZXNvdXJjZSByZXNvdXJjZSA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VGcm9tU2VsZWN0aW9uKG9iaik7Ci0gICAgICAgICAgcmV0dXJuIHJlc291cmNlOwotICAgICAgICB9IGNhdGNoKENvcmVFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9ICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0gICAKLSAKLSAgcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKXsKLSAgICAKLSAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBnZXRSZXNvdXJjZUZyb21Jbml0aWFsU2VsZWN0aW9uKCk7Ci0JaWYgKHJlc291cmNlICE9IG51bGwpCi0JewotCSAgcmV0dXJuIFJlc291cmNlVXRpbHMuZ2V0UHJvamVjdE9mKCByZXNvdXJjZS5nZXRGdWxsUGF0aCgpICk7Ci0JfQotCSAKLQlyZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDb21wb25lbnROYW1lKCl7Ci0gICAgSVJlc291cmNlIHJlc291cmNlID0gZ2V0UmVzb3VyY2VGcm9tSW5pdGlhbFNlbGVjdGlvbigpOwotICAgIGlmIChyZXNvdXJjZSE9bnVsbCkgewotICAgICAgSVBhdGggYWJzb2x1dGVQYXRoID0gcmVzb3VyY2UuZ2V0RnVsbFBhdGgoKTsKLSAgICAgIGlmIChhYnNvbHV0ZVBhdGguaXNBYnNvbHV0ZSgpKSB7Ci0gICAgICAgIHJldHVybiBhYnNvbHV0ZVBhdGguc2VnbWVudCgxKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0vLyAgcHVibGljIFdlYlNlcnZpY2VFZGl0TW9kZWwgZ2V0V2ViU2VydmljZUVkaXRNb2RlbCgpIHsKLS8vICAgIFdlYlNlcnZpY2VzTWFuYWdlciB3c20gPSBuZXcgV2ViU2VydmljZXNNYW5hZ2VyKCk7Ci0vLyAgICBJUHJvamVjdCBwcm9qZWN0ID0gZ2V0UHJvamVjdCgpOwotLy8gICAgcmV0dXJuIHdzbS5nZXRXU0VkaXRNb2RlbChwcm9qZWN0KTsgICAgCi0vLyAgfQotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9BYnN0cmFjdE9iamVjdFNlbGVjdGlvbkxhdW5jaGFibGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9BYnN0cmFjdE9iamVjdFNlbGVjdGlvbkxhdW5jaGFibGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMwMGNjYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQWJzdHJhY3RPYmplY3RTZWxlY3Rpb25MYXVuY2hhYmxlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjAgICAxMzU5MTIgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0T2JqZWN0U2VsZWN0aW9uTGF1bmNoYWJsZSBpbXBsZW1lbnRzIElPYmplY3RTZWxlY3Rpb25MYXVuY2hhYmxlIHsKLQotCXB1YmxpYyBpbnQgbGF1bmNoKFNoZWxsIHNoZWxsKSB7CQkKLQkJcmV0dXJuIC0xOwotCX0KLQkKLQlwdWJsaWMgSVN0YXR1cyB2YWxpZGF0ZVNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3RTZWxlY3Rpb24pIHsKLQkJIC8vICBzdWJjbGFzcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QKLQkJIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQkKLQlwdWJsaWMgSVN0cnVjdHVyZWRTZWxlY3Rpb24gZ2V0T2JqZWN0U2VsZWN0aW9uKCkgewotCQkgLy8gIHN1YmNsYXNzIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZAotCQlyZXR1cm4gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oKTsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKSB7Ci0JCSAvLyAgc3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kCi0JfQkKLQkKLQlwdWJsaWMgU3RyaW5nIGdldE9iamVjdFNlbGVjdGlvbkRpc3BsYXlhYmxlU3RyaW5nKCkKLQl7Ci0JCSAvLyAgc3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kCi0JCXJldHVybiAiIjsKLQl9Ci0JCi0JcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoU3RyaW5nIHMpIHsKLQkJLy8gc3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kCi0JCXJldHVybiB0cnVlOwotCX0gIAotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQWRkSGFuZGxlckRpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL0FkZEhhbmRsZXJEaWFsb2cuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ1YWEzNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQWRkSGFuZGxlckRpYWxvZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjY1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQwNCAxMzQ5MTMgICBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUgICAgICAgCi0gKiAyMDA2MDUyOSAgIDE0MzUxOCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLlByb2dyZXNzTW9uaXRvckRpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb24uVUlVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuZGlhbG9nLkRpYWxvZ1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25BZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbWJvOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci0KLQotCi1wdWJsaWMgY2xhc3MgQWRkSGFuZGxlckRpYWxvZyBleHRlbmRzIERpYWxvZyBpbXBsZW1lbnRzIExpc3RlbmVyIHsKLQotICBwcml2YXRlIFN0cmluZyBwbHVnaW5JZF8gPSAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIjsKLQotICBwcml2YXRlIGJvb2xlYW4gdmFsaWRhdGVPbl87Ci0gIHByaXZhdGUgYm9vbGVhbiBpc0NsaWVudF87Ci0gIHByaXZhdGUgYm9vbGVhbiBpc011bHRpcGxlU2VydmljZXNfOwotICBwcml2YXRlIFN0cmluZyBjbGFzc05hbWU7Ci0gIHByaXZhdGUgU3RyaW5nIG5hbWU7Ci0gIHByaXZhdGUgU3RyaW5nIHNlbGVjdGVkUG9ydE5hbWU7Ci0gIAotICBwcml2YXRlIFRleHQgY2xhc3NOYW1lVGV4dDsKLSAgcHJpdmF0ZSBUZXh0IG5hbWVUZXh0OwotICBwcml2YXRlIENvbWJvIHBvcnROYW1lQ29tYm87Ci0gIAotICAvLyAtLS0tVE9PTFRJUFMgU2VjdGlvbi0tLS0KLSAgLyogQ09OVEVYVF9JRCBBSERMMDAwMSBmb3IgdGhlIEhhbmRsZXIgQ29uZmlnIFBhZ2UgKi8KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSU5GT1BPUF9URVhUX0hBTkRMRVJfTkFNRSAgPSAiQUhETDAwMDEiOyAvLyROT04tTkxTLTEkCi0gIAotICAvKiBDT05URVhUX0lEIEFIREwwMDAyIGZvciB0aGUgSGFuZGxlciBDb25maWcgUGFnZSAqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1RFWFRfSEFORExFUl9DTEFTUyAgPSAiQUhETDAwMDIiOyAvLyROT04tTkxTLTEkCi0gIAotICAvKiBDT05URVhUX0lEIEFIREwwMDAxIGZvciB0aGUgSGFuZGxlciBDb25maWcgUGFnZSAqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1RFWFRfSEFORExFUl9QT1JUICA9ICJBSERMMDAwMyI7IC8vJE5PTi1OTFMtMSQKLSAgICAKLSAgcHJpdmF0ZSBCdXR0b24gYmVhbkNsYXNzQnJvd3NlQnV0dG9uXzsKLSAgLypDT05URVhUX0lEIFBCQ0wwMDAzIGZvciB0aGUgQmVhbiBDbGFzcyBCcm93c2UgYnV0dG9uIG9mIHRoZSBCZWFuIFNlbGVjdGlvbiBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QQkNMX0JVVFRPTl9CRUFOX0NMQVNTX0JST1dTRSA9ICJQQkNMMDAwMyI7Ci0gIAotICBwdWJsaWMgQWRkSGFuZGxlckRpYWxvZyggU2hlbGwgc2hlbGwsIGJvb2xlYW4gaXNDbGllbnRIYW5kbGVyKQotICB7Ci0gICAgc3VwZXIoc2hlbGwpOwotICAgIHNldFNoZWxsU3R5bGUoZ2V0U2hlbGxTdHlsZSgpIHwgU1dULlJFU0laRSk7Ci0gICAgaXNDbGllbnRfID0gaXNDbGllbnRIYW5kbGVyOwotICB9Ci0KLSAgcHJvdGVjdGVkIENvbnRyb2wgY3JlYXRlQ29udGVudHMoQ29tcG9zaXRlIHBhcmVudCkgewotICAgIENvbXBvc2l0ZSBjb21wID0gKENvbXBvc2l0ZSkgc3VwZXIuY3JlYXRlQ29udGVudHMocGFyZW50KTsKLSAgICBwYXJlbnQuZ2V0U2hlbGwoKS5wYWNrKCk7Ci0gICAgcmV0dXJuIGNvbXA7Ci0gIH0KLQotICBwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVEaWFsb2dBcmVhKENvbXBvc2l0ZSBwYXJlbnQpIHsKLSAgICB2YWxpZGF0ZU9uXyA9IGZhbHNlOwotICAgIFVJVXRpbHMgdWlVdGlscyA9IG5ldyBVSVV0aWxzKHBsdWdpbklkXyk7Ci0gICAgCi0gICAgU2hlbGwgdGhpc1NoZWxsID0gcGFyZW50LmdldFNoZWxsKCk7Ci0gICAgaWYgKHRoaXNTaGVsbCA9PSBudWxsKSB7Ci0gICAgICB0aGlzU2hlbGwgPSBjcmVhdGVTaGVsbCgpOwotICAgIH0KLSAgICB0aGlzU2hlbGwuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuRElBTE9HX1RJVExFX1dTX0FERF9IQU5ETEVSKTsKLSAgICAKLSAgICBDb21wb3NpdGUgY29tcG9zaXRlID0gKENvbXBvc2l0ZSkgc3VwZXIuY3JlYXRlRGlhbG9nQXJlYShwYXJlbnQpOyAgICAKLSAgICAKLSAgICBDb21wb3NpdGUgc291cmNlTG9jYXRpb25Db21wID0gdWlVdGlscy5jcmVhdGVDb21wb3NpdGUoY29tcG9zaXRlLCAzKTsKLSAgICAKLSAgICBjbGFzc05hbWVUZXh0ID0gdWlVdGlscy5jcmVhdGVUZXh0KHNvdXJjZUxvY2F0aW9uQ29tcCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1RFWFRfSEFORExFUl9DTEFTUywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfVEVYVF9IQU5ETEVSX0NMQVNTLCBJTkZPUE9QX1RFWFRfSEFORExFUl9DTEFTUywgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIpOwotICAgIGNsYXNzTmFtZVRleHQuYWRkTGlzdGVuZXIoU1dULk1vZGlmeSx0aGlzKTsKLSAgICAKLSAgICBiZWFuQ2xhc3NCcm93c2VCdXR0b25fID0gdWlVdGlscy5jcmVhdGVQdXNoQnV0dG9uKCBzb3VyY2VMb2NhdGlvbkNvbXAsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5CVVRUT05fQlJPV1NFX0NMQVNTRVMsCi0gICAgCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QQkNMX0JVVFRPTl9CRUFOX0NMQVNTX0JST1dTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZPUE9QX1BCQ0xfQlVUVE9OX0JFQU5fQ0xBU1NfQlJPV1NFICk7Ci0gICAgYmVhbkNsYXNzQnJvd3NlQnV0dG9uXy5hZGRTZWxlY3Rpb25MaXN0ZW5lciggbmV3IFNlbGVjdGlvbkFkYXB0ZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoIFNlbGVjdGlvbkV2ZW50IGV2dCApCi0gICAgICAgICAgewotICAgICAgICAgICAgaGFuZGxlQnJvd3NlQ2xhc3NlcygpOyAgCi0gICAgICAgICAgfQotICAgICAgICB9ICk7Ci0gICAgCi0gICAgbmFtZVRleHQgPSB1aVV0aWxzLmNyZWF0ZVRleHQoc291cmNlTG9jYXRpb25Db21wLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfVEVYVF9IQU5ETEVSX05BTUUsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1RFWFRfSEFORExFUl9OQU1FLCBJTkZPUE9QX1RFWFRfSEFORExFUl9OQU1FLCBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiApOwotICAgIG5hbWVUZXh0LmFkZExpc3RlbmVyKFNXVC5Nb2RpZnksIHRoaXMpOwotICAgIAotICAgIC8vIGR1bW15IGxhYmVsIGZvciBjb2x1bW4gMy4KLSAgICBuZXcgTGFiZWwoIHNvdXJjZUxvY2F0aW9uQ29tcCwgU1dULk5PTkUgKTsKLSAgICAKLSAgICBpZiAoIWlzQ2xpZW50XyAmJiAhaXNNdWx0aXBsZVNlcnZpY2VzXyl7Ci0gICAgICBwb3J0TmFtZUNvbWJvID0gdWlVdGlscy5jcmVhdGVDb21ibyhzb3VyY2VMb2NhdGlvbkNvbXAsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9URVhUX0hBTkRMRVJfUE9SVCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfVEVYVF9IQU5ETEVSX1BPUlQsIElORk9QT1BfVEVYVF9IQU5ETEVSX1BPUlQsIFNXVC5TSU5HTEUgfCBTV1QuQk9SREVSICk7Ci0gICAgICBwb3J0TmFtZUNvbWJvLmFkZExpc3RlbmVyKFNXVC5Nb2RpZnksIHRoaXMpOwotICAgICAgCi0gICAgICAvLyBkdW1teSBsYWJlbCBmb3IgY29sdW1uIDMuCi0gICAgICBuZXcgTGFiZWwoIHNvdXJjZUxvY2F0aW9uQ29tcCwgU1dULk5PTkUgKTsKLSAgICB9Ci0gICAgdmFsaWRhdGVPbl8gPSB0cnVlOwotICAgcmV0dXJuIGNvbXBvc2l0ZTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZUJyb3dzZUNsYXNzZXMoKQotICB7Ci0gICAgU2hlbGwgc2hlbGwgPSBnZXRTaGVsbCgpOwotICAgIElUeXBlIGl0eXBlID0gRGlhbG9nVXRpbHMuYnJvd3NlQ2xhc3Nlc0FzSVR5cGUoc2hlbGwsIFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdHMoKSwgbmV3IFByb2dyZXNzTW9uaXRvckRpYWxvZyhzaGVsbCkpOwotICAgIAotICAgIGlmKCBpdHlwZSAhPSBudWxsICkKLSAgICB7Ci0gICAgICBjbGFzc05hbWVUZXh0LnNldFRleHQoaXR5cGUuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCkpOyAgICAgIAotICAgIH0KLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyI2hhbmRsZUV2ZW50KG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkV2ZW50KQotICAgKi8KLSAgcHVibGljIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQgZXZlbnQpIHsKLSAgICBpZiAoIXZhbGlkYXRlT25fKQotICAgICAgcmV0dXJuOwotICAgIGlmIChjbGFzc05hbWVUZXh0ID09IGV2ZW50LndpZGdldCkgewotICAgICAgaGFuZGxlQ2xhc3NOYW1lVGV4dEV2ZW50KCk7Ci0gICAgICB2YWxpZGF0ZVRleHRGaWVsZEVudHJpZXMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG5hbWVUZXh0ID09IGV2ZW50LndpZGdldCkgewotICAgICAgaGFuZGxlTmFtZVRleHRFdmVudCgpOwotICAgICAgdmFsaWRhdGVUZXh0RmllbGRFbnRyaWVzKCk7ICAgICAgCi0gICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChwb3J0TmFtZUNvbWJvID09IGV2ZW50LndpZGdldCkgewotICAgICAgaGFuZGxlUG9ydE5hbWVUZXh0RXZlbnQoKTsKLSAgICAgIHZhbGlkYXRlVGV4dEZpZWxkRW50cmllcygpOyAgICAgIAotICAgICAgcmV0dXJuOwotICAgIH0gICAgCi0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlQ2xhc3NOYW1lVGV4dEV2ZW50KCl7Ci0gICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lVGV4dC5nZXRUZXh0KCk7Ci0gICAgaWYgKGNsYXNzTmFtZS5sYXN0SW5kZXhPZigiLmphdmEiKSAhPSAtMSl7Ci0gICAgICBuYW1lVGV4dC5zZXRUZXh0KGNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgY2xhc3NOYW1lLmxhc3RJbmRleE9mKCIuamF2YSIpKSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgbmFtZVRleHQuc2V0VGV4dChjbGFzc05hbWUpOwotICAgIH0KLSAgICAKLSAgICBpZiAoY2xhc3NOYW1lLmxhc3RJbmRleE9mKCIuIikgIT0gLTEpewotICAgICAgbmFtZVRleHQuc2V0VGV4dChjbGFzc05hbWUuc3Vic3RyaW5nKGNsYXNzTmFtZS5sYXN0SW5kZXhPZigiLiIpKzEsIGNsYXNzTmFtZS5sZW5ndGgoKSkpOwotICAgIH0KLSAgICBuYW1lID0gbmFtZVRleHQuZ2V0VGV4dCgpOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgaGFuZGxlTmFtZVRleHRFdmVudCgpIHsKLSAgIG5hbWUgPSBuYW1lVGV4dC5nZXRUZXh0KCk7IAotCi0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBoYW5kbGVQb3J0TmFtZVRleHRFdmVudCgpewotICAgIHNlbGVjdGVkUG9ydE5hbWUgPSBwb3J0TmFtZUNvbWJvLmdldFRleHQoKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGRpc2FibGVPS0J1dHRvbigpIHsKLSAgICBpZiAoZ2V0QnV0dG9uKDApICE9IG51bGwpCi0gICAgICBnZXRCdXR0b24oMCkuc2V0RW5hYmxlZChmYWxzZSk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgZW5hYmxlT0tCdXR0b24oKSB7Ci0gICAgaWYgKGdldEJ1dHRvbigwKSAhPSBudWxsKQotICAgICAgZ2V0QnV0dG9uKDApLnNldEVuYWJsZWQodHJ1ZSk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCB2YWxpZGF0ZVRleHRGaWVsZEVudHJpZXMoKXsKLSAgCWlmIChjbGFzc05hbWVUZXh0LmdldFRleHQoKS5lcXVhbHMoIiIpKXsKLSAgCQlkaXNhYmxlT0tCdXR0b24oKTsKLSAgCQlyZXR1cm47Ci0gIAl9Ci0gIAlpZiAobmFtZVRleHQuZ2V0VGV4dCgpLmVxdWFscygiIikpewotICAJCWRpc2FibGVPS0J1dHRvbigpOwotICAJCXJldHVybjsKLSAgCX0KLSAgCWlmICghaXNDbGllbnRfICYmICFpc011bHRpcGxlU2VydmljZXNfKXsKLSAgCQlpZiAocG9ydE5hbWVDb21iby5nZXRUZXh0KCkhPW51bGwgJiYgcG9ydE5hbWVDb21iby5nZXRUZXh0KCkuZXF1YWxzKCIiKSl7Ci0gIAkJCWRpc2FibGVPS0J1dHRvbigpOwotICAJCQlyZXR1cm47Ci0gIAkJfQotICAJCWVsc2UgaWYgKHBvcnROYW1lQ29tYm8uZ2V0VGV4dCgpPT1udWxsKSB7Ci0gIAkJCWRpc2FibGVPS0J1dHRvbigpOwotICAJCQlyZXR1cm47Ci0gIAkJfQotICAJfQotICAJCi0gIAllbmFibGVPS0J1dHRvbigpOwotICAJCi0JCi0gIH0KLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGNsYXNzTmFtZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xhc3NOYW1lKCkgewotICAgIGlmIChjbGFzc05hbWUubGFzdEluZGV4T2YoIi5qYXZhIikgIT0gLTEpewotICAgICAgcmV0dXJuIGNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgY2xhc3NOYW1lLmxhc3RJbmRleE9mKCIuamF2YSIpKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gY2xhc3NOYW1lOwotICAgIH0KLSAgfQotICAvKioKLSAgICogQHBhcmFtIGNsYXNzTmFtZSBUaGUgY2xhc3NOYW1lIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENsYXNzTmFtZShTdHJpbmcgY2xhc3NOYW1lKSB7Ci0gICAgdGhpcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLSAgICByZXR1cm4gbmFtZTsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewotICAgIHRoaXMubmFtZSA9IG5hbWU7Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgcG9ydE5hbWUuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFBvcnROYW1lKCkgewotICAgIHJldHVybiBzZWxlY3RlZFBvcnROYW1lOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gcG9ydE5hbWUgVGhlIHBvcnROYW1lIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFBvcnROYW1lcyhTdHJpbmdbXSBwb3J0TmFtZXMpIHsKLSAgICBwb3J0TmFtZUNvbWJvLnNldEl0ZW1zKHBvcnROYW1lcyk7Ci0gICAgcG9ydE5hbWVDb21iby5zZWxlY3QoMCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldElzTXVsdGlwbGVTZXJ2aWNlcyhib29sZWFuIGlzTXVsdGlwbGVTZXJ2aWNlcyl7Ci0gICAgdGhpcy5pc011bHRpcGxlU2VydmljZXNfID0gaXNNdWx0aXBsZVNlcnZpY2VzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQ2hlY2tXU0RMVmFsaWRhdGlvbkNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DaGVja1dTRExWYWxpZGF0aW9uQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTYyZDgyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DaGVja1dTRExWYWxpZGF0aW9uQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyMCAgIDEyMDcxNCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLmpvYnMuSUpvYk1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLmpvYnMuSm9iOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LlZhbGlkYXRlV1NETEpvYjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5DaG9pY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotCi0KLXB1YmxpYyBjbGFzcyBDaGVja1dTRExWYWxpZGF0aW9uQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17CSAgCi0JCi0JcHVibGljIENoZWNrV1NETFZhbGlkYXRpb25Db21tYW5kICgpIHsKLQl9Ci0gIAotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotICAgIAotICAgIElKb2JNYW5hZ2VyICAgIGpvYk1hbmFnZXIgICAgID0gUGxhdGZvcm0uZ2V0Sm9iTWFuYWdlcigpOwotCSAgSm9iW10gICAgICAgICAgam9icyAgICAgICAgICAgPSBqb2JNYW5hZ2VyLmZpbmQoIFZhbGlkYXRlV1NETEpvYi5WQUxJREFURV9XU0RMX0pPQl9GQU1JTFkgKTsKLQkgIFZhbGlkYXRlV1NETEpvYiBleGlzdGluZ1ZhbGlkYXRlV1NETEpvYiA9IG51bGw7Ci0JICAKLQkgIGlmKCBqb2JzLmxlbmd0aCA+IDAgKQotCSAgewotCQkgIGZvciAoaW50IGk9MDsgaTxqb2JzLmxlbmd0aDsgaSsrKSB7Ci0JCQkgIGV4aXN0aW5nVmFsaWRhdGVXU0RMSm9iID0gKFZhbGlkYXRlV1NETEpvYilqb2JzW2ldOwotCQkJICAKLQkJCSAgaWYgKGV4aXN0aW5nVmFsaWRhdGVXU0RMSm9iLmdldFN0YXRlKCkgIT0gSm9iLk5PTkUpIHsgCi0JCQkJICBpZiAoaWdub3JlV1NETFZhbGlkYXRpb24oZW52KSkgewotCQkJCQkgIC8vIGlmIGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgdmFsaWRhdGlvbiwgY2FuY2VsIGV4aXN0aW5nIHZhbGlkYXRpb24gam9iCi0JCQkJCSAgZXhpc3RpbmdWYWxpZGF0ZVdTRExKb2IuY2FuY2VsKCk7Ci0JCQkJCSAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JCQkJICB9IGVsc2UgewotCQkJCQkgIC8vIFNldHRpbmcgdGhlIGVycm9yIHN0cmluZyB0byBhbiBlbXB0eSBzdHJpbmcgc28gdGhhdCB0aGUgY29tbWFuZCBlbmdpbmUgd291bGQgbm90Ci0JCQkJCSAgLy8gcG9wLXVwIGFub3RoZXIgZXJyb3IgbWVzc2FnZSB3aGVuIHRoZSB1c2VyIGRlY2lkZWQgdG8gd2FpdCBmb3IgV1NETCB2YWxpZGF0aW9uLgotCQkJCQkgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggIiIgKTsKLQkJCQkgIH0KLQkJCSAgfQotCQkgIH0KLQkgIH0KLQkgIAotICAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JICAKLSAgfQotICAKLSAgcHJpdmF0ZSBib29sZWFuIGlnbm9yZVdTRExWYWxpZGF0aW9uKElFbnZpcm9ubWVudCBlbnYpIHsKLQkgIGlmICghV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRXYWl0Rm9yV1NETFZhbGlkYXRpb25Db250ZXh0KCkuZ2V0UGVyc2lzdGVudFdhaXRGb3JXU0RMVmFsaWRhdGlvbigpKSAKLQkJICByZXR1cm4gdHJ1ZTsgLy8gZG8gbm90IHdhbnQgdG8gd2FpdCBmb3IgV1NETCB2YWxpZGF0aW9uLCBpLmUuIElnbm9yZSBhbGwKLQkJICAKLQkJLy8gZ2l2ZSBhIHdhcm5pbmcgbWVzc2FnZSB3aXRoIHRoZSBvcHRpb25zIHRvIHN0b3AsIGlnbm9yZSB0aGlzIG9uZSwgb3IKLQkJLy8gaWdub3JlIGFsbCBjb21pbmcgbWVzc2FnZXMKLQkJSVN0YXR1cyBzdGF0dXNfID0gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlNUSUxMX1ZBTElEQVRJTkdfV1NETCApOwotCQkvLyBhZGRpbmcgYWxsIG1lc3NhZ2VzIGZyb20gV1NJIEluY29tcGxpYW5jZXMKLQotCQlDaG9pY2UgaWdub3JlQ2hvaWNlID0gbmV3IENob2ljZSgnQycsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5DQU5DRUxfVkFMSURBVElPTl9MQUJFTCwgCi0JCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkNBTkNFTF9WQUxJREFUSU9OX0RFU0NSSVBUSU9OKTsKLQkJQ2hvaWNlIGlnbm9yZUFsbENob2ljZSA9IG5ldyBDaG9pY2UoJ0EnLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuQ0FOQ0VMX0FMTF9WQUxJREFUSU9OX0xBQkVMLCAKLQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuQ0FOQ0VMX0FMTF9WQUxJREFUSU9OX0RFU0NSSVBUSU9OKTsKLQkJQ2hvaWNlIGNhbmNlbENob2ljZSA9IG5ldyBDaG9pY2UoJ1cnLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuV0FJVF9WQUxJREFUSU9OX0xBQkVMLCAKLQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuV0FJVF9WQUxJREFUSU9OX0RFU0NSSVBUSU9OKTsKLQotCQlDaG9pY2UgcmVzdWx0ID0gZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzXywKLQkJCQluZXcgQ2hvaWNlW10geyBpZ25vcmVDaG9pY2UsIGlnbm9yZUFsbENob2ljZSwgY2FuY2VsQ2hvaWNlIH0pOwotCi0JCS8vIGlmIHRoZSB1c2VyIGNsb3NlcyB0aGUgbWVzc2FnZSBib3ggb3Igc2VsZWN0cyBpZ25vcmUgY29udGludWUKLQkJaWYgKHJlc3VsdCA9PSBudWxsCi0JCQkJfHwgKHJlc3VsdC5nZXRMYWJlbCgpLmVxdWFscyhpZ25vcmVDaG9pY2UuZ2V0TGFiZWwoKSkpKSB7Ci0JCQlyZXR1cm4gdHJ1ZTsKLQkJLy8gaWYgdGhlIHVzZXIgc2VsZWN0cyBpZ25vcmUgYWxsLCBjaGFuZ2UgdGhlIHByZWZlcmVuY2UKLQkJfSBlbHNlIGlmIChyZXN1bHQuZ2V0TGFiZWwoKS5lcXVhbHMoaWdub3JlQWxsQ2hvaWNlLmdldExhYmVsKCkpKSB7Ci0JCQkvLyB1cGRhdGUgaWdub3JlIFdTREwgdmFsaWRhdGlvbiBwcmVmZXJlbmNlCi0JCQlXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFdhaXRGb3JXU0RMVmFsaWRhdGlvbkNvbnRleHQoKS5zZXRXYWl0Rm9yV1NETFZhbGlkYXRpb24oZmFsc2UpOwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJLy8gaWYgdGhlIHVzZXIgc2VsZWN0cyB0byBjYW5jZWwgLCBkbyBub3QgY29udGludWUgd2l0aCB0aGUgY29tbWFuZAotCQllbHNlIGlmIChyZXN1bHQuZ2V0TGFiZWwoKS5lcXVhbHMoY2FuY2VsQ2hvaWNlLmdldExhYmVsKCkpKSB7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJcmV0dXJuIHRydWU7Ci0JfQotICAKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL0NsaWVudEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmI5MjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL0NsaWVudEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDA0IDEzNDkxMyAgIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guV29ya2JlbmNoUmVzb3VyY2VIZWxwZXJCYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuYXBwbGljYXRpb25jbGllbnQuY29tcG9uZW50Y29yZS51dGlsLkFwcENsaWVudEFydGlmYWN0RWRpdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5jbGllbnQuQXBwbGljYXRpb25DbGllbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuY2xpZW50LkFwcGxpY2F0aW9uQ2xpZW50UmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuZWpiLkVKQkphcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamIuRUpCUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuZWpiLmludGVybmFsLm1vZHVsZWNvcmUudXRpbC5FSkJBcnRpZmFjdEVkaXRVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuaW50ZXJuYWwud2Vic2VydmljZS5XZWJTZXJ2aWNlTmF2aWdhdG9yR3JvdXBUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLndlYnNlcnZpY2UuaGVscGVyLldlYlNlcnZpY2VzTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWIuY29tcG9uZW50Y29yZS51dGlsLldlYkFydGlmYWN0RWRpdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJhcHBsaWNhdGlvbi5XZWJBcHA7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2ViYXBwbGljYXRpb24uV2ViQXBwUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2NsaWVudC5IYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NjbGllbnQuU2VydmljZVJlZjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LldlYlNlcnZpY2VzUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5IYW5kbGVyVGFibGVJdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUuQ29tcG9uZW50Q29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotCi0vKioKLSAqIENsaWVudEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQKLSAqCi0gKiBJbml0aWFsaXplIGFuZCBsb2FkIHRoZSBoYW5kbGVycyBkYXRhCi0gKi8KLXB1YmxpYyBjbGFzcyBDbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3RIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDbWQgewotCi0gIHByaXZhdGUgV2ViU2VydmljZXNNYW5hZ2VyIHdlYlNlcnZpY2VzTWFuYWdlcl87Ci0KLSAgcHJpdmF0ZSBJUHJvamVjdCBwcm9qZWN0XzsKLSAgCi0gIHByaXZhdGUgU3RyaW5nIHNlcnZpY2VSZWZOYW1lXyA9IG51bGw7Ci0gIAotICBwcml2YXRlIExpc3Qgd3NTZXJ2aWNlUmVmc187Ci0gIAotICBwcml2YXRlIEhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyW10gaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfOwotICBwcml2YXRlIFN0cmluZyBlcnJvclN0YXR1c01zZ18gPSBudWxsOwotICBwcml2YXRlIGJvb2xlYW4gaXNNdWx0aXBsZVNlbGVjdGlvbl87Ci0gIAotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgeyAgICAKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0KLSAgICB3ZWJTZXJ2aWNlc01hbmFnZXJfID0gV2ViU2VydmljZXNNYW5hZ2VyLmdldEluc3RhbmNlKCk7Ci0KLSAgICBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24gPSBnZXRJbml0aWFsU2VsZWN0aW9uKCk7Ci0gICAgaWYgKHNlbGVjdGlvbiA9PSBudWxsKSB7Ci0gICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9UQVNLX0VYQ0VQVEVEICk7Ci0gICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgICBlbHNlIGlmIChzZWxlY3Rpb24uc2l6ZSgpPjEpewotICAgICAgc3RhdHVzID0gcHJvY2Vzc011bHRpcGxlSGFuZGxlcnMoKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotCi0gICAgc3RhdHVzID0gcHJvY2Vzc0hhbmRsZXJzKCk7Ci0gICAgcmV0dXJuIHN0YXR1czsKLQotICB9Ci0KLSAgLyoqCi0gICAqIEZvciBwcm9jZXNzaW5nIGhhbmRsZXJzCi0gICAqIEByZXR1cm4KLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIHByb2Nlc3NIYW5kbGVycygpIHsKLSAgICB0cnkgewotCi0gICAgICBDb2xsZWN0aW9uIHNlbGVjdGVkU2VydmljZVJlZnMgPSBnZXRXU1NlcnZpY2VSZWZzRnJvbVNlbGVjdGlvbigpOyAvLyBnZXQgaW5pdGlhbCBzZWxlY3Rpb24gdmFsdWVzCi0gICAgICBpZiAoc2VsZWN0ZWRTZXJ2aWNlUmVmcz09bnVsbCB8fCBzZWxlY3RlZFNlcnZpY2VSZWZzLmlzRW1wdHkoKSl7Ci0gICAgICAgIC8vcmVwb3J0IG5vIFdlYiBzZXJ2aWNlIGNsaWVudCBpcyBhdmFpbGFibGUKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1dFQl9TRVJWSUNFX0NMSUVOVFNfTk9UX0ZPVU5EKTsKLSAgICAgIH0KLSAgICAgIHdzU2VydmljZVJlZnNfID0gd2ViU2VydmljZXNNYW5hZ2VyXy5nZXRBbGxXb3Jrc3BhY2VTZXJ2aWNlUmVmcygpOyAKLQotICAgICAgaWYgKHdzU2VydmljZVJlZnNfICE9IG51bGwpIHsKLSAgICAgICAgaW50IG51bWJlck9mU2VydmljZVJlZnMgPSB3c1NlcnZpY2VSZWZzXy5zaXplKCk7Ci0gICAgICAgIGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXyA9IG5ldyBIYW5kbGVyU2VydmljZVJlZkhvbGRlcltudW1iZXJPZlNlcnZpY2VSZWZzXTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZTZXJ2aWNlUmVmczsgaSsrKSB7Ci0gICAgICAgICAgU2VydmljZVJlZiB3c1NlcnZpY2VSZWYgPSAoU2VydmljZVJlZikgd3NTZXJ2aWNlUmVmc18uZ2V0KGkpOwotICAgICAgICAgIFZlY3RvciBoYW5kbGVycyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICBMaXN0IHdzSGFuZGxlcnMgPSB3c1NlcnZpY2VSZWYuZ2V0SGFuZGxlcnMoKTsKLSAgICAgIAotICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgd3NIYW5kbGVycy5zaXplKCk7IGsrKykgewotCi0gICAgICAgICAgICBIYW5kbGVyIHdzSGFuZGxlciA9IChIYW5kbGVyKSB3c0hhbmRsZXJzLmdldChrKTsKLQotICAgICAgICAgICAgSGFuZGxlclRhYmxlSXRlbSBoYW5kbGVySXRlbSA9IG5ldyBIYW5kbGVyVGFibGVJdGVtKCk7Ci0gICAgICAgICAgICBoYW5kbGVySXRlbS5zZXRIYW5kbGVyKHdzSGFuZGxlcik7Ci0gICAgICAgICAgICBoYW5kbGVySXRlbS5zZXRIYW5kbGVyTmFtZSh3c0hhbmRsZXIuZ2V0SGFuZGxlck5hbWUoKSk7Ci0gICAgICAgICAgICBoYW5kbGVySXRlbS5zZXRIYW5kbGVyQ2xhc3NOYW1lKHdzSGFuZGxlci5nZXRIYW5kbGVyQ2xhc3MoKS5nZXRRdWFsaWZpZWROYW1lKCkpOwotICAgICAgICAgICAgaGFuZGxlckl0ZW0uc2V0V3NEZXNjUmVmKHdzU2VydmljZVJlZik7Ci0KLSAgICAgICAgICAgIGhhbmRsZXJzLmFkZChoYW5kbGVySXRlbSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIFN0cmluZyB3c1NlcnZpY2VSZWZOYW1lID0gd3NTZXJ2aWNlUmVmLmdldFNlcnZpY2VSZWZOYW1lKCk7Ci0gICAgICAgICAgaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfW2ldID0gbmV3IEhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyKCk7Ci0gICAgICAgICAgaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfW2ldLnNldEhhbmRsZXJMaXN0KGhhbmRsZXJzKTsKLSAgICAgICAgICBoYW5kbGVyU2VydmljZVJlZkhvbGRlcl9baV0uc2V0U2VydmljZVJlZih3c1NlcnZpY2VSZWYpOwotICAgICAgICAgIGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyX1tpXS5zZXRTZXJ2aWNlUmVmTmFtZSh3c1NlcnZpY2VSZWZOYW1lKTsKLSAgICAgICAgICAKLSAgICAgICAgfQotCi0gICAgICB9Ci0gICAgICAKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfVEFTS19FWENFUFRFRCwgZSk7Ci0gICAgfQotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgcHJvY2Vzc011bHRpcGxlSGFuZGxlcnMoKXsKLSAgICAgIFNlcnZpY2VSZWZbXSBzZXJ2aWNlUmVmcyA9IGdldFNlcnZpY2VSZWZzKCk7Ci0gICAgICBpZiAoZXJyb3JTdGF0dXNNc2dfICE9IG51bGwpewotICAgICAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhlcnJvclN0YXR1c01zZ18pOwotICAgICAgfQotICAgICAgaXNNdWx0aXBsZVNlbGVjdGlvbl8gPSB0cnVlOwotICAgICAgCi0gICAgICBoYW5kbGVyU2VydmljZVJlZkhvbGRlcl8gPSBuZXcgSGFuZGxlclNlcnZpY2VSZWZIb2xkZXJbc2VydmljZVJlZnMubGVuZ3RoXTsKLSAgICAgIFZlY3RvciBoYW5kbGVycyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPHNlcnZpY2VSZWZzLmxlbmd0aDtpKyspewotICAgICAgICAKLSAgICAgICAgU3RyaW5nIHJlZk5hbWUgPSBzZXJ2aWNlUmVmc1tpXS5nZXRTZXJ2aWNlUmVmTmFtZSgpOwotICAgICAgICBoYW5kbGVyU2VydmljZVJlZkhvbGRlcl9baV0gPSBuZXcgSGFuZGxlclNlcnZpY2VSZWZIb2xkZXIoKTsKLSAgICAgICAgaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfW2ldLnNldEhhbmRsZXJMaXN0KGhhbmRsZXJzKTsKLSAgICAgICAgaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfW2ldLnNldFNlcnZpY2VSZWZOYW1lKHJlZk5hbWUpOwotICAgICAgICBoYW5kbGVyU2VydmljZVJlZkhvbGRlcl9baV0uc2V0U2VydmljZVJlZihzZXJ2aWNlUmVmc1tpXSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsgICAgICAKLSAgfQotICAKLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaXNHZW5Ta2VsZXRvbkVuYWJsZWRfLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0R2VuU2tlbGV0b25FbmFibGVkKCkgewotICAgIGlmIChpc011bHRpcGxlU2VsZWN0aW9uXykKLSAgICAgIHJldHVybiBmYWxzZTsgICAgCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZVJlZk5hbWUoKSB7Ci0gICAgcmV0dXJuIHRoaXMuc2VydmljZVJlZk5hbWVfOwotICB9Ci0KLSAgcHVibGljIElQcm9qZWN0IGdldENsaWVudFByb2plY3QoKSB7Ci0gICAgcmV0dXJuIHByb2plY3RfOwotICB9Ci0gIAotICBwcml2YXRlIFNlcnZpY2VSZWZbXSBnZXRTZXJ2aWNlUmVmcygpewotICAgICAgSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5pdFNlbCA9IGdldEluaXRpYWxTZWxlY3Rpb24oKTsKLSAgICAgIFNlcnZpY2VSZWZbXSBzZXJ2aWNlUmVmcyA9IG5ldyBTZXJ2aWNlUmVmW2luaXRTZWwuc2l6ZSgpXTsKLSAgICAgIEl0ZXJhdG9yIGl0ZXIgPSBpbml0U2VsLml0ZXJhdG9yKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxpbml0U2VsLnNpemUoKTtpKyspIHsKLSAgICAgICAgICBPYmplY3Qgb2JqID0gaXRlci5uZXh0KCk7Ci0gICAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFNlcnZpY2VSZWYpewotICAgICAgICAgICAgICBzZXJ2aWNlUmVmc1tpXSA9IChTZXJ2aWNlUmVmKW9iajsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZXsKLSAgICAgICAgICAgICAgZXJyb3JTdGF0dXNNc2dfID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9JTlZBTElEX01VTFRJUExFX1NFUlZJQ0VfU0VMRUNUOwotICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gc2VydmljZVJlZnM7Ci19Ci0KLSAgcHJpdmF0ZSBDb2xsZWN0aW9uIGdldFdTU2VydmljZVJlZnNGcm9tU2VsZWN0aW9uKCkgewotCi0gICAgSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5pdFNlbCA9IGdldEluaXRpYWxTZWxlY3Rpb24oKTsKLSAgICBpZiAoaW5pdFNlbCAhPSBudWxsICYmIGluaXRTZWwuc2l6ZSgpID09IDEpIHsKLSAgICAgIE9iamVjdCBvYmogPSBpbml0U2VsLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgU2VydmljZVJlZiBzZXJ2aWNlUmVmID0gbnVsbDsKLSAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBTZXJ2aWNlUmVmKSB7Ci0gICAgICAgIC8vIENsaWVudCBTZXJ2aWNlUmVmCi0gICAgICAgIHNlcnZpY2VSZWYgPSAoU2VydmljZVJlZikgb2JqOwotICAgICAgICBzZXJ2aWNlUmVmTmFtZV8gPSBzZXJ2aWNlUmVmLmdldFNlcnZpY2VSZWZOYW1lKCk7Ci0gICAgICAgIHByb2plY3RfID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHNlcnZpY2VSZWYpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgV2ViU2VydmljZU5hdmlnYXRvckdyb3VwVHlwZSkgewotICAgICAgICBXZWJTZXJ2aWNlTmF2aWdhdG9yR3JvdXBUeXBlIHdzbmd0ID0gKFdlYlNlcnZpY2VOYXZpZ2F0b3JHcm91cFR5cGUpIG9iajsKLSAgICAgICAgc2VydmljZVJlZiA9IHdzbmd0LmdldFNlcnZpY2VSZWYoKTsKLSAgICAgICAgc2VydmljZVJlZk5hbWVfID0gc2VydmljZVJlZi5nZXRTZXJ2aWNlUmVmTmFtZSgpOwotICAgICAgICBwcm9qZWN0XyA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChzZXJ2aWNlUmVmKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIElGaWxlKXsKLSAgICAgICAgICBSZXNvdXJjZSByZXMgPSBXb3JrYmVuY2hSZXNvdXJjZUhlbHBlckJhc2UuZ2V0UmVzb3VyY2UoKElGaWxlKW9iaiwgdHJ1ZSk7Ci0gICAgICAgICAgQ29sbGVjdGlvbiBzZXJ2aWNlUmVmcyA9IG51bGw7Ci0gICAgICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIFdlYlNlcnZpY2VzUmVzb3VyY2UpIHsKLSAgICAgICAgICAgICAgLy8gd2Vic2VydmljZXNjbGllbnQueG1sIGZvciBKMkVFIDEuMwotICAgICAgICAgICAgICBXZWJTZXJ2aWNlc1Jlc291cmNlIHdzUmVzID0gKFdlYlNlcnZpY2VzUmVzb3VyY2UpcmVzOwotICAgICAgICAgICAgICBzZXJ2aWNlUmVmcyA9IHdzUmVzLmdldFdlYlNlcnZpY2VzQ2xpZW50KCkuZ2V0U2VydmljZVJlZnMoKTsKLSAgICAgICAgICAgICAgaWYgKCFzZXJ2aWNlUmVmcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBTZXJ2aWNlUmVmIHJlZiA9IChTZXJ2aWNlUmVmKSgoTGlzdClzZXJ2aWNlUmVmcykuZ2V0KDApOwotICAgICAgICAgICAgICAgIHNlcnZpY2VSZWZOYW1lXyA9IHJlZi5nZXRTZXJ2aWNlUmVmTmFtZSgpOwotICAgICAgICAgICAgICAgIHByb2plY3RfID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHJlZik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2VSZWZzOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgaWYocmVzIGluc3RhbmNlb2YgV2ViQXBwUmVzb3VyY2UpewotICAgICAgICAgICAgICAgICAgLy8gd2ViLnhtbCBmb3IgSjJFRSAxLjQKLSAgICAgICAgICAgICAgICAgIFdlYkFwcFJlc291cmNlIHdlYkFwcFJlcyA9IChXZWJBcHBSZXNvdXJjZSlyZXM7Ci0gICAgICAgICAgICAgICAgICBzZXJ2aWNlUmVmcyA9IHdlYkFwcFJlcy5nZXRXZWJBcHAoKS5nZXRTZXJ2aWNlUmVmcygpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgaWYgKHJlcyBpbnN0YW5jZW9mIEVKQlJlc291cmNlKXsKLSAgICAgICAgICAgICAgICAgIEVKQlJlc291cmNlIGVqYlJlcyA9IChFSkJSZXNvdXJjZSlyZXM7Ci0gICAgICAgICAgICAgICAgICBzZXJ2aWNlUmVmcyA9IHdlYlNlcnZpY2VzTWFuYWdlcl8uZ2V0U2VydmljZVJlZnMoZWpiUmVzLmdldEVKQkphcigpKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIGlmIChyZXMgaW5zdGFuY2VvZiBBcHBsaWNhdGlvbkNsaWVudFJlc291cmNlKXsKLSAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uQ2xpZW50UmVzb3VyY2UgYXBwQ2xpZW50UmVzID0gKEFwcGxpY2F0aW9uQ2xpZW50UmVzb3VyY2UpcmVzOwotICAgICAgICAgICAgICAgICAgc2VydmljZVJlZnMgPSB3ZWJTZXJ2aWNlc01hbmFnZXJfLmdldFNlcnZpY2VSZWZzKGFwcENsaWVudFJlcy5nZXRBcHBsaWNhdGlvbkNsaWVudCgpKTsvL2FwcENsaWVudFJlcy5nZXRBcHBsaWNhdGlvbkNsaWVudCgpLmdldFNlcnZpY2VSZWZzKCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgaWYgKHNlcnZpY2VSZWZzIT1udWxsICYmIHNlcnZpY2VSZWZzLnNpemUoKT4wKSB7Ci0gICAgICAgICAgICAgICAgICBTZXJ2aWNlUmVmIHJlZiA9IChTZXJ2aWNlUmVmKSgoTGlzdClzZXJ2aWNlUmVmcykuZ2V0KDApOwotICAgICAgICAgICAgICAgICAgc2VydmljZVJlZk5hbWVfID0gcmVmLmdldFNlcnZpY2VSZWZOYW1lKCk7Ci0gICAgICAgICAgICAgICAgICBwcm9qZWN0XyA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChyZWYpOyAKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICByZXR1cm4gc2VydmljZVJlZnM7ICAgICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIFRoaXMgc2VjdGlvbiBpcyBmb3Igb2J0YWluaW5nIGFsbCB0aGUgc2VydmljZVJlZnMgZnJvbSB0aGUgcHJvamVjdCwgZ2l2ZW4gdGhhdCB0aGUgaW5pdGlhbCBzZWxlY3Rpb24KLSAgICAgIC8vIHdhcyBmcm9tIHRoZSBKMkVFIHZpZXcgKFNlcnZpY2VSZWYgb3IgV2ViU2VydmljZU5hdmlnYXRvckdyb3VwVHlwZSksIGl0IHdpbGwgc2VsZWN0IHRoZSByaWdodCBzZXJ2aWNlUmVmCi0gICAgICBpZiAocHJvamVjdF89PW51bGwpewotICAgICAgICBwcm9qZWN0XyA9IGdldFByb2plY3QoKTsKLSAgICAgIH0KLSAgICAgIGlmIChwcm9qZWN0Xz09bnVsbCl7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgICAgfSAgICAgCi0gICAgICAgCi0gICAgICBpZiAoSjJFRVV0aWxzLmlzV2ViQ29tcG9uZW50KHByb2plY3RfKSkgewotICAgICAgICBXZWJBcnRpZmFjdEVkaXQgd2ViRWRpdCA9IG51bGw7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0Xyk7ICAgICAgICAgIAotICAgICAgICAgIHdlYkVkaXQgPSBXZWJBcnRpZmFjdEVkaXQuZ2V0V2ViQXJ0aWZhY3RFZGl0Rm9yUmVhZCh2Yyk7Ci0gICAgICAgICAgaWYgKHdlYkVkaXQgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBXZWJBcHAgd2ViQXBwID0gKFdlYkFwcCkgd2ViRWRpdC5nZXREZXBsb3ltZW50RGVzY3JpcHRvclJvb3QoKTsKLSAgICAgICAgICAgIGlmICh3ZWJBcHAgIT0gbnVsbCkgewotICAgICAgICAgICAgICByZXR1cm4gd2ViU2VydmljZXNNYW5hZ2VyXy5nZXRTZXJ2aWNlUmVmcyh3ZWJBcHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmaW5hbGx5ewotICAgICAgICAgIGlmKHdlYkVkaXQhPW51bGwpCi0gICAgICAgICAgICB3ZWJFZGl0LmRpc3Bvc2UoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAoSjJFRVV0aWxzLmlzRUpCQ29tcG9uZW50KHByb2plY3RfKSl7Ci0KLSAgICAJSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0Xyk7Ci0gICAgCUVKQkphciBlamJKYXIgPSBFSkJBcnRpZmFjdEVkaXRVdGlsaXRpZXMuZ2V0RUpCSmFyKHZjKTsKLSAgICAgICAgaWYgKGVqYkphciE9bnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIHdlYlNlcnZpY2VzTWFuYWdlcl8uZ2V0U2VydmljZVJlZnMoZWpiSmFyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAoSjJFRVV0aWxzLmlzQXBwQ2xpZW50Q29tcG9uZW50KHByb2plY3RfKSl7Ci0gICAgCSAgSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0Xyk7Ci0gICAgCSAgQXBwQ2xpZW50QXJ0aWZhY3RFZGl0IGFwcEVkaXQgPSBudWxsOwotICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgIGFwcEVkaXQgPSBBcHBDbGllbnRBcnRpZmFjdEVkaXQuZ2V0QXBwQ2xpZW50QXJ0aWZhY3RFZGl0Rm9yUmVhZCh2Yyk7Ci0gICAgICAgICAgaWYgKGFwcEVkaXQhPW51bGwpewotICAgICAgICAgICAgICBBcHBsaWNhdGlvbkNsaWVudCBhcHBDbGllbnQgPSBhcHBFZGl0LmdldEFwcGxpY2F0aW9uQ2xpZW50KCk7Ci0gICAgICAgICAgICAgIGlmIChhcHBDbGllbnQgIT1udWxsKXsKLSAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWJTZXJ2aWNlc01hbmFnZXJfLmdldFNlcnZpY2VSZWZzKGFwcENsaWVudCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGZpbmFsbHl7Ci0gICAgICAgICAgICAgIGlmKGFwcEVkaXQhPW51bGwpewotICAgICAgICAgICAgICAgICAgYXBwRWRpdC5kaXNwb3NlKCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgQ29sbGVjdGlvbiBnZXRXc1NlcnZpY2VSZWZzKCl7Ci0gICAgcmV0dXJuIHRoaXMud3NTZXJ2aWNlUmVmc187Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRJc011bHRpcGxlU2VsZWN0aW9uKCl7Ci0gICAgICByZXR1cm4gdGhpcy5pc011bHRpcGxlU2VsZWN0aW9uXzsKLSAgfQotICAKLSAgcHVibGljIEhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyW10gZ2V0SGFuZGxlclNlcnZpY2VSZWZIb2xkZXIoKXsKLSAgICByZXR1cm4gdGhpcy5oYW5kbGVyU2VydmljZVJlZkhvbGRlcl87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DbGllbnRIYW5kbGVyc1dpZGdldE91dHB1dENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DbGllbnRIYW5kbGVyc1dpZGdldE91dHB1dENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNlZTE4YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQ2xpZW50SGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDA0IDEzNDkxMyAgIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSAgCi0gKiAyMDA2MDUxNyAgIDE0MjMzOSBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5hcHBsaWNhdGlvbmNsaWVudC5jb21wb25lbnRjb3JlLnV0aWwuQXBwQ2xpZW50QXJ0aWZhY3RFZGl0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5jb21wb25lbnRjb3JlLnV0aWwuRUpCQXJ0aWZhY3RFZGl0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYi5jb21wb25lbnRjb3JlLnV0aWwuV2ViQXJ0aWZhY3RFZGl0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NjbGllbnQuSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWY7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2NsaWVudC5XZWJzZXJ2aWNlX2NsaWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2NsaWVudC5pbnRlcm5hbC5pbXBsLldlYnNlcnZpY2VfY2xpZW50RmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KYXZhTU9GVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5IYW5kbGVyVGFibGVJdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUuQXJ0aWZhY3RFZGl0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5pbnRlcm5hbC5lbWYudXRpbGl0aWVzLkV0b29sc0NvcHlVdGlsaXR5OwotCi0vKgotICogUHJvdmlkZSBhIHdheSB0byBleHRlcm5hbGl6ZSB0aGUgZWRpdGVkIGZpZWxkcyBhbmQgY3JlYXRlIG5ldyBoYW5kbGVycwotICogIAotICovCi1wdWJsaWMgY2xhc3MgQ2xpZW50SGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0KLSAgcHJpdmF0ZSBIYW5kbGVyU2VydmljZVJlZkhvbGRlcltdIGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXzsKLSAgcHJpdmF0ZSBIYXNodGFibGUgb2xkV1NTZXJ2aWNlUmVmc1RvSGFuZGxlcnNUYWJsZV87Ci0gIHByaXZhdGUgSGFzaHRhYmxlIG5ld1dTU2VydmljZVJlZnNUb0hhbmRsZXJzVGFibGVfOwotICBwcml2YXRlIElQcm9qZWN0IHByb2plY3RfOwotICBwcml2YXRlIGJvb2xlYW4gaXNNdWx0aXBsZVNlbGVjdGlvbl87Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0KLSAgICB0cnkgewotICAgICAgCi0gICAgICBpZiAoaXNNdWx0aXBsZVNlbGVjdGlvbl8pIHsKLSAgICAgICAgaWYgKGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXyAhPSBudWxsKSB7Ci0gICAgICAgICAgLy8gYWRkIG5ldyBoYW5kbGVyIHRvIGludGVybmFsIG1vZGVsIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdAotICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBoYW5kbGVyU2VydmljZVJlZkhvbGRlcl9baV0uYWRkSGFuZGxlclRvU2VydmljZVJlZigpOwotICAgICAgICAgICAgc2F2ZUVkaXRNb2RlbChoYW5kbGVyU2VydmljZVJlZkhvbGRlcl9baV0uZ2V0UHJvamVjdCgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgb2xkV1NTZXJ2aWNlUmVmc1RvSGFuZGxlcnNUYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICAgIG5ld1dTU2VydmljZVJlZnNUb0hhbmRsZXJzVGFibGVfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXyAhPSBudWxsKSB7Ci0gIAotICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfLmxlbmd0aDsgaSsrKSB7Ci0gIAotICAgICAgICAgICAgU2VydmljZVJlZiB3c1NlcnZpY2VSZWYgPWhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyX1tpXS5nZXRTZXJ2aWNlUmVmKCk7IAotICAgICAgICAKLSAgICAgICAgICAgIExpc3Qgd3NIYW5kbGVycyA9IHdzU2VydmljZVJlZi5nZXRIYW5kbGVycygpOwotICAgICAgICAgICAgb2xkV1NTZXJ2aWNlUmVmc1RvSGFuZGxlcnNUYWJsZV8ucHV0KHdzU2VydmljZVJlZiwgd3NIYW5kbGVycyk7Ci0gICAgICAgICAgICBuZXdXU1NlcnZpY2VSZWZzVG9IYW5kbGVyc1RhYmxlXy5wdXQod3NTZXJ2aWNlUmVmLCBuZXcgQXJyYXlMaXN0KCkpOwotICAgICAgICAgIH0KLSAgCi0gICAgICAgICAgLy9FbnVtZXJhdGlvbiBlID0gaGFuZGxlcnNUYWJsZV8ua2V5cygpOwotICAgICAgICAgIGZvciAoaW50IGo9MDtqPGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXy5sZW5ndGg7aisrKSB7Ci0KLSAgICAgICAgICAgIExpc3QgaGFuZGxlclRhYmxlSXRlbXNfID0gIGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyX1tqXS5nZXRIYW5kbGVyTGlzdCgpOwotICAgICAgICAgICAgaWYgKGhhbmRsZXJUYWJsZUl0ZW1zXyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgIC8vIGZvcm0gSGFuZGxlciB0YWJsZXMKLSAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoYW5kbGVyVGFibGVJdGVtc18uc2l6ZSgpOyBpKyspIHsKLSAgCi0gICAgICAgICAgICAgICAgSGFuZGxlclRhYmxlSXRlbSBodGkgPSAoSGFuZGxlclRhYmxlSXRlbSkgaGFuZGxlclRhYmxlSXRlbXNfLmdldChpKTsKLSAgICAgICAgICAgICAgICBPYmplY3Qgd3NNb2RlbFJlZiA9IGh0aS5nZXRXc0Rlc2NSZWYoKTsKLSAgICAgICAgICAgICAgICBpZiAod3NNb2RlbFJlZiAhPSBudWxsICYmIHdzTW9kZWxSZWYgaW5zdGFuY2VvZiBTZXJ2aWNlUmVmKSB7Ci0gICAgICAgICAgICAgICAgICBTZXJ2aWNlUmVmIHdzUmVmID0gKFNlcnZpY2VSZWYpIHdzTW9kZWxSZWY7Ci0gIAotICAgICAgICAgICAgICAgICAgT2JqZWN0IGhhbmRsZXIgPSBodGkuZ2V0SGFuZGxlcigpOwotICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZXIgIT0gbnVsbCAmJiBoYW5kbGVyIGluc3RhbmNlb2YgSGFuZGxlcikgewotICAgICAgICAgICAgICAgICAgICAvLyBjbG9uZSBpdAotICAgICAgICAgICAgICAgICAgICBIYW5kbGVyIGNsb25lZEhhbmRsZXIgPSAoSGFuZGxlcikgRXRvb2xzQ29weVV0aWxpdHkuY3JlYXRlQ29weSgoSGFuZGxlcikgaGFuZGxlcik7Ci0gICAgICAgICAgICAgICAgICAgICgoTGlzdCkgbmV3V1NTZXJ2aWNlUmVmc1RvSGFuZGxlcnNUYWJsZV8uZ2V0KHdzUmVmKSkuYWRkKGNsb25lZEhhbmRsZXIpOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBpdAotICAgICAgICAgICAgICAgICAgICBXZWJzZXJ2aWNlX2NsaWVudEZhY3Rvcnkgd3NDbGllbnRGYWN0b3J5ID0gbmV3IFdlYnNlcnZpY2VfY2xpZW50RmFjdG9yeUltcGwoKTsKLSAgICAgICAgICAgICAgICAgICAgSGFuZGxlciBuZXdIYW5kbGVyID0gd3NDbGllbnRGYWN0b3J5LmNyZWF0ZUhhbmRsZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgbmV3SGFuZGxlci5zZXRIYW5kbGVyTmFtZShodGkuZ2V0SGFuZGxlck5hbWUoKSk7Ci0gIAotICAgICAgICAgICAgICAgICAgICBKYXZhQ2xhc3MgamF2YUNsYXNzID0gSmF2YU1PRlV0aWxzLmdldEphdmFDbGFzcyhodGkuZ2V0SGFuZGxlckNsYXNzTmFtZSgpLCBwcm9qZWN0Xyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChqYXZhQ2xhc3MgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgIG5ld0hhbmRsZXIuc2V0SGFuZGxlckNsYXNzKGphdmFDbGFzcyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgCi0gICAgICAgICAgICAgICAgICAgICgoTGlzdCkgbmV3V1NTZXJ2aWNlUmVmc1RvSGFuZGxlcnNUYWJsZV8uZ2V0KHdzUmVmKSkuYWRkKG5ld0hhbmRsZXIpOwotICAgICAgICAgICAgICAgICAgfQotICAKLSAgICAgICAgICAgICAgICB9Ci0gIAotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotIAotICAgICAgICAgIC8vIGFkZCBoYW5kbGVycyB0byBwb3J0cwotICAgICAgICAgIGFkZEhhbmRsZXJzVG9TZXJ2aWNlUmVmcygpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBzYXZlIHRoZSBhcnRpZmFjdCBlZGl0IG1vZGVsCi0gICAgICAgIHNhdmVFZGl0TW9kZWwoKTsKLSAgICAgIH0KLSAgICAgIAotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIAotICAgIHsKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1RBU0tfRVhDRVBURUQsIGUpOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgc2F2ZUVkaXRNb2RlbCgpIHsKLSAgICAgIEFydGlmYWN0RWRpdCBhcnRpZmFjdEVkaXQgPSBudWxsOwotICAgICAgdHJ5IHsKLSAgICAgICAgICBpZiAoSjJFRVV0aWxzLmlzV2ViQ29tcG9uZW50KHByb2plY3RfKSkgewotICAgICAgICAgICAgICAgIGFydGlmYWN0RWRpdCA9IFdlYkFydGlmYWN0RWRpdC5nZXRXZWJBcnRpZmFjdEVkaXRGb3JXcml0ZShwcm9qZWN0Xyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKEoyRUVVdGlscy5pc0VKQkNvbXBvbmVudChwcm9qZWN0XykpewotICAgICAgICAgICAgICAgIGFydGlmYWN0RWRpdCA9IEVKQkFydGlmYWN0RWRpdC5nZXRFSkJBcnRpZmFjdEVkaXRGb3JXcml0ZShwcm9qZWN0Xyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoSjJFRVV0aWxzLmlzQXBwQ2xpZW50Q29tcG9uZW50KHByb2plY3RfKSl7Ci0gICAgICAgICAgICAgICAgYXJ0aWZhY3RFZGl0ID0gQXBwQ2xpZW50QXJ0aWZhY3RFZGl0LmdldEFwcENsaWVudEFydGlmYWN0RWRpdEZvcldyaXRlKHByb2plY3RfKTsKLSAgICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBmaW5hbGx5IHsKLSAgICAgICAgICBpZiAoYXJ0aWZhY3RFZGl0IT1udWxsKSB7Ci0gICAgICAgICAgICAgIGFydGlmYWN0RWRpdC5zYXZlKG51bGwpOwotICAgICAgICAgICAgICBhcnRpZmFjdEVkaXQuZGlzcG9zZSgpOwotICAgICAgICAgIH0KLSAgICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIHNhdmVFZGl0TW9kZWwoSVByb2plY3QgcHJvamVjdCl7Ci0JICBwcm9qZWN0XyA9IHByb2plY3Q7Ci0JICBzYXZlRWRpdE1vZGVsKCk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBhZGRIYW5kbGVyc1RvU2VydmljZVJlZnMoKSB7Ci0gICAgdHJ5IHsKLSAgICAgIEVudW1lcmF0aW9uIHJlZnNUb0hhbmRsZXJzID0gbmV3V1NTZXJ2aWNlUmVmc1RvSGFuZGxlcnNUYWJsZV8ua2V5cygpOwotICAgICAgd2hpbGUgKHJlZnNUb0hhbmRsZXJzLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgIFNlcnZpY2VSZWYgc2VydmljZVJlZiA9IChTZXJ2aWNlUmVmKSByZWZzVG9IYW5kbGVycy5uZXh0RWxlbWVudCgpOwotICAgICAgICBpZiAoc2VydmljZVJlZiAhPSBudWxsKSB7Ci0gICAgICAgICAgTGlzdCBoYW5kbGVycyA9IChMaXN0KSBuZXdXU1NlcnZpY2VSZWZzVG9IYW5kbGVyc1RhYmxlXy5nZXQoc2VydmljZVJlZik7Ci0gICAgICAgICAgTGlzdCBtb2RlbEhhbmRsZXJzID0gKExpc3QpIG9sZFdTU2VydmljZVJlZnNUb0hhbmRsZXJzVGFibGVfLmdldChzZXJ2aWNlUmVmKTsKLSAgICAgICAgICBtb2RlbEhhbmRsZXJzLmNsZWFyKCk7Ci0gICAgICAgICAgbW9kZWxIYW5kbGVycy5hZGRBbGwoaGFuZGxlcnMpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gIH0KLQotCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFByb2plY3QoSVByb2plY3QgcHJvamVjdCkgewotICAgIHRoaXMucHJvamVjdF8gPSBwcm9qZWN0OwotICB9Ci0gIAotICAvKioKLSAgICogQW4gYXJyYXkgb2YgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVycwotICAgKiBAcmV0dXJuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIYW5kbGVyU2VydmljZVJlZkhvbGRlcihIYW5kbGVyU2VydmljZVJlZkhvbGRlcltdIGhhbmRsZXJIb2xkZXJzKXsKLSAgICB0aGlzLmhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXyA9IGhhbmRsZXJIb2xkZXJzOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJc011bHRpcGxlU2VsZWN0aW9uKGJvb2xlYW4gaXNNdWxpdHBsZVNlbGVjdGlvbikgewotICAgIHRoaXMuaXNNdWx0aXBsZVNlbGVjdGlvbl8gPSBpc011bGl0cGxlU2VsZWN0aW9uOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DbGllbnRXaXphcmRXaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DbGllbnRXaXphcmRXaWRnZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U2MDI5ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQ2xpZW50V2l6YXJkV2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDA3ICAgMTM1NDE1IHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MTcgICAxMzYzOTAvMTM2MTU5IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNDEzICAgMTM1NTgxIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MjAgICAxMzU5MTIgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA0MjQgICAxMzgwNTIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNDI1ICAgMTM3ODMxIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA1MDkgICAxMTkyOTYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNjEyICAgMTQ1MDgxIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwNzI1ICAgMTQ5MzUxIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBEZWxldGVkIHNlcnZpY2UgZGVmaW5pdGlvbiBrZWVwcyByZWFwcGVhcmluZwotICogMjAwNjA4MDMgICAxNTI0ODYgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFR5cGluZyBXU0RMIGluIFNlcnZpY2UgZGVmaW5pdGlvbiBmaWVsZCBpcyB2ZXJ5IHNsb3cKLSAqIDIwMDYwODE3ICAgMTQwMDE3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBsb25nZXIgcHJvamVjdCBvciBzZXJ2ZXIvcnVudGltZSBzdHJpbmdzIGRvIG5vdCByZXNpemUgd2l6YXJkCi0gKiAyMDA2MDgyNSAgIDEzNTU3MCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgU2VydmljZSBpbXBsZW1lbnRhdGlvbiBVUkwgbm90IGRpc3BsYXllZCBwcm9wZXJseSBvbiBmaXJzdCBwYWdlCi0gKiAyMDA2MDgyOSAgIDE1NTQ0MSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgd2ViIHNlcnZpY2Ugd2l6YXJkIGhhbmdzIGR1cmluZyByZXNpemUKLSAqIDIwMDYwOTA3ICAgMTU2MjExIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBTZWxlY3Rpbmcgc2VydmljZSBkZWZpbml0aW9uIGludmFsaWRhdGVkIHByb2plY3QgY29uZmlnIHdoZW4gY3JlYXRpbmcgd2ViIHNlcnZpY2UgamF2YSBjbGllbnQKLSAqIDIwMDYxMjEyICAgMTU5OTExIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBjaGFuZ2luZyBzZXJ2aWNlIGRlZmluaXRpb24gcmVzZXRzIHNvbWUgY29uZmlndXJhdGlvbiBmaWVsZHMKLSAqIDIwMDYwMTI1ICAgMTU5OTExIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuLCBSZW1vdmUgdW51c2VkIG1ldGhvZCBhbmQgaW1wb3J0cwotICogMjAwODA2MTMgICAyMzY1MjMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIE92ZXJ3cml0ZSBzZXR0aW5nIG9uIFdlYiBzZXJ2aWNlIHdpemFyZCBpcyBjb3VwbGVkIHdpdGggcHJlZmVyZW5jZQotICogMjAwOTA5MjYgICAyNDg0NDggbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBTaG91bGQgbm90IHJlc2l6ZSBXUyBXaXphcmQgZm9yIGxvbmcgV1NETCBmaWxlIG5hbWVzCi0gKiAyMDA5MDMwMiAgIDI0MjQ2MiBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBTYXZlIFdlYiBzZXJ2aWNlcyB3aXphcmQgc2V0dGluZ3MKLSAqIDIwMDkwMzEzICAgMjY4NTY3IGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIHBlcnNpc3RlZCB3aXphcmQgc2V0dGluZ3MgZ29uZSB1bmxlc3MgbGF1bmNoaW5nIG9uIG9iamVjdAotICogMjAwOTAzMjYgICAyNjkwOTcga2Nob25nQGNhLmlibS5jb20gLSBLZWl0aCBDaG9uZywgW0FjY2Vzc2liaWxpdHldIFdlYiBzZXJ2aWNlcyB3aXphcmQgZGlhbG9nIHNob3VsZCBiZSBzZWxlY3RlZCBhZnRlciBjYW5jZWxpbmcgdGhlIEJyb3dzZSBmb3IgY2xhc3MgZGlhbG9nCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uV1NETFBhcnNlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5kYXRhLkVjbGlwc2VJUGF0aDJVUkxTdHJpbmdUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLlZhbGlkYXRpb25VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5UaW1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwucGx1Z2luLldlYlNlcnZpY2VQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25BZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQuUmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlBhZ2VJbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRDb250cmlidXRvckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0RGF0YUV2ZW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5Db21ib1dpdGhIaXN0b3J5OwotCi0KLXB1YmxpYyBjbGFzcyBDbGllbnRXaXphcmRXaWRnZXQgZXh0ZW5kcyBTaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3IgaW1wbGVtZW50cyBSdW5uYWJsZQoteyAgCi0gIHByaXZhdGUgV2ViU2VydmljZUNsaWVudFR5cGVXaWRnZXQgY2xpZW50V2lkZ2V0XzsKLSAgcHJpdmF0ZSBCdXR0b24gb3ZlcndyaXRlQnV0dG9uXzsKLSAgcHJpdmF0ZSBCdXR0b24gbW9uaXRvclNlcnZpY2VfOwotCi0gIHByaXZhdGUgQ29tYm9XaXRoSGlzdG9yeSBzZXJ2aWNlSW1wbF87Ci0gIHByaXZhdGUgQnV0dG9uIGJyb3dzZUJ1dHRvbl87Ci0gIHByaXZhdGUgV1NETFNlbGVjdGlvbkRpYWxvZyB3c2RsRGlhbG9nXzsKLSAgcHJpdmF0ZSBTdHJpbmcgY29tcG9uZW50TmFtZV87Ci0gIHByaXZhdGUgSVByb2plY3QgcHJvamVjdF87Ci0gIHByaXZhdGUgU3RyaW5nIHdlYlNlcnZpY2VVUklfOwotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlcl87Ci0gIHByaXZhdGUgUmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dF87Ci0gIAotICBwcml2YXRlIExpc3RlbmVyIHN0YXR1c0xpc3RlbmVyXzsKLSAgcHJpdmF0ZSBNb2RpZnlMaXN0ZW5lciBvYmplY3RNb2RpZnlMaXN0ZW5lcl8gOwotICBwcml2YXRlIGludCB2YWxpZGF0aW9uU3RhdGVfOwotICBwcml2YXRlIGJvb2xlYW4gdmFsaWRPYmplY3RTZWxlY3Rpb25fID0gdHJ1ZTsKLSAgcHJpdmF0ZSBXU0RMU2VsZWN0aW9uV2lkZ2V0V3JhcHBlciB3c2RsVmFsaWRhdG9yV2lkZ2V0XzsKLQotICBwcml2YXRlIFRpbWVyIHRpbWVyXyA9IG51bGw7Ci0gIAotICAvKiBDT05URVhUX0lEIFdTV1NDRU4wMDIwIGZvciB0aGUgU2VydmljZSBJbXBsZW1lbmF0aW9uIHRleHQgZmllbGQgb2YgdGhlIFNjZW5hcmlvIFBhZ2UgKi8KLQkgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9XU1dTQ0VOX1RFWFRfU0VSVklDRV9JTVBMID0gIldTV1NDRU4wMDIwIjsKLQotICAKLSAgLyogQ09OVEVYVF9JRCBXU1dTQ0VOMDAxNCBmb3IgdGhlIG1vbml0b3Igc2VydmljZSBjaGVja2JveCBvZiB0aGUgU2NlbmFyaW8gcGFnZSAqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1dTV1NDRU5fQ0hFQ0tCT1hfTU9OSVRPUl9TRVJWSUNFID0gIldTV1NDRU4wMDE0IjsJCi0gIC8qIENPTlRFWFRfSUQgV1NXU0NFTjAwMzAgZm9yIHRoZSBPdmVyd3JpdGUgRmlsZXMgY2hlY2tib3ggb2YgdGhlIFNjZW5hcmlvIFBhZ2UgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9XU1dTQ0VOX0NIRUNLQk9YX09WRVJXUklURSA9ICJXU1dTQ0VOMDAzMCI7CQotICAvKiBDT05URVhUX0lEIFdTV1NDRU4wMDAxIGZvciB0aGUgU2NlbmFyaW8gUGFnZSAqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1dTV1NDRU5fUEFHRSA9ICJXU1dTQ0VOMDAwMSI7Ci0gIAotICAvKioKLSAgICogUnVuIHRoaXMgQ2xpZW50V2l6YXJkV2lkZ2V0LCB3aGljaCB2YWxpZGF0ZXMgdGhlIGVudHJ5IGZpZWxkIHZhbHVlcy4gCi0gICAqLwotICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0JICB2YWxpZGF0aW9uU3RhdGVfID0gVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX0FMTDsKLQkgIHN0YXR1c0xpc3RlbmVyXy5oYW5kbGVFdmVudChudWxsKTsKLQkgIGlmICh2YWxpZE9iamVjdFNlbGVjdGlvbl8pCi0JCSAgY2FsbE9iamVjdFRyYW5zZm9ybWF0aW9uKHByb2plY3RfLCAKLQkJCQkgIHdzZGxWYWxpZGF0b3JXaWRnZXRfLmdldENvbXBvbmVudE5hbWUoKSwgCi0JCQkJICB3c2RsVmFsaWRhdG9yV2lkZ2V0Xy5nZXRXc2RsVVJJKCkpOwkgIAotICB9Ci0gIAotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyggQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIpCi0gIHsKLSAgICBTdHJpbmcgICAgICAgcGx1Z2luSWQgPSAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIjsKLSAgICBVSVV0aWxzICAgICAgdXRpbHMgICAgPSBuZXcgVUlVdGlscyggcGx1Z2luSWQgKTsKLSAgICB1dGlscy5jcmVhdGVJbmZvUG9wKHBhcmVudCwgSU5GT1BPUF9XU1dTQ0VOX1BBR0UpOwotCi0gICAgc3RhdHVzTGlzdGVuZXJfID0gc3RhdHVzTGlzdGVuZXI7Ci0JdmFsaWRhdGlvblN0YXRlXyA9IFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9BTEw7Ci0gIAkvLyBDcmVhdGUgdGV4dCBmaWVsZCBhbmQgYnJvd3NlIGZvciBzZXJ2aWNlIHNlbGVjdGlvbgotICAJQ29tcG9zaXRlIHR5cGVDb21wb3NpdGUgPSB1dGlscy5jcmVhdGVDb21wb3NpdGUocGFyZW50LCAzKTsKLQlzZXJ2aWNlSW1wbF8gPSB1dGlscy5jcmVhdGVDb21ib1dpdGhIaXN0b3J5KHR5cGVDb21wb3NpdGUsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9XRUJTRVJWSUNFREVGLCAKLQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fVEVYVF9JTVBMLAotCQkJSU5GT1BPUF9XU1dTQ0VOX1RFWFRfU0VSVklDRV9JTVBMLCBTV1QuTEVGVCB8IFNXVC5CT1JERVIsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0RGlhbG9nU2V0dGluZ3MoKSApOwotCQotCU9iamVjdCBsYXlvdXREYXRhID0gc2VydmljZUltcGxfLmdldExheW91dERhdGEoKTsKLQlpZiAobGF5b3V0RGF0YSBpbnN0YW5jZW9mIEdyaWREYXRhKSB7Ci0JCSgoR3JpZERhdGEpbGF5b3V0RGF0YSkud2lkdGhIaW50ID0gMjI1OwotCX0KLQkKLQlvYmplY3RNb2RpZnlMaXN0ZW5lcl8gPSBuZXcgTW9kaWZ5TGlzdGVuZXIoKXsKLQkJcHVibGljIHZvaWQgbW9kaWZ5VGV4dChNb2RpZnlFdmVudCBlKSB7Ci0JCQlpZiAoc2VydmljZUltcGxfLmdldFRleHQoKS5pbmRleE9mKCc6JykgPiAwKSB7Ci0JCSAgICAgICAgdGltZXJfID0gVGltZXIubmV3SW5zdGFuY2UodGltZXJfLCBEaXNwbGF5LmdldEN1cnJlbnQoKSwgQ2xpZW50V2l6YXJkV2lkZ2V0LnRoaXMpOwotCQkgICAgICAgIHRpbWVyXy5zdGFydFRpbWVyKCk7Ci0JCQl9Ci0JCSAgICBlbHNlCi0JCSAgICAgICAgcnVuKCk7Ci0JCX0KLQl9OwotCQotCXNlcnZpY2VJbXBsXy5hZGRNb2RpZnlMaXN0ZW5lcihvYmplY3RNb2RpZnlMaXN0ZW5lcl8pOwotCQotCWJyb3dzZUJ1dHRvbl8gPSB1dGlscy5jcmVhdGVQdXNoQnV0dG9uKHR5cGVDb21wb3NpdGUsCi0JCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX0JST1dTRSwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9CVVRUT05fQlJPV1NFX0lNUEwsIG51bGwpOwotCQotCWJyb3dzZUJ1dHRvbl8uYWRkU2VsZWN0aW9uTGlzdGVuZXIobmV3IFdTRExCcm93c2VMaXN0ZW5lcigpKTsKLQkKLQl1dGlscy5jcmVhdGVIb3Jpem9udGFsU2VwYXJhdG9yKHBhcmVudCwgMSk7Ci0JCi0JQ29tcG9zaXRlIGNsaWVudENvbXBvc2l0ZSA9IHV0aWxzLmNyZWF0ZUNvbXBvc2l0ZSggcGFyZW50LCAxLCAwLCAwICk7Ci0JCi0gICAgY2xpZW50V2lkZ2V0XyA9IG5ldyBXZWJTZXJ2aWNlQ2xpZW50VHlwZVdpZGdldCh0cnVlKTsKLSAgICBjbGllbnRXaWRnZXRfLmFkZENvbnRyb2xzKGNsaWVudENvbXBvc2l0ZSAsIHN0YXR1c0xpc3RlbmVyICk7Ci0gICAKLSAgICAvLyAgQ3JlYXRlIHRlc3Qgc2VydmljZSBjaGVjayBib3guCi0gICAgQ29tcG9zaXRlIGJ1dHRvbkdyb3VwID0gdXRpbHMuY3JlYXRlQ29tcG9zaXRlKGNsaWVudENvbXBvc2l0ZSwxKTsKLSAgICAKLSAgICAvLyBDcmVhdGUgbW9uaXRvciBzZXJ2aWNlIGNoZWNrIGJveC4KLSAgICBtb25pdG9yU2VydmljZV8gPSB1dGlscy5jcmVhdGVDaGVja2JveChidXR0b25Hcm91cCAsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5DSEVDS0JPWF9NT05JVE9SX1dFQlNFUlZJQ0UsCi0gICAgCQkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdQUl9DSEVDS0JPWF9NT05JVE9SX1NFUlZJQ0UsCi0gICAgCQkJCQkJCQkJSU5GT1BPUF9XU1dTQ0VOX0NIRUNLQk9YX01PTklUT1JfU0VSVklDRSk7Ci0KLSAgICAvL3Nob3cgb3ZlcndyaXRlIGlmIGl0IGlzIGVuYWJsZWQgaW4gdGhlIHByZWZlcmVuY2VzCi0gICAgaWYgKGdldFJlc291cmNlQ29udGV4dCgpLmlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCkpIHsKLQkJTGFiZWwgcHJlZlNlcGFyYXRvciA9IHV0aWxzLmNyZWF0ZUhvcml6b250YWxTZXBhcmF0b3IocGFyZW50LCAxKTsKLQkJcHJlZlNlcGFyYXRvci5zZXRUZXh0KCJGaWxlIE9wdGlvbnMiKTsKLQkJQ29tcG9zaXRlIHByZWZCdXR0b25QYW5lbCA9IHV0aWxzLmNyZWF0ZUNvbXBvc2l0ZShwYXJlbnQsIDEpOwotCQlvdmVyd3JpdGVCdXR0b25fID0gdXRpbHMuY3JlYXRlQ2hlY2tib3gocHJlZkJ1dHRvblBhbmVsLAotCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5DSEVDS0JPWF9PVkVSV1JJVEVfRklMRVMsIAotCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fQlVUVE9OX09WRVJXUklURV9GSUxFUywgCi0JCQkJSU5GT1BPUF9XU1dTQ0VOX0NIRUNLQk9YX09WRVJXUklURSk7Ci0JCW92ZXJ3cml0ZUJ1dHRvbl8uc2V0U2VsZWN0aW9uKGdldFJlc291cmNlQ29udGV4dCgpCi0JCQkJLmlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCkpOwotCQlvdmVyd3JpdGVCdXR0b25fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotCQkJcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQkJCWdldFJlc291cmNlQ29udGV4dCgpLnNldE92ZXJ3cml0ZUZpbGVzRW5hYmxlZChvdmVyd3JpdGVCdXR0b25fLmdldFNlbGVjdGlvbigpKTsKLQkJCX0KLQkJfSk7Ci0JfQotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZUNvbnRleHQoIFJlc291cmNlQ29udGV4dCBjb250ZXh0ICkKLSAgeyAgICAKLQkgIHJlc291cmNlQ29udGV4dF8gPSBjb250ZXh0OwotICB9Ci0gICAKLSAgcHVibGljIFJlc291cmNlQ29udGV4dCBnZXRSZXNvdXJjZUNvbnRleHQoKQotICB7ICAgCi0gICAgaWYgKHJlc291cmNlQ29udGV4dF8gPT0gbnVsbCkgewotCQlyZXNvdXJjZUNvbnRleHRfID0gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpCi0JCQkJLmdldFJlc291cmNlQ29udGV4dCgpOwotCX0KLQlyZXR1cm4gcmVzb3VyY2VDb250ZXh0XzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIoIFR5cGVSdW50aW1lU2VydmVyIGlkcyApCi0gIHsJICAKLSAgICBjbGllbnRXaWRnZXRfLnNldFR5cGVSdW50aW1lU2VydmVyKCBpZHMgKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50UHJvamVjdE5hbWUoU3RyaW5nIG5hbWUpCi0gIHsKLQkgIGNsaWVudFdpZGdldF8uc2V0Q2xpZW50UHJvamVjdE5hbWUobmFtZSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudEVhclByb2plY3ROYW1lKFN0cmluZyBuYW1lKQotICB7Ci0JICBjbGllbnRXaWRnZXRfLnNldENsaWVudEVhclByb2plY3ROYW1lKG5hbWUpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRDb21wb25lbnRUeXBlKFN0cmluZyBuYW1lKQotICB7Ci0JICBjbGllbnRXaWRnZXRfLnNldENsaWVudENvbXBvbmVudFR5cGUobmFtZSk7CSAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudE5lZWRFQVIoYm9vbGVhbiBiKQotICB7Ci0JICBjbGllbnRXaWRnZXRfLnNldENsaWVudE5lZWRFQVIoYik7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50UnVudGltZUlkKCkKLSAgewotCSAgcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0Q2xpZW50UnVudGltZUlkKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoKQotICB7Ci0JICByZXR1cm4gY2xpZW50V2lkZ2V0Xy5nZXRDbGllbnRFYXJQcm9qZWN0TmFtZSgpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFByb2plY3ROYW1lKCkKLSAgewotCSAgcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0Q2xpZW50UHJvamVjdE5hbWUoKTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDbGllbnRDb21wb25lbnRUeXBlKCkKLSAgewotCSAgcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0Q2xpZW50Q29tcG9uZW50VHlwZSgpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRDbGllbnROZWVkRUFSKCkKLSAgewotCSAgcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0Q2xpZW50TmVlZEVBUigpOwotICB9Ci0gIAotIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VVUkkoU3RyaW5nIHVyaSkKLSB7Ci0gICAgIHdlYlNlcnZpY2VVUklfID0gdXJpOyAgICAKLSB9Ci0JcHVibGljIHZvaWQgZXh0ZXJuYWxpemUoKSB7Ci0JCXN1cGVyLmV4dGVybmFsaXplKCk7Ci0JCQkJaWYgKGdldENsaWVudFR5cGVSdW50aW1lU2VydmVyKCkgIT0gbnVsbCApIHsKLQkJCQkgICAgc2VydmljZUltcGxfLnN0b3JlV2lkZ2V0SGlzdG9yeShnZXRDbGllbnRUeXBlUnVudGltZVNlcnZlcigpLmdldFR5cGVJZCgpKTsKLQkJCX0KLQl9Ci1wdWJsaWMgdm9pZCBpbnRlcm5hbGl6ZSgpIHsJCQotCXNlcnZpY2VJbXBsXy5yZW1vdmVNb2RpZnlMaXN0ZW5lcihvYmplY3RNb2RpZnlMaXN0ZW5lcl8pOwotCWlmICh3ZWJTZXJ2aWNlVVJJXyAhPSBudWxsICYmIHdlYlNlcnZpY2VVUklfLmxlbmd0aCgpICE9IDApCi0JCXNlcnZpY2VJbXBsXy5zZXRUZXh0KHdlYlNlcnZpY2VVUklfKTsgIAotCWlmIChnZXRDbGllbnRUeXBlUnVudGltZVNlcnZlcigpICE9IG51bGwgKSB7Ci0JICAgc2VydmljZUltcGxfLnJlc3RvcmVXaWRnZXRIaXN0b3J5KGdldENsaWVudFR5cGVSdW50aW1lU2VydmVyKCkuZ2V0VHlwZUlkKCkpOwotCX0KLQlzZXJ2aWNlSW1wbF8uYWRkTW9kaWZ5TGlzdGVuZXIob2JqZWN0TW9kaWZ5TGlzdGVuZXJfKTsKLQkJCi0JRWNsaXBzZUlQYXRoMlVSTFN0cmluZ1RyYW5zZm9ybWVyIHRyYW5zZm9ybWVyID0gbmV3IEVjbGlwc2VJUGF0aDJVUkxTdHJpbmdUcmFuc2Zvcm1lcigpOwotCXdlYlNlcnZpY2VVUklfID0gKFN0cmluZykgdHJhbnNmb3JtZXIudHJhbnNmb3JtKHdlYlNlcnZpY2VVUklfKTsgICAgCi19Ci0gCi0gcHVibGljIHZvaWQgc2V0UHJvamVjdChJUHJvamVjdCBwcm9qZWN0KQotIHsKLSAgICAgcHJvamVjdF8gPSBwcm9qZWN0OwotIH0KLSAgcHVibGljIHZvaWQgc2V0Q29tcG9uZW50TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgICAgY29tcG9uZW50TmFtZV8gPSBuYW1lOyAgICAgIAotICB9IAotICAKLSAgcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlVVJJKCkKLSAgewotICAgICAgcmV0dXJuIHdlYlNlcnZpY2VVUklfIDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRXc2RsVVJJKCkKLSAgewotCSAgcmV0dXJuIGdldFdlYlNlcnZpY2VVUkkoKTsKLSAgfQotICAKLSAgcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKQotICB7Ci0gICAgICByZXR1cm4gcHJvamVjdF87Ci0gIH0KLSAgCi0gICBwdWJsaWMgU3RyaW5nIGdldENvbXBvbmVudE5hbWUoKQotICAgewotICAgICAgIHJldHVybiBjb21wb25lbnROYW1lXyA7Ci0gICB9Ci0gIAotICAgcHVibGljIFdlYlNlcnZpY2VzUGFyc2VyIGdldFdlYlNlcnZpY2VzUGFyc2VyKCkKLQl7Ci0JCXJldHVybiBXU0RMUGFyc2VyRmFjdG9yeS5nZXRXU0RMUGFyc2VyKCk7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlcikKLQl7Ci0JCXBhcnNlcl8gPSBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpOwotCQljbGllbnRXaWRnZXRfLnNldFdlYlNlcnZpY2VzUGFyc2VyKHBhcnNlcl8pOwotCX0KLSAgIAotICBwdWJsaWMgVHlwZVJ1bnRpbWVTZXJ2ZXIgZ2V0Q2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIoKQotICB7Ci0gICAgcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoKTsgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJbnN0YWxsQ2xpZW50KCBCb29sZWFuIGluc3RhbGwpCi0gIHsKLSAgICBjbGllbnRXaWRnZXRfLnNldEluc3RhbGxDbGllbnQoIGluc3RhbGwgKTsKLSAgfQotICAKLSAgcHVibGljIEJvb2xlYW4gZ2V0SW5zdGFsbENsaWVudCgpCi0gIHsKLQkgIHJldHVybiBjbGllbnRXaWRnZXRfLmdldEluc3RhbGxDbGllbnQoKTsgICAKLSAgfQotICAKLSAgcHVibGljIEJvb2xlYW4gZ2V0VGVzdFNlcnZpY2UoKQotICB7Ci0JICByZXR1cm4gY2xpZW50V2lkZ2V0Xy5nZXRUZXN0Q2xpZW50KCk7IAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRUZXN0U2VydmljZSggQm9vbGVhbiB2YWx1ZSApCi0gIHsKLSAgICAgIGNsaWVudFdpZGdldF8uc2V0VGVzdENsaWVudCh2YWx1ZSk7ICAKLSAgfQotICAKLSAgcHVibGljIGludCBnZXRDbGllbnRHZW5lcmF0aW9uKCkKLSAgewotCSAgcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0Q2xpZW50R2VuZXJhdGlvbigpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRHZW5lcmF0aW9uKGludCB2YWx1ZSkKLSAgewotCSAgY2xpZW50V2lkZ2V0Xy5zZXRDbGllbnRHZW5lcmF0aW9uKHZhbHVlKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RGV2ZWxvcENsaWVudChib29sZWFuIGRldmVsb3ApIHsKLQkJY2xpZW50V2lkZ2V0Xy5zZXREZXZlbG9wQ2xpZW50KCBkZXZlbG9wICk7Ci0JfQotCi0JcHVibGljIGJvb2xlYW4gZ2V0RGV2ZWxvcENsaWVudCgpIHsJCQotCQlyZXR1cm4gY2xpZW50V2lkZ2V0Xy5nZXREZXZlbG9wQ2xpZW50KCk7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldEFzc2VtYmxlQ2xpZW50KGJvb2xlYW4gYXNzZW1ibGUpIHsKLQkJY2xpZW50V2lkZ2V0Xy5zZXRBc3NlbWJsZUNsaWVudCggYXNzZW1ibGUgKTsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBnZXRBc3NlbWJsZUNsaWVudCgpIHsJCQotCQlyZXR1cm4gY2xpZW50V2lkZ2V0Xy5nZXRBc3NlbWJsZUNsaWVudCgpOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXREZXBsb3lDbGllbnQoYm9vbGVhbiBkZXBsb3kpIHsKLQkJY2xpZW50V2lkZ2V0Xy5zZXREZXBsb3lDbGllbnQoIGRlcGxveSApOwotCX0KLQotCXB1YmxpYyBib29sZWFuIGdldERlcGxveUNsaWVudCgpIHsJCQotCQlyZXR1cm4gY2xpZW50V2lkZ2V0Xy5nZXREZXBsb3lDbGllbnQoKTsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0U3RhcnRDbGllbnQoQm9vbGVhbiBzdGFydCkgewotCQljbGllbnRXaWRnZXRfLnNldFN0YXJ0Q2xpZW50KCBzdGFydCApOwotCX0KLQotCXB1YmxpYyBCb29sZWFuIGdldFN0YXJ0Q2xpZW50KCkgewkKLQkJcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0U3RhcnRDbGllbnQoKTsKLQl9Ci0gIAotICBwdWJsaWMgQm9vbGVhbiBnZXRNb25pdG9yU2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IEJvb2xlYW4obW9uaXRvclNlcnZpY2VfLmdldFNlbGVjdGlvbigpKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0TW9uaXRvclNlcnZpY2UoQm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIG1vbml0b3JTZXJ2aWNlXy5zZXRTZWxlY3Rpb24odmFsdWUuYm9vbGVhblZhbHVlKCkpOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZ2V0U3RhdHVzKCkgewotCQkJCQotCQl2YWxpZE9iamVjdFNlbGVjdGlvbl8gPSBmYWxzZTsJLy8gYXNzdW1lIGZhbHNlIGF0IGZpcnN0Ci0KLQkJSVN0YXR1cyBtaXNzaW5nRmllbGRTdGF0dXMgPSBjaGVja01pc3NpbmdGaWVsZFN0YXR1cygpOwotCQlpZiAobWlzc2luZ0ZpZWxkU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUikgewotCQkJcmV0dXJuIG1pc3NpbmdGaWVsZFN0YXR1czsKLQkJfQotCi0JCUlTdGF0dXMgaW52YWxpZFNlcnZpY2VJbXBsU3RhdHVzID0gY2hlY2tTZXJ2aWNlSW1wbFRleHRTdGF0dXMoKTsKLQkJaWYgKGludmFsaWRTZXJ2aWNlSW1wbFN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IpIHsKLQkJCXJldHVybiBpbnZhbGlkU2VydmljZUltcGxTdGF0dXM7Ci0JCX0KLQotCQlJU3RhdHVzIHBvc3NpYmxlRXJyb3JTdGF0dXMgPSBjaGVja0Vycm9yU3RhdHVzKCk7Ci0JCWlmIChwb3NzaWJsZUVycm9yU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUikgewotCQkJcmV0dXJuIHBvc3NpYmxlRXJyb3JTdGF0dXM7Ci0JCX0KLQotCQlJU3RhdHVzIHBvc3NpYmxlV2FybmluZ1N0YXR1cyA9IGNoZWNrV2FybmluZ1N0YXR1cygpOwotCQlpZiAocG9zc2libGVXYXJuaW5nU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5XQVJOSU5HKSB7Ci0JCQlyZXR1cm4gcG9zc2libGVXYXJuaW5nU3RhdHVzOwotCQl9Ci0KLQkJLy8gaWYgbm8gZXJyb3JzIG9yIHdhcm5pbmdzIHdlcmUgZm91bmQsIGNsZWFyIHRoZSB2YWxpZGF0aW9uIHN0YXRlLgotCQl2YWxpZGF0aW9uU3RhdGVfID0gVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX05PTkU7Ci0JCWNsaWVudFdpZGdldF8uc2V0VmFsaWRhdGlvblN0YXRlKFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9OT05FKTsKLQotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0JCi0JcHJpdmF0ZSBJU3RhdHVzIGNoZWNrTWlzc2luZ0ZpZWxkU3RhdHVzKCkgewotCi0JCWlmICh2YWxpZGF0aW9uU3RhdGVfID09IFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9BTEwpIHsKLQkJCWlmIChzZXJ2aWNlSW1wbF8uZ2V0VGV4dCgpLnRyaW0oKS5sZW5ndGgoKSA9PSAwKSB7Ci0JCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfTk9fU0VSVklDRV9TRUxFQ1RJT04sIG5ldyBTdHJpbmdbXXtDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfV0VCU0VSVklDRUlNUEx9KSk7Ci0JCQl9Ci0JCX0KLQkJCi0JCUlTdGF0dXMgY2xpZW50TWlzc2luZ0ZpZWxkc1N0YXR1cyA9IGNsaWVudFdpZGdldF8uY2hlY2tNaXNzaW5nRmllbGRTdGF0dXMoKTsKLQkJaWYgKGNsaWVudE1pc3NpbmdGaWVsZHNTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLkVSUk9SKSB7Ci0JCQlyZXR1cm4gY2xpZW50TWlzc2luZ0ZpZWxkc1N0YXR1czsKLQkJfQotCQkKLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0KLQl9Ci0KLQlwcml2YXRlIElTdGF0dXMgY2hlY2tFcnJvclN0YXR1cygpIHsKLQkJSVN0YXR1cyBjbGllbnRTaWRlRXJyb3JTdGF0dXMgPSBjbGllbnRXaWRnZXRfLmNoZWNrRXJyb3JTdGF0dXMoKTsKLQkJaWYgKGNsaWVudFNpZGVFcnJvclN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IpIHsKLQkJCXJldHVybiBjbGllbnRTaWRlRXJyb3JTdGF0dXM7Ci0JCX0KLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfQotCi0JcHJpdmF0ZSBJU3RhdHVzIGNoZWNrV2FybmluZ1N0YXR1cygpIHsKLQkJSVN0YXR1cyBjbGllbnRXYXJuaW5nU3RhdHVzID0gY2xpZW50V2lkZ2V0Xy5jaGVja1dhcm5pbmdTdGF0dXMoKTsKLQkJaWYgKGNsaWVudFdhcm5pbmdTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLldBUk5JTkcpIHsKLQkJCXJldHVybiBjbGllbnRXYXJuaW5nU3RhdHVzOwotCQl9Ci0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0JCi0JCi0JLypjYWxsIHZhbGlkYXRpb24gY29kZSBpbiB0aGUgb2JqZWN0IHNlbGVjdGlvbiB3aWRnZXQgdG8gZW5zdXJlCi0JIGFueSBtb2RpZmljYXRpb25zIHRvIHRoZSBzZXJ2aWNlSW1wbF8gZmllbGQgYXJlIHZhbGlkKi8KLQlwcml2YXRlIElTdGF0dXMgY2hlY2tTZXJ2aWNlSW1wbFRleHRTdGF0dXMoKSB7Ci0JCQotCQlTdHJpbmcgZmllbGRUZXh0ID0gc2VydmljZUltcGxfLmdldFRleHQoKS50cmltKCk7Ci0KLQkJaWYgKHdzZGxWYWxpZGF0b3JXaWRnZXRfID09IG51bGwpCi0JCQl3c2RsVmFsaWRhdG9yV2lkZ2V0XyA9IG5ldyBXU0RMU2VsZWN0aW9uV2lkZ2V0V3JhcHBlcigpOwotCQkKLQkJdmFsaWRPYmplY3RTZWxlY3Rpb25fID0gd3NkbFZhbGlkYXRvcldpZGdldF8udmFsaWRhdGUoZmllbGRUZXh0KTsKLQkJCQkKLQkJaWYgKCF2YWxpZE9iamVjdFNlbGVjdGlvbl8pCi0JCXsKLQkJCXJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0lOVkFMSURfU0VSVklDRV9ERUYpOwkJCQotCQl9CQkKLQkJCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQkKLQlwcml2YXRlIHZvaWQgY2FsbE9iamVjdFRyYW5zZm9ybWF0aW9uKElQcm9qZWN0IHByb2plY3QsIFN0cmluZyBjb21wb25lbnROYW1lLAotCQkJU3RyaW5nIHdzZGxVUkkpCi0JewotCQkgICBXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZCB3c2RsT3V0cHV0Q29tbWFuZCA9IG5ldyBXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZCgpOwotCQkgICB3c2RsT3V0cHV0Q29tbWFuZC5zZXRDb21wb25lbnROYW1lKGNvbXBvbmVudE5hbWUpOwotCQkgICB3c2RsT3V0cHV0Q29tbWFuZC5zZXRQcm9qZWN0KHByb2plY3QpOwotCQkgICB3c2RsT3V0cHV0Q29tbWFuZC5zZXRXc2RsVVJJKHdzZGxVUkkpOwotCQkgICB3c2RsT3V0cHV0Q29tbWFuZC5zZXRUZXN0U2VydmljZShnZXRUZXN0U2VydmljZSgpLmJvb2xlYW5WYWx1ZSgpKTsKLQkJICAgd3NkbE91dHB1dENvbW1hbmQuc2V0V2ViU2VydmljZXNQYXJzZXIoZ2V0V2ViU2VydmljZXNQYXJzZXIoKSk7Ci0JCQotICAgICAgICAgICB3c2RsT3V0cHV0Q29tbWFuZC5leGVjdXRlKG51bGwsIG51bGwpOwotICAgICAgCi0gICAgICAgICAgIHNldENvbXBvbmVudE5hbWUod3NkbE91dHB1dENvbW1hbmQuZ2V0Q29tcG9uZW50TmFtZSgpKTsKLSAgICAgICAgICAgc2V0UHJvamVjdCh3c2RsT3V0cHV0Q29tbWFuZC5nZXRQcm9qZWN0KCkpOwotICAgICAgICAgICBzZXRXZWJTZXJ2aWNlc1BhcnNlcih3c2RsT3V0cHV0Q29tbWFuZC5nZXRXZWJTZXJ2aWNlc1BhcnNlcigpKTsKLSAgICAgICAgICAgc2V0V2ViU2VydmljZVVSSSh3c2RsT3V0cHV0Q29tbWFuZC5nZXRXc2RsVVJJKCkpOwotICAgICAgICAgICAKLSAgICAgICAgICAgLy8gYnVnIDE1OTkxMTogb3VyIHN0YXJ0aW5nIHBvaW50IGlzIGEgd3NkbCwgd2Ugc2hvdWxkIG5vdCBuZWVkIHRvCi0gICAgICAgICAgIC8vIHJlZnJlc2ggdGhlIHJ1bnRpbWUgZXZlcnl0aW1lIHRoZSB1c2VyIHNwZWNpZnkgYSBuZXcgd3NkbCBwYXRoCi0gICAgICAgICAgIC8vIHJlZnJlc2hDbGllbnRSdW50aW1lU2VsZWN0aW9uKCk7Ci0gICAgIH0KLQkKLSAgcHJpdmF0ZSBjbGFzcyBXU0RMQnJvd3NlTGlzdGVuZXIgaW1wbGVtZW50cyBTZWxlY3Rpb25MaXN0ZW5lcgotICB7Ci0JICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0JCQotCX0KLQkgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJICAKLQkJCS8vIGJ1ZyAyNjkwOTcgLSBVc2UgdGhlIFdlYiBTZXJ2aWNlIENsaWVudCdzIGRpYWxvZyBzaGVsbCwgbm90IHRoZSBwbGF0Zm9ybSB3b3JrYmVuY2gncyBzaGVsbC4KLQkJCXdzZGxEaWFsb2dfID0gbmV3IFdTRExTZWxlY3Rpb25EaWFsb2coRGlzcGxheS5nZXRDdXJyZW50KCkuZ2V0QWN0aXZlU2hlbGwoKSwgCi0JCQkJICAJCQkJCQluZXcgUGFnZUluZm8oQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkRJQUxPR19USVRJTEVfU0VSVklDRV9JTVBMX1NFTEVDVElPTiwgIiIsIAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKQotCQkJCSAgCQkJCQkJewkKLQkJCQkgIAkJCQkJCQlwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkKLQkJCQkgIAkJCQkJCQl7CSAgCQkJCQkJIAotCQkJCSAgCQkJCQkJCSAgIHJldHVybiBuZXcgV1NETFNlbGVjdGlvbldpZGdldFdyYXBwZXIoKTsKLQkJCQkgIAkJCQkJCQl9Ci0JCQkJICAJCQkJCQl9KSk7Ci0KLQkJICAgd3NkbERpYWxvZ18uc2V0Q29tcG9uZW50TmFtZShnZXRDb21wb25lbnROYW1lKCkpOwotCQkgICB3c2RsRGlhbG9nXy5zZXRQcm9qZWN0KGdldFByb2plY3QoKSk7Ci0JCSAgIHdzZGxEaWFsb2dfLnNldFdlYlNlcnZpY2VVUkkoIHNlcnZpY2VJbXBsXy5nZXRUZXh0KCkgKTsJCQotCQkgICAKLQkJICAgaW50IHJlc3VsdCA9IHdzZGxEaWFsb2dfLm9wZW4oKTsKLQkJICAgCi0JCSAgIGlmIChyZXN1bHQgPT0gRGlhbG9nLk9LKQotCQkgICB7Ci0JCQkgICBzZXJ2aWNlSW1wbF8ucmVtb3ZlTW9kaWZ5TGlzdGVuZXIob2JqZWN0TW9kaWZ5TGlzdGVuZXJfKTsKLQkJCSAgIHNlcnZpY2VJbXBsXy5zZXRUZXh0KHdzZGxEaWFsb2dfLmdldERpc3BsYXlhYmxlU2VsZWN0aW9uU3RyaW5nKCkpOwotCQkJICAgc2VydmljZUltcGxfLmFkZE1vZGlmeUxpc3RlbmVyKG9iamVjdE1vZGlmeUxpc3RlbmVyXyk7Ci0JCQkgICAKLQkJCSAgIC8vIGNhbGwgV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQgdG8gY2Fycnkgb3V0IGFueSB0cmFuc2Zvcm1hdGlvbiBvbiB0aGUgb2JqZWN0U2VsZWN0aW9uCi0JICAgICAgICAgICBjYWxsT2JqZWN0VHJhbnNmb3JtYXRpb24ocHJvamVjdF8sCi0JICAgICAgICAJCQl3c2RsRGlhbG9nXy5nZXRDb21wb25lbnROYW1lKCksIHdzZGxEaWFsb2dfLmdldFdlYlNlcnZpY2VVUkkoKSk7Ci0JICAgICAgICAgICAKLQkJICAgICAgIHZhbGlkYXRpb25TdGF0ZV8gPSBWYWxpZGF0aW9uVXRpbHMuVkFMSURBVEVfQUxMOwotCQkgICAgICAgY2xpZW50V2lkZ2V0Xy5zZXRWYWxpZGF0aW9uU3RhdGUoVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX0FMTCk7Ci0JCSAgICAgICBzdGF0dXNMaXN0ZW5lcl8uaGFuZGxlRXZlbnQobnVsbCk7IC8vdmFsaWRhdGUgdGhlIHBhZ2UKLQkJICAgfQotCQkgICB3c2RsRGlhbG9nXyA9IG51bGw7Ci0JICB9Ci0JfQotfQotCi0KLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODkyYzhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNTI0ICAgMTQyNjM1IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDcyOCAgIDE1MDU2MCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA3MjggICAxNTEwNzgga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNDAyICAgMjI1Mzc4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBDbGllbnQgd2l6YXJkIHJ1bnRpbWUvc2VydmVyIGRlZmF1bHRpbmcgaXMgbm90IHJlc3BlY3RpbmcgdGhlIHByZWZlcmVuY2UKLSAqIDIwMDgwNTI4ICAgMjM0NDg3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBQZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBpbiBXZWIgc2VydmljZSBjbGllbnQgZ2VuCi0gKiAyMDA4MDYxMyAgIDIzNjUyMyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgT3ZlcndyaXRlIHNldHRpbmcgb24gV2ViIHNlcnZpY2Ugd2l6YXJkIGlzIGNvdXBsZWQgd2l0aCBwcmVmZXJlbmNlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwucGx1Z2luLldlYlNlcnZpY2VQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQmFzZUVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLXB1YmxpYyBjbGFzcyBDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17ICAgIAotCXByaXZhdGUgaW50IGNsaWVudEdlbmVyYXRpb25fOwotCXByaXZhdGUgYm9vbGVhbiBkZXZlbG9wQ2xpZW50XzsKLQlwcml2YXRlIGJvb2xlYW4gYXNzZW1ibGVDbGllbnRfOwotCXByaXZhdGUgYm9vbGVhbiBkZXBsb3lDbGllbnRfOwotCXByaXZhdGUgYm9vbGVhbiBpbnN0YWxsQ2xpZW50XzsKLQlwcml2YXRlIGJvb2xlYW4gc3RhcnRDbGllbnRfOwotCXByaXZhdGUgYm9vbGVhbiB0ZXN0Q2xpZW50XzsKLQlwcml2YXRlIGJvb2xlYW4gY2xpZW50T25seV8gPSBmYWxzZTsKLQlwcml2YXRlIFR5cGVSdW50aW1lU2VydmVyIGNsaWVudFR5cGVSdW50aW1lU2VydmVyXzsKLQkgIAotCXB1YmxpYyBDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpIHsKLQl9Ci0JCi0JCi0JLyoqCi0JICogQHBhcmFtIGNsaWVudE9ubHkgIFNldCB0byB0cnVlIGZvciBpZiBjYWxsZWQgZnJvbSBDbGllbnRXaWRnZXRXaXphcmQKLQkgKi8KLQlwdWJsaWMgQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQoYm9vbGVhbiBjbGllbnRPbmx5KSB7Ci0JCWNsaWVudE9ubHlfID0gY2xpZW50T25seTsKLQl9Ci0JCi0gIHB1YmxpYyBCb29sZWFuIGdldFRlc3RTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBuZXcgQm9vbGVhbiggZ2V0U2NlbmFyaW9Db250ZXh0KCkuZ2V0VGVzdFdlYlNlcnZpY2UoKSApOwotICB9Ci0gIAotICBwdWJsaWMgQm9vbGVhbiBnZXRNb25pdG9yU2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IEJvb2xlYW4oIGdldFNjZW5hcmlvQ29udGV4dCgpLmdldE1vbml0b3JXZWJTZXJ2aWNlKCkpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRJbnN0YWxsQ2xpZW50KCkKLSAgewotICAgIHJldHVybiBpbnN0YWxsQ2xpZW50XzsgCi0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldFJ1blRlc3RDbGllbnQoKQotICB7Ci0gICAgcmV0dXJuIGdldFNjZW5hcmlvQ29udGV4dCgpLmlzTGF1bmNoU2FtcGxlRW5hYmxlZCgpIDsgIAotICB9Ci0gIAotICBwdWJsaWMgaW50IGdldENsaWVudEdlbmVyYXRpb24oKQotICB7Ci0JICByZXR1cm4gY2xpZW50R2VuZXJhdGlvbl87Ci0gIH0KLQotICBwdWJsaWMgUmVzb3VyY2VDb250ZXh0IGdldFJlc291cmNlQ29udGV4dCgpCi0gIHsgCi0gICAgcmV0dXJuICgoQmFzZUVjbGlwc2VFbnZpcm9ubWVudCkgZ2V0RW52aXJvbm1lbnQoKSkuZ2V0UmVzb3VyY2VDb250ZXh0KCk7Ci0gIH0KLSAgCi0gIC8vIEN1cnJlbnQgU2NlbmFyaW9Db250ZXh0IGlzIHVzZWQgdG8gZGVmYXVsdCB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgd2l6YXJkLiAgVGhlIAotICAvLyBwcm9wZXJ0aWVzIGluIFNjZW5hcmlvQ29udGV4dCBhcmUgbWFwcGVkIGluZGl2aWR1YWwuICBUaGVyZWZvcmUsIFNjZW5hcmlvQ29udGV4dAotICAvLyBzaG91bGQgbm90IGFsc28gYmUgbWFwcGVkLgotICBwcm90ZWN0ZWQgU2NlbmFyaW9Db250ZXh0IGdldFNjZW5hcmlvQ29udGV4dCgpCi0gIHsKLSAgICByZXR1cm4gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNjZW5hcmlvQ29udGV4dCgpOwotICB9Ci0gIAotICAvLyBUT0RPIFNldCBjbGllbnQgbmFtZSBkZWZhdWx0cyBoZXJlLiAgCi0gIHB1YmxpYyBUeXBlUnVudGltZVNlcnZlciBnZXRDbGllbnRUeXBlUnVudGltZVNlcnZlcigpCi0gIHsKLQlpZiAoY2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXJfID09IG51bGwpIHsKLQkgICAgU3RyaW5nIHR5cGUgPSBnZXRTY2VuYXJpb0NvbnRleHQoKS5nZXRDbGllbnRXZWJTZXJ2aWNlVHlwZSgpOwotCSAgICBTdHJpbmcgcnVudGltZSAgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXREZWZhdWx0Q2xpZW50UnVudGltZVZhbHVlRm9yKHR5cGUpOwotCSAgICBTdHJpbmcgZmFjdG9yeUlEID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0RGVmYXVsdENsaWVudFNlcnZlclZhbHVlRm9yKHR5cGUpOwotCSAgICBjbGllbnRUeXBlUnVudGltZVNlcnZlcl8gPSBuZXcgVHlwZVJ1bnRpbWVTZXJ2ZXIoKTsKLQkgICAgCi0JICAgIGNsaWVudFR5cGVSdW50aW1lU2VydmVyXy5zZXRUeXBlSWQoIHR5cGUgKTsKLQkgICAgY2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXJfLnNldFJ1bnRpbWVJZCggcnVudGltZSApOwotCSAgICBjbGllbnRUeXBlUnVudGltZVNlcnZlcl8uc2V0U2VydmVySWQoIGZhY3RvcnlJRCApOwotCX0KLQkKLSAgICByZXR1cm4gY2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXJfOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgaW5mbykgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbgotICB7Ci0JICBkZWZhdWx0Q2xpZW50U2NhbGUoKTsKLQkgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgdm9pZCBkZWZhdWx0Q2xpZW50U2NhbGUoKSB7Ci0JICBjbGllbnRHZW5lcmF0aW9uXyA9IGdldFNjZW5hcmlvQ29udGV4dCgpLmdldEdlbmVyYXRlQ2xpZW50KCk7Ci0JICAKLQkgIGlmIChjbGllbnRPbmx5XyAmJiBjbGllbnRHZW5lcmF0aW9uXyA9PSBTY2VuYXJpb0NvbnRleHQuV1NfTk9ORSkgewotCQkgIGRldmVsb3BDbGllbnRfID0gdHJ1ZTsKLQkJICBhc3NlbWJsZUNsaWVudF8gPSB0cnVlOwotCQkgIGRlcGxveUNsaWVudF8gPSB0cnVlOwotCQkgIGNsaWVudEdlbmVyYXRpb25fID0gU2NlbmFyaW9Db250ZXh0LldTX0RFUExPWTsKLQkgIH0gZWxzZSB7Ci0JCSAgZGV2ZWxvcENsaWVudF8gPSBjbGllbnRHZW5lcmF0aW9uXyA8PSBTY2VuYXJpb0NvbnRleHQuV1NfREVWRUxPUDsKLQkJICBhc3NlbWJsZUNsaWVudF8gPSBjbGllbnRHZW5lcmF0aW9uXyA8PSBTY2VuYXJpb0NvbnRleHQuV1NfQVNTRU1CTEU7Ci0JCSAgZGVwbG95Q2xpZW50XyA9IGNsaWVudEdlbmVyYXRpb25fIDw9IFNjZW5hcmlvQ29udGV4dC5XU19ERVBMT1k7Ci0JICB9Ci0JICBpbnN0YWxsQ2xpZW50XyA9IGNsaWVudEdlbmVyYXRpb25fIDw9IFNjZW5hcmlvQ29udGV4dC5XU19JTlNUQUxMOwotCSAgc3RhcnRDbGllbnRfID0gY2xpZW50R2VuZXJhdGlvbl8gPD0gU2NlbmFyaW9Db250ZXh0LldTX1NUQVJUOwotCSAgdGVzdENsaWVudF8gPSBjbGllbnRHZW5lcmF0aW9uXyA8PSBTY2VuYXJpb0NvbnRleHQuV1NfVEVTVDsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0RGV2ZWxvcENsaWVudCgpIHsKLQkgIHJldHVybiBkZXZlbG9wQ2xpZW50XzsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0QXNzZW1ibGVDbGllbnQoKSB7Ci0JICByZXR1cm4gYXNzZW1ibGVDbGllbnRfOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXREZXBsb3lDbGllbnQoKSB7Ci0JICByZXR1cm4gZGVwbG95Q2xpZW50XzsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0U3RhcnRDbGllbnQoKSB7Ci0JICByZXR1cm4gc3RhcnRDbGllbnRfOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRUZXN0Q2xpZW50KCkgewotCSAgcmV0dXJuIHRlc3RDbGllbnRfOwotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL0NsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9DbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NTExZTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL0NsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MjQgICAxNDI2MzUgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuVHlwZVJ1bnRpbWVTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotCi1wdWJsaWMgY2xhc3MgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17ICAgIAotICBwcml2YXRlIGJvb2xlYW4gdGVzdFNlcnZpY2VfOwotICBwcml2YXRlIGJvb2xlYW4gbW9uaXRvclNlcnZpY2U7Ci0gIHByaXZhdGUgUmVzb3VyY2VDb250ZXh0ICAgcmVzb3VyY2VDb250ZXh0XzsKLSAgcHJpdmF0ZSBUeXBlUnVudGltZVNlcnZlciBjbGllbnRJZHNfOwotICBwcml2YXRlIGJvb2xlYW4gaW5zdGFsbENsaWVudF87Ci0gIAotICBwcml2YXRlIFN0cmluZyB3ZWJTZXJ2aWNlVVJJXzsKLSAgcHJpdmF0ZSBJUHJvamVjdCBwcm9qZWN0XzsKLSAgcHJpdmF0ZSBTdHJpbmcgY29tcG9uZW50TmFtZV87Ci0gIHByaXZhdGUgYm9vbGVhbiBydW5UZXN0Q2xpZW50XzsKLSAgcHJpdmF0ZSBib29sZWFuIGRldmVsb3BDbGllbnRfOwotICBwcml2YXRlIGJvb2xlYW4gYXNzZW1ibGVDbGllbnRfOwotICBwcml2YXRlIGJvb2xlYW4gZGVwbG95Q2xpZW50XzsKLSAgcHJpdmF0ZSBib29sZWFuIHN0YXJ0Q2xpZW50XzsKLSAgcHJpdmF0ZSBib29sZWFuIHRlc3RDbGllbnRfOyAKLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldFRlc3RTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiB0ZXN0U2VydmljZV87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRUZXN0U2VydmljZSggYm9vbGVhbiB0ZXN0U2VydmljZSApCi0gIHsKLSAgICB0ZXN0U2VydmljZV8gPSB0ZXN0U2VydmljZTsgIAotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRSdW5UZXN0Q2xpZW50KCkKLSAgewotICAgIHJldHVybiBydW5UZXN0Q2xpZW50XzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFJ1blRlc3RDbGllbnQoIGJvb2xlYW4gcnVuVGVzdENsaWVudCApCi0gIHsKLSAgICBydW5UZXN0Q2xpZW50XyA9IHJ1blRlc3RDbGllbnQ7ICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0SW5zdGFsbENsaWVudCggYm9vbGVhbiBpbnN0YWxsQ2xpZW50KQotICB7Ci0gICAgaW5zdGFsbENsaWVudF8gPSBpbnN0YWxsQ2xpZW50OyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldEluc3RhbGxDbGllbnQoKQotICB7Ci0JcmV0dXJuIGluc3RhbGxDbGllbnRfOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldERldmVsb3BDbGllbnQoKSB7Ci0JCXJldHVybiBkZXZlbG9wQ2xpZW50XzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXREZXZlbG9wQ2xpZW50KGJvb2xlYW4gZGV2ZWxvcENsaWVudCkgewotCQl0aGlzLmRldmVsb3BDbGllbnRfID0gZGV2ZWxvcENsaWVudDsKLQl9CQotCQotCXB1YmxpYyBib29sZWFuIGdldEFzc2VtYmxlQ2xpZW50KCkgewotCQlyZXR1cm4gYXNzZW1ibGVDbGllbnRfOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldEFzc2VtYmxlQ2xpZW50KGJvb2xlYW4gYXNzZW1ibGVDbGllbnQpIHsKLQkJdGhpcy5hc3NlbWJsZUNsaWVudF8gPSBhc3NlbWJsZUNsaWVudDsKLQl9Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0RGVwbG95Q2xpZW50KCkgewotCQlyZXR1cm4gZGVwbG95Q2xpZW50XzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXREZXBsb3lDbGllbnQoYm9vbGVhbiBkZXBsb3lDbGllbnQpIHsKLQkJdGhpcy5kZXBsb3lDbGllbnRfID0gZGVwbG95Q2xpZW50OwotCX0KLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRTdGFydENsaWVudCgpIHsKLQkJcmV0dXJuIHN0YXJ0Q2xpZW50XzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRTdGFydENsaWVudChib29sZWFuIHN0YXJ0Q2xpZW50KSB7Ci0JCXRoaXMuc3RhcnRDbGllbnRfID0gc3RhcnRDbGllbnQ7Ci0JfQotCQotCXB1YmxpYyBib29sZWFuIGdldFRlc3RDbGllbnQoKSB7Ci0JCXJldHVybiB0ZXN0Q2xpZW50XzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRUZXN0Q2xpZW50KGJvb2xlYW4gdGVzdENsaWVudCkgewotCQl0aGlzLnRlc3RDbGllbnRfID0gdGVzdENsaWVudDsKLQl9Ci0gIHB1YmxpYyBib29sZWFuIGdldE1vbml0b3JTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBtb25pdG9yU2VydmljZTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0TW9uaXRvclNlcnZpY2UoYm9vbGVhbiBtb25pdG9yU2VydmljZSkKLSAgewotICAgIHRoaXMubW9uaXRvclNlcnZpY2UgPSBtb25pdG9yU2VydmljZTsKLSAgfQotICAKLSAgcHVibGljIFJlc291cmNlQ29udGV4dCBnZXRSZXNvdXJjZUNvbnRleHQoKQotICB7Ci0gICAgCi0gICAgcmV0dXJuIHJlc291cmNlQ29udGV4dF87Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFJlc291cmNlQ29udGV4dCggUmVzb3VyY2VDb250ZXh0IGNvbnRleHQgKQotICB7Ci0gICAgcmVzb3VyY2VDb250ZXh0XyA9IGNvbnRleHQ7ICAKLSAgfQotICAKLSAgcHVibGljIFR5cGVSdW50aW1lU2VydmVyIGdldENsaWVudFR5cGVSdW50aW1lU2VydmVyKCkKLSAgeyAgICAKLSAgICByZXR1cm4gY2xpZW50SWRzXzsgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRUeXBlUnVudGltZVNlcnZlciggVHlwZVJ1bnRpbWVTZXJ2ZXIgY2xpZW50SWRzICkKLSAgewotICAgIGNsaWVudElkc18gPSBjbGllbnRJZHM7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBpbmZvKSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRXc2RsVVJJKCkKLSAgewotICAgICAgcmV0dXJuIHdlYlNlcnZpY2VVUklfIDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0V3NkbFVSSShTdHJpbmcgdXJpKQotICB7Ci0gICAgICB3ZWJTZXJ2aWNlVVJJXyA9IHVyaTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0UHJvamVjdChJUHJvamVjdCBwcm9qZWN0KQotICB7Ci0gICAgICBwcm9qZWN0XyA9IHByb2plY3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRQcm9qZWN0KCkKLSAgewotICAgICAgcmV0dXJuIHByb2plY3RfOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDb21wb25lbnROYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gICAgICBjb21wb25lbnROYW1lXyA9IG5hbWU7Ci0gIH0gCi0gIAotICBwdWJsaWMgU3RyaW5nIGdldENvbXBvbmVudE5hbWUoKQotICB7Ci0gICAgICByZXR1cm4gY29tcG9uZW50TmFtZV8gOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL0NvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYxNWNjZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQwNCAxMzQ5MTMgICBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUgICAgICAgCi0gKiAyMDA2MDQyNiAgIDEzNTYxNCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZENvbnRlbnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVRhYmxlTGFiZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLkxhYmVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TZWxlY3Rpb25DaGFuZ2VkRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5UYWJsZVZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aW5kb3cuV2luZG93OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NjbGllbnQuU2VydmljZVJlZjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkhhbmRsZXJTZXJ2aWNlUmVmSGVscGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uSGFuZGxlclNlcnZpY2VSZWZIb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LkhhbmRsZXJUYWJsZUl0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLkNvbnRyb2xBZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuQ29udHJvbEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkltYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5Qb2ludDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuUmVjdGFuZ2xlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UYWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UYWJsZUNvbHVtbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0RGF0YUV2ZW50czsKLQotLyoqCi0gKiBDb25maWdDbGllbnRIYW5kbGVyc1RyZWVXaWRnZXQKLSAqICAKLSAqLwotcHVibGljIGNsYXNzIENvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQgZXh0ZW5kcyBTaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3IgewotCi0gIHByaXZhdGUgU3RyaW5nIHBsdWdpbklkXyA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiOwotCi0gIHByaXZhdGUgQ29tcG9zaXRlIHBhcmVudF87Ci0gIHByaXZhdGUgU3RyaW5nIG91dHB1dExvY2F0aW9uXzsKLSAgcHJpdmF0ZSBDb21wb3NpdGUgd2ViU2VydmljZVJlZkNvbXBfOwotICBwcml2YXRlIENvbWJvIHdlYlNlcnZpY2VSZWZDb21ib187Ci0gIHByaXZhdGUgVGV4dCB3ZWJTZXJ2aWNlRGVzY1RleHRfID0gbnVsbDsKLSAgcHJpdmF0ZSBUYWJsZSBoYW5kbGVyc1RhYmxlXzsKLSAgcHJpdmF0ZSBUYWJsZVZpZXdlciB0YWJsZVZpZXdlcl87Ci0gIHByaXZhdGUgQnV0dG9uIGFkZEJ1dHRvbl87Ci0gIHByaXZhdGUgQnV0dG9uIHJlbW92ZUJ1dHRvbl87Ci0gIHByaXZhdGUgQnV0dG9uIGdlblNrZWxldG9uUmFkaW9CdXR0b25fOwotICBwcml2YXRlIENvbXBvc2l0ZSBzb3VyY2VMb2NhdGlvbkNvbXBfOwotICBwcml2YXRlIENvbWJvIHNvdXJjZUxvY2F0aW9uQ29tYm9fOwotCi0gIHByaXZhdGUgSGFuZGxlclNlcnZpY2VSZWZIb2xkZXJbXSBoYW5kbGVyU2VydmljZVJlZkhvbGRlcl87Ci0gIHByaXZhdGUgSGFuZGxlclNlcnZpY2VSZWZIb2xkZXIgY3VycmVudEhTUkhfOwotICBwcml2YXRlIEhhc2h0YWJsZSBwYXRoc1RhYmxlXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgcHJpdmF0ZSBib29sZWFuIGlzTXVsdGlwbGVTZWxlY3Rpb25fID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiBpc0dlblNrZWxldG9uRW5hYmxlZF87Ci0gIHByaXZhdGUgU3RyaW5nIHNlcnZpY2VSZWZOYW1lXzsKLSAgcHJpdmF0ZSBpbnQgREVGQVVMVF9DT0xVTU5fV0lEVEggPSAxNTA7Ci0KLSAgLy8gLS0tLVRPT0xUSVBTIFNlY3Rpb24tLS0tCi0gIC8qIENPTlRFWFRfSUQgSERMUjAwMDEgZm9yIHRoZSBIYW5kbGVyIENvbmZpZyBQYWdlICovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfSERMUl9XU19IQU5ETEVSUyA9ICJIRExSMDAwMSI7IC8vJE5PTi1OTFMtMSQKLQotICAvKiBDT05URVhUX0lEIEhETFIwMDAyIGZvciB0aGUgSGFuZGxlciBDb25maWcgUGFnZSAqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX0hETFJfR0VOX1NLRUxFVE9OID0gIkhETFIwMDAyIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qIENPTlRFWFRfSUQgSERMUjAwMDMgZm9yIHRoZSBIYW5kbGVyIENvbmZpZyBQYWdlICovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfQ09NQk9fU09VUkNFX0xPQyA9ICJIRExSMDAwMyI7IC8vJE5PTi1OTFMtMSQKLQotICAvKiBDT05URVhUX0lEIEhETFIwMDA0IGZvciB0aGUgSGFuZGxlciBDb25maWcgUGFnZSAqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1dTX0NMSUVOVF9SRUYgPSAiSERMUjAwMDQiOyAvLyROT04tTkxTLTEkCi0KLSAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgcHVibGljIENvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQoKSB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIHB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGFkZENvbnRyb2xzKENvbXBvc2l0ZSBwYXJlbnQsIExpc3RlbmVyIHN0YXR1c0xpc3RlbmVyKSB7Ci0KLSAgICBVSVV0aWxzIHVpVXRpbHMgPSBuZXcgVUlVdGlscyhwbHVnaW5JZF8pOwotCi0gICAgcGFyZW50XyA9IHBhcmVudDsKLQotICAgIC8vIFdlYiBzZXJ2aWNlIHJlZmVyZW5jZSBjb21ibwotICAgIHdlYlNlcnZpY2VSZWZDb21wXyA9IHVpVXRpbHMuY3JlYXRlQ29tcG9zaXRlKHBhcmVudF8sIDIpOwotCi0gICAgQ29tcG9zaXRlIGRpc3BsYXlDb21wID0gbmV3IENvbXBvc2l0ZShwYXJlbnRfLCBTV1QuTk9ORSk7Ci0gICAgR3JpZExheW91dCBncmlkbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoMiwgZmFsc2UpOwotICAgIGRpc3BsYXlDb21wLnNldExheW91dChncmlkbGF5b3V0KTsKLSAgICBkaXNwbGF5Q29tcC5zZXRMYXlvdXREYXRhKHVpVXRpbHMuY3JlYXRlRmlsbEFsbCgpKTsKLQotICAgIGZpbmFsIENvbXBvc2l0ZSBoYW5kbGVyc0NvbXAgPSB1aVV0aWxzLmNyZWF0ZUNvbXBvc2l0ZShkaXNwbGF5Q29tcCwgMSk7Ci0gICAgR3JpZERhdGEgZ3JpZGRhdGEgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMIHxHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwgfCBHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9CRUdJTk5JTkcgCi0gICAgICAgICAgICB8IEdyaWREYXRhLlZFUlRJQ0FMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX1ZFUlRJQ0FMIHwgR3JpZERhdGEuRklMTF9WRVJUSUNBTCk7Ci0gICAgaGFuZGxlcnNDb21wLnNldExheW91dERhdGEoZ3JpZGRhdGEpOwotICAgIGhhbmRsZXJzQ29tcC5zZXRTaXplKDEzMCwgNjAwKTsKLSAgICAKLSAgICBDb21wb3NpdGUgYnV0dG9uc0NvbXAgPSB1aVV0aWxzLmNyZWF0ZUNvbXBvc2l0ZShkaXNwbGF5Q29tcCwgMSk7Ci0gICAgZ3JpZGRhdGEgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMIHwgR3JpZERhdGEuVkVSVElDQUxfQUxJR05fQkVHSU5OSU5HKTsKLSAgICBidXR0b25zQ29tcC5zZXRMYXlvdXREYXRhKGdyaWRkYXRhKTsKLQotICAgIFRleHQgaGFuZGxlcnNUZXh0ID0gbmV3IFRleHQoaGFuZGxlcnNDb21wLCBTV1QuUkVBRF9PTkxZKTsKLSAgICBoYW5kbGVyc1RleHQuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfSEFORExFUlNfQ09ORklHKTsKLSAgICBHcmlkRGF0YSBnZCA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwpOwotICAgIGdkLmhvcml6b250YWxTcGFuID0gMjsKLSAgICBoYW5kbGVyc1RleHQuc2V0TGF5b3V0RGF0YShnZCk7Ci0KLSAgICBoYW5kbGVyc1RhYmxlXyA9IHVpVXRpbHMuY3JlYXRlVGFibGUoaGFuZGxlcnNDb21wLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9FRElUX1dTX0hBTkRMRVJTLCBJTkZPUE9QX0hETFJfV1NfSEFORExFUlMsIFNXVC5NVUxUSSB8IFNXVC5GVUxMX1NFTEVDVElPTiB8IFNXVC5CT1JERVIpOwotICAgIGhhbmRsZXJzVGFibGVfLnNldEhlYWRlclZpc2libGUodHJ1ZSk7Ci0gICAgaGFuZGxlcnNUYWJsZV8uc2V0TGluZXNWaXNpYmxlKHRydWUpOwotCi0gICAgLy8gZW1wdHkgc3BhY2UKLSAgICBMYWJlbCB3c0xhYmVsID0gbmV3IExhYmVsKGJ1dHRvbnNDb21wLCBTV1QuTk9ORSk7Ci0gICAgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKTsKLSAgICBnZC5ob3Jpem9udGFsU3BhbiA9IDI7Ci0gICAgd3NMYWJlbC5zZXRMYXlvdXREYXRhKGdkKTsKLQotICAgIEJ1dHRvbiBtb3ZlVXBCdXR0b24gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oYnV0dG9uc0NvbXAsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9CVVRUT05fTU9WRV9VUCwgbnVsbCwgbnVsbCk7Ci0gICAgR3JpZERhdGEgbXVHcmlkZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIFBvaW50IG11c2l6ZSA9IG1vdmVVcEJ1dHRvbi5jb21wdXRlU2l6ZShTV1QuREVGQVVMVCwgU1dULkRFRkFVTFQpOwotICAgIG1vdmVVcEJ1dHRvbi5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uTGlzdGVuZXIoKSB7Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGhhbmRsZU1vdmVVcEJ1dHRvblNlbGVjdGVkKGV2ZW50KTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBCdXR0b24gbW92ZURvd25CdXR0b24gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oYnV0dG9uc0NvbXAsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9CVVRUT05fTU9WRV9ET1dOLCBudWxsLCBudWxsKTsKLSAgICBHcmlkRGF0YSBtZEdyaWRkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgUG9pbnQgbWRzaXplID0gbW92ZURvd25CdXR0b24uY29tcHV0ZVNpemUoU1dULkRFRkFVTFQsIFNXVC5ERUZBVUxUKTsKLSAgICBtb3ZlRG93bkJ1dHRvbi5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uTGlzdGVuZXIoKSB7Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGhhbmRsZU1vdmVEb3duQnV0dG9uU2VsZWN0ZWQoZXZlbnQpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIC8vIGVtcHR5IHNwYWNlCi0gICAgd3NMYWJlbCA9IG5ldyBMYWJlbChidXR0b25zQ29tcCwgU1dULk5PTkUpOwotICAgIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCk7Ci0gICAgZ2QuaG9yaXpvbnRhbFNwYW4gPSAyOwotICAgIHdzTGFiZWwuc2V0TGF5b3V0RGF0YShnZCk7Ci0KLSAgICBhZGRCdXR0b25fID0gdWlVdGlscy5jcmVhdGVQdXNoQnV0dG9uKGJ1dHRvbnNDb21wLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQlVUVE9OX0FERCwgbnVsbCwgbnVsbCk7Ci0gICAgR3JpZERhdGEgYWRkR3JpZGRhdGEgPSBuZXcgR3JpZERhdGEoKTsgCi0gICAgUG9pbnQgYWRkU2l6ZSA9IGFkZEJ1dHRvbl8uY29tcHV0ZVNpemUoU1dULkRFRkFVTFQsIFNXVC5ERUZBVUxUKTsKLSAgICBhZGRCdXR0b25fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25MaXN0ZW5lcigpIHsKLQotICAgICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLSAgICAgICAgaGFuZGxlQWRkQnV0dG9uU2VsZWN0ZWQoZXZlbnQpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHJlbW92ZUJ1dHRvbl8gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oYnV0dG9uc0NvbXAsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9CVVRUT05fUkVNT1ZFLCBudWxsLCBudWxsKTsKLSAgICBHcmlkRGF0YSByZW1HcmlkZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIFBvaW50IHJlbVNpemUgPSByZW1vdmVCdXR0b25fLmNvbXB1dGVTaXplKFNXVC5ERUZBVUxULCBTV1QuREVGQVVMVCk7Ci0gICAgcmVtb3ZlQnV0dG9uXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uTGlzdGVuZXIoKSB7Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGhhbmRsZVJlbW92ZUJ1dHRvblNlbGVjdGVkKGV2ZW50KTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgZW5hYmxlUmVtb3ZlKGZhbHNlKTsKLQotICAgIC8vIHNldCB0aGUgd2lkdGggdG8gdGhlIG1heCBvZiB0aGUgYnV0dG9uIGxhYmVscwotICAgIGludCB3aWR0aEhpbnQgPSAwOwotICAgIGludFtdIHNpemVzID0gbmV3IGludFtde211c2l6ZS54LCBtZHNpemUueCwgYWRkU2l6ZS54LCByZW1TaXplLngsIDEwMH07Ci0gICAgZm9yKGludCBqID0gMDsgaiA8IHNpemVzLmxlbmd0aDsgaisrKSB7Ci0gICAgCWlmIChzaXplc1tqXSA+IHdpZHRoSGludCkKLSAgICAJd2lkdGhIaW50ID0gc2l6ZXNbal07Ci0gICAgfQotICAgIG11R3JpZGRhdGEud2lkdGhIaW50ID0gd2lkdGhIaW50OwotICAgIG1kR3JpZGRhdGEud2lkdGhIaW50ID0gd2lkdGhIaW50OwotICAgIGFkZEdyaWRkYXRhLndpZHRoSGludCA9IHdpZHRoSGludDsKLSAgICByZW1HcmlkZGF0YS53aWR0aEhpbnQgPSB3aWR0aEhpbnQ7Ci0gICAgCi0gICAgbW92ZVVwQnV0dG9uLnNldExheW91dERhdGEobXVHcmlkZGF0YSk7Ci0gICAgbW92ZURvd25CdXR0b24uc2V0TGF5b3V0RGF0YShtZEdyaWRkYXRhKTsKLSAgICBhZGRCdXR0b25fLnNldExheW91dERhdGEoYWRkR3JpZGRhdGEpOwotICAgIHJlbW92ZUJ1dHRvbl8uc2V0TGF5b3V0RGF0YShyZW1HcmlkZGF0YSk7Ci0gICAgCi0gICAgLy8gdGFibGUgc3R1ZmYKLSAgICBTdHJpbmdbXSBjb2x1bW5zXyA9IG5ldyBTdHJpbmdbXSB7IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9IQU5ETEVSX05BTUUsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJMRV9IQU5ETEVSX0NMQVNTfTsKLQotICAgIGZpbmFsIFRhYmxlQ29sdW1uW10gdGFibGVDb2xzID0gbmV3IFRhYmxlQ29sdW1uW2NvbHVtbnNfLmxlbmd0aF07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb2x1bW5zXy5sZW5ndGg7IGkrKykgewotICAgICAgVGFibGVDb2x1bW4gdGFibGVDb2x1bW4gPSBuZXcgVGFibGVDb2x1bW4oaGFuZGxlcnNUYWJsZV8sIGkpOwotICAgICAgdGFibGVDb2x1bW4uc2V0VGV4dChjb2x1bW5zX1tpXSk7Ci0gICAgICB0YWJsZUNvbHVtbi5zZXRBbGlnbm1lbnQoU1dULkxFRlQpOwotICAgICAgdGFibGVDb2x1bW4uc2V0V2lkdGgoREVGQVVMVF9DT0xVTU5fV0lEVEgpOwotICAgICAgdGFibGVDb2x1bW4uc2V0UmVzaXphYmxlKHRydWUpOwotICAgICAgdGFibGVDb2xzW2ldID0gdGFibGVDb2x1bW47Ci0gICAgfQotCi0gICAgaGFuZGxlcnNDb21wLmFkZENvbnRyb2xMaXN0ZW5lcihuZXcgQ29udHJvbEFkYXB0ZXIoKSB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIGNvbnRyb2xSZXNpemVkKENvbnRyb2xFdmVudCBlKSB7Ci0gICAgICAgICAgUmVjdGFuZ2xlIGFyZWEgPSBoYW5kbGVyc0NvbXAuZ2V0Q2xpZW50QXJlYSgpOwotICAgICAgICAgIFBvaW50IHByZWZlcnJlZFNpemUgPSBoYW5kbGVyc1RhYmxlXy5jb21wdXRlU2l6ZShTV1QuREVGQVVMVCwgU1dULkRFRkFVTFQpOwotICAgICAgICAgIGludCB3aWR0aCA9IGFyZWEud2lkdGggLSAyKmhhbmRsZXJzVGFibGVfLmdldEJvcmRlcldpZHRoKCktMTA7Ci0gICAgICAgICAgaWYgKHByZWZlcnJlZFNpemUueSA+IGFyZWEuaGVpZ2h0ICsgaGFuZGxlcnNUYWJsZV8uZ2V0SGVhZGVySGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIC8vIFN1YnRyYWN0IHRoZSBzY3JvbGxiYXIgd2lkdGggZnJvbSB0aGUgdG90YWwgY29sdW1uIHdpZHRoCi0gICAgICAgICAgICAvLyBpZiBhIHZlcnRpY2FsIHNjcm9sbGJhciB3aWxsIGJlIHJlcXVpcmVkCi0gICAgICAgICAgICBQb2ludCB2QmFyU2l6ZSA9IGhhbmRsZXJzVGFibGVfLmdldFZlcnRpY2FsQmFyKCkuZ2V0U2l6ZSgpOwotICAgICAgICAgICAgd2lkdGggLT0gdkJhclNpemUueDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgUG9pbnQgb2xkU2l6ZSA9IGhhbmRsZXJzVGFibGVfLmdldFNpemUoKTsKLSAgICAgICAgICBpZiAob2xkU2l6ZS54ID4gYXJlYS53aWR0aCkgewotICAgICAgICAgICAgLy8gdGFibGUgaXMgZ2V0dGluZyBzbWFsbGVyIHNvIG1ha2UgdGhlIGNvbHVtbnMgCi0gICAgICAgICAgICAvLyBzbWFsbGVyIGZpcnN0IGFuZCB0aGVuIHJlc2l6ZSB0aGUgdGFibGUgdG8KLSAgICAgICAgICAgIC8vIG1hdGNoIHRoZSBjbGllbnQgYXJlYSB3aWR0aAotICAgICAgICAgICAgdGFibGVDb2xzWzBdLnNldFdpZHRoKHdpZHRoLzIpOwotICAgICAgICAgICAgdGFibGVDb2xzWzFdLnNldFdpZHRoKHdpZHRoIC0gdGFibGVDb2xzWzBdLmdldFdpZHRoKCkpOwotICAgICAgICAgICAgaGFuZGxlcnNUYWJsZV8uc2V0U2l6ZShhcmVhLndpZHRoLCBhcmVhLmhlaWdodCk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIHRhYmxlIGlzIGdldHRpbmcgYmlnZ2VyIHNvIG1ha2UgdGhlIHRhYmxlIAotICAgICAgICAgICAgLy8gYmlnZ2VyIGZpcnN0IGFuZCB0aGVuIG1ha2UgdGhlIGNvbHVtbnMgd2lkZXIKLSAgICAgICAgICAgIC8vIHRvIG1hdGNoIHRoZSBjbGllbnQgYXJlYSB3aWR0aAotICAgICAgICAgICAgICBoYW5kbGVyc1RhYmxlXy5zZXRTaXplKGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0KTsKLSAgICAgICAgICAgICAgdGFibGVDb2xzWzBdLnNldFdpZHRoKHdpZHRoLzIpOwotICAgICAgICAgICAgICB0YWJsZUNvbHNbMV0uc2V0V2lkdGgod2lkdGggLSB0YWJsZUNvbHNbMF0uZ2V0V2lkdGgoKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsgICAgCi0gICAgCi0gICAgdGFibGVWaWV3ZXJfID0gbmV3IFRhYmxlVmlld2VyKGhhbmRsZXJzVGFibGVfKTsKLSAgICBDb250cm9sIGNvbnRyb2wgPSB0YWJsZVZpZXdlcl8uZ2V0Q29udHJvbCgpOwotCi0gICAgR3JpZERhdGEgZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIGRhdGEuaG9yaXpvbnRhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgZGF0YS5ncmFiRXhjZXNzSG9yaXpvbnRhbFNwYWNlID0gdHJ1ZTsKLSAgICBkYXRhLnZlcnRpY2FsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBkYXRhLmdyYWJFeGNlc3NWZXJ0aWNhbFNwYWNlID0gdHJ1ZTsKLSAgICBjb250cm9sLnNldExheW91dERhdGEoZGF0YSk7Ci0KLSAgICB0YWJsZVZpZXdlcl8uc2V0Q29sdW1uUHJvcGVydGllcyhjb2x1bW5zXyk7Ci0gICAgdGFibGVWaWV3ZXJfLnNldENvbnRlbnRQcm92aWRlcihuZXcgTGlzdENvbnRlbnRQcm92aWRlcigpKTsKLSAgICB0YWJsZVZpZXdlcl8uc2V0TGFiZWxQcm92aWRlcihuZXcgTGlzdExhYmVsUHJvdmlkZXIoKSk7Ci0gICAgdGFibGVWaWV3ZXJfLmFkZFNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcihuZXcgSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcigpIHsKLQotICAgICAgcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgZXZlbnQpIHsKLSAgICAgICAgZW5hYmxlUmVtb3ZlKHRydWUpOwotICAgICAgfQotICAgIH0pOwotICAgCi0gICAgLy8gZ2VuIHNrZWxldG9uIGNoZWNrIGJveAotICAgIGdlblNrZWxldG9uUmFkaW9CdXR0b25fID0gdWlVdGlscy5jcmVhdGVDaGVja2JveChwYXJlbnRfLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQlVUVE9OX0dFTl9TS0VMRVRPTiwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfQlVUVE9OX0dFTl9TS0VMRVRPTiwgSU5GT1BPUF9IRExSX0dFTl9TS0VMRVRPTik7Ci0gICAgZ2VuU2tlbGV0b25SYWRpb0J1dHRvbl8uYWRkU2VsZWN0aW9uTGlzdGVuZXIobmV3IFNlbGVjdGlvbkFkYXB0ZXIoKSB7Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2dCkgewotICAgICAgICBoYW5kbGVHZW5Ta2VsZXRvblJhZGlvQnV0dG9uKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICAvLyBzb3VyY2UgbG9jYXRpb24gY29tYm8KLSAgICBzb3VyY2VMb2NhdGlvbkNvbXBfID0gdWlVdGlscy5jcmVhdGVDb21wb3NpdGUocGFyZW50XywgMik7Ci0gICAgc291cmNlTG9jYXRpb25Db21ib18gPSB1aVV0aWxzLmNyZWF0ZUNvbWJvKHNvdXJjZUxvY2F0aW9uQ29tcF8sIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9DT01CT19TT1VSQ0VfTE9DLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9DT01CT19TT1VSQ0VfTE9DLCBJTkZPUE9QX0NPTUJPX1NPVVJDRV9MT0MsCi0gICAgICAgIFNXVC5SRUFEX09OTFkpOwotICAgIHNvdXJjZUxvY2F0aW9uQ29tYm9fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotCi0gICAgICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBldnQpIHsKLSAgICAgICAgaGFuZGxlU291cmNlTG9jYXRpb25Db21ibyhldnQpOwotICAgICAgfQotICAgIH0pOwotCi0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLQotICAvLyBDYWxsZWQgYXQgc3RhcnQKLSAgcHJpdmF0ZSB2b2lkIHBvcHVsYXRlSGFuZGxlcnNUYWJsZSgpIHsKLSAgICB0cnkgewotICAgICAgVUlVdGlscyB1aVV0aWxzID0gbmV3IFVJVXRpbHMocGx1Z2luSWRfKTsKLQotICAgICAgLy8gcHJvY2VzcyBmb3IgbXVsdGlwbGUgc2VydmljZSBzZWxlY3Rpb24KLSAgICAgIGlmIChpc011bHRpcGxlU2VsZWN0aW9uXykgewotICAgICAgICB3ZWJTZXJ2aWNlRGVzY1RleHRfID0gdWlVdGlscy5jcmVhdGVUZXh0KHdlYlNlcnZpY2VSZWZDb21wXywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0NPTUJPX1dTX0NMSUVOVF9SRUYsIAotICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NfQ0xJRU5UX1JFRiwgSU5GT1BPUF9XU19DTElFTlRfUkVGLCBTV1QuUkVBRF9PTkxZKTsKLSAgICAgICAgaWYgKGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXyE9bnVsbCl7Ci0gICAgICAgICAgY3VycmVudEhTUkhfID0gaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfWzBdOwotICAgICAgICAgIFN0cmluZyB0ZXh0ID0gTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19URVhUX05VTV9PRl9DTElFTlRTLCBJbnRlZ2VyLnRvU3RyaW5nKGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXy5sZW5ndGgpKTsgICAgICAgICAgCi0gICAgICAgICAgd2ViU2VydmljZURlc2NUZXh0Xy5zZXRUZXh0KHRleHQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBnZW5Ta2VsZXRvblJhZGlvQnV0dG9uXy5zZXRTZWxlY3Rpb24oZmFsc2UpOwotICAgICAgICBnZW5Ta2VsZXRvblJhZGlvQnV0dG9uXy5zZXRFbmFibGVkKGZhbHNlKTsKLSAgICAgICAgZ2VuU2tlbGV0b25SYWRpb0J1dHRvbl8uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgICAgIAotICAgICAgICBzb3VyY2VMb2NhdGlvbkNvbXBfLnNldFZpc2libGUoZmFsc2UpOwotICAgICAgICBzb3VyY2VMb2NhdGlvbkNvbWJvXy5zZXRFbmFibGVkKGZhbHNlKTsKLSAgICAgICAgc291cmNlTG9jYXRpb25Db21ib18uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgICAgIAotICAgICAgICByZWZyZXNoKCk7Ci0KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICAKLSAgICAgICAgd2ViU2VydmljZVJlZkNvbWJvXyA9IHVpVXRpbHMuY3JlYXRlQ29tYm8od2ViU2VydmljZVJlZkNvbXBfLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQ09NQk9fV1NfQ0xJRU5UX1JFRiwgCi0gICAgICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU19DTElFTlRfUkVGLCBJTkZPUE9QX1dTX0NMSUVOVF9SRUYsIFNXVC5SRUFEX09OTFkpOwotICAgICAgICB3ZWJTZXJ2aWNlUmVmQ29tYm9fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotICAgICAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2dCkgewotICAgICAgICAgICAgaGFuZGxlV2ViU2VydmljZVJlZkNvbWJvKGV2dCk7Ci0gICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICBTdHJpbmdbXSB3c1JlZk5hbWVzID0gSGFuZGxlclNlcnZpY2VSZWZIZWxwZXIuZ2V0QWxsU2VydmljZVJlZk5hbWVzKGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXyk7IAotICAgICAgICB3ZWJTZXJ2aWNlUmVmQ29tYm9fLnNldEl0ZW1zKHdzUmVmTmFtZXMpOwotICAKLSAgICAgICAgaWYgKGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXy5sZW5ndGggPCAxKSB7Ci0gICAgICAgICAgd2ViU2VydmljZVJlZkNvbWJvXy5zZWxlY3QoMCk7Ci0gICAgICAgICAgd2ViU2VydmljZVJlZkNvbWJvXy5zZXRFbmFibGVkKGZhbHNlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBpZiAoc2VydmljZVJlZk5hbWVfICE9IG51bGwpIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IHdlYlNlcnZpY2VSZWZDb21ib18uaW5kZXhPZihzZXJ2aWNlUmVmTmFtZV8pOwotICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKSB3ZWJTZXJ2aWNlUmVmQ29tYm9fLnNlbGVjdChpbmRleCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdlYlNlcnZpY2VSZWZDb21ib18uc2VsZWN0KDApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBzZXQgaGFuZGxlciB0YWJsZQotICAgICAgICBIYW5kbGVyU2VydmljZVJlZkhvbGRlciBoc3JoID0gSGFuZGxlclNlcnZpY2VSZWZIZWxwZXIuZ2V0Rm9yU2VydmljZVJlZk5hbWUoaGFuZGxlclNlcnZpY2VSZWZIb2xkZXJfLCB3ZWJTZXJ2aWNlUmVmQ29tYm9fLmdldFRleHQoKSk7Ci0gICAgICAgIGlmIChoc3JoICE9IG51bGwpIHsKLSAgICAgICAgICBjdXJyZW50SFNSSF8gPSBoc3JoOwotICAgICAgICAgIExpc3QgaGFuZGxlcnMgPSBoc3JoLmdldEhhbmRsZXJMaXN0KCk7Ci0gICAgICAgICAgdGFibGVWaWV3ZXJfLnNldElucHV0KGhhbmRsZXJzKTsKLSAgICAgICAgICB0YWJsZVZpZXdlcl8ucmVmcmVzaCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBzZXQgb3V0cHV0IGZvbGRlcgotICAgICAgICBzZXRTb3VyY2VPdXRwdXRMb2NhdGlvbigpOwotICAgICAgfQotICAgICAgcGFyZW50Xy5nZXRTaGVsbCgpLnNldFNpemUoNTMwLCA2NTApOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotICAgIAotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5XaWRnZXRDb250cmlidXRvciNnZXRTdGF0dXMoKQotICAgKi8KLSAgcHVibGljIElTdGF0dXMgZ2V0U3RhdHVzKCkgewotICAgIElTdGF0dXMgZmluYWxTdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIGlmIChpc011bHRpcGxlU2VsZWN0aW9uXykKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5pbmZvU3RhdHVzKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfTVVMVElQTEVfQ0xJRU5UU19DT05GSUcpOwotICAgIHJldHVybiBmaW5hbFN0YXR1czsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGhhbmRsZUFkZEJ1dHRvblNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0KLSAgICBBZGRIYW5kbGVyRGlhbG9nIGRpYWxvZyA9IG5ldyBBZGRIYW5kbGVyRGlhbG9nKHBhcmVudF8uZ2V0U2hlbGwoKSwgdHJ1ZSk7Ci0gICAgZGlhbG9nLmNyZWF0ZSgpOwotICAgIGRpYWxvZy5nZXRTaGVsbCgpLnNldFNpemUoIDUwMCwgMjAwICk7Ci0gICAgCi0gICAgaW50IHJlc3VsdCA9IGRpYWxvZy5vcGVuKCk7Ci0KLSAgICBpZiAocmVzdWx0ID09IFdpbmRvdy5PSykgewotICAgICAgU3RyaW5nIG5hbWUgPSBkaWFsb2cuZ2V0TmFtZSgpOwotICAgICAgU3RyaW5nIGNsYXNzTmFtZSA9IGRpYWxvZy5nZXRDbGFzc05hbWUoKTsKLQotICAgICAgSGFuZGxlclRhYmxlSXRlbSBoaSA9IG5ldyBIYW5kbGVyVGFibGVJdGVtKCk7Ci0gICAgICBoaS5zZXRIYW5kbGVyTmFtZShuYW1lKTsKLSAgICAgIGhpLnNldEhhbmRsZXJDbGFzc05hbWUoY2xhc3NOYW1lKTsKLSAgICAgIAotICAgICAgU2VydmljZVJlZiBzZXJ2aWNlUmVmID0gY3VycmVudEhTUkhfLmdldFNlcnZpY2VSZWYoKTsKLSAgICAgIGhpLnNldFdzRGVzY1JlZihzZXJ2aWNlUmVmKTsKLSAgICAgIGN1cnJlbnRIU1JIXy5nZXRIYW5kbGVyTGlzdCgpLmFkZChoaSk7Ci0gICAgfQotCi0gICAgcmVmcmVzaCgpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlUmVtb3ZlQnV0dG9uU2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLSAgICBoYW5kbGVEZWxldGVLZXlQcmVzc2VkKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVNb3ZlVXBCdXR0b25TZWxlY3RlZChTZWxlY3Rpb25FdmVudCBldmVudCkgewotCi0gICAgaW50IGluZGV4ID0gdGFibGVWaWV3ZXJfLmdldFRhYmxlKCkuZ2V0U2VsZWN0aW9uSW5kZXgoKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpIHsKLSAgICAgIGlmIChpbmRleCA+IDApIHsKLSAgICAgICAgaWYgKGN1cnJlbnRIU1JIXyE9bnVsbCkgewotICAgICAgICAgIExpc3QgaGFuZGxlcnMgPSBjdXJyZW50SFNSSF8uZ2V0SGFuZGxlckxpc3QoKTsKLSAgICAgICAgICBPYmplY3Qgb2JqZWN0ID0gaGFuZGxlcnMucmVtb3ZlKGluZGV4KTsKLSAgICAgICAgICBoYW5kbGVycy5hZGQoIGluZGV4IC0gMSwgb2JqZWN0KTsKLSAgICAgICAgICB0YWJsZVZpZXdlcl8ucmVmcmVzaCgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVNb3ZlRG93bkJ1dHRvblNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0KLSAgICBpbnQgaW5kZXggPSB0YWJsZVZpZXdlcl8uZ2V0VGFibGUoKS5nZXRTZWxlY3Rpb25JbmRleCgpOwotICAgIGlmIChpbmRleCAhPSAtMSkgewotICAgICAgaWYgKGN1cnJlbnRIU1JIXyE9bnVsbCl7Ci0gICAgICAgIExpc3QgaGFuZGxlcnMgPSBjdXJyZW50SFNSSF8uZ2V0SGFuZGxlckxpc3QoKTsKLSAgICAgICAgaWYgKGluZGV4IDwgaGFuZGxlcnMuc2l6ZSgpIC0gMSkgewotICAgICAgICAgIE9iamVjdCBvYmplY3QgPSBoYW5kbGVycy5yZW1vdmUoaW5kZXgpOwotICAgICAgICAgIGhhbmRsZXJzLmFkZChpbmRleCArIDEsIG9iamVjdCk7Ci0gICAgICAgICAgdGFibGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlU291cmNlTG9jYXRpb25Db21ibyhTZWxlY3Rpb25FdmVudCBldmVudCkgewotICAgIG91dHB1dExvY2F0aW9uXyA9IHNvdXJjZUxvY2F0aW9uQ29tYm9fLmdldFRleHQoKTsKLSAgICBJUGF0aCBvdXRwdXRQYXRoID0gKElQYXRoKSBwYXRoc1RhYmxlXy5nZXQob3V0cHV0TG9jYXRpb25fKTsKLSAgICBjdXJyZW50SFNSSF8uc2V0U291cmNlT3V0cHV0UGF0aChvdXRwdXRQYXRoKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGhhbmRsZUdlblNrZWxldG9uUmFkaW9CdXR0b24oKSB7Ci0gICAgaWYgKGdlblNrZWxldG9uUmFkaW9CdXR0b25fLmlzRW5hYmxlZCgpKSB7Ci0gICAgICBpZiAoZ2VuU2tlbGV0b25SYWRpb0J1dHRvbl8uZ2V0U2VsZWN0aW9uKCkpIHsKLSAgICAgICAgdGhpcy5pc0dlblNrZWxldG9uRW5hYmxlZF8gPSB0cnVlOwotICAgICAgICBzb3VyY2VMb2NhdGlvbkNvbWJvXy5zZXRFbmFibGVkKHRydWUpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHRoaXMuaXNHZW5Ta2VsZXRvbkVuYWJsZWRfID0gZmFsc2U7Ci0gICAgICAgIHNvdXJjZUxvY2F0aW9uQ29tYm9fLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGhhbmRsZVdlYlNlcnZpY2VSZWZDb21ibyhTZWxlY3Rpb25FdmVudCBldmVudCkgewotCi0gICAgaWYgKHdlYlNlcnZpY2VSZWZDb21ib18hPW51bGwgJiYgd2ViU2VydmljZVJlZkNvbWJvXy5pc0VuYWJsZWQoKSkgewotICAgICAgSGFuZGxlclNlcnZpY2VSZWZIb2xkZXIgaHNyaCA9IEhhbmRsZXJTZXJ2aWNlUmVmSGVscGVyLmdldEZvclNlcnZpY2VSZWZOYW1lKGhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyXywgd2ViU2VydmljZVJlZkNvbWJvXy5nZXRUZXh0KCkpOwotICAgICAgY3VycmVudEhTUkhfID0gaHNyaDsgICAgICAKLSAgICAgIHJlZnJlc2goKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGlzR2VuU2tlbGV0b25FbmFibGVkXyl7Ci0gICAgICBzZXRTb3VyY2VPdXRwdXRMb2NhdGlvbigpOwotICAgIH0KLSAgICAKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGlzR2VuU2tlbGV0b25FbmFibGVkXy4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzR2VuU2tlbGV0b25FbmFibGVkXygpIHsKLSAgICByZXR1cm4gaXNHZW5Ta2VsZXRvbkVuYWJsZWRfOwotICB9Ci0KLSAgcHJvdGVjdGVkIGNsYXNzIExpc3RMYWJlbFByb3ZpZGVyIGV4dGVuZHMgTGFiZWxQcm92aWRlciBpbXBsZW1lbnRzIElUYWJsZUxhYmVsUHJvdmlkZXIgewotCi0gICAgcHVibGljIEltYWdlIGdldENvbHVtbkltYWdlKE9iamVjdCBlbGVtZW50LCBpbnQgY29sdW1uSW5kZXgpIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q29sdW1uVGV4dChPYmplY3Qgb2JqZWN0LCBpbnQgY29sdW1uSW5kZXgpIHsKLQotICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEhhbmRsZXJUYWJsZUl0ZW0pIHsKLSAgICAgICAgSGFuZGxlclRhYmxlSXRlbSBodGkgPSAoSGFuZGxlclRhYmxlSXRlbSkgb2JqZWN0OwotICAgICAgICBpZiAoY29sdW1uSW5kZXggPT0gMCkgewotCi0gICAgICAgICAgcmV0dXJuIGh0aS5nZXRIYW5kbGVyTmFtZSgpICE9IG51bGwgPyBodGkuZ2V0SGFuZGxlck5hbWUoKSA6ICIiOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNvbHVtbkluZGV4ID09IDEpIHsgcmV0dXJuIGh0aS5nZXRIYW5kbGVyQ2xhc3NOYW1lKCkgIT0gbnVsbCA/IGh0aS5nZXRIYW5kbGVyQ2xhc3NOYW1lKCkgOiAiIjsgfQotICAgICAgfQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gIH0KLQotICBwcml2YXRlIHZvaWQgZW5hYmxlUmVtb3ZlKGJvb2xlYW4gZW5hYmxlZCkgewotICAgIHJlbW92ZUJ1dHRvbl8uc2V0RW5hYmxlZChlbmFibGVkICYmICF0YWJsZVZpZXdlcl8uZ2V0U2VsZWN0aW9uKCkuaXNFbXB0eSgpKTsKLSAgfQotCi0gIHByb3RlY3RlZCBjbGFzcyBMaXN0Q29udGVudFByb3ZpZGVyIGltcGxlbWVudHMgSVN0cnVjdHVyZWRDb250ZW50UHJvdmlkZXIgewotCi0gICAgcHVibGljIE9iamVjdFtdIGdldEVsZW1lbnRzKE9iamVjdCBlbGVtZW50KSB7Ci0gICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZlY3RvcikgeyByZXR1cm4gKChWZWN0b3IpIGVsZW1lbnQpLnRvQXJyYXkoKTsgfQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZGlzcG9zZSgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBpbnB1dENoYW5nZWQoVmlld2VyIHZpZXdlciwgT2JqZWN0IG9sZCwgT2JqZWN0IG5ld29iaikgewotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzRGVsZXRlZChPYmplY3Qgb2JqZWN0KSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlRGVsZXRlS2V5UHJlc3NlZCgpIHsKLSAgICBJU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHRhYmxlVmlld2VyXy5nZXRTZWxlY3Rpb24oKTsKLSAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwgJiYgIXNlbGVjdGlvbi5pc0VtcHR5KCkgJiYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSkgewotICAgICAgaW50IHNlbGVjdGlvbkluZGV4ID0gaGFuZGxlcnNUYWJsZV8uZ2V0U2VsZWN0aW9uSW5kZXgoKTsKLSAgICAgIGlmIChjdXJyZW50SFNSSF8hPW51bGwpewotICAgICAgICBjdXJyZW50SFNSSF8uZ2V0SGFuZGxlckxpc3QoKS5yZW1vdmUoc2VsZWN0aW9uSW5kZXgpOwotICAgICAgfQotICAgICAgcmVmcmVzaCgpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlZnJlc2goKSB7Ci0gICAgCi0gICAgdHJ5IHsKLSAgICAgIHRhYmxlVmlld2VyXy5zZXRJbnB1dChudWxsKTsKLSAgICAgIGlmIChjdXJyZW50SFNSSF8hPW51bGwpewotICAgICAgICBMaXN0IGhhbmRsZXJzID0gY3VycmVudEhTUkhfLmdldEhhbmRsZXJMaXN0KCk7Ci0gICAgICAgIHRhYmxlVmlld2VyXy5zZXRJbnB1dChoYW5kbGVycyk7Ci0gICAgICAgIHRhYmxlVmlld2VyXy5yZWZyZXNoKCk7ICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgICAKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEdlblNrZWxldG9uRW5hYmxlZChib29sZWFuIGlzR2VuU2tlbGV0b25FbmFibGVkKSB7Ci0gICAgdGhpcy5pc0dlblNrZWxldG9uRW5hYmxlZF8gPSBpc0dlblNrZWxldG9uRW5hYmxlZDsKLSAgICBnZW5Ta2VsZXRvblJhZGlvQnV0dG9uXy5zZXRTZWxlY3Rpb24oaXNHZW5Ta2VsZXRvbkVuYWJsZWQpOwotCi0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRHZW5Ta2VsZXRvbkVuYWJsZWQoKSB7Ci0gICAgcmV0dXJuIHRoaXMuaXNHZW5Ta2VsZXRvbkVuYWJsZWRfOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHNldFNvdXJjZU91dHB1dExvY2F0aW9uKCl7Ci0gICAgaWYgKGN1cnJlbnRIU1JIXyE9bnVsbCl7ICAgIAotICAgICAgSVByb2plY3QgcHJvamVjdCA9IGN1cnJlbnRIU1JIXy5nZXRQcm9qZWN0KCk7Ci0gICAgICBpZiAocHJvamVjdCE9bnVsbCl7Ci0gICAgICAgIElQYXRoW11sb2NhdGlvbnMgPSBSZXNvdXJjZVV0aWxzLmdldEFsbEphdmFTb3VyY2VMb2NhdGlvbnMocHJvamVjdCk7Ci0gICAgICAgIFN0cmluZ1tdIHBhdGhzID0gbmV3IFN0cmluZ1tsb2NhdGlvbnMubGVuZ3RoXTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvbnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICBwYXRoc1tpXSA9IGxvY2F0aW9uc1tpXS50b1N0cmluZygpOwotICAgICAgICAgIHBhdGhzVGFibGVfLnB1dChwYXRoc1tpXSwgbG9jYXRpb25zW2ldKTsKLSAgICAgICAgfQotICAgICAgICBzb3VyY2VMb2NhdGlvbkNvbWJvXy5zZXRJdGVtcyhwYXRocyk7Ci0gICAgICAgIHNvdXJjZUxvY2F0aW9uQ29tYm9fLnNlbGVjdCgwKTsgICAgICAgIAotICAgICAgfQotICAgICAgCi0gICAgICAvLyBzZXQgaW4gbW9kZWwKLSAgICAgIG91dHB1dExvY2F0aW9uXyA9IHNvdXJjZUxvY2F0aW9uQ29tYm9fLmdldFRleHQoKTsKLSAgICAgIElQYXRoIG91dHB1dFBhdGggPSAoSVBhdGgpIHBhdGhzVGFibGVfLmdldChvdXRwdXRMb2NhdGlvbl8pOwotICAgICAgY3VycmVudEhTUkhfLnNldFNvdXJjZU91dHB1dFBhdGgob3V0cHV0UGF0aCk7ICAgICAgCi0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogQ2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbnRlcm5hbGl6ZSgpewotICAgIHBvcHVsYXRlSGFuZGxlcnNUYWJsZSgpOwotICB9IAotICAKLSAgLyoqCi0gICAqIEluaXRpYWwgc2VsZWN0aW9uCi0gICAqIEBwYXJhbSB3c1JlZk5hbWUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VSZWZOYW1lKFN0cmluZyB3c1JlZk5hbWUpIHsKLSAgICBzZXJ2aWNlUmVmTmFtZV8gPSB3c1JlZk5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogdHJ1ZSBpZiBtdWx0aXBsZSBjbGllbnRzIGFyZSBzZWxlY3RlZAotICAgKiBAcGFyYW0gaXNNdWxpdHBsZVNlbGVjdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SXNNdWx0aXBsZVNlbGVjdGlvbihib29sZWFuIGlzTXVsaXRwbGVTZWxlY3Rpb24pIHsKLSAgICB0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb25fID0gaXNNdWxpdHBsZVNlbGVjdGlvbjsKLSAgfQotICAKLSAgLyoqCi0gICAqIEFuIGFycmF5IG9mIEhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcnMKLSAgICogQHJldHVybgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SGFuZGxlclNlcnZpY2VSZWZIb2xkZXIoSGFuZGxlclNlcnZpY2VSZWZIb2xkZXJbXSBoYW5kbGVySG9sZGVycyl7Ci0gICAgdGhpcy5oYW5kbGVyU2VydmljZVJlZkhvbGRlcl8gPSBoYW5kbGVySG9sZGVyczsKLSAgfQotICAKLSAgcHVibGljIEhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyW10gZ2V0SGFuZGxlclNlcnZpY2VSZWZIb2xkZXIoKXsKLSAgICByZXR1cm4gdGhpcy5oYW5kbGVyU2VydmljZVJlZkhvbGRlcl87Ci0gIH0KLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9Db25maWdTZXJ2aWNlSGFuZGxlcnNUYWJsZVdpZGdldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2IxNWVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9Db25maWdTZXJ2aWNlSGFuZGxlcnNUYWJsZVdpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjg1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQwNCAxMzQ5MTMgICBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUgICAgICAgCi0gKiAyMDA2MDQyNiAgIDEzNTYxNCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDYwNTI5ICAgMTQzNTE4IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkQ29udGVudFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JVGFibGVMYWJlbFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuTGFiZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlNlbGVjdGlvbkNoYW5nZWRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlRhYmxlVmlld2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVmlld2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLlBvcnRDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLldlYlNlcnZpY2VEZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkhhbmRsZXJEZXNjcmlwdGlvbkhlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuSGFuZGxlclRhYmxlSXRlbTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLlVJVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuQ29udHJvbEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Db250cm9sRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25BZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuSW1hZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5SZWN0YW5nbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbWJvOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRhYmxlQ29sdW1uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotCi0vKioKLSAqIENvbmZpZ1NlcnZpY2VIYW5kbGVyc1RyZWVXaWRnZXQKLSAqIAotICovCi1wdWJsaWMgY2xhc3MgQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQgZXh0ZW5kcyBTaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3IgewotCi0gIHByaXZhdGUgU3RyaW5nIHBsdWdpbklkXyA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiOwotICAKLSAgcHJpdmF0ZSBDb21wb3NpdGUgcGFyZW50XzsKLSAgcHJpdmF0ZSBUYWJsZSBoYW5kbGVyc1RhYmxlXzsKLSAgcHJpdmF0ZSBUYWJsZVZpZXdlciB0YWJsZVZpZXdlcl87Ci0gIHByaXZhdGUgQ29tcG9zaXRlIHdlYlNlcnZpY2VEZXNjQ29tcF87Ci0gIHByaXZhdGUgQ29tYm8gd2ViU2VydmljZURlc2NDb21ib18gPSBudWxsOwotICBwcml2YXRlIFRleHQgd2ViU2VydmljZURlc2NUZXh0XyA9IG51bGw7Ci0gIHByaXZhdGUgQnV0dG9uIGFkZEJ1dHRvbl87Ci0gIHByaXZhdGUgQnV0dG9uIHJlbW92ZUJ1dHRvbl87Ci0gIHByaXZhdGUgQnV0dG9uIGdlblNrZWxldG9uUmFkaW9CdXR0b25fOwotICBwcml2YXRlIENvbXBvc2l0ZSBzb3VyY2VMb2NhdGlvbkNvbXBfOwotICBwcml2YXRlIENvbWJvIHNvdXJjZUxvY2F0aW9uQ29tYm9fOwotICAKLSAgcHJpdmF0ZSBIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJbXSBoYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfOwotICBwcml2YXRlIEhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlciBjdXJyZW50SERIXzsKLSAgcHJpdmF0ZSBIYXNodGFibGUgcGF0aHNUYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7ICAvLyBhdmFpbGFibGUgcGF0aHMgZm9yIGNvbWJvICAKLSAgcHJpdmF0ZSBTdHJpbmcgb3V0cHV0TG9jYXRpb25fOyAgICAgICAgICAgICAgICAgICAvLyBzZWxlY3RlZCBwYXRoIGZyb20gY29tYm8KLSAgcHJpdmF0ZSBTdHJpbmcgZGVzY3JpcHRpb25OYW1lXyA9IG51bGw7Ci0gIHByaXZhdGUgYm9vbGVhbiBpc011bHRpcGxlU2VsZWN0aW9uXyA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gaXNHZW5Ta2VsZXRvbkVuYWJsZWRfOwotCi0gIHByaXZhdGUgaW50IERFRkFVTFRfQ09MVU1OX1dJRFRIID0gMTAwOwotCi0gIC8vIC0tLS1UT09MVElQUyBTZWN0aW9uLS0tLQotICAvKiBDT05URVhUX0lEIFNITEQwMDAxIGZvciB0aGUgSGFuZGxlciBDb25maWcgUGFnZSAqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX0hETFJfV1NfSEFORExFUlMgPSAiU0hETDAwMDEiOyAvLyROT04tTkxTLTEkCi0KLSAgLyogQ09OVEVYVF9JRCBTSERMMDAwMiBmb3IgdGhlIEhhbmRsZXIgQ29uZmlnIFBhZ2UgKi8KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSU5GT1BPUF9IRExSX0dFTl9TS0VMRVRPTiA9ICJTSERMMDAwMiI7IC8vJE5PTi1OTFMtMSQKLQotICAvKiBDT05URVhUX0lEIFNIREwwMDAzIGZvciB0aGUgSGFuZGxlciBDb25maWcgUGFnZSAqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX0NPTUJPX1NPVVJDRV9MT0MgPSAiU0hETDAwMDMiOyAvLyROT04tTkxTLTEkCi0KLSAgLyogQ09OVEVYVF9JRCBTSERMMDAwNCBmb3IgdGhlIEhhbmRsZXIgQ29uZmlnIFBhZ2UgKi8KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSU5GT1BPUF9XU19TRVJWSUNFX0RFU0MgPSAiU0hETDAwMDQiOyAvLyROT04tTkxTLTEkCi0KLSAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgcHVibGljIENvbmZpZ1NlcnZpY2VIYW5kbGVyc1RhYmxlV2lkZ2V0KCkgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyhDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lcikgewotICAgIFVJVXRpbHMgdWlVdGlscyA9IG5ldyBVSVV0aWxzKHBsdWdpbklkXyk7Ci0KLSAgICBwYXJlbnRfID0gcGFyZW50OwotCi0gICAgLy8gV2ViIHNlcnZpY2UgZGVzY3JpcHRpb24gY29tcG9zaXRlIChjb21iby90ZXh0IHRvIGJlIGNyZWF0ZWQgbGF0ZXIpCi0gICAgd2ViU2VydmljZURlc2NDb21wXyA9IHVpVXRpbHMuY3JlYXRlQ29tcG9zaXRlKHBhcmVudF8sIDIpOwotICAgIAotICAgIENvbXBvc2l0ZSBkaXNwbGF5Q29tcCA9IG5ldyBDb21wb3NpdGUocGFyZW50XywgU1dULk5PTkUpOwotCi0gICAgR3JpZExheW91dCBncmlkbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoMiwgZmFsc2UpOwotICAgIGRpc3BsYXlDb21wLnNldExheW91dChncmlkbGF5b3V0KTsKLSAgICBkaXNwbGF5Q29tcC5zZXRMYXlvdXREYXRhKHVpVXRpbHMuY3JlYXRlRmlsbEFsbCgpKTsKLQotICAgIGZpbmFsIENvbXBvc2l0ZSBoYW5kbGVyc0NvbXAgPSB1aVV0aWxzLmNyZWF0ZUNvbXBvc2l0ZShkaXNwbGF5Q29tcCwgMSk7Ci0gICAgR3JpZERhdGEgZ3JpZGRhdGEgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMIHwgR3JpZERhdGEuVkVSVElDQUxfQUxJR05fQkVHSU5OSU5HCi0gICAgICAgIHwgR3JpZERhdGEuVkVSVElDQUxfQUxJR05fRklMTCB8IEdyaWREYXRhLkdSQUJfVkVSVElDQUwgfCBHcmlkRGF0YS5GSUxMX1ZFUlRJQ0FMKTsKLSAgICBoYW5kbGVyc0NvbXAuc2V0TGF5b3V0RGF0YShncmlkZGF0YSk7Ci0gICAgaGFuZGxlcnNDb21wLnNldFNpemUoMTMwLCA2MDApOwotICAgIAotICAgIENvbXBvc2l0ZSBidXR0b25zQ29tcCA9IHVpVXRpbHMuY3JlYXRlQ29tcG9zaXRlKGRpc3BsYXlDb21wLCAxKTsKLSAgICBncmlkZGF0YSA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwgfCBHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9CRUdJTk5JTkcpOwotICAgIGJ1dHRvbnNDb21wLnNldExheW91dERhdGEoZ3JpZGRhdGEpOwotCi0gICAgVGV4dCBoYW5kbGVyc1RleHQgPSBuZXcgVGV4dChoYW5kbGVyc0NvbXAsIFNXVC5SRUFEX09OTFkpOwotICAgIGhhbmRsZXJzVGV4dC5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9IQU5ETEVSU19DT05GSUcpOwotICAgIEdyaWREYXRhIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCk7Ci0gICAgZ2QuaG9yaXpvbnRhbFNwYW4gPSAyOwotICAgIGhhbmRsZXJzVGV4dC5zZXRMYXlvdXREYXRhKGdkKTsKLSAgICAKLSAgICBoYW5kbGVyc1RhYmxlXyA9IHVpVXRpbHMuY3JlYXRlVGFibGUoaGFuZGxlcnNDb21wLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9FRElUX1dTX0hBTkRMRVJTLCBJTkZPUE9QX0hETFJfV1NfSEFORExFUlMsIFNXVC5NVUxUSQotICAgICAgICB8IFNXVC5GVUxMX1NFTEVDVElPTiB8IFNXVC5CT1JERVIpOwotICAgIGhhbmRsZXJzVGFibGVfLnNldEhlYWRlclZpc2libGUodHJ1ZSk7Ci0gICAgaGFuZGxlcnNUYWJsZV8uc2V0TGluZXNWaXNpYmxlKHRydWUpOwotCi0gICAgLy8gZW1wdHkgc3BhY2UKLSAgICBMYWJlbCB3c0xhYmVsID0gbmV3IExhYmVsKGJ1dHRvbnNDb21wLCBTV1QuTk9ORSk7Ci0gICAgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKTsKLSAgICBnZC5ob3Jpem9udGFsU3BhbiA9IDI7Ci0gICAgd3NMYWJlbC5zZXRMYXlvdXREYXRhKGdkKTsKLQotICAgIEJ1dHRvbiBtb3ZlVXBCdXR0b24gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oYnV0dG9uc0NvbXAsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9CVVRUT05fTU9WRV9VUCwgbnVsbCwgbnVsbCk7Ci0gICAgR3JpZERhdGEgbXVHcmlkZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIFBvaW50IG11c2l6ZSA9IG1vdmVVcEJ1dHRvbi5jb21wdXRlU2l6ZShTV1QuREVGQVVMVCwgU1dULkRFRkFVTFQpOwotICAgIG1vdmVVcEJ1dHRvbi5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uTGlzdGVuZXIoKSB7Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGhhbmRsZU1vdmVVcEJ1dHRvblNlbGVjdGVkKGV2ZW50KTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBCdXR0b24gbW92ZURvd25CdXR0b24gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oYnV0dG9uc0NvbXAsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9CVVRUT05fTU9WRV9ET1dOLCBudWxsLCBudWxsKTsKLSAgICBHcmlkRGF0YSBtZEdyaWRkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgUG9pbnQgbWRzaXplID0gbW92ZURvd25CdXR0b24uY29tcHV0ZVNpemUoU1dULkRFRkFVTFQsIFNXVC5ERUZBVUxUKTsKLSAgICBtb3ZlRG93bkJ1dHRvbi5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uTGlzdGVuZXIoKSB7Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGhhbmRsZU1vdmVEb3duQnV0dG9uU2VsZWN0ZWQoZXZlbnQpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIC8vIGVtcHR5IHNwYWNlCi0gICAgd3NMYWJlbCA9IG5ldyBMYWJlbChidXR0b25zQ29tcCwgU1dULk5PTkUpOwotICAgIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCk7Ci0gICAgZ2QuaG9yaXpvbnRhbFNwYW4gPSAyOwotICAgIHdzTGFiZWwuc2V0TGF5b3V0RGF0YShnZCk7Ci0KLSAgICBhZGRCdXR0b25fID0gdWlVdGlscy5jcmVhdGVQdXNoQnV0dG9uKGJ1dHRvbnNDb21wLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQlVUVE9OX0FERCwgbnVsbCwgbnVsbCk7Ci0gICAgR3JpZERhdGEgYWRkR3JpZGRhdGEgPSBuZXcgR3JpZERhdGEoKTsgCi0gICAgUG9pbnQgYWRkU2l6ZSA9IGFkZEJ1dHRvbl8uY29tcHV0ZVNpemUoU1dULkRFRkFVTFQsIFNXVC5ERUZBVUxUKTsKLSAgICBhZGRCdXR0b25fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25MaXN0ZW5lcigpIHsKLQotICAgICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLSAgICAgICAgaGFuZGxlQWRkQnV0dG9uU2VsZWN0ZWQoZXZlbnQpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHJlbW92ZUJ1dHRvbl8gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oYnV0dG9uc0NvbXAsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9CVVRUT05fUkVNT1ZFLCBudWxsLCBudWxsKTsKLSAgICBHcmlkRGF0YSByZW1HcmlkZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIFBvaW50IHJlbVNpemUgPSByZW1vdmVCdXR0b25fLmNvbXB1dGVTaXplKFNXVC5ERUZBVUxULCBTV1QuREVGQVVMVCk7Ci0gICAgcmVtb3ZlQnV0dG9uXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uTGlzdGVuZXIoKSB7Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGhhbmRsZVJlbW92ZUJ1dHRvblNlbGVjdGVkKGV2ZW50KTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgZW5hYmxlUmVtb3ZlKGZhbHNlKTsKLQotICAgIGludCB3aWR0aEhpbnQgPSAwOwotICAgIGludFtdIHNpemVzID0gbmV3IGludFtde211c2l6ZS54LCBtZHNpemUueCwgYWRkU2l6ZS54LCByZW1TaXplLngsIDEwMH07Ci0gICAgZm9yKGludCBqID0gMDsgaiA8IHNpemVzLmxlbmd0aDsgaisrKSB7Ci0gICAgCWlmIChzaXplc1tqXSA+IHdpZHRoSGludCkKLSAgICAJd2lkdGhIaW50ID0gc2l6ZXNbal07Ci0gICAgfQotICAgIG11R3JpZGRhdGEud2lkdGhIaW50ID0gd2lkdGhIaW50OwotICAgIG1kR3JpZGRhdGEud2lkdGhIaW50ID0gd2lkdGhIaW50OwotICAgIGFkZEdyaWRkYXRhLndpZHRoSGludCA9IHdpZHRoSGludDsKLSAgICByZW1HcmlkZGF0YS53aWR0aEhpbnQgPSB3aWR0aEhpbnQ7Ci0gICAgCi0gICAgbW92ZVVwQnV0dG9uLnNldExheW91dERhdGEobXVHcmlkZGF0YSk7Ci0gICAgbW92ZURvd25CdXR0b24uc2V0TGF5b3V0RGF0YShtZEdyaWRkYXRhKTsKLSAgICBhZGRCdXR0b25fLnNldExheW91dERhdGEoYWRkR3JpZGRhdGEpOwotICAgIHJlbW92ZUJ1dHRvbl8uc2V0TGF5b3V0RGF0YShyZW1HcmlkZGF0YSk7Ci0gICAgCi0gICAgLy8gdGFibGUgc3R1ZmYgaGVyZQotICAgIFN0cmluZ1tdIGNvbHVtbnNfID0gbmV3IFN0cmluZ1tdIHsgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0hBTkRMRVJfTkFNRSwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkxFX0hBTkRMRVJfQ0xBU1MsCi0gICAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9IQU5ETEVSX1BPUlR9OwotCi0gICAgZmluYWwgVGFibGVDb2x1bW5bXSB0YWJsZUNvbHMgPSBuZXcgVGFibGVDb2x1bW5bY29sdW1uc18ubGVuZ3RoXTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbHVtbnNfLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBUYWJsZUNvbHVtbiB0YWJsZUNvbHVtbiA9IG5ldyBUYWJsZUNvbHVtbihoYW5kbGVyc1RhYmxlXywgU1dULkxFRlQpOwotICAgICAgdGFibGVDb2x1bW4uc2V0VGV4dChjb2x1bW5zX1tpXSk7Ci0gICAgICB0YWJsZUNvbHVtbi5zZXRBbGlnbm1lbnQoU1dULkxFRlQpOwotICAgICAgdGFibGVDb2x1bW4uc2V0V2lkdGgoREVGQVVMVF9DT0xVTU5fV0lEVEgpOwotICAgICAgdGFibGVDb2x1bW4uc2V0UmVzaXphYmxlKHRydWUpOwotICAgICAgdGFibGVDb2xzW2ldID0gdGFibGVDb2x1bW47Ci0gICAgfQotICAgIGhhbmRsZXJzQ29tcC5hZGRDb250cm9sTGlzdGVuZXIobmV3IENvbnRyb2xBZGFwdGVyKCkgewotCi0gICAgICBwdWJsaWMgdm9pZCBjb250cm9sUmVzaXplZChDb250cm9sRXZlbnQgZSkgewotICAgICAgICBSZWN0YW5nbGUgYXJlYSA9IGhhbmRsZXJzQ29tcC5nZXRDbGllbnRBcmVhKCk7Ci0gICAgICAgIFBvaW50IHByZWZlcnJlZFNpemUgPSBoYW5kbGVyc1RhYmxlXy5jb21wdXRlU2l6ZShTV1QuREVGQVVMVCwgU1dULkRFRkFVTFQpOwotICAgICAgICBpbnQgd2lkdGggPSBhcmVhLndpZHRoIC0gMiAqIGhhbmRsZXJzVGFibGVfLmdldEJvcmRlcldpZHRoKCkgLSAxMDsKLSAgICAgICAgaWYgKHByZWZlcnJlZFNpemUueSA+IGFyZWEuaGVpZ2h0ICsgaGFuZGxlcnNUYWJsZV8uZ2V0SGVhZGVySGVpZ2h0KCkpIHsKLSAgICAgICAgICAvLyBTdWJ0cmFjdCB0aGUgc2Nyb2xsYmFyIHdpZHRoIGZyb20gdGhlIHRvdGFsIGNvbHVtbiB3aWR0aAotICAgICAgICAgIC8vIGlmIGEgdmVydGljYWwgc2Nyb2xsYmFyIHdpbGwgYmUgcmVxdWlyZWQKLSAgICAgICAgICBQb2ludCB2QmFyU2l6ZSA9IGhhbmRsZXJzVGFibGVfLmdldFZlcnRpY2FsQmFyKCkuZ2V0U2l6ZSgpOwotICAgICAgICAgIHdpZHRoIC09IHZCYXJTaXplLng7Ci0gICAgICAgIH0KLSAgICAgICAgUG9pbnQgb2xkU2l6ZSA9IGhhbmRsZXJzVGFibGVfLmdldFNpemUoKTsKLSAgICAgICAgaWYgKG9sZFNpemUueCA+IGFyZWEud2lkdGgpIHsKLSAgICAgICAgICAvLyB0YWJsZSBpcyBnZXR0aW5nIHNtYWxsZXIgc28gbWFrZSB0aGUgY29sdW1ucwotICAgICAgICAgIC8vIHNtYWxsZXIgZmlyc3QgYW5kIHRoZW4gcmVzaXplIHRoZSB0YWJsZSB0bwotICAgICAgICAgIC8vIG1hdGNoIHRoZSBjbGllbnQgYXJlYSB3aWR0aAotICAgICAgICAgIHRhYmxlQ29sc1swXS5zZXRXaWR0aCh3aWR0aCAvIDMpOwotICAgICAgICAgIHRhYmxlQ29sc1sxXS5zZXRXaWR0aCh3aWR0aCAvIDMpOwotICAgICAgICAgIHRhYmxlQ29sc1syXS5zZXRXaWR0aCh3aWR0aCAtICh0YWJsZUNvbHNbMF0uZ2V0V2lkdGgoKSArIHRhYmxlQ29sc1sxXS5nZXRXaWR0aCgpKSk7Ci0gICAgICAgICAgaGFuZGxlcnNUYWJsZV8uc2V0U2l6ZShhcmVhLndpZHRoLCBhcmVhLmhlaWdodCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgLy8gdGFibGUgaXMgZ2V0dGluZyBiaWdnZXIgc28gbWFrZSB0aGUgdGFibGUKLSAgICAgICAgICAvLyBiaWdnZXIgZmlyc3QgYW5kIHRoZW4gbWFrZSB0aGUgY29sdW1ucyB3aWRlcgotICAgICAgICAgIC8vIHRvIG1hdGNoIHRoZSBjbGllbnQgYXJlYSB3aWR0aAotICAgICAgICAgIGhhbmRsZXJzVGFibGVfLnNldFNpemUoYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQpOwotICAgICAgICAgIHRhYmxlQ29sc1swXS5zZXRXaWR0aCh3aWR0aCAvIDMpOwotICAgICAgICAgIHRhYmxlQ29sc1sxXS5zZXRXaWR0aCh3aWR0aCAvIDMpOwotICAgICAgICAgIHRhYmxlQ29sc1syXS5zZXRXaWR0aCh3aWR0aCAtICh0YWJsZUNvbHNbMF0uZ2V0V2lkdGgoKSArIHRhYmxlQ29sc1sxXS5nZXRXaWR0aCgpKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHRhYmxlVmlld2VyXyA9IG5ldyBUYWJsZVZpZXdlcihoYW5kbGVyc1RhYmxlXyk7Ci0gICAgQ29udHJvbCBjb250cm9sID0gdGFibGVWaWV3ZXJfLmdldENvbnRyb2woKTsKLQotICAgIEdyaWREYXRhIGRhdGEgPSBuZXcgR3JpZERhdGEoKTsKLSAgICBkYXRhLmhvcml6b250YWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIGRhdGEuZ3JhYkV4Y2Vzc0hvcml6b250YWxTcGFjZSA9IHRydWU7Ci0gICAgZGF0YS52ZXJ0aWNhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgZGF0YS5ncmFiRXhjZXNzVmVydGljYWxTcGFjZSA9IHRydWU7Ci0gICAgY29udHJvbC5zZXRMYXlvdXREYXRhKGRhdGEpOwotCi0gICAgdGFibGVWaWV3ZXJfLnNldENvbHVtblByb3BlcnRpZXMoY29sdW1uc18pOwotICAgIHRhYmxlVmlld2VyXy5zZXRDb250ZW50UHJvdmlkZXIobmV3IExpc3RDb250ZW50UHJvdmlkZXIoKSk7Ci0gICAgdGFibGVWaWV3ZXJfLnNldExhYmVsUHJvdmlkZXIobmV3IExpc3RMYWJlbFByb3ZpZGVyKCkpOwotICAgIHRhYmxlVmlld2VyXy5hZGRTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIobmV3IElTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIoKSB7Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoU2VsZWN0aW9uQ2hhbmdlZEV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGVuYWJsZVJlbW92ZSh0cnVlKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIGdlblNrZWxldG9uUmFkaW9CdXR0b25fID0gdWlVdGlscy5jcmVhdGVDaGVja2JveChwYXJlbnRfLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQlVUVE9OX0dFTl9TS0VMRVRPTiwKLSAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfQlVUVE9OX0dFTl9TS0VMRVRPTiwgSU5GT1BPUF9IRExSX0dFTl9TS0VMRVRPTik7Ci0gICAgZ3JpZGRhdGEgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuVkVSVElDQUxfQUxJR05fQkVHSU5OSU5HIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMIHwgR3JpZERhdGEuVkVSVElDQUxfQUxJR05fRklMTCk7Ci0gICAgZ2VuU2tlbGV0b25SYWRpb0J1dHRvbl8uc2V0TGF5b3V0RGF0YShncmlkZGF0YSk7Ci0gICAgZ2VuU2tlbGV0b25SYWRpb0J1dHRvbl8uYWRkU2VsZWN0aW9uTGlzdGVuZXIobmV3IFNlbGVjdGlvbkFkYXB0ZXIoKSB7Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2dCkgewotICAgICAgICBoYW5kbGVHZW5Ta2VsZXRvblJhZGlvQnV0dG9uKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzb3VyY2VMb2NhdGlvbkNvbXBfID0gdWlVdGlscy5jcmVhdGVDb21wb3NpdGUocGFyZW50XywgMik7Ci0gICAgc291cmNlTG9jYXRpb25Db21ib18gPSB1aVV0aWxzLmNyZWF0ZUNvbWJvKHNvdXJjZUxvY2F0aW9uQ29tcF8sIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9DT01CT19TT1VSQ0VfTE9DLAotICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9DT01CT19TT1VSQ0VfTE9DLCBJTkZPUE9QX0NPTUJPX1NPVVJDRV9MT0MsIFNXVC5SRUFEX09OTFkpOwotICAgIHNvdXJjZUxvY2F0aW9uQ29tYm9fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotCi0gICAgICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBldnQpIHsKLSAgICAgICAgaGFuZGxlU291cmNlTG9jYXRpb25Db21ibyhldnQpOwotICAgICAgfQotICAgIH0pOwotICAgIAotICAgIHJldHVybiB0aGlzOwotICB9Ci0KLSAgLy8gQ2FsbGVkIGF0IHN0YXJ0IGFuZCBvbmx5IGZvciBzaW5nbGUgc2VydmljZSBzZWxlY3Rpb24gCi0gIHByaXZhdGUgdm9pZCBwb3B1bGF0ZUhhbmRsZXJzVGFibGUoKSB7Ci0gICAgdHJ5IHsKLSAgICAgIFVJVXRpbHMgdWlVdGlscyA9IG5ldyBVSVV0aWxzKHBsdWdpbklkXyk7Ci0gICAgIAotICAgICAgLy8gcHJvY2VzcyBmb3IgbXVsdGlwbGUgc2VydmljZSBzZWxlY3Rpb24KLSAgICAgIGlmIChpc011bHRpcGxlU2VsZWN0aW9uXykgewotICAgICAgICBwYXJlbnRfLmdldFNoZWxsKCkuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX01VTFRJUExFX1NFUlZJQ0VTX0NPTkZJRyk7Ci0gICAgICAgIAotICAgICAgICB3ZWJTZXJ2aWNlRGVzY1RleHRfID0gdWlVdGlscy5jcmVhdGVUZXh0KHdlYlNlcnZpY2VEZXNjQ29tcF8sIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9DT01CT19XU19TRVJWSUNFX0RFU0MsIAotICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NfU0VSVklDRV9ERVNDLCBJTkZPUE9QX1dTX1NFUlZJQ0VfREVTQywgU1dULlJFQURfT05MWSk7Ci0gICAgICAgIGlmIChoYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfIT1udWxsKXsKLSAgICAgICAgICBjdXJyZW50SERIXyA9IGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl9bMF07Ci0gICAgICAgICAgU3RyaW5nIHRleHQgPSBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1RFWFRfTlVNX09GX1NFUlZJQ0VTLCBJbnRlZ2VyLnRvU3RyaW5nKGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl8ubGVuZ3RoKSk7Ci0gICAgICAgICAgd2ViU2VydmljZURlc2NUZXh0Xy5zZXRUZXh0KHRleHQpOwotICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgIGdlblNrZWxldG9uUmFkaW9CdXR0b25fLnNldFNlbGVjdGlvbihmYWxzZSk7Ci0gICAgICAgIGdlblNrZWxldG9uUmFkaW9CdXR0b25fLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgICBnZW5Ta2VsZXRvblJhZGlvQnV0dG9uXy5zZXRWaXNpYmxlKGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIHNvdXJjZUxvY2F0aW9uQ29tcF8uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgICAgIHNvdXJjZUxvY2F0aW9uQ29tYm9fLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgICBzb3VyY2VMb2NhdGlvbkNvbWJvXy5zZXRWaXNpYmxlKGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIHJlZnJlc2goKTsKLQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIC8vIHBvcHVsYXRlIHRoZSB0YWJsZSBmb3IgYSBzaW5nbGUgc2VydmljZSBzZWxlY3Rpb24KLSAgICAgICAgCi0gICAgICAgIHdlYlNlcnZpY2VEZXNjQ29tYm9fID0gdWlVdGlscy5jcmVhdGVDb21ibyh3ZWJTZXJ2aWNlRGVzY0NvbXBfLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQ09NQk9fV1NfU0VSVklDRV9ERVNDLAotICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NfU0VSVklDRV9ERVNDLCBJTkZPUE9QX1dTX1NFUlZJQ0VfREVTQywgU1dULlJFQURfT05MWSk7Ci0gICAgICAgIHdlYlNlcnZpY2VEZXNjQ29tYm9fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotICAgIAotICAgICAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2dCkgewotICAgICAgICAgICAgaGFuZGxlV2ViU2VydmljZURlc2NDb21ibyhldnQpOwotICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIAotICAgICAgICBTdHJpbmdbXSB3c0Rlc2NOYW1lcyA9IEhhbmRsZXJEZXNjcmlwdGlvbkhlbHBlci5nZXRBbGxEZXNjcmlwdGlvbk5hbWVzKGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl8pOwotICAgICAgICB3ZWJTZXJ2aWNlRGVzY0NvbWJvXy5zZXRJdGVtcyh3c0Rlc2NOYW1lcyk7Ci0KLSAgICAgICAgaWYgKGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl8ubGVuZ3RoIDwgMSkgewotICAgICAgICAgIHdlYlNlcnZpY2VEZXNjQ29tYm9fLnNlbGVjdCgwKTsKLSAgICAgICAgICB3ZWJTZXJ2aWNlRGVzY0NvbWJvXy5zZXRFbmFibGVkKGZhbHNlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBpZiAoZGVzY3JpcHRpb25OYW1lXyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSB3ZWJTZXJ2aWNlRGVzY0NvbWJvXy5pbmRleE9mKGRlc2NyaXB0aW9uTmFtZV8pOwotICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKSB3ZWJTZXJ2aWNlRGVzY0NvbWJvXy5zZWxlY3QoaW5kZXgpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB3ZWJTZXJ2aWNlRGVzY0NvbWJvXy5zZWxlY3QoMCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIHNldCBEZXNjcmlwdGlvbnMKLSAgICAgICAgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyIGhkaCA9IEhhbmRsZXJEZXNjcmlwdGlvbkhlbHBlci5nZXRGb3JEZXNjcmlwdGlvbk5hbWUoaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyXywgd2ViU2VydmljZURlc2NDb21ib18uZ2V0VGV4dCgpKTsKLSAgICAgICAgaWYgKGhkaCE9bnVsbCl7Ci0gICAgICAgICAgY3VycmVudEhESF8gPSBoZGg7Ci0gICAgICAgICAgTGlzdCBoYW5kbGVycyA9IGhkaC5nZXRIYW5kbGVyTGlzdCgpOwotICAgICAgICAgIHRhYmxlVmlld2VyXy5zZXRJbnB1dChoYW5kbGVycyk7Ci0gICAgICAgICAgdGFibGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgICAgICAgfQotICAgICAgICAvLyBzZXQgb3V0cHV0IGZvbGRlcgotICAgICAgICBzZXRTb3VyY2VPdXRwdXRMb2NhdGlvbigpOyAgCi0gICAgICB9Ci0gICAgICBwYXJlbnRfLmdldFNoZWxsKCkuc2V0U2l6ZSg1MzAsIDY1MCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0KLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3IjZ2V0U3RhdHVzKCkKLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpIHsKLSAgICBJU3RhdHVzIGZpbmFsU3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICBpZiAoaXNNdWx0aXBsZVNlbGVjdGlvbl8pCi0gICAgICByZXR1cm4gU3RhdHVzVXRpbHMuaW5mb1N0YXR1cyhDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX01VTFRJUExFX1NFUlZJQ0VTX0NPTkZJRyk7Ci0gICAgcmV0dXJuIGZpbmFsU3RhdHVzOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlQWRkQnV0dG9uU2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLSAgICBBZGRIYW5kbGVyRGlhbG9nIGRpYWxvZyA9IG5ldyBBZGRIYW5kbGVyRGlhbG9nKHBhcmVudF8uZ2V0U2hlbGwoKSwgZmFsc2UpOwotICAgIGRpYWxvZy5zZXRJc011bHRpcGxlU2VydmljZXMoaXNNdWx0aXBsZVNlbGVjdGlvbl8pOwotICAgIGRpYWxvZy5jcmVhdGUoKTsKLSAgICAKLSAgICBXZWJTZXJ2aWNlRGVzY3JpcHRpb24gc2VydmljZURlc2MgPSBudWxsOwotICAgIGlmICghaXNNdWx0aXBsZVNlbGVjdGlvbl8gKXsKLSAgICAgIGlmIChjdXJyZW50SERIXyE9bnVsbCkgewotICAgICAgICBzZXJ2aWNlRGVzYyA9ICBjdXJyZW50SERIXy5nZXREZXNjcmlwdGlvbk9iamVjdCgpOwotICAgICAgICBTdHJpbmdbXSBwb3J0TmFtZXMgPSBnZXRQb3J0Q29tcG9uZW50TmFtZXMoc2VydmljZURlc2MpOwotICAgICAgICBkaWFsb2cuc2V0UG9ydE5hbWVzKHBvcnROYW1lcyk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZGlhbG9nLmdldFNoZWxsKCkuc2V0U2l6ZSg1MDAsIDIzMCk7Ci0gICAgCi0gICAgaW50IHJlc3VsdCA9IGRpYWxvZy5vcGVuKCk7Ci0KLSAgICBpZiAocmVzdWx0ID09IFdpbmRvdy5PSykgewotICAgICAgU3RyaW5nIG5hbWUgPSBkaWFsb2cuZ2V0TmFtZSgpOwotICAgICAgU3RyaW5nIGNsYXNzTmFtZSA9IGRpYWxvZy5nZXRDbGFzc05hbWUoKTsKLSAgICAgIFN0cmluZyBwb3J0ID0gZGlhbG9nLmdldFBvcnROYW1lKCk7Ci0gICAgICBpZiAocG9ydCA9PSBudWxsKQotICAgICAgICBwb3J0ID0gIioiOwotCi0gICAgICBIYW5kbGVyVGFibGVJdGVtIGhpID0gbmV3IEhhbmRsZXJUYWJsZUl0ZW0oKTsKLSAgICAgIGhpLnNldEhhbmRsZXJOYW1lKG5hbWUpOwotICAgICAgaGkuc2V0SGFuZGxlckNsYXNzTmFtZShjbGFzc05hbWUpOwotICAgICAgaGkuc2V0UG9ydE5hbWUocG9ydCk7Ci0KLSAgICAgIGlmIChzZXJ2aWNlRGVzYyE9bnVsbCl7Ci0gICAgICAgIGhpLnNldFdzRGVzY1JlZihzZXJ2aWNlRGVzYyk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIGlmIChjdXJyZW50SERIXyE9bnVsbCl7Ci0gICAgICAgIExpc3QgaGFuZGxlcnMgPSBjdXJyZW50SERIXy5nZXRIYW5kbGVyTGlzdCgpOwotICAgICAgICBoYW5kbGVycy5hZGQoaGkpOwotICAgICAgfQotCi0gICAgfQotCi0gICAgcmVmcmVzaCgpOwotICB9Ci0KLSAgcHJpdmF0ZSBTdHJpbmdbXSBnZXRQb3J0Q29tcG9uZW50TmFtZXMoV2ViU2VydmljZURlc2NyaXB0aW9uIHdlYlNlcnZpY2VEZXNjKSB7Ci0KLSAgICBMaXN0IHBvcnRzID0gd2ViU2VydmljZURlc2MuZ2V0UG9ydENvbXBvbmVudHMoKTsKLSAgICBpZiAocG9ydHMgIT0gbnVsbCkgewotICAgICAgU3RyaW5nW10gcG9ydE5hbWVzID0gbmV3IFN0cmluZ1twb3J0cy5zaXplKCldOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwb3J0cy5zaXplKCk7IGkrKykgewotICAgICAgICBQb3J0Q29tcG9uZW50IHBjID0gKFBvcnRDb21wb25lbnQpIHBvcnRzLmdldChpKTsKLSAgICAgICAgU3RyaW5nIHBjTmFtZSA9IHBjLmdldFBvcnRDb21wb25lbnROYW1lKCk7Ci0gICAgICAgIHBvcnROYW1lc1tpXSA9IHBjTmFtZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBwb3J0TmFtZXM7Ci0gICAgfQotICAgIHJldHVybiBuZXcgU3RyaW5nWzBdOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlUmVtb3ZlQnV0dG9uU2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLSAgICBoYW5kbGVEZWxldGVLZXlQcmVzc2VkKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVNb3ZlVXBCdXR0b25TZWxlY3RlZChTZWxlY3Rpb25FdmVudCBldmVudCkgewotCi0gICAgaW50IGluZGV4ID0gdGFibGVWaWV3ZXJfLmdldFRhYmxlKCkuZ2V0U2VsZWN0aW9uSW5kZXgoKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpIHsKLSAgICAgIGlmIChpbmRleCA+IDApIHsKLSAgICAgICAgaWYgKGN1cnJlbnRIREhfIT1udWxsKXsKLSAgICAgICAgICAgIExpc3QgaGFuZGxlcnMgPSBjdXJyZW50SERIXy5nZXRIYW5kbGVyTGlzdCgpOwotICAgICAgICAgICAgT2JqZWN0IG9iamVjdCA9IGhhbmRsZXJzLnJlbW92ZShpbmRleCk7Ci0gICAgICAgICAgICBoYW5kbGVycy5hZGQoaW5kZXggLSAxLCBvYmplY3QpOwotICAgICAgICAgIH0KLSAgICAgICAgdGFibGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGhhbmRsZU1vdmVEb3duQnV0dG9uU2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpIHsKLQotICAgIGludCBpbmRleCA9IHRhYmxlVmlld2VyXy5nZXRUYWJsZSgpLmdldFNlbGVjdGlvbkluZGV4KCk7Ci0gICAgaWYgKGluZGV4ICE9IC0xKSB7Ci0gICAgICBpZiAoY3VycmVudEhESF8hPW51bGwpewotICAgICAgICBMaXN0IGhhbmRsZXJzID0gY3VycmVudEhESF8uZ2V0SGFuZGxlckxpc3QoKTsKLSAgICAgICAgaWYgKGluZGV4IDwgaGFuZGxlcnMuc2l6ZSgpIC0gMSkgewotICAgICAgICAgIE9iamVjdCBvYmplY3QgPSBoYW5kbGVycy5yZW1vdmUoaW5kZXgpOwotICAgICAgICAgIGhhbmRsZXJzLmFkZChpbmRleCsxLCBvYmplY3QpOwotICAgICAgICB9Ci0gICAgICAgIHRhYmxlVmlld2VyXy5yZWZyZXNoKCk7Ci0gICAgICB9Ci0gICAgfQotCi0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVTb3VyY2VMb2NhdGlvbkNvbWJvKFNlbGVjdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgb3V0cHV0TG9jYXRpb25fID0gc291cmNlTG9jYXRpb25Db21ib18uZ2V0VGV4dCgpOwotICAgIElQYXRoIG91dHB1dFBhdGggPSAoSVBhdGgpIHBhdGhzVGFibGVfLmdldChvdXRwdXRMb2NhdGlvbl8pOwotICAgIGN1cnJlbnRIREhfLnNldFNvdXJjZU91dHB1dFBhdGgob3V0cHV0UGF0aCk7ICAgIAotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlR2VuU2tlbGV0b25SYWRpb0J1dHRvbigpIHsKLSAgICBpZiAoZ2VuU2tlbGV0b25SYWRpb0J1dHRvbl8uaXNFbmFibGVkKCkpIHsKLSAgICAgIGlmIChnZW5Ta2VsZXRvblJhZGlvQnV0dG9uXy5nZXRTZWxlY3Rpb24oKSkgewotICAgICAgICB0aGlzLmlzR2VuU2tlbGV0b25FbmFibGVkXyA9IHRydWU7Ci0gICAgICAgIHNvdXJjZUxvY2F0aW9uQ29tYm9fLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdGhpcy5pc0dlblNrZWxldG9uRW5hYmxlZF8gPSBmYWxzZTsKLSAgICAgICAgc291cmNlTG9jYXRpb25Db21ib18uc2V0RW5hYmxlZChmYWxzZSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlV2ViU2VydmljZURlc2NDb21ibyhTZWxlY3Rpb25FdmVudCBldmVudCkgewotCi0gICAgaWYgKHdlYlNlcnZpY2VEZXNjQ29tYm9fIT1udWxsICYmIHdlYlNlcnZpY2VEZXNjQ29tYm9fLmlzRW5hYmxlZCgpKSB7Ci0gICAgICBIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXIgaGRoID0gSGFuZGxlckRlc2NyaXB0aW9uSGVscGVyLmdldEZvckRlc2NyaXB0aW9uTmFtZShoYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfLCB3ZWJTZXJ2aWNlRGVzY0NvbWJvXy5nZXRUZXh0KCkpOwotICAgICAgY3VycmVudEhESF8gPSBoZGg7ICAgICAgCi0gICAgICByZWZyZXNoKCk7Ci0gICAgfQotICAgIAotICAgIGlmIChpc0dlblNrZWxldG9uRW5hYmxlZF8pewotICAgICAgc2V0U291cmNlT3V0cHV0TG9jYXRpb24oKTsKLSAgICB9Ci0gICAgCi0gIH0KLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBpc0dlblNrZWxldG9uRW5hYmxlZF8uCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0dlblNrZWxldG9uRW5hYmxlZF8oKSB7Ci0gICAgcmV0dXJuIGlzR2VuU2tlbGV0b25FbmFibGVkXzsKLSAgfQotCi0gIHByb3RlY3RlZCBjbGFzcyBMaXN0TGFiZWxQcm92aWRlciBleHRlbmRzIExhYmVsUHJvdmlkZXIgaW1wbGVtZW50cyBJVGFibGVMYWJlbFByb3ZpZGVyIHsKLQotICAgIHB1YmxpYyBJbWFnZSBnZXRDb2x1bW5JbWFnZShPYmplY3QgZWxlbWVudCwgaW50IGNvbHVtbkluZGV4KSB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldENvbHVtblRleHQoT2JqZWN0IG9iamVjdCwgaW50IGNvbHVtbkluZGV4KSB7Ci0KLSAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBIYW5kbGVyVGFibGVJdGVtKSB7Ci0gICAgICAgIEhhbmRsZXJUYWJsZUl0ZW0gaHRpID0gKEhhbmRsZXJUYWJsZUl0ZW0pIG9iamVjdDsKLSAgICAgICAgaWYgKGNvbHVtbkluZGV4ID09IDApIHsKLSAgICAgICAgICByZXR1cm4gaHRpLmdldEhhbmRsZXJOYW1lKCkgIT0gbnVsbCA/IGh0aS5nZXRIYW5kbGVyTmFtZSgpIDogIiI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY29sdW1uSW5kZXggPT0gMSkgewotICAgICAgICAgIHJldHVybiBodGkuZ2V0SGFuZGxlckNsYXNzTmFtZSgpICE9IG51bGwgPyBodGkuZ2V0SGFuZGxlckNsYXNzTmFtZSgpIDogIiI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIGh0aS5nZXRQb3J0TmFtZSgpICE9IG51bGwgPyBodGkuZ2V0UG9ydE5hbWUoKSA6ICIiOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBlbmFibGVSZW1vdmUoYm9vbGVhbiBlbmFibGVkKSB7Ci0gICAgcmVtb3ZlQnV0dG9uXy5zZXRFbmFibGVkKGVuYWJsZWQgJiYgIXRhYmxlVmlld2VyXy5nZXRTZWxlY3Rpb24oKS5pc0VtcHR5KCkpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGNsYXNzIExpc3RDb250ZW50UHJvdmlkZXIgaW1wbGVtZW50cyBJU3RydWN0dXJlZENvbnRlbnRQcm92aWRlciB7Ci0KLSAgICBwdWJsaWMgT2JqZWN0W10gZ2V0RWxlbWVudHMoT2JqZWN0IGVsZW1lbnQpIHsKLSAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgVmVjdG9yKSB7IHJldHVybiAoKFZlY3RvcikgZWxlbWVudCkudG9BcnJheSgpOyB9Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBkaXNwb3NlKCkgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGlucHV0Q2hhbmdlZChWaWV3ZXIgdmlld2VyLCBPYmplY3Qgb2xkLCBPYmplY3QgbmV3b2JqKSB7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaXNEZWxldGVkKE9iamVjdCBvYmplY3QpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVEZWxldGVLZXlQcmVzc2VkKCkgewotICAgIC8vIGludGVybmFsRGlzcG9zZSgpOwotICAgIElTZWxlY3Rpb24gc2VsZWN0aW9uID0gdGFibGVWaWV3ZXJfLmdldFNlbGVjdGlvbigpOwotICAgIGlmIChzZWxlY3Rpb24gIT0gbnVsbCAmJiAhc2VsZWN0aW9uLmlzRW1wdHkoKSAmJiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pKSB7Ci0gICAgICBpbnQgc2VsZWN0aW9uSW5kZXggPSBoYW5kbGVyc1RhYmxlXy5nZXRTZWxlY3Rpb25JbmRleCgpOwotICAgICAgaWYgKGN1cnJlbnRIREhfIT1udWxsKXsKLSAgICAgICAgY3VycmVudEhESF8uZ2V0SGFuZGxlckxpc3QoKS5yZW1vdmUoc2VsZWN0aW9uSW5kZXgpOwotICAgICAgfQotICAgICAgcmVmcmVzaCgpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlZnJlc2goKSB7Ci0gICAgdHJ5IHsKLSAgICAgIHRhYmxlVmlld2VyXy5zZXRJbnB1dChudWxsKTsKLSAgICAgIGlmIChjdXJyZW50SERIXyE9bnVsbCl7Ci0gICAgICAgIExpc3QgaGFuZGxlcnMgPSBjdXJyZW50SERIXy5nZXRIYW5kbGVyTGlzdCgpOwotICAgICAgICB0YWJsZVZpZXdlcl8uc2V0SW5wdXQoaGFuZGxlcnMpOwotICAgICAgICB0YWJsZVZpZXdlcl8ucmVmcmVzaCgpOyAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRHZW5Ta2VsZXRvbkVuYWJsZWQoYm9vbGVhbiBpc0dlblNrZWxldG9uRW5hYmxlZCkgewotICAgIHRoaXMuaXNHZW5Ta2VsZXRvbkVuYWJsZWRfID0gaXNHZW5Ta2VsZXRvbkVuYWJsZWQ7Ci0gICAgZ2VuU2tlbGV0b25SYWRpb0J1dHRvbl8uc2V0U2VsZWN0aW9uKGlzR2VuU2tlbGV0b25FbmFibGVkKTsKLQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZ2V0R2VuU2tlbGV0b25FbmFibGVkKCkgewotICAgIHJldHVybiB0aGlzLmlzR2VuU2tlbGV0b25FbmFibGVkXzsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBzZXRTb3VyY2VPdXRwdXRMb2NhdGlvbigpewotICAgIElQcm9qZWN0IHByb2plY3QgPSBjdXJyZW50SERIXy5nZXRQcm9qZWN0KCk7Ci0gICAgaWYgKHByb2plY3QhPW51bGwpewotICAgICAgSVBhdGhbXSBsb2NhdGlvbnMgPSBSZXNvdXJjZVV0aWxzLmdldEFsbEphdmFTb3VyY2VMb2NhdGlvbnMocHJvamVjdCk7Ci0gICAgICAKLSAgICAgIFN0cmluZ1tdIHBhdGhzID0gbmV3IFN0cmluZ1tsb2NhdGlvbnMubGVuZ3RoXTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYXRpb25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHBhdGhzW2ldID0gbG9jYXRpb25zW2ldLnRvU3RyaW5nKCk7Ci0gICAgICAgIHBhdGhzVGFibGVfLnB1dChwYXRoc1tpXSwgbG9jYXRpb25zW2ldKTsKLSAgICAgIH0KLSAgICAgIHNvdXJjZUxvY2F0aW9uQ29tYm9fLnNldEl0ZW1zKHBhdGhzKTsKLSAgICAgIHNvdXJjZUxvY2F0aW9uQ29tYm9fLnNlbGVjdCgwKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gc2V0IGluIG1vZGVsCi0gICAgb3V0cHV0TG9jYXRpb25fID0gc291cmNlTG9jYXRpb25Db21ib18uZ2V0VGV4dCgpOwotICAgIElQYXRoIG91dHB1dFBhdGggPSAoSVBhdGgpIHBhdGhzVGFibGVfLmdldChvdXRwdXRMb2NhdGlvbl8pOwotICAgIGN1cnJlbnRIREhfLnNldFNvdXJjZU91dHB1dFBhdGgob3V0cHV0UGF0aCk7ICAKLSAgICAKLSAgfQotICAKLSAgLyoqCi0gICAqIEFuIGFycmF5IG9mIEhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcnMKLSAgICogQHJldHVybgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SGFuZGxlckRlc2NyaXB0aW9uSG9sZGVycyhIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJbXSBoYW5kbGVySG9sZGVycyl7Ci0gICAgdGhpcy5oYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfID0gaGFuZGxlckhvbGRlcnM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJbXSBnZXRIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJzKCl7Ci0gICAgcmV0dXJuIHRoaXMuaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyXzsKLSAgfQotICAKLSAgLyoqCi0gICAqIEZvciBnZXR0aW5nIHRoZSBoYW5kbGVycyB0byBhcHBseSBmb3IgbXVsdGlwbGUgc2VydmljZXMKLSAgICogQHJldHVybgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0SGFuZGxlcnNMaXN0KCl7Ci0gICAgaWYgKGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl9bMF0hPW51bGwpCi0gICAgICByZXR1cm4gaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyX1swXS5nZXRIYW5kbGVyTGlzdCgpOwotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXREZXNjcmlwdGlvbk5hbWUoU3RyaW5nIHdzRGVzY05hbWUpIHsKLSAgICBkZXNjcmlwdGlvbk5hbWVfID0gd3NEZXNjTmFtZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldElzTXVsdGlwbGVTZWxlY3Rpb24oYm9vbGVhbiBpc011bGl0cGxlU2VsZWN0aW9uKSB7Ci0gICAgdGhpcy5pc011bHRpcGxlU2VsZWN0aW9uXyA9IGlzTXVsaXRwbGVTZWxlY3Rpb247Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBpbnRlcm5hbGl6ZSgpewotICAgIHBvcHVsYXRlSGFuZGxlcnNUYWJsZSgpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9IYW5kbGVyc0RlZmF1bHRpbmdDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvSGFuZGxlcnNEZWZhdWx0aW5nQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGEyMTI5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9IYW5kbGVyc0RlZmF1bHRpbmdDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuaW50ZXJuYWwud2Vic2VydmljZS5XZWJTZXJ2aWNlTmF2aWdhdG9yR3JvdXBUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotCi0KLS8qKgotICogSGFuZGxlcnNEZWZhdWx0aW5nQ29tbWFuZAotICogCi0gKiBEZXRlcm1pbmUgaWYgSGFuZGxlcnMgYmVsb25ncyB0byBzZXJ2aWNlIG9yIGNsaWVudCBzaWRlCi0gKi8KLXB1YmxpYyBjbGFzcyBIYW5kbGVyc0RlZmF1bHRpbmdDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3RIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDbWQgCi17Ci0gIHByaXZhdGUgYm9vbGVhbiBpc0NsaWVudEhhbmRsZXJfID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiBpc1NlcnZpY2VIYW5kbGVyXyA9IGZhbHNlOwotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7ICAgIAotICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQotICAgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGdldEluaXRpYWxTZWxlY3Rpb24oKTsKLSAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwgJiYgc2VsZWN0aW9uLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIE9iamVjdCBvYmogPSBzZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0KLSAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFdlYlNlcnZpY2VOYXZpZ2F0b3JHcm91cFR5cGUpIHsKLSAgICAgICAgICBXZWJTZXJ2aWNlTmF2aWdhdG9yR3JvdXBUeXBlIHdzbmd0ID0gKFdlYlNlcnZpY2VOYXZpZ2F0b3JHcm91cFR5cGUpIG9iajsKLSAgICAgICAgICBpZiAod3NuZ3QuZ2V0V3NkbFNlcnZpY2UoKSE9bnVsbCl7Ci0gICAgICAgICAgCWlzU2VydmljZUhhbmRsZXJfID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgICAgaWYgKHdzbmd0LmdldFNlcnZpY2VSZWYoKSE9bnVsbCl7Ci0gICAgICAgICAgCWlzQ2xpZW50SGFuZGxlcl8gPSB0cnVlOwotICAgICAgICAgIH0KLQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9UQVNLX0VYQ0VQVEVEICk7Ci0gICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0dXM7Ci0KLSAgfQotCi0gIAotLyoqCi0gKiBAcmV0dXJuIFJldHVybnMgdGhlIGlzQ2xpZW50SGFuZGxlcl8uCi0gKi8KLXB1YmxpYyBib29sZWFuIGdldElzQ2xpZW50SGFuZGxlcigpIHsKLQlyZXR1cm4gaXNDbGllbnRIYW5kbGVyXzsKLX0KLS8qKgotICogQHJldHVybiBSZXR1cm5zIHRoZSBpc1NlcnZpY2VIYW5kbGVyXy4KLSAqLwotcHVibGljIGJvb2xlYW4gZ2V0SXNTZXJ2aWNlSGFuZGxlcigpIHsKLQlyZXR1cm4gaXNTZXJ2aWNlSGFuZGxlcl87Ci19Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvSU9iamVjdFNlbGVjdGlvbkxhdW5jaGFibGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9JT2JqZWN0U2VsZWN0aW9uTGF1bmNoYWJsZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTlhZDZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9JT2JqZWN0U2VsZWN0aW9uTGF1bmNoYWJsZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDIwICAgMTM1OTEyIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSU9iamVjdFNlbGVjdGlvbkxhdW5jaGFibGUgewotCSAgLyoqCi0JICAgKiBUaGUgZnJhbWV3b3JrIHdpbGwgY2FsbCB0aGlzIG1ldGhvZCB0byBzZXQgdGhlIGluaXRpYWwgc2VsZWN0aW9uCi0JICAgKiB2YWx1ZSB0aGF0IHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQuCi0JICAgKiAKLQkgICAqIEBwYXJhbSBpbml0aWFsU2VsZWN0aW9uIHRoZSBpbml0aWFsIHNlbGVjdGlvbiB0aGUgdXNlciBzcGVjaWZpZWQuCi0JICAgKi8KLQkgIHB1YmxpYyB2b2lkIHNldEluaXRpYWxTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5pdGlhbFNlbGVjdGlvbik7Ci0JICAKLQkgIC8qKgotCSAgICogVGhlIGludGVudCBvZiB0aGUgT2JqZWN0IFNlbGVjdGlvbiBXaWRnZXQgaXMgdGhhdCB0aGUgdXNlciBoYXMKLQkgICAqIHRoZSBvcHBvcnR1bml0eSBjaGFuZ2UvZmluZCB0aGUgb2JqZWN0IHRoYXQgdGhleSB3YW50IHRvIHR1cm4gaW50bwotCSAgICogYSBXZWIgc2VydmljZS4KLQkgICAqIAotCSAgICogQHJldHVybiByZXR1cm5zIHRoZSBhbiBJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3QgdGhhdCB0aGUgdXNlcgotCSAgICogd2FudCB0byB0dXJuIGludG8gYSBXZWIgc2VydmljZS4gIFRoaXMgb2JqZWN0IG1heSBiZSBkaWZmZXJlbnQgdGhhbgotCSAgICogdGhlIGluaXRpYWxTZWxlY3Rpb24gcGFzc2VkIGluIGJ5IHRoZSBzZXRJbml0aWFsU2VsZWN0aW9uIG1ldGhvZC4KLQkgICAqLwotCSAgcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldE9iamVjdFNlbGVjdGlvbigpOwotCSAgCi0JICAvKioKLQkgICAqIFZhbGlkYXRlcyB3aGV0aGVyIHRoZSBvYmplY3RTZWxlY3Rpb24gcGFyYW1ldGVyIGlzIHZhbGlkIGZvcgotCSAgICogdGhpcyBPYmplY3Qgc2VsZWN0aW9uIHdpZGdldC4gIEFuIGVycm9yIHN0YXR1cyBzaG91bGQgYmUgcmV0dXJuZWQKLQkgICAqIGlmIHRoaXMgb2JqZWN0IGlzIG5vdCB2YWx1ZS4gIE90aGVyd2lzZSwgYW5kIG9rIHN0YXR1cyBzaG91bGQgYmUKLQkgICAqIHJldHVybmVkCi0JICAgKiAKLQkgICAqIEBwYXJhbSBvYmplY3RTZWxlY3Rpb24gdGhlIG9iamVjdCB0byBiZSB2YWxpZGF0ZWQuCi0JICAgKiBAcmV0dXJuIHRoZSBzdGF0dXMgb2YgdGhlIHZhbGlkYXRpb24uCi0JICAgKi8KLQkgIHB1YmxpYyBJU3RhdHVzIHZhbGlkYXRlU2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIG9iamVjdFNlbGVjdGlvbik7Ci0JIAotCSAgLyoqCi0JICAgKiAKLQkgICAqIEByZXR1cm4gcmV0dXJucyB0aGUgSVByb2plY3QgdGhhdCBjb250YWlucyB0aGUgc2VsZWN0aW9uCi0JICAgKiBvYmplY3QgdGhhdCB0aGUgdXNlciBoYXMgY2hvc2VuIHdpdGggdGhpcyB3aWRnZXQuICBUaGUgdmFsdWUgY2FuIGJlIAotCSAgICogbnVsbCBpZiB0aGVyZSBpcyBubyBJUHJvamVjdCBmb3IgdGhpcyBvYmplY3QuCi0JICAgKi8KLQkgIHB1YmxpYyBJUHJvamVjdCBnZXRQcm9qZWN0KCk7Ci0JICAKLQkgIC8qKgotCSAgICogCi0JICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIElWaXJ0dWFsQ29tcG9uZW50IHRoYXQgY29udGFpbnMgdGhlIHNlbGVjdGlvbgotCSAgICogb2JqZWN0IHRoYXQgdGhlIHVzZXIgaGFzIGNob3NlbiB3aXRoIHRoaXMgd2lkZ2V0LiAgVGhlIHZhbHVlIGNhbiBiZSAKLQkgICAqIG51bGwgaWYgdGhlcmUgaXMgbm8gSVZpcnR1YWxDb21wb25lbnQgZm9yIHRoaXMgb2JqZWN0Ci0JICAgKi8KLQkgIHB1YmxpYyBTdHJpbmcgZ2V0Q29tcG9uZW50TmFtZSgpOwotCSAgCi0JICAvKioKLQkgICAqIENhbGxlZCB0byBsYXVuY2ggYSBkaWFsb2cgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIG1ha2UgYW4gb2JqZWN0IHNlbGVjdGlvbi4KLQkgICAqIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gaW1wbGVtZW50aW5nIElPYmplY3RTZWxlY3Rpb25XaWRnZXQgd2hpY2ggY2FuIGJlIHVzZWQgYnkgdGhlIGRpYWxvZyBmcmFtZXdvcmsuCi0JICAgKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2Qgc2hvdWxkIGNhbGwgdGhlIG5lY2Vzc2FyeSBnZXR0ZXJzIG9uIHRoZSBkaWFsb2cgdG8gdXBkYXRlIHRoZSAKLQkgICAqIG9iamVjdCBzZWxlY3Rpb24uIAotCSAgICogCi0JICAgKiBAcmV0dXJuIHRoZSBzdGF0dXMgb2YgY29tcGxldGluZyB0aGUgZGlhbG9nIGxhdW5jaAotCSAgICovCi0JICBwdWJsaWMgaW50IGxhdW5jaChTaGVsbCBzaGVsbCk7Ci0JICAKLQkgIC8qKgotCSAgICogCi0JICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIHN0cmluZyB0byBkaXNwbGF5ZWQgaW4gdGhlIFVJIGZvciB0aGUgc2VsZWN0ZWQgb2JqZWN0Ci0JICAgKi8KLQkgIHB1YmxpYyAgU3RyaW5nIGdldE9iamVjdFNlbGVjdGlvbkRpc3BsYXlhYmxlU3RyaW5nKCk7Ci0JICAKLQkgIC8qKgotCSAgICogCi0JICAgKiBAcGFyYW0gcyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0IHNlbGVjdGlvbgotCSAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgcmVwcmVzZW50cyBhIHZhbGlkIG9iamVjdCBzZWxlY3Rpb24uCi0gICAgICAgKiAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIHNob3VsZCBzZXQgdGhlIHdpZGdldCBvYmplY3Qgc2VsZWN0aW9uCi0JICAgKiAgYWNjb3JkaW5nIHRvIHRoZSBpbnB1dCBzdHJpbmcgc28gdGhhdCBhIHN1YnNlcXVlbnQgY2FsbCB0byBnZXRPYmplY3RTZWxlY3Rpb24KLQkgICAqICB3aWxsIHJldHJpZXZlIHRoZSBjb3JyZWN0IG9iamVjdC4KLQkgICAqLyAgCi0JICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZShTdHJpbmcgcyk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvSVBhY2thYmxlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvSVBhY2thYmxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MDBiZDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL0lQYWNrYWJsZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwODI5ICAgMTU1NDQxIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCB3ZWIgc2VydmljZSB3aXphcmQgaGFuZ3MgZHVyaW5nIHJlc2l6ZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi0vKioKLSAqIEFuIGludGVyZmFjZSB0aGF0IG1hcmtzIGFuIFVJIGVsZW1lbnQgYXMgaGF2aW5nIHNvbWUgY3VzdG9tIHBhY2tpbmcgY29kZS4KLSAqLwotcHVibGljIGludGVyZmFjZSBJUGFja2FibGUgewotCQotCS8qKgotCSAqIENhbGxpbmcgdGhpcyBtZXRob2Qgc2hvdWxkIGNhdXNlIHRoZSBVSSBlbGVtZW50IHRvIHBhY2sgaXRzZWxmLiAgTm90ZSB0aGF0Ci0JICogdGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseSBoYXZlIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSBwYWNrKCkgbWV0aG9kIGluIFNXVC4KLQkgKi8KLQl2b2lkIHBhY2tJdCgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL0ltcG9ydFdTSUxXaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9JbXBvcnRXU0lMV2lkZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjN2IxOWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL0ltcG9ydFdTSUxXaWRnZXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIzNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwODA1MDEgICAyMjk3MjggbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIHVwcGVyY2FzZSAuV1NETCBjYW5ub3QgYmUgZm91bmQgYnkgdGhlIFdlYiBTZXJ2aWNlIENsaWVudCB3aXphcmQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWY7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFQWN0aW9uQWRhcHRlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NpbC5Bcmd1bWVudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzaWwuVGFibGVWaWV3ZXJFZGl0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5EaWFsb2dSZXNvdXJjZUJyb3dzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5GaWxlRXh0ZW5zaW9uRmlsdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UYWJsZUl0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmhlbHAuSVdvcmtiZW5jaEhlbHBTeXN0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2lsLkFkZFdTRExUb1dTSUxDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuU2VydmljZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsOwotCi0vKioKLSogUGFnZSBmb3IgaW1wb3J0aW5nIFdTREwgcmVmZXJlbmNlcyBpbnRvIGEgV1NJTCBpbiB0aGUgd29ya2JlbmNoLgotKi8KLXB1YmxpYyBjbGFzcyBJbXBvcnRXU0lMV2lkZ2V0IGV4dGVuZHMgU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yCi17Ci0gIC8qQ09OVEVYVF9JRCBXU0lMMDAwMSBmb3IgdGhlIFdTSUwgSW1wb3J0IFBhZ2UqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1dTSUxfSU1QT1JUX1BBR0UgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5JRCArICIuV1NJTDAwMDEiOwotCi0gIC8qQ09OVEVYVF9JRCBXU0lMMDAwMiBmb3IgdGhlIFdTSUwgdGV4dCBmaWVsZCovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfV1NJTF9URVhUX1dTSUwgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5JRCArICIuV1NJTDAwMDIiOwotCi0gIC8qQ09OVEVYVF9JRCBXU0lMMDAwMyBmb3IgdGhlIFdTSUwgYnJvd3NlIGJ1dHRvbiovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfV1NJTF9CVVRUT05fQlJPV1NFX1dTSUwgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5JRCArICIuV1NJTDAwMDMiOwotCi0gIC8qQ09OVEVYVF9JRCBXU0lMMDAwNCBmb3IgdGhlIFdTREwgdGFibGUqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1dTSUxfVEFCTEVfV1NETCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLklEICsgIi5XU0lMMDAwNCI7Ci0KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSU5TUEVDVElPTl9XU0lMID0gImluc3BlY3Rpb24ud3NpbCI7Ci0KLSAgcHJpdmF0ZSBUZXh0IHdzaWxfOwotICBwcml2YXRlIEJ1dHRvbiBicm93c2VfOwotICBwcml2YXRlIFRhYmxlVmlld2VyRWRpdG9yIHdzZGxzXzsKLSAgCi0gIC8qKgotICAqIENvbnN0cnVjdHMgYSBuZXcgcGFnZS4KLSAgKi8KLSAgcHVibGljIEltcG9ydFdTSUxXaWRnZXQoKQotICB7Ci0gIH0KLQotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyhDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lcikKLSAgewotICAJSVdvcmtiZW5jaEhlbHBTeXN0ZW0gaGVscFN5c3RlbSA9IFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpOwotICAJCi0gICAgcGFyZW50LnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTSUxfSU1QT1JUX1BBR0UpOwotICAgIGhlbHBTeXN0ZW0uc2V0SGVscChwYXJlbnQsIElORk9QT1BfV1NJTF9JTVBPUlRfUEFHRSk7Ci0KLSAgICBDb21wb3NpdGUgY29tcG9zaXRlID0gbmV3IENvbXBvc2l0ZShwYXJlbnQsIFNXVC5OT05FKTsKLSAgICBHcmlkTGF5b3V0IGdsID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICBnbC5udW1Db2x1bW5zID0gMzsKLSAgICBjb21wb3NpdGUuc2V0TGF5b3V0KGdsKTsKLSAgICBHcmlkRGF0YSBnZCA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5HUkFCX1ZFUlRJQ0FMIHwgR3JpZERhdGEuVkVSVElDQUxfQUxJR05fQkVHSU5OSU5HIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMIHwgR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKTsKLSAgICBnZC5ncmFiRXhjZXNzVmVydGljYWxTcGFjZSA9IHRydWU7Ci0gICAgZ2QuZ3JhYkV4Y2Vzc0hvcml6b250YWxTcGFjZSA9IHRydWU7Ci0gICAgY29tcG9zaXRlLnNldExheW91dERhdGEoZ2QpOwotCi0gICAgTGFiZWwgbGFiZWwgPSBuZXcgTGFiZWwoY29tcG9zaXRlLCBTV1QuV1JBUCk7Ci0gICAgbGFiZWwuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfV1NJTF9VUkkpOwotICAgIGxhYmVsLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCkpOwotCi0gICAgd3NpbF8gPSBuZXcgVGV4dChjb21wb3NpdGUsIFNXVC5XUkFQIHwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIpOwotICAgIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCB8IEdyaWREYXRhLkdSQUJfSE9SSVpPTlRBTCk7Ci0gICAgZ2Qud2lkdGhIaW50ID0gMjU2OwotICAgIHdzaWxfLnNldExheW91dERhdGEoZ2QpOwotICAgIHdzaWxfLmFkZExpc3RlbmVyKFNXVC5Nb2RpZnksIHN0YXR1c0xpc3RlbmVyKTsKLSAgICB3c2lsXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU0lMX1RFWFRfV1NJTCk7Ci0gICAgaGVscFN5c3RlbS5zZXRIZWxwKHdzaWxfLCBJTkZPUE9QX1dTSUxfVEVYVF9XU0lMKTsKLQotICAgIGJyb3dzZV8gPSBuZXcgQnV0dG9uKGNvbXBvc2l0ZSwgU1dULlBVU0gpOwotICAgIGJyb3dzZV8uc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQlJPV1NFKTsKLSAgICBicm93c2VfLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCkpOwotICAgIGJyb3dzZV8uYWRkTGlzdGVuZXIoU1dULlNlbGVjdGlvbiwKLSAgICAgIG5ldyBMaXN0ZW5lcigpCi0gICAgICB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50IGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgaGFuZGxlQnJvd3NlRXZlbnQoZXZlbnQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgKTsKLSAgICBicm93c2VfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTSUxfQlVUVE9OX0JST1dTRV9XU0lMKTsKLSAgICBoZWxwU3lzdGVtLnNldEhlbHAoYnJvd3NlXywgSU5GT1BPUF9XU0lMX0JVVFRPTl9CUk9XU0VfV1NJTCk7Ci0KLSAgICBDb21wb3NpdGUgd3NkbENvbXBvc2l0ZSA9IG5ldyBDb21wb3NpdGUoY29tcG9zaXRlLCBTV1QuTk9ORSk7Ci0gICAgd3NkbENvbXBvc2l0ZS5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoKSk7Ci0gICAgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9CT1RIKTsKLSAgICBnZC5ob3Jpem9udGFsU3BhbiA9IDM7Ci0gICAgd3NkbENvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKGdkKTsKLSAgICBsYWJlbCA9IG5ldyBMYWJlbCh3c2RsQ29tcG9zaXRlLCBTV1QuV1JBUCk7Ci0gICAgbGFiZWwuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfV1NETCk7Ci0gICAgbGFiZWwuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKSk7Ci0gICAgU3RyaW5nW10gY29sdW1ucyA9IHtDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfV1NETF9VUkl9OwotICAgIHdzZGxzXyA9IG5ldyBUYWJsZVZpZXdlckVkaXRvcih3c2RsQ29tcG9zaXRlLCBjb2x1bW5zLCBuZXcgQXJyYXlMaXN0KCksICJodHRwOi8vIik7Ci0gICAgd3NkbHNfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTSUxfVEFCTEVfV1NETCk7Ci0gICAgd3NkbHNfLnNldEluZm9wb3AoSU5GT1BPUF9XU0lMX1RBQkxFX1dTREwpOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaGFuZGxlQnJvd3NlRXZlbnQoRXZlbnQgZXZlbnQpCi0gIHsKLSAgICBEaWFsb2dSZXNvdXJjZUJyb3dzZXIgZGlhbG9nID0gbmV3IERpYWxvZ1Jlc291cmNlQnJvd3Nlcihicm93c2VfLmdldFNoZWxsKCksIG51bGwsIG5ldyBGaWxlRXh0ZW5zaW9uRmlsdGVyKG5ldyBTdHJpbmdbXSB7IndzaWwifSkpOwotICAgIGRpYWxvZy5vcGVuKCk7Ci0gICAgSVJlc291cmNlIHJlcyA9IGRpYWxvZy5nZXRGaXJzdFNlbGVjdGlvbigpOwotICAgIGlmIChyZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAocmVzIGluc3RhbmNlb2YgSUZpbGUpCi0gICAgICAgIHdzaWxfLnNldFRleHQocmVzLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKSk7Ci0gICAgICBlbHNlCi0gICAgICAgIHdzaWxfLnNldFRleHQocmVzLmdldEZ1bGxQYXRoKCkuYWRkVHJhaWxpbmdTZXBhcmF0b3IoKS5hcHBlbmQoSU5TUEVDVElPTl9XU0lMKS50b1N0cmluZygpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBnZXRTdGF0dXMoKQotICB7Ci0gICAgaWYgKCF3c2lsXy5nZXRUZXh0KCkudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgiLndzaWwiKSkKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfTVNHX0lOVkFMSURfV1NJTF9GSUxFX05BTUUgKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pCi0gIHsKLSAgICBBcnJheUxpc3QgbGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwgJiYgIXNlbGVjdGlvbi5pc0VtcHR5KCkpCi0gICAgewotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHNlbGVjdGlvbi5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgICAgewotICAgICAgICBPYmplY3Qgb2JqZWN0ID0gaXQubmV4dCgpOwotICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgSUZpbGUpIHsKLSAgICAgICAgICBJRmlsZSBmaWxlID0gKElGaWxlKSBvYmplY3Q7Ci0gICAgICAgICAgU3RyaW5nIGV4dCA9IGZpbGUuZ2V0RmlsZUV4dGVuc2lvbigpOwotICAgICAgICAgIGlmIChleHQgIT0gbnVsbCkgewotCSAgICAgICAgICBpZiAoZXh0LmVxdWFsc0lnbm9yZUNhc2UoIndzZGwiKSkKLQkgICAgICAgIAkgIGxpc3QuYWRkKGZpbGUuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpKTsKLQkgICAgICAgICAgZWxzZSBpZiAoZXh0LmVxdWFsc0lnbm9yZUNhc2UoIndzaWwiKSkKLQkgICAgICAgIAkgIHdzaWxfLnNldFRleHQoZmlsZS5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgU2VydmljZUltcGwpCi0gICAgICAgICAgbGlzdC5hZGQoSjJFRUFjdGlvbkFkYXB0ZXJGYWN0b3J5LmdldFdTSUxQYXRoKCgoU2VydmljZUltcGwpKG9iamVjdCkpKSk7CQotICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgU2VydmljZVJlZikKLSAgICAgICAgICBsaXN0LmFkZChKMkVFQWN0aW9uQWRhcHRlckZhY3RvcnkuZ2V0V1NJTFBhdGgoKChTZXJ2aWNlUmVmKShvYmplY3QpKSkpOwkJCi0gICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBXU0RMUmVzb3VyY2VJbXBsKQotICAgICAgICAgIGxpc3QuYWRkKEoyRUVBY3Rpb25BZGFwdGVyRmFjdG9yeS5nZXRXU0lMUGF0aCgoKFdTRExSZXNvdXJjZUltcGwpKG9iamVjdCkpKSk7CQotICAgICAgfQotICAgIH0KLSAgICB3c2Rsc18uc2V0SW5wdXQobGlzdCk7Ci0gICAgd3NkbHNfLnJlZnJlc2goKTsKLSAgICBpZiAobGlzdC5zaXplKCkgPiAwKQotICAgIHsKLSAgICAgIFN0cmluZ0J1ZmZlciBwYXRoID0gbmV3IFN0cmluZ0J1ZmZlcihsaXN0LmdldCgwKS50b1N0cmluZygpKTsKLSAgICAgIC8vIGNoYW5nZSBleHRlbnNpb24gZnJvbSAud3NkbCB0byAud3NpbAotICAgICAgaW50IGxlbmd0aCA9IHBhdGgubGVuZ3RoKCk7Ci0gICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKGxlbmd0aC00LCBsZW5ndGgsICJ3c2lsIik7Ci0gICAgICB3c2lsXy5zZXRUZXh0KHBhdGgudG9TdHJpbmcoKSk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgQXJndW1lbnRzIGdldEdlbldTSUxBcmd1bWVudHMoKQotICB7Ci0gICAgQXJndW1lbnRzIGFyZ3MgPSBuZXcgQXJndW1lbnRzKCk7Ci0gICAgU3RyaW5nIHdzaWxQYXRoID0gd3NpbF8uZ2V0VGV4dCgpOwotICAgIGlmICh3c2lsUGF0aC5pbmRleE9mKCc6JykgPCAwKQotICAgICAgYXJncy5hZGQoQWRkV1NETFRvV1NJTENvbW1hbmQuQVJHX1dTSUwsIFVSSS5jcmVhdGVQbGF0Zm9ybVJlc291cmNlVVJJKHdzaWxfLmdldFRleHQoKSkudG9TdHJpbmcoKSk7Ci0gICAgZWxzZQotICAgICAgYXJncy5hZGQoQWRkV1NETFRvV1NJTENvbW1hbmQuQVJHX1dTSUwsIHdzaWxQYXRoKTsKLSAgICBUYWJsZUl0ZW1bXSBpdGVtcyA9IHdzZGxzXy5nZXRJdGVtcygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgU3RyaW5nIHVyaSA9IGl0ZW1zW2ldLmdldFRleHQoMCk7Ci0gICAgICBpZiAodXJpLmluZGV4T2YoJzonKSA8IDApCi0gICAgICB7Ci0gICAgICAgIElSZXNvdXJjZSByZXMgPSBSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZSh1cmkpOwotICAgICAgICBpZiAocmVzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB1cmkgPSByZXMuZ2V0TG9jYXRpb24oKS50b0ZpbGUoKS50b1VSTCgpLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gbXVybGUpCi0gICAgICAgICAgewotICAgICAgICAgIAltdXJsZS5nZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBhcmdzLmFkZChBZGRXU0RMVG9XU0lMQ29tbWFuZC5BUkdfV1NETCwgdXJpKTsKLSAgICB9Ci0gICAgYXJncy5hZGQoQWRkV1NETFRvV1NJTENvbW1hbmQuQVJHX1JFU09MVkVfV1NETCwgbnVsbCk7Ci0gICAgcmV0dXJuIGFyZ3M7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9KYXZhQmVhblNlbGVjdGlvbkxhdW5jaGFibGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9KYXZhQmVhblNlbGVjdGlvbkxhdW5jaGFibGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIzNmY0ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvSmF2YUJlYW5TZWxlY3Rpb25MYXVuY2hhYmxlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDIwICAgMTM1OTEyIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNzE5ICAgMTQ5MzUyIG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbgotICogMjAwNjA4MjYgICAxMzU1NzAgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFNlcnZpY2UgaW1wbGVtZW50YXRpb24gVVJMIG5vdCBkaXNwbGF5ZWQgcHJvcGVybHkgb24gZmlyc3QgcGFnZQotICogMjAwNzAzMTMgICAxNzAxMjYgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEJVSmF2YSBzY2VuYXJpbyBkb2Vzbid0IGNhdGNoIGltcHJvcGVyIHNlcnZpY2UgZGVmaW5pdGlvbgotICogMjAwODAzMTAgICAyMjIwNzUgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIENhbm5vdCBsYXVuY2ggV2ViIFNlcnZpY2Ugd2l6YXJkIG9uIGFuIElUeXBlCi0gKiAyMDA4MDMxOCAgIDIxMzMzMCB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZywgTm9uLWNvbnZlbnRpb25hbCBKYXZhIG5hbWluZyBwcmV2ZW50cyBjcmVhdGluZyBXZWIgU2VydmljZXMgKGNsaWVudCkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNvbXBpbGF0aW9uVW5pdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5KYXZhQ29udmVudGlvbnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YUNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YU1vZGVsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuUHJvZ3Jlc3NNb25pdG9yRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5CZWFuTGluazsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuaW50ZXJuYWwuaW1wbC5Qb3J0Q29tcG9uZW50SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuaW50ZXJuYWwuaW1wbC5TZXJ2aWNlSW1wbEJlYW5JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5kaWFsb2cuRGlhbG9nVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxDb21wb25lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBKYXZhQmVhblNlbGVjdGlvbkxhdW5jaGFibGUgZXh0ZW5kcyBBYnN0cmFjdE9iamVjdFNlbGVjdGlvbkxhdW5jaGFibGUgewotCi0JICBwcml2YXRlIElQcm9qZWN0ICAgICAgICAgICBzZXJ2ZXJQcm9qZWN0XyA9IG51bGw7Ci0JICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgICBzZXJ2ZXJDb21wb25lbnROYW1lXyA9IG51bGw7CSAgCi0JICBwcml2YXRlIFN0cmluZyBiZWFuQ2xhc3NTdHJpbmdfPSIiOwotCSAgcHJpdmF0ZSBJU3RhdHVzIHZhbGlkYXRpb25TdGF0dXM7Ci0JCSAgIAotCSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKQotCSAgewotCSAgICBpZiAoaW5pdGlhbFNlbGVjdGlvbiAhPSBudWxsICYmICFpbml0aWFsU2VsZWN0aW9uLmlzRW1wdHkoKSkKLQkgICAgewotCSAgICAgIE9iamVjdCBvYmplY3QgPSBpbml0aWFsU2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOwotCSAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBJRmlsZSkKLQkgICAgICB7Ci0JICAgICAgCUlGaWxlIGlGaWxlID0gKElGaWxlKW9iamVjdDsKLQkgICAgICAJU3RyaW5nIGZpbGVFeHQgPSBpRmlsZS5nZXRGaWxlRXh0ZW5zaW9uKCkudG9Mb3dlckNhc2UoKTsKLQkgICAgICAJaWYgKGZpbGVFeHQuZXF1YWxzKCJqYXZhIikgfHwgZmlsZUV4dC5lcXVhbHMoImNsYXNzIikpCi0JICAgICAgICAgIHNldEJlYW5DbGFzcyhpRmlsZSk7Ci0JICAgICAgfQotCSAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIElUeXBlKQotCSAgICAJc2V0QmVhbkNsYXNzKChJVHlwZSkgb2JqZWN0KTsKLQkgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBJQ29tcGlsYXRpb25Vbml0KQotCSAgICAgIAlzZXRCZWFuQ2xhc3MoKChJQ29tcGlsYXRpb25Vbml0KW9iamVjdCkuZ2V0UmVzb3VyY2UoKSk7Ci0JICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgU2VydmljZUltcGxCZWFuSW1wbCkKLQkgICAgICAJc2V0QmVhbkNsYXNzKChTZXJ2aWNlSW1wbEJlYW5JbXBsKW9iamVjdCk7Ci0JICAgICAgZWxzZSBpZihvYmplY3QgaW5zdGFuY2VvZiBCZWFuTGluaykKLQkgICAgICAJc2V0QmVhbkNsYXNzKChCZWFuTGluaylvYmplY3QpOwotCSAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFN0cmluZykKLQkgICAgCWJlYW5DbGFzc1N0cmluZ18gPSAoU3RyaW5nKSBvYmplY3Q7IC8vIHVzZSBmb3IgZGlzcGxheWFibGUgc3RyaW5nCi0JICAgIH0KLQkgIH0KLQotCSBwdWJsaWMgSVN0cnVjdHVyZWRTZWxlY3Rpb24gZ2V0T2JqZWN0U2VsZWN0aW9uKCkKLQkgIHsJCSAKLQkgICAgcmV0dXJuIG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKGJlYW5DbGFzc1N0cmluZ18pOwotCSAgfQotCSAgCi0JICBwdWJsaWMgSVByb2plY3QgZ2V0UHJvamVjdCgpCi0JICB7Ci0JICAgIHJldHVybiBzZXJ2ZXJQcm9qZWN0XzsKLQkgIH0KLQotCSAgcHVibGljIFN0cmluZyBnZXRDb21wb25lbnROYW1lKCkKLQkgIHsKLQkgICAgcmV0dXJuIHNlcnZlckNvbXBvbmVudE5hbWVfOwotCSAgfQotCi0JcHVibGljIGludCBsYXVuY2goU2hlbGwgc2hlbGwpIHsJCQotCQkgICAKLQkJICAgIElUeXBlIGl0eXBlID0gRGlhbG9nVXRpbHMuYnJvd3NlQ2xhc3Nlc0FzSVR5cGUoc2hlbGwsIFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdHMoKSwgbmV3IFByb2dyZXNzTW9uaXRvckRpYWxvZyhzaGVsbCkpOwotCQkgICAgcmV0dXJuIHNldEJlYW5DbGFzcyhpdHlwZSk7Ci0JfQotCQkgIAkKLQlwcml2YXRlIGludCBzZXRCZWFuQ2xhc3MoSVR5cGUgaXR5cGUpIHsKLQkJICAgIGlmIChpdHlwZSAhPSBudWxsKQotCQkgICAgewotCQkgICAgICAgYmVhbkNsYXNzU3RyaW5nXyA9IGl0eXBlLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpOwotCQkgICAgICB0cnkKLQkJICAgICAgewotCQkgICAgICAgIElSZXNvdXJjZSByZXMgPSBpdHlwZS5nZXRVbmRlcmx5aW5nUmVzb3VyY2UoKTsKLQkJICAgICAgICBpZiAocmVzICE9IG51bGwpCi0JCSAgICAgICAgewotCQkgICAgICAgICAgc2VydmVyUHJvamVjdF8gPSByZXMuZ2V0UHJvamVjdCgpOwotCQkgICAgICAgICAgSVZpcnR1YWxDb21wb25lbnQgY29tcCA9IFJlc291cmNlVXRpbHMuZ2V0Q29tcG9uZW50T2YocmVzKTsKLQkJICAgICAgICAgIGlmIChjb21wIT1udWxsKQotCQkgICAgICAgICAgewotCQkgICAgICAgICAgICBzZXJ2ZXJDb21wb25lbnROYW1lXyA9IGNvbXAuZ2V0TmFtZSgpOwotCQkgICAgICAgICAgfQotCQkgICAgICAgIH0KLQkJICAgICAgICBlbHNlCi0JCSAgICAgICAgewotCQkgICAgICAgICAgc2VydmVyUHJvamVjdF8gPSBudWxsOwotCQkgICAgICAgICAgc2VydmVyQ29tcG9uZW50TmFtZV8gPSBudWxsOwotCQkgICAgICAgIH0KLQkJICAgICAgICByZXR1cm4gU3RhdHVzLk9LOwotCQkgICAgICB9Ci0JCSAgICAgIGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gam1lKQotCQkgICAgICB7Ci0JCSAgICAgICAgc2VydmVyUHJvamVjdF8gPSBudWxsOwotCQkgICAgICAgIHNlcnZlckNvbXBvbmVudE5hbWVfID0gbnVsbDsKLQkJICAgICAgICByZXR1cm4gU3RhdHVzLkVSUk9SOwotCQkgICAgICB9Ci0JCSAgICB9CQkJICAgIAotCQlyZXR1cm4gU3RhdHVzLkNBTkNFTDsKLQl9CQotICAJCi0JICBwcml2YXRlIHZvaWQgc2V0QmVhbkNsYXNzKElSZXNvdXJjZSByZXNvdXJjZSkKLQkgIHsKLQkgICAgaWYoIHJlc291cmNlICE9IG51bGwgJiYgcmVzb3VyY2UgaW5zdGFuY2VvZiBJRmlsZSApCi0JICAgIHsKLQkgICAgICBJUGF0aCAgcGF0aCAgICAgPSByZXNvdXJjZS5nZXRGdWxsUGF0aCgpOwotCSAgICAgIFN0cmluZyBiYXNlbmFtZSA9IHBhdGgubGFzdFNlZ21lbnQoKTsKLQkgICAgICAKLQkgICAgICBpZiggYmFzZW5hbWUgIT0gbnVsbCAmJiBiYXNlbmFtZS5sZW5ndGgoKSA+IDAgKQotCSAgICAgIHsKLQkgICAgICAgIFN0cmluZyBiZWFuUGFja2FnZSA9IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlscy5nZXRKYXZhUmVzb3VyY2VQYWNrYWdlTmFtZShwYXRoKTsKLQkgICAgICAgIFN0cmluZyBiZWFuQ2xhc3MgPSAoYmVhblBhY2thZ2UgPT0gbnVsbCB8fCBiZWFuUGFja2FnZS5sZW5ndGgoKSA9PSAwID8gYmFzZW5hbWUgOiAoYmVhblBhY2thZ2UgKyAiLiIgKyBiYXNlbmFtZSkpOwotCSAgICAgICAgCi0JICAgICAgICBpZiggYmVhbkNsYXNzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5qYXZhIikgfHwgYmVhbkNsYXNzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5jbGFzcyIgKSApCi0JICAgICAgICB7Ci0JICAgICAgICAgIGJlYW5DbGFzcyA9IGJlYW5DbGFzcy5zdWJzdHJpbmcoIDAsIGJlYW5DbGFzcy5sYXN0SW5kZXhPZignLicpICk7Ci0JICAgICAgICB9Ci0JICAgICAgICAKLQkgICAgICAgIGJlYW5DbGFzc1N0cmluZ18gPSBiZWFuQ2xhc3M7Ci0JICAgICAgICBzZXJ2ZXJQcm9qZWN0XyA9ICBSZXNvdXJjZVV0aWxzLmdldFByb2plY3RPZihwYXRoKTsKLQkgICAgICAgIElWaXJ0dWFsQ29tcG9uZW50IGNvbXAgPSBSZXNvdXJjZVV0aWxzLmdldENvbXBvbmVudE9mKHJlc291cmNlKTsKLQkgICAgICAgIAotCSAgICAgICAgaWYgKGNvbXAhPW51bGwpCi0JICAgICAgICB7CQotCSAgICAgICAgICBzZXJ2ZXJDb21wb25lbnROYW1lXyA9IGNvbXAuZ2V0TmFtZSgpOwotCSAgICAgICAgfSAgICAgICAgCi0JICAgICAgICAKLQkgICAgICB9Ci0JICAgIH0KLQkgIH0KLQotCSAgcHJpdmF0ZSB2b2lkIHNldEJlYW5DbGFzcyhTZXJ2aWNlSW1wbEJlYW5JbXBsIHNlcnZpY2VJbXBsKQotCSAgewotCSAgICBpZiggc2VydmljZUltcGwgIT0gbnVsbCApCi0JICAgIHsKLQkgICAgICBFT2JqZWN0IGVPYmplY3QgPSBzZXJ2aWNlSW1wbC5lQ29udGFpbmVyKCk7Ci0JICAgICAgaWYoZU9iamVjdCBpbnN0YW5jZW9mIFBvcnRDb21wb25lbnRJbXBsKXsKLQkgICAgICAJUG9ydENvbXBvbmVudEltcGwgcGNpID0gKFBvcnRDb21wb25lbnRJbXBsKWVPYmplY3Q7Ci0JICAgICAgCWJlYW5DbGFzc1N0cmluZ18gPSBwY2kuZ2V0U2VydmljZUVuZHBvaW50SW50ZXJmYWNlKCk7CSAgICAgIAkKLQkgICAgICB9Ci0JICAgIH0KLQkgIH0KLQkgIAotCSAgcHJpdmF0ZSB2b2lkIHNldEJlYW5DbGFzcyhCZWFuTGluayBzZXJ2aWNlSW1wbCkKLQkgIHsKLQkgICAgaWYoIHNlcnZpY2VJbXBsICE9IG51bGwgKQotCSAgICB7Ci0JICAgICAgRU9iamVjdCBlT2JqZWN0ID0gc2VydmljZUltcGwuZUNvbnRhaW5lcigpOwotCSAgICAgIGlmKGVPYmplY3QgaW5zdGFuY2VvZiBTZXJ2aWNlSW1wbEJlYW5JbXBsKXsKLQkgICAgICAJc2V0QmVhbkNsYXNzKChTZXJ2aWNlSW1wbEJlYW5JbXBsKWVPYmplY3QpOwotCSAgICAgIH0KLQkgICAgfQotCSAgfQotCSAgCi0JICBwdWJsaWMgSVN0YXR1cyBnZXRTdGF0dXMoKQotCSAgewotCQlpZiAoYmVhbkNsYXNzU3RyaW5nXy5sZW5ndGgoKSA8PSAwKQotCSAgICB7Ci0JICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX01TR19CRUFOX0NBTk5PVF9CRV9FTVBUWSk7Ci0JICAgIH0KLQkgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JICB9Ci0JICAKLQkgIHB1YmxpYyBJU3RhdHVzIHZhbGlkYXRlU2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIG9iamVjdFNlbGVjdGlvbikKLQkgIHsKLQkJaWYgKHZhbGlkYXRpb25TdGF0dXMgPT0gbnVsbCkKLQkJCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCQkKLQkJcmV0dXJuIHZhbGlkYXRpb25TdGF0dXM7Ci0JICB9Ci0JICAKLQkgIHB1YmxpYyBTdHJpbmcgZ2V0T2JqZWN0U2VsZWN0aW9uRGlzcGxheWFibGVTdHJpbmcoKSB7CQkgIAotCQkJICByZXR1cm4gYmVhbkNsYXNzU3RyaW5nXzsKLQkgIH0KLQkgIAotCSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoU3RyaW5nIHMpIHsKLQkJICBiZWFuQ2xhc3NTdHJpbmdfID0gczsKLQkJICBTdHJpbmcgc291cmNlTGV2ZWwgPSBKYXZhQ29yZS5nZXRPcHRpb24oSmF2YUNvcmUuQ09NUElMRVJfU09VUkNFKTsKLQkJICBTdHJpbmcgY29tcGxpYW5jZUxldmVsID0gSmF2YUNvcmUuZ2V0T3B0aW9uKEphdmFDb3JlLkNPTVBJTEVSX0NPTVBMSUFOQ0UpOwotCQkgIHZhbGlkYXRpb25TdGF0dXMgPSBKYXZhQ29udmVudGlvbnMudmFsaWRhdGVKYXZhVHlwZU5hbWUocywgc291cmNlTGV2ZWwsIGNvbXBsaWFuY2VMZXZlbCk7Ci0JCSAgcmV0dXJuIHZhbGlkYXRpb25TdGF0dXMuaXNPSygpOwotCSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvUHJlZmVyZW5jZXNTZWxlY3Rpb25XaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9QcmVmZXJlbmNlc1NlbGVjdGlvbldpZGdldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmM0NjQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9QcmVmZXJlbmNlc1NlbGVjdGlvbldpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLldTVUlQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLlVJVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0RGF0YUV2ZW50czsKLQotCi1wdWJsaWMgY2xhc3MgUHJlZmVyZW5jZXNTZWxlY3Rpb25XaWRnZXQgZXh0ZW5kcyBTaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3IKLXsgICAgCi0gIHByaXZhdGUgUmVzb3VyY2VDb250ZXh0IGNvbnRleHRfOwotICAKLSAgLypDT05URVhUX0lEIFBXUFIwMDAzIGZvciB0aGUgT3ZlcndyaXRlIEZpbGVzIGNoZWNrIGJveCBvZiB0aGUgUHJvamVjdCBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QV1BSX0NIRUNLQk9YX09WRVJXUklURV9GSUxFUyA9ICJQV1BSMDAwMyI7Ci0gIHByaXZhdGUgQnV0dG9uIG92ZXJ3cml0ZUZpbGVzQ2hlY2tib3hfOwotICAKLSAgLypDT05URVhUX0lEIFBXUFIwMDA0IGZvciB0aGUgQ3JlYXRlIEZvbGRlcnMgY2hlY2sgYm94IG9mIHRoZSBQcm9qZWN0IFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXUFJfQ0hFQ0tCT1hfQ1JFQVRFX0ZPTERFUlMgPSAiUFdQUjAwMDQiOwotICBwcml2YXRlIEJ1dHRvbiBjcmVhdGVGb2xkZXJzQ2hlY2tib3hfOwotICAKLSAgLypDT05URVhUX0lEIFBXUFIwMDE1IGZvciB0aGUgQ2hlY2sgT3V0IEZpbGVzIGNoZWNrIGJveCBvZiB0aGUgUHJvamVjdCBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QV1BSX0NIRUNLQk9YX0NIRUNLT1VUX0ZJTEVTID0gIlBXUFIwMDE1IjsgIAotICBwcml2YXRlIEJ1dHRvbiBjaGVja291dEZpbGVzQ2hlY2tib3hfOwotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yI2FkZENvbnRyb2xzKG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZSwgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXIpCi0gICAqLwotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyggQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIpCi0gIHsKLSAgICBTdHJpbmcgICAgICAgY29uUGx1Z2luSWQgPSAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIjsKLSAgCVVJVXRpbHMgICAgICB1dGlscyAgICAgICA9IG5ldyBVSVV0aWxzKCBjb25QbHVnaW5JZCApOwotICAJCi0gICAgQ29tcG9zaXRlIHJlc291cmNlc0dyb3VwID0gdXRpbHMuY3JlYXRlQ29tcG9zaXRlKCBwYXJlbnQsIDEgKTsKLSAgICAKLSAgICBvdmVyd3JpdGVGaWxlc0NoZWNrYm94XyA9IHV0aWxzLmNyZWF0ZUNoZWNrYm94KCByZXNvdXJjZXNHcm91cCwgV1NVSVBsdWdpbk1lc3NhZ2VzLkJVVFRPTl9PVkVSV1JJVEVfRklMRVMsCi0gICAgCQlXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9QUFJNX0NIRUNLQk9YX09WRVJXUklURV9GSUxFUywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9QV1BSX0NIRUNLQk9YX09WRVJXUklURV9GSUxFUyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIGNyZWF0ZUZvbGRlcnNDaGVja2JveF8gPSB1dGlscy5jcmVhdGVDaGVja2JveCggcmVzb3VyY2VzR3JvdXAsIFdTVUlQbHVnaW5NZXNzYWdlcy5CVVRUT05fQ1JFQVRFX0ZPTERFUlMsCi0gICAgCQlXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9QUFJNX0NIRUNLQk9YX0NSRUFURV9GT0xERVJTICwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZPUE9QX1BXUFJfQ0hFQ0tCT1hfQ1JFQVRFX0ZPTERFUlMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIGNoZWNrb3V0RmlsZXNDaGVja2JveF8gPSB1dGlscy5jcmVhdGVDaGVja2JveCggcmVzb3VyY2VzR3JvdXAsIFdTVUlQbHVnaW5NZXNzYWdlcy5CVVRUT05fQ0hFQ0tPVVRfRklMRVMsCi0gICAgCQlXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9QUFJNX0NIRUNLQk9YX0NIRUNLX09VVCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZPUE9QX1BXUFJfQ0hFQ0tCT1hfQ0hFQ0tPVVRfRklMRVMgKTsKLSAgICAKLSAgICByZXR1cm4gdGhpczsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFJlc291cmNlQ29udGV4dCggUmVzb3VyY2VDb250ZXh0IGNvbnRleHQgKQotICB7IAotICAgIG92ZXJ3cml0ZUZpbGVzQ2hlY2tib3hfLnNldFNlbGVjdGlvbiggY29udGV4dC5pc092ZXJ3cml0ZUZpbGVzRW5hYmxlZCgpICk7Ci0gICAgY3JlYXRlRm9sZGVyc0NoZWNrYm94Xy5zZXRTZWxlY3Rpb24oIGNvbnRleHQuaXNDcmVhdGVGb2xkZXJzRW5hYmxlZCgpICk7Ci0gICAgY2hlY2tvdXRGaWxlc0NoZWNrYm94Xy5zZXRTZWxlY3Rpb24oIGNvbnRleHQuaXNDaGVja291dEZpbGVzRW5hYmxlZCgpICk7IAotICAgIAotICAgIGNvbnRleHRfID0gY29udGV4dDsKLSAgfQotICAKLSAgcHVibGljIFJlc291cmNlQ29udGV4dCBnZXRSZXNvdXJjZUNvbnRleHQoKSAKLSAgeyAgICAKLSAgICBjb250ZXh0Xy5zZXRPdmVyd3JpdGVGaWxlc0VuYWJsZWQoIG92ZXJ3cml0ZUZpbGVzQ2hlY2tib3hfLmdldFNlbGVjdGlvbigpICk7Ci0gICAgY29udGV4dF8uc2V0Q3JlYXRlRm9sZGVyc0VuYWJsZWQoIGNyZWF0ZUZvbGRlcnNDaGVja2JveF8uZ2V0U2VsZWN0aW9uKCkgKTsKLSAgICBjb250ZXh0Xy5zZXRDaGVja291dEZpbGVzRW5hYmxlZCggY2hlY2tvdXRGaWxlc0NoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKSApOwotICAgIAotICAgIHJldHVybiBjb250ZXh0XzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1Byb2plY3RTZWxlY3Rpb25EaWFsb2cuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9Qcm9qZWN0U2VsZWN0aW9uRGlhbG9nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNDNjYTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1Byb2plY3RTZWxlY3Rpb25EaWFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MTMgICAxMzU1ODEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDgwMiAgIDE0ODczMSBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqIDIwMDgwNjAzICAgMjM0MjUxIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIFVwZGF0ZWQgdGhlIHNpemUgb2YgcHJvamVjdCBzZWxlY3Rpb24gZGlhbG9nCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5ydW50aW1lLlByb2plY3RTZWxlY3Rpb25XaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuVHlwZVJ1bnRpbWVTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuUG9pbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuUGFnZUluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuU2ltcGxlRGlhbG9nOwotCi1wdWJsaWMgY2xhc3MgUHJvamVjdFNlbGVjdGlvbkRpYWxvZyBleHRlbmRzIFNpbXBsZURpYWxvZyB7Ci0KLQlTdHJpbmcgdGl0bGVUZXh0Xz0iIjsKLQlTdHJpbmcgcHJvamVjdE5hbWVfPSIiOwotCVN0cmluZyBlYXJQcm9qZWN0TmFtZV89IiI7Ci0JU3RyaW5nIGNvbXBvbmVudFR5cGVfPSIiOwotCVR5cGVSdW50aW1lU2VydmVyIHRyc187Ci0JYm9vbGVhbiBuZWVkRUFSXzsKLQkKLQlwdWJsaWMgUHJvamVjdFNlbGVjdGlvbkRpYWxvZyhTaGVsbCBzaGVsbCwgUGFnZUluZm8gcGFnZUluZm8pCi0JewotCQlzdXBlcihzaGVsbCwgcGFnZUluZm8pOwotCQl0aXRsZVRleHRfID0gcGFnZUluZm8uZ2V0UGFnZU5hbWUoKTsKLQl9CQotCQotCXByb3RlY3RlZCB2b2lkIGNhbGxTZXR0ZXJzKCkgewotCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0JCVByb2plY3RTZWxlY3Rpb25XaWRnZXQgcHJvaldpZGdldCA9IChQcm9qZWN0U2VsZWN0aW9uV2lkZ2V0KWdldFdpZGdldCgpOwkJCi0JCXByb2pXaWRnZXQuc2V0RWFyUHJvamVjdE5hbWUoZWFyUHJvamVjdE5hbWVfKTsKLQkJcHJvaldpZGdldC5zZXRQcm9qZWN0TmFtZShwcm9qZWN0TmFtZV8pOwotCQlwcm9qV2lkZ2V0LnNldENvbXBvbmVudFR5cGUoY29tcG9uZW50VHlwZV8pOwotCQlwcm9qV2lkZ2V0LnNldE5lZWRFQVIobmVlZEVBUl8pOwotCQlwcm9qV2lkZ2V0LnNldFR5cGVSdW50aW1lU2VydmVyKHRyc18pOwotCQkKLQkJcHJvaldpZGdldC5yZWZyZXNoUHJvamVjdEl0ZW1zKCk7Ci0JfQotCQotCSAgcHJvdGVjdGVkIFBvaW50IGdldEluaXRpYWxTaXplKCkKLQkgIHsKLQkgICAgcmV0dXJuIHRoaXMuZ2V0U2hlbGwoKS5jb21wdXRlU2l6ZSgzMjUsIFNXVC5ERUZBVUxULCB0cnVlKTsgCi0JICB9Ci0KLQotCSAgcHJvdGVjdGVkIHZvaWQgc2V0U2hlbGxTdHlsZShpbnQgbmV3U2hlbGxTdHlsZSkKLQkgIHsKLQkgICAgc3VwZXIuc2V0U2hlbGxTdHlsZSggbmV3U2hlbGxTdHlsZSB8IFNXVC5SRVNJWkUgKTsgIAotCSAgfQotCi0JICBwcm90ZWN0ZWQgdm9pZCBjb25maWd1cmVTaGVsbChTaGVsbCBuZXdTaGVsbCkKLQkgIHsKLQkgICAgbmV3U2hlbGwuc2V0VGV4dCh0aXRsZVRleHRfKTsgICAKLQkgICAgc3VwZXIuY29uZmlndXJlU2hlbGwobmV3U2hlbGwpOwotCSAgfQkKLQkJCi0JCXB1YmxpYyB2b2lkIHNldFByb2plY3ROYW1lKFN0cmluZyBuYW1lKQotCQkgIHsKLQkJCQlwcm9qZWN0TmFtZV8gPSBuYW1lOwotCQkgIH0KLQkJCi0JCXB1YmxpYyBTdHJpbmcgZ2V0UHJvamVjdE5hbWUoKQotCQkgIHsKLQkJCQlyZXR1cm4gcHJvamVjdE5hbWVfOwotCQkgIH0KLQkJCi0JCSBwdWJsaWMgdm9pZCBzZXRFYXJQcm9qZWN0TmFtZShTdHJpbmcgbmFtZSkKLQkJICB7CQkJCi0JCQkJZWFyUHJvamVjdE5hbWVfID0gbmFtZTsKLQkJICB9IAotCQkgCi0JCSBwdWJsaWMgU3RyaW5nIGdldEVhclByb2plY3ROYW1lKCkKLQkJIHsKLQkJCSByZXR1cm4gZWFyUHJvamVjdE5hbWVfOwotCQkgfQotCQkgCi0JCSBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0Q29tcG9uZW50VHlwZSggU3RyaW5nIHR5cGUgKQotCQkgIHsKLQkJCSAgICBjb21wb25lbnRUeXBlXyA9IHR5cGU7Ci0JCSAgfQotCi0JCSBwdWJsaWMgU3RyaW5nIGdldFByb2plY3RDb21wb25lbnRUeXBlKCkKLQkJICB7Ci0JCQkgcmV0dXJuIGNvbXBvbmVudFR5cGVfOwotCQkgIH0KLQkJIAotCQkgcHVibGljIHZvaWQgc2V0TmVlZEVBUihib29sZWFuIGIpCi0JCSAgewotCQkJICAgIG5lZWRFQVJfID0gYjsJCQkgICAgCi0JCSAgfQotCQkgCi0JCSBwdWJsaWMgYm9vbGVhbiBnZXROZWVkRUFSKCkKLQkJICB7Ci0JCQkgICAgcmV0dXJuIG5lZWRFQVJfOwkJCQkKLQkJICB9Ci0JCSAKLQkJIHB1YmxpYyB2b2lkIHNldFR5cGVSdW50aW1lU2VydmVyKFR5cGVSdW50aW1lU2VydmVyIHRycykKLQkJIHsKLQkJCSAgICB0cnNfID0gdHJzOyAKLQkJIH0KLQkJIAotCQkgcHVibGljIGJvb2xlYW4gY2xvc2UoKSB7Ci0KLQkJCXByb2plY3ROYW1lXyA9ICgoUHJvamVjdFNlbGVjdGlvbldpZGdldClnZXRXaWRnZXQoKSkuZ2V0UHJvamVjdE5hbWUoKTsKLQkJCWVhclByb2plY3ROYW1lXyA9ICgoUHJvamVjdFNlbGVjdGlvbldpZGdldClnZXRXaWRnZXQoKSkuZ2V0RWFyUHJvamVjdE5hbWUoKTsgCi0JCQluZWVkRUFSXyA9ICgoUHJvamVjdFNlbGVjdGlvbldpZGdldClnZXRXaWRnZXQoKSkuZ2V0TmVlZEVBUigpOwotCQkJY29tcG9uZW50VHlwZV8gPSAoKFByb2plY3RTZWxlY3Rpb25XaWRnZXQpZ2V0V2lkZ2V0KCkpLmdldENvbXBvbmVudFR5cGUoKTsKLQkJCXJldHVybiBzdXBlci5jbG9zZSgpOwotCQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvUHVibGlzaFRvUHJpdmF0ZVVERElDb21tYW5kRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9QdWJsaXNoVG9Qcml2YXRlVURESUNvbW1hbmRGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODExMzhlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9QdWJsaXNoVG9Qcml2YXRlVURESUNvbW1hbmRGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQWJzdHJhY3RDb21tYW5kRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldFJlZ2lzdHJ5OwotCi0KLXB1YmxpYyBjbGFzcyBQdWJsaXNoVG9Qcml2YXRlVURESUNvbW1hbmRGcmFnbWVudCBleHRlbmRzIEFic3RyYWN0Q29tbWFuZEZyYWdtZW50Ci17Ci0gIHByaXZhdGUgRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhTWFwcGluZ1JlZ2lzdHJ5OwotICBwcml2YXRlIENhbkZpbmlzaFJlZ2lzdHJ5IGNhbkZpbmlzaFJlZ2lzdHJ5OwotICBwcml2YXRlIFdpZGdldFJlZ2lzdHJ5IHdpZGdldFJlZ2lzdHJ5OwotICBwcml2YXRlIGJvb2xlYW4gcHVibGlzaFRvUHJpdmF0ZVVEREk7Ci0gIHByaXZhdGUgQ29tbWFuZFdpZGdldEJpbmRpbmcgcHJpdmF0ZVVERElCaW5kaW5nOwotICAKLSAgcHVibGljIFB1Ymxpc2hUb1ByaXZhdGVVRERJQ29tbWFuZEZyYWdtZW50KCkKLSAgewotICAgIHN1cGVyKG51bGwsICIiKTsKLSAgICBwcml2YXRlVURESUJpbmRpbmcgPSBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5LmdldEluc3RhbmNlKCkuZ2V0UHJpdmF0ZVVERElSZWdpc3RyeVR5cGUoKS5nZXRCaW5kaW5nKCk7Ci0gIH0KLQotICAvKiogCi0gICAqIEdldHMgdGhlIGZpcnN0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LgotICAgKgotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LiAgUmV0dXJucwotICAgKiBudWxsIHdoZW4gdGhlcmUgaXMgbm8gZmlyc3QgY2hpbGQuCi0gICoqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGdldEZpcnN0U3ViRnJhZ21lbnQoKQotICB7Ci0gICAgaWYgKHByaXZhdGVVRERJQmluZGluZyAhPSBudWxsICYmIHB1Ymxpc2hUb1ByaXZhdGVVRERJICYmICFQcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5LmdldEluc3RhbmNlKCkuZ2V0UHJpdmF0ZVVERElSZWdpc3RyeVR5cGUoKS5pc1ByaXZhdGVVRERJUmVnaXN0cnlJbnN0YWxsZWQoKSkKLSAgICB7Ci0gICAgICBwcml2YXRlVURESUJpbmRpbmcucmVnaXN0ZXJDYW5GaW5pc2goY2FuRmluaXNoUmVnaXN0cnkpOwotICAgICAgcHJpdmF0ZVVERElCaW5kaW5nLnJlZ2lzdGVyRGF0YU1hcHBpbmdzKGRhdGFNYXBwaW5nUmVnaXN0cnkpOwotICAgICAgcHJpdmF0ZVVERElCaW5kaW5nLnJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mod2lkZ2V0UmVnaXN0cnkpOwotICAgICAgcmV0dXJuIHByaXZhdGVVRERJQmluZGluZy5jcmVhdGUoKS5jcmVhdGUoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICAqIEdldHMgdGhlIG5leHQgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBuZXh0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LiAgUmV0dXJucyBudWxsCi0gICAgKiB3aGVuIHRoZXJlIGlzIG5vIG5leHQgY2hpbGQuCi0gICoqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGdldE5leHRTdWJGcmFnbWVudChDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQpCi0gIHsKLSAgCXJldHVybiBudWxsOwotICB9Ci0gIAotICAvKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdG8gcmV0cmlldmUgdGhlIGRhdGEgbWFwcGluZ3MgZm9yIHRoaXMgY29tbWFuZCBmcmFnbWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgcmVnaXN0cnkpCi0gIHsKLSAgCWRhdGFNYXBwaW5nUmVnaXN0cnkgPSByZWdpc3RyeTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyQ2FuRmluaXNoKENhbkZpbmlzaFJlZ2lzdHJ5IGNhbkZpbmlzaFJlZ2lzdHJ5KQotICB7Ci0gICAgdGhpcy5jYW5GaW5pc2hSZWdpc3RyeSA9IGNhbkZpbmlzaFJlZ2lzdHJ5OwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyhXaWRnZXRSZWdpc3RyeSB3aWRnZXRSZWdpc3RyeSkKLSAgewotICAgIHRoaXMud2lkZ2V0UmVnaXN0cnkgPSB3aWRnZXRSZWdpc3RyeTsKLSAgfQotCi0gIC8qKgotICAgICogQWxsIHdpemFyZCBmcmFnbWVudHMgbmVlZCB0byBiZSBjbG9uZWFibGUuCi0gICoqLwotICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKLSAgewotICAgIFB1Ymxpc2hUb1ByaXZhdGVVRERJQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ID0gbmV3IFB1Ymxpc2hUb1ByaXZhdGVVRERJQ29tbWFuZEZyYWdtZW50KCk7Ci0gIAlmcmFnbWVudC5yZWdpc3RlckRhdGFNYXBwaW5ncyhkYXRhTWFwcGluZ1JlZ2lzdHJ5KTsKLSAgCWZyYWdtZW50LnJlZ2lzdGVyQ2FuRmluaXNoKGNhbkZpbmlzaFJlZ2lzdHJ5KTsKLSAgCWZyYWdtZW50LnJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mod2lkZ2V0UmVnaXN0cnkpOwotICAJZnJhZ21lbnQuc2V0UHVibGlzaFRvUHJpdmF0ZVVEREkocHVibGlzaFRvUHJpdmF0ZVVEREkpOwotICAJcmV0dXJuIGZyYWdtZW50OwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0UHVibGlzaFRvUHJpdmF0ZVVEREkoYm9vbGVhbiBwdWJsaXNoKQotICB7Ci0gICAgcHVibGlzaFRvUHJpdmF0ZVVEREkgPSBwdWJsaXNoOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvUHVibGlzaFdTV2lkZ2V0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvUHVibGlzaFdTV2lkZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNzRkNDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1B1Ymxpc2hXU1dpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDQzMCAgIDIxNDYyNCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgUmVtb3ZlIGZhdm91cml0ZSBVRERJIHJlZ2lzdHJpZXMgZnJvbSBXZWIgU2VydmljZSBQdWJsaXNoIHBhZ2UKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS51ZGRpLlByaXZhdGVVRERJUmVnaXN0cnlUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmhlbHAuSVdvcmtiZW5jaEhlbHBTeXN0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldERhdGFFdmVudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLkxhdW5jaE9wdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuTGF1bmNoT3B0aW9uczsKLQotCi1wdWJsaWMgY2xhc3MgUHVibGlzaFdTV2lkZ2V0IGV4dGVuZHMgU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yCi17Ci0gIC8qIENPTlRFWFRfSUQgUFdQQjAwMDEgZm9yIHRoZSBVRERJIFB1Ymxpc2ggUGFnZSAqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXUEJfUEFHRSA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLklEICsgIi5QV1BCMDAwMSI7Ci0gIC8qIENPTlRFWFRfSUQgUFdQQjAwMDIgZm9yIHRoZSBVRERJIExhdW5jaCBjaGVjayBib3ggb2YgdGhlIFVEREkgUHVibGlzaCBQYWdlICovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdQQl9DSEVDS0JPWF9XU19MQVVOQ0ggPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5JRCArICIuUFdQQjAwMDIiOwotICBwcml2YXRlIEJ1dHRvbiBsYXVuY2hVRERJQ2hlY2tib3hfOwotICBwcml2YXRlIEJ1dHRvbiBsYXVuY2hQcml2YXRlVURESUNoZWNrYm94XzsKLSAgcHJpdmF0ZSBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lcjsKLSAgcHJpdmF0ZSBCb29sZWFuIHB1Ymxpc2g7Ci0KLSAgcHVibGljIFB1Ymxpc2hXU1dpZGdldChib29sZWFuIHB1Ymxpc2gpCi0gIHsKLQkgIHRoaXMucHVibGlzaCA9IG5ldyBCb29sZWFuKHB1Ymxpc2gpOwotICB9Ci0KLSAgcHVibGljIFdpZGdldERhdGFFdmVudHMgYWRkQ29udHJvbHMoQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIpCi0gIHsKLSAgICB0aGlzLnN0YXR1c0xpc3RlbmVyID0gc3RhdHVzTGlzdGVuZXI7Ci0gICAgTGlzdGVuZXIgc2VsTGlzdGVuZXIgPSBuZXcgTGlzdGVuZXIoKQotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50IGV2ZW50KQotICAgICAgewotICAgICAgICBoYW5kbGVTZWxlY3Rpb25FdmVudChldmVudCk7Ci0gICAgICB9Ci0gICAgfTsKLSAgICBwYXJlbnQuc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdQQl9QQUdFKTsKLSAgICBJV29ya2JlbmNoSGVscFN5c3RlbSBoZWxwU3lzdGVtID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCk7Ci0gICAgaGVscFN5c3RlbS5zZXRIZWxwKHBhcmVudCwgSU5GT1BPUF9QV1BCX1BBR0UpOwotICAgIGxhdW5jaFByaXZhdGVVRERJQ2hlY2tib3hfID0gbmV3IEJ1dHRvbihwYXJlbnQsIFNXVC5DSEVDSyk7Ci0gICAgaWYgKHB1Ymxpc2guYm9vbGVhblZhbHVlKCkpCi0gICAgICBsYXVuY2hQcml2YXRlVURESUNoZWNrYm94Xy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5CVVRUT05fV1NfUFVCTElTSF9QUklWQVRFX1VEREkpOwotICAgIGVsc2UKLSAgICAgIGxhdW5jaFByaXZhdGVVRERJQ2hlY2tib3hfLnNldFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkJVVFRPTl9XU19GSU5EX1BSSVZBVEVfVURESSk7Ci0gICAgbGF1bmNoUHJpdmF0ZVVERElDaGVja2JveF8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdQQl9DSEVDS0JPWF9XU19MQVVOQ0gpOwotICAgIGxhdW5jaFByaXZhdGVVRERJQ2hlY2tib3hfLmFkZExpc3RlbmVyKFNXVC5TZWxlY3Rpb24sIHNlbExpc3RlbmVyKTsKLSAgICBoZWxwU3lzdGVtLnNldEhlbHAobGF1bmNoUHJpdmF0ZVVERElDaGVja2JveF8sIElORk9QT1BfUFdQQl9DSEVDS0JPWF9XU19MQVVOQ0gpOwotICAgIGxhdW5jaFVERElDaGVja2JveF8gPSBuZXcgQnV0dG9uKHBhcmVudCwgU1dULkNIRUNLKTsKLSAgICBpZiAocHVibGlzaC5ib29sZWFuVmFsdWUoKSkKLSAgICAgIGxhdW5jaFVERElDaGVja2JveF8uc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX1dTX1BVQkxJU0gpOwotICAgIGVsc2UKLSAgICAgIGxhdW5jaFVERElDaGVja2JveF8uc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX1dTX0ZJTkQpOwotICAgIGxhdW5jaFVERElDaGVja2JveF8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdQQl9DSEVDS0JPWF9XU19MQVVOQ0gpOwotICAgIGxhdW5jaFVERElDaGVja2JveF8uYWRkTGlzdGVuZXIoU1dULlNlbGVjdGlvbiwgc2VsTGlzdGVuZXIpOwotICAgIGhlbHBTeXN0ZW0uc2V0SGVscChsYXVuY2hVRERJQ2hlY2tib3hfLCBJTkZPUE9QX1BXUEJfQ0hFQ0tCT1hfV1NfTEFVTkNIKTsKLSAgICBpbml0UHJpdmF0ZVVEREkoKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBpbml0UHJpdmF0ZVVEREkoKQotICB7Ci0gICAgaWYgKCFwdWJsaXNoLmJvb2xlYW5WYWx1ZSgpICYmICFQcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5LmdldEluc3RhbmNlKCkuZ2V0UHJpdmF0ZVVERElSZWdpc3RyeVR5cGUoKS5pc1ByaXZhdGVVRERJUmVnaXN0cnlJbnN0YWxsZWQoKSkKLSAgICAgIGxhdW5jaFByaXZhdGVVRERJQ2hlY2tib3hfLnNldEVuYWJsZWQoZmFsc2UpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNlbGVjdGlvbkV2ZW50KEV2ZW50IGV2ZW50KQotICB7Ci0gICAgc3RhdHVzTGlzdGVuZXIuaGFuZGxlRXZlbnQoZXZlbnQpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0UHVibGlzaFRvUHVibGljVURESShib29sZWFuIHB1Ymxpc2gpCi0gIHsKLSAgICBsYXVuY2hVRERJQ2hlY2tib3hfLnNldFNlbGVjdGlvbihwdWJsaXNoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFB1Ymxpc2hUb1B1YmxpY1VEREkoQm9vbGVhbiBwdWJsaXNoKQotICB7Ci0gICAgc2V0UHVibGlzaFRvUHVibGljVURESShwdWJsaXNoLmJvb2xlYW5WYWx1ZSgpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFB1Ymxpc2hUb1ByaXZhdGVVRERJKGJvb2xlYW4gcHVibGlzaCkKLSAgewotICAgIGxhdW5jaFByaXZhdGVVRERJQ2hlY2tib3hfLnNldFNlbGVjdGlvbihwdWJsaXNoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFB1Ymxpc2hUb1ByaXZhdGVVRERJKEJvb2xlYW4gcHVibGlzaCkKLSAgewotICAgIHNldFB1Ymxpc2hUb1ByaXZhdGVVRERJKHB1Ymxpc2guYm9vbGVhblZhbHVlKCkpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZ2V0UHVibGlzaFRvUHVibGljVURESSgpCi0gIHsKLSAgICByZXR1cm4gbGF1bmNoVURESUNoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGdldFB1Ymxpc2hUb1ByaXZhdGVVRERJKCkKLSAgewotICAgIHJldHVybiBsYXVuY2hQcml2YXRlVURESUNoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGdldEZvcmNlTGF1bmNoT3V0c2lkZUlERSgpCi0gIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgTGF1bmNoT3B0aW9uW10gZ2V0TGF1bmNoT3B0aW9ucygpCi0gIHsKLSAgICBWZWN0b3IgbGF1bmNoT3B0aW9uVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIGlmIChsYXVuY2hVRERJQ2hlY2tib3hfLmdldFNlbGVjdGlvbigpKQotICAgIHsKLSAgICAgIGxhdW5jaE9wdGlvblZlY3Rvci5hZGQobmV3IExhdW5jaE9wdGlvbihMYXVuY2hPcHRpb25zLklOUVVJUllfVVJMLCAiIikpOwotICAgICAgbGF1bmNoT3B0aW9uVmVjdG9yLmFkZChuZXcgTGF1bmNoT3B0aW9uKExhdW5jaE9wdGlvbnMuUFVCTElTSF9VUkwsICIiKSk7Ci0gICAgfQotICAgIGlmIChsYXVuY2hQcml2YXRlVURESUNoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKSkKLSAgICB7Ci0gICAgICBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5IHByaXZhdGVSZWcgPSBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0gICAgICBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZSBwcml2YXRlVHlwZSA9IHByaXZhdGVSZWcuZ2V0UHJpdmF0ZVVERElSZWdpc3RyeVR5cGUoKTsKLSAgICAgIFN0cmluZ1tdIHByaXZhdGVJbnF1aXJ5VVJMID0gcHJpdmF0ZVR5cGUuZ2V0UHJpdmF0ZVVERElSZWdpc3RyeUlucXVpcnlBUEkoKTsKLSAgICAgIFN0cmluZ1tdIHByaXZhdGVQdWJsaXNoVVJMID0gcHJpdmF0ZVR5cGUuZ2V0UHJpdmF0ZVVERElSZWdpc3RyeVB1Ymxpc2hBUEkoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJpdmF0ZUlucXVpcnlVUkwubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIGxhdW5jaE9wdGlvblZlY3Rvci5hZGQobmV3IExhdW5jaE9wdGlvbihMYXVuY2hPcHRpb25zLklOUVVJUllfVVJMLCBwcml2YXRlSW5xdWlyeVVSTFtpXSkpOwotICAgICAgICBsYXVuY2hPcHRpb25WZWN0b3IuYWRkKG5ldyBMYXVuY2hPcHRpb24oTGF1bmNoT3B0aW9ucy5QVUJMSVNIX1VSTCwgcHJpdmF0ZVB1Ymxpc2hVUkxbaV0pKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChMYXVuY2hPcHRpb25bXSkgbGF1bmNoT3B0aW9uVmVjdG9yLnRvQXJyYXkobmV3IExhdW5jaE9wdGlvblswXSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9TZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1NlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZWFiMmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1NlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDA0ICAgMTM0OTEzIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSAgIAotICogMjAwNjA1MTcgICAxNDIwMjcgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MDUxOCAgIDE0MjU1NCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLldvcmtiZW5jaFJlc291cmNlSGVscGVyQmFzZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLndlYnNlcnZpY2UuV2ViU2VydmljZU5hdmlnYXRvckdyb3VwVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC53ZWJzZXJ2aWNlLmhlbHBlci5XZWJTZXJ2aWNlc01hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLkhhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLlBvcnRDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLldlYlNlcnZpY2VEZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuV2ViU2VydmljZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLldzZGRSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuSGFuZGxlclRhYmxlSXRlbTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlNlcnZpY2VJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbDsKLQotLyoqCi0gKiBTZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZAotICogCi0gKiBJbml0aWFsaXplIGFuZCBsb2FkIHRoZSBoYW5kbGVycyBkYXRhCi0gKi8KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0SGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ21kIHsKLQotICBwcml2YXRlIFdzZGRSZXNvdXJjZVtdIHdzZGRSZXNvdXJjZV8gPSBudWxsOwotICBwcml2YXRlIElQcm9qZWN0IHByb2plY3RfOwotICBwcml2YXRlIFN0cmluZyBkZXNjcmlwdGlvbk5hbWVfID0gbnVsbDsKLSAgcHJpdmF0ZSBTdHJpbmcgZXJyb3JTdGF0dXNNc2dfID0gbnVsbDsKLSAgcHJpdmF0ZSBib29sZWFuIGlzTXVsdGlwbGVTZWxlY3Rpb25fOwotICBwcml2YXRlIEhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcltdIGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl87Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsgICAgCi0gICAgSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIAotICAgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGdldEluaXRpYWxTZWxlY3Rpb24oKTsKLSAgICBpZiAoc2VsZWN0aW9uID09IG51bGwpIHsKLSAgICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1RBU0tfRVhDRVBURUQgKTsKLSAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotICAgIGVsc2UgaWYgKHNlbGVjdGlvbi5zaXplKCk+MSl7Ci0gICAgCXN0YXR1cyA9IHByb2Nlc3NNdWx0aXBsZUhhbmRsZXJzKGVudik7Ci0gICAgCXJldHVybiBzdGF0dXM7Ci0gICAgfQotCi0gICAgc3RhdHVzID0gcHJvY2Vzc0hhbmRsZXJzKGVudik7Ci0gICAgcmV0dXJuIHN0YXR1czsKLQotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgcHJvY2Vzc0hhbmRsZXJzKElFbnZpcm9ubWVudCBlbnYpIHsKLSAgICB0cnkgewotICAgICAgV2ViU2VydmljZXNNYW5hZ2VyIHdlYlNlcnZpY2VzTWFuYWdlciA9IG5ldyBXZWJTZXJ2aWNlc01hbmFnZXIoKTsKLSAgICAgIExpc3QgYWxsV1NETFNlcnZpY2VzID0gd2ViU2VydmljZXNNYW5hZ2VyLmdldEFsbFdTRExTZXJ2aWNlcygpOwotICAgICAgaW50IHNlcnZpY2VzU2l6ZSA9IGFsbFdTRExTZXJ2aWNlcy5zaXplKCk7Ci0KLSAgICAgIHdzZGRSZXNvdXJjZV89IG5ldyBXc2RkUmVzb3VyY2Vbc2VydmljZXNTaXplXTsKLSAgICAgIHdzZGRSZXNvdXJjZV9bMF0gPSBnZXRXc2RkUmVzb3VyY2VGcm9tU2VsZWN0aW9uKCk7Ci0gICAgICBpZiAod3NkZFJlc291cmNlX1swXSA9PSBudWxsKSB7Ci0gICAgICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfV1NERF9OT1RfRk9VTkQpOwotICAgICAgfQotICAgICAKLSAgICAgIC8vIGNoZWNrIGZvciBhbm90aGVyIHdzZGRSZXNvdXJjZSBvZiBhbm90aGVyIEoyRUUgbGV2ZWwKLSAgICAgIGludCB4ID0gMDsKLSAgICAgIHdoaWxlICh4PHNlcnZpY2VzU2l6ZSkgewotICAgICAgICBTZXJ2aWNlIHNlcnZpY2UgPSAoU2VydmljZSApYWxsV1NETFNlcnZpY2VzLmdldCh4KTsKLSAgICAgICAgV3NkZFJlc291cmNlIHdzZGRSZXMgPSB3ZWJTZXJ2aWNlc01hbmFnZXIuZ2V0V3NkZFJlc291cmNlKHNlcnZpY2UpOwotICAgICAgICBib29sZWFuIGlzVW5pcXVlV3NkZCA9IHRydWU7Ci0gICAgICAgIGZvciAoaW50IHc9MDt3PHdzZGRSZXNvdXJjZV8ubGVuZ3RoO3crKyl7Ci0gICAgICAgIAlpZiAod3NkZFJlcy5lcXVhbHMod3NkZFJlc291cmNlX1t3XSkpewotICAgICAgICAJCWlzVW5pcXVlV3NkZCA9IGZhbHNlOwotICAgICAgICAJCWJyZWFrOwotICAgICAgICAJfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNVbmlxdWVXc2RkKSB7Ci0gICAgICAgICAgd3NkZFJlc291cmNlX1t4XSA9IHdzZGRSZXM7Ci0gICAgICAgIH0KLSAgICAgICAgeCsrOwotICAgICAgfQotCi0gICAgICAvLyBkZXRlcm1pbmUgdG90YWwgIyBmb3IgZGVzY3JpcHRpb25zCi0gICAgICBoYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfID0gbmV3IEhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcltnZXROdW1iZXJvZlNlcnZpY2VzKHdzZGRSZXNvdXJjZV8pXTsKLSAgICAgIAotICAgICAgaW50IGRlc2NDb3VudGVyID0gMDsKLSAgICAgIGZvciAoaW50IHk9MDt5PHdzZGRSZXNvdXJjZV8ubGVuZ3RoO3krKykgewotICAgICAgICBpZiAod3NkZFJlc291cmNlX1t5XSAhPW51bGwpIHsKLQkgICAgICAgIFdlYlNlcnZpY2VzIHdlYlNlcnZpY2VzID0gd3NkZFJlc291cmNlX1t5XS5nZXRXZWJTZXJ2aWNlcygpOwotCSAgICAgICAgaWYgKHdlYlNlcnZpY2VzICE9IG51bGwpIHsKLQkgICAgICAgICAgTGlzdCB3c0Rlc2NyaXB0aW9ucyA9IHdlYlNlcnZpY2VzLmdldFdlYlNlcnZpY2VEZXNjcmlwdGlvbnMoKTsKLQkgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3c0Rlc2NyaXB0aW9ucy5zaXplKCkgOyBpKyspIHsKLQkgCi0JICAgICAgICAgICAgV2ViU2VydmljZURlc2NyaXB0aW9uIHdzRGVzY3JpcHRpb24gPSAoV2ViU2VydmljZURlc2NyaXB0aW9uKSB3c0Rlc2NyaXB0aW9ucy5nZXQoaSk7Ci0JICAgICAgICAgICAgVmVjdG9yIGhhbmRsZXJzID0gbmV3IFZlY3RvcigpOyAgCi0JICAgICAgICAgICAgTGlzdCB3c1BvcnRDb21wb25lbnRzID0gd3NEZXNjcmlwdGlvbi5nZXRQb3J0Q29tcG9uZW50cygpOwotCSAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd3NQb3J0Q29tcG9uZW50cy5zaXplKCk7IGorKykgewotCSAgICAgICAgICAgICAgUG9ydENvbXBvbmVudCB3c1BvcnQgPSAoUG9ydENvbXBvbmVudCkgd3NQb3J0Q29tcG9uZW50cy5nZXQoaik7Ci0JICAgICAgICAgICAgICBTdHJpbmcgcG9ydE5hbWUgPSB3c1BvcnQuZ2V0UG9ydENvbXBvbmVudE5hbWUoKTsKLQkgICAgICAgICAgICAgIExpc3Qgd3NIYW5kbGVycyA9IHdzUG9ydC5nZXRIYW5kbGVycygpOwotCSAgICAgCi0JICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHdzSGFuZGxlcnMuc2l6ZSgpOyBrKyspIHsKLQkgIAotCSAgICAgICAgICAgICAgICBIYW5kbGVyIHdzSGFuZGxlciA9IChIYW5kbGVyKSB3c0hhbmRsZXJzLmdldChrKTsKLQkgIAotCSAgICAgICAgICAgICAgICBIYW5kbGVyVGFibGVJdGVtIGhhbmRsZXJJdGVtID0gbmV3IEhhbmRsZXJUYWJsZUl0ZW0oKTsKLQkgICAgICAgICAgICAgICAgaGFuZGxlckl0ZW0uc2V0SGFuZGxlcih3c0hhbmRsZXIpOwotCSAgICAgICAgICAgICAgICBoYW5kbGVySXRlbS5zZXRIYW5kbGVyTmFtZSh3c0hhbmRsZXIuZ2V0SGFuZGxlck5hbWUoKSk7Ci0JICAgICAgICAgICAgICAgIGhhbmRsZXJJdGVtLnNldEhhbmRsZXJDbGFzc05hbWUod3NIYW5kbGVyLmdldEhhbmRsZXJDbGFzcygpKTsKLQkgICAgICAgICAgICAgICAgaGFuZGxlckl0ZW0uc2V0UG9ydCh3c1BvcnQpOwotCSAgICAgICAgICAgICAgICBoYW5kbGVySXRlbS5zZXRQb3J0TmFtZShwb3J0TmFtZSk7Ci0JICAgICAgICAgICAgICAgIGhhbmRsZXJJdGVtLnNldFdzRGVzY1JlZih3c0Rlc2NyaXB0aW9uKTsKLQkgICAgICAgICAgICAgICAgCi0JICAgICAgICAgICAgICAgIGhhbmRsZXJzLmFkZChoYW5kbGVySXRlbSk7Ci0JICAgICAgICAgICAgICB9Ci0JICAgICAgICAgICAgfQotCSAgICAgICAgICAgIFN0cmluZyB3c0Rlc2NOYW1lID0gd3NEZXNjcmlwdGlvbi5nZXRXZWJTZXJ2aWNlRGVzY3JpcHRpb25OYW1lKCk7Ci0JICAgICAgICAgICAgaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyX1tkZXNjQ291bnRlcl0gPSBuZXcgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyKCk7Ci0JICAgICAgICAgICAgaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyX1tkZXNjQ291bnRlcl0uc2V0SGFuZGxlckxpc3QoaGFuZGxlcnMpOwotCSAgICAgICAgICAgIGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl9bZGVzY0NvdW50ZXJdLnNldERlc2NyaXB0aW9uT2JqZWN0KHdzRGVzY3JpcHRpb24pOwotCSAgICAgICAgICAgIGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl9bZGVzY0NvdW50ZXJdLnNldERlc2NyaXB0aW9uTmFtZSh3c0Rlc2NOYW1lKTsKLQkgICAgICAgICAgICBkZXNjQ291bnRlcisrOwotCSAgICAgICAgICB9Ci0JICAgICAgICB9Ci0JICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyXyA9PSBudWxsKXsKLSAgICAgICAgICAvL3JlcG9ydCBubyBXZWIgc2VydmljZSBpcyBhdmFpbGFibGUKLSAgICAgICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9XRUJfU0VSVklDRVNfTk9UX0ZPVU5EKTsgICAgICAgIAotICAgICAgfSAgICAgIAotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfVEFTS19FWENFUFRFRCwgZSk7Ci0gICAgfQotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0KLSAgLyoqCi0gICAqIEZvciBwcm9jZXNzaW5nIG11bHRpcGxlIHNlcnZpY2Ugc2VsZWN0aW9uOyBvbmx5IHByZXBhcmUgdGFibGUgb2Ygc2VydmljZSBkZXNjcmlwdGlvbiBuYW1lcwotICAgKiBkZXNjcmlwdGlvbiBvYmplY3RzIHdpbGwgYmUgcHJvY2Vzc2VkIGxhdGVyIGJ5IHRoZSBvdXRwdXQgY29tbWFuZCAKLSAgICogQHBhcmFtIGVudgotICAgKiBAcmV0dXJuCi0gICAqLwotICBwcml2YXRlIElTdGF0dXMgcHJvY2Vzc011bHRpcGxlSGFuZGxlcnMoSUVudmlyb25tZW50IGVudil7Ci0KLQkgIFNlcnZpY2VbXSBzZXJ2aWNlcyA9IGdldFNlbGVjdGVkU2VydmljZXMoKTsKLSAgICAgIGlmIChlcnJvclN0YXR1c01zZ18gIT0gbnVsbCl7Ci0gICAgCSAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKGVycm9yU3RhdHVzTXNnXyk7Ci0gICAgICB9Ci0gICAgICBpc011bHRpcGxlU2VsZWN0aW9uXyA9IHRydWU7Ci0KLSAgICAgIGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl8gPSBuZXcgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyW3NlcnZpY2VzLmxlbmd0aF07Ci0gICAgICBWZWN0b3IgaGFuZGxlcnMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlcy5sZW5ndGg7aSsrKXsKLSAgICAgICAgCi0gICAgICAgIFN0cmluZyBkZXNjTmFtZSA9IHNlcnZpY2VzW2ldLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgIFdlYlNlcnZpY2VEZXNjcmlwdGlvbiB3c0Rlc2NyaXB0aW9uID0gZ2V0U2VydmljZURlc2NyaXB0aW9uKHNlcnZpY2VzW2ldLCBkZXNjTmFtZSk7Ci0gICAgICAgIGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl9baV0gPSBuZXcgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyKCk7Ci0gICAgICAgIGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl9baV0uc2V0SGFuZGxlckxpc3QoaGFuZGxlcnMpOwotICAgICAgICBoYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfW2ldLnNldERlc2NyaXB0aW9uTmFtZShkZXNjTmFtZSk7Ci0gICAgICAgIGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl9baV0uc2V0RGVzY3JpcHRpb25PYmplY3Qod3NEZXNjcmlwdGlvbik7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgLyoqCi0gICAqIE1hdGNoZXMgdGhlIHNlcnZpY2VOYW1lIHdpdGggdGhlIFNlcnZpY2VEZXNjcmlwdGlvbk5hbWUgdG8gZ2V0IHRoZSBXZWJTZXJ2aWNlRGVzY3JpcHRpb24KLSAgICogQHBhcmFtIHNlcnZpY2UKLSAgICogQHBhcmFtIHNlcnZpY2VOYW1lCi0gICAqIEByZXR1cm4KLSAgICovCi0gIHByaXZhdGUgV2ViU2VydmljZURlc2NyaXB0aW9uIGdldFNlcnZpY2VEZXNjcmlwdGlvbihTZXJ2aWNlIHNlcnZpY2UsIFN0cmluZyBzZXJ2aWNlTmFtZSl7Ci0gICAgV2ViU2VydmljZXNNYW5hZ2VyIHdlYlNlcnZpY2VzTWFuYWdlciA9IG5ldyBXZWJTZXJ2aWNlc01hbmFnZXIoKTsKLSAgICBXc2RkUmVzb3VyY2Ugd3NkZFJlc291cmNlID0gd2ViU2VydmljZXNNYW5hZ2VyLmdldFdzZGRSZXNvdXJjZShzZXJ2aWNlKTsKLSAgICBpZiAod3NkZFJlc291cmNlIT1udWxsKSB7Ci0gICAgICBXZWJTZXJ2aWNlcyBzZXJ2aWNlcyA9IHdzZGRSZXNvdXJjZS5nZXRXZWJTZXJ2aWNlcygpOwotICAgICAgaWYgKHNlcnZpY2VzIT1udWxsKSB7Ci0gICAgICAgIExpc3QgZGVzY3JpcHRpb25zICA9IHNlcnZpY2VzLmdldFdlYlNlcnZpY2VEZXNjcmlwdGlvbnMoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wO2k8ZGVzY3JpcHRpb25zLnNpemUoKTtpKyspewotICAgICAgICAgIFdlYlNlcnZpY2VEZXNjcmlwdGlvbiB3c2QgPSAoV2ViU2VydmljZURlc2NyaXB0aW9uKWRlc2NyaXB0aW9ucy5nZXQoaSk7Ci0gICAgICAgICAgaWYgKHdzZCE9bnVsbCAmJiB3c2QuZ2V0V2ViU2VydmljZURlc2NyaXB0aW9uTmFtZSgpLmVxdWFscyhzZXJ2aWNlTmFtZSkpewotICAgICAgICAgICAgcmV0dXJuIHdzZDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldElzTXVsdGlwbGVTZWxlY3Rpb24oKXsKLQkgIHJldHVybiB0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb25fOwotICB9Ci0gIAotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBpc0dlblNrZWxldG9uRW5hYmxlZF8uCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRHZW5Ta2VsZXRvbkVuYWJsZWQoKSB7Ci0gICAgaWYgKGlzTXVsdGlwbGVTZWxlY3Rpb25fKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc291cmNlT3V0cHV0TG9jYXRpb25fLgotICAgKi8KLSAgcHVibGljIElQYXRoW10gZ2V0U291cmNlT3V0cHV0TG9jYXRpb24oKSB7Ci0gICAgSVBhdGhbXSBsb2NhdGlvbnMgPSBudWxsOwotICAgIElQcm9qZWN0IHByb2plY3QgPSBnZXRQcm9qZWN0KCk7Ci0KLSAgICBpZiAocHJvamVjdCAhPSBudWxsKSB7Ci0gICAgICBsb2NhdGlvbnMgPSBSZXNvdXJjZVV0aWxzLmdldEFsbEphdmFTb3VyY2VMb2NhdGlvbnMocHJvamVjdCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcHJvamVjdCA9IHByb2plY3RfOwotICAgICAgaWYgKHByb2plY3QgIT0gbnVsbCkgewotICAgICAgICBsb2NhdGlvbnMgPSBSZXNvdXJjZVV0aWxzLmdldEFsbEphdmFTb3VyY2VMb2NhdGlvbnMocHJvamVjdCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsb2NhdGlvbnM7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyB0aGUgV3NkZFJlc291cmNlCi0gICAqIEByZXR1cm4KLSAgICovCi0gIHB1YmxpYyBXc2RkUmVzb3VyY2VbXSBnZXRXc2RkUmVzb3VyY2UoKSB7Ci0gICAgcmV0dXJuIHdzZGRSZXNvdXJjZV87Ci0gIH0KLQotICBwcml2YXRlIFdzZGRSZXNvdXJjZSBnZXRXc2RkUmVzb3VyY2VGcm9tU2VsZWN0aW9uKCkgewotICAgIFdlYlNlcnZpY2VzTWFuYWdlciB3ZWJTZXJ2aWNlc01hbmFnZXIgPSBuZXcgV2ViU2VydmljZXNNYW5hZ2VyKCk7Ci0KLSAgICBJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0U2VsID0gZ2V0SW5pdGlhbFNlbGVjdGlvbigpOwotICAgIGlmIChpbml0U2VsICE9IG51bGwgJiYgaW5pdFNlbC5zaXplKCkgPT0gMSkgewotICAgICAgT2JqZWN0IG9iaiA9IGluaXRTZWwuZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAob2JqIGluc3RhbmNlb2YgU2VydmljZUltcGwpIHsKLSAgICAgICAgLy8gU2VydmljZSBvYmplY3QKLSAgICAgICAgU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2UpIG9iajsKLSAgICAgICAgZGVzY3JpcHRpb25OYW1lXyA9IHNlcnZpY2UuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKTsKLSAgICAgICAgcHJvamVjdF8gPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3Qoc2VydmljZSk7Ci0gICAgICAgIHJldHVybiB3ZWJTZXJ2aWNlc01hbmFnZXIuZ2V0V3NkZFJlc291cmNlKHNlcnZpY2UpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgV1NETFJlc291cmNlSW1wbCkgewotICAgICAgICAvLyBXU0RMIHJlc291cmNlCi0gICAgICAgIFdTRExSZXNvdXJjZUltcGwgcmVzID0gKFdTRExSZXNvdXJjZUltcGwpIG9iajsKLSAgICAgICAgcHJvamVjdF8gPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QocmVzKTsKLSAgICAgICAgTGlzdCB3c2RsUmVzb3VyY2VzID0gd2ViU2VydmljZXNNYW5hZ2VyLmdldFdTRExTZXJ2aWNlcyhyZXMpOwotICAgICAgICByZXR1cm4gd2ViU2VydmljZXNNYW5hZ2VyLmdldFdzZGRSZXNvdXJjZSgoU2VydmljZSkgd3NkbFJlc291cmNlcy5nZXQoMCkpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgV2ViU2VydmljZU5hdmlnYXRvckdyb3VwVHlwZSkgewotICAgICAgICBXZWJTZXJ2aWNlTmF2aWdhdG9yR3JvdXBUeXBlIHdzbmd0ID0gKFdlYlNlcnZpY2VOYXZpZ2F0b3JHcm91cFR5cGUpIG9iajsKLSAgICAgICAgU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2Upd3NuZ3QuZ2V0V3NkbFNlcnZpY2UoKTsKLSAgICAgICAgZGVzY3JpcHRpb25OYW1lXyA9IHNlcnZpY2UuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKTsgICAgICAgIAotICAgICAgICBwcm9qZWN0XyA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChzZXJ2aWNlKTsKLSAgICAgICAgcmV0dXJuIHdlYlNlcnZpY2VzTWFuYWdlci5nZXRXc2RkUmVzb3VyY2Uoc2VydmljZSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBJRmlsZSl7Ci0gICAgCSAgLy8gd2Vic2VydmljZXMueG1sIGZpbGUKLSAgICAJICBSZXNvdXJjZSByZXMgPSBXb3JrYmVuY2hSZXNvdXJjZUhlbHBlckJhc2UuZ2V0UmVzb3VyY2UoKElGaWxlKW9iaiwgdHJ1ZSk7Ci0gICAgCSAgV3NkZFJlc291cmNlIHdzZGRSZXMgPSAoV3NkZFJlc291cmNlKXJlczsKLSAgICAgICAgICBXZWJTZXJ2aWNlcyB3ZWJTZXJ2aWNlcyA9IHdzZGRSZXMuZ2V0V2ViU2VydmljZXMoKTsKLSAgICAgICAgICBpZiAod2ViU2VydmljZXMgIT0gbnVsbCkgewotICAgICAgICAgICAgTGlzdCB3c0Rlc2NyaXB0aW9ucyA9IHdlYlNlcnZpY2VzLmdldFdlYlNlcnZpY2VEZXNjcmlwdGlvbnMoKTsKLSAgICAgICAgICAgIGlmICh3c0Rlc2NyaXB0aW9ucyE9bnVsbCkgewotICAgICAgICAgICAgICBXZWJTZXJ2aWNlRGVzY3JpcHRpb24gd3NkID0gKFdlYlNlcnZpY2VEZXNjcmlwdGlvbil3c0Rlc2NyaXB0aW9ucy5nZXQoMCk7Ci0gICAgICAgICAgICAgIGRlc2NyaXB0aW9uTmFtZV8gPSB3c2QuZ2V0V2ViU2VydmljZURlc2NyaXB0aW9uTmFtZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAJICBwcm9qZWN0XyA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChyZXMpOwotICAgIAkgIHJldHVybiB3c2RkUmVzOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbnVsbDsKLQotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRvdGFsIG51bWJlciBvZiBTZXJ2aWNlRGVzY3JpcHRpb25zIGdpdmVuIDE0IGFuZCAxMyBzZXJ2aWNlcwotICAgKiBAcGFyYW0gd3NkZFJlcwotICAgKiBAcmV0dXJuCi0gICAqLwotICBwcml2YXRlIGludCBnZXROdW1iZXJvZlNlcnZpY2VzKFdzZGRSZXNvdXJjZVtdIHdzZGRSZXMpewotICAgIGludCBudW09IDA7Ci0gICAgZm9yIChpbnQgaT0wO2k8d3NkZFJlcy5sZW5ndGg7aSsrKXsKLSAgICAJaWYgKHdzZGRSZXNbaV0hPW51bGwpIHsKLSAgICAJCVdlYlNlcnZpY2VzIHdzID0gd3NkZFJlc1tpXS5nZXRXZWJTZXJ2aWNlcygpOwotICAgIAkJaWYgKHdzIT1udWxsKXsKLSAgICAJCQludW0gKz0gd3MuZ2V0V2ViU2VydmljZURlc2NyaXB0aW9ucygpLnNpemUoKTsKLSAgICAJCX0KLSAgICAJfQotICAgIH0KLSAgICByZXR1cm4gbnVtOwotICAgIAotICB9Ci0KLSAgLyoqCi0gICAqIEZvciBtdWx0aXBsZSBzZWxlY3Rpb24gb2YgU2VydmljZXMKLSAgICogQHJldHVybgotICAgKi8KLSAgcHJpdmF0ZSBTZXJ2aWNlW10gZ2V0U2VsZWN0ZWRTZXJ2aWNlcygpewotCSAgV2ViU2VydmljZXNNYW5hZ2VyIHdzTWFuYWdlciA9IG5ldyBXZWJTZXJ2aWNlc01hbmFnZXIoKTsKLQkgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGluaXRTZWwgPSBnZXRJbml0aWFsU2VsZWN0aW9uKCk7Ci0gIAkgIFNlcnZpY2VbXSBzZXJ2aWNlcyA9IG5ldyBTZXJ2aWNlW2luaXRTZWwuc2l6ZSgpXTsKLSAgCSAgd3NkZFJlc291cmNlXyA9IG5ldyBXc2RkUmVzb3VyY2VbaW5pdFNlbC5zaXplKCldOwotICAJICBJdGVyYXRvciBpdGVyID0gaW5pdFNlbC5pdGVyYXRvcigpOwotICAJICBmb3IgKGludCBpPTA7aTxpbml0U2VsLnNpemUoKTtpKyspIHsKLSAgCQkgIE9iamVjdCBvYmogPSBpdGVyLm5leHQoKTsKLSAgCQkgIGlmIChvYmogaW5zdGFuY2VvZiBTZXJ2aWNlKXsKLSAgCQkJICBzZXJ2aWNlc1tpXSA9IChTZXJ2aWNlKW9iajsKLSAgCQkJICB3c2RkUmVzb3VyY2VfW2ldID0gd3NNYW5hZ2VyLmdldFdzZGRSZXNvdXJjZShzZXJ2aWNlc1tpXSk7Ci0gIAkJICB9Ci0gIAkJICBlbHNlewotICAJCQkgIGVycm9yU3RhdHVzTXNnXyA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfSU5WQUxJRF9NVUxUSVBMRV9TRVJWSUNFX1NFTEVDVDsKLSAgCQkJICByZXR1cm4gbnVsbDsKLSAgCQkgIH0KLSAgCSAgfQotICAJICByZXR1cm4gc2VydmljZXM7Ci0gIH0KLSAgCi0KLSAgCi0gIC8qKgotICAgKiBHZXQgRGVzY3JpcHRpb24gTmFtZSBmb3Igc2luZ2xlIFdlYiBzZXJ2aWNlcyBzZWxlY3RlZAotICAgKiBudWxsIGlmIG11bGl0cGxlIHNlcnZpY2VzIGFyZSBzZWxlY3RlZAotICAgKiBAcmV0dXJuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uTmFtZSgpewotICAgIHJldHVybiBkZXNjcmlwdGlvbk5hbWVfOwotICB9Ci0gIAotICAvKioKLSAgICogQW4gYXJyYXkgb2YgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVycwotICAgKiBAcmV0dXJuCi0gICAqLwotICBwdWJsaWMgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyW10gZ2V0SGFuZGxlckRlc2NyaXB0aW9uSG9sZGVycygpewotICAgIHJldHVybiBoYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfOwotICB9Ci0gIAotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9TZXJ2aWNlSGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvU2VydmljZUhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWY4YzYwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9TZXJ2aWNlSGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQwNCAgIDEzNDkxMyBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUgICAKLSAqIDIwMDYwNTE3ICAgMTQyMDI3IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5IYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5Qb3J0Q29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5XZWJTZXJ2aWNlRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLldzZGRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5Xc2RkUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLmludGVybmFsLmltcGwuV3NkZEZhY3RvcnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uSGFuZGxlckRlc2NyaXB0aW9uSGVscGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5IYW5kbGVyVGFibGVJdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5pbnRlcm5hbC5lbWYudXRpbGl0aWVzLkV0b29sc0NvcHlVdGlsaXR5OwotCi0vKgotICogUHJvdmlkZSBhIHdheSB0byBleHRlcm5hbGl6ZSB0aGUgZWRpdGVkIGZpZWxkcyBhbmQgY3JlYXRlIG5ldyBoYW5kbGVycwotICogIAotICovCi1wdWJsaWMgY2xhc3MgU2VydmljZUhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0KLSAgcHJpdmF0ZSBXc2RkUmVzb3VyY2VbXSB3c2RkUmVzb3VyY2VfOwotICBwcml2YXRlIGJvb2xlYW4gaXNNdWx0aXBsZVNlbGVjdGlvbl87Ci0gIHByaXZhdGUgSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyW10gaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyXzsKLQotICAvKioKLSAgICogRm9yIGVhY2ggSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyLCB0aGUgdXNlciBzZWxlY3RlZCBIYW5kbGVycyBhcmUKLSAgICogc3luYydkIHVwIHdpdGggdGhlIGludGVybmFsIG1vZGVsCi0gICAqIEZvciBtdWx0aXBsZSBzZXJ2aWNlcywgaGFuZGxlcnMgYXJlIGFkZGVkIChub3QgcmVtb3ZlZCkgdG8gZWFjaCBwb3J0LgotICAgKiAKLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIHRyeSB7Ci0gICAgICBpZiAoaXNNdWx0aXBsZVNlbGVjdGlvbl8pewotICAgICAgICBmb3IgKGludCBpPTA7IGk8aGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyXy5sZW5ndGg7aSsrKXsKLSAgICAgICAgICAgCi0gICAgICAgICAgaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyX1tpXS5hZGRIYW5kbGVyVG9BbGxQb3J0cygpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgLy8gYWRkIGhhbmRsZXIocykgZm9yIHNpbmdsZSBzZXJ2aWNlIHNlbGVjdGVkCi0gICAgICAgIGZvciAoaW50IGg9MDtoPGhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcl8ubGVuZ3RoO2grKyl7Ci0gIAotICAgICAgICAgIEhhc2h0YWJsZSB3c1BvcnRzVGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICAgICAgSGFzaHRhYmxlIHdzUG9ydFRvSGFuZGxlclRhYmxlID0gbmV3IEhhc2h0YWJsZSgpOwotICAKLSAgICAgICAgICBTdHJpbmcgc2VydmljZURlc2NOYW1lID0gaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyX1toXS5nZXREZXNjcmlwdGlvbk5hbWUoKTsKLSAgICAgICAgICAvLyBsb2FkIFBvcnROYW1lIC0+IFBvcnRDb21wb25lbnQgdGFibGUKLSAgICAgICAgICBIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXIgaGRoID0gSGFuZGxlckRlc2NyaXB0aW9uSGVscGVyLmdldEZvckRlc2NyaXB0aW9uTmFtZShoYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJfLCBzZXJ2aWNlRGVzY05hbWUpOwotICAgICAgICAgIGlmIChoZGghPW51bGwpIHsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgV2ViU2VydmljZURlc2NyaXB0aW9uIHdzRGVzY3JpcHRpb25fID0gIGhkaC5nZXREZXNjcmlwdGlvbk9iamVjdCgpOyAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh3c0Rlc2NyaXB0aW9uXyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgIExpc3Qgd3NQb3J0cyA9IHdzRGVzY3JpcHRpb25fLmdldFBvcnRDb21wb25lbnRzKCk7Ci0gICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgd3NQb3J0cy5zaXplKCk7IGsrKykgewotICAgICAgICAgICAgICAgIFBvcnRDb21wb25lbnQgcG9ydCA9IChQb3J0Q29tcG9uZW50KSB3c1BvcnRzLmdldChrKTsKLSAgICAgICAgICAgICAgICB3c1BvcnRzVGFibGUucHV0KHBvcnQuZ2V0UG9ydENvbXBvbmVudE5hbWUoKSwgcG9ydCk7Ci0gICAgICAgICAgICAgICAgd3NQb3J0VG9IYW5kbGVyVGFibGUucHV0KHBvcnQuZ2V0UG9ydENvbXBvbmVudE5hbWUoKSwgbmV3IEFycmF5TGlzdCgpKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBMaXN0IGhhbmRsZXJUYWJsZUl0ZW1zID0gaGRoLmdldEhhbmRsZXJMaXN0KCk7ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGhhbmRsZXJUYWJsZUl0ZW1zICE9IG51bGwpIHsKLSAgCi0gICAgICAgICAgICAgIFdzZGRGYWN0b3J5IHdzZGRGYWN0b3J5ID0gbmV3IFdzZGRGYWN0b3J5SW1wbCgpOwotICAKLSAgICAgICAgICAgICAgLy9mb3JtIHBvcnQgY29tcG9uZW50cyB0YWJsZXMgZmlyc3QKLSAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoYW5kbGVyVGFibGVJdGVtcy5zaXplKCk7IGkrKykgewotICAKLSAgICAgICAgICAgICAgICBIYW5kbGVyVGFibGVJdGVtIGh0aSA9IChIYW5kbGVyVGFibGVJdGVtKSBoYW5kbGVyVGFibGVJdGVtcy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgUG9ydENvbXBvbmVudCB3c1BvcnQgPSAoUG9ydENvbXBvbmVudCkgaHRpLmdldFBvcnQoKTsKLSAgICAgICAgICAgICAgICBpZiAod3NQb3J0ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvL2ZpbmQgaXQKLSAgICAgICAgICAgICAgICAgIGlmICh3c1BvcnRzVGFibGUuZ2V0KGh0aS5nZXRQb3J0TmFtZSgpKSAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICB3c1BvcnQgPSAoUG9ydENvbXBvbmVudCkgd3NQb3J0c1RhYmxlLmdldChodGkuZ2V0UG9ydE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIGl0OyBzaG91bGQgbm90IGdldCBpbnRvIGhlcmUKLSAgICAgICAgICAgICAgICAgICAgd3NQb3J0ID0gd3NkZEZhY3RvcnkuY3JlYXRlUG9ydENvbXBvbmVudCgpOwotICAgICAgICAgICAgICAgICAgICB3c1BvcnQuc2V0UG9ydENvbXBvbmVudE5hbWUoaHRpLmdldFBvcnROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICB3c1BvcnRzVGFibGUucHV0KHdzUG9ydC5nZXRQb3J0Q29tcG9uZW50TmFtZSgpLCB3c1BvcnQpOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB3c1BvcnRUb0hhbmRsZXJUYWJsZS5wdXQod3NQb3J0LmdldFBvcnRDb21wb25lbnROYW1lKCksIG5ldyBBcnJheUxpc3QoKSk7Ci0gICAgICAgICAgICAgIH0KLSAgCi0gICAgICAgICAgICAgIC8vIGZvcm0gSGFuZGxlciBhbmQgcG9ydHMgdGFibGUKLSAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoYW5kbGVyVGFibGVJdGVtcy5zaXplKCk7IGkrKykgewotICAgIAotICAgICAgICAgICAgICAgIEhhbmRsZXJUYWJsZUl0ZW0gaHRpID0gKEhhbmRsZXJUYWJsZUl0ZW0pIGhhbmRsZXJUYWJsZUl0ZW1zLmdldChpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcG9ydE5hbWUgPSBodGkuZ2V0UG9ydE5hbWUoKTsKLSAgICAKLSAgICAgICAgICAgICAgICBQb3J0Q29tcG9uZW50IHBvcnQgPSAoUG9ydENvbXBvbmVudCkgd3NQb3J0c1RhYmxlLmdldChwb3J0TmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBvcnQgPT0gbnVsbCkgcmV0dXJuIHN0YXR1czsKLSAgICAKLSAgICAgICAgICAgICAgICBMaXN0IGV4aXN0aW5nSGFuZGxlcnMgPSBwb3J0LmdldEhhbmRsZXJzKCk7Ci0gICAgCi0gICAgICAgICAgICAgICAgT2JqZWN0IGhhbmRsZXIgPSBodGkuZ2V0SGFuZGxlcigpOwotICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdIYW5kbGVycy5jb250YWlucyhoYW5kbGVyKSkgewotICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIGl0Ci0gICAgICAgICAgICAgICAgICBIYW5kbGVyIG5ld0hhbmRsZXIgPSB3c2RkRmFjdG9yeS5jcmVhdGVIYW5kbGVyKCk7Ci0gICAgICAgICAgICAgICAgICBuZXdIYW5kbGVyLnNldEhhbmRsZXJOYW1lKGh0aS5nZXRIYW5kbGVyTmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgIG5ld0hhbmRsZXIuc2V0SGFuZGxlckNsYXNzKGh0aS5nZXRIYW5kbGVyQ2xhc3NOYW1lKCkpOwotICAgICAgICAgICAgICAgICAgKChMaXN0KSB3c1BvcnRUb0hhbmRsZXJUYWJsZS5nZXQocG9ydE5hbWUpKS5hZGQobmV3SGFuZGxlcik7Ci0gICAgCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGhhbmRsZXIgaW5zdGFuY2VvZiBIYW5kbGVyKSB7Ci0gICAgICAgICAgICAgICAgICAvLyBjbG9uZSBpdAotICAgICAgICAgICAgICAgICAgRXRvb2xzQ29weVV0aWxpdHkgY29weVV0aWwgPSBuZXcgRXRvb2xzQ29weVV0aWxpdHkoKTsKLSAgICAgICAgICAgICAgICAgIGNvcHlVdGlsLnNldENvcHlBZGFwdGVycyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgIEhhbmRsZXIgY2xvbmVkSGFuZGxlciA9IChIYW5kbGVyKSBjb3B5VXRpbC5jb3B5KChIYW5kbGVyKSBoYW5kbGVyKTsKLSAgICAgICAgICAgICAgICAgICgoTGlzdCkgd3NQb3J0VG9IYW5kbGVyVGFibGUuZ2V0KHBvcnROYW1lKSkuYWRkKGNsb25lZEhhbmRsZXIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgLy8gcmVtb3ZlIGV4aXN0aW5nIGhhbmRsZXJzIGZyb20gcG9ydHMKLSAgICAgICAgICAgIHJlbW92ZUV4aXN0aW5nSGFuZGxlcnMod3NQb3J0c1RhYmxlLCB3c1BvcnRUb0hhbmRsZXJUYWJsZSk7Ci0gICAgCi0gICAgICAgICAgICAvLyBhZGQgcG9ydHMgdG8gd3NEZXNjcmlwdGlvbgotICAgICAgICAgICAgYWRkUG9ydHNUb0Rlc2NyaXB0aW9ucyh3c1BvcnRzVGFibGUsIHdzRGVzY3JpcHRpb25fKTsKLSAgICAKLSAgICAgICAgICAgIC8vIGFkZCBoYW5kbGVycyB0byBwb3J0cwotICAgICAgICAgICAgYWRkSGFuZGxlcnNUb1BvcnRzKHdzUG9ydHNUYWJsZSwgd3NQb3J0VG9IYW5kbGVyVGFibGUpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICAvLyBzYXZlCi0gICAgICBpZiAod3NkZFJlc291cmNlXyAhPSBudWxsKSB7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPHdzZGRSZXNvdXJjZV8ubGVuZ3RoO2krKykgewotICAgICAgICAJaWYgKHdzZGRSZXNvdXJjZV9baV0hPW51bGwpCi0gICAgICAgIAkJd3NkZFJlc291cmNlX1tpXS5zYXZlKG5ldyBIYXNoTWFwKCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gIAotICAgICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCByZW1vdmVFeGlzdGluZ0hhbmRsZXJzKEhhc2h0YWJsZSBwb3J0c1RhYmxlLCBIYXNodGFibGUgcG9ydHNUb0hhbmRsZXJzVGFibGUpIHsKLSAgICB0cnkgewotICAgICAgRW51bWVyYXRpb24gcG9ydHMgPSBwb3J0c1RvSGFuZGxlcnNUYWJsZS5rZXlzKCk7Ci0gICAgICB3aGlsZSAocG9ydHMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgU3RyaW5nIHBvcnROYW1lID0gKFN0cmluZykgcG9ydHMubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgT2JqZWN0IHBvcnQgPSBwb3J0c1RhYmxlLmdldChwb3J0TmFtZSk7Ci0gICAgICAgIGlmIChwb3J0ICE9IG51bGwgJiYgcG9ydCBpbnN0YW5jZW9mIFBvcnRDb21wb25lbnQpIHsKLSAgICAgICAgICBMaXN0IGhhbmRsZXJzID0gKChQb3J0Q29tcG9uZW50KSBwb3J0KS5nZXRIYW5kbGVycygpOwotICAgICAgICAgIGhhbmRsZXJzLmNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBhZGRQb3J0c1RvRGVzY3JpcHRpb25zKEhhc2h0YWJsZSBwb3J0c1RhYmxlLCBXZWJTZXJ2aWNlRGVzY3JpcHRpb24gd3NEZXNjcmlwdGlvbl8pIHsKLSAgICB0cnkgewotICAgICAgRW51bWVyYXRpb24gcG9ydHMgPSBwb3J0c1RhYmxlLmtleXMoKTsKLSAgICAgIHdoaWxlIChwb3J0cy5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgICBTdHJpbmcgcG9ydE5hbWUgPSAoU3RyaW5nKSBwb3J0cy5uZXh0RWxlbWVudCgpOwotICAgICAgICAvLyBuZXdseSBlZGl0ZWQgcG9ydAotICAgICAgICBPYmplY3QgcG9ydCA9IHBvcnRzVGFibGUuZ2V0KHBvcnROYW1lKTsKLSAgICAgICAgCi0gICAgICAgIC8vIGV4aXN0aW5nIHBvcnQKLSAgICAgICAgTGlzdCBlbWZQb3J0cyA9IHdzRGVzY3JpcHRpb25fLmdldFBvcnRDb21wb25lbnRzKCk7Ci0gICAgICAgIGlmICghZW1mUG9ydHMuY29udGFpbnMocG9ydCkgJiYgcG9ydCAhPSBudWxsICYmIHBvcnQgaW5zdGFuY2VvZiBQb3J0Q29tcG9uZW50KSB7Ci0gICAgICAgICAgZW1mUG9ydHMuYWRkKChQb3J0Q29tcG9uZW50KSBwb3J0KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgYWRkSGFuZGxlcnNUb1BvcnRzKEhhc2h0YWJsZSBwb3J0c1RhYmxlLCBIYXNodGFibGUgcG9ydHNUb0hhbmRsZXJzVGFibGUpIHsKLSAgICB0cnkgewotICAgICAgRW51bWVyYXRpb24gcG9ydHMgPSBwb3J0c1RvSGFuZGxlcnNUYWJsZS5rZXlzKCk7Ci0gICAgICB3aGlsZSAocG9ydHMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgU3RyaW5nIHBvcnROYW1lID0gKFN0cmluZykgcG9ydHMubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgT2JqZWN0IHBvcnQgPSBwb3J0c1RhYmxlLmdldChwb3J0TmFtZSk7Ci0gICAgICAgIGlmIChwb3J0ICE9IG51bGwgJiYgcG9ydCBpbnN0YW5jZW9mIFBvcnRDb21wb25lbnQpIHsKLSAgICAgICAgICBMaXN0IGhhbmRsZXJzID0gKExpc3QpIHBvcnRzVG9IYW5kbGVyc1RhYmxlLmdldChwb3J0TmFtZSk7Ci0KLSAgICAgICAgICBMaXN0IG1vZGVsSGFuZGxlcnMgPSAoKFBvcnRDb21wb25lbnQpIHBvcnQpLmdldEhhbmRsZXJzKCk7Ci0gICAgICAgICAgbW9kZWxIYW5kbGVycy5hZGRBbGwoaGFuZGxlcnMpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyCi0gICAqIEBwYXJhbSBoZGhzCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJzKEhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcltdIGhkaHMpewotICAgIHRoaXMuaGFuZGxlckRlc2NyaXB0aW9uSG9sZGVyXyA9IGhkaHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldElzTXVsdGlwbGVTZWxlY3Rpb24oYm9vbGVhbiBpc011bGl0cGxlU2VsZWN0aW9uKSB7Ci0gICAgdGhpcy5pc011bHRpcGxlU2VsZWN0aW9uXyA9IGlzTXVsaXRwbGVTZWxlY3Rpb247Ci0gIH0KLQotCi0gIHB1YmxpYyB2b2lkIHNldFdzZGRSZXNvdXJjZShXc2RkUmVzb3VyY2VbXSB3c2RkUmVzKSB7Ci0gICAgdGhpcy53c2RkUmVzb3VyY2VfID0gd3NkZFJlczsKLSAgfQotCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1RhYmxlVmlld2VyV2lkZ2V0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvVGFibGVWaWV3ZXJXaWRnZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjMjUyMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvVGFibGVWaWV3ZXJXaWRnZXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYzMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MDUgICAxMzk5MTggcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuUHJvcGVydGllczsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5Db2x1bW5XZWlnaHREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSUxhYmVsUHJvdmlkZXJMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklUYWJsZUxhYmVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TZWxlY3Rpb25DaGFuZ2VkRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVGFibGVMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5UYWJsZVZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5Qcm9wZXJ0aWVzUmVzb3VyY2VGaWx0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuZGlhbG9nLkRpYWxvZ1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuY3VzdG9tLlRhYmxlRWRpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuRm9jdXNBZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuRm9jdXNFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLktleUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuS2V5TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb3VzZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW91c2VMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5UcmF2ZXJzZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuVHJhdmVyc2VMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuSW1hZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlJlY3RhbmdsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRhYmxlQ29sdW1uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRhYmxlSXRlbTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0RGF0YUV2ZW50czsKLQotCi1wdWJsaWMgY2xhc3MgVGFibGVWaWV3ZXJXaWRnZXQgZXh0ZW5kcyBTaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3IKLXsKLSAgcHJpdmF0ZSBpbnQgREVGQVVMVF9UQUJMRV9IRUlHSFRfSElOVCA9IDEwMDsKLSAgcHJpdmF0ZSBpbnQgREVGQVVMVF9DT0xVTU5fV0lEVEggPSA4MDsKLQotICBwdWJsaWMgc3RhdGljIGJ5dGUgTUFQX09ORV9UT19PTkUgPSAzOwotICBwdWJsaWMgc3RhdGljIGJ5dGUgTUFQX01BTllfVE9fT05FID0gMTsKLSAgcHVibGljIHN0YXRpYyBieXRlIE1BUF9NQU5ZX1RPX01BTlkgPSAwOwotCi0gIHByaXZhdGUgU3RyaW5nW10gY29sdW1uc187Ci0gIHByaXZhdGUgVGFibGVWaWV3ZXIgdGFibGVWaWV3ZXJfOwotICBwcml2YXRlIFRhYmxlIHRhYmxlXzsKLSAgcHJpdmF0ZSBUYWJsZUVkaXRvciBlZGl0b3JfOwotICBwcml2YXRlIFRhYmxlRWRpdG9yTGlzdGVuZXIgdGFibGVFZGl0b3JMaXN0ZW5lcl87Ci0gIHByaXZhdGUgVGV4dCB0ZXh0XzsKLSAgcHJpdmF0ZSBCdXR0b24gaW1wb3J0XzsKLSAgcHJpdmF0ZSBCdXR0b24gYWRkXzsKLSAgcHJpdmF0ZSBCdXR0b24gcmVtb3ZlXzsKLSAgCi0gIHByaXZhdGUgQ29tcG9zaXRlIHBhcmVudF87Ci0gIHByaXZhdGUgTGlzdGVuZXIgIHN0YXR1c0xpc3RlbmVyXzsKLQotICBwcml2YXRlIFN0cmluZyBtZXNzYWdlID0gbnVsbDsKLSAgcHJpdmF0ZSBieXRlIHJlc2NyaWN0aW9uID0gTUFQX01BTllfVE9fTUFOWTsKLQotICBwcml2YXRlIExpc3QgdmFsdWVzXzsKLSAgcHJpdmF0ZSBPYmplY3QgZGVmYXVsdFZhbHVlXzsKLQotICBwcml2YXRlIFByb3BlcnRpZXNSZXNvdXJjZUZpbHRlciBmaWx0ZXJfID0gbmV3IFByb3BlcnRpZXNSZXNvdXJjZUZpbHRlcigpOwotCi0gIHB1YmxpYyBUYWJsZVZpZXdlcldpZGdldChTdHJpbmdbXSBjb2x1bW5zLCBMaXN0IGluaXRWYWx1ZXMsIE9iamVjdCBkZWZhdWx0VmFsdWUsIGJ5dGUgcmVzY3JpY3Rpb24pCi0gIHsKLQljb2x1bW5zXyA9IGNvbHVtbnM7Ci0JdmFsdWVzXyA9IG5ldyBBcnJheUxpc3QoKTsKLQlpZiAoaW5pdFZhbHVlcyAhPSBudWxsICYmIGluaXRWYWx1ZXMuc2l6ZSgpID4gMCkKLQkgIHZhbHVlc18uYWRkQWxsKGluaXRWYWx1ZXMpOwotCWRlZmF1bHRWYWx1ZV8gPSAoZGVmYXVsdFZhbHVlICE9IG51bGwpID8gZGVmYXVsdFZhbHVlIDogbmV3IFN0cmluZygiIik7Ci0JdGhpcy5yZXNjcmljdGlvbiA9IHJlc2NyaWN0aW9uOwotICB9Ci0KLSAgcHVibGljIFdpZGdldERhdGFFdmVudHMgYWRkQ29udHJvbHMoIENvbXBvc2l0ZSBwYXJlbnQsIExpc3RlbmVyIHN0YXR1c0xpc3RlbmVyICkKLSAgeyAKLSAgICBwYXJlbnRfICAgICAgICAgPSBwYXJlbnQ7Ci0gICAgc3RhdHVzTGlzdGVuZXJfID0gc3RhdHVzTGlzdGVuZXI7Ci0gICAgCi0JQ29tcG9zaXRlICBjb21wb3NpdGUgPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOwotCUdyaWRMYXlvdXQgZ2wgICAgICAgID0gbmV3IEdyaWRMYXlvdXQoKTsKLQkKLQlnbC5tYXJnaW5IZWlnaHQgPSAwOwotCWdsLm1hcmdpbldpZHRoID0gMDsKLQljb21wb3NpdGUuc2V0TGF5b3V0KGdsKTsKLQljb21wb3NpdGUuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMKSk7Ci0KLQl0YWJsZV8gPSBuZXcgVGFibGUoY29tcG9zaXRlLCBTV1QuU0lOR0xFIHwgU1dULkZVTExfU0VMRUNUSU9OIHwgU1dULkJPUkRFUik7Ci0JR3JpZERhdGEgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9CT1RIKTsKLQlnZC5oZWlnaHRIaW50ID0gREVGQVVMVF9UQUJMRV9IRUlHSFRfSElOVDsKLQl0YWJsZV8uc2V0TGF5b3V0RGF0YShnZCk7Ci0JdGFibGVfLnNldEhlYWRlclZpc2libGUodHJ1ZSk7Ci0JdGFibGVfLnNldExpbmVzVmlzaWJsZSh0cnVlKTsKLQlUYWJsZUxheW91dCB0YWJsZUxheW91dCA9IG5ldyBUYWJsZUxheW91dCgpOwotCWludCBtYXhXaWR0aCA9IERFRkFVTFRfQ09MVU1OX1dJRFRIOwotCWZvciAoaW50IGkgPSAwOyBpIDwgY29sdW1uc18ubGVuZ3RoOyBpKyspCi0JewotCSAgVGFibGVDb2x1bW4gdGFibGVDb2x1bW4gPSBuZXcgVGFibGVDb2x1bW4odGFibGVfLCBTV1QuTk9ORSk7Ci0JICB0YWJsZUNvbHVtbi5zZXRUZXh0KGNvbHVtbnNfW2ldKTsKLQkgIHRhYmxlQ29sdW1uLnBhY2soKTsKLQkgIGludCB0YWJsZUNvbHVtbldpZHRoID0gTWF0aC5tYXgoREVGQVVMVF9DT0xVTU5fV0lEVEgsIHRhYmxlQ29sdW1uLmdldFdpZHRoKCkpOwotCSAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgdGFibGVDb2x1bW5XaWR0aCk7Ci0JICBDb2x1bW5XZWlnaHREYXRhIGNvbHVtbkRhdGEgPSBuZXcgQ29sdW1uV2VpZ2h0RGF0YSh0YWJsZUNvbHVtbldpZHRoLCB0YWJsZUNvbHVtbldpZHRoLCB0cnVlKTsKLQkgIHRhYmxlTGF5b3V0LmFkZENvbHVtbkRhdGEoY29sdW1uRGF0YSk7Ci0JfQotCXRhYmxlXy5zZXRMYXlvdXQodGFibGVMYXlvdXQpOwotCS8vIGluaXRpYWxpemUgdGhlIHRhYmxlIGVkaXRvcgotCWVkaXRvcl8gPSBuZXcgVGFibGVFZGl0b3IodGFibGVfKTsKLQkvLyBUaGUgZWRpdG9yIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBjZWxsIGFuZCBtdXN0Ci0JLy8gbm90IGJlIGFueSBzbWFsbGVyIHRoYW4gNTAgcGl4ZWxzLgotCWVkaXRvcl8uaG9yaXpvbnRhbEFsaWdubWVudCA9IFNXVC5MRUZUOwotCWVkaXRvcl8uZ3JhYkhvcml6b250YWwgPSB0cnVlOwotCWVkaXRvcl8ubWluaW11bVdpZHRoID0gbWF4V2lkdGg7Ci0JdGFibGVFZGl0b3JMaXN0ZW5lcl8gPSBuZXcgVGFibGVFZGl0b3JMaXN0ZW5lcigpOwotCXRhYmxlXy5hZGRNb3VzZUxpc3RlbmVyKHRhYmxlRWRpdG9yTGlzdGVuZXJfKTsKLQl0YWJsZVZpZXdlcl8gPSBuZXcgVGFibGVWaWV3ZXIodGFibGVfKTsKLQl0YWJsZVZpZXdlcl8uZ2V0Q29udHJvbCgpLmFkZEtleUxpc3RlbmVyKAotCSAgbmV3IEtleUxpc3RlbmVyKCkKLQkgIHsKLQkJcHVibGljIHZvaWQga2V5UHJlc3NlZChLZXlFdmVudCBlKQotCQl7Ci0JCSAgaW50IGFzY2lpRGVsID0gKGludCllLmNoYXJhY3RlcjsKLQkJICAvLyBEZWwKLQkJICBpZiAoYXNjaWlEZWwgPT0gMTI3KSAKLQkJCWhhbmRsZURlbGV0ZUtleVByZXNzZWQoKTsKLSAgICAgICAgICAgICAgICAvLyBFbnRlciBvciBzcGFjZQotICAgICAgICAgICAgICAgIGlmICgoKGludCllLmNoYXJhY3RlcikgPT0gMTMgfHwgKChpbnQpZS5jaGFyYWN0ZXIpID09IDMyKQotICAgICAgICAgICAgICAgICAgdGFibGVFZGl0b3JMaXN0ZW5lcl8uZWRpdFNlbGVjdGlvbigpOwotCQl9Ci0JCXB1YmxpYyB2b2lkIGtleVJlbGVhc2VkKEtleUV2ZW50IGUpCi0JCXsKLQkJfQotCSAgfQotCSk7Ci0JdGFibGVWaWV3ZXJfLnNldENvbnRlbnRQcm92aWRlcihuZXcgTGlzdENvbnRlbnRQcm92aWRlcigpKTsKLQl0YWJsZVZpZXdlcl8uc2V0TGFiZWxQcm92aWRlcihuZXcgTGlzdExhYmVsUHJvdmlkZXIoKSk7Ci0JdGFibGVWaWV3ZXJfLnNldElucHV0KHZhbHVlc18pOwotCXRhYmxlVmlld2VyXy5hZGRTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIoCi0JICBuZXcgSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcigpCi0JICB7Ci0JCXB1YmxpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoU2VsZWN0aW9uQ2hhbmdlZEV2ZW50IGV2ZW50KQotCQl7Ci0JCSAgZW5hYmxlUmVtb3ZlKHRydWUpOwotCQl9Ci0JICB9Ci0JKTsKLQotCUNvbXBvc2l0ZSBidXR0b25Db21wb3NpdGUgPSBuZXcgQ29tcG9zaXRlKGNvbXBvc2l0ZSwgU1dULk5PTkUpOwotCWdsID0gbmV3IEdyaWRMYXlvdXQoKTsKLQlnbC5udW1Db2x1bW5zID0gMzsKLQlnbC5tYWtlQ29sdW1uc0VxdWFsV2lkdGggPSB0cnVlOwotCWJ1dHRvbkNvbXBvc2l0ZS5zZXRMYXlvdXQoZ2wpOwotCWJ1dHRvbkNvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwgfCBHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0JFR0lOTklORykpOwotCi0JaW1wb3J0XyA9IG5ldyBCdXR0b24oYnV0dG9uQ29tcG9zaXRlLCBTV1QuUFVTSCk7Ci0JaW1wb3J0Xy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9JTVBPUlQpOwotCWltcG9ydF8uc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKSk7Ci0JaW1wb3J0Xy5hZGRTZWxlY3Rpb25MaXN0ZW5lcigKLQkgIG5ldyBTZWxlY3Rpb25MaXN0ZW5lcigpCi0JICB7Ci0JCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KQotCQl7Ci0JCSAgaGFuZGxlSW1wb3J0QnV0dG9uU2VsZWN0ZWQoZXZlbnQpOwotCQl9Ci0JCXB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBldmVudCkKLQkJewotCQl9Ci0JICB9Ci0JKTsKLQkKLQlhZGRfID0gbmV3IEJ1dHRvbihidXR0b25Db21wb3NpdGUsIFNXVC5QVVNIKTsKLQlhZGRfLnNldFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0FERCk7Ci0JYWRkXy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwpKTsKLQlhZGRfLmFkZFNlbGVjdGlvbkxpc3RlbmVyKAotCSAgbmV3IFNlbGVjdGlvbkxpc3RlbmVyKCkKLQkgIHsKLQkJcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpCi0JCXsKLQkJICBoYW5kbGVBZGRCdXR0b25TZWxlY3RlZChldmVudCk7Ci0JCX0KLQkJcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KQotCQl7Ci0JCX0KLQkgIH0KLQkpOwotCi0JCi0JcmVtb3ZlXyA9IG5ldyBCdXR0b24oYnV0dG9uQ29tcG9zaXRlLCBTV1QuUFVTSCk7Ci0JcmVtb3ZlXy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9SRU1PVkUpOwotCXJlbW92ZV8uc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKSk7Ci0JcmVtb3ZlXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcigKLQkgIG5ldyBTZWxlY3Rpb25MaXN0ZW5lcigpCi0JICB7Ci0JCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KQotCQl7Ci0JCSAgaGFuZGxlUmVtb3ZlQnV0dG9uU2VsZWN0ZWQoZXZlbnQpOwotCQl9Ci0JCXB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBldmVudCkKLQkJewotCQl9Ci0JICB9Ci0JKTsKLQllbmFibGVSZW1vdmUoZmFsc2UpOwotCQotCXJldHVybiB0aGlzOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGVuYWJsZVJlbW92ZShib29sZWFuIGVuYWJsZWQpCi0gIHsKLQlyZW1vdmVfLnNldEVuYWJsZWQoZW5hYmxlZCAmJiAhdGFibGVWaWV3ZXJfLmdldFNlbGVjdGlvbigpLmlzRW1wdHkoKSk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlSW1wb3J0QnV0dG9uU2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpCi0gIHsKLQlJUmVzb3VyY2UgcmVzb3VyY2UgPSBEaWFsb2dVdGlscy5icm93c2VSZXNvdXJjZXMoCi0JICBwYXJlbnRfLmdldFNoZWxsKCksCi0JICBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKSwKLQkgIG51bGwsCi0JICBmaWx0ZXJfCi0JKTsKLQlpZiAocmVzb3VyY2UgIT0gbnVsbCAmJiByZXNvdXJjZSBpbnN0YW5jZW9mIElGaWxlKQotCXsKLQkgIHRyeQotCSAgewotCQlQcm9wZXJ0aWVzIHByb3BzID0gbmV3IFByb3BlcnRpZXMoKTsKLQkJcHJvcHMubG9hZCgoKElGaWxlKXJlc291cmNlKS5nZXRDb250ZW50cygpKTsKLQkJU2V0IHNldCA9IHByb3BzLmVudHJ5U2V0KCk7Ci0JCWphdmEudXRpbC5MaXN0IGxpc3QgPSBuZXcgTGlua2VkTGlzdCgpOwotCQlJdGVyYXRvciBpID0gc2V0Lml0ZXJhdG9yKCk7Ci0JCXdoaWxlIChpLmhhc05leHQoKSkKLQkJewotCQkgIE1hcC5FbnRyeSBtZSA9IChNYXAuRW50cnkpaS5uZXh0KCk7Ci0JCSAgU3RyaW5nIGtleSA9IChTdHJpbmcpbWUuZ2V0S2V5KCk7Ci0JCSAgU3RyaW5nIHZhbCA9IChTdHJpbmcpbWUuZ2V0VmFsdWUoKTsKLQkJICBsaXN0LmFkZChuZXcgU3RyaW5nW10ge2tleSx2YWx9KTsKLQkJfQotCQl2YWx1ZXNfLmFkZEFsbChsaXN0KTsKLQkgIH0KLQkgIGNhdGNoIChFeGNlcHRpb24gZSkKLQkgIHsKLQkgICAgLy8gVE9ETyBSZXBvcnQgc29tZSBlcnJvciBoZXJlLgotCSAgfQotCX0KLQlyZWZyZXNoKCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlQWRkQnV0dG9uU2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpCi0gIHsKLQl2YWx1ZXNfLmFkZChkZWZhdWx0VmFsdWVfKTsKLQlyZWZyZXNoKCk7Ci0Jc2V0U2VsZWN0aW9uQXNPYmplY3QodmFsdWVzXy5nZXQodGFibGVfLmdldEl0ZW1Db3VudCgpLTEpKTsKLQl0YWJsZUVkaXRvckxpc3RlbmVyXy5lZGl0U2VsZWN0aW9uKCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlUmVtb3ZlQnV0dG9uU2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpCi0gIHsKLQloYW5kbGVEZWxldGVLZXlQcmVzc2VkKCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlRGVsZXRlS2V5UHJlc3NlZCgpCi0gIHsKLQlpbnRlcm5hbERpc3Bvc2UoKTsKLQlJU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHRhYmxlVmlld2VyXy5nZXRTZWxlY3Rpb24oKTsKLQlpZiAoc2VsZWN0aW9uICE9IG51bGwgJiYgIXNlbGVjdGlvbi5pc0VtcHR5KCkgJiYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSkKLQl7Ci0JICBpbnQgc2VsZWN0aW9uSW5kZXggPSB0YWJsZV8uZ2V0U2VsZWN0aW9uSW5kZXgoKTsKLQkgIGludCBzZWxlY3Rpb25Db3VudCA9IHRhYmxlXy5nZXRJdGVtQ291bnQoKTsKLQkgIHZhbHVlc18ucmVtb3ZlKHNlbGVjdGlvbkluZGV4KTsKLQkgIGlmIChzZWxlY3Rpb25JbmRleCA8IHNlbGVjdGlvbkNvdW50LTEpCi0JCXNldFNlbGVjdGlvbkFzT2JqZWN0KHZhbHVlc18uZ2V0KHNlbGVjdGlvbkluZGV4KSk7Ci0JICBlbHNlIGlmIChzZWxlY3Rpb25Db3VudCAtMiA+PSAwKQotCQlzZXRTZWxlY3Rpb25Bc09iamVjdCh2YWx1ZXNfLmdldChzZWxlY3Rpb25Db3VudC0yKSk7Ci0JICByZWZyZXNoKCk7Ci0JfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGludGVybmFsUmVmcmVzaCgpCi0gIHsKLQkvLyBzeW5jaHJvbml6ZSB0ZXh0IGZpZWxkLCBwcmV2aW91c2x5IHNlbGVjdGVkIHRhYmxlIGNlbGwgYW5kIG1vZGVsIChpbnB1dE9iamVjdCkKLQlpZiAodGV4dF8gIT0gbnVsbCkKLQl7Ci0JICBUYWJsZUl0ZW0gb2xkVGFibGVJdGVtID0gZWRpdG9yXy5nZXRJdGVtKCk7Ci0JICBpbnQgb2xkQ29sdW1uSW5kZXggPSBlZGl0b3JfLmdldENvbHVtbigpOwotCSAgaWYgKG9sZFRhYmxlSXRlbSAhPSBudWxsICYmIG9sZENvbHVtbkluZGV4ID49IDAgJiYgb2xkQ29sdW1uSW5kZXggPCBjb2x1bW5zXy5sZW5ndGgpCi0JICB7Ci0JCVN0cmluZyBvbGRUZXh0ID0gdGV4dF8uZ2V0VGV4dCgpOwotCQlvbGRUYWJsZUl0ZW0uc2V0VGV4dChvbGRDb2x1bW5JbmRleCwgb2xkVGV4dCk7Ci0JCWludCBvbGRSb3dJbmRleCA9IHRhYmxlXy5pbmRleE9mKG9sZFRhYmxlSXRlbSk7Ci0JCXZhbHVlc18uc2V0KG9sZFJvd0luZGV4LCBuZXcgU3RyaW5nW10ge29sZFRhYmxlSXRlbS5nZXRUZXh0KDApLCBvbGRUYWJsZUl0ZW0uZ2V0VGV4dCgxKX0pOwotCSAgfQotCX0KLQljaGVja01hcHBpbmdDb25zdHJhaW50cygpOwotCXN0YXR1c0xpc3RlbmVyXy5oYW5kbGVFdmVudCggbnVsbCApOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGNoZWNrTWFwcGluZ0NvbnN0cmFpbnRzKCkgewotCi0JSGFzaE1hcCBtYXAgPSBuZXcgSGFzaE1hcCgpOwotICAgCi0JZm9yKGludCBjbnQ9MDsgY250PHZhbHVlc18uc2l6ZSgpOyBjbnQrKyl7Ci0JCVN0cmluZ1tdIHZhbHVlID0gKFN0cmluZ1tdKXZhbHVlc18uZ2V0KGNudCk7Ci0JCWlmKG1hcC5jb250YWluc0tleSh2YWx1ZVswXSkgJiYgKChyZXNjcmljdGlvbiAmIDEpIT0wKSl7Ci0JCQltZXNzYWdlID1OTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX01BUFBJTkdfRFVQTElDQVRFX0VOVFJJRVMsIG5ldyBTdHJpbmdbXXtjb2x1bW5zX1swXSxjb2x1bW5zX1sxXX0pOwotCQkJcmV0dXJuOwotCQl9Ci0JCWlmKG1hcC5jb250YWluc1ZhbHVlKHZhbHVlWzFdKSAmJiAoKHJlc2NyaWN0aW9uICYgMikhPTApKXsKLQkJCW1lc3NhZ2UgPU5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfTUFQUElOR19EVVBMSUNBVEVfRU5UUklFUywgbmV3IFN0cmluZ1tde2NvbHVtbnNfWzFdLGNvbHVtbnNfWzBdfSk7Ci0JCQlyZXR1cm47Ci0JCX0KLQkJbWFwLnB1dCh2YWx1ZVswXSx2YWx1ZVsxXSk7Ci0KLQl9Ci0JbWVzc2FnZSA9IG51bGw7Ci0KLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpCi0gIHsKLSAgICByZXR1cm4gbWVzc2FnZSA9PSBudWxsID8gU3RhdHVzLk9LX1NUQVRVUyA6IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggbWVzc2FnZSApOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHNldFNlbGVjdGlvbkFzT2JqZWN0KE9iamVjdCBvYmplY3QpCi0gIHsKLQl0YWJsZVZpZXdlcl8uc2V0U2VsZWN0aW9uKG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKG9iamVjdCksIHRydWUpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVmcmVzaCgpCi0gIHsKLQlpbnRlcm5hbFJlZnJlc2goKTsKLQl0YWJsZVZpZXdlcl8ucmVmcmVzaCgpOwotICB9Ci0KLSAgcHVibGljIFRhYmxlSXRlbVtdIGdldEl0ZW1zKCkKLSAgewotCS8vaW50ZXJuYWxSZWZyZXNoKCk7Ci0JcmV0dXJuIHRhYmxlXy5nZXRJdGVtcygpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RW5hYmxlZChib29sZWFuIGVuYWJsZWQpCi0gIHsKLQlhZGRfLnNldEVuYWJsZWQoZW5hYmxlZCk7Ci0JZW5hYmxlUmVtb3ZlKGVuYWJsZWQpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZGlzcG9zZSgpCi0gIHsKLQlpbnRlcm5hbERpc3Bvc2UoKTsKLQlpZiAoZWRpdG9yXyAhPSBudWxsKQotCSAgZWRpdG9yXy5kaXNwb3NlKCk7Ci0JaWYgKHRhYmxlXyAhPSBudWxsKQotCSAgdGFibGVfLmRpc3Bvc2UoKTsKLQlpZiAoYWRkXyAhPSBudWxsKQotCSAgYWRkXy5kaXNwb3NlKCk7Ci0JaWYgKHJlbW92ZV8gIT0gbnVsbCkKLQkgIHJlbW92ZV8uZGlzcG9zZSgpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGludGVybmFsRGlzcG9zZSgpCi0gIHsKLQlpZiAodGV4dF8gIT0gbnVsbCkKLQkgIHRleHRfLmRpc3Bvc2UoKTsKLQl0ZXh0XyA9IG51bGw7Ci0gIH0KLQotICBwcm90ZWN0ZWQgY2xhc3MgVGFibGVFZGl0b3JMaXN0ZW5lciBpbXBsZW1lbnRzIE1vdXNlTGlzdGVuZXIKLSAgewotCXByaXZhdGUgaW50IGN1cnJTZWxlY3Rpb25JbmRleF87Ci0gICAgcHJpdmF0ZSBpbnQgZWRpdFJvd187Ci0gICAgcHJpdmF0ZSBpbnQgZWRpdENvbHVtbl87Ci0KLQlwdWJsaWMgVGFibGVFZGl0b3JMaXN0ZW5lcigpCi0JewotCSAgc3VwZXIoKTsKLQkgIGN1cnJTZWxlY3Rpb25JbmRleF8gPSAtMTsKLSAgICAgICAgIGVkaXRSb3dfID0gLTE7Ci0gICAgICAgICBlZGl0Q29sdW1uXyA9IC0xOwotCX0KLQotCXB1YmxpYyB2b2lkIG1vdXNlRG91YmxlQ2xpY2soTW91c2VFdmVudCBlKQotCXsKLQkgIG1vdXNlRG93bihlKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBtb3VzZURvd24oTW91c2VFdmVudCBlKQotCXsKLQkgIC8vIHJlZnJlc2ggdGFibGUKLQkgIGludGVybmFsUmVmcmVzaCgpOwotCSAgLy8gQ2xlYW4gdXAgcHJldmlvdXMgdGV4dCBlZGl0b3IgY29udHJvbAotCSAgaW50ZXJuYWxEaXNwb3NlKCk7Ci0JICAvLyB1cGRhdGUgdGFibGUKLQkgIGlmICh0YWJsZV8uaXNGb2N1c0NvbnRyb2woKSkKLQkgIHsKLQkJaW50IHNlbGVjdGVkUm93SW5kZXggPSBnZXRTZWxlY3RlZFJvdyh0YWJsZV8sIGUueSk7Ci0JCWlmIChjdXJyU2VsZWN0aW9uSW5kZXhfICE9IC0xICYmIHNlbGVjdGVkUm93SW5kZXggIT0gLTEgJiYgY3VyclNlbGVjdGlvbkluZGV4XyA9PSBzZWxlY3RlZFJvd0luZGV4KQotCQl7Ci0JCSAgVGFibGVJdGVtIHRhYmxlSXRlbSA9IHRhYmxlXy5nZXRJdGVtKHNlbGVjdGVkUm93SW5kZXgpOwotCQkgIGludCBzZWxlY3RlZENvbHVtbkluZGV4ID0gZ2V0U2VsZWN0ZWRDb2x1bW4odGFibGVJdGVtLCBlLngsIGUueSk7Ci0JCSAgaWYgKHNlbGVjdGVkQ29sdW1uSW5kZXggIT0gLTEgJiYgKHRleHRfID09IG51bGwgfHwgdGV4dF8uaXNEaXNwb3NlZCgpIHx8IHNlbGVjdGVkQ29sdW1uSW5kZXggIT0gZWRpdG9yXy5nZXRDb2x1bW4oKSkpCi0JCQllZGl0U2VsZWN0aW9uKHNlbGVjdGVkUm93SW5kZXgsIHNlbGVjdGVkQ29sdW1uSW5kZXgpOwotCQl9Ci0JCWN1cnJTZWxlY3Rpb25JbmRleF8gPSBzZWxlY3RlZFJvd0luZGV4OwotCSAgfQotCX0KLQotCXB1YmxpYyB2b2lkIG1vdXNlVXAoTW91c2VFdmVudCBlKQotCXsKLQl9Ci0KLQlwcml2YXRlIGludCBnZXRTZWxlY3RlZFJvdyhUYWJsZSB0YWJsZSwgaW50IHkpCi0JewotCSAgVGFibGVJdGVtW10gdGFibGVJdGVtcyA9IHRhYmxlLmdldEl0ZW1zKCk7Ci0JICBmb3IgKGludCBpID0gMDsgaSA8IHRhYmxlSXRlbXMubGVuZ3RoOyBpKyspCi0JICB7Ci0JCVJlY3RhbmdsZSByZWN0YW5nbGUgPSB0YWJsZUl0ZW1zW2ldLmdldEJvdW5kcygwKTsKLQkJaWYgKHJlY3RhbmdsZSAhPSBudWxsICYmIHkgPj0gcmVjdGFuZ2xlLnkgJiYgeSA8IChyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQpKQotCQkgIHJldHVybiBpOwotCSAgfQotCSAgcmV0dXJuIC0xOwotCX0KLQotCXByaXZhdGUgaW50IGdldFNlbGVjdGVkQ29sdW1uKFRhYmxlSXRlbSB0YWJsZUl0ZW0sIGludCB4LCBpbnQgeSkKLQl7Ci0JICBmb3IgKGludCBpID0gMDsgaSA8IGNvbHVtbnNfLmxlbmd0aDsgaSsrKQotCSAgewotCQlpZiAodGFibGVJdGVtLmdldEJvdW5kcyhpKS5jb250YWlucyh4LCB5KSkKLQkJICByZXR1cm4gaTsKLQkgIH0KLQkgIHJldHVybiAtMTsKLQl9Ci0KLQlwcml2YXRlIHZvaWQgZWRpdFNlbGVjdGlvbihpbnQgcm93LCBpbnQgY29sdW1uKQotCXsKLSAgICAgICAgIGVkaXRSb3dfID0gcm93OwotICAgICAgICAgZWRpdENvbHVtbl8gPSBjb2x1bW47Ci0JICBUYWJsZUl0ZW0gdGFibGVJdGVtID0gdGFibGVfLmdldEl0ZW0ocm93KTsKLQkgIC8vIFNldHVwIGFkYXB0ZXIgZm9yIHRoZSBuZXcgc2VsZWN0aW9uCi0JICB0ZXh0XyA9IG5ldyBUZXh0KHRhYmxlXywgU1dULk5PTkUpOwotCSAgU3RyaW5nIHRleHQgPSB0YWJsZUl0ZW0uZ2V0VGV4dChjb2x1bW4pOwotCSAgdGV4dF8uc2V0VGV4dCgodGV4dCAhPSBudWxsKSA/IHRleHQgOiAiIik7Ci0gICAgICAgICB0ZXh0Xy5hZGRLZXlMaXN0ZW5lcihuZXcgS2V5TGlzdGVuZXIoKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgcHVibGljIHZvaWQga2V5UHJlc3NlZChLZXlFdmVudCBlKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIEVzYwotICAgICAgICAgICAgICAgaWYgKCgoaW50KWUuY2hhcmFjdGVyKSA9PSAyNykKLSAgICAgICAgICAgICAgICAgY2FuY2VsU2VsZWN0aW9uKCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGtleVJlbGVhc2VkKEtleUV2ZW50IGUpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgfQotICAgICAgICAgKTsKLSAgICAgICAgIHRleHRfLmFkZFRyYXZlcnNlTGlzdGVuZXIobmV3IFRyYXZlcnNlTGlzdGVuZXIoKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgcHVibGljIHZvaWQga2V5VHJhdmVyc2VkKFRyYXZlcnNlRXZlbnQgZSkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZiAoZS5kZXRhaWwgPT0gU1dULlRSQVZFUlNFX1RBQl9ORVhUKQotICAgICAgICAgICAgICAgICB0cmF2ZXJzZVRhYk5leHQoKTsKLSAgICAgICAgICAgICAgIGVsc2UgaWYgKGUuZGV0YWlsID09IFNXVC5UUkFWRVJTRV9UQUJfUFJFVklPVVMpCi0gICAgICAgICAgICAgICAgIHRyYXZlcnNlVGFiUHJldmlvdXMoKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAgICAgICk7Ci0gICAgICAgICAKLSAgICB0ZXh0Xy5hZGRGb2N1c0xpc3RlbmVyKCBuZXcgRm9jdXNBZGFwdGVyKCkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgZm9jdXNMb3N0KEZvY3VzRXZlbnQgZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxSZWZyZXNoKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotICAgIAotCSAgZWRpdG9yXy5zZXRFZGl0b3IodGV4dF8sIHRhYmxlSXRlbSwgY29sdW1uKTsKLQkgIHRleHRfLnNldEZvY3VzKCk7Ci0JICB0ZXh0Xy5zZWxlY3RBbGwoKTsKLQl9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCB0cmF2ZXJzZVRhYk5leHQoKQotICAgIHsKLSAgICAgIGludGVybmFsUmVmcmVzaCgpOwotICAgICAgaW50ZXJuYWxEaXNwb3NlKCk7Ci0gICAgICBpZiAoIShlZGl0Um93XyA9PSB0YWJsZV8uZ2V0SXRlbXMoKS5sZW5ndGgtMSAmJiBlZGl0Q29sdW1uXyA9PSBjb2x1bW5zXy5sZW5ndGgtMSkpCi0gICAgICB7Ci0gICAgICAgIGlmIChlZGl0Q29sdW1uXyA8IGNvbHVtbnNfLmxlbmd0aC0xKQotICAgICAgICAgIGVkaXRDb2x1bW5fKys7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGVkaXRDb2x1bW5fID0gMDsKLSAgICAgICAgICBlZGl0Um93XysrOwotICAgICAgICAgIHRhYmxlXy5zZWxlY3QoZWRpdFJvd18pOwotICAgICAgICB9Ci0gICAgICAgIGVkaXRTZWxlY3Rpb24oZWRpdFJvd18sIGVkaXRDb2x1bW5fKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCB0cmF2ZXJzZVRhYlByZXZpb3VzKCkKLSAgICB7Ci0gICAgICBpbnRlcm5hbFJlZnJlc2goKTsKLSAgICAgIGludGVybmFsRGlzcG9zZSgpOwotICAgICAgaWYgKCEoZWRpdFJvd18gPT0gMCAmJiBlZGl0Q29sdW1uXyA9PSAwKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGVkaXRDb2x1bW5fID4gMCkKLSAgICAgICAgICBlZGl0Q29sdW1uXy0tOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBlZGl0Q29sdW1uXyA9IGNvbHVtbnNfLmxlbmd0aC0xOwotICAgICAgICAgIGVkaXRSb3dfLS07Ci0gICAgICAgICAgdGFibGVfLnNlbGVjdChlZGl0Um93Xyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWRpdFNlbGVjdGlvbihlZGl0Um93XywgZWRpdENvbHVtbl8pOwotICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGNhbmNlbFNlbGVjdGlvbigpCi0gICAgewotICAgICAgaW50ZXJuYWxEaXNwb3NlKCk7Ci0gICAgICBpbnRlcm5hbFJlZnJlc2goKTsKLSAgICB9Ci0KLQlwdWJsaWMgdm9pZCBlZGl0U2VsZWN0aW9uKCkKLQl7Ci0JICBpbnQgc2VsZWN0ZWRSb3dJbmRleCA9IHRhYmxlXy5nZXRTZWxlY3Rpb25JbmRleCgpOwotCSAgaWYgKHNlbGVjdGVkUm93SW5kZXggIT0gLTEgJiYgY29sdW1uc18ubGVuZ3RoID4gMCkKLQkgIHsKLQkJLy8gcmVmcmVzaCB0YWJsZQotCQlpbnRlcm5hbFJlZnJlc2goKTsKLQkJLy8gQ2xlYW4gdXAgYW55IHByZXZpb3VzIGVkaXRvciBjb250cm9sCi0JCWludGVybmFsRGlzcG9zZSgpOwotCQllZGl0U2VsZWN0aW9uKHNlbGVjdGVkUm93SW5kZXgsIDApOwotCSAgfQotCSAgY3VyclNlbGVjdGlvbkluZGV4XyA9IHNlbGVjdGVkUm93SW5kZXg7Ci0JfQotICB9Ci0KLSAgcHJvdGVjdGVkIGNsYXNzIExpc3RDb250ZW50UHJvdmlkZXIgaW1wbGVtZW50cyBJU3RydWN0dXJlZENvbnRlbnRQcm92aWRlcgotICB7Ci0JcHVibGljIHZvaWQgZGlzcG9zZSgpCi0JewotCX0KLQotCXB1YmxpYyB2b2lkIGlucHV0Q2hhbmdlZChWaWV3ZXIgdmlld2VyLCBPYmplY3Qgb2xkSW5wdXQsIE9iamVjdCBuZXdJbnB1dCkKLQl7Ci0JICB0YWJsZVZpZXdlcl8uYWRkKGdldEVsZW1lbnRzKG5ld0lucHV0KSk7Ci0JfQotCi0JcHVibGljIE9iamVjdFtdIGdldEVsZW1lbnRzKE9iamVjdCBpbnB1dEVsZW1lbnQpCi0JewotCSAgaWYgKGlucHV0RWxlbWVudCBpbnN0YW5jZW9mIExpc3QpCi0JICB7Ci0JCUxpc3QgbGlzdCA9IChMaXN0KWlucHV0RWxlbWVudDsKLQkJT2JqZWN0W10gb2JqZWN0cyA9IG5ldyBPYmplY3RbbGlzdC5zaXplKCldOwotCQlmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdHMubGVuZ3RoOyBpKyspCi0JCSAgb2JqZWN0c1tpXSA9IGxpc3QuZ2V0KGkpOwotCQlyZXR1cm4gb2JqZWN0czsKLQkgIH0KLQkgIGVsc2UKLQkJcmV0dXJuIG5ldyBPYmplY3RbMF07Ci0JfQotICB9Ci0KLSAgcHJvdGVjdGVkIGNsYXNzIExpc3RMYWJlbFByb3ZpZGVyIGltcGxlbWVudHMgSVRhYmxlTGFiZWxQcm92aWRlcgotICB7Ci0JcHVibGljIEltYWdlIGdldENvbHVtbkltYWdlKE9iamVjdCBlbGVtZW50LCBpbnQgY29sdW1uSW5kZXgpCi0JewotCSAgcmV0dXJuIG51bGw7Ci0JfQotCi0JcHVibGljIFN0cmluZyBnZXRDb2x1bW5UZXh0KE9iamVjdCBlbGVtZW50LCBpbnQgY29sdW1uSW5kZXgpCi0JewotCQlyZXR1cm4gKChTdHJpbmdbXSllbGVtZW50KVtjb2x1bW5JbmRleF07CSAgCQotCX0KLQotCXB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKElMYWJlbFByb3ZpZGVyTGlzdGVuZXIgbGlzdGVuZXIpCi0JewotCX0KLQotCXB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKElMYWJlbFByb3ZpZGVyTGlzdGVuZXIgbGlzdGVuZXIpCi0JewotCX0KLQotCXB1YmxpYyBib29sZWFuIGlzTGFiZWxQcm9wZXJ0eShPYmplY3QgZWxlbWVudCwgU3RyaW5nIHByb3BlcnR5KQotCXsKLQkgIHJldHVybiB0cnVlOwotCX0KLQotCXB1YmxpYyB2b2lkIGRpc3Bvc2UoKQotCXsKLQl9Ci0gIH0KLSB9CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvVGltZWRXU0RMU2VsZWN0aW9uQ29uZGl0aW9uQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1RpbWVkV1NETFNlbGVjdGlvbkNvbmRpdGlvbkNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU2YjZlMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvVGltZWRXU0RMU2VsZWN0aW9uQ29uZGl0aW9uQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTA0ICAgMTE5Mjk2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnByZWZlcmVuY2UuSVByZWZlcmVuY2VTdG9yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLkNvbmRpdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuY29tbW9uLlRpbWVkT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi0KLXB1YmxpYyBjbGFzcyBUaW1lZFdTRExTZWxlY3Rpb25Db25kaXRpb25Db21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gaW1wbGVtZW50cyBDb25kaXRpb24KLXsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgICAgICAgICAgICAgICAgICBUSU1FT1VUX1BSRUZFUkVOQ0UgPSAid3NkbFRpbWVPdXQiOwotICBwcml2YXRlIFdTRExTZWxlY3Rpb25Db25kaXRpb25Db21tYW5kIHNlbGVjdGlvbkNvbW1hbmQ7Ci0gIHByaXZhdGUgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZU91dFZhbHVlOwotICAKLSAgcHVibGljIFRpbWVkV1NETFNlbGVjdGlvbkNvbmRpdGlvbkNvbW1hbmQoKQotICB7Ci0gICAgc2VsZWN0aW9uQ29tbWFuZCA9IG5ldyBXU0RMU2VsZWN0aW9uQ29uZGl0aW9uQ29tbWFuZCgpOwotICAgIAotICAgIElQcmVmZXJlbmNlU3RvcmUgcHJlZlN0b3JlID0gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRQcmVmZXJlbmNlU3RvcmUoKTsKLSAgICAKLSAgICB0aW1lT3V0VmFsdWUgPSBwcmVmU3RvcmUuZ2V0RGVmYXVsdFN0cmluZyhUSU1FT1VUX1BSRUZFUkVOQ0UpLmVxdWFscygiIikgPyAxMDAwMCA6IHByZWZTdG9yZS5nZXRJbnQoIFRJTUVPVVRfUFJFRkVSRU5DRSApOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXIpCi0gIHsKLSAgICBzZWxlY3Rpb25Db21tYW5kLnNldFdlYlNlcnZpY2VzUGFyc2VyKCB3ZWJTZXJ2aWNlc1BhcnNlciApOwotICB9Ci0KLSAgcHVibGljIFdlYlNlcnZpY2VzUGFyc2VyIGdldFdlYlNlcnZpY2VzUGFyc2VyKCkKLSAgewotICAgIHJldHVybiBzZWxlY3Rpb25Db21tYW5kLmdldFdlYlNlcnZpY2VzUGFyc2VyKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgU3RyaW5nICAgICAgICAgdGltZU91dE1lc3NhZ2UgPSBDb25zdW1wdGlvblVJTWVzc2FnZXMuYmluZCggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19JTkZPX1dTRExfT1BFUkFUSU9OX1RJTUVEX09VVCwgZ2V0V2ViU2VydmljZVVSSSgpICk7Ci0gICAgCi0gICAgVGltZWRPcGVyYXRpb24gdGltZWRPcGVyYXRpb24gPSBuZXcgVGltZWRPcGVyYXRpb24oIHNlbGVjdGlvbkNvbW1hbmQsIHRpbWVPdXRWYWx1ZSwgdGltZU91dE1lc3NhZ2UgKTsKLSAgICAKLSAgICByZXR1cm4gdGltZWRPcGVyYXRpb24uZXhlY3V0ZShtb25pdG9yLCBhZGFwdGFibGUpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBldmFsdWF0ZSgpCi0gIHsKLSAgICByZXR1cm4gc2VsZWN0aW9uQ29tbWFuZC5ldmFsdWF0ZSgpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlVVJJKCkKLSAgewotICAgIHJldHVybiBzZWxlY3Rpb25Db21tYW5kLmdldFdlYlNlcnZpY2VVUkkoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VVUkkoU3RyaW5nIHdlYlNlcnZpY2VVUkkpCi0gIHsKLSAgICBzZWxlY3Rpb25Db21tYW5kLnNldFdlYlNlcnZpY2VVUkkod2ViU2VydmljZVVSSSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3NkbFVSSSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0V2ViU2VydmljZVVSSSgpOwotICB9Ci0vKioKLSAqIEByZXR1cm4gUmV0dXJucyB0aGUgaHR0cEJhc2ljQXV0aFBhc3N3b3JkLgotICovCi1wdWJsaWMgU3RyaW5nIGdldEh0dHBCYXNpY0F1dGhQYXNzd29yZCgpIHsKLQlyZXR1cm4gc2VsZWN0aW9uQ29tbWFuZC5nZXRIdHRwQmFzaWNBdXRoUGFzc3dvcmQoKTsKLX0KLS8qKgotICogQHJldHVybiBSZXR1cm5zIHRoZSBodHRwQmFzaWNBdXRoVXNlcm5hbWUuCi0gKi8KLXB1YmxpYyBTdHJpbmcgZ2V0SHR0cEJhc2ljQXV0aFVzZXJuYW1lKCkgewotCXJldHVybiBzZWxlY3Rpb25Db21tYW5kLmdldEh0dHBCYXNpY0F1dGhVc2VybmFtZSgpOwotfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1dTRExTZWxlY3Rpb25Db25kaXRpb25Db21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvV1NETFNlbGVjdGlvbkNvbmRpdGlvbkNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI2MDQ5YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvV1NETFNlbGVjdGlvbkNvbmRpdGlvbkNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzaWwuRGlhbG9nV1dXQXV0aGVudGljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5Db25kaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuV2ViU2VydmljZXNQYXJzZXJFeHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlRW50aXR5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLQotCi1wdWJsaWMgY2xhc3MgV1NETFNlbGVjdGlvbkNvbmRpdGlvbkNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiBpbXBsZW1lbnRzIENvbmRpdGlvbgotewotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyOwotICBwcml2YXRlIFN0cmluZyB3ZWJTZXJ2aWNlVVJJOwotICBwcml2YXRlIFN0cmluZyBodHRwQmFzaWNBdXRoVXNlcm5hbWU7Ci0gIHByaXZhdGUgU3RyaW5nIGh0dHBCYXNpY0F1dGhQYXNzd29yZDsKLSAgcHJpdmF0ZSBib29sZWFuIG5lZWRXU0RMU2VsZWN0aW9uVHJlZVdpZGdldDsKLSAgCi0gIHB1YmxpYyBXU0RMU2VsZWN0aW9uQ29uZGl0aW9uQ29tbWFuZCgpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyKQotICB7Ci0gICAgdGhpcy53ZWJTZXJ2aWNlc1BhcnNlciA9IHdlYlNlcnZpY2VzUGFyc2VyOwotICB9Ci0KLSAgcHVibGljIFdlYlNlcnZpY2VzUGFyc2VyIGdldFdlYlNlcnZpY2VzUGFyc2VyKCkKLSAgewotICAJaWYgKHdlYlNlcnZpY2VzUGFyc2VyID09IG51bGwpCi0gIAkgIHdlYlNlcnZpY2VzUGFyc2VyID0gbmV3IFdlYlNlcnZpY2VzUGFyc2VyRXh0KCk7Ci0gIAlyZXR1cm4gd2ViU2VydmljZXNQYXJzZXI7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gIAluZWVkV1NETFNlbGVjdGlvblRyZWVXaWRnZXQgPSBmYWxzZTsKLSAgCVdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlciA9IGdldFdlYlNlcnZpY2VzUGFyc2VyKCk7Ci0gIAlwYXJzZXIuc2V0VVJJKHdlYlNlcnZpY2VVUkkpOwotICAgIHRyeQotICAgIHsKLSAgICAgIHBhcnNlci5wYXJzZShXZWJTZXJ2aWNlc1BhcnNlci5QQVJTRV9XU0lMIHwgV2ViU2VydmljZXNQYXJzZXIuUEFSU0VfRElTQ08gfCBXZWJTZXJ2aWNlc1BhcnNlci5QQVJTRV9MSU5LUyk7Ci0gICAgfQotICAgIGNhdGNoIChXV1dBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiB3d3dhZSkKLSAgICB7Ci0gICAgICBEaWFsb2dXV1dBdXRoZW50aWNhdGlvbiBkaWFsb2cgPSBuZXcgRGlhbG9nV1dXQXV0aGVudGljYXRpb24oUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKS5nZXRTaGVsbCgpKTsKLSAgICAgIGRpYWxvZy5oYW5kbGVXV1dBdXRoZW50aWNhdGlvbih3d3dhZSk7Ci0gICAgICBTdHJpbmcgdXNlcm5hbWUgPSBkaWFsb2cuZ2V0VXNlcm5hbWUoKTsKLSAgICAgIFN0cmluZyBwYXNzd29yZCA9IGRpYWxvZy5nZXRQYXNzd29yZCgpOwotICAgICAgaHR0cEJhc2ljQXV0aFVzZXJuYW1lID0gdXNlcm5hbWU7Ci0gICAgICBodHRwQmFzaWNBdXRoUGFzc3dvcmQgPSBwYXNzd29yZDsKLSAgICAgIGlmICh1c2VybmFtZSAhPSBudWxsICYmIHBhc3N3b3JkICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHBhcnNlci5zZXRIVFRQQmFzaWNBdXRoVXNlcm5hbWUodXNlcm5hbWUpOwotICAgICAgICBwYXJzZXIuc2V0SFRUUEJhc2ljQXV0aFBhc3N3b3JkKHBhc3N3b3JkKTsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBwYXJzZXIucGFyc2UoV2ViU2VydmljZXNQYXJzZXIuUEFSU0VfV1NJTCB8IFdlYlNlcnZpY2VzUGFyc2VyLlBBUlNFX0RJU0NPIHwgV2ViU2VydmljZXNQYXJzZXIuUEFSU0VfTElOS1MpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9VUklfTk9UX1JFU09MVkFCTEUsIG5ldyBPYmplY3RbXSB7d2ViU2VydmljZVVSSX0pLCB0KTsKLSAgICAgICAgfQotICAgICAgICBmaW5hbGx5Ci0gICAgICAgIHsKLSAgICAgICAgICBwYXJzZXIuc2V0SFRUUEJhc2ljQXV0aFVzZXJuYW1lKG51bGwpOwotICAgICAgICAgIHBhcnNlci5zZXRIVFRQQmFzaWNBdXRoUGFzc3dvcmQobnVsbCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgIHsKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9VUklfTk9UX1JFU09MVkFCTEUsIG5ldyBPYmplY3RbXSB7d2ViU2VydmljZVVSSX0pLCB0KTsKLSAgICB9Ci0gICAgV2ViU2VydmljZUVudGl0eSB3c0VudGl0eSA9IHBhcnNlci5nZXRXZWJTZXJ2aWNlRW50aXR5QnlVUkkod2ViU2VydmljZVVSSSk7Ci0gICAgaWYgKHdzRW50aXR5ICE9IG51bGwpCi0gICAgewotICAgICAgaW50IHR5cGUgPSB3c0VudGl0eS5nZXRUeXBlKCk7Ci0gICAgICBpZiAodHlwZSAhPSBXZWJTZXJ2aWNlRW50aXR5LlRZUEVfV1NETCkKLSAgICAgIAluZWVkV1NETFNlbGVjdGlvblRyZWVXaWRnZXQgPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoKQotICB7Ci0gICAgcmV0dXJuIG5lZWRXU0RMU2VsZWN0aW9uVHJlZVdpZGdldDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V2ViU2VydmljZVVSSSgpCi0gIHsKLSAgICByZXR1cm4gd2ViU2VydmljZVVSSTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VVUkkoU3RyaW5nIHdlYlNlcnZpY2VVUkkpCi0gIHsKLSAgICB0aGlzLndlYlNlcnZpY2VVUkkgPSB3ZWJTZXJ2aWNlVVJJOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFdzZGxVUkkoKQotICB7Ci0gICAgcmV0dXJuIGdldFdlYlNlcnZpY2VVUkkoKTsKLSAgfQotLyoqCi0gKiBAcmV0dXJuIFJldHVybnMgdGhlIGh0dHBCYXNpY0F1dGhQYXNzd29yZC4KLSAqLwotcHVibGljIFN0cmluZyBnZXRIdHRwQmFzaWNBdXRoUGFzc3dvcmQoKSB7Ci0JcmV0dXJuIGh0dHBCYXNpY0F1dGhQYXNzd29yZDsKLX0KLS8qKgotICogQHJldHVybiBSZXR1cm5zIHRoZSBodHRwQmFzaWNBdXRoVXNlcm5hbWUuCi0gKi8KLXB1YmxpYyBTdHJpbmcgZ2V0SHR0cEJhc2ljQXV0aFVzZXJuYW1lKCkgewotCXJldHVybiBodHRwQmFzaWNBdXRoVXNlcm5hbWU7Ci19Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvV1NETFNlbGVjdGlvbkRpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1dTRExTZWxlY3Rpb25EaWFsb2cuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI0Mjc2ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvV1NETFNlbGVjdGlvbkRpYWxvZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTI1ICAgMTQyMjgxIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5BYnN0cmFjdFNlbGVjdGlvbkRpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5QYWdlSW5mbzsKLQotcHVibGljIGNsYXNzIFdTRExTZWxlY3Rpb25EaWFsb2cgZXh0ZW5kcyBBYnN0cmFjdFNlbGVjdGlvbkRpYWxvZyB7Ci0JCi0JcHJpdmF0ZSBTdHJpbmcgdGl0bGVUZXh0XzsKLQlwcml2YXRlIFN0cmluZyB3c1VyaV87Ci0JcHJpdmF0ZSBTdHJpbmcgY29tcG9uZW50TmFtZV87Ci0JcHJpdmF0ZSBJUHJvamVjdCBwcm9qZWN0XzsKLQkKLQlwdWJsaWMgV1NETFNlbGVjdGlvbkRpYWxvZyhTaGVsbCBwYXJlbnQsIFBhZ2VJbmZvIHBhZ2VJbmZvKSB7Ci0JCXN1cGVyKHBhcmVudCwgcGFnZUluZm8pOwotCQl0aXRsZVRleHRfID0gcGFnZUluZm8uZ2V0UGFnZU5hbWUoKTsKLQl9Ci0KLQlwcm90ZWN0ZWQgdm9pZCBjYWxsU2V0dGVycygpCi0JewkJCi0JCSgoV1NETFNlbGVjdGlvbldpZGdldFdyYXBwZXIpZ2V0V2lkZ2V0KCkpLnNldENvbXBvbmVudE5hbWUoY29tcG9uZW50TmFtZV8pOwotCQkoKFdTRExTZWxlY3Rpb25XaWRnZXRXcmFwcGVyKWdldFdpZGdldCgpKS5zZXRQcm9qZWN0KHByb2plY3RfKTsKLQkJKChXU0RMU2VsZWN0aW9uV2lkZ2V0V3JhcHBlcilnZXRXaWRnZXQoKSkuc2V0V2ViU2VydmljZVVSSSh3c1VyaV8pOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXRDb21wb25lbnROYW1lKFN0cmluZyBjb21wb25lbnROYW1lKQotCXsKLSAgICAgICAgIGNvbXBvbmVudE5hbWVfID0gY29tcG9uZW50TmFtZTsgICAgICAJICAgCi0JfQotCQotCXB1YmxpYyBTdHJpbmcgZ2V0Q29tcG9uZW50TmFtZSgpCi0JewotICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE5hbWVfIDsgICAgICAJICAgCi0JfQotCQotCXB1YmxpYyB2b2lkIHNldFByb2plY3QoSVByb2plY3QgcHJvamVjdCkKLQl7Ci0JCXByb2plY3RfID0gcHJvamVjdDsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0V2ViU2VydmljZVVSSShTdHJpbmcgd3NVcmkpCi0JewotCQl3c1VyaV8gPSB3c1VyaTsKLQl9CQotCSAKLQkgIHByb3RlY3RlZCB2b2lkIHNldFNoZWxsU3R5bGUoaW50IG5ld1NoZWxsU3R5bGUpCi0JICB7Ci0JICAgIHN1cGVyLnNldFNoZWxsU3R5bGUoIG5ld1NoZWxsU3R5bGUgfCBTV1QuUkVTSVpFICk7ICAKLQkgIH0KLQotCSAgcHJvdGVjdGVkIHZvaWQgY29uZmlndXJlU2hlbGwoU2hlbGwgbmV3U2hlbGwpCi0JICB7Ci0JICAgIG5ld1NoZWxsLnNldFRleHQodGl0bGVUZXh0Xyk7ICAgCi0JICAgIHN1cGVyLmNvbmZpZ3VyZVNoZWxsKG5ld1NoZWxsKTsKLQkgIH0KLQotCSAgcHVibGljIFN0cmluZyBnZXREaXNwbGF5YWJsZVNlbGVjdGlvblN0cmluZygpIHsKLQkJICAKLQkJIHJldHVybiAoKFdTRExTZWxlY3Rpb25XaWRnZXRXcmFwcGVyKWdldFdpZGdldCgpKS5nZXRPYmplY3RTZWxlY3Rpb25EaXNwbGF5YWJsZVN0cmluZygpOwotCX0KLQkgIAotCSAgcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldE9iamVjdFNlbGVjdGlvbigpIHsKLQkJICByZXR1cm4gKChXU0RMU2VsZWN0aW9uV2lkZ2V0V3JhcHBlcilnZXRXaWRnZXQoKSkuZ2V0T2JqZWN0U2VsZWN0aW9uKCk7Ci0JfQotCSAKLQkgIHB1YmxpYyBTdHJpbmcgZ2V0V2ViU2VydmljZVVSSSgpCi0JICB7Ci0JCSAgcmV0dXJuIHdzVXJpXzsKLQkgIH0KLQkgIAotCSAgcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKXsKLQkJICByZXR1cm4gcHJvamVjdF87Ci0JICB9Ci0KLSAgICAgIHB1YmxpYyBib29sZWFuIGNsb3NlKCkgewotICAgICAgICBzZXRDb21wb25lbnROYW1lKCgoV1NETFNlbGVjdGlvbldpZGdldFdyYXBwZXIpZ2V0V2lkZ2V0KCkpLmdldENvbXBvbmVudE5hbWUoKSk7Ci0gICAgICAgIHNldFByb2plY3QoKChXU0RMU2VsZWN0aW9uV2lkZ2V0V3JhcHBlcilnZXRXaWRnZXQoKSkuZ2V0UHJvamVjdCgpKTsKLSAgICAgICAgc2V0V2ViU2VydmljZVVSSSgoKFdTRExTZWxlY3Rpb25XaWRnZXRXcmFwcGVyKWdldFdpZGdldCgpKS5nZXRXZWJTZXJ2aWNlVVJJKCkpOwotICAgIAlyZXR1cm4gc3VwZXIuY2xvc2UoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9XU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjEzMTFlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9XU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxMyAgIDEzNTU4MSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuV2ViU2VydmljZXNQYXJzZXJFeHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi0KLXB1YmxpYyBjbGFzcyBXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXI7Ci0gIHByaXZhdGUgU3RyaW5nIHdzZGxVUkk7Ci0gIHByaXZhdGUgSVByb2plY3QgcHJvamVjdDsKLSAgcHJpdmF0ZSBTdHJpbmcgY29tcG9uZW50TmFtZTsKLSAgCi0gIHByaXZhdGUgYm9vbGVhbiB0ZXN0U2VydmljZTsKLSAgCi0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRUZXN0U2VydmljZSgpIHsKLSAgICByZXR1cm4gdGVzdFNlcnZpY2U7Ci0gIH0KLQotICAKLSAgcHVibGljIHZvaWQgc2V0VGVzdFNlcnZpY2UoYm9vbGVhbiB0ZXN0U2VydmljZSkgewotICAgIHRoaXMudGVzdFNlcnZpY2UgPSB0ZXN0U2VydmljZTsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHByb2plY3QuCi0gICAqLwotICBwdWJsaWMgSVByb2plY3QgZ2V0UHJvamVjdCgpCi0gIHsKLSAgICByZXR1cm4gcHJvamVjdDsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gcHJvamVjdAotICAgKiAgICAgICAgICBUaGUgcHJvamVjdCB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KElQcm9qZWN0IHByb2plY3QpCi0gIHsKLSAgICB0aGlzLnByb2plY3QgPSBwcm9qZWN0OwotICB9Ci0gIAotICAKLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29tcG9uZW50TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gY29tcG9uZW50TmFtZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENvbXBvbmVudE5hbWUoU3RyaW5nIGNvbXBvbmVudE5hbWUpCi0gIHsKLSAgICB0aGlzLmNvbXBvbmVudE5hbWUgPSBjb21wb25lbnROYW1lOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXc2RsVVJJKCkKLSAgewotICAgIHJldHVybiB3c2RsVVJJOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0V3NkbFVSSShTdHJpbmcgd3NkbFVSSSkKLSAgewotICAgIHRoaXMud3NkbFVSSSA9IHdzZGxVUkk7Ci0gIH0KLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSB3ZWJTZXJ2aWNlc1BhcnNlci4KLSAgICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpCi0gIHsKLSAgICBpZiAod2ViU2VydmljZXNQYXJzZXIgIT0gbnVsbCkKLSAgICAgIHJldHVybiB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbmV3IFdlYlNlcnZpY2VzUGFyc2VyRXh0KCk7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHdlYlNlcnZpY2VzUGFyc2VyIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyKQotICB7Ci0gICAgdGhpcy53ZWJTZXJ2aWNlc1BhcnNlciA9IHdlYlNlcnZpY2VzUGFyc2VyOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICAgICAKLSAgICBpZiAod3NkbFVSSSAhPSBudWxsICYmIGdldFdlYlNlcnZpY2VzUGFyc2VyKCkuZ2V0V1NETERlZmluaXRpb24od3NkbFVSSSkgIT0gbnVsbCkgewotICAgICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOyAgICAgCi0gICAgICBNYXAgc2VydmljZXMgPSBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpLmdldFdTRExEZWZpbml0aW9uKHdzZGxVUkkpLmdldFNlcnZpY2VzKCk7Ci0gICAgICBpZiAoc2VydmljZXMuaXNFbXB0eSgpKXsKLSAgICAgICAgaWYgKHRlc3RTZXJ2aWNlPT10cnVlKXsKLSAgICAgICAgICAgIHRlc3RTZXJ2aWNlID0gZmFsc2U7Ci0gICAgICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1dBUk5JTkdfTk9fU0VSVklDRV9FTEVNRU5UICk7Ci0gICAgICAgICAgICB0cnl7Ci0gICAgICAgICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0KHN0YXR1cyk7Ci0gICAgICAgICAgICB9Y2F0Y2goRXhjZXB0aW9uIGUpewotICAgICAgICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19XQVJOSU5HX05PX1NFUlZJQ0VfRUxFTUVOVCApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9ICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfTVNHX1NFTEVDVElPTl9NVVNUX0JFX1dTREwgKTsKLSAgICAgIGlmIChlbnYgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgfQotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9XU0RMU2VsZWN0aW9uVHJlZVdpZGdldC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1dTRExTZWxlY3Rpb25UcmVlV2lkZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4Y2MxNjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1dTRExTZWxlY3Rpb25UcmVlV2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDE4ICAgMTM2NzEyIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDcwMTMxICAgMTY4Nzg2IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCB3c2RsIHVybCBvbiB3ZWIgc2VydmljZSB3aXphcmQgcGFnZSAxIGlzIG5vdCByZWZsZWN0ZWQgaW4gYnJvd3NlIGRpYWxvZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSUxhYmVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JTGFiZWxQcm92aWRlckxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklUcmVlQ29udGVudFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU2VsZWN0aW9uQ2hhbmdlZEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVHJlZVZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuSW1hZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UcmVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlRW50aXR5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLQotCi0vKioKLSogVGhpcyB3aXphcmQgcGFnZSBhbGxvd3MgdGhlIHVzZXIgdG8gc2VsZWN0IHRoZSBXU0RMIFVSSSBmb3IgY29uc3VtcHRpb24KLSovCi1wdWJsaWMgY2xhc3MgV1NETFNlbGVjdGlvblRyZWVXaWRnZXQgZXh0ZW5kcyBTaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3IKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgcGx1Z2luSWRfID0gIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSI7Ci0KLSAgLypDT05URVhUX0lEIFBXV1MwMDAxIGZvciB0aGUgV1NETCBTZWxlY3Rpb24gUGFnZSovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUFdXU19QQUdFID0gIi5QV1dTMDAwMSI7Ci0KLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgcHJpdmF0ZSBTdHJpbmcgd2ViU2VydmljZVVSSTsKLSAgCi0gIHByaXZhdGUgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXI7Ci0gIHByaXZhdGUgVHJlZVZpZXdlciB0cmVlVmlld2VyXzsKLSAgcHJpdmF0ZSBUcmVlQ29udGVudFByb3ZpZGVyIHRyZWVDb250ZW50UHJvdmlkZXI7Ci0gIHByaXZhdGUgVHJlZSB0cmVlXzsKLSAgcHJpdmF0ZSBpbnQgcGFnZVdpZHRoXzsKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlRW50aXR5IGVudGl0eV87Ci0KLSAgLyoqCi0gICogRGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgKi8KLSAgcHVibGljIFdTRExTZWxlY3Rpb25UcmVlV2lkZ2V0KCkKLSAgewotICB9Ci0KLSAgcHVibGljIFdpZGdldERhdGFFdmVudHMgYWRkQ29udHJvbHMoIENvbXBvc2l0ZSBwYXJlbnQsIExpc3RlbmVyIHN0YXR1c0xpc3RlbmVyICkKLSAgewotICAJdGhpcy5zdGF0dXNMaXN0ZW5lciA9IHN0YXR1c0xpc3RlbmVyOwotICAgIHBhcmVudC5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV1dTX1BBR0UpOwotICAgIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAocGFyZW50LCBwbHVnaW5JZF8gKyBJTkZPUE9QX1BXV1NfUEFHRSk7Ci0KLSAgICBMYWJlbCB3c2RsTGFiZWwgPSBuZXcgTGFiZWwocGFyZW50LCBTV1QuV1JBUCk7Ci0gICAgd3NkbExhYmVsLnNldFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NFTEVDVF9XU0RMKTsKLSAgICB3c2RsTGFiZWwuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKSk7Ci0KLSAgICB0cmVlXyA9IG5ldyBUcmVlKHBhcmVudCwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgfCBTV1QuSF9TQ1JPTEwgfCBTV1QuVl9TQ1JPTEwpOwotICAgIEdyaWREYXRhIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfQk9USCk7Ci0gICAgZ2QuaGVpZ2h0SGludCA9IDIwMDsKLSAgICB0cmVlXy5zZXRMYXlvdXREYXRhKGdkKTsKLSAgICBwYWdlV2lkdGhfID0gdHJlZV8uZ2V0U2hlbGwoKS5nZXRTaXplKCkueDsKLSAgICB0cmVlVmlld2VyXyA9IG5ldyBUcmVlVmlld2VyKHRyZWVfKTsKLSAgICB0cmVlQ29udGVudFByb3ZpZGVyID0gbmV3IFRyZWVDb250ZW50UHJvdmlkZXIoKTsKLSAgICB0cmVlVmlld2VyXy5zZXRDb250ZW50UHJvdmlkZXIodHJlZUNvbnRlbnRQcm92aWRlcik7Ci0gICAgdHJlZVZpZXdlcl8uc2V0TGFiZWxQcm92aWRlcihuZXcgVHJlZUxhYmVsUHJvdmlkZXIoKSk7Ci0gICAgdHJlZVZpZXdlcl8uYWRkU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKAotICAgICAgbmV3IElTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIoKQotICAgICAgewotICAgICAgICBwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKFNlbGVjdGlvbkNoYW5nZWRFdmVudCBldmVudCkKLSAgICAgICAgewotICAgICAgICAJaGFuZGxlVHJlZVNlbGVjdGlvbkNoYW5nZWRFdmVudChldmVudCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICApOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgaGFuZGxlVHJlZVNlbGVjdGlvbkNoYW5nZWRFdmVudChTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgZXZlbnQpCi0gIHsKLSAgCXN0YXR1c0xpc3RlbmVyLmhhbmRsZUV2ZW50KG5ldyBFdmVudCgpKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgd2ViU2VydmljZXNQYXJzZXIuCi0gICAqLwotICBwdWJsaWMgV2ViU2VydmljZXNQYXJzZXIgZ2V0V2ViU2VydmljZXNQYXJzZXIoKQotICB7Ci0gIAlyZXR1cm4gd2ViU2VydmljZXNQYXJzZXI7Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSB3ZWJTZXJ2aWNlc1BhcnNlciBUaGUgd2ViU2VydmljZXNQYXJzZXIgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXIpCi0gIHsKLSAgCXRoaXMud2ViU2VydmljZXNQYXJzZXIgPSB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgCXRyZWVWaWV3ZXJfLnNldElucHV0KHRoaXMud2ViU2VydmljZXNQYXJzZXIpOwotICAJcmVmcmVzaFRyZWVWaWV3ZXIoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VVUkkoU3RyaW5nIHdzVVJJKQotICB7Ci0gIAl3ZWJTZXJ2aWNlVVJJID0gd3NVUkk7Ci0gIAlpZiAoIXRyZWVfLmlzRGlzcG9zZWQoKSkgewotICAJCXRyZWVDb250ZW50UHJvdmlkZXIuc2V0V2ViU2VydmljZVVSSSh3ZWJTZXJ2aWNlVVJJKTsKLSAgCQlyZWZyZXNoVHJlZVZpZXdlcigpOwotICAJfQotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVmcmVzaFRyZWVWaWV3ZXIoKQotICB7Ci0gIAlpZiAod2ViU2VydmljZXNQYXJzZXIgIT0gbnVsbCAmJiB3ZWJTZXJ2aWNlVVJJICE9IG51bGwpCi0gIAl7Ci0gIAkgIHRyZWVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgCSAgQ29udHJvbCBzaGVsbCA9IHRyZWVfLmdldFNoZWxsKCk7Ci0gIAkgIGlmICh0cmVlXy5nZXRTaXplKCkueCA+IHBhZ2VXaWR0aF8gfHwgc2hlbGwuZ2V0U2l6ZSgpLnggPiBwYWdlV2lkdGhfKQotICAJICB7Ci0gIAkgICAgdHJlZV8uc2V0U2l6ZShwYWdlV2lkdGhfLCB0cmVlXy5nZXRTaXplKCkueSk7Ci0gIAkgICAgc2hlbGwuc2V0U2l6ZShwYWdlV2lkdGhfLCBzaGVsbC5nZXRTaXplKCkueSk7Ci0gIAkgICAgc2hlbGwuY29tcHV0ZVNpemUoU1dULkRFRkFVTFQsIFNXVC5ERUZBVUxUKTsKLSAgCSAgICBzaGVsbC5yZWRyYXcoKTsKLSAgCSAgfQotICAJfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCkKLSAgewotICAgIHRyZWVfLnNldEVuYWJsZWQoZW5hYmxlZCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpCi0gIHsKLSAgICByZXR1cm4gdHJlZV8uaXNFbmFibGVkKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3NkbFVSSSgpCi0gIHsJICAKLQkgIAlpZiAoZW50aXR5XyAhPSBudWxsKQotCSAgCSAgcmV0dXJuIGVudGl0eV8uZ2V0VVJJKCk7Ci0JICAJZWxzZQotCSAgCSAgcmV0dXJuIHdlYlNlcnZpY2VVUkk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgV2ViU2VydmljZUVudGl0eSBnZXRTZWxlY3Rpb25Bc1dlYlNlcnZpY2VFbnRpdHkoKQotICB7Ci0gIAlpZiAodHJlZVZpZXdlcl8gIT0gbnVsbCkKLSAgCXsKLSAgICAgIElTZWxlY3Rpb24gc2VsID0gdHJlZVZpZXdlcl8uZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICBpZiAoIXNlbC5pc0VtcHR5KCkgJiYgKHNlbCBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSkKLSAgICAgIHsKLSAgICAgICAgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc3NlbCA9IChJU3RydWN0dXJlZFNlbGVjdGlvbilzZWw7Ci0gICAgICAgIE9iamVjdCBvYmplY3QgPSBzc2VsLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgV2ViU2VydmljZUVudGl0eSkKLSAgICAgICAgICByZXR1cm4gKFdlYlNlcnZpY2VFbnRpdHkpb2JqZWN0OwotICAgICAgfQotICAJfQotICAgIHJldHVybiBudWxsOyAgCQotICB9Ci0gICAgCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpCi0gIHsgICAgCi0JZW50aXR5XyA9IGdldFNlbGVjdGlvbkFzV2ViU2VydmljZUVudGl0eSgpOwotICAgIGlmIChlbnRpdHlfID09IG51bGwgfHwgZW50aXR5Xy5nZXRUeXBlKCkgIT0gV2ViU2VydmljZUVudGl0eS5UWVBFX1dTREwpCi0gICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX01TR19TRUxFQ1RJT05fTVVTVF9CRV9XU0RMICk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLQotICBwcml2YXRlIGNsYXNzIFRyZWVDb250ZW50UHJvdmlkZXIgaW1wbGVtZW50cyBJVHJlZUNvbnRlbnRQcm92aWRlcgotICB7Ci0gIAlwcml2YXRlIFN0cmluZyB3ZWJTZXJ2aWNlVVJJOwotCi0gICAgcHVibGljIHZvaWQgZGlzcG9zZSgpCi0gICAgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGlucHV0Q2hhbmdlZChWaWV3ZXIgdmlld2VyLCBPYmplY3Qgb2xkSW5wdXQsIE9iamVjdCBuZXdJbnB1dCkKLSAgICB7Ci0gICAgfQotCi0gICAgcHVibGljIE9iamVjdFtdIGdldEVsZW1lbnRzKE9iamVjdCBpbnB1dEVsZW1lbnQpCi0gICAgewotICAgICAgaWYgKGlucHV0RWxlbWVudCBpbnN0YW5jZW9mIFdlYlNlcnZpY2VzUGFyc2VyKQotICAgICAgewotICAgICAgCVdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlciA9IChXZWJTZXJ2aWNlc1BhcnNlcilpbnB1dEVsZW1lbnQ7Ci0gICAgICAgIE9iamVjdCB3c0VudGl0eSA9IHBhcnNlci5nZXRXZWJTZXJ2aWNlRW50aXR5QnlVUkkod2ViU2VydmljZVVSSSk7Ci0gICAgICAgIGlmICh3c0VudGl0eSAhPSBudWxsKQotICAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W10ge3dzRW50aXR5fTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBuZXcgT2JqZWN0WzBdOwotICAgIH0KLQotICAgIHB1YmxpYyBPYmplY3RbXSBnZXRDaGlsZHJlbihPYmplY3QgcGFyZW50RWxlbWVudCkKLSAgICB7Ci0gICAgICBpZiAocGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIFdlYlNlcnZpY2VFbnRpdHkpCi0gICAgICB7Ci0gICAgICAgIExpc3QgbGlzdCA9ICgoV2ViU2VydmljZUVudGl0eSlwYXJlbnRFbGVtZW50KS5nZXRDaGlsZHJlbigpOwotICAgICAgICBPYmplY3RbXSBvYmplY3RzID0gbmV3IE9iamVjdFtsaXN0LnNpemUoKV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0cy5sZW5ndGg7IGkrKykKLSAgICAgICAgICBvYmplY3RzW2ldID0gbGlzdC5nZXQoaSk7Ci0gICAgICAgIHJldHVybiBvYmplY3RzOwotICAgICAgfQotICAgICAgcmV0dXJuIG5ldyBPYmplY3RbMF07Ci0gICAgfQotCi0gICAgcHVibGljIE9iamVjdCBnZXRQYXJlbnQoT2JqZWN0IGVsZW1lbnQpCi0gICAgewotICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBXZWJTZXJ2aWNlRW50aXR5KQotICAgICAgICByZXR1cm4gKChXZWJTZXJ2aWNlRW50aXR5KWVsZW1lbnQpLmdldFBhcmVudCgpOwotICAgICAgcmV0dXJuIG5ldyBPYmplY3RbMF07Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaGFzQ2hpbGRyZW4oT2JqZWN0IGVsZW1lbnQpCi0gICAgewotICAgICAgcmV0dXJuIChnZXRDaGlsZHJlbihlbGVtZW50KS5sZW5ndGggPiAwKTsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZVVSSShTdHJpbmcgd3NVUkkpCi0gICAgewotICAgICAgd2ViU2VydmljZVVSSSA9IHdzVVJJOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgY2xhc3MgVHJlZUxhYmVsUHJvdmlkZXIgaW1wbGVtZW50cyBJTGFiZWxQcm92aWRlcgotICB7Ci0gICAgcHVibGljIEltYWdlIGdldEltYWdlKE9iamVjdCBlbGVtZW50KQotICAgIHsKLSAgICAgIHN3aXRjaCAoKChXZWJTZXJ2aWNlRW50aXR5KWVsZW1lbnQpLmdldFR5cGUoKSkKLSAgICAgIHsKLSAgICAgICAgY2FzZSBXZWJTZXJ2aWNlRW50aXR5LlRZUEVfSFRNTDoKLSAgICAgICAgICByZXR1cm4gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW1hZ2VEZXNjcmlwdG9yKCJpY29ucy93c2lsL2h0bWwuZ2lmIikuY3JlYXRlSW1hZ2UoKTsKLSAgICAgICAgY2FzZSBXZWJTZXJ2aWNlRW50aXR5LlRZUEVfV1NJTDoKLSAgICAgICAgICByZXR1cm4gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW1hZ2VEZXNjcmlwdG9yKCJpY29ucy93c2lsL3dzaWwuZ2lmIikuY3JlYXRlSW1hZ2UoKTsKLSAgICAgICAgY2FzZSBXZWJTZXJ2aWNlRW50aXR5LlRZUEVfV1NETDoKLSAgICAgICAgICByZXR1cm4gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW1hZ2VEZXNjcmlwdG9yKCJpY29ucy93c2lsL3dzZGwuZ2lmIikuY3JlYXRlSW1hZ2UoKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IGVsZW1lbnQpCi0gICAgewotICAgICAgcmV0dXJuICgoV2ViU2VydmljZUVudGl0eSllbGVtZW50KS5nZXRVUkkoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBhZGRMaXN0ZW5lcihJTGFiZWxQcm92aWRlckxpc3RlbmVyIGxpc3RlbmVyKQotICAgIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCByZW1vdmVMaXN0ZW5lcihJTGFiZWxQcm92aWRlckxpc3RlbmVyIGxpc3RlbmVyKQotICAgIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBpc0xhYmVsUHJvcGVydHkoT2JqZWN0IGVsZW1lbnQsIFN0cmluZyBwcm9wZXJ0eSkKLSAgICB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBkaXNwb3NlKCkKLSAgICB7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczOGU1ODAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL1dTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDExNiAgIDE1OTYxOCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgUHJvamVjdCBhbmQgRUFSIG5vdCBkZWZhdWx0ZWQgcHJvcGVybHkgd2hlbiB3aXphcmQgbGF1bmNoZWQgZnJvbSBKU1ItMTA5IFdlYiBzZXJ2aWNlcyBicmFuY2ggaW4gSjJFRSBQcm9qZWN0IEV4cGxvcmVyCi0gKiAyMDA3MDMyNyAgIDE3MjMzOSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzAxMjUgICAxNzEwNzEgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIENyZWF0ZSBwdWJsaWMgdXRpbGl0eSBtZXRob2QgZm9yIGNvcHlpbmcgV1NETCBmaWxlcwotICogMjAwNzA0MTAgICAxODE4Mjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMjIwICAgMjE5NTM3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrCi0gKiAyMDA4MDUwMSAgIDIyOTcyOCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgdXBwZXJjYXNlIC5XU0RMIGNhbm5vdCBiZSBmb3VuZCBieSB0aGUgV2ViIFNlcnZpY2UgQ2xpZW50IHdpemFyZAotICogMjAwODEyMDggICAyNTc2MTggbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBBZGQgTWVjaGFuaXNtIGZvciBBZG9wdGVycyB0byBtYXAgU2VydmljZXMgdG8gV1NETCBVUkxzCi0gKiAyMDA5MDMxMCAgIDI0MjQ0MCB5ZW5sdUBjYS5pYm0uY29tIC0gWWVuIEx1LCBQbHVnZ2FibGUgSUZpbGUgdG8gVVJJIENvbnZlcnRlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2NsaWVudC5TZXJ2aWNlUmVmOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRUFjdGlvbkFkYXB0ZXJGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmNvbnZlcnRlci5JSUZpbGUyVXJpQ29udmVydGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLnV0aWxzLkFkYXB0ZXJVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudXRpbC5Vbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzZmluZGVyLldTRExVUkxTdHJpbmdXcmFwcGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuU2VydmljZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsOwotCi1wdWJsaWMgY2xhc3MgV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb25fOwotICBwcml2YXRlIFN0cmluZyB1cmlfOwotICAKLSAgcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlVVJJKCkKLSAgewotCWlmICh1cmlfICE9IG51bGwpCi0JCXJldHVybiB1cmlfOwotCSAgCi0gICAgdXJpXyA9ICIiOwotICAgIAotICAJaWYgKHNlbGVjdGlvbl8gIT0gbnVsbCAmJiAhc2VsZWN0aW9uXy5pc0VtcHR5KCkpCi0gIAl7Ci0gIAkgIE9iamVjdCBmaXJzdFNlbCA9IHNlbGVjdGlvbl8uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gIAkgIGlmIChmaXJzdFNlbCBpbnN0YW5jZW9mIElGaWxlKQotICAJICB7Ci0gIAkgICAgSUZpbGUgaWZpbGUgPSAoSUZpbGUpZmlyc3RTZWw7Ci0gIAkgICAgU3RyaW5nIGV4dCA9IGlmaWxlLmdldEZpbGVFeHRlbnNpb24oKTsKLSAgCSAgICBpZiAoZXh0ICE9IG51bGwgJiYgKGV4dC5lcXVhbHNJZ25vcmVDYXNlKCJ3c2RsIikgfHwgZXh0LmVxdWFsc0lnbm9yZUNhc2UoIndzaWwiKSB8fCBleHQuZXF1YWxzSWdub3JlQ2FzZSgiaHRtbCIpKSkKLSAgCSAgICB7ICAJICAgIAotICAJICAgICAgSUlGaWxlMlVyaUNvbnZlcnRlciBjb252ZXJ0ZXIgPSBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldElGaWxlMlVyaUNvbnZlcnRlcigpOwotICAJICAgICAgYm9vbGVhbiBhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlID0gdHJ1ZTsKLSAgCSAgICAgIGlmIChjb252ZXJ0ZXIgIT0gbnVsbCkKLSAgCSAgICAgIHsKLSAgCSAgICAJICB1cmlfID0gY29udmVydGVyLmNvbnZlcnQoaWZpbGUpOwotICAJICAgIAkgIGlmICh1cmlfID09IG51bGwpCi0gIAkgICAgCQkgIGFsbG93QmFzZUNvbnZlcnNpb25PbkZhaWx1cmUgPSBjb252ZXJ0ZXIuYWxsb3dCYXNlQ29udmVyc2lvbk9uRmFpbHVyZSgpOwotICAJICAgIAkJICAKLSAgCSAgICAgIH0KLSAgCSAgICAgIGlmICgodXJpXyA9PSBudWxsIHx8IHVyaV8ubGVuZ3RoKCkgPT0gMCkgJiYgYWxsb3dCYXNlQ29udmVyc2lvbk9uRmFpbHVyZSkKLSAgCSAgICAgICAgdXJpXyA9IGlmaWxlLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKTsKLSAgCSAgICB9Ci0gIAkgIH0gCi0gIAkgIGVsc2UgaWYgKFBsYXRmb3JtLmdldEFkYXB0ZXJNYW5hZ2VyKCkuaGFzQWRhcHRlcihmaXJzdFNlbCwgV1NETFVSTFN0cmluZ1dyYXBwZXIuY2xhc3MuZ2V0TmFtZSgpKSkgewotCQlPYmplY3QgYWRhcHRlZE9iamVjdCA9IFBsYXRmb3JtLmdldEFkYXB0ZXJNYW5hZ2VyKCkubG9hZEFkYXB0ZXIoZmlyc3RTZWwsIFdTRExVUkxTdHJpbmdXcmFwcGVyLmNsYXNzLmdldE5hbWUoKSk7Ci0gIAkJV1NETFVSTFN0cmluZ1dyYXBwZXIgd3JhcHBlciA9IChXU0RMVVJMU3RyaW5nV3JhcHBlcilhZGFwdGVkT2JqZWN0OwotICAJCXVyaV8gPSB3cmFwcGVyLmdldFdTRExVUkxTdHJpbmcoKTsgIAkJCi0gIAkgIH0KLSAgCSAgZWxzZSBpZiAoZmlyc3RTZWwgaW5zdGFuY2VvZiBTZXJ2aWNlSW1wbCkKLSAgICAgIHsKLSAgICAgICAgU2VydmljZUltcGwgc2VydmljZUltcGwgPSAoU2VydmljZUltcGwpZmlyc3RTZWw7Ci0gICAgICAgIHVyaV8gPSBKMkVFQWN0aW9uQWRhcHRlckZhY3RvcnkuZ2V0V1NETFVSSShzZXJ2aWNlSW1wbCk7Ci0gICAgICB9IGVsc2UgaWYgKGZpcnN0U2VsIGluc3RhbmNlb2YgU2VydmljZVJlZikKLSAgICAgIHsKLSAgCSAgICBTZXJ2aWNlUmVmIHNlcnZpY2VSZWYgPSAoU2VydmljZVJlZilmaXJzdFNlbDsKLSAgICAgICAgdXJpXyA9IEoyRUVBY3Rpb25BZGFwdGVyRmFjdG9yeS5nZXRXU0RMVVJJKHNlcnZpY2VSZWYpOwotICAgICAgfSBlbHNlIGlmIChmaXJzdFNlbCBpbnN0YW5jZW9mIFdTRExSZXNvdXJjZUltcGwpCi0gIAkgIHsKLSAgCSAgICBXU0RMUmVzb3VyY2VJbXBsIHdzZGxSSSA9IChXU0RMUmVzb3VyY2VJbXBsKWZpcnN0U2VsOwotICAJICAgIHVyaV8gPSBKMkVFQWN0aW9uQWRhcHRlckZhY3RvcnkuZ2V0V1NETFVSSSh3c2RsUkkpOwotICAJICB9IGVsc2UgaWYgKGZpcnN0U2VsIGluc3RhbmNlb2YgU3RyaW5nKQotICAJICB7Ci0gIAkgICAgdXJpXyA9IChTdHJpbmcpZmlyc3RTZWw7Ci0gIAkgIH0gZWxzZSB7Ci0gIAkJU3RyaW5nIGFkYXB0ZWRVcmkgPSBBZGFwdGVyVXRpbHMuZ2V0QWRhcHRlZFdTREwoZmlyc3RTZWwpOwotICAJCWlmIChhZGFwdGVkVXJpICE9IG51bGwpIHsKLSAgCQkJdXJpXyA9IGFkYXB0ZWRVcmk7Ci0gIAkJfQotICAJICB9Ci0gIAkgIAotICAJICB1cmlfID0gVW5pdmVyc2FsUGF0aFRyYW5zZm9ybWVyLnRvUGF0aCh1cmlfKTsKLSAgCX0KLSAgICByZXR1cm4gdXJpXzsKLSAgfQotIAotICBwdWJsaWMgdm9pZCBzZXRJbml0aWFsU2VsZWN0aW9uKCBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24gKQotICB7Ci0gICAgc2VsZWN0aW9uXyA9IHNlbGVjdGlvbjsgICAKLSAgICB1cmlfID0gbnVsbDsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0R2VuV1NJTCgpCi0gIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3NpbFVSSSgpCi0gIHsKLSAgCVN0cmluZyB3c1VSSSA9IGdldFdlYlNlcnZpY2VVUkkoKTsKLSAgCWlmICh3c1VSSSAhPSBudWxsICYmIHdzVVJJLmxlbmd0aCgpID4gMCAmJiB3c1VSSS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCJ3c2RsIikpCi0gIAl7Ci0gICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKHdzVVJJLnN1YnN0cmluZygwLCB3c1VSSS5sZW5ndGgoKS00KSk7Ci0gICAgICBzYi5hcHBlbmQoIndzaWwiKTsKLSAgICAgIHJldHVybiBzYi50b1N0cmluZygpOwotICAJfQotICAgIHJldHVybiAiIjsKLSAgfQotICAKLSAgcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKQotICB7Ci0gIAlJUHJvamVjdCBwID0gZ2V0UHJvamVjdEZyb21Jbml0aWFsU2VsZWN0aW9uKHNlbGVjdGlvbl8pOwotICAJcmV0dXJuIHA7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29tcG9uZW50TmFtZSgpCi0gIHsKLSAgICBTdHJpbmcgY25hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbUluaXRpYWxTZWxlY3Rpb24oc2VsZWN0aW9uXyk7Ci0gICAgcmV0dXJuIGNuYW1lOwotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gaGFzUHJvdG9jb2woU3RyaW5nIHVybCkgewkgIAotICAgIHJldHVybiB1cmwuaW5kZXhPZigiOiIpICE9IC0xOwkgIAotICB9Ci0gIAotICBwcml2YXRlIElQcm9qZWN0IGdldFByb2plY3RGcm9tSW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pCi0gIHsKLSAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwgJiYgc2VsZWN0aW9uLnNpemUoKSA9PSAxKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBzZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAob2JqICE9IG51bGwpIAotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgeyAKLSAgICAgICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlRnJvbVNlbGVjdGlvbihvYmopOwotICAgICAgICAgIGlmIChyZXNvdXJjZT09bnVsbCkgewotICAgICAgICAgICAgU3RyaW5nIHVyaSA9IGdldFdlYlNlcnZpY2VVUkkoKTsKLSAgICAgICAgICAgIGlmIChoYXNQcm90b2NvbCh1cmkpKSByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZVV0aWxzLmdldFByb2plY3RPZihuZXcgUGF0aCh1cmkpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlVXRpbHMuZ2V0UHJvamVjdE9mKHJlc291cmNlLmdldEZ1bGxQYXRoKCkpOwotICAgICAgICB9IGNhdGNoKENvcmVFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9ICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldENvbXBvbmVudE5hbWVGcm9tSW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pCi0gIHsKLSAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwgJiYgc2VsZWN0aW9uLnNpemUoKSA9PSAxKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBzZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAob2JqICE9IG51bGwpIAotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgeyAKLSAgICAgICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlRnJvbVNlbGVjdGlvbihvYmopOwotICAgICAgICAgIElWaXJ0dWFsQ29tcG9uZW50IGNvbXA7Ci0gICAgICAgICAgaWYgKHJlc291cmNlPT1udWxsKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdXJpID0gZ2V0V2ViU2VydmljZVVSSSgpOwotICAgICAgICAgICAgaWYgKGhhc1Byb3RvY29sKHVyaSkpIHJldHVybiBudWxsOyAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjb21wID0gUmVzb3VyY2VVdGlscy5nZXRDb21wb25lbnRPZihuZXcgUGF0aCh1cmkpKSA7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBjb21wID0gUmVzb3VyY2VVdGlscy5nZXRDb21wb25lbnRPZihyZXNvdXJjZSk7Ci0gICAgICAgICAgaWYgKGNvbXAhPW51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbXAuZ2V0TmFtZSgpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaChDb3JlRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgaW5mbykgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbgotICB7Ci0JICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfSAgICAKLSAgICAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvV1NETFNlbGVjdGlvbldpZGdldFdyYXBwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9XU0RMU2VsZWN0aW9uV2lkZ2V0V3JhcHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmE5YTZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9XU0RMU2VsZWN0aW9uV2lkZ2V0V3JhcHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyMCAgIDEzNTkxMiBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuV1NETFNlbGVjdGlvbldpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuV1NETFNlbGVjdGlvbldyYXBwZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLQotcHVibGljIGNsYXNzIFdTRExTZWxlY3Rpb25XaWRnZXRXcmFwcGVyIGV4dGVuZHMgU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yCi17Ci0gIHByaXZhdGUgV1NETFNlbGVjdGlvbldpZGdldCB3c2RsU2VsZWN0aW9uV2lkZ2V0OwotICBwcml2YXRlIElQcm9qZWN0IHByb2plY3Q7Ci0gIHByaXZhdGUgU3RyaW5nIGNvbXBvbmVudE5hbWU7Ci0gIAotICBwdWJsaWMgV1NETFNlbGVjdGlvbldpZGdldFdyYXBwZXIoKQotICB7Ci0JICB3c2RsU2VsZWN0aW9uV2lkZ2V0ID0gbmV3IFdTRExTZWxlY3Rpb25XaWRnZXQoKTsKLSAgfQotICAKLSAgcHVibGljIFdpZGdldERhdGFFdmVudHMgYWRkQ29udHJvbHMoQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIpCi0gIHsgICAgCi0gICAgd3NkbFNlbGVjdGlvbldpZGdldC5hZGRDb250cm9scyhwYXJlbnQsIHN0YXR1c0xpc3RlbmVyKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAKLSAgcHVibGljIElTdGF0dXMgZ2V0U3RhdHVzKCkKLSAgewotICAgIHJldHVybiB3c2RsU2VsZWN0aW9uV2lkZ2V0LmdldFN0YXR1cygpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlVVJJKFN0cmluZyB3c1VyaSkKLSAgewotICAgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbDsKLSAgICBpZiAod3NVcmkgIT0gbnVsbCkKLSAgICAgIHNlbCA9IG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKHdzVXJpKTsKLSAgICBlbHNlCi0gICAgICBzZWwgPSBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbigpOwotICAgIHdzZGxTZWxlY3Rpb25XaWRnZXQuc2V0SW5pdGlhbFNlbGVjdGlvbihzZWwpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFdlYlNlcnZpY2VVUkkoKQotICB7Ci0gICAgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsICAgID0gd3NkbFNlbGVjdGlvbldpZGdldC5nZXRPYmplY3RTZWxlY3Rpb24oKTsKLSAgICBPYmplY3QgICAgICAgICAgICAgICBvYmplY3QgPSBzZWwuZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgU3RyaW5nICAgICAgICAgICAgICAgcmVzdWx0ID0gbnVsbDsKLSAgICAKLSAgICBpZiAob2JqZWN0ICE9IG51bGwgKQotICAgIHsKLSAgICAgIGlmKCBvYmplY3QgaW5zdGFuY2VvZiBXU0RMU2VsZWN0aW9uV3JhcHBlciApCi0gICAgICB7ICAgIAotICAgICAgICAvLyBHZXQgYXQgdGhlIGlubmVyIHN0cnVjdHVyZWQgc2VsZWN0aW9uIG9iamVjdC4KLSAgICAgICAgV1NETFNlbGVjdGlvbldyYXBwZXIgd3JhcHBlciAgICAgICAgPSAoV1NETFNlbGVjdGlvbldyYXBwZXIpb2JqZWN0OwotICAgICAgICBJU3RydWN0dXJlZFNlbGVjdGlvbiBpbm5lclNlbGVjdGlvbiA9IHdyYXBwZXIud3NkbFNlbGVjdGlvbjsKLSAgICAgICAgT2JqZWN0ICAgICAgICAgICAgICAgaW5uZXJPYmplY3QgICAgPSBpbm5lclNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKTsKLSAgICAgICAgCi0gICAgICAgIHJlc3VsdCA9IGlubmVyT2JqZWN0ID09IG51bGwgPyBudWxsIDogaW5uZXJPYmplY3QudG9TdHJpbmcoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gb2JqZWN0LnRvU3RyaW5nKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3NkbFVSSSgpCi0gIHsKLSAgCXJldHVybiBnZXRXZWJTZXJ2aWNlVVJJKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpCi0gIHsKLSAgICByZXR1cm4gd3NkbFNlbGVjdGlvbldpZGdldC5nZXRXZWJTZXJ2aWNlc1BhcnNlcigpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KElQcm9qZWN0IHByb2plY3QpCi0gIHsKLSAgCXRoaXMucHJvamVjdCA9IHByb2plY3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRQcm9qZWN0KCkKLSAgewotICAJSVByb2plY3QgcCA9IHdzZGxTZWxlY3Rpb25XaWRnZXQuZ2V0UHJvamVjdCgpOwotICAJaWYgKHA9PW51bGwpCi0gIAl7Ci0gIAkgIHJldHVybiBwcm9qZWN0OwotICAJfQotICAJZWxzZQotICAJICByZXR1cm4gcDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29tcG9uZW50TmFtZSgpCi0gIHsKLSAgICBTdHJpbmcgY25hbWUgPSB3c2RsU2VsZWN0aW9uV2lkZ2V0LmdldENvbXBvbmVudE5hbWUoKTsKLSAgICBpZiAoY25hbWU9PW51bGwpCi0gICAgewotICAgICAgcmV0dXJuIGNvbXBvbmVudE5hbWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBjbmFtZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENvbXBvbmVudE5hbWUoU3RyaW5nIGNvbXBvbmVudE5hbWUpCi0gIHsKLSAgICB0aGlzLmNvbXBvbmVudE5hbWUgPSBjb21wb25lbnROYW1lOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldE9iamVjdFNlbGVjdGlvbkRpc3BsYXlhYmxlU3RyaW5nKCkgewotCSAgaWYgKHdzZGxTZWxlY3Rpb25XaWRnZXQgIT0gbnVsbCkKLQkgIHsKLQkJICByZXR1cm4gd3NkbFNlbGVjdGlvbldpZGdldC5nZXRPYmplY3RTZWxlY3Rpb25EaXNwbGF5YWJsZVN0cmluZygpOyAgCi0JICB9Ci0JICBlbHNlIHJldHVybiAiIjsgCi0gIH0KLSAgCi0gIHB1YmxpYyBJU3RydWN0dXJlZFNlbGVjdGlvbiBnZXRPYmplY3RTZWxlY3Rpb24oKSB7Ci0JICByZXR1cm4gd3NkbFNlbGVjdGlvbldpZGdldC5nZXRPYmplY3RTZWxlY3Rpb24oKTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoU3RyaW5nIHMpCi0gIHsKLQkgIHJldHVybiB3c2RsU2VsZWN0aW9uV2lkZ2V0LnZhbGlkYXRlKHMpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvV2ViU2VydmljZUNsaWVudFR5cGVXaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9XZWJTZXJ2aWNlQ2xpZW50VHlwZVdpZGdldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODVmNGM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9XZWJTZXJ2aWNlQ2xpZW50VHlwZVdpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA1NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MDcgICAxMzU0NDMgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA0MTAgICAxMzU0NDEgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA0MTAgICAxMzYwMzAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNDExICAgMTM2MTY3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDQxNyAgIDEzNjM5MCBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDQxMyAgIDEzNTU4MSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDIwICAgMTM2MTU4IHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MjAgICAxMzY3MDUgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQyMSAgIDEzNjc2MSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDI0ICAgMTM4MDUyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDQyNSAgIDEzNzgzMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDI2ICAgMTM3NjIyIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNDI3ICAgMTM4MDU4IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNTA0ICAgMTM4MDM1IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDYwNyAgIDE0NDgyNiBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDYwNyAgIDE0NDA0OSBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDYxNCAgIDE0NjI3MCBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDcxNyAgIDE1MDU3NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICogMjAwNjA3MjYgICAxNTA4NjUgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MDgxNyAgIDE0MDAxNyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgbG9uZ2VyIHByb2plY3Qgb3Igc2VydmVyL3J1bnRpbWUgc3RyaW5ncyBkbyBub3QgcmVzaXplIHdpemFyZAotICogMjAwNjA4MjkgICAxNTU0NDEgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIHdlYiBzZXJ2aWNlIHdpemFyZCBoYW5ncyBkdXJpbmcgcmVzaXplCi0gKiAyMDA3MDEyNiAgIDEzODQ4NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzExMzAgICAyMDM4MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMjA1ICAgMTcwMTQxIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDMxMiAgIDE0NzQ0MiB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZyBIYQotICogMjAwODAzMTEgICAyMjIxMDMgdHJ1bmdoYUBjYS5pYm0uY29tIC0gVHJ1bmcsIENoYW5naW5nIHNlcnZpY2Ugc2NhbGUgZG9lc24ndCB1cGRhdGUgY29tcGxldGVseSBub24tVUkgcGFydCBvZiBjbGllbnQgc2NhbGUKLSAqIDIwMDgwMzI3ICAgMjI0NDUyIHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nIEhhCi0gKiAyMDA4MDQxNiAgIDIxNTA4NCBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA5MDEyMSAgIDI2MTczMCB6aGFuZ0BjYS5pYm0uY29tIC0gQWxsYW4gWmhhbmcsIFdlYlNlcnZpY2UgY2xpZW50IHJ1bnRpbWUgaWQgcmV0dXJuIG51bGwKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0czsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkRlZmF1bHRpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLlZhbGlkYXRpb25VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnJ1bnRpbWUuQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnJ1bnRpbWUuUHJvamVjdFNlbGVjdGlvbldpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLlJ1bnRpbWVTZXJ2ZXJTZWxlY3Rpb25EaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLkxhYmVsc0FuZElkczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLlVJVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2libGVBZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2libGVDb250cm9sQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmxlQ29udHJvbEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2libGVFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLkNvbnRyb2xFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLkNvbnRyb2xMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlJlY3RhbmdsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TY2FsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuZm9ybXMuSHlwZXJsaW5rR3JvdXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuZm9ybXMuSHlwZXJsaW5rU2V0dGluZ3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuZm9ybXMuZXZlbnRzLkh5cGVybGlua0V2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmZvcm1zLmV2ZW50cy5JSHlwZXJsaW5rTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuZm9ybXMud2lkZ2V0cy5IeXBlcmxpbms7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuUGFnZUluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLQotCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZUNsaWVudFR5cGVXaWRnZXQgZXh0ZW5kcyBTaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3IgaW1wbGVtZW50cyBJUGFja2FibGUKLXsgICAgCi0JIC8vIElORk9QT1BTCSAKLQkgLyogQ09OVEVYVF9JRCBXU1dTQ0VOMDAyMiBmb3IgdGhlIFNlcnZlciBoeXBlcmxpbmsgb2YgdGhlIFNjZW5hcmlvIFBhZ2UgKi8KLQkgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9XU1dTQ0VOX0hZUEVSTElOS19TRVJWRVIgPSAiV1NXU0NFTjAwMjIiOwotCSAvKiBDT05URVhUX0lEIFdTV1NDRU4wMDIzIGZvciB0aGUgUnVudGltZSBoeXBlcmxpbmsgb2YgdGhlIFNjZW5hcmlvIFBhZ2UgKi8KLQkgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9XU1dTQ0VOX0hZUEVSTElOS19SVU5USU1FID0gIldTV1NDRU4wMDIzIjsKLQkgLyogQ09OVEVYVF9JRCBXU1dTQ0VOMDAyNCBmb3IgdGhlUHJvamVjdHMgaHlwZXJsaW5rIG9mIHRoZSBTY2VuYXJpbyBQYWdlICovCi0gICAgIHByaXZhdGUgU3RyaW5nIElORk9QT1BfV1NXU0NFTl9IWVBFUkxJTktfUFJPSkVDVFMgID0gIldTV1NDRU4wMDI0IjsKLQkgLyogQ09OVEVYVF9JRCBXU1dTQ0VOMDAyNSBmb3IgdGhlQ2xpZW50IFR5cGUgY29tYm8gYm94IG9mIHRoZSBTY2VuYXJpbyBQYWdlICovCi0JIHByaXZhdGUgU3RyaW5nIElORk9QT1BfV1NXU0NFTl9DT01CT19DTElFTlRUWVBFID0gIldTV1NDRU4wMDI1IjsKLQkgLyogQ09OVEVYVF9JRCBXU1dTQ0VOMDAyNiBmb3IgdGhlQ2xpZW50IFNsaWRlciBvZiB0aGUgU2NlbmFyaW8gUGFnZSAqLwotCSBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1dTV1NDRU5fU0NBTEVfQ0xJRU5UID0gIldTV1NDRU4wMDI2IjsKLQkKLSAgcHJpdmF0ZSBTdHJpbmcgR1JBUEhJQ19DTElFTlRfMD0iaWNvbnMvY2xpZW50X3Rlc3QuanBnIjsgIC8vJE5PTi1OTFMtTiQKLSAgcHJpdmF0ZSBTdHJpbmcgR1JBUEhJQ19DTElFTlRfMT0iaWNvbnMvY2xpZW50X3J1bi5qcGciOyAgIC8vJE5PTi1OTFMtTiQKLSAgcHJpdmF0ZSBTdHJpbmcgR1JBUEhJQ19DTElFTlRfMj0iaWNvbnMvY2xpZW50X2luc3RhbGwuanBnIjsgLy8kTk9OLU5MUy1OJAotICBwcml2YXRlIFN0cmluZyBHUkFQSElDX0NMSUVOVF8zPSJpY29ucy9jbGllbnRfZGVwbG95LmpwZyI7IC8vJE5PTi1OTFMtTiQKLSAgcHJpdmF0ZSBTdHJpbmcgR1JBUEhJQ19DTElFTlRfND0iaWNvbnMvY2xpZW50X2Fzc2VtYmxlLmpwZyI7IC8vJE5PTi1OTFMtTiQKLSAgcHJpdmF0ZSBTdHJpbmcgR1JBUEhJQ19DTElFTlRfNT0iaWNvbnMvY2xpZW50X2RldmVsb3AuanBnIjsgIC8vJE5PTi1OTFMtTiQKLSAgcHJpdmF0ZSBTdHJpbmcgR1JBUEhJQ19DTElFTlRfNj0iaWNvbnMvY2xpZW50X25vbmUuanBnIjsgIC8vJE5PTi1OTFMtTiQKLSAgCi0gIHByaXZhdGUgU3RyaW5nIElDT05fU0NBTEVfQkdfMD0iaWNvbnMvc2NhbGUwX2Jncm91bmQuanBnIjsgIC8vJE5PTi1OTFMtTiQKLSAgcHJpdmF0ZSBTdHJpbmcgSUNPTl9TQ0FMRV9CR18xPSJpY29ucy9zY2FsZTFfYmdyb3VuZC5qcGciOyAgLy8kTk9OLU5MUy1OJAotICBwcml2YXRlIFN0cmluZyBJQ09OX1NDQUxFX0JHXzI9Imljb25zL3NjYWxlMl9iZ3JvdW5kLmpwZyI7ICAvLyROT04tTkxTLU4kCi0gIHByaXZhdGUgU3RyaW5nIElDT05fU0NBTEVfQkdfMz0iaWNvbnMvc2NhbGUzX2Jncm91bmQuanBnIjsgIC8vJE5PTi1OTFMtTiQKLSAgcHJpdmF0ZSBTdHJpbmcgSUNPTl9TQ0FMRV9CR180PSJpY29ucy9zY2FsZTRfYmdyb3VuZC5qcGciOyAgLy8kTk9OLU5MUy1OJAotICBwcml2YXRlIFN0cmluZyBJQ09OX1NDQUxFX0JHXzU9Imljb25zL3NjYWxlNV9iZ3JvdW5kLmpwZyI7ICAvLyROT04tTkxTLU4kCi0gIHByaXZhdGUgU3RyaW5nIElDT05fU0NBTEVfQkdfNj0iaWNvbnMvc2NhbGU2X2Jncm91bmQuanBnIjsgIC8vJE5PTi1OTFMtTiQKLSAgCi0gIHByaXZhdGUgQ29tcG9zaXRlIGNsaWVudENvbXBvc2l0ZV87Ci0gIHByaXZhdGUgQ29tcG9zaXRlIGhDb21wQ2xpZW50XzsKLSAgcHJpdmF0ZSBTaGVsbCBzaGVsbF87Ci0gIHByaXZhdGUgQ29tYm8gIGNsaWVudFR5cGVDb21ib187ICAKLSAgcHJpdmF0ZSBTY2FsZSBjbGllbnRTY2FsZV87ICAKLSAgcHJpdmF0ZSBMYWJlbCB0b3BvbG9neVNwb3RfOwotICBwcml2YXRlIExhYmVsIGNsaWVudERldGFpbHNMYWJlbF87ICAKLSAgcHJpdmF0ZSBIeXBlcmxpbmsgaExpbmtDbGllbnRSdW50aW1lXzsKLSAgcHJpdmF0ZSBIeXBlcmxpbmsgaExpbmtDbGllbnRTZXJ2ZXJfOwotICBwcml2YXRlIEh5cGVybGluayBoTGlua0NsaWVudFByb2plY3RfOwotICBwcml2YXRlIEh5cGVybGluayBoTGlua0NsaWVudEVBUl87Ci0gIHByaXZhdGUgUHJvamVjdFNlbGVjdGlvbkRpYWxvZyBwcm9qZWN0RGlhbG9nXzsKLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBkZXZlbG9wQ2xpZW50XzsKLSAgcHJpdmF0ZSBib29sZWFuIGFzc2VtYmxlQ2xpZW50XzsKLSAgcHJpdmF0ZSBib29sZWFuIGRlcGxveUNsaWVudF87Ci0JCi0gIHByaXZhdGUgQm9vbGVhbiB0ZXN0Q2xpZW50XzsKLSAgcHJpdmF0ZSBCb29sZWFuIGluc3RhbGxDbGllbnRfOwotICBwcml2YXRlIEJvb2xlYW4gc3RhcnRDbGllbnRfOyAgICAKLSAgICAKLSAgcHJpdmF0ZSBUeXBlUnVudGltZVNlcnZlciBpZHNfOwotICBwcml2YXRlIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIG9iamVjdFNlbGVjdGlvbl87Ci0gIHByaXZhdGUgYm9vbGVhbiBlbmFibGVQcm94eV87ICAvL3NlcnZpY2Ugc2NhbGUgaXMgc2V0IHRvIGEgbGV2ZWwgdGhhdCB0aGUgY2xpZW50IHNjYWxlIGNhbiBiZSBlbmFibGVkCi0gIHByaXZhdGUgYm9vbGVhbiBjbGllbnRPbmx5Xz1mYWxzZTsKLSAgcHJpdmF0ZSBpbnQgY2xpZW50U2NhbGVTZXR0aW5nXzsKLSAgcHJpdmF0ZSBJbWFnZVJlZ2lzdHJ5IGltYWdlUmVnXzsKLSAgcHJpdmF0ZSBJUHJvamVjdCBwcm9qZWN0XzsKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciBwYXJzZXJfOwotICBwcml2YXRlIFN0cmluZyBlYXJQcm9qZWN0TmFtZV87Ci0gIHByaXZhdGUgU3RyaW5nIHByb2plY3ROYW1lXzsKLSAgcHJpdmF0ZSBib29sZWFuIG5lZWRFYXJfOwotICBwcml2YXRlIFN0cmluZyBjbGllbnRDb21wb25lbnRUeXBlXzsKLSAgCi0gIHByaXZhdGUgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXJfOwotICBwcml2YXRlIGludCB2YWxpZGF0aW9uU3RhdGVfOwotICAKLSAgcHJpdmF0ZSBTY2FsZVNlbGVjdGlvbkxpc3RlbmVyIHNjYWxlU2VsZWN0aW9uTGlzdGVuZXIgPSBuZXcgU2NhbGVTZWxlY3Rpb25MaXN0ZW5lcigpOwotICAKLSAgcHJpdmF0ZSBTdHJpbmcgQ0xJRU5UX1JVTlRJTUVfUFJFRklYID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1JVTlRJTUVTX0xJU1QgOyAKLSAgcHJpdmF0ZSBTdHJpbmcgQ0xJRU5UX1NFUlZFUl9QUkVGSVggPSAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NFUlZFUlNfTElTVDsKLSAgcHJpdmF0ZSBTdHJpbmcgQ0xJRU5UX1BST0pFQ1RfUFJFRklYID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0NMSUVOVF9QUk9KRUNUOwotICBwcml2YXRlIFN0cmluZyBDTElFTlRfRUFSX1BSRUZJWCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9DTElFTlRfRUFSX1BST0pFQ1Q7Ci0gIAotICBwcml2YXRlIENvbXBvc2l0ZSBjbGllbnRHcm91cENvbXBvc2l0ZV8gOwotCQotICBwcml2YXRlIFVJVXRpbHMgdXRpbHNfID0gbmV3IFVJVXRpbHMoIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSIpOwotICBwcml2YXRlIElQYWNrYWJsZSBwYWNrYWJsZV8gPSBudWxsOyAgCi0gIHByaXZhdGUgTGFiZWxzQW5kSWRzIGxhYmVsSWRzXzsKLSAgCi0gIHB1YmxpYyBXZWJTZXJ2aWNlQ2xpZW50VHlwZVdpZGdldChib29sZWFuIGNsaWVudE9ubHkpIHsKLQkgICAgY2xpZW50T25seV8gPSBjbGllbnRPbmx5OwotCQlpbml0SW1hZ2VSZWdpc3RyeSgpOwotCQl2YWxpZGF0aW9uU3RhdGVfID0gVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX0FMTDsKLQl9Ci0gICAKLSAgICAvKioKLSAgICAgKiBHaXZlIHRoaXMgd2lkZ2V0IGEgaGFuZGxlIHRvIGFuIElQYWNrYWJsZSBpbnN0YW5jZSwgd2hpY2ggd2lsbCBhbHNvIGJlCi0gICAgICogcGFja2VkIHdoZW4gdGhpcyB3aWRnZXQncyBwYWNrSXQoKSBpcyBjYWxsZWQuCi0gICAgICogCi0gICAgICogQHBhcmFtIHBhY2thYmxlIFRoZSBJUGFja2FibGUgaW5zdGFuY2UuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgc2V0UGFja2FibGUoSVBhY2thYmxlIHBhY2thYmxlKSB7Ci0gICAgCXBhY2thYmxlXyA9IHBhY2thYmxlOwotICAgIH0KLSAgCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuSVBhY2thYmxlI3BhY2tJdCgpCi0JICovCi0JcHVibGljIHZvaWQgcGFja0l0KCkgewotCQljbGllbnRHcm91cENvbXBvc2l0ZV8ucGFjayh0cnVlKTsJCQotCQl1dGlsc18uaG9yaXpvbnRhbFJlc2l6ZShjbGllbnRHcm91cENvbXBvc2l0ZV8uZ2V0U2hlbGwoKSwgY2xpZW50R3JvdXBDb21wb3NpdGVfLCBVSVV0aWxzLkRFRkFVTFRfUEFERElORyk7Ci0JCWlmICghY2xpZW50T25seV8gJiYgcGFja2FibGVfICE9IG51bGwpCi0JCQlwYWNrYWJsZV8ucGFja0l0KCk7Ci0JfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yI2FkZENvbnRyb2xzKG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZSwgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXIpCi0gICAqLwotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyggQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIpCi0gIHsKLSAgICBzdGF0dXNMaXN0ZW5lcl8gPSBzdGF0dXNMaXN0ZW5lcjsKLSAgICBDb21wb3NpdGUgY2xpZW50VHlwZUNvbXBvc2l0ZSA9IG5ldyBDb21wb3NpdGUocGFyZW50LCBTV1QuTk9ORSk7Ci0JR3JpZExheW91dCBjY2xheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0JY2NsYXlvdXQubnVtQ29sdW1ucyA9IDI7Ci0JY2NsYXlvdXQubWFyZ2luVG9wPTM7Ci0JY2xpZW50VHlwZUNvbXBvc2l0ZS5zZXRMYXlvdXQoIGNjbGF5b3V0ICk7Ci0gICAgR3JpZERhdGEgY2NHcmlkRGF0YSA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwpOyAKLSAgICBjbGllbnRUeXBlQ29tcG9zaXRlLnNldExheW91dERhdGEoY2NHcmlkRGF0YSk7Ci0gICAgCi0gICAgaW50IGNvbWJvU3R5bGUgPSBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8IFNXVC5SRUFEX09OTFk7Ci0gICAgY2xpZW50VHlwZUNvbWJvXyA9IHV0aWxzXy5jcmVhdGVDb21ibyggY2xpZW50VHlwZUNvbXBvc2l0ZSwgCi0gICAgCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfV0VCU0VSVklDRUNMSUVOVFRZUEUsCi0gICAgCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV1BSX0NPTUJPX0NMSUVOVFRZUEUsIAotICAgIAkJSU5GT1BPUF9XU1dTQ0VOX0NPTUJPX0NMSUVOVFRZUEUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYm9TdHlsZSApOwotICAgIEdyaWREYXRhIGNvbWJvR3JpZERhdGEgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMKTsKLSAgICBjbGllbnRUeXBlQ29tYm9fLnNldExheW91dERhdGEoY29tYm9HcmlkRGF0YSk7Ci0JY2xpZW50VHlwZUNvbWJvXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uTGlzdGVuZXIoKSB7Ci0JCQlwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQkJfQotCi0JCQlwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7Ci0JCQkJU3RyaW5nIG9sZFR5cGVJZCA9IGlkc18uZ2V0VHlwZUlkKCk7Ci0JCQkJaW50IGN1cnJlbnRTZWxlY3Rpb25JZHggPSBjbGllbnRUeXBlQ29tYm9fLmdldFNlbGVjdGlvbkluZGV4KCk7Ci0JCQkJU3RyaW5nIGN1cnJlbnRUeXBlSWQgPSBsYWJlbElkc18uZ2V0SWRzXygpW2N1cnJlbnRTZWxlY3Rpb25JZHhdOwotCQkJCWlmICghb2xkVHlwZUlkLmVxdWFscyhjdXJyZW50VHlwZUlkKSkgewkJCi0JCQkJCS8vIGhhbmRsZSBjaGFuZ2luZyBjbGllbnQgdHlwZQotCQkJCQlpZHNfLnNldFR5cGVJZChjdXJyZW50VHlwZUlkKTsKLQkJCQkJcmVmcmVzaFNlcnZlclJ1bnRpbWVTZWxlY3Rpb24oKTsKLQkJCQl9Ci0JCQkJdmFsaWRhdGlvblN0YXRlXyA9IFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9BTEw7Ci0JCQkJc3RhdHVzTGlzdGVuZXJfLmhhbmRsZUV2ZW50KG51bGwpOwotCQkJfQotCi0JCX0pOyAgICAKLSAgICAKLSAgICBjbGllbnRHcm91cENvbXBvc2l0ZV8gPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOyAgICAKLQlHcmlkTGF5b3V0IGdjbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoKTsKLQlnY2xheW91dC5udW1Db2x1bW5zID0gMjsKLQlnY2xheW91dC5ob3Jpem9udGFsU3BhY2luZz0wOwkJCi0JZ2NsYXlvdXQubWFyZ2luSGVpZ2h0PTA7CQkKLQlnY2xheW91dC5tYXJnaW5Cb3R0b209NTsKLQljbGllbnRHcm91cENvbXBvc2l0ZV8uc2V0TGF5b3V0KCBnY2xheW91dCApOwotICAgIEdyaWREYXRhIGdjR3JpZERhdGEgPSBuZXcgR3JpZERhdGEoU1dULkJFR0lOTklORywgU1dULkJFR0lOTklORywgdHJ1ZSwgdHJ1ZSk7IAotICAgIGNsaWVudEdyb3VwQ29tcG9zaXRlXy5zZXRMYXlvdXREYXRhKGdjR3JpZERhdGEpOwotICAgIAotICAgIGNsaWVudEdyb3VwQ29tcG9zaXRlXy5hZGRDb250cm9sTGlzdGVuZXIobmV3IENvbnRyb2xMaXN0ZW5lcigpCi0JewotCQlwdWJsaWMgdm9pZCBjb250cm9sTW92ZWQoQ29udHJvbEV2ZW50IGUpIHsKLQkJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKLQkJCQotCQl9Ci0JCXB1YmxpYyB2b2lkIGNvbnRyb2xSZXNpemVkKENvbnRyb2xFdmVudCBlKSB7Ci0JCQljbGllbnRHcm91cENvbXBvc2l0ZV8ucGFjayh0cnVlKTsKLQkJfQotCX0pOwotICAgIAotICAgICAgIAotCWNsaWVudENvbXBvc2l0ZV8gPSAgbmV3IENvbXBvc2l0ZShjbGllbnRHcm91cENvbXBvc2l0ZV8sIFNXVC5OT05FKTsKLQlHcmlkTGF5b3V0IGdyaWRsYXlvdXQgICA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgZ3JpZGxheW91dC5udW1Db2x1bW5zICAgPSAyOwotICAgIGdyaWRsYXlvdXQuaG9yaXpvbnRhbFNwYWNpbmc9MDsKLSAgICBncmlkbGF5b3V0Lm1hcmdpbkhlaWdodD0wOwotICAgIGNsaWVudENvbXBvc2l0ZV8uc2V0TGF5b3V0KCBncmlkbGF5b3V0ICk7Ci0gICAgR3JpZERhdGEgc2NHcmlkRGF0YSA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwpOwotICAgIGNsaWVudENvbXBvc2l0ZV8uc2V0TGF5b3V0RGF0YShzY0dyaWREYXRhKTsKLSAgICAKLSAgICBjbGllbnRTY2FsZV8gPSBuZXcgU2NhbGUoY2xpZW50Q29tcG9zaXRlXyAsIFNXVC5WRVJUSUNBTCB8IFNXVC5CT1JERVIpOwkJCi0JdXRpbHNfLmNyZWF0ZUluZm9Qb3AoY2xpZW50U2NhbGVfLCBJTkZPUE9QX1dTV1NDRU5fU0NBTEVfQ0xJRU5UKTsJCi0JY2xpZW50U2NhbGVfLnNldE1pbmltdW0oMCk7Ci0JY2xpZW50U2NhbGVfLnNldE1heGltdW0oNik7Ci0JY2xpZW50U2NhbGVfLnNldEluY3JlbWVudCgxKTsKLQljbGllbnRTY2FsZV8uc2V0UGFnZUluY3JlbWVudCgxKTsKLQljbGllbnRTY2FsZV8uYWRkU2VsZWN0aW9uTGlzdGVuZXIoc2NhbGVTZWxlY3Rpb25MaXN0ZW5lcik7CQkKLQlzZXRDbGllbnRTY2FsZShnZXRDbGllbnRHZW5lcmF0aW9uKCkpOwotCWNsaWVudFNjYWxlXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX0NMSUVOVCk7Ci0JCi0JQWNjZXNzaWJsZSBhY2Nlc3NpYmxlU2NhbGUgPSBjbGllbnRTY2FsZV8uZ2V0QWNjZXNzaWJsZSgpOwotCWFjY2Vzc2libGVTY2FsZS5hZGRBY2Nlc3NpYmxlTGlzdGVuZXIobmV3IEFjY2Vzc2libGVBZGFwdGVyKCl7Ci0JCS8vIHJldHVybiBhIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB3aGF0IHRvIGRvIHdpdGggdGhlIHNsaWRlcgotCQkvLyAgdGhpcyBpcyByZWFkIGJ5IHRoZSBzY3JlZW4gcmVhZGVyIHdoZW4gdGhlIHNsaWRlciBmaXJzdCBnZXRzIGZvY3VzCi0JCXB1YmxpYyB2b2lkIGdldE5hbWUoQWNjZXNzaWJsZUV2ZW50IGUpIHsKLQkJCWUucmVzdWx0ID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9DTElFTlQ7CQkJCi0JCX0JCQkKLQl9KTsKLQlhY2Nlc3NpYmxlU2NhbGUuYWRkQWNjZXNzaWJsZUNvbnRyb2xMaXN0ZW5lcihuZXcgQWNjZXNzaWJsZUNvbnRyb2xBZGFwdGVyKCl7Ci0JCS8vIHJldHVybiBhIG1lYW5pbmdmdWwgc3RyaW5nIHdoZW4gdGhlIHNjcmVlbiByZWFkZXIKLQkJLy8gYXR0ZW1wdHMgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzZXJ2aWNlIHNjYWxlCi0JCXB1YmxpYyB2b2lkIGdldFZhbHVlKEFjY2Vzc2libGVDb250cm9sRXZlbnQgZSkgewotCQkJaW50IHNlbGVjdGlvbiA9IGNsaWVudFNjYWxlXy5nZXRTZWxlY3Rpb24oKTsKLQkJCXN3aXRjaCAoc2VsZWN0aW9uKSB7Ci0JCQljYXNlIDA6Ci0JCQkJZS5yZXN1bHQgPSBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX1RFU1Q7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIDE6Ci0JCQkJZS5yZXN1bHQgPSBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX1JVTjsKLQkJCQlicmVhazsKLQkJCWNhc2UgMjoKLQkJCQllLnJlc3VsdCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfSU5TVEFMTDsKLQkJCQlicmVhazsKLQkJCWNhc2UgMzoKLQkJCQllLnJlc3VsdCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfREVQTE9ZOwotCQkJCWJyZWFrOwotCQkJY2FzZSA0OgotCQkJCWUucmVzdWx0ID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9BU1NFTUJMRTsKLQkJCQlicmVhazsKLQkJCWNhc2UgNToKLQkJCQllLnJlc3VsdCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfREVWRUxPUDsKLQkJCQlicmVhazsKLQkJCWNhc2UgNjoJCQkJCi0JCQkJaWYgKGNsaWVudE9ubHlfKQotCQkJCQllLnJlc3VsdCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfQ0xJRU5UX09OTFk7Ci0JCQkJZWxzZQotCQkJCQllLnJlc3VsdCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfQ0xJRU5UOwkJCQkKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJYnJlYWs7Ci0JCQl9CQkJCQkJCQkKLQkJfQotCX0pOwotCQotCUdyaWREYXRhIGxheW91dERhdGExID0gbmV3IEdyaWREYXRhKCk7Ci0JbGF5b3V0RGF0YTEuaG9yaXpvbnRhbEFsaWdubWVudD1TV1QuQ0VOVEVSOwotCWxheW91dERhdGExLnZlcnRpY2FsQWxpZ25tZW50ID0gU1dULkJFR0lOTklORzsKLQlSZWN0YW5nbGUgc2NhbGVSID0gKGltYWdlUmVnXy5nZXQoSUNPTl9TQ0FMRV9CR18wKSkuZ2V0Qm91bmRzKCk7CQotCWxheW91dERhdGExLmhlaWdodEhpbnQ9c2NhbGVSLmhlaWdodDsKLQlsYXlvdXREYXRhMS53aWR0aEhpbnQ9c2NhbGVSLndpZHRoKzE7Ci0JY2xpZW50U2NhbGVfLnNldExheW91dERhdGEobGF5b3V0RGF0YTEpOwotCQkKLQl0b3BvbG9neVNwb3RfID0gbmV3IExhYmVsKGNsaWVudENvbXBvc2l0ZV8gLCBTV1QuQ0VOVEVSIHwgU1dULkJPUkRFUiApOwotCXRvcG9sb2d5U3BvdF8uc2V0QmFja2dyb3VuZChEaXNwbGF5LmdldEN1cnJlbnQoKS5nZXRTeXN0ZW1Db2xvcihTV1QuQ09MT1JfV0hJVEUpKTsKLQlpZiAoY2xpZW50T25seV8pCi0JCXRvcG9sb2d5U3BvdF8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9DTElFTlRfT05MWSk7Ci0JZWxzZQotCXRvcG9sb2d5U3BvdF8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9DTElFTlQpOwotCQotCUdyaWREYXRhIGxheW91dERhdGEgPSBuZXcgR3JpZERhdGEoKTsKLQlsYXlvdXREYXRhLnZlcnRpY2FsQWxpZ25tZW50PVNXVC5CRUdJTk5JTkc7Ci0JbGF5b3V0RGF0YS5ob3Jpem9udGFsQWxpZ25tZW50PVNXVC5CRUdJTk5JTkc7Ci0JUmVjdGFuZ2xlIHRvcFIgPSAoaW1hZ2VSZWdfLmdldChHUkFQSElDX0NMSUVOVF82KSkuZ2V0Qm91bmRzKCk7Ci0JbGF5b3V0RGF0YS53aWR0aEhpbnQ9dG9wUi53aWR0aDsKLQlsYXlvdXREYXRhLmhlaWdodEhpbnQ9dG9wUi5oZWlnaHQ7Ci0JdG9wb2xvZ3lTcG90Xy5zZXRMYXlvdXREYXRhKGxheW91dERhdGEpOwkJCi0JCi0Jc2V0R3JhcGhpY3MoZ2V0Q2xpZW50R2VuZXJhdGlvbigpKTsKLQkJCi0JaENvbXBDbGllbnRfID0gdXRpbHNfLmNyZWF0ZUNvbXBvc2l0ZShjbGllbnRHcm91cENvbXBvc2l0ZV8sIDEpOwotCQotCWNsaWVudERldGFpbHNMYWJlbF8gPSBuZXcgTGFiZWwoaENvbXBDbGllbnRfLCBTV1QuTk9ORSk7Ci0JY2xpZW50RGV0YWlsc0xhYmVsXy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9TVU1NQVJZKTsKLQkKLQloTGlua0NsaWVudFNlcnZlcl89IG5ldyBIeXBlcmxpbmsoaENvbXBDbGllbnRfLCBTV1QuTlVMTCk7Ci0JdXRpbHNfLmNyZWF0ZUluZm9Qb3AoaExpbmtDbGllbnRTZXJ2ZXJfLCBJTkZPUE9QX1dTV1NDRU5fSFlQRVJMSU5LX1NFUlZFUik7Ci0JaExpbmtDbGllbnRTZXJ2ZXJfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXUlNfVEVYVF9TRVJWRVIpOwotCWhMaW5rQ2xpZW50U2VydmVyXy5hZGRIeXBlcmxpbmtMaXN0ZW5lcihuZXcgSUh5cGVybGlua0xpc3RlbmVyKCl7Ci0JCXB1YmxpYyB2b2lkIGxpbmtBY3RpdmF0ZWQoSHlwZXJsaW5rRXZlbnQgZSl7CQkJCi0JCQlsYXVuY2hSdW50aW1lU2VsZWN0aW9uRGlhbG9nKHRydWUsIHRydWUpOwkJCQkKLQkJfQotCQlwdWJsaWMgdm9pZCBsaW5rRW50ZXJlZChIeXBlcmxpbmtFdmVudCBlKXt9Ci0JCXB1YmxpYyB2b2lkIGxpbmtFeGl0ZWQoSHlwZXJsaW5rRXZlbnQgZSl7fQkJCQotCX0pOwotCQotCWhMaW5rQ2xpZW50UnVudGltZV8gPSBuZXcgSHlwZXJsaW5rKGhDb21wQ2xpZW50XywgU1dULk5VTEwpOwotCXV0aWxzXy5jcmVhdGVJbmZvUG9wKGhMaW5rQ2xpZW50UnVudGltZV8sIElORk9QT1BfV1NXU0NFTl9IWVBFUkxJTktfUlVOVElNRSk7Ci0JaExpbmtDbGllbnRSdW50aW1lXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV1JTX1RFWFRfUlVOVElNRSk7Ci0JaExpbmtDbGllbnRSdW50aW1lXy5hZGRIeXBlcmxpbmtMaXN0ZW5lcihuZXcgSUh5cGVybGlua0xpc3RlbmVyKCl7Ci0JCXB1YmxpYyB2b2lkIGxpbmtBY3RpdmF0ZWQoSHlwZXJsaW5rRXZlbnQgZSl7CQkJCi0JCQlsYXVuY2hSdW50aW1lU2VsZWN0aW9uRGlhbG9nKHRydWUpOwotCQl9Ci0JCXB1YmxpYyB2b2lkIGxpbmtFbnRlcmVkKEh5cGVybGlua0V2ZW50IGUpe30KLQkJcHVibGljIHZvaWQgbGlua0V4aXRlZChIeXBlcmxpbmtFdmVudCBlKXt9CQkJCi0JfSk7Ci0JCi0JSVdvcmtiZW5jaCB3b3JrYmVuY2ggPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpOwotCXByb2plY3REaWFsb2dfID0gbmV3IFByb2plY3RTZWxlY3Rpb25EaWFsb2cod29ya2JlbmNoLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvdygpLmdldFNoZWxsKCksIAotCQkJbmV3IFBhZ2VJbmZvKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5ESUFMT0dfVElUSUxFX0NMSUVOVF9QUk9KRUNUX1NFVFRJTkdTLCAiIiwgCi0gICAgICAgICAgICAgICAgICAgIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKQotCQkJCQkJewkKLQkJCQkJCQlwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkKLQkJCQkJCQl7CSAgCQkJCQkJIAotCQkJCQkJCSAgIHJldHVybiBuZXcgUHJvamVjdFNlbGVjdGlvbldpZGdldCh0cnVlKTsKLQkJCQkJCQl9Ci0JCQkJCQl9KSk7Ci0JCi0JaExpbmtDbGllbnRQcm9qZWN0XyA9IG5ldyBIeXBlcmxpbmsoaENvbXBDbGllbnRfLCBTV1QuTlVMTCk7Ci0JdXRpbHNfLmNyZWF0ZUluZm9Qb3AoaExpbmtDbGllbnRSdW50aW1lXywgSU5GT1BPUF9XU1dTQ0VOX0hZUEVSTElOS19QUk9KRUNUUyk7Ci0JaExpbmtDbGllbnRQcm9qZWN0Xy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX0NMSUVOVFBST0pFQ1RfTElOSyk7Ci0JaExpbmtDbGllbnRQcm9qZWN0Xy5hZGRIeXBlcmxpbmtMaXN0ZW5lcihuZXcgSUh5cGVybGlua0xpc3RlbmVyKCl7Ci0JCXB1YmxpYyB2b2lkIGxpbmtBY3RpdmF0ZWQoSHlwZXJsaW5rRXZlbnQgZSl7CQkJCi0JCQlsYXVuY2hQcm9qZWN0RGlhbG9nKCk7Ci0JCX0KLQkJcHVibGljIHZvaWQgbGlua0VudGVyZWQoSHlwZXJsaW5rRXZlbnQgZSl7fQotCQlwdWJsaWMgdm9pZCBsaW5rRXhpdGVkKEh5cGVybGlua0V2ZW50IGUpe30JCQkKLQl9KTsKLQkKLQloTGlua0NsaWVudEVBUl8gPSBuZXcgSHlwZXJsaW5rKGhDb21wQ2xpZW50XywgU1dULk5VTEwpOwkKLQl1dGlsc18uY3JlYXRlSW5mb1BvcChoTGlua0NsaWVudFJ1bnRpbWVfLCBJTkZPUE9QX1dTV1NDRU5fSFlQRVJMSU5LX1BST0pFQ1RTKTsKLQloTGlua0NsaWVudEVBUl8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9DTElFTlRQUk9KRUNUX0xJTkspOwotCWhMaW5rQ2xpZW50RUFSXy5hZGRIeXBlcmxpbmtMaXN0ZW5lcihuZXcgSUh5cGVybGlua0xpc3RlbmVyKCl7Ci0JCXB1YmxpYyB2b2lkIGxpbmtBY3RpdmF0ZWQoSHlwZXJsaW5rRXZlbnQgZSl7CQkJCi0JCQlsYXVuY2hQcm9qZWN0RGlhbG9nKCk7Ci0JCX0KLQkJcHVibGljIHZvaWQgbGlua0VudGVyZWQoSHlwZXJsaW5rRXZlbnQgZSl7fQotCQlwdWJsaWMgdm9pZCBsaW5rRXhpdGVkKEh5cGVybGlua0V2ZW50IGUpe30JCQkKLQl9KTsKLQkKLQloTGlua0NsaWVudFNlcnZlcl8uc2V0VGV4dChDTElFTlRfU0VSVkVSX1BSRUZJWCk7IAotCWhMaW5rQ2xpZW50UnVudGltZV8uc2V0VGV4dChDTElFTlRfUlVOVElNRV9QUkVGSVgpOwotCWhMaW5rQ2xpZW50UHJvamVjdF8uc2V0VGV4dChDTElFTlRfUFJPSkVDVF9QUkVGSVgpOwotCWhMaW5rQ2xpZW50RUFSXy5zZXRUZXh0KENMSUVOVF9FQVJfUFJFRklYKTsJCi0JCi0JSHlwZXJsaW5rR3JvdXAgc2VydmVyUnVudGltZUdyb3VwID0gbmV3IEh5cGVybGlua0dyb3VwKERpc3BsYXkuZ2V0Q3VycmVudCgpKTsKLQlzZXJ2ZXJSdW50aW1lR3JvdXAuYWRkKGhMaW5rQ2xpZW50U2VydmVyXyk7Ci0Jc2VydmVyUnVudGltZUdyb3VwLmFkZChoTGlua0NsaWVudFJ1bnRpbWVfKTsKLQlzZXJ2ZXJSdW50aW1lR3JvdXAuYWRkKGhMaW5rQ2xpZW50UHJvamVjdF8pOwotCXNlcnZlclJ1bnRpbWVHcm91cC5hZGQoaExpbmtDbGllbnRFQVJfKTsKLQlzZXJ2ZXJSdW50aW1lR3JvdXAuc2V0SHlwZXJsaW5rVW5kZXJsaW5lTW9kZShIeXBlcmxpbmtTZXR0aW5ncy5VTkRFUkxJTkVfQUxXQVlTKTsKLSAgICAKLQllbmFibGVDbGllbnRTbGlkZXIoZ2V0R2VuZXJhdGVQcm94eSgpKTsKLQkKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgZW5hYmxlQ2xpZW50U2xpZGVyKCBib29sZWFuIGVuYWJsZSApCi0gIHsKLQllbmFibGVQcm94eV8gPSBlbmFibGU7Ci0JY2xpZW50U2NhbGVfLnNldEVuYWJsZWQoZW5hYmxlKTsKLQlpbnQgc2VsZWN0aW9uID0gZ2V0Q2xpZW50R2VuZXJhdGlvbigpOwotCWlmIChlbmFibGUpCi0JewkJCQkKLQkJc2V0R3JhcGhpY3Moc2VsZWN0aW9uKTsKLQl9Ci0JZWxzZQotCXsKLQkJc2V0Q2xpZW50U2NhbGUoU2NlbmFyaW9Db250ZXh0LldTX05PTkUpOwotCQl1cGRhdGVGaWVsZHMoU2NlbmFyaW9Db250ZXh0LldTX05PTkUpOwotCQlzZXRHcmFwaGljcyhTY2VuYXJpb0NvbnRleHQuV1NfTk9ORSk7Ci0JCWNsaWVudFNjYWxlXy5zZXRCYWNrZ3JvdW5kSW1hZ2UobnVsbCk7ICAvL292ZXJyaWRlIGJhY2tncm91bmQgZm9yIGRpc2FibGUgdG8gZ3JleQkJCi0JfQkKLQlzaG93U3VtbWFyeShlbmFibGUgJiYgKHNlbGVjdGlvbiA8PSBTY2VuYXJpb0NvbnRleHQuV1NfREVWRUxPUCkpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUZpZWxkcyhpbnQgc2VsZWN0aW9uKSB7Ci0JCXNldERldmVsb3BDbGllbnQoc2VsZWN0aW9uIDw9IFNjZW5hcmlvQ29udGV4dC5XU19ERVZFTE9QKTsKLQkJc2V0QXNzZW1ibGVDbGllbnQoc2VsZWN0aW9uIDw9IFNjZW5hcmlvQ29udGV4dC5XU19BU1NFTUJMRSk7Ci0JCXNldERlcGxveUNsaWVudChzZWxlY3Rpb24gPD0gU2NlbmFyaW9Db250ZXh0LldTX0RFUExPWSk7Ci0JCXNldFRlc3RDbGllbnQobmV3IEJvb2xlYW4oc2VsZWN0aW9uIDw9IFNjZW5hcmlvQ29udGV4dC5XU19URVNUKSk7Ci0JCXNldEluc3RhbGxDbGllbnQobmV3IEJvb2xlYW4oc2VsZWN0aW9uIDw9IFNjZW5hcmlvQ29udGV4dC5XU19JTlNUQUxMKSk7Ci0JCXNldFN0YXJ0Q2xpZW50KG5ldyBCb29sZWFuKHNlbGVjdGlvbiA8PSBTY2VuYXJpb0NvbnRleHQuV1NfU1RBUlQpKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBzaG93U3VtbWFyeShib29sZWFuIHNob3cpCi0gIHsKLQkgIGlmIChjbGllbnRPbmx5XykKLQkJICBzaG93ID0gdHJ1ZTsgIC8vc2hvcnQgY2lyY3VpdCB0byBlbGltaW5hdGUgZmxpY2tlci4uLgkgIAotCSAgCi0JICBoTGlua0NsaWVudEVBUl8uc2V0VmlzaWJsZShzaG93ICYmIG5lZWRFYXJfKTsKLQkgIGhMaW5rQ2xpZW50UHJvamVjdF8uc2V0VmlzaWJsZShzaG93KTsKLQkgIGhMaW5rQ2xpZW50UnVudGltZV8uc2V0VmlzaWJsZShzaG93KTsKLQkgIGhMaW5rQ2xpZW50U2VydmVyXy5zZXRWaXNpYmxlKHNob3cpOwotCSAgCi0JICBpZiAoc2hvdykKLQkgIHsKLQkJICBjbGllbnREZXRhaWxzTGFiZWxfLnNldFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NVTU1BUlkpOwotCSAgfQotCSAgZWxzZQotCSAgewotCQkgIGlmIChjbGllbnRPbmx5XykKLQkJCSAgaENvbXBDbGllbnRfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfQ0xJRU5UX09OTFkpOwotCQkJZWxzZQotCQkgIGhDb21wQ2xpZW50Xy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX0NMSUVOVCk7Ci0JCSAgY2xpZW50RGV0YWlsc0xhYmVsXy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9TVU1NQVJZX05PX0NMSUVOVCk7CQkgIAotCSAgfQkgIAotCSAgY2xpZW50RGV0YWlsc0xhYmVsXy5wYWNrKHRydWUpOwotCSAgaExpbmtDbGllbnRQcm9qZWN0Xy5wYWNrKHRydWUpOwotCSAgaExpbmtDbGllbnRFQVJfLnBhY2sodHJ1ZSk7Ci0JICBwYWNrSXQoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFR5cGVSdW50aW1lU2VydmVyKCBUeXBlUnVudGltZVNlcnZlciBpZHMgKQotICB7Ci0JTGFiZWxzQW5kSWRzICAgICAgICAgICAgICAgICBsYWJlbElkcyAgID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50VHlwZUxhYmVscygpOwotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uICA9IDA7Ci0gICAgU3RyaW5nW10gICAgICAgICAgICAgICAgICAgICBjbGllbnRJZHMgID0gbGFiZWxJZHMuZ2V0SWRzXygpOwotICAgIFN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZCA9IGlkcy5nZXRUeXBlSWQoKTsKLSAgICAKLSAgICBsYWJlbElkc18gPSBsYWJlbElkczsKLQkvLyByc2tyZWcKLSAgICBjbGllbnRUeXBlQ29tYm9fLnNldEl0ZW1zKCBsYWJlbElkcy5nZXRMYWJlbHNfKCkgKTsKLSAgICAKLSAgICAvLyBOb3cgZmluZCB0aGUgc2VsZWN0ZWQgb25lLgotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBjbGllbnRJZHMubGVuZ3RoOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBpZiggc2VsZWN0ZWRJZC5lcXVhbHMoIGNsaWVudElkc1tpbmRleCBdKSApCi0gICAgICB7Ci0gICAgICAgIHNlbGVjdGlvbiA9IGluZGV4OwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgY2xpZW50VHlwZUNvbWJvXy5zZWxlY3QoIHNlbGVjdGlvbiApOyAgICAKLQlpZHNfID0gaWRzOwotCQotCWlmIChpZHNfICE9IG51bGwpCi0JewotCQlTdHJpbmcgY2xpZW50U2VydmVyVGV4dCA9ICIiOwotCQlTdHJpbmcgc2VydmVySWQgPSBpZHNfLmdldFNlcnZlcklkKCk7Ci0JCWlmIChzZXJ2ZXJJZCAhPSBudWxsICYmIHNlcnZlcklkLmxlbmd0aCgpPjApCi0JCXsKLQkJCWNsaWVudFNlcnZlclRleHQgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2ZXJMYWJlbEJ5SWQoc2VydmVySWQpOwotCQl9IAotCQlTdHJpbmcgY2xpZW50UnVudGltZVRleHQgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRSdW50aW1lTGFiZWxCeUlkKGlkc18uZ2V0UnVudGltZUlkKCkpOwotCQkKLQkJU3RyaW5nIGN1cnJlbnRTZXJ2ZXJUZXh0ID0gaExpbmtDbGllbnRTZXJ2ZXJfLmdldFRleHQoKTsKLQkJU3RyaW5nIGN1cnJlbnRSdW50aW1lVGV4dCA9IGhMaW5rQ2xpZW50UnVudGltZV8uZ2V0VGV4dCgpOwotCQlTdHJpbmcgbmV3U2VydmVyVGV4dCA9IENMSUVOVF9TRVJWRVJfUFJFRklYICsgIiAiICsgY2xpZW50U2VydmVyVGV4dDsKLQkJU3RyaW5nIG5ld1J1bnRpbWVUZXh0ID0gQ0xJRU5UX1JVTlRJTUVfUFJFRklYICsgIiAiICsgY2xpZW50UnVudGltZVRleHQ7Ci0JCWhMaW5rQ2xpZW50U2VydmVyXy5zZXRUZXh0KG5ld1NlcnZlclRleHQpOwotCQloTGlua0NsaWVudFJ1bnRpbWVfLnNldFRleHQobmV3UnVudGltZVRleHQpOwotCQkKLQkJLypjaGVjayB0byBzZWUgaWYgdGV4dCBoYXMgY2hhbmdlZCBmb3Igc2VydmVyIG9yIHJ1bnRpbWUKLQkJaWYgc28sIHJlcGFpbnQgbGlua3MgKi8KLQkJaWYgKCFuZXdTZXJ2ZXJUZXh0LmVxdWFscyhjdXJyZW50U2VydmVyVGV4dCkpCi0JCXsKLQkJCWhMaW5rQ2xpZW50U2VydmVyXy5wYWNrKHRydWUpOwotCQkJcGFja0l0KCk7Ci0JCX0JCQkKLQkJCi0JCWlmICghbmV3UnVudGltZVRleHQuZXF1YWxzKGN1cnJlbnRSdW50aW1lVGV4dCkpCi0JCXsKLQkJCWhMaW5rQ2xpZW50UnVudGltZV8ucGFjayh0cnVlKTsKLQkJCXBhY2tJdCgpOwotCQl9IAkKLQl9Ci0JCi0gICAgaWYgKHByb2plY3REaWFsb2dfICE9IG51bGwpCi0gICAgCXByb2plY3REaWFsb2dfLnNldFR5cGVSdW50aW1lU2VydmVyKGlkc18pOwotICAgIAotCS8vV2hlbiB0aGUgc2VydmVyIGNoYW5nZXMsIHRoZSBzdGF0ZSBvZiBuZWVkRWFyIGNvdWxkIGNoYW5nZS4KLQkvL0lmIHRoZSB0aGUgc2VydmVyIGNoYW5nZSByZXN1bHRzIGluIGEgY2hhbmdlIGluIHRoZSBzdGF0ZSBvZiBuZWVkRWFyLAotCS8vdXBkYXRlIG5lZWRFYXIgYW5kIGNsaWVudEVhclByb2plY3ROYW1lLiAgICAKLSAgICAKLQlWYWxpZGF0aW9uVXRpbHMgdnUgPSBuZXcgVmFsaWRhdGlvblV0aWxzKCk7Ci0JYm9vbGVhbiBvbGROZWVkRWFyID0gZ2V0Q2xpZW50TmVlZEVBUigpOwotCWJvb2xlYW4gY2xpZW50UHJvamVjdE9yUHJvamVjdFR5cGVOZWVkc0VhcjsKLQotCWlmICghb2xkTmVlZEVhcikgewotCQkJLy8gSWYgYW4gRUFSIHdhcyBub3QgbmVlZGVkIHByZXZpb3VzbHkgaXQgY291bGQgaGF2ZSBiZWVuIGJlY2F1c2Ugb2YKLQkJCS8vIHRoZSBwcm9qZWN0L3Byb2plY3QgdHlwZSBvciB0aGUgc2VydmVyLgotCQkJLy8gSWYgaXQgd2FzIGJlY2F1c2Ugb2YgdGhlIHByb2plY3QvcHJvamVjdCB0eXBlLCBjaGFuZ2luZyB0aGUKLQkJCS8vIHNlcnZlciBzaG91bGQgaGF2ZSBubyBpbXBhY3QKLQkJCS8vIG9uIHRoZSBzdGF0ZSBvZiBuZWVkRWFyLgotCQkJY2xpZW50UHJvamVjdE9yUHJvamVjdFR5cGVOZWVkc0VhciA9IHZ1LnByb2plY3RPclByb2plY3RUeXBlTmVlZHNFYXIoZ2V0Q2xpZW50UHJvamVjdE5hbWUoKSwKLQkJCQkJZ2V0Q2xpZW50Q29tcG9uZW50VHlwZSgpKTsKLQkJfSBlbHNlIHsKLQkJCWNsaWVudFByb2plY3RPclByb2plY3RUeXBlTmVlZHNFYXIgPSB0cnVlOwotCQl9Ci0KLQkJLy8gYm9vbGVhbiBjbGllbnRQcm9qZWN0T3JQcm9qZWN0VHlwZU5lZWRzRWFyID0KLQkJLy8gdnUucHJvamVjdE9yUHJvamVjdFR5cGVOZWVkc0VhcihnZXRDbGllbnRQcm9qZWN0TmFtZSgpLAotCQkvLyBnZXRDbGllbnRDb21wb25lbnRUeXBlKCkpOwotCQlpZiAoY2xpZW50UHJvamVjdE9yUHJvamVjdFR5cGVOZWVkc0VhcikgewotCQkJLy8gQ291bGQgbm90IHJ1bGUgb3V0IG5lZWQgZm9yIGFuIEVhciBmcm9tIHRoZSBwcm9qZWN0L3Byb2plY3QgdHlwZQotCQkJLy8gc28gY2hhbmdpbmcgdGhlIHNlcnZlcgotCQkJLy8gbWF5IGltcGFjdCB0aGUgbmVlZCBmb3IgYW4gRWFyLgotCQkJYm9vbGVhbiBjdXJyZW50U2VydmVyTmVlZHNFYXIgPSB2dS5zZXJ2ZXJOZWVkc0VBUihnZXRUeXBlUnVudGltZVNlcnZlcigpLmdldFNlcnZlcklkKCkpOwotCQkJaWYgKG9sZE5lZWRFYXIgIT0gY3VycmVudFNlcnZlck5lZWRzRWFyKSB7Ci0JCQkJLy8gVXBkYXRlIG5lZWRFYXIgYW5kIHNlcnZpY2VFYXJQcm9qZWN0TmFtZS4KLQkJCQlpZiAoY3VycmVudFNlcnZlck5lZWRzRWFyKSB7Ci0JCQkJCS8vIENhbGN1bGF0ZSBhIHJlYXNvbmFibGUgZGVmYXVsdCBmb3IgdGhlIEVhciBwcm9qZWN0IG5hbWUKLQkJCQkJU3RyaW5nIGVhclByb2plY3ROYW1lID0gRGVmYXVsdGluZ1V0aWxzLmdldERlZmF1bHRFQVJQcm9qZWN0TmFtZShnZXRDbGllbnRQcm9qZWN0TmFtZSgpKTsKLQkJCQkJc2V0Q2xpZW50TmVlZEVBUihjdXJyZW50U2VydmVyTmVlZHNFYXIpOwotCQkJCQlzZXRDbGllbnRFYXJQcm9qZWN0TmFtZShlYXJQcm9qZWN0TmFtZSk7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJc2V0Q2xpZW50TmVlZEVBUihjdXJyZW50U2VydmVyTmVlZHNFYXIpOwotCQkJCQlzZXRDbGllbnRFYXJQcm9qZWN0TmFtZSgiIik7Ci0JCQkJfQotCi0JCQl9Ci0JCX0JCSAgICAKLSAgfQotICAKLSAgcHVibGljIFR5cGVSdW50aW1lU2VydmVyIGdldFR5cGVSdW50aW1lU2VydmVyKCkKLSAgewotICAgIHJldHVybiBpZHNfOyAgCi0gIH0KLSAgICAgIAotICBwdWJsaWMgYm9vbGVhbiBnZXRHZW5lcmF0ZVByb3h5KCkKLSAgewotCSAgcmV0dXJuIGdldENsaWVudEdlbmVyYXRpb24oKSA8PSBTY2VuYXJpb0NvbnRleHQuV1NfREVWRUxPUDsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0RGV2ZWxvcENsaWVudCgpIHsKLQkgIHJldHVybiBkZXZlbG9wQ2xpZW50XzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldERldmVsb3BDbGllbnQoYm9vbGVhbiBkZXZlbG9wQ2xpZW50KSB7Ci0JICB0aGlzLmRldmVsb3BDbGllbnRfID0gZGV2ZWxvcENsaWVudDsKLSAgfQkKLQotICBwdWJsaWMgYm9vbGVhbiBnZXRBc3NlbWJsZUNsaWVudCgpIHsKLQkgIHJldHVybiBhc3NlbWJsZUNsaWVudF87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRBc3NlbWJsZUNsaWVudChib29sZWFuIGFzc2VtYmxlQ2xpZW50KSB7Ci0JICB0aGlzLmFzc2VtYmxlQ2xpZW50XyA9IGFzc2VtYmxlQ2xpZW50OwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZ2V0RGVwbG95Q2xpZW50KCkgewotCSAgcmV0dXJuIGRlcGxveUNsaWVudF87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXREZXBsb3lDbGllbnQoYm9vbGVhbiBkZXBsb3lDbGllbnQpIHsKLQkgIHRoaXMuZGVwbG95Q2xpZW50XyA9IGRlcGxveUNsaWVudDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0VGVzdENsaWVudChCb29sZWFuIHZhbHVlKQotICB7Ci0JICB0ZXN0Q2xpZW50XyA9IHZhbHVlOwotICB9Ci0gIAotICBwdWJsaWMgQm9vbGVhbiBnZXRUZXN0Q2xpZW50KCkKLSAgewotCSAgcmV0dXJuIHRlc3RDbGllbnRfOwotICB9Ci0gIAotICBwdWJsaWMgQm9vbGVhbiBnZXRJbnN0YWxsQ2xpZW50KCkKLSAgewotCSAgcmV0dXJuIGluc3RhbGxDbGllbnRfOwotICB9Ci0gIAotICBwdWJsaWMgQm9vbGVhbiBnZXRTdGFydENsaWVudCgpCi0gIHsKLQkgIHJldHVybiBzdGFydENsaWVudF87Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEluc3RhbGxDbGllbnQoIEJvb2xlYW4gdmFsdWUgKQotICB7Ci0gICAgICBpbnN0YWxsQ2xpZW50XyA9IHZhbHVlOyAgICAKLSAgfQotICAgIAotICBwdWJsaWMgdm9pZCBzZXRTdGFydENsaWVudCggQm9vbGVhbiB2YWx1ZSApCi0gIHsKLSAgICAgIHN0YXJ0Q2xpZW50XyA9IHZhbHVlOyAgICAKLSAgfQotCi0gIAotCXByaXZhdGUgdm9pZCBsYXVuY2hQcm9qZWN0RGlhbG9nKCkKLQl7Ci0JCVN0cmluZyBjdXJyZW50UHJvamVjdE5hbWUgPSBnZXRDbGllbnRQcm9qZWN0TmFtZSgpOwotCQlTdHJpbmcgY3VycmVudEVhclByb2plY3ROYW1lID0gZ2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoKTsKLQkJU3RyaW5nIGN1cnJlbnRQcm9qZWN0VHlwZSA9IGdldENsaWVudENvbXBvbmVudFR5cGUoKTsKLQkJYm9vbGVhbiBjdXJyZW50TmVlZEVhciA9IGdldENsaWVudE5lZWRFQVIoKTsKLQkJCi0JCXByb2plY3REaWFsb2dfLnNldFByb2plY3ROYW1lKGN1cnJlbnRQcm9qZWN0TmFtZSk7Ci0JCXByb2plY3REaWFsb2dfLnNldEVhclByb2plY3ROYW1lKGN1cnJlbnRFYXJQcm9qZWN0TmFtZSk7Ci0JCXByb2plY3REaWFsb2dfLnNldE5lZWRFQVIoY3VycmVudE5lZWRFYXIpOwkKLQkJcHJvamVjdERpYWxvZ18uc2V0UHJvamVjdENvbXBvbmVudFR5cGUoY3VycmVudFByb2plY3RUeXBlKTsKLQkJCi0JCWludCBzdGF0dXMgPSBwcm9qZWN0RGlhbG9nXy5vcGVuKCk7Ci0JCQotCQlpZiAoc3RhdHVzID09IFdpbmRvdy5PSykKLQkJewotCQkJU3RyaW5nIG5ld1Byb2plY3ROYW1lID0gcHJvamVjdERpYWxvZ18uZ2V0UHJvamVjdE5hbWUoKTsKLQkJCVN0cmluZyBuZXdFYXJQcm9qZWN0TmFtZSA9IHByb2plY3REaWFsb2dfLmdldEVhclByb2plY3ROYW1lKCk7Ci0JCQlTdHJpbmcgbmV3UHJvamVjdFR5cGUgPSBwcm9qZWN0RGlhbG9nXy5nZXRQcm9qZWN0Q29tcG9uZW50VHlwZSgpOwotCQkJYm9vbGVhbiBuZXdOZWVkRWFyID0gcHJvamVjdERpYWxvZ18uZ2V0TmVlZEVBUigpOwkKLQkJCQotCQkJLy9VcGRhdGUgcHJvamVjdCBzZXR0aW5ncyBhbmQgdmFsaWRhdGUgcGFnZSBpZiBzZWxlY3Rpb25zIGNoYW5nZWQuCi0JCQlpZiAoIW5ld1Byb2plY3ROYW1lLmVxdWFscyhjdXJyZW50UHJvamVjdE5hbWUpCi0JCQkJCXx8ICFuZXdFYXJQcm9qZWN0TmFtZS5lcXVhbHMoY3VycmVudEVhclByb2plY3ROYW1lKQotCQkJCQl8fCAhbmV3UHJvamVjdFR5cGUuZXF1YWxzKGN1cnJlbnRQcm9qZWN0VHlwZSkKLQkJCQkJfHwgbmV3TmVlZEVhciAhPSBjdXJyZW50TmVlZEVhcikgewotCQkJCXNldENsaWVudFByb2plY3ROYW1lKG5ld1Byb2plY3ROYW1lKTsKLQkJCQlzZXRDbGllbnRFYXJQcm9qZWN0TmFtZShuZXdFYXJQcm9qZWN0TmFtZSk7Ci0JCQkJc2V0Q2xpZW50TmVlZEVBUihuZXdOZWVkRWFyKTsKLQkJCQlzZXRDbGllbnRDb21wb25lbnRUeXBlKG5ld1Byb2plY3RUeXBlKTsJCQkJCi0JCQkJdmFsaWRhdGlvblN0YXRlXyA9IChuZXcgVmFsaWRhdGlvblV0aWxzKCkpLmdldE5ld1ZhbGlkYXRpb25TdGF0ZSh2YWxpZGF0aW9uU3RhdGVfLCBWYWxpZGF0aW9uVXRpbHMuVkFMSURBVEVfUFJPSkVDVF9DSEFOR0VTKTsKLQkJCQlzdGF0dXNMaXN0ZW5lcl8uaGFuZGxlRXZlbnQobnVsbCk7Ci0JCQl9Ci0JCQkKLQkJCS8qY2hlY2sgdG8gc2VlIGlmIHRleHQgaGFzIGNoYW5nZWQgZm9yIHByb2plY3Qgb3IgRUFSCi0JCQlpZiBzbywgcmVwYWludCBsaW5rcyAqLwotCQkJaWYgKCFuZXdQcm9qZWN0TmFtZS5lcXVhbHMoY3VycmVudFByb2plY3ROYW1lKSkKLQkJCXsKLQkJCQloTGlua0NsaWVudFByb2plY3RfLnBhY2sodHJ1ZSk7Ci0JCQkJcGFja0l0KCk7Ci0JCQl9Ci0JCQlpZiAoIW5ld0VhclByb2plY3ROYW1lLmVxdWFscyhjdXJyZW50RWFyUHJvamVjdE5hbWUpKQotCQkJewotCQkJCWhMaW5rQ2xpZW50RUFSXy5wYWNrKHRydWUpOwotCQkJCXBhY2tJdCgpOwotCQkJfQotCQl9CQkKLQl9Ci0gIAotICBwcml2YXRlIHZvaWQgbGF1bmNoUnVudGltZVNlbGVjdGlvbkRpYWxvZyhib29sZWFuIGNsaWVudENvbnRleHQpIHsKLQkgIGxhdW5jaFJ1bnRpbWVTZWxlY3Rpb25EaWFsb2coY2xpZW50Q29udGV4dCwgZmFsc2UpOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgbGF1bmNoUnVudGltZVNlbGVjdGlvbkRpYWxvZyhib29sZWFuIGNsaWVudENvbnRleHQsIGJvb2xlYW4gc2VsZWN0U2VydmVyRmlyc3QpCi0JewotCSAgICBUeXBlUnVudGltZVNlcnZlciBjdXJyZW50Q2xpZW50VFJTID0gZ2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoKTsKLQkgICAgUnVudGltZVNlcnZlclNlbGVjdGlvbkRpYWxvZyByc3NkID0gbmV3IFJ1bnRpbWVTZXJ2ZXJTZWxlY3Rpb25EaWFsb2coc2hlbGxfLCAoYnl0ZSkxLCBnZXRUeXBlUnVudGltZVNlcnZlcigpLCAiMTQiKTsKLQkgICAgcnNzZC5zZXRTZWxlY3RTZXJ2ZXJGaXJzdChzZWxlY3RTZXJ2ZXJGaXJzdCk7Ci0JICAgIGludCBzdGF0dXMgPSByc3NkLm9wZW4oKTsKLQkJaWYgKHN0YXR1cyA9PSBXaW5kb3cuT0spCi0JCXsKLQkJCVR5cGVSdW50aW1lU2VydmVyIG5ld0NsaWVudFRSUyA9IHJzc2QuZ2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoKTsJCQkKLQkJCWlmICghY3VycmVudENsaWVudFRSUy5lcXVhbHMobmV3Q2xpZW50VFJTKSkKLQkJCXsKLQkJCQlzZXRUeXBlUnVudGltZVNlcnZlcihyc3NkLmdldFR5cGVSdW50aW1lU2VydmVyKCkpOwotCQkJCXZhbGlkYXRpb25TdGF0ZV8gPSAobmV3IFZhbGlkYXRpb25VdGlscygpKS5nZXROZXdWYWxpZGF0aW9uU3RhdGUodmFsaWRhdGlvblN0YXRlXywgVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX1NFUlZFUl9SVU5USU1FX0NIQU5HRVMpOwotCQkJCXN0YXR1c0xpc3RlbmVyXy5oYW5kbGVFdmVudChudWxsKTsgLy92YWxpZGF0ZSB0aGUgcGFnZQotCQkJfQotCQl9CQkKLQl9Ci0gIAotICAvL1ByaXZhdGUgbWV0aG9kIHNob3VsZCBiZSB1c2VkIHdoZW5ldmVyIGNsaWVudFNjYWxlXyBzZXR0aW5nIGlzIGNoYW5nZWQKLSAgLy9pbnN0ZWFkIG9mIGNhbGxpbmcgY2xpZW50U2NhbGVfLnNldFNlbGVjdGlvbiBkaXJlY3RseS4KLSAgcHJpdmF0ZSB2b2lkIHNldENsaWVudFNjYWxlKGludCBzZXR0aW5nKQotICB7Ci0JICBjbGllbnRTY2FsZV8uc2V0U2VsZWN0aW9uKHNldHRpbmcpOwotCSAgY2xpZW50U2NhbGVTZXR0aW5nXyA9IHNldHRpbmc7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCB2b2lkIGluaXRJbWFnZVJlZ2lzdHJ5KCkKLQl7Ci0JCWltYWdlUmVnXyA9IG5ldyBJbWFnZVJlZ2lzdHJ5KERpc3BsYXkuZ2V0Q3VycmVudCgpKTsKLQkJCi0JCWltYWdlUmVnXy5wdXQoSUNPTl9TQ0FMRV9CR18wLCBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoSUNPTl9TQ0FMRV9CR18wKSk7Ci0JCWltYWdlUmVnXy5wdXQoSUNPTl9TQ0FMRV9CR18xLCBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoSUNPTl9TQ0FMRV9CR18xKSk7Ci0JCWltYWdlUmVnXy5wdXQoSUNPTl9TQ0FMRV9CR18yLCBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoSUNPTl9TQ0FMRV9CR18yKSk7Ci0JCWltYWdlUmVnXy5wdXQoSUNPTl9TQ0FMRV9CR18zLCBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoSUNPTl9TQ0FMRV9CR18zKSk7Ci0JCWltYWdlUmVnXy5wdXQoSUNPTl9TQ0FMRV9CR180LCBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoSUNPTl9TQ0FMRV9CR180KSk7Ci0JCWltYWdlUmVnXy5wdXQoSUNPTl9TQ0FMRV9CR181LCBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoSUNPTl9TQ0FMRV9CR181KSk7Ci0JCWltYWdlUmVnXy5wdXQoSUNPTl9TQ0FMRV9CR182LCBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoSUNPTl9TQ0FMRV9CR182KSk7Ci0JCQotCQlpbWFnZVJlZ18ucHV0KEdSQVBISUNfQ0xJRU5UXzAsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihHUkFQSElDX0NMSUVOVF8wKSk7Ci0JCWltYWdlUmVnXy5wdXQoR1JBUEhJQ19DTElFTlRfMSwgV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4KLQkJCQkuZ2V0SW1hZ2VEZXNjcmlwdG9yKEdSQVBISUNfQ0xJRU5UXzEpKTsKLQkJaW1hZ2VSZWdfLnB1dChHUkFQSElDX0NMSUVOVF8yLCBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoR1JBUEhJQ19DTElFTlRfMikpOwotCQlpbWFnZVJlZ18ucHV0KEdSQVBISUNfQ0xJRU5UXzMsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihHUkFQSElDX0NMSUVOVF8zKSk7Ci0JCWltYWdlUmVnXy5wdXQoR1JBUEhJQ19DTElFTlRfNCwgV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4KLQkJCQkuZ2V0SW1hZ2VEZXNjcmlwdG9yKEdSQVBISUNfQ0xJRU5UXzQpKTsKLQkJaW1hZ2VSZWdfLnB1dChHUkFQSElDX0NMSUVOVF81LCBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoR1JBUEhJQ19DTElFTlRfNSkpOwkJCi0JCWltYWdlUmVnXy5wdXQoR1JBUEhJQ19DTElFTlRfNiwgV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4KLQkJCQkuZ2V0SW1hZ2VEZXNjcmlwdG9yKEdSQVBISUNfQ0xJRU5UXzYpKTsKLQl9Ci0gIAotICBwcml2YXRlIHZvaWQgc2V0R3JhcGhpY3MoaW50IHNlbGVjdGlvbikKLSAgewotICAgICBTdHJpbmcgaWNvbkltYWdlID0gIiI7Ci0gICAgIFN0cmluZyB0b3BvbG9neUltYWdlID0gIiI7Ci0gICAgIAotCSAgc3dpdGNoIChzZWxlY3Rpb24pIHsKLQkgICAgY2FzZSBTY2VuYXJpb0NvbnRleHQuV1NfVEVTVDoKLQkJCWljb25JbWFnZT1JQ09OX1NDQUxFX0JHXzA7Ci0JCQl0b3BvbG9neUltYWdlPUdSQVBISUNfQ0xJRU5UXzA7Ci0JCQljbGllbnRTY2FsZV8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9URVNUKTsKLQkJCWJyZWFrOwotCSAgICBjYXNlIFNjZW5hcmlvQ29udGV4dC5XU19TVEFSVDoKLQkJCWljb25JbWFnZT1JQ09OX1NDQUxFX0JHXzE7Ci0JCQl0b3BvbG9neUltYWdlPUdSQVBISUNfQ0xJRU5UXzE7Ci0JCQljbGllbnRTY2FsZV8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9SVU4pOwotCQkJYnJlYWs7Ci0JCWNhc2UgU2NlbmFyaW9Db250ZXh0LldTX0lOU1RBTEw6Ci0JCQlpY29uSW1hZ2U9SUNPTl9TQ0FMRV9CR18yOwotCQkJdG9wb2xvZ3lJbWFnZT1HUkFQSElDX0NMSUVOVF8yOwotCQkJY2xpZW50U2NhbGVfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfSU5TVEFMTCk7Ci0JCQlicmVhazsKLQkJY2FzZSBTY2VuYXJpb0NvbnRleHQuV1NfREVQTE9ZOgotCQkJaWNvbkltYWdlPUlDT05fU0NBTEVfQkdfMzsKLQkJCXRvcG9sb2d5SW1hZ2U9R1JBUEhJQ19DTElFTlRfMzsKLQkJCWNsaWVudFNjYWxlXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX0RFUExPWSk7Ci0JCQlicmVhazsKLQkJY2FzZSBTY2VuYXJpb0NvbnRleHQuV1NfQVNTRU1CTEU6Ci0JCQlpY29uSW1hZ2U9SUNPTl9TQ0FMRV9CR180OwotCQkJdG9wb2xvZ3lJbWFnZT1HUkFQSElDX0NMSUVOVF80OwotCQkJY2xpZW50U2NhbGVfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfQVNTRU1CTEUpOwotCQkJYnJlYWs7Ci0JCWNhc2UgU2NlbmFyaW9Db250ZXh0LldTX0RFVkVMT1A6Ci0JCQlpY29uSW1hZ2U9SUNPTl9TQ0FMRV9CR181OwotCQkJdG9wb2xvZ3lJbWFnZT1HUkFQSElDX0NMSUVOVF81OwotCQkJY2xpZW50U2NhbGVfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfREVWRUxPUCk7Ci0JCQlicmVhazsKLQkJY2FzZSBTY2VuYXJpb0NvbnRleHQuV1NfTk9ORToJCQkKLQkJCWlmICghY2xpZW50T25seV8pCi0JCQl7Ci0JCQkJaWYgKGVuYWJsZVByb3h5XykgIC8vaWYgc2VydmljZSBpcyBzdGFydCBvciB0ZXN0Li4uCi0JCQkJCWljb25JbWFnZT1JQ09OX1NDQUxFX0JHXzY7ICAKLQkJCQllbHNlCi0JCQkJCWljb25JbWFnZT1udWxsOwotCQkJCXRvcG9sb2d5SW1hZ2U9R1JBUEhJQ19DTElFTlRfNjsKLQkJCQljbGllbnRTY2FsZV8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9DTElFTlQpOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCXNldENsaWVudFNjYWxlKFNjZW5hcmlvQ29udGV4dC5XU19ERVZFTE9QKTsgLy8ibm8gc2VsZWN0aW9uIiBpcyBub3QgYWxsb3dlZC4uLm11c3QgZGV2ZWxvcCBjbGllbnQgQCBtaW5pbXVtCi0JCQkJaWNvbkltYWdlPUlDT05fU0NBTEVfQkdfNTsKLQkJCQl0b3BvbG9neUltYWdlPUdSQVBISUNfQ0xJRU5UXzU7CQkJCQotCQkJCWNsaWVudFNjYWxlXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX0RFVkVMT1ApOwkJCQotCQkJfQotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlicmVhazsKLQkJfQotCQljbGllbnRTY2FsZV8uc2V0QmFja2dyb3VuZEltYWdlKGltYWdlUmVnXy5nZXQoaWNvbkltYWdlKSk7Ci0JCXRvcG9sb2d5U3BvdF8uc2V0SW1hZ2UoaW1hZ2VSZWdfLmdldCh0b3BvbG9neUltYWdlKSk7CQotICB9Ci0gIAotCXB1YmxpYyBJU3RydWN0dXJlZFNlbGVjdGlvbiBnZXRPYmplY3RTZWxlY3Rpb24oKQotCXsKLQkJcmV0dXJuIG9iamVjdFNlbGVjdGlvbl87CQkKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0T2JqZWN0U2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikKLQl7Ci0gICAgICAgIG9iamVjdFNlbGVjdGlvbl8gPSBzZWxlY3Rpb247Ci0JfQotCQotICBwdWJsaWMgaW50IGdldENsaWVudEdlbmVyYXRpb24oKQotICB7Ci0JICByZXR1cm4gY2xpZW50U2NhbGVTZXR0aW5nXzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50R2VuZXJhdGlvbihpbnQgdmFsdWUpCi0gIHsKLQkgIGlmIChjbGllbnRPbmx5XyAmJiB2YWx1ZSA9PSBTY2VuYXJpb0NvbnRleHQuV1NfTk9ORSkgewotCQkgIHZhbHVlID0gU2NlbmFyaW9Db250ZXh0LldTX0RFVkVMT1A7Ci0JCSAgc2V0RGV2ZWxvcENsaWVudCh0cnVlKTsKLQkgIH0KLQotCSAgc2V0Q2xpZW50U2NhbGUodmFsdWUpOwotCSAgCSAgCi0JICBzZXRHcmFwaGljcyh2YWx1ZSk7Ci0JICBzaG93U3VtbWFyeSh2YWx1ZSA8IFNjZW5hcmlvQ29udGV4dC5XU19OT05FKTsKLQkgIHVwZGF0ZUZpZWxkcyh2YWx1ZSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFByb2plY3QoSVByb2plY3QgcHJvamVjdCkKLSAgewotCSAgcHJvamVjdF8gPSBwcm9qZWN0OwotICB9Ci0gIAotICBwdWJsaWMgSVByb2plY3QgZ2V0UHJvamVjdCgpCi0gIHsKLQkgIHJldHVybiBwcm9qZWN0XzsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDbGllbnRSdW50aW1lSWQoKQotICB7Ci0JICAvLyBjYWxjdWxhdGUgdGhlIG1vc3QgYXBwcm9wcmlhdGUgY2xpZW50UnVudGltZUlkIGJhc2VkIG9uIGN1cnJlbnQgc2V0dGluZ3MuCi0JICByZXR1cm4gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50UnVudGltZUlkKGdldFR5cGVSdW50aW1lU2VydmVyKCksIGdldENsaWVudFByb2plY3ROYW1lKCksIGdldENsaWVudENvbXBvbmVudFR5cGUoKSk7ICAgCi0KLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50Q29tcG9uZW50VHlwZShTdHJpbmcgdHlwZSkKLSAgewotCSAgY2xpZW50Q29tcG9uZW50VHlwZV89IHR5cGU7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudENvbXBvbmVudFR5cGUoKQotICB7Ci0JICByZXR1cm4gY2xpZW50Q29tcG9uZW50VHlwZV87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRQcm9qZWN0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIHByb2plY3ROYW1lXyA9IG5hbWU7ICAgICAgCi0JaExpbmtDbGllbnRQcm9qZWN0Xy5zZXRUZXh0KENMSUVOVF9QUk9KRUNUX1BSRUZJWCArICIgIiArIHByb2plY3ROYW1lXyk7CQotCWhMaW5rQ2xpZW50UHJvamVjdF8ucGFjayh0cnVlKTsgICAKLQlwYWNrSXQoKTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDbGllbnRQcm9qZWN0TmFtZSgpCi0gIHsgIAotCSAgaWYgKHByb2plY3ROYW1lXyA9PSBudWxsKQotCQkgIHJldHVybiAiIjsKLQkgIHJldHVybiBwcm9qZWN0TmFtZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudEVhclByb2plY3ROYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gICAgZWFyUHJvamVjdE5hbWVfID0gbmFtZTsgIAotICAgIHJlZnJlc2hFQVJMaW5rKCk7Ci0gICAJCSAgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZWZyZXNoRUFSTGluaygpCi0gIHsKLQkgIGhMaW5rQ2xpZW50RUFSXy5zZXRWaXNpYmxlKG5lZWRFYXJfICYmIGdldEdlbmVyYXRlUHJveHkoKSk7Ci0JICBpZiAobmVlZEVhcl8pCi0JICB7ICAgIAkKLQkJICBoTGlua0NsaWVudEVBUl8uc2V0VGV4dChDTElFTlRfRUFSX1BSRUZJWCArICIgIiArIGVhclByb2plY3ROYW1lXyk7Ci0JCSAgaExpbmtDbGllbnRFQVJfLnBhY2sodHJ1ZSk7IAotCQkgIHBhY2tJdCgpOwotCSAgfSAgCi0gIH0KLQkgICAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoKQotICB7Ci0JICBpZiAoZWFyUHJvamVjdE5hbWVfID09IG51bGwpCi0JCSAgcmV0dXJuICIiOwotICAgICByZXR1cm4gZWFyUHJvamVjdE5hbWVfOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudE5lZWRFQVIoYm9vbGVhbiBiKQotICB7Ci0gICAgIG5lZWRFYXJfID0gYjsKLSAgICAgcmVmcmVzaEVBUkxpbmsoKTsKLSAgfSAKLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldENsaWVudE5lZWRFQVIoKQotICB7Ci0gICAgIHJldHVybiBuZWVkRWFyXzsKLSAgfSAKLSAgCi0gIHB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpCi0JewotCQlyZXR1cm4gcGFyc2VyXzsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgcGFyc2VyKQotCXsKLQkJcGFyc2VyXyA9IHBhcnNlcjsJCQotCX0KLSAgCi0gICAgLy9mb3IgdGhlIHB1cnBvc2VzIG9mIGRpc2FibGluZyB0aGUgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBjb250cm9scyBmcm9tIHRoZSBwcmVmZXJlbmNlcyBkaWFsb2cKLQlwdWJsaWMgdm9pZCBkaXNhYmxlTm9uUHJlZmVyZW5jZVdpZGdldHMoKQotCXsKLQkJaWYgKGhDb21wQ2xpZW50XyAhPSBudWxsKQotCQl7Ci0JCQloQ29tcENsaWVudF8uc2V0VmlzaWJsZShmYWxzZSk7CQkJCi0JCX0KLQl9Ci0JCi0JcHVibGljIGludCBnZXRWYWxpZGF0aW9uU3RhdGUoKQotCXsKLQkJcmV0dXJuIHZhbGlkYXRpb25TdGF0ZV87Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldFZhbGlkYXRpb25TdGF0ZShpbnQgc3RhdGUpCi0JewotCQl2YWxpZGF0aW9uU3RhdGVfID0gc3RhdGU7Ci0JfQotCQkKLQlwdWJsaWMgSVN0YXR1cyBjaGVja01pc3NpbmdGaWVsZFN0YXR1cygpIHsKLQotCQlWYWxpZGF0aW9uVXRpbHMgdmFsVXRpbHMgPSBuZXcgVmFsaWRhdGlvblV0aWxzKCk7Ci0JCVN0cmluZyBydW50aW1lSWQgPSBnZXRUeXBlUnVudGltZVNlcnZlcigpLmdldFJ1bnRpbWVJZCgpOwotCQlTdHJpbmcgc2VydmVySWQgPSBnZXRUeXBlUnVudGltZVNlcnZlcigpLmdldFNlcnZlcklkKCk7Ci0JCVN0cmluZyBwcm9qZWN0TmFtZSA9IGdldENsaWVudFByb2plY3ROYW1lKCk7Ci0JCWJvb2xlYW4gbmVlZEVhciA9IGdldENsaWVudE5lZWRFQVIoKTsKLQkJU3RyaW5nIGVhclByb2plY3ROYW1lID0gZ2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoKTsKLQkJU3RyaW5nIHByb2plY3RUeXBlSWQgPSBnZXRDbGllbnRDb21wb25lbnRUeXBlKCk7Ci0JCUlTdGF0dXMgbWlzc2luZ0ZpZWxkU3RhdHVzID0gdmFsVXRpbHMuY2hlY2tNaXNzaW5nRmllbGRTdGF0dXModmFsaWRhdGlvblN0YXRlXywgbnVsbCwgbnVsbCwgcnVudGltZUlkLCBzZXJ2ZXJJZCwKLQkJCQlwcm9qZWN0TmFtZSwgbmVlZEVhciwgZWFyUHJvamVjdE5hbWUsIHByb2plY3RUeXBlSWQsIHRydWUpOwotCQlyZXR1cm4gbWlzc2luZ0ZpZWxkU3RhdHVzOwotCX0KLQotCXB1YmxpYyBJU3RhdHVzIGNoZWNrRXJyb3JTdGF0dXMoKSB7Ci0KLQkJVmFsaWRhdGlvblV0aWxzIHZhbFV0aWxzID0gbmV3IFZhbGlkYXRpb25VdGlscygpOwotCQlTdHJpbmcgcHJvamVjdE5hbWUgPSBnZXRDbGllbnRQcm9qZWN0TmFtZSgpOwotCQlib29sZWFuIG5lZWRFYXIgPSBnZXRDbGllbnROZWVkRUFSKCk7Ci0JCVN0cmluZyBlYXJQcm9qZWN0TmFtZSA9IGdldENsaWVudEVhclByb2plY3ROYW1lKCk7Ci0JCVN0cmluZyBwcm9qZWN0VHlwZUlkID0gZ2V0Q2xpZW50Q29tcG9uZW50VHlwZSgpOwotCQkvLyBEZWZlY3QgMjE1MDg0IC0gbm8gbmVlZCB0byBwYXNzIGluaXRpYWwgcHJvamVjdCBmb3IgY2xpZW50IHNjZW5hcmlvCi0JCUlTdGF0dXMgcG9zc2libGVFcnJvclN0YXR1cyA9IHZhbFV0aWxzLmNoZWNrRXJyb3JTdGF0dXModmFsaWRhdGlvblN0YXRlXywgZ2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoKSwgcHJvamVjdE5hbWUsIiIsIG5lZWRFYXIsIGVhclByb2plY3ROYW1lLCBwcm9qZWN0VHlwZUlkLCB0cnVlKTsKLQkJCXJldHVybiBwb3NzaWJsZUVycm9yU3RhdHVzOwotCX0KLQotCXB1YmxpYyBJU3RhdHVzIGNoZWNrV2FybmluZ1N0YXR1cygpIHsKLQkJVmFsaWRhdGlvblV0aWxzIHZhbFV0aWxzID0gbmV3IFZhbGlkYXRpb25VdGlscygpOwotCi0JCWludCBzY2FsZVNldHRpbmcgPSBnZXRDbGllbnRHZW5lcmF0aW9uKCk7Ci0JCVN0cmluZyBzZXJ2ZXJJZCA9IGdldFR5cGVSdW50aW1lU2VydmVyKCkuZ2V0U2VydmVySWQoKTsKLQkJSVN0YXR1cyB3YXJuaW5nU3RhdHVzID0gdmFsVXRpbHMuY2hlY2tXYXJuaW5nU3RhdHVzKHZhbGlkYXRpb25TdGF0ZV8sIHNjYWxlU2V0dGluZywgc2VydmVySWQsIGdldFR5cGVSdW50aW1lU2VydmVyKCkuZ2V0U2VydmVySW5zdGFuY2VJZCgpLCB0cnVlKTsKLQkJcmV0dXJuIHdhcm5pbmdTdGF0dXM7Ci0JfQkKLQkKLQkKLSAgcHJpdmF0ZSBjbGFzcyBTY2FsZVNlbGVjdGlvbkxpc3RlbmVyIGltcGxlbWVudHMgU2VsZWN0aW9uTGlzdGVuZXIKLQl7Ci0JCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJCSAgICBpbnQgb2xkQ2xpZW50U2NhbGVTZXR0aW5nID0gY2xpZW50U2NhbGVTZXR0aW5nXzsKLQkJCSAgICAJCQkJCi0JCQkJaW50IHNlbGVjdGlvbiA9IGNsaWVudFNjYWxlXy5nZXRTZWxlY3Rpb24oKTsKLQkJCQkKLQkJCQkvL1dBUk5JTkc6IE5vIHNjYWxlIGNoYW5nZSBzaG91bGQgYmUgZG9uZSBhZnRlciB0aGUgbGluZSBiZWxvdywgJ3NlbGVjdGlvbicgbWlnaHQgbm90IGhhdmUgdGhlIGNvcnJlY3QgdmFsdWUKLQkJCQlzZXRDbGllbnRHZW5lcmF0aW9uKHNlbGVjdGlvbik7Ci0JCQkJCi0JCQkJLy9XaGVuIGNsaWVudCBzbGlkZXIgbW92ZXMgb3V0IG9mIHRoZSAiV1NfTk9ORSIgc3RhdGUsIFZBTElEQVRFX0FMTCBzaG91bGQgYmUgZG9uZS4gCi0JCQkJLy9PdGhlcndpc2UsIFZBTElEQVRFX1NDQUxFX0NIQU5HRVMgaXMgc3VmZmljaWVudC4KLQkJCQlpZiAob2xkQ2xpZW50U2NhbGVTZXR0aW5nPT1TY2VuYXJpb0NvbnRleHQuV1NfTk9ORSAmJiBjbGllbnRTY2FsZVNldHRpbmdfIT1TY2VuYXJpb0NvbnRleHQuV1NfTk9ORSkKLQkJCQl7Ci0JCQkJCXZhbGlkYXRpb25TdGF0ZV8gPSBWYWxpZGF0aW9uVXRpbHMuVkFMSURBVEVfQUxMOwotCQkJCX0KLQkJCQllbHNlCi0JCQkJewotCQkJCQl2YWxpZGF0aW9uU3RhdGVfID0gKG5ldyBWYWxpZGF0aW9uVXRpbHMoKSkuZ2V0TmV3VmFsaWRhdGlvblN0YXRlKHZhbGlkYXRpb25TdGF0ZV8sIFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9TQ0FMRV9DSEFOR0VTKTsJCi0JCQkJfQkJCQkKLQkJCQlzdGF0dXNMaXN0ZW5lcl8uaGFuZGxlRXZlbnQobnVsbCk7IC8vdmFsaWRhdGUgdGhlIHBhZ2UKLQkJCX0KLQkJCi0KLQkJcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJCXdpZGdldFNlbGVjdGVkKGUpOwotCQl9Ci0JfSAKLSAgCi0gIHByaXZhdGUgdm9pZCByZWZyZXNoU2VydmVyUnVudGltZVNlbGVjdGlvbigpCi0JewkJCi0JCS8vbmV3IHVwIFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZAotCQlDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQgY2xpZW50UlREZWZhdWx0Q21kID0gbmV3IENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpOwotCQkKLQkJICAvL2NhbGwgc2V0dGVycyBvZiBuZXcgZGVmYXVsdGluZyBjb21tYW5kOgotCQkgIGNsaWVudFJURGVmYXVsdENtZC5zZXRDbGllbnRJbml0aWFsU2VsZWN0aW9uKGdldE9iamVjdFNlbGVjdGlvbigpKTsKLQkJICBjbGllbnRSVERlZmF1bHRDbWQuc2V0Q2xpZW50SW5pdGlhbFByb2plY3QoZ2V0UHJvamVjdCgpKTsJICAgICAgCi0JICAgICAgY2xpZW50UlREZWZhdWx0Q21kLnNldENsaWVudFR5cGVSdW50aW1lU2VydmVyKGdldFR5cGVSdW50aW1lU2VydmVyKCkpOwotCQkgIGNsaWVudFJURGVmYXVsdENtZC5zZXRXZWJTZXJ2aWNlc1BhcnNlcihnZXRXZWJTZXJ2aWNlc1BhcnNlcigpKTsgICAgIAotCSAgICAgIGNsaWVudFJURGVmYXVsdENtZC5zZXRDbGllbnRFYXJQcm9qZWN0TmFtZShnZXRDbGllbnRFYXJQcm9qZWN0TmFtZSgpKTsKLQkJICAJCSAgCi0JCSAgY2xpZW50UlREZWZhdWx0Q21kLmV4ZWN1dGUobnVsbCwgbnVsbCk7Ci0JCSAgCi0JCSAgLy9wZXJmb3JtIG1hcHBpbmdzIGZyb20gdGhlIGRlZmF1bHRpbmcgY29tbWFuZCB0byB0aGUgcHJvamVjdCBzZXR0aW5ncy4uLgkKLQkJICBzZXRDbGllbnRQcm9qZWN0TmFtZShjbGllbnRSVERlZmF1bHRDbWQuZ2V0Q2xpZW50UHJvamVjdE5hbWUoKSk7Ci0JCSAgc2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoY2xpZW50UlREZWZhdWx0Q21kLmdldENsaWVudEVhclByb2plY3ROYW1lKCkpOwotCQkgIHNldENsaWVudENvbXBvbmVudFR5cGUoY2xpZW50UlREZWZhdWx0Q21kLmdldENsaWVudENvbXBvbmVudFR5cGUoKSk7Ci0JCSAgc2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoY2xpZW50UlREZWZhdWx0Q21kLmdldENsaWVudFR5cGVSdW50aW1lU2VydmVyKCkpOwotICAgICAgICAgIHNldENsaWVudE5lZWRFQVIoY2xpZW50UlREZWZhdWx0Q21kLmdldENsaWVudE5lZWRFQVIoKSk7Ci0JfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvYmluZGluZy9DbGllbnRXaWRnZXRCaW5kaW5nLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvYmluZGluZy9DbGllbnRXaWRnZXRCaW5kaW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZTI0NTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvQ2xpZW50V2lkZ2V0QmluZGluZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDc4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIwNCAxMjQ0MDggICAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyICAgICAgICAgIAotICogMjAwNjAyMDQgMTIxNjA1ICAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjAyMjEgMTE5MTExICAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjAyMjMgMTI5MDIwICAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MDYgMTM1MzUwICAgIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDQwNyAxMzU0MTUgICAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQyNSAxMzgwNTIgICAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNTE3IDE0MTg4MCAgICBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MDUyNCAgIDE0MjYzNSBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA2MDUyOSAgIDE0MTQyMiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA1MzAgICAxNDQzNTgga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNTMwICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDcxNyAgIDE0NjMzMiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICogMjAwNjA3MjggICAxNDU0MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwODIxICAgMTUzODMzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBBbGxvdyB0aGUgV2ViIFNlcnZpY2UgVGVzdCBleHRlbnNpb24gcG9pbnQgdG8gc3BlY2lmeSB0aGUgc3VwcG9ydGVkIGNsaWVudCBydW50aW1lCi0gKiAyMDA2MDgyNSAgIDE1NTExNCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MDUwMiAgIDE4MDMwNCBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA3MTAzMSAgIDE0MDUxOCBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA4MDMyNSAgIDE4NDc2MSBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA4MDUwNiAgIDIyNzg0OCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgRGlzYWJsZWQgIlJ1biBvbiBTZXJ2ZXIiIGNoZWNrYm94IGlzIGluIGNoZWNrZWQgc3RhdGUKLSAqIDIwMDgwNzE1ICAgMjQwNzIyIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBDYW5ub3Qgc2V0dXAgVENQL0lQIE1vbml0b3IgZm9yIHNvYXAxMiBlbmRwb2ludHMKLSAqIDIwMDgwNzIyICAgMjQwMjMxIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmJpbmRpbmc7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLkNoZWNrRm9yU2VydmljZVByb2plY3RDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLmRhdGEuRWNsaXBzZUlQYXRoMlVSTFN0cmluZ1RyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uRmluaXNoRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1vbi5TY2VuYXJpb0NsZWFudXBDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5leHRlbnNpb24uQ2xpZW50Um9vdEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5leHRlbnNpb24uUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmV4dGVuc2lvbi5QcmVDbGllbnRJbnN0YWxsQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5DbGllbnRXaXphcmRXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5XU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5DbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLkNsaWVudEV4dGVuc2lvbkZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5ydW50aW1lLkNsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LkNsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5DbGllbnRUZXN0RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5DbGllbnRUZXN0V2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuRmluaXNoRGVmYXVsdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5GaW5pc2hUZXN0RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5UZXN0RGVmYXVsdGluZ0ZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2VxdWVuY2VGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TaW1wbGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TZWxlY3Rpb25Db21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9ucy5Bc3NlbWJsZUNsaWVudEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHRlbnNpb25zLkRlcGxveUNsaWVudEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHRlbnNpb25zLkRldmVsb3BDbGllbnRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9ucy5JbnN0YWxsQ2xpZW50RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnMuUnVuQ2xpZW50RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vbml0b3IuR2V0TW9uaXRvckNvbW1hbmQ7Ci0KLQotcHVibGljIGNsYXNzIENsaWVudFdpZGdldEJpbmRpbmcgaW1wbGVtZW50cyBDb21tYW5kV2lkZ2V0QmluZGluZwoteyAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNjcmVhdGUoKQotICAgKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudEZhY3RvcnkgY3JlYXRlKCkKLSAgewotICAgIHJldHVybiBuZXcgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSgpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGNyZWF0ZSgpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRSb290Q29tbWFuZEZyYWdtZW50KCk7ICAKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIH07Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJDYW5GaW5pc2gob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckNhbkZpbmlzaChDYW5GaW5pc2hSZWdpc3RyeSBjYW5GaW5pc2hSZWdpc3RyeSkKLSAgewotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICB7IAotCSAgLy9qdmggbWFwcGluZyBmb3IgaW5pdGlhbHNlbGVjdGlvbj8/Pz8KLQkgIAotICAgIC8vIEJlZm9yZSBDbGllbnRXaXphcmRXaWRnZXQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluc3RhbGxDbGllbnQiLCBDbGllbnRXaXphcmRXaWRnZXQuY2xhc3MgKTsgICAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIENsaWVudFdpemFyZFdpZGdldC5jbGFzcyApOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiTW9uaXRvclNlcnZpY2UiLCBDbGllbnRXaXphcmRXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50R2VuZXJhdGlvbiIsIENsaWVudFdpemFyZFdpZGdldC5jbGFzcyApOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXZlbG9wQ2xpZW50IiwgQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkFzc2VtYmxlQ2xpZW50IiwgQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkRlcGxveUNsaWVudCIsIENsaWVudFdpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTdGFydENsaWVudCIsIENsaWVudFdpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgCi0gICAgLy8gQWZ0ZXIgQ2xpZW50V2l6YXJkV2lkZ2V0Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXQuY2xhc3MsICJJbnN0YWxsQ2xpZW50IiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXQuY2xhc3MsICJNb25pdG9yU2VydmljZSIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldC5jbGFzcywgIlJlc291cmNlQ29udGV4dCIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldC5jbGFzcywgIkNsaWVudFByb2plY3ROYW1lIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldC5jbGFzcywgIkRldmVsb3BDbGllbnQiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXQuY2xhc3MsICJBc3NlbWJsZUNsaWVudCIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldC5jbGFzcywgIkRlcGxveUNsaWVudCIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldC5jbGFzcywgIlN0YXJ0Q2xpZW50IiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0KLSAgICAvL2p2aCBhZGRlZC4uCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzLCAiUHJvamVjdCIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldC5jbGFzcywgIldlYlNlcnZpY2VzUGFyc2VyIiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzLCAiV3NkbFVSSSIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgICAgICAgCi0gICAgLy9qdmggLSByZXJvdXRlZCB0aGUgZGVmYXVsdGluZyBjb21tYW5kIHRvIHRoZSBDbGllbnRXaXphcmRXaWRnZXQgCi0gICAgLy8gQmVmb3JlIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIENsaWVudFdpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdE5hbWUiLCBDbGllbnRXaXphcmRXaWRnZXQuY2xhc3MpOyAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIENsaWVudFdpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50Q29tcG9uZW50VHlwZSIsIENsaWVudFdpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50TmVlZEVBUiIsIENsaWVudFdpemFyZFdpZGdldC5jbGFzcyk7ICAgIAotICAgIAotICAgIC8vanZoIC0gcmVyb3V0ZWQgZnJvbSBDbGllbnRXaXphcmRXaWRnZXQgaW5zdGVhZCBvZiBydW50aW1lc2VydmVyd2lkZ2V0LSBhZGQgZ2V0dGVycyB0byBDbGllbnRXaXphcmRXaWRnZXQgZm9yIHRoZW0KLSAgICAvLyBBZnRlciBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzLCAiQ2xpZW50UnVudGltZUlkIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldC5jbGFzcywgIkNsaWVudFByb2plY3ROYW1lIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldC5jbGFzcywgIkNsaWVudEVhclByb2plY3ROYW1lIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOyAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXQuY2xhc3MsICJDbGllbnRDb21wb25lbnRUeXBlIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldC5jbGFzcywgIkNsaWVudE5lZWRFQVIiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAgIAotICAgIC8vIEJlZm9yZSBXU0RMU2VsZWN0aW9uV2lkZ2V0V3JhcHBlcgotICAgIC8vIGp2aCAtIHJlcm91dGVkIHRoZXNlIHRvIENsaWVudFdpemFyZFdpZGdldCAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZVVSSSIsIENsaWVudFdpemFyZFdpZGdldC5jbGFzcyApOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBDbGllbnRXaXphcmRXaWRnZXQuY2xhc3MgKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDb21wb25lbnROYW1lIiwgQ2xpZW50V2l6YXJkV2lkZ2V0LmNsYXNzICk7Ci0gICAgCi0vKiAgICAvLyBBZnRlciBXU0RMU2VsZWN0aW9uV2lkZ2V0V3JhcHBlcgotICAgIC8vanZoIC0gcmVyb3V0ZSB0aGVzZSBmcm9tIHRoZSBkaWFsb2cgdG8gQ2xpZW50V2l6YXJkV2lkZ2V0IC0gY2FsbCBzZXR0ZXJzIG9uIHRoZSBvdGhlciBkaWFsb2dzLi4uCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbldpZGdldFdyYXBwZXIuY2xhc3MsICJXc2RsVVJJIiwgV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25XaWRnZXRXcmFwcGVyLmNsYXNzLCAiV2ViU2VydmljZXNQYXJzZXIiLCBXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbldpZGdldFdyYXBwZXIuY2xhc3MsICJQcm9qZWN0IiwgV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25XaWRnZXRXcmFwcGVyLmNsYXNzLCAiQ29tcG9uZW50TmFtZSIsIFdTRExTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzKTsKLSovICAgIAotCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiR2VuZXJhdGVQcm94eSIsVGVzdERlZmF1bHRpbmdGcmFnbWVudC5jbGFzcyk7Ci0JZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRSdW50aW1lSWQiLFRlc3REZWZhdWx0aW5nRnJhZ21lbnQuY2xhc3MpOwotCQotICAgIC8vIEJlZm9yZSBDbGllbnQgVGVzdCB3aWRnZXQuCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsRmluaXNoVGVzdEZyYWdtZW50LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlRlc3RTZXJ2aWNlIiwgQ2xpZW50VGVzdFdpZGdldC5jbGFzcyApOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUnVuVGVzdENsaWVudCIsIENsaWVudFRlc3RXaWRnZXQuY2xhc3MgKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhQcmVDbGllbnRJbnN0YWxsQ29tbWFuZC5jbGFzcywgIkNhblJ1blRlc3RDbGllbnQiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VsZWN0aW9uQ29tbWFuZC5jbGFzcywgIkluaXRpYWxTZWxlY3Rpb24iLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlNhbXBsZVByb2plY3QiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlNhbXBsZVByb2plY3RFQVIiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoVGVzdERlZmF1bHRpbmdGcmFnbWVudC5jbGFzcywgIlRlc3RGYWNpbGl0eSIsQ2xpZW50VGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIkZvbGRlciIsQ2xpZW50VGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIkpzcEZvbGRlciIsQ2xpZW50VGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLENsaWVudFRlc3RXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQuY2xhc3MsICJNZXRob2RzIixDbGllbnRUZXN0V2lkZ2V0LmNsYXNzKTsKLQotICAgIC8vIEFmdGVyIHRoZSBjbGllbnQgdGVzdCB3aWRnZXQgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiU2FtcGxlUHJvamVjdEVBUiIsRmluaXNoRGVmYXVsdENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFRlc3RXaWRnZXQuY2xhc3MsICJTYW1wbGVQcm9qZWN0IixGaW5pc2hEZWZhdWx0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIlRlc3RGYWNpbGl0eSIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIkZvbGRlciIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIkpzcEZvbGRlciIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFRlc3RXaWRnZXQuY2xhc3MsICJDYW5SdW5UZXN0Q2xpZW50IixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiTWV0aG9kcyIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7ICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFRlc3RXaWRnZXQuY2xhc3MsICJUZXN0U2VydmljZSIsRmluaXNoVGVzdEZyYWdtZW50LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiVGVzdElEIixGaW5pc2hUZXN0RnJhZ21lbnQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFRlc3RXaWRnZXQuY2xhc3MsICJJc1Rlc3RXaWRnZXQiLEZpbmlzaFRlc3RGcmFnbWVudC5jbGFzcyk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3MoV2lkZ2V0UmVnaXN0cnkgd2lkZ2V0UmVnaXN0cnkpCi0gIHsKLSAgICAgICAKLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoICJDbGllbnRXaXphcmRXaWRnZXQiLCAKLSAgICAJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX1RJVExFX1dTX1BST0pFQ1QsCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1dTX0NMSUVOVCwKLQkJCQkgICAgICAgIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKQotCQkJCSAgICAgICAgewotCQkJCSAgICAgICAgICBwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkKLQkJCQkgICAgICAgICAgewotCQkJCSAgICAgICAgICAgIHJldHVybiBuZXcgQ2xpZW50V2l6YXJkV2lkZ2V0KCk7Ci0JCQkJICAgICAgICAgIH0KLQkJCQkgICAgICAgIH0gKTsKLSAgICAKLSAgICAvL2p2aAotICAgIC8qd2lkZ2V0UmVnaXN0cnkuYWRkKCAiQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldCIsIAotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfQ0xJRU5UX1JVTlRJTUVfU0VMRUNUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfREVTQ19XU19DTElFTlRfUlVOVElNRV9TRUxFQ1RJT04sCi0JCQkJCQluZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLQkJCQkJCSAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0JCQkJCQkgIHsKLQkJCQkJCSAgICByZXR1cm4gbmV3IENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXQoKTsKLQkJCQkJCSAgfQotCQkJCQkJfSApOyovCi0gICAgCi0gICAgLy9qdmgKLSAgICAvKndpZGdldFJlZ2lzdHJ5LmFkZCggIldTRExTZWxlY3Rpb25XaWRnZXRXcmFwcGVyIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9USVRMRV9XU19TRUxFQ1RJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1dTX1NFTEVDVElPTiwKLQkJICAgICAgICAgICAgICAgIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKQotICAgICAgICAgICAgICAgICAgICAgICAgewotCQkgICAgICAgICAgICAgICAgICBwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkKLQkJICAgICAgICAgICAgICAgICAgewotCQkgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV1NETFNlbGVjdGlvbldpZGdldFdyYXBwZXIoKTsKLQkJICAgICAgICAgICAgICAgICAgfQotCQkgICAgICAgICAgICAgICAgfSApOyovCi0gICAgCi0gICAgd2lkZ2V0UmVnaXN0cnkuYWRkKCAiQ2xpZW50VGVzdFdpZGdldCIsIAotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfU0FNUExFLAotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfREVTQ19XU19TQU1QTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENsaWVudFRlc3RXaWRnZXQoKTsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICB9Ci0gIAotICBwcml2YXRlIGNsYXNzIENsaWVudFJvb3RDb21tYW5kRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50Ci0gIHsKLSAgICBwdWJsaWMgQ2xpZW50Um9vdENvbW1hbmRGcmFnbWVudCgpCi0gICAgewotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBTY2VuYXJpb0NsZWFudXBDb21tYW5kKCksICIiICkpOwotICAgICAgCi0gICAgICAvL2FkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgQ2hlY2tGb3JNaXNzaW5nRmlsZXMoKSwgIiIgKSApOwotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCh0cnVlKSwgIiIgKSApOwotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQoKSwgIiIpKTsgLy9qdmggbW92ZWQgdGhpcyB1cAotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQoKSwgIiIpKTsgIC8vanZoIG1vdmVkIHRoaXMgdXAgICAgICAKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCAiQ2xpZW50V2l6YXJkV2lkZ2V0IiApICk7Ci0JICAvL2FkZCggbmV3IFRlc3RDb21tYW5kRmFjdG9yeUZyYWdtZW50KCkgKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZCgpLCAiIiApKTsKLSAgICAgIAotICAgICAgLy9hZGQoIG5ldyBUZXN0Q29tbWFuZEZhY3RvcnlGcmFnbWVudDIoKSApOwotICAgICAgLy9hZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IENoZWNrRm9yU2VydmljZVByb2plY3RDb21tYW5kKCksICIiKSk7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kKCB0cnVlICksICIiKSk7Ci0gICAgICAvL2FkZChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IENsaWVudFNlcnZlckRlcGxveWFibGVDb25maWdDb21tYW5kKGZhbHNlKSwgIiIpKTsgLy9Ob3RlOiBhZGRlZCBoZXJlIGZvciBjbGllbnQgICAgICAKLSAgICAgIC8vYWRkKCBuZXcgQ2xpZW50RXh0ZW5zaW9uRnJhZ21lbnQoKSApOwotCSAgYWRkKCBuZXcgQ2xpZW50Um9vdEZyYWdtZW50KCkgKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZCgpLCAiIiApICk7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudChuZXcgR2V0TW9uaXRvckNvbW1hbmQoKSwgIiIpKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KG5ldyBUZXN0RGVmYXVsdGluZ0ZyYWdtZW50KCksIiIpKTsKLSAgICAgIGFkZCggbmV3IENsaWVudFRlc3RGcmFnbWVudCggIkNsaWVudFRlc3RXaWRnZXQiKSApOyAKLSAgICAgIGFkZChuZXcgRmluaXNoRnJhZ21lbnQoKSk7Ci0gICAgICAKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2NlbmFyaW9DbGVhbnVwQ29tbWFuZCgpLCAiIiApKTsKLSAgICB9Ci0gICAgCi0gICAgLyogKG5vbi1KYXZhZG9jKQotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50I3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkKLSAgICB7Ci0gICAgICAvL01hcCBTZWxlY3Rpb25Db21tYW5kCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZWxlY3Rpb25Db21tYW5kLmNsYXNzLCAiSW5pdGlhbFNlbGVjdGlvbiIsIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluaXRpYWxJbml0aWFsU2VsZWN0aW9uIiwgbnVsbCk7Ci0gICAgICAKLSAgICAgIC8vIE1hcCBDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCBjb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJbnN0YWxsQ2xpZW50IiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlRlc3RTZXJ2aWNlIiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiTW9uaXRvclNlcnZpY2UiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkRldmVsb3BDbGllbnQiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQXNzZW1ibGVDbGllbnQiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRGVwbG95Q2xpZW50IiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlN0YXJ0Q2xpZW50IiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0KLSAgICAgIAotICAgICAgLy8gTWFwIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQgY29tbWFuZC4KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIkluc3RhbGxDbGllbnQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiUnVuVGVzdENsaWVudCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsgICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiU3RhcnRDbGllbnQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiRGV2ZWxvcENsaWVudCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJBc3NlbWJsZUNsaWVudCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJEZXBsb3lDbGllbnQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0KLSAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlJlc291cmNlQ29udGV4dCIsIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7ICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIk1vbml0b3JTZXJ2aWNlIiwgR2V0TW9uaXRvckNvbW1hbmQuY2xhc3MpOwotICAgICAgCi0gICAgICAvLyBNYXAgQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kIGNvbW1hbmQgICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOyAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFJ1bnRpbWVJZCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIC8vZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUnVudGltZTJDbGllbnRUeXBlcyIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3ROYW1lIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50RWFyUHJvamVjdE5hbWUiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAvL2RhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhckNvbXBvbmVudE5hbWUiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAvL2RhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudENvbXBvbmVudE5hbWUiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRDb21wb25lbnRUeXBlIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgLy9kYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRKMkVFVmVyc2lvbiIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudE5lZWRFQVIiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0TmFtZSIsIENoZWNrRm9yU2VydmljZVByb2plY3RDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgLy8gTWFwIFdTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCBjb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VsZWN0aW9uQ29tbWFuZC5jbGFzcywgIkluaXRpYWxTZWxlY3Rpb24iLCBXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRJbml0aWFsUHJvamVjdCIsIG51bGwpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZVVSSSIsIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBuZXcgRWNsaXBzZUlQYXRoMlVSTFN0cmluZ1RyYW5zZm9ybWVyKCkpOwotICAgICAgICAgICAgICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJHZW5XU0lMIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV3NpbFVSSSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIC8vanZoIC0gcmVyb3V0ZWQgdGhlc2UgdG8gdGhlIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlVVJJIiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBuZXcgRWNsaXBzZUlQYXRoMlVSTFN0cmluZ1RyYW5zZm9ybWVyKCkpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ29tcG9uZW50TmFtZSIsIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgCi0gICAgICAvLyBXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZAotICAgICAgLy9qdmggLSByZXJvdXRlZCB0aGVzZSBmcm9tIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiV3NkbFVSSSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlc1BhcnNlciIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgR2V0TW9uaXRvckNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlc1BhcnNlciIsIEdldE1vbml0b3JDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgQ2hlY2tGb3JTZXJ2aWNlUHJvamVjdENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2VzUGFyc2VyIiwgQ2hlY2tGb3JTZXJ2aWNlUHJvamVjdENvbW1hbmQuY2xhc3MpOwotCi0gICAgICAKLSAgICAgIC8vanZoIC0gYWRkIGNvZGUgdG8gd2lkZ2V0IHNvIHRoYXQgdGhlIGFwcHJvcHJpYXRlIHNldHMgaGFwcGVuIGFuZCBkZWZhdWx0aW5nIG9jY3VycyBhZ2FpbiBhZnRlciBvYmplY3Qgc2VsZWN0aW9uCi0gICAgICAvKmRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEluaXRpYWxQcm9qZWN0IiwgbnVsbCk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXU0RMU2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlc1BhcnNlciIsIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ki8KLSAgICAgIAotCSAgLy8gU2V0dXAgdGhlIFByZUNsaWVudERldmVsb3BDb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRGVwbG95Q2xpZW50IiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSW5zdGFsbENsaWVudCIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICAgICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXZlbG9wQ2xpZW50IiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQXNzZW1ibGVDbGllbnQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTdGFydENsaWVudCIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiU3RhcnRTZXJ2aWNlIiwgbnVsbCk7ICAgICAgCi0KLSAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyk7ICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlJlc291cmNlQ29udGV4dCIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzKTsJCQkJCQkKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEoyRUVWZXJzaW9uIiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdCIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiTW9kdWxlIiwgbnVsbCApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdFR5cGUiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZVR5cGUiLCBudWxsKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3RFQVIiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhciIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotCSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MgKTsKLSAgICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UnVudGltZUlkIiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MgKTsKLSAgICAgIAotCQkJZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlQ2xpZW50IiwgbnVsbCApOwotCQkJCi0gICAgICAvLyBNYXAgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQgY29tbWFuZC4KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRFeHRlbnNpb25GcmFnbWVudC5jbGFzcyk7Ci0gICAgICAgICAgIAotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0RUFSIiwgV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3QiLCBXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzKTsKLSAgICAgICAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgQ2xpZW50VGVzdEZyYWdtZW50LmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBDbGllbnRUZXN0RnJhZ21lbnQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUHJveHlCZWFuIiwgQ2xpZW50VGVzdEZyYWdtZW50LmNsYXNzICk7Ci0gICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50TmVlZEVBUiIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MsIkNsaWVudEVhckNvbXBvbmVudE5hbWUiLCBudWxsKTsKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdCIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOyAKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50U2VydmVyIiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2FuUnVuVGVzdENsaWVudCIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MgKTsKLSAgICAgIAotICAgICAgLy8gTWFwIENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQgY29tbWFuZC4KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJQcm94eUJlYW4iLCBXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzKTsgICAgICAKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJQcm94eUJlYW4iLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsgCi0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiUHJveHlFbmRwb2ludCIsIEdldE1vbml0b3JDb21tYW5kLmNsYXNzKTsKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJDYW5HZW5lcmF0ZVByb3h5IiwgQ2xpZW50VGVzdEZyYWdtZW50LmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJDYW5HZW5lcmF0ZVByb3h5IiwgRmluaXNoVGVzdEZyYWdtZW50LmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJTZXRFbmRwb2ludE1ldGhvZCIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlNlcnZlckluc3RhbmNlSWQiLCBGaW5pc2hEZWZhdWx0Q29tbWFuZC5jbGFzcyk7Ci0KLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFByZUNsaWVudEluc3RhbGxDb21tYW5kLmNsYXNzLCAiQ2FuUnVuVGVzdENsaWVudCIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MgKTsKLQkgIAotICAgICAgLy8gR2V0TW9uaXRvckNvbW1hbmQKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEdldE1vbml0b3JDb21tYW5kLmNsYXNzLCAiRW5kcG9pbnRzIiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0KLSAgICAgIC8vIE1BUCBwb3N0IHNlcnZlciBjb25maWcgY2FsbCAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0RUFSIiwgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIkVhclByb2plY3ROYW1lIiwgbnVsbCk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFNlcnZlckluc3RhbmNlIiwgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIkV4aXN0aW5nU2VydmVySWQiLCBudWxsKTsKLSAgICAgIAotICAgICAgLy8gTWFwIFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQgY29tbWFuZC4KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFRlc3REZWZhdWx0aW5nRnJhZ21lbnQuY2xhc3MsICJUZXN0RmFjaWxpdHkiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlRlc3RGYWNpbGl0eSIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiRm9sZGVyIixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQuY2xhc3MsICJKc3BGb2xkZXIiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlJ1bkNsaWVudFRlc3QiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIk1ldGhvZHMiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlNhbXBsZVByb2plY3QiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlNhbXBsZVByb2plY3RFQVIiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgCi0gICAgICAgICAgICAKLSAgICAgIC8vTWFwcGluZ3MgdG8gZW5hYmxlIHBlZWstYWhlYWQgZm9yIFBhZ2UgMyBvZiB0aGUgY2xpZW50IHdpemFyZAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2UiLCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkVudmlyb25tZW50IiwgRGV2ZWxvcENsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgRGV2ZWxvcENsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZWxlY3Rpb24iLCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0TmFtZSIsIERldmVsb3BDbGllbnRGcmFnbWVudC5jbGFzcywgIlByb2plY3QiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdE5hbWUiLCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQuY2xhc3MsICJNb2R1bGUiLCBudWxsICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIERldmVsb3BDbGllbnRGcmFnbWVudC5jbGFzcywgIkVhclByb2plY3QiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50RWFyUHJvamVjdE5hbWUiLCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQuY2xhc3MsICJFYXIiLCBudWxsICk7Ci0gICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkVudmlyb25tZW50IiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ29udGV4dCIsIEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlbGVjdGlvbiIsIEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0TmFtZSIsIEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQuY2xhc3MsICJQcm9qZWN0IiwgbnVsbCApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3ROYW1lIiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcywgIk1vZHVsZSIsIG51bGwgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhclByb2plY3ROYW1lIiwgQXNzZW1ibGVDbGllbnRGcmFnbWVudC5jbGFzcywgIkVhclByb2plY3QiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50RWFyUHJvamVjdE5hbWUiLCBBc3NlbWJsZUNsaWVudEZyYWdtZW50LmNsYXNzLCAiRWFyIiwgbnVsbCApOwotICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2UiLCBEZXBsb3lDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRW52aXJvbm1lbnQiLCBEZXBsb3lDbGllbnRGcmFnbWVudC5jbGFzcyApOyAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ29udGV4dCIsIERlcGxveUNsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZWxlY3Rpb24iLCBEZXBsb3lDbGllbnRGcmFnbWVudC5jbGFzcyApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3ROYW1lIiwgRGVwbG95Q2xpZW50RnJhZ21lbnQuY2xhc3MsICJQcm9qZWN0IiwgbnVsbCApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3ROYW1lIiwgRGVwbG95Q2xpZW50RnJhZ21lbnQuY2xhc3MsICJNb2R1bGUiLCBudWxsICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIERlcGxveUNsaWVudEZyYWdtZW50LmNsYXNzLCAiRWFyUHJvamVjdCIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIERlcGxveUNsaWVudEZyYWdtZW50LmNsYXNzLCAiRWFyIiwgbnVsbCApOwotICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2UiLCBJbnN0YWxsQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkVudmlyb25tZW50IiwgSW5zdGFsbENsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgSW5zdGFsbENsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZWxlY3Rpb24iLCBJbnN0YWxsQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0TmFtZSIsIEluc3RhbGxDbGllbnRGcmFnbWVudC5jbGFzcywgIlByb2plY3QiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdE5hbWUiLCBJbnN0YWxsQ2xpZW50RnJhZ21lbnQuY2xhc3MsICJNb2R1bGUiLCBudWxsICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIEluc3RhbGxDbGllbnRGcmFnbWVudC5jbGFzcywgIkVhclByb2plY3QiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50RWFyUHJvamVjdE5hbWUiLCBJbnN0YWxsQ2xpZW50RnJhZ21lbnQuY2xhc3MsICJFYXIiLCBudWxsICk7Ci0gICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIFJ1bkNsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJFbnZpcm9ubWVudCIsIFJ1bkNsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgUnVuQ2xpZW50RnJhZ21lbnQuY2xhc3MgKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlbGVjdGlvbiIsIFJ1bkNsaWVudEZyYWdtZW50LmNsYXNzICk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0TmFtZSIsIFJ1bkNsaWVudEZyYWdtZW50LmNsYXNzLCAiUHJvamVjdCIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0TmFtZSIsIFJ1bkNsaWVudEZyYWdtZW50LmNsYXNzLCAiTW9kdWxlIiwgbnVsbCApOyAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50RWFyUHJvamVjdE5hbWUiLCBSdW5DbGllbnRGcmFnbWVudC5jbGFzcywgIkVhclByb2plY3QiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50RWFyUHJvamVjdE5hbWUiLCBSdW5DbGllbnRGcmFnbWVudC5jbGFzcywgIkVhciIsIG51bGwgKTsgICAgICAKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9iaW5kaW5nL0NvbmZpZ0NsaWVudEhhbmRsZXJzV2lkZ2V0QmluZGluZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvQ29uZmlnQ2xpZW50SGFuZGxlcnNXaWRnZXRCaW5kaW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YjNmYTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvQ29uZmlnQ2xpZW50SGFuZGxlcnNXaWRnZXRCaW5kaW5nLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDA0ICAgMTM0OTEzIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSAgICAgICAKLSAqIDIwMDYwNTE3ICAgMTQyMzM5IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmJpbmRpbmc7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLkdlbmVyYXRlSGFuZGxlclNrZWxldG9uQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5PcGVuSmF2YUVkaXRvckNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQ2xpZW50SGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5DbGllbnRIYW5kbGVyc1dpZGdldE91dHB1dENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2VxdWVuY2VGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TaW1wbGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TZWxlY3Rpb25Db21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeTsKLQotCi0vKioKLSAqIAotICogSGFuZGxlciBDb25maWd1cmF0aW9uIFdpbmRvdyAtIFByZWZlcmVuY2VzIC0gSmF2YSAtIENvZGUgR2VuZXJhdGlvbiAtIENvZGUKLSAqIGFuZCBDb21tZW50cwotICovCi1wdWJsaWMgY2xhc3MgQ29uZmlnQ2xpZW50SGFuZGxlcnNXaWRnZXRCaW5kaW5nIGltcGxlbWVudHMgQ29tbWFuZFdpZGdldEJpbmRpbmcgCi17Ci0gIAotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlcldpZGdldE1hcHBpbmdzKFdpZGdldFJlZ2lzdHJ5IHdpZGdldFJlZ2lzdHJ5KSB7Ci0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoIkNvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQiLCAKLSAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfQ0xJRU5UX0hETFJfQ09ORklHLCAKLSAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfREVTQ19DTElFTlRfSERMUl9DT05GSUcsIAotICAgICAgICBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkgewotCi0gICAgICAJcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpIHsKLSAgICAgIAkgIHJldHVybiBuZXcgQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldCgpOwotICAgICAgCX0KLSAgICB9KTsKLQotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlckRhdGFNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkgewotICAgIAotICAgIC8vIHdpZGdldAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsIkhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyIiwgQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50SGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywiSXNNdWx0aXBsZVNlbGVjdGlvbiIsIENvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsIkdlblNrZWxldG9uRW5hYmxlZCIsIENvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsIlNlcnZpY2VSZWZOYW1lIiwgQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcyk7Ci0gICAgCi0gICAgLy8gb3V0cHV0Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50SGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywiSXNNdWx0aXBsZVNlbGVjdGlvbiIsIENsaWVudEhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50SGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywiQ2xpZW50UHJvamVjdCIsIENsaWVudEhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcywiSGFuZGxlclNlcnZpY2VSZWZIb2xkZXIiLCBDbGllbnRIYW5kbGVyc1dpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIAotICAgIC8vIGdlbiBza2VsZXRvbgotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MsIkhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyIiwgR2VuZXJhdGVIYW5kbGVyU2tlbGV0b25Db21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDb25maWdDbGllbnRIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzLCJHZW5Ta2VsZXRvbkVuYWJsZWQiLCBHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuY2xhc3MpOwotCi0gICAgLy8gb3BlbiBpbiBlZGl0b3IKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuY2xhc3MsIlByb2plY3QiLCBPcGVuSmF2YUVkaXRvckNvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEdlbmVyYXRlSGFuZGxlclNrZWxldG9uQ29tbWFuZC5jbGFzcywiQ2xhc3NOYW1lcyIsIE9wZW5KYXZhRWRpdG9yQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcywiR2VuU2tlbGV0b25FbmFibGVkIiwgT3BlbkphdmFFZGl0b3JDb21tYW5kLmNsYXNzLCJJc0VuYWJsZWQiLCBudWxsKTsKLSAgICAKLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJDYW5GaW5pc2gob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckNhbkZpbmlzaChDYW5GaW5pc2hSZWdpc3RyeSBjYW5GaW5pc2hSZWdpc3RyeSkgewotCi0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudEZhY3RvcnlGYWN0b3J5I2NyZWF0ZSgpCi0gICAqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSBjcmVhdGUoKSB7Ci0gICAgcmV0dXJuIG5ldyBDb21tYW5kRnJhZ21lbnRGYWN0b3J5KCkgewotCi0gICAgICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGNyZWF0ZSgpIHsKLQotICAgICAgICByZXR1cm4gbmV3IENsaWVudEhhbmRsZXJzQ29uZmlnQ29tbWFuZEZyYWdtZW50KCk7Ci0gICAgICB9Ci0gICAgfTsKLSAgfQotCi0gIHByaXZhdGUgY2xhc3MgQ2xpZW50SGFuZGxlcnNDb25maWdDb21tYW5kRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50ewotICAgCi0gICAgcHVibGljIENsaWVudEhhbmRsZXJzQ29uZmlnQ29tbWFuZEZyYWdtZW50KCkKLSAgICB7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IENsaWVudEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQoKSwgIiIgKSk7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggIkNvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQiICkgKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgQ2xpZW50SGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kKCksICIiICkpOwotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQoKSwgIiIpKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgT3BlbkphdmFFZGl0b3JDb21tYW5kKCksICIiKSk7Ci0gICAgfQotICAgIAotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudCNyZWdpc3RlckRhdGFNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhUmVnaXN0cnkpCi0gICAgewotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VsZWN0aW9uQ29tbWFuZC5jbGFzcywgIkluaXRpYWxTZWxlY3Rpb24iLCBDbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50SGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywiV3NTZXJ2aWNlUmVmcyIsIENsaWVudEhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7ICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCJDbGllbnRQcm9qZWN0IiwgQ2xpZW50SGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICB9Ci0gCi0gIH0KLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvYmluZGluZy9Db25maWdTZXJ2aWNlSGFuZGxlcnNXaWRnZXRCaW5kaW5nLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvYmluZGluZy9Db25maWdTZXJ2aWNlSGFuZGxlcnNXaWRnZXRCaW5kaW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YjdjN2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvQ29uZmlnU2VydmljZUhhbmRsZXJzV2lkZ2V0QmluZGluZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MDQgMTM0OTEzICAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1ICAgICAgIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmJpbmRpbmc7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLkdlbmVyYXRlSGFuZGxlclNrZWxldG9uQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5PcGVuSmF2YUVkaXRvckNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuU2VydmljZUhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuU2VydmljZUhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2VxdWVuY2VGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TaW1wbGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TZWxlY3Rpb25Db21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeTsKLQotCi0vKioKLSAqIAotICogSGFuZGxlciBDb25maWd1cmF0aW9uIFdpbmRvdyAtIFByZWZlcmVuY2VzIC0gSmF2YSAtIENvZGUgR2VuZXJhdGlvbiAtIENvZGUKLSAqIGFuZCBDb21tZW50cwotICovCi1wdWJsaWMgY2xhc3MgQ29uZmlnU2VydmljZUhhbmRsZXJzV2lkZ2V0QmluZGluZyBpbXBsZW1lbnRzIENvbW1hbmRXaWRnZXRCaW5kaW5nIHsKLSAgCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3MoV2lkZ2V0UmVnaXN0cnkgd2lkZ2V0UmVnaXN0cnkpIHsKLQotICAgIHdpZGdldFJlZ2lzdHJ5LmFkZCgiQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQiLCAKLSAgIAkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfU0VSVklDRV9IRExSX0NPTkZJRywgCi0gICAJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfU0VSVklDRV9IRExSX0NPTkZJRywgCi0gICAgICAgIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKSB7Ci0KLSAgICAgIAlwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkgewotICAgICAgCSAgcmV0dXJuIG5ldyBDb25maWdTZXJ2aWNlSGFuZGxlcnNUYWJsZVdpZGdldCgpOwotICAgICAgCX0KLSAgICB9KTsKLQotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlckRhdGFNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkgewotICAgIAotCS8vIHdpZGdldAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCJIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJzIiwgQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSXNNdWx0aXBsZVNlbGVjdGlvbiIsIENvbmZpZ1NlcnZpY2VIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywiR2VuU2tlbGV0b25FbmFibGVkIiwgQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCJEZXNjcmlwdGlvbk5hbWUiLCBDb25maWdTZXJ2aWNlSGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcyk7Ci0gICAgCi0gICAgLy8gb3V0cHV0IGNvbW1hbmQgKGFkZHMvcmVtb3ZlcyBmcm9tIG1vZGVsKQotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENvbmZpZ1NlcnZpY2VIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzLCJIYW5kbGVyRGVzY3JpcHRpb25Ib2xkZXJzIiwgU2VydmljZUhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmljZUhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJc011bHRpcGxlU2VsZWN0aW9uIiwgU2VydmljZUhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmljZUhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsIldzZGRSZXNvdXJjZSIsIFNlcnZpY2VIYW5kbGVyc1dpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOyAgICAKLQotICAgIC8vIGdlbiBza2VsZXRvbiBjb21tYW5kCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MsIkhhbmRsZXJEZXNjcmlwdGlvbkhvbGRlcnMiLCBHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuY2xhc3MpOyAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDb25maWdTZXJ2aWNlSGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcywiR2VuU2tlbGV0b25FbmFibGVkIiwgR2VuZXJhdGVIYW5kbGVyU2tlbGV0b25Db21tYW5kLmNsYXNzKTsKLSAKLSAgICAvLyBvcGVuIEphdmEgZWRpdG9yICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuY2xhc3MsIlByb2plY3QiLCBPcGVuSmF2YUVkaXRvckNvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEdlbmVyYXRlSGFuZGxlclNrZWxldG9uQ29tbWFuZC5jbGFzcywiQ2xhc3NOYW1lcyIsIE9wZW5KYXZhRWRpdG9yQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MsIkdlblNrZWxldG9uRW5hYmxlZCIsIE9wZW5KYXZhRWRpdG9yQ29tbWFuZC5jbGFzcywiSXNFbmFibGVkIiwgbnVsbCk7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyQ2FuRmluaXNoKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJDYW5GaW5pc2goQ2FuRmluaXNoUmVnaXN0cnkgY2FuRmluaXNoUmVnaXN0cnkpIHsKLQotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnRGYWN0b3J5RmFjdG9yeSNjcmVhdGUoKQotICAgKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudEZhY3RvcnkgY3JlYXRlKCkgewotICAgIHJldHVybiBuZXcgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSgpIHsKLQotICAgICAgcHVibGljIENvbW1hbmRGcmFnbWVudCBjcmVhdGUoKSB7Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBTZXJ2aWNlSGFuZGxlcnNDb25maWdDb21tYW5kRnJhZ21lbnQoKTsKLSAgICAgIH0KLSAgICB9OwotICB9Ci0KLSAgcHJpdmF0ZSBjbGFzcyBTZXJ2aWNlSGFuZGxlcnNDb25maWdDb21tYW5kRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50ewotICAgCi0gICAgcHVibGljIFNlcnZpY2VIYW5kbGVyc0NvbmZpZ0NvbW1hbmRGcmFnbWVudCgpCi0gICAgewotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBTZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpLCAiIiApKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCAiQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQiICkgKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2VydmljZUhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZCgpLCAiIiApKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgR2VuZXJhdGVIYW5kbGVyU2tlbGV0b25Db21tYW5kKCksICIiKSk7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IE9wZW5KYXZhRWRpdG9yQ29tbWFuZCgpLCAiIikpOwotCi0gICAgfQotICAgIAotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudCNyZWdpc3RlckRhdGFNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhUmVnaXN0cnkpCi0gICAgewotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VsZWN0aW9uQ29tbWFuZC5jbGFzcywgIkluaXRpYWxTZWxlY3Rpb24iLCBTZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV3NkZFJlc291cmNlIiwgU2VydmljZUhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICAKLSAgICAgIAotICAgIH0KLSAKLSAgfQotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9iaW5kaW5nL0NvbmZpZ3VyZUhhbmRsZXJzV2lkZ2V0QmluZGluZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvQ29uZmlndXJlSGFuZGxlcnNXaWRnZXRCaW5kaW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzOTY5YjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvQ29uZmlndXJlSGFuZGxlcnNXaWRnZXRCaW5kaW5nLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQwNCAxMzQ5MTMgICBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUgICAgICAgCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuYmluZGluZzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuR2VuZXJhdGVIYW5kbGVyU2tlbGV0b25Db21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLk9wZW5KYXZhRWRpdG9yQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5DbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLkNsaWVudEhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5Db25maWdDbGllbnRIYW5kbGVyc1RhYmxlV2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLkNvbmZpZ1NlcnZpY2VIYW5kbGVyc1RhYmxlV2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLkhhbmRsZXJzRGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuU2VydmljZUhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuU2VydmljZUhhbmRsZXJzV2lkZ2V0T3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uQ29uZGl0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Cb29sZWFuRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2VxdWVuY2VGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TaW1wbGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TZWxlY3Rpb25Db21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeTsKLQotCi1wdWJsaWMgY2xhc3MgQ29uZmlndXJlSGFuZGxlcnNXaWRnZXRCaW5kaW5nIGltcGxlbWVudHMgQ29tbWFuZFdpZGdldEJpbmRpbmcgewotCi0KLSAgcHVibGljIENvbmZpZ3VyZUhhbmRsZXJzV2lkZ2V0QmluZGluZygpIHsKLQotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNjcmVhdGUoKQotICAgKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudEZhY3RvcnkgY3JlYXRlKCkgewotICAgIHJldHVybiBuZXcgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSgpIHsKLQotICAgICAgcHVibGljIENvbW1hbmRGcmFnbWVudCBjcmVhdGUoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgSGFuZGxlcnNDb21tYW5kRnJhZ21lbnQoKTsKLSAgICAgIH0KLSAgICB9OwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlckNhbkZpbmlzaChvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyQ2FuRmluaXNoKENhbkZpbmlzaFJlZ2lzdHJ5IGNhbkZpbmlzaFJlZ2lzdHJ5KSB7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpLAotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlckRhdGFNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkgewotCi0gICAgLy8gTWFwIGNsaWVudC1zaWRlIHdpZGdldHMgdG8gY29tbWFuZHMKLSAgICAvLyB3aWRnZXQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCJIYW5kbGVyU2VydmljZVJlZkhvbGRlciIsIENvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsIklzTXVsdGlwbGVTZWxlY3Rpb24iLCBDb25maWdDbGllbnRIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCJHZW5Ta2VsZXRvbkVuYWJsZWQiLCBDb25maWdDbGllbnRIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCJTZXJ2aWNlUmVmTmFtZSIsIENvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MpOwotICAgIAotICAgIC8vIG91dHB1dAotCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcywiSGFuZGxlclNlcnZpY2VSZWZIb2xkZXIiLCBDbGllbnRIYW5kbGVyc1dpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIAotICAgIC8vIGdlbiBza2VsZXRvbgotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MsIkhhbmRsZXJTZXJ2aWNlUmVmSG9sZGVyIiwgR2VuZXJhdGVIYW5kbGVyU2tlbGV0b25Db21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDb25maWdDbGllbnRIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzLCJHZW5Ta2VsZXRvbkVuYWJsZWQiLCBHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuY2xhc3MpOwotCi0gICAgLy8gb3BlbiBpbiBlZGl0b3IKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDb25maWdDbGllbnRIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzLCJHZW5Ta2VsZXRvbkVuYWJsZWQiLCBPcGVuSmF2YUVkaXRvckNvbW1hbmQuY2xhc3MsIklzRW5hYmxlZCIsIG51bGwpOwotICAKLSAKLSAgICAvLyBNYXAgc2VydmljZS1zaWRlIHdpZGdldHMgdG8gY29tbWFuZHMKLSAgICAvLyB3aWRnZXQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywiSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVycyIsIENvbmZpZ1NlcnZpY2VIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIklzTXVsdGlwbGVTZWxlY3Rpb24iLCBDb25maWdTZXJ2aWNlSGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmljZUhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsIkdlblNrZWxldG9uRW5hYmxlZCIsIENvbmZpZ1NlcnZpY2VIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywiRGVzY3JpcHRpb25OYW1lIiwgQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQuY2xhc3MpOwotICAgIAotICAgIC8vIG91dHB1dCBjb21tYW5kIChhZGRzL3JlbW92ZXMgZnJvbSBtb2RlbCkKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDb25maWdTZXJ2aWNlSGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcywiSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVycyIsIFNlcnZpY2VIYW5kbGVyc1dpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIAotCi0gICAgLy8gZ2VuIHNrZWxldG9uIGNvbW1hbmQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDb25maWdTZXJ2aWNlSGFuZGxlcnNUYWJsZVdpZGdldC5jbGFzcywiSGFuZGxlckRlc2NyaXB0aW9uSG9sZGVycyIsIEdlbmVyYXRlSGFuZGxlclNrZWxldG9uQ29tbWFuZC5jbGFzcyk7ICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENvbmZpZ1NlcnZpY2VIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzLCJHZW5Ta2VsZXRvbkVuYWJsZWQiLCBHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuY2xhc3MpOwotIAotICAgIC8vIG9wZW4gSmF2YSBlZGl0b3IgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENvbmZpZ1NlcnZpY2VIYW5kbGVyc1RhYmxlV2lkZ2V0LmNsYXNzLCJHZW5Ta2VsZXRvbkVuYWJsZWQiLCBPcGVuSmF2YUVkaXRvckNvbW1hbmQuY2xhc3MsIklzRW5hYmxlZCIsIG51bGwpOwotCi0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlcldpZGdldE1hcHBpbmdzKFdpZGdldFJlZ2lzdHJ5IHdpZGdldFJlZ2lzdHJ5KSB7Ci0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoIkNvbmZpZ1NlcnZpY2VIYW5kbGVyc1RhYmxlV2lkZ2V0IiwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfU0VSVklDRV9IRExSX0NPTkZJRywgCi0gICAgCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1NFUlZJQ0VfSERMUl9DT05GSUcsIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKSB7Ci0KLSAgICAgIHB1YmxpYyBXaWRnZXRDb250cmlidXRvciBjcmVhdGUoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQoKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHdpZGdldFJlZ2lzdHJ5LmFkZCgiQ29uZmlnQ2xpZW50SGFuZGxlcnNUYWJsZVdpZGdldCIsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX1RJVExFX0NMSUVOVF9IRExSX0NPTkZJRywgCi0gICAgCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX0NMSUVOVF9IRExSX0NPTkZJRywgbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpIHsKLQotICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBDb25maWdDbGllbnRIYW5kbGVyc1RhYmxlV2lkZ2V0KCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgfQotCi0gIHByaXZhdGUgY2xhc3MgSGFuZGxlcnNDb21tYW5kRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50IHsKLQotICAgIHB1YmxpYyBIYW5kbGVyc0NvbW1hbmRGcmFnbWVudCgpIHsKLQotICAgICAgYWRkKG5ldyBTaW1wbGVGcmFnbWVudChuZXcgSGFuZGxlcnNEZWZhdWx0aW5nQ29tbWFuZCgpLCAiIikpOwotCi0gICAgICBhZGQobmV3IFNlcnZpY2VIYW5kbGVyc0ZyYWdtZW50KCkpOwotICAgICAgYWRkKG5ldyBDbGllbnRIYW5kbGVyc0ZyYWdtZW50KCkpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KSB7Ci0KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlbGVjdGlvbkNvbW1hbmQuY2xhc3MsICJJbml0aWFsU2VsZWN0aW9uIiwgSGFuZGxlcnNEZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEhhbmRsZXJzRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJc0NsaWVudEhhbmRsZXIiLCBDbGllbnRIYW5kbGVyc0ZyYWdtZW50LmNsYXNzLCAiQ2xpZW50SGFuZGxlcnNFbmFibGVkIiwgbnVsbCk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhIYW5kbGVyc0RlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSXNTZXJ2aWNlSGFuZGxlciIsIFNlcnZpY2VIYW5kbGVyc0ZyYWdtZW50LmNsYXNzLCAiU2VydmljZUhhbmRsZXJzRW5hYmxlZCIsIG51bGwpOwotCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCJJc011bHRpcGxlU2VsZWN0aW9uIiwgQ2xpZW50SGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEdlbmVyYXRlSGFuZGxlclNrZWxldG9uQ29tbWFuZC5jbGFzcywiUHJvamVjdCIsIE9wZW5KYXZhRWRpdG9yQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuY2xhc3MsIkNsYXNzTmFtZXMiLCBPcGVuSmF2YUVkaXRvckNvbW1hbmQuY2xhc3MpOwotICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2aWNlSGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIklzTXVsdGlwbGVTZWxlY3Rpb24iLCBTZXJ2aWNlSGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCJXc2RkUmVzb3VyY2UiLCBTZXJ2aWNlSGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEdlbmVyYXRlSGFuZGxlclNrZWxldG9uQ29tbWFuZC5jbGFzcywiUHJvamVjdCIsIE9wZW5KYXZhRWRpdG9yQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQuY2xhc3MsIkNsYXNzTmFtZXMiLCBPcGVuSmF2YUVkaXRvckNvbW1hbmQuY2xhc3MpOyAgICAgIAotCi0gICAgfQotCi0gICAgcHVibGljIHZvaWQgcmVnaXN0ZXJDYW5GaW5pc2goQ2FuRmluaXNoUmVnaXN0cnkgY2FuRmluaXNoUmVnaXN0cnkpIHsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIGNsYXNzIENsaWVudEhhbmRsZXJzRnJhZ21lbnQgZXh0ZW5kcyBCb29sZWFuRnJhZ21lbnQgewotCi0gICAgYm9vbGVhbiBpc0NsaWVudF8gPSBmYWxzZTsKLQotICAgIHB1YmxpYyBDbGllbnRIYW5kbGVyc0ZyYWdtZW50KCkgewotICAgICAgc2V0Q29uZGl0aW9uKG5ldyBDb25kaXRpb24oKSB7Ci0KLSAgICAgICAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoKSB7Ci0gICAgICAgICAgcmV0dXJuIGlzQ2xpZW50XzsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICAgIFNlcXVlbmNlRnJhZ21lbnQgY2xpZW50SGFuZGxlcnNSb290RnJhZ21lbnQgPSBuZXcgU2VxdWVuY2VGcmFnbWVudCgpOwotCi0gICAgICBjbGllbnRIYW5kbGVyc1Jvb3RGcmFnbWVudC5hZGQobmV3IFNpbXBsZUZyYWdtZW50KG5ldyBDbGllbnRIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kKCksICIiKSk7Ci0KLSAgICAgIGNsaWVudEhhbmRsZXJzUm9vdEZyYWdtZW50LmFkZChuZXcgU2ltcGxlRnJhZ21lbnQoIkNvbmZpZ0NsaWVudEhhbmRsZXJzVGFibGVXaWRnZXQiKSk7Ci0gICAgICBjbGllbnRIYW5kbGVyc1Jvb3RGcmFnbWVudC5hZGQobmV3IFNpbXBsZUZyYWdtZW50KG5ldyBDbGllbnRIYW5kbGVyc1dpZGdldE91dHB1dENvbW1hbmQoKSwgIiIpKTsKLSAgICAgIGNsaWVudEhhbmRsZXJzUm9vdEZyYWdtZW50LmFkZChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IEdlbmVyYXRlSGFuZGxlclNrZWxldG9uQ29tbWFuZCgpLCAiIikpOwotCi0gICAgICBzZXRUcnVlRnJhZ21lbnQoY2xpZW50SGFuZGxlcnNSb290RnJhZ21lbnQpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldENsaWVudEhhbmRsZXJzRW5hYmxlZChib29sZWFuIGlzQ2xpZW50KSB7Ci0gICAgICBpc0NsaWVudF8gPSBpc0NsaWVudDsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIChub24tSmF2YWRvYykKLSAgICAgKiAKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudCNyZWdpc3RlckRhdGFNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhUmVnaXN0cnkpIHsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlbGVjdGlvbkNvbW1hbmQuY2xhc3MsICJJbml0aWFsU2VsZWN0aW9uIiwgQ2xpZW50SGFuZGxlcnNXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0IiwgQ2xpZW50SGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLQotICAgIH0KLQotICB9Ci0KLSAgcHJpdmF0ZSBjbGFzcyBTZXJ2aWNlSGFuZGxlcnNGcmFnbWVudCBleHRlbmRzIEJvb2xlYW5GcmFnbWVudCB7Ci0KLSAgICBib29sZWFuIGlzU2VydmljZV8gPSBmYWxzZTsKLQotICAgIHB1YmxpYyBTZXJ2aWNlSGFuZGxlcnNGcmFnbWVudCgpIHsKLSAgICAgIHNldENvbmRpdGlvbihuZXcgQ29uZGl0aW9uKCkgewotCi0gICAgICAgIHB1YmxpYyBib29sZWFuIGV2YWx1YXRlKCkgewotICAgICAgICAgIHJldHVybiBpc1NlcnZpY2VfOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgICAgU2VxdWVuY2VGcmFnbWVudCBzZXJ2aWNlSGFuZGxlcnNSb290RnJhZ21lbnQgPSBuZXcgU2VxdWVuY2VGcmFnbWVudCgpOwotICAgICAgc2VydmljZUhhbmRsZXJzUm9vdEZyYWdtZW50LmFkZChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IFNlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kKCksICIiKSk7Ci0KLSAgICAgIFNlcXVlbmNlRnJhZ21lbnQgc2VydmljZUhhbmRsZXJzRnJhZ21lbnQgPSBuZXcgU2VxdWVuY2VGcmFnbWVudCgpOwotICAgICAgc2VydmljZUhhbmRsZXJzRnJhZ21lbnQuYWRkKG5ldyBTaW1wbGVGcmFnbWVudCgiQ29uZmlnU2VydmljZUhhbmRsZXJzVGFibGVXaWRnZXQiKSk7Ci0gICAgICBzZXJ2aWNlSGFuZGxlcnNGcmFnbWVudC5hZGQobmV3IFNpbXBsZUZyYWdtZW50KG5ldyBTZXJ2aWNlSGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kKCksICIiKSk7Ci0gICAgICBzZXJ2aWNlSGFuZGxlcnNGcmFnbWVudC5hZGQobmV3IFNpbXBsZUZyYWdtZW50KG5ldyBHZW5lcmF0ZUhhbmRsZXJTa2VsZXRvbkNvbW1hbmQoKSwgIiIpKTsKLQotICAgICAgc2VydmljZUhhbmRsZXJzUm9vdEZyYWdtZW50LmFkZChzZXJ2aWNlSGFuZGxlcnNGcmFnbWVudCk7Ci0KLSAgICAgIHNldFRydWVGcmFnbWVudChzZXJ2aWNlSGFuZGxlcnNSb290RnJhZ21lbnQpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VIYW5kbGVyc0VuYWJsZWQoYm9vbGVhbiBpc1NlcnZpY2UpIHsKLSAgICAgIGlzU2VydmljZV8gPSBpc1NlcnZpY2U7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiAobm9uLUphdmFkb2MpCi0gICAgICogCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQjcmVnaXN0ZXJEYXRhTWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KSB7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZWxlY3Rpb25Db21tYW5kLmNsYXNzLCAiSW5pdGlhbFNlbGVjdGlvbiIsIFNlcnZpY2VIYW5kbGVyc1dpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLQotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmljZUhhbmRsZXJzV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXc2RkUmVzb3VyY2UiLCBTZXJ2aWNlSGFuZGxlcnNXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLQotICAgIH0KLQotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvR2VuU2FtcGxlV2lkZ2V0QmluZGluZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvR2VuU2FtcGxlV2lkZ2V0QmluZGluZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzU3ZTAxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9iaW5kaW5nL0dlblNhbXBsZVdpZGdldEJpbmRpbmcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MjQgICAxNDI2MzUgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNjA4ICAgMTQ1NTI5IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDcxNyAgIDE0NjMzMiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICogMjAwNzA1MTYgICAxODYyMzMgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwNzA4MTUgICAxOTk2MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMzI1ICAgMTg0NzYxIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwMzMxICAgMjI0OTUzIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNDE1ICAgMjI3MjM3IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNDI1ICAgMjIxMjMyIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNjE2ICAgMjM3Mjk4IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNjE5ICAgMjM3Nzk3IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDkwMzI0ICAgMjQ3NTM1IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgV3Jvbmcgc2VydmVyIGluc3RhbmNlKHMpIGlzIGNob3NlbiBkdXJpbmcgSkFYLVJQQyBzYW1wbGUgZ2VuZXJhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmJpbmRpbmc7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuaW50ZXJuYWwucHJvamVjdC5KMkVFUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdUb0lQcm9qZWN0VHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkFkZE1vZHVsZVRvU2VydmVyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQ3JlYXRlU2VydmVyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLmRhdGEuRWNsaXBzZUlQYXRoMlVSTFN0cmluZ1RyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uRmluaXNoRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5XU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5DbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLkNsaWVudEV4dGVuc2lvbkZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5ydW50aW1lLkNsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LkNsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5DbGllbnRUZXN0RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5DbGllbnRUZXN0V2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuRmluaXNoRGVmYXVsdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5GaW5pc2hUZXN0RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5UZXN0RGVmYXVsdGluZ0ZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuVGVzdFdlYlNlcnZpY2VDbGllbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5XZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0LnRlc3QuV2ViU2VydmljZVRlc3RFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldlYlNlcnZpY2VUZXN0UmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnBsdWdpbi5XZWJTZXJ2aWNlUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQuUmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uLlNlbGVjdGlvbkxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuU2VsZWN0aW9uQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRDb250cmlidXRvckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZUNsaWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlQ2xpZW50SW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlU3RhdGU7Ci0KLQotcHVibGljIGNsYXNzIEdlblNhbXBsZVdpZGdldEJpbmRpbmcgaW1wbGVtZW50cyBDb21tYW5kV2lkZ2V0QmluZGluZwoteyAgCi0KLQkKLQkKLS8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNjcmVhdGUoKQotICAgKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudEZhY3RvcnkgY3JlYXRlKCkKLSAgewotICAgIHJldHVybiBuZXcgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSgpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGNyZWF0ZSgpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBHZW5TYW1wbGVSb290Q29tbWFuZEZyYWdtZW50KCk7ICAKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIH07Ci0gIH0KLQotICBwdWJsaWMgU2VsZWN0aW9uTGlzdCBnZXRMZWdpdFRlc3RGYWNpbGl0eSgpCi0gIHsKLSAgIAlTY2VuYXJpb0NvbnRleHQgc2NlbmFyaW9Db250ZXh0ID0gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNjZW5hcmlvQ29udGV4dCgpLmNvcHkoKTsKLSAgCVN0cmluZ1tdIHRlc3RUeXBlcyA9IHNjZW5hcmlvQ29udGV4dC5nZXRXZWJTZXJ2aWNlVGVzdFR5cGVzKCk7CSAgCi0gIAlMaXN0IG5ld1Rlc3RUeXBlcyA9IG5ldyBBcnJheUxpc3QoKTsKLQkJCi0gIAlmb3IoaW50IGkgPSAwO2k8dGVzdFR5cGVzLmxlbmd0aDtpKyspewotICAJCVdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uIGV4dGVuc2lvbiA9Ci0gIAkJCShXZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbikgV2ViU2VydmljZVRlc3RSZWdpc3RyeS5nZXRJbnN0YW5jZSgpCi0gIAkJCS5nZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5TmFtZSh0ZXN0VHlwZXNbaV0pOwotCQkgIAotICAJCWlmKGV4dGVuc2lvbi50ZXN0SmF2YVByb3h5KCkpewotICAJCQlib29sZWFuIGRlZmF1bHRKYXhycGMgPSBleHRlbnNpb24uaXNEZWZhdWx0SkFYUlBDKCk7Ci0gIAkJCWlmKGRlZmF1bHRKYXhycGMpewotICAJCQkJbmV3VGVzdFR5cGVzLmFkZCh0ZXN0VHlwZXNbaV0pOyAKLSAgICAJCQl9Ci0gIAkJfQotICAJfQkKLSAgCVN0cmluZ1tdIHRlbXBBcnJheSA9IG5ldyBTdHJpbmdbbmV3VGVzdFR5cGVzLnNpemUoKV07Ci0gIAlyZXR1cm4gbmV3IFNlbGVjdGlvbkxpc3QoKFN0cmluZ1tdKSBuZXdUZXN0VHlwZXMudG9BcnJheSh0ZW1wQXJyYXkpLCAwKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyQ2FuRmluaXNoKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJDYW5GaW5pc2goQ2FuRmluaXNoUmVnaXN0cnkgY2FuRmluaXNoUmVnaXN0cnkpCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlckRhdGFNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkKLSAgeyAgICAgICAgICAgICAgICAgICAgCi0gICAgLy8gQmVmb3JlIENsaWVudCBUZXN0IHdpZGdldC4KLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlRlc3RTZXJ2aWNlIixGaW5pc2hUZXN0RnJhZ21lbnQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJSdW5UZXN0Q2xpZW50IiwgQ2xpZW50VGVzdFdpZGdldC5jbGFzcyApOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEluaXRpYWxpemVQcm94eUNvbW1hbmQuY2xhc3MsICJDYW5SdW5UZXN0Q2xpZW50IiwgQ2xpZW50VGVzdFdpZGdldC5jbGFzcyApOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEluaXRpYWxpemVQcm94eUNvbW1hbmQuY2xhc3MsICJJc1dlYlByb2plY3QiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VsZWN0aW9uQ29tbWFuZC5jbGFzcywgIkluaXRpYWxTZWxlY3Rpb24iLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlNhbXBsZVByb2plY3QiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlNhbXBsZVByb2plY3RFQVIiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoSW5pdGlhbGl6ZVByb3h5Q29tbWFuZC5jbGFzcywgIlRlc3RGYWNpbGl0eSIsQ2xpZW50VGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoSW5pdGlhbGl6ZVByb3h5Q29tbWFuZC5jbGFzcywgIlBvcHVwIixDbGllbnRUZXN0V2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiRm9sZGVyIixDbGllbnRUZXN0V2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiSnNwRm9sZGVyIixDbGllbnRUZXN0V2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiTWV0aG9kcyIsQ2xpZW50VGVzdFdpZGdldC5jbGFzcyk7Ci0KLSAgICAvLyBBZnRlciB0aGUgY2xpZW50IHRlc3Qgd2lkZ2V0ICAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIlNhbXBsZVByb2plY3RFQVIiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFRlc3RXaWRnZXQuY2xhc3MsICJTYW1wbGVQcm9qZWN0IixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiVGVzdEZhY2lsaXR5IixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiRm9sZGVyIixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiSnNwRm9sZGVyIixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiUnVuVGVzdENsaWVudCIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIk1ldGhvZHMiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOyAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiVGVzdFNlcnZpY2UiLEZpbmlzaFRlc3RGcmFnbWVudC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIlRlc3RJRCIsRmluaXNoVGVzdEZyYWdtZW50LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiSXNUZXN0V2lkZ2V0IixGaW5pc2hUZXN0RnJhZ21lbnQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFRlc3RXaWRnZXQuY2xhc3MsICJTZXJ2ZXJJbnN0YW5jZUlkIiwgRmluaXNoRGVmYXVsdENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFRlc3RXaWRnZXQuY2xhc3MsICJFeGlzdGluZ1NlcnZlcklkIiwgRmluaXNoRGVmYXVsdENvbW1hbmQuY2xhc3MpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlcldpZGdldE1hcHBpbmdzKFdpZGdldFJlZ2lzdHJ5IHdpZGdldFJlZ2lzdHJ5KQotICB7Ci0gICAgICAgICAgIAotICAgIHdpZGdldFJlZ2lzdHJ5LmFkZCggIkNsaWVudFRlc3RXaWRnZXQiLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX1RJVExFX1dTX1NBTVBMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfV1NfU0FNUExFLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXaWRnZXRDb250cmlidXRvciBjcmVhdGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRUZXN0V2lkZ2V0KCk7IAotICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgfQotICAKLSAgcHJpdmF0ZSBjbGFzcyBJbml0aWFsaXplUHJveHlDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLSAgewotICAgIHByaXZhdGUgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uXzsKLQlwcml2YXRlIFR5cGVSdW50aW1lU2VydmVyIHR5cGVSdW50aW1lU2VydmVyXzsKLQlwcml2YXRlIFN0cmluZyAgICAgICAgICAgIHByb2plY3RfOwotCXByaXZhdGUgU3RyaW5nICAgICAgICAgICAgbW9kdWxlXzsKLS8vCXByaXZhdGUgU3RyaW5nICAgICAgICAgICAgZWFyUHJvamVjdF87Ci0JcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBlYXJfOwotCXByaXZhdGUgSVdlYlNlcnZpY2VDbGllbnQgd2ViU2VydmljZUNsaWVudF87Ci0JcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICB3c2RsVVJJXzsKLQlwcml2YXRlIGJvb2xlYW4gY2FuUnVuVGVzdENsaWVudF87Ci0JcHJpdmF0ZSBib29sZWFuIGlzV2ViUHJvamVjdCA9IGZhbHNlOwotICAgIAotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotCXsgICAgCi0JCUlFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotCSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7CQotCi0JICAgIC8vIFNwbGl0IHVwIHRoZSBwcm9qZWN0IGFuZCBtb2R1bGUKLQkgICAgaW50IGluZGV4ID0gbW9kdWxlXy5pbmRleE9mKCIvIik7Ci0JICAgIGlmIChpbmRleCE9LTEpewotCSAgICAJcHJvamVjdF8gPSBtb2R1bGVfLnN1YnN0cmluZygwLGluZGV4KTsKLQkgICAgCW1vZHVsZV8gPSBtb2R1bGVfLnN1YnN0cmluZyhpbmRleCsxKTsKLQkgICAgfQotCi0JICAgIAotCSAgICBpZiAoZWFyXyE9bnVsbCAmJiBlYXJfLmxlbmd0aCgpPjApCi0JICAgIHsKLQkgICAgCWludCBlYXJJbmRleCA9IGVhcl8uaW5kZXhPZigiLyIpOwotCSAgICAJaWYgKGVhckluZGV4IT0tMSkgewotLy8JICAgIAkJZWFyUHJvamVjdF8gPSBlYXJfLnN1YnN0cmluZygwLGVhckluZGV4KTsKLQkgICAgCQllYXJfID0gZWFyXy5zdWJzdHJpbmcoZWFySW5kZXgrMSk7Ci0JICAgIAl9Ci0JICAgIH0gICAgCi0JICAKLQkgICAgSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChwcm9qZWN0Xyk7Ci0JICAgIFdlYlNlcnZpY2VDbGllbnRJbmZvIGNsaWVudEluZm8gPSBuZXcgV2ViU2VydmljZUNsaWVudEluZm8oKTsKLQkgICAgY2xpZW50SW5mby5zZXRJbXBsVVJMKGdldFByb3h5QmVhbigpKTsKLQkgICAgLy9jbGllbnRJbmZvLnNldEoyZWVMZXZlbChqMmVlTGV2ZWxfKTsKLQkgICAgY2xpZW50SW5mby5zZXRTZXJ2ZXJGYWN0b3J5SWQodHlwZVJ1bnRpbWVTZXJ2ZXJfLmdldFNlcnZlcklkKCkpOwotCSAgCWNsaWVudEluZm8uc2V0U2VydmVySW5zdGFuY2VJZCh0eXBlUnVudGltZVNlcnZlcl8uZ2V0U2VydmVySW5zdGFuY2VJZCgpKTsKLQkgIAljbGllbnRJbmZvLnNldFN0YXRlKFdlYlNlcnZpY2VTdGF0ZS5VTktOT1dOX0xJVEVSQUwpOwotCSAgCWNsaWVudEluZm8uc2V0V2ViU2VydmljZVJ1bnRpbWVJZCh0eXBlUnVudGltZVNlcnZlcl8uZ2V0UnVudGltZUlkKCkpOwotCSAgCWNsaWVudEluZm8uc2V0V3NkbFVSTCh3c2RsVVJJXyk7Ci0JICAJLyoKLQkgIAlpZiAoY2xpZW50SW5mby5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCk9PW51bGwpCi0JICAJewotCSAgCQlDcmVhdGVTZXJ2ZXJDb21tYW5kIGNyZWF0ZVNlcnZlckNvbW1hbmQgPSBuZXcgQ3JlYXRlU2VydmVyQ29tbWFuZCgpOwotCSAgCQljcmVhdGVTZXJ2ZXJDb21tYW5kLnNldFNlcnZlckZhY3RvcnlpZChjbGllbnRJbmZvLmdldFNlcnZlckZhY3RvcnlJZCgpKTsKLQkgIAkJY3JlYXRlU2VydmVyQ29tbWFuZC5zZXRFbnZpcm9ubWVudCggZW52ICk7Ci0JICAJCUlTdGF0dXMgY3JlYXRlU2VydmVyU3RhdHVzID0gY3JlYXRlU2VydmVyQ29tbWFuZC5leGVjdXRlKCBudWxsLCBudWxsICk7Ci0JICAJCWlmIChjcmVhdGVTZXJ2ZXJTdGF0dXMuZ2V0U2V2ZXJpdHkoKT09U3RhdHVzLk9LKXsKLQkgIAkJCWNsaWVudEluZm8uc2V0U2VydmVySW5zdGFuY2VJZChjcmVhdGVTZXJ2ZXJDb21tYW5kLmdldFNlcnZlckluc3RhbmNlSWQoKSk7Ci0JICAJCQljbGllbnRJbmZvLnNldFNlcnZlckNyZWF0ZWQodHJ1ZSk7Ci0JICAJCQljYW5SdW5UZXN0Q2xpZW50XyA9IHRydWU7Ci0JICAJCX0KLQkgIAkJZWxzZSBpZiAoY3JlYXRlU2VydmVyU3RhdHVzLmdldFNldmVyaXR5KCk9PVN0YXR1cy5FUlJPUil7Ci0JICAJCQlpZihKMkVFVXRpbHMuaXNXZWJDb21wb25lbnQocHJvamVjdCkpCi0JICAJCQkJY2FuUnVuVGVzdENsaWVudF8gPSBmYWxzZTsKLQkgIAkJCWVsc2UgCi0JICAJCQkJY2FuUnVuVGVzdENsaWVudF8gPSB0cnVlOwotCSAgCQl9ICAgICAgICAgICAgICAgCi0JICAJfQotCSAgCWVsc2UgewotCSAgCQljYW5SdW5UZXN0Q2xpZW50XyA9IHRydWU7Ci0JICAJfSovCi0JICAJCi0JICAJY2FuUnVuVGVzdENsaWVudF8gPSB0cnVlOwotCSAgCUlQcm9qZWN0W10gZWFycHJvamVjdCA9IEoyRUVQcm9qZWN0VXRpbGl0aWVzLmdldFJlZmVyZW5jaW5nRUFSUHJvamVjdHMocHJvamVjdCk7Ci0JICAJYm9vbGVhbiBlYXJOdWxsID0gZmFsc2U7Ci0JICAJaWYgKGVhcnByb2plY3QubGVuZ3RoPDEpIGVhck51bGwgPSB0cnVlOwotCSAgCQkKLQkgIAlib29sZWFuIGoyZWVQcm9qZWN0ID0gSjJFRVByb2plY3RVdGlsaXRpZXMuaXNKRUVQcm9qZWN0KHByb2plY3QpOwotCSAgCWlmKEoyRUVVdGlscy5pc1dlYkNvbXBvbmVudChwcm9qZWN0KSkKLQkgIAkJaXNXZWJQcm9qZWN0ID0gdHJ1ZTsKLQkgIAkKLQkgIAlpZiAoajJlZVByb2plY3QgJiYgZWFyTnVsbCkKLQkgIAkJY2FuUnVuVGVzdENsaWVudF8gPSBmYWxzZTsKLQkgIC8qCQkgIAkKLQkJaWYgKCFlYXJOdWxsICYmIGNsaWVudEluZm8uZ2V0U2VydmVySW5zdGFuY2VJZCgpICE9IG51bGwpewotCSAgCQkKLQkgIAkJQWRkTW9kdWxlVG9TZXJ2ZXJDb21tYW5kIGNvbW1hbmQgPSBuZXcgQWRkTW9kdWxlVG9TZXJ2ZXJDb21tYW5kKCk7Ci0JICAJCWNvbW1hbmQuc2V0U2VydmVySW5zdGFuY2VJZChjbGllbnRJbmZvLmdldFNlcnZlckluc3RhbmNlSWQoKSk7Ci0JICAJCWNvbW1hbmQuc2V0UHJvamVjdChwcm9qZWN0Xyk7Ci0JICAJCWNvbW1hbmQuc2V0TW9kdWxlKG1vZHVsZV8pOwotCSAgCQljb21tYW5kLnNldEVudmlyb25tZW50KCBlbnYgKTsKLQkgIAkJc3RhdHVzID0gY29tbWFuZC5leGVjdXRlKCBtb25pdG9yLCBudWxsICk7Ci0JICAJCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKT09U3RhdHVzLkVSUk9SKQotCSAgCQl7Ci0JICAJCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JICAJCX0gICAgIAotCSAgCX0qLwotCSAgCXdlYlNlcnZpY2VDbGllbnRfID0gbmV3IFRlc3RXZWJTZXJ2aWNlQ2xpZW50KGNsaWVudEluZm8pOwotCSAgCXJldHVybiBzdGF0dXM7Ci0gIAl9Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0UG9wdXAoKXsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCQotCXB1YmxpYyBTdHJpbmcgZ2V0UHJveHlCZWFuKCkKLSAgICB7Ci0JCVN0cmluZyBwcm94eUJlYW4gPSAiIjsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgCUlSZXNvdXJjZSByZXNvdXJjZSAgICA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VGcm9tU2VsZWN0aW9uKCBzZWxlY3Rpb25fLmdldEZpcnN0RWxlbWVudCgpICk7Ci0gICAgICAgIAlTdHJpbmcgICAgYmVhblBhY2thZ2UgPSBSZXNvdXJjZVV0aWxzLmdldEphdmFSZXNvdXJjZVBhY2thZ2VOYW1lKCByZXNvdXJjZS5nZXRGdWxsUGF0aCgpICk7Ci0gICAgICAgIAotICAgICAgICAJaWYoIGJlYW5QYWNrYWdlPT1udWxsICkKLSAgICAgICAgCQliZWFuUGFja2FnZSA9ICIiOwotICAgICAgICAJZWxzZQotICAgICAgICAJCWJlYW5QYWNrYWdlID0gYmVhblBhY2thZ2UgKyAiLiI7Ci0KLSAgICAgICAgCXByb3h5QmVhbiA9IGJlYW5QYWNrYWdlICsgcmVzb3VyY2UuZ2V0TmFtZSgpOwotCi0gICAgICAgIAlpZiggcHJveHlCZWFuLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5qYXZhIikgfHwgcHJveHlCZWFuLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5jbGFzcyIpKSAKLSAgICAgICAgCXsKLSAgICAgICAgCQlwcm94eUJlYW4gPSBwcm94eUJlYW4uc3Vic3RyaW5nKDAscHJveHlCZWFuLmxhc3RJbmRleE9mKCcuJykpOwotICAgICAgICAJfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKCBDb3JlRXhjZXB0aW9uIGV4YyApCi0gICAgICAgIHsgICAgICAgIAotICAgICAgICB9Ci0gICAgICAKLSAgICAgICAgcmV0dXJuIHByb3h5QmVhbjsKLSAgICB9Ci0gICAgCi0JcHVibGljIElXZWJTZXJ2aWNlQ2xpZW50IGdldFdlYlNlcnZpY2VDbGllbnQoKQotCXsKLQkgIHJldHVybiB3ZWJTZXJ2aWNlQ2xpZW50XzsKLQl9Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0Q2FuUnVuVGVzdENsaWVudCgpewotCQlyZXR1cm4gY2FuUnVuVGVzdENsaWVudF87Ci0JfQotCQotICAgIHB1YmxpYyBib29sZWFuIGdldEdlbmVyYXRlUHJveHkoKQotICAgIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgYm9vbGVhbiBnZXRDYW5HZW5lcmF0ZVByb3h5KCkKLSAgICB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgICAgIAotICAgIHB1YmxpYyBTZWxlY3Rpb25MaXN0IGdldFRlc3RGYWNpbGl0eSgpCi0gICAgewotICAgIAlyZXR1cm4gZ2V0TGVnaXRUZXN0RmFjaWxpdHkoKTsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGJvb2xlYW4gZ2V0SXNXZWJQcm9qZWN0KCkKLSAgICB7Ci0gICAgCXJldHVybiBpc1dlYlByb2plY3Q7Ci0gICAgfQotICAgIAotCXB1YmxpYyB2b2lkIHNldENsaWVudFR5cGVSdW50aW1lU2VydmVyKCBUeXBlUnVudGltZVNlcnZlciB0eXBlUnVudGltZVNlcnZlciApCi0JewotICAgICAgdHlwZVJ1bnRpbWVTZXJ2ZXJfID0gdHlwZVJ1bnRpbWVTZXJ2ZXI7ICAKLQl9Ci0JICAKLQlwdWJsaWMgdm9pZCBzZXRNb2R1bGUoIFN0cmluZyBtb2R1bGUgKQotCXsKLQkgIG1vZHVsZV8gPSBtb2R1bGU7Ci0JfQotCSAgCi0JcHVibGljIHZvaWQgc2V0TW9kdWxlVHlwZSggU3RyaW5nIG1vZHVsZVR5cGUpCi0JewotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZUNvbnRleHQoIFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHQgKQotCXsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbiggSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uICkKLSAgICB7Ci0gICAgICBzZWxlY3Rpb25fID0gc2VsZWN0aW9uOyAgCi0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIGNsYXNzIEdlblNhbXBsZVJvb3RDb21tYW5kRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50Ci0gIHsKLSAgICBwdWJsaWMgR2VuU2FtcGxlUm9vdENvbW1hbmRGcmFnbWVudCgpCi0gICAgewotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCh0cnVlKSwgIiIgKSApOwotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kKCksICIiICkpOwotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQoKSwgIiIpKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kKCksICIiKSk7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kKCB0cnVlICksICIiKSk7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IEluaXRpYWxpemVQcm94eUNvbW1hbmQoKSwgIiIgKSk7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQoKSwgIiIgKSApOwotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBUZXN0RGVmYXVsdGluZ0ZyYWdtZW50KCksIiIpKTsKLSAgICAgIGFkZCggbmV3IENsaWVudFRlc3RGcmFnbWVudCggIkNsaWVudFRlc3RXaWRnZXQiKSApOyAKLSAgICAgIGFkZCggbmV3IEZpbmlzaEZyYWdtZW50KCkgKTsKLSAgICB9Ci0gICAgCi0gICAgLyogKG5vbi1KYXZhZG9jKQotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50I3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkKLSAgICB7Ci0gICAgICAvL01hcCBTZWxlY3Rpb25Db21tYW5kCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZWxlY3Rpb25Db21tYW5kLmNsYXNzLCAiSW5pdGlhbFNlbGVjdGlvbiIsIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEluaXRpYWxTZWxlY3Rpb24iLCBudWxsKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlbGVjdGlvbkNvbW1hbmQuY2xhc3MsICJJbml0aWFsU2VsZWN0aW9uIiwgSW5pdGlhbGl6ZVByb3h5Q29tbWFuZC5jbGFzcyApOwotICAgICAgCi0gICAgICAvLyBNYXAgQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQgY29tbWFuZC4KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBuZXcgRm9yY2VUcnVlKCkgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgQ2xpZW50V2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgLy8gTWFwIENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQgY29tbWFuZC4KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiUnVuVGVzdENsaWVudCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJSZXNvdXJjZUNvbnRleHQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAKLSAgICAgIC8vIE1hcCBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQgY29tbWFuZAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7IAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdE5hbWUiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudENvbXBvbmVudFR5cGUiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAKLSAgICAgIAotICAgICAgLy8gTWFwIFdTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCBjb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VsZWN0aW9uQ29tbWFuZC5jbGFzcywgIkluaXRpYWxTZWxlY3Rpb24iLCBXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdTRExTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkdlbldTSUwiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXU0RMU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXc2lsVVJJIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV1NETFNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZVVSSSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV3NkbFVSSSIsIG5ldyBFY2xpcHNlSVBhdGgyVVJMU3RyaW5nVHJhbnNmb3JtZXIoKSk7Ci0gICAgICAgICAgICAgCi0gICAgICAvLyBNYXAgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQgY29tbWFuZC4KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRFeHRlbnNpb25GcmFnbWVudC5jbGFzcyk7Ci0gICAgICAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0IiwgV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3RFQVIiLCBXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBDbGllbnRUZXN0RnJhZ21lbnQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIENsaWVudFRlc3RGcmFnbWVudC5jbGFzcyApOyAgICAgCi0KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50TmVlZEVBUiIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJQcm9qZWN0TmFtZSIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MsIkNsaWVudEVhckNvbXBvbmVudE5hbWUiLG51bGwpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0IixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVNlcnZlckluc3RhbmNlSWQiLCBGaW5pc2hEZWZhdWx0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFNlcnZlciIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBJbml0aWFsaXplUHJveHlDb21tYW5kLmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRKMkVFVmVyc2lvbiIsIEluaXRpYWxpemVQcm94eUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdCIsIEluaXRpYWxpemVQcm94eUNvbW1hbmQuY2xhc3MsICJNb2R1bGUiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0VHlwZSIsIEluaXRpYWxpemVQcm94eUNvbW1hbmQuY2xhc3MsICJNb2R1bGVUeXBlIiwgbnVsbCk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0RUFSIiwgSW5pdGlhbGl6ZVByb3h5Q29tbWFuZC5jbGFzcywgIkVhciIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgSW5pdGlhbGl6ZVByb3h5Q29tbWFuZC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgSW5pdGlhbGl6ZVByb3h5Q29tbWFuZC5jbGFzcyApOwotCSAgCi0JICAKLQkgIAotCSAgCi0gICAgICAvLyBNYXAgSW5pdGlhbGl6ZVByb3h5Q29tbWFuZCBjb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoSW5pdGlhbGl6ZVByb3h5Q29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2VDbGllbnQiLCBDbGllbnRFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzKTsgICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEluaXRpYWxpemVQcm94eUNvbW1hbmQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgCi0gICAgICAvLyBNYXAgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZCBjb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlByb3h5QmVhbiIsIFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQuY2xhc3MpOyAgICAgIAotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlByb3h5QmVhbiIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOyAgICAgIAotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgVGVzdERlZmF1bHRpbmdGcmFnbWVudC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhJbml0aWFsaXplUHJveHlDb21tYW5kLmNsYXNzLCAiQ2FuR2VuZXJhdGVQcm94eSIsIENsaWVudFRlc3RGcmFnbWVudC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhJbml0aWFsaXplUHJveHlDb21tYW5kLmNsYXNzLCAiQ2FuUnVuVGVzdENsaWVudCIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgRmluaXNoVGVzdEZyYWdtZW50LmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiR2VuZXJhdGVQcm94eSIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJTZXJ2ZXJJbnN0YW5jZUlkIiwgRmluaXNoRGVmYXVsdENvbW1hbmQuY2xhc3MpOwotCSAgCi0gICAgICAvLyBNQVAgcG9zdCBzZXJ2ZXIgY29uZmlnIGNhbGwgICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdEVBUiIsIENsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJFQVJQcm9qZWN0TmFtZSIsIG5ldyBTdHJpbmdUb0lQcm9qZWN0VHJhbnNmb3JtZXIoKSk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFNlcnZlckluc3RhbmNlIiwgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIkV4aXN0aW5nU2VydmVySWQiLCBudWxsKTsKLSAgICAgICAgICAgIAotICAgICAgCi0gICAgICAvLyBNYXAgV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZCBjb21tYW5kLgotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoVGVzdERlZmF1bHRpbmdGcmFnbWVudC5jbGFzcywgIlRlc3RGYWNpbGl0eSIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiVGVzdEZhY2lsaXR5IixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQuY2xhc3MsICJGb2xkZXIiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIkpzcEZvbGRlciIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiTWV0aG9kcyIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiU2FtcGxlUHJvamVjdCIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiU2FtcGxlUHJvamVjdEVBUiIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAKLSAgICAgIAotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSBjbGFzcyBGb3JjZVRydWUgaW1wbGVtZW50cyBUcmFuc2Zvcm1lcgotICB7Ci0gICAgcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oT2JqZWN0IHZhbHVlKSAKLSAgICB7Ci0gICAgICByZXR1cm4gbmV3IEJvb2xlYW4odHJ1ZSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvYmluZGluZy9JbXBvcnRXU0lMV2lkZ2V0QmluZGluZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvSW1wb3J0V1NJTFdpZGdldEJpbmRpbmcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ3ZWYzOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvYmluZGluZy9JbXBvcnRXU0lMV2lkZ2V0QmluZGluZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmJpbmRpbmc7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLkltcG9ydFdTSUxXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzaWwuQWRkV1NETFRvV1NJTFdyYXBwZXJDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNpbXBsZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNlbGVjdGlvbkNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldFJlZ2lzdHJ5OwotCi0KLXB1YmxpYyBjbGFzcyBJbXBvcnRXU0lMV2lkZ2V0QmluZGluZyBpbXBsZW1lbnRzIENvbW1hbmRXaWRnZXRCaW5kaW5nCi17Ci0gIHB1YmxpYyBJbXBvcnRXU0lMV2lkZ2V0QmluZGluZygpCi0gIHsKLSAgfQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjY3JlYXRlKCkKLSAgICovCi0gIHB1YmxpYyBDb21tYW5kRnJhZ21lbnRGYWN0b3J5IGNyZWF0ZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IENvbW1hbmRGcmFnbWVudEZhY3RvcnkoKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgcHVibGljIENvbW1hbmRGcmFnbWVudCBjcmVhdGUoKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIFNlcXVlbmNlRnJhZ21lbnQgcm9vdCA9IG5ldyBTZXF1ZW5jZUZyYWdtZW50KCk7Ci0gICAgICAgICAgICAgICByb290LmFkZChuZXcgU2ltcGxlRnJhZ21lbnQoIkltcG9ydFdTSUxXaWRnZXQiKSk7Ci0gICAgICAgICAgICAgICByb290LmFkZChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IEFkZFdTRExUb1dTSUxXcmFwcGVyQ29tbWFuZCgpLCAiIikpOwotICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7ICAKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIH07Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJDYW5GaW5pc2gob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckNhbkZpbmlzaChDYW5GaW5pc2hSZWdpc3RyeSBjYW5GaW5pc2hSZWdpc3RyeSkKLSAgewotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICB7ICAgIAotICAgIC8vIEltcG9ydFdTSUxXaWRnZXQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZWxlY3Rpb25Db21tYW5kLmNsYXNzLCAiSW5pdGlhbFNlbGVjdGlvbiIsIEltcG9ydFdTSUxXaWRnZXQuY2xhc3MpOwotICAgIAotICAgIC8vIEFkZFdTRExUb1dTSUxXcmFwcGVyQ29tbWFuZAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEltcG9ydFdTSUxXaWRnZXQuY2xhc3MsICJHZW5XU0lMQXJndW1lbnRzIiwgQWRkV1NETFRvV1NJTFdyYXBwZXJDb21tYW5kLmNsYXNzLCAiQXJncyIsIG51bGwpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlcldpZGdldE1hcHBpbmdzKFdpZGdldFJlZ2lzdHJ5IHdpZGdldFJlZ2lzdHJ5KQotICB7Ci0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoIkltcG9ydFdTSUxXaWRnZXQiLCAKLSAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5USVRMRV9XU0lMX0lNUE9SVCwKLSAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5ERVNDX1dTSUxfSU1QT1JULAotICAgICAgbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0gICAgICB7Ci0gICAgICAgIHB1YmxpYyBXaWRnZXRDb250cmlidXRvciBjcmVhdGUoKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIG5ldyBJbXBvcnRXU0lMV2lkZ2V0KCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvYmluZGluZy9JbXBvcnRXU1dpZGdldEJpbmRpbmcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9iaW5kaW5nL0ltcG9ydFdTV2lkZ2V0QmluZGluZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTVjZDQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9iaW5kaW5nL0ltcG9ydFdTV2lkZ2V0QmluZGluZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5iaW5kaW5nOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5QdWJsaXNoVG9Qcml2YXRlVURESUNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5QdWJsaXNoV1NXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldFJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5XU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kOwotCi0KLXB1YmxpYyBjbGFzcyBJbXBvcnRXU1dpZGdldEJpbmRpbmcgaW1wbGVtZW50cyBDb21tYW5kV2lkZ2V0QmluZGluZwotewotICBwcml2YXRlIENhbkZpbmlzaFJlZ2lzdHJ5ICAgY2FuRmluaXNoUmVnaXN0cnk7Ci0gIHByaXZhdGUgV2lkZ2V0UmVnaXN0cnkgICAgICB3aWRnZXRSZWdpc3RyeTsKLSAgcHJpdmF0ZSBEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFNYXBwaW5nUmVnaXN0cnk7Ci0gIHByaXZhdGUgUHVibGlzaFRvUHJpdmF0ZVVERElDb21tYW5kRnJhZ21lbnQgcHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnOwotCi0gIHB1YmxpYyBJbXBvcnRXU1dpZGdldEJpbmRpbmcoKQotICB7Ci0gICAgcHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnID0gbmV3IFB1Ymxpc2hUb1ByaXZhdGVVRERJQ29tbWFuZEZyYWdtZW50KCk7Ci0gIH0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI2NyZWF0ZSgpCi0gICAqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSBjcmVhdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBDb21tYW5kRnJhZ21lbnRGYWN0b3J5KCkKLSAgICAgICAgICAgewotICAgICAgICAgICAgIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgY3JlYXRlKCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBTZXF1ZW5jZUZyYWdtZW50IHJvb3QgPSBuZXcgU2VxdWVuY2VGcmFnbWVudCgpOwotICAgICAgICAgICAgICAgcm9vdC5hZGQobmV3IFNpbXBsZUZyYWdtZW50KCJXU0ltcG9ydCIpKTsKLSAgICAgICAgICAgICAgIHJvb3QuYWRkKHB1Ymxpc2hUb1ByaXZhdGVVRERJQ21kRnJhZyk7Ci0gICAgICAgICAgICAgICByb290LmFkZChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IFdTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQoKSwgIiIpKTsKLSAgICAgICAgICAgICAgIHJldHVybiByb290OyAgCi0gICAgICAgICAgICAgfQotICAgICAgICAgICB9OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyQ2FuRmluaXNoKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJDYW5GaW5pc2goQ2FuRmluaXNoUmVnaXN0cnkgY2FuRmluaXNoUmVnaXN0cnkpCi0gIHsKLSAgICB0aGlzLmNhbkZpbmlzaFJlZ2lzdHJ5ID0gY2FuRmluaXNoUmVnaXN0cnk7Ci0gICAgcHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnLnJlZ2lzdGVyQ2FuRmluaXNoKHRoaXMuY2FuRmluaXNoUmVnaXN0cnkpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICB7Ci0gICAgdGhpcy5kYXRhTWFwcGluZ1JlZ2lzdHJ5ID0gZGF0YVJlZ2lzdHJ5OwotICAgIHB1Ymxpc2hUb1ByaXZhdGVVRERJQ21kRnJhZy5yZWdpc3RlckRhdGFNYXBwaW5ncyh0aGlzLmRhdGFNYXBwaW5nUmVnaXN0cnkpOwotICAgIAotICAgIC8vIFB1Ymxpc2hUb1ByaXZhdGVVRERJQ29tbWFuZEZyYWdtZW50Ci0gICAgZGF0YU1hcHBpbmdSZWdpc3RyeS5hZGRNYXBwaW5nKFB1Ymxpc2hXU1dpZGdldC5jbGFzcywgIlB1Ymxpc2hUb1ByaXZhdGVVRERJIiwgUHVibGlzaFRvUHJpdmF0ZVVERElDb21tYW5kRnJhZ21lbnQuY2xhc3MpOwotICAgIAotICAgIC8vIExhdW5jaFdlYlNlcnZpY2VzRXhwbG9yZXJDb21tYW5kCi0gICAgZGF0YU1hcHBpbmdSZWdpc3RyeS5hZGRNYXBwaW5nKFB1Ymxpc2hXU1dpZGdldC5jbGFzcywgIkZvcmNlTGF1bmNoT3V0c2lkZUlERSIsIFdTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFNYXBwaW5nUmVnaXN0cnkuYWRkTWFwcGluZyhQdWJsaXNoV1NXaWRnZXQuY2xhc3MsICJMYXVuY2hPcHRpb25zIiwgV1NFeHBsb3JlckxhdW5jaGVyQ29tbWFuZC5jbGFzcyk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3MoV2lkZ2V0UmVnaXN0cnkgd2lkZ2V0UmVnaXN0cnkpCi0gIHsKLSAgICB0aGlzLndpZGdldFJlZ2lzdHJ5ID0gd2lkZ2V0UmVnaXN0cnk7Ci0gICAgcHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnLnJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3ModGhpcy53aWRnZXRSZWdpc3RyeSk7Ci0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoIldTSW1wb3J0IiwgCi0gICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfRklORCwKLSAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1dTX0ZJTkQsCi0gICAgICBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLSAgICAgIHsKLSAgICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbmV3IFB1Ymxpc2hXU1dpZGdldChmYWxzZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvZXh0ZW5zaW9ucy9DbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2V4dGVuc2lvbnMvQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkyZjM5Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvZXh0ZW5zaW9ucy9DbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjU4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIwNCAxMjQ0MDggICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIgICAgICAgICAgCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNTI0ICAgMTQyNjM1IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDgxOCAgIDE1NDQwMiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MDgzMCAgIDE1MTA5MSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbiwgQ2xpZW50IHNpZGUgc3RpbGwgZW5hYmxlZCB3aGVuIHRoZXJlJ3Mgb25seSBzdHViIHNlcnZlcgotICogMjAwODAyMDUgICAxNzAxNDEga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMzI1ICAgMTg0NzYxIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNTA2ICAgMjI3ODQ4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBEaXNhYmxlZCAiUnVuIG9uIFNlcnZlciIgY2hlY2tib3ggaXMgaW4gY2hlY2tlZCBzdGF0ZQotICogMjAwODA3MjkgICAyNDEyNzUgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgTm8gVmFsaWRhdGlvbiBlcnJvciBnZW5lcmF0aW5nIFdlYiBTZXJ2aWNlIGNsaWVudCBpZiBkaWFsb2cgaGlkZGVuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU2VydmVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLlZhbGlkYXRpb25VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5SdW50aW1lRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5XZWJTZXJ2aWNlc1BhcnNlckV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci0KLQotcHVibGljIGNsYXNzIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgLy8gQ2xpZW50V2l6YXJkV2lkZ2V0Ci0JCi0JcHJpdmF0ZSBib29sZWFuICAgICAgICAgICBkZXZlbG9wQ2xpZW50XzsKLQlwcml2YXRlIGJvb2xlYW4gICAgICAgICAgIGFzc2VtYmxlQ2xpZW50XzsKLQlwcml2YXRlIGJvb2xlYW4gICAgICAgICAgIGRlcGxveUNsaWVudF87Ci0JCi0gIHByaXZhdGUgVHlwZVJ1bnRpbWVTZXJ2ZXIgICAgY2xpZW50SWRzXzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICAgICBjbGllbnRSdW50aW1lSWRfOwotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgICAgIHRlc3RTZXJ2aWNlOwotICBwcml2YXRlIEJvb2xlYW4gICAgICAgICAgICAgIGluc3RhbGxDbGllbnQ7Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgICAgc3RhcnRDbGllbnQ7Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgICAgcnVuVGVzdENsaWVudDsKLSAgcHJpdmF0ZSBSZXNvdXJjZUNvbnRleHQgICAgICByZXNvdXJjZUNvbnRleHQ7Ci0gIAotICAvLyBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0Ci0gIC8vcHJpdmF0ZSBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBjbGllbnRDaG9pY2VzXzsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50UHJvamVjdE5hbWVfOwotICBwcml2YXRlIFN0cmluZyBjbGllbnRFYXJQcm9qZWN0TmFtZV87Ci0gIC8vcHJpdmF0ZSBTdHJpbmcgY2xpZW50Q29tcG9uZW50TmFtZV87Ci0gIC8vcHJpdmF0ZSBTdHJpbmcgY2xpZW50RWFyQ29tcG9uZW50TmFtZV87Ci0gIHByaXZhdGUgU3RyaW5nIGNsaWVudENvbXBvbmVudFR5cGVfOwotICAvL3ByaXZhdGUgU3RyaW5nIGoyZWVWZXJzaW9uOwotICBwcml2YXRlIGJvb2xlYW4gY2xpZW50TmVlZEVBUl87Ci0gIAotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlU2VydmVyRmFjdG9yeUlkXzsKLSAgcHJpdmF0ZSBTdHJpbmcgc2VydmljZVNlcnZlckluc3RhbmNlSWRfOwotICAKLSAgLy8gV1NETFNlbGVjdGlvbldpZGdldAotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgIGdlbldTSUw7Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgd3NpbFVSSTsKLSAgCi0gIC8vIFdTRExTZWxlY3Rpb25Db25kaXRpb25Db21tYW5kCi0gIHByaXZhdGUgV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXI7Ci0gIAotICAvLyBXU0RMU2VsZWN0aW9uVHJlZVdpZGdldAotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgIHdzZGxVUkk7Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgIGlzQ2xpZW50U2NlbmFyaW9fOwotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgIGdlblByb3h5XyA9IHRydWU7Ci0gIHByaXZhdGUgU3RyaW5nIGxhdW5jaGVkU2VydmljZVRlc3ROYW1lOwotICAKLSAgLy9TZXJ2ZXJEZXBsb3lhYmxlQ29uZmlndXJhdGlvbkNvbW1hbmQKLSAgcHJpdmF0ZSBTdHJpbmcgc2VydmVySW5zdElkXzsKLSAgCi0gIHB1YmxpYyBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCggYm9vbGVhbiBpc0NsaWVudFNjZW5hcmlvICkKLSAgewotICAgIGlzQ2xpZW50U2NlbmFyaW9fID0gaXNDbGllbnRTY2VuYXJpbzsKLSAgfQotCi0gIC8qKgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRydWUgaWYgdGhpcyBjb21tYW5kIGlzIHJ1bm5pbmcgaW4gdGhlIGNsaWVudCB3aXphcmQgYW5kCi0gICAqIGZhbHNlIGlmIHRoaXMgY29tbWFuZCBpcyBydW5uaW5nIGluIHRoZSBjcmVhdGUgd2ViIHNlcnZpY2Ugd2l6YXJkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0SXNDbGllbnRTY2VuYXJpbygpCi0gIHsKLSAgICByZXR1cm4gaXNDbGllbnRTY2VuYXJpb187IAotICB9Ci0gIAotICAvKgotICBwdWJsaWMgdm9pZCBzZXRSdW50aW1lMkNsaWVudFR5cGVzKCBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBjaG9pY2VzICkKLSAgewotICAgIGNsaWVudENob2ljZXNfID0gY2hvaWNlczsgIAotICB9Ci0gIAotICAKLSAgcHVibGljIFNlbGVjdGlvbkxpc3RDaG9pY2VzIGdldFJ1bnRpbWUyQ2xpZW50VHlwZXMoKQotICB7Ci0gICAgcmV0dXJuIGNsaWVudENob2ljZXNfOyAgCi0gIH0KLSAgKi8KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFR5cGVSdW50aW1lU2VydmVyKFR5cGVSdW50aW1lU2VydmVyIGlkcykKLSAgewotICAgIGNsaWVudElkc18gPSBpZHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBUeXBlUnVudGltZVNlcnZlciBnZXRDbGllbnRUeXBlUnVudGltZVNlcnZlcigpCi0gIHsKLQlpZiAoY2xpZW50SWRzXy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCk9PW51bGwgfHwgY2xpZW50SWRzXy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkubGVuZ3RoKCk9PTApCi0JewotCQkvL1NldCB0aGUgaW5zdGFuY2UgaWQgZnJvbSB0aGUgc2VydmljZSBzaWRlIGlmIHRoZSBmYWN0b3J5IGlkcyBtYXRjaAotCQlpZiAoc2VydmljZVNlcnZlckluc3RhbmNlSWRfIT1udWxsICYmIHNlcnZpY2VTZXJ2ZXJJbnN0YW5jZUlkXy5sZW5ndGgoKT4wKQotCQl7Ci0JCQlpZiAoc2VydmljZVNlcnZlckZhY3RvcnlJZF8hPW51bGwgJiYgc2VydmljZVNlcnZlckZhY3RvcnlJZF8ubGVuZ3RoKCk+MCkKLQkJCXsKLQkJCQlpZiAoc2VydmljZVNlcnZlckZhY3RvcnlJZF8uZXF1YWxzKGNsaWVudElkc18uZ2V0U2VydmVySWQoKSkpCi0JCQkJewotCQkJCQljbGllbnRJZHNfLnNldFNlcnZlckluc3RhbmNlSWQoc2VydmljZVNlcnZlckluc3RhbmNlSWRfKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0gICAgcmV0dXJuIGNsaWVudElkc187Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFJ1bnRpbWVJZChTdHJpbmcgaWQpCi0gIHsKLSAgICBjbGllbnRSdW50aW1lSWRfID0gaWQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50UnVudGltZUlkKCkKLSAgewotICAgIHJldHVybiBjbGllbnRSdW50aW1lSWRfOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJJbnN0SWQoU3RyaW5nIHNlcnZlckluc3RJZCkgewotICAJdGhpcy5zZXJ2ZXJJbnN0SWRfID0gc2VydmVySW5zdElkOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VFeGlzdGluZ1NlcnZlckluc3RJZCgpewotICAJcmV0dXJuIHRoaXMuc2VydmVySW5zdElkXzsKLSAgfQotICAKLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgY2xpZW50SXNFeGlzdGluZ1NlcnZlci4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzQ2xpZW50SXNFeGlzdGluZ1NlcnZlcigpCi0gIHsKLSAgICByZXR1cm4gY2xpZW50SWRzXy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkgIT0gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGNsaWVudFByb2plY3QuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFByb2plY3QoKQotICB7Ci0JICAvL3JldHVybiBjbGllbnRQcm9qZWN0TmFtZV8gKyAiLyIgKyBjbGllbnRDb21wb25lbnROYW1lXzsKLSAgICAgIHJldHVybiBjbGllbnRQcm9qZWN0TmFtZV8gKyAiLyIgKyBjbGllbnRQcm9qZWN0TmFtZV87Ci0gIH0KLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBjbGllbnRQcm9qZWN0RUFSLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRDbGllbnRQcm9qZWN0RUFSKCkKLSAgewotICAgIGlmIChjbGllbnRFYXJQcm9qZWN0TmFtZV8hPW51bGwgJiYgY2xpZW50RWFyUHJvamVjdE5hbWVfLmxlbmd0aCgpPjApCi0gICAgewotCSAgICAvL3JldHVybiBjbGllbnRFYXJQcm9qZWN0TmFtZV8gKyAiLyIgKyBjbGllbnRFYXJDb21wb25lbnROYW1lXzsKLSAgICAgIHJldHVybiBjbGllbnRFYXJQcm9qZWN0TmFtZV8gKyAiLyIgKyBjbGllbnRFYXJQcm9qZWN0TmFtZV87Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXR1cm4gIiI7Ci0gICAgfQotICB9Ci0gIAotICAvKgotICBwcml2YXRlIFN0cmluZyBnZXRNb2R1bGVQcm9qZWN0TmFtZSggU3RyaW5nIHByb2plY3ROYW1lICkKLSAgewotCVN0cmluZyByZXN1bHQgPSAiIjsKLQkKLQlpZiggcHJvamVjdE5hbWUgIT0gbnVsbCAmJiAhcHJvamVjdE5hbWUuZXF1YWxzKCIiKSApCi0JewotCSAgSVBhdGggICAgcHJvamVjdFBhdGggPSBuZXcgUGF0aCggcHJvamVjdE5hbWUgKTsKLQkgIElQcm9qZWN0IHByb2plY3QgICAgID0gKElQcm9qZWN0KVJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKCBwcm9qZWN0UGF0aCApOwotCSAgU3RyaW5nICAgbW9kdWxlTmFtZSAgPSBKMkVFVXRpbHMuZ2V0Rmlyc3RXZWJNb2R1bGVOYW1lKCBwcm9qZWN0ICk7Ci0JICAKLQkgIHJlc3VsdCA9IHByb2plY3ROYW1lICsgIi8iICsgbW9kdWxlTmFtZTsKLQl9Ci0JCi0JcmV0dXJuIHJlc3VsdDsKLSAgfQotICAqLwotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBjbGllbnRQcm9qZWN0VHlwZS4KLSAgICovCi0gIAotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFByb2plY3RUeXBlKCkKLSAgewotICAgIC8vcmV0dXJuIGNsaWVudENob2ljZXNfLmdldENob2ljZSgpLmdldExpc3QoKS5nZXRTZWxlY3Rpb24oKTsKLSAgICByZXR1cm4gY2xpZW50Q29tcG9uZW50VHlwZV87Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGNsaWVudFJ1bnRpbWUuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFJ1bnRpbWUoKQotICB7Ci0gICAgcmV0dXJuIGNsaWVudElkc18uZ2V0UnVudGltZUlkKCk7Ci0gIH0KLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBjbGllbnRTZXJ2ZXIuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFNlcnZlcigpCi0gIHsKLSAgICByZXR1cm4gY2xpZW50SWRzXy5nZXRTZXJ2ZXJJZCgpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFNlcnZlckluc3RhbmNlKCkKLSAgewotICAgIHJldHVybiBjbGllbnRJZHNfLmdldFNlcnZlckluc3RhbmNlSWQoKTsgICAgCi0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRFeGlzdGluZ1NlcnZlckluc3RhbmNlSWQoU3RyaW5nIHNlcnZlckluc3RJZCl7Ci0gICAgCi0gICAgaWYgKGNsaWVudElkc18uZ2V0U2VydmVySW5zdGFuY2VJZCgpPT1udWxsKQotICAgICAgY2xpZW50SWRzXy5zZXRTZXJ2ZXJJbnN0YW5jZUlkKHNlcnZlckluc3RJZCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGdlbldTSUwuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0dlbldTSUwoKQotICB7Ci0gICAgcmV0dXJuIGdlbldTSUw7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIGdlbldTSUwKLSAgICogICAgICAgICAgICBUaGUgZ2VuV1NJTCB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRHZW5XU0lMKGJvb2xlYW4gZ2VuV1NJTCkKLSAgewotICAgIHRoaXMuZ2VuV1NJTCA9IGdlbldTSUw7Ci0gIH0KLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSByZXNvdXJjZUNvbnRleHQuCi0gICAqLwotICBwdWJsaWMgUmVzb3VyY2VDb250ZXh0IGdldFJlc291cmNlQ29udGV4dCgpCi0gIHsKLSAgICByZXR1cm4gcmVzb3VyY2VDb250ZXh0OwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSByZXNvdXJjZUNvbnRleHQKLSAgICogICAgICAgICAgICBUaGUgcmVzb3VyY2VDb250ZXh0IHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlc291cmNlQ29udGV4dChSZXNvdXJjZUNvbnRleHQgcmVzb3VyY2VDb250ZXh0KQotICB7Ci0gICAgdGhpcy5yZXNvdXJjZUNvbnRleHQgPSByZXNvdXJjZUNvbnRleHQ7Ci0gIH0KLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSB0ZXN0UHJveHlTZWxlY3RlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFRlc3RTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiB0ZXN0U2VydmljZTsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gdGVzdFByb3h5U2VsZWN0ZWQKLSAgICogICAgICAgICAgICBUaGUgdGVzdFByb3h5U2VsZWN0ZWQgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VGVzdFNlcnZpY2UoYm9vbGVhbiB0ZXN0U2VydmljZSkKLSAgewotICAgIHRoaXMudGVzdFNlcnZpY2UgPSB0ZXN0U2VydmljZTsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHRlc3RQcm94eVNlbGVjdGVkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0UnVuVGVzdENsaWVudCgpCi0gIHsKLSAgICByZXR1cm4gcnVuVGVzdENsaWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gdGVzdFByb3h5U2VsZWN0ZWQKLSAgICogICAgICAgICAgICBUaGUgdGVzdFByb3h5U2VsZWN0ZWQgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UnVuVGVzdENsaWVudChib29sZWFuIHJ1blRlc3RDbGllbnQpCi0gIHsKLSAgICB0aGlzLnJ1blRlc3RDbGllbnQgPSBydW5UZXN0Q2xpZW50OwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXREZXZlbG9wQ2xpZW50KCkgewotCSAgcmV0dXJuIGRldmVsb3BDbGllbnRfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RGV2ZWxvcENsaWVudChib29sZWFuIGRldmVsb3BDbGllbnQpIHsKLQkgIHRoaXMuZGV2ZWxvcENsaWVudF8gPSBkZXZlbG9wQ2xpZW50OwotICB9CQotCi0gIHB1YmxpYyBib29sZWFuIGdldEFzc2VtYmxlQ2xpZW50KCkgewotCSAgcmV0dXJuIGFzc2VtYmxlQ2xpZW50XzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEFzc2VtYmxlQ2xpZW50KGJvb2xlYW4gYXNzZW1ibGVDbGllbnQpIHsKLQkgIHRoaXMuYXNzZW1ibGVDbGllbnRfID0gYXNzZW1ibGVDbGllbnQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXREZXBsb3lDbGllbnQoKSB7Ci0JICByZXR1cm4gZGVwbG95Q2xpZW50XzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldERlcGxveUNsaWVudChib29sZWFuIGRlcGxveUNsaWVudCkgewotCSAgdGhpcy5kZXBsb3lDbGllbnRfID0gZGVwbG95Q2xpZW50OwotICB9Ci0gIAotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBpbnN0YWxsQ2xpZW50LgotICAgKi8KLSAgcHVibGljIEJvb2xlYW4gZ2V0SW5zdGFsbENsaWVudCgpCi0gIHsKLSAgICByZXR1cm4gaW5zdGFsbENsaWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gaW5zdGFsbENsaWVudAotICAgKiAgICAgICAgICAgIFRoZSBpbnN0YWxsQ2xpZW50IHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEluc3RhbGxDbGllbnQoQm9vbGVhbiBpbnN0YWxsQ2xpZW50KQotICB7Ci0gICAgdGhpcy5pbnN0YWxsQ2xpZW50ID0gaW5zdGFsbENsaWVudDsKLSAgfQotICAKLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc3RhcnRDbGllbnQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRTdGFydENsaWVudCgpCi0gIHsKLSAgICByZXR1cm4gc3RhcnRDbGllbnQ7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHN0YXJ0Q2xpZW50Ci0gICAqICAgICAgICAgICAgVGhlIHN0YXJ0Q2xpZW50IHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFN0YXJ0Q2xpZW50KGJvb2xlYW4gc3RhcnRDbGllbnQpCi0gIHsKLSAgICB0aGlzLnN0YXJ0Q2xpZW50ID0gc3RhcnRDbGllbnQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHdzZGxVUkkuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFdzZGxVUkkoKQotICB7Ci0gICAgcmV0dXJuIHdzZGxVUkk7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHdzZGxVUkkKLSAgICogICAgICAgICAgICBUaGUgd3NkbFVSSSB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRXc2RsVVJJKFN0cmluZyB3c2RsVVJJKQotICB7Ci0gICAgdGhpcy53c2RsVVJJID0gd3NkbFVSSTsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHdzaWxVUkkuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFdzaWxVUkkoKQotICB7Ci0gICAgcmV0dXJuIHdzaWxVUkk7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHdzaWxVUkkKLSAgICogICAgICAgICAgICBUaGUgd3NpbFVSSSB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRXc2lsVVJJKFN0cmluZyB3c2lsVVJJKQotICB7Ci0gICAgdGhpcy53c2lsVVJJID0gd3NpbFVSSTsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHdlYlNlcnZpY2VzUGFyc2VyLgotICAgKi8KLSAgcHVibGljIFdlYlNlcnZpY2VzUGFyc2VyIGdldFdlYlNlcnZpY2VzUGFyc2VyKCkKLSAgewotICAgIGlmICh3ZWJTZXJ2aWNlc1BhcnNlciAhPSBudWxsKQotICAgICAgcmV0dXJuIHdlYlNlcnZpY2VzUGFyc2VyOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBuZXcgV2ViU2VydmljZXNQYXJzZXJFeHQoKTsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gd2ViU2VydmljZXNQYXJzZXIKLSAgICogICAgICAgICAgICBUaGUgd2ViU2VydmljZXNQYXJzZXIgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXIpCi0gIHsKLSAgICB0aGlzLndlYlNlcnZpY2VzUGFyc2VyID0gd2ViU2VydmljZXNQYXJzZXI7Ci0gIH0KLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBqMmVlVmVyc2lvbi4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50SjJFRVZlcnNpb24oKQotICB7Ci0JICByZXR1cm4gIjE0IjsgLy9ybSBqMmVlCi0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHZlcnNpb24gVGhlIGoyZWVWZXJzaW9uIHRvIHNldC4KLSAgICovCi0gIC8qCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudEoyRUVWZXJzaW9uKFN0cmluZyB2ZXJzaW9uKQotICB7Ci0JICBqMmVlVmVyc2lvbiA9IHZlcnNpb247Ci0gIH0KLSAgKi8KLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdHJ1ZSBpZiBhIHByb3h5IHNob3VsZCBiZSBnZW5lcmF0ZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldEdlbmVyYXRlUHJveHkoKQotICB7Ci0gICAgcmV0dXJuIGdlblByb3h5XzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0R2VuZXJhdGVQcm94eSggYm9vbGVhbiBnZW5Qcm94eSApCi0gIHsKLSAgICBnZW5Qcm94eV8gPSBnZW5Qcm94eTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldExhdW5jaGVkU2VydmljZVRlc3ROYW1lKFN0cmluZyBsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSkKLSAgewotICAJdGhpcy5sYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSA9IGxhdW5jaGVkU2VydmljZVRlc3ROYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHRlc3QgZmFjaWxpdHkgdG8gbGF1bmNoLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSgpCi0gIHsKLSAgCXJldHVybiBsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdHJ1ZSBpZiB0aGUgY2xpZW50IHByb2plY3QgbmVlZHMgYW4gRUFSIHByb2plY3QuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRDbGllbnROZWVkRUFSKCkKLSAgewotICAgIHJldHVybiBjbGllbnROZWVkRUFSXzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50TmVlZEVBUihib29sZWFuIGNsaWVudE5lZWRFQVIpCi0gIHsKLSAgICBjbGllbnROZWVkRUFSXyA9IGNsaWVudE5lZWRFQVI7Ci0gIH0KLQotICAKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50Q29tcG9uZW50VHlwZShTdHJpbmcgY2xpZW50Q29tcG9uZW50VHlwZSkKLSAgewotICAgIHRoaXMuY2xpZW50Q29tcG9uZW50VHlwZV8gPSBjbGllbnRDb21wb25lbnRUeXBlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50UHJvamVjdE5hbWUoU3RyaW5nIGNsaWVudFByb2plY3ROYW1lKQotICB7Ci0gICAgdGhpcy5jbGllbnRQcm9qZWN0TmFtZV8gPSBjbGllbnRQcm9qZWN0TmFtZTsKLSAgfQotCi0gIC8qCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudENvbXBvbmVudE5hbWUoU3RyaW5nIGNsaWVudENvbXBvbmVudE5hbWUpCi0gIHsKLSAgICB0aGlzLmNsaWVudENvbXBvbmVudE5hbWVfID0gY2xpZW50Q29tcG9uZW50TmFtZTsKLSAgfQotICAqLwotICAKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoU3RyaW5nIGNsaWVudEVhclByb2plY3ROYW1lKQotICB7Ci0gICAgdGhpcy5jbGllbnRFYXJQcm9qZWN0TmFtZV8gPSBjbGllbnRFYXJQcm9qZWN0TmFtZTsKLSAgfQotICAKLSAgLyoKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50RWFyQ29tcG9uZW50TmFtZShTdHJpbmcgY2xpZW50RWFyQ29tcG9uZW50TmFtZSkKLSAgewotICAgIHRoaXMuY2xpZW50RWFyQ29tcG9uZW50TmFtZV8gPSBjbGllbnRFYXJDb21wb25lbnROYW1lOwotICB9Ci0gICovCi0gIAotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudEVhclByb2plY3ROYW1lKCkKLSAgewotICAgIHJldHVybiBjbGllbnRFYXJQcm9qZWN0TmFtZV87Ci0gIH0KLSAgCi0gIC8qCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50RWFyQ29tcG9uZW50TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gY2xpZW50RWFyQ29tcG9uZW50TmFtZV87Ci0gIH0KLSAgKi8KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VTZXJ2ZXJGYWN0b3J5SWQoU3RyaW5nIGlkKQotICB7Ci0gIAlzZXJ2aWNlU2VydmVyRmFjdG9yeUlkXyA9IGlkOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVNlcnZlckluc3RhbmNlSWQoU3RyaW5nIGlkKQotICB7Ci0gIAlzZXJ2aWNlU2VydmVySW5zdGFuY2VJZF8gPSBpZDsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0Q2FuUnVuVGVzdENsaWVudCgpewotCSAgaWYoY2xpZW50SWRzXy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkgIT0gbnVsbCkgcmV0dXJuIHRydWU7Ci0JICAKLQkgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24KLSAgewotICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotICAgIC8vRG8gc29tZSBiYXNpYyB2YWxpZGF0aW9uIHRvIGVuc3VyZSB0aGUgc2VydmVyL3J1bnRpbWUvdHlwZSBjb21iaW5hdGlvbiBpcyBzdXBwb3J0ZWQuCi0gICAgLy9UaGlzIGlzIG5lZWRlZCB0byBjYXRjaCBwcm9ibGVtcyBpbiB0aGUgZGVmYXVsdGluZwotICAgIC8vd2hlbiB0aGUgdXNlciBjbGlja3MgRmluaXNoIHByaW9yIHRvIHBhZ2UgMyBvZiB0aGUgd2l6YXJkLgotICAgIAotICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICAgICAgCi0gICAgU3RyaW5nIHNjZW5hcmlvID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19DTElFTlRfU1VCOwotCi0gICAgLy9FbnN1cmUgc2VydmVyIGFuZCBydW50aW1lIGFyZSBub24tbnVsbAotICAgIFN0cmluZyBydW50aW1lSWQgPSBjbGllbnRJZHNfLmdldFJ1bnRpbWVJZCgpOwotICAgIFN0cmluZyBzZXJ2ZXJJZCA9IGNsaWVudElkc18uZ2V0U2VydmVySWQoKTsKLSAgICBTdHJpbmcgdHlwZUlkID0gY2xpZW50SWRzXy5nZXRUeXBlSWQoKTsKLSAgICAKLSAgICBpZiggcnVudGltZUlkID09IG51bGwgfHwgcnVudGltZUlkLmxlbmd0aCgpPT0wKQotICAgIHsKLSAgICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfTk9fUlVOVElNRSwgbmV3IFN0cmluZ1tdeyBzY2VuYXJpbyB9ICkgKTsKLSAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICB9Ci0gICAgCi0gICAgaWYoIHNlcnZlcklkID09IG51bGwgfHwgc2VydmVySWQubGVuZ3RoKCk9PTApCi0gICAgewotICAgICAgLy9Qb3B1cCBhbmQgZXJyb3IgaWYgdGhlIHNlbGVjdGVkIGNsaWVudCBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LgotICAgICAgSVByb2plY3QgY2xpZW50UHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChjbGllbnRQcm9qZWN0TmFtZV8pOwotICAgICAgaWYgKCFjbGllbnRQcm9qZWN0LmV4aXN0cygpKQotICAgICAgewotICAgICAgICBTdHJpbmcgcnVudGltZUxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZUxhYmVsQnlJZChydW50aW1lSWQpOwotICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1BST0pFQ1RfTVVTVF9FWElTVCwgbmV3IFN0cmluZ1tde2NsaWVudFByb2plY3ROYW1lXywgcnVudGltZUxhYmVsIH0gKSApOwotICAgICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIFJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRSdW50aW1lQnlJZChydW50aW1lSWQpOwotCi0gICAgICAgIGlmIChkZXNjLmdldFNlcnZlclJlcXVpcmVkKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX05PX1NFUlZFUiwgbmV3IFN0cmluZ1tdIHsgc2NlbmFyaW8gfSkpOwotICAgICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy8gTm8gc2VydmVyIGhhcyBiZWVuIHNlbGVjdGVkIGFuZCB0aGUgc2VsZWN0ZWQgV2ViIHNlcnZpY2UgcnVudGltZQotICAgICAgICAgIC8vIGRvZXMgbm90Ci0gICAgICAgICAgLy8gcmVxdWlyZSBhIHNlcnZlci4gU2V0IGRlcGxveSwgaW5zdGFsbCwgcnVuLCBhbmQgdGVzdCB0byBmYWxzZS4KLSAgICAgICAgICBkZXBsb3lDbGllbnRfID0gZmFsc2U7Ci0gICAgICAgICAgaW5zdGFsbENsaWVudCA9IEJvb2xlYW4uRkFMU0U7Ci0gICAgICAgICAgc3RhcnRDbGllbnQgPSBmYWxzZTsKLSAgICAgICAgICAvL3Rlc3RTZXJ2aWNlID0gQm9vbGVhbi5GQUxTRTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBJZiB0aGUgc2VydmVyIGlzIG5vbi1udWxsLCBlbnN1cmUgdGhlcmUgaXMgYW4gaW5zdGFsbGVkIHNlcnZlciB3aXRoIElEIHRoZSBzYW1lIGFzICdzZXJ2ZXJJRCcgcmVnaXN0ZXJlZCBpbiBFY2xpcHNlCi0JYm9vbGVhbiBub1J1bnRpbWVJbnN0YWxsZWQgPSB0cnVlOwotCWlmIChzZXJ2ZXJJZCAhPSBudWxsKSB7Ci0gICAgLy8gSWYgdGhlIHNlcnZlciBpcyBub24tbnVsbCwgZW5zdXJlIHRoZXJlIGlzIGFuIGluc3RhbGxlZCBzZXJ2ZXIgd2l0aCBJRCB0aGUgc2FtZSBhcyAnc2VydmVySUQnIHJlZ2lzdGVyZWQgaW4gRWNsaXBzZQotICAgIFN0cmluZ1tdIHJ1bnRpbWVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0QWxsU2VydmVyRmFjdG9yeUlkc1dpdGhSdW50aW1lcygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVudGltZXMubGVuZ3RoOyBpKyspIHsKLQkJaWYgKHJ1bnRpbWVzW2ldLmVxdWFscyhzZXJ2ZXJJZCkpewotCQkJbm9SdW50aW1lSW5zdGFsbGVkID0gZmFsc2U7Ci0JCQlicmVhazsKLQkJfQotCX0KLSAgICBpZiAobm9SdW50aW1lSW5zdGFsbGVkKXsKLSAgICAgICAgU3RyaW5nIHNlcnZlckxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmVyTGFiZWxCeUlkKHNlcnZlcklkKTsKLSAgICAJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9OT19TRVJWRVJfUlVOVElNRV9JTlNUQUxMRUQsIG5ldyBTdHJpbmdbXSB7c2VydmVyTGFiZWx9KSk7Ci0gICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICB9Ci0JfQotICAgIAotICAgIC8vSWYgdGhlIHNlcnZlciBpcyBub24tbnVsbCBhbmQgaXMgaW5zdGFsbGVkIGluIEVjbGlwc2UsIGVuc3VyZSB0aGUgc2VydmVyLCBydW50aW1lLCBhbmQgdHlwZSBhcmUgY29tcGF0aWJsZQotICAgIGlmICghbm9SdW50aW1lSW5zdGFsbGVkICYmIHNlcnZlcklkICE9IG51bGwgJiYgc2VydmVySWQubGVuZ3RoKCkgPiAwKQotICAgIHsKLSAgICAgIGlmICghV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuaXNTZXJ2ZXJDbGllbnRSdW50aW1lVHlwZVN1cHBvcnRlZChzZXJ2ZXJJZCwgcnVudGltZUlkLCB0eXBlSWQpKQotICAgICAgewotICAgICAgICBTdHJpbmcgc2VydmVyTGFiZWwgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2ZXJMYWJlbEJ5SWQoc2VydmVySWQpOwotICAgICAgICBTdHJpbmcgcnVudGltZUxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZUxhYmVsQnlJZChydW50aW1lSWQpOwotICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0lOVkFMSURfU1JUX1NFTEVDVElPTlMsIG5ldyBTdHJpbmdbXSB7IHNlcnZlckxhYmVsLAotICAgICAgICAgICAgcnVudGltZUxhYmVsIH0pKTsKLSAgICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgfQotICAgICAgLy9JZiB0aGUgcHJvamVjdCBleGlzdHMsIGVuc3VyZSBpdCBzdXBwb3J0cyB0aGUgV2ViIHNlcnZpY2UgdHlwZSwgV2ViIHNlcnZpY2UgcnVudGltZSwgYW5kIHNlcnZlci4KLSAgICAgIGlmIChjbGllbnRQcm9qZWN0TmFtZV8gIT0gbnVsbCAmJiBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoY2xpZW50UHJvamVjdE5hbWVfKS5leGlzdHMoKSkgewotICAgIAkgIFZhbGlkYXRpb25VdGlscyB2VXRpbCA9IG5ldyBWYWxpZGF0aW9uVXRpbHMoKTsKLSAgICAgICAgICBpZiAoIXZVdGlsLmRvZXNTZXJ2ZXJTdXBwb3J0UHJvamVjdChzZXJ2ZXJJZCxjbGllbnRQcm9qZWN0TmFtZV8pKSB7Ci0gICAgCSAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfQ0xJRU5UX1NFUlZFUl9ET0VTX05PVF9TVVBQT1JUX1BST0pFQ1QsCi0JCQkJCW5ldyBTdHJpbmdbXSB7IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZlckxhYmVsQnlJZChzZXJ2ZXJJZCksY2xpZW50UHJvamVjdE5hbWVfIH0pKTsKLSAgICAJICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICAgICAgfQotICAgICAgfQotICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBzZWxlY3RlZCBzZXJ2ZXIgdHlwZSBoYXMgb25seSBzdHViIHJ1bnRpbWVzIGFzc29jaWF0ZWQKLSAgICAgIC8vIHdpdGggaXQgYW5kIGlmIGEgc2VydmVyIGluc3RhbmNlIGlzIG5vdCBzZWxlY3RlZC4KLSAgICAgIC8vIElmIHNvLCBzZXQgaW5zdGFsbCBhbmQgdGVzdCB0byBmYWxzZSBpbiB0aGUgY29udGV4dC4KLSAgICAgIElSdW50aW1lIG5vblN0dWJSdW50aW1lID0gU2VydmVyVXRpbHMuZ2V0Tm9uU3R1YlJ1bnRpbWUoc2VydmVySWQpOwotICAgICAgaWYgKG5vblN0dWJSdW50aW1lID09IG51bGwgJiYgY2xpZW50SWRzXy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaW5zdGFsbENsaWVudCA9IEJvb2xlYW4uRkFMU0U7Ci0gICAgICAgIHN0YXJ0Q2xpZW50ID0gZmFsc2U7Ci0gICAgICAgIC8vdGVzdFNlcnZpY2UgPSBCb29sZWFuLkZBTFNFOwotICAgICAgfQotICAgIH0KLQotCSAgLy8gY2FsY3VsYXRlIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGNsaWVudFJ1bnRpbWVJZCBiYXNlZCBvbiBjdXJyZW50IHNldHRpbmdzLgotCSAgY2xpZW50UnVudGltZUlkXyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldENsaWVudFJ1bnRpbWVJZChjbGllbnRJZHNfLCBjbGllbnRQcm9qZWN0TmFtZV8sIGNsaWVudENvbXBvbmVudFR5cGVfKTsgICAKLQotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvZXh0ZW5zaW9ucy9DbGllbnRFeHRlbnNpb25GcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2V4dGVuc2lvbnMvQ2xpZW50RXh0ZW5zaW9uRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEwNWQwNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvZXh0ZW5zaW9ucy9DbGllbnRFeHRlbnNpb25GcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5FeHRlbnNpb25GcmFnbWVudDsKLQotCi1wdWJsaWMgY2xhc3MgQ2xpZW50RXh0ZW5zaW9uRnJhZ21lbnQgZXh0ZW5kcyBFeHRlbnNpb25GcmFnbWVudAoteyAgCi0gIHB1YmxpYyBDbGllbnRFeHRlbnNpb25GcmFnbWVudCgpCi0gIHsKLSAgfQotICAKLSAgcHJvdGVjdGVkIENsaWVudEV4dGVuc2lvbkZyYWdtZW50KCBDbGllbnRFeHRlbnNpb25GcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgICBzdXBlciggZnJhZ21lbnQgKTsgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRUeXBlUnVudGltZVNlcnZlciggVHlwZVJ1bnRpbWVTZXJ2ZXIgaWRzICkKLSAgewotICAgIHNldEV4dGVuc2lvbklkcyggbmV3IFN0cmluZ1tdeyBpZHMuZ2V0VHlwZUlkKCksIGlkcy5nZXRSdW50aW1lSWQoKSwgaWRzLmdldFNlcnZlcklkKCkgfSApOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCNjbG9uZSgpCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgCi0gIHsKLSAgICByZXR1cm4gbmV3IENsaWVudEV4dGVuc2lvbkZyYWdtZW50KCB0aGlzICk7Ci0gIH0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2V4dGVuc2lvbnMvQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2V4dGVuc2lvbnMvQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDYzMWQ0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9leHRlbnNpb25zL0NsaWVudEV4dGVuc2lvbk91dHB1dENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDcyOCAgIDE0NTQyNiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzA1MDIgICAxODAzMDQgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlQ2xpZW50OwotCi1wdWJsaWMgY2xhc3MgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgSVdlYlNlcnZpY2VDbGllbnQgd2ViU2VydmljZUNsaWVudF87Ci0gIAotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBwcm94eUJlYW4uCi0gICAqLwotICAKLSAgcHVibGljIFN0cmluZyBnZXRQcm94eUJlYW4oKQotICB7Ci0gICAgcmV0dXJuIHdlYlNlcnZpY2VDbGllbnRfLmdldFdlYlNlcnZpY2VDbGllbnRJbmZvKCkuZ2V0SW1wbFVSTCgpOwotICB9Ci0gICAgCi0gIHB1YmxpYyBib29sZWFuIGdldENhbkdlbmVyYXRlUHJveHkoKQotICB7Ci0JcmV0dXJuICEod2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5nZXRJbXBsVVJMKCkgPT0gbnVsbCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHNldEVuZHBvaW50TWV0aG9kLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTZXRFbmRwb2ludE1ldGhvZCgpCi0gIHsKLQlyZXR1cm4gInNldEVuZHBvaW50IjsKLSAgfQotICAJCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VDbGllbnQoSVdlYlNlcnZpY2VDbGllbnQgd3NjKQotICB7Ci0Jd2ViU2VydmljZUNsaWVudF8gPSB3c2M7Ci0gIH0KLQkKLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJJbnN0YW5jZUlkKCkKLSAgewotCXJldHVybiB3ZWJTZXJ2aWNlQ2xpZW50Xy5nZXRXZWJTZXJ2aWNlQ2xpZW50SW5mbygpLmdldFNlcnZlckluc3RhbmNlSWQoKTsKLSAgfQotCQotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZlckZhY3RvcnlJZCgpCi0gIHsKLQlyZXR1cm4gd2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5nZXRTZXJ2ZXJGYWN0b3J5SWQoKTsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHByb3h5RW5kcG9pbnQuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFByb3h5RW5kcG9pbnQoKSB7Ci0gIAlyZXR1cm4gd2ViU2VydmljZUNsaWVudF8uZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKS5nZXRQcm94eUVuZHBvaW50KCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24KLSAgewotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvZXh0ZW5zaW9ucy9TZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2V4dGVuc2lvbnMvU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNiYmZkNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvZXh0ZW5zaW9ucy9TZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDY0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIwNCAxMjQ0MDggICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIgICAgICAgICAgCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDgyMyAgIDE1NDkzOCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDIwNSAgIDE3MDE0MSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAzMjYgICAxNzE3MDUgdHJ1bmdoYUBjYS5pYm0uY29tIC0gVHJ1bmcsIGltcHJvdmUgQW50VGFzayBlcnJvcnMgcmVwb3J0Ci0gKiAyMDA4MDQwOSAgIDIxOTEyMSB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZyBIYQotICogMjAwODA3MjkgICAyNDEyNzUgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgTm8gVmFsaWRhdGlvbiBlcnJvciBnZW5lcmF0aW5nIFdlYiBTZXJ2aWNlIGNsaWVudCBpZiBkaWFsb2cgaGlkZGVuCi0gKiAyMDA4MTAyOCAgIDI0ODYyNSBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBFeGNlcHRpb25zIHJ1bm5pbmcgQU5UIHRhc2tzIHVzaW5nIGluYXBwcm9wcmlhdGUgcHJvamVjdHMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TZXJ2ZXJVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLlZhbGlkYXRpb25VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5SdW50aW1lRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5XZWJTZXJ2aWNlc1BhcnNlckV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotCi0KLXB1YmxpYyBjbGFzcyBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0JcHJpdmF0ZSBib29sZWFuICAgICAgICAgICBkZXZlbG9wU2VydmljZV87Ci0JcHJpdmF0ZSBib29sZWFuICAgICAgICAgICBhc3NlbWJsZVNlcnZpY2VfOwotCXByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgZGVwbG95U2VydmljZV87Ci0KLSAgcHJpdmF0ZSBCb29sZWFuICAgICAgICAgICAgICBpbnN0YWxsU2VydmljZTsKLSAgcHJpdmF0ZSBJUHJvamVjdAkJCWluaXRpYWxQcm9qZWN0XzsKLSAgcHJpdmF0ZSBCb29sZWFuICAgICAgICAgICAgICBzdGFydFNlcnZpY2U7Ci0gIHByaXZhdGUgQm9vbGVhbiAgICAgICAgICAgICAgdGVzdFNlcnZpY2U7Ci0gIHByaXZhdGUgQm9vbGVhbiAgICAgICAgICAgICAgcHVibGlzaFNlcnZpY2U7Ci0gIHByaXZhdGUgVHlwZVJ1bnRpbWVTZXJ2ZXIgICAgc2VydmljZUlkc187Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgc2VydmljZVJ1bnRpbWVJZF87Ci0gIC8vcHJpdmF0ZSBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBzZXJ2aWNlQ2hvaWNlc187Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgc2VydmljZVByb2plY3ROYW1lXzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICAgICBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgIHNlcnZpY2VDb21wb25lbnRUeXBlXzsKLSAgLy9wcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgIHNlcnZpY2VDb21wb25lbnROYW1lXzsKLSAgLy9wcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgIHNlcnZpY2VFYXJDb21wb25lbnROYW1lXzsKLSAgLy9wcml2YXRlIFN0cmluZyBqMmVlVmVyc2lvbjsKLSAgcHJpdmF0ZSBib29sZWFuIHNlcnZpY2VOZWVkRUFSXzsKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciB3c2RsUGFyc2VyXzsKLSAgCi0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcihUeXBlUnVudGltZVNlcnZlciBpZHMpCi0gIHsKLSAgICBzZXJ2aWNlSWRzXyA9IGlkczsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VFeGlzdGluZ1NlcnZlckluc3RhbmNlSWQoU3RyaW5nIHNlcnZlckluc3RJZCl7Ci0gICAgCi0gICAgaWYgKHNlcnZpY2VJZHNfLmdldFNlcnZlckluc3RhbmNlSWQoKT09bnVsbCkKLSAgICAgIHNlcnZpY2VJZHNfLnNldFNlcnZlckluc3RhbmNlSWQoc2VydmVySW5zdElkKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIFR5cGVSdW50aW1lU2VydmljZSBvYmplY3QgdGhhdCB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgb24KLSAgICogcGFnZSAzIG9mIHRoZSB3aXphcmQuCi0gICAqLwotICBwdWJsaWMgVHlwZVJ1bnRpbWVTZXJ2ZXIgZ2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKCkKLSAgewotICAgIHJldHVybiBzZXJ2aWNlSWRzXzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVJ1bnRpbWVJZChTdHJpbmcgaWQpCi0gIHsKLSAgICBzZXJ2aWNlUnVudGltZUlkXyA9IGlkOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VSdW50aW1lSWQoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZpY2VSdW50aW1lSWRfOwotICB9Ci0KLSAgLyoKLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVByb2plY3QyRUFSUHJvamVjdChTZWxlY3Rpb25MaXN0Q2hvaWNlcyBjaG9pY2VzKQotICB7Ci0gICAgc2VydmljZUNob2ljZXNfID0gY2hvaWNlczsKLSAgfQotICAqLwotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHB1Ymxpc2hTZXJ2aWNlLgotICAgKi8KLSAgcHVibGljIEJvb2xlYW4gZ2V0UHVibGlzaFNlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIHB1Ymxpc2hTZXJ2aWNlOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBwdWJsaXNoU2VydmljZQotICAgKiAgICAgICAgICAgIFRoZSBwdWJsaXNoU2VydmljZSB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQdWJsaXNoU2VydmljZShCb29sZWFuIHB1Ymxpc2hTZXJ2aWNlKQotICB7Ci0gICAgdGhpcy5wdWJsaXNoU2VydmljZSA9IHB1Ymxpc2hTZXJ2aWNlOwotICB9Ci0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc2VydmVySXNFeGlzdGluZ1NlcnZlci4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFNlcnZlcklzRXhpc3RpbmdTZXJ2ZXIoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZpY2VJZHNfLmdldFNlcnZlckluc3RhbmNlSWQoKSAhPSBudWxsOwotICB9Ci0KLSAgLyoqCi0KLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBzZXJ2ZXJJbnN0YW5jZUlkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VTZXJ2ZXJJbnN0YW5jZUlkKCkKLSAgewotICAgIHJldHVybiBzZXJ2aWNlSWRzXy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHNlcnZlclByb2plY3QuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZlclByb2plY3QoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZpY2VQcm9qZWN0TmFtZV8gKyAiLyIgKyBzZXJ2aWNlUHJvamVjdE5hbWVfOyAKLSAgfQotICAKLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc2VydmVyUHJvamVjdEVBUi4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmVyUHJvamVjdEVBUigpCi0gIHsKLSAgICBpZiAoc2VydmljZUVhclByb2plY3ROYW1lXyE9bnVsbCAmJiBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfLmxlbmd0aCgpPjApCi0gICAgewotICAgICAgcmV0dXJuIHNlcnZpY2VFYXJQcm9qZWN0TmFtZV8gKyAiLyIgKyBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuICIiOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHNlcnZlclJ1bnRpbWUuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZlclJ1bnRpbWUoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZpY2VJZHNfLmdldFJ1bnRpbWVJZCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc2VydmVyU2VydmVyLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJTZXJ2ZXIoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZpY2VJZHNfLmdldFNlcnZlcklkKCk7Ci0gIH0KLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBzZXJ2aWNlU2NlbmFyaW9JZC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZVNjZW5hcmlvSWQoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZpY2VJZHNfLmdldFR5cGVJZCgpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZ2V0RGV2ZWxvcFNlcnZpY2UoKSB7Ci0JICByZXR1cm4gZGV2ZWxvcFNlcnZpY2VfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RGV2ZWxvcFNlcnZpY2UoYm9vbGVhbiBkZXZlbG9wU2VydmljZSkgewotCSAgdGhpcy5kZXZlbG9wU2VydmljZV8gPSBkZXZlbG9wU2VydmljZTsKLSAgfQkKLQotICBwdWJsaWMgYm9vbGVhbiBnZXRBc3NlbWJsZVNlcnZpY2UoKSB7Ci0JICByZXR1cm4gYXNzZW1ibGVTZXJ2aWNlXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEFzc2VtYmxlU2VydmljZShib29sZWFuIGFzc2VtYmxlU2VydmljZSkgewotCSAgdGhpcy5hc3NlbWJsZVNlcnZpY2VfID0gYXNzZW1ibGVTZXJ2aWNlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZ2V0RGVwbG95U2VydmljZSgpIHsKLQkgIHJldHVybiBkZXBsb3lTZXJ2aWNlXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldERlcGxveVNlcnZpY2UoYm9vbGVhbiBkZXBsb3lTZXJ2aWNlKSB7Ci0JICB0aGlzLmRlcGxveVNlcnZpY2VfID0gZGVwbG95U2VydmljZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW5zdGFsbFNlcnZpY2UuCi0gICAqLwotICBwdWJsaWMgQm9vbGVhbiBnZXRJbnN0YWxsU2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gaW5zdGFsbFNlcnZpY2U7Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSBpbnN0YWxsU2VydmljZQotICAgKiAgICAgICAgICAgIFNwZWNpZmllcyBpZiBzZXJ2aWNlIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRJbnN0YWxsU2VydmljZShCb29sZWFuIGluc3RhbGxTZXJ2aWNlKQotICB7Ci0gICAgdGhpcy5pbnN0YWxsU2VydmljZSA9IGluc3RhbGxTZXJ2aWNlOwotICB9Ci0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc3RhcnRTZXJ2aWNlLgotICAgKi8KLSAgcHVibGljIEJvb2xlYW4gZ2V0U3RhcnRTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBzdGFydFNlcnZpY2U7Ci0gIH0KLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFByb2plY3QoSVByb2plY3QgaW5pdGlhbFByb2plY3QpCi0gIHsKLQkgIGluaXRpYWxQcm9qZWN0XyA9IGluaXRpYWxQcm9qZWN0OyAgCi0gIH0JCi0gICAgCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRJbml0aWFsUHJvamVjdCgpCi0gIHsKLQkgIHJldHVybiBpbml0aWFsUHJvamVjdF87ICAKLSAgfQkKLSAgLyoqCi0gICAqIEBwYXJhbSBzdGFydFNlcnZpY2UKLSAgICogICAgICAgICAgICBUaGUgc3RhcnRTZXJ2aWNlIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFN0YXJ0U2VydmljZShCb29sZWFuIHN0YXJ0U2VydmljZSkKLSAgewotICAgIHRoaXMuc3RhcnRTZXJ2aWNlID0gc3RhcnRTZXJ2aWNlOwotICB9Ci0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgdGVzdFNlcnZpY2UuCi0gICAqLwotICBwdWJsaWMgQm9vbGVhbiBnZXRUZXN0U2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gdGVzdFNlcnZpY2U7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHRlc3RTZXJ2aWNlCi0gICAqICAgICAgICAgICAgVGhlIHRlc3RTZXJ2aWNlIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRlc3RTZXJ2aWNlKEJvb2xlYW4gdGVzdFNlcnZpY2UpCi0gIHsKLSAgICB0aGlzLnRlc3RTZXJ2aWNlID0gdGVzdFNlcnZpY2U7Ci0gIH0KLQotICBwdWJsaWMgQm9vbGVhbiBnZXRQdWJsaXNoKCkKLSAgewotICAgIHJldHVybiBuZXcgQm9vbGVhbih0cnVlKTsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGoyZWVWZXJzaW9uLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlSjJFRVZlcnNpb24oKQotICB7Ci0gIAlyZXR1cm4gIjE0IjsgLy9ybSBqMmVlCi0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRydWUgaWYgdGhlIHdlYiBzZXJ2aWNlIHByb2plY3QgbmVlZHMgdG8gYmUgaW4gYW4gRUFSIHByb2plY3QuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRTZXJ2aWNlTmVlZEVBUigpCi0gIHsKLSAgICByZXR1cm4gc2VydmljZU5lZWRFQVJfOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlTmVlZEVBUihib29sZWFuIHNlcnZpY2VOZWVkRUFSKQotICB7Ci0gICAgc2VydmljZU5lZWRFQVJfID0gc2VydmljZU5lZWRFQVI7Ci0gIH0gICAgCi0gIAotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSB3c2RsUGFyc2VyXy4KLSAgICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpCi0gIHsKLSAgICBpZiggd3NkbFBhcnNlcl8gPT0gbnVsbCApCi0gICAgewotICAgICAgd3NkbFBhcnNlcl8gPSBuZXcgV2ViU2VydmljZXNQYXJzZXJFeHQoKTsgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gd3NkbFBhcnNlcl87Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSB3c2RsUGFyc2VyXyBUaGUgd3NkbFBhcnNlcl8gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd3NkbFBhcnNlciApCi0gIHsKLSAgICB3c2RsUGFyc2VyXyA9IHdzZGxQYXJzZXI7Ci0gIH0KLSAgCi0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlUHJvamVjdE5hbWUoU3RyaW5nIHNlcnZpY2VQcm9qZWN0TmFtZSkKLSAgewotICAgIHRoaXMuc2VydmljZVByb2plY3ROYW1lXyA9IHNlcnZpY2VQcm9qZWN0TmFtZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VFYXJQcm9qZWN0TmFtZShTdHJpbmcgc2VydmljZUVhclByb2plY3ROYW1lKQotICB7Ci0gICAgdGhpcy5zZXJ2aWNlRWFyUHJvamVjdE5hbWVfID0gc2VydmljZUVhclByb2plY3ROYW1lOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlQ29tcG9uZW50VHlwZShTdHJpbmcgdHlwZSkKLSAgewotICAgIHRoaXMuc2VydmljZUNvbXBvbmVudFR5cGVfID0gdHlwZTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlQ29tcG9uZW50VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gc2VydmljZUNvbXBvbmVudFR5cGVfOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgaW5mbykgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbgotICB7Ci0gICAgSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgLy9EbyBzb21lIGJhc2ljIHZhbGlkYXRpb24gdG8gZW5zdXJlIHRoZSBzZXJ2ZXIvcnVudGltZS90eXBlIGNvbWJpbmF0aW9uIGlzIHN1cHBvcnRlZC4KLSAgICAvL1RoaXMgaXMgbmVlZGVkIHRvIGNhdGNoIHByb2JsZW1zIGluIHRoZSBkZWZhdWx0aW5nCi0gICAgLy93aGVuIHRoZSB1c2VyIGNsaWNrcyBGaW5pc2ggcHJpb3IgdG8gcGFnZSAzIG9mIHRoZSB3aXphcmQuCi0gICAgCi0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgICAgIAotICAgIFN0cmluZyBzY2VuYXJpbyA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfU0VSVklDRV9TVUI7Ci0KLSAgICAvL0Vuc3VyZSBzZXJ2ZXIgYW5kIHJ1bnRpbWUgYXJlIG5vbi1udWxsCi0gICAgU3RyaW5nIHJ1bnRpbWVJZCA9IHNlcnZpY2VJZHNfLmdldFJ1bnRpbWVJZCgpOwotICAgIFN0cmluZyBzZXJ2ZXJJZCA9IHNlcnZpY2VJZHNfLmdldFNlcnZlcklkKCk7Ci0gICAgU3RyaW5nIHR5cGVJZCA9IHNlcnZpY2VJZHNfLmdldFR5cGVJZCgpOwotICAgIAotICAgIGlmKCBydW50aW1lSWQgPT0gbnVsbCB8fCBydW50aW1lSWQubGVuZ3RoKCk9PTApCi0gICAgewotICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19OT19SVU5USU1FLCBuZXcgU3RyaW5nW117IHNjZW5hcmlvIH0gKSApOwotICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgIH0KLSAgICAKLSAgICBpZiggc2VydmVySWQgPT0gbnVsbCB8fCBzZXJ2ZXJJZC5sZW5ndGgoKT09MCkKLSAgICB7Ci0gICAgICAvL1BvcHVwIGFuZCBlcnJvciBpZiB0aGUgc2VsZWN0ZWQgc2VydmljZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LgotICAgICAgSVByb2plY3Qgc2VydmljZVByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3Qoc2VydmljZVByb2plY3ROYW1lXyk7Ci0gICAgICBpZiAoIXNlcnZpY2VQcm9qZWN0LmV4aXN0cygpKSAgICAgICAgCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBydW50aW1lTGFiZWwgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRSdW50aW1lTGFiZWxCeUlkKHJ1bnRpbWVJZCk7Ci0gICAgICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfUFJPSkVDVF9NVVNUX0VYSVNULCBuZXcgU3RyaW5nW117IHNlcnZpY2VQcm9qZWN0TmFtZV8sIHJ1bnRpbWVMYWJlbCB9ICkgKTsKLSAgICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotCi0gICAgICAgIFJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRSdW50aW1lQnlJZChydW50aW1lSWQpOwotICAgICAgICBpZiAoZGVzYy5nZXRTZXJ2ZXJSZXF1aXJlZCgpKQotICAgICAgICB7Ci0gICAgICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19OT19TRVJWRVIsIG5ldyBTdHJpbmdbXSB7IHNjZW5hcmlvIH0pKTsKLSAgICAgICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICAgIH0gCi0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIE5vIHNlcnZlciBoYXMgYmVlbiBzZWxlY3RlZCBhbmQgdGhlIHNlbGVjdGVkIFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLSAgICAgICAgICAvLyBkb2VzIG5vdCByZXF1aXJlIGEgc2VydmVyLiBTZXQgZGVwbG95LCBpbnN0YWxsLCBydW4sIGFuZCB0ZXN0IHRvIGZhbHNlLgotICAgICAgICAgIGRlcGxveVNlcnZpY2VfID0gZmFsc2U7Ci0gICAgICAgICAgaW5zdGFsbFNlcnZpY2UgPSBCb29sZWFuLkZBTFNFOwotICAgICAgICAgIHN0YXJ0U2VydmljZSA9IEJvb2xlYW4uRkFMU0U7Ci0gICAgICAgICAgdGVzdFNlcnZpY2UgPSBCb29sZWFuLkZBTFNFOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIElmIHRoZSBzZXJ2ZXIgaXMgbm9uLW51bGwsIGVuc3VyZSB0aGVyZSBpcyBhbiBpbnN0YWxsZWQgc2VydmVyIHdpdGggSUQgdGhlIHNhbWUgYXMgJ3NlcnZlcklEJyByZWdpc3RlcmVkIGluIEVjbGlwc2UKLQlib29sZWFuIG5vUnVudGltZUluc3RhbGxlZCA9IHRydWU7Ci0JaWYgKHNlcnZlcklkICE9IG51bGwpIHsKLSAgICBTdHJpbmdbXSBydW50aW1lcyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldEFsbFNlcnZlckZhY3RvcnlJZHNXaXRoUnVudGltZXMoKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVudGltZXMubGVuZ3RoOyBpKyspIHsKLQkJaWYgKHJ1bnRpbWVzW2ldLmVxdWFscyhzZXJ2ZXJJZCkpewotCQkJbm9SdW50aW1lSW5zdGFsbGVkID0gZmFsc2U7Ci0JCQlicmVhazsKLQkJfQotCX0KLSAgICBpZiAobm9SdW50aW1lSW5zdGFsbGVkKXsKLSAgICAgICAgU3RyaW5nIHNlcnZlckxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmVyTGFiZWxCeUlkKHNlcnZlcklkKTsKLSAgICAgICAgaWYgKHNlcnZlckxhYmVsID09IG51bGwpIC8vIENhbm5vdCB0cmFuc2xhdGUgZnJvbSBpZCB0byBsYWJlbCwgc28gbGV0J3MganVzdCB1c2UgdGhlIGlkCi0gICAgICAgIAlzZXJ2ZXJMYWJlbCA9IHNlcnZlcklkOwotICAgIAlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX05PX1NFUlZFUl9SVU5USU1FX0lOU1RBTExFRCwgbmV3IFN0cmluZ1tdIHtzZXJ2ZXJMYWJlbH0pKTsKLSAgICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgIH0KLQl9Ci0gICAgCi0gICAgLy9JZiB0aGUgc2VydmVyIGlzIG5vbi1udWxsIGFuZCBpcyBpbnN0YWxsZWQgaW4gRWNsaXBzZSwgZW5zdXJlIHRoZSBzZXJ2ZXIsIHJ1bnRpbWUsIGFuZCB0eXBlIGFyZSBjb21wYXRpYmxlCi0gICAgaWYgKCFub1J1bnRpbWVJbnN0YWxsZWQgJiYgc2VydmVySWQgIT0gbnVsbCAmJiBzZXJ2ZXJJZC5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgaWYgKCFXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5pc1NlcnZlclJ1bnRpbWVUeXBlU3VwcG9ydGVkKHNlcnZlcklkLCBydW50aW1lSWQsIHR5cGVJZCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBzZXJ2ZXJMYWJlbCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZlckxhYmVsQnlJZChzZXJ2ZXJJZCk7Ci0gICAgICAgIFN0cmluZyBydW50aW1lTGFiZWwgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRSdW50aW1lTGFiZWxCeUlkKHJ1bnRpbWVJZCk7Ci0gICAgICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfSU5WQUxJRF9TUlRfU0VMRUNUSU9OUywgbmV3IFN0cmluZ1tdIHsgc2VydmVyTGFiZWwsCi0gICAgICAgICAgICBydW50aW1lTGFiZWwgfSkpOwotICAgICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICB9Ci0gICAgICAvL0lmIHRoZSBwcm9qZWN0IGV4aXN0cywgZW5zdXJlIGl0IHN1cHBvcnRzIHRoZSBXZWIgc2VydmljZSB0eXBlLCBXZWIgc2VydmljZSBydW50aW1lLCBhbmQgc2VydmVyLgotICAgICAgaWYgKGdldEluaXRpYWxQcm9qZWN0KCkgIT0gbnVsbCAmJiBnZXRJbml0aWFsUHJvamVjdCgpLmdldE5hbWUoKSAhPSBudWxsICYmIFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChnZXRJbml0aWFsUHJvamVjdCgpLmdldE5hbWUoKSkuZXhpc3RzKCkpIHsKLSAgICAJVmFsaWRhdGlvblV0aWxzIHZhbFV0aWxzID0gbmV3IFZhbGlkYXRpb25VdGlscygpOwotICAgIAkKLQkJaWYgKFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNjZW5hcmlvRnJvbVR5cGVJZCh0eXBlSWQpID09IFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01VUCAmJgotCSAgICAJCUZhY2V0VXRpbHMuaXNKYXZhUHJvamVjdChnZXRJbml0aWFsUHJvamVjdCgpKSl7Ci0JICAgIAkJaWYoIXZhbFV0aWxzLmRvZXNTZXJ2ZXJTdXBwb3J0UHJvamVjdChzZXJ2ZXJJZCxnZXRJbml0aWFsUHJvamVjdCgpLmdldE5hbWUoKSkpewotCSAgICAJICAgIAlzdGF0dXMgID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoCi0JCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19TRVJWSUNFX1NFUlZFUl9ET0VTX05PVF9TVVBQT1JUX0pBVkFQUk9KRUNULAotCQkJCQkJCW5ldyBTdHJpbmdbXSB7IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZlckxhYmVsQnlJZChzZXJ2ZXJJZCksIGdldEluaXRpYWxQcm9qZWN0KCkuZ2V0TmFtZSgpIH0pKTsKLQkgICAgCSAgICAJZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCSAgCQkgICAgfQotCQl9IAotCQlpZiAoIXZhbFV0aWxzLmRvZXNTZXJ2ZXJTdXBwb3J0UHJvamVjdChzZXJ2ZXJJZCwgc2VydmljZVByb2plY3ROYW1lXykpIHsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKAotCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1NFUlZJQ0VfU0VSVkVSX0RPRVNfTk9UX1NVUFBPUlRfUFJPSkVDVCwKLQkJCQkJbmV3IFN0cmluZ1tdIHsgV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmVyTGFiZWxCeUlkKHNlcnZlcklkKSwKLQkJCQkJCQlzZXJ2aWNlUHJvamVjdE5hbWVfIH0pKTsKLQkJCWVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJfQotCSAgfQotICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBzZWxlY3RlZCBzZXJ2ZXIgdHlwZSBoYXMgb25seSBzdHViIHJ1bnRpbWVzIGFzc29jaWF0ZWQKLSAgICAgIC8vIHdpdGggaXQgYW5kIGlmIGEgc2VydmVyIGluc3RhbmNlIGlzIG5vdCBzZWxlY3RlZC4KLSAgICAgIC8vIElmIHNvLCBzZXQgaW5zdGFsbCwgcnVuLCBhbmQgdGVzdCB0byBmYWxzZSBpbiB0aGUgY29udGV4dC4KLSAgICAgIElSdW50aW1lIG5vblN0dWJSdW50aW1lID0gU2VydmVyVXRpbHMuZ2V0Tm9uU3R1YlJ1bnRpbWUoc2VydmVySWQpOwotICAgICAgaWYgKG5vblN0dWJSdW50aW1lID09IG51bGwgJiYgc2VydmljZUlkc18uZ2V0U2VydmVySW5zdGFuY2VJZCgpID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGluc3RhbGxTZXJ2aWNlID0gQm9vbGVhbi5GQUxTRTsKLSAgICAgICAgc3RhcnRTZXJ2aWNlID0gQm9vbGVhbi5GQUxTRTsKLSAgICAgICAgdGVzdFNlcnZpY2UgPSBCb29sZWFuLkZBTFNFOwotICAgICAgfQotICAgIH0KLQotCS8vIGNhbGN1bGF0ZSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBjbGllbnRSdW50aW1lSWQgYmFzZWQgb24gY3VycmVudCBzZXR0aW5ncy4KLQlzZXJ2aWNlUnVudGltZUlkXyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZpY2VSdW50aW1lSWQoIHNlcnZpY2VJZHNfLCBzZXJ2aWNlUHJvamVjdE5hbWVfLCBzZXJ2aWNlQ29tcG9uZW50VHlwZV8pOyAgIAotICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9leHRlbnNpb25zL1NlcnZlckV4dGVuc2lvbkZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvZXh0ZW5zaW9ucy9TZXJ2ZXJFeHRlbnNpb25GcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDBhNDk1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9leHRlbnNpb25zL1NlcnZlckV4dGVuc2lvbkZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkV4dGVuc2lvbkZyYWdtZW50OwotCi0KLXB1YmxpYyBjbGFzcyBTZXJ2ZXJFeHRlbnNpb25GcmFnbWVudCBleHRlbmRzIEV4dGVuc2lvbkZyYWdtZW50Ci17ICAKLSAgcHVibGljIFNlcnZlckV4dGVuc2lvbkZyYWdtZW50KCkKLSAgewotCi0gIH0KLSAgCi0gIHByb3RlY3RlZCBTZXJ2ZXJFeHRlbnNpb25GcmFnbWVudCggU2VydmVyRXh0ZW5zaW9uRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0gICAgc3VwZXIoIGZyYWdtZW50ICk7ICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKCBUeXBlUnVudGltZVNlcnZlciBpZHMgKQotICB7Ci0gICAgc2V0RXh0ZW5zaW9uSWRzKCBuZXcgU3RyaW5nW117IGlkcy5nZXRUeXBlSWQoKSwgaWRzLmdldFJ1bnRpbWVJZCgpLCBpZHMuZ2V0U2VydmVySWQoKSB9ICk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I2Nsb25lKCkKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2xvbmUoKSAKLSAgewotICAgIHJldHVybiBuZXcgU2VydmVyRXh0ZW5zaW9uRnJhZ21lbnQoIHRoaXMgKTsKLSAgfSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvZXh0ZW5zaW9ucy9TZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvZXh0ZW5zaW9ucy9TZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxODNjZDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL2V4dGVuc2lvbnMvU2VydmVyRXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5XZWJTZXJ2aWNlc1BhcnNlckV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2U7Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgLy9wcml2YXRlIFN0cmluZyAgICAgICAgICAgIHdzZGxVUklfOwotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdzZGxQYXJzZXJfOwotCXByaXZhdGUgSVdlYlNlcnZpY2UgCQkJd2ViU2VydmljZV87Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gaXNXZWJQcm9qZWN0U3RhcnR1cFJlcXVlc3RlZF8gPSBmYWxzZTsKLSAgICAKLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHdzZGxVUkkuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFdzZGxVUkkoKQotICB7Ci0gICAgcmV0dXJuIHdlYlNlcnZpY2VfLmdldFdlYlNlcnZpY2VJbmZvKCkuZ2V0V3NkbFVSTCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSB3c2RsVVJJCi0gICAqICAgICAgICAgICAgVGhlIHdzZGxVUkkgdG8gc2V0LgotICAgKi8KLQkvKgotICBwdWJsaWMgdm9pZCBzZXRXc2RsVVJJKFN0cmluZyB3c2RsVVJJKQotICB7Ci0gICAgd3NkbFVSSV8gPSB3c2RsVVJJOwotICB9Ci0gICovCi0JCi0JcHVibGljIHZvaWQgc2V0V2ViU2VydmljZShJV2ViU2VydmljZSB3cykKLQl7Ci0JCXdlYlNlcnZpY2VfID0gd3M7Ci0JfQotCQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSB3c2RsUGFyc2VyXy4KLSAgICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXZWJTZXJ2aWNlc1BhcnNlcigpCi0gIHsKLSAgICBpZiggd3NkbFBhcnNlcl8gPT0gbnVsbCApCi0gICAgewotICAgICAgd3NkbFBhcnNlcl8gPSBuZXcgV2ViU2VydmljZXNQYXJzZXJFeHQoKTsgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gd3NkbFBhcnNlcl87Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSB3c2RsUGFyc2VyXyBUaGUgd3NkbFBhcnNlcl8gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd3NkbFBhcnNlcl8pCi0gIHsKLSAgICB0aGlzLndzZGxQYXJzZXJfID0gd3NkbFBhcnNlcl87Ci0gIH0KLS8qKgotICogQHBhcmFtIGVhclByb2plY3ROYW1lIFRoZSBlYXJQcm9qZWN0TmFtZSB0byBzZXQuCi0gKi8KLXB1YmxpYyB2b2lkIHNldEVhclByb2plY3ROYW1lKFN0cmluZyBlYXJQcm9qZWN0TmFtZSkgewotfQotLyoqCi0gKiBAcGFyYW0gZXhpc3RpbmdTZXJ2ZXJJZCBUaGUgZXhpc3RpbmdTZXJ2ZXJJZCB0byBzZXQuCi0gKi8KLXB1YmxpYyB2b2lkIHNldEV4aXN0aW5nU2VydmVySWQoU3RyaW5nIGV4aXN0aW5nU2VydmVySWQpIHsKLX0KLQotLyoqCi0gKiBAcmV0dXJuIFJldHVybnMgdGhlIGlzUmVzdGFydFByb2plY3ROZWVkZWQuCi0gKi8KLXB1YmxpYyBib29sZWFuIGdldElzV2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWQoKSB7Ci0JcmV0dXJuIGlzV2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWRfOwotfQotLyoqCi0gKiBAcGFyYW0gaXNSZXN0YXJ0UHJvamVjdE5lZWRlZCBUaGUgaXNSZXN0YXJ0UHJvamVjdE5lZWRlZCB0byBzZXQuCi0gKi8KLXB1YmxpYyB2b2lkIHNldElzV2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWQoYm9vbGVhbiBpc1Jlc3RhcnRQcm9qZWN0TmVlZGVkKSB7Ci0JdGhpcy5pc1dlYlByb2plY3RTdGFydHVwUmVxdWVzdGVkXyA9IGlzUmVzdGFydFByb2plY3ROZWVkZWQ7Ci19Ci0KLXB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZVNlcnZlckZhY3RvcnlJZCgpCi17Ci0JcmV0dXJuIHdlYlNlcnZpY2VfLmdldFdlYlNlcnZpY2VJbmZvKCkuZ2V0U2VydmVyRmFjdG9yeUlkKCk7Ci19Ci0KLXB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZVNlcnZlckluc3RhbmNlSWQoKQotewotCXJldHVybiB3ZWJTZXJ2aWNlXy5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldFNlcnZlckluc3RhbmNlSWQoKTsKLX0KLQotcHVibGljIElTdGF0dXMgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgaW5mbykgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbgotewotICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvQWJzdHJhY3RPYmplY3RTZWxlY3Rpb25XaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvQWJzdHJhY3RPYmplY3RTZWxlY3Rpb25XaWRnZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA1Yzk3MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L0Fic3RyYWN0T2JqZWN0U2VsZWN0aW9uV2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MTAgICAxMzU0NDEgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA0MjAgICAxMzU5MTIgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLQotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RPYmplY3RTZWxlY3Rpb25XaWRnZXQgZXh0ZW5kcyBTaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3IgaW1wbGVtZW50cyBJT2JqZWN0U2VsZWN0aW9uV2lkZ2V0Ci17Ci0gIHB1YmxpYyB2b2lkIHNldEluaXRpYWxTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5pdGlhbFNlbGVjdGlvbikKLSAgewotICAgIC8vIHN1YmNsYXNzIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZAotICB9Ci0KLSAgcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldE9iamVjdFNlbGVjdGlvbigpCi0gIHsKLSAgICAvLyBzdWJjbGFzcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QKLSAgICByZXR1cm4gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oKTsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIHZhbGlkYXRlU2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIG9iamVjdFNlbGVjdGlvbikKLSAgewotICAgIC8vICBzdWJjbGFzcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRQcm9qZWN0KCkKLSAgewotICAgIC8vICBzdWJjbGFzcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgIHB1YmxpYyAgU3RyaW5nIGdldE9iamVjdFNlbGVjdGlvbkRpc3BsYXlhYmxlU3RyaW5nKCkKLSAgIHsKLQkgICAgLy8gIHN1YmNsYXNzIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZAotCSAgcmV0dXJuICIiOwotICAgfQotICAgCi0gICBwdWJsaWMgUG9pbnQgZ2V0V2lkZ2V0U2l6ZSgpCi0gICB7Ci0gICAgICAvLyBzdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB3aXRoIGFuIGFwcHJvcHJpYXRlIGRlZmF1bHQgZGlhbG9nIHNpemUgZm9yIHRoaXMgd2lkZ2V0CSAgCi0gCSAgcmV0dXJuIG51bGw7ICAKLSAgIH0KLSAgIAotICAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoU3RyaW5nIHMpIHsKLSAgICAvLyBzdWJjbGFzcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QKLQlyZXR1cm4gdHJ1ZTsKLSAgICB9ICAKLSAgfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9FSkJTZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9FSkJTZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmQ4M2YxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvRUpCU2VsZWN0aW9uVHJhbnNmb3JtZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDExNiAgIDE1OTYxOCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgUHJvamVjdCBhbmQgRUFSIG5vdCBkZWZhdWx0ZWQgcHJvcGVybHkgd2hlbiB3aXphcmQgbGF1bmNoZWQgZnJvbSBKU1ItMTA5IFdlYiBzZXJ2aWNlcyBicmFuY2ggaW4gSjJFRSBQcm9qZWN0IEV4cGxvcmVyCi0gKiAyMDA4MDIxMiAgIDIwODc5NSBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBXUyB3aXphcmQgZnJhbWV3b3JrIHNob3VsZCBzdXBwb3J0IEVKQiAzLjAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5FbnRlcnByaXNlQmVhbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuRUpCTGluazsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuUG9ydENvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuU2VydmljZUltcGxCZWFuOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qYXZhZWUuZWpiLlNlc3Npb25CZWFuOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuVHJhbnNmb3JtZXI7Ci0KLXB1YmxpYyBjbGFzcyBFSkJTZWxlY3Rpb25UcmFuc2Zvcm1lciBpbXBsZW1lbnRzIFRyYW5zZm9ybWVyCi17Ci0KLSAgcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oT2JqZWN0IHZhbHVlKQotICB7Ci0gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pCi0gICAgewotICAgICAgT2JqZWN0IHNlbCA9ICgoSVN0cnVjdHVyZWRTZWxlY3Rpb24pdmFsdWUpLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgaWYgKHNlbCBpbnN0YW5jZW9mIEVudGVycHJpc2VCZWFuKQotICAgICAgewotICAgICAgICByZXR1cm4gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oKChFbnRlcnByaXNlQmVhbilzZWwpLmdldE5hbWUoKSk7Ci0gICAgICB9IAotICAgICAgZWxzZSBpZiAoc2VsIGluc3RhbmNlb2YgU2Vzc2lvbkJlYW4pIAotICAgICAgewotICAgIAkgIHJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbigoKFNlc3Npb25CZWFuKXNlbCkuZ2V0RWpiTmFtZSgpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHNlbCBpbnN0YW5jZW9mIFNlcnZpY2VJbXBsQmVhbikKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKGdldEJlYW5OYW1lKChTZXJ2aWNlSW1wbEJlYW4pIHNlbCkpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoc2VsIGluc3RhbmNlb2YgRUpCTGluaykKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKGdldEJlYW5OYW1lKChFSkJMaW5rKSBzZWwpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRCZWFuTmFtZShTZXJ2aWNlSW1wbEJlYW4gYmVhbikgewotCSAgRU9iamVjdCBlT2JqZWN0ID0gYmVhbi5lQ29udGFpbmVyKCk7Ci0JICBpZiAoZU9iamVjdCBpbnN0YW5jZW9mIFBvcnRDb21wb25lbnQpIHsKLQkJICBQb3J0Q29tcG9uZW50IHBjID0gKFBvcnRDb21wb25lbnQpIGVPYmplY3Q7Ci0JCSAgcmV0dXJuIHBjLmdldFBvcnRDb21wb25lbnROYW1lKCk7CSAgICAgIAkKLQkgIH0KLQkgIHJldHVybiAiIjsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0QmVhbk5hbWUoRUpCTGluayBsaW5rKSB7Ci0JICBFT2JqZWN0IGVPYmplY3QgPSBsaW5rLmVDb250YWluZXIoKTsKLQkgIGlmIChlT2JqZWN0IGluc3RhbmNlb2YgU2VydmljZUltcGxCZWFuKQotCQkgIHJldHVybiBnZXRCZWFuTmFtZSgoU2VydmljZUltcGxCZWFuKSBlT2JqZWN0KTsKLQkgIHJldHVybiAiIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9FSkJTZWxlY3Rpb25XaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvRUpCU2VsZWN0aW9uV2lkZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNGM4MzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9FSkJTZWxlY3Rpb25XaWRnZXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMjkgICAxMjgwNjkgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQxOCAgIDEzNjE4MCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA1MjQgICAxNDExOTQgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA4MjUgICAxMzU1NzAgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFNlcnZpY2UgaW1wbGVtZW50YXRpb24gVVJMIG5vdCBkaXNwbGF5ZWQgcHJvcGVybHkgb24gZmlyc3QgcGFnZQotICogMjAwODAyMTIgICAyMDg3OTUgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIFBldGVycywgV1Mgd2l6YXJkIGZyYW1ld29yayBzaG91bGQgc3VwcG9ydCBFSkIgMy4wCi0gKiAyMDA4MDIyOSAgIDIxODY5NiBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBBUElzIHVzaW5nIEVKQkFydGlmYWN0RWRpdCBub3QgYWJsZSB0byBkZWFsIHdpdGggc29tZSBFSkIgMy4wIGJlYW5zIHByb3Blcmx5Ci0gKiAyMDA4MDQyOCAgIDIyNDcyNiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0OwotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamIuRUpCSmFyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5FSkJSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamIuU2Vzc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamIuY29tcG9uZW50Y29yZS51dGlsLkVKQkFydGlmYWN0RWRpdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5wcm9qZWN0LkoyRUVQcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLm1vZGVsLklNb2RlbFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLm1vZGVsLk1vZGVsUHJvdmlkZXJNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qYXZhZWUuZWpiLkVudGVycHJpc2VCZWFuczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuamF2YWVlLmVqYi5TZXNzaW9uQmVhbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25BZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tYm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkdyb3VwOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldERhdGFFdmVudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLmludGVybmFsLnV0aWwuQ29tcG9uZW50VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxDb21wb25lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBFSkJTZWxlY3Rpb25XaWRnZXQgZXh0ZW5kcyBBYnN0cmFjdE9iamVjdFNlbGVjdGlvbldpZGdldCBpbXBsZW1lbnRzIElPYmplY3RTZWxlY3Rpb25XaWRnZXQKLXsKLQotICBwcml2YXRlIENvbWJvIGVhckxpc3Q7Ci0gIHByaXZhdGUgRUpCVGFibGVWaWV3ZXIgYmVhbkxpc3Q7Ci0gIHByaXZhdGUgSVZpcnR1YWxDb21wb25lbnRbXSBlYXJDb21wb25lbnRzOwotICBwcml2YXRlIEludGVnZXIgc2VsZWN0ZWRCZWFuSW5kZXggPSBudWxsOwotICBwcml2YXRlIFZlY3RvciBlamJCZWFuTmFtZXM7Ci0gIHByaXZhdGUgVmVjdG9yIGVqYkNvbXBvbmVudE5hbWVzOwotICBwcml2YXRlIFZlY3RvciBlamJDb21wb25lbnRQcm9qZWN0TmFtZXM7Ci0gIHByaXZhdGUgSGFzaHRhYmxlIGVqYlZhbHVlc0J5RUFSU2VsZWN0aW9uQ2FjaGU7Ci0gIHByaXZhdGUgTGlzdGVuZXIgIHN0YXR1c0xpc3RlbmVyXzsKLSAgcHJpdmF0ZSBTdHJpbmcgZGlzcGxheVN0cmluZ18gPSAiIjsKLSAgLyogQ09OVEVYVF9JRCBQRUJEMDAwMSBmb3IgdGhlIEVBUiBQcm9qZWN0cyBkcm9wLWRvd24gYm94ICovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUEVCRF9FQVJfUFJPSkVDVFMgPSAiUEVCRDAwMDEiOwotICAvKiBDT05URVhUX0lEIFBFQkQwMDAyIGZvciB0aGUgdGFibGUgY29udGFpbmluZyBhbGwgb2YgdGhlIGJlYW4gbmFtZXMgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QRUJEX1RBQkxFX0JFQU5fTkFNRVMgPSAiUEVCRDAwMDIiOwotCi0gIHB1YmxpYyBFSkJTZWxlY3Rpb25XaWRnZXQoKQotICB7Ci0JZWFyQ29tcG9uZW50cyA9IEoyRUVVdGlscy5nZXRBbGxFQVJDb21wb25lbnRzKCk7Ci0gICAgZWpiVmFsdWVzQnlFQVJTZWxlY3Rpb25DYWNoZSA9IG5ldyBIYXNodGFibGUoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0ZWRCZWFuKCkKLSAgewotICAgIGlmIChzZWxlY3RlZEJlYW5JbmRleCAhPSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiAoU3RyaW5nKSAoZWpiQmVhbk5hbWVzLmVsZW1lbnRBdChzZWxlY3RlZEJlYW5JbmRleC5pbnRWYWx1ZSgpKSk7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RlZFByb2plY3QoKQotICB7Ci0gICAgaWYgKHNlbGVjdGVkQmVhbkluZGV4ICE9IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIChTdHJpbmcpIChlamJDb21wb25lbnRQcm9qZWN0TmFtZXMuZWxlbWVudEF0KHNlbGVjdGVkQmVhbkluZGV4LmludFZhbHVlKCkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyhDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lcikKLSAgewotICAgIHN0YXR1c0xpc3RlbmVyXyAgPSBzdGF0dXNMaXN0ZW5lcjsKLSAgICBVSVV0aWxzIHV0aWxzID0gbmV3IFVJVXRpbHMoIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLklEICk7Ci0gICAgCi0gICAgQ29tcG9zaXRlIGNvbXBvc2l0ZSA9IHV0aWxzLmNyZWF0ZUNvbXBvc2l0ZShwYXJlbnQsIDEsIDAsIDApOwotICAgIAotICAgIENvbXBvc2l0ZSBwcm9qZWN0Q29tcG9zaXRlID0gdXRpbHMuY3JlYXRlQ29tcG9zaXRlKGNvbXBvc2l0ZSwgMik7Ci0gICAgbmV3IExhYmVsKHByb2plY3RDb21wb3NpdGUsIFNXVC5OVUxMKS5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9FQVJfUFJPSkVDVFMpOwotICAgIGVhckxpc3QgPSBuZXcgQ29tYm8ocHJvamVjdENvbXBvc2l0ZSwgU1dULkRST1BfRE9XTiB8IFNXVC5SRUFEX09OTFkpOwotICAgIGVhckxpc3Quc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMKSk7Ci0gICAgZWFyTGlzdC5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uQWRhcHRlcigpCi0gICAgewotICAgICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZ0KQotICAgICAgewotICAgICAgICBDb21ibyB3aWRnZXQgPSAoQ29tYm8pIChldnQud2lkZ2V0KTsKLSAgICAgICAgaW50IGVhckxpc3RTZWxlY3Rpb25JbmRleCA9IHdpZGdldC5nZXRTZWxlY3Rpb25JbmRleCgpOwotICAgICAgICBpZiAoZWFyTGlzdFNlbGVjdGlvbkluZGV4ID4gMCkKLSAgICAgICAgewotICAgICAgICAgIHNldEJlYW5MaXN0KGVhckNvbXBvbmVudHNbZWFyTGlzdFNlbGVjdGlvbkluZGV4LTFdKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBzZXRCZWFuTGlzdChudWxsKTsKLSAgICAgICAgfQotICAgICAgICBzZWxlY3RlZEJlYW5JbmRleCA9IG51bGw7Ci0gICAgICAgIHN0YXR1c0xpc3RlbmVyXy5oYW5kbGVFdmVudChudWxsKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICBhZGRFQVJOYW1lc1RvTGlzdCgpOwotICAgIGVhckxpc3Quc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfRUFSX1BST0pFQ1RTKTsKLSAgICBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKGVhckxpc3QsIElORk9QT1BfUEVCRF9FQVJfUFJPSkVDVFMpOwotICAgIAotICAgIEdyb3VwIGJlYW5Db21wb3NpdGUgPSB1dGlscy5jcmVhdGVHcm91cChjb21wb3NpdGUsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9FSkJfQkVBTl9OQU1FLCAiIiwgIiIpOwotICAgIGJlYW5MaXN0ID0gbmV3IEVKQlRhYmxlVmlld2VyKGJlYW5Db21wb3NpdGUpOyAgICAKLSAgICBUYWJsZSBiZWFuVGFibGUgPSBiZWFuTGlzdC5nZXRUYWJsZSgpOwotICAgIEdyaWREYXRhIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCB8IEdyaWREYXRhLkZJTExfVkVSVElDQUwpOwotICAgIGdkLmhlaWdodEhpbnQgPSAxMDA7Ci0gICAgYmVhblRhYmxlLnNldExheW91dERhdGEoZ2QpOwotICAgIGJlYW5UYWJsZS5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uQWRhcHRlcigpCi0gICAgewotICAgICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZ0KQotICAgICAgewotICAgICAgICBUYWJsZSB0YWJsZSA9IChUYWJsZSkgKGV2dC53aWRnZXQpOwotICAgICAgICBzZWxlY3RlZEJlYW5JbmRleCA9IG5ldyBJbnRlZ2VyKHRhYmxlLmdldFNlbGVjdGlvbkluZGV4KCkpOwotICAgICAgICBzdGF0dXNMaXN0ZW5lcl8uaGFuZGxlRXZlbnQobnVsbCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgYmVhblRhYmxlLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1RBQkxFX0JFQU5fTkFNRVMpOwotICAgIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAoYmVhblRhYmxlLCBJTkZPUE9QX1BFQkRfVEFCTEVfQkVBTl9OQU1FUyk7Ci0gICAgCi0gICAgaWYgKGVhckNvbXBvbmVudHMgIT0gbnVsbCAmJiBlYXJDb21wb25lbnRzLmxlbmd0aCA+IDApCi0gICAgewotICAgICAgc2V0QmVhbkxpc3QoZWFyQ29tcG9uZW50c1swXSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBzZXRCZWFuTGlzdChudWxsKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyBpcyBhIGR1bW15IGxhYmVsIHRoYXQgZm9yY2VzIHRoZSBzdGF0dXMgbGFiZWwgaW50byB0aGUgc2Vjb25kCi0gICAgLy8gY29sdW1uLgotICAgIG5ldyBMYWJlbChjb21wb3NpdGUsIFNXVC5OVUxMKS5zZXRUZXh0KCIiKTsKLSAgIAotICAgIHJldHVybiB0aGlzOwotICB9Ci0KLSAgCi0gIAotICBwcml2YXRlIHZvaWQgYWRkRUFSTmFtZXNUb0xpc3QoKQotICB7Ci0gICAgZWFyTGlzdC5hZGQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NIT1dfQUxMX1NUQVRFTEVTU19TRVNTSU9OX0VKQlMpOwotICAgIGlmIChlYXJDb21wb25lbnRzICE9IG51bGwgJiYgZWFyQ29tcG9uZW50cy5sZW5ndGggPiAwKQotICAgIHsKLSAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBlYXJDb21wb25lbnRzLmxlbmd0aDsgaW5kZXgrKykKLSAgICAgIHsKLSAgICAgICAgZWFyTGlzdC5hZGQoZWFyQ29tcG9uZW50c1tpbmRleF0uZ2V0TmFtZSgpKTsKLSAgICAgIH0KLSAgICAgIGVhckxpc3Quc2V0VGV4dChlYXJMaXN0LmdldEl0ZW0oMSkpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBzZXRCZWFuTGlzdChJVmlydHVhbENvbXBvbmVudCBlYXJDb21wb25lbnQpCi0gIHsgICAgCi0gICAgU3RyaW5nIGNhY2hlS2V5ID0gKGVhckNvbXBvbmVudCA9PSBudWxsKT8gZWFyTGlzdC5nZXRJdGVtKDApOiBlYXJDb21wb25lbnQuZ2V0TmFtZSgpOwotICAgIAotICAgIC8vQ2hlY2sgaWYgd2UndmUgYWxyZWFkeSBjYWNoZWQgcmVzdWx0cyBmb3IgdGhpcyBjYXNlLiBJZiBzbywgdXNlIHRoZQotICAgIC8vY2FjaGVkIHZhbHVlcyBhbmQgcmV0dXJuLiBJZiBub3QsIGNvbnRpbnVlLgotICAgIEVKQlRhYmxlVmFsdWVzIGNhY2hlZFZhbHVlcyA9IChFSkJUYWJsZVZhbHVlcyllamJWYWx1ZXNCeUVBUlNlbGVjdGlvbkNhY2hlLmdldChjYWNoZUtleSk7Ci0gICAgaWYgKGNhY2hlZFZhbHVlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIGVqYkJlYW5OYW1lcyA9IGNhY2hlZFZhbHVlcy5jYWNoZWRFamJCZWFuTmFtZXM7Ci0gICAgICBlamJDb21wb25lbnROYW1lcyA9IGNhY2hlZFZhbHVlcy5jYWNoZWRFamJDb21wb25lbnROYW1lczsKLSAgICAgIGVqYkNvbXBvbmVudFByb2plY3ROYW1lcyA9IGNhY2hlZFZhbHVlcy5jYWNoZGVkRWpiQ29tcG9uZW50UHJvamVjdE5hbWVzOwotICAgICAgYmVhbkxpc3Quc2V0RGF0YShlamJCZWFuTmFtZXMsIGVqYkNvbXBvbmVudE5hbWVzKTsKLSAgICAgIGJlYW5MaXN0LnNldElucHV0KGVqYkJlYW5OYW1lcyk7ICAgIAotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBJVmlydHVhbENvbXBvbmVudFtdIGVqYkNvbXBvbmVudHNBcnJheSA9IG51bGw7Ci0gICAgaWYgKGVhckNvbXBvbmVudCA9PSBudWxsKQotICAgIHsgIAotICAgICAgZWpiQ29tcG9uZW50c0FycmF5ID0gSjJFRVV0aWxzLmdldEFsbEVKQkNvbXBvbmVudHMoKTsgICAgICAKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGVqYkNvbXBvbmVudHNBcnJheSA9IEoyRUVVdGlscy5nZXRSZWZlcmVuY2luZ0VKQkNvbXBvbmVudHNGcm9tRUFSKGVhckNvbXBvbmVudC5nZXRQcm9qZWN0KCkpOwotICAgIH0KLSAgICAKLSAgICBUYWJsZSBiZWFuVGFibGUgPSBiZWFuTGlzdC5nZXRUYWJsZSgpOwotICAgIGJlYW5UYWJsZS5yZW1vdmVBbGwoKTsKLSAgICBlamJCZWFuTmFtZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZWpiQ29tcG9uZW50TmFtZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZWpiQ29tcG9uZW50UHJvamVjdE5hbWVzID0gbmV3IFZlY3RvcigpOwotICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBlamJDb21wb25lbnRzQXJyYXkubGVuZ3RoOyBpbmRleCsrKQotICAgIHsKLSAgICAJSVByb2plY3QgcHJvamVjdCA9IGVqYkNvbXBvbmVudHNBcnJheVtpbmRleF0uZ2V0UHJvamVjdCgpOwotICAgICAgICBWZWN0b3IgYmVhbnMgPSBKMkVFVXRpbHMuZ2V0QmVhbk5hbWVzKHByb2plY3QpOwotICAgICAgICBTdHJpbmcgY29tcG9uZW50TmFtZSA9IGVqYkNvbXBvbmVudHNBcnJheVtpbmRleF0uZ2V0TmFtZSgpOwotICAgICAgICBTdHJpbmcgcHJvamVjdE5hbWUgPSBlamJDb21wb25lbnRzQXJyYXlbaW5kZXhdLmdldFByb2plY3QoKS5nZXROYW1lKCk7Ci0gICAgICAgIGVqYkJlYW5OYW1lcy5hZGRBbGwoYmVhbnMpOwotICAgICAgICBlamJDb21wb25lbnROYW1lcy5hZGRBbGwoQ29sbGVjdGlvbnMubkNvcGllcyhiZWFucy5zaXplKCksIGNvbXBvbmVudE5hbWUpKTsKLSAgICAgICAgZWpiQ29tcG9uZW50UHJvamVjdE5hbWVzLmFkZEFsbChDb2xsZWN0aW9ucy5uQ29waWVzKGJlYW5zLnNpemUoKSwgcHJvamVjdE5hbWUpKTsgICAgICAgICAgICAgICAgCi0gICAKLSAgICB9Ci0gICAgYmVhbkxpc3Quc2V0RGF0YShlamJCZWFuTmFtZXMsIGVqYkNvbXBvbmVudE5hbWVzKTsKLSAgICBiZWFuTGlzdC5zZXRJbnB1dChlamJCZWFuTmFtZXMpOwotICAgIAotICAgIC8vQ2FjaGUgdGhlIHJlc3VsdHMgZm9yIG5leHQgdGltZQotICAgIEVKQlRhYmxlVmFsdWVzIGVqYlRhYmxlVmFsdWVzID0gbmV3IEVKQlRhYmxlVmFsdWVzKCk7Ci0gICAgZWpiVGFibGVWYWx1ZXMuY2FjaGVkRWpiQmVhbk5hbWVzID0gZWpiQmVhbk5hbWVzOwotICAgIGVqYlRhYmxlVmFsdWVzLmNhY2hlZEVqYkNvbXBvbmVudE5hbWVzID0gZWpiQ29tcG9uZW50TmFtZXM7Ci0gICAgZWpiVGFibGVWYWx1ZXMuY2FjaGRlZEVqYkNvbXBvbmVudFByb2plY3ROYW1lcyA9IGVqYkNvbXBvbmVudFByb2plY3ROYW1lczsKLSAgICBlamJWYWx1ZXNCeUVBUlNlbGVjdGlvbkNhY2hlLnB1dChjYWNoZUtleSwgZWpiVGFibGVWYWx1ZXMpOyAgICAgICAgCi0gIH0KLSAgICAKLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKQotICB7Ci0gICAgaWYgKGluaXRpYWxTZWxlY3Rpb24gIT0gbnVsbCAmJiAhaW5pdGlhbFNlbGVjdGlvbi5pc0VtcHR5KCkpCi0gICAgewotICAgICAgT2JqZWN0IG9iamVjdCA9IGluaXRpYWxTZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgU2Vzc2lvbikKLSAgICAgIHsKLSAgICAgICAgU2Vzc2lvbiBzZXNzaW9uID0gKFNlc3Npb24pIG9iamVjdDsKLSAgICAgICAgRUpCSmFyIGphciA9IHNlc3Npb24uZ2V0RWpiSmFyKCk7Ci0gICAgICAgIGlmIChqYXIgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZWFyQ29tcG9uZW50cy5sZW5ndGg7IGkrKykKLSAgICAgICAgICB7Ci0JCQkgICAgICBJVmlydHVhbENvbXBvbmVudFtdIGVqYkNvbXBvbmVudHMgPSBKMkVFVXRpbHMuZ2V0UmVmZXJlbmNpbmdFSkJDb21wb25lbnRzRnJvbUVBUihlYXJDb21wb25lbnRzW2ldLmdldFByb2plY3QoKSk7Ci0JCQkgICAgICBmb3IgKGludCBqPTA7IGogPGVqYkNvbXBvbmVudHMubGVuZ3RoOyBqKyspCi0JCQkgICAgICB7Ci0gICAgICAgICAgICAgIEVKQkFydGlmYWN0RWRpdCAgZWpiRWRpdCA9IG51bGw7Ci0gICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZWpiRWRpdCA9IEVKQkFydGlmYWN0RWRpdC5nZXRFSkJBcnRpZmFjdEVkaXRGb3JSZWFkKGVqYkNvbXBvbmVudHNbal0pOwotICAgICAgICAgICAgICAgIEVKQlJlc291cmNlIGVqYlJlcyA9IGVqYkVkaXQuZ2V0RUpCSmFyWG1pUmVzb3VyY2UoKTsKLSAgICAgICAgICAgICAgICBpZiAoZWpiUmVzLmdldEVKQkphcigpID09IGphcikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBlYXJMaXN0LnNldFRleHQoZWFyQ29tcG9uZW50c1tpXS5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgc2V0QmVhbkxpc3QoZWFyQ29tcG9uZW50c1tpXSk7Ci0gICAgICAgICAgICAgICAgICBiZWFuTGlzdC5zZXRTZWxlY3Rpb24obmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24obmV3IEludGVnZXJbXXtuZXcgSW50ZWdlcihlamJCZWFuTmFtZXMuaW5kZXhPZihzZXNzaW9uLmdldE5hbWUoKSkpfSkpOwotICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRCZWFuSW5kZXggPSBuZXcgSW50ZWdlcihlamJCZWFuTmFtZXMuaW5kZXhPZihzZXNzaW9uLmdldE5hbWUoKSkpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCi0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBmaW5hbGx5IHsKLSAgICAgICAgICAgICAgICBpZiAoZWpiRWRpdCE9bnVsbCkKLSAgICAgICAgICAgICAgICAgIGVqYkVkaXQuZGlzcG9zZSgpOwotICAgICAgICAgICAgICB9Ci0JCQkJCi0JCQkgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIC8vSGF2ZW4ndCByZXR1cm5lZCB5ZXQgc28gd2UgZGlkIG5vdCBmaW5kIGFuIEVBUiB0aGF0IGNvbnRhaW5zIHRoaXMgRUpCLiBJbml0aWFsaXplIHRoZSBwYWdlIGFjY29yZGluZ2x5LgotICAgICAgICAgIGVhckxpc3Quc2V0VGV4dChlYXJMaXN0LmdldEl0ZW0oMCkpOwotICAgICAgICAgIHNldEJlYW5MaXN0KG51bGwpOwotICAgICAgICAgIGJlYW5MaXN0LnNldFNlbGVjdGlvbihuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihuZXcgSW50ZWdlcltde25ldyBJbnRlZ2VyKGVqYkJlYW5OYW1lcy5pbmRleE9mKHNlc3Npb24uZ2V0TmFtZSgpKSl9KSk7Ci0gICAgICAgICAgc2VsZWN0ZWRCZWFuSW5kZXggPSBuZXcgSW50ZWdlcihlamJCZWFuTmFtZXMuaW5kZXhPZihzZXNzaW9uLmdldE5hbWUoKSkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTdHJpbmcpCi0gICAgCSAgZGlzcGxheVN0cmluZ18gPSAoU3RyaW5nKSBvYmplY3Q7IC8vIHNhdmUgZm9yIGRpc3BsYXkgdXNlCi0gICAgfQotICB9Ci0KLSAgcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldE9iamVjdFNlbGVjdGlvbigpCi0gIHsKLQkJU3RyaW5nIHNlbEVKQk5hbWUgPSAoU3RyaW5nKSBlamJCZWFuTmFtZXMuZ2V0KHNlbGVjdGVkQmVhbkluZGV4Ci0JCQkJLmludFZhbHVlKCkpOwotCQlpZiAoc2VsRUpCTmFtZSAhPSBudWxsKSB7Ci0JCQkvLyBHZXQgdGhlIHByb2plY3QgY29udGFpbmluZyB0aGUgYmVhbiB0byBnZXQgdGhlIGNvcnJlc3BvbmRpbmcKLQkJCS8vIFNlc3Npb24gb2JqZWN0LgotCQkJLy8gVGhlbiByZXR1cm4gdGhlIFNlc3Npb24gb2JqZWN0IGluIGFuIElTdHJ1Y3R1cmVkU2VsZWN0aW9uLgotCQkJU3RyaW5nIGVqYkNvbXBvbmVudE5hbWUgPSAoU3RyaW5nKSBlamJDb21wb25lbnROYW1lcwotCQkJCQkuZ2V0KHNlbGVjdGVkQmVhbkluZGV4LmludFZhbHVlKCkpOwotCQkJSVZpcnR1YWxDb21wb25lbnQgZWpiQ29tcG9uZW50ID0gQ29tcG9uZW50VXRpbGl0aWVzCi0JCQkJCS5nZXRDb21wb25lbnQoZWpiQ29tcG9uZW50TmFtZSk7Ci0JCQlJUHJvamVjdCBwcm9qZWN0ID0gZWpiQ29tcG9uZW50LmdldFByb2plY3QoKTsKLQkJCUlNb2RlbFByb3ZpZGVyIHByb3ZpZGVyID0gTW9kZWxQcm92aWRlck1hbmFnZXIKLQkJCQkJLmdldE1vZGVsUHJvdmlkZXIocHJvamVjdCk7Ci0JCQlPYmplY3QgbW9kZWxPYmplY3QgPSBwcm92aWRlci5nZXRNb2RlbE9iamVjdCgpOwotCQkJTGlzdCBzZXNzaW9ucyA9IG5ldyBWZWN0b3IoKTsKLQkJCWJvb2xlYW4gaXNKMkVFNSA9IEoyRUVQcm9qZWN0VXRpbGl0aWVzLmlzSkVFUHJvamVjdChwcm9qZWN0KTsKLQkJCWlmIChpc0oyRUU1KSB7Ci0JICAgIAkJLy9hIEpFRTUgcHJvamVjdAotCSAgICAJCUVudGVycHJpc2VCZWFucyBlQmVhbnMgPSAoKG9yZy5lY2xpcHNlLmpzdC5qYXZhZWUuZWpiLkVKQkphciltb2RlbE9iamVjdCkuZ2V0RW50ZXJwcmlzZUJlYW5zKCk7Ci0JICAgIAkJaWYgKGVCZWFucyAhPW51bGwpCi0JICAgIAkJCXNlc3Npb25zID0gZUJlYW5zLmdldFNlc3Npb25CZWFucygpOwotCQkJfSBlbHNlIHsKLQkJCQlzZXNzaW9ucyA9ICgoRUpCSmFyKSBtb2RlbE9iamVjdCkuZ2V0U2Vzc2lvbkJlYW5zKCk7Ci0JCQl9Ci0JCQlmb3IgKEl0ZXJhdG9yIGl0MiA9IHNlc3Npb25zLml0ZXJhdG9yKCk7IGl0Mi5oYXNOZXh0KCk7KSB7Ci0JCQkJT2JqZWN0IG5leHQgPSAoaXQyLm5leHQoKSk7Ci0JCQkJaWYgKGlzSjJFRTUpIHsKLQkJCQkJU2Vzc2lvbkJlYW4gc2Vzc2lvbiA9IChTZXNzaW9uQmVhbikgbmV4dDsKLQkJCQkJaWYgKHNlbEVKQk5hbWUuZXF1YWxzKHNlc3Npb24uZ2V0RWpiTmFtZSgpKSkKLQkJCQkJCXJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbigKLQkJCQkJCQkJbmV3IFNlc3Npb25CZWFuW10geyBzZXNzaW9uIH0pOwotCi0JCQkJfSBlbHNlIHsKLQkJCQkJU2Vzc2lvbiBzZXNzaW9uID0gKFNlc3Npb24pIG5leHQ7Ci0JCQkJCWlmIChzZWxFSkJOYW1lLmVxdWFscyhzZXNzaW9uLmdldE5hbWUoKSkpCi0JCQkJCQlyZXR1cm4gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oCi0JCQkJCQkJCW5ldyBTZXNzaW9uW10geyBzZXNzaW9uIH0pOwotCQkJCX0KLQotCQkJfQotCQl9Ci0JCXJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihuZXcgT2JqZWN0WzBdKTsKLQl9Ci0gIAotICBwdWJsaWMgSVByb2plY3QgZ2V0UHJvamVjdCgpCi0gIHsKLSAgICBTdHJpbmcgcHJvamVjdE5hbWUgPSBnZXRTZWxlY3RlZFByb2plY3QoKTsKLSAgICBpZiAocHJvamVjdE5hbWUgIT0gbnVsbCAmJiBwcm9qZWN0TmFtZS5sZW5ndGgoKSA+IDApCi0gICAgICByZXR1cm4gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDb21wb25lbnROYW1lKCkKLSAgewotICAgIGlmIChzZWxlY3RlZEJlYW5JbmRleCAhPSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiAoU3RyaW5nKSAoZWpiQ29tcG9uZW50TmFtZXMuZWxlbWVudEF0KHNlbGVjdGVkQmVhbkluZGV4LmludFZhbHVlKCkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0gICAgCi0gIAotICBwdWJsaWMgU3RyaW5nIGdldE9iamVjdFNlbGVjdGlvbkRpc3BsYXlhYmxlU3RyaW5nKCkgewotCSAgCi0JICBpZiAoZWpiQmVhbk5hbWVzID09IG51bGwpCi0JCSAgcmV0dXJuIGRpc3BsYXlTdHJpbmdfOwotCSAgCi0JICBpbnQgaW5kZXggPSBzZWxlY3RlZEJlYW5JbmRleCA9PSBudWxsID8gMCA6IHNlbGVjdGVkQmVhbkluZGV4LmludFZhbHVlKCk7Ci0JICBTdHJpbmcgYmVhbiA9IChTdHJpbmcpIGVqYkJlYW5OYW1lcy5nZXQoaW5kZXgpOwotCSAgcmV0dXJuIGJlYW4gPT0gbnVsbCA/IGRpc3BsYXlTdHJpbmdfIDogYmVhbjsKLSAgfQotICAKLSAgcHVibGljIElTdGF0dXMgdmFsaWRhdGVTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gb2JqZWN0U2VsZWN0aW9uKQotICB7Ci0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpCi0gIHsgIAkKLSAgICBpZiAoc2VsZWN0ZWRCZWFuSW5kZXggPT0gbnVsbCkKLSAgICB7Ci0gICAgCXJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggIiIgKTsKLSAgICB9Ci0gICAgCi0gIAlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHVibGljIFBvaW50IGdldFdpZGdldFNpemUoKSB7Ci0JcmV0dXJuIG5ldyBQb2ludCg0NTAsIDM1MCk7Ci0gIH0gCi0gICAgCi0gIHByaXZhdGUgY2xhc3MgRUpCVGFibGVWYWx1ZXMKLSAgewotICAgIFZlY3RvciBjYWNoZWRFamJCZWFuTmFtZXM7Ci0gICAgVmVjdG9yIGNhY2hlZEVqYkNvbXBvbmVudE5hbWVzOwotICAgIFZlY3RvciBjYWNoZGVkRWpiQ29tcG9uZW50UHJvamVjdE5hbWVzOyAKLSAgfQotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvRUpCVGFibGVWaWV3ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvRUpCVGFibGVWaWV3ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU1YjRmMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L0VKQlRhYmxlVmlld2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTI0ICAgMTQxMTk0IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3Q7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5Db2x1bW5XZWlnaHREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JVGFibGVMYWJlbFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuTGFiZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlRhYmxlTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVGFibGVWaWV3ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5WaWV3ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5JbWFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGFibGVDb2x1bW47Ci0KLXB1YmxpYyBjbGFzcyBFSkJUYWJsZVZpZXdlciBleHRlbmRzIFRhYmxlVmlld2VyCi17Ci0gIHByaXZhdGUgVmVjdG9yIGJlYW5OYW1lczsKLSAgcHJpdmF0ZSBWZWN0b3IgcHJvamVjdE5hbWVzOwotCi0gIHB1YmxpYyBFSkJUYWJsZVZpZXdlcihDb21wb3NpdGUgcGFyZW50KQotICB7Ci0gICAgc3VwZXIocGFyZW50LCBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8IFNXVC5IX1NDUk9MTCB8IFNXVC5WX1NDUk9MTCB8IFNXVC5GVUxMX1NFTEVDVElPTik7Ci0gICAgCi0gICAgU3RyaW5nIGNvbHVtblByb3BlcnRpZXNbXSA9IHtDb25zdW1wdGlvblVJTWVzc2FnZXMuVEFCTEVfVElUTEVfRUpCX0JFQU5fTkFNRVMsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UQUJMRV9USVRMRV9FSkJfUFJPSkVDVF9OQU1FfTsKLSAgICBpbnQgY29sdW1uc1dpZHRoW10gPSB7NjAsIDIwfTsKLSAgICBpbnQgY29sdW1uTWluc1tdID0gezE3NSwgMTI1fTsKLSAgICAKLSAgICBUYWJsZSB0YWJsZSA9IGdldFRhYmxlKCk7Ci0gICAgdGFibGUuc2V0SGVhZGVyVmlzaWJsZSh0cnVlKTsKLSAgICB0YWJsZS5zZXRMaW5lc1Zpc2libGUodHJ1ZSk7Ci0gICAgVGFibGVMYXlvdXQgbGF5b3V0ID0gbmV3IFRhYmxlTGF5b3V0KCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb2x1bW5Qcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIFRhYmxlQ29sdW1uIGNvbHVtbiA9IG5ldyBUYWJsZUNvbHVtbih0YWJsZSwgU1dULk5PTkUsIGkpOwotICAgICAgY29sdW1uLnNldFRleHQoY29sdW1uUHJvcGVydGllc1tpXSk7Ci0gICAgICBjb2x1bW4ucGFjaygpOwotICAgICAgbGF5b3V0LmFkZENvbHVtbkRhdGEobmV3IENvbHVtbldlaWdodERhdGEoY29sdW1uc1dpZHRoW2ldLCBjb2x1bW5NaW5zW2ldLCB0cnVlKSk7ICAgICAgCi0gICAgfQotICAgIHRhYmxlLnNldExheW91dChsYXlvdXQpOwotICAgIHNldENvbHVtblByb3BlcnRpZXMoY29sdW1uUHJvcGVydGllcyk7Ci0gICAgc2V0Q29udGVudFByb3ZpZGVyKG5ldyBFSkJDb250ZW50UHJvdmlkZXIoKSk7Ci0gICAgc2V0TGFiZWxQcm92aWRlcihuZXcgRUpCTGFiZWxQcm92aWRlcigpKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RGF0YShWZWN0b3IgYmVhbk5hbWVzLCBWZWN0b3IgcHJvamVjdE5hbWVzKQotICB7Ci0gICAgdGhpcy5iZWFuTmFtZXMgPSBiZWFuTmFtZXM7Ci0gICAgdGhpcy5wcm9qZWN0TmFtZXMgPSBwcm9qZWN0TmFtZXM7Ci0gIH0KLSAgcHJpdmF0ZSBjbGFzcyBFSkJMYWJlbFByb3ZpZGVyIGV4dGVuZHMgTGFiZWxQcm92aWRlciBpbXBsZW1lbnRzIElUYWJsZUxhYmVsUHJvdmlkZXIKLSAgewotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q29sdW1uVGV4dChPYmplY3Qgb2JqZWN0LCBpbnQgY29sdW1uSW5kZXgpCi0gICAgewotICAgICAgU3RyaW5nIHJlc3VsdCA9IG51bGw7Ci0gICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgSW50ZWdlcikKLSAgICAgIHsKLSAgICAgICAgaW50IGluZGV4ID0gKChJbnRlZ2VyKSBvYmplY3QpLmludFZhbHVlKCk7Ci0gICAgICAgIGlmIChjb2x1bW5JbmRleCA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIChTdHJpbmcpIChiZWFuTmFtZXMuZWxlbWVudEF0KGluZGV4KSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY29sdW1uSW5kZXggPT0gMSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiAoU3RyaW5nKSAocHJvamVjdE5hbWVzLmVsZW1lbnRBdChpbmRleCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHB1YmxpYyBJbWFnZSBnZXRDb2x1bW5JbWFnZShPYmplY3Qgb2JqZWN0LCBpbnQgY29sdW1uSW5kZXgpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9Ci0gIHB1YmxpYyBjbGFzcyBFSkJDb250ZW50UHJvdmlkZXIgaW1wbGVtZW50cyBJU3RydWN0dXJlZENvbnRlbnRQcm92aWRlcgotICB7Ci0gICAgcHVibGljIE9iamVjdFtdIGdldEVsZW1lbnRzKE9iamVjdCBlbGVtZW50KQotICAgIHsKLSAgICAgIGlmIChiZWFuTmFtZXMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaW50IHNpemUgPSBiZWFuTmFtZXMuc2l6ZSgpOwotICAgICAgICBPYmplY3RbXSByZXN1bHQgPSBuZXcgT2JqZWN0W3NpemVdOwotICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZTsgaW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdFtpbmRleF0gPSBuZXcgSW50ZWdlcihpbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGRpc3Bvc2UoKQotICAgIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBpbnB1dENoYW5nZWQoVmlld2VyIHZpZXdlciwgT2JqZWN0IG9sZCwgT2JqZWN0IG5ld29iaikKLSAgICB7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaXNEZWxldGVkKE9iamVjdCBvYmplY3QpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9IYW5kbGVyVGFibGVJdGVtLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L0hhbmRsZXJUYWJsZUl0ZW0uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdiZTZmNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L0hhbmRsZXJUYWJsZUl0ZW0uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLlBvcnRDb21wb25lbnQ7Ci0KLQotCi1wdWJsaWMgY2xhc3MgSGFuZGxlclRhYmxlSXRlbSB7Ci0gIAotICBwcml2YXRlIFN0cmluZyBoYW5kbGVyQ2xhc3NOYW1lOwotICBwcml2YXRlIFN0cmluZyBoYW5kbGVyTmFtZTsKLSAgcHJpdmF0ZSBTdHJpbmcgcG9ydE5hbWU7Ci0gIHByaXZhdGUgaW50IGluZGV4OwotICAKLSAgcHJpdmF0ZSBQb3J0Q29tcG9uZW50IHBvcnQ7Ci0gIHByaXZhdGUgT2JqZWN0IGhhbmRsZXI7Ci0gIHByaXZhdGUgT2JqZWN0IHdzRGVzY1JlZjsKLQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBoYW5kbGVyQ2xhc3NOYW1lLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRIYW5kbGVyQ2xhc3NOYW1lKCkgewotICAgIHJldHVybiBoYW5kbGVyQ2xhc3NOYW1lOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gaGFuZGxlckNsYXNzTmFtZSBUaGUgaGFuZGxlckNsYXNzTmFtZSB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIYW5kbGVyQ2xhc3NOYW1lKFN0cmluZyBoYW5kbGVyQ2xhc3NOYW1lKSB7Ci0gICAgdGhpcy5oYW5kbGVyQ2xhc3NOYW1lID0gaGFuZGxlckNsYXNzTmFtZTsKLSAgfQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBoYW5kbGVyTmFtZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SGFuZGxlck5hbWUoKSB7Ci0gICAgcmV0dXJuIGhhbmRsZXJOYW1lOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gaGFuZGxlck5hbWUgVGhlIGhhbmRsZXJOYW1lIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEhhbmRsZXJOYW1lKFN0cmluZyBoYW5kbGVyTmFtZSkgewotICAgIHRoaXMuaGFuZGxlck5hbWUgPSBoYW5kbGVyTmFtZTsKLSAgfQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBwb3J0LgotICAgKi8KLSAgcHVibGljIFBvcnRDb21wb25lbnQgZ2V0UG9ydCgpIHsKLSAgICByZXR1cm4gcG9ydDsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIHBvcnQgVGhlIHBvcnQgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UG9ydChQb3J0Q29tcG9uZW50IHBvcnQpIHsKLSAgICB0aGlzLnBvcnQgPSBwb3J0OwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGhhbmRsZXIuCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGdldEhhbmRsZXIoKSB7Ci0gICAgcmV0dXJuIGhhbmRsZXI7Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEhhbmRsZXIoT2JqZWN0IGhhbmRsZXIpIHsKLSAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyOwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHBvcnROYW1lLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRQb3J0TmFtZSgpIHsKLSAgICByZXR1cm4gcG9ydE5hbWU7Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSBwb3J0TmFtZSBUaGUgcG9ydE5hbWUgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UG9ydE5hbWUoU3RyaW5nIHBvcnROYW1lKSB7Ci0gICAgdGhpcy5wb3J0TmFtZSA9IHBvcnROYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW5kZXguCi0gICAqLwotICBwdWJsaWMgaW50IGdldEluZGV4KCkgewotICAgIHJldHVybiBpbmRleDsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRJbmRleChpbnQgaW5kZXgpIHsKLSAgICB0aGlzLmluZGV4ID0gaW5kZXg7Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgd3NEZXNjUmVmLgotICAgKi8KLSAgcHVibGljIE9iamVjdCBnZXRXc0Rlc2NSZWYoKSB7Ci0gICAgcmV0dXJuIHdzRGVzY1JlZjsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIHdzRGVzY1JlZiBUaGUgd3NEZXNjUmVmIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdzRGVzY1JlZihPYmplY3Qgd3NEZXNjUmVmKSB7Ci0gICAgdGhpcy53c0Rlc2NSZWYgPSB3c0Rlc2NSZWY7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvSU9iamVjdFNlbGVjdGlvbldpZGdldC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9JT2JqZWN0U2VsZWN0aW9uV2lkZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiODBjMzguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9JT2JqZWN0U2VsZWN0aW9uV2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MTAgICAxMzU0NDEgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA0MjAgICAxMzU5MTIgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldERhdGFDb250cmlidXRvcjsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBkZWZpbmVzIGV4dHJhIG1ldGhvZHMgdGhhdCBPYmplY3QgU2VsZWN0aW9uIFdpZGdldHMKLSAqIG5lZWQgdG8gaW1wbGVtZW50LiAgT2JqZWN0IFNlbGVjdGlvbiBXaWRnZXRzIGFyZSBkaXNwbGF5ZWQgb24gcGFnZSAyCi0gKiBvZiB0aGUgV2ViIHNlcnZpY2VzIHdpemFyZC4KLSAqLwotcHVibGljIGludGVyZmFjZSBJT2JqZWN0U2VsZWN0aW9uV2lkZ2V0IGV4dGVuZHMgV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yCi17Ci0gIC8qKgotICAgKiBUaGUgZnJhbWV3b3JrIHdpbGwgY2FsbCB0aGlzIG1ldGhvZCB0byBzZXQgdGhlIGluaXRpYWwgc2VsZWN0aW9uCi0gICAqIHZhbHVlIHRoYXQgdGhlIHVzZXIgaGFzIHNwZWNpZmllZC4KLSAgICogCi0gICAqIEBwYXJhbSBpbml0aWFsU2VsZWN0aW9uIHRoZSBpbml0aWFsIHNlbGVjdGlvbiB0aGUgdXNlciBzcGVjaWZpZWQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRJbml0aWFsU2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGluaXRpYWxTZWxlY3Rpb24pOwotICAKLSAgLyoqCi0gICAqIFRoZSBpbnRlbnQgb2YgdGhlIE9iamVjdCBTZWxlY3Rpb24gV2lkZ2V0IGlzIHRoYXQgdGhlIHVzZXIgaGFzCi0gICAqIHRoZSBvcHBvcnR1bml0eSBjaGFuZ2UvZmluZCB0aGUgb2JqZWN0IHRoYXQgdGhleSB3YW50IHRvIHR1cm4gaW50bwotICAgKiBhIFdlYiBzZXJ2aWNlLgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBhbiBJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3QgdGhhdCB0aGUgdXNlcgotICAgKiB3YW50IHRvIHR1cm4gaW50byBhIFdlYiBzZXJ2aWNlLiAgVGhpcyBvYmplY3QgbWF5IGJlIGRpZmZlcmVudCB0aGFuCi0gICAqIHRoZSBpbml0aWFsU2VsZWN0aW9uIHBhc3NlZCBpbiBieSB0aGUgc2V0SW5pdGlhbFNlbGVjdGlvbiBtZXRob2QuCi0gICAqLwotICBwdWJsaWMgSVN0cnVjdHVyZWRTZWxlY3Rpb24gZ2V0T2JqZWN0U2VsZWN0aW9uKCk7Ci0gIAotICAvKioKLSAgICogVmFsaWRhdGVzIHdoZXRoZXIgdGhlIG9iamVjdFNlbGVjdGlvbiBwYXJhbWV0ZXIgaXMgdmFsaWQgZm9yCi0gICAqIHRoaXMgT2JqZWN0IHNlbGVjdGlvbiB3aWRnZXQuICBBbiBlcnJvciBzdGF0dXMgc2hvdWxkIGJlIHJldHVybmVkCi0gICAqIGlmIHRoaXMgb2JqZWN0IGlzIG5vdCB2YWx1ZS4gIE90aGVyd2lzZSwgYW5kIG9rIHN0YXR1cyBzaG91bGQgYmUKLSAgICogcmV0dXJuZWQKLSAgICogCi0gICAqIEBwYXJhbSBvYmplY3RTZWxlY3Rpb24gdGhlIG9iamVjdCB0byBiZSB2YWxpZGF0ZWQuCi0gICAqIEByZXR1cm4gdGhlIHN0YXR1cyBvZiB0aGUgdmFsaWRhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIHZhbGlkYXRlU2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIG9iamVjdFNlbGVjdGlvbik7Ci0gIAotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgSVByb2plY3QgdGhhdCBjb250YWlucyB0aGUgc2VsZWN0aW9uCi0gICAqIG9iamVjdCB0aGF0IHRoZSB1c2VyIGhhcyBjaG9zZW4gd2l0aCB0aGlzIHdpZGdldC4gIFRoZSB2YWx1ZSBjYW4gYmUgCi0gICAqIG51bGwgaWYgdGhlcmUgaXMgbm8gSVByb2plY3QgZm9yIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBJVmlydHVhbENvbXBvbmVudCB0aGF0IGNvbnRhaW5zIHRoZSBzZWxlY3Rpb24KLSAgICogb2JqZWN0IHRoYXQgdGhlIHVzZXIgaGFzIGNob3NlbiB3aXRoIHRoaXMgd2lkZ2V0LiAgVGhlIHZhbHVlIGNhbiBiZSAKLSAgICogbnVsbCBpZiB0aGVyZSBpcyBubyBJVmlydHVhbENvbXBvbmVudCBmb3IgdGhpcyBvYmplY3QKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29tcG9uZW50TmFtZSgpOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIHN0cmluZyB0byBkaXNwbGF5ZWQgaW4gdGhlIFVJIGZvciB0aGUgc2VsZWN0ZWQgb2JqZWN0Ci0gICAqLwotICBwdWJsaWMgIFN0cmluZyBnZXRPYmplY3RTZWxlY3Rpb25EaXNwbGF5YWJsZVN0cmluZygpOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGRlZmF1bHQgaW5pdGlhbCBzaXplIGZvciB0aGUgd2lkZ2V0IHRvIGJlIGNhbGxlZCBmcm9tIGdldEluaXRpYWxTaXplIGZyb20gYW55IHBhcmVudCBkaWFsb2cKLSAgICovCi0gIHB1YmxpYyBQb2ludCBnZXRXaWRnZXRTaXplKCk7Ci0gIAotICAvKioKLSAgICogCi0gICAqIEBwYXJhbSBzIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3Qgc2VsZWN0aW9uCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIHJlcHJlc2VudHMgYSB2YWxpZCBvYmplY3Qgc2VsZWN0aW9uCi0gICAqLyAgCi0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlKFN0cmluZyBzKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvSmF2YUJlYW5TZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9KYXZhQmVhblNlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNzZiODguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9KYXZhQmVhblNlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMTE2ICAgMTU5NjE4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBQcm9qZWN0IGFuZCBFQVIgbm90IGRlZmF1bHRlZCBwcm9wZXJseSB3aGVuIHdpemFyZCBsYXVuY2hlZCBmcm9tIEpTUi0xMDkgV2ViIHNlcnZpY2VzIGJyYW5jaCBpbiBKMkVFIFByb2plY3QgRXhwbG9yZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklDb21waWxhdGlvblVuaXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLlNlcnZpY2VJbXBsQmVhbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuU2VydmxldExpbms7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLmludGVybmFsLmltcGwuUG9ydENvbXBvbmVudEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lcjsKLQotcHVibGljIGNsYXNzIEphdmFCZWFuU2VsZWN0aW9uVHJhbnNmb3JtZXIgaW1wbGVtZW50cyBUcmFuc2Zvcm1lcgotewotICBwdWJsaWMgT2JqZWN0IHRyYW5zZm9ybShPYmplY3QgdmFsdWUpCi0gIHsKLSAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikKLSAgICB7Ci0gICAgICBPYmplY3Qgc2VsID0gKChJU3RydWN0dXJlZFNlbGVjdGlvbil2YWx1ZSkuZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAoc2VsIGluc3RhbmNlb2YgSUZpbGUpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihjb21wdXRlRnVsbHlRdWFsaWZpZWRKYXZhTmFtZSgoSUZpbGUpc2VsKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChzZWwgaW5zdGFuY2VvZiBJQ29tcGlsYXRpb25Vbml0KQotICAgICAgewotICAgICAgICBJUmVzb3VyY2UgcmVzID0gKChJQ29tcGlsYXRpb25Vbml0KXNlbCkuZ2V0UmVzb3VyY2UoKTsKLSAgICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIElGaWxlKQotICAgICAgICAgIHJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihjb21wdXRlRnVsbHlRdWFsaWZpZWRKYXZhTmFtZSgoSUZpbGUpcmVzKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChzZWwgaW5zdGFuY2VvZiBTZXJ2aWNlSW1wbEJlYW4pCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihnZXRCZWFuTmFtZSgoU2VydmljZUltcGxCZWFuKSBzZWwpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoc2VsIGluc3RhbmNlb2YgU2VydmxldExpbmspCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihnZXRCZWFuTmFtZSgoU2VydmxldExpbmspIHNlbCkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBjb21wdXRlRnVsbHlRdWFsaWZpZWRKYXZhTmFtZShJRmlsZSByZXNvdXJjZSkKLSAgewotICAgIElQYXRoIHBhdGggPSByZXNvdXJjZS5nZXRGdWxsUGF0aCgpOwotICAgIFN0cmluZyBiYXNlbmFtZSA9IHBhdGgubGFzdFNlZ21lbnQoKTsKLSAgICBTdHJpbmcgYmVhbkNsYXNzID0gIiI7Ci0gICAgaWYgKGJhc2VuYW1lICE9IG51bGwgJiYgYmFzZW5hbWUubGVuZ3RoKCkgPiAwKQotICAgIHsKLSAgICAgIFN0cmluZyBiZWFuUGFja2FnZSA9IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlscy5nZXRKYXZhUmVzb3VyY2VQYWNrYWdlTmFtZShwYXRoKTsKLSAgICAgIGJlYW5DbGFzcyA9IChiZWFuUGFja2FnZSA9PSBudWxsIHx8IGJlYW5QYWNrYWdlLmxlbmd0aCgpID09IDAgPyBiYXNlbmFtZSA6IChiZWFuUGFja2FnZSArICIuIiArIGJhc2VuYW1lKSk7Ci0gICAgICBpZiAoYmVhbkNsYXNzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5qYXZhIikgfHwgYmVhbkNsYXNzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5jbGFzcyIpKQotICAgICAgICBiZWFuQ2xhc3MgPSBiZWFuQ2xhc3Muc3Vic3RyaW5nKDAsIGJlYW5DbGFzcy5sYXN0SW5kZXhPZignLicpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGJlYW5DbGFzczsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0QmVhbk5hbWUoU2VydmljZUltcGxCZWFuIGJlYW4pIHsKLSAgICBFT2JqZWN0IGVPYmplY3QgPSBiZWFuLmVDb250YWluZXIoKTsKLSAgICBpZiAoZU9iamVjdCBpbnN0YW5jZW9mIFBvcnRDb21wb25lbnRJbXBsKSB7Ci0gICAgICBQb3J0Q29tcG9uZW50SW1wbCBwY2kgPSAoUG9ydENvbXBvbmVudEltcGwpIGVPYmplY3Q7Ci0gICAgICByZXR1cm4gcGNpLmdldFNlcnZpY2VFbmRwb2ludEludGVyZmFjZSgpOwkgICAgICAJCi0gICAgfQotICAgIHJldHVybiAiIjsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0QmVhbk5hbWUoU2VydmxldExpbmsgbGluaykgeyAgICAKLSAgICBFT2JqZWN0IGVPYmplY3QgPSBsaW5rLmVDb250YWluZXIoKTsKLSAgICBpZiAoZU9iamVjdCBpbnN0YW5jZW9mIFNlcnZpY2VJbXBsQmVhbikKLSAgICAgIHJldHVybiBnZXRCZWFuTmFtZSgoU2VydmljZUltcGxCZWFuKSBlT2JqZWN0KTsKLSAgICByZXR1cm4gIiI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvSmF2YUJlYW5TZWxlY3Rpb25XaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvSmF2YUJlYW5TZWxlY3Rpb25XaWRnZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhkNDAxYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L0phdmFCZWFuU2VsZWN0aW9uV2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNvbXBpbGF0aW9uVW5pdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5KYXZhTW9kZWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5Qcm9ncmVzc01vbml0b3JEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLkJlYW5MaW5rOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5pbnRlcm5hbC5pbXBsLlBvcnRDb21wb25lbnRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5pbnRlcm5hbC5pbXBsLlNlcnZpY2VJbXBsQmVhbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uSmF2YVJlc291cmNlRmlsdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5kaWFsb2cuRGlhbG9nVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25BZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldERhdGFFdmVudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLnJlc291cmNlcy5JVmlydHVhbENvbXBvbmVudDsKLQotcHVibGljIGNsYXNzIEphdmFCZWFuU2VsZWN0aW9uV2lkZ2V0IGV4dGVuZHMgQWJzdHJhY3RPYmplY3RTZWxlY3Rpb25XaWRnZXQgaW1wbGVtZW50cyBJT2JqZWN0U2VsZWN0aW9uV2lkZ2V0Ci17Ci0gIHByaXZhdGUgSVByb2plY3QgICAgICAgICAgIHNlcnZlclByb2plY3RfID0gbnVsbDsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICAgc2VydmVyQ29tcG9uZW50TmFtZV8gPSBudWxsOwotICBwcml2YXRlIENvbXBvc2l0ZSAgICAgICAgICBwYXJlbnRfID0gbnVsbDsKLSAgcHJpdmF0ZSBKYXZhUmVzb3VyY2VGaWx0ZXIgZmlsdGVyXyA9IG5ldyBKYXZhUmVzb3VyY2VGaWx0ZXIoKTsKLSAgcHJpdmF0ZSBJUmVzb3VyY2UgICAgICAgICAgaW5pdGlhbFJlc291cmNlXyA9IG51bGw7Ci0gIHByaXZhdGUgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXI7Ci0gIAotICAvKkNPTlRFWFRfSUQgUEJDTDAwMDEgZm9yIHRoZSBCZWFuIFNlbGVjdGlvbiBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QQkNMX1BBR0UgPSAiUEJDTDAwMDEiOwotICAKLSAgcHJpdmF0ZSBUZXh0IGJlYW5DbGFzc1RleHRfOwotICAvKkNPTlRFWFRfSUQgUEJDTDAwMDIgZm9yIHRoZSBCZWFuIFNlbGVjdGlvbiBmaWVsZCBvZiB0aGUgQmVhbiBTZWxlY3Rpb24gUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUEJDTF9URVhUX0JFQU5fQ0xBU1MgPSAiUEJDTDAwMDIiOwotCi0gIHByaXZhdGUgQnV0dG9uIGJlYW5DbGFzc0Jyb3dzZUJ1dHRvbl87Ci0gIC8qQ09OVEVYVF9JRCBQQkNMMDAwMyBmb3IgdGhlIEJlYW4gQ2xhc3MgQnJvd3NlIGJ1dHRvbiBvZiB0aGUgQmVhbiBTZWxlY3Rpb24gUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUEJDTF9CVVRUT05fQkVBTl9DTEFTU19CUk9XU0UgPSAiUEJDTDAwMDMiOwotCi0gIHByaXZhdGUgQnV0dG9uIGJlYW5SZXNvdXJjZUJyb3dzZUJ1dHRvbl87Ci0gIC8qQ09OVEVYVF9JRCBQQkNMMDAwNCBmb3IgdGhlIEJlYW4gUmVzb3VyY2UgQnJvd3NlIGJ1dHRvbiBvZiB0aGUgQmVhbiBTZWxlY3Rpb24gUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUEJDTF9CVVRUT05fQkVBTl9SRVNPVVJDRV9CUk9XU0UgPSAiUEJDTDAwMDQiOwotICAgCi0gIHB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGFkZENvbnRyb2xzKCBDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lciApCi0gIHsKLQlTdHJpbmcgICAgICAgcGx1Z2luSWRfID0gIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSI7CSAgCi0gICAgdGhpcy5zdGF0dXNMaXN0ZW5lciA9IHN0YXR1c0xpc3RlbmVyOwotICAgIFVJVXRpbHMgICAgICB1aVV0aWxzICA9IG5ldyBVSVV0aWxzKCBwbHVnaW5JZF8gKTsgCi0gICAgCi0gICAgcGFyZW50XyA9IHBhcmVudDsKLSAgICAKLSAgICBDb21wb3NpdGUgZ3JvdXAgPSB1aVV0aWxzLmNyZWF0ZUNvbXBvc2l0ZSggcGFyZW50LCA0ICk7Ci0gICAgCi0gICAgZ3JvdXAuc2V0VG9vbFRpcFRleHQoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BCQ0xfUEFHRSApOwotICAgIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAoIGdyb3VwLCBwbHVnaW5JZF8gKyAiLiIgKyBJTkZPUE9QX1BCQ0xfUEFHRSApOwotICAgIAotICAgIGJlYW5DbGFzc1RleHRfID0gdWlVdGlscy5jcmVhdGVUZXh0KCBncm91cCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0JFQU5fQ0xBU1NfTkFNRSwKLSAgICAJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BCQ0xfVEVYVF9CRUFOX0NMQVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZPUE9QX1BCQ0xfVEVYVF9CRUFOX0NMQVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUik7Ci0gICAgYmVhbkNsYXNzVGV4dF8uYWRkTW9kaWZ5TGlzdGVuZXIoCi0gICAgICBuZXcgTW9kaWZ5TGlzdGVuZXIoKQotICAgICAgewotICAgICAgICBwdWJsaWMgdm9pZCBtb2RpZnlUZXh0KE1vZGlmeUV2ZW50IGUpCi0gICAgICAgIHsKLSAgICAgICAgICBoYW5kbGVNb2RpZnlCZWFuQ2xhc3NUZXh0KCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICApOwotICAgIAotICAgIGJlYW5DbGFzc0Jyb3dzZUJ1dHRvbl8gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oIGdyb3VwLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX0JST1dTRV9DTEFTU0VTLAotICAgIAkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUEJDTF9CVVRUT05fQkVBTl9DTEFTU19CUk9XU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9QQkNMX0JVVFRPTl9CRUFOX0NMQVNTX0JST1dTRSApOwotICAgIGJlYW5DbGFzc0Jyb3dzZUJ1dHRvbl8uYWRkU2VsZWN0aW9uTGlzdGVuZXIoIG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZCggU2VsZWN0aW9uRXZlbnQgZXZ0ICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQnJvd3NlQ2xhc3NlcygpOyAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotICAgIAotICAgIGJlYW5SZXNvdXJjZUJyb3dzZUJ1dHRvbl8gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oIGdyb3VwLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX0JST1dTRV9GSUxFUywKLSAgICAJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BCQ0xfQlVUVE9OX0JFQU5fUkVTT1VSQ0VfQlJPV1NFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORk9QT1BfUEJDTF9CVVRUT05fQkVBTl9SRVNPVVJDRV9CUk9XU0UgKTsKLSAgICBiZWFuUmVzb3VyY2VCcm93c2VCdXR0b25fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKCBuZXcgU2VsZWN0aW9uQWRhcHRlcigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoIFNlbGVjdGlvbkV2ZW50IGV2dCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUJyb3dzZUZpbGVzKCk7ICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBoYW5kbGVNb2RpZnlCZWFuQ2xhc3NUZXh0KCkKLSAgewotICAgIHN0YXR1c0xpc3RlbmVyLmhhbmRsZUV2ZW50KG51bGwpOwotICAgIHNlcnZlclByb2plY3RfID0gbnVsbDsKLSAgICBzZXJ2ZXJDb21wb25lbnROYW1lXyA9IG51bGw7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlQnJvd3NlQ2xhc3NlcygpCi0gIHsKLSAgICBTaGVsbCBzaGVsbCA9IHBhcmVudF8uZ2V0U2hlbGwoKTsKLSAgICBJVHlwZSBpdHlwZSA9IERpYWxvZ1V0aWxzLmJyb3dzZUNsYXNzZXNBc0lUeXBlKHNoZWxsLCBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3RzKCksIG5ldyBQcm9ncmVzc01vbml0b3JEaWFsb2coc2hlbGwpKTsKLSAgICBpZiAoaXR5cGUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBiZWFuQ2xhc3NUZXh0Xy5zZXRUZXh0KGl0eXBlLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpKTsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBJUmVzb3VyY2UgcmVzID0gaXR5cGUuZ2V0Q29ycmVzcG9uZGluZ1Jlc291cmNlKCk7Ci0gICAgICAgIGlmIChyZXMgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHNlcnZlclByb2plY3RfID0gcmVzLmdldFByb2plY3QoKTsKLSAgICAgICAgICBJVmlydHVhbENvbXBvbmVudCBjb21wID0gUmVzb3VyY2VVdGlscy5nZXRDb21wb25lbnRPZihyZXMpOwotICAgICAgICAgIGlmIChjb21wIT1udWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHNlcnZlckNvbXBvbmVudE5hbWVfID0gY29tcC5nZXROYW1lKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHNlcnZlclByb2plY3RfID0gbnVsbDsKLSAgICAgICAgICBzZXJ2ZXJDb21wb25lbnROYW1lXyA9IG51bGw7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gam1lKQotICAgICAgewotICAgICAgICBzZXJ2ZXJQcm9qZWN0XyA9IG51bGw7Ci0gICAgICAgIHNlcnZlckNvbXBvbmVudE5hbWVfID0gbnVsbDsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBoYW5kbGVCcm93c2VGaWxlcygpCi0gIHsKLSAgICBJUmVzb3VyY2UgdG9wUmVzb3VyY2UgPSBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKTsKLSAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBEaWFsb2dVdGlscy5icm93c2VSZXNvdXJjZXMoIHBhcmVudF8uZ2V0U2hlbGwoKSwgdG9wUmVzb3VyY2UsIGluaXRpYWxSZXNvdXJjZV8sIGZpbHRlcl8gKTsKLSAgICBzZXRCZWFuQ2xhc3MocmVzb3VyY2UpOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgc2V0QmVhbkNsYXNzKElSZXNvdXJjZSByZXNvdXJjZSkKLSAgewotICAgIGlmKCByZXNvdXJjZSAhPSBudWxsICYmIHJlc291cmNlIGluc3RhbmNlb2YgSUZpbGUgKQotICAgIHsKLSAgICAgIElQYXRoICBwYXRoICAgICA9IHJlc291cmNlLmdldEZ1bGxQYXRoKCk7Ci0gICAgICBTdHJpbmcgYmFzZW5hbWUgPSBwYXRoLmxhc3RTZWdtZW50KCk7Ci0gICAgICAKLSAgICAgIGlmKCBiYXNlbmFtZSAhPSBudWxsICYmIGJhc2VuYW1lLmxlbmd0aCgpID4gMCApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBiZWFuUGFja2FnZSA9IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlscy5nZXRKYXZhUmVzb3VyY2VQYWNrYWdlTmFtZShwYXRoKTsKLSAgICAgICAgU3RyaW5nIGJlYW5DbGFzcyA9IChiZWFuUGFja2FnZSA9PSBudWxsIHx8IGJlYW5QYWNrYWdlLmxlbmd0aCgpID09IDAgPyBiYXNlbmFtZSA6IChiZWFuUGFja2FnZSArICIuIiArIGJhc2VuYW1lKSk7Ci0gICAgICAgIAotICAgICAgICBpZiggYmVhbkNsYXNzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5qYXZhIikgfHwgYmVhbkNsYXNzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5jbGFzcyIgKSApCi0gICAgICAgIHsKLSAgICAgICAgICBiZWFuQ2xhc3MgPSBiZWFuQ2xhc3Muc3Vic3RyaW5nKCAwLCBiZWFuQ2xhc3MubGFzdEluZGV4T2YoJy4nKSApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBiZWFuQ2xhc3NUZXh0Xy5zZXRUZXh0KGJlYW5DbGFzcyk7Ci0gICAgICAgIHNlcnZlclByb2plY3RfID0gIFJlc291cmNlVXRpbHMuZ2V0UHJvamVjdE9mKHBhdGgpOwotICAgICAgICBJVmlydHVhbENvbXBvbmVudCBjb21wID0gUmVzb3VyY2VVdGlscy5nZXRDb21wb25lbnRPZihyZXNvdXJjZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoY29tcCE9bnVsbCkKLSAgICAgICAgewkKLSAgICAgICAgICBzZXJ2ZXJDb21wb25lbnROYW1lXyA9IGNvbXAuZ2V0TmFtZSgpOwotICAgICAgICB9ICAgICAgICAKLSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHNldEJlYW5DbGFzcyhTZXJ2aWNlSW1wbEJlYW5JbXBsIHNlcnZpY2VJbXBsKQotICB7Ci0gICAgaWYoIHNlcnZpY2VJbXBsICE9IG51bGwgKQotICAgIHsKLSAgICAgIEVPYmplY3QgZU9iamVjdCA9IHNlcnZpY2VJbXBsLmVDb250YWluZXIoKTsKLSAgICAgIGlmKGVPYmplY3QgaW5zdGFuY2VvZiBQb3J0Q29tcG9uZW50SW1wbCl7Ci0gICAgICAJUG9ydENvbXBvbmVudEltcGwgcGNpID0gKFBvcnRDb21wb25lbnRJbXBsKWVPYmplY3Q7Ci0gICAgICAJU3RyaW5nIGJlYW5DbGFzcyA9IHBjaS5nZXRTZXJ2aWNlRW5kcG9pbnRJbnRlcmZhY2UoKTsKLSAgICAgIAliZWFuQ2xhc3NUZXh0Xy5zZXRUZXh0KGJlYW5DbGFzcyk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgc2V0QmVhbkNsYXNzKEJlYW5MaW5rIHNlcnZpY2VJbXBsKQotICB7Ci0gICAgaWYoIHNlcnZpY2VJbXBsICE9IG51bGwgKQotICAgIHsKLSAgICAgIEVPYmplY3QgZU9iamVjdCA9IHNlcnZpY2VJbXBsLmVDb250YWluZXIoKTsKLSAgICAgIGlmKGVPYmplY3QgaW5zdGFuY2VvZiBTZXJ2aWNlSW1wbEJlYW5JbXBsKXsKLSAgICAgIAlzZXRCZWFuQ2xhc3MoKFNlcnZpY2VJbXBsQmVhbkltcGwpZU9iamVjdCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJbml0aWFsU2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGluaXRpYWxTZWxlY3Rpb24pCi0gIHsKLSAgICBpZiAoaW5pdGlhbFNlbGVjdGlvbiAhPSBudWxsICYmICFpbml0aWFsU2VsZWN0aW9uLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICBPYmplY3Qgb2JqZWN0ID0gaW5pdGlhbFNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKTsKLSAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBJRmlsZSkKLSAgICAgIHsKLSAgICAgIAlJRmlsZSBpRmlsZSA9IChJRmlsZSlvYmplY3Q7Ci0gICAgICAJU3RyaW5nIGZpbGVFeHQgPSBpRmlsZS5nZXRGaWxlRXh0ZW5zaW9uKCkudG9Mb3dlckNhc2UoKTsKLSAgICAgIAlpZiAoZmlsZUV4dC5lcXVhbHMoImphdmEiKSB8fCBmaWxlRXh0LmVxdWFscygiY2xhc3MiKSkKLSAgICAgICAgICBzZXRCZWFuQ2xhc3MoaUZpbGUpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgSUNvbXBpbGF0aW9uVW5pdCkKLSAgICAgIAlzZXRCZWFuQ2xhc3MoKChJQ29tcGlsYXRpb25Vbml0KW9iamVjdCkuZ2V0UmVzb3VyY2UoKSk7Ci0gICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTZXJ2aWNlSW1wbEJlYW5JbXBsKQotICAgICAgCXNldEJlYW5DbGFzcygoU2VydmljZUltcGxCZWFuSW1wbClvYmplY3QpOwotICAgICAgZWxzZSBpZihvYmplY3QgaW5zdGFuY2VvZiBCZWFuTGluaykKLSAgICAgIAlzZXRCZWFuQ2xhc3MoKEJlYW5MaW5rKW9iamVjdCk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgSVN0cnVjdHVyZWRTZWxlY3Rpb24gZ2V0T2JqZWN0U2VsZWN0aW9uKCkKLSAgewotICAgIHJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihiZWFuQ2xhc3NUZXh0Xy5nZXRUZXh0KCkpOwotICB9Ci0gIAotICBwdWJsaWMgSVByb2plY3QgZ2V0UHJvamVjdCgpCi0gIHsKLSAgICByZXR1cm4gc2VydmVyUHJvamVjdF87Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldENvbXBvbmVudE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZlckNvbXBvbmVudE5hbWVfOwotICB9Ci0gIAotICBwdWJsaWMgSVN0YXR1cyBnZXRTdGF0dXMoKQotICB7Ci0gICAgU3RyaW5nIGJlYW5DbGFzc05hbWUgPSBiZWFuQ2xhc3NUZXh0Xy5nZXRUZXh0KCkudHJpbSgpOwotICAgIGlmIChiZWFuQ2xhc3NOYW1lID09IG51bGwgfHwgYmVhbkNsYXNzTmFtZS5sZW5ndGgoKSA8PSAwKQotICAgIHsKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9NU0dfQkVBTl9DQU5OT1RfQkVfRU1QVFkpOwotICAgIH0KLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHVibGljIElTdGF0dXMgdmFsaWRhdGVTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gb2JqZWN0U2VsZWN0aW9uKQotICB7Ci0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0T2JqZWN0U2VsZWN0aW9uRGlzcGxheWFibGVTdHJpbmcoKSB7Ci0JLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotICAgIHJldHVybiAiSmF2YSBiZWFuIHN0cmluZyAiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L09iamVjdFNlbGVjdGlvbkZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L09iamVjdFNlbGVjdGlvbkZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNzdkYzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9PYmplY3RTZWxlY3Rpb25GcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5Db25kaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkJvb2xlYW5GcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNpbXBsZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNlbGVjdGlvbkNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotCi0KLXB1YmxpYyBjbGFzcyBPYmplY3RTZWxlY3Rpb25GcmFnbWVudCBleHRlbmRzIFNlcXVlbmNlRnJhZ21lbnQgaW1wbGVtZW50cyBDb25kaXRpb24KLXsKLSAgcHJpdmF0ZSBUeXBlUnVudGltZVNlcnZlciB0eXBlUnVudGltZVNlcnZlcjsKLSAgcHJpdmF0ZSBib29sZWFuIGhhc09iamVjdFNlbGVjdGlvbldpZGdldDsKLQotICBwdWJsaWMgT2JqZWN0U2VsZWN0aW9uRnJhZ21lbnQoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgICBCb29sZWFuRnJhZ21lbnQgYm9vbEZyYWdtZW50ID0gbmV3IEJvb2xlYW5GcmFnbWVudChuZXcgU2ltcGxlRnJhZ21lbnQoIk9iamVjdFNlbGVjdGlvbldpZGdldCIpLCBuZXcgU2ltcGxlRnJhZ21lbnQoIiIpLCB0aGlzKTsKLSAgICBhZGQoYm9vbEZyYWdtZW50KTsKLSAgICBhZGQobmV3IFNpbXBsZUZyYWdtZW50KG5ldyBPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kKCksICIiKSk7Ci0gICAgaGFzT2JqZWN0U2VsZWN0aW9uV2lkZ2V0ID0gZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCByZXRyaWV2ZSB0aGUgZGF0YSBtYXBwaW5ncyBmb3IgdGhpcyBjb21tYW5kIGZyYWdtZW50LgotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhUmVnaXN0cnkpCi0gIHsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZWxlY3Rpb25Db21tYW5kLmNsYXNzLCAiSW5pdGlhbFNlbGVjdGlvbiIsIE9iamVjdFNlbGVjdGlvbldpZGdldC5jbGFzcyApOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlbGVjdGlvbkNvbW1hbmQuY2xhc3MsICJJbml0aWFsU2VsZWN0aW9uIiwgT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIk9iamVjdFNlbGVjdGlvbiIsIG51bGwpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKE9iamVjdFNlbGVjdGlvbkZyYWdtZW50LmNsYXNzLCAiVHlwZVJ1bnRpbWVTZXJ2ZXIiLCBPYmplY3RTZWxlY3Rpb25XaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKE9iamVjdFNlbGVjdGlvbkZyYWdtZW50LmNsYXNzLCAiVHlwZVJ1bnRpbWVTZXJ2ZXIiLCBPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25XaWRnZXQuY2xhc3MsICJPYmplY3RTZWxlY3Rpb24iLCBPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25XaWRnZXQuY2xhc3MsICJQcm9qZWN0IiwgT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoT2JqZWN0U2VsZWN0aW9uV2lkZ2V0LmNsYXNzLCAiQ29tcG9uZW50TmFtZSIsIE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoKQotICB7Ci0gICAgcmV0dXJuIGhhc09iamVjdFNlbGVjdGlvbldpZGdldDsKLSAgfQotCi0gIHB1YmxpYyBUeXBlUnVudGltZVNlcnZlciBnZXRUeXBlUnVudGltZVNlcnZlcigpCi0gIHsKLSAgICByZXR1cm4gdHlwZVJ1bnRpbWVTZXJ2ZXI7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHR5cGVSdW50aW1lU2VydmVyIFRoZSB0eXBlUnVudGltZVNlcnZlciB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUeXBlUnVudGltZVNlcnZlcihUeXBlUnVudGltZVNlcnZlciB0eXBlUnVudGltZVNlcnZlcikKLSAgewotICAgIHRoaXMudHlwZVJ1bnRpbWVTZXJ2ZXIgPSB0eXBlUnVudGltZVNlcnZlcjsKLSAgICBpZiAodHlwZVJ1bnRpbWVTZXJ2ZXIgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgd3N0ID0gdHlwZVJ1bnRpbWVTZXJ2ZXIuZ2V0VHlwZUlkKCk7Ci0KLSAgICAgIGludCBzY2VuYXJpbyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNjZW5hcmlvRnJvbVR5cGVJZCh3c3QpOwotICAgICAgU3RyaW5nIGltcGxJZCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFdlYlNlcnZpY2VJbXBsSWRGcm9tVHlwZUlkKHdzdCk7Ci0gICAgICBpZiAoc2NlbmFyaW8gPT0gV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV04pCi0gICAgICB7Ci0gICAgICAgIC8vTXVzdCBoYXZlIFdTREwgb2JqZWN0IHNlbGVjdGlvbi4gTm8gY2hvaWNlLgotICAgICAgICBoYXNPYmplY3RTZWxlY3Rpb25XaWRnZXQ9dHJ1ZTsgICAgICAgIAotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBXZWJTZXJ2aWNlSW1wbCB3c2ltcGwgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRXZWJTZXJ2aWNlSW1wbEJ5SWQoaW1wbElkKTsKLSAgICAgICAgaWYgKHdzaW1wbCE9bnVsbCkKLSAgICAgICAgeyAgCi0gICAgICAgICAgU3RyaW5nIG9iamVjdFNlbGVjdGlvbldpZGdldElkID0gd3NpbXBsLmdldE9iamVjdFNlbGVjdGlvbldpZGdldCgpOyAKLSAgICAgICAgICBoYXNPYmplY3RTZWxlY3Rpb25XaWRnZXQgPSBvYmplY3RTZWxlY3Rpb25XaWRnZXRJZCAhPSBudWxsICYmIG9iamVjdFNlbGVjdGlvbldpZGdldElkLmxlbmd0aCgpID4gMDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9PYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L09iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM3OGUxMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L09iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA4MzAgICAxNTUxMTQgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgVXBkYXRlZCBwYXRjaCBmb3IgdGhpcyBkZWZlY3QuCi0gKiAyMDA3MDExNiAgIDE1OTYxOCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgUHJvamVjdCBhbmQgRUFSIG5vdCBkZWZhdWx0ZWQgcHJvcGVybHkgd2hlbiB3aXphcmQgbGF1bmNoZWQgZnJvbSBKU1ItMTA5IFdlYiBzZXJ2aWNlcyBicmFuY2ggaW4gSjJFRSBQcm9qZWN0IEV4cGxvcmVyCi0gKiAyMDA3MDMyNiAgIDE3MTA3MSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQ3JlYXRlIHB1YmxpYyB1dGlsaXR5IG1ldGhvZCBmb3IgY29weWluZyBXU0RMIGZpbGVzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLnJlc291cmNlcy5JVmlydHVhbENvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LlN0YXR1c0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudXRpbC5Vbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotCi0KLXB1YmxpYyBjbGFzcyBPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICAgICAgIG9iamVjdFNlbGVjdGlvbldpZGdldElkXzsKLSAgcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiAgIG9iamVjdFNlbGVjdGlvbl87Ci0gIHByaXZhdGUgSU9iamVjdFNlbGVjdGlvbldpZGdldCBvYmplY3RTZWxlY3Rpb25XaWRnZXRfOwotICBwcml2YXRlIElQcm9qZWN0ICAgICAgICAgICAgICAgcHJvamVjdF87Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lXzsKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciAgICAgIHBhcnNlcl87Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgICAgICAgdG9wRG93bl8gPSBmYWxzZTsKLQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotICAgIAotICAgIC8vIFRyYW5zZm9ybWF0aW9uCi0gICAgaWYgKG9iamVjdFNlbGVjdGlvbldpZGdldElkXyAhPSBudWxsICYmIG9iamVjdFNlbGVjdGlvbldpZGdldElkXy5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIgICAgICAgICAgPSBPYmplY3RTZWxlY3Rpb25SZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFRyYW5zZm9ybWVyKG9iamVjdFNlbGVjdGlvbldpZGdldElkXyk7Ci0gICAgICBPYmplY3QgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybWVyID09IG51bGwgPyBudWxsIDogdHJhbnNmb3JtZXIudHJhbnNmb3JtKG9iamVjdFNlbGVjdGlvbl8pOwotICAgICAgCi0gICAgICBpZiAodHJhbnNmb3JtZWRTZWxlY3Rpb24gaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikKLSAgICAgIHsKLSAgICAgICAgb2JqZWN0U2VsZWN0aW9uXyA9IChJU3RydWN0dXJlZFNlbGVjdGlvbil0cmFuc2Zvcm1lZFNlbGVjdGlvbjsKLSAgICAgIH0KLSAgICB9Ci0JCi0gICAgLy8gVmFsaWRhdGlvbgotICAgIElTdGF0dXMgc3RhdHVzID0gKG9iamVjdFNlbGVjdGlvbldpZGdldF8gIT0gbnVsbCkgPyBvYmplY3RTZWxlY3Rpb25XaWRnZXRfLnZhbGlkYXRlU2VsZWN0aW9uKGdldE9iamVjdFNlbGVjdGlvbigpKSA6IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpICE9IFN0YXR1cy5PSyAmJiBlbnYgIT0gbnVsbCkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChTdGF0dXNFeGNlcHRpb24gc2UpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfQotCQotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHR5cGVSdW50aW1lU2VydmVyIFRoZSB0eXBlUnVudGltZVNlcnZlciB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUeXBlUnVudGltZVNlcnZlcihUeXBlUnVudGltZVNlcnZlciB0eXBlUnVudGltZVNlcnZlcikKLSAgewotICAgIGlmICh0eXBlUnVudGltZVNlcnZlciAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyB3c3QgPSB0eXBlUnVudGltZVNlcnZlci5nZXRUeXBlSWQoKTsKLQotICAgICAgaW50IHNjZW5hcmlvID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2NlbmFyaW9Gcm9tVHlwZUlkKHdzdCk7Ci0gICAgICBTdHJpbmcgaW1wbElkID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0V2ViU2VydmljZUltcGxJZEZyb21UeXBlSWQod3N0KTsKLQotICAgICAgV2ViU2VydmljZUltcGwgd3NpbXBsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0V2ViU2VydmljZUltcGxCeUlkKGltcGxJZCk7Ci0JICAgIC8vSVdlYlNlcnZpY2VUeXBlIHdzdCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFdlYlNlcnZpY2VUeXBlQnlJZCh0eXBlUnVudGltZVNlcnZlci5nZXRUeXBlSWQoKSk7Ci0KLSAgICAgIGlmICh3c2ltcGwgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG9iamVjdFNlbGVjdGlvbldpZGdldElkID0gbnVsbDsKLSAgICAgICAgaWYgKHNjZW5hcmlvID09IFdlYlNlcnZpY2VTY2VuYXJpby5UT1BET1dOKQotICAgICAgICB7Ci0gICAgICAgICAgb2JqZWN0U2VsZWN0aW9uV2lkZ2V0SWQgPSAib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LldTRExTZWxlY3Rpb25XaWRnZXQiOwotICAgICAgICAgIHRvcERvd25fID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBvYmplY3RTZWxlY3Rpb25XaWRnZXRJZCA9IHdzaW1wbC5nZXRPYmplY3RTZWxlY3Rpb25XaWRnZXQoKTsKLSAgICAgICAgfSAgICAgICAgCi0gICAgICAgIAotCQkgICAgb2JqZWN0U2VsZWN0aW9uV2lkZ2V0SWRfID0gb2JqZWN0U2VsZWN0aW9uV2lkZ2V0SWQ7Ci0gICAgICAgIAotCQkgICAgT2JqZWN0IG9iamVjdCA9IE9iamVjdFNlbGVjdGlvblJlZ2lzdHJ5LmdldEluc3RhbmNlKCkuZ2V0U2VsZWN0aW9uV2lkZ2V0KG9iamVjdFNlbGVjdGlvbldpZGdldElkXyk7Ci0gICAgICAgIAotICAgICAgICBpZiggb2JqZWN0IGluc3RhbmNlb2YgSU9iamVjdFNlbGVjdGlvbldpZGdldCApCi0gICAgICAgIHsKLSAgICAgICAgICBvYmplY3RTZWxlY3Rpb25XaWRnZXRfID0gKElPYmplY3RTZWxlY3Rpb25XaWRnZXQpb2JqZWN0OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc2VsZWN0aW9uLgotICAgKi8KLSAgcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldE9iamVjdFNlbGVjdGlvbigpCi0gIHsKLSAgICByZXR1cm4gb2JqZWN0U2VsZWN0aW9uXzsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIHNlbGVjdGlvbiBUaGUgc2VsZWN0aW9uIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE9iamVjdFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3RTZWxlY3Rpb24pCi0gIHsKLSAgICBvYmplY3RTZWxlY3Rpb25fID0gb2JqZWN0U2VsZWN0aW9uOwotICAgIAotICAgIC8vU2V0IHRoZSBwcm9qZWN0IGlmIHlvdSBjYW4KLSAgICBpZiAocHJvamVjdF89PW51bGwpCi0gICAgewotICAgICAgcHJvamVjdF8gPSBnZXRQcm9qZWN0RnJvbU9iamVjdFNlbGVjdGlvbihvYmplY3RTZWxlY3Rpb24pOwotICAgIH0KLSAgICAKLSAgICAvL1NldCB0aGUgY29tcG9uZW50TmFtZSBpZiB5b3UgY2FuCi0gICAgaWYgKGNvbXBvbmVudE5hbWVfID09IG51bGwpCi0gICAgewotICAgICAgY29tcG9uZW50TmFtZV8gPSBnZXRDb21wb25lbnROYW1lRnJvbU9iamVjdFNlbGVjdGlvbihvYmplY3RTZWxlY3Rpb24pOwotICAgIH0KLSAgICAKLSAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgV1NETCBzZWxlY3Rpb24gb2JqZWN0LiAgSWYgaXQgaXMgd2UgbmVlZAotICAgIC8vIHRvIHVud3JhcCBpdC4KLSAgICBpZiggb2JqZWN0U2VsZWN0aW9uICE9IG51bGwgJiYgIW9iamVjdFNlbGVjdGlvbi5pc0VtcHR5KCkgKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmplY3QgPSBvYmplY3RTZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICAKLSAgICAgIGlmKCBvYmplY3QgaW5zdGFuY2VvZiBXU0RMU2VsZWN0aW9uV3JhcHBlciApCi0gICAgICB7Ci0gICAgICAgIFdTRExTZWxlY3Rpb25XcmFwcGVyIHdzZGxXcmFwcGVyID0gKFdTRExTZWxlY3Rpb25XcmFwcGVyKW9iamVjdDsKLSAgICAgICAgCi0gICAgICAgIG9iamVjdFNlbGVjdGlvbl8gPSB3c2RsV3JhcHBlci53c2RsU2VsZWN0aW9uOwotICAgICAgICBwYXJzZXJfICAgICAgICAgID0gd3NkbFdyYXBwZXIucGFyc2VyOwotICAgICAgfQotICAgIH0KLSAgfQotICAKLSAgcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKQotICB7Ci0gICAgaWYgKHByb2plY3RfID09IG51bGwgJiYgdG9wRG93bl8pCi0gICAgICBwcm9qZWN0XyA9IGdldFByb2plY3RGcm9tVHJhbnNmb3JtZWRTZWxlY3Rpb24oKTsKLSAgICByZXR1cm4gcHJvamVjdF87Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFByb2plY3QoSVByb2plY3QgcHJvamVjdCkKLSAgewotICAgIHRoaXMucHJvamVjdF8gPSBwcm9qZWN0OwotICB9ICAKLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29tcG9uZW50TmFtZSgpCi0gIHsKLSAgICBpZiAoY29tcG9uZW50TmFtZV8gPT0gbnVsbCAmJiB0b3BEb3duXykKLSAgICAgIGNvbXBvbmVudE5hbWVfID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UcmFuc2Zvcm1lZFNlbGVjdGlvbigpOwotICAgIHJldHVybiBjb21wb25lbnROYW1lXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENvbXBvbmVudE5hbWUoU3RyaW5nIGNvbXBvbmVudE5hbWUpCi0gIHsKLSAgICB0aGlzLmNvbXBvbmVudE5hbWVfID0gY29tcG9uZW50TmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHBhcnNlcl8uCi0gICAqLwotICBwdWJsaWMgV2ViU2VydmljZXNQYXJzZXIgZ2V0V2ViU2VydmljZXNQYXJzZXIoKQotICB7Ci0gICAgcmV0dXJuIHBhcnNlcl87Ci0gIH0KLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBoYXNQcm90b2NvbChTdHJpbmcgdXJsKSB7IAotICAgIHJldHVybiB1cmwuaW5kZXhPZigiOiIpICE9IC0xOyAgCi0gIH0KLSAgCi0gIHByaXZhdGUgSVJlc291cmNlIGZpbmRSZXNvdXJjZUZyb21TZWxlY3Rpb24oT2JqZWN0IHNlbGVjdGlvbikgdGhyb3dzIENvcmVFeGNlcHRpb24gewotCSAgCi0gICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24pOyAKLQkgIAotICAgICAgLy8gdHJ5IGZpbmRpbmcgYXQgbGVhc3QgdGhlIHByb2plY3QgdXNpbmcgdGhlIEVNRiB3YXkKLSAgICAgIGlmIChyZXNvdXJjZSA9PSBudWxsICYmIHNlbGVjdGlvbiBpbnN0YW5jZW9mIEVPYmplY3QpCi0gICAgICAgICAgcmVzb3VyY2UgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3Qoc2VsZWN0aW9uKTsKLQkgIAotICAgICAgcmV0dXJuIHJlc291cmNlOwotICB9Ci0gIAotICBwcml2YXRlIElQcm9qZWN0IGdldFByb2plY3RGcm9tVHJhbnNmb3JtZWRTZWxlY3Rpb24oKSB7Ci0gICAgaWYgKG9iamVjdFNlbGVjdGlvbl8gIT0gbnVsbCAmJiBvYmplY3RTZWxlY3Rpb25fLnNpemUoKSA9PSAxKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBvYmplY3RTZWxlY3Rpb25fLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFN0cmluZykgewotICAgICAgICBTdHJpbmcgc3RyID0gVW5pdmVyc2FsUGF0aFRyYW5zZm9ybWVyLnRvUGF0aCgoU3RyaW5nKSBvYmopOwotICAgICAgICBpZiAoaGFzUHJvdG9jb2woc3RyKSkgcmV0dXJuIG51bGw7Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZVV0aWxzLmdldFByb2plY3RPZihuZXcgUGF0aChzdHIpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7CSAgCi0gIH0KLSAgCi0gIHByaXZhdGUgSVByb2plY3QgZ2V0UHJvamVjdEZyb21PYmplY3RTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKQotICB7Ci0gICAgaWYgKHNlbGVjdGlvbiAhPSBudWxsICYmIHNlbGVjdGlvbi5zaXplKCkgPT0gMSkKLSAgICB7Ci0gICAgICBPYmplY3Qgb2JqID0gc2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgaWYgKG9iaiAhPSBudWxsKSAKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsgCi0gICAgICAgICAgSVJlc291cmNlIHJlc291cmNlID0gZmluZFJlc291cmNlRnJvbVNlbGVjdGlvbihvYmopOwotICAgICAgICAgIGlmIChyZXNvdXJjZT09bnVsbCkgCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICBpZiAocmVzb3VyY2UgaW5zdGFuY2VvZiBJUHJvamVjdCkKLSAgICAgICAgCXJldHVybiAoSVByb2plY3QpIHJlc291cmNlOwotICAgICAgICAgIElQcm9qZWN0IHAgPSBSZXNvdXJjZVV0aWxzLmdldFByb2plY3RPZihyZXNvdXJjZS5nZXRGdWxsUGF0aCgpKTsKLSAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAgfSBjYXRjaChDb3JlRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLQkJCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0gICAgICAgIAotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0Q29tcG9uZW50TmFtZUZyb21UcmFuc2Zvcm1lZFNlbGVjdGlvbigpIHsKLSAgICBpZiAob2JqZWN0U2VsZWN0aW9uXyAhPSBudWxsICYmIG9iamVjdFNlbGVjdGlvbl8uc2l6ZSgpID09IDEpCi0gICAgewotICAgICAgT2JqZWN0IG9iaiA9IG9iamVjdFNlbGVjdGlvbl8uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAob2JqIGluc3RhbmNlb2YgU3RyaW5nKSB7IAotICAgICAgICBTdHJpbmcgc3RyID0gVW5pdmVyc2FsUGF0aFRyYW5zZm9ybWVyLnRvUGF0aCgoU3RyaW5nKSBvYmopOwotICAgICAgICBpZiAoaGFzUHJvdG9jb2woc3RyKSkgcmV0dXJuIG51bGw7Ci0gICAgICAgIElWaXJ0dWFsQ29tcG9uZW50IGNvbXAgPSBSZXNvdXJjZVV0aWxzLmdldENvbXBvbmVudE9mKG5ldyBQYXRoKHN0cikpOwotICAgICAgICByZXR1cm4gY29tcCA9PSBudWxsID8gbnVsbCA6IGNvbXAuZ2V0TmFtZSgpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsJICAKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0Q29tcG9uZW50TmFtZUZyb21PYmplY3RTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKQotICB7Ci0gICAgaWYgKHNlbGVjdGlvbiAhPSBudWxsICYmIHNlbGVjdGlvbi5zaXplKCkgPT0gMSkKLSAgICB7Ci0gICAgICBPYmplY3Qgb2JqID0gc2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgaWYgKG9iaiAhPSBudWxsKSAKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsgCi0gICAgICAgICAgSVJlc291cmNlIHJlc291cmNlID0gZmluZFJlc291cmNlRnJvbVNlbGVjdGlvbihvYmopOwotICAgICAgICAgIGlmIChyZXNvdXJjZT09bnVsbCkgCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgCi0gICAgICAgICAgSVZpcnR1YWxDb21wb25lbnQgY29tcCA9IFJlc291cmNlVXRpbHMuZ2V0Q29tcG9uZW50T2YocmVzb3VyY2UpOwotICAgICAKLSAgICAgICAgICBpZiAoY29tcCE9bnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29tcC5nZXROYW1lKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9IGNhdGNoKENvcmVFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9ICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvT2JqZWN0U2VsZWN0aW9uUmVnaXN0cnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvT2JqZWN0U2VsZWN0aW9uUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZiMjkxOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L09iamVjdFNlbGVjdGlvblJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwODI1ICAgMTU1MTE0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwODMwICAgMTU1MTE0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIFVwZGF0ZWQgcGF0Y2ggZm9yIHRoaXMgZGVmZWN0LgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuSU9iamVjdFNlbGVjdGlvbkxhdW5jaGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lcjsKLQotcHVibGljIGNsYXNzIE9iamVjdFNlbGVjdGlvblJlZ2lzdHJ5Ci17Ci0gIHByaXZhdGUgc3RhdGljIE9iamVjdFNlbGVjdGlvblJlZ2lzdHJ5IGluc3RhbmNlOwotICBwcml2YXRlIElDb25maWd1cmF0aW9uRWxlbWVudFtdICAgICAgICBlbGVtZW50czsKLSAgcHJpdmF0ZSBIYXNodGFibGUgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkU2VsZWN0aW9uV2lkZ2V0czsKLSAgCi0gIHByaXZhdGUgT2JqZWN0U2VsZWN0aW9uUmVnaXN0cnkoKQotICB7Ci0gICAgZWxlbWVudHMgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpLmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0Zvcigib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIiwgIm9iamVjdFNlbGVjdGlvbldpZGdldCIpOwotICAgIGNhY2hlZFNlbGVjdGlvbldpZGdldHMgPSBuZXcgSGFzaHRhYmxlKCk7ICAgIAotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIE9iamVjdFNlbGVjdGlvblJlZ2lzdHJ5IGdldEluc3RhbmNlKCkKLSAgewotICAgIGlmIChpbnN0YW5jZSA9PSBudWxsKQotICAgIHsKLSAgICAgIGluc3RhbmNlID0gbmV3IE9iamVjdFNlbGVjdGlvblJlZ2lzdHJ5KCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gaWQgaWYgdGhlIHNlbGVjdGlvbiB3aWRnZXQgb2JqZWN0LgotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIHRyYW5zZm9ybWVyIGNsYXNzIGlmIGhhcyBiZWVuIHNwZWNpZmllZC4gIE90aGVyd2lzZQotICAgKiBudWxsIGlzIHJldHVybmVkLgotICAgKi8KLSAgcHVibGljIFRyYW5zZm9ybWVyIGdldFRyYW5zZm9ybWVyKCBTdHJpbmcgaWQgKQotICB7Ci0gICAgVGFibGVFbnRyeSAgZW50cnkgID0gZ2V0VGFibGVFbnRyeSggaWQgKTsKLSAgICBUcmFuc2Zvcm1lciByZXN1bHQgPSBudWxsOwotICAgIAotICAgIGlmKCBlbnRyeSAhPSBudWxsICkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IG9iamVjdCA9IGVudHJ5LmVsZW1lbnQuY3JlYXRlRXhlY3V0YWJsZUV4dGVuc2lvbigidHJhbnNmb3JtZXIiKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCBvYmplY3QgaW5zdGFuY2VvZiBUcmFuc2Zvcm1lciApCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSAoVHJhbnNmb3JtZXIpb2JqZWN0OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCggQ29yZUV4Y2VwdGlvbiBleGMgKXt9ICAgICAKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gaWQgaWYgdGhlIHNlbGVjdGlvbiB3aWRnZXQgb2JqZWN0LgotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBleHRlcm5hbCBtb2RpZnkgYXR0cmlidXRlIGlmCi0gICAqIGl0IGhhcyBiZWVuIHNwZWNpZmllZC4gIE90aGVyd2lzZSBmYWxzZSBpcyByZXR1cm5lZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldEV4dGVybmFsTW9kaWZ5KCBTdHJpbmcgaWQgKQotICB7Ci0gICAgVGFibGVFbnRyeSBlbnRyeSAgPSBnZXRUYWJsZUVudHJ5KCBpZCApOwotICAgIGJvb2xlYW4gICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgCi0gICAgaWYoIGVudHJ5ICE9IG51bGwgKQotICAgIHsKLSAgICAgIFN0cmluZyBtb2RpZnlTdHJpbmcgPSBlbnRyeS5lbGVtZW50LmdldEF0dHJpYnV0ZSgiZXh0ZXJuYWxfbW9kaWZ5Iik7IAotICAgICAgCi0gICAgICByZXN1bHQgPSBuZXcgQm9vbGVhbiggbW9kaWZ5U3RyaW5nICkuYm9vbGVhblZhbHVlKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXRzIHRoZSBJT2JqZWN0U2VsZWN0aW9uV2lkZ2V0IGJhc2VkIG9uIHRoZSBzZWxlY3Rpb25JZC4gIElmIG9uZSBpcwotICAgKiBub3QgZm91bmQgbnVsbCBpcyByZXR1cm5lZC4KLSAgICogCi0gICAqIEBwYXJhbSBzZWxlY3Rpb25JZCB0aGUgSUQgb2YgdGhlIHNlbGVjdGlvbiB3aWRnZXQuCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBJT2JqZWN0U2VsZWN0aW9uV2lkZ2V0IG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZ2V0U2VsZWN0aW9uV2lkZ2V0KCBTdHJpbmcgc2VsZWN0aW9uSWQgKQotICB7Ci0gICAgVGFibGVFbnRyeSBlbnRyeSA9IGdldFRhYmxlRW50cnkoIHNlbGVjdGlvbklkICk7Ci0gICAgCi0gICAgcmV0dXJuIGVudHJ5ID09IG51bGwgPyBudWxsIDogZW50cnkub2JqZWN0U2VsZWN0aW9uOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBjbGVhbnVwKCkKLSAgewotICAgIGluc3RhbmNlID0gbnVsbDsKLSAgICBlbGVtZW50cyA9IG51bGw7Ci0gICAgY2FjaGVkU2VsZWN0aW9uV2lkZ2V0cyA9IG51bGw7Ci0gIH0KLSAgCi0gIHByaXZhdGUgVGFibGVFbnRyeSBnZXRUYWJsZUVudHJ5KCBTdHJpbmcgaWQgKQotICB7Ci0gICAgaWYoIGlkID09IG51bGwgKSByZXR1cm4gbnVsbDsKLSAgICAKLSAgICBUYWJsZUVudHJ5IGVudHJ5ID0gKFRhYmxlRW50cnkpY2FjaGVkU2VsZWN0aW9uV2lkZ2V0cy5nZXQoIGlkICk7Ci0gICAgCi0gICAgaWYoIGVudHJ5ID09IG51bGwgKQotICAgIHsKLSAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBlbGVtZW50cy5sZW5ndGg7IGluZGV4KysgKQotICAgICAgewotICAgICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCA9IGVsZW1lbnRzW2luZGV4XTsKLSAgICAgICAgU3RyaW5nICAgICAgICAgICAgICAgIGVsZW1JZCAgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSggImlkIiApOwotICAgICAgCi0gICAgICAgIGlmKCBpZC5lcXVhbHMoIGVsZW1JZCApICkKLSAgICAgICAgewotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIE9iamVjdCBvYmplY3QgPSBlbGVtZW50LmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oImNsYXNzIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmKCBvYmplY3QgaW5zdGFuY2VvZiBJT2JqZWN0U2VsZWN0aW9uV2lkZ2V0IHx8IG9iamVjdCBpbnN0YW5jZW9mIElPYmplY3RTZWxlY3Rpb25MYXVuY2hhYmxlICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgZW50cnkgPSBuZXcgVGFibGVFbnRyeSgpOwotICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50ID0gZWxlbWVudDsKLSAgICAgICAgICAgICAgZW50cnkub2JqZWN0U2VsZWN0aW9uID0gb2JqZWN0OwotICAgICAgICAgICAgICBjYWNoZWRTZWxlY3Rpb25XaWRnZXRzLnB1dCggaWQsIGVudHJ5ICk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCggQ29yZUV4Y2VwdGlvbiBleGMgKXt9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGVudHJ5OwotICB9Ci0gIAotICBwcml2YXRlIGNsYXNzIFRhYmxlRW50cnkKLSAgewotICAgIHB1YmxpYyBJQ29uZmlndXJhdGlvbkVsZW1lbnQgIGVsZW1lbnQ7Ci0gICAgcHVibGljIE9iamVjdCAgICAgICAgICAgICAgICAgb2JqZWN0U2VsZWN0aW9uOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L09iamVjdFNlbGVjdGlvbldpZGdldC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9PYmplY3RTZWxlY3Rpb25XaWRnZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWExYTU5Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L09iamVjdFNlbGVjdGlvbldpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyNCAgIDEyOTM4NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MDQxMCAgIDEzNTQ0MSBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDgyNSAgIDE1NTExNCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MTIyMCAgIDE2MTIzMiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQWJzdHJhY3RPYmplY3RTZWxlY3Rpb25XaWRnZXQuc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKSBjYWxsZWQgdHdpY2UgZWFjaCB0aW1lIEJyb3dzZSBwcmVzc2VkCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuVHlwZVJ1bnRpbWVTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuUG9pbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0RGF0YUV2ZW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VTY2VuYXJpbzsKLQotCi1wdWJsaWMgY2xhc3MgT2JqZWN0U2VsZWN0aW9uV2lkZ2V0IGV4dGVuZHMgQWJzdHJhY3RPYmplY3RTZWxlY3Rpb25XaWRnZXQgaW1wbGVtZW50cyBJT2JqZWN0U2VsZWN0aW9uV2lkZ2V0Ci17Ci0gIHByaXZhdGUgQ29tcG9zaXRlIHBhcmVudDsKLSAgcHJpdmF0ZSBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lcjsKLSAgcHJpdmF0ZSBDb21wb3NpdGUgY29tcG9zaXRlOwotICBwcml2YXRlIElQcm9qZWN0IHByb2plY3Q7Ci0gIHByaXZhdGUgU3RyaW5nIGNvbXBvbmVudE5hbWU7Ci0gIHByaXZhdGUgSU9iamVjdFNlbGVjdGlvbldpZGdldCBjaGlsZDsKLSAgcHJpdmF0ZSBQb2ludCB3aWRnZXRTaXplXzsKLSAgCi0gIHB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGFkZENvbnRyb2xzKENvbXBvc2l0ZSBwYXJlbnRDb21wb3NpdGUsIExpc3RlbmVyIHN0YXRMaXN0ZW5lcikKLSAgewotICAgIHRoaXMucGFyZW50ID0gcGFyZW50Q29tcG9zaXRlOwotICAgIHRoaXMuc3RhdHVzTGlzdGVuZXIgPSBzdGF0TGlzdGVuZXI7Ci0gICAgY29tcG9zaXRlID0gbnVsbDsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAKLSAgcHVibGljIENvbnRyb2wgZ2V0Q29udHJvbCgpewotCSAgcmV0dXJuIGNvbXBvc2l0ZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEBwYXJhbSB0eXBlUnVudGltZVNlcnZlciBUaGUgdHlwZVJ1bnRpbWVTZXJ2ZXIgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoVHlwZVJ1bnRpbWVTZXJ2ZXIgdHlwZVJ1bnRpbWVTZXJ2ZXIpCi0gIHsKLSAgICBpZiAoY29tcG9zaXRlICE9IG51bGwpCi0gICAgewotICAgICAgY29tcG9zaXRlLmRpc3Bvc2UoKTsKLSAgICAgIGNoaWxkID0gbnVsbDsKLSAgICB9Ci0gICAgaWYgKHR5cGVSdW50aW1lU2VydmVyICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIHdzdCA9IHR5cGVSdW50aW1lU2VydmVyLmdldFR5cGVJZCgpOwotICAgICAgaW50IHNjZW5hcmlvID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2NlbmFyaW9Gcm9tVHlwZUlkKHdzdCk7Ci0gICAgICBTdHJpbmcgaW1wbElkID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0V2ViU2VydmljZUltcGxJZEZyb21UeXBlSWQod3N0KTsKLSAgICAgIFdlYlNlcnZpY2VJbXBsIHdzaW1wbCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFdlYlNlcnZpY2VJbXBsQnlJZChpbXBsSWQpOwotICAgICAgCi0JICAgIC8vSVdlYlNlcnZpY2VUeXBlIHdzdCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMuZ2V0V2ViU2VydmljZVR5cGVCeUlkKHR5cGVSdW50aW1lU2VydmVyLmdldFR5cGVJZCgpKTsKLSAgICAgIGlmICh3c2ltcGwgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG9iamVjdFNlbGVjdGlvbldpZGdldElkID0gbnVsbDsKLSAgICAgICAgaWYgKHNjZW5hcmlvID09IFdlYlNlcnZpY2VTY2VuYXJpby5UT1BET1dOKQotICAgICAgICB7Ci0gICAgICAgICAgb2JqZWN0U2VsZWN0aW9uV2lkZ2V0SWQgPSAib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LldTRExTZWxlY3Rpb25XaWRnZXQiOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIG9iamVjdFNlbGVjdGlvbldpZGdldElkID0gd3NpbXBsLmdldE9iamVjdFNlbGVjdGlvbldpZGdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgT2JqZWN0IG9iamVjdCA9IE9iamVjdFNlbGVjdGlvblJlZ2lzdHJ5LmdldEluc3RhbmNlKCkuZ2V0U2VsZWN0aW9uV2lkZ2V0KCBvYmplY3RTZWxlY3Rpb25XaWRnZXRJZCApOwotICAgICAgICAKLSAgICAgICAgaWYoIG9iamVjdCBpbnN0YW5jZW9mIElPYmplY3RTZWxlY3Rpb25XaWRnZXQgKQotICAgICAgICB7Ci0gICAgICAgICAgY2hpbGQgPSAoSU9iamVjdFNlbGVjdGlvbldpZGdldClvYmplY3Q7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmKCBjaGlsZCAhPSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIENvbnRyb2wgc2hlbGwgPSBwYXJlbnQuZ2V0U2hlbGwoKTsKLSAgICAgICAgICBjb21wb3NpdGUgPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOwotICAgICAgICAgIEdyaWRMYXlvdXQgZ2wgPSBuZXcgR3JpZExheW91dCgpOwotICAgICAgICAgIGdsLm1hcmdpbkhlaWdodCA9IDA7Ci0gICAgICAgICAgZ2wubWFyZ2luV2lkdGggPSAwOwotICAgICAgICAgIEdyaWREYXRhIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfQk9USCk7Ci0gICAgICAgICAgY29tcG9zaXRlLnNldExheW91dChnbCk7Ci0gICAgICAgICAgY29tcG9zaXRlLnNldExheW91dERhdGEoZ2QpOwotICAgICAgICAgIGNoaWxkLmFkZENvbnRyb2xzKGNvbXBvc2l0ZSwgc3RhdHVzTGlzdGVuZXIpOwotCi0gICAgICAgICAgUG9pbnQgb3JpZ1NpemUgPSBzaGVsbC5nZXRTaXplKCk7Ci0gICAgICAgICAgUG9pbnQgY29tcFNpemUgPSBjb21wb3NpdGUuY29tcHV0ZVNpemUoU1dULkRFRkFVTFQsIFNXVC5ERUZBVUxUKTsKLSAgICAgICAgICBpbnQgICBuZXdYICAgICA9IG9yaWdTaXplLng7Ci0gICAgICAgICAgaW50ICAgbmV3WSAgICAgPSBvcmlnU2l6ZS55OwotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgLy8gTm90ZTogd2UgYXJlIHRyeWluZyB0byBkZXRlcm1pbmUgaGVyZSBpZiB0aGUgd2l6YXJkIHBhZ2Ugc2hvdWxkCi0gICAgICAgICAgLy8gICAgICAgYmUgcmVzaXplZCBiYXNlZCBvbiB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCB0aGF0IGlzCi0gICAgICAgICAgLy8gICAgICAgZ2l2ZW4gdG8gdXMgYnkgdGhlIGV4dGVuc2lvbi4gIFRoZSBoYXJkIGNvZGVkIGNvbnN0YW50cwotICAgICAgICAgIC8vICAgICAgIGJlbG93IHJlcHJlc2VudCB0aGUgdmVydGljYWwgYW5kIGhvcml6b250YWwgcGl4ZWxzIHRoYXQgbmVlZAotICAgICAgICAgIC8vICAgICAgIHRvIGdvIGFyb3VuZCBvYmplY3Qgc2VsZWN0aW9uIGNvbnRyb2wuICBIb3BlZnVsbHksIGEgbW9yZQotICAgICAgICAgIC8vICAgICAgIHByb2dyYW1hdGljIG1ldGhvZCBvZiBkb2luZyB0aGlzIGNhbiBiZSBmb3VuZCBpbiB0aGUgZnV0dXJlLgotICAgICAgICAgIGlmKCBjb21wU2l6ZS54ICsgMjAgPiBvcmlnU2l6ZS54ICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBuZXdYID0gY29tcFNpemUueCArIDIwOwotICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgIGlmKCBjb21wU2l6ZS55ICsgMjA1ID4gb3JpZ1NpemUueSApCi0gICAgICAgICAgewotICAgICAgICAgICAgbmV3WSA9IGNvbXBTaXplLnkgKyAyMDU7Ci0gICAgICAgICAgfQotICAgCi0gICAgICAgICAgd2lkZ2V0U2l6ZV8gPSBuZXcgUG9pbnQobmV3WCwgbmV3WSk7ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpCi0gIHsKLSAgICByZXR1cm4gKGNoaWxkICE9IG51bGwpID8gY2hpbGQuZ2V0U3RhdHVzKCkgOiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKQotICB7Ci0gICAgcHJvamVjdCA9IGdldFByb2plY3RGcm9tSW5pdGlhbFNlbGVjdGlvbihpbml0aWFsU2VsZWN0aW9uKTsKLSAgICBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21Jbml0aWFsU2VsZWN0aW9uKGluaXRpYWxTZWxlY3Rpb24pOwotICAgIGlmIChjaGlsZCAhPSBudWxsKQotICAgICAgY2hpbGQuc2V0SW5pdGlhbFNlbGVjdGlvbihpbml0aWFsU2VsZWN0aW9uKTsKLSAgfQotICAgIAotICBwdWJsaWMgSVN0cnVjdHVyZWRTZWxlY3Rpb24gZ2V0T2JqZWN0U2VsZWN0aW9uKCkKLSAgewotICAgIHJldHVybiAoY2hpbGQgIT0gbnVsbCkgPyBjaGlsZC5nZXRPYmplY3RTZWxlY3Rpb24oKSA6IG51bGw7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIHZhbGlkYXRlU2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIG9iamVjdFNlbGVjdGlvbikKLSAgewotICAgIHJldHVybiAoY2hpbGQgIT0gbnVsbCkgPyBjaGlsZC52YWxpZGF0ZVNlbGVjdGlvbihvYmplY3RTZWxlY3Rpb24pIDogU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKQotICB7Ci0gICAgaWYgKGNoaWxkICE9IG51bGwpCi0gICAgewotICAgICAgSVByb2plY3QgcCA9IGNoaWxkLmdldFByb2plY3QoKTsKLSAgICAgIGlmIChwICE9IG51bGwpCi0gICAgICAgIHJldHVybiBwOwotICAgICAgZWxzZQotICAgICAgICByZXR1cm4gcHJvamVjdDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDb21wb25lbnROYW1lKCkKLSAgewotICAgIGlmIChjaGlsZCAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyBjbmFtZSA9IGNoaWxkLmdldENvbXBvbmVudE5hbWUoKTsKLSAgICAgIGlmIChjbmFtZSAhPSBudWxsICYmIGNuYW1lLmxlbmd0aCgpPjApCi0gICAgICAgIHJldHVybiBjbmFtZTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGNvbXBvbmVudE5hbWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9ICAgIAotCSAKLSAgfQotICAKLSAgcHJpdmF0ZSBJUHJvamVjdCBnZXRQcm9qZWN0RnJvbUluaXRpYWxTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKQotICB7Ci0gICAgaWYgKHNlbGVjdGlvbiAhPSBudWxsICYmIHNlbGVjdGlvbi5zaXplKCkgPT0gMSkKLSAgICB7Ci0gICAgICBPYmplY3Qgb2JqID0gc2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgaWYgKG9iaiAhPSBudWxsKSAKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsgCi0gICAgICAgICAgSVJlc291cmNlIHJlc291cmNlID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZUZyb21TZWxlY3Rpb24ob2JqKTsKLSAgICAgICAgICBpZiAocmVzb3VyY2U9PW51bGwpIAotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgSVByb2plY3QgcCA9IFJlc291cmNlVXRpbHMuZ2V0UHJvamVjdE9mKHJlc291cmNlLmdldEZ1bGxQYXRoKCkpOwotICAgICAgICAgIHJldHVybiBwOwotICAgICAgICB9IGNhdGNoKENvcmVFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9ICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldENvbXBvbmVudE5hbWVGcm9tSW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pCi0gIHsKLSAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwgJiYgc2VsZWN0aW9uLnNpemUoKSA9PSAxKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBzZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAob2JqICE9IG51bGwpIAotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgeyAKLSAgICAgICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlRnJvbVNlbGVjdGlvbihvYmopOwotICAgICAgICAgIGlmIChyZXNvdXJjZT09bnVsbCkgCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAKLSAgICAgICAgICBJVmlydHVhbENvbXBvbmVudCBjb21wID0gUmVzb3VyY2VVdGlscy5nZXRDb21wb25lbnRPZihyZXNvdXJjZSk7Ci0gICAgICAgICAgaWYgKGNvbXAgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29tcC5nZXROYW1lKCk7ICAKLSAgICAgICAgICB9ICAgICAgICAgIAotICAgICAgICB9IGNhdGNoKENvcmVFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9ICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7ICAgIAotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldE9iamVjdFNlbGVjdGlvbkRpc3BsYXlhYmxlU3RyaW5nKCkgewotCXJldHVybiBjaGlsZC5nZXRPYmplY3RTZWxlY3Rpb25EaXNwbGF5YWJsZVN0cmluZygpOyAgICAKLSAgfQotICAKLSAgcHVibGljIFBvaW50IGdldFdpZGdldFNpemUoKQotICB7Ci0JICBQb2ludCBjaGlsZFdpZGdldFNpemUgPSBjaGlsZC5nZXRXaWRnZXRTaXplKCk7Ci0JICBpZiAoY2hpbGRXaWRnZXRTaXplID09IG51bGwpCi0JCSAgCSAgcmV0dXJuIHdpZGdldFNpemVfOwotCSAgcmV0dXJuIGNoaWxkV2lkZ2V0U2l6ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9UaW1lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9UaW1lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjUwNjdkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvVGltZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDgwMyAgIDE1MjQ4NiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgVHlwaW5nIFdTREwgaW4gU2VydmljZSBkZWZpbml0aW9uIGZpZWxkIGlzIHZlcnkgc2xvdwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5OwotCi1wdWJsaWMgY2xhc3MgVGltZXIgZXh0ZW5kcyBUaHJlYWQKLXsKLSAgcHJpdmF0ZSBmaW5hbCBsb25nIE9ORV9TRUNPTkQgPSAxMDAwOwotICBwcml2YXRlIGxvbmcgcmVmcmVzaFRpbWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBpc1J1bm5pbmcgPSB0cnVlOwotICBwcml2YXRlIERpc3BsYXkgZGlzcGxheTsKLSAgcHJpdmF0ZSBSdW5uYWJsZSBydW5uYWJsZTsKLQotICBwcml2YXRlIFRpbWVyKERpc3BsYXkgZGlzcGxheSwgUnVubmFibGUgcnVubmFibGUpCi0gIHsKLSAgICB0aGlzLmRpc3BsYXkgPSBkaXNwbGF5OwotICAgIHRoaXMucnVubmFibGUgPSBydW5uYWJsZTsKLSAgfQotCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgc3RhdGljIFRpbWVyIG5ld0luc3RhbmNlKFRpbWVyIHRpbWVyLCBEaXNwbGF5IGRpc3BsYXksIFJ1bm5hYmxlIHJ1bm5hYmxlKQotICB7Ci0gICAgaWYgKCFUaW1lci5pc1J1bm5pbmcodGltZXIpKQotICAgICAgcmV0dXJuIG5ldyBUaW1lcihkaXNwbGF5LCBydW5uYWJsZSk7Ci0gICAgCi0gICAgcmV0dXJuIHRpbWVyOwotICB9Ci0gIAotICBwdWJsaWMgc3luY2hyb25pemVkIHN0YXRpYyBib29sZWFuIGlzUnVubmluZyhUaW1lciB0aW1lcikKLSAgewotICAgIHJldHVybiB0aW1lciAhPSBudWxsICYmIHRpbWVyLmlzUnVubmluZzsKLSAgfQotCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzdGFydFRpbWVyKCkKLSAgewotICAgIHJlZnJlc2hUaW1lID0gZ2V0Q3VycmVudFRpbWUoKSArIE9ORV9TRUNPTkQ7Ci0gICAgaWYgKCFpc0FsaXZlKCkpCi0gICAgICB0aGlzLnN0YXJ0KCk7Ci0gIH0KLQotICBwcml2YXRlIGxvbmcgZ2V0Q3VycmVudFRpbWUoKQotICB7Ci0gICAgcmV0dXJuIENhbGVuZGFyLmdldEluc3RhbmNlKCkuZ2V0VGltZSgpLmdldFRpbWUoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJ1bigpCi0gIHsKLSAgICBsb25nIGN1cnJUaW1lID0gZ2V0Q3VycmVudFRpbWUoKTsKLSAgICB3aGlsZSAoY3VyclRpbWUgPCByZWZyZXNoVGltZSkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgc2xlZXAocmVmcmVzaFRpbWUgLSBjdXJyVGltZSk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gaWUpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgICBjdXJyVGltZSA9IGdldEN1cnJlbnRUaW1lKCk7Ci0gICAgfQotICAgIGlzUnVubmluZyA9IGZhbHNlOwotICAgIGRpc3BsYXkuc3luY0V4ZWMocnVubmFibGUpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L1ZhbGlkYXRlV1NETEpvYi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9WYWxpZGF0ZVdTRExKb2IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI3ZWUwOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L1ZhbGlkYXRlV1NETEpvYi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLmpvYnMuSm9iOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25NZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25SZXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5lY2xpcHNlLldTRExWYWxpZGF0b3I7Ci0KLQotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVXU0RMSm9iIGV4dGVuZHMgSm9iIHsKLQkKLQlmaW5hbCBwdWJsaWMgc3RhdGljIFN0cmluZyBWQUxJREFURV9XU0RMX0pPQl9GQU1JTFkgPSAiVmFsaWRhdGVXU0RMSm9iSmFtaWx5IjsKLQkKLQlwcml2YXRlIFN0cmluZyB3c2RsVVJJXyA9IG51bGw7Ci0JcHJpdmF0ZSBJVmFsaWRhdGlvbk1lc3NhZ2VbXSB2YWxpZGF0aW9uTWVzc2FnZXNfID0gbnVsbDsKLQlwcml2YXRlIGludCB2YWxpZGF0aW9uTWVzc2FnZVNldmVyaXR5XyA9IC0xOyAvLyBkZWZhdWx0IHZhbHVlCi0KLQlwdWJsaWMgVmFsaWRhdGVXU0RMSm9iKFN0cmluZyB3c2RsVVJJKSB7Ci0JCXN1cGVyKCJWYWxpZGF0ZVdTRExKb2IiKTsKLQkJd3NkbFVSSV8gPSB3c2RsVVJJOwotCX0KLQotCXByb3RlY3RlZCBJU3RhdHVzIHJ1bihJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHsKLQkJV1NETFZhbGlkYXRvciB3c2RsVmFsaWRhdG9yID0gV1NETFZhbGlkYXRvci5nZXRJbnN0YW5jZSgpOwotCSAgICBJVmFsaWRhdGlvblJlcG9ydCB2YWxSZXBvcnQgPSB3c2RsVmFsaWRhdG9yLnZhbGlkYXRlKHdzZGxVUklfKTsKLQkgICAgdmFsaWRhdGlvbk1lc3NhZ2VzXyA9IHZhbFJlcG9ydC5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKTsKLQkgICAgcmVwb3J0U3VtbWFyeSgpOwotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0JCi0JLy8gY2FsY3VsYXRlIHRoZSBoaWdoZXIgc2V2ZXJpdHkgZm9yIGFsbCB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlcwotCXByaXZhdGUgdm9pZCByZXBvcnRTdW1tYXJ5KCkgewotCQlpbnQgaTsKLQkJaW50IHNldmVyaXR5OwotCQlpbnQgZXJyb3JDb3VudCA9IDA7Ci0JCWludCB3YXJuaW5nQ291bnQgPSAwOwotCQlmb3IgKGk9MDsgaTx2YWxpZGF0aW9uTWVzc2FnZXNfLmxlbmd0aCAmJiBlcnJvckNvdW50ID09IDA7IGkrKykgewotCQkJc2V2ZXJpdHkgPSB2YWxpZGF0aW9uTWVzc2FnZXNfW2ldLmdldFNldmVyaXR5KCk7Ci0JCQlzd2l0Y2ggKHNldmVyaXR5KSB7Ci0JCQljYXNlIElWYWxpZGF0aW9uTWVzc2FnZS5TRVZfRVJST1I6Ci0JCQkJZXJyb3JDb3VudCsrOwotCQkJCWJyZWFrOwotCQkJY2FzZSBJVmFsaWRhdGlvbk1lc3NhZ2UuU0VWX1dBUk5JTkc6Ci0JCQkJd2FybmluZ0NvdW50Kys7Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JCWlmIChlcnJvckNvdW50ID4gMCkgewotCQkJdmFsaWRhdGlvbk1lc3NhZ2VTZXZlcml0eV8gPSBJVmFsaWRhdGlvbk1lc3NhZ2UuU0VWX0VSUk9SOwotCQl9IGVsc2UgaWYgKHdhcm5pbmdDb3VudCA+IDApIHsKLQkJCXZhbGlkYXRpb25NZXNzYWdlU2V2ZXJpdHlfID0gSVZhbGlkYXRpb25NZXNzYWdlLlNFVl9XQVJOSU5HOwotCQl9Ci0JCQotCX0KLQotCXB1YmxpYyBib29sZWFuIGJlbG9uZ3NUbyhPYmplY3QgZmFtaWx5KQotCXsKLQkJcmV0dXJuIGZhbWlseSA9PSBWQUxJREFURV9XU0RMX0pPQl9GQU1JTFk7Ci0JfQotCQotCXB1YmxpYyBJVmFsaWRhdGlvbk1lc3NhZ2VbXSBnZXRWYWxpZGF0aW9uTWVzc2FnZXMoKSB7Ci0JCXJldHVybiB2YWxpZGF0aW9uTWVzc2FnZXNfOwotCX0KLQkKLQlwdWJsaWMgaW50IGdldFZhbGlkYXRpb25NZXNzYWdlU2V2ZXJpdHkoKSB7Ci0JCXJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVNldmVyaXR5XzsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldFdzZGxVUkkoKSB7Ci0JCXJldHVybiB3c2RsVVJJXzsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L1ZhbGlkYXRpb25NZXNzYWdlVmlld2VyV2lkZ2V0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L1ZhbGlkYXRpb25NZXNzYWdlVmlld2VyV2lkZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3N2Y1ZGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9WYWxpZGF0aW9uTWVzc2FnZVZpZXdlcldpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxMCAgIDEzMTM1MiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MDQxMSAgIDEzNjEzNCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA0MjAgICAxMzYyMjEga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuQ29sdW1uV2VpZ2h0RGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JTGFiZWxQcm92aWRlckxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JVGFibGVMYWJlbFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVGFibGVMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5UYWJsZVZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkltYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UYWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UYWJsZUNvbHVtbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UYWJsZUl0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JU2hhcmVkSW1hZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25NZXNzYWdlOwotCi0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZVZpZXdlcldpZGdldCBleHRlbmRzIFNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcgotewotICBwcml2YXRlIGludCBERUZBVUxUX1RBQkxFX0hFSUdIVF9ISU5UID0gMTAwOwotICBwcml2YXRlIFRhYmxlVmlld2VyIHRhYmxlVmlld2VyXzsKLSAgcHJpdmF0ZSBUYWJsZSB0YWJsZV87Ci0gIHByaXZhdGUgU3RyaW5nIG1lc3NhZ2UgPSBudWxsOwotICBzdGF0aWMgZmluYWwgU3RyaW5nIGNvbHVtbnNfW10gPSB7Q29uc3VtcHRpb25VSU1lc3NhZ2VzLlRBQkxFX0NPTFVNTl9WQUxJREFUSU9OX1NFVkVSSVRZLAotCSAgCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuVEFCTEVfQ09MVU1OX1ZBTElEQVRJT05fTElORSwKLQkgIAkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRBQkxFX0NPTFVNTl9WQUxJREFUSU9OX0NPTFVNTiwKLQkgIAkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRBQkxFX0NPTFVNTl9WQUxJREFUSU9OX01FU1NBR0V9OwotICBzdGF0aWMgZmluYWwgaW50IGNvbHVtbnNXaWR0aF9bXSA9IHsxMiwgMTAsIDEwLCA2MH07Ci0gIHN0YXRpYyBmaW5hbCBpbnQgY29sdW1uTWluc19bXSA9IHs2MCwgNTAsIDUwLCAzMDB9OwotCi0gIAotCi0gIHB1YmxpYyBWYWxpZGF0aW9uTWVzc2FnZVZpZXdlcldpZGdldCgpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGFkZENvbnRyb2xzKCBDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lciApCi0gIHsgCi0gICAKLQlDb21wb3NpdGUgIGNvbXBvc2l0ZSA9IG5ldyBDb21wb3NpdGUocGFyZW50LCBTV1QuTk9ORSk7Ci0JR3JpZExheW91dCBnbCAgICAgICAgPSBuZXcgR3JpZExheW91dCgpOwotCQotCWdsLm1hcmdpbkhlaWdodCA9IDA7Ci0JZ2wubWFyZ2luV2lkdGggPSAwOwotCWNvbXBvc2l0ZS5zZXRMYXlvdXQoZ2wpOwotCWNvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5GSUxMX0JPVEgpKTsKLQkKLSAgICBUZXh0IG1lc3NhZ2VMYWJlbCA9IG5ldyBUZXh0KCBjb21wb3NpdGUsIFNXVC5SRUFEX09OTFkpOwotICAgIG1lc3NhZ2VMYWJlbC5zZXRUZXh0KCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfVkFMSURBVEVfTUVTU0FHRVMpOwotICAgIEdyaWREYXRhIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCk7Ci0gICAgbWVzc2FnZUxhYmVsLnNldExheW91dERhdGEoZ2QpOwotICAgIG1lc3NhZ2VMYWJlbC5zZXRUb29sVGlwVGV4dCggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfVkFMSURBVEVfVEVYVF9NRVNTQUdFICk7Ci0KLQl0YWJsZV8gPSBuZXcgVGFibGUoY29tcG9zaXRlLCBTV1QuU0lOR0xFIHwgU1dULkZVTExfU0VMRUNUSU9OIHwgU1dULkJPUkRFUik7Ci0JZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9CT1RIKTsKLQlnZC5oZWlnaHRIaW50ID0gREVGQVVMVF9UQUJMRV9IRUlHSFRfSElOVDsKLQl0YWJsZV8uc2V0TGF5b3V0RGF0YShnZCk7Ci0JdGFibGVfLnNldEhlYWRlclZpc2libGUodHJ1ZSk7Ci0JdGFibGVfLnNldExpbmVzVmlzaWJsZSh0cnVlKTsKLQl0YWJsZV8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfVEFCTEVfVkFMSURBVEVfTUVTU0FHRSApOwotCVRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0ID0gbmV3IFRhYmxlTGF5b3V0KCk7Ci0JZm9yIChpbnQgaSA9IDA7IGkgPCBjb2x1bW5zXy5sZW5ndGg7IGkrKykKLQl7Ci0JICBUYWJsZUNvbHVtbiB0YWJsZUNvbHVtbiA9IG5ldyBUYWJsZUNvbHVtbih0YWJsZV8sIFNXVC5OT05FKTsKLQkgIHRhYmxlQ29sdW1uLnNldFRleHQoY29sdW1uc19baV0pOwotCSAgdGFibGVDb2x1bW4ucGFjaygpOwotCSAgQ29sdW1uV2VpZ2h0RGF0YSBjb2x1bW5EYXRhID0gbmV3IENvbHVtbldlaWdodERhdGEoY29sdW1uc1dpZHRoX1tpXSwgY29sdW1uTWluc19baV0sIHRydWUpOwotCSAgdGFibGVMYXlvdXQuYWRkQ29sdW1uRGF0YShjb2x1bW5EYXRhKTsKLQl9Ci0JdGFibGVfLnNldExheW91dCh0YWJsZUxheW91dCk7Ci0KLQl0YWJsZVZpZXdlcl8gPSBuZXcgVGFibGVWaWV3ZXIodGFibGVfKTsKLQotCXRhYmxlVmlld2VyXy5zZXRDb250ZW50UHJvdmlkZXIobmV3IExpc3RDb250ZW50UHJvdmlkZXIoKSk7Ci0JdGFibGVWaWV3ZXJfLnNldExhYmVsUHJvdmlkZXIobmV3IExpc3RMYWJlbFByb3ZpZGVyKCkpOwotCi0JcmV0dXJuIHRoaXM7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRJbnB1dChJVmFsaWRhdGlvbk1lc3NhZ2VbXSBtZXNzYWdlcykKLSAgewotICAJdGFibGVWaWV3ZXJfLnNldElucHV0KG1lc3NhZ2VzKTsKLSAgCXRhYmxlVmlld2VyXy5yZWZyZXNoKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGNsZWFySW5wdXQoKQotICB7Ci0JICBJVmFsaWRhdGlvbk1lc3NhZ2UgZW1wdHlNZXNzYWdlc1tdID0ge307Ci0JICB0aGlzLnNldElucHV0KGVtcHR5TWVzc2FnZXMpOwotICB9Ci0gIAotICBwdWJsaWMgSUNvbnRlbnRQcm92aWRlciBnZXRDb250ZW50UHJvdmlkZXIoKQotICB7Ci0JICByZXR1cm4gdGFibGVWaWV3ZXJfLmdldENvbnRlbnRQcm92aWRlcigpOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZ2V0U3RhdHVzKCkKLSAgewotICAgIHJldHVybiBtZXNzYWdlID09IG51bGwgPyBTdGF0dXMuT0tfU1RBVFVTIDogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKG1lc3NhZ2UgKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlZnJlc2goKQotICB7Ci0JdGFibGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgfQotCi0gIHB1YmxpYyBUYWJsZUl0ZW1bXSBnZXRJdGVtcygpCi0gIHsKLQkvL2ludGVybmFsUmVmcmVzaCgpOwotCXJldHVybiB0YWJsZV8uZ2V0SXRlbXMoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKQotICB7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBkaXNwb3NlKCkKLSAgewkKLQlpZiAodGFibGVfICE9IG51bGwpCi0JICB0YWJsZV8uZGlzcG9zZSgpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGNsYXNzIExpc3RDb250ZW50UHJvdmlkZXIgaW1wbGVtZW50cyBJU3RydWN0dXJlZENvbnRlbnRQcm92aWRlcgotICB7Ci0JcHVibGljIHZvaWQgZGlzcG9zZSgpCi0JewotCX0KLQotCXB1YmxpYyB2b2lkIGlucHV0Q2hhbmdlZChWaWV3ZXIgdmlld2VyLCBPYmplY3Qgb2xkSW5wdXQsIE9iamVjdCBuZXdJbnB1dCkKLQl7Ci0JICB0YWJsZVZpZXdlcl8uYWRkKGdldEVsZW1lbnRzKG5ld0lucHV0KSk7Ci0JfQotCi0JcHVibGljIE9iamVjdFtdIGdldEVsZW1lbnRzKE9iamVjdCBpbnB1dEVsZW1lbnQpCi0JewotCQlpZiAoaW5wdXRFbGVtZW50IGluc3RhbmNlb2YgSVZhbGlkYXRpb25NZXNzYWdlW10pCi0JICB7Ci0JCQlJVmFsaWRhdGlvbk1lc3NhZ2VbXSB2YWxNZXNzYWdlcyA9IChJVmFsaWRhdGlvbk1lc3NhZ2VbXSkgaW5wdXRFbGVtZW50OwotCQkgIHJldHVybiB2YWxNZXNzYWdlczsKLQkgIH0KLQkgIGVsc2UKLQkJcmV0dXJuIG5ldyBPYmplY3RbMF07Ci0JfQotICB9Ci0KLSAgcHJvdGVjdGVkIGNsYXNzIExpc3RMYWJlbFByb3ZpZGVyIGltcGxlbWVudHMgSVRhYmxlTGFiZWxQcm92aWRlcgotICB7Ci0JcHVibGljIEltYWdlIGdldENvbHVtbkltYWdlKE9iamVjdCBlbGVtZW50LCBpbnQgY29sdW1uSW5kZXgpCi0JewotCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIElWYWxpZGF0aW9uTWVzc2FnZSkKLQkJewotCQkJSVZhbGlkYXRpb25NZXNzYWdlIG1zZyA9IChJVmFsaWRhdGlvbk1lc3NhZ2UpIGVsZW1lbnQ7Ci0JCQkKLQkJCWlmIChjb2x1bW5JbmRleCA9PSAwKQotCQkJewkKLQkJCQlpbnQgc2V2ZXJpdHkgPSBtc2cuZ2V0U2V2ZXJpdHkoKTsKLQkJCQlpZiAoc2V2ZXJpdHkgPT0gMCkgewotCQkJCQlyZXR1cm4gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRTaGFyZWRJbWFnZXMoKS5nZXRJbWFnZShJU2hhcmVkSW1hZ2VzLklNR19PQkpTX0VSUk9SX1RTSyk7Ci0JCQkJfSBlbHNlIGlmIChzZXZlcml0eSA9PSAxKSB7Ci0JCQkJCXJldHVybiBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldFNoYXJlZEltYWdlcygpLmdldEltYWdlKElTaGFyZWRJbWFnZXMuSU1HX09CSlNfV0FSTl9UU0spOwotCQkJCX0gZWxzZSBpZiAoc2V2ZXJpdHkgPT0gMikgewotCQkJCQlyZXR1cm4gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRTaGFyZWRJbWFnZXMoKS5nZXRJbWFnZShJU2hhcmVkSW1hZ2VzLklNR19PQkpTX0lORk9fVFNLKTsKLQkJCQl9Ci0JCQl9Ci0JCX0JCi0JICByZXR1cm4gbnVsbDsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldENvbHVtblRleHQoT2JqZWN0IGVsZW1lbnQsIGludCBjb2x1bW5JbmRleCkKLQl7Ci0JCVN0cmluZyB0ZXh0ID0gIiI7Ci0JCWlmIChlbGVtZW50IGluc3RhbmNlb2YgSVZhbGlkYXRpb25NZXNzYWdlKQotCQl7Ci0JCQlJVmFsaWRhdGlvbk1lc3NhZ2UgbXNnID0gKElWYWxpZGF0aW9uTWVzc2FnZSkgZWxlbWVudDsKLQkJCQotCQkJc3dpdGNoIChjb2x1bW5JbmRleCkgewotCQkJY2FzZSAwOgkJCi0JCQkJLy8gbm8gdGV4dCB0byBkaXNwbGF5LCBvbmx5IGRpc3BsYXkgc2V2ZXJpdHkgYXMgaW1hZ2UKLQkJCQlicmVhazsKLQkJCWNhc2UgMToKLQkJCQl0ZXh0ID0gKG5ldyBJbnRlZ2VyKG1zZy5nZXRMaW5lKCkpKS50b1N0cmluZygpOwotCQkJCWJyZWFrOwotCQkJY2FzZSAyOgotCQkJCXRleHQgPSAobmV3IEludGVnZXIobXNnLmdldENvbHVtbigpKSkudG9TdHJpbmcoKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgMzoKLQkJCQl0ZXh0ID0gbXNnLmdldE1lc3NhZ2UoKTsKLQkJCQlicmVhazsJCQotCQkJCQotCQkJZGVmYXVsdDoKLQkJCQlicmVhazsKLQkJCX0gCi0JCX0KLQkJcmV0dXJuIHRleHQ7Ci0JfQotCi0JcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoSUxhYmVsUHJvdmlkZXJMaXN0ZW5lciBsaXN0ZW5lcikKLQl7Ci0JfQotCi0JcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoSUxhYmVsUHJvdmlkZXJMaXN0ZW5lciBsaXN0ZW5lcikKLQl7Ci0JfQotCi0JcHVibGljIGJvb2xlYW4gaXNMYWJlbFByb3BlcnR5KE9iamVjdCBlbGVtZW50LCBTdHJpbmcgcHJvcGVydHkpCi0JewotCSAgcmV0dXJuIHRydWU7Ci0JfQotCi0JcHVibGljIHZvaWQgZGlzcG9zZSgpCi0JewotCX0KLSAgfQotIH0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvV1NETFNlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L1dTRExTZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmNmNTI0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvV1NETFNlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMTE2ICAgMTU5NjE4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBQcm9qZWN0IGFuZCBFQVIgbm90IGRlZmF1bHRlZCBwcm9wZXJseSB3aGVuIHdpemFyZCBsYXVuY2hlZCBmcm9tIEpTUi0xMDkgV2ViIHNlcnZpY2VzIGJyYW5jaCBpbiBKMkVFIFByb2plY3QgRXhwbG9yZXIKLSAqIDIwMDcwMzI3ICAgMTcyMzM5IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MDcxMyAgIDE5MTM1NyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODEyMDggICAyNTc2MTggbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBBZGQgTWVjaGFuaXNtIGZvciBBZG9wdGVycyB0byBtYXAgU2VydmljZXMgdG8gV1NETCBVUkxzCi0gKiAyMDA5MDMxMCAgIDI0MjQ0MCB5ZW5sdUBjYS5pYm0uY29tIC0gWWVuIEx1LCBQbHVnZ2FibGUgSUZpbGUgdG8gVVJJIENvbnZlcnRlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LmludGVybmFsLmltcGwuU2VydmljZVJlZkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLkJlYW5MaW5rOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5TZXJ2aWNlSW1wbEJlYW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLldlYlNlcnZpY2VEZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVBY3Rpb25BZGFwdGVyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb252ZXJ0ZXIuSUlGaWxlMlVyaUNvbnZlcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS51dGlscy5BZGFwdGVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzZmluZGVyLldTRExVUkxTdHJpbmdXcmFwcGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuU2VydmljZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsOwotCi1wdWJsaWMgY2xhc3MgV1NETFNlbGVjdGlvblRyYW5zZm9ybWVyIGltcGxlbWVudHMgVHJhbnNmb3JtZXIKLXsKLSAgcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oT2JqZWN0IHZhbHVlKQotICB7Ci0gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pCi0gICAgewotICAgICBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pdmFsdWU7Ci0gICAgIGlmIChzZWxlY3Rpb24gIT0gbnVsbCAmJiAhc2VsZWN0aW9uLmlzRW1wdHkoKSkgewotICAgICAKLSAgICAgIE9iamVjdCBzZWwgPSBzZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAoc2VsIGluc3RhbmNlb2YgSVJlc291cmNlKQotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIGlmIChzZWwgaW5zdGFuY2VvZiBJRmlsZSkKLSAgICAgICAgICB7Ci0gICAgICAgIAlJRmlsZSBmaWxlID0gKElGaWxlKXNlbDsKLSAgICAgICAgCUlJRmlsZTJVcmlDb252ZXJ0ZXIgY29udmVydGVyID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRJRmlsZTJVcmlDb252ZXJ0ZXIoKTsKLSAgICAgICAgCWlmIChjb252ZXJ0ZXIgIT0gbnVsbCkKLSAgICAgICAgCXsKLSAgICAgICAgCSAgU3RyaW5nIHdzZGxVcmwgPSBjb252ZXJ0ZXIuY29udmVydChmaWxlKTsKLSAgICAgICAgCSAgaWYgKHdzZGxVcmwgIT0gbnVsbCB8fCAhY29udmVydGVyLmFsbG93QmFzZUNvbnZlcnNpb25PbkZhaWx1cmUoKSkKLSAgICAgICAgCSAgICByZXR1cm4gd3NkbFVybDsKLSAgICAgICAgCX0KLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKCgoSVJlc291cmNlKXNlbCkuZ2V0TG9jYXRpb24oKS50b0ZpbGUoKS50b1VSTCgpLnRvU3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gbXVybGUpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAoUGxhdGZvcm0uZ2V0QWRhcHRlck1hbmFnZXIoKS5oYXNBZGFwdGVyKHNlbCwgV1NETFVSTFN0cmluZ1dyYXBwZXIuY2xhc3MuZ2V0TmFtZSgpKSkgewotICAgIAlPYmplY3QgYWRhcHRlZE9iamVjdCA9IFBsYXRmb3JtLmdldEFkYXB0ZXJNYW5hZ2VyKCkubG9hZEFkYXB0ZXIoc2VsLCBXU0RMVVJMU3RyaW5nV3JhcHBlci5jbGFzcy5nZXROYW1lKCkpOwotICAgIAlXU0RMVVJMU3RyaW5nV3JhcHBlciB3cmFwcGVyID0gKFdTRExVUkxTdHJpbmdXcmFwcGVyKWFkYXB0ZWRPYmplY3Q7Ci0gICAgCXJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbih3cmFwcGVyLmdldFdTRExVUkxTdHJpbmcoKSk7ICAJCQotICAgICAgfQotICAgICAgZWxzZSBpZiAoc2VsIGluc3RhbmNlb2YgU2VydmljZUltcGwpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihKMkVFQWN0aW9uQWRhcHRlckZhY3RvcnkuZ2V0V1NETFVSSSgoU2VydmljZUltcGwpc2VsKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChzZWwgaW5zdGFuY2VvZiBTZXJ2aWNlUmVmSW1wbCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKEoyRUVBY3Rpb25BZGFwdGVyRmFjdG9yeS5nZXRXU0RMVVJJKChTZXJ2aWNlUmVmSW1wbClzZWwpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHNlbCBpbnN0YW5jZW9mIFdTRExSZXNvdXJjZUltcGwpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihKMkVFQWN0aW9uQWRhcHRlckZhY3RvcnkuZ2V0V1NETFVSSSgoV1NETFJlc291cmNlSW1wbClzZWwpKTsKLSAgICAgIH0KLSAgICAgIC8qCi0gICAgICAgKiBUT0RPIC0gUmVtb3ZlIHRoZSBjYXNlcyBiZWxvdyBhZnRlciBidWcgMTcwODM0IGlzIGZpeGVkCi0gICAgICAgKiAKLSAgICAgICAqIFdTRExTZWxlY3Rpb25UcmFuc2Zvcm1lciBzaG91bGQgbm90IG5lZWQgdG8gaGFuZGxlIFNlcnZpY2VJbXBsQmVhbiBhbmQgQmVhbkxpbmsgd2hpY2gKLSAgICAgICAqIHJlcHJlc2VudCBzZXJ2aWNlIGNsYXNzZXMuICBUaGVzZSBjYXRjaGVzIGFyZSBoZXJlIGZvciBub3cgc2luY2Ugd2UgaW5jb3JyZWN0bHkgYWxsb3cKLSAgICAgICAqIHRoZSB3aXphcmQgdG8gZGVmYXVsdCB0byB0b3AtZG93biBzY2VhbnJpbyB3aGVuIGxhdW5jaCBmcm9tIHRoZXNlIG9iamVjdHMgaW4gdGhlIEpTUi0xMDkKLSAgICAgICAqIGJyYW5jaC4gCi0gICAgICAgKi8KLSAgICAgIGVsc2UgaWYgKHNlbCBpbnN0YW5jZW9mIFNlcnZpY2VJbXBsQmVhbikKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKGdldFdTRExVUkkoKFNlcnZpY2VJbXBsQmVhbikgc2VsKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChzZWwgaW5zdGFuY2VvZiBCZWFuTGluaykKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKGdldFdTRExVUkkoKEJlYW5MaW5rKSBzZWwpKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgCSAgU3RyaW5nIHdzZGxVUkkgPSBBZGFwdGVyVXRpbHMuZ2V0QWRhcHRlZFdTREwoc2VsKTsKLSAgICAJICBpZiAod3NkbFVSSSAhPSBudWxsKSB7Ci0gICAgCQkgIHJldHVybiBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbih3c2RsVVJJKTsKLSAgICAJICB9Ci0gICAgICB9Ci0gICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRXU0RMVVJJKFNlcnZpY2VJbXBsQmVhbiBiZWFuKSB7Ci0JICBFT2JqZWN0IGVPYmplY3QgPSBiZWFuLmVDb250YWluZXIoKTsKLQkgIGlmIChlT2JqZWN0ID09IG51bGwpCi0JCSAgcmV0dXJuICIiOwotICAgICAgICAgIAotCSAgZU9iamVjdCA9IGVPYmplY3QuZUNvbnRhaW5lcigpOwotICAgICAgCi0JICBpZiAoZU9iamVjdCBpbnN0YW5jZW9mIFdlYlNlcnZpY2VEZXNjcmlwdGlvbikgewotCQkgIFdlYlNlcnZpY2VEZXNjcmlwdGlvbiB3c2QgPSAoV2ViU2VydmljZURlc2NyaXB0aW9uKSBlT2JqZWN0OwotCQkgIElQcm9qZWN0IHByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3Qod3NkKTsgICAgCSAgCi0gICAgCSAgCi0JCSAgLy8gZ2V0V2ViQ29udGVudFBhdGggcmV0dXJucyB0aGUgIldlYkNvbnRlbnQiIGZvbGRlciBwYXRoIGZvciBXZWIgcHJvamVjdHMKLQkJICAvLyBmb3IgRUpCIHByb2plY3RzLCBpdCByZXR1cm5zIHRoZSAiZWJqTW9kdWxlIiBmb2xkZXIgcGF0aAotCQkgIElQYXRoIHBhdGggPSBKMkVFVXRpbHMuZ2V0V2ViQ29udGVudFBhdGgocHJvamVjdCk7ICAgIAkgCi0JCSAgcGF0aCA9IHBhdGguYXBwZW5kKHdzZC5nZXRXc2RsRmlsZSgpKTsgCi0gICAgCSAgCi0JCSAgcmV0dXJuIHBhdGgudG9TdHJpbmcoKTsgICAgCSAgICAKLQkgIH0KLQkgIHJldHVybiAiIjsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0V1NETFVSSShCZWFuTGluayBsaW5rKSB7Ci0JICBFT2JqZWN0IGVPYmplY3QgPSBsaW5rLmVDb250YWluZXIoKTsKLQkgIGlmIChlT2JqZWN0IGluc3RhbmNlb2YgU2VydmljZUltcGxCZWFuKQotCQkgIHJldHVybiBnZXRXU0RMVVJJKChTZXJ2aWNlSW1wbEJlYW4pIGVPYmplY3QpOwotCSAgcmV0dXJuICIiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L1dTRExTZWxlY3Rpb25XaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvV1NETFNlbGVjdGlvbldpZGdldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mjc5YTI4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9vYmplY3QvV1NETFNlbGVjdGlvbldpZGdldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxMCAgIDEzNTQ0MSBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDQxMCAgIDEzNjAxMSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA0MjAgICAxMzU5MTIgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA1MDQgICAxMTkyOTYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjA1MjUgICAxNDIyODEgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA2MDcgICAxNDQ5MzIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNjEyICAgMTQ1MDgxIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwNzE5ICAgMTM5OTc3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDgwMyAgIDE1MjcwMSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA4MDMgICAxNTI0ODYgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFR5cGluZyBXU0RMIGluIFNlcnZpY2UgZGVmaW5pdGlvbiBmaWVsZCBpcyB2ZXJ5IHNsb3cKLSAqIDIwMDYwODI1ICAgMTM1NTcwIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBTZXJ2aWNlIGltcGxlbWVudGF0aW9uIFVSTCBub3QgZGlzcGxheWVkIHByb3Blcmx5IG9uIGZpcnN0IHBhZ2UKLSAqIDIwMDYwODMxICAgMTU1ODgzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBzZXJ2aWNlIGltcGwgZmllbGQgZG9lc24ndCB3b3JrIGFmdGVyIHN3aXRjaGluZyBmcm9tIEJVIHRvIFRECi0gKiAyMDA2MTEwNiAgIDE0MjUwMCBkYXZpZC5zY2huZWlkZXJAdW5pc3lzLmNvbSAtIERhdmlkIFNjaG5laWRlciwgV1RQIHByb3BlcnRpZXMgcGFnZXMgZm9udHMgZG9uJ3QgZm9sbG93IEVjbGlwc2UgcHJlZmVyZW5jZXMKLSAqIDIwMDYxMjExICAgMTYxNTg5IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBOUEUgaW4gc2VydmljZSBnZW5lcmF0aW9uIGFmdGVyIG9wZW5pbmcgYW5kIGNhbmNlbGxpbmcgZnJvbSBicm93c2UgZGlhbG9nCi0gKiAyMDA3MDEzMSAgIDE2ODc4NiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgd3NkbCB1cmwgb24gd2ViIHNlcnZpY2Ugd2l6YXJkIHBhZ2UgMSBpcyBub3QgcmVmbGVjdGVkIGluIGJyb3dzZSBkaWFsb2cKLSAqIDIwMDcwMzI2ICAgMTcxMDcxIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBDcmVhdGUgcHVibGljIHV0aWxpdHkgbWV0aG9kIGZvciBjb3B5aW5nIFdTREwgZmlsZXMKLSAqIDIwMDkwMzEwICAgMjQyNDQwIHllbmx1QGNhLmlibS5jb20gLSBZZW4gTHUsIFBsdWdnYWJsZSBJRmlsZSB0byBVUkkgQ29udmVydGVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0OwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVdvcmtzcGFjZVJvb3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5qb2JzLklKb2JDaGFuZ2VFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuam9icy5JSm9iTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuam9icy5Kb2I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLmpvYnMuSm9iQ2hhbmdlQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWY7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFQWN0aW9uQWRhcHRlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uV1NETFBhcnNlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5UaW1lZFdTRExTZWxlY3Rpb25Db25kaXRpb25Db21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLldTRExTZWxlY3Rpb25UcmVlV2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb24uRGlhbG9nUmVzb3VyY2VCcm93c2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb24uRmlsZUV4dGVuc2lvbkZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLlVJVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5RXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb2RpZnlMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0RGF0YUV2ZW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb252ZXJ0ZXIuSUlGaWxlMlVyaUNvbnZlcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZUVudGl0eTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudXRpbC5Vbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5TZXJ2aWNlSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvbk1lc3NhZ2U7Ci0KLXB1YmxpYyBjbGFzcyBXU0RMU2VsZWN0aW9uV2lkZ2V0IGV4dGVuZHMgQWJzdHJhY3RPYmplY3RTZWxlY3Rpb25XaWRnZXQgaW1wbGVtZW50cyBJT2JqZWN0U2VsZWN0aW9uV2lkZ2V0LCBSdW5uYWJsZQotewotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgcGx1Z2luSWRfOwotICBwcml2YXRlIEZpbGVFeHRlbnNpb25GaWx0ZXIgd3NGaWx0ZXJfOwotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyOwotICBwcml2YXRlIFN0cmluZyB3c2RsVVJJXzsKLSAgCi0gIHByaXZhdGUgQ29tcG9zaXRlIHBhcmVudF87Ci0gIHByaXZhdGUgTGlzdGVuZXIgIHN0YXR1c0xpc3RlbmVyXzsKLSAgcHJpdmF0ZSBNb2RpZnlMaXN0ZW5lciBtb2RpZnlMaXN0ZW5lcl87Ci0gIHByaXZhdGUgV1NETFNlbGVjdGlvblRyZWVXaWRnZXQgdHJlZTsKLSAgCi0gIHByaXZhdGUgVGltZXIgdGltZXJfID0gbnVsbDsKLSAgCi0gIC8qQ09OVEVYVF9JRCBQQ09OMDAwMSBmb3IgdGhlIFdTREwgU2VsZWN0aW9uIFBhZ2UqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1BDT05fUEFHRSA9ICJQQ09OMDAwMSI7Ci0KLSAgLypDT05URVhUX0lEIFBDT04wMDAyIGZvciB0aGUgV1NETCBEb2N1bWVudCB0ZXh0IGZpZWxkIG9mIHRoZSBXU0RMIFNlbGVjdGlvbiBQYWdlKi8KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSU5GT1BPUF9QQ09OX1RFWFRfV1NETCA9ICJQQ09OMDAwMiI7Ci0gIHByaXZhdGUgVGV4dCB3ZWJTZXJ2aWNlVVJJOwotCi0gIC8qQ09OVEVYVF9JRCBQQ09OMDAwMyBmb3IgdGhlIFdTREwgUmVzb3VyY2UgQnJvd3NlIGJ1dHRvbiBvZiB0aGUgV1NETCBTZWxlY3Rpb24gUGFnZSovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUENPTl9CVVRUT05fQlJPV1NFX1dTREwgPSAiUENPTjAwMDMiOwotICBwcml2YXRlIEJ1dHRvbiB3c0Jyb3dzZUJ1dHRvbl87Ci0gIAotICAvKkNPTlRFWFRfSUQgUENPTjAwMDQgZm9yIHRoZSBXaXphcmQgV1NETCBWYWxpZGF0aW9uIHRhYmxlIG9mIHRoZSBXU0RMIFNlbGVjdGlvbiBQYWdlKi8KLSAgcHJpdmF0ZSBWYWxpZGF0aW9uTWVzc2FnZVZpZXdlcldpZGdldCBtc2dWaWV3ZXJfOwotICBwcml2YXRlIFZhbGlkYXRlV1NETEpvYiB2YWxpZGF0ZVdTRExKb2JfOwotICBwcml2YXRlIEpvYkNoYW5nZUFkYXB0ZXIgICAgam9iQ2hhbmdlQWRhcHRlcl87Ci0gIAotICAvKkNPTlRFWFRfSUQgUENPTjAwMDUgZm9yIHRoZSBXaXphcmQgV1NETCBWYWxpZGF0aW9uIHN1bW1hcnkgbWVzc2FnZSBvZiB0aGUgV1NETCBTZWxlY3Rpb24gUGFnZSovCi0gIHByaXZhdGUgVGV4dCB2YWxpZGF0aW9uU3VtbWFyeVRleHRfOwotICBwcml2YXRlIFRleHQgdmFsaWRhdGlvblN1bW1hcnlUZXh0Ml87Ci0gIAotICAvKkNPTlRFWFRfSUQgUENPTjAwMDYgZm9yIHRoZSBTdG9wIFdpemFyZCBXU0RMIFZhbGlkYXRpb24gYnV0dG9uIG9mIHRoZSBXU0RMIFNlbGVjdGlvbiBQYWdlKi8KLSAgcHJpdmF0ZSBCdXR0b24gc3RvcFZhbGlkYXRpb25CdXR0b25fOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1BDT05fQlVUVE9OX1NUT1BfVkFMSURBVElPTiA9ICJQQ09OMDAwNiI7Ci0gIAotICBwdWJsaWMgV1NETFNlbGVjdGlvbldpZGdldCgpCi0gIHsKLSAgICBwbHVnaW5JZF8gPSAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIjsKLSAgICB3c0ZpbHRlcl8gPSBuZXcgRmlsZUV4dGVuc2lvbkZpbHRlcihuZXcgU3RyaW5nW10geyJ3c2RsIiwgIndzaWwiLCAiaHRtbCJ9KTsKLSAgICB3ZWJTZXJ2aWNlc1BhcnNlciA9IFdTRExQYXJzZXJGYWN0b3J5LmdldFdTRExQYXJzZXIoKTsKLSAgICAKLSAgICBmaW5hbCBSdW5uYWJsZSBoYW5kbGVWYWxpZGF0aW9uTWVzc2FnZXMgPSBuZXcgUnVubmFibGUoKQotICAgIHsKLQkgIHB1YmxpYyB2b2lkIHJ1bigpIAotICAgICAgewotCQkgIG1zZ1ZpZXdlcl8uc2V0SW5wdXQodmFsaWRhdGVXU0RMSm9iXy5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKSk7Ci0JCSAgdXBkYXRlVmFsaWRhdGlvblN1bW1hcnkodmFsaWRhdGVXU0RMSm9iXy5nZXRWYWxpZGF0aW9uTWVzc2FnZVNldmVyaXR5KCkpOwotCQkgIHNldFZhbGlkYXRpb25JblByb2dyZXNzKGZhbHNlKTsKLSAgICAgIH0KLSAgICB9OwotICAgIAotICAgIGpvYkNoYW5nZUFkYXB0ZXJfID0gbmV3IEpvYkNoYW5nZUFkYXB0ZXIoKQotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIGRvbmUoSUpvYkNoYW5nZUV2ZW50IGV2ZW50KSAKLSAgICAgIHsgICAJCi0gICAgCSAgaWYgKG1zZ1ZpZXdlcl8hPSBudWxsICYmIG1zZ1ZpZXdlcl8uZ2V0Q29udGVudFByb3ZpZGVyKCkgIT0gbnVsbCkgewotICAgIAkJICBEaXNwbGF5LmdldERlZmF1bHQoKS5hc3luY0V4ZWMoIGhhbmRsZVZhbGlkYXRpb25NZXNzYWdlcyApOwotCQkgIH0KLSAgICAgIH0KLSAgICB9OwotICB9Ci0gIAotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyggQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIgKQotICB7Ci0gICAgVUlVdGlscyB1aVV0aWxzICA9IG5ldyBVSVV0aWxzKCBwbHVnaW5JZF8gKTsKLSAgICBwYXJlbnRfICAgICAgICAgID0gcGFyZW50OwotICAgIHN0YXR1c0xpc3RlbmVyXyAgPSBzdGF0dXNMaXN0ZW5lcjsKLQotCSAgcGFyZW50LnNldFRvb2xUaXBUZXh0KCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QQ09OX1BBR0UgKTsKLQkgIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAoIHBhcmVudCwgcGx1Z2luSWRfICsgIi4iICsgSU5GT1BPUF9QQ09OX1BBR0UgKTsKLSAgICAKLSAgICBDb21wb3NpdGUgd3NkbEdyb3VwID0gdWlVdGlscy5jcmVhdGVDb21wb3NpdGUoIHBhcmVudCwgMiwgNSwgMCApOwotICAgIAotICAgIExhYmVsIHdzTGFiZWwgPSBuZXcgTGFiZWwoIHdzZGxHcm91cCwgU1dULldSQVApOwotICAgIHdzTGFiZWwuc2V0VGV4dCggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1dTX1NFTEVDVElPTik7Ci0gICAgR3JpZERhdGEgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKTsKLSAgICBnZC5ob3Jpem9udGFsU3BhbiA9IDI7Ci0gICAgd3NMYWJlbC5zZXRMYXlvdXREYXRhKGdkKTsKLSAgICB3c0xhYmVsLnNldFRvb2xUaXBUZXh0KCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QQ09OX1RFWFRfV1MgKTsKLSAgICAKLSAgICB3ZWJTZXJ2aWNlVVJJID0gdWlVdGlscy5jcmVhdGVUZXh0KCB3c2RsR3JvdXAsIG51bGwsIAotICAgIAkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BDT05fVEVYVF9XUywgCi0gICAgCQkJCQkJSU5GT1BPUF9QQ09OX1RFWFRfV1NETCwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgKTsKLSAgICBtb2RpZnlMaXN0ZW5lcl8gPQotICAgICAgbmV3IE1vZGlmeUxpc3RlbmVyKCkKLSAgICAgIHsKLSAgICAgICAgcHVibGljIHZvaWQgbW9kaWZ5VGV4dChNb2RpZnlFdmVudCBldmVudCkKLSAgICAgICAgewotICAgICAgICAgIGhhbmRsZVdlYlNlcnZpY2VVUklNb2RpZnlFdmVudCgpOwotICAgICAgICB9Ci0gICAgICB9OwotICAgIAotICAgIHdlYlNlcnZpY2VVUkkuYWRkTW9kaWZ5TGlzdGVuZXIobW9kaWZ5TGlzdGVuZXJfKTsKLSAgICAKLS8vICAgIHdlYlNlcnZpY2VVUkkuYWRkTGlzdGVuZXIoIFNXVC5Nb2RpZnksIHN0YXR1c0xpc3RlbmVyICk7Ci0KLSAgICB3c0Jyb3dzZUJ1dHRvbl8gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oIHdzZGxHcm91cCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkJVVFRPTl9CUk9XU0UsIAotICAgIAkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUENPTl9CVVRUT05fQlJPV1NFX1dTLCAKLSAgICAJCQkJCQkJCUlORk9QT1BfUENPTl9CVVRUT05fQlJPV1NFX1dTREwgKTsKLSAgICB3c0Jyb3dzZUJ1dHRvbl8uYWRkU2VsZWN0aW9uTGlzdGVuZXIoCi0gICAgICBuZXcgU2VsZWN0aW9uTGlzdGVuZXIoKQotICAgICAgewotICAgICAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICBoYW5kbGVXU0RMQnV0dG9uKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgaGFuZGxlV1NETEJ1dHRvbigpOwotICAgICAgICB9IAotICAgICAgfSk7Ci0KLSAgICB0cmVlID0gbmV3IFdTRExTZWxlY3Rpb25UcmVlV2lkZ2V0KCk7Ci0gICAgdHJlZS5hZGRDb250cm9scyhwYXJlbnQsIHN0YXR1c0xpc3RlbmVyKTsKLSAgICB0cmVlLnNldFdlYlNlcnZpY2VzUGFyc2VyKHdlYlNlcnZpY2VzUGFyc2VyKTsgICAgCi0gICAgCi0gICAgbXNnVmlld2VyXyA9IG5ldyBWYWxpZGF0aW9uTWVzc2FnZVZpZXdlcldpZGdldCgpOwotICAgIG1zZ1ZpZXdlcl8uYWRkQ29udHJvbHMocGFyZW50LCBzdGF0dXNMaXN0ZW5lcik7Ci0gICAgCi0gICAgdmFsaWRhdGlvblN1bW1hcnlUZXh0XyA9IG5ldyBUZXh0KCBwYXJlbnQsIFNXVC5XUkFQKTsKLSAgICB2YWxpZGF0aW9uU3VtbWFyeVRleHRfLnNldEVkaXRhYmxlKGZhbHNlKTsKLSAgICBHcmlkRGF0YSBnZDEgPSBuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5GSUxMLCBmYWxzZSwgZmFsc2UpOwotICAgIHZhbGlkYXRpb25TdW1tYXJ5VGV4dF8uc2V0TGF5b3V0RGF0YShnZDEpOwotICAgIHZhbGlkYXRpb25TdW1tYXJ5VGV4dF8uc2V0VG9vbFRpcFRleHQoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1ZBTElEQVRFX1RFWFRfTUVTU0FHRV9TVU1NQVJZICk7Ci0gICAgCi0gICAgdmFsaWRhdGlvblN1bW1hcnlUZXh0Ml8gPSBuZXcgVGV4dCggcGFyZW50LCBTV1QuV1JBUCk7Ci0gICAgdmFsaWRhdGlvblN1bW1hcnlUZXh0Ml8uc2V0RWRpdGFibGUoZmFsc2UpOwotICAgIHZhbGlkYXRpb25TdW1tYXJ5VGV4dDJfLnNldExheW91dERhdGEoZ2QxKTsKLSAgICAKLSAgICBzdG9wVmFsaWRhdGlvbkJ1dHRvbl8gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24ocGFyZW50LCAKLSAgICAJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQlVUVE9OX1NUT1BfV1NETF9WQUxJREFUSU9OLCAKLSAgICAJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9TVE9QX1ZBTElEQVRJT05fQlVUVE9OLCAKLSAgICAJCQlJTkZPUE9QX1BDT05fQlVUVE9OX1NUT1BfVkFMSURBVElPTik7Ci0gICAgc2V0VmFsaWRhdGlvbkluUHJvZ3Jlc3MoZmFsc2UpOwotICAgIAotICAgIHN0b3BWYWxpZGF0aW9uQnV0dG9uXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcigKLSAgICAJCW5ldyBTZWxlY3Rpb25MaXN0ZW5lcigpCi0gICAgCQl7Ci0gICAgCQkJcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KQotICAgIAkJCXsKLSAgICAJCQkJaGFuZGxlU3RvcFZhbGlkYXRpb25CdXR0b24oKTsKLSAgICAJCQl9Ci0KLSAgICAJCQlwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBldmVudCkKLSAgICAJCQl7Ci0gICAgCQkJCWhhbmRsZVN0b3BWYWxpZGF0aW9uQnV0dG9uKCk7Ci0gICAgCQkJfSAKLSAgICAJCX0pOwotICAgIAotICAgIHNldE1lc3NhZ2VTdW1tYXJ5KCk7Ci0gICAgRGlhbG9nLmFwcGx5RGlhbG9nRm9udChwYXJlbnQpOyAgICAKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIHNldE1lc3NhZ2VTdW1tYXJ5KCkgewotCSAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NRVNTQUdFX1ZBTElEQVRFX05PX1dTREw7Ci0JICBQZXJzaXN0ZW50V1NETFZhbGlkYXRpb25Db250ZXh0IHdzZGxWYWxpZGF0aW9uQ29udGV4dCA9IFdTUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0V1NETFZhbGlkYXRpb25Db250ZXh0KCk7Ci0JICBTdHJpbmcgdmFsaWRhdGlvblNlbGVjdGlvbiA9IHdzZGxWYWxpZGF0aW9uQ29udGV4dC5nZXRQZXJzaXN0ZW50V1NETFZhbGlkYXRpb24oKTsKLQkgIGlmIChQZXJzaXN0ZW50V1NETFZhbGlkYXRpb25Db250ZXh0LlZBTElEQVRFX1JFTU9URV9XU0RMLmVxdWFscyh2YWxpZGF0aW9uU2VsZWN0aW9uKSkgewotCQkgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NRVNTQUdFX1ZBTElEQVRFX1JFTU9URV9XU0RMOwotCSAgfSBlbHNlIGlmIChQZXJzaXN0ZW50V1NETFZhbGlkYXRpb25Db250ZXh0LlZBTElEQVRFX0FMTF9XU0RMLmVxdWFscyh2YWxpZGF0aW9uU2VsZWN0aW9uKSkgewotCQkgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NRVNTQUdFX1ZBTElEQVRFX0FMTF9XU0RMOwotCSAgfQotCSAgdmFsaWRhdGlvblN1bW1hcnlUZXh0Xy5zZXRUZXh0KCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgKTsKLQkgIHZhbGlkYXRpb25TdW1tYXJ5VGV4dDJfLnNldFRleHQoIiAiKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZVdlYlNlcnZpY2VVUklNb2RpZnlFdmVudCgpCi0gIHsKLSAgICBpZiAod2ViU2VydmljZVVSSS5nZXRUZXh0KCkuaW5kZXhPZignOicpID4gMCkgewotICAgICAgdGltZXJfID0gVGltZXIubmV3SW5zdGFuY2UodGltZXJfLCBEaXNwbGF5LmdldEN1cnJlbnQoKSwgdGhpcyk7Ci0gICAgICB0aW1lcl8uc3RhcnRUaW1lcigpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICBoYW5kbGVXZWJTZXJ2aWNlVVJJKCk7Ci0gICAgc3RhdHVzTGlzdGVuZXJfLmhhbmRsZUV2ZW50KG51bGwpOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgaGFuZGxlV2ViU2VydmljZVVSSSgpIHsKLQkgIGhhbmRsZVdlYlNlcnZpY2VVUkkod2ViU2VydmljZVVSSS5nZXRUZXh0KCkpOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgaGFuZGxlV2ViU2VydmljZVVSSShTdHJpbmcgd3NVUkkpCi0gIHsgICAgCi0gICAgaWYgKHdzVVJJLmluZGV4T2YoJzonKSA8IDApCi0gICAgewotICAgICAgSUZpbGUgZmlsZSA9IHVyaTJJRmlsZSh3c1VSSSk7Ci0gICAgICBpZiAoZmlsZSAhPSBudWxsKQotICAgICAgICB3c1VSSSA9IGlGaWxlMlVSSShmaWxlKTsKLSAgICB9Ci0gICAgaWYgKHdzVVJJICE9IG51bGwgJiYgd3NVUkkuaW5kZXhPZignOicpID49IDAgJiYgd2ViU2VydmljZXNQYXJzZXIuZ2V0V2ViU2VydmljZUVudGl0eUJ5VVJJKHdzVVJJKSA9PSBudWxsKQotICAgIHsKLSAgICAgIFRpbWVkV1NETFNlbGVjdGlvbkNvbmRpdGlvbkNvbW1hbmQgY21kID0gbmV3IFRpbWVkV1NETFNlbGVjdGlvbkNvbmRpdGlvbkNvbW1hbmQoKTsKLSAgICAgIGNtZC5zZXRXZWJTZXJ2aWNlc1BhcnNlcih3ZWJTZXJ2aWNlc1BhcnNlcik7Ci0gICAgICBjbWQuc2V0V2ViU2VydmljZVVSSSh3c1VSSSk7Ci0gICAgICBjbWQuZXhlY3V0ZShudWxsLCBudWxsKTsKLSAgICB9Ci0gICAgV2ViU2VydmljZUVudGl0eSBlbnRpdHkgPSB3ZWJTZXJ2aWNlc1BhcnNlci5nZXRXZWJTZXJ2aWNlRW50aXR5QnlVUkkod3NVUkkpOwotICAgIGlmIChlbnRpdHkgIT0gbnVsbCAmJiBlbnRpdHkuZ2V0VHlwZSgpID09IFdlYlNlcnZpY2VFbnRpdHkuVFlQRV9XU0RMKQotICAgICAgdHJlZS5zZXRFbmFibGVkKGZhbHNlKTsKLSAgICBlbHNlCi0gICAgICB0cmVlLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgdHJlZS5zZXRXZWJTZXJ2aWNlVVJJKHdzVVJJKTsKLSAgICB0cmVlLnJlZnJlc2hUcmVlVmlld2VyKCk7ICAKLSAgICB3c2RsVVJJXyA9IHdzVVJJOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBydW4oKQotICB7Ci0gICAgaGFuZGxlV2ViU2VydmljZVVSSSgpOwotICAgIHN0YXR1c0xpc3RlbmVyXy5oYW5kbGVFdmVudChudWxsKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBoYW5kbGVXU0RMQnV0dG9uKCkKLSAgewotICAgIERpYWxvZ1Jlc291cmNlQnJvd3NlciBkaWFsb2cgPSBuZXcgRGlhbG9nUmVzb3VyY2VCcm93c2VyKCBwYXJlbnRfLmdldFNoZWxsKCksIG51bGwsIHdzRmlsdGVyXyk7Ci0gICAgZGlhbG9nLm9wZW4oKTsKLSAgICBJUmVzb3VyY2UgcmVzID0gZGlhbG9nLmdldEZpcnN0U2VsZWN0aW9uKCk7Ci0gICAgaWYoIHJlcyAhPSBudWxsICkKLSAgICB7Ci0gICAgCXdzZGxVUklfID0gcmVzLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKTsKLSAgICAJd2ViU2VydmljZVVSSS5zZXRUZXh0KCB3c2RsVVJJXyApOyAgICAJCi0gICAgfQotICAgIAkKLSAgICBzdGF0dXNMaXN0ZW5lcl8uaGFuZGxlRXZlbnQobnVsbCk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBzZXRWYWxpZGF0aW9uSW5Qcm9ncmVzcyhib29sZWFuIHZhbGlkYXRpbmcpIHsKLQkgIHN0b3BWYWxpZGF0aW9uQnV0dG9uXy5zZXRFbmFibGVkKHZhbGlkYXRpbmcpOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgaGFuZGxlU3RvcFZhbGlkYXRpb25CdXR0b24oKQotICB7Ci0JICBJSm9iTWFuYWdlciAgICBqb2JNYW5hZ2VyICAgICA9IFBsYXRmb3JtLmdldEpvYk1hbmFnZXIoKTsKLQkgIEpvYltdICAgICAgICAgIGpvYnMgICAgICAgICAgID0gam9iTWFuYWdlci5maW5kKCBWYWxpZGF0ZVdTRExKb2IuVkFMSURBVEVfV1NETF9KT0JfRkFNSUxZICk7Ci0JICBWYWxpZGF0ZVdTRExKb2IgZXhpc3RpbmdWYWxpZGF0ZVdTRExKb2IgPSBudWxsOwotCSAgCi0JICBpZiggam9icy5sZW5ndGggPiAwICkKLQkgIHsKLQkJICBmb3IgKGludCBpPTA7IGk8am9icy5sZW5ndGg7IGkrKykgewotCQkJICBleGlzdGluZ1ZhbGlkYXRlV1NETEpvYiA9IChWYWxpZGF0ZVdTRExKb2Ipam9ic1tpXTsKLQotCQkJICBpZiAoZXhpc3RpbmdWYWxpZGF0ZVdTRExKb2IuZ2V0U3RhdGUoKSAhPSBKb2IuTk9ORSkgeyAKLQkJCQkgIGV4aXN0aW5nVmFsaWRhdGVXU0RMSm9iLmNhbmNlbCgpOwotCQkJICB9Ci0JCSAgfQotCSAgfQotCSAgY2xlYXJWYWxpZGF0aW9uTWVzc2FnZXMoKTsKLQkgIHNldFZhbGlkYXRpb25JblByb2dyZXNzKGZhbHNlKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGNsZWFyVmFsaWRhdGlvbk1lc3NhZ2VzKCkgewotCSAgbXNnVmlld2VyXy5jbGVhcklucHV0KCk7Ci0JICB2YWxpZGF0aW9uU3VtbWFyeVRleHRfLnNldFRleHQoIiAiICk7Ci0JICB2YWxpZGF0aW9uU3VtbWFyeVRleHQyXy5zZXRUZXh0KCIgIik7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpCi0gIHsKLSAgICAvLyBUaW1lciB2YWxpZGF0aW9uCi0gICAgLyoKLSAgICAgKiBDb21tZW50aW5nIG91dCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gYmxvY2sgZmFzdCB0eXBlcnMgZnJvbSBoaXR0aW5nIE5leHQvRmluaXNoIAotICAgIGlmIChUaW1lci5pc1J1bm5pbmcoKSkKLSAgICAgIHJldHVybiBuZXcgU2ltcGxlU3RhdHVzKCIiLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9NU0dfTE9BRElOR19XRUJfU0VSVklDRV9VUkksIFN0YXR1cy5FUlJPUik7Ci0gICAgKi8KLQkKLSAgICAvLyBWYWxpZGF0ZSB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBXZWIgc2VydmljZSBVUkkKLSAgICAvLyBGb3IgZXhhbXBsZSwgaXMgaXQgcG9pbnRpbmcgdG8gYW4gZXhpc3RpbmcgcmVzb3VyY2UgaW4gdGhlIHdvcmtzcGFjZT8KLSAgICBTdHJpbmcgd3NQYXRoICA9IHdlYlNlcnZpY2VVUkkuZ2V0VGV4dCgpOwotICAgIGlmKCB3c1BhdGggPT0gbnVsbCB8fCB3c1BhdGgubGVuZ3RoKCkgPD0gMCApIHsKLSAgICAJY2xlYXJWYWxpZGF0aW9uTWVzc2FnZXMoKTsKLSAgICAJcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9NU0dfSU5WQUxJRF9XRUJfU0VSVklDRV9VUkkgKTsKLSAgICB9Ci0gICAgZWxzZSBpZiggd3NQYXRoLmluZGV4T2YoJzonKSA8IDAgKQotICAgIHsKLSAgICAJSVJlc291cmNlIHJlcyA9IFJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKHdzUGF0aCk7Ci0gICAgCWlmKCByZXMgPT0gbnVsbCApIHsKLSAgICAJCWNsZWFyVmFsaWRhdGlvbk1lc3NhZ2VzKCk7Ci0gICAgCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX01TR19OT19TVUNIX0ZJTEUsIG5ldyBPYmplY3RbXSB7d3NQYXRofSkgKTsKLSAgICAJfQotICAgIAllbHNlIGlmKCByZXMuZ2V0VHlwZSgpICE9IElSZXNvdXJjZS5GSUxFICkgewotICAgIAkJY2xlYXJWYWxpZGF0aW9uTWVzc2FnZXMoKTsKLSAgICAJCXJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfTVNHX0lOVkFMSURfV0VCX1NFUlZJQ0VfVVJJICk7Ci0gICAgCX0KLSAgICB9Ci0KLSAgICAKLSAgICAvLyBWYWxpZGF0ZSB0aGUgY29udGVudCBvZiB0aGUgV2ViIHNlcnZpY2UgVVJJCi0gICAgLy8gRm9yIGV4YW1wbGUsIGlzIHNlbGVjdGlvbiBhIFdTREwgVVJJPwotICAgIGlmICghVGltZXIuaXNSdW5uaW5nKHRpbWVyXykgJiYgdHJlZS5pc0VuYWJsZWQoKSkKLSAgICB7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IHRyZWUuZ2V0U3RhdHVzKCk7Ci0gICAgICBpZiAoc3RhdHVzICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGludCBzZXZlcml0eSA9IHN0YXR1cy5nZXRTZXZlcml0eSgpOwotICAgICAgICBpZiAoc2V2ZXJpdHkgPT0gU3RhdHVzLkVSUk9SIHx8IHNldmVyaXR5ID09IFN0YXR1cy5XQVJOSU5HKSB7Ci0gICAgICAgIAljbGVhclZhbGlkYXRpb25NZXNzYWdlcygpOwotICAgICAgICAJcmV0dXJuIHN0YXR1czsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgIAlpZiggd3NQYXRoLmluZGV4T2YoJzonKSA8IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIHdzZGxVUkkgPSBpRmlsZTJVUkkoKElGaWxlKVJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKHdzUGF0aCkpOwotICAgICAgICAgIGlmICh3ZWJTZXJ2aWNlc1BhcnNlci5nZXRXU0RMRGVmaW5pdGlvbih3c2RsVVJJKSA9PSBudWxsKSB7Ci0gICAgICAgIAkgIGNsZWFyVmFsaWRhdGlvbk1lc3NhZ2VzKCk7Ci0gICAgICAgIAkgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9NU0dfU0VMRUNUSU9OX01VU1RfQkVfV1NETCApOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAKLSAgICBpZiAoIVRpbWVyLmlzUnVubmluZyh0aW1lcl8pKSB7Ci0gICAgCVN0cmluZyB3c2RsVVJJMSA9IHdzUGF0aDsKLSAgICAJIGJvb2xlYW4gaXNSZW1vdGUgPSB0cnVlOwotICAgIAlpZiAodHJlZS5pc0VuYWJsZWQoKSkgeyAvLyBpcyB3c2lsCi0gICAgCQl3c2RsVVJJMSA9IHRyZWUuZ2V0V3NkbFVSSSgpOwotICAgIAkJaWYgKHdzZGxVUkkxLnN0YXJ0c1dpdGgoImZpbGU6IikgfHwgd3NkbFVSSTEuc3RhcnRzV2l0aCgicGxhdGZvcm06IikpCi0gICAgCQl7Ci0gICAgCQkJaXNSZW1vdGUgPSBmYWxzZTsKLSAgICAJCX0KLSAgICAJfSBlbHNlIHsKLSAgICAJCWlmICh3c1BhdGguaW5kZXhPZignOicpIDwgMCkKLSAgICAJCXsKLSAgICAJCQlpc1JlbW90ZSA9IGZhbHNlOwotICAgIAkJCXdzZGxVUkkxID0gaUZpbGUyVVJJKChJRmlsZSlSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZSh3c1BhdGgpKTsKLSAgICAJCX0KLSAgICAJCWVsc2UgaWYgKHdzUGF0aC5zdGFydHNXaXRoKCJmaWxlOiIpIHx8IHdzUGF0aC5zdGFydHNXaXRoKCJwbGF0Zm9ybToiKSkKLSAgICAJCXsKLSAgICAJCQlpc1JlbW90ZSA9IGZhbHNlOwotICAgIAkJfQotICAgIAl9Ci0gIAkgIAotICAgICAgc2V0TWVzc2FnZVN1bW1hcnkoKTsKLQkgIG1zZ1ZpZXdlcl8uY2xlYXJJbnB1dCgpOwotICAJICB2YWxpZGF0ZVdTREwod3NkbFVSSTEsIGlzUmVtb3RlKTsKLSAgICB9Ci0gICAgCi0KLSAgICAvLyBPSyBzdGF0dXMKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIHZhbGlkYXRlV1NETCAoU3RyaW5nIHdzZGxVUkksIGJvb2xlYW4gaXNSZW1vdGUpIHsKLQotCSAgU3RyaW5nIHZhbGlkYXRpb25TZWxlY3Rpb24gPSBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFdTRExWYWxpZGF0aW9uQ29udGV4dCgpLmdldFBlcnNpc3RlbnRXU0RMVmFsaWRhdGlvbigpOzsKLQkgIGlmICgoUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dC5WQUxJREFURV9BTExfV1NETC5lcXVhbHModmFsaWRhdGlvblNlbGVjdGlvbikpIHx8Ci0JCQkgIChQZXJzaXN0ZW50V1NETFZhbGlkYXRpb25Db250ZXh0LlZBTElEQVRFX1JFTU9URV9XU0RMLmVxdWFscyh2YWxpZGF0aW9uU2VsZWN0aW9uKSAmJiBpc1JlbW90ZSkpIHsKLQotCQkgIElKb2JNYW5hZ2VyICAgIGpvYk1hbmFnZXIgICAgID0gUGxhdGZvcm0uZ2V0Sm9iTWFuYWdlcigpOwotCQkgIEpvYltdICAgICAgICAgIGpvYnMgICAgICAgICAgID0gam9iTWFuYWdlci5maW5kKCBWYWxpZGF0ZVdTRExKb2IuVkFMSURBVEVfV1NETF9KT0JfRkFNSUxZICk7Ci0JCSAgVmFsaWRhdGVXU0RMSm9iIGV4aXN0aW5nVmFsaWRhdGVXU0RMSm9iID0gbnVsbDsKLQkJICAKLQkJICBib29sZWFuIHN0YXJ0V1NETFZhbGlkYXRpb24gPSB0cnVlOwotCQkgIHZhbGlkYXRpb25TdW1tYXJ5VGV4dF8uc2V0VGV4dCggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1FU1NBR0VfVkFMSURBVEVfSU5fUFJPR1JFU1MgKTsKLQkJICB2YWxpZGF0aW9uU3VtbWFyeVRleHQyXy5zZXRUZXh0KCIgIik7Ci0JCSAgaWYoIGpvYnMubGVuZ3RoID4gMCApCi0JCSAgewotCQkJICBmb3IgKGludCBpPTA7IGk8am9icy5sZW5ndGg7IGkrKykgewotCQkJCSAgZXhpc3RpbmdWYWxpZGF0ZVdTRExKb2IgPSAoVmFsaWRhdGVXU0RMSm9iKWpvYnNbaV07Ci0JCQkJICAKLQkJCQkgIGlmIChleGlzdGluZ1ZhbGlkYXRlV1NETEpvYi5nZXRTdGF0ZSgpICE9IEpvYi5OT05FKSB7IAotCQkJCQkgIC8vIEpvYiBydW5uaW5nIG9yIHRvIGJlIHJ1bgotCQkJCQkgIC8vIElmIHRoZSBqb2IgaXMgdmFsaWRhdGluZyB0aGUgc2FtZSB3c2RsVVJJLCBsZXQgaXQgZmluaXNoIHJ1bm5pbmcgYW5kIGlnbm9yZSB0aGlzIG9uZS4KLQkJCQkJICAvLyBJdCBpcyBub3QgZm9yIHRoZSBzYW1lIHdzZGxVUkksIGNhbmNlbCB0aGUgam9iIGFuZCBzY2hlZHVsZSB0aGlzIG9uZS4KLQotCQkJCQkgIGlmICghd3NkbFVSSS5lcXVhbHMoZXhpc3RpbmdWYWxpZGF0ZVdTRExKb2IuZ2V0V3NkbFVSSSgpKSkgewotCQkJCQkJICBleGlzdGluZ1ZhbGlkYXRlV1NETEpvYi5jYW5jZWwoKTsKLQkJCQkJCSAgc2V0VmFsaWRhdGlvbkluUHJvZ3Jlc3MoZmFsc2UpOwotCQkJCQkgIH0gZWxzZSB7CQkJCQkJICAKLQkJCQkJCSAgc3RhcnRXU0RMVmFsaWRhdGlvbiA9IGZhbHNlOwotCQkJCQkgIH0KLQkJCQkgIH0gCi0JCQkgIH0KLQkJICB9IAotCQkgIAotCQkgIGlmIChzdGFydFdTRExWYWxpZGF0aW9uKSB7Ci0JCQkgIHN0YXJ0V1NETFZhbGlkYXRpb25Kb2Iod3NkbFVSSSk7Ci0JCSAgfQotCSAgfQotCSAgcmV0dXJuOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgc3RhcnRXU0RMVmFsaWRhdGlvbkpvYiAoU3RyaW5nIHdzZGxVUkkpIHsKLQkgIHZhbGlkYXRlV1NETEpvYl8gPSBuZXcgVmFsaWRhdGVXU0RMSm9iKHdzZGxVUkkpOwotCSAgdmFsaWRhdGVXU0RMSm9iXy5hZGRKb2JDaGFuZ2VMaXN0ZW5lciggam9iQ2hhbmdlQWRhcHRlcl8gKTsKLQkgIHZhbGlkYXRlV1NETEpvYl8uc2NoZWR1bGUoKTsKLQkgIHNldFZhbGlkYXRpb25JblByb2dyZXNzKHRydWUpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCB1cGRhdGVWYWxpZGF0aW9uU3VtbWFyeShpbnQgbWVzc2FnZVNldmVyaXR5KQotICB7Ci0gIAkKLSAgCXN3aXRjaCAobWVzc2FnZVNldmVyaXR5KSB7Ci0gIAljYXNlIElWYWxpZGF0aW9uTWVzc2FnZS5TRVZfRVJST1I6Ci0JCXZhbGlkYXRpb25TdW1tYXJ5VGV4dF8uc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuRVJST1JfTUVTU0FHRVNfSU5fVkFMSURBVElPTik7Ci0JCXZhbGlkYXRpb25TdW1tYXJ5VGV4dDJfLnNldFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLldBUk5JTkdfSUZfQ09OVElOVUUpOwotCQlicmVhazsKLQljYXNlIElWYWxpZGF0aW9uTWVzc2FnZS5TRVZfV0FSTklORzoKLQkJdmFsaWRhdGlvblN1bW1hcnlUZXh0Xy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5XQVJOSU5HX01FU1NBR0VTX0lOX1ZBTElEQVRJT04pOwotCQl2YWxpZGF0aW9uU3VtbWFyeVRleHQyXy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5XQVJOSU5HX0lGX0NPTlRJTlVFKTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJdmFsaWRhdGlvblN1bW1hcnlUZXh0Xy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5WQUxJREFUSU9OX0NPTVBMRVRFRCk7Ci0JCXZhbGlkYXRpb25TdW1tYXJ5VGV4dDJfLnNldFRleHQoIiAiKTsKLQkJYnJlYWs7Ci0JfQotICB9Ci0gIAotICBwcml2YXRlIElGaWxlIHVyaTJJRmlsZShTdHJpbmcgdXJpKQotICB7Ci0gICAgSVJlc291cmNlIHJlcyA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZmluZE1lbWJlcih1cmkpOwotICAgIAotICAgIGlmIChyZXMgaW5zdGFuY2VvZiBJRmlsZSkKLSAgICAgIHJldHVybiAoSUZpbGUpcmVzOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBpRmlsZTJVUkkoSUZpbGUgZmlsZSkKLSAgewotCVN0cmluZyB1cmkgPSBudWxsOwotCUlJRmlsZTJVcmlDb252ZXJ0ZXIgY29udmVydGVyID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRJRmlsZTJVcmlDb252ZXJ0ZXIoKTsKLQlib29sZWFuIGFsbG93QmFzZUNvbnZlcnNpb25PbkZhaWx1cmUgPSB0cnVlOwkKLQlpZiAoY29udmVydGVyICE9IG51bGwpCi0JewotCQl1cmkgPSBjb252ZXJ0ZXIuY29udmVydChmaWxlKTsKLQkJaWYgKHVyaSA9PSBudWxsKQotCQkJYWxsb3dCYXNlQ29udmVyc2lvbk9uRmFpbHVyZSA9IGNvbnZlcnRlci5hbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlKCk7Ci0JfQotCWlmICh1cmkgPT0gbnVsbCAmJiBhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlKQotCXsKLSAgCSAgRmlsZSBmID0gZmlsZS5nZXRMb2NhdGlvbigpLnRvRmlsZSgpOwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIHVyaSA9IGYudG9VUkwoKS50b1N0cmluZygpOwotICAgICAgfQotICAgICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBtdXJsZSkKLSAgICAgIHsKLSAgICAJdXJpID0gZi50b1N0cmluZygpOwotICAgICAgfQotCX0KLSAgICByZXR1cm4gdXJpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKQotICB7Ci0gICAgaWYgKGluaXRpYWxTZWxlY3Rpb24gIT0gbnVsbCAmJiAhaW5pdGlhbFNlbGVjdGlvbi5pc0VtcHR5KCkpCi0gICAgewotICAgICAgT2JqZWN0IG9iamVjdCA9IGluaXRpYWxTZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBTdHJpbmcgd3NkbFVSSSA9IHRvV3NkbFVSSShvYmplY3QpOyAgCi0gICAgICB3c2RsVVJJXyA9IHdzZGxVUkk7Ci0gICAgICAKLSAgICAgIGlmICh3c2RsVVJJICE9IG51bGwgJiYgd2ViU2VydmljZVVSSSAhPSBudWxsKQotICAgICAgewotICAgICAgICBoYW5kbGVXZWJTZXJ2aWNlVVJJKHdzZGxVUkkpOwotICAgIAkKLSAgICAgICAgd2ViU2VydmljZVVSSS5yZW1vdmVNb2RpZnlMaXN0ZW5lcihtb2RpZnlMaXN0ZW5lcl8pOwotICAgICAgICB3ZWJTZXJ2aWNlVVJJLnNldFRleHQoZ2V0T2JqZWN0U2VsZWN0aW9uRGlzcGxheWFibGVTdHJpbmcoKSk7ICAgICAgIAotICAgICAgICB3ZWJTZXJ2aWNlVVJJLmFkZE1vZGlmeUxpc3RlbmVyKG1vZGlmeUxpc3RlbmVyXyk7Ci0gICAgICB9Ci0gICAgfSAgCi0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIHRvV3NkbFVSSShPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFNlcnZpY2VJbXBsKQotICAgICAgcmV0dXJuIEoyRUVBY3Rpb25BZGFwdGVyRmFjdG9yeS5nZXRXU0RMVVJJKChTZXJ2aWNlSW1wbClvYmplY3QpOwotICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFdTRExSZXNvdXJjZUltcGwpCi0gICAgICByZXR1cm4gSjJFRUFjdGlvbkFkYXB0ZXJGYWN0b3J5LmdldFdTRExVUkkoKFdTRExSZXNvdXJjZUltcGwpb2JqZWN0KTsKLSAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTZXJ2aWNlUmVmKQotICAgICAgcmV0dXJuIEoyRUVBY3Rpb25BZGFwdGVyRmFjdG9yeS5nZXRXU0RMVVJJKChTZXJ2aWNlUmVmKW9iamVjdCk7Ci0gICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgSUZpbGUpCi0gICAgICByZXR1cm4gKChJRmlsZSlvYmplY3QpLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKTsKLSAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTdHJpbmcpCi0gICAgICByZXR1cm4gKFN0cmluZylvYmplY3Q7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RydWN0dXJlZFNlbGVjdGlvbiBnZXRPYmplY3RTZWxlY3Rpb24oKQotICB7Ci0JICBTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNzOyAKLQkgIGlmICh0cmVlICE9IG51bGwgJiYgdHJlZS5nZXRXc2RsVVJJKCkgIT0gbnVsbCkKLQkJICBzcyA9IG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKHRyZWUuZ2V0V3NkbFVSSSgpKTsKLQkgIGVsc2UKLQkJICBzcyA9IG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKHdzZGxVUklfKTsKLQlyZXR1cm4gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oIAotICAgICAgICAgICAgICAgbmV3IFdTRExTZWxlY3Rpb25XcmFwcGVyKCB3ZWJTZXJ2aWNlc1BhcnNlciwgc3MpKTsKLSAgfQotICAKLSAgcHVibGljIFdlYlNlcnZpY2VzUGFyc2VyIGdldFdlYlNlcnZpY2VzUGFyc2VyKCkKLSAgewotICAgIHJldHVybiB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgfQotICAKLSAgcHVibGljIElTdGF0dXMgdmFsaWRhdGVTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gb2JqZWN0U2VsZWN0aW9uKQotICB7Ci0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRQcm9qZWN0KCkKLSAgewotCVN0cmluZyB3c2RsVVJJOwotCi0JaWYgKHRyZWUgIT0gbnVsbCkKLSAgICAgICB3c2RsVVJJID0gdHJlZS5nZXRXc2RsVVJJKCk7Ci0JZWxzZQotCQl3c2RsVVJJID0gd3NkbFVSSV87Ci0JCi0gICAgaWYgKHdzZGxVUkkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJUHJvamVjdCBwID0gZ2V0UHJvamVjdEZyb21VUkkod3NkbFVSSSk7Ci0gICAgICBpZiAocCE9bnVsbCAmJiBwLmV4aXN0cygpKQotICAgICAgICByZXR1cm4gcDsKLSAgICAgIAotICAgICAgU3RyaW5nIHdzUmVsUGF0aCA9IHdzZGxVUklfOwotICAgICAgSVJlc291cmNlIHdzUmVzID0gUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2Uod3NSZWxQYXRoKTsKLSAgICAgIGlmICh3c1JlcyE9bnVsbCAmJiB3c1JlcyBpbnN0YW5jZW9mIElGaWxlKQotICAgICAgewotICAgICAgICBJUHJvamVjdCBwMiA9ICgoSUZpbGUpd3NSZXMpLmdldFByb2plY3QoKTsKLSAgICAgICAgcmV0dXJuIHAyOwotICAgICAgfQotICAgICAgCi0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldENvbXBvbmVudE5hbWUoKQotICB7Ci0JIAotICAgIFN0cmluZyB3c2RsVVJJOwotICAgIGlmICh0cmVlICE9IG51bGwpCi0gICAgCXdzZGxVUkkgPSB0cmVlLmdldFdzZGxVUkkoKTsKLSAgICBlbHNlIAotICAgIAl3c2RsVVJJID0gd3NkbFVSSV87Ci0gICAgCi0gICAgaWYgKHdzZGxVUkkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgY25hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVVSSSh3c2RsVVJJKTsKLSAgICAgIGlmIChjbmFtZSE9bnVsbCAmJiBjbmFtZS5sZW5ndGgoKT4wKQotICAgICAgICByZXR1cm4gY25hbWU7Ci0gICAgICAKLSAgICAgIFN0cmluZyB3c1JlbFBhdGggPSB3c2RsVVJJXzsKLSAgICAgIElSZXNvdXJjZSB3c1JlcyA9IFJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKHdzUmVsUGF0aCk7Ci0gICAgICBpZiAod3NSZXMhPW51bGwgJiYgd3NSZXMgaW5zdGFuY2VvZiBJRmlsZSkKLSAgICAgIHsKLSAgICAgICAgSVZpcnR1YWxDb21wb25lbnQgY29tcCA9IFJlc291cmNlVXRpbHMuZ2V0Q29tcG9uZW50T2Yod3NSZXMpOwotICAgICAgICBpZiAoY29tcCE9bnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBjb21wLmdldE5hbWUoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwcml2YXRlIElQcm9qZWN0IGdldFByb2plY3RGcm9tVVJJKFN0cmluZyB1cmkpCi0gIHsKLSAgICBJV29ya3NwYWNlUm9vdCByb290ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLSAgICBTdHJpbmcgd2tzcGNSb290TG9jID0gcm9vdC5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0gICAgaW50IGlkeCA9IHVyaS5pbmRleE9mKHdrc3BjUm9vdExvYyk7Ci0gICAgaWYgKGlkeCAhPSAtMSkgCi0gICAgewotICAgICAgU3RyaW5nIHJlbFBhdGggPSB1cmkuc3Vic3RyaW5nKHdrc3BjUm9vdExvYy5sZW5ndGgoKStpZHgpOwotICAgICAgSVJlc291cmNlIHJlcyA9IHJvb3QuZmluZE1lbWJlcihuZXcgUGF0aChyZWxQYXRoKSk7Ci0gICAgICBpZiAocmVzIGluc3RhbmNlb2YgSUZpbGUpCi0gICAgICB7Ci0gICAgICAgIElQcm9qZWN0IHAgPSAoKElGaWxlKXJlcykuZ2V0UHJvamVjdCgpOwotICAgICAgICByZXR1cm4gcDsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldENvbXBvbmVudE5hbWVGcm9tVVJJKFN0cmluZyB1cmkpCi0gIHsKLSAgICBJV29ya3NwYWNlUm9vdCByb290ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLSAgICBTdHJpbmcgd2tzcGNSb290TG9jID0gcm9vdC5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0gICAgaW50IGlkeCA9IHVyaS5pbmRleE9mKHdrc3BjUm9vdExvYyk7Ci0gICAgaWYgKGlkeCAhPSAtMSkgCi0gICAgewotICAgICAgU3RyaW5nIHJlbFBhdGggPSB1cmkuc3Vic3RyaW5nKHdrc3BjUm9vdExvYy5sZW5ndGgoKStpZHgpOwotICAgICAgSVJlc291cmNlIHJlcyA9IHJvb3QuZmluZE1lbWJlcihuZXcgUGF0aChyZWxQYXRoKSk7Ci0gICAgICBpZiAocmVzIGluc3RhbmNlb2YgSUZpbGUpCi0gICAgICB7Ci0gICAgICAgIElWaXJ0dWFsQ29tcG9uZW50IGNvbXAgPSBSZXNvdXJjZVV0aWxzLmdldENvbXBvbmVudE9mKHJlcyk7Ci0gICAgICAgIGlmIChjb21wIT1udWxsKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIGNvbXAuZ2V0TmFtZSgpOwotICAgICAgICB9ICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7ICAgIAotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldE9iamVjdFNlbGVjdGlvbkRpc3BsYXlhYmxlU3RyaW5nKCkgCi0gIHsJCi0gICAgaWYgKHRyZWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gVW5pdmVyc2FsUGF0aFRyYW5zZm9ybWVyLnRvUGF0aCh0cmVlLmdldFdzZGxVUkkoKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0JICAgIHJldHVybiBVbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXIudG9QYXRoKHdzZGxVUklfKTsKLSAgICB9Ci0JfQotICAKLSAgcHVibGljIFBvaW50IGdldFdpZGdldFNpemUoKSB7CQotCSAgcmV0dXJuIG5ldyBQb2ludCggNTgwLCA1ODApOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlKFN0cmluZyBzKSB7Ci0JICBTdHJpbmcgd3NVUkkgPSBzOwotCSAgICAKLQkgICAgaWYgKHdzVVJJLmluZGV4T2YoJzonKSA8IDApCi0JICAgIHsKLQkgICAgICBJRmlsZSBmaWxlID0gdXJpMklGaWxlKHdzVVJJKTsKLQkgICAgICBpZiAoZmlsZSAhPSBudWxsKQotCSAgICAgICAgd3NVUkkgPSBpRmlsZTJVUkkoZmlsZSk7Ci0JICAgIH0KLQkgICAgaWYgKHdzVVJJICE9IG51bGwgJiYgd3NVUkkuaW5kZXhPZignOicpID49IDAgJiYgd2ViU2VydmljZXNQYXJzZXIuZ2V0V2ViU2VydmljZUVudGl0eUJ5VVJJKHdzVVJJKSA9PSBudWxsKQotCSAgICB7Ci0JICAgICAgVGltZWRXU0RMU2VsZWN0aW9uQ29uZGl0aW9uQ29tbWFuZCBjbWQgPSBuZXcgVGltZWRXU0RMU2VsZWN0aW9uQ29uZGl0aW9uQ29tbWFuZCgpOwotCSAgICAgIGNtZC5zZXRXZWJTZXJ2aWNlc1BhcnNlcih3ZWJTZXJ2aWNlc1BhcnNlcik7Ci0JICAgICAgY21kLnNldFdlYlNlcnZpY2VVUkkod3NVUkkpOwotCSAgICAgIGNtZC5leGVjdXRlKG51bGwsIG51bGwpOwotCSAgICB9Ci0JCQotCSAgICAvLyBwcmltZSB3aWRnZXQgYmFzZWQgb24gdGhlIHN0cmluZwotCSAgICB3c2RsVVJJXyA9IHdzVVJJOwotCSAgICBpZiAodHJlZSAhPSBudWxsKQotCSAgICAJdHJlZS5zZXRXZWJTZXJ2aWNlVVJJKHdzVVJJKTsKLQkgICAgCi0JICAgIFdlYlNlcnZpY2VFbnRpdHkgZW50aXR5ID0gd2ViU2VydmljZXNQYXJzZXIuZ2V0V2ViU2VydmljZUVudGl0eUJ5VVJJKHdzVVJJKTsKLQkgICAgaWYgKGVudGl0eSAhPSBudWxsICYmIGVudGl0eS5nZXRUeXBlKCkgPT0gV2ViU2VydmljZUVudGl0eS5UWVBFX1dTREwpCi0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0JICAgIGVsc2UKLQkgICAgCXJldHVybiBmYWxzZTsKLQkgICAgCi0gIH0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L1dTRExTZWxlY3Rpb25XcmFwcGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvb2JqZWN0L1dTRExTZWxlY3Rpb25XcmFwcGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwYTZjMTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL29iamVjdC9XU0RMU2VsZWN0aW9uV3JhcHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgYSB2ZXJ5IHNpbXBsZSB3cmFwcGVyIHRoYXQgYmluZHMgYSBXU0RMIHBhcnNlciB3aXRoCi0gKiBhIHdzZGxTZWxlY3Rpb24gb2JqZWN0LgotICovCi1wdWJsaWMgY2xhc3MgV1NETFNlbGVjdGlvbldyYXBwZXIgCi17Ci0gIHB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlciAgICBwYXJzZXI7Ci0gIHB1YmxpYyBJU3RydWN0dXJlZFNlbGVjdGlvbiB3c2RsU2VsZWN0aW9uOwotICAKLSAgcHVibGljIFdTRExTZWxlY3Rpb25XcmFwcGVyKCBXZWJTZXJ2aWNlc1BhcnNlciAgICBwYXJzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uICkKLSAgewotICAgIHRoaXMucGFyc2VyICAgICAgICA9IHBhcnNlcjsKLSAgICB0aGlzLndzZGxTZWxlY3Rpb24gPSBzZWxlY3Rpb247Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9ydW50aW1lL0NsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3J1bnRpbWUvQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ZmU5ZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3J1bnRpbWUvQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBJQk0gQ29ycG9yYXRpb24uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiAyMDA3MDUyMyAgIDE1ODIzMCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAzMjYgICAxNzE3MDUgdHJ1bmdoYUBjYS5pYm0uY29tIC0gVHJ1bmcsIGltcHJvdmUgQW50VGFzayBlcnJvcnMgcmVwb3J0Ci0gKiAyMDA4MDMyNiAgIDIyMTM2NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODA0MDIgICAyMjUwMzIgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWsKLSAqIDIwMDgwNDE1ICAgMjI3MTUyIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBOZWVkIGEgd2F5IHRvIHNwZWNpZnkgYSBiYWNrdXAgV2ViIHNlcnZpY2UgcnVudGltZQotICogMjAwODA0MjEgICAyMjgwNTQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIE5QRSBpbiBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQKLSAqIDIwMDgwNTI3ICAgMjM0MjI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDczMSAgIDI0MjcyMSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnJ1bnRpbWU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LnNlcnZlci5jb3JlLkZhY2V0VXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TZXJ2ZXJVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0TWF0Y2hlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5SZXF1aXJlZEZhY2V0VmVyc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uRGVmYXVsdGluZ1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uVmFsaWRhdGlvblV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRTZXJ2ZXJSdW50aW1lQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucHJlZmVyZW5jZXMuUHJvamVjdFRvcG9sb2d5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5DbGllbnRSdW50aW1lRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5GYWNldE1hdGNoQ2FjaGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuUnVudGltZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5XU1VJUGx1Z2luTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uLlNlbGVjdGlvbkxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uLlNlbGVjdGlvbkxpc3RDaG9pY2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSUZhY2V0ZWRQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLlByb2plY3RGYWNldHNNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVJ1bnRpbWVUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZUNsaWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZVJ1bnRpbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuU2ltcGxlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlQ2xpZW50SW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlU2NlbmFyaW87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVN0YXRlOwotCi1wdWJsaWMgY2xhc3MgQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsgICAKLSAgcHJpdmF0ZSBTdHJpbmcgREVGQVVMVF9DTElFTlRfRUFSX1BST0pFQ1RfRVhUID0gIkVBUiI7Ci0gIHByaXZhdGUgVHlwZVJ1bnRpbWVTZXJ2ZXIgICAgY2xpZW50SWRzXzsKLSAgcHJpdmF0ZSBib29sZWFuIGNsaWVudElkc0ZpeGVkXyA9IGZhbHNlOwotICBwcml2YXRlIFN0cmluZyBjbGllbnRSdW50aW1lSWRfOwotICBwcml2YXRlIFN0cmluZyBjbGllbnRQcm9qZWN0TmFtZV87Ci0gIHByaXZhdGUgU3RyaW5nIGNsaWVudEVhclByb2plY3ROYW1lXzsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gY2xpZW50TmVlZEVBUl8gPSB0cnVlOwotICBwcml2YXRlIFN0cmluZyBjbGllbnRDb21wb25lbnRUeXBlXzsKLSAgcHJpdmF0ZSBGYWNldE1hdGNoZXIgY2xpZW50RmFjZXRNYXRjaGVyXzsKLSAgCi0gIHByaXZhdGUgSUNvbnRleHQgICAgICAgICAgY29udGV4dF87Ci0gIHByaXZhdGUgSVNlbGVjdGlvbiAgICAgICAgc2VsZWN0aW9uXzsKLSAgcHJpdmF0ZSBJV2ViU2VydmljZUNsaWVudCB3ZWJTZXJ2aWNlQ2xpZW50XzsKLSAgcHJpdmF0ZSBSZXNvdXJjZUNvbnRleHQgICByZXNvdXJjZUNvbnRleHRfOwotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgIHRlc3RfOwotICAKLSAgLy9BIG5vdGUgb24gaW5pdGlhbCBwcm9qZWN0cyAuLi4KLSAgLy9UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGNsaWVudEluaXRpYWxQcm9qZWN0XyBhbmQgaW5pdGlhbFByb2plY3RfIGlzIHRoYXQKLSAgLy9jbGllbnRJbml0aWFsUHJvamVjdF8gY29tZXMgZnJvbSB0aGUgT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZCB3aGlsZSBpbml0aWFsUHJvamVjdF8KLSAgLy9jb21lcyBmcm9tIFNlbGVjdGlvbkNvbW1hbmQgKGkuZS4gaXQgaXMgdGhlIHByb2plY3QgY29udGFpbmluZyB0aGUgdGhpbmcgdGhhdCB3YXMgc2VsZWN0ZWQgYmVmb3JlIAotICAvL3RoZSB3aXphcmQgd2FzIGxhdW5jaGVkKS4gSW4gdGhlIGRlZmF1bHRpbmcgYWxnb3JpdGhtLCBjbGllbnRJbml0aWFsUHJvamVjdF8gd2lsbCAKLSAgLy9iZSBnaXZlbiBmaXJzdCBwcmlvcml0eS4gSWYsIGhvd2V2ZXIsIGl0IGlzIGRlZW1lZCB0aGF0IGNsaWVudEluaXRpYWxQcm9qZWN0XyBpcyBub3QgYSB2YWxpZCBwcm9qZWN0IAotICAvL2JlY2F1c2UgaXQgY29udGFpbnMgdGhlIEoyRUUgV2ViIHNlcnZpY2UgZm9yIHdoaWNoIHdlIGFyZSB0cnlpbmcgdG8gY3JlYXRlIGEgY2xpZW50LCBpbml0aWFsUHJvamVjdF8KLSAgLy93aWxsIGJlIGdpdmVuIHNlY29uZCBwcmlvcml0eS4KLSAgcHJpdmF0ZSBJUHJvamVjdCBpbml0aWFsUHJvamVjdF87IC8vVGhpcyBpcyB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24gcHJpb3IgdG8gdGhlIHdpemFyZCBiZWluZyBsYXVuY2hlZC4KLSAgcHJpdmF0ZSBJUHJvamVjdCBjbGllbnRJbml0aWFsUHJvamVjdF87IC8vVGhpcyBpcyB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBvYmplY3Qgc2VsZWN0aW9uIGZyb20gcGFnZSAyLgotICBwcml2YXRlIFN0cmluZyB3c2RsVVJJXzsKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciBwYXJzZXJfOyAgCi0KLSAgcHVibGljIENsaWVudFJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRUeXBlUnVudGltZVNlcnZlciggVHlwZVJ1bnRpbWVTZXJ2ZXIgaWRzICkKLSAgewotICAgIGNsaWVudElkc18gPSBpZHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBUeXBlUnVudGltZVNlcnZlciBnZXRDbGllbnRUeXBlUnVudGltZVNlcnZlcigpCi0gIHsKLSAgICByZXR1cm4gY2xpZW50SWRzXzsgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudElkc0ZpeGVkKGJvb2xlYW4gYikKLSAgewotICAgIGNsaWVudElkc0ZpeGVkXyA9IGI7ICAKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDbGllbnRSdW50aW1lSWQoKQotICB7Ci0gICAgcmV0dXJuIGNsaWVudFJ1bnRpbWVJZF87Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50UHJvamVjdE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGNsaWVudFByb2plY3ROYW1lXzsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDbGllbnRFYXJQcm9qZWN0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gY2xpZW50RWFyUHJvamVjdE5hbWVfOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRFYXJQcm9qZWN0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIGNsaWVudEVhclByb2plY3ROYW1lXyA9IG5hbWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50Q29tcG9uZW50VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gIGNsaWVudENvbXBvbmVudFR5cGVfOwotICB9Ci0gIAotICBwdWJsaWMgSVdlYlNlcnZpY2VDbGllbnQgZ2V0V2ViU2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gd2ViU2VydmljZUNsaWVudF87ICAKLSAgfQotICAgIAotICBwdWJsaWMgSUNvbnRleHQgZ2V0Q29udGV4dCgpCi0gIHsKLSAgICByZXR1cm4gY29udGV4dF87Ci0gIH0gIAotICAKLSAgcHVibGljIElTZWxlY3Rpb24gZ2V0U2VsZWN0aW9uKCkKLSAgewotICAgIHJldHVybiBzZWxlY3Rpb25fOyAgICAKLSAgfQotICAKLSAgLyoqCi0gICAqIERlZmF1bHRzIHRoZSBmb2xsb3dpbmcgYml0cyBvZiBpbmZvcm1hdGlvbiBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgotICAgKiBjbGllbnRSdW50aW1lSWRfIDogdGhlIGNsaWVudFJ1bnRpbWVJZC4gTXVzdCBiZSBkZWZhdWx0ZWQgdG8gbm9uLWVtcHR5IFN0cmluZy4KLSAgICogY2xpZW50SWRzXy5ydW50aW1lSWRfOiB0aGUgV2ViIHNlcnZpY2UgcnVudGltZSBpZC4gTXVzdCBiZSBkZWZhdWx0ZWQgdG8gbm9uLWVtcHR5IFN0cmluZy4KLSAgICogY2xpZW50UHJvamVjdE5hbWVfIDogdGhlIG5hbWUgb2YgdGhlIGNsaWVudCBwcm9qZWN0LiBNdXN0IGJlIG5vbi1lbXB0eS4gTWF5IG9yIG1heSBub3QgZXhpc3QuCi0gICAqIGNsaWVudENvbXBvbmVudFR5cGVfOiB0aGUgaWQgb2YgdGhlIGNsaWVudCBwcm9qZWN0IHRlbXBsYXRlLiBNdXN0IGJlIGVtcHR5IGlmIHRoZSBjbGllbnQKLSAgICogICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGV4aXN0cy4gTXVzdCBiZSBub24tZW1wdHkgb2YgdGhlIGNsaWVudCBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LgotICAgKiBjbGllbnRJZHNfLnNlcnZlcklkXzogdGhlIHNlcnZlciB0eXBlIGlkLiBNYXkgYmUgYW4gZW1wdHkgU3RyaW5nIGlmIHRoZSBkZWZhdWx0ZWQgV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiAgICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IHJlcXVpcmUgYSBzZXJ2ZXIuCi0gICAqIGNsaWVudElkc18uc2VydmVySW5zdGFuY2VJZF86IHRoZSBzZXJ2ZXIgaWQuIE1heSBiZSBudWxsIG9yIGFuIGVtcHR5IFN0cmluZy4KLSAgICogY2xpZW50TmVlZEVBUl86IHRydWUgaWYgYW4gRUFSIGlzIG5lZWRlZC4gRmFsc2Ugb3RoZXJ3aXNlLgotICAgKiBjbGllbnRFYXJQcm9qZWN0TmFtZV86IHRoZSBjbGllbnQgRUFSIHByb2plY3QuIE11c3QgYmUgZW1wdHkgaWYgdGhlIGNsaWVudE5lZWRFQVJfIGlzIGZhbHNlLgotICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIG5vbi1lbXB0eSBpZiB0aGUgY2xpZW50TmVlZEVBUl8gaXMgdHJ1ZS4KLSAgICogd2ViU2VydmljZUNsaWVudF8gOiB0aGUgSVdlYlNlcnZpY2VDbGllbnQgYmFzZWQgb24gdGhlIGNhbGN1bGF0ZWQgZGVmYXVsdHMuIE11c3QgYmUgbm9uLW51bGwgZm9yICJOZXh0IgotICAgKiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbiB0byBiZSBlbmFibGVkIG9uIHRoZSBwYWdlIGZvbGxvd2luZyB0aGlzIGNvbW1hbmQuCi0gICAqIGNvbnRleHRfIDogYW4gSUNvbnRleHQuIE11c3QgYmUgbm9uLW51bGwgZm9yICJOZXh0IiBidXR0b24gdG8gYmUgZW5hYmxlZCBvbiB0aGUgcGFnZSBmb2xsb3dpbmcgdGhpcyBjb21tYW5kLiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICovICAKLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlKQotICB7Ci0KLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIAotICAgICAgLy8qKlN0ZXAgMSoqIERlZmF1bHQgdGhlIFdlYiBzZXJ2aWNlIHJ1bnRpbWUuCi0gICAgCQotICAgICAgLy9jbGllbnRJZHNGaXhlZF8gaXMgc2V0IHRvIHRydWUgZm9yIHRoZSBBbnQgc2NlbmFyaW8uIEl0J3MgYWx3YXlzIGZhbHNlIGZvciB0aGUgd2l6YXJkCi0gICAgICAvL3NjZW5hcmlvcy4KLSAgICAgIGlmIChjbGllbnRJZHNGaXhlZF8gJiYgKGNsaWVudFByb2plY3ROYW1lXyA9PSBudWxsKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2V0IHRoZSBjbGllbnRSdW50aW1lIGJhc2VkIG9uIHRoZSBydW50aW1lLCBzZXJ2ZXIsIGFuZCBpbml0aWFsCi0gICAgICAgIC8vIHNlbGVjdGlvbi4KLSAgICAgICAgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0IGRydCA9IGdldERlZmF1bHRDbGllbnRSdW50aW1lRm9yRml4ZWRSdW50aW1lQW5kU2VydmVyKGNsaWVudEluaXRpYWxQcm9qZWN0XywgY2xpZW50SWRzXy5nZXRTZXJ2ZXJJZCgpKTsKLSAgICAgICAgY2xpZW50RmFjZXRNYXRjaGVyXyA9IGRydC5nZXRGYWNldE1hdGNoZXIoKTsKLSAgICAgICAgY2xpZW50UHJvamVjdE5hbWVfID0gZHJ0LmdldFByb2plY3ROYW1lKCk7Ci0gICAgICAgIGNsaWVudFJ1bnRpbWVJZF8gPSBkcnQuZ2V0UnVudGltZUlkKCk7ICAgICAgICAKLSAgICAgIH0gCi0gICAgICBlbHNlICAgICAgCi0gICAgICB7CQotICAgICAgICBWYWxpZGF0aW9uVXRpbHMgdnUgPSBuZXcgVmFsaWRhdGlvblV0aWxzKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBTZXQgdGhlIHJ1bnRpbWUgYmFzZWQgb24gdGhlIHByb2plY3QgY29udGFpbmluZyB0aGUgb2JqZWN0IHNlbGVjdGlvbi9pbml0aWFsIHNlbGVjdGlvbi4KLSAgICAgICAgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0IGRydCA9IG51bGw7Ci0gICAgICAgIAotICAgICAgICBpZiAoIXZ1LmlzUHJvamVjdFNlcnZpY2VQcm9qZWN0KGNsaWVudEluaXRpYWxQcm9qZWN0Xywgd3NkbFVSSV8sIHBhcnNlcl8pICYmICFjbGllbnRJZHNGaXhlZF8pCi0gICAgICAgIHsKLSAgICAgICAgICAvL0lmIGNsaWVudEludGlhbFByb2plY3RfIGRvZXMgbm90IGNvbnRhaW4gdGhlIEoyRUUgV2ViIHNlcnZpY2UsIGNob29zZSBhIGNsaWVudFJ1bnRpbWUgYmFzZWQgb24gaXQuCi0gICAgICAgICAgZHJ0ID0gZ2V0RGVmYXVsdFJ1bnRpbWUoY2xpZW50SW5pdGlhbFByb2plY3RfLCBjbGllbnRJZHNfLmdldFR5cGVJZCgpLCB0cnVlLCBjbGllbnRJZHNfLmdldFNlcnZlcklkKCkpOwotICAgICAgICAgIGNsaWVudEZhY2V0TWF0Y2hlcl8gPSBkcnQuZ2V0RmFjZXRNYXRjaGVyKCk7Ci0gICAgICAgICAgY2xpZW50UHJvamVjdE5hbWVfID0gZHJ0LmdldFByb2plY3ROYW1lKCk7IAotICAgICAgICAgIGNsaWVudFJ1bnRpbWVJZF8gPSBkcnQuZ2V0UnVudGltZUlkKCk7ICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vY2xpZW50SW5pdGlhbFByb2plY3RfIGNvbnRhaW5zIHRoZSBKMkVFIFdlYiBzZXJ2aWNlIHNvIGRvbid0IHVzZSBpdC4KLSAgICAgICAgICAvL1RyeSB1c2luZyB0aGUgaW5pdGFsUHJvamVjdF8gaW5zdGVhZC4KLSAgICAgICAgICBpZiAoIXZ1LmlzUHJvamVjdFNlcnZpY2VQcm9qZWN0KGluaXRpYWxQcm9qZWN0Xywgd3NkbFVSSV8sIHBhcnNlcl8pICYmICFjbGllbnRJZHNGaXhlZF8pCi0gICAgICAgICAgewotICAgICAgICAgICAgLy9JZiBpbnRpYWxQcm9qZWN0XyBkb2VzIG5vdCBjb250YWluIHRoZSBKMkVFIFdlYiBzZXJ2aWNlLCBjaG9vc2UgYSBjbGllbnRSdW50aW1lIGJhc2VkIG9uIGl0LgotICAgICAgICAgICAgZHJ0ID0gZ2V0RGVmYXVsdFJ1bnRpbWUoaW5pdGlhbFByb2plY3RfLCBjbGllbnRJZHNfLmdldFR5cGVJZCgpLCB0cnVlLCBjbGllbnRJZHNfLmdldFNlcnZlcklkKCkpOwotICAgICAgICAgICAgY2xpZW50RmFjZXRNYXRjaGVyXyA9IGRydC5nZXRGYWNldE1hdGNoZXIoKTsKLSAgICAgICAgICAgIGNsaWVudFByb2plY3ROYW1lXyA9IGRydC5nZXRQcm9qZWN0TmFtZSgpOwotICAgICAgICAgICAgY2xpZW50UnVudGltZUlkXyA9IGRydC5nZXRSdW50aW1lSWQoKTsgICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vQm90aCBjbGllbnRJbnRpYWxQcm9qZWN0XyBhbmQgaW5pdGlhbFByb2plY3RfIGNvbnRhaW4gdGhlIEoyRUUgV2ViIHNlcnZpY2UKLSAgICAgICAgICAgIC8vYW5kIGNhbm5vdCBiZSB1c2VkIHRvIGluZmx1ZW5jZSBjbGllbnRSdW50aW1lIGRlZmF1bHRpbmcuCi0gICAgICAgICAgICAvL0Nob29zZSBhIGNsaWVudFJ1bnRpbWUgYnV0IGRvbid0IGNob29zZSBjbGllbnRJbml0aWFsUHJvamVjdF8KLSAgICAgICAgICAgIC8vYXMgdGhlIGNsaWVudFByb2plY3QuCi0gICAgICAgICAgICBkcnQgPSBnZXREZWZhdWx0UnVudGltZShudWxsLCBjbGllbnRJZHNfLmdldFR5cGVJZCgpLCB0cnVlLCBjbGllbnRJZHNfLmdldFNlcnZlcklkKCkpOwotICAgICAgICAgICAgY2xpZW50UnVudGltZUlkXyA9IGRydC5nZXRSdW50aW1lSWQoKTsgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy9TZXQgdGhlIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgaWQgZnJvbSB0aGUgY2xpZW50UnVudGltZQotICAgICAgICBjbGllbnRJZHNfLnNldFJ1bnRpbWVJZChXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRDbGllbnRSdW50aW1lRGVzY3JpcHRvckJ5SWQoY2xpZW50UnVudGltZUlkXykuZ2V0UnVudGltZSgpCi0gICAgICAgICAgICAuZ2V0SWQoKSk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIC8vKipTdGVwIDIqKiBEZWZhdWx0IHRoZSBjbGllbnQgcHJvamVjdCBpZiBpdCB3YXMgbm90IGFscmVhZHkgZGVmYXVsdGVkIAotICAgICAgLy9hcyBwYXJ0IG9mIGRlZmF1bHRpbmcgdGhlIFdlYiBzZXJ2aWNlIHJ1bnRpbWUuCi0gICAgICBpZiAoY2xpZW50UHJvamVjdE5hbWVfID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIFByb2plY3QgbmFtZSBkaWQgbm90IGdldCBzZXQgd2hlbiB0aGUgcnVudGltZSB3YXMgc2V0LCBzbyBzZXQgaXQgbm93Ci0gICAgICAgIGNsaWVudFByb2plY3ROYW1lXyA9IGdldERlZmF1bHRDbGllbnRQcm9qZWN0TmFtZSgpOwotICAgICAgfQotCi0gICAgICAvLyoqU3RlcCAzKiogRGVmYXVsdCB0aGUgY2xpZW50IHByb2plY3QgdHlwZS4gICAgICAKLSAgICAgIElQcm9qZWN0IGNsaWVudFByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoY2xpZW50UHJvamVjdE5hbWVfKTsKLSAgICAgIGlmICghY2xpZW50UHJvamVjdC5leGlzdHMoKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2V0IHRoZSBwcm9qZWN0IHRlbXBsYXRlCi0gICAgICAgIGNsaWVudENvbXBvbmVudFR5cGVfID0gZ2V0RGVmYXVsdENsaWVudFByb2plY3RUZW1wbGF0ZSgpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvL1NldCBpdCB0byBhbiBlbXB0eSBTdHJpbmcKLSAgICAgICAgY2xpZW50Q29tcG9uZW50VHlwZV8gPSAiIjsKLSAgICAgIH0KLQotCi0gICAgICAvLyoqU3RlcCA0KiogRGVmYXVsdCB0aGUgY2xpZW50IHNlcnZlciBpZiB0aGlzIGlzIG5vdCBhbiBBbnQgc2NlbmFyaW8uCi0gICAgICBpZiAoIWNsaWVudElkc0ZpeGVkXykKLSAgICAgIHsKLSAgICAgICAgSVN0YXR1cyBzZXJ2ZXJTdGF0dXMgPSBzZXRDbGllbnREZWZhdWx0U2VydmVyKCk7Ci0gICAgICAgIGlmIChzZXJ2ZXJTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpCi0gICAgICAgIHsKLSAgICAgICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHNlcnZlclN0YXR1cyk7Ci0gICAgICAgICAgcmV0dXJuIHNlcnZlclN0YXR1czsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICAvLyoqU3RlcCA1KiogRGVmYXVsdCBjbGllbnROZWVkRUFSIGFuZCBjbGllbnQgRUFSIGlmIGFuIEVBUiBpcyBuZWVkZWQKLSAgICAgIHNldERlZmF1bHRDbGllbnRFYXJQcm9qZWN0KCk7ICAgICAgCi0gICAgICAKLSAgICAgIAotICAgICAgLy8qKlN0ZXAgNioqIENhbGN1bGF0ZSBkZWZhdWx0IElXZWJTZXJ2aWNlQ2xpZW50LiBUaGlzIGlzIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQKLSAgICAgIC8vIE5leHQgaXMgZW5hYmxlZCBvbiB0aGUgcGFnZSBmb2xsb3dpbmcgdGhpcyBjb21tYW5kLgotICAgICAgc2V0RGVmYXVsdHNGb3JFeHRlbnNpb24oZW52KTsKLQotICAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgICAKLSAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBDYXRjaCBhbGwgRXhjZXB0aW9ucyBpbiBvcmRlciB0byBnaXZlIHNvbWUgZmVlZGJhY2sgdG8gdGhlIHVzZXIKLSAgICAgIElTdGF0dXMgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1RBU0tfRVhDRVBURUQsCi0gICAgICAgICAgbmV3IFN0cmluZ1tdIHsgZS5nZXRNZXNzYWdlKCkgfSksIGUpOwotICAgICAgICAKLSAgICAgIC8vIElmIHRoZSBleGNlcHRpb24gaGFzIG5vIGVycm9yIG1zZywgaXQncyBraW5kIG9mIHVzZWxlc3MgdG8gdGhlIHVzZXIgc28gbGV0J3MgbG9nIGl0Ci0gICAgICBpZiAoIGUuZ2V0TWVzc2FnZSgpID09IG51bGwpewotICAgICAgICBJTG9nIHBsdWdpbmxvZyA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0TG9nKCk7Ci0gICAgICAgIHBsdWdpbmxvZy5sb2coZXJyb3JTdGF0dXMpOwotICAgICAgICAJICAKLSAgICAgICAgLy8gY3JlYXRlIGEgbmV3IElTdGF0dXMgd2hpY2ggaGFzIGEgbm9uLW51bGwgbXNnLCB0aGlzIGlzIHRvIGJlIHRocm93biB0byB0aGUgdXNlci4KLSAgICAgICAgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1RBU0tfRVhDRVBURUQsCi0gICAgICAJICAgICAgIG5ldyBTdHJpbmdbXSB7IFdTVUlQbHVnaW5NZXNzYWdlcy5NU0dfU0VFX0VSUk9SX0xPRyB9KSwgZSk7ICAKLSAgICAgIH0KLSAgICAgICAgICAKLSAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoZXJyb3JTdGF0dXMpOwotICAgICAgcmV0dXJuIGVycm9yU3RhdHVzOwotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIHNldERlZmF1bHRDbGllbnRFYXJQcm9qZWN0KCkKLSAgeyAgICAKLSAgICAvL0Rvbid0IG5lZWQgYW4gZWFyIGlmIHRoaXMgaXMgYSBKYXZhIHByb2plY3QsIG9yIGlmIHRoZSBzZWxlY3RlZCB0ZW1wbGF0ZSBpcyBqc3QudXRpbGl0eQotICAgIElQcm9qZWN0IGNsaWVudFByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoY2xpZW50UHJvamVjdE5hbWVfKTsKLSAgICBpZiAoY2xpZW50UHJvamVjdC5leGlzdHMoKSkKLSAgICB7Ci0gICAgICBjbGllbnROZWVkRUFSXyA9ICEoRmFjZXRVdGlscy5pc0phdmFQcm9qZWN0KGNsaWVudFByb2plY3QpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGNsaWVudE5lZWRFQVJfID0gIShGYWNldFV0aWxzLmlzVXRpbGl0eVRlbXBsYXRlKGNsaWVudENvbXBvbmVudFR5cGVfKSk7ICAKLSAgICB9Ci0gICAgCi0gICAgLy9JZiBjbGllbnROZWVkRUFSXyBpcyBzdGlsbCB0cnVlLCBpdCBtZWFucyB0aGF0IHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggYSBKYXZhIHByb2plY3QKLSAgICAvL29yIEphdmEgcHJvamVjdCB0eXBlLiBDaGVjayB0aGUgc2VydmVyLgotICAgIGlmIChjbGllbnROZWVkRUFSXykKLSAgICB7Ci0gICAgICAvLyBEZXRlcm1pbmUgaWYgYW4gZWFyIHNlbGVjdGlvbiBpcyBuZWVkZWQgYmFzZWQgb24gdGhlIHNlcnZlciB0eXBlLgotCi0gICAgICBTdHJpbmcgc2VydmVySWQgPSBjbGllbnRJZHNfLmdldFNlcnZlcklkKCk7Ci0gICAgICBpZiAoc2VydmVySWQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gVXNlIHRoZSBzZXJ2ZXIgdHlwZQotICAgICAgICBTdHJpbmcgc2VydmVyVGFyZ2V0SWQgPSBTZXJ2ZXJVdGlscy5nZXRSdW50aW1lVGFyZ2V0SWRGcm9tRmFjdG9yeUlkKHNlcnZlcklkKTsKLSAgICAgICAgaWYgKHNlcnZlclRhcmdldElkICE9IG51bGwgJiYgc2VydmVyVGFyZ2V0SWQubGVuZ3RoKCkgPiAwKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFTZXJ2ZXJVdGlscy5pc1RhcmdldFZhbGlkRm9yRUFSKHNlcnZlclRhcmdldElkLCAiMTMiKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBEZWZhdWx0IHRoZSBFQVIgc2VsZWN0aW9uIHRvIGJlIGVtcHR5Ci0gICAgICAgICAgICBjbGllbnROZWVkRUFSXyA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsgIC8vIHNlcnZlcklkID09IG51bGwsIGFzc3VtZSB0aGF0IGl0IGRvZXMgbm90IG5lZWQgRUFSCi0gICAgCSAgY2xpZW50TmVlZEVBUl8gPSBmYWxzZTsKLSAgICAJICAKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKGNsaWVudE5lZWRFQVJfKQotICAgIHsKLSAgICAJY2xpZW50RWFyUHJvamVjdE5hbWVfID0gRGVmYXVsdGluZ1V0aWxzLmdldERlZmF1bHRFQVJQcm9qZWN0TmFtZShjbGllbnRQcm9qZWN0TmFtZV8pOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgY2xpZW50RWFyUHJvamVjdE5hbWVfID0gIiI7Ci0gICAgfSAgIAotICB9Ci0gIAotICBwcml2YXRlIElTdGF0dXMgc2V0Q2xpZW50RGVmYXVsdFNlcnZlcigpCi0gIHsKLSAgICAvL0Nob29zZSBhbiBleGlzdGluZyBzZXJ2ZXIgdGhlIG1vZHVsZSBpcyBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCBpZiBwb3NzaWJsZQotICAgIElQcm9qZWN0IGNsaWVudFByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoY2xpZW50UHJvamVjdE5hbWVfKTsKLSAgICBJU2VydmVyW10gY29uZmlndXJlZFNlcnZlcnMgPSBTZXJ2ZXJVdGlsLmdldFNlcnZlcnNCeU1vZHVsZShTZXJ2ZXJVdGlscy5nZXRNb2R1bGUoY2xpZW50UHJvamVjdCksIG51bGwpOwotICAgIAotICAgIGlmIChjb25maWd1cmVkU2VydmVycyE9bnVsbCAmJiBjb25maWd1cmVkU2VydmVycy5sZW5ndGg+MCAmJiBjb25maWd1cmVkU2VydmVyc1swXS5nZXRTZXJ2ZXJUeXBlKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBjbGllbnRJZHNfLnNldFNlcnZlcklkKGNvbmZpZ3VyZWRTZXJ2ZXJzWzBdLmdldFNlcnZlclR5cGUoKS5nZXRJZCgpKTsKLSAgICAgIGNsaWVudElkc18uc2V0U2VydmVySW5zdGFuY2VJZChjb25maWd1cmVkU2VydmVyc1swXS5nZXRJZCgpKTsKLSAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOyAgICAgICAgICAgIAkKLSAgICB9Ci0gICAgCi0gICAgLy9JZiB0aGUgcHJvamVjdCBleGlzdHMsIGNob29zZSBhIHN1aXRhYmxlIHNlcnZlciBvciBzZXJ2ZXIgdHlwZSBiYXNlZCBvbiB0aGUgZXhpc3RpbmcgcHJvamVjdCdzIHJ1bnRpbWUgb3IgZmFjZXRzCi0gICAgaWYgKGNsaWVudFByb2plY3QuZXhpc3RzKCkpCi0gICAgewotICAgICAgSVNlcnZlciBzZXJ2ZXIgPSBnZXRTZXJ2ZXJGcm9tUHJvamVjdChjbGllbnRQcm9qZWN0TmFtZV8sIGNsaWVudEZhY2V0TWF0Y2hlcl8pOwotICAgICAgaWYgKHNlcnZlciAhPSBudWxsICYmIHNlcnZlci5nZXRTZXJ2ZXJUeXBlKCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgY2xpZW50SWRzXy5zZXRTZXJ2ZXJJZChzZXJ2ZXIuZ2V0U2VydmVyVHlwZSgpLmdldElkKCkpOwotICAgICAgICBjbGllbnRJZHNfLnNldFNlcnZlckluc3RhbmNlSWQoc2VydmVyLmdldElkKCkpOwotICAgICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IGdldFNlcnZlclR5cGVGcm9tUHJvamVjdChjbGllbnRQcm9qZWN0TmFtZV8sIGNsaWVudEZhY2V0TWF0Y2hlcl8pOwotICAgICAgICBpZiAoc2VydmVyVHlwZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgY2xpZW50SWRzXy5zZXRTZXJ2ZXJJZChzZXJ2ZXJUeXBlLmdldElkKCkpOwotICAgICAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy9IYXZlbid0IHBpY2tlZCBhIHNlcnZlci9zZXJ2ZXIgdHlwZSBvbiB0aGUgYmFzaXMgb2YgdGhlIHByb2plY3QuIFBpY2sgYSBzZXJ2ZXIvc2VydmVyIHR5cGUKLSAgICAvL3RoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjbGllbnRSdW50aW1lSWQuCi0gICAgSVNlcnZlciBzZXJ2ZXIgPSBnZXRTZXJ2ZXJGcm9tQ2xpZW50UnVudGltZUlkKCk7Ci0gICAgaWYgKHNlcnZlciE9bnVsbCAmJiBzZXJ2ZXIuZ2V0U2VydmVyVHlwZSgpICE9IG51bGwpCi0gICAgewotICAgICAgY2xpZW50SWRzXy5zZXRTZXJ2ZXJJZChzZXJ2ZXIuZ2V0U2VydmVyVHlwZSgpLmdldElkKCkpOwotICAgICAgY2xpZW50SWRzXy5zZXRTZXJ2ZXJJbnN0YW5jZUlkKHNlcnZlci5nZXRJZCgpKTsKLSAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgIH0KLSAgICAKLSAgICBJU2VydmVyVHlwZSBzZXJ2ZXJUeXBlID0gZ2V0U2VydmVyVHlwZUZyb21DbGllbnRSdW50aW1lSWQoKTsKLSAgICBpZiAoc2VydmVyVHlwZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGNsaWVudElkc18uc2V0U2VydmVySWQoc2VydmVyVHlwZS5nZXRJZCgpKTsKLSAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgIH0gICAgCi0gICAgCi0gICAgLy8gTm8gc3VpdGFibGUgc2VydmVyIHdhcyBmb3VuZC4gUG9wdXAgYW4gZXJyb3IgaWYgdGhlIGRlZmF1bHQgV2ViIHNlcnZpY2UKLSAgICAvLyBydW50aW1lIHJlcXVpcmVzIGEgc2VydmVyLgotICAgIFJ1bnRpbWVEZXNjcmlwdG9yIHJ1bnRpbWVEZXNjcmlwdG9yID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZUJ5SWQoY2xpZW50SWRzXy5nZXRSdW50aW1lSWQoKSk7Ci0gICAgaWYgKHJ1bnRpbWVEZXNjcmlwdG9yLmdldFNlcnZlclJlcXVpcmVkKCkpCi0gICAgewotICAgICAgU3RyaW5nIHJ1bnRpbWVMYWJlbCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFJ1bnRpbWVMYWJlbEJ5SWQoY2xpZW50SWRzXy5nZXRSdW50aW1lSWQoKSk7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfTk9fU0VSVkVSX1JVTlRJTUUsIG5ldyBTdHJpbmdbXSB7Ci0gICAgICAgICAgcnVudGltZUxhYmVsfSkpOwotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0gIHByaXZhdGUgSVNlcnZlciBnZXRTZXJ2ZXJGcm9tQ2xpZW50UnVudGltZUlkKCkKLSAgewotICAgIElTZXJ2ZXJbXSBzZXJ2ZXJzID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJzKCk7Ci0gICAgaWYgKHNlcnZlcnMgIT0gbnVsbCAmJiBzZXJ2ZXJzLmxlbmd0aCA+IDApIHsKLSAgICAJCi0gICAgICAgIFBlcnNpc3RlbnRTZXJ2ZXJSdW50aW1lQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTZXJ2ZXJSdW50aW1lQ29udGV4dCgpOwotICAgICAgICBTdHJpbmcgcHJlZmVycmVkU2VydmVyRmFjdG9yeUlkID0gY29udGV4dC5nZXRTZXJ2ZXJGYWN0b3J5SWQoKTsKLSAgICAgICAgCi0gICAgICAgIC8vSWYgYSBzZXJ2ZXIgb2YgdGhlIHByZWZlcnJlZCBzZXJ2ZXIgdHlwZSBpcyBwcmVzZW50LCBjaGVjayB0aGF0IG9uZSBmaXJzdAotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHNlcnZlcnMubGVuZ3RoOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoc2VydmVyc1tqXSAhPSBudWxsICYmIHNlcnZlcnNbal0uZ2V0U2VydmVyVHlwZSgpICE9IG51bGwpCi0gICAgICAgICAgewotCSAgICAgICAgICBTdHJpbmcgc2VydmVyRmFjdG9yeUlkID0gc2VydmVyc1tqXS5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKTsKLQkgICAgICAgICAgaWYgKHNlcnZlckZhY3RvcnlJZC5lcXVhbHMocHJlZmVycmVkU2VydmVyRmFjdG9yeUlkKSkKLQkgICAgICAgICAgewotCSAgICAgICAgICAgIGlmIChXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5kb2VzQ2xpZW50UnVudGltZVN1cHBvcnRTZXJ2ZXIoY2xpZW50UnVudGltZUlkXywgc2VydmVyRmFjdG9yeUlkKSkKLQkgICAgICAgICAgICB7Ci0JICAgICAgICAgICAgICByZXR1cm4gc2VydmVyc1tqXTsKLQkgICAgICAgICAgICB9Ci0JICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vQSBzZXJ2ZXIgb2YgdGhlIHByZWZlcnJlZCBzZXJ2ZXIgdHlwZSBjb3VsZCBub3QgYmUgZm91bmQgb3IgZGlkIG5vdCBtYXRjaC4gQ2hlY2sgYWxsIHRoZSBleGlzdGluZyBzZXJ2ZXJzLiAgICAKLSAgICAJCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZlcnMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgCWlmIChzZXJ2ZXJzW2ldICE9IG51bGwgJiYgc2VydmVyc1tpXS5nZXRTZXJ2ZXJUeXBlKCkgIT0gbnVsbCkKLSAgICAJewotCSAgICAgICAgU3RyaW5nIHNlcnZlckZhY3RvcnlJZCA9IHNlcnZlcnNbaV0uZ2V0U2VydmVyVHlwZSgpLmdldElkKCk7Ci0JICAgICAgICBpZiAoV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZG9lc0NsaWVudFJ1bnRpbWVTdXBwb3J0U2VydmVyKGNsaWVudFJ1bnRpbWVJZF8sIHNlcnZlckZhY3RvcnlJZCkpCi0JICAgICAgICB7Ci0JICAgICAgICAgIHJldHVybiBzZXJ2ZXJzW2ldOwotCSAgICAgICAgfQotCSAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7ICAgIAotICB9Ci0gIAotICBwcml2YXRlIElTZXJ2ZXJUeXBlIGdldFNlcnZlclR5cGVGcm9tQ2xpZW50UnVudGltZUlkKCkKLSAgewotICAgIFN0cmluZ1tdIHNlcnZlclR5cGVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmVyRmFjdG9yeUlkc0J5Q2xpZW50UnVudGltZShjbGllbnRSdW50aW1lSWRfKTsKLSAgICBpZiAoc2VydmVyVHlwZXMhPW51bGwgJiYgc2VydmVyVHlwZXMubGVuZ3RoPjApCi0gICAgewotICAgICAgLy9SZXR1cm4gdGhlIHByZWZlcnJlZCBvbmUgaWYgaXQgaXMgaW4gdGhlIGxpc3QKLSAgICAgIFBlcnNpc3RlbnRTZXJ2ZXJSdW50aW1lQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTZXJ2ZXJSdW50aW1lQ29udGV4dCgpOwotICAgICAgU3RyaW5nIHByZWZlcnJlZFNlcnZlckZhY3RvcnlJZCA9IGNvbnRleHQuZ2V0U2VydmVyRmFjdG9yeUlkKCk7Ci0gICAgICBmb3IgKGludCBpPTA7IGk8c2VydmVyVHlwZXMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIGlmIChzZXJ2ZXJUeXBlc1tpXS5lcXVhbHMocHJlZmVycmVkU2VydmVyRmFjdG9yeUlkKSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXJUeXBlKHNlcnZlclR5cGVzW2ldKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICByZXR1cm4gU2VydmVyQ29yZS5maW5kU2VydmVyVHlwZShzZXJ2ZXJUeXBlc1swXSk7Ci0gICAgfSAgICAKLSAgICAKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgcHJvdGVjdGVkIElTZXJ2ZXIgZ2V0U2VydmVyRnJvbVByb2plY3QoU3RyaW5nIHByb2plY3ROYW1lLCBGYWNldE1hdGNoZXIgZmFjZXRNYXRjaGVyKQotICB7Ci0gICAgSVNlcnZlciBzZXJ2ZXIgPSBudWxsOwotICAgIAotICAgIElQcm9qZWN0IHByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotICAgIElTZXJ2ZXJbXSBzZXJ2ZXJzID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJzKCk7Ci0gICAgCi0gICAgaWYgKHNlcnZlcnMubGVuZ3RoID4gMCkKLSAgICB7Ci0gICAgICBQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0U2VydmVyUnVudGltZUNvbnRleHQoKTsKLSAgICAgIFN0cmluZyBwcmVmZXJyZWRTZXJ2ZXJGYWN0b3J5SWQgPSBjb250ZXh0LmdldFNlcnZlckZhY3RvcnlJZCgpOwotICAgICAgICAKLSAgICAgIC8vIEdldCB0aGUgcnVudGltZS4KLSAgICAgIG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnJ1bnRpbWUuSVJ1bnRpbWUgZlJ1bnRpbWUgPSBudWxsOwotICAgICAgSUZhY2V0ZWRQcm9qZWN0IGZQcm9qZWN0ID0gbnVsbDsKLQotICAgICAgaWYgKHByb2plY3QgIT0gbnVsbCAmJiBwcm9qZWN0LmV4aXN0cygpKQotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIGZQcm9qZWN0ID0gUHJvamVjdEZhY2V0c01hbmFnZXIuY3JlYXRlKHByb2plY3QpOwotICAgICAgICAgIGlmIChmUHJvamVjdCAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgCSAgZlJ1bnRpbWUgPSBmUHJvamVjdC5nZXRQcmltYXJ5UnVudGltZSgpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkKLSAgICAgICAgewotCi0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKGZSdW50aW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIEdldCBhbiBleGlzdGluZyBzZXJ2ZXIgdGhhdCBoYXMgdGhlIHNhbWUgcnVudGltZS4KLSAgICAgICAgSVNlcnZlciBmaXJzdE1hdGNoaW5nU2VydmVyID0gbnVsbDsgICAgCSAgCi0gICAgICAgIElSdW50aW1lIHNSdW50aW1lID0gRmFjZXRVdGlsLmdldFJ1bnRpbWUoZlJ1bnRpbWUpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZlcnMubGVuZ3RoOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBJU2VydmVyIHRoaXNTZXJ2ZXIgPSBzZXJ2ZXJzW2ldOwotICAgICAgICAgIElSdW50aW1lIHRoaXNTZXJ2ZXJSdW50aW1lID0gdGhpc1NlcnZlci5nZXRSdW50aW1lKCk7Ci0gICAgICAgICAgaWYgKCB0aGlzU2VydmVyUnVudGltZSAhPSBudWxsICYmIHNSdW50aW1lICE9IG51bGwgJiYgdGhpc1NlcnZlclJ1bnRpbWUuZ2V0SWQoKS5lcXVhbHMoc1J1bnRpbWUuZ2V0SWQoKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKGZpcnN0TWF0Y2hpbmdTZXJ2ZXI9PW51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGZpcnN0TWF0Y2hpbmdTZXJ2ZXIgPSB0aGlzU2VydmVyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh0aGlzU2VydmVyICE9IG51bGwgJiYgdGhpc1NlcnZlci5nZXRTZXJ2ZXJUeXBlKCkgIT0gbnVsbCAmJiB0aGlzU2VydmVyLmdldFNlcnZlclR5cGUoKS5nZXRJZCgpLmVxdWFscyhwcmVmZXJyZWRTZXJ2ZXJGYWN0b3J5SWQpKQotICAgICAgICAgICAgewotICAgICAgICAJICAKLSAgICAgICAgICAgICAgc2VydmVyID0gdGhpc1NlcnZlcjsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgIC8vSWYgYSBzZXJ2ZXIgb2YgdGhlIHByZWZlcnJlZCBzZXJ2ZXIgdHlwZSB3YXMgbm90IGZvdW5kIGJ1dAotICAgICAgICAvL3RoZXJlIHdhcyBhIHNlcnZlciB0aGF0IG1hdGNoZWQsIHJldHVybiB0aGF0IG9uZS4KLSAgICAgICAgaWYgKHNlcnZlciA9PSBudWxsICYmIGZpcnN0TWF0Y2hpbmdTZXJ2ZXIgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHNlcnZlciA9IGZpcnN0TWF0Y2hpbmdTZXJ2ZXI7Ci0gICAgICAgIH0gICAgICAgIAotICAgICAgfQotCi0gICAgICAvLyBJZiBhbiBleGlzdGluZyBzZXJ2ZXIgY291bGQgbm90IGJlIGNob3NlbiBvbiB0aGUgYmFzaXMgb2YgdGhlIHByb2plY3QncwotICAgICAgLy8gcnVudGltZSwKLSAgICAgIC8vIHRyeSB0byBmaW5kIGFuIGV4aXN0aW5nIHNlcnZlciB1c2luZyB0aGUgcHJvamVjdCdzIGZhY2V0cyBhbmQgdGhlCi0gICAgICAvLyBmYWNldHNUb0FkZC4KLSAgICAgIGlmIChzZXJ2ZXIgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaWYgKHByb2plY3QhPW51bGwgJiYgcHJvamVjdC5leGlzdHMoKSkKLSAgICAgICAgewotICAgICAgICAgIFNldCBmYWNldHMgPSBGYWNldFV0aWxzLmdldEZhY2V0c0ZvclByb2plY3QocHJvamVjdC5nZXROYW1lKCkpOwotICAgICAgICAgIGlmIChmYWNldHMgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBTZXQgZmFjZXRzQ2xvbmUgPSBuZXcgSGFzaFNldCgpOwotICAgICAgICAgICAgZmFjZXRzQ2xvbmUuYWRkQWxsKGZhY2V0cyk7ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZmFjZXRNYXRjaGVyICE9IG51bGwgJiYgZmFjZXRNYXRjaGVyLmdldEZhY2V0c1RvQWRkKCkgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgSXRlcmF0b3IgaXRyID0gZmFjZXRNYXRjaGVyLmdldEZhY2V0c1RvQWRkKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmYWNldHNDbG9uZS5hZGQoaXRyLm5leHQoKSk7ICAKLSAgICAgICAgICAgICAgfSAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VydmVyID0gZ2V0U2VydmVyRnJvbUZhY2V0cyhmYWNldHNDbG9uZSk7ICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBzZXJ2ZXI7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBJU2VydmVyIGdldFNlcnZlckZyb21GYWNldHMoU2V0IGZhY2V0cykKLSAgewotCSAgICBJU2VydmVyIHNlcnZlciA9IG51bGw7Ci0JICAgIFNldCBydW50aW1lcyA9IEZhY2V0VXRpbHMuZ2V0UnVudGltZXMobmV3IFNldFtde2ZhY2V0c30pOwotCSAgICBJdGVyYXRvciBpdHIgPSBydW50aW1lcy5pdGVyYXRvcigpOwotCSAgICBJU2VydmVyW10gc2VydmVycyA9IFNlcnZlckNvcmUuZ2V0U2VydmVycygpOwotCSAgICBQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0U2VydmVyUnVudGltZUNvbnRleHQoKTsKLQkgICAgU3RyaW5nIHByZWZlcnJlZFNlcnZlckZhY3RvcnlJZCA9IGNvbnRleHQuZ2V0U2VydmVyRmFjdG9yeUlkKCk7Ci0JICAgIAotCSAgICAvL0lmIG9uZSBvZiB0aGUgc2VydmVycyBpcyBvZiB0aGUgcHJlZmVycmVkIHR5cGUsIGFuZCBpdHMgcnVudGltZQotCSAgICAvL2lzIGluIHRoZSBzZXQgb2YgbWF0Y2hpbmcgcnVudGltZXMsIHJldHVybiB0aGF0IHNlcnZlci4KLQkgICAgZm9yIChpbnQgaj0wOyBqPHNlcnZlcnMubGVuZ3RoOyBqKyspICAgICAgCi0JICAgIHsKLQkgICAgICBJU2VydmVyIHRoaXNTZXJ2ZXIgPSBzZXJ2ZXJzW2pdOwotCSAgICAgIGlmICh0aGlzU2VydmVyICE9IG51bGwgJiYgdGhpc1NlcnZlci5nZXRTZXJ2ZXJUeXBlKCkgIT0gbnVsbCAmJiB0aGlzU2VydmVyLmdldFJ1bnRpbWUoKSAhPSBudWxsICYmIHRoaXNTZXJ2ZXIuZ2V0U2VydmVyVHlwZSgpLmdldElkKCkuZXF1YWxzKHByZWZlcnJlZFNlcnZlckZhY3RvcnlJZCkpCi0JICAgICAgewotCSAgICAJSVJ1bnRpbWUgdGhpc1NlcnZlclJ1bnRpbWUgPSB0aGlzU2VydmVyLmdldFJ1bnRpbWUoKTsKLQkgICAgICAgIC8vQ2hlY2sgdG8gc2VlIGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBydW50aW1lcy4KLQkgICAgICAgIEl0ZXJhdG9yIHJ1bnRpbWVzSXRyID0gcnVudGltZXMuaXRlcmF0b3IoKTsKLQkgICAgICAgIHdoaWxlKHJ1bnRpbWVzSXRyLmhhc05leHQoKSkKLQkgICAgICAgIHsKLQkgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUucnVudGltZS5JUnVudGltZSBmUnVudGltZSA9IChvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5ydW50aW1lLklSdW50aW1lKXJ1bnRpbWVzSXRyLm5leHQoKTsKLQkgICAgICAgICAgSVJ1bnRpbWUgc1J1bnRpbWUgPSBGYWNldFV0aWwuZ2V0UnVudGltZShmUnVudGltZSk7Ci0JICAgICAgICAgIGlmIChzUnVudGltZSAhPSBudWxsICYmIHRoaXNTZXJ2ZXJSdW50aW1lLmdldElkKCkuZXF1YWxzKHNSdW50aW1lLmdldElkKCkpKQotCSAgICAgICAgICB7Ci0JICAgICAgICAgICAgc2VydmVyID0gdGhpc1NlcnZlcjsKLQkgICAgICAgICAgfSAgICAgICAgICAKLQkgICAgICAgIH0KLQkgICAgICB9ICAgICAgICAgICAgCi0JICAgIH0KLQkgICAgCi0JICAgIGlmIChzZXJ2ZXIgPT0gbnVsbCkKLQkgICAgewotCSAgICAgIG91dGVyOiB3aGlsZSAoaXRyLmhhc05leHQoKSkKLQkgICAgICB7Ci0JICAgICAgICBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5ydW50aW1lLklSdW50aW1lIGZSdW50aW1lID0gKG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnJ1bnRpbWUuSVJ1bnRpbWUpIGl0cgotCSAgICAgICAgICAgIC5uZXh0KCk7Ci0JICAgICAgICBJUnVudGltZSBzUnVudGltZSA9IEZhY2V0VXRpbC5nZXRSdW50aW1lKGZSdW50aW1lKTsKLQkgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VydmVycy5sZW5ndGg7IGkrKykKLQkgICAgICAgIHsKLQkgICAgICAgICAgSVNlcnZlciB0aGlzU2VydmVyID0gc2VydmVyc1tpXTsKLQkgICAgICAgICAgSVJ1bnRpbWUgdGhpc1NlcnZlclJ1bnRpbWUgPSB0aGlzU2VydmVyLmdldFJ1bnRpbWUoKTsKLQkgICAgICAgICAgaWYgKHRoaXNTZXJ2ZXJSdW50aW1lICE9IG51bGwgJiYgc1J1bnRpbWUgIT0gbnVsbCAmJiB0aGlzU2VydmVyUnVudGltZS5nZXRJZCgpLmVxdWFscyhzUnVudGltZS5nZXRJZCgpKSkKLQkgICAgICAgICAgewotCSAgICAgICAgICAgIHNlcnZlciA9IHRoaXNTZXJ2ZXI7Ci0JICAgICAgICAgICAgYnJlYWsgb3V0ZXI7Ci0JICAgICAgICAgIH0KLQkgICAgICAgIH0KLQkgICAgICB9Ci0JICAgIH0KLQotCSAgICByZXR1cm4gc2VydmVyOwotCi0gIH0KLSAgCi0gIHByb3RlY3RlZCBJU2VydmVyVHlwZSBnZXRTZXJ2ZXJUeXBlRnJvbVByb2plY3QoU3RyaW5nIHByb2plY3ROYW1lLCBGYWNldE1hdGNoZXIgZmFjZXRNYXRjaGVyKQotICB7Ci0JICAgIElTZXJ2ZXJUeXBlIHNlcnZlclR5cGUgPSBudWxsOwotCSAgICBQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0U2VydmVyUnVudGltZUNvbnRleHQoKTsKLQkgICAgU3RyaW5nIHByZWZlcnJlZFNlcnZlckZhY3RvcnlJZCA9IGNvbnRleHQuZ2V0U2VydmVyRmFjdG9yeUlkKCk7Ci0JICAgIAotCSAgICBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQkgICAgSVNlcnZlclR5cGVbXSBzZXJ2ZXJUeXBlcyA9IFNlcnZlckNvcmUuZ2V0U2VydmVyVHlwZXMoKTsKLQkgICAgCi0JICAgIC8vR2V0IHRoZSBydW50aW1lLgotCSAgICBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5ydW50aW1lLklSdW50aW1lIGZSdW50aW1lID0gbnVsbDsKLQkgICAgSUZhY2V0ZWRQcm9qZWN0IGZQcm9qZWN0ID0gbnVsbDsKLQkgICAgCi0JICAgIGlmIChwcm9qZWN0ICE9IG51bGwgJiYgcHJvamVjdC5leGlzdHMoKSkKLQkgICAgewotCSAgICAgIHRyeQotCSAgICAgIHsKLQkgICAgICAgIGZQcm9qZWN0ID0gUHJvamVjdEZhY2V0c01hbmFnZXIuY3JlYXRlKHByb2plY3QpOwotCSAgICAgICAgaWYgKGZQcm9qZWN0ICE9IG51bGwpCi0JICAgICAgICB7Ci0JICAgICAgICAJZlJ1bnRpbWUgPSBmUHJvamVjdC5nZXRQcmltYXJ5UnVudGltZSgpOwotCSAgICAgICAgfQotCSAgICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0JICAgICAgewotCSAgICAgICAgCi0JICAgICAgfQotCSAgICB9Ci0JICAgIAotCSAgICBpZiAoZlJ1bnRpbWUgIT0gbnVsbCkKLQkgICAgewotCSAgICAgIC8vR2V0IGEgc2VydmVyIHR5cGUgdGhhdCBoYXMgdGhlIHNhbWUgcnVudGltZSB0eXBlLgotCSAgICAgIElSdW50aW1lIHNSdW50aW1lID0gRmFjZXRVdGlsLmdldFJ1bnRpbWUoZlJ1bnRpbWUpOyAKLQkgICAgICBpZiAoc1J1bnRpbWUgIT0gbnVsbCkKLQkgICAgICB7Ci0JCSAgICAgIElSdW50aW1lVHlwZSBzUnVudGltZVR5cGUgPSBzUnVudGltZS5nZXRSdW50aW1lVHlwZSgpOwotCQkgICAgICBJU2VydmVyVHlwZSBmaXJzdE1hdGNoaW5nU2VydmVyVHlwZSA9IG51bGw7Ci0JCSAgICAgIGZvciAoaW50IGk9MDsgaTxzZXJ2ZXJUeXBlcy5sZW5ndGg7IGkrKykKLQkJICAgICAgewotCQkgICAgICAgIElTZXJ2ZXJUeXBlIHRoaXNTZXJ2ZXJUeXBlID0gc2VydmVyVHlwZXNbaV07Ci0JCSAgICAgICAgSVJ1bnRpbWVUeXBlIHRoaXNTZXJ2ZXJSdW50aW1lVHlwZSA9IHRoaXNTZXJ2ZXJUeXBlLmdldFJ1bnRpbWVUeXBlKCk7Ci0JCSAgICAgICAgaWYgKHNSdW50aW1lVHlwZSAhPSBudWxsICYmIHRoaXNTZXJ2ZXJSdW50aW1lVHlwZSAhPSBudWxsICYmIHRoaXNTZXJ2ZXJSdW50aW1lVHlwZS5nZXRJZCgpLmVxdWFscyhzUnVudGltZVR5cGUuZ2V0SWQoKSkpCi0JCSAgICAgICAgewotCQkgICAgICAgICAgaWYgKGZpcnN0TWF0Y2hpbmdTZXJ2ZXJUeXBlID09IG51bGwpCi0JCSAgICAgICAgICB7Ci0JCSAgICAgICAgICAgIGZpcnN0TWF0Y2hpbmdTZXJ2ZXJUeXBlID0gdGhpc1NlcnZlclR5cGU7Ci0JCSAgICAgICAgICB9Ci0JCSAgICAgICAgICBpZiAodGhpc1NlcnZlclR5cGUuZ2V0SWQoKS5lcXVhbHMocHJlZmVycmVkU2VydmVyRmFjdG9yeUlkKSkKLQkJICAgICAgICAgIHsKLQkJICAgICAgICAgICAgc2VydmVyVHlwZSA9IHRoaXNTZXJ2ZXJUeXBlOwotCQkgICAgICAgICAgICBicmVhazsKLQkJICAgICAgICAgIH0KLQkJICAgICAgICB9ICAgICAKLQkJICAgICAgfQotCQkgICAgICAKLQkJICAgICAgLy9JZiB0aGUgcHJlZmVycmVkIHNlcnZlciB0eXBlIHdhcyBub3QgZm91bmQgYnV0Ci0JCSAgICAgIC8vdGhlcmUgd2FzIGEgc2VydmVyIHR5cGUgdGhhdCBtYXRjaGVkLCByZXR1cm4gdGhhdCBvbmUuICAgICAgICAKLQkJICAgICAgaWYgKHNlcnZlclR5cGUgPT0gbnVsbCAmJiBmaXJzdE1hdGNoaW5nU2VydmVyVHlwZSAhPSBudWxsKQotCQkgICAgICB7ICAgICAgICAKLQkJICAgICAgICBzZXJ2ZXJUeXBlID0gZmlyc3RNYXRjaGluZ1NlcnZlclR5cGU7Ci0JCSAgICAgIH0KLQkgICAgICB9Ci0JICAgIH0KLQotCSAgICAvL0lmIGEgc2VydmVyIHR5cGUgY291bGQgbm90IGJlIGNob3NlbiBvbiB0aGUgYmFzaXMgb2YgdGhlIHByb2plY3QncyBydW50aW1lLAotCSAgICAvL3RyeSB0byBmaW5kIGEgc2VydmVyIHR5cGUgdXNpbmcgdGhlIHByb2plY3QncyBmYWNldHMgYW5kIHRoZSBmYWNldHNUb0FkZC4KLQkgICAgaWYgKHNlcnZlclR5cGUgPT0gbnVsbCkKLQkgICAgewotCSAgICAgIGlmIChwcm9qZWN0ICE9IG51bGwgJiYgcHJvamVjdC5leGlzdHMoKSkKLQkgICAgICB7Ci0JICAgICAgICBTZXQgZmFjZXRzID0gRmFjZXRVdGlscy5nZXRGYWNldHNGb3JQcm9qZWN0KHByb2plY3QuZ2V0TmFtZSgpKTsKLQkgICAgICAgIGlmIChmYWNldHMgIT0gbnVsbCkKLQkgICAgICAgIHsKLQkgICAgICAgICAgU2V0IGZhY2V0c0Nsb25lID0gbmV3IEhhc2hTZXQoKTsKLQkgICAgICAgICAgZmFjZXRzQ2xvbmUuYWRkQWxsKGZhY2V0cyk7ICAgICAgICAgIAotCSAgICAgICAgICBpZiAoZmFjZXRNYXRjaGVyICE9IG51bGwgJiYgZmFjZXRNYXRjaGVyLmdldEZhY2V0c1RvQWRkKCkgIT0gbnVsbCkKLQkgICAgICAgICAgewotCSAgICAgICAgICAgIEl0ZXJhdG9yIGl0ciA9IGZhY2V0TWF0Y2hlci5nZXRGYWNldHNUb0FkZCgpLml0ZXJhdG9yKCk7Ci0JICAgICAgICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0JICAgICAgICAgICAgewotCSAgICAgICAgICAgICAgZmFjZXRzQ2xvbmUuYWRkKGl0ci5uZXh0KCkpOyAgCi0JICAgICAgICAgICAgfSAgICAgICAgICAgIAotCSAgICAgICAgICB9Ci0JICAgICAgICAgIHNlcnZlclR5cGUgPSBnZXRTZXJ2ZXJUeXBlRnJvbUZhY2V0cyhmYWNldHNDbG9uZSk7ICAgICAgICAgIAotCSAgICAgICAgfQotCSAgICAgIH0KLQkgICAgfQotCSAgICAKLQkgICAgcmV0dXJuIHNlcnZlclR5cGU7Ci0KLSAgfQotICAKLSAgcHJvdGVjdGVkIElTZXJ2ZXJUeXBlIGdldFNlcnZlclR5cGVGcm9tRmFjZXRzKFNldCBmYWNldHMpCi0gIHsKLQkgICAgSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IG51bGw7Ci0JICAgIFNldCBydW50aW1lcyA9IEZhY2V0VXRpbHMuZ2V0UnVudGltZXMobmV3IFNldFtde2ZhY2V0c30pOwotCSAgICBJdGVyYXRvciBpdHIgPSBydW50aW1lcy5pdGVyYXRvcigpOwotCSAgICBJU2VydmVyVHlwZVtdIHNlcnZlclR5cGVzID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJUeXBlcygpOwotCSAgICBQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0U2VydmVyUnVudGltZUNvbnRleHQoKTsKLQkgICAgU3RyaW5nIHByZWZlcnJlZFNlcnZlckZhY3RvcnlJZCA9IGNvbnRleHQuZ2V0U2VydmVyRmFjdG9yeUlkKCk7ICAgIAotCi0JICAgIC8vSWYgb25lIG9mIHRoZSBzZXJ2ZXIgdHlwZXMgaXMgb2YgdGhlIHByZWZlcnJlZCB0eXBlLCBhbmQgaXRzIHJ1bnRpbWUKLQkgICAgLy9pcyBpbiB0aGUgc2V0IG9mIG1hdGNoaW5nIHJ1bnRpbWVzLCByZXR1cm4gdGhhdCBzZXJ2ZXIgdHlwZS4KLQkgICAgZm9yIChpbnQgaj0wOyBqPHNlcnZlclR5cGVzLmxlbmd0aDsgaisrKSAgICAgIAotCSAgICB7Ci0JICAgICAgSVNlcnZlclR5cGUgdGhpc1NlcnZlclR5cGUgPSBzZXJ2ZXJUeXBlc1tqXTsKLQkgICAgICBJUnVudGltZVR5cGUgdGhpc1NlcnZlclR5cGVSdW50aW1lVHlwZSA9IHRoaXNTZXJ2ZXJUeXBlLmdldFJ1bnRpbWVUeXBlKCk7Ci0JICAgICAgaWYgKHRoaXNTZXJ2ZXJUeXBlUnVudGltZVR5cGUgIT0gbnVsbCAmJiB0aGlzU2VydmVyVHlwZS5nZXRJZCgpLmVxdWFscyhwcmVmZXJyZWRTZXJ2ZXJGYWN0b3J5SWQpKQotCSAgICAgIHsKLQkgICAgICAgIC8vQ2hlY2sgdG8gc2VlIGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBydW50aW1lcy4KLQkgICAgICAgIEl0ZXJhdG9yIHJ1bnRpbWVzSXRyID0gcnVudGltZXMuaXRlcmF0b3IoKTsKLQkgICAgICAgIHdoaWxlKHJ1bnRpbWVzSXRyLmhhc05leHQoKSkKLQkgICAgICAgIHsKLQkgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUucnVudGltZS5JUnVudGltZSBmUnVudGltZSA9IChvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5ydW50aW1lLklSdW50aW1lKXJ1bnRpbWVzSXRyLm5leHQoKTsKLQkgICAgICAgICAgSVJ1bnRpbWUgc1J1bnRpbWUgPSBGYWNldFV0aWwuZ2V0UnVudGltZShmUnVudGltZSk7Ci0JICAgICAgICAgIGlmIChzUnVudGltZSAhPSBudWxsKQotCSAgICAgICAgICB7Ci0JICAgICAgICAJICBJUnVudGltZVR5cGUgc1J1bnRpbWVUeXBlID0gc1J1bnRpbWUuZ2V0UnVudGltZVR5cGUoKTsKLQkJICAgICAgICAgIGlmIChzUnVudGltZVR5cGUgIT0gbnVsbCAmJiB0aGlzU2VydmVyVHlwZVJ1bnRpbWVUeXBlLmdldElkKCkuZXF1YWxzKHNSdW50aW1lVHlwZS5nZXRJZCgpKSkKLQkJICAgICAgICAgIHsKLQkJICAgICAgICAgICAgc2VydmVyVHlwZSA9IHRoaXNTZXJ2ZXJUeXBlOwotCQkgICAgICAgICAgfSAgICAgICAgICAKLQkgICAgICAgICAgfQotCSAgICAgICAgfQotCSAgICAgIH0gICAgICAgICAgICAKLQkgICAgfQotCSAgICAKLQkgICAgCi0JICAgIGlmIChzZXJ2ZXJUeXBlID09IG51bGwpCi0JICAgIHsKLQkgICAgICBvdXRlcjogd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0JICAgICAgewotCSAgICAgICAgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUucnVudGltZS5JUnVudGltZSBmUnVudGltZSA9IChvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5ydW50aW1lLklSdW50aW1lKSBpdHIKLQkgICAgICAgICAgICAubmV4dCgpOwotCSAgICAgICAgSVJ1bnRpbWUgc1J1bnRpbWUgPSBGYWNldFV0aWwuZ2V0UnVudGltZShmUnVudGltZSk7Ci0JICAgICAgICBpZiAoc1J1bnRpbWUgIT0gbnVsbCkKLQkgICAgICAgIHsKLQkJICAgICAgICBJUnVudGltZVR5cGUgc1J1bnRpbWVUeXBlID0gc1J1bnRpbWUuZ2V0UnVudGltZVR5cGUoKTsKLQkJICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZlclR5cGVzLmxlbmd0aDsgaSsrKQotCQkgICAgICAgIHsKLQkJICAgICAgICAgIElTZXJ2ZXJUeXBlIHRoaXNTZXJ2ZXJUeXBlID0gc2VydmVyVHlwZXNbaV07Ci0JCSAgICAgICAgICBpZiAodGhpc1NlcnZlclR5cGUgIT0gbnVsbCkKLQkJICAgICAgICAgIHsKLQkJCSAgICAgICAgICBJUnVudGltZVR5cGUgdGhpc1NlcnZlclR5cGVSdW50aW1lVHlwZSA9IHRoaXNTZXJ2ZXJUeXBlLmdldFJ1bnRpbWVUeXBlKCk7Ci0JCQkgICAgICAgICAgaWYgKHNSdW50aW1lVHlwZSAhPSBudWxsICYmIHRoaXNTZXJ2ZXJUeXBlUnVudGltZVR5cGUgIT0gbnVsbCAmJiB0aGlzU2VydmVyVHlwZVJ1bnRpbWVUeXBlLmdldElkKCkuZXF1YWxzKHNSdW50aW1lVHlwZS5nZXRJZCgpKSkKLQkJCSAgICAgICAgICB7Ci0JCQkgICAgICAgICAgICBzZXJ2ZXJUeXBlID0gdGhpc1NlcnZlclR5cGU7Ci0JCQkgICAgICAgICAgICBicmVhayBvdXRlcjsKLQkJCSAgICAgICAgICB9Ci0JCSAgICAgICAgICB9Ci0JCSAgICAgICAgfQotCSAgICAgICAgfQotCSAgICAgIH0KLQkgICAgfQotCi0JICAgIHJldHVybiBzZXJ2ZXJUeXBlOwotCi0gIH0gIAotICAKLSAgcHJvdGVjdGVkIElTZXJ2ZXIgZ2V0U2VydmVyRnJvbVByb2plY3RUeXBlKFN0cmluZyB0ZW1wbGF0ZUlkLCBGYWNldE1hdGNoZXIgZmFjZXRNYXRjaGVyKQotICB7Ci0gICAgSVNlcnZlciBzZXJ2ZXIgPSBudWxsOwotICAgIFNldCBmYWNldHMgPSBGYWNldFV0aWxzLmdldEluaXRpYWxGYWNldFZlcnNpb25zRnJvbVRlbXBsYXRlKHRlbXBsYXRlSWQpOwotICAgIGlmIChmYWNldE1hdGNoZXIuZ2V0RmFjZXRzVG9BZGQoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ciA9IGZhY2V0TWF0Y2hlci5nZXRGYWNldHNUb0FkZCgpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXRyLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgZmFjZXRzLmFkZChpdHIubmV4dCgpKTsgIAotICAgICAgfSAgICAgICAgICAgIAotICAgIH0KLSAgICBzZXJ2ZXIgPSBnZXRTZXJ2ZXJGcm9tRmFjZXRzKGZhY2V0cyk7Ci0gICAgcmV0dXJuIHNlcnZlcjsKLSAgfQotICAKLSAgcHJvdGVjdGVkIElTZXJ2ZXJUeXBlIGdldFNlcnZlclR5cGVGcm9tUHJvamVjdFR5cGUoU3RyaW5nIHRlbXBsYXRlSWQsIEZhY2V0TWF0Y2hlciBmYWNldE1hdGNoZXIpCi0gIHsKLSAgICBJU2VydmVyVHlwZSBzZXJ2ZXJUeXBlID0gbnVsbDsKLSAgICBTZXQgZmFjZXRzID0gRmFjZXRVdGlscy5nZXRJbml0aWFsRmFjZXRWZXJzaW9uc0Zyb21UZW1wbGF0ZSh0ZW1wbGF0ZUlkKTsKLSAgICBpZiAoZmFjZXRNYXRjaGVyLmdldEZhY2V0c1RvQWRkKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdHIgPSBmYWNldE1hdGNoZXIuZ2V0RmFjZXRzVG9BZGQoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIGZhY2V0cy5hZGQoaXRyLm5leHQoKSk7ICAKLSAgICAgIH0gICAgICAgICAgICAKLSAgICB9Ci0gICAgLy9UT0RPIEluc3RlYWQgb2YgcGFzc2luZyBpbiBhIHNpbmdsZSBzZXQgb2YgZmFjZXRzLCBwYXNzIGluIG11bHRpcGxlIHNldHMsIGlmIHRoZQotICAgIC8vanN0LmphdmEgZmFjZXQgaXMgb25lIG9mIHRoZW0gYW5kIHRoZSBjbGllbnRSdW50aW1lSWQgYWxsb3dzIG5ld2VyLgotICAgIHNlcnZlclR5cGUgPSBnZXRTZXJ2ZXJUeXBlRnJvbUZhY2V0cyhmYWNldHMpOwotICAgIHJldHVybiBzZXJ2ZXJUeXBlOyAgICAKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0RGVmYXVsdENsaWVudFByb2plY3RUZW1wbGF0ZSgpCi0gIHsKLSAgICBTdHJpbmdbXSB0ZW1wbGF0ZXMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRDbGllbnRQcm9qZWN0VGVtcGxhdGVzKGNsaWVudElkc18uZ2V0VHlwZUlkKCksIGNsaWVudElkc18uZ2V0UnVudGltZUlkKCkpOwotICAgIAotICAgIC8vV2FsayB0aGUgbGlzdCBvZiBjbGllbnQgcHJvamVjdCB0eXBlcyBpbiB0aGUgcHJvamVjdCB0b3BvbG9neSBwcmVmZXJlbmNlCi0gICAgUHJvamVjdFRvcG9sb2d5Q29udGV4dCBwdGM9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0UHJvamVjdFRvcG9sb2d5Q29udGV4dCgpOwotICAgIFN0cmluZ1tdIHByZWZlcnJlZFRlbXBsYXRlSWRzID0gcHRjLmdldENsaWVudFR5cGVzKCk7Ci0gICAgZm9yIChpbnQgaj0wOyBqPHByZWZlcnJlZFRlbXBsYXRlSWRzLmxlbmd0aDsgaisrKQotICAgIHsKLSAgICAgIGZvciAoaW50IGk9MDsgaTx0ZW1wbGF0ZXMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyB0ZW1wbGF0ZUlkID0gdGVtcGxhdGVzW2ldOwotICAgICAgICBpZiAodGVtcGxhdGVJZC5lcXVhbHMocHJlZmVycmVkVGVtcGxhdGVJZHNbal0pKQotICAgICAgICB7Ci0gICAgICAgICAgCi0gICAgICAgICAgYm9vbGVhbiBtYXRjaGVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZG9lc0NsaWVudFJ1bnRpbWVTdXBwb3J0VGVtcGxhdGUoY2xpZW50UnVudGltZUlkXywgdGVtcGxhdGVJZCk7Ci0gICAgICAgICAgaWYgKG1hdGNoZXMpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlc1tpXTsgICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgIH0gICAgICAKLSAgICB9Ci0KLSAgICAvL1NpbmNlIHRoZSBwcmVmZXJyZWRUZW1wbGF0ZUlkcyBjb250YWlucyB0aGUgdW5pb24gb2YgYWxsIHByb2plY3QgdHlwZXMgZm9yIGFsbCBjbGllbnQgcnVudGltZXMsIHdlIGFyZQotICAgIC8vZ3VhcmFudGVlZCB0byBoYXZlIHJldHVybmVkIGJ5IG5vdywgc28gdGhlIGNvZGUgYmVsb3cgd2lsbCBuZXZlciBiZSBleGVjdXRlZCB1bmRlciBub3JtYWwKLSAgICAvL2NpcmN1bXN0YW5jZXMuIEp1c3QgcmV0dXJuIHNvbWV0aGluZyB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4gICAgCi0gICAgaWYgKHRlbXBsYXRlcy5sZW5ndGggPiAwKQotICAgICAgcmV0dXJuIHRlbXBsYXRlc1swXTsKLSAgICAKLSAgICByZXR1cm4gIiI7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldERlZmF1bHRDbGllbnRQcm9qZWN0TmFtZSgpCi0gIHsKLSAgICBWYWxpZGF0aW9uVXRpbHMgdnUgPSBuZXcgVmFsaWRhdGlvblV0aWxzKCk7Ci0gICAgSVByb2plY3RbXSBwcm9qZWN0cyA9IEZhY2V0VXRpbHMuZ2V0QWxsUHJvamVjdHMoKTsKLSAgICBDbGllbnRSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50UnVudGltZURlc2NyaXB0b3JCeUlkKGNsaWVudFJ1bnRpbWVJZF8pOwotICAgIFJlcXVpcmVkRmFjZXRWZXJzaW9uW10gcmZ2cyA9IGRlc2MuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCk7Ci0gICAgCi0gICAgLy9DaGVjayBlYWNoIHByb2plY3QgYW5kIGl0cyBmYWNldFJ1bnRpbWUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgY2xpZW50UnVudGltZQotICAgIGZvciAoaW50IGk9MDsgaTxwcm9qZWN0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoIXZ1LmlzUHJvamVjdFNlcnZpY2VQcm9qZWN0KHByb2plY3RzW2ldLCB3c2RsVVJJXywgcGFyc2VyXykpCi0gICAgICB7Ci0gICAgICAgIFNldCBmYWNldFZlcnNpb25zID0gRmFjZXRVdGlscy5nZXRGYWNldHNGb3JQcm9qZWN0KHByb2plY3RzW2ldLmdldE5hbWUoKSk7Ci0gICAgICAgIG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnJ1bnRpbWUuSVJ1bnRpbWUgZlJ1bnRpbWUgPSBudWxsOwotICAgICAgICBTdHJpbmcgZlJ1bnRpbWVOYW1lID0gbnVsbDsKLSAgICAgICAgZlJ1bnRpbWUgPSBGYWNldFV0aWxzLmdldEZhY2V0UnVudGltZUZvclByb2plY3QocHJvamVjdHNbaV0uZ2V0TmFtZSgpKTsKLSAgICAgICAgaWYgKGZSdW50aW1lICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBmUnVudGltZU5hbWUgPSBmUnVudGltZS5nZXROYW1lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZmFjZXRWZXJzaW9ucyAhPSBudWxsKQotICAgICAgICB7Ci0KLSAgICAgICAgICAvLyBGYWNldE1hdGNoZXIgZm0gPSBGYWNldFV0aWxzLm1hdGNoKHJmdnMsIGZhY2V0VmVyc2lvbnMpOwotICAgICAgICAgIEZhY2V0TWF0Y2hlciBmbSA9IEZhY2V0TWF0Y2hDYWNoZS5nZXRJbnN0YW5jZSgpLmdldE1hdGNoRm9yUHJvamVjdCh0cnVlLCBjbGllbnRSdW50aW1lSWRfLCBwcm9qZWN0c1tpXS5nZXROYW1lKCkpOwotICAgICAgICAgIGJvb2xlYW4gZmFjZXRSdW50aW1lTWF0Y2hlcyA9IHRydWU7Ci0gICAgICAgICAgaWYgKGZSdW50aW1lTmFtZSAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGZhY2V0UnVudGltZU1hdGNoZXMgPSBGYWNldFV0aWxzLmlzRmFjZXRSdW50aW1lU3VwcG9ydGVkKHJmdnMsIGZSdW50aW1lTmFtZSk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKGZtLmlzTWF0Y2goKSAmJiBmYWNldFJ1bnRpbWVNYXRjaGVzKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNsaWVudEZhY2V0TWF0Y2hlcl8gPSBmbTsKLSAgICAgICAgICAgIHJldHVybiBwcm9qZWN0c1tpXS5nZXROYW1lKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vTm8gcHJvamVjdCB3YXMgc3VpdGFibGUsIHJldHVybiBhIG5ldyBwcm9qZWN0IG5hbWUKLSAgICByZXR1cm4gUmVzb3VyY2VVdGlscy5nZXREZWZhdWx0V2ViUHJvamVjdE5hbWUoKTsKLSAgICAKLSAgfQotICAKLSAgcHJpdmF0ZSBEZWZhdWx0UnVudGltZVRyaXBsZXQgZ2V0RGVmYXVsdENsaWVudFJ1bnRpbWVGb3JGaXhlZFJ1bnRpbWVBbmRTZXJ2ZXIoSVByb2plY3QgcHJvamVjdCwgU3RyaW5nIHJ1bnRpbWVQcmVmZXJyZWRTZXJ2ZXIpCi0gIHsKLSAgICBTdHJpbmdbXSBjbGllbnRSdW50aW1lcyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldENsaWVudFJ1bnRpbWVzQnlUeXBlKGNsaWVudElkc18uZ2V0VHlwZUlkKCksIHJ1bnRpbWVQcmVmZXJyZWRTZXJ2ZXIpOwotICAgIEFycmF5TGlzdCB2YWxpZENsaWVudFJ1bnRpbWVzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGZvciAoaW50IGk9MDsgaTxjbGllbnRSdW50aW1lcy5sZW5ndGg7IGkrKyApCi0gICAgewotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChjbGllbnRSdW50aW1lc1tpXSk7Ci0gICAgICBpZiAoZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKS5lcXVhbHMoY2xpZW50SWRzXy5nZXRSdW50aW1lSWQoKSkpCi0gICAgICB7Ci0gICAgICAgIC8vQ2hlY2sgaWYgdGhpcyBjbGllbnQgcnVudGltZSBzdXBwb3J0cyB0aGUgc2VydmVyCi0gICAgICAgIGlmIChXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5kb2VzQ2xpZW50UnVudGltZVN1cHBvcnRTZXJ2ZXIoZGVzYy5nZXRJZCgpLCBjbGllbnRJZHNfLmdldFNlcnZlcklkKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgdmFsaWRDbGllbnRSdW50aW1lcy5hZGQoZGVzYy5nZXRJZCgpKTsKLSAgICAgICAgICBpZiAocHJvamVjdCAhPSBudWxsICYmIHByb2plY3QuZXhpc3RzKCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy9SZXF1aXJlZEZhY2V0VmVyc2lvbltdIHJmdiA9IGRlc2MuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCk7Ci0gICAgICAgICAgICBTZXQgZmFjZXRWZXJzaW9ucyA9IEZhY2V0VXRpbHMuZ2V0RmFjZXRzRm9yUHJvamVjdChwcm9qZWN0LmdldE5hbWUoKSk7Ci0gICAgICAgICAgICBpZiAoZmFjZXRWZXJzaW9ucyAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvL0ZhY2V0TWF0Y2hlciBmbSA9IEZhY2V0VXRpbHMubWF0Y2gocmZ2LCBmYWNldFZlcnNpb25zKTsKLSAgICAgICAgICAgICAgRmFjZXRNYXRjaGVyIGZtID0gRmFjZXRNYXRjaENhY2hlLmdldEluc3RhbmNlKCkuZ2V0TWF0Y2hGb3JQcm9qZWN0KHRydWUsIGNsaWVudFJ1bnRpbWVzW2ldLCBwcm9qZWN0LmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgIGlmIChmbS5pc01hdGNoKCkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBEZWZhdWx0UnVudGltZVRyaXBsZXQgZHJ0ID0gbmV3IERlZmF1bHRSdW50aW1lVHJpcGxldCgpOwotICAgICAgICAgICAgICAgIGRydC5zZXRGYWNldE1hdGNoZXIoZm0pOwotICAgICAgICAgICAgICAgIGRydC5zZXRQcm9qZWN0TmFtZShwcm9qZWN0LmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgZHJ0LnNldFJ1bnRpbWVJZChkZXNjLmdldElkKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBkcnQ7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgfQotICAgIAotICAgIGlmICh2YWxpZENsaWVudFJ1bnRpbWVzLnNpemUoKSA+IDApCi0gICAgewotICAgICAgLy9XZSBjb3VsZG4ndCBtYXRjaCB0byB0aGUgaW5pdGlhbGx5IHNlbGVjdGVkIHByb2plY3Qgc28gcmV0dXJuIHRoZSBmaXJzdCB2YWxpZCBydW50aW1lLgotICAgICAgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0IGRydCA9IG5ldyBEZWZhdWx0UnVudGltZVRyaXBsZXQoKTsKLSAgICAgIGRydC5zZXRGYWNldE1hdGNoZXIobnVsbCk7Ci0gICAgICBkcnQuc2V0UHJvamVjdE5hbWUobnVsbCk7Ci0gICAgICBkcnQuc2V0UnVudGltZUlkKCgoU3RyaW5nW10pdmFsaWRDbGllbnRSdW50aW1lcy50b0FycmF5KG5ldyBTdHJpbmdbMF0pKVswXSk7Ci0gICAgICByZXR1cm4gZHJ0OyAgICAgICAgICAgIAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy9UaGVyZSBhcmUgbm8gY2xpZW50IHJ1bnRpbWVzIHRoYXQgbWF0Y2ggdGhlIGZpeGVkIHJ1bnRpbWUgYW5kIHNlcnZlci4gRmFsbCBiYWNrIHRvIG9yaWdpbmFsIGFsZ29yaXRobQotICAgICAgY2xpZW50SWRzRml4ZWRfID0gZmFsc2U7Ci0gICAgICByZXR1cm4gZ2V0RGVmYXVsdFJ1bnRpbWUocHJvamVjdCwgY2xpZW50SWRzXy5nZXRUeXBlSWQoKSwgdHJ1ZSwgY2xpZW50SWRzXy5nZXRTZXJ2ZXJJZCgpKTsKLSAgICB9Ci0gIH0gIAotICAgIAotICBwcm90ZWN0ZWQgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0IGdldERlZmF1bHRSdW50aW1lKElQcm9qZWN0IHByb2plY3QsIFN0cmluZyB0eXBlSWQsIGJvb2xlYW4gaXNDbGllbnQsIFN0cmluZyBydW50aW1lUHJlZmVycmVkU2VydmVyKQotICB7Ci0gICAgU3RyaW5nW10gcnVudGltZXMgPSBudWxsOwotICAgIGlmIChpc0NsaWVudCkKLSAgICB7Ci0gICAgICBydW50aW1lcyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldENsaWVudFJ1bnRpbWVzQnlUeXBlKHR5cGVJZCwgcnVudGltZVByZWZlcnJlZFNlcnZlcik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBydW50aW1lcyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZpY2VSdW50aW1lc0J5U2VydmljZVR5cGUodHlwZUlkLCBydW50aW1lUHJlZmVycmVkU2VydmVyKTsKLSAgICB9Ci0gICAgICAgIAotICAgIC8vU3BsaXQgdGhlIGFycmF5IG9mIHNlcnZpY2UvY2xpZW50IHJ1bnRpbWVzIGludG8gb25lIGNvbnRhaW5pbmcgdGhlIHByZWZlcnJlZCBzZXQgYW5kIG9uZSBjb250YWluaW5nIHRoZSByZXN0LgotICAgIFBlcnNpc3RlbnRTZXJ2ZXJSdW50aW1lQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTZXJ2ZXJSdW50aW1lQ29udGV4dCgpOwotICAgIFN0cmluZyBwcmVmZXJyZWRSdW50aW1lSWQgPSBjb250ZXh0LmdldFJ1bnRpbWVJZCgpOwotICAgIFN0cmluZyBmYWxsYmFja1J1bnRpbWVJZCA9IGNvbnRleHQuZ2V0RmFsbGJhY2tSdW50aW1lSWQoKTsKLSAgICBBcnJheUxpc3QgcHJlZmVycmVkUnVudGltZUlkc0xpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgQXJyYXlMaXN0IG90aGVyUnVudGltZUlkc0xpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgZm9yIChpbnQgaz0wOyBrPHJ1bnRpbWVzLmxlbmd0aDsgaysrICkKLSAgICB7Ci0gICAgICBTdHJpbmcgZGVzY1J1bnRpbWVJZCA9IG51bGw7Ci0gICAgICBpZiAoaXNDbGllbnQpCi0gICAgICB7Ci0gICAgICAgIENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRDbGllbnRSdW50aW1lRGVzY3JpcHRvckJ5SWQocnVudGltZXNba10pOwotICAgICAgICBkZXNjUnVudGltZUlkID0gZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKHJ1bnRpbWVzW2tdKTsKLSAgICAgICAgZGVzY1J1bnRpbWVJZCA9IGRlc2MuZ2V0UnVudGltZSgpLmdldElkKCk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIGlmIChkZXNjUnVudGltZUlkLmVxdWFscyhwcmVmZXJyZWRSdW50aW1lSWQpKQotICAgICAgewotICAgICAgICBwcmVmZXJyZWRSdW50aW1lSWRzTGlzdC5hZGQocnVudGltZXNba10pOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoZGVzY1J1bnRpbWVJZC5lcXVhbHMoZmFsbGJhY2tSdW50aW1lSWQpKSAKLSAgICAgIHsKLSAgICAJb3RoZXJSdW50aW1lSWRzTGlzdC5hZGQoMCwgcnVudGltZXNba10pOyAgLy8gYWRkIHRvIGJlZ2lubmluZyBvZiBvdGhlclJ1bnRpbWVJZHNMaXN0Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIG90aGVyUnVudGltZUlkc0xpc3QuYWRkKHJ1bnRpbWVzW2tdKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgU3RyaW5nW10gcHJlZmVycmVkUnVudGltZUlkcyA9IChTdHJpbmdbXSlwcmVmZXJyZWRSdW50aW1lSWRzTGlzdC50b0FycmF5KG5ldyBTdHJpbmdbMF0pOwotICAgIFN0cmluZ1tdIG90aGVyUnVudGltZUlkcyA9IChTdHJpbmdbXSlvdGhlclJ1bnRpbWVJZHNMaXN0LnRvQXJyYXkobmV3IFN0cmluZ1swXSk7Ci0gICAgCi0gICAgU2V0IGZhY2V0VmVyc2lvbnMgPSBudWxsOwotICAgIG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnJ1bnRpbWUuSVJ1bnRpbWUgZlJ1bnRpbWUgPSBudWxsOwotICAgIFN0cmluZyBmUnVudGltZU5hbWUgPSBudWxsOwotICAgIAotICAgIC8vSWYgdGhlIGluaXRpYWxseSBzZWxlY3RlZCBwcm9qZWN0IGV4aXN0cyBhbmQgZmFjZXRzIGNhbiBiZSBpbmZlcnJlZCBmcm9tIGl0LCBsb29rIGZvcgotICAgIC8vYSBzZXJ2aWNlL2NsaWVudCBydW50aW1lIHRoYXQgbWF0Y2hlcyB0aGUgcHJvamVjdCdzIGZhY2V0cyBhbmQgYWxzbywgaWYgcG9zc2libGUsIGl0cyBmYWNldCBydW50aW1lLgotICAgIC8vUHJlZmVyZW5jZSBzaG91bGQgYmUgZ2l2ZW4gdG8gdGhlIHByZWZlcnJlZCBzZXJ2aWNlL2NsaWVudCBydW50aW1lcy4gCi0gICAgaWYgKHByb2plY3QgIT0gbnVsbCAmJiBwcm9qZWN0LmV4aXN0cygpKQotICAgIHsKLSAgICAgIGZhY2V0VmVyc2lvbnMgPSBGYWNldFV0aWxzLmdldEZhY2V0c0ZvclByb2plY3QocHJvamVjdC5nZXROYW1lKCkpOwotICAgICAgZlJ1bnRpbWUgPSBGYWNldFV0aWxzLmdldEZhY2V0UnVudGltZUZvclByb2plY3QocHJvamVjdC5nZXROYW1lKCkpOwotICAgICAgZlJ1bnRpbWVOYW1lID0gbnVsbDsKLSAgICAgIGlmIChmUnVudGltZSAhPSBudWxsKQotICAgICAgewotICAgICAgICBmUnVudGltZU5hbWUgPSBmUnVudGltZS5nZXROYW1lKCk7ICAgICAgICAKLSAgICAgIH0KLSAgICAgIAotICAgICAgaWYgKGZhY2V0VmVyc2lvbnMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8xLiBGaXJzdCBjaGVjayB0byBzZWUgaWYgb25lIG9mIHRoZSBwcmVmZXJyZWQgc2VydmljZS9jbGllbnQgcnVudGltZXMgbWF0Y2hlcyB0aGUgZXhpc3RpbmcKLSAgICAgICAgLy9wcm9qZWN0J3MgZmFjZXRzIGFuZCBydW50aW1lLgotICAgICAgICBmb3IgKGludCBwID0gMDsgcCA8IHByZWZlcnJlZFJ1bnRpbWVJZHMubGVuZ3RoOyBwKyspCi0gICAgICAgIHsKLSAgICAgICAgICBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHByZnYgPSBudWxsOwotICAgICAgICAgIGlmIChpc0NsaWVudCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwcmZ2ID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50UnVudGltZURlc2NyaXB0b3JCeUlkKHByZWZlcnJlZFJ1bnRpbWVJZHNbcF0pLmdldFJlcXVpcmVkRmFjZXRWZXJzaW9ucygpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgcHJmdiA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvckJ5SWQocHJlZmVycmVkUnVudGltZUlkc1twXSkuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIC8vRmFjZXRNYXRjaGVyIGZtID0gRmFjZXRVdGlscy5tYXRjaChwcmZ2LCBmYWNldFZlcnNpb25zKTsKLSAgICAgICAgICBGYWNldE1hdGNoZXIgZm0gPSBGYWNldE1hdGNoQ2FjaGUuZ2V0SW5zdGFuY2UoKS5nZXRNYXRjaEZvclByb2plY3QoaXNDbGllbnQsIHByZWZlcnJlZFJ1bnRpbWVJZHNbcF0sIHByb2plY3QuZ2V0TmFtZSgpKTsKLSAgICAgICAgICBib29sZWFuIGZhY2V0UnVudGltZU1hdGNoZXMgPSB0cnVlOwotICAgICAgICAgIGlmIChmUnVudGltZU5hbWUgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBmYWNldFJ1bnRpbWVNYXRjaGVzID0gRmFjZXRVdGlscy5pc0ZhY2V0UnVudGltZVN1cHBvcnRlZChwcmZ2LCBmUnVudGltZU5hbWUpOyAgCi0gICAgICAgICAgfSAgICAgICAgICAKLSAgICAgICAgICAKLSAgICAgICAgICBpZiAoZm0uaXNNYXRjaCgpICYmIGZhY2V0UnVudGltZU1hdGNoZXMpCi0gICAgICAgICAgewotICAgICAgICAgICAgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0IGRydCA9IG5ldyBEZWZhdWx0UnVudGltZVRyaXBsZXQoKTsKLSAgICAgICAgICAgIGRydC5zZXRGYWNldE1hdGNoZXIoZm0pOwotICAgICAgICAgICAgZHJ0LnNldFByb2plY3ROYW1lKHByb2plY3QuZ2V0TmFtZSgpKTsKLSAgICAgICAgICAgIGRydC5zZXRSdW50aW1lSWQocHJlZmVycmVkUnVudGltZUlkc1twXSk7Ci0gICAgICAgICAgICByZXR1cm4gZHJ0OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8yLiBTZWNvbmQsIGNoZWNrIHRvIHNlZSBpZiBvbmUgb2YgdGhlIG90aGVyIGNsaWVudFJ1bnRpbWVzIG1hdGNoZXMgdGhlIGV4aXN0aW5nCi0gICAgICAgIC8vcHJvamVjdCdzIGZhY2V0cyBhbmQgcnVudGltZS4gICAgICAgIAotICAgICAgICBmb3IgKGludCBpPTA7IGk8b3RoZXJSdW50aW1lSWRzLmxlbmd0aDsgaSsrKQotICAgICAgICB7ICAgICAgICAKLSAgICAgICAgICBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHJmdiA9IG51bGw7Ci0gICAgICAgICAgaWYgKGlzQ2xpZW50KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJmdiA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChvdGhlclJ1bnRpbWVJZHNbaV0pLmdldFJlcXVpcmVkRmFjZXRWZXJzaW9ucygpOyAgCi0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZnYgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKG90aGVyUnVudGltZUlkc1tpXSkuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIEZhY2V0TWF0Y2hlciBmbSA9IEZhY2V0TWF0Y2hDYWNoZS5nZXRJbnN0YW5jZSgpLmdldE1hdGNoRm9yUHJvamVjdChpc0NsaWVudCwgb3RoZXJSdW50aW1lSWRzW2ldLCBwcm9qZWN0LmdldE5hbWUoKSk7Ci0gICAgICAgICAgYm9vbGVhbiBmYWNldFJ1bnRpbWVNYXRjaGVzID0gdHJ1ZTsKLSAgICAgICAgICBpZiAoZlJ1bnRpbWVOYW1lICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgZmFjZXRSdW50aW1lTWF0Y2hlcyA9IEZhY2V0VXRpbHMuaXNGYWNldFJ1bnRpbWVTdXBwb3J0ZWQocmZ2LCBmUnVudGltZU5hbWUpOyAgCi0gICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICBpZiAoZm0uaXNNYXRjaCgpICYmIGZhY2V0UnVudGltZU1hdGNoZXMpCi0gICAgICAgICAgewotICAgICAgICAgICAgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0IGRydCA9IG5ldyBEZWZhdWx0UnVudGltZVRyaXBsZXQoKTsKLSAgICAgICAgICAgIGRydC5zZXRGYWNldE1hdGNoZXIoZm0pOwotICAgICAgICAgICAgZHJ0LnNldFByb2plY3ROYW1lKHByb2plY3QuZ2V0TmFtZSgpKTsKLSAgICAgICAgICAgIGRydC5zZXRSdW50aW1lSWQob3RoZXJSdW50aW1lSWRzW2ldKTsKLSAgICAgICAgICAgIHJldHVybiBkcnQ7Ci0gICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLzMuIFRoaXJkLCBjaGVjayB0byBzZWUgaWYgb25lIG9mIHRoZSBwcmVmZXJyZWQgY2xpZW50UnVudGltZXMgbWF0Y2hlcyB0aGUgZXhpc3RpbmcKLSAgICAgICAgLy9wcm9qZWN0J3MgZmFjZXRzLgotICAgICAgICBmb3IgKGludCBwID0gMDsgcCA8IHByZWZlcnJlZFJ1bnRpbWVJZHMubGVuZ3RoOyBwKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZhY2V0TWF0Y2hlciBmbSA9IEZhY2V0TWF0Y2hDYWNoZS5nZXRJbnN0YW5jZSgpLmdldE1hdGNoRm9yUHJvamVjdChpc0NsaWVudCwgcHJlZmVycmVkUnVudGltZUlkc1twXSwgcHJvamVjdC5nZXROYW1lKCkpOyAKLSAgICAgICAgICAgIGlmIChmbS5pc01hdGNoKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIERlZmF1bHRSdW50aW1lVHJpcGxldCBkcnQgPSBuZXcgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0KCk7Ci0gICAgICAgICAgICAgIGRydC5zZXRGYWNldE1hdGNoZXIoZm0pOwotICAgICAgICAgICAgICBkcnQuc2V0UHJvamVjdE5hbWUocHJvamVjdC5nZXROYW1lKCkpOwotICAgICAgICAgICAgICBkcnQuc2V0UnVudGltZUlkKHByZWZlcnJlZFJ1bnRpbWVJZHNbcF0pOwotICAgICAgICAgICAgICByZXR1cm4gZHJ0OwotICAgICAgICAgICAgfSAgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLzQuIEZvdXJ0aCwgY2hlY2sgdG8gc2VlIGlmIHRoZSBvbmUgdGhlIG90aGVyIGNsaWVudFJ1bnRpbWVzIG1hdGNoZXMgdGhlIGV4aXN0aW5nCi0gICAgICAgIC8vcHJvamVjdCdzIGZhY2V0cy4gICAgICAgIAotICAgICAgICBmb3IgKGludCBpPTA7IGk8b3RoZXJSdW50aW1lSWRzLmxlbmd0aDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBGYWNldE1hdGNoZXIgZm0gPSBGYWNldE1hdGNoQ2FjaGUuZ2V0SW5zdGFuY2UoKS5nZXRNYXRjaEZvclByb2plY3QoaXNDbGllbnQsIG90aGVyUnVudGltZUlkc1tpXSwgcHJvamVjdC5nZXROYW1lKCkpOyAKLSAgICAgICAgICAgIGlmIChmbS5pc01hdGNoKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIERlZmF1bHRSdW50aW1lVHJpcGxldCBkcnQgPSBuZXcgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0KCk7Ci0gICAgICAgICAgICAgIGRydC5zZXRGYWNldE1hdGNoZXIoZm0pOwotICAgICAgICAgICAgICBkcnQuc2V0UHJvamVjdE5hbWUocHJvamVjdC5nZXROYW1lKCkpOwotICAgICAgICAgICAgICBkcnQuc2V0UnVudGltZUlkKG90aGVyUnVudGltZUlkc1tpXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBkcnQ7Ci0gICAgICAgICAgICB9ICAgICAgICAKLSAgICAgICAgfSAgICAgICAgCi0gICAgICB9ICAgICAgICAgICAgCi0gICAgfQotICAgIAotICAgIC8vSGF2ZW4ndCByZXR1cm5lZCB5ZXQgc28gdGhpcyBtZWFucyB0aGF0IHRoZSBpbnRpdGlhbGx5IHNlbGVjdGVkIHByb2plY3QgY2Fubm90IGJlIHVzZWQKLSAgICAvL3RvIGluZmx1ZW5jZSB0aGUgc2VsZWN0aW9uIG9mIHRoZSBzZXJ2aWNlL2NsaWVudCBydW50aW1lLiAKLSAgICAKLSAgICAgIC8vVXNlIHRoZSBwcmVmZXJyZWQgcHJvamVjdCB0eXBlcyB0byBpbmZsdWVuY2UgdGhlIHNlbGVjdGlvbiBvZiBhIHJ1bnRpbWUuCi0gICAgICBQcm9qZWN0VG9wb2xvZ3lDb250ZXh0IHB0YyA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0UHJvamVjdFRvcG9sb2d5Q29udGV4dCgpOwotICAgICAgU3RyaW5nW10gcHJlZmVycmVkVGVtcGxhdGVJZHMgPSBudWxsOwotICAgICAgaWYgKGlzQ2xpZW50KQotICAgICAgewotICAgICAgICBwcmVmZXJyZWRUZW1wbGF0ZUlkcyA9IHB0Yy5nZXRDbGllbnRUeXBlcygpOyAgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHByZWZlcnJlZFRlbXBsYXRlSWRzID0gcHRjLmdldFNlcnZpY2VUeXBlcygpOwotICAgICAgfQotICAgICAgCi0gICAgCi0gICAgICBmb3IgKGludCBuPTA7IG48cHJlZmVycmVkVGVtcGxhdGVJZHMubGVuZ3RoOyBuKyspCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBwcmVmZXJyZWRUZW1wbGF0ZUlkID0gcHJlZmVycmVkVGVtcGxhdGVJZHNbbl07Ci0KLSAgICAgICAgZm9yIChpbnQgbT0wOyBtPHByZWZlcnJlZFJ1bnRpbWVJZHMubGVuZ3RoOyBtKyspCi0gICAgICAgIHsKLSAgICAgICAgICAvL0lmIHRoaXMgY2xpZW50IG9yIHNlcnZpY2UgcnVudGltZSBzdXBwb3J0cyB0aGlzIHRlbXBsYXRlLCBjaG9vc2UgaXQgYW5kIGV4aXQuICAgICAgICAKLSAgICAgICAgICBib29sZWFuIG1hdGNoZXMgPSBmYWxzZTsKLSAgICAgICAgICBpZiAoaXNDbGllbnQpCi0gICAgICAgICAgewotICAgICAgICAgICAgbWF0Y2hlcyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmRvZXNDbGllbnRSdW50aW1lU3VwcG9ydFRlbXBsYXRlKHByZWZlcnJlZFJ1bnRpbWVJZHNbbV0sIHByZWZlcnJlZFRlbXBsYXRlSWQpOyAgICAgICAgICAgIAotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgbWF0Y2hlcyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmRvZXNTZXJ2aWNlUnVudGltZVN1cHBvcnRUZW1wbGF0ZShwcmVmZXJyZWRSdW50aW1lSWRzW21dLCBwcmVmZXJyZWRUZW1wbGF0ZUlkKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgICAgaWYgKG1hdGNoZXMpCi0gICAgICAgICAgewotICAgICAgICAgICAgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0IGRydCA9IG5ldyBEZWZhdWx0UnVudGltZVRyaXBsZXQoKTsKLSAgICAgICAgICAgIGRydC5zZXRGYWNldE1hdGNoZXIobnVsbCk7Ci0gICAgICAgICAgICAvL0lmIHRoZSBwcm9qZWN0IGRvZXNuJ3QgZXhpc3QsIHVzZSB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCB0aGF0IHdhcyBwYXNzZWQgaW4uCi0gICAgICAgICAgICAvL0lmIHRoZSBwcm9qZWN0IGV4aXN0cywgaXQgbWVhbnMgdGhhdCBwcmV2aW91cyBjb2RlIGluIHRoaXMgbWV0aG9kCi0gICAgICAgICAgICAvL2RldGVybWluZWQgaXQgdG8gbm90IGJlIGEgc3VpdGFibGUgcHJvamVjdC4gQ2xlYXIgdGhlIHByb2plY3QgbmFtZS4KLSAgICAgICAgICAgIGlmIChwcm9qZWN0PT1udWxsIHx8IHByb2plY3QuZXhpc3RzKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGRydC5zZXRQcm9qZWN0TmFtZShudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgZHJ0LnNldFByb2plY3ROYW1lKHByb2plY3QuZ2V0TmFtZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRydC5zZXRSdW50aW1lSWQocHJlZmVycmVkUnVudGltZUlkc1ttXSk7Ci0gICAgICAgICAgICByZXR1cm4gZHJ0OyAgICAgICAgICAgIAotICAgICAgICAgIH0gICAgICAgIAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgCi0gICAgCi0gICAgLy9TdGlsbCBoYXZlbid0IHJldHVybmVkLiBSZXR1cm4gdGhlIGZpcnN0IHByZWZlcnJlZCBzZXJ2aWNlL2NsaWVudCBydW50aW1lIGlkLgotICAgIGlmIChwcmVmZXJyZWRSdW50aW1lSWRzLmxlbmd0aCA+IDApCi0gICAgewotICAgICAgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0IGRydCA9IG5ldyBEZWZhdWx0UnVudGltZVRyaXBsZXQoKTsKLSAgICAgIGRydC5zZXRGYWNldE1hdGNoZXIobnVsbCk7Ci0gICAgICAvL0lmIHRoZSBwcm9qZWN0IGRvZXNuJ3QgZXhpc3QsIHVzZSB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCB0aGF0IHdhcyBwYXNzZWQgaW4uCi0gICAgICAvL0lmIHRoZSBwcm9qZWN0IGV4aXN0cywgaXQgbWVhbnMgdGhhdCBwcmV2aW91cyBjb2RlIGluIHRoaXMgbWV0aG9kCi0gICAgICAvL2RldGVybWluZWQgaXQgdG8gbm90IGJlIGEgc3VpdGFibGUgcHJvamVjdC4gQ2xlYXIgdGhlIHByb2plY3QgbmFtZS4gICAgICAKLSAgICAgIGlmIChwcm9qZWN0PT1udWxsIHx8IHByb2plY3QuZXhpc3RzKCkpCi0gICAgICB7Ci0gICAgICAgIGRydC5zZXRQcm9qZWN0TmFtZShudWxsKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgZHJ0LnNldFByb2plY3ROYW1lKHByb2plY3QuZ2V0TmFtZSgpKTsKLSAgICAgIH0KLSAgICAgIGRydC5zZXRSdW50aW1lSWQocHJlZmVycmVkUnVudGltZUlkc1swXSk7Ci0gICAgICByZXR1cm4gZHJ0OyAgICAgIAotICAgIH0KLSAgICAgIAotICAgIGlmIChvdGhlclJ1bnRpbWVJZHMubGVuZ3RoID4gMCkKLSAgICB7Ci0gICAgICBEZWZhdWx0UnVudGltZVRyaXBsZXQgZHJ0ID0gbmV3IERlZmF1bHRSdW50aW1lVHJpcGxldCgpOwotICAgICAgZHJ0LnNldEZhY2V0TWF0Y2hlcihudWxsKTsKLSAgICAgIC8vSWYgdGhlIHByb2plY3QgZG9lc24ndCBleGlzdCwgdXNlIHRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IHRoYXQgd2FzIHBhc3NlZCBpbi4KLSAgICAgIC8vSWYgdGhlIHByb2plY3QgZXhpc3RzLCBpdCBtZWFucyB0aGF0IHByZXZpb3VzIGNvZGUgaW4gdGhpcyBtZXRob2QKLSAgICAgIC8vZGV0ZXJtaW5lZCBpdCB0byBub3QgYmUgYSBzdWl0YWJsZSBwcm9qZWN0LiBDbGVhciB0aGUgcHJvamVjdCBuYW1lLgotICAgICAgaWYgKHByb2plY3Q9PW51bGwgfHwgcHJvamVjdC5leGlzdHMoKSkKLSAgICAgIHsKLSAgICAgICAgZHJ0LnNldFByb2plY3ROYW1lKG51bGwpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBkcnQuc2V0UHJvamVjdE5hbWUocHJvamVjdC5nZXROYW1lKCkpOwotICAgICAgfQotICAgICAgZHJ0LnNldFJ1bnRpbWVJZChvdGhlclJ1bnRpbWVJZHNbMF0pOwotICAgICAgcmV0dXJuIGRydDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIERlZmF1bHRSdW50aW1lVHJpcGxldCBkcnQgPSBuZXcgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0KCk7Ci0gICAgICBkcnQuc2V0RmFjZXRNYXRjaGVyKG51bGwpOwotICAgICAgLy9JZiB0aGUgcHJvamVjdCBkb2Vzbid0IGV4aXN0LCB1c2UgdGhlIG5hbWUgb2YgdGhlIHByb2plY3QgdGhhdCB3YXMgcGFzc2VkIGluLgotICAgICAgLy9JZiB0aGUgcHJvamVjdCBleGlzdHMsIGl0IG1lYW5zIHRoYXQgcHJldmlvdXMgY29kZSBpbiB0aGlzIG1ldGhvZAotICAgICAgLy9kZXRlcm1pbmVkIGl0IHRvIG5vdCBiZSBhIHN1aXRhYmxlIHByb2plY3QuIENsZWFyIHRoZSBwcm9qZWN0IG5hbWUuCi0gICAgICBpZiAocHJvamVjdD09bnVsbCB8fCBwcm9qZWN0LmV4aXN0cygpKQotICAgICAgewotICAgICAgICBkcnQuc2V0UHJvamVjdE5hbWUobnVsbCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGRydC5zZXRQcm9qZWN0TmFtZShwcm9qZWN0LmdldE5hbWUoKSk7Ci0gICAgICB9Ci0gICAgICBkcnQuc2V0UnVudGltZUlkKG51bGwpOwotICAgICAgcmV0dXJuIGRydDsKLSAgICB9ICAgIAotICB9Ci0gIC8qKgotICogCi0gKiBAcGFyYW0gcHJvamVjdAotICogQHJldHVybgotICovCi0gIHByb3RlY3RlZCBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBnZXRQcm9qZWN0RUFSQ2hvaWNlKElQcm9qZWN0IHByb2plY3QpCi0gIHsKLSAgICBTdHJpbmdbXSBmbGV4UHJvamVjdHMgPSBnZXRBbGxGbGV4aWJsZVByb2plY3RzKCk7Ci0gICAgU2VsZWN0aW9uTGlzdCBsaXN0ID0gbmV3IFNlbGVjdGlvbkxpc3QoZmxleFByb2plY3RzLCAwKTsKLSAgICByZXR1cm4gbmV3IFNlbGVjdGlvbkxpc3RDaG9pY2VzKGxpc3QsIG51bGwpOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgU2VsZWN0aW9uTGlzdCBnZXRFQVJQcm9qZWN0cygpCi0gIHsKLSAgICBTdHJpbmdbXSBmbGV4UHJvamVjdHMgPSBnZXRBbGxGbGV4aWJsZVByb2plY3RzKCk7Ci0gICAgcmV0dXJuIG5ldyBTZWxlY3Rpb25MaXN0KGZsZXhQcm9qZWN0cywgMCk7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBJUmVzb3VyY2UgZ2V0UmVzb3VyY2VGcm9tSW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pCi0gIHsKLSAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwgJiYgc2VsZWN0aW9uLnNpemUoKSA9PSAxKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBzZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgICBpZiAob2JqICE9IG51bGwpIAotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgeyAKLSAgICAgICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlRnJvbVNlbGVjdGlvbihvYmopOwotICAgICAgICAgIHJldHVybiByZXNvdXJjZTsKLSAgICAgICAgfSBjYXRjaChDb3JlRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICAKLSAgICAgIAotICAvKgotICAgKiBTZXQgZGVmYXVsdHMgZm9yIHRoZSBjbGllbnQtc2lkZSBmcm9tIHRoZSBzZXJ2aWNlLXNpZGUgaWYgcG9zc2libGUuCi0gICAqIFNldHMgY2xpZW50UHJvamVjdE5hbWVfIHRvIGEgdmFsdWUgYmFzZWQgb24gdGhlIHNlcnZpY2UgcHJvamVjdCBuYW1lLgotICAgKiAKLSAgICogUmV0dXJucyBhbiBJU3RhdHVzLk9LIGlmIHRoZSBzZXJ2aWNlIHNpZGUgdmFsdWVzIGZvciBzZXJ2ZXIgYW5kIFdlYiAKLSAgICogc2VydmljZSBydW50aW1lIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgdmFsdWVzIGZvciBjbGllbnRSdW50aW1lSWRfLAotICAgKiBjbGllbnRDb21wb25lbnRUeXBlXywgYWxsIHRoZSB2YWx1ZXMgaW4gY2xpZW50SWRzXywgYW5kIGNsaWVudEVhclByb2plY3ROYW1lXy4KLSAgICogCi0gICAqIFJldHVybnMgYW4gSVN0YXR1cy5FUlJPUiBvdGhlcndpc2UsIGxlYXZpbmcgb25seSB0aGUgY2xpZW50UHJvamVjdE5hbWVfIHNldC4gCi0gICAqLwotICBwcm90ZWN0ZWQgSVN0YXR1cyBkZWZhdWx0Q2xpZW50U2lkZUZyb21TZXJ2aWNlU2lkZShTdHJpbmcgc2VydmljZVByb2plY3ROYW1lLCBUeXBlUnVudGltZVNlcnZlciBzZXJ2aWNlSWRzLCBib29sZWFuIHNlcnZpY2VOZWVkRUFSLCBTdHJpbmcgc2VydmljZUVhclByb2plY3ROYW1lKQotICB7Ci0gICAgLy8xLiBTdGFydCB3aXRoIHNldHRpbmcgdGhlIGRlZmF1bHQgY2xpZW50IHByb2plY3QgbmFtZSBiYXNlZCBvbiB0aGUgc2VydmljZSBwcm9qZWN0IG5hbWUuCi0gICAgYm9vbGVhbiBpc0VKQiA9IGZhbHNlOwotICAgIFN0cmluZyBpbXBsSWQgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRXZWJTZXJ2aWNlSW1wbElkRnJvbVR5cGVJZChzZXJ2aWNlSWRzLmdldFR5cGVJZCgpKTsKLSAgICBpc0VKQiA9IChpbXBsSWQuZXF1YWxzKCJvcmcuZWNsaXBzZS5qc3Qud3Mud3NJbXBsLmVqYiIpKTsKLSAgICBTdHJpbmdbXSB1cGRhdGVkTmFtZXMgPSBSZXNvdXJjZVV0aWxzLmdldENsaWVudFByb2plY3RDb21wb25lbnROYW1lKHNlcnZpY2VQcm9qZWN0TmFtZSwgc2VydmljZVByb2plY3ROYW1lLCBpc0VKQik7Ci0gICAgY2xpZW50UHJvamVjdE5hbWVfID0gdXBkYXRlZE5hbWVzWzBdOwotICAgIAotICAgIC8vMi4gSWRlYWxseSwgdGhlIHNlcnZlciBhbmQgcnVudGltZSBvbiB0aGUgY2xpZW50LXNpZGUgd2lsbCBiZSBkZWZhdWx0ZWQKLSAgICAvLyAgIHRvIHRoZSBzYW1lIHZhbHVlcyBhcyB0aGUgc2VydmljZSBzaWRlLiBJZiBhIGNsaWVudCBydW50aW1lIGlkIHRoYXQgCi0gICAgLy8gICBzdXBwb3J0cyBjbGllbnRQcm9qZWN0TmFtZV8gYW5kIHRoZSBzZXJ2aWNlLXNpZGUgc2VydmVyIGFuZCBydW50aW1lIGRlZmF1bHRzCi0gICAgLy8gICBjYW4gYmUgZm91bmQsIGNob29zZSBpdC4KLSAgICBJUHJvamVjdCBjbGllbnRQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KGNsaWVudFByb2plY3ROYW1lXyk7Ci0gICAgVHlwZVJ1bnRpbWVTZXJ2ZXIgdGVzdElkcyA9IG5ldyBUeXBlUnVudGltZVNlcnZlcigpOwotICAgIHRlc3RJZHMuc2V0VHlwZUlkKGNsaWVudElkc18uZ2V0VHlwZUlkKCkpOwotICAgIHRlc3RJZHMuc2V0UnVudGltZUlkKHNlcnZpY2VJZHMuZ2V0UnVudGltZUlkKCkpOwotICAgIHRlc3RJZHMuc2V0U2VydmVySWQoc2VydmljZUlkcy5nZXRTZXJ2ZXJJZCgpKTsKLSAgICB0ZXN0SWRzLnNldFNlcnZlckluc3RhbmNlSWQoc2VydmljZUlkcy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkpOwotICAgIAotICAgIGlmIChjbGllbnRQcm9qZWN0LmV4aXN0cygpKQotICAgIHsKLSAgICAgIGNsaWVudENvbXBvbmVudFR5cGVfID0gIiI7Ci0gICAgICBjbGllbnRSdW50aW1lSWRfID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50UnVudGltZUlkKHRlc3RJZHMsIHNlcnZpY2VQcm9qZWN0TmFtZSwgY2xpZW50Q29tcG9uZW50VHlwZV8pOwotICAgICAgaWYgKGNsaWVudFJ1bnRpbWVJZF8gIT0gbnVsbCAmJiBjbGllbnRSdW50aW1lSWRfLmxlbmd0aCgpPjApCi0gICAgICB7Ci0gICAgICAgIGNsaWVudElkc18uc2V0UnVudGltZUlkKHNlcnZpY2VJZHMuZ2V0UnVudGltZUlkKCkpOwotICAgICAgICBjbGllbnRJZHNfLnNldFNlcnZlcklkKHNlcnZpY2VJZHMuZ2V0U2VydmVySWQoKSk7Ci0gICAgICAgIGNsaWVudElkc18uc2V0U2VydmVySW5zdGFuY2VJZChzZXJ2aWNlSWRzLmdldFNlcnZlckluc3RhbmNlSWQoKSk7Ci0gICAgICB9ICAgICAgCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvL1NlZSBpZiB0aGVyZSBpcyBhIGNsaWVudCBwcm9qZWN0IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgc2VydmljZS1zaWRlCi0gICAgICAvL3NlcnZlciBhbmQgcnVudGltZSBkZWZhdWx0cy4gUGljayBhIGNsaWVudCBwcm9qZWN0IHR5cGUgYmFzZWQgb24gcHJvamVjdCB0b3BvbG9neSBwcmVmZXJlbmNlcy4KLSAgICAgIC8vQ2hvb3NlIHRoZSBjbGllbnRSdW50aW1lSWRfIGFjY29yZGluZ2x5LgotICAgICAgU3RyaW5nW10gdGVtcGxhdGVJZHMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRDbGllbnRQcm9qZWN0VGVtcGxhdGVzKGNsaWVudElkc18uZ2V0VHlwZUlkKCksIHRlc3RJZHMuZ2V0UnVudGltZUlkKCkpOwotICAgICAgaWYgKHRlbXBsYXRlSWRzICE9IG51bGwgJiYgdGVtcGxhdGVJZHMubGVuZ3RoID4gMCkKLSAgICAgIHsKLSAgICAgICAgUHJvamVjdFRvcG9sb2d5Q29udGV4dCBwdGMgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFByb2plY3RUb3BvbG9neUNvbnRleHQoKTsKLSAgICAgICAgU3RyaW5nW10gcHJlZmVycmVkVGVtcGxhdGVJZHMgPSBwdGMuZ2V0Q2xpZW50VHlwZXMoKTsKLSAgICAgICAgb3V0ZXI6IGZvciAoaW50IGogPSAwOyBqIDwgcHJlZmVycmVkVGVtcGxhdGVJZHMubGVuZ3RoOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlbXBsYXRlSWRzLmxlbmd0aDsgaSsrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyB0ZW1wbGF0ZUlkID0gdGVtcGxhdGVJZHNbaV07Ci0gICAgICAgICAgICBpZiAodGVtcGxhdGVJZC5lcXVhbHMocHJlZmVycmVkVGVtcGxhdGVJZHNbal0pKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBHZXQgYSBjbGllbnRSdW50aW1lSWQgZm9yIHRoaXMgdGVtcGxhdGUKLSAgICAgICAgICAgICAgU3RyaW5nIG5ld0NsaWVudFJ1bnRpbWVJZCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldENsaWVudFJ1bnRpbWVJZCh0ZXN0SWRzLCBjbGllbnRQcm9qZWN0TmFtZV8sCi0gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUlkKTsKLSAgICAgICAgICAgICAgaWYgKG5ld0NsaWVudFJ1bnRpbWVJZC5sZW5ndGgoKSA+IDApCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjbGllbnRSdW50aW1lSWRfID0gbmV3Q2xpZW50UnVudGltZUlkOwotICAgICAgICAgICAgICAgIGNsaWVudENvbXBvbmVudFR5cGVfID0gdGVtcGxhdGVJZDsKLSAgICAgICAgICAgICAgICBjbGllbnRJZHNfLnNldFJ1bnRpbWVJZChzZXJ2aWNlSWRzLmdldFJ1bnRpbWVJZCgpKTsKLSAgICAgICAgICAgICAgICBjbGllbnRJZHNfLnNldFNlcnZlcklkKHNlcnZpY2VJZHMuZ2V0U2VydmVySWQoKSk7Ci0gICAgICAgICAgICAgICAgY2xpZW50SWRzXy5zZXRTZXJ2ZXJJbnN0YW5jZUlkKHNlcnZpY2VJZHMuZ2V0U2VydmVySW5zdGFuY2VJZCgpKTsgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgYnJlYWsgb3V0ZXI7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9IAotICAgIAotICAgIC8vMy4gSWYgc3RlcCAyIHdhcyBzdWNjZXNzZnVsLCBjbGllbnRSdW50aW1lSWRfIHNob3VsZCBub3cgYmUgc2V0LCBhbG9uZyB3aXRoIGNsaWVudFByb2plY3ROYW1lXywKLSAgICAvLyAgIGNsaWVudENvbXBvbmVudFR5cGVfLCBhbmQgYWxsIHRoZSB2YWx1ZXMgaW4gY2xpZW50SWRzXy4gQWxsIHRoYXQgcmVtYWlucyBpcyBzZXR0aW5nIHRoZSBFQVIuCi0gICAgaWYgKGNsaWVudFJ1bnRpbWVJZF8gIT0gbnVsbCAmJiBjbGllbnRSdW50aW1lSWRfLmxlbmd0aCgpPjApCi0gICAgewotICAgICAgc2V0RGVmYXVsdENsaWVudEVhclByb2plY3QoKTsKLSAgICAgIC8vVXBkYXRlIHRoZSBjbGllbnQgc2lkZSBFQVIgZnJvbSB0aGUgc2VydmljZSBzaWRlIEVBUiBpZiBuZWNlc3NhcnkuCi0gICAgICBpZiAoc2VydmljZU5lZWRFQVIpCi0gICAgICB7Ci0gICAgICAgIGRlZmF1bHRDbGllbnRFYXJGcm9tU2VydmljZUVhcihzZXJ2aWNlUHJvamVjdE5hbWUsIHNlcnZpY2VFYXJQcm9qZWN0TmFtZSk7IAotICAgICAgfQotICAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvL1N0ZXAgMiB3YXMgbm90IHN1Y2Nlc3NmdWwuIENsaWVudCBzaWRlIGRlZmF1bHRpbmcgY2Fubm90IGJlIGRvbmUgdXNpbmcgdGhlIHNlcnZpY2Ugc2lkZSBzZXJ2ZXIKLSAgICAgIC8vYW5kIHdlYiBzZXJ2aWNlIHJ1bnRpbWUgZGVmYXVsdHMuIFJldHVybiBhbiBlcnJvciBzdGF0dXMuCi0gICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIiIpOwotICAgIH0KLSAgfQotICAKLSAgcHJvdGVjdGVkIHZvaWQgZGVmYXVsdENsaWVudEVhckZyb21TZXJ2aWNlRWFyKFN0cmluZyBzZXJ2aWNlUHJvamVjdE5hbWUsIFN0cmluZyBzZXJ2aWNlRWFyUHJvamVjdE5hbWUpCi0gIHsKLSAgICAvL0NsaWVudCBzaWRlCi0gICAgaWYgKGNsaWVudE5lZWRFQVJfKQotICAgIHsKLSAgICAgIElQcm9qZWN0IGNsaWVudFByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoY2xpZW50UHJvamVjdE5hbWVfKTsKLSAgICAgIGlmKGNsaWVudFByb2plY3Q9PW51bGwgfHwgIWNsaWVudFByb2plY3QuZXhpc3RzKCkgCi0gICAgICAgIHx8ICEoY2xpZW50RWFyUHJvamVjdE5hbWVfLmVxdWFsc0lnbm9yZUNhc2Uoc2VydmljZUVhclByb2plY3ROYW1lKSkpCi0gICAgICB7Ci0gICAgICAgIFByb2plY3RUb3BvbG9neUNvbnRleHQgcHRjPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFByb2plY3RUb3BvbG9neUNvbnRleHQoKTsgICAgICAgICAKLSAgICAgICAgaWYgKCFwdGMuaXNVc2VUd29FQVJzKCkpIAotICAgICAgICB7Ci0gICAgICAgICAgY2xpZW50RWFyUHJvamVjdE5hbWVfID0gc2VydmljZUVhclByb2plY3ROYW1lOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgCi0gICAgICAgIHsKLSAgICAgICAgICBJUHJvamVjdCBwcm94eUVBUlByb2plY3QgPSBnZXRVbmlxdWVDbGllbnRFQVIoY2xpZW50RWFyUHJvamVjdE5hbWVfLCBzZXJ2aWNlRWFyUHJvamVjdE5hbWUsIGNsaWVudFByb2plY3ROYW1lXywgc2VydmljZVByb2plY3ROYW1lKTsKLSAgICAgICAgICBjbGllbnRFYXJQcm9qZWN0TmFtZV8gPSBwcm94eUVBUlByb2plY3QuZ2V0TmFtZSgpOwotICAgICAgICB9ICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gIH0KLSAgCi0gIHByaXZhdGUgSVByb2plY3QgZ2V0VW5pcXVlQ2xpZW50RUFSKFN0cmluZyBlYXJQcm9qZWN0TmFtZSwgU3RyaW5nIHNlcnZpY2VFQVJQcm9qZWN0LCBTdHJpbmcgY2xpZW50UHJvamVjdE5hbWUsIFN0cmluZyBzZXJ2aWNlUHJvamVjdE5hbWUpIHsKLQotICAgIFN0cmluZyBwcm9qZWN0TmFtZSA9IG5ldyBTdHJpbmcoKTsKLSAgICAvL0lmIHRoZSBjbGllbnQgcHJvamVjdCBkb2Vzbid0IGV4aXN0IGFuZCB0aGUgc2VydmljZSBwcm9qZWN0IGRvZXMsIGVuc3VyZSB0aGUKLSAgICAvL3RoZSBjbGllbnQgc2lkZSBFQVIncyBKMkVFIGxldmVsIGlzIHN1Y2ggdGhhdCB0aGUgc2VydmljZSBwcm9qZWN0IGNvdWxkIGJlIGFkZGVkIHRvIGl0LgotICAgIC8vVGhpcyB3aWxsIGVuc3VyZSB3ZSBkb24ndCBkZWZhdWx0IHRoZSBwYWdlIHdpdGggYSBjbGllbnQgcHJvamVjdCBFQVIgYXQgYSBsb3dlcgotICAgIC8vSjJFRSBsZXZlbCB0aGFuIHRoZSBzZXJ2aWNlIHNpZGUuCi0gICAgYm9vbGVhbiBnb29kSjJFRUxldmVsID0gdHJ1ZTsKLSAgICBpZiAoIWVhclByb2plY3ROYW1lLmVxdWFsc0lnbm9yZUNhc2Uoc2VydmljZUVBUlByb2plY3QpKQotICAgIHsKLSAgICAgIElQcm9qZWN0IGNsaWVudFByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoY2xpZW50UHJvamVjdE5hbWUpOwotICAgICAgSVByb2plY3Qgc2VydmljZVByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3Qoc2VydmljZVByb2plY3ROYW1lKTsKLSAgICAgIElQcm9qZWN0IGVhclByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoZWFyUHJvamVjdE5hbWUpOwotICAgICAgaWYgKCFjbGllbnRQcm9qZWN0LmV4aXN0cygpICYmIHNlcnZpY2VQcm9qZWN0LmV4aXN0cygpKQotICAgICAgewotICAgICAgICBib29sZWFuIGNhbkFzc29jaWF0ZSA9IEoyRUVVdGlscy5jYW5Bc3NvY2lhdGVQcm9qZWN0VG9FQVJXaXRob3V0V2FybmluZyhzZXJ2aWNlUHJvamVjdCwgZWFyUHJvamVjdCk7Ci0gICAgICAgIGdvb2RKMkVFTGV2ZWwgPSAoY2FuQXNzb2NpYXRlKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKCFlYXJQcm9qZWN0TmFtZS5lcXVhbHNJZ25vcmVDYXNlKHNlcnZpY2VFQVJQcm9qZWN0KSAmJiBnb29kSjJFRUxldmVsKSB7Ci0gICAgICBwcm9qZWN0TmFtZSA9IGVhclByb2plY3ROYW1lOwotICAgIH0gICAgCi0gICAgZWxzZSB7Ci0gICAgICBwcm9qZWN0TmFtZSA9IGNsaWVudFByb2plY3ROYW1lK0RFRkFVTFRfQ0xJRU5UX0VBUl9QUk9KRUNUX0VYVDsKLSAgICAgIGludCBpPTE7ICAgICAgCi0gICAgICB3aGlsZSAocHJvamVjdE5hbWUuZXF1YWxzSWdub3JlQ2FzZShzZXJ2aWNlRUFSUHJvamVjdCkpIHsKLSAgICAgICAgcHJvamVjdE5hbWUgPSBwcm9qZWN0TmFtZStpOwotICAgICAgICBpKys7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBwcm9qZWN0TmFtZS5lcXVhbHMoIiIpID8gbnVsbCA6IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotICAgIAotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgc2V0RGVmYXVsdHNGb3JFeHRlbnNpb24oSUVudmlyb25tZW50IGVudikKLSAgewotICAgIElXZWJTZXJ2aWNlUnVudGltZSB3c3J0ID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50UnVudGltZShjbGllbnRSdW50aW1lSWRfKTsKLSAgICBpZiAod3NydCAhPSBudWxsKQotICAgIHsKLSAgICAgIFdlYlNlcnZpY2VDbGllbnRJbmZvIHdzSW5mbyA9IG5ldyBXZWJTZXJ2aWNlQ2xpZW50SW5mbygpOyAgICAgIAotICAgICAgd3NJbmZvLnNldFNlcnZlckZhY3RvcnlJZChjbGllbnRJZHNfLmdldFNlcnZlcklkKCkpOwotICAgICAgd3NJbmZvLnNldFNlcnZlckluc3RhbmNlSWQoY2xpZW50SWRzXy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkpOwotICAgICAgd3NJbmZvLnNldFN0YXRlKFdlYlNlcnZpY2VTdGF0ZS5VTktOT1dOX0xJVEVSQUwpOwotICAgICAgd3NJbmZvLnNldFdlYlNlcnZpY2VSdW50aW1lSWQoY2xpZW50SWRzXy5nZXRSdW50aW1lSWQoKSk7Ci0gICAgICB3c0luZm8uc2V0V3NkbFVSTCh3c2RsVVJJXyk7Ci0KLSAgICAgIHdlYlNlcnZpY2VDbGllbnRfID0gd3NydC5nZXRXZWJTZXJ2aWNlQ2xpZW50KHdzSW5mbyk7Ci0gICAgICBXZWJTZXJ2aWNlU2NlbmFyaW8gc2NlbmFyaW8gPSBXZWJTZXJ2aWNlU2NlbmFyaW8uQ0xJRU5UX0xJVEVSQUw7Ci0gICAgICBpZiAocmVzb3VyY2VDb250ZXh0XyAhPSBudWxsKQotICAgICAgewotICAgICAgICBjb250ZXh0XyA9IG5ldyBTaW1wbGVDb250ZXh0KHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRlc3RfLCBmYWxzZSwgc2NlbmFyaW8sIHJlc291cmNlQ29udGV4dF8uaXNPdmVyd3JpdGVGaWxlc0VuYWJsZWQoKSwgcmVzb3VyY2VDb250ZXh0XwotICAgICAgICAgICAgLmlzQ3JlYXRlRm9sZGVyc0VuYWJsZWQoKSwgcmVzb3VyY2VDb250ZXh0Xy5pc0NoZWNrb3V0RmlsZXNFbmFibGVkKCkpOwotICAgICAgfQotICAgIH0KLSAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudEluaXRpYWxTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKQotICB7Ci0gICAgaWYgKGNsaWVudEluaXRpYWxQcm9qZWN0XyA9PSBudWxsKQotICAgIHsKLSAgICAgIGNsaWVudEluaXRpYWxQcm9qZWN0XyA9IGdldFByb2plY3RGcm9tSW5pdGlhbFNlbGVjdGlvbihzZWxlY3Rpb24pOwotICAgIH0KLSAgfQotICAKLSAgLy8gVGhpcyBpcyBmb3IgdGhlIEFudCBzY2VuYXJpbyB3aGVyZSB0aGUgY2xpZW50IHByb2plY3QgbmFtZSBjYW4gYmUgc2V0IGluIHRoZSBwcm9wZXJ0eSBmaWxlLgotICAvLyBJZiB0aGUgdXNlciBoYXMgc2V0IHRoZSBDbGllbnRQcm9qZWN0TmFtZSB1c2UgaXQgZm9yIGRlZmF1bHRpbmcgcHVycG9zZXMKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50UHJvamVjdE5hbWUoU3RyaW5nIG5hbWUpCi0gIHsKLQkgIGNsaWVudFByb2plY3ROYW1lXyA9IG5hbWU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRJbml0aWFsUHJvamVjdChJUHJvamVjdCBjbGllbnRJbml0aWFsUHJvamVjdCkKLSAgewotICAgIGNsaWVudEluaXRpYWxQcm9qZWN0XyA9IGNsaWVudEluaXRpYWxQcm9qZWN0OwotICB9Ci0gIAotICAvKioKLSAgICogQHBhcmFtIGluaXRpYWxJbml0aWFsU2VsZWN0aW9uXyBUaGUgaW5pdGlhbEluaXRpYWxTZWxlY3Rpb25fIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEluaXRpYWxJbml0aWFsU2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGluaXRpYWxJbml0aWFsU2VsZWN0aW9uKQotICB7Ci0gICAgaW5pdGlhbFByb2plY3RfID0gZ2V0UHJvamVjdEZyb21Jbml0aWFsU2VsZWN0aW9uKGluaXRpYWxJbml0aWFsU2VsZWN0aW9uKTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0Q2xpZW50TmVlZEVBUigpCi0gIHsKLSAgICByZXR1cm4gY2xpZW50TmVlZEVBUl87Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIHBhcnNlcl8gVGhlIHBhcnNlcl8gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgcGFyc2VyKSB7Ci0gICAgcGFyc2VyXyA9IHBhcnNlcjsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0V3NkbFVSSShTdHJpbmcgd3NkbFVSSSkKLSAgewotICAgIHdzZGxVUklfID0gd3NkbFVSSTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0VGVzdFNlcnZpY2UoYm9vbGVhbiB0ZXN0U2VydmljZSkKLSAgewotICAgIHRlc3RfID0gdGVzdFNlcnZpY2U7Ci0gIH0gICAKLSAgCi0gIHB1YmxpYyB2b2lkIHNldFJlc291cmNlQ29udGV4dCggUmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dCApCi0gIHsKLSAgICByZXNvdXJjZUNvbnRleHRfID0gcmVzb3VyY2VDb250ZXh0OyAgIAotICB9ICAKLSAgCi0gIHByaXZhdGUgSVByb2plY3QgZ2V0UHJvamVjdEZyb21Jbml0aWFsU2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikKLSAgewotICAgIGlmIChzZWxlY3Rpb24gIT0gbnVsbCAmJiBzZWxlY3Rpb24uc2l6ZSgpID09IDEpCi0gICAgewotICAgICAgT2JqZWN0IG9iaiA9IHNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKTsKLSAgICAgIGlmIChvYmogIT0gbnVsbCkgCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7IAotICAgICAgICAgIElSZXNvdXJjZSByZXNvdXJjZSA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VGcm9tU2VsZWN0aW9uKG9iaik7Ci0gICAgICAgICAgaWYgKHJlc291cmNlPT1udWxsKSAKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgIElQcm9qZWN0IHAgPSBSZXNvdXJjZVV0aWxzLmdldFByb2plY3RPZihyZXNvdXJjZS5nZXRGdWxsUGF0aCgpKTsKLSAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAgfSBjYXRjaChDb3JlRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgU3RyaW5nW10gZ2V0QWxsRmxleGlibGVQcm9qZWN0cygpCi0gIHsKLSAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICBJUHJvamVjdFtdIHByb2plY3RzID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0cygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJvamVjdHMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgaWYgKCFwcm9qZWN0c1tpXS5nZXROYW1lKCkuZXF1YWxzKCJTZXJ2ZXJzIikgJiYgIXByb2plY3RzW2ldLmdldE5hbWUoKS5zdGFydHNXaXRoKCIuIikpCi0gICAgICB7Ci0gICAgICAgIHYuYWRkKHByb2plY3RzW2ldLmdldE5hbWUoKSk7Ci0gICAgICB9Ci0gICAgfSAgICAKLSAgICAKLSAgICByZXR1cm4gKFN0cmluZ1tdKXYudG9BcnJheShuZXcgU3RyaW5nWzBdKTsKLSAgICAKLSAgfQotICAKLSAgcHJvdGVjdGVkIGNsYXNzIEZhY2V0UnVudGltZU1hdGNoZXIKLSAgewotICAgIEZhY2V0TWF0Y2hlciBmYWNldE1hdGNoZXI7Ci0gICAgYm9vbGVhbiBydW50aW1lTWF0Y2hlczsKLSAgICAKLSAgICBwdWJsaWMgRmFjZXRNYXRjaGVyIGdldEZhY2V0TWF0Y2hlcigpCi0gICAgewotICAgICAgcmV0dXJuIGZhY2V0TWF0Y2hlcjsKLSAgICB9Ci0gICAgcHVibGljIHZvaWQgc2V0RmFjZXRNYXRjaGVyKEZhY2V0TWF0Y2hlciBmYWNldE1hdGNoZXIpCi0gICAgewotICAgICAgdGhpcy5mYWNldE1hdGNoZXIgPSBmYWNldE1hdGNoZXI7Ci0gICAgfQotICAgIHB1YmxpYyBib29sZWFuIGlzUnVudGltZU1hdGNoZXMoKQotICAgIHsKLSAgICAgIHJldHVybiBydW50aW1lTWF0Y2hlczsKLSAgICB9Ci0gICAgcHVibGljIHZvaWQgc2V0UnVudGltZU1hdGNoZXMoYm9vbGVhbiBydW50aW1lTWF0Y2hlcykKLSAgICB7Ci0gICAgICB0aGlzLnJ1bnRpbWVNYXRjaGVzID0gcnVudGltZU1hdGNoZXM7Ci0gICAgfSAgIAotICB9Ci0gIAotICBwcm90ZWN0ZWQgY2xhc3MgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0Ci0gIHsKLSAgICBGYWNldE1hdGNoZXIgZmFjZXRNYXRjaGVyXzsKLSAgICBTdHJpbmcgcHJvamVjdE5hbWVfOwotICAgIFN0cmluZyBydW50aW1lSWRfOwotICAgIAotICAgIAotICAgIHB1YmxpYyBEZWZhdWx0UnVudGltZVRyaXBsZXQoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIEZhY2V0TWF0Y2hlciBnZXRGYWNldE1hdGNoZXIoKQotICAgIHsKLSAgICAgIHJldHVybiBmYWNldE1hdGNoZXJfOwotICAgIH0KLSAgICBwdWJsaWMgdm9pZCBzZXRGYWNldE1hdGNoZXIoRmFjZXRNYXRjaGVyIGZhY2V0TWF0Y2hlcl8pCi0gICAgewotICAgICAgdGhpcy5mYWNldE1hdGNoZXJfID0gZmFjZXRNYXRjaGVyXzsKLSAgICB9Ci0gICAgcHVibGljIFN0cmluZyBnZXRQcm9qZWN0TmFtZSgpCi0gICAgewotICAgICAgcmV0dXJuIHByb2plY3ROYW1lXzsKLSAgICB9Ci0gICAgcHVibGljIHZvaWQgc2V0UHJvamVjdE5hbWUoU3RyaW5nIHByb2plY3ROYW1lXykKLSAgICB7Ci0gICAgICB0aGlzLnByb2plY3ROYW1lXyA9IHByb2plY3ROYW1lXzsKLSAgICB9Ci0gICAgcHVibGljIFN0cmluZyBnZXRSdW50aW1lSWQoKQotICAgIHsKLSAgICAgIHJldHVybiBydW50aW1lSWRfOwotICAgIH0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdW50aW1lSWQoU3RyaW5nIHJ1bnRpbWVJZF8pCi0gICAgewotICAgICAgdGhpcy5ydW50aW1lSWRfID0gcnVudGltZUlkXzsKLSAgICB9ICAgICAgICAKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3J1bnRpbWUvUHJvamVjdFNlbGVjdGlvbldpZGdldC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3J1bnRpbWUvUHJvamVjdFNlbGVjdGlvbldpZGdldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDExNzFmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy9ydW50aW1lL1Byb2plY3RTZWxlY3Rpb25XaWRnZXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYyMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA4LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMDQgMTI0MTQzICAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyICAgICAgICAgIAotICogMjAwNjAyMjEgICAxMjI2NjEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDIyMyAgIDEyOTAyMCByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwMjI3ICAgMTI0MzkyIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MTMgICAxMzU1ODEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQyNyAgIDEzODA1OCBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDUxMCAgIDE0MDg2OCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDYwNTI0ICAgMTQxMDI0IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwODI5ICAgMTQ1NDQ5IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgc2VydmljZSBjbGllbnQgcHJvamVjdCB0eXBlIGRyb3Bkb3duIGRpc2FibGVkIGFmdGVyIHNlbGVjdGluZyBjbGllbnQgcHJvamVjdAotICogMjAwNjA4MjkgICAxODA4MzMgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgIE5ldyBXZWIgU2VydmljZSB3aXphcmQgc2VydmljZSBzZXR0aW5ncyBkaWFsb2cgaGFzIHVubGFiZWxsZWQgZW5hYmxlZCB0ZXh0IGZpZWxkcwotICogMjAwODA0MDkgICAyMjYwNDcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNDI4ICAgMjI0NzI2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgxMDAxICAgMjQzODY5IGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIFdlYiBTZXJ2aWNlIHRvb2xzIGFsbG93aW5nIG1peGVkIEoyRUUgbGV2ZWxzCi0gKiAyMDA5MDMwMiAgIDI0OTYwMiBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBQSUktIGFzc29jaWF0aW9uIHdhcm5pbmcgbWVzc2FnZSBuZWVkcyB1cGRhdGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5ydW50aW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUubW9kZWwuaW50ZXJuYWwudmFsaWRhdGlvbi5FQVJWYWxpZGF0aW9uTWVzc2FnZVJlc291cmNlSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TZXJ2ZXJVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkRlZmF1bHRpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wcmVmZXJlbmNlcy5Qcm9qZWN0VG9wb2xvZ3lDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb24uVUlVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb2RpZnlFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbWJvOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0RGF0YUV2ZW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsQ29tcG9uZW50OwotCi1wdWJsaWMgY2xhc3MgUHJvamVjdFNlbGVjdGlvbldpZGdldCBleHRlbmRzIFNpbXBsZVdpZGdldERhdGFDb250cmlidXRvciB7Ci0KLQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgcGx1Z2luSWRfID0gIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSI7Ci0gIAotICAvL3ByaXZhdGUgU2VsZWN0aW9uTGlzdENob2ljZXMgcHJvamVjdHNfOwotICAKLSAgcHJpdmF0ZSBib29sZWFuIG5lZWRFQVJfOwotICAKLSAgcHJpdmF0ZSBUeXBlUnVudGltZVNlcnZlciB0cnNJZHNfOwotCi0gIHByaXZhdGUgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXJfOwotCi0gIHByaXZhdGUgVGV4dCBtZXNzYWdlVGV4dF87Ci0KLSAgcHJpdmF0ZSBib29sZWFuIGlzQ2xpZW50XyA9IGZhbHNlOwotCi0gIHByaXZhdGUgYnl0ZSBDUkVBVEVfUFJPSkVDVCA9IChieXRlKSAxOwotCi0gIHByaXZhdGUgYnl0ZSBDUkVBVEVfRUFSID0gKGJ5dGUpIDI7Ci0KLSAgcHJpdmF0ZSBieXRlIEFERF9FQVJfQVNTT0NJQVRJT04gPSAoYnl0ZSkgNDsKLSAgCi0gIHByaXZhdGUgQ29tcG9zaXRlIHBhcmVudF87Ci0gIHByaXZhdGUgQ29tYm8gbW9kdWxlUHJvamVjdF87Ci0gIHByaXZhdGUgQ29tYm8gZWFyUHJvamVjdF87Ci0gIHByaXZhdGUgQ29tYm8gcHJvamVjdFR5cGVfOwotICAKLSAgcHJpdmF0ZSBTdHJpbmdbXSB0ZW1wbGF0ZXNfOwotCi0gIC8vcHJpdmF0ZSBTdHJpbmcgICBjb21wb25lbnRUeXBlXzsKLSAgCi0gIHByaXZhdGUgTW9kaWZ5TGlzdGVuZXIgcHJvamVjdFR5cGVMaXN0ZW5lcl87Ci0gIHByaXZhdGUgTW9kaWZ5TGlzdGVuZXIgbW9kdWxlUHJvamVjdExpc3RlbmVyXzsKLSAgcHJpdmF0ZSBNb2RpZnlMaXN0ZW5lciBlYXJQcm9qZWN0TGlzdGVuZXJfOwotCi0gIC8qCi0gICAqIENPTlRFWFRfSUQgUFdSUzAwMTYgZm9yIHRoZSBzZXJ2aWNlLXNpZGUgV2ViIHByb2plY3QgY29tYm8gYm94IG9mIHRoZQotICAgKiBydW50aW1lIHNlbGVjdGlvbiBQYWdlCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXUlNfQ09NQk9fUFJPSkVDVCA9ICJQV1JTMDAxNiI7Ci0KLSAgLy9wcml2YXRlIENvbWJvIG1vZHVsZV87Ci0KLSAgLyogQ09OVEVYVF9JRCBQV1JTMDAxOCBmb3IgdGhlIGNsaWVudCBwcm9qZWN0IHR5cGUgY29tYm8gYm94IG9mIHRoZSBydW50aW1lIHNlbGVjdGlvbiBQYWdlICovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdSU19DT01CT19DTElFTlRfUFJPSkVDVF9UWVBFID0gIlBXUlMwMDE4IjsKLSAgCi0gIC8qIENPTlRFWFRfSUQgUFdSUzAwMjAgZm9yIHRoZSBzZXJ2aWNlIHByb2plY3QgdHlwZSBjb21ibyBib3ggb2YgdGhlIHJ1bnRpbWUgc2VsZWN0aW9uIFBhZ2UgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QV1JTX0NPTUJPX1NFUlZJQ0VfUFJPSkVDVF9UWVBFID0gIlBXUlMwMDIwIjsgICAgCi0KLSAgLy9wcml2YXRlIENvbWJvIGVhck1vZHVsZV87Ci0KLSAgLyoKLSAgICogRGVmYXVsdCBDb25zdHJ1Y3RvcgotICAgKi8KLSAgcHVibGljIFByb2plY3RTZWxlY3Rpb25XaWRnZXQoKSB7Ci0gIH0KLQotICAvKgotICAgKiBQcm9qZWN0U2VsZWN0aW9uV2lkZ2V0IEBwYXJhbSBpc0NsaWVudAotICAgKi8KLSAgcHVibGljIFByb2plY3RTZWxlY3Rpb25XaWRnZXQoYm9vbGVhbiBpc0NsaWVudCkgewotICAgIHRoaXMuaXNDbGllbnRfID0gaXNDbGllbnQ7Ci0gIH0KLSAgICAKLSAgcHVibGljIFdpZGdldERhdGFFdmVudHMgYWRkQ29udHJvbHMoQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIpIHsKLQkgIAotICAgIHBhcmVudF8gPSBwYXJlbnQ7Ci0gICAgVUlVdGlscyB1aVV0aWxzID0gbmV3IFVJVXRpbHMocGx1Z2luSWRfKTsKLQotICAgIHN0YXR1c0xpc3RlbmVyXyA9IHN0YXR1c0xpc3RlbmVyOwotCQkKLSAgICBpZiAoaXNDbGllbnRfKQotCXsKLQkgIG1vZHVsZVByb2plY3RfID0gdWlVdGlscy5jcmVhdGVDb21ibyhwYXJlbnQsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9DTElFTlRfUFJPSkVDVCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0NMSUVOVF9QUk9KRUNULCBJTkZPUE9QX1BXUlNfQ09NQk9fUFJPSkVDVCwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgKTsKLSAgICAgIHByb2plY3RUeXBlXyA9IHVpVXRpbHMuY3JlYXRlQ29tYm8ocGFyZW50LCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQ0xJRU5UX1RZUEUsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXQ1JfQ09NQk9fQ0xJRU5UX1RZUEUsIElORk9QT1BfUFdSU19DT01CT19DTElFTlRfUFJPSkVDVF9UWVBFLCBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8U1dULlJFQURfT05MWSk7ICAgICAgCi0JICBlYXJQcm9qZWN0XyA9IHVpVXRpbHMuY3JlYXRlQ29tYm8ocGFyZW50LCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQ0xJRU5UX0VBUl9QUk9KRUNULCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQ0xJRU5UX0VBUl9QUk9KRUNULCBJTkZPUE9QX1BXUlNfQ09NQk9fUFJPSkVDVCwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgKTsKLSAgICB9Ci0gICAgZWxzZSAKLQl7ICAgICAgCi0JICBtb2R1bGVQcm9qZWN0XyA9IHVpVXRpbHMuY3JlYXRlQ29tYm8ocGFyZW50LCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfU0VSVklDRV9QUk9KRUNULCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfU0VSVklDRV9QUk9KRUNULCBJTkZPUE9QX1BXUlNfQ09NQk9fUFJPSkVDVCwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgKTsKLSAgICAgIHByb2plY3RUeXBlXyA9IHVpVXRpbHMuY3JlYXRlQ29tYm8ocGFyZW50LCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfU0VSVklDRV9UWVBFLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV0NSX0NPTUJPX1NFUlZJQ0VfVFlQRSwgSU5GT1BPUF9QV1JTX0NPTUJPX1NFUlZJQ0VfUFJPSkVDVF9UWVBFLCBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8IFNXVC5SRUFEX09OTFkpOyAgICAgIAotCSAgZWFyUHJvamVjdF8gPSB1aVV0aWxzLmNyZWF0ZUNvbWJvKHBhcmVudCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NFUlZJQ0VfRUFSX1BST0pFQ1QsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9TRVJWSUNFX0VBUl9QUk9KRUNULCBJTkZPUE9QX1BXUlNfQ09NQk9fUFJPSkVDVCwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgKTsKLSAgICB9Ci0gICAgCi0gICAgLy9UZW1wb3JhcmlseSByZW1vdmUgdGhlIGxpc3RlbmVycwotICAgIAotICAgIHByb2plY3RUeXBlTGlzdGVuZXJfID0gbmV3IE1vZGlmeUxpc3RlbmVyKCkKLSAgICB7Ci0gICAgICBwdWJsaWMgdm9pZCBtb2RpZnlUZXh0KE1vZGlmeUV2ZW50IGV2dCkgCi0gICAgICB7Ci0gICAgICAgIGhhbmRsZVByb2plY3RUeXBlQ2hhbmdlZCgpOwotICAgICAgICBzdGF0dXNMaXN0ZW5lcl8uaGFuZGxlRXZlbnQoIG51bGwgKTsKLSAgICAgIH0KLSAgICB9OyAgICAKLSAgICAKLQltb2R1bGVQcm9qZWN0TGlzdGVuZXJfID0gbmV3IE1vZGlmeUxpc3RlbmVyKCkKLQkgICAgICAgICAgICAgICAgICAgICAgICAgewotCSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG1vZGlmeVRleHQoTW9kaWZ5RXZlbnQgZXZ0KSAKLQkJCQkJICAgICAgICAgICB7Ci0JCQkJCSAgICAgICAgICAgICBoYW5kbGVQcm9qZWN0Q2hhbmdlZCgpOwotCQkJCQkgICAgICAgICAgICAgc3RhdHVzTGlzdGVuZXJfLmhhbmRsZUV2ZW50KCBudWxsICk7Ci0JCSAgICAgICAgICAgICAgICAgICAgICAgfQotCSAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgIAotCWVhclByb2plY3RMaXN0ZW5lcl8gPSBuZXcgTW9kaWZ5TGlzdGVuZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgbW9kaWZ5VGV4dChNb2RpZnlFdmVudCBldnQpIAotCQkJCSAgICAgICAgICAgIHsKLQkJCQkgICAgICAgICAgICAgIHN0YXR1c0xpc3RlbmVyXy5oYW5kbGVFdmVudCggbnVsbCApOwotCSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAgCQkJCQkgIAotICAgIC8vIG1lc3NhZ2UgYXJlYQotICAgIG1lc3NhZ2VUZXh0XyA9IHVpVXRpbHMuY3JlYXRlVGV4dChwYXJlbnQsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9OT19MQUJFTCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX05PX0xBQkVMLCBudWxsLCBTV1QuV1JBUCB8IFNXVC5NVUxUSSB8IFNXVC5SRUFEX09OTFkpOwotICAgIG1lc3NhZ2VUZXh0Xy5zZXRCYWNrZ3JvdW5kKHBhcmVudC5nZXRCYWNrZ3JvdW5kKCkpOwotICAgIHNldEVhclByb2plY3RJdGVtcygpOwotICAKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGxpc3RlbmVyc09uKCkKLSAgewotCXByb2plY3RUeXBlXy5hZGRNb2RpZnlMaXN0ZW5lcihwcm9qZWN0VHlwZUxpc3RlbmVyXyk7Ci0JbW9kdWxlUHJvamVjdF8uYWRkTW9kaWZ5TGlzdGVuZXIoIG1vZHVsZVByb2plY3RMaXN0ZW5lcl8gKTsKLQllYXJQcm9qZWN0Xy5hZGRNb2RpZnlMaXN0ZW5lciggZWFyUHJvamVjdExpc3RlbmVyXyApOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgbGlzdGVuZXJzT2ZmKCkKLSAgewotICAgIHByb2plY3RUeXBlXy5yZW1vdmVNb2RpZnlMaXN0ZW5lcihwcm9qZWN0VHlwZUxpc3RlbmVyXyk7Ci0gICAgbW9kdWxlUHJvamVjdF8ucmVtb3ZlTW9kaWZ5TGlzdGVuZXIoIG1vZHVsZVByb2plY3RMaXN0ZW5lcl8gKTsKLSAgICBlYXJQcm9qZWN0Xy5yZW1vdmVNb2RpZnlMaXN0ZW5lciggZWFyUHJvamVjdExpc3RlbmVyXyApOyAgCi0gIH0KLSAgICAKLSAgcHVibGljIFN0cmluZyBnZXRQcm9qZWN0TmFtZSgpCi0gIHsKLQlyZXR1cm4gbW9kdWxlUHJvamVjdF8uZ2V0VGV4dCgpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0TmFtZSggU3RyaW5nIG5hbWUgKQotICB7Ci0JbGlzdGVuZXJzT2ZmKCk7Ci0gICAgbW9kdWxlUHJvamVjdF8uc2V0VGV4dCggbmFtZSApOwotICAgIGhhbmRsZVByb2plY3RDaGFuZ2VkKCk7Ci0gICAgdXBkYXRlRUFSU3RhdGUoKTsKLQlsaXN0ZW5lcnNPbigpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldEVhclByb2plY3ROYW1lKCkKLSAgewotICAgIHJldHVybiBlYXJQcm9qZWN0Xy5nZXRUZXh0KCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVhclByb2plY3ROYW1lKCBTdHJpbmcgbmFtZSApCi0gIHsgCi0JbGlzdGVuZXJzT2ZmKCk7Ci0JZWFyUHJvamVjdF8uc2V0VGV4dCggbmFtZSApOwotCWxpc3RlbmVyc09uKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENvbXBvbmVudFR5cGUoIFN0cmluZyB0eXBlICkKLSAgewotICAgIGxpc3RlbmVyc09mZigpOwotICAgIGlmICh0eXBlICE9IG51bGwgJiYgdHlwZS5sZW5ndGgoKT4wKQotICAgIHsKLSAgICAgIFN0cmluZyBsYWJlbCA9IEZhY2V0VXRpbHMuZ2V0VGVtcGxhdGVMYWJlbEJ5SWQodHlwZSk7Ci0JICBwcm9qZWN0VHlwZV8uc2V0VGV4dChsYWJlbCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHByb2plY3RUeXBlXy5zZXRUZXh0KCIiKTsKLSAgICAKLSAgICBoYW5kbGVQcm9qZWN0VHlwZUNoYW5nZWQoKTsKLSAgICBsaXN0ZW5lcnNPbigpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldENvbXBvbmVudFR5cGUoKQotICB7Ci0gICAgaW50IGlkeCA9IHByb2plY3RUeXBlXy5nZXRTZWxlY3Rpb25JbmRleCgpOwotICAgIGlmICh0ZW1wbGF0ZXNfICE9IG51bGwgJiYgaWR4ID4gLTEpCi0gICAgewotICAgICAgcmV0dXJuIHRlbXBsYXRlc19baWR4XTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFN0cmluZyB0ZW1wbGF0ZUxhYmVsID0gcHJvamVjdFR5cGVfLmdldFRleHQoKTsKLSAgICAgIFN0cmluZyB0ZW1wbGF0ZUlkID0gRmFjZXRVdGlscy5nZXRUZW1wbGF0ZUlkQnlMYWJlbCh0ZW1wbGF0ZUxhYmVsKTsKLSAgICAgIHJldHVybiB0ZW1wbGF0ZUlkOwotICAgIH0KLQotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXROZWVkRUFSKCkKLSAgewotICAgIHJldHVybiBuZWVkRUFSXzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0TmVlZEVBUihib29sZWFuIGIpCi0gIHsKLSAgICBsaXN0ZW5lcnNPZmYoKTsKLSAgICBuZWVkRUFSXyA9IGI7Ci0gICAgaWYgKG5lZWRFQVJfKQotICAgIHsKLSAgICAgZWFyUHJvamVjdF8uc2V0RW5hYmxlZCh0cnVlKTsKLSAgICAgcG9wdWxhdGVFQVJDb21ib3MoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGVhclByb2plY3RfLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgZWFyUHJvamVjdF8uc2V0VGV4dCgiIik7Ci0gICAgfQotICAgIGxpc3RlbmVyc09uKCk7Ci0gIH0gICAgCi0KLSAgcHVibGljIHZvaWQgc2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoVHlwZVJ1bnRpbWVTZXJ2ZXIgdHJzKQotICB7Ci0gICAgdHJzSWRzXyA9IHRyczsKLSAgICBpZiAoZWFyUHJvamVjdF8gIT0gbnVsbCkKLSAgICB7Ci0gICAgCWxpc3RlbmVyc09mZigpOwotICAgICAgICB1cGRhdGVFQVJTdGF0ZSgpOwotICAgICAgICBsaXN0ZW5lcnNPbigpOwkKLSAgICB9CQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZWZyZXNoUHJvamVjdEl0ZW1zKCkKLSAgewotICAgIGxpc3RlbmVyc09mZigpOwotICAgIFN0cmluZyBzZWxlY3RlZE1vZHVsZVByb2plY3QgPSBtb2R1bGVQcm9qZWN0Xy5nZXRUZXh0KCk7ICAgIAotICAgIFN0cmluZyBydW50aW1lSWQgPSB0cnNJZHNfLmdldFJ1bnRpbWVJZCgpOwotICAgIFN0cmluZyB0eXBlSWQgPSB0cnNJZHNfLmdldFR5cGVJZCgpOwotICAgIAotICAgIC8vR2V0IGFsbCB0aGUgcHJvamVjdHMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSB0eXBlIGFuZCBydW50aW1lCi0gICAgU3RyaW5nW10gcHJvamVjdE5hbWVzID0gbnVsbDsKLSAgICBpZiAoaXNDbGllbnRfKQotICAgIHsKLSAgICAgIHByb2plY3ROYW1lcyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFByb2plY3RzRm9yQ2xpZW50VHlwZUFuZFJ1bnRpbWUodHlwZUlkLCBydW50aW1lSWQpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcHJvamVjdE5hbWVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UHJvamVjdHNGb3JTZXJ2aWNlVHlwZUFuZFJ1bnRpbWUodHlwZUlkLCBydW50aW1lSWQpOwotICAgIH0KLSAgICAKLSAgICBtb2R1bGVQcm9qZWN0Xy5zZXRJdGVtcyhwcm9qZWN0TmFtZXMpOwotICAgIG1vZHVsZVByb2plY3RfLnNldFRleHQoc2VsZWN0ZWRNb2R1bGVQcm9qZWN0KTsKLSAgICBoYW5kbGVQcm9qZWN0Q2hhbmdlZCgpOwotICAgIHVwZGF0ZUVBUlN0YXRlKCk7Ci0gICAgbGlzdGVuZXJzT24oKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RWFyUHJvamVjdEl0ZW1zKCkKLSAgewotICAgIElWaXJ0dWFsQ29tcG9uZW50W10gZWFycyA9IEoyRUVVdGlscy5nZXRBbGxFQVJDb21wb25lbnRzKCk7Ci0gICAgU3RyaW5nW10gZWFyUHJvamVjdE5hbWVzID0gbmV3IFN0cmluZ1tlYXJzLmxlbmd0aF07Ci0gICAgZm9yIChpbnQgaT0wOyBpPGVhclByb2plY3ROYW1lcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBlYXJQcm9qZWN0TmFtZXNbaV09ZWFyc1tpXS5nZXRQcm9qZWN0KCkuZ2V0TmFtZSgpOwotICAgIH0KLSAgICBlYXJQcm9qZWN0Xy5zZXRJdGVtcyhlYXJQcm9qZWN0TmFtZXMpOwotICAgIAotICAgIGlmIChlYXJQcm9qZWN0TmFtZXMubGVuZ3RoID4gMCkKLSAgICAgIGVhclByb2plY3RfLnNlbGVjdCgwKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZVByb2plY3RUeXBlQ2hhbmdlZCgpCi0gIHsKLSAgICB1cGRhdGVFQVJTdGF0ZSgpOyAgICAKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZVByb2plY3RDaGFuZ2VkKCkKLSAgeyAKLSAgICB1cGRhdGVUZW1wbGF0ZXMoKTsgCi0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCB1cGRhdGVUZW1wbGF0ZXMoKQotICB7Ci0gICAgU3RyaW5nIHByb2plY3ROYW1lID0gbW9kdWxlUHJvamVjdF8uZ2V0VGV4dCgpOwotICAgIGlmIChwcm9qZWN0TmFtZSAhPSBudWxsICYmIHByb2plY3ROYW1lLmxlbmd0aCgpPjApCi0gICAgewotICAgICAgSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChwcm9qZWN0TmFtZSk7Ci0gICAgICBpZiAocHJvamVjdC5leGlzdHMoKSkKLSAgICAgIHsKLSAgICAgICAgcHJvamVjdFR5cGVfLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgICBwcm9qZWN0VHlwZV8uZGVzZWxlY3RBbGwoKTsgICAgICAgIAotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBwb3B1bGF0ZVByb2plY3RUeXBlQ29tYm8oKTsKLSAgICAgICAgcHJvamVjdFR5cGVfLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgICB9ICAgICAgCi0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgcG9wdWxhdGVQcm9qZWN0VHlwZUNvbWJvKCkKLSAgewotICAgIC8vR2V0IHRoZSBvbGQgdmFsdWUgaWYgdGhlcmUgd2FzIG9uZS4KLSAgICBTdHJpbmcgb2xkVGVtcGxhdGVJZCA9IGdldENvbXBvbmVudFR5cGUoKTsKLSAgICAKLSAgICBTdHJpbmdbXSB0ZW1wbGF0ZXMgPSBudWxsOwotICAgIGlmICh0cnNJZHNfICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGlzQ2xpZW50XykKLSAgICAgIHsKLSAgICAgICAgdGVtcGxhdGVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50UHJvamVjdFRlbXBsYXRlcyh0cnNJZHNfLmdldFR5cGVJZCgpLCB0cnNJZHNfLmdldFJ1bnRpbWVJZCgpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgdGVtcGxhdGVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmljZVByb2plY3RUZW1wbGF0ZXModHJzSWRzXy5nZXRUeXBlSWQoKSwgdHJzSWRzXy5nZXRSdW50aW1lSWQoKSk7ICAgICAgCi0gICAgICB9Ci0gICAgCi0gICAgICBTdHJpbmdbXSB0ZW1wbGF0ZUxhYmVscyA9IEZhY2V0VXRpbHMuZ2V0VGVtcGxhdGVMYWJlbHModGVtcGxhdGVzKTsKLSAgICAgIHByb2plY3RUeXBlXy5zZXRJdGVtcyh0ZW1wbGF0ZUxhYmVscyk7Ci0gICAgICB0ZW1wbGF0ZXNfID0gdGVtcGxhdGVzOwotICAgICAgCi0gICAgICBpZiAodGVtcGxhdGVzLmxlbmd0aCA+IDApCi0gICAgICB7Ci0gICAgICAKLSAgICAgICAgLy9TZWxlY3QgdGhlIHByZXZpb3VzIHRlbXBsYXRlIHNlbGVjdGlvbiBpZiB0aGF0IG9uZSBpcyBpbiB0aGUgbGlzdC4KLSAgICAgICAgaW50IGlkeCA9IGdldEluZGV4T2ZUZW1wbGF0ZUlkKHRlbXBsYXRlcywgb2xkVGVtcGxhdGVJZCk7Ci0gICAgICAgIGlmIChpZHggPiAtMSkgICAgICAgIAotICAgICAgICB7Ci0gICAgICAgICAgcHJvamVjdFR5cGVfLnNlbGVjdChpZHgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIFNlbGVjdCB0aGUgcHJlZmVycmVkIGNsaWVudCBwcm9qZWN0IHR5cGUuCi0gICAgICAgICAgUHJvamVjdFRvcG9sb2d5Q29udGV4dCBwdGMgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFByb2plY3RUb3BvbG9neUNvbnRleHQoKTsKLSAgICAgICAgICBTdHJpbmdbXSBwcmVmZXJyZWRUZW1wbGF0ZUlkcyA9IG51bGw7Ci0gICAgICAgICAgaWYgKGlzQ2xpZW50XykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwcmVmZXJyZWRUZW1wbGF0ZUlkcyA9IHB0Yy5nZXRDbGllbnRUeXBlcygpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgcHJlZmVycmVkVGVtcGxhdGVJZHMgPSBwdGMuZ2V0U2VydmljZVR5cGVzKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIGJvb2xlYW4gc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICAgICAgICBvdXRlcjogZm9yIChpbnQgaiA9IDA7IGogPCBwcmVmZXJyZWRUZW1wbGF0ZUlkcy5sZW5ndGg7IGorKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlbXBsYXRlcy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgU3RyaW5nIHRlbXBsYXRlSWQgPSB0ZW1wbGF0ZXNbaV07Ci0gICAgICAgICAgICAgIGlmICh0ZW1wbGF0ZUlkLmVxdWFscyhwcmVmZXJyZWRUZW1wbGF0ZUlkc1tqXSkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcm9qZWN0VHlwZV8uc2VsZWN0KGkpOwotICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhayBvdXRlcjsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmICghc2VsZWN0ZWQpCi0gICAgICAgICAgewotICAgICAgICAgICAgcHJvamVjdFR5cGVfLnNlbGVjdCgwKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgCi0KLSAgcHJpdmF0ZSBpbnQgZ2V0SW5kZXhPZlRlbXBsYXRlSWQoU3RyaW5nW10gdGVtcGxhdGVJZHMsIFN0cmluZyB0ZW1wbGF0ZUlkKQotICB7Ci0gICAgZm9yIChpbnQgaT0wOyBpPHRlbXBsYXRlSWRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmICh0ZW1wbGF0ZUlkc1tpXS5lcXVhbHModGVtcGxhdGVJZCkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBpOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gLTE7ICAgIAotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgdXBkYXRlRUFSU3RhdGUoKQotICB7Ci0gICAgICBpZighcHJvamVjdE5lZWRzRUFSKG1vZHVsZVByb2plY3RfLmdldFRleHQoKSkpCi0gICAgICB7Ci0JICAgIGVhclByb2plY3RfLnNldEVuYWJsZWQoZmFsc2UpOyAgIAotICAgICAgICBlYXJQcm9qZWN0Xy5zZXRUZXh0KCIiKTsKLSAgICAgICAgbmVlZEVBUl8gPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgbmVlZEVBUl8gPSB0cnVlOwotICAgICAgICBlYXJQcm9qZWN0Xy5zZXRFbmFibGVkKHRydWUpOwotICAgICAgICBwb3B1bGF0ZUVBUkNvbWJvcygpOwotICAgICAgfQotICAgIAotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHBvcHVsYXRlRUFSQ29tYm9zKCkKLSAgewotICAgIGVhclByb2plY3RfLnJlbW92ZUFsbCgpOyAgICAKLSAgICBzZXRFYXJQcm9qZWN0SXRlbXMoKTsgCi0gICAgCi0gICAgU3RyaW5nIGVhck5hbWUgPSBEZWZhdWx0aW5nVXRpbHMuZ2V0RGVmYXVsdEVBUlByb2plY3ROYW1lKG1vZHVsZVByb2plY3RfLmdldFRleHQoKSk7Ci0gICAgZWFyUHJvamVjdF8uc2V0VGV4dChlYXJOYW1lKTsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBwcm9qZWN0TmVlZHNFQVIoU3RyaW5nIHByb2plY3ROYW1lKQotICB7Ci0gICAgLy9JZiB0aGUgcHJvamVjdCBpcyBhIHNpbXBsZSBKYXZhIHByb2plY3Qgb3IgdGhlIHByb2plY3QgdHlwZSBpcyAKLSAgICAvL0phdmEgdXRpbGl0eSByZXR1cm4gZmFsc2UuCi0gICAgaWYgKHByb2plY3ROYW1lICE9IG51bGwgJiYgcHJvamVjdE5hbWUubGVuZ3RoKCk+MCkKLSAgICB7Ci0gICAgICBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLSAgICAgIGlmIChwcm9qZWN0LmV4aXN0cygpKQotICAgICAgewotICAgICAgICBpZiAoRmFjZXRVdGlscy5pc0phdmFQcm9qZWN0KHByb2plY3QpKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy9Qcm9qZWN0IGRpZG4ndCBydWxlIG91dCB0aGUgbmVlZCBmb3IgYW4gRUFSCi0gICAgLy9zbyBjaGVjayB0aGUgcHJvZWN0IHR5cGUKLSAgICBTdHJpbmcgdGVtcGxhdGVJZCA9IGdldENvbXBvbmVudFR5cGUoKTsKLSAgICBpZiAodGVtcGxhdGVJZCAhPSBudWxsICYmIHRlbXBsYXRlSWQubGVuZ3RoKCk+MCkKLSAgICB7Ci0gICAgICBpZiAoRmFjZXRVdGlscy5pc1V0aWxpdHlUZW1wbGF0ZSh0ZW1wbGF0ZUlkKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICAgICAgCi0JLy9Qcm9qZWN0IG9yIHByb2plY3QgdHlwZSBkaWRuJ3QgcnVsZSBvdXQgdGhlIG5lZWQgZm9yIGFuIEVBUgotICAgIC8vc28gY2hlY2sgdGhlIHNlcnZlciB0eXBlLgotICAgIGlmICh0cnNJZHNfICE9IG51bGwgJiYgdHJzSWRzXy5nZXRTZXJ2ZXJJZCgpICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIHRhcmdldElkID0gU2VydmVyVXRpbHMuZ2V0UnVudGltZVRhcmdldElkRnJvbUZhY3RvcnlJZCh0cnNJZHNfLmdldFNlcnZlcklkKCkpOwotICAJICBpZiAodGFyZ2V0SWQhPW51bGwgJiYgdGFyZ2V0SWQubGVuZ3RoKCk+MCkKLSAgCSAgewotICAJICAgIGlmICghU2VydmVyVXRpbHMuaXNUYXJnZXRWYWxpZEZvckVBUih0YXJnZXRJZCwiMTMiKSkgLy9ybSBqMmVlCi0gIAkgICAgewotICAJICAgICAgcmV0dXJuIGZhbHNlOwotICAJICAgIH0KLSAgCSAgfQotICAgIH0KLSAgCSAKLSAgCXJldHVybiB0cnVlOyAgICAKLSAgfQotICAKLSAgCi0gIHByaXZhdGUgSVN0YXR1cyBoYW5kbGVTZXRNZXNzYWdlVGV4dCgpIHsKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgdHJ5IHsKLSAgICAgIGJ5dGUgcmVzdWx0ID0gKGJ5dGUpIDA7Ci0gICAgICBpZiAobW9kdWxlUHJvamVjdF8uZ2V0VGV4dCgpLmxlbmd0aCgpICE9IDAgJiYgZWFyUHJvamVjdF8uZ2V0VGV4dCgpLmxlbmd0aCgpICE9IDApIHsKLSAgICAgICAgU3RyaW5nIHByb2plY3RUZXh0ID0gbW9kdWxlUHJvamVjdF8uZ2V0VGV4dCgpOwotICAgICAgICBTdHJpbmcgZWFyVGV4dCA9IGVhclByb2plY3RfLmdldFRleHQoKTsKLSAgICAgICAgSVByb2plY3QgcHJvamVjdCA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldFByb2plY3QocHJvamVjdFRleHQpOwotICAgICAgICBJUHJvamVjdCBlYXIgPSBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKS5nZXRQcm9qZWN0KGVhclRleHQpOwotICAgICAgICBpZiAocHJvamVjdCAhPSBudWxsKSB7Ci0gICAgICAgICAgaWYgKCFwcm9qZWN0LmV4aXN0cygpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSAoYnl0ZSkgKHJlc3VsdCB8IENSRUFURV9QUk9KRUNUKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKCFlYXIuZXhpc3RzKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IChieXRlKSAocmVzdWx0IHwgQ1JFQVRFX0VBUik7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKHByb2plY3QuZXhpc3RzKCkgJiYgSjJFRVV0aWxzLmV4aXN0cyhwcm9qZWN0KSAmJiBlYXIuZXhpc3RzKCkgJiYgSjJFRVV0aWxzLmV4aXN0cyhlYXIpKSB7Ci0gICAgICAgICAgICBpZiAoIUoyRUVVdGlscy5pc0NvbXBvbmVudEFzc29jaWF0ZWQoZWFyLCBwcm9qZWN0KSkgcmVzdWx0ID0gKGJ5dGUpIChyZXN1bHQgfCBBRERfRUFSX0FTU09DSUFUSU9OKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmIChpc0NsaWVudF8pIHsKLSAgICAgICAgbWVzc2FnZVRleHRfLnNldFRleHQoZ2V0VmFsaWRhdGlvbk1lc3NhZ2UocmVzdWx0LCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0NMSUVOVF9TVUIpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBtZXNzYWdlVGV4dF8uc2V0VGV4dChnZXRWYWxpZGF0aW9uTWVzc2FnZShyZXN1bHQsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfU0VSVklDRV9TVUIpKTsKLSAgICAgIH0KLSAgICAgIHBhcmVudF8ubGF5b3V0KCk7ICAvL2ZvcmNlIG1lc3NhZ2UgYXJlYSByZXNpemUvd3JhcAotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfTVNHX1ZBTElEQVRJT05fSU5URVJOQUxfRVJST1IsIGUgKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0VmFsaWRhdGlvbk1lc3NhZ2UoYnl0ZSByZXN1bHQsIFN0cmluZyBzZXJ2aWNlT3JDbGllbnQpIHsKLSAgICBTdHJpbmcgbXNnID0gbnVsbDsKLSAgICBzd2l0Y2ggKHJlc3VsdCkgewotICAgIGNhc2UgMDoKLSAgICAgIHJldHVybiAiIjsKLSAgICBjYXNlIDE6Ci0gICAgY2FzZSA1OgotICAgICAgbXNnID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19QUk9KRUNUX1dJTExfQkVfQ1JFQVRFRDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICBjYXNlIDY6Ci0gICAgICBtc2cgPSBDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VBUl9XSUxMX0JFX0NSRUFURUQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDM6Ci0gICAgY2FzZSA3OgotICAgICAgbXNnID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19QUk9KRUNUX0FORF9FQVJfQ1JFQVRFRDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgNDoKLSAgICAgIG1zZyA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRUFSX1dJTExfQkVfQVNTT0NJQVRFRDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gbXNnICE9IG51bGwgPyBOTFMuYmluZChtc2csIG5ldyBPYmplY3RbXSB7IHNlcnZpY2VPckNsaWVudH0pIDogIiI7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBnZXRTdGF0dXMoKSAKLSAgewotICAgIElTdGF0dXMgZmluYWxTdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIGhhbmRsZVNldE1lc3NhZ2VUZXh0KCk7Ci0gICAgU3RyaW5nIHByb2plY3RUZXh0ID0gbW9kdWxlUHJvamVjdF8uZ2V0VGV4dCgpOwotICAgIFN0cmluZyBlYXJUZXh0ID0gZWFyUHJvamVjdF8uZ2V0VGV4dCgpOwotICAgIAotICAgIGlmIChwcm9qZWN0VGV4dD09bnVsbCB8fCBwcm9qZWN0VGV4dC5sZW5ndGgoKT09MCkKLSAgICB7Ci0gICAgICBpZiAoaXNDbGllbnRfKQotICAgICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfQ0xJRU5UX1BST0pFQ1RfRU1QVFksIG5ldyBTdHJpbmdbXXsiIn0gKSApOwotICAgICAgZWxzZQotICAgICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfU0VSVklDRV9QUk9KRUNUX0VNUFRZLCBuZXcgU3RyaW5nW117IiJ9ICkgKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG5lZWRFQVJfICYmIChlYXJUZXh0PT1udWxsIHx8IGVhclRleHQubGVuZ3RoKCk9PTApKQotICAgIHsKLSAgICAgIGlmIChpc0NsaWVudF8pCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19DTElFTlRfRUFSX0VNUFRZLCBuZXcgU3RyaW5nW117IiJ9ICkgKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1NFUlZJQ0VfRUFSX0VNUFRZLCBuZXcgU3RyaW5nW117IiJ9ICkgKTsKLSAgICAgIH0gICAgICAKLSAgICB9Ci0gICAgCi0gICAgLy9JZiB0aGUgcHJvamVjdCBhbmQgRUFSIGJvdGggZXhpc3QgYW5kIHRoZSBwcm9qZWN0IGlzIG5vdCBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCB0aGUgRUFSLCBlbnN1cmUKLSAgICAvL3RoZXkgY2FuIGJlIGFzc29jaWF0ZWQuCi0gICAgaWYgKG5lZWRFQVJfKQotICAgIHsKLSAgICAgIElQcm9qZWN0IHAgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QocHJvamVjdFRleHQudHJpbSgpKTsKLSAgICAgIElQcm9qZWN0IGVwID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KGVhclRleHQudHJpbSgpKTsKLSAgICAgIGlmIChwLmV4aXN0cygpICYmIGVwLmV4aXN0cygpKQotICAgICAgewotICAgICAgICBpZiAoIUoyRUVVdGlscy5pc0NvbXBvbmVudEFzc29jaWF0ZWQoZXAscCkpCi0gICAgICAgIHsKLSAgICAgICAgICBib29sZWFuIGFzc29jaWF0ZVN0YXR1cyA9IEoyRUVVdGlscy5jYW5Bc3NvY2lhdGVQcm9qZWN0VG9FQVJXaXRob3V0V2FybmluZyhwLCBlcCk7Ci0gICAgICAgICAgaWYgKCFhc3NvY2lhdGVTdGF0dXMpCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKGlzQ2xpZW50XykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLndhcm5pbmdTdGF0dXMoIE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfQ0xJRU5UX0NBTk5PVF9BU1NPQ0lBVEUsIG5ldyBTdHJpbmdbXXtwLmdldE5hbWUoKSwgZXAuZ2V0TmFtZSgpfSApICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHJldHVybiBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKCBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1NFUlZJQ0VfQ0FOTk9UX0FTU09DSUFURSwgbmV3IFN0cmluZ1tde3AuZ2V0TmFtZSgpLCBlcC5nZXROYW1lKCl9ICkgKTsKLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZpbmFsU3RhdHVzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9DbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9DbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMmVkNDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzY4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUyNCAgIDE0MjYzNSBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA2MDYwOCAgIDE0NTUyOSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAzMjUgICAxODQ3NjEgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODA2MTAgICAyMjQ0MzMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIE5lZWQgYmV0dGVyIGVycm9yIG1lc3NhZ2UgaW4gc2FtcGxlIEpTUCBnZW5lcmF0aW9uIHdoZW4gSmF2YSBwcm94eSBiZWFuIGRvZXMgbm90IGV4aXN0IChjb250LikKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3Q7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0LnRlc3QuV2ViU2VydmljZVRlc3RFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldlYlNlcnZpY2VUZXN0UmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuSUNvbW1hbmRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5zZWxlY3Rpb24uQm9vbGVhblNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5zZWxlY3Rpb24uU2VsZWN0aW9uTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklTdGF0dXNIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VUZXN0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuVGVzdEluZm87Ci0KLQotLyoKLSogVGhlIEpTUEdlbmVyYXRpb24gdGFzayBydW5zIHRoZSBqc3AgZ2VuZXJhdGlvbiBlbmdpbmUgZm91bmQgaW4gdGhlIAotKiBKQldpemFyZCBQbHVnaW4KLSoKLSoKLSovCi1wdWJsaWMgY2xhc3MgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgV2ViU2VydmljZVRlc3RSZWdpc3RyeSB0ZXN0UmVnaXN0cnk7Ci0gIHByaXZhdGUgU2VsZWN0aW9uTGlzdCB0ZXN0RmFjaWxpdGllczsKLSAgcHJpdmF0ZSBTdHJpbmcganNwRm9sZGVyOwotICBwcml2YXRlIEJvb2xlYW5TZWxlY3Rpb25bXSBtZXRob2RzOwotICBwcml2YXRlIFN0cmluZyBzYW1wbGVTZXJ2ZXJUeXBlSUQ7Ci0gIHByaXZhdGUgSVNlcnZlciBzYW1wbGVFeGlzdGluZ1NlcnZlcjsKLSAgcHJpdmF0ZSBTdHJpbmcgcHJveHlCZWFuOwotICBwcml2YXRlIGJvb2xlYW4gcnVuVGVzdENsaWVudDsKLSAgcHJpdmF0ZSBib29sZWFuIGNhblJ1blRlc3RDbGllbnQgPSB0cnVlOwotICBwcml2YXRlIFN0cmluZyBzYW1wbGVQcm9qZWN0OwotICBwcml2YXRlIFN0cmluZyBzYW1wbGVQOwotICBwcml2YXRlIFN0cmluZyBjbGllbnRQcm9qZWN0OwotICBwcml2YXRlIFN0cmluZyBjbGllbnRQOwotICBwcml2YXRlIFN0cmluZyBjbGllbnRDOwotICBwcml2YXRlIGJvb2xlYW4gY2xpZW50TmVlZEVBUjsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50RWFyUHJvamVjdE5hbWU7Ci0gIHByaXZhdGUgU3RyaW5nIGNsaWVudEVhckNvbXBvbmVudE5hbWU7Ci0gIHByaXZhdGUgVHlwZVJ1bnRpbWVTZXJ2ZXIgc2VydmVySWRzOwotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlUHJvamVjdDsKLSAgcHJpdmF0ZSBTdHJpbmcgc2VydmljZVA7Ci0gIHByaXZhdGUgU3RyaW5nIHdzZGxTZXJ2aWNlVVJMOwotICBwcml2YXRlIGJvb2xlYW4gaXNUZXN0V2lkZ2V0ID0gZmFsc2U7Ci0gIHByaXZhdGUgU3RyaW5nIHNldEVuZHBvaW50TWV0aG9kOwotICBwcml2YXRlIExpc3QgZW5kcG9pbnRzOwotCi0gIHB1YmxpYyBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kICgpCi0gIHsKLSAgICB0ZXN0UmVnaXN0cnkgPSBXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgeyAgICAKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgCVN0cmluZyBjbGllbnRUZXN0SUQgPSB0ZXN0RmFjaWxpdGllcy5nZXRTZWxlY3Rpb24oKTsKLSAgCQotCS8vR2V0IHRoZSB3ZWJzZXJ2aWNlIGV4dGVuc2lvbgotCQotCVdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uIHdzY3RlID0gKFdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uKXRlc3RSZWdpc3RyeS5nZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5TmFtZShjbGllbnRUZXN0SUQpOwotCVRlc3RJbmZvIHRlc3RJbmZvID0gZ2V0VGVzdEluZm8oKTsKLQkKLQlpZiAod3NjdGUuaXNDb2RlR2VuTmVlZGVkKCkgJiYgdGVzdEluZm8uZ2V0UHJveHlCZWFuKCkgPT0gbnVsbCkKLSAgICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfSlRTX1BST1hZX05PVF9DT01QSUxFRCk7Ci0JCi0JSVdlYlNlcnZpY2VUZXN0ZXIgaXdzdCA9IChJV2ViU2VydmljZVRlc3Rlcil3c2N0ZS5nZXRXZWJTZXJ2aWNlRXhlY3V0YWJsZUV4dGVuc2lvbigpOwkJCi0JCQotCXN0YXR1cyA9IGNvbW1hbmRGYWN0b3J5RXhlY3V0aW9uKGl3c3QuZ2VuZXJhdGUodGVzdEluZm8pLGVudiwgbW9uaXRvciApOwotCWlmKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUil7Ci0JICByZXR1cm4gc3RhdHVzOwkKLQl9Ci0JCi0JdGVzdEluZm8uc2V0UnVuVGVzdENsaWVudChydW5UZXN0Q2xpZW50KTsKLQkKLQlpZihjYW5SdW5UZXN0Q2xpZW50KXsKLQkJc3RhdHVzID0gY29tbWFuZEZhY3RvcnlFeGVjdXRpb24oaXdzdC5sYXVuY2godGVzdEluZm8pLGVudiwgbW9uaXRvciApOwotCQlpZihzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpewotCQkJcmV0dXJuIHN0YXR1czsJCi0JCX0KLQl9Ci0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotICAKLSAgcHJpdmF0ZSBJU3RhdHVzIGNvbW1hbmRGYWN0b3J5RXhlY3V0aW9uKElDb21tYW5kRmFjdG9yeSBjb21tYW5kRmFjdG9yeSxJRW52aXJvbm1lbnQgZW52LCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotICB7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOyAgCQotCQotCXdoaWxlKGNvbW1hbmRGYWN0b3J5Lmhhc05leHQoKSkKLSAgewotICAgIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGNvbW1hbmRGYWN0b3J5LmdldE5leHRDb21tYW5kKCk7Ci0gICAgb3BlcmF0aW9uLnNldEVudmlyb25tZW50KCBlbnYgKTsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzdGF0dXMgPSBvcGVyYXRpb24uZXhlY3V0ZSggbW9uaXRvciwgbnVsbCApOwotICAgIH0KLSAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIGV4YyApOyAgCi0gICAgfQotICAgIAotCSAgaWYoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKXsKLQkgICAgSVN0YXR1c0hhbmRsZXIgc0hhbmRsZXIgPSBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpOwotCQlzSGFuZGxlci5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQlyZXR1cm4gc3RhdHVzOwotCSAgfQotICAgIH0KLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0gIAotICAKLSAgLy9IZWxwZXIgbWV0aG9kIHdoaWNoIHNldHMgdXAgdGhlIFRlc3RJbmZvIGRhdGEgc3RydWN0dXJlCi0gIHByaXZhdGUgVGVzdEluZm8gZ2V0VGVzdEluZm8oKQotICB7Ci0JSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIgPSBudWxsOwotCVN0cmluZyBzZXJ2aWNlU2VydmVyVHlwZUlEID0gbnVsbDsKLQkJCi0JLy9zZXJ2aWNlIHNlcnZlciBpbmZvCi0JaWYoc2VydmVySWRzICE9IG51bGwpewotCSAgaWYgKHNlcnZlcklkcy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkgIT0gbnVsbCkgCi0JICAgIHNlcnZpY2VFeGlzdGluZ1NlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlcihzZXJ2ZXJJZHMuZ2V0U2VydmVySW5zdGFuY2VJZCgpKTsKLQl9CQotCWlmIChzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIgIT0gbnVsbCkKLSAgICAgIHNlcnZpY2VTZXJ2ZXJUeXBlSUQgPSBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIuZ2V0U2VydmVyVHlwZSgpLmdldElkKCk7Ci0gICAgCi0JCi0JaWYoY2xpZW50UHJvamVjdCAhPSBudWxsKXsKLSAgCSAgaW50IGluZGV4ID0gY2xpZW50UHJvamVjdC5pbmRleE9mKCIvIik7Ci0gICAgICBpZiAoaW5kZXghPS0xKXsKLSAgICAgICAgY2xpZW50UCA9IGNsaWVudFByb2plY3Quc3Vic3RyaW5nKDAsaW5kZXgpOwotICAgICAgICBjbGllbnRDID0gY2xpZW50UHJvamVjdC5zdWJzdHJpbmcoaW5kZXggKyAxKTsKLSAgICAgIH0KLSAgCX0KLQotICAKLQlpZihzYW1wbGVQcm9qZWN0ICE9IG51bGwpewotCSAgaW50IGluZGV4ID0gc2FtcGxlUHJvamVjdC5pbmRleE9mKCIvIik7Ci0gICAgICBpZiAoaW5kZXghPS0xKXsKLSAgICAgICAgc2FtcGxlUCA9IHNhbXBsZVByb2plY3Quc3Vic3RyaW5nKDAsaW5kZXgpOwotICAgICAgfQotCX0KLQkKLQlUZXN0SW5mbyB0ZXN0SW5mbyA9IG5ldyBUZXN0SW5mbygpOyAgCi0JdGVzdEluZm8uc2V0Q2xpZW50RXhpc3RpbmdTZXJ2ZXIoc2FtcGxlRXhpc3RpbmdTZXJ2ZXIpOwotCXRlc3RJbmZvLnNldENsaWVudFNlcnZlclR5cGVJRChzYW1wbGVTZXJ2ZXJUeXBlSUQpOwotCXRlc3RJbmZvLnNldEpzcEZvbGRlcihqc3BGb2xkZXIpOwotCXRlc3RJbmZvLnNldEV4dGVybmFsQnJvd3NlcihmYWxzZSk7Ci0JdGVzdEluZm8uc2V0RW5kcG9pbnQoZW5kcG9pbnRzKTsKLQl0ZXN0SW5mby5zZXRHZW5lcmF0aW9uUHJvamVjdChzYW1wbGVQKTsKLQl0ZXN0SW5mby5zZXRQcm94eUJlYW4ocHJveHlCZWFuKTsKLQl0ZXN0SW5mby5zZXRTZXRFbmRwb2ludE1ldGhvZChzZXRFbmRwb2ludE1ldGhvZCk7Ci0JdGVzdEluZm8uc2V0Q2xpZW50UHJvamVjdChjbGllbnRQKTsKLQl0ZXN0SW5mby5zZXRDbGllbnRNb2R1bGUoY2xpZW50Qyk7Ci0JdGVzdEluZm8uc2V0Q2xpZW50TmVlZEVBUihjbGllbnROZWVkRUFSKTsKLQl0ZXN0SW5mby5zZXRDbGllbnRFQVJQcm9qZWN0KGNsaWVudEVhclByb2plY3ROYW1lKTsKLQl0ZXN0SW5mby5zZXRDbGllbnRFQVJNb2R1bGUoY2xpZW50RWFyQ29tcG9uZW50TmFtZSk7Ci0JdGVzdEluZm8uc2V0TWV0aG9kcyhtZXRob2RzKTsKLQkKLQkvL2lmIHRoaXMgaXMgYSBjbGllbnQgc2NlbmFyaW8gdGhlIHNlcnZpY2Ugc3R1ZmYgaXMgZW1wdHkKLQlpZihzZXJ2aWNlU2VydmVyVHlwZUlEID09IG51bGwpewotCSAgc2VydmljZVNlcnZlclR5cGVJRCA9IHNhbXBsZVNlcnZlclR5cGVJRDsKLQkgIHNlcnZpY2VFeGlzdGluZ1NlcnZlciA9IHNhbXBsZUV4aXN0aW5nU2VydmVyOwotCX0KLQkKLQkKLQl0ZXN0SW5mby5zZXRTZXJ2aWNlU2VydmVyVHlwZUlEKHNlcnZpY2VTZXJ2ZXJUeXBlSUQpOwotCXRlc3RJbmZvLnNldFNlcnZpY2VFeGlzdGluZ1NlcnZlcihzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIpOwotCS8vd3NkbCBzdHVmZgotCXRlc3RJbmZvLnNldFNlcnZpY2VQcm9qZWN0KGdldFdTRExQcm9qZWN0KCkpOwotCXRlc3RJbmZvLnNldFdzZGxTZXJ2aWNlVVJMKHdzZGxTZXJ2aWNlVVJMKTsKLQlyZXR1cm4gdGVzdEluZm87Ci0gIH0KLSAgIAotCi0gIAotICAvL1RoZSB0ZXN0IGZhY2lsaXRpZXMgcmV0cmlldmVkIGZyb20gdGhlIGV4dGVuc2lvbgotICAvL3BsdXMgdGhlIGRlZmF1bHQKLSAgcHVibGljIHZvaWQgc2V0VGVzdEZhY2lsaXR5KFNlbGVjdGlvbkxpc3Qgc2VsZWN0aW9uKQotICB7Ci0gICAgdGVzdEZhY2lsaXRpZXMgPSBzZWxlY3Rpb247Ci0gIH0gCi0gIAotICBwdWJsaWMgdm9pZCBzZXRGb2xkZXIoU3RyaW5nIGZvbGRlcikKLSAgewotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRKc3BGb2xkZXIoU3RyaW5nIGpzcEZvbGRlcikKLSAgewotICAJdGhpcy5qc3BGb2xkZXIgPSBqc3BGb2xkZXI7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldE1ldGhvZHMoQm9vbGVhblNlbGVjdGlvbltdIG1ldGhvZHMpCi0gIHsKLSAgICB0aGlzLm1ldGhvZHMgPSBtZXRob2RzOyAgCi0gIH0KLSAKLSAgcHVibGljIHZvaWQgc2V0UnVuVGVzdENsaWVudChib29sZWFuIHJ1blRlc3RDbGllbnQpCi0gIHsKLSAgICB0aGlzLnJ1blRlc3RDbGllbnQgPSBydW5UZXN0Q2xpZW50OwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRQcm94eUJlYW4oU3RyaW5nIHByb3h5QmVhbikKLSAgewotICAJdGhpcy5wcm94eUJlYW4gPSBwcm94eUJlYW47Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNhbXBsZVByb2plY3QoU3RyaW5nIHNhbXBsZVByb2plY3QpCi0gIHsKLSAgCXRoaXMuc2FtcGxlUHJvamVjdCA9IHNhbXBsZVByb2plY3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFByb2plY3QoU3RyaW5nIGNsaWVudFByb2plY3QpCi0gIHsKLSAgCXRoaXMuY2xpZW50UHJvamVjdCA9IGNsaWVudFByb2plY3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNjZW5hcmlvQ29udGV4dChTY2VuYXJpb0NvbnRleHQgc2NlbmFyaW9Db250ZXh0KQotICB7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFRlc3RSZWdpc3RyeShXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5IHRlc3RSZWdpc3RyeSkKLSAgewotICAJdGhpcy50ZXN0UmVnaXN0cnkgPSB0ZXN0UmVnaXN0cnk7Ci0gIH0KLSAgIAotICBwdWJsaWMgdm9pZCBzZXRTYW1wbGVTZXJ2ZXJUeXBlSUQoU3RyaW5nIHNhbXBsZVNlcnZlclR5cGVJRCkKLSAgewotICAJdGhpcy5zYW1wbGVTZXJ2ZXJUeXBlSUQgPSBzYW1wbGVTZXJ2ZXJUeXBlSUQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNhbXBsZUV4aXN0aW5nU2VydmVyKElTZXJ2ZXIgc2FtcGxlRXhpc3RpbmdTZXJ2ZXIpCi0gIHsKLSAgCXRoaXMuc2FtcGxlRXhpc3RpbmdTZXJ2ZXIgPSBzYW1wbGVFeGlzdGluZ1NlcnZlcjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFR5cGVSdW50aW1lU2VydmVyKFR5cGVSdW50aW1lU2VydmVyIGlkcykKLSAgewotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoVHlwZVJ1bnRpbWVTZXJ2ZXIgaWRzKQotICB7Ci0gICAgc2VydmVySWRzID0gaWRzOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFNhbXBsZVNlcnZlclR5cGVJRCgpCi0gIHsKLSAgCXJldHVybiBzYW1wbGVTZXJ2ZXJUeXBlSUQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU2VydmVyIGdldFNhbXBsZUV4aXN0aW5nU2VydmVyKCkKLSAgewotICAJcmV0dXJuIHNhbXBsZUV4aXN0aW5nU2VydmVyOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50U2VydmVyKFN0cmluZyBjbGllbnRTZXJ2ZXIpCi0gIHsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U2VydmVyUHJvamVjdChTdHJpbmcgc2VydmljZVByb2plY3QpCi0gIHsKLSAgCXRoaXMuc2VydmljZVByb2plY3QgPSBzZXJ2aWNlUHJvamVjdDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRXU0RMUHJvamVjdCgpCi0gIHsKLSAgCSBpZihzZXJ2aWNlUHJvamVjdCAhPSBudWxsKXsKLQkgICAgIGludCBpbmRleCA9IHNlcnZpY2VQcm9qZWN0LmluZGV4T2YoIi8iKTsKLSAgICAgICBpZiAoaW5kZXghPS0xKSB7Ci0JCSAgICAgc2VydmljZVAgPSBzZXJ2aWNlUHJvamVjdC5zdWJzdHJpbmcoMCxpbmRleCk7Ci0JICAgICAgIHJldHVybiBzZXJ2aWNlUDsKLSAgICAgICB9Ci0gIAl9CQotCQotICAJcmV0dXJuIGNsaWVudFA7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFdzZGxVUkkoU3RyaW5nIHdzZGxTZXJ2aWNlVVJMKQotICB7Ci0gICAgdGhpcy53c2RsU2VydmljZVVSTCA9IHdzZGxTZXJ2aWNlVVJMOwotICB9Ci0gCi0gIHB1YmxpYyB2b2lkIHNldEdlbmVyYXRlUHJveHkoYm9vbGVhbiBnZW5lcmF0ZVByb3h5KQotICB7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldElzVGVzdFdpZGdldCgpCi0gIHsKLSAgCXJldHVybiBpc1Rlc3RXaWRnZXQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRFYXJQcm9qZWN0TmFtZShTdHJpbmcgY2xpZW50RWFyUHJvamVjdE5hbWUpCi0gIHsKLSAgICAgdGhpcy5jbGllbnRFYXJQcm9qZWN0TmFtZSA9IGNsaWVudEVhclByb2plY3ROYW1lOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRFYXJDb21wb25lbnROYW1lKFN0cmluZyBjbGllbnRFYXJDb21wb25lbnROYW1lKQotICB7Ci0JdGhpcy5jbGllbnRFYXJDb21wb25lbnROYW1lID0gY2xpZW50RWFyQ29tcG9uZW50TmFtZTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q2FuUnVuVGVzdENsaWVudChib29sZWFuIGNhblJ1blRlc3RDbGllbnQpewotCSAgdGhpcy5jYW5SdW5UZXN0Q2xpZW50ID0gY2FuUnVuVGVzdENsaWVudDsKLSAgfQotICAKLSAgLyoqCi0gICAqIEBwYXJhbSBzZXRFbmRwb2ludE1ldGhvZCBUaGUgc2V0RW5kcG9pbnRNZXRob2QgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2V0RW5kcG9pbnRNZXRob2QoU3RyaW5nIHNldEVuZHBvaW50TWV0aG9kKQotICB7Ci0gICAgdGhpcy5zZXRFbmRwb2ludE1ldGhvZCA9IHNldEVuZHBvaW50TWV0aG9kOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gZW5kcG9pbnQgVGhlIGVuZHBvaW50IHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVuZHBvaW50KFN0cmluZyBlbmRwb2ludCkKLSAgewotICAgIGlmIChlbmRwb2ludCAhPSBudWxsICYmIGVuZHBvaW50Lmxlbmd0aCgpID4gMCkKLSAgICB7Ci0gICAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIHYuYWRkKGVuZHBvaW50KTsKLSAgICAgIHNldEVuZHBvaW50cyh2KTsKLSAgICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVuZHBvaW50cyhMaXN0IGVuZHBvaW50cykKLSAgewotICAgIHRoaXMuZW5kcG9pbnRzID0gZW5kcG9pbnRzOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRDbGllbnROZWVkRUFSKCkgewotCQlyZXR1cm4gY2xpZW50TmVlZEVBUjsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRDbGllbnROZWVkRUFSKGJvb2xlYW4gY2xpZW50TmVlZEVBUikgewotCQl0aGlzLmNsaWVudE5lZWRFQVIgPSBjbGllbnROZWVkRUFSOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L0NsaWVudFRlc3RGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvQ2xpZW50VGVzdEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NjM4YWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvQ2xpZW50VGVzdEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA3MjcgICAxNDQzNTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcwNTAyICAgMTgwMzA0IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5Db25kaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQm9vbGVhbkZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci0KLQotcHVibGljIGNsYXNzIENsaWVudFRlc3RGcmFnbWVudCBleHRlbmRzIEJvb2xlYW5GcmFnbWVudAotewotICBwcml2YXRlIGJvb2xlYW4gdGVzdFNlcnZpY2U7Ci0gIHByaXZhdGUgYm9vbGVhbiBnZW5Qcm94eTsgIC8vIFRoaXMgYWN0dWFsbHkgcmVwcmVzZW50IHdoZXRoZXIgY2xpZW50IHRlc3QgaXMgcmVxdWVzdGVkCi0gIHByaXZhdGUgYm9vbGVhbiBsYXVuY2hlZFRlc3QgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIGNhbkdlblByb3h5OwotICAKLSAgcHVibGljIENsaWVudFRlc3RGcmFnbWVudCggU3RyaW5nIGlkICkKLSAgewotICAgIFNlcXVlbmNlRnJhZ21lbnQgY2xpZW50VGVzdFJvb3QgPSBuZXcgU2VxdWVuY2VGcmFnbWVudCgpOwotICAgIENvbmRpdGlvbiAgICAgICAgY29uZGl0aW9uICAgICAgPSBuZXcgQ29uZGl0aW9uKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGV2YWx1YXRlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdFNlcnZpY2UgJiYgZ2VuUHJveHk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgIHNldENvbmRpdGlvbiggY29uZGl0aW9uICk7Ci0gICAgCi0gICAgCi0gICAgQ29uZGl0aW9uIGpzcENvbmRpdGlvbiAgICAgID0gbmV3IENvbmRpdGlvbigpCi0gICAgewotICAgICAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoKQotICAgICAgewotICAgICAgICByZXR1cm4gY2FuR2VuUHJveHk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIFNpbXBsZUZyYWdtZW50IHNpbXBsZUpTUEZyYWdtZW50ID0gbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZCgpLCAiIiApOwotICAgIEJvb2xlYW5GcmFnbWVudCBjaG9pY2VKU1BGcmFnbWVudCA9IG5ldyBCb29sZWFuRnJhZ21lbnQoKTsKLSAgICBjaG9pY2VKU1BGcmFnbWVudC5zZXRUcnVlRnJhZ21lbnQoc2ltcGxlSlNQRnJhZ21lbnQpOwotICAgIGNob2ljZUpTUEZyYWdtZW50LnNldENvbmRpdGlvbihqc3BDb25kaXRpb24pOwotICAgIGNsaWVudFRlc3RSb290LmFkZChjaG9pY2VKU1BGcmFnbWVudCk7Ci0gICAgCi0gICAgY2xpZW50VGVzdFJvb3QuYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIGlkICkgKTsKLSAgICBzZXRUcnVlRnJhZ21lbnQoIGNsaWVudFRlc3RSb290ICk7Ci0gICAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEdlbmVyYXRlUHJveHkoIGJvb2xlYW4gZ2VuUHJveHkgKQotICB7Ci0gICAgdGhpcy5nZW5Qcm94eSA9IGdlblByb3h5OyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENhbkdlbmVyYXRlUHJveHkoIGJvb2xlYW4gY2FuR2VuUHJveHkgKQotICB7Ci0gICAgdGhpcy5jYW5HZW5Qcm94eSA9IGNhbkdlblByb3h5OyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFRlc3RTZXJ2aWNlKCBCb29sZWFuIHRlc3RTZXJ2aWNlICkKLSAgewotICAgIHRoaXMudGVzdFNlcnZpY2UgPSB0ZXN0U2VydmljZS5ib29sZWFuVmFsdWUoKTsgIAotICB9IAotCi0gCi0gICAgCi0gIHB1YmxpYyBib29sZWFuIGdldExhdW5jaGVkVGVzdCgpCi0gIHsKLSAgCXJldHVybiBsYXVuY2hlZFRlc3Q7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L0NsaWVudFRlc3RXaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L0NsaWVudFRlc3RXaWRnZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmViMDE3OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9DbGllbnRUZXN0V2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTI0ICAgMTQyNjM1IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDYwODE1ICAgMTA0ODcwIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBlbmFibGUvZGlzYWJsZSB0ZXN0IHBhZ2UgY29udHJvbHMgYmFzZSBvbiBzZXR0aW5ncyBpbiB0ZXN0IGZhY2lsaXR5IGV4dGVuc2lvbgotICogMjAwNjA4MTUgICAxNTM5MDMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEJyb3dzZSBkb2VzIG5vdCB3b3JrIGluIGdlbmVyYXRlIGNsaWVudCB0ZXN0IHBhZ2UKLSAqIDIwMDgwMzI1ICAgMTg0NzYxIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNDI1ICAgMjIxMjMyIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNTA2ICAgMjI3ODQ4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBEaXNhYmxlZCAiUnVuIG9uIFNlcnZlciIgY2hlY2tib3ggaXMgaW4gY2hlY2tlZCBzdGF0ZQotICogMjAwODA1MjcgICAyMzQxOTIgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODA2MTYgICAyMzcyOTggZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODA2MTkgICAyMzc3OTcgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODA3MjMgICAyNDEzMDMgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODA4MDggICAyNDM2MDIgcmtrbGFpQGNhLmlibS5jb20gICAtIFJheW1vbmQgTGFpLCBmaXggTlBFIHdoZW4gY2hhbmdpbmcgcnVudGltZSAodGhlIHNlcnZlciBjb21ibykKLSAqIDIwMDkwMzAyICAgMjQyNDYyIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIFNhdmUgV2ViIHNlcnZpY2VzIHdpemFyZCBzZXR0aW5ncwotICogMjAwOTAzMjQgICAyNDc1MzUgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBXcm9uZyBzZXJ2ZXIgaW5zdGFuY2UocykgaXMgY2hvc2VuIGR1cmluZyBKQVgtUlBDIHNhbXBsZSBnZW5lcmF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdDsKLQotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uRm9sZGVyUmVzb3VyY2VGaWx0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkxhYmVsc0FuZElkczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5leHQudGVzdC5XZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0LnRlc3QuV2ViU2VydmljZVRlc3RSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLkNvbWJvV2l0aEhpc3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5kaWFsb2cuRGlhbG9nVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25BZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuR3JvdXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGFiZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UcmVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRyZWVJdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnNlbGVjdGlvbi5Cb29sZWFuU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnNlbGVjdGlvbi5TZWxlY3Rpb25MaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlclR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLmludGVybmFsLmZhY2V0cy5GYWNldFV0aWw7Ci0KLQotcHVibGljIGNsYXNzIENsaWVudFRlc3RXaWRnZXQgZXh0ZW5kcyBTaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3IKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgcGx1Z2luSWRfID0gIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSI7Ci0KLSAgLypDT05URVhUX0lEIFBXU00wMDAxIGZvciB0aGUgU2FtcGxlIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXU01fUEFHRSA9ICAiUFdTTTAwMDEiOwotICAvLwotICBwcml2YXRlIEJ1dHRvbiB0ZXN0Q2hlY2tib3hfOwotICAvKkNPTlRFWFRfSUQgUFdTTTAwMDIgZm9yIHRoZSBUZXN0IGNoZWNrIGJveCBvZiB0aGUgU2FtcGxlIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXU01fQ0hFQ0tCT1hfVEVTVCA9ICJQV1NNMDAwMiI7Ci0KLSAgcHJpdmF0ZSBDb21ibyB0ZXN0VHlwZUNvbWJvXzsKLSAgIC8qQ09OVEVYVF9JRCBQV1NNMDAwMyBmb3IgdGhlIFRlc3QgVHlwZSBDb21ibyBib3ggb2YgdGhlIFNhbXBsZSBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QV1NNX0NPTUJPQk9YX1RFU1QgPSAiUFdTTTAwMDMiOwotICAKLSAgcHJpdmF0ZSBDb21ibyBydW50aW1lc0NvbWJvOwotICAvKkNPTlRFWFRfSUQgUFdTTTAwMDQgZm9yIHRoZSBzZXJ2ZXIgdHlwZSBjb21ibyBib3ggb2YgdGhlIFNhbXBsZSBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QV1NNX0NPTUJPQk9YX1NFUlZFUiA9ICJQV1NNMDAwNCI7Ci0gIAotICBwcml2YXRlIENvbWJvIHNlcnZlckluc3RhbmNlVHlwZUNvbWJvXzsKLSAgLypDT05URVhUX0lEIFBXU00wMDA1IGZvciB0aGUgc2VydmVyIGluc3RhbmNlIGNvbWJvIGJveCBvZiB0aGUgU2FtcGxlIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXU01fQ09NQk9CT1hfU0VSVkVSX0lOU1RBTkNFID0gIlBXU00wMDA1IjsKLQotICBwcml2YXRlIFRleHQgIGpzcEZvbGRlclRleHRfOwotICAvKkNPTlRFWFRfSUQgUFdTTTAwMDggZm9yIHRoZSBKU1AgRm9sZGVyIGZpZWxkIG9mIHRoZSBTYW1wbGUgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdTTV9URVhUX0pTUF9GT0xERVIgPSAiUFdTTTAwMDgiOwotCi0gIHByaXZhdGUgQnV0dG9uIHNhbXBsZUZvbGRlckJyb3dzZUJ1dHRvbl87Ci0gIC8qQ09OVEVYVF9JRCBQV1NNMDAwOSBmb3IgdGhlIEpTUCBGb2xkZXIgQnJvd3NlIGJ1dHRvbiBvZiB0aGUgU2FtcGxlIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXU01fQlVUVE9OX0pTUF9GT0xERVJfQlJPV1NFID0gIlBXU00wMDA5IjsKLQotICBwcml2YXRlIFRleHQgcHJvamVjdENvbWJvXzsKLSAgLypDT05URVhUX0lEIFBXU00wMDEwIGZvciB0aGUgUHJvamVjdCBjb21ibyBib3ggb2YgdGhlIFNhbXBsZSBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QV1NNX0NPTUJPX1BST0pFQ1QgPSAiUFdTTTAwMTAiOwotCi0gIHByaXZhdGUgVHJlZSBtZXRob2RzVHJlZV87Ci0KLSAgcHJpdmF0ZSBCdXR0b24gc2VsZWN0QWxsTWV0aG9kc0J1dHRvbl87Ci0gIC8qQ09OVEVYVF9JRCBQV1NNMDAwNiBmb3IgdGhlIFNlbGVjdCBBbGwgYnV0dG9uIG9mIHRoZSBTYW1wbGUgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdTTV9CVVRUT05fU0VMRUNUX0FMTCA9ICJQV1NNMDAwNiI7Ci0KLSAgcHJpdmF0ZSBCdXR0b24gZGVzZWxlY3RBbGxNZXRob2RzQnV0dG9uXzsKLSAgLypDT05URVhUX0lEIFBXU00wMDA3IGZvciB0aGUgRGVzZWxlY3QgQWxsIGJ1dHRvbiBvZiB0aGUgU2FtcGxlIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXU01fQlVUVE9OX0RFU0VMRUNUX0FMTCA9ICJQV1NNMDAwNyI7Ci0KLSAgcHJpdmF0ZSBDb21ib1dpdGhIaXN0b3J5IHNhbXBsZUZvbGRlclRleHRfOwotICAvKkNPTlRFWFRfSUQgUFdTTTAwMTQgZm9yIHRoZSBGb2xkZXIgZmllbGQgb2YgdGhlIFNhbXBsZSBQYWdlKi8gICAKLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QV1NNX1RFWFRfU0FNUExFX0ZPTERFUiA9ICJQV1NNMDAxNCI7Ci0gIHByaXZhdGUgTW9kaWZ5TGlzdGVuZXIgc2FtcGxlRm9sZGVyVGV4dE1vZGlmeUxpc3RlbmVyOwotCi0gIC8vCi0gIHByaXZhdGUgQnV0dG9uIHJ1blRlc3RDaGVja2JveF87ICAKLSAgLypDT05URVhUX0lEIFBXU00wMDE1IGZvciB0aGUgcnVuIHRlc3QgY2hlY2sgYm94IG9mIHRoZSBTYW1wbGUgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdTTV9DSEVDS0JPWF9MQVVOQ0ggPSAiUFdTTTAwMTUiOwotICAvLwotICBwcml2YXRlIFRleHQgZWFyQ29tYm9fOwotICAvKkNPTlRFWFRfSUQgUFdTTTAwMTYgZm9yIHRoZSBFQVIgY29tYm8gYm94IG9mIHRoZSBTYW1wbGUgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdTTV9FQVJfQ09NQk8gPSAiUFdTTTAwMTYiOwotICAKLSAgcHJpdmF0ZSBDb21wb3NpdGUgICAgICAgICAgICBjb21ib0dyb3VwXzsgCi0gIHByaXZhdGUgU2VsZWN0aW9uTGlzdCAgICAgICAgdGVzdEZhY2lsaXRpZXNfOwotICBwcml2YXRlIEZvbGRlclJlc291cmNlRmlsdGVyIGZvbGRlckZpbHRlcl8gPSBuZXcgRm9sZGVyUmVzb3VyY2VGaWx0ZXIoKTsKLSAgcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uXzsKLSAgcHJpdmF0ZSBib29sZWFuIGlzVGVzdFdpZGdldCA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gaXNQb3B1cCA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gaXNXZWJQcm9qZWN0ID0gZmFsc2U7Ci0gIAotICBwcml2YXRlIExhYmVsc0FuZElkcyBydW50aW1lc187Ci0gIHByaXZhdGUgTGFiZWxzQW5kSWRzIHNlcnZlckluc3RhbmNlc187Ci0gIAotICBwcml2YXRlIElQYXRoIHdlYkNvbnRlbnRQYXRoXzsKLSAgcHJpdmF0ZSBJUmVzb3VyY2Ugd2ViQ29udGVudF87Ci0gICAgCi0gIHB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGFkZENvbnRyb2xzKCBDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lciApCi0gIHsKLSAgICAKLQkgIAotCWlzVGVzdFdpZGdldCA9IHRydWU7Ci0gICAgVUlVdGlscyAgICAgIHVpVXRpbHMgID0gbmV3IFVJVXRpbHMoIHBsdWdpbklkXyApOwotICAgICAgICAKLQlwYXJlbnQuc2V0VG9vbFRpcFRleHQoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXU01fUEFHRSApOwotCVBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAoIHBhcmVudCwgcGx1Z2luSWRfICsgIi4iICsgSU5GT1BPUF9QV1NNX1BBR0UgKTsKLSAgICAKLSAgICB0ZXN0Q2hlY2tib3hfID0gdWlVdGlscy5jcmVhdGVDaGVja2JveCggcGFyZW50LCBDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX1RFU1QsCi0gICAgCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV1NNX0NIRUNLQk9YX1RFU1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORk9QT1BfUFdTTV9DSEVDS0JPWF9URVNUICk7Ci0gICAgdGVzdENoZWNrYm94Xy5hZGRTZWxlY3Rpb25MaXN0ZW5lciggbmV3IFNlbGVjdGlvbkFkYXB0ZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKCBTZWxlY3Rpb25FdmVudCBldnQgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVUZXN0QnV0dG9uKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgCi0gICAgY29tYm9Hcm91cF8gPSB1aVV0aWxzLmNyZWF0ZUNvbXBvc2l0ZSggcGFyZW50LCAzLCA1LCAwICk7Ci0gICAgCi0gICAgdGVzdFR5cGVDb21ib18gPSB1aVV0aWxzLmNyZWF0ZUNvbWJvKCBjb21ib0dyb3VwXywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1RFU1RfVFlQRVMsCi0gICAgCQkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdTTV9DT01CT0JPWF9URVNULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9QV1NNX0NPTUJPQk9YX1RFU1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8IFNXVC5SRUFEX09OTFkgKTsKLSAgICB0ZXN0VHlwZUNvbWJvXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcigKLSAgICAJCW5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotICAgIAkJCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLSAgICAJCQkJaGFuZGxlVGVzdEZhY2lsaXR5U2VsZWN0aW9uKCk7Ci0gICAgCQkJfQotICAgIAkJfQotICAgICk7ICAgIAotICAgIAotICAgIAotICAgIAotICAgIG5ldyBMYWJlbCggY29tYm9Hcm91cF8sIFNXVC5OT05FICk7Ci0gICAgCi0gICAgcHJvamVjdENvbWJvXyA9IHVpVXRpbHMuY3JlYXRlVGV4dCggY29tYm9Hcm91cF8sIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9KU1BfUFJPSkVDVF9OQU1FLAotICAgIAkJCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXU01fQ09NQk9fUFJPSkVDVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORk9QT1BfUFdTTV9DT01CT19QUk9KRUNULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgfCBTV1QuUkVBRF9PTkxZICk7Ci0gICAgCi0gICAgbmV3IExhYmVsKCBjb21ib0dyb3VwXywgU1dULk5PTkUgKTsKLSAgICAKLSAgICAKLSAgICBlYXJDb21ib18gPSB1aVV0aWxzLmNyZWF0ZVRleHQoIGNvbWJvR3JvdXBfLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfRUFSX1BST0pFQ1RTLAotICAgIAkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdTTV9FQVJfUFJPSkVDVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZPUE9QX1BXU01fRUFSX0NPTUJPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNXVC5TSU5HTEUgfCBTV1QuQk9SREVSIHwgU1dULlJFQURfT05MWSApOwotICAgIAotICAgIG5ldyBMYWJlbCggY29tYm9Hcm91cF8sIFNXVC5OT05FICk7Ci0gICAgCi0gICAgCi0gICAgCi0gICAgc2FtcGxlRm9sZGVyVGV4dF8gPSB1aVV0aWxzLmNyZWF0ZUNvbWJvV2l0aEhpc3RvcnkoY29tYm9Hcm91cF8sIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9GT0xERVJfTkFNRSwKLSAgICAJCQkJCQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdTTV9URVhUX1NBTVBMRV9GT0xERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORk9QT1BfUFdTTV9URVhUX1NBTVBMRV9GT0xERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNXVC5TSU5HTEUgfCBTV1QuQk9SREVSICwgV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXREaWFsb2dTZXR0aW5ncygpKTsKLSAgICAKLSAgICAKLQlzYW1wbGVGb2xkZXJUZXh0TW9kaWZ5TGlzdGVuZXIgPSBuZXcgTW9kaWZ5TGlzdGVuZXIoKSAKLQkJCXsKLQkJCXB1YmxpYyB2b2lkIG1vZGlmeVRleHQoTW9kaWZ5RXZlbnQgZXZ0KSB7Ci0JCQkJaGFuZGxlRm9sZGVyVGV4dCgpOwotCQkJfQotCi0JCQl9OwotCQkKLSAgICBzYW1wbGVGb2xkZXJUZXh0Xy5hZGRNb2RpZnlMaXN0ZW5lcihzYW1wbGVGb2xkZXJUZXh0TW9kaWZ5TGlzdGVuZXIpOwotICAgICAgIAotICAgIHNhbXBsZUZvbGRlckJyb3dzZUJ1dHRvbl8gPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oIGNvbWJvR3JvdXBfLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX0JST1dTRSwgCi0gICAgCQkJCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV1NNX0JVVFRPTl9KU1BfRk9MREVSX0JST1dTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZPUE9QX1BXU01fQlVUVE9OX0pTUF9GT0xERVJfQlJPV1NFICk7Ci0gICAgc2FtcGxlRm9sZGVyQnJvd3NlQnV0dG9uXy5hZGRTZWxlY3Rpb25MaXN0ZW5lciggbmV3IFNlbGVjdGlvbkFkYXB0ZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKCBTZWxlY3Rpb25FdmVudCBldnQgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTYW1wbGVCcm93c2UoKTsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgCi0gICAganNwRm9sZGVyVGV4dF8gPSB1aVV0aWxzLmNyZWF0ZVRleHQoY29tYm9Hcm91cF8sIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9KU1BfRk9MREVSX05BTUUsCi0gICAgCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV1NNX1RFWFRfSlNQX0ZPTERFUiwKLSAgICAgICAgICAgIElORk9QT1BfUFdTTV9URVhUX0pTUF9GT0xERVIsCi0gICAgICAgICAgICBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUiB8IFNXVC5SRUFEX09OTFkgKTsKLSAgICAKLSAgICAKLSAgICBuZXcgTGFiZWwoIGNvbWJvR3JvdXBfLCBTV1QuTk9ORSApOwotICAgIAotICAgIEdyb3VwIG1ldGhvZHNHcm91cCA9IHVpVXRpbHMuY3JlYXRlR3JvdXAoIHBhcmVudCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX01FVEhPRFMsICAKLSAgICAJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdTTV9UUkVFX01FVEhPRFMsIG51bGwgKTsKLSAgICAKLQltZXRob2RzR3JvdXAuc2V0TGF5b3V0RGF0YSggdWlVdGlscy5jcmVhdGVGaWxsQWxsKCkgKTsKLQkKLQlHcmlkTGF5b3V0IGxheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0JbGF5b3V0Lm1hcmdpbkhlaWdodCA9IDA7Ci0JbGF5b3V0Lm1hcmdpbldpZHRoID0gMDsKLQltZXRob2RzR3JvdXAuc2V0TGF5b3V0KCBsYXlvdXQgKTsKLQkKLQkvLyBUT0RPIE5vIGluZm9wb3AgZm9yIHRoaXMgdHJlZS4KLQltZXRob2RzVHJlZV8gPSB1aVV0aWxzLmNyZWF0ZVRyZWUoIG1ldGhvZHNHcm91cCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdTTV9UUkVFX01FVEhPRFMsIAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgCQkJCSAgIFNXVC5NVUxUSSB8IFNXVC5CT1JERVIgfCBTV1QuVl9TQ1JPTEwgfCBTV1QuSF9TQ1JPTEwJfCBTV1QuQ0hFQ0sgKTsKLQotICAgIENvbXBvc2l0ZSBzZWxlY3RCdXR0b25zID0gdWlVdGlscy5jcmVhdGVDb21wb3NpdGUoIG1ldGhvZHNHcm91cCwgMiApOwotICAgIAotICAgIHNlbGVjdEFsbE1ldGhvZHNCdXR0b25fIAotICAgICAgPSB1aVV0aWxzLmNyZWF0ZVB1c2hCdXR0b24oIHNlbGVjdEJ1dHRvbnMsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5CVVRUT05fU0VMRUNUX0FMTCwgCi0gICAgCQkgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXU01fQlVUVE9OX1NFTEVDVF9BTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9QV1NNX0JVVFRPTl9TRUxFQ1RfQUxMICk7Ci0gICAgc2VsZWN0QWxsTWV0aG9kc0J1dHRvbl8uYWRkU2VsZWN0aW9uTGlzdGVuZXIoIG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZCggU2VsZWN0aW9uRXZlbnQgZXZ0ICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RBbGwoIHRydWUgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgIAotICAgIGRlc2VsZWN0QWxsTWV0aG9kc0J1dHRvbl8gCi0gICAgICA9IHVpVXRpbHMuY3JlYXRlUHVzaEJ1dHRvbiggc2VsZWN0QnV0dG9ucywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkJVVFRPTl9ERVNFTEVDVF9BTEwsIAotICAgIAkJICAJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXU01fQlVUVE9OX0RFU0VMRUNUX0FMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkZPUE9QX1BXU01fQlVUVE9OX0RFU0VMRUNUX0FMTCApOwotICAgIGRlc2VsZWN0QWxsTWV0aG9kc0J1dHRvbl8uYWRkU2VsZWN0aW9uTGlzdGVuZXIoIG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoIFNlbGVjdGlvbkV2ZW50IGV2dCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFsbCggZmFsc2UgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAKLSAgICBydW5UZXN0Q2hlY2tib3hfID0gdWlVdGlscy5jcmVhdGVDaGVja2JveCggcGFyZW50LCBDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX1JVTl9URVNULAotICAgIAkJCQkJCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV1NNX0NIRUNLQk9YX0xBVU5DSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GT1BPUF9QV1NNX0NIRUNLQk9YX0xBVU5DSCApOwotICAgIHJ1blRlc3RDaGVja2JveF8uYWRkU2VsZWN0aW9uTGlzdGVuZXIoIG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgCi0gICAgewotICAgICAgICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZCggU2VsZWN0aW9uRXZlbnQgZXZ0ICkKLSAgICAgICAgewotICAgICAgICAgIGhhbmRsZVJ1blRlc3RDaGVja0JveCgpOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICAKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZVJ1blRlc3RDaGVja0JveCgpewotCSAgYm9vbGVhbiBlbmFibGVkID0gcnVuVGVzdENoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKTsKLQkgIHJ1bnRpbWVzQ29tYm8uc2V0RW5hYmxlZChlbmFibGVkKTsKLQkgIHNlcnZlckluc3RhbmNlVHlwZUNvbWJvXy5zZXRFbmFibGVkKGVuYWJsZWQpOwotCSAgCi0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBoYW5kbGVGb2xkZXJUZXh0KCkKLSAgewotCS8vIHdlYkNvbnRlbnRQYXRoXyBpcyBzZXQgd2hlbiBqc3BGb2xkZXJUZXh0XyBpcyBzZXQgZm9yIHRoZSBmaXJzdCB0aW1lLiAgVGhlcmVmb3JlLAotCS8vIGlmIHdlYkNvbnRlbnRQYXRoXyBpcyBzdGlsbCBudWxsLCB0aGVyZSBpcyBubyBuZWVkIHRvIHRvdWNoIGpzcEZvbGRlclRleHRfIHlldC4KLQkgIAotCWlmICh3ZWJDb250ZW50UGF0aF8gPT0gbnVsbCkKLQkJcmV0dXJuOwotCSAgCi0gIAlTdHJpbmcgZm9sZGVyID0gc2FtcGxlRm9sZGVyVGV4dF8uZ2V0VGV4dCgpOwkKLSAgICBqc3BGb2xkZXJUZXh0Xy5zZXRUZXh0KHdlYkNvbnRlbnRQYXRoXy50b1N0cmluZygpICsgSVBhdGguU0VQQVJBVE9SICsgZm9sZGVyKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNhbXBsZUJyb3dzZSgpCi0gIHsKLSAgICBJUGF0aCAgICAgIHNlbGVjdGVkUGF0aCAgICAgICA9IG51bGw7Ci0gICAgSVJlc291cmNlICBpbml0aWFsUmVzb3VyY2UgICAgPSBudWxsOwotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIGluaXRpYWxSZXNvdXJjZSA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VGcm9tU2VsZWN0aW9uKCBpbml0aWFsU2VsZWN0aW9uXyApOwotICAgIH0KLSAgICBjYXRjaCggQ29yZUV4Y2VwdGlvbiBleGMgKQotICAgIHsgIAotICAgIH0KLSAgICAKLSAgICBpZiggaW5pdGlhbFJlc291cmNlID09IG51bGwgKWluaXRpYWxSZXNvdXJjZSA9IHdlYkNvbnRlbnRfOwotICAgIAotICAgIElSZXNvdXJjZSByZXNvdXJjZSA9IERpYWxvZ1V0aWxzLmJyb3dzZVJlc291cmNlcyggY29tYm9Hcm91cF8uZ2V0U2hlbGwoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJDb250ZW50XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxSZXNvdXJjZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJGaWx0ZXJfICk7Ci0gICAgCi0gICAgaWYoIHJlc291cmNlICE9IG51bGwgKQotICAgIHsKLSAgICAgIHNlbGVjdGVkUGF0aCA9IHJlc291cmNlLmdldEZ1bGxQYXRoKCk7ICAgCi0gICAgCi0gICAgICBpbnQgd2ViTW9kdWxlU2VnbWVudHMgPSBzZWxlY3RlZFBhdGgubWF0Y2hpbmdGaXJzdFNlZ21lbnRzKHdlYkNvbnRlbnRQYXRoXyk7Ci0gIAkgIAotICAgICAgc2FtcGxlRm9sZGVyVGV4dF8ucmVtb3ZlTW9kaWZ5TGlzdGVuZXIoc2FtcGxlRm9sZGVyVGV4dE1vZGlmeUxpc3RlbmVyKTsKLSAgICAgIHNhbXBsZUZvbGRlclRleHRfLnJlbW92ZUFsbCgpOwotICAgICAgCi0gICAgICBpZiAoIHdlYk1vZHVsZVNlZ21lbnRzIDwgd2ViQ29udGVudFBhdGhfLnNlZ21lbnRDb3VudCgpICkKLSAgICAgIHsKLSAgICAJc2FtcGxlRm9sZGVyVGV4dF8uYWRkKCIiLCAwKTsKLSAgICAgICAgaGFuZGxlRm9sZGVyVGV4dCgpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBzYW1wbGVGb2xkZXJUZXh0Xy5hZGQoc2VsZWN0ZWRQYXRoLnJlbW92ZUZpcnN0U2VnbWVudHMod2ViTW9kdWxlU2VnbWVudHMpLnRvU3RyaW5nKCksIDApOwotICAgICAgICBoYW5kbGVGb2xkZXJUZXh0KCk7Ci0gICAgICB9Ci0gICAgICBzYW1wbGVGb2xkZXJUZXh0Xy5zZWxlY3QoMCk7Ci0gICAgICBzYW1wbGVGb2xkZXJUZXh0Xy5yZXN0b3JlV2lkZ2V0SGlzdG9yeSgib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5DbGllbnRUZXN0V2lkZ2V0LnNhbXBsZUZvbGRlclRleHRfIik7Ci0gICAgICBzYW1wbGVGb2xkZXJUZXh0Xy5hZGRNb2RpZnlMaXN0ZW5lcihzYW1wbGVGb2xkZXJUZXh0TW9kaWZ5TGlzdGVuZXIpOwotCi0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgaGFuZGxlVGVzdEJ1dHRvbigpCi0gIHsKLSAgICBib29sZWFuIGVuYWJsZWQgPSB0ZXN0Q2hlY2tib3hfLmdldFNlbGVjdGlvbigpOwotICAgIAotICAgIHRlc3RUeXBlQ29tYm9fLnNldEVuYWJsZWQoIGVuYWJsZWQgKTsKLSAgICAKLSAgICBpZiAoZW5hYmxlZCAmJiB0ZXN0RmFjaWxpdGllc18gIT0gbnVsbCkgewotICAgIAloYW5kbGVUZXN0RmFjaWxpdHlTZWxlY3Rpb24oKTsKLSAgICAJcmV0dXJuOwotICAgIH0gICAgCi0KLSAgICBzYW1wbGVGb2xkZXJUZXh0Xy5zZXRFbmFibGVkKCBlbmFibGVkICk7Ci0gICAgbWV0aG9kc1RyZWVfLnNldEVuYWJsZWQoIGVuYWJsZWQgKTsKLSAgICBpZihjYW5SdW5UZXN0Q2xpZW50XykKLSAgICAJcnVuVGVzdENoZWNrYm94Xy5zZXRFbmFibGVkKCBlbmFibGVkICk7Ci0gICAgc2VsZWN0QWxsTWV0aG9kc0J1dHRvbl8uc2V0RW5hYmxlZCggZW5hYmxlZCApOwotICAgIGRlc2VsZWN0QWxsTWV0aG9kc0J1dHRvbl8uc2V0RW5hYmxlZCggZW5hYmxlZCApOwotICAgIHNhbXBsZUZvbGRlckJyb3dzZUJ1dHRvbl8uc2V0RW5hYmxlZCggZW5hYmxlZCApOwotICAgIAotICAKLSAgCi0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBoYW5kbGVUZXN0RmFjaWxpdHlTZWxlY3Rpb24oKSB7Ci0JICAKLQkgIFN0cmluZyBjbGllbnRUZXN0SUQgPSBnZXRUZXN0RmFjaWxpdHkoKS5nZXRTZWxlY3Rpb24oKTsKLQkgIAkKLQkgIFdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uIHRlc3RFeHRlbnNpb24gPSAKLQkJICAoV2ViU2VydmljZVRlc3RFeHRlbnNpb24pIFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkuZ2V0SW5zdGFuY2UoKQotCQkgIC5nZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5TmFtZShjbGllbnRUZXN0SUQpOwotCSAgICAKLSAgICAgIGJvb2xlYW4gaGFzQ29kZUdlbiA9IHRlc3RFeHRlbnNpb24uaXNDb2RlR2VuTmVlZGVkKCk7Ci0gICAgICAKLSAgICAgIC8vIGZvbGRlciBzZWxlY3Rpb24gaXMgb25seSBhcHBsaWNhYmxlIGZvciB0ZXN0IGZhY2lsaXRpZXMgd2l0aCBjb2RlZ2VuCi0gICAgICBzYW1wbGVGb2xkZXJUZXh0Xy5zZXRFbmFibGVkKCBoYXNDb2RlR2VuICk7Ci0gICAgICBzYW1wbGVGb2xkZXJCcm93c2VCdXR0b25fLnNldEVuYWJsZWQoIGhhc0NvZGVHZW4gJiYgd2ViQ29udGVudF8gIT0gbnVsbCApOwotICAgICAgCi0gICAgICBib29sZWFuIGhhc01ldGhvZHMgPSB0ZXN0RXh0ZW5zaW9uLmFyZU1ldGhvZHNOZWVkZWQoKTsKLSAgICAgIAotICAgICAgLy8gbWV0aG9kIHNlbGVjdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgZm9yIHRlc3QgZmFjaWxpdGllcyB3aXRoIG1ldGhvZHMKLSAgICAgIG1ldGhvZHNUcmVlXy5zZXRFbmFibGVkKCBoYXNNZXRob2RzICk7ICAgICAgCi0gICAgICBzZWxlY3RBbGxNZXRob2RzQnV0dG9uXy5zZXRFbmFibGVkKCBoYXNNZXRob2RzICk7Ci0gICAgICBkZXNlbGVjdEFsbE1ldGhvZHNCdXR0b25fLnNldEVuYWJsZWQoIGhhc01ldGhvZHMgKTsKLSAgICAgIAotICAgICAgLy8gcnVuIG9uIHNlcnZlciBvbmx5IGFwcGxpY2FibGUgZm9yIHRlc3QgZmFjaWxpdGllcyB0aGF0IG5lZWRzIGxhdW5jaGluZwotICAgICAgaWYoY2FuUnVuVGVzdENsaWVudF8pCi0gICAgCSAgcnVuVGVzdENoZWNrYm94Xy5zZXRFbmFibGVkKCB0ZXN0RXh0ZW5zaW9uLmlzU2VydmVyTmVlZGVkKCkgKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNlbGVjdEFsbCggYm9vbGVhbiB2YWx1ZSApCi0gIHsKLQlUcmVlSXRlbVtdIGl0ZW1zID0gbWV0aG9kc1RyZWVfLmdldEl0ZW1zKCk7Ci0JCi0JZm9yKCBpbnQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKyApIAotCXsKLQkgIGl0ZW1zW2ldLnNldENoZWNrZWQodmFsdWUpOwotCX0KLSAgfSAKLSAgCi0gIHByaXZhdGUgdm9pZCBoYW5kbGVTZXJ2ZXJDaGFuZ2UoKQotICB7Ci0JICBpbnQgc2VsZWN0aW9uID0gcnVudGltZXNDb21iby5nZXRTZWxlY3Rpb25JbmRleCgpOwotCSAgc2VydmVySW5zdGFuY2VzXy5jbGVhcigpOwotCSAgc2VydmVySW5zdGFuY2VUeXBlQ29tYm9fLnJlbW92ZUFsbCgpOwotCSAgSVNlcnZlcltdIHNlcnZlcnMgPSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZS5nZXRTZXJ2ZXJzKCk7Ci0JICBmb3IoaW50IGogPTA7IGo8c2VydmVycy5sZW5ndGg7aisrKXsKLQkJCVN0cmluZyBpZCA9IHJ1bnRpbWVzXy5nZXRJZChzZWxlY3Rpb24pOwotCQkJaWYoaWQuZXF1YWxzKHNlcnZlcnNbal0uZ2V0U2VydmVyVHlwZSgpLmdldElkKCkpKXsKLQkJCQlzZXJ2ZXJJbnN0YW5jZXNfLmFkZChzZXJ2ZXJzW2pdLmdldElkKCksIHNlcnZlcnNbal0uZ2V0TmFtZSgpKTsKLQkJCQlzZXJ2ZXJJbnN0YW5jZVR5cGVDb21ib18uYWRkKHNlcnZlcnNbal0uZ2V0TmFtZSgpKTsKLQkJCX0KLQkgIH0KLQkgIHNlcnZlckluc3RhbmNlVHlwZUNvbWJvXy5zZWxlY3QoMCk7Ci0JICAKLQkgIHNlcnZlckluc3RhbmNlVHlwZUNvbWJvXy5zZXRFbmFibGVkKHNlcnZlckluc3RhbmNlc18uc2l6ZSgpID4gMCApOwotICB9ICAKLSAgCi0gIC8vIEhlcmUgYXJlIHRoZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzIGZvciB0aGlzIHdpZGdldC4KLSAgcHVibGljIHZvaWQgc2V0VGVzdFNlcnZpY2UoIEJvb2xlYW4gdGVzdFNlcnZpY2UgKQotICB7Ci0gICAgdGVzdENoZWNrYm94Xy5zZXRTZWxlY3Rpb24oIHRlc3RTZXJ2aWNlLmJvb2xlYW5WYWx1ZSgpICk7Ci0gICAgaGFuZGxlVGVzdEJ1dHRvbigpOwotICB9Ci0gIAotICBwdWJsaWMgQm9vbGVhbiBnZXRUZXN0U2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IEJvb2xlYW4oIHRlc3RDaGVja2JveF8uZ2V0U2VsZWN0aW9uKCkgKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0VGVzdEZhY2lsaXR5KCBTZWxlY3Rpb25MaXN0IHRlc3RGYWNpbGl0aWVzICkKLSAgewotICAgIHRlc3RGYWNpbGl0aWVzXyA9IHRlc3RGYWNpbGl0aWVzOwotICAgIHRlc3RUeXBlQ29tYm9fLnNldEl0ZW1zKCB0ZXN0RmFjaWxpdGllcy5nZXRMaXN0KCkgKTsKLSAgICB0ZXN0VHlwZUNvbWJvXy5zZWxlY3QoIHRlc3RGYWNpbGl0aWVzLmdldEluZGV4KCkgKTsKLSAgICBoYW5kbGVUZXN0RmFjaWxpdHlTZWxlY3Rpb24oKTsKLSAgfQotICAKLSAgcHVibGljIFNlbGVjdGlvbkxpc3QgZ2V0VGVzdEZhY2lsaXR5KCkKLSAgewotICAgIHRlc3RGYWNpbGl0aWVzXy5zZXRJbmRleCggdGVzdFR5cGVDb21ib18uZ2V0U2VsZWN0aW9uSW5kZXgoKSApOwotICAgIHJldHVybiB0ZXN0RmFjaWxpdGllc187Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VGVzdElEKCkKLSAgewotICAgIHJldHVybiB0ZXN0VHlwZUNvbWJvXy5nZXRUZXh0KCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHaXZlbiBhIHByb2plY3QgbmFtZSB3aGljaCBtYXkgYmUgb2YgdGhlIChvYnNvbGV0ZSkgZm9ybWF0ICJwcm9qZWN0L21vZHVsZSIsCi0gICAqIHJldHVybiBvbmx5IHRoZSBwcm9qZWN0IHBhcnQgb2YgdGhlIG5hbWUKLSAgICogCi0gICAqIEBwYXJhbSBwcm9qZWN0IFRoZSBwcm9qZWN0IG5hbWUuCi0gICAqIEByZXR1cm4gSWYgdGhlIG5hbWUgaGFzIHRoZSBmb3JtYXQgInByb2plY3QvbW9kdWxlIiwgcmV0dXJucyBvbmx5ICJwcm9qZWN0IiwgCi0gICAqIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIGFzIGlzLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZXh0cmFjdFByb2plY3ROYW1lKFN0cmluZyBwcm9qZWN0KSB7Ci0JICAKLQkgIGludCBpbmRleCA9IHByb2plY3QuaW5kZXhPZigiLyIpOwotCSAgCi0JICBpZiAoaW5kZXggIT0gLTEpCi0JCSAgcHJvamVjdCA9IHByb2plY3Quc3Vic3RyaW5nKDAsIGluZGV4KTsKLQkgIAotCSAgcmV0dXJuIHByb2plY3Q7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldFNlcnZlclR5cGVJZEZvclJ1bnRpbWUoSVJ1bnRpbWUgcnQpIHsKLQkgIElTZXJ2ZXJUeXBlW10gc2VydmVyVHlwZXMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlclR5cGVzKCk7Ci0JICBmb3IgKElTZXJ2ZXJUeXBlIHNUeXBlIDogc2VydmVyVHlwZXMpIHsKLQkJICBpZiAoc1R5cGUuZ2V0UnVudGltZVR5cGUoKSA9PSBydC5nZXRSdW50aW1lVHlwZSgpICl7Ci0JCQkgIHJldHVybiBzVHlwZS5nZXRJZCgpOwotCi0JCSAgfQotCSAgfQotCSAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGluaXRTZXJ2ZXJzVHlwZXMoKSAKLSAgewotCWlmKHJ1bnRpbWVzXyAgPT0gbnVsbCkKLQkJcnVudGltZXNfID0gbmV3IExhYmVsc0FuZElkcygpOwotCUlTZXJ2ZXJbXSBzZXJ2ZXJzID0gb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmUuZ2V0U2VydmVycygpOwotCUlSdW50aW1lW10gcnVudGltZXMgPSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZS5nZXRSdW50aW1lcygpOwotCQotCVN0cmluZyBwcm9qZWN0TmFtZSA9IHByb2plY3RDb21ib18uZ2V0VGV4dCgpOwotCQotCVNldCBwcm9qZWN0RmFjZXRzID0gRmFjZXRVdGlscy5nZXRGYWNldHNGb3JQcm9qZWN0KHByb2plY3ROYW1lKTsKLQlmb3IoaW50IGkgPSAwO2k8cnVudGltZXMubGVuZ3RoO2krKyl7Ci0JCWJvb2xlYW4gc2hvd1NlcnZlciA9IGZhbHNlOwotCQkKLQkJaWYocnVudGltZXNbaV0uaXNTdHViKCkpewotCQkJZm9yKGludCBsID0wOyBsPHNlcnZlcnMubGVuZ3RoO2wrKyl7Ci0JCQkJaWYoc2VydmVyc1tsXS5nZXRSdW50aW1lKCkgIT0gbnVsbCl7Ci0JCQkJCWlmKHJ1bnRpbWVzW2ldLmdldElkKCkuZXF1YWxzKHNlcnZlcnNbbF0uZ2V0UnVudGltZSgpLmdldElkKCkpKXsKLQkJCQkJCXNob3dTZXJ2ZXIgPSB0cnVlOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWVsc2Ugc2hvd1NlcnZlciA9IHRydWU7Ci0JCQotCQlpZihzaG93U2VydmVyICYmIGNhblJ1blRlc3RDbGllbnRfKXsJCi0JCQlpZihpc1dlYlByb2plY3QpewotCQkJCW9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnJ1bnRpbWUuSVJ1bnRpbWUgcnVudGltZSA9IEZhY2V0VXRpbC5nZXRSdW50aW1lKHJ1bnRpbWVzW2ldKTsKLQkJCQlpZihGYWNldFV0aWxzLmRvZXNSdW50aW1lU3VwcG9ydEZhY2V0cyhydW50aW1lLCBwcm9qZWN0RmFjZXRzKSl7Ci0JCQkJCXJ1bnRpbWVzXy5hZGQoZ2V0U2VydmVyVHlwZUlkRm9yUnVudGltZShydW50aW1lc1tpXSksIHJ1bnRpbWVzW2ldLmdldE5hbWUoKSk7Ci0JCQkJCXJ1bnRpbWVzQ29tYm8uYWRkKCBydW50aW1lc1tpXS5nZXROYW1lKCkgKTsKLQkJCQl9Ci0JCQl9Ci0JCQllbHNlewotCQkJCXJ1bnRpbWVzXy5hZGQoZ2V0U2VydmVyVHlwZUlkRm9yUnVudGltZShydW50aW1lc1tpXSksIHJ1bnRpbWVzW2ldLmdldE5hbWUoKSk7Ci0JCQkJcnVudGltZXNDb21iby5hZGQoIHJ1bnRpbWVzW2ldLmdldE5hbWUoKSApOwkKLQkJCX0KLQkJfQotCX0KLQkKLQlydW50aW1lc0NvbWJvLnNlbGVjdCgwKTsKLQlpZihzZXJ2ZXJJbnN0YW5jZXNfICA9PSBudWxsKQotCQlzZXJ2ZXJJbnN0YW5jZXNfID0gbmV3IExhYmVsc0FuZElkcygpOwotCQotCQotCVN0cmluZyBpZCA9IHJ1bnRpbWVzXy5nZXRJZCgwKTsKLQlpZihpZCAhPSBudWxsKXsKLQkJZm9yKGludCBrID0wOyBrPHNlcnZlcnMubGVuZ3RoO2srKyl7Ci0JCQlpZihzZXJ2ZXJzW2tdLmdldFNlcnZlclR5cGUoKSAhPSBudWxsKXsKLQkJCQlpZihpZC5lcXVhbHMoc2VydmVyc1trXS5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKSkmJiBjYW5SdW5UZXN0Q2xpZW50Xyl7Ci0JCQkJCXNlcnZlckluc3RhbmNlc18uYWRkKHNlcnZlcnNba10uZ2V0SWQoKSwgc2VydmVyc1trXS5nZXROYW1lKCkpOwotCQkJCQlzZXJ2ZXJJbnN0YW5jZVR5cGVDb21ib18uYWRkKHNlcnZlcnNba10uZ2V0TmFtZSgpKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJc2VydmVySW5zdGFuY2VUeXBlQ29tYm9fLnNlbGVjdCgwKTsKLQl9Ci0JCQotCXNlcnZlckluc3RhbmNlVHlwZUNvbWJvXy5zZXRFbmFibGVkKGNhblJ1blRlc3RDbGllbnRfICYmIHJ1blRlc3RDaGVja2JveF8uZ2V0U2VsZWN0aW9uKCkpOwotCXJ1bnRpbWVzQ29tYm8uc2V0RW5hYmxlZChjYW5SdW5UZXN0Q2xpZW50XyAmJiBydW5UZXN0Q2hlY2tib3hfLmdldFNlbGVjdGlvbigpKTsKLSAgfQotICAKLSAgCi0gIAotICAKLSAgcHVibGljIHZvaWQgc2V0U2FtcGxlUHJvamVjdChTdHJpbmcgY2xpZW50UHJvamVjdCkgCi0gIHsKLQlwcm9qZWN0Q29tYm9fLnNldFRleHQoZXh0cmFjdFByb2plY3ROYW1lKGNsaWVudFByb2plY3QpKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U2FtcGxlUHJvamVjdEVBUihTdHJpbmcgY2xpZW50UHJvamVjdEVBUikgCi0gIHsKLSAgICBlYXJDb21ib18uc2V0VGV4dChleHRyYWN0UHJvamVjdE5hbWUoY2xpZW50UHJvamVjdEVBUikpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldEZvbGRlcigpCi0gIHsKLSAgICByZXR1cm4gc2FtcGxlRm9sZGVyVGV4dF8uZ2V0VGV4dCgpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRGb2xkZXIoIFN0cmluZyBmb2xkZXIgKQotICB7Ci0gICAgc2FtcGxlRm9sZGVyVGV4dF8ucmVtb3ZlTW9kaWZ5TGlzdGVuZXIoc2FtcGxlRm9sZGVyVGV4dE1vZGlmeUxpc3RlbmVyKTsKLSAgICBzYW1wbGVGb2xkZXJUZXh0Xy5yZW1vdmVBbGwoKTsKLSAgICBzYW1wbGVGb2xkZXJUZXh0Xy5hZGQoIGZvbGRlcik7Ci0gICAgc2FtcGxlRm9sZGVyVGV4dF8uc2VsZWN0KDApOwotICAgIHNhbXBsZUZvbGRlclRleHRfLmFkZE1vZGlmeUxpc3RlbmVyKHNhbXBsZUZvbGRlclRleHRNb2RpZnlMaXN0ZW5lcik7Ci0gICAgCi0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldElzVGVzdFdpZGdldCgpCi0gIHsKLSAgCXJldHVybiBpc1Rlc3RXaWRnZXQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEpzcEZvbGRlciggU3RyaW5nIGZvbGRlciApCi0gIHsKLQl3ZWJDb250ZW50UGF0aF8gPSAobmV3IFBhdGgoZm9sZGVyKSkucmVtb3ZlTGFzdFNlZ21lbnRzKDEpOwotCXdlYkNvbnRlbnRfID0gUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2Uod2ViQ29udGVudFBhdGhfKTsJCi0Jc2FtcGxlRm9sZGVyQnJvd3NlQnV0dG9uXy5zZXRFbmFibGVkKHdlYkNvbnRlbnRfICE9IG51bGwpOwotCSAgCi0gICAganNwRm9sZGVyVGV4dF8uc2V0VGV4dCggZm9sZGVyICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SnNwRm9sZGVyKCkKLSAgewotICAgIHJldHVybiBqc3BGb2xkZXJUZXh0Xy5nZXRUZXh0KCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldExhdW5jaGVkU2VydmljZVRlc3ROYW1lIChTdHJpbmcgbGF1bmNoZWRTZXJ2aWNlVGVzdE5hbWUpCi0gIHsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0UnVuVGVzdENsaWVudCgpCi0gIHsKLSAgICByZXR1cm4gcnVuVGVzdENoZWNrYm94Xy5nZXRTZWxlY3Rpb24oKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0UnVuVGVzdENsaWVudCggYm9vbGVhbiB2YWx1ZSApCi0gIHsKLQkgIHJ1blRlc3RDaGVja2JveF8uc2V0U2VsZWN0aW9uKCB2YWx1ZSApOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJc1dlYlByb2plY3QoIGJvb2xlYW4gdmFsdWUgKQotICB7Ci0JICBpc1dlYlByb2plY3QgPSB2YWx1ZTsKLSAgfQotICAKLSAgcHJpdmF0ZSBib29sZWFuIGNhblJ1blRlc3RDbGllbnRfOwotICAKLSAgcHVibGljIHZvaWQgc2V0Q2FuUnVuVGVzdENsaWVudChib29sZWFuIGNhblJ1blRlc3RDbGllbnQpewotCSAgY2FuUnVuVGVzdENsaWVudF8gPSBjYW5SdW5UZXN0Q2xpZW50OwotCSAgaWYoIWNhblJ1blRlc3RDbGllbnRfKSB7Ci0JCSAgcnVuVGVzdENoZWNrYm94Xy5zZXRTZWxlY3Rpb24oZmFsc2UpOwotCQkgIHJ1blRlc3RDaGVja2JveF8uc2V0RW5hYmxlZChmYWxzZSk7Ci0JICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFBvcHVwKGJvb2xlYW4gcG9wdXApewotCSAgaXNQb3B1cCA9IHBvcHVwOwotCSAgaWYoaXNQb3B1cCl7Ci0JCSAgVUlVdGlscyAgICAgIHVpVXRpbHMgID0gbmV3IFVJVXRpbHMoIHBsdWdpbklkXyApOwotCQkgIHJ1bnRpbWVzQ29tYm8gPSB1aVV0aWxzLmNyZWF0ZUNvbWJvKCBjb21ib0dyb3VwXywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NFUlZFUlNfTElTVCwKLQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdTTV9DT01CT0JPWF9TRVJWRVIsCi0JCQkJCUlORk9QT1BfUFdTTV9DT01CT0JPWF9TRVJWRVIsCi0JCSAgICAgICAgICAgICAgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgfCBTV1QuUkVBRF9PTkxZICk7Ci0JCSAgICAJcnVudGltZXNDb21iby5hZGRTZWxlY3Rpb25MaXN0ZW5lcigKLQkJICAgIAkJbmV3IFNlbGVjdGlvbkFkYXB0ZXIoKSB7Ci0JCSAgICAJCQlwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7Ci0JCSAgICAJCQkJaGFuZGxlU2VydmVyQ2hhbmdlKCk7Ci0JCSAgICAJCQl9Ci0JCSAgICAJCX0KLQkJICAgIAkpOyAgICAKLQkJICAgIAotCQkgIG5ldyBMYWJlbCggY29tYm9Hcm91cF8sIFNXVC5OT05FICk7Ci0JCQotCSAgCi0JCSAgc2VydmVySW5zdGFuY2VUeXBlQ29tYm9fID0gdWlVdGlscy5jcmVhdGVDb21ibyggY29tYm9Hcm91cF8sIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9TRVJWRVJTX0lOU1RBTkNFUywKLQkJCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdTTV9DT01CT0JPWF9TRVJWRVJfSU5TVEFOQ0UsCi0JCQkJCUlORk9QT1BfUFdTTV9DT01CT0JPWF9TRVJWRVJfSU5TVEFOQ0UsCi0JCSAgICAgICAgICAgICAgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgfCBTV1QuUkVBRF9PTkxZICk7Ci0JCSAgICAKLQkJICBuZXcgTGFiZWwoIGNvbWJvR3JvdXBfLCBTV1QuTk9ORSApOwotCQkgIGluaXRTZXJ2ZXJzVHlwZXMoKTsKLQkgIAotCSAgfQotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRDYW5SdW5UZXN0Q2xpZW50KCkKLSAgewotCSAgcmV0dXJuIGNhblJ1blRlc3RDbGllbnRfOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZlckluc3RhbmNlSWQoKXsKLQkgIGludCBpbnN0YW5jZUxhYmVsID0gc2VydmVySW5zdGFuY2VUeXBlQ29tYm9fLmdldFNlbGVjdGlvbkluZGV4KCk7Ci0JICBpZihpbnN0YW5jZUxhYmVsID09IC0xKSByZXR1cm4gbnVsbDsKLQkgIHJldHVybiBzZXJ2ZXJJbnN0YW5jZXNfLmdldElkKGluc3RhbmNlTGFiZWwpOwotICB9Ci0gIAotICAKLSAgcHVibGljIFN0cmluZyBnZXRFeGlzdGluZ1NlcnZlcklkKCl7Ci0JICBpbnQgdHlwZUxhYmVsID0gcnVudGltZXNDb21iby5nZXRTZWxlY3Rpb25JbmRleCgpOwotCSAgaWYodHlwZUxhYmVsID09IC0xKSByZXR1cm4gbnVsbDsKLQkgIHJldHVybiBydW50aW1lc18uZ2V0SWQodHlwZUxhYmVsKTsKLSAgfQotICAKLSAgcHVibGljIEJvb2xlYW5TZWxlY3Rpb25bXSBnZXRNZXRob2RzKCkKLSAgewotICAgIFRyZWVJdGVtW10gICAgICAgICBpdGVtcyAgID0gbWV0aG9kc1RyZWVfLmdldEl0ZW1zKCk7Ci0gICAgQm9vbGVhblNlbGVjdGlvbltdIG1ldGhvZHMgPSBuZXcgQm9vbGVhblNlbGVjdGlvbltpdGVtcy5sZW5ndGhdOwotICAgIAotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtcy5sZW5ndGg7IGluZGV4KysgKQotICAgIHsKLSAgICAgIG1ldGhvZHNbaW5kZXhdID0gbmV3IEJvb2xlYW5TZWxlY3Rpb24oIGl0ZW1zW2luZGV4XS5nZXRUZXh0KCksIGl0ZW1zW2luZGV4XS5nZXRDaGVja2VkKCkgKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG1ldGhvZHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldE1ldGhvZHMoIEJvb2xlYW5TZWxlY3Rpb25bXSBtZXRob2RzICkKLSAgewotICAgIG1ldGhvZHNUcmVlXy5yZW1vdmVBbGwoKTsKLSAgICAKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgbWV0aG9kcy5sZW5ndGg7IGluZGV4KysgKQotICAgIHsKLSAgICAgIGlmKG1ldGhvZHNbaW5kZXhdID09IG51bGwpY29udGludWU7Ci0gICAgICBUcmVlSXRlbSBpdGVtID0gbmV3IFRyZWVJdGVtKCBtZXRob2RzVHJlZV8sIFNXVC5OVUxMICk7Ci0gICAgICBpdGVtLnNldFRleHQoIG1ldGhvZHNbaW5kZXhdLmdldFZhbHVlKCkgKTsKLSAgICAgIGl0ZW0uc2V0Q2hlY2tlZCggbWV0aG9kc1tpbmRleF0uaXNTZWxlY3RlZCgpICk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJbml0aWFsU2VsZWN0aW9uKCBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24gKQotICB7Ci0gICAgaW5pdGlhbFNlbGVjdGlvbl8gPSBzZWxlY3Rpb247Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpIHsKLQkgIGlmKCFjYW5SdW5UZXN0Q2xpZW50XykKLQkJICByZXR1cm4gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyhDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX1NFUlZFUl9OT1RfRk9VTkRfV0FSTklORyk7Ci0gIAotCSAgcmV0dXJuICBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0KLXB1YmxpYyB2b2lkIGV4dGVybmFsaXplKCkgewotCXN1cGVyLmV4dGVybmFsaXplKCk7Ci0Jc2FtcGxlRm9sZGVyVGV4dF8uc3RvcmVXaWRnZXRIaXN0b3J5KCJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LkNsaWVudFRlc3RXaWRnZXQuc2FtcGxlRm9sZGVyVGV4dF8iKTsKLX0KLQotcHVibGljIHZvaWQgaW50ZXJuYWxpemUoKSB7CQkKLQlzYW1wbGVGb2xkZXJUZXh0Xy5yZW1vdmVNb2RpZnlMaXN0ZW5lcihzYW1wbGVGb2xkZXJUZXh0TW9kaWZ5TGlzdGVuZXIpOwotCXNhbXBsZUZvbGRlclRleHRfLnJlc3RvcmVXaWRnZXRIaXN0b3J5KCJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LkNsaWVudFRlc3RXaWRnZXQuc2FtcGxlRm9sZGVyVGV4dF8iKTsKLQlzYW1wbGVGb2xkZXJUZXh0Xy5hZGRNb2RpZnlMaXN0ZW5lcihzYW1wbGVGb2xkZXJUZXh0TW9kaWZ5TGlzdGVuZXIpOwotfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvQ29weVdlYlNlcnZpY2VVdGlsc0phckNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L0NvcHlXZWJTZXJ2aWNlVXRpbHNKYXJDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4N2QyNzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvQ29weVdlYlNlcnZpY2VVdGlsc0phckNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwOTEyICAgMTU3MDM5IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBuZXcgd2Vic2VydmljZXV0aWxzLmphciBub3QgY29waWVkIGluIGNsaWVudCBnZW5lcmF0aW9uCi0gKiAyMDA2MTAyNSAgIDE2MTI1MCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgSW5zdGFsbGF0aW9ucyBvciB3b3Jrc3BhY2UgcGF0aHMgd2l0aCBzcGFjZXMgYnJlYWsgU2FtcGxlIEdlbiBhbmQgSmF2YSBFZGl0b3IgTGF1bmNoCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0OwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnBsdWdpbi5XZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbW1vbi5GaWxlUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uUHJvZ3Jlc3NVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5UcmFuc2llbnRSZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb21tb24uQnVuZGxlVXRpbHM7Ci0KLQotcHVibGljIGNsYXNzIENvcHlXZWJTZXJ2aWNlVXRpbHNKYXJDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0gIHByaXZhdGUgU3RyaW5nIHNhbXBsZVByb2plY3Q7Ci0JCi0vKioKLSAqIERlZmF1bHQgQ1RPUjsKLSAqLwotCi0KLXB1YmxpYyBDb3B5V2ViU2VydmljZVV0aWxzSmFyQ29tbWFuZCgpCi17Ci0KLX0KLQotLyoqCi0gKiBFeGVjdXRlIHRoZSBjb21tYW5kCi0gKi8KLXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotewotICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgCi0gIHRyeQotICB7Ci0gICAgUHJvZ3Jlc3NVdGlscy5yZXBvcnQoIG1vbml0b3IsIENvbnN1bXB0aW9uTWVzc2FnZXMuUFJPR1JFU1NfSU5GT19DT1BZX1dFQlNFUlZJQ0VfVVRJTFMgKTsKLSAgICBJUHJvamVjdCBzYW1wbGVJUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChzYW1wbGVQcm9qZWN0KTsgICAgCi0gICAgSVBhdGggd2ViTW9kdWxlUGF0aCA9IEoyRUVVdGlscy5nZXRXZWJDb250ZW50UGF0aChzYW1wbGVJUHJvamVjdCk7CQotICAgIGlmICh3ZWJNb2R1bGVQYXRoID09IG51bGwpCi0gICAgICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1BST0pFQ1RfTk9UX0ZPVU5EICk7Ci0gICAgICAKLSAgICBJU3RhdHVzIHN0YXR1cyA9IGNvcHlJRmlsZSgid2Vic2VydmljZXV0aWxzLmphciIsd2ViTW9kdWxlUGF0aCwiV0VCLUlORi9saWIvd2Vic2VydmljZXV0aWxzLmphciIsIFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5nZXRJbnN0YW5jZSgpLGVudiwgbW9uaXRvcik7Ci0gICAgaWYoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKXsKLSAgICAgIElTdGF0dXNIYW5kbGVyIHNIYW5kbGVyID0gZW52LmdldFN0YXR1c0hhbmRsZXIoKTsKLSAgICAgIElTdGF0dXMgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfRklMRUNPUFlfV0VCU0VSVklDRV9VVElMUyApOwotICAgICAgc0hhbmRsZXIucmVwb3J0RXJyb3IoZXJyb3JTdGF0dXMpOwkKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgIH0KLSAgICAgIAotICAgICAgCi0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgSVN0YXR1c0hhbmRsZXIgc0hhbmRsZXIgPSBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpOwotICAgICAgSVN0YXR1cyBlcnJvclN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9GSUxFQ09QWV9XRUJTRVJWSUNFX1VUSUxTICk7Ci0gICAgICBzSGFuZGxlci5yZXBvcnRFcnJvcihlcnJvclN0YXR1cyk7CQotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9GSUxFQ09QWV9XRUJTRVJWSUNFX1VUSUxTLCBlKTsKLSAgICB9Ci0gIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotfQotCi0vKioKLSAqCi0gKi8KLXByaXZhdGUgSVN0YXR1cyBjb3B5SUZpbGUoU3RyaW5nIHNvdXJjZSwgSVBhdGggdGFyZ2V0UGF0aCwgU3RyaW5nIHRhcmdldEZpbGUsIFBsdWdpbiBwbHVnaW4sSUVudmlyb25tZW50IGVudiwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLXsKLSAgICAKLSAgaWYgKHBsdWdpbiAhPSBudWxsKQotICB7Ci0gICAgSVBhdGggdGFyZ2V0ID0gdGFyZ2V0UGF0aC5hcHBlbmQobmV3IFBhdGgodGFyZ2V0RmlsZSkpOwotICAgIAotICAgIFByb2dyZXNzVXRpbHMucmVwb3J0KCBtb25pdG9yLCBDb25zdW1wdGlvbk1lc3NhZ2VzLlBST0dSRVNTX0lORk9fQ09QWUlOR19GSUxFICk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgIFJlc291cmNlQ29udGV4dCBjb250ZXh0ID0gbmV3IFRyYW5zaWVudFJlc291cmNlQ29udGV4dCgpOwotICAgICAgIGNvbnRleHQuc2V0T3ZlcndyaXRlRmlsZXNFbmFibGVkKHRydWUpOwotICAgICAgIGNvbnRleHQuc2V0Q3JlYXRlRm9sZGVyc0VuYWJsZWQodHJ1ZSk7Ci0gICAgICAgY29udGV4dC5zZXRDaGVja291dEZpbGVzRW5hYmxlZCh0cnVlKTsKLSAgICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBGaWxlUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UodGFyZ2V0KTsKLSAgICAgICBVUkwgc291cmNlVVJMID0gQnVuZGxlVXRpbHMuZ2V0VVJMRnJvbUJ1bmRsZSggV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELCBzb3VyY2UgKTsgICAgICAgCi0gICAgICAgaWYocmVzb3VyY2UgIT0gbnVsbCkgeyAgICAJICAgICAgCSAgIAotICAgIAkgICBGaWxlIHNvdXJjZUZpbGUgPSBuZXcgRmlsZShGaWxlTG9jYXRvci50b0ZpbGVVUkwoc291cmNlVVJMKS5nZXRQYXRoKCkpOyAgIAotICAgIAkgICBpZiAocmVzb3VyY2UuZ2V0TG9jYXRpb24oKS50b0ZpbGUoKS5sZW5ndGgoKSA9PSBzb3VyY2VGaWxlLmxlbmd0aCgpKQotICAgIAkJICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgICAgfQotICAgICAgIEZpbGVSZXNvdXJjZVV0aWxzLmNyZWF0ZUZpbGUoY29udGV4dCwgCi0gICAgICAgICAgICAgICAgICAgICAgCQkJCQkJCXRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTC5vcGVuU3RyZWFtKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25pdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKSk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9GSUxFQ09QWV9XRUJTRVJWSUNFX1VUSUxTICxlKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci19Ci0KLXB1YmxpYyB2b2lkIHNldFNhbXBsZVByb2plY3QoU3RyaW5nIHNhbXBsZVByb2plY3QpCi17Ci0gIHRoaXMuc2FtcGxlUHJvamVjdCA9IHNhbXBsZVByb2plY3Q7ICAKLX0KLQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9GaW5pc2hEZWZhdWx0Q29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvRmluaXNoRGVmYXVsdENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY0MjgyMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9GaW5pc2hEZWZhdWx0Q29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwNDI1ICAgMjIxMjMyIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNTI3ICAgMjM0MTY5IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5DcmVhdGVTZXJ2ZXJDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci0KLQotLyoKLSogVGhlIEpTUEdlbmVyYXRpb24gdGFzayBydW5zIHRoZSBqc3AgZ2VuZXJhdGlvbiBlbmdpbmUgZm91bmQgaW4gdGhlIAotKiBKQldpemFyZCBQbHVnaW4KLSoKLSoKLSovCi1wdWJsaWMgY2xhc3MgRmluaXNoRGVmYXVsdENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIFN0cmluZyBzYW1wbGVTZXJ2ZXJUeXBlSUQ7Ci0gIHByaXZhdGUgSVNlcnZlciBzYW1wbGVFeGlzdGluZ1NlcnZlcjsKLSAgcHJpdmF0ZSBTdHJpbmcgc2FtcGxlU2VydmVySW5zdGFuY2VJZDsKLQotICAKLSAgcHVibGljIEZpbmlzaERlZmF1bHRDb21tYW5kICgpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gIAlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gIAlpZihzYW1wbGVTZXJ2ZXJJbnN0YW5jZUlkICE9IG51bGwpewotICAJICBzYW1wbGVFeGlzdGluZ1NlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlcihzYW1wbGVTZXJ2ZXJJbnN0YW5jZUlkKTsKLSAgCSAgaWYgKHNhbXBsZUV4aXN0aW5nU2VydmVyICE9IG51bGwpCi0gIAkJICBzYW1wbGVTZXJ2ZXJUeXBlSUQgPSBzYW1wbGVFeGlzdGluZ1NlcnZlci5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKTsKLSAgICB9Ci0gIAllbHNlIGlmKHNhbXBsZVNlcnZlclR5cGVJRCAhPSBudWxsKXsKLSAgCQlDcmVhdGVTZXJ2ZXJDb21tYW5kIGNyZWF0ZVNlcnZlciA9IG5ldyBDcmVhdGVTZXJ2ZXJDb21tYW5kKCk7Ci0gIAkJY3JlYXRlU2VydmVyLnNldFNlcnZlckZhY3RvcnlpZChzYW1wbGVTZXJ2ZXJUeXBlSUQpOwotICAJCWNyZWF0ZVNlcnZlci5leGVjdXRlKG1vbml0b3IsIGFkYXB0YWJsZSk7Ci0gIAkJc2FtcGxlU2VydmVySW5zdGFuY2VJZCA9IGNyZWF0ZVNlcnZlci5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCk7Ci0gIAkJaWYoc2FtcGxlU2VydmVySW5zdGFuY2VJZCAhPSBudWxsKQotICAJCQlzYW1wbGVFeGlzdGluZ1NlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlcihzYW1wbGVTZXJ2ZXJJbnN0YW5jZUlkKTsKLSAgCQotICAJfQotICAgIHJldHVybiBzdGF0dXM7Ci0gIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJJbnN0YW5jZUlkKFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkKQotICB7Ci0JdGhpcy5zYW1wbGVTZXJ2ZXJJbnN0YW5jZUlkID0gc2VydmVySW5zdGFuY2VJZDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRTYW1wbGVTZXJ2ZXJUeXBlSUQoKQotICB7Ci0gIAlyZXR1cm4gc2FtcGxlU2VydmVyVHlwZUlEOwotCQotICB9Ci0gIAotICBwdWJsaWMgSVNlcnZlciBnZXRTYW1wbGVFeGlzdGluZ1NlcnZlcigpCi0gIHsKLSAgCXJldHVybiBzYW1wbGVFeGlzdGluZ1NlcnZlcjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEV4aXN0aW5nU2VydmVySWQoU3RyaW5nIGV4aXN0aW5nU2VydmVySWQpCi0gIHsKLQkgIHNhbXBsZVNlcnZlclR5cGVJRD1leGlzdGluZ1NlcnZlcklkOwotICB9ICAKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvRmluaXNoSmF2YVRlc3RGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvRmluaXNoSmF2YVRlc3RGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGNhMzQ3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L0ZpbmlzaEphdmFUZXN0RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIENyZWF0ZWQgb24gTWF5IDQsIDIwMDQKLSAqCi0gKiBUT0RPIFRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZ2VuZXJhdGVkIGZpbGUgZ28gdG8KLSAqIFdpbmRvdyAtIFByZWZlcmVuY2VzIC0gSmF2YSAtIENvZGUgU3R5bGUgLSBDb2RlIFRlbXBsYXRlcwotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQnVpbGRQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uQ29uZGl0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkJvb2xlYW5GcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNpbXBsZUZyYWdtZW50OwotCi0KLS8qKgotICogQGF1dGhvciBnaWxiZXJ0YQotICoKLSAqIFRPRE8gVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgdHlwZSBjb21tZW50IGdvIHRvCi0gKiBXaW5kb3cgLSBQcmVmZXJlbmNlcyAtIEphdmEgLSBDb2RlIFN0eWxlIC0gQ29kZSBUZW1wbGF0ZXMKLSAqLwotcHVibGljIGNsYXNzIEZpbmlzaEphdmFUZXN0RnJhZ21lbnQgZXh0ZW5kcyBCb29sZWFuRnJhZ21lbnQgCi17Ci0gIHByaXZhdGUgYm9vbGVhbiBnZW5lcmF0ZVByb3h5OwotCQotICBwdWJsaWMgRmluaXNoSmF2YVRlc3RGcmFnbWVudCgpCi0gIHsKLSAgCVNlcXVlbmNlRnJhZ21lbnQgamF2YVRlc3RSb290ID0gbmV3IFNlcXVlbmNlRnJhZ21lbnQoKTsKLSAgCUNvbmRpdGlvbiBjb25kaXRpb24gPSBuZXcgQ29uZGl0aW9uKCkKLQl7Ci0JICBwdWJsaWMgYm9vbGVhbiBldmFsdWF0ZSgpCi0JICB7Ci0JICAgIHJldHVybiBnZW5lcmF0ZVByb3h5OyAKLQkgIH0KLQl9OwotICAgIHNldENvbmRpdGlvbihjb25kaXRpb24pOwotICAgIGphdmFUZXN0Um9vdC5hZGQobmV3IFNpbXBsZUZyYWdtZW50KG5ldyBUZXN0Q2xpZW50RGVwYXJ0dXJlSW5pdENvbW1hbmQoKSwgIiIpKTsKLSAgICBqYXZhVGVzdFJvb3QuYWRkKG5ldyBTaW1wbGVGcmFnbWVudChuZXcgQnVpbGRQcm9qZWN0Q29tbWFuZCgpLCAiIikpOwotICAgIHNldFRydWVGcmFnbWVudChqYXZhVGVzdFJvb3QpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0R2VuZXJhdGVQcm94eShib29sZWFuIGdlbmVyYXRlUHJveHkpCi0gIHsKLSAgCXRoaXMuZ2VuZXJhdGVQcm94eSA9IGdlbmVyYXRlUHJveHk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldElzSlNQR2VuKGJvb2xlYW4ganNwR2VuKQotICB7Ci0gIAkKLSAgfQotICAKLSAgCi0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvRmluaXNoVGVzdEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9GaW5pc2hUZXN0RnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzllYjE2Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9GaW5pc2hUZXN0RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA3MjcgICAxNDQzNTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcwNTAyICAgMTgwMzA0IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIENyZWF0ZWQgb24gTWF5IDQsIDIwMDQKLSAqCi0gKiBUT0RPIFRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZ2VuZXJhdGVkIGZpbGUgZ28gdG8KLSAqIFdpbmRvdyAtIFByZWZlcmVuY2VzIC0gSmF2YSAtIENvZGUgU3R5bGUgLSBDb2RlIFRlbXBsYXRlcwotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5leHQudGVzdC5XZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5wbHVnaW4uV2ViU2VydmljZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uQ29uZGl0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkJvb2xlYW5GcmFnbWVudDsKLQotCi0vKioKLSAqIEBhdXRob3IgZ2lsYmVydGEKLSAqCi0gKiBUT0RPIFRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZ2VuZXJhdGVkIHR5cGUgY29tbWVudCBnbyB0bwotICogV2luZG93IC0gUHJlZmVyZW5jZXMgLSBKYXZhIC0gQ29kZSBTdHlsZSAtIENvZGUgVGVtcGxhdGVzCi0gKi8KLXB1YmxpYyBjbGFzcyBGaW5pc2hUZXN0RnJhZ21lbnQgZXh0ZW5kcyBCb29sZWFuRnJhZ21lbnR7Ci0KLSAgcHJpdmF0ZSBib29sZWFuIGlzVGVzdFdpZGdldDsJCi0gIHByaXZhdGUgYm9vbGVhbiBnZW5lcmF0ZVByb3h5OyAgLy8gVGhpcyBhY3R1YWxseSByZXByZXNlbnQgd2hldGhlciBjbGllbnQgdGVzdCBpcyByZXF1ZXN0ZWQKLSAgcHJpdmF0ZSBTdHJpbmcgbGF1bmNoZWRTZXJ2aWNlVGVzdE5hbWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0ZXN0U2VydmljZTsKLSAgcHJpdmF0ZSBTdHJpbmcgdGVzdElEOwotICBwdWJsaWMgRmluaXNoVGVzdEZyYWdtZW50KCkKLSAgewotICAgIENvbmRpdGlvbiBjb25kaXRpb24gPSBuZXcgQ29uZGl0aW9uKCkKLQl7Ci0JICBwdWJsaWMgYm9vbGVhbiBldmFsdWF0ZSgpCi0JICB7Ci0JICAgIGlmKCF0ZXN0U2VydmljZSkgcmV0dXJuIGZhbHNlOwotCSAgCWlmKGxhdW5jaGVkU2VydmljZVRlc3ROYW1lID09IG51bGwpIHJldHVybiB0cnVlOwotCSAgICBpZihsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSAhPSBudWxsKQotCSAgICAgIGlmKCghbGF1bmNoZWRTZXJ2aWNlVGVzdE5hbWUuZXF1YWxzKCIiKSAmJiAgKCFpc1ByZWZlcmVkQVdTRExUZXN0KCkgfHwgKGlzVGVzdFdpZGdldCAmJiBpc0NsaWVudFRlc3RKYXZhKCkpKSAmJiBnZW5lcmF0ZVByb3h5KSB8fCBsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZS5lcXVhbHMoIiIpKSByZXR1cm4gdHJ1ZTsJCi0JICAgIAotCSAgCXJldHVybiBmYWxzZTsgCi0JICB9Ci0JfTsKLQkgICAKLQlzZXRUcnVlRnJhZ21lbnQobmV3IFdlYlNlcnZpY2VUZXN0Q2xpZW50RGVwYXJ0dXJlRnJhZ21lbnQoKSk7Ci0gICAgc2V0Q29uZGl0aW9uKGNvbmRpdGlvbik7Ci0gIH0KLQkgICAgCi0gIHB1YmxpYyB2b2lkIHNldExhdW5jaGVkU2VydmljZVRlc3ROYW1lKFN0cmluZyBsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSkKLSAgewotCXRoaXMubGF1bmNoZWRTZXJ2aWNlVGVzdE5hbWUgPSBsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZTsKLSAgfQotCSAgCi0gIHB1YmxpYyBib29sZWFuIGlzUHJlZmVyZWRBV1NETFRlc3QoKQotICB7Ci0gICAgU2NlbmFyaW9Db250ZXh0IHNjZW5hcmlvQ29udGV4dCA9IFdlYlNlcnZpY2VQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTY2VuYXJpb0NvbnRleHQoKS5jb3B5KCk7Ci0JU3RyaW5nW10gdGVzdFR5cGVzID0gc2NlbmFyaW9Db250ZXh0LmdldFdlYlNlcnZpY2VUZXN0VHlwZXMoKTsKLQlXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5IHdzdHRSZWdpc3RyeSA9IFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkuZ2V0SW5zdGFuY2UoKTsKLQlXZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbiB3c2N0ZSA9IChXZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbil3c3R0UmVnaXN0cnkuZ2V0V2ViU2VydmljZUV4dGVuc2lvbnNCeU5hbWUodGVzdFR5cGVzWzBdKTsgIAkKLQlpZih3c2N0ZS50ZXN0V1NETCgpKQkKLQkgIHJldHVybiB0cnVlOwotCXJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzQ2xpZW50VGVzdEphdmEoKQotICB7Ci0gIAlpZih0ZXN0SUQgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwotICAJV2ViU2VydmljZVRlc3RSZWdpc3RyeSB3c3R0UmVnaXN0cnkgPSBXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0JV2ViU2VydmljZVRlc3RFeHRlbnNpb24gd3NjdGUgPSAoV2ViU2VydmljZVRlc3RFeHRlbnNpb24pd3N0dFJlZ2lzdHJ5LmdldFdlYlNlcnZpY2VFeHRlbnNpb25zQnlOYW1lKHRlc3RJRCk7ICAJCi0JaWYoIXdzY3RlLnRlc3RXU0RMKCkpCQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOyAgIAkKLSAgfQotICAKLSAgCi0gIHB1YmxpYyB2b2lkIHNldFRlc3RTZXJ2aWNlKGJvb2xlYW4gdGVzdFNlcnZpY2UpCi0gIHsKLSAgICB0aGlzLnRlc3RTZXJ2aWNlID0gdGVzdFNlcnZpY2U7CSAKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENhbkdlbmVyYXRlUHJveHkoYm9vbGVhbiBnZW5lcmF0ZVByb3h5KQotICB7Ci0gICAgdGhpcy5nZW5lcmF0ZVByb3h5ID0gZ2VuZXJhdGVQcm94eTsJIAotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VGVzdElEKFN0cmluZyB0ZXN0SUQpCi0gIHsKLSAgICB0aGlzLnRlc3RJRCA9IHRlc3RJRDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldElzVGVzdFdpZGdldChib29sZWFuIGlzVGVzdFdpZGdldCkKLSAgewotICAJdGhpcy5pc1Rlc3RXaWRnZXQgPSBpc1Rlc3RXaWRnZXQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L1Rlc3RDbGllbnREZXBhcnR1cmVJbml0Q29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvVGVzdENsaWVudERlcGFydHVyZUluaXRDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZjJmNzQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvVGVzdENsaWVudERlcGFydHVyZUluaXRDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qCi0gKiBDcmVhdGVkIG9uIE1hciAyNSwgMjAwNAotICoKLSAqIFRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZ2VuZXJhdGVkIGZpbGUgZ28gdG8KLSAqIFdpbmRvdyAtIFByZWZlcmVuY2VzIC0gSmF2YSAtIENvZGUgR2VuZXJhdGlvbiAtIENvZGUgYW5kIENvbW1lbnRzCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotLyoqCi0gKiBAYXV0aG9yIGdpbGJlcnRhCi0gKgotICogVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgdHlwZSBjb21tZW50IGdvIHRvCi0gKiBXaW5kb3cgLSBQcmVmZXJlbmNlcyAtIEphdmEgLSBDb2RlIEdlbmVyYXRpb24gLSBDb2RlIGFuZCBDb21tZW50cwotICovCi1wdWJsaWMgY2xhc3MgVGVzdENsaWVudERlcGFydHVyZUluaXRDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gZm9yY2VCdWlsZDsJCi0JCi0gIHB1YmxpYyBUZXN0Q2xpZW50RGVwYXJ0dXJlSW5pdENvbW1hbmQoKQotICB7Ci0gIAlmb3JjZUJ1aWxkID0gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGdldEZvcmNlQnVpbGQoKQotICB7Ci0gIAlyZXR1cm4gZm9yY2VCdWlsZDsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24KLSAgewotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvVGVzdERlZmF1bHRpbmdGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvVGVzdERlZmF1bHRpbmdGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjQ2ZTdjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L1Rlc3REZWZhdWx0aW5nRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA3MjcgICAxNDQzNTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwODIxICAgMTUzODMzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBBbGxvdyB0aGUgV2ViIFNlcnZpY2UgVGVzdCBleHRlbnNpb24gcG9pbnQgdG8gc3BlY2lmeSB0aGUgc3VwcG9ydGVkIGNsaWVudCBydW50aW1lCi0gKiAyMDA2MDkwNyAgIDE1NjYwNiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgbm8gc2FtcGxlIEpTUCBpbiB0aGUgcG9wLXVwIGFjdGlvbiBvZiBHZW5lcmF0ZSBTYW1wbGUgSlNQcwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKgotICogQ3JlYXRlZCBvbiBNYXkgNCwgMjAwNAotICoKLSAqIFRPRE8gVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgZmlsZSBnbyB0bwotICogV2luZG93IC0gUHJlZmVyZW5jZXMgLSBKYXZhIC0gQ29kZSBTdHlsZSAtIENvZGUgVGVtcGxhdGVzCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0LnRlc3QuV2ViU2VydmljZVRlc3RFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldlYlNlcnZpY2VUZXN0UmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnBsdWdpbi5XZWJTZXJ2aWNlUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnNlbGVjdGlvbi5TZWxlY3Rpb25MaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLQotLyoqCi0gKiBAYXV0aG9yIGdpbGJlcnRhCi0gKgotICogVE9ETyBUbyBjaGFuZ2UgdGhlIHRlbXBsYXRlIGZvciB0aGlzIGdlbmVyYXRlZCB0eXBlIGNvbW1lbnQgZ28gdG8KLSAqIFdpbmRvdyAtIFByZWZlcmVuY2VzIC0gSmF2YSAtIENvZGUgU3R5bGUgLSBDb2RlIFRlbXBsYXRlcwotICovCi1wdWJsaWMgY2xhc3MgVGVzdERlZmF1bHRpbmdGcmFnbWVudCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIAotICBwcml2YXRlIFNlbGVjdGlvbkxpc3QgdGVzdEZhY2lsaXRpZXM7Ci0gIHByaXZhdGUgU3RyaW5nIGxhdW5jaGVkU2VydmljZVRlc3ROYW1lOwotICBwcml2YXRlIFNjZW5hcmlvQ29udGV4dCBzY2VuYXJpb0NvbnRleHQ7CQotICBwcml2YXRlIGJvb2xlYW4gZ2VuZXJhdGVQcm94eTsgIC8vIFRoaXMgYWN0dWFsbHkgcmVwcmVzZW50IHdoZXRoZXIgY2xpZW50IHRlc3QgaXMgcmVxdWVzdGVkCi0gIAotICBwcml2YXRlIFN0cmluZyBjbGllbnRSdW50aW1lSWRfOwotICAKLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgCQotICAJc2NlbmFyaW9Db250ZXh0ID0gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNjZW5hcmlvQ29udGV4dCgpLmNvcHkoKTsKLSAgCS8vICB0ZXN0IGZhY2lsaXRpZXMKLSAgICBzZWxlY3RUZXN0RmFjaWxpdHkoKTsKLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0JCi0gIC8vIFRoZSB0ZXN0IGZhY2lsaXRpZXMgcmV0cmlldmVkIGZyb20gdGhlIGV4dGVuc2lvbgotICAvLyBwbHVzIHRoZSBkZWZhdWx0Ci0gIHB1YmxpYyBTZWxlY3Rpb25MaXN0IGdldFRlc3RGYWNpbGl0eSgpCi0gIHsKLSAgICByZXR1cm4gdGVzdEZhY2lsaXRpZXM7Ci0gIH0gCi0JICAKLSAgCi0gIAotICAvLwkqKioqKioqKioqKioqKioqKioqKioqKiAKLSAgLy8gVGhpcyBtZXRob2QgdXNlcyB0aGUgcHJlZmVyZW5jZSB0byAKLSAgLy8gc2VsZWN0IHRoZSBjb3JyZWN0IHRlc3QgZmFjaWxpdHkgCi0gIC8vIAotICAvLyoqKioqKioqKioqKioqKioqKioqKioqCi0gIHByaXZhdGUgdm9pZCBzZWxlY3RUZXN0RmFjaWxpdHkoKQotICB7Ci0gICAgLy9pZiB3ZSBmaW5kIHNvbWV0aGluZyB3ZSBsYXVuY2hlZCBlYXJsaWVyIAotICAgIC8vcHV0IGl0IG9uIHRoZSBib3R0b20KLSAgICBTdHJpbmdbXSB0ZXN0VHlwZXMgPSBzY2VuYXJpb0NvbnRleHQuZ2V0V2ViU2VydmljZVRlc3RUeXBlcygpOwkgIAotICAgIExpc3QgbmV3VGVzdFR5cGVzID0gbmV3IEFycmF5TGlzdCgpOwotCVN0cmluZ1tdIHdzZGxDYXNlcyA9IHNjZW5hcmlvQ29udGV4dC5nZXROb25KYXZhVGVzdFNlcnZpY2UoKTsKLQlib29sZWFuIGxhdW5jaGVkID0gZmFsc2U7Ci0JCi0gICAgZm9yKGludCBpID0gMDtpPHRlc3RUeXBlcy5sZW5ndGg7aSsrKXsKLSAgICAJCi0gICAgICBXZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbiBleHRlbnNpb24gPQotICAgIAkgIChXZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbikgV2ViU2VydmljZVRlc3RSZWdpc3RyeS5nZXRJbnN0YW5jZSgpCi0gICAgCSAgLmdldFdlYlNlcnZpY2VFeHRlbnNpb25zQnlOYW1lKHRlc3RUeXBlc1tpXSk7Ci0JCSAgCi0gICAgICBpZiAoY2xpZW50UnVudGltZUlkXyAhPSBudWxsICYmICFleHRlbnNpb24uc3VwcG9ydHNSdW50aW1lKGNsaWVudFJ1bnRpbWVJZF8pKQotICAgIAkgIGNvbnRpbnVlOwotICAgIAkKLQkgIGlmKHRlc3RUeXBlc1tpXS5lcXVhbHMobGF1bmNoZWRTZXJ2aWNlVGVzdE5hbWUpKQotCSAgICBsYXVuY2hlZCA9IHRydWU7Ci0JICBlbHNlewotCSAgICAgbmV3VGVzdFR5cGVzLmFkZCh0ZXN0VHlwZXNbaV0pOyAKLQkgIH0KLQl9Ci0JICAgCQotICAgIGlmKGxhdW5jaGVkKQotCSAgbmV3VGVzdFR5cGVzLmFkZChsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSk7Ci0gICAgCi0JCi0JaWYoIWdlbmVyYXRlUHJveHkpCi0gICAgICB0ZXN0RmFjaWxpdGllcyA9IG5ldyBTZWxlY3Rpb25MaXN0KHdzZGxDYXNlcywwKTsJCi0JZWxzZSB7Ci0JICBTdHJpbmdbXSB0ZW1wQXJyYXkgPSBuZXcgU3RyaW5nW25ld1Rlc3RUeXBlcy5zaXplKCldOwotCSAgdGVzdEZhY2lsaXRpZXMgPSBuZXcgU2VsZWN0aW9uTGlzdCgoU3RyaW5nW10pIG5ld1Rlc3RUeXBlcy50b0FycmF5KHRlbXBBcnJheSksIDApOwotCX0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldExhdW5jaGVkU2VydmljZVRlc3ROYW1lKFN0cmluZyBsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSkKLSAgewotICAJdGhpcy5sYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSA9IGxhdW5jaGVkU2VydmljZVRlc3ROYW1lOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0ZVByb3h5KGJvb2xlYW4gZ2VuZXJhdGVQcm94eSkKLSAgewotICAJdGhpcy5nZW5lcmF0ZVByb3h5ID0gZ2VuZXJhdGVQcm94eTsKLSAgfQotICAgIAotICAvKioKLSAgICogU2V0cyB0aGUgY2xpZW50IHJ1bnRpbWUgSUQuCi0gICAqIAotICAgKiBAcGFyYW0gY2xpZW50UnVudGltZUlkIFRoZSBjbGllbnQgcnVudGltZSBJRC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFJ1bnRpbWVJZChTdHJpbmcgY2xpZW50UnVudGltZUlkKSB7Ci0JICBjbGllbnRSdW50aW1lSWRfID0gY2xpZW50UnVudGltZUlkOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L1Rlc3RXZWJTZXJ2aWNlQ2xpZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9UZXN0V2ViU2VydmljZUNsaWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGVmYWFiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L1Rlc3RXZWJTZXJ2aWNlQ2xpZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLklDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5BYnN0cmFjdFdlYlNlcnZpY2VDbGllbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlQ2xpZW50SW5mbzsKLQotcHVibGljIGNsYXNzIFRlc3RXZWJTZXJ2aWNlQ2xpZW50IGV4dGVuZHMgQWJzdHJhY3RXZWJTZXJ2aWNlQ2xpZW50IHsKLSAgCi0gIHB1YmxpYyBUZXN0V2ViU2VydmljZUNsaWVudChXZWJTZXJ2aWNlQ2xpZW50SW5mbyBjbGllbnRJbmZvKXsKLQlzdXBlcihjbGllbnRJbmZvKTsgIAotICB9Ci0gIAotICBwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGFzc2VtYmxlKElFbnZpcm9ubWVudCBlbnYsIElDb250ZXh0IGN0eCwgSVNlbGVjdGlvbiBzZWwsCi0gICAgICBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpewotICAgIHJldHVybiBudWxsOwkgIAotICB9Ci0JCQkKLSAgcHVibGljIElDb21tYW5kRmFjdG9yeSBkZXBsb3koSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwKLSAgICAgIFN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCl7Ci0gICAgcmV0dXJuIG51bGw7CSAgCi0gIH0KLQkJCQotCi0gIHB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgZGV2ZWxvcChJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotCQkgICAgICBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpewotICAgIHJldHVybiBudWxsOwkgIAotICB9Ci0JCQkJCi0gIHB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgaW5zdGFsbChJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotCQkgICAgICBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpewotICAgIHJldHVybiBudWxsOwotICB9Ci0JCQkKLQotICBwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IHJ1bihJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotCQkgICAgICBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpewotICAgIHJldHVybiBudWxsOwkgIAotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvV1NETEZpbmlzaEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9XU0RMRmluaXNoRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ1NTNlNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9XU0RMRmluaXNoRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIENyZWF0ZWQgb24gTWF5IDQsIDIwMDQKLSAqCi0gKiBUT0RPIFRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZ2VuZXJhdGVkIGZpbGUgZ28gdG8KLSAqIFdpbmRvdyAtIFByZWZlcmVuY2VzIC0gSmF2YSAtIENvZGUgU3R5bGUgLSBDb2RlIFRlbXBsYXRlcwotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Cb29sZWFuRnJhZ21lbnQ7Ci0KLS8qKgotICogQGF1dGhvciBnaWxiZXJ0YQotICoKLSAqIFRPRE8gVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgdHlwZSBjb21tZW50IGdvIHRvCi0gKiBXaW5kb3cgLSBQcmVmZXJlbmNlcyAtIEphdmEgLSBDb2RlIFN0eWxlIC0gQ29kZSBUZW1wbGF0ZXMKLSAqLwotcHVibGljIGNsYXNzIFdTRExGaW5pc2hGcmFnbWVudCBleHRlbmRzIEJvb2xlYW5GcmFnbWVudHsKLSAgCi0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC9XU0RMVGVzdExhdW5jaENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L1dTRExUZXN0TGF1bmNoQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDZhNzJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L1dTRExUZXN0TGF1bmNoQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIENyZWF0ZWQgb24gTWF5IDQsIDIwMDQKLSAqCi0gKiBXaW5kb3cgLSBQcmVmZXJlbmNlcyAtIEphdmEgLSBDb2RlIFN0eWxlIC0gQ29kZSBUZW1wbGF0ZXMKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0OwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuVHlwZVJ1bnRpbWVTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5leHQudGVzdC5XZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLklDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlVGVzdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LlRlc3RJbmZvOwotCi0vKioKLSAqIEBhdXRob3IgZ2lsYmVydGEKLSAqCi0gKiBXaW5kb3cgLSBQcmVmZXJlbmNlcyAtIEphdmEgLSBDb2RlIFN0eWxlIC0gQ29kZSBUZW1wbGF0ZXMKLSAqLwotcHVibGljIGNsYXNzIFdTRExUZXN0TGF1bmNoQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgU3RyaW5nIHRlc3RJRDsgCi0gIHByaXZhdGUgU3RyaW5nIGxhdW5jaGVkU2VydmljZVRlc3ROYW1lOwotICBwcml2YXRlIFR5cGVSdW50aW1lU2VydmVyIHNlcnZpY2VpZHM7Ci0gIHByaXZhdGUgU3RyaW5nIHNlcnZlclByb2plY3Q7Ci0gIHByaXZhdGUgU3RyaW5nIHNlcnZlck1vZHVsZTsKLSAgcHJpdmF0ZSBTdHJpbmcgd3NkbFVSSTsKLSAgcHJpdmF0ZSBib29sZWFuIGV4dGVybmFsQnJvd3NlcjsKLSAgcHJpdmF0ZSBMaXN0IGVuZHBvaW50czsKLSAgcHJpdmF0ZSBJU2VydmVyIHNlcnZpY2VFeGlzdGluZ1NlcnZlciA9IG51bGw7Ci0gIHByaXZhdGUgU3RyaW5nIHNlcnZpY2VTZXJ2ZXJUeXBlSUQgPSBudWxsOwotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlU2VydmVySW5zdGFuY2VJZCA9IG51bGw7Ci0JCi0gIHB1YmxpYyBXU0RMVGVzdExhdW5jaENvbW1hbmQoKQotICB7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7ICAgIAotICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAJCi0gIAlXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5IHRlc3RSZWdpc3RyeSA9IFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkuZ2V0SW5zdGFuY2UoKTsKLSAgCVdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uIHdzY3RlID0gKFdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uKXRlc3RSZWdpc3RyeS5nZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5TmFtZSh0ZXN0SUQpOwotCUlXZWJTZXJ2aWNlVGVzdGVyIGl3c3QgPSAoSVdlYlNlcnZpY2VUZXN0ZXIpd3NjdGUuZ2V0V2ViU2VydmljZUV4ZWN1dGFibGVFeHRlbnNpb24oKTsKLQlUZXN0SW5mbyB0ZXN0SW5mbyA9IGdldFRlc3RJbmZvKCk7Ci0JCi0JCi0Jc3RhdHVzID0gY29tbWFuZEZhY3RvcnlFeGVjdXRpb24oaXdzdC5sYXVuY2godGVzdEluZm8pLGVudiwgbW9uaXRvcik7Ci0JCi0gICAgLy9Eb250IG5lZWQgdG8gc2h1dCBldmVyeXRoaW5nIGRvd24gYmVjYXVzZSB0aGUgd3NkbCB0ZXN0IGRvZXNudCB3b3JrCi0gICAgaWYoc3RhdHVzLmdldFNldmVyaXR5KCkgIT0gU3RhdHVzLk9LKXsKLSAgICAgIElTdGF0dXNIYW5kbGVyIHNIYW5kbGVyID0gZW52LmdldFN0YXR1c0hhbmRsZXIoKTsKLSAgICAgIElTdGF0dXMgaW5mb1N0YXR1cyA9IFN0YXR1c1V0aWxzLmluZm9TdGF0dXMoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfVU5BQkxFX1RPX0xBVU5DSF9XU0RMX1RFU1QgKTsKLSAgICAgIHNIYW5kbGVyLnJlcG9ydEluZm8oaW5mb1N0YXR1cyk7Ci0gICAgICByZXR1cm4gaW5mb1N0YXR1czsJCi0gICAgfQotICAgcmV0dXJuIHN0YXR1czsKLSAgCQotICB9Ci0KLSAgcHJpdmF0ZSBJU3RhdHVzIGNvbW1hbmRGYWN0b3J5RXhlY3V0aW9uKElDb21tYW5kRmFjdG9yeSBjb21tYW5kRmFjdG9yeSxJRW52aXJvbm1lbnQgZW52LCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCi0gIHsKLQlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7ICAJCi0Jd2hpbGUoY29tbWFuZEZhY3RvcnkuaGFzTmV4dCgpKQotICB7IAotCSAgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gb3BlcmF0aW9uID0gY29tbWFuZEZhY3RvcnkuZ2V0TmV4dENvbW1hbmQoKTsKLSAgICAKLQkgIGlmIChvcGVyYXRpb24gIT0gbnVsbCkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgb3BlcmF0aW9uLnNldEVudmlyb25tZW50KCBlbnYgKTsKLQkgICAgICBzdGF0dXMgPSBvcGVyYXRpb24uZXhlY3V0ZSggbW9uaXRvciwgbnVsbCApOwotICAgICAgfQotICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgICAgewotICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggZXhjICk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotCSAgaWYoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKXsKLQkgICAgSVN0YXR1c0hhbmRsZXIgc0hhbmRsZXIgPSBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpOwotCQlzSGFuZGxlci5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQlyZXR1cm4gc3RhdHVzOwotCSAgfQotICAgIH0KLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0gIAotICAKLSAgcHJpdmF0ZSBUZXN0SW5mbyBnZXRUZXN0SW5mbygpCi0gIHsKLSAgICAvLwlnZXQgdGhlIHNlcnZlciBzdHVmZgotICAgIGlmIChzZXJ2aWNlaWRzLmdldFNlcnZlckluc3RhbmNlSWQoKSAhPSBudWxsKSAKLQkgIHNlcnZpY2VFeGlzdGluZ1NlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlcihzZXJ2aWNlaWRzLmdldFNlcnZlckluc3RhbmNlSWQoKSk7Ci0gICAgZWxzZSBpZiAoc2VydmljZVNlcnZlckluc3RhbmNlSWQhPW51bGwpCi0JCXNlcnZpY2VFeGlzdGluZ1NlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlcihzZXJ2aWNlU2VydmVySW5zdGFuY2VJZCk7Ci0JCi0JaWYgKHNlcnZpY2VFeGlzdGluZ1NlcnZlciAhPSBudWxsKQotCSAgc2VydmljZVNlcnZlclR5cGVJRCA9IHNlcnZpY2VFeGlzdGluZ1NlcnZlci5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKTsKLQllbHNlCi0JICBzZXJ2aWNlU2VydmVyVHlwZUlEID0gc2VydmljZWlkcy5nZXRTZXJ2ZXJJZCgpOwotCS8vIHNlcnZlciB3aWxsIGJlIGNyZWF0ZWQgaW4gU2VydmVyRGVwbG95YWJsZUNvbmZpZ3VyYXRpb25Db21tYW5kCi0gIAotICAgIFRlc3RJbmZvIHRlc3RJbmZvID0gbmV3IFRlc3RJbmZvKCk7Ci0JaWYgKHNlcnZpY2VFeGlzdGluZ1NlcnZlciE9bnVsbCkKLQkJdGVzdEluZm8uc2V0U2VydmljZUV4aXN0aW5nU2VydmVyKHNlcnZpY2VFeGlzdGluZ1NlcnZlcik7Ci0gICAgdGVzdEluZm8uc2V0U2VydmljZVNlcnZlclR5cGVJRChzZXJ2aWNlU2VydmVyVHlwZUlEKTsKLQl0ZXN0SW5mby5zZXRTZXJ2aWNlUHJvamVjdChzZXJ2ZXJQcm9qZWN0KTsKLQl0ZXN0SW5mby5zZXRXc2RsU2VydmljZVVSTCh3c2RsVVJJKTsKLQl0ZXN0SW5mby5zZXRFeHRlcm5hbEJyb3dzZXIoZXh0ZXJuYWxCcm93c2VyKTsKLQl0ZXN0SW5mby5zZXRFbmRwb2ludChlbmRwb2ludHMpOwotCXJldHVybiB0ZXN0SW5mbzsKLQkKLSAgfQotICAKLSAgCi0gIHB1YmxpYyB2b2lkIHNldFRlc3RJRChTdHJpbmcgdGVzdElEKQotICB7Ci0gIAl0aGlzLnRlc3RJRCA9IHRlc3RJRDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TGF1bmNoZWRTZXJ2aWNlVGVzdE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGxhdW5jaGVkU2VydmljZVRlc3ROYW1lOwkKLSAgfQotICBwdWJsaWMgdm9pZCBzZXRXc2RsVVJJKFN0cmluZyB3c2RsVVJJKQotICB7Ci0gIAl0aGlzLndzZGxVUkkgPSB3c2RsVVJJOwotICB9Ci0gICAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZlclByb2plY3QoU3RyaW5nIHNlcnZlclByb2plY3QpCi0gIHsKLSAgICB0aGlzLnNlcnZlclByb2plY3QgPSBzZXJ2ZXJQcm9qZWN0OwotICB9Ci0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcihUeXBlUnVudGltZVNlcnZlciBzZXJ2aWNlaWRzKQotICB7Ci0gICAgdGhpcy5zZXJ2aWNlaWRzID0gc2VydmljZWlkczsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEV4dGVybmFsQnJvd3Nlcihib29sZWFuIGV4dGVybmFsQnJvd3NlcikKLSAgewotCSAgdGhpcy5leHRlcm5hbEJyb3dzZXIgPSBleHRlcm5hbEJyb3dzZXI7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVuZHBvaW50KExpc3QgZW5kcG9pbnRzKQotICB7Ci0gICAgdGhpcy5lbmRwb2ludHMgPSBlbmRwb2ludHM7Ci0gIH0KLQotcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJNb2R1bGUoKSB7Ci0JcmV0dXJuIHNlcnZlck1vZHVsZTsKLX0KLQotcHVibGljIHZvaWQgc2V0U2VydmVyTW9kdWxlKFN0cmluZyBzZXJ2ZXJNb2R1bGUpIHsKLQl0aGlzLnNlcnZlck1vZHVsZSA9IHNlcnZlck1vZHVsZTsKLX0KLQotcHVibGljIHZvaWQgc2V0U2VydmljZVNlcnZlckluc3RhbmNlSWQoU3RyaW5nIHNzSW5zdGFuY2VJZCl7Ci0JdGhpcy5zZXJ2aWNlU2VydmVySW5zdGFuY2VJZCA9IHNzSW5zdGFuY2VJZDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTYzOWExLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L1dlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA2MDggICAxNDQ1MDAgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKiAyMDA2MDgxOCAgIDE1MzkwMyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQnJvd3NlIGRvZXMgbm90IHdvcmsgaW4gZ2VuZXJhdGUgY2xpZW50IHRlc3QgcGFnZQotICogMjAwNjA5MDYgICAxNTQ1NDggZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cywgVGhpcyBmaXhlcyBuYW1lIGNvbGxpc2lvbnMgd2hlbiBjcmVhdGluZyBhIHNhbXBsZSBwcm9qZWN0Ci0gKiAyMDA2MDkyMiAgIDE1ODE3NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgTlBFIHdoZW4gY3JlYXRpbmcgd2ViIHNlcnZpY2UgY2xpZW50IGludG8gZXhpc3RpbmcgSmF2YSBwcm9qZWN0IHdpdGggdGVzdAotICogMjAwODA1MDcgICAyMjQ0MzMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIE5lZWQgYmV0dGVyIGVycm9yIG1lc3NhZ2UgaW4gc2FtcGxlIEpTUCBnZW5lcmF0aW9uIHdoZW4gSmF2YSBwcm94eSBiZWFuIGRvZXMgbm90IGV4aXN0Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0SXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUhlbHBlcnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5wcm9qZWN0LkoyRUVQcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5KYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uLkJvb2xlYW5TZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLS8qKgotKiBUaGlzIHRhc2sgc2V0cyB1cCBhbGwgdGhlIGRlZmF1bHRzIGZvciB0aGUgd2Vic2VydmljZSB0ZXN0Ci0qIGNsaWVudCBwYWdlCi0qCi0qLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1dFQl9NT0RVTEVfUk9PVCA9ICJXZWJDb250ZW50IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9TQU1QTEVfV0VCX1BST0pFQ1RfRVhUID0gIlNhbXBsZSI7Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgU0FNUExFX0RJUiA9ICJzYW1wbGUiOwotICAKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50UHJvamVjdDsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50UHJvamVjdEVBUjsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50UDsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50QzsKLSAgcHJpdmF0ZSBJUHJvamVjdCBjbGllbnRJUHJvamVjdDsKLSAgcHJpdmF0ZSBTdHJpbmcgZm9sZGVyOwotICBwcml2YXRlIFN0cmluZyBqc3BGb2xkZXI7Ci0gIHByaXZhdGUgQm9vbGVhblNlbGVjdGlvbltdIG1ldGhvZHM7Ci0gIHByaXZhdGUgU3RyaW5nIHByb3h5QmVhbjsKLSAgcHJpdmF0ZSBTdHJpbmcgc2FtcGxlUHJvamVjdDsKLSAgcHJpdmF0ZSBTdHJpbmcgc2FtcGxlUDsKLSAgcHJpdmF0ZSBTdHJpbmcgc2FtcGxlQzsKLSAgcHJpdmF0ZSBTdHJpbmcgc2FtcGxlUHJvamVjdEVBUjsKLQotICAKLSAgCi0gIC8qKgotICAqIENvbnN0cnVjdHMgYSBuZXcgV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsVGFzayBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gbGFiZWwgYW5kIGRlc2NyaXB0aW9uLgotICAqLwotICBwdWJsaWMgV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZCAoKQotICB7Ci0KLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0gIAkKLSAgICBpZihwcm94eUJlYW4gPT0gbnVsbCl7Ci0gICAgICAgIElTdGF0dXNIYW5kbGVyIHNIYW5kbGVyID0gZW52LmdldFN0YXR1c0hhbmRsZXIoKTsKLSAgICAgICAgSVN0YXR1cyBlcnJvclN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX0pUU19QUk9YWV9OT1RfQ09NUElMRUQgKTsKLSAgICAgICAgc0hhbmRsZXIucmVwb3J0RXJyb3IoZXJyb3JTdGF0dXMpOwotICAgICAgICByZXR1cm4gZXJyb3JTdGF0dXM7Ci0gICAgICAgIAotICAgIH0gCQotICAgIAotCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgCQotCXNhbXBsZVByb2plY3RBbmRFYXJTZXR1cChlbnYpOwotCUlQYXRoIHdlYmNvbnRlbnRQYXRoID0gbnVsbDsKLQotCS8vICpuZWVkKiB0byBkb3VibGUtY2hlY2sgdGhhdCBjbGllbnRJUHJvamVjdCBpcyBhIHdlYiBwcm9qZWN0Ci0JaWYgKEoyRUVVdGlscy5pc1dlYkNvbXBvbmVudChjbGllbnRJUHJvamVjdCkpCi0JCXdlYmNvbnRlbnRQYXRoID0gSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRQYXRoKGNsaWVudElQcm9qZWN0KTsKLQkKLSAgICAvL0dldCB0aGUgc2FtcGxlIEZvbGRlciByZWFkeQotICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAKLSAgICBpZiAod2ViY29udGVudFBhdGggIT0gbnVsbCkKLSAgICB7CQotICAgIAlTdHJpbmcgcGF0aCA9IHdlYmNvbnRlbnRQYXRoLnRvU3RyaW5nKCk7Ci0gICAgCXNiLmFwcGVuZChwYXRoKS5hcHBlbmQoIi8iKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsJLy90aGVuIGp1c3QgdXNlIHRoZSBkZWZhdWx0Ci0gICAgCXNiLmFwcGVuZCgiLyIpLmFwcGVuZChzYW1wbGVDKS5hcHBlbmQoIi8iKS5hcHBlbmQoREVGQVVMVF9XRUJfTU9EVUxFX1JPT1QpLmFwcGVuZCgiLyIpOwotICAgIH0KLSAgICBmb2xkZXIgPSBTQU1QTEVfRElSICsgZ2V0QmVhbigpOyAKLSAgICAgICAgCi0gICAgc2IuYXBwZW5kKGZvbGRlcik7Ci0gICAganNwRm9sZGVyID0gc2IudG9TdHJpbmcoKTsKLSAgICAKLSAgICAvL2dldCB0aGUgbWV0aG9kIG5hbWVzIHJlYWR5Ci0gICAgLy9maW5kIHRoZSBmdWxsIHBhdGggb2YgdGhlIGZpbGUgaW4gdGhlIHByb2plY3QKLSAgICAvKgotICAgICogR2V0dGluZyB0aGUgbWV0aG9kIG5hbWVzIHVzaW5nIGphdmFtb2YgaW50cm9zcGVjdGlvbgotICAgICovCi0gICAgCi0gICAgSmF2YU1vZlJlZmxlY3Rpb25Db21tYW5kIGphdmFtb2Zjb21tYW5kID0gbmV3IEphdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZCgpOyAKLSAgICBqYXZhbW9mY29tbWFuZC5zZXRQcm94eUJlYW4ocHJveHlCZWFuKTsKLSAgICBqYXZhbW9mY29tbWFuZC5zZXRDbGllbnRQcm9qZWN0KGNsaWVudFApOwotICAgIGphdmFtb2Zjb21tYW5kLnNldEVudmlyb25tZW50KCBlbnYgKTsKLSAgICAKLSAgICAKLSAgICAKLSAgICB0cnl7IAotICAgICAgSVN0YXR1cyBtb2ZTdGF0dXMgPSBqYXZhbW9mY29tbWFuZC5leGVjdXRlKCBtb25pdG9yLCBudWxsKTsKLSAgICAgIGlmKG1vZlN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikKLSAgICAgIAlyZXR1cm4gbW9mU3RhdHVzOwotICAgIH1jYXRjaChFeGNlcHRpb24gZXhjKXsKLSAgICAJSVN0YXR1c0hhbmRsZXIgc0hhbmRsZXIgPSBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpOwotICAgICAgICBJU3RhdHVzIGVycm9yU3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfRVJST1JfSlRTX1BST1hZX05PVF9DT01QSUxFRCApOwotICAgICAgICBzSGFuZGxlci5yZXBvcnRFcnJvcihlcnJvclN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBlcnJvclN0YXR1czsKLSAgICB9ICAKLSAgICBKYXZhSGVscGVycyBqYXZhSGVscGVycyA9IGphdmFtb2Zjb21tYW5kLmdldEphdmFDbGFzcygpOwotICAgIGlmIChqYXZhSGVscGVycyA9PSBudWxsKSByZXR1cm4gc3RhdHVzOwotICAgICAgCi0gICAgSmF2YUNsYXNzIGphdmFDbGFzcyA9IG51bGw7IAotICAgIGlmKGphdmFIZWxwZXJzIGluc3RhbmNlb2YgSmF2YUNsYXNzKSAKLSAgICAgamF2YUNsYXNzID0gKEphdmFDbGFzcylqYXZhSGVscGVyczsgCi0gICAgZWxzZSByZXR1cm4gc3RhdHVzOyAKLSAgICBMaXN0IG1ldGhvZExpc3QgPSBqYXZhQ2xhc3MuZ2V0UHVibGljTWV0aG9kcygpOwotIAlCb29sZWFuU2VsZWN0aW9uW10gdGVtcE1ldGhvZHMgPSBuZXcgQm9vbGVhblNlbGVjdGlvblttZXRob2RMaXN0LnNpemUoKV07Ci0gICAgTGlzdEl0ZXJhdG9yIGxpc3RJdGVyYXRvciA9IG1ldGhvZExpc3QubGlzdEl0ZXJhdG9yKCk7Ci0gICAgCi0gICAgaW50IGogPSAwOwotIAl3aGlsZSAobGlzdEl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBNZXRob2QgbWV0aG9kID0gKE1ldGhvZClsaXN0SXRlcmF0b3IubmV4dCgpOwotICAgICAgaWYobWV0aG9kLmlzQ29uc3RydWN0b3IoKSkgY29udGludWU7Ci0gICAgICAKLSAgICAgIHRlbXBNZXRob2RzW2pdID0gbmV3IEJvb2xlYW5TZWxlY3Rpb24oIG1ldGhvZC5nZXRNZXRob2RFbGVtZW50U2lnbmF0dXJlKCksIHRydWUpOyAgICAgIAotICAgICAgaisrOwotICAgIH0gCi0gICAgbWV0aG9kcyA9IHRlbXBNZXRob2RzOwotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9TQU1QTEVfRUFSX1BST0pFQ1RfRVhUID0gIkVBUiI7Ci0gIAotICBwcml2YXRlIHZvaWQgc2FtcGxlUHJvamVjdEFuZEVhclNldHVwKElFbnZpcm9ubWVudCBlbnYpCi0gIHsKLQlpZihjbGllbnRQcm9qZWN0ID09IG51bGwpIHJldHVybjsKLSAgCWVsc2V7Ci0JICBpbnQgaW5kZXggPSBjbGllbnRQcm9qZWN0LmluZGV4T2YoIi8iKTsKLQkgIGNsaWVudFAgPSBjbGllbnRQcm9qZWN0LnN1YnN0cmluZygwLGluZGV4KTsKLQkgIGNsaWVudEMgPSBjbGllbnRQcm9qZWN0LnN1YnN0cmluZyhpbmRleCArIDEpOwotICAJfQotCSAgCi0JY2xpZW50SVByb2plY3QgPSAoSVByb2plY3QpUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KGNsaWVudFApOwotICAJCi0gIAlpZihKMkVFVXRpbHMuaXNXZWJDb21wb25lbnQoY2xpZW50SVByb2plY3QpKXsKLSAgICAgIHNhbXBsZVByb2plY3QgPSBjbGllbnRQcm9qZWN0OwotCSAgc2FtcGxlUCA9IGNsaWVudFA7Ci0JICBzYW1wbGVDID0gY2xpZW50QzsKLSAJfSAgCQotICAJZWxzZXsgCi0gIAkgIHNhbXBsZVAgPSBjbGllbnRQICsgREVGQVVMVF9TQU1QTEVfV0VCX1BST0pFQ1RfRVhUOwotCSAgc2FtcGxlQyA9IGNsaWVudEMgKyBERUZBVUxUX1NBTVBMRV9XRUJfUFJPSkVDVF9FWFQ7Ci0JICBzYW1wbGVQcm9qZWN0ID0gc2FtcGxlUCArICIvIiArIHNhbXBsZUM7Ci0JICAKLQkgIFN0cmluZyBzYW1wbGVUZW1wID0gc2FtcGxlUDsKLQkgIAotCSAgYm9vbGVhbiBuYW1lRm91bmQgPSBmYWxzZTsKLQkgIGludCBpID0gMTsKLQkgIHdoaWxlKCFuYW1lRm91bmQpewotCQkgIElQcm9qZWN0IHNhbXBsZUlQcm9qZWN0ID0gKElQcm9qZWN0KVByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChzYW1wbGVUZW1wKTsKLQkJICBpZihzYW1wbGVJUHJvamVjdC5leGlzdHMoKSAmJiAhSjJFRVByb2plY3RVdGlsaXRpZXMuaXNEeW5hbWljV2ViUHJvamVjdChzYW1wbGVJUHJvamVjdCkpewotCQkJICBzYW1wbGVUZW1wID0gc2FtcGxlUCArIEludGVnZXIudG9TdHJpbmcoaSk7Ci0JCQkgIHNhbXBsZVByb2plY3QgPSBzYW1wbGVUZW1wICsgIi8iICsgc2FtcGxlQzsKLQkJICAgICAgCi0JCSAgfQotCQkgIGVsc2UKLQkJCSAgbmFtZUZvdW5kID0gdHJ1ZTsgCi0JCSAgCi0JCSAgaSsrOwotCSAgfQotCSAgc2FtcGxlUCA9IHNhbXBsZVRlbXA7Ci0gICAgCi0gIAl9ICAKLQkKLSAgCQotICAJCi0gIAkKLSAgCXNhbXBsZVByb2plY3RFQVIgPSBjbGllbnRQcm9qZWN0RUFSOwotCWlmIChzYW1wbGVQcm9qZWN0RUFSID09IG51bGwgfHwgc2FtcGxlUHJvamVjdEVBUi5sZW5ndGgoKT09MCl7Ci0JICBzYW1wbGVQcm9qZWN0RUFSID0gc2FtcGxlUCArIERFRkFVTFRfU0FNUExFX0VBUl9QUk9KRUNUX0VYVCArICIvIiArIHNhbXBsZUMgKyBERUZBVUxUX1NBTVBMRV9FQVJfUFJPSkVDVF9FWFQ7CQotCX0KLQkKLSAgfQotICAgIAotICAvL2dldHRlcnMgYW5kIHNldHRlcnMKLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldEJlYW4oKQotICB7Ci0gIAlpbnQgaW5kZXggPSBwcm94eUJlYW4ubGFzdEluZGV4T2YoIi4iKTsKLSAgCVN0cmluZyBlbmQgPSAiIjsKLSAgCWlmKGluZGV4ICE9IC0xKXsKLSAgCSAgZW5kID0gcHJveHlCZWFuLnN1YnN0cmluZyhpbmRleCArIDEpOyAgCQotICAJfQotICAJU3RyaW5nIGJlYW4gPSBlbmQuc3Vic3RyaW5nKDAsZW5kLmxlbmd0aCgpKTsKLSAgICAKLSAgCXJldHVybiBiZWFuOwotICB9Ci0gIAotICAKLSAKLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Rm9sZGVyKCkKLSAgewotICAJcmV0dXJuIGZvbGRlcjsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRKc3BGb2xkZXIoKQotICB7Ci0gIAlyZXR1cm4ganNwRm9sZGVyOwotICB9Ci0gIAotICBwdWJsaWMgQm9vbGVhblNlbGVjdGlvbltdIGdldE1ldGhvZHMoKQotICB7Ci0gICAgcmV0dXJuIG1ldGhvZHM7ICAKLSAgfQotICAgIAotICBwdWJsaWMgU3RyaW5nIGdldFNhbXBsZVByb2plY3QoKQotICB7Ci0gIAlyZXR1cm4gc2FtcGxlUHJvamVjdDsKLSAgfQotICAgICAgIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRQcm9qZWN0KFN0cmluZyBjbGllbnRQcm9qZWN0KQotICB7Ci0gICAgdGhpcy5jbGllbnRQcm9qZWN0ID0gY2xpZW50UHJvamVjdDsKLSAgfQotICAKLSAgICAKLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50UHJvamVjdEVBUihTdHJpbmcgY2xpZW50UHJvamVjdEVBUikKLSAgewotICAgIHRoaXMuY2xpZW50UHJvamVjdEVBUiA9IGNsaWVudFByb2plY3RFQVI7Ci0gIH0KLSAgCi0gIAotICBwdWJsaWMgdm9pZCBzZXRQcm94eUJlYW4oU3RyaW5nIHByb3h5QmVhbikKLSAgewotICAJdGhpcy5wcm94eUJlYW4gPSBwcm94eUJlYW47Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2FtcGxlUHJvamVjdEVBUigpCi0gIHsKLSAgICByZXR1cm4gc2FtcGxlUHJvamVjdEVBUjsKLSAgfQotICAKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvV2ViU2VydmljZVRlc3RDbGllbnREZXBhcnR1cmVGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvV2ViU2VydmljZVRlc3RDbGllbnREZXBhcnR1cmVGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDk0NWE3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L1dlYlNlcnZpY2VUZXN0Q2xpZW50RGVwYXJ0dXJlRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIENyZWF0ZWQgb24gTWFyIDI1LCAyMDA0Ci0gKgotICogVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgZmlsZSBnbyB0bwotICogV2luZG93IC0gUHJlZmVyZW5jZXMgLSBKYXZhIC0gQ29kZSBHZW5lcmF0aW9uIC0gQ29kZSBhbmQgQ29tbWVudHMKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkJ1aWxkUHJvamVjdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC53c3NhbXBsZS5BZGRNb2R1bGVEZXBlbmRlbmNpZXNDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNpbXBsZUZyYWdtZW50OwotCi0KLS8qKgotICogQGF1dGhvciBnaWxiZXJ0YQotICoKLSAqIFRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZ2VuZXJhdGVkIHR5cGUgY29tbWVudCBnbyB0bwotICogV2luZG93IC0gUHJlZmVyZW5jZXMgLSBKYXZhIC0gQ29kZSBHZW5lcmF0aW9uIC0gQ29kZSBhbmQgQ29tbWVudHMKLSAqLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VUZXN0Q2xpZW50RGVwYXJ0dXJlRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50IAotewotICBwdWJsaWMgV2ViU2VydmljZVRlc3RDbGllbnREZXBhcnR1cmVGcmFnbWVudCgpCi0gIHsKLSAgCWFkZChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IEZpbmlzaERlZmF1bHRDb21tYW5kKCksIiIpKTsKLSAgIAlhZGQobmV3IFNpbXBsZUZyYWdtZW50KG5ldyBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kKCksIiIpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICB7Ci0gIAlkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhUZXN0Q2xpZW50RGVwYXJ0dXJlSW5pdENvbW1hbmQuY2xhc3MsICJGb3JjZUJ1aWxkIixCdWlsZFByb2plY3RDb21tYW5kLmNsYXNzKTsKLSAgCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEZpbmlzaERlZmF1bHRDb21tYW5kLmNsYXNzLCAiU2FtcGxlU2VydmVyVHlwZUlEIixBZGRNb2R1bGVEZXBlbmRlbmNpZXNDb21tYW5kLmNsYXNzKTsKLSAgCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEZpbmlzaERlZmF1bHRDb21tYW5kLmNsYXNzLCAiU2FtcGxlRXhpc3RpbmdTZXJ2ZXIiLEFkZE1vZHVsZURlcGVuZGVuY2llc0NvbW1hbmQuY2xhc3MpOwotICAJZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoRmluaXNoRGVmYXVsdENvbW1hbmQuY2xhc3MsICJTYW1wbGVTZXJ2ZXJUeXBlSUQiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAJZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoRmluaXNoRGVmYXVsdENvbW1hbmQuY2xhc3MsICJTYW1wbGVFeGlzdGluZ1NlcnZlciIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gIAkgICAgCi0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvZXhwbG9yZXIvRXhwbG9yZXJTZXJ2aWNlVGVzdENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L2V4cGxvcmVyL0V4cGxvcmVyU2VydmljZVRlc3RDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZTdiNjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvZXhwbG9yZXIvRXhwbG9yZXJTZXJ2aWNlVGVzdENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuZXhwbG9yZXI7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldTRExUZXN0RmluaXNoQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5MYXVuY2hPcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLkxhdW5jaE9wdGlvbnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLldTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsdWdpbi5FeHBsb3JlclBsdWdpbjsKLQotcHVibGljIGNsYXNzIEV4cGxvcmVyU2VydmljZVRlc3RDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gaW1wbGVtZW50cyBXU0RMVGVzdEZpbmlzaENvbW1hbmQKLXsKLQotICBwcml2YXRlIGJvb2xlYW4gZXh0ZXJuYWxCcm93c2VyID0gdHJ1ZTsKLSAgcHJpdmF0ZSBTdHJpbmcgd3NkbFNlcnZpY2VVUkw7Ci0gIHByaXZhdGUgTGlzdCBlbmRwb2ludHM7Ci0gIAotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgbmV3IFdlYlNlcnZpY2VFeHBsb3JlckxhdW5jaCBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gbGFiZWwgYW5kIGRlc2NyaXB0aW9uLgotICAqLwotICBwdWJsaWMgRXhwbG9yZXJTZXJ2aWNlVGVzdENvbW1hbmQgKCkKLSAgewotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICAKLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICAKLSAgICBXU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kIGxhdW5jaENvbW1hbmQgPSBuZXcgV1NFeHBsb3JlckxhdW5jaGVyQ29tbWFuZCgpOwotICAgIGxhdW5jaENvbW1hbmQuc2V0Rm9yY2VMYXVuY2hPdXRzaWRlSURFKGV4dGVybmFsQnJvd3Nlcik7Ci0gICAgVmVjdG9yIGxhdW5jaE9wdGlvblZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLQlTdHJpbmcgc3RhdGVMb2NhdGlvbiA9IEV4cGxvcmVyUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0UGx1Z2luU3RhdGVMb2NhdGlvbigpOwotCVN0cmluZyBkZWZhdWx0RmF2b3JpdGVzTG9jYXRpb24gPSBFeHBsb3JlclBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldERlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbigpOwotCWxhdW5jaE9wdGlvblZlY3Rvci5hZGQobmV3IExhdW5jaE9wdGlvbihMYXVuY2hPcHRpb25zLlNUQVRFX0xPQ0FUSU9OLHN0YXRlTG9jYXRpb24pKTsKLQlsYXVuY2hPcHRpb25WZWN0b3IuYWRkKG5ldyBMYXVuY2hPcHRpb24oTGF1bmNoT3B0aW9ucy5ERUZBVUxUX0ZBVk9SSVRFU19MT0NBVElPTixkZWZhdWx0RmF2b3JpdGVzTG9jYXRpb24pKTsKLSAgICBsYXVuY2hPcHRpb25WZWN0b3IuYWRkKG5ldyBMYXVuY2hPcHRpb24oTGF1bmNoT3B0aW9ucy5XU0RMX1VSTCx3c2RsU2VydmljZVVSTCkpOwotICAgIGlmIChlbmRwb2ludHMgIT0gbnVsbCkKLSAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBlbmRwb2ludHMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgICAgbGF1bmNoT3B0aW9uVmVjdG9yLmFkZChuZXcgTGF1bmNoT3B0aW9uKExhdW5jaE9wdGlvbnMuV0VCX1NFUlZJQ0VfRU5EUE9JTlQsIGl0Lm5leHQoKS50b1N0cmluZygpKSk7Ci0gICAgbGF1bmNoQ29tbWFuZC5zZXRMYXVuY2hPcHRpb25zKChMYXVuY2hPcHRpb25bXSlsYXVuY2hPcHRpb25WZWN0b3IudG9BcnJheShuZXcgTGF1bmNoT3B0aW9uWzBdKSk7Ci0gICAgbGF1bmNoQ29tbWFuZC5zZXRFbnZpcm9ubWVudCggZW52ICk7Ci0gICAgc3RhdHVzID0gbGF1bmNoQ29tbWFuZC5leGVjdXRlKCBtb25pdG9yLCBudWxsICk7Ci0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEV4dGVybmFsQnJvd3Nlcihib29sZWFuIGV4dGVybmFsQnJvd3NlcikKLSAgewotICAJdGhpcy5leHRlcm5hbEJyb3dzZXIgPSBleHRlcm5hbEJyb3dzZXI7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFdzZGxTZXJ2aWNlVVJMKFN0cmluZyB3c2RsU2VydmljZVVSTCkKLSAgewotICAJdGhpcy53c2RsU2VydmljZVVSTCA9IHdzZGxTZXJ2aWNlVVJMOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJUeXBlSUQoU3RyaW5nIHNlcnZpY2VTZXJ2ZXJUeXBlSUQpCi0gIHsKLSAgICAvL1RPRE86IFR5cGUgbWFwcGluZ3MgdG8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RXhpc3RpbmdTZXJ2ZXIoSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIpCi0gIHsKLSAgICAvL1RPRE86IFR5cGUgbWFwcGluZ3MgdG8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVByb2plY3QoU3RyaW5nIHNlcnZpY2VQcm9qZWN0KQotICB7Ci0gICAgLy9UT0RPOiBUeXBlIG1hcHBpbmdzIHRvIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIHJlbW92ZWQuCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVuZHBvaW50KExpc3QgZW5kcG9pbnRzKQotICB7Ci0gICAgdGhpcy5lbmRwb2ludHMgPSBlbmRwb2ludHM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L2V4cGxvcmVyL1dTRUdlbmVyYXRlQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvZXhwbG9yZXIvV1NFR2VuZXJhdGVDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhZDZlZWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvZXhwbG9yZXIvV1NFR2VuZXJhdGVDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5leHBsb3JlcjsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5MYXVuY2hPcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLkxhdW5jaE9wdGlvbnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLldTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsdWdpbi5FeHBsb3JlclBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5UZXN0SW5mbzsKLQotcHVibGljIGNsYXNzIFdTRUdlbmVyYXRlQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIAotewotCi0gIHByaXZhdGUgVGVzdEluZm8gdGVzdEluZm87Ci0JICAKLSAgcHVibGljIFdTRUdlbmVyYXRlQ29tbWFuZChUZXN0SW5mbyB0ZXN0SW5mbyl7Ci0gICAgdGhpcy50ZXN0SW5mbyA9IHRlc3RJbmZvOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICAKLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICAKLSAgICBXU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kIGxhdW5jaENvbW1hbmQgPSBuZXcgV1NFeHBsb3JlckxhdW5jaGVyQ29tbWFuZCgpOwotICAgIGxhdW5jaENvbW1hbmQuc2V0Rm9yY2VMYXVuY2hPdXRzaWRlSURFKHRlc3RJbmZvLmdldEV4dGVybmFsQnJvd3NlcigpKTsKLSAgICBWZWN0b3IgbGF1bmNoT3B0aW9uVmVjdG9yID0gbmV3IFZlY3RvcigpOwotCVN0cmluZyBzdGF0ZUxvY2F0aW9uID0gRXhwbG9yZXJQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRQbHVnaW5TdGF0ZUxvY2F0aW9uKCk7Ci0JU3RyaW5nIGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbiA9IEV4cGxvcmVyUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0RGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uKCk7Ci0JbGF1bmNoT3B0aW9uVmVjdG9yLmFkZChuZXcgTGF1bmNoT3B0aW9uKExhdW5jaE9wdGlvbnMuU1RBVEVfTE9DQVRJT04sc3RhdGVMb2NhdGlvbikpOwotCWxhdW5jaE9wdGlvblZlY3Rvci5hZGQobmV3IExhdW5jaE9wdGlvbihMYXVuY2hPcHRpb25zLkRFRkFVTFRfRkFWT1JJVEVTX0xPQ0FUSU9OLGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbikpOwotICAgIGxhdW5jaE9wdGlvblZlY3Rvci5hZGQobmV3IExhdW5jaE9wdGlvbihMYXVuY2hPcHRpb25zLldTRExfVVJMLHRlc3RJbmZvLmdldFdzZGxTZXJ2aWNlVVJMKCkpKTsKLSAgICBpZiAodGVzdEluZm8uZ2V0RW5kcG9pbnQoKSAhPSBudWxsKQotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHRlc3RJbmZvLmdldEVuZHBvaW50KCkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgICAgbGF1bmNoT3B0aW9uVmVjdG9yLmFkZChuZXcgTGF1bmNoT3B0aW9uKExhdW5jaE9wdGlvbnMuV0VCX1NFUlZJQ0VfRU5EUE9JTlQsIGl0Lm5leHQoKS50b1N0cmluZygpKSk7Ci0gICAgbGF1bmNoQ29tbWFuZC5zZXRMYXVuY2hPcHRpb25zKChMYXVuY2hPcHRpb25bXSlsYXVuY2hPcHRpb25WZWN0b3IudG9BcnJheShuZXcgTGF1bmNoT3B0aW9uWzBdKSk7Ci0gICAgbGF1bmNoQ29tbWFuZC5zZXRFbnZpcm9ubWVudCggZW52ICk7Ci0gICAgc3RhdHVzID0gbGF1bmNoQ29tbWFuZC5leGVjdXRlKCBtb25pdG9yLCBudWxsICk7Ci0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvZXhwbG9yZXIvV1NFV2ViU2VydmljZVRlc3Rlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvZXhwbG9yZXIvV1NFV2ViU2VydmljZVRlc3Rlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmExMTZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L2V4cGxvcmVyL1dTRVdlYlNlcnZpY2VUZXN0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LmV4cGxvcmVyOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLklDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5TaW1wbGVDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZVRlc3RlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5UZXN0SW5mbzsKLQotcHVibGljIGNsYXNzIFdTRVdlYlNlcnZpY2VUZXN0ZXIgaW1wbGVtZW50cyBJV2ViU2VydmljZVRlc3RlciAgewotCi0gIHB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgZ2VuZXJhdGUoVGVzdEluZm8gdGVzdEluZm8pewotICAgIFZlY3RvciBjb21tYW5kcyA9IG5ldyBWZWN0b3IoKTsKLQlyZXR1cm4gbmV3IFNpbXBsZUNvbW1hbmRGYWN0b3J5KGNvbW1hbmRzKTsKLSAgfQotCSAgCi0gIHB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgbGF1bmNoKFRlc3RJbmZvIHRlc3RJbmZvKXsKLSAgICBWZWN0b3IgY29tbWFuZHMgPSBuZXcgVmVjdG9yKCk7Ci0JY29tbWFuZHMuYWRkKG5ldyBXU0VHZW5lcmF0ZUNvbW1hbmQodGVzdEluZm8pKTsKLQlyZXR1cm4gbmV3IFNpbXBsZUNvbW1hbmRGYWN0b3J5KGNvbW1hbmRzKTsJCi0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvZXhwbG9yZXIvV2ViU2VydmljZUV4cGxvcmVyRXhlY3V0YWJsZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3QvZXhwbG9yZXIvV2ViU2VydmljZUV4cGxvcmVyRXhlY3V0YWJsZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmZjOWFlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L2V4cGxvcmVyL1dlYlNlcnZpY2VFeHBsb3JlckV4ZWN1dGFibGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuZXhwbG9yZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0LldlYlNlcnZpY2VFeGVjdXRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLS8qKgotKiBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgZm9yIG9iamVjdHMgdGhhdCByZXByZXNlbnQgYSBraW5kIG9mCi0qIFdlYiBTZXJ2aWNlLVNlcnZlci1SdW50aW1lIGFydGlmYWN0LiBUaGUgcHJpbWFyeSBwdXJwb3NlIG9mIGEgV2ViU2VydmljZVNlcnZlclJ1bnRpbWVUeXBlCi0qIG9iamVjdCBpcyB0byBtYW51ZmFjdHVyZSB0aGUgd2l6YXJkIHBhZ2VzIHRoYXQgc3VwcG9ydCB0aGUgdHlwZSwgc2VydmVyLCBhbmQgcnVudGltZSBjb25maWd1cmF0aW9uLgotKi8KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlRXhwbG9yZXJFeGVjdXRhYmxlIGltcGxlbWVudHMgV2ViU2VydmljZUV4ZWN1dGFibGUKLXsKLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0gICAKLSAgCi0gIHB1YmxpYyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiBnZXRGaW5pc2hDb21tYW5kKCkKLSAgewotICAgIHJldHVybiBuZXcgRXhwbG9yZXJTZXJ2aWNlVGVzdENvbW1hbmQoKTsKLSAgfQotICAKLX0KLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC93c3NhbXBsZS9BZGRNb2R1bGVEZXBlbmRlbmNpZXNDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC93c3NhbXBsZS9BZGRNb2R1bGVEZXBlbmRlbmNpZXNDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MDRiZjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aWRnZXRzL3Rlc3Qvd3NzYW1wbGUvQWRkTW9kdWxlRGVwZW5kZW5jaWVzQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMyNCAgIDEyMjc5OSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNTAzICAgMTM4NDc4IHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA1MTAgICAxNDExMTUgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA3MTIxMgkgIDIwMDE5MyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA4MDIxMSAgIDExNzkyNCB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZyBIYQotICogMjAwODAzMjUgICAxODQ3NjEgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODA1MjcgICAyMzQxNjkgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODEwMDEgICAyNDM4NjkgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgV2ViIFNlcnZpY2UgdG9vbHMgYWxsb3dpbmcgbWl4ZWQgSjJFRSBsZXZlbHMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0Lndzc2FtcGxlOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNsYXNzcGF0aEVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5jbGFzc3BhdGhkZXAuVXBkYXRlQ2xhc3NwYXRoQXR0cmlidXRlVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5wbHVnaW4uSUoyRUVNb2R1bGVDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkFkZE1vZHVsZVRvU2VydmVyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQXNzb2NpYXRlTW9kdWxlV2l0aEVBUkNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkNyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLlJlcXVpcmVkRmFjZXRWZXJzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuU3RhcnRTZXJ2ZXJDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uVmFsaWRhdGlvblV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuVGVzdEluZm87Ci0KLXB1YmxpYyBjbGFzcyBBZGRNb2R1bGVEZXBlbmRlbmNpZXNDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgCi0gIHByaXZhdGUgVGVzdEluZm8gdGVzdEluZm87CQotCQotICBwcml2YXRlIElQcm9qZWN0IHNhbXBsZUlQcm9qZWN0OwotICBwcml2YXRlIElQcm9qZWN0IGNsaWVudElQcm9qZWN0OwotICBwcml2YXRlIElQcm9qZWN0IHNhbXBsZUVBUklQcm9qZWN0OwotICBwcml2YXRlIFN0cmluZyBzYW1wbGVFQVJQcm9qZWN0OwotICAKLSAgcHVibGljIEFkZE1vZHVsZURlcGVuZGVuY2llc0NvbW1hbmQoVGVzdEluZm8gdGVzdEluZm8pCi0gIHsKLSAgICB0aGlzLnRlc3RJbmZvID0gdGVzdEluZm87Ci0gIH0KLQotICAvKioKLSAgICogRXhlY3V0ZSBXZWJTZXJ2ZXJEZWZhdWx0aW5nVGFzayBTZXQgdGhlIGRlZmF1bHQgc2VydmVyIG5hbWUgYW5kIGlkIGdpdmVuIGEKLSAgICogZGVwbG95YWJsZS4KLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0JICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLQkgIC8vMS4gQ3JlYXRlIGEgV2ViIHByb2plY3QgZm9yIHRoZSBzYW1wbGUgaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCi0JICBzYW1wbGVJUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdCh0ZXN0SW5mby5nZXRHZW5lcmF0aW9uUHJvamVjdCgpKTsKLQkgIGJvb2xlYW4gY3JlYXRlZFNhbXBsZVByb2plY3QgPSBmYWxzZTsKLSAgICAgIFZhbGlkYXRpb25VdGlscyB2dSA9IG5ldyBWYWxpZGF0aW9uVXRpbHMoKTsKLSAgICAgIGJvb2xlYW4gc2VydmVyTmVlZHNFQVIgPSB2dS5zZXJ2ZXJOZWVkc0VBUih0ZXN0SW5mby5nZXRDbGllbnRTZXJ2ZXJUeXBlSUQoKSk7Ci0gICAgICBpZiAoc2VydmVyTmVlZHNFQVIpIHsKLQkJaWYgKHRlc3RJbmZvLmdldENsaWVudEVBUlByb2plY3QoKSA9PSBudWxsCi0JCQkJfHwgdGVzdEluZm8uZ2V0Q2xpZW50RUFSUHJvamVjdCgpLmxlbmd0aCgpID09IDApIHsKLQkJCXNhbXBsZUVBUlByb2plY3QgPSB0ZXN0SW5mby5nZXRHZW5lcmF0aW9uUHJvamVjdCgpICsgREVGQVVMVF9TQU1QTEVfRUFSX1BST0pFQ1RfRVhUOwotCQl9IGVsc2UgewotCQkJc2FtcGxlRUFSUHJvamVjdCA9IHRlc3RJbmZvLmdldENsaWVudEVBUlByb2plY3QoKTsKLQkJfQotICAgICAgfQotICAgICAgaWYgKCFzYW1wbGVJUHJvamVjdC5leGlzdHMoKSkKLSAgICAgIHsgICAgCQotICAgICAgICAgIENyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZCBjb21tYW5kID0gbmV3IENyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZCgpOwotICAgICAgICAgIGNvbW1hbmQuc2V0UHJvamVjdE5hbWUodGVzdEluZm8uZ2V0R2VuZXJhdGlvblByb2plY3QoKSk7Ci0gICAgICAgICAgY29tbWFuZC5zZXRUZW1wbGF0ZUlkKElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfVEVNUExBVEUpOyAgICAgICAgICAKLSAgICAgICAgICAvLyBSZXF1aXJlZEZhY2V0VmVyc2lvbnMgaXMgc2V0IHRvIGFuIGVtcHR5IGFycmF5IGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byBpbXBvc2UgYW55IGFkZGl0aW9uYWwgY29uc3RyYWludHMuCi0gICAgICAgICAgLy8gV2UganVzdCB3YW50IHRvIGNyZWF0ZSB0aGUgaGlnaGVzdCBsZXZlbCBvZiBXZWIgcHJvamVjdCB0aGF0IHRoZSBzZWxlY3RlZCBzZXJ2ZXIgc3VwcG9ydHMuCi0gICAgICAgICAgY29tbWFuZC5zZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMobmV3IFJlcXVpcmVkRmFjZXRWZXJzaW9uWzBdKTsgICAgICAgICAgIAotICAgICAgICAgIGNvbW1hbmQuc2V0U2VydmVyRmFjdG9yeUlkKHRlc3RJbmZvLmdldENsaWVudFNlcnZlclR5cGVJRCgpKTsKLSAgICAgICAgICBjb21tYW5kLnNldFNlcnZlckluc3RhbmNlSWQodGVzdEluZm8uZ2V0Q2xpZW50RXhpc3RpbmdTZXJ2ZXIoKS5nZXRJZCgpKTsKLSAgICAgICAgICBjb21tYW5kLnNldEVhclByb2plY3ROYW1lKHNhbXBsZUVBUlByb2plY3QpOwotICAgICAgICAgIElTdGF0dXMgc3RhdHVzID0gY29tbWFuZC5leGVjdXRlKCBtb25pdG9yLCBhZGFwdGFibGUgKTsKLSAgICAgICAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoIHN0YXR1cyApOwotICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAJICAKLSAgICAgICAgICBjcmVhdGVkU2FtcGxlUHJvamVjdCA9IHRydWU7Ci0gICAgICB9Ci0JICAKLQkgIC8vMi4gSWYgdGhlIHNlbGVjdGVkIHNlcnZlciByZXF1aXJlcyBhbiBFQVIgYW5kIG5vIEVBUiBuYW1lCi0JICAvL2hhcyBiZWVuIHByb3ZpZGVkLCBjaG9vc2UgYW4gRUFSIG5hbWUgYW5kIGNyZWF0ZSBpdCBpZiBpdCBkb2Vzbid0IGV4aXN0LgotICAgICAgaWYgKHNlcnZlck5lZWRzRUFSKSB7Ci0JCQlzYW1wbGVFQVJJUHJvamVjdCAgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3Qoc2FtcGxlRUFSUHJvamVjdCk7Ci0JCQlpZiAoc2FtcGxlRUFSSVByb2plY3QgPT0gbnVsbCB8fCAhc2FtcGxlRUFSSVByb2plY3QuZXhpc3RzKCkpCi0JCQl7Ci0JCSAgICAgICAgICBDcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQgY29tbWFuZCA9IG5ldyBDcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQoKTsKLQkJICAgICAgICAgIGNvbW1hbmQuc2V0UHJvamVjdE5hbWUoc2FtcGxlRUFSUHJvamVjdCk7Ci0JCSAgICAgICAgICBjb21tYW5kLnNldFRlbXBsYXRlSWQoSUoyRUVNb2R1bGVDb25zdGFudHMuSlNUX0VBUl9URU1QTEFURSk7ICAgICAgICAgIAotCQkgICAgICAgICAgLy8gUmVxdWlyZWRGYWNldFZlcnNpb25zIGlzIHNldCB0byBhbiBlbXB0eSBhcnJheSBiZWNhdXNlIHdlIGRvbid0IG5lZWQgdG8gaW1wb3NlIGFueSBhZGRpdGlvbmFsIGNvbnN0cmFpbnRzLgotCQkgICAgICAgICAgLy8gV2UganVzdCB3YW50IHRvIGNyZWF0ZSB0aGUgaGlnaGVzdCBsZXZlbCBvZiBXZWIgcHJvamVjdCB0aGF0IHRoZSBzZWxlY3RlZCBzZXJ2ZXIgc3VwcG9ydHMuCi0JCSAgICAgICAgICBjb21tYW5kLnNldFJlcXVpcmVkRmFjZXRWZXJzaW9ucyhuZXcgUmVxdWlyZWRGYWNldFZlcnNpb25bMF0pOyAgICAgICAgICAgCi0JCSAgICAgICAgICBjb21tYW5kLnNldFNlcnZlckZhY3RvcnlJZCh0ZXN0SW5mby5nZXRDbGllbnRTZXJ2ZXJUeXBlSUQoKSk7Ci0JCSAgICAgICAgICBjb21tYW5kLnNldFNlcnZlckluc3RhbmNlSWQodGVzdEluZm8uZ2V0Q2xpZW50RXhpc3RpbmdTZXJ2ZXIoKS5nZXRJZCgpKTsKLQkJICAgICAgICAgIElTdGF0dXMgc3RhdHVzID0gY29tbWFuZC5leGVjdXRlKCBtb25pdG9yLCBhZGFwdGFibGUgKTsKLQkJICAgICAgICAgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpCi0JCSAgICAgICAgICB7Ci0JCSAgICAgICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoIHN0YXR1cyApOwotCQkgICAgICAgICAgICByZXR1cm4gc3RhdHVzOwotCQkgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgCSAgCQkJCQotCQkJfQotCQkJCi0JICB9Ci0gCi0JICAvLyAzLiBJZiB0aGUgc2VsZWN0ZWQgc2VydmVyIHJlcXVpcmVzIGFuIEVBUiwgYW5kIHRoZSBzYW1wbGUgcHJvamVjdCBoYXMKLQkJLy8gbm90IGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgRUFSLCBhZGQgaXQuCi0gICAgICBpZiAoc2VydmVyTmVlZHNFQVIpCi0gICAgICB7Ci0gIAkgICAgQXNzb2NpYXRlTW9kdWxlV2l0aEVBUkNvbW1hbmQgYXNzb2NpYXRlQ29tbWFuZCA9IG5ldyBBc3NvY2lhdGVNb2R1bGVXaXRoRUFSQ29tbWFuZCgpOwotCSAgICBhc3NvY2lhdGVDb21tYW5kLnNldFByb2plY3QodGVzdEluZm8uZ2V0R2VuZXJhdGlvblByb2plY3QoKSk7Ci0JICAgIGFzc29jaWF0ZUNvbW1hbmQuc2V0RUFSUHJvamVjdChzYW1wbGVFQVJQcm9qZWN0KTsKLQkgICAgYXNzb2NpYXRlQ29tbWFuZC5zZXRFYXIoc2FtcGxlRUFSUHJvamVjdCk7Ci0JCWFzc29jaWF0ZUNvbW1hbmQuc2V0RW52aXJvbm1lbnQoIGVudiApOwotCSAgICBJU3RhdHVzIHN0YXR1cyA9IGFzc29jaWF0ZUNvbW1hbmQuZXhlY3V0ZSggbW9uaXRvciwgbnVsbCApOwotCSAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCk9PVN0YXR1cy5FUlJPUikKLQkgICAgewotCSAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsgICAgIAotCSAgICB9ICAgICAgCSAgCi0gICAgICB9Ci0JICAKLQotICAgICAgCi0JICAKLQkgIC8vIDQuIElmIHNlcnZlciByZXF1aXJlcyBhbiBFQVIsIGFuZCB0aGUgc2FtcGxlIEVBUiBoYXMgbm90IGFscmVhZHkgYmVlbgotCQkvLyBhZGRlZCB0byB0aGUgc2VydmVyLCBhZGQgaXQuCi0JICAvLyAgIElmIG5vIEVBUiBpcyByZXF1aXJlZCwgYW5kIHNhbXBsZSBwcm9qZWN0IGhhcyBub3QgYmVlbiBhZGRlZCB0byB0aGUgc2VydmVyIGFkZCBpdC4KLSAgICAgIGlmIChzZXJ2ZXJOZWVkc0VBUiAmJiB0ZXN0SW5mby5nZXRDbGllbnRFeGlzdGluZ1NlcnZlcigpICE9IG51bGwpCi0gICAgICB7Ci0gICAgCS8vQWRkIHNhbXBsZUVBUklQcm9qZWN0IHRvIHRoZSBzZXJ2ZXIgaWYgbmVlZGVkLgotICAJCUFkZE1vZHVsZVRvU2VydmVyQ29tbWFuZCBtb2RUb1NlcnZlciA9IG5ldyBBZGRNb2R1bGVUb1NlcnZlckNvbW1hbmQoKTsKLQkJbW9kVG9TZXJ2ZXIuc2V0TW9kdWxlKHNhbXBsZUVBUlByb2plY3QpOwotCQltb2RUb1NlcnZlci5zZXRQcm9qZWN0KHNhbXBsZUVBUlByb2plY3QpOwotCQltb2RUb1NlcnZlci5zZXRTZXJ2ZXJJbnN0YW5jZUlkKHRlc3RJbmZvLmdldENsaWVudEV4aXN0aW5nU2VydmVyKCkuZ2V0SWQoKSk7Ci0JCW1vZFRvU2VydmVyLnNldEVudmlyb25tZW50KCBlbnYgKTsKLQkJSVN0YXR1cyBzdGF0dXMgPSBtb2RUb1NlcnZlci5leGVjdXRlKCBtb25pdG9yLCBudWxsICk7Ci0JCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKT09U3RhdHVzLkVSUk9SKQotCSAgICB7Ci0JICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOyAgICAgCi0JICAgIH0gICAgICAgICAJICAKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAJICAvL2FkZCBzYW1wbGVJUHJvamVjdCBkaXJlY3RseSB0byB0aGUgc2VydmVyIGlmIG5lZWRlZC4KLSAgICAJICBpZih0ZXN0SW5mby5nZXRDbGllbnRFeGlzdGluZ1NlcnZlcigpIT0gbnVsbCl7Ci0gICAgCQkgIEFkZE1vZHVsZVRvU2VydmVyQ29tbWFuZCBhZGRUb1NlcnZlciA9IG5ldyBBZGRNb2R1bGVUb1NlcnZlckNvbW1hbmQoKTsKLSAgICAJCSAgYWRkVG9TZXJ2ZXIuc2V0TW9kdWxlKHRlc3RJbmZvLmdldEdlbmVyYXRpb25Qcm9qZWN0KCkpOwotICAgIAkJICBhZGRUb1NlcnZlci5zZXRQcm9qZWN0KHRlc3RJbmZvLmdldEdlbmVyYXRpb25Qcm9qZWN0KCkpOwotICAgIAkJICBhZGRUb1NlcnZlci5zZXRTZXJ2ZXJJbnN0YW5jZUlkKHRlc3RJbmZvLmdldENsaWVudEV4aXN0aW5nU2VydmVyKCkuZ2V0SWQoKSk7Ci0gICAgCQkgIGFkZFRvU2VydmVyLnNldEVudmlyb25tZW50KCBlbnYgKTsKLSAgICAJCSAgSVN0YXR1cyBzdGF0dXMgPSBhZGRUb1NlcnZlci5leGVjdXRlKCBtb25pdG9yLCBudWxsICk7Ci0gICAgCQkgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKT09U3RhdHVzLkVSUk9SKQotICAgIAkJICB7Ci0gICAgCQkJICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7ICAgICAKLSAgICAJCSAgfSAgICAgICAgICAgICAgICAgIAkgICAgICAJICAKLSAgICAJICB9ICAKLSAgICB9Ci0JICAKLQkgIC8vNS4gQ2FsbCBTdGFydFNlcnZlckNvbW1hbmQgaWYgdGhpcyBjb21tYW5kIGhhZCB0byBjcmVhdGUgdGhlIHNhbXBsZSBwcm9qZWN0LgotICAgICAgaWYgKGNyZWF0ZWRTYW1wbGVQcm9qZWN0KQotICAgICAgewotCQlTdGFydFNlcnZlckNvbW1hbmQgc3RhcnRTZXJ2ZXIgPSBuZXcgU3RhcnRTZXJ2ZXJDb21tYW5kKHRydWUpOwotCQlzdGFydFNlcnZlci5zZXRTZXJ2ZXJJbnN0YW5jZUlkKHRlc3RJbmZvLmdldENsaWVudEV4aXN0aW5nU2VydmVyKCkuZ2V0SWQoKSk7Ci0JCXN0YXJ0U2VydmVyLnNldEVudmlyb25tZW50KCBlbnYgKTsKLQkJSVN0YXR1cyBzdGF0dXMgPSBzdGFydFNlcnZlci5leGVjdXRlKCBtb25pdG9yLCBudWxsICk7Ci0JICAgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKT09U3RhdHVzLkVSUk9SKQotCSAgICB7Ci0JICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOyAgICAgCi0JICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgICAgCi0JICAvLzYuIEVzdGFibGlzaCBhbGwgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcyBiZXR3ZWVuIGNsaWVudCBwcm9qZWN0LCBzYW1wbGUgcHJvamVjdCwgYW5kIEVBUgotICAgICAgCi0JICBjbGllbnRJUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdCh0ZXN0SW5mby5nZXRDbGllbnRQcm9qZWN0KCkpOwotCi0JCWlmIChjbGllbnRJUHJvamVjdCAhPSBudWxsICYmICFKMkVFVXRpbHMuaXNXZWJDb21wb25lbnQoY2xpZW50SVByb2plY3QpKSB7Ci0JCQlpZiAoSjJFRVV0aWxzLmlzSmF2YUNvbXBvbmVudChjbGllbnRJUHJvamVjdCkpIHsJCQkJCi0JCQkJSjJFRVV0aWxzLmFkZEphdmFQcm9qZWN0QXNVdGlsaXR5SmFyKGNsaWVudElQcm9qZWN0LCBzYW1wbGVFQVJJUHJvamVjdCwgbW9uaXRvcik7Ci0JCQkJSjJFRVV0aWxzLmFkZEphdmFQcm9qZWN0QXNVdGlsaXR5SmFyKGNsaWVudElQcm9qZWN0LCBzYW1wbGVJUHJvamVjdCxtb25pdG9yKTsKLQkJCX0KLQotCQkJCXRyeQotCQkJCXsKLQkJCQkgIFN0cmluZyB1cmkgPSBjbGllbnRJUHJvamVjdC5nZXROYW1lKCkgKyAiLmphciI7Ci0JCQkJICBKMkVFVXRpbHMuYWRkSkFST3JNb2R1bGVEZXBlbmRlbmN5KHNhbXBsZUlQcm9qZWN0LCB1cmkpOwotCQkJCSAgCi0JCQkJICAvLyBBZGRpbmcgdGhlIGF0dHJpYnV0ZSB0byB0aGUgcmVmZXJlbmNlZCBwcm9qZWN0J3MgY2xhc3NwYXRoIGVudHJpZXMgb2YgJ2xpYicga2luZAotCQkJCSAgLy8gc28gdGhhdCB0aGVzZSBsaWJzIHdpbGwgYmUgYnVuZGxlZCBhbG9uZyB3aXRoIHRoZSBwcm9qZWN0IHdoZW4gZXhwb3J0ZWQKLQkJCQkgIElDbGFzc3BhdGhFbnRyeVtdIGNsYXNzUGF0aCA9IEphdmFDb3JlLmNyZWF0ZShjbGllbnRJUHJvamVjdCkuZ2V0UmF3Q2xhc3NwYXRoKCk7Ci0JCQkJICBmb3IgKGludCBpID0gMDsgaSA8IGNsYXNzUGF0aC5sZW5ndGg7IGkrKykgewotCQkJCQlJQ2xhc3NwYXRoRW50cnkgY2xhc3NwYXRoRW50cnkgPSBjbGFzc1BhdGhbaV07Ci0JCQkJCWlmICggY2xhc3NwYXRoRW50cnkuZ2V0RW50cnlLaW5kKCkgPT0gSUNsYXNzcGF0aEVudHJ5LkNQRV9MSUJSQVJZICl7Ci0JCQkJCQlVcGRhdGVDbGFzc3BhdGhBdHRyaWJ1dGVVdGlsLmFkZERlcGVuZGVuY3lBdHRyaWJ1dGUobW9uaXRvciwgY2xpZW50SVByb2plY3QuZ2V0TmFtZSgpLCBjbGFzc3BhdGhFbnRyeSk7Ci0JCQkJCX0KLQkJCQkgIH0KLQkJCQkgIAotCQkJCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0JCQkJewotCQkJCQlTdHJpbmcgZXJyb3JNZXNzYWdlID0gTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9NT0RVTEVfREVQRU5ERU5DWSwgbmV3IFN0cmluZ1tde3NhbXBsZUlQcm9qZWN0LmdldE5hbWUoKSwgY2xpZW50SVByb2plY3QuZ2V0TmFtZSgpfSk7Ci0JCQkJCUlTdGF0dXMgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhlcnJvck1lc3NhZ2UpOwotCQkJCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKGVycm9yU3RhdHVzKTsKLQkJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpCi0JCQkJewotCQkJCQlTdHJpbmcgZXJyb3JNZXNzYWdlID0gTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9NT0RVTEVfREVQRU5ERU5DWSwgbmV3IFN0cmluZ1tde3NhbXBsZUlQcm9qZWN0LmdldE5hbWUoKSwgY2xpZW50SVByb2plY3QuZ2V0TmFtZSgpfSk7Ci0JCQkJCUlTdGF0dXMgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhlcnJvck1lc3NhZ2UpOwotCQkJCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKGVycm9yU3RhdHVzKTsJCQkJCQotCQkJCX0gY2F0Y2ggKEV4ZWN1dGlvbkV4Y2VwdGlvbiBlKSB7Ci0JCQkJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2sKLQkJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJCQl9CQkJCQkJCQotCQkJCi0JCQkKLQkJfSAgICAgIAkgIAotICAgIAotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0gIAotIAotCi0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1NBTVBMRV9FQVJfUFJPSkVDVF9FWFQgPSAiRUFSIjsKLSAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L3dzc2FtcGxlL0dTVENHZW5lcmF0ZUNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L3dzc2FtcGxlL0dTVENHZW5lcmF0ZUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdkOTFkOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC93c3NhbXBsZS9HU1RDR2VuZXJhdGVDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3Qud3NzYW1wbGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JV29ya3NwYWNlUm9vdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29kZWdlbi5JbnB1dEZpbGVHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb2RlZ2VuLk1ldGhvZEZpbGVHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb2RlZ2VuLlJlc3VsdEZpbGVHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb2RlZ2VuLlRlc3RDbGllbnRGaWxlR2VuZXJhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29tbWFuZC5HZW5lcmF0ZVBhZ2VDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29tbWFuZC5KYXZhVG9Nb2RlbENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5Db3B5V2ViU2VydmljZVV0aWxzSmFyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZWNsaXBzZS5FbnZpcm9ubWVudFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5UZXN0SW5mbzsKLQotcHVibGljIGNsYXNzIEdTVENHZW5lcmF0ZUNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiAKLXsKLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBJTlBVVCAgICAgICA9ICJJbnB1dC5qc3AiOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBURVNUX0NMSUVOVCA9ICJUZXN0Q2xpZW50LmpzcCI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFJFU1VMVCAgICAgID0gIlJlc3VsdC5qc3AiOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBNRVRIT0QgICAgICA9ICJNZXRob2QuanNwIjsKLQkKLSAgcHJpdmF0ZSBUZXN0SW5mbyB0ZXN0SW5mbzsKLSAgcHJpdmF0ZSBNb2RlbCBwcm94eU1vZGVsOwotICBwcml2YXRlIFN0cmluZyBqc3Bmb2xkZXI7Ci0gIAotICBwdWJsaWMgR1NUQ0dlbmVyYXRlQ29tbWFuZChUZXN0SW5mbyB0ZXN0SW5mbyl7Ci0gIAl0aGlzLnRlc3RJbmZvID0gdGVzdEluZm87Ci0gIH0KLQkKLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JQ29weVdlYlNlcnZpY2VVdGlsc0phckNvbW1hbmQgY29weSA9IG5ldyBDb3B5V2ViU2VydmljZVV0aWxzSmFyQ29tbWFuZCgpOyAgICAKLQljb3B5LnNldFNhbXBsZVByb2plY3QodGVzdEluZm8uZ2V0R2VuZXJhdGlvblByb2plY3QoKSk7Ci0gICAgY29weS5zZXRFbnZpcm9ubWVudCggZW52ICk7Ci0Jc3RhdHVzID0gY29weS5leGVjdXRlKCBtb25pdG9yLCBudWxsKTsKLQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSByZXR1cm4gc3RhdHVzOwotCXNldEpTUEZvbGRlcigpOwotCXN0YXR1cyA9IGNyZWF0ZU1vZGVsKGVudiwgbW9uaXRvcik7Ci0JaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgcmV0dXJuIHN0YXR1czsKLQlzdGF0dXMgPSBnZW5lcmF0ZVBhZ2VzKGVudik7Ci0JaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgcmV0dXJuIHN0YXR1czsKLQlyZXR1cm4gc3RhdHVzOyAgIAotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHNldEpTUEZvbGRlcigpewotICAgIC8vaWYgdGhlIGNsaWVudCBpcyBub3QgYSB3ZWJjb21wb25lbnQgdGhlbiB0aGUgCi0JLy9zYW1wbGUgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCwgd2UgbXVzdCBub3cgZmFjdG9yIGluIAotCS8vZmxleGlibGUgcHJvamVjdHMgIAotCSAgCi0JSVByb2plY3QgY2xpZW50SVByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QodGVzdEluZm8uZ2V0Q2xpZW50UHJvamVjdCgpKTsKLSAgICBpZiAoY2xpZW50SVByb2plY3QgIT0gbnVsbCAmJiAhSjJFRVV0aWxzLmlzV2ViQ29tcG9uZW50KGNsaWVudElQcm9qZWN0KSl7ICAgCi0JICBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHRlc3RJbmZvLmdldEdlbmVyYXRpb25Qcm9qZWN0KCkpOwotCSAgSVBhdGggcGF0aCA9IEoyRUVVdGlscy5nZXRXZWJDb250ZW50UGF0aChwcm9qZWN0KTsKLQkgIGludCBpbmRleCA9IHRlc3RJbmZvLmdldEpzcEZvbGRlcigpLmxhc3RJbmRleE9mKCIvIik7Ci0JICBTdHJpbmcganNwID0gdGVzdEluZm8uZ2V0SnNwRm9sZGVyKCkuc3Vic3RyaW5nKGluZGV4ICsgMSk7Ci0JICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CQotCSAgc2IuYXBwZW5kKCIvIikuYXBwZW5kKHBhdGgudG9TdHJpbmcoKSkuYXBwZW5kKCIvIikuYXBwZW5kKGpzcCk7CSAgCi0JICBqc3Bmb2xkZXIgPSBzYi50b1N0cmluZygpOwotCX0gCi0gICAgZWxzZQotCSAganNwZm9sZGVyID0gdGVzdEluZm8uZ2V0SnNwRm9sZGVyKCk7CQotICAKLSAgCi0gIH0KLSAgCi0gIC8vY3JlYXRlIHRoZSBtb2RlbCBmcm9tIHRoZSByZXNvdXJjZQotICBwcml2YXRlIElTdGF0dXMgY3JlYXRlTW9kZWwoSUVudmlyb25tZW50IGVudiwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkgewotICAgIEphdmFUb01vZGVsQ29tbWFuZCBqdG1jID0gbmV3IEphdmFUb01vZGVsQ29tbWFuZCgpOwotCWp0bWMuc2V0TWV0aG9kcyh0ZXN0SW5mby5nZXRNZXRob2RzKCkpOwotCWp0bWMuc2V0Q2xpZW50UHJvamVjdCh0ZXN0SW5mby5nZXRDbGllbnRQcm9qZWN0KCkpOwotCWp0bWMuc2V0UHJveHlCZWFuKHRlc3RJbmZvLmdldFByb3h5QmVhbigpKTsKLQlqdG1jLnNldEVudmlyb25tZW50KCBlbnYgKTsKLQlJU3RhdHVzIHN0YXR1cyA9IGp0bWMuZXhlY3V0ZSggbW9uaXRvciwgbnVsbCk7Ci0JaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikgcmV0dXJuIHN0YXR1czsKLSAgICBwcm94eU1vZGVsID0ganRtYy5nZXRKYXZhRGF0YU1vZGVsKCk7Ci0JcmV0dXJuIHN0YXR1czsKLSAgfSAKLSAgCi0gICAvKioKLSAgICogR2VuZXJhdGUgdGhlIGZvdXIganNwcyB0aGF0IG1ha2UgdXAgdGhpcwotICAgKiBzYW1wbGUgYXBwLgotICAgKi8KLSAgIHByaXZhdGUgSVN0YXR1cyBnZW5lcmF0ZVBhZ2VzKElFbnZpcm9ubWVudCBlbnYpCi0gICB7Ci0gICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotCUlQYXRoIGZEZXN0aW5hdGlvbkZvbGRlclBhdGggPSBuZXcgUGF0aChqc3Bmb2xkZXIpOwotICAgIGZEZXN0aW5hdGlvbkZvbGRlclBhdGggPSBmRGVzdGluYXRpb25Gb2xkZXJQYXRoLm1ha2VBYnNvbHV0ZSgpOyAgICAKLSAgICBJV29ya3NwYWNlUm9vdCBmV29ya3NwYWNlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLQotICAgICBJUGF0aCBwYXRoVGVzdCA9IGZEZXN0aW5hdGlvbkZvbGRlclBhdGguYXBwZW5kKFRFU1RfQ0xJRU5UKTsKLSAgICAgSUZpbGUgZmlsZVRlc3QgPSBmV29ya3NwYWNlLmdldEZpbGUocGF0aFRlc3QpOwotICAgICBHZW5lcmF0ZVBhZ2VDb21tYW5kIGdwY1Rlc3QgPSBuZXcgR2VuZXJhdGVQYWdlQ29tbWFuZChFbnZpcm9ubWVudFV0aWxzLmdldFJlc291cmNlQ29udGV4dChlbnYpLCBwcm94eU1vZGVsLAotICAgICAgIG5ldyBUZXN0Q2xpZW50RmlsZUdlbmVyYXRvcihJTlBVVCxNRVRIT0QsUkVTVUxUKSxmaWxlVGVzdCk7Ci0gICAgIC8vZ3BjVGVzdC5zZXRTdGF0dXNNb25pdG9yKGdldFN0YXR1c01vbml0b3IoKSk7Ci0gICAgIGdwY1Rlc3Quc2V0RW52aXJvbm1lbnQoIGVudiApOwotICAgICBzdGF0dXMgPSBncGNUZXN0LmV4ZWN1dGUoIG51bGwsIG51bGwgKTsKLSAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUiApCi0gICAgIAlyZXR1cm4gc3RhdHVzOwotICAgICAKLQotICAgICAvL2lucHV0IGNvZGVnZW4KLSAgICAgSVBhdGggcGF0aElucHV0ID0gZkRlc3RpbmF0aW9uRm9sZGVyUGF0aC5hcHBlbmQoSU5QVVQpOwotICAgICBJRmlsZSBmaWxlSW5wdXQgPSBmV29ya3NwYWNlLmdldEZpbGUocGF0aElucHV0KTsKLSAgICAgSW5wdXRGaWxlR2VuZXJhdG9yIGlucHV0R2VuZXJhdG9yID0gbmV3IElucHV0RmlsZUdlbmVyYXRvcihSRVNVTFQpOwotICAgICBHZW5lcmF0ZVBhZ2VDb21tYW5kIGdwY0lucHV0ID0gbmV3IEdlbmVyYXRlUGFnZUNvbW1hbmQoRW52aXJvbm1lbnRVdGlscy5nZXRSZXNvdXJjZUNvbnRleHQoZW52KSwgcHJveHlNb2RlbCwKLSAgICAgICBpbnB1dEdlbmVyYXRvcixmaWxlSW5wdXQpOwotICAgICAvL2dwY0lucHV0LnNldFN0YXR1c01vbml0b3IoZ2V0U3RhdHVzTW9uaXRvcigpKTsKLSAgICAgZ3BjSW5wdXQuc2V0RW52aXJvbm1lbnQoIGVudiApOwotICAgICBzdGF0dXMgPSBncGNJbnB1dC5leGVjdXRlKCBudWxsLCBudWxsICk7Ci0gICAgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IgKQotICAgICAJcmV0dXJuIHN0YXR1czsKLQotICAgICAvL21ldGhvZCBjb2RlZ2VuCi0gICAgIElQYXRoIHBhdGhNZXRob2QgPSBmRGVzdGluYXRpb25Gb2xkZXJQYXRoLmFwcGVuZChNRVRIT0QpOwotICAgICBJRmlsZSBmaWxlTWV0aG9kID0gZldvcmtzcGFjZS5nZXRGaWxlKHBhdGhNZXRob2QpOwotICAgICBNZXRob2RGaWxlR2VuZXJhdG9yIG1ldGhvZEdlbmVyYXRvciA9IG5ldyBNZXRob2RGaWxlR2VuZXJhdG9yKElOUFVUKTsKLSAgICAgbWV0aG9kR2VuZXJhdG9yLnNldENsaWVudEZvbGRlclBhdGgoanNwZm9sZGVyKTsKLSAgICAgR2VuZXJhdGVQYWdlQ29tbWFuZCBncGNNZXRob2QgPSBuZXcgR2VuZXJhdGVQYWdlQ29tbWFuZChFbnZpcm9ubWVudFV0aWxzLmdldFJlc291cmNlQ29udGV4dChlbnYpLCBwcm94eU1vZGVsLAotICAgICAgIG1ldGhvZEdlbmVyYXRvcixmaWxlTWV0aG9kKTsKLSAgICAgLy9ncGNNZXRob2Quc2V0U3RhdHVzTW9uaXRvcihnZXRTdGF0dXNNb25pdG9yKCkpOwotICAgICBncGNNZXRob2Quc2V0RW52aXJvbm1lbnQoIGVudiApOwotICAgICBzdGF0dXMgPSBncGNNZXRob2QuZXhlY3V0ZSggbnVsbCwgbnVsbCApOwotICAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SICkKLSAgICAgCXJldHVybiBzdGF0dXM7ICAgIAotCi0KLSAgICAgLy9yZXN1bHQgY29kZWdlbgotICAgICBJUGF0aCBwYXRoUmVzdWx0ID0gZkRlc3RpbmF0aW9uRm9sZGVyUGF0aC5hcHBlbmQoUkVTVUxUKTsKLSAgICAgSUZpbGUgZmlsZVJlc3VsdCA9IGZXb3Jrc3BhY2UuZ2V0RmlsZShwYXRoUmVzdWx0KTsKLSAgICAgUmVzdWx0RmlsZUdlbmVyYXRvciByZmcgPSBuZXcgUmVzdWx0RmlsZUdlbmVyYXRvcigpOwotICAgICByZmcuc2V0Q2xpZW50Rm9sZGVyUGF0aChqc3Bmb2xkZXIpOwotICAgICByZmcuc2V0U2V0RW5kcG9pbnRNZXRob2QodGVzdEluZm8uZ2V0U2V0RW5kcG9pbnRNZXRob2QoKSk7Ci0gICAgIEdlbmVyYXRlUGFnZUNvbW1hbmQgZ3BjUmVzdWx0ID0gbmV3IEdlbmVyYXRlUGFnZUNvbW1hbmQoRW52aXJvbm1lbnRVdGlscy5nZXRSZXNvdXJjZUNvbnRleHQoZW52KSwgcHJveHlNb2RlbCwKLSAgICAgICByZmcsZmlsZVJlc3VsdCk7Ci0gICAgIGdwY1Jlc3VsdC5zZXRFbnZpcm9ubWVudCggZW52ICk7Ci0gICAgIHN0YXR1cyA9IGdwY1Jlc3VsdC5leGVjdXRlKCBudWxsLCBudWxsICk7Ci0gICAgIAotICAgICByZXR1cm4gc3RhdHVzOwotICAgfQotCi0gICAKLQotCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L3dzc2FtcGxlL0dTVENMYXVuY2hDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC93c3NhbXBsZS9HU1RDTGF1bmNoQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTM0YTkyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L3dzc2FtcGxlL0dTVENMYXVuY2hDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDE4ICAgMTM0MzIyIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MjQgICAxMjQzNjgga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDkwMzEyCSAgMjUwOTg0IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgVXNlIGFub3RoZXIgbWVjaGFuaXNtIHRvIHdhaXQgZm9yIGJ1aWxkIHRvIGJlIGNvbXBsZXRlZAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC53c3NhbXBsZTsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU2VydmVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkJ1aWxkQmVhbkNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5TdGFydFNlcnZlckNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QYXJ0SW5pdEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5icm93c2VyLklXZWJCcm93c2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmJyb3dzZXIuSVdvcmtiZW5jaEJyb3dzZXJTdXBwb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklMb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5TdGF0dXNFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5UZXN0SW5mbzsKLQotcHVibGljIGNsYXNzIEdTVENMYXVuY2hDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBJTlBVVCAgICAgICA9ICJJbnB1dC5qc3AiOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBURVNUX0NMSUVOVCA9ICJUZXN0Q2xpZW50LmpzcCI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFJFU1VMVCAgICAgID0gIlJlc3VsdC5qc3AiOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBNRVRIT0QgICAgICA9ICJNZXRob2QuanNwIjsKLQkJCi0gIHByaXZhdGUgVGVzdEluZm8gdGVzdEluZm87Ci0gIHByaXZhdGUgU3RyaW5nIGpzcGZvbGRlcjsKLSAgCi0gIHB1YmxpYyBHU1RDTGF1bmNoQ29tbWFuZChUZXN0SW5mbyB0ZXN0SW5mbyl7Ci0gICAgdGhpcy50ZXN0SW5mbyA9IHRlc3RJbmZvOwotICB9Ci0JCQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgeyAgICAKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICAKLSAgICBzZXRKU1BGb2xkZXIoKTsKLSAgICAKLQlyZXR1cm4gbGF1bmNoU2FtcGxlKGVudiwgbW9uaXRvcik7Ci0gIH0KLSAgcHJpdmF0ZSB2b2lkIHNldEpTUEZvbGRlcigpewotCSAgICAvL2lmIHRoZSBjbGllbnQgaXMgbm90IGEgd2ViY29tcG9uZW50IHRoZW4gdGhlIAotCQkvL3NhbXBsZSBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkLCB3ZSBtdXN0IG5vdyBmYWN0b3IgaW4gCi0JCS8vZmxleGlibGUgcHJvamVjdHMgIAotCQkgIAotCQlJUHJvamVjdCBjbGllbnRJUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdCh0ZXN0SW5mby5nZXRDbGllbnRQcm9qZWN0KCkpOwotCSAgICBpZiAoY2xpZW50SVByb2plY3QgIT0gbnVsbCAmJiAhSjJFRVV0aWxzLmlzV2ViQ29tcG9uZW50KGNsaWVudElQcm9qZWN0KSl7ICAgCi0JCSAgSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdCh0ZXN0SW5mby5nZXRHZW5lcmF0aW9uUHJvamVjdCgpKTsKLQkJICBJUGF0aCBwYXRoID0gSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRQYXRoKHByb2plY3QpOwotCQkgIGludCBpbmRleCA9IHRlc3RJbmZvLmdldEpzcEZvbGRlcigpLmxhc3RJbmRleE9mKCIvIik7Ci0JCSAgU3RyaW5nIGpzcCA9IHRlc3RJbmZvLmdldEpzcEZvbGRlcigpLnN1YnN0cmluZyhpbmRleCArIDEpOwotCQkgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsJCi0JCSAgc2IuYXBwZW5kKCIvIikuYXBwZW5kKHBhdGgudG9TdHJpbmcoKSkuYXBwZW5kKCIvIikuYXBwZW5kKGpzcCk7CSAgCi0JCSAganNwZm9sZGVyID0gc2IudG9TdHJpbmcoKTsKLQkJfSAKLQkgICAgZWxzZQotCQkgIGpzcGZvbGRlciA9IHRlc3RJbmZvLmdldEpzcEZvbGRlcigpOwkKLQkgIAotCSAgCi0JICB9Ci0gIAotICBwcml2YXRlIElTdGF0dXMgbGF1bmNoU2FtcGxlIChJRW52aXJvbm1lbnQgZW52LCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKSB7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotCUlQYXRoIGZEZXN0aW5hdGlvbkZvbGRlclBhdGggPSBuZXcgUGF0aChqc3Bmb2xkZXIpOwotCWZEZXN0aW5hdGlvbkZvbGRlclBhdGggPSBmRGVzdGluYXRpb25Gb2xkZXJQYXRoLm1ha2VBYnNvbHV0ZSgpOyAgICAKLQotCUlQcm9qZWN0IHNhbXBsZVByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QodGVzdEluZm8uZ2V0R2VuZXJhdGlvblByb2plY3QoKSk7Ci0JCi0JQnVpbGRCZWFuQ29tbWFuZCBidWlsZENvbW1hbmQgPSBuZXcgQnVpbGRCZWFuQ29tbWFuZCgpOwotCWJ1aWxkQ29tbWFuZC5zZXRFbnZpcm9ubWVudChlbnYpOwotCWJ1aWxkQ29tbWFuZC5zZXRQcm9qZWN0KHNhbXBsZVByb2plY3QpOwotCXRyeSB7Ci0JCS8vZW5zdXJlIHRoZSBzYW1wbGUgcHJvamVjdCBpcyBidWlsdAotCQlidWlsZENvbW1hbmQuZXhlY3V0ZShtb25pdG9yLCBudWxsKTsKLQl9IGNhdGNoIChFeGVjdXRpb25FeGNlcHRpb24gZTIpIHsKLQkJLy9qdXN0IGlnbm9yZSBhbmQgc2VlIGlmIHdlIGNhbiBtb3ZlIG9uCi0JfQotCSAKLQlTdGFydFNlcnZlckNvbW1hbmQgc2VydmVyQ29tbWFuZCA9IG5ldyBTdGFydFNlcnZlckNvbW1hbmQoIHRydWUgKTsKLQlzZXJ2ZXJDb21tYW5kLnNldFNlcnZlckluc3RhbmNlSWQoIHRlc3RJbmZvLmdldENsaWVudEV4aXN0aW5nU2VydmVyKCkuZ2V0SWQoKSApOwotCXNlcnZlckNvbW1hbmQuc2V0RW52aXJvbm1lbnQoIGVudiApOwotCQotCXN0YXR1cyA9IHNlcnZlckNvbW1hbmQuZXhlY3V0ZShtb25pdG9yLCBudWxsKTsKLQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKSByZXR1cm4gc3RhdHVzOwotCQotCVN0cmluZyAgIG5ld1BhdGggPSBTZXJ2ZXJVdGlscy5nZXRXZWJDb21wb25lbnRVUkwoc2FtcGxlUHJvamVjdCwgdGVzdEluZm8uZ2V0Q2xpZW50U2VydmVyVHlwZUlEKCksdGVzdEluZm8uZ2V0Q2xpZW50RXhpc3RpbmdTZXJ2ZXIoKSk7Ci0JaW50IGNvdW50ID0gSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRQYXRoKHNhbXBsZVByb2plY3QpLnNlZ21lbnRDb3VudCgpOwotCQotCW5ld1BhdGggPSBuZXdQYXRoICsgIi8iICsgZkRlc3RpbmF0aW9uRm9sZGVyUGF0aC5yZW1vdmVGaXJzdFNlZ21lbnRzKGNvdW50KTsKLQlTdHJpbmdCdWZmZXIgdXJsU3RyaW5nID0gbmV3IFN0cmluZ0J1ZmZlciggbmV3UGF0aCArICIvIiArIFRFU1RfQ0xJRU5UICk7Ci0JaWYgKHRlc3RJbmZvLmdldEVuZHBvaW50KCkgIT0gbnVsbCAmJiAhdGVzdEluZm8uZ2V0RW5kcG9pbnQoKS5pc0VtcHR5KCkpCi0JewotCSAgdXJsU3RyaW5nLmFwcGVuZCgiP2VuZHBvaW50PSIpOwotCSAgdXJsU3RyaW5nLmFwcGVuZCh0ZXN0SW5mby5nZXRFbmRwb2ludCgpLmdldCgwKS50b1N0cmluZygpKTsKLQl9Ci0JICAgIAotCXRyeXsKLQkgICAgICBVUkwgdXJsOwotCSAgICAgIHVybCA9IG5ldyBVUkwodXJsU3RyaW5nLnRvU3RyaW5nKCkpOwotICAgICAgICAKLSAgICAgICAgSW5wdXRTdHJlYW0gcmVzdWx0U3RyZWFtID0gbnVsbDsKLSAgICAgICAgSW5wdXRTdHJlYW0gbWV0aG9kU3RyZWFtID0gbnVsbDsKLSAgICAgICAgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gID0gbnVsbDsKLSAgICAgICAgSW5wdXRTdHJlYW0gY2xpZW50U3RyZWFtID0gbnVsbDsKLQotCSAgICAgIGZvciggaW50IHJldHJpZXMgPSAwOyByZXRyaWVzIDwgMTA7IHJldHJpZXMrKyApCi0JICAgICAgewotCSAgICAgICAgdHJ5Ci0JICAgICAgICB7Ci0JICAgICAgICAgIC8vIFRlc3QgdGhlIFVSTHMKLSAgICAgICAgICAgIAotCSAgICAgICAgICByZXN1bHRTdHJlYW0gPSBuZXcgVVJMKG5ld1BhdGggKyAiLyIgKyBSRVNVTFQpLm9wZW5TdHJlYW0oKTsKLQkgICAgICAgICAgbWV0aG9kU3RyZWFtID0gbmV3IFVSTChuZXdQYXRoICsgIi8iICsgTUVUSE9EKS5vcGVuU3RyZWFtKCk7Ci0JICAgICAgICAgIGlucHV0U3RyZWFtICA9IG5ldyBVUkwobmV3UGF0aCArICIvIiArIElOUFVUKS5vcGVuU3RyZWFtKCk7Ci0JICAgICAgICAgIGNsaWVudFN0cmVhbSA9IG5ldyBVUkwobmV3UGF0aCArICIvIiArIFRFU1RfQ0xJRU5UKS5vcGVuU3RyZWFtKCk7Ci0gICAgICAgICAgICAKLQkgICAgICAgICAgLy8gTG9va3MgZ29vZCwgZXhpdCBsb29wCi0JICAgICAgICAgIGJyZWFrOwotCSAgICAgICAgfQotCSAgICAgICAgY2F0Y2goIElPRXhjZXB0aW9uIGlvZSApCi0JICAgICAgICB7Ci0JICAgICAgICAgIHRyeQotCSAgICAgICAgICB7Ci0JICAgICAgICAgICAgVGhyZWFkLnNsZWVwKDEwMDApOwotCSAgICAgICAgICB9Ci0JICAgICAgICAgIGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBpZSkge30gCSAgCSAgICAgICAgICAKLQkgICAgICAgIH0KLSAgICAgICAgICBmaW5hbGx5Ci0gICAgICAgICAgewotICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmKCByZXN1bHRTdHJlYW0gIT0gbnVsbCApIHJlc3VsdFN0cmVhbS5jbG9zZSgpOwotICAgICAgICAgICAgICBpZiggbWV0aG9kU3RyZWFtICE9IG51bGwgKSBtZXRob2RTdHJlYW0uY2xvc2UoKTsKLSAgICAgICAgICAgICAgaWYoIGlucHV0U3RyZWFtICE9IG51bGwgKSBpbnB1dFN0cmVhbS5jbG9zZSgpOwotICAgICAgICAgICAgICBpZiggY2xpZW50U3RyZWFtICE9IG51bGwgKSBjbGllbnRTdHJlYW0uY2xvc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoKCBJT0V4Y2VwdGlvbiBleGMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLQkgICAgICB9Ci0KLQkJCUlXb3JrYmVuY2hCcm93c2VyU3VwcG9ydCBicm93c2VyU3VwcG9ydCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0V29ya2JlbmNoKCkuZ2V0QnJvd3NlclN1cHBvcnQoKTsKLQkJCUlXZWJCcm93c2VyIGJyb3dzZXIgPSBicm93c2VyU3VwcG9ydC5jcmVhdGVCcm93c2VyKElXb3JrYmVuY2hCcm93c2VyU3VwcG9ydC5MT0NBVElPTl9CQVIsIG51bGwsIG51bGwsIG51bGwpOwotCQkJYnJvd3Nlci5vcGVuVVJMKHVybCk7Ci0JICAgICAgcmV0dXJuIHN0YXR1czsKLQkJIH1jYXRjaChQYXJ0SW5pdEV4Y2VwdGlvbiBleGMpewotCQkJZW52LmdldExvZygpLmxvZyhJTG9nLkVSUk9SLCA1MDQ4LCB0aGlzLCAibGF1bmNoU2FtcGxlIiwgZXhjKTsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKGV4Yy5nZXRNZXNzYWdlKCksIGV4Yyk7Ci0JCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JICAgIAlyZXR1cm4gc3RhdHVzOwotCSAgICB9Y2F0Y2goTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGV4Yyl7Ci0JICAgIAllbnYuZ2V0TG9nKCkubG9nKElMb2cuV0FSTklORywgNTA0OCwgdGhpcywgImxhdW5jaFNhbXBsZSIsIGV4Yyk7Ci0JCQlzdGF0dXMgPSBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX01BTEZPUk1FRF9VUkwsIGV4YyApOwotCQkJdHJ5IHsKLQkJCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydChzdGF0dXMpOwotCQkJfSBjYXRjaCAoU3RhdHVzRXhjZXB0aW9uIGUpIHsKLQkJCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9NQUxGT1JNRURfVVJMLCBlICk7Ci0JCQl9Ci0JICAgIAlyZXR1cm4gc3RhdHVzOwotCSAgICB9Ci0gICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L3dzc2FtcGxlL0dTVENXZWJTZXJ2aWNlVGVzdGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpZGdldHMvdGVzdC93c3NhbXBsZS9HU1RDV2ViU2VydmljZVRlc3Rlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTA2ODU2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2lkZ2V0cy90ZXN0L3dzc2FtcGxlL0dTVENXZWJTZXJ2aWNlVGVzdGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA2MDggICAxNDU1Mjkga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3Qud3NzYW1wbGU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuSUNvbW1hbmRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLlNpbXBsZUNvbW1hbmRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlVGVzdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LlRlc3RJbmZvOwotCi1wdWJsaWMgY2xhc3MgR1NUQ1dlYlNlcnZpY2VUZXN0ZXIgaW1wbGVtZW50cyBJV2ViU2VydmljZVRlc3RlciAgewotCi0gIHB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgZ2VuZXJhdGUoVGVzdEluZm8gdGVzdEluZm8pewotICAgIFZlY3RvciBjb21tYW5kcyA9IG5ldyBWZWN0b3IoKTsKLQljb21tYW5kcy5hZGQobmV3IEFkZE1vZHVsZURlcGVuZGVuY2llc0NvbW1hbmQodGVzdEluZm8pKTsKLQljb21tYW5kcy5hZGQobmV3IEdTVENHZW5lcmF0ZUNvbW1hbmQodGVzdEluZm8pKTsKLQlyZXR1cm4gbmV3IFNpbXBsZUNvbW1hbmRGYWN0b3J5KGNvbW1hbmRzKTsKLSAgfQotICAKLSAgcHVibGljIElDb21tYW5kRmFjdG9yeSBsYXVuY2goVGVzdEluZm8gdGVzdEluZm8pewotCVZlY3RvciBjb21tYW5kcyA9IG5ldyBWZWN0b3IoKTsKLQlpZiAodGVzdEluZm8uZ2V0UnVuVGVzdENsaWVudCgpKSB7Ci0JCWNvbW1hbmRzLmFkZChuZXcgR1NUQ0xhdW5jaENvbW1hbmQodGVzdEluZm8pKTsKLQl9Ci0gICAgcmV0dXJuIG5ldyBTaW1wbGVDb21tYW5kRmFjdG9yeShjb21tYW5kcyk7CQotICB9Ci0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMDBkYzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb25SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLnVkZGkuUHJpdmF0ZVVERElSZWdpc3RyeVR5cGU7Ci0KLQotcHVibGljIGNsYXNzIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlUmVnaXN0cnkKLXsKLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0gIHByaXZhdGUgc3RhdGljIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlUmVnaXN0cnkgaW5zdGFuY2VfOwotCi0gIHByaXZhdGUgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeSgpIHsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KLSAgKiBAcmV0dXJuIEEgc2luZ2xldG9uIFdlYlNlcnZpY2VDbGllbnRUeXBlUmVnaXN0cnkgb2JqZWN0LgotICAqLwotICBwdWJsaWMgc3RhdGljIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlUmVnaXN0cnkgZ2V0SW5zdGFuY2UoKSB7Ci0gICAgaWYgKGluc3RhbmNlXyA9PSBudWxsKSB7Ci0gICAgICBpbnN0YW5jZV8gPSBuZXcgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeSgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gaW5zdGFuY2VfOwotICB9Ci0KLSAgcHVibGljIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlIGdldFByaXZhdGVVRERJUmVnaXN0cnlUeXBlKCkgewotICAgIElFeHRlbnNpb25SZWdpc3RyeSByZWcgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGNvbmZpZyA9IHJlZy5nZXRDb25maWd1cmF0aW9uRWxlbWVudHNGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZhdGVVRERJUmVnaXN0cnlUeXBlIik7Ci0KLSAgICB0cnkgewotICAgICAgT2JqZWN0IGNvbmZpZ0VsZW1lbnQgPSAoKGNvbmZpZy5sZW5ndGggPiAwKSA/IGNvbmZpZ1swXS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpIDogbnVsbCk7Ci0gICAgICBpZihjb25maWdFbGVtZW50ICE9IG51bGwgJiYgY29uZmlnRWxlbWVudCBpbnN0YW5jZW9mIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlKSAKLSAgICAgICAgcmV0dXJuIChQcml2YXRlVURESVJlZ2lzdHJ5VHlwZSljb25maWdFbGVtZW50OyAKLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvUHVibGljVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9QdWJsaWNVRERJUmVnaXN0cnlUeXBlUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNmOTQyNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9QdWJsaWNVRERJUmVnaXN0cnlUeXBlUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb25SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC51ZGRpLlB1YmxpY1VERElSZWdpc3RyeVR5cGU7Ci0KLQotcHVibGljIGNsYXNzIFB1YmxpY1VERElSZWdpc3RyeVR5cGVSZWdpc3RyeQotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMi4iOwotCi0gIHByaXZhdGUgc3RhdGljIFB1YmxpY1VERElSZWdpc3RyeVR5cGVSZWdpc3RyeSBpbnN0YW5jZV87Ci0gIHByaXZhdGUgVmVjdG9yIHR5cGVzXzsKLSAgcHJpdmF0ZSBWZWN0b3IgY29uZmlnRWxlbWVudHNfOwotCi0gIHByaXZhdGUgUHVibGljVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5KCkgewotICAgIHR5cGVzXyA9IG5ldyBWZWN0b3IoKTsKLSAgICBjb25maWdFbGVtZW50c18gPSBuZXcgVmVjdG9yKCk7Ci0KLSAgICBpbml0KCk7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCi0gICogQHJldHVybiBBIHNpbmdsZXRvbiBXZWJTZXJ2aWNlQ2xpZW50VHlwZVJlZ2lzdHJ5IG9iamVjdC4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBQdWJsaWNVRERJUmVnaXN0cnlUeXBlUmVnaXN0cnkgZ2V0SW5zdGFuY2UoKSB7Ci0gICAgaWYgKGluc3RhbmNlXyA9PSBudWxsKSB7Ci0gICAgICBpbnN0YW5jZV8gPSBuZXcgUHVibGljVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5KCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBpbnN0YW5jZV87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBpbml0KCkgewotICAgIElFeHRlbnNpb25SZWdpc3RyeSByZWcgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGNvbmZpZyA9IHJlZy5nZXRDb25maWd1cmF0aW9uRWxlbWVudHNGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB1YmxpY1VERElSZWdpc3RyeVR5cGUiKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uZmlnLmxlbmd0aDsgaSsrKSB7Ci0gICAgICB0cnkgewotICAgICAgICBPYmplY3QgY29uZmlnRWxlbWVudCA9IGNvbmZpZ1tpXS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOwotCi0gICAgICAgIGlmKCBjb25maWdFbGVtZW50IGluc3RhbmNlb2YgUHVibGljVURESVJlZ2lzdHJ5VHlwZSkgIHsKLSAgICAgICAgICB0eXBlc18uYWRkKGNvbmZpZ0VsZW1lbnQpOwotICAgICAgICAgIGNvbmZpZ0VsZW1lbnRzXy5hZGQoY29uZmlnW2ldKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkge30KLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgUHVibGljVURESVJlZ2lzdHJ5VHlwZVtdIGdldEFsbFB1YmxpY1VERElSZWdpc3RyeVR5cGVzKCkgewotICAgIFB1YmxpY1VERElSZWdpc3RyeVR5cGVbXSB0eXBlcyA9IG5ldyBQdWJsaWNVRERJUmVnaXN0cnlUeXBlW3R5cGVzXy5zaXplKCldOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHlwZXNfLnNpemUoKTsgaSsrKSB7Ci0gICAgICB0eXBlc1tpXSA9IChQdWJsaWNVRERJUmVnaXN0cnlUeXBlKXR5cGVzXy5lbGVtZW50QXQoaSk7Ci0gICAgfQotICAgIHJldHVybiB0eXBlczsKLSAgfQotCi0gIHB1YmxpYyBQdWJsaWNVRERJUmVnaXN0cnlUeXBlIGdldFB1YmxpY1VERElSZWdpc3RyeVR5cGVCeUlEKFN0cmluZyBpZCkgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uZmlnRWxlbWVudHNfLnNpemUoKTsgaSsrKSB7Ci0gICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnQgYyA9IChJQ29uZmlndXJhdGlvbkVsZW1lbnQpY29uZmlnRWxlbWVudHNfLmVsZW1lbnRBdChpKTsKLSAgICAgIGlmIChjLmdldEF0dHJpYnV0ZSgiaWQiKS5lcXVhbHMoaWQpKQotICAgICAgICByZXR1cm4gKFB1YmxpY1VERElSZWdpc3RyeVR5cGUpdHlwZXNfLmVsZW1lbnRBdChpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFB1YmxpY1VERElSZWdpc3RyeVR5cGVJREJ5TmFtZShTdHJpbmcgbmFtZSkgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHlwZXNfLnNpemUoKTsgaSsrKSB7Ci0gICAgICBQdWJsaWNVRERJUmVnaXN0cnlUeXBlIHR5cGUgPSAoUHVibGljVURESVJlZ2lzdHJ5VHlwZSl0eXBlc18uZWxlbWVudEF0KGkpOwotICAgICAgaWYgKHR5cGUuZ2V0TmFtZSgpLmVxdWFscyhuYW1lKSkKLSAgICAgICAgcmV0dXJuICgoSUNvbmZpZ3VyYXRpb25FbGVtZW50KWNvbmZpZ0VsZW1lbnRzXy5lbGVtZW50QXQoaSkpLmdldEF0dHJpYnV0ZSgiaWQiKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvUnVudGltZVNlcnZlclNlbGVjdGlvbkRpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvUnVudGltZVNlcnZlclNlbGVjdGlvbkRpYWxvZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTM1MDk5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2l6YXJkL1J1bnRpbWVTZXJ2ZXJTZWxlY3Rpb25EaWFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDMyNyAgIDEzMTYwNSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNzE3ICAgMTUwNTc3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrCi0gKiAyMDA2MDcyNiAgIDE1MDg2NSBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDYwNzI2ICAgMTUwODY3IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNjA3MjgJICAxNTE3MjMgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKiAyMDA2MDgwMiAgIDE0ODczMSBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqIDIwMDcxMTI5CSAgMjA2MDgwIHppbmFAY2EuaWJtLmNvbQktIFppbmEgTW9zdGFmaWEgU2VydmljZSBEZXBsb3ltZW50IENvbmZpZyBEaWFsb2cgZ3JvdXAgbmFtZSB0cnVuY2F0ZWQgaW4gTkwgVGVzdGluZwotICogMjAwNzExMjkJICAyMDU1ODMgemluYUBjYS5pYm0uY29tCS0gWmluYSBNb3N0YWZpYSBTZWxlY3RlZCBTZXJ2ZXIgb3IgU2VydmVyIFR5cGUgaXMgbm90IGhpZ2hsaWdodGVkIGluIFNlcnZpY2UgRGVwLkNvbmZpZwotICogMjAwODA0MjggICAyMjQ3MjYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA1MjcgICAyMzQyMjUga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDkwMjI2CSAgMjY2MDYzIHppbmFAY2EuaWJtLmNvbSAtIFppbmEgTW9zdGFmaWEgRXJyb3IgbWVzc2FnZSB0cnVuY2F0ZWQgaW4gdGhlIFNlcnZpY2UgRGVwbG95bWVudCBjb25maWd1cmF0aW9uIGRpYWxvZyAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLWltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuSURpYWxvZ0NvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLklNZXNzYWdlUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5UaXRsZUFyZWFEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSUxhYmVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TZXJ2ZXJVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuUnVudGltZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuVHlwZVJ1bnRpbWVTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuSW1hZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Hcm91cDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UcmVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRyZWVJdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuaGVscC5JV29ya2JlbmNoSGVscFN5c3RlbTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklSdW50aW1lVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlclR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5TZXJ2ZXJVSUNvcmU7Ci0KLXB1YmxpYyBjbGFzcyBSdW50aW1lU2VydmVyU2VsZWN0aW9uRGlhbG9nIGV4dGVuZHMgVGl0bGVBcmVhRGlhbG9nIHsKLQotCXByaXZhdGUgU2hlbGwgdGhpc1NoZWxsOwotCXByaXZhdGUgU3RyaW5nIG1lc3NhZ2VCYW5uZXJfOwotCXByaXZhdGUgQ29tcG9zaXRlIHByaW1hcnlHcm91cF87Ci0JcHJpdmF0ZSBHcm91cCBydW50aW1lc0dyb3VwXzsKLQlwcml2YXRlIEdyb3VwIHNlcnZlcnNHcm91cF87Ci0JcHJpdmF0ZSBUcmVlIHJ1bnRpbWVzTGlzdF87Ci0JcHJpdmF0ZSBUcmVlIHNlcnZlckxpc3RfOwotCXByaXZhdGUgQnV0dG9uIHZpZXdTZWxlY3Rpb25CeVJ1bnRpbWVCdXR0b25fOwotCXByaXZhdGUgQnV0dG9uIHZpZXdTZWxlY3Rpb25CeVNlcnZlckJ1dHRvbl87Ci0JcHJpdmF0ZSBCdXR0b24gdmlld1NlbGVjdGlvbkJ5RXhwbG9yZUJ1dHRvbl87Ci0JcHJpdmF0ZSBJTGFiZWxQcm92aWRlciBsYWJlbFByb3ZpZGVyXzsKLQlwcml2YXRlIEltYWdlIHNlcnZlclR5cGVzSWNvbjsKLQlwcml2YXRlIEltYWdlIGV4aXN0aW5nU2VydmVyc0ljb247Ci0KLQkvKgotCSAqIENPTlRFWFRfSUQgUFdSUzAwMDEgZm9yIHRoZSBzZWxlY3Rpb24gb2YgcnVudGltZSwgc2VydmVyIGFuZCBwcm9qZWN0IGNvbWJpbmF0aW9uCi0JICovCi0JcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QV1JTX0RJQUxPRyA9ICJQV1JTMDAwMSI7Ci0JLyogQ09OVEVYVF9JRCBQV1JTMDAwMiBmb3IgdGhlIHJ1bnRpbWUgc2VsZWN0aW9uIG9uIGluIHRoZSBkYWlsb2cgKi8KLQlwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXUlNfTElTVF9SVU5USU1FUyA9ICJQV1JTMDAwMiI7Ci0JLyogQ09OVEVYVF9JRCBQV1JTMDAwMyBmb3IgdGhlIHNlcnZlciBzZWxlY3Rpb24gaW4gdGhlIGRpYWxvZyAqLwotCXByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdSU19MSVNUX1NFUlZFUlMgPSAiUFdSUzAwMDMiOwotCS8qCi0JICogQ09OVEVYVF9JRCBQV1JTMDAwNCBmb3IgdGhlIEVKQiBQcm9qZWN0IGNvbWJvIGJveCBvZiB0aGUgcnVudGltZSBzZWxlY3Rpb24gZGlhbG9nCi0JICovCi0JLy8gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdSU19FSkJfUFJPSkVDVCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLklECi0JLy8gKyAiLlBXUlMwMDA0IjsKLQkvKgotCSAqIENPTlRFWFRfSUQgUFdSUzAwMDUgZm9yIHRoZSBydW50aW1lIHZpZXcgcmFkaW8gYnV0dG9uIG9mIHRoZSBydW50aW1lIHNlbGVjdGlvbiBkaWFsb2cKLQkgKi8KLQlwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXUlNfUkFESU9fUlVOVElNRSA9ICJQV1JTMDAwNSI7Ci0JLyoKLQkgKiBDT05URVhUX0lEIFBXUlMwMDA2IGZvciB0aGUgc2VydmVyIHZpZXcgcmFkaW8gYnV0dG9uIG9mIHRoZSBydW50aW1lIHNlbGVjdGlvbiBkaWFsb2cKLQkgKi8KLQlwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXUlNfUkFESU9fU0VSVkVSID0gIlBXUlMwMDA2IjsKLQkvKgotCSAqIENPTlRFWFRfSUQgUFdSUzAwMDcgZm9yIHRoZSBleHBsb3JlIHZpZXcgcmFkaW8gYnV0dG9uIG9mIHRoZSBydW50aW1lIHNlbGVjdGlvbiBkaWFsb2cKLQkgKi8KLQlwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXUlNfUkFESU9fRVhQTE9SRSA9ICJQV1JTMDAwNyI7Ci0JcHJpdmF0ZSBIYXNodGFibGU8U3RyaW5nLCBTdHJpbmc+IHNlcnZlckxhYmVsc187Ci0JcHJpdmF0ZSBIYXNodGFibGUgPFN0cmluZywgSVNlcnZlcj5leGlzdGluZ1NlcnZlcnNUYWJsZV87Ci0JcHJpdmF0ZSBTdHJpbmcgZGVmYXVsdFNlcnZlcl87Ci0JcHJpdmF0ZSBTdHJpbmcgZGVmYXVsdFJ1bnRpbWVfOwotCXByaXZhdGUgU3RyaW5nIHR5cGVJZF87Ci0KLQlwcml2YXRlIFJ1bnRpbWVEZXNjcmlwdG9yIHNlbGVjdGVkUnVudGltZV87Ci0KLQlwcml2YXRlIElTZXJ2ZXIgc2VsZWN0ZWRTZXJ2ZXJfOwotCXByaXZhdGUgU3RyaW5nIHNlbGVjdGVkU2VydmVyTGFiZWxfOwotCXByaXZhdGUgU3RyaW5nIHNlbGVjdGVkU2VydmVyRmFjdG9yeUlEXzsKLQlwcml2YXRlIGJvb2xlYW4gaXNFeGlzdGluZ1NlcnZlcl87Ci0JcHJpdmF0ZSBib29sZWFuIHZhbGlkYXRlT25fID0gZmFsc2U7Ci0JcHJpdmF0ZSBieXRlIHNlbGVjdGlvbk1vZGVfOwotCXByaXZhdGUgZmluYWwgYnl0ZSBNT0RFX1NFUlZJQ0UgPSAoYnl0ZSkgMDsKLQlwcml2YXRlIGZpbmFsIFN0cmluZyBTRVJWRVJfVFlQRVNfSUNPTiA9ICJpY29ucy9zZXJ2ZXJzL3NlcnZlcnNfb2JqLmdpZiI7Ci0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgRVhJU1RJTkdfU0VSVkVSU19JQ09OID0gImljb25zL3NlcnZlcnMvZXhpc3Rpbmdfc2VydmVyX29iai5naWYiOwotCXByaXZhdGUgU3RyaW5nIHNlcnZlckluc3RhbmNlSURfOwotCi0JcHJpdmF0ZSBib29sZWFuIHNlbGVjdFNlcnZlckZpcnN0XyA9IGZhbHNlOwotCi0JcHVibGljIFJ1bnRpbWVTZXJ2ZXJTZWxlY3Rpb25EaWFsb2coU2hlbGwgc2hlbGwsIGJ5dGUgbW9kZSwgVHlwZVJ1bnRpbWVTZXJ2ZXIgaWRzLCBTdHJpbmcgajJlZVZlcnNpb24pIHsKLQkJc3VwZXIoc2hlbGwpOwotCQltZXNzYWdlQmFubmVyXyA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfV1NfUlVOVElNRV9TRUxFQ1RJT047Ci0JCXNldFNoZWxsU3R5bGUoU1dULkNMT1NFIHwgU1dULlRJVExFIHwgU1dULkJPUkRFUgotCQkJCXwgU1dULkFQUExJQ0FUSU9OX01PREFMIHwgU1dULlJFU0laRSB8IGdldERlZmF1bHRPcmllbnRhdGlvbigpKTsKLQkJc2VsZWN0aW9uTW9kZV8gPSBtb2RlOwotCQl0eXBlSWRfID0gaWRzLmdldFR5cGVJZCgpOwotCQlkZWZhdWx0UnVudGltZV8gPSBpZHMuZ2V0UnVudGltZUlkKCk7Ci0JCWRlZmF1bHRTZXJ2ZXJfID0gaWRzLmdldFNlcnZlcklkKCk7Ci0JCXNlcnZlckluc3RhbmNlSURfID0gaWRzLmdldFNlcnZlckluc3RhbmNlSWQoKTsKLQkJc2V0SXNFeGlzdGluZ1NlcnZlcihpZHMuZ2V0U2VydmVySW5zdGFuY2VJZCgpICE9IG51bGwpOwotCQlzZXJ2ZXJMYWJlbHNfID0gbmV3IEhhc2h0YWJsZTxTdHJpbmcsU3RyaW5nPigpOwotCQlleGlzdGluZ1NlcnZlcnNUYWJsZV8gPSBuZXcgSGFzaHRhYmxlPFN0cmluZywgSVNlcnZlcj4oKTsKLQkJbGFiZWxQcm92aWRlcl8gPSBTZXJ2ZXJVSUNvcmUuZ2V0TGFiZWxQcm92aWRlcigpOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFNlbGVjdFNlcnZlckZpcnN0KGJvb2xlYW4gc2VsZWN0U2VydmVyRmlyc3QpIHsKLQkJc2VsZWN0U2VydmVyRmlyc3RfID0gc2VsZWN0U2VydmVyRmlyc3Q7Ci0JfQotCi0JcHJvdGVjdGVkIFBvaW50IGdldEluaXRpYWxTaXplKCkKLQl7Ci0JCXJldHVybiB0aGlzLmdldFNoZWxsKCkuY29tcHV0ZVNpemUoNTUwLCBTV1QuREVGQVVMVCwgdHJ1ZSk7Ci0JfQotCi0JcHVibGljIFR5cGVSdW50aW1lU2VydmVyIGdldFR5cGVSdW50aW1lU2VydmVyKCkgewotCQlUeXBlUnVudGltZVNlcnZlciBpZHMgPSBuZXcgVHlwZVJ1bnRpbWVTZXJ2ZXIoKTsKLQotCQlpZHMuc2V0VHlwZUlkKHR5cGVJZF8pOwotCQlpZiAoc2VsZWN0ZWRSdW50aW1lXyAhPSBudWxsKQotCQkJaWRzLnNldFJ1bnRpbWVJZChzZWxlY3RlZFJ1bnRpbWVfLmdldElkKCkpOwotCi0JCWlmKCBzZWxlY3RlZFNlcnZlckZhY3RvcnlJRF8gPT0gbnVsbCApCi0JCXsKLQkJCWlkcy5zZXRTZXJ2ZXJJZCggZGVmYXVsdFNlcnZlcl8gKTsKLQkJCWlkcy5zZXRTZXJ2ZXJJbnN0YW5jZUlkKCBzZXJ2ZXJJbnN0YW5jZUlEXyApOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJaWRzLnNldFNlcnZlcklkKHNlbGVjdGVkU2VydmVyRmFjdG9yeUlEXyk7Ci0KLQkJCWlmIChpc0V4aXN0aW5nU2VydmVyXyAmJiBzZWxlY3RlZFNlcnZlcl8gIT0gbnVsbCkgCi0JCQl7Ci0JCQkJaWRzLnNldFNlcnZlckluc3RhbmNlSWQoc2VsZWN0ZWRTZXJ2ZXJfLmdldElkKCkpOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIGlkczsKLQl9Ci0KLQlwcml2YXRlIGJvb2xlYW4gZ2V0SXNFeGlzdGluZ1NlcnZlcigpIHsKLQkJcmV0dXJuIGlzRXhpc3RpbmdTZXJ2ZXJfOwotCX0KLQotCXByaXZhdGUgdm9pZCBzZXRJc0V4aXN0aW5nU2VydmVyKGJvb2xlYW4gaXNFeGlzdGluZykgewotCQlpc0V4aXN0aW5nU2VydmVyXyA9IGlzRXhpc3Rpbmc7Ci0JfQotCi0JcHJvdGVjdGVkIENvbnRyb2wgY3JlYXRlQ29udGVudHMoQ29tcG9zaXRlIHBhcmVudCkgewotCQlDb21wb3NpdGUgY29tcCA9IChDb21wb3NpdGUpIHN1cGVyLmNyZWF0ZUNvbnRlbnRzKHBhcmVudCk7ICAKLQkJY29tcC5wYWNrKCk7IAotCi0JCWlmIChzZWxlY3RTZXJ2ZXJGaXJzdF8pIHsKLQkJCXZpZXdTZWxlY3Rpb25CeVNlcnZlckJ1dHRvbl8uc2V0U2VsZWN0aW9uKHRydWUpOyAgCi0JCQloYW5kbGVTZXJ2ZXJWaWV3U2VsZWN0aW9uRXZlbnQoKTsKLQkJfQotCQllbHNlCi0JCQl2aWV3U2VsZWN0aW9uQnlSdW50aW1lQnV0dG9uXy5zZXRTZWxlY3Rpb24odHJ1ZSk7Ci0KLQkJcmV0dXJuIGNvbXA7Ci0JfSAKLQotCXByb3RlY3RlZCBDb250cm9sIGNyZWF0ZURpYWxvZ0FyZWEoQ29tcG9zaXRlIHBhcmVudCkgewotCQl2YWxpZGF0ZU9uXyA9IGZhbHNlOwotCQl0aGlzU2hlbGwgPSBwYXJlbnQuZ2V0U2hlbGwoKTsKLQkJaWYgKHRoaXNTaGVsbCA9PSBudWxsKSB7Ci0JCQl0aGlzU2hlbGwgPSBjcmVhdGVTaGVsbCgpOwotCQl9Ci0JCUNvbXBvc2l0ZSBjb21wb3NpdGUgPSAoQ29tcG9zaXRlKSBzdXBlci5jcmVhdGVEaWFsb2dBcmVhKHBhcmVudCk7Ci0JCXNldE1lc3NhZ2UobWVzc2FnZUJhbm5lcl8pOwotCQlVSVV0aWxzIHVpVXRpbHMgPSBuZXcgVUlVdGlscyhXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5JRCk7Ci0JCS8vIFdpbmRvdyB0aXRsZQotCQlpZiAoc2VsZWN0aW9uTW9kZV8gPT0gTU9ERV9TRVJWSUNFKSB7Ci0JCQl0aGlzU2hlbGwuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9USVRMRV9XU19SVU5USU1FX1NFTEVDVElPTik7Ci0JCQlzZXRUaXRsZShDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9USVRMRV9XU19SVU5USU1FX1NFTEVDVElPTik7Ci0JCX0KLQkJZWxzZSB7Ci0JCQl0aGlzU2hlbGwuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9USVRMRV9XU19DTElFTlRfUlVOVElNRV9TRUxFQ1RJT04pOwotCQkJc2V0VGl0bGUoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfQ0xJRU5UX1JVTlRJTUVfU0VMRUNUSU9OKTsKLQkJfQotCQlJV29ya2JlbmNoSGVscFN5c3RlbSBoZWxwU3lzdGVtID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCk7Ci0JCWhlbHBTeXN0ZW0uc2V0SGVscCh0aGlzU2hlbGwsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLklEICsgIi4iICsgSU5GT1BPUF9QV1JTX0RJQUxPRyk7Ci0KLQkJLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQkJbmV3IExhYmVsKGNvbXBvc2l0ZSwgU1dULkhPUklaT05UQUwpOwotCQkvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCQkvLyBTZWxlY3Rpb24KLQkJdGhpc1NoZWxsLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXUlNfUEFHRSk7Ci0KLQkJU3RyaW5nIGdyb3VwTmFtZSA9KHNlbGVjdGlvbk1vZGVfID09IE1PREVfU0VSVklDRSkgPyBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfU0VMRUNUSU9OX1ZJRVdfVElUTEU6Ci0JCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfQ0xJRU5UX1NFTEVDVElPTl9WSUVXX1RJVExFOwotCQlHcm91cCB2aWV3U2VsZWN0aW9uR3JvdXBfID0gdWlVdGlscy5jcmVhdGVHcm91cChjb21wb3NpdGUsIGdyb3VwTmFtZSwgbnVsbCwgbnVsbCk7Ci0KLQkJQ29tcG9zaXRlIHZpZXdTZWxlY3Rpb25Db21wXyA9IHVpVXRpbHMuY3JlYXRlQ29tcG9zaXRlKHZpZXdTZWxlY3Rpb25Hcm91cF8sIDEpOwotCQl2aWV3U2VsZWN0aW9uQnlTZXJ2ZXJCdXR0b25fID0gdWlVdGlscy5jcmVhdGVSYWRpb0J1dHRvbih2aWV3U2VsZWN0aW9uQ29tcF8sIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9TRUxFQ1RJT05fVklFV19TRVJWRVIsIAotCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXUlNfUkFESU9fU0VSVkVSLCBJTkZPUE9QX1BXUlNfUkFESU9fU0VSVkVSKTsKLQkJdmlld1NlbGVjdGlvbkJ5U2VydmVyQnV0dG9uXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uQWRhcHRlciAoKSB7Ci0JCQlwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7Ci0JCQkJaWYgKCF2YWxpZGF0ZU9uXykJICAgICAgcmV0dXJuOwotCQkJCWhhbmRsZVNlcnZlclZpZXdTZWxlY3Rpb25FdmVudCgpOwotCQkJfQkKLQkJfSk7Ci0KLQkJdmlld1NlbGVjdGlvbkJ5UnVudGltZUJ1dHRvbl8gPSB1aVV0aWxzLmNyZWF0ZVJhZGlvQnV0dG9uKHZpZXdTZWxlY3Rpb25Db21wXywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NFTEVDVElPTl9WSUVXX1JVTlRJTUUsCi0JCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdSU19SQURJT19SVU5USU1FLCBJTkZPUE9QX1BXUlNfUkFESU9fUlVOVElNRSk7Ci0JCXZpZXdTZWxlY3Rpb25CeVJ1bnRpbWVCdXR0b25fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotCQkJcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQkJCWlmICghdmFsaWRhdGVPbl8pCSAgICAgIHJldHVybjsKLQkJCQloYW5kbGVSdW50aW1lVmlld1NlbGVjdGlvbkV2ZW50KCk7Ci0JCQl9Ci0JCX0pOwotCi0JCXZpZXdTZWxlY3Rpb25CeUV4cGxvcmVCdXR0b25fID0gdWlVdGlscy5jcmVhdGVSYWRpb0J1dHRvbih2aWV3U2VsZWN0aW9uQ29tcF8sIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9TRUxFQ1RJT05fVklFV19FWFBMT1JFLAotCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXUlNfUkFESU9fRVhQTE9SRSwgSU5GT1BPUF9QV1JTX1JBRElPX0VYUExPUkUpOwotCQl2aWV3U2VsZWN0aW9uQnlFeHBsb3JlQnV0dG9uXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uQWRhcHRlcigpIHsKLQkJCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJCQlpZiAoIXZhbGlkYXRlT25fKQkgICAgICByZXR1cm47Ci0JCQkJaGFuZGxlRXhwbG9yZVZpZXdTZWxlY3Rpb25FdmVudCgpOwotCQkJCXN1cGVyLndpZGdldFNlbGVjdGVkKGUpOwotCQkJfQotCQl9KTsKLQotCQlwcmltYXJ5R3JvdXBfID0gdWlVdGlscy5jcmVhdGVDb21wb3NpdGUoY29tcG9zaXRlLCAxKTsKLQkJcnVudGltZXNHcm91cF8gPSB1aVV0aWxzLmNyZWF0ZUdyb3VwKCBwcmltYXJ5R3JvdXBfLCBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfUlVOVElNRVNfTElTVCwgCi0JCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdSU19MSVNUX1JVTlRJTUVTLCBJTkZPUE9QX1BXUlNfTElTVF9SVU5USU1FUyk7Ci0JCXJ1bnRpbWVzR3JvdXBfLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCB8IEdyaWREYXRhLkZJTExfVkVSVElDQUwpKTsKLQkJcnVudGltZXNMaXN0XyA9IHVpVXRpbHMuY3JlYXRlVHJlZShydW50aW1lc0dyb3VwXywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdSU19MSVNUX1JVTlRJTUVTLCAKLQkJCQlJTkZPUE9QX1BXUlNfTElTVF9SVU5USU1FUywgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgfCBTV1QuVl9TQ1JPTEwgfCBTV1QuSF9TQ1JPTEwpOwotCQlydW50aW1lc0xpc3RfLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotCQkJcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQkJCWlmICghdmFsaWRhdGVPbl8pCSAgICAgIHJldHVybjsKLQkJCQlUcmVlSXRlbVtdIHJ1bnRpbWVTZWwgPSBydW50aW1lc0xpc3RfLmdldFNlbGVjdGlvbigpOwotCQkJCXByb2Nlc3NSdW50aW1lTGlzdFNlbGVjdGlvbihydW50aW1lU2VsWzBdLmdldFRleHQoKSk7Ci0JCQkJdmFsaWRhdGVTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uKCk7Ci0JCQl9Ci0JCX0pOwotCi0JCS8vICBTZXJ2ZXIgbGFiZWxzIGNvbnRyb2wKLQkJc2VydmVyc0dyb3VwXyA9IHVpVXRpbHMuY3JlYXRlR3JvdXAocHJpbWFyeUdyb3VwXywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NFUlZFUlNfTElTVCwgCi0JCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdSU19MSVNUX1NFUlZFUlMsIG51bGwpOwotCQlzZXJ2ZXJzR3JvdXBfLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCB8IEdyaWREYXRhLkZJTExfVkVSVElDQUwpKTsKLQkJc2VydmVyTGlzdF8gPSB1aVV0aWxzLmNyZWF0ZVRyZWUoc2VydmVyc0dyb3VwXywgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdSU19MSVNUX1NFUlZFUlMsIElORk9QT1BfUFdSU19MSVNUX1NFUlZFUlMsCi0JCQkJU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgfCBTV1QuVl9TQ1JPTEwgfCBTV1QuSF9TQ1JPTEwpOwotCQlzZXJ2ZXJMaXN0Xy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5GSUxMX0hPUklaT05UQUwgfCBHcmlkRGF0YS5GSUxMX1ZFUlRJQ0FMKSk7Ci0JCXNlcnZlckxpc3RfLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotCQkJcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQkJCWlmICghdmFsaWRhdGVPbl8pCSAgICAgIHJldHVybjsKLQkJCQlwcm9jZXNzU2VydmVyTGlzdFNlbGVjdGlvbigpOwotCQkJCXZhbGlkYXRlU2VydmVyUnVudGltZVNlbGVjdGlvbigpOwotCQkJfQkKLQkJfSk7Ci0KLQkJU2VydmVyc0xpc3Qgc2VydmVyTGlzdCA9IG5ldyBTZXJ2ZXJzTGlzdCgpOwotCQlzZXJ2ZXJMaXN0LnNldFNlcnZlclRyZWVJdGVtcyhzZXJ2ZXJMaXN0Xyk7Ci0KLQkJc2V0UnVudGltZXNHcm91cCgpOwotCQkvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCQluZXcgTGFiZWwoY29tcG9zaXRlLCBTV1QuSE9SSVpPTlRBTCk7Ci0JCXZhbGlkYXRlT25fID0gdHJ1ZTsKLQkJb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2cuYXBwbHlEaWFsb2dGb250KHBhcmVudCk7Ci0JCXJldHVybiBjb21wb3NpdGU7Ci0JfQotCi0JcHJvdGVjdGVkIElTdGF0dXMgZ2V0U3RhdHVzKCkgewotCQlpZiAoc2VsZWN0aW9uTW9kZV8gPT0gTU9ERV9TRVJWSUNFKSB7Ci0JCQlpZiAoc2VsZWN0ZWRTZXJ2ZXJGYWN0b3J5SURfICE9IG51bGwgJiYgc2VsZWN0ZWRSdW50aW1lXyAhPSBudWxsKSAKLQkJCXsKLQotCQkJCWlmIChXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5pc1NlcnZlclJ1bnRpbWVUeXBlU3VwcG9ydGVkKHNlbGVjdGVkU2VydmVyRmFjdG9yeUlEXywgc2VsZWN0ZWRSdW50aW1lXy5nZXRJZCgpLAotCQkJCQkJdHlwZUlkXykpCi0JCQkJewotCQkJCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQkJCQl9IGVsc2UKLQkJCQl7Ci0JCQkJCVN0cmluZyBzZXJ2ZXJMYWJlbCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZlckxhYmVsQnlJZChzZWxlY3RlZFNlcnZlckZhY3RvcnlJRF8pOwotCQkJCQlTdHJpbmcgcnVudGltZUxhYmVsID0gc2VsZWN0ZWRSdW50aW1lXy5nZXRMYWJlbCgpOwotCQkJCQlyZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19JTlZBTElEX1NSVF9TRUxFQ1RJT05TLCBuZXcgU3RyaW5nW10geyBzZXJ2ZXJMYWJlbCwKLQkJCQkJCQlydW50aW1lTGFiZWwgfSkpOwotCQkJCX0KLQkJCX0KLQkJfQotCQllbHNlIHsKLQotCQkJaWYgKHNlbGVjdGVkU2VydmVyRmFjdG9yeUlEXyAhPSBudWxsICYmIHNlbGVjdGVkUnVudGltZV8gIT0gbnVsbCkKLQkJCXsKLQkJCQlTdHJpbmcgY2xpZW50SWQgPSB0eXBlSWRfOwotCQkJCWlmIChXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5pc1NlcnZlckNsaWVudFJ1bnRpbWVUeXBlU3VwcG9ydGVkKHNlbGVjdGVkU2VydmVyRmFjdG9yeUlEXywgc2VsZWN0ZWRSdW50aW1lXwotCQkJCQkJLmdldElkKCksIGNsaWVudElkKSkKLQkJCQl7Ci0JCQkJCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCQkJCX0gZWxzZQotCQkJCXsKLQkJCQkJU3RyaW5nIHNlcnZlckxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmVyTGFiZWxCeUlkKHNlbGVjdGVkU2VydmVyRmFjdG9yeUlEXyk7Ci0JCQkJCVN0cmluZyBydW50aW1lTGFiZWwgPSBzZWxlY3RlZFJ1bnRpbWVfLmdldExhYmVsKCk7Ci0JCQkJCXJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0lOVkFMSURfU1JUX1NFTEVDVElPTlMsIG5ldyBTdHJpbmdbXSB7IHNlcnZlckxhYmVsLAotCQkJCQkJCXJ1bnRpbWVMYWJlbCB9KSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCS8vIERpc2FibGUgT0sgYnV0dG9uIGlmIHRoZSBydW50aW1lIHNlbGVjdGlvbiBpcyBpbnZhbGlkCi0JCVRyZWVJdGVtW10gcnVudGltZVNlbCA9IHJ1bnRpbWVzTGlzdF8uZ2V0U2VsZWN0aW9uKCk7Ci0JCWlmIChydW50aW1lU2VsID09IG51bGwgfHwgcnVudGltZVNlbC5sZW5ndGggPD0gMCB8fCBydW50aW1lU2VsWzBdLmdldFRleHQoKS5sZW5ndGgoKSA9PSAwKSB7Ci0JCQlyZXR1cm4gU3RhdHVzVXRpbHMuaW5mb1N0YXR1cyhtZXNzYWdlQmFubmVyXyk7Ci0JCX0KLQkJLy8gRGlzYWJsZSBPSyBidXR0b24gaWYgc2VydmVyIHNlbGVjdGlvbiBpcyBpbnZhbGlkCi0JCVRyZWVJdGVtW10gc2VydmVyU2VsID0gc2VydmVyTGlzdF8uZ2V0U2VsZWN0aW9uKCk7Ci0JCVN0cmluZyBjdXJyZW50U2VsZWN0aW9uID0gKHNlcnZlclNlbCAhPSBudWxsICYmIHNlcnZlclNlbC5sZW5ndGggPiAwKSA/IHNlcnZlclNlbFswXS5nZXRUZXh0KCkgOiAiIjsKLQkJaWYgKHNlcnZlclNlbCA9PSBudWxsIHx8IGN1cnJlbnRTZWxlY3Rpb24ubGVuZ3RoKCkgPT0gMCkgewotCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmluZm9TdGF0dXMobWVzc2FnZUJhbm5lcl8pOwotCQl9Ci0JCWlmICghc2VydmVyTGFiZWxzXy5jb250YWluc0tleShjdXJyZW50U2VsZWN0aW9uKSB8fCAhZXhpc3RpbmdTZXJ2ZXJzVGFibGVfLmNvbnRhaW5zS2V5KGN1cnJlbnRTZWxlY3Rpb24pKSB7Ci0JCQlyZXR1cm4gU3RhdHVzVXRpbHMuaW5mb1N0YXR1cyhtZXNzYWdlQmFubmVyXyk7Ci0JCX0KLQkJLy8gRGlzYWJsZSBPSyBidXR0b24gaWYgY2F0ZWdvcnkgaXMgc2VsZWN0ZWQgcmF0aGVyIHRoYW4gYSBzZXJ2ZXIKLQkJaWYgKHNlcnZlclNlbC5sZW5ndGggPiAwICYmIHNlcnZlclNlbFswXS5nZXRJdGVtQ291bnQoKSE9MCkgewotCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmluZm9TdGF0dXMobWVzc2FnZUJhbm5lcl8pOwotCQl9Ci0JCWVsc2UgewotCQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JCX0KLQotCX0KLQotCXB1YmxpYyB2b2lkIHZhbGlkYXRlU2VydmVyUnVudGltZVNlbGVjdGlvbigpIHsKLQkJSVN0YXR1cyBzdGF0dXMgPSBnZXRTdGF0dXMoKTsKLQkJU3RyaW5nIG1lc3NhZ2UgPSBuZXcgU3RyaW5nKG1lc3NhZ2VCYW5uZXJfKTsKLQkJbWVzc2FnZSA9IG5ldyBTdHJpbmcoc3RhdHVzLmdldE1lc3NhZ2UoKSk7Ci0JCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpIHsKLQkJCXNldE1lc3NhZ2UobWVzc2FnZSxJTWVzc2FnZVByb3ZpZGVyLkVSUk9SKTsKLQkJCWdldEJ1dHRvbihJRGlhbG9nQ29uc3RhbnRzLk9LX0lEKS5zZXRFbmFibGVkKGZhbHNlKTsKLQkJfQotCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLldBUk5JTkcpIHsKLQkJCXNldE1lc3NhZ2UobWVzc2FnZSwgSU1lc3NhZ2VQcm92aWRlci5XQVJOSU5HKTsKLQkJCWdldEJ1dHRvbihJRGlhbG9nQ29uc3RhbnRzLk9LX0lEKS5zZXRFbmFibGVkKHRydWUpOwotCQl9Ci0JCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuSU5GTykgewotCQkJc2V0TWVzc2FnZShtZXNzYWdlLCBJTWVzc2FnZVByb3ZpZGVyLklORk9STUFUSU9OKTsKLQkJCWdldEJ1dHRvbihJRGlhbG9nQ29uc3RhbnRzLk9LX0lEKS5zZXRFbmFibGVkKGZhbHNlKTsKLQkJfQotCQlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLk9LKSB7IAotCQkJc2V0TWVzc2FnZShtZXNzYWdlQmFubmVyXyk7Ci0JCQlnZXRCdXR0b24oSURpYWxvZ0NvbnN0YW50cy5PS19JRCkuc2V0RW5hYmxlZCh0cnVlKTsKLQkJfQotCX0KLQotCXByaXZhdGUgdm9pZCBoYW5kbGVSdW50aW1lVmlld1NlbGVjdGlvbkV2ZW50KCkgewotCQlHcmlkTGF5b3V0IGdsID0gbmV3IEdyaWRMYXlvdXQoKTsKLQkJZ2wubnVtQ29sdW1ucyA9IDE7Ci0JCWdsLm1ha2VDb2x1bW5zRXF1YWxXaWR0aCA9IHRydWU7Ci0JCUdyaWREYXRhIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfQk9USCk7Ci0JCXByaW1hcnlHcm91cF8uc2V0TGF5b3V0KGdsKTsKLQkJcHJpbWFyeUdyb3VwXy5zZXRMYXlvdXREYXRhKGdkKTsKLQkJcnVudGltZXNHcm91cF8ubW92ZUFib3ZlKHNlcnZlcnNHcm91cF8pOwotCQlwcmltYXJ5R3JvdXBfLmxheW91dCgpOwotCi0JCS8vIFRPRE86IFNob3cgYWxsIHJ1bnRpbWVzLCBhbmQgb25seSBzZXJ2ZXJzIHN1cHBvcnRlZCBieSBjdXJyZW50IHR5cGUgaWQKLQl9Ci0KLQkvLyAKLQkvLyBDYWxsZWQgYnkgaGFuZGxlRXZlbnQoKSB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIGxheW91dCB0byB2aWV3Ci0JLy8KLQlwdWJsaWMgdm9pZCBoYW5kbGVTZXJ2ZXJWaWV3U2VsZWN0aW9uRXZlbnQoKSB7Ci0JCUdyaWRMYXlvdXQgZ2wgPSBuZXcgR3JpZExheW91dCgpOwotCQlnbC5udW1Db2x1bW5zID0gMTsKLQkJZ2wubWFrZUNvbHVtbnNFcXVhbFdpZHRoID0gdHJ1ZTsKLQkJR3JpZERhdGEgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9CT1RIKTsKLQkJcHJpbWFyeUdyb3VwXy5zZXRMYXlvdXQoZ2wpOwotCQlwcmltYXJ5R3JvdXBfLnNldExheW91dERhdGEoZ2QpOwotCQlzZXJ2ZXJzR3JvdXBfLm1vdmVBYm92ZShydW50aW1lc0dyb3VwXyk7Ci0JCXByaW1hcnlHcm91cF8ubGF5b3V0KCk7Ci0KLQkJLy8gVE9ETzogU2hvdyBhbGwgc2VydmVycywgYW5kIG9ubHkgcnVudGltZXMgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IHR5cGUgaWQKLQl9Ci0KLQkvLyAKLQkvLyBDYWxsZWQgYnkgaGFuZGxlRXZlbnQoKSB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIGxheW91dCB0byB2aWV3Ci0JLy8KLQlwcml2YXRlIHZvaWQgaGFuZGxlRXhwbG9yZVZpZXdTZWxlY3Rpb25FdmVudCgpIHsKLQkJR3JpZExheW91dCBnbDsKLQkJZ2wgPSAoR3JpZExheW91dCkgcHJpbWFyeUdyb3VwXy5nZXRMYXlvdXQoKTsKLQkJZ2wubnVtQ29sdW1ucyA9IDI7Ci0JCWdsLm1ha2VDb2x1bW5zRXF1YWxXaWR0aCA9IHRydWU7Ci0JCUdyaWREYXRhIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfQk9USCk7Ci0JCXByaW1hcnlHcm91cF8uc2V0TGF5b3V0KGdsKTsKLQkJcHJpbWFyeUdyb3VwXy5zZXRMYXlvdXREYXRhKGdkKTsKLQkJcnVudGltZXNHcm91cF8ubW92ZUFib3ZlKHNlcnZlcnNHcm91cF8pOwotCQlwcmltYXJ5R3JvdXBfLmxheW91dCgpOwotCi0JCS8vIFRPRE86IFNob3cgYWxsIHNlcnZlcnMgYW5kIHJ1bnRpbWVzIGZyb20gdGhlIHR5cGUgaWQKLQotCX0KLQotCXByaXZhdGUgdm9pZCBwcm9jZXNzUnVudGltZUxpc3RTZWxlY3Rpb24oU3RyaW5nIHJ1bnRpbWVOYW1lKSB7Ci0KLQkJaWYgKHNlbGVjdGlvbk1vZGVfID09IE1PREVfU0VSVklDRSkgewotCQkJc2VsZWN0ZWRSdW50aW1lXyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFJ1bnRpbWVCeUxhYmVsKHJ1bnRpbWVOYW1lKTsKLQkJfQotCQllbHNlIHsKLQkJCXNlbGVjdGVkUnVudGltZV8gPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRSdW50aW1lQnlMYWJlbChydW50aW1lTmFtZSk7Ci0JCX0KLQl9Ci0KLQlwcml2YXRlIHZvaWQgcHJvY2Vzc1NlcnZlckxpc3RTZWxlY3Rpb24oKSB7Ci0JCVN0cmluZyBjdXJyZW50U2VsZWN0aW9uOwotCQlUcmVlSXRlbVtdIHNlcnZlclNlbCA9IHNlcnZlckxpc3RfLmdldFNlbGVjdGlvbigpOwotCQlpZiAoc2VydmVyU2VsICE9IG51bGwgJiYgc2VydmVyU2VsLmxlbmd0aCA+IDApIHsKLQkJCWN1cnJlbnRTZWxlY3Rpb24gPSBzZXJ2ZXJTZWxbMF0uZ2V0VGV4dCgpOwotCQkJaWYgKHNlcnZlckxhYmVsc18uY29udGFpbnNLZXkoY3VycmVudFNlbGVjdGlvbikgfHwgZXhpc3RpbmdTZXJ2ZXJzVGFibGVfLmNvbnRhaW5zS2V5KGN1cnJlbnRTZWxlY3Rpb24pKSB7Ci0JCQkJaWYgKGV4aXN0aW5nU2VydmVyc1RhYmxlXy5jb250YWluc0tleShjdXJyZW50U2VsZWN0aW9uKSkgewotCQkJCQlzZWxlY3RlZFNlcnZlcl8gPSAoSVNlcnZlcikgZXhpc3RpbmdTZXJ2ZXJzVGFibGVfLmdldChjdXJyZW50U2VsZWN0aW9uKTsKLQkJCQkJc2VsZWN0ZWRTZXJ2ZXJMYWJlbF8gPSBjdXJyZW50U2VsZWN0aW9uOwotCQkJCQlzZWxlY3RlZFNlcnZlckZhY3RvcnlJRF8gPSBzZWxlY3RlZFNlcnZlcl8uZ2V0U2VydmVyVHlwZSgpLmdldElkKCk7Ci0JCQkJfQotCQkJCWVsc2UgaWYgKHNlcnZlckxhYmVsc18uY29udGFpbnNLZXkoY3VycmVudFNlbGVjdGlvbikpIHsKLQkJCQkJVHJlZUl0ZW0gcGFyZW50SXRlbSA9IHNlcnZlclNlbFswXS5nZXRQYXJlbnRJdGVtKCk7Ci0JCQkJCWlmIChwYXJlbnRJdGVtICE9IG51bGwgJiYgIXBhcmVudEl0ZW0uZ2V0VGV4dCgpLmVxdWFsc0lnbm9yZUNhc2UoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1RSRUVfRVhJU1RJTkdfU0VSVkVSUykpIHsKLQkJCQkJCXNlbGVjdGVkU2VydmVyTGFiZWxfID0gY3VycmVudFNlbGVjdGlvbjsKLQkJCQkJCXNlbGVjdGVkU2VydmVyXyA9IG51bGw7Ci0JCQkJCQlzZWxlY3RlZFNlcnZlckZhY3RvcnlJRF8gPSAoU3RyaW5nKSBzZXJ2ZXJMYWJlbHNfLmdldChjdXJyZW50U2VsZWN0aW9uKTsKLQkJCQkJfQotCQkJCX0KLQotCQkJCS8vIGNoZWNrIGlmIGlzRXhpc3RpbmdTZXJ2ZXIgb3IgbmV3IFNlcnZlclR5cGUKLQkJCQlUcmVlSXRlbSBwYXJlbnRJdGVtID0gc2VydmVyU2VsWzBdLmdldFBhcmVudEl0ZW0oKTsKLQkJCQlpZiAocGFyZW50SXRlbSAhPSBudWxsICYmIHBhcmVudEl0ZW0uZ2V0VGV4dCgpLmVxdWFsc0lnbm9yZUNhc2UoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1RSRUVfRVhJU1RJTkdfU0VSVkVSUykpIHsKLQkJCQkJc2V0SXNFeGlzdGluZ1NlcnZlcih0cnVlKTsKLQkJCQl9Ci0JCQkJZWxzZSB7Ci0JCQkJCXNldElzRXhpc3RpbmdTZXJ2ZXIoZmFsc2UpOwotCQkJCX0KLQkJCX0KLQkJCWVsc2UgewotCQkJCXNlbGVjdGVkU2VydmVyXyA9IG51bGw7Ci0JCQkJc2VsZWN0ZWRTZXJ2ZXJMYWJlbF8gPSBudWxsOwotCQkJCXNlbGVjdGVkU2VydmVyRmFjdG9yeUlEXyA9IG51bGw7Ci0JCQkJc2V0SXNFeGlzdGluZ1NlcnZlcihmYWxzZSk7Ci0JCQkJcmV0dXJuOwotCQkJfSAgICAgIAotCQl9Ci0JfQotCi0JLy8JcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldE1lc3NhZ2UoU3RyaW5nIGtleSkgewotCS8vCXJldHVybiBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRNZXNzYWdlKGtleSk7Ci0JLy8JfQotCi0JcHJpdmF0ZSB2b2lkIHNldFJ1bnRpbWVzR3JvdXAoKSB7Ci0JCXJ1bnRpbWVzTGlzdF8ucmVtb3ZlQWxsKCk7Ci0JCVN0cmluZ1tdIHJ1bnRpbWVzID0gbnVsbDsKLQotCQlpZiAoc2VsZWN0aW9uTW9kZV8gPT0gTU9ERV9TRVJWSUNFKSB7Ci0JCQlydW50aW1lcyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFJ1bnRpbWVzQnlTZXJ2aWNlVHlwZSh0eXBlSWRfKTsKLQkJfQotCQllbHNlIHsKLQkJCXJ1bnRpbWVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZXNCeUNsaWVudFR5cGUodHlwZUlkXyk7Ci0JCX0KLQotCQkvL3NvcnQgdGhlIHJ1bnRpbWVzIGJhc2VkIG9uIHRoZSBydW50aW1lIG5hbWUgKGJ1ZyAxNTE3MjMpCi0JCUNvbXBhcmF0b3I8U3RyaW5nPiBjb21wYXJhdG9yID0gbmV3IFJ1bnRpbWVOYW1lQ29tcGFyYXRvcigpOwotCQlBcnJheXMuc29ydChydW50aW1lcywgY29tcGFyYXRvcik7Ci0KLQkJVHJlZUl0ZW1bXSBydW50aW1lTmFtZSA9IG5ldyBUcmVlSXRlbVtydW50aW1lcy5sZW5ndGhdOwotCi0JCWlmIChydW50aW1lcyAhPSBudWxsKSB7Ci0JCQlmb3IgKGludCBpID0gMDsgaSA8IHJ1bnRpbWVzLmxlbmd0aDsgaSsrKSB7Ci0JCQkJU3RyaW5nIHJ1bnRpbWVMYWJlbCA9IGdldFJ1bnRpbWVMYWJlbChydW50aW1lc1tpXSk7Ci0JCQkJcnVudGltZU5hbWVbaV0gPSBuZXcgVHJlZUl0ZW0ocnVudGltZXNMaXN0XywgU1dULk5PTkUpOwotCQkJCXJ1bnRpbWVOYW1lW2ldLnNldFRleHQocnVudGltZUxhYmVsKTsKLQotCQkJCWlmIChydW50aW1lc1tpXS5lcXVhbHNJZ25vcmVDYXNlKGRlZmF1bHRSdW50aW1lXykpIHsKLQkJCQkJcnVudGltZXNMaXN0Xy5zZXRTZWxlY3Rpb24obmV3IFRyZWVJdGVtW10geyBydW50aW1lTmFtZVtpXX0pOwotCQkJCQlzZWxlY3RlZFJ1bnRpbWVfID0gZ2V0UnVudGltZShydW50aW1lc1tpXSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfSAgCi0KLQlwcml2YXRlIGNsYXNzIFJ1bnRpbWVOYW1lQ29tcGFyYXRvciBpbXBsZW1lbnRzIENvbXBhcmF0b3IgPFN0cmluZz4KLQl7Ci0JCXB1YmxpYyBSdW50aW1lTmFtZUNvbXBhcmF0b3IoKQotCQl7CQkKLQkJfQotCQkvL0NvbXBhcmUgdG8gcnVudGltZSBJRCBzdHJpbmdzIGJ5IHRoZWlyIGxhYmVscy4gIFVzZWQgZm9yIHNvcnRpbmcuCi0JCXB1YmxpYyBpbnQgY29tcGFyZShTdHJpbmcgaXRlbTEsIFN0cmluZyBpdGVtMikgewotCQkJdHJ5IHsKLQkJCQlTdHJpbmcgcnVudGltZTEgPSAoU3RyaW5nKWl0ZW0xOwotCQkJCVN0cmluZyBydW50aW1lMiA9IChTdHJpbmcpaXRlbTI7CQkKLQotCQkJCXJldHVybiBnZXRSdW50aW1lTGFiZWwocnVudGltZTEpLmNvbXBhcmVUb0lnbm9yZUNhc2UoZ2V0UnVudGltZUxhYmVsKHJ1bnRpbWUyKSk7Ci0JCQl9Ci0JCQljYXRjaCAoRXhjZXB0aW9uIGUpCi0JCQl7IC8vSnVzdCBpbiBjYXNlIG9mIGNsYXNzIGNhc3QgZXhjZXB0aW9uIG9yIE5QRS4gIHNob3VsZCBuZXZlciBoYXBwZW4KLQkJCX0JCQotCQkJcmV0dXJuIDA7Ci0JCX0KLQl9Ci0KLQlwcml2YXRlIFN0cmluZyBnZXRSdW50aW1lTGFiZWwoU3RyaW5nIHR5cGUpIHsKLQkJcmV0dXJuIGdldFJ1bnRpbWUodHlwZSkuZ2V0TGFiZWwoKTsKLQl9Ci0KLQlwcml2YXRlIFJ1bnRpbWVEZXNjcmlwdG9yIGdldFJ1bnRpbWUoU3RyaW5nIHR5cGUpIHsKLQkJaWYgKHNlbGVjdGlvbk1vZGVfID09IE1PREVfU0VSVklDRSkgewotCQkJcmV0dXJuIFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFJ1bnRpbWVCeUlkKHR5cGUpOwotCQl9Ci0JCWVsc2UgewotCQkJcmV0dXJuIFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFJ1bnRpbWVCeUlkKHR5cGUpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogCi0JICogU2VydmVyc0xpc3QgY2xhc3MKLQkgKiAKLQkgKiBDbGFzcyB3aGljaCBlYXNpbHkgY3JlYXRlcyB0aGUgVHJlZSBzdHJ1Y3R1cmUgYW5kIGVudHJpZXMgZm9yIGV4aXN0aW5nIHNlcnZlcnMgYW5kIHNlcnZlciB0eXBlcwotCSAqLwotCXB1YmxpYyBjbGFzcyBTZXJ2ZXJzTGlzdCB7Ci0KLQkJcHJpdmF0ZSBUcmVlSXRlbVtdIGV4aXN0aW5nU2VydmVyc1RyZWU7Ci0JCWJvb2xlYW4gZXhpc3RpbmdTZXJ2ZXIgPSBmYWxzZTsKLQotCQlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJUcmVlSXRlbXMoVHJlZSBzZXJ2ZXJzTGlzdCkgewotCQkJdGhpcy5zZXRFeGlzdGluZ1NlcnZlcnNUcmVlKHNlcnZlcnNMaXN0KTsKLQkJCXRoaXMuc2V0U2VydmVyVHlwZXNUcmVlKHNlcnZlcnNMaXN0KTsKLQkJfQotCi0JCXB1YmxpYyB2b2lkIHNldEV4aXN0aW5nU2VydmVyc1RyZWUoVHJlZSBzZXJ2ZXJMaXN0KSB7Ci0JCQlTdHJpbmdbXSBzZXJ2ZXJJZHMgPSB0aGlzLmdldEFsbEV4aXN0aW5nU2VydmVycygpOwotCQkJZXhpc3RpbmdTZXJ2ZXJzVHJlZSA9IG5ldyBUcmVlSXRlbVsxXTsKLQkJCVRyZWVJdGVtW10gZXhpc3RpbmdTZXJ2ZXJJdGVtcyA9IG5ldyBUcmVlSXRlbVtzZXJ2ZXJJZHMubGVuZ3RoXTsKLQkJCWV4aXN0aW5nU2VydmVyc1RyZWVbMF0gPSBuZXcgVHJlZUl0ZW0oc2VydmVyTGlzdCwgU1dULk5PTkUpOwotCQkJZXhpc3RpbmdTZXJ2ZXJzVHJlZVswXS5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9UUkVFX0VYSVNUSU5HX1NFUlZFUlMpOwotCQkJSW1hZ2VEZXNjcmlwdG9yIGlkID0gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW1hZ2VEZXNjcmlwdG9yKEVYSVNUSU5HX1NFUlZFUlNfSUNPTik7Ci0JCQlpZiAoaWQgIT0gbnVsbCkgewotCQkJCWV4aXN0aW5nU2VydmVyc0ljb24gPSBpZC5jcmVhdGVJbWFnZSgpOwotCQkJCWV4aXN0aW5nU2VydmVyc1RyZWVbMF0uc2V0SW1hZ2UoZXhpc3RpbmdTZXJ2ZXJzSWNvbik7Ci0JCQl9Ci0JCQlmb3IgKGludCBrID0gMDsgayA8IHNlcnZlcklkcy5sZW5ndGg7IGsrKykgewotCQkJCUlTZXJ2ZXIgc2VydmVyID0gKElTZXJ2ZXIpIGV4aXN0aW5nU2VydmVyc1RhYmxlXy5nZXQoc2VydmVySWRzW2tdKTsKLQkJCQlpZiAoc2VydmVyICE9IG51bGwpIHsKLQkJCQkJSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IHNlcnZlci5nZXRTZXJ2ZXJUeXBlKCk7Ci0JCQkJCWlmIChzZXJ2ZXJUeXBlICE9IG51bGwpIHsKLQkJCQkJCVN0cmluZyBzZXJ2ZXJJRCA9IHNlcnZlclR5cGUuZ2V0SWQoKTsKLQkJCQkJCWV4aXN0aW5nU2VydmVySXRlbXNba10gPSBuZXcgVHJlZUl0ZW0oZXhpc3RpbmdTZXJ2ZXJzVHJlZVswXSwgU1dULk5PTkUpOwotCQkJCQkJZXhpc3RpbmdTZXJ2ZXJJdGVtc1trXS5zZXRUZXh0KHNlcnZlcklkc1trXSk7Ci0JCQkJCQlpZiAoc2VydmVySUQuZXF1YWxzSWdub3JlQ2FzZShkZWZhdWx0U2VydmVyXykgJiYgZ2V0SXNFeGlzdGluZ1NlcnZlcigpKSB7Ci0JCQkJCQkJZXhpc3RpbmdTZXJ2ZXJzVHJlZVswXS5zZXRFeHBhbmRlZCh0cnVlKTsKLQkJCQkJCQlzZXJ2ZXJMaXN0LnNldFNlbGVjdGlvbihuZXcgVHJlZUl0ZW1bXSB7IGV4aXN0aW5nU2VydmVySXRlbXNba119KTsKLQkJCQkJCQlleGlzdGluZ1NlcnZlciA9IHRydWU7Ci0JCQkJCQkJUnVudGltZVNlcnZlclNlbGVjdGlvbkRpYWxvZy50aGlzLnNldElzRXhpc3RpbmdTZXJ2ZXIodHJ1ZSk7Ci0JCQkJCQkJc2VsZWN0ZWRTZXJ2ZXJfID0gc2VydmVyOwotCQkJCQkJCXNlbGVjdGVkU2VydmVyTGFiZWxfID0gc2VydmVySWRzW2tdOwotCQkJCQkJCXNlbGVjdGVkU2VydmVyRmFjdG9yeUlEXyA9IHNlcnZlcklEOwotCQkJCQkJfQotCQkJCQkJZXhpc3RpbmdTZXJ2ZXJJdGVtc1trXS5zZXRJbWFnZShsYWJlbFByb3ZpZGVyXy5nZXRJbWFnZShzZXJ2ZXJUeXBlKSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJUeXBlc1RyZWUoVHJlZSBzZXJ2ZXJMaXN0KSB7Ci0KLQkJCVRyZWVJdGVtW10gc2VydmVyVHlwZXNUcmVlID0gbmV3IFRyZWVJdGVtWzFdOwotCQkJc2VydmVyVHlwZXNUcmVlWzBdID0gbmV3IFRyZWVJdGVtKHNlcnZlckxpc3QsIFNXVC5OT05FKTsKLQkJCXNlcnZlclR5cGVzVHJlZVswXS5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9UUkVFX1NFUlZFUl9UWVBFUyk7Ci0JCQlJbWFnZURlc2NyaXB0b3IgaWQgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbWFnZURlc2NyaXB0b3IoU0VSVkVSX1RZUEVTX0lDT04pOwotCQkJaWYgKGlkICE9IG51bGwpIHsKLQkJCQlzZXJ2ZXJUeXBlc0ljb24gPSBpZC5jcmVhdGVJbWFnZSgpOwotCQkJCXNlcnZlclR5cGVzVHJlZVswXS5zZXRJbWFnZShzZXJ2ZXJUeXBlc0ljb24pOwotCQkJfQotCQkJSGFzaHRhYmxlIDxJU2VydmVyVHlwZSwgSVJ1bnRpbWVUeXBlPiBjYXRlZ29yaWVzXyA9IG5ldyBIYXNodGFibGU8SVNlcnZlclR5cGUsIElSdW50aW1lVHlwZT4oKTsKLQkJCUhhc2h0YWJsZSA8SVJ1bnRpbWVUeXBlLCBUcmVlSXRlbT5jYXRlZ29yeVRyZWVJdGVtID0gbmV3IEhhc2h0YWJsZTxJUnVudGltZVR5cGUsIFRyZWVJdGVtPigpOwotCQkJU3RyaW5nW10gc2VydmVySWRzID0gbnVsbDsKLQkJCS8vIHJtIFN0cmluZyB3c3QgPSB3c2UuZ2V0V2ViU2VydmljZVR5cGUoKTsKLQkJCWlmIChzZWxlY3Rpb25Nb2RlXyA9PSBNT0RFX1NFUlZJQ0UpIHsKLQkJCQlzZXJ2ZXJJZHMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2ZXJGYWN0b3J5SWRzQnlTZXJ2aWNlVHlwZSh0eXBlSWRfKTsKLQkJCX0KLQkJCWVsc2UgewotCQkJCXNlcnZlcklkcyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldEFsbENsaWVudFNlcnZlckZhY3RvcnlJZHMoKTsKLQkJCX0KLQkJCS8vIHJtIHNlcnZlcklkID0KLQkJCS8vIHdzc3J0UmVnaXN0cnkuZ2V0U2VydmVyRmFjdG9yeUlkc0J5VHlwZSh3c2UuZ2V0V2ViU2VydmljZVR5cGUoKSk7Ci0JCQlpZiAoc2VydmVySWRzID09IG51bGwpIHsKLQkJCQlzZXJ2ZXJJZHMgPSBnZXRBbGxTZXJ2ZXJUeXBlcygpOwotCQkJfQotCQkJVHJlZUl0ZW1bXSBwYXJlbnQgPSBuZXcgVHJlZUl0ZW1bc2VydmVySWRzLmxlbmd0aF07Ci0JCQlUcmVlSXRlbVtdIGl0ZW0gPSBuZXcgVHJlZUl0ZW1bc2VydmVySWRzLmxlbmd0aF07Ci0JCQlpZiAoc2VydmVySWRzICE9IG51bGwpIHsKLQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHNlcnZlcklkcy5sZW5ndGg7IGkrKykgewotCQkJCQlTdHJpbmcgc2VydmVyID0gU2VydmVyVXRpbHMuZ2V0SW5zdGFuY2UoKS5nZXRTZXJ2ZXJMYWJlbEZvcklkKHNlcnZlcklkc1tpXSk7Ci0JCQkJCWlmIChzZXJ2ZXIgIT0gbnVsbCkgewotCQkJCQkJUnVudGltZVNlcnZlclNlbGVjdGlvbkRpYWxvZy50aGlzLnNlcnZlckxhYmVsc18ucHV0KHNlcnZlciwgc2VydmVySWRzW2ldKTsKLQkJCQkJCUlTZXJ2ZXJUeXBlIHNlcnZlclR5cGUgPSBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXJUeXBlKHNlcnZlcklkc1tpXSk7Ci0JCQkJCQlJUnVudGltZVR5cGUgcnVudGltZVR5cGUgPSBzZXJ2ZXJUeXBlLmdldFJ1bnRpbWVUeXBlKCk7Ci0JCQkJCQlpZiAoIWNhdGVnb3JpZXNfLmNvbnRhaW5zS2V5KHNlcnZlclR5cGUpICYmIHJ1bnRpbWVUeXBlICE9IG51bGwpIHsKLQkJCQkJCQljYXRlZ29yaWVzXy5wdXQoc2VydmVyVHlwZSwgcnVudGltZVR5cGUpOwotCQkJCQkJCWlmIChjYXRlZ29yeVRyZWVJdGVtLmdldChydW50aW1lVHlwZSkgPT0gbnVsbCkgewotCQkJCQkJCQlTdHJpbmcgY2F0ZWdvcnlUZXh0ID0gcnVudGltZVR5cGUuZ2V0TmFtZSgpOwotCQkJCQkJCQlJbWFnZSBjYXRlZ29yeUltYWdlID0gbGFiZWxQcm92aWRlcl8uZ2V0SW1hZ2UocnVudGltZVR5cGUpOwotCQkJCQkJCQlwYXJlbnRbaV0gPSBuZXcgVHJlZUl0ZW0oc2VydmVyVHlwZXNUcmVlWzBdLCBTV1QuTk9ORSk7Ci0JCQkJCQkJCXBhcmVudFtpXS5zZXRUZXh0KGNhdGVnb3J5VGV4dCk7Ci0JCQkJCQkJCXBhcmVudFtpXS5zZXRJbWFnZShjYXRlZ29yeUltYWdlKTsKLQkJCQkJCQkJY2F0ZWdvcnlUcmVlSXRlbS5wdXQocnVudGltZVR5cGUsIHBhcmVudFtpXSk7Ci0JCQkJCQkJfQotCQkJCQkJCWVsc2UgewotCQkJCQkJCQlwYXJlbnRbaV0gPSAoVHJlZUl0ZW0pIGNhdGVnb3J5VHJlZUl0ZW0uZ2V0KHJ1bnRpbWVUeXBlKTsKLQkJCQkJCQl9Ci0JCQkJCQkJU3RyaW5nIGZhY3RvcnlUZXh0ID0gc2VydmVyVHlwZS5nZXROYW1lKCk7Ci0JCQkJCQkJSW1hZ2UgZmFjdG9yeUltYWdlID0gbGFiZWxQcm92aWRlcl8uZ2V0SW1hZ2Uoc2VydmVyVHlwZSk7Ci0JCQkJCQkJaXRlbVtpXSA9IG5ldyBUcmVlSXRlbShwYXJlbnRbaV0sIFNXVC5OT05FKTsKLQkJCQkJCQlpdGVtW2ldLnNldFRleHQoZmFjdG9yeVRleHQpOwotCQkJCQkJCWl0ZW1baV0uc2V0SW1hZ2UoZmFjdG9yeUltYWdlKTsKLQkJCQkJCQlpdGVtW2ldLnNldERhdGEoc2VydmVyVHlwZSk7Ci0JCQkJCQkJaWYgKHNlcnZlcklkc1tpXS5lcXVhbHMoZGVmYXVsdFNlcnZlcl8pICYmICFleGlzdGluZ1NlcnZlcikgewotCQkJCQkJCQlzZXJ2ZXJMaXN0LnNldFNlbGVjdGlvbihuZXcgVHJlZUl0ZW1bXSB7IGl0ZW1baV19KTsKLQkJCQkJCQkJc2VsZWN0ZWRTZXJ2ZXJfID0gbnVsbDsKLQkJCQkJCQkJc2VsZWN0ZWRTZXJ2ZXJMYWJlbF8gPSBmYWN0b3J5VGV4dDsKLQkJCQkJCQkJc2VsZWN0ZWRTZXJ2ZXJGYWN0b3J5SURfID0gKFN0cmluZykgc2VydmVyTGFiZWxzXy5nZXQoc2VsZWN0ZWRTZXJ2ZXJMYWJlbF8pOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQkJCX0KLQotCQl9Ci0KLQkJLyoqCi0JCSAqIEdldCBhbGwgc2VydmVycyBpbiB0aGUgd29ya3NwYWNlCi0JCSAqIAotCQkgKiBAcmV0dXJuIFN0cmluZ1tdIG9mIGV4aXN0aW5nIHNlcnZlciBuYW1lcwotCQkgKi8KLQkJcHJpdmF0ZSBTdHJpbmdbXSBnZXRBbGxFeGlzdGluZ1NlcnZlcnMoKSB7Ci0JCQlWZWN0b3I8U3RyaW5nPiBzZXJ2ZXJJZHMgPSBuZXcgVmVjdG9yPFN0cmluZz4oKTsKLQkJCXsKLQkJCQlJU2VydmVyW10gc2VydmVycyA9IFNlcnZlckNvcmUuZ2V0U2VydmVycygpOwotCQkJCWlmIChzZXJ2ZXJzICE9IG51bGwgJiYgc2VydmVycy5sZW5ndGghPTApIHsKLQkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7Ci0JCQkJCQlJU2VydmVyIHNlcnZlciA9IChJU2VydmVyKSBzZXJ2ZXJzW2ldOwotCQkJCQkJc2VydmVySWRzLmFkZChzZXJ2ZXIuZ2V0TmFtZSgpKTsKLQkJCQkJCWV4aXN0aW5nU2VydmVyc1RhYmxlXy5wdXQoc2VydmVyLmdldE5hbWUoKSwgc2VydmVyKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJCXJldHVybiAoU3RyaW5nW10pIHNlcnZlcklkcy50b0FycmF5KG5ldyBTdHJpbmdbc2VydmVySWRzLnNpemUoKV0pOwotCQl9Ci0KLQkJLyoqCi0JCSAqIEdldCBhbGwgc2VydmVyIHR5cGVzIGF2YWlsYWJsZSBmb3IgY3JlYXRpb24KLQkJICogCi0JCSAqIEByZXR1cm4gU3RyaW5nW10gb2Ygc2VydmVyIG5hbWVzCi0JCSAqLwotCQlwcml2YXRlIFN0cmluZ1tdIGdldEFsbFNlcnZlclR5cGVzKCkgewotCQkJVmVjdG9yPFN0cmluZz5zZXJ2ZXJUeXBlc18gPSBuZXcgVmVjdG9yPFN0cmluZz4oKTsKLQkJCUlTZXJ2ZXJUeXBlW10gZGVmYXVsdFNlcnZlcnNMaXN0ID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJUeXBlcygpOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBkZWZhdWx0U2VydmVyc0xpc3QubGVuZ3RoOyBpKyspIHsKLQkJCQlJU2VydmVyVHlwZSBzZXJ2ZXJUeXBlID0gKElTZXJ2ZXJUeXBlKSBkZWZhdWx0U2VydmVyc0xpc3RbaV07Ci0JCQkJc2VydmVyVHlwZXNfLmFkZChzZXJ2ZXJUeXBlLmdldElkKCkpOwotCQkJfQotCQkJcmV0dXJuIChTdHJpbmdbXSkgc2VydmVyVHlwZXNfLnRvQXJyYXkobmV3IFN0cmluZ1tzZXJ2ZXJUeXBlc18uc2l6ZSgpXSk7Ci0JCX0KLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9UeXBlU2VsZWN0aW9uRmlsdGVyMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvVHlwZVNlbGVjdGlvbkZpbHRlcjIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAxNTE5MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9UeXBlU2VsZWN0aW9uRmlsdGVyMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjE3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDYwNiAgIDEwNTA0NSBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24gICAgICAgICAgCi0gKiAyMDA3MDMyOCAgIDE3MjMzOSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODA1MDEgICAyMjk3MjggbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIHVwcGVyY2FzZSAuV1NETCBjYW5ub3QgYmUgZm91bmQgYnkgdGhlIFdlYiBTZXJ2aWNlIENsaWVudCB3aXphcmQKLSAqIDIwMDgwNTIzICAgMjMzNzY0IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBUb3AgZG93biBFSkIgcHJlZmVyZW5jZSBub3QgcmVzcGVjdGVkCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JQ29udGFpbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5CZWFuTGluazsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuU2VydmljZUltcGxCZWFuOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlU2NlbmFyaW87Ci0KLQotcHVibGljIGNsYXNzIFR5cGVTZWxlY3Rpb25GaWx0ZXIyCi17Ci0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRXZWJTZXJ2aWNlVHlwZUJ5SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uLCBBcnJheUxpc3Qgd2ViU2VydmljZVR5cGVMaXN0KQotICB7Ci0gICAgICAgIAotICAgIEFycmF5TGlzdCBzdXBwb3J0ZWRUeXBlcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBpZiAoaW5pdGlhbFNlbGVjdGlvbiAhPSBudWxsICYmIGluaXRpYWxTZWxlY3Rpb24uc2l6ZSgpID09IDEpCi0gICAgewotICAgICAgCi0gICAgICAvLyBDaGVjayBmb3IgbnVsbCBpbml0aWFsIHNlbGVjdGlvbgotICAgICAgT2JqZWN0IGluaXRpYWxPYmplY3QgPSBpbml0aWFsU2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgaWYgKGluaXRpYWxPYmplY3QgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICB9Ci0gICAgICAvLyBNYXRjaCB1cCByZXNvdXJjZSB0eXBlIG1ldGFkYXRhIHdpdGggaW5pdGlhbCBzZWxlY3Rpb24KLSAgICAgIEl0ZXJhdG9yIGl0ZXIgPSB3ZWJTZXJ2aWNlVHlwZUxpc3QuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHdzdCA9IChTdHJpbmcpaXRlci5uZXh0KCk7Ci0gICAgICAgIFN0cmluZyBzY2VuYXJpbyA9IHdzdC5zdWJzdHJpbmcoMCx3c3QuaW5kZXhPZigiLyIpKTsKLSAgICAgICAgU3RyaW5nIGltcGxJZCA9IHdzdC5zdWJzdHJpbmcod3N0LmluZGV4T2YoIi8iKSsxKTsgICAgICAgIAotICAgICAgICAvL0lXZWJTZXJ2aWNlVHlwZSB3c3QgPSAoSVdlYlNlcnZpY2VUeXBlKWl0ZXIubmV4dCgpOwotICAgICAgICAvL1N0cmluZyB0eXBlSWQgPSAoU3RyaW5nKXdzdC5nZXRJZCgpOwotICAgICAgICBpZiAoc2NlbmFyaW8uZXF1YWxzKFN0cmluZy52YWx1ZU9mKFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01VUCkpICYmICFzdXBwb3J0ZWRUeXBlcy5jb250YWlucyh3c3QpKQotICAgICAgICB7Ci0KLSAgICAgICAgICAKLSAgICAgICAgICBXZWJTZXJ2aWNlSW1wbCB3c2ltcGwgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRXZWJTZXJ2aWNlSW1wbEJ5SWQoaW1wbElkKTsKLSAgICAgICAgICBTdHJpbmdbXSByZXNvdXJjZVR5cGVzID0gd3NpbXBsLmdldFJlc291cmNlVHlwZU1ldGFkYXRhKCk7Ci0gICAgICAgICAgZm9yIChpbnQgaT0wOyBpPHJlc291cmNlVHlwZXMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKHJlc291cmNlVHlwZXNbaV0hPW51bGwpCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgaWYgKChpbml0aWFsT2JqZWN0LmdldENsYXNzKCkuZ2V0TmFtZSgpKS5lbmRzV2l0aChyZXNvdXJjZVR5cGVzW2ldKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gbnVsbDsKLSAgICAgICAgICAgICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBudWxsOwotCi0gICAgICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgcmVzb3VyY2UgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlRnJvbVNlbGVjdGlvbihpbml0aWFsT2JqZWN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICByZXNvdXJjZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHJlc291cmNlIGluc3RhbmNlb2YgSUNvbnRhaW5lcikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBuYW1lID0gaW5pdGlhbE9iamVjdC5nZXRDbGFzcygpLmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiggcmVzb3VyY2UgIT0gbnVsbCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgbmFtZSA9IHJlc291cmNlLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIG5hbWUgPSBpbml0aWFsT2JqZWN0LmdldENsYXNzKCkuZ2V0TmFtZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBTdHJpbmdbXSBleHRlbnNpb25zID0gd3NpbXBsLmdldEV4dGVuc2lvbk1ldGFkYXRhKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGFjY2VwdHNOYW1lKG5hbWUsIGV4dGVuc2lvbnMpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFkZCh3c3QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgICAgLy9UT0RPOiBCdWcgMTc5NzUxIC0gTmVlZCB0byBtYWtlIGNoZWNraW5nIGZvciB0eXBlcyByZWNvZ25pemVkIGFzIGJvdHRvbS11cCB0byBiZSBtb3JlIGV4dGVuc2libGUgICAgICAgICAKLSAgICAgICAgICAKLSAgICAgICAgICBpZiAoc3VwcG9ydGVkVHlwZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIAkgIGlmIChpbml0aWFsT2JqZWN0IGluc3RhbmNlb2YgQmVhbkxpbmsgfHwgaW5pdGlhbE9iamVjdCBpbnN0YW5jZW9mIFNlcnZpY2VJbXBsQmVhbiB8fCBpbml0aWFsT2JqZWN0IGluc3RhbmNlb2YgSVR5cGUpIHsKLSAgICAgICAgCQkgIHN1cHBvcnRlZFR5cGVzLmFkZCh3c3QpOwotICAgICAgICAJICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIC8vSWYgbm8gd3NJbXBscyBoYXZlIGFjY2VwdGVkIHRoaXMgc2VsZWN0aW9uLCBjaGVjayBpZiB0aGlzIGlzIFdTREwuIElmIGl0IGlzLAotICAgICAgLy9hZGQgdGhlIHRvcC1kb3duIEphdmEgc2VydmljZSB0eXBlIHRvIHRoZSBsaXN0LgotICAgICAgaWYgKHN1cHBvcnRlZFR5cGVzLmlzRW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nW10gcmVzb3VyY2VUeXBlcyA9IHsiRmlsZSIsICJJUmVzb3VyY2UiLCAiU3RyaW5nIiwgIlNlcnZpY2VJbXBsIiwgIlNlcnZpY2VSZWZJbXBsIiwgIldTRExSZXNvdXJjZUltcGwifTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPHJlc291cmNlVHlwZXMubGVuZ3RoOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAocmVzb3VyY2VUeXBlc1tpXSE9bnVsbCkKLSAgICAgICAgICB7ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICgoaW5pdGlhbE9iamVjdC5nZXRDbGFzcygpLmdldE5hbWUoKSkuZW5kc1dpdGgocmVzb3VyY2VUeXBlc1tpXSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gbnVsbDsKLSAgICAgICAgICAgICAgSVJlc291cmNlIHJlc291cmNlID0gbnVsbDsKLQotICAgICAgICAgICAgICB0cnkKLSAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJlc291cmNlID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZUZyb21TZWxlY3Rpb24oaW5pdGlhbE9iamVjdCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc291cmNlID0gbnVsbDsKLSAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgIGlmIChyZXNvdXJjZSBpbnN0YW5jZW9mIElDb250YWluZXIpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBuYW1lID0gaW5pdGlhbE9iamVjdC5nZXRDbGFzcygpLmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIGlmKCByZXNvdXJjZSAhPSBudWxsICkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG5hbWUgPSByZXNvdXJjZS5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZSBpZiAoaW5pdGlhbE9iamVjdCBpbnN0YW5jZW9mIFN0cmluZykKLSAgICAgICAgICAgICAgeyAvL3RoZSBpbml0aWFsT2JqZWN0IGNvdWxkIGJlIGEgcGF0aCBuYW1lIHRoYXQgaXMgYSBzdHJpbmcKLSAgICAgICAgICAgICAgICAvL2J1ZyAxMDUwNDUKLSAgICAgICAgICAgIAluYW1lID0gKFN0cmluZylpbml0aWFsT2JqZWN0OwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG5hbWUgPSBpbml0aWFsT2JqZWN0LmdldENsYXNzKCkuZ2V0TmFtZSgpOwotICAgICAgICAgICAgICB9ICAgIAotICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgU3RyaW5nW10gZXh0ZW5zaW9ucyA9IHsiLndzZGwiLCAiLndzaWwiLCAiLmh0bWwiLCAiLlNlcnZpY2VJbXBsIiwgIi5TZXJ2aWNlUmVmSW1wbCIsICIuV1NETFJlc291cmNlSW1wbCJ9OwotICAgICAgICAgICAgICBpZiAoYWNjZXB0c05hbWUobmFtZSwgZXh0ZW5zaW9ucykpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgZW50cnlidWZmID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICAgICAgICAgIGVudHJ5YnVmZi5hcHBlbmQoU3RyaW5nLnZhbHVlT2YoV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV04pKTsKLSAgICAgICAgICAgICAgICBlbnRyeWJ1ZmYuYXBwZW5kKCIvIik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYWRkKGVudHJ5YnVmZi50b1N0cmluZygpICsgIm9yZy5lY2xpcHNlLmpzdC53cy53c0ltcGwuamF2YSIpOwotICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFkZChlbnRyeWJ1ZmYudG9TdHJpbmcoKSArICJvcmcuZWNsaXBzZS5qc3Qud3Mud3NJbXBsLmVqYiIpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0gICAgICAKLSAgICAgIH0KLSAgICAgIAotICAgIH0gICAgCi0gIAotCi0gICAgCi0gICAgaWYgKHN1cHBvcnRlZFR5cGVzLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICAvL0l0J3Mgbm90IGEgcmVnaXN0ZXJlZCBpbXBsZW1lbnRhdGlvbiBhbmQgaXRzIG5vdCBXU0RMIHNvIHJldHVybiBudWxsOwotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXR1cm4gKFN0cmluZ1tdKXN1cHBvcnRlZFR5cGVzLnRvQXJyYXkobmV3IFN0cmluZ1swXSk7Ci0gICAgfQotICB9Ci0gIC8vCi0gIC8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gbmFtZSBpcyBhY2NlcHRhYmxlIGJhc2VkIHVwb24gaXRzIGV4dGVuc2lvbgotICAvLwotICBwcml2YXRlIGJvb2xlYW4gYWNjZXB0c05hbWUgKCBTdHJpbmcgbmFtZSwgU3RyaW5nW10gZXh0ZW5zaW9ucykKLSAgewotICAgIC8vUmV0dXJuIHRydWUgaWYgImFsbCIgZXh0ZW5zaW9ucyBhcmUgc3VwcG9ydGVkLgotCi0gICAgaWYgKGV4dGVuc2lvbnNbMF0hPW51bGwpCi0gICAgewotICAgICAgaWYgKGV4dGVuc2lvbnNbMF0uZXF1YWxzKCJhbGwiKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChpbnQgaT0wOyBpPGV4dGVuc2lvbnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgaWYgKGV4dGVuc2lvbnNbaV0hPW51bGwpCi0gICAgICB7Ci0gICAgICAgIGlmIChuYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoZXh0ZW5zaW9uc1tpXS50b0xvd2VyQ2FzZSgpKSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvVHlwZVNlbGVjdGlvbk1ldGFkYXRhLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9UeXBlU2VsZWN0aW9uTWV0YWRhdGEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI3NWFjYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC9UeXBlU2VsZWN0aW9uTWV0YWRhdGEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIxNiAgIDEyNzEzOCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkOwotCi1pbXBvcnQgY29tLmlibS5pY3UudXRpbC5TdHJpbmdUb2tlbml6ZXI7Ci0KLQotICAvLwotICAvLyBUaGlzIGNsYXNzIGhvbGRzIHRoZSBzZXQgb2YgZGlzdGluZ3Vpc2hpbmcgZmFjdG9ycyBpbiBkZXRlcm1pbmluZyAKLSAgLy8gdGhlIGRlZmF1bHQgV2ViIHNlcnZpY2UgdHlwZS4gIFRoZSBkZWZhdWx0IFdlYiBTZXJ2aWNlIHR5cGUgd2lsbCBiZSBkZXRlcm1pbmVkCi0gIC8vIGJ5IHBhdHRlcm4gbWF0Y2hpbmcgdGhlIGluaXRpYWwgc2VsZWN0aW9uIHdpdGggdGhlIHN1cHBvcnRlZCBleHRlbnNpb24gCi0gIC8vIGFuZCB0aGUgcmVzb3VyY2UgdHlwZSBtZXRhZGF0YSBzcGVjaWZpZWQgaW4gdGhlIG1hbmlmZXN0IGZpbGUuCi0gIC8vCi0gIHB1YmxpYyBjbGFzcyBUeXBlU2VsZWN0aW9uTWV0YWRhdGEKLSAgewotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAgIHB1YmxpYyBTdHJpbmdbXSBleHRlbnNpb25NZXRhOwotICAgIHB1YmxpYyBTdHJpbmdbXSByZXNvdXJjZVR5cGVNZXRhOwotCi0gICAgcHVibGljIFR5cGVTZWxlY3Rpb25NZXRhZGF0YShTdHJpbmcgZXh0ZW5zaW9uTUQsIFN0cmluZyByZXNvdXJjZVR5cGVNRCkKLSAgICB7Ci0gICAgICBzZXRFeHRlbnNpb25NZXRhZGF0YShleHRlbnNpb25NRCk7Ci0gICAgICBzZXRSZXNvdXJjZVR5cGVNZXRhZGF0YShyZXNvdXJjZVR5cGVNRCk7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIHNldEV4dGVuc2lvbk1ldGFkYXRhKFN0cmluZyBleHRlbnNpb25NZXRhZGF0YSkKLSAgICB7Ci0gICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGV4dGVuc2lvbk1ldGFkYXRhKTsKLSAgICAgIGV4dGVuc2lvbk1ldGEgPSBuZXcgU3RyaW5nW3N0LmNvdW50VG9rZW5zKCldOwotICAgICAgaW50IGk9MDsKLSAgICAgIHdoaWxlIChzdC5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGV4dGVuID0gKFN0cmluZylzdC5uZXh0VG9rZW4oKTsKLSAgICAgICAgaWYgKGV4dGVuIT1udWxsKQotICAgICAgICB7Ci0gICAgICAgICAgZXh0ZW5zaW9uTWV0YVtpXT1leHRlbjsKLSAgICAgICAgfQotICAgICAgICBpKys7Ci0gICAgICB9Ci0KLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nW10gZ2V0RXh0ZW5zaW9uTWV0YWRhdGEoKQotICAgIHsKLSAgICAgIHJldHVybiBleHRlbnNpb25NZXRhOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZVR5cGVNZXRhZGF0YShTdHJpbmcgcmVzb3VyY2VUeXBlTWV0YWRhdGEpCi0gICAgewotICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihyZXNvdXJjZVR5cGVNZXRhZGF0YSk7Ci0gICAgICByZXNvdXJjZVR5cGVNZXRhID0gbmV3IFN0cmluZ1tzdC5jb3VudFRva2VucygpXTsKLSAgICAgIGludCBpPTA7Ci0gICAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyByZXNvdXJjZVR5cGUgPSAoU3RyaW5nKXN0Lm5leHRUb2tlbigpOwotICAgICAgICBpZiAocmVzb3VyY2VUeXBlIT1udWxsKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzb3VyY2VUeXBlTWV0YVtpXT1yZXNvdXJjZVR5cGU7Ci0gICAgICAgIH0KLSAgICAgICAgaSsrOwotICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmdbXSBnZXRSZXNvdXJjZVR5cGVNZXRhZGF0YSgpCi0gICAgewotICAgICAgcmV0dXJuIHJlc291cmNlVHlwZU1ldGE7Ci0gICAgfQotCi0gIH0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvV2ViU2VydmljZUluZm8uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2l6YXJkL1dlYlNlcnZpY2VJbmZvLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0YmM1NTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvV2ViU2VydmljZUluZm8uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkOwotCi0KLS8qKgotKiBUaGlzIHR5cGUgaXMgdXNlZCB0byBob2xkIHVzZXIgb3IgY2FsY3VsYXRlZCAKLSogZGF0YSB0byBiZSB1c2UgYnkgZmluc2loIHRhc2tzCi0qLwotcHVibGljIGludGVyZmFjZSBXZWJTZXJ2aWNlSW5mbwotewotCi19Ci0KLQotCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2l6YXJkL3VkZGkvUHVibGljVURESVJlZ2lzdHJ5TlRUQ29tbS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvdWRkaS9QdWJsaWNVRERJUmVnaXN0cnlOVFRDb21tLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5M2VmYmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvdWRkaS9QdWJsaWNVRERJUmVnaXN0cnlOVFRDb21tLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLnVkZGk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyLlBsdWdpbk1lc3NhZ2VzOwotCi1wdWJsaWMgY2xhc3MgUHVibGljVURESVJlZ2lzdHJ5TlRUQ29tbSBpbXBsZW1lbnRzIFB1YmxpY1VERElSZWdpc3RyeVR5cGUKLXsKLQotICAgIC8vIENvcHlyaWdodAotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAyLiI7Ci0KLSAgICBwdWJsaWMgUHVibGljVURESVJlZ2lzdHJ5TlRUQ29tbSgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiBQbHVnaW5NZXNzYWdlcy5QVUJMSUNVRERJUkVHSVNUUllUWVBFX05BTUVfTlRUQ09NTTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldElucXVpcnlVUkwoKSB7Ci0gICAgICAgIHJldHVybiAiaHR0cDovL3d3dy51ZGRpLm5lLmpwL3Vici9pbnF1aXJ5YXBpIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFB1Ymxpc2hVUkwoKSB7Ci0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudWRkaS5uZS5qcC91YnIvcHVibGlzaGFwaSI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRSZWdpc3RyYXRpb25VUkwoKSB7Ci0gICAgICAgIHJldHVybiAiaHR0cDovL3d3dy5udHQuY29tL3VkZGkvIjsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2l6YXJkL3VkZGkvUHVibGljVURESVJlZ2lzdHJ5U0FQLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC91ZGRpL1B1YmxpY1VERElSZWdpc3RyeVNBUC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzJmNGZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2l6YXJkL3VkZGkvUHVibGljVURESVJlZ2lzdHJ5U0FQLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLnVkZGk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyLlBsdWdpbk1lc3NhZ2VzOwotCi1wdWJsaWMgY2xhc3MgUHVibGljVURESVJlZ2lzdHJ5U0FQIGltcGxlbWVudHMgUHVibGljVURESVJlZ2lzdHJ5VHlwZQotewotCi0gICAgLy8gQ29weXJpZ2h0Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDIuIjsKLQotICAgIHB1YmxpYyBQdWJsaWNVRERJUmVnaXN0cnlTQVAoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gUGx1Z2luTWVzc2FnZXMuUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX1NBUDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldElucXVpcnlVUkwoKSB7Ci0gICAgICAgIHJldHVybiAiaHR0cDovL3VkZGkuc2FwLmNvbS9VRERJL2FwaS9pbnF1aXJ5LyI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRQdWJsaXNoVVJMKCkgewotICAgICAgICByZXR1cm4gImh0dHBzOi8vdWRkaS5zYXAuY29tL1VEREkvYXBpL3B1Ymxpc2gvIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFJlZ2lzdHJhdGlvblVSTCgpIHsKLSAgICAgICAgcmV0dXJuICJodHRwOi8vdWRkaS5zYXAuY29tLyI7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC91ZGRpL1B1YmxpY1VERElSZWdpc3RyeVNBUFRlc3QuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2l6YXJkL3VkZGkvUHVibGljVURESVJlZ2lzdHJ5U0FQVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjI2N2Q2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2l6YXJkL3VkZGkvUHVibGljVURESVJlZ2lzdHJ5U0FQVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC51ZGRpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci5QbHVnaW5NZXNzYWdlczsKLQotcHVibGljIGNsYXNzIFB1YmxpY1VERElSZWdpc3RyeVNBUFRlc3QgaW1wbGVtZW50cyBQdWJsaWNVRERJUmVnaXN0cnlUeXBlCi17Ci0KLSAgICAvLyBDb3B5cmlnaHQKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMi4iOwotCi0gICAgcHVibGljIFB1YmxpY1VERElSZWdpc3RyeVNBUFRlc3QoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gUGx1Z2luTWVzc2FnZXMuUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX1NBUF9URVNUOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0SW5xdWlyeVVSTCgpIHsKLSAgICAgICAgcmV0dXJuICJodHRwOi8vdWRkaXRlc3Quc2FwLmNvbS9VRERJL2FwaS9pbnF1aXJ5LyI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRQdWJsaXNoVVJMKCkgewotICAgICAgICByZXR1cm4gImh0dHBzOi8vdWRkaXRlc3Quc2FwLmNvbS9VRERJL2FwaS9wdWJsaXNoLyI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRSZWdpc3RyYXRpb25VUkwoKSB7Ci0gICAgICAgIHJldHVybiAiaHR0cDovL3VkZGl0ZXN0LnNhcC5jb20vIjsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd2l6YXJkL3VkZGkvUHVibGljVURESVJlZ2lzdHJ5VHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvdWRkaS9QdWJsaWNVRERJUmVnaXN0cnlUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZDllNjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvdWRkaS9QdWJsaWNVRERJUmVnaXN0cnlUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC51ZGRpOwotCi1wdWJsaWMgaW50ZXJmYWNlIFB1YmxpY1VERElSZWdpc3RyeVR5cGUKLXsKLQotICAgIC8vIENvcHlyaWdodAotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAyLiI7Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKTsKLSAgICBwdWJsaWMgU3RyaW5nIGdldElucXVpcnlVUkwoKTsKLSAgICBwdWJsaWMgU3RyaW5nIGdldFB1Ymxpc2hVUkwoKTsKLSAgICBwdWJsaWMgU3RyaW5nIGdldFJlZ2lzdHJhdGlvblVSTCgpOwotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC91ZGRpL1B1YmxpY1VERElSZWdpc3RyeVhNZXRob2RzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dpemFyZC91ZGRpL1B1YmxpY1VERElSZWdpc3RyeVhNZXRob2RzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzYmFjZjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93aXphcmQvdWRkaS9QdWJsaWNVRERJUmVnaXN0cnlYTWV0aG9kcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC51ZGRpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci5QbHVnaW5NZXNzYWdlczsKLQotcHVibGljIGNsYXNzIFB1YmxpY1VERElSZWdpc3RyeVhNZXRob2RzIGltcGxlbWVudHMgUHVibGljVURESVJlZ2lzdHJ5VHlwZQotewotCi0gICAgLy8gQ29weXJpZ2h0Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDIuIjsKLQotICAgIHB1YmxpYyBQdWJsaWNVRERJUmVnaXN0cnlYTWV0aG9kcygpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiBQbHVnaW5NZXNzYWdlcy5QVUJMSUNVRERJUkVHSVNUUllUWVBFX05BTUVfWE1FVEhPRFM7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRJbnF1aXJ5VVJMKCkgewotICAgICAgICAvL3JldHVybiAiaHR0cDovL3VkZGkueG1ldGhvZHMubmV0L2lucXVpcmUiOwotICAgICAgICByZXR1cm4gImh0dHA6Ly91ZGRpLnhtZXRob2RzLm5ldC9pbnF1aXJlMiI7Ci0gICAgfQotCi0gICAgLy8gUmVhZC1vbmx5IHJlZ2lzdHJ5LiBUaGUgcHVibGlzaCBhbmQgcmVnaXN0cmF0aW9uIFVSTHMgZG9uJ3QgZXhpc3QuCi0gICAgcHVibGljIFN0cmluZyBnZXRQdWJsaXNoVVJMKCkgewotICAgICAgICByZXR1cm4gImh0dHBzOi8vdWRkaS54bWV0aG9kcy5uZXQvcHVibGlzaDIiOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0UmVnaXN0cmF0aW9uVVJMKCkgewotICAgICAgICByZXR1cm4gImh0dHA6Ly93d3cueG1ldGhvZHMubmV0L3ZlMi9SZWdpc3Rlci5wbz9ldmVudD1yZWdpc3Rlck9yZyI7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzaWwvQWRkV1NETFRvV1NJTFdyYXBwZXJDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzaWwvQWRkV1NETFRvV1NJTFdyYXBwZXJDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhNTc4NzguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c2lsL0FkZFdTRExUb1dTSUxXcmFwcGVyQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzaWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NpbC5BZGRXU0RMVG9XU0lMQ29tbWFuZDsKLQotCi0KLXB1YmxpYyBjbGFzcyBBZGRXU0RMVG9XU0lMV3JhcHBlckNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIEFkZFdTRExUb1dTSUxDb21tYW5kIGNvbW1hbmQ7Ci0gIHByaXZhdGUgQXJndW1lbnRzIGFyZ3M7Ci0KLSAgcHVibGljIEFkZFdTRExUb1dTSUxXcmFwcGVyQ29tbWFuZCgpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgCi0gICAgaWYgKGNvbW1hbmQgPT0gbnVsbCkKLSAgICAgIGNvbW1hbmQgPSBuZXcgQWRkV1NETFRvV1NJTENvbW1hbmQoKTsKLSAgICBpZiAoIWFyZ3MuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIGNvbW1hbmQuc2V0QXJndW1lbnRzKGFyZ3MuZ2V0U3RyaW5nQXJndW1lbnRzKCkpOwotICAgICAgY29tbWFuZC5zZXRXV1dBdXRoZW50aWNhdGlvbkhhbmRsZXIobmV3IERpYWxvZ1dXV0F1dGhlbnRpY2F0aW9uKFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93KCkuZ2V0U2hlbGwoKSkpOwotICAgICAgY29tbWFuZC5zZXRFbnZpcm9ubWVudCggZW52ICk7Ci0gICAgICByZXR1cm4gY29tbWFuZC5leGVjdXRlKCBudWxsLCBudWxsKTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSBhcmdzIFRoZSBhcmdzIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEFyZ3MoQXJndW1lbnRzIGFyZ3MpCi0gIHsKLSAgICB0aGlzLmFyZ3MgPSBhcmdzOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBjb21tYW5kIFRoZSBjb21tYW5kIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENvbW1hbmQoQWRkV1NETFRvV1NJTENvbW1hbmQgY29tbWFuZCkKLSAgewotICAgIHRoaXMuY29tbWFuZCA9IGNvbW1hbmQ7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c2lsL0FyZ3VtZW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c2lsL0FyZ3VtZW50cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTE3N2M1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NpbC9Bcmd1bWVudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NpbDsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLXB1YmxpYyBjbGFzcyBBcmd1bWVudHMKLXsKLSAgcHJpdmF0ZSBWZWN0b3IgYXJnc187Ci0KLSAgcHVibGljIEFyZ3VtZW50cygpCi0gIHsKLSAgICBhcmdzXyA9IG5ldyBWZWN0b3IoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGFkZChTdHJpbmcga2V5LCBPYmplY3QgdmFsdWUpCi0gIHsKLSAgICBhcmdzXy5hZGQoa2V5KTsKLSAgICBpZiAodmFsdWUgIT0gbnVsbCkKLSAgICAgIGFyZ3NfLmFkZCh2YWx1ZSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmUoU3RyaW5nIGtleSkKLSAgewotICAgIGludCBpbmRleCA9IGFyZ3NfLmluZGV4T2Yoa2V5KTsKLSAgICBpZiAoaW5kZXggPj0gMCkKLSAgICB7Ci0gICAgICBhcmdzXy5yZW1vdmUoaW5kZXgpOwotICAgICAgYXJnc18ucmVtb3ZlKGluZGV4KzEpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBPYmplY3QgZ2V0KFN0cmluZyBrZXkpCi0gIHsKLSAgICBpbnQgaW5kZXggPSBhcmdzXy5pbmRleE9mKGtleSk7Ci0gICAgaWYgKGluZGV4ID49IDApCi0gICAgICByZXR1cm4gYXJnc18uZ2V0KGluZGV4KzEpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIHZvaWQgY2xlYXIoKQotICB7Ci0gICAgYXJnc18uY2xlYXIoKTsKLSAgfQotCi0gIHB1YmxpYyBPYmplY3RbXSBnZXRBcmd1bWVudHMoKQotICB7Ci0gICAgT2JqZWN0W10gYXJncyA9IG5ldyBPYmplY3RbYXJnc18uc2l6ZSgpXTsKLSAgICBhcmdzXy5jb3B5SW50byhhcmdzKTsKLSAgICByZXR1cm4gYXJnczsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRTdHJpbmdBcmd1bWVudHMoKQotICB7Ci0gICAgU3RyaW5nW10gYXJncyA9IG5ldyBTdHJpbmdbYXJnc18uc2l6ZSgpXTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspCi0gICAgICBhcmdzW2ldID0gYXJnc18uZ2V0KGkpLnRvU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGFyZ3M7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCkKLSAgewotICAgIHJldHVybiBhcmdzXy5pc0VtcHR5KCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NpbC9EaWFsb2dXV1dBdXRoZW50aWNhdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c2lsL0RpYWxvZ1dXV0F1dGhlbnRpY2F0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMDc1MGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c2lsL0RpYWxvZ1dXV0F1dGhlbnRpY2F0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzaWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XV1dBdXRoZW50aWNhdGlvbkhhbmRsZXI7Ci0KLQotcHVibGljIGNsYXNzIERpYWxvZ1dXV0F1dGhlbnRpY2F0aW9uIGV4dGVuZHMgRGlhbG9nIGltcGxlbWVudHMgV1dXQXV0aGVudGljYXRpb25IYW5kbGVyCi17Ci0KLSAgLypDT05URVhUX0lEIERCQVMwMDAxIGZvciB0aGUgSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvbiB1c2VyIG5hbWUqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX0RCQVNfVVNFUk5BTUUgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5JRCArICIuREJBUzAwMDEiOwotCi0gIC8qQ09OVEVYVF9JRCBEQkFTMDAwMiBmb3IgdGhlIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb24gcGFzc3dvcmQqLwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX0RCQVNfUEFTU1dPUkQgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5JRCArICIuREJBUzAwMDIiOwotCi0gIHByaXZhdGUgU3RyaW5nIHVzZXJuYW1lU3RyaW5nXzsKLSAgcHJpdmF0ZSBTdHJpbmcgcGFzc3dvcmRTdHJpbmdfOwotCi0gIHByaXZhdGUgVGV4dCB1c2VybmFtZV87Ci0gIHByaXZhdGUgVGV4dCBwYXNzd29yZF87Ci0KLSAgcHJpdmF0ZSBXV1dBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiB3d3dhZV87Ci0KLSAgcHVibGljIERpYWxvZ1dXV0F1dGhlbnRpY2F0aW9uKFNoZWxsIHNoZWxsKQotICB7Ci0gICAgc3VwZXIoc2hlbGwpOwotICAgIHVzZXJuYW1lU3RyaW5nXyA9IG51bGw7Ci0gICAgcGFzc3dvcmRTdHJpbmdfID0gbnVsbDsKLSAgICB3d3dhZV8gPSBudWxsOwotICB9Ci0KLSAgLyoqCi0gICogQ2FsbGVkIHdoZW4gdGhlIENhbmNlbCBidXR0b24gaXMgcHJlc3NlZC4KLSAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgY2FuY2VsUHJlc3NlZCgpCi0gIHsKLSAgICB1c2VybmFtZVN0cmluZ18gPSBudWxsOwotICAgIHBhc3N3b3JkU3RyaW5nXyA9IG51bGw7Ci0gICAgc3VwZXIuY2FuY2VsUHJlc3NlZCgpOwotICB9Ci0KLSAgLyoqCi0gICogQ2FsbGVkIHdoZW4gdGhlIE9LIGJ1dHRvbiBpcyBwcmVzc2VkLgotICAqLwotICBwcm90ZWN0ZWQgdm9pZCBva1ByZXNzZWQoKQotICB7Ci0gICAgU3RyaW5nIHVzZXJuYW1lU3RyaW5nID0gdXNlcm5hbWVfLmdldFRleHQoKTsKLSAgICB1c2VybmFtZVN0cmluZ18gPSAodXNlcm5hbWVTdHJpbmcubGVuZ3RoKCkgPiAwKSA/IHVzZXJuYW1lU3RyaW5nIDogbnVsbDsKLSAgICBTdHJpbmcgcGFzc3dvcmRTdHJpbmcgPSBwYXNzd29yZF8uZ2V0VGV4dCgpOwotICAgIHBhc3N3b3JkU3RyaW5nXyA9IChwYXNzd29yZFN0cmluZy5sZW5ndGgoKSA+IDApID8gcGFzc3dvcmRTdHJpbmcgOiBudWxsOwotICAgIHNldFJldHVybkNvZGUoRGlhbG9nLk9LKTsKLSAgICBzdXBlci5va1ByZXNzZWQoKTsKLSAgfQotCi0gIC8qKgotICAqIFNlZSB7QGxpbmsgb3JnLmVjbGlwc2UuamZhY2Uud2luZG93LldpbmRvdyNjb25maWd1cmVTaGVsbH0uCi0gICogQHBhcmFtIHNoZWxsIFRoZSBzaGVsbC4KLSAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgY29uZmlndXJlU2hlbGwoU2hlbGwgc2hlbGwpCi0gIHsKLSAgICBzdXBlci5jb25maWd1cmVTaGVsbChzaGVsbCk7Ci0gICAgc2hlbGwuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuRElBTE9HX1RJVExFX0hUVFBfQkFTSUNfQVVUSCk7Ci0gIH0KLQotICAvKiogCi0gICogQ3JlYXRlcyB0aGUgZGlhbG9nIGFyZWEuCi0gICogQHBhcmFtIHBhcmVudCBUaGUgcGFyZW50IGNvbXBvc2l0ZS4KLSAgKiBAcmV0dXJuIFRoZSBjb250cm9sIGFyZWEuCi0gICovCi0gIHByb3RlY3RlZCBDb250cm9sIGNyZWF0ZURpYWxvZ0FyZWEoQ29tcG9zaXRlIHBhcmVudCkKLSAgewotICAgIENvbXBvc2l0ZSBjb21wb3NpdGUgPSAoQ29tcG9zaXRlKXN1cGVyLmNyZWF0ZURpYWxvZ0FyZWEocGFyZW50KTsKLSAgICBHcmlkRGF0YSBnZCA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwgfCBHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuR1JBQl9WRVJUSUNBTCk7Ci0gICAgZ2Qud2lkdGhIaW50ID0gNDAwOwotICAgIGdkLmdyYWJFeGNlc3NWZXJ0aWNhbFNwYWNlID0gdHJ1ZTsKLSAgICBnZC5ncmFiRXhjZXNzSG9yaXpvbnRhbFNwYWNlID0gdHJ1ZTsKLSAgICBjb21wb3NpdGUuc2V0TGF5b3V0RGF0YShnZCk7Ci0gICAgR3JpZExheW91dCBnbCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgZ2wubnVtQ29sdW1ucyA9IDI7Ci0gICAgZ2wudmVydGljYWxTcGFjaW5nID0gMTU7Ci0gICAgY29tcG9zaXRlLnNldExheW91dChnbCk7Ci0KLSAgICBMYWJlbCBsYWJlbCA9IG5ldyBMYWJlbChjb21wb3NpdGUsIFNXVC5XUkFQKTsKLSAgICBsYWJlbC5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9VUkwpOwotICAgIGxhYmVsLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCkpOwotCi0gICAgbGFiZWwgPSBuZXcgTGFiZWwoY29tcG9zaXRlLCBTV1QuV1JBUCk7Ci0gICAgbGFiZWwuc2V0VGV4dCh3d3dhZV8uZ2V0VVJMKCkpOwotICAgIGxhYmVsLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCkpOwotCi0gICAgbGFiZWwgPSBuZXcgTGFiZWwoY29tcG9zaXRlLCBTV1QuV1JBUCk7Ci0gICAgbGFiZWwuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfSFRUUF9CQVNJQ19BVVRIX1VTRVJOQU1FKTsKLSAgICBsYWJlbC5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwpKTsKLQotICAgIHVzZXJuYW1lXyA9IG5ldyBUZXh0KGNvbXBvc2l0ZSwgU1dULkJPUkRFUik7Ci0gICAgdXNlcm5hbWVfLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCkpOwotICAgIHVzZXJuYW1lXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9IVFRQX0JBU0lDX0FVVEhfVVNFUk5BTUUpOwotICAgIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAodXNlcm5hbWVfLCBJTkZPUE9QX0RCQVNfVVNFUk5BTUUpOwotCi0gICAgbGFiZWwgPSBuZXcgTGFiZWwoY29tcG9zaXRlLCBTV1QuV1JBUCk7Ci0gICAgbGFiZWwuc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfSFRUUF9CQVNJQ19BVVRIX1BBU1NXT1JEKTsKLSAgICBsYWJlbC5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwpKTsKLQotICAgIHBhc3N3b3JkXyA9IG5ldyBUZXh0KGNvbXBvc2l0ZSwgU1dULkJPUkRFUik7Ci0gICAgcGFzc3dvcmRfLnNldEVjaG9DaGFyKCcqJyk7Ci0gICAgcGFzc3dvcmRfLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCkpOwotICAgIHBhc3N3b3JkXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9IVFRQX0JBU0lDX0FVVEhfUEFTU1dPUkQpOwotICAgIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAodXNlcm5hbWVfLCBJTkZPUE9QX0RCQVNfUEFTU1dPUkQpOwotCi0gICAgcmV0dXJuIGNvbXBvc2l0ZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGhhbmRsZVdXV0F1dGhlbnRpY2F0aW9uKFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIHd3d2FlKQotICB7Ci0gICAgdXNlcm5hbWVTdHJpbmdfID0gbnVsbDsKLSAgICBwYXNzd29yZFN0cmluZ18gPSBudWxsOwotICAgIHd3d2FlXyA9IHd3d2FlOwotICAgIG9wZW4oKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VXNlcm5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHVzZXJuYW1lU3RyaW5nXzsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UGFzc3dvcmQoKQotICB7Ci0gICAgcmV0dXJuIHBhc3N3b3JkU3RyaW5nXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c2lsL1RhYmxlVmlld2VyRWRpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzaWwvVGFibGVWaWV3ZXJFZGl0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhhNDVmYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzaWwvVGFibGVWaWV3ZXJFZGl0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUyNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NpbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLkNvbHVtbldlaWdodERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JTGFiZWxQcm92aWRlckxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZENvbnRlbnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVRhYmxlTGFiZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlNlbGVjdGlvbkNoYW5nZWRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5UYWJsZUxheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlRhYmxlVmlld2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVmlld2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuY3VzdG9tLlRhYmxlRWRpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuS2V5RXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5LZXlMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vdXNlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb3VzZUxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlRyYXZlcnNlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5UcmF2ZXJzZUxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5JbWFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuUmVjdGFuZ2xlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGFibGVDb2x1bW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGFibGVJdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLQotCi1wdWJsaWMgY2xhc3MgVGFibGVWaWV3ZXJFZGl0b3IgZXh0ZW5kcyBDb21wb3NpdGUKLXsKLSAgcHJpdmF0ZSBpbnQgREVGQVVMVF9UQUJMRV9IRUlHSFRfSElOVCA9IDEwMDsKLSAgcHJpdmF0ZSBpbnQgREVGQVVMVF9DT0xVTU5fV0lEVEggPSA4MDsKLQotICBwcml2YXRlIFN0cmluZ1tdIGNvbHVtbnNfOwotICBwcml2YXRlIFRhYmxlVmlld2VyIHRhYmxlVmlld2VyXzsKLSAgcHJpdmF0ZSBUYWJsZSB0YWJsZV87Ci0gIHByaXZhdGUgVGFibGVFZGl0b3IgZWRpdG9yXzsKLSAgcHJpdmF0ZSBUYWJsZUVkaXRvckxpc3RlbmVyIHRhYmxlRWRpdG9yTGlzdGVuZXJfOwotICBwcml2YXRlIFRleHQgdGV4dF87Ci0gIHByaXZhdGUgQnV0dG9uIGFkZF87Ci0gIHByaXZhdGUgQnV0dG9uIHJlbW92ZV87Ci0KLSAgcHJpdmF0ZSBMaXN0IHZhbHVlc187Ci0gIHByaXZhdGUgT2JqZWN0IGRlZmF1bHRWYWx1ZV87Ci0KLSAgcHVibGljIFRhYmxlVmlld2VyRWRpdG9yKENvbXBvc2l0ZSBwYXJlbnQsIFN0cmluZ1tdIGNvbHVtbnMsIExpc3QgaW5pdFZhbHVlcywgT2JqZWN0IGRlZmF1bHRWYWx1ZSkKLSAgewotICAgIHN1cGVyKHBhcmVudCwgU1dULk5PTkUpOwotICAgIGNvbHVtbnNfID0gY29sdW1uczsKLSAgICB2YWx1ZXNfID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGlmIChpbml0VmFsdWVzICE9IG51bGwgJiYgaW5pdFZhbHVlcy5zaXplKCkgPiAwKQotICAgICAgdmFsdWVzXy5hZGRBbGwoaW5pdFZhbHVlcyk7Ci0gICAgZGVmYXVsdFZhbHVlXyA9IChkZWZhdWx0VmFsdWUgIT0gbnVsbCkgPyBkZWZhdWx0VmFsdWUgOiBuZXcgU3RyaW5nKCIiKTsKLSAgICBjcmVhdGVQYXJ0Q29udHJvbCh0aGlzKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBjcmVhdGVQYXJ0Q29udHJvbChDb21wb3NpdGUgcGFyZW50KQotICB7Ci0gICAgR3JpZExheW91dCBnbCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgZ2wubWFyZ2luSGVpZ2h0ID0gMDsKLSAgICBnbC5tYXJnaW5XaWR0aCA9IDA7Ci0gICAgc2V0TGF5b3V0KGdsKTsKLSAgICBzZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5GSUxMX0hPUklaT05UQUwpKTsKLQotICAgIENvbXBvc2l0ZSBjb21wb3NpdGUgPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOwotICAgIGdsID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICBnbC5tYXJnaW5IZWlnaHQgPSAwOwotICAgIGdsLm1hcmdpbldpZHRoID0gMDsKLSAgICBjb21wb3NpdGUuc2V0TGF5b3V0KGdsKTsKLSAgICBjb21wb3NpdGUuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMKSk7Ci0KLSAgICB0YWJsZV8gPSBuZXcgVGFibGUoY29tcG9zaXRlLCBTV1QuU0lOR0xFIHwgU1dULkZVTExfU0VMRUNUSU9OIHwgU1dULkJPUkRFUik7Ci0gICAgR3JpZERhdGEgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9CT1RIKTsKLSAgICBnZC5oZWlnaHRIaW50ID0gREVGQVVMVF9UQUJMRV9IRUlHSFRfSElOVDsKLSAgICB0YWJsZV8uc2V0TGF5b3V0RGF0YShnZCk7Ci0gICAgdGFibGVfLnNldEhlYWRlclZpc2libGUodHJ1ZSk7Ci0gICAgdGFibGVfLnNldExpbmVzVmlzaWJsZSh0cnVlKTsKLSAgICBUYWJsZUxheW91dCB0YWJsZUxheW91dCA9IG5ldyBUYWJsZUxheW91dCgpOwotICAgIGludCBtYXhXaWR0aCA9IERFRkFVTFRfQ09MVU1OX1dJRFRIOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29sdW1uc18ubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgVGFibGVDb2x1bW4gdGFibGVDb2x1bW4gPSBuZXcgVGFibGVDb2x1bW4odGFibGVfLCBTV1QuTk9ORSk7Ci0gICAgICB0YWJsZUNvbHVtbi5zZXRUZXh0KGNvbHVtbnNfW2ldKTsKLSAgICAgIHRhYmxlQ29sdW1uLnBhY2soKTsKLSAgICAgIGludCB0YWJsZUNvbHVtbldpZHRoID0gTWF0aC5tYXgoREVGQVVMVF9DT0xVTU5fV0lEVEgsIHRhYmxlQ29sdW1uLmdldFdpZHRoKCkpOwotICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgdGFibGVDb2x1bW5XaWR0aCk7Ci0gICAgICBDb2x1bW5XZWlnaHREYXRhIGNvbHVtbkRhdGEgPSBuZXcgQ29sdW1uV2VpZ2h0RGF0YSh0YWJsZUNvbHVtbldpZHRoLCB0YWJsZUNvbHVtbldpZHRoLCB0cnVlKTsKLSAgICAgIHRhYmxlTGF5b3V0LmFkZENvbHVtbkRhdGEoY29sdW1uRGF0YSk7Ci0gICAgfQotICAgIHRhYmxlXy5zZXRMYXlvdXQodGFibGVMYXlvdXQpOwotICAgIC8vIGluaXRpYWxpemUgdGhlIHRhYmxlIGVkaXRvcgotICAgIGVkaXRvcl8gPSBuZXcgVGFibGVFZGl0b3IodGFibGVfKTsKLSAgICAvLyBUaGUgZWRpdG9yIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBjZWxsIGFuZCBtdXN0Ci0gICAgLy8gbm90IGJlIGFueSBzbWFsbGVyIHRoYW4gNTAgcGl4ZWxzLgotICAgIGVkaXRvcl8uaG9yaXpvbnRhbEFsaWdubWVudCA9IFNXVC5MRUZUOwotICAgIGVkaXRvcl8uZ3JhYkhvcml6b250YWwgPSB0cnVlOwotICAgIGVkaXRvcl8ubWluaW11bVdpZHRoID0gbWF4V2lkdGg7Ci0gICAgdGFibGVFZGl0b3JMaXN0ZW5lcl8gPSBuZXcgVGFibGVFZGl0b3JMaXN0ZW5lcigpOwotICAgIHRhYmxlXy5hZGRNb3VzZUxpc3RlbmVyKHRhYmxlRWRpdG9yTGlzdGVuZXJfKTsKLSAgICB0YWJsZVZpZXdlcl8gPSBuZXcgVGFibGVWaWV3ZXIodGFibGVfKTsKLSAgICB0YWJsZVZpZXdlcl8uZ2V0Q29udHJvbCgpLmFkZEtleUxpc3RlbmVyKAotICAgICAgbmV3IEtleUxpc3RlbmVyKCkKLSAgICAgIHsKLSAgICAgICAgcHVibGljIHZvaWQga2V5UHJlc3NlZChLZXlFdmVudCBlKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gRGVsCi0gICAgICAgICAgaWYgKCgoaW50KWUuY2hhcmFjdGVyKSA9PSAxMjcpIAotICAgICAgICAgICAgaGFuZGxlRGVsZXRlS2V5UHJlc3NlZCgpOwotICAgICAgICAgIC8vIEVudGVyIG9yIHNwYWNlCi0gICAgICAgICAgaWYgKCgoaW50KWUuY2hhcmFjdGVyKSA9PSAxMyB8fCAoKGludCllLmNoYXJhY3RlcikgPT0gMzIpCi0gICAgICAgICAgICB0YWJsZUVkaXRvckxpc3RlbmVyXy5lZGl0U2VsZWN0aW9uKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcHVibGljIHZvaWQga2V5UmVsZWFzZWQoS2V5RXZlbnQgZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICB9Ci0gICAgKTsKLSAgICB0YWJsZVZpZXdlcl8uc2V0Q29udGVudFByb3ZpZGVyKG5ldyBMaXN0Q29udGVudFByb3ZpZGVyKCkpOwotICAgIHRhYmxlVmlld2VyXy5zZXRMYWJlbFByb3ZpZGVyKG5ldyBMaXN0TGFiZWxQcm92aWRlcigpKTsKLSAgICB0YWJsZVZpZXdlcl8uc2V0SW5wdXQodmFsdWVzXyk7Ci0gICAgdGFibGVWaWV3ZXJfLmFkZFNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcigKLSAgICAgIG5ldyBJU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKCkKLSAgICAgIHsKLSAgICAgICAgcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICBlbmFibGVSZW1vdmUodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICApOwotCi0gICAgQ29tcG9zaXRlIGJ1dHRvbkNvbXBvc2l0ZSA9IG5ldyBDb21wb3NpdGUoY29tcG9zaXRlLCBTV1QuTk9ORSk7Ci0gICAgZ2wgPSBuZXcgR3JpZExheW91dCgpOwotICAgIGdsLm51bUNvbHVtbnMgPSAyOwotICAgIGdsLm1ha2VDb2x1bW5zRXF1YWxXaWR0aCA9IHRydWU7Ci0gICAgYnV0dG9uQ29tcG9zaXRlLnNldExheW91dChnbCk7Ci0gICAgYnV0dG9uQ29tcG9zaXRlLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkdSQUJfSE9SSVpPTlRBTCB8IEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fQkVHSU5OSU5HKSk7Ci0KLSAgICBhZGRfID0gbmV3IEJ1dHRvbihidXR0b25Db21wb3NpdGUsIFNXVC5QVVNIKTsKLSAgICBhZGRfLnNldFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX0FERCk7Ci0gICAgYWRkXy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwpKTsKLSAgICBhZGRfLmFkZFNlbGVjdGlvbkxpc3RlbmVyKAotICAgICAgbmV3IFNlbGVjdGlvbkxpc3RlbmVyKCkKLSAgICAgIHsKLSAgICAgICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICBoYW5kbGVBZGRCdXR0b25TZWxlY3RlZChldmVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICApOwotCi0gICAgcmVtb3ZlXyA9IG5ldyBCdXR0b24oYnV0dG9uQ29tcG9zaXRlLCBTV1QuUFVTSCk7Ci0gICAgcmVtb3ZlXy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9SRU1PVkUpOwotICAgIHJlbW92ZV8uc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKSk7Ci0gICAgcmVtb3ZlXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcigKLSAgICAgIG5ldyBTZWxlY3Rpb25MaXN0ZW5lcigpCi0gICAgICB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgaGFuZGxlUmVtb3ZlQnV0dG9uU2VsZWN0ZWQoZXZlbnQpOwotICAgICAgICB9Ci0gICAgICAgIHB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBldmVudCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICB9Ci0gICAgKTsKLSAgICBlbmFibGVSZW1vdmUoZmFsc2UpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGVuYWJsZVJlbW92ZShib29sZWFuIGVuYWJsZWQpCi0gIHsKLSAgICByZW1vdmVfLnNldEVuYWJsZWQoZW5hYmxlZCAmJiAhdGFibGVWaWV3ZXJfLmdldFNlbGVjdGlvbigpLmlzRW1wdHkoKSk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlQWRkQnV0dG9uU2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpCi0gIHsKLSAgICB2YWx1ZXNfLmFkZChkZWZhdWx0VmFsdWVfKTsKLSAgICByZWZyZXNoKCk7Ci0gICAgc2V0U2VsZWN0aW9uQXNPYmplY3QodmFsdWVzXy5nZXQodGFibGVfLmdldEl0ZW1Db3VudCgpLTEpKTsKLSAgICB0YWJsZUVkaXRvckxpc3RlbmVyXy5lZGl0U2VsZWN0aW9uKCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlUmVtb3ZlQnV0dG9uU2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZXZlbnQpCi0gIHsKLSAgICBoYW5kbGVEZWxldGVLZXlQcmVzc2VkKCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlRGVsZXRlS2V5UHJlc3NlZCgpCi0gIHsKLSAgICBpbnRlcm5hbERpc3Bvc2UoKTsKLSAgICBJU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHRhYmxlVmlld2VyXy5nZXRTZWxlY3Rpb24oKTsKLSAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwgJiYgIXNlbGVjdGlvbi5pc0VtcHR5KCkgJiYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSkKLSAgICB7Ci0gICAgICBpbnQgc2VsZWN0aW9uSW5kZXggPSB0YWJsZV8uZ2V0U2VsZWN0aW9uSW5kZXgoKTsKLSAgICAgIGludCBzZWxlY3Rpb25Db3VudCA9IHRhYmxlXy5nZXRJdGVtQ291bnQoKTsKLSAgICAgIHZhbHVlc18ucmVtb3ZlKHNlbGVjdGlvbkluZGV4KTsKLSAgICAgIGlmIChzZWxlY3Rpb25JbmRleCA8IHNlbGVjdGlvbkNvdW50LTEpCi0gICAgICAgIHNldFNlbGVjdGlvbkFzT2JqZWN0KHZhbHVlc18uZ2V0KHNlbGVjdGlvbkluZGV4KSk7Ci0gICAgICBlbHNlIGlmIChzZWxlY3Rpb25Db3VudCAtMiA+PSAwKQotICAgICAgICBzZXRTZWxlY3Rpb25Bc09iamVjdCh2YWx1ZXNfLmdldChzZWxlY3Rpb25Db3VudC0yKSk7Ci0gICAgICByZWZyZXNoKCk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGludGVybmFsUmVmcmVzaCgpCi0gIHsKLSAgICAvLyBzeW5jaHJvbml6ZSB0ZXh0IGZpZWxkLCBwcmV2aW91c2x5IHNlbGVjdGVkIHRhYmxlIGNlbGwgYW5kIG1vZGVsIChpbnB1dE9iamVjdCkKLSAgICBpZiAodGV4dF8gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBUYWJsZUl0ZW0gb2xkVGFibGVJdGVtID0gZWRpdG9yXy5nZXRJdGVtKCk7Ci0gICAgICBpbnQgb2xkQ29sdW1uSW5kZXggPSBlZGl0b3JfLmdldENvbHVtbigpOwotICAgICAgaWYgKG9sZFRhYmxlSXRlbSAhPSBudWxsICYmIG9sZENvbHVtbkluZGV4ID49IDAgJiYgb2xkQ29sdW1uSW5kZXggPCBjb2x1bW5zXy5sZW5ndGgpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBvbGRUZXh0ID0gdGV4dF8uZ2V0VGV4dCgpOwotICAgICAgICBvbGRUYWJsZUl0ZW0uc2V0VGV4dChvbGRDb2x1bW5JbmRleCwgb2xkVGV4dCk7Ci0gICAgICAgIGludCBvbGRSb3dJbmRleCA9IHRhYmxlXy5pbmRleE9mKG9sZFRhYmxlSXRlbSk7Ci0gICAgICAgIHZhbHVlc18uc2V0KG9sZFJvd0luZGV4LCBvbGRUZXh0KTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgc2V0U2VsZWN0aW9uQXNPYmplY3QoT2JqZWN0IG9iamVjdCkKLSAgewotICAgIHRhYmxlVmlld2VyXy5zZXRTZWxlY3Rpb24obmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24ob2JqZWN0KSwgdHJ1ZSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRUb29sVGlwVGV4dChTdHJpbmcgc3RyaW5nKQotICB7Ci0gICAgdGFibGVfLnNldFRvb2xUaXBUZXh0KHN0cmluZyk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRJbmZvcG9wKFN0cmluZyBzdHJpbmcpCi0gIHsKLSAgCVBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAodGFibGVfLCBzdHJpbmcpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJbnB1dChMaXN0IGxpc3QpCi0gIHsKLSAgICB2YWx1ZXNfLmNsZWFyKCk7Ci0gICAgdmFsdWVzXy5hZGRBbGwobGlzdCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZWZyZXNoKCkKLSAgewotICAgIGludGVybmFsUmVmcmVzaCgpOwotICAgIHRhYmxlVmlld2VyXy5yZWZyZXNoKCk7Ci0gIH0KLQotICBwdWJsaWMgVGFibGVJdGVtW10gZ2V0SXRlbXMoKQotICB7Ci0gICAgaW50ZXJuYWxSZWZyZXNoKCk7Ci0gICAgcmV0dXJuIHRhYmxlXy5nZXRJdGVtcygpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RW5hYmxlZChib29sZWFuIGVuYWJsZWQpCi0gIHsKLSAgICBzdXBlci5zZXRFbmFibGVkKGVuYWJsZWQpOwotICAgIGFkZF8uc2V0RW5hYmxlZChlbmFibGVkKTsKLSAgICBlbmFibGVSZW1vdmUoZW5hYmxlZCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBkaXNwb3NlKCkKLSAgewotICAgIHN1cGVyLmRpc3Bvc2UoKTsKLSAgICBpbnRlcm5hbERpc3Bvc2UoKTsKLSAgICBpZiAoZWRpdG9yXyAhPSBudWxsKQotICAgICAgZWRpdG9yXy5kaXNwb3NlKCk7Ci0gICAgaWYgKHRhYmxlXyAhPSBudWxsKQotICAgICAgdGFibGVfLmRpc3Bvc2UoKTsKLSAgICBpZiAoYWRkXyAhPSBudWxsKQotICAgICAgYWRkXy5kaXNwb3NlKCk7Ci0gICAgaWYgKHJlbW92ZV8gIT0gbnVsbCkKLSAgICAgIHJlbW92ZV8uZGlzcG9zZSgpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGludGVybmFsRGlzcG9zZSgpCi0gIHsKLSAgICBpZiAodGV4dF8gIT0gbnVsbCkKLSAgICAgIHRleHRfLmRpc3Bvc2UoKTsKLSAgICB0ZXh0XyA9IG51bGw7Ci0gIH0KLQotICBwcm90ZWN0ZWQgY2xhc3MgVGFibGVFZGl0b3JMaXN0ZW5lciBpbXBsZW1lbnRzIE1vdXNlTGlzdGVuZXIKLSAgewotICAgIHByaXZhdGUgaW50IGN1cnJTZWxlY3Rpb25JbmRleF87Ci0gICAgcHJpdmF0ZSBpbnQgZWRpdFJvd187Ci0gICAgcHJpdmF0ZSBpbnQgZWRpdENvbHVtbl87Ci0KLSAgICBwdWJsaWMgVGFibGVFZGl0b3JMaXN0ZW5lcigpCi0gICAgewotICAgICAgc3VwZXIoKTsKLSAgICAgIGN1cnJTZWxlY3Rpb25JbmRleF8gPSAtMTsKLSAgICAgIGVkaXRSb3dfID0gLTE7Ci0gICAgICBlZGl0Q29sdW1uXyA9IC0xOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIG1vdXNlRG91YmxlQ2xpY2soTW91c2VFdmVudCBlKQotICAgIHsKLSAgICAgIG1vdXNlRG93bihlKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBtb3VzZURvd24oTW91c2VFdmVudCBlKQotICAgIHsKLSAgICAgIC8vIHJlZnJlc2ggdGFibGUKLSAgICAgIGludGVybmFsUmVmcmVzaCgpOwotICAgICAgLy8gQ2xlYW4gdXAgcHJldmlvdXMgdGV4dCBlZGl0b3IgY29udHJvbAotICAgICAgaW50ZXJuYWxEaXNwb3NlKCk7Ci0gICAgICAvLyB1cGRhdGUgdGFibGUKLSAgICAgIGlmICh0YWJsZV8uaXNGb2N1c0NvbnRyb2woKSkKLSAgICAgIHsKLSAgICAgICAgaW50IHNlbGVjdGVkUm93SW5kZXggPSBnZXRTZWxlY3RlZFJvdyh0YWJsZV8sIGUueSk7Ci0gICAgICAgIGlmIChjdXJyU2VsZWN0aW9uSW5kZXhfICE9IC0xICYmIHNlbGVjdGVkUm93SW5kZXggIT0gLTEgJiYgY3VyclNlbGVjdGlvbkluZGV4XyA9PSBzZWxlY3RlZFJvd0luZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgVGFibGVJdGVtIHRhYmxlSXRlbSA9IHRhYmxlXy5nZXRJdGVtKHNlbGVjdGVkUm93SW5kZXgpOwotICAgICAgICAgIGludCBzZWxlY3RlZENvbHVtbkluZGV4ID0gZ2V0U2VsZWN0ZWRDb2x1bW4odGFibGVJdGVtLCBlLngsIGUueSk7Ci0gICAgICAgICAgaWYgKHNlbGVjdGVkQ29sdW1uSW5kZXggIT0gLTEgJiYgKHRleHRfID09IG51bGwgfHwgdGV4dF8uaXNEaXNwb3NlZCgpIHx8IHNlbGVjdGVkQ29sdW1uSW5kZXggIT0gZWRpdG9yXy5nZXRDb2x1bW4oKSkpCi0gICAgICAgICAgICBlZGl0U2VsZWN0aW9uKHNlbGVjdGVkUm93SW5kZXgsIHNlbGVjdGVkQ29sdW1uSW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIGN1cnJTZWxlY3Rpb25JbmRleF8gPSBzZWxlY3RlZFJvd0luZGV4OwotICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIG1vdXNlVXAoTW91c2VFdmVudCBlKQotICAgIHsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGludCBnZXRTZWxlY3RlZFJvdyhUYWJsZSB0YWJsZSwgaW50IHkpCi0gICAgewotICAgICAgVGFibGVJdGVtW10gdGFibGVJdGVtcyA9IHRhYmxlLmdldEl0ZW1zKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRhYmxlSXRlbXMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIFJlY3RhbmdsZSByZWN0YW5nbGUgPSB0YWJsZUl0ZW1zW2ldLmdldEJvdW5kcygwKTsKLSAgICAgICAgaWYgKHJlY3RhbmdsZSAhPSBudWxsICYmIHkgPj0gcmVjdGFuZ2xlLnkgJiYgeSA8IChyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQpKQotICAgICAgICAgIHJldHVybiBpOwotICAgICAgfQotICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHByaXZhdGUgaW50IGdldFNlbGVjdGVkQ29sdW1uKFRhYmxlSXRlbSB0YWJsZUl0ZW0sIGludCB4LCBpbnQgeSkKLSAgICB7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbHVtbnNfLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBpZiAodGFibGVJdGVtLmdldEJvdW5kcyhpKS5jb250YWlucyh4LCB5KSkKLSAgICAgICAgICByZXR1cm4gaTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgZWRpdFNlbGVjdGlvbihpbnQgcm93LCBpbnQgY29sdW1uKQotICAgIHsKLSAgICAgIGVkaXRSb3dfID0gcm93OwotICAgICAgZWRpdENvbHVtbl8gPSBjb2x1bW47Ci0gICAgICBUYWJsZUl0ZW0gdGFibGVJdGVtID0gdGFibGVfLmdldEl0ZW0ocm93KTsKLSAgICAgIC8vIFNldHVwIGFkYXB0ZXIgZm9yIHRoZSBuZXcgc2VsZWN0aW9uCi0gICAgICB0ZXh0XyA9IG5ldyBUZXh0KHRhYmxlXywgU1dULk5PTkUpOwotICAgICAgU3RyaW5nIHRleHQgPSB0YWJsZUl0ZW0uZ2V0VGV4dChjb2x1bW4pOwotICAgICAgdGV4dF8uc2V0VGV4dCgodGV4dCAhPSBudWxsKSA/IHRleHQgOiAiIik7Ci0gICAgICB0ZXh0Xy5hZGRLZXlMaXN0ZW5lcihuZXcgS2V5TGlzdGVuZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgcHVibGljIHZvaWQga2V5UHJlc3NlZChLZXlFdmVudCBlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIEVzYwotICAgICAgICAgICAgaWYgKCgoaW50KWUuY2hhcmFjdGVyKSA9PSAyNykKLSAgICAgICAgICAgICAgY2FuY2VsU2VsZWN0aW9uKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHB1YmxpYyB2b2lkIGtleVJlbGVhc2VkKEtleUV2ZW50IGUpCi0gICAgICAgICAgewotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgKTsKLSAgICAgIHRleHRfLmFkZFRyYXZlcnNlTGlzdGVuZXIobmV3IFRyYXZlcnNlTGlzdGVuZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgcHVibGljIHZvaWQga2V5VHJhdmVyc2VkKFRyYXZlcnNlRXZlbnQgZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZS5kZXRhaWwgPT0gU1dULlRSQVZFUlNFX1RBQl9ORVhUKQotICAgICAgICAgICAgICB0cmF2ZXJzZVRhYk5leHQoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGUuZGV0YWlsID09IFNXVC5UUkFWRVJTRV9UQUJfUFJFVklPVVMpCi0gICAgICAgICAgICAgIHRyYXZlcnNlVGFiUHJldmlvdXMoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICk7Ci0gICAgICBlZGl0b3JfLnNldEVkaXRvcih0ZXh0XywgdGFibGVJdGVtLCBjb2x1bW4pOwotICAgICAgdGV4dF8uc2V0Rm9jdXMoKTsKLSAgICAgIHRleHRfLnNlbGVjdEFsbCgpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIHRyYXZlcnNlVGFiTmV4dCgpCi0gICAgewotICAgICAgaW50ZXJuYWxSZWZyZXNoKCk7Ci0gICAgICBpbnRlcm5hbERpc3Bvc2UoKTsKLSAgICAgIGlmICghKGVkaXRSb3dfID09IHRhYmxlXy5nZXRJdGVtcygpLmxlbmd0aC0xICYmIGVkaXRDb2x1bW5fID09IGNvbHVtbnNfLmxlbmd0aC0xKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGVkaXRDb2x1bW5fIDwgY29sdW1uc18ubGVuZ3RoLTEpCi0gICAgICAgICAgZWRpdENvbHVtbl8rKzsKLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgZWRpdENvbHVtbl8gPSAwOwotICAgICAgICAgIGVkaXRSb3dfKys7Ci0gICAgICAgICAgdGFibGVfLnNlbGVjdChlZGl0Um93Xyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWRpdFNlbGVjdGlvbihlZGl0Um93XywgZWRpdENvbHVtbl8pOwotICAgICAgfQotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIHRyYXZlcnNlVGFiUHJldmlvdXMoKQotICAgIHsKLSAgICAgIGludGVybmFsUmVmcmVzaCgpOwotICAgICAgaW50ZXJuYWxEaXNwb3NlKCk7Ci0gICAgICBpZiAoIShlZGl0Um93XyA9PSAwICYmIGVkaXRDb2x1bW5fID09IDApKQotICAgICAgewotICAgICAgICBpZiAoZWRpdENvbHVtbl8gPiAwKQotICAgICAgICAgIGVkaXRDb2x1bW5fLS07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGVkaXRDb2x1bW5fID0gY29sdW1uc18ubGVuZ3RoLTE7Ci0gICAgICAgICAgZWRpdFJvd18tLTsKLSAgICAgICAgICB0YWJsZV8uc2VsZWN0KGVkaXRSb3dfKTsKLSAgICAgICAgfQotICAgICAgICBlZGl0U2VsZWN0aW9uKGVkaXRSb3dfLCBlZGl0Q29sdW1uXyk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgY2FuY2VsU2VsZWN0aW9uKCkKLSAgICB7Ci0gICAgICBpbnRlcm5hbERpc3Bvc2UoKTsKLSAgICAgIGludGVybmFsUmVmcmVzaCgpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVkaXRTZWxlY3Rpb24oKQotICAgIHsKLSAgICAgIGludCBzZWxlY3RlZFJvd0luZGV4ID0gdGFibGVfLmdldFNlbGVjdGlvbkluZGV4KCk7Ci0gICAgICBpZiAoc2VsZWN0ZWRSb3dJbmRleCAhPSAtMSAmJiBjb2x1bW5zXy5sZW5ndGggPiAwKQotICAgICAgewotICAgICAgICAvLyByZWZyZXNoIHRhYmxlCi0gICAgICAgIGludGVybmFsUmVmcmVzaCgpOwotICAgICAgICAvLyBDbGVhbiB1cCBhbnkgcHJldmlvdXMgZWRpdG9yIGNvbnRyb2wKLSAgICAgICAgaW50ZXJuYWxEaXNwb3NlKCk7Ci0gICAgICAgIGVkaXRTZWxlY3Rpb24oc2VsZWN0ZWRSb3dJbmRleCwgMCk7Ci0gICAgICB9Ci0gICAgICBjdXJyU2VsZWN0aW9uSW5kZXhfID0gc2VsZWN0ZWRSb3dJbmRleDsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgY2xhc3MgTGlzdENvbnRlbnRQcm92aWRlciBpbXBsZW1lbnRzIElTdHJ1Y3R1cmVkQ29udGVudFByb3ZpZGVyCi0gIHsKLSAgICBwdWJsaWMgdm9pZCBkaXNwb3NlKCkKLSAgICB7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgaW5wdXRDaGFuZ2VkKFZpZXdlciB2aWV3ZXIsIE9iamVjdCBvbGRJbnB1dCwgT2JqZWN0IG5ld0lucHV0KQotICAgIHsKLSAgICAgIHRhYmxlVmlld2VyXy5hZGQoZ2V0RWxlbWVudHMobmV3SW5wdXQpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgT2JqZWN0W10gZ2V0RWxlbWVudHMoT2JqZWN0IGlucHV0RWxlbWVudCkKLSAgICB7Ci0gICAgICBpZiAoaW5wdXRFbGVtZW50IGluc3RhbmNlb2YgTGlzdCkKLSAgICAgIHsKLSAgICAgICAgTGlzdCBsaXN0ID0gKExpc3QpaW5wdXRFbGVtZW50OwotICAgICAgICBPYmplY3RbXSBvYmplY3RzID0gbmV3IE9iamVjdFtsaXN0LnNpemUoKV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0cy5sZW5ndGg7IGkrKykKLSAgICAgICAgICBvYmplY3RzW2ldID0gbGlzdC5nZXQoaSk7Ci0gICAgICAgIHJldHVybiBvYmplY3RzOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICByZXR1cm4gbmV3IE9iamVjdFswXTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgY2xhc3MgTGlzdExhYmVsUHJvdmlkZXIgaW1wbGVtZW50cyBJVGFibGVMYWJlbFByb3ZpZGVyCi0gIHsKLSAgICBwdWJsaWMgSW1hZ2UgZ2V0Q29sdW1uSW1hZ2UoT2JqZWN0IGVsZW1lbnQsIGludCBjb2x1bW5JbmRleCkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldENvbHVtblRleHQoT2JqZWN0IGVsZW1lbnQsIGludCBjb2x1bW5JbmRleCkKLSAgICB7Ci0gICAgICByZXR1cm4gZWxlbWVudC50b1N0cmluZygpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKElMYWJlbFByb3ZpZGVyTGlzdGVuZXIgbGlzdGVuZXIpCi0gICAgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKElMYWJlbFByb3ZpZGVyTGlzdGVuZXIgbGlzdGVuZXIpCi0gICAgewotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzTGFiZWxQcm9wZXJ0eShPYmplY3QgZWxlbWVudCwgU3RyaW5nIHByb3BlcnR5KQotICAgIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGRpc3Bvc2UoKQotICAgIHsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NpbC9VdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c2lsL1V0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYjQ5ZWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c2lsL1V0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NpbDsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLQotCi1wdWJsaWMgY2xhc3MgVXRpbHMKLXsKLSAgcHVibGljIFV0aWxzKCkKLSAgewotICB9Ci0KLSAgcHVibGljIFN0cmluZyB0b0ZpbGVTeXN0ZW1VUkkoU3RyaW5nIHJlbGF0aXZlUGxhdGZvcm1VUkkpCi0gIHsKLSAgICBpZiAocmVsYXRpdmVQbGF0Zm9ybVVSSSAhPSBudWxsKQotICAgICAgcmV0dXJuIHRvRmlsZVN5c3RlbVVSSShSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZShyZWxhdGl2ZVBsYXRmb3JtVVJJKSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIHRvRmlsZVN5c3RlbVVSSShJUmVzb3VyY2UgcmVzKQotICB7Ci0gICAgaWYgKHJlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIElQYXRoIHBhdGggPSByZXMuZ2V0TG9jYXRpb24oKTsKLSAgICAgIGlmIChwYXRoICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIHBhdGgudG9GaWxlKCkudG9VUkwoKS50b1N0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gbXVybGUpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L0NsaWVudFJ1bnRpbWVEZXNjcmlwdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvQ2xpZW50UnVudGltZURlc2NyaXB0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFiMDkxNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvQ2xpZW50UnVudGltZURlc2NyaXB0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzExMDcgMjAzODI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MTEzMCAyMDM4MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMzI2ICAgMjIxMzY0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLlJlcXVpcmVkRmFjZXRWZXJzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklQcm9qZWN0RmFjZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSVByb2plY3RGYWNldFZlcnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuUHJvamVjdEZhY2V0c01hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlUnVudGltZUNoZWNrZXI7Ci0KLXB1YmxpYyBjbGFzcyBDbGllbnRSdW50aW1lRGVzY3JpcHRvcgotewotICBwcml2YXRlIElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtOwotICBwcml2YXRlIEhhc2h0YWJsZSBhbGxXZWJTZXJ2aWNlQ2xpZW50SW1wbHM7Ci0gIHByaXZhdGUgSGFzaHRhYmxlIGFsbFJ1bnRpbWVzOwotICBwcml2YXRlIFN0cmluZyBpZDsKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlQ2xpZW50SW1wbCBjbGllbnRJbXBsZW1lbnRhdGlvblR5cGU7Ci0gIHByaXZhdGUgUnVudGltZURlc2NyaXB0b3IgcnVudGltZTsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50UnVudGltZUNsYXNzTmFtZTsKLSAgcHJpdmF0ZSBJV2ViU2VydmljZVJ1bnRpbWUgd2ViU2VydmljZVJ1bnRpbWU7Ci0gIHByaXZhdGUgUmVxdWlyZWRGYWNldFZlcnNpb25bXSByZXF1aXJlZEZhY2V0VmVyc2lvbnM7Ci0gIHByaXZhdGUgU2V0IHByb2plY3RGYWNldFZlcnNpb25zOwotICBwcml2YXRlIElXZWJTZXJ2aWNlUnVudGltZUNoZWNrZXIgd2ViU2VydmljZVJ1bnRpbWVDaGVja2VyOwotICBwcml2YXRlIFN0cmluZyBydW50aW1lUHJlZmVycmVkU2VydmVyVHlwZTsKLSAgCi0gIHB1YmxpYyBDbGllbnRSdW50aW1lRGVzY3JpcHRvcihJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbSwgSGFzaHRhYmxlIGFsbFdlYlNlcnZpY2VDbGllbnRJbXBscywgSGFzaHRhYmxlIGFsbFJ1bnRpbWVzKQotICB7Ci0gICAgdGhpcy5lbGVtID0gZWxlbTsKLSAgICB0aGlzLmFsbFdlYlNlcnZpY2VDbGllbnRJbXBscyA9IGFsbFdlYlNlcnZpY2VDbGllbnRJbXBsczsKLSAgICB0aGlzLmFsbFJ1bnRpbWVzID0gYWxsUnVudGltZXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBXZWJTZXJ2aWNlQ2xpZW50SW1wbCBnZXRDbGllbnRJbXBsZW1lbnRhdGlvblR5cGUoKQotICB7Ci0gICAgaWYgKGNsaWVudEltcGxlbWVudGF0aW9uVHlwZSA9PSBudWxsKQotICAgIHsKLSAgICAgU3RyaW5nIGNsaWVudEltcGxlbWVudGF0aW9uVHlwZUlkID0gZWxlbS5nZXRBdHRyaWJ1dGUoImNsaWVudEltcGxlbWVudGF0aW9uVHlwZUlkIik7Ci0gICAgIGNsaWVudEltcGxlbWVudGF0aW9uVHlwZSA9IChXZWJTZXJ2aWNlQ2xpZW50SW1wbClhbGxXZWJTZXJ2aWNlQ2xpZW50SW1wbHMuZ2V0KGNsaWVudEltcGxlbWVudGF0aW9uVHlwZUlkKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNsaWVudEltcGxlbWVudGF0aW9uVHlwZTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDbGllbnRSdW50aW1lQ2xhc3NOYW1lKCkKLSAgewotICAgIGlmIChjbGllbnRSdW50aW1lQ2xhc3NOYW1lID09IG51bGwpCi0gICAgewotICAgICAgY2xpZW50UnVudGltZUNsYXNzTmFtZSA9IGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzcyIpOwotICAgIH0KLSAgICByZXR1cm4gY2xpZW50UnVudGltZUNsYXNzTmFtZTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICBpZiAoaWQgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZCA9IGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpOwotICAgIH0gICAgCi0gICAgcmV0dXJuIGlkOwotICB9Ci0gIAotICBwdWJsaWMgUmVxdWlyZWRGYWNldFZlcnNpb25bXSBnZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoKQotICB7Ci0gICAgaWYgKHJlcXVpcmVkRmFjZXRWZXJzaW9ucyA9PSBudWxsKQotICAgIHsKLSAgICAgIEFycmF5TGlzdCByZXF1aXJlZEZhY2V0VmVyc2lvbkxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBmYWNldEVsZW1zID0gZWxlbS5nZXRDaGlsZHJlbigicmVxdWlyZWQtZmFjZXQtdmVyc2lvbiIpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmYWNldEVsZW1zLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBSZXF1aXJlZEZhY2V0VmVyc2lvbiByZnYgPSBuZXcgUmVxdWlyZWRGYWNldFZlcnNpb24oKTsKLSAgICAgICAgSVByb2plY3RGYWNldCBwcm9qZWN0RmFjZXQgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRQcm9qZWN0RmFjZXQoZmFjZXRFbGVtc1tpXS5nZXRBdHRyaWJ1dGUoImZhY2V0IikpOyAgICAgICAgCi0gICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIHByb2plY3RGYWNldFZlcnNpb24gPSBwcm9qZWN0RmFjZXQuZ2V0VmVyc2lvbihmYWNldEVsZW1zW2ldLmdldEF0dHJpYnV0ZSgidmVyc2lvbiIpKTsKLSAgICAgICAgcmZ2LnNldFByb2plY3RGYWNldFZlcnNpb24ocHJvamVjdEZhY2V0VmVyc2lvbik7Ci0gICAgICAgIFN0cmluZyBhbGxvd05ld2VyVmFsdWUgPSBmYWNldEVsZW1zW2ldLmdldEF0dHJpYnV0ZSgiYWxsb3ctbmV3ZXIiKTsKLSAgICAgICAgaWYgKGFsbG93TmV3ZXJWYWx1ZSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgcmZ2LnNldEFsbG93TmV3ZXIoZmFsc2UpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHJmdi5zZXRBbGxvd05ld2VyKEJvb2xlYW4udmFsdWVPZihhbGxvd05ld2VyVmFsdWUpLmJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmVxdWlyZWRGYWNldFZlcnNpb25MaXN0LmFkZChyZnYpOwotICAgICAgfQotICAgICAgCi0gICAgICByZXF1aXJlZEZhY2V0VmVyc2lvbnMgPSAoUmVxdWlyZWRGYWNldFZlcnNpb25bXSlyZXF1aXJlZEZhY2V0VmVyc2lvbkxpc3QudG9BcnJheShuZXcgUmVxdWlyZWRGYWNldFZlcnNpb25bXXt9KTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlcXVpcmVkRmFjZXRWZXJzaW9uczsKLSAgfQotICAKLSAgcHVibGljIFNldCBnZXRQcm9qZWN0RmFjZXRWZXJzaW9ucygpCi0gIHsKLSAgICBpZiAocHJvamVjdEZhY2V0VmVyc2lvbnMgPT0gbnVsbCkKLSAgICB7Ci0gICAgIHByb2plY3RGYWNldFZlcnNpb25zID0gbmV3IEhhc2hTZXQoKTsKLSAgICAgUmVxdWlyZWRGYWNldFZlcnNpb25bXSByZnYgPSBnZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoKTsKLSAgICAgZm9yIChpbnQgaT0wOyBpPHJmdi5sZW5ndGg7IGkrKykKLSAgICAgewotICAgICAgIHByb2plY3RGYWNldFZlcnNpb25zLmFkZChyZnZbaV0uZ2V0UHJvamVjdEZhY2V0VmVyc2lvbigpKTsKLSAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcHJvamVjdEZhY2V0VmVyc2lvbnM7ICAgIAotICB9ICAKLSAgCi0gIHB1YmxpYyBSdW50aW1lRGVzY3JpcHRvciBnZXRSdW50aW1lKCkKLSAgewotICAgIGlmIChydW50aW1lID09IG51bGwpCi0gICAgewotICAgICBTdHJpbmcgcnVudGltZUlkID0gZWxlbS5nZXRBdHRyaWJ1dGUoInJ1bnRpbWVJZCIpOwotICAgICBydW50aW1lID0gKFJ1bnRpbWVEZXNjcmlwdG9yKWFsbFJ1bnRpbWVzLmdldChydW50aW1lSWQpOwotICAgIH0gICAgCi0gICAgcmV0dXJuIHJ1bnRpbWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJV2ViU2VydmljZVJ1bnRpbWUgZ2V0V2ViU2VydmljZVJ1bnRpbWUoKQotICB7Ci0gICAgaWYgKHdlYlNlcnZpY2VSdW50aW1lID09IG51bGwpCi0gICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgICAgd2ViU2VydmljZVJ1bnRpbWUgPSAoSVdlYlNlcnZpY2VSdW50aW1lKWVsZW0uY3JlYXRlRXhlY3V0YWJsZUV4dGVuc2lvbigiY2xhc3MiKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaChDb3JlRXhjZXB0aW9uIGNlKQotICAgICAgICB7Ci0gICAgICAgICAgICAKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gd2ViU2VydmljZVJ1bnRpbWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyIGdldENsaWVudFJ1bnRpbWVDaGVja2VyKCkKLSAgewotICAgIGlmICh3ZWJTZXJ2aWNlUnVudGltZUNoZWNrZXIgPT0gbnVsbCkKLSAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgIAlpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoInJ1bnRpbWVDaGVja2VyIikgIT0gbnVsbCApIHsKLSAgICAgICAgCQl3ZWJTZXJ2aWNlUnVudGltZUNoZWNrZXIgPSAoSVdlYlNlcnZpY2VSdW50aW1lQ2hlY2tlcillbGVtLmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oInJ1bnRpbWVDaGVja2VyIik7Ci0gICAgICAgIAl9Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goQ29yZUV4Y2VwdGlvbiBjZSkKLSAgICAgICAgewotICAgICAgICAgICAgCi0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHdlYlNlcnZpY2VSdW50aW1lQ2hlY2tlcjsKLSAgfSAKLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UnVudGltZVByZWZlcnJlZFNlcnZlclR5cGUoKQotICB7Ci0gICAgaWYgKHJ1bnRpbWVQcmVmZXJyZWRTZXJ2ZXJUeXBlID09IG51bGwpCi0gICAgewotICAgIAlydW50aW1lUHJlZmVycmVkU2VydmVyVHlwZSA9IGVsZW0uZ2V0QXR0cmlidXRlKCJydW50aW1lUHJlZmVycmVkU2VydmVyVHlwZSIpOwotICAgIH0KLSAgICByZXR1cm4gcnVudGltZVByZWZlcnJlZFNlcnZlclR5cGU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9DbGllbnRUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvQ2xpZW50VHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2M0YjUxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9DbGllbnRUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjE2ICAgMTI3MTM4IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBjb20uaWJtLmljdS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotcHVibGljIGNsYXNzIENsaWVudFR5cGUgewotCi0gIHByaXZhdGUgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW1fOwotICBwcml2YXRlIEhhc2h0YWJsZSB3ZWJTZXJ2aWNlQ2xpZW50SW1wbHNfOwotICAgIAotCXByaXZhdGUgU3RyaW5nIGlkOwotCXByaXZhdGUgV2ViU2VydmljZUNsaWVudEltcGwgd2ViU2VydmljZUNsaWVudEltcGw7Ci0JcHJpdmF0ZSBTdHJpbmdbXSBtb2R1bGVUeXBlc0luY2x1ZGU7Ci0gIHByaXZhdGUgU3RyaW5nW10gbW9kdWxlVHlwZXNFeGNsdWRlOwotCQotICAKLSAgCi0JcHVibGljIENsaWVudFR5cGUoSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW1fLCBIYXNodGFibGUgd2ViU2VydmljZUNsaWVudEltcGxzXykKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgdGhpcy5lbGVtXyA9IGVsZW1fOwotICAgIHRoaXMud2ViU2VydmljZUNsaWVudEltcGxzXyA9IHdlYlNlcnZpY2VDbGllbnRJbXBsc187Ci0gIH0KLQotCi0KLSAgcHVibGljIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICBpZiAoaWQ9PW51bGwpCi0gICAgewotICAgICAgaWQgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoImlkIik7Ci0gICAgfQotICAgIHJldHVybiBpZDsKLSAgfQotICAKLQotCi0KLSAgcHVibGljIFN0cmluZ1tdIGdldE1vZHVsZVR5cGVzRXhjbHVkZSgpCi0gIHsKLSAgICBpZiAobW9kdWxlVHlwZXNFeGNsdWRlPT1udWxsKQotICAgIHsKLSAgICAgIFN0cmluZyBhdHRyID0gZWxlbV8uZ2V0QXR0cmlidXRlKCJtb2R1bGVUeXBlc0V4Y2x1ZGUiKTsKLSAgICAgIGlmIChhdHRyICE9IG51bGwgJiYgYXR0ci5sZW5ndGgoKT4wKQotICAgICAgewotICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGF0dHIsICIgIik7Ci0gICAgICAgIGludCBzaXplID0gc3QuY291bnRUb2tlbnMoKTsKLSAgICAgICAgbW9kdWxlVHlwZXNFeGNsdWRlID0gbmV3IFN0cmluZ1tzaXplXTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtb2R1bGVUeXBlc0V4Y2x1ZGUubGVuZ3RoOyBpKyspCi0gICAgICAgICAgbW9kdWxlVHlwZXNFeGNsdWRlW2ldID0gc3QubmV4dFRva2VuKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBtb2R1bGVUeXBlc0V4Y2x1ZGU7Ci0gIH0KLSAgCi0KLQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRNb2R1bGVUeXBlc0luY2x1ZGUoKQotICB7Ci0gICAgaWYgKG1vZHVsZVR5cGVzSW5jbHVkZT09bnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgYXR0ciA9IGVsZW1fLmdldEF0dHJpYnV0ZSgibW9kdWxlVHlwZXNJbmNsdWRlIik7Ci0gICAgICBpZiAoYXR0ciAhPSBudWxsICYmIGF0dHIubGVuZ3RoKCk+MCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihhdHRyLCAiICIpOwotICAgICAgICBpbnQgc2l6ZSA9IHN0LmNvdW50VG9rZW5zKCk7Ci0gICAgICAgIG1vZHVsZVR5cGVzSW5jbHVkZSA9IG5ldyBTdHJpbmdbc2l6ZV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbW9kdWxlVHlwZXNJbmNsdWRlLmxlbmd0aDsgaSsrKQotICAgICAgICAgIG1vZHVsZVR5cGVzSW5jbHVkZVtpXSA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbW9kdWxlVHlwZXNJbmNsdWRlOwotICB9Ci0gIAotCi0KLQotICBwdWJsaWMgV2ViU2VydmljZUNsaWVudEltcGwgZ2V0V2ViU2VydmljZUNsaWVudEltcGwoKQotICB7Ci0gICAgaWYgKHdlYlNlcnZpY2VDbGllbnRJbXBsPT1udWxsKQotICAgIHsKLSAgICAgIFN0cmluZyB3c2NpbXBsSWQgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoImltcGxJZCIpOwotICAgICAgd2ViU2VydmljZUNsaWVudEltcGwgPSAoV2ViU2VydmljZUNsaWVudEltcGwpd2ViU2VydmljZUNsaWVudEltcGxzXy5nZXQod3NjaW1wbElkKTsKLSAgICB9Ci0gICAgcmV0dXJuIHdlYlNlcnZpY2VDbGllbnRJbXBsOwotICB9Ci0gIAotCi0KLSAgLyoKLSAgcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlQ2xpZW50VHlwZUlkKCkKLSAgewotICAgIGlmICh3ZWJTZXJ2aWNlQ2xpZW50VHlwZUlkPT1udWxsKQotICAgIHsKLSAgICAgIHdlYlNlcnZpY2VDbGllbnRUeXBlSWQgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoIndlYlNlcnZpY2VDbGllbnRUeXBlSWQiKTsKLSAgICB9Ci0gICAgcmV0dXJuIHdlYlNlcnZpY2VDbGllbnRUeXBlSWQ7Ci0gIH0KLSAgKi8KLQotCi0JCi0JCi0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvQ29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L0NvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM0YTZlOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlU2NlbmFyaW87Ci0KLS8qKgotICogQGF1dGhvciByc2luaGEKLSAqCi0gKiBUT0RPIFRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZ2VuZXJhdGVkIHR5cGUgY29tbWVudCBnbyB0bwotICogV2luZG93IC0gUHJlZmVyZW5jZXMgLSBKYXZhIC0gQ29kZSBTdHlsZSAtIENvZGUgVGVtcGxhdGVzCi0gKi8KLXB1YmxpYyBjbGFzcyBDb250ZXh0IGltcGxlbWVudHMgSUNvbnRleHQgewkKLQlwcml2YXRlIFdlYlNlcnZpY2VTY2VuYXJpbyBzY2VuYXJpbzsKLQlwcml2YXRlIGJvb2xlYW4gZGV2ZWxvcDsKLQlwcml2YXRlIGJvb2xlYW4gYXNzZW1ibGU7Ci0JcHJpdmF0ZSBib29sZWFuIGRlcGxveTsKLQlwcml2YXRlIGJvb2xlYW4gaW5zdGFsbDsKLQlwcml2YXRlIGJvb2xlYW4gcnVuOwotCXByaXZhdGUgYm9vbGVhbiBjbGllbnQ7Ci0JcHJpdmF0ZSBib29sZWFuIHRlc3Q7Ci0JcHJpdmF0ZSBib29sZWFuIHB1Ymxpc2g7Ci0JcHJpdmF0ZSBib29sZWFuIG92ZXJXcml0ZUZpbGVzOwotCXByaXZhdGUgYm9vbGVhbiBjcmVhdGVGb2xkZXJzOwotCXByaXZhdGUgYm9vbGVhbiBjaGVja091dEZpbGVzOwotCQotCXB1YmxpYyBib29sZWFuIGdldEFzc2VtYmxlKCkgewotCQlyZXR1cm4gYXNzZW1ibGU7Ci0JfQotCQotCXB1YmxpYyBib29sZWFuIGdldENoZWNrT3V0RmlsZXMoKSB7Ci0JCXJldHVybiBjaGVja091dEZpbGVzOwotCX0KLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRDbGllbnQoKSB7Ci0JCXJldHVybiBjbGllbnQ7Ci0JfQotCQotCXB1YmxpYyBib29sZWFuIGdldENyZWF0ZUZvbGRlcnMoKSB7Ci0JCXJldHVybiBjcmVhdGVGb2xkZXJzOwotCX0KLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXREZXBsb3koKSB7Ci0JCXJldHVybiBkZXBsb3k7Ci0JfQotCQotCXB1YmxpYyBib29sZWFuIGdldERldmVsb3AoKSB7Ci0JCXJldHVybiBkZXZlbG9wOwotCX0KLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRJbnN0YWxsKCkgewotCQlyZXR1cm4gaW5zdGFsbDsKLQl9Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0T3ZlcldyaXRlRmlsZXMoKSB7Ci0JCXJldHVybiBvdmVyV3JpdGVGaWxlczsKLQl9Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0UHVibGlzaCgpIHsKLQkJcmV0dXJuIHB1Ymxpc2g7Ci0JfQotCQotCXB1YmxpYyBib29sZWFuIGdldFJ1bigpIHsKLQkJcmV0dXJuIHJ1bjsKLQl9Ci0JCi0JcHVibGljIFdlYlNlcnZpY2VTY2VuYXJpbyBnZXRTY2VuYXJpbygpIHsKLQkJcmV0dXJuIHNjZW5hcmlvOwotCX0KLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRUZXN0KCkgewotCQlyZXR1cm4gdGVzdDsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRBc3NlbWJsZShib29sZWFuIGFzc2VtYmxlKSB7Ci0JCXRoaXMuYXNzZW1ibGUgPSBhc3NlbWJsZTsKLQl9Ci0JCi0KLQlwdWJsaWMgdm9pZCBzZXRDaGVja091dEZpbGVzKGJvb2xlYW4gY2hlY2tPdXRGaWxlcykgewotCQl0aGlzLmNoZWNrT3V0RmlsZXMgPSBjaGVja091dEZpbGVzOwotCX0KLQkKLQotCXB1YmxpYyB2b2lkIHNldENsaWVudChib29sZWFuIGNsaWVudCkgewotCQl0aGlzLmNsaWVudCA9IGNsaWVudDsKLQl9Ci0JCi0KLQlwdWJsaWMgdm9pZCBzZXRDcmVhdGVGb2xkZXJzKGJvb2xlYW4gY3JlYXRlRm9sZGVycykgewotCQl0aGlzLmNyZWF0ZUZvbGRlcnMgPSBjcmVhdGVGb2xkZXJzOwotCX0KLQkKLQotCXB1YmxpYyB2b2lkIHNldERlcGxveShib29sZWFuIGRlcGxveSkgewotCQl0aGlzLmRlcGxveSA9IGRlcGxveTsKLQl9Ci0JCi0KLQlwdWJsaWMgdm9pZCBzZXREZXZlbG9wKGJvb2xlYW4gZGV2ZWxvcCkgewotCQl0aGlzLmRldmVsb3AgPSBkZXZlbG9wOwotCX0KLQkKLQotCXB1YmxpYyB2b2lkIHNldEluc3RhbGwoYm9vbGVhbiBpbnN0YWxsKSB7Ci0JCXRoaXMuaW5zdGFsbCA9IGluc3RhbGw7Ci0JfQotCQotCi0JcHVibGljIHZvaWQgc2V0T3ZlcldyaXRlRmlsZXMoYm9vbGVhbiBvdmVyV3JpdGVGaWxlcykgewotCQl0aGlzLm92ZXJXcml0ZUZpbGVzID0gb3ZlcldyaXRlRmlsZXM7Ci0JfQotCQotCi0JcHVibGljIHZvaWQgc2V0UHVibGlzaChib29sZWFuIHB1Ymxpc2gpIHsKLQkJdGhpcy5wdWJsaXNoID0gcHVibGlzaDsKLQl9Ci0JCi0KLQlwdWJsaWMgdm9pZCBzZXRSdW4oYm9vbGVhbiBydW4pIHsKLQkJdGhpcy5ydW4gPSBydW47Ci0JfQotCQotCi0JcHVibGljIHZvaWQgc2V0U2NlbmFyaW8oV2ViU2VydmljZVNjZW5hcmlvIHNjZW5hcmlvKSB7Ci0JCXRoaXMuc2NlbmFyaW8gPSBzY2VuYXJpbzsKLQl9Ci0JCi0KLQlwdWJsaWMgdm9pZCBzZXRUZXN0KGJvb2xlYW4gdGVzdCkgewotCQl0aGlzLnRlc3QgPSB0ZXN0OwotCX0JCQotCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L0ZhY2V0TWF0Y2hDYWNoZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L0ZhY2V0TWF0Y2hDYWNoZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjQzMTAxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9GYWNldE1hdGNoQ2FjaGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ5NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAxMzEgICAxMjEwNzEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyIChpbml0aWFsIGNyZWF0aW9uKQotICogMjAwNjA0MjYgICAxMzgwNTEga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNDI3ICAgMTI2NzgwIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwODA5MjMgICAyNDc1MjUgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBjYWNoZSBub3QgdXBkYXRlZCBwcm9wZXJseSB3aGVuIHByb2plY3QgZmFjZXQgdmVyc2lvbnMgY2hhbmdlZAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0OwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZUNoYW5nZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZUNoYW5nZUxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldE1hdGNoZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldFNldHNCeVRlbXBsYXRlQ2FjaGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uUmVxdWlyZWRGYWNldFZlcnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuUHJvamVjdEZhY2V0c01hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUucnVudGltZS5JUnVudGltZTsKLQotLyoqCi0gKiBGYWNldE1hdGNoQ2FjaGUgY2FjaGVzIHJlc3VsdHMgb2YgY2FsY3VsYXRpb25zIG1hZGUgcmVzcGVjdGluZwotICogdGhlIHN1aXRhYmlsaXR5IG9mIHByb2plY3RzIGFuZCBwcm9qZWN0IHR5cGVzIGZvciBzZXJ2aWNlUnVudGltZXMKLSAqIGFuZCBjbGllbnRSdW50aW1lcy4KLSAqIAotICogPGJyLz48YnIvPgotICogVGVybWlub2xvZ3kgdXNlZCBpbiB0aGUgamF2YWRvYyBpbiB0aGlzIGNsYXNzOgotICogPHVsPgotICogPGxpPjxiPnNlcnZpY2VSdW50aW1lPC9iPjogZXh0ZW5zaW9uIHRvIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5zZXJ2aWNlUnVudGltZXMuCi0gKiBUaGUgSmF2YSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGlzIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LlNlcnZpY2VSdW50aW1lRGVzY3JpcHRvcjwvbGk+Ci0gKiA8bGk+PGI+Y2xpZW50UnVudGltZTwvYj46IGV4dGVuc2lvbiB0byBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuY2xpZW50UnVudGltZXMuCi0gKiBUaGUgSmF2YSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGlzIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LkNsaWVudFJ1bnRpbWVEZXNjcmlwdG9yPC9saT4KLSAqIDwvdWw+Ci0gKgotICovCi1wdWJsaWMgY2xhc3MgRmFjZXRNYXRjaENhY2hlIGltcGxlbWVudHMgSVJlc291cmNlQ2hhbmdlTGlzdGVuZXIKLXsKLSAgLy9zaW5nbGUgaW5zdGFuY2UgcGVyIHdvcmtiZW5jaAotICBwcml2YXRlIHN0YXRpYyBGYWNldE1hdGNoQ2FjaGUgaW5zdGFuY2VfOwotICAKLSAgCi0gIC8vVGFibGVzIHJlbGF0ZWQgdG8gZXhpc3RpbmcgcHJvamVjdHMgaW4gdGhlIHdvcmtzcGFjZQotICAKLSAgLy9zZXJ2aWNlRmFjZXRNYXRjaFRhYmxlXzogCi0gIC8va2V5OiBPYmplY3Qgb2YgdHlwZSBTdHJpbmcuCi0gIC8vICAgICBGb3J3YXJkIHNsYXNoIHNlcGFyYXRlZCBjb25jYXRlbmF0aW9uIG9mIGEgc2VydmljZVJ1bnRpbWVJZCBhbmQgYSBwcm9qZWN0TmFtZSAKLSAgLy8gICAgIChlLmcuIG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLmphdmEvd3ApLgotICAvL3ZhbHVlOiBPYmplY3Qgb2YgdHlwZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0TWF0Y2hlci4KLSAgLy8gICAgICAgVGhlIEZhY2V0TWF0Y2hlciBjb250YWlucyB0aGUgbWF0Y2hpbmcgY2hhcmFjdGVyaXN0aWNzIGNhbGN1bGF0ZWQgZm9yIHRoZSAKLSAgLy8gICAgICAgc2VydmljZVJ1bnRpbWUgYW5kIHByb2plY3QgaW4gdGhlIGtleS4KLSAgcHJpdmF0ZSBIYXNodGFibGUgc2VydmljZUZhY2V0TWF0Y2hUYWJsZV87Ci0gIAotICAvL3NlcnZpY2VUYWJsZUtleXNCeVByb2plY3ROYW1lXzogCi0gIC8va2V5OiBPYmplY3Qgb2YgdHlwZSBTdHJpbmcuCi0gIC8vICAgICBwcm9qZWN0IG5hbWUgKGUuZy4gd3ApCi0gIC8vdmFsdWU6IFNldCBvZiBlbGVtZW50cyBvZiB0eXBlIFN0cmluZy4gVGhlIFN0cmluZ3MgaW4gdGhlIFNldCBhcmUga2V5cyBmcm9tIHRoZSBzZXJ2aWNlRmFjZXRNYXRjaFRhYmxlXyAKLSAgLy8gICAgICAgdGhhdCBjb250YWluIHRoZSBwcm9qZWN0IG5hbWUgKGUuZy4gb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24uamF2YS93cCkuIFVzZWQgdG8gcmFwaWRseQotICAvLyAgICAgICBkZWxldGUgZW50cmllcyBmcm9tIHNlcnZpY2VGYWNldE1hdGNoVGFibGVfIGFmdGVyIGEgcHJvamVjdCBpcyBkZWxldGVkIGZyb20gdGhlIHdvcmtzcGFjZS4KLSAgcHJpdmF0ZSBIYXNodGFibGUgc2VydmljZVRhYmxlS2V5c0J5UHJvamVjdE5hbWVfOwotICAKLSAgLy9jbGllbnRGYWNldE1hdGNoVGFibGVfOwotICAvL2tleTogT2JqZWN0IG9mIHR5cGUgU3RyaW5nLgotICAvLyAgICAgZm9yd2FyZCBzbGFzaCBzZXBhcmF0ZWQgY29uY2F0ZW5hdGlvbiBvZiBhIGNsaWVudFJ1bnRpbWVJZCBhbmQgYSBwcm9qZWN0TmFtZSAKLSAgLy8gICAgIChlLmcuIG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmphdmEvd3ApCi0gIC8vdmFsdWU6IE9iamVjdCBvZiB0eXBlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uRmFjZXRNYXRjaGVyCi0gIC8vICAgICAgIFRoZSBGYWNldE1hdGNoZXIgY29udGFpbnMgdGhlIG1hdGNoaW5nIGNoYXJhY3RlcmlzdGljcyBjYWxjdWxhdGVkIGZvciB0aGUgCi0gIC8vICAgICAgIGNsaWVudFJ1bnRpbWUgYW5kIHByb2plY3QgaW4gdGhlIGtleS4KLSAgcHJpdmF0ZSBIYXNodGFibGUgY2xpZW50RmFjZXRNYXRjaFRhYmxlXzsKLSAgCi0gIC8vY2xpZW50VGFibGVLZXlzQnlQcm9qZWN0TmFtZV8KLSAgLy9rZXk6IE9iamVjdCBvZiB0eXBlIFN0cmluZy4KLSAgLy8gICAgIHByb2plY3QgbmFtZSAoZS5nLiB3cCkKLSAgLy92YWx1ZTogU2V0IG9mIGVsZW1lbnRzIG9mIHR5cGUgU3RyaW5nLiBUaGUgU3RyaW5ncyBpbiB0aGUgU2V0IGFyZSBrZXlzIGZyb20gdGhlIGNsaWVudEZhY2V0TWF0Y2hUYWJsZV8gCi0gIC8vICAgICAgIHRoYXQgY29udGFpbiB0aGUgcHJvamVjdCBuYW1lIChlLmcuIG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmphdmEvd3ApLiBVc2VkIHRvIHJhcGlkbHkKLSAgLy8gICAgICAgZGVsZXRlIGVudHJpZXMgZnJvbSBjbGllbnRGYWNldE1hdGNoVGFibGVfIGFmdGVyIGEgcHJvamVjdCBpcyBkZWxldGVkIGZyb20gdGhlIHdvcmtzcGFjZS4KLSAgcHJpdmF0ZSBIYXNodGFibGUgY2xpZW50VGFibGVLZXlzQnlQcm9qZWN0TmFtZV87Ci0gIAotICAvL3Byb2plY3RFbnRyaWVzVG9EZWxldGVfOiBlbGVtZW50cyBvZiB0eXBlIFN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBwcm9qZWN0cyB0aGF0IGhhdmUKLSAgLy9iZWVuIGRlbGV0ZWQgZnJvbSB0aGUgd29ya3NwYWNlIGJ1dCB0aGVpciBjb3JyZXNwb25kaW5nIGVudHJpZXMgZnJvbSBzZXJ2aWNlRmFjZXRNYXRjaFRhYmxlXyAKLSAgLy9hbmQgY2xpZW50RmFjZXRNYXRjaFRhYmxlXyBoYXZlIHlldCB0byBiZSBkZWxldGVkLgotICBwcml2YXRlIExpc3QgcHJvamVjdEVudHJpZXNUb0RlbGV0ZV87Ci0gICAgCi0gIAotICAKLSAgLy9UYWJsZXMgcmVsYXRlZCB0byB0ZW1wbGF0ZXMgIAotICAKLSAgLy90ZW1wbGF0ZXNCeVNlcnZpY2VSdW50aW1lSWRfOgotICAvL2tleTogT2JqZWN0IG9mIHR5cGUgU3RyaW5nLgotICAvLyAgICAgc2VydmljZVJ1bnRpbWUgaWQKLSAgLy92YWx1ZTogU2V0IG9mIGVsZW1lbnRzIG9mIHR5cGUgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUgICAKLSAgLy8gICAgICAgVGhpcyB0aGUgc2V0IG9mIHRlbXBsYXRlcyB0aGF0IHN1cHBvcnQgdGhlIHNlcnZpY2VSdW50aW1lIGlkZW50aWZpZWQgYnkgdGhlIGtleS4KLSAgcHJpdmF0ZSBIYXNodGFibGUgdGVtcGxhdGVzQnlTZXJ2aWNlUnVudGltZUlkXzsKLSAgCi0gIC8vdGVtcGxhdGVzQnlDbGllbnRSdW50aW1lSWRfCi0gIC8va2V5OiBPYmplY3Qgb2YgdHlwZSBTdHJpbmcuCi0gIC8vICAgICBjbGllbnRSdW50aW1lIGlkCi0gIC8vdmFsdWU6IFNldCBvZiBlbGVtZW50cyBvZiB0eXBlIG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklGYWNldGVkUHJvamVjdFRlbXBsYXRlCi0gIC8vICAgICAgIFRoaXMgdGhlIHNldCBvZiB0ZW1wbGF0ZXMgdGhhdCBzdXBwb3J0IHRoZSBjbGllbnRSdW50aW1lIGlkZW50aWZpZWQgYnkgdGhlIGtleS4KLSAgcHJpdmF0ZSBIYXNodGFibGUgdGVtcGxhdGVzQnlDbGllbnRSdW50aW1lSWRfOwotICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCi0gICAqIAotICAgKiBAcmV0dXJuIEEgc2luZ2xldG9uIEZhY2V0TWF0Y2hDYWNoZSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBGYWNldE1hdGNoQ2FjaGUgZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgaWYgKGluc3RhbmNlXyA9PSBudWxsKQotICAgIHsKLSAgICAgIGluc3RhbmNlXyA9IG5ldyBGYWNldE1hdGNoQ2FjaGUoKTsKLSAgICAgIGluc3RhbmNlXy5sb2FkKCk7Ci0gICAgfQotICAgIHJldHVybiBpbnN0YW5jZV87Ci0gIH0gIAotICAKLSAgcHJpdmF0ZSB2b2lkIGxvYWQoKQotICB7Ci0gICAgc2VydmljZUZhY2V0TWF0Y2hUYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgc2VydmljZVRhYmxlS2V5c0J5UHJvamVjdE5hbWVfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGNsaWVudEZhY2V0TWF0Y2hUYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7ICAgIAotICAgIGNsaWVudFRhYmxlS2V5c0J5UHJvamVjdE5hbWVfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHByb2plY3RFbnRyaWVzVG9EZWxldGVfID0gbmV3IEFycmF5TGlzdCgpOwotICAgIHRlbXBsYXRlc0J5Q2xpZW50UnVudGltZUlkXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICB0ZW1wbGF0ZXNCeVNlcnZpY2VSdW50aW1lSWRfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIAotICAgIC8vTGlzdGVuIGZvciBkZWxldGlvbnMgb2YgcHJvamVjdHMgaW4gb3JkZXIgdG8gZGVsZXRlIGFsbCBlbnRyaWVzIGluCi0gICAgLy9IYXNodGFibGVzIGZvciB0aGUgZGVsZXRlZCBwcm9qZWN0LgotICAgIFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5hZGRSZXNvdXJjZUNoYW5nZUxpc3RlbmVyKHRoaXMsIElSZXNvdXJjZUNoYW5nZUV2ZW50LlBSRV9ERUxFVEUpOwotICB9Ci0gIAotCi0gIC8qCi0gICAqIFJldHVybnMgdGhlIEZhY2V0TWF0Y2hlciByZXN1bHRpbmcgZnJvbSBtYXRjaGluZyBhIHNlcnZpY2VSdW50aW1lIG9yIGNsaWVudFJ1bnRpbWUgd2l0aCBhbiBleGlzdGluZyBwcm9qZWN0LgotICAgKiBAcGFyYW0gaXNDbGllbnQgdHJ1ZSBpZiBydW50aW1lSWQgaXMgYSBjbGllbnRSdW50aW1lSWQuIGZhbHNlIGlmIHJ1bnRpbWVJZCBpcyBhIHNlcnZpY2VSdW50aW1lSWQuCi0gICAqIEBwYXJhbSBydW50aW1lSWQgdGhlIGlkIG9mIGEgY2xpZW50UnVudGltZSBpZiBpc0NsaWVudCBpcyB0cnVlIG9yIHRoZSBpZCBvZiBhIHNlcnZpY2VSdW50aW1lIGlmCi0gICAqIGlzQ2xpZW50IGlzIGZhbHNlLgotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgdGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgcHJvamVjdC4KLSAgICogCi0gICAqIEByZXR1cm5zIEZhY2V0TWF0Y2hlciByZXN1bHRpbmcgZnJvbSBjYWxsaW5nIEZhY2V0VXRpbHMubWF0Y2goLi4pIHVzaW5nIHRoZSBzZXJ2aWNlUnVudGltZSBvciBjbGllbnRSdW50aW1lIGlkCi0gICAqIGFuZCB0aGUgcHJvamVjdCBuYW1lLiBSZXR1cm5zIG51bGwgaWYgdGhlIHByb2plY3QgZG9lc24ndCBleGlzdC4gTm9uLWZhY2V0ZWQgZXhpc3RpbmcgcHJvamVjdHMgd2lsbCBhbHdheXMgcmVzdWx0Ci0gICAqIGluIGEgRmFjZXRNYXRjaGVyIHdpdGggaXNNYXRjaCgpIGVxdWFsIHRvIGZhbHNlICh3aXRoIHRoZSBleGNlcHRpb24gb2YgSmF2YSBwcm9qZWN0cyB3aGljaCBhcmUgYSBzcGVjaWFsIGNhc2UgCi0gICAqIC0gc2VlIEZhY2V0VXRpbHMuZ2V0RmFjZXRzRm9yUHJvamVjdCgpKS4KLSAgICovCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgRmFjZXRNYXRjaGVyIGdldE1hdGNoRm9yUHJvamVjdChib29sZWFuIGlzQ2xpZW50LCBTdHJpbmcgcnVudGltZUlkLCBTdHJpbmcgcHJvamVjdE5hbWUpCi0gIHsgICAgCi0gICAgLy9EZWxldGUgZW50cmllcyBmcm9tIHRhYmxlcyBpZiB0aGVyZSBhcmUgZGVsZXRpb25zIHBlbmRpbmcuCi0gICAgaWYgKHByb2plY3RFbnRyaWVzVG9EZWxldGVfLnNpemUoKSA+IDApCi0gICAgewotICAgICAgSXRlcmF0b3IgcHJvamVjdEl0ciA9IHByb2plY3RFbnRyaWVzVG9EZWxldGVfLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZShwcm9qZWN0SXRyLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHByb2plY3ROYW1lVG9EZWxldGUgPSAoU3RyaW5nKXByb2plY3RJdHIubmV4dCgpOwotICAgICAgIAotICAgICAgICAvL0RlbGV0ZSBlbnRyaWVzIGZyb20gY2xpZW50IHRhYmxlCi0gICAgICAgIHJlbW92ZVRhYmxlRW50cmllc0ZvclByb2plY3QodHJ1ZSwgcHJvamVjdE5hbWVUb0RlbGV0ZSk7Ci0gICAgICAgIAotICAgICAgICAvL0RlbGV0ZSBlbnRyaWVzIGZyb20gc2VydmljZSB0YWJsZQotICAgICAgICByZW1vdmVUYWJsZUVudHJpZXNGb3JQcm9qZWN0KGZhbHNlLCBwcm9qZWN0TmFtZVRvRGVsZXRlKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgLy9DbGVhciB0aGUgcHJvamVjdEVudHJpZXNUb0RlbGV0ZSBsaXN0Ci0gICAgICBwcm9qZWN0RW50cmllc1RvRGVsZXRlXy5jbGVhcigpOwotICAgIH0KLSAgICAKLSAgICBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLSAgICBGYWNldE1hdGNoZXIgZm0gPSBudWxsOwotICAgIGlmIChwcm9qZWN0ICE9IG51bGwgJiYgcHJvamVjdC5leGlzdHMoKSkKLSAgICB7Ci0gICAgICBTdHJpbmcga2V5ID0gZ2V0S2V5KHJ1bnRpbWVJZCwgcHJvamVjdE5hbWUpOwotICAgICAgaWYgKGlzQ2xpZW50KQotICAgICAgewotICAgICAgICBmbSA9IChGYWNldE1hdGNoZXIpIGNsaWVudEZhY2V0TWF0Y2hUYWJsZV8uZ2V0KGtleSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGZtID0gKEZhY2V0TWF0Y2hlcikgc2VydmljZUZhY2V0TWF0Y2hUYWJsZV8uZ2V0KGtleSk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIGlmIChmbSA9PSBudWxsKQotICAgICAgewotICAgICAgICAvLyBUaGlzIGNvbWJpbmF0aW9uIGhhcyBub3QgeWV0IGJlZW4gY2FsY3VsYXRlZCBhbmQgY2FjaGVkIHNvIGNhbGN1bGF0ZSBpdCBhbmQgY2FjaGUgaXQuICAgICAgICAKLSAgICAgICAgZm0gPSBjYWxjdWxhdGVGYWNldE1hdGNoZXIoaXNDbGllbnQsIHJ1bnRpbWVJZCwgcHJvamVjdE5hbWUpOyAgICAgICAgIAotICAgICAgICBpZiAoaXNDbGllbnQpCi0gICAgICAgIHsKLSAgICAgICAgICBjbGllbnRGYWNldE1hdGNoVGFibGVfLnB1dChrZXksZm0pOyAgICAgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgc2VydmljZUZhY2V0TWF0Y2hUYWJsZV8ucHV0KGtleSwgZm0pOwotICAgICAgICB9Ci0gICAgICAgIHVwZGF0ZVRhYmxlT2ZLZXlzKGlzQ2xpZW50LCBrZXksIHByb2plY3ROYW1lKTsKLSAgICAgICAgCi0gICAgICB9IGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gSWYgdGhlIHByb2plY3QncyBmYWNldHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlCi0gICAgICAgIC8vIGZhY2V0cyB3ZXJlIGNhbGN1bGF0ZWQsIHJlZnJlc2ggdGhlIGZhY2V0TWF0Y2hlci4gICAgICAgIAotICAgICAgICBTZXQgY3VycmVudEZhY2V0VmVyc2lvbnMgPSBGYWNldFV0aWxzLmdldEZhY2V0c0ZvclByb2plY3QocHJvamVjdE5hbWUpOwotICAgICAgICBTZXQgcHJldmlvdXNGYWNldFZlcnNpb25zID0gZm0uZ2V0RmFjZXRzVGVzdGVkKCk7Ci0gICAgICAgIGlmICghY3VycmVudEZhY2V0VmVyc2lvbnMuZXF1YWxzKHByZXZpb3VzRmFjZXRWZXJzaW9ucykpCi0gICAgICAgIHsKLSAgICAgICAgICAvL3JlY2FsY3VsYXRlIGFuZCBjYWNoZSB0aGUgRmFjZXRNYXRjaGVyCi0gICAgICAgICAgZm0gPSBjYWxjdWxhdGVGYWNldE1hdGNoZXIoaXNDbGllbnQsIHJ1bnRpbWVJZCwgcHJvamVjdE5hbWUpOwotICAgICAgICAgIGlmIChpc0NsaWVudCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBjbGllbnRGYWNldE1hdGNoVGFibGVfLnB1dChrZXksZm0pOyAgICAgICAgIAotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgc2VydmljZUZhY2V0TWF0Y2hUYWJsZV8ucHV0KGtleSwgZm0pOwotICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmbTsgICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBVcGRhdGVzIHNlcnZpY2VUYWJsZUtleXNCeVByb2plY3ROYW1lXyBvciBjbGllbnRUYWJsZUtleXNCeVByb2plY3ROYW1lXyB3aXRoCi0gICAqIHRoZSBwcm92aWRlZCBwcm9qZWN0IG5hbWUgYW5kIGtleS4gVGhpcyBpcyBjYWxsZWQgd2hlbmV2ZXIgYSBuZXcgZW50cnkgaXMgCi0gICAqIGFkZGVkIHRvIHNlcnZpY2VGYWNldE1hdGNoVGFibGVfIG9yIGNsaWVudEZhY2V0TWF0Y2hUYWJsZV8uCi0gICAqIEBwYXJhbSBpc0NsaWVudCB0cnVlIGlmIHJ1bnRpbWVJZCBpcyBhIGNsaWVudFJ1bnRpbWVJZC4gZmFsc2UgaWYgcnVudGltZUlkIGlzIGEgc2VydmljZVJ1bnRpbWVJZC4KLSAgICogQHBhcmFtIGtleSAKLSAgICogQHBhcmFtIHByb2plY3ROYW1lCi0gICAqLwotICBwcml2YXRlIHZvaWQgdXBkYXRlVGFibGVPZktleXMoYm9vbGVhbiBpc0NsaWVudCwgU3RyaW5nIGtleSwgU3RyaW5nIHByb2plY3ROYW1lKQotICB7Ci0gICAgU2V0IHNldE9mS2V5c0ZvclByb2plY3ROYW1lID0gbnVsbDsKLSAgICBpZiAoaXNDbGllbnQpCi0gICAgewotICAgICAgc2V0T2ZLZXlzRm9yUHJvamVjdE5hbWUgPSAoU2V0KWNsaWVudFRhYmxlS2V5c0J5UHJvamVjdE5hbWVfLmdldChwcm9qZWN0TmFtZSk7ICAgICAgCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBzZXRPZktleXNGb3JQcm9qZWN0TmFtZSA9IChTZXQpc2VydmljZVRhYmxlS2V5c0J5UHJvamVjdE5hbWVfLmdldChwcm9qZWN0TmFtZSk7Ci0gICAgfQotICAgIAotICAgIGlmIChzZXRPZktleXNGb3JQcm9qZWN0TmFtZSA9PSBudWxsKQotICAgIHsKLSAgICAgIC8vQWRkIGFuIGVudHJ5IGluIHRoZSB0YWJsZSBmb3IgdGhpcyBwcm9qZWN0LgotICAgICAgU2V0IGtleXMgPSBuZXcgSGFzaFNldCgpOwotICAgICAga2V5cy5hZGQoa2V5KTsKLSAgICAgIGlmIChpc0NsaWVudCkKLSAgICAgIHsKLSAgICAgICAgY2xpZW50VGFibGVLZXlzQnlQcm9qZWN0TmFtZV8ucHV0KHByb2plY3ROYW1lLCBrZXlzKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgc2VydmljZVRhYmxlS2V5c0J5UHJvamVjdE5hbWVfLnB1dChwcm9qZWN0TmFtZSwga2V5cyk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvL1VwZGF0ZSB0aGUgZW50cnkgaW4gdGhlIHRhYmxlIGZvciB0aGlzIHByb2plY3QuCi0gICAgICBzZXRPZktleXNGb3JQcm9qZWN0TmFtZS5hZGQoa2V5KTsgICAgICAKLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB7QGxpbmsgRmFjZXRNYXRjaGVyfSBjYWxjdWxhdGVkIGZvciB0aGUgZ2l2ZW4gc2VydmljZVJ1bnRpbWUgb3IgY2xpZW50UnVudGltZSBhbmQgcHJvamVjdAotICAgKiBAcGFyYW0gaXNDbGllbnQgdHJ1ZSBpZiBydW50aW1lSWQgaXMgYSBjbGllbnRSdW50aW1lSWQuIGZhbHNlIGlmIHJ1bnRpbWVJZCBpcyBhIHNlcnZpY2VSdW50aW1lSWQuCi0gICAqIEBwYXJhbSBydW50aW1lSWQgdGhlIGlkIG9mIGEgY2xpZW50UnVudGltZSBpZiBpc0NsaWVudCBpcyB0cnVlIG9yIHRoZSBpZCBvZiBhIHNlcnZpY2VSdW50aW1lIGlmCi0gICAqIGlzQ2xpZW50IGlzIGZhbHNlLgotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgdGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgcHJvamVjdC4KLSAgICogQHJldHVybiBGYWNldE1hdGNoZXIgcmVzdWx0aW5nIGZyb20gY2FsbGluZyBGYWNldFV0aWxzLm1hdGNoKC4uKSB1c2luZyB0aGUgc2VydmljZVJ1bnRpbWUgb3IgY2xpZW50UnVudGltZSBpZAotICAgKiBhbmQgdGhlIHByb2plY3QgbmFtZS4gUmV0dXJucyBudWxsIGlmIHRoZSBwcm9qZWN0IGRvZXNuJ3QgZXhpc3QuIE5vbi1mYWNldGVkIGV4aXN0aW5nIHByb2plY3RzIHdpbGwgYWx3YXlzIHJlc3VsdAotICAgKiBpbiBhIEZhY2V0TWF0Y2hlciB3aXRoIGlzTWF0Y2goKSBlcXVhbCB0byBmYWxzZSAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIEphdmEgcHJvamVjdHMgd2hpY2ggYXJlIGEgc3BlY2lhbCBjYXNlIAotICAgKiAtIHNlZSBGYWNldFV0aWxzLmdldEZhY2V0c0ZvclByb2plY3QoKSkuCi0gICAqLwotICBwcml2YXRlIEZhY2V0TWF0Y2hlciBjYWxjdWxhdGVGYWNldE1hdGNoZXIoYm9vbGVhbiBpc0NsaWVudCwgU3RyaW5nIHJ1bnRpbWVJZCwgU3RyaW5nIHByb2plY3ROYW1lKQotICB7Ci0gICAgRmFjZXRNYXRjaGVyIGZtID0gbnVsbDsKLSAgICBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHJmdnMgPSBudWxsOwotICAgIGlmIChpc0NsaWVudCkKLSAgICB7Ci0gICAgICBDbGllbnRSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0Q2xpZW50UnVudGltZURlc2NyaXB0b3JCeUlkKHJ1bnRpbWVJZCk7Ci0gICAgICByZnZzID0gZGVzYy5nZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yQnlJZChydW50aW1lSWQpOwotICAgICAgcmZ2cyA9IGRlc2MuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCk7Ci0gICAgfQotICAgIAotICAgIFNldCBmYWNldFZlcnNpb25zID0gbmV3IEhhc2hTZXQoRmFjZXRVdGlscy5nZXRGYWNldHNGb3JQcm9qZWN0KHByb2plY3ROYW1lKSk7Ci0gICAgaWYgKGZhY2V0VmVyc2lvbnMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBmbSA9IG5ldyBGYWNldE1hdGNoZXIoKTsKLSAgICAgIGZtLnNldE1hdGNoKGZhbHNlKTsKLSAgICAgIHJldHVybiBmbTsKLSAgICB9ICAgIAotICAgIAotICAgIGZtID0gRmFjZXRVdGlscy5tYXRjaChyZnZzLCBmYWNldFZlcnNpb25zKTsKLSAgICAKLSAgICAvLyBDaGVjayBpZiB0aGUgZmFjZXQgcnVudGltZSByZXF1aXJlZCBieSB0aGUgcmVxdWlyZWQgZmFjZXQgaXMgc3VwcG9ydGVkCi0gICAgLy8gYnkgdGhlIHByb2plY3Qgd2l0aG91dCBjaGFuaW5nIGl0J3MgY3VycmVudCBmYWNldCBydW50aW1lCi0gICAgCi0gICAgSVJ1bnRpbWUgZlByb2plY3RSdW50aW1lID0gRmFjZXRVdGlscy5nZXRGYWNldFJ1bnRpbWVGb3JQcm9qZWN0KHByb2plY3ROYW1lKTsKLSAgICBpZiAoZlByb2plY3RSdW50aW1lICE9IG51bGwpIHsKLSAgICAJU3RyaW5nIGZQcm9qZWN0UnVudGltZU5hbWUgPSBmUHJvamVjdFJ1bnRpbWUuZ2V0TmFtZSgpOwotICAgIAlib29sZWFuIHByb2plY3RTdXBwb3J0UmVxdWlyZWRGYWNldFJ1bnRpbWUgPSBmYWxzZTsKLSAgICAJU2V0IHJ0cyA9IEZhY2V0VXRpbHMuZ2V0UnVudGltZXMocmZ2cyk7Ci0gICAgCWZvciAoSXRlcmF0b3IgaXRlcmF0b3IgPSBydHMuaXRlcmF0b3IoKTsgaXRlcmF0b3IuaGFzTmV4dCgpICYmICFwcm9qZWN0U3VwcG9ydFJlcXVpcmVkRmFjZXRSdW50aW1lOykgewotICAgIAkJSVJ1bnRpbWUgZlJlcXVpcmVkUnVudGltZSA9IChJUnVudGltZSkgaXRlcmF0b3IubmV4dCgpOwotICAgIAkJaWYgKGZSZXF1aXJlZFJ1bnRpbWUgIT0gbnVsbCkgewotICAgIAkJCWlmIChmUmVxdWlyZWRSdW50aW1lLmdldE5hbWUoKS5lcXVhbHMoZlByb2plY3RSdW50aW1lTmFtZSkpIHsKLSAgICAJCQkJcHJvamVjdFN1cHBvcnRSZXF1aXJlZEZhY2V0UnVudGltZSA9IHRydWU7Ci0gICAgCQkJfQotICAgIAkJfQotICAgIAl9Ci0KLSAgICAJLy8gaWYgcHJvamVjdCBkb2VzIG5vdCBzdXBwb3J0IHRoZSByZXF1aXJlZCBmYWNldCBydW50aW1lLCBzZXQgRmFjZXRNYXRjaCBtYXRjaCB0byBmYWxzZQotICAgIAlpZiAoIXByb2plY3RTdXBwb3J0UmVxdWlyZWRGYWNldFJ1bnRpbWUpIHsKLSAgICAJCWZtLnNldE1hdGNoKGZhbHNlKTsKLSAgICAJfQotICAgIH0KLSAgICByZXR1cm4gZm07Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBnZXRLZXkoU3RyaW5nIGEsIFN0cmluZyBiKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGtleXNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGtleXNiLmFwcGVuZChhKTsKLSAgICBrZXlzYi5hcHBlbmQoIi8iKTsKLSAgICBrZXlzYi5hcHBlbmQoYik7ICAgIAotICAgIHJldHVybiBrZXlzYi50b1N0cmluZygpOyAgICAKLSAgfSAgCi0gIAotICAvKioKLSAgICogUmVtb3ZlcyBhbGwgdGFibGUgZW50cmllcyBpbiB0aGlzIGNhY2hlIGZvciB0aGUgZ2l2ZW4gcHJvamVjdAotICAgKiBAcGFyYW0gaXNDbGllbnQgdHJ1ZSB0byByZW1vdmUgZW50cmllcyBmcm9tIGNsaWVudCBzaWRlIHRhYmxlcy4gZmFsc2UgdG8gcmVtb3ZlIGVudHJpZXMgZnJvbSBzZXJ2aWNlIHNpZGUgdGFibGVzCi0gICAqIEBwYXJhbSBwcm9qZWN0TmFtZQotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHJlbW92ZVRhYmxlRW50cmllc0ZvclByb2plY3QoYm9vbGVhbiBpc0NsaWVudCwgU3RyaW5nIHByb2plY3ROYW1lKQotICB7Ci0gICAgLy9GaXJzdCByZW1vdmUgdGhlIGVudHJpZXMgZnJvbSBjbGllbnRGYWNldE1hdGNoVGFibGVfIG9yIHNlcnZpY2VGYWNldE1hdGNoVGFibGVfCi0gICAgLy90aGF0IGhhdmUga2V5cyBjb250YWluaW5nIHRoaXMgcHJvamVjdCBuYW1lLgotICAgIFNldCBzZXRPZktleXNGb3JQcm9qZWN0TmFtZSA9IG51bGw7Ci0gICAgaWYgKGlzQ2xpZW50KQotICAgIHsKLSAgICAgIHNldE9mS2V5c0ZvclByb2plY3ROYW1lID0gKFNldCljbGllbnRUYWJsZUtleXNCeVByb2plY3ROYW1lXy5nZXQocHJvamVjdE5hbWUpOyAgICAgIAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgc2V0T2ZLZXlzRm9yUHJvamVjdE5hbWUgPSAoU2V0KXNlcnZpY2VUYWJsZUtleXNCeVByb2plY3ROYW1lXy5nZXQocHJvamVjdE5hbWUpOwotICAgIH0KLSAgICAKLSAgICBpZiAoc2V0T2ZLZXlzRm9yUHJvamVjdE5hbWUgIT0gbnVsbCkKLSAgICB7IAotICAgICAgSXRlcmF0b3Iga2V5c0l0ciA9IHNldE9mS2V5c0ZvclByb2plY3ROYW1lLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoa2V5c0l0ci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKWtleXNJdHIubmV4dCgpOwotICAgICAgICBpZiAoaXNDbGllbnQpCi0gICAgICAgIHsgCi0gICAgICAgICAgY2xpZW50RmFjZXRNYXRjaFRhYmxlXy5yZW1vdmUoa2V5KTsgICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgc2VydmljZUZhY2V0TWF0Y2hUYWJsZV8ucmVtb3ZlKGtleSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgICAgLy9TZWNvbmQsIHJlbW92ZSB0aGUgZW50cnkgaW4gY2xpZW50VGFibGVLZXlzQnlQcm9qZWN0TmFtZV8gb3Igc2VydmljZVRhYmxlS2V5c0J5UHJvamVjdE5hbWVfCi0gICAgICAvL3dpdGggdGhpcyBwcm9qZWN0TmFtZSBhcyB0aGUga2V5LgotICAgICAgaWYgKGlzQ2xpZW50KQotICAgICAgewotICAgICAgICBjbGllbnRUYWJsZUtleXNCeVByb2plY3ROYW1lXy5yZW1vdmUocHJvamVjdE5hbWUpOyAgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHNlcnZpY2VUYWJsZUtleXNCeVByb2plY3ROYW1lXy5yZW1vdmUocHJvamVjdE5hbWUpOwotICAgICAgfQotICAgICAgCi0gICAgfQotICAgIAotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBzZXQgb2YgdGVtcGxhdGVzIHN1cHBvcnRlZCBieSB0aGUgZ2l2ZW4gY2xpZW50UnVudGltZQotICAgKiBAcGFyYW0gY2xpZW50UnVudGltZUlkIGlkIG9mIGEgY2xpZW50UnVudGltZQotICAgKiBAcmV0dXJucyBTZXQgKGVsZW1lbnR0eXBlOiBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSkKLSAgICovCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgU2V0IGdldFRlbXBsYXRlc0ZvckNsaWVudFJ1bnRpbWUoU3RyaW5nIGNsaWVudFJ1bnRpbWVJZCkKLSAgewotICAgIFNldCB0ZW1wbGF0ZXMgPSAoU2V0KXRlbXBsYXRlc0J5Q2xpZW50UnVudGltZUlkXy5nZXQoY2xpZW50UnVudGltZUlkKTsKLSAgICBpZiAodGVtcGxhdGVzICE9IG51bGwpCi0gICAgewotICAgICAgLy9SZXR1cm4gdGhlIGNhY2hlZCBzZXQgb2YgdGVtcGxhdGVzLgotICAgICAgcmV0dXJuIHRlbXBsYXRlczsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vQ2FsY3VsYXRlIHRoZSB0ZW1wbGF0ZXMsIGNhY2hlIHRoZW0gZm9yIGxhdGVyIHVzZSwgYW5kIHJldHVybiB0aGVtLgotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChjbGllbnRSdW50aW1lSWQpOwotICAgICAgU2V0IHZhbGlkVGVtcGxhdGVzID0gZ2V0VGVtcGxhdGVzKGRlc2MuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCkpOwotICAgICAgdGVtcGxhdGVzQnlDbGllbnRSdW50aW1lSWRfLnB1dChjbGllbnRSdW50aW1lSWQsIHZhbGlkVGVtcGxhdGVzKTsKLSAgICAgIHJldHVybiB2YWxpZFRlbXBsYXRlczsKLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgc2V0IG9mIHRlbXBsYXRlcyBzdXBwb3J0ZWQgYnkgdGhlIGdpdmVuIHNlcnZpY2VSdW50aW1lCi0gICAqIEBwYXJhbSBzZXJ2aWNlUnVudGltZUlkIGlkIG9mIGEgc2VydmljZVJ1bnRpbWUKLSAgICogQHJldHVybnMgU2V0IChlbGVtZW50dHlwZTogSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUpCi0gICAqLyAgCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgU2V0IGdldFRlbXBsYXRlc0ZvclNlcnZpY2VSdW50aW1lKFN0cmluZyBzZXJ2aWNlUnVudGltZUlkKQotICB7Ci0gICAgU2V0IHRlbXBsYXRlcyA9IChTZXQpdGVtcGxhdGVzQnlTZXJ2aWNlUnVudGltZUlkXy5nZXQoc2VydmljZVJ1bnRpbWVJZCk7Ci0gICAgaWYgKHRlbXBsYXRlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vUmV0dXJuIHRoZSBjYWNoZWQgc2V0IG9mIHRlbXBsYXRlcy4KLSAgICAgIHJldHVybiB0ZW1wbGF0ZXM7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvL0NhbGN1bGF0ZSB0aGUgdGVtcGxhdGVzLCBjYWNoZSB0aGVtIGZvciBsYXRlciB1c2UsIGFuZCByZXR1cm4gdGhlbS4KLSAgICAgIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yQnlJZChzZXJ2aWNlUnVudGltZUlkKTsKLSAgICAgIFNldCB2YWxpZFRlbXBsYXRlcyA9IGdldFRlbXBsYXRlcyhkZXNjLmdldFJlcXVpcmVkRmFjZXRWZXJzaW9ucygpKTsKLSAgICAgIHRlbXBsYXRlc0J5U2VydmljZVJ1bnRpbWVJZF8ucHV0KHNlcnZpY2VSdW50aW1lSWQsIHZhbGlkVGVtcGxhdGVzKTsKLSAgICAgIHJldHVybiB2YWxpZFRlbXBsYXRlczsKLSAgICB9Ci0gIH0KLSAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgdGVtcGxhdGVzIHRoYXQgc3VwcG9ydGVkIHRoZSBnaXZlbiByZXF1aXJlZCBmYWNldCB2ZXJzaW9ucy4KLSAgICogQHBhcmFtIHJlcXVpcmVkRmFjZXRWZXJzaW9ucwotICAgKiBAcmV0dXJuIFNldCBjb250YWluaW5nIGVsZW1ldHMgb2YgdHlwZSB7QGxpbmsgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGV9LgotICAgKi8KLSAgcHJpdmF0ZSBTZXQgZ2V0VGVtcGxhdGVzKFJlcXVpcmVkRmFjZXRWZXJzaW9uW10gcmVxdWlyZWRGYWNldFZlcnNpb25zKQotICB7Ci0gICAgU2V0IHRlbXBsYXRlcyA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgCi0gICAgZm9yKCBJdGVyYXRvciBpdHIgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRUZW1wbGF0ZXMoKS5pdGVyYXRvcigpOyBpdHIuaGFzTmV4dCgpOyApCi0gICAgewotICAgICAgICBmaW5hbCBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSB0ZW1wbGF0ZSA9IChJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSkgaXRyLm5leHQoKTsKLSAgICAgICAgU3RyaW5nIHRlbXBsYXRlSWQgPSB0ZW1wbGF0ZS5nZXRJZCgpOwotICAgICAgICBpZiAodGVtcGxhdGVJZC5pbmRleE9mKCJlYXIiKSA9PSAtMSAmJiB0ZW1wbGF0ZUlkLmluZGV4T2YoIndzdC53ZWIiKSA9PSAtMSkgLy9Eb24ndCBpbmNsdWRlIHRoZSBFQVJzISEKLSAgICAgICAgeyAgICAgICAgICAgCi0gICAgICAgICAgU2V0W10gY29tYmluYXRpb25zID0gRmFjZXRTZXRzQnlUZW1wbGF0ZUNhY2hlLmdldEluc3RhbmNlKCkuZ2V0RmFjZXRWZXJzaW9uQ29tYmluYXRpb25zRnJvbVRlbXBsYXRlKHRlbXBsYXRlSWQpOwotICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxjb21iaW5hdGlvbnMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgRmFjZXRNYXRjaGVyIGZtID0gRmFjZXRVdGlscy5tYXRjaChyZXF1aXJlZEZhY2V0VmVyc2lvbnMsIGNvbWJpbmF0aW9uc1tpXSk7Ci0gICAgICAgICAgICBpZiAoZm0uaXNNYXRjaCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvL0ZvdW5kIGEgY29tYmluYXRpb24gdGhhdCB3b3JrZWQuIEFkZCB0aGUgdGVtcGxhdGUgdG8gdGhlIGxpc3QgYW5kIG1vdmUgb24uCi0gICAgICAgICAgICAgIHRlbXBsYXRlcy5hZGQodGVtcGxhdGUpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9ICAgIAotICAgIAotICAgIHJldHVybiB0ZW1wbGF0ZXM7Ci0gICAgCi0gIH0KLSAgCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCByZXNvdXJjZUNoYW5nZWQoSVJlc291cmNlQ2hhbmdlRXZlbnQgZXZlbnQpCi0gIHsKLSAgICBpZiAoZXZlbnQuZ2V0VHlwZSgpID09IElSZXNvdXJjZUNoYW5nZUV2ZW50LlBSRV9ERUxFVEUpCi0gICAgewotICAgICAgSVJlc291cmNlIHByb2plY3RSZXNvdXJjZSA9IGV2ZW50LmdldFJlc291cmNlKCk7Ci0gICAgICBpZiAocHJvamVjdFJlc291cmNlIT1udWxsKQotICAgICAgewotICAgICAgICBTdHJpbmcgcHJvamVjdE5hbWUgPSBwcm9qZWN0UmVzb3VyY2UuZ2V0TmFtZSgpOwotICAgICAgICAKLSAgICAgICAgLy9BZGQgdGhpcyBwcm9qZWN0IG5hbWUgdG8gdGhlIGxpc3Qgb2YgcHJvamVjdCBlbnRyaWVzCi0gICAgICAgIC8vdG8gZGVsZXRlLiBOZXh0IHRpbWUgZ2V0TWF0Y2hGb3JQcm9qZWN0IGlzIGNhbGxlZCBhbGwKLSAgICAgICAgLy9lbnRyaWVzIGZvciB0aGlzIHByb2plY3QgZnJvbSBhbGwgdGFibGVzIGluIHRoaXMgY2FjaGUgCi0gICAgICAgIC8vd2lsbCBiZSBkZWxldGVkLgotICAgICAgICBwcm9qZWN0RW50cmllc1RvRGVsZXRlXy5hZGQocHJvamVjdE5hbWUpOwotICAgICAgfQotICAgIH0gICAgCi0gIH0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L1J1bnRpbWVEZXNjcmlwdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvUnVudGltZURlc2NyaXB0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMyYmIzNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvUnVudGltZURlc2NyaXB0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLQotcHVibGljIGNsYXNzIFJ1bnRpbWVEZXNjcmlwdG9yCi17Ci0KLSAgcHJpdmF0ZSBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbTsKLSAgcHJpdmF0ZSBTdHJpbmcgaWQ7Ci0gIHByaXZhdGUgU3RyaW5nIGxhYmVsOwotICBwcml2YXRlIFN0cmluZyBzZXJ2ZXJSZXF1aXJlZFN0cmluZzsKLSAgcHJpdmF0ZSBib29sZWFuIHNlcnZlclJlcXVpcmVkOwotICAKLQotICBwdWJsaWMgUnVudGltZURlc2NyaXB0b3IoSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW0pCi0gIHsKLSAgICB0aGlzLmVsZW0gPSBlbGVtOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldElkKCkKLSAgewotICAgIGlmIChpZCA9PSBudWxsKQotICAgIHsKLSAgICAgIGlkID0gZWxlbS5nZXRBdHRyaWJ1dGUoImlkIik7Ci0gICAgfQotICAgIHJldHVybiBpZDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRMYWJlbCgpCi0gIHsKLSAgICBpZiAobGFiZWwgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBsYWJlbCA9IGVsZW0uZ2V0QXR0cmlidXRlKCJsYWJlbCIpOwotICAgIH0KLSAgICByZXR1cm4gbGFiZWw7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRKMmVlTGV2ZWxzKCkKLSAgewotICAgIHJldHVybiBuZXcgU3RyaW5nW117IjEzIiwgIjE0In07Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldFNlcnZlclJlcXVpcmVkKCkKLSAgewotICAgIGlmIChzZXJ2ZXJSZXF1aXJlZFN0cmluZyA9PSBudWxsKQotICAgIHsgICAgIAotICAgICAgLy9EZWZhdWx0cyB0byB0cnVlIGlmIHRoZSBleHRlbnNpb24gb21pdHMgdGhpcyBhdHRyaWJ1dGUKLSAgICAgIHNlcnZlclJlcXVpcmVkID0gdHJ1ZTsKLQotICAgICAgc2VydmVyUmVxdWlyZWRTdHJpbmcgPSBlbGVtLmdldEF0dHJpYnV0ZSgic2VydmVyUmVxdWlyZWQiKTsKLSAgICAgIGlmIChzZXJ2ZXJSZXF1aXJlZFN0cmluZyAhPSBudWxsKQotICAgICAgewotICAgICAgICBzZXJ2ZXJSZXF1aXJlZCA9IEJvb2xlYW4udmFsdWVPZihzZXJ2ZXJSZXF1aXJlZFN0cmluZykuYm9vbGVhblZhbHVlKCk7Ci0gICAgICB9ICAgICAgICAgICAgIAotICAgICAgCi0gICAgfSAgICAKLSAgICByZXR1cm4gc2VydmVyUmVxdWlyZWQ7ICAgIAotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L1NlbGVjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L1NlbGVjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzE0NTRiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9TZWxlY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklTZWxlY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBTZWxlY3Rpb24gaW1wbGVtZW50cyBJU2VsZWN0aW9uIHsKLQotCXByaXZhdGUgT2JqZWN0W10gc2VsZWN0aW9uOwotCQotCXB1YmxpYyBPYmplY3RbXSBnZXRTZWxlY3Rpb24oKSAKLQl7Ci0JCXJldHVybiBzZWxlY3Rpb247Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldFNlbGVjdGlvbihPYmplY3RbXSBzZWxlY3Rpb24pCi0JewotCQl0aGlzLnNlbGVjdGlvbiA9IHNlbGVjdGlvbjsKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9TZXJ2aWNlUnVudGltZURlc2NyaXB0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9TZXJ2aWNlUnVudGltZURlc2NyaXB0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkyZTdjZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwODAyICAgMTUyMTUwIG1haHV0Y2hAY2EuaWJtLmNvbQotICogMjAwNzExMDcgICAyMDM4MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcxMTMwICAgMjAzODI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDMyNiAgIDIyMTM2NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODA2MjYgICAyMjEzNjQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0OwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uUmVxdWlyZWRGYWNldFZlcnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSVByb2plY3RGYWNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JUHJvamVjdEZhY2V0VmVyc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5Qcm9qZWN0RmFjZXRzTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZVJ1bnRpbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VSdW50aW1lQ2hlY2tlcjsKLQotCi1wdWJsaWMgY2xhc3MgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yCi17Ci0gIHByaXZhdGUgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW07Ci0gIHByaXZhdGUgSGFzaHRhYmxlIGFsbFdlYlNlcnZpY2VJbXBsczsKLSAgcHJpdmF0ZSBIYXNodGFibGUgYWxsUnVudGltZXM7Ci0gIHByaXZhdGUgU3RyaW5nIGlkOwotICBwcml2YXRlIFdlYlNlcnZpY2VJbXBsIHNlcnZpY2VJbXBsZW1lbnRhdGlvblR5cGU7Ci0gIHByaXZhdGUgUnVudGltZURlc2NyaXB0b3IgcnVudGltZTsKLSAgcHJpdmF0ZSBib29sZWFuIGJvdHRvbVVwID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiB0b3BEb3duID0gZmFsc2U7Ci0gIHByaXZhdGUgU3RyaW5nIHNlcnZpY2VSdW50aW1lQ2xhc3NOYW1lOwotICBwcml2YXRlIElXZWJTZXJ2aWNlUnVudGltZSB3ZWJTZXJ2aWNlUnVudGltZTsKLSAgcHJpdmF0ZSBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHJlcXVpcmVkRmFjZXRWZXJzaW9uczsKLSAgcHJpdmF0ZSBTZXQgcHJvamVjdEZhY2V0VmVyc2lvbnM7Ci0gIHByaXZhdGUgSVdlYlNlcnZpY2VSdW50aW1lQ2hlY2tlciB3ZWJTZXJ2aWNlUnVudGltZUNoZWNrZXI7Ci0gIHByaXZhdGUgU3RyaW5nIHJ1bnRpbWVQcmVmZXJyZWRTZXJ2ZXJUeXBlOwotICAKLSAgcHVibGljIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvcihJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbSwgSGFzaHRhYmxlIGFsbFdlYlNlcnZpY2VJbXBscywgSGFzaHRhYmxlIGFsbFJ1bnRpbWVzKQotICB7Ci0gICAgdGhpcy5lbGVtID0gZWxlbTsKLSAgICB0aGlzLmFsbFdlYlNlcnZpY2VJbXBscyA9IGFsbFdlYlNlcnZpY2VJbXBsczsKLSAgICB0aGlzLmFsbFJ1bnRpbWVzID0gYWxsUnVudGltZXM7Ci0KLSAgICBib3R0b21VcCA9IChCb29sZWFuLnZhbHVlT2YoZWxlbS5nZXRBdHRyaWJ1dGUoImJvdHRvbVVwIikpKS5ib29sZWFuVmFsdWUoKTsKLSAgICB0b3BEb3duID0gKEJvb2xlYW4udmFsdWVPZihlbGVtLmdldEF0dHJpYnV0ZSgidG9wRG93biIpKSkuYm9vbGVhblZhbHVlKCk7ICAgIAotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRCb3R0b21VcCgpCi0gIHsgICAgCi0gICAgcmV0dXJuIGJvdHRvbVVwOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldElkKCkKLSAgewotICAgIGlmIChpZCA9PSBudWxsKQotICAgIHsKLSAgICAgIGlkID0gZWxlbS5nZXRBdHRyaWJ1dGUoImlkIik7Ci0gICAgfQotICAgIHJldHVybiBpZDsKLSAgfQotICAKLSAgCi0gIHB1YmxpYyBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIGdldFJlcXVpcmVkRmFjZXRWZXJzaW9ucygpCi0gIHsKLSAgICBpZiAocmVxdWlyZWRGYWNldFZlcnNpb25zID09IG51bGwpCi0gICAgewotICAgICAgQXJyYXlMaXN0IHJlcXVpcmVkRmFjZXRWZXJzaW9uTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGZhY2V0RWxlbXMgPSBlbGVtLmdldENoaWxkcmVuKCJyZXF1aXJlZC1mYWNldC12ZXJzaW9uIik7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZhY2V0RWxlbXMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgCXRyeSB7Ci0gICAgCSAgU3RyaW5nIGZhY2V0SUQgPSBmYWNldEVsZW1zW2ldLmdldEF0dHJpYnV0ZSgiZmFjZXQiKTsKLSAgICAJICBpZiAoUHJvamVjdEZhY2V0c01hbmFnZXIuaXNQcm9qZWN0RmFjZXREZWZpbmVkKGZhY2V0SUQpKQotICAgIAkgIHsKLQkgICAgICAgIFJlcXVpcmVkRmFjZXRWZXJzaW9uIHJmdiA9IG5ldyBSZXF1aXJlZEZhY2V0VmVyc2lvbigpOwotCSAgICAgICAgSVByb2plY3RGYWNldCBwcm9qZWN0RmFjZXQgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRQcm9qZWN0RmFjZXQoZmFjZXRJRCk7Ci0JICAgICAgICBpZiAocHJvamVjdEZhY2V0ICE9IG51bGwpIHsKLQkgICAgICAgIAlJUHJvamVjdEZhY2V0VmVyc2lvbiBwcm9qZWN0RmFjZXRWZXJzaW9uID0gcHJvamVjdEZhY2V0LmdldFZlcnNpb24oZmFjZXRFbGVtc1tpXS5nZXRBdHRyaWJ1dGUoInZlcnNpb24iKSk7Ci0JICAgICAgICAJaWYgKHByb2plY3RGYWNldFZlcnNpb24gIT0gbnVsbCkgewotCSAgICAgICAgCQlyZnYuc2V0UHJvamVjdEZhY2V0VmVyc2lvbihwcm9qZWN0RmFjZXRWZXJzaW9uKTsKLQkgICAgICAgIAkJU3RyaW5nIGFsbG93TmV3ZXJWYWx1ZSA9IGZhY2V0RWxlbXNbaV0uZ2V0QXR0cmlidXRlKCJhbGxvdy1uZXdlciIpOwotCSAgICAgICAgCQlpZiAoYWxsb3dOZXdlclZhbHVlID09IG51bGwpCi0JICAgICAgICAJCXsKLQkgICAgICAgIAkJCXJmdi5zZXRBbGxvd05ld2VyKGZhbHNlKTsKLQkgICAgICAgIAkJfQotCSAgICAgICAgCQllbHNlCi0JICAgICAgICAJCXsKLQkgICAgICAgIAkJCXJmdi5zZXRBbGxvd05ld2VyKEJvb2xlYW4udmFsdWVPZihhbGxvd05ld2VyVmFsdWUpLmJvb2xlYW5WYWx1ZSgpKTsKLQkgICAgICAgIAkJfQotCSAgICAgICAgCi0JICAgICAgICAJCXJlcXVpcmVkRmFjZXRWZXJzaW9uTGlzdC5hZGQocmZ2KTsKLQkgICAgICAgIAl9Ci0JICAgICAgICB9Ci0gICAgCQotICAgIAkgIH0gCi0gICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKXsKLSAgICAgICAgCS8vIGlnbm9yZSB0aGUgZmFjZXQKLSAgCSAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIHJlcXVpcmVkRmFjZXRWZXJzaW9ucyA9IChSZXF1aXJlZEZhY2V0VmVyc2lvbltdKXJlcXVpcmVkRmFjZXRWZXJzaW9uTGlzdC50b0FycmF5KG5ldyBSZXF1aXJlZEZhY2V0VmVyc2lvbltde30pOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVxdWlyZWRGYWNldFZlcnNpb25zOwotICB9Ci0gIAotICBwdWJsaWMgU2V0IGdldFByb2plY3RGYWNldFZlcnNpb25zKCkKLSAgewotICAgIGlmIChwcm9qZWN0RmFjZXRWZXJzaW9ucyA9PSBudWxsKQotICAgIHsKLSAgICAgcHJvamVjdEZhY2V0VmVyc2lvbnMgPSBuZXcgSGFzaFNldCgpOwotICAgICBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHJmdiA9IGdldFJlcXVpcmVkRmFjZXRWZXJzaW9ucygpOwotICAgICBmb3IgKGludCBpPTA7IGk8cmZ2Lmxlbmd0aDsgaSsrKQotICAgICB7Ci0gICAgICAgcHJvamVjdEZhY2V0VmVyc2lvbnMuYWRkKHJmdltpXS5nZXRQcm9qZWN0RmFjZXRWZXJzaW9uKCkpOwotICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBwcm9qZWN0RmFjZXRWZXJzaW9uczsgICAgCi0gIH0KLSAgCi0gIHB1YmxpYyBSdW50aW1lRGVzY3JpcHRvciBnZXRSdW50aW1lKCkKLSAgewotICAgIGlmIChydW50aW1lID09IG51bGwpCi0gICAgewotICAgICBTdHJpbmcgcnVudGltZUlkID0gZWxlbS5nZXRBdHRyaWJ1dGUoInJ1bnRpbWVJZCIpOwotICAgICBydW50aW1lID0gKFJ1bnRpbWVEZXNjcmlwdG9yKWFsbFJ1bnRpbWVzLmdldChydW50aW1lSWQpOyAgICAgCi0gICAgfQotICAgIHJldHVybiBydW50aW1lOwotICB9Ci0gIAotICBwdWJsaWMgV2ViU2VydmljZUltcGwgZ2V0U2VydmljZUltcGxlbWVudGF0aW9uVHlwZSgpCi0gIHsKLSAgICBpZiAoc2VydmljZUltcGxlbWVudGF0aW9uVHlwZSA9PSBudWxsKQotICAgIHsgICAgICAKLSAgICAgIFN0cmluZyBzZXJ2aWNlSW1wbGVtZW50YXRpb25UeXBlSWQgPSBlbGVtLmdldEF0dHJpYnV0ZSgic2VydmljZUltcGxlbWVudGF0aW9uVHlwZUlkIik7Ci0gICAgICBzZXJ2aWNlSW1wbGVtZW50YXRpb25UeXBlID0gKFdlYlNlcnZpY2VJbXBsKWFsbFdlYlNlcnZpY2VJbXBscy5nZXQoc2VydmljZUltcGxlbWVudGF0aW9uVHlwZUlkKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlcnZpY2VJbXBsZW1lbnRhdGlvblR5cGU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZVJ1bnRpbWVDbGFzc05hbWUoKQotICB7Ci0gICAgaWYgKHNlcnZpY2VSdW50aW1lQ2xhc3NOYW1lID09IG51bGwpCi0gICAgewotICAgICAgc2VydmljZVJ1bnRpbWVDbGFzc05hbWUgPSBlbGVtLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlcnZpY2VSdW50aW1lQ2xhc3NOYW1lOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRUb3BEb3duKCkKLSAgewotICAgIHJldHVybiB0b3BEb3duOwotICB9Ci0gIAotICBwdWJsaWMgSVdlYlNlcnZpY2VSdW50aW1lIGdldFdlYlNlcnZpY2VSdW50aW1lKCkKLSAgewotICAgIGlmICh3ZWJTZXJ2aWNlUnVudGltZSA9PSBudWxsKQotICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHdlYlNlcnZpY2VSdW50aW1lID0gKElXZWJTZXJ2aWNlUnVudGltZSllbGVtLmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oImNsYXNzIik7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goQ29yZUV4Y2VwdGlvbiBjZSkKLSAgICAgICAgewotICAgICAgICAgICAgCi0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHdlYlNlcnZpY2VSdW50aW1lOwotICB9ICAKLSAgCi0gIHB1YmxpYyBJV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyIGdldFNlcnZpY2VSdW50aW1lQ2hlY2tlcigpCi0gIHsKLSAgICBpZiAod2ViU2VydmljZVJ1bnRpbWVDaGVja2VyID09IG51bGwpCi0gICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAJaWYgKGVsZW0uZ2V0QXR0cmlidXRlKCJydW50aW1lQ2hlY2tlciIpICE9IG51bGwgKSB7Ci0gICAgICAgIAkJd2ViU2VydmljZVJ1bnRpbWVDaGVja2VyID0gKElXZWJTZXJ2aWNlUnVudGltZUNoZWNrZXIpZWxlbS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJydW50aW1lQ2hlY2tlciIpOwotICAgICAgICAJfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKENvcmVFeGNlcHRpb24gY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIAotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiB3ZWJTZXJ2aWNlUnVudGltZUNoZWNrZXI7Ci0gIH0gCi0gIAotICBwdWJsaWMgU3RyaW5nIGdldFJ1bnRpbWVQcmVmZXJyZWRTZXJ2ZXJUeXBlKCkKLSAgewotICAgIGlmIChydW50aW1lUHJlZmVycmVkU2VydmVyVHlwZSA9PSBudWxsKQotICAgIHsKLSAgICAJcnVudGltZVByZWZlcnJlZFNlcnZlclR5cGUgPSBlbGVtLmdldEF0dHJpYnV0ZSgicnVudGltZVByZWZlcnJlZFNlcnZlclR5cGUiKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ1bnRpbWVQcmVmZXJyZWRTZXJ2ZXJUeXBlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvU2VydmljZVR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9TZXJ2aWNlVHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTdjYzI5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9TZXJ2aWNlVHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIxNiAgIDEyNzEzOCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU3RyaW5nVG9rZW5pemVyOwotCi1wdWJsaWMgY2xhc3MgU2VydmljZVR5cGUgewotCi0gIHByaXZhdGUgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW1fOwotICBwcml2YXRlIEhhc2h0YWJsZSB3ZWJTZXJ2aWNlSW1wbHNfOwotICBwcml2YXRlIFN0cmluZyBpZDsKLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlSW1wbCB3ZWJTZXJ2aWNlSW1wbDsKLSAgcHJpdmF0ZSBTdHJpbmdbXSBib3R0b21VcE1vZHVsZVR5cGVzSW5jbHVkZTsKLSAgcHJpdmF0ZSBTdHJpbmdbXSB0b3BEb3duTW9kdWxlVHlwZXNJbmNsdWRlOwotICBwcml2YXRlIFN0cmluZ1tdIGJvdHRvbVVwTW9kdWxlVHlwZXNFeGNsdWRlOwotICBwcml2YXRlIFN0cmluZ1tdIHRvcERvd25Nb2R1bGVUeXBlc0V4Y2x1ZGU7Ci0KLSAgCi0KLSAgCi0gIHB1YmxpYyBTZXJ2aWNlVHlwZShJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbV8sIEhhc2h0YWJsZSB3ZWJTZXJ2aWNlSW1wbHNfKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgICB0aGlzLmVsZW1fID0gZWxlbV87Ci0gICAgdGhpcy53ZWJTZXJ2aWNlSW1wbHNfID0gd2ViU2VydmljZUltcGxzXzsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRCb3R0b21VcE1vZHVsZVR5cGVzRXhjbHVkZSgpCi0gIHsKLSAgICBpZiAoYm90dG9tVXBNb2R1bGVUeXBlc0V4Y2x1ZGU9PW51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGF0dHIgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoImJ1TW9kdWxlVHlwZXNFeGNsdWRlIik7Ci0gICAgICBpZiAoYXR0ciAhPSBudWxsICYmIGF0dHIubGVuZ3RoKCk+MCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihhdHRyLCAiICIpOwotICAgICAgICBpbnQgc2l6ZSA9IHN0LmNvdW50VG9rZW5zKCk7Ci0gICAgICAgIGJvdHRvbVVwTW9kdWxlVHlwZXNFeGNsdWRlID0gbmV3IFN0cmluZ1tzaXplXTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBib3R0b21VcE1vZHVsZVR5cGVzRXhjbHVkZS5sZW5ndGg7IGkrKykKLSAgICAgICAgICBib3R0b21VcE1vZHVsZVR5cGVzRXhjbHVkZVtpXSA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYm90dG9tVXBNb2R1bGVUeXBlc0V4Y2x1ZGU7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEJvdHRvbVVwTW9kdWxlVHlwZXNFeGNsdWRlKFN0cmluZ1tdIGJvdHRvbVVwTW9kdWxlVHlwZXNFeGNsdWRlKQotICB7Ci0gICAgdGhpcy5ib3R0b21VcE1vZHVsZVR5cGVzRXhjbHVkZSA9IGJvdHRvbVVwTW9kdWxlVHlwZXNFeGNsdWRlOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nW10gZ2V0Qm90dG9tVXBNb2R1bGVUeXBlc0luY2x1ZGUoKQotICB7Ci0gICAgaWYgKGJvdHRvbVVwTW9kdWxlVHlwZXNJbmNsdWRlPT1udWxsKQotICAgIHsKLSAgICAgIFN0cmluZyBhdHRyID0gZWxlbV8uZ2V0QXR0cmlidXRlKCJidU1vZHVsZVR5cGVzSW5jbHVkZSIpOwotICAgICAgaWYgKGF0dHIgIT0gbnVsbCAmJiBhdHRyLmxlbmd0aCgpPjApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoYXR0ciwgIiAiKTsKLSAgICAgICAgaW50IHNpemUgPSBzdC5jb3VudFRva2VucygpOwotICAgICAgICBib3R0b21VcE1vZHVsZVR5cGVzSW5jbHVkZSA9IG5ldyBTdHJpbmdbc2l6ZV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYm90dG9tVXBNb2R1bGVUeXBlc0luY2x1ZGUubGVuZ3RoOyBpKyspCi0gICAgICAgICAgYm90dG9tVXBNb2R1bGVUeXBlc0luY2x1ZGVbaV0gPSBzdC5uZXh0VG9rZW4oKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGJvdHRvbVVwTW9kdWxlVHlwZXNJbmNsdWRlOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRCb3R0b21VcE1vZHVsZVR5cGVzSW5jbHVkZShTdHJpbmdbXSBib3R0b21VcE1vZHVsZVR5cGVzSW5jbHVkZSkKLSAgewotICAgIHRoaXMuYm90dG9tVXBNb2R1bGVUeXBlc0luY2x1ZGUgPSBib3R0b21VcE1vZHVsZVR5cGVzSW5jbHVkZTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICBpZiAoaWQ9PW51bGwpCi0gICAgewotICAgICAgaWQgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoImlkIik7Ci0gICAgfQotICAgIHJldHVybiBpZDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIGlkKQotICB7Ci0gICAgdGhpcy5pZCA9IGlkOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nW10gZ2V0VG9wRG93bk1vZHVsZVR5cGVzRXhjbHVkZSgpCi0gIHsKLSAgICBpZiAodG9wRG93bk1vZHVsZVR5cGVzRXhjbHVkZT09bnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgYXR0ciA9IGVsZW1fLmdldEF0dHJpYnV0ZSgidGRNb2R1bGVUeXBlc0V4Y2x1ZGUiKTsKLSAgICAgIGlmIChhdHRyICE9IG51bGwgJiYgYXR0ci5sZW5ndGgoKT4wKQotICAgICAgewotICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGF0dHIsICIgIik7Ci0gICAgICAgIGludCBzaXplID0gc3QuY291bnRUb2tlbnMoKTsKLSAgICAgICAgdG9wRG93bk1vZHVsZVR5cGVzRXhjbHVkZSA9IG5ldyBTdHJpbmdbc2l6ZV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG9wRG93bk1vZHVsZVR5cGVzRXhjbHVkZS5sZW5ndGg7IGkrKykKLSAgICAgICAgICB0b3BEb3duTW9kdWxlVHlwZXNFeGNsdWRlW2ldID0gc3QubmV4dFRva2VuKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0b3BEb3duTW9kdWxlVHlwZXNFeGNsdWRlOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRUb3BEb3duTW9kdWxlVHlwZXNFeGNsdWRlKFN0cmluZ1tdIHRvcERvd25Nb2R1bGVUeXBlc0V4Y2x1ZGUpCi0gIHsKLSAgICB0aGlzLnRvcERvd25Nb2R1bGVUeXBlc0V4Y2x1ZGUgPSB0b3BEb3duTW9kdWxlVHlwZXNFeGNsdWRlOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nW10gZ2V0VG9wRG93bk1vZHVsZVR5cGVzSW5jbHVkZSgpCi0gIHsKLSAgICBpZiAodG9wRG93bk1vZHVsZVR5cGVzSW5jbHVkZT09bnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgYXR0ciA9IGVsZW1fLmdldEF0dHJpYnV0ZSgidGRNb2R1bGVUeXBlc0luY2x1ZGUiKTsKLSAgICAgIGlmIChhdHRyICE9IG51bGwgJiYgYXR0ci5sZW5ndGgoKT4wKQotICAgICAgewotICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGF0dHIsICIgIik7Ci0gICAgICAgIGludCBzaXplID0gc3QuY291bnRUb2tlbnMoKTsKLSAgICAgICAgdG9wRG93bk1vZHVsZVR5cGVzSW5jbHVkZSA9IG5ldyBTdHJpbmdbc2l6ZV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG9wRG93bk1vZHVsZVR5cGVzSW5jbHVkZS5sZW5ndGg7IGkrKykKLSAgICAgICAgICB0b3BEb3duTW9kdWxlVHlwZXNJbmNsdWRlW2ldID0gc3QubmV4dFRva2VuKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0b3BEb3duTW9kdWxlVHlwZXNJbmNsdWRlOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRUb3BEb3duTW9kdWxlVHlwZXNJbmNsdWRlKFN0cmluZ1tdIHRvcERvd25Nb2R1bGVUeXBlc0luY2x1ZGUpCi0gIHsKLSAgICB0aGlzLnRvcERvd25Nb2R1bGVUeXBlc0luY2x1ZGUgPSB0b3BEb3duTW9kdWxlVHlwZXNJbmNsdWRlOwotICB9Ci0gIAotICBwdWJsaWMgV2ViU2VydmljZUltcGwgZ2V0V2ViU2VydmljZUltcGwoKQotICB7Ci0gICAgaWYgKHdlYlNlcnZpY2VJbXBsID09IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIHdzaW1wbElkID0gZWxlbV8uZ2V0QXR0cmlidXRlKCJpbXBsSWQiKTsKLSAgICAgIHdlYlNlcnZpY2VJbXBsID0gKFdlYlNlcnZpY2VJbXBsKXdlYlNlcnZpY2VJbXBsc18uZ2V0KHdzaW1wbElkKTsKLSAgICB9Ci0gICAgcmV0dXJuIHdlYlNlcnZpY2VJbXBsOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlSW1wbDEoV2ViU2VydmljZUltcGwgd2ViU2VydmljZUltcGwpCi0gIHsKLSAgICB0aGlzLndlYlNlcnZpY2VJbXBsID0gd2ViU2VydmljZUltcGw7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzU2NlbmFyaW8oaW50IHNjZW5hcmlvKQotICB7Ci0gICAgc3dpdGNoKHNjZW5hcmlvKQotICAgIHsKLSAgICBjYXNlIFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01VUDoKLSAgICAgIFN0cmluZ1tdIGJ1cyA9IGdldEJvdHRvbVVwTW9kdWxlVHlwZXNJbmNsdWRlKCk7Ci0gICAgICBpZiAoYnVzIT1udWxsICYmIGJ1cy5sZW5ndGg+MCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFdlYlNlcnZpY2VTY2VuYXJpby5UT1BET1dOOgotICAgICAgU3RyaW5nW10gdGRzID0gZ2V0VG9wRG93bk1vZHVsZVR5cGVzSW5jbHVkZSgpOwotICAgICAgaWYgKHRkcyE9bnVsbCAmJiB0ZHMubGVuZ3RoPjApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLQlwdWJsaWMgU3RyaW5nW10gZ2V0TW9kdWxlVHlwZXNJbmNsdWRlKGludCBzY2VuYXJpbykKLSAgewotICAgIHN3aXRjaChzY2VuYXJpbykKLSAgICB7Ci0gICAgY2FzZSBXZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NVVA6Ci0gICAgICByZXR1cm4gZ2V0Qm90dG9tVXBNb2R1bGVUeXBlc0luY2x1ZGUoKTsKLSAgICBjYXNlIFdlYlNlcnZpY2VTY2VuYXJpby5UT1BET1dOOgotICAgICAgcmV0dXJuIGdldFRvcERvd25Nb2R1bGVUeXBlc0luY2x1ZGUoKTsKLSAgICBkZWZhdWx0OiAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBudWxsOyAgICAKLSAgfQotICAKLQkKLQkKLQkKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9XZWJTZXJ2aWNlQ2xpZW50SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L1dlYlNlcnZpY2VDbGllbnRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxODdiM2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L1dlYlNlcnZpY2VDbGllbnRJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLQotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VDbGllbnRJbXBsIHsKLQotICBwcml2YXRlIElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtXzsgCi0JcHJpdmF0ZSBTdHJpbmcgaWQ7Ci0JcHJpdmF0ZSBTdHJpbmcgbGFiZWw7Ci0gIAotICBwdWJsaWMgV2ViU2VydmljZUNsaWVudEltcGwoSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW1fKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgICB0aGlzLmVsZW1fID0gZWxlbV87Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldElkKCkKLSAgewotICAgIGlmIChpZD09bnVsbCkKLSAgICB7Ci0gICAgICBpZCA9IGVsZW1fLmdldEF0dHJpYnV0ZSgiaWQiKTsKLSAgICB9Ci0gICAgcmV0dXJuIGlkOwotICB9Ci0gIAotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TGFiZWwoKQotICB7Ci0gICAgaWYgKGxhYmVsPT1udWxsKQotICAgIHsKLSAgICAgIGxhYmVsID0gZWxlbV8uZ2V0QXR0cmlidXRlKCJsYWJlbCIpOwotICAgIH0KLSAgICByZXR1cm4gbGFiZWw7Ci0gIH0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvV2ViU2VydmljZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9XZWJTZXJ2aWNlSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2FmMWFjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9XZWJTZXJ2aWNlSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIxNiAgIDEyNzEzOCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MDUwOSAgIDE4MjI3NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JTWVyZ2VyOwotCi1pbXBvcnQgY29tLmlibS5pY3UudXRpbC5TdHJpbmdUb2tlbml6ZXI7Ci0KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlSW1wbCB7Ci0JCi0gIHByaXZhdGUgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW1fOwotCXByaXZhdGUgU3RyaW5nIGlkOwotCXByaXZhdGUgU3RyaW5nIGxhYmVsOwotCXByaXZhdGUgU3RyaW5nW10gcmVzb3VyY2VUeXBlTWV0YWRhdGE7Ci0JcHJpdmF0ZSBTdHJpbmdbXSBleHRlbnNpb25NZXRhZGF0YTsKLQlwcml2YXRlIFN0cmluZyBvYmplY3RTZWxlY3Rpb25XaWRnZXQ7Ci0JcHJpdmF0ZSBJTWVyZ2VyIG1lcmdlckNsYXNzOwotICAKLSAgcHVibGljIFdlYlNlcnZpY2VJbXBsKElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtXykKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgdGhpcy5lbGVtXyA9IGVsZW1fOwotICB9Ci0KLSAgcHVibGljIFN0cmluZ1tdIGdldEV4dGVuc2lvbk1ldGFkYXRhKCkKLSAgewotICAgIGlmIChleHRlbnNpb25NZXRhZGF0YT09bnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgYXR0ciA9IGVsZW1fLmdldEF0dHJpYnV0ZSgiZXh0ZW5zaW9uTWV0YWRhdGEiKTsKLSAgICAgIGlmIChhdHRyICE9IG51bGwgJiYgYXR0ci5sZW5ndGgoKT4wKQotICAgICAgewotICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGF0dHIsICIgIik7Ci0gICAgICAgIGludCBzaXplID0gc3QuY291bnRUb2tlbnMoKTsKLSAgICAgICAgZXh0ZW5zaW9uTWV0YWRhdGEgPSBuZXcgU3RyaW5nW3NpemVdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuc2lvbk1ldGFkYXRhLmxlbmd0aDsgaSsrKQotICAgICAgICAgIGV4dGVuc2lvbk1ldGFkYXRhW2ldID0gc3QubmV4dFRva2VuKCk7Ci0gICAgICB9ICAgICAgCi0gICAgfQotICAgIHJldHVybiBleHRlbnNpb25NZXRhZGF0YTsKLSAgfQotICAKLQotICBwdWJsaWMgU3RyaW5nIGdldElkKCkKLSAgewotICAgIGlmIChpZD09bnVsbCkKLSAgICB7Ci0gICAgICBpZCA9IGVsZW1fLmdldEF0dHJpYnV0ZSgiaWQiKTsKLSAgICB9Ci0gICAgcmV0dXJuIGlkOwotICB9Ci0gIAotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TGFiZWwoKQotICB7Ci0gICAgaWYgKGxhYmVsPT1udWxsKQotICAgIHsKLSAgICAgIGxhYmVsID0gZWxlbV8uZ2V0QXR0cmlidXRlKCJsYWJlbCIpOwotICAgIH0KLSAgICByZXR1cm4gbGFiZWw7Ci0gIH0gCi0gIAotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRSZXNvdXJjZVR5cGVNZXRhZGF0YSgpCi0gIHsKLSAgICBpZiAocmVzb3VyY2VUeXBlTWV0YWRhdGE9PW51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGF0dHIgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoInJlc291cmNlVHlwZU1ldGFkYXRhIik7Ci0gICAgICBpZiAoYXR0ciAhPSBudWxsICYmIGF0dHIubGVuZ3RoKCk+MCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihhdHRyLCAiICIpOwotICAgICAgICBpbnQgc2l6ZSA9IHN0LmNvdW50VG9rZW5zKCk7Ci0gICAgICAgIHJlc291cmNlVHlwZU1ldGFkYXRhID0gbmV3IFN0cmluZ1tzaXplXTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXNvdXJjZVR5cGVNZXRhZGF0YS5sZW5ndGg7IGkrKykKLSAgICAgICAgICByZXNvdXJjZVR5cGVNZXRhZGF0YVtpXSA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgfSAgICAgIAotICAgIH0KLSAgICByZXR1cm4gcmVzb3VyY2VUeXBlTWV0YWRhdGE7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldE9iamVjdFNlbGVjdGlvbldpZGdldCgpCi0gIHsKLSAgICBpZiAob2JqZWN0U2VsZWN0aW9uV2lkZ2V0PT1udWxsKQotICAgIHsKLSAgICAgIG9iamVjdFNlbGVjdGlvbldpZGdldCA9IGVsZW1fLmdldEF0dHJpYnV0ZSgib2JqZWN0U2VsZWN0aW9uV2lkZ2V0Iik7Ci0gICAgfQotICAgIHJldHVybiBvYmplY3RTZWxlY3Rpb25XaWRnZXQ7Ci0gIH0KLSAgCi1wdWJsaWMgSU1lcmdlciBnZXRNZXJnZXJDbGFzcygpIHsKLQlpZiAobWVyZ2VyQ2xhc3MgPT0gbnVsbCkKLSAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICBtZXJnZXJDbGFzcyA9IChJTWVyZ2VyKSBlbGVtXy5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJtZXJnZXJDbGFzcyIpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKENvcmVFeGNlcHRpb24gY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIAotICAgICAgICB9Ci0gICAgfQkKLQlyZXR1cm4gbWVyZ2VyQ2xhc3M7Ci19Ci0gIAotCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25SZWdpc3RyeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzU4ZGVlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlU2NlbmFyaW87Ci0KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblJlZ2lzdHJ5Ci17Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25SZWdpc3RyeSBpbnN0YW5jZV87Ci0KLSAgSGFzaE1hcCB3ZWJTZXJ2aWNlVHlwZXNfOwotICAKLSAgQXJyYXlMaXN0IHdlYlNlcnZpY2VUeXBlc0xpc3RfOwotICAKLSAgQXJyYXlMaXN0IHdlYlNlcnZpY2VDbGllbnRUeXBlc0xpc3RfOwotCi0gIEhhc2h0YWJsZSB3ZWJTZXJ2aWNlSW1wbHNfOwotCi0gIEhhc2h0YWJsZSB3ZWJTZXJ2aWNlQ2xpZW50SW1wbHNfOwotCi0gIEhhc2h0YWJsZSBzZXJ2aWNlVHlwZXNfOwotCi0gIEhhc2h0YWJsZSBjbGllbnRUeXBlc187Ci0KLSAgSGFzaHRhYmxlIHdlYlNlcnZpY2VSdW50aW1lc187Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KLSAgICogCi0gICAqIEByZXR1cm4gQSBzaW5nbGV0b24gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25SZWdpc3RyeSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uUmVnaXN0cnkgZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgaWYgKGluc3RhbmNlXyA9PSBudWxsKQotICAgIHsKLSAgICAgIGluc3RhbmNlXyA9IG5ldyBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblJlZ2lzdHJ5KCk7Ci0gICAgICBpbnN0YW5jZV8ubG9hZCgpOwotICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2VfOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGxvYWQoKQotICB7Ci0gICAgLy8gQ2FuJ3QgZ2V0IHJpZCBvZiB3ZWJTZXJ2aWNlVHlwZXMgaW4gTTQKLSAgICB3ZWJTZXJ2aWNlVHlwZXNfID0gbmV3IEhhc2hNYXAoKTsKLSAgICB3ZWJTZXJ2aWNlVHlwZXNMaXN0XyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICB3ZWJTZXJ2aWNlQ2xpZW50VHlwZXNMaXN0XyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICB3ZWJTZXJ2aWNlSW1wbHNfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHdlYlNlcnZpY2VDbGllbnRJbXBsc18gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgc2VydmljZVR5cGVzXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBjbGllbnRUeXBlc18gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgd2ViU2VydmljZVJ1bnRpbWVzXyA9IG5ldyBIYXNodGFibGUoKTsKLQotICAgIElFeHRlbnNpb25SZWdpc3RyeSByZWcgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotICAgIAotICAgIC8vTG9hZCBXZWJTZXJ2aWNlSW1wbHMKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSB3c0ltcGxFeHRzID0gcmVnLmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcigKLSAgICAgICAgIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSIsICJ3c0ltcGwiKTsKLSAgICAKLSAgICBmb3IoaW50IGlkeD0wOyBpZHg8d3NJbXBsRXh0cy5sZW5ndGg7IGlkeCsrKSAKLSAgICB7Ci0gICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbSA9IHdzSW1wbEV4dHNbaWR4XTsKLQotICAgICAgICBpZiAoZWxlbS5nZXROYW1lKCkuZXF1YWxzKCJ3ZWJTZXJ2aWNlSW1wbCIpKQotICAgICAgICB7Ci0gICAgICAgICAgV2ViU2VydmljZUltcGwgd3NpbXBsID0gbmV3IFdlYlNlcnZpY2VJbXBsKGVsZW0pOwotICAgICAgICAgIHdlYlNlcnZpY2VJbXBsc18ucHV0KGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpLCB3c2ltcGwpOwotICAgICAgICB9ICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgLy9Mb2FkIFdlYlNlcnZpY2VDbGllbnRJbXBscwotICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIHdzQ2xpZW50SW1wbEV4dHMgPSByZWcuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzRm9yKAotICAgICAgICAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIiwgIndzQ2xpZW50SW1wbCIpOwotICAgIAotICAgIGZvcihpbnQgaWR4PTA7IGlkeDx3c0NsaWVudEltcGxFeHRzLmxlbmd0aDsgaWR4KyspIAotICAgIHsKLSAgICAgIElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtID0gd3NDbGllbnRJbXBsRXh0c1tpZHhdOwotCi0gICAgICAgIGlmIChlbGVtLmdldE5hbWUoKS5lcXVhbHMoIndlYlNlcnZpY2VDbGllbnRJbXBsIikpCi0gICAgICAgIHsKLSAgICAgICAgICBXZWJTZXJ2aWNlQ2xpZW50SW1wbCB3c0NsaWVudEltcGwgPSBuZXcgV2ViU2VydmljZUNsaWVudEltcGwoZWxlbSk7Ci0gICAgICAgICAgd2ViU2VydmljZUNsaWVudEltcGxzXy5wdXQoZWxlbS5nZXRBdHRyaWJ1dGUoImlkIiksIHdzQ2xpZW50SW1wbCk7Ci0gICAgICAgIH0gICAgICAgIAotICAgIH0KLSAgICAKLSAgICAvL0xvYWQgU2VydmljZVR5cGVzCi0gICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gc2VydmljZVR5cGVFeHRzID0gcmVnLmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcigKLSAgICAgICAgIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSIsICJzZXJ2aWNlVHlwZSIpOwotICAgIAotICAgIGZvcihpbnQgaWR4PTA7IGlkeDxzZXJ2aWNlVHlwZUV4dHMubGVuZ3RoOyBpZHgrKykgCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW0gPSBzZXJ2aWNlVHlwZUV4dHNbaWR4XTsKLQotICAgICAgICBpZiAoZWxlbS5nZXROYW1lKCkuZXF1YWxzKCJzZXJ2aWNlVHlwZSIpKQotICAgICAgICB7Ci0gICAgICAgICAgU2VydmljZVR5cGUgc3QgPSBuZXcgU2VydmljZVR5cGUoZWxlbSx3ZWJTZXJ2aWNlSW1wbHNfKTsKLSAgICAgICAgICBzZXJ2aWNlVHlwZXNfLnB1dChlbGVtLmdldEF0dHJpYnV0ZSgiaWQiKSwgc3QpOwotICAgICAgICB9ICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgLy9Mb2FkIENsaWVudFR5cGVzCi0gICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY2xpZW50VHlwZUV4dHMgPSByZWcuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzRm9yKAotICAgICAgICAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIiwgImNsaWVudFR5cGUiKTsKLSAgICAKLSAgICBmb3IoaW50IGlkeD0wOyBpZHg8Y2xpZW50VHlwZUV4dHMubGVuZ3RoOyBpZHgrKykgCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW0gPSBjbGllbnRUeXBlRXh0c1tpZHhdOwotCi0gICAgICAgIGlmIChlbGVtLmdldE5hbWUoKS5lcXVhbHMoImNsaWVudFR5cGUiKSkKLSAgICAgICAgewotICAgICAgICAgIENsaWVudFR5cGUgY3QgPSBuZXcgQ2xpZW50VHlwZShlbGVtLHdlYlNlcnZpY2VDbGllbnRJbXBsc18pOwotICAgICAgICAgIGNsaWVudFR5cGVzXy5wdXQoZWxlbS5nZXRBdHRyaWJ1dGUoImlkIiksIGN0KTsKLSAgICAgICAgfSAgICAgICAgCi0gICAgfQotICAgIAotICAgIC8vTG9hZCBXZWJTZXJpdmNlUnVudGltZXMKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSB3c3J0RXh0cyA9IHJlZy5nZXRDb25maWd1cmF0aW9uRWxlbWVudHNGb3IoCi0gICAgICAgICJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiLCAid2ViU2VydmljZVJ1bnRpbWUiKTsKLSAgICAKLSAgICBmb3IoaW50IGlkeD0wOyBpZHg8d3NydEV4dHMubGVuZ3RoOyBpZHgrKykgCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW0gPSB3c3J0RXh0c1tpZHhdOwotCi0gICAgICAgIGlmIChlbGVtLmdldE5hbWUoKS5lcXVhbHMoIndlYlNlcnZpY2VSdW50aW1lIikpCi0gICAgICAgIHsKLSAgICAgICAgICBXZWJTZXJ2aWNlUnVudGltZUluZm8gd3NydEluZm8gPSBuZXcgV2ViU2VydmljZVJ1bnRpbWVJbmZvKGVsZW0sIHNlcnZpY2VUeXBlc18sIGNsaWVudFR5cGVzXyk7Ci0gICAgICAgICAgd2ViU2VydmljZVJ1bnRpbWVzXy5wdXQoZWxlbS5nZXRBdHRyaWJ1dGUoImlkIiksIHdzcnRJbmZvKTsKLSAgICAgICAgICAKLSAgICAgICAgICAvL1VwZGF0ZSB0aGUgdHlwZSBsaXN0cwotICAgICAgICAgIHVwZGF0ZVdlYlNlcnZpY2VUeXBlTGlzdCh3c3J0SW5mbyk7Ci0gICAgICAgICAgdXBkYXRlV2ViU2VydmljZUNsaWVudFR5cGVMaXN0KHdzcnRJbmZvKTsKLSAgICAgICAgICAKLSAgICAgICAgfSAgICAgICAgCi0gICAgfQotICB9ICAKLSAgICAKLSAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVdlYlNlcnZpY2VUeXBlTGlzdChXZWJTZXJ2aWNlUnVudGltZUluZm8gd3NydEluZm8pCi0gIHsKLSAgICBTZXJ2aWNlVHlwZVtdIHN0cyA9IHdzcnRJbmZvLmdldFNlcnZpY2VUeXBlcygpOwotICAgIGlmIChzdHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IHN0cy5sZW5ndGg7IGorKykKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGltcGxJZCA9IHN0c1tqXS5nZXRXZWJTZXJ2aWNlSW1wbCgpLmdldElkKCk7Ci0gICAgICAgIFN0cmluZ1tdIGJ1cyA9IHN0c1tqXS5nZXRCb3R0b21VcE1vZHVsZVR5cGVzSW5jbHVkZSgpOwotICAgICAgICBTdHJpbmdbXSB0ZHMgPSBzdHNbal0uZ2V0VG9wRG93bk1vZHVsZVR5cGVzSW5jbHVkZSgpOwotICAgICAgICBpZiAoYnVzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmdCdWZmZXIgZW50cnlidWZmID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICAgIGVudHJ5YnVmZi5hcHBlbmQoU3RyaW5nLnZhbHVlT2YoV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTVVQKSk7Ci0gICAgICAgICAgZW50cnlidWZmLmFwcGVuZCgiLyIpOwotICAgICAgICAgIGVudHJ5YnVmZi5hcHBlbmQoaW1wbElkKTsKLSAgICAgICAgICBTdHJpbmcgZW50cnkgPSBlbnRyeWJ1ZmYudG9TdHJpbmcoKTsKLSAgICAgICAgICBpZiAoIXdlYlNlcnZpY2VUeXBlc0xpc3RfLmNvbnRhaW5zKGVudHJ5KSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB3ZWJTZXJ2aWNlVHlwZXNMaXN0Xy5hZGQoZW50cnkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAodGRzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmdCdWZmZXIgZW50cnlidWZmID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICAgIGVudHJ5YnVmZi5hcHBlbmQoU3RyaW5nLnZhbHVlT2YoV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV04pKTsKLSAgICAgICAgICBlbnRyeWJ1ZmYuYXBwZW5kKCIvIik7Ci0gICAgICAgICAgZW50cnlidWZmLmFwcGVuZChpbXBsSWQpOwotICAgICAgICAgIFN0cmluZyBlbnRyeSA9IGVudHJ5YnVmZi50b1N0cmluZygpOwotICAgICAgICAgIGlmICghd2ViU2VydmljZVR5cGVzTGlzdF8uY29udGFpbnMoZW50cnkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHdlYlNlcnZpY2VUeXBlc0xpc3RfLmFkZChlbnRyeSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgdXBkYXRlV2ViU2VydmljZUNsaWVudFR5cGVMaXN0KFdlYlNlcnZpY2VSdW50aW1lSW5mbyB3c3J0SW5mbykKLSAgewotICAgIENsaWVudFR5cGVbXSBjdHMgPSB3c3J0SW5mby5nZXRDbGllbnRUeXBlcygpOwotICAgIGlmIChjdHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IGN0cy5sZW5ndGg7IGorKykKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGltcGxJZCA9IGN0c1tqXS5nZXRXZWJTZXJ2aWNlQ2xpZW50SW1wbCgpLmdldElkKCk7Ci0gICAgICAgIFN0cmluZ1tdIG1vZHMgPSBjdHNbal0uZ2V0TW9kdWxlVHlwZXNJbmNsdWRlKCk7Ci0gICAgICAgIGlmIChtb2RzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmdCdWZmZXIgZW50cnlidWZmID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICAgIGVudHJ5YnVmZi5hcHBlbmQoU3RyaW5nLnZhbHVlT2YoV2ViU2VydmljZVNjZW5hcmlvLkNMSUVOVCkpOwotICAgICAgICAgIGVudHJ5YnVmZi5hcHBlbmQoIi8iKTsKLSAgICAgICAgICBlbnRyeWJ1ZmYuYXBwZW5kKGltcGxJZCk7Ci0gICAgICAgICAgU3RyaW5nIGVudHJ5ID0gZW50cnlidWZmLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgaWYgKCF3ZWJTZXJ2aWNlQ2xpZW50VHlwZXNMaXN0Xy5jb250YWlucyhlbnRyeSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgd2ViU2VydmljZUNsaWVudFR5cGVzTGlzdF8uYWRkKGVudHJ5KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25SZWdpc3RyeTIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblJlZ2lzdHJ5Mi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjJkZjM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblJlZ2lzdHJ5Mi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyNyAgIDEyNjc4MCByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0OwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlU2NlbmFyaW87Ci0KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblJlZ2lzdHJ5MgotewotCi0gIHByaXZhdGUgc3RhdGljIFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uUmVnaXN0cnkyIGluc3RhbmNlXzsKLQotICAvL3dlYlNlcnZpY2VJbXBsc186IAotICAvL2tleTogaWQgYXR0cmlidXRlIG9mIGV4dGVuc2lvbiB0byBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud3NJbXBsCi0gIC8vdmFsdWU6IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VJbXBsIAotICBIYXNodGFibGUgd2ViU2VydmljZUltcGxzXzsKLQotICAvL3dlYlNlcnZpY2VDbGllbnRJbXBsc186IAotICAvL2tleTogaWQgYXR0cmlidXRlIG9mIGV4dGVuc2lvbiB0byBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud3NDbGllbnRJbXBsCi0gIC8vdmFsdWU6IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VDbGllbnRJbXBsICAKLSAgSGFzaHRhYmxlIHdlYlNlcnZpY2VDbGllbnRJbXBsc187Ci0KLSAgLy9ydW50aW1lc186IAotICAvL2tleTogaWQgYXR0cmlidXRlIG9mIGV4dGVuc2lvbiB0byBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkucnVudGltZXMKLSAgLy92YWx1ZTogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuUnVudGltZURlc2NyaXB0b3IKLSAgSGFzaHRhYmxlIHJ1bnRpbWVzXzsKLSAgCi0gIC8vc2VydmljZVJ1bnRpbWVzXzogCi0gIC8va2V5OiBpZCBhdHRyaWJ1dGUgb2YgZXh0ZW5zaW9uIHRvIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5zZXJ2aWNlUnVudGltZXMKLSAgLy92YWx1ZTogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yCi0gIEhhc2h0YWJsZSBzZXJ2aWNlUnVudGltZXNfOwotICAKLSAgLy9jbGllbnRSdW50aW1lc186IAotICAvL2tleTogaWQgYXR0cmlidXRlIG9mIGV4dGVuc2lvbiB0byBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuY2xpZW50UnVudGltZXMKLSAgLy92YWx1ZTogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuQ2xpZW50UnVudGltZURlc2NyaXB0b3IgIAotICBIYXNodGFibGUgY2xpZW50UnVudGltZXNfOwotICAKLSAgLy93ZWJTZXJ2aWNlVHlwZXNMaXN0XyBjb250YWlucyBhIGxpc3Qgb2YgU3RyaW5nIHZhbHVlcyBpbiB0aGlzIGZvcm06ICJzY2VuYXJpby93ZWJTZXJ2aWNlSW1wbElkIiwKLSAgLy93aGVyZSBzY2VhbnJpbyB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9uZSBvZiAKLSAgLy9vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NX1VQIG9yIAotICAvL29yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VTY2VuYXJpby5UT1BfRE9XTgotICAvL2FuZCB3ZWJTZXJ2aWNlSW1wbElkIGlzIHRoZSBpZCBhdHRyaWJ1dGUgb2YgYW4gZXh0ZW5zaW9uIHRvIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53c0ltcGwKLSAgLy9UaGlzIGxpc3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGl0ZW1zIGRpc3BsYXllZCBpbiB0aGUgV2ViU2VydmljZVR5cGUgY29tYm8tYm94IG9mIHBhZ2UgMSBvZiB0aGUgCi0gIC8vV2ViIHNlcml2Y2Ugd2l6YXJkLgotICBBcnJheUxpc3Qgd2ViU2VydmljZVR5cGVzTGlzdF87Ci0gIAotICAvL1RPRE86IE5vdCB1c2VkLiBSZW1vdmUgdGhpcyBhbmQgYWxsIHJlZmVyZW5jZXMgdG8gaXQgaW4gdGhpcyBjbGFzcy4KLSAgQXJyYXlMaXN0IHdlYlNlcnZpY2VDbGllbnRUeXBlc0xpc3RfOyAgCi0gIAotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KLSAgICogCi0gICAqIEByZXR1cm4gQSBzaW5nbGV0b24gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25SZWdpc3RyeTIgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblJlZ2lzdHJ5MiBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICBpZiAoaW5zdGFuY2VfID09IG51bGwpCi0gICAgewotICAgICAgaW5zdGFuY2VfID0gbmV3IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uUmVnaXN0cnkyKCk7Ci0gICAgICBpbnN0YW5jZV8ubG9hZCgpOwotICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2VfOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGxvYWQoKQotICB7Ci0gICAgd2ViU2VydmljZUltcGxzXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICB3ZWJTZXJ2aWNlQ2xpZW50SW1wbHNfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHJ1bnRpbWVzXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBzZXJ2aWNlUnVudGltZXNfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGNsaWVudFJ1bnRpbWVzXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICB3ZWJTZXJ2aWNlVHlwZXNMaXN0XyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICB3ZWJTZXJ2aWNlQ2xpZW50VHlwZXNMaXN0XyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAKLSAgICAKLSAgICBJRXh0ZW5zaW9uUmVnaXN0cnkgcmVnID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLSAgICAKLS8vICBMb2FkIFdlYlNlcnZpY2VJbXBscyBieSByZWFkaW5nIGFsbCBleHRlbnNpb25zIHRvIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53c0ltcGwKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSB3c0ltcGxFeHRzID0gcmVnLmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcigKLSAgICAgICAgIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSIsICJ3c0ltcGwiKTsKLSAgICAKLSAgICBmb3IoaW50IGlkeD0wOyBpZHg8d3NJbXBsRXh0cy5sZW5ndGg7IGlkeCsrKSAKLSAgICB7Ci0gICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbSA9IHdzSW1wbEV4dHNbaWR4XTsgICAgICAgIAotICAgICAgICBpZiAoZWxlbS5nZXROYW1lKCkuZXF1YWxzKCJ3ZWJTZXJ2aWNlSW1wbCIpKQotICAgICAgICB7Ci0gICAgICAgICAgV2ViU2VydmljZUltcGwgd3NpbXBsID0gbmV3IFdlYlNlcnZpY2VJbXBsKGVsZW0pOyAgICAgICAgICAKLSAgICAgICAgICB3ZWJTZXJ2aWNlSW1wbHNfLnB1dChlbGVtLmdldEF0dHJpYnV0ZSgiaWQiKSwgd3NpbXBsKTsKLSAgICAgICAgfSAgICAgICAgCi0gICAgfQotICAgIAotICAgIC8vTG9hZCBXZWJTZXJ2aWNlQ2xpZW50SW1wbHMgYnkgcmVhZGluZyBhbGwgZXh0ZW5zaW9ucyB0byBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud3NDbGllbnRJbXBsCi0gICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gd3NDbGllbnRJbXBsRXh0cyA9IHJlZy5nZXRDb25maWd1cmF0aW9uRWxlbWVudHNGb3IoCi0gICAgICAgICJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiLCAid3NDbGllbnRJbXBsIik7Ci0gICAgCi0gICAgZm9yKGludCBpZHg9MDsgaWR4PHdzQ2xpZW50SW1wbEV4dHMubGVuZ3RoOyBpZHgrKykgCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW0gPSB3c0NsaWVudEltcGxFeHRzW2lkeF07Ci0KLSAgICAgICAgaWYgKGVsZW0uZ2V0TmFtZSgpLmVxdWFscygid2ViU2VydmljZUNsaWVudEltcGwiKSkKLSAgICAgICAgewotICAgICAgICAgIFdlYlNlcnZpY2VDbGllbnRJbXBsIHdzQ2xpZW50SW1wbCA9IG5ldyBXZWJTZXJ2aWNlQ2xpZW50SW1wbChlbGVtKTsKLSAgICAgICAgICB3ZWJTZXJ2aWNlQ2xpZW50SW1wbHNfLnB1dChlbGVtLmdldEF0dHJpYnV0ZSgiaWQiKSwgd3NDbGllbnRJbXBsKTsKLSAgICAgICAgfSAgICAgICAgCi0gICAgfQotICAgIAotICAgIC8vTG9hZCBydW50aW1lcyBieSByZWFkaW5nIGFsbCBleHRlbnNpb25zIHRvIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5ydW50aW1lcwotICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIHJ1bnRpbWVFeHRzID0gcmVnLmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcigKLSAgICAgICAgIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSIsICJydW50aW1lcyIpOwotICAgIAotICAgIGZvcihpbnQgaWR4PTA7IGlkeDxydW50aW1lRXh0cy5sZW5ndGg7IGlkeCsrKSAKLSAgICB7Ci0gICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbSA9IHJ1bnRpbWVFeHRzW2lkeF07Ci0KLSAgICAgICAgaWYgKGVsZW0uZ2V0TmFtZSgpLmVxdWFscygicnVudGltZSIpKQotICAgICAgICB7Ci0gICAgICAgICAgUnVudGltZURlc2NyaXB0b3IgcmQgPSBuZXcgUnVudGltZURlc2NyaXB0b3IoZWxlbSk7Ci0gICAgICAgICAgcnVudGltZXNfLnB1dChlbGVtLmdldEF0dHJpYnV0ZSgiaWQiKSwgcmQpOwotICAgICAgICB9ICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgLy9Mb2FkIHNlcnZpY2VSdW50aW1lcyBieSByZWFkaW5nIGFsbCBleHRlbnNpb25zIHRvIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5zZXJ2aWNlUnVudGltZXMKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBzZXJ2aWNlUnVudGltZUV4dHMgPSByZWcuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzRm9yKAotICAgICAgICAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIiwgInNlcnZpY2VSdW50aW1lcyIpOwotICAgIAotICAgIGZvcihpbnQgaWR4PTA7IGlkeDxzZXJ2aWNlUnVudGltZUV4dHMubGVuZ3RoOyBpZHgrKykgCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW0gPSBzZXJ2aWNlUnVudGltZUV4dHNbaWR4XTsKLQotICAgICAgICBpZiAoZWxlbS5nZXROYW1lKCkuZXF1YWxzKCJzZXJ2aWNlUnVudGltZSIpKQotICAgICAgICB7Ci0gICAgICAgICAgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIHJkID0gbmV3IFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvcihlbGVtLCB3ZWJTZXJ2aWNlSW1wbHNfLCBydW50aW1lc18pOwotICAgICAgICAgIHNlcnZpY2VSdW50aW1lc18ucHV0KGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpLCByZCk7ICAgICAgICAgIAotICAgICAgICAgIHVwZGF0ZVdlYlNlcnZpY2VUeXBlTGlzdChyZCk7Ci0gICAgICAgIH0gICAgICAgIAotICAgIH0KLSAgICAKLSAgICAvL0xvYWQgY2xpZW50UnVudGltZXMgYnkgcmVhZGluZyBhbGwgZXh0ZW5zaW9ucyB0byBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuY2xpZW50UnVudGltZXMKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBjbGllbnRSdW50aW1lRXh0cyA9IHJlZy5nZXRDb25maWd1cmF0aW9uRWxlbWVudHNGb3IoCi0gICAgICAgICJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiLCAiY2xpZW50UnVudGltZXMiKTsKLSAgICAKLSAgICBmb3IoaW50IGlkeD0wOyBpZHg8Y2xpZW50UnVudGltZUV4dHMubGVuZ3RoOyBpZHgrKykgCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW0gPSBjbGllbnRSdW50aW1lRXh0c1tpZHhdOwotCi0gICAgICBpZiAoZWxlbS5nZXROYW1lKCkuZXF1YWxzKCJjbGllbnRSdW50aW1lIikpCi0gICAgICB7Ci0gICAgICAgIENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yIHJkID0gbmV3IENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yKGVsZW0sIHdlYlNlcnZpY2VDbGllbnRJbXBsc18sIHJ1bnRpbWVzXyk7Ci0gICAgICAgIGNsaWVudFJ1bnRpbWVzXy5wdXQoZWxlbS5nZXRBdHRyaWJ1dGUoImlkIiksIHJkKTsKLSAgICAgICAgdXBkYXRlV2ViU2VydmljZUNsaWVudFR5cGVMaXN0KHJkKTsKLSAgICAgICAgICAKLSAgICAgIH0gICAgICAgIAotICAgIH0KLSAgfSAgCi0gICAgCi0gIC8qKgotICAgKiBVcGRhdGVzIHRoZSBsaXN0IG9mIFdlYiBzZXJ2aWNlIHR5cGVzIHdpdGggdGhlIHByb3ZpZGVkIHNlcnZpY2UgcnVudGltZSdzIGNvbnRyaWJ1dGlvbiBvZgotICAgKiBzY2VuYXJpby93ZWJTZXJ2aWNlSW1wbCBjb21iaW5hdGlvbi4KLSAgICogQHBhcmFtIGRlc2NyaXB0b3IKLSAgICovCi0gIHByaXZhdGUgdm9pZCB1cGRhdGVXZWJTZXJ2aWNlVHlwZUxpc3QoU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpCi0gIHsKLSAgICBTdHJpbmcgc2VydmljZUltcGxJZCA9IGRlc2NyaXB0b3IuZ2V0U2VydmljZUltcGxlbWVudGF0aW9uVHlwZSgpLmdldElkKCk7Ci0gICAgYm9vbGVhbiBib3R0b21VcCA9IGRlc2NyaXB0b3IuZ2V0Qm90dG9tVXAoKTsKLSAgICBib29sZWFuIHRvcERvd24gPSBkZXNjcmlwdG9yLmdldFRvcERvd24oKTsKLSAgICBpZiAoYm90dG9tVXApCi0gICAgewotICAgICAgU3RyaW5nQnVmZmVyIGVudHJ5YnVmZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgIGVudHJ5YnVmZi5hcHBlbmQoU3RyaW5nLnZhbHVlT2YoV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTVVQKSk7Ci0gICAgICBlbnRyeWJ1ZmYuYXBwZW5kKCIvIik7Ci0gICAgICBlbnRyeWJ1ZmYuYXBwZW5kKHNlcnZpY2VJbXBsSWQpOwotICAgICAgU3RyaW5nIGVudHJ5ID0gZW50cnlidWZmLnRvU3RyaW5nKCk7Ci0gICAgICBpZiAoIXdlYlNlcnZpY2VUeXBlc0xpc3RfLmNvbnRhaW5zKGVudHJ5KSkKLSAgICAgIHsKLSAgICAgICAgd2ViU2VydmljZVR5cGVzTGlzdF8uYWRkKGVudHJ5KTsKLSAgICAgIH0gICAgICAKLSAgICB9Ci0gICAgCi0gICAgaWYgKHRvcERvd24pCi0gICAgewotICAgICAgU3RyaW5nQnVmZmVyIGVudHJ5YnVmZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgIGVudHJ5YnVmZi5hcHBlbmQoU3RyaW5nLnZhbHVlT2YoV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV04pKTsKLSAgICAgIGVudHJ5YnVmZi5hcHBlbmQoIi8iKTsKLSAgICAgIGVudHJ5YnVmZi5hcHBlbmQoc2VydmljZUltcGxJZCk7Ci0gICAgICBTdHJpbmcgZW50cnkgPSBlbnRyeWJ1ZmYudG9TdHJpbmcoKTsKLSAgICAgIGlmICghd2ViU2VydmljZVR5cGVzTGlzdF8uY29udGFpbnMoZW50cnkpKQotICAgICAgewotICAgICAgICB3ZWJTZXJ2aWNlVHlwZXNMaXN0Xy5hZGQoZW50cnkpOwotICAgICAgfSAgICAgIAotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVdlYlNlcnZpY2VDbGllbnRUeXBlTGlzdChDbGllbnRSdW50aW1lRGVzY3JpcHRvciBkZXNjcmlwdG9yKQotICB7Ci0gICAgU3RyaW5nIGNsaWVudEltcGxJZCA9IGRlc2NyaXB0b3IuZ2V0Q2xpZW50SW1wbGVtZW50YXRpb25UeXBlKCkuZ2V0SWQoKTsKLSAgICBTdHJpbmdCdWZmZXIgZW50cnlidWZmID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGVudHJ5YnVmZi5hcHBlbmQoU3RyaW5nLnZhbHVlT2YoV2ViU2VydmljZVNjZW5hcmlvLkNMSUVOVCkpOwotICAgIGVudHJ5YnVmZi5hcHBlbmQoIi8iKTsKLSAgICBlbnRyeWJ1ZmYuYXBwZW5kKGNsaWVudEltcGxJZCk7Ci0gICAgU3RyaW5nIGVudHJ5ID0gZW50cnlidWZmLnRvU3RyaW5nKCk7Ci0gICAgaWYgKCF3ZWJTZXJ2aWNlQ2xpZW50VHlwZXNMaXN0Xy5jb250YWlucyhlbnRyeSkpCi0gICAgewotICAgICAgd2ViU2VydmljZUNsaWVudFR5cGVzTGlzdF8uYWRkKGVudHJ5KTsKLSAgICB9ICAgIAotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi91aS93c3J0L1dlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYzNGVmNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyMTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMTMxIDEyMTA3MSAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lciAgICAgCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwMjI3ICAgMTI0MzkyIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjAzMjQgICAxMTY3NTAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQyNyAgIDEyNjc4MCByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDcwMTE5ICAgMTU5NDU4IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbgotICogMjAwNzExMDcgICAyMDM4MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMzI2ICAgMjIxMzY0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDQwMiAgIDIyNTM3OCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQ2xpZW50IHdpemFyZCBydW50aW1lL3NlcnZlciBkZWZhdWx0aW5nIGlzIG5vdCByZXNwZWN0aW5nIHRoZSBwcmVmZXJlbmNlCi0gKiAyMDA4MDUzMCAgIDIzNDg3MSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV29ya2JlbmNoIGhhcyBub3QgYmVlbiBjcmVhdGVkIHlldCBlcnJvciBpbiBjbWRsaW5lIEFudAotICogMjAwODA4MDggICAyNDM2MjMgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBJbXByb3ZlIHNlcnZlciBkZWZhdWx0aW5nIHBlcmZvcm1hbmNlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LnNlcnZlci5jb3JlLkZhY2V0VXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0TWF0Y2hlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5SZXF1aXJlZEZhY2V0VmVyc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRTZXJ2ZXJSdW50aW1lQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLlR5cGVTZWxlY3Rpb25GaWx0ZXIyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLkxhYmVsc0FuZElkczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uLlNlbGVjdGlvbkxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uLlNlbGVjdGlvbkxpc3RDaG9pY2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklGYWNldGVkUHJvamVjdFRlbXBsYXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLlByb2plY3RGYWNldHNNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnJ1bnRpbWUuSVJ1bnRpbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklSdW50aW1lVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlclR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5TZXJ2ZXJVSUNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlUnVudGltZUNoZWNrZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgY29udGFpbnMgbnVtZXJvdXMgdXRpbGl0eSBtZXRob2RzIHRoYXQKLSAqIHByb2Nlc3MgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIHRocm91Z2ggZXh0ZW5zaW9uIHBvaW50cwotICogd2hpY2ggYXJlIHJlYWQgaW4gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25SZWdpc3RyeTI6Ci0gKiA8dWw+Ci0gKiA8bGk+IG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53c0ltcGwgPC9saT4KLSAqIDxsaT4gb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzQ2xpZW50SW1wbCA8L2xpPgotICogPGxpPiBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkucnVudGltZXMgPC9saT4KLSAqIDxsaT4gb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLnNlcnZpY2VSdW50aW1lcyA8L2xpPgotICogPGxpPiBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuY2xpZW50UnVudGltZXMgPC9saT4KLSAqIDwvdWw+Ci0gKiAKLSAqIHRvIHByb3ZpZGUgYW5zd2VycyB0byBjb21tb24gcXVlc3Rpb25zIHJlZ2FyZGluZyB3aGljaCBzZXJ2ZXJzLAotICogcHJvamVjdHMsIGFuZCBwcm9qZWN0IHR5cGVzIGEgcGFydGljdWxhciBXZWIgc2VydmljZSBydW50aW1lCi0gKiBzdXBwb3J0cy4KLSAqIDxici8+PGJyLz4KLSAqIFRlbWlub2xvZ3kgdXNlZCBpbiB0aGUgamF2YWRvYyBpbiB0aGlzIGNsYXNzOgotICogPHVsPgotICogPGxpPjxiPldlYiBzZXJ2aWNlIHNjZW5hcmlvPC9iPjogT25lIG9mIFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01fVVAgb3IgV2ViU2VydmljZVNjZW5hcmlvLlRPUF9ET1dOLjwvbGk+IAotICogPGxpPjxiPldlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHR5cGU8L2I+OiBleHRlbnNpb24gdG8gb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzSW1wbC4KLSAqIFRoZSBKYXZhIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgaXMgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZUltcGwuPC9saT4KLSAqIDxsaT48Yj5XZWIgc2VydmljZSB0eXBlPC9iPjogRm9yd2FyZCBzbGFzaCBzZXBhcmF0ZWQgY29uY2F0ZW5hdGlvbiBvZiB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uCi0gKiBvZiBhIFdlYiBzZXJ2aWNlIHNjZW5hcmlvIGFuZCBhIFdlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHR5cGUgaWQuCi0gKiBGb3IgZXhhbXBsZSwgIjAvb3JnLmVjbGlwc2UuanN0LndzLndzSW1wbC5qYXZhIiwgcmVwcmVzZW50cyB0aGUgYm90dG9tIHVwIEphdmEgYmVhbiBXZWIgc2VydmljZSB0eXBlLjwvbGk+Ci0gKiA8bGk+PGI+V2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGU8L2I+OiBleHRlbnNpb24gdG8gb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzQ2xpZW50SW1wbC4KLSAqIFRoZSBKYXZhIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgaXMgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZUNsaWVudEltcGwuPC9saT4KLSAqIDxsaT48Yj5XZWIgc2VydmljZSBydW50aW1lPC9iPjogZXh0ZW5zaW9uIHRvIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5ydW50aW1lcy4gCi0gKiBUaGUgSmF2YSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGlzIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LlJ1bnRpbWVEZXNjcmlwdG9yPC9saT4gCi0gKiA8bGk+PGI+c2VydmljZVJ1bnRpbWU8L2I+OiBleHRlbnNpb24gdG8gb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLnNlcnZpY2VSdW50aW1lcy4KLSAqIFRoZSBKYXZhIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgaXMgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yPC9saT4KLSAqIDxsaT48Yj5jbGllbnRSdW50aW1lPC9iPjogZXh0ZW5zaW9uIHRvIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5jbGllbnRSdW50aW1lcy4KLSAqIFRoZSBKYXZhIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgaXMgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuQ2xpZW50UnVudGltZURlc2NyaXB0b3I8L2xpPgotICogPGxpPjxiPnNlcnZlciB0eXBlPC9iPjogVGhpcyBpcyBhIHNlcnZlciB0b29scyBhcnRpZmFjdC4gWW91IHNlZSBhIGxpc3Qgb2YgdGhlc2Ugd2hlbiBjcmVhdGluZyBhIG5ldyBzZXJ2ZXIKLSAqIGluIHRoZSB0b29sLjwvbGk+Ci0gKiA8bGk+PGI+c2VydmVyIHJ1bnRpbWU8L2I+OiBUaGlzIGlzIGEgc2VydmVyIHRvb2xzIGFydGlmYWN0LiBZb3Ugc2VlIGEgbGlzdCBvZiB0aGVzZSBpZiB5b3UgZ28gdG8gUHJlZmVyZW5jZXMsIAotICogU2VydmVyID4gSW5zdGFsbGVkIFJ1bnRpbWVzIGluIHRoZSB0b29sLiBUaGUgSmF2YSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGlzIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZTwvbGk+Ci0gKiA8bGk+PGI+ZmFjZXQgcnVudGltZTwvYj46IFRoZSBmYWNldCBlcXVpdmFsZW50IG9mIGEgc2VydmVyIHJ1bnRpbWUuIFRoZSBKYXZhIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgaXMgCi0gKiBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5ydW50aW1lLklSdW50aW1lLiBvcmcuZWNsaXBzZS5qc3Quc2VydmVyLmNvcmUuRmFjZXRVdGlsCi0gKiBwcm92aWRlcyBtZXRob2RzIHRvIHRyYW5zbGF0ZSBmcm9tIGEgc2VydmVyIHJ1bnRpbWUgdG8gYSBmYWNldCBydW50aW1lIGFuZCB2aWNlLXZlcnNhLjwvbGk+Ci0gKiA8L3VsPgotICovCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25SZWdpc3RyeTIgcmVnaXN0cnkgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblJlZ2lzdHJ5Mi5nZXRJbnN0YW5jZSgpOwotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIFJ1bnRpbWVEZXNjcmlwdG9yIHJlcHJlc2VudGluZyB0aGUgV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiB3aXRoIGFuIGlkIGF0dHJpYnV0ZSBlcXVhbCB0byB0aGUgcHJvdmlkZWQgaWQKLSAgICogQHBhcmFtIGlkCi0gICAqIEByZXR1cm4gUnVudGltZURlc2NyaXB0b3IgcmVwcmVzZW50aW5nIHRoZSBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIHdpdGggYW4gaWQgYXR0cmlidXRlIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBpZC4gUmV0dXJucyBudWxsCi0gICAqIGlmIHN1Y2ggYSBSdW50aW1lRGVzY3JpcHRvciBjYW5ub3QgYmUgZm91bmQuCi0gICAqLyAgCi0gIHB1YmxpYyBzdGF0aWMgUnVudGltZURlc2NyaXB0b3IgZ2V0UnVudGltZUJ5SWQoU3RyaW5nIGlkKQotICB7Ci0gICAgT2JqZWN0IHJlc3VsdCA9IHJlZ2lzdHJ5LnJ1bnRpbWVzXy5nZXQoaWQpOwotICAgIGlmIChyZXN1bHQhPW51bGwpCi0gICAgewotICAgICAgcmV0dXJuIChSdW50aW1lRGVzY3JpcHRvcilyZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiBudWxsOyAgICAgICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB1bmlvbiBvZiBhbGwgcHJvamVjdCB0eXBlcyBzdXBwb3J0ZWQgYnkgYWxsIHNlcnZpY2VSdW50aW1lcy4gVXNlZCBieSB0aGUKLSAgICogUHJvamVjdFRvcG9sb2d5IHByZWZlcmVuY2UgcGFnZS4gCi0gICAqIEByZXR1cm4gU3RyaW5nW10gYXJyYXkgb2YgdGVtcGxhdGUgaWRzLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QWxsU2VydmljZVByb2plY3RUeXBlcygpCi0gIHsKLSAgICBBcnJheUxpc3QgZmluYWxUZW1wbGF0ZUlkTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBJdGVyYXRvciBpdGVyID0gcmVnaXN0cnkuc2VydmljZVJ1bnRpbWVzXy52YWx1ZXMoKS5pdGVyYXRvcigpOwotCi0gICAgLy9Mb29wIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlUnVudGltZXMKLSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpICAgCi0gICAgewotICAgICAgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSAoU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yKWl0ZXIubmV4dCgpOwotICAgICAgCi0gICAgICAvL0dldCB0aGUgdGVtcGxhdGVzIGZvciB0aGlzIHNlcnZpY2VSdW50aW1lCi0gICAgICBTZXQgdGVtcGxhdGVzID0gRmFjZXRNYXRjaENhY2hlLmdldEluc3RhbmNlKCkuZ2V0VGVtcGxhdGVzRm9yU2VydmljZVJ1bnRpbWUoZGVzYy5nZXRJZCgpKTsKLSAgICAgIAotICAgICAgLy9BZGQgdGhlIHRlbXBsYXRlIGlkcyB0byB0aGUgbGlzdCBpZiB0aGV5IGhhdmUgbm90IGFscmVhZHkgYmVlbiBhZGRlZAotICAgICAgSXRlcmF0b3IgaXRyID0gdGVtcGxhdGVzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXRyLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUgdGVtcGxhdGUgPSAoSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUpaXRyLm5leHQoKTsKLSAgICAgICAgaWYgKCFmaW5hbFRlbXBsYXRlSWRMaXN0LmNvbnRhaW5zKHRlbXBsYXRlLmdldElkKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgZmluYWxUZW1wbGF0ZUlkTGlzdC5hZGQodGVtcGxhdGUuZ2V0SWQoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0gICAgICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIChTdHJpbmdbXSlmaW5hbFRlbXBsYXRlSWRMaXN0LnRvQXJyYXkobmV3IFN0cmluZ1tde30pOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgdW5pb24gb2YgYWxsIHByb2plY3QgdHlwZXMgc3VwcG9ydGVkIGJ5IGFsbCBjbGllbnRSdW50aW1lcy4gVXNlZCBieSB0aGUKLSAgICogUHJvamVjdFRvcG9sb2d5IHByZWZlcmVuY2UgcGFnZS4gCi0gICAqIEByZXR1cm4gU3RyaW5nW10gYXJyYXkgb2YgdGVtcGxhdGUgaWRzLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QWxsQ2xpZW50UHJvamVjdFR5cGVzKCkKLSAgewotICAgIEFycmF5TGlzdCBmaW5hbFRlbXBsYXRlSWRMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIEl0ZXJhdG9yIGl0ZXIgPSByZWdpc3RyeS5jbGllbnRSdW50aW1lc18udmFsdWVzKCkuaXRlcmF0b3IoKTsKLQotICAgIC8vTG9vcCB0aHJvdWdoIGFsbCB0aGUgY2xpZW50UnVudGltZXMKLSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpICAgCi0gICAgewotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChDbGllbnRSdW50aW1lRGVzY3JpcHRvcilpdGVyLm5leHQoKTsKLSAgICAgIAotICAgICAgLy9HZXQgdGhlIHRlbXBsYXRlcyBmb3IgdGhpcyBjbGllbnRSdW50aW1lCi0gICAgICBTZXQgdGVtcGxhdGVzID0gRmFjZXRNYXRjaENhY2hlLmdldEluc3RhbmNlKCkuZ2V0VGVtcGxhdGVzRm9yQ2xpZW50UnVudGltZShkZXNjLmdldElkKCkpOwotICAgICAgCi0gICAgICAvL0FkZCB0aGUgdGVtcGxhdGUgaWRzIHRvIHRoZSBsaXN0IGlmIHRoZXkgaGF2ZSBub3QgYWxyZWFkeSBiZWVuIGFkZGVkCi0gICAgICBJdGVyYXRvciBpdHIgPSB0ZW1wbGF0ZXMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdHIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSB0ZW1wbGF0ZSA9IChJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSlpdHIubmV4dCgpOwotICAgICAgICBpZiAoIWZpbmFsVGVtcGxhdGVJZExpc3QuY29udGFpbnModGVtcGxhdGUuZ2V0SWQoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICBmaW5hbFRlbXBsYXRlSWRMaXN0LmFkZCh0ZW1wbGF0ZS5nZXRJZCgpKTsKLSAgICAgICAgfQotICAgICAgfSAgICAgICAgICAgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gKFN0cmluZ1tdKWZpbmFsVGVtcGxhdGVJZExpc3QudG9BcnJheShuZXcgU3RyaW5nW117fSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBsYWJlbCBvZiBhIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgZ2l2ZW4gaXRzIGlkCi0gICAqIEBwYXJhbSBydW50aW1lSWQgaWQgb2YgYSBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIEByZXR1cm4gU3RyaW5nIHRoZSBsYWJlbCBvZiB0aGUgV2ViIHNlcnZpY2UgcnVudGltZSB3aXRoIGFuIGlkIGVxdWFsIHRvIHJ1bnRpbWVJZC4KLSAgICogUmV0dXJucyBudWxsIGlmIHN1Y2ggYSBXZWIgc2VydmljZSBydW50aW1lIGNhbm5vdCBiZSBmb3VuZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFJ1bnRpbWVMYWJlbEJ5SWQoU3RyaW5nIHJ1bnRpbWVJZCkgCi0gIHsKLSAgICBSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gZ2V0UnVudGltZUJ5SWQocnVudGltZUlkKTsKLSAgICBpZiAoZGVzYyA9PSBudWxsKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgCi0gICAgcmV0dXJuIGRlc2MuZ2V0TGFiZWwoKTsKLSAgfSAgICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBSdW50aW1lRGVzY3JpcHRvciBjb3JyZXNwb25kaW5nIHRvIHRoZSBXZWIgc2VydmljZSBydW50aW1lIHdpdGggdGhlIHByb3ZpZGVkIGxhYmVsCi0gICAqIEBwYXJhbSBsYWJlbCBsYWJlbCBvZiBhIFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLSAgICogQHJldHVybiBSdW50aW1lRGVzY3JpcHRvciBjb3JyZXNwb25kaW5nIHRvIHRoZSBXZWIgc2VydmljZSBydW50aW1lIHdpdGggdGhlIHByb3ZpZGVkIGxhYmVsCi0gICAqIFJldHVybnMgbnVsbCBpZiBzdWNoIGEgV2ViIHNlcnZpY2UgcnVudGltZSBjYW5ub3QgYmUgZm91bmQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFJ1bnRpbWVEZXNjcmlwdG9yIGdldFJ1bnRpbWVCeUxhYmVsKFN0cmluZyBsYWJlbCkKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXIgPSByZWdpc3RyeS5ydW50aW1lc18udmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgUnVudGltZURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IChSdW50aW1lRGVzY3JpcHRvcilpdGVyLm5leHQoKTsKLSAgICAgIGlmIChkZXNjcmlwdG9yIT1udWxsKSB7Ci0gICAgICAgIGlmIChsYWJlbC5lcXVhbHMoZGVzY3JpcHRvci5nZXRMYWJlbCgpKSkKLSAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7ICAgICAgCi0gIH0gICAgICAKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbGFiZWwgb2YgYW4gc2VydmVyIHR5cGUgZ2l2ZW4gaXRzIGlkCi0gICAqIEBwYXJhbSBzZXJ2ZXJGYWN0b3J5SWQgaWQgb2YgYSBzZXJ2ZXIgdHlwZQotICAgKiBAcmV0dXJuIFN0cmluZyBsYWJlbCBvZiB0aGUgc2VydmVyIHR5cGUgd2l0aCBhbiBpZCBlcXVhbCB0byBzZXJ2ZXJGYWN0b3J5SWQuCi0gICAqIFJldHVybnMgbnVsbCBpZiBzdWNoIGEgc2VydmVyIHR5cGUgY2Fubm90IGJlIGZvdW5kLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0U2VydmVyTGFiZWxCeUlkKFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQpCi0gIHsKLSAgICBJU2VydmVyVHlwZSBzZXJ2ZXJUeXBlID0gU2VydmVyQ29yZS5maW5kU2VydmVyVHlwZShzZXJ2ZXJGYWN0b3J5SWQpOwotICAgIGlmIChzZXJ2ZXJUeXBlID09IG51bGwpCi0gICAgICByZXR1cm4gbnVsbDsKLSAgICAKLSAgICBpZiAoUGxhdGZvcm1VSS5pc1dvcmtiZW5jaFJ1bm5pbmcoKSkgewotICAgICAgU3RyaW5nIHNlcnZlckxhYmVsID0gU2VydmVyVUlDb3JlLmdldExhYmVsUHJvdmlkZXIoKS5nZXRUZXh0KHNlcnZlclR5cGUpOyAgIAotICAgICAgcmV0dXJuIHNlcnZlckxhYmVsOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gc2VydmVyVHlwZS5nZXROYW1lKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBsYWJlbCBvZiBhbiBJU2VydmVyIGdpdmVuIGl0cyBpZAotICAgKiBAcGFyYW0gaW5zdGFuY2VJZCBpZCBvZiBhbiBJU2VydmVyCi0gICAqIEByZXR1cm4gU3RyaW5nIGxhYmVsIG9mIHRoZSBJU2VydmVyIHdpdGggYW4gaWQgZXF1YWwgdG8gaW5zdGFuY2VJZC4KLSAgICovICAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0U2VydmVySW5zdGFuY2VMYWJlbEZyb21JbnN0YW5jZUlkKCBTdHJpbmcgaW5zdGFuY2VJZCApCi0gIHsKLSAgICBJU2VydmVyIHNlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlciggaW5zdGFuY2VJZCApOyAgICAKLSAgICByZXR1cm4gc2VydmVyLmdldE5hbWUoKTsKLSAgfSAgCi0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHVuaW9uIG9mIGFsbCBzZXJ2ZXIgdHlwZSBpZHMgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjZXQgcnVudGltZXMKLSAgICogaW4gdGhlIHByb3ZpZGVkIHNldC4KLSAgICogQHBhcmFtIGZhY2V0UnVudGltZXMgYSBzZXQgY29udGFpbmluZyBlbGVtZW50cyBvZiB0eXBlIHtAbGluayBJUnVudGltZX0uCi0gICAqIEByZXR1cm4gYW4gYXJyYXkgb2YgSVNlcnZlclR5cGUgaWRzLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIFN0cmluZ1tdIGdldFNlcnZlckZhY3RvcnlJZHNCeUZhY2V0UnVudGltZXMoU2V0IGZhY2V0UnVudGltZXMpCi0gIHsKLSAgICAKLSAgICBBcnJheUxpc3Qgc3VwcG9ydGVkU2VydmVyRmFjdG9yeUlkcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBTdHJpbmdbXSBzZXJ2ZXJUeXBlSWRzID0gZ2V0QWxsU2VydmVyRmFjdG9yeUlkc1dpdGhSdW50aW1lcygpOwotICAgIEl0ZXJhdG9yIGl0ciA9IGZhY2V0UnVudGltZXMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZShpdHIuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIElSdW50aW1lIGZSdW50aW1lID0gKElSdW50aW1lKWl0ci5uZXh0KCk7Ci0gICAgICBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVJ1bnRpbWUgc1J1bnRpbWUgPSBGYWNldFV0aWwuZ2V0UnVudGltZShmUnVudGltZSk7Ci0gICAgICBmb3IgKGludCBpPTA7IGk8c2VydmVyVHlwZUlkcy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IFNlcnZlckNvcmUuZmluZFNlcnZlclR5cGUoc2VydmVyVHlwZUlkc1tpXSk7Ci0gICAgICAgIElSdW50aW1lVHlwZSBydW50aW1lVHlwZSA9IHNlcnZlclR5cGUuZ2V0UnVudGltZVR5cGUoKTsKLSAgICAgICAgaWYgKHJ1bnRpbWVUeXBlICE9IG51bGwpCi0gICAgICAgIHsKLQkgICAgICAgIFN0cmluZyBydW50aW1lVHlwZUlkID0gcnVudGltZVR5cGUuZ2V0SWQoKTsKLQkgICAgICAgIGlmIChzUnVudGltZSAhPSBudWxsICYmIHNSdW50aW1lLmdldFJ1bnRpbWVUeXBlKCkgIT0gbnVsbCAmJiBydW50aW1lVHlwZUlkLmVxdWFscyhzUnVudGltZS5nZXRSdW50aW1lVHlwZSgpLmdldElkKCkpKQotCSAgICAgICAgewotCSAgICAgICAgICBzdXBwb3J0ZWRTZXJ2ZXJGYWN0b3J5SWRzLmFkZChzZXJ2ZXJUeXBlSWRzW2ldKTsgICAgICAgICAgCi0JICAgICAgICB9ICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIChTdHJpbmdbXSlzdXBwb3J0ZWRTZXJ2ZXJGYWN0b3J5SWRzLnRvQXJyYXkobmV3IFN0cmluZ1swXSk7Ci0gICAgCi0gICAgLy9UZW1wb3JhcmlseSByZXR1cm4gYWxsIGZhY3RvcnkgaWRzIHdpdGggcnVudGltZXMKLSAgICAvL3JldHVybiBnZXRBbGxTZXJ2ZXJGYWN0b3J5SWRzV2l0aFJ1bnRpbWVzKCk7ICAgIAotICB9Ci0gIAotICAvL1NlcnZpY2Utc2lkZSB1dGlsaXRpZXMKLSAgLyoqCi0gICAqIFJldHVybnMgYSBXZWJTZXJ2aWNlSW1wbCBnaXZlbiB0aGUgaWQgb2YgYSBXZWIgc2VydmljZSBpbXBsZW1lbnRhdGlvbiB0eXBlLgotICAgKiBAcGFyYW0gaWQgCi0gICAqIEByZXR1cm4gV2ViU2VydmljZUltcGwgd2l0aCB0aGUgZ2l2ZW4gaWQKLSAgICogUmV0dXJucyBudWxsIGlmIHN1Y2ggYSBXZWJTZXJ2aWNlSW1wbCBjYW5ub3QgYmUgZm91bmQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFdlYlNlcnZpY2VJbXBsIGdldFdlYlNlcnZpY2VJbXBsQnlJZChTdHJpbmcgaWQpCi0gIHsKLSAgICBPYmplY3QgcmVzdWx0ID0gcmVnaXN0cnkud2ViU2VydmljZUltcGxzXy5nZXQoaWQpOwotICAgIGlmIChyZXN1bHQhPW51bGwpCi0gICAgewotICAgICAgcmV0dXJuIChXZWJTZXJ2aWNlSW1wbClyZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiBudWxsOyAgICAKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYSB7QGxpbmsgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yfSBnaXZlbiB0aGUgaWQgb2YgYSBzZXJ2aWNSdW50aW1lLgotICAgKiBAcGFyYW0gaWQgb2YgYSBzZXJ2aWNlUnVudGltZQotICAgKiBAcmV0dXJuIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciB3aXRoIHRoZSBnaXZlbiBpZAotICAgKiBSZXR1cm5zIG51bGwgaWYgc3VjaCBhIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciBjYW5ub3QgYmUgZm91bmQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciBnZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKFN0cmluZyBpZCkKLSAgewotICAgIE9iamVjdCByZXN1bHQgPSByZWdpc3RyeS5zZXJ2aWNlUnVudGltZXNfLmdldChpZCk7Ci0gICAgaWYgKHJlc3VsdCE9bnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gKFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvcilyZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiBudWxsOyAgICAgICAgCi0gIH0gIAotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHtAbGluayBJV2ViU2VydmljZVJ1bnRpbWV9IG9mIHRoZSBnaXZlbiBzZXJ2aWNlUnVudGltZS4gRXh0ZW5kZXJzIHByb3ZpZGUgdGhlIGZ1bGx5IAotICAgKiBxdWFsaWZpZWQgbmFtZSBvZiBhIGNvbmNyZXRlIElXZWJTZXJ2aWNlUnVudGltZSBpbiB0aGUgY2xhc3MgYXR0cmlidXRlIG9mIGEgc2VydmljZVJ1bnRpbWVzIGV4dGVuc2lvbi4KLSAgICogQHBhcmFtIHNlcnZpY2VSdW50aW1lSWQgaWQgb2YgYSBzZXJ2aWNlUnVudGltZQotICAgKiBAcmV0dXJuIElXZWJTZXJ2aWNlUnVudGltZQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBJV2ViU2VydmljZVJ1bnRpbWUgZ2V0U2VydmljZVJ1bnRpbWUoIFN0cmluZyBzZXJ2aWNlUnVudGltZUlkICkKLSAgewotICAgIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZ2V0U2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yQnlJZChzZXJ2aWNlUnVudGltZUlkKTsKLSAgICBJV2ViU2VydmljZVJ1bnRpbWUgICAgd2Vic2VydmljZVJ1bnRpbWUgICAgID0gbnVsbDsKLSAgICBpZiAoZGVzY3JpcHRvciAhPSBudWxsKQotICAgIHsKLSAgICAgICAgd2Vic2VydmljZVJ1bnRpbWUgPSBkZXNjcmlwdG9yLmdldFdlYlNlcnZpY2VSdW50aW1lKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiB3ZWJzZXJ2aWNlUnVudGltZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGlkIG9mIGEgc2VydmljZVJ1bnRpbWUgdGhhdCBzdXBwb3J0cyB0aGUgcHJvdmlkZWQgV2ViIHNlcnZpY2UgdHlwZSwgV2ViIHNlcnZpY2UgcnVudGltZSwKLSAgICogc2VydmVyIHR5cGUvc2VydmVyIGluc3RhbmNlIChpZiBwcmVzZW50KSwgcHJvamVjdCBvciBwcm9qZWN0IHR5cGUuCi0gICAqIEBwYXJhbSB0cnMgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIFR5cGVSdW50aW1lU2VydmVyfSBjb250YWluaW5nIGEgV2ViIHNlcnZpY2UgdHlwZSBpZCwgV2ViIHNlcnZpY2UgcnVudGltZSBpZCwKLSAgICogc2VydmVyIHR5cGUgaWQgYW5kIHNlcnZlciBpbnN0YW5jZSBpZC4gVGhlIFdlYiBzZXJ2aWNlIHR5cGUgaWQgYW5kIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgaWQgbXVzdCBiZSBub24tbnVsbCAKLSAgICogYW5kIG5vbi1lbXB0eS4gVGhlIHNlcnZlciB0eXBlIGlkIGFuZCBzZXJ2ZXIgaW5zdGFuY2UgaWQgbWF5IGJlIG51bGwgb3IgZW1wdHkuCi0gICAqIEBwYXJhbSBwcm9qZWN0TmFtZSB0aGUgbmFtZSBvZiBhbiBJUHJvamVjdCB0aGF5IG1heSBvciBtYXQgbm90IGV4aXN0IGluIHRoZSB3b3Jrc3BhY2UuIE11c3QgYmUgbm9uLW51bGwgYW5kIAotICAgKiBub24tZW1wdHkuCi0gICAqIEBwYXJhbSB0ZW1wbGF0ZUlkIHRoZSBpZCBvZiBhbiB7QGxpbmsgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGV9LiBNdXN0IGJlIG5vbi1udWxsIGFuZCBub24tZW1wdHkgaWYKLSAgICogYW4gSVByb2plY3Qgd2l0aCB0aGUgbmFtZSBwcm9qZWN0TmFtZSBkb2VzIG5vdCBleGlzdCBpbiB0aGUgd29ya3NwYWNlLiAKLSAgICogQHJldHVybiBTdHJpbmcgaWQgb2YgYSBzZXJ2aWNlUnVudGltZSB0aGF0IHN1cHBvcnRzIHRoZSBwcm92aWRlZCBXZWIgc2VydmljZSB0eXBlLCBXZWIgc2VydmljZSBydW50aW1lLAotICAgKiBzZXJ2ZXIgdHlwZS9zZXJ2ZXIgaW5zdGFuY2UgKGlmIHByZXNlbnQpLCBwcm9qZWN0IG9yIHByb2plY3QgdHlwZS4gUmV0dXJucyBhbiBlbXB0eSBTdHJpbmcgaWYgbm8gCi0gICAqIHN1Y2ggc2VydmljZVJ1bnRpbWUgY291bGQgYmUgZm91bmQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRTZXJ2aWNlUnVudGltZUlkKFR5cGVSdW50aW1lU2VydmVyIHRycywgU3RyaW5nIHByb2plY3ROYW1lLCBTdHJpbmcgdGVtcGxhdGVJZCkKLSAgewotICAgIGJvb2xlYW4gc2VydmVyU2VsZWN0ZWQgPSAodHJzLmdldFNlcnZlcklkKCkgIT0gbnVsbCkgJiYgKHRycy5nZXRTZXJ2ZXJJZCgpLmxlbmd0aCgpID4gMCk7IAotICAgIC8vRmluZCB0aGUgZmlyc3Qgc2VydmljZVJ1bnRpbWUgdGhhdCBzdXBwb3J0cyB0aGUgaW1wbGVtZW50YXRpb24gdHlwZSwgcnVudGltZSwgc2VydmVyLCBhbmQgcHJvamVjdAotICAgIFN0cmluZ1tdIGRlc2NzID0gZ2V0U2VydmljZVJ1bnRpbWVzQnlTZXJ2aWNlVHlwZSh0cnMuZ2V0VHlwZUlkKCksIHRycy5nZXRTZXJ2ZXJJZCgpKTsKLSAgICBmb3IgKGludCBpPTA7IGk8ZGVzY3MubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBnZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKGRlc2NzW2ldKTsgICAgICAKLSAgICAgIGlmIChkZXNjLmdldFJ1bnRpbWUoKS5nZXRJZCgpLmVxdWFscyh0cnMuZ2V0UnVudGltZUlkKCkpKQotICAgICAgewotICAgICAgICBpZiAoc2VydmVyU2VsZWN0ZWQpCi0gICAgICAgIHsKLSAgICAgICAgICBib29sZWFuIHN1cHBvcnRzU2VydmVyID0gZG9lc1NlcnZpY2VSdW50aW1lU3VwcG9ydFNlcnZlcihkZXNjLmdldElkKCksIHRycy5nZXRTZXJ2ZXJJZCgpKTsKLSAgICAgICAgICBpZiAoIXN1cHBvcnRzU2VydmVyKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChwcm9qZWN0TmFtZSk7Ci0gICAgICAgIGlmIChwcm9qZWN0LmV4aXN0cygpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGRvZXNTZXJ2aWNlUnVudGltZVN1cHBvcnRQcm9qZWN0KGRlc2MuZ2V0SWQoKSwgcHJvamVjdE5hbWUpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXNjLmdldElkKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vQ2hlY2sgaWYgdGVtcGxhdGUgaXMgc3VwcG9ydGVkCi0gICAgICAgICAgaWYgKGRvZXNTZXJ2aWNlUnVudGltZVN1cHBvcnRUZW1wbGF0ZShkZXNjLmdldElkKCksIHRlbXBsYXRlSWQpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXNjLmdldElkKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiAiIjsKLSAgICAKLSAgfSAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgV2ViIHNlcnZpY2Ugc2NlbmFyaW8gZnJvbSB0aGUgV2ViIHNlcnZpY2UgdHlwZS4KLSAgICogQHBhcmFtIHR5cGVJZCBtdXN0IGJlIGEgU3RyaW5nIG9mIHRoZSBmb3JtYXQgIjAvaW1wbElkIgotICAgKiB3aGVyZSB0aGUgZGlnaXQgYmVmb3JlIHRoZSAiLyIgcmVwcmVzZW50cyB0aGUgc2NlbmFyaW8KLSAgICogKGUuZy4gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTV9VUCkgYW5kIHRoZSBpbXBsSWQgaXMgdGhlIFdlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHR5cGUgaWQuCi0gICAqIEByZXR1cm4gaW50IHNjZW5hcmlvIChlLmcuIFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01fVVAgb3IgV2ViU2VydmljZVNjZW5hcmlvLlRPUF9ET1dOKQotICAgKi8gICAgICAgIAotICBwdWJsaWMgc3RhdGljIGludCBnZXRTY2VuYXJpb0Zyb21UeXBlSWQoU3RyaW5nIHR5cGVJZCkKLSAgewotICAgIHJldHVybiBJbnRlZ2VyLnBhcnNlSW50KHR5cGVJZC5zdWJzdHJpbmcoMCx0eXBlSWQuaW5kZXhPZigiLyIpKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBXZWIgc2VydmljZSBpbXBsZW1lbmF0aW9uIHR5cGUgaWQgZnJvbiB0aGUgV2ViIHNlcnZpY2UgdHlwZSBpZC4KLSAgICogQHBhcmFtIHR5cGVJZCBtdXN0IGJlIGEgU3RyaW5nIG9mIHRoZSBmb3JtYXQgIjAvaW1wbElkIgotICAgKiB3aGVyZSB0aGUgZGlnaXQgYmVmb3JlIHRoZSAiLyIgcmVwcmVzZW50cyB0aGUgc2NlbmFyaW8KLSAgICogKGUuZy4gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTV9VUCkgYW5kIHRoZSBpbXBsSWQgaXMgdGhlIFdlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHR5cGUgaWQuCi0gICAqIEByZXR1cm4gU3RyaW5nIHRoZSBXZWJTZXJ2aWNlSW1wbCBpZC4KLSAgICovICAgICAgICAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0V2ViU2VydmljZUltcGxJZEZyb21UeXBlSWQoU3RyaW5nIHR5cGVJZCkKLSAgewotICAgIHJldHVybiB0eXBlSWQuc3Vic3RyaW5nKHR5cGVJZC5pbmRleE9mKCIvIikrMSk7Ci0gIH0gICAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWRzIG9mIGFsbCBXZWIgc2VydmljZSBydW50aW1lcyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuCi0gICAqIFdlYiBzZXJ2aWNlIHR5cGUuCi0gICAqIAotICAgKiBAcGFyYW0gdHlwZUlkIG11c3QgYmUgYSBTdHJpbmcgb2YgdGhlIGZvcm1hdCAiMC9pbXBsSWQiCi0gICAqIHdoZXJlIHRoZSBkaWdpdCBiZWZvcmUgdGhlICIvIiByZXByZXNlbnRzIHRoZSBzY2VuYXJpbwotICAgKiAoZS5nLiBXZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NX1VQKSBhbmQgdGhlIGltcGxJZCBpcyB0aGUgV2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdHlwZSBpZC4KLSAgICogCi0gICAqIEByZXR1cm4gU3RyaW5nW10gYXJyYXkgY29udGFpbmluZyB0aGUgaWRzIG9mIGFsbCBXZWIgc2VydmljZSBydW50aW1lcyB0aGF0Ci0gICAqIHN1cHBvcnQgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIHR5cGUuIFRoZSBhcnJheSBtYXkgaGF2ZSAwIGVsZW1lbnRzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRSdW50aW1lc0J5U2VydmljZVR5cGUoU3RyaW5nIHR5cGVJZCkgCi0gIHsKLSAgICBpbnQgc2NlbmFyaW8gPSBnZXRTY2VuYXJpb0Zyb21UeXBlSWQodHlwZUlkKTsKLSAgICBTdHJpbmcgaW1wbElkID0gZ2V0V2ViU2VydmljZUltcGxJZEZyb21UeXBlSWQodHlwZUlkKTsgICAgCi0gICAgQXJyYXlMaXN0IGlkcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBJdGVyYXRvciBpdGVyID0gcmVnaXN0cnkuc2VydmljZVJ1bnRpbWVzXy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgICAKLSAgICB7Ci0gICAgICBTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IpaXRlci5uZXh0KCk7Ci0gICAgICAvL0NoZWNrIGlmIHRoaXMgc2VydmljZVJ1bnRpbWUgc3VwcG9ydHMgdGhlIGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICAgIGlmIChkZXNjLmdldFNlcnZpY2VJbXBsZW1lbnRhdGlvblR5cGUoKS5nZXRJZCgpLmVxdWFscyhpbXBsSWQpKQotICAgICAgewotICAgICAgICBzd2l0Y2ggKHNjZW5hcmlvKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBXZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NVVA6Ci0gICAgICAgICAgICBpZiAoZGVzYy5nZXRCb3R0b21VcCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBTdHJpbmcgcnVudGltZUlkID0gZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKTsgCi0gICAgICAgICAgICAgIGlmICghaWRzLmNvbnRhaW5zKHJ1bnRpbWVJZCkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZHMuYWRkKHJ1bnRpbWVJZCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV046Ci0gICAgICAgICAgICBpZiAoZGVzYy5nZXRUb3BEb3duKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFN0cmluZyBydW50aW1lSWQgPSBkZXNjLmdldFJ1bnRpbWUoKS5nZXRJZCgpOyAKLSAgICAgICAgICAgICAgaWYgKCFpZHMuY29udGFpbnMocnVudGltZUlkKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlkcy5hZGQocnVudGltZUlkKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDogICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIChTdHJpbmdbXSlpZHMudG9BcnJheShuZXcgU3RyaW5nW117fSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpZHMgb2YgYWxsIHNlcnZpY2VSdW50aW1lcyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuCi0gICAqIFdlYiBzZXJ2aWNlIHR5cGUuCi0gICAqIAotICAgKiBAcGFyYW0gdHlwZUlkIG11c3QgYmUgYSBTdHJpbmcgb2YgdGhlIGZvcm1hdCAiMC9pbXBsSWQiCi0gICAqIHdoZXJlIHRoZSBkaWdpdCBiZWZvcmUgdGhlICIvIiByZXByZXNlbnRzIHRoZSBzY2VuYXJpbwotICAgKiAoZS5nLiBXZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NX1VQKSBhbmQgdGhlIGltcGxJZCBpcyB0aGUgV2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdHlwZSBpZC4KLSAgICogCi0gICAqIEByZXR1cm5zIFN0cmluZ1tdIGFycmF5IGNvbnRhaW5pbmcgdGhlIGlkcyBvZiBhbGwgc2VydmljZVJ1bnRpbWVzIHRoYXQKLSAgICogc3VwcG9ydCB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgdHlwZS4gVGhlIGFycmF5IG1heSBoYXZlIDAgZWxlbWVudHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldFNlcnZpY2VSdW50aW1lc0J5U2VydmljZVR5cGUoU3RyaW5nIHR5cGVJZCkgCi0gIHsKLSAgICBpbnQgc2NlbmFyaW8gPSBnZXRTY2VuYXJpb0Zyb21UeXBlSWQodHlwZUlkKTsKLSAgICBTdHJpbmcgaW1wbElkID0gZ2V0V2ViU2VydmljZUltcGxJZEZyb21UeXBlSWQodHlwZUlkKTsgICAgCi0gICAgQXJyYXlMaXN0IGlkcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBJdGVyYXRvciBpdGVyID0gcmVnaXN0cnkuc2VydmljZVJ1bnRpbWVzXy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgICAKLSAgICB7Ci0gICAgICBTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IpaXRlci5uZXh0KCk7Ci0gICAgICAvL0NoZWNrIGlmIHRoaXMgc2VydmljZVJ1bnRpbWUgc3VwcG9ydHMgdGhlIGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICAgIGlmIChkZXNjLmdldFNlcnZpY2VJbXBsZW1lbnRhdGlvblR5cGUoKS5nZXRJZCgpLmVxdWFscyhpbXBsSWQpKQotICAgICAgewotICAgICAgICBzd2l0Y2ggKHNjZW5hcmlvKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBXZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NVVA6Ci0gICAgICAgICAgICBpZiAoZGVzYy5nZXRCb3R0b21VcCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBTdHJpbmcgc2VydmljZVJ1bnRpbWVJZCA9IGRlc2MuZ2V0SWQoKTsgCi0gICAgICAgICAgICAgIGlkcy5hZGQoc2VydmljZVJ1bnRpbWVJZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFdlYlNlcnZpY2VTY2VuYXJpby5UT1BET1dOOgotICAgICAgICAgICAgaWYgKGRlc2MuZ2V0VG9wRG93bigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBTdHJpbmcgc2VydmljZVJ1bnRpbWVJZCA9IGRlc2MuZ2V0SWQoKTsgCi0gICAgICAgICAgICAgIGlkcy5hZGQoc2VydmljZVJ1bnRpbWVJZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gKFN0cmluZ1tdKWlkcy50b0FycmF5KG5ldyBTdHJpbmdbXXt9KTsKLSAgfSAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWRzIG9mIGFsbCBzZXJ2aWNlUnVudGltZXMgdGhhdCBzdXBwb3J0IHRoZSBnaXZlbgotICAgKiBXZWIgc2VydmljZSB0eXBlLCB3aXRoIHByZWZlcnJlZCBzZXJ2ZXIgCi0gICAqIAotICAgKiBAcGFyYW0gdHlwZUlkIG11c3QgYmUgYSBTdHJpbmcgb2YgdGhlIGZvcm1hdCAiMC9pbXBsSWQiCi0gICAqIHdoZXJlIHRoZSBkaWdpdCBiZWZvcmUgdGhlICIvIiByZXByZXNlbnRzIHRoZSBzY2VuYXJpbwotICAgKiAoZS5nLiBXZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NX1VQKSBhbmQgdGhlIGltcGxJZCBpcyB0aGUgV2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdHlwZSBpZC4KLSAgICogCi0gICAqIEByZXR1cm5zIFN0cmluZ1tdIGFycmF5IGNvbnRhaW5pbmcgdGhlIGlkcyBvZiBhbGwgc2VydmljZVJ1bnRpbWVzIHRoYXQKLSAgICogc3VwcG9ydCB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgdHlwZS4gVGhlIGFycmF5IG1heSBoYXZlIDAgZWxlbWVudHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldFNlcnZpY2VSdW50aW1lc0J5U2VydmljZVR5cGUoU3RyaW5nIHR5cGVJZCwgU3RyaW5nIHByZWZlcnJlZFNlcnZlckZhY3RvcnlJZCkgCi0gIHsKLQkvLyAgICBQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JLy8JCQkuZ2V0SW5zdGFuY2UoKS5nZXRTZXJ2ZXJSdW50aW1lQ29udGV4dCgpOwotCS8vCVN0cmluZyBwcmVmZXJyZWRSdW50aW1lSWQgPSBjb250ZXh0LmdldFJ1bnRpbWVJZCgpOwotCS8vCVN0cmluZyBwcmVmZXJyZWRTZXJ2ZXJGYWN0b3J5SWQgPSBjb250ZXh0LmdldFNlcnZlckZhY3RvcnlJZCgpOwotCi0gICAgaW50IHNjZW5hcmlvID0gZ2V0U2NlbmFyaW9Gcm9tVHlwZUlkKHR5cGVJZCk7Ci0gICAgU3RyaW5nIGltcGxJZCA9IGdldFdlYlNlcnZpY2VJbXBsSWRGcm9tVHlwZUlkKHR5cGVJZCk7ICAgIAotICAgIEFycmF5TGlzdCBpZHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgQXJyYXlMaXN0IGlkc1ByZWZlcnJlZEJ5U2VydmVyID0gbmV3IEFycmF5TGlzdCgpOwotICAgIEl0ZXJhdG9yIGl0ZXIgPSByZWdpc3RyeS5zZXJ2aWNlUnVudGltZXNfLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSAgIAotICAgIHsKLSAgICAgIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gKFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvcilpdGVyLm5leHQoKTsKLSAgICAgIC8vQ2hlY2sgaWYgdGhpcyBzZXJ2aWNlUnVudGltZSBzdXBwb3J0cyB0aGUgaW1wbGVtZW50YXRpb24gdHlwZQotICAgICAgaWYgKGRlc2MuZ2V0U2VydmljZUltcGxlbWVudGF0aW9uVHlwZSgpLmdldElkKCkuZXF1YWxzKGltcGxJZCkpCi0gICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc2NlbmFyaW8pCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01VUDoKLSAgICAgICAgICAgIGlmIChkZXNjLmdldEJvdHRvbVVwKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFN0cmluZyBzZXJ2aWNlUnVudGltZUlkID0gZGVzYy5nZXRJZCgpOyAKLSAgICAgICAgICAgICAgaWYgKGRlc2MuZ2V0UnVudGltZVByZWZlcnJlZFNlcnZlclR5cGUoKSAhPSBudWxsICYmIGRlc2MuZ2V0UnVudGltZVByZWZlcnJlZFNlcnZlclR5cGUoKS5lcXVhbHMocHJlZmVycmVkU2VydmVyRmFjdG9yeUlkKSkKLSAgICAgICAgICAgIAkgIGlkc1ByZWZlcnJlZEJ5U2VydmVyLmFkZChzZXJ2aWNlUnVudGltZUlkKTsKLSAgICAgICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIAkgIGlkcy5hZGQoc2VydmljZVJ1bnRpbWVJZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFdlYlNlcnZpY2VTY2VuYXJpby5UT1BET1dOOgotICAgICAgICAgICAgaWYgKGRlc2MuZ2V0VG9wRG93bigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBTdHJpbmcgc2VydmljZVJ1bnRpbWVJZCA9IGRlc2MuZ2V0SWQoKTsgCi0gICAgICAgICAgICAgIGlmIChkZXNjLmdldFJ1bnRpbWVQcmVmZXJyZWRTZXJ2ZXJUeXBlKCkgIT0gbnVsbCAmJiBkZXNjLmdldFJ1bnRpbWVQcmVmZXJyZWRTZXJ2ZXJUeXBlKCkuZXF1YWxzKHByZWZlcnJlZFNlcnZlckZhY3RvcnlJZCkpCi0gICAgICAgICAgICAJICBpZHNQcmVmZXJyZWRCeVNlcnZlci5hZGQoc2VydmljZVJ1bnRpbWVJZCk7Ci0gICAgICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAJICBpZHMuYWRkKHNlcnZpY2VSdW50aW1lSWQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDogICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gYXBwZW5kIHByZWZlcnJlZFJ1bnRpbWUgYWZ0ZXIgcHJlZmVycmVkUnVudGltZUlkc0xpc3RQcmVmZXJyZWRCeVNlcnZlcgotICAgIFN0cmluZ1tdIHByZWZlcnJlZFJ1bnRpbWVJZHMgPSBuZXcgU3RyaW5nW2lkc1ByZWZlcnJlZEJ5U2VydmVyLnNpemUoKStpZHMuc2l6ZSgpXTsKLSAgICBJdGVyYXRvciBpdHIxID0gaWRzUHJlZmVycmVkQnlTZXJ2ZXIuaXRlcmF0b3IoKTsKLSAgICBpbnQgcHJlZmVycmVkUlRDb3VudGVyID0gMDsKLSAgICB3aGlsZSAoaXRyMS5oYXNOZXh0KCkpIHsKLQkJU3RyaW5nIHJ1bnRpbWVJZCA9IChTdHJpbmcpIGl0cjEubmV4dCgpOwotCQlwcmVmZXJyZWRSdW50aW1lSWRzW3ByZWZlcnJlZFJUQ291bnRlcisrXSA9IHJ1bnRpbWVJZDsKLQl9Ci0gICAgCi0gICAgSXRlcmF0b3IgaXRyMiA9IGlkcy5pdGVyYXRvcigpOyAgCi0gICAgIAotICAgIHdoaWxlIChpdHIyLmhhc05leHQoKSkgewotCQlTdHJpbmcgcnVudGltZUlkID0gKFN0cmluZykgaXRyMi5uZXh0KCk7Ci0JCXByZWZlcnJlZFJ1bnRpbWVJZHNbcHJlZmVycmVkUlRDb3VudGVyKytdID0gcnVudGltZUlkOwkJCi0JfQotCi0gICAgcmV0dXJuIHByZWZlcnJlZFJ1bnRpbWVJZHM7Ci0gIH0gIAotICAKLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgc3VwcG9ydHMgdGhlIGdpdmVuIAotICAgKiBXZWIgc2VydmljZSB0eXBlLgotICAgKiAKLSAgICogQHBhcmFtIHR5cGVJZCBtdXN0IGJlIGEgU3RyaW5nIG9mIHRoZSBmb3JtYXQgIjAvaW1wbElkIgotICAgKiB3aGVyZSB0aGUgZGlnaXQgYmVmb3JlIHRoZSAiLyIgcmVwcmVzZW50cyB0aGUgc2NlbmFyaW8KLSAgICogKGUuZy4gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTV9VUCkgYW5kIHRoZSBpbXBsSWQgaXMgdGhlIFdlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHR5cGUgaWQuCi0gICAqIAotICAgKiBAcGFyYW0gcnVudGltZUlkIGlkIG9mIGEgV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiAKLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBnaXZlbiBXZWIgc2VydmljZSBydW50aW1lIHN1cHBvcnRzIHRoZSBnaXZlbiAKLSAgICogV2ViIHNlcnZpY2UgdHlwZS4gPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovIAotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNSdW50aW1lU3VwcG9ydGVkRm9yU2VydmljZVR5cGUoU3RyaW5nIHR5cGVJZCwgU3RyaW5nIHJ1bnRpbWVJZCkKLSAgewotICAgIFN0cmluZ1tdIHNlcnZpY2VSdW50aW1lSWRzID0gZ2V0U2VydmljZVJ1bnRpbWVzQnlTZXJ2aWNlVHlwZSh0eXBlSWQpOwotICAgIGlmIChzZXJ2aWNlUnVudGltZUlkcyE9bnVsbCkKLSAgICB7Ci0gICAgICBmb3IgKGludCBpPTA7IGkgPCBzZXJ2aWNlUnVudGltZUlkcy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBnZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKHNlcnZpY2VSdW50aW1lSWRzW2ldKTsKLSAgICAgICAgaWYgKGRlc2MuZ2V0UnVudGltZSgpLmdldElkKCkuZXF1YWxzKHJ1bnRpbWVJZCkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gIAotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGlkcyBvZiBhbGwgc2VydmVyIHR5cGVzIHRoYXQgc3VwcG9ydCB0aGUgZ2l2ZW4KLSAgICogV2ViIHNlcnZpY2UgdHlwZS4KLSAgICogCi0gICAqIEBwYXJhbSB0eXBlSWQgbXVzdCBiZSBhIFN0cmluZyBvZiB0aGUgZm9ybWF0ICIwL2ltcGxJZCIKLSAgICogd2hlcmUgdGhlIGRpZ2l0IGJlZm9yZSB0aGUgIi8iIHJlcHJlc2VudHMgdGhlIHNjZW5hcmlvCi0gICAqIChlLmcuIFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01fVVApIGFuZCB0aGUgaW1wbElkIGlzIHRoZSBXZWIgc2VydmljZSBpbXBsZW1lbnRhdGlvbiB0eXBlIGlkLgotICAgKiAKLSAgICogQHJldHVybnMgU3RyaW5nW10gYXJyYXkgY29udGFpbmluZyB0aGUgaWRzIG9mIGFsbCBzZXJ2ZXIgdHlwZXMgdGhhdAotICAgKiBzdXBwb3J0IHRoZSBnaXZlbiBXZWIgc2VydmljZSB0eXBlLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4gCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldFNlcnZlckZhY3RvcnlJZHNCeVNlcnZpY2VUeXBlKFN0cmluZyB0eXBlSWQpCi0gIHsKLSAgICBBcnJheUxpc3Qgc2VydmVyRmFjdG9yeUlkcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBTdHJpbmdbXSBzcnRzID0gZ2V0U2VydmljZVJ1bnRpbWVzQnlTZXJ2aWNlVHlwZSh0eXBlSWQpOwotICAgIGlmIChzcnRzICE9IG51bGwpCi0gICAgewotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcnRzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICAvL0dldCB0aGUgcnVudGltZXMgdGhhdCB3b3JrIGZvciB0aGUgZmFjZXRzIHJlcXVpcmVkIGZvciB0aGlzIHNlcnZpY2VSdW50aW1lICAgICAgICAKLSAgICAgICAgU3RyaW5nW10gZklkcyA9IGdldFNlcnZlckZhY3RvcnlJZHNCeVNlcnZpY2VSdW50aW1lKHNydHNbaV0pOwotICAgICAgICBmb3IgKGludCBqPTA7IGo8Zklkcy5sZW5ndGg7IGorKykKLSAgICAgICAgewotICAgICAgICAgIGlmICghc2VydmVyRmFjdG9yeUlkcy5jb250YWlucyhmSWRzW2pdKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBzZXJ2ZXJGYWN0b3J5SWRzLmFkZChmSWRzW2pdKTsgICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIChTdHJpbmdbXSlzZXJ2ZXJGYWN0b3J5SWRzLnRvQXJyYXkobmV3IFN0cmluZ1tde30pOwotICAgIAotICAgIC8vVGVtcG9yYXJpbHkgcmV0dXJuIGFsbCBzZXJ2ZXIgdHlwZSBpZHMuCi0gICAgLy9yZXR1cm4gZ2V0QWxsU2VydmVyRmFjdG9yeUlkc1dpdGhSdW50aW1lcygpOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gc2VydmVyIHR5cGUgc3VwcG9ydHMgdGhlIGdpdmVuIAotICAgKiBXZWIgc2VydmljZSB0eXBlLgotICAgKiAKLSAgICogQHBhcmFtIHR5cGVJZCBtdXN0IGJlIGEgU3RyaW5nIG9mIHRoZSBmb3JtYXQgIjAvaW1wbElkIgotICAgKiB3aGVyZSB0aGUgZGlnaXQgYmVmb3JlIHRoZSAiLyIgcmVwcmVzZW50cyB0aGUgc2NlbmFyaW8KLSAgICogKGUuZy4gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTV9VUCkgYW5kIHRoZSBpbXBsSWQgaXMgdGhlIFdlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHR5cGUgaWQuCi0gICAqIAotICAgKiBAcGFyYW0gc2VydmVyRmFjdG9yeUlkIGlkIG9mIGEgc2VydmVyIHR5cGUKLSAgICogCi0gICAqIEByZXR1cm4gYm9vbGVhbiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgZ2l2ZW4gc2VydmVyIHR5cGUgc3VwcG9ydHMgdGhlIGdpdmVuIAotICAgKiBXZWIgc2VydmljZSB0eXBlLiA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU2VydmVyU3VwcG9ydGVkRm9yQ2hvc2VuU2VydmljZVR5cGUoU3RyaW5nIHR5cGVJZCwgU3RyaW5nIHNlcnZlckZhY3RvcnlJZCkKLSAgewotICAgIFN0cmluZ1tdIGZJZHMgPSBnZXRTZXJ2ZXJGYWN0b3J5SWRzQnlTZXJ2aWNlVHlwZSh0eXBlSWQpOwotICAgIGlmIChmSWRzID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGZvciAoaW50IGk9MDtpPGZJZHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAoc2VydmVyRmFjdG9yeUlkLmVxdWFscyhmSWRzW2ldKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9ICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGlkcyBvZiBhbGwgc2VydmVyIHR5cGVzIHRoYXQgc3VwcG9ydCB0aGUgZ2l2ZW4KLSAgICogc2VydmljZVJ1bnRpbWUuCi0gICAqIAotICAgKiBAcGFyYW0gc2VydmljZVJ1bnRpbWVJZCBpZCBvZiBhIHNlcnZpY2VSdW50aW1lCi0gICAqIAotICAgKiBAcmV0dXJucyBTdHJpbmdbXSBhcnJheSBjb250YWluaW5nIHRoZSBpZHMgb2YgYWxsIHNlcnZlciB0eXBlcyB0aGF0Ci0gICAqIHN1cHBvcnQgdGhlIGdpdmVuIHNlcnZpY2VSdW50aW1lLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4gCi0gICAqLyAgIAotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldFNlcnZlckZhY3RvcnlJZHNCeVNlcnZpY2VSdW50aW1lKFN0cmluZyBzZXJ2aWNlUnVudGltZUlkKQotICB7ICAgICAgIAotICAgIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gZ2V0U2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yQnlJZChzZXJ2aWNlUnVudGltZUlkKTsKLSAgICBTZXQgZmFjZXRSdW50aW1lcyA9IGdldFJ1bnRpbWVzKGRlc2MuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCkpOwotICAgICAgICAgICAgCi0gICAgLy9UZW1wb3JhcmlseSByZXR1cm4gYWxsIHNlcnZlciB0eXBlcwotICAgIC8vcmV0dXJuIGdldEFsbFNlcnZlckZhY3RvcnlJZHNXaXRoUnVudGltZXMoKTsKLSAgICByZXR1cm4gZ2V0U2VydmVyRmFjdG9yeUlkc0J5RmFjZXRSdW50aW1lcyhmYWNldFJ1bnRpbWVzKTsKLSAgfSAKLSAgCi0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBzZXJ2ZXIgdHlwZSBzdXBwb3J0cyB0aGUgZ2l2ZW4gCi0gICAqIHNlcnZpY2VSdW50aW1lLgotICAgKiAKLSAgICogQHBhcmFtIHNlcnZpY2VSdW50aW1lSWQgaWQgb2YgYSBzZXJ2aWNlUnVudGltZQotICAgKiBAcGFyYW0gc2VydmVyRmFjdG9yeUlkIGlkIG9mIGEgc2VydmVyIHR5cGUKLSAgICogCi0gICAqIEByZXR1cm4gYm9vbGVhbiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgZ2l2ZW4gc2VydmVyIHR5cGUgc3VwcG9ydHMgdGhlIGdpdmVuIAotICAgKiBzZXJ2aWNlUnVudGltZS4gPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovICAKLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGRvZXNTZXJ2aWNlUnVudGltZVN1cHBvcnRTZXJ2ZXIoU3RyaW5nIHNlcnZpY2VSdW50aW1lSWQsIFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQpCi0gIHsKLSAgICBTdHJpbmdbXSBzZXJ2ZXJJZHMgPSBnZXRTZXJ2ZXJGYWN0b3J5SWRzQnlTZXJ2aWNlUnVudGltZShzZXJ2aWNlUnVudGltZUlkKTsKLSAgICBmb3IgKGludCBpPTA7IGk8c2VydmVySWRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChzZXJ2ZXJJZHNbaV0uZXF1YWxzKHNlcnZlckZhY3RvcnlJZCkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGxhYmVscyBhbmQgaWRzIG9mIGFsbCBXZWIgc2VydmljZSB0eXBlcy4gVXNlZCB0byBwb3B1bGF0ZSB0aGUgV2ViIHNlcnZpY2UgdHlwZSBjb21ibyBib3ggb24KLSAgICogcGFnZSAxIG9mIHRoZSBXZWIgc2VydmljZSB3aXphcmQuCi0gICAqIEByZXR1cm4ge0BsaW5rIExhYmVsc0FuZElkc30KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgTGFiZWxzQW5kSWRzIGdldFNlcnZpY2VUeXBlTGFiZWxzKCkKLSAgeyAgIAotICAgIExhYmVsc0FuZElkcyBsYWJlbElkcyA9IG5ldyBMYWJlbHNBbmRJZHMoKTsKLSAgICBJdGVyYXRvciAgICAgaXRlcmF0b3IgPSByZWdpc3RyeS53ZWJTZXJ2aWNlVHlwZXNMaXN0Xy5pdGVyYXRvcigpOwotICAgIGludCAgICAgICAgICBzaXplICAgICA9IHJlZ2lzdHJ5LndlYlNlcnZpY2VUeXBlc0xpc3RfLnNpemUoKTsKLSAgICBTdHJpbmdbXSAgICAgbGFiZWxzICAgPSBuZXcgU3RyaW5nW3NpemVdOwotICAgIFN0cmluZ1tdICAgICBpZHMgICAgICA9IG5ldyBTdHJpbmdbc2l6ZV07Ci0gICAgaW50ICAgICAgICAgIGluZGV4ICAgID0gMDsKLSAgICAKLSAgICBsYWJlbElkcy5zZXRMYWJlbHNfKCBsYWJlbHMgKTsKLSAgICBsYWJlbElkcy5zZXRJZHNfKCBpZHMgKTsKLSAgICAKLSAgICB3aGlsZSggaXRlcmF0b3IuaGFzTmV4dCgpICkgCi0gICAgewotICAgICAgU3RyaW5nIHdzdCA9IChTdHJpbmcpaXRlcmF0b3IubmV4dCgpOwotICAgICAgaW50IHNjZW5hcmlvID0gZ2V0U2NlbmFyaW9Gcm9tVHlwZUlkKHdzdCk7Ci0gICAgICBTdHJpbmcgaW1wbElkID0gZ2V0V2ViU2VydmljZUltcGxJZEZyb21UeXBlSWQod3N0KTsKLSAgICAgIFdlYlNlcnZpY2VJbXBsIHdzaW1wbCA9IGdldFdlYlNlcnZpY2VJbXBsQnlJZChpbXBsSWQpOwotICAgICAgU3RyaW5nIGltcGxsYWJlbCA9IHdzaW1wbC5nZXRMYWJlbCgpOwotICAgICAgaWRzW2luZGV4XSAgICA9IHdzdDsKLSAgICAgIFN0cmluZyBzY2VuTGFiZWwgPSAiIjsKLSAgICAgIHN3aXRjaChzY2VuYXJpbykKLSAgICAgIHsKLSAgICAgIGNhc2UgV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTVVQOgotICAgICAgICBzY2VuTGFiZWwgPSBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuQk9UVE9NVVBfTEFCRUwsIG5ldyBTdHJpbmdbMF0pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV046Ci0gICAgICAgIHNjZW5MYWJlbCA9IE5MUy5iaW5kKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT1BET1dOX0xBQkVMLCBuZXcgU3RyaW5nWzBdKTsKLSAgICAgICAgYnJlYWs7IAotICAgICAgZGVmYXVsdDoKLSAgICAgIH0KLSAgICAgIGxhYmVsc1tpbmRleF0gPSBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuQ09NQklORURfVFlQRV9BTkRfUlVOVElNRV9MQUJFTCwgbmV3IFN0cmluZ1tdeyBzY2VuTGFiZWwsIGltcGxsYWJlbCB9KTsKLSAgICAgIGluZGV4Kys7Ci0gICAgfSAgICAKLSAgICAKLSAgICByZXR1cm4gbGFiZWxJZHM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpZCBvZiBhIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgdGhhdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgdHlwZS4KLSAgICogIAotICAgKiBAcGFyYW0gdHlwZUlkIHdpbGwgYmUgYSBTdHJpbmcgb2YgdGhlIGZvcm1hdCAiMC9pbXBsSWQiCi0gICAqIHdoZXJlIHRoZSBkaWdpdCBiZWZvcmUgdGhlICIvIiByZXByZXNlbnRzIHRoZSBzY2VuYXJpbwotICAgKiAoZS5nLiBXZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NX1VQKSBhbmQgdGhlIGltcGxJZCBpcyB0aGUgV2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdHlwZSBpZC4KLSAgICogCi0gICAqIEByZXR1cm4gU3RyaW5nIGlkIG9mIGEgV2ViIHNlcnZpY2UgcnVudGltZSB0aGF0IHN1cHBvcnRzIHRoZSBnaXZlbiBXZWIgc2VydmljZSB0eXBlLiAKLSAgICogUmV0dXJucyBudWxsIGlmIHN1Y2ggYSBXZWIgc2VydmljZSBydW50aW1lIGNhbm5vdCBiZSBmb3VuZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERlZmF1bHRSdW50aW1lVmFsdWVGb3IoU3RyaW5nIHR5cGVJZCkKLSAgewotICAgIFN0cmluZ1tdIHNySWRzID0gZ2V0U2VydmljZVJ1bnRpbWVzQnlTZXJ2aWNlVHlwZSh0eXBlSWQpOwotICAgIGlmIChzcklkcyA9PSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICAKLSAgICBQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0U2VydmVyUnVudGltZUNvbnRleHQoKTsKLSAgICBTdHJpbmcgcHJlZmVycmVkUnVudGltZUlkID0gY29udGV4dC5nZXRSdW50aW1lSWQoKTsKLSAgICAKLSAgICBTdHJpbmcgcnVudGltZUlkOwotICAgIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3JJZHMubGVuZ3RoOyBpKyspIHsKLQkJcnVudGltZUlkID0gZ2V0U2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yQnlJZChzcklkc1tpXSkuZ2V0UnVudGltZSgpLmdldElkKCk7Ci0JCWlmIChydW50aW1lSWQuZXF1YWxzKHByZWZlcnJlZFJ1bnRpbWVJZCkpIHsKLQkJCXJldHVybiBydW50aW1lSWQ7Ci0JCX0KLQl9Ci0gICAgCi0gICAgLy8gVGhlIHByZWZlcnJlZCBydW50aW1lIGRvZXMgbm90IHN1cHBvcnQgdHlwZUlkLiAgSnVzdCByZXR1cm4gdGhlIGZpcnN0IHNlcnZpY2UgcnVudGltZSB0aGF0IGRvZXMgc3VwcG9ydCB0eXBlSWQuCi0gICAgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBnZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKHNySWRzWzBdKTsKLSAgICByZXR1cm4gZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKTsKLSAgfSAgICAgIAotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpZCBvZiBhIFdlYiBzZXJ2aWNlIGNsaWVudCBydW50aW1lIHRoYXQgc3VwcG9ydHMgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIGNsaWVudCB0eXBlLgotICAgKiAgCi0gICAqIEBwYXJhbSB0eXBlSWQgVGhlIGNsaWVudCB0eXBlIElELiAKLSAgICogCi0gICAqIEByZXR1cm4gU3RyaW5nIGlkIG9mIGEgV2ViIHNlcnZpY2UgY2xpZW50IHJ1bnRpbWUgdGhhdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgY2xpZW50IHR5cGUuIAotICAgKiBSZXR1cm5zIG51bGwgaWYgc3VjaCBhIFdlYiBzZXJ2aWNlIGNsaWVudCBydW50aW1lIGNhbm5vdCBiZSBmb3VuZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERlZmF1bHRDbGllbnRSdW50aW1lVmFsdWVGb3IoU3RyaW5nIHR5cGVJZCkKLSAgewotICAgIFN0cmluZ1tdIGNySWRzID0gZ2V0Q2xpZW50UnVudGltZXNCeVR5cGUodHlwZUlkKTsgICAgIAkKLSAgICBpZiAoY3JJZHMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gICAgCi0gICAgUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNlcnZlclJ1bnRpbWVDb250ZXh0KCk7Ci0gICAgU3RyaW5nIHByZWZlcnJlZFJ1bnRpbWVJZCA9IGNvbnRleHQuZ2V0UnVudGltZUlkKCk7Ci0gICAgCi0gICAgU3RyaW5nIHJ1bnRpbWVJZDsKLSAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNySWRzLmxlbmd0aDsgaSsrKSB7Ci0JCXJ1bnRpbWVJZCA9IGdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChjcklkc1tpXSkuZ2V0UnVudGltZSgpLmdldElkKCk7Ci0JCWlmIChydW50aW1lSWQuZXF1YWxzKHByZWZlcnJlZFJ1bnRpbWVJZCkpIHsKLQkJCXJldHVybiBydW50aW1lSWQ7Ci0JCX0KLQl9Ci0gICAgCi0gICAgLy8gVGhlIHByZWZlcnJlZCBydW50aW1lIGRvZXMgbm90IHN1cHBvcnQgdHlwZUlkLiAgSnVzdCByZXR1cm4gdGhlIGZpcnN0IHNlcnZpY2UgcnVudGltZSB0aGF0IGRvZXMgc3VwcG9ydCB0eXBlSWQuCi0gICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IGdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChjcklkc1swXSk7Ci0gICAgcmV0dXJuIGRlc2MuZ2V0UnVudGltZSgpLmdldElkKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpZCBvZiBhIHNlcnZlciB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIHR5cGUuCi0gICAqIFJldHVybnMgdGhlIHNlcnZlciB0eXBlIElEIGZyb20gdGhlIHByZWZlcmVuY2UgaWYgaXQgc3VwcG9ydHMgdGhlIHR5cGVJZC4KLSAgICogIAotICAgKiBAcGFyYW0gdHlwZUlkIHdpbGwgYmUgYSBTdHJpbmcgb2YgdGhlIGZvcm1hdCAiMC9pbXBsSWQiCi0gICAqIHdoZXJlIHRoZSBkaWdpdCBiZWZvcmUgdGhlICIvIiByZXByZXNlbnRzIHRoZSBzY2VuYXJpbwotICAgKiAoZS5nLiBXZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NX1VQKSBhbmQgdGhlIGltcGxJZCBpcyB0aGUgV2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdHlwZSBpZC4KLSAgICogCi0gICAqIEByZXR1cm4gU3RyaW5nIGlkIG9mIGEgaWQgb2YgYSBzZXJ2ZXIgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBnaXZlbiBXZWIgc2VydmljZSB0eXBlLiAKLSAgICogUmV0dXJucyBudWxsIGlmIHN1Y2ggYSBzZXJ2ZXIgdHlwZSBjYW5ub3QgYmUgZm91bmQuCi0gICAqLyAgICAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGVmYXVsdFNlcnZlclZhbHVlRm9yKFN0cmluZyB0eXBlSWQpCi0gIHsKLSAgICBTdHJpbmdbXSBmSWRzID0gZ2V0U2VydmVyRmFjdG9yeUlkc0J5U2VydmljZVR5cGUodHlwZUlkKTsKLSAgICBpZiAoZklkcz09bnVsbCB8fCBmSWRzLmxlbmd0aD09MCkKLSAgICAgIHJldHVybiBudWxsOwotICAgIAotICAgIFBlcnNpc3RlbnRTZXJ2ZXJSdW50aW1lQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTZXJ2ZXJSdW50aW1lQ29udGV4dCgpOwotICAgIFN0cmluZyBwcmVmZXJyZWRTZXJ2ZXJGYWN0b3J5SWQgPSBjb250ZXh0LmdldFNlcnZlckZhY3RvcnlJZCgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZklkcy5sZW5ndGg7IGkrKykgewotCQlTdHJpbmcgc2VydmVyVHlwZUlkID0gZklkc1tpXTsKLQkJaWYgKHNlcnZlclR5cGVJZC5lcXVhbHMocHJlZmVycmVkU2VydmVyRmFjdG9yeUlkKSkgewotCQkJcmV0dXJuIHNlcnZlclR5cGVJZDsKLQkJfQotCX0KLSAgICByZXR1cm4gZklkc1swXTsKLSAgfSAgICAKLSAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGlkIG9mIGEgc2VydmVyIHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgY2xpZW50IHR5cGUuCi0gICAqIFJldHVybnMgdGhlIHNlcnZlciB0eXBlIElEIGZyb20gdGhlIHByZWZlcmVuY2UgaWYgaXQgc3VwcG9ydHMgdGhlIHR5cGVJZC4KLSAgICogICAKLSAgICogQHBhcmFtIHR5cGVJZCBUaGUgY2xpZW50IHR5cGUgSUQuCi0gICAqIAotICAgKiBAcmV0dXJuIFN0cmluZyBpZCBvZiBhIGlkIG9mIGEgc2VydmVyIHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgY2xpZW50IHR5cGUuIAotICAgKiBSZXR1cm5zIG51bGwgaWYgc3VjaCBhIHNlcnZlciB0eXBlIGNhbm5vdCBiZSBmb3VuZC4KLSAgICovICAgIAotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERlZmF1bHRDbGllbnRTZXJ2ZXJWYWx1ZUZvcihTdHJpbmcgdHlwZUlkKQl7CQkKLQkJUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNlcnZlclJ1bnRpbWVDb250ZXh0KCk7Ci0JCVN0cmluZyBwcmVmZXJyZWRTZXJ2ZXJGYWN0b3J5SWQgPSBjb250ZXh0LmdldFNlcnZlckZhY3RvcnlJZCgpOwotCQlTdHJpbmcgZmlyc3QgPSBudWxsOy8vdGhlIGZpcnN0IHNlcnZlciBmb3VuZAkgIAotCSAgICBTdHJpbmdbXSBjcnRzID0gZ2V0Q2xpZW50UnVudGltZXNCeVR5cGUodHlwZUlkKTsKLQotCSAgICBpZiAoY3J0cyAhPSBudWxsKQotCSAgICB7Ci0JICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjcnRzLmxlbmd0aDsgaSsrKQotCSAgICAgIHsKLQkgICAgICAgIC8vR2V0IHRoZSBydW50aW1lcyB0aGF0IHdvcmsgZm9yIHRoZSBmYWNldHMgcmVxdWlyZWQgZm9yIHRoaXMgc2VydmljZVJ1bnRpbWUgICAgICAgIAotCSAgICAJU3RyaW5nW10gZklkcyA9IGdldFNlcnZlckZhY3RvcnlJZHNCeUNsaWVudFJ1bnRpbWUoY3J0c1tpXSk7Ci0JICAgICAgICBmb3IgKGludCBqPTA7IGo8Zklkcy5sZW5ndGg7IGorKykKLQkgICAgICAgIHsKLQkgICAgICAgICAgaWYgKGZpcnN0ID09IG51bGwpIHsKLQkgICAgICAgIAkgIGZpcnN0ID0gZklkc1tqXTsKLQkgICAgICAgICAgfQotCSAgICAgICAgICBpZiAocHJlZmVycmVkU2VydmVyRmFjdG9yeUlkLmVxdWFscyhmSWRzW2pdKSkgewotCSAgICAgICAgCSAgcmV0dXJuIGZJZHNbal07Ly9mb3VuZCB0aGUgcHJlZmVycmVkIG9uZSwgc3RvcCBzZWFyY2hpbmcgYW5kIHJldHVybiBpdAotCSAgICAgICAgICB9Ci0JICAgICAgICB9Ci0JICAgICAgfSAgICAKLQkgICAgfQotCSAgICByZXR1cm4gZmlyc3Q7Ci0gIH0gICAgCi0gIAotCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBjb21iaW5hdGlvbiBvZiBzZXJ2ZXIgdHlwZSwgV2ViIHNlcnZpY2UgcnVudGltZSwgYW5kIFdlYiBzZXJ2aWNlIHR5cGUgaXMKLSAgICogc3VwcG9ydGVkLiBVc2VkIGZvciB2YWxpZGF0aW9uLgotICAgKiAKLSAgICogQHBhcmFtIHNlcnZlckZhY3RvcnlJZCBpZCBvZiBhIHNlcnZlciB0eXBlCi0gICAqIEBwYXJhbSBydW50aW1lSWQgaWQgb2YgYSBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIEBwYXJhbSB0eXBlSWQgd2lsbCBiZSBhIFN0cmluZyBvZiB0aGUgZm9ybWF0ICIwL2ltcGxJZCIKLSAgICogd2hlcmUgdGhlIGRpZ2l0IGJlZm9yZSB0aGUgIi8iIHJlcHJlc2VudHMgdGhlIHNjZW5hcmlvCi0gICAqIChlLmcuIFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01fVVApIGFuZCB0aGUgaW1wbElkIGlzIHRoZSBXZWIgc2VydmljZSBpbXBsZW1lbnRhdGlvbiB0eXBlIGlkLgotICAgKiAKLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBnaXZlbiBjb21iaW5hdGlvbiBvZiBzZXJ2ZXIgdHlwZSwgV2ViIHNlcnZpY2UgcnVudGltZSwgYW5kIFdlYiBzZXJ2aWNlIHR5cGUgaXMKLSAgICogc3VwcG9ydGVkLiA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU2VydmVyUnVudGltZVR5cGVTdXBwb3J0ZWQoU3RyaW5nIHNlcnZlckZhY3RvcnlJZCwgU3RyaW5nIHJ1bnRpbWVJZCwgU3RyaW5nIHR5cGVJZCkgIAotICB7Ci0gICAgLy9FbnN1cmUgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHNlcnZpY2VSdW50aW1lIHRoYXQgc3VwcG9ydHMgdGhlIGdpdmVuIHR5cGUKLSAgICBTdHJpbmdbXSBzZXJ2aWNlUnVudGltZXMgPSBnZXRTZXJ2aWNlUnVudGltZXNCeVNlcnZpY2VUeXBlKHR5cGVJZCk7Ci0gICAgaWYgKHNlcnZpY2VSdW50aW1lcyE9bnVsbCAmJiBzZXJ2aWNlUnVudGltZXMubGVuZ3RoPjApCi0gICAgewotICAgICAgLy9FbnN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgb2YgdGhlc2Ugc2VydmVyIHJ1bnRpbWVzIHN1cHBvcnRzIHRoZSBnaXZlbiBzZXJ2ZXIKLSAgICAgIGZvciAoaW50IGk9MDsgaTxzZXJ2aWNlUnVudGltZXMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gZ2V0U2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yQnlJZChzZXJ2aWNlUnVudGltZXNbaV0pOwotICAgICAgICBpZiAoZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKS5lcXVhbHMocnVudGltZUlkKSkKLSAgICAgICAgewotICAgICAgICAgIC8vTWF0Y2hlcyB0aGUgdHlwZSBhbmQgdGhlIHJ1bnRpbWUuIENoZWNrIGlmIGl0IG1hdGNoZXMgdGhlIHNlcnZlcgotICAgICAgICAgIFNldCBydW50aW1lcyA9IGdldFJ1bnRpbWVzKGRlc2MuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCkpOwotICAgICAgICAgIFN0cmluZ1tdIGZJZHMgPSBnZXRTZXJ2ZXJGYWN0b3J5SWRzQnlGYWNldFJ1bnRpbWVzKHJ1bnRpbWVzKTsKLSAgICAgICAgICBmb3IgKGludCBqPTA7IGo8Zklkcy5sZW5ndGg7IGorKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZklkc1tqXS5lcXVhbHMoc2VydmVyRmFjdG9yeUlkKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSAgICAgICAgICAKLSAgICAgICAgfSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vZGlkbid0IGZpbmQgYSBtYXRjaC4gcmV0dXJuIGZhbHNlLgotICAgIHJldHVybiBmYWxzZTsKLSAgfSAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyBhbiBhcnJheSBvZiBXZWIgc2VydmljZSB0eXBlIGlkcyB0aGF0IGFyZSBzdWl0YWJsZSBmb3IgdGhlIHByb3ZpZGVkIHNlbGVjdGlvbi4KLSAgICogVXNlZCB0byBkZWZhdWx0IHRoZSBXZWIgc2VydmljZSB0eXBlIGNvbWJvIGJveCBvbiBwYWdlIDEgb2YgdGhlIFdlYiBzZXJ2aWNlIHdpemFyZAotICAgKiBiYXNlZCBvbiB0aGUgdXNlcidzIGluaXRpYWwgc2VsZWN0aW9uLgotICAgKiBAcGFyYW0gc2VsZWN0aW9uCi0gICAqIEByZXR1cm4gU3RyaW5nW10gYW4gYXJyYXkgb2YgV2ViIHNlcnZpY2UgdHlwZSBpZHMgdGhhdCBhcmUgc3VpdGFibGUgZm9yIHRoZSBwcm92aWRlZCBzZWxlY3Rpb24uCi0gICAqIFJldHVybnMgbnVsbCBpZiB0aGUgc2VsZWN0aW9uIGlzIGVtcHR5IG9yIG5vIHN1aXRhYmxlIFdlYiBzZXJ2aWNlIHR5cGVzIGFyZSBmb3VuZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0V2ViU2VydmljZVR5cGVCeVNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pCi0gIHsKLSAgICBUeXBlU2VsZWN0aW9uRmlsdGVyMiB0c2YgPSBuZXcgVHlwZVNlbGVjdGlvbkZpbHRlcjIoKTsKLSAgICBTdHJpbmdbXSB3c3QgPSB0c2YuZ2V0V2ViU2VydmljZVR5cGVCeUluaXRpYWxTZWxlY3Rpb24oc2VsZWN0aW9uLCByZWdpc3RyeS53ZWJTZXJ2aWNlVHlwZXNMaXN0Xyk7Ci0gICAgcmV0dXJuIHdzdCA9PSBudWxsID8gbnVsbCA6IHdzdDsKLSAgfSAgICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBzZXJ2ZXIgdHlwZSBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiAKLSAgICogQHBhcmFtIHJ1bnRpbWVJZCA6IGlkIG9mIGEgV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiBAcGFyYW0gZmFjdG9yeUlkIDogaWQgb2YgYSBzZXJ2ZXIgdHlwZQotICAgKiBAcmV0dXJuIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGdpdmVuIHNlcnZlciB0eXBlIHN1cHBvcnRzIHRoZSBnaXZlbiAKLSAgICogV2ViIHNlcnZpY2UgcnVudGltZSBmb3IgdGhlIHNlcnZpY2Ugc2lkZS4gPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBkb2VzUnVudGltZVN1cHBvcnRTZXJ2ZXJGb3JTZXJ2aWNlU2lkZShTdHJpbmcgcnVudGltZUlkLCBTdHJpbmcgZmFjdG9yeUlkKQotICB7Ci0gICAgLy9HZXQgYWxsIHRoZSBTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JzIHRoYXQgcG9pbnQgdG8gdGhpcyBydW50aW1lSWQKLSAgICBJdGVyYXRvciBpdGVyID0gcmVnaXN0cnkuc2VydmljZVJ1bnRpbWVzXy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgICAKLSAgICB7Ci0gICAgICBTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IpaXRlci5uZXh0KCk7Ci0gICAgICAvL2NoZWNrIGlmIHRoaXMgc2VydmljZVJ1bnRpbWUgcG9pbnRzIHRvIHJ1bnRpbWVJZAotICAgICAgU3RyaW5nIHRoaXNSdW50aW1lSWQgPSBkZXNjLmdldFJ1bnRpbWUoKS5nZXRJZCgpOwotICAgICAgaWYgKHRoaXNSdW50aW1lSWQuZXF1YWxzKHJ1bnRpbWVJZCkpCi0gICAgICB7Ci0gICAgICAgIFNldCBmYWNldFJ1bnRpbWVzID0gZ2V0UnVudGltZXMoZGVzYy5nZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoKSk7Ci0gICAgICAgIFN0cmluZ1tdIGZJZHMgPSBnZXRTZXJ2ZXJGYWN0b3J5SWRzQnlGYWNldFJ1bnRpbWVzKGZhY2V0UnVudGltZXMpOwotICAgICAgICBmb3IgKGludCBqPTA7IGo8Zklkcy5sZW5ndGg7IGorKykKLSAgICAgICAgewotICAgICAgICAgIGlmIChmSWRzW2pdLmVxdWFscyhmYWN0b3J5SWQpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgfSAgICAgICAgICAgICAgCi0gICAgICB9ICAgICAgICAgICAgCi0gICAgfQotICAgIAotICAgIC8vTm8gc2VydmljZVJ1bnRpbWUgbWF0Y2hlZC4gUmV0dXJuIGZhbHNlLgotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGlkIG9mIGEgc2VydmVyIHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiBvbiB0aGUgc2VydmljZSBzaWRlLgotICAgKiAKLSAgICogQHBhcmFtIHJ1bnRpbWVJZCBpZCBvZiBhIFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLSAgICogQHJldHVybiBTdHJpbmcgdGhlIGlkIG9mIGEgc2VydmVyIHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgcnVudGltZS4KLSAgICogUmV0dXJucyBudWxsIGlmIHN1Y2ggYSBzZXJ2ZXIgdHlwZSBjYW5ub3QgYmUgZm91bmQuIAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0Rmlyc3RTdXBwb3J0ZWRTZXJ2ZXJGb3JTZXJ2aWNlU2lkZShTdHJpbmcgcnVudGltZUlkKQotICB7Ci0gICAgLy9HZXQgYWxsIHRoZSBTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JzIHRoYXQgcG9pbnQgdG8gdGhpcyBydW50aW1lSWQKLSAgICBJdGVyYXRvciBpdGVyID0gcmVnaXN0cnkuc2VydmljZVJ1bnRpbWVzXy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgICAKLSAgICB7Ci0gICAgICBTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IpaXRlci5uZXh0KCk7Ci0gICAgICAvL2NoZWNrIGlmIHRoaXMgc2VydmljZVJ1bnRpbWUgcG9pbnRzIHRvIHJ1bnRpbWVJZAotICAgICAgU3RyaW5nIHRoaXNSdW50aW1lSWQgPSBkZXNjLmdldFJ1bnRpbWUoKS5nZXRJZCgpOwotICAgICAgaWYgKHRoaXNSdW50aW1lSWQuZXF1YWxzKHJ1bnRpbWVJZCkpCi0gICAgICB7Ci0gICAgICAgIFNldCBmYWNldFJ1bnRpbWVzID0gZ2V0UnVudGltZXMoZGVzYy5nZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoKSk7Ci0gICAgICAgIFN0cmluZ1tdIGZhY3RvcnlJZHMgPSBnZXRTZXJ2ZXJGYWN0b3J5SWRzQnlGYWNldFJ1bnRpbWVzKGZhY2V0UnVudGltZXMpOwotICAgICAgICBpZiAoZmFjdG9yeUlkcyE9bnVsbCAmJiBmYWN0b3J5SWRzLmxlbmd0aCA+MCkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBmYWN0b3J5SWRzWzBdOwotICAgICAgICB9Ci0gICAgICB9ICAgICAgICAgICAgCi0gICAgfQotICAgIAotICAgIC8vZGlkbid0IGdldCBhIHNpbmdsZSBzdWl0YWJsZSBzZXJ2ZXIgdHlwZSBpZCwgcmV0dXJuIG51bGwuCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0gIAotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG5hbWVzIG9mIGFsbCBwcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlIHdoaWNoIHN1cHBvcnQgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIHR5cGUKLSAgICogYW5kIFdlYiBzZXJ2aWNlIHJ1bnRpbWUuCi0gICAqIEBwYXJhbSB0eXBlSWQgbXVzdCBiZSBhIFN0cmluZyBvZiB0aGUgZm9ybWF0ICIwL2ltcGxJZCIKLSAgICogd2hlcmUgdGhlIGRpZ2l0IGJlZm9yZSB0aGUgIi8iIHJlcHJlc2VudHMgdGhlIHNjZW5hcmlvCi0gICAqIChlLmcuIFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01fVVApIGFuZCB0aGUgaW1wbElkIGlzIHRoZSBXZWIgc2VydmljZSBpbXBsZW1lbnRhdGlvbiB0eXBlIGlkLgotICAgKiBAcGFyYW0gcnVudGltZUlkIGlkIG9mIGEgV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiBAcmV0dXJuIFN0cmluZ1tdIGFycmF5IG9mIHByb2plY3QgbmFtZXMuIFRoZSBhcnJheSBtYXkgaGF2ZSAwIGVsZW1lbnRzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRQcm9qZWN0c0ZvclNlcnZpY2VUeXBlQW5kUnVudGltZShTdHJpbmcgdHlwZUlkLCBTdHJpbmcgcnVudGltZUlkKQotICB7Ci0gICAgSVByb2plY3RbXSBwcm9qZWN0cyA9IEZhY2V0VXRpbHMuZ2V0QWxsUHJvamVjdHMoKTsKLSAgICBBcnJheUxpc3QgdmFsaWRQcm9qZWN0cyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAKLSAgICBmb3IgKGludCBpPTA7IGk8cHJvamVjdHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAoZG9lc1NlcnZpY2VUeXBlQW5kUnVudGltZVN1cHBvcnRQcm9qZWN0KHR5cGVJZCwgcnVudGltZUlkLCBwcm9qZWN0c1tpXS5nZXROYW1lKCkpKQotICAgICAgewotICAgICAgICB2YWxpZFByb2plY3RzLmFkZChwcm9qZWN0c1tpXS5nZXROYW1lKCkpOyAgICAgICAgCi0gICAgICB9ICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiAoU3RyaW5nW10pdmFsaWRQcm9qZWN0cy50b0FycmF5KG5ldyBTdHJpbmdbMF0pOwotICAgIAotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gcHJvamVjdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgdHlwZSBhbmQgV2ViIHNlcnZpY2UgcnVudGltZS4KLSAgICogQHBhcmFtIHR5cGVJZCBtdXN0IGJlIGEgU3RyaW5nIG9mIHRoZSBmb3JtYXQgIjAvaW1wbElkIgotICAgKiB3aGVyZSB0aGUgZGlnaXQgYmVmb3JlIHRoZSAiLyIgcmVwcmVzZW50cyB0aGUgc2NlbmFyaW8KLSAgICogKGUuZy4gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTV9VUCkgYW5kIHRoZSBpbXBsSWQgaXMgdGhlIFdlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHR5cGUgaWQuCi0gICAqIEBwYXJhbSBydW50aW1lSWQgaWQgb2YgYSBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIEBwYXJhbSBwcm9qZWN0TmFtZSBuYW1lIG9mIGFuIElQcm9qZWN0IGluIHRoZSB3b3Jrc3BhY2UKLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBwcm9qZWN0IHN1cHBvcnRzIHRoZSBnaXZlbiBXZWIgc2VydmljZSB0eXBlIGFuZCAKLSAgICogV2ViIHNlcnZpY2UgcnVudGltZS4gUmV0dXJucyA8Y29kZT5mYWxzZTwvY29kZT4KLSAgICogPHVsPiAKLSAgICogPGxpPmlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIHR5cGUgYW5kIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgb3I8L2xpPgotICAgKiA8bGk+aWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3Qgb3I8L2xpPgotICAgKiA8bGk+aWYgcHJvamVjdE5hbWUgaXMgbnVsbCBvciBlbXB0eTwvbGk+Ci0gICAqIDwvdWw+Ci0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZG9lc1NlcnZpY2VUeXBlQW5kUnVudGltZVN1cHBvcnRQcm9qZWN0KFN0cmluZyB0eXBlSWQsIFN0cmluZyBydW50aW1lSWQsIFN0cmluZyBwcm9qZWN0TmFtZSkKLSAgewotICAgIFN0cmluZ1tdIGRlc2NzID0gZ2V0U2VydmljZVJ1bnRpbWVzQnlTZXJ2aWNlVHlwZSh0eXBlSWQpOwotICAgIGZvciAoaW50IGogPSAwOyBqIDwgZGVzY3MubGVuZ3RoOyBqKyspCi0gICAgewotICAgICAgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBnZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKGRlc2NzW2pdKTsKLSAgICAgIGlmIChkZXNjLmdldFJ1bnRpbWUoKS5nZXRJZCgpLmVxdWFscyhydW50aW1lSWQpKQotICAgICAgewotICAgICAgICBpZiAoZG9lc1NlcnZpY2VSdW50aW1lU3VwcG9ydFByb2plY3QoZGVzY3Nbal0sIHByb2plY3ROYW1lKSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsgICAgCi0gICAgCi0gIH0gIAotICAKLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGdpdmVuIHByb2plY3Qgc3VwcG9ydHMgdGhlIGdpdmVuIHNlcnZpY2VSdW50aW1lLgotICAgKiBAcGFyYW0gc2VydmljZVJ1bnRpbWVJZCBpZCBvZiBhIHNlcnZpY2VSdW50aW1lCi0gICAqIEBwYXJhbSBwcm9qZWN0TmFtZSBuYW1lIG9mIGFuIElQcm9qZWN0IGluIHRoZSB3b3Jrc3BhY2UKLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBwcm9qZWN0IHN1cHBvcnRzIHRoZSBnaXZlbgotICAgKiBzZXJ2aWNlUnVudGltZS4gUmV0dXJucyA8Y29kZT5mYWxzZTwvY29kZT4KLSAgICogPHVsPiAKLSAgICogPGxpPmlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGdpdmVuIHNlcnZpY2VSdW50aW1lIG9yPC9saT4KLSAgICogPGxpPmlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0IG9yPC9saT4KLSAgICogPGxpPmlmIHByb2plY3ROYW1lIGlzIG51bGwgb3IgZW1wdHk8L2xpPgotICAgKiA8L3VsPgotICAgKi8gIAotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZG9lc1NlcnZpY2VSdW50aW1lU3VwcG9ydFByb2plY3QoU3RyaW5nIHNlcnZpY2VSdW50aW1lSWQsIFN0cmluZyBwcm9qZWN0TmFtZSkKLSAgewotICAgIEZhY2V0TWF0Y2hlciBmbSA9IEZhY2V0TWF0Y2hDYWNoZS5nZXRJbnN0YW5jZSgpLmdldE1hdGNoRm9yUHJvamVjdChmYWxzZSwgc2VydmljZVJ1bnRpbWVJZCwgcHJvamVjdE5hbWUpOwotICAgIGlmIChmbSAhPSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBmbS5pc01hdGNoKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSAgICAKLSAgfSAgCi0gIAotCi0gIC8qKgotICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHtAbGluayBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZX0gaWRzIHRoYXQgc3VwcG9ydCB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgdHlwZQotICAgKiBhbmQgV2ViIHNlcnZpY2UgcnVudGltZS4KLSAgICogQHBhcmFtIHR5cGVJZCBtdXN0IGJlIGEgU3RyaW5nIG9mIHRoZSBmb3JtYXQgIjAvaW1wbElkIgotICAgKiB3aGVyZSB0aGUgZGlnaXQgYmVmb3JlIHRoZSAiLyIgcmVwcmVzZW50cyB0aGUgc2NlbmFyaW8KLSAgICogKGUuZy4gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTV9VUCkgYW5kIHRoZSBpbXBsSWQgaXMgdGhlIFdlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHR5cGUgaWQuCi0gICAqIEBwYXJhbSBydW50aW1lSWQgaWQgb2YgYSBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIEByZXR1cm4gU3RyaW5nW10gYXJyYXkgb2Yge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfSBpZHMgdGhhdCBzdXBwb3J0IHRoZSBnaXZlbiBXZWIgc2VydmljZSB0eXBlCi0gICAqIGFuZCBXZWIgc2VydmljZSBydW50aW1lLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4gUmV0dXJucyBudWxsIGlmIG5vIHNlcnZpY2VSdW50aW1lcyBzdXBwb3J0aW5nCi0gICAqIHRoZSBnaXZlbiBXZWIgc2VydmljZSB0eXBlIGNvdWxkIGJlIGZvdW5kLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRTZXJ2aWNlUHJvamVjdFRlbXBsYXRlcyhTdHJpbmcgdHlwZUlkLCBTdHJpbmcgcnVudGltZUlkKQotICB7Ci0gICAgU3RyaW5nW10gc3JJZHMgPSBnZXRTZXJ2aWNlUnVudGltZXNCeVNlcnZpY2VUeXBlKHR5cGVJZCk7Ci0gICAgaWYgKHNySWRzID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgQXJyYXlMaXN0IHRlbXBsYXRlSWRMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3JJZHMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBnZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKHNySWRzW2ldKTsKLSAgICAgIFN0cmluZyB0aGlzUnVudGltZUlkID0gZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKTsKLSAgICAgIGlmICh0aGlzUnVudGltZUlkLmVxdWFscyhydW50aW1lSWQpKQotICAgICAgewotICAgICAgICAvL0dldCB0aGUgdGVtcGxhdGVzIGZvciB0aGlzIHNlcnZpY2VSdW50aW1lCi0gICAgICAgIFNldCB0ZW1wbGF0ZXMgPSBGYWNldE1hdGNoQ2FjaGUuZ2V0SW5zdGFuY2UoKS5nZXRUZW1wbGF0ZXNGb3JTZXJ2aWNlUnVudGltZShkZXNjLmdldElkKCkpOwotICAgICAgICAKLSAgICAgICAgLy9BZGQgdGhlIHRlbXBsYXRlIGlkcyB0byB0aGUgbGlzdCBpZiB0aGV5IGhhdmUgbm90IGFscmVhZHkgYmVlbiBhZGRlZAotICAgICAgICBJdGVyYXRvciBpdHIgPSB0ZW1wbGF0ZXMuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSB0ZW1wbGF0ZSA9IChJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSlpdHIubmV4dCgpOwotICAgICAgICAgIGlmICghdGVtcGxhdGVJZExpc3QuY29udGFpbnModGVtcGxhdGUuZ2V0SWQoKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGVJZExpc3QuYWRkKHRlbXBsYXRlLmdldElkKCkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgfSAgCi0gICAgCi0gICAgcmV0dXJuIChTdHJpbmdbXSl0ZW1wbGF0ZUlkTGlzdC50b0FycmF5KG5ldyBTdHJpbmdbXXt9KTsgICAgCi0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4ge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfSBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgdHlwZQotICAgKiBhbmQgV2ViIHNlcnZpY2UgcnVudGltZS4KLSAgICogQHBhcmFtIHR5cGVJZCBtdXN0IGJlIGEgU3RyaW5nIG9mIHRoZSBmb3JtYXQgIjAvaW1wbElkIgotICAgKiB3aGVyZSB0aGUgZGlnaXQgYmVmb3JlIHRoZSAiLyIgcmVwcmVzZW50cyB0aGUgc2NlbmFyaW8KLSAgICogKGUuZy4gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTV9VUCkgYW5kIHRoZSBpbXBsSWQgaXMgdGhlIFdlYiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIHR5cGUgaWQuCi0gICAqIEBwYXJhbSBydW50aW1lSWQgaWQgb2YgYSBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIEBwYXJhbSB0ZW1wbGF0ZUlkIGlkIG9mIGEge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfQotICAgKiBAcmV0dXJuIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGdpdmVuIHtAbGluayBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZX0gc3VwcG9ydHMgdGhlIGdpdmVuIAotICAgKiBXZWIgc2VydmljZSB0eXBlIGFuZCBXZWIgc2VydmljZSBydW50aW1lLiBSZXR1cm5zIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuIAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGRvZXNTZXJ2aWNlVHlwZUFuZFJ1bnRpbWVTdXBwb3J0VGVtcGxhdGUoU3RyaW5nIHR5cGVJZCwgU3RyaW5nIHJ1bnRpbWVJZCwgU3RyaW5nIHRlbXBsYXRlSWQpCi0gIHsKLSAgICBTdHJpbmdbXSBzcklkcyA9IGdldFNlcnZpY2VSdW50aW1lc0J5U2VydmljZVR5cGUodHlwZUlkKTsKLSAgICBpZiAoc3JJZHMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcklkcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IgZGVzYyA9IGdldFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvckJ5SWQoc3JJZHNbaV0pOwotICAgICAgU3RyaW5nIHRoaXNSdW50aW1lSWQgPSBkZXNjLmdldFJ1bnRpbWUoKS5nZXRJZCgpOwotICAgICAgaWYgKHRoaXNSdW50aW1lSWQuZXF1YWxzKHJ1bnRpbWVJZCkpCi0gICAgICB7Ci0gICAgICAgIC8vR2V0IHRoZSB0ZW1wbGF0ZXMgZm9yIHRoaXMgc2VydmljZVJ1bnRpbWUKLSAgICAgICAgU2V0IHRlbXBsYXRlcyA9IEZhY2V0TWF0Y2hDYWNoZS5nZXRJbnN0YW5jZSgpLmdldFRlbXBsYXRlc0ZvclNlcnZpY2VSdW50aW1lKHNySWRzW2ldKTsKLSAgICAgICAgCi0gICAgICAgIC8vQ2hlY2sgaWYgYW55IG9mIHRoZSB0ZW1wbGF0ZSBpZHMgbWF0Y2ggdGhlIGdpdmVuIG9uZS4KLSAgICAgICAgSXRlcmF0b3IgaXRyID0gdGVtcGxhdGVzLml0ZXJhdG9yKCk7Ci0gICAgICAgIHdoaWxlIChpdHIuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUgdGVtcGxhdGUgPSAoSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUpaXRyLm5leHQoKTsKLSAgICAgICAgICBpZiAodGVtcGxhdGUuZ2V0SWQoKS5lcXVhbHModGVtcGxhdGVJZCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfQotCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgIH0gIAotICAgIAotICAgIHJldHVybiBmYWxzZTsgICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiB7QGxpbmsgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGV9IHN1cHBvcnRzIHRoZSBnaXZlbiBzZXJ2aWNlUnVudGltZS4KLSAgICogQHBhcmFtIHNlcnZpY2VSdW50aW1lSWQgaWQgb2YgYSBzZXJ2aWNlUnVudGltZQotICAgKiBAcGFyYW0gdGVtcGxhdGVJZCBpZCBvZiBhIHtAbGluayBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZX0KLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBnaXZlbiB7QGxpbmsgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGV9IHN1cHBvcnRzIHRoZSBnaXZlbiAKLSAgICogc2VydmljZVJ1bnRpbWUuIFJldHVybnMgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBkb2VzU2VydmljZVJ1bnRpbWVTdXBwb3J0VGVtcGxhdGUoU3RyaW5nIHNlcnZpY2VSdW50aW1lSWQsIFN0cmluZyB0ZW1wbGF0ZUlkKQotICB7Ci0gICAgLy9HZXQgdGhlIHRlbXBsYXRlcyBmb3IgdGhpcyBzZXJ2aWNlUnVudGltZQotICAgIFNldCB0ZW1wbGF0ZXMgPSBGYWNldE1hdGNoQ2FjaGUuZ2V0SW5zdGFuY2UoKS5nZXRUZW1wbGF0ZXNGb3JTZXJ2aWNlUnVudGltZShzZXJ2aWNlUnVudGltZUlkKTsKLSAgICBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSBjaGVja2luZ1RlbXBsYXRlID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0VGVtcGxhdGUodGVtcGxhdGVJZCk7Ci0gICAgcmV0dXJuIHRlbXBsYXRlcy5jb250YWlucyhjaGVja2luZ1RlbXBsYXRlKTsKLSAgfSAgCi0gIAotICAvL0NsaWVudC1zaWRlIHV0aWxpdGllcwotICAvKioKLSAgICogUmV0dXJucyBhIFdlYlNlcnZpY2VDbGllbnRJbXBsIGdpdmVuIHRoZSBpZCBvZiBhIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlLgotICAgKiBAcGFyYW0gaWQgCi0gICAqIEByZXR1cm4ge0BsaW5rIFdlYlNlcnZpY2VDbGllbnRJbXBsfSB3aXRoIHRoZSBnaXZlbiBpZAotICAgKiBSZXR1cm5zIG51bGwgaWYgc3VjaCBhIFdlYlNlcnZpY2VDbGllbnRJbXBsIGNhbm5vdCBiZSBmb3VuZC4KLSAgICovICAKLSAgcHVibGljIHN0YXRpYyBXZWJTZXJ2aWNlQ2xpZW50SW1wbCBnZXRXZWJTZXJ2aWNlQ2xpZW50SW1wbEJ5SWQoU3RyaW5nIGlkKQotICB7Ci0gICAgT2JqZWN0IHJlc3VsdCA9IHJlZ2lzdHJ5LndlYlNlcnZpY2VDbGllbnRJbXBsc18uZ2V0KGlkKTsKLSAgICBpZiAocmVzdWx0IT1udWxsKQotICAgIHsKLSAgICAgIHJldHVybiAoV2ViU2VydmljZUNsaWVudEltcGwpcmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsgICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIGEge0BsaW5rIENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yfSBnaXZlbiB0aGUgaWQgb2YgYSBjbGllbnRSdW50aW1lLgotICAgKiBAcGFyYW0gaWQgb2YgYSBjbGllbnRSdW50aW1lCi0gICAqIEByZXR1cm4gQ2xpZW50UnVudGltZURlc2NyaXB0b3Igd2l0aCB0aGUgZ2l2ZW4gaWQKLSAgICogUmV0dXJucyBudWxsIGlmIHN1Y2ggYSBDbGllbnRSdW50aW1lRGVzY3JpcHRvciBjYW5ub3QgYmUgZm91bmQuCi0gICAqLyAgCi0gIHB1YmxpYyBzdGF0aWMgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZ2V0Q2xpZW50UnVudGltZURlc2NyaXB0b3JCeUlkKFN0cmluZyBpZCkKLSAgewotICAgIE9iamVjdCByZXN1bHQgPSByZWdpc3RyeS5jbGllbnRSdW50aW1lc18uZ2V0KGlkKTsKLSAgICBpZiAocmVzdWx0IT1udWxsKQotICAgIHsKLSAgICAgIHJldHVybiAoQ2xpZW50UnVudGltZURlc2NyaXB0b3IpcmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsgICAgICAgIAotICB9ICAgIAotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHtAbGluayBJV2ViU2VydmljZVJ1bnRpbWV9IG9mIHRoZSBnaXZlbiBjbGllbnRSdW50aW1lLiBFeHRlbmRlcnMgcHJvdmlkZSB0aGUgZnVsbHkgCi0gICAqIHF1YWxpZmllZCBuYW1lIG9mIGEgY29uY3JldGUgSVdlYlNlcnZpY2VSdW50aW1lIGluIHRoZSBjbGFzcyBhdHRyaWJ1dGUgb2YgYSBjbGllbnRSdW50aW1lcyBleHRlbnNpb24uCi0gICAqIEBwYXJhbSBjbGllbnRSdW50aW1lSWQgaWQgb2YgYSBjbGllbnRSdW50aW1lCi0gICAqIEByZXR1cm4gSVdlYlNlcnZpY2VSdW50aW1lCi0gICAqLyAgCi0gIHB1YmxpYyBzdGF0aWMgSVdlYlNlcnZpY2VSdW50aW1lIGdldENsaWVudFJ1bnRpbWUoIFN0cmluZyBjbGllbnRSdW50aW1lSWQgKQotICB7Ci0gICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChjbGllbnRSdW50aW1lSWQpOwotICAgIElXZWJTZXJ2aWNlUnVudGltZSAgICB3ZWJzZXJ2aWNlUnVudGltZSAgICAgPSBudWxsOwotICAgIGlmIChkZXNjcmlwdG9yICE9IG51bGwpCi0gICAgewotICAgICAgICB3ZWJzZXJ2aWNlUnVudGltZSA9IGRlc2NyaXB0b3IuZ2V0V2ViU2VydmljZVJ1bnRpbWUoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHdlYnNlcnZpY2VSdW50aW1lOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWQgb2YgYSBjbGllbnRSdW50aW1lIHRoYXQgc3VwcG9ydHMgdGhlIHByb3ZpZGVkIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlLCBXZWIgc2VydmljZSBydW50aW1lLAotICAgKiBzZXJ2ZXIgdHlwZS9zZXJ2ZXIgaW5zdGFuY2UgKGlmIHByZXNlbnQpLCBwcm9qZWN0IG9yIHByb2plY3QgdHlwZS4KLSAgICogQHBhcmFtIHRycyBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgVHlwZVJ1bnRpbWVTZXJ2ZXJ9IGNvbnRhaW5pbmcgYSBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZSBpZCwgV2ViIHNlcnZpY2UgcnVudGltZSBpZCwKLSAgICogc2VydmVyIHR5cGUgaWQgYW5kIHNlcnZlciBpbnN0YW5jZSBpZC4gVGhlIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlIGlkIGFuZCBXZWIgc2VydmljZSBydW50aW1lIGlkIG11c3QgYmUgbm9uLW51bGwgCi0gICAqIGFuZCBub24tZW1wdHkuIFRoZSBzZXJ2ZXIgdHlwZSBpZCBhbmQgc2VydmVyIGluc3RhbmNlIGlkIG1heSBiZSBudWxsIG9yIGVtcHR5LgotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgdGhlIG5hbWUgb2YgYW4gSVByb2plY3QgdGhheSBtYXkgb3IgbWF0IG5vdCBleGlzdCBpbiB0aGUgd29ya3NwYWNlLiBNdXN0IGJlIG5vbi1udWxsIGFuZCAKLSAgICogbm9uLWVtcHR5LgotICAgKiBAcGFyYW0gdGVtcGxhdGVJZCB0aGUgaWQgb2YgYW4ge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfS4gTXVzdCBiZSBub24tbnVsbCBhbmQgbm9uLWVtcHR5IGlmCi0gICAqIGFuIElQcm9qZWN0IHdpdGggdGhlIG5hbWUgcHJvamVjdE5hbWUgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHdvcmtzcGFjZS4gCi0gICAqIEByZXR1cm4gU3RyaW5nIGlkIG9mIGEgY2xpZW50UnVudGltZSB0aGF0IHN1cHBvcnRzIHRoZSBwcm92aWRlZCBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZSwgV2ViIHNlcnZpY2UgcnVudGltZSwKLSAgICogc2VydmVyIHR5cGUvc2VydmVyIGluc3RhbmNlIChpZiBwcmVzZW50KSwgcHJvamVjdCBvciBwcm9qZWN0IHR5cGUuIFJldHVybnMgYW4gZW1wdHkgU3RyaW5nIGlmIG5vIAotICAgKiBzdWNoIGNsaWVudFJ1bnRpbWUgY291bGQgYmUgZm91bmQuCi0gICAqLyAgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldENsaWVudFJ1bnRpbWVJZChUeXBlUnVudGltZVNlcnZlciB0cnMsIFN0cmluZyBwcm9qZWN0TmFtZSwgU3RyaW5nIHRlbXBsYXRlSWQpCi0gIHsKLSAgICBib29sZWFuIHNlcnZlclNlbGVjdGVkID0gKHRycy5nZXRTZXJ2ZXJJZCgpIT1udWxsKSAmJiAodHJzLmdldFNlcnZlcklkKCkubGVuZ3RoKCk+MCk7Ci0gICAgLy9GaW5kIHRoZSBmaXJzdCBjbGllbnRSdW50aW1lIHRoYXQgc3VwcG9ydHMgdGhlIGltcGxlbWVudGF0aW9uIHR5cGUsIHJ1bnRpbWUsIHNlcnZlciwgYW5kIHByb2plY3QKLSAgICBTdHJpbmdbXSBkZXNjcyA9IGdldENsaWVudFJ1bnRpbWVzQnlUeXBlKHRycy5nZXRUeXBlSWQoKSwgdHJzLmdldFNlcnZlcklkKCkpOwotICAgIGZvciAoaW50IGk9MDsgaTxkZXNjcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBDbGllbnRSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gZ2V0Q2xpZW50UnVudGltZURlc2NyaXB0b3JCeUlkKGRlc2NzW2ldKTsgICAgICAKLSAgICAgIGlmIChkZXNjLmdldFJ1bnRpbWUoKS5nZXRJZCgpLmVxdWFscyh0cnMuZ2V0UnVudGltZUlkKCkpKQotICAgICAgewotICAgICAgICBpZiAoc2VydmVyU2VsZWN0ZWQpCi0gICAgICAgIHsKLSAgICAgICAgICBib29sZWFuIHN1cHBvcnRzU2VydmVyID0gZG9lc0NsaWVudFJ1bnRpbWVTdXBwb3J0U2VydmVyKGRlc2MuZ2V0SWQoKSwgdHJzLmdldFNlcnZlcklkKCkpOwotICAgICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXIpCi0gICAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLSAgICAgICAgaWYgKHByb2plY3QuZXhpc3RzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoZG9lc0NsaWVudFJ1bnRpbWVTdXBwb3J0UHJvamVjdChkZXNjLmdldElkKCksIHByb2plY3ROYW1lKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZGVzYy5nZXRJZCgpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAvL0NoZWNrIGlmIHRlbXBsYXRlIGlzIHN1cHBvcnRlZAotICAgICAgICAgIGlmIChkb2VzQ2xpZW50UnVudGltZVN1cHBvcnRUZW1wbGF0ZShkZXNjLmdldElkKCksIHRlbXBsYXRlSWQpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXNjLmdldElkKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiAiIjsKLSAgICAKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYWxsIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgaWRzIGZvciB0aGUgY2xpZW50IHNpZGUuCi0gICAqIEByZXR1cm4gU3RyaW5nW10gYXJyYXkgb2YgV2ViIHNlcnZpY2UgcnVudGltZSBpZHMgZm9yIHRoZSBjbGllbnQgc2lkZS4KLSAgICogVGhlIGFycmF5IG1heSBoYXZlIDAgZWxlbWVudHMuIAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRBbGxSdW50aW1lc0ZvckNsaWVudFNpZGUoKSAKLSAgewotICAgIEFycmF5TGlzdCBydW50aW1lSWRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIEl0ZXJhdG9yIGl0ZXIgPSByZWdpc3RyeS5jbGllbnRSdW50aW1lc18udmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpICAgCi0gICAgewotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChDbGllbnRSdW50aW1lRGVzY3JpcHRvcilpdGVyLm5leHQoKTsKLSAgICAgIFN0cmluZyB0aGlzUnVudGltZUlkID0gZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKTsgCi0gICAgICBpZiAoIXJ1bnRpbWVJZHMuY29udGFpbnModGhpc1J1bnRpbWVJZCkpCi0gICAgICBydW50aW1lSWRzLmFkZCh0aGlzUnVudGltZUlkKTsKLSAgICB9ICAgICAgCi0gICAgcmV0dXJuIChTdHJpbmdbXSlydW50aW1lSWRzLnRvQXJyYXkobmV3IFN0cmluZ1tde30pOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWRzIG9mIGFsbCBjbGllbnRSdW50aW1lcyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuCi0gICAqIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlLgotICAgKiBAcGFyYW0gY2xpZW50SW1wbElkIGlkIG9mIGEgV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICogQHJldHVybnMgU3RyaW5nW10gYXJyYXkgY29udGFpbmluZyB0aGUgaWRzIG9mIGFsbCBjbGllbnRSdW50aW1lcyB0aGF0Ci0gICAqIHN1cHBvcnQgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0Q2xpZW50UnVudGltZXNCeVR5cGUoU3RyaW5nIGNsaWVudEltcGxJZCkgCi0gIHsKLSAgICBBcnJheUxpc3QgaWRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIEl0ZXJhdG9yIGl0ZXIgPSByZWdpc3RyeS5jbGllbnRSdW50aW1lc18udmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpICAgCi0gICAgewotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChDbGllbnRSdW50aW1lRGVzY3JpcHRvcilpdGVyLm5leHQoKTsKLSAgICAgIC8vQ2hlY2sgaWYgdGhpcyBzZXJ2aWNlUnVudGltZSBzdXBwb3J0cyB0aGUgaW1wbGVtZW50YXRpb24gdHlwZQotICAgICAgaWYgKGRlc2MuZ2V0Q2xpZW50SW1wbGVtZW50YXRpb25UeXBlKCkuZ2V0SWQoKS5lcXVhbHMoY2xpZW50SW1wbElkKSkKLSAgICAgIHsKLSAgICAgICAgaWRzLmFkZChkZXNjLmdldElkKCkpOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gKFN0cmluZ1tdKWlkcy50b0FycmF5KG5ldyBTdHJpbmdbXXt9KTsKLSAgfSAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWRzIG9mIGFsbCBjbGllbnRSdW50aW1lcyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuCi0gICAqIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlIGFuZCB0aGUgcHJlZmVycmVkIHNlcnZlcgotICAgKiBAcGFyYW0gY2xpZW50SW1wbElkIGlkIG9mIGEgV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICogQHJldHVybnMgU3RyaW5nW10gYXJyYXkgY29udGFpbmluZyB0aGUgaWRzIG9mIGFsbCBjbGllbnRSdW50aW1lcyB0aGF0Ci0gICAqIHN1cHBvcnQgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0Q2xpZW50UnVudGltZXNCeVR5cGUoU3RyaW5nIGNsaWVudEltcGxJZCwgU3RyaW5nIHByZWZlcnJlZFNlcnZlckZhY3RvcnlJZCkgCi0gIHsKLSAgICBBcnJheUxpc3QgaWRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIEFycmF5TGlzdCBpZHNQcmVmZXJyZWRCeVNlcnZlciA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBJdGVyYXRvciBpdGVyID0gcmVnaXN0cnkuY2xpZW50UnVudGltZXNfLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSAgIAotICAgIHsKLSAgICAgIENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSAoQ2xpZW50UnVudGltZURlc2NyaXB0b3IpaXRlci5uZXh0KCk7Ci0gICAgICAvL0NoZWNrIGlmIHRoaXMgc2VydmljZVJ1bnRpbWUgc3VwcG9ydHMgdGhlIGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICAgIGlmIChkZXNjLmdldENsaWVudEltcGxlbWVudGF0aW9uVHlwZSgpLmdldElkKCkuZXF1YWxzKGNsaWVudEltcGxJZCkpCi0gICAgICB7Ci0gICAgCSAgU3RyaW5nIGNsaWVudFJ1bnRpbWVJZCA9IGRlc2MuZ2V0SWQoKTsKLSAgICAJICBpZiAoZGVzYy5nZXRSdW50aW1lUHJlZmVycmVkU2VydmVyVHlwZSgpICE9IG51bGwgJiYgZGVzYy5nZXRSdW50aW1lUHJlZmVycmVkU2VydmVyVHlwZSgpLmVxdWFscyhwcmVmZXJyZWRTZXJ2ZXJGYWN0b3J5SWQpKSB7Ci0gICAgCQkgIGlkc1ByZWZlcnJlZEJ5U2VydmVyLmFkZChjbGllbnRSdW50aW1lSWQpOwotICAgIAkgIH0gZWxzZSB7Ci0gICAgCQkgIGlkcy5hZGQoY2xpZW50UnVudGltZUlkKTsKLSAgICAJICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotIC8vIGFwcGVuZCBwcmVmZXJyZWRSdW50aW1lIGFmdGVyIHByZWZlcnJlZFJ1bnRpbWVJZHNMaXN0UHJlZmVycmVkQnlTZXJ2ZXIKLSAgICBTdHJpbmdbXSBwcmVmZXJyZWRSdW50aW1lSWRzID0gbmV3IFN0cmluZ1tpZHNQcmVmZXJyZWRCeVNlcnZlci5zaXplKCkraWRzLnNpemUoKV07Ci0gICAgSXRlcmF0b3IgaXRyMSA9IGlkc1ByZWZlcnJlZEJ5U2VydmVyLml0ZXJhdG9yKCk7Ci0gICAgaW50IHByZWZlcnJlZFJUQ291bnRlciA9IDA7Ci0gICAgd2hpbGUgKGl0cjEuaGFzTmV4dCgpKSB7Ci0JCVN0cmluZyBydW50aW1lSWQgPSAoU3RyaW5nKSBpdHIxLm5leHQoKTsKLQkJcHJlZmVycmVkUnVudGltZUlkc1twcmVmZXJyZWRSVENvdW50ZXIrK10gPSBydW50aW1lSWQ7Ci0JfQotICAgIAotICAgIEl0ZXJhdG9yIGl0cjIgPSBpZHMuaXRlcmF0b3IoKTsgIAotICAgICAKLSAgICB3aGlsZSAoaXRyMi5oYXNOZXh0KCkpIHsKLQkJU3RyaW5nIHJ1bnRpbWVJZCA9IChTdHJpbmcpIGl0cjIubmV4dCgpOwotCQlwcmVmZXJyZWRSdW50aW1lSWRzW3ByZWZlcnJlZFJUQ291bnRlcisrXSA9IHJ1bnRpbWVJZDsJCQotCX0KLQotICAgIHJldHVybiBwcmVmZXJyZWRSdW50aW1lSWRzOwotICB9ICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpZHMgb2YgYWxsIFdlYiBzZXJ2aWNlIHJ1bnRpbWVzIHRoYXQgc3VwcG9ydCB0aGUgZ2l2ZW4KLSAgICogV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUuCi0gICAqIEBwYXJhbSBjbGllbnRJbXBsSWQgaWQgb2YgYSBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZQotICAgKiBAcmV0dXJuIFN0cmluZ1tdIGFycmF5IGNvbnRhaW5pbmcgdGhlIGlkcyBvZiBhbGwgV2ViIHNlcnZpY2UgcnVudGltZXMgdGhhdAotICAgKiBzdXBwb3J0IHRoZSBnaXZlbiBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZS4gVGhlIGFycmF5IG1heSBoYXZlIDAgZWxlbWVudHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldFJ1bnRpbWVzQnlDbGllbnRUeXBlKFN0cmluZyBjbGllbnRJbXBsSWQpIAotICB7Ci0gICAgQXJyYXlMaXN0IHJ1bnRpbWVJZHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgSXRlcmF0b3IgaXRlciA9IHJlZ2lzdHJ5LmNsaWVudFJ1bnRpbWVzXy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgICAKLSAgICB7Ci0gICAgICBDbGllbnRSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gKENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yKWl0ZXIubmV4dCgpOwotICAgICAgLy9DaGVjayBpZiB0aGlzIHNlcnZpY2VSdW50aW1lIHN1cHBvcnRzIHRoZSBpbXBsZW1lbnRhdGlvbiB0eXBlCi0gICAgICBpZiAoZGVzYy5nZXRDbGllbnRJbXBsZW1lbnRhdGlvblR5cGUoKS5nZXRJZCgpLmVxdWFscyhjbGllbnRJbXBsSWQpKQotICAgICAgewotICAgICAgICBpZiAoIXJ1bnRpbWVJZHMuY29udGFpbnMoZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICBydW50aW1lSWRzLmFkZChkZXNjLmdldFJ1bnRpbWUoKS5nZXRJZCgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gKFN0cmluZ1tdKXJ1bnRpbWVJZHMudG9BcnJheShuZXcgU3RyaW5nW117fSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBXZWIgc2VydmljZSBydW50aW1lIHN1cHBvcnRzIHRoZSBnaXZlbiAKLSAgICogV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUuCi0gICAqIEBwYXJhbSBjbGllbnRJbXBsSWQgaWQgb2YgYSBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZQotICAgKiBAcGFyYW0gcnVudGltZUlkIGlkIG9mIGEgV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiBAcmV0dXJuIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgc3VwcG9ydHMgdGhlIGdpdmVuIAotICAgKiBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZS4gPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1J1bnRpbWVTdXBwb3J0ZWRGb3JDbGllbnRUeXBlKFN0cmluZyBjbGllbnRJbXBsSWQsIFN0cmluZyBydW50aW1lSWQpCi0gIHsKLSAgICBTdHJpbmdbXSBjbGllbnRSdW50aW1lSWRzID0gZ2V0Q2xpZW50UnVudGltZXNCeVR5cGUoY2xpZW50SW1wbElkKTsKLSAgICBpZiAoY2xpZW50UnVudGltZUlkcyE9bnVsbCkKLSAgICB7Ci0gICAgICBmb3IgKGludCBpPTA7IGkgPCBjbGllbnRSdW50aW1lSWRzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBDbGllbnRSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gZ2V0Q2xpZW50UnVudGltZURlc2NyaXB0b3JCeUlkKGNsaWVudFJ1bnRpbWVJZHNbaV0pOwotICAgICAgICBpZiAoZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKS5lcXVhbHMocnVudGltZUlkKSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYWxsIHNlcnZlciB0eXBlIGlkcyB3aXRoIGNvbmZpZ3VyZWQgc2VydmVyIHJ1bnRpbWVzLgotICAgKiBAcmV0dXJuIFN0cmluZ1tdIGFycmF5IG9mIHNlcnZlciB0eXBlIGlkcy4gVGhlIGFycmF5IG1heSBoYXZlIDAgZWxlbWVudHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldEFsbENsaWVudFNlcnZlckZhY3RvcnlJZHMoKSAKLSAgeyAgICAKLSAgICAvL0l0ZXJhdG9yIGl0ZXIgPSByZWdpc3RyeS5jbGllbnRSdW50aW1lc18udmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAvL3doaWxlIChpdGVyLmhhc05leHQoKSkgICAKLSAgICAvL3sKLSAgICAgIC8vVE9ETyBpdGVyYXRlIG92ZXIgYWxsIHRoZSBzZXJ2ZXIgdHlwZXMgYW5kIHNlZSBpZiB0aGVpciBydW50aW1lIHR5cGVzIGhhdmUgYW4KLSAgICAgIC8vaWQgdGhhdCBtYXRjaGVzIHRoZSBydW50aW1lIHR5cGUgb2YgYW55IG9mIHRoZSBydW50aW1lcy4gICAgICAgICAgICAKLSAgICAgIC8vIENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSAoQ2xpZW50UnVudGltZURlc2NyaXB0b3IpaXRlci5uZXh0KCk7Ci0gICAgICAvLyBTZXQgcnVudGltZXMgPSBnZXRSdW50aW1lcyhkZXNjLmdldFJlcXVpcmVkRmFjZXRWZXJzaW9ucygpKTsKLSAgICAgIC8vIElTZXJ2ZXJUeXBlW10gYWxsU2VydmVyVHlwZXMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlclR5cGVzKCk7Ci0gICAgLy99Ci0gICAgLy9yZXR1cm4gKFN0cmluZ1tdKXNlcnZlckZhY3RvcnlJZHMudG9BcnJheShuZXcgU3RyaW5nW117fSk7Ci0gICAgLy9UZW1wb3JhcmlseSByZXR1cm4gYWxsIHNlcnZlciB0eXBlcwotICAgIHJldHVybiBnZXRBbGxTZXJ2ZXJGYWN0b3J5SWRzV2l0aFJ1bnRpbWVzKCk7ICAgIAotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWRzIG9mIGFsbCBzZXJ2ZXIgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZSBnaXZlbgotICAgKiBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZS4KLSAgICogIAotICAgKiBAcGFyYW0gY2xpZW50SW1wbElkIGlkIG9mIGEgV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICogQHJldHVybiBTdHJpbmdbXSBhcnJheSBjb250YWluaW5nIHRoZSBpZHMgb2YgYWxsIHNlcnZlciB0eXBlcyB0aGF0Ci0gICAqIHN1cHBvcnQgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0U2VydmVyRmFjdG9yeUlkc0J5Q2xpZW50VHlwZShTdHJpbmcgY2xpZW50SW1wbElkKQotICB7Ci0gICAgQXJyYXlMaXN0IHNlcnZlckZhY3RvcnlJZHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgU3RyaW5nW10gY3J0cyA9IGdldENsaWVudFJ1bnRpbWVzQnlUeXBlKGNsaWVudEltcGxJZCk7Ci0gICAgaWYgKGNydHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNydHMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIC8vR2V0IHRoZSBydW50aW1lcyB0aGF0IHdvcmsgZm9yIHRoZSBmYWNldHMgcmVxdWlyZWQgZm9yIHRoaXMgc2VydmljZVJ1bnRpbWUgICAgICAgIAotICAgICAgICBTdHJpbmdbXSBmSWRzID0gZ2V0U2VydmVyRmFjdG9yeUlkc0J5Q2xpZW50UnVudGltZShjcnRzW2ldKTsKLSAgICAgICAgZm9yIChpbnQgaj0wOyBqPGZJZHMubGVuZ3RoOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIXNlcnZlckZhY3RvcnlJZHMuY29udGFpbnMoZklkc1tqXSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgc2VydmVyRmFjdG9yeUlkcy5hZGQoZklkc1tqXSk7ICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9ICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIChTdHJpbmdbXSlzZXJ2ZXJGYWN0b3J5SWRzLnRvQXJyYXkobmV3IFN0cmluZ1tde30pOwotICB9ICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBzZXJ2ZXIgdHlwZSBzdXBwb3J0cyB0aGUgZ2l2ZW4gCi0gICAqIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlLgotICAgKiBAcGFyYW0gY2xpZW50SW1wbElkIGlkIG9mIGEgV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICogQHBhcmFtIHNlcnZlckZhY3RvcnlJZCBpZCBvZiBhIHNlcnZlciB0eXBlCi0gICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGdpdmVuIHNlcnZlciB0eXBlIHN1cHBvcnRzIHRoZSBnaXZlbiAKLSAgICogV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUuIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTZXJ2ZXJTdXBwb3J0ZWRGb3JDaG9zZW5DbGllbnRUeXBlKFN0cmluZyBjbGllbnRJbXBsSWQsIFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQpCi0gIHsKLSAgICBTdHJpbmdbXSBmSWRzID0gZ2V0U2VydmVyRmFjdG9yeUlkc0J5Q2xpZW50VHlwZShjbGllbnRJbXBsSWQpOwotICAgIGlmIChmSWRzID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGZvciAoaW50IGk9MDtpPGZJZHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAoc2VydmVyRmFjdG9yeUlkLmVxdWFscyhmSWRzW2ldKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9ICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLSAgfSAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWRzIG9mIGFsbCBzZXJ2ZXIgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZSBnaXZlbgotICAgKiBjbGllbnRSdW50aW1lLgotICAgKiAKLSAgICogQHBhcmFtIGNsaWVudFJ1bnRpbWVJZCBpZCBvZiBhIGNsaWVudFJ1bnRpbWUKLSAgICogQHJldHVybiBTdHJpbmdbXSBhcnJheSBjb250YWluaW5nIHRoZSBpZHMgb2YgYWxsIHNlcnZlciB0eXBlcyB0aGF0Ci0gICAqIHN1cHBvcnQgdGhlIGdpdmVuIGNsaWVudFJ1bnRpbWUuIFRoZSBhcnJheSBtYXkgaGF2ZSAwIGVsZW1lbnRzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRTZXJ2ZXJGYWN0b3J5SWRzQnlDbGllbnRSdW50aW1lKFN0cmluZyBjbGllbnRSdW50aW1lSWQpCi0gIHsgICAgICAgCi0gICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IGdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChjbGllbnRSdW50aW1lSWQpOwotICAgIFNldCBmYWNldFJ1bnRpbWVzID0gZ2V0UnVudGltZXMoZGVzYy5nZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoKSk7Ci0KLSAgICBTdHJpbmdbXSBmSWRzID0gZ2V0U2VydmVyRmFjdG9yeUlkc0J5RmFjZXRSdW50aW1lcyhmYWNldFJ1bnRpbWVzKTsKLSAgICByZXR1cm4gZklkczsgICAgCi0gIH0gICAgCi0KLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGdpdmVuIHNlcnZlciB0eXBlIHN1cHBvcnRzIHRoZSBnaXZlbiAKLSAgICogY2xpZW50UnVudGltZS4KLSAgICogCi0gICAqIEBwYXJhbSBjbGllbnRSdW50aW1lSWQgaWQgb2YgYSBjbGllbnRSdW50aW1lCi0gICAqIEBwYXJhbSBzZXJ2ZXJGYWN0b3J5SWQgaWQgb2YgYSBzZXJ2ZXIgdHlwZQotICAgKiBAcmV0dXJuIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGdpdmVuIHNlcnZlciB0eXBlIHN1cHBvcnRzIHRoZSBnaXZlbiAKLSAgICogY2xpZW50UnVudGltZS4gPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBkb2VzQ2xpZW50UnVudGltZVN1cHBvcnRTZXJ2ZXIoU3RyaW5nIGNsaWVudFJ1bnRpbWVJZCwgU3RyaW5nIHNlcnZlckZhY3RvcnlJZCkKLSAgewotICAgIFN0cmluZ1tdIHNlcnZlcklkcyA9IGdldFNlcnZlckZhY3RvcnlJZHNCeUNsaWVudFJ1bnRpbWUoY2xpZW50UnVudGltZUlkKTsKLSAgICBmb3IgKGludCBpPTA7IGk8c2VydmVySWRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChzZXJ2ZXJJZHNbaV0uZXF1YWxzKHNlcnZlckZhY3RvcnlJZCkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBzZXJ2ZXIgdHlwZSBzdXBwb3J0cyB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiAKLSAgICogQHBhcmFtIHJ1bnRpbWVJZCBpZCBvZiBhIFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLSAgICogQHBhcmFtIGZhY3RvcnlJZCBpZCBvZiBhIHNlcnZlciB0eXBlCi0gICAqIEByZXR1cm4gYm9vbGVhbiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgZ2l2ZW4gc2VydmVyIHR5cGUgc3VwcG9ydHMgdGhlIGdpdmVuIAotICAgKiBXZWIgc2VydmljZSBydW50aW1lIGZvciB0aGUgY2xpZW50IHNpZGUuIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZG9lc1J1bnRpbWVTdXBwb3J0U2VydmVyRm9yQ2xpZW50U2lkZShTdHJpbmcgcnVudGltZUlkLCBTdHJpbmcgZmFjdG9yeUlkKQotICB7Ci0gICAgLy9HZXQgYWxsIHRoZSBDbGllbnRSdW50aW1lRGVzY3JpcHRvcnMgdGhhdCBwb2ludCB0byB0aGlzIHJ1bnRpbWVJZAotICAgIEl0ZXJhdG9yIGl0ZXIgPSByZWdpc3RyeS5jbGllbnRSdW50aW1lc18udmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpICAgCi0gICAgewotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChDbGllbnRSdW50aW1lRGVzY3JpcHRvcilpdGVyLm5leHQoKTsKLSAgICAgIC8vY2hlY2sgaWYgdGhpcyBjbGllbnRSdW50aW1lIHBvaW50cyB0byBydW50aW1lSWQKLSAgICAgIFN0cmluZyB0aGlzUnVudGltZUlkID0gZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKTsKLSAgICAgIGlmICh0aGlzUnVudGltZUlkLmVxdWFscyhydW50aW1lSWQpKQotICAgICAgewotICAgICAgICBTZXQgZmFjZXRSdW50aW1lcyA9IGdldFJ1bnRpbWVzKGRlc2MuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCkpOwotICAgICAgICBTdHJpbmdbXSBmSWRzID0gZ2V0U2VydmVyRmFjdG9yeUlkc0J5RmFjZXRSdW50aW1lcyhmYWNldFJ1bnRpbWVzKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPGZJZHMubGVuZ3RoOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoZklkc1tpXS5lcXVhbHMoZmFjdG9yeUlkKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0gICAgICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgLy9ObyBtYXRjaC4KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gICAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWQgb2YgYSBzZXJ2ZXIgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBnaXZlbiBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIG9uIHRoZSBjbGllbnQgc2lkZS4KLSAgICogCi0gICAqIEBwYXJhbSBydW50aW1lSWQgaWQgb2YgYSBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIEByZXR1cm4gU3RyaW5nIHRoZSBpZCBvZiBhIHNlcnZlciB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLSAgICogb24gdGhlIGNsaWVudCBzaWRlLiBSZXR1cm5zIG51bGwgaWYgc3VjaCBhIHNlcnZlciB0eXBlIGNhbm5vdCBiZSBmb3VuZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEZpcnN0U3VwcG9ydGVkU2VydmVyRm9yQ2xpZW50U2lkZShTdHJpbmcgcnVudGltZUlkKQotICB7Ci0gICAgLy9HZXQgYWxsIHRoZSBDbGllbnRSdW50aW1lRGVzY3JpcHRvcnMgdGhhdCBwb2ludCB0byB0aGlzIHJ1bnRpbWVJZAotICAgIEl0ZXJhdG9yIGl0ZXIgPSByZWdpc3RyeS5jbGllbnRSdW50aW1lc18udmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpICAgCi0gICAgewotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChDbGllbnRSdW50aW1lRGVzY3JpcHRvcilpdGVyLm5leHQoKTsKLSAgICAgIC8vY2hlY2sgaWYgdGhpcyBjbGllbnRSdW50aW1lIHBvaW50cyB0byBydW50aW1lSWQKLSAgICAgIFN0cmluZyB0aGlzUnVudGltZUlkID0gZGVzYy5nZXRSdW50aW1lKCkuZ2V0SWQoKTsKLSAgICAgIGlmICh0aGlzUnVudGltZUlkLmVxdWFscyhydW50aW1lSWQpKQotICAgICAgewotICAgICAgICBTZXQgZmFjZXRSdW50aW1lcyA9IGdldFJ1bnRpbWVzKGRlc2MuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCkpOwotICAgICAgICBTdHJpbmdbXSBmYWN0b3J5SWRzID0gZ2V0U2VydmVyRmFjdG9yeUlkc0J5RmFjZXRSdW50aW1lcyhmYWNldFJ1bnRpbWVzKTsKLSAgICAgICAgaWYgKGZhY3RvcnlJZHMhPW51bGwgJiYgZmFjdG9yeUlkcy5sZW5ndGggPjApCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZmFjdG9yeUlkc1swXTsKLSAgICAgICAgfQotICAgICAgfSAgICAgICAgICAgIAotICAgIH0KLSAgICAKLSAgICAvL05vIHN1aXRhYmxlIHNlcnZlcnMgZm91bmQuIFJldHVybiBudWxsLgotICAgIHJldHVybiBudWxsOwotCi0gIH0KLSAgCi0KLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGdpdmVuIGNvbWJpbmF0aW9uIG9mIHNlcnZlciB0eXBlLCBXZWIgc2VydmljZSBydW50aW1lLCBhbmQgCi0gICAqIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlIGlzIHN1cHBvcnRlZC4gVXNlZCBmb3IgdmFsaWRhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBzZXJ2ZXJGYWN0b3J5SWQgaWQgb2YgYSBzZXJ2ZXIgdHlwZQotICAgKiBAcGFyYW0gcnVudGltZUlkIGlkIG9mIGEgV2ViIHNlcnZpY2UgcnVudGltZQotICAgKiBAcGFyYW0gY2xpZW50SW1wbElkIGlkIG9mIGEgV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBnaXZlbiBjb21iaW5hdGlvbiBvZiBzZXJ2ZXIgdHlwZSwgV2ViIHNlcnZpY2UgcnVudGltZSwgCi0gICAqIGFuZCBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZSBpcyBzdXBwb3J0ZWQuIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTZXJ2ZXJDbGllbnRSdW50aW1lVHlwZVN1cHBvcnRlZChTdHJpbmcgc2VydmVyRmFjdG9yeUlkLCBTdHJpbmcgcnVudGltZUlkLCBTdHJpbmcgY2xpZW50SW1wbElkKSAgCi0gIHsKLSAgICAvL0Vuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2xpZW50UnVudGltZSB0aGF0IHN1cHBvcnRzIHRoZSBnaXZlbiB0eXBlCi0gICAgU3RyaW5nW10gY2xpZW50UnVudGltZXMgPSBnZXRDbGllbnRSdW50aW1lc0J5VHlwZShjbGllbnRJbXBsSWQpOwotICAgIGlmIChjbGllbnRSdW50aW1lcyE9bnVsbCAmJiBjbGllbnRSdW50aW1lcy5sZW5ndGg+MCkKLSAgICB7Ci0gICAgICAvL0Vuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGVzZSBzZXJ2ZXIgcnVudGltZXMgc3VwcG9ydHMgdGhlIGdpdmVuIHNlcnZlcgotICAgICAgZm9yIChpbnQgaT0wOyBpPGNsaWVudFJ1bnRpbWVzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBDbGllbnRSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gZ2V0Q2xpZW50UnVudGltZURlc2NyaXB0b3JCeUlkKGNsaWVudFJ1bnRpbWVzW2ldKTsKLSAgICAgICAgaWYgKGRlc2MuZ2V0UnVudGltZSgpLmdldElkKCkuZXF1YWxzKHJ1bnRpbWVJZCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvL01hdGNoZWQgdHlwZSBhbmQgcnVudGltZS4gQ2hlY2sgdGhlIHNlcnZlci4KLSAgICAgICAgICBTdHJpbmdbXSBmYWN0b3J5SWRzID0gZ2V0U2VydmVyRmFjdG9yeUlkc0J5Q2xpZW50UnVudGltZShkZXNjLmdldElkKCkpOwotICAgICAgICAgIGZvciAoaW50IGo9MDsgajxmYWN0b3J5SWRzLmxlbmd0aDsgaisrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChmYWN0b3J5SWRzW2pdLmVxdWFscyhzZXJ2ZXJGYWN0b3J5SWQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy9ObyBtYXRjaCBmb3VuZC4gcmV0dXJuIGZhbHNlLgotICAgIHJldHVybiBmYWxzZTsKLSAgfSAgICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHtAbGluayBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZX0gaWRzIHRoYXQgc3VwcG9ydCB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICogYW5kIFdlYiBzZXJ2aWNlIHJ1bnRpbWUuCi0gICAqIAotICAgKiBAcGFyYW0gY2xpZW50SW1wbElkIGlkIG9mIGEgV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICogQHBhcmFtIHJ1bnRpbWVJZCBpZCBvZiBhIFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLSAgICogQHJldHVybiBTdHJpbmdbXSBhcnJheSBvZiB7QGxpbmsgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGV9IGlkcyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlCi0gICAqIGFuZCBXZWIgc2VydmljZSBydW50aW1lLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4gUmV0dXJucyBudWxsIGlmIG5vIGNsaWVudFJ1bnRpbWVzIHN1cHBvcnRpbmcKLSAgICogdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlIGNvdWxkIGJlIGZvdW5kLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRDbGllbnRQcm9qZWN0VGVtcGxhdGVzKFN0cmluZyBjbGllbnRJbXBsSWQsIFN0cmluZyBydW50aW1lSWQpCi0gIHsKLSAgICBTdHJpbmdbXSBjcklkcyA9IGdldENsaWVudFJ1bnRpbWVzQnlUeXBlKGNsaWVudEltcGxJZCk7Ci0gICAgaWYgKGNySWRzID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgQXJyYXlMaXN0IHRlbXBsYXRlSWRMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3JJZHMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IGdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChjcklkc1tpXSk7Ci0gICAgICBTdHJpbmcgdGhpc1J1bnRpbWVJZCA9IGRlc2MuZ2V0UnVudGltZSgpLmdldElkKCk7Ci0gICAgICBpZiAodGhpc1J1bnRpbWVJZC5lcXVhbHMocnVudGltZUlkKSkKLSAgICAgIHsKLSAgICAgICAgLy9HZXQgdGhlIHRlbXBsYXRlcyBmb3IgdGhpcyBjbGllbnRSdW50aW1lCi0gICAgICAgIFNldCB0ZW1wbGF0ZXMgPSBGYWNldE1hdGNoQ2FjaGUuZ2V0SW5zdGFuY2UoKS5nZXRUZW1wbGF0ZXNGb3JDbGllbnRSdW50aW1lKGRlc2MuZ2V0SWQoKSk7Ci0gICAgICAgIAotICAgICAgICAvL0FkZCB0aGUgdGVtcGxhdGUgaWRzIHRvIHRoZSBsaXN0IGlmIHRoZXkgaGF2ZSBub3QgYWxyZWFkeSBiZWVuIGFkZGVkCi0gICAgICAgIEl0ZXJhdG9yIGl0ciA9IHRlbXBsYXRlcy5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaXRyLmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIElGYWNldGVkUHJvamVjdFRlbXBsYXRlIHRlbXBsYXRlID0gKElGYWNldGVkUHJvamVjdFRlbXBsYXRlKWl0ci5uZXh0KCk7Ci0gICAgICAgICAgaWYgKCF0ZW1wbGF0ZUlkTGlzdC5jb250YWlucyh0ZW1wbGF0ZS5nZXRJZCgpKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZUlkTGlzdC5hZGQodGVtcGxhdGUuZ2V0SWQoKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICB9ICAKLSAgICAKLSAgICByZXR1cm4gKFN0cmluZ1tdKXRlbXBsYXRlSWRMaXN0LnRvQXJyYXkobmV3IFN0cmluZ1tde30pOyAgICAKLSAgfSAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4ge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfSBzdXBwb3J0cyB0aGUgZ2l2ZW4gCi0gICAqIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlIGFuZCBXZWIgc2VydmljZSBydW50aW1lLgotICAgKiAKLSAgICogQHBhcmFtIGNsaWVudEltcGxJZCBpZCBvZiBhIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlCi0gICAqIEBwYXJhbSBydW50aW1lSWQgaWQgb2YgYSBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIEBwYXJhbSB0ZW1wbGF0ZUlkIGlkIG9mIGEge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfQotICAgKiBAcmV0dXJuIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGdpdmVuIHtAbGluayBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZX0gc3VwcG9ydHMgdGhlIGdpdmVuIAotICAgKiBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZSBhbmQgV2ViIHNlcnZpY2UgcnVudGltZS4gUmV0dXJucyA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLiAKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBkb2VzQ2xpZW50VHlwZUFuZFJ1bnRpbWVTdXBwb3J0VGVtcGxhdGUoU3RyaW5nIGNsaWVudEltcGxJZCwgU3RyaW5nIHJ1bnRpbWVJZCwgU3RyaW5nIHRlbXBsYXRlSWQpCi0gIHsKLSAgICBTdHJpbmdbXSBjcklkcyA9IGdldENsaWVudFJ1bnRpbWVzQnlUeXBlKGNsaWVudEltcGxJZCk7Ci0gICAgaWYgKGNySWRzID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3JJZHMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IGdldENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yQnlJZChjcklkc1tpXSk7Ci0gICAgICBTdHJpbmcgdGhpc1J1bnRpbWVJZCA9IGRlc2MuZ2V0UnVudGltZSgpLmdldElkKCk7Ci0gICAgICBpZiAodGhpc1J1bnRpbWVJZC5lcXVhbHMocnVudGltZUlkKSkKLSAgICAgIHsKLSAgICAgICAgLy9HZXQgdGhlIHRlbXBsYXRlcyBmb3IgdGhpcyBjbGllbnRSdW50aW1lCi0gICAgICAgIFNldCB0ZW1wbGF0ZXMgPSBGYWNldE1hdGNoQ2FjaGUuZ2V0SW5zdGFuY2UoKS5nZXRUZW1wbGF0ZXNGb3JDbGllbnRSdW50aW1lKGNySWRzW2ldKTsKLSAgICAgICAgCi0gICAgICAgIC8vQ2hlY2sgaWYgdGhlIHRlbXBsYXRlIGlkcyBjb250YWlucyB0aGUgdGVtcGxhdGUgd2UncmUgY2hlY2tpbmcgZm9yCi0gICAgICAgIEl0ZXJhdG9yIGl0ciA9IHRlbXBsYXRlcy5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaXRyLmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIElGYWNldGVkUHJvamVjdFRlbXBsYXRlIHRlbXBsYXRlID0gKElGYWNldGVkUHJvamVjdFRlbXBsYXRlKWl0ci5uZXh0KCk7Ci0gICAgICAgICAgaWYgKHRlbXBsYXRlLmdldElkKCkuZXF1YWxzKHRlbXBsYXRlSWQpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgfSAgCi0gICAgCi0gICAgcmV0dXJuIGZhbHNlOyAgICAKLSAgfSAgCi0gIAotCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiB7QGxpbmsgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGV9IAotICAgKiBzdXBwb3J0cyB0aGUgZ2l2ZW4gY2xpZW50UnVudGltZQotICAgKiAgCi0gICAqIEBwYXJhbSBjbGllbnRSdW50aW1lSWQgaWQgb2YgYSBjbGllbnRSdW50aW1lCi0gICAqIEBwYXJhbSB0ZW1wbGF0ZUlkIGlkIG9mIGEge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfQotICAgKiBAcmV0dXJuIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGdpdmVuIHtAbGluayBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZX0gc3VwcG9ydHMgdGhlIGdpdmVuIAotICAgKiBjbGllbnRSdW50aW1lLiBSZXR1cm5zIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZG9lc0NsaWVudFJ1bnRpbWVTdXBwb3J0VGVtcGxhdGUoU3RyaW5nIGNsaWVudFJ1bnRpbWVJZCwgU3RyaW5nIHRlbXBsYXRlSWQpCi0gIHsKLSAgICAvL0dldCB0aGUgdGVtcGxhdGVzIGZvciB0aGlzIGNsaWVudFJ1bnRpbWUKLSAgICBTZXQgdGVtcGxhdGVzID0gRmFjZXRNYXRjaENhY2hlLmdldEluc3RhbmNlKCkuZ2V0VGVtcGxhdGVzRm9yQ2xpZW50UnVudGltZShjbGllbnRSdW50aW1lSWQpOwotICAgIElGYWNldGVkUHJvamVjdFRlbXBsYXRlIGNoZWNraW5nVGVtcGxhdGUgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRUZW1wbGF0ZSh0ZW1wbGF0ZUlkKTsKLSAgICByZXR1cm4gdGVtcGxhdGVzLmNvbnRhaW5zKGNoZWNraW5nVGVtcGxhdGUpOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgbGFiZWxzIGFuZCBpZHMgb2YgYWxsIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlcy4gCi0gICAqIFVzZWQgdG8gcG9wdWxhdGUgdGhlIFdlYiBzZXJ2aWNlIGNsaWVudCB0eXBlIGNvbWJvIGJveCBvbgotICAgKiBwYWdlIDEgb2YgdGhlIFdlYiBzZXJ2aWNlIHdpemFyZCBhbmQgV2ViIHNlcnZpY2UgY2xpZW50IHdpemFyZC4KLSAgICogQHJldHVybiB7QGxpbmsgTGFiZWxzQW5kSWRzfQotICAgKi8gIAotICBwdWJsaWMgc3RhdGljIExhYmVsc0FuZElkcyBnZXRDbGllbnRUeXBlTGFiZWxzKCkKLSAgewotICAgIAotICAgIExhYmVsc0FuZElkcyBsYWJlbElkcyA9IG5ldyBMYWJlbHNBbmRJZHMoKTsKLSAgICBTdHJpbmdbXSBpZHNBcnJheSA9IG5ldyBTdHJpbmdbMF07Ci0gICAgU3RyaW5nW10gbGFiZWxzQXJyYXkgPSBuZXcgU3RyaW5nWzBdOwotICAgIGxhYmVsSWRzLnNldElkc18oaWRzQXJyYXkpOwotICAgIGxhYmVsSWRzLnNldExhYmVsc18obGFiZWxzQXJyYXkpOwotICAKLSAgICBBcnJheUxpc3QgaWRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIEFycmF5TGlzdCBsYWJlbHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIAotICAgIEl0ZXJhdG9yIGl0ciA9IHJlZ2lzdHJ5LmNsaWVudFJ1bnRpbWVzXy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlKGl0ci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgQ2xpZW50UnVudGltZURlc2NyaXB0b3IgZGVzYyA9IChDbGllbnRSdW50aW1lRGVzY3JpcHRvcilpdHIubmV4dCgpOwotICAgICAgV2ViU2VydmljZUNsaWVudEltcGwgdGhpc0NsaWVudEltcGwgPSBkZXNjLmdldENsaWVudEltcGxlbWVudGF0aW9uVHlwZSgpOwotICAgICAgaWYgKCFpZHMuY29udGFpbnModGhpc0NsaWVudEltcGwuZ2V0SWQoKSkpCi0gICAgICB7Ci0gICAgICAgIGlkcy5hZGQodGhpc0NsaWVudEltcGwuZ2V0SWQoKSk7Ci0gICAgICAgIGxhYmVscy5hZGQodGhpc0NsaWVudEltcGwuZ2V0TGFiZWwoKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGlkcy5zaXplKCkgPiAwKQotICAgIHsKLSAgICAgIGlkc0FycmF5ID0gKFN0cmluZ1tdKSBpZHMudG9BcnJheShuZXcgU3RyaW5nWzBdKTsKLSAgICAgIGxhYmVsc0FycmF5ID0gKFN0cmluZ1tdKSBsYWJlbHMudG9BcnJheShuZXcgU3RyaW5nWzBdKTsKLSAgICAgIGxhYmVsSWRzLnNldElkc18oaWRzQXJyYXkpOwotICAgICAgbGFiZWxJZHMuc2V0TGFiZWxzXyhsYWJlbHNBcnJheSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGxhYmVsSWRzOwotCi0gIH0gIAotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYWxsIHNlcnZlciB0eXBlIGlkcyBmb3Igd2hpY2ggdGhlcmUgYXJlIGNvbmZpZ3VyZWQgc2VydmVyIHJ1bnRpbWVzCi0gICAqIHByZXNlbnQgaW4gdGhlIHdvcmtzcGFjZS4KLSAgICogCi0gICAqIEByZXR1cm4gU3RyaW5nW10gYXJyYXkgb2Ygc2VydmVyIHR5cGUgaWRzIGZvciB3aGljaCB0aGVyZSBhcmUgY29uZmlndXJlZCBzZXJ2ZXIgcnVudGltZXMKLSAgICogcHJlc2VudCBpbiB0aGUgd29ya3NwYWNlLiBUaGUgYXJyYXkgbWF5IGhhdmUgMCBlbGVtZW50cy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QWxsU2VydmVyRmFjdG9yeUlkc1dpdGhSdW50aW1lcygpCi0gIHsKLSAgICBBcnJheUxpc3QgZmlkcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBJU2VydmVyVHlwZVtdIHN0cyA9IFNlcnZlckNvcmUuZ2V0U2VydmVyVHlwZXMoKTsKLSAgICBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVJ1bnRpbWVbXSBydHMgPSBTZXJ2ZXJDb3JlLmdldFJ1bnRpbWVzKCk7Ci0gICAgCi0gICAgZm9yIChpbnQgaT0wOyBpPHN0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBJU2VydmVyVHlwZSBzdCA9IHN0c1tpXTsKLSAgICAgIGZvciAoaW50IGo9MDsgajxydHMubGVuZ3RoOyBqKyspCi0gICAgICB7Ci0gICAgCWlmIChzdCA9PSBudWxsIHx8IHN0LmdldFJ1bnRpbWVUeXBlKCkgPT0gbnVsbCkgYnJlYWs7ICAgIAkgIAotICAgICAgICBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVJ1bnRpbWUgcnQgPSBydHNbal07Ci0gICAgICAgIC8vIElmIHRoZSBzZXJ2ZXIgdHlwZSBoYXMgdGhlIHNhbWUgcnVudGltZSB0eXBlIGFzIHRoaXMgcnVudGltZSwgYWRkIGl0IHRvIHRoZSBsaXN0Ci0gICAgICAgIFN0cmluZyBzZXJ2ZXJUeXBlUnVudGltZVR5cGVJZCA9IHN0LmdldFJ1bnRpbWVUeXBlKCkuZ2V0SWQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChydCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgIAlJUnVudGltZVR5cGUgcnRUeXBlID0gcnQuZ2V0UnVudGltZVR5cGUoKTsKLSAgICAgICAgCWlmIChydFR5cGUgIT0gbnVsbCkKLSAgICAgICAgCXsKLQkJICAgICAgICBTdHJpbmcgcnVudGltZVJ1bnRpbWVUeXBlSWQgPSBydFR5cGUuZ2V0SWQoKTsKLQkJICAgICAgICBpZiAoc2VydmVyVHlwZVJ1bnRpbWVUeXBlSWQuZXF1YWxzKHJ1bnRpbWVSdW50aW1lVHlwZUlkKSkKLQkJICAgICAgICB7Ci0JCSAgICAgICAgICBpZiAoIWZpZHMuY29udGFpbnMoc3QuZ2V0SWQoKSkpCi0JCSAgICAgICAgICB7Ci0JCSAgICAgICAgICAgIGZpZHMuYWRkKHN0LmdldElkKCkpOwotCQkgICAgICAgICAgfQotCQkgICAgICAgIH0KLSAgICAgICAgCX0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgIAotICAgIHJldHVybiAoU3RyaW5nW10pZmlkcy50b0FycmF5KG5ldyBTdHJpbmdbMF0pOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgbmFtZXMgb2YgYWxsIHByb2plY3RzIGluIHRoZSB3b3Jrc3BhY2Ugd2hpY2ggc3VwcG9ydCB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgY2xpZW50IAotICAgKiBpbXBsZW1lbnRhdGlvbiB0eXBlIGFuZCBXZWIgc2VydmljZSBydW50aW1lLgotICAgKiAKLSAgICogQHBhcmFtIHR5cGVJZCBpZCBvZiBhIFdlYiBzZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0eXBlCi0gICAqIEBwYXJhbSBydW50aW1lSWQgaWQgb2YgYSBXZWIgc2VydmljZSBydW50aW1lCi0gICAqIEByZXR1cm4gU3RyaW5nW10gYXJyYXkgb2YgcHJvamVjdCBuYW1lcy4gVGhlIGFycmF5IG1heSBoYXZlIDAgZWxlbWVudHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldFByb2plY3RzRm9yQ2xpZW50VHlwZUFuZFJ1bnRpbWUoU3RyaW5nIHR5cGVJZCwgU3RyaW5nIHJ1bnRpbWVJZCkKLSAgewotICAgIElQcm9qZWN0W10gcHJvamVjdHMgPSBGYWNldFV0aWxzLmdldEFsbFByb2plY3RzKCk7Ci0gICAgQXJyYXlMaXN0IHZhbGlkUHJvamVjdHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgCi0gICAgZm9yIChpbnQgaT0wOyBpPHByb2plY3RzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgaWYgKGRvZXNDbGllbnRUeXBlQW5kUnVudGltZVN1cHBvcnRQcm9qZWN0KHR5cGVJZCwgcnVudGltZUlkLCBwcm9qZWN0c1tpXS5nZXROYW1lKCkpKQotICAgICAgewotICAgICAgICB2YWxpZFByb2plY3RzLmFkZChwcm9qZWN0c1tpXS5nZXROYW1lKCkpOyAgICAgICAgCi0gICAgICB9ICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiAoU3RyaW5nW10pdmFsaWRQcm9qZWN0cy50b0FycmF5KG5ldyBTdHJpbmdbMF0pOwotICAgIAotICB9ICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBwcm9qZWN0IHN1cHBvcnRzIHRoZSBnaXZlbiBXZWIgc2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gdHlwZSAKLSAgICogYW5kIFdlYiBzZXJ2aWNlIHJ1bnRpbWUuCi0gICAqIAotICAgKiBAcGFyYW0gdHlwZUlkIGlkIG9mIGEgV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUKLSAgICogQHBhcmFtIHJ1bnRpbWVJZCBpZCBvZiBhIFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLSAgICogQHBhcmFtIHByb2plY3ROYW1lIG5hbWUgb2YgYW4gSVByb2plY3QgaW4gdGhlIHdvcmtzcGFjZQotICAgKiBAcmV0dXJuIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHByb2plY3Qgc3VwcG9ydHMgdGhlIGdpdmVuIFdlYiBzZXJ2aWNlIHR5cGUgYW5kIAotICAgKiBXZWIgc2VydmljZSBydW50aW1lLiBSZXR1cm5zIDxjb2RlPmZhbHNlPC9jb2RlPgotICAgKiA8dWw+IAotICAgKiA8bGk+aWYgdGhlIHByb2plY3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZ2l2ZW4gV2ViIHNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIHR5cGUgYW5kIAotICAgKiBXZWIgc2VydmljZSBydW50aW1lIG9yPC9saT4KLSAgICogPGxpPmlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0IG9yPC9saT4KLSAgICogPGxpPmlmIHByb2plY3ROYW1lIGlzIG51bGwgb3IgZW1wdHk8L2xpPgotICAgKiA8L3VsPgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGRvZXNDbGllbnRUeXBlQW5kUnVudGltZVN1cHBvcnRQcm9qZWN0KFN0cmluZyB0eXBlSWQsIFN0cmluZyBydW50aW1lSWQsIFN0cmluZyBwcm9qZWN0TmFtZSkKLSAgewotICAgIFN0cmluZ1tdIGRlc2NzID0gZ2V0Q2xpZW50UnVudGltZXNCeVR5cGUodHlwZUlkKTsKLSAgICBmb3IgKGludCBqID0gMDsgaiA8IGRlc2NzLmxlbmd0aDsgaisrKQotICAgIHsKLSAgICAgIENsaWVudFJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSBnZXRDbGllbnRSdW50aW1lRGVzY3JpcHRvckJ5SWQoZGVzY3Nbal0pOwotICAgICAgaWYgKGRlc2MuZ2V0UnVudGltZSgpLmdldElkKCkuZXF1YWxzKHJ1bnRpbWVJZCkpCi0gICAgICB7Ci0gICAgICAgIGlmIChkb2VzQ2xpZW50UnVudGltZVN1cHBvcnRQcm9qZWN0KGRlc2NzW2pdLCBwcm9qZWN0TmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgCi0gIH0gIAotICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBwcm9qZWN0IHN1cHBvcnRzIHRoZSBnaXZlbiBjbGllbnRSdW50aW1lLgotICAgKiBAcGFyYW0gY2xpZW50UnVudGltZUlkIGlkIG9mIGEgY2xpZW50UnVudGltZQotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgbmFtZSBvZiBhbiBJUHJvamVjdCBpbiB0aGUgd29ya3NwYWNlCi0gICAqIEByZXR1cm4gYm9vbGVhbiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgcHJvamVjdCBzdXBwb3J0cyB0aGUgZ2l2ZW4KLSAgICogY2xpZW50UnVudGltZS4gUmV0dXJucyA8Y29kZT5mYWxzZTwvY29kZT4KLSAgICogPHVsPiAKLSAgICogPGxpPmlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGdpdmVuIGNsaWVudFJ1bnRpbWUgb3I8L2xpPgotICAgKiA8bGk+aWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3Qgb3I8L2xpPgotICAgKiA8bGk+aWYgcHJvamVjdE5hbWUgaXMgbnVsbCBvciBlbXB0eTwvbGk+Ci0gICAqIDwvdWw+Ci0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZG9lc0NsaWVudFJ1bnRpbWVTdXBwb3J0UHJvamVjdChTdHJpbmcgY2xpZW50UnVudGltZUlkLCBTdHJpbmcgcHJvamVjdE5hbWUpCi0gIHsKLSAgICBGYWNldE1hdGNoZXIgZm0gPSBGYWNldE1hdGNoQ2FjaGUuZ2V0SW5zdGFuY2UoKS5nZXRNYXRjaEZvclByb2plY3QodHJ1ZSwgY2xpZW50UnVudGltZUlkLCBwcm9qZWN0TmFtZSk7Ci0gICAgaWYgKGZtICE9IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIGZtLmlzTWF0Y2goKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgCi0gIC8vVXRpbGl0aWVzIHVzZWQgYnkgdGhlIFNlcnZlclJ1bnRpbWVQcmVmZXJlbmNlUGFnZQotICAKLSAgcHJpdmF0ZSBzdGF0aWMgU2VsZWN0aW9uTGlzdENob2ljZXMgc2VydmVyVG9SdW50aW1lVG9KMkVFXzsKLSAgcHJpdmF0ZSBzdGF0aWMgSGFzaHRhYmxlIHNlcnZlckZhY3RvcnlJZEJ5TGFiZWxfOwotICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgcnVudGltZUlkQnlMYWJlbF87Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUge0BsaW5rIFNlbGVjdGlvbkxpc3RDaG9pY2VzfSBkYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIAotICAgKiBzZXJ2ZXIgdHlwZSA+IFdlYiBzZXJ2aWNlIHJ1bnRpbWUgPiBKMkVFIGNhc2NhZGluZyBsaXN0cyAuCi0gICAqIHtAbGluayBTZWxlY3Rpb25MaXN0Q2hvaWNlc30gaXMgYSBkYXRhIHN0cnVjdHVyZSAgd2hpY2ggaXMgbGlrZSBhIGNhc2NhZGluZwotICAgKiBzZXQgb2YgbGlzdHMgdXNlZnVsIGZvciBwb3B1bGF0aW5nIGEgZ3JvdXAgb2YgY29tYm8gYm94ZXMgaW4gd2hpY2ggdGhlIAotICAgKiBzZWxlY3Rpb24gaW4gYSBnaXZlbiBjb21ibyBib3ggZGV0ZXJtaW5lcyB0aGUgbGlzdCBvZiBpdGVtcyB1c2VkIHRvIHBvcHVsYXRlCi0gICAqIHRoZSBjb21ibyBib3ggYmVsb3cgaXQuIFRoZSBTZXJ2ZXIgUnVudGltZSBwcmVmZXJlbmNlIHBhZ2UgY29udGFpbnMgdHdvIGNvbWJvCi0gICAqIGJveGVzOiBvbmUgZm9yIHNlcnZlciB0eXBlcyBhbmQsIGJlbG93IGl0LCBvbmUgZm9yIFdlYiBzZXJ2aWNlIHJ1bnRpbWVzLgotICAgKiBUaGUgc2VydmVyIHR5cGUgY29tYm8gYm94IGlzIG1lYW50IHRvIGNvbnRhaW4gdGhlIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBzZXJ2ZXIgdHlwZXMKLSAgICogdGhhdCBzdXBwb3J0IGF0IGxlYXN0IG9uZSBXZWIgc2VydmljZSBydW50aW1lIG9uIGVpdGhlciB0aGUgY2xpZW50IG9yIHNlcnZpY2Ugc2lkZS4gCi0gICAqIFRoZSBXZWIgc2VydmljZSBydW50aW1lIGNvbWJvIGJveCBpcyBtZWFudCB0byBjb250YWluIHRoZSBzdWJzZXQgb2YgV2ViIHNlcnZpY2UgcnVudGltZXMKLSAgICogc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIgdHlwZSBzZWxlY3RlZCBpbiB0aGUgc2VydmVyIHR5cGUgY29tYm8gYm94LgotICAgKiBUaGUgU2VsZWN0aW9uTGlzdENob2ljZXMgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QgaGFzIHRocmVlIGxpc3RzOiBzZXJ2ZXIgdHlwZXMsIFdlYiBzZXJ2aWNlIHJ1bnRpbWVzLAotICAgKiBhbmQgSjJFRSBsZXZlbHMuIFRoZSBmaXJzdCB0d28gbGlzdHMgY29ycmVzcG9uZCB0byB0aGUgY29tYm8gYm94ZXMgb24gdGhlIHByZWZlcmVuY2UKLSAgICogcGFnZSBhbmQgYXJlIHVzZWQgdG8gcG9wdWxhdGUgdGhlbS4gVGhlIEoyRUUgbGV2ZWxzIGxpc3QgaXMgYSBoaXN0b3JpY2FsIHJlbW5hbnQgZnJvbQotICAgKiB3aGVuIEoyRUUgbGV2ZWxzIHVzZWQgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSBwcmVmZXJlbmNlIHBhZ2UuIEl0IHJlbWFpbnMgaW4gdGhpcyAKLSAgICogZGF0YSBzdHJ1Y3R1cmUgd2l0aCBzb21lIGhhcmQtY29kZWQgdmFsdWVzIGJ1dCBpcyBub3QgcmVuZGVyZWQgdG8gdGhlIHVzZXIuIAotICAgKiAKLSAgICogQHJldHVybiBTZWxlY3Rpb25MaXN0Q2hvaWNlcyByZXByZXNlbnRpbmcgdGhlIHNlcnZlciB0eXBlID4gV2ViIHNlcnZpY2UgcnVudGltZSA+IEoyRUUgY2FzY2FkaW5nIGxpc3RzCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFNlbGVjdGlvbkxpc3RDaG9pY2VzIGdldFNlcnZlclRvUnVudGltZVRvSjJFRSgpCi0gIHsKLSAgICBpZiAoc2VydmVyVG9SdW50aW1lVG9KMkVFXyE9bnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gc2VydmVyVG9SdW50aW1lVG9KMkVFXzsKLSAgICB9Ci0gICAgCi0gICAgLy9UT0RPIChzZWUgYnVnIDExNjAyNSk6IEluc3RlYWQgb2YgYWxsIHNlcnZlciB0eXBlIGlkcywgd2Ugc2hvdWxkIGJlIGNhbGN1bGF0aW5nIHRoZSBzZXQgb2Ygc2VydmVyCi0gICAgLy90eXBlcyB0aGF0IHN1cHBvcnQgYXQgbGVhc3Qgb25lIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgb24gZWl0aGVyIHRoZSBjbGllbnQgb3Igc2VydmljZSBzaWRlLgotICAgIC8vR2V0dGluZyBhbGwgc2VydmVyIHR5cGVzIGZvciBub3cuCi0gICAgU3RyaW5nW10gc2VydmVycyA9IGdldEFsbFNlcnZlckZhY3RvcnlJZHMoKTsKLSAgICAKLSAgICBTZWxlY3Rpb25MaXN0IHNlcnZlcnNMaXN0ID0gbmV3IFNlbGVjdGlvbkxpc3Qoc2VydmVycywgMCk7Ci0gICAgVmVjdG9yIGNob2ljZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZm9yIChpbnQgaT0wOyBpPHNlcnZlcnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgY2hvaWNlcy5hZGQoZ2V0UnVudGltZUNob2ljZXMoc2VydmVyc1tpXSkpOwotICAgIH0KLSAgICBzZXJ2ZXJUb1J1bnRpbWVUb0oyRUVfID0gbmV3IFNlbGVjdGlvbkxpc3RDaG9pY2VzKHNlcnZlcnNMaXN0LCBjaG9pY2VzKTsKLSAgICByZXR1cm4gc2VydmVyVG9SdW50aW1lVG9KMkVFXzsKLSAgICAKLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIFNlbGVjdGlvbkxpc3RDaG9pY2VzIGdldFJ1bnRpbWVDaG9pY2VzKFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQpCi0gIHsKLQkvL1RPRE8gKHNlZSBidWcgMTE2MDI1KTogSW5zdGVhZCBvZiBhbGwgV2ViIHNlcnZpY2UgcnVudGltZXMsIHdlIHNob3VsZCBiZSAKLQkvL2NhbGN1bGF0aW5nIHRoZSBzdWJzZXQgb2YgV2ViIHNlcnZpY2UgcnVudGltZXMgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIgdHlwZQotCS8vd2l0aCBpZCBlcXVhbCB0byBzZXJ2ZXJGYWN0b3J5SWQuIEdldHRpbmcgYWxsIHRoZSBXZWIgc2VydmljZSBydW50aW1lcyBmb3Igbm93LgotICAgIFNldCBydW50aW1lcyA9IHJlZ2lzdHJ5LnJ1bnRpbWVzXy5rZXlTZXQoKTsKLSAgICBJdGVyYXRvciBpdHIgPSByZWdpc3RyeS5ydW50aW1lc18ua2V5U2V0KCkuaXRlcmF0b3IoKTsKLSAgICBTdHJpbmdbXSBydW50aW1lSWRzID0gbmV3IFN0cmluZ1tydW50aW1lcy5zaXplKCldOyAgICAKLSAgICBpbnQgaSA9IDA7Ci0gICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgU3RyaW5nIHJ1bnRpbWVJZCA9IChTdHJpbmcpaXRyLm5leHQoKTsKLSAgICAgIHJ1bnRpbWVJZHNbaV0gPSBydW50aW1lSWQ7Ci0gICAgICBpKys7ICAgICAKLSAgICB9Ci0KLSAgICBTZWxlY3Rpb25MaXN0IHJ1bnRpbWVzTGlzdCA9IG5ldyBTZWxlY3Rpb25MaXN0KHJ1bnRpbWVJZHMsIDApOwotICAgIFZlY3RvciBjaG9pY2VzID0gbmV3IFZlY3RvcigpOwotICAgIGZvciAoaW50IGo9MDsgajxydW50aW1lSWRzLmxlbmd0aDsgaisrKQotICAgIHsKLSAgICAgIGNob2ljZXMuYWRkKGdldEoyRUVDaG9pY2VzKHJ1bnRpbWVJZHNbal0pKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBTZWxlY3Rpb25MaXN0Q2hvaWNlcyhydW50aW1lc0xpc3QsIGNob2ljZXMpOyAgICAKLSAgfSAgCi0gIAotICBwcml2YXRlIHN0YXRpYyBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBnZXRKMkVFQ2hvaWNlcyhTdHJpbmcgcnVudGltZUlkKQotICB7Ci0gICAgLy9KMkVFIGxldmVscyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBTZXJ2ZXIgUnVudGltZSBwcmVmZXJlbmNlIHBhZ2UuCi0gICAgLy9SZXR1cm4gc29tZSBoYXJkIGNvZGVkIHZhbHVlcy4gVGhlc2Ugd2lsbCBub3QgYmUgcmVuZGVyZWQgb24gdGhlIHByZWZlcmVuY2UgcGFnZS4KLSAgICBTdHJpbmdbXSBqMmVlVmVyc2lvbnMgPSBuZXcgU3RyaW5nW117IjEzIiwgIjE0In07Ci0gICAgU2VsZWN0aW9uTGlzdCBqMmVlVmVyc2lvbnNMaXN0ID0gbmV3IFNlbGVjdGlvbkxpc3QoajJlZVZlcnNpb25zLCAwKTsKLSAgICByZXR1cm4gbmV3IFNlbGVjdGlvbkxpc3RDaG9pY2VzKGoyZWVWZXJzaW9uc0xpc3QsIG51bGwpOyAgICAgICAgCi0gIH0gIAotICAKLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nW10gZ2V0QWxsU2VydmVyRmFjdG9yeUlkcygpCi0gIHsKLSAgICAvL1RPRE8gKHNlZSBidWcgMTE2MDI1KTogSW5zdGVhZCBvZiBhbGwgc2VydmVyIHR5cGUgaWRzLCB3ZSBzaG91bGQgYmUgY2FsY3VsYXRpbmcgdGhlIHNldCBvZiBzZXJ2ZXIKLQkvL3R5cGVzIHRoYXQgc3VwcG9ydCBhdCBsZWFzdCBvbmUgV2ViIHNlcnZpY2UgcnVudGltZSBvbiBlaXRoZXIgdGhlIGNsaWVudCBvciBzZXJ2aWNlIHNpZGUuCi0JLy9SZXR1cm4gYWxsIHNlcnZlciB0eXBlIGlkcyBmb3Igbm93LgotICAgIEFycmF5TGlzdCBpZHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgaWYgKHNlcnZlckZhY3RvcnlJZEJ5TGFiZWxfID09IG51bGwpCi0gICAgewotICAgICAgc2VydmVyRmFjdG9yeUlkQnlMYWJlbF8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICBJU2VydmVyVHlwZVtdIHNlcnZlclR5cGVzID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJUeXBlcygpOwotICAgICAgZm9yIChpbnQgaT0wOyBpPHNlcnZlclR5cGVzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBTdHJpbmcgaWQgPSBzZXJ2ZXJUeXBlc1tpXS5nZXRJZCgpOwotICAgICAgICBTdHJpbmcgbGFiZWwgPSBnZXRTZXJ2ZXJMYWJlbEJ5SWQoaWQpOwotICAgICAgICBzZXJ2ZXJGYWN0b3J5SWRCeUxhYmVsXy5wdXQobGFiZWwsIGlkKTsKLSAgICAgICAgaWRzLmFkZChpZCk7Ci0gICAgICB9ICAgIAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgSXRlcmF0b3IgZmlkcyA9ICBzZXJ2ZXJGYWN0b3J5SWRCeUxhYmVsXy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGZpZHMuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBTdHJpbmcgZmlkID0gKFN0cmluZylmaWRzLm5leHQoKTsKLSAgICAgICAgaWRzLmFkZChmaWQpOwotICAgICAgfSAgICAgICAgICAgCi0gICAgfQotICAgIAotICAgIGlmIChpZHMuc2l6ZSgpID4gMCkKLSAgICB7Ci0gICAgICBTdHJpbmdbXSBzZXJ2ZXJGYWN0b3J5SWRzID0gKFN0cmluZ1tdKWlkcy50b0FycmF5KG5ldyBTdHJpbmdbMF0pOwotICAgICAgcmV0dXJuIHNlcnZlckZhY3RvcnlJZHM7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBudWxsOwotICB9ICAKLSAgICAKLSAgLyoqCi0gICAqIFJldHVybnMgYSBzZXJ2ZXIgdHlwZSBpZCBnaXZlbiB0aGUgc2VydmVyIHR5cGUncyBsYWJlbAotICAgKiBAcGFyYW0gbGFiZWwgc2VydmVyIHR5cGUgbGFiZWwKLSAgICogQHJldHVybiBzZXJ2ZXIgdHlwZSBpZCBvciBudWxsIGlmIG5vIHNlcnZlciB0eXBlIHdpdGggdGhlIGdpdmVuIAotICAgKiBsYWJlbCBpcyBmb3VuZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNlcnZlckZhY3RvcnlJZChTdHJpbmcgbGFiZWwpCi0gIHsKLSAgICBpZiAobGFiZWw9PW51bGwgfHwgbGFiZWwubGVuZ3RoKCk9PTApCi0gICAgICByZXR1cm4gbnVsbDsKLSAgICAKLSAgICBpZiAoc2VydmVyRmFjdG9yeUlkQnlMYWJlbF8gPT0gbnVsbCkKLSAgICB7Ci0gICAgICBnZXRBbGxTZXJ2ZXJGYWN0b3J5SWRzKCk7Ci0gICAgfQotICAgIAotICAgIGlmIChzZXJ2ZXJGYWN0b3J5SWRCeUxhYmVsXy5jb250YWluc0tleShsYWJlbCkpCi0gICAgewotICAgICAgcmV0dXJuIChTdHJpbmcpc2VydmVyRmFjdG9yeUlkQnlMYWJlbF8uZ2V0KGxhYmVsKTsgIAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSAgICAgICAKLSAgfSAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyBhIFdlYiBzZXJ2aWNlIHJ1bnRpbWUncyBpZCBnaXZlbiBpdHMgbGFiZWwgCi0gICAqIEBwYXJhbSBsYWJlbCBXZWIgc2VydmljZSBydW50aW1lIGxhYmVsCi0gICAqIEByZXR1cm4gV2ViIHNlcnZpY2UgcnVudGltZSBpZCBvciBudWxsIGlmIG5vCi0gICAqIFdlYiBzZXJ2aWNlIHJ1bnRpbWUgd2l0aCB0aGUgZ2l2ZW4gbGFiZWwgaXMgZm91bmQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRSdW50aW1lSWQoU3RyaW5nIGxhYmVsKQotICB7Ci0gICAgCi0gICAgaWYgKGxhYmVsPT1udWxsIHx8IGxhYmVsLmxlbmd0aCgpPT0wKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgCi0gICAgaWYgKHJ1bnRpbWVJZEJ5TGFiZWxfID09IG51bGwpCi0gICAgewotICAgICAgcnVudGltZUlkQnlMYWJlbF8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICBJdGVyYXRvciBpdGVyID0gcmVnaXN0cnkucnVudGltZXNfLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFJ1bnRpbWVEZXNjcmlwdG9yIGRlc2MgPSAoUnVudGltZURlc2NyaXB0b3IpaXRlci5uZXh0KCk7Ci0gICAgICAgIHJ1bnRpbWVJZEJ5TGFiZWxfLnB1dChkZXNjLmdldExhYmVsKCksIGRlc2MuZ2V0SWQoKSk7ICAgICAgICAKLSAgICAgIH0gICAgICAKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIChTdHJpbmcpcnVudGltZUlkQnlMYWJlbF8uZ2V0KGxhYmVsKTsgICAgCi0gIH0gICAgCi0gIAotICAgIAotICAvKioKLSAgICogUmV0dXJucyBhIHNldCBvZiBmYWNldCBydW50aW1lcyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuCi0gICAqIHJlcXVpcmVkIGZhY2V0IHZlcnNpb25zLgotICAgKiBAcGFyYW0gcmVxdWlyZWRGYWNldFZlcnNpb25zIGFuIGFycmF5IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgUmVxdWlyZWRGYWNldFZlcnNpb259Ci0gICAqIEByZXR1cm4gU2V0IHNldCBvZiBmYWNldCBydW50aW1lcyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuIHJlcXVpcmVkIGZhY2V0IHZlcnNpb25zLgotICAgKiAoZWxlbWVudCB0eXBlOiB7QGxpbmsgSVJ1bnRpbWV9KSAKLSAgICovCi0gIHByaXZhdGUgc3RhdGljIFNldCBnZXRSdW50aW1lcyhSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHJlcXVpcmVkRmFjZXRWZXJzaW9ucykKLSAgewotICAgIHJldHVybiBGYWNldFV0aWxzLmdldFJ1bnRpbWVzKHJlcXVpcmVkRmFjZXRWZXJzaW9ucyk7Ci0gIH0KLSAgCi0vKioKLSAqIEdldCB0aGUgc2VydmljZSBydW50aW1lIGNoZWNrZXIgY2xhc3MKLSAqIEBwYXJhbSBzZXJ2aWNlUnVudGltZUlkIHNlcnZpY2UgcnVudGltZSBJRAotICogQHJldHVybgotICovCi0gIHB1YmxpYyBzdGF0aWMgSVdlYlNlcnZpY2VSdW50aW1lQ2hlY2tlciBnZXRTZXJ2aWNlUnVudGltZUNoZWNrZXIoU3RyaW5nIHNlcnZpY2VSdW50aW1lSWQpIHsKLQkgIHJldHVybiBnZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKHNlcnZpY2VSdW50aW1lSWQpLmdldFNlcnZpY2VSdW50aW1lQ2hlY2tlcigpOwotCSAgCi0gIH0KLQotLyoqCi0gKiBHZXQgdGhlIGNsaWVudCBydW50aW1lIGNoZWNrZXIgY2xhc3MKLSAqIEBwYXJhbSBjbGllbnRSdW50aW1lSWQKLSAqIEByZXR1cm4KLSAqLwotcHVibGljIHN0YXRpYyBJV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyIGdldENsaWVudFJ1bnRpbWVDaGVja2VyKFN0cmluZyBjbGllbnRSdW50aW1lSWQpIHsKLQkgIHJldHVybiBnZXRDbGllbnRSdW50aW1lRGVzY3JpcHRvckJ5SWQoY2xpZW50UnVudGltZUlkKS5nZXRDbGllbnRSdW50aW1lQ2hlY2tlcigpOwotCSAgCi0gIH0KLQotLyoqCi0gKiBHZXQgdGhlIHNlcnZpY2UgcnVudGltZSBwcmVmZXJyZWQgc2VydmVyIHR5cGUKLSAqIEBwYXJhbSBzZXJ2aWNlUnVudGltZUlkIHNlcnZpY2UgcnVudGltZSBJRAotICogQHJldHVybgotICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNlcnZpY2VQcmVmZXJyZWRTZXJ2ZXJUeXBlKFN0cmluZyBzZXJ2aWNlUnVudGltZUlkKSB7Ci0JICByZXR1cm4gZ2V0U2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yQnlJZChzZXJ2aWNlUnVudGltZUlkKS5nZXRSdW50aW1lUHJlZmVycmVkU2VydmVyVHlwZSgpOwotCSAgCi0gIH0KLQotLyoqCi0gKiBHZXQgdGhlIGNsaWVudCBydW50aW1lIHByZWZlcnJlZCBzZXJ2ZXIgdHlwZQotICogQHBhcmFtIGNsaWVudFJ1bnRpbWVJZAotICogQHJldHVybgotICovCi1wdWJsaWMgc3RhdGljIFN0cmluZyBnZXRDbGllbnRQcmVmZXJyZWRTZXJ2ZXJUeXBlKFN0cmluZyBjbGllbnRSdW50aW1lSWQpIHsKLQkgIHJldHVybiBnZXRDbGllbnRSdW50aW1lRGVzY3JpcHRvckJ5SWQoY2xpZW50UnVudGltZUlkKS5nZXRSdW50aW1lUHJlZmVycmVkU2VydmVyVHlwZSgpOwotCSAgCi0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9XZWJTZXJ2aWNlUnVudGltZUluZm8uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vdWkvd3NydC9XZWJTZXJ2aWNlUnVudGltZUluZm8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThlMjU2Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3VpL3dzcnQvV2ViU2VydmljZVJ1bnRpbWVJbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjE2ICAgMTI3MTM4IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZVJ1bnRpbWU7Ci1pbXBvcnQgY29tLmlibS5pY3UudXRpbC5TdHJpbmdUb2tlbml6ZXI7Ci0KLQotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VSdW50aW1lSW5mbyB7Ci0KLSAgcHJpdmF0ZSBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbV87Ci0gIHByaXZhdGUgSGFzaHRhYmxlIGFsbFNlcnZpY2VUeXBlc187Ci0gIHByaXZhdGUgSGFzaHRhYmxlIGFsbENsaWVudFR5cGVzXzsKLSAgCi0gIHByaXZhdGUgU3RyaW5nIGlkOwotICBwcml2YXRlIFN0cmluZyBsYWJlbDsKLQlwcml2YXRlIFNlcnZpY2VUeXBlW10gc2VydmljZVR5cGVzOwotCXByaXZhdGUgQ2xpZW50VHlwZVtdIGNsaWVudFR5cGVzOwotCXByaXZhdGUgamF2YS5sYW5nLlN0cmluZ1tdIHNlcnZsZXRMZXZlbHM7Ci0JcHJpdmF0ZSBqYXZhLmxhbmcuU3RyaW5nW10gajJlZUxldmVsczsKLQlwcml2YXRlIGphdmEubGFuZy5TdHJpbmdbXSBydW50aW1lSWRzOwotCXByaXZhdGUgamF2YS5sYW5nLlN0cmluZ1tdIHNlcnZlckZhY3RvcnlJZHM7Ci0JcHJpdmF0ZSBTdHJpbmcgY2xhc3NOYW1lOwotCXByaXZhdGUgSVdlYlNlcnZpY2VSdW50aW1lIHdlYlNlcnZpY2VSdW50aW1lXzsKLSAgCi0gIHB1YmxpYyBXZWJTZXJ2aWNlUnVudGltZUluZm8oSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW1fLCBIYXNodGFibGUgYWxsU2VydmljZVR5cGVzXywgSGFzaHRhYmxlIGFsbENsaWVudFR5cGVzXykKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgdGhpcy5lbGVtXyA9IGVsZW1fOwotICAgIHRoaXMuYWxsU2VydmljZVR5cGVzXyA9IGFsbFNlcnZpY2VUeXBlc187Ci0gICAgdGhpcy5hbGxDbGllbnRUeXBlc18gPSBhbGxDbGllbnRUeXBlc187Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldENsYXNzTmFtZSgpCi0gIHsKLSAgICBpZiAoY2xhc3NOYW1lPT1udWxsKQotICAgIHsKLSAgICAgIGNsYXNzTmFtZT1lbGVtXy5nZXRBdHRyaWJ1dGUoImNsYXNzIik7Ci0gICAgfQotICAgIHJldHVybiBjbGFzc05hbWU7Ci0gIH0KLSAgCi0KLSAgcHVibGljIENsaWVudFR5cGVbXSBnZXRDbGllbnRUeXBlcygpCi0gIHsKLSAgICBpZiAoY2xpZW50VHlwZXM9PW51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGF0dHIgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoImNsaWVudFR5cGVzIik7Ci0gICAgICBpZiAoYXR0ciAhPSBudWxsICYmIGF0dHIubGVuZ3RoKCk+MCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihhdHRyLCAiICIpOwotICAgICAgICBpbnQgc2l6ZSA9IHN0LmNvdW50VG9rZW5zKCk7Ci0gICAgICAgIGNsaWVudFR5cGVzID0gbmV3IENsaWVudFR5cGVbc2l6ZV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2xpZW50VHlwZXMubGVuZ3RoOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgY3RpZCA9IHN0Lm5leHRUb2tlbigpOyAgICAgICAgICAKLSAgICAgICAgICBjbGllbnRUeXBlc1tpXSA9IChDbGllbnRUeXBlKWFsbENsaWVudFR5cGVzXy5nZXQoY3RpZCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGNsaWVudFR5cGVzOwotICB9Ci0gIAotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKQotICB7Ci0gICAgaWYgKGlkPT1udWxsKQotICAgIHsKLSAgICAgIGlkID0gZWxlbV8uZ2V0QXR0cmlidXRlKCJpZCIpOwotICAgIH0KLSAgICByZXR1cm4gaWQ7Ci0gIH0KLSAgCi0KLSAgcHVibGljIFN0cmluZyBnZXRMYWJlbCgpCi0gIHsKLSAgICBpZiAobGFiZWw9PW51bGwpCi0gICAgewotICAgICAgbGFiZWwgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoImxhYmVsIik7Ci0gICAgfQotICAgIHJldHVybiBsYWJlbDsKLSAgfSAgIAotCi0gIAotICBwdWJsaWMgamF2YS5sYW5nLlN0cmluZ1tdIGdldEoyZWVMZXZlbHMoKQotICB7Ci0gICAgaWYgKGoyZWVMZXZlbHMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgYXR0ciA9IGVsZW1fLmdldEF0dHJpYnV0ZSgiajJlZUxldmVscyIpOwotICAgICAgaWYgKGF0dHIgIT0gbnVsbCAmJiBhdHRyLmxlbmd0aCgpPjApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoYXR0ciwgIiAiKTsKLSAgICAgICAgaW50IHNpemUgPSBzdC5jb3VudFRva2VucygpOwotICAgICAgICBqMmVlTGV2ZWxzID0gbmV3IFN0cmluZ1tzaXplXTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBqMmVlTGV2ZWxzLmxlbmd0aDsgaSsrKQotICAgICAgICAgIGoyZWVMZXZlbHNbaV0gPSBzdC5uZXh0VG9rZW4oKTsKLSAgICAgIH0KLSAgICB9ICAgICAgCi0gICAgCi0gICAgcmV0dXJuIGoyZWVMZXZlbHM7Ci0gIH0KLSAgCi0KLSAgcHVibGljIGphdmEubGFuZy5TdHJpbmdbXSBnZXRSdW50aW1lSWRzKCkKLSAgewotICAgIGlmIChydW50aW1lSWRzID09IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGF0dHIgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoInJ1bnRpbWVzIik7Ci0gICAgICBpZiAoYXR0ciAhPSBudWxsICYmIGF0dHIubGVuZ3RoKCk+MCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihhdHRyLCAiICIpOwotICAgICAgICBpbnQgc2l6ZSA9IHN0LmNvdW50VG9rZW5zKCk7Ci0gICAgICAgIHJ1bnRpbWVJZHMgPSBuZXcgU3RyaW5nW3NpemVdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bnRpbWVJZHMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgcnVudGltZUlkc1tpXSA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgfQotICAgIH0gICAgICAKLSAgICAKLSAgICByZXR1cm4gcnVudGltZUlkczsKLSAgfQotICAKLQotICBwdWJsaWMgamF2YS5sYW5nLlN0cmluZ1tdIGdldFNlcnZlckZhY3RvcnlJZHMoKQotICB7Ci0gICAgaWYgKHNlcnZlckZhY3RvcnlJZHMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgYXR0ciA9IGVsZW1fLmdldEF0dHJpYnV0ZSgic2VydmVycyIpOwotICAgICAgaWYgKGF0dHIgIT0gbnVsbCAmJiBhdHRyLmxlbmd0aCgpPjApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoYXR0ciwgIiAiKTsKLSAgICAgICAgaW50IHNpemUgPSBzdC5jb3VudFRva2VucygpOwotICAgICAgICBzZXJ2ZXJGYWN0b3J5SWRzID0gbmV3IFN0cmluZ1tzaXplXTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2ZXJGYWN0b3J5SWRzLmxlbmd0aDsgaSsrKQotICAgICAgICAgIHNlcnZlckZhY3RvcnlJZHNbaV0gPSBzdC5uZXh0VG9rZW4oKTsKLSAgICAgIH0gICAgICAKLSAgICB9Ci0gICAgcmV0dXJuIHNlcnZlckZhY3RvcnlJZHM7Ci0gIH0KLSAgCi0KLSAgcHVibGljIFNlcnZpY2VUeXBlW10gZ2V0U2VydmljZVR5cGVzKCkKLSAgewotICAgIGlmIChzZXJ2aWNlVHlwZXM9PW51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGF0dHIgPSBlbGVtXy5nZXRBdHRyaWJ1dGUoInNlcnZpY2VUeXBlcyIpOwotICAgICAgaWYgKGF0dHIgIT0gbnVsbCAmJiBhdHRyLmxlbmd0aCgpPjApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoYXR0ciwgIiAiKTsKLSAgICAgICAgaW50IHNpemUgPSBzdC5jb3VudFRva2VucygpOwotICAgICAgICBzZXJ2aWNlVHlwZXMgPSBuZXcgU2VydmljZVR5cGVbc2l6ZV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VydmljZVR5cGVzLmxlbmd0aDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIGN0aWQgPSBzdC5uZXh0VG9rZW4oKTsgICAgICAgICAgCi0gICAgICAgICAgc2VydmljZVR5cGVzW2ldID0gKFNlcnZpY2VUeXBlKWFsbFNlcnZpY2VUeXBlc18uZ2V0KGN0aWQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBzZXJ2aWNlVHlwZXM7Ci0gIH0KLSAgCi0KLSAgcHVibGljIGphdmEubGFuZy5TdHJpbmdbXSBnZXRTZXJ2bGV0TGV2ZWxzKCkKLSAgewotICAgIGlmIChzZXJ2bGV0TGV2ZWxzPT1udWxsKQotICAgIHsKLSAgICAgIFN0cmluZyBhdHRyID0gZWxlbV8uZ2V0QXR0cmlidXRlKCJzZXJ2bGV0TGV2ZWxzIik7Ci0gICAgICBpZiAoYXR0ciAhPSBudWxsICYmIGF0dHIubGVuZ3RoKCk+MCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihhdHRyLCAiICIpOwotICAgICAgICBpbnQgc2l6ZSA9IHN0LmNvdW50VG9rZW5zKCk7Ci0gICAgICAgIHNlcnZsZXRMZXZlbHMgPSBuZXcgU3RyaW5nW3NpemVdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZsZXRMZXZlbHMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgc2VydmxldExldmVsc1tpXSA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgfSAgICAgIAotICAgIH0KLSAgICByZXR1cm4gc2VydmxldExldmVsczsKLSAgfQotICAKLSAgcHVibGljIElXZWJTZXJ2aWNlUnVudGltZSBnZXRXZWJTZXJ2aWNlUnVudGltZSgpCi0gIHsKLQlpZiAod2ViU2VydmljZVJ1bnRpbWVfID09IG51bGwpCi0JewotCQl0cnkKLQkJewotCQkJd2ViU2VydmljZVJ1bnRpbWVfID0gKElXZWJTZXJ2aWNlUnVudGltZSllbGVtXy5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOwotCQl9Ci0JCWNhdGNoKENvcmVFeGNlcHRpb24gY2UpCi0JCXsKLQkJCWNlLnByaW50U3RhY2tUcmFjZSgpOwotCQl9Ci0JfQotCQotCXJldHVybiB3ZWJTZXJ2aWNlUnVudGltZV87Ci0gIH0KLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi8uY2xhc3NwYXRoIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg1Yzg5OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi8uY2xhc3NwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJ3ZWJzZXJ2aWNldXRpbHMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDA5ZDljLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi10ZW1wLmZvbGRlcgotd2Vic2VydmljZXV0aWxzLmphcgotd3NjLmphcgotd2Vic2VydmljZXV0aWxzc3JjLnppcAotd3Njc3JjLnppcAotamF2YUNvbXBpbGVyLndlYnNlcnZpY2V1dGlscy5qYXIuYXJncwotamF2YUNvbXBpbGVyLndzYy5qYXIuYXJncwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc1ODk0MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbjwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MjZiZWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6MzU6NTEgRVNUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbkluRGVwcmVjYXRlZENvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25XaGVuT3ZlcnJpZGluZ0RlcHJlY2F0ZWRNZXRob2Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGlzY291cmFnZWRSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVtcHR5U3RhdGVtZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmhpZGRlbkNhdGNoQmxvY2s9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBhdGlibGVOb25Jbmhlcml0ZWRJbnRlcmZhY2VNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBsZXRlRW51bVN3aXRjaD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5kaXJlY3RTdGF0aWNBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmxvY2FsVmFyaWFibGVIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nRGVwcmVjYXRlZEFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdTZXJpYWxWZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9FZmZlY3RBc3NpZ25tZW50PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9JbXBsaWNpdFN0cmluZ0NvbnZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub25FeHRlcm5hbGl6ZWRTdHJpbmdMaXRlcmFsPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3BlY2lhbFBhcmFtZXRlckhpZGluZ0ZpZWxkPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN0YXRpY0FjY2Vzc1JlY2VpdmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN5bnRoZXRpY0FjY2Vzc0VtdWxhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udHlwZVBhcmFtZXRlckhpZGluZz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuY2hlY2tlZFR5cGVPcGVyYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmRvY3VtZW50ZWRFbXB0eUJsb2NrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeUVsc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5VHlwZUNoZWNrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnF1YWxpZmllZEZpZWxkQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb25XaGVuT3ZlcnJpZGluZz1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRJbXBvcnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5PdmVycmlkaW5nQ29uY3JldGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUHJpdmF0ZU1lbWJlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTM1NTA3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jTW9uIEphbiAzMCAxMDo0MToyNSBFU1QgMjAwNgotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0xCi1jb21waWxlcnMucC5uby1yZXF1aXJlZC1hdHQ9MAotY29tcGlsZXJzLnAubm90LWV4dGVybmFsaXplZC1hdHQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1hdHRyaWJ1dGU9MAotY29tcGlsZXJzLnAudW5rbm93bi1jbGFzcz0wCi1jb21waWxlcnMucC51bmtub3duLWVsZW1lbnQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1yZXNvdXJjZT0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWV4LXBvaW50cz0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWltcG9ydD0wCi1jb21waWxlcnMudXNlLXByb2plY3Q9dHJ1ZQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL01FVEEtSU5GL01BTklGRVNULk1GIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOWExOGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbjsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjQwNy5xdWFsaWZpZXIKLUJ1bmRsZS1DbGFzc1BhdGg6IC4sCi0gd2Vic2VydmljZXV0aWxzLmphcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnBsdWdpbi5XZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4KLUJ1bmRsZS1WZW5kb3I6ICVQTFVHSU5fUFJPVklERVIKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uYmVhbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yYWN0aW9uczt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yczt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb247eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwudmFsaWRhdGU7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLndzZGxtb2RlbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5mcmFnbWVudHM7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24ucGx1Z2luO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb2RlZ2VuO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb21tYW5kO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb21tb247eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24ud3NmaW5kZXI7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MudXRpbAotSW1wb3J0LVBhY2thZ2U6IGNvbS5pYm0uaWN1LnV0aWw7IHZlcnNpb249IjMuOCIKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS5qZW07YnVuZGxlLXZlcnNpb249IlsyLjAuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmplbS53b3JrYmVuY2g7YnVuZGxlLXZlcnNpb249IlsyLjAuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmVtZi5jb21tb247YnVuZGxlLXZlcnNpb249IlsyLjIuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmVtZi5lY29yZTtidW5kbGUtdmVyc2lvbj0iWzIuMi4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamR0LmNvcmU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnhzZDtidW5kbGUtdmVyc2lvbj0iWzIuMi4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuZGVidWcuY29yZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LndzO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmc7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qZW0ud29ya2JlbmNoO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3M7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlcjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAyLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGw7YnVuZGxlLXZlcnNpb249IlsxLjIuMCwxLjMuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAyLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LmoyZWUuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LmoyZWUuZWpiO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LmoyZWUud2ViO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3M7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIGphdmF4LndzZGw7YnVuZGxlLXZlcnNpb249IlsxLjUuMCwxLjYuMCkiLAotIG9yZy5lY2xpcHNlLmplbS51dGlsO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50O2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMCwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMi4wLjApIiwKLSBvcmcuZWNsaXBzZS5qc3Quc2VydmVyLmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAyLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW47YnVuZGxlLXZlcnNpb249IlsyLjIuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHM7YnVuZGxlLXZlcnNpb249IlszLjUuMCwzLjYuMCkiCi1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQotQnVuZGxlLVJlcXVpcmVkRXhlY3V0aW9uRW52aXJvbm1lbnQ6IEoyU0UtMS40Ci1CdW5kbGUtQWN0aXZhdGlvblBvbGljeTogbGF6eQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vYWJvdXQuaHRtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vYnVpbGQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NzQwZWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotIyAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAyMDA3MDUwMSAgIDE4NDUwNSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotc291cmNlLndlYnNlcnZpY2V1dGlscy5qYXIgPSB3ZWJzZXJ2aWNldXRpbHMvCi1qYXJzLmNvbXBpbGUub3JkZXIgPSAuLFwKLSAgICAgICAgICAgICAgICAgICAgIHdlYnNlcnZpY2V1dGlscy5qYXIKLWJpbi5pbmNsdWRlcyA9IHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgd2Vic2VydmljZXV0aWxzLmphcixcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICAuCi0jIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yNTYwMzMgICAgICAgICAgICAgIAotIyBqYXJzLmV4dHJhLmNsYXNzcGF0aCA9IC4uL2phdmF4LnhtbC5zb2FwL2xpYi9zYWFqLmphcgotZXh0cmEuamF2YXgueG1sLnNvYXA9cGxhdGZvcm06L3BsdWdpbnMvamF2YXgueG1sLnNvYXAvbGliL3NhYWouamFyCi1vdXRwdXQuLiA9IGJpbi8KLXNvdXJjZS4uID0gc3JjLwotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9wbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDZjNzg2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDkwMzAyICAgMjQyNjM1IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgUmVtb3ZlIHVubmVjZXNzYXJ5IFVJIGRlcGVuZGVuY2llcyBmcm9tIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIE1lc3NhZ2VzIGluIHBsdWdpbi54bWwuCi0jCi1QTFVHSU5fTkFNRT1XZWIgU2VydmljZXMgQ29uc3VtcHRpb24KLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotWFBfV1NGSU5ERVI9b3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLndzZmluZGVyCi1YUF9XRUJfU0VSVklDRV9TVEFSVF9TRVJWRVJfVFlQRT1XZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJUeXBlCi1YUF9TRVJWRVJfREVGQVVMVEVSPVNlcnZlciBEZWZhdWx0ZXIKLVhQX0ZBQ0VUX09QX0RFTEVHQVRFPUZhY2V0IE9wZXJhdGlvbiBEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vcGx1Z2luLnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMmM4ZGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci0KLTxwbHVnaW4+Ci0KLSAgIDwhLS0gVGhlIGZvbGxvd2luZyBleHRlbnNpb24gcG9pbnQgaXMgaW50ZXJuYWwgYW5kIGxpa2VseSB0byBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIC0tPgotICAgPGV4dGVuc2lvbi1wb2ludAotICAgICAgaWQ9IndzZmluZGVyIgotICAgICAgbmFtZT0iJVhQX1dTRklOREVSIi8+Ci0KLSAgIDwhLS0gVGhlIGZvbGxvd2luZyBleHRlbnNpb24gcG9pbnQgaXMgaW50ZXJuYWwgYW5kIGxpa2VseSB0byBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIC0tPgotICAgPGV4dGVuc2lvbi1wb2ludAotICAgICAgaWQ9IndlYlNlcnZpY2VTdGFydFNlcnZlclR5cGUiCi0gICAgICBuYW1lPSIlWFBfV0VCX1NFUlZJQ0VfU1RBUlRfU0VSVkVSX1RZUEUiLz4KLQotICAgPCEtLSBUaGUgZm9sbG93aW5nIGV4dGVuc2lvbiBwb2ludCBpcyBpbnRlcm5hbCBhbmQgbGlrZWx5IHRvIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gLS0+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50Ci0gICAgICBpZD0ic2VydmVyRGVmYXVsdGVyIgotICAgICAgbmFtZT0iJVhQX1NFUlZFUl9ERUZBVUxURVIiLz4KLSAgICAgIAotICAgPCEtLSBUaGUgZm9sbG93aW5nIGV4dGVuc2lvbiBwb2ludCBpcyBpbnRlcm5hbCBhbmQgbGlrZWx5IHRvIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gLS0+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJpbnRlcm5hbEZhY2V0T3BlcmF0aW9uRGVsZWdhdGUiCi0gICAJCW5hbWU9IiVYUF9GQUNFVF9PUF9ERUxFR0FURSIKLSAgIAkJc2NoZW1hPSJzY2hlbWEvZmFjZXRPcGVyYXRpb25EZWxlZ2F0ZS5leHNkIi8+Ci0KLSAgIAotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi53ZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJUeXBlIj4KLSAgICAgIDx3ZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJUeXBlCi0gICAgICAgICAgICBmYWN0b3J5SWQ9Im9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjMyIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5TdGFydFRvbWNhdFNlcnZlciIKLSAgICAgICAgICAgIGlkPSJTRVJWRVJfSURfVE9NQ0FUMzJfTE9DQUwiPgotICAgICAgPC93ZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJUeXBlPgotICAgICAgPHdlYlNlcnZpY2VTdGFydFNlcnZlclR5cGUKLSAgICAgICAgICAgIGZhY3RvcnlJZD0ib3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuNDAiCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLlN0YXJ0VG9tY2F0U2VydmVyIgotICAgICAgICAgICAgaWQ9IlNFUlZFUl9JRF9UT01DQVQ0MF9MT0NBTCI+Ci0gICAgICA8L3dlYlNlcnZpY2VTdGFydFNlcnZlclR5cGU+Ci0gICAgICA8d2ViU2VydmljZVN0YXJ0U2VydmVyVHlwZQotICAgICAgICAgICAgZmFjdG9yeUlkPSJvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC40MSIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uU3RhcnRUb21jYXRTZXJ2ZXIiCi0gICAgICAgICAgICBpZD0iU0VSVkVSX0lEX1RPTUNBVDQxX0xPQ0FMIj4KLSAgICAgIDwvd2ViU2VydmljZVN0YXJ0U2VydmVyVHlwZT4KLSAgICAgIDx3ZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJUeXBlCi0gICAgICAgICAgICBmYWN0b3J5SWQ9Im9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5TdGFydFRvbWNhdFNlcnZlciIKLSAgICAgICAgICAgIGlkPSJTRVJWRVJfSURfVE9NQ0FUNTBfTE9DQUwiPgotICAgICAgPC93ZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJUeXBlPgotICAgICAgPHdlYlNlcnZpY2VTdGFydFNlcnZlclR5cGUKLSAgICAgICAgICAgIGZhY3RvcnlJZD0ib3JnLmVjbGlwc2UuanN0LnNlcnZlci5nZXJvbmltby4xMCIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uU3RhcnRUb21jYXRTZXJ2ZXIiCi0gICAgICAgICAgICBpZD0iU0VSVkVSX0lEX0dFUk9OSU1PMTBfTE9DQUwiPgotICAgICAgIDwvd2ViU2VydmljZVN0YXJ0U2VydmVyVHlwZT4gCi0gICA8L2V4dGVuc2lvbj4KLSAgIAotCi08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NjaGVtYS9mYWNldE9wZXJhdGlvbkRlbGVnYXRlLmV4c2QgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zY2hlbWEvZmFjZXRPcGVyYXRpb25EZWxlZ2F0ZS5leHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWIzNDAwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NjaGVtYS9mYWNldE9wZXJhdGlvbkRlbGVnYXRlLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/PgotPCEtLSBTY2hlbWEgZmlsZSB3cml0dGVuIGJ5IFBERSAtLT4KLTxzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci08YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBpbmZvPgotICAgICAgICAgPG1ldGEuc2NoZW1hIHBsdWdpbj0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uIiBpZD0iaW50ZXJuYWxGYWNldE9wZXJhdGlvbkRlbGVnYXRlIiBuYW1lPSJGYWNldCBPcGVyYXRpb24gRGVsZWdhdGUiLz4KLSAgICAgIDwvYXBwaW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgJmx0O2ImZ3Q7SW50ZXJuYWwgRXh0ZW5zaW9uIFBvaW50OiZsdDsvYiZndDsgVGhpcyBpbnRlcm5hbCBleHRlbnNpb24gcG9pbnQgYWxsb3dzIGFuIElGYWNldE9wZXJhdGlvbkRlbGVnYXRlIHRvIGJlIHBsdWdnZWQgaW4gdGhhdCBpcyBkZWxlZ2F0ZWQgc29tZSBmYWNldCBvcGVyYXRpb25zLiAmbHQ7YiZndDtEbyBub3QgdXNlIHRoaXMgZXh0ZW5zaW9uIHBvaW50LiZsdDsvYiZndDsKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaW9uIj4KLSAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgPGFwcGluZm8+Ci0gICAgICAgICAgICA8bWV0YS5lbGVtZW50IGludGVybmFsPSJ0cnVlIiAvPgotICAgICAgICAgPC9hcHBpbmZvPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJGYWNldE9wZXJhdGlvbkRlbGVnYXRlIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwb2ludCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgPGFwcGluZm8+Ci0gICAgICAgICAgICAgICAgICA8bWV0YS5hdHRyaWJ1dGUgdHJhbnNsYXRhYmxlPSJ0cnVlIi8+Ci0gICAgICAgICAgICAgICA8L2FwcGluZm8+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9IkZhY2V0T3BlcmF0aW9uRGVsZWdhdGUiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZWxlbWVudCBzcGVjaWZpZXMgdGhlIEZhY2V0T3BlcmF0aW9uRGVsZWdhdGUKLSAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgQ2xhc3MgdGhhdCBwcm92aWRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgSUZhY2V0T3BlcmF0aW9uRGVsZWdhdGUKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwaW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0ic2luY2UiLz4KLSAgICAgIDwvYXBwaW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgV1RQIDMuMQotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0KLQotCi0KLTwvc2NoZW1hPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9Db25zdW1wdGlvbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9Db25zdW1wdGlvbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGYwOGJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vQ29uc3VtcHRpb24ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNjAyMTcgICAxMjY3NTcgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0jIDIwMDYwNDAxICAgMTI4ODI3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0jIDIwMDcwNTA5ICAgMTgyMjc0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0jIDIwMDgwMzMxICAgMjI1MDMyIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBFcnJvciBtc2cgcmVmZXJlbmNlcyByZW5hbWVkIGNhdGVnb3J5Ci0jIDIwMDgwNDAyICAgMjIyNDA5IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0jIDIwMDgwNDAyICAgMjI0NDMzIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuLCBQcm9wZXJ0aWVzIGZpbGUgY2hhbmdlCi0jIDIwMDgwNTA1ICAgMTgyMTY3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXYXJuaW5nIG5vdCBpc3N1ZWQgd2hlbiBub24taW5zdGFudGlhYmxlIGNsYXNzIGlzIGJ5cGFzc2VkIGluIHNhbXBlIEpTUHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBTYW1wbGUgbWVzc2FnZXMKLSMKLU1TR19FUlJPUl9KVFNfUFJPWFlfSEFTX05PX01FVEhPRFM9SVdBQjAxNzlFIFVuYWJsZSB0byBjcmVhdGUgYSBzYW1wbGUgdG8gdGhlIHByb3h5IGJlY2F1c2UgdGhlIHByb3h5IGRvZXMgbm90IGNvbnRhaW4gbWV0aG9kcy4KLU1TR19FUlJPUl9KVFNfUFJPWFlfSEFTX05PX0RFRkFVTFQ9SVdBQjAxODBFIFVuYWJsZSB0byBjcmVhdGUgYSBzYW1wbGUgdG8gdGhlIHByb3h5IGJlY2F1c2UgdGhlIHByb3h5IGlzIG5vdCBhIGJlYW4gKGkuZS4uIHRoZSBzYW1wbGUgZG9lcyBub3QgaGF2ZSBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3RvcikuCi1NU0dfRVJST1JfSlRTX05PX1BST1hZX01FVEhPRFNfUFJPQ0VTU0VEPUlXQUIwMTgxRSBVbmFibGUgdG8gY3JlYXRlIGEgc2FtcGxlIHRvIHRoZSBwcm94eSBiZWNhdXNlIG5vbmUgb2YgdGhlIG1ldGhvZHMgaW4gdGhlIHByb3h5IHdlcmUgcHJvY2Vzc2VkLgotTVNHX1dBUk5fSlRTX1VOU1VQUE9SVEVEX1RZUEU9SVdBQjAxODJXIFRoZSBTYW1wbGUgSlNQIGNsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgdHlwZTogezB9Ci1NU0dfV0FSTl9KVFNfVU5TVVBQT1JURURfSU5ERVhFRF9QUk9QRVJUSUVTPUlXQUIwMTg3VyBUaGUgU2FtcGxlIEpTUCBjbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBJbmRleGVkIHByb3BlcnRpZXM6IHswfQotTVNHX1dBUk5fSlRTX1VOU1VQUE9SVEVEX1BBUkFNRVRFUlNfQVJSQVlTPUlXQUIwMjM3VyBUaGUgU2FtcGxlIEpTUCBjbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBhcnJheXM6IHswfQotTVNHX1dBUk5fSlRTX1VOU1VQUE9SVEVEX1BBUkFNRVRFUlNfSU5QVVRTPUlXQUIwMTI0VyBUaGUgU2FtcGxlIEpTUCBjbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBpbnB1dCBwYXJhbWV0ZXJzIHRoYXQgYXJlIG5vdCBiZWFuczogezB9Ci1NU0dfRVJST1JfSlRTX0NZQ0xJQ19CRUFOPUlXQUIwMTg4RSBUaGUgU2FtcGxlIEpTUCBjbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBiZWFucyBjb250YWluaW5nIGF0dHJpYnV0ZXMgdGhhdCByZWZlcmVuY2UgdGhlIGJlYW5zOiB7MH0KLU1TR19XQVJOX0pUU19QUk9YWV9NRVRIT0RTX09NSVRURUQ9SVdBQjAxODlXIFRoZSBTYW1wbGUgSlNQIGNsaWVudCBvbWl0dGVkIHNvbWUgbWV0aG9kcyBiZWNhdXNlIHRoZXkgY29udGFpbmVkIHVuc3VwcG9ydGVkIHR5cGVzLgotTVNHX0VSUk9SX1NBTVBMRV9DUkVBVElPTl9DQU5DRUxFRD1JV0FCMDAyMUUgU2FtcGxlIGNyZWF0aW9uIHdhcyBjYW5jZWxlZAotTVNHX1dBUk5fVU5BQkxFX1RPX0ZJTkRfUFJPWFk9SVdBQjAwMjJXIFRoZSBQcm94eSBSZXNvdXJjZSBjb3VuZCBub3Qgbm90IGJlIGZvdW5kLgotTVNHX0VSUk9SX0pUU19KU1BfR0VOPUVycm9yIGluIGdlbmVyYXRpbmcgc2FtcGxlIEpTUAotTVNHX1dBUk5fSlRTX05PTl9JTlNUQU5USUFCTEVfVFlQRT1UaGUgaW5wdXQgdHlwZSB7MH0gaXMgYSBub24taW5zdGFudGlhYmxlIHR5cGUgYW5kIHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSBzYW1wbGUgSlNQLiAgQ29udGludWUgd2l0aCBzYW1wbGUgSlNQIGdlbmVyYXRpb24/Ci0KLSMgTm90IHVzZWQKLSNNU0dfRVJST1JfQ0FOTk9UX0NSRUFURV9DT01QT05FTlQ9VGhlIFdlYiBzZXJ2aWNlIHdpemFyZCBjYW5ub3QgYXV0b21hdGljYWxseSBjcmVhdGUgY29tcG9uZW50ICJ7MH0iLiBDYW5jZWwgdGhlIHdpemFyZCBhbmQgY3JlYXRlIHRoZSBjb21wb25lbnQgbWFudWFsbHkuCi0KLQotIwotIyBGaWx0ZXJzCi0jCi1GSUxURVJfTVNHX0VSUk9SX05VTExfT0JKRUNUPUlXQUIwMDk3RSBObyBvYmplY3QgaGFzIGJlZW4gcHJvdmlkZWQuCi1GSUxURVJfTVNHX0VSUk9SX05PVF9GSUxFPUlXQUIwMDk4RSBUaGUgb2JqZWN0ICJ7MH0iIGlzIG5vdCBhIGZpbGUuCi1GSUxURVJfTVNHX0VSUk9SX05PVF9GT0xERVI9SVdBQjAxMzdFIFRoZSBvYmplY3QgInswfSIgaXMgbm90IGEgZm9sZGVyLgotCi1KQVZBX0ZJTFRFUl9OQU1FPUphdmEgZmlsZXMKLUpBVkFfRklMVEVSX0RFU0M9RmlsZXMgd2l0aCBuYW1lcyBlbmRpbmcgaW4gIi5qYXZhIiBvciAiLmNsYXNzIi4KLUpBVkFfRklMVEVSX01TR19FUlJPUl9XUk9OR19FWFRFTlNJT049SVdBQjAxMDJFIFRoZSBmaWxlICJ7MH0iIGRvZXMgbm90IGVuZCBpbiAiLmphdmEiIG9yICIuY2xhc3MiLgotCi1XU0RMX0ZJTFRFUl9OQU1FPVdTREwgZmlsZXMKLVdTRExfRklMVEVSX0RFU0M9RmlsZXMgd2l0aCBuYW1lcyBlbmRpbmcgaW4gIi53c2RsIi4KLVdTRExfRklMVEVSX01TR19FUlJPUl9XUk9OR19FWFRFTlNJT049SVdBQjAxMDNFIFRoZSBmaWxlICJ7MH0iIGRvZXMgbm90IGVuZCBpbiAiLndzZGwiLgotCi1JU0RfRklMVEVSX05BTUU9SVNEIGZpbGVzCi1JU0RfRklMVEVSX0RFU0M9RmlsZXMgd2l0aCBuYW1lcyBlbmRpbmcgaW4gIi5pc2QiLgotSVNEX0ZJTFRFUl9NU0dfRVJST1JfV1JPTkdfRVhURU5TSU9OPUlXQUIwMDk1RSBUaGUgZmlsZSAiezB9IiBkb2VzIG5vdCBlbmQgaW4gIi5pc2QiLgotCi1QUk9QRVJUSUVTX0ZJTFRFUl9OQU1FPVByb3BlcnRpZXMgZmlsZXMKLVBST1BFUlRJRVNfRklMVEVSX0RFU0M9RmlsZXMgd2l0aCBuYW1lcyBlbmRpbmcgaW4gIi5wcm9wZXJ0aWVzIgotUFJPUEVSVElFU19GSUxURVJfTVNHX0VSUk9SX1dST05HX0VYVEVOU0lPTj0gVGhlIGZpbGUgInswfSIgZG9lcyBub3QgZW5kIGluICIucHJvcGVydGllcyIuCi0KLUZPTERFUl9GSUxURVJfTkFNRT1Gb2xkZXJzCi1GT0xERVJfRklMVEVSX0RFU0M9Rm9sZGVycy4KLQotIwotIyBEZXBsb3ltZW50IHN0YXR1cwotIwotUFJPR1JFU1NfSU5GT19DT1BZX1dFQlNFUlZJQ0VfVVRJTFM9SVdBQjAwMjNJIENvcHlpbmcgdGhlIHdlYnNlcnZpY2UgdXRpbGl0aWVzLgotUFJPR1JFU1NfSU5GT19DT1BZSU5HX0ZJTEU9SVdBQjAxOTdJIENvcHlpbmcgU09BUCBydW4tdGltZSBmaWxlLgotUFJPR1JFU1NfSU5GT19TVEFSVF9XRUJfUFJPSkVDVD1JV0FCMDE5OEkgU3RhcnRpbmcgV2ViIHByb2plY3QuCi1QUk9HUkVTU19JTkZPX1BVQkxJU0hJTkdfU0VSVkVSPUlXQUIwMTk5SSBQdWJsaXNoaW5nIHNlcnZlci4KLVBST0dSRVNTX0lORk9fU1RBUlRJTkdfU0VSVkVSPUlXQUIwMjAwSSBTdGFydGluZyBzZXJ2ZXIuCi1QUk9HUkVTU19JTkZPX1BVQkxJU0hfV0VCX1BST0pFQ1Q9SVdBQjAyMDVJIFB1Ymxpc2hpbmcgV2ViIHByb2plY3QuCi0KLQotIwotIyBEZXBsb3ltZW50IG1lc3NhZ2VzCi0jCi1NU0dfRVJST1JfUFJPSkVDVF9OT1RfRk9VTkQ9SVdBQjAyMDdFIFdlYiBwcm9qZWN0IHdhcyBub3QgZm91bmQuCi1NU0dfRVJST1JfRklMRUNPUFlfV0VCU0VSVklDRV9VVElMUz1JV0FCMDAyNEUgRXJyb3IgaW4gY29weWluZyBXZWJzZXJ2aWNlIFV0aWxpdHkgZmlsZS4KLU1TR19FUlJPUl9JTlNUQU5DRV9OT1RfRk9VTkQ9SVdBQjAyMTJFIFNlcnZlciB3YXMgbm90IGZvdW5kLgotTVNHX0VSUk9SX1NFUlZFUj1JV0FCMDIxM0UgRXJyb3IgaW4gc3RhcnRpbmcgc2VydmVyLgotTVNHX0VSUk9SX1BVQkxJU0g9SVdBQjAyMTdFIEVycm9yIGluIHB1Ymxpc2hpbmcgV2ViIHByb2plY3QuCi1NU0dfRVJST1JfQUREX01PRFVMRT1FcnJvciBvY2N1cmVkIHdoZW4gYWRkaW5nIHRoZSBtb2R1bGUsIHswfSwgdG8gdGhlIHNlcnZlcgotCi1NU0dfRVJST1JfQ1JFQVRFX1NFUlZFUj1JV0FCMDAyNUUgVW5hYmxlIHRvIGNyZWF0ZSBzZXJ2ZXIuCi1NU0dfRVJST1JfU1RVQl9PTkxZPVVuYWJsZSB0byBjcmVhdGUgc2VydmVyIGJlY2F1c2Ugb25seSBzdHViIHJ1bnRpbWVzIGFyZSBhdmFpbGFibGUgZm9yIHRoZSB7MH0gc2VydmVyIHR5cGUuIEdvIHRvIFdpbmRvdyA+IFByZWZlcmVuY2VzLiBTZWxlY3QgU2VydmVyID4gUnVudGltZSBFbnZpcm9ubWVudHMgdG8gaW5zdGFsbCBhIG5vbi1zdHViIHJ1bnRpbWUuCi0KLSMKLSMgRUpCIG1lc3NhZ2VzCi0jIDQgdW51c2VkIG1lc3NhZ2VzIGluIGpzdC53cyBhbmQgd3N0LndzCi1UQVNLX0xBQkVMX0NSRUFURV9FSkJfUFJPSkVDVD1DcmVhdGVFSkJQcm9qZWN0VGFzawotVEFTS19ERVNDX0NSRUFURV9FSkJfUFJPSkVDVD1DcmVhdGUgYW4gRUpCIFByb2plY3QuCi1NU0dfRVJST1JfQ0FOTk9UX0NSRUFURV9FSkJfUFJPSkVDVD1JV0FCMDQzMkUgVW5hYmxlIHRvIGNyZWF0ZSBFSkIgcHJvamVjdC4KLU1TR19FUlJPUl9DQU5OT1RfQ1JFQVRFX0FQUF9DTElFTlRfUFJPSkVDVD1JV0FCMDAyNkUgVW5hYmxlIHRvIGNyZWF0ZSBhcHBsaWNhdGlvbiBjbGllbnQgcHJvamVjdCB7MH0uCi0KLU1TR19FUlJPUl9DQU5OT1RfQ1JFQVRFX0pBVkFfUFJPSkVDVD1JV0FCMDAyN0UgVW5hYmxlIHRvIGNyZWF0ZSBKYXZhIHByb2plY3QgezB9LgotTVNHX0VSUk9SX0NBTk5PVF9DUkVBVEVfRUFSX1BST0pFQ1Q9SVdBQjAwNjJFIFVuYWJsZSB0byBjcmVhdGUgRUFSIHByb2plY3QgezB9LgotCi0jCi0jIFZhbGlkYXRvciB0YXNrIGRlc2NyaXB0aW9ucwotIwotVEFTS19MQUJFTF9XRUJTRVJWSUNFX0RJU0FCTEVfVkFMSURBVElPTj1EaXNhYmxlIHZhbGlkYXRvcnMuCi1UQVNLX0RFU0NfV0VCU0VSVklDRV9ESVNBQkxFX1ZBTElEQVRJT049VGVtcG9yYXJpbHkgZGlzYWJsaW5nIHZhbGlkYXRvcnMuCi1UQVNLX0xBQkVMX1dFQlNFUlZJQ0VfUkVTVE9SRV9WQUxJREFUSU9OPVJlc3RvcmUgdmFsaWRhdG9ycy4KLVRBU0tfREVTQ19XRUJTRVJWSUNFX1JFU1RPUkVfVkFMSURBVElPTj1SZXN0b3Jpbmcgc3RhdGVzIG9mIHZhbGlkYXRvcnMuCi1UQVNLX0xBQkVMX1dFQlNFUlZJQ0VfRElTQUJMRV9CVUlMRD1EaXNhYmxlIGF1dG8gYnVpbGQuCi1UQVNLX0RFU0NfV0VCU0VSVklDRV9ESVNBQkxFX0JVSUxEPVRlbXBvcmFyaWx5IGRpc2FibGluZyBhdXRvIGJ1aWxkLgotVEFTS19MQUJFTF9XRUJTRVJWSUNFX1JFU1RPUkVfQlVJTEQ9UmVzdG9yZSBhdXRvIGJ1aWxkLgotVEFTS19ERVNDX1dFQlNFUlZJQ0VfUkVTVE9SRV9CVUlMRD1SZXN0b3Jpbmcgc3RhdGUgb2YgYXV0byBidWlsZC4KLQotIwotIyBNSVNDCi0jCi1NU0dfRVJST1JfV0VCX1BST0pFQ1RfQ1JFQVRFPUlXQUIwMzEwRSBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY3JlYXRpb24gb2YgdGhlIFdlYiBQcm9qZWN0LgotCi0jCi0jIENoZWNrUHJvamVjdE9LQ29tbWFuZAotIwotTVNHX0VSUk9SX1NFUlZFUl9WSUVXX09QRU49SVdBQjAxMjZFIFRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBlZGl0b3IgaXMgb3BlbiBmb3IgezB9LiAgQ2xvc2UgaXQgYW5kIHJlc3RhcnQgdGhlIHdpemFyZC4KLQotCi0jCi0jCURldGVjdE5vbkphdmFDaGFyc0NvbW1hbmQKLSMKLU1TR19XQVJOX0pBVkFfTUVUSE9EX1NUQVJUX1dJVEhfVVBQRVJfQ0FTRT1JV0FCMDEyOVcgSmF2YSBtZXRob2QgezB9IGluIGNsYXNzIHsxfSBzdGFydHMgd2l0aCBhbiB1cHBlciBjYXNlIGxldHRlci4gTWV0aG9kIG5hbWVzIHNob3VsZCBiZWdpbiB3aXRoIGxvd2VyIGNhc2UgbGV0dGVycy4KLU1TR19XQVJOX01FVEhPRF9OQU1FX0lOVkFMSUQ9SVdBQjAxMzFXIEphdmEgbWV0aG9kIHswfSBuYW1lIGNvbnRhaW5zIHVuZGVyc2NvcmUgb3IgbnVtZXJpYyBkaWdpdHMgZm9sbG93ZWQgYnkgYSBsb3dlciBjYXNlIGxldHRlci5cCi1NZXRob2QgbmFtZXMgc2hvdWxkIG5vdCBjb250YWluIGxvd2VyIGNhc2UgbGV0dGVycyBhZnRlciBhIG51bWVyaWMgb3IgdW5kZXJzY29yZS4KLU1TR19XQVJOX0JPT0xFQU5fUFJPUEVSVFlfQUNDRVNTT1JTPUlXQUIwMTMyVyBCb29sZWFuIHByb3BlcnR5IGFjY2Vzc29yIHswfSBpbiBiZWFuIHsxfSBiZWdpbnMgd2l0aCAiZ2V0Ii4gQm9vbGVhbiBnZXR0ZXIgbWV0aG9kcyBzaG91bGQgYmVnaW4gd3RoICJpcyIuCi1NU0dfV0FSTl9QQUNLQUdFX05BTUVfSEFTX1VQUEVSX0NBU0U9SVdBQjAxMzNXIFRoZSBwYWNrYWdlIG5hbWUgezB9IG9mIGNsYXNzIHsxfSBpbmNsdWRlcyB1cHBlciBjYXNlIGxldHRlcnMuIFBhY2thZ2UgbmFtZXMgc2hvdWxkIGNvbnNpc3Qgb2YgbG93ZXIgY2FzZSBsZXR0ZXJzIG9ubHkuCi0KLVdBUk5fQkVBTl9OQU1FX1NUQVJUU19XSVRIX0xPV0VSX0NBU0UKLQotIwotIyBKYXZhVG9Nb2RlbENvbW1hbmQKLSMKLUxBQkVMX09LPU9LCi1ERVNDUklQVElPTl9PSz1TZWxlY3QgT0sgdG8gY29udGludWUKLQotTEFCRUxfQ0FOQ0VMPUNhbmNlbAotREVTQ1JJUFRJT05fQ0FOQ0VMPVNlbGVjdCBDYW5jZWwgdG8gY2FuY2VsCi0KLSMKLSMgQ3JlYXRlTW9uaXRvckNvbW1hbmQKLSMKLU1TR19FUlJPUl9VTkFCTEVfVE9fU1RBUlRfTU9OSVRPUj1JV0FCMDAwMUUgVW5hYmxlIHRvIG1vbml0b3IgcG9ydCB7MH0gb2YgezF9LgotTVNHX0lORk9fTU9OSVRPUklOR19OT1RfU1VQUE9SVEVEPUlXQUIwMDAySSB7MH0gZG9lcyBub3Qgc3VwcG9ydCBwb3J0IG1vbml0b3JpbmcuCi0KLSMKLSMgQ29weVdTRExDb21tYW5kCi0jCi1DT01NQU5EX0xBQkVMX0NPUFlfV1NETD1Db3B5aW5nIFdTREwKLUNPTU1BTkRfREVTQ19DT1BZX1dTREw9Q29weWluZyBXU0RMIGludG8gdGhlIHdvcmtzcGFjZSBmb3IgV2ViIHNlcnZpY2UgZGVwbG95bWVudAotTVNHX0VSUk9SX0NPUFlfV1NETD1JV0FCMDAyOEUgRmFpbGVkIHRvIGNvcHkgV1NETCB7MH0gdG8gezF9Ci0KLSMKLSMgQXNzb2NpYXRlTW9kdWxlV2l0aEVBUkNvbW1hbmQKLSMKLU1TR19FUlJPUl9VTkFCTEVfVE9fQVNTT0NJQVRFPVVuYWJsZSB0byBhc3NvY2lhdGUgY29tcG9uZW50IHswfSB0byBlYXIgY29tcG9uZW50IHsxfS4KLQotIwotIyBDcmVhdGVNb2R1bGVDb21tYW5kCi0jCi1NU0dfRVJST1JfQ1JFQVRFX0ZMRVhfUFJPSkVUPUFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIGNyZWF0aW9uIG9mIGZsZXhpYmxlIHByb2plY3QgezB9LgotTVNHX0VSUk9SX0NSRUFURV9FSkJfQ09NUE9ORU5UPUFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIGNyZWF0aW9uIG9mIEVKQiBjb21wb25lbnQgezB9LgotTVNHX0VSUk9SX0NSRUFURV9BUFBDTElFTlRfQ09NUE9ORU5UPUFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIGNyZWF0aW9uIG9mIEFwcGxpY2F0aW9uIENsaWVudCBjb21wb25lbnQgezB9LgotTVNHX0VSUk9SX0NPTVBPTkVOVF9DUkVBVElPTj1VbmFibGUgdG8gY3JlYXRlIHByb2plY3QgezB9IGFuZC9vciBjb21wb25lbnQgezF9LgotCi0KLSMKLSMgQ3JlYXRlRmFjZXRlZFByb2plY3RDb21tYW5kCi0jCi1NU0dfRVJST1JfUFJPSkVDVF9DUkVBVElPTj1VbmFibGUgdG8gY3JlYXRlIHByb2plY3QgezB9LgotCi0KLSMKLSMgUHJlU2VydmljZURldmVsb3BDb21tYW5kCi0jCi1NU0dfRVJST1JfUFJPSkVDVF9ET0VTX05PVF9FWElTVD1UaGUgcHJvamVjdCB7MH0gZG9lcyBub3QgZXhpc3QuCi1NU0dfRVJST1JfUFJPSkVDVF9JU19OT1RfT1BFTj1UaGUgcHJvamVjdCB7MH0gaXMgbm90IG9wZW4uCi0KLSMKLSMgU1BFQ0lBTCBOT1RFIFRPIFRSQU5TTEFUT1JTOiBTdWJzdGl0dXRpb24gezF9IGluIE1TR19FUlJPUl9BRERJTkdfRkFDRVRTX1RPX1BST0pFQ1QgYW5kCi0jIE1TR19FUlJPUl9GSVhFRF9GQUNFVFMgd2lsbCBiZSBhIGRlbGltaXRlZCBsaXN0IG9mIHRyYW5zbGF0ZWQgbGFiZWxzLiBUaGUgbGlzdCBpcyBmb3JtZWQgCi0jIHRocm91Z2ggcmVwZWF0ZWQgdXNlIG9mIE1TR19GQUNFVFMuCi0jCi1NU0dfRVJST1JfQURESU5HX0ZBQ0VUU19UT19QUk9KRUNUPVVuYWJsZSB0byBhZGQgdGhlIGZvbGx3aW5nIGZhY2V0cyB0byBwcm9qZWN0IHswfTogezF9LgotTVNHX0VSUk9SX0ZJWEVEX0ZBQ0VUUz1VbmFibGUgdG8gc2V0IHRoZSBmb2xsb3dpbmcgZmFjZXRzIGFzIGZpeGVkIG9uIHByb2plY3QgezB9OiB7MX0uCi1NU0dfRkFDRVRTPXswfSwgezF9Ci0KLU1TR19FUlJPUl9TRVRUSU5HX1JVTlRJTUU9VW5hYmxlIHRvIGJpbmQgcHJvamVjdCB7MH0gdG8gdGhlIHsxfSBydW50aW1lLgotCi0jCi0jIFNrZWxldG9uIE1lcmdlIE1lc3NhZ2VzCi0jCi1NU0dfRVJST1JfRklMRV9NRVJHRT1FcnJvciBpbiBtZXJnaW5nIGZpbGUgezB9LgotTVNHX0VSUk9SX0ZJTEVfTUVSR0VfTE9BRD1FcnJvciBpbiBsb2FkaW5nIGZpbGUgezB9IGZvciBtZXJnZS4gCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL0NvbnN1bXB0aW9uTWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vQ29uc3VtcHRpb25NZXNzYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzI3MjRjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vQ29uc3VtcHRpb25NZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIxNyAgIDEyNjc1NyByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDAxICAgMTI4ODI3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDQwMiAgIDIyNDQzMyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbiwgUHJvcGVydGllcyBmaWxlIGNoYW5nZQotICogMjAwODA1MDUgICAxODIxNjcgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdhcm5pbmcgbm90IGlzc3VlZCB3aGVuIG5vbi1pbnN0YW50aWFibGUgY2xhc3MgaXMgYnlwYXNzZWQgaW4gc2FtcGUgSlNQcwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBDb25zdW1wdGlvbk1lc3NhZ2VzIGV4dGVuZHMgTkxTIHsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCVU5ETEVfTkFNRSA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uQ29uc3VtcHRpb24iOy8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgQ29uc3VtcHRpb25NZXNzYWdlcygpIHsKLQkJLy8gRG8gbm90IGluc3RhbnRpYXRlCi0JfQotCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0pUU19QUk9YWV9IQVNfTk9fTUVUSE9EUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfSlRTX1BST1hZX0hBU19OT19ERUZBVUxUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9KVFNfTk9fUFJPWFlfTUVUSE9EU19QUk9DRVNTRUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fSlRTX1VOU1VQUE9SVEVEX1RZUEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fSlRTX1VOU1VQUE9SVEVEX0lOREVYRURfUFJPUEVSVElFUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfV0FSTl9KVFNfVU5TVVBQT1JURURfUEFSQU1FVEVSU19BUlJBWVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fSlRTX1VOU1VQUE9SVEVEX1BBUkFNRVRFUlNfSU5QVVRTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9KVFNfQ1lDTElDX0JFQU47Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fSlRTX1BST1hZX01FVEhPRFNfT01JVFRFRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfU0FNUExFX0NSRUFUSU9OX0NBTkNFTEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19XQVJOX1VOQUJMRV9UT19GSU5EX1BST1hZOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9KVFNfSlNQX0dFTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfV0FSTl9KVFNfTk9OX0lOU1RBTlRJQUJMRV9UWVBFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEZJTFRFUl9NU0dfRVJST1JfTlVMTF9PQkpFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRklMVEVSX01TR19FUlJPUl9OT1RfRklMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBGSUxURVJfTVNHX0VSUk9SX05PVF9GT0xERVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgSkFWQV9GSUxURVJfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBKQVZBX0ZJTFRFUl9ERVNDOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEpBVkFfRklMVEVSX01TR19FUlJPUl9XUk9OR19FWFRFTlNJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9GSUxURVJfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX0ZJTFRFUl9ERVNDOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfRklMVEVSX01TR19FUlJPUl9XUk9OR19FWFRFTlNJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgSVNEX0ZJTFRFUl9OQU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIElTRF9GSUxURVJfREVTQzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBJU0RfRklMVEVSX01TR19FUlJPUl9XUk9OR19FWFRFTlNJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUFJPUEVSVElFU19GSUxURVJfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQUk9QRVJUSUVTX0ZJTFRFUl9ERVNDOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBST1BFUlRJRVNfRklMVEVSX01TR19FUlJPUl9XUk9OR19FWFRFTlNJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRk9MREVSX0ZJTFRFUl9OQU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEZPTERFUl9GSUxURVJfREVTQzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQUk9HUkVTU19JTkZPX0NPUFlfV0VCU0VSVklDRV9VVElMUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQUk9HUkVTU19JTkZPX0NPUFlJTkdfRklMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQUk9HUkVTU19JTkZPX1NUQVJUX1dFQl9QUk9KRUNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBST0dSRVNTX0lORk9fUFVCTElTSElOR19TRVJWRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUFJPR1JFU1NfSU5GT19TVEFSVElOR19TRVJWRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUFJPR1JFU1NfSU5GT19QVUJMSVNIX1dFQl9QUk9KRUNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9QUk9KRUNUX05PVF9GT1VORDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfRklMRUNPUFlfV0VCU0VSVklDRV9VVElMUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfSU5TVEFOQ0VfTk9UX0ZPVU5EOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9TRVJWRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1BVQkxJU0g7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0FERF9NT0RVTEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0NSRUFURV9TRVJWRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1NUVUJfT05MWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUQVNLX0xBQkVMX0NSRUFURV9FSkJfUFJPSkVDVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUQVNLX0RFU0NfQ1JFQVRFX0VKQl9QUk9KRUNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9DQU5OT1RfQ1JFQVRFX0VKQl9QUk9KRUNUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9DQU5OT1RfQ1JFQVRFX0FQUF9DTElFTlRfUFJPSkVDVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQ0FOTk9UX0NSRUFURV9KQVZBX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0NBTk5PVF9DUkVBVEVfRUFSX1BST0pFQ1Q7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEFTS19MQUJFTF9XRUJTRVJWSUNFX0RJU0FCTEVfVkFMSURBVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUQVNLX0RFU0NfV0VCU0VSVklDRV9ESVNBQkxFX1ZBTElEQVRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEFTS19MQUJFTF9XRUJTRVJWSUNFX1JFU1RPUkVfVkFMSURBVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUQVNLX0RFU0NfV0VCU0VSVklDRV9SRVNUT1JFX1ZBTElEQVRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEFTS19MQUJFTF9XRUJTRVJWSUNFX0RJU0FCTEVfQlVJTEQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEFTS19ERVNDX1dFQlNFUlZJQ0VfRElTQUJMRV9CVUlMRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUQVNLX0xBQkVMX1dFQlNFUlZJQ0VfUkVTVE9SRV9CVUlMRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUQVNLX0RFU0NfV0VCU0VSVklDRV9SRVNUT1JFX0JVSUxEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9XRUJfUFJPSkVDVF9DUkVBVEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1NFUlZFUl9WSUVXX09QRU47Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fSkFWQV9NRVRIT0RfU1RBUlRfV0lUSF9VUFBFUl9DQVNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19XQVJOX01FVEhPRF9OQU1FX0lOVkFMSUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fQk9PTEVBTl9QUk9QRVJUWV9BQ0NFU1NPUlM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1dBUk5fUEFDS0FHRV9OQU1FX0hBU19VUFBFUl9DQVNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdBUk5fQkVBTl9OQU1FX1NUQVJUU19XSVRIX0xPV0VSX0NBU0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfT0s7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgREVTQ1JJUFRJT05fT0s7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQ0FOQ0VMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIERFU0NSSVBUSU9OX0NBTkNFTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfVU5BQkxFX1RPX1NUQVJUX01PTklUT1I7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0lORk9fTU9OSVRPUklOR19OT1RfU1VQUE9SVEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIENPTU1BTkRfTEFCRUxfQ09QWV9XU0RMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIENPTU1BTkRfREVTQ19DT1BZX1dTREw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0NPUFlfV1NETDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfVU5BQkxFX1RPX0FTU09DSUFURTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQ1JFQVRFX0ZMRVhfUFJPSkVUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9DUkVBVEVfRUpCX0NPTVBPTkVOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQ1JFQVRFX0FQUENMSUVOVF9DT01QT05FTlQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0NPTVBPTkVOVF9DUkVBVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfUFJPSkVDVF9DUkVBVElPTjsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfUFJPSkVDVF9ET0VTX05PVF9FWElTVDsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfUFJPSkVDVF9JU19OT1RfT1BFTjsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQURESU5HX0ZBQ0VUU19UT19QUk9KRUNUOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9GSVhFRF9GQUNFVFM7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0ZBQ0VUUzsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfU0VUVElOR19SVU5USU1FOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9GSUxFX01FUkdFX0xPQUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0ZJTEVfTUVSR0U7Ci0gICAgCi0KLQlzdGF0aWMgewotCQlOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBDb25zdW1wdGlvbk1lc3NhZ2VzLmNsYXNzKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vR2VuZXJhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vR2VuZXJhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMjc3NGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL0dlbmVyYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA4MTEgICAxNTM0ODIgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbjsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLQotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgZ2VuZXJhdG9yLgotKiAqLwotcHVibGljIGNsYXNzIEdlbmVyYXRvciBpbXBsZW1lbnRzIFZpc2l0b3JBY3Rpb24KLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotCi0gIC8qKgotICAqIFRoZSBTdHJpbmdCdWZmZXIgdGhhdCBob2xkcyB0aGUgY29kZWdlbiAKLSAgKiAqLwotICBwcm90ZWN0ZWQgU3RyaW5nQnVmZmVyIGZidWZmZXI7IAotCi0gIC8qKgotICAqIFRoZSBWaXNpdG9yIHRoYXQgY2FsbHMgdGhlIHZpc2l0IG1ldGhvZCAKLSAgKiAqLwotICBwcm90ZWN0ZWQgVmlzaXRvciBmVmlzaXRvcjsgCi0KLSAgLyoqCi0gICogVmVjdG9yIHRoYXQgaG9sZHMgc3RhdGUgZGF0YSBmb3IgdGhpcyAgZ2VuZXJhdG9yIAotICAqICovCi0gIHByb3RlY3RlZCBWZWN0b3IgZlJlc2lkZW50VmVjdG9yOwotIAotICAvKgotICAqIFRoaXMgaW50IGhvbGRzIHRoZSBjdXJyZW50IG51bWJlciAKLSAgKi8KLSAgcHJvdGVjdGVkIGludCBmVW5pcXVlTnVtYmVyID0wOwotIAotCi0gIHByb3RlY3RlZCBTdHJpbmcgZkNsaWVudEZvbGRlclBhdGg7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkFDVE9SWSA9ICJGYWN0b3J5IjsgCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFCID0gIiAgICAiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBET1VCTEVfVEFCID0gIiAgICAgICAgIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1BBQ0UgPSAiICI7Ci0gIAotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiAKLSAgKi8KLSAgcHVibGljIEdlbmVyYXRvciAoKQotICB7Ci0gICAgICBmYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgZlJlc2lkZW50VmVjdG9yID0gbmV3IFZlY3RvcigpOyAKLSAgICAKLSAgfQotCi0gIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIEBwYXJhbSBTdHJpbmdCdWZmZXIgVGFrZXMgdGhlIGJ1ZmZlciBpdCB3aWxsIHdyaXRlIGNvZGUgdG8KLSAgKi8KLSAgcHVibGljIEdlbmVyYXRvciAoU3RyaW5nQnVmZmVyIGJ1ZmZlcikKLSAgewotICAgICAgZmJ1ZmZlciA9IGJ1ZmZlcjsKLSAgICAgIGZSZXNpZGVudFZlY3RvciA9IG5ldyBWZWN0b3IoKTsgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoU3RyaW5nIHJlc2lkZW50KQotICB7Ci0gICAgLy9ub3RoaW5nIHRvIGJlIGRvbmUgYnV0IG11c3QgYmUgaW1wbGVtZW50ZWQKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDbGllbnRGb2xkZXJQYXRoKCkKLSAgewotICAgIHJldHVybiBmQ2xpZW50Rm9sZGVyUGF0aDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudEZvbGRlclBhdGgoU3RyaW5nIGZDbGllbnRGb2xkZXJQYXRoXykKLSAgewotICAgIGZDbGllbnRGb2xkZXJQYXRoID0gZkNsaWVudEZvbGRlclBhdGhfOwotICB9Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBzZXJ2aWNlTmFtZSA9ICIiOwotICBwcm90ZWN0ZWQgU3RyaW5nIHBvcnROYW1lID0gIiI7Ci0gIHByb3RlY3RlZCBTdHJpbmcgcGFja2FnZU5hbWUgPSAiIjsKLSAgcHJvdGVjdGVkIFN0cmluZyBwcm94eUJhc2VOYW1lID0gIiI7Ci0KLSAgcHVibGljIHZvaWQgc2V0SW5mbyhTdHJpbmcgc2VydmljZSwgU3RyaW5nIHBvcnQsIFN0cmluZyBwYWNrYWdlTmFtZSwgU3RyaW5nIHByb3h5QmFzZSkKLSAgewotICAgIHNlcnZpY2VOYW1lID0gc2VydmljZTsKLSAgICBwb3J0TmFtZSA9IHBvcnQ7Ci0gICAgdGhpcy5wYWNrYWdlTmFtZSA9IHBhY2thZ2VOYW1lOyAKLSAgICBwcm94eUJhc2VOYW1lID0gcHJveHlCYXNlOyAgCi0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFVOREVSU0NPUkUgPSAnXyc7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0U2Vzc2lvbkJlYW5JZCgpCi0gIHsKLSAgICBTdHJpbmcgbmFtZSA9IGdldENsaWVudEZvbGRlclBhdGgoKTsKLSAgICBpbnQgaW5kZXggPSBuYW1lLmxhc3RJbmRleE9mKCIvIik7Ci0gICAgaW5kZXgrKzsKLSAgICBTdHJpbmdCdWZmZXIgbmV3TmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIobmFtZS5zdWJzdHJpbmcoaW5kZXgpKTsKLSAgICAKLSAgICAvL1dlIG5lZWQgdG8gbWFrZSB0aGlzIGEgdmFsaWQgamF2YSBpZGVudGlmaWVyCi0gICAgLy9UbyBkbyB0aGlzIHdlIHdpbGwgcmVwbGFjZSBhbnkgY2hhcmFjdGVyIHRoYXQgaXMgbm90IHZhbGlkIHdpdGggYW4gdW5kZXJzY29yZQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmV3TmFtZS5sZW5ndGgoKTsgaSsrKQotICAgIHsKLSAgICAJY2hhciBjID0gbmV3TmFtZS5jaGFyQXQoaSk7Ci0gICAgCWlmIChpID09IDAgJiYgIUNoYXJhY3Rlci5pc0phdmFJZGVudGlmaWVyU3RhcnQoYykgfHwgIUNoYXJhY3Rlci5pc0phdmFJZGVudGlmaWVyUGFydChjKSkKLSAgICAJewotICAgIAkJbmV3TmFtZS5zZXRDaGFyQXQoaSxVTkRFUlNDT1JFKTsKLSAgICAJfQotICAgIH0KLSAgICByZXR1cm4gbmV3TmFtZSArICJpZCI7Ci0gIH0KLQotICAvKgotICAqIFRoZSBOdW1iZXIgRmFjdG9yeSBpcyBoZXJlIGZvciBuYW1pbmcgcHVycG9zZXMuIEluIAotICAqIHRoaXMgd2F5IHdlIGluc3VyZSBubyBuYW1lcyB3ZSBjcmVhdGUgaW4gYSBwaWVjZSBvZgotICAqIGNvZGUgZ2VuIGFyZSB0aGUgc2FtZS4gV2Uga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVycwotICAqIHVzZWQgYW5kIHdlIGhhbmQgYmFjayB0aGUgbmV4dCBvbmUuIExpa2UgdGFrZSBhIG51bWJlciAKLSAgKiBidWRkeQotICAqIEBwYXJhbSBpbnQgbnVtYmVyIHdlIGFyZSBhdCBhcyB0aGUgc3RhdGUgZGF0YSBoYXMgdG8gYmUgc2V0dGFibGUKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0TnVtYmVyRmFjdG9yeShpbnQgbnVtYmVyKQotICB7Ci0gICAgIGZVbmlxdWVOdW1iZXIgPSBudW1iZXI7Ci0gIH0KLQotCi0gIC8qCi0gICogVGhpcyBpcyBhIHVuaXF1ZSBudW1iZXIgZm9yIHN0YXRlIHB1cnBvc2VzCi0gICogQHJldHVybiBpbnQgCi0gICovCi0gIHB1YmxpYyBpbnQgZ2V0TnVtYmVyRmFjdG9yeSgpCi0gIHsKLSAgICAgcmV0dXJuIGZVbmlxdWVOdW1iZXI7IAotICB9Ci0gIC8qCi0gICogVGhpcyBpcyBhIHVuaXF1ZSBudW1iZXIgZm9yIG5hbWluZyBwdXJwb3NlcwotICAqIEByZXR1cm4gaW50IAotICAqLwotICBwdWJsaWMgaW50IGdldFVuaXF1ZU51bWJlcigpCi0gIHsKLSAgICAgcmV0dXJuIGZVbmlxdWVOdW1iZXIrKzsKLSAgfQotCi0KLSAgLyoqCi0gICogcmV0dXJucyB0aGUgY3VycmVudCBTdHJpbmdCdWZmZXIKLSAgKiBAcmV0dXJuIFN0cmluZ0J1ZmZlciBUYWtlcyB0aGUgYnVmZmVyIGl0IHdpbGwgd3JpdGUgY29kZSB0b28KLSAgKi8KLSAgcHVibGljIFN0cmluZ0J1ZmZlciBnZXRTdHJpbmdCdWZmZXIgKCkKLSAgewotICAgICAgcmV0dXJuIGZidWZmZXI7Ci0gIH0KLQotICAKLSAgLyoqCi0gICogcmV0dXJucyB0aGUgVmlzaXRvciB0aGF0IGNhbGxlZCB0aGlzIGdlbmVyYXRvcgotICAqIEByZXR1cm4gVmlzaXRvciAKLSAgKi8KLSAgcHVibGljIFZpc2l0b3IgZ2V0VmlzaXRvciAoKQotICB7Ci0gICAgICByZXR1cm4gZlZpc2l0b3I7Ci0gIH0KLSAgCi0KLQotCi0gIC8qKgotICAqIHZlY3RvciB1c2VkIHRvIGhvbGQgc3RhdGUgZGF0YSAKLSAgKiBAcGFyYW1ldGVyIFZpc2l0b3IgCi0gICovCi0gIHB1YmxpYyB2b2lkIHB1dFJlc2lkZW50VmVjdG9yIChPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgICBmUmVzaWRlbnRWZWN0b3IuYWRkRWxlbWVudChvYmplY3QpOwotICB9Ci0gIAotCi0gIC8qKgotICAqIHZlY3RvciB1c2VkIHRvIGhvbGQgc3RhdGUgZGF0YSAKLSAgKiBAcGFyYW1ldGVyIFZpc2l0b3IgCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFJlc2lkZW50VmVjdG9yIChWZWN0b3IgdmVjdG9yKQotICB7Ci0gICAgICBmUmVzaWRlbnRWZWN0b3IgPSB2ZWN0b3I7Ci0gIH0KLSAgCi0KLSAgLyoqCi0gICogcmV0dXJucyB0aGUgcmVzaWRlbnQgdmVjdG9yCi0gICogQHJldHVybiBWaXNpdG9yIAotICAqLwotICBwdWJsaWMgVmVjdG9yIGdldFJlc2lkZW50VmVjdG9yICgpCi0gIHsKLSAgICAgIHJldHVybiBmUmVzaWRlbnRWZWN0b3I7Ci0gIH0KLSAgCi0KLSAgLyoqCi0gICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYWxpemUgYW55IHN0YXRlIGEgZ2VuZXJhdG9yIG1heSBoYXZlCi0gICoKLSAgKiovCi0KLSAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZSgpCi0gIHsKLSAgICAgLy90byBiZSBpbXBsZW1lbnRlZCBpbiBzdWJsYXNzZXMKLSAgfQotCi0KLSAgIC8qKgotICAqIHNldHMgdGhlIHZpc2l0b3IgdGhhdCBjYWxscyB0aGUgdmlzaXQKLSAgKiBAcGFyYW1ldGVyIFZpc2l0b3IgCi0gICovCi0KLSAgcHVibGljIHZvaWQgc2V0VmlzaXRvcihWaXNpdG9yIHZpc2l0b3IpCi0gIHsKLSAgICAgIGZWaXNpdG9yID0gdmlzaXRvcjsKLSAgfQotCi0KLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBvYmplY3QpCi0gIHsKLSAgIC8vaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcwotICAJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9SZWxWaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vUmVsVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWM5ZmRiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9SZWxWaXNpdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbjsKLSAgICAgIAotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuQmFzaWNFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsOwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdmlzaXRvci4KLSogVGhpcyB2aXN0b3Igd2lsbCB2aXNpdCBlbGVtZW50cyBpbiBhIG1vZGVsIGdpdmVuIGEgCi0qIHBhcnRpY3VsYXIgcmVsCi0qICovCi1wdWJsaWMgY2xhc3MgUmVsVmlzaXRvciBpbXBsZW1lbnRzIFZpc2l0b3IKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgcHJpdmF0ZSBpbnQgZkVsZW1lbnRDb3VudGVyOwotICBwcml2YXRlIGludCBmVG90YWxFbGVtZW50czsKLSAgcHJpdmF0ZSBTdHJpbmcgZnJlbE5hbWU7Ci0KLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICogCi0gICovCi0KLSAgcHVibGljIFJlbFZpc2l0b3IgKFN0cmluZyByZWxOYW1lKQotICB7Ci0gICAgIGZyZWxOYW1lID0gcmVsTmFtZTsKLSAgfQotICAKLSAgcHVibGljIGludCBnZXRUb3RhbEVsZW1lbnRzVG9WaXNpdCgpCi0gIHsKLSAgICAgcmV0dXJuIGZUb3RhbEVsZW1lbnRzOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNMYXN0RWxlbWVudCgpCi0gIHsKLSAgICAgaWYoZ2V0VG90YWxFbGVtZW50c1RvVmlzaXQoKSAtIHByZXNlbnRFbGVtZW50KCkgPT0gMCkgcmV0dXJuIHRydWU7Ci0gICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBpbnQgcHJlc2VudEVsZW1lbnQoKQotICB7Ci0gICAgIHJldHVybiBmRWxlbWVudENvdW50ZXI7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoVmlzaXRvckFjdGlvbiB2YSkKLSAgewotICAgIC8vaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcwotICB9ICAKLSAgcHVibGljIElTdGF0dXMgcnVuIChPYmplY3Qgc291cmNlRWxlbWVudCxWaXNpdG9yQWN0aW9uIHZBY3Rpb24pCi0gIHsKLSAgCSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgICAgIGluaXRpYWxpemUodkFjdGlvbik7Ci0gIAotICAgICAgICB2QWN0aW9uLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgICAgIFJlbCByZWwgPSAoKEJhc2ljRWxlbWVudClzb3VyY2VFbGVtZW50KS5nZXRSZWwoZnJlbE5hbWUpOwotICAgICAgICAvL3NldCBzb21lIHN0YXRlIGRhdGEKLSAgICAgICAgZlRvdGFsRWxlbWVudHMgPSByZWwuZ2V0TnVtYmVyT2ZUYXJnZXRFbGVtZW50cygpOwotICAgICAgICBmRWxlbWVudENvdW50ZXIgPSAwOyAgCi0gICAgICAgIAotICAgICAgICBFbnVtZXJhdGlvbiBlID0gcmVsLmdldFRhcmdldEVsZW1lbnRzKCk7Ci0gICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKXsKLSAgICAgICAgICAgQmFzaWNFbGVtZW50IHRhcmdldEVsZW1lbnQgPSAoQmFzaWNFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsgCi0gICAgICAgICAgIGZFbGVtZW50Q291bnRlcisrOwotICAgICAgICAgICBpbml0aWFsaXplKHZBY3Rpb24pOwotICAgICAgICAgICBzdGF0dXMgPSB2QWN0aW9uLnZpc2l0KHRhcmdldEVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGF0dXM7Ci0gIH0gCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9WaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGE3MDQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9WaXNpdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdmlzaXRvci4KLSogKi8KLXB1YmxpYyBpbnRlcmZhY2UgVmlzaXRvciAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgcHVibGljIElTdGF0dXMgcnVuIChPYmplY3Qgb2JqZWN0LCBWaXNpdG9yQWN0aW9uIHZBY3Rpb24pOwotICAgICAgICAKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL1Zpc2l0b3JBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9WaXNpdG9yQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NDEyNmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL1Zpc2l0b3JBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBWaXNpdG9yQWN0aW9uLgotKiBUaGUgdmlzaXRvciB3YWxrcyB0aGUgbW9kZWwgYW5kIHRoZSBWaXNpdG9yQWN0aW9uIAotKiBkb2VzIHRoZSBhY3Rpb24KLSogKi8KLXB1YmxpYyBpbnRlcmZhY2UgVmlzaXRvckFjdGlvbiAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICBwdWJsaWMgSVN0YXR1cyB2aXNpdCAoT2JqZWN0IG9iamVjdCk7Ci0gIHB1YmxpYyB2b2lkIHNldFZpc2l0b3IoVmlzaXRvciB2aXNpdG9yKTsKLSAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZShTdHJpbmcgcmVzaWRlbnRTdHJpbmcpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2JlYW4vQXR0cmlidXRlVmlzaXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2JlYW4vQXR0cmlidXRlVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2ZjNjIzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9iZWFuL0F0dHJpYnV0ZVZpc2l0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW47Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLlJlbFZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uVmlzaXRvckFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5UeXBlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uc2FtcGxlYXBwLmNvZGVnZW4uSW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yOwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdmlzaXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBBdHRyaWJ1dGVWaXNpdG9yIGV4dGVuZHMgUmVsVmlzaXRvcgotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIAotICBwcml2YXRlIFZlY3RvciBmUmVzaWRlbnRWZWN0b3IxOwotICBwcml2YXRlIFZlY3RvciBmUmVzaWRlbnRWZWN0b3IyOwotCi0gICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiAKLSAgKi8KLQotICBwdWJsaWMgQXR0cmlidXRlVmlzaXRvciAoKQotICB7Ci0gICAgc3VwZXIoVHlwZUVsZW1lbnQuUkVMX0FUVFJJQlVURVMpOwotICB9Ci0KLSAgcHVibGljIEF0dHJpYnV0ZVZpc2l0b3IgKFN0cmluZyByZWwpCi0gIHsKLSAgICBzdXBlcihyZWwpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRSZXNpZGVudFN0cmluZyhTdHJpbmcgcmVzaWRlbnQpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFJlc2lkZW50VmVjdG9yMShWZWN0b3IgcmVzaWRlbnQpCi0gIHsKLSAgICBmUmVzaWRlbnRWZWN0b3IxID0gcmVzaWRlbnQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRSZXNpZGVudFZlY3RvcjIoVmVjdG9yIHJlc2lkZW50KQotICB7Ci0gICAgZlJlc2lkZW50VmVjdG9yMiA9IHJlc2lkZW50OwotICB9Ci0KLSAgCi0gIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoVmlzaXRvckFjdGlvbiB2QWN0aW9uKQotICB7Ci0gICAgIC8vaGFjayBmb3IgMTk3NzI2Ci0KLSAgICAgaWYodkFjdGlvbiBpbnN0YW5jZW9mIElucHV0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvcil7Ci0gICAgICAgaWYoZlJlc2lkZW50VmVjdG9yMSA9PSBudWxsKSBmUmVzaWRlbnRWZWN0b3IxPW5ldyBWZWN0b3IoKTsKLSAgICAgICBpZihmUmVzaWRlbnRWZWN0b3IyID09IG51bGwpIGZSZXNpZGVudFZlY3RvcjI9bmV3IFZlY3RvcigpOwotICAgICAgICgoSW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yKXZBY3Rpb24pLnNldFBhcmVudEdldHRlcnMoZlJlc2lkZW50VmVjdG9yMSxmUmVzaWRlbnRWZWN0b3IyKTsKLSAgICAgfQotICB9Ci0gCi0gIAotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vYmVhbi9GaWVsZFZpc2l0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9iZWFuL0ZpZWxkVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzViZTVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9iZWFuL0ZpZWxkVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uYmVhbjsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uVmlzaXRvckFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5UeXBlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uc2FtcGxlYXBwLmNvZGVnZW4uSW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yOwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdmlzaXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBGaWVsZFZpc2l0b3IgZXh0ZW5kcyBBdHRyaWJ1dGVWaXNpdG9yCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIHByaXZhdGUgVmVjdG9yIGZSZXNpZGVudFZlY3RvcjE7Ci0gIHByaXZhdGUgVmVjdG9yIGZSZXNpZGVudFZlY3RvcjI7Ci0KLSAgIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIAotICAqLwotCi0gIHB1YmxpYyBGaWVsZFZpc2l0b3IgKCkKLSAgewotICAgIHN1cGVyKFR5cGVFbGVtZW50LlJFTF9GSUVMRFMpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRSZXNpZGVudFN0cmluZyhTdHJpbmcgcmVzaWRlbnQpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFJlc2lkZW50VmVjdG9yMShWZWN0b3IgcmVzaWRlbnQpCi0gIHsKLSAgICBmUmVzaWRlbnRWZWN0b3IxID0gcmVzaWRlbnQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRSZXNpZGVudFZlY3RvcjIoVmVjdG9yIHJlc2lkZW50KQotICB7Ci0gICAgZlJlc2lkZW50VmVjdG9yMiA9IHJlc2lkZW50OwotICB9Ci0KLSAgCi0gIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoVmlzaXRvckFjdGlvbiB2QWN0aW9uKQotICB7Ci0gICAgIC8vaGFjayBmb3IgMTk3NzI2Ci0KLSAgICAgaWYodkFjdGlvbiBpbnN0YW5jZW9mIElucHV0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvcil7Ci0gICAgICAgaWYoZlJlc2lkZW50VmVjdG9yMSA9PSBudWxsKSBmUmVzaWRlbnRWZWN0b3IxPW5ldyBWZWN0b3IoKTsKLSAgICAgICBpZihmUmVzaWRlbnRWZWN0b3IyID09IG51bGwpIGZSZXNpZGVudFZlY3RvcjI9bmV3IFZlY3RvcigpOwotICAgICAgICgoSW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yKXZBY3Rpb24pLnNldFBhcmVudEdldHRlcnMoZlJlc2lkZW50VmVjdG9yMSxmUmVzaWRlbnRWZWN0b3IyKTsKLSAgICAgfQotICB9Ci0gCi0gIAotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vYmVhbi9NZXRob2RWaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vYmVhbi9NZXRob2RWaXNpdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NjY0NjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2JlYW4vTWV0aG9kVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5SZWxWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLkJlYW5FbGVtZW50OwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdmlzaXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBNZXRob2RWaXNpdG9yIGV4dGVuZHMgUmVsVmlzaXRvcgotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIAotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiAKLSAgKi8KLQotICBwdWJsaWMgTWV0aG9kVmlzaXRvciAoKQotICB7Ci0gICAgIHN1cGVyKEJlYW5FbGVtZW50LlJFTF9NRVRIT0RTKTsKLSAgfQotICAKLSAgIAotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vYmVhbi9QYXJhbWV0ZXJWaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vYmVhbi9QYXJhbWV0ZXJWaXNpdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NDkzMTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2JlYW4vUGFyYW1ldGVyVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5SZWxWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLk1ldGhvZEVsZW1lbnQ7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB2aXNpdG9yLgotKiAqLwotcHVibGljIGNsYXNzIFBhcmFtZXRlclZpc2l0b3IgZXh0ZW5kcyBSZWxWaXNpdG9yCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIAotICAqLwotCi0gIHB1YmxpYyBQYXJhbWV0ZXJWaXNpdG9yICgpCi0gIHsKLSAgICAgc3VwZXIoTWV0aG9kRWxlbWVudC5SRUxfUEFSQU1FVEVSUyk7Ci0gIH0KLSAgCi0gICAKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2JlYW4vUmV0dXJuUGFyYW1ldGVyVmlzaXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2JlYW4vUmV0dXJuUGFyYW1ldGVyVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjYyMDcwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9iZWFuL1JldHVyblBhcmFtZXRlclZpc2l0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5iZWFuOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uUmVsVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5NZXRob2RFbGVtZW50OwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdmlzaXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBSZXR1cm5QYXJhbWV0ZXJWaXNpdG9yIGV4dGVuZHMgUmVsVmlzaXRvcgotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIAotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiAKLSAgKi8KLQotICBwdWJsaWMgUmV0dXJuUGFyYW1ldGVyVmlzaXRvciAoKQotICB7Ci0gICAgIHN1cGVyKE1ldGhvZEVsZW1lbnQuUkVMX1JFVFVSTl9QQVJBTUVURVJTKTsKLSAgfQotICAKLSAgIAotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vYmVhbi9UeXBlVmlzaXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2JlYW4vVHlwZVZpc2l0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI1NDYxNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vYmVhbi9UeXBlVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5SZWxWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLlR5cGVFbGVtZW50OwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdmlzaXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBUeXBlVmlzaXRvciBleHRlbmRzIFJlbFZpc2l0b3IKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICogCi0gICovCi0KLSAgcHVibGljIFR5cGVWaXNpdG9yICgpCi0gIHsKLSAgICBzdXBlcihUeXBlRWxlbWVudC5SRUxfVFlQRSk7Ci0gIH0KLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0RldGVjdE5vbkphdmFDaGFyc0JlYW5WaXNpdG9yQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0RldGVjdE5vbkphdmFDaGFyc0JlYW5WaXNpdG9yQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzOTZlOWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9yYWN0aW9ucy9EZXRlY3ROb25KYXZhQ2hhcnNCZWFuVmlzaXRvckFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JhY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9ycy5KYXZhTW9mTWV0aG9kVmlzaXRvcjsKLQotCi0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24uCi0qIFRoaXMgVmlzaXRvckFjdGlvbiB3aWxsIGNyZWF0ZSBhIEJlYW5FbGVtZW50IHVzaW5nIHRoZQotKiBKYXZhQ2xhc3MgYW5kIHRoZSBCZWFuTW9kZWxFbGVtZW50c0ZhY3RvcnkKLSogSXQgd2lsbCBhbHNvIGF1dG9tYXRpY2FsbHkgd2FsayB0aGUgbWV0aG9kcyBpbiB0aGUgSmF2YUNsYXNzCi0qICovCi1wdWJsaWMgY2xhc3MgRGV0ZWN0Tm9uSmF2YUNoYXJzQmVhblZpc2l0b3JBY3Rpb24gZXh0ZW5kcyBWaXNpdG9yQWN0aW9uSW1wbAotewotICBwcml2YXRlIHN0YXRpYyBjaGFyIFVOREVSU0NPUkUgPSAnXyc7Ci0KLSAgcHVibGljIERldGVjdE5vbkphdmFDaGFyc0JlYW5WaXNpdG9yQWN0aW9uICggVmVjdG9yIG1lc3NhZ2VzLCBWZWN0b3IgYmVhbnMpCi0gIAl7Ci0gIAkJc3VwZXIgKG1lc3NhZ2VzLCBiZWFucyk7Ci0gIAl9Ci0KLSAgLyoqCi0gICogVGhlIHZpc2l0IHdpbGwgY3JlYXRlIHRoZSBiZWFuCi0gICogV2FsayB0aGUgbWV0aG9kcwotICAqIEBwYXJhbSBKYXZhQ2xhc3MgdGhlIGNsYXNzIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBiZWFuIG1vZGVsCi0gICoqLwotICBwdWJsaWMgSVN0YXR1cyB2aXNpdCAoT2JqZWN0IGphdmFjbGFzcykKLSAgewotICAgIEphdmFDbGFzcyBqYXZhQ2xhc3MgPSAoSmF2YUNsYXNzKWphdmFjbGFzczsKLSAgICBTdHJpbmcgcGFja2FnZU5hbWUgPSBqYXZhQ2xhc3MuZ2V0SmF2YVBhY2thZ2UoKS5nZXRQYWNrYWdlTmFtZSgpOwotICAgIFN0cmluZyBiZWFuTmFtZSA9IGphdmFDbGFzcy5nZXROYW1lKCk7Ci0KLSAgICBpZiAoIWlzQmVhblZpc2l0ZWQoamF2YUNsYXNzKSkgewotICAgICAgCWFkZFZpc2l0ZWRCZWFuKGphdmFDbGFzcyk7Ci0JCS8vIGNoZWNrIHRoZSBiZWFuIG5hbWUKLQkJY2hlY2tCZWFuTmFtZShiZWFuTmFtZSk7Ci0JCWNoZWNrUGFja2FnZU5hbWUocGFja2FnZU5hbWUsIGJlYW5OYW1lKTsKLQkgIAlEZXRlY3ROb25KYXZhQ2hhcnNNZXRob2RWaXNpdG9yQWN0aW9uIG1ldGhvZFZpc2l0b3JBY3Rpb24gPSBuZXcgRGV0ZWN0Tm9uSmF2YUNoYXJzTWV0aG9kVmlzaXRvckFjdGlvbihnZXRNZXNzYWdlcygpLCBnZXRCZWFuc1Zpc2l0ZWQoKSk7Ci0gICAgICAJSmF2YU1vZk1ldGhvZFZpc2l0b3IgbWV0aG9kVmlzaXRvciA9IG5ldyBKYXZhTW9mTWV0aG9kVmlzaXRvcigpOwotICAgIAltZXRob2RWaXNpdG9yLnJ1bihqYXZhQ2xhc3MsbWV0aG9kVmlzaXRvckFjdGlvbik7Ci0gICAgIH0KLSAgICAKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgIH0KLQotICAgcHJpdmF0ZSB2b2lkIGNoZWNrQmVhbk5hbWUoU3RyaW5nIGJlYW5OYW1lKQotICAgCXsKLQkgCi0JIC8vIGNoZWNrIGlmIHRoZSBiZWFuIHN0YXJ0cyB3aXRoIGEgbG93ZXIgY2FzZQotCSBpZiAoIENoYXJhY3Rlci5pc0xvd2VyQ2FzZShiZWFuTmFtZS5jaGFyQXQoMCkpKQotICAgIAlhZGRNZXNzYWdlKENvbnN1bXB0aW9uTWVzc2FnZXMuV0FSTl9CRUFOX05BTUVfU1RBUlRTX1dJVEhfTE9XRVJfQ0FTRSwgbmV3IFN0cmluZ1tde2JlYW5OYW1lfSk7ICAKLQotCQotICAgICAvL2NoZWNrIGlmIHRoZSBuYW1lIGhhcyBhbiB1bmRlcnNjb3JlLCB0aGVuIG5leHQgbGV0dGVyIHNob3VsZCBiZSB1cHBlciBjYXNlCi0gICAgIGludCB1bmRlclNjb3JlSW5kZXggPSBiZWFuTmFtZS5pbmRleE9mKFVOREVSU0NPUkUpOwotCSBTdHJpbmcgdGVtcE5hbWUgPSBiZWFuTmFtZTsKLQkgd2hpbGUodW5kZXJTY29yZUluZGV4ICE9LTEpIHsKLQkJdGVtcE5hbWUgPSB0ZW1wTmFtZS5zdWJzdHJpbmcodW5kZXJTY29yZUluZGV4KzEpOwotCQlpZiAoIENoYXJhY3Rlci5pc0xvd2VyQ2FzZSh0ZW1wTmFtZS5jaGFyQXQoMCkpKSB7Ci0gICAgICAJCWFkZE1lc3NhZ2UoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfV0FSTl9NRVRIT0RfTkFNRV9JTlZBTElELCBuZXcgU3RyaW5nW10geyBiZWFuTmFtZSB9KTsgIAotICAgICAgCQlicmVhazsKLQkJCX0KLQkJZWxzZQotCQkJdW5kZXJTY29yZUluZGV4ID0gdGVtcE5hbWUuaW5kZXhPZihVTkRFUlNDT1JFKTsKLQkJfQotCX0KLQotCXByaXZhdGUgdm9pZCBjaGVja1BhY2thZ2VOYW1lKFN0cmluZyBwYWNrYWdlTmFtZSwgU3RyaW5nIGJlYW5OYW1lKQotCQl7Ci0JCQlpZiAoIXBhY2thZ2VOYW1lLmVxdWFscyhwYWNrYWdlTmFtZS50b0xvd2VyQ2FzZSgpKSkKLQkJCQlhZGRNZXNzYWdlKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX1dBUk5fUEFDS0FHRV9OQU1FX0hBU19VUFBFUl9DQVNFLCBuZXcgU3RyaW5nW10geyBwYWNrYWdlTmFtZSwgYmVhbk5hbWUgfSk7Ci0JCX0KLSB9CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0RldGVjdE5vbkphdmFDaGFyc01ldGhvZFZpc2l0b3JBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvRGV0ZWN0Tm9uSmF2YUNoYXJzTWV0aG9kVmlzaXRvckFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDYwYmZmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvRGV0ZWN0Tm9uSmF2YUNoYXJzTWV0aG9kVmlzaXRvckFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5NZXRob2Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JzLkphdmFNb2ZQYXJhbWV0ZXJWaXNpdG9yOwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgSmF2YU1vZkJlYW5WaXNpdG9yQWN0aW9uLgotKiBUaGlzIFZpc2l0b3JBY3Rpb24gd2lsbCBjcmVhdGUgYSBCZWFuRWxlbWVudCB1c2luZyB0aGUgCi0qIEphdmFDbGFzcyBhbmQgdGhlIEJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeQotKiBJdCB3aWxsIGFsc28gYXV0b21hdGljYWxseSB3YWxrIHRoZSBtZXRob2RzIGluIHRoZSBKYXZhQ2xhc3MKLSogKi8KLXB1YmxpYyBjbGFzcyBEZXRlY3ROb25KYXZhQ2hhcnNNZXRob2RWaXNpdG9yQWN0aW9uIGV4dGVuZHMgVmlzaXRvckFjdGlvbkltcGwgCi17Ci0gIHByaXZhdGUgc3RhdGljIGNoYXIgVU5ERVJTQ09SRSA9ICdfJzsKLSAgcHJpdmF0ZSBib29sZWFuIHNlcnZpY2VCZWFuID0gZmFsc2U7Ci0KLSAgIHB1YmxpYyBEZXRlY3ROb25KYXZhQ2hhcnNNZXRob2RWaXNpdG9yQWN0aW9uICggVmVjdG9yIG1lc3NhZ2VzLCBWZWN0b3IgYmVhbnMpCi0gIAl7Ci0gIAkJc3VwZXIgKG1lc3NhZ2VzLCBiZWFucyk7Ci0gIAkJaWYgKCBiZWFucy5zaXplKCkgPT0gMSkKLSAgCQkJc2VydmljZUJlYW4gPSB0cnVlOwotICAJfQotCi0gIC8qKgotICAqIENyZWF0ZSBhIG1ldGhvZCBlbGVtZW50IGZyb20gdGhlIG1ldGhvZCAKLSAgKiBAcGFyYW0gTWV0aG9kIHRoZSBjbGFzcyB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbWV0aG9kCi0gICoqLwotICBwdWJsaWMgSVN0YXR1cyB2aXNpdCAoT2JqZWN0IGltZXRob2QpCi0gIHsKLSAgICAKLSAgICBNZXRob2QgbWV0aG9kID0gKE1ldGhvZClpbWV0aG9kOwotICAgIFN0cmluZyAgY2xhc3NOYW1lID0gbWV0aG9kLmdldENvbnRhaW5pbmdKYXZhQ2xhc3MoKS5nZXROYW1lKCk7Ci0gICAgU3RyaW5nIG5hbWUgPSBtZXRob2QuZ2V0TmFtZSgpOwotCi0JaWYgKCBzZXJ2aWNlQmVhbiAmJiAhbWV0aG9kLmlzQ29uc3RydWN0b3IoKSApCi0JCWNoZWNrVXBwZXJDYXNlKG5hbWUsIGNsYXNzTmFtZSk7Ci0JCi0JLy8gZm9yIHNlcnZpY2UgYmVhbiBvciBhbnkgcmVmZXJlbmNlZCBiZWFuIHByb3BlcnR5IGFjY2Vzc29ycwotCSBpZiAoIHNlcnZpY2VCZWFuIHx8IG5hbWUuc3RhcnRzV2l0aCgiZ2V0IikgfHwgbmFtZS5zdGFydHNXaXRoKCJzZXQiKSB8fCBuYW1lLnN0YXJ0c1dpdGgoImlzIikpIAotCSB7Ci0JICAgIGNoZWNrVW5kZXJTY29yZShuYW1lLCBjbGFzc05hbWUpOwotCSAgICBjaGVja051bWVyaWNEaWdpdHMobmFtZSwgY2xhc3NOYW1lKTsKLQkgICAgY2hlY2tCb29sZWFuUHJvcGVydGllcyhtZXRob2QsIGNsYXNzTmFtZSk7Ci0JCSAgCQotCSAJRGV0ZWN0Tm9uSmF2YUNoYXJzUGFyYW1ldGVyVmlzaXRvckFjdGlvbiBwYXJhbWV0ZXJWaXNpdG9yQWN0aW9uID0gbmV3IERldGVjdE5vbkphdmFDaGFyc1BhcmFtZXRlclZpc2l0b3JBY3Rpb24oZ2V0TWVzc2FnZXMoKSwgZ2V0QmVhbnNWaXNpdGVkKCkpOwotCSAJLy8gcnNrIFBhc3NpbmcgaW4gbnVsbCBmb3IgdGhlIGVudmlyb25tZW50LiBEZXRlY3ROb25KYXZhQ2hhcnNQYXJhbWV0ZXJWaXNpdG9yQWN0aW9uIGFsd2F5cyByZXR1cm5zIGFuIE9LIHN0YXR1cy4KLSAgICAJSmF2YU1vZlBhcmFtZXRlclZpc2l0b3IgcGFyYW1ldGVyVmlzaXRvciA9IG5ldyBKYXZhTW9mUGFyYW1ldGVyVmlzaXRvcihudWxsKTsKLSAgICAJcGFyYW1ldGVyVmlzaXRvci5ydW4obWV0aG9kLCBwYXJhbWV0ZXJWaXNpdG9yQWN0aW9uKTsgICAKLQkgIH0KLQkgCi0JIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQotICBwcml2YXRlIHZvaWQgY2hlY2tVcHBlckNhc2UoU3RyaW5nIG5hbWUsIFN0cmluZyBjbGFzc05hbWUpCi0gIHsKLSAgCSAvLyBpbiBhIHNlcnZpY2UgYmVhbiBjaGVjayBpZiBhbnkgbWV0aG9kIHN0YXJ0cyB3aXRoIHVwcGVyIGNhc2UgbGV0dGVyCi0JIGlmICggQ2hhcmFjdGVyLmlzVXBwZXJDYXNlKG5hbWUuY2hhckF0KDApKSkKLSAgICAJCWFkZE1lc3NhZ2UoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfV0FSTl9KQVZBX01FVEhPRF9TVEFSVF9XSVRIX1VQUEVSX0NBU0UsIG5ldyBTdHJpbmdbXXtuYW1lLCBjbGFzc05hbWV9KTsgIAotCi0gIH0KLQotICBwcml2YXRlIHZvaWQgY2hlY2tVbmRlclNjb3JlKFN0cmluZyBuYW1lLCBTdHJpbmcgY2xhc3NOYW1lKQotICB7Ci0gICAgIC8vY2hlY2sgaWYgdGhlIG5hbWUgaGFzIGFuIHVuZGVyc2NvcmUsIHRoZW4gbmV4dCBsZXR0ZXIgc2hvdWxkIGJlIHVwcGVyIGNhc2UKLSAgICAgaW50IHVuZGVyU2NvcmVJbmRleCA9IG5hbWUuaW5kZXhPZihVTkRFUlNDT1JFKTsKLQkgU3RyaW5nIHRlbXBOYW1lID0gbmFtZTsKLQkgd2hpbGUodW5kZXJTY29yZUluZGV4ICE9LTEpIHsKLQkJdGVtcE5hbWUgPSB0ZW1wTmFtZS5zdWJzdHJpbmcodW5kZXJTY29yZUluZGV4KzEpOwotCQlpZiAoIENoYXJhY3Rlci5pc0xvd2VyQ2FzZSh0ZW1wTmFtZS5jaGFyQXQoMCkpKSB7Ci0gICAgCQlhZGRNZXNzYWdlKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX1dBUk5fTUVUSE9EX05BTUVfSU5WQUxJRCwgbmV3IFN0cmluZ1tde25hbWUsIGNsYXNzTmFtZX0pOyAgCi0gICAgIAkJYnJlYWs7Ci0JCX0KLQkJZWxzZQotCQkJdW5kZXJTY29yZUluZGV4ID0gdGVtcE5hbWUuaW5kZXhPZihVTkRFUlNDT1JFKTsKLQkgICB9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgY2hlY2tOdW1lcmljRGlnaXRzKFN0cmluZyBuYW1lLCBTdHJpbmcgY2xhc3NOYW1lKQotICB7Ci0gICAgIC8vY2hlY2sgaWYgdGhlIG5hbWUgaGFzIGEgbnVtZXJpYywgdGhlbiBuZXh0IGxldHRlciBzaG91bGQgYmUgdXBwZXIgY2FzZQotICAgICBmb3IgKCBpbnQgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aCgpOyBpKyspCi0gICAgIAl7Ci0gICAgIAkJaWYgKCBDaGFyYWN0ZXIuaXNEaWdpdChuYW1lLmNoYXJBdChpKSkpCi0gICAgIAkJCXsKLSAgICAgCQkJCWlmIChDaGFyYWN0ZXIuaXNMb3dlckNhc2UobmFtZS5jaGFyQXQoaSsxKSkpIHsKLQkJCSAgICAJCWFkZE1lc3NhZ2UoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfV0FSTl9NRVRIT0RfTkFNRV9JTlZBTElELCBuZXcgU3RyaW5nW117bmFtZSwgY2xhc3NOYW1lfSk7ICAKLQkJCSAgICAgCQlicmVhazsKLSAJCQkJCX0KLQkJfQotICAgICB9Ci0gIH0KLSAgcHJpdmF0ZSB2b2lkIGNoZWNrQm9vbGVhblByb3BlcnRpZXMoTWV0aG9kIG1ldGhvZCwgU3RyaW5nIGNsYXNzTmFtZSkKLSAgCXsKLSAgCQlpZiAoIXNlcnZpY2VCZWFuICYmIG1ldGhvZC5nZXROYW1lKCkuc3RhcnRzV2l0aCgiZ2V0IikgJiYgCi0gIAkJCShtZXRob2QuZ2V0UmV0dXJuVHlwZSgpLmdldE5hbWUoKS5lcXVhbHMoImJvb2xlYW4iKSB8fAotICAJCQkgbWV0aG9kLmdldFJldHVyblR5cGUoKS5nZXROYW1lKCkuZXF1YWxzKCJqYXZhLmxhbmcuQm9vbGVhbiIpKSkKLSAgCQkJYWRkTWVzc2FnZShDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19XQVJOX0JPT0xFQU5fUFJPUEVSVFlfQUNDRVNTT1JTLCBuZXcgU3RyaW5nW117bWV0aG9kLmdldE5hbWUoKSwgY2xhc3NOYW1lfSk7ICAKLSAgCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9yYWN0aW9ucy9EZXRlY3ROb25KYXZhQ2hhcnNQYXJhbWV0ZXJWaXNpdG9yQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0RldGVjdE5vbkphdmFDaGFyc1BhcmFtZXRlclZpc2l0b3JBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFlMjhhMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0RldGVjdE5vbkphdmFDaGFyc1BhcmFtZXRlclZpc2l0b3JBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5BcnJheVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFIZWxwZXJzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFQYXJhbWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JzLkphdmFNb2ZCZWFuVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5UeXBlRmFjdG9yeTsKLQotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgSmF2YU1vZkJlYW5WaXNpdG9yQWN0aW9uLgotKiBUaGlzIFZpc2l0b3JBY3Rpb24gd2lsbCBjcmVhdGUgYSBCZWFuRWxlbWVudCB1c2luZyB0aGUgCi0qIEphdmFDbGFzcyBhbmQgdGhlIEJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeQotKiBJdCB3aWxsIGFsc28gYXV0b21hdGljYWxseSB3YWxrIHRoZSBtZXRob2RzIGluIHRoZSBKYXZhQ2xhc3MKLSogKi8KLXB1YmxpYyBjbGFzcyBEZXRlY3ROb25KYXZhQ2hhcnNQYXJhbWV0ZXJWaXNpdG9yQWN0aW9uIGV4dGVuZHMgVmlzaXRvckFjdGlvbkltcGwgCi17Ci0KLSAgcHVibGljIERldGVjdE5vbkphdmFDaGFyc1BhcmFtZXRlclZpc2l0b3JBY3Rpb24gKCBWZWN0b3IgbWVzc2FnZXMsIFZlY3RvciBiZWFucykKLSAgCXsKLSAgCQlzdXBlciAobWVzc2FnZXMsIGJlYW5zKTsKLSAgCX0KLQotICAvKioKLSAgKiBDcmVhdGUgYSBtZXRob2QgZWxlbWVudCBmcm9tIHRoZSBtZXRob2QgCi0gICogQHBhcmFtIE1ldGhvZCB0aGUgY2xhc3MgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIG1ldGhvZAotICAqKi8KLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBpamF2YVBhcmFtZXRlcikKLSAgewotICAgIAotICAgIEphdmFQYXJhbWV0ZXIgamF2YVBhcmFtZXRlciA9IChKYXZhUGFyYW1ldGVyKSBpamF2YVBhcmFtZXRlcjsKLSAgICBKYXZhQ2xhc3MgamF2YUNsYXNzID0gbnVsbDsKLSAgICBpZiAoIGphdmFQYXJhbWV0ZXIuZ2V0SmF2YVR5cGUoKSBpbnN0YW5jZW9mIEphdmFDbGFzcykgCi0gICAgCXsKLSAgICAJamF2YUNsYXNzID0gKEphdmFDbGFzcykgamF2YVBhcmFtZXRlci5nZXRKYXZhVHlwZSgpOwotICAgIAlpZiAoamF2YUNsYXNzLmlzQXJyYXkoKSkKLSAgICAJICB7Ci0gICAgCSAgICBKYXZhSGVscGVycyBjb21wb25lbnRUeXBlID0gKChBcnJheVR5cGUpamF2YUNsYXNzKS5nZXRDb21wb25lbnRUeXBlQXNIZWxwZXIoKTsKLSAgICAJICAgIGlmIChjb21wb25lbnRUeXBlIGluc3RhbmNlb2YgSmF2YUNsYXNzKQotICAgIAkgICAgICB7Ci0gICAgCSAgICAgICAgamF2YUNsYXNzID0gKEphdmFDbGFzcyljb21wb25lbnRUeXBlOwotICAgIAkgICAgICB9Ci0gICAgCSAgICBlbHNlCi0gICAgCSAgICAgIHsKLSAgICAJICAgICAgICBqYXZhQ2xhc3MgPSBudWxsOyAvL1RoZSBhcnJheSBjb250YWlucyBwcmltaXRpdmUgdHlwZXMsIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGZ1cnRoZXIgY2hlY2tpbmcuCi0gICAgCSAgICAgIH0KLSAgICAJICB9Ci0gICAgCX0KLSAgIAlpZiAodG9CZVZpc2l0ZWQoamF2YUNsYXNzKSkgICAgewotCQkJRGV0ZWN0Tm9uSmF2YUNoYXJzQmVhblZpc2l0b3JBY3Rpb24gYmVhblZpc2l0b3JBY3Rpb24gPSBuZXcgRGV0ZWN0Tm9uSmF2YUNoYXJzQmVhblZpc2l0b3JBY3Rpb24oZ2V0TWVzc2FnZXMoKSwgZ2V0QmVhbnNWaXNpdGVkKCkpOwotCQkJSmF2YU1vZkJlYW5WaXNpdG9yIGJlYW5WaXNpdG9yID0gbmV3IEphdmFNb2ZCZWFuVmlzaXRvcigpOwotCQkJYmVhblZpc2l0b3IucnVuKGphdmFDbGFzcyxiZWFuVmlzaXRvckFjdGlvbik7Ci0gIAkgIAl9Ci0gICAJCi0gICAJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0KLSAgcHJpdmF0ZSBib29sZWFuIHRvQmVWaXNpdGVkIChKYXZhQ2xhc3MgamF2YUNsYXNzKQotICB7Ci0JLy9jaGVjayBmb3IgcmVjb2duaXplZCB0eXBlcyAKLQlpZiggamF2YUNsYXNzID09IG51bGwJfHwKLQkgICBqYXZhQ2xhc3MuaXNQcmltaXRpdmUoKSB8fAotCSAgIGphdmFDbGFzcy5nZXRKYXZhTmFtZSgpLnN0YXJ0c1dpdGgoImphdmF4IikgfHwKLSAgICAgICBUeXBlRmFjdG9yeS5yZWNvZ25pemVkQmVhbihqYXZhQ2xhc3MuZ2V0SmF2YU5hbWUoKSkpCi0JICAgIAlyZXR1cm4gZmFsc2U7Ci0JZWxzZQotCQkgIAlyZXR1cm4gdHJ1ZTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0phdmFNb2ZBdHRyaWJ1dGVWaXNpdG9yQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0phdmFNb2ZBdHRyaWJ1dGVWaXNpdG9yQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmM2NhMjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9yYWN0aW9ucy9KYXZhTW9mQXR0cmlidXRlVmlzaXRvckFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUhlbHBlcnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YVBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5NZXRob2Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JzLkphdmFNb2ZUeXBlVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5BdHRyaWJ1dGVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLkJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5UeXBlRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uc2FtcGxlYXBwLmNvbW1vbi5TYW1wbGVQcm9wZXJ0eURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LlN0YXR1c0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24uCi0qIFRoaXMgVmlzaXRvckFjdGlvbiB3aWxsIGNyZWF0ZSBhIEF0dHJpYnV0ZUVsZW1lbnQgdXNpbmcgdGhlCi0qIEphdmFDbGFzcyBhbmQgdGhlIEJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeQotKiBJdCB3aWxsIGFsc28gYXV0b21hdGljYWxseSB3YWxrIGEgY29tcGxleCB0eXBlCi0qICovCi1wdWJsaWMgY2xhc3MgSmF2YU1vZkF0dHJpYnV0ZVZpc2l0b3JBY3Rpb24gZXh0ZW5kcyBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24KLXsKLQotICAvKgotICAqQ29uc3RydWN0b3IKLSAgKiovCi0gIHB1YmxpYyBKYXZhTW9mQXR0cmlidXRlVmlzaXRvckFjdGlvbihFbGVtZW50IHBhcmVudEVsZW1lbnQsIFN0cmluZyBwcm9qZWN0LCBJRW52aXJvbm1lbnQgZW52KQotICB7Ci0gICAgc3VwZXIocGFyZW50RWxlbWVudCxwcm9qZWN0LCBlbnYpOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBwcm9wZXJ0eURlY29yYXRvcikKLSAgewotICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAJICAJCi0gICAgLy9Qcm9wZXJ0eURlY29yYXRvciBwZCA9IChQcm9wZXJ0eURlY29yYXRvcilwcm9wZXJ0eURlY29yYXRvcjsKLSAgICBTYW1wbGVQcm9wZXJ0eURlc2NyaXB0b3IgcGQgPSAoU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yKXByb3BlcnR5RGVjb3JhdG9yOyAgCi0gICAgCi0gICAgCi0gICAgdHJ5ewotICAgICAgIC8vaWYgdGhlIHR5cGUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgdW5zdXBwb3J0ZWQgZG9udCBtYWtlIGFuIEF0dHJpYnV0ZQotICAgICAgaWYoIShnZXRSZXR1cm5QYXJhbSgpICYmIFR5cGVGYWN0b3J5LmlzUmVjb2duaXplZFJldHVyblR5cGUoKEphdmFIZWxwZXJzKXBkLmdldFByb3BlcnR5VHlwZSgpKSkgCi0gICAgICAJJiYgKFR5cGVGYWN0b3J5LmlzVW5TdXBwb3J0ZWRUeXBlKChKYXZhSGVscGVycylwZC5nZXRQcm9wZXJ0eVR5cGUoKSkpKXsKLSAgICAgIAkgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLndhcm5pbmdTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX1dBUk5fSlRTX1VOU1VQUE9SVEVEX1RZUEUgKyAoKEphdmFIZWxwZXJzKXBkLmdldFByb3BlcnR5VHlwZSgpKS5nZXRKYXZhTmFtZSgpICk7Ci0JICAgICAgLy9nZXRTdGF0dXNNb25pdG9yKCkucmVwb3J0U3RhdHVzKCBuZXcgU3RhdHVzKElTdGF0dXMuV0FSTklORyxXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsMCwKLQkgICAgICAvL0NvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX1dBUk5fSlRTX1VOU1VQUE9SVEVEX1RZUEUgKyAoKEphdmFIZWxwZXJzKXBkLmdldFByb3BlcnR5VHlwZSgpKS5nZXRKYXZhTmFtZSgpLG51bGwpKTsKLQkgICAgICByZXR1cm4gc3RhdHVzOwotCSAgfQkKLQotICAgICAgTWV0aG9kIHNldE1ldGhvZCA9IHBkLmdldFdyaXRlTWV0aG9kKCk7Ci0gICAgICBNZXRob2QgZ2V0TWV0aG9kID0gcGQuZ2V0UmVhZE1ldGhvZCgpOwotICAgICAgaWYoc2V0TWV0aG9kICE9IG51bGwpewotICAgICAgCWlmKHNldE1ldGhvZC5pc1N0YXRpYygpKXsKLSAgICAgICAgICBzZXRNZXRob2Q9bnVsbDsgCi0gICAgICAJfQotICAgICAgfQotICAgICAgaWYoZ2V0TWV0aG9kICE9IG51bGwpewotICAgICAgCWlmKGdldE1ldGhvZC5pc1N0YXRpYygpKXsKLSAgICAgICAgICBnZXRNZXRob2Q9bnVsbDsKLSAgICAgIAl9Ci0gICAgICB9Ci0gICAgICBpZihwZC5pc2ZTdGF0aWMoKSl7Ci0gICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIEF0dHJpYnV0ZUVsZW1lbnQgYXR0cmlidXRlRWxlbWVudCA9IChBdHRyaWJ1dGVFbGVtZW50KUJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeS5nZXRCZWFuTW9kZWxFbGVtZW50KHByb3BlcnR5RGVjb3JhdG9yLGZQYXJlbnRFbGVtZW50KTsKLQotICAgICAgaWYoYXR0cmlidXRlRWxlbWVudCAhPSBudWxsKXsKLSAgICAgICAgCi0gICAgICAgIC8vbGV0cyBjaGVjayBhbmQgc2VlIGlmIHRoZSBnZXR0ZXIgdGFrZXMgaW5wdXQgcGFyYW1zCi0gICAgICAgIC8vaWYgc28gdGhyb3cgYW4gZXJyb3IKLSAgICAgICAgLy9ub3cgdGhlIGlucHV0cwotICAgICAgICBpZihnZXRNZXRob2QgIT0gbnVsbCl7Ci0JICAgICAgSmF2YVBhcmFtZXRlciBqYXZhUGFyYW1ldGVyW10gPSBnZXRNZXRob2QubGlzdFBhcmFtZXRlcnNXaXRob3V0UmV0dXJuKCk7Ci0JICAgICAgICBpZihqYXZhUGFyYW1ldGVyLmxlbmd0aCA+IDApewotCSAgICAgICAgICBpZihnZXRSZXR1cm5QYXJhbSgpKSByZXR1cm4gc3RhdHVzOwotCSAgICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19XQVJOX0pUU19VTlNVUFBPUlRFRF9JTkRFWEVEX1BST1BFUlRJRVMgKyBnZXRNZXRob2QuZ2V0TmFtZSgpICk7Ci0JICAgICAgICAgIC8vZ2V0U3RhdHVzTW9uaXRvcigpLnJlcG9ydFN0YXR1cyAobmV3IFN0YXR1cyhJU3RhdHVzLldBUk5JTkcsV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELDAsCi0JICAgICAgICAgIC8vCQlDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19XQVJOX0pUU19VTlNVUFBPUlRFRF9JTkRFWEVEX1BST1BFUlRJRVMgKyBnZXRNZXRob2QuZ2V0TmFtZSgpLG51bGwpKTsKLQkgICAgICAgICAgcmV0dXJuIHN0YXR1czsKLQkgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZihzZXRNZXRob2QgIT0gbnVsbCkgYXR0cmlidXRlRWxlbWVudC5zZXRTZXR0ZXJNZXRob2Qoc2V0TWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKSk7Ci0gICAgICAgIGlmKGdldE1ldGhvZCAhPSBudWxsKSBhdHRyaWJ1dGVFbGVtZW50LnNldEdldHRlck1ldGhvZChnZXRNZXRob2QuZ2V0TWV0aG9kRWxlbWVudFNpZ25hdHVyZSgpKTsKLQotICAgICAgICBKYXZhTW9mVHlwZVZpc2l0b3JBY3Rpb24gdHlwZVZpc2l0b3JBY3Rpb24gPSBuZXcgSmF2YU1vZlR5cGVWaXNpdG9yQWN0aW9uKGF0dHJpYnV0ZUVsZW1lbnQsY2xpZW50UHJvamVjdCwgZW52Xyk7Ci0gICAgICAgIHR5cGVWaXNpdG9yQWN0aW9uLnNldFN0YXR1c01vbml0b3IoZ2V0U3RhdHVzTW9uaXRvcigpKTsKLSAgICAgICAgdHlwZVZpc2l0b3JBY3Rpb24uc2V0QmVhbnNDcmVhdGVkKGdldEJlYW5zQ3JlYXRlZCgpKTsKLSAgICAgICAgdHlwZVZpc2l0b3JBY3Rpb24uc2V0UmV0dXJuUGFyYW0oZ2V0UmV0dXJuUGFyYW0oKSk7IAotICAgICAgICBKYXZhTW9mVHlwZVZpc2l0b3IgdHlwZVZpc2l0b3IgPSBuZXcgSmF2YU1vZlR5cGVWaXNpdG9yKGVudl8pOwotICAgICAgICB0eXBlVmlzaXRvci5zZXRDbGllbnRQcm9qZWN0KGdldFByb2plY3QoKSk7Ci0gICAgICAgIHN0YXR1cyA9IHR5cGVWaXNpdG9yLnJ1bihwZCx0eXBlVmlzaXRvckFjdGlvbik7Ci0gICAgICAgCi0gICAgICB9Ci0gICAgCi0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH1jYXRjaChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgCWVudl8uZ2V0TG9nKCkubG9nKElMb2cuV0FSTklORywgNTA1NCwgdGhpcywgInZpc2l0IiwgZSk7Ci0gICAgCXN0YXR1cyA9IFN0YXR1c1V0aWxzLndhcm5pbmdTdGF0dXMoCUNvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0pUU19KU1BfR0VOLCBlKTsKLSAgICAJdHJ5IHsKLQkJCWVudl8uZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydChzdGF0dXMpOwotCQl9IGNhdGNoIChTdGF0dXNFeGNlcHRpb24gZTEpIHsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0pUU19KU1BfR0VOKTsKLQkJfQotICAgIAlyZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgICAvL2Vudi5Mb2cud3JpdGUodGhpcywidmlzaXQiLElMb2cuT0ssZSk7fQotCi0gIH0KLSAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvSmF2YU1vZkJlYW5WaXNpdG9yQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0phdmFNb2ZCZWFuVmlzaXRvckFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmVjNjRkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvSmF2YU1vZkJlYW5WaXNpdG9yQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDMxMyAgIDE3NjU4MCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgR2VuZXJhdGUgYSBDbGllbnQgV1MgUHJveHkgYWNjZXB0aW5nIFVSTAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JhY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YVBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5NZXRob2Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1hbmQuTnVsbFN0YXR1c01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1hbmQuU3RhdHVzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uQ29uc3VtcHRpb25NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5WaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLlZpc2l0b3JBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JzLkphdmFNb2ZBdHRyaWJ1dGVWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9ycy5KYXZhTW9mRmllbGRWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9ycy5KYXZhTW9mTWV0aG9kVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5CZWFuRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5CZWFuTW9kZWxFbGVtZW50c0ZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnNlbGVjdGlvbi5Cb29sZWFuU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuQ2hvaWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIEphdmFNb2ZCZWFuVmlzaXRvckFjdGlvbi4KLSogVGhpcyBWaXNpdG9yQWN0aW9uIHdpbGwgY3JlYXRlIGEgQmVhbkVsZW1lbnQgdXNpbmcgdGhlCi0qIEphdmFDbGFzcyBhbmQgdGhlIEJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeQotKiBJdCB3aWxsIGFsc28gYXV0b21hdGljYWxseSB3YWxrIHRoZSBtZXRob2RzIGluIHRoZSBKYXZhQ2xhc3MKLSogKi8KLXB1YmxpYyBjbGFzcyBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24gaW1wbGVtZW50cyBWaXNpdG9yQWN0aW9uCi17Ci0KLSAgcHJvdGVjdGVkIElFbnZpcm9ubWVudCBlbnZfOwotICBwcm90ZWN0ZWQgVmlzaXRvciBmVmlzaXRvcjsKLQotICAvKgotICAqIFRoZSBwcm9qZWN0IHRoYXQgZGVmaW5lcyB0aGUgY29udGV4dAotICAqKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBjbGllbnRQcm9qZWN0OwotCi0gIC8qCi0gICogVGhlIFN0YXR1cyBtb25pdG9yCi0gICoqLwotICBwcm90ZWN0ZWQgU3RhdHVzTW9uaXRvciBtb25pdG9yXzsKLQotICAvKgotICAqIFRoZSBtb2RlbCB0aGF0IHdpbGwgYmUgY3JlYXRlZAotICAqKi8KLSAgcHJvdGVjdGVkIE1vZGVsIGZNb2RlbDsKLQotICAvKgotICAqIFRoaXMgaXMgdGhlIHBhcmVudCBlbGVtZW50IHVzZWQgd2hlbiBjcmVhdGluZyBhCi0gICogbmV3IGVsZW1lbnQKLSAgKi8KLSAgcHJvdGVjdGVkIEVsZW1lbnQgZlBhcmVudEVsZW1lbnQ7Ci0KLSAgLyoKLSAgKiBNZXRob2RzIHByb2Nlc3NlZCBmcm9tIHByb3h5Ci0gICovCi0gIHByb3RlY3RlZCBWZWN0b3IgZkJlYW5zQ3JlYXRlZDsKLQotICBwcml2YXRlIEJvb2xlYW5TZWxlY3Rpb25bXSBmTWV0aG9kc1NlbGVjdGVkOwotCi0gIC8qCi0gICogdGhpcyBib29sZWFuIHRlbGxzIHdldGhlciB0aGUgYmVhbiBpcyBhIHJldHVybiBwYXJhbWV0ZXIgb3IgYW4gaW5wdXQgcGFyYW1ldGVyCi0gICogdXN1YWxseSB0aGlzIHNob3VsZCBiZSBzZXQgYXJvdW5kIHRoZSBwYXJhbWV0ZXJ2aXNpdG9yYWN0aW9uLCBhbmQgcGFzc2VkIG9uIGZyb20gdGhlcmUKLSAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gZlJldHVyblBhcmFtPWZhbHNlOwotCi0gIHB1YmxpYyBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24oU3RyaW5nIGNsaWVudFByb2plY3QsQm9vbGVhblNlbGVjdGlvbltdIG1ldGhvZHMsIElFbnZpcm9ubWVudCBlbnYpCi0gIHsKLSAgICB0aGlzLmNsaWVudFByb2plY3QgPSBjbGllbnRQcm9qZWN0OwotICAgIGZNZXRob2RzU2VsZWN0ZWQgPSBtZXRob2RzOwotCWVudl8gPSBlbnY7Ci0gIH0KLQotCi0KLSAgLyoKLSAgKkNvbnN0cnVjdG9yCi0gICogQHBhcmFtIE1vZGVsIG1vZGVsIGlzIHRoZSBNb2RlbCB0aGF0IHRoaXMgYmVhbiB3aWxsIGJlIHBsYWNlZCBpbgotICAqIEBwYXJhbSBJUHJvamVjdCB1c2VkIGluIG5hdHVyZQotICAqKi8KLSAgcHVibGljIEphdmFNb2ZCZWFuVmlzaXRvckFjdGlvbihNb2RlbCBtb2RlbCwgU3RyaW5nIGNsaWVudFByb2plY3QsIElFbnZpcm9ubWVudCBlbnYpCi0gIHsKLSAgICB0aGlzLmNsaWVudFByb2plY3QgPSBjbGllbnRQcm9qZWN0OwotICAgIGZNb2RlbCA9IG1vZGVsOwotCWVudl8gPSBlbnY7Ci0gIH0KLQotICAvKgotICAqQ29uc3RydWN0b3IKLSAgKiBAcGFyYW0gRWxlbWVudCB0aGUgcGFyZW50IGVsZW1lbnQgdGhhdCB0aGlzIGVsZW1lbnQgd2lsbCBiZSBhZGRlZCB0b28KLSAgKiBAcGFyYW0gSVByb2plY3QgdXNlZCBpbiBuYXR1cmUKLSAgKiovCi0gIHB1YmxpYyBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24oRWxlbWVudCBwYXJlbnRFbGVtZW50LCBTdHJpbmcgY2xpZW50UHJvamVjdCwgSUVudmlyb25tZW50IGVudiApCi0gIHsKLSAgICBmUGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnQ7Ci0gICAgdGhpcy5jbGllbnRQcm9qZWN0ID0gY2xpZW50UHJvamVjdDsKLQllbnZfID0gZW52OwotICB9Ci0KLSAgLyoqCi0gICogVGhlIHZpc2l0IHdpbGwgY3JlYXRlIHRoZSBiZWFuCi0gICogV2FsayB0aGUgbWV0aG9kcwotICAqIEBwYXJhbSBKYXZhQ2xhc3MgdGhlIGNsYXNzIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBiZWFuIG1vZGVsCi0gICoqLwotICBwdWJsaWMgSVN0YXR1cyB2aXNpdCAoT2JqZWN0IGphdmFjbGFzcykKLSAgewotICAJQ2hvaWNlIE9LQ2hvaWNlID0gbmV3IENob2ljZSgnTycsIENvbnN1bXB0aW9uTWVzc2FnZXMuTEFCRUxfT0ssIENvbnN1bXB0aW9uTWVzc2FnZXMuREVTQ1JJUFRJT05fT0spOwotICAJQ2hvaWNlIENhbmNlbENob2ljZSA9IG5ldyBDaG9pY2UoJ0MnLCBDb25zdW1wdGlvbk1lc3NhZ2VzLkxBQkVMX0NBTkNFTCwgQ29uc3VtcHRpb25NZXNzYWdlcy5ERVNDUklQVElPTl9DQU5DRUwpOwotICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIEphdmFDbGFzcyBqYXZhQ2xhc3MgPSAoSmF2YUNsYXNzKWphdmFjbGFzczsKLSAgICAKLSAgICAKLSAgICBCZWFuRWxlbWVudCBiZWFuRWxlbWVudCA9IChCZWFuRWxlbWVudClCZWFuTW9kZWxFbGVtZW50c0ZhY3RvcnkuZ2V0QmVhbk1vZGVsRWxlbWVudChqYXZhQ2xhc3MsZlBhcmVudEVsZW1lbnQsZk1vZGVsKTsKLSAgICBpZihiZWFuRWxlbWVudC5pc093bmVyUGFyYW1ldGVyKCkpIHsKLSAgICAgICAgcmVzZXRCZWFuc0NyZWF0ZWQoKTsKLSAgICB9Ci0gICAgZk1vZGVsID0gYmVhbkVsZW1lbnQuZ2V0TW9kZWwoKTsKLQotICAgIC8vdGhpcyBmb3IgdGhlIHN1YnNlcXVlbnQgYmVhbnMgdGhhdCByZXByZXNlbnQgdHlwZXMKLSAgICAvL2ZpcnN0IGRvIHRoZSBhdHRyaWJ1dGVzCi0gICAgLy9pZiB3ZSBhcmUgbm90IG9uIHRoZSByb290Ci0gICAgaWYgKCEoYmVhbkVsZW1lbnQgPT0gZk1vZGVsLmdldFJvb3RFbGVtZW50KCkpKXsKLSAgICAgICBFbnVtZXJhdGlvbiBlID0gZ2V0QmVhbnNDcmVhdGVkKCkuZWxlbWVudHMoKTsKLSAgICAgICB3aGlsZShlLmhhc01vcmVFbGVtZW50cygpKXsKLSAgICAgICAgICBTdHJpbmcgbmFtZSA9IChTdHJpbmcpZS5uZXh0RWxlbWVudCgpOwotICAgICAgICAgIGlmKG5hbWUuZXF1YWxzKGphdmFDbGFzcy5nZXROYW1lKCkpKXsKLSAgICAgICAgICAJc3RhdHVzID0gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyggQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfSlRTX0NZQ0xJQ19CRUFOICk7Ci0gICAgICAgICAgICAvL2dldFN0YXR1c01vbml0b3IoKS5yZXBvcnRTdGF0dXMobmV3IFN0YXR1cyhJU3RhdHVzLldBUk5JTkcsV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELDAsCi0gICAgICAgICAgICAJCQkvL1dlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5nZXRNZXNzYWdlKCAiJU1TR19FUlJPUl9KVFNfQ1lDTElDX0JFQU4iICksbnVsbCkpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICAgICAgICB9Ci0gICAgICAgfQotICAgICAgIAotICAgICAgIEphdmFNb2ZBdHRyaWJ1dGVWaXNpdG9yQWN0aW9uIGF0dHJpYnV0ZVZpc2l0b3JBY3Rpb24gPSBuZXcgSmF2YU1vZkF0dHJpYnV0ZVZpc2l0b3JBY3Rpb24oYmVhbkVsZW1lbnQsY2xpZW50UHJvamVjdCwgZW52Xyk7Ci0gICAgICAgLy9hdHRyaWJ1dGVWaXNpdG9yQWN0aW9uLnNldFN0YXR1c01vbml0b3IoZ2V0U3RhdHVzTW9uaXRvcigpKTsKLSAgICAgICBWZWN0b3IgY2hpbGRWZWN0b3IgPSAoKFZlY3RvcilnZXRCZWFuc0NyZWF0ZWQoKS5jbG9uZSgpKTsKLSAgICAgICBjaGlsZFZlY3Rvci5hZGRFbGVtZW50KGphdmFDbGFzcy5nZXROYW1lKCkpOyAgCi0gICAgICAgYXR0cmlidXRlVmlzaXRvckFjdGlvbi5zZXRCZWFuc0NyZWF0ZWQoY2hpbGRWZWN0b3IpOwotICAgICAgIGF0dHJpYnV0ZVZpc2l0b3JBY3Rpb24uc2V0UmV0dXJuUGFyYW0oZ2V0UmV0dXJuUGFyYW0oKSk7Ci0gICAgICAgSmF2YU1vZkF0dHJpYnV0ZVZpc2l0b3IgYXR0cmlidXRlVmlzaXRvciA9IG5ldyBKYXZhTW9mQXR0cmlidXRlVmlzaXRvcigpOwotICAgICAgIGF0dHJpYnV0ZVZpc2l0b3Iuc2V0UmV0dXJuUGFyYW1ldGVyKGdldFJldHVyblBhcmFtKCkpOwotICAgICAgIGF0dHJpYnV0ZVZpc2l0b3Iuc2V0UHJvamVjdChnZXRQcm9qZWN0KCkpOwotICAgICAgIGF0dHJpYnV0ZVZpc2l0b3Iuc2V0RW52aXJvbm1lbnQoZW52Xyk7Ci0gICAgICAgc3RhdHVzID0gYXR0cmlidXRlVmlzaXRvci5ydW4oamF2YUNsYXNzLGF0dHJpYnV0ZVZpc2l0b3JBY3Rpb24pOwotICAgICAgIC8vCi0gICAgICAgaW50IHNldmVyaXR5ID0gc3RhdHVzLmdldFNldmVyaXR5KCk7IAotICAgICAgIGlmIChzZXZlcml0eT09U3RhdHVzLkVSUk9SKQotICAgICAgIAlyZXR1cm4gc3RhdHVzOwotICAgICAgIAotICAgICAgIGlmIChzZXZlcml0eT09U3RhdHVzLldBUk5JTkcpCi0gICAgICAgewotICAgICAgICAgQ2hvaWNlIHJlc3VsdCA9IGVudl8uZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydChzdGF0dXMsIG5ldyBDaG9pY2VbXXtPS0Nob2ljZSwgQ2FuY2VsQ2hvaWNlfSk7Ci0gICAgICAgICBpZiAocmVzdWx0LmdldExhYmVsKCkuZXF1YWxzKENhbmNlbENob2ljZS5nZXRMYWJlbCgpKSkKLSAgICAgICAgIHsKLSAgICAgICAgIAkgLy9yZXR1cm4gYW4gZXJyb3Igc3RhdHVzIHNpbmNlIHRoZSB1c2VyIGNhbmNlbGVkCi0gICAgICAgICAJICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfU0FNUExFX0NSRUFUSU9OX0NBTkNFTEVEICk7Ci0gICAgICAgICB9Ci0gICAgICAgICAJCi0gICAgICAgfQotICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0KLSAgICAgICBKYXZhTW9mRmllbGRWaXNpdG9yQWN0aW9uIGZpZWxkVmlzaXRvckFjdGlvbiA9IG5ldyBKYXZhTW9mRmllbGRWaXNpdG9yQWN0aW9uKGJlYW5FbGVtZW50LGNsaWVudFByb2plY3QsIGVudl8pOwotICAgICAgIC8vZmllbGRWaXNpdG9yQWN0aW9uLnNldFN0YXR1c01vbml0b3IoZ2V0U3RhdHVzTW9uaXRvcigpKTsKLSAgICAgICBWZWN0b3IgY2hpbGRWZWN0b3IyID0gKChWZWN0b3IpZ2V0QmVhbnNDcmVhdGVkKCkuY2xvbmUoKSk7Ci0gICAgICAgY2hpbGRWZWN0b3IyLmFkZEVsZW1lbnQoamF2YUNsYXNzLmdldE5hbWUoKSk7ICAKLSAgICAgICBmaWVsZFZpc2l0b3JBY3Rpb24uc2V0QmVhbnNDcmVhdGVkKGNoaWxkVmVjdG9yMik7Ci0gICAgICAgZmllbGRWaXNpdG9yQWN0aW9uLnNldFJldHVyblBhcmFtKGdldFJldHVyblBhcmFtKCkpOwotICAgICAgIEphdmFNb2ZGaWVsZFZpc2l0b3IgZmllbGRWaXNpdG9yID0gbmV3IEphdmFNb2ZGaWVsZFZpc2l0b3IoKTsKLSAgICAgICBmaWVsZFZpc2l0b3Iuc2V0UHJvamVjdChnZXRQcm9qZWN0KCkpOwotICAgICAgIHN0YXR1cyA9IGZpZWxkVmlzaXRvci5ydW4oamF2YUNsYXNzLGZpZWxkVmlzaXRvckFjdGlvbik7Ci0gICAgICAgLy8KLSAgICAgICBzZXZlcml0eSA9IHN0YXR1cy5nZXRTZXZlcml0eSgpOyAKLSAgICAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5FUlJPUikKLSAgICAgICAJcmV0dXJuIHN0YXR1czsKLSAgICAgICAKLSAgICAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5XQVJOSU5HKQotICAgICAgIHsKLSAgICAgICAgIENob2ljZSByZXN1bHQgPSBlbnZfLmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzLCBuZXcgQ2hvaWNlW117T0tDaG9pY2UsIENhbmNlbENob2ljZX0pOwotICAgICAgICAgaWYgKHJlc3VsdC5nZXRMYWJlbCgpLmVxdWFscyhDYW5jZWxDaG9pY2UuZ2V0TGFiZWwoKSkpCi0gICAgICAgICB7Ci0gICAgICAgICAJIC8vcmV0dXJuIGFuIGVycm9yIHN0YXR1cyBzaW5jZSB0aGUgdXNlciBjYW5jZWxlZAotICAgICAgICAgCSAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9TQU1QTEVfQ1JFQVRJT05fQ0FOQ0VMRUQgKTsKLSAgICAgICAgIH0KLSAgICAgICAgIAkKLSAgICAgICB9Ci0gICAgICAgLy8gICAgICAgCi0gICAgICAgCi0gICB9Ci0KLSAgICAvL3RoaXMgaXMgdG8gaW5zdXJlIHdlIGFyZSBvbiB0aGUgcHJveHkKLSAgICAvL25vdyBkbyB0aGUgbWV0aG9kcwotICAgIGlmIChiZWFuRWxlbWVudCA9PSBmTW9kZWwuZ2V0Um9vdEVsZW1lbnQoKSl7Ci0gICAgICAvL2ZpcnN0IGxldHMgbWFrZSBzdXJlIHRoZSBwcm94eSBpcyBpbiBnb29kIGZvcm0KLSAgICAgIC8vLWl0IGhhcyBhIGRlZmF1bHQgY29uc3RydWN0b3IKLSAgICAgIC8vLWl0IGhhcyBhdCBsZWFzdCBvbmUgbWV0aG9kCi0gICAgICAvL290aGVyd2lzZSByZXR1cm4gdGhlIHByb2JsZW0gaW4gdGhlIGZvcm0gb2YgYSBzdGF0dXMKLQotICAgICAgaWYgKCFwcm94eUNoZWNrKGphdmFDbGFzcywgc3RhdHVzKSkgcmV0dXJuIHN0YXR1czsKLSAgICAgIEphdmFNb2ZNZXRob2RWaXNpdG9yQWN0aW9uIG1ldGhvZFZpc2l0b3JBY3Rpb24gPSBuZXcgSmF2YU1vZk1ldGhvZFZpc2l0b3JBY3Rpb24oYmVhbkVsZW1lbnQsY2xpZW50UHJvamVjdCwgZW52Xyk7Ci0gICAgICAKLSAgICAgIC8vbWV0aG9kVmlzaXRvckFjdGlvbi5zZXRTdGF0dXNNb25pdG9yKGdldFN0YXR1c01vbml0b3IoKSk7Ci0gICAgICBKYXZhTW9mTWV0aG9kVmlzaXRvciBtZXRob2RWaXNpdG9yID0gbmV3IEphdmFNb2ZNZXRob2RWaXNpdG9yKCk7Ci0gICAgICBtZXRob2RWaXNpdG9yLnNldE1ldGhvZFNlbGVjdGlvbihmTWV0aG9kc1NlbGVjdGVkKTsKLSAgICAgIHN0YXR1cyA9IG1ldGhvZFZpc2l0b3IucnVuKGphdmFDbGFzcyxtZXRob2RWaXNpdG9yQWN0aW9uKTsKLQotICAgICAgLy8KLSAgICAgIGludCBzZXZlcml0eSA9IHN0YXR1cy5nZXRTZXZlcml0eSgpOyAKLSAgICAgIGlmIChzZXZlcml0eT09U3RhdHVzLkVSUk9SKQotICAgICAgCXJldHVybiBzdGF0dXM7Ci0gICAgICAKLSAgICAgIGlmIChzZXZlcml0eT09U3RhdHVzLldBUk5JTkcpCi0gICAgICB7Ci0gICAgICAgIENob2ljZSByZXN1bHQgPSBlbnZfLmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzLCBuZXcgQ2hvaWNlW117T0tDaG9pY2UsIENhbmNlbENob2ljZX0pOwotICAgICAgICBpZiAocmVzdWx0LmdldExhYmVsKCkuZXF1YWxzKENhbmNlbENob2ljZS5nZXRMYWJlbCgpKSkKLSAgICAgICAgewotICAgICAgICAJIC8vcmV0dXJuIGFuIGVycm9yIHN0YXR1cyBzaW5jZSB0aGUgdXNlciBjYW5jZWxlZAotICAgICAgICAJICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1NBTVBMRV9DUkVBVElPTl9DQU5DRUxFRCApOwotICAgICAgICB9Ci0gICAgICAgIAkKLSAgICAgIH0KLSAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgLy9UaGlzIGlzIHdoZXJlIHdlIGNoZWNrIGZvciBzZXZlcmFsIHRoaW5nczoKLSAgICAgIC8vLWlmIG5vIG1ldGhvZHMgd2VyZSBwcm9jZXNzZWQgYmVjYXVzZSBvZiB1bnN1cHBvcnRlZCB0eXBlcyB0aGVuIHdlIHNlbmQgYmFjayB0aGF0IHJlc3VsdAotICAgICAgLy8taWYgdGhlcmUgd2VyZSBhbnkgbWV0aG9kcyBvbWl0dGVkIHdlIHNob3VsZCB3YXJuIHRoZW0KLQotICAgICAgLy9maXJzdCBubyBtZXRob2RzCi0gICAgICBpZiAoIW1ldGhvZFZpc2l0b3JBY3Rpb24ud2VyZU1ldGhvZHNQcm9jZXNzZWQoKSl7Ci0gICAgICAgIC8vdGhpcyBoYXMgdG8gYmUgZG9uZSB0byBpbnN1cmUgdGhlIGRpYWxvZyBpcyBhbiBlcnJvcgotICAgICAgCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9KVFNfTk9fUFJPWFlfTUVUSE9EU19QUk9DRVNTRUQgKTsKLSAgICAgIAlyZXR1cm4gc3RhdHVzOwotICAgICAgICAvL2dldFN0YXR1c01vbml0b3IoKS5yZXBvcnRTdGF0dXMoIG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUixXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsMCwKLSAgICAgICAgLy8JCVdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5nZXRNZXNzYWdlKCAiJU1TR19FUlJPUl9KVFNfTk9fUFJPWFlfTUVUSE9EU19QUk9DRVNTRUQiICksbnVsbCkpOwotICAgICAgfSAgICAgICAgCQotICAgICAgLy9ub3cgbWV0aG9kcyBvbWl0dGVkCi0gICAgICBlbHNlIGlmKG1ldGhvZFZpc2l0b3JBY3Rpb24ud2VyZU1ldGhvZHNPbWl0dGVkKCkpewotICAgICAgICAvL1RoZSBkaWFsb2cgaXMgYWxyZWFkeSBhIHdhcm5pbmcgc28gd2UganVzdCBuZWVkIHRvIHNldCB0aGUgb3ZlcmFsbCBtZXNzYWdlCi0gICAgICAJc3RhdHVzID0gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyggQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfV0FSTl9KVFNfUFJPWFlfTUVUSE9EU19PTUlUVEVEICk7Ci0gICAgICAJcmV0dXJuIHN0YXR1czsKLSAgICAgICAgLy9nZXRTdGF0dXNNb25pdG9yKCkucmVwb3J0U3RhdHVzKCBuZXcgU3RhdHVzKElTdGF0dXMuV0FSTklORyxXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsMCwKLSAgICAgICAgLy8JCUNvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX1dBUk5fSlRTX1BST1hZX01FVEhPRFNfT01JVFRFRCxudWxsKSk7Ci0gICAgICB9CQotICAgIH0KLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZShTdHJpbmcgcmVzaWRlbnQpCi0gIHsKLSAgICAvL25vdGhpbmcgdG8gYmUgZG9uZSBidXQgbXVzdCBiZSBpbXBsZW1lbnRlZAotICB9Ci0KLQotICAvKgotICAqIFJldHVybiB0aGUgbW9kZWwgdGhhdCB3YXMgY3JlYXRlZAotICAqIEByZXR1cm4gTW9kZWwgdGhlIGJlYW4gbW9kZWwgdGhhdCB3YXMgY3JlYXRlZAotICAqLwotICBwdWJsaWMgTW9kZWwgZ2V0TW9kZWwoKQotICB7Ci0gICAgcmV0dXJuIGZNb2RlbDsKLSAgfQotCi0gIC8qCi0gICogVGhlIHByb3h5IGNoZWNrIGluc3VyZXMgdGhlcmUgaXMgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIGFuZAotICAqIGF0IExlYXN0IG9uZSBtZXRob2QKLSAgKiBAcGFyYW0gSmF2YUNsYXNzIGphdmFDbGFzcyBpcyB1c2VkIHRvIHRyYXZlcnNlIHRoZSBtZXRob2RzIG9uIHRoZSBwcm94eQotICAqLwotICBwdWJsaWMgYm9vbGVhbiBwcm94eUNoZWNrKEphdmFDbGFzcyBqYXZhQ2xhc3MsIElTdGF0dXMgc3RhdHVzKQotICB7Ci0gICAgIC8vIGZpcnN0IGNoZWNrIGZvciBhIG1ldGhvZAotICAgICBJdGVyYXRvciBtPWphdmFDbGFzcy5nZXRQdWJsaWNNZXRob2RzKCkuaXRlcmF0b3IoKTsKLSAgICAgaWYgKCFtLmhhc05leHQoKSl7Ci0gICAgIAlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfSlRTX1BST1hZX0hBU19OT19NRVRIT0RTICk7Ci0gICAgICAgLy9nZXRTdGF0dXNNb25pdG9yKCkucmVwb3J0U3RhdHVzKCBuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELDAsCi0gICAgICAgLy8JCQlDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9KVFNfUFJPWFlfSEFTX05PX01FVEhPRFMsbnVsbCkpOwotICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgfQkKLSAgICAgLy9ub3cgY2hlY2sgZm9yIGEgZGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgICB3aGlsZSAobS5oYXNOZXh0KCkpIHsKLSAgICAgICBNZXRob2QgbWV0aG9kPShNZXRob2QpbS5uZXh0KCk7Ci0gICAgICAgaWYgKGphdmFDbGFzcy5nZXROYW1lKCkuZXF1YWxzKG1ldGhvZC5nZXROYW1lKCkpKXsKLSAgICAgICAgICAvL25vdyB0aGUgaW5wdXRzCi0gICAgICAgICAgSmF2YVBhcmFtZXRlciBqYXZhUGFyYW1ldGVyW10gPSBtZXRob2QubGlzdFBhcmFtZXRlcnNXaXRob3V0UmV0dXJuKCk7Ci0gICAgICAgICAgaWYgKGphdmFQYXJhbWV0ZXIubGVuZ3RoID09IDApCi0gICAgICAgIAkgIHJldHVybiB0cnVlOwotICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotCi0gIH0KLQotIC8qKgotICAqIFNldHMgdGhlIHN0YXR1cyBtb25pdG9yIHRoYXQgdGhpcyBhY3Rpb24gd2lsbCB1c2UgdG8gcmVwb3J0IHN0YXR1cyB0aGF0IG9jY3JlcyB3aGlsZSBleGVjdXRpbmcgdGhlIEFjdGlvbi4KLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0U3RhdHVzTW9uaXRvciAoIFN0YXR1c01vbml0b3IgbW9uaXRvciApCi0gIHsKLQltb25pdG9yXyA9IG1vbml0b3I7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBzdGF0dXMgbW9uaXRvciB0aGF0IHRoaXMgdGFzayBpcyB1c2luZyB0byByZXBvcnQgc3RhdHVzLgotICAqLwotICBwdWJsaWMgU3RhdHVzTW9uaXRvciBnZXRTdGF0dXNNb25pdG9yICgpCi0gIHsKLSAgICBpZiAobW9uaXRvcl8gPT0gbnVsbCkKLSAgICB7Ci0gICAgICBtb25pdG9yXyA9IG5ldyBOdWxsU3RhdHVzTW9uaXRvcigpOwotICAgIH0KLSAgICByZXR1cm4gbW9uaXRvcl87Ci0gIH0KLQotCi0gICAvKioKLSAgKiBjaGVjayBpZiB0aGUgYWN0aW9uIGhhcyBmaW5pc2hlZCBzdWNzZXNzZnVsbHkgCi0gICovCi0gIC8qCi0gIHB1YmxpYyBib29sZWFuIGlzU3VjY2Vzc2Z1bCAoKQotICB7Ci0gICAJcmV0dXJuIGdldFN0YXR1c01vbml0b3IoKS5jYW5Db250aW51ZSgpOwotICB9Ci0gICovIAotICBwdWJsaWMgdm9pZCByZXNldEJlYW5zQ3JlYXRlZCgpCi0gIHsKLSAgICBmQmVhbnNDcmVhdGVkID0gbmV3IFZlY3RvcigpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RW52aXJvbm1lbnQoSUVudmlyb25tZW50IGVudikKLSAgewotICAJZW52XyA9IGVudjsKLSAgfQotICAKLSAgLyoKLSAgKiBUaGUgY29tbWFuZCB0aGF0IGNhbGxlZCB0aGlzIHdpbGwgZ2V0IHRoZSByZXN1bHRzIG9mIHRoZSBvcGVyYXRpb24gaW4gdGhlIGZvcm0KLSAgKiBvZiBhIHN0YXR1cy4KLSAgKi8KLSAgcHVibGljIFZlY3RvciBnZXRCZWFuc0NyZWF0ZWQgKCkKLSAgewotICAgIGlmKGZCZWFuc0NyZWF0ZWQgPT0gbnVsbCkgZkJlYW5zQ3JlYXRlZCA9IG5ldyBWZWN0b3IoKTsKLSAgICByZXR1cm4gZkJlYW5zQ3JlYXRlZDsKLSAgfQotCi0gIC8qCi0gICogVGhlIGNvbW1hbmQgdGhhdCBjYWxsZWQgdGhpcyB3aWxsIGdldCB0aGUgcmVzdWx0cyBvZiB0aGUgb3BlcmF0aW9uIGluIHRoZSBmb3JtCi0gICogb2YgYSBzdGF0dXMuCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldEJlYW5zQ3JlYXRlZCAoVmVjdG9yIGJlYW5zQ3JlYXRlZCkKLSAgewotICAgIGZCZWFuc0NyZWF0ZWQgPSBiZWFuc0NyZWF0ZWQ7Ci0gIH0KLQotICAgLyoKLSAgKiBUaGlzIGJvb2xlYW4gdGVsbHMgd2V0aGVyIHdlIGFyZSBkZWFsaW5nIHdpdGggYSByZXR1cm4gcGFyYW0gCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGdldFJldHVyblBhcmFtICgpCi0gIHsKLSAgICByZXR1cm4gZlJldHVyblBhcmFtOwotICB9Ci0KLSAgLyoKLSAgKiBUaGlzIGJvb2xlYW4gdGVsbHMgd2V0aGVyIHdlIGFyZSBkZWFsaW5nIHdpdGggYSByZXR1cm4gcGFyYW0gCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFJldHVyblBhcmFtIChib29sZWFuIHJldHVybnBhcmFtKQotICB7Ci0gICAgZlJldHVyblBhcmFtID0gcmV0dXJucGFyYW07Ci0gIH0KLQotICAgLyoKLSAgKiBUaGlzIGJvb2xlYW4gdGVsbHMgd2V0aGVyIHdlIGFyZSBkZWFsaW5nIHdpdGggYSByZXR1cm4gcGFyYW0gCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJvamVjdCAoKQotICB7Ci0gICAgcmV0dXJuIGNsaWVudFByb2plY3Q7Ci0gIH0KLQotICAvKgotICAqIFRoaXMgYm9vbGVhbiB0ZWxscyB3ZXRoZXIgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHJldHVybiBwYXJhbSAKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0UHJvamVjdCAoU3RyaW5nIGNsaWVudFByb2plY3QpCi0gIHsKLSAgICB0aGlzLmNsaWVudFByb2plY3QgPSBjbGllbnRQcm9qZWN0OwotICB9Ci0KLQotICAvKioKLSAgKiBzZXRzIHRoZSB2aXNpdG9yIHRoYXQgY2FsbHMgdGhlIHZpc2l0Ci0gICogQHBhcmFtZXRlciBWaXNpdG9yCi0gICovCi0KLSAgcHVibGljIHZvaWQgc2V0VmlzaXRvcihWaXNpdG9yIHZpc2l0b3IpCi0gIHsKLSAgICAgIGZWaXNpdG9yID0gdmlzaXRvcjsKLSAgfQotCi0gIC8qCi0gICogU2V0cyB0aGUgcGFyZW50IGVsZW1lbnQgdGhlIGNoaWxkIHRoZW4ga25vd3Mgd2hlcmUgdG8KLSAgKiBhZGQgaXRzZWxmIHRvIHRoZSBtb2RlbAotICAqIEBwYXJhbSBFbGVtZW50IHBhcmVudCBlbGVtZW50Ci0gICovCi0gIHB1YmxpYyB2b2lkIHNldFBhcmVudEVsZW1lbnQoRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgZlBhcmVudEVsZW1lbnQgPSBlbGVtZW50OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0phdmFNb2ZGaWVsZFZpc2l0b3JBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvSmF2YU1vZkZpZWxkVmlzaXRvckFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjQyNTdhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvSmF2YU1vZkZpZWxkVmlzaXRvckFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JhY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5GaWVsZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhSGVscGVyczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uQ29uc3VtcHRpb25NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5qYXZhbW9mdmlzaXRvcnMuSmF2YU1vZlR5cGVWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLkJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5GaWVsZEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuVHlwZUZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LlN0YXR1c0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24uCi0qIFRoaXMgVmlzaXRvckFjdGlvbiB3aWxsIGNyZWF0ZSBhIEF0dHJpYnV0ZUVsZW1lbnQgdXNpbmcgdGhlCi0qIEphdmFDbGFzcyBhbmQgdGhlIEJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeQotKiBJdCB3aWxsIGFsc28gYXV0b21hdGljYWxseSB3YWxrIGEgY29tcGxleCB0eXBlCi0qICovCi1wdWJsaWMgY2xhc3MgSmF2YU1vZkZpZWxkVmlzaXRvckFjdGlvbiBleHRlbmRzIEphdmFNb2ZCZWFuVmlzaXRvckFjdGlvbgotewotCi0gIC8qCi0gICpDb25zdHJ1Y3RvcgotICAqKi8KLSAgcHVibGljIEphdmFNb2ZGaWVsZFZpc2l0b3JBY3Rpb24oRWxlbWVudCBwYXJlbnRFbGVtZW50LCBTdHJpbmcgcHJvamVjdCwgSUVudmlyb25tZW50IGVudikKLSAgewotICAgIHN1cGVyKHBhcmVudEVsZW1lbnQscHJvamVjdCwgZW52KTsKLSAgfQotCi0KLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBmaWVsZF8pCi0gIHsKLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICBGaWVsZCBmaWVsZCA9IChGaWVsZClmaWVsZF87Ci0gICAgIAotICAgIHRyeXsKLSAgICAgICAvL2lmIHRoZSB0eXBlIG9mIHRoaXMgYXR0cmlidXRlIGlzIHVuc3VwcG9ydGVkIGRvbnQgbWFrZSBhbiBBdHRyaWJ1dGUKLSAgICAgIGlmKCEoZ2V0UmV0dXJuUGFyYW0oKSAmJiBUeXBlRmFjdG9yeS5pc1JlY29nbml6ZWRSZXR1cm5UeXBlKChKYXZhSGVscGVycylmaWVsZC5nZXRKYXZhQ2xhc3MoKSkpIAotICAgICAgCSYmIChUeXBlRmFjdG9yeS5pc1VuU3VwcG9ydGVkVHlwZSgoSmF2YUhlbHBlcnMpZmllbGQuZ2V0SmF2YUNsYXNzKCkpKSl7Ci0gICAgICAJICBzdGF0dXMgPSBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19XQVJOX0pUU19VTlNVUFBPUlRFRF9UWVBFICsgKChKYXZhSGVscGVycylmaWVsZC5nZXRKYXZhQ2xhc3MoKSkuZ2V0SmF2YU5hbWUoKSApOwotCSAgICAgIC8vZ2V0U3RhdHVzTW9uaXRvcigpLnJlcG9ydFN0YXR1cyggbmV3IFN0YXR1cyhJU3RhdHVzLldBUk5JTkcsV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELDAsCi0JICAgICAgLy9Db25zdW1wdGlvbk1lc3NhZ2VzLk1TR19XQVJOX0pUU19VTlNVUFBPUlRFRF9UWVBFICsgKChKYXZhSGVscGVycylmaWVsZC5nZXRKYXZhQ2xhc3MoKSkuZ2V0SmF2YU5hbWUoKSxudWxsKSk7Ci0JICAgICAgcmV0dXJuIHN0YXR1czsKLQkgIH0JCi0KLQotICAgICAgRmllbGRFbGVtZW50IGZpZWxkRWxlbWVudCA9IChGaWVsZEVsZW1lbnQpQmVhbk1vZGVsRWxlbWVudHNGYWN0b3J5LmdldEJlYW5Nb2RlbEVsZW1lbnQoZmllbGQsZlBhcmVudEVsZW1lbnQpOwotCi0gICAgICBpZihmaWVsZEVsZW1lbnQgIT0gbnVsbCl7Ci0gICAgICAgIC8vbGV0cyBjaGVjayBhbmQgc2VlIGlmIHRoZSBnZXR0ZXIgdGFrZXMgaW5wdXQgcGFyYW1zCi0gICAgICAgIC8vaWYgc28gdGhyb3cgYW4gZXJyb3IKLSAgICAgICAgLy9ub3cgdGhlIGlucHV0cwotICAgICAgICAKLSAgICAgICAgSmF2YU1vZlR5cGVWaXNpdG9yQWN0aW9uIHR5cGVWaXNpdG9yQWN0aW9uID0gbmV3IEphdmFNb2ZUeXBlVmlzaXRvckFjdGlvbihmaWVsZEVsZW1lbnQsY2xpZW50UHJvamVjdCwgZW52Xyk7Ci0gICAgICAgIHR5cGVWaXNpdG9yQWN0aW9uLnNldFN0YXR1c01vbml0b3IoZ2V0U3RhdHVzTW9uaXRvcigpKTsKLSAgICAgICAgdHlwZVZpc2l0b3JBY3Rpb24uc2V0QmVhbnNDcmVhdGVkKGdldEJlYW5zQ3JlYXRlZCgpKTsKLSAgICAgICAgdHlwZVZpc2l0b3JBY3Rpb24uc2V0UmV0dXJuUGFyYW0oZ2V0UmV0dXJuUGFyYW0oKSk7IAotICAgICAgICBKYXZhTW9mVHlwZVZpc2l0b3IgdHlwZVZpc2l0b3IgPSBuZXcgSmF2YU1vZlR5cGVWaXNpdG9yKGVudl8pOwotICAgICAgICB0eXBlVmlzaXRvci5zZXRDbGllbnRQcm9qZWN0KGdldFByb2plY3QoKSk7Ci0gICAgICAgIHN0YXR1cyA9IHR5cGVWaXNpdG9yLnJ1bihmaWVsZCx0eXBlVmlzaXRvckFjdGlvbik7Ci0gICAgICAgCi0gICAgICB9Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIAotICAgIH1jYXRjaChFeGNlcHRpb24gZSkKLQl7Ci0gICAgCWVudl8uZ2V0TG9nKCkubG9nKElMb2cuV0FSTklORywgNTA1NSwgdGhpcywgInZpc2l0IiwgZSk7Ci0gICAgCXN0YXR1cyA9IFN0YXR1c1V0aWxzLndhcm5pbmdTdGF0dXMoCUNvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0pUU19KU1BfR0VOLCBlKTsKLSAgICAJdHJ5IHsKLSAgICAJCWVudl8uZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydChzdGF0dXMpOwotICAgIAl9IAotICAgICAgY2F0Y2ggKFN0YXR1c0V4Y2VwdGlvbiBlMSkgCi0gICAgICB7Ci0gICAgCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9KVFNfSlNQX0dFTiwgZTEgKTsKLSAgICAJfQotICAgIAlyZXR1cm4gc3RhdHVzOwotCX0KLQotICB9Ci0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0phdmFNb2ZNZXRob2RWaXNpdG9yQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0phdmFNb2ZNZXRob2RWaXNpdG9yQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNTE2NjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9yYWN0aW9ucy9KYXZhTW9mTWV0aG9kVmlzaXRvckFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjE5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUhlbHBlcnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YVBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5NZXRob2Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JzLkphdmFNb2ZQYXJhbWV0ZXJWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLkJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5NZXRob2RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLlR5cGVGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24uCi0qIFRoaXMgVmlzaXRvckFjdGlvbiB3aWxsIGNyZWF0ZSBhIEJlYW5FbGVtZW50IHVzaW5nIHRoZSAKLSogSmF2YUNsYXNzIGFuZCB0aGUgQmVhbk1vZGVsRWxlbWVudHNGYWN0b3J5Ci0qIEl0IHdpbGwgYWxzbyBhdXRvbWF0aWNhbGx5IHdhbGsgdGhlIG1ldGhvZHMgaW4gdGhlIEphdmFDbGFzcwotKiAqLwotcHVibGljIGNsYXNzIEphdmFNb2ZNZXRob2RWaXNpdG9yQWN0aW9uIGV4dGVuZHMgSmF2YU1vZkJlYW5WaXNpdG9yQWN0aW9uIAotewotCi0gIHB1YmxpYyBTdHJpbmcgZlVuc3VwcG9ydGVkUGFyYW1ldGVyTmFtZTsKLQotIC8qCi0gICogTWV0aG9kcyBvbWl0dGVkIGZyb20gdGhlIHByb3h5Ci0gICovCi0gIHByb3RlY3RlZCBWZWN0b3IgZk1ldGhvZHNPbWl0dGVkOwotCi0gIC8qCi0gICogTWV0aG9kcyBwcm9jZXNzZWQgZnJvbSBwcm94eQotICAqLwotICBwcm90ZWN0ZWQgVmVjdG9yIGZNZXRob2RzUHJvY2Vzc2VkOwotCi0gICAgIAotICAvKgotICAqQ29uc3RydWN0b3IKLSAgKiovCi0gIHB1YmxpYyBKYXZhTW9mTWV0aG9kVmlzaXRvckFjdGlvbihFbGVtZW50IHBhcmVudEVsZW1lbnQsU3RyaW5nIHByb2plY3QsIElFbnZpcm9ubWVudCBlbnYpCi0gIHsKLSAgICBzdXBlcihwYXJlbnRFbGVtZW50LHByb2plY3QsIGVudik7Ci0gICAgZk1ldGhvZHNPbWl0dGVkID0gbmV3IFZlY3RvcigpOwotICAgIGZNZXRob2RzUHJvY2Vzc2VkID0gbmV3IFZlY3RvcigpOwotCi0gIH0KLSAgIAotICAvKioKLSAgKiBDcmVhdGUgYSBtZXRob2QgZWxlbWVudCBmcm9tIHRoZSBtZXRob2QgCi0gICogQHBhcmFtIE1ldGhvZCB0aGUgY2xhc3MgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIG1ldGhvZAotICAqKi8KLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBpbWV0aG9kKQotICB7Ci0gIAlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgTWV0aG9kIG1ldGhvZCA9IChNZXRob2QpaW1ldGhvZDsKLSAgICAgICAgICAgCi0gICAgaWYgKG1ldGhvZENoZWNrKG1ldGhvZCkpewotICAgICAgLy90aGlzIGlzIHRvIGNoZWNrIGltbWVkaWF0ZSBpbnB1dCBhbmQgcmV0dXJuIHBhcmFtZXRlcnMKLSAgICAgIC8vaWYgdGhlcmUgaXMgYW4gdW5zdXBwb3J0ZWQgdHlwZSBpbiB0aGVzZSB3ZSBjYW4gcmVhY3QgaW1tZWRpYXRlbHkKLSAgICAgIC8vd2UgYWRkIGl0IHRvIHRoZSBvbWl0dGVkIG1ldGhvZHMgYW4gZ28gdG8gdGhlIG5leHQgb25lCi0gICAgICBpZighcGFyYW1ldGVyQ2hlY2sobWV0aG9kKSl7Ci0gICAgICAJc3RhdHVzID0gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyhDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19XQVJOX0pUU19VTlNVUFBPUlRFRF9QQVJBTUVURVJTX0FSUkFZUyArIGZVbnN1cHBvcnRlZFBhcmFtZXRlck5hbWUgKTsKLSAgICAgICAgLy9nZXRTdGF0dXNNb25pdG9yKCkucmVwb3J0U3RhdHVzIChuZXcgU3RhdHVzKElTdGF0dXMuV0FSTklORyxXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsMCwKLSAgICAgICAgLy8JCUNvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX1dBUk5fSlRTX1VOU1VQUE9SVEVEX1BBUkFNRVRFUlNfQVJSQVlTICsgZlVuc3VwcG9ydGVkUGFyYW1ldGVyTmFtZSxudWxsKSk7Ci0gICAgICAgIGZNZXRob2RzT21pdHRlZC5hZGRFbGVtZW50KG1ldGhvZC5nZXRNZXRob2RFbGVtZW50U2lnbmF0dXJlKCkpOwotICAgICAgICByZXR1cm4gc3RhdHVzOwotICAgICAgfQotICAgICAgaWYoIW51bGxDb25zdHJ1Y3RvcihtZXRob2QpKXsKLSAgICAgIAlzdGF0dXMgPSBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19XQVJOX0pUU19VTlNVUFBPUlRFRF9QQVJBTUVURVJTX0lOUFVUUyArIGZVbnN1cHBvcnRlZFBhcmFtZXRlck5hbWUgKTsKLSAgICAgICAgLy9nZXRTdGF0dXNNb25pdG9yKCkucmVwb3J0U3RhdHVzIChuZXcgU3RhdHVzKElTdGF0dXMuV0FSTklORyxXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsMCwKLSAgICAgICAJLy8JQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfV0FSTl9KVFNfVU5TVVBQT1JURURfUEFSQU1FVEVSU19JTlBVVFMgKyBmVW5zdXBwb3J0ZWRQYXJhbWV0ZXJOYW1lLG51bGwpKTsKLSAgICAgICAgZk1ldGhvZHNPbWl0dGVkLmFkZEVsZW1lbnQobWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKSk7Ci0gICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgICAKLSAgICAgIH0KLQotICAgICAgLy9jYXJyeSBvbiBhbGwgcGFyYW1ldGVycyBzdXBwb3J0ZWQKLSAgICAgIE1ldGhvZEVsZW1lbnQgbWV0aG9kRWxlbWVudCA9IChNZXRob2RFbGVtZW50KUJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeS5nZXRCZWFuTW9kZWxFbGVtZW50KG1ldGhvZCxmUGFyZW50RWxlbWVudCk7Ci0gICAgICBKYXZhTW9mUGFyYW1ldGVyVmlzaXRvckFjdGlvbiBwYXJhbWV0ZXJWaXNpdG9yQWN0aW9uID0gbmV3IEphdmFNb2ZQYXJhbWV0ZXJWaXNpdG9yQWN0aW9uKG1ldGhvZEVsZW1lbnQsY2xpZW50UHJvamVjdCxlbnZfKTsKLSAgICAgIHBhcmFtZXRlclZpc2l0b3JBY3Rpb24uc2V0U3RhdHVzTW9uaXRvcihnZXRTdGF0dXNNb25pdG9yKCkpOwotICAgICAgSmF2YU1vZlBhcmFtZXRlclZpc2l0b3IgcGFyYW1ldGVyVmlzaXRvciA9IG5ldyBKYXZhTW9mUGFyYW1ldGVyVmlzaXRvcihlbnZfKTsKLSAgICAgIHN0YXR1cyA9IHBhcmFtZXRlclZpc2l0b3IucnVuKG1ldGhvZCxwYXJhbWV0ZXJWaXNpdG9yQWN0aW9uKTsgICAKLSAgICAgIC8vc29tZXRoaW5nIG1heSBoYXZlIGdvbmUgd3Jvbmcgd2l0aCBhbiBpbnRlcm5hbCB0eXBlCi0gICAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkhPVN0YXR1cy5PSyl7Ci0gICAgICAgIC8vVGhpcyBtZXRob2QgaGFzIHRvIGJlIG9taXR0ZWQKLSAgICAgICAgZk1ldGhvZHNPbWl0dGVkLmFkZEVsZW1lbnQobWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKSk7Ci0gICAgICAgIG1ldGhvZEVsZW1lbnQuc2V0TWV0aG9kT21taXNzaW9uKHRydWUpOyAgCi0gICAgICB9CQotICAgICAgZWxzZSB7Ci0gICAgICAgIGZNZXRob2RzUHJvY2Vzc2VkLmFkZEVsZW1lbnQobWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKSk7Ci0gICAgICB9CQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0gCi0gIC8qCi0gICogVGVsbHMgd2V0aGVyIGFueSBtZXRob2RzIHdlcmUgcHJvY2Vzc2VkIAotICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGFueSBtZXRob2RzIHdlcmUgcHJvY2Vzc2VkIAotICAqLwotICBwdWJsaWMgYm9vbGVhbiB3ZXJlTWV0aG9kc1Byb2Nlc3NlZCgpCi0gIHsKLSAgICBpZihmTWV0aG9kc1Byb2Nlc3NlZC5pc0VtcHR5KCkpIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qCi0gICogVGVsbHMgd2V0aGVyIHRoZXJlIHdlcmUgbWV0aG9kcyBvbWl0dGVkIGJlY2F1c2Ugb2YgdW5zdXBwb3J0ZWQgdHlwZXMKLSAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBtZXRob2RzIHdlcmUgb21pdHRlZAotICAqLwotICBwdWJsaWMgYm9vbGVhbiB3ZXJlTWV0aG9kc09taXR0ZWQoKQotICB7Ci0gICAgaWYoZk1ldGhvZHNPbWl0dGVkLmlzRW1wdHkoKSkgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIAotICAvKioKLSAgKiBUaGVyZSBtYXkgYmUgbWV0aG9kcyB0aGF0IHdlIGRvbnQgc3VwcG9ydAotICAqIGFuZCBkb250IHdhbnQgaW4gdGhlIG1vZGVsCi0gICogQHBhcmFtIGJvb2xlYW4gdHJ1ZSBpZiBhbGwgcGFyYW1ldGVycyBhcmUgZmluZQotICAqKi8KLSAgcHVibGljIGJvb2xlYW4gbWV0aG9kQ2hlY2soTWV0aG9kIG1ldGhvZCkKLSAgewotICAgIGJvb2xlYW4gb2sgPSB0cnVlOwotICAgIC8vIGlmIHdlIGhhdmUgYSBjb25zdHJ1Y3RvciB3ZSByZXR1cm4gZmFsc2UKLSAgICBpZiAobWV0aG9kLmlzQ29uc3RydWN0b3IoKSkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgCi0gICAgcmV0dXJuIG9rOwotICB9Ci0KLSAgLyoqCi0gICogVGhlcmUgbWF5IGJlIHBhcmFtZXRlcnMgb2YgdGhpcyBtZXRob2QgdGhhdCBoYXZlIHR5cGVzCi0gICogbm90IHlldCBzdXBwb3J0ZWQgcmV0dXJuIGZhbHNlIGlmIHdlIGZpbmQgYW55Ci0gICogQHBhcmFtIGJvb2xlYW4gdHJ1ZSBpZiBhbGwgcGFyYW1ldGVycyBhcmUgZmluZQotICAqKi8KLSAgcHVibGljIGJvb2xlYW4gcGFyYW1ldGVyQ2hlY2soTWV0aG9kIG1ldGhvZCkKLSAgewotCi0gICAgYm9vbGVhbiBvayA9IHRydWU7Ci0gICAgCi0gICAgLy9ub3cgdGhlIGlucHV0cwotICAgIEphdmFQYXJhbWV0ZXIgamF2YVBhcmFtZXRlcltdID0gbWV0aG9kLmxpc3RQYXJhbWV0ZXJzV2l0aG91dFJldHVybigpOyAKLSAgICBmb3IgKGludCBpID0gMDtpPGphdmFQYXJhbWV0ZXIubGVuZ3RoO2krKykgewotICAgICAgSmF2YVBhcmFtZXRlciBwYXJhbT1qYXZhUGFyYW1ldGVyW2ldOwotICAgICAgSmF2YUhlbHBlcnMgamF2YUhlbHBlcjEgPSBwYXJhbS5nZXRKYXZhVHlwZSgpOwotICAgICAgaWYoVHlwZUZhY3RvcnkuaXNVblN1cHBvcnRlZFR5cGUoamF2YUhlbHBlcjEpKSB7Ci0gICAgICAgIGZVbnN1cHBvcnRlZFBhcmFtZXRlck5hbWUgPSBwYXJhbS5nZXROYW1lKCk7IAotICAgIAlyZXR1cm4gZmFsc2U7Ci0gICAgICB9ICAgIAotICAgIH0KLSAgcmV0dXJuIG9rOwotICB9Ci0KLSAKLSAgLyoqCi0gICogVGhlcmUgbWF5IGJlIHBhcmFtZXRlcnMgb2YgdGhpcyBtZXRob2QgdGhhdCBoYXZlIHR5cGVzCi0gICogbm90IHlldCBzdXBwb3J0ZWQgcmV0dXJuIGZhbHNlIGlmIHdlIGZpbmQgYW55Ci0gICogQHBhcmFtIGJvb2xlYW4gdHJ1ZSBpZiBhbGwgcGFyYW1ldGVycyBhcmUgZmluZQotICAqKi8KLSAgcHVibGljIGJvb2xlYW4gbnVsbENvbnN0cnVjdG9yKE1ldGhvZCBtZXRob2QpCi0gIHsKLSAgICAKLSAgICBib29sZWFuIG9rID0gdHJ1ZTsKLSAgICAvL25vdyB0aGUgaW5wdXRzCi0gICAgSmF2YVBhcmFtZXRlciBqYXZhUGFyYW1ldGVyW10gPSBtZXRob2QubGlzdFBhcmFtZXRlcnNXaXRob3V0UmV0dXJuKCk7IAotICAgIGZvciAoaW50IGkgPSAwO2k8amF2YVBhcmFtZXRlci5sZW5ndGg7aSsrKSB7Ci0gICAgICBKYXZhUGFyYW1ldGVyIHBhcmFtPWphdmFQYXJhbWV0ZXJbaV07Ci0gICAgICBKYXZhSGVscGVycyBqYXZhSGVscGVyMSA9IHBhcmFtLmdldEphdmFUeXBlKCk7Ci0gICAgICBpZihqYXZhSGVscGVyMSBpbnN0YW5jZW9mIEphdmFDbGFzcyl7Ci0gICAgICAgIEphdmFDbGFzcyBqYXZhQ2xhc3MgPSAoSmF2YUNsYXNzKWphdmFIZWxwZXIxOwotICAgICAgICBpZihUeXBlRmFjdG9yeS5yZWNvZ25pemVkQmVhbihqYXZhQ2xhc3MuZ2V0SmF2YU5hbWUoKSkpcmV0dXJuIHRydWU7Ci0gICAgICAgICAgSXRlcmF0b3IgbT1qYXZhQ2xhc3MuZ2V0TWV0aG9kcygpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKG0uaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICBNZXRob2QgbWV0aG9kMj0oTWV0aG9kKW0ubmV4dCgpOwotICAgICAgICAgICAgaWYgKGphdmFDbGFzcy5nZXROYW1lKCkuZXF1YWxzKG1ldGhvZDIuZ2V0TmFtZSgpKSl7Ci0gICAgICAgICAgICAgIC8vbm93IHRoZSBpbnB1dHMKLSAgICAgICAgICAgICAgSmF2YVBhcmFtZXRlciBqYXZhUGFyYW1bXSA9IG1ldGhvZDIubGlzdFBhcmFtZXRlcnNXaXRob3V0UmV0dXJuKCk7Ci0gICAgICAgICAgICAgIGlmIChqYXZhUGFyYW0ubGVuZ3RoID4gMCl7Ci0gICAgICAgICAgICAgICAgLy90aGVuIHdlIGhhdmUgbm8gZGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgICAgICAgICAgICAgIGZVbnN1cHBvcnRlZFBhcmFtZXRlck5hbWUgPSBwYXJhbS5nZXROYW1lKCk7IAotICAgIAkgICAgICAgIG9rID0gZmFsc2U7Ci0gICAgICAgICAgICAgIH0gICAgCi0gICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9IAotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICByZXR1cm4gb2s7Ci0gIH0KLQotIAotCi0KLQotCi0KLQotCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvSmF2YU1vZlBhcmFtZXRlclZpc2l0b3JBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvSmF2YU1vZlBhcmFtZXRlclZpc2l0b3JBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJmNTQxZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0phdmFNb2ZQYXJhbWV0ZXJWaXNpdG9yQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5qYXZhbW9mdmlzaXRvcmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9ycy5KYXZhTW9mVHlwZVZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuQmVhbk1vZGVsRWxlbWVudHNGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLlBhcmFtZXRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuQ2hvaWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLQotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgSmF2YU1vZkJlYW5WaXNpdG9yQWN0aW9uLgotKiBUaGlzIFZpc2l0b3JBY3Rpb24gd2lsbCBjcmVhdGUgYSBwYXJhbWV0ZXJFbGVtZW50IHVzaW5nIHRoZSAKLSogSmF2YUNsYXNzIGFuZCB0aGUgQmVhbk1vZGVsRWxlbWVudHNGYWN0b3J5Ci0qIEl0IHdpbGwgYWxzbyBhdXRvbWF0aWNhbGx5IHdhbGsgdG8gaXRzIHR5cGUKLSogKi8KLXB1YmxpYyBjbGFzcyBKYXZhTW9mUGFyYW1ldGVyVmlzaXRvckFjdGlvbiBleHRlbmRzIEphdmFNb2ZCZWFuVmlzaXRvckFjdGlvbiAKLXsKLQotCi0gIC8qCi0gICpDb25zdHJ1Y3RvcgotICAqKi8KLSAgcHVibGljIEphdmFNb2ZQYXJhbWV0ZXJWaXNpdG9yQWN0aW9uKEVsZW1lbnQgcGFyZW50RWxlbWVudCxTdHJpbmcgcHJvamVjdCwgSUVudmlyb25tZW50IGVudikKLSAgewotICAgIHN1cGVyKHBhcmVudEVsZW1lbnQscHJvamVjdCwgZW52KTsKLSAgfQotICAgCi0gIC8qKgotICAqIENyZWF0ZSBhIHBhcmFtZXRlciBlbGVtZW50IGZyb20gdGhlIG1ldGhvZCAKLSAgKiBAcGFyYW0gSmF2YVBhcmFtZXRlciB0aGUgbW9mIGVsZW1lbnQgdG8gYmUgdXNlZCB0byBjcmVhdGUgdGhlIFBhcmFtZXRlcgotICAqKi8KLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBpamF2YVBhcmFtZXRlcikKLSAgewotICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAJQ2hvaWNlIE9LQ2hvaWNlID0gbmV3IENob2ljZSgnTycsQ29uc3VtcHRpb25NZXNzYWdlcy5MQUJFTF9PSywgQ29uc3VtcHRpb25NZXNzYWdlcy5ERVNDUklQVElPTl9PSyk7Ci0gIAlDaG9pY2UgQ2FuY2VsQ2hvaWNlID0gbmV3IENob2ljZSgnQycsIENvbnN1bXB0aW9uTWVzc2FnZXMuTEFCRUxfQ0FOQ0VMLCBDb25zdW1wdGlvbk1lc3NhZ2VzLkRFU0NSSVBUSU9OX0NBTkNFTCk7Ci0gIAkKLSAgICBQYXJhbWV0ZXJFbGVtZW50IHBhcmFtZXRlckVsZW1lbnQgPSAoUGFyYW1ldGVyRWxlbWVudClCZWFuTW9kZWxFbGVtZW50c0ZhY3RvcnkuZ2V0QmVhbk1vZGVsRWxlbWVudChpamF2YVBhcmFtZXRlcixmUGFyZW50RWxlbWVudCk7Ci0gICAgSmF2YU1vZlR5cGVWaXNpdG9yQWN0aW9uIHR5cGVWaXNpdG9yQWN0aW9uID0gbmV3IEphdmFNb2ZUeXBlVmlzaXRvckFjdGlvbihwYXJhbWV0ZXJFbGVtZW50LGNsaWVudFByb2plY3QsIGVudl8pOwotICAgIC8vdHlwZVZpc2l0b3JBY3Rpb24uc2V0U3RhdHVzTW9uaXRvcihnZXRTdGF0dXNNb25pdG9yKCkpOwotICAgIHR5cGVWaXNpdG9yQWN0aW9uLnNldFJldHVyblBhcmFtKHBhcmFtZXRlckVsZW1lbnQuaXNSZXR1cm4oKSk7Ci0gICAgSmF2YU1vZlR5cGVWaXNpdG9yIHR5cGVWaXNpdG9yID0gbmV3IEphdmFNb2ZUeXBlVmlzaXRvcihlbnZfKTsKLSAgICB0eXBlVmlzaXRvci5zZXRDbGllbnRQcm9qZWN0KGdldFByb2plY3QoKSk7Ci0gICAgc3RhdHVzID0gdHlwZVZpc2l0b3IucnVuKGlqYXZhUGFyYW1ldGVyLHR5cGVWaXNpdG9yQWN0aW9uKTsKLSAgICAvLwotICAgIGludCBzZXZlcml0eSA9IHN0YXR1cy5nZXRTZXZlcml0eSgpOyAKLSAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5FUlJPUikKLSAgICAJcmV0dXJuIHN0YXR1czsKLSAgICAKLSAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5XQVJOSU5HKQotICAgIHsKLSAgICAgIENob2ljZSByZXN1bHQgPSBlbnZfLmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzLCBuZXcgQ2hvaWNlW117T0tDaG9pY2UsIENhbmNlbENob2ljZX0pOwotICAgICAgaWYgKHJlc3VsdC5nZXRMYWJlbCgpLmVxdWFscyhDYW5jZWxDaG9pY2UuZ2V0TGFiZWwoKSkpCi0gICAgICB7Ci0gICAgICAJIC8vcmV0dXJuIGFuIGVycm9yIHN0YXR1cyBzaW5jZSB0aGUgdXNlciBjYW5jZWxlZAotICAgICAgCSAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9TQU1QTEVfQ1JFQVRJT05fQ0FOQ0VMRUQgKTsKLSAgICAgIH0KLSAgICAgIAkKLSAgICB9Ci0gICAgLy8gICAgICAgICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvSmF2YU1vZlR5cGVWaXNpdG9yQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JhY3Rpb25zL0phdmFNb2ZUeXBlVmlzaXRvckFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTQ0YTBjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvSmF2YU1vZlR5cGVWaXNpdG9yQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMCAgIDE4MDk1MiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgU2FtcGxlIEpTUCBnZW5lcmF0b3IgY2hva2VzIG9uIGludGVyZmFjZXMgYW5kIGFic3RyYWN0IGNsYXNzZXMKLSAqIDIwMDgwNTA1ICAgMTgyMTY3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXYXJuaW5nIG5vdCBpc3N1ZWQgd2hlbiBub24taW5zdGFudGlhYmxlIGNsYXNzIGlzIGJ5cGFzc2VkIGluIHNhbXBlIEpTUHMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFIZWxwZXJzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFWaXNpYmlsaXR5S2luZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5NZXRob2Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JzLkphdmFNb2ZCZWFuVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5CZWFuTW9kZWxFbGVtZW50c0ZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuVHlwZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuVHlwZUZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuQ2hvaWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLQotCi0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24uCi0qIFRoaXMgVmlzaXRvckFjdGlvbiB3aWxsIGNyZWF0ZSBhIFR5cGVFbGVtZW50IHVzaW5nIHRoZQotKiBKYXZhQ2xhc3MgYW5kIHRoZSBCZWFuTW9kZWxFbGVtZW50c0ZhY3RvcnkKLSogSXQgd2lsbCBhbHNvIGF1dG9tYXRpY2FsbHkgd2FsayBhIGNvbXBsZXggdHlwZQotKiAqLwotcHVibGljIGNsYXNzIEphdmFNb2ZUeXBlVmlzaXRvckFjdGlvbiBleHRlbmRzIEphdmFNb2ZCZWFuVmlzaXRvckFjdGlvbgotewotCi0gIC8qCi0gICpDb25zdHJ1Y3RvcgotICAqKi8KLSAgcHVibGljIEphdmFNb2ZUeXBlVmlzaXRvckFjdGlvbihFbGVtZW50IHBhcmVudEVsZW1lbnQsU3RyaW5nIHByb2plY3QsIElFbnZpcm9ubWVudCBlbnYpCi0gIHsKLSAgICBzdXBlcihwYXJlbnRFbGVtZW50LHByb2plY3QsIGVudik7Ci0gIH0KLQotICAvKioKLSAgKiBDcmVhdGUgYSB0eXBlIGVsZW1lbnQgZnJvbSB0aGUgSmF2YUhlbHBlcgotICAqIEBwYXJhbSBKYXZhSGVscGVyIHRoZSBtb2YgZWxlbWVudCB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgVHlwZQotICAqKi8KLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCB0eXBlTmF2aWdhdG9yKQotICB7Ci0gIAkgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgCSBDaG9pY2UgT0tDaG9pY2UgPSBuZXcgQ2hvaWNlKCdPJywgQ29uc3VtcHRpb25NZXNzYWdlcy5MQUJFTF9PSywgQ29uc3VtcHRpb25NZXNzYWdlcy5ERVNDUklQVElPTl9PSyk7Ci0gIAkgQ2hvaWNlIENhbmNlbENob2ljZSA9IG5ldyBDaG9pY2UoJ0MnLCBDb25zdW1wdGlvbk1lc3NhZ2VzLkxBQkVMX0NBTkNFTCwgQ29uc3VtcHRpb25NZXNzYWdlcy5ERVNDUklQVElPTl9DQU5DRUwpOyAgCSAKLQotICAgICAvL2lmIGJlYW4KLQkgSmF2YUNsYXNzIGphdmFDbGFzcyA9IG51bGw7Ci0JIGlmKHR5cGVOYXZpZ2F0b3IgaW5zdGFuY2VvZiBKYXZhQ2xhc3MpewotCSAgICBqYXZhQ2xhc3MgPSAoSmF2YUNsYXNzKXR5cGVOYXZpZ2F0b3I7Ci0JIH0KLQotCi0gICAgIC8qIElmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSByZXR1cm4gcGFyYW1ldGVyIHRoZW4gd2UgbmVlZCB0byB0cmVhdCB0aGlzIGRpZmZlcmVudGx5IHRoZW4gaWYgaXQgaXMgYW4gaW5wdXQgCi0gICAgICogIHBhcmFtZXRlci4KLSAgICAgKiAgV2UgbmVlZCB0byBmaXJzdCBzZWUgaWYgaXQgaXMgYSBzcGVjaWFsIGNhc2UgZm9yIHJldHVybiB0eXBlcyBpZiBub3Qgd2UgdHJlYXQgaXQgdGhlIHNhbWUgYXMgZXZlcnl0aGluZwotICAgICAqICBlbHNlLgotICAgICAqLwotICAgICBpZihnZXRSZXR1cm5QYXJhbSgpICYmIFR5cGVGYWN0b3J5LmlzUmVjb2duaXplZFJldHVyblR5cGUoKEphdmFIZWxwZXJzKXR5cGVOYXZpZ2F0b3IpKQotICAgICB7Ci0gICAgICAgQmVhbk1vZGVsRWxlbWVudHNGYWN0b3J5LmdldEJlYW5Nb2RlbEVsZW1lbnQodHlwZU5hdmlnYXRvcixmUGFyZW50RWxlbWVudCk7Ci0gICAgIH0JCi0gICAgIGVsc2V7Ci0JICAgIGlmKFR5cGVGYWN0b3J5LmlzVW5TdXBwb3J0ZWRUeXBlKChKYXZhSGVscGVycyl0eXBlTmF2aWdhdG9yKSl7Ci0JICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyggQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfV0FSTl9KVFNfVU5TVVBQT1JURURfVFlQRSArICgoSmF2YUhlbHBlcnMpdHlwZU5hdmlnYXRvcikuZ2V0SmF2YU5hbWUoKSApOwkgICAgCQotCSAgICAgIC8vZ2V0U3RhdHVzTW9uaXRvcigpLnJlcG9ydFN0YXR1cyggbmV3IFN0YXR1cyhJU3RhdHVzLldBUk5JTkcsV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELDAsCi0gICAgICAgICAgICAgIC8vQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfV0FSTl9KVFNfVU5TVVBQT1JURURfVFlQRSArICgoSmF2YUhlbHBlcnMpdHlwZU5hdmlnYXRvcikuZ2V0SmF2YU5hbWUoKSxudWxsKSk7Ci0JICAgICAgcmV0dXJuIHN0YXR1czsKLQkgICAgfQkKLQkgICAgCi0JICAgIC8vaWYgamF2YWNsYXNzIGlzIG51bGwgdGhlbiB3ZSBoYXZlIGEgc2ltcGxlIHR5cGUgCi0JICAgIGlmKChqYXZhQ2xhc3MgPT0gbnVsbCkgfHwgVHlwZUZhY3RvcnkucmVjb2duaXplZEJlYW4oamF2YUNsYXNzLmdldEphdmFOYW1lKCkpKQotICAgICAgewotCSAgICAgIEJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeS5nZXRCZWFuTW9kZWxFbGVtZW50KHR5cGVOYXZpZ2F0b3IsZlBhcmVudEVsZW1lbnQpOwotCSAgICB9Ci0JICAgIGVsc2UgaWYgKGphdmFDbGFzcyAhPSBudWxsICYmICFnZXRSZXR1cm5QYXJhbSgpICYmCi0JCQkJLy8gdGhlIGZvbGxvd2luZyBjYXNlcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIGZvciBpbnB1dAotCQkJCShqYXZhQ2xhc3MuaXNJbnRlcmZhY2UoKSB8fCBqYXZhQ2xhc3MuaXNBYnN0cmFjdCgpIHx8ICFoYXNEZWZhdWx0Q29uc3RydWN0b3IoamF2YUNsYXNzKSkpIHsKLQkgICAgCQotCSAgICAJRWxlbWVudCBlbGVtZW50ID0gQmVhbk1vZGVsRWxlbWVudHNGYWN0b3J5LmdldEJlYW5Nb2RlbEVsZW1lbnQodHlwZU5hdmlnYXRvcixmUGFyZW50RWxlbWVudCk7Ci0JICAgIAllbGVtZW50LnNldFByb3BlcnR5QXNPYmplY3QoVHlwZUVsZW1lbnQuTk9OX0lOU1RBTlRJQUJMRSwgQm9vbGVhbi5UUlVFKTsKLSAgICAJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLndhcm5pbmdTdGF0dXMoCi0gICAgCQkJCUNvbnN1bXB0aW9uTWVzc2FnZXMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19XQVJOX0pUU19OT05fSU5TVEFOVElBQkxFX1RZUEUsIGVsZW1lbnQuZ2V0TmFtZSgpKSk7Ci0JICAgIH0KLQkgICAgZWxzZXsKLQkgICAgICBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24gYmVhblZpc2l0b3JBY3Rpb24gPSBuZXcgSmF2YU1vZkJlYW5WaXNpdG9yQWN0aW9uKGZQYXJlbnRFbGVtZW50LGNsaWVudFByb2plY3QsIGVudl8pOwotCSAgICAgIGJlYW5WaXNpdG9yQWN0aW9uLnNldFN0YXR1c01vbml0b3IoZ2V0U3RhdHVzTW9uaXRvcigpKTsKLQkgICAgICBiZWFuVmlzaXRvckFjdGlvbi5zZXRCZWFuc0NyZWF0ZWQoZ2V0QmVhbnNDcmVhdGVkKCkpOwotICAgICAgICAgIGJlYW5WaXNpdG9yQWN0aW9uLnNldFJldHVyblBhcmFtKGdldFJldHVyblBhcmFtKCkpOwotCQkgIEphdmFNb2ZCZWFuVmlzaXRvciBiZWFuVmlzaXRvciA9IG5ldyBKYXZhTW9mQmVhblZpc2l0b3IoKTsKLQkgICAgICBzdGF0dXMgPSBiZWFuVmlzaXRvci5ydW4oamF2YUNsYXNzLGJlYW5WaXNpdG9yQWN0aW9uKTsKLQkgICAgfQotICAgICB9Ci0gICAgIAotICAgICAvLwotICAgICBpbnQgc2V2ZXJpdHkgPSBzdGF0dXMuZ2V0U2V2ZXJpdHkoKTsgCi0gICAgIGlmIChzZXZlcml0eT09U3RhdHVzLkVSUk9SKQotICAgICAJcmV0dXJuIHN0YXR1czsKLSAgICAgCi0gICAgIGlmIChzZXZlcml0eT09U3RhdHVzLldBUk5JTkcpCi0gICAgIHsKLSAgICAgICBDaG9pY2UgcmVzdWx0ID0gZW52Xy5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0KHN0YXR1cywgbmV3IENob2ljZVtde09LQ2hvaWNlLCBDYW5jZWxDaG9pY2V9KTsKLSAgICAgICBpZiAocmVzdWx0LmdldExhYmVsKCkuZXF1YWxzKENhbmNlbENob2ljZS5nZXRMYWJlbCgpKSkKLSAgICAgICB7Ci0gICAgICAgCSAvL3JldHVybiBhbiBlcnJvciBzdGF0dXMgc2luY2UgdGhlIHVzZXIgY2FuY2VsZWQKLSAgICAgICAJICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1NBTVBMRV9DUkVBVElPTl9DQU5DRUxFRCApOwotICAgICAgIH0KLSAgICAgICBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOyAvLyB1c2VyIHNheXMgaXQncyBPSwotICAgICB9Ci0gICAgIC8vCi0gICAgIHJldHVybiBzdGF0dXM7Ci0gICB9Ci0KLSAgLyoqCi0gICAqIERldGVybWluZSBpZiB0aGUgZ2l2ZW4gamF2YUNsYXNzIGhhcyBhIGRlZmF1bHQgY29uc3RydWN0b3IuCi0gICAqIEBwYXJhbSBqYXZhQ2xhc3MgVGhlIGphdmEgY2xhc3MKLSAgICogQHJldHVybiB0cnVlIGlmIGphdmFDbGFzcyBoYXMgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLCBmYWxzZSBvdGhlcndpc2UKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBoYXNEZWZhdWx0Q29uc3RydWN0b3IoSmF2YUNsYXNzIGphdmFDbGFzcykgewotCSAgIAotCSAgTGlzdCBtZXRob2RzID0gamF2YUNsYXNzLmdldE1ldGhvZHMoKTsKLQkgIEl0ZXJhdG9yIGl0ZXIgPSBtZXRob2RzLml0ZXJhdG9yKCk7Ci0JICAgCi0JICBib29sZWFuIGZvdW5kQ29uc3RydWN0b3IgPSBmYWxzZTsKLQkgICAKLQkgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgewotCQkgIE1ldGhvZCBtZXRob2QgPSAoTWV0aG9kKSBpdGVyLm5leHQoKTsKLQkJICAgCi0JCSAgaWYgKG1ldGhvZC5nZXROYW1lKCkuZXF1YWxzKGphdmFDbGFzcy5nZXROYW1lKCkpKSB7Ci0JCQkgIGlmIChtZXRob2QubGlzdFBhcmFtZXRlcnNXaXRob3V0UmV0dXJuKCkubGVuZ3RoID09IDApCi0JCQkJICByZXR1cm4gbWV0aG9kLmdldEphdmFWaXNpYmlsaXR5KCkuZ2V0VmFsdWUoKSA9PSBKYXZhVmlzaWJpbGl0eUtpbmQuUFVCTElDOwotCQkJICBmb3VuZENvbnN0cnVjdG9yID0gdHJ1ZTsKLQkJICB9Ci0JICB9Ci0JICAgCi0JICAvLyBpZiBubyBjb25zdHJ1Y3RvciBpcyBmb3VuZCBhdCB0aGlzIHBvaW50LCBhIGRlZmF1bHQgb25lIGlzIGltcGxpY2l0bHkgcHJvdmlkZWQKLQkgIHJldHVybiAhZm91bmRDb25zdHJ1Y3RvcjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9yYWN0aW9ucy9WaXNpdG9yQWN0aW9uSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9yYWN0aW9ucy9WaXNpdG9yQWN0aW9uSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTRhMmUzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcmFjdGlvbnMvVmlzaXRvckFjdGlvbkltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5WaXNpdG9yQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLQotCi0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBWaXNpdG9yQWN0aW9uLgotKiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgd2FsayB0aGUgbWV0aG9kcyBpbiB0aGUgSmF2YUNsYXNzCi0qICovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgVmlzaXRvckFjdGlvbkltcGwgaW1wbGVtZW50cyBWaXNpdG9yQWN0aW9uIAotewotCi0gIHByaXZhdGUgVmVjdG9yIGJlYW5zVmlzaXRlZCA9IG51bGw7Ci0gIHByaXZhdGUgVmVjdG9yIG1lc3NhZ2VzID0gbnVsbDsKLQotICBwdWJsaWMgVmlzaXRvckFjdGlvbkltcGwoIFZlY3RvciBtZXNzYWdlcywgVmVjdG9yIGJlYW5zVmlzaXRlZCkKLSAgCXsKLSAgCSB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7Ci0gIAkgdGhpcy5iZWFuc1Zpc2l0ZWQgPSBiZWFuc1Zpc2l0ZWQ7Ci0gIAl9Ci0gIAotICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKFN0cmluZyByZXNpZGVudCkKLSAgewotICAgIC8vbm90aGluZyB0byBiZSBkb25lIGJ1dCBtdXN0IGJlIGltcGxlbWVudGVkCi0gIH0KLQotIC8qKgotICAqIFJldHVybnMgdGhlIHZlY3RvciBvZiBhbGwgbWVzc2FnZXMgZm91bmQKLSAgKi8KLSAgcHVibGljIFZlY3RvciBnZXRNZXNzYWdlcyAoKQotICB7Ci0gIAlpZiAobWVzc2FnZXMgPT0gbnVsbCkgCi0gIAkJbWVzc2FnZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgcmV0dXJuIG1lc3NhZ2VzOwotICB9Ci0KLSAgcHVibGljIFZlY3RvciBnZXRCZWFuc1Zpc2l0ZWQoKQotICAJewotCQlpZiAoIGJlYW5zVmlzaXRlZCA9PSBudWxsKQotICAJCQliZWFuc1Zpc2l0ZWQgPSBuZXcgVmVjdG9yKCk7IAotICAgICAgICByZXR1cm4gYmVhbnNWaXNpdGVkOwotICAgfQotCi0gIHB1YmxpYyB2b2lkIGFkZFZpc2l0ZWRCZWFuKCBKYXZhQ2xhc3MgYmVhbikKLSAgCXsKLSAgCQlpZiAoIGJlYW5zVmlzaXRlZCA9PSBudWxsKQotICAJCQliZWFuc1Zpc2l0ZWQgPSBuZXcgVmVjdG9yKCk7Ci0gIAkJYmVhbnNWaXNpdGVkLmFkZChiZWFuKTsKLSAgCX0KLQotICBwdWJsaWMgYm9vbGVhbiBpc0JlYW5WaXNpdGVkIChKYXZhQ2xhc3MgYmVhbikKLSAgCXsKLSAgCQlyZXR1cm4gKGJlYW5zVmlzaXRlZCAhPSBudWxsICYmIGJlYW5zVmlzaXRlZC5jb250YWlucyhiZWFuKSk7Ci0gIAl9Ci0KLSAgLyoqCi0gICogc2V0cyB0aGUgdmlzaXRvciB0aGF0IGNhbGxzIHRoZSB2aXNpdAotICAqIEBwYXJhbWV0ZXIgVmlzaXRvcgotICAqLwotCi0gIHB1YmxpYyB2b2lkIHNldFZpc2l0b3IoVmlzaXRvciB2aXNpdG9yKQotICB7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBhZGRNZXNzYWdlICggU3RyaW5nIGtleSApCi0gIHsKLSAgICBnZXRNZXNzYWdlcygpLmFkZChrZXkpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgYWRkTWVzc2FnZSAoIFN0cmluZyBrZXksIE9iamVjdFtdIGFyZ3MgKQotICB7Ci0gICAgZ2V0TWVzc2FnZXMoKS5hZGQoTkxTLmJpbmQoa2V5LGFyZ3MpKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JzL0phdmFNb2ZBdHRyaWJ1dGVWaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JzL0phdmFNb2ZBdHRyaWJ1dGVWaXNpdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNTI5OTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9ycy9KYXZhTW9mQXR0cmlidXRlVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDUwNSAgIDE4MjE2NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2FybmluZyBub3QgaXNzdWVkIHdoZW4gbm9uLWluc3RhbnRpYWJsZSBjbGFzcyBpcyBieXBhc3NlZCBpbiBzYW1wZSBKU1BzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5qYXZhbW9mdmlzaXRvcnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkZpZWxkOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhSGVscGVyczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLk1ldGhvZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5WaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLlZpc2l0b3JBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkphdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5UeXBlRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uc2FtcGxlYXBwLmNvbW1vbi5TYW1wbGVQcm9wZXJ0eURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB2aXNpdG9yLgotKiAqLwotcHVibGljIGNsYXNzIEphdmFNb2ZBdHRyaWJ1dGVWaXNpdG9yIGltcGxlbWVudHMgVmlzaXRvciAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotCi0gIHByaXZhdGUgU3RyaW5nIGNsaWVudFByb2plY3Q7Ci0gIHByaXZhdGUgYm9vbGVhbiByZXR1cm5QYXJhbWV0ZXI7Ci0gIHByaXZhdGUgSUVudmlyb25tZW50IGVudjsKLSAgCi0gIAotICBwdWJsaWMgdm9pZCBzZXRFbnZpcm9ubWVudChJRW52aXJvbm1lbnQgZW52KQotICB7Ci0gIAl0aGlzLmVudiA9IGVudjsKLSAgfQotICAKLSAgLyoKLSAgKiBVc2UgdGhpcyB0byByZWZsZWN0IAotICAqLwotICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KFN0cmluZyBjbGllbnRQcm9qZWN0KQotICB7Ci0gICAgdGhpcy5jbGllbnRQcm9qZWN0ID0gY2xpZW50UHJvamVjdDsKLSAgfQotCi0gICAvKgotICAqIFVzZSB0aGlzIHRvIHJlZmxlY3QgCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJvamVjdCgpCi0gIHsKLSAgICByZXR1cm4gY2xpZW50UHJvamVjdDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFJldHVyblBhcmFtZXRlcihib29sZWFuIHJldHVyblBhcmFtZXRlcikKLSAgewotICAgIHRoaXMucmV0dXJuUGFyYW1ldGVyID0gcmV0dXJuUGFyYW1ldGVyOwotICB9Ci0gCi0gIAotICAvKgotICAqIEdldCB0aGUgYXR0cmlidXRlIGJlbG9uZ2luZyB0byB0aGlzIGNvbXBsZXggdHlwZSAKLSAgKiBAcGFyYW0gSmF2YVBhcmFtZXRlciBqYXZhUGFyYW1ldGVyIHRoYXQgb3ducyB0aGUgdHlwZQotICAqIEBwYXJhbSBWaXNpdG9yQWN0aW9uIEFjdGlvbiB0byBiZSBwZXJmb3JtZWQgb24gZWFjaCBtZXRob2QKLSAgKiovCi0gIHB1YmxpYyBJU3RhdHVzIHJ1biAoIE9iamVjdCBqYXZhY2xhc3MsIFZpc2l0b3JBY3Rpb24gdkFjdGlvbikKLSAgewotICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIEphdmFDbGFzcyBqYXZhQ2xhc3MgPSAoSmF2YUNsYXNzKWphdmFjbGFzczsgICAgIAotCi0gICAgSGFzaHRhYmxlIHNwZE1hcCA9IG5ldyBIYXNodGFibGUoKTsgIAotICAgIGZvciAoSXRlcmF0b3IgbT1qYXZhQ2xhc3MuZ2V0UHVibGljTWV0aG9kcygpLml0ZXJhdG9yKCk7IG0uaGFzTmV4dCgpOyApIHsKLSAgICAgIE1ldGhvZCBtZXRob2Q9KE1ldGhvZCltLm5leHQoKTsKLSAgICAgIGlmICgoKG1ldGhvZC5nZXRNZXRob2RFbGVtZW50U2lnbmF0dXJlKCkuc3RhcnRzV2l0aCgiZ2V0IikgCi0gICAgICAJfHwgbWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKS5zdGFydHNXaXRoKCJpcyIpKSAKLSAgICAgICAgJiYgbWV0aG9kLmxpc3RQYXJhbWV0ZXJzV2l0aG91dFJldHVybigpLmxlbmd0aCA9PSAwICkKLSAgICAgICAgfHwgKG1ldGhvZC5nZXRNZXRob2RFbGVtZW50U2lnbmF0dXJlKCkuc3RhcnRzV2l0aCgic2V0IikgCi0gICAgICAgICYmIG1ldGhvZC5saXN0UGFyYW1ldGVyc1dpdGhvdXRSZXR1cm4oKS5sZW5ndGggPiAwKSkgewotICAgICAgICBpbnQgc3ViID0gMzsKLSAgICAgICAgaWYobWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKS5zdGFydHNXaXRoKCJpcyIpKQotICAgICAgICAgIHN1YiA9IDI7CQotICAgICAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0gbWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKS5zdWJzdHJpbmcoc3ViKTsgICAgCi0gICAgICAgIFN0cmluZyBsb3dlciA9IHByb3BlcnR5TmFtZS5zdWJzdHJpbmcoMCwxKS50b0xvd2VyQ2FzZSgpOwotICAgICAgICBTdHJpbmcgcmVtYWluZGVyID0gcHJvcGVydHlOYW1lLnN1YnN0cmluZygxKTsgCi0gICAgICAgIHByb3BlcnR5TmFtZSA9IGxvd2VyICsgcmVtYWluZGVyOwotICAgICAgICBpbnQgaW5kZXggPSBwcm9wZXJ0eU5hbWUubGFzdEluZGV4T2YoIigiKTsKLSAgICAgICAgU3RyaW5nIHRlbXAgPSBwcm9wZXJ0eU5hbWU7Ci0gICAgICAgIHByb3BlcnR5TmFtZSA9IHRlbXAuc3Vic3RyaW5nKDAsaW5kZXgpOyAKLSAgICAgICAgCi0gICAgICAgIC8vZmluZCB0aGUgcHJvcGVydHlkZXNjcmlwdG9yCi0gICAgICAgIFNhbXBsZVByb3BlcnR5RGVzY3JpcHRvciBzcGQgPSAoU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yKXNwZE1hcC5nZXQocHJvcGVydHlOYW1lKTsgCi0gICAgICAgIGlmKHNwZCA9PSBudWxsKXsKLSAgICAgICAgICBzcGQgPSBuZXcgU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgc3BkTWFwLnB1dChwcm9wZXJ0eU5hbWUsc3BkKTsgCi0gICAgICAgIH0KLSAgICAgICAgaWYobWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKS5zdGFydHNXaXRoKCJzZXQiKSkKLSAgICAgICAgICBzcGQuc2V0V3JpdGVNZXRob2QobWV0aG9kKTsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICBzcGQuc2V0UmVhZE1ldGhvZChtZXRob2QpOwotCi0gICAgICAgIEZpZWxkIGZpZWxkID0gamF2YUNsYXNzLmdldEZpZWxkTmFtZWQocHJvcGVydHlOYW1lKTsKLSAgICAgICAgSmF2YUhlbHBlcnMgcHJvcGVydHlUeXBlID0gbnVsbDsgCi0gICAgICAgIGlmKGZpZWxkICE9IG51bGwpewotICAgICAgICAgIHByb3BlcnR5VHlwZSA9IChKYXZhSGVscGVycylmaWVsZC5nZXRFVHlwZSgpOwotICAgICAgICAgIHNwZC5zZXRmU3RhdGljKGZpZWxkLmlzU3RhdGljKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2V7Ci0gICAgICAgICAgaWYobWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKS5zdGFydHNXaXRoKCJnZXQiKSB8fCBtZXRob2QuZ2V0TWV0aG9kRWxlbWVudFNpZ25hdHVyZSgpLnN0YXJ0c1dpdGgoImlzIikpCi0gICAgICAgICAgCXByb3BlcnR5VHlwZSA9IG1ldGhvZC5nZXRSZXR1cm5UeXBlKCk7Ci0gICAgICAgICAgZWxzZXsKLSAgICAgICAgICAgICBKYXZhUGFyYW1ldGVyIHBhcmFtc1tdID0gbWV0aG9kLmxpc3RQYXJhbWV0ZXJzV2l0aG91dFJldHVybigpOyAKLSAgICAgICAgICAgICBwcm9wZXJ0eVR5cGUgPSBwYXJhbXNbMF0uZ2V0SmF2YVR5cGUoKTsKLSAgICAgICAgICB9ICAKLSAgICAgICAgfQotICAgICAgICAgIAkKLSAgICAgICAgc3BkLnNldFByb3BlcnR5VHlwZShwcm9wZXJ0eVR5cGUpOyAKLSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIEVudW1lcmF0aW9uIHNwZEVudW0gPSBzcGRNYXAuZWxlbWVudHMoKTsKLSAgICB3aGlsZShzcGRFbnVtLmhhc01vcmVFbGVtZW50cygpKXsKLSAgICAgIFNhbXBsZVByb3BlcnR5RGVzY3JpcHRvciBzcGQgPSAoU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yKXNwZEVudW0ubmV4dEVsZW1lbnQoKTsKLSAgICAgIGlmKHNwZENoZWNrKHNwZCkpIHsKLSAgICAgICAgc3RhdHVzID0gdkFjdGlvbi52aXNpdChzcGQpOyAgIAotICAgICAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUikKLSAgICAJICBicmVhazsKLSAgICAgIH0KLSAgICB9IAotICAgCi0gICAgcmV0dXJuIHN0YXR1czsKLQotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gc3BkQ2hlY2soU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yIHNwZCkKLSAgeyAgCi0gICAgLy9jaGVjayBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzCi0gIAlNZXRob2Qgd3JpdGVNZXRob2QgPSBzcGQuZ2V0V3JpdGVNZXRob2QoKTsKLSAgCWlmKHdyaXRlTWV0aG9kICE9IG51bGwpCi0gIAkgIGlmKHdyaXRlTWV0aG9kLmxpc3RQYXJhbWV0ZXJzV2l0aG91dFJldHVybigpLmxlbmd0aCA+IDEpIHJldHVybiBmYWxzZTsKLSAgCQotICAJaWYoc3BkLmdldFByb3BlcnR5VHlwZSgpID09IG51bGwpIHJldHVybiBmYWxzZTsKLSAgICBpZihzcGQuZ2V0UHJvcGVydHlUeXBlKCkuaXNQcmltaXRpdmUoKSkgcmV0dXJuIHRydWU7Ci0gICAgaWYocmV0dXJuUGFyYW1ldGVyICYmIFR5cGVGYWN0b3J5LmlzUmVjb2duaXplZFJldHVyblR5cGUoc3BkLmdldFByb3BlcnR5VHlwZSgpKSkgcmV0dXJuIHRydWU7Ci0gICAgaWYoIXJldHVyblBhcmFtZXRlciAmJiBUeXBlRmFjdG9yeS5pc1VuU3VwcG9ydGVkVHlwZShzcGQuZ2V0UHJvcGVydHlUeXBlKCkpKSByZXR1cm4gdHJ1ZTsKLSAgICBpZighY2hlY2tQb2xhcml0eShzcGQpKSByZXR1cm4gZmFsc2U7ICAgCi0gICAgICAgCi0gICAgLy8gc28gaXRzIGEgYmVhbiBtYWtlIHN1cmUgaXQgaGFzIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciAgICAgICAKLSAgICBKYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQgamF2YU1vZlJlZiA9IG5ldyBKYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQoKTsKLSAgICBqYXZhTW9mUmVmLnNldENsaWVudFByb2plY3QoZ2V0UHJvamVjdCgpKTsKLSAgICBqYXZhTW9mUmVmLnNldFByb3h5QmVhbigoKEphdmFIZWxwZXJzKXNwZC5nZXRQcm9wZXJ0eVR5cGUoKSkuZ2V0UXVhbGlmaWVkTmFtZSgpKTsKLSAgICBqYXZhTW9mUmVmLnNldEVudmlyb25tZW50KCBlbnYgKTsKLSAgICBqYXZhTW9mUmVmLmV4ZWN1dGUobnVsbCwgbnVsbCk7Ci0gICAgaWYoamF2YU1vZlJlZi5nZXRKYXZhQ2xhc3MoKSBpbnN0YW5jZW9mIEphdmFDbGFzcyl7Ci0gICAgICAgaWYoVHlwZUZhY3RvcnkucmVjb2duaXplZEJlYW4oamF2YU1vZlJlZi5nZXRKYXZhQ2xhc3MoKS5nZXRKYXZhTmFtZSgpKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgcmV0dXJuIGRlZmF1bHRDaGVjaygoSmF2YUNsYXNzKWphdmFNb2ZSZWYuZ2V0SmF2YUNsYXNzKCkpOwotICAgICAgICAgICAgICAgCi0gICAgfQotICAgIHJldHVybiB0cnVlOwotICAKLSAgfQotICAKLSAgcHJpdmF0ZSBib29sZWFuIGNoZWNrUG9sYXJpdHkoU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yIHNwZCl7Ci0gICAgCi0gIAlNZXRob2QgcmVhZE1ldGhvZCA9IHNwZC5nZXRSZWFkTWV0aG9kKCk7Ci0gIAlNZXRob2Qgd3JpdGVNZXRob2QgPSBzcGQuZ2V0V3JpdGVNZXRob2QoKTsKLSAgCWlmKChyZWFkTWV0aG9kID09IG51bGwgJiYgd3JpdGVNZXRob2QgIT0gbnVsbCkgfHwgKHJlYWRNZXRob2QgIT0gbnVsbCAmJiB3cml0ZU1ldGhvZCA9PSBudWxsKSkKLSAgCSAgcmV0dXJuIHRydWU7CQotICAJaWYocmVhZE1ldGhvZCA9PSBudWxsICYmIHdyaXRlTWV0aG9kID09IG51bGwpCi0gIAkgIHJldHVybiBmYWxzZTsJCi0gIAkgIAkKLSAgCUphdmFQYXJhbWV0ZXIgamF2YVBhcmFtZXRlcltdID0gd3JpdGVNZXRob2QubGlzdFBhcmFtZXRlcnNXaXRob3V0UmV0dXJuKCk7Ci0gICAgZm9yKGludCBpID0gMDtpPCBqYXZhUGFyYW1ldGVyLmxlbmd0aDtpKyspewotICAgICAgSmF2YVBhcmFtZXRlciBqcCA9IGphdmFQYXJhbWV0ZXJbaV07IAkKLSAgICAgIGpwLmdldEphdmFUeXBlKCkuZ2V0SmF2YU5hbWUoKTsKLSAgICAgIHJlYWRNZXRob2QuZ2V0UmV0dXJuVHlwZSgpLmdldEphdmFOYW1lKCk7Ci0gICAgICBpZihqcC5nZXRKYXZhVHlwZSgpLmdldEphdmFOYW1lKCkuZXF1YWxzKHJlYWRNZXRob2QuZ2V0UmV0dXJuVHlwZSgpLmdldEphdmFOYW1lKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsgCi0gICAgfQotICAJcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gZGVmYXVsdENoZWNrKEphdmFDbGFzcyBqYXZhQ2xhc3MpewotICAgIAotICAgICAgIEl0ZXJhdG9yIG09amF2YUNsYXNzLmdldE1ldGhvZHMoKS5pdGVyYXRvcigpOwotICAgICAgICAvL25vdyBjaGVjayBmb3IgYSBkZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAgICAgIGJvb2xlYW4gZGVmYXVsdENvbnN0ID0gdHJ1ZTsKLSAgICAgICAgd2hpbGUgKG0uaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgTWV0aG9kIG1ldGhvZD0oTWV0aG9kKW0ubmV4dCgpOwotICAgICAgICAgIGlmIChqYXZhQ2xhc3MuZ2V0TmFtZSgpLmVxdWFscyhtZXRob2QuZ2V0TmFtZSgpKSl7Ci0gICAgICAgICAgICAgICAgLy9ub3cgdGhlIGlucHV0cwotICAgICAgICAgICAgICAgIEphdmFQYXJhbWV0ZXIgamF2YVBhcmFtZXRlcltdID0gbWV0aG9kLmxpc3RQYXJhbWV0ZXJzV2l0aG91dFJldHVybigpOwotICAgICAgICAgICAgICAgIGlmIChqYXZhUGFyYW1ldGVyLmxlbmd0aCA+IDApewotICAgICAgICAgICAgICAgICAgICAgIC8vdGhlbiB3ZSBoYXZlIG5vIGRlZmF1bHQgY29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Q29uc3QgPSBmYWxzZTsgCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYoamF2YVBhcmFtZXRlci5sZW5ndGggPT0gMCl7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kLmdldEphdmFWaXNpYmlsaXR5KCkuZ2V0VmFsdWUoKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgIH0KLSAgICAKLSAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0OwotICB9Ci0gICAgICAgICAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JzL0phdmFNb2ZCZWFuVmlzaXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9ycy9KYXZhTW9mQmVhblZpc2l0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzczYWJiMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JzL0phdmFNb2ZCZWFuVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLlZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uVmlzaXRvckFjdGlvbjsKLQotCi0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB2aXNpdG9yLgotKiAqLwotcHVibGljIGNsYXNzIEphdmFNb2ZCZWFuVmlzaXRvciBpbXBsZW1lbnRzIFZpc2l0b3IgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLQotICAvKgotICAqQ29uc3RydWN0b3IKLSAgKiovCi0gIHB1YmxpYyBKYXZhTW9mQmVhblZpc2l0b3IoKQotICB7Ci0gIH0KLSAKLSAgcHVibGljIElTdGF0dXMgcnVuICggT2JqZWN0IGphdmFDbGFzcywgVmlzaXRvckFjdGlvbiB2QWN0aW9uKQotICB7Ci0gICAgcmV0dXJuIHZBY3Rpb24udmlzaXQoKEphdmFDbGFzcylqYXZhQ2xhc3MpOyAgIAotICB9Ci0gICAgICAgIAotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcnMvSmF2YU1vZkZpZWxkVmlzaXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9ycy9KYXZhTW9mRmllbGRWaXNpdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMGYwZWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9ycy9KYXZhTW9mRmllbGRWaXNpdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JzOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0SXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5GaWVsZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUhlbHBlcnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YVBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhVmlzaWJpbGl0eUtpbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLlZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uVmlzaXRvckFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uSmF2YU1vZlJlZmxlY3Rpb25Db21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLlR5cGVGYWN0b3J5OwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdmlzaXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBKYXZhTW9mRmllbGRWaXNpdG9yIGltcGxlbWVudHMgVmlzaXRvciAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotCi0gIHByaXZhdGUgU3RyaW5nIGNsaWVudFByb2plY3Q7Ci0KLSAgLyoKLSAgKiBDb25zdHJ1Y3RvcgotICAqKi8KLSAgcHVibGljIEphdmFNb2ZGaWVsZFZpc2l0b3IoKQotICB7Ci0gIH0KLQotICAvKgotICAqIFVzZSB0aGlzIHRvIHJlZmxlY3QgCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFByb2plY3QoU3RyaW5nIGNsaWVudFByb2plY3QpCi0gIHsKLSAgICB0aGlzLmNsaWVudFByb2plY3QgPSBjbGllbnRQcm9qZWN0OwotICB9Ci0KLSAgIC8qCi0gICogVXNlIHRoaXMgdG8gcmVmbGVjdCAKLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRQcm9qZWN0KCkKLSAgewotICAgIHJldHVybiBjbGllbnRQcm9qZWN0OwotICB9Ci0KLSAgLyoKLSAgKiBHZXQgdGhlIGF0dHJpYnV0ZSBiZWxvbmdpbmcgdG8gdGhpcyBjb21wbGV4IHR5cGUgCi0gICogQHBhcmFtIEphdmFQYXJhbWV0ZXIgamF2YVBhcmFtZXRlciB0aGF0IG93bnMgdGhlIHR5cGUKLSAgKiBAcGFyYW0gVmlzaXRvckFjdGlvbiBBY3Rpb24gdG8gYmUgcGVyZm9ybWVkIG9uIGVhY2ggbWV0aG9kCi0gICoqLwotICBwdWJsaWMgSVN0YXR1cyBydW4gKCBPYmplY3QgamF2YWNsYXNzLCBWaXNpdG9yQWN0aW9uIHZBY3Rpb24pCi0gIHsKLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICBKYXZhQ2xhc3MgamF2YUNsYXNzID0gKEphdmFDbGFzcylqYXZhY2xhc3M7ICAgICAKLQotICAgIGJvb2xlYW4gaG9sZGVyQ2xhc3MgPSBmYWxzZTsKLSAgICBFTGlzdCBpbXBsZW1lbnRlZCA9IGphdmFDbGFzcy5nZXRJbXBsZW1lbnRzSW50ZXJmYWNlcygpOwotCWZvciAoaW50IGkgPSAwOyBpIDwgaW1wbGVtZW50ZWQuc2l6ZSgpOyBpKyspIHsKLQkgIEphdmFDbGFzcyBhbkludGVyZmFjZSA9IChKYXZhQ2xhc3MpIGltcGxlbWVudGVkLmdldChpKTsKLQkgIGlmIChhbkludGVyZmFjZS5nZXRRdWFsaWZpZWROYW1lKCkuZXF1YWxzKCJqYXZheC54bWwucnBjLmhvbGRlcnMuSG9sZGVyIikpCi0JICAgIGhvbGRlckNsYXNzID0gdHJ1ZTsKLQl9ICAgICAgCi0KLSAgICAgLy9iZWFuaW5mbyBjb2RlCi0gICAgaWYoaG9sZGVyQ2xhc3MpeyAgICAgCi0gICAgICBFTGlzdCBlICA9IGphdmFDbGFzcy5nZXRGaWVsZHMoKTsKLSAgICAgIExpc3RJdGVyYXRvciBsaXN0ID0gZS5saXN0SXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlKGxpc3QuaGFzTmV4dCgpKXsKLSAgICAgICAgRmllbGQgZmllbGQgPSAoRmllbGQpbGlzdC5uZXh0KCk7ICAgICAKLSAgICAgICAgaWYoZmllbGQuZ2V0SmF2YVZpc2liaWxpdHkoKS5nZXRWYWx1ZSgpID09IEphdmFWaXNpYmlsaXR5S2luZC5QVUJMSUMgJiYgIWZpZWxkLmlzRmluYWwoKSAmJiAhZmllbGQuaXNTdGF0aWMoKSl7Ci0gICAgICAgICAgaWYoZmllbGRDaGVjayhmaWVsZCkpCi0gICAgICAgICAgICBzdGF0dXMgPSB2QWN0aW9uLnZpc2l0KGZpZWxkKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc3RhdHVzOwotICB9ICAgICAgIAotICBwcml2YXRlIGJvb2xlYW4gZmllbGRDaGVjayhGaWVsZCBmaWVsZCkKLSAgewotICAgIC8vIHNvIGl0cyBhIGJlYW4gbWFrZSBzdXJlIGl0IGhhcyBhIGRlZmF1bHQgY29uc3RydWN0b3IgCi0gICAgSmF2YU1vZlJlZmxlY3Rpb25Db21tYW5kIGphdmFNb2ZSZWYgPSBuZXcgSmF2YU1vZlJlZmxlY3Rpb25Db21tYW5kKCk7Ci0gICAgamF2YU1vZlJlZi5zZXRQcm94eUJlYW4oKChKYXZhSGVscGVycylmaWVsZC5nZXRFVHlwZSgpKS5nZXRRdWFsaWZpZWROYW1lKCkpOwotICAgIGphdmFNb2ZSZWYuc2V0Q2xpZW50UHJvamVjdChnZXRQcm9qZWN0KCkpOwotICAgIGphdmFNb2ZSZWYuZXhlY3V0ZShudWxsLCBudWxsKTsKLSAgICBpZihqYXZhTW9mUmVmLmdldEphdmFDbGFzcygpIGluc3RhbmNlb2YgSmF2YUNsYXNzKXsKLSAgICAgIGlmKFR5cGVGYWN0b3J5LnJlY29nbml6ZWRCZWFuKGphdmFNb2ZSZWYuZ2V0SmF2YUNsYXNzKCkuZ2V0SmF2YU5hbWUoKSkpIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuIGRlZmF1bHRDaGVjaygoSmF2YUNsYXNzKWphdmFNb2ZSZWYuZ2V0SmF2YUNsYXNzKCkpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICAgICAgICAKLSBwcml2YXRlIGJvb2xlYW4gZGVmYXVsdENoZWNrKEphdmFDbGFzcyBqYXZhQ2xhc3MpewotICAgIAotICAgSXRlcmF0b3IgbT1qYXZhQ2xhc3MuZ2V0TWV0aG9kcygpLml0ZXJhdG9yKCk7Ci0gICAvL25vdyBjaGVjayBmb3IgYSBkZWZhdWx0IGNvbnN0cnVjdG9yCi0gICBib29sZWFuIGRlZmF1bHRDb25zdCA9IHRydWU7Ci0gICB3aGlsZSAobS5oYXNOZXh0KCkpIHsKLSAgICBNZXRob2QgbWV0aG9kPShNZXRob2QpbS5uZXh0KCk7Ci0gICAgaWYgKGphdmFDbGFzcy5nZXROYW1lKCkuZXF1YWxzKG1ldGhvZC5nZXROYW1lKCkpKXsKLSAgICAgIC8vbm93IHRoZSBpbnB1dHMKLSAgICAgIEphdmFQYXJhbWV0ZXIgamF2YVBhcmFtZXRlcltdID0gbWV0aG9kLmxpc3RQYXJhbWV0ZXJzV2l0aG91dFJldHVybigpOwotICAgICAgaWYgKGphdmFQYXJhbWV0ZXIubGVuZ3RoID4gMCl7Ci0gICAgICAgIC8vdGhlbiB3ZSBoYXZlIG5vIGRlZmF1bHQgY29uc3RydWN0b3IKLSAgICAgICAgZGVmYXVsdENvbnN0ID0gZmFsc2U7IAotICAgICAgfQotICAgICAgZWxzZSBpZihqYXZhUGFyYW1ldGVyLmxlbmd0aCA9PSAwKXsKLSAgICAgICAgaWYgKG1ldGhvZC5nZXRKYXZhVmlzaWJpbGl0eSgpLmdldFZhbHVlKCkgPT0gMCkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZihtZXRob2QuZ2V0SmF2YVZpc2liaWxpdHkoKS5nZXRWYWx1ZSgpID09IDEpIAotICAgICAgICAgIGRlZmF1bHRDb25zdCA9IGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgfQotICAgIAotICByZXR1cm4gZGVmYXVsdENvbnN0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JzL0phdmFNb2ZNZXRob2RWaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JzL0phdmFNb2ZNZXRob2RWaXNpdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMmVlOGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9ycy9KYXZhTW9mTWV0aG9kVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwNTA1ICAgMTgyMTY3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXYXJuaW5nIG5vdCBpc3N1ZWQgd2hlbiBub24taW5zdGFudGlhYmxlIGNsYXNzIGlzIGJ5cGFzc2VkIGluIHNhbXBlIEpTUHMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yczsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5NZXRob2Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5WaXNpdG9yQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnNlbGVjdGlvbi5Cb29sZWFuU2VsZWN0aW9uOwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdmlzaXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBKYXZhTW9mTWV0aG9kVmlzaXRvciBpbXBsZW1lbnRzIFZpc2l0b3IgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0gIHB1YmxpYyBTdHJpbmcgU0VUX0VORFBPSU5UID0gInNldEVuZFBvaW50IjsKLSAgcHVibGljIFN0cmluZyBHRVRfRU5EUE9JTlQgPSAiZ2V0RW5kUG9pbnQiOwotICBwcml2YXRlIEJvb2xlYW5TZWxlY3Rpb25bXSBmTWV0aG9kc1NlbGVjdGVkOwotCi0KLSAgLyoKLSAgKiBDb25zdHJ1Y3RvcgotICAqKi8KLSAgcHVibGljIEphdmFNb2ZNZXRob2RWaXNpdG9yKCkKLSAgewotICB9Ci0gCi0gIHB1YmxpYyBTdHJpbmcgVU5ERVJfU0NPUkUgPSAiXyI7Ci0KLSAgLyoKLSAgKiBSdW4gdGhyb3VnaCBhbGwgdGhlIG1ldGhvZHMgaW4gdGhpcyBiZWFuCi0gICogQHBhcmFtIEphdmFDbGFzcyBqYXZhY2xhc3MgdGhhdCBob2xkcyB0aGUgbWV0aG9kcwotICAqIEBwYXJhbSBWaXNpdG9yQWN0aW9uIEFjdGlvbiB0byBiZSBwZXJmb3JtZWQgb24gZWFjaCBtZXRob2QKLSAgKiovCi0gIHB1YmxpYyBJU3RhdHVzIHJ1biAoIE9iamVjdCBqYXZhY2xhc3MsIFZpc2l0b3JBY3Rpb24gdkFjdGlvbikKLSAgewotICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIEphdmFDbGFzcyBqYXZhQ2xhc3MgPSAoSmF2YUNsYXNzKWphdmFjbGFzczsKLSAgICBmb3IgKEl0ZXJhdG9yIG09amF2YUNsYXNzLmdldFB1YmxpY01ldGhvZHMoKS5pdGVyYXRvcigpOyBtLmhhc05leHQoKTsgKSB7Ci0gICAgICBNZXRob2QgbWV0aG9kPShNZXRob2QpbS5uZXh0KCk7Ci0gICAgICBpZihmTWV0aG9kc1NlbGVjdGVkICE9IG51bGwpICB7Ci0gICAgICAgIGJvb2xlYW4gbWV0aG9kU2VsZWN0ZWQgPSBmYWxzZTsKLSAgICAgIAlmb3IoaW50IGkgPTA7aSA8IGZNZXRob2RzU2VsZWN0ZWQubGVuZ3RoO2krKyl7Ci0gICAgICAgICAgaWYoZk1ldGhvZHNTZWxlY3RlZFtpXSA9PSBudWxsKSBjb250aW51ZTsKLSAgICAgICAgICBpZiAoIGZNZXRob2RzU2VsZWN0ZWRbaV0uZ2V0VmFsdWUoKS5lcXVhbHMobWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKSkpCi0gICAgICAgICAgICBtZXRob2RTZWxlY3RlZCA9IChib29sZWFuKSBmTWV0aG9kc1NlbGVjdGVkW2ldLmlzU2VsZWN0ZWQoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbWV0aG9kLmdldE5hbWUoKTsKLSAgICAgICAgCi0gICAgICAgIGlmKG1ldGhvZFNlbGVjdGVkKSB7Ci0gICAgICAgICAgc3RhdHVzID0gdkFjdGlvbi52aXNpdChtZXRob2QpOyAgCi0gICAgICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IpCi0gICAgICAgIAkgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgc3RhdHVzID0gdkFjdGlvbi52aXNpdChtZXRob2QpOyAgIAotICAgICAgfQotCi0gICAgfQotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRNZXRob2RTZWxlY3Rpb24oQm9vbGVhblNlbGVjdGlvbltdIG1ldGhvZFNlbGVjdGVkKQotICB7Ci0gICAgZk1ldGhvZHNTZWxlY3RlZCA9IG1ldGhvZFNlbGVjdGVkOwotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9ycy9KYXZhTW9mUGFyYW1ldGVyVmlzaXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb2RlZ2VuL2phdmFtb2Z2aXNpdG9ycy9KYXZhTW9mUGFyYW1ldGVyVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDkwNGI2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcnMvSmF2YU1vZlBhcmFtZXRlclZpc2l0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5qYXZhbW9mdmlzaXRvcnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUhlbHBlcnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YVBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5NZXRob2Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5WaXNpdG9yQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkNob2ljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHZpc2l0b3IuCi0qICovCi1wdWJsaWMgY2xhc3MgSmF2YU1vZlBhcmFtZXRlclZpc2l0b3IgaW1wbGVtZW50cyBWaXNpdG9yIAotewotICBwcml2YXRlIElFbnZpcm9ubWVudCBlbnZfOwotCi0gIC8qCi0gICogQ29uc3RydWN0b3IKLSAgKiovCi0gIHB1YmxpYyBKYXZhTW9mUGFyYW1ldGVyVmlzaXRvcihJRW52aXJvbm1lbnQgZW52KQotICB7Ci0gIAllbnZfID0gZW52OwotICB9Ci0gIAotICAvKgotICAqIFJ1biB0aHJvdWdoIGFsbCB0aGUgcGFyYW1ldGVycyBpbiB0aGlzIG1ldGhvZAotICAqIEBwYXJhbSBKYXZhQ2xhc3MgamF2YWNsYXNzIHRoYXQgaG9sZHMgdGhlIHBhcmFtZXRlcnMKLSAgKiBAcGFyYW0gVmlzaXRvckFjdGlvbiBBY3Rpb24gdG8gYmUgcGVyZm9ybWVkIG9uIGVhY2ggbWV0aG9kCi0gICoqLwotICBwdWJsaWMgSVN0YXR1cyBydW4gKCBPYmplY3QgaW1ldGhvZCwgVmlzaXRvckFjdGlvbiB2QWN0aW9uKQotICB7Ci0gIAlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gIAlDaG9pY2UgT0tDaG9pY2UgPSBuZXcgQ2hvaWNlKCdPJywgQ29uc3VtcHRpb25NZXNzYWdlcy5MQUJFTF9PSywgQ29uc3VtcHRpb25NZXNzYWdlcy5ERVNDUklQVElPTl9PSyk7Ci0gIAlDaG9pY2UgQ2FuY2VsQ2hvaWNlID0gbmV3IENob2ljZSgnQycsIENvbnN1bXB0aW9uTWVzc2FnZXMuTEFCRUxfQ0FOQ0VMLCBDb25zdW1wdGlvbk1lc3NhZ2VzLkRFU0NSSVBUSU9OX0NBTkNFTCk7ICAJCi0gICAgTWV0aG9kIG1ldGhvZCA9IChNZXRob2QpaW1ldGhvZDsKLSAgIAotICAgIEphdmFIZWxwZXJzIGphdmFSZXR1cm5QYXJhbWV0ZXIgPSBtZXRob2QuZ2V0UmV0dXJuVHlwZSgpOwotICAgIC8vcGdtIFRoaXMgdmlzaXRvciB1c2VkIHRvIHRha2UgYSBKYXZhUGFyYW1ldGVyIHR5cGUgYW5kIG5vdyBpdCBpcyBiZWluZyBjYWxsZWQKLSAgICAvLyAgICB3aXRoIGEgSmF2YUhlbHBlcnMgdHlwZS4gIEdpbCwgcGxlYXNlIGVuc3VyZSB0aGF0IHRoaXMgaXMgT2suCi0gICAgc3RhdHVzID0gdkFjdGlvbi52aXNpdChqYXZhUmV0dXJuUGFyYW1ldGVyKTsKLSAgICAvLwotICAgIGludCBzZXZlcml0eSA9IHN0YXR1cy5nZXRTZXZlcml0eSgpOyAKLSAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5FUlJPUikKLSAgICAJcmV0dXJuIHN0YXR1czsKLSAgICAKLSAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5XQVJOSU5HKQotICAgIHsKLSAgICAgIENob2ljZSByZXN1bHQgPSBlbnZfLmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzLCBuZXcgQ2hvaWNlW117T0tDaG9pY2UsIENhbmNlbENob2ljZX0pOwotICAgICAgaWYgKHJlc3VsdC5nZXRMYWJlbCgpLmVxdWFscyhDYW5jZWxDaG9pY2UuZ2V0TGFiZWwoKSkpCi0gICAgICB7Ci0gICAgICAJIC8vcmV0dXJuIGFuIGVycm9yIHN0YXR1cyBzaW5jZSB0aGUgdXNlciBjYW5jZWxlZAotICAgICAgCSAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9TQU1QTEVfQ1JFQVRJT05fQ0FOQ0VMRUQgKTsKLSAgICAgIH0KLSAgICAgIAkKLSAgICB9Ci0gICAgLy8gICAgICAgICAgIAotCi0gICAgLy9ub3cgdGhlIGlucHV0cwotICAgIExpc3QgcGFyYW1ldGVycyA9IG1ldGhvZC5nZXRQYXJhbWV0ZXJzKCk7IAotICAgIAotICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBwYXJhbWV0ZXJzLnNpemUoKTsgaW5kZXgrKykgCi0gICAgewotICAgICAgSmF2YVBhcmFtZXRlciBwYXJhbT0oSmF2YVBhcmFtZXRlcilwYXJhbWV0ZXJzLmdldChpbmRleCk7Ci0gICAgICBzdGF0dXMgPSB2QWN0aW9uLnZpc2l0KHBhcmFtKTsKLSAgICAgIC8vCi0gICAgICBzZXZlcml0eSA9IHN0YXR1cy5nZXRTZXZlcml0eSgpOyAKLSAgICAgIGlmIChzZXZlcml0eT09U3RhdHVzLkVSUk9SKQotICAgICAgCXJldHVybiBzdGF0dXM7Ci0gICAgICAKLSAgICAgIGlmIChzZXZlcml0eT09U3RhdHVzLldBUk5JTkcpCi0gICAgICB7Ci0gICAgICAgIENob2ljZSByZXN1bHQgPSBlbnZfLmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzLCBuZXcgQ2hvaWNlW117T0tDaG9pY2UsIENhbmNlbENob2ljZX0pOwotICAgICAgICBpZiAocmVzdWx0LmdldExhYmVsKCkuZXF1YWxzKENhbmNlbENob2ljZS5nZXRMYWJlbCgpKSkKLSAgICAgICAgewotICAgICAgICAJIC8vcmV0dXJuIGFuIGVycm9yIHN0YXR1cyBzaW5jZSB0aGUgdXNlciBjYW5jZWxlZAotICAgICAgICAJICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1NBTVBMRV9DUkVBVElPTl9DQU5DRUxFRCApOwotICAgICAgICB9Ci0gICAgICAgIAkKLSAgICAgIH0KLSAgICAgIC8vICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gICAgCi0gIH0KLSAgCi0gICAgICAgIAotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcnMvSmF2YU1vZlR5cGVWaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvZGVnZW4vamF2YW1vZnZpc2l0b3JzL0phdmFNb2ZUeXBlVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMThmYzg2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29kZWdlbi9qYXZhbW9mdmlzaXRvcnMvSmF2YU1vZlR5cGVWaXNpdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmphdmFtb2Z2aXNpdG9yczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuRmllbGQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUhlbHBlcnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YVBhcmFtZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5WaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLlZpc2l0b3JBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkphdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uc2FtcGxlYXBwLmNvbW1vbi5TYW1wbGVQcm9wZXJ0eURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci0KLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHZpc2l0b3IuCi0qICovCi1wdWJsaWMgY2xhc3MgSmF2YU1vZlR5cGVWaXNpdG9yIGltcGxlbWVudHMgVmlzaXRvciAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICBwcml2YXRlIElFbnZpcm9ubWVudCBlbnZfOwotCi0gIHByaXZhdGUgU3RyaW5nIGNsaWVudFByb2plY3Q7Ci0KLSAgLyoKLSAgKiBDb25zdHJ1Y3RvcgotICAqKi8KLSAgcHVibGljIEphdmFNb2ZUeXBlVmlzaXRvcihJRW52aXJvbm1lbnQgZW52KQotICB7Ci0gIAllbnZfID0gZW52OwotICB9Ci0KLSAgIC8qCi0gICogVXNlIHRoaXMgdG8gcmVmbGVjdCAKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50UHJvamVjdChTdHJpbmcgY2xpZW50UHJvamVjdCkKLSAgewotICAgIHRoaXMuY2xpZW50UHJvamVjdCA9IGNsaWVudFByb2plY3Q7Ci0gIH0KLQotICAgLyoKLSAgKiBVc2UgdGhpcyB0byByZWZsZWN0IAotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFByb2plY3QoKQotICB7Ci0gICAgcmV0dXJuIGNsaWVudFByb2plY3Q7Ci0gIH0KLSAgCi0gIC8qCi0gICogR2V0IHRoZSB0eXBlIGJlbG9uZ2luZyB0byB0aGUgcGFyYW1ldGVyCi0gICogQHBhcmFtIEphdmFQYXJhbWV0ZXIgamF2YVBhcmFtZXRlciB0aGF0IG93bnMgdGhlIHR5cGUKLSAgKiBAcGFyYW0gVmlzaXRvckFjdGlvbiBBY3Rpb24gdG8gYmUgcGVyZm9ybWVkIG9uIGVhY2ggbWV0aG9kCi0gICoqLwotICBwdWJsaWMgSVN0YXR1cyBydW4gKCBPYmplY3QgdHlwZU5hdmlnYXRvciwgVmlzaXRvckFjdGlvbiB2QWN0aW9uKQotICB7Ci0gIAlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgaWYgKHR5cGVOYXZpZ2F0b3IgaW5zdGFuY2VvZiBKYXZhUGFyYW1ldGVyKXsKLQotICAgICAgSmF2YVBhcmFtZXRlciBqYXZhUGFyYW1ldGVyID0gKEphdmFQYXJhbWV0ZXIpdHlwZU5hdmlnYXRvcjsKLSAgICAgIEphdmFIZWxwZXJzIGphdmFIZWxwZXJzID0gamF2YVBhcmFtZXRlci5nZXRKYXZhVHlwZSgpOwotICAgICAgc3RhdHVzID0gdkFjdGlvbi52aXNpdChqYXZhSGVscGVycyk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHR5cGVOYXZpZ2F0b3IgaW5zdGFuY2VvZiBKYXZhSGVscGVycyl7Ci0gICAgCXN0YXR1cyA9IHZBY3Rpb24udmlzaXQodHlwZU5hdmlnYXRvcik7CQotICAgIH0KLSAgICBlbHNlIGlmICh0eXBlTmF2aWdhdG9yIGluc3RhbmNlb2YgU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yKXsKLSAgICAgIFNhbXBsZVByb3BlcnR5RGVzY3JpcHRvciBwZCA9IChTYW1wbGVQcm9wZXJ0eURlc2NyaXB0b3IpdHlwZU5hdmlnYXRvcjsKLSAgICAgIEphdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZCBqYXZhTW9mUmVmID0gbmV3IEphdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZCgpOwotICAgICAgamF2YU1vZlJlZi5zZXRDbGllbnRQcm9qZWN0KGNsaWVudFByb2plY3QpOwotICAgICAgamF2YU1vZlJlZi5zZXRQcm94eUJlYW4oKChKYXZhSGVscGVycylwZC5nZXRQcm9wZXJ0eVR5cGUoKSkuZ2V0UXVhbGlmaWVkTmFtZSgpKTsKLSAgICAgIGphdmFNb2ZSZWYuc2V0RW52aXJvbm1lbnQoIGVudl8gKTsKLSAgICAgIHN0YXR1cyA9IGphdmFNb2ZSZWYuZXhlY3V0ZSggbnVsbCwgbnVsbCApOwotICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuRVJST1IpCi0gICAgICAJcmV0dXJuIHN0YXR1czsKLSAgICAgIAotICAgICAgc3RhdHVzID0gdkFjdGlvbi52aXNpdChqYXZhTW9mUmVmLmdldEphdmFDbGFzcygpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZU5hdmlnYXRvciBpbnN0YW5jZW9mIEZpZWxkKXsKLSAgICAgIEZpZWxkIGZpZWxkID0gKEZpZWxkKXR5cGVOYXZpZ2F0b3I7Ci0gICAgICBKYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQgamF2YU1vZlJlZiA9IG5ldyBKYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQoKTsKLSAgICAgIGphdmFNb2ZSZWYuc2V0Q2xpZW50UHJvamVjdChjbGllbnRQcm9qZWN0KTsKLSAgICAgIGphdmFNb2ZSZWYuc2V0UHJveHlCZWFuKCgoSmF2YUhlbHBlcnMpZmllbGQuZ2V0RVR5cGUoKSkuZ2V0UXVhbGlmaWVkTmFtZSgpKTsKLSAgICAgIGphdmFNb2ZSZWYuc2V0RW52aXJvbm1lbnQoIGVudl8gKTsKLSAgICAgCi0gICAgICBzdGF0dXMgPSBqYXZhTW9mUmVmLmV4ZWN1dGUoIG51bGwsIG51bGwgKTsKLSAgICAgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKT09U3RhdHVzLkVSUk9SKQotICAgICAgCXJldHVybiBzdGF0dXM7Ci0gICAgICAKLSAgICAgIHN0YXR1cyA9IHZBY3Rpb24udmlzaXQoamF2YU1vZlJlZi5nZXRKYXZhQ2xhc3MoKSk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLSAgCi0gICAgICAgIAotICAKLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9BYnN0cmFjdFN0YXJ0U2VydmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0Fic3RyYWN0U3RhcnRTZXJ2ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDczMTFmYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0Fic3RyYWN0U3RhcnRTZXJ2ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmRlYnVnLmNvcmUuSUxhdW5jaE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnBsdWdpbi5XZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RTdGFydFNlcnZlciB7Ci0gCi1wcm90ZWN0ZWQgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yOwotcHJpdmF0ZSBJTG9nIGxvZ187Ci0KLXB1YmxpYyBBYnN0cmFjdFN0YXJ0U2VydmVyKCkKLXsKLQlsb2dfID0gRW52aXJvbm1lbnRTZXJ2aWNlLmdldEVjbGlwc2VMb2coKTsKLX0KLQotLyoqCi0gKiBFeGVjdXRlIHRoZSBjb21tYW5kCi0gKi8KLXB1YmxpYyB2b2lkIFN0YXJ0U2VydmVyIChJUHJvamVjdCBwcm9qZWN0LCBJU2VydmVyIHNlcnZlciwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBib29sZWFuIHJlc3RhcnQpIHRocm93cyBDb3JlRXhjZXB0aW9uCi17Ci0JdGhpcy5tb25pdG9yID0gbW9uaXRvcjsKLQotICAgdHJ5Ci0gIHsKLSAgIAkKLS8vICAgIElKYXZhU2VydmVyIGphdmFTZXJ2ZXIgPSAoSUphdmFTZXJ2ZXIpIHNlcnZlci5nZXREZWxlZ2F0ZSgpOwotLy8gICAgYWRkSmFyc1RvQ2xhc3NQYXRoKGphdmFTZXJ2ZXIpOwotICAgIHZhbGlkYXRlUmVtb3RlU2VydmVyUGF0aChzZXJ2ZXIpOwotCi0gICAgaWYgKHNlcnZlci5nZXRTZXJ2ZXJTdGF0ZSgpICE9IElTZXJ2ZXIuU1RBVEVfU1RPUFBFRCkgIC8vIFRoZSBTZXJ2ZXIgaXMgcnVubmluZwotICAgIHsgCi0gICAgICBpZiAoc2VydmVyLmdldFNlcnZlclJlc3RhcnRTdGF0ZSgpKQotICAgICAgeyAgICAKLSAgICAgIAkKLSAgICAgICAgc2VydmVyLnN5bmNocm9ub3VzU3RvcChmYWxzZSk7Ci0gICAgICAgIGxvZ18ubG9nKElMb2cuSU5GTywgNTA1MCwgdGhpcywgIlN0YXJ0U2VydmVyIiwgInByb2plY3Q9Iitwcm9qZWN0KyIsIFN0b3AgY29tbWFuZCBjb21wbGV0ZWQsIHJlc3RhcnQgbmVlZGVkIik7Ci0gICAgICAgIHB1Ymxpc2hQcm9qZWN0KHNlcnZlcik7Ci0gICAgCXN0YXJ0UHJvamVjdChzZXJ2ZXIpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgCQotICAgICAgICBpZiAocmVzdGFydCkgLy8gV0VCLUlORlxsaWIgbmVlZCB0byBiZSByZWxvYWRlZAotICAgICAgICB7Ci0gICAgICAgICAgcHVibGlzaFByb2plY3Qoc2VydmVyKTsgICAgICAKLSAgICAgICAgICByZXN0YXJ0UHJvamVjdChwcm9qZWN0LCBzZXJ2ZXIpOwotICAgICAgICB9ICAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgCQotICAgIAkJcHVibGlzaFByb2plY3Qoc2VydmVyKTsKLSAgICAJCXN0YXJ0UHJvamVjdChzZXJ2ZXIpOwotICAgIAl9Ci19Ci0KLSAgY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpIHsKLSAgCXRocm93IGNlOwotICAJfQotICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICB0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELDAsQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfU0VSVkVSLGUpKTsKLSAgfQotfQotCi1wcm90ZWN0ZWQgdm9pZCBwdWJsaXNoUHJvamVjdChJU2VydmVyIHNlcnZlcikgdGhyb3dzIENvcmVFeGNlcHRpb24KLXsKLSAgICAgIG1vbml0b3Iuc3ViVGFzayggQ29uc3VtcHRpb25NZXNzYWdlcy5QUk9HUkVTU19JTkZPX1BVQkxJU0hJTkdfU0VSVkVSICk7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IHNlcnZlci5wdWJsaXNoKElTZXJ2ZXIuUFVCTElTSF9JTkNSRU1FTlRBTCwgbW9uaXRvcik7Ci0gICAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgIT0gSVN0YXR1cy5PSykKLSAgICAgIAl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihzdGF0dXMpOwotICAgICAgbG9nXy5sb2coSUxvZy5JTkZPLCA1MDUxLCB0aGlzLCAicHVibGlzaFByb2plY3QiLCAiSVNlcnZlcj0iK3NlcnZlcisiLCBQdWJsaXNoIGNvbW1hbmQgY29tcGxldGVkIik7Ci0gfQotCi1wcm90ZWN0ZWQgdm9pZCBzdGFydFByb2plY3QoSVNlcnZlciBzZXJ2ZXIpIHRocm93cyBDb3JlRXhjZXB0aW9uCi17Ci0gIHRyeQotICB7Ci0gICAgbW9uaXRvci5zdWJUYXNrKCBDb25zdW1wdGlvbk1lc3NhZ2VzLlBST0dSRVNTX0lORk9fU1RBUlRJTkdfU0VSVkVSICk7ICAgIAotICAgIHNlcnZlci5zeW5jaHJvbm91c1N0YXJ0KElMYXVuY2hNYW5hZ2VyLlJVTl9NT0RFLCBtb25pdG9yKTsKLSAgICBsb2dfLmxvZyhJTG9nLklORk8sIDUwNTIsIHRoaXMsICJzdGFydFByb2plY3QiLCAiSVNlcnZlcj0iK3NlcnZlcisiLCBTdGFydCBjb21tYW5kIGNvbXBsZXRlZCIpOwotICAgIAotICB9Ci0gIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgIHRocm93IG5ldyBDb3JlRXhjZXB0aW9uKG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUixXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsMCxDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9TRVJWRVIsZSkpOwotICB9ICAKLX0KLQotcHJvdGVjdGVkIHZvaWQgcmVzdGFydFByb2plY3QoSVByb2plY3QgcHJvamVjdCwgSVNlcnZlciBzZXJ2ZXIpIHRocm93cyBDb3JlRXhjZXB0aW9uCi17Ci0gIC8vRG8gbm90aGluZwotfQotCi1wdWJsaWMgdm9pZCBydW5QcmVTZXJ2ZXJDb25maWcoSVNlcnZlciBzZXJ2ZXIsIElQcm9qZWN0IEVBUlByb2plY3QpewotCi0JcmV0dXJuOwotCQotfQotCi1wdWJsaWMgdm9pZCBydW5Qb3N0U2VydmVyQ29uZmlnKElTZXJ2ZXIgc2VydmVyLCBJUHJvamVjdCBFQVJQcm9qZWN0KXsKLQotCXJldHVybjsKLX0KLQotCi1wcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBhZGRKYXJzVG9DbGFzc1BhdGgoSVNlcnZlciBzZXJ2ZXIpIHRocm93cyBDb3JlRXhjZXB0aW9uOwotcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgdmFsaWRhdGVSZW1vdGVTZXJ2ZXJQYXRoKElTZXJ2ZXIgc2VydmVyKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbjsKLQotcHVibGljIHZvaWQgc3RvcFNlcnZlcihJU2VydmVyIHNlcnZlcikgdGhyb3dzIENvcmVFeGNlcHRpb24gewotCi0JaWYgKHNlcnZlciAhPSBudWxsKSB7Ci0KLQkJaWYgKHNlcnZlci5nZXRTZXJ2ZXJTdGF0ZSgpICE9IElTZXJ2ZXIuU1RBVEVfU1RPUFBFRCkgewotCQkJc2VydmVyLnN5bmNocm9ub3VzU3RvcChmYWxzZSk7Ci0JCX0KLQl9CQotCQotfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0FkZE1vZHVsZVRvU2VydmVyQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9BZGRNb2R1bGVUb1NlcnZlckNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYwYjU4YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0FkZE1vZHVsZVRvU2VydmVyQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDkyMSBbMTU4MjEwXSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbiwgQ2FsbGluZyBpbmNyZW1lbnRhbCBidWlsZCBvbiB0aGUgcHJvamVjdCBiZWZvcmUgYWRkaW5nIHRvIHNlcnZlcgotICogMjAwODA0MTUgICAyMjcyMzcgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwOTAzMTEgMjUwOTg0ICAgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBVc2UgYW5vdGhlciBtZWNoYW5pc20gdG8gd2FpdCBmb3IgYnVpbGQgdG8gYmUgY29tcGxldGVkCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JbmNyZW1lbnRhbFByb2plY3RCdWlsZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU2VydmVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSU1vZHVsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcldvcmtpbmdDb3B5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJVdGlsOwotCi1wdWJsaWMgY2xhc3MgQWRkTW9kdWxlVG9TZXJ2ZXJDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgCi0gIHByaXZhdGUgU3RyaW5nIHNlcnZlckluc3RhbmNlSWQ7Ci0gIHByaXZhdGUgU3RyaW5nIHByb2plY3Q7Ci0gIHByaXZhdGUgU3RyaW5nIG1vZHVsZTsKLQkKLQlwdWJsaWMgQWRkTW9kdWxlVG9TZXJ2ZXJDb21tYW5kKCkKLQl7Ci0JfQotCQotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotCXsKLSAgICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotICAgICAgCi0JICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsJICAgIAotCSAgICBJU2VydmVyIHNlcnZlciA9IG51bGw7Ci0JICAgIGlmKCEoc2VydmVySW5zdGFuY2VJZCA9PSBudWxsKSkKLQkgICAgCXNlcnZlciA9IFNlcnZlckNvcmUuZmluZFNlcnZlcihzZXJ2ZXJJbnN0YW5jZUlkKTsKLQkgICAgaWYgKHNlcnZlciA9PSBudWxsKQotCSAgICB7Ci0JICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0lOU1RBTkNFX05PVF9GT1VORCApOwotCSAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkgICAgICByZXR1cm4gc3RhdHVzOwotCSAgICB9Ci0JICAgCi0JICAgIElTZXJ2ZXJXb3JraW5nQ29weSBzZXJ2ZXJ3YyA9IG51bGw7Ci0JICAgIAotCSAgICB0cnkKLQkgICAgewotCSAgICAvL0Vuc3VyZSB0aGUgbW9kdWxlIGlzIG5vdCBhIEphdmEgdXRpbGl0eQotCSAgICBJUHJvamVjdCBpcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChwcm9qZWN0KTsKLQkgICAgaWYgKCFKMkVFVXRpbHMuaXNKYXZhQ29tcG9uZW50KGlwcm9qZWN0KSkKLQkgICAgeyAgICAgIAotCSAgICAJSU1vZHVsZSBpbW9kdWxlID0gU2VydmVyVXRpbHMuZ2V0TW9kdWxlKGlwcm9qZWN0KTsKLQkgICAgCS8vIFRPRE86ICBUaGlzIHdvcmthcm91bmQgZm9yIDE1Njc2OCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBkZWZlY3QgaXMgZml4ZWQKLQkgICAgCWlmIChpbW9kdWxlID09IG51bGwpIHsKLQkgICAgCSAgICAvLyBjYWxsaW5nIGluY3JlbWVudGFsIGJ1aWxkIG9uIHRoZSBwcm9qZWN0IGJlZm9yZSB0cnlpbmcgYWdhaW4KLQkgICAgCQlpcHJvamVjdC5idWlsZChJbmNyZW1lbnRhbFByb2plY3RCdWlsZGVyLklOQ1JFTUVOVEFMX0JVSUxELG51bGwpOwotCSAgICAJCWltb2R1bGUgPSBTZXJ2ZXJVdGlscy5nZXRNb2R1bGUoaXByb2plY3QpOwotCSAgICAJCWlmIChpbW9kdWxlID09IG51bGwpIHsgIAotCSAgICAJCQkvLyByZXR1cm4gZXJyb3IgaWYgbW9kdWxlIGlzIHN0aWxsIG51bGwgYWZ0ZXIgMSByZXRyeQotCSAgICAJCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfQUREX01PRFVMRSwgbmV3IFN0cmluZ1tde21vZHVsZX0pICk7Ci0JICAgIAkJCWVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkgICAgCQkJcmV0dXJuIHN0YXR1czsKLQkgICAgCQl9Ci0JICAgIAl9Ci0JICAgIAkvLyBlbmQgb2Ygd29ya2Fyb3VuZCBmb3IgMTU2NzY4Ci0JICAgIAkKLQkgICAgICBpZiAoIVNlcnZlclV0aWwuY29udGFpbnNNb2R1bGUoc2VydmVyLCBpbW9kdWxlLCBudWxsKSkKLQkgICAgICB7Ci0JICAgICAgICBJTW9kdWxlW10gaW1vZHVsZXMgPSBuZXcgSU1vZHVsZVtde2ltb2R1bGV9OwotCSAgICAgICAgc2VydmVyd2MgPSBzZXJ2ZXIuY3JlYXRlV29ya2luZ0NvcHkoKTsKLQkgICAgICAgIFNlcnZlclV0aWwubW9kaWZ5TW9kdWxlcyhzZXJ2ZXJ3YywgaW1vZHVsZXMsIG51bGwsIG51bGwpOwotCSAgICAgIH0KLQotCSAgICB9Ci0JICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkKLQkgICAgewotCSAgICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9BRERfTU9EVUxFLCBuZXcgU3RyaW5nW117bW9kdWxlfSksIGUpOwotCSAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkgICAgICByZXR1cm4gc3RhdHVzOyAgICAgIAotCSAgICB9IGZpbmFsbHkKLQkgICAgewotCSAgICAgIHRyeQotCSAgICAgIHsKLQkgICAgICAgIGlmIChzZXJ2ZXJ3YyAhPSBudWxsKQotCSAgICAgICAgewotCSAgICAgICAgICBzZXJ2ZXJ3Yy5zYXZlKHRydWUsIG51bGwpOwotCSAgICAgICAgfQotCSAgICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0JICAgICAgewotCSAgICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0FERF9NT0RVTEUsIG5ldyBTdHJpbmdbXSB7IG1vZHVsZSB9KSwgY2UpOwotCSAgICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCSAgICAgICAgcmV0dXJuIHN0YXR1czsKLQkgICAgICB9ICAgICAgCi0JICAgIH0KLQkgICAgCi0JCXJldHVybiBzdGF0dXM7Ci0JICAgIAotCQkKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRNb2R1bGUoU3RyaW5nIG1vZHVsZSkKLQl7Ci0JCXRoaXMubW9kdWxlID0gbW9kdWxlOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFByb2plY3QoU3RyaW5nIHByb2plY3QpCi0JewotCQl0aGlzLnByb2plY3QgPSBwcm9qZWN0OwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFNlcnZlckluc3RhbmNlSWQoU3RyaW5nIHNlcnZlckluc3RhbmNlSWQpCi0JewotCQl0aGlzLnNlcnZlckluc3RhbmNlSWQgPSBzZXJ2ZXJJbnN0YW5jZUlkOwotCX0JCi0KLQkKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQXNzb2NpYXRlTW9kdWxlV2l0aEVBUkNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQXNzb2NpYXRlTW9kdWxlV2l0aEVBUkNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJhYjhhMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0Fzc29jaWF0ZU1vZHVsZVdpdGhFQVJDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotcHVibGljIGNsYXNzIEFzc29jaWF0ZU1vZHVsZVdpdGhFQVJDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLQlwcml2YXRlIFN0cmluZyBwcm9qZWN0XzsKLQlwcml2YXRlIFN0cmluZyBtb2R1bGVfOwotCXByaXZhdGUgU3RyaW5nIGVhclByb2plY3RfOwotCXByaXZhdGUgU3RyaW5nIGVhcl87Ci0JCi0KLSAgcHVibGljIEFzc29jaWF0ZU1vZHVsZVdpdGhFQVJDb21tYW5kKCl7Ci0KLSAgfQotICAKLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLQl7Ci0gICAgSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgCi0JCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQkJSVByb2plY3QgbW9kdWxlUHJvamVjdCA9IG51bGw7Ci0JCUlQcm9qZWN0IGVhclByb2plY3QgPSBudWxsOwotCi0JCS8vIGdldCBwcm9qZWN0cwotCQlpZiAocHJvamVjdF8hPW51bGwpCi0JCQltb2R1bGVQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3RfKTsKLQkJaWYgKGVhclByb2plY3RfIT1udWxsKQotCQkJZWFyUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChlYXJQcm9qZWN0Xyk7Ci0JCQotCQkvLyBhc3NvY2lhdGUgbW9kdWxlcyBpZiBub3QgYWxyZWFkeSBhc3NvY2lhdGVkCi0JCWlmIChtb2R1bGVQcm9qZWN0IT1udWxsICYmIGVhclByb2plY3QhPW51bGwpIHsKLQkJCWlmICghSjJFRVV0aWxzLmlzQ29tcG9uZW50QXNzb2NpYXRlZChlYXJQcm9qZWN0LCBtb2R1bGVQcm9qZWN0KSkKLQkJCQlKMkVFVXRpbHMuYXNzb2NpYXRlQ29tcG9uZW50VG9FQVIobW9kdWxlUHJvamVjdCwgZWFyUHJvamVjdCk7Ci0JCX0KLQkJCi0JCS8vIGVuc3VyZSBtb2R1bGVzIGFyZSBhc3NvY2lhdGVkIG90aGVyd2lzZSByZXBvcnQgZXJyb3IKLQkJaWYgKCFKMkVFVXRpbHMuaXNDb21wb25lbnRBc3NvY2lhdGVkKGVhclByb2plY3QsIG1vZHVsZVByb2plY3QpKXsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9VTkFCTEVfVE9fQVNTT0NJQVRFLCBuZXcgU3RyaW5nW117bW9kdWxlXywgZWFyX30pICk7Ci0JCQlpZiAoZW52IT1udWxsKQotCQkJCWVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJICAgIHJldHVybiBzdGF0dXM7IAotCQl9Ci0JCQotCQlyZXR1cm4gc3RhdHVzOwotCX0KLQkKLSAgcHVibGljIHZvaWQgc2V0UHJvamVjdCggU3RyaW5nIHByb2plY3QgKQotICB7Ci0JICBwcm9qZWN0XyA9IHByb2plY3Q7Ci0gIH0KLQkgIAotICBwdWJsaWMgdm9pZCBzZXRNb2R1bGUoIFN0cmluZyBtb2R1bGUgKQotICB7Ci0JICBtb2R1bGVfID0gbW9kdWxlOwotICB9CQotCQotICBwdWJsaWMgdm9pZCBzZXRFQVJQcm9qZWN0KCBTdHJpbmcgZWFyUHJvamVjdCApCi0gIHsKLQkgIGVhclByb2plY3RfID0gZWFyUHJvamVjdDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RWFyKCBTdHJpbmcgZWFyICkKLSAgewotCSAgZWFyXyA9IGVhcjsgIAotICB9CQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9CdWlsZEJlYW5Db21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0J1aWxkQmVhbkNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA0ZjExOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0J1aWxkQmVhbkNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MTExMSAgIDI1MjA2MiBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24sIERvbid0IGRlcGVuZCBvbiBBdXRvQnVpbGQgdG8gY29tcGlsZSBiZWFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSW5jcmVtZW50YWxQcm9qZWN0QnVpbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi1wdWJsaWMgY2xhc3MgQnVpbGRCZWFuQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIHsKLQotCXByaXZhdGUgSVByb2plY3QgcHJvamVjdF87Ci0JCi0JLyoKLQkgKiBUaGlzIENvbW1hbmQgYnVpbGRzIHRoZSBzZXJ2aWNlIHByb2plY3QsIGFuZCBhbGwgcHJvamVjdHMgaXQgcmVmZXJlbmNlcy4gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKLQkgKiBCdWlsZFByb2plY3RDb21tYW5kIHdoaWNoIG9ubHkgYnVpbGRzIHRoZSBzZXJ2aWNlIHByb2plY3QKLQkgKi8KLQlwdWJsaWMgQnVpbGRCZWFuQ29tbWFuZCgpIHsKLQkJLy9kZWZhdWx0IGNvbnN0cnVjdG9yCi0JfQotCQotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24gewotCQlJUHJvamVjdFtdIHJlZmVyZW5jZWRQcm9qZWN0czsKLQkJCi0JCXRyeSB7Ci0JCQlyZWZlcmVuY2VkUHJvamVjdHMgPSBwcm9qZWN0Xy5nZXRSZWZlcmVuY2VkUHJvamVjdHMoKTsKLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgcmVmZXJlbmNlZFByb2plY3RzLmxlbmd0aDsgaSsrKSB7Ci0JCQkJcmVmZXJlbmNlZFByb2plY3RzW2ldLmJ1aWxkKEluY3JlbWVudGFsUHJvamVjdEJ1aWxkZXIuSU5DUkVNRU5UQUxfQlVJTEQsIG1vbml0b3IpOwotCQkJfQotCQkJcHJvamVjdF8uYnVpbGQoSW5jcmVtZW50YWxQcm9qZWN0QnVpbGRlci5JTkNSRU1FTlRBTF9CVUlMRCwgbW9uaXRvcik7Ci0JCQkKLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCXJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhlKTsKLQkJfQotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0JCi0JCi0JICAvKioKLQkgICAqIEBwYXJhbSBwcm9qZWN0IHRoZSBzZXJ2aWNlIHByb2plY3QgdG8gYmUgYnVpbHQuCi0JICAgKi8KLQkgIHB1YmxpYyB2b2lkIHNldFByb2plY3QoSVByb2plY3QgcHJvamVjdCkgewotCSAgICB0aGlzLnByb2plY3RfID0gcHJvamVjdDsKLQkgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9CdWlsZFByb2plY3RDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0J1aWxkUHJvamVjdENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUwNmQ3YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0J1aWxkUHJvamVjdENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwOTAzMTEgMjUwOTg0ICAgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBVc2UgYW5vdGhlciBtZWNoYW5pc20gdG8gd2FpdCBmb3IgYnVpbGQgdG8gYmUgY29tcGxldGVkCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JbmNyZW1lbnRhbFByb2plY3RCdWlsZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5OdWxsUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC52YWxpZGF0ZS5WYWxpZGF0aW9uTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLXB1YmxpYyBjbGFzcyBCdWlsZFByb2plY3RDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0gIHByaXZhdGUgVmFsaWRhdGlvbk1hbmFnZXIgdmFsaWRhdGlvbk1hbmFnZXI7Ci0gIHByaXZhdGUgSVByb2plY3QgcHJvamVjdF87Ci0gIHByaXZhdGUgYm9vbGVhbiBmb3JjZUJ1aWxkXzsKLSAgLy8gcm0gcHJpdmF0ZSBNb2RlbCBtb2RlbDsKLQotICAvKioKLSAgICogRGVmYXVsdCBDVE9SOwotICAgKi8KLSAgcHVibGljIEJ1aWxkUHJvamVjdENvbW1hbmQoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogRXhlY3V0ZSB0aGUgY29tbWFuZAotICAgKi8KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAoZm9yY2VCdWlsZF8pCi0gICAgICAgIHByb2plY3RfLmJ1aWxkKEluY3JlbWVudGFsUHJvamVjdEJ1aWxkZXIuSU5DUkVNRU5UQUxfQlVJTEQsIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotICAgICAgZWxzZSBpZiAodmFsaWRhdGlvbk1hbmFnZXIgPT0gbnVsbCkKLSAgICAgICAgcHJvamVjdF8uYnVpbGQoSW5jcmVtZW50YWxQcm9qZWN0QnVpbGRlci5JTkNSRU1FTlRBTF9CVUlMRCwgbmV3IE51bGxQcm9ncmVzc01vbml0b3IoKSk7Ci0gICAgICBlbHNlIGlmICh2YWxpZGF0aW9uTWFuYWdlci5nZXRXb3Jrc3BhY2VBdXRvQnVpbGRQcmVmZXJlbmNlKCkpCi0gICAgICAgIHByb2plY3RfLmJ1aWxkKEluY3JlbWVudGFsUHJvamVjdEJ1aWxkZXIuSU5DUkVNRU5UQUxfQlVJTEQsIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgICAKLSAgICAKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIGZvcmNlQnVpbGQgVGhlIGZvcmNlQnVpbGQgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Rm9yY2VCdWlsZChib29sZWFuIGZvcmNlQnVpbGQpIHsKLSAgICB0aGlzLmZvcmNlQnVpbGRfID0gZm9yY2VCdWlsZDsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdCB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KElQcm9qZWN0IHByb2plY3QpIHsKLSAgICB0aGlzLnByb2plY3RfID0gcHJvamVjdDsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1hbmFnZXIgVGhlIHZhbGlkYXRpb25NYW5hZ2VyIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFZhbGlkYXRpb25NYW5hZ2VyKFZhbGlkYXRpb25NYW5hZ2VyIHZhbGlkYXRpb25NYW5hZ2VyKSB7Ci0gICAgdGhpcy52YWxpZGF0aW9uTWFuYWdlciA9IHZhbGlkYXRpb25NYW5hZ2VyOwotICB9Ci0KLSAgCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQ2hlY2tQcm9qZWN0T0tDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0NoZWNrUHJvamVjdE9LQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODFmM2I5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQ2hlY2tQcm9qZWN0T0tDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci0KLXB1YmxpYyBjbGFzcyBDaGVja1Byb2plY3RPS0NvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiAKLXsKLQotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlU2VydmVyVHlwZUlkXzsKLQotCi0gIC8qKgotICAgKiBEZWZhdWx0IENUT1IKLSAgICovCi0gIHB1YmxpYyBDaGVja1Byb2plY3RPS0NvbW1hbmQoKSB7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgeyAKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgCi0gICAgU3RyaW5nIHR5cGVpZCA9IHNlcnZpY2VTZXJ2ZXJUeXBlSWRfOwotICAgIElTZXJ2ZXJbXSBzZXJ2ZXJzID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJzKCk7Ci0vLyAgICBJdGVyYXRvciBpdGVyYXRvciA9IHNlcnZlcnMuaXRlcmF0b3IoKTsKLSAgICBib29sZWFuIHZpZXdPcGVuID0gZmFsc2U7Ci0gICAgU3RyaW5nIHNlcnZlck5hbWUgPSBudWxsOwotCi0gICAgZm9yIChpbnQgaT0wO2k8c2VydmVycy5sZW5ndGg7aSsrKSB7Ci0gICAgICBJU2VydmVyIHNlcnZlciA9IChJU2VydmVyKSBzZXJ2ZXJzW2ldOwotCi0gICAgICAvLyBJZiB0aGUgY29uZmlndXJhdGlvbiBlZGl0b3IgaXMgb3BlbiBmb3IgdGhlIHNlcnZlciB0aGF0IHdlIGFyZQotICAgICAgLy8gZGVwbG95aW5nCi0gICAgICAvLyB0byB3ZSB3aWxsIHByb21wdCB0aGUgdXNlciB0byBjbG9zZSBpdC4KLSAgICAgIGlmIChzZXJ2ZXIgIT0gbnVsbCAmJiBzZXJ2ZXIuZ2V0U2VydmVyVHlwZSgpLmdldElkKCkuZXF1YWxzKHR5cGVpZCkpIHsKLSAgICAgICAgdmlld09wZW4gPSB0cnVlOwotICAgICAgICBzZXJ2ZXJOYW1lID0gc2VydmVyLmdldE5hbWUoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHZpZXdPcGVuKSB7Ci0gICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfU0VSVkVSX1ZJRVdfT1BFTiwgbmV3IFN0cmluZ1tdIHsgc2VydmVyTmFtZX0pOwotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBlcnJvck1lc3NhZ2UgKTsKLSAgICAgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBzZXJ2aWNlU2VydmVySWQKLSAgICogICAgICAgICAgICBUaGUgc2VydmljZVNlcnZlciBmYWN0b3J5IElkIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VTZXJ2ZXJUeXBlSUQoU3RyaW5nIHNlcnZpY2VTZXJ2ZXJJZCkgewotICAgIHRoaXMuc2VydmljZVNlcnZlclR5cGVJZF8gPSBzZXJ2aWNlU2VydmVySWQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQ29tcHV0ZUVuZHBvaW50Q29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9Db21wdXRlRW5kcG9pbnRDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3OWY3ZDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9Db21wdXRlRW5kcG9pbnRDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwNjEzICAgMjM3MTE2IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgc2VydmljZSBtb25pdG9yaW5nIGZhaWxzIG9uIGh0dHBzIGVuZHBvaW50Ci0gKiAyMDA4MDcxNSAgIDI0MDcyMiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQ2Fubm90IHNldHVwIFRDUC9JUCBNb25pdG9yIGZvciBzb2FwMTIgZW5kcG9pbnRzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9uaXRvci5FeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi1wdWJsaWMgY2xhc3MgQ29tcHV0ZUVuZHBvaW50Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXI7Ci0gIHByaXZhdGUgU3RyaW5nIHdzZGxVUkk7Ci0gIHByaXZhdGUgQm9vbGVhbiBtb25pdG9yU2VydmljZTsKLSAgcHJpdmF0ZSBJbnRlZ2VyIG1vbml0b3JlZFBvcnQ7Ci0KLSAgcHVibGljIENvbXB1dGVFbmRwb2ludENvbW1hbmQoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIG1vbml0b3JlZFBvcnQgVGhlIG1vbml0b3JlZFBvcnQgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TW9uaXRvcmVkUG9ydChJbnRlZ2VyIG1vbml0b3JlZFBvcnQpCi0gIHsKLSAgICB0aGlzLm1vbml0b3JlZFBvcnQgPSBtb25pdG9yZWRQb3J0OwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gbW9uaXRvclNlcnZpY2UgVGhlIG1vbml0b3JTZXJ2aWNlIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE1vbml0b3JTZXJ2aWNlKEJvb2xlYW4gbW9uaXRvclNlcnZpY2UpCi0gIHsKLSAgICB0aGlzLm1vbml0b3JTZXJ2aWNlID0gbW9uaXRvclNlcnZpY2U7Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSB3ZWJTZXJ2aWNlc1BhcnNlciBUaGUgd2ViU2VydmljZXNQYXJzZXIgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZXNQYXJzZXIoV2ViU2VydmljZXNQYXJzZXIgd2ViU2VydmljZXNQYXJzZXIpCi0gIHsKLSAgICB0aGlzLndlYlNlcnZpY2VzUGFyc2VyID0gd2ViU2VydmljZXNQYXJzZXI7Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSB3c2RsVVJJIFRoZSB3c2RsVVJJIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdzZGxVUkkoU3RyaW5nIHdzZGxVUkkpCi0gIHsKLSAgICB0aGlzLndzZGxVUkkgPSB3c2RsVVJJOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldEVuZHBvaW50KCkKLSAgewotICAgIGlmIChtb25pdG9yU2VydmljZSAhPSBudWxsICYmIG1vbml0b3JTZXJ2aWNlLmJvb2xlYW5WYWx1ZSgpICYmIG1vbml0b3JlZFBvcnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZiA9IHdlYlNlcnZpY2VzUGFyc2VyLmdldFdTRExEZWZpbml0aW9uKHdzZGxVUkkpOwotICAgICAgaWYgKGRlZiAhPSBudWxsKQotICAgICAgewotICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gZGVmLmdldFNlcnZpY2VzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgICAgewotICAgICAgICAgIFNlcnZpY2Ugc2VydmljZSA9IChTZXJ2aWNlKWl0Lm5leHQoKTsKLSAgICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0MiA9IHNlcnZpY2UuZ2V0UG9ydHMoKS52YWx1ZXMoKS5pdGVyYXRvcigpOyBpdDIuaGFzTmV4dCgpOykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBQb3J0IHBvcnQgPSAoUG9ydClpdDIubmV4dCgpOwotICAgICAgICAgICAgZm9yIChJdGVyYXRvciBpdDMgPSBwb3J0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7IGl0My5oYXNOZXh0KCk7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXQzLm5leHQoKTsKLSAgICAgICAgICAgICAgU3RyaW5nIGxvY2F0aW9uID0gbnVsbDsKLSAgICAgICAgICAgICAgaWYgKGV4dCBpbnN0YW5jZW9mIFNPQVBBZGRyZXNzKQotICAgICAgICAgICAgCWxvY2F0aW9uID0gKChTT0FQQWRkcmVzcylleHQpLmdldExvY2F0aW9uVVJJKCk7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIAlsb2NhdGlvbiA9IEV4dGVuc2liaWxpdHlFbGVtZW50VHJhbnNmb3JtZXJSZWdpc3RyeS5JTlNUQU5DRS50cmFuc2Zvcm0oZXh0KTsKLSAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uICE9IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgiaHR0cHM6Ly8iKSkKLSAgICAgICAgICAgICAgICAJbG9jYXRpb24gPSAiaHR0cDovLyIgKyBsb2NhdGlvbi5zdWJzdHJpbmcoOCk7Ci0gICAgICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgVVJMIHVybCA9IG5ldyBVUkwobG9jYXRpb24pOwotICAgICAgICAgICAgICAgICAgdXJsID0gbmV3IFVSTCh1cmwuZ2V0UHJvdG9jb2woKSwgdXJsLmdldEhvc3QoKSwgbW9uaXRvcmVkUG9ydC5pbnRWYWx1ZSgpLCB1cmwuZ2V0RmlsZSgpKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBtdXJsZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpbnQgcHJvdG9jb2xJbmRleCA9IGxvY2F0aW9uLmluZGV4T2YoIjovLyIpOwotICAgICAgICAgICAgICAgICAgaWYgKHByb3RvY29sSW5kZXggIT0gLTEpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBwcm90b2NvbCA9IGxvY2F0aW9uLnN1YnN0cmluZygwLCBwcm90b2NvbEluZGV4KzMpOwotICAgICAgICAgICAgICAgICAgICBpbnQgaG9zdFBvcnRJbmRleCA9IGxvY2F0aW9uLmluZGV4T2YoJy8nLCBwcm90b2NvbEluZGV4KzMpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZmlsZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGhvc3RQb3J0SW5kZXggPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBob3N0UG9ydEluZGV4ID0gbG9jYXRpb24ubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgZmlsZSA9ICIiOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICBmaWxlID0gbG9jYXRpb24uc3Vic3RyaW5nKGhvc3RQb3J0SW5kZXgsIGxvY2F0aW9uLmxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGhvc3RQb3J0ID0gbG9jYXRpb24uc3Vic3RyaW5nKHByb3RvY29sSW5kZXgrMywgaG9zdFBvcnRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBob3N0SW5kZXggPSBob3N0UG9ydC5pbmRleE9mKCc6Jyk7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBob3N0OwotICAgICAgICAgICAgICAgICAgICBpZiAoaG9zdEluZGV4ICE9IC0xKQotICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSBob3N0UG9ydC5zdWJzdHJpbmcoMCwgaG9zdEluZGV4KzEpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgaG9zdCA9IGhvc3RQb3J0ICsgJzonOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmV3UG9ydCA9IFN0cmluZy52YWx1ZU9mKG1vbml0b3JlZFBvcnQuaW50VmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBlbmRwb2ludCA9IG5ldyBTdHJpbmdCdWZmZXIocHJvdG9jb2wpOwotICAgICAgICAgICAgICAgICAgICBlbmRwb2ludC5hcHBlbmQoaG9zdCk7Ci0gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50LmFwcGVuZChuZXdQb3J0KTsKLSAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQuYXBwZW5kKGZpbGUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5kcG9pbnQudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBpbmZvKSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9Db21wdXRlUHJveHlFbmRwb2ludENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQ29tcHV0ZVByb3h5RW5kcG9pbnRDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTM0NmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9Db21wdXRlUHJveHlFbmRwb2ludENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA3MjggICAxNDU0MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNjEzICAgMjM3MTE2IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgc2VydmljZSBtb25pdG9yaW5nIGZhaWxzIG9uIGh0dHBzIGVuZHBvaW50Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotcHVibGljIGNsYXNzIENvbXB1dGVQcm94eUVuZHBvaW50Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgQm9vbGVhbiBtb25pdG9yU2VydmljZTsKLSAgcHJpdmF0ZSBJbnRlZ2VyIG1vbml0b3JlZFBvcnQ7Ci0gIHByaXZhdGUgU3RyaW5nIHByb3h5RW5kcG9pbnQ7Ci0gIHByaXZhdGUgU3RyaW5nIGVuZHBvaW50OwotCi0gIHB1YmxpYyBDb21wdXRlUHJveHlFbmRwb2ludENvbW1hbmQoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogQHBhcmFtIG1vbml0b3JlZFBvcnQgVGhlIG1vbml0b3JlZFBvcnQgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TW9uaXRvcmVkUG9ydChJbnRlZ2VyIG1vbml0b3JlZFBvcnQpCi0gIHsKLSAgICB0aGlzLm1vbml0b3JlZFBvcnQgPSBtb25pdG9yZWRQb3J0OwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gbW9uaXRvclNlcnZpY2UgVGhlIG1vbml0b3JTZXJ2aWNlIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE1vbml0b3JTZXJ2aWNlKEJvb2xlYW4gbW9uaXRvclNlcnZpY2UpCi0gIHsKLSAgICB0aGlzLm1vbml0b3JTZXJ2aWNlID0gbW9uaXRvclNlcnZpY2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RW5kcG9pbnQoKQotICB7Ci0gIAlpZiAobW9uaXRvclNlcnZpY2UgIT0gbnVsbCAmJiBtb25pdG9yU2VydmljZS5ib29sZWFuVmFsdWUoKSAmJiBtb25pdG9yZWRQb3J0ICE9IG51bGwpCi0gIAl7Ci0gIAkJLy8gVXNlIHRoZSBlbmRwb2ludCB0aGF0IG1hdGNoZXMgd2l0aCB0aGUgcHJveHkgdGhlIGV4dGVuc2lvbiBwYXNzZXMgdG8gdXMgaWYgaXQgaXMgc2V0Ci0gIAkJaWYgKHByb3h5RW5kcG9pbnQgIT0gbnVsbCkgewotICAJCQlTdHJpbmcgbG9jYXRpb24gPSBwcm94eUVuZHBvaW50OwotICAJCQlpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgiaHR0cHM6Ly8iKSkKLSAgICAgICAgICAgIAlsb2NhdGlvbiA9ICJodHRwOi8vIiArIGxvY2F0aW9uLnN1YnN0cmluZyg4KTsKLSAgCQkJdHJ5Ci0JCQl7Ci0gIAkJCQlVUkwgdXJsID0gbmV3IFVSTChsb2NhdGlvbik7Ci0gIAkJCQl1cmwgPSBuZXcgVVJMKHVybC5nZXRQcm90b2NvbCgpLCB1cmwuZ2V0SG9zdCgpLCBtb25pdG9yZWRQb3J0LmludFZhbHVlKCksIHVybC5nZXRGaWxlKCkpOwotICAJCQkJcmV0dXJuIHVybC50b1N0cmluZygpOwotCQkJfQotICAJCQljYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11cmxlKQotCQkJewotICAJCQkJaW50IHByb3RvY29sSW5kZXggPSBsb2NhdGlvbi5pbmRleE9mKCI6Ly8iKTsKLSAgICAgICAgICAgICAgICBpZiAocHJvdG9jb2xJbmRleCAhPSAtMSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBTdHJpbmcgcHJvdG9jb2wgPSBsb2NhdGlvbi5zdWJzdHJpbmcoMCwgcHJvdG9jb2xJbmRleCszKTsKLSAgICAgICAgICAgICAgICAgIGludCBob3N0UG9ydEluZGV4ID0gbG9jYXRpb24uaW5kZXhPZignLycsIHByb3RvY29sSW5kZXgrMyk7Ci0gICAgICAgICAgICAgICAgICBTdHJpbmcgZmlsZTsKLSAgICAgICAgICAgICAgICAgIGlmIChob3N0UG9ydEluZGV4ID09IC0xKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBob3N0UG9ydEluZGV4ID0gbG9jYXRpb24ubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbGUgPSAiIjsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGxvY2F0aW9uLnN1YnN0cmluZyhob3N0UG9ydEluZGV4LCBsb2NhdGlvbi5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdFBvcnQgPSBsb2NhdGlvbi5zdWJzdHJpbmcocHJvdG9jb2xJbmRleCszLCBob3N0UG9ydEluZGV4KTsKLSAgICAgICAgICAgICAgICAgIGludCBob3N0SW5kZXggPSBob3N0UG9ydC5pbmRleE9mKCc6Jyk7Ci0gICAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdDsKLSAgICAgICAgICAgICAgICAgIGlmIChob3N0SW5kZXggIT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIGhvc3QgPSBob3N0UG9ydC5zdWJzdHJpbmcoMCwgaG9zdEluZGV4KzEpOwotICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBob3N0ID0gaG9zdFBvcnQgKyAnOic7Ci0gICAgICAgICAgICAgICAgICBTdHJpbmcgbmV3UG9ydCA9IFN0cmluZy52YWx1ZU9mKG1vbml0b3JlZFBvcnQuaW50VmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgZW5kcG9pbnQgPSBuZXcgU3RyaW5nQnVmZmVyKHByb3RvY29sKTsKLSAgICAgICAgICAgICAgICAgIGVuZHBvaW50LmFwcGVuZChob3N0KTsKLSAgICAgICAgICAgICAgICAgIGVuZHBvaW50LmFwcGVuZChuZXdQb3J0KTsKLSAgICAgICAgICAgICAgICAgIGVuZHBvaW50LmFwcGVuZChmaWxlKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBlbmRwb2ludC50b1N0cmluZygpOwotICAgICAgICAgICAgICAgIH0KLQkJCX0KLSAgCQl9IGVsc2UgewotICAJCQlyZXR1cm4gZW5kcG9pbnQ7Ci0gIAkJfQotICAJfQotICAJcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBpbmZvKSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgLyoqCi0gICAqIEBwYXJhbSBwcm94eUVuZHBvaW50IFRoZSBwcm94eUVuZHBvaW50IHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFByb3h5RW5kcG9pbnQoU3RyaW5nIHByb3h5RW5kcG9pbnQpIHsKLSAgCXRoaXMucHJveHlFbmRwb2ludCA9IHByb3h5RW5kcG9pbnQ7Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSBlbmRwb2ludCBUaGUgZW5kcG9pbnQgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RW5kcG9pbnQoU3RyaW5nIGVuZHBvaW50KSB7Ci0gIAl0aGlzLmVuZHBvaW50ID0gZW5kcG9pbnQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQ29weVdTRExDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0NvcHlXU0RMQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2IzMTAzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQ29weVdTRExDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYxMjEzICAgMTY1NzIzIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MTIxMyAgIDE2NTcyNSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbjsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuSW1wb3J0OwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hOwotaW1wb3J0IGphdmF4LndzZGwuZmFjdG9yeS5XU0RMRmFjdG9yeTsKLWltcG9ydCBqYXZheC53c2RsLnhtbC5XU0RMV3JpdGVyOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uT3V0cHV0S2V5czsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2VSdW5uYWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC51cmkuVVJJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuTmV0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLndzZGw0ai5XU0RMRmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hRGlyZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5pbXBsLlhTRFNjaGVtYUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEUGFyc2VyOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBDb3B5V1NETENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIFN0cmluZyB3c2RsVVJJOwotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyOwotICBwcml2YXRlIFN0cmluZyBkZXN0aW5hdGlvblVSSTsKLSAgcHJpdmF0ZSBEZWZpbml0aW9uIGRlZjsKLSAgcHJpdmF0ZSBWZWN0b3IgaWdub3JlTGlzdDsKLQotICBwdWJsaWMgQ29weVdTRExDb21tYW5kKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIEV4ZWN1dGUgdGhlIGNvbW1hbmQKLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgQ29weVdTRExSdW5uYWJsZSBjb3B5V1NETFJ1bm5hYmxlID0gbmV3IENvcHlXU0RMUnVubmFibGUoZW52KTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZSgpLnJ1bihjb3B5V1NETFJ1bm5hYmxlLCBudWxsKTsKLSAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgIH0KLSAgICBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkKLSAgICB7Ci0gICAgICAgIElTdGF0dXMgc3RhdHVzID0gY2UuZ2V0U3RhdHVzKCk7Ci0JCWVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotICB9Ci0KLSAgIAotICBwcml2YXRlIGNsYXNzIENvcHlXU0RMUnVubmFibGUgaW1wbGVtZW50cyBJV29ya3NwYWNlUnVubmFibGUgewotICAJCi0gIAlwcml2YXRlIElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IG51bGw7Ci0gIAkKLSAgCXByb3RlY3RlZCBDb3B5V1NETFJ1bm5hYmxlKElFbnZpcm9ubWVudCBlbnYpewotICAJCWVudmlyb25tZW50ID0gZW52OwotICAJfQotICAJcHVibGljIHZvaWQgcnVuKElQcm9ncmVzc01vbml0b3IgcG0pIHRocm93cyBDb3JlRXhjZXB0aW9uIHsKLSAgCQlpZ25vcmVMaXN0ID0gbmV3IFZlY3RvcigpOwotICAJCWlmIChkZWYgPT0gbnVsbCkKLSAgCQkJZGVmID0gd2ViU2VydmljZXNQYXJzZXIuZ2V0V1NETERlZmluaXRpb24od3NkbFVSSSk7Ci0gIAkJdHJ5IHsKLSAgCQkJY29weVdTREwoZW52aXJvbm1lbnQsIHdzZGxVUkksIGdldEJhc2VVUkkoZGVzdGluYXRpb25VUkkpLCBnZXRMb2NhbG5hbWUoZGVzdGluYXRpb25VUkkpLCBkZWYpOwotICAJCX0gY2F0Y2ggKFRocm93YWJsZSBlKSB7Ci0gIAkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9DT1BZX1dTREwsIG5ldyBTdHJpbmdbXXt3c2RsVVJJLCBkZXN0aW5hdGlvblVSSX0pLCBlKSk7Ci0gIAkJfQotICAJfQotICB9Ci0gIHByaXZhdGUgdm9pZCBjb3B5V1NETChJRW52aXJvbm1lbnQgZW52LCBTdHJpbmcgdXJpLCBTdHJpbmcgZGVzdFVSSSwgU3RyaW5nIGRlc3RMb2NhbG5hbWUpIHRocm93cyBXU0RMRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwgV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFVSSUV4Y2VwdGlvbgotICB7Ci0gIAlEZWZpbml0aW9uIGRlZmluaXRpb247Ci0JCi0JdHJ5IHsKLQkJZGVmaW5pdGlvbiA9IHdlYlNlcnZpY2VzUGFyc2VyLmdldFdTRExEZWZpbml0aW9uVmVyYm9zZSh1cmkpOwotCQljb3B5V1NETChlbnYsIHVyaSwgZGVzdFVSSSwgZGVzdExvY2FsbmFtZSwgZGVmaW5pdGlvbik7CQotCX0gY2F0Y2ggKFdTRExFeGNlcHRpb24gZSkgewotCQljb3B5WE1MU2NoZW1hKGVudiwgdXJpLCBkZXN0VVJJKTsKLQl9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgY29weVdTREwoSUVudmlyb25tZW50IGVudiwgU3RyaW5nIHVyaSwgU3RyaW5nIGRlc3RVUkksIFN0cmluZyBkZXN0TG9jYWxuYW1lLCBEZWZpbml0aW9uIGRlZmluaXRpb24pIHRocm93cyBXU0RMRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwgV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFVSSUV4Y2VwdGlvbgotICB7Ci0JdXJpID0gbm9ybWFsaXplKHVyaSk7Ci0JaWYgKCFuZWVkVG9Db3B5KHVyaSkpIHsKLQkgICAJcmV0dXJuOwotCX0KLQlkZXN0VVJJID0gbm9ybWFsaXplKGRlc3RVUkkpOwotICAgIFN0cmluZyBiYXNlVVJJID0gZ2V0QmFzZVVSSSh1cmkpOwotICAgIGlmIChkZXN0TG9jYWxuYW1lID09IG51bGwgfHwgZGVzdExvY2FsbmFtZS5sZW5ndGgoKSA8PSAwKQotICAgICAgZGVzdExvY2FsbmFtZSA9IGdldExvY2FsbmFtZSh1cmkpOwotICAgIAotICAgIC8vIGNvcHkgV1NETAotICAgIFN0cmluZ0J1ZmZlciBkZXN0aW5hdGlvbkZpbGVVUkkgPSBuZXcgU3RyaW5nQnVmZmVyKGFkZFRyYWlsaW5nU2VwYXJhdG9yKGRlc3RVUkkpKTsKLSAgICBkZXN0aW5hdGlvbkZpbGVVUkkuYXBwZW5kKGRlc3RMb2NhbG5hbWUpOwotICAgIFdTRExGYWN0b3J5IHdzZGxGYWN0b3J5ID0gbmV3IFdTRExGYWN0b3J5SW1wbCgpOwotICAgIFdTRExXcml0ZXIgd3NkbFdyaXRlciA9IHdzZGxGYWN0b3J5Lm5ld1dTRExXcml0ZXIoKTsKLSAgICBPdXRwdXRTdHJlYW0gb3MgPSBlbnYuZ2V0VVJJRmFjdG9yeSgpLm5ld1VSSShkZXN0aW5hdGlvbkZpbGVVUkkudG9TdHJpbmcoKSkuZ2V0T3V0cHV0U3RyZWFtKCk7Ci0gICAgd3NkbFdyaXRlci53cml0ZVdTREwoZGVmaW5pdGlvbiwgb3MpOwotICAgIG9zLmNsb3NlKCk7Ci0gICAgLy8gY29weSA8d3NkbDppbXBvcnQ+cwotICAgIE1hcCBpbXBvcnRzID0gZGVmaW5pdGlvbi5nZXRJbXBvcnRzKCk7Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IGltcG9ydHMudmFsdWVzKCkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBMaXN0IGxpc3QgPSAoTGlzdClpdC5uZXh0KCk7Ci0gICAgICBmb3IgKEl0ZXJhdG9yIGxpc3RJdCA9IGxpc3QuaXRlcmF0b3IoKTsgbGlzdEl0Lmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIEltcG9ydCB3c2RsSW1wb3J0ID0gKEltcG9ydClsaXN0SXQubmV4dCgpOwotICAgICAgICBTdHJpbmcgd3NkbEltcG9ydFVSSSA9IHdzZGxJbXBvcnQuZ2V0TG9jYXRpb25VUkkoKTsKLSAgICAgICAgaWYgKGlzUmVsYXRpdmUod3NkbEltcG9ydFVSSSkpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgaW1wb3J0QmFzZVVSSSA9IChuZXcgU3RyaW5nQnVmZmVyKGJhc2VVUkkpKS5hcHBlbmQod3NkbEltcG9ydFVSSSkudG9TdHJpbmcoKTsKLSAgICAgICAgICBTdHJpbmcgd3NkbEltcG9ydEJhc2VVUkkgPSBnZXRCYXNlVVJJKHdzZGxJbXBvcnRVUkkpOwotICAgICAgICAgIFN0cmluZ0J1ZmZlciBpbXBvcnREZXN0VVJJID0gbmV3IFN0cmluZ0J1ZmZlcihkZXN0VVJJKTsKLSAgICAgICAgICBpZiAod3NkbEltcG9ydEJhc2VVUkkgIT0gbnVsbCkKLSAgICAgICAgICAgIGltcG9ydERlc3RVUkkuYXBwZW5kKHdzZGxJbXBvcnRCYXNlVVJJKTsKLSAgICAgICAgICBjb3B5V1NETChlbnYsIGltcG9ydEJhc2VVUkksIGltcG9ydERlc3RVUkkudG9TdHJpbmcoKSwgZ2V0TG9jYWxuYW1lKHdzZGxJbXBvcnRVUkkpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBUeXBlcyB0eXBlcyA9IGRlZmluaXRpb24uZ2V0VHlwZXMoKTsKLSAgICBpZiAodHlwZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMaXN0IHNjaGVtYXMgPSB0eXBlcy5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBzY2hlbWFzLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXQubmV4dCgpOwotICAgICAgICBpZiAoZXh0RWxlbWVudCBpbnN0YW5jZW9mIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgICAgICAgewotICAgICAgICAgIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCBzY2hlbWFFbGVtZW50ID0gKFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudClleHRFbGVtZW50OwotICAgICAgICAgIFhTRFNjaGVtYSB4c2RTY2hlbWEgPSBudWxsOwotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHhzZFNjaGVtYSA9IFhTRFNjaGVtYUltcGwuY3JlYXRlU2NoZW1hKHNjaGVtYUVsZW1lbnQuZ2V0RWxlbWVudCgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGlnbm9yZSBhbnkgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgaW50byBhCi0gICAgICAgICAgICAvLyBYU0RTY2hlbWEgaW5zdGFuY2UKLSAgICAgICAgICB9Ci0gICAgICAgICAgY29weVhNTFNjaGVtYShlbnYsIHhzZFNjaGVtYSwgYmFzZVVSSSwgZGVzdFVSSSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXh0RWxlbWVudCBpbnN0YW5jZW9mIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCkKLSAgICAgICAgewotICAgICAgICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCBzY2hlbWFFbGVtZW50ID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50SW1wbClleHRFbGVtZW50OwotICAgICAgICAgIFhTRFNjaGVtYSB4c2RTY2hlbWEgPSBudWxsOwotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHhzZFNjaGVtYSA9IFhTRFNjaGVtYUltcGwuY3JlYXRlU2NoZW1hKHNjaGVtYUVsZW1lbnQuZ2V0RWxlbWVudCgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGlnbm9yZSBhbnkgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgaW50byBhCi0gICAgICAgICAgICAvLyBYU0RTY2hlbWEgaW5zdGFuY2UKLSAgICAgICAgICB9Ci0gICAgICAgICAgY29weVhNTFNjaGVtYShlbnYsIHhzZFNjaGVtYSwgYmFzZVVSSSwgZGVzdFVSSSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV4dEVsZW1lbnQgaW5zdGFuY2VvZiBTY2hlbWEpCi0gICAgICAgIHsKLSAgICAgICAgICBTY2hlbWEgc2NoZW1hRWxlbWVudCA9IChTY2hlbWEpZXh0RWxlbWVudDsKLSAgICAgICAgICBYU0RTY2hlbWEgeHNkU2NoZW1hID0gbnVsbDsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB4c2RTY2hlbWEgPSBYU0RTY2hlbWFJbXBsLmNyZWF0ZVNjaGVtYShzY2hlbWFFbGVtZW50LmdldEVsZW1lbnQoKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBpZ25vcmUgYW55IGV4dGVuc2liaWxpdHkgZWxlbWVudHMgdGhhdCBjYW5ub3QgYmUgcGFyc2VkIGludG8gYQotICAgICAgICAgICAgLy8gWFNEU2NoZW1hIGluc3RhbmNlCi0gICAgICAgICAgfQotICAgICAgICAgIGNvcHlYTUxTY2hlbWEoZW52LCB4c2RTY2hlbWEsIGJhc2VVUkksIGRlc3RVUkkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBnZXRCYXNlVVJJKFN0cmluZyB1cmkpCi0gIHsKLSAgICBpbnQgaW5kZXggPSB1cmkubGFzdEluZGV4T2YoJy8nKTsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICBpbmRleCA9IHVyaS5sYXN0SW5kZXhPZignXFwnKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICByZXR1cm4gdXJpLnN1YnN0cmluZygwLCBpbmRleCArIDEpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0TG9jYWxuYW1lKFN0cmluZyB1cmkpCi0gIHsKLSAgICBpbnQgaW5kZXggPSB1cmkubGFzdEluZGV4T2YoJy8nKTsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICBpbmRleCA9IHVyaS5sYXN0SW5kZXhPZignXFwnKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICByZXR1cm4gdXJpLnN1YnN0cmluZyhpbmRleCArIDEpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiB1cmk7Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBhZGRUcmFpbGluZ1NlcGFyYXRvcihTdHJpbmcgcykKLSAgewotICAgIGlmICghKHMuZW5kc1dpdGgoIi8iKSB8fCBzLmVuZHNXaXRoKCJcXCIpKSkKLSAgICB7Ci0gICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKHMpOwotICAgICAgc2IuYXBwZW5kKCcvJyk7Ci0gICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHM7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gaXNSZWxhdGl2ZShTdHJpbmcgdXJpKQotICB7Ci0gICAgcmV0dXJuICh1cmkuaW5kZXhPZignOicpID09IC0xKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBjb3B5WE1MU2NoZW1hKElFbnZpcm9ubWVudCBlbnYsIFN0cmluZyB1cmksIFN0cmluZyBkZXN0VVJJKSB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFVSSUV4Y2VwdGlvbgotICB7Ci0JICB1cmkgPSBub3JtYWxpemUodXJpKTsKLQkgIGlmICghbmVlZFRvQ29weSh1cmkpKSB7Ci0JICAgIAlyZXR1cm47Ci0JICAgIH0KLQkgIGRlc3RVUkkgPSBub3JtYWxpemUoZGVzdFVSSSk7Ci0gICAgLy8gbG9hZCBhcyBhIGNhY2hlZCBzY2hlbWEKLSAgICBYU0RTY2hlbWEgeHNkU2NoZW1hID0gWFNEU2NoZW1hSW1wbC5nZXRTY2hlbWFGb3JTY2hlbWEodXJpKTsKLSAgICAvLyBpZiBzY2hlbWEgaXMgbm90IGNhY2hlZCwgcGFyc2UgaXQKLSAgICBpZiAoeHNkU2NoZW1hID09IG51bGwpCi0gICAgewotICAgICAgWFNEUGFyc2VyIHAgPSBuZXcgWFNEUGFyc2VyKCk7Ci0gICAgICBJbnB1dFN0cmVhbSBpcyA9IE5ldFV0aWxzLmdldFVSTElucHV0U3RyZWFtKHVyaSk7Ci0gICAgICBpZiAoaXMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcC5wYXJzZShpcyk7Ci0gICAgICAgIHhzZFNjaGVtYSA9IHAuZ2V0U2NoZW1hKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICh4c2RTY2hlbWEgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBjb3B5IHNjaGVtYQotICAgICAgRWxlbWVudCBlID0geHNkU2NoZW1hLmdldEVsZW1lbnQoKTsKLSAgICAgIERPTVNvdXJjZSBkb21Tb3VyY2UgPSBuZXcgRE9NU291cmNlKGUpOwotICAgICAgVHJhbnNmb3JtZXIgc2VyaWFsaXplciA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld1RyYW5zZm9ybWVyKCk7Ci0gICAgICBzZXJpYWxpemVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuSU5ERU5ULCAieWVzIik7Ci0gICAgICBzZXJpYWxpemVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuRU5DT0RJTkcsICJVVEYtOCIpOwotICAgICAgc2VyaWFsaXplci5zZXRPdXRwdXRQcm9wZXJ0eSgie2h0dHA6Ly94bWwuYXBhY2hlLm9yZy94c2x0fWluZGVudC1hbW91bnQiLCAiMiIpOwotICAgICAgT3V0cHV0U3RyZWFtIG9zID0gZW52LmdldFVSSUZhY3RvcnkoKS5uZXdVUkkoKG5ldyBTdHJpbmdCdWZmZXIoZGVzdFVSSSkpLmFwcGVuZChnZXRMb2NhbG5hbWUodXJpKSkudG9TdHJpbmcoKSkuZ2V0T3V0cHV0U3RyZWFtKCk7Ci0gICAgICBzZXJpYWxpemVyLnRyYW5zZm9ybShkb21Tb3VyY2UsIG5ldyBTdHJlYW1SZXN1bHQob3MpKTsKLSAgICAgIG9zLmNsb3NlKCk7Ci0gICAgICAvLyBjb3B5IDx4c2Q6aW1wb3J0PnMgYW5kIDx4c2Q6aW5jbHVkZT5zCi0gICAgICBjb3B5WE1MU2NoZW1hKGVudiwgeHNkU2NoZW1hLCBnZXRCYXNlVVJJKHVyaSksIGRlc3RVUkkpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBjb3B5WE1MU2NoZW1hKElFbnZpcm9ubWVudCBlbnYsIFhTRFNjaGVtYSB4c2RTY2hlbWEsIFN0cmluZyBiYXNlVVJJLCBTdHJpbmcgZGVzdFVSSSkgdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIElPRXhjZXB0aW9uLCBVUklFeGNlcHRpb24KLSAgewotICAgIGlmICh4c2RTY2hlbWEgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBjb3B5IDx4c2Q6aW1wb3J0PnMgYW5kIDx4c2Q6aW5jbHVkZT5zCi0gICAgICBFTGlzdCB4c2RTY2hlbWFDb250ZW50cyA9IHhzZFNjaGVtYS5nZXRDb250ZW50cygpOwotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHhzZFNjaGVtYUNvbnRlbnRzLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIE9iamVjdCBjb250ZW50ID0gaXQubmV4dCgpOwotICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFhTRFNjaGVtYURpcmVjdGl2ZSkKLSAgICAgICAgewotICAgICAgICAgIFhTRFNjaGVtYURpcmVjdGl2ZSB4c2RTY2hlbWFEaXJlY3RpdmUgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKWNvbnRlbnQ7Ci0gICAgICAgICAgU3RyaW5nIHhzZFNjaGVtYURpcmVjdGl2ZUxvY2F0aW9uID0geHNkU2NoZW1hRGlyZWN0aXZlLmdldFNjaGVtYUxvY2F0aW9uKCk7Ci0gICAgICAgICAgaWYgKHhzZFNjaGVtYURpcmVjdGl2ZUxvY2F0aW9uICE9IG51bGwgJiYgaXNSZWxhdGl2ZSh4c2RTY2hlbWFEaXJlY3RpdmVMb2NhdGlvbikpCi0gICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGl2ZVVSSSA9IChuZXcgU3RyaW5nQnVmZmVyKGJhc2VVUkkpKS5hcHBlbmQoeHNkU2NoZW1hRGlyZWN0aXZlTG9jYXRpb24pLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICBTdHJpbmcgZGlyZWN0aXZlQmFzZVVSSSA9IGdldEJhc2VVUkkoeHNkU2NoZW1hRGlyZWN0aXZlTG9jYXRpb24pOwotICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGRpcmVjdGl2ZURlc3RVUkkgPSBuZXcgU3RyaW5nQnVmZmVyKGRlc3RVUkkpOwotICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZUJhc2VVUkkgIT0gbnVsbCkKLSAgICAgICAgICAgICAgZGlyZWN0aXZlRGVzdFVSSS5hcHBlbmQoZGlyZWN0aXZlQmFzZVVSSSk7Ci0gICAgICAgICAgICBjb3B5WE1MU2NoZW1hKGVudiwgZGlyZWN0aXZlVVJJLCBkaXJlY3RpdmVEZXN0VVJJLnRvU3RyaW5nKCkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBuZWVkVG9Db3B5IChTdHJpbmcgbm9ybWFsaXplZFVSSSkgewkKLQkgIGlmIChpZ25vcmVMaXN0LmNvbnRhaW5zKG5vcm1hbGl6ZWRVUkkpKQotCQkgIHJldHVybiBmYWxzZTsKLQkgIGlnbm9yZUxpc3QuYWRkKG5vcm1hbGl6ZWRVUkkpOwotCSAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0vL25vcm1hbGl6ZSB0aGUgdXJpIHRvIHJlbW92ZSByZWxhdGl2ZSBhZGRyZXNzaW5nICIvLi4iCi0gIHByaXZhdGUgU3RyaW5nIG5vcm1hbGl6ZShTdHJpbmcgdXJpICkKLSAgewotICAJYm9vbGVhbiBub3JtYWxpemVkID0gZmFsc2U7Ci0gIAl3aGlsZSghbm9ybWFsaXplZCl7Ci0gIAkgIGludCBkaXIgPSB1cmkuaW5kZXhPZigiLy4uIik7Ci0gIAkgIGlmKGRpciA9PSAtMSkKLSAgCSAgCW5vcm1hbGl6ZWQgPSB0cnVlOwotICAJICBlbHNlewotICAJICAJU3RyaW5nIGZpcnN0ID0gdXJpLnN1YnN0cmluZygwLGRpcik7Ci0gIAkgICAgU3RyaW5nIHNlY29uZCA9IHVyaS5zdWJzdHJpbmcoZGlyICsgMyk7Ci0gIAkgICAgaW50IG5ld0luZGV4ID0gZmlyc3QubGFzdEluZGV4T2YoIi8iKTsKLSAgCSAgICBpZihuZXdJbmRleCA9PSAtMSl7Ci0gIAkgICAgCW5vcm1hbGl6ZWQgPSB0cnVlOwotICAJICAgIH0gZWxzZSB7Ci0gIAkgICAgCWZpcnN0ID0gZmlyc3Quc3Vic3RyaW5nKDAsbmV3SW5kZXgpOwotICAJICAgIAl1cmkgPSBmaXJzdCArIHNlY29uZDsKLSAgCSAgICB9Ci0gIAkgIH0KLSAgCX0KLSAgCXJldHVybiB1cmk7Ci0gIAotICB9Ci0JICAKLSAgcHVibGljIHZvaWQgc2V0V3NkbFVSSShTdHJpbmcgd3NkbFVSSSkKLSAgewotICAgIHRoaXMud3NkbFVSSSA9IHdzZGxVUkk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlc1BhcnNlcihXZWJTZXJ2aWNlc1BhcnNlciB3ZWJTZXJ2aWNlc1BhcnNlcikKLSAgewotICAgIHRoaXMud2ViU2VydmljZXNQYXJzZXIgPSB3ZWJTZXJ2aWNlc1BhcnNlcjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldERlc3RpbmF0aW9uVVJJKFN0cmluZyBkZXN0aW5hdGlvblVSSSkKLSAgewotICAgIHRoaXMuZGVzdGluYXRpb25VUkkgPSBkZXN0aW5hdGlvblVSSTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldERlZmluaXRpb24oRGVmaW5pdGlvbiBkZWYpCi0gIHsKLSAgICB0aGlzLmRlZiA9IGRlZjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9Db3B5V1NETFRyZWVDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0NvcHlXU0RMVHJlZUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJlZGIyZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0NvcHlXU0RMVHJlZUNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAxMTIgICAxNjU3MjEgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTREwgaW1wb3J0IGNhbm5vdCB1c2UgcmVsYXRpdmUgaW1wb3J0IHdpdGggdG8gcGFyZW50IGRpcmVjdG9yaWVzCi0gKiAyMDA3MDEyNSAgIDE3MTA3MSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQ3JlYXRlIHB1YmxpYyB1dGlsaXR5IG1ldGhvZCBmb3IgY29weWluZyBXU0RMIGZpbGVzCi0gKiAyMDA3MDQwOSAgIDE4MTYzNSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NETENvcGllciB1dGlsaXR5IHNob3VsZCBjcmVhdGUgdGFyZ2V0IGZvbGRlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbjsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51dGlsLldTRExDb3BpZXI7Ci0KLS8qKgotICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBXU0RMQ29waWVyfSBpbnN0ZWFkLiAKLSAqLwotcHVibGljIGNsYXNzIENvcHlXU0RMVHJlZUNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIFN0cmluZyB3c2RsVVJJOwotICBwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyOwotICBwcml2YXRlIFN0cmluZyBkZXN0aW5hdGlvblVSSTsKLSAgcHJpdmF0ZSBEZWZpbml0aW9uIGRlZjsKLSAgcHJpdmF0ZSBTdHJpbmcgd3NkbFJlbFBhdGg7Ci0gIAotICAvKioKLSAgICogRXhlY3V0ZSB0aGUgY29tbWFuZAotICAgKi8KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICBXU0RMQ29waWVyIGNvcGllciA9IG5ldyBXU0RMQ29waWVyKHdlYlNlcnZpY2VzUGFyc2VyKTsgICAgICAgIAotICAgICAgY29waWVyLnNldFNvdXJjZVVSSSh3c2RsVVJJLCBkZWYpOwotICAgICAgY29waWVyLnNldFRhcmdldEZvbGRlclVSSShnZXRCYXNlVVJJKGRlc3RpbmF0aW9uVVJJKSk7Ci0gICAgICBjb3BpZXIuc2V0VGFyZ2V0RmlsZW5hbWUoZ2V0TG9jYWxuYW1lKGRlc3RpbmF0aW9uVVJJKSk7Ci0gICAgICAgIAotICAgICAgUmVzb3VyY2VVdGlscy5nZXRXb3Jrc3BhY2UoKS5ydW4oY29waWVyLCBtb25pdG9yKTsKLSAgICAgICAgCi0gICAgICB3c2RsUmVsUGF0aCA9IGNvcGllci5nZXRSZWxhdGl2ZVBhdGgoKS50b1N0cmluZygpOwotCi0gICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICB9Ci0gICAgY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0gICAgewotICAgICAgICBJU3RhdHVzIHN0YXR1cyA9IGNlLmdldFN0YXR1cygpOwotCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIGdldEJhc2VVUkkoU3RyaW5nIHVyaSkKLSAgewotICAgIGludCBpbmRleCA9IHVyaS5sYXN0SW5kZXhPZignLycpOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgIGluZGV4ID0gdXJpLmxhc3RJbmRleE9mKCdcXCcpOwotICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgIHJldHVybiB1cmkuc3Vic3RyaW5nKDAsIGluZGV4ICsgMSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBnZXRMb2NhbG5hbWUoU3RyaW5nIHVyaSkKLSAgewotICAgIGludCBpbmRleCA9IHVyaS5sYXN0SW5kZXhPZignLycpOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgIGluZGV4ID0gdXJpLmxhc3RJbmRleE9mKCdcXCcpOwotICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgIHJldHVybiB1cmkuc3Vic3RyaW5nKGluZGV4ICsgMSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHVyaTsKLSAgfQotIAkgIAotICBwdWJsaWMgdm9pZCBzZXRXc2RsVVJJKFN0cmluZyB3c2RsVVJJKQotICB7Ci0gICAgdGhpcy53c2RsVVJJID0gd3NkbFVSSTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyKQotICB7Ci0gICAgdGhpcy53ZWJTZXJ2aWNlc1BhcnNlciA9IHdlYlNlcnZpY2VzUGFyc2VyOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RGVzdGluYXRpb25VUkkoU3RyaW5nIGRlc3RpbmF0aW9uVVJJKQotICB7Ci0gICAgdGhpcy5kZXN0aW5hdGlvblVSSSA9IGRlc3RpbmF0aW9uVVJJOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RGVmaW5pdGlvbihEZWZpbml0aW9uIGRlZikKLSAgewotICAgIHRoaXMuZGVmID0gZGVmOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFdTRExSZWxQYXRoKCkgewotICAgIHJldHVybiB3c2RsUmVsUGF0aDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9DcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQ3JlYXRlRmFjZXRlZFByb2plY3RDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ODhlNjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9DcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAxMzEgMTIxMDcxICAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyICAgICAKLSAqIDIwMDYwMjA0IDEyNDQwOCAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lciAgICAgIAotICogMjAwNjAyMTcgMTI2NzU3ICAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDIyMSAxMTkxMTEgICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDI3IDEyNjc4MCAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA1MTcgMTI2OTY1ICAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwOTA1ICAgMTU2MjMwIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuLCBIYW5kbGluZyBwcm9qZWN0cyB3aXRoIG5vIHRhcmdldCBydW50aW1lCi0gKiAyMDA3MDUwNSAgIDE4NDc3MiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAzMDUgICAyMjAzNzEga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMzA1ICAgMjIwMzcxIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuIC0gcmV2ZXJ0aW5nIHByZXZpb3VzIGNoYW5nZSB0byAyMjAzNzEKLSAqIDIwMDgwMzI2ICAgMjIwMzcxIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuIC0gcmUtYXBwbHlpbmcgMjIwMzcxCi0gKiAyMDA4MTAwMSAgIDI0Mzg2OSBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBXZWIgU2VydmljZSB0b29scyBhbGxvd2luZyBtaXhlZCBKMkVFIGxldmVscwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Quc2VydmVyLmNvcmUuRmFjZXRVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU2VydmVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldE1hdGNoZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldFNldHNCeVRlbXBsYXRlQ2FjaGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uUmVxdWlyZWRGYWNldFZlcnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLmludGVybmFsLnV0aWwuSU1vZHVsZUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklGYWNldGVkUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JRmFjZXRlZFByb2plY3RUZW1wbGF0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JUHJvamVjdEZhY2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklQcm9qZWN0RmFjZXRWZXJzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLlByb2plY3RGYWNldHNNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlclR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci0KLXB1YmxpYyBjbGFzcyBDcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotCi0gIC8vbmFtZSBvZiB0aGUgcHJvamVjdCB0byBiZSBjcmVhdGVkCi0gIHByaXZhdGUgU3RyaW5nICAgcHJvamVjdE5hbWU7IAotCi0gIC8vbmFtZSBvZiB0aGUgRUFSIHByb2plY3QgYXNzb2NpYXRlZCB3aXRoIHByb2plY3ROYW1lCi0gIHByaXZhdGUgU3RyaW5nICAgZWFyUHJvamVjdE5hbWU7IAotCi0gIC8vaWQgb2YgdGhlIElGYWNldGVkUHJvamVjdFRlbXBsYXRlIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoaXMgcHJvamVjdC4KLSAgcHJpdmF0ZSBTdHJpbmcgICB0ZW1wbGF0ZUlkOwotICAKLSAgLy9yZXF1aXJlZCBmYWNldCB2ZXJzaW9ucyB0aGF0IG11c3QgYmUgc2F0aXNmaWVkIHdoZW4gY3JlYXRpbmcgdGhlIHByb2plY3QgKHRoaXMgY29tZXMgZnJvbQotICAvL3RoZSBzZWxlY3RlZCBzZXJ2ZXJSdW50aW1lIG9yIGNsaWVudFJ1bnRpbWUgaW4gdGhlIGNhbGxpbmcgc2NlbmFyaW8pCi0gIHByaXZhdGUgUmVxdWlyZWRGYWNldFZlcnNpb25bXSAgIHJlcXVpcmVkRmFjZXRWZXJzaW9uczsKLQotICAvL3NlcnZlciB0eXBlIGlkIC0gdXNlZCB0byBkZXRlcm1pbmUgdGhlIGZhY2V0IHJ1bnRpbWUgdGhlIGNyZWF0ZWQgcHJvamVjdCB3aWxsIGJlIGJvdW5kIHRvCi0gIC8vaWYgc2VydmVySW5zdGFuY2VJZCBpcyBudWxsIG9yIGVtcHR5Ci0gIHByaXZhdGUgU3RyaW5nICAgc2VydmVyRmFjdG9yeUlkOwotCi0gIC8vc2VydmVyIGlkIC0gdXNlZCB0byBkZXRlcm1pbmUgdGhlIGZhY2V0IHJ1bnRpbWUgdGhlIGNyZWF0ZWQgcHJvamVjdCB3aWxsIGJlIGJvdW5kIHRvLiBNYXkKLSAgLy9iZSBudWxsIG9yIGVtcHR5LgotICBwcml2YXRlIFN0cmluZyAgIHNlcnZlckluc3RhbmNlSWQ7Ci0gIAotICAvL2ZhY2V0IHJ1bnRpbWUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBzZXJ2ZXJJbnN0YW5jZUlkIG9yIHNlcnZlckZhY3RvcnlJZAotICBwcml2YXRlIG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnJ1bnRpbWUuSVJ1bnRpbWUgZmFjZXRSdW50aW1lOwotICAKLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pCi0gIHsKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgCi0gICAgLy8gY2hlY2sgaWYgZGF0YSByZWFkeQotICAgIHN0YXR1cyA9IGNoZWNrRGF0YVJlYWR5KCk7Ci0gICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuRVJST1IpCi0gICAgewotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0KLSAgICBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLSAgICBpZiAoIXByb2plY3QuZXhpc3RzKCkpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIHN0YXR1cyA9IEZhY2V0VXRpbHMuY3JlYXRlTmV3RmFjZXRlZFByb2plY3QocHJvamVjdE5hbWUpOwotICAgICAgICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUikKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIElQcm9qZWN0IGNyZWF0ZWRQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLSAgICAgICAgSUZhY2V0ZWRQcm9qZWN0IGZwcm9qZWN0ID0gUHJvamVjdEZhY2V0c01hbmFnZXIuY3JlYXRlKGNyZWF0ZWRQcm9qZWN0KTsKLSAgICAgICAgCi0gICAgICAgIC8vR2V0IHRoZSBmYWNldCB2ZXJzaW9ucyB0byBpbnN0YWxsLiAKLSAgICAgICAgU2V0IGZhY2V0c1RvQWRkID0gZ2V0RmFjZXRzVG9BZGQoKTsKLSAgICAgICAgCi0gICAgICAgIC8vSW5zdGFsbCB0aGUgZmFjZXQgdmVyc2lvbnMKLSAgICAgICAgc3RhdHVzID0gRmFjZXRVdGlscy5hZGRGYWNldHNUb1Byb2plY3QoZnByb2plY3QsIGZhY2V0c1RvQWRkKTsKLSAgICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gc3RhdHVzOwotICAgICAgICB9ICAgICAgICAKLSAgICAgICAgCi0gICAgICAgIC8vU2V0IHRoZSBpbnN0YWxsZWQgZmFjZXQgdmVyc2lvbnMgYXMgZml4ZWQuCi0gICAgICAgIFNldCBuZXdGYWNldFZlcnNpb25zID0gZnByb2plY3QuZ2V0UHJvamVjdEZhY2V0cygpOwotICAgICAgICBTZXQgZml4ZWRGYWNldHMgPSBuZXcgSGFzaFNldCgpOwotICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ZXIgPSBuZXdGYWNldFZlcnNpb25zLml0ZXJhdG9yKCk7IGl0ZXIuaGFzTmV4dCgpOykgewotICAgICAgICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gZmFjZXRWZXJzaW9uID0gKElQcm9qZWN0RmFjZXRWZXJzaW9uKSBpdGVyLm5leHQoKTsKLSAgICAgICAgICAgIGZpeGVkRmFjZXRzLmFkZChmYWNldFZlcnNpb24uZ2V0UHJvamVjdEZhY2V0KCkpOwotICAgICAgICB9Ci0gICAgICAgIHN0YXR1cyA9IEZhY2V0VXRpbHMuc2V0Rml4ZWRGYWNldHNPblByb2plY3QoZnByb2plY3QsIGZpeGVkRmFjZXRzKTsKLSAgICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gc3RhdHVzOwotICAgICAgICB9ICAgICAgICAgICAgICAgIAotICAgICAgICAKLSAgICAgICAgCi0gICAgICAgIC8vU2V0IHRoZSBydW50aW1lICAgICAgICAKLSAgICAgICAgaWYgKGZhY2V0UnVudGltZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgc3RhdHVzID0gRmFjZXRVdGlscy5zZXRGYWNldFJ1bnRpbWVPblByb2plY3QoZnByb2plY3QsIGZhY2V0UnVudGltZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBhZGQgZmFjZXRzIHJlcXVpcmVkIGJ5IFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLSAgICAgICAgaWYgKHJlcXVpcmVkRmFjZXRWZXJzaW9ucy5sZW5ndGggIT0gMCkgewotICAgICAgICAJc3RhdHVzID0gRmFjZXRVdGlscy5hZGRSZXF1aXJlZEZhY2V0c1RvUHJvamVjdChwcm9qZWN0LCByZXF1aXJlZEZhY2V0VmVyc2lvbnMsIG1vbml0b3IpOwotICAgICAgICAJaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUikKLSAgICAgICAgCXsKLSAgICAgICAgCQlyZXR1cm4gc3RhdHVzOwotICAgICAgICAJfSAgICAgIAotICAgICAgICB9Ci0gICAgICAgICAgICAgCi0gICAgICAgIGlmIChmYWNldFJ1bnRpbWUgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAJLy8gYWRkIHRoZSBkZWZhdWx0IGZhY2V0cyB0aGF0J3Mgbm90IGluIGNvbmZsaWN0IHdpdGggdGhlIGV4aXN0aW5nIGZhY2V0cwotICAgICAgICAJU2V0IHByb2plY3RGYWNldFZlcnNpb25TZXQgPSBmcHJvamVjdC5nZXRQcm9qZWN0RmFjZXRzKCk7Ci0gICAgICAgIAlTZXQgcHJvamVjdEZhY2V0U2V0ID0gbmV3IEhhc2hTZXQoKTsKLSAgICAgICAgCS8vIGdldCB0aGUgcHJvamVjdCBmYWNldCBmcm9tIHRoZSBwcm9qZWN0IGZhY2V0IHZlcnNpb24gd2UgY2FsY3VsYXRlZAotICAgICAgICAJZm9yIChJdGVyYXRvciBpdGVyID0gcHJvamVjdEZhY2V0VmVyc2lvblNldC5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspIHsKLSAgICAgICAgCQlJUHJvamVjdEZhY2V0VmVyc2lvbiBwZnYgPSAoSVByb2plY3RGYWNldFZlcnNpb24pIGl0ZXIubmV4dCgpOwotICAgICAgICAJCXByb2plY3RGYWNldFNldC5hZGQocGZ2LmdldFByb2plY3RGYWNldCgpKTsKLSAgICAgICAgCX0KLSAgICAgICAgCXRyeSB7Ci0gICAgICAgIAkJU2V0IGRlZmF1bHRQcm9qZWN0RmFjZXRWZXJzaW9uU2V0ID0gZmFjZXRSdW50aW1lLmdldERlZmF1bHRGYWNldHMocHJvamVjdEZhY2V0U2V0KTsKLSAgICAgICAgCQkvLyBUaGUgcmV0dXJuZWQgZGVmYXVsdEZhY2V0U2V0IGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBwcm9qZWN0RmFjZXRTZXQgcGFzc2VkIGludG8gZ2V0RGVmYXVsdEZhY2V0cwotICAgICAgICAJCS8vIHBsdXMgYW55IGRlZmF1bHQgZmFjZXRzIHRoYXQgYXJlIG5vdCBpbiBjb25mbGljdCB3aXRoIHRoZSBvcmlnaW5hbCBwcm9qZWN0RmFjZXRTZXQuCi0gICAgICAgIAkJLy8gQWRkIHRvIGZhY2V0c1RvQWRkIGlmIHRoZSB0aGUgZGVmYXVsdCBmYWNldCBpcyBub3QgaW4gdGhlIG9yaWdpbmFsIHNldC4KLSAgICAgICAgCQlTZXQgZGVmYXVsdEZhY2V0c1RvQWRkID0gbmV3IEhhc2hTZXQoKTsKLSAgICAgICAgCQlmb3IgKEl0ZXJhdG9yIGl0ZXIgPSBkZWZhdWx0UHJvamVjdEZhY2V0VmVyc2lvblNldC5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspIHsKLSAgICAgICAgCQkJSVByb2plY3RGYWNldFZlcnNpb24gZGVmYXVsdFByb2pGYWNldFZlcnNpb24gPSAoSVByb2plY3RGYWNldFZlcnNpb24pIGl0ZXIubmV4dCgpOwotICAgICAgICAJCQlpZiggISBwcm9qZWN0RmFjZXRTZXQuY29udGFpbnMoIGRlZmF1bHRQcm9qRmFjZXRWZXJzaW9uLmdldFByb2plY3RGYWNldCgpICkgKQotICAgICAgICAJCQl7Ci0gICAgICAgIAkJCQlkZWZhdWx0RmFjZXRzVG9BZGQuYWRkKGRlZmF1bHRQcm9qRmFjZXRWZXJzaW9uKTsKLSAgICAgICAgCQkJfQotICAgICAgICAJCX0KLSAgICAgICAgCQlpZiAoIWRlZmF1bHRGYWNldHNUb0FkZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgCQkJc3RhdHVzID0gRmFjZXRVdGlscy5hZGRGYWNldHNUb1Byb2plY3QoZnByb2plY3QsIGRlZmF1bHRGYWNldHNUb0FkZCk7Ci0gICAgICAgIAkJCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLkVSUk9SKQotICAgICAgICAJCQl7Ci0gICAgICAgIAkJCQlyZXR1cm4gc3RhdHVzOwotICAgICAgICAJCQl9ICAgIAotICAgICAgICAJCX0KLSAgICAgICAgCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotICAgICAgICAJCS8vIElmIHRoZXJlJ3MgYW55IGV4Y2VwdGlvbiB3aGVuIHRyeWluZyB0byBnZXQgdGhlIGRlZmF1bHQgZmFjZXQsIGp1c3QgaWdub3JlIHRoZSBkZWZhdWx0IGZhY2V0Ci0gICAgICAgIAkJLy8gYW5kIHJldHVybiB0aGUgb3JpZ2luYWwgZmFjZXRzVG9BZGQuCi0gICAgICAgIAl9Ci0gICAgICAgIAkvLyBlbmQgb2YgYWRkaW5nIGRlZmF1bHQgZmFjZXRzCi0gICAgICAgIH0KLSAgICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9QUk9KRUNUX0NSRUFUSU9OLCBuZXcgU3RyaW5nW10geyBwcm9qZWN0TmFtZSB9KSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLSAgICAKLSAgcHJpdmF0ZSBJU3RhdHVzIGNoZWNrRGF0YVJlYWR5KCkKLSAgewotCi0JaWYgKHByb2plY3ROYW1lID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1BST0pFQ1RfQ1JFQVRJT04sIG5ldyBTdHJpbmdbXSB7cHJvamVjdE5hbWV9KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgZmFjZXRzIHRvIGluc3RhbGwgb24gdGhlIG5ldyBwcm9qZWN0LiBUaGUgc2V0IHdpbGwgY29uc2lzdAotICAgKiBvZiB0aGUgaGlnaGVzdCB2ZXJzaW9uIG9mIGVhY2ggb2YgdGhlIHRlbXBsYXRlJ3MgZml4ZWQgZmFjZXRzIHRoYXQgc2F0aXNmaWVzCi0gICAqIHRoZSByZXF1aXJlZCBmYWNldCB2ZXJzaW9ucywgdGhlIGZhY2V0IHJ1bnRpbWUsIGFuZCB0aGUgRUFSIHByb2plY3QgSjJFRSBsZXZlbC4KLSAgICogQHJldHVybiBTZXQgYSBTZXQgY29udGFpbmluZyBlbGVtZW50cyBvZiB0eXBlIElQcm9qZWN0RmFjZXRWZXJzaW9uLgotICAgKi8KLSAgcHJpdmF0ZSBTZXQgZ2V0RmFjZXRzVG9BZGQoKQotICB7Ci0gICAgU2V0IGZhY2V0cyA9IG51bGw7Ci0gICAgCi0gICAgLy9TZXQgdGhlIGZhY2V0IHJ1bnRpbWUuCi0gICAgc2V0RmFjZXRSdW50aW1lKCk7Ci0gICAgLy9HZXQgYWxsIGZhY2V0IHZlcnNpb24gY29tYmluYXRpb25zIGZvciB0aGUgdGVtcGxhdGUgaW4gb3JkZXIgb2YgYXNjZW5kaW5nIHZlcnNpb24gbnVtYmVycy4KLSAgICBTZXRbXSBhbGxDb21iaW5hdGlvbnMgPSBGYWNldFNldHNCeVRlbXBsYXRlQ2FjaGUuZ2V0SW5zdGFuY2UoKS5nZXRGYWNldFZlcnNpb25Db21iaW5hdGlvbnNGcm9tVGVtcGxhdGUodGVtcGxhdGVJZCk7Ci0gICAgaW50IG4gPSBhbGxDb21iaW5hdGlvbnMubGVuZ3RoOwotICAgIGlmIChmYWNldFJ1bnRpbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvL1dhbGsgdGhlIGZhY2V0IHZlcnNpb24gY29tYmluYXRpb25zIGluIG9yZGVyIG9mIGRlc2NlbmRpbmcgdmVyc2lvbiBudW1iZXJzLgotICAgICAgZm9yIChpbnQgaT1uLTE7IGk+PTA7IGktLSkKLSAgICAgIHsKLSAgICAgICAgLy9DaGVjayB0aGlzIHRlbXBsYXRlIGNvbWJpbmF0aW9uIHRvIHNlZSBpZiBpdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIAotICAgICAgICAvL3JlcXVpcmVkIGZhY2V0IHZlcnNpb25zLCB0aGUgc2VydmVyIHJ1bnRpbWUsIGFuZCB0aGUgRUFSLiBJZiBpdCBpcywgY2hvb3NlIGl0LgotICAgICAgICBTZXQgY29tYmluYXRpb24gPSBhbGxDb21iaW5hdGlvbnNbaV07Ci0gICAgICAgIEZhY2V0TWF0Y2hlciBmbSA9IEZhY2V0VXRpbHMubWF0Y2gocmVxdWlyZWRGYWNldFZlcnNpb25zLCBjb21iaW5hdGlvbik7Ci0gICAgICAgIGlmIChmbS5pc01hdGNoKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvL0NoZWNrIGFnYWluc3QgUnVudGltZSAmIEVBUgotICAgICAgICAgIGlmIChGYWNldFV0aWxzLmRvZXNSdW50aW1lU3VwcG9ydEZhY2V0cyhmYWNldFJ1bnRpbWUsIGNvbWJpbmF0aW9uKSAgJiYgZG9lc0VBUlN1cHBvcnRGYWNldHMoY29tYmluYXRpb24pICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvL1dlIGhhdmUgYSBtYXRjaC4gVXNlIHRoaXMgY29tYmluYXRpb24gb2YgZmFjZXQgdmVyc2lvbnMgZm9yIHByb2plY3QgY3JlYXRpb24uCi0gICAgICAgICAgICBmYWNldHMgPSBjb21iaW5hdGlvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfSAgICAgICAgICAgICAgICAKLSAgICAgIH0KLSAgICAgIAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgZm9yIChpbnQgaT1uLTE7IGk+PTA7IGktLSkKLSAgICAgIHsKLSAgICAgICAgLy9DaGVjayB0aGlzIHRlbXBsYXRlIGNvbWJpbmF0aW9uIHRvIHNlZSBpZiBpdCBpcyBjb21wYXRpYmxlIHdpdGggYm90aCB0aGUgCi0gICAgICAgIC8vc2VydmljZS9jbGllbnQgcnVudGltZSBhbmQgdGhlIHNlcnZlciBydW50aW1lLiBJZiBpdCBpcywgY2hvb3NlIGl0LgotICAgICAgICBTZXQgY29tYmluYXRpb24gPSBhbGxDb21iaW5hdGlvbnNbaV07Ci0gICAgICAgIEZhY2V0TWF0Y2hlciBmbSA9IEZhY2V0VXRpbHMubWF0Y2gocmVxdWlyZWRGYWNldFZlcnNpb25zLCBjb21iaW5hdGlvbik7Ci0gICAgICAgIGlmIChmbS5pc01hdGNoKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vV2UgaGF2ZSBhIG1hdGNoLiBVc2UgdGhpcyBjb21iaW5hdGlvbiBvZiBmYWNldCB2ZXJzaW9ucyBmb3IgcHJvamVjdCBjcmVhdGlvbi4KLSAgICAgICAgICAgIGZhY2V0cyA9IGNvbWJpbmF0aW9uOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gICAgICAgICAgICAgICAgCi0gICAgICB9ICAgICAgCi0gICAgfQotICAgCi0gICAgLy9Vbmxpa2VseSB0byBnZXQgdG8gdGhpcyBwb2ludCBpbiB0aGUgY29kZSwgYnV0IGlmIHdlIGRvLCBjaG9vc2UgdGhlIGhpZ2hlc3QgdmVyc2lvbgotICAgIC8vb2YgZWFjaCBmaXhlZCBmYWNldCBpbiB0aGUgdGVtcGxhdGUgdGhhdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlciBydW50aW1lCi0gICAgaWYgKGZhY2V0cyA9PSBudWxsKQotICAgIHsKLSAgICAgIGZhY2V0cyA9IGdldEhpZ2hlc3RGYWNldFZlcnNpb25zRnJvbVRlbXBsYXRlQW5kU2VydmVyKCk7Ci0gICAgfQotICAgICAKLSAgICByZXR1cm4gZmFjZXRzOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIGZhY2V0UnVudGltZSBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHNlcnZlckluc3RhbmNlSWQgb3Igc2VydmVyRmFjdG9yeUlkCi0gICAqIFByZWZlcmVuY2UgaXMgZ2l2ZW4gdG8gbm9uLXN0dWIgZmFjZXQgcnVudGltZXMuCi0gICAqLwotICBwcml2YXRlIHZvaWQgc2V0RmFjZXRSdW50aW1lKCkKLSAgewotICAgIAotCSAgaWYgKHNlcnZlckluc3RhbmNlSWQgIT0gbnVsbCAmJiBzZXJ2ZXJJbnN0YW5jZUlkLmxlbmd0aCgpPjApCi0JICB7Ci0JCSAgSVNlcnZlciBzZXJ2ZXIgPSBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXIoc2VydmVySW5zdGFuY2VJZCk7Ci0JCSAgSVJ1bnRpbWUgc1J1bnRpbWUgPSBzZXJ2ZXIuZ2V0UnVudGltZSgpOwotCQkgIGZhY2V0UnVudGltZSA9IEZhY2V0VXRpbC5nZXRSdW50aW1lKHNSdW50aW1lKTsgICAgICAKLQkgIH0KLQkgIGVsc2UKLQkgIHsKLQkJICBpZiAoc2VydmVyRmFjdG9yeUlkICE9IG51bGwgJiYgc2VydmVyRmFjdG9yeUlkLmxlbmd0aCgpID4gMCkKLQkJICB7Ci0JCQkgIC8vRmluZCBhIG5vbiBTdHViIHJ1bnRpbWUgdGhhdCBtYXRjaGVzIHRoaXMgc2VydmVyIHR5cGUKLQkJCSAgSVJ1bnRpbWUgc2VydmVyUnVudGltZSA9IFNlcnZlclV0aWxzLmdldE5vblN0dWJSdW50aW1lKHNlcnZlckZhY3RvcnlJZCk7Ci0JCQkgIGlmIChzZXJ2ZXJSdW50aW1lICE9IG51bGwpCi0JCQkgIHsKLQkJCQkgIGZhY2V0UnVudGltZSA9IEZhY2V0VXRpbC5nZXRSdW50aW1lKHNlcnZlclJ1bnRpbWUpOwotCQkJICB9Ci0JCQkgIGVsc2UKLQkJCSAgewotCQkJCSAgLy9BY2NlcHQgc3R1YiBydW50aW1lLgotCQkJCSAgSVNlcnZlclR5cGUgc3QgPSBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXJUeXBlKHNlcnZlckZhY3RvcnlJZCk7Ci0JCQkJICBTdHJpbmcgcnVudGltZVR5cGVJZCA9IHN0LmdldFJ1bnRpbWVUeXBlKCkuZ2V0SWQoKTsgICAKLQkJCQkgIC8vRmluZCB0aGUgZmFjZXQgcnVudGltZQotCQkJCSAgSVJ1bnRpbWVbXSBydW50aW1lcyA9IFNlcnZlckNvcmUuZ2V0UnVudGltZXMoKTsKLQkJCQkgIGZvciAoaW50IGk9MDsgaTxydW50aW1lcy5sZW5ndGg7IGkrKykKLQkJCQkgIHsKLQkJCQkJICBJUnVudGltZSBzUnVudGltZSA9IHJ1bnRpbWVzW2ldOwotCQkJCQkgIGlmIChzUnVudGltZS5nZXRSdW50aW1lVHlwZSgpLmdldElkKCkuZXF1YWxzKHJ1bnRpbWVUeXBlSWQpKQotCQkJCQkgIHsKLQkJCQkJCSAgZmFjZXRSdW50aW1lID0gRmFjZXRVdGlsLmdldFJ1bnRpbWUoc1J1bnRpbWUpOwotCQkJCQkgIH0KLQkJCQkgIH0gICAgICAgICAgICAgICAgCi0JCQkgIH0KLQkJICB9Ci0JICB9Ci0gIH0gIAotICAKLSAgcHVibGljIHZvaWQgc2V0UHJvamVjdE5hbWUoU3RyaW5nIHByb2plY3ROYW1lKQotICB7Ci0gICAgdGhpcy5wcm9qZWN0TmFtZSA9IHByb2plY3ROYW1lOwotICB9ICAKLSAgCi0gIHB1YmxpYyB2b2lkIHNldFRlbXBsYXRlSWQoU3RyaW5nIHRlbXBsYXRlSWQpCi0gIHsKLSAgICB0aGlzLnRlbXBsYXRlSWQgPSB0ZW1wbGF0ZUlkOwotICB9ICAgIAotCi0gIHB1YmxpYyB2b2lkIHNldFJlcXVpcmVkRmFjZXRWZXJzaW9ucyhSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHJlcXVpcmVkRmFjZXRWZXJzaW9ucykKLSAgewotICAgIHRoaXMucmVxdWlyZWRGYWNldFZlcnNpb25zID0gcmVxdWlyZWRGYWNldFZlcnNpb25zOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U2VydmVyRmFjdG9yeUlkKFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQpCi0gIHsKLSAgICB0aGlzLnNlcnZlckZhY3RvcnlJZCA9IHNlcnZlckZhY3RvcnlJZDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZlckluc3RhbmNlSWQoU3RyaW5nIHNlcnZlckluc3RhbmNlSWQpCi0gIHsKLSAgICB0aGlzLnNlcnZlckluc3RhbmNlSWQgPSBzZXJ2ZXJJbnN0YW5jZUlkOwotICB9Ci0gIHB1YmxpYyB2b2lkIHNldEVhclByb2plY3ROYW1lKFN0cmluZyBlYXJQcm9qZWN0KSB7Ci0JICB0aGlzLmVhclByb2plY3ROYW1lID0gZWFyUHJvamVjdDsKLSAgfQotICAKLQlwcml2YXRlIFJlcXVpcmVkRmFjZXRWZXJzaW9uW10gZ2V0UmVxdWlyZWRXZWJGYWNldHMoKSB7Ci0JCXJldHVybiBuZXcgUmVxdWlyZWRGYWNldFZlcnNpb25bXSB7IGdldFJlcXVpcmVkRmFjZXRWZXJzaW9uKAotCQkJCUlNb2R1bGVDb25zdGFudHMuSlNUX1dFQl9NT0RVTEUsCi0JCQkJSjJFRVV0aWxzLmdldFdlYkoyRUVWZXJzaW9uRnJvbUVBUkoyRUVWZXJzaW9uKFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChlYXJQcm9qZWN0TmFtZSkpKSB9OwotCX0KLQotCXByaXZhdGUgUmVxdWlyZWRGYWNldFZlcnNpb25bXSBnZXRSZXF1aXJlZEFwcENsaWVudEZhY2V0cygpIHsKLQkJcmV0dXJuIG5ldyBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHsgZ2V0UmVxdWlyZWRGYWNldFZlcnNpb24oCi0JCQkJSU1vZHVsZUNvbnN0YW50cy5KU1RfQVBQQ0xJRU5UX01PRFVMRSwKLQkJCQlKMkVFVXRpbHMuZ2V0QXBwQ2xpZW50SjJFRVZlcnNpb25Gcm9tRUFSSjJFRVZlcnNpb24oUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KGVhclByb2plY3ROYW1lKSkpIH07Ci0JfQotCi0JcHJpdmF0ZSBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIGdldFJlcXVpcmVkRUpCRmFjZXRzKCkgewotCQlyZXR1cm4gbmV3IFJlcXVpcmVkRmFjZXRWZXJzaW9uW10geyBnZXRSZXF1aXJlZEZhY2V0VmVyc2lvbigKLQkJCQlJTW9kdWxlQ29uc3RhbnRzLkpTVF9FSkJfTU9EVUxFLAotCQkJCUoyRUVVdGlscy5nZXRFSkJKMkVFVmVyc2lvbkZyb21FQVJKMkVFVmVyc2lvbihQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoZWFyUHJvamVjdE5hbWUpKSkgfTsKLQl9Ci0KLQlwcml2YXRlIGJvb2xlYW4gZG9lc0VBUlN1cHBvcnRGYWNldHMoU2V0IGNvbWJpbmF0aW9uKSB7Ci0JCXRyeSB7Ci0KLQkJCWlmIChlYXJQcm9qZWN0TmFtZSA9PSBudWxsIHx8IGVhclByb2plY3ROYW1lLmxlbmd0aCgpID09IDAKLQkJCQkJfHwgIVByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChlYXJQcm9qZWN0TmFtZSkuZXhpc3RzKCkpCi0JCQkJLy8gdGhlIGVhciBkb2VzIG5vdCBleGlzdCBvciB0aGUgcHJvamVjdCB0eXBlIHRlbXBsYXRlIGlzCi0JCQkJLy8gdW5kZWZpbmVkCi0JCQkJcmV0dXJuIHRydWU7Ci0JCQllbHNlIHsKLQkJCQlpZiAoY29tYmluYXRpb25Db250YWluc0ZhY2V0KGNvbWJpbmF0aW9uLCBJTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfTU9EVUxFKSkKLQkJCQkJcmV0dXJuIEZhY2V0VXRpbHMKLQkJCQkJCQkubWF0Y2goZ2V0UmVxdWlyZWRXZWJGYWNldHMoKSwgY29tYmluYXRpb24pCi0JCQkJCQkJLmlzTWF0Y2goKTsKLQkJCQllbHNlIGlmIChjb21iaW5hdGlvbkNvbnRhaW5zRmFjZXQoY29tYmluYXRpb24sIElNb2R1bGVDb25zdGFudHMuSlNUX0VKQl9NT0RVTEUpKQotCQkJCQlyZXR1cm4gRmFjZXRVdGlscwotCQkJCQkJCS5tYXRjaChnZXRSZXF1aXJlZEVKQkZhY2V0cygpLCBjb21iaW5hdGlvbikKLQkJCQkJCQkuaXNNYXRjaCgpOwotCQkJCWVsc2UgaWYgKGNvbWJpbmF0aW9uQ29udGFpbnNGYWNldChjb21iaW5hdGlvbiwgSU1vZHVsZUNvbnN0YW50cy5KU1RfQVBQQ0xJRU5UX01PRFVMRSkpCi0JCQkJCXJldHVybiBGYWNldFV0aWxzLm1hdGNoKGdldFJlcXVpcmVkQXBwQ2xpZW50RmFjZXRzKCksCi0JCQkJCQkJY29tYmluYXRpb24pLmlzTWF0Y2goKTsKLQkJCQllbHNlCi0JCQkJCXJldHVybiB0cnVlOwotCQkJfQotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQl9Ci0KLQlwcml2YXRlIGJvb2xlYW4gY29tYmluYXRpb25Db250YWluc0ZhY2V0KFNldCBjb21iaW5hdGlvbiwgU3RyaW5nIGZhY2V0TmFtZSkgewotCQlpZiAoY29tYmluYXRpb24gPT0gbnVsbCB8fCBmYWNldE5hbWUgPT0gbnVsbCB8fCBmYWNldE5hbWUubGVuZ3RoKCkgPT0gMCkKLQkJCXJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yIChJdGVyYXRvciBpdGVyID0gY29tYmluYXRpb24uaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7Ci0gICAgICAgIAlJUHJvamVjdEZhY2V0VmVyc2lvbiBuZXh0RmFjZXRWZXJzaW9uID0gKElQcm9qZWN0RmFjZXRWZXJzaW9uKSBpdGVyLm5leHQoKTsKLSAgICAgICAgCWlmIChmYWNldE5hbWUuZXF1YWxzKG5leHRGYWNldFZlcnNpb24uZ2V0UHJvamVjdEZhY2V0KCkuZ2V0SWQoKSkpCi0gICAgICAgIAkJCXJldHVybiB0cnVlOwotCQl9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQl9Ci0KLQlwcml2YXRlIFJlcXVpcmVkRmFjZXRWZXJzaW9uIGdldFJlcXVpcmVkRmFjZXRWZXJzaW9uKFN0cmluZyBmYWNldE5hbWUsCi0JCQlTdHJpbmcgZmFjZXRWZXJzaW9uKSB7Ci0JCUlQcm9qZWN0RmFjZXQgcHJvamVjdEZhY2V0ID0gUHJvamVjdEZhY2V0c01hbmFnZXIKLQkJCQkuZ2V0UHJvamVjdEZhY2V0KGZhY2V0TmFtZSk7Ci0JCUlQcm9qZWN0RmFjZXRWZXJzaW9uIHByb2pGYWNldFZlcnNpb24gPSBwcm9qZWN0RmFjZXQKLQkJCQkuZ2V0VmVyc2lvbihmYWNldFZlcnNpb24pOwotCQlSZXF1aXJlZEZhY2V0VmVyc2lvbiByZXFGYWNldFZlcnNpb24gPSBuZXcgUmVxdWlyZWRGYWNldFZlcnNpb24oKTsKLQkJcmVxRmFjZXRWZXJzaW9uLnNldEFsbG93TmV3ZXIoZmFsc2UpOwotCQlyZXFGYWNldFZlcnNpb24uc2V0UHJvamVjdEZhY2V0VmVyc2lvbihwcm9qRmFjZXRWZXJzaW9uKTsKLQkJcmV0dXJuIHJlcUZhY2V0VmVyc2lvbjsKLQl9Ci0KLQkgIHByaXZhdGUgU2V0IGdldEhpZ2hlc3RGYWNldFZlcnNpb25zRnJvbVRlbXBsYXRlQW5kU2VydmVyKCkKLQkgIHsKLQkgICAgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUgdGVtcGxhdGUgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRUZW1wbGF0ZSh0ZW1wbGF0ZUlkKTsKLQkgICAgU2V0IGZpeGVkRmFjZXRzID0gdGVtcGxhdGUuZ2V0Rml4ZWRQcm9qZWN0RmFjZXRzKCk7IAotCSAgICBIYXNoU2V0IGluaXRpYWwgPSBuZXcgSGFzaFNldCgpOyAKLQkgICAgZm9yIChJdGVyYXRvciBpdHIgPSBmaXhlZEZhY2V0cy5pdGVyYXRvcigpOyBpdHIuaGFzTmV4dCgpOyApIAotCSAgICB7IAotCSAgICAgIElQcm9qZWN0RmFjZXQgZmFjZXQgPSAoSVByb2plY3RGYWNldCkgaXRyLm5leHQoKTsgCi0JICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gaGlnaGVzdEZhY2V0VmVyc2lvbiA9IG51bGw7Ci0JICAgICAgdHJ5IHsKLQkgICAgCSAgaGlnaGVzdEZhY2V0VmVyc2lvbiA9IGZhY2V0LmdldExhdGVzdFN1cHBvcnRlZFZlcnNpb24oZmFjZXRSdW50aW1lKTsKLQkgICAgICB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLQkgICAgCSAgdHJ5IHsKLQkgICAgCQkgIGhpZ2hlc3RGYWNldFZlcnNpb24gPSBmYWNldC5nZXRMYXRlc3RWZXJzaW9uKCk7Ci0JICAgIAkgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZTIpIHsKLQkgICAgCQkgIC8vbm90IG11Y2ggd2UgY2FuIGRvIGhlcmUKLQkgICAgCSAgfQotCSAgICAJICAKLQkgICAgICB9Ci0JICAgICAgaW5pdGlhbC5hZGQoaGlnaGVzdEZhY2V0VmVyc2lvbik7IAotCSAgICB9ICAgICAgICAgICAgIAotCSAgICAKLQkgICAgcmV0dXJuIGluaXRpYWw7Ci0JICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0NyZWF0ZUphdmFQcm9qZWN0Q29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9DcmVhdGVKYXZhUHJvamVjdENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM5MDM0Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0NyZWF0ZUphdmFQcm9qZWN0Q29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0RGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNsYXNzcGF0aEVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklKYXZhUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5KYXZhQ29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkphdmFSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLQotCi1wdWJsaWMgY2xhc3MgQ3JlYXRlSmF2YVByb2plY3RDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBTdHJpbmcgcHJvamVjdE5hbWVfOwotCi0gIC8qKgotICAgKiBEZWZhdWx0IENUT1IKLSAgICovCi0gIHB1YmxpYyBDcmVhdGVKYXZhUHJvamVjdENvbW1hbmQoKQotICB7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotICAgIElQcm9qZWN0IHByb2plY3QgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWVfKTsKLSAgICAKLSAgICBpZiAocHJvamVjdCAhPSBudWxsICYmICFwcm9qZWN0LmV4aXN0cygpKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBwcm9qZWN0LmNyZWF0ZShSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkubmV3UHJvamVjdERlc2NyaXB0aW9uKHByb2plY3QuZ2V0TmFtZSgpKSwgbW9uaXRvcik7Ci0gICAgICAgIHByb2plY3Qub3Blbihtb25pdG9yKTsKLSAgICAgICAgSVByb2plY3REZXNjcmlwdGlvbiBkZXNjID0gcHJvamVjdC5nZXREZXNjcmlwdGlvbigpOwotICAgICAgICBkZXNjLnNldE5hdHVyZUlkcyhuZXcgU3RyaW5nW10ge0phdmFDb3JlLk5BVFVSRV9JRH0pOwotICAgICAgICBJQ29tbWFuZCBjbWQgPSBkZXNjLm5ld0NvbW1hbmQoKTsKLSAgICAgICAgY21kLnNldEJ1aWxkZXJOYW1lKEphdmFDb3JlLkJVSUxERVJfSUQpOwotICAgICAgICBkZXNjLnNldEJ1aWxkU3BlYyhuZXcgSUNvbW1hbmRbXSB7Y21kfSk7Ci0gICAgICAgIHByb2plY3Quc2V0RGVzY3JpcHRpb24oZGVzYywgbW9uaXRvcik7Ci0gICAgICAgIElKYXZhUHJvamVjdCBqYXZhUHJvamVjdCA9IEphdmFDb3JlLmNyZWF0ZShwcm9qZWN0KTsKLSAgICAgICAgUGF0aCBwcm9qZWN0Um9vdCA9IG5ldyBQYXRoKFBhdGguUk9PVC5hcHBlbmQobmV3IFBhdGgocHJvamVjdC5nZXROYW1lKCkpKS50b1N0cmluZygpKTsKLSAgICAgICAgamF2YVByb2plY3Quc2V0UmF3Q2xhc3NwYXRoKG5ldyBJQ2xhc3NwYXRoRW50cnlbXSB7SmF2YUNvcmUubmV3U291cmNlRW50cnkocHJvamVjdFJvb3QpLCBKYXZhQ29yZS5uZXdDb250YWluZXJFbnRyeShuZXcgUGF0aChKYXZhUnVudGltZS5KUkVfQ09OVEFJTkVSKSl9LCBtb25pdG9yKTsKLSAgICAgICAgamF2YVByb2plY3Quc2V0T3V0cHV0TG9jYXRpb24ocHJvamVjdFJvb3QsIG1vbml0b3IpOwotICAgICAgfQotICAgICAgY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0gICAgICB7Ci0gICAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0NBTk5PVF9DUkVBVEVfSkFWQV9QUk9KRUNULCBuZXcgU3RyaW5nW10ge3Byb2plY3ROYW1lX30pLCBjZSk7Ci0gICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFByb2plY3ROYW1lKFN0cmluZyBwcm9qZWN0TmFtZSkKLSAgewotICAgIHByb2plY3ROYW1lXyA9IHByb2plY3ROYW1lOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0NyZWF0ZU1vbml0b3JDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0NyZWF0ZU1vbml0b3JDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0Yjg4NmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9DcmVhdGVNb25pdG9yQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlclBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLmludGVybmFsLklNb25pdG9yZWRTZXJ2ZXJQb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5pbnRlcm5hbC5JU2VydmVyTW9uaXRvck1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLmludGVybmFsLlNlcnZlck1vbml0b3JNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgQ3JlYXRlTW9uaXRvckNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBXRUJfU0VSVklDRVMgPSAiV2ViIHNlcnZpY2VzIjsKLQotICBwcml2YXRlIEJvb2xlYW4gbW9uaXRvclNlcnZpY2U7Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgc2VydmljZVNlcnZlckluc3RhbmNlSWQ7Ci0KLSAgcHJpdmF0ZSBJbnRlZ2VyIG1vbml0b3JlZFBvcnQ7Ci0KLSAgcHVibGljIENyZWF0ZU1vbml0b3JDb21tYW5kKCkgewotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgICAKLSAgICBpZiAobW9uaXRvclNlcnZpY2UgIT0gbnVsbCAmJiBtb25pdG9yU2VydmljZS5ib29sZWFuVmFsdWUoKSkgewotICAgICAgSVNlcnZlciBzZXJ2ZXIgPSBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXIoc2VydmljZVNlcnZlckluc3RhbmNlSWQpOwotICAgICAgaWYgKHNlcnZlciAhPSBudWxsKSB7Ci0KLSAgICAgICAgLy8gSU1vbml0b3JhYmxlU2VydmVyIG1vbml0b3JhYmxlU2VydmVyID0gKElNb25pdG9yYWJsZVNlcnZlcikKLSAgICAgICAgLy8gc2VydmVyRGVsZWdhdGU7Ci0gICAgICAgIFNlcnZlclBvcnRbXSBwb3J0cyA9IHNlcnZlci5nZXRTZXJ2ZXJQb3J0cyhudWxsKTsKLSAgICAgICAgU2VydmVyUG9ydCBwb3J0ID0gbnVsbDsKLSAgICAgICAgZm9yIChpbnQgaXQgPSAwOyBpdCA8IHBvcnRzLmxlbmd0aDsgaXQrKykgewotICAgICAgICAgIFNlcnZlclBvcnQgcCA9IHBvcnRzW2l0XTsKLSAgICAgICAgICBTdHJpbmcgcHJvdG9jb2wgPSBwLmdldFByb3RvY29sKCk7Ci0gICAgICAgICAgaWYgKHByb3RvY29sICE9IG51bGwgJiYgcHJvdG9jb2wudHJpbSgpLnRvTG93ZXJDYXNlKCkuZXF1YWxzKCJodHRwIikpIHsKLSAgICAgICAgICAgIHBvcnQgPSBwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChwb3J0ICE9IG51bGwpIHsKLSAgICAgICAgICBJU2VydmVyTW9uaXRvck1hbmFnZXIgc2VydmVyTW9uaXRvck1hbmFnZXIgPSBTZXJ2ZXJNb25pdG9yTWFuYWdlci5nZXRJbnN0YW5jZSgpOwotICAgICAgICAgIElNb25pdG9yZWRTZXJ2ZXJQb3J0W10gbW9uaXRvcmVkUG9ydHMgPSBzZXJ2ZXJNb25pdG9yTWFuYWdlci5nZXRNb25pdG9yZWRQb3J0cyhzZXJ2ZXIpOwotICAgICAgICAgIGZvciAoaW50IGl0MiA9IDA7IGl0MiA8IG1vbml0b3JlZFBvcnRzLmxlbmd0aDsgaXQyKyspIHsKLSAgICAgICAgICAgIElNb25pdG9yZWRTZXJ2ZXJQb3J0IGltc1BvcnQgPSBtb25pdG9yZWRQb3J0c1tpdDJdOwotICAgICAgICAgICAgaWYgKHBvcnQuZ2V0UG9ydCgpID09IGltc1BvcnQuZ2V0U2VydmVyUG9ydCgpLmdldFBvcnQoKSAmJiBoYXNDb250ZW50V2ViU2VydmljZXMoaW1zUG9ydCkpIC8vIHBvcnQKLSAgICAgICAgICAgIC8vIGFscmVhZHkKLSAgICAgICAgICAgIC8vIGJlaW5nCi0gICAgICAgICAgICAvLyBtb25pdG9yZWQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKCFpbXNQb3J0LmlzU3RhcnRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgIHNlcnZlck1vbml0b3JNYW5hZ2VyLnN0YXJ0TW9uaXRvcihpbXNQb3J0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpIHsKLSAgICAgICAgICAgICAgICAgIElTdGF0dXMgZXJyb3IgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfVU5BQkxFX1RPX1NUQVJUX01PTklUT1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IFN0cmluZy52YWx1ZU9mKHBvcnQuZ2V0UG9ydCgpKSwgc2VydmVyLmdldE5hbWUoKX0pLCBjZSk7Ci0gICAgICAgICAgICAgICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgbW9uaXRvcmVkUG9ydCA9IG5ldyBJbnRlZ2VyKGltc1BvcnQuZ2V0TW9uaXRvclBvcnQoKSk7Ci0gICAgICAgICAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICB0cnkgewotICAgICAgICAgICAgSU1vbml0b3JlZFNlcnZlclBvcnQgaW1zUG9ydCA9IHNlcnZlck1vbml0b3JNYW5hZ2VyLmNyZWF0ZU1vbml0b3Ioc2VydmVyLCBwb3J0LCAtMSwgbmV3IFN0cmluZ1tdIHsgV0VCX1NFUlZJQ0VTfSk7Ci0gICAgICAgICAgICBzZXJ2ZXJNb25pdG9yTWFuYWdlci5zdGFydE1vbml0b3IoaW1zUG9ydCk7Ci0gICAgICAgICAgICBtb25pdG9yZWRQb3J0ID0gbmV3IEludGVnZXIoaW1zUG9ydC5nZXRNb25pdG9yUG9ydCgpKTsKLSAgICAgICAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkgewotICAgICAgICAgICAgSVN0YXR1cyBlcnJvciA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9VTkFCTEVfVE9fU1RBUlRfTU9OSVRPUiwgbmV3IE9iamVjdFtdIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnZhbHVlT2YocG9ydC5nZXRQb3J0KCkpLCBzZXJ2ZXIuZ2V0TmFtZSgpfSksIGNlKTsKLSAgICAgICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGVsc2UgewotICAgICAgICAgIElTdGF0dXMgaW5mbyA9IFN0YXR1c1V0aWxzLmluZm9TdGF0dXMoIE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0lORk9fTU9OSVRPUklOR19OT1RfU1VQUE9SVEVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IHNlcnZlci5nZXROYW1lKCl9KSApOwotICAgICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0SW5mbyhpbmZvKTsKLSAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBoYXNDb250ZW50V2ViU2VydmljZXMoSU1vbml0b3JlZFNlcnZlclBvcnQgaW1zUG9ydCkgewotICAgIFN0cmluZ1tdIGNvbnRlbnRzID0gaW1zUG9ydC5nZXRDb250ZW50VHlwZXMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbnRlbnRzLmxlbmd0aDsgaSsrKQotICAgICAgaWYgKFdFQl9TRVJWSUNFUy5lcXVhbHMoY29udGVudHNbaV0pKSByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoVHlwZVJ1bnRpbWVTZXJ2ZXIgdHlwZVJ1bnRpbWVTZXJ2ZXIpIHsKLSAgICB0aGlzLnNlcnZpY2VTZXJ2ZXJJbnN0YW5jZUlkID0gdHlwZVJ1bnRpbWVTZXJ2ZXIuZ2V0U2VydmVySW5zdGFuY2VJZCgpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVNlcnZlckluc3RhbmNlSWQoU3RyaW5nIHNlcnZpY2VTZXJ2ZXJJbnN0YW5jZUlkKSB7Ci0gICAgdGhpcy5zZXJ2aWNlU2VydmVySW5zdGFuY2VJZCA9IHNlcnZpY2VTZXJ2ZXJJbnN0YW5jZUlkOwotICB9Ci0KLSAgcHVibGljIEludGVnZXIgZ2V0TW9uaXRvcmVkUG9ydCgpIHsKLSAgICByZXR1cm4gbW9uaXRvcmVkUG9ydDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldE1vbml0b3JTZXJ2aWNlKEJvb2xlYW4gdmFsdWUpIHsKLSAgICBtb25pdG9yU2VydmljZSA9IHZhbHVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0NyZWF0ZVNlcnZlckNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQ3JlYXRlU2VydmVyQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDU4NzNjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vQ3JlYXRlU2VydmVyQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTEzMCAgIDIwMzgyNiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzEyMTAgICAyMDM4MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVJ1bnRpbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXJUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyV29ya2luZ0NvcHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlclV0aWw7Ci0KLXB1YmxpYyBjbGFzcyBDcmVhdGVTZXJ2ZXJDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLQlwcml2YXRlIFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQ7Ci0JcHJpdmF0ZSBTdHJpbmcgc2VydmVyUnVudGltZUlkOwotCXByaXZhdGUgU3RyaW5nIHNlcnZlckluc3RhbmNlSWQ7Ci0JCi0JLyoqCi0JICogQ3JlYXRlcyBhIHNlcnZlciBvZiB0aGUgZmFjdG9yeSBpZCB1c2luZyB0aGUgc2VydmVyIHJ1bnRpbWUgSWQgaWYgcHJvdmlkZWQKLQkgKiBOb3RlMTogQ2hlY2tpbmcgZm9yIHNlcnZlciBpbnN0YW5jZSA9PSBudWxsIGlzIGRvbmUgaW4gdGhlIFByZVNlcnZpY2UvQ2xpZW50SW5zdGFsbENvbW1hbmRzCi0JICogTm90ZTI6IFJlcG9ydGluZyBvZiBlcnJvcnMgaXMgZG9uZSBpbiBQcmVTZXJ2aWNlL0NsaWVudEluc3RhbGxDb21tYW5kczsgc2ltcGx5IHJldHVybiB0aGUgc3RhdHVzLgotCSAqLwotCXB1YmxpYyBDcmVhdGVTZXJ2ZXJDb21tYW5kKCl7Ci0JfQotCQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotICAgIAotCQlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JCQotCQlpZiAoc2VydmVyRmFjdG9yeUlkPT1udWxsKXsKLQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0NSRUFURV9TRVJWRVIgKTsKLQkJCXJldHVybiBzdGF0dXM7CQkJCi0JCX0KLQkJCi0JCUlTZXJ2ZXJXb3JraW5nQ29weSBzZXJ2ZXJXQyA9IG51bGw7Ci0JCUlTZXJ2ZXIgc2VydmVyID0gbnVsbDsKLQkJdHJ5IHsKLQkJCUlTZXJ2ZXJUeXBlIHNlcnZlclR5cGUgPSBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXJUeXBlKHNlcnZlckZhY3RvcnlJZCk7Ci0JCQlpZiAoc2VydmVyVHlwZSE9bnVsbCkgewotCQkJCQotCQkJCUlSdW50aW1lIHNlcnZlclJ1bnRpbWUgPSBudWxsOwotCQkJCWlmIChzZXJ2ZXJSdW50aW1lSWQgIT0gbnVsbCkgewotCQkJCQlzZXJ2ZXJSdW50aW1lID0gU2VydmVyQ29yZS5maW5kUnVudGltZShzZXJ2ZXJSdW50aW1lSWQpOyAgLy8gbWF5IHJldHVybiBudWxsIGlmIG5vIHJ1bnRpbWUgaXMgZm91bmQKLQkJCQl9Ci0JCQkJCi0JCQkJaWYgKHNlcnZlclJ1bnRpbWUgPT0gbnVsbCkgeyAvLyBlaXRoZXIgc2VydmVyUnVudGltZUlkIGlzIG51bGwgb3IgZGlkIG5vdCBmaW5kIGEgcnVudGltZSB3aXRoIHRoYXQgSWQKLQkJCQkJLy9DaG9vc2UgYSBSdW50aW1lIHdoaWNoIGlzIG5vdCBhIHN0dWIKLQkJCQkJSVJ1bnRpbWUgbm9uU3R1YlJ1bnRpbWUgPSBudWxsOwotCQkJCQlJUnVudGltZVtdIHJ1bnRpbWVzID0gU2VydmVyVXRpbC5nZXRSdW50aW1lcyhudWxsLCBudWxsKTsKLQkJCQkJU3RyaW5nIHNlcnZlclJ1bnRpbWVUeXBlSWQgPSBzZXJ2ZXJUeXBlLmdldFJ1bnRpbWVUeXBlKCkuZ2V0SWQoKTsKLQkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBydW50aW1lcy5sZW5ndGg7IGkrKykgewotCQkJCQkJSVJ1bnRpbWUgcnVudGltZSA9IHJ1bnRpbWVzW2ldOwotCQkJCQkJU3RyaW5nIHRoaXNSdW50aW1lVHlwZUlkID0gcnVudGltZS5nZXRSdW50aW1lVHlwZSgpLmdldElkKCk7Ci0JCQkJCQlpZiAodGhpc1J1bnRpbWVUeXBlSWQuZXF1YWxzKHNlcnZlclJ1bnRpbWVUeXBlSWQpICYmICFydW50aW1lLmlzU3R1YigpKSB7Ci0JCQkJCQkJLy9Gb3VuZCBhbiBhcHByb3ByaWF0ZSBJUnVudGltZSB0aGF0IGlzIG5vdCBhIHN0dWIKLQkJCQkJCQlub25TdHViUnVudGltZSA9IHJ1bnRpbWU7Ci0JCQkJCQkJYnJlYWs7Ci0JCQkJCQl9Ci0JCQkJCX0JCQkJCi0KLQkJCQkJaWYgKG5vblN0dWJSdW50aW1lPT1udWxsKQotCQkJCQl7CQkJCQkKLQkJCQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9TVFVCX09OTFksbmV3IFN0cmluZ1tde3NlcnZlckZhY3RvcnlJZH0pICk7Ci0JCQkJCQlyZXR1cm4gc3RhdHVzOwkJCQkJCi0JCQkJCX0KLQotCQkJCQlzZXJ2ZXJSdW50aW1lID0gbm9uU3R1YlJ1bnRpbWU7Ci0JCQkJfSAKLQkJCQkKLQkJCQlpZiAoZW52IT1udWxsKQotCQkJCXsKLQkJCQkJc2VydmVyV0MgPSBzZXJ2ZXJUeXBlLmNyZWF0ZVNlcnZlcihudWxsLCBudWxsLCBzZXJ2ZXJSdW50aW1lLCBtb25pdG9yICk7Ci0JCQkJfQotCQkJCWVsc2UKLQkJCQl7CQkJCQkKLQkJCQkJc2VydmVyV0MgPSBzZXJ2ZXJUeXBlLmNyZWF0ZVNlcnZlcihudWxsLCBudWxsLCBzZXJ2ZXJSdW50aW1lLCBudWxsKTsKLQkJCQl9Ci0JCQkJCi0JCQkJaWYgKHNlcnZlcldDICE9IG51bGwpIHsKLQkJCQkJaWYgKGVudiE9bnVsbCkKLQkJCQkJCXNlcnZlciA9IHNlcnZlcldDLnNhdmVBbGwodHJ1ZSwgbW9uaXRvciApOwotCQkJCQllbHNlCi0JCQkJCQlzZXJ2ZXIgPSBzZXJ2ZXJXQy5zYXZlQWxsKHRydWUsIG51bGwpOwotCQkJCX0KLQkJCX0KLQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkgewotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0NSRUFURV9TRVJWRVIsIGNlKTsKLQkJCXJldHVybiBzdGF0dXM7Ci0JCX0KLQkJCi0JCS8vIHNldCBzZXJ2ZXJJbnN0YW5jZUlkCi0JCWlmIChzZXJ2ZXIhPW51bGwpCi0JCQlzZXJ2ZXJJbnN0YW5jZUlkID0gc2VydmVyLmdldElkKCk7Ci0JCWVsc2UgewotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0NSRUFURV9TRVJWRVIgKTsJCQkKLQkJfQotCQkKLQkJcmV0dXJuIHN0YXR1czsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJGYWN0b3J5aWQoU3RyaW5nIHNlcnZlckZhY3RvcnlJZCkKLQl7Ci0JCXRoaXMuc2VydmVyRmFjdG9yeUlkID0gc2VydmVyRmFjdG9yeUlkOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFNlcnZlclJ1bnRpbWVJZChTdHJpbmcgc2VydmVyUnVudGltZUlkKQotCXsKLQkJdGhpcy5zZXJ2ZXJSdW50aW1lSWQgPSBzZXJ2ZXJSdW50aW1lSWQ7Ci0JfQotCQotCXB1YmxpYyBTdHJpbmcgZ2V0U2VydmVySW5zdGFuY2VJZCgpCi0JewotCQlyZXR1cm4gc2VydmVySW5zdGFuY2VJZDsKLQl9Ci0JCi0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0Rpc2FibGVCdWlsZENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vRGlzYWJsZUJ1aWxkQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTJjY2JmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vRGlzYWJsZUJ1aWxkQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uQ29uc3VtcHRpb25NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLnZhbGlkYXRlLlZhbGlkYXRpb25NYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5Qcm9ncmVzc1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLQotCi1wdWJsaWMgY2xhc3MgRGlzYWJsZUJ1aWxkQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIAotewotCi0gIHByaXZhdGUgVmFsaWRhdGlvbk1hbmFnZXIgbWFuYWdlcl87Ci0gIC8qKgotICAgKiBDVE9SOwotICAgKi8KLSAgcHVibGljIERpc2FibGVCdWlsZENvbW1hbmQoKQotICB7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBFeGVjdXRlIHRoZSBjb21tYW5kCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgeyAgICAKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0KLSAgICBQcm9ncmVzc1V0aWxzLnJlcG9ydCggbW9uaXRvciwgQ29uc3VtcHRpb25NZXNzYWdlcy5UQVNLX0RFU0NfV0VCU0VSVklDRV9ESVNBQkxFX0JVSUxEKTsKLQotICAgIGlmIChtYW5hZ2VyXyE9bnVsbCkgewotICAgICAgbWFuYWdlcl8uZGlzYWJsZUF1dG9CdWlsZCgpOwotICAgIH0KLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCB0aGUgbW9kZWwKLSAgICogCi0gICAqIEBwYXJhbSBtb2RlbAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TW9kZWwoTW9kZWwgbW9kZWwpIHsKLSAgfSAgCi0gIAotICAKLSAgLyoqCi0gICAqIEBwYXJhbSBtYW5hZ2VyXyBUaGUgbWFuYWdlcl8gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VmFsaWRhdGlvbk1hbmFnZXIoVmFsaWRhdGlvbk1hbmFnZXIgbWFuYWdlcikgewotICAgIHRoaXMubWFuYWdlcl8gPSBtYW5hZ2VyOwotICB9Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vRGlzYWJsZVZhbGlkYXRpb25Db21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0Rpc2FibGVWYWxpZGF0aW9uQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDVkZmNmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vRGlzYWJsZVZhbGlkYXRpb25Db21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwudmFsaWRhdGUuVmFsaWRhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlByb2dyZXNzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotCi1wdWJsaWMgY2xhc3MgRGlzYWJsZVZhbGlkYXRpb25Db21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0KLSAgcHJpdmF0ZSBWYWxpZGF0aW9uTWFuYWdlciBtYW5hZ2VyXzsKLSAgcHJpdmF0ZSBJUHJvamVjdCBzZXJ2aWNlUHJvamVjdF87Ci0KLSAgLyoqCi0gICAqIENUT1I7Ci0gICAqLwotICBwdWJsaWMgRGlzYWJsZVZhbGlkYXRpb25Db21tYW5kKCkgewotICB9Ci0KLSAgLyoqCi0gICAqIEV4ZWN1dGUgdGhlIGNvbW1hbmQKLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotCi0gICAgUHJvZ3Jlc3NVdGlscy5yZXBvcnQobW9uaXRvciwgQ29uc3VtcHRpb25NZXNzYWdlcy5UQVNLX0RFU0NfV0VCU0VSVklDRV9ESVNBQkxFX1ZBTElEQVRJT04pOwotCi0gICAgSVByb2plY3QgcHJvamVjdCA9IHNlcnZpY2VQcm9qZWN0XzsKLSAgICBpZiAocHJvamVjdCAhPSBudWxsKSBtYW5hZ2VyXy5kaXNhYmxlVmFsaWRhdGlvbkZvclByb2plY3QocHJvamVjdCk7Ci0KLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBtYW5hZ2VyXwotICAgKiAgICAgICAgICAgIFRoZSBtYW5hZ2VyXyB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRWYWxpZGF0aW9uTWFuYWdlcihWYWxpZGF0aW9uTWFuYWdlciBtYW5hZ2VyKSB7Ci0gICAgdGhpcy5tYW5hZ2VyXyA9IG1hbmFnZXI7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VQcm9qZWN0KElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0KXsKLSAgICB0aGlzLnNlcnZpY2VQcm9qZWN0XyA9IHNlcnZpY2VQcm9qZWN0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0phdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9KYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVlMjkzMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL0phdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbjsKLQotCi0vL2NvcmUgc3R1ZmYKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFIZWxwZXJzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFSZWZGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2gubmF0dXJlLkVNRk5hdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0ud29ya2JlbmNoLnV0aWxpdHkuSmVtUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLQotLyoqCi0qIFRoaXMgY2xhc3MgaXMgdG8gYmUgdXNlZCB0byBCdWlsZCB0aGUgZGF0YSBtb2RlbAotKiBmaXJzdCB3ZSBnZXQgdGhlIGphdmEgY2xhc3MgYW5kIHRoZW4gYnVpbGQgdGhlIG1vZGVsCi0qLwotcHVibGljIGNsYXNzIEphdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUwgPSAiSmF2YU1vZlJlZmxlY3Rpb25Db21tYW5kIjsgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIERFU0NSSVBUSU9OID0gInJlZmxlY3Rpb24gZm9yIGEgZ2l2ZW4gY2xhc3MiOyAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgT0tfTUVTU0FHRSA9ICAiVGhlIG1vZGVsIGhhcyBiZWVuIGJ1aWx0ICI7IAotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgSkFWQV9FWFRFTlNJT04gPSAiLmphdmEiOwotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgQ0xBU1NfRVhURU5TSU9OID0gIi5jbGFzcyI7Ci0gIAotICBwcml2YXRlIFN0cmluZyBjbGllbnRQcm9qZWN0OwotICBwcml2YXRlIEphdmFIZWxwZXJzIGphdmFDbGFzczsKLSAgcHJpdmF0ZSBTdHJpbmcgcW5hbWU7Ci0gIHByaXZhdGUgU3RyaW5nIHByb3h5QmVhbjsKLSAKLSAgLyoqCi0gICogQ29uc3RydWN0cyBhIG5ldyBKYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQgd2l0aCB0aGUgZ2l2ZW4gbGFiZWwgYW5kIGRlc2NyaXB0aW9uCi0gICogCi0gICovCi0gIHB1YmxpYyBKYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQoKQotICB7Ci0gIH0KLSAgCi0gIC8vIHNldHRlcnMgZm9yIHRoaXMgY29tbWFuZAotICAKLSAgICAKLSAgLyoqCi0gICogVGhlIGVuZCByZXN1bHQgb2YgdGhpcyB3aG9sZSBwcm9jZXNzIGlzIHRvIGdldCB0aGUgSmF2YSBDbGFzcwotICAqLwotICBwdWJsaWMgSmF2YUhlbHBlcnMgZ2V0SmF2YUNsYXNzKCkKLSAgewotICAgIHJldHVybiBqYXZhQ2xhc3M7Ci0gIH0KLQotICAKLSAgcHJpdmF0ZSB2b2lkIHByb2Nlc3NRTmFtZSgpCi0gIHsKLSAgICAgIHFuYW1lID0gcHJveHlCZWFuOwotCSAgaWYgKHFuYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoSkFWQV9FWFRFTlNJT04pKSB7Ci0JCSAgcW5hbWUgPSBxbmFtZS5zdWJzdHJpbmcoMCwocW5hbWUubGVuZ3RoKCkgLTUpKTsKLQkgIH0KLQkgIGlmIChxbmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKENMQVNTX0VYVEVOU0lPTikpIHsKLQkJICBxbmFtZSA9IHFuYW1lLnN1YnN0cmluZygwLChxbmFtZS5sZW5ndGgoKSAtNikpOwotCSAgfQotICAgfQotICAgICAgCi0gIC8qKgotICAqIEdldCB0aGUgamF2YSBtb2RlbCBmcm9tIHRoZSByZXNvdXJjZSB0aGVuIAotICAqIGJ1aWxkIHRoZSBtb2RlbCBmcm9tIHRoZSBtb2YKLSAgKi8KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsgICAgCi0gCSAgLy9qdXN0IG1ha2Ugc3VyZSB0aGUgcHJvamVjdCBhbmQgcW5hbWUgYXJlIHRoZXJlCi0gIAkvL3RoZXkgYXJlIGVzc2VudGlhbCBmb3IgdGhpcyBvcGVyYXRpb24KLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgCUlQcm9qZWN0IGNsaWVudElQcm9qZWN0ID0gKElQcm9qZWN0KVJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKGNsaWVudFByb2plY3QpOwotICAJcHJvY2Vzc1FOYW1lKCk7Ci0gIAlpZihjbGllbnRQcm9qZWN0ID09IG51bGwgfHwgcW5hbWUgPT0gbnVsbCkKLSAgCSAgcmV0dXJuIFN0YXR1c1V0aWxzLndhcm5pbmdTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX1dBUk5fVU5BQkxFX1RPX0ZJTkRfUFJPWFkgKTsKLSAgCQotICAgIHRyeSB7Ci0JCUVNRk5hdHVyZSBuYXR1cmUgPSBKZW1Qcm9qZWN0VXRpbGl0aWVzLmdldEpFTV9FTUZfTmF0dXJlKGNsaWVudElQcm9qZWN0LCB0cnVlKTsKLQkJamF2YUNsYXNzID0gSmF2YVJlZkZhY3RvcnkuZUlOU1RBTkNFLnJlZmxlY3RUeXBlKHFuYW1lLCBuYXR1cmUuZ2V0UmVzb3VyY2VTZXQoKSk7Ci0JfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JfQotICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFByb3h5QmVhbihTdHJpbmcgcHJveHlCZWFuKQotICB7Ci0gIAl0aGlzLnByb3h5QmVhbiA9IHByb3h5QmVhbjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFByb2plY3QoU3RyaW5nIGNsaWVudFByb2plY3QpCi0gIHsKLSAgCXRoaXMuY2xpZW50UHJvamVjdCA9IGNsaWVudFByb2plY3Q7Ci0gIH0KLSAgCi0gfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9NYW5hZ2VTZXJ2ZXJTdGFydFVwQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9NYW5hZ2VTZXJ2ZXJTdGFydFVwQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGVjZTFlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vTWFuYWdlU2VydmVyU3RhcnRVcENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5Qcm9ncmVzc1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci0KLXB1YmxpYyBjbGFzcyBNYW5hZ2VTZXJ2ZXJTdGFydFVwQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0KLQlwcml2YXRlIEJvb2xlYW4gaXNTdGFydFNlcnZpY2VFbmFibGVkXzsKLQlwcml2YXRlIEJvb2xlYW4gaXNUZXN0U2VydmljZUVuYWJsZWRfOwotCQotCXByaXZhdGUgSVByb2plY3Qgc2VydmljZVByb2plY3RfOwotCXByaXZhdGUgU3RyaW5nIHNlcnZpY2VTZXJ2ZXJUeXBlSWRfOwotCXByaXZhdGUgSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfOwotCQotCXByaXZhdGUgSVByb2plY3Qgc2FtcGxlUHJvamVjdF87Ci0JcHJpdmF0ZSBTdHJpbmcgc2FtcGxlU2VydmVyVHlwZUlkXzsKLQlwcml2YXRlIElTZXJ2ZXIgc2FtcGxlRXhpc3RpbmdTZXJ2ZXJfOwotCQotCXByaXZhdGUgYm9vbGVhbiBpc1dlYlByb2plY3RTdGFydHVwUmVxdWVzdGVkXzsKLQotCS8qKgotCSAqIERlZmF1bHQgQ1RPUjsKLQkgKi8KLQlwdWJsaWMgTWFuYWdlU2VydmVyU3RhcnRVcENvbW1hbmQoICkgewotCi0JfQotCQotCS8qKgotCSAqIEV4ZWN1dGUgdGhlIGNvbW1hbmQKLQkgKi8KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotCSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JICAgIFByb2dyZXNzVXRpbHMucmVwb3J0KG1vbml0b3IsIENvbnN1bXB0aW9uTWVzc2FnZXMuUFJPR1JFU1NfSU5GT19TVEFSVF9XRUJfUFJPSkVDVCk7Ci0JIAotCSAgICBpZiAoaXNTdGFydFNlcnZpY2VFbmFibGVkXy5ib29sZWFuVmFsdWUoKSAmJiBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfIT1udWxsKXsKLQkgICAgCS8vU3lzdGVtLm91dC5wcmludGxuKCJDYWxsaW5nIHNlcnZpY2Ugc2VydmVyIHN0YXJ0OiAiK3NlcnZpY2VQcm9qZWN0XysiICAiK3NlcnZpY2VTZXJ2ZXJUeXBlSWRfKTsKLQkgICAgCVN0YXJ0UHJvamVjdENvbW1hbmQgc3BjID0gbmV3IFN0YXJ0UHJvamVjdENvbW1hbmQoICk7Ci0JICAgIAlzcGMuc2V0U2VydmljZVByb2plY3Qoc2VydmljZVByb2plY3RfKTsKLQkgICAgCXNwYy5zZXRTZXJ2aWNlU2VydmVyVHlwZUlEKHNlcnZpY2VTZXJ2ZXJUeXBlSWRfKTsKLQkgICAgCXNwYy5zZXRTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIoc2VydmljZUV4aXN0aW5nU2VydmVyXyk7Ci0JICAgIAlzcGMuc2V0SXNXZWJQcm9qZWN0U3RhcnR1cFJlcXVlc3RlZChpc1dlYlByb2plY3RTdGFydHVwUmVxdWVzdGVkXyk7Ci0JICAgIAlzcGMuc2V0RW52aXJvbm1lbnQoIGVudiApOwotCSAgICAJc3BjLmV4ZWN1dGUoIG51bGwsIG51bGwgKTsKLQkgICAgfQotCSAgICAKLQkgICAgaWYoaXNUZXN0U2VydmljZUVuYWJsZWRfLmJvb2xlYW5WYWx1ZSgpJiYgc2FtcGxlRXhpc3RpbmdTZXJ2ZXJfIT1udWxsICYmIHNlcnZpY2VFeGlzdGluZ1NlcnZlcl8hPW51bGwgJiYgIXNhbXBsZUV4aXN0aW5nU2VydmVyXy5lcXVhbHMoc2VydmljZUV4aXN0aW5nU2VydmVyXykpewotCSAgICAJLy9TeXN0ZW0ub3V0LnByaW50bG4oIkNhbGxpbmcgY2xpZW50IHNlcnZlciBzdGFydDogIitzYW1wbGVQcm9qZWN0XysiICAiK3NhbXBsZUV4aXN0aW5nU2VydmVyX18pOwotCSAgICAJU3RhcnRQcm9qZWN0Q29tbWFuZCBzcGMgPSBuZXcgU3RhcnRQcm9qZWN0Q29tbWFuZCggKTsKLQkgICAgCXNwYy5zZXRTYW1wbGVQcm9qZWN0KHNhbXBsZVByb2plY3RfKTsKLQkgICAgCXNwYy5zZXRTYW1wbGVTZXJ2ZXJUeXBlSUQoc2FtcGxlU2VydmVyVHlwZUlkXyk7Ci0JICAgIAlzcGMuc2V0U2FtcGxlRXhpc3RpbmdTZXJ2ZXIoc2FtcGxlRXhpc3RpbmdTZXJ2ZXJfKTsKLQkgICAgCXNwYy5zZXRDcmVhdGlvblNjZW5hcmlvKG5ldyBCb29sZWFuKCJmYWxzZSIpKTsKLQkgICAgCXNwYy5zZXRFbnZpcm9ubWVudCggZW52ICk7Ci0JICAgIAlzcGMuZXhlY3V0ZSggbnVsbCwgbnVsbCApOwkgICAgCQotCSAgICB9Ci0JICAgIAotCSAgICByZXR1cm4gc3RhdHVzOwotCX0KLQkKLQkvKioKLQkgKiBAcGFyYW0gaXNTdGFydFNlcnZpY2VFbmFibGVkIFRoZSBpc1N0YXJ0U2VydmljZUVuYWJsZWQgdG8gc2V0LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldFN0YXJ0U2VydmljZShCb29sZWFuIGlzU3RhcnRTZXJ2aWNlRW5hYmxlZCkgewotCQl0aGlzLmlzU3RhcnRTZXJ2aWNlRW5hYmxlZF8gPSBpc1N0YXJ0U2VydmljZUVuYWJsZWQ7Ci0JfQotCS8qKgotCSAqIEBwYXJhbSBpc1Rlc3RTZXJ2aWNlRW5hYmxlZCBUaGUgaXNUZXN0U2VydmljZUVuYWJsZWQgdG8gc2V0LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldFRlc3RTZXJ2aWNlKEJvb2xlYW4gaXNUZXN0U2VydmljZUVuYWJsZWQpIHsKLQkJdGhpcy5pc1Rlc3RTZXJ2aWNlRW5hYmxlZF8gPSBpc1Rlc3RTZXJ2aWNlRW5hYmxlZDsKLQl9Ci0JLyoqCi0JICogQHBhcmFtIHNlcnZpY2VFeGlzdGluZ1NlcnZlciBUaGUgc2VydmljZUV4aXN0aW5nU2VydmVyIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIoSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIpIHsKLQkJdGhpcy5zZXJ2aWNlRXhpc3RpbmdTZXJ2ZXJfID0gc2VydmljZUV4aXN0aW5nU2VydmVyOwotCX0KLQotCS8qKgotCSAqIEBwYXJhbSBzZXJ2aWNlU2VydmVyVHlwZUlkIFRoZSBzZXJ2aWNlU2VydmVyVHlwZUlkIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlU2VydmVyVHlwZUlkKFN0cmluZyBzZXJ2aWNlU2VydmVyVHlwZUlkKSB7Ci0JCXRoaXMuc2VydmljZVNlcnZlclR5cGVJZF8gPSBzZXJ2aWNlU2VydmVyVHlwZUlkOwotCX0KLQkvKioKLQkgKiBAcGFyYW0gc2VydmljZVByb2plY3QgVGhlIHNlcnZpY2VQcm9qZWN0IHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlUHJvamVjdChJUHJvamVjdCBzZXJ2aWNlUHJvamVjdCkgewotCQl0aGlzLnNlcnZpY2VQcm9qZWN0XyA9IHNlcnZpY2VQcm9qZWN0OwotCX0KLQkKLQkvKioKLQkgKiBAcGFyYW0gc2FtcGxlRXhpc3RpbmdTZXJ2ZXIgVGhlIHNhbXBsZUV4aXN0aW5nU2VydmVyIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTYW1wbGVFeGlzdGluZ1NlcnZlcihJU2VydmVyIHNhbXBsZUV4aXN0aW5nU2VydmVyKSB7Ci0JCXRoaXMuc2FtcGxlRXhpc3RpbmdTZXJ2ZXJfID0gc2FtcGxlRXhpc3RpbmdTZXJ2ZXI7Ci0JfQotCS8qKgotCSAqIEBwYXJhbSBzYW1wbGVQcm9qZWN0IFRoZSBzYW1wbGVQcm9qZWN0IHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTYW1wbGVQcm9qZWN0KElQcm9qZWN0IHNhbXBsZVByb2plY3QpIHsKLQkJdGhpcy5zYW1wbGVQcm9qZWN0XyA9IHNhbXBsZVByb2plY3Q7Ci0JfQotCS8qKgotCSAqIEBwYXJhbSBzYW1wbGVTZXJ2ZXJUeXBlSWQgVGhlIHNhbXBsZVNlcnZlclR5cGVJZCB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0U2FtcGxlU2VydmVyVHlwZUlkKFN0cmluZyBzYW1wbGVTZXJ2ZXJUeXBlSWQpIHsKLQkJdGhpcy5zYW1wbGVTZXJ2ZXJUeXBlSWRfID0gc2FtcGxlU2VydmVyVHlwZUlkOwotCX0JCi0JCi0JLyoqCi0JICogQHBhcmFtIGlzUmVzdGFydFByb2plY3ROZWVkZWQgVGhlIGlzUmVzdGFydFByb2plY3ROZWVkZWQgdG8gc2V0LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldElzV2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWQoYm9vbGVhbiBpc1Jlc3RhcnRQcm9qZWN0TmVlZGVkKSB7Ci0JCXRoaXMuaXNXZWJQcm9qZWN0U3RhcnR1cFJlcXVlc3RlZF8gPSBpc1Jlc3RhcnRQcm9qZWN0TmVlZGVkOwotCX0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL1Jlc3RvcmVCdWlsZFN0YXRlQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9SZXN0b3JlQnVpbGRTdGF0ZUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmExNTIzOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL1Jlc3RvcmVCdWlsZFN0YXRlQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwudmFsaWRhdGUuVmFsaWRhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlByb2dyZXNzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotCi1wdWJsaWMgY2xhc3MgUmVzdG9yZUJ1aWxkU3RhdGVDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLQotICBwcml2YXRlIFZhbGlkYXRpb25NYW5hZ2VyIG1hbmFnZXJfOwotICAKLSAgLyoqCi0gICAqIERlZmF1bHQgQ1RPUjsKLSAgICovCi0gIHB1YmxpYyBSZXN0b3JlQnVpbGRTdGF0ZUNvbW1hbmQoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogRXhlY3V0ZSB0aGUgY29tbWFuZAotICAgKi8KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBQcm9ncmVzc1V0aWxzLnJlcG9ydCggbW9uaXRvciwgQ29uc3VtcHRpb25NZXNzYWdlcy5UQVNLX0RFU0NfV0VCU0VSVklDRV9SRVNUT1JFX0JVSUxEKTsKLQotICAgIG1hbmFnZXJfLnJlc3RvcmVBdXRvQnVpbGQoKTsKLQotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0gICAgCi0gIC8qKgotICAgKiBAcGFyYW0gbWFuYWdlcl8gVGhlIG1hbmFnZXJfIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFZhbGlkYXRpb25NYW5hZ2VyKFZhbGlkYXRpb25NYW5hZ2VyIG1hbmFnZXIpIHsKLSAgICB0aGlzLm1hbmFnZXJfID0gbWFuYWdlcjsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL1Jlc3RvcmVWYWxpZGF0aW9uU3RhdGVDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1hbmQvY29tbW9uL1Jlc3RvcmVWYWxpZGF0aW9uU3RhdGVDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3ZTk3ZjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9SZXN0b3JlVmFsaWRhdGlvblN0YXRlQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwudmFsaWRhdGUuVmFsaWRhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlByb2dyZXNzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotCi1wdWJsaWMgY2xhc3MgUmVzdG9yZVZhbGlkYXRpb25TdGF0ZUNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiAKLXsKLSAgcHJpdmF0ZSBWYWxpZGF0aW9uTWFuYWdlciBtYW5hZ2VyXzsKLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBydW5WYWxpZGF0aW9uXzsKLQotICAvKioKLSAgICogRGVmYXVsdCBDVE9SOwotICAgKi8KLSAgcHVibGljIFJlc3RvcmVWYWxpZGF0aW9uU3RhdGVDb21tYW5kKCBib29sZWFuIHJ1blZhbGlkYXRpb24gKQotICB7Ci0gICAgcnVuVmFsaWRhdGlvbl8gPSBydW5WYWxpZGF0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIEV4ZWN1dGUgdGhlIGNvbW1hbmQKLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgUHJvZ3Jlc3NVdGlscy5yZXBvcnQoIG1vbml0b3IsIENvbnN1bXB0aW9uTWVzc2FnZXMuVEFTS19ERVNDX1dFQlNFUlZJQ0VfUkVTVE9SRV9WQUxJREFUSU9OKTsKLQotICAgIG1hbmFnZXJfLnJlc3RvcmVWYWxpZGF0aW9uRm9yUHJvamVjdHMoIHJ1blZhbGlkYXRpb25fICk7ICAgIAotCi0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgICAKLSAgLyoqCi0gICAqIEBwYXJhbSBtYW5hZ2VyIFRoZSB2YWxpZGF0aW9uIG1hbmFnZXIgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VmFsaWRhdGlvbk1hbmFnZXIoVmFsaWRhdGlvbk1hbmFnZXIgbWFuYWdlcikgewotICAgIHRoaXMubWFuYWdlcl8gPSBtYW5hZ2VyOwotICB9Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbWFuZC9jb21tb24vU3RhcnRQcm9qZWN0Q29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9TdGFydFByb2plY3RDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NGEwZjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tYW5kL2NvbW1vbi9TdGFydFByb2plY3RDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlNlcnZlclV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uV2ViU2VydmljZVN0YXJ0U2VydmVyUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlByb2dyZXNzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci0KLXB1YmxpYyBjbGFzcyBTdGFydFByb2plY3RDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0KLXByaXZhdGUgQm9vbGVhbiBjcmVhdGlvblNjZW5hcmlvXyA9IEJvb2xlYW4uVFJVRTsKLQotcHJpdmF0ZSBib29sZWFuIGlzV2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWRfOwotcHJpdmF0ZSBJUHJvamVjdCBzZXJ2aWNlUHJvamVjdF87Ci1wcml2YXRlIElQcm9qZWN0IHNhbXBsZVByb2plY3RfOwotcHJpdmF0ZSBTdHJpbmcgc2VydmljZVNlcnZlclR5cGVJRF87Ci1wcml2YXRlIFN0cmluZyBzYW1wbGVTZXJ2ZXJUeXBlSURfOwotcHJpdmF0ZSBJU2VydmVyIHNlcnZpY2VFeGlzdGluZ1NlcnZlcl87Ci1wcml2YXRlIElTZXJ2ZXIgc2FtcGxlRXhpc3RpbmdTZXJ2ZXJfOwotCi0KLS8qKgotICogRGVmYXVsdCBDVE9SOwotICovCi1wdWJsaWMgU3RhcnRQcm9qZWN0Q29tbWFuZCggKSB7Ci0KLX0KLQotLyoqCi0gKiBEZWZhdWx0IENUT1I7Ci0gKi8KLXB1YmxpYyBTdGFydFByb2plY3RDb21tYW5kKGJvb2xlYW4gY3JlYXRpb25TY2VuYXJpbyApIHsKLQljcmVhdGlvblNjZW5hcmlvXyA9IG5ldyBCb29sZWFuKGNyZWF0aW9uU2NlbmFyaW8pOwotfQotCi0vKioKLSAqIEV4ZWN1dGUgdGhlIGNvbW1hbmQKLSAqLwotcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi17Ci0gICAgSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7ICAgIAotICAKLSAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgUHJvZ3Jlc3NVdGlscy5yZXBvcnQoIG1vbml0b3IsIENvbnN1bXB0aW9uTWVzc2FnZXMuUFJPR1JFU1NfSU5GT19TVEFSVF9XRUJfUFJPSkVDVCk7Ci0gICAgCi0gICAgCi0gICAgSVByb2plY3QgcHJvamVjdCA9ICgoY3JlYXRpb25TY2VuYXJpb18uYm9vbGVhblZhbHVlKCkpID8gc2VydmljZVByb2plY3RfIDogc2FtcGxlUHJvamVjdF8pOwotICAgIFN0cmluZyBzZXJ2ZXJUeXBlSUQgPSAoKGNyZWF0aW9uU2NlbmFyaW9fLmJvb2xlYW5WYWx1ZSgpKSA/IHNlcnZpY2VTZXJ2ZXJUeXBlSURfIDogc2FtcGxlU2VydmVyVHlwZUlEXyk7Ci0gICAgSVNlcnZlciBzZXJ2ZXIgPSAoKGNyZWF0aW9uU2NlbmFyaW9fLmJvb2xlYW5WYWx1ZSgpKSA/IHNlcnZpY2VFeGlzdGluZ1NlcnZlcl8gOiBzYW1wbGVFeGlzdGluZ1NlcnZlcl8pOyAgIAotICAgIGlmIChzZXJ2ZXJUeXBlSUQgPT0gbnVsbCAmJiBzZXJ2ZXIhPW51bGwpIHsKLSAgICAJc2VydmVyVHlwZUlEID0gc2VydmVyLmdldFNlcnZlclR5cGUoKS5nZXRJZCgpOwotICAgIH0KLSAgICBpZiAocHJvamVjdCA9PSBudWxsKQotICAgIHsKLSAgICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9QUk9KRUNUX05PVF9GT1VORCApOyAgCi0gICAgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0JCi0gICAgSVNlcnZlciBpbnN0YW5jZSA9IFNlcnZlclV0aWxzLmdldFNlcnZlckZvck1vZHVsZShTZXJ2ZXJVdGlscy5nZXRNb2R1bGUocHJvamVjdCksIHNlcnZlclR5cGVJRCwgc2VydmVyLCB0cnVlLCBtb25pdG9yICk7Ci0gICAgaWYgKGluc3RhbmNlID09IG51bGwpCi0gICAgewotICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0lOU1RBTkNFX05PVF9GT1VORCApOwotICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0KLSAgIHRyeQotICAgCXsKLSAgIAkJQWJzdHJhY3RTdGFydFNlcnZlciBzdGFydFNlcnZlckNvbW1hbmQgPSBudWxsOwotICAgCQlXZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJSZWdpc3RyeSByZWcgPSBXZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJSZWdpc3RyeS5nZXRJbnN0YW5jZSgpOwotICAgICAJc3RhcnRTZXJ2ZXJDb21tYW5kID0gKEFic3RyYWN0U3RhcnRTZXJ2ZXIpcmVnLmdldFNlcnZlclN0YXJ0QnlUeXBlSWQoaW5zdGFuY2UuZ2V0U2VydmVyVHlwZSgpLmdldElkKCkpOwotICAgIAlzdGFydFNlcnZlckNvbW1hbmQuU3RhcnRTZXJ2ZXIocHJvamVjdCwgaW5zdGFuY2UsIG1vbml0b3IsIGlzV2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWRfKTsKLSAgICAJcmV0dXJuIHN0YXR1czsKLSAgIAl9Ci0gIGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlICkKLSAgCXsKLSAgICAJSVN0YXR1cyBlbWJlZGRlZFN0YXR1cyA9IGNlLmdldFN0YXR1cygpOwotICAgIAlzdGF0dXMgPSBlbWJlZGRlZFN0YXR1czsKLSAgICAJZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAJCXJldHVybiBzdGF0dXM7Ci0gIAl9Ci0gICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAJewotICAgICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9TRVJWRVIsIGUpOwotICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgIAkgICByZXR1cm4gc3RhdHVzOwotICAgCX0KLSAgIAotfQotCi1wdWJsaWMgdm9pZCBzZXRDcmVhdGlvblNjZW5hcmlvKEJvb2xlYW4gY3JlYXRpb25TY2VuYXJpbykKLXsKLQljcmVhdGlvblNjZW5hcmlvXyA9IGNyZWF0aW9uU2NlbmFyaW87Ci19Ci0KLXB1YmxpYyB2b2lkIHNldFNlcnZpY2VQcm9qZWN0KElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0KQotewotICBzZXJ2aWNlUHJvamVjdF8gPSBzZXJ2aWNlUHJvamVjdDsKLX0KLQotcHVibGljIHZvaWQgc2V0U2FtcGxlUHJvamVjdChJUHJvamVjdCBzYW1wbGVQcm9qZWN0KQotewotICBzYW1wbGVQcm9qZWN0XyA9IHNhbXBsZVByb2plY3Q7Ci19Ci0KLXB1YmxpYyB2b2lkIHNldFNlcnZpY2VTZXJ2ZXJUeXBlSUQoU3RyaW5nIHNlcnZpY2VTZXJ2ZXJUeXBlSUQpCi17Ci0gIHNlcnZpY2VTZXJ2ZXJUeXBlSURfID0gc2VydmljZVNlcnZlclR5cGVJRDsKLX0KLQotcHVibGljIHZvaWQgc2V0U2FtcGxlU2VydmVyVHlwZUlEKFN0cmluZyBzYW1wbGVTZXJ2ZXJUeXBlSUQpCi17Ci0gIHNhbXBsZVNlcnZlclR5cGVJRF8gPSBzYW1wbGVTZXJ2ZXJUeXBlSUQ7Ci19Ci0KLXB1YmxpYyB2b2lkIHNldFNlcnZpY2VFeGlzdGluZ1NlcnZlcihJU2VydmVyIHNlcnZpY2VFeGlzdGluZ1NlcnZlcikKLXsKLSAgc2VydmljZUV4aXN0aW5nU2VydmVyXyA9IHNlcnZpY2VFeGlzdGluZ1NlcnZlcjsKLSAgaWYgKHNlcnZpY2VFeGlzdGluZ1NlcnZlcl8gIT0gbnVsbCkKLSAgICBzZXRTZXJ2aWNlU2VydmVyVHlwZUlEKHNlcnZpY2VFeGlzdGluZ1NlcnZlcl8uZ2V0U2VydmVyVHlwZSgpLmdldElkKCkpOwotfQotCi1wdWJsaWMgdm9pZCBzZXRTYW1wbGVFeGlzdGluZ1NlcnZlcihJU2VydmVyIHNhbXBsZUV4aXN0aW5nU2VydmVyKQotewotICBzYW1wbGVFeGlzdGluZ1NlcnZlcl8gPSBzYW1wbGVFeGlzdGluZ1NlcnZlcjsKLSAgaWYgKHNhbXBsZUV4aXN0aW5nU2VydmVyXyAhPSBudWxsKQotICAgIHNldFNhbXBsZVNlcnZlclR5cGVJRChzYW1wbGVFeGlzdGluZ1NlcnZlcl8uZ2V0U2VydmVyVHlwZSgpLmdldElkKCkpOwotfQotCi1wdWJsaWMgdm9pZCBzZXRJc1dlYlByb2plY3RTdGFydHVwUmVxdWVzdGVkKGJvb2xlYW4gd2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWQpCi17Ci0gIGlzV2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWRfID0gd2ViUHJvamVjdFN0YXJ0dXBSZXF1ZXN0ZWQ7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL0ZhY2V0TWF0Y2hlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vRmFjZXRNYXRjaGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZmQyZTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vRmFjZXRNYXRjaGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uOwotCi1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotcHVibGljIGNsYXNzIEZhY2V0TWF0Y2hlcgotewotICBwcml2YXRlIGJvb2xlYW4gbWF0Y2g7Ci0gIHByaXZhdGUgU2V0IGZhY2V0c1Rlc3RlZDsKLSAgcHJpdmF0ZSBTZXQgZmFjZXRzVGhhdE1hdGNoZWQ7Ci0gIHByaXZhdGUgU2V0IGZhY2V0c1RvQWRkOwotICAKLSAgcHVibGljIFNldCBnZXRGYWNldHNUaGF0TWF0Y2hlZCgpCi0gIHsKLSAgICByZXR1cm4gZmFjZXRzVGhhdE1hdGNoZWQ7Ci0gIH0KLSAgcHVibGljIHZvaWQgc2V0RmFjZXRzVGhhdE1hdGNoZWQoU2V0IGZhY2V0c1RoYXRNYXRjaGVkKQotICB7Ci0gICAgdGhpcy5mYWNldHNUaGF0TWF0Y2hlZCA9IGZhY2V0c1RoYXRNYXRjaGVkOwotICB9Ci0gIHB1YmxpYyBTZXQgZ2V0RmFjZXRzVG9BZGQoKQotICB7Ci0gICAgcmV0dXJuIGZhY2V0c1RvQWRkOwotICB9Ci0gIHB1YmxpYyB2b2lkIHNldEZhY2V0c1RvQWRkKFNldCBmYWNldHNUb0FkZCkKLSAgewotICAgIHRoaXMuZmFjZXRzVG9BZGQgPSBmYWNldHNUb0FkZDsKLSAgfQotICBwdWJsaWMgYm9vbGVhbiBpc01hdGNoKCkKLSAgewotICAgIHJldHVybiBtYXRjaDsKLSAgfQotICBwdWJsaWMgdm9pZCBzZXRNYXRjaChib29sZWFuIG1hdGNoKQotICB7Ci0gICAgdGhpcy5tYXRjaCA9IG1hdGNoOwotICB9Ci0gIHB1YmxpYyBTZXQgZ2V0RmFjZXRzVGVzdGVkKCkKLSAgewotICAgIHJldHVybiBmYWNldHNUZXN0ZWQ7Ci0gIH0KLSAgcHVibGljIHZvaWQgc2V0RmFjZXRzVGVzdGVkKFNldCBmYWNldHNUZXN0ZWQpCi0gIHsKLSAgICB0aGlzLmZhY2V0c1Rlc3RlZCA9IGZhY2V0c1Rlc3RlZDsKLSAgfQotICAKLSAgCi0KLSAgCi0gIAotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1vbi9GYWNldFNldHNCeVRlbXBsYXRlQ2FjaGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL0ZhY2V0U2V0c0J5VGVtcGxhdGVDYWNoZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDY1MzVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL0ZhY2V0U2V0c0J5VGVtcGxhdGVDYWNoZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDEzMSAxMjEwNzEgICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIgKGNyZWF0aW9uKQotICogMjAwNjA0MjcgICAxMjY3ODAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA3MDQwMiAxNTE5NDMgICBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSVByb2plY3RGYWNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JUHJvamVjdEZhY2V0VmVyc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5Qcm9qZWN0RmFjZXRzTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5WZXJzaW9uRm9ybWF0RXhjZXB0aW9uOwotCi0KLS8qKgotICogRmFjZXRTZXRzQnlUZW1wbGF0ZUNhY2hlIGNhY2hlcyB0aGUgc2V0cyBvZiBmYWNldCB2ZXJzaW9uIGNvbWJpbmF0aW9ucyBmb3IgdGVtcGxhdGVzLgotICovCi1wdWJsaWMgY2xhc3MgRmFjZXRTZXRzQnlUZW1wbGF0ZUNhY2hlCi17Ci0gIC8vIHNpbmdsZSBpbnN0YW5jZSBwZXIgd29ya2JlbmNoCi0gIHByaXZhdGUgc3RhdGljIEZhY2V0U2V0c0J5VGVtcGxhdGVDYWNoZSBpbnN0YW5jZV87Ci0gIAotICAvL2ZhY2V0U2V0c0J5VGVtcGxhdGVJZF86IAotICAvL2tleTogT2JqZWN0IG9mIHR5cGUgU3RyaW5nLiBTdHJpbmcgaWQgb2YgYW4gSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUuCi0gIC8vdmFsdWU6IE9iamVjdCBvZiBTZXRbXS4gQW4gYXJyYXkgb2YgU2V0cyB3aGVyZSBlYWNoIHNldCBjb250YWlucyBlbGVtZW50cyBvZiB0eXBlIElQcm9qZWN0RmFjZXRWZXJzaW9uLgotICBwcml2YXRlIEhhc2h0YWJsZSBmYWNldFNldHNCeVRlbXBsYXRlSWRfOwotICAvKioKLSAgICogUmV0dXJucyBhIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLgotICAgKiAKLSAgICogQHJldHVybiBBIHNpbmdsZXRvbiBGYWNldFNldHNCeVRlbXBsYXRlQ2FjaGUgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgRmFjZXRTZXRzQnlUZW1wbGF0ZUNhY2hlIGdldEluc3RhbmNlKCkKLSAgewotICAgIGlmIChpbnN0YW5jZV8gPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpbnN0YW5jZV8gPSBuZXcgRmFjZXRTZXRzQnlUZW1wbGF0ZUNhY2hlKCk7Ci0gICAgICBpbnN0YW5jZV8ubG9hZCgpOwotICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2VfOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgbG9hZCgpCi0gIHsKLSAgICBmYWNldFNldHNCeVRlbXBsYXRlSWRfID0gbmV3IEhhc2h0YWJsZSgpOwotICB9ICAKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIGFsbCB0aGUgdmFsaWQgZmFjZXQgdmVyc2lvbiBjb21iaW5hdGlvbnMgdGhhdCBjYW4gYmUgZGVyaXZlZCBmcm9tIHRoZSBmaXhlZCBmYWNldHMKLSAgICogb2YgdGhlIGdpdmVuIHRlbXBsYXRlLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHRlbXBsYXRlIGhhcyB0d28gZml4ZWQgZmFjZXRzLCBBIGFuZCBCLAotICAgKiBhbmQgQSBoYXMgdmVyc2lvbnMgMS4wIGFuZCAyLjAsIEIgaGFzIHZlcnNpb25zIDEuMSwgMi4xLAotICAgKiB0aGUgZm9sbG93aW5nIGFycmF5IG9mIFNldHMgd2lsbCBiZSByZXR1cm5lZCAoYXNzdW1pbmcgZm9yIHRoZSBzYWtlIG9mIHRoZSBleGFtcGxlCi0gICAqIHRoYXQgYWxsIHRoZSBjb21iaW5hdGlvbnMgYXJlIHZhbGlkKTo8YnIvPgotICAgKiB7U2V0MSwgU2V0MiwgU2V0MywgU2V0NH0sIHdoZXJlPGJyLz4KLSAgICogU2V0MSA9IFtBMS4wLCBCMS4xXTxici8+Ci0gICAqIFNldDIgPSBbQTIuMCwgQjEuMV08YnIvPgotICAgKiBTZXQzID0gW0ExLjAsIEIyLjFdPGJyLz4KLSAgICogU2V0NCA9IFtBMi4wLCBCMi4xXTxici8+Ci0gICAqIDxici8+Ci0gICAqIEBwYXJhbSB0ZW1wbGF0ZUlkIGlkIG9mIGFuIHtAbGluayBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZX0KLSAgICogQHJldHVybiBTZXRbXSBBbiBhcnJheSBvZiBTZXRzIHdoZXJlIGVhY2ggc2V0IGNvbnRhaW5zIGVsZW1lbnRzIG9mIHR5cGUge0BsaW5rIElQcm9qZWN0RmFjZXRWZXJzaW9ufS4KLSAgICovCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgU2V0W10gZ2V0RmFjZXRWZXJzaW9uQ29tYmluYXRpb25zRnJvbVRlbXBsYXRlKFN0cmluZyB0ZW1wbGF0ZUlkKQotICB7Ci0JLy9SZXR1cm4gdGhlIGNhY2hlZCBjb21iaW5hdGlvbnMgaWYgcHJlc2VudC4KLSAgICBTZXRbXSBjYWNoZWRDb21iaW5hdGlvbnMgPSAoU2V0W10pZmFjZXRTZXRzQnlUZW1wbGF0ZUlkXy5nZXQodGVtcGxhdGVJZCk7Ci0gICAgaWYgKGNhY2hlZENvbWJpbmF0aW9ucyAhPSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBjYWNoZWRDb21iaW5hdGlvbnM7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0KLSAgICAgIC8vQ29tYmluYXRpb25zIGhhdmUgbm90IHlldCBiZWVuIGNhY2hlZCBmb3IgdGhlIGdpdmVuIHRlbXBsYXRlLiAKLSAgICAgIC8vRGV0ZXJtaW5lIHRoZSBjb21iaW5hdGlvbnMgYW5kIGNhY2hlIHRoZW0uCi0gICAgICBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSB0ZW1wbGF0ZSA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFRlbXBsYXRlKHRlbXBsYXRlSWQpOwotICAgICAgU2V0IGZpeGVkRmFjZXRzID0gdGVtcGxhdGUuZ2V0Rml4ZWRQcm9qZWN0RmFjZXRzKCk7Ci0gICAgICAKLSAgICAgIC8vQ3JlYXRlIGFuIGFycmF5IG9mIGFycmF5cy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSB3aWxsIGNvbnRhaW4gdGhlIGFycmF5Ci0gICAgICAvL29mIElQcm9qZWN0RmFjZXRWZXJzaW9ucyBmb3IgZWFjaCBJUHJvamVjdEZhY2V0IGluIHRoZSBzZXQgb2YgZml4ZWQgZmFjZXRzLgotICAgICAgSXRlcmF0b3IgaXRyID0gZml4ZWRGYWNldHMuaXRlcmF0b3IoKTsKLSAgICAgIEFycmF5TGlzdCBwcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzID0gbmV3IEFycmF5TGlzdCgpOyAgICAgIAotCi0gICAgICB3aGlsZSAoaXRyLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgSVByb2plY3RGYWNldCBmYWNldCA9IChJUHJvamVjdEZhY2V0KSBpdHIubmV4dCgpOwotICAgICAgICBMaXN0IHZlcnNpb25zID0gbnVsbDsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAvLyBHZXQgdGhlIGZhY2V0IHZlcnNpb25zIGluIGFzY2VuZGluZyBvcmRlci4KLSAgICAgICAgICB2ZXJzaW9ucyA9IGZhY2V0LmdldFNvcnRlZFZlcnNpb25zKHRydWUpOwotICAgICAgICB9IGNhdGNoIChWZXJzaW9uRm9ybWF0RXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIFNldCB2ZXJzaW9uU2V0ID0gZmFjZXQuZ2V0VmVyc2lvbnMoKTsKLSAgICAgICAgICAgIEl0ZXJhdG9yIHZlcnNpb25TZXRJdHIgPSB2ZXJzaW9uU2V0Lml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICB2ZXJzaW9ucyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgICAgIHdoaWxlICh2ZXJzaW9uU2V0SXRyLmhhc05leHQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2ZXJzaW9ucy5hZGQoaXRyLm5leHQoKSk7Ci0gICAgICAgICAgICB9ICAgICAgICAgICAgCi0gICAgICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotICAgICAgICAgIFNldCB2ZXJzaW9uU2V0ID0gZmFjZXQuZ2V0VmVyc2lvbnMoKTsKLSAgICAgICAgICBJdGVyYXRvciB2ZXJzaW9uU2V0SXRyID0gdmVyc2lvblNldC5pdGVyYXRvcigpOwotICAgICAgICAgIHZlcnNpb25zID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgICAgIHdoaWxlICh2ZXJzaW9uU2V0SXRyLmhhc05leHQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHZlcnNpb25zLmFkZChpdHIubmV4dCgpKTsKLSAgICAgICAgICB9ICAgICAgICAgICAgCi0gICAgICAgIH0gICAgICAgICAKLSAgICAgICAgCi0gICAgICAgIGlmICh2ZXJzaW9ucy5zaXplKCkgPiAwKQotICAgICAgICB7Ci0gICAgICAgICAgLy9DcmVhdGUgYW4gYXJyYXkgb2YgSVByb2plY3RGYWNldFZlcnNpb25zIGZyb20gdmVyc2lvbnMuCi0gICAgICAgICAgSXRlcmF0b3IgdmVyc2lvbkl0ciA9IHZlcnNpb25zLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgQXJyYXlMaXN0IGFycmF5T2ZWZXJzaW9uc0xpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgICAgICAgd2hpbGUgKHZlcnNpb25JdHIuaGFzTmV4dCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIHBmdiA9IChJUHJvamVjdEZhY2V0VmVyc2lvbil2ZXJzaW9uSXRyLm5leHQoKTsKLSAgICAgICAgICAgIGFycmF5T2ZWZXJzaW9uc0xpc3QuYWRkKHBmdik7Ci0gICAgICAgICAgfSAgICAgICAgICAKLSAgICAgICAgICAKLSAgICAgICAgICAvL0FkZCB0aGUgYXJyYXkgb2YgdmVyc2lvbnMgdG8gdGhlIGxpc3Qgb2YgYXJyYXlzLgotICAgICAgICAgIHByb2plY3RGYWNldFZlcnNpb25BcnJheXMuYWRkKChJUHJvamVjdEZhY2V0VmVyc2lvbltdKWFycmF5T2ZWZXJzaW9uc0xpc3QudG9BcnJheShuZXcgSVByb2plY3RGYWNldFZlcnNpb25bMF0pKTsKLSAgICAgICAgICAKLQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBTZXRbXSBhbGxWYWxpZENvbWJpbmF0aW9uc0FycmF5ID0gbmV3IEhhc2hTZXRbMF07Ci0gICAgICBpZiAocHJvamVjdEZhY2V0VmVyc2lvbkFycmF5cy5zaXplKCk+MCkgewotICAgIAkgIElQcm9qZWN0RmFjZXRWZXJzaW9uW11bXSBhcnJheU9mUHJvamVjdEZhY2V0VmVyc2lvbkFycmF5cyA9IChJUHJvamVjdEZhY2V0VmVyc2lvbltdW10pcHJvamVjdEZhY2V0VmVyc2lvbkFycmF5cy50b0FycmF5KG5ldyBJUHJvamVjdEZhY2V0VmVyc2lvblswXVswXSk7Ci0gICAgCSAgYWxsVmFsaWRDb21iaW5hdGlvbnNBcnJheSA9IEZhY2V0VXRpbHMuZ2V0RmFjZXRDb21iaW5hdGlvbnMoYXJyYXlPZlByb2plY3RGYWNldFZlcnNpb25BcnJheXMsIHRydWUpOwotICAgIAkgIGZhY2V0U2V0c0J5VGVtcGxhdGVJZF8ucHV0KHRlbXBsYXRlSWQsIGFsbFZhbGlkQ29tYmluYXRpb25zQXJyYXkpOwotICAgICAgfQotICAgICAKLSAgICAgIHJldHVybiBhbGxWYWxpZENvbWJpbmF0aW9uc0FycmF5OwotICAgIH0gICAgCi0gIH0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vRmFjZXRVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vRmFjZXRVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTg5ODY4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL0ZhY2V0VXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0MDEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIElCTSBDb3Jwb3JhdGlvbi4gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIDIwMDcwNTIzICAgMTU4MjMwIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MTIxOSAgIDIxMzM1NiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAzMjUgICAyMjI0NzMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIENyZWF0ZSBFQVIgdmVyc2lvbiBiYXNlZCBvbiB0aGUgdmVyc2lvbiBvZiBtb2R1bGVzIHRvIGJlIGFkZGVkCi0gKiAyMDA4MDQyOSAgIDIxMzczMCB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZyBIYQotICogMjAwODA1MDcgICAyMjk1MzIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDkwMzAzICAgMjQyNjM1IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgUmVtb3ZlIHVubmVjZXNzYXJ5IFVJIGRlcGVuZGVuY2llcyBmcm9tIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbjsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb25Qb2ludDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklKYXZhUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5KYXZhQ29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuaW50ZXJuYWwuY29tbW9uLkoyRUVWZXJzaW9uVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5lamIucHJvamVjdC5vcGVyYXRpb25zLkVqYkZhY2V0SW5zdGFsbERhdGFNb2RlbFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLmVqYi5wcm9qZWN0Lm9wZXJhdGlvbnMuSUVqYkZhY2V0SW5zdGFsbERhdGFNb2RlbFByb3BlcnRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuaW50ZXJuYWwucGx1Z2luLklKMkVFTW9kdWxlQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLnByb2plY3QuSjJFRVByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUucHJvamVjdC5KYXZhRUVQcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLnByb2plY3QuZmFjZXQuQXBwQ2xpZW50RmFjZXRJbnN0YWxsRGF0YU1vZGVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUucHJvamVjdC5mYWNldC5JQXBwQ2xpZW50RmFjZXRJbnN0YWxsRGF0YU1vZGVsUHJvcGVydGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5wcm9qZWN0LmZhY2V0LklVdGlsaXR5RmFjZXRJbnN0YWxsRGF0YU1vZGVsUHJvcGVydGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5wcm9qZWN0LmZhY2V0LlV0aWxpdHlGYWNldEluc3RhbGxEYXRhTW9kZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWIucHJvamVjdC5mYWNldC5JV2ViRmFjZXRJbnN0YWxsRGF0YU1vZGVsUHJvcGVydGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWIucHJvamVjdC5mYWNldC5XZWJGYWNldEluc3RhbGxEYXRhTW9kZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLmludGVybmFsLnV0aWwuSU1vZHVsZUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkRhdGFNb2RlbEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5JRGF0YU1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklGYWNldGVkUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JRmFjZXRlZFByb2plY3RUZW1wbGF0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JUHJvamVjdEZhY2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklQcm9qZWN0RmFjZXRWZXJzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLlByb2plY3RGYWNldHNNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLlZlcnNpb25Gb3JtYXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSUZhY2V0ZWRQcm9qZWN0LkFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JRmFjZXRlZFByb2plY3QuQWN0aW9uLlR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUucnVudGltZS5JUnVudGltZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5ydW50aW1lLlJ1bnRpbWVNYW5hZ2VyOwotCi1pbXBvcnQgY29tLmlibS5pY3UudXRpbC5TdHJpbmdUb2tlbml6ZXI7Ci0KLS8qKgotICogRmFjZXRVdGlscyBjb250YWlucyB1dGlsaXR5IG1ldGhvZHMgcmVsYXRlZCB0byBmYWNldHMgYW5kIHRlbXBsYXRlcy4KLSAqIDxici8+PGJyLz4KLSAqIFRlcm1pbm9sb2d5IHVzZWQgaW4gdGhlIEphdmFkb2MgaW4gdGhpcyBjbGFzcwotICogPHVsPgotICogPGxpPjxiPmZhY2V0PC9iPjogQW4ge0BsaW5rIElQcm9qZWN0RmFjZXR9PC9saT4KLSAqIDxsaT48Yj5mYWNldCB2ZXJzaW9uPC9iPjogQW4ge0BsaW5rIElQcm9qZWN0RmFjZXRWZXJzaW9ufSA8L2xpPgotICogPGxpPjxiPmZhY2V0IHJ1bnRpbWU8L2I+OiBBbiB7QGxpbmsgSVJ1bnRpbWV9PC9saT4KLSAqIDxsaT48Yj5mYWNldGVkIHByb2plY3Q8L2I+OiBBbiB7QGxpbmsgSUZhY2V0ZWRQcm9qZWN0fS4gQSBmYWNldGVkIHByb2plY3QgbWF5IGJlIG9idGFpbmVkCi0gKiBmcm9tIGFuIElQcm9qZWN0IChAc2VlIFByb2plY3RGYWNldHNNYW5hZ2VyI2NyZWF0ZSk8L2xpPgotICogPGxpPjxiPnRlbXBsYXRlPC9iPjogQW4ge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfS4gQ29uY2VwdHVhbGx5IHRoaXMgaXMgc2ltaWxhciB0byBhIHByb2plY3QgdHlwZS48L2xpPgotICogPGxpPjxiPnJlcXVpcmVkIGZhY2V0IHZlcnNpb248L2I+OiBBIHtAbGluayBSZXF1aXJlZEZhY2V0VmVyc2lvbn0uIFVzZWQgYnkgc2VydmljZVJ1bnRpbWVzIGFuZCBjbGllbnRSdW50aW1lcwotICogdG8gaWRlbnRpZnkgd2hhdCB0aGV5IHJlcXVpcmUgaW4gdGVybXMgb2YgZmFjZXQgdmVyc2lvbnMuPC9saT4KLSAqIDwvdWw+Ci0gKi8KLXB1YmxpYyBjbGFzcyBGYWNldFV0aWxzCi17Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgSUZhY2V0T3BlcmF0aW9uRGVsZWdhdGUgZGVsZWdhdGU7IC8vaWYgYSBkZWxlZ2F0ZSBpcyBwbHVnZ2VkIGluLCBkZWxlZ2F0ZSBzb21lIG9wZXJhdGlvbnMgdG8gaXQKLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBmYWlsZWRUb0xvYWREZWxlZ2F0ZSA9IGZhbHNlOwotICAvKioKLSAgICogUmV0dXJucyBhbiBhcnJheSBvZiB2YWxpZCBwcm9qZWN0cy4gVmFsaWQgcHJvamVjdHMgaW5jbHVkZSBwcm9qZWN0cyB3aXRoIHRoZSBmYWNldHMgbmF0dXJlIG9yCi0gICAqIHByb2plY3RzIHdpdGggdGhlIEphdmEgbmF0dXJlLgotICAgKiBAcmV0dXJuIElQcm9qZWN0W10gYW4gYXJyYXkgb2YgdmFsaWQgcHJvamVjdHMKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgSVByb2plY3RbXSBnZXRBbGxQcm9qZWN0cygpCi0gIHsKLSAgICAvL1JldHVybiBhbGwgcHJvamVjdHMgaW4gdGhlIHdvcmtzcGFjZSB0aGF0IGhhdmUgdGhlIHByb2plY3QgZmFjZXQgbmF0dXJlIG9yIHRoYXQgZG8gbm90IGhhdmUgdGhlIHByb2plY3QKLSAgICAvL2ZhY2V0IG5hdHVyZSBidXQgaGF2ZSB0aGUgSmF2YSBuYXR1cmUuCi0gICAgSVByb2plY3RbXSBwcm9qZWN0cyA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdHMoKTsKLSAgICBBcnJheUxpc3QgdmFsaWRQcm9qZWN0cyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHByb2plY3RzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBJRmFjZXRlZFByb2plY3QgZmFjUHJvamVjdCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmNyZWF0ZShwcm9qZWN0c1tpXSk7Ci0gICAgICAgIGlmIChmYWNQcm9qZWN0ICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICAvL0FkZCBpdCB0byB0aGUgbGlzdAotICAgICAgICAgIHZhbGlkUHJvamVjdHMuYWRkKHByb2plY3RzW2ldKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgCWlmIChSZXNvdXJjZVV0aWxzLmlzSmF2YVByb2plY3QocHJvamVjdHNbaV0pKQotICAgICAgICAJewotICAgICAgICAgICAgICB2YWxpZFByb2plY3RzLmFkZChwcm9qZWN0c1tpXSk7Ci0gICAgICAgIAl9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKQotICAgICAgeyAgICAgICAgCi0gICAgICB9ICAgICAgCi0gICAgfQotICAgIHJldHVybiAoSVByb2plY3RbXSl2YWxpZFByb2plY3RzLnRvQXJyYXkobmV3IElQcm9qZWN0W117fSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBmYWNldCB2ZXJzaW9ucyBvbiB0aGUgZ2l2ZW4gcHJvamVjdC4KLSAgICogQHBhcmFtIHByb2plY3ROYW1lIG5hbWUgb2YgYW4gZXhpc3RpbmcgcHJvamVjdC4KLSAgICogQHJldHVybnMgU2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgSVByb2plY3RGYWNldFZlcnNpb259LiAKLSAgICogVGhlc2UgYXJlIHRoZSBmYWNldCB2ZXJzaW9ucyBjdXJyZW50bHkgaW5zdGFsbGVkIG9uIHRoaXMgcHJvamVjdC4gSWYgdGhlIHByb2plY3QKLSAgICogaXMgYSBKYXZhIHByb2plY3QsIGZhY2V0cyBhcmUgaW5mZXJyZWQgZnJvbSB0aGUgSmF2YSBwcm9qZWN0LiBSZXR1cm5zIG51bGwgCi0gICAqIDx1bD4KLSAgICogPGxpPmlmIHRoZSBwcm9qZWN0IGlzIG5vdCBhIGZhY2V0ZWQgcHJvamVjdCBvciBhIEphdmEgcHJvamVjdCBvcjwvbGk+Ci0gICAqIDxsaT5pZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdCBvcjwvbGk+Ci0gICAqIDxsaT5pZiB0aGUgcHJvamVjdCBpcyBudWxsPC9saT4KLSAgICogPC91bD4gIAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTZXQgZ2V0RmFjZXRzRm9yUHJvamVjdChTdHJpbmcgcHJvamVjdE5hbWUpCi0gIHsKLSAgICBTZXQgZmFjZXRWZXJzaW9ucyA9IG51bGw7Ci0gICAgSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChwcm9qZWN0TmFtZSk7Ci0gICAgaWYgKHByb2plY3QhPW51bGwgJiYgcHJvamVjdC5leGlzdHMoKSkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgSUZhY2V0ZWRQcm9qZWN0IGZwcm9qZWN0ID0gUHJvamVjdEZhY2V0c01hbmFnZXIuY3JlYXRlKHByb2plY3QpOwotICAgICAgICBpZiAoZnByb2plY3QgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGZhY2V0VmVyc2lvbnMgPSBmcHJvamVjdC5nZXRQcm9qZWN0RmFjZXRzKCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy9JZiB0aGlzIGlzIG5vdCBhIGZhY2V0ZWQgcHJvamVjdCwgaXQgbWF5IHN0aWxsIGJlIG9rYXkgaWYgaXQgaXMgYSBKYXZhIHByb2plY3QKLSAgICAgICAgICAvL2FuZCB0aGUgY2xpZW50IHJ1bnRpbWUgc3VwcG9ydHMgYSBKYXZhIHByb2plY3QuCi0gICAgICAgICAgSUphdmFQcm9qZWN0IGphdmFQcm9qZWN0ID0gbnVsbDsgICAgICAgICAgICAgIAotICAgICAgICAgIGlmIChSZXNvdXJjZVV0aWxzLmlzSmF2YVByb2plY3QocHJvamVjdCkpCi0gICAgICAgICAgewotICAgICAgICAJamF2YVByb2plY3QgPSBKYXZhQ29yZS5jcmVhdGUocHJvamVjdCk7Ci0gICAgICAgICAgICBmYWNldFZlcnNpb25zID0gRmFjZXRVdGlscy5nZXRGYWNldHNGb3JKYXZhUHJvamVjdChqYXZhUHJvamVjdCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKQotICAgICAgewotICAgIAkgIC8vTGVhdmluZyB0aGUgY2F0Y2ggYmxvY2sgZW1wdHkuIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlcmUKLSAgICAJICAvL3dlcmUgYW55IGJsb3ctdXBzIGluIHRoZSBmYWNldCBBUEkgYmVpbmcgY2FsbGVkLgotICAgICAgfSAgICAgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFjZXRWZXJzaW9uczsKLSAgICAKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBmYWNldCBydW50aW1lIHRoZSBnaXZlbiBwcm9qZWN0IGlzIGJvdW5kIHRvLgotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgbmFtZSBvZiBhbiBleGlzdGluZyBwcm9qZWN0Ci0gICAqIEByZXR1cm4ge0BsaW5rIElSdW50aW1lfSB0aGUgcHJvamVjdCBpcyBib3VuZCB0by4gUmV0dXJucyBudWxsCi0gICAqIDx1bD4KLSAgICogPGxpPmlmIHRoZSBwcm9qZWN0IGlzIG5vdCBib3VuZCB0byBhIGZhY2V0IHJ1bnRpbWU8L2xpPiAKLSAgICogPGxpPmlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0PC9saT4KLSAgICogPGxpPmlmIHRoZSBwcm9qZWN0IGlzIG51bGw8L2xpPgotICAgKiA8L3VsPgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBJUnVudGltZSBnZXRGYWNldFJ1bnRpbWVGb3JQcm9qZWN0KFN0cmluZyBwcm9qZWN0TmFtZSkKLSAgewotICAgIElQcm9qZWN0IHByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotICAgIGlmIChwcm9qZWN0IT1udWxsICYmIHByb2plY3QuZXhpc3RzKCkpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIElGYWNldGVkUHJvamVjdCBmcHJvamVjdCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmNyZWF0ZShwcm9qZWN0KTsKLSAgICAgICAgaWYgKGZwcm9qZWN0ICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZnByb2plY3QuZ2V0UHJpbWFyeVJ1bnRpbWUoKTsKLSAgICAgICAgfQotICAgICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkKLSAgICAgIHsKLSAgICAJICAvL0xlYXZpbmcgdGhlIGNhdGNoIGJsb2NrIGVtcHR5LiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBudWxsIGlmIHRoZXJlCi0gICAgCSAgLy93ZXJlIGFueSBibG93LXVwcyBpbiB0aGUgZmFjZXQgQVBJIGJlaW5nIGNhbGxlZC4KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG51bGw7ICAgIAotICB9Ci0gIAotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYSBzZXQgb2YgY29tYmluYXRpb25zIG9mIGZhY2V0IHZlcnNpb25zIGRlcml2ZWQgZnJvbSB0aGUgZmFjZXQgdmVyc2lvbnMKLSAgICogaW4gdGhlIHByb3ZpZGVkIGFycmF5T2ZQcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzLiBGb3IgZXhhbXBsZSwgaWYgCi0gICAqIGFycmF5T2ZQcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzIGlzIGEgdHdvIGRpbWVuc3Rpb25hbCBhcnJheSBvZiBmYWNldCB2ZXJzaW9ucyB0aGF0IGhhcwotICAgKiBhIHN0cnVjdHVyZSBsaWtlIHRoaXM6PGJyLz4KLSAgICoge3tGYWNldEFfdmVyc2lvbjEsIEZhY2V0QV92ZXJzaW9uMn0sPGJyLz4KLSAgICogIHtGYWNldEJfdmVyc2lvbjF9LDxici8+Ci0gICAqICB7RmFjZXRDX3ZlcnNpb24xLCBGYWNldENfdmVyc2lvbjJ9fTxici8+Ci0gICAqIHRoZSBmb2xsb3dpbmcgYXJyYXkgb2YgU2V0cyB3aWxsIGJlIHJldHVybmVkOjxici8+Ci0gICAqIHtTZXQxLCBTZXQyLCBTZXQzLCBTZXQ0fSwgd2hlcmU8YnIvPgotICAgKiBTZXQxID0gW0ZhY2V0QV92ZXJzaW9uMSwgRmFjZXRCX3ZlcnNpb24xLCBGYWNldENfdmVyc2lvbjFdPGJyLz4KLSAgICogU2V0MiA9IFtGYWNldEFfdmVyc2lvbjIsIEZhY2V0Ql92ZXJzaW9uMSwgRmFjZXRDX3ZlcnNpb24xXTxici8+Ci0gICAqIFNldDMgPSBbRmFjZXRBX3ZlcnNpb24xLCBGYWNldEJfdmVyc2lvbjEsIEZhY2V0Q192ZXJzaW9uMl08YnIvPgotICAgKiBTZXQ0ID0gW0ZhY2V0QV92ZXJzaW9uMiwgRmFjZXRCX3ZlcnNpb24xLCBGYWNldENfdmVyc2lvbjJdPGJyLz4KLSAgICogPGJyLz4KLSAgICogQHBhcmFtIGFycmF5T2ZQcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzIGEgdHdvIGRpbWVuc2lvbmFsIGFycmF5IGNvbnRhaW5pbmcgZWxlbWVudHMgCi0gICAqIG9mIHR5cGUge0BsaW5rIElQcm9qZWN0RmFjZXRWZXJzaW9ufQotICAgKiBAcGFyYW0gcmV0dXJuVmFsaWRPbmx5IGZhbHNlIGlmIGFsbCBjb21iaW5hdGlvbnMgb2YgZmFjZXQgdmVyc2lvbnMgYXJlIHRvIGJlIHJldHVybmVkLiAKLSAgICogdHJ1ZSBpZiBvbmx5IHZhbGlkIGNvbWJpbmF0aW9ucyBvZiBmYWNldCB2ZXJzaW9ucyBhcmUgdG8gYmUgcmV0dXJuZWQuICAKLSAgICogQHJldHVybiBTZXRbXSBhbiBhcnJheSBvZiBTZXRzLCB3aGVyZSBlYWNoIFNldCBjb250YWlucyBlbGVtZW50cyBvZiB0eXBlIHtAbGluayBJUHJvamVjdEZhY2V0VmVyc2lvbn0uIAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTZXRbXSBnZXRGYWNldENvbWJpbmF0aW9ucyhJUHJvamVjdEZhY2V0VmVyc2lvbltdW10gYXJyYXlPZlByb2plY3RGYWNldFZlcnNpb25BcnJheXMsIGJvb2xlYW4gcmV0dXJuVmFsaWRPbmx5KSAgCi0gIHsKLSAgICBBcnJheUxpc3QgYWxsQ29tYmluYXRpb25zID0gbmV3IEFycmF5TGlzdCgpOwotICAgIC8vbWF4Q291bnQgY29udGFpbnMgdGhlIG51bWJlciBvZiB2ZXJzaW9ucyBpbiBlYWNoIGFycmF5IG9mIElQcm9qZWN0RmFjZXRWZXJzaW9ucy4KLSAgICAvL2luaXRpYWxpemUgY291bnRlciwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIG5hdmlnYXRlIGFycmF5T2ZQcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzLgotICAgIGludCBuID0gYXJyYXlPZlByb2plY3RGYWNldFZlcnNpb25BcnJheXMubGVuZ3RoOwotICAgIGludFtdIG1heENvdW50ID0gbmV3IGludFtuXTsKLSAgICBpbnRbXSBjb3VudGVyID0gbmV3IGludFtuXTsKLSAgICBmb3IgKGludCBpPTA7IGk8bjsgaSsrKQotICAgIHsKLSAgICAgIG1heENvdW50W2ldID0gYXJyYXlPZlByb2plY3RGYWNldFZlcnNpb25BcnJheXNbaV0ubGVuZ3RoIC0gMTsKLSAgICAgIGNvdW50ZXJbaV0gPSAwOwotICAgIH0gICAgICAKLSAgICAKLSAgICAvL05hdmlnYXRlIGFycmF5T2ZQcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzIHRvIGNyZWF0ZSBhbGwgcG9zc2libGUgY29tYmluYXRpb25zLgotICAgIGJvb2xlYW4gZG9uZSA9IGZhbHNlOwotICAgIHdoaWxlICghZG9uZSkKLSAgICB7Ci0gICAgICAvL0NyZWF0ZSBhIGNvbWJpbmF0aW9uIG9mIHNpemUgbiB1c2luZyBjdXJyZW50IHZhbHVlcyBpbiBjb3VudGVyLgotICAgICAgLy9BZGQgaXQgdG8gdGhlIGxpc3Qgb2YgYWxsIGNvbWJpbmF0aW9ucywgY2hlY2tpbmcgZmlyc3QgZm9yIHZhbGlkaXR5IGlmIHJldHVyblZhbGlkT25seSBpcyB0cnVlLgotICAgICAgU2V0IGNvbWJpbmF0aW9uID0gbmV3IEhhc2hTZXQoKTsKLSAgICAgIGZvciAoaW50IGo9MDsgajxuOyBqKyspCi0gICAgICB7Ci0gICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIHBmdiA9IGFycmF5T2ZQcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzW2pdW2NvdW50ZXJbal1dOwotICAgICAgICBjb21iaW5hdGlvbi5hZGQocGZ2KTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgLy9DaGVjayBpZiB2YWxpZC4KLSAgICAgIGlmIChyZXR1cm5WYWxpZE9ubHkpCi0gICAgICB7Ci0gICAgICAgIFNldCBhY3Rpb25zID0gZ2V0SW5zdGFsbEFjdGlvbnMoY29tYmluYXRpb24pOwotCQl0cnkgewotCQkJaWYoIFByb2plY3RGYWNldHNNYW5hZ2VyLmNoZWNrKCBuZXcgSGFzaFNldCgpLCBhY3Rpb25zICkuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLk9LICkgICAgICAgIAotCSAgICAgICAgewotCSAgICAgICAgICBhbGxDb21iaW5hdGlvbnMuYWRkKChjb21iaW5hdGlvbikpOwotCSAgICAgICAgfQotCQl9IGNhdGNoIChUaHJvd2FibGUgZSkgewotCQkJLy8gRG8gbm90aGluZyBpZiBQcm9qZWN0RmFjZXRzTWFuYWdlci5jaGVjaygpIHRocm93cyBleGNlcHRpb24uCi0JCQkvLyBUT0RPIFRoaXMgdHJ5L2NhdGNoIHdpbGwgYmUgdW5uZWNjZXNhcnkgb25jZSBXVFAgYnVnIDEzNzU1MSBpcyBmaXhlZCBzbyB0aGF0IGFuIE9LIFN0YXR1cyAKLQkJCS8vIAkJd291bGQgbm90IGJlIHJldHVybmVkIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KLQkJfSAgICAgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGFsbENvbWJpbmF0aW9ucy5hZGQoKGNvbWJpbmF0aW9uKSk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIC8vVXBkYXRlIHRoZSBjb3VudGVycy4KLSAgICAgIGZvciAoaW50IHA9MDsgcDxuOyBwKyspCi0gICAgICB7Ci0gICAgICAgIGlmICggKGNvdW50ZXJbcF0gKyAxKSA8PSBtYXhDb3VudFtwXSkKLSAgICAgICAgewotICAgICAgICAgIChjb3VudGVyW3BdKSsrOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGNvdW50ZXJbcF0gPSAwOwotICAgICAgICAgIGlmIChwID09IG4tMSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgU2V0W10gYWxsQ29tYmluYXRpb25zQXJyYXkgPSAoU2V0W10pYWxsQ29tYmluYXRpb25zLnRvQXJyYXkobmV3IFNldFswXSk7ICAgIAotICAgIHJldHVybiBhbGxDb21iaW5hdGlvbnNBcnJheTsgICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgc2V0IG9mIGZhY2V0IHZlcnNpb25zIGdpdmVuIGEgdGVtcGxhdGUuIFRoZSBoaWdoZXN0IGZhY2V0IHZlcnNpb24gb2YgZXZlcnkgZml4ZWQgCi0gICAqIGZhY2V0IGluIHRoZSB0ZW1wbGF0ZSBpcyByZXR1cm5lZCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBqc3QuamF2YSBmYWNldCwgd2hlcmUgdGhlIDEuNCAKLSAgICogZmFjZXQgdmVyc2lvbiBpcyByZXR1cm5lZC4KLSAgICogCi0gICAqIEBwYXJhbSB0ZW1wbGF0ZUlkIGlkIG9mIGEge0BsaW5rIElGYWNldGVkUHJvamVjdFRlbXBsYXRlfQotICAgKiBAcmV0dXJuIFNldCBjb250YWluaW5nIGVsZW1lbnRzIG9mIHR5cGUge0BsaW5rIElQcm9qZWN0RmFjZXRWZXJzaW9ufQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTZXQgZ2V0SW5pdGlhbEZhY2V0VmVyc2lvbnNGcm9tVGVtcGxhdGUoU3RyaW5nIHRlbXBsYXRlSWQpCi0gIHsKLSAgICBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSB0ZW1wbGF0ZSA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFRlbXBsYXRlKHRlbXBsYXRlSWQpOwotICAgIFNldCBmaXhlZEZhY2V0cyA9IHRlbXBsYXRlLmdldEZpeGVkUHJvamVjdEZhY2V0cygpOyAKLSAgICBIYXNoU2V0IGluaXRpYWwgPSBuZXcgSGFzaFNldCgpOyAKLSAgICBmb3IgKEl0ZXJhdG9yIGl0cjIgPSBmaXhlZEZhY2V0cy5pdGVyYXRvcigpOyBpdHIyLmhhc05leHQoKTsgKSAKLSAgICB7IAotICAgICAgSVByb2plY3RGYWNldCBmYWNldCA9IChJUHJvamVjdEZhY2V0KSBpdHIyLm5leHQoKTsgCi0gICAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiBoaWdoZXN0RmFjZXRWZXJzaW9uID0gbnVsbDsKLSAgICAgIHRyeSB7Ci0gICAgCSAgaWYgKGlzSmF2YUZhY2V0KGZhY2V0KSkgLy9zcGVjaWFsIGNhc2UgdGhlIGphdmEgZmFjZXQgYmVjYXVzZSAxLjQgaXMgYSBiZXR0ZXIgZGVmYXVsdCB0aGFuIDUuMCBmb3Igbm93LgotICAgIAkgIHsKLSAgICAJCSAgaGlnaGVzdEZhY2V0VmVyc2lvbiA9IGZhY2V0LmdldFZlcnNpb24oIjEuNCIpOwotICAgIAkgIH0gZWxzZSB7Ci0gICAgCQkgIGhpZ2hlc3RGYWNldFZlcnNpb24gPSBmYWNldC5nZXRMYXRlc3RWZXJzaW9uKCk7Ci0gICAgCSAgfQotICAgICAgfSBjYXRjaCAoVmVyc2lvbkZvcm1hdEV4Y2VwdGlvbiBlKSB7Ci0gICAgICB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLSAgICAgIH0KLSAgICAgIGluaXRpYWwuYWRkKGhpZ2hlc3RGYWNldFZlcnNpb24pOyAKLSAgICB9ICAgICAgICAgICAgIAotICAgIAotICAgIHJldHVybiBpbml0aWFsOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyBhIHNldCBvZiBmYWNldCB2ZXJzaW9ucyBnaXZlbiBhIHRlbXBsYXRlLiBUaGUgZGVmYXVsdCBmYWNldCB2ZXJzaW9uIG9mIGV2ZXJ5IGZpeGVkIAotICAgKiBmYWNldCBpbiB0aGUgdGVtcGxhdGUgaXMgcmV0dXJuZWQuICBJZiB1bmFibGUgdG8gZ2V0IGRlZmF1bHQgdmVyc2lvbnMsIGFuIGVtcHR5IHNldCB3aWxsIGJlIHJldHVybmVkLgotICAgKiAKLSAgICogQHBhcmFtIHRlbXBsYXRlSWQgaWQgb2YgYSB7QGxpbmsgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGV9Ci0gICAqIEByZXR1cm4gU2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgSVByb2plY3RGYWNldFZlcnNpb259Ci0gICAqLwotICBwdWJsaWMgc3RhdGljIFNldCBnZXREZWZhdWx0RmFjZXRWZXJzaW9uc0Zyb21UZW1wbGF0ZShTdHJpbmcgdGVtcGxhdGVJZCkKLSAgewotCSAgSGFzaFNldCBkZWZhdWx0U2V0ID0gbmV3IEhhc2hTZXQoKTsgCi0JICB0cnkgewotCQkgIElGYWNldGVkUHJvamVjdFRlbXBsYXRlIHRlbXBsYXRlID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0VGVtcGxhdGUodGVtcGxhdGVJZCk7Ci0JCSAgU2V0IGZpeGVkRmFjZXRzID0gdGVtcGxhdGUuZ2V0Rml4ZWRQcm9qZWN0RmFjZXRzKCk7IAotCQkgIGZvciAoSXRlcmF0b3IgaXRyMiA9IGZpeGVkRmFjZXRzLml0ZXJhdG9yKCk7IGl0cjIuaGFzTmV4dCgpOyApIAotCQkgIHsgCi0JCQkgIElQcm9qZWN0RmFjZXQgZmFjZXQgPSAoSVByb2plY3RGYWNldCkgaXRyMi5uZXh0KCk7IAotCQkJICBJUHJvamVjdEZhY2V0VmVyc2lvbiBkZWZhdWx0RmFjZXRWZXJzaW9uID0gbnVsbDsKLQkJCSAgZGVmYXVsdEZhY2V0VmVyc2lvbiA9IGZhY2V0LmdldERlZmF1bHRWZXJzaW9uKCk7Ci0JCQkgIGRlZmF1bHRTZXQuYWRkKGRlZmF1bHRGYWNldFZlcnNpb24pOyAKLQkJICB9ICAgICAgICAgICAgIAotCQkgIHJldHVybiBkZWZhdWx0U2V0OwotCSAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKLQkJICByZXR1cm4gZGVmYXVsdFNldDsKLQkgIH0gY2F0Y2ggKFZlcnNpb25Gb3JtYXRFeGNlcHRpb24gZSkgewotCQkgIHJldHVybiBkZWZhdWx0U2V0OwotCSAgfSAKLQkgIAotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgbGFibGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3ZpZGVkIHRlbXBsYXRlSWRzLgotICAgKiBAcGFyYW0gdGVtcGxhdGVJZHMgYXJyYXkgb2YgdmFsaWQgdGVtcGxhdGUgaWRzLiBFYWNoIGlkIG11c3QgY29ycmVzcG9uZCB0byBhIHtAbGluayBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZX0uCi0gICAqIEByZXR1cm4gU3RyaW5nW10gYXJyYXkgb2YgdGVtcGxhdGUgbGFiZWxzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRUZW1wbGF0ZUxhYmVscyhTdHJpbmdbXSB0ZW1wbGF0ZUlkcykKLSAgewotICAgIFN0cmluZ1tdIGxhYmVscyA9IG5ldyBTdHJpbmdbdGVtcGxhdGVJZHMubGVuZ3RoXTsKLSAgICBmb3IgKGludCBpPTA7IGk8dGVtcGxhdGVJZHMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUgdGVtcGxhdGUgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRUZW1wbGF0ZSh0ZW1wbGF0ZUlkc1tpXSk7ICAgICAgCi0gICAgICBsYWJlbHNbaV0gPSB0ZW1wbGF0ZS5nZXRMYWJlbCgpOwotICAgIH0KLSAgICByZXR1cm4gbGFiZWxzOwotICAgIAotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWQgb2YgYSB0ZW1wbGF0ZSBnaXZlbiBpdHMgbGFiZWwuIAotICAgKiAKLSAgICogQHBhcmFtIHRlbXBsYXRlTGFiZWwgbGFiZWwgb2YgYSB0ZW1wbGF0ZQotICAgKiBAcmV0dXJuIHRlbXBsYXRlIGlkIG9yIGVtcHR5IFN0cmluZyBpZiBubyB7QGxpbmsgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGV9IHdpdGggdGhlCi0gICAqIGdpdmVuIHRlbXBsYXRlTGFiZWwgY291bGQgYmUgZm91bmQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRUZW1wbGF0ZUlkQnlMYWJlbChTdHJpbmcgdGVtcGxhdGVMYWJlbCkKLSAgewotICAgIGZvciggSXRlcmF0b3IgaXRyID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0VGVtcGxhdGVzKCkuaXRlcmF0b3IoKTsgaXRyLmhhc05leHQoKTsgKQotICAgIHsKLSAgICAgICAgZmluYWwgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUgdGVtcGxhdGUgPSAoSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGUpIGl0ci5uZXh0KCk7Ci0gICAgICAgIGlmICh0ZW1wbGF0ZS5nZXRMYWJlbCgpLmVxdWFscyh0ZW1wbGF0ZUxhYmVsKSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZS5nZXRJZCgpOwotCi0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuICIiOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgbGFiZWwgb2YgYSB0ZW1wbGF0ZSBnaXZlbiBpdHMgaWQgCi0gICAqIAotICAgKiBAcGFyYW0gdGVtcGxhdGVJZCBpZCBvZiBhIHtAbGluayBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZX0KLSAgICogQHJldHVybiB0ZW1wbGF0ZSBsYWJlbAotICAgKi8gIAotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRUZW1wbGF0ZUxhYmVsQnlJZChTdHJpbmcgdGVtcGxhdGVJZCkKLSAgewotICAgIElGYWNldGVkUHJvamVjdFRlbXBsYXRlIHRlbXBsYXRlID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0VGVtcGxhdGUodGVtcGxhdGVJZCk7Ci0gICAgcmV0dXJuIHRlbXBsYXRlLmdldExhYmVsKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgc2V0IG9mIGluc3RhbGwgYWN0aW9ucyBmb3IgdGhlIHByb3ZpZGVkIGZhY2V0IHZlcnNpb24KLSAgICogCi0gICAqIEBwYXJhbSBwcm9qZWN0RmFjZXRWZXJzaW9ucyBTZXQgY29udGFpbmluZyBlbGVtZW50cyBvZiB0eXBlIHtAbGluayBJUHJvamVjdEZhY2V0VmVyc2lvbn0KLSAgICogQHJldHVybiBTZXQgY29udGFpbmluZyBlbGVtZW50cyBvZiB0eXBlIHtAbGluayBBY3Rpb259IHdpdGggdGhlIHR5cGUgYXR0cmlidXRlIHNldCB0byBUeXBlLklOU1RBTEwKLSAgICogVGhlIHNldCBjb250YWlucyBvbmUgQWN0aW9uIGZvciBlYWNoIHtAbGluayBJUHJvamVjdEZhY2V0VmVyc2lvbn0gaW4gcHJvamVjdEZhY2V0VmVyc2lvbnMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFNldCBnZXRJbnN0YWxsQWN0aW9ucyhTZXQgcHJvamVjdEZhY2V0VmVyc2lvbnMpCi0gIHsKLSAgICBIYXNoU2V0IGFjdGlvbnMgPSBuZXcgSGFzaFNldCgpOwotICAgIAotICAgIEl0ZXJhdG9yIGZhY2V0cyA9IHByb2plY3RGYWNldFZlcnNpb25zLml0ZXJhdG9yKCk7Ci0gICAgCi0gICAgd2hpbGUoZmFjZXRzLmhhc05leHQoKSkKLSAgICB7Ci0gICAgCUlQcm9qZWN0RmFjZXRWZXJzaW9uIGZ2ID0gKElQcm9qZWN0RmFjZXRWZXJzaW9uKWZhY2V0cy5uZXh0KCk7Ci0gICAgCWlmIChmdiAhPSBudWxsKSB7Ci0gICAgCQlJUHJvamVjdEZhY2V0IHBmID0gZnYuZ2V0UHJvamVjdEZhY2V0KCk7Ci0gICAgCQlBY3Rpb24gYWN0aW9uID0gbmV3IEFjdGlvbihUeXBlLklOU1RBTEwsIGZ2LCBnZXRDb25maWdPYmplY3QocGYpKTsKLSAgICAJCWFjdGlvbnMuYWRkKGFjdGlvbik7Ci0gICAgCX0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGFjdGlvbnM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBkYXRhIG1vZGVsIGNvbmZpZyBvYmplY3QgZm9yIHRoZSBnaXZlbiBwcm9qZWN0IGZhY2V0Ci0gICAqIEZvciBKMkVFIGZhY2V0cywgc2V0IEFkZF9UT19FQVIgcHJvcGVydGllcyBvZiB0aGUgZGF0YSBtb2RlbCB0byBmYWxzZSwgCi0gICAqIGZvciBvdGhlciBmYWNldHMsIGp1c3QgcmV0dXJuIG51bGwKLSAgICogQHBhcmFtIGZhY2V0SUQKLSAgICogQHJldHVybiBkYXRhIG1vZGVsIGNvbmZpZyBvYmplY3QKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgT2JqZWN0IGdldENvbmZpZ09iamVjdChJUHJvamVjdEZhY2V0IHByb2plY3RGYWNldCkKLSAgewotCSAgCi0JICBJRGF0YU1vZGVsIGRtID0gbnVsbDsKLQkgIGlmIChwcm9qZWN0RmFjZXQgIT0gbnVsbCkgewotCQkgIFN0cmluZyBmYWNldElkID0gcHJvamVjdEZhY2V0LmdldElkKCk7Ci0JCSAgaWYgKGZhY2V0SWQgIT0gbnVsbCkgewotCQkJICAvLyBzZXQgQWRkIHRvIEVBUiB0byBmYWxzZQotCQkJICBpZiAoZmFjZXRJZC5lcXVhbHMoSU1vZHVsZUNvbnN0YW50cy5KU1RfV0VCX01PRFVMRSkpIHsgCi0JCQkJICBkbSA9IERhdGFNb2RlbEZhY3RvcnkuY3JlYXRlRGF0YU1vZGVsKG5ldyBXZWJGYWNldEluc3RhbGxEYXRhTW9kZWxQcm92aWRlcigpKTsKLQkJCQkgIGRtLnNldEJvb2xlYW5Qcm9wZXJ0eShJV2ViRmFjZXRJbnN0YWxsRGF0YU1vZGVsUHJvcGVydGllcy5BRERfVE9fRUFSLCBmYWxzZSk7Ci0JCQkgIH0gZWxzZSBpZiAoZmFjZXRJZC5lcXVhbHMoSU1vZHVsZUNvbnN0YW50cy5KU1RfRUpCX01PRFVMRSkpIHsKLQkJCQkgIGRtID0gRGF0YU1vZGVsRmFjdG9yeS5jcmVhdGVEYXRhTW9kZWwobmV3IEVqYkZhY2V0SW5zdGFsbERhdGFNb2RlbFByb3ZpZGVyKCkpOwotCQkJCSAgZG0uc2V0Qm9vbGVhblByb3BlcnR5KElFamJGYWNldEluc3RhbGxEYXRhTW9kZWxQcm9wZXJ0aWVzLkFERF9UT19FQVIsIGZhbHNlKTsKLQkJCSAgfSBlbHNlIGlmIChmYWNldElkLmVxdWFscyhJTW9kdWxlQ29uc3RhbnRzLkpTVF9BUFBDTElFTlRfTU9EVUxFKSkgewotCQkJCSAgZG0gPSBEYXRhTW9kZWxGYWN0b3J5LmNyZWF0ZURhdGFNb2RlbChuZXcgQXBwQ2xpZW50RmFjZXRJbnN0YWxsRGF0YU1vZGVsUHJvdmlkZXIoKSk7Ci0JCQkJICBkbS5zZXRCb29sZWFuUHJvcGVydHkoSUFwcENsaWVudEZhY2V0SW5zdGFsbERhdGFNb2RlbFByb3BlcnRpZXMuQUREX1RPX0VBUiwgZmFsc2UpOwotCQkJICB9IGVsc2UgaWYgKGZhY2V0SWQuZXF1YWxzKElNb2R1bGVDb25zdGFudHMuSlNUX1VUSUxJVFlfTU9EVUxFKSkgewotCQkJCSAgZG0gPSBEYXRhTW9kZWxGYWN0b3J5LmNyZWF0ZURhdGFNb2RlbChuZXcgVXRpbGl0eUZhY2V0SW5zdGFsbERhdGFNb2RlbFByb3ZpZGVyKCkpOwotCQkJCSAgZG0uc2V0Qm9vbGVhblByb3BlcnR5KElVdGlsaXR5RmFjZXRJbnN0YWxsRGF0YU1vZGVsUHJvcGVydGllcy5BRERfVE9fRUFSLCBmYWxzZSk7Ci0JCQkgIH0KLQkJICB9Ci0JICB9Ci0JICByZXR1cm4gZG07Ci0gIH0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHtAbGluayBGYWNldE1hdGNoZXJ9IGNhbGN1bGF0ZWQgd2hlbiBjaGVja2luZyB0aGUgcmVxdWlyZWQgZmFjZXQgdmVyc2lvbnMgCi0gICAqIGFnYWluc3QgdGhlIGZhY2V0IHZlcnNpb25zLgotICAgKiAKLSAgICogQHBhcmFtIHJlcXVpcmVkRmFjZXRWZXJzaW9ucyBhcnJheSBvZiByZXF1aXJlZCBmYWNldCB2ZXJzaW9ucwotICAgKiBAcGFyYW0gcHJvamVjdEZhY2V0VmVyc2lvbnMgZmFjZXQgdmVyc2lvbnMgdG8gY2hlY2sgYWdhaW5zdC4gU2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSAKLSAgICoge0BsaW5rIElQcm9qZWN0RmFjZXRWZXJzaW9ufQotICAgKiBAcmV0dXJuIEZhY2V0TWF0Y2hlciB3aXRoIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyaXN0aWNzOgotICAgKiA8dWw+Ci0gICAqIDxsaT48Yj5pc01hdGNoPC9iPjogcmV0dXJucyB0cnVlIGlmIHRoZSByZXF1aXJlZCBmYWNldCB2ZXJzaW9ucyBhbHJlYWR5IGV4aXN0IGluIHRoZSBmYWNldCB2ZXJzaW9ucwotICAgKiBvciBjYW4gYmUgYWRkZWQgdG8gdGhlIGZhY2V0IHZlcnNpb25zLiBpc01hdGNoIHdpbGwgcmV0dXJuIGZhbHNlIG90aGVyd2lzZS48L2xpPgotICAgKiA8bGk+PGI+Z2V0RmFjZXRzVGVzdGVkPC9iPjogcmV0dXJucyB0aGUgc2FtZSBzZXQgb2YgZmFjZXQgdmVyc2lvbnMgYXMgdGhlIGlucHV0IHBhcmFtZXRlciwgcHJvamVjdEZhY2V0VmVyc2lvbnM8L2xpPgotICAgKiA8bGk+PGI+Z2V0RmFjZXRzVGhhdE1hdGNoZWQ8L2I+OiBpZiBpc01hdGNoIHJldHVybnMgZmFsc2UsIGdldEZhY2V0c1RoYXRNYXRjaGVkIHJldHVybnMgbnVsbC4gSWYgaXNNYXRjaCByZXR1cm5zIHRydWUsIAotICAgKiBnZXRGYWNldHNUaGF0TWF0Y2hlZCByZXR1cm5zIHRoZSBzdWJzZXQgb2YgZmFjZXQgdmVyc2lvbnMgaW4gdGhlIGlucHV0IHBhcmFtZXRlciwgcHJvamVjdEZhY2V0VmVyc2lvbnMsIAotICAgKiB0aGF0IG1hdGNoZWQgb25lIG9mIHRoZSByZXF1aXJlZCBmYWNldCB2ZXJzaW9ucy4gVGhpcyBtYXkgYmUgYW4gZW1wdHkgc2V0LjwvbGk+Ci0gICAqIDxsaT48Yj5nZXRGYWNldHNUb0FkZDwvYj46IGlmIGlzTWF0Y2ggcmV0dXJucyBmYWxzZSwgZ2V0RmFjZXRzVG9BZGQgcmV0dXJucyBudWxsLiBJZiBpc01hdGNoIHJldHVybnMgdHJ1ZSwgCi0gICAqIGdldEZhY2V0c1RvQWRkIHJldHVybnMgdGhlIHN1YnNldCBvZiBmYWNldCB2ZXJzaW9ucyB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIGZhY2V0IHZlcnNpb25zIGluCi0gICAqIHByb2plY3RGYWNldFZlcnNpb25zIGluIG9yZGVyIHRvIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgcmVxdWlyZWQgZmFjZXQgdmVyc2lvbnMuIFRoaXMgbWF5IGJlCi0gICAqIGFuIGVtcHR5IHNldC48L2xpPgotICAgKiA8L3VsPgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBGYWNldE1hdGNoZXIgbWF0Y2goUmVxdWlyZWRGYWNldFZlcnNpb25bXSByZXF1aXJlZEZhY2V0VmVyc2lvbnMsIFNldCBwcm9qZWN0RmFjZXRWZXJzaW9ucykKLSAgewotICAgIEZhY2V0TWF0Y2hlciBmbSA9IG5ldyBGYWNldE1hdGNoZXIoKTsKLSAgICBmbS5zZXRGYWNldHNUZXN0ZWQocHJvamVjdEZhY2V0VmVyc2lvbnMpOwotICAgIEhhc2hTZXQgZmFjZXRzVG9BZGQgPSBuZXcgSGFzaFNldCgpOwotICAgIEhhc2hTZXQgcmVxdWlyZWRGYWNldFZlcnNpb25zVG9BZGQgPSBuZXcgSGFzaFNldCgpOwotICAgIEhhc2hTZXQgZmFjZXRzVGhhdE1hdGNoZWQgPSBuZXcgSGFzaFNldCgpOwotICAgIGZvciAoaW50IGk9MDsgaTxyZXF1aXJlZEZhY2V0VmVyc2lvbnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgUmVxdWlyZWRGYWNldFZlcnNpb24gcmZ2ID0gcmVxdWlyZWRGYWNldFZlcnNpb25zW2ldOwotICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gcnBmdiA9IHJmdi5nZXRQcm9qZWN0RmFjZXRWZXJzaW9uKCk7Ci0gICAgICBTdHJpbmcgcmlkID0gcnBmdi5nZXRQcm9qZWN0RmFjZXQoKS5nZXRJZCgpOwotICAgICAgU3RyaW5nIHJ2ID0gcnBmdi5nZXRWZXJzaW9uU3RyaW5nKCk7Ci0gICAgICBib29sZWFuIGZhY2V0UHJlc2VudCA9IGZhbHNlOwotCi0gICAgICAvL0lzIHRoZSBwcm9qZWN0IGZhY2V0IHByZXNlbnQ/IG9yIGEgbGF0ZXIgdmVyc2lvbiBvZiBhcHBsaWNhYmxlLgotICAgICAgSXRlcmF0b3IgaXRyID0gcHJvamVjdEZhY2V0VmVyc2lvbnMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlKGl0ci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIHBmdiA9IChJUHJvamVjdEZhY2V0VmVyc2lvbilpdHIubmV4dCgpOwotICAgICAgICBTdHJpbmcgaWQgPSBwZnYuZ2V0UHJvamVjdEZhY2V0KCkuZ2V0SWQoKTsKLSAgICAgICAgU3RyaW5nIHZlcnNpb24gPSBwZnYuZ2V0VmVyc2lvblN0cmluZygpOwotICAgICAgICBpZiAocmlkLmVxdWFscyhpZCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAocnYuZXF1YWxzKHZlcnNpb24pKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vZm91bmQgYW4gZXhhY3QgbWF0Y2gKLSAgICAgICAgICAgIGZhY2V0UHJlc2VudCA9IHRydWU7Ci0gICAgICAgICAgICBmYWNldHNUaGF0TWF0Y2hlZC5hZGQocGZ2KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyZnYuZ2V0QWxsb3dOZXdlcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAoZ3JlYXRlclRoYW4odmVyc2lvbiwgcnYpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy9mb3VuZCBhIG1hdGNoCi0gICAgICAgICAgICAgICAgZmFjZXRQcmVzZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBmYWNldHNUaGF0TWF0Y2hlZC5hZGQocGZ2KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICAvL05vIG5lZWQgdG8ga2VlcCBpdGVyYXRpbmcgc2luY2Ugd2UgaGl0IGEgZmFjZXQgd2l0aCB0aGUgc2FtZSBpZDsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICAvL2lmIG5vdCBwcmVzZW50LCBwdXQgaXQgaW4gdGhlIGxpc3QgdG8gY2hlY2sgaWYgaXQgY2FuIGJlIGFkZGVkLgotICAgICAgaWYgKCFmYWNldFByZXNlbnQpCi0gICAgICB7Ci0gICAgICAgIGZhY2V0c1RvQWRkLmFkZChycGZ2KTsKLSAgICAgICAgcmVxdWlyZWRGYWNldFZlcnNpb25zVG9BZGQuYWRkKHJmdik7Ci0gICAgICB9Ci0gICAgICAKLSAgICB9Ci0gICAgCi0gICAgLy9DaGVjayBpZiB0aGUgZmFjZXRzVG9BZGQgY2FuIGJlIGFkZGVkCi0gICAgaWYgKHJlcXVpcmVkRmFjZXRWZXJzaW9uc1RvQWRkLnNpemUoKSA+IDApCi0gICAgewotICAgICAgLy9UZXN0IGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2YgdGhlIGZhY2V0cyB0aGF0IG5lZWQgdG8gYmUgYWRkZWQKLSAgICAgIC8vQ3JlYXRlIGFuIGFycmF5IG9mIGFycmF5cy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSB3aWxsIGNvbnRhaW4gdGhlIGFycmF5Ci0gICAgICAvL29mIHRoZSBwZXJtaXR0ZWQgSVByb2plY3RGYWNldFZlcnNpb25zIGZvciBlYWNoIHJlcXVpcmVkIGZhY2V0LgotICAgICAgYm9vbGVhbiBmYWNldHNDYW5CZUFkZGVkID0gZmFsc2U7Ci0gICAgICBJdGVyYXRvciBpdHIgPSByZXF1aXJlZEZhY2V0VmVyc2lvbnNUb0FkZC5pdGVyYXRvcigpOwotICAgICAgQXJyYXlMaXN0IHByb2plY3RGYWNldFZlcnNpb25BcnJheXMgPSBuZXcgQXJyYXlMaXN0KCk7ICAgICAgCi0KLSAgICAgIHdoaWxlIChpdHIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBSZXF1aXJlZEZhY2V0VmVyc2lvbiByZXFGYWNldFZlcnNpb24gPSAoUmVxdWlyZWRGYWNldFZlcnNpb24pIGl0ci5uZXh0KCk7Ci0gICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uW10gdmVyc2lvbnMgPSByZXFGYWNldFZlcnNpb24uZ2V0QWxsb3dlZFByb2plY3RGYWNldFZlcnNpb25zKCk7Ci0gICAgICAgIGlmICh2ZXJzaW9ucyAhPSBudWxsICYmIHZlcnNpb25zLmxlbmd0aCA+IDApCi0gICAgICAgIHsgICAgICAgICAgCi0gICAgICAgICAgLy9BZGQgdGhlIGFycmF5IG9mIHZlcnNpb25zIHRvIHRoZSBsaXN0IG9mIGFycmF5cy4KLSAgICAgICAgICBwcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzLmFkZCh2ZXJzaW9ucyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgICAgSVByb2plY3RGYWNldFZlcnNpb25bXVtdIGFycmF5T2ZQcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzID0gKElQcm9qZWN0RmFjZXRWZXJzaW9uW11bXSlwcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzLnRvQXJyYXkobmV3IElQcm9qZWN0RmFjZXRWZXJzaW9uWzBdWzBdKTsKLSAgICAgIFNldFtdIGNvbWJpbmF0aW9ucyA9IGdldEZhY2V0Q29tYmluYXRpb25zKGFycmF5T2ZQcm9qZWN0RmFjZXRWZXJzaW9uQXJyYXlzLCBmYWxzZSk7Ci0gICAgICBmb3IgKGludCBpPTA7IGk8Y29tYmluYXRpb25zLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICAvL0NoZWNrIGlmIHRoZSBzZXQgY2FuIGJlIGFkZGVkLiBJZiBzbywgdGhpcyBpcyBhIG1hdGNoLiBVcGRhdGUgdGhlIGZhY2V0IG1hdGNoZXIgYW5kIGJyZWFrLgotICAgICAgICBTZXQgYWN0aW9ucyA9IGdldEluc3RhbGxBY3Rpb25zKGNvbWJpbmF0aW9uc1tpXSk7Ci0gICAgICAgIHRyeSB7Ci0JCQlpZiggUHJvamVjdEZhY2V0c01hbmFnZXIuY2hlY2soIHByb2plY3RGYWNldFZlcnNpb25zLCBhY3Rpb25zICkuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLk9LICkKLQkJCXsKLQkJCSAgLy9GYWNldHMgY2FuIGJlIGFkZGVkIHNvIHRoZXJlIGlzIGEgbWF0Y2gKLQkJCSAgZmFjZXRzQ2FuQmVBZGRlZD10cnVlOwotCQkJICBmbS5zZXRNYXRjaCh0cnVlKTsKLQkJCSAgZm0uc2V0RmFjZXRzVGhhdE1hdGNoZWQoZmFjZXRzVGhhdE1hdGNoZWQpOwotCQkJICBmbS5zZXRGYWNldHNUb0FkZChjb21iaW5hdGlvbnNbaV0pOwotCQkJICBicmVhazsKLQkJCX0KLQkJfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKLQkJCS8vIERvIG5vdGhpbmcgaWYgUHJvamVjdEZhY2V0c01hbmFnZXIuY2hlY2soKSB0aHJvd3MgZXhjZXB0aW9uLgotCQkJLy8gVE9ETyBUaGlzIHRyeS9jYXRjaCB3aWxsIGJlIHVubmVjY2VzYXJ5IG9uY2UgV1RQIGJ1ZyAxMzc1NTEgaXMgZml4ZWQgc28gdGhhdCBhbiBPSyBTdGF0dXMgCi0JCQkvLyAJCXdvdWxkIG5vdCBiZSByZXR1cm5lZCB3aGVuIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCi0JCX0gICAgICAgICAgICAgICAgCi0gICAgICB9Ci0gICAgICAKLSAgICAgIAotICAgICAgaWYgKCFmYWNldHNDYW5CZUFkZGVkKQotICAgICAgewotICAgICAgICBmbS5zZXRNYXRjaChmYWxzZSk7Ci0gICAgICB9ICAgICAgCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvL1RoZXJlIGFyZSBubyBmYWNldHMgdG8gYWRkLgotICAgICAgZm0uc2V0TWF0Y2godHJ1ZSk7Ci0gICAgICBmbS5zZXRGYWNldHNUaGF0TWF0Y2hlZChmYWNldHNUaGF0TWF0Y2hlZCk7Ci0gICAgICBmbS5zZXRGYWNldHNUb0FkZChmYWNldHNUb0FkZCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmbTsKLSAgfQotICAgIAotICAvKioKLSAgICogQWRkcyBmYWNldCB2ZXJzaW9ucyB0byB0aGUgcHJvdmlkZWQgcHJvamVjdCBpZiByZXF1aXJlZCBiYXNlZCBvbiBjaGVja2luZyBwcm92aWRlZCAKLSAgICogcmVxdWlyZWQgZmFjZXQgdmVyc2lvbnMgYWdhaW5zdCB0aGUgZmFjZXQgdmVyc2lvbnMgYWxyZWFkeSBpbnN0YWxsZWQgb24gcHJvamVjdC4KLSAgICogCi0gICAqIEBwYXJhbSBwcm9qZWN0IElQcm9qZWN0IHdoaWNoIGV4aXN0cyBpbiB0aGUgd29ya3NwYWNlCi0gICAqIEBwYXJhbSByZnZzIGFycmF5IG9mIHJlcXVpcmVkIGZhY2V0IHZlcnNpb25zLgotICAgKiBAcGFyYW0gbW9uaXRvciBwcm9ncmVzcyBtb25pdG9yCi0gICAqIEByZXR1cm4gSVN0YXR1cyB3aXRoIHNldmVyaXR5IElTdGF0dXMuRVJST1IKLSAgICogPHVsPgotICAgKiA8bGk+aWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3Qgb3I8L2xpPgotICAgKiA8bGk+aWYgdGhlIHByb2plY3QgaXMgbm90IG9wZW4gb3I8L2xpPgotICAgKiA8bGk+YW4gYXR0ZW1wdCB0byBhZGQgZmFjZXQgdmVyc2lvbnMgdG8gdGhlIHByb2plY3QgcmVzdWx0ZWQgaW4gYW4gZXJyb3IuPC9saT4KLSAgICogPC91bD4gCi0gICAqIE90aGVyd2lzZSwgcmV0dXJucyBhbiBJU3RhdHVzIHdpdGggc2V2ZXJpdHkgSVN0YXR1cy5PSyAgICAKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgSVN0YXR1cyBhZGRSZXF1aXJlZEZhY2V0c1RvUHJvamVjdChJUHJvamVjdCBwcm9qZWN0LCBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIHJmdnMsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikKLSAgewotICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICAKLSAgICBTZXQgbWlzc2luZ0ZhY2V0cyA9IG51bGw7Ci0gICAgU2V0IGZhY2V0c1RvQWRkID0gbmV3IEhhc2hTZXQoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBJRmFjZXRlZFByb2plY3QgZlByb2plY3QgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5jcmVhdGUocHJvamVjdCk7Ci0gICAgICBpZiAoZlByb2plY3QgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgU2V0IHByb2plY3RGYWNldFZlcnNpb25zID0gZlByb2plY3QuZ2V0UHJvamVjdEZhY2V0cygpOwotICAgICAgICBGYWNldE1hdGNoZXIgcHJvamVjdEZhY2V0TWF0Y2hlciA9IEZhY2V0VXRpbHMubWF0Y2gocmZ2cywgcHJvamVjdEZhY2V0VmVyc2lvbnMpOwotICAgICAgICBpZiAocHJvamVjdEZhY2V0TWF0Y2hlci5pc01hdGNoKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtaXNzaW5nRmFjZXRzID0gcHJvamVjdEZhY2V0TWF0Y2hlci5nZXRGYWNldHNUb0FkZCgpOwotICAgICAgICAgIGlmIChtaXNzaW5nRmFjZXRzLnNpemUoKSA+IDApCi0gICAgICAgICAgewotICAgICAgICAgICAgSVJ1bnRpbWUgZlJ1bnRpbWUgPSBudWxsOwotICAgICAgICAgICAgZlJ1bnRpbWUgPSBGYWNldFV0aWxzLmdldEZhY2V0UnVudGltZUZvclByb2plY3QocHJvamVjdC5nZXROYW1lKCkpOwotICAgICAgICAgICAgaWYgKGZSdW50aW1lICE9IG51bGwpCi0gICAgICAgICAgICB7ICAKLSAgICAgICAgICAgICAgLy9BZGQgdGhlIGhpZ2hlc3QgdmVyc2lvbiBzdXBwb3J0ZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIHByb2plY3QgaXMgYm91bmQgdG8uCi0gICAgICAgICAgICAgIEl0ZXJhdG9yIG1pc3NpbmdGYWNldHNJdHIgPSBtaXNzaW5nRmFjZXRzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgIHdoaWxlIChtaXNzaW5nRmFjZXRzSXRyLmhhc05leHQoKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIElQcm9qZWN0RmFjZXQgZmFjZXQgPSAoKElQcm9qZWN0RmFjZXRWZXJzaW9uKW1pc3NpbmdGYWNldHNJdHIubmV4dCgpKS5nZXRQcm9qZWN0RmFjZXQoKTsKLSAgICAgICAgICAgICAgICAvL0dldCB0aGUgaGlnaGVzdCBsZXZlbCBvZiB0aGlzIGZhY2V0IHN1cHBvcnRlZCBieSB0aGUgcnVudGltZS4KLSAgICAgICAgICAgICAgICBMaXN0IHZlcnNpb25zID0gbnVsbDsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucyA9IGZhY2V0LmdldFNvcnRlZFZlcnNpb25zKGZhbHNlKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChWZXJzaW9uRm9ybWF0RXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgU2V0IHZlcnNpb25TZXQgPSBmYWNldC5nZXRWZXJzaW9ucygpOwotICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBpdHIgPSB2ZXJzaW9uU2V0Lml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIHZlcnNpb25zID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaXRyLmhhc05leHQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMuYWRkKGl0ci5uZXh0KCkpOwotICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNldCB2ZXJzaW9uU2V0ID0gZmFjZXQuZ2V0VmVyc2lvbnMoKTsKLSAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgaXRyID0gdmVyc2lvblNldC5pdGVyYXRvcigpOwotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25zLmFkZChpdHIubmV4dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvL0l0ZXJhdGUgb3ZlciB0aGUgdmVyc2lvbnMgaW4gZGVzY2VuZGluZyBvcmRlciBhbmQgcGljayB0aGUgCi0gICAgICAgICAgICAgICAgLy9maXJzdCBvbmUgdGhhdCBmUnVudGltZSBzdXBwb3J0cy4KLSAgICAgICAgICAgICAgICBJdGVyYXRvciB2ZXJzaW9uc0l0ciA9IHZlcnNpb25zLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUodmVyc2lvbnNJdHIuaGFzTmV4dCgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGJvb2xlYW4gbWF0Y2ggPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIHBmdiA9IChJUHJvamVjdEZhY2V0VmVyc2lvbil2ZXJzaW9uc0l0ci5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICBTZXQgcGZ2cyA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgICAgICAgICAgICAgICBwZnZzLmFkZChwZnYpOwotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAvL0NoZWNrIHRoZSByZXF1aXJlZCBmYWNldHMgdG8gc2VlIGlmIHRoaXMgdmVyc2lvbiBvZiB0aGlzIGZhY2V0IGlzIHN1cHBvcnRlZC4KLSAgICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxyZnZzLmxlbmd0aDsgaisrKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZEZhY2V0VmVyc2lvbiByZnYgPSByZnZzW2pdOwotICAgICAgICAgICAgICAgICAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiBycGZ2ID0gcmZ2LmdldFByb2plY3RGYWNldFZlcnNpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJwZnYuZ2V0UHJvamVjdEZhY2V0KCkuZ2V0SWQoKS5lcXVhbHMocGZ2LmdldFByb2plY3RGYWNldCgpLmdldElkKCkpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgKHJwZnYuZ2V0VmVyc2lvblN0cmluZygpLmVxdWFscyhwZnYuZ2V0VmVyc2lvblN0cmluZygpKSkKLSAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmZ2LmdldEFsbG93TmV3ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdyZWF0ZXJUaGFuKHBmdi5nZXRWZXJzaW9uU3RyaW5nKCksIHJwZnYuZ2V0VmVyc2lvblN0cmluZygpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vQ2hlY2sgYWdhaW5zdCBSdW50aW1lCi0gICAgICAgICAgICAgICAgICAgIGlmIChGYWNldFV0aWxzLmRvZXNSdW50aW1lU3VwcG9ydEZhY2V0cyhmUnVudGltZSwgcGZ2cykpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAvL1dlIGhhdmUgYSBtYXRjaC4gQWRkIHRoaXMgb25lIHRvIHRoZSBtYXN0ZXIgc2V0LgotICAgICAgICAgICAgICAgICAgICAgIGZhY2V0c1RvQWRkLmFkZChwZnYpOwotICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIAotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGZhY2V0c1RvQWRkID0gbWlzc2luZ0ZhY2V0czsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RhdHVzID0gYWRkRmFjZXRzVG9Qcm9qZWN0KGZQcm9qZWN0LCBmYWNldHNUb0FkZCk7Ci0gICAgICAgICAgfQotICAgICAgICB9ICAgICAgICAgICAgCi0gICAgICB9Ci0gICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkKLSAgICB7Ci0gICAgICAvL0Rpc3BsYXkgYW4gYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZSB0byB0aGUgdXNlci4KLSAgICAgIC8vQSBDb3JlRXhjZXB0aW9uIGNvdWxkIGhhdmUgYmVlbiB0aHJvd24gZm9yIGFueSBvZiB0aGUgZm9sbG93aW5nIHRocmVlIHJlYXNvbnMKLSAgICAgIC8vMS4gVGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QKLSAgICAgIC8vMi4gVGhlIHByb2plY3QgaXMgbm90IG9wZW4KLSAgICAgIC8vMy4gVGhlcmUgd2FzIGEgcHJvYmxlbSBhZGRpbmcgdGhlIGZhY2V0cyB0byB0aGUgcHJvamVjdC4KLSAgICAgIAotICAgICAgaWYgKCFwcm9qZWN0LmV4aXN0cygpKQotICAgICAgewotICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9QUk9KRUNUX0RPRVNfTk9UX0VYSVNULCBuZXcgU3RyaW5nW10geyBwcm9qZWN0LmdldE5hbWUoKX0pKTsgICAgICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKCFwcm9qZWN0LmlzT3BlbigpKQotICAgICAgewotICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9QUk9KRUNUX0lTX05PVF9PUEVOLCBuZXcgU3RyaW5nW10geyBwcm9qZWN0LmdldE5hbWUoKX0pKTsgICAgICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsgCi0gICAgICAgIHN0YXR1cyA9IGdldEVycm9yU3RhdHVzRm9yQWRkaW5nRmFjZXRzKHByb2plY3QuZ2V0TmFtZSgpLCBmYWNldHNUb0FkZCwgY2UpOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0gIAotCi0gIC8qKgotICAgKiBBZGRzIHRoZSBwcm92aWRlZCBzZXQgb2YgZmFjZXQgdmVyc2lvbnMgdG8gdGhlIHByb3ZpZGVkIGZhY2V0ZWQgcHJvamVjdAotICAgKiAKLSAgICogQHBhcmFtIGZwcm9qZWN0IEEgZmFjZXRlZCBwcm9qZWN0IHdoaWNoIGV4aXN0cyBpbiB0aGUgd29ya3NwYWNlCi0gICAqIEBwYXJhbSBwcm9qZWN0RmFjZXRWZXJzaW9ucyBBIHNldCBjb250YWluaW5nIGVsZW1lbnRzIG9mIHR5cGUge0BsaW5rIElQcm9qZWN0RmFjZXRWZXJzaW9ufQotICAgKiBAcmV0dXJuIEFuIElTdGF0dXMgd2l0aCBhIHNldmVyaXR5IG9mIElTdGF0dXMuT0sgaWYgdGhlIGZhY2V0IAotICAgKiB2ZXJzaW9ucyB3ZXJlIGFkZGVkIHN1Y2Nlc3NmdWxseS4gT3RoZXJ3aXNlLCBhbiBJU3RhdHVzIHdpdGggYSBzZXZlcml0eSBvZgotICAgKiBJU3RhdHVzLkVSUk9SLiAKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgSVN0YXR1cyBhZGRGYWNldHNUb1Byb2plY3QoZmluYWwgSUZhY2V0ZWRQcm9qZWN0IGZwcm9qZWN0LCBmaW5hbCBTZXQgcHJvamVjdEZhY2V0VmVyc2lvbnMpCi0gIHsKLSAgICBmaW5hbCBJU3RhdHVzW10gc3RhdHVzID0gbmV3IElTdGF0dXNbMV07Ci0gICAgc3RhdHVzWzBdID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICBmaW5hbCBTZXQgYWN0aW9ucyA9IGdldEluc3RhbGxBY3Rpb25zKHByb2plY3RGYWNldFZlcnNpb25zKTsKLSAgICAKLSAgICBpZiAoaXNFeHRlbnNpb25QcmVzZW50KCkpCi0gICAgeyAgICAKLSAgICAJc3RhdHVzWzBdID0gZGVsZWdhdGUuYWRkRmFjZXRzVG9Qcm9qZWN0KGZwcm9qZWN0LCBwcm9qZWN0RmFjZXRWZXJzaW9ucyk7Ci0JfQotCWVsc2UKLQl7Ci0JCXRyeQotICAgICAgICB7Ci0gICAgICAgICAgZnByb2plY3QubW9kaWZ5KGFjdGlvbnMsIG51bGwpOwotICAgICAgICB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICBzdGF0dXNbMF0gPSBnZXRFcnJvclN0YXR1c0ZvckFkZGluZ0ZhY2V0cyhmcHJvamVjdC5nZXRQcm9qZWN0KCkuZ2V0TmFtZSgpLCBwcm9qZWN0RmFjZXRWZXJzaW9ucywgZSk7Ci0gICAgICAgIH0KLQl9Ci0gICAgCi0gICAgcmV0dXJuIHN0YXR1c1swXTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYW4gZXJyb3Igc3RhdHVzIGluZGljYXRpbmcgdGhhdCB0aGUgZmFjZXQgdmVyc2lvbnMgY291bGQgbm90IGJlCi0gICAqIGFkZGVkIHRvIHRoZSBmYWNldGVkIHByb2plY3QKLSAgICogCi0gICAqIEBwYXJhbSBwcm9qZWN0TmFtZSBhIHByb2plY3QgbmFtZSB0byBpbnNlcnQgaW4gdGhlIGVycm9yIG1lc3NhZ2UgaW4gdGhlIElTdGF0dXMKLSAgICogQHBhcmFtIHByb2plY3RGYWNldFZlcnNpb25zIGEgc2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgSVByb2plY3RGYWNldFZlcnNpb259LgotICAgKiBUaGUgZmFjZXRzIGluIHRoaXMgc2V0IHdpbGwgYmUgbGlzdGVkIGluIHRoZSBlcnJvciBtZXNzYWdlIGluIHRoZSBJU3RhdHVzLgotICAgKiBAcGFyYW0gdCBhIFRocm93YWJsZSB3aGljaCB3aWxsIGJlIGluc2VydGVkIGluIHRoZSBJU3RhdHVzCi0gICAqIEByZXR1cm4gYW4gSVN0YXR1cyB3aXRoIHNldmVyaXR5IElTdGF0dXMuRVJST1IKLSAgICovCi0gIHByaXZhdGUgc3RhdGljIElTdGF0dXMgZ2V0RXJyb3JTdGF0dXNGb3JBZGRpbmdGYWNldHMoU3RyaW5nIHByb2plY3ROYW1lLCBTZXQgcHJvamVjdEZhY2V0VmVyc2lvbnMsIFRocm93YWJsZSB0KQotICB7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIGludCBzaXplID0gcHJvamVjdEZhY2V0VmVyc2lvbnMuc2l6ZSgpOwotICAgIGlmIChzaXplID4gMCkKLSAgICB7ICAgICAgICAgIAotICAgICAgU2V0IGZhY2V0cyA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgICAvL0l0ZXJhdGUgb3ZlciBwcm9qZWN0RmFjZXRWZXJzaW9ucyB0byBmb3JtIGEgc2V0IG9mIElQcm9qZWN0RmFjZXRzCi0gICAgICBJdGVyYXRvciBpdHIgPSBwcm9qZWN0RmFjZXRWZXJzaW9ucy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIHByb2plY3RGYWNldCA9IChJUHJvamVjdEZhY2V0VmVyc2lvbilpdHIubmV4dCgpOwotICAgICAgICBJUHJvamVjdEZhY2V0IGZhY2V0ID0gcHJvamVjdEZhY2V0LmdldFByb2plY3RGYWNldCgpOwotICAgICAgICBmYWNldHMuYWRkKGZhY2V0KTsKLSAgICAgIH0KLSAgICAgIFN0cmluZyBmYWNldExpc3QgPSBnZXRGYWNldExpc3RNZXNzYWdlU3RyaW5nKGZhY2V0cyk7Ci0gICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9BRERJTkdfRkFDRVRTX1RPX1BST0pFQ1QsIG5ldyBTdHJpbmdbXSB7IHByb2plY3ROYW1lLCBmYWNldExpc3R9KSwgdCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGZhY2V0ZWQgcHJvamVjdCB3aXRoIHRoZSBwcm92aWRlZCBuYW1lCi0gICAqIAotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgQSBTdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCB0byBiZSBjcmVhdGVkCi0gICAqIEByZXR1cm4gQW4gSVN0YXR1cyB3aXRoIGEgc2V2ZXJpdHkgb2YgSVN0YXR1cy5PSyBpZiB0aGUgZmFjZXRlZCBwcm9qZWN0Ci0gICAqIHdhcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSBvciBpZiBhIHByb2plY3Qgb2YgdGhlIHByb3ZpZGVkIG5hbWUgYWxyZWFkeQotICAgKiBleGlzdHMgaW4gdGhlIHdvcmtzcGFjZS4gT3RoZXJ3aXNlLCBhbiBJU3RhdHVzIHdpdGggc2V2ZXJpdHkgb2YKLSAgICogSVN0YXR1cy5FUlJPUi4gCi0gICAqLwotICBwdWJsaWMgc3RhdGljIElTdGF0dXMgY3JlYXRlTmV3RmFjZXRlZFByb2plY3QoZmluYWwgU3RyaW5nIHByb2plY3ROYW1lKQotICB7Ci0gICAgZmluYWwgSVN0YXR1c1tdIHN0YXR1cyA9IG5ldyBJU3RhdHVzWzFdOwotICAgIHN0YXR1c1swXSA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChwcm9qZWN0TmFtZSk7Ci0gICAgCi0gICAgaWYgKCFwcm9qZWN0LmV4aXN0cygpKQotICAgIHsKLQkJaWYgKGlzRXh0ZW5zaW9uUHJlc2VudCgpKQotCQl7Ci0JCSAgc3RhdHVzWzBdID0gZGVsZWdhdGUuY3JlYXRlTmV3RmFjZXRlZFByb2plY3QocHJvamVjdE5hbWUpOwotCSAgCX0KLQkgIAllbHNlCi0JICAJewotICAJCSAgdHJ5Ci0gIAkJICB7Ci0gICAgICAgICAgICAgIElGYWNldGVkUHJvamVjdCBmUHJvamVjdCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmNyZWF0ZShwcm9qZWN0TmFtZSwgbnVsbCwgbnVsbCk7Ci0gICAgICAgICAgICAgIGlmIChmUHJvamVjdCA9PSBudWxsKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdHVzWzBdID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfUFJPSkVDVF9DUkVBVElPTiwgbmV3IFN0cmluZ1tdIHsgcHJvamVjdE5hbWUgfSkpOwotICAgICAgICAgICAgICB9Ci0gIAkJICB9IAotICAJCSAgY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkKLSAgCQkgIHsKLSAgICAgICAgICAgICAgc3RhdHVzWzBdID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfUFJPSkVDVF9DUkVBVElPTiwgbmV3IFN0cmluZ1tdIHsgcHJvamVjdE5hbWUgfSksIGUpOwotICAJCSAgfSAgCi0JICAJfSAgICAgICAgCi0gICAgfQotICAgIHJldHVybiBzdGF0dXNbMF07Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXRzIHRoZSBwcm92aWRlZCBzZXQgb2YgZmFjZXRzIGFzIGZpeGVkIG9uIHRoZSBmYWNldGVkIHByb2plY3QKLSAgICogCi0gICAqIEBwYXJhbSBmUHJvamVjdCBBIGZhY2V0ZWQgcHJvamVjdCB3aGljaCBleGlzdHMgaW4gdGhlIHdvcmtzcGFjZQotICAgKiBAcGFyYW0gZml4ZWRGYWNldHMgQSBzZXQgY29udGFpbmluZyBlbGVtZW50cyBvZiB0eXBlIHtAbGluayBJUHJvamVjdEZhY2V0fQotICAgKiBAcmV0dXJuIEFuIElTdGF0dXMgd2l0aCBhIHNldmVyaXR5IG9mIElTdGF0dXMuT0sgaWYgdGhlIGZhY2V0cyAKLSAgICogd2VyZSBzdWNjZXNzZnVsbHkgc2V0IGFzIGZpeGVkIGZhY2V0cyBvbiB0aGUgZmFjZXRlZCBwcm9qZWN0LiAKLSAgICogT3RoZXJ3aXNlLCBhbiBJU3RhdHVzIHdpdGggYSBzZXZlcml0eSBvZiBJU3RhdHVzLkVSUk9SLgotICAgKiAKLSAgICogQHNlZSBJRmFjZXRlZFByb2plY3Qjc2V0Rml4ZWRQcm9qZWN0RmFjZXRzCi0gICAqLwotICBwdWJsaWMgc3RhdGljIElTdGF0dXMgc2V0Rml4ZWRGYWNldHNPblByb2plY3QoZmluYWwgSUZhY2V0ZWRQcm9qZWN0IGZQcm9qZWN0LCBmaW5hbCBTZXQgZml4ZWRGYWNldHMpCi0gIHsKLSAgICBmaW5hbCBJU3RhdHVzW10gc3RhdHVzID0gbmV3IElTdGF0dXNbMV07Ci0gICAgc3RhdHVzWzBdID0gU3RhdHVzLk9LX1NUQVRVUzsKLQotICAgIGlmIChpc0V4dGVuc2lvblByZXNlbnQoKSkKLSAgICB7Ci0gICAgCXN0YXR1c1swXSA9IGRlbGVnYXRlLnNldEZpeGVkRmFjZXRzT25Qcm9qZWN0KGZQcm9qZWN0LCBmaXhlZEZhY2V0cyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgCXRyeQotICAgICAgICB7Ci0gICAgICAgICAgZlByb2plY3Quc2V0Rml4ZWRQcm9qZWN0RmFjZXRzKGZpeGVkRmFjZXRzKTsKLSAgICAgICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgc3RhdHVzWzBdID0gZ2V0RXJyb3JTdGF0dXNGb3JTZXR0aW5nRml4ZWRGYWNldHMoZlByb2plY3QuZ2V0UHJvamVjdCgpLmdldE5hbWUoKSwgZml4ZWRGYWNldHMsIGUpOwotICAgICAgICB9Ci0gICAgfSAgICAgICAKLSAgICAKLSAgICByZXR1cm4gc3RhdHVzWzBdOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyBhbiBlcnJvciBzdGF0dXMgaW5kaWNhdGluZyB0aGF0IHRoZSBmYWNldHMgY291bGQgbm90IGJlCi0gICAqIHNldCBhcyBmaXhlZCBmYWNldHMgb24gdGhlIGZhY2V0ZWQgcHJvamVjdAotICAgKiAKLSAgICogQHBhcmFtIHByb2plY3ROYW1lIGEgcHJvamVjdCBuYW1lIHRvIGluc2VydCBpbiB0aGUgZXJyb3IgbWVzc2FnZSBpbiB0aGUgSVN0YXR1cwotICAgKiBAcGFyYW0gZmFjZXRzIGEgc2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgSVByb2plY3RGYWNldH0uCi0gICAqIFRoZSBmYWNldHMgaW4gdGhpcyBzZXQgd2lsbCBiZSBsaXN0ZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UgaW4gdGhlIElTdGF0dXMuCi0gICAqIEBwYXJhbSB0IGEgVGhyb3dhYmxlIHdoaWNoIHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhlIElTdGF0dXMKLSAgICogQHJldHVybiBhbiBJU3RhdHVzIHdpdGggc2V2ZXJpdHkgSVN0YXR1cy5FUlJPUgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgSVN0YXR1cyBnZXRFcnJvclN0YXR1c0ZvclNldHRpbmdGaXhlZEZhY2V0cyhTdHJpbmcgcHJvamVjdE5hbWUsIFNldCBmYWNldHMsIFRocm93YWJsZSB0KQotICB7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIGludCBzaXplID0gZmFjZXRzLnNpemUoKTsKLSAgICBpZiAoc2l6ZSA+IDApCi0gICAgeyAgICAgICAgICAKLSAgICAgIFN0cmluZyBmYWNldExpc3QgPSBnZXRGYWNldExpc3RNZXNzYWdlU3RyaW5nKGZhY2V0cyk7ICAgICAgCi0gICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9GSVhFRF9GQUNFVFMsIG5ldyBTdHJpbmdbXSB7IHByb2plY3ROYW1lLCBmYWNldExpc3R9KSwgdCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0gIAotICAKLSAgCi0gIC8qKgotICAgKiBCaW5kcyB0aGUgZmFjZXRlZCBwcm9qZWN0IHRvIHRoZSBmYWNldCBydW50aW1lCi0gICAqIAotICAgKiBAcGFyYW0gZlByb2plY3QgQSBmYWNldGVkIHByb2plY3Qgd2hpY2ggZXhpc3RzIGluIHRoZSB3b3Jrc3BhY2UKLSAgICogQHBhcmFtIGZSdW50aW1lIEEgZmFjZXQgcnVudGltZQotICAgKiBAcmV0dXJuIEFuIElTdGF0dXMgd2l0aCBhIHNldmVyaXR5IG9mIElTdGF0dXMuT0sgaWYgdGhlIGZhY2V0ZWQgcHJvamVjdAotICAgKiB3YXMgYm91bmQgdG8gdGhlIGZhY2V0IHJ1bnRpbWUgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIGFuIElTdGF0dXMgd2l0aCBzZXZlcml0eSBvZgotICAgKiBJU3RhdHVzLkVSUk9SLiAKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgSVN0YXR1cyBzZXRGYWNldFJ1bnRpbWVPblByb2plY3QoZmluYWwgSUZhY2V0ZWRQcm9qZWN0IGZQcm9qZWN0LCBmaW5hbCBJUnVudGltZSBmUnVudGltZSkKLSAgewotICAgIGZpbmFsIElTdGF0dXNbXSBzdGF0dXMgPSBuZXcgSVN0YXR1c1sxXTsKLSAgICBzdGF0dXNbMF0gPSBTdGF0dXMuT0tfU1RBVFVTOwotCi0gICAgaWYgKGlzRXh0ZW5zaW9uUHJlc2VudCgpKQotICAgIHsKLSAgICAJc3RhdHVzWzBdID0gZGVsZWdhdGUuc2V0RmFjZXRSdW50aW1lT25Qcm9qZWN0KGZQcm9qZWN0LCBmUnVudGltZSk7Ci0gICAgfQotICAgIGVsc2UgCi0gICAgewotICAgIAl0cnkKLSAgICAgICAgewotICAgIAkJZlByb2plY3Quc2V0VGFyZ2V0ZWRSdW50aW1lcyhDb2xsZWN0aW9ucy5zaW5nbGV0b24oZlJ1bnRpbWUpLCBudWxsKTsgLy9qdmggLSBoYXBwZW5zIGhlcmUuLi4KLSAgICAgICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgc3RhdHVzWzBdID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfU0VUVElOR19SVU5USU1FLCBuZXcgU3RyaW5nW10geyBmUHJvamVjdC5nZXRQcm9qZWN0KCkuZ2V0TmFtZSgpLCBmUnVudGltZS5nZXROYW1lKCkgfSksIGUpOwotICAgICAgICB9Ci0gICAgfSAgICAKLSAgICByZXR1cm4gc3RhdHVzWzBdOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyBhIHRyYW5zbGF0YWJsZSBkZWxpbWl0ZWQgbGlzdCBvZiBmYWNldCBsYWJlbHMgZGVyaXZlZCBmcm9tIHRoZSBwcm92aWRlZAotICAgKiBzZXQgb2YgZmFjZXRzCi0gICAqIAotICAgKiBAcGFyYW0gZmFjZXRzIGEgc2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgSVByb2plY3RGYWNldH0KLSAgICogQHJldHVybiBTdHJpbmcgYSBkZWxpbWl0ZWQgbGlzdCBvZiBmYWNldCBsYWJlbHMKLSAgICovCi0gIHByaXZhdGUgc3RhdGljIFN0cmluZyBnZXRGYWNldExpc3RNZXNzYWdlU3RyaW5nKFNldCBmYWNldHMpCi0gIHsKLSAgICBTdHJpbmcgZmFjZXRMaXN0TWVzc2FnZSA9ICIiOwotICAgIGludCBzaXplID0gZmFjZXRzLnNpemUoKTsKLSAgICBpZiAoc2l6ZSA+IDApCi0gICAgewotICAgICAgSXRlcmF0b3IgaXRyID0gZmFjZXRzLml0ZXJhdG9yKCk7Ci0gICAgICBJUHJvamVjdEZhY2V0IGZpcnN0UHJvamVjdEZhY2V0ID0gKElQcm9qZWN0RmFjZXQpaXRyLm5leHQoKTsKLSAgICAgIGZhY2V0TGlzdE1lc3NhZ2UgPSBmaXJzdFByb2plY3RGYWNldC5nZXRMYWJlbCgpOwotICAgICAgCi0gICAgICAvL0NvbnRpbnVlIGFwcGVuZGluZyB0byBmYWNldExpc3RNZXNzYWdlIHVudGlsIGFsbCB0aGUgZmFjZXQgbGFiZWxzCi0gICAgICAvL2FyZSBpbiB0aGUgbGlzdC4KLSAgICAgIHdoaWxlIChpdHIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBJUHJvamVjdEZhY2V0IHByb2plY3RGYWNldCA9IChJUHJvamVjdEZhY2V0KWl0ci5uZXh0KCk7Ci0gICAgICAgIFN0cmluZyBwZkxhYmVsID0gcHJvamVjdEZhY2V0LmdldExhYmVsKCk7Ci0gICAgICAgIGZhY2V0TGlzdE1lc3NhZ2UgPSBOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19GQUNFVFMsIG5ldyBTdHJpbmdbXSB7ZmFjZXRMaXN0TWVzc2FnZSwgcGZMYWJlbH0pOwotICAgICAgfSAgICAgICAgICAgIAotICAgIH0gICAgCi0gICAgCi0gICAgcmV0dXJuIGZhY2V0TGlzdE1lc3NhZ2U7Ci0gIH0KLSAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgc2V0IG9mIGZhY2V0IHZlcnNpb25zIHdoaWNoIGNhbiBiZSBpbmZlcnJlZCBmcm9tIHRoZSBwcm92aWRlZCBKYXZhIHByb2plY3QKLSAgICogCi0gICAqIEBwYXJhbSBqYXZhUHJvamVjdCBhIEphdmEgcHJvamVjdCB0aGF0IGV4aXN0cyBpbiB0aGUgd29ya3NwYWNlLiBNdXN0IG5vdCBiZSBudWxsLgotICAgKiBAcmV0dXJuIFNldCBjb250YWluaW5nIGVsZW1lbnRzIG9mIHR5cGUge0BsaW5rIElQcm9qZWN0RmFjZXRWZXJzaW9ufQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTZXQgZ2V0RmFjZXRzRm9ySmF2YVByb2plY3QoSUphdmFQcm9qZWN0IGphdmFQcm9qZWN0KQotICB7Ci0gICAgU2V0IGZhY2V0cyA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgU3RyaW5nIGpka0NvbXBsaWFuY2VMZXZlbCA9IG51bGw7Ci0gICAgaWYgKGphdmFQcm9qZWN0IT1udWxsKQotICAgIHsKLSAgICAgIGpka0NvbXBsaWFuY2VMZXZlbCA9IGphdmFQcm9qZWN0LmdldE9wdGlvbigib3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZSIsIGZhbHNlKTsKLSAgICAgIGlmIChqZGtDb21wbGlhbmNlTGV2ZWwgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgamRrQ29tcGxpYW5jZUxldmVsID0gSmF2YUNvcmUuZ2V0T3B0aW9uKEphdmFDb3JlLkNPTVBJTEVSX0NPTVBMSUFOQ0UpOwotICAgICAgICBpZiAoamRrQ29tcGxpYW5jZUxldmVsID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBqZGtDb21wbGlhbmNlTGV2ZWwgPSAiMS40IjsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICBJUHJvamVjdEZhY2V0IGphdmFGYWNldCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJTW9kdWxlQ29uc3RhbnRzLkpTVF9KQVZBKTsKLSAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiBqYXZhRmFjZXRWZXJzaW9uID0gbnVsbDsKLSAgICBpZiAoamRrQ29tcGxpYW5jZUxldmVsLmVxdWFscygiMS4zIikpCi0gICAgewotICAgICAgamF2YUZhY2V0VmVyc2lvbiA9IGphdmFGYWNldC5nZXRWZXJzaW9uKCIxLjMiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoamRrQ29tcGxpYW5jZUxldmVsLmVxdWFscygiMS40IikpCi0gICAgewotICAgICAgamF2YUZhY2V0VmVyc2lvbiA9IGphdmFGYWNldC5nZXRWZXJzaW9uKCIxLjQiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoamRrQ29tcGxpYW5jZUxldmVsLmVxdWFscygiMS41IikpCi0gICAgewotICAgICAgamF2YUZhY2V0VmVyc2lvbiA9IGphdmFGYWNldC5nZXRWZXJzaW9uKCI1LjAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoamRrQ29tcGxpYW5jZUxldmVsLmVxdWFscygiMS42IikpCi0gICAgewotICAgICAgamF2YUZhY2V0VmVyc2lvbiA9IGphdmFGYWNldC5nZXRWZXJzaW9uKCI2LjAiKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGphdmFGYWNldFZlcnNpb24gPSBqYXZhRmFjZXQuZ2V0VmVyc2lvbigiMS40Iik7Ci0gICAgfQotIAotICAgIGZhY2V0cy5hZGQoamF2YUZhY2V0VmVyc2lvbik7Ci0gICAgSVByb2plY3RGYWNldCB1dGlsaXR5RmFjZXQgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRQcm9qZWN0RmFjZXQoSU1vZHVsZUNvbnN0YW50cy5KU1RfVVRJTElUWV9NT0RVTEUpOwotICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIHV0aWxpdHlGYWNldFZlcnNpb24gPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIHV0aWxpdHlGYWNldFZlcnNpb24gPSB1dGlsaXR5RmFjZXQuZ2V0TGF0ZXN0VmVyc2lvbigpOwotICAgIH0KLSAgICBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkKLSAgICB7Ci0gICAgICAKLSAgICB9Ci0gICAgaWYgKHV0aWxpdHlGYWNldFZlcnNpb24gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmYWNldHMuYWRkKHV0aWxpdHlGYWNldFZlcnNpb24pOwotICAgIH0KLSAgICByZXR1cm4gZmFjZXRzOwotICB9Ci0gIAotICAKLSAgLy9NZXRob2RzIHJlbGF0ZWQgdG8gZmFjZXQgcnVudGltZXMuCi0gIAotICAvKioKLSAgICogUmV0dXJucyBhIHNldCBvZiBmYWNldCBydW50aW1lcyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuCi0gICAqIHJlcXVpcmVkIGZhY2V0IHZlcnNpb25zLgotICAgKiBAcGFyYW0gcmVxdWlyZWRGYWNldFZlcnNpb25zIGFuIGFycmF5IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgUmVxdWlyZWRGYWNldFZlcnNpb259Ci0gICAqIEByZXR1cm4gU2V0IHNldCBvZiBmYWNldCBydW50aW1lcyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuIHJlcXVpcmVkIGZhY2V0IHZlcnNpb25zLgotICAgKiAoZWxlbWVudCB0eXBlOiB7QGxpbmsgSVJ1bnRpbWV9KSAKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU2V0IGdldFJ1bnRpbWVzKFJlcXVpcmVkRmFjZXRWZXJzaW9uW10gcmVxdWlyZWRGYWNldFZlcnNpb25zKQotICB7Ci0gICAgLy9Gb3JtIHRoZSBzZXRzIG9mIElQcm9qZWN0RmFjZXRWZXJzaW9ucyB0aGVzZSBSZXF1aXJlZEZhY2V0VmVyc2lvbnMgcmVwcmVzZW50LgotICAgIEFycmF5TGlzdCBsaXN0T2ZGYWNldFNldHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgCi0gICAgSGFzaFNldCBmYWNldHMgPSBuZXcgSGFzaFNldCgpOwotICAgIGludCBqYXZhRmFjZXRJbmRleCA9IC0xOwotICAgIGZvciAoaW50IGk9MDsgaTxyZXF1aXJlZEZhY2V0VmVyc2lvbnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gcGZ2ID0gcmVxdWlyZWRGYWNldFZlcnNpb25zW2ldLmdldFByb2plY3RGYWNldFZlcnNpb24oKTsKLSAgICAgIGlmIChGYWNldFV0aWxzLmlzSmF2YUZhY2V0KHBmdi5nZXRQcm9qZWN0RmFjZXQoKSkpCi0gICAgICB7Ci0gICAgICAgIC8vUmVtZW1iZXIgdGhlIGluZGV4Ci0gICAgICAgIGphdmFGYWNldEluZGV4ID0gaTsKLSAgICAgIH0KLSAgICAgIGZhY2V0cy5hZGQocmVxdWlyZWRGYWNldFZlcnNpb25zW2ldLmdldFByb2plY3RGYWNldFZlcnNpb24oKSk7Ci0gICAgfQotICAgIAotICAgIGxpc3RPZkZhY2V0U2V0cy5hZGQoZmFjZXRzKTsKLSAgICAKLSAgICAvL0lmIHRoZSBqYXZhIGZhY2V0IHdhcyBvbmUgb2YgdGhlIGZhY2V0cyBpbiB0aGUgc2V0LCBhbmQgbmV3IHZlcnNpb25zIG9mIGphdmEgYXJlIGFsbG93ZWQsCi0gICAgLy9jcmVhdGUgc2V0cyB0aGF0IGNvbnRhaW4gdGhlIG5ld2VyIHBlcm1pdHRlZCB2ZXJzaW9ucyBvZiB0aGUgamF2YSBmYWNldHMuCi0gICAgaWYgKGphdmFGYWNldEluZGV4ID4gLTEpCi0gICAgewotICAgICAgQXJyYXlMaXN0IHBlcm1pdHRlZEphdmFWZXJzaW9ucyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgIFJlcXVpcmVkRmFjZXRWZXJzaW9uIHJmdiA9IHJlcXVpcmVkRmFjZXRWZXJzaW9uc1tqYXZhRmFjZXRJbmRleF07Ci0gICAgICBpZiAocmZ2LmdldEFsbG93TmV3ZXIoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHZlcnNpb24gPSByZnYuZ2V0UHJvamVjdEZhY2V0VmVyc2lvbigpLmdldFZlcnNpb25TdHJpbmcoKTsgICAgICAKLSAgICAgICAgU2V0IGFsbFZlcnNpb25zID0gcmZ2LmdldFByb2plY3RGYWNldFZlcnNpb24oKS5nZXRQcm9qZWN0RmFjZXQoKS5nZXRWZXJzaW9ucygpOwotICAgICAgICBJdGVyYXRvciBpdHIgPSBhbGxWZXJzaW9ucy5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaXRyLmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIHRoaXNQZnYgPSAoSVByb2plY3RGYWNldFZlcnNpb24paXRyLm5leHQoKTsKLSAgICAgICAgICBTdHJpbmcgdGhpc1ZlcnNpb24gPSB0aGlzUGZ2LmdldFZlcnNpb25TdHJpbmcoKTsKLSAgICAgICAgICBpZiAoZ3JlYXRlclRoYW4odGhpc1ZlcnNpb24sIHZlcnNpb24pKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBlcm1pdHRlZEphdmFWZXJzaW9ucy5hZGQodGhpc1ZlcnNpb24pOwotICAgICAgICAgIH0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFN0cmluZ1tdIGphdmFWZXJzaW9ucyA9IChTdHJpbmdbXSlwZXJtaXR0ZWRKYXZhVmVyc2lvbnMudG9BcnJheShuZXcgU3RyaW5nWzBdKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoaW50IGo9MDsgajxqYXZhVmVyc2lvbnMubGVuZ3RoOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICBIYXNoU2V0IHRoaXNGYWNldFNldCA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgICAgICAgCi0gICAgICAgICAgZm9yIChpbnQgaz0wOyBrPHJlcXVpcmVkRmFjZXRWZXJzaW9ucy5sZW5ndGg7IGsrKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAgaWYgKGs9PWphdmFGYWNldEluZGV4KQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIHBmdiA9IHJlcXVpcmVkRmFjZXRWZXJzaW9uc1trXS5nZXRQcm9qZWN0RmFjZXRWZXJzaW9uKCkuZ2V0UHJvamVjdEZhY2V0KCkuZ2V0VmVyc2lvbihqYXZhVmVyc2lvbnNbal0pOwotICAgICAgICAgICAgICAgdGhpc0ZhY2V0U2V0LmFkZChwZnYpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gcGZ2ID0gcmVxdWlyZWRGYWNldFZlcnNpb25zW2tdLmdldFByb2plY3RGYWNldFZlcnNpb24oKTsKLSAgICAgICAgICAgICAgIHRoaXNGYWNldFNldC5hZGQocGZ2KTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIGxpc3RPZkZhY2V0U2V0cy5hZGQodGhpc0ZhY2V0U2V0KTsgICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy9SZXR1cm4gdGhlIHVuaW9uIG9mIHJ1bnRpbWVzIGZvciBhbGwgdGhlIGZhY2V0U2V0cy4KLSAgICByZXR1cm4gZ2V0UnVudGltZXMoKFNldFtdKWxpc3RPZkZhY2V0U2V0cy50b0FycmF5KG5ldyBTZXRbMF0pKTsKLSAgICAKLSAgfSAgCi0gIAotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgcHJvdmlkZWQgZmFjZXQgcnVudGltZSBzdXBwb3J0cyB0aGUgcHJvdmlkZWQKLSAgICogcmVxdWlyZWQgZmFjZXQgdmVyc2lvbnMuCi0gICAqIAotICAgKiBAcGFyYW0gcmVxdWlyZWRGYWNldFZlcnNpb25zIGFuIGFycmF5IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgUmVxdWlyZWRGYWNldFZlcnNpb259Ci0gICAqIEBwYXJhbSBmUnVudGltZU5hbWUgbmFtZSBvZiBhIHtAbGluayBJUnVudGltZX0KLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBmYWNldCBydW50aW1lIHN1cHBvcnRzIHRoZSByZXF1aXJlZCBmYWNldCB2ZXJzaW9ucy4KLSAgICogUmV0dXJucyA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzRmFjZXRSdW50aW1lU3VwcG9ydGVkKFJlcXVpcmVkRmFjZXRWZXJzaW9uW10gcmVxdWlyZWRGYWNldFZlcnNpb25zLCBTdHJpbmcgZlJ1bnRpbWVOYW1lKQotICB7Ci0gICAgU2V0IGZSdW50aW1lcyA9IGdldFJ1bnRpbWVzKHJlcXVpcmVkRmFjZXRWZXJzaW9ucyk7Ci0gICAgSXRlcmF0b3IgaXRyID0gZlJ1bnRpbWVzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgSVJ1bnRpbWUgcnVudGltZSA9IChJUnVudGltZSlpdHIubmV4dCgpOwotICAgICAgaWYgKHJ1bnRpbWUuZ2V0TmFtZSgpLmVxdWFscyhmUnVudGltZU5hbWUpKQotICAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0gICAgICAKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gICAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB1bmlvbiBvZiBmYWNldCBydW50aW1lcyB0aGF0IHN1cHBvcnQgdGhlIHByb3ZpZGVkIHNldHMgb2YgZmFjZXQgdmVyc2lvbnMuCi0gICAqIAotICAgKiBAcGFyYW0gZmFjZXRTZXRzIGFycmF5IG9mIFNldHMsIHdoZXJlIGVhY2ggU2V0IGNvbnRhaW5zIGVsZW1lbnRzIG9mIHR5cGUge0BsaW5rIElQcm9qZWN0RmFjZXRWZXJzaW9ufS4KLSAgICogQHJldHVybiBTZXQgY29udGFpbmluZyBlbGVtZW50cyBvZiB0eXBlIHtAbGluayBJUnVudGltZX0KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU2V0IGdldFJ1bnRpbWVzKFNldFtdIGZhY2V0U2V0cykgIAotICB7Ci0gICAgSGFzaFNldCB1bmlvblNldCA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgZm9yIChpbnQgaT0wOyBpPGZhY2V0U2V0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBTZXQgZmFjZXRzID0gZmFjZXRTZXRzW2ldOwotICAgICAgU2V0IHJ1bnRpbWVzID0gUnVudGltZU1hbmFnZXIuZ2V0UnVudGltZXMoZmFjZXRzKTsKLSAgICAgIEl0ZXJhdG9yIGl0ciA9IHJ1bnRpbWVzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXRyLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgSVJ1bnRpbWUgcnVudGltZSA9IChJUnVudGltZSlpdHIubmV4dCgpOwotICAgICAgICBpZiAoIXVuaW9uU2V0LmNvbnRhaW5zKHJ1bnRpbWUpKQotICAgICAgICB7Ci0gICAgICAgICAgdW5pb25TZXQuYWRkKHJ1bnRpbWUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB1bmlvblNldDsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHByb3ZpZGVkIGZhY2V0IHJ1bnRpbWUgc3VwcG9ydHMgdGhlIHByb3ZpZGVkIHNldCBvZiBmYWNldCB2ZXJzaW9ucy4KLSAgICogCi0gICAqIEBwYXJhbSBmYWNldFJ1bnRpbWUgYSBmYWNldCBydW50aW1lCi0gICAqIEBwYXJhbSBwcm9qZWN0RmFjZXRWZXJzaW9ucyBzZXQgY29udGFpbmluZyBlbGVtZW50cyBvZiB0eXBlIHtAbGluayBJUHJvamVjdEZhY2V0VmVyc2lvbn0KLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBmYWNldCBydW50aW1lIHN1cHBvcnRzIHRoZSBwcm92aWRlZCBzZXQgb2YgZmFjZXQgdmVyc2lvbnMuCi0gICAqIFJldHVybnMgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBkb2VzUnVudGltZVN1cHBvcnRGYWNldHMoSVJ1bnRpbWUgZmFjZXRSdW50aW1lLCBTZXQgcHJvamVjdEZhY2V0VmVyc2lvbnMpCi0gIHsKLSAgCWlmICggZmFjZXRSdW50aW1lID09IG51bGwgfHwgcHJvamVjdEZhY2V0VmVyc2lvbnMgPT0gbnVsbCkKLSAgCQlyZXR1cm4gZmFsc2U7Ci0gIAkKLSAgICBTZXQgcnVudGltZXMgPSBSdW50aW1lTWFuYWdlci5nZXRSdW50aW1lcyhwcm9qZWN0RmFjZXRWZXJzaW9ucyk7Ci0gICAgSXRlcmF0b3IgaXRyID0gcnVudGltZXMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRyLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBJUnVudGltZSBydW50aW1lID0gKElSdW50aW1lKWl0ci5uZXh0KCk7Ci0gICAgICBpZiAocnVudGltZS5nZXROYW1lKCkuZXF1YWxzKGZhY2V0UnVudGltZS5nZXROYW1lKCkpKQotICAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIHZlcnNpb25BIGlzIGdyZWF0ZXIgdGhhbiB2ZXJzaW9uQgotICAgKiAKLSAgICogQHBhcmFtIHZlcnNpb25BIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBmb3JtIDEuMi4zCi0gICAqIEBwYXJhbSB2ZXJzaW9uQSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZm9ybSAxLjIuMwotICAgKiBAcmV0dXJuIGJvb2xlYW4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdmVyc2lvbkEgaXMgZ3JlYXRlciB0aGFuIHZlcnNpb25CLCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGdyZWF0ZXJUaGFuKFN0cmluZyB2ZXJzaW9uQSwgU3RyaW5nIHZlcnNpb25CKQotICB7Ci0gIAlpZiAodmVyc2lvbkEgPT0gbnVsbCB8fCB2ZXJzaW9uQiA9PSBudWxsKQotICAJCXJldHVybiBmYWxzZTsKLSAgCQotICAgIFN0cmluZ1Rva2VuaXplciBzdEEgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHZlcnNpb25BLCAiLiIpOwotICAgIFN0cmluZ1Rva2VuaXplciBzdEIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHZlcnNpb25CLCAiLiIpOwotICAgIAotICAgIGludCBzaXplQSA9IHN0QS5jb3VudFRva2VucygpOwotICAgIGludCBzaXplQiA9IHN0Qi5jb3VudFRva2VucygpOwotICAgIAotICAgIGludCBzaXplOwotICAgIGlmIChzaXplQSA8IHNpemVCKQotICAgIHsKLSAgICAgIHNpemUgPSBzaXplQTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgc2l6ZSA9IHNpemVCOwotICAgIAotICAgIGZvciAoaW50IGk9MDsgaTxzaXplOyBpKyspCi0gICAgewotICAgICAgaW50IGEgPSBJbnRlZ2VyLnBhcnNlSW50KHN0QS5uZXh0VG9rZW4oKSk7Ci0gICAgICBpbnQgYiA9IEludGVnZXIucGFyc2VJbnQoc3RCLm5leHRUb2tlbigpKTsKLSAgICAgIGlmIChhIT1iKQotICAgICAgewotICAgICAgICByZXR1cm4gYSA+IGI7Ci0gICAgICB9ICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBzaXplQSA+IHNpemVCOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCBmYWNldCBoYXMgYW4gaWQgb2YgImpzdC5qYXZhIgotICAgKiBAcGFyYW0gcGYgZmFjZXQKLSAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBmYWNldCBoYXMgYW4gaWQgb2YgImpzdC5qYXZhIiwgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0phdmFGYWNldChJUHJvamVjdEZhY2V0IHBmKQotICB7Ci0gICAgaWYgKHBmICE9IG51bGwgJiYgcGYuZ2V0SWQoKS5lcXVhbHMoImpzdC5qYXZhIikpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBwcm92aWRlZCBwcm9qZWN0IGlzIGEgZmFjZXRlZCBKYXZhIHV0aWxpdHkgcHJvamVjdCBvciBhIG5vbi1mYWNldGVkIEphdmEgcHJvamVjdC4KLSAgICogCi0gICAqIEBwYXJhbSBwcm9qZWN0IGFuIElQcm9qZWN0Ci0gICAqIEByZXR1cm4gYm9vbGVhbiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgcHJvdmlkZWQgcHJvamVjdCBpcyBhIGZhY2V0ZWQgSmF2YSB1dGlsaXR5IHByb2plY3QgCi0gICAqIG9yIGEgbm9uLWZhY2V0ZWQgSmF2YSBwcm9qZWN0LCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzSmF2YVByb2plY3QoSVByb2plY3QgcHJvamVjdCkKLSAgewotCSAgaWYgKHByb2plY3QgPT0gbnVsbCkKLQkgICAgcmV0dXJuIGZhbHNlOwotCSAgCi0gICAgLy9DaGVjayBpZiBpdCdzIGEgZmFjZXRlZCBwcm9qZWN0Ci0gICAgdHJ5Ci0gICAgewotICAgICAgSUZhY2V0ZWRQcm9qZWN0IGZQcm9qZWN0ID0gUHJvamVjdEZhY2V0c01hbmFnZXIuY3JlYXRlKHByb2plY3QpOwotICAgICAgaWYgKGZQcm9qZWN0ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vUmV0dXJuIHRydWUgaWYgaXQncyBhIHV0aWxpdHkgcHJvamVjdAotICAgICAgICBpZiAoSjJFRVV0aWxzLmlzSmF2YUNvbXBvbmVudChwcm9qZWN0KSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vU2VlIGlmIHRoZSBqYXZhIGZhY2V0IGlzIHRoZSBvbmx5IG9uZSBpdCBoYXMuCi0gICAgICAgICAgU2V0IGZhY2V0cyA9IGZQcm9qZWN0LmdldFByb2plY3RGYWNldHMoKTsKLSAgICAgICAgICBpZiAoZmFjZXRzLnNpemUoKT09MSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiBwZnYgPSAoSVByb2plY3RGYWNldFZlcnNpb24pZmFjZXRzLml0ZXJhdG9yKCkubmV4dCgpOwotICAgICAgICAgICAgaWYgKGlzSmF2YUZhY2V0KHBmdi5nZXRQcm9qZWN0RmFjZXQoKSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoUmVzb3VyY2VVdGlscy5pc0phdmFQcm9qZWN0KHByb2plY3QpKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0gICAgICAgIAotICAgICAgfQotICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0gICAgewotICAgICAgCi0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgcHJvdmlkZWQgdGVtcGxhdGUgaWQgaXMgZXF1YWwgdG8gInRlbXBsYXRlLmpzdC51dGlsaXR5IgotICAgKiAKLSAgICogQHBhcmFtIHRlbXBsYXRlSWQgdGVtcGxhdGUgaWQKLSAgICogQHJldHVybiBib29sZWFuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBwcm92aWRlZCB0ZW1wbGF0ZSBpZCBpcyBlcXVhbCB0byAidGVtcGxhdGUuanN0LnV0aWxpdHkiLCAKLSAgICogPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1V0aWxpdHlUZW1wbGF0ZShTdHJpbmcgdGVtcGxhdGVJZCkKLSAgewotICAgIGlmICh0ZW1wbGF0ZUlkICE9IG51bGwgJiYgUHJvamVjdEZhY2V0c01hbmFnZXIuaXNUZW1wbGF0ZURlZmluZWQodGVtcGxhdGVJZCkpCi0gICAgewotICAgICAgaWYgKHRlbXBsYXRlSWQuZXF1YWxzKCJ0ZW1wbGF0ZS5qc3QudXRpbGl0eSIpKQotICAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gICAgICAKLSAgCS8qKgotICAJICogUmV0dXJucyB0aGUgcmVxdWlyZWQgZmFjZXQgdmVyc2lvbiBvZiBhIEVBUiB0aGF0IHNob3VsZCBjb250YWluIHRoZSBnaXZlbiBwcm9qZWN0LiAKLSAgCSAqIAotICAJICogQHBhcmFtIHByb2plY3QgVGhlIHByb2plY3QKLSAgCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgcmVxdWlyZWQgZmFjZXQgdmVyc2lvbnMuICBJZiBubyBjb25zdHJhaW50cyBjYW4gYmUgaW5mZXJyZWQgZnJvbSB0aGUKLSAgCSAqIHByb2plY3QsIGFuIGVtcHR5IGFycmF5IGlzIHJldHVybmVkLgotICAJICovCi0JcHVibGljIHN0YXRpYyBSZXF1aXJlZEZhY2V0VmVyc2lvbltdIGdldFJlcXVpcmVkRUFSRmFjZXRWZXJzaW9ucyhJUHJvamVjdCBwcm9qZWN0KSB7Ci0gIAkJCi0JCWludCB2ZXJzaW9uID0gMDsKLSAgCQkKLSAgCQlpZiAoSmF2YUVFUHJvamVjdFV0aWxpdGllcy5pc0R5bmFtaWNXZWJQcm9qZWN0KHByb2plY3QpKSB7Ci0gIAkJCQotICAJCQl2ZXJzaW9uID0gSjJFRVZlcnNpb25VdGlsLmNvbnZlcnRXZWJWZXJzaW9uU3RyaW5nVG9KMkVFVmVyc2lvbklEKAotICAJCQkJCUoyRUVQcm9qZWN0VXRpbGl0aWVzLmdldEoyRUVQcm9qZWN0VmVyc2lvbihwcm9qZWN0KSk7Ci0gIAkJfQotICAJCWVsc2UgaWYgKEphdmFFRVByb2plY3RVdGlsaXRpZXMuaXNFSkJQcm9qZWN0KHByb2plY3QpKSB7Ci0gIAkJCQotICAJCQl2ZXJzaW9uID0gSjJFRVZlcnNpb25VdGlsLmNvbnZlcnRFSkJWZXJzaW9uU3RyaW5nVG9KMkVFVmVyc2lvbklEKAotICAJCQkJCUoyRUVQcm9qZWN0VXRpbGl0aWVzLmdldEoyRUVQcm9qZWN0VmVyc2lvbihwcm9qZWN0KSk7Ci0gIAkJfQotICAJCWVsc2UgaWYgKEphdmFFRVByb2plY3RVdGlsaXRpZXMuaXNBcHBsaWNhdGlvbkNsaWVudFByb2plY3QocHJvamVjdCkpIHsKLSAgCQkJCi0gIAkJCXZlcnNpb24gPSBKMkVFVmVyc2lvblV0aWwuY29udmVydEFwcENsaWVudFZlcnNpb25TdHJpbmdUb0oyRUVWZXJzaW9uSUQoCi0gIAkJCQkJSjJFRVByb2plY3RVdGlsaXRpZXMuZ2V0SjJFRVByb2plY3RWZXJzaW9uKHByb2plY3QpKTsKLSAgCQl9Ci0gIAkJZWxzZQotICAJCQkvLyByZXR1cm4gZW1wdHkgYXJyYXksIG5vIGNvbnN0cmFpbnRzCi0gIAkJCXJldHVybiBuZXcgUmVxdWlyZWRGYWNldFZlcnNpb25bMF07Ci0JICAKLSAgCQlJUHJvamVjdEZhY2V0IHByb2plY3RGYWNldCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfRUFSX01PRFVMRSk7Ci0gIAkJSVByb2plY3RGYWNldFZlcnNpb24gcHJvamVjdEZhY2V0VmVyc2lvbiA9IHByb2plY3RGYWNldC5nZXRWZXJzaW9uKEoyRUVWZXJzaW9uVXRpbC5jb252ZXJ0VmVyc2lvbkludFRvU3RyaW5nKHZlcnNpb24pKTsKLQotICAJCVJlcXVpcmVkRmFjZXRWZXJzaW9uW10gcmZ2ID0gbmV3IFJlcXVpcmVkRmFjZXRWZXJzaW9uWzFdOwotICAJCXJmdlswXSA9IG5ldyBSZXF1aXJlZEZhY2V0VmVyc2lvbigpOwotICAJCXJmdlswXS5zZXRBbGxvd05ld2VyKGZhbHNlKTsJICAKLSAgCQlyZnZbMF0uc2V0UHJvamVjdEZhY2V0VmVyc2lvbihwcm9qZWN0RmFjZXRWZXJzaW9uKTsKLSAgCQkKLSAgCQlyZXR1cm4gcmZ2OwotICAJfQotCQotCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNFeHRlbnNpb25QcmVzZW50KCkgewotCQkKLQkJaWYgKGZhaWxlZFRvTG9hZERlbGVnYXRlKSB7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0gaWYgKGRlbGVnYXRlICE9IG51bGwpIHsKLQkJCXJldHVybiB0cnVlOwotCQl9Ci0JCUlFeHRlbnNpb25SZWdpc3RyeSByZWdpc3RyeSA9IFBsYXRmb3JtLmdldEV4dGVuc2lvblJlZ2lzdHJ5KCk7ICAKLQkJSUV4dGVuc2lvblBvaW50IHBvaW50ID0gcmVnaXN0cnkuZ2V0RXh0ZW5zaW9uUG9pbnQoIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbnRlcm5hbEZhY2V0T3BlcmF0aW9uRGVsZWdhdGUiKTsKLQkJaWYgKHBvaW50ID09IG51bGwpIHsKLQkJCWZhaWxlZFRvTG9hZERlbGVnYXRlID0gdHJ1ZTsKLQkJCXJldHVybiBmYWxzZTsKLQkJfQotCQlJRXh0ZW5zaW9uW10gZXh0ZW5zaW9ucyA9IHBvaW50LmdldEV4dGVuc2lvbnMoKTsKLQotCQkvL3RoaXMgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsLCB3ZSBrbm93IHRoZXJlIHdpbGwgb25seSBiZSB6ZXJvIG9yIG9uZSBwbHVnZ2VkIGluCi0JCWlmIChleHRlbnNpb25zLmxlbmd0aCA+IDAgJiYgZXh0ZW5zaW9uc1swXSAhPSBudWxsKSB7Ci0JCQlJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBlbGVtZW50cyA9IGV4dGVuc2lvbnNbMF0uZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzKCk7Ci0JCQlpZiAoZWxlbWVudHMubGVuZ3RoID4gMCAmJiBlbGVtZW50c1swXSAhPSBudWxsKSB7Ci0JCQkJdHJ5IHsKLQkJCQkJZGVsZWdhdGUgPSAoSUZhY2V0T3BlcmF0aW9uRGVsZWdhdGUpZWxlbWVudHNbMF0uY3JlYXRlRXhlY3V0YWJsZUV4dGVuc2lvbigiY2xhc3MiKTsKLQkJCQkJcmV0dXJuIHRydWU7Ci0JCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQkJCS8vZG8gbm90aGluZywganVzdCByZXBvcnQgdGhhdCB3ZSBmYWlsZWQgdG8gbG9hZCB0aGUgZXh0ZW5zaW9uCi0JCQkJfQotCQkJfQotCQl9Ci0JCWZhaWxlZFRvTG9hZERlbGVnYXRlID0gdHJ1ZTsvL3NldCB0aGlzIHNvIHdlIGRvbid0IHRyeSB0byBsb2FkIGl0IGFnYWluCi0JCXJldHVybiBmYWxzZTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1vbi9Gb2xkZXJSZXNvdXJjZUZpbHRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vRm9sZGVyUmVzb3VyY2VGaWx0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JlYzgzMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1vbi9Gb2xkZXJSZXNvdXJjZUZpbHRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uQW55RmlsdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLQotLyoqCi0qIFRoaXMgaXMgYSBraW5kIG9mIEZpbHRlciB0aGF0IGFjY2VwdHMgb25seSBvYmplY3RzCi0qIHdoaWNoIGluZGljYXRlIGEgSmF2YSByZXNvdXJjZS4gSW4gcGFydGljdWxhciwgYW55Ci0qIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2V9IHdob3NlCi0qIHBhdGhuYW1lLCBvciBhbnkgb2JqZWN0IHdob3NlIHN0cmluZyByZXByZXNlbnRhdGlvbiBhcwotKiByZXR1cm5lZCBieSA8Y29kZT50b1N0cmluZygpPC9jb2RlPiwgZW5kcyBpbgotKiAiPGNvZGU+LmphdmE8L2NvZGU+IiBvciAiPGNvZGU+LmNsYXNzPC9jb2RlPiIgd2lsbCBiZSBhY2NlcHRlZC4KLSogQWxsIG90aGVyIG9iamVjdHMgd2lsbCBiZSByZWplY3RlZC4KLSovCi1wdWJsaWMgY2xhc3MgRm9sZGVyUmVzb3VyY2VGaWx0ZXIgZXh0ZW5kcyBBbnlGaWx0ZXIKLXsKLQotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPkphdmFSZXNvdXJjZUZpbHRlcjwvY29kZT4gdGhhdCBmaWx0ZXJzCi0gICogIjxjb2RlPi5qYXZhPC9jb2RlPiIgYW5kICI8Y29kZT4uY2xhc3M8L2NvZGU+IiBvYmplY3RzLgotICAqIEVxdWl2YWxlbnQgdG8gPGNvZGU+SmF2YVJlc291cmNlRmlsdGVyKEFMTF9GSUxFUyk8L2NvZGU+LgotICAqLwotICBwdWJsaWMgRm9sZGVyUmVzb3VyY2VGaWx0ZXIgKCkgeyB9Ci0KLSAvKioKLSAgKiBSZXR1cm5zIHRoZSBsb2NhbGUtc3BlY2lmaWMgbmFtZSBvZiB0aGlzIGZpbHRlci4KLSAgKiBAcmV0dXJuIFRoZSBsb2NhbGUtc3BlY2lmaWMgbmFtZSBvZiB0aGlzIGZpbHRlci4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lICgpCi0gIHsKLSAgICByZXR1cm4gQ29uc3VtcHRpb25NZXNzYWdlcy5GT0xERVJfRklMVEVSX05BTUU7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBsb2NhbGUtc3BlY2lmaWMgZGVzY3JpcHRpb24gb2YgdGhpcyBmaWx0ZXIuCi0gICogQHJldHVybiBUaGUgbG9jYWxlLXNwZWNpZmljIGRlc2NyaXB0aW9uIG9mIHRoaXMgZmlsdGVyLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uICgpCi0gIHsKLSAgICByZXR1cm4gQ29uc3VtcHRpb25NZXNzYWdlcy5GT0xERVJfRklMVEVSX0RFU0M7Ci0gIH0KLQotIHB1YmxpYyBJU3RhdHVzIHN0YXR1c09mICggT2JqZWN0IG9iamVjdCApCi0gIHsKLSAgICBpZiAob2JqZWN0ID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIG5ldyBTdGF0dXMoCi0gICAgICAgIElTdGF0dXMuRVJST1IsCi0gICAgICAgIFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5JRCwKLSAgICAgICAgMCwKLSAgICAgICAgQ29uc3VtcHRpb25NZXNzYWdlcy5GSUxURVJfTVNHX0VSUk9SX05VTExfT0JKRUNULAotICAgICAgICBudWxsCi0gICAgICApOwotICAgIH0KLQotICAgIFN0cmluZyBuYW1lID0gbnVsbDsKLQotICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBJUmVzb3VyY2UpCi0gICAgewotICAgICAgSVJlc291cmNlIHJlc291cmNlID0gKElSZXNvdXJjZSlvYmplY3Q7Ci0gICAgICBuYW1lID0gcmVzb3VyY2UuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpOwotICAgICAgaWYgKHJlc291cmNlLmdldFR5cGUoKSAhPSBJUmVzb3VyY2UuRk9MREVSKQotICAgICAgewotICAgICAgICByZXR1cm4gbmV3IFN0YXR1cygKLSAgICAgICAgICBJU3RhdHVzLkVSUk9SLAotICAgICAgICAgIFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5JRCwKLSAgICAgICAgICAwLAotICAgICAgICAgIE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuRklMVEVSX01TR19FUlJPUl9OT1RfRk9MREVSLG5ldyBPYmplY3RbXSB7bmFtZX0pLAotICAgICAgICAgIG51bGwKLSAgICAgICAgKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBTdGF0dXMoSVN0YXR1cy5PSyxXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsMCwiIixudWxsKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vSUZhY2V0T3BlcmF0aW9uRGVsZWdhdGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL0lGYWNldE9wZXJhdGlvbkRlbGVnYXRlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNmE2OWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vSUZhY2V0T3BlcmF0aW9uRGVsZWdhdGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA5MDMwMyAgIDI0MjYzNSBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24sIFJlbW92ZSB1bm5lY2Vzc2FyeSBVSSBkZXBlbmRlbmNpZXMgZnJvbSBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uOwotCi1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklGYWNldGVkUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JUHJvamVjdEZhY2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklQcm9qZWN0RmFjZXRWZXJzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnJ1bnRpbWUuSVJ1bnRpbWU7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSUZhY2V0T3BlcmF0aW9uRGVsZWdhdGUgewotCi0JLyoqCi0JICAqIEFkZHMgdGhlIHByb3ZpZGVkIHNldCBvZiBmYWNldCB2ZXJzaW9ucyB0byB0aGUgcHJvdmlkZWQgZmFjZXRlZCBwcm9qZWN0Ci0JICAqIAotCSAgKiBAcGFyYW0gZnByb2plY3QgQSBmYWNldGVkIHByb2plY3Qgd2hpY2ggZXhpc3RzIGluIHRoZSB3b3Jrc3BhY2UKLQkgICogQHBhcmFtIHByb2plY3RGYWNldFZlcnNpb25zIEEgc2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgb2YgdHlwZSB7QGxpbmsgSVByb2plY3RGYWNldFZlcnNpb259Ci0JICAqIEByZXR1cm4gQW4gSVN0YXR1cyB3aXRoIGEgc2V2ZXJpdHkgb2YgSVN0YXR1cy5PSyBpZiB0aGUgZmFjZXQgCi0JICAqIHZlcnNpb25zIHdlcmUgYWRkZWQgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIGFuIElTdGF0dXMgd2l0aCBhIHNldmVyaXR5IG9mCi0JICAqIElTdGF0dXMuRVJST1IuIAotCSAgKi8KLQkgcHVibGljIElTdGF0dXMgYWRkRmFjZXRzVG9Qcm9qZWN0KGZpbmFsIElGYWNldGVkUHJvamVjdCBmcHJvamVjdCwgZmluYWwgU2V0IHByb2plY3RGYWNldFZlcnNpb25zKTsKLQkgCi0JIC8qKgotCSAgICogQ3JlYXRlcyBhIG5ldyBmYWNldGVkIHByb2plY3Qgd2l0aCB0aGUgcHJvdmlkZWQgbmFtZQotCSAgICogCi0JICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgQSBTdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCB0byBiZSBjcmVhdGVkCi0JICAgKiBAcmV0dXJuIEFuIElTdGF0dXMgd2l0aCBhIHNldmVyaXR5IG9mIElTdGF0dXMuT0sgaWYgdGhlIGZhY2V0ZWQgcHJvamVjdAotCSAgICogd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IG9yIGlmIGEgcHJvamVjdCBvZiB0aGUgcHJvdmlkZWQgbmFtZSBhbHJlYWR5Ci0JICAgKiBleGlzdHMgaW4gdGhlIHdvcmtzcGFjZS4gT3RoZXJ3aXNlLCBhbiBJU3RhdHVzIHdpdGggc2V2ZXJpdHkgb2YKLQkgICAqIElTdGF0dXMuRVJST1IuIAotCSAgICovCi0JICBwdWJsaWMgSVN0YXR1cyBjcmVhdGVOZXdGYWNldGVkUHJvamVjdChmaW5hbCBTdHJpbmcgcHJvamVjdE5hbWUpOwotCSAgCi0JICAvKioKLQkgICAqIFNldHMgdGhlIHByb3ZpZGVkIHNldCBvZiBmYWNldHMgYXMgZml4ZWQgb24gdGhlIGZhY2V0ZWQgcHJvamVjdAotCSAgICogCi0JICAgKiBAcGFyYW0gZlByb2plY3QgQSBmYWNldGVkIHByb2plY3Qgd2hpY2ggZXhpc3RzIGluIHRoZSB3b3Jrc3BhY2UKLQkgICAqIEBwYXJhbSBmaXhlZEZhY2V0cyBBIHNldCBjb250YWluaW5nIGVsZW1lbnRzIG9mIHR5cGUge0BsaW5rIElQcm9qZWN0RmFjZXR9Ci0JICAgKiBAcmV0dXJuIEFuIElTdGF0dXMgd2l0aCBhIHNldmVyaXR5IG9mIElTdGF0dXMuT0sgaWYgdGhlIGZhY2V0cyAKLQkgICAqIHdlcmUgc3VjY2Vzc2Z1bGx5IHNldCBhcyBmaXhlZCBmYWNldHMgb24gdGhlIGZhY2V0ZWQgcHJvamVjdC4gCi0JICAgKiBPdGhlcndpc2UsIGFuIElTdGF0dXMgd2l0aCBhIHNldmVyaXR5IG9mIElTdGF0dXMuRVJST1IuCi0JICAgKiAKLQkgICAqIEBzZWUgSUZhY2V0ZWRQcm9qZWN0I3NldEZpeGVkUHJvamVjdEZhY2V0cwotCSAgICovCi0JICBwdWJsaWMgSVN0YXR1cyBzZXRGaXhlZEZhY2V0c09uUHJvamVjdChmaW5hbCBJRmFjZXRlZFByb2plY3QgZlByb2plY3QsIGZpbmFsIFNldCBmaXhlZEZhY2V0cyk7Ci0JICAKLQkgIC8qKgotCSAgICogQmluZHMgdGhlIGZhY2V0ZWQgcHJvamVjdCB0byB0aGUgZmFjZXQgcnVudGltZQotCSAgICogCi0JICAgKiBAcGFyYW0gZlByb2plY3QgQSBmYWNldGVkIHByb2plY3Qgd2hpY2ggZXhpc3RzIGluIHRoZSB3b3Jrc3BhY2UKLQkgICAqIEBwYXJhbSBmUnVudGltZSBBIGZhY2V0IHJ1bnRpbWUKLQkgICAqIEByZXR1cm4gQW4gSVN0YXR1cyB3aXRoIGEgc2V2ZXJpdHkgb2YgSVN0YXR1cy5PSyBpZiB0aGUgZmFjZXRlZCBwcm9qZWN0Ci0JICAgKiB3YXMgYm91bmQgdG8gdGhlIGZhY2V0IHJ1bnRpbWUgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIGFuIElTdGF0dXMgd2l0aCBzZXZlcml0eSBvZgotCSAgICogSVN0YXR1cy5FUlJPUi4gCi0JICAgKi8KLQkgIHB1YmxpYyBJU3RhdHVzIHNldEZhY2V0UnVudGltZU9uUHJvamVjdChmaW5hbCBJRmFjZXRlZFByb2plY3QgZlByb2plY3QsIGZpbmFsIElSdW50aW1lIGZSdW50aW1lKTsKLQkKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL0lTZXJ2ZXJEZWZhdWx0ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL0lTZXJ2ZXJEZWZhdWx0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMxZjFkOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1vbi9JU2VydmVyRGVmYXVsdGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotCi0KLS8qKgotICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIHByb3ZpZGUgbG9naWMgdGhhdCBjYW4gYmUgcGx1Z2dlZCBpbnRvCi0gKiB0aGUgc2VydmVyIGRlZmF1bHRpbmcgYWxnb3JpdGhtLiAKLSAqIChTZWUgdGhlIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5zZXJ2ZXJEZWZhdWx0ZXIgZXh0ZW5zaW9uIHBvaW50KSAgCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVNlcnZlckRlZmF1bHRlcgotewotICAKLSAgLyoqCi0gICAqIEBwYXJhbSBwcm9qZWN0Ci0gICAqIEByZXR1cm4gU2VydmVySW5mby4gCi0gICAqIElmIG5vIGV4aXN0aW5nIHNlcnZlciBvciBzZXJ2ZXIgdHlwZSBpcyByZWNvbW1lbmRlZCwgcmV0dXJuIG51bGwuCi0gICAqIElmIGEgc2VydmVyIHR5cGUgaXMgcmVjb21tZW5kZWQsIHJldHVybiBhbiBpbnN0YW5jZSBvZiBTZXJ2ZXJJbmZvIHdpdGggYSBub24tbnVsbAotICAgKiBub24tZW1wdHkgU3RyaW5nIGZvciB0aGUgc2VydmVyRmFjdG9yeUlkIGFuZCBudWxsIGZvciB0aGUgc2VydmVySW5zdGFuY2VJZC4KLSAgICogSWYgYSBzZXJ2ZXIgaW5zdGFuY2UgaXMgcmVjb21tZW5kZWQsIHJldHVybiBhbiBpbnN0YW5jZSBvZiBTZXJ2ZXJJbmZvIHdpdGggYSBub24tbnVsbAotICAgKiBub24tZW1wdHkgU3RyaW5nIGZvciB0aGUgc2VydmVyRmFjdG9yeUlkIGFuZCB0aGUgc2VydmVySW5zdGFuY2VJZC4KLSAgICovCi0gIHB1YmxpYyBTZXJ2ZXJJbmZvIHJlY29tbWVuZERlZmF1bHRTZXJ2ZXIoSVByb2plY3QgcHJvamVjdCk7Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vSmF2YU1lcmdlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vSmF2YU1lcmdlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzQ5M2I4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL0phdmFNZXJnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA1MDkgICAxODIyNzQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMTIyICAgMjE1MDQ4IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDYxMyAgIDIzNjUyMyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgT3ZlcndyaXRlIHNldHRpbmcgb24gV2ViIHNlcnZpY2Ugd2l6YXJkIGlzIGNvdXBsZWQgd2l0aCBwcmVmZXJlbmNlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbjsKLQotaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuLm1lcmdlLmphdmEuSkNvbnRyb2xNb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29kZWdlbi5tZXJnZS5qYXZhLkpNZXJnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW4ubWVyZ2UuamF2YS5mYWNhZGUuRmFjYWRlSGVscGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuLnV0aWwuQ29kZUdlblV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbW9uLkZpbGVSZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlRyYW5zaWVudFJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklTdGF0dXNIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRNZXJnZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSU1lcmdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5NZXJnZXI7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZTsKLQotLyoKLSAqIEphdmFNZXJnZXIgaGFuZGxlcyB0aGUgbWVyZ2luZyBvZiB3b3Jrc3BhY2UgZmlsZXMgdXNpbmcgSk1lcmdlci4gIElmIHRoZSBVUklzIHNwZWNpZmllZCBpcyBub3QgYSBmaWxlCi0gKiBpbiB0aGUgd29ya3NwYWNlLCBpdCB3aWxsIGJlIGlnbm9yZWQuCi0gKi8KLXB1YmxpYyBjbGFzcyBKYXZhTWVyZ2VyIGV4dGVuZHMgTWVyZ2VyIGltcGxlbWVudHMgSU1lcmdlciB7Ci0KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NUX1dTID0gIm9yZy5lY2xpcHNlLndzdC53cyI7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1FUkdFX1hNTCA9ICJtZXJnZS54bWwiOwotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBKTUVSR0VSID0gImptZXJnZXIiOwotCQotCXByaXZhdGUgaW50IHNpemUgPSAwOyAKLQlwcml2YXRlIElGaWxlW10gd29ya3NwYWNlRmlsZXM7Ci0JcHJpdmF0ZSBKTWVyZ2VyW10gbWVyZ2VNb2RlbHM7Ci0JcHJpdmF0ZSBKQ29udHJvbE1vZGVsIGpNZXJnZUNvbnRyb2xNb2RlbCA9IG51bGw7Ci0JcHJpdmF0ZSBJU3RhdHVzIGxvYWRTdGF0dXM7Ci0JCi0JCi0JLyoKLQkgKiBDb252ZXJ0IHRoZSBVUkkgc3RyaW5ncyBpbiB0aGUgdXJpcyBhcnJheSB0byBFY2xpcHNlIElGaWxlcyBhbmQgc3RvcmUgaW4gdGhlIHdvcmtzcGFjZUZpbGVzIGFycmF5LiAKLQkgKiBMb2FkIHRoZSB3b3Jrc3BhY2VGaWxlcyBpbnRvIEpNZXJnZXIgYW5kIHN0b3JlIGluIHRoZSBtZXJnZXJNb2RlbHMgYXJyYXkuICAKLQkgKiBJZiB0aGUgbWVyZ2VyIG1vZGVsIGNhbm5vdCBiZSBvYnRhaW5lZCwgbnVsbCBpcyBzdG9yZWQgaW4gdGhlIG1lcmdlck1vZGVscy4gCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JTWVyZ2VyI2xvYWQoamF2YS5sYW5nLlN0cmluZ1tdKQotCSAqLwotCQotCXB1YmxpYyBJU3RhdHVzIGxvYWQoSUZpbGVbXSBmaWxlcykgewotCQkKLQkJbG9hZFN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JCWlmIChmaWxlcyAhPSBudWxsKSB7Ci0JCQl3b3Jrc3BhY2VGaWxlcyA9IGZpbGVzOwotCQkJUGVyc2lzdGVudE1lcmdlQ29udGV4dCBtZXJnZUNvbnRleHQgPSBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldE1lcmdlQ29udGV4dCgpOwotCQkJaWYgKG1lcmdlQ29udGV4dC5pc1NrZWxldG9uTWVyZ2VFbmFibGVkKCkpIHsKLQkJCQkvLyBpbml0aWFsaXplIEpNZXJnZXIKLQkJCQlpbml0aWFsaXplKCk7Ci0JCQkJCi0JCQkJaWYgKGpNZXJnZUNvbnRyb2xNb2RlbCAhPSBudWxsKSB7Ci0JCQkJCS8vIEpNZXJnZXIgaW5pdGlhbGl6ZWQgcHJvcGVybHkKLQkJCQkJc2l6ZSA9IGZpbGVzLmxlbmd0aDsKLQkJCQkJbWVyZ2VNb2RlbHMgPSBuZXcgSk1lcmdlcltzaXplXTsKLQkJCQkJCi0JCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0JCQkJCQlKTWVyZ2VyIGpNZXJnZXIgPSBudWxsOwotCQkJCQkJSUZpbGUgZmlsZSA9IG51bGw7Ci0JCQkJCQlJbnB1dFN0cmVhbSBpblN0cmVhbSA9IG51bGw7Ci0JCQkJCQkKLQkJCQkJCWZpbGUgPSBmaWxlc1tpXTsKLQkJCQkJCWlmIChmaWxlICE9IG51bGwgJiYgZmlsZS5leGlzdHMoKSkgewkJCQkJCQkJCQkJCQkJCi0JCQkJCQkJdHJ5IHsKLQkJCQkJCQkJaW5TdHJlYW0gPSBmaWxlLmdldENvbnRlbnRzKCk7Ci0JCQkJCQkJCWlmIChpblN0cmVhbSAhPSBudWxsKSB7Ci0JCQkJCQkJCQlqTWVyZ2VyID0gbmV3IEpNZXJnZXIoak1lcmdlQ29udHJvbE1vZGVsKTsKLQkJCQkJCQkJCWpNZXJnZXIuc2V0VGFyZ2V0Q29tcGlsYXRpb25Vbml0KGpNZXJnZXIuY3JlYXRlQ29tcGlsYXRpb25Vbml0Rm9ySW5wdXRTdHJlYW0oaW5TdHJlYW0pKTsKLQkJCQkJCQkJfQotCQkJCQkJCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotCQkJCQkJCQlsb2FkU3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25NZXNzYWdlcy5NU0dfRVJST1JfRklMRV9NRVJHRV9MT0FELCBmaWxlKSwgZSk7Ci0JCQkJCQkJfSBmaW5hbGx5IHsKLQkJCQkJCQkJaWYgKGluU3RyZWFtICE9IG51bGwpIHsKLQkJCQkJCQkJCXRyeSB7Ci0JCQkJCQkJCQkJaW5TdHJlYW0uY2xvc2UoKTsKLQkJCQkJCQkJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKLQkJCQkJCQkJCQkvLyBpZ25vcmUgZXhjZXB0aW9ucyBpbiBjbG9zaW5nIGZpbGUKLQkJCQkJCQkJCX0KLQkJCQkJCQkJfQotCQkJCQkJCX0JCQkJCi0JCQkJCQl9Ci0JCQkJCQltZXJnZU1vZGVsc1tpXSA9IGpNZXJnZXI7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGxvYWRTdGF0dXM7Ci0JfQotCi0JLyoqCi0JICogSW5pdGlhbGl6ZXMgdGhlIEpNZXJnZSBtb2RlbAotCSAqIEZpbGUgbWVyZ2UueG1sIGluIFdlYlNlcnZpY2VQbHVnaW4gY29udGFpbnMgdGhlIHJ1bGVzIGZvciB0aGUgbWVyZ2UuCi0JICogSWYgdGhlIG1lcmdlLnhtbCBmaWxlIGlzIG5vdCBmb3VuZCwgak1lcmdlQ29udHJvbE1vZGVsIGlzIGxlYXZlIGFzIG51bGwuCi0JICovCi0JcHJpdmF0ZSB2b2lkIGluaXRpYWxpemUoKSB7Ci0JCWlmIChqTWVyZ2VDb250cm9sTW9kZWwgPT0gbnVsbCkgewotCQkJRmFjYWRlSGVscGVyIGZhY2FkZUhlbHBlciA9IENvZGVHZW5VdGlsLmluc3RhbnRpYXRlRmFjYWRlSGVscGVyKEpNZXJnZXIuREVGQVVMVF9GQUNBREVfSEVMUEVSX0NMQVNTKTsKLQkJCWpNZXJnZUNvbnRyb2xNb2RlbCA9IG5ldyBKQ29udHJvbE1vZGVsKCk7Ci0KLQkJCUJ1bmRsZSAgICAgICAgd3NCdW5kbGUgPSBQbGF0Zm9ybS5nZXRCdW5kbGUoV1NUX1dTKTsKLQkJCUlQYXRoICAgICAgICAgbWVyZ2VQYXRoICAgICAgPSBuZXcgUGF0aCggSk1FUkdFUiApLmFwcGVuZCggTUVSR0VfWE1MICk7Ci0JCQlVUkwgICAgICAgICAgIGZpbGVVUkwgICAgICAgID0gRmlsZUxvY2F0b3IuZmluZCggd3NCdW5kbGUsIG1lcmdlUGF0aCwgbnVsbCk7Ci0JCQlqTWVyZ2VDb250cm9sTW9kZWwuaW5pdGlhbGl6ZShmYWNhZGVIZWxwZXIsIGZpbGVVUkwudG9TdHJpbmcoKSk7Ci0JCX0KLQkJcmV0dXJuOwotCX0KLQkKLQkvKioKLQkgKiBNZXJnZSB0aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgd29ya3NwYWNlRmlsZXMgd2l0aCB0aGUgbWVyZ2VNb2RlbHMgdGhhdCBoYWQgYmVlbiBzdG9yZWQgZWFybGllci4gICAKLQkgKiBUaGVuIHdyaXRlIHRoZSBtZXJnZWQgY29udGVudHMgYmFjayB0byB0aGUgZmlsZS4KLQkgKiBAcGFyYW0gbW9uaXRvcgotCSAqIEBwYXJhbSBzdGF0dXNIYW5kbGVyCi0JICogQHJldHVybiBJU3RhdHVzCi0JICovCi0JcHVibGljIElTdGF0dXMgbWVyZ2UoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyKSB7Ci0JCQotCQlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JCQotCQlpZiAobG9hZFN0YXR1cyAhPSBudWxsICYmIGxvYWRTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLkVSUk9SKSB7Ci0JCQlyZXR1cm4gbG9hZFN0YXR1czsKLQkJfQotCQkKLQkJUGVyc2lzdGVudE1lcmdlQ29udGV4dCBtZXJnZUNvbnRleHQgPSBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldE1lcmdlQ29udGV4dCgpOwotCQlpZiAobWVyZ2VDb250ZXh0LmlzU2tlbGV0b25NZXJnZUVuYWJsZWQoKSkgewotCQkJUmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dCA9IG5ldyBUcmFuc2llbnRSZXNvdXJjZUNvbnRleHQoKTsKLQkJCXJlc291cmNlQ29udGV4dC5zZXRDaGVja291dEZpbGVzRW5hYmxlZCh0cnVlKTsKLQkJCXJlc291cmNlQ29udGV4dC5zZXRDcmVhdGVGb2xkZXJzRW5hYmxlZCh0cnVlKTsKLQkJCXJlc291cmNlQ29udGV4dC5zZXRPdmVyd3JpdGVGaWxlc0VuYWJsZWQodHJ1ZSk7Ci0JCQlmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotCQkJCVN0cmluZyBtZXJnZWRDb250ZW50ID0gbnVsbDsKLQkJCQlKTWVyZ2VyIGpNZXJnZXIgPSBudWxsOwotCQkJCUlGaWxlIGZpbGUgPSBudWxsOwotCQkJCUlucHV0U3RyZWFtIGluU3RyZWFtID0gbnVsbDsKLQkJCQlieXRlW10gYnVmID0gbnVsbDsKLQkJCQkKLQkJCQlqTWVyZ2VyID0gbWVyZ2VNb2RlbHNbaV07Ci0JCQkJZmlsZSA9IHdvcmtzcGFjZUZpbGVzW2ldOwotCQkJCWlmIChmaWxlICE9IG51bGwgJiYgak1lcmdlciAhPSBudWxsICYmIGZpbGUuZXhpc3RzKCkpIHsgIAotCQkJCQkvLyBhIEpNZXJnZXIgbW9kZWwgb2YgdGhlIGZpbGUgZXhpc3RzLCBtZXJnZSB0aGUgY29udGVudHMKLQkJCQkJdHJ5IHsKLQkJCQkJCWluU3RyZWFtID0gZmlsZS5nZXRDb250ZW50cygpOwotCQkJCQkJak1lcmdlci5zZXRTb3VyY2VDb21waWxhdGlvblVuaXQoak1lcmdlci5jcmVhdGVDb21waWxhdGlvblVuaXRGb3JJbnB1dFN0cmVhbShpblN0cmVhbSkpOwotCQkJCQkJak1lcmdlci5tZXJnZSgpOwotCQkJCQkJbWVyZ2VkQ29udGVudCA9IGpNZXJnZXIuZ2V0VGFyZ2V0Q29tcGlsYXRpb25Vbml0Q29udGVudHMoKTsJCi0JCQkJCQlpZiAobWVyZ2VkQ29udGVudCAhPSBudWxsKSB7Ci0JCQkJCQkJdHJ5IHsKLQkJCQkJCQkJYnVmID0gbWVyZ2VkQ29udGVudC5nZXRCeXRlcyhmaWxlLmdldENoYXJzZXQoKSk7Ci0JCQkJCQkJfSBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKSB7Ci0JCQkJCQkJCWJ1ZiA9IG1lcmdlZENvbnRlbnQuZ2V0Qnl0ZXMoKTsKLQkJCQkJCQl9Ci0JCQkJCQkJaW5TdHJlYW0gPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnVmKTsKLQkJCQkJCQlJUGF0aCB0YXJnZXRQYXRoID0gZmlsZS5nZXRMb2NhdGlvbigpOwotCQkJCQkJCWlmICh0YXJnZXRQYXRoICE9IG51bGwpIHsKLQkJCQkJCQkJRmlsZVJlc291cmNlVXRpbHMuY3JlYXRlRmlsZUF0TG9jYXRpb24ocmVzb3VyY2VDb250ZXh0LCB0YXJnZXRQYXRoLm1ha2VBYnNvbHV0ZSgpLCBpblN0cmVhbSwKLQkJCQkJCQkJCSAgbW9uaXRvciwgc3RhdHVzSGFuZGxlcik7Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQl9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLQkJCQkJCXN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX0ZJTEVfTUVSR0UsIGZpbGUpLCBlKTsKLQkJCQkJfSBmaW5hbGx5IHsKLQkJCQkJCXRyeSB7Ci0JCQkJCQkJaWYgKGluU3RyZWFtICE9IG51bGwpIHsKLQkJCQkJCQkJaW5TdHJlYW0uY2xvc2UoKTsKLQkJCQkJCQl9Ci0JCQkJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JCQkJCQkJLy8gaWdub3JlIGV4Y2VwdGlvbnMgaW4gY2xvc2luZyBmaWxlCi0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCQkKLQkJfQotCQlyZXR1cm4gc3RhdHVzOwotCX0KLQkKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL0phdmFSZXNvdXJjZUZpbHRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vSmF2YVJlc291cmNlRmlsdGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NGRhMjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vSmF2YVJlc291cmNlRmlsdGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uQW55RmlsdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5Db25zdW1wdGlvbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLQotLyoqCi0qIFRoaXMgaXMgYSBraW5kIG9mIEZpbHRlciB0aGF0IGFjY2VwdHMgb25seSBvYmplY3RzCi0qIHdoaWNoIGluZGljYXRlIGEgSmF2YSByZXNvdXJjZS4gSW4gcGFydGljdWxhciwgYW55Ci0qIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2V9IHdob3NlCi0qIHBhdGhuYW1lLCBvciBhbnkgb2JqZWN0IHdob3NlIHN0cmluZyByZXByZXNlbnRhdGlvbiBhcwotKiByZXR1cm5lZCBieSA8Y29kZT50b1N0cmluZygpPC9jb2RlPiwgZW5kcyBpbgotKiAiPGNvZGU+LmphdmE8L2NvZGU+IiBvciAiPGNvZGU+LmNsYXNzPC9jb2RlPiIgd2lsbCBiZSBhY2NlcHRlZC4KLSogQWxsIG90aGVyIG9iamVjdHMgd2lsbCBiZSByZWplY3RlZC4KLSovCi1wdWJsaWMgY2xhc3MgSmF2YVJlc291cmNlRmlsdGVyIGV4dGVuZHMgQW55RmlsdGVyCi17Ci0KLSAgLyoqCi0gICogQSA8Y29kZT5KYXZhUmVzb3VyY2VGaWx0ZXI8L2NvZGU+IGNvbnN0cnVjdGVkIHdpdGggdGhpcyB2YWx1ZSB3aWxsCi0gICogYWNjZXB0ICI8Y29kZT4uamF2YTwvY29kZT4iLCBidXQgbm90ICI8Y29kZT4uY2xhc3M8L2NvZGU+Iiwgb2JqZWN0cy4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIEpBVkFfRklMRVMgPSAoYnl0ZSkxOwotCi0gIC8qKgotICAqIEEgPGNvZGU+SmF2YVJlc291cmNlRmlsdGVyPC9jb2RlPiBjb25zdHJ1Y3RlZCB3aXRoIHRoaXMgdmFsdWUgd2lsbAotICAqIGFjY2VwdCAiPGNvZGU+LmNsYXNzPC9jb2RlPiIsIGJ1dCBub3QgIjxjb2RlPi5qYXZhPC9jb2RlPiIsIG9iamVjdHMuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBDTEFTU19GSUxFUyA9IChieXRlKTI7Ci0KLSAgLyoqCi0gICogQSA8Y29kZT5KYXZhUmVzb3VyY2VGaWx0ZXI8L2NvZGU+IGNvbnN0cnVjdGVkIHdpdGggdGhpcyB2YWx1ZSB3aWxsCi0gICogYWNjZXB0IGJvdGggIjxjb2RlPi5qYXZhPC9jb2RlPiIgYW5kICI8Y29kZT4uY2xhc3M8L2NvZGU+IiBvYmplY3RzLgotICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgQUxMX0ZJTEVTID0gKGJ5dGUpMjU1OwotCi0gIHByaXZhdGUgYnl0ZSBleHRlbnNpb25zXzsKLQotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPkphdmFSZXNvdXJjZUZpbHRlcjwvY29kZT4gdGhhdCBmaWx0ZXJzCi0gICogIjxjb2RlPi5qYXZhPC9jb2RlPiIgYW5kICI8Y29kZT4uY2xhc3M8L2NvZGU+IiBvYmplY3RzLgotICAqIEVxdWl2YWxlbnQgdG8gPGNvZGU+SmF2YVJlc291cmNlRmlsdGVyKEFMTF9GSUxFUyk8L2NvZGU+LgotICAqLwotICBwdWJsaWMgSmF2YVJlc291cmNlRmlsdGVyICgpCi0gIHsKLSAgICB0aGlzKEFMTF9GSUxFUyk7Ci0gIH0KLQotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPkphdmFSZXNvdXJjZUZpbHRlcjwvY29kZT4gdGhhdCBmaWx0ZXJzCi0gICogIjxjb2RlPi5qYXZhPC9jb2RlPiIgb2JqZWN0cywgIjxjb2RlPi5jbGFzczwvY29kZT4iIG9iamVjdHMsCi0gICogb3IgYm90aCBpZiB0aGUgdmFsdWUgb2YgPGNvZGU+ZXh0ZW5zaW9uczwvY29kZT4gaXMKLSAgKiB7QGxpbmsgI0pBVkFfRklMRVN9LCB7QGxpbmsgI0NMQVNTX0ZJTEVTfSBvciB7QGxpbmsgI0FMTF9GSUxFU30KLSAgKiByZXNwZWN0aXZlbHkuCi0gICogQHBhcmFtIGV4dGVuc2lvbnMgT25lIG9mCi0gICoge0BsaW5rICNKQVZBX0ZJTEVTfSwge0BsaW5rICNDTEFTU19GSUxFU30gb3Ige0BsaW5rICNBTExfRklMRVN9LgotICAqLwotICBwdWJsaWMgSmF2YVJlc291cmNlRmlsdGVyICggYnl0ZSBleHRlbnNpb25zICkKLSAgewotICAgIGV4dGVuc2lvbnNfID0gZXh0ZW5zaW9uczsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIGxvY2FsZS1zcGVjaWZpYyBuYW1lIG9mIHRoaXMgZmlsdGVyLgotICAqIEByZXR1cm4gVGhlIGxvY2FsZS1zcGVjaWZpYyBuYW1lIG9mIHRoaXMgZmlsdGVyLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUgKCkKLSAgewotICAgIHJldHVybiBDb25zdW1wdGlvbk1lc3NhZ2VzLkpBVkFfRklMVEVSX05BTUU7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBsb2NhbGUtc3BlY2lmaWMgZGVzY3JpcHRpb24gb2YgdGhpcyBmaWx0ZXIuCi0gICogQHJldHVybiBUaGUgbG9jYWxlLXNwZWNpZmljIGRlc2NyaXB0aW9uIG9mIHRoaXMgZmlsdGVyLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uICgpCi0gIHsKLSAgICByZXR1cm4gQ29uc3VtcHRpb25NZXNzYWdlcy5KQVZBX0ZJTFRFUl9ERVNDOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyBhbiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXN9Ci0gICogZGVzY3JpYmluZyB0aGUgPGNvZGU+RmlsdGVyPC9jb2RlPidzIGFzc2Vzc21lbnQgb2YKLSAgKiB0aGUgZ2l2ZW4gPGNvZGU+b2JqZWN0PC9jb2RlPi4KLSAgKiBAcGFyYW0gb2JqZWN0IFRoZSBvYmplY3QgdG8gZmlsdGVyLgotICAqIEByZXR1cm4gQW4ge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzfQotICAqIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgaWYgdGhlIGdpdmVuIDxjb2RlPm9iamVjdDwvY29kZT4KLSAgKiByZXByZXNlbnRzIGEgSmF2YSByZXNvdXJjZS4KLSAgKi8KLSAgcHVibGljIElTdGF0dXMgc3RhdHVzT2YgKCBPYmplY3Qgb2JqZWN0ICkKLSAgewotICAgIGlmIChvYmplY3QgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gbmV3IFN0YXR1cygKLSAgICAgICAgSVN0YXR1cy5FUlJPUiwKLSAgICAgICAgV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELAotICAgICAgICAwLAotICAgICAgICBDb25zdW1wdGlvbk1lc3NhZ2VzLkZJTFRFUl9NU0dfRVJST1JfTlVMTF9PQkpFQ1QsCi0gICAgICAgIG51bGwKLSAgICAgICk7Ci0gICAgfQotCi0gICAgU3RyaW5nIG5hbWUgPSBudWxsOwotCi0gICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIElSZXNvdXJjZSkKLSAgICB7Ci0gICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSAoSVJlc291cmNlKW9iamVjdDsKLSAgICAgIG5hbWUgPSByZXNvdXJjZS5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCk7Ci0gICAgICBpZiAocmVzb3VyY2UuZ2V0VHlwZSgpICE9IElSZXNvdXJjZS5GSUxFKQotICAgICAgewotICAgICAgICByZXR1cm4gbmV3IFN0YXR1cygKLSAgICAgICAgICBJU3RhdHVzLkVSUk9SLAotICAgICAgICAgIFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5JRCwKLSAgICAgICAgICAwLAotICAgICAgICAgIE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuRklMVEVSX01TR19FUlJPUl9OT1RfRklMRSxuZXcgT2JqZWN0W10ge25hbWV9KSwKLSAgICAgICAgICBudWxsCi0gICAgICAgICk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG5hbWUgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBuYW1lID0gb2JqZWN0LnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgaWYgKCFhY2NlcHRzTmFtZShuYW1lKSkKLSAgICB7Ci0gICAgICByZXR1cm4gbmV3IFN0YXR1cygKLSAgICAgICAgSVN0YXR1cy5FUlJPUiwKLSAgICAgICAgV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELAotICAgICAgICAwLAotICAgICAgICBOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLkpBVkFfRklMVEVSX01TR19FUlJPUl9XUk9OR19FWFRFTlNJT04sbmV3IE9iamVjdFtdIHtuYW1lfSksCi0gICAgICAgIG51bGwKLSAgICAgICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ldyBTdGF0dXMoSVN0YXR1cy5PSyxXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsMCwiIixudWxsKTsKLSAgfQotCi0gIC8vCi0gIC8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gbmFtZSBpcyBhY2NlcHRhYmxlIGJhc2VkIHVwb24gaXRzIGV4dGVuc2lvbgotICAvLyBhbmQgdGhlIHZhbHVlIG9mIHRoZSBleHRlbnNpb25zXyBiaXRtYXNrLgotICAvLwotICBwcml2YXRlIGJvb2xlYW4gYWNjZXB0c05hbWUgKCBTdHJpbmcgbmFtZSApCi0gIHsKLSAgICByZXR1cm4gKCAKLSAgICAgIChuYW1lLmVuZHNXaXRoKCIuamF2YSIpICYmICgoZXh0ZW5zaW9uc18gJiBKQVZBX0ZJTEVTKSAhPSAwKSkgfHwKLSAgICAgIChuYW1lLmVuZHNXaXRoKCIuY2xhc3MiKSAmJiAoKGV4dGVuc2lvbnNfICYgQ0xBU1NfRklMRVMpICE9IDApKQotICAgICk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL01hcHBpbmdVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vTWFwcGluZ1V0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNjQ4ZGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vTWFwcGluZ1V0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRVV0aWxzOwotCi0KLS8qKgotKiBUaGlzIGNsYXNzIGNvbnRhaW5zIHVzZWZ1bCBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggU2VydmVyIHBsdWdpbiBmdW5jdGlvbnMKLSovCi1wdWJsaWMgZmluYWwgY2xhc3MgTWFwcGluZ1V0aWxzCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfU0VSVklDRV9FWFQgPSAiU2VydmljZS53c2RsIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfQklORElOR19FWFQgPSAiQmluZGluZy53c2RsIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfVjRfU0VSVklDRV9FWFQgPSAiLXNlcnZpY2Uud3NkbCI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1Y0X0JJTkRJTkdfRVhUID0gIi1iaW5kaW5nLndzZGwiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NETF9FWFRFTlNJT04gPSAiLndzZGwiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NETF9GT0xERVIgPSAid3NkbCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfU0tFTEVUT05fUEFDS0FHRU5BTUUgPSAic2VydmljZSI7Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgV1NETCBmb2xkZXIgcGF0aAotICAqIEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0Ci0gICovCi0gIHB1YmxpYyBzdGF0aWMgSVBhdGggZ2V0V1NETEZvbGRlclBhdGggKElQcm9qZWN0IHByb2plY3QsIFN0cmluZyBjb21wb25lbnROYW1lKQotICB7Ci0gICAgSVBhdGggd3NkbEZvbGRlcj1udWxsOwotLy8gIAlJUGF0aCB3ZWJNb2R1bGVTZXJ2ZXJSb290ID0gUmVzb3VyY2VVdGlscy5nZXRXZWJNb2R1bGVTZXJ2ZXJSb290KCBwcm9qZWN0ICkuZ2V0RnVsbFBhdGgoKTsKLSAgCUlQYXRoIHdlYk1vZHVsZVNlcnZlclJvb3QgPSBKMkVFVXRpbHMuZ2V0V2ViQ29udGVudFBhdGgocHJvamVjdCk7Ci0gIAlpZiAod2ViTW9kdWxlU2VydmVyUm9vdCAhPSBudWxsICkKLSAgCQl3c2RsRm9sZGVyID0gd2ViTW9kdWxlU2VydmVyUm9vdC5hcHBlbmQoV1NETF9GT0xERVIpOwotICAgIHJldHVybiB3c2RsRm9sZGVyOwotICB9Ci0gICAgCi0KLSAgIC8qKgotICAqIFJldHVybnMgdGhlIGJhc2UgbmFtZSBiYXNlZCBvbiBXU0RMIGZpbGUgbmFtZQotICAqIEBwYXJhbSB3c2RsTmFtZSBXU0RMIGZpbGUgbmFtZQotICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRCYXNlTmFtZSAoU3RyaW5nIHdzZGxMb2NhdGlvbiApCi0gIHsKLSAgCVN0cmluZyB3c2RsTmFtZT13c2RsTG9jYXRpb247Ci0gIAkKLSAgCWludCBpbmRleCA9IHdzZGxMb2NhdGlvbi5sYXN0SW5kZXhPZignLycpOwotICAgIGlmIChpbmRleCE9IC0xKSB7Ci0gICAgICB3c2RsTmFtZSA9IHdzZGxMb2NhdGlvbi5zdWJzdHJpbmcoaW5kZXgrMSx3c2RsTmFtZS5sZW5ndGgoKSk7Ci0gICAgfQotICAgIAotICAgIFN0cmluZyBiYXNlTmFtZT13c2RsTmFtZTsKLSAgICBpZiAoIHdzZGxOYW1lLmVuZHNXaXRoKERFRkFVTFRfU0VSVklDRV9FWFQpICkgewotICAgICAgYmFzZU5hbWUgPSB3c2RsTmFtZS5zdWJzdHJpbmcoMCwod3NkbE5hbWUubGVuZ3RoKCkgLSBERUZBVUxUX1NFUlZJQ0VfRVhULmxlbmd0aCgpKSk7Ci0gICAgfSBlbHNlIGlmICggd3NkbE5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChERUZBVUxUX1Y0X1NFUlZJQ0VfRVhUKSApIHsKLSAgICAgIGJhc2VOYW1lID0gd3NkbE5hbWUuc3Vic3RyaW5nKDAsKHdzZGxOYW1lLmxlbmd0aCgpIC0gREVGQVVMVF9WNF9TRVJWSUNFX0VYVC5sZW5ndGgoKSkpOwotICAgIH0gZWxzZSBpZiAod3NkbE5hbWUuZW5kc1dpdGgoREVGQVVMVF9CSU5ESU5HX0VYVCkpIHsKLSAgICAgIGJhc2VOYW1lID0gd3NkbE5hbWUuc3Vic3RyaW5nKDAsKHdzZGxOYW1lLmxlbmd0aCgpLURFRkFVTFRfQklORElOR19FWFQubGVuZ3RoKCkpKTsKLSAgICB9IGVsc2UgaWYgKHdzZGxOYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoREVGQVVMVF9WNF9CSU5ESU5HX0VYVCkpIHsKLSAgICAgIGJhc2VOYW1lID0gd3NkbE5hbWUuc3Vic3RyaW5nKDAsKHdzZGxOYW1lLmxlbmd0aCgpLURFRkFVTFRfVjRfQklORElOR19FWFQubGVuZ3RoKCkpKTsKLSAgICB9IGVsc2UgaWYgKHdzZGxOYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoV1NETF9FWFRFTlNJT04pKSB7Ci0gICAgCWJhc2VOYW1lID0gd3NkbE5hbWUuc3Vic3RyaW5nKDAsKHdzZGxOYW1lLmxlbmd0aCgpIC0gV1NETF9FWFRFTlNJT04ubGVuZ3RoKCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgLy8gbm8gcmVjb2duaXphYmxlIHN1ZmZpeCwganVzdCByZW1vdmUgZXh0ZW5zaW9uLCBpZiBhbnkKLSAgICAgIGludCBpbmRleDQgPSBiYXNlTmFtZS5sYXN0SW5kZXhPZignLicpOwotICAgICAgaWYgKGluZGV4NCE9LTEpCi0gICAgICAgIGJhc2VOYW1lID0gYmFzZU5hbWUuc3Vic3RyaW5nKDAsIGluZGV4NCk7Ci0gICAgfQotICAgIHJldHVybiBiYXNlTmFtZTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1vbi9Qcm9wZXJ0aWVzUmVzb3VyY2VGaWx0ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL1Byb3BlcnRpZXNSZXNvdXJjZUZpbHRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDY3OWYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL1Byb3BlcnRpZXNSZXNvdXJjZUZpbHRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkFueUZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uQ29uc3VtcHRpb25NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24ucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotCi0KLS8qKgotKiBUaGlzIGlzIGEga2luZCBvZiBGaWx0ZXIgdGhhdCBhY2NlcHRzIG9ubHkgb2JqZWN0cwotKiB3aGljaCBpbmRpY2F0ZSBhIEphdmEgcmVzb3VyY2UuIEluIHBhcnRpY3VsYXIsIGFueQotKiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlfSB3aG9zZQotKiBwYXRobmFtZSwgb3IgYW55IG9iamVjdCB3aG9zZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gYXMKLSogcmV0dXJuZWQgYnkgPGNvZGU+dG9TdHJpbmcoKTwvY29kZT4sIGVuZHMgaW4KLSogIjxjb2RlPi5qYXZhPC9jb2RlPiIgb3IgIjxjb2RlPi5jbGFzczwvY29kZT4iIHdpbGwgYmUgYWNjZXB0ZWQuCi0qIEFsbCBvdGhlciBvYmplY3RzIHdpbGwgYmUgcmVqZWN0ZWQuCi0qLwotcHVibGljIGNsYXNzIFByb3BlcnRpZXNSZXNvdXJjZUZpbHRlciBleHRlbmRzIEFueUZpbHRlcgotewotIAotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPkphdmFSZXNvdXJjZUZpbHRlcjwvY29kZT4gdGhhdCBmaWx0ZXJzCi0gICogIjxjb2RlPi5qYXZhPC9jb2RlPiIgYW5kICI8Y29kZT4uY2xhc3M8L2NvZGU+IiBvYmplY3RzLgotICAqIEVxdWl2YWxlbnQgdG8gPGNvZGU+SmF2YVJlc291cmNlRmlsdGVyKEFMTF9GSUxFUyk8L2NvZGU+LgotICAqLwotICBwdWJsaWMgUHJvcGVydGllc1Jlc291cmNlRmlsdGVyICgpCi0gIHsKLSAgICAKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIGxvY2FsZS1zcGVjaWZpYyBuYW1lIG9mIHRoaXMgZmlsdGVyLgotICAqIEByZXR1cm4gVGhlIGxvY2FsZS1zcGVjaWZpYyBuYW1lIG9mIHRoaXMgZmlsdGVyLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUgKCkKLSAgewotICAgIHJldHVybiBDb25zdW1wdGlvbk1lc3NhZ2VzLlBST1BFUlRJRVNfRklMVEVSX05BTUU7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBsb2NhbGUtc3BlY2lmaWMgZGVzY3JpcHRpb24gb2YgdGhpcyBmaWx0ZXIuCi0gICogQHJldHVybiBUaGUgbG9jYWxlLXNwZWNpZmljIGRlc2NyaXB0aW9uIG9mIHRoaXMgZmlsdGVyLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uICgpCi0gIHsKLSAgICByZXR1cm4gQ29uc3VtcHRpb25NZXNzYWdlcy5QUk9QRVJUSUVTX0ZJTFRFUl9ERVNDOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyBhbiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXN9Ci0gICogZGVzY3JpYmluZyB0aGUgPGNvZGU+RmlsdGVyPC9jb2RlPidzIGFzc2Vzc21lbnQgb2YKLSAgKiB0aGUgZ2l2ZW4gPGNvZGU+b2JqZWN0PC9jb2RlPi4KLSAgKiBAcGFyYW0gb2JqZWN0IFRoZSBvYmplY3QgdG8gZmlsdGVyLgotICAqIEByZXR1cm4gQW4ge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzfQotICAqIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgaWYgdGhlIGdpdmVuIDxjb2RlPm9iamVjdDwvY29kZT4KLSAgKiByZXByZXNlbnRzIGEgSmF2YSByZXNvdXJjZS4KLSAgKi8KLSAgcHVibGljIElTdGF0dXMgc3RhdHVzT2YgKCBPYmplY3Qgb2JqZWN0ICkKLSAgewotICAgIGlmIChvYmplY3QgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gbmV3IFN0YXR1cygKLSAgICAgICAgSVN0YXR1cy5FUlJPUiwKLSAgICAgICAgV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELAotICAgICAgICAwLAotICAgICAgICBDb25zdW1wdGlvbk1lc3NhZ2VzLkZJTFRFUl9NU0dfRVJST1JfTlVMTF9PQkpFQ1QsCi0gICAgICAgIG51bGwKLSAgICAgICk7Ci0gICAgfQotCi0gICAgU3RyaW5nIG5hbWUgPSBudWxsOwotCi0gICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIElSZXNvdXJjZSkKLSAgICB7Ci0gICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSAoSVJlc291cmNlKW9iamVjdDsKLSAgICAgIG5hbWUgPSByZXNvdXJjZS5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCk7Ci0gICAgICBpZiAocmVzb3VyY2UuZ2V0VHlwZSgpICE9IElSZXNvdXJjZS5GSUxFKQotICAgICAgewotICAgICAgICByZXR1cm4gbmV3IFN0YXR1cygKLSAgICAgICAgICBJU3RhdHVzLkVSUk9SLAotICAgICAgICAgIFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5JRCwKLSAgICAgICAgICAwLAotICAgICAgICAgIE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuRklMVEVSX01TR19FUlJPUl9OT1RfRklMRSxuZXcgT2JqZWN0W10ge25hbWV9KSwKLSAgICAgICAgICBudWxsCi0gICAgICAgICk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG5hbWUgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBuYW1lID0gb2JqZWN0LnRvU3RyaW5nKCk7Ci0gICAgfQotCi0JaWYgKCFuYW1lLmVuZHNXaXRoKCIucHJvcGVydGllcyIpKQotICAgIHsKLSAgICAgIHJldHVybiBuZXcgU3RhdHVzKAotICAgICAgICBJU3RhdHVzLkVSUk9SLAotICAgICAgICBXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsCi0gICAgICAgIDAsCi0gICAgICAgIE5MUy5iaW5kKENvbnN1bXB0aW9uTWVzc2FnZXMuUFJPUEVSVElFU19GSUxURVJfTVNHX0VSUk9SX1dST05HX0VYVEVOU0lPTixuZXcgT2JqZWN0W10ge25hbWV9KSwKLSAgICAgICAgbnVsbAotICAgICAgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3IFN0YXR1cyhJU3RhdHVzLk9LLFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5JRCwwLCIiLG51bGwpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL1JlcXVpcmVkRmFjZXRWZXJzaW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1vbi9SZXF1aXJlZEZhY2V0VmVyc2lvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGQyYWE5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL1JlcXVpcmVkRmFjZXRWZXJzaW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMTMxIDEyMTA3MSAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lciAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb247Ci0KLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSVByb2plY3RGYWNldFZlcnNpb247Ci0KLXB1YmxpYyBjbGFzcyBSZXF1aXJlZEZhY2V0VmVyc2lvbgotewotICBwcml2YXRlIElQcm9qZWN0RmFjZXRWZXJzaW9uIHByb2plY3RGYWNldFZlcnNpb247Ci0gIHByaXZhdGUgYm9vbGVhbiBhbGxvd05ld2VyOwotICBwcml2YXRlIElQcm9qZWN0RmFjZXRWZXJzaW9uW10gYWxsb3dlZFByb2plY3RGYWNldFZlcnNpb25zOwotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0QWxsb3dOZXdlcigpCi0gIHsKLSAgICByZXR1cm4gYWxsb3dOZXdlcjsKLSAgfQotICBwdWJsaWMgdm9pZCBzZXRBbGxvd05ld2VyKGJvb2xlYW4gYWxsb3dOZXdlcikKLSAgewotICAgIHRoaXMuYWxsb3dOZXdlciA9IGFsbG93TmV3ZXI7Ci0gIH0KLSAgcHVibGljIElQcm9qZWN0RmFjZXRWZXJzaW9uIGdldFByb2plY3RGYWNldFZlcnNpb24oKQotICB7Ci0gICAgcmV0dXJuIHByb2plY3RGYWNldFZlcnNpb247Ci0gIH0KLSAgcHVibGljIHZvaWQgc2V0UHJvamVjdEZhY2V0VmVyc2lvbihJUHJvamVjdEZhY2V0VmVyc2lvbiBwcm9qZWN0RmFjZXRWZXJzaW9uKQotICB7Ci0gICAgdGhpcy5wcm9qZWN0RmFjZXRWZXJzaW9uID0gcHJvamVjdEZhY2V0VmVyc2lvbjsKLSAgfSAgCi0gIHB1YmxpYyBJUHJvamVjdEZhY2V0VmVyc2lvbltdIGdldEFsbG93ZWRQcm9qZWN0RmFjZXRWZXJzaW9ucygpICAKLSAgewotICAgIGlmIChhbGxvd2VkUHJvamVjdEZhY2V0VmVyc2lvbnMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBBcnJheUxpc3QgdmVyc2lvbnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiBtaW5wZnYgPSBnZXRQcm9qZWN0RmFjZXRWZXJzaW9uKCk7Ci0gICAgICB2ZXJzaW9ucy5hZGQobWlucGZ2KTsKLSAgICAgIC8vSWYgYWxsb3ctbmV3ZXIgaXMgdHJ1ZSwgYWRkIGFsbCB0aGUgdmVyc2lvbnMgZ3JlYXRlciB0aGFuIHRoZSBtaW4gdmVyc2lvbi4KLSAgICAgIGlmIChnZXRBbGxvd05ld2VyKCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBtaW5WZXJzaW9uID0gbWlucGZ2LmdldFZlcnNpb25TdHJpbmcoKTsKLSAgICAgICAgSXRlcmF0b3IgYWxsVmVyc2lvbnNJdHIgPSBtaW5wZnYuZ2V0UHJvamVjdEZhY2V0KCkuZ2V0VmVyc2lvbnMoKS5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoYWxsVmVyc2lvbnNJdHIuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gdGVzdHBmdiA9IChJUHJvamVjdEZhY2V0VmVyc2lvbilhbGxWZXJzaW9uc0l0ci5uZXh0KCk7Ci0gICAgICAgICAgU3RyaW5nIHRlc3RWZXJzaW9uID0gdGVzdHBmdi5nZXRWZXJzaW9uU3RyaW5nKCk7Ci0gICAgICAgICAgaWYgKEZhY2V0VXRpbHMuZ3JlYXRlclRoYW4odGVzdFZlcnNpb24sIG1pblZlcnNpb24pKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHZlcnNpb25zLmFkZCh0ZXN0cGZ2KTsgICAgICAgICAgICAgIAotICAgICAgICAgIH0KLSAgICAgICAgfSAgICAgIAotICAgICAgfQotICAgICAgCi0gICAgICBhbGxvd2VkUHJvamVjdEZhY2V0VmVyc2lvbnMgPSAoSVByb2plY3RGYWNldFZlcnNpb25bXSl2ZXJzaW9ucy50b0FycmF5KG5ldyBJUHJvamVjdEZhY2V0VmVyc2lvblswXSk7ICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBhbGxvd2VkUHJvamVjdEZhY2V0VmVyc2lvbnM7Ci0gIH0KLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1vbi9TZXJ2ZXJJbmZvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1vbi9TZXJ2ZXJJbmZvLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MjVjYjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vU2VydmVySW5mby5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIENyZWF0ZWQgb24gTWFyIDI1LCAyMDA0Ci0gKgotICogVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgZmlsZSBnbyB0bwotICogV2luZG93IC0gUHJlZmVyZW5jZXMgLSBKYXZhIC0gQ29kZSBHZW5lcmF0aW9uIC0gQ29kZSBhbmQgQ29tbWVudHMKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uOwotCi0vKioKLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBTZXJ2ZXJJbmZvCi17Ci0gIFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQ7Ci0gIFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkOwotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBzZXJ2ZXJGYWN0b3J5SWQuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZlckZhY3RvcnlJZCgpCi0gIHsKLSAgICByZXR1cm4gc2VydmVyRmFjdG9yeUlkOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gc2VydmVyRmFjdG9yeUlkIFRoZSBzZXJ2ZXJGYWN0b3J5SWQgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2VydmVyRmFjdG9yeUlkKFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQpCi0gIHsKLSAgICB0aGlzLnNlcnZlckZhY3RvcnlJZCA9IHNlcnZlckZhY3RvcnlJZDsKLSAgfQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBzZXJ2ZXJJbnN0YW5jZUlkLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJJbnN0YW5jZUlkKCkKLSAgewotICAgIHJldHVybiBzZXJ2ZXJJbnN0YW5jZUlkOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gc2VydmVySW5zdGFuY2VJZCBUaGUgc2VydmVySW5zdGFuY2VJZCB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJJbnN0YW5jZUlkKFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkKQotICB7Ci0gICAgdGhpcy5zZXJ2ZXJJbnN0YW5jZUlkID0gc2VydmVySW5zdGFuY2VJZDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vV1NETFBhcnNlckZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL1dTRExQYXJzZXJGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ZGQxODEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vV1NETFBhcnNlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuV2ViU2VydmljZXNQYXJzZXJFeHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotCi0vKioKLSAqIAotICogVGhlIGZhY3RvcnkgY2xhc3MgY2FuIGJlIHVzZWQgdG8gZ2V0IGF0IGEgc2luZ2xlIGluc3RhbmNlIG9mIHRoZQotICogV1NETCBwYXJzZXIuICBOb3RlOiAgVGhpcyBjbGFzcyBpcyB0ZW1wb3JhcnkuICBXZSB3aWxsIHByb2JhYmx5IGNvbWUKLSAqIHVwIHdpdGggYSBiZXR0ZXIgbWV0aG9kIG9mIGhhbmRsaW5nIHBhc3NpbmcgYXJvdW5kIHRoZSBwYXJzZXIuCi0gKgotICovCi0vL1RPRE8gV2UgbmVlZCB0byBmaW5kIGEgYmV0dGVyIHdheSB0byBwYXNzIGFyb3VuZCB0aGUgcGFyc2VyIHRoYW4KLS8vICAgICB1c2luZyB0aGlzIHNpbmdsZXRvbiBmYWN0b3J5LiAgSG9wZWZ1bGx5LCB3ZSBjYW4gdGhlbiBkZWxldGUKLS8vICAgICB0aGlzIGNsYXNzLgotcHVibGljIGNsYXNzIFdTRExQYXJzZXJGYWN0b3J5IAotewotICBwcml2YXRlIHN0YXRpYyBXZWJTZXJ2aWNlc1BhcnNlckV4dCBwYXJzZXJfOwotICAKLSAgcHJpdmF0ZSBXU0RMUGFyc2VyRmFjdG9yeSgpCi0gIHsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBXZWJTZXJ2aWNlc1BhcnNlciBnZXRXU0RMUGFyc2VyKCkKLSAgewotICAgIGlmKCBwYXJzZXJfID09IG51bGwgKQotCXsKLQkgIHBhcnNlcl8gPSBuZXcgV2ViU2VydmljZXNQYXJzZXJFeHQoKTsKLQl9Ci0JCi0JcmV0dXJuIHBhcnNlcl87Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBraWxsUGFyc2VyKCkKLSAgewotICAgIHBhcnNlcl8gPSBudWxsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2NvbW1vbi9XU0RMUmVzb3VyY2VGaWx0ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL1dTRExSZXNvdXJjZUZpbHRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2QzNzI2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL1dTRExSZXNvdXJjZUZpbHRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkFueUZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uQ29uc3VtcHRpb25NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24ucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotCi0KLS8qKgotKiBUaGlzIGlzIGEga2luZCBvZiBGaWx0ZXIgdGhhdCBhY2NlcHRzIG9ubHkgb2JqZWN0cwotKiB3aGljaCBpbmRpY2F0ZSBhIFdTREwgcmVzb3VyY2UuIEluIHBhcnRpY3VsYXIsIGFueQotKiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlfSB3aG9zZQotKiBwYXRobmFtZSwgb3IgYW55IG9iamVjdCB3aG9zZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gYXMKLSogcmV0dXJuZWQgYnkgPGNvZGU+dG9TdHJpbmcoKTwvY29kZT4sIGVuZHMgaW4KLSogIjxjb2RlPi53c2RsPC9jb2RlPiIgd2lsbCBiZSBhY2NlcHRlZC4KLSogQWxsIG90aGVyIG9iamVjdHMgd2lsbCBiZSByZWplY3RlZC4KLSovCi1wdWJsaWMgY2xhc3MgV1NETFJlc291cmNlRmlsdGVyIGV4dGVuZHMgQW55RmlsdGVyCi17Ci0gIC8qKgotICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+V1NETFJlc291cmNlRmlsdGVyPC9jb2RlPi4KLSAgKi8KLSAgcHVibGljIFdTRExSZXNvdXJjZUZpbHRlciAoKQotICB7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBsb2NhbGUtc3BlY2lmaWMgbmFtZSBvZiB0aGlzIGZpbHRlci4KLSAgKiBAcmV0dXJuIFRoZSBsb2NhbGUtc3BlY2lmaWMgbmFtZSBvZiB0aGlzIGZpbHRlci4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lICgpCi0gIHsKLSAgICByZXR1cm4gQ29uc3VtcHRpb25NZXNzYWdlcy5XU0RMX0ZJTFRFUl9OQU1FOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbG9jYWxlLXNwZWNpZmljIGRlc2NyaXB0aW9uIG9mIHRoaXMgZmlsdGVyLgotICAqIEByZXR1cm4gVGhlIGxvY2FsZS1zcGVjaWZpYyBkZXNjcmlwdGlvbiBvZiB0aGlzIGZpbHRlci4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbiAoKQotICB7Ci0gICAgcmV0dXJuIENvbnN1bXB0aW9uTWVzc2FnZXMuV1NETF9GSUxURVJfREVTQzsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgYW4ge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzfQotICAqIGRlc2NyaWJpbmcgdGhlIDxjb2RlPkZpbHRlcjwvY29kZT4ncyBhc3Nlc3NtZW50IG9mCi0gICogdGhlIGdpdmVuIDxjb2RlPm9iamVjdDwvY29kZT4uCi0gICogQHBhcmFtIG9iamVjdCBUaGUgb2JqZWN0IHRvIGZpbHRlci4KLSAgKiBAcmV0dXJuIEFuIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1c30KLSAgKiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IGlmIHRoZSBnaXZlbiA8Y29kZT5vYmplY3Q8L2NvZGU+Ci0gICogcmVwcmVzZW50cyBhIFdTREwgcmVzb3VyY2UuCi0gICovCi0gIHB1YmxpYyBJU3RhdHVzIHN0YXR1c09mICggT2JqZWN0IG9iamVjdCApCi0gIHsKLSAgICBpZiAob2JqZWN0ID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIG5ldyBTdGF0dXMoCi0gICAgICAgIElTdGF0dXMuRVJST1IsCi0gICAgICAgIFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5JRCwKLSAgICAgICAgMCwKLSAgICAgICAgQ29uc3VtcHRpb25NZXNzYWdlcy5GSUxURVJfTVNHX0VSUk9SX05VTExfT0JKRUNULAotICAgICAgICBudWxsCi0gICAgICApOwotICAgIH0KLQotICAgIFN0cmluZyBuYW1lID0gbnVsbDsKLQotICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBJUmVzb3VyY2UpCi0gICAgewotICAgICAgSVJlc291cmNlIHJlc291cmNlID0gKElSZXNvdXJjZSlvYmplY3Q7Ci0gICAgICBuYW1lID0gcmVzb3VyY2UuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpOwotICAgICAgaWYgKHJlc291cmNlLmdldFR5cGUoKSAhPSBJUmVzb3VyY2UuRklMRSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdGF0dXMoCi0gICAgICAgICAgSVN0YXR1cy5FUlJPUiwKLSAgICAgICAgICBXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsCi0gICAgICAgICAgMCwKLSAgICAgICAgICBOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLkZJTFRFUl9NU0dfRVJST1JfTk9UX0ZJTEUsbmV3IE9iamVjdFtdIHtuYW1lfSksCi0gICAgICAgICAgbnVsbAotICAgICAgICApOwotICAgICAgfQotICAgIH0KLQotICAgIGlmIChuYW1lID09IG51bGwpCi0gICAgewotICAgICAgbmFtZSA9IG9iamVjdC50b1N0cmluZygpOwotICAgIH0KLQotICAgIGlmICghbmFtZS5lbmRzV2l0aCgiLndzZGwiKSkKLSAgICB7Ci0gICAgICByZXR1cm4gbmV3IFN0YXR1cygKLSAgICAgICAgSVN0YXR1cy5FUlJPUiwKLSAgICAgICAgV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLklELAotICAgICAgICAwLAotICAgICAgICBOTFMuYmluZChDb25zdW1wdGlvbk1lc3NhZ2VzLldTRExfRklMVEVSX01TR19FUlJPUl9XUk9OR19FWFRFTlNJT04sbmV3IE9iamVjdFtdIHtuYW1lfSksCi0gICAgICAgIG51bGwKLSAgICAgICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ldyBTdGF0dXMoSVN0YXR1cy5PSyxXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4uSUQsMCwiIixudWxsKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vV2ViU2VydmljZVN0YXJ0U2VydmVyUmVnaXN0cnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vY29tbW9uL1dlYlNlcnZpY2VTdGFydFNlcnZlclJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMDU4NTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9jb21tb24vV2ViU2VydmljZVN0YXJ0U2VydmVyUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuRW52aXJvbm1lbnRTZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUxvZzsKLQotCi0KLS8qKgotKiBUaGlzIGlzIHRoZSByZWdpc3RyeSBvZiBXZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJUeXBlIG9iamVjdHMuCi0qLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VTdGFydFNlcnZlclJlZ2lzdHJ5Ci17Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgV2ViU2VydmljZVN0YXJ0U2VydmVyUmVnaXN0cnkgaW5zdGFuY2VfOwotICBwcml2YXRlIEhhc2h0YWJsZSBTdGFydFNlcnZlclR5cGVzOwotCi0gIC8vCi0gIC8vIExvYWRzIFdlYlNlcnZpY2VTdGFydFNlcnZlclR5cGUgb2JqZWN0cyBpbnRvIHRoaXMgcmVnaXN0cnkuCi0gIC8vIFNlZSBtZXRob2QgZ2V0SW5zdGFuY2UoKS4KLSAgLy8KLSAgcHJpdmF0ZSB2b2lkIGxvYWQgKCkKLSAgewotICAgIFN0YXJ0U2VydmVyVHlwZXMgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgSUV4dGVuc2lvblJlZ2lzdHJ5IHJlZyA9IFBsYXRmb3JtLmdldEV4dGVuc2lvblJlZ2lzdHJ5KCk7Ci0gICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY29uZmlnID0gcmVnLmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2ViU2VydmljZVN0YXJ0U2VydmVyVHlwZSIpOwotCi0gICAgZm9yKGludCBpZHg9MDsgaWR4PGNvbmZpZy5sZW5ndGg7IGlkeCsrKSAKLSAgICB7Ci0gICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbSA9IGNvbmZpZ1tpZHhdOwotICAgICAgdHJ5IAotICAgICAgewotICAgICAgICAgIFN0cmluZyBmYWN0b3J5SWRfID0gZWxlbS5nZXRBdHRyaWJ1dGUoImZhY3RvcnlJZCIpOwotCQkgIFN0YXJ0U2VydmVyVHlwZXMucHV0KGZhY3RvcnlJZF8sIGVsZW0pOwotCSAgCi0gICAgICB9IAotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICBJTG9nIGxvZyA9IEVudmlyb25tZW50U2VydmljZS5nZXRFY2xpcHNlTG9nKCk7Ci0gICAgICAgIGxvZy5sb2coSUxvZy5FUlJPUiwgNTA0NywgdGhpcywgImxvYWQiLCBlKTsKLSAgICAgIH0KLSAgICAgIAotICAgIH0KLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KLSAgKiBAcmV0dXJuIEEgc2luZ2xldG9uIFdlYlNlcnZpY2VTdGFydFNlcnZlclJlZ2lzdHJ5IG9iamVjdC4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBXZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJSZWdpc3RyeSBnZXRJbnN0YW5jZSAoKQotICB7Ci0gICAgaWYgKGluc3RhbmNlXyA9PSBudWxsKQotICAgIHsKLSAgICAgIGluc3RhbmNlXyA9IG5ldyBXZWJTZXJ2aWNlU3RhcnRTZXJ2ZXJSZWdpc3RyeSgpOwotICAgICAgaW5zdGFuY2VfLmxvYWQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGluc3RhbmNlXzsKLSAgfQotCi0gICBwdWJsaWMgT2JqZWN0IGdldFNlcnZlclN0YXJ0QnlUeXBlSWQgKFN0cmluZyB0eXBlSUQpIHRocm93cyBDb3JlRXhjZXB0aW9uCi0gICB7Ci0gICAgaWYgKHR5cGVJRD09bnVsbCkKLSAgICAgIHJldHVybiBudWxsOwotICAgIHJldHVybiAoKElDb25maWd1cmF0aW9uRWxlbWVudClTdGFydFNlcnZlclR5cGVzLmdldCh0eXBlSUQpKS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOwotICB9Ci0gIAotICAgcHVibGljIGJvb2xlYW4gaXNSZW1vdmVFQVJSZXF1aXJlZChTdHJpbmcgdHlwZUlkKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0gICAJaWYgKHR5cGVJZCE9bnVsbCkgewotICAgCQlJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbSA9IChJQ29uZmlndXJhdGlvbkVsZW1lbnQpU3RhcnRTZXJ2ZXJUeXBlcy5nZXQodHlwZUlkKTsKLSAgIAkJaWYgKGVsZW0hPW51bGwpewotICAgCQkJU3RyaW5nIHZhbHVlID0gZWxlbS5nZXRBdHRyaWJ1dGUoInJlbW92ZUVBUiIpOwotICAgCQkJaWYgKHZhbHVlIT1udWxsKXsKLSAgIAkJCQlyZXR1cm4gQm9vbGVhbi52YWx1ZU9mKHZhbHVlKS5ib29sZWFuVmFsdWUoKTsKLSAgIAkJCX0KLSAgIAkJfQotICAgCX0KLQlyZXR1cm4gdHJ1ZTsgICAJCSAKLSAgIH0gICAKLX0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0FycmF5RWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0FycmF5RWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2RiOTU0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9BcnJheUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY01vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgSmF2YSBiZWFuLgotKiBOZWFyZXN0IG1vcmFsIGVxdWl2YWxlbnRzOiBqYXZhLmxhbmcuQ2xhc3MsIGphdmEuYmVhbnMuQmVhbkRlc2NyaXB0b3IuCi0qLwotcHVibGljIGNsYXNzIEFycmF5RWxlbWVudCBleHRlbmRzIFR5cGVFbGVtZW50Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEFSUkFZX05BTUUgPSAiMTAxMDEwMTBhcnJheTEwMTAxMDEwIjsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgUkVMX01FVEhPRFMgPSAicmVsbWV0aG9kcyI7Ci0gCi0gIC8qKgotICAqIENvbnN0cnVjdG9yIAotICAqIEBwYXJhbSBwcm9qZWN0RWxlbWVudCBUaGUgcHJvamVjdCB0aGlzIEJlYW4gYmVsb25ncyB0by4KLSAgKi8KLSAgcHVibGljIEFycmF5RWxlbWVudCAoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICB0aGlzKG5hbWUsbmV3IEJhc2ljTW9kZWwoIlByb2plY3QiKSx0cnVlKTsKLSAgfQotCi0gIC8qKgotICAqIENvbnN0cnVjdG9yIAotICAqIEBwYXJhbSBwYXJhbWV0ZXJFbGVtZW50IFRoZSBwYXJhbWV0ZXIgdGhpcyBCZWFuIGJlbG9uZ3MgdG8uCi0gICovCi0gIHB1YmxpYyBBcnJheUVsZW1lbnQgKFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCxib29sZWFuIGlzUm9vdCkKLSAgewotICAgIHN1cGVyKG5hbWUsbW9kZWwsVHlwZUVsZW1lbnQuQVJSQVkpOwotICAgIGlmKGlzUm9vdCkgbW9kZWwuc2V0Um9vdEVsZW1lbnQodGhpcyk7Ci0gICAgZk93bmVyVHlwZSA9IFR5cGVFbGVtZW50LlJPT1Q7Ci0gIH0KLSAgCi0gIAotICAvKioKLSAgKiBDb25zdHJ1Y3RvciBmb3IgdGhlIGNhc2Ugd2hlbiB0aGlzIGlzIG5vdCB0aGUgcm9vdCBvYmplY3QKLSAgKiBoZXJlIGl0IHJlcHJlc2VudHMgY29tcGxleCB0eXBlcwotICAqIEBwYXJhbSBQYXJhbWV0ZXJFbGVtZW50IFRoZSBQYXJhbWV0ZXIgdGhhdCBvd25zIHRoaXMgYmVhbiB0eXBlLgotICAqIEBwYXJhbSBTdHJpbmcgTmFtZSBvZiB0aGUgYmVhbiBlbGVtZW50LgotICAqLwotICBwdWJsaWMgQXJyYXlFbGVtZW50ICggUGFyYW1ldGVyRWxlbWVudCBwYXJhbWV0ZXJFbGVtZW50LCBTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUscGFyYW1ldGVyRWxlbWVudCxUeXBlRWxlbWVudC5SRUxfT1dORVIsVHlwZUVsZW1lbnQuUkVMX1RZUEUsVHlwZUVsZW1lbnQuQVJSQVkpOwotICAgIGZPd25lclR5cGUgPSBUeXBlRWxlbWVudC5QQVJBTUVURVJfT1dORVI7Ci0gIH0KLQotICAvKioKLSAgKiBDb25zdHJ1Y3RvciBmb3IgdGhlIGNhc2Ugd2hlbiB0aGlzIGlzIG5vdCB0aGUgcm9vdCBvYmplY3QKLSAgKiBoZXJlIGl0IHJlcHJlc2VudHMgY29tcGxleCB0eXBlcwotICAqIEBwYXJhbSBQYXJhbWV0ZXJFbGVtZW50IFRoZSBQYXJhbWV0ZXIgdGhhdCBvd25zIHRoaXMgYmVhbiB0eXBlLgotICAqIEBwYXJhbSBTdHJpbmcgTmFtZSBvZiB0aGUgUGFyYW1ldGVyRWxlbWVudC4KLSAgKi8KLSAgcHVibGljIEFycmF5RWxlbWVudCAoIEF0dHJpYnV0ZUVsZW1lbnQgYXR0cmlidXRlRWxlbWVudCwgU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lLGF0dHJpYnV0ZUVsZW1lbnQsVHlwZUVsZW1lbnQuUkVMX09XTkVSLFR5cGVFbGVtZW50LlJFTF9UWVBFLFR5cGVFbGVtZW50LkFSUkFZKTsKLSAgICBmT3duZXJUeXBlID0gVHlwZUVsZW1lbnQuQVRUUklCVVRFX09XTkVSOwotICB9Ci0KLSAgLyoqCi0gICogQ29uc3RydWN0b3IgZm9yIHRoZSBjYXNlIHdoZW4gdGhpcyBpcyBub3QgdGhlIHJvb3Qgb2JqZWN0Ci0gICogaGVyZSBpdCByZXByZXNlbnRzIGNvbXBsZXggdHlwZXMKLSAgKiBAcGFyYW0gRmllbGRFbGVtZW50IFRoZSBQYXJhbWV0ZXIgdGhhdCBvd25zIHRoaXMgYmVhbiB0eXBlLgotICAqIEBwYXJhbSBTdHJpbmcgTmFtZSBvZiB0aGUgUGFyYW1ldGVyRWxlbWVudC4KLSAgKi8KLSAgcHVibGljIEFycmF5RWxlbWVudCAoIEZpZWxkRWxlbWVudCBmaWVsZEVsZW1lbnQsIFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSxmaWVsZEVsZW1lbnQsVHlwZUVsZW1lbnQuUkVMX09XTkVSLFR5cGVFbGVtZW50LlJFTF9UWVBFLFR5cGVFbGVtZW50LkFSUkFZKTsKLSAgICBmT3duZXJUeXBlID0gVHlwZUVsZW1lbnQuRklFTERfT1dORVI7Ci0gIH0KLQotCi0gIC8qCi0gICogZGV0ZXJtaW5lIHdldGhlciB0aGlzIGlzIGFuIG9iamVjdCBhcnJheSBvcgotICAqIHByaW1pdGl2ZSBhcnJheQotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFR5cGVOYW1lKCkKLSAgewotICAgIHJldHVybiBBUlJBWV9OQU1FICsgZ2V0TmFtZSgpOwotICB9Ci0KLSAKLSAgCi19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9BcnJheVR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9BcnJheVR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEyNTEwNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQXJyYXlUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzExMjIgICAyMTA2OTIgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZ1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLkdlbmVyYXRvcjsKLQotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHJlY29nbml6ZWQgcmV0dXJuIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIEFycmF5VHlwZSBleHRlbmRzIFJlY29nbml6ZWRSZXR1cm5UeXBlCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgQXJyYXlUeXBlKFN0cmluZyB0eXBlTmFtZSkKLSAgewotICAgIHRoaXMoVHlwZUZhY3RvcnkuQVJSQVlfTkFNRSx0eXBlTmFtZSk7Ci0gIH0KLQotICBwdWJsaWMgQXJyYXlUeXBlKFN0cmluZyBuYW1lLFN0cmluZyB0eXBlTmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9IAotCi0gCi0gICAvKioKLSAgKiBUaGlzIGlzIGJhc2ljYWxseSB0aGUgZnVuY3Rpb24gdGhhdCBkaWN0YXRlcyBob3cgd2Ugd2FudCB0byBkaXNwbGF5IHRoaXMgdHlwZSAKLSAgKiB1cG9uIHJlY2VpdmluZyBpdCBhcyBhIHJldHVybiBmcm9tIGEgcHJveHkgbWV0aG9kCi0gICogQHBhcmFtIFN0cmluZyB0aGUgbmFtZSBvZiB0aGUgdHlwZQotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBkaXNwbGF5IHN0cmluZwotICAqLwotICBwdWJsaWMgU3RyaW5nIFR5cGVDb252ZXJzaW9uKFN0cmluZyBuYW1lKQotICB7Ci0gICAgIAotICAgIFN0cmluZyBub25CZWFuID0gR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiU3RyaW5nIHRlbXAiKyBnZXRVbmlxdWVOYW1lKCkgKyAiID0gbnVsbDsiICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgIAkJCQkgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJpZigiICsgbmFtZSArICIgIT0gbnVsbCl7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAJCQkJICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiamF2YS51dGlsLkxpc3QgbGlzdCIgKyBnZXRVbmlxdWVOYW1lKCkgKyAiPSBqYXZhLnV0aWwuQXJyYXlzLmFzTGlzdCgiICsgbmFtZSArICIpOyIgK1N0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAJICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAidGVtcCIrIGdldFVuaXF1ZU5hbWUoKSArIiA9IGxpc3QiICsgZ2V0VW5pcXVlTmFtZSgpICsgIi50b1N0cmluZygpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FIAotICAgIAkgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJ9IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAJICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiJT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSAgCi0gICAgCSAgICAgICAgICAgICArIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgIjwlPXRlbXAiKyBnZXRVbmlxdWVOYW1lKCkgKyIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICArIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgIjwlIisgU3RyaW5nVXRpbHMuTkVXTElORTsKLQotICAgIHJldHVybiBub25CZWFuOwotICB9Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9BdHRyaWJ1dGVFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQXR0cmlidXRlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzdjZjcxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9BdHRyaWJ1dGVFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkJhc2ljRWxlbWVudDsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIEphdmEgYmVhbiBtZXRob2QgcGFyYW1ldGVyLgotKiBOZWFyZXN0IG1vcmFsIGVxdWl2YWxlbnRzOiBqYXZhLmJlYW5zLlBhcmFtZXRlckRlc2NyaXB0b3IuCi0qLwotcHVibGljIGNsYXNzIEF0dHJpYnV0ZUVsZW1lbnQgZXh0ZW5kcyBCYXNpY0VsZW1lbnQgaW1wbGVtZW50cyBBdHRyaWJ1dGVFbGVtZW50VHlwZQotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFTF9UWVBFID0gInR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUxfT1dOSU5HX0JFQU4gPSAib3duaW5nYmVhbiI7Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZlNldHRlck1ldGhvZDsKLSAgcHJpdmF0ZSBTdHJpbmcgZkdldHRlck1ldGhvZDsKLQotICAvKioKLSAgKiBDb25zdHJ1Y3RvciB0aGlzIHRha2VzIHRoZSBvd25pbmcgYmVhbi4KLSAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlLgotICAqIEBwYXJhbSBiZWFuRWxlbWVudCB0aGUgYmVhbiB0aGF0IG93bnMgdGhpcyBhdHRyaWJ1dGUuCi0gICovCi0gIHB1YmxpYyBBdHRyaWJ1dGVFbGVtZW50ICggQmVhbkVsZW1lbnQgYmVhbkVsZW1lbnQsIFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSxiZWFuRWxlbWVudCxSRUxfT1dOSU5HX0JFQU4sQmVhbkVsZW1lbnQuUkVMX0FUVFJJQlVURVMpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXR0ZXJNZXRob2QoU3RyaW5nIHNldHRlck1ldGhvZCkKLSAgewotICAgIGZTZXR0ZXJNZXRob2QgPSBzZXR0ZXJNZXRob2Q7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNldHRlck1ldGhvZCgpCi0gIHsKLSAgICByZXR1cm4gZlNldHRlck1ldGhvZDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0R2V0dGVyTWV0aG9kKCkKLSAgewotICAgIHJldHVybiBmR2V0dGVyTWV0aG9kOwotICB9Ci0gCi0gIHB1YmxpYyB2b2lkIHNldEdldHRlck1ldGhvZChTdHJpbmcgZ2V0dGVyTWV0aG9kKQotICB7Ci0gICAgZkdldHRlck1ldGhvZCA9IGdldHRlck1ldGhvZDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2V0dGVyU2lnbmF0dXJlKFN0cmluZyBhdHRyaWJ1dGUpCi0gIHsKLSAgICBpbnQgYnJhY2tldCA9IGZTZXR0ZXJNZXRob2QuaW5kZXhPZigiKCIpOwotICAgIGJyYWNrZXQrKzsKLSAgICBTdHJpbmcgc2V0dGVyID0gZlNldHRlck1ldGhvZC5zdWJzdHJpbmcoMCxicmFja2V0KTsKLSAgICBTdHJpbmcgZnVsbFNldHRlciA9IHNldHRlciArIGF0dHJpYnV0ZSArICIpOyI7Ci0gICAKLSAgICByZXR1cm4gZnVsbFNldHRlcjsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIEJlYW4gdGhhdCBvd25zIHRoaXMgQXR0cmlidXRlLgotICAqIEByZXR1cm4gQmVhbkVsZW1lbnQgVGhlIGJlYW4gdGhhdCBvd25zIHRoaXMgYXR0cmlidXRlLgotICAqLwotICBwdWJsaWMgQmVhbkVsZW1lbnQgZ2V0T3duaW5nQmVhbkVsZW1lbnQgKCkKLSAgewotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRFbGVtZW50cyhSRUxfT1dOSU5HX0JFQU4pOwotICAgIHJldHVybiBlLmhhc01vcmVFbGVtZW50cygpID8gKEJlYW5FbGVtZW50KWUubmV4dEVsZW1lbnQoKSA6IG51bGw7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSB0eXBlIHRoYXQgaXMgb3duZWQgYnkgdGhpcyBhdHRyaWJ1dHRlLgotICAqIEByZXR1cm4gVHlwZUVsZW1lbnQgVGhlIFR5cGUgdGhhdCBvZiB0aGlzIGF0dHJpYnV0ZS4KLSAgKi8KLSAgcHVibGljIFR5cGVFbGVtZW50IGdldFR5cGVFbGVtZW50ICgpCi0gIHsKLSAgICBFbnVtZXJhdGlvbiBlID0gZ2V0RWxlbWVudHMoUkVMX1RZUEUpOwotICAgIHJldHVybiBlLmhhc01vcmVFbGVtZW50cygpID8gKFR5cGVFbGVtZW50KWUubmV4dEVsZW1lbnQoKSA6IG51bGw7Ci0gIH0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0F0dHJpYnV0ZUVsZW1lbnRUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQXR0cmlidXRlRWxlbWVudFR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIwYjZmYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQXR0cmlidXRlRWxlbWVudFR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIEphdmEgYmVhbiBtZXRob2QgcGFyYW1ldGVyLgotKiBOZWFyZXN0IG1vcmFsIGVxdWl2YWxlbnRzOiBqYXZhLmJlYW5zLlBhcmFtZXRlckRlc2NyaXB0b3IuCi0qLwotcHVibGljIGludGVyZmFjZSBBdHRyaWJ1dGVFbGVtZW50VHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAgCi0gIHB1YmxpYyB2b2lkIHNldFNldHRlck1ldGhvZChTdHJpbmcgc2V0dGVyTWV0aG9kKTsKLSAgcHVibGljIFN0cmluZyBnZXRTZXR0ZXJNZXRob2QoKTsKLSAgcHVibGljIFN0cmluZyBnZXRHZXR0ZXJNZXRob2QoKTsKLSAgcHVibGljIHZvaWQgc2V0R2V0dGVyTWV0aG9kKFN0cmluZyBnZXR0ZXJNZXRob2QpOwotICBwdWJsaWMgQmVhbkVsZW1lbnQgZ2V0T3duaW5nQmVhbkVsZW1lbnQgKCk7Ci0gIHB1YmxpYyBUeXBlRWxlbWVudCBnZXRUeXBlRWxlbWVudCAoKTsKLSAgLyoqCi0gICogUmV0dXJuIHRoZSBzaWduYXR1cmUgd2l0aCB0aGlzIHZhbHVlIGFzIHRoZSBwYXJtZXRlcgotICAqCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2V0dGVyU2lnbmF0dXJlKFN0cmluZyBhdHRyaWJ1dGUpOwotICAKLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0JlYW5FbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQmVhbkVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzljOWQwZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQmVhbkVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA2MTIgICAxNDU0MzMgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY01vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBKYXZhIGJlYW4uCi0qIE5lYXJlc3QgbW9yYWwgZXF1aXZhbGVudHM6IGphdmEubGFuZy5DbGFzcywgamF2YS5iZWFucy5CZWFuRGVzY3JpcHRvci4KLSovCi1wdWJsaWMgY2xhc3MgQmVhbkVsZW1lbnQgZXh0ZW5kcyBUeXBlRWxlbWVudAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBTVEFURUxFU1NfQkVBTiA9ICIxMDEwMTAxMHN0YXRlbGVzc2JlYW4xMDEwMTAxMCI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFJFTF9NRVRIT0RTID0gInJlbG1ldGhvZHMiOwotICBwdWJsaWMgc3RhdGljIGludCBSRUFET05MWSA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgaW50IFdSSVRFT05MWSA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgaW50IFJFQURXUklURSA9IDI7Ci0gIHByaXZhdGUgaW50IGF0dHJpYiA9IDI7Ci0gIAotICAKLSAgLyoqCi0gICogQ29uc3RydWN0b3IgCi0gICogQHBhcmFtIHByb2plY3RFbGVtZW50IFRoZSBwcm9qZWN0IHRoaXMgQmVhbiBiZWxvbmdzIHRvLgotICAqLwotICBwdWJsaWMgQmVhbkVsZW1lbnQgKFN0cmluZyBuYW1lKQotICB7Ci0gICAgdGhpcyhuYW1lLG5ldyBCYXNpY01vZGVsKCJQcm9qZWN0IiksdHJ1ZSk7Ci0gIH0KLQotICAvKioKLSAgKiBDb25zdHJ1Y3RvciAKLSAgKiBAcGFyYW0gcGFyYW1ldGVyRWxlbWVudCBUaGUgcGFyYW1ldGVyIHRoaXMgQmVhbiBiZWxvbmdzIHRvLgotICAqLwotICBwdWJsaWMgQmVhbkVsZW1lbnQgKFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCxib29sZWFuIGlzUm9vdCkKLSAgewotICAgIHN1cGVyKG5hbWUsbW9kZWwsVHlwZUVsZW1lbnQuQkVBTik7Ci0gICAgaWYoaXNSb290KSBtb2RlbC5zZXRSb290RWxlbWVudCh0aGlzKTsKLSAgICBmT3duZXJUeXBlID0gVHlwZUVsZW1lbnQuUk9PVDsKLSAgfQotCi0gIC8qKgotICAqIENvbnN0cnVjdG9yIGZvciB0aGUgY2FzZSB3aGVuIHRoaXMgaXMgbm90IHRoZSByb290IG9iamVjdAotICAqIGhlcmUgaXQgcmVwcmVzZW50cyBjb21wbGV4IHR5cGVzCi0gICogQHBhcmFtIFBhcmFtZXRlckVsZW1lbnQgVGhlIFBhcmFtZXRlciB0aGF0IG93bnMgdGhpcyBiZWFuIHR5cGUuCi0gICogQHBhcmFtIFN0cmluZyBOYW1lIG9mIHRoZSBiZWFuIGVsZW1lbnQuCi0gICovCi0gIHB1YmxpYyBCZWFuRWxlbWVudCAoIFBhcmFtZXRlckVsZW1lbnQgcGFyYW1ldGVyRWxlbWVudCwgU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lLHBhcmFtZXRlckVsZW1lbnQsVHlwZUVsZW1lbnQuUkVMX09XTkVSLFR5cGVFbGVtZW50LlJFTF9UWVBFLFR5cGVFbGVtZW50LkJFQU4pOwotICAgIGZPd25lclR5cGUgPSBUeXBlRWxlbWVudC5QQVJBTUVURVJfT1dORVI7Ci0gIH0KLQotICAvKioKLSAgKiBDb25zdHJ1Y3RvciBmb3IgdGhlIGNhc2Ugd2hlbiB0aGlzIGlzIG5vdCB0aGUgcm9vdCBvYmplY3QKLSAgKiBoZXJlIGl0IHJlcHJlc2VudHMgY29tcGxleCB0eXBlcwotICAqIEBwYXJhbSBQYXJhbWV0ZXJFbGVtZW50IFRoZSBQYXJhbWV0ZXIgdGhhdCBvd25zIHRoaXMgYmVhbiB0eXBlLgotICAqIEBwYXJhbSBTdHJpbmcgTmFtZSBvZiB0aGUgUGFyYW1ldGVyRWxlbWVudC4KLSAgKi8KLSAgcHVibGljIEJlYW5FbGVtZW50ICggQXR0cmlidXRlRWxlbWVudCBhdHRyaWJ1dGVFbGVtZW50LCBTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUsYXR0cmlidXRlRWxlbWVudCxUeXBlRWxlbWVudC5SRUxfT1dORVIsVHlwZUVsZW1lbnQuUkVMX1RZUEUsVHlwZUVsZW1lbnQuQkVBTik7Ci0gICAgZk93bmVyVHlwZSA9IFR5cGVFbGVtZW50LkFUVFJJQlVURV9PV05FUjsKLSAgICBhdHRyaWJGdW5jdGlvbihhdHRyaWJ1dGVFbGVtZW50KTsKLSAgfQotIAotICBwcml2YXRlIHZvaWQgYXR0cmliRnVuY3Rpb24oQXR0cmlidXRlRWxlbWVudCBhdHRyaWJ1dGVFbGVtZW50KXsKLQlpZihhdHRyaWJ1dGVFbGVtZW50LmdldEdldHRlck1ldGhvZCgpICE9IG51bGwgJiYgYXR0cmlidXRlRWxlbWVudC5nZXRTZXR0ZXJNZXRob2QoKSAhPSBudWxsKSBhdHRyaWIgPSBSRUFEV1JJVEU7Ci0JZWxzZSBpZihhdHRyaWJ1dGVFbGVtZW50LmdldEdldHRlck1ldGhvZCgpID09IG51bGwgJiYgYXR0cmlidXRlRWxlbWVudC5nZXRTZXR0ZXJNZXRob2QoKSAhPSBudWxsKSBhdHRyaWIgPSBXUklURU9OTFk7Ci0JZWxzZSBpZihhdHRyaWJ1dGVFbGVtZW50LmdldEdldHRlck1ldGhvZCgpICE9IG51bGwgJiYgYXR0cmlidXRlRWxlbWVudC5nZXRTZXR0ZXJNZXRob2QoKSA9PSBudWxsKSBhdHRyaWIgPSBSRUFET05MWTsKLSAgfQotICAKLSAgIC8qKgotICAqIENvbnN0cnVjdG9yIGZvciB0aGUgY2FzZSB3aGVuIHRoaXMgaXMgbm90IHRoZSByb290IG9iamVjdAotICAqIGhlcmUgaXQgcmVwcmVzZW50cyBjb21wbGV4IHR5cGVzCi0gICogQHBhcmFtIFBhcmFtZXRlckVsZW1lbnQgVGhlIFBhcmFtZXRlciB0aGF0IG93bnMgdGhpcyBiZWFuIHR5cGUuCi0gICogQHBhcmFtIFN0cmluZyBOYW1lIG9mIHRoZSBQYXJhbWV0ZXJFbGVtZW50LgotICAqLwotICBwdWJsaWMgQmVhbkVsZW1lbnQgKCBGaWVsZEVsZW1lbnQgZmllbGRFbGVtZW50LCBTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUsZmllbGRFbGVtZW50LFR5cGVFbGVtZW50LlJFTF9PV05FUixUeXBlRWxlbWVudC5SRUxfVFlQRSxUeXBlRWxlbWVudC5CRUFOKTsKLSAgICBmT3duZXJUeXBlID0gVHlwZUVsZW1lbnQuRklFTERfT1dORVI7Ci0gIAotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyBhbiBlbnVtZXJhdGlvbiBvZiBhbGwgTWV0aG9kIG9iamVjdHMgb2YgdGhpcyBCZWFuLgotICAqIEByZXR1cm4gRW51bWVyYXRpb24gQWxsIE1ldGhvZCBvYmplY3RzIG9mIHRoaXMgQmVhbi4KLSAgKi8KLSAgcHVibGljIEVudW1lcmF0aW9uIGdldE1ldGhvZHMgKCkKLSAgewotICAgIHJldHVybiBnZXRFbGVtZW50cyhSRUxfTUVUSE9EUyk7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgTWV0aG9kIG9iamVjdHMgb2YgdGhpcyBCZWFuLgotICAqIEByZXR1cm4gaW50IFRoZSBudW1iZXIgb2YgTWV0aG9kIG9iamVjdHMgb2YgdGhpcyBCZWFuLgotICAqLwotICBwdWJsaWMgaW50IGdldE51bWJlck9mTWV0aG9kRWxlbWVudHMgKCkKLSAgewotICAgIHJldHVybiBnZXROdW1iZXJPZkVsZW1lbnRzKFJFTF9NRVRIT0RTKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZU5hbWUoKQotICB7Ci0gICAgaWYoaXNTdGF0ZUxlc3MoKSkgcmV0dXJuIFNUQVRFTEVTU19CRUFOICsgZ2V0TmFtZSgpOwotICAgIHJldHVybiBnZXROYW1lKCk7Ci0gIH0KLQotICBwdWJsaWMgaW50IGdldEF0dHJpYigpCi0gIHsKLSAgICByZXR1cm4gYXR0cmliOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRBdHRyaWIoaW50IGF0dHJpYikKLSAgewotICAgIHRoaXMuYXR0cmliID0gYXR0cmliOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBpc1N0YXRlTGVzcygpCi0gIHsKLSAgICBFbnVtZXJhdGlvbiBlYSA9IGdldEVsZW1lbnRzKFR5cGVFbGVtZW50LlJFTF9BVFRSSUJVVEVTKTsKLSAgICBFbnVtZXJhdGlvbiBlZiA9IGdldEVsZW1lbnRzKFR5cGVFbGVtZW50LlJFTF9GSUVMRFMpOwotICAgIGlmKGVhLmhhc01vcmVFbGVtZW50cygpIHx8IGVmLmhhc01vcmVFbGVtZW50cygpKSByZXR1cm4gZmFsc2U7Ci0gICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIAotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQmVhbk1vZGVsRWxlbWVudHNGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQmVhbk1vZGVsRWxlbWVudHNGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NGQ2YWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0JlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTY4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuRmllbGQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFIZWxwZXJzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFQYXJhbWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29tbW9uLlNhbXBsZVByb3BlcnR5RGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLQotLyoqCi0gKiBUeXBlRmFjdG9yeQotICogQ3JlYXRpb24gZGF0ZTogKDQvMTAvMjAwMSAxMjo0MTo0OCBQTSkKLSAqIEBhdXRob3I6IEdpbGJlcnQgQW5kcmV3cwotICovCi1wdWJsaWMgY2xhc3MgQmVhbk1vZGVsRWxlbWVudHNGYWN0b3J5IAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRVRVUk5fUEFSQU1fTkFNRT0icmV0dXJucCI7Ci0KLSAgcHJpdmF0ZSBCZWFuTW9kZWxFbGVtZW50c0ZhY3RvcnkoKXt9Ci0KLSAgcHVibGljIHN0YXRpYyBFbGVtZW50IGdldEJlYW5Nb2RlbEVsZW1lbnQoT2JqZWN0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBCZWFuTW9kZWxFbGVtZW50c0ZhY3RvcnkuZ2V0QmVhbk1vZGVsRWxlbWVudChvYmplY3QsbnVsbCxudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgRWxlbWVudCBnZXRCZWFuTW9kZWxFbGVtZW50KE9iamVjdCBvYmplY3QsRWxlbWVudCBwYXJlbnRFbGVtZW50KQotICB7Ci0gICAgcmV0dXJuIEJlYW5Nb2RlbEVsZW1lbnRzRmFjdG9yeS5nZXRCZWFuTW9kZWxFbGVtZW50KG9iamVjdCxwYXJlbnRFbGVtZW50LG51bGwpOwotICB9Ci0gIAotIC8qCi0gICogVGFrZSBpbiBhbiBvYmplY3QgYW5kIHJldHVybiBhbiBlbGVtZW50IGRlcGVuZGluZyBvbiB3aGF0IAotICAqIHR5cGUgd2UgYXJlIGRlYWxpbmcgd2l0aCBmcm9tIHRoZSBqYXZhbW9mCi0gICoqLwotICBwdWJsaWMgc3RhdGljIEVsZW1lbnQgZ2V0QmVhbk1vZGVsRWxlbWVudChPYmplY3Qgb2JqZWN0LEVsZW1lbnQgcGFyZW50RWxlbWVudCwgTW9kZWwgbW9kZWwpCi0gIHsKLSAgICBFbGVtZW50IHJldHVybkVsZW1lbnQgPSBudWxsOwotCi0gICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEphdmFDbGFzcyl7Ci0gICAgICBKYXZhQ2xhc3MgamF2YUNsYXNzID0gKEphdmFDbGFzcylvYmplY3Q7Ci0gICAgICBTdHJpbmcgamF2YU5hbWUgPSBqYXZhQ2xhc3MuZ2V0SmF2YU5hbWUoKTsKLSAgICAgIGlmICghamF2YUNsYXNzLmlzQXJyYXkoKSl7IAotCSAgICAgIGlmKHBhcmVudEVsZW1lbnQgPT0gbnVsbCAmJiBtb2RlbCA9PW51bGwpIHJldHVybkVsZW1lbnQgPSBuZXcgQmVhbkVsZW1lbnQoamF2YU5hbWUpOwotCSAgICAgIGVsc2UgaWYocGFyZW50RWxlbWVudCA9PSBudWxsICYmIG1vZGVsICE9bnVsbCkgcmV0dXJuRWxlbWVudCA9IG5ldyBCZWFuRWxlbWVudChqYXZhTmFtZSxtb2RlbCxmYWxzZSk7Ci0JICAgICAgZWxzZXsKLQkgICAgICAgIGlmKHBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBQYXJhbWV0ZXJFbGVtZW50KXsgCi0JICAgICAgICAgICBQYXJhbWV0ZXJFbGVtZW50IHRlbXBFbGVtZW50ID0gKFBhcmFtZXRlckVsZW1lbnQpcGFyZW50RWxlbWVudDsKLQkgICAgICAgICAgIHJldHVybkVsZW1lbnQgPSBuZXcgQmVhbkVsZW1lbnQodGVtcEVsZW1lbnQsamF2YU5hbWUpOwotCSAgICAgICAgfQotCSAgICAgICAgZWxzZSBpZihwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgQXR0cmlidXRlRWxlbWVudCl7Ci0JICAgICAgICAgICBBdHRyaWJ1dGVFbGVtZW50IHRlbXBFbGVtZW50ID0gKEF0dHJpYnV0ZUVsZW1lbnQpcGFyZW50RWxlbWVudDsKLQkgICAgICAgICAgIHJldHVybkVsZW1lbnQgPSBuZXcgQmVhbkVsZW1lbnQodGVtcEVsZW1lbnQsamF2YU5hbWUpOwotCSAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZihwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgRmllbGRFbGVtZW50KXsKLSAgICAgICAgICAgICAgIEZpZWxkRWxlbWVudCB0ZW1wRWxlbWVudCA9IChGaWVsZEVsZW1lbnQpcGFyZW50RWxlbWVudDsKLQkgICAgICAgICAgIHJldHVybkVsZW1lbnQgPSBuZXcgQmVhbkVsZW1lbnQodGVtcEVsZW1lbnQsamF2YU5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZihwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgTWV0aG9kRWxlbWVudCl7Ci0gICAgICAgICAgICAgICByZXR1cm5FbGVtZW50ID0gbmV3IFBhcmFtZXRlckVsZW1lbnQoKE1ldGhvZEVsZW1lbnQpcGFyZW50RWxlbWVudCxSRVRVUk5fUEFSQU1fTkFNRSxNZXRob2RFbGVtZW50LlJFTF9SRVRVUk5fUEFSQU1FVEVSUyx0cnVlKTsKLSAgICAgICAgICAgIH0JICAgICAgICAgCi0JICAgICAgfQotICAgICAgfSAKLSAgICAgIGVsc2V7Ci0gICAgICAgICAgaWYocGFyZW50RWxlbWVudCA9PSBudWxsICYmIG1vZGVsID09bnVsbCkgcmV0dXJuRWxlbWVudCA9IG5ldyBBcnJheUVsZW1lbnQoamF2YU5hbWUpOwotCSAgICAgIGVsc2UgaWYocGFyZW50RWxlbWVudCA9PSBudWxsICYmIG1vZGVsICE9bnVsbCkgcmV0dXJuRWxlbWVudCA9IG5ldyBBcnJheUVsZW1lbnQoamF2YU5hbWUsbW9kZWwsZmFsc2UpOwotCSAgICAgIGVsc2V7Ci0JICAgICAgICBpZihwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgUGFyYW1ldGVyRWxlbWVudCl7IAotCSAgICAgICAgICAgUGFyYW1ldGVyRWxlbWVudCB0ZW1wRWxlbWVudCA9IChQYXJhbWV0ZXJFbGVtZW50KXBhcmVudEVsZW1lbnQ7Ci0JICAgICAgICAgICByZXR1cm5FbGVtZW50ID0gbmV3IEFycmF5RWxlbWVudCh0ZW1wRWxlbWVudCxqYXZhTmFtZSk7Ci0JICAgICAgICB9Ci0JICAgICAgICBlbHNlIGlmKHBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBBdHRyaWJ1dGVFbGVtZW50KXsKLQkgICAgICAgICAgIEF0dHJpYnV0ZUVsZW1lbnQgdGVtcEVsZW1lbnQgPSAoQXR0cmlidXRlRWxlbWVudClwYXJlbnRFbGVtZW50OwotCSAgICAgICAgICAgcmV0dXJuRWxlbWVudCA9IG5ldyBBcnJheUVsZW1lbnQodGVtcEVsZW1lbnQsamF2YU5hbWUpOwotCSAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZihwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgRmllbGRFbGVtZW50KXsKLSAgICAgICAgICAgICAgIEZpZWxkRWxlbWVudCB0ZW1wRWxlbWVudCA9IChGaWVsZEVsZW1lbnQpcGFyZW50RWxlbWVudDsKLQkgICAgICAgICAgIHJldHVybkVsZW1lbnQgPSBuZXcgQXJyYXlFbGVtZW50KHRlbXBFbGVtZW50LGphdmFOYW1lKTsKLQkgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYocGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIE1ldGhvZEVsZW1lbnQpewotICAgICAgICAgICAgICAgcmV0dXJuRWxlbWVudCA9IG5ldyBQYXJhbWV0ZXJFbGVtZW50KChNZXRob2RFbGVtZW50KXBhcmVudEVsZW1lbnQsUkVUVVJOX1BBUkFNX05BTUUsTWV0aG9kRWxlbWVudC5SRUxfUkVUVVJOX1BBUkFNRVRFUlMsdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLQkgICAgICB9Ci0gICAgICAgfQotCi0gICAgfQotICAgIGVsc2UgaWYob2JqZWN0IGluc3RhbmNlb2YgU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yKXsKLSAgICAgIFNhbXBsZVByb3BlcnR5RGVzY3JpcHRvciBwZCA9IChTYW1wbGVQcm9wZXJ0eURlc2NyaXB0b3Ipb2JqZWN0OwotICAgICAgcmV0dXJuRWxlbWVudCA9IG5ldyBBdHRyaWJ1dGVFbGVtZW50KChCZWFuRWxlbWVudClwYXJlbnRFbGVtZW50LHBkLmdldE5hbWUoKSk7ICAKLSAgICB9Ci0gICAgZWxzZSBpZihvYmplY3QgaW5zdGFuY2VvZiBGaWVsZCl7Ci0gICAgICBGaWVsZCBmaWVsZCA9IChGaWVsZClvYmplY3Q7Ci0gICAgICByZXR1cm5FbGVtZW50ID0gbmV3IEZpZWxkRWxlbWVudCgoQmVhbkVsZW1lbnQpcGFyZW50RWxlbWVudCxmaWVsZC5nZXROYW1lKCkpOwotICAgIH0KLSAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNZXRob2QpewotICAgICAgTWV0aG9kIG1ldGhvZCA9IChNZXRob2Qpb2JqZWN0OwotICAgICAgcmV0dXJuRWxlbWVudCA9IG5ldyBNZXRob2RFbGVtZW50KChCZWFuRWxlbWVudClwYXJlbnRFbGVtZW50LG1ldGhvZC5nZXROYW1lKCksIG1ldGhvZC5nZXRNZXRob2RFbGVtZW50U2lnbmF0dXJlKCkpOwotICAgIH0KLSAgICAvL25vbiBiZWFuaW5mbwotICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFN0cmluZyl7Ci0gICAgICBTdHJpbmcgbmFtZSA9IChTdHJpbmcpb2JqZWN0OyAgCi0gICAgICByZXR1cm5FbGVtZW50ID0gbmV3IEF0dHJpYnV0ZUVsZW1lbnQoKEJlYW5FbGVtZW50KXBhcmVudEVsZW1lbnQsbmFtZSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEphdmFQYXJhbWV0ZXIpewotICAgICAgSmF2YVBhcmFtZXRlciBqYXZhUGFyYW1ldGVyID0gKEphdmFQYXJhbWV0ZXIpb2JqZWN0OwotCi0gICAgICAKLSAgICAgIGlmIChqYXZhUGFyYW1ldGVyLmlzUmV0dXJuKCkpIAotICAgICAgICAgcmV0dXJuRWxlbWVudCA9IG5ldyBQYXJhbWV0ZXJFbGVtZW50KChNZXRob2RFbGVtZW50KXBhcmVudEVsZW1lbnQsUkVUVVJOX1BBUkFNX05BTUUsTWV0aG9kRWxlbWVudC5SRUxfUkVUVVJOX1BBUkFNRVRFUlMsdHJ1ZSk7IAotICAgICAgZWxzZXsgCi0gICAgICAgICAvL2EgamF2YSBwYXJhbWV0ZXIgZ2l2ZXMgdXMgdGhlIHF1YWxpZmllZCBuYW1lIHdlIGRvbnQgd2FudCB0aGlzCi0gICAgICAgICBTdHJpbmcgbmFtZSA9IGphdmFQYXJhbWV0ZXIuZ2V0UXVhbGlmaWVkTmFtZSgpOwotICAgICAgICAgU3RyaW5nIHNob3J0TmFtZTsKLSAgICAgICAgIGludCBpbmRleCA9IG5hbWUubGFzdEluZGV4T2YoIi4iKTsKLSAgICAgICAgIGlmIChpbmRleCAhPSAtMSl7Ci0gICAgICAgICAgIGluZGV4Kys7Ci0gICAgICAgICAgIHNob3J0TmFtZSA9IG5hbWUuc3Vic3RyaW5nKGluZGV4KTsKLSAgICAgICAgIH0KLSAgICAgIGVsc2Ugc2hvcnROYW1lID0gbmFtZTsKLQotICAgICAgICAgcmV0dXJuRWxlbWVudCA9IG5ldyBQYXJhbWV0ZXJFbGVtZW50KChNZXRob2RFbGVtZW50KXBhcmVudEVsZW1lbnQsc2hvcnROYW1lLE1ldGhvZEVsZW1lbnQuUkVMX1BBUkFNRVRFUlMsZmFsc2UpOyAKLQotICAgICAgfQotICAgICAKLSAgICB9Ci0gICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgSmF2YUhlbHBlcnMpewotICAgICAgSmF2YUhlbHBlcnMgamF2YUhlbHBlciA9IChKYXZhSGVscGVycylvYmplY3Q7Ci0gICAgICBTdHJpbmcgamF2YU5hbWU7IAotICAgICAgaWYgKGphdmFIZWxwZXIuaXNBcnJheSgpKSBqYXZhTmFtZSA9IFR5cGVGYWN0b3J5LkFSUkFZX05BTUU7Ci0gICAgICBlbHNlIGphdmFOYW1lID0gamF2YUhlbHBlci5nZXRKYXZhTmFtZSgpOwotICAgICAgaWYgKHBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBQYXJhbWV0ZXJFbGVtZW50KXsKLSAgICAgICAgICByZXR1cm5FbGVtZW50ID0gbmV3IFNpbXBsZUVsZW1lbnQoKFBhcmFtZXRlckVsZW1lbnQpcGFyZW50RWxlbWVudCxqYXZhTmFtZSxqYXZhSGVscGVyLmlzUHJpbWl0aXZlKCkpOwotICAgICAgfQotICAgICAgZWxzZSBpZihwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgQXR0cmlidXRlRWxlbWVudCl7Ci0gICAgICAgICAgcmV0dXJuRWxlbWVudCA9IG5ldyBTaW1wbGVFbGVtZW50KChBdHRyaWJ1dGVFbGVtZW50KXBhcmVudEVsZW1lbnQsamF2YU5hbWUsamF2YUhlbHBlci5pc1ByaW1pdGl2ZSgpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYocGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIEZpZWxkRWxlbWVudCl7Ci0gICAgICAgICAgcmV0dXJuRWxlbWVudCA9IG5ldyBTaW1wbGVFbGVtZW50KChGaWVsZEVsZW1lbnQpcGFyZW50RWxlbWVudCxqYXZhTmFtZSxqYXZhSGVscGVyLmlzUHJpbWl0aXZlKCkpOwotICAgICAgfQotICAgICAgZWxzZSBpZihwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgTWV0aG9kRWxlbWVudCl7Ci0gICAgICAJcmV0dXJuRWxlbWVudCA9IG5ldyBQYXJhbWV0ZXJFbGVtZW50KChNZXRob2RFbGVtZW50KXBhcmVudEVsZW1lbnQsUkVUVVJOX1BBUkFNX05BTUUsTWV0aG9kRWxlbWVudC5SRUxfUkVUVVJOX1BBUkFNRVRFUlMsdHJ1ZSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXR1cm5FbGVtZW50OwotICB9Ci0gIAotICAKLSAgCi0KLQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQmlnRGVjaW1hbFR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9CaWdEZWNpbWFsVHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGRhMGMxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9CaWdEZWNpbWFsVHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIEJpZ0RlY2ltYWxUeXBlIGV4dGVuZHMgU2ltcGxlVHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBCaWdEZWNpbWFsVHlwZSgpCi0gIHsKLSAgICBzdXBlcihUeXBlRmFjdG9yeS5CSUdfREVDSU1BTF9OQU1FKTsKLSAgfQotIAotICAvKioKLSAgKiBTdHJpbmdUb1R5cGUgZ2V0cyB0aGUgc3RyaW5nIHRha2VuIGJ5IHRoZSAKLSAgKiB1c2VyIGludG8gcHJveHkgZm9ybQotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlIC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBTdHJpbmdUb1R5cGUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICByZXR1cm4gIm5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiICsgbmFtZSArICIpOyI7Ci0gIH0KLQotICAvKioKLSAgKiBUaGUgc3RyaW5nQ29udmVyc2lvbiBmdW5jdGlvbiBuYWlscyBvdXQgc3BlY2lmaWMgY29udmVyc2lvbiBtZXRob2RzIHVzZWQgYW1vbmcgc2ltcGxlIHR5cGVzIAotICAqIFRoaXMgbWV0aG9kIGlzIHRvIGJlIGltcGxlbWVudGVkIGJ5IFNpbXBsZVR5cGUgc3ViY2xhc3NlcwotICAqIEBwYXJhbSBTdHJpbmcgdGhlIG5hbWUgb2Ygc3RyaW5nIGFmdGVyIHRoZSByZXF1ZXN0IGNhbGwKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgYWN0dWFsIGNvbnZlcnNpb24gc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZVRvU3RyaW5nKFN0cmluZyBuYW1lKQotICB7Ci0gICAgcmV0dXJuIG5hbWUgKyAiLnRvU3RyaW5nKCkiOwotICB9Ci0gCi0gfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvQmlnSW50ZWdlclR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9CaWdJbnRlZ2VyVHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2Y2MDMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9CaWdJbnRlZ2VyVHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIEJpZ0ludGVnZXJUeXBlIGV4dGVuZHMgU2ltcGxlVHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBCaWdJbnRlZ2VyVHlwZSgpCi0gIHsKLSAgICBzdXBlcihUeXBlRmFjdG9yeS5CSUdfSU5URUdFUl9OQU1FKTsKLSAgfQotIAotICAvKioKLSAgKiBTdHJpbmdUb1R5cGUgZ2V0cyB0aGUgc3RyaW5nIHRha2VuIGJ5IHRoZSAKLSAgKiB1c2VyIGludG8gcHJveHkgZm9ybQotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlIC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBTdHJpbmdUb1R5cGUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICByZXR1cm4gIm5ldyBqYXZhLm1hdGguQmlnSW50ZWdlcigiICsgbmFtZSArICIpOyI7Ci0gIH0KLQotICAvKioKLSAgKiBUaGUgc3RyaW5nQ29udmVyc2lvbiBmdW5jdGlvbiBuYWlscyBvdXQgc3BlY2lmaWMgY29udmVyc2lvbiBtZXRob2RzIHVzZWQgYW1vbmcgc2ltcGxlIHR5cGVzIAotICAqIFRoaXMgbWV0aG9kIGlzIHRvIGJlIGltcGxlbWVudGVkIGJ5IFNpbXBsZVR5cGUgc3ViY2xhc3NlcwotICAqIEBwYXJhbSBTdHJpbmcgdGhlIG5hbWUgb2Ygc3RyaW5nIGFmdGVyIHRoZSByZXF1ZXN0IGNhbGwKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgYWN0dWFsIGNvbnZlcnNpb24gc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZVRvU3RyaW5nKFN0cmluZyBuYW1lKQotICB7Ci0gICAgcmV0dXJuIG5hbWUgKyAiLnRvU3RyaW5nKCkiOwotICB9Ci0gCi0gfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvRGF0YVR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9EYXRhVHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODYxYTY5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9EYXRhVHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi0KLS8qKgotKiBvYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdHlwZQotKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gc2ltcGxpZnkgdGhlIGNvZGVnZW4gcHJvY2VzcwotKiBCZWNhdXNlIGNvZGVnZW4gbWF5IGJlIHByb2Nlc3NlZCBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gdGhlIHR5cGUKLSogd2UgY2FuIGhhbmRsZSBob3cgZWFjaCB0eXBlIHdhbnRzIHRoZSBjb2RlIHRvIGxvb2sgZm9yIGEgc3BlY2lmaWMgdGFzayAKLSogYnkgY3JlYXRpbmcgYSBkYXRhdHlwZSBhbmQgY2FsbGluZyBnZW5lcmljIG1ldGhvZHMgdGhhdCBhcmUgCi0qIHRvIGJlIHNwZWNpYWxpemVkIGluIHN1YmNsYXNzZXMKLSovCi1wdWJsaWMgaW50ZXJmYWNlIERhdGFUeXBlIAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIAotICBwdWJsaWMgc3RhdGljIFN0cmluZyBSRUxfVFlQRSA9ICJ0eXBlIjsKLQotICAvKioKLSAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRzIGJhY2sgdGhlIGNvZGUgcmVxdWlyZWQgdG8gZ28gZnJvbSB0aGUgCi0gICogc3RyaW5nIHRoZSB1c2VyIGVudGVyZWQgdG8gdGhlIGFjdHVhbCB0eXBlIG9mIHRoZSBlbGVtZW50Ci0gICogQHBhcmFtIFN0cmluZyB0eXBlTmFtZSB0aGlzIGlzIHRoZSBhY3R1YWwgbmFtZSBvZiB0aGUgdHlwZSBpZSBpbnQsYm9vbGVhbgotICAqIEBwYXJhbSBTdHJpbmcgbm9kZU5hbWUgVGhlIG5vZGVOYW1lIGlzIGp1c3QgdGhlIGF0dHJpYnV0ZW5hbWUgKyBUZW1wLiAKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBhdHRyaWJ1dGVOYW1lIAotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlIC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBzdHJpbmdDb252ZXJzaW9uKFN0cmluZyB0eXBlTmFtZSwgU3RyaW5nIG5vZGVOYW1lLCBTdHJpbmcgYXR0cmlidXRlTmFtZSk7Ci0KLSAgLyoqCi0gICogT2Z0ZW4gdGltZXMgaW4gb3JkZXIgdG8gY29udmVydCBhIHR5cGUgdG8gc3RyaW5nLCBzdHJpbmcgdG8gdHlwZSBvciBqdXN0IHBsYWluIHByb3ZpZGUgYW4gaW5wdXQgZm9ybQotICAqIEEgdGVtcG9yYXJ5IHZhcmlhYmxlIGlzIHVzZWQuIElmIHdlIHJ1biBpbnRvIGEgc2l0dXRpb24gd2hlcmUgdHdvIG9mIHRoZSBzYW1lIHR5cGVzIGFyZSB1c2VkIGluIHRoZSAgCi0gICogc2FtZSBtZXRob2QgdGhlc2UgdGVtcG9yYXJ5IHZhcmlhYmxlcyBzaGFyZSB0aGUgc2FtZSBuYW1lIHNwYWNlLiBJdCBpc250IGVub3VnaCB0byB1c2UgYSBuYW1lIAotICAqIGJlY2F1c2Ugb2Ygd2UgbWF5IGhhdmUgYSBuZXN0ZWQgc2NlbmFyaW8uIFRoZXJlZm9yZSBhbnkgdGVtcG9yYXJ5IHZhcmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBhIGRhdGFUeXBlCi0gICogbXVzdCB1c2UgYSB1bmlxdWUgbmFtZSBhcGVlbmRlZCB0byB0aGUgZW5kLiBUaGlzIG5hbWUgbXVzdCBiZSBwYXNzZWQgaW4gYW5kIGl0IGlzIHVwIHRvIHRoZSB1c2VyIG9mCi0gICogRGF0YVR5cGUgdG8gaW5zdXJlIGl0IGlzIHVuaXF1ZS4KLSAgKiBAcmV0dXJuIFVuaXF1ZSBOYW1lIAotICAqLwotICBwdWJsaWMgdm9pZCBzZXRVbmlxdWVOYW1lKFN0cmluZyBuYW1lKTsKLQotICAvKioKLSAgKiBUaGlzIGlzIHRoZSBuYW1lIGVhY2ggdGVtcCB2YXJpYWJsZSB3aWxsIHVzZQotICAqIAotICAqCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VW5pcXVlTmFtZSgpOwotICAKLSAgLyoqCi0gICogVGhpcyBmdW5jdGlvbiBkaWN0YXRlcyBob3cgeW91IHdhbnQgdG8gcHJvY2VzcyB0aGUgCi0gICogaW5jb21pbmcgc3RyaW5nIGZyb20gdGhlIGlucHV0IGpzcC4gWW91IG1heSBvciBtYXkgbm90IHVzZSB0aGUgbWFya3VwIAotICAqIGZ1bmN0aW9uIGRlcGVuZGluZyBvbiB0aGUgdHlwZS4gVGhlIHNpbXBsZSB0eXBlcyB1c2UgaXQuIERvbUVsZW1lbnQgZG9lcyBub3QKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgY29kZSB0byBiZSBnZW5lcmF0ZWQKLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSZXF1ZXN0Q29kZShTdHJpbmcgbmFtZSwgU3RyaW5nIGlkKTsKLQotCi0gIC8qKgotICAqIElucHV0IGZvcm0gcmV0dXJucyB0aGUgdXNlciBpbnB1dCBodG1sCi0gICogQHBhcmFtIFN0cmluZyBuYW1lIFRoZSBuYW1lIG9mIHRoZSBpbnB1dCBlbGVtZW50Ci0gICogQHJldHVybiBTdHJpbmcgVGhlIGZvcm0gdXNlZCB0byBjb2xsZWN0IHRoZSBkYXRhCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgaW5wdXRGb3JtKFN0cmluZyBuYW1lKTsKLSAgCi0gIC8qKgotICAqIGNvbnZlcnRzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIHByb3h5IAotICAqIGJhY2sgdG8gYSBzdHJpbmcgCi0gICogQHJldHVybiBTdHJpbmcgY29udmVydCB0aGUgdHlwZSB0byBzdHJpbmcuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZUNvbnZlcnNpb24oU3RyaW5nIG5hbWUpOwotCi0gIC8qKgotICAqIHJldHVybiB0aGUgdHlwZQotICAqIEByZXR1cm4gU3RyaW5nIHRoZSB0eXBlKGluY2x1ZGluZyBwYWNrYWdlKS4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUeXBlKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9EYXRlVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0RhdGVUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YTljNDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0RhdGVUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMTEwICAgMjA5MDg3IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBEYXRlVHlwZSBleHRlbmRzIFNpbXBsZVR5cGUgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgRGF0ZVR5cGUoKQotICB7Ci0gICAgc3VwZXIoVHlwZUZhY3RvcnkuQklHX0RFQ0lNQUxfTkFNRSk7Ci0gIH0KLSAKLQotICAvKioKLSAgKiBpbnB1dEZvcm0gcmV0dXJucyB0aGUgdXNlciBpbnB1dCBodG1sCi0gICogVGhlIHNpbXBsZSBmb3JtIGlzIGp1c3QgYSB0ZXh0IGlucHV0IGJveAotICAqIFRoaXMgaGFzIGJlZW4gc3BlY2lhbGl6ZWQgdG8gc2hvdyBhbiBleGFtcGxlCi0gICogQHBhcmFtIFN0cmluZyBuYW1lIFRoZSBuYW1lIG9mIHRoZSBpbnB1dCBlbGVtZW50Ci0gICogQHJldHVybiBTdHJpbmcgVGhlIGZvcm0gdXNlZCB0byBjb2xsZWN0IHRoZSBkYXRhCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgaW5wdXRGb3JtKFN0cmluZyBuYW1lKQotICB7Ci0gICAgIFN0cmluZyBpbnB1dEZvcm0gPSAiPFREIEFMSUdOPVwibGVmdFwiPjxJTlBVVCBUWVBFPVwiVEVYVFwiIE5BTUU9XCIiIAotICAgICAgICAgICAgICAgICAgICAgICAgICsgbmFtZSArICJcIiBTSVpFPTIwPjwvVEQ+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiPCUiICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgICAgICAgICAgICAgICAgICAgICAgICsgImphdmEudGV4dC5EYXRlRm9ybWF0IGRhdGVGb3JtYXQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiID0gamF2YS50ZXh0LkRhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCk7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICJqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIgZ2NFeGFtcCIgKyBnZXRVbmlxdWVOYW1lKCkrICIgID0gbmV3IGphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhcigpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FIAotICAgICAgICAgICAgICAgICAgICAgICAgICsgImphdmEudXRpbC5EYXRlIGRhdGUiICsgZ2V0VW5pcXVlTmFtZSgpKyAiID0gZ2NFeGFtcCIgKyBnZXRVbmlxdWVOYW1lKCkrICIuZ2V0VGltZSgpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICJTdHJpbmcgdGVtcFJlc3VsdCIgKyBnZXRVbmlxdWVOYW1lKCkrICIgPSBkYXRlRm9ybWF0IiArIGdldFVuaXF1ZU5hbWUoKSsgIi5mb3JtYXQoZGF0ZSIgKyBnZXRVbmlxdWVOYW1lKCkrICIpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiPFREIEFMSUdOPVwibGVmdFwiPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICI8L1RSPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiPFRSPiIgICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgICAgICAgICAgICAgICAgICAgICAgICsgIjxURD4gPC9URD4iICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgICAgICAgICAgICAgICAgICAgICAgICsgIjxURCBBTElHTj1cImxlZnRcIj4gZWcuIDwlPSB0ZW1wUmVzdWx0IiArIGdldFVuaXF1ZU5hbWUoKSsgIiAlPiA8L1REPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiPC9UUj4iICsgU3RyaW5nVXRpbHMuTkVXTElORTsKLSAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgCi0KLSAgICAgcmV0dXJuIGlucHV0Rm9ybTsKLSAgfQotCi0KLSAgLyoKLSAgKiBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHNwZWNpYWxpemVkCi0gICogV2UgbXVzdCB1c2UgdGhlIGRhdGUgZnVuY3Rpb24gdG8gaGVscAotICAqIHVzIGNvbnZlcnQgYmFjayBhbmQgZm9ydGgKLSAgKi8KLSAgcHVibGljIFN0cmluZyBzdHJpbmdDb252ZXJzaW9uKFN0cmluZyB0eXBlTmFtZSwgU3RyaW5nIG5vZGVOYW1lLCBTdHJpbmcgYXR0cmlidXRlTmFtZSkKLSAgewotICAgICBTdHJpbmcgY29udmVyc2lvbiA9ICBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJqYXZhLnRleHQuRGF0ZUZvcm1hdCBkYXRlRm9ybWF0IiArIGdldFVuaXF1ZU5hbWUoKSsgIiA9IGphdmEudGV4dC5EYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZSgpOyIgIAotICAgICAgICAgICAgICAgICAgICAgICAgICsgU3RyaW5nVXRpbHMuTkVXTElORSArIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgbm9kZU5hbWUgICsgICI9IGRhdGVGb3JtYXQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiLnBhcnNlKCIgKyBhdHRyaWJ1dGVOYW1lICsgIik7IiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICIiICsgU3RyaW5nVXRpbHMuTkVXTElORTsKLSAgICAgcmV0dXJuIGNvbnZlcnNpb247Ci0gIH0KLQotICAvKioKLSAgKiB0aGlzIGlzIG5lZWRlZCBmb3IgbW9zdCBjYXNlIAotICAqIGJ1dCBpdCBpcyBwZXJpcGhlcmFsIGFzIHRoZSBzdHJpbmdjb252ZXJzaW9uIG5lZWRlZCAKLSAgKiB0byBiZSBvdmVycmlkZGVuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgU3RyaW5nVG9UeXBlKFN0cmluZyBuYW1lKQotICB7Ci0gICAgcmV0dXJuICIiOwotICB9Ci0KLQotCi0gIC8qKgotICAqIGNvbnZlcnRzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIHByb3h5IAotICAqIGJhY2sgdG8gYSBzdHJpbmcgCi0gICogQHJldHVybiBTdHJpbmcgY29udmVydCB0aGUgdHlwZSB0byBzdHJpbmcuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZUNvbnZlcnNpb24oU3RyaW5nIG5hbWUpCi0gIHsKLQotICAgIFN0cmluZyBjb252ZXJzaW9uID0gR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiamF2YS50ZXh0LkRhdGVGb3JtYXQgZGF0ZUZvcm1hdCIgKyBnZXRVbmlxdWVOYW1lKCkrICIgPSBqYXZhLnRleHQuRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAJICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJTdHJpbmcgdGVtcFJlc3VsdCIgKyBnZXRVbmlxdWVOYW1lKCkrICIgPSBvcmcuZWNsaXBzZS5qc3Qud3MudXRpbC5Kc3BVdGlscy5tYXJrdXAoZGF0ZUZvcm1hdCIgKyBnZXRVbmlxdWVOYW1lKCkrICIuZm9ybWF0KCIgKyBuYW1lICsiKSk7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgCi0gICAgICAgICAgICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiJT4iICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgICAgICAgICAgICAgICAgICAgICArIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgIjwlPSB0ZW1wUmVzdWx0IiArIGdldFVuaXF1ZU5hbWUoKSsgIiAlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiPCUiICsgU3RyaW5nVXRpbHMuTkVXTElORTsKLQotICAgIHJldHVybiBjb252ZXJzaW9uOwotICB9Ci0KLQotCi0gIC8qKgotICAqIFRoZSBzdHJpbmdDb252ZXJzaW9uIGZ1bmN0aW9uIG5haWxzIG91dCBzcGVjaWZpYyBjb252ZXJzaW9uIG1ldGhvZHMgdXNlZCBhbW9uZyBzaW1wbGUgdHlwZXMgCi0gICogVGhpcyBtZXRob2QgaXMgdG8gYmUgaW1wbGVtZW50ZWQgYnkgU2ltcGxlVHlwZSBzdWJjbGFzc2VzCi0gICogQHBhcmFtIFN0cmluZyB0aGUgbmFtZSBvZiBzdHJpbmcgYWZ0ZXIgdGhlIHJlcXVlc3QgY2FsbAotICAqIEByZXR1cm4gU3RyaW5nIHRoZSBhY3R1YWwgY29udmVyc2lvbiBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZS4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBUeXBlVG9TdHJpbmcoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICByZXR1cm4gIiI7Ci0gIH0KLSAKLSB9Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9Eb21FbGVtZW50VHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0RvbUVsZW1lbnRUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNDA2YWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0RvbUVsZW1lbnRUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBEb21FbGVtZW50VHlwZSBpbXBsZW1lbnRzIERhdGFUeXBlCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIHByb3RlY3RlZCBTdHJpbmcgZlR5cGU7Ci0gIHByb3RlY3RlZCBTdHJpbmcgZlVuaXF1ZU5hbWU7Ci0KLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBEb21FbGVtZW50VHlwZSgpCi0gIHsKLSAgICBmVHlwZSA9ICJvcmcudzNjLmRvbS5FbGVtZW50IjsKLSAgICBmVW5pcXVlTmFtZSA9ICIiOwotICB9Ci0KLSAgLyoqCi0gICogaW5wdXRGb3JtIHJldHVybnMgdGhlIHVzZXIgaW5wdXQgaHRtbAotICAqIFRoZSBEb21FbGVtZW50IGZvcm0gaXMgYSB0ZXh0IGJveAotICAqIEBwYXJhbSBTdHJpbmcgbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW5wdXQgZWxlbWVudAotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBmb3JtIHVzZWQgdG8gY29sbGVjdCB0aGUgZGF0YQotICAqLwotICBwdWJsaWMgU3RyaW5nIGlucHV0Rm9ybShTdHJpbmcgbmFtZSkKLSAgewotICAgICBTdHJpbmcgaW5wdXRGb3JtID0gIjxURCBBTElHTj1cImxlZnRcIj48VEVYVEFSRUEgUm93cz03IENvbHM9NDUgTkFNRT1cIiIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyBuYW1lICsgIlwiPjwvVEVYVEFSRUE+PC9URD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICI8L1RSPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICByZXR1cm4gaW5wdXRGb3JtOwotICB9Ci0KLSAgIC8qKgotICAqIFRoaXMgZnVuY3Rpb24gZGljdGF0ZXMgaG93IHlvdSB3YW50IHRvIHByb2Nlc3MgdGhlIAotICAqIGluY29taW5nIHN0cmluZyBmcm9tIHRoZSBpbnB1dCBqc3AuIFlvdSBtYXkgb3IgbWF5IG5vdCB1c2UgdGhlIG1hcmt1cCAKLSAgKiBmdW5jdGlvbiBkZXBlbmRpbmcgb24gdGhlIHR5cGUuIFRoZSBzaW1wbGUgdHlwZXMgdXNlIGl0LiBEb21FbGVtZW50IGRvZXMgbm90Ci0gICogQHBhcmFtIFN0cmluZyB0aGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlCi0gICogQHJldHVybiBTdHJpbmcgdGhlIGNvZGUgdG8gYmUgZ2VuZXJhdGVkCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVxdWVzdENvZGUoU3RyaW5nIG5hbWUsIFN0cmluZyBpZCkKLSAgewotICAgICBTdHJpbmcgcmVxdWVzdENvZGUgPSBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJTdHJpbmciICsgR2VuZXJhdG9yLlNQQUNFIAotICAgICAJICAgICAgICAgICAgICAgICAgICsgaWQgKyAiPSAgcmVxdWVzdC5nZXRQYXJhbWV0ZXIoXCIiCi0gICAgIAkgICAgICAgICAgICAgICAgICAgKyBuYW1lICsiXCIpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICByZXR1cm4gcmVxdWVzdENvZGU7Ci0gIH0KLQotICAvKioKLSAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRzIGJhY2sgdGhlIGNvZGUgcmVxdWlyZWQgdG8gZ28gZnJvbSB0aGUgCi0gICogc3RyaW5nIHRoZSB1c2VyIGVudGVyZWQgdG8gdGhlIGFjdHVhbCB0eXBlIG9mIHRoZSBlbGVtZW50Ci0gICogQHBhcmFtIFN0cmluZyB0eXBlTmFtZSB0aGlzIGlzIHRoZSBhY3R1YWwgbmFtZSBvZiB0aGUgdHlwZSBpZSBpbnQsYm9vbGVhbgotICAqIEBwYXJhbSBTdHJpbmcgbm9kZU5hbWUgVGhlIG5vZGVOYW1lIGlzIGp1c3QgdGhlIGF0dHJpYnV0ZW5hbWUgKyBUZW1wLiAKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBhdHRyaWJ1dGVOYW1lIAotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlIC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBzdHJpbmdDb252ZXJzaW9uKFN0cmluZyB0eXBlTmFtZSwgU3RyaW5nIG5vZGVOYW1lLCBTdHJpbmcgYXR0cmlidXRlTmFtZSkKLSAgewotICAgICBTdHJpbmcgY29udmVyc2lvbiA9ICBHZW5lcmF0b3IuRE9VQkxFX1RBQiAKLSAgICAgICAgICAgICAgICAgICAgICAgKyAib3JnLnczYy5kb20uRWxlbWVudCAiICsgbm9kZU5hbWUgKyAiPSBvcmcuZWNsaXBzZS5qc3Qud3MudXRpbC5Eb21FbGVtZW50SGVscGVyLmNyZWF0ZURvbUVsZW1lbnRGcm9tWE1MU3RyaW5nKCIgKyBhdHRyaWJ1dGVOYW1lICsgIik7IiAKLQkgICAgICAgICAgICAgICAgICAgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICByZXR1cm4gY29udmVyc2lvbjsgCi0gIH0KLQotICAvKioKLSAgKiBUaGlzIGlzIGJhc2ljYWxseSB0aGUgZnVuY3Rpb24gdGhhdCBkaWN0YXRlcyBob3cgd2Ugd2FudCB0byBkaXNwbGF5IHRoaXMgdHlwZSAKLSAgKiB1cG9uIHJlY2VpdmluZyBpdCBhcyBhIHJldHVybiBmcm9tIGEgcHJveHkgbWV0aG9kCi0gICogQHBhcmFtIFN0cmluZyB0aGUgbmFtZSBvZiB0aGUgdHlwZQotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBkaXNwbGF5IHN0cmluZwotICAqLwotICBwdWJsaWMgU3RyaW5nIFR5cGVDb252ZXJzaW9uKFN0cmluZyBuYW1lKQotICB7Ci0gICAgU3RyaW5nIHR5cGVUb1N0cmluZyA9IEdlbmVyYXRvci5ET1VCTEVfVEFCICsgIlN0cmluZyB0ZW1wUmVzdWx0IiArIGdldFVuaXF1ZU5hbWUoKSsgIiA9IG9yZy5lY2xpcHNlLmpzdC53cy51dGlsLkRvbUVsZW1lbnRIZWxwZXIuZG9tV3JpdGVyKCIgKyBuYW1lICsgIiwgbmV3IGphdmEubGFuZy5TdHJpbmdCdWZmZXIoKSIgKyAiKTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiPCU9IHRlbXBSZXN1bHQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiICU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICI8JSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotCi0gICAgcmV0dXJuIHR5cGVUb1N0cmluZzsKLSAgfQotCi0gIC8qKgotICAqIHJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHR5cGUKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgbmFtZShpbmNsdWRpbmcgcGFja2FnZSkuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gZlR5cGU7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFVuaXF1ZU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGZVbmlxdWVOYW1lOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VW5pcXVlTmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIGZVbmlxdWVOYW1lID0gbmFtZTsKLSAgfQotCi19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9GaWVsZEVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9GaWVsZEVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRmYmIxZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvRmllbGRFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkJhc2ljRWxlbWVudDsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIEphdmEgYmVhbiBtZXRob2QgcGFyYW1ldGVyLgotKiBOZWFyZXN0IG1vcmFsIGVxdWl2YWxlbnRzOiBqYXZhLmJlYW5zLlBhcmFtZXRlckRlc2NyaXB0b3IuCi0qLwotcHVibGljIGNsYXNzIEZpZWxkRWxlbWVudCBleHRlbmRzIEJhc2ljRWxlbWVudCBpbXBsZW1lbnRzIEF0dHJpYnV0ZUVsZW1lbnRUeXBlCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZlNldHRlck1ldGhvZDsKLSAgcHJpdmF0ZSBTdHJpbmcgZkdldHRlck1ldGhvZDsKLQotIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUxfVFlQRSA9ICJ0eXBlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVMX09XTklOR19CRUFOID0gIm93bmluZ2JlYW4iOwotICAKLSAgLyoqCi0gICogQ29uc3RydWN0b3IgdGhpcyB0YWtlcyB0aGUgb3duaW5nIGJlYW4uCi0gICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZS4KLSAgKiBAcGFyYW0gYmVhbkVsZW1lbnQgdGhlIGJlYW4gdGhhdCBvd25zIHRoaXMgYXR0cmlidXRlLgotICAqLwotICBwdWJsaWMgRmllbGRFbGVtZW50ICggQmVhbkVsZW1lbnQgYmVhbkVsZW1lbnQsIFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSxiZWFuRWxlbWVudCxSRUxfT1dOSU5HX0JFQU4sQmVhbkVsZW1lbnQuUkVMX0ZJRUxEUyk7Ci0gICAgZlNldHRlck1ldGhvZCA9IG5hbWU7Ci0gICAgZkdldHRlck1ldGhvZCA9IG5hbWU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRTZXR0ZXJNZXRob2QoU3RyaW5nIHNldHRlck1ldGhvZCkKLSAgewotICAgIGZTZXR0ZXJNZXRob2QgPSBzZXR0ZXJNZXRob2Q7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNldHRlck1ldGhvZCgpCi0gIHsKLSAgICByZXR1cm4gZlNldHRlck1ldGhvZDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0R2V0dGVyTWV0aG9kKCkKLSAgewotICAgIHJldHVybiBmR2V0dGVyTWV0aG9kOwotICB9Ci0gCi0gIHB1YmxpYyB2b2lkIHNldEdldHRlck1ldGhvZChTdHJpbmcgZ2V0dGVyTWV0aG9kKQotICB7Ci0gICAgZkdldHRlck1ldGhvZCA9IGdldHRlck1ldGhvZDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2V0dGVyU2lnbmF0dXJlKFN0cmluZyBhdHRyaWJ1dGUpCi0gIHsKLSAgICByZXR1cm4gZlNldHRlck1ldGhvZCArICIgPSAiICsgYXR0cmlidXRlICsgIjsiOwotICB9Ci0gICAKLSAgLyoqCi0gICogUmV0dXJucyB0aGUgQmVhbiB0aGF0IG93bnMgdGhpcyBBdHRyaWJ1dGUuCi0gICogQHJldHVybiBCZWFuRWxlbWVudCBUaGUgYmVhbiB0aGF0IG93bnMgdGhpcyBhdHRyaWJ1dGUuCi0gICovCi0gIHB1YmxpYyBCZWFuRWxlbWVudCBnZXRPd25pbmdCZWFuRWxlbWVudCAoKQotICB7Ci0gICAgRW51bWVyYXRpb24gZSA9IGdldEVsZW1lbnRzKFJFTF9PV05JTkdfQkVBTik7Ci0gICAgcmV0dXJuIGUuaGFzTW9yZUVsZW1lbnRzKCkgPyAoQmVhbkVsZW1lbnQpZS5uZXh0RWxlbWVudCgpIDogbnVsbDsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIHR5cGUgdGhhdCBpcyBvd25lZCBieSB0aGlzIGF0dHJpYnV0dGUuCi0gICogQHJldHVybiBUeXBlRWxlbWVudCBUaGUgVHlwZSB0aGF0IG9mIHRoaXMgYXR0cmlidXRlLgotICAqLwotICBwdWJsaWMgVHlwZUVsZW1lbnQgZ2V0VHlwZUVsZW1lbnQgKCkKLSAgewotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRFbGVtZW50cyhSRUxfVFlQRSk7Ci0gICAgcmV0dXJuIGUuaGFzTW9yZUVsZW1lbnRzKCkgPyAoVHlwZUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpIDogbnVsbDsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvR3JlZ29yaWFuQ2FsZW5kYXJUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvR3JlZ29yaWFuQ2FsZW5kYXJUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhOWQ5ZDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0dyZWdvcmlhbkNhbGVuZGFyVHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTExMCAgIDIwOTA4NyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uR2VuZXJhdG9yOwotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIEdyZWdvcmlhbkNhbGVuZGFyVHlwZSBleHRlbmRzIFNpbXBsZVR5cGUgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgR3JlZ29yaWFuQ2FsZW5kYXJUeXBlKCkKLSAgewotICAgIHN1cGVyKFR5cGVGYWN0b3J5LkdSRUdPUklBTl9DQUxFTkRBUl9OQU1FKTsKLSAgfQotCi0KLSAgLyoqCi0gICogaW5wdXRGb3JtIHJldHVybnMgdGhlIHVzZXIgaW5wdXQgaHRtbAotICAqIFRoZSBzaW1wbGUgZm9ybSBpcyBqdXN0IGEgdGV4dCBpbnB1dCBib3gKLSAgKiBUaGlzIGhhcyBiZWVuIHNwZWNpYWxpemVkIHRvIHNob3cgYW4gZXhhbXBsZQotICAqIEBwYXJhbSBTdHJpbmcgbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW5wdXQgZWxlbWVudAotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBmb3JtIHVzZWQgdG8gY29sbGVjdCB0aGUgZGF0YQotICAqLwotICBwdWJsaWMgU3RyaW5nIGlucHV0Rm9ybShTdHJpbmcgbmFtZSkKLSAgewotICAgICBTdHJpbmcgaW5wdXRGb3JtID0gIjxURCBBTElHTj1cImxlZnRcIj48SU5QVVQgVFlQRT1cIlRFWFRcIiBOQU1FPVwiIiAKLSAgICAgICAgICAgICAgICAgICAgICAgICArIG5hbWUgKyAiXCIgU0laRT0yMD48L1REPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FIAotICAgICAgICAgICAgICAgICAgICAgICAgICsgIjwlIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAgICAgICAgICAgICAgICAgICAgICArICJqYXZhLnRleHQuRGF0ZUZvcm1hdCBkYXRlRm9ybWF0IiArIGdldFVuaXF1ZU5hbWUoKSsgIiA9IGphdmEudGV4dC5EYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZSgpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiamF2YS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyIGdjRXhhbXAiICsgZ2V0VW5pcXVlTmFtZSgpKyAiICA9IG5ldyBqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIoKTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICJqYXZhLnV0aWwuRGF0ZSBkYXRlIiArIGdldFVuaXF1ZU5hbWUoKSsgIiA9IGdjRXhhbXAiICsgZ2V0VW5pcXVlTmFtZSgpKyAiLmdldFRpbWUoKTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiU3RyaW5nIHRlbXBSZXN1bHQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiID0gZGF0ZUZvcm1hdCIgKyBnZXRVbmlxdWVOYW1lKCkrICIuZm9ybWF0KGRhdGUiICsgZ2V0VW5pcXVlTmFtZSgpKyAiKTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiJT4iICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICI8VEQgQUxJR049XCJsZWZ0XCI+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgIAotICAgICAgICAgICAgICAgICAgICAgICAgICsgIjwvVFI+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAgICAgICAgICAgICAgICAgICAgICArICI8VFI+IiAgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiPFREPiA8L1REPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiPFREIEFMSUdOPVwibGVmdFwiPiBlZy4gPCU9IHRlbXBSZXN1bHQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiICU+IDwvVEQ+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAgICAgICAgICAgICAgICAgICAgICArICI8L1RSPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAKLQotICAgICByZXR1cm4gaW5wdXRGb3JtOwotICB9Ci0gCi0gCi0gIC8qCi0gICogVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSBzcGVjaWFsaXplZAotICAqIFdlIG11c3QgdXNlIHRoZSBkYXRlIGZ1bmN0aW9uIHRvIGhlbHAKLSAgKiB1cyBjb252ZXJ0IGJhY2sgYW5kIGZvcnRoCi0gICovCi0gICBwdWJsaWMgU3RyaW5nIHN0cmluZ0NvbnZlcnNpb24oU3RyaW5nIHR5cGVOYW1lLCBTdHJpbmcgbm9kZU5hbWUsIFN0cmluZyBhdHRyaWJ1dGVOYW1lKQotICB7Ci0gICAgIFN0cmluZyBjb252ZXJzaW9uID0gIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgImphdmEudGV4dC5EYXRlRm9ybWF0IGRhdGVGb3JtYXQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiID0gamF2YS50ZXh0LkRhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCk7IiAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyBTdHJpbmdVdGlscy5ORVdMSU5FICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAgImphdmEudXRpbC5EYXRlIGRhdGVUZW1wIiArIGdldFVuaXF1ZU5hbWUoKSsgIiAgPSBkYXRlRm9ybWF0IiArIGdldFVuaXF1ZU5hbWUoKSsgIi5wYXJzZSgiICsgYXR0cmlidXRlTmFtZSArICIpOyIgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyBTdHJpbmdVdGlscy5ORVdMSU5FICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyBHZW5lcmF0b3IuU1BBQ0UgKyBub2RlTmFtZSArICIgPSAiICsgIm5ldyBqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIoKTsiIAotICAgICAgICAgICAgICAgICAgICAgICAgICsgU3RyaW5nVXRpbHMuTkVXTElORSArIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgbm9kZU5hbWUgKyAiLnNldFRpbWUoZGF0ZVRlbXAiICsgZ2V0VW5pcXVlTmFtZSgpKyAiKTsiCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiIiArIFN0cmluZ1V0aWxzLk5FV0xJTkU7Ci0gICAgIHJldHVybiBjb252ZXJzaW9uOwotICB9Ci0KLSAgLyoqCi0gICogdGhpcyBpcyBuZWVkZWQgZm9yIG1vc3QgY2FzZSAKLSAgKiBidXQgaXQgaXMgcGVyaXBoZXJhbCBhcyB0aGUgc3RyaW5nY29udmVyc2lvbiBuZWVkZWQgCi0gICogdG8gYmUgb3ZlcnJpZGRlbgotICAqLwotICBwdWJsaWMgU3RyaW5nIFN0cmluZ1RvVHlwZShTdHJpbmcgbmFtZSkKLSAgewotICAgIHJldHVybiAiIjsKLSAgfQotCi0gIC8qKgotICAqIGNvbnZlcnRzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIHByb3h5IAotICAqIGJhY2sgdG8gYSBzdHJpbmcgCi0gICogQHJldHVybiBTdHJpbmcgY29udmVydCB0aGUgdHlwZSB0byBzdHJpbmcuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZUNvbnZlcnNpb24oU3RyaW5nIG5hbWUpCi0gIHsKLQotICAgIFN0cmluZyBjb252ZXJzaW9uID0gR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiamF2YS50ZXh0LkRhdGVGb3JtYXQgZGF0ZUZvcm1hdCIgKyBnZXRVbmlxdWVOYW1lKCkrICIgPSBqYXZhLnRleHQuRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAJICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJqYXZhLnV0aWwuRGF0ZSBkYXRlIiArIGdldFVuaXF1ZU5hbWUoKSsgIiA9ICIgKyBuYW1lICsgIi5nZXRUaW1lKCk7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgCi0gICAgCSAgICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiU3RyaW5nIHRlbXBSZXN1bHQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiID0gb3JnLmVjbGlwc2UuanN0LndzLnV0aWwuSnNwVXRpbHMubWFya3VwKGRhdGVGb3JtYXQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiLmZvcm1hdChkYXRlIiArIGdldFVuaXF1ZU5hbWUoKSArICIpKTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiPCU9IHRlbXBSZXN1bHQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiICU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICI8JSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotCi0gICAgcmV0dXJuIGNvbnZlcnNpb247Ci0gIH0KLQotCi0KLSAgLyoqCi0gICogVGhlIHN0cmluZ0NvbnZlcnNpb24gZnVuY3Rpb24gbmFpbHMgb3V0IHNwZWNpZmljIGNvbnZlcnNpb24gbWV0aG9kcyB1c2VkIGFtb25nIHNpbXBsZSB0eXBlcyAKLSAgKiBUaGlzIG1ldGhvZCBpcyB0byBiZSBpbXBsZW1lbnRlZCBieSBTaW1wbGVUeXBlIHN1YmNsYXNzZXMKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBuYW1lIG9mIHN0cmluZyBhZnRlciB0aGUgcmVxdWVzdCBjYWxsCi0gICogQHJldHVybiBTdHJpbmcgdGhlIGFjdHVhbCBjb252ZXJzaW9uIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lLgotICAqLwotICBwdWJsaWMgU3RyaW5nIFR5cGVUb1N0cmluZyhTdHJpbmcgbmFtZSkKLSAgewotICAgIHJldHVybiAiIjsKLSAgfQotIAotIH0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0hhc2h0YWJsZVR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9IYXNodGFibGVUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZmYyY2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL0hhc2h0YWJsZVR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHJlY29nbml6ZWQgcmV0dXJuIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIEhhc2h0YWJsZVR5cGUgZXh0ZW5kcyBSZWNvZ25pemVkUmV0dXJuVHlwZQotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIAotICAvKioKLSAgKkNvbnN0cnVjdG9yCi0gICoKLSAgKi8KLSAgcHVibGljIEhhc2h0YWJsZVR5cGUoKQotICB7Ci0gICAgc3VwZXIoVHlwZUZhY3RvcnkuSEFTSFRBQkxFX05BTUUpOwotICB9Ci0KLSAgCi19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9NYXBUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvTWFwVHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDM1YmZiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9NYXBUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWw7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSByZWNvZ25pemVkIHJldHVybiB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBNYXBUeXBlIGV4dGVuZHMgUmVjb2duaXplZFJldHVyblR5cGUKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBNYXBUeXBlKCkKLSAgewotICAgIHN1cGVyKFR5cGVGYWN0b3J5Lk1BUF9OQU1FKTsKLSAgfQotCi0gIAotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvTWV0aG9kRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL01ldGhvZEVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcxZTRlZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvTWV0aG9kRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuQmFzaWNFbGVtZW50OwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgSmF2YSBiZWFuIG1ldGhvZC4KLSogTmVhcmVzdCBtb3JhbCBlcXVpdmFsZW50czogamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kLCBqYXZhLmJlYW5zLk1ldGhvZERlc2NyaXB0b3IuCi0qLwotcHVibGljIGNsYXNzIE1ldGhvZEVsZW1lbnQgZXh0ZW5kcyBCYXNpY0VsZW1lbnQKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVMX0JFQU4gPSAiYmVhbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFTF9QQVJBTUVURVJTID0gInBhcmFtZXRlcnMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUxfUkVUVVJOX1BBUkFNRVRFUlMgPSAicmV0dXJucGFyYW1ldGVycyI7Ci0gIHByaXZhdGUgU3RyaW5nIGZEaXNwbGF5TmFtZTsKLSAgcHJpdmF0ZSBTdHJpbmcgZk5hbWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBmTWV0aG9kT21pdHRlZDsKLQotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiBAcGFyYW0gYmVhbiBUaGUgQmVhbiB0aGF0IG93bnMgdGhpcyBtZXRob2QuCi0gICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1ldGhvZC4KLSAgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgbWV0aG9kLgotICAqLwotICBwdWJsaWMgTWV0aG9kRWxlbWVudCAoIEJlYW5FbGVtZW50IGJlYW5FbGVtZW50LCBTdHJpbmcgbmFtZSwgU3RyaW5nIGRpc3BsYXlOYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSxiZWFuRWxlbWVudCxSRUxfQkVBTixCZWFuRWxlbWVudC5SRUxfTUVUSE9EUyk7Ci0gICAgZkRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7Ci0gICAgZk5hbWUgPSBuYW1lOwotICAgIGZNZXRob2RPbWl0dGVkID0gZmFsc2U7Ci0gICAgCi0gIH0KLQotICAvKgotICAqIEluIHRoZSBldmVudCB0aGF0IHRoZXJlIGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUKLSAgKiB3ZSB3aWxsIHNldCB0aGUgb21taXNzaW9uIGJvb2xlYW4gdmFyaWFibGUKLSAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiB0aGlzIG1ldGhvZCBpcyB0byBiZSBvbW1pdGVkCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGdldE1ldGhvZE9tbWlzc2lvbigpCi0gIHsKLSAgICByZXR1cm4gZk1ldGhvZE9taXR0ZWQ7Ci0gIH0KLQotICAvKgotICAqIEluIHRoZSBldmVudCB0aGF0IHRoZXJlIGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUKLSAgKiB3ZSB3aWxsIGdldCB0aGUgb21taXNzaW9uIGJvb2xlYW4gdmFyaWFibGUKLSAgKiBAcGFyYW0gYm9vbGVhbiB0cnVlIGlmIHRoaXMgbWV0aG9kIGlzIHRvIGJlIG9tbWl0ZWQKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0TWV0aG9kT21taXNzaW9uKGJvb2xlYW4gYm9vbCkKLSAgewotICAgIGZNZXRob2RPbWl0dGVkID0gYm9vbDsKLSAgfQotCi0KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgewotICAgIHJldHVybiBmTmFtZTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGlzcGxheU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGZEaXNwbGF5TmFtZTsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIEJlYW4gdGhhdCBvd25zIHRoaXMgbWV0aG9kLgotICAqIEByZXR1cm4gQmVhbiBUaGUgQmVhbiB0aGF0IG93bnMgdGhpcyBtZXRob2QuCi0gICovCi0gIHB1YmxpYyBCZWFuRWxlbWVudCBnZXRCZWFuRWxlbWVudCAoKQotICB7Ci0gICAgRW51bWVyYXRpb24gZSA9IGdldEVsZW1lbnRzKFJFTF9CRUFOKTsKLSAgICByZXR1cm4gZS5oYXNNb3JlRWxlbWVudHMoKSA/IChCZWFuRWxlbWVudCllLm5leHRFbGVtZW50KCkgOiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyBhbiBlbnVtZXJhdGlvbiBvZiB0aGUgcmV0dXJuIHBhcmFtZXRlciBvZiB0aGlzIG1ldGhvZC4KLSAgKiBAcmV0dXJuIEVudW1lcmF0aW9uIGhvbGRzIHRoZSByZXR1cm4gcGFyYW1ldGVyIG9mIHRoaXMgbWV0aG9kLgotICAqLwotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0UmV0dXJuUGFyYW1ldGVyRW51bSAoKQotICB7Ci0gICAgcmV0dXJuIGdldEVsZW1lbnRzKFJFTF9SRVRVUk5fUEFSQU1FVEVSUyk7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIGFuIGVudW1lcmF0aW9uIG9mIHRoZSByZXR1cm4gcGFyYW1ldGVyIG9mIHRoaXMgbWV0aG9kLgotICAqIEByZXR1cm4gRW51bWVyYXRpb24gaG9sZHMgdGhlIHJldHVybiBwYXJhbWV0ZXIgb2YgdGhpcyBtZXRob2QuCi0gICovCi0gIHB1YmxpYyBQYXJhbWV0ZXJFbGVtZW50IGdldFJldHVyblBhcmFtZXRlckVsZW1lbnQgKCkKLSAgewotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRSZXR1cm5QYXJhbWV0ZXJFbnVtKCk7Ci0gICAgcmV0dXJuIGUuaGFzTW9yZUVsZW1lbnRzKCkgPyAoUGFyYW1ldGVyRWxlbWVudCllLm5leHRFbGVtZW50KCkgOiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyBhbiBlbnVtZXJhdGlvbiBvZiBhbGwgUGFyYW1ldGVyIG9iamVjdHMgb2YgdGhpcyBtZXRob2QuCi0gICogQHJldHVybiBFbnVtZXJhdGlvbiBBbGwgUGFyYW1ldGVyIG9iamVjdHMgb2YgdGhpcyBtZXRob2QuCi0gICovCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRQYXJhbWV0ZXJFbGVtZW50cyAoKQotICB7Ci0gICAgcmV0dXJuIGdldEVsZW1lbnRzKFJFTF9QQVJBTUVURVJTKTsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBQYXJhbWV0ZXIgb2JqZWN0cyBvZiB0aGlzIG1ldGhvZC4KLSAgKiBAcmV0dXJuIGludCBUaGUgbnVtYmVyIG9mIFBhcmFtZXRlciBvYmplY3RzIG9mIHRoaXMgbWV0aG9kLgotICAqLwotICBwdWJsaWMgaW50IGdldE51bWJlck9mUGFyYW1ldGVyRWxlbWVudHMgKCkKLSAgewotICAgIHJldHVybiBnZXROdW1iZXJPZkVsZW1lbnRzKFJFTF9QQVJBTUVURVJTKTsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvT2JqZWN0VHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL09iamVjdFR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVlYmRmZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvT2JqZWN0VHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwODIzCSAgMTQ1NjQzIG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiAoY3JlYXRlZCBjbGFzcykKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi0KLS8qKgotKiBvYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdHlwZQotKiAKLSovCi1wdWJsaWMgY2xhc3MgT2JqZWN0VHlwZSBleHRlbmRzIFNpbXBsZVR5cGUgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgT2JqZWN0VHlwZSgpCi0gIHsKLSAgICBzdXBlcihUeXBlRmFjdG9yeS5PQkpFQ1RfTkFNRSk7Ci0gIH0KLSAKLSAgLyoqCi0gICogU3RyaW5nVG9UeXBlIGdldHMgdGhlIHN0cmluZyB0YWtlbiBieSB0aGUgCi0gICogdXNlciBpbnRvIHByb3h5IGZvcm0KLSAgKiBAcmV0dXJuIFN0cmluZyBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gdHlwZSAuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgU3RyaW5nVG9UeXBlKFN0cmluZyBuYW1lKQotICB7IAotCS8vV2UgY2FuJ3QgZGVzZXJpYWxpemUgYSBTdHJpbmcgdG8gYW4gT2JqZWN0Ci0JLy90aGlzIHNob3VsZCBuZXZlciBhY3R1YWxseSBiZSBjYWxsZWQgc2luY2UKLQkvL21ldGhvZHMgd2l0aCBPYmplY3RzIGFzIGlucHV0IGFyZSBvbWl0dGVkLgotICAgIHJldHVybiAibmV3IGphdmEubGFuZy5PYmplY3QoKTsiOwotICB9Ci0KLSAgLyoqCi0gICogVGhlIHN0cmluZ0NvbnZlcnNpb24gZnVuY3Rpb24gbmFpbHMgb3V0IHNwZWNpZmljIGNvbnZlcnNpb24gbWV0aG9kcyB1c2VkIGFtb25nIHNpbXBsZSB0eXBlcyAKLSAgKiBUaGlzIG1ldGhvZCBpcyB0byBiZSBpbXBsZW1lbnRlZCBieSBTaW1wbGVUeXBlIHN1YmNsYXNzZXMKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBuYW1lIG9mIHN0cmluZyBhZnRlciB0aGUgcmVxdWVzdCBjYWxsCi0gICogQHJldHVybiBTdHJpbmcgdGhlIGFjdHVhbCBjb252ZXJzaW9uIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lLgotICAqLwotICBwdWJsaWMgU3RyaW5nIFR5cGVUb1N0cmluZyhTdHJpbmcgbmFtZSkKLSAgewotICAgIHJldHVybiBuYW1lICsgIi50b1N0cmluZygpIjsKLSAgfQotIAotIH0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1BhcmFtZXRlckVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QYXJhbWV0ZXJFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMWNmYzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1BhcmFtZXRlckVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuQmFzaWNFbGVtZW50OwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgSmF2YSBiZWFuIG1ldGhvZCBwYXJhbWV0ZXIuCi0qIE5lYXJlc3QgbW9yYWwgZXF1aXZhbGVudHM6IGphdmEuYmVhbnMuUGFyYW1ldGVyRGVzY3JpcHRvci4KLSovCi1wdWJsaWMgY2xhc3MgUGFyYW1ldGVyRWxlbWVudCBleHRlbmRzIEJhc2ljRWxlbWVudAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFTF9NRVRIT0QgPSAibWV0aG9kIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVMX1RZUEUgPSAidHlwZSI7Ci0KLSAgcHVibGljIGJvb2xlYW4gZlJldHVyblBhcmFtZXRlcj1mYWxzZTsKLSAgCi0gIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIEBwYXJhbSBtZXRob2QgVGhlIE1ldGhvZCB0aGF0IG93bnMgdGhpcyBwYXJhbWV0ZXIuCi0gICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci4KLSAgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyLgotICAqLwotICBwdWJsaWMgUGFyYW1ldGVyRWxlbWVudCAoIE1ldGhvZEVsZW1lbnQgbWV0aG9kRWxlbWVudCwgU3RyaW5nIG5hbWUsIFN0cmluZyByZWxUeXBlLGJvb2xlYW4gcmV0dXJuUGFyYW1ldGVyICkKLSAgewotICAgIHRoaXMobmFtZSxtZXRob2RFbGVtZW50LFJFTF9NRVRIT0QscmVsVHlwZSk7Ci0gICAgZlJldHVyblBhcmFtZXRlciA9IHJldHVyblBhcmFtZXRlcjsKLSAgfQotICAKLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICogQHBhcmFtIG1ldGhvZCBUaGUgTWV0aG9kIHRoYXQgb3ducyB0aGlzIHBhcmFtZXRlci4KLSAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLgotICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIuCi0gICovCi0gIHB1YmxpYyBQYXJhbWV0ZXJFbGVtZW50IChTdHJpbmcgbmFtZSwgTWV0aG9kRWxlbWVudCBtZXRob2RFbGVtZW50LCBTdHJpbmcgb3V0UmVsLFN0cmluZyBpblJlbCkKLSAgewotICAgIHN1cGVyKG5hbWUsbWV0aG9kRWxlbWVudCxvdXRSZWwsaW5SZWwpOwotICB9Ci0gICAKLSAgLyoqCi0gICogUmV0dXJucyB0aGUgTWV0aG9kIHRoYXQgb3ducyB0aGlzIHBhcmFtZXRlci4KLSAgKiBAcmV0dXJuIE1ldGhvZCBUaGUgTWV0aG9kIHRoYXQgb3ducyB0aGlzIHBhcmFtZXRlci4KLSAgKi8KLSAgcHVibGljIE1ldGhvZEVsZW1lbnQgZ2V0TWV0aG9kRWxlbWVudCAoKQotICB7Ci0gICAgRW51bWVyYXRpb24gZSA9IGdldEVsZW1lbnRzKFJFTF9NRVRIT0QpOwotICAgIHJldHVybiBlLmhhc01vcmVFbGVtZW50cygpID8gKE1ldGhvZEVsZW1lbnQpZS5uZXh0RWxlbWVudCgpIDogbnVsbDsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIE1ldGhvZCB0aGF0IG93bnMgdGhpcyBwYXJhbWV0ZXIuCi0gICogQHJldHVybiBNZXRob2QgVGhlIE1ldGhvZCB0aGF0IG93bnMgdGhpcyBwYXJhbWV0ZXIuCi0gICovCi0gIHB1YmxpYyBUeXBlRWxlbWVudCBnZXRUeXBlRWxlbWVudCAoKQotICB7Ci0gICAgRW51bWVyYXRpb24gZSA9IGdldEVsZW1lbnRzKFJFTF9UWVBFKTsKLSAgICByZXR1cm4gZS5oYXNNb3JlRWxlbWVudHMoKSA/IChUeXBlRWxlbWVudCllLm5leHRFbGVtZW50KCkgOiBudWxsOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNSZXR1cm4oKQotICB7Ci0gICAgcmV0dXJuIGZSZXR1cm5QYXJhbWV0ZXI7Ci0gIH0KLQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlQXJyYXlUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlQXJyYXlUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NzMwNjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZUFycmF5VHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSByZWNvZ25pemVkIHJldHVybiB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBQcmltaXRpdmVBcnJheVR5cGUgZXh0ZW5kcyBBcnJheVR5cGUKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBQcmltaXRpdmVBcnJheVR5cGUoU3RyaW5nIHR5cGVOYW1lKQotICB7Ci0gICAgc3VwZXIoVHlwZUZhY3RvcnkuUFJJTUlUSVZFX0FSUkFZX05BTUUsIHR5cGVOYW1lKTsKLSAgfQotCi0gICAvKioKLSAgKiBUaGlzIGlzIGJhc2ljYWxseSB0aGUgZnVuY3Rpb24gdGhhdCBkaWN0YXRlcyBob3cgd2Ugd2FudCB0byBkaXNwbGF5IHRoaXMgdHlwZSAKLSAgKiB1cG9uIHJlY2VpdmluZyBpdCBhcyBhIHJldHVybiBmcm9tIGEgcHJveHkgbWV0aG9kCi0gICogQHBhcmFtIFN0cmluZyB0aGUgbmFtZSBvZiB0aGUgdHlwZQotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBkaXNwbGF5IHN0cmluZwotICAqLwotICBwdWJsaWMgU3RyaW5nIFR5cGVDb252ZXJzaW9uKFN0cmluZyBuYW1lKQotICB7Ci0gICAgU3RyaW5nIHRyaXBwbGVUYWIgPSBHZW5lcmF0b3IuRE9VQkxFX1RBQiArIEdlbmVyYXRvci5UQUI7Ci0KLSAgICBTdHJpbmcgbm9uQmVhbiA9IEdlbmVyYXRvci5ET1VCTEVfVEFCICsgIlN0cmluZyB0ZW1wIiArIGdldFVuaXF1ZU5hbWUoKSArICIgPSBcIltcIjsiIAotICAgIAkgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJmb3IoaW50IGkiICsgZ2V0VW5pcXVlTmFtZSgpICsgIj0wO2kiICtnZXRVbmlxdWVOYW1lKCkgKyAiPCAiICsgbmFtZSAKLSAgICAJICAgICAgICAgICAgICAgICAgICsgIi5sZW5ndGg7aSIgKyBnZXRVbmlxdWVOYW1lKCkgKyAiKyspeyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICAKLSAgICAJICAgICAgICAgICAgICsgdHJpcHBsZVRhYiArICJ0ZW1wIisgZ2V0VW5pcXVlTmFtZSgpICsiID0gdGVtcCIrZ2V0VW5pcXVlTmFtZSgpICsgIiArICIgKyBuYW1lICsgIltpIiArIGdldFVuaXF1ZU5hbWUoKSAKLSAgICAJICAgICAgICAgICAgICAgICAgICsgIl0gKyBcIixcIjsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAgICAgICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAifSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICArIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgImludCBsZW5ndGgiICsgZ2V0VW5pcXVlTmFtZSgpICsgIiA9IHRlbXAiICsgZ2V0VW5pcXVlTmFtZSgpICsgIi5sZW5ndGgoKTsiIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICArIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgInRlbXAiICsgZ2V0VW5pcXVlTmFtZSgpICsgIiA9IHRlbXAiK2dldFVuaXF1ZU5hbWUoKSsiLnN1YnN0cmluZygwLChsZW5ndGgiK2dldFVuaXF1ZU5hbWUoKSsiIC0gMSkpICsgXCJdXCI7IiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgIAkgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICAKLSAgICAJICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiPCU9dGVtcCIrIGdldFVuaXF1ZU5hbWUoKSArIiU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAgICAgICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiPCUiKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotCi0gICAgcmV0dXJuIG5vbkJlYW47Ci0gIH0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZUJvb2xlYW5UeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlQm9vbGVhblR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU4YWQ5ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlQm9vbGVhblR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIFByaW1pdGl2ZUJvb2xlYW5UeXBlIGV4dGVuZHMgUHJpbWl0aXZlVHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBQcmltaXRpdmVCb29sZWFuVHlwZSgpCi0gIHsKLSAgICBzdXBlcihUeXBlRmFjdG9yeS5QUklNX0JPT0xFQU5fTkFNRSk7Ci0gIH0KLSAKLSAgLyoqCi0gICogU3RyaW5nVG9UeXBlIGdldHMgdGhlIHN0cmluZyB0YWtlbiBieSB0aGUgCi0gICogdXNlciBpbnRvIHByb3h5IGZvcm0KLSAgKiBAcmV0dXJuIFN0cmluZyBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gdHlwZS4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBTdHJpbmdUb1R5cGUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBTdHJpbmcgY29udmVyc2lvbiA9ICJCb29sZWFuLnZhbHVlT2YoIiArIG5hbWUgKyAiKS5ib29sZWFuVmFsdWUoKTsiOwotICAgIHJldHVybiBjb252ZXJzaW9uOwotICB9Ci0gIAotICAKLSB9Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QcmltaXRpdmVCeXRlVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZUJ5dGVUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNDVkMjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZUJ5dGVUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWw7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBQcmltaXRpdmVCeXRlVHlwZSBleHRlbmRzIFByaW1pdGl2ZVR5cGUgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgUHJpbWl0aXZlQnl0ZVR5cGUoKQotICB7Ci0gICAgc3VwZXIoVHlwZUZhY3RvcnkuUFJJTV9CWVRFX05BTUUpOwotICB9Ci0gCi0gIC8qKgotICAqIFN0cmluZ1RvVHlwZSBnZXRzIHRoZSBzdHJpbmcgdGFrZW4gYnkgdGhlIAotICAqIHVzZXIgaW50byBwcm94eSBmb3JtCi0gICogQHJldHVybiBTdHJpbmcgY29udmVydCB0aGUgc3RyaW5nIHRvIHR5cGUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgU3RyaW5nVG9UeXBlKFN0cmluZyBuYW1lKQotICB7Ci0gICAgU3RyaW5nIGNvbnZlcnNpb24gPSAiQnl0ZS5wYXJzZUJ5dGUoIiArIG5hbWUgKyAiKTsiOwotICAgIHJldHVybiBjb252ZXJzaW9uOwotICB9Ci0gIAotICAKLSB9Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QcmltaXRpdmVDaGFyVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZUNoYXJUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MmY5MDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZUNoYXJUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWw7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBQcmltaXRpdmVDaGFyVHlwZSBleHRlbmRzIFByaW1pdGl2ZVR5cGUgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgUHJpbWl0aXZlQ2hhclR5cGUoKQotICB7Ci0gICAgc3VwZXIoVHlwZUZhY3RvcnkuUFJJTV9DSEFSX05BTUUpOwotICB9Ci0gCi0gIC8qKgotICAqIFN0cmluZ1RvVHlwZSBnZXRzIHRoZSBzdHJpbmcgdGFrZW4gYnkgdGhlIAotICAqIHVzZXIgaW50byBwcm94eSBmb3JtCi0gICogQHJldHVybiBTdHJpbmcgY29udmVydCB0aGUgc3RyaW5nIHRvIHR5cGUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgU3RyaW5nVG9UeXBlKFN0cmluZyBuYW1lKQotICB7Ci0gICAgU3RyaW5nIGNvbnZlcnNpb24gPSAiIiArIG5hbWUgKyAiLmNoYXJBdCgwKTsiOwotICAgIHJldHVybiBjb252ZXJzaW9uOwotICB9Ci0gIAotICAKLSB9Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QcmltaXRpdmVEb3VibGVUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlRG91YmxlVHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjM2MmU3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QcmltaXRpdmVEb3VibGVUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWw7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBQcmltaXRpdmVEb3VibGVUeXBlIGV4dGVuZHMgUHJpbWl0aXZlVHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBQcmltaXRpdmVEb3VibGVUeXBlKCkKLSAgewotICAgIHN1cGVyKFR5cGVGYWN0b3J5LlBSSU1fRE9VQkxFX05BTUUpOwotICB9Ci0gCi0gIC8qKgotICAqIFN0cmluZ1RvVHlwZSBnZXRzIHRoZSBzdHJpbmcgdGFrZW4gYnkgdGhlIAotICAqIHVzZXIgaW50byBwcm94eSBmb3JtCi0gICogQHJldHVybiBTdHJpbmcgY29udmVydCB0aGUgc3RyaW5nIHRvIHR5cGUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgU3RyaW5nVG9UeXBlKFN0cmluZyBuYW1lKQotICB7Ci0gICAgU3RyaW5nIGNvbnZlcnNpb24gPSAiRG91YmxlLnBhcnNlRG91YmxlKCIgKyBuYW1lICsgIik7IjsKLSAgICByZXR1cm4gY29udmVyc2lvbjsKLSAgfQotICAKLSAgCi0gfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlRmxvYXRUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlRmxvYXRUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMGY5ZDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZUZsb2F0VHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi0KLS8qKgotKiBvYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdHlwZQotKiAKLSovCi1wdWJsaWMgY2xhc3MgUHJpbWl0aXZlRmxvYXRUeXBlIGV4dGVuZHMgUHJpbWl0aXZlVHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBQcmltaXRpdmVGbG9hdFR5cGUoKQotICB7Ci0gICAgc3VwZXIoVHlwZUZhY3RvcnkuUFJJTV9GTE9BVF9OQU1FKTsKLSAgfQotIAotICAvKioKLSAgKiBTdHJpbmdUb1R5cGUgZ2V0cyB0aGUgc3RyaW5nIHRha2VuIGJ5IHRoZSAKLSAgKiB1c2VyIGludG8gcHJveHkgZm9ybQotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlLgotICAqLwotICBwdWJsaWMgU3RyaW5nIFN0cmluZ1RvVHlwZShTdHJpbmcgbmFtZSkKLSAgewotICAgIFN0cmluZyBjb252ZXJzaW9uID0gIkZsb2F0LnBhcnNlRmxvYXQoIiArIG5hbWUgKyAiKTsiOwotICAgIHJldHVybiBjb252ZXJzaW9uOwotICB9Ci0gIAotICAKLSB9Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QcmltaXRpdmVJbnRUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlSW50VHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjMzZGQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QcmltaXRpdmVJbnRUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWw7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBQcmltaXRpdmVJbnRUeXBlIGV4dGVuZHMgUHJpbWl0aXZlVHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBQcmltaXRpdmVJbnRUeXBlKCkKLSAgewotICAgIHN1cGVyKFR5cGVGYWN0b3J5LlBSSU1fSU5URUdFUl9OQU1FKTsKLSAgfQotIAotICAvKioKLSAgKiBTdHJpbmdUb1R5cGUgZ2V0cyB0aGUgc3RyaW5nIHRha2VuIGJ5IHRoZSAKLSAgKiB1c2VyIGludG8gcHJveHkgZm9ybQotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlLgotICAqLwotICBwdWJsaWMgU3RyaW5nIFN0cmluZ1RvVHlwZShTdHJpbmcgbmFtZSkKLSAgewotICAgIFN0cmluZyBjb252ZXJzaW9uID0gIkludGVnZXIucGFyc2VJbnQoIiArIG5hbWUgKyAiKTsiOwotICAgIHJldHVybiBjb252ZXJzaW9uOwotICB9Ci0gIAotICAKLSB9Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QcmltaXRpdmVKYXZhVHlwZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QcmltaXRpdmVKYXZhVHlwZXMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcxNTIzNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlSmF2YVR5cGVzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWw7Ci0KLS8qKgotKiBvYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdHlwZQotKiAKLSovCi1wdWJsaWMgY2xhc3MgUHJpbWl0aXZlSmF2YVR5cGVzIGV4dGVuZHMgU2ltcGxlVHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBQcmltaXRpdmVKYXZhVHlwZXMoU3RyaW5nIHR5cGUpCi0gIHsKLSAgICBzdXBlcih0eXBlKTsKLSAgfQotIAotICAvKioKLSAgKiBTdHJpbmdUb1R5cGUgZ2V0cyB0aGUgc3RyaW5nIHRha2VuIGJ5IHRoZSAKLSAgKiB1c2VyIGludG8gcHJveHkgZm9ybQotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlIC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBTdHJpbmdUb1R5cGUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBTdHJpbmcgY29udmVyc2lvbiA9IGZUeXBlICsgIi52YWx1ZU9mKCIgKyBuYW1lICsgIik7IjsKLSAgICByZXR1cm4gY29udmVyc2lvbjsgICAgCi0gIH0KLQotICAvKioKLSAgKiBUaGUgc3RyaW5nQ29udmVyc2lvbiBmdW5jdGlvbiBuYWlscyBvdXQgc3BlY2lmaWMgY29udmVyc2lvbiBtZXRob2RzIHVzZWQgYW1vbmcgc2ltcGxlIHR5cGVzIAotICAqIFRoaXMgbWV0aG9kIGlzIHRvIGJlIGltcGxlbWVudGVkIGJ5IFNpbXBsZVR5cGUgc3ViY2xhc3NlcwotICAqIEBwYXJhbSBTdHJpbmcgdGhlIG5hbWUgb2Ygc3RyaW5nIGFmdGVyIHRoZSByZXF1ZXN0IGNhbGwKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgYWN0dWFsIGNvbnZlcnNpb24gc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZVRvU3RyaW5nKFN0cmluZyBuYW1lKQotICB7Ci0gICAgcmV0dXJuICJTdHJpbmcudmFsdWVPZigiICsgbmFtZSArICIpIjsKLSAgfQotIH0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZUxvbmdUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlTG9uZ1R5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYwYzgyNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlTG9uZ1R5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIFByaW1pdGl2ZUxvbmdUeXBlIGV4dGVuZHMgUHJpbWl0aXZlVHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBQcmltaXRpdmVMb25nVHlwZSgpCi0gIHsKLSAgICBzdXBlcihUeXBlRmFjdG9yeS5QUklNX0xPTkdfTkFNRSk7Ci0gIH0KLSAKLSAgLyoqCi0gICogU3RyaW5nVG9UeXBlIGdldHMgdGhlIHN0cmluZyB0YWtlbiBieSB0aGUgCi0gICogdXNlciBpbnRvIHByb3h5IGZvcm0KLSAgKiBAcmV0dXJuIFN0cmluZyBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gdHlwZS4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBTdHJpbmdUb1R5cGUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBTdHJpbmcgY29udmVyc2lvbiA9ICJMb25nLnBhcnNlTG9uZygiICsgbmFtZSArICIpOyI7Ci0gICAgcmV0dXJuIGNvbnZlcnNpb247Ci0gIH0KLSAgCi0gIAotIH0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZVNob3J0VHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZVNob3J0VHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjkxY2U2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9QcmltaXRpdmVTaG9ydFR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIFByaW1pdGl2ZVNob3J0VHlwZSBleHRlbmRzIFByaW1pdGl2ZVR5cGUgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgUHJpbWl0aXZlU2hvcnRUeXBlKCkKLSAgewotICAgIHN1cGVyKFR5cGVGYWN0b3J5LlBSSU1fU0hPUlRfTkFNRSk7Ci0gIH0KLSAKLSAgLyoqCi0gICogU3RyaW5nVG9UeXBlIGdldHMgdGhlIHN0cmluZyB0YWtlbiBieSB0aGUgCi0gICogdXNlciBpbnRvIHByb3h5IGZvcm0KLSAgKiBAcmV0dXJuIFN0cmluZyBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gdHlwZS4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBTdHJpbmdUb1R5cGUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBTdHJpbmcgY29udmVyc2lvbiA9ICJTaG9ydC5wYXJzZVNob3J0KCIgKyBuYW1lICsgIik7IjsKLSAgICByZXR1cm4gY29udmVyc2lvbjsKLSAgfQotICAKLSAgCi0gfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ByaW1pdGl2ZVR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMxMDZiOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvUHJpbWl0aXZlVHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMTEwICAgMjA5MDg3IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci0KLS8qKgotKiBvYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdHlwZQotKiAKLSovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgUHJpbWl0aXZlVHlwZSBleHRlbmRzIFNpbXBsZVR5cGUgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgUHJpbWl0aXZlVHlwZShTdHJpbmcgdHlwZSkKLSAgewotICAgIHN1cGVyKHR5cGUpOwotICB9Ci0gCi0gLyoqCi0gICogVGhlIHN0cmluZ0NvbnZlcnNpb24gZnVuY3Rpb24gbmFpbHMgb3V0IHNwZWNpZmljIGNvbnZlcnNpb24gbWV0aG9kcyB1c2VkIGFtb25nIHNpbXBsZSB0eXBlcyAKLSAgKiBUaGlzIG1ldGhvZCBpcyB0byBiZSBpbXBsZW1lbnRlZCBieSBTaW1wbGVUeXBlIHN1YmNsYXNzZXMKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBuYW1lIG9mIHN0cmluZyBhZnRlciB0aGUgcmVxdWVzdCBjYWxsCi0gICogQHJldHVybiBTdHJpbmcgdGhlIGFjdHVhbCBjb252ZXJzaW9uIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lLgotICAqLwotICBwdWJsaWMgU3RyaW5nIHN0cmluZ0NvbnZlcnNpb24oU3RyaW5nIHR5cGVOYW1lLCBTdHJpbmcgbm9kZU5hbWUsIFN0cmluZyBhdHRyaWJ1dGVOYW1lKQotICB7Ci0gICAgIFN0cmluZyBjb252ZXJzaW9uID0gR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyB0eXBlTmFtZSArIEdlbmVyYXRvci5TUEFDRSArIG5vZGVOYW1lIAotICAgICAJICAgICAgICAgICAgICAgICArIEdlbmVyYXRvci5TUEFDRSArICIgPSAiICsgU3RyaW5nVG9UeXBlKGF0dHJpYnV0ZU5hbWUpIAotICAgICAJICAgICAgICAgICAgICAgICArICIiICsgU3RyaW5nVXRpbHMuTkVXTElORTsKLSAgICAgcmV0dXJuIGNvbnZlcnNpb247Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgVHlwZVRvU3RyaW5nKFN0cmluZyBuYW1lKQotICB7Ci0gICAgcmV0dXJuICJTdHJpbmcudmFsdWVPZigiICsgbmFtZSArICIpIjsKLSAgfQotICAKLSAgCi19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9SZWNvZ25pemVkUmV0dXJuVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1JlY29nbml6ZWRSZXR1cm5UeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNzIxYTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1JlY29nbml6ZWRSZXR1cm5UeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSByZWNvZ25pemVkIHJldHVybiB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBSZWNvZ25pemVkUmV0dXJuVHlwZSBpbXBsZW1lbnRzIERhdGFUeXBlCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIHByb3RlY3RlZCBTdHJpbmcgZlR5cGU7Ci0gIHByb3RlY3RlZCBTdHJpbmcgZlVuaXF1ZU5hbWU7Ci0KLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBSZWNvZ25pemVkUmV0dXJuVHlwZShTdHJpbmcgdHlwZSkKLSAgewotICAgIGZUeXBlID0gdHlwZTsKLSAgICBmVW5pcXVlTmFtZSA9ICIiOwotICB9Ci0KLSAgLyoqCi0gICogbm90IHJlbGV2YW50IGF0IHRoaXMgcG9pbnQgCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgaW5wdXRGb3JtKFN0cmluZyBuYW1lKQotICB7Ci0gICAgIHJldHVybiAiIjsKLSAgfQotCi0gICAvKioKLSAgKiBhZ2FpbiBub3QgcmVsZXZhbnQKLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSZXF1ZXN0Q29kZShTdHJpbmcgbmFtZSwgU3RyaW5nIGlkKQotICB7Ci0gICAgIHJldHVybiAiIjsKLSAgfQotCi0gIC8qKgotICAqIFRoaXMgZnVuY3Rpb24gaGFuZHMgYmFjayB0aGUgY29kZSByZXF1aXJlZCB0byBnbyBmcm9tIHRoZSAKLSAgKiBzdHJpbmcgdGhlIHVzZXIgZW50ZXJlZCB0byB0aGUgYWN0dWFsIHR5cGUgb2YgdGhlIGVsZW1lbnQKLSAgKiBAcGFyYW0gU3RyaW5nIHR5cGVOYW1lIHRoaXMgaXMgdGhlIGFjdHVhbCBuYW1lIG9mIHRoZSB0eXBlIGllIGludCxib29sZWFuCi0gICogQHBhcmFtIFN0cmluZyBub2RlTmFtZSBUaGUgbm9kZU5hbWUgaXMganVzdCB0aGUgYXR0cmlidXRlbmFtZSArIFRlbXAuIAotICAqIEBwYXJhbSBTdHJpbmcgdGhlIGF0dHJpYnV0ZU5hbWUgCi0gICogQHJldHVybiBTdHJpbmcgY29udmVydCB0aGUgc3RyaW5nIHRvIHR5cGUgLgotICAqLwotICBwdWJsaWMgU3RyaW5nIHN0cmluZ0NvbnZlcnNpb24oU3RyaW5nIHR5cGVOYW1lLCBTdHJpbmcgbm9kZU5hbWUsIFN0cmluZyBhdHRyaWJ1dGVOYW1lKQotICB7Ci0gICAgcmV0dXJuICIiOwotICB9Ci0KLSAgLyoqCi0gICogVGhpcyBpcyBiYXNpY2FsbHkgdGhlIGZ1bmN0aW9uIHRoYXQgZGljdGF0ZXMgaG93IHdlIHdhbnQgdG8gZGlzcGxheSB0aGlzIHR5cGUgCi0gICogdXBvbiByZWNlaXZpbmcgaXQgYXMgYSByZXR1cm4gZnJvbSBhIHByb3h5IG1ldGhvZAotICAqIEBwYXJhbSBTdHJpbmcgdGhlIG5hbWUgb2YgdGhlIHR5cGUKLSAgKiBAcmV0dXJuIFN0cmluZyBUaGUgZGlzcGxheSBzdHJpbmcKLSAgKi8KLSAgcHVibGljIFN0cmluZyBUeXBlQ29udmVyc2lvbihTdHJpbmcgbmFtZSkKLSAgewotICAgIFN0cmluZyBub25CZWFuID0gICBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJpZigiICsgbmFtZSArICIhPSBudWxsKXsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAgIAotICAgIAkgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJTdHJpbmcgdGVtcCIgKyBnZXRVbmlxdWVOYW1lKCkrIiA9ICIgKyBuYW1lICsgIi50b1N0cmluZygpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FIAotICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICAKLSAgICAJICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAgIjwlPXRlbXAiICsgZ2V0VW5pcXVlTmFtZSgpICsiJT4iICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICAiPCUiICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJ9IjsKLSAgICByZXR1cm4gbm9uQmVhbjsKLSAgfQotCi0gIC8qKgotICAqIHJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHR5cGUKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgbmFtZShpbmNsdWRpbmcgcGFja2FnZSkuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gZlR5cGU7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFVuaXF1ZU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGZVbmlxdWVOYW1lOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VW5pcXVlTmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIGZVbmlxdWVOYW1lID0gbmFtZTsKLSAgfQotCi19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9TT0FQRWxlbWVudFR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9TT0FQRWxlbWVudFR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg5ZTAwOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvU09BUEVsZW1lbnRUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci0KLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBTT0FQRWxlbWVudFR5cGUgaW1wbGVtZW50cyBEYXRhVHlwZQotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIAotICBwcm90ZWN0ZWQgU3RyaW5nIGZUeXBlOwotICBwcm90ZWN0ZWQgU3RyaW5nIGZVbmlxdWVOYW1lOwotCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgU09BUEVsZW1lbnRUeXBlKCkKLSAgewotICAgIGZUeXBlID0gImphdmF4LnhtbC5zb2FwLlNPQVBFbGVtZW50IjsKLSAgICBmVW5pcXVlTmFtZSA9ICIiOwotICB9Ci0KLSAgLyoqCi0gICogaW5wdXRGb3JtIHJldHVybnMgdGhlIHVzZXIgaW5wdXQgaHRtbAotICAqIFRoZSBEb21FbGVtZW50IGZvcm0gaXMgYSB0ZXh0IGJveAotICAqIEBwYXJhbSBTdHJpbmcgbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW5wdXQgZWxlbWVudAotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBmb3JtIHVzZWQgdG8gY29sbGVjdCB0aGUgZGF0YQotICAqLwotICBwdWJsaWMgU3RyaW5nIGlucHV0Rm9ybShTdHJpbmcgbmFtZSkKLSAgewotICAgICBTdHJpbmcgaW5wdXRGb3JtID0gIjxURCBBTElHTj1cImxlZnRcIj48VEVYVEFSRUEgUm93cz03IENvbHM9NDUgTkFNRT1cIiIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyBuYW1lICsgIlwiPjwvVEVYVEFSRUE+PC9URD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICI8L1RSPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICByZXR1cm4gaW5wdXRGb3JtOwotICB9Ci0KLSAgIC8qKgotICAqIFRoaXMgZnVuY3Rpb24gZGljdGF0ZXMgaG93IHlvdSB3YW50IHRvIHByb2Nlc3MgdGhlIAotICAqIGluY29taW5nIHN0cmluZyBmcm9tIHRoZSBpbnB1dCBqc3AuIFlvdSBtYXkgb3IgbWF5IG5vdCB1c2UgdGhlIG1hcmt1cCAKLSAgKiBmdW5jdGlvbiBkZXBlbmRpbmcgb24gdGhlIHR5cGUuIFRoZSBzaW1wbGUgdHlwZXMgdXNlIGl0LiBEb21FbGVtZW50IGRvZXMgbm90Ci0gICogQHBhcmFtIFN0cmluZyB0aGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlCi0gICogQHJldHVybiBTdHJpbmcgdGhlIGNvZGUgdG8gYmUgZ2VuZXJhdGVkCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVxdWVzdENvZGUoU3RyaW5nIG5hbWUsIFN0cmluZyBpZCkKLSAgewotICAgICBTdHJpbmcgcmVxdWVzdENvZGUgPSBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJTdHJpbmciICsgR2VuZXJhdG9yLlNQQUNFIAotICAgICAJICAgICAgICAgICAgICAgICAgICsgaWQgKyAiPSAgcmVxdWVzdC5nZXRQYXJhbWV0ZXIoXCIiCi0gICAgIAkgICAgICAgICAgICAgICAgICAgKyBuYW1lICsiXCIpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICByZXR1cm4gcmVxdWVzdENvZGU7Ci0gIH0KLQotICAvKioKLSAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRzIGJhY2sgdGhlIGNvZGUgcmVxdWlyZWQgdG8gZ28gZnJvbSB0aGUgCi0gICogc3RyaW5nIHRoZSB1c2VyIGVudGVyZWQgdG8gdGhlIGFjdHVhbCB0eXBlIG9mIHRoZSBlbGVtZW50Ci0gICogQHBhcmFtIFN0cmluZyB0eXBlTmFtZSB0aGlzIGlzIHRoZSBhY3R1YWwgbmFtZSBvZiB0aGUgdHlwZSBpZSBpbnQsYm9vbGVhbgotICAqIEBwYXJhbSBTdHJpbmcgbm9kZU5hbWUgVGhlIG5vZGVOYW1lIGlzIGp1c3QgdGhlIGF0dHJpYnV0ZW5hbWUgKyBUZW1wLiAKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBhdHRyaWJ1dGVOYW1lIAotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlIC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBzdHJpbmdDb252ZXJzaW9uKFN0cmluZyB0eXBlTmFtZSwgU3RyaW5nIG5vZGVOYW1lLCBTdHJpbmcgYXR0cmlidXRlTmFtZSkKLSAgewotICAgICBTdHJpbmcgY29udmVyc2lvbiA9ICBHZW5lcmF0b3IuRE9VQkxFX1RBQiAKLSAgICAgICAgICAgICAgICAgICAgICAgKyAiamF2YXgueG1sLnNvYXAuU09BUEVsZW1lbnQgIiArIG5vZGVOYW1lICsgIj0gb3JnLmVjbGlwc2UuanN0LndzLnV0aWwuU29hcEVsZW1lbnRIZWxwZXIuY3JlYXRlU09BUEVsZW1lbnRGcm9tWE1MU3RyaW5nKCIgKyBhdHRyaWJ1dGVOYW1lICsgIik7IiAKLQkgICAgICAgICAgICAgICAgICAgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICByZXR1cm4gY29udmVyc2lvbjsKLSAgfQotCi0gIC8qKgotICAqIFRoaXMgaXMgYmFzaWNhbGx5IHRoZSBmdW5jdGlvbiB0aGF0IGRpY3RhdGVzIGhvdyB3ZSB3YW50IHRvIGRpc3BsYXkgdGhpcyB0eXBlIAotICAqIHVwb24gcmVjZWl2aW5nIGl0IGFzIGEgcmV0dXJuIGZyb20gYSBwcm94eSBtZXRob2QKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBuYW1lIG9mIHRoZSB0eXBlCi0gICogQHJldHVybiBTdHJpbmcgVGhlIGRpc3BsYXkgc3RyaW5nCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZUNvbnZlcnNpb24oU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBTdHJpbmcgdHlwZVRvU3RyaW5nID0gR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiU3RyaW5nIHRlbXBSZXN1bHQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiID0gb3JnLmVjbGlwc2UuanN0LndzLnV0aWwuU29hcEVsZW1lbnRIZWxwZXIuc29hcEVsZW1lbnRXcml0ZXIoIiArIG5hbWUgKyAiLCBuZXcgamF2YS5sYW5nLlN0cmluZ0J1ZmZlcigpIiArICIpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FIAotICAgICAgICAgICAgICAgICAgICAgICArIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgIiU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICI8JT0gdGVtcFJlc3VsdCIgKyBnZXRVbmlxdWVOYW1lKCkrICIgJT4iICsgU3RyaW5nVXRpbHMuTkVXTElORQotICAgICAgICAgICAgICAgICAgICAgICArIEdlbmVyYXRvci5ET1VCTEVfVEFCICsgIjwlIiArIFN0cmluZ1V0aWxzLk5FV0xJTkU7Ci0KLSAgICByZXR1cm4gdHlwZVRvU3RyaW5nOwotICB9Ci0KLSAgLyoqCi0gICogcmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMgdHlwZQotICAqIEByZXR1cm4gU3RyaW5nIHRoZSBuYW1lKGluY2x1ZGluZyBwYWNrYWdlKS4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUeXBlKCkKLSAgewotICAgIHJldHVybiBmVHlwZTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VW5pcXVlTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gZlVuaXF1ZU5hbWU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRVbmlxdWVOYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gICAgZlVuaXF1ZU5hbWUgPSBuYW1lOwotICB9Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1NpbXBsZUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9TaW1wbGVFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NzgzNDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1NpbXBsZUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotCi0vKioKLSogMSBvZiB0aHJlZSB0eXBlIGVsZW1lbnRzIHJlcHJlc2VudHMgcHJpbWl0aXZlcyAKLSovCi1wdWJsaWMgY2xhc3MgU2ltcGxlRWxlbWVudCBleHRlbmRzIFR5cGVFbGVtZW50Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqIENvbnN0cnVjdG9yIAotICAqIEBwYXJhbSBQYXJhbWV0ZXJFbGVtZW50IFRoZSBQYXJhbWV0ZXIgdGhhdCBvd25zIHRoaXMgc2ltcGxlIHR5cGUuCi0gICogQHBhcmFtIFN0cmluZyBOYW1lIG9mIHRoZSBzaW1wbGUgZWxlbWVudC4KLSAgKi8KLSAgcHVibGljIFNpbXBsZUVsZW1lbnQgKCBQYXJhbWV0ZXJFbGVtZW50IHBhcmFtZXRlckVsZW1lbnQsIFN0cmluZyBuYW1lLCBib29sZWFuIHByaW0pCi0gIHsKLSAgICBzdXBlcihuYW1lLHBhcmFtZXRlckVsZW1lbnQsVHlwZUVsZW1lbnQuUkVMX09XTkVSLFR5cGVFbGVtZW50LlJFTF9UWVBFLFR5cGVFbGVtZW50LlNJTVBMRSk7Ci0gICAgZk93bmVyVHlwZSA9IFR5cGVFbGVtZW50LlBBUkFNRVRFUl9PV05FUjsKLSAgICBzZXRQcmltaXRpdmUocHJpbSk7Ci0gIH0KLSAgCi0gIC8qKgotICAqIENvbnN0cnVjdG9yIAotICAqIEBwYXJhbSBQYXJhbWV0ZXJFbGVtZW50IFRoZSBBdHRyaWJ1dGUgdGhhdCBvd25zIHRoaXMgc2ltcGxlIHR5cGUuCi0gICogQHBhcmFtIFN0cmluZyBOYW1lIG9mIHRoZSBBdHRyaWJ1dGVFbGVtZW50LgotICAqLwotICBwdWJsaWMgU2ltcGxlRWxlbWVudCAoIEF0dHJpYnV0ZUVsZW1lbnQgYXR0cmlidXRlRWxlbWVudCwgU3RyaW5nIG5hbWUsIGJvb2xlYW4gcHJpbSkKLSAgewotICAgIHN1cGVyKG5hbWUsYXR0cmlidXRlRWxlbWVudCxUeXBlRWxlbWVudC5SRUxfT1dORVIsVHlwZUVsZW1lbnQuUkVMX1RZUEUsVHlwZUVsZW1lbnQuU0lNUExFKTsKLSAgICBmT3duZXJUeXBlID0gVHlwZUVsZW1lbnQuQVRUUklCVVRFX09XTkVSOwotICAgIHNldFByaW1pdGl2ZShwcmltKTsKLSAgfQotCi0gIC8qKgotICAqIENvbnN0cnVjdG9yIAotICAqIEBwYXJhbSBQYXJhbWV0ZXJFbGVtZW50IFRoZSBBdHRyaWJ1dGUgdGhhdCBvd25zIHRoaXMgc2ltcGxlIHR5cGUuCi0gICogQHBhcmFtIFN0cmluZyBOYW1lIG9mIHRoZSBBdHRyaWJ1dGVFbGVtZW50LgotICAqLwotICBwdWJsaWMgU2ltcGxlRWxlbWVudCAoIEZpZWxkRWxlbWVudCBmaWVsZEVsZW1lbnQsIFN0cmluZyBuYW1lLCBib29sZWFuIHByaW0pCi0gIHsKLSAgICBzdXBlcihuYW1lLGZpZWxkRWxlbWVudCxUeXBlRWxlbWVudC5SRUxfT1dORVIsVHlwZUVsZW1lbnQuUkVMX1RZUEUsVHlwZUVsZW1lbnQuU0lNUExFKTsKLSAgICBmT3duZXJUeXBlID0gVHlwZUVsZW1lbnQuRklFTERfT1dORVI7Ci0gICAgc2V0UHJpbWl0aXZlKHByaW0pOwotICB9Ci0gIAotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvU2ltcGxlVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1NpbXBsZVR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE2ZWRlOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvU2ltcGxlVHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTExMCAgIDIwOTA4NyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uR2VuZXJhdG9yOwotCi0KLS8qKgotKiBvYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdHlwZQotKiAKLSovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2ltcGxlVHlwZSBpbXBsZW1lbnRzIERhdGFUeXBlCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIHByb3RlY3RlZCBTdHJpbmcgZlR5cGU7Ci0gIHByb3RlY3RlZCBTdHJpbmcgZlVuaXF1ZU5hbWU7Ci0KLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBTaW1wbGVUeXBlKFN0cmluZyB0eXBlKQotICB7Ci0gICAgZlR5cGUgPSB0eXBlOwotICB9Ci0KLSAgLyoqCi0gICogaW5wdXRGb3JtIHJldHVybnMgdGhlIHVzZXIgaW5wdXQgaHRtbAotICAqIFRoZSBzaW1wbGUgZm9ybSBpcyBqdXN0IGEgdGV4dCBpbnB1dCBib3gKLSAgKiBAcGFyYW0gU3RyaW5nIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGlucHV0IGVsZW1lbnQKLSAgKiBAcmV0dXJuIFN0cmluZyBUaGUgZm9ybSB1c2VkIHRvIGNvbGxlY3QgdGhlIGRhdGEKLSAgKi8KLSAgcHVibGljIFN0cmluZyBpbnB1dEZvcm0oU3RyaW5nIG5hbWUpCi0gIHsKLSAgICAgU3RyaW5nIGlucHV0Rm9ybSA9ICI8VEQgQUxJR049XCJsZWZ0XCI+PElOUFVUIFRZUEU9XCJURVhUXCIgTkFNRT1cIiIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyBuYW1lICsgIlwiIFNJWkU9MjA+PC9URD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAgICAgICAgICAgICAgICAgICAgICArICI8L1RSPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICByZXR1cm4gaW5wdXRGb3JtOwotICB9Ci0KLSAgIC8qKgotICAqIFRoaXMgZnVuY3Rpb24gZGljdGF0ZXMgaG93IHlvdSB3YW50IHRvIHByb2Nlc3MgdGhlIAotICAqIGluY29taW5nIHN0cmluZyBmcm9tIHRoZSBpbnB1dCBqc3AuIFlvdSBtYXkgb3IgbWF5IG5vdCB1c2UgdGhlIG1hcmt1cCAKLSAgKiBmdW5jdGlvbiBkZXBlbmRpbmcgb24gdGhlIHR5cGUuIFRoZSBzaW1wbGUgdHlwZXMgdXNlIGl0LiBEb21FbGVtZW50IGRvZXMgbm90Ci0gICogQHBhcmFtIFN0cmluZyB0aGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlCi0gICogQHJldHVybiBTdHJpbmcgdGhlIGNvZGUgdG8gYmUgZ2VuZXJhdGVkCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVxdWVzdENvZGUoU3RyaW5nIG5hbWUsIFN0cmluZyBpZCkKLSAgewotICAgICBTdHJpbmcgcmVxdWVzdENvZGUgPSBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJTdHJpbmciICsgR2VuZXJhdG9yLlNQQUNFIAotICAgICAJICAgICAgICAgICAgICAgICAgICsgaWQgKyAiPSAgcmVxdWVzdC5nZXRQYXJhbWV0ZXIoXCIiCi0gICAgIAkgICAgICAgICAgICAgICAgICAgKyBuYW1lICsiXCIpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICByZXR1cm4gcmVxdWVzdENvZGU7Ci0gICB9Ci0gCi0gIC8qKgotICAqIFRoaXMgZnVuY3Rpb24gaGFuZHMgYmFjayB0aGUgY29kZSByZXF1aXJlZCB0byBnbyBmcm9tIHRoZSAKLSAgKiBzdHJpbmcgdGhlIHVzZXIgZW50ZXJlZCB0byB0aGUgYWN0dWFsIHR5cGUgb2YgdGhlIGVsZW1lbnQKLSAgKiBpdCB1c2VzIGFub3RoZXIgZnVuY3Rpb24gdGhhdCBhbGwgc3ViY2xhc3NlcyBvZiBTaW1wbGVUeXBlIGFyZSByZXF1aXJlZCB0byBpbXBsZW1lbnQKLSAgKiBUaGUgU3RyaW5nVG9UeXBlIGZ1bmN0aW9uCi0gICogQHBhcmFtIFN0cmluZyB0eXBlTmFtZSB0aGlzIGlzIHRoZSBhY3R1YWwgbmFtZSBvZiB0aGUgdHlwZSBpZSBpbnQsYm9vbGVhbgotICAqIEBwYXJhbSBTdHJpbmcgbm9kZU5hbWUgVGhlIG5vZGVOYW1lIGlzIGp1c3QgdGhlIGF0dHJpYnV0ZW5hbWUgKyBUZW1wLiAKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBhdHRyaWJ1dGVOYW1lIAotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlIC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBzdHJpbmdDb252ZXJzaW9uKFN0cmluZyB0eXBlTmFtZSwgU3RyaW5nIG5vZGVOYW1lLCBTdHJpbmcgYXR0cmlidXRlTmFtZSkKLSAgewotICAgICBTdHJpbmcgY29udmVyc2lvbiA9IEdlbmVyYXRvci5ET1VCTEVfVEFCICsgR2VuZXJhdG9yLlNQQUNFICsgbm9kZU5hbWUgCi0gICAgIAkgICAgICAgICAgICAgICAgICsgR2VuZXJhdG9yLlNQQUNFICsgIiA9ICIgKyBTdHJpbmdUb1R5cGUoYXR0cmlidXRlTmFtZSkgCi0gICAgIAkgICAgICAgICAgICAgICAgICsgIiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotICAgICByZXR1cm4gY29udmVyc2lvbjsKLSAgfQotCi0gIC8qKgotICAqIFRoZSBzdHJpbmdDb252ZXJzaW9uIGZ1bmN0aW9uIG5haWxzIG91dCBzcGVjaWZpYyBjb252ZXJzaW9uIG1ldGhvZHMgdXNlZCBhbW9uZyBzaW1wbGUgdHlwZXMgCi0gICogVGhpcyBtZXRob2QgaXMgdG8gYmUgaW1wbGVtZW50ZWQgYnkgU2ltcGxlVHlwZSBzdWJjbGFzc2VzCi0gICogQHBhcmFtIFN0cmluZyB0aGUgbmFtZSBvZiBzdHJpbmcgYWZ0ZXIgdGhlIHJlcXVlc3QgY2FsbAotICAqIEByZXR1cm4gU3RyaW5nIHRoZSBhY3R1YWwgY29udmVyc2lvbiBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZS4KLSAgKi8KLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBTdHJpbmdUb1R5cGUoU3RyaW5nIG5hbWUpOwotCi0gIC8qKgotICAqIGNvbnZlcnRzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIHByb3h5IAotICAqIGJhY2sgdG8gYSBzdHJpbmcgCi0gICogQHJldHVybiBTdHJpbmcgY29udmVydCB0aGUgdHlwZSB0byBzdHJpbmcuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZUNvbnZlcnNpb24oU3RyaW5nIG5hbWUpCi0gIHsKLQotICAgIFN0cmluZyBjb252ZXJzaW9uID0gR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiU3RyaW5nIHRlbXBSZXN1bHQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiID0gb3JnLmVjbGlwc2UuanN0LndzLnV0aWwuSnNwVXRpbHMubWFya3VwKCIgKyBUeXBlVG9TdHJpbmcobmFtZSkgKyAiKTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSAKLSAgICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICsgR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiPCU9IHRlbXBSZXN1bHQiICsgZ2V0VW5pcXVlTmFtZSgpKyAiICU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUKLSAgICAgICAgICAgICAgICAgICAgICAgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQiArICI8JSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FOwotCi0gICAgcmV0dXJuIGNvbnZlcnNpb247Ci0gIH0KLQotICAgLyoqCi0gICogVGhlIHN0cmluZ0NvbnZlcnNpb24gZnVuY3Rpb24gbmFpbHMgb3V0IHNwZWNpZmljIGNvbnZlcnNpb24gbWV0aG9kcyB1c2VkIGFtb25nIHNpbXBsZSB0eXBlcyAKLSAgKiBUaGlzIG1ldGhvZCBpcyB0byBiZSBpbXBsZW1lbnRlZCBieSBTaW1wbGVUeXBlIHN1YmNsYXNzZXMKLSAgKiBAcGFyYW0gU3RyaW5nIHRoZSBuYW1lIG9mIHN0cmluZyBhZnRlciB0aGUgcmVxdWVzdCBjYWxsCi0gICogQHJldHVybiBTdHJpbmcgdGhlIGFjdHVhbCBjb252ZXJzaW9uIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lLgotICAqLwotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIFR5cGVUb1N0cmluZyhTdHJpbmcgbmFtZSk7Ci0KLSAgLyoqCi0gICogcmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMgdHlwZQotICAqIEByZXR1cm4gU3RyaW5nIHRoZSBuYW1lKGluY2x1ZGluZyBwYWNrYWdlKS4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUeXBlKCkKLSAgewotICAgIHJldHVybiBmVHlwZTsKLSAgfQotCi0gICBwdWJsaWMgU3RyaW5nIGdldFVuaXF1ZU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGZVbmlxdWVOYW1lOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VW5pcXVlTmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIGZVbmlxdWVOYW1lID0gbmFtZTsKLSAgfQotCi19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9TdGF0ZUxlc3NCZWFuVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1N0YXRlTGVzc0JlYW5UeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZjlkNmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1N0YXRlTGVzc0JlYW5UeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHJlY29nbml6ZWQgcmV0dXJuIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIFN0YXRlTGVzc0JlYW5UeXBlIGV4dGVuZHMgUmVjb2duaXplZFJldHVyblR5cGUKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICAKLSAgcHVibGljIFN0YXRlTGVzc0JlYW5UeXBlKFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIoVHlwZUZhY3RvcnkuU1RBVEVMRVNTX0JFQU4pOwotICB9Ci0KLSAgCi19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9TdHJpbmdUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvU3RyaW5nVHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjk5Yzc0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9TdHJpbmdUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWw7Ci0KLS8qKgotKiBvYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgdHlwZQotKiAKLSovCi1wdWJsaWMgY2xhc3MgU3RyaW5nVHlwZSBleHRlbmRzIFNpbXBsZVR5cGUgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgU3RyaW5nVHlwZSgpCi0gIHsKLSAgICBzdXBlcihUeXBlRmFjdG9yeS5TVFJJTkdfTkFNRSk7Ci0gIH0KLSAKLSAgLyoqCi0gICogU3RyaW5nVG9UeXBlIGdldHMgdGhlIHN0cmluZyB0YWtlbiBieSB0aGUgCi0gICogdXNlciBpbnRvIHByb3h5IGZvcm0KLSAgKiBAcmV0dXJuIFN0cmluZyBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gdHlwZSAuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgU3RyaW5nVG9UeXBlKFN0cmluZyBuYW1lKQotICB7Ci0gICAgU3RyaW5nIGNvbnZlcnNpb24gPSBuYW1lICsgIjsiOwotICAgIHJldHVybiBjb252ZXJzaW9uOyAgICAKLSAgfQotCi0gIC8qKgotICAqIFRoZSBzdHJpbmdDb252ZXJzaW9uIGZ1bmN0aW9uIG5haWxzIG91dCBzcGVjaWZpYyBjb252ZXJzaW9uIG1ldGhvZHMgdXNlZCBhbW9uZyBzaW1wbGUgdHlwZXMgCi0gICogVGhpcyBtZXRob2QgaXMgdG8gYmUgaW1wbGVtZW50ZWQgYnkgU2ltcGxlVHlwZSBzdWJjbGFzc2VzCi0gICogQHBhcmFtIFN0cmluZyB0aGUgbmFtZSBvZiBzdHJpbmcgYWZ0ZXIgdGhlIHJlcXVlc3QgY2FsbAotICAqIEByZXR1cm4gU3RyaW5nIHRoZSBhY3R1YWwgY29udmVyc2lvbiBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZS4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBUeXBlVG9TdHJpbmcoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICByZXR1cm4gIlN0cmluZy52YWx1ZU9mKCIgKyBuYW1lICsgIikiOwotICB9Ci0gCi0gfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvVHlwZUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9UeXBlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjgwZDdmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9UeXBlRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MTAgICAxODA5NTIgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFNhbXBsZSBKU1AgZ2VuZXJhdG9yIGNob2tlcyBvbiBpbnRlcmZhY2VzIGFuZCBhYnN0cmFjdCBjbGFzc2VzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkJhc2ljRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLQotLyoqCi0qIFR5cGVFbGVtZW50IGlzIHRoZSBiYXNlIGNsYXNzIGZvciBKYXZhIGJlYW4gZmVhdHVyZXMgdGhhdCBoYXZlIHR5cGVzLgotKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBUeXBlRWxlbWVudCBleHRlbmRzIEJhc2ljRWxlbWVudAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOT05fSU5TVEFOVElBQkxFID0gIm5vbkluc3RhbnRpYWJsZSI7Ci0KLSAgcHVibGljIHN0YXRpYyBpbnQgQkVBTiA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgaW50IFNJTVBMRSA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgaW50IEFSUkFZID0gMjsKLQotICBwcml2YXRlIGludCBmVHlwZTsKLSAgcHJvdGVjdGVkIGludCBmT3duZXJUeXBlOwotICBwcml2YXRlIGJvb2xlYW4gZlByaW1pdGl2ZSA9IGZhbHNlOwotCi0gIC8qKgotICAqIENvbnN0cnVjdG9yLiBBdXRvbWF0aWNhbGx5IGFkZHMgdGhpcyBvYmplY3QgdG8gdGhlIGdpdmVuIG1vZGVsLgotICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBlbGVtZW50Ci0gICogQHBhcmFtIG1vZGVsIFRoZSBtb2RlbCB0byBvd24gdGhpcyBvYmplY3QuCi0gICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QsIG9uZSBvZgotICAqIDxjb2RlPkJFQU48L2NvZGU+LCA8Y29kZT5TSU1QTEU8L2NvZGU+IG9yIDxjb2RlPkFSUkFZPC9jb2RlPi4KLSAgKi8KLSAgcHJvdGVjdGVkIFR5cGVFbGVtZW50ICggU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBpbnQgdHlwZSApCi0gIHsKLSAgICBzdXBlcihuYW1lLG1vZGVsKTsKLSAgICBmVHlwZSA9IHR5cGU7Ci0gIH0KLQotICAvKioKLSAgKi8KLSAgcHJvdGVjdGVkIFR5cGVFbGVtZW50ICggU3RyaW5nIG5hbWUsIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIG91dGJvdW5kUmVsTmFtZSwgU3RyaW5nIGluYm91bmRSZWxOYW1lLCBpbnQgdHlwZSApCi0gIHsKLSAgICBzdXBlcihuYW1lLGVsZW1lbnQsb3V0Ym91bmRSZWxOYW1lLGluYm91bmRSZWxOYW1lKTsKLSAgICBmVHlwZSA9IHR5cGU7Ci0gIH0KLQotICAvKgotICAqVGhpcyB3aWxsIHRlbGwgeW91IHdldGhlciB0aGUgdHlwZSBpcyBhIGJlYW4KLSAgKkBwYXJhbSBCb29sZWFuIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGJlYW4KLSAgKiovCi0gIHB1YmxpYyBib29sZWFuIGlzQmVhbigpCi0gIHsKLSAgICBpZiAoZlR5cGUgPT0gQkVBTikgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoKLSAgKlRoaXMgd2lsbCB0ZWxsIHlvdSB3ZXRoZXIgdGhlIHR5cGUgaXMgYSBiZWFuCi0gICpAcGFyYW0gQm9vbGVhbiByZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBiZWFuCi0gICoqLwotICBwdWJsaWMgYm9vbGVhbiBpc1ByaW1pdGl2ZSgpCi0gIHsKLSAgICByZXR1cm4gZlByaW1pdGl2ZTsKLSAgfQotCi0gIC8qCi0gICpUaGlzIHdpbGwgdGVsbCB5b3Ugd2V0aGVyIHRoZSB0eXBlIGlzIGEgYmVhbgotICAqQHBhcmFtIEJvb2xlYW4gcmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYmVhbgotICAqKi8KLSAgcHJvdGVjdGVkIHZvaWQgc2V0UHJpbWl0aXZlKGJvb2xlYW4gcHJpbSkKLSAgewotICAgIGZQcmltaXRpdmUgPSBwcmltOyAKLSAgfQotCi0KLSAgLyoKLSAgKiBUaGlzIGlzIG1haW5seSBuZWVkZWQgZm9yIGFycmF5cyBhcyB3aXRoIGFsbCB0eXBlcyB0aGUKLSAgKiBuYW1lcyBjb21lIG91dCBhcyBqYXZhLnV0aWwudHlwZSwgYnV0IHdpdGggYW4gYXJyYXkgaXQgCi0gICogaXNudCBleHBsaWNpdCBpbiB0ZWxsaW5nIHVzIGl0cyBhbiBhcnJheQotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFR5cGVOYW1lKCkKLSAgewotICAgIHJldHVybiBnZXROYW1lKCk7Ci0gIH0KLSAgCi0gIC8qCi0gICpUaGlzIHdpbGwgdGVsbCB5b3Ugd2V0aGVyIHRoZSB0eXBlIGlzIGEgc2ltcGxlCi0gICpAcGFyYW0gQm9vbGVhbiByZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBzaW1wbGUKLSAgKiovCi0gIHB1YmxpYyBib29sZWFuIGlzU2ltcGxlKCkKLSAgewotICAgIGlmIChmVHlwZSA9PSBTSU1QTEUpIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8qCi0gICpUaGlzIHdpbGwgdGVsbCB5b3Ugd2V0aGVyIHRoZSB0eXBlIGlzIGEgYXJyYXkKLSAgKkBwYXJhbSBCb29sZWFuIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGFycmF5Ci0gICoqLwotICBwdWJsaWMgYm9vbGVhbiBpc0FycmF5KCkKLSAgewotICAgIGlmIChmVHlwZSA9PSBBUlJBWSkgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgUkVMX0FUVFJJQlVURVMgPSAiYXR0cmlidXRlcyI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFJFTF9GSUVMRFMgPSAiZmllbGRzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVMX1RZUEUgPSAidHlwZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFTF9PV05FUiA9ICJvd25lciI7Ci0KLSAgcHVibGljIHN0YXRpYyBpbnQgUEFSQU1FVEVSX09XTkVSID0gMDsKLSAgcHVibGljIHN0YXRpYyBpbnQgQVRUUklCVVRFX09XTkVSID0gMTsKLSAgcHVibGljIHN0YXRpYyBpbnQgRklFTERfT1dORVIgPSAyOwotICBwdWJsaWMgc3RhdGljIGludCBST09UID0gMzsKLQotICAvKgotICAqIFRoaXMgY291bGQgYmUgVGhlIHJvb3QgdGVzdCBiZWFuCi0gICogQHJldHVybiBib29sZWFuIHRydWUgaWYgdGhpcyBpcyByb290IGJlYW4KLSAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNSb290KCkKLSAgewotICAgIGlmKGZPd25lclR5cGUgPT0gUk9PVCkgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoKLSAgKiBUaGlzIFR5cGUgY291bGQgYmUgb3duZWQgYnkgYSBQYXJhbWV0ZXIgb3IgYW4gYXR0cmlidXRlCi0gICogQHJldHVybiBib29sZWFuIHRydWUgaWYgdGhpcyBpcyBvd25lZCBieSBhIHBhcmFtZXRlcgotICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc093bmVyUGFyYW1ldGVyKCkKLSAgewotICAgIGlmKGZPd25lclR5cGUgPT0gUEFSQU1FVEVSX09XTkVSKSByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvKgotICAqIFRoaXMgVHlwZSBjb3VsZCBiZSBvd25lZCBieSBhIFBhcmFtZXRlciBvciBhbiBhdHRyaWJ1dGUKLSAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiB0aGlzIGlzIG93bmVkIGJ5IGFuIGF0dHJpYnV0ZSAKLSAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNPd25lckF0dHJpYnV0ZSgpCi0gIHsKLSAgICBpZihmT3duZXJUeXBlID09IEFUVFJJQlVURV9PV05FUikgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoKLSAgKiBUaGlzIFR5cGUgY291bGQgYmUgb3duZWQgYnkgYSBQYXJhbWV0ZXIgb3IgYW4gYXR0cmlidXRlCi0gICogQHJldHVybiBib29sZWFuIHRydWUgaWYgdGhpcyBpcyBvd25lZCBieSBhbiBhdHRyaWJ1dGUgCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGlzT3duZXJGaWVsZCgpCi0gIHsKLSAgICBpZihmT3duZXJUeXBlID09IEZJRUxEX09XTkVSKSByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgKiBUaGlzIFR5cGUgbWF5IGJlIG93bmVkIGJ5IGEgcGFyYW1ldGVyIG9yIGFuIGF0dHJpYnV0ZSAKLSAgKiBVc2UgdGhpcyBtZXRob2QgaW4gY29uanVuY3Rpb24gd2l0aCBpc093bmVyUGFyYW10ZXIsIGlzT3duZXIKLSAgKiBAcmV0dXJuIEJhc2ljRWxlbWVudCB0aGUgZWxlbWVudCB0aGF0IG93bnMgdGhpcyBhdHRyaWJ1dGUuCi0gICovCi0gIHB1YmxpYyBCYXNpY0VsZW1lbnQgZ2V0T3duaW5nRWxlbWVudCAoKQotICB7Ci0gICAgaWYgKGlzT3duZXJQYXJhbWV0ZXIoKSl7Ci0gICAgICBFbnVtZXJhdGlvbiBlID0gZ2V0RWxlbWVudHMoUkVMX09XTkVSKTsKLSAgICAgIHJldHVybiBlLmhhc01vcmVFbGVtZW50cygpID8gKEJhc2ljRWxlbWVudCllLm5leHRFbGVtZW50KCkgOiBudWxsOwotICAgIH0KLSAgICBlbHNlIGlmKGlzT3duZXJBdHRyaWJ1dGUoKSl7Ci0gICAgICBFbnVtZXJhdGlvbiBlID0gZ2V0RWxlbWVudHMoUkVMX09XTkVSKTsKLSAgICAgIHJldHVybiBlLmhhc01vcmVFbGVtZW50cygpID8gKEJhc2ljRWxlbWVudCllLm5leHRFbGVtZW50KCkgOiBudWxsOwotICAgIH0KLSAgICBlbHNlIGlmKGlzT3duZXJGaWVsZCgpKXsKLSAgICAgIEVudW1lcmF0aW9uIGUgPSBnZXRFbGVtZW50cyhSRUxfT1dORVIpOwotICAgICAgcmV0dXJuIGUuaGFzTW9yZUVsZW1lbnRzKCkgPyAoQmFzaWNFbGVtZW50KWUubmV4dEVsZW1lbnQoKSA6IG51bGw7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAKLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1R5cGVGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvVHlwZUZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JlZDYxNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvVHlwZUZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA3MjYgICAxNDU2NzYgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwNjA4MjMJICAxNDU2NDMgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YUhlbHBlcnM7Ci0vKioKLSAqIFR5cGVGYWN0b3J5Ci0gKiBDcmVhdGlvbiBkYXRlOiAoNC8xMC8yMDAxIDEyOjQxOjQ4IFBNKQotICogQGF1dGhvcjogR2lsYmVydCBBbmRyZXdzCi0gKi8KLXB1YmxpYyBjbGFzcyBUeXBlRmFjdG9yeSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVSTF9OQU1FICAgICAgICAgICAgICAgICAgID0gImphdmEubmV0LlVSTCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNUUklOR19OQU1FICAgICAgICAgICAgICAgPSAiamF2YS5sYW5nLlN0cmluZyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEJJR19ERUNJTUFMX05BTUUgICAgICAgICAgPSAiamF2YS5tYXRoLkJpZ0RlY2ltYWwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCSUdfSU5URUdFUl9OQU1FICAgICAgICAgID0gImphdmEubWF0aC5CaWdJbnRlZ2VyIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFURV9OQU1FICAgICAgICAgICAgICAgICA9ICJqYXZhLnV0aWwuRGF0ZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRUdPUklBTl9DQUxFTkRBUl9OQU1FID0gImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENBTEVOREFSX05BTUUgICAgICAgICAgICAgPSAiamF2YS51dGlsLkNhbGVuZGFyIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQk9PTEVBTl9OQU1FICAgICAgICAgICAgICA9ICJqYXZhLmxhbmcuQm9vbGVhbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEJZVEVfTkFNRSAgICAgICAgICAgICAgICAgID0gImphdmEubGFuZy5CeXRlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRE9VQkxFX05BTUUgICAgICAgICAgICAgICA9ICJqYXZhLmxhbmcuRG91YmxlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkxPQVRfTkFNRSAgICAgICAgICAgICAgICAgPSAiamF2YS5sYW5nLkZsb2F0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5URUdFUl9OQU1FICAgICAgICAgICAgICAgPSAiamF2YS5sYW5nLkludGVnZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMT05HX05BTUUgICAgICAgICAgICAgICAgICA9ICJqYXZhLmxhbmcuTG9uZyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNIT1JUX05BTUUgICAgICAgICAgICAgICAgID0gImphdmEubGFuZy5TaG9ydCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENIQVJBQ1RFUl9OQU1FICAgICAgICAgICAgPSAiamF2YS5sYW5nLkNoYXJhY3RlciI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9CSkVDVF9OQU1FCQkJICAgPSAiamF2YS5sYW5nLk9iamVjdCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSSU1fQk9PTEVBTl9OQU1FICAgICAgICAgPSAiYm9vbGVhbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSSU1fQllURV9OQU1FICAgICAgICAgICAgPSAiYnl0ZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSSU1fRE9VQkxFX05BTUUgICAgICAgICAgPSAiZG91YmxlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJJTV9GTE9BVF9OQU1FICAgICAgICAgICA9ICJmbG9hdCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSSU1fSU5URUdFUl9OQU1FICAgICAgICAgPSAiaW50IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJJTV9MT05HX05BTUUgICAgICAgICAgICA9ICJsb25nIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJJTV9TSE9SVF9OQU1FICAgICAgICAgICA9ICJzaG9ydCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSSU1fQ0hBUl9OQU1FICAgICAgICAgICAgPSAiY2hhciI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFZPSURfTkFNRSAgICAgICAgICAgICAgICAgID0gInZvaWQiOwotCi0gIC8vc29tZSBzcGVjaWFsIGNvbXBsZXgKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRE9NX0VMRU1FTlRfTkFNRSAgID0gIm9yZy53M2MuZG9tLkVsZW1lbnQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTT0FQX0VMRU1FTlRfTkFNRSA9ICJqYXZheC54bWwuc29hcC5TT0FQRWxlbWVudCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNUQVRFTEVTU19CRUFOID0gQmVhbkVsZW1lbnQuU1RBVEVMRVNTX0JFQU47Ci0KLQotCi0gIHB1YmxpYyBzdGF0aWMgSGFzaHRhYmxlIGphdmFUeXBlcyA9IG5ldyBIYXNodGFibGUoKTsKLSAgCi0gIHB1YmxpYyBUeXBlRmFjdG9yeSgpe30KLQotICBzdGF0aWN7Ci0gICAgamF2YVR5cGVzLnB1dChCT09MRUFOX05BTUUsbmV3IFByaW1pdGl2ZUphdmFUeXBlcyhCT09MRUFOX05BTUUpKTsKLSAgICBqYXZhVHlwZXMucHV0KEJZVEVfTkFNRSwgICBuZXcgUHJpbWl0aXZlSmF2YVR5cGVzKEJZVEVfTkFNRSkpOwotICAgIGphdmFUeXBlcy5wdXQoRE9VQkxFX05BTUUsIG5ldyBQcmltaXRpdmVKYXZhVHlwZXMoRE9VQkxFX05BTUUpKTsKLSAgICBqYXZhVHlwZXMucHV0KEZMT0FUX05BTUUsICBuZXcgUHJpbWl0aXZlSmF2YVR5cGVzKEZMT0FUX05BTUUpKTsKLSAgICBqYXZhVHlwZXMucHV0KElOVEVHRVJfTkFNRSxuZXcgUHJpbWl0aXZlSmF2YVR5cGVzKElOVEVHRVJfTkFNRSkpOwotICAgIGphdmFUeXBlcy5wdXQoTE9OR19OQU1FLCAgIG5ldyBQcmltaXRpdmVKYXZhVHlwZXMoTE9OR19OQU1FKSk7Ci0gICAgamF2YVR5cGVzLnB1dChTSE9SVF9OQU1FLCAgbmV3IFByaW1pdGl2ZUphdmFUeXBlcyhTSE9SVF9OQU1FKSk7Ci0gICAgamF2YVR5cGVzLnB1dChDSEFSQUNURVJfTkFNRSwgIG5ldyBQcmltaXRpdmVKYXZhVHlwZXMoQ0hBUkFDVEVSX05BTUUpKTsKLSAgfQotCi0KLSAgLyoKLSAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB1cyB0byBoYW5kbGUgcmVjb2duaXplZCBiZWFucyAKLSAgKiBpbiBkaXNwbGF5aW5nIGFuZCBnZW5lcmF0aW5nIGNvZGUgZm9yIHRoZW0gaW5zdGVhZCBvZiAKLSAgKiB0cmVhdGluZyB0aGVtIGFzIGNvbXBsZXggdHlwZXMKLSAgKi8gCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiByZWNvZ25pemVkQmVhbihTdHJpbmcgdHlwZSkKLSAgewotCi0gICAgLy8gICAgIAotICAgIC8vY3VycmVudCByZWNvZ25pemVkIGJlYW5zIChtb3N0bHkgamF2YS5sYW5nKQotICAgIGlmICh0eXBlLmVxdWFscyhCT09MRUFOX05BTUUpICAgICAgICAgICAgIHx8Ci0gICAgICAgIHR5cGUuZXF1YWxzKEJZVEVfTkFNRSkgICAgICAgICAgICAgICB8fAotICAgICAgICB0eXBlLmVxdWFscyhET1VCTEVfTkFNRSkgICAgICAgICAgICAgfHwKLSAgICAgICAgdHlwZS5lcXVhbHMoRkxPQVRfTkFNRSkgICAgICAgICAgICAgICB8fAotICAgICAgICB0eXBlLmVxdWFscyhJTlRFR0VSX05BTUUpICAgICAgICAgICAgIHx8Ci0gICAgICAgIHR5cGUuZXF1YWxzKExPTkdfTkFNRSkgICAgICAgICAgICAgICB8fAotICAgICAgICB0eXBlLmVxdWFscyhTSE9SVF9OQU1FKSAgICAgICAgICAgICAgfHwgICAgICAKLSAgICAgICAgdHlwZS5lcXVhbHMoQ0hBUkFDVEVSX05BTUUpICAgICAgICAgIHx8ICAgICAgCi0gICAgICAgIHR5cGUuZXF1YWxzKERPTV9FTEVNRU5UX05BTUUpICAgICAgICB8fCAgICAgIAotCSAgICB0eXBlLmVxdWFscyhTT0FQX0VMRU1FTlRfTkFNRSkgICAgICAgIHx8Ci0gICAgICAgIHR5cGUuZXF1YWxzKEJJR19ERUNJTUFMX05BTUUpICAgICAgICAgfHwKLSAgICAgICAgdHlwZS5lcXVhbHMoQklHX0lOVEVHRVJfTkFNRSkgICAgICAgICB8fAotICAgICAgICB0eXBlLmVxdWFscyhEQVRFX05BTUUpICAgICAgICAgICAgICAgIHx8Ci0gICAgICAgIHR5cGUuZXF1YWxzKEdSRUdPUklBTl9DQUxFTkRBUl9OQU1FKSB8fAotICAgICAgICB0eXBlLmVxdWFscyhDQUxFTkRBUl9OQU1FKSAgICAgICAgICAgfHwgCi0gICAgICAgIHR5cGUuZXF1YWxzKFVSTF9OQU1FKSAgICAgICAgICAgICAgICAgfHwKLSAgICAgICAgdHlwZS5lcXVhbHMoT0JKRUNUX05BTUUpCQkJIHx8Ci0gICAgICAgIHR5cGUuZXF1YWxzKFNUUklOR19OQU1FKSkgIHJldHVybiB0cnVlOyAgICAgIAotICAgICByZXR1cm4gZmFsc2U7IAotICAKLSAgfQotCi0gIC8qCi0gICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgdXMgdG8gaGFuZGxlIHVuc3VwcG9ydGVkIHR5cGVzIAotICAqIGlmIHdlIGRvbnQgd2FudCB0byBzdXBwb3J0IGEgdHlwZSBhbmQgd2Ugd2FudCB0byBvbWl0dCB0aGlzICAKLSAgKiBtZXRob2QgZnJvbSB0aGUgc2FtcGxlcwotICAqIEBwYXJhbSBqYXZhSGVscGVycyB0aGlzIGlzIHRoZSB0eXBlIHRvIGJlIGV2YWx1YXRlZAotICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIHRoZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQKLSAgKi8gCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1VuU3VwcG9ydGVkVHlwZShKYXZhSGVscGVycyBqYXZhSGVscGVycykKLSAgewotICAgIC8vd2UgYWxzbyBkb250IHN1cHBvcnQgYXJyYXlzCi0JLy9qYXZhLmxhbmcuT2JqZWN0cyBhcmUgb2sgZm9yIHJldHVybiB0eXBlcyBidXQgbm90IGZvciBpbnB1dCB0eXBlCi0gICAgaWYgKGphdmFIZWxwZXJzLmlzQXJyYXkoKXx8Ci0gICAgCQlqYXZhSGVscGVycy5nZXRKYXZhTmFtZSgpLmVxdWFscyhNQVBfTkFNRSl8fAotICAgIAkJamF2YUhlbHBlcnMuZ2V0SmF2YU5hbWUoKS5lcXVhbHMoVkVDVE9SX05BTUUpfHwKLSAgICAJCWphdmFIZWxwZXJzLmdldEphdmFOYW1lKCkuZXF1YWxzKERBVEFfSEFORExFUil8fAotICAgIAkJamF2YUhlbHBlcnMuZ2V0SmF2YU5hbWUoKS5lcXVhbHMoT0JKRUNUX05BTUUpIHx8Ci0gICAgCQlqYXZhSGVscGVycy5nZXRKYXZhTmFtZSgpLmVxdWFscygiamF2YS5sYW5nLmNsYXNzIikJKSByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBIQVNIVEFCTEVfTkFNRSA9ICJqYXZhLnV0aWwuSGFzaHRhYmxlIjsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgTUFQX05BTUUgPSAiamF2YS51dGlsLk1hcCI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFZFQ1RPUl9OQU1FID0gImphdmEudXRpbC5WZWN0b3IiOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBBUlJBWV9OQU1FID0gQXJyYXlFbGVtZW50LkFSUkFZX05BTUU7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFBSSU1JVElWRV9BUlJBWV9OQU1FID0gInByaW1pdGl2ZWFycmF5IjsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgREFUQV9IQU5ETEVSID0gImphdmF4LmFjdGl2YXRpb24uRGF0YUhhbmRsZXIiOwotCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1JlY29nbml6ZWRSZXR1cm5UeXBlKEphdmFIZWxwZXJzIGphdmFIZWxwZXJzKQotICB7Ci0gICAgLy9hcnJheXMgCi0gICAgLy9IYXNodGFibGUKLSAgICAvL1ZlY3RvcnMKLQkvL2phdmEubGFuZy5PYmplY3RzIGFyZSBvayBmb3IgcmV0dXJuIHR5cGVzCi0gICAgaWYgKGphdmFIZWxwZXJzLmlzQXJyYXkoKSkgcmV0dXJuIHRydWU7Ci0gICAgZWxzZSBpZiAoamF2YUhlbHBlcnMuZ2V0SmF2YU5hbWUoKS5lcXVhbHMoSEFTSFRBQkxFX05BTUUpKXJldHVybiB0cnVlOwotICAgIGVsc2UgaWYgKGphdmFIZWxwZXJzLmdldEphdmFOYW1lKCkuZXF1YWxzKFZFQ1RPUl9OQU1FKSlyZXR1cm4gdHJ1ZTsKLSAgICBlbHNlIGlmIChqYXZhSGVscGVycy5nZXRKYXZhTmFtZSgpLmVxdWFscyhNQVBfTkFNRSkpcmV0dXJuIHRydWU7Ci0gICAgZWxzZSBpZiAoamF2YUhlbHBlcnMuZ2V0SmF2YU5hbWUoKS5lcXVhbHMoT0JKRUNUX05BTUUpKXJldHVybiB0cnVlOwotICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzUmVjb2duaXplZFJldHVyblR5cGUoU3RyaW5nIHR5cGUpCi0gIHsKLSAgICAvL2FycmF5cyAKLSAgICAvL0hhc2h0YWJsZQotICAgIC8vVmVjdG9ycwotCS8vamF2YS5sYW5nLk9iamVjdHMgYXJlIG9rIGZvciByZXR1cm4gdHlwZXMKLSAgICBpZiAodHlwZS5zdGFydHNXaXRoKEFSUkFZX05BTUUpKSByZXR1cm4gdHJ1ZTsKLSAgICBlbHNlIGlmICh0eXBlLmVxdWFscyhIQVNIVEFCTEVfTkFNRSkpcmV0dXJuIHRydWU7Ci0gICAgZWxzZSBpZiAodHlwZS5lcXVhbHMoVkVDVE9SX05BTUUpKXJldHVybiB0cnVlOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKE1BUF9OQU1FKSlyZXR1cm4gdHJ1ZTsKLSAgICBlbHNlIGlmICh0eXBlLmVxdWFscyhPQkpFQ1RfTkFNRSkpIHJldHVybiB0cnVlOwotICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU3RhdGVMZXNzQmVhbihTdHJpbmcgdHlwZSkKLSAgewotICAgIGlmKHR5cGUuc3RhcnRzV2l0aChTVEFURUxFU1NfQkVBTikpIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0KLSAgLyoqCi0gICogQ3JlYXRlcyBhIHR5cGUgYmFzZWQgb24gdGhlIEphdmFIZWxwZXIgdGhlbiBzZXRzIHRoaXMgdHlwZSBpbiB0aGUgZWxlbWVudAotICAqIEBwYXJhbXMgSmF2YUhlbHBlcnMgdGhpcyBob2xkcyB0aGUgdHlwZQotICAqIEBwYXJhbSBUeXBlRWxlbWVudCBUaGUgZWxlbWVudCB3aGljaCB3aWxsIGhvbGQgdGhlIHR5cGUgY3JlYXRlZAotICAqIEBwYXJhbSBTdHJpbmcgVW5pcXVlbmFtZSB0byBiZSB1c2VkIHdoZW4gbmFtaW5nIHRlbXAgdmFyaWFibGVzCi0gICovCi0gCi0gIHB1YmxpYyBzdGF0aWMgRGF0YVR5cGUgY3JlYXRlVHlwZShTdHJpbmcgdHlwZSwgU3RyaW5nIFVuaXF1ZU5hbWUpCi0gIHsKLSAgICAvL3RoaXMgZ3V5IG1pZ2h0IGJlIGJvdGggc3RhdGVsZXNzIGFuZCBvbmUgb2YgdGhlIGJlbG93IGVsZW1lbnRzCi0gICAgLy93ZSB3b3VsZCBsaWtlIHRvIGJlIGFzIHNwZWNpZmljIGFzIHdlIGNhbiwgc3RhdGVsZXNzIGlzIHRoZSB3b3JzdCBjYXNlIAotICAgIGJvb2xlYW4gc3RhdGVsZXNzID0gZmFsc2U7ICAKLSAgICBpZih0eXBlLnN0YXJ0c1dpdGgoU1RBVEVMRVNTX0JFQU4pKSB7Ci0gICAgICBzdGF0ZWxlc3MgPSB0cnVlOwotICAgICAgdHlwZSA9IHR5cGUuc3Vic3RyaW5nKDI5KTsgCi0gICAgfQotICAgCi0gICAgRGF0YVR5cGUgZGF0YXR5cGUgPSBudWxsOwotICAgIGlmICAgICAgKHR5cGUuZXF1YWxzKFBSSU1fQk9PTEVBTl9OQU1FKSkgZGF0YXR5cGUgPSBuZXcgUHJpbWl0aXZlQm9vbGVhblR5cGUoKTsKLSAgICBlbHNlIGlmICh0eXBlLmVxdWFscyhQUklNX0JZVEVfTkFNRSkpICAgICBkYXRhdHlwZSA9IG5ldyBQcmltaXRpdmVCeXRlVHlwZSgpOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKFBSSU1fRE9VQkxFX05BTUUpKSAgZGF0YXR5cGUgPSBuZXcgUHJpbWl0aXZlRG91YmxlVHlwZSgpOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKFBSSU1fRkxPQVRfTkFNRSkpICAgZGF0YXR5cGUgPSBuZXcgUHJpbWl0aXZlRmxvYXRUeXBlKCk7Ci0gICAgZWxzZSBpZiAodHlwZS5lcXVhbHMoUFJJTV9MT05HX05BTUUpKSAgICBkYXRhdHlwZSA9IG5ldyBQcmltaXRpdmVMb25nVHlwZSgpOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKFBSSU1fSU5URUdFUl9OQU1FKSkgZGF0YXR5cGUgPSBuZXcgUHJpbWl0aXZlSW50VHlwZSgpOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKFBSSU1fQ0hBUl9OQU1FKSkgICAgZGF0YXR5cGUgPSBuZXcgUHJpbWl0aXZlQ2hhclR5cGUoKTsKLSAgICBlbHNlIGlmICh0eXBlLmVxdWFscyhQUklNX1NIT1JUX05BTUUpKSAgIGRhdGF0eXBlID0gbmV3IFByaW1pdGl2ZVNob3J0VHlwZSgpOwotICAgIAotCi0gICAgLy9zZWUgaWYgdGhpcyBjcml0dGVyIGlzIGEgamF2YXR5cGUKLSAgICBlbHNlIGlmICh0eXBlLmVxdWFscyhCT09MRUFOX05BTUUpICAgICB8fAotICAgICAgICAgICAgdHlwZS5lcXVhbHMoQllURV9OQU1FKSAgICAgICAgfHwKLSAgICAgICAgICAgIHR5cGUuZXF1YWxzKERPVUJMRV9OQU1FKSAgICAgIHx8Ci0gICAgICAgICAgICB0eXBlLmVxdWFscyhGTE9BVF9OQU1FKSAgICAgICB8fAotICAgICAgICAgICAgdHlwZS5lcXVhbHMoSU5URUdFUl9OQU1FKSAgICAgfHwKLSAgICAgICAgICAgIHR5cGUuZXF1YWxzKExPTkdfTkFNRSkgICAgICAgIHx8Ci0gICAgICAgICAgICB0eXBlLmVxdWFscyhDSEFSQUNURVJfTkFNRSkgIHx8Ci0gICAgICAgICAgICB0eXBlLmVxdWFscyhTSE9SVF9OQU1FKSkgICAgICAgIGRhdGF0eXBlID0gKERhdGFUeXBlKWphdmFUeXBlcy5nZXQodHlwZSk7ICAgCi0KLSAgICAvL3NlZSBpZiBpdHMgYSBjYXNlIHdlIGhhbmRsZQotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKFNUUklOR19OQU1FKSkgICAgICAgICAgICAgICBkYXRhdHlwZSA9IG5ldyBTdHJpbmdUeXBlKCk7IAotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKFZPSURfTkFNRSkpICAgICAgICAgICAgICAgICBkYXRhdHlwZSA9IG5ldyBWb2lkVHlwZSgpOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKERPTV9FTEVNRU5UX05BTUUpKSAgICAgICAgICBkYXRhdHlwZSA9IG5ldyBEb21FbGVtZW50VHlwZSgpOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKFNPQVBfRUxFTUVOVF9OQU1FKSkgICAgICAgICBkYXRhdHlwZSA9IG5ldyBTT0FQRWxlbWVudFR5cGUoKTsgIAotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKEJJR19ERUNJTUFMX05BTUUpKSAgICAgICAgICBkYXRhdHlwZSA9IG5ldyBCaWdEZWNpbWFsVHlwZSgpOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKEJJR19JTlRFR0VSX05BTUUpKSAgICAgICAgICBkYXRhdHlwZSA9IG5ldyBCaWdJbnRlZ2VyVHlwZSgpOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKERBVEVfTkFNRSkpICAgICAgICAgICAgICAgICAgZGF0YXR5cGUgPSBuZXcgRGF0ZVR5cGUoKTsKLSAgICBlbHNlIGlmICh0eXBlLmVxdWFscyhVUkxfTkFNRSkpICAgICAgICAgICAgICAgICAgIGRhdGF0eXBlID0gbmV3IFVSTFR5cGUoKTsgCi0gICAgZWxzZSBpZiAodHlwZS5lcXVhbHMoR1JFR09SSUFOX0NBTEVOREFSX05BTUUpKSAgZGF0YXR5cGUgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXJUeXBlKCk7Ci0gICAgZWxzZSBpZiAodHlwZS5lcXVhbHMoQ0FMRU5EQVJfTkFNRSkpICBkYXRhdHlwZSA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhclR5cGUoKTsKLQotICAgIC8vaXQgY291bGQgYmUgYSByZXR1cm4gdHlwZSB3ZSBzdXBwb3J0Ci0gICAgZWxzZSBpZiAodHlwZS5lcXVhbHMoSEFTSFRBQkxFX05BTUUpKSAgICAgICAgICAgIGRhdGF0eXBlID0gbmV3IEhhc2h0YWJsZVR5cGUoKTsKLSAgICBlbHNlIGlmICh0eXBlLmVxdWFscyhWRUNUT1JfTkFNRSkpICAgICAgICAgICAgICAgZGF0YXR5cGUgPSBuZXcgVmVjdG9yVHlwZSgpOwotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKE1BUF9OQU1FKSkgICAgICAgICAgICAgICAgICBkYXRhdHlwZSA9IG5ldyBNYXBUeXBlKCk7Ci0gICAgZWxzZSBpZiAodHlwZS5lcXVhbHMoT0JKRUNUX05BTUUpKQkJCQlkYXRhdHlwZSA9IG5ldyBPYmplY3RUeXBlKCk7Ci0KLSAgICAvLyBuZWVkIHRvIHNlZSBpZiBpdCBpcyBhbiBvYmplY3QgYXJyYXkKLSAgICAvL29yIGEgcHJpbWl0aXZlCi0gICAgZWxzZSBpZiAodHlwZS5zdGFydHNXaXRoKEFSUkFZX05BTUUpKXsgICAgICAgICAgICAgIAotICAgIAlTdHJpbmcgbmFtZSA9IHR5cGUuc3Vic3RyaW5nKDIxKTsgCi0gICAgICAgIGlmKG5hbWUuc3RhcnRzV2l0aChQUklNX0JPT0xFQU5fTkFNRSkgfHwKLSAgICAgICAgICBuYW1lLnN0YXJ0c1dpdGgoUFJJTV9CWVRFX05BTUUpICAgICB8fAotICAgICAgICAgIG5hbWUuc3RhcnRzV2l0aChQUklNX0RPVUJMRV9OQU1FKSAgfHwKLSAgICAgICAgICBuYW1lLnN0YXJ0c1dpdGgoUFJJTV9GTE9BVF9OQU1FKSAgICB8fAotICAgICAgICAgIG5hbWUuc3RhcnRzV2l0aChQUklNX0xPTkdfTkFNRSkgICAgfHwKLSAgICAgICAgICBuYW1lLnN0YXJ0c1dpdGgoUFJJTV9JTlRFR0VSX05BTUUpICB8fAotICAgICAgICAgIG5hbWUuc3RhcnRzV2l0aChQUklNX0NIQVJfTkFNRSkgICAgfHwKLSAgICAgICAgICBuYW1lLnN0YXJ0c1dpdGgoUFJJTV9TSE9SVF9OQU1FKSkKLSAgICAgICAgICAgIGRhdGF0eXBlID0gbmV3IFByaW1pdGl2ZUFycmF5VHlwZShuYW1lKTsgIAotICAgICAgICBlbHNlCi0gICAgICAgIAlkYXRhdHlwZSA9IG5ldyBBcnJheVR5cGUobmFtZSk7Ci0KLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RhdGVsZXNzKXsKLSAgICAgICAgZGF0YXR5cGUgPSBuZXcgU3RhdGVMZXNzQmVhblR5cGUodHlwZSk7Ci0KLSAgICB9Ci0KLQotICAgIGRhdGF0eXBlLnNldFVuaXF1ZU5hbWUoVW5pcXVlTmFtZSk7Ci0gICAgcmV0dXJuIGRhdGF0eXBlOwotICAgICAKLSAgfQotICAKLSAgCi0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1VSTFR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL2JlYW5tb2RlbC9VUkxUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMGZiMjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1VSTFR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotLyoqCi0qIG9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSB0eXBlCi0qIAotKi8KLXB1YmxpYyBjbGFzcyBVUkxUeXBlIGV4dGVuZHMgU2ltcGxlVHlwZSAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAKLSAgLyoqCi0gICpDb25zdHJ1Y3RvcgotICAqCi0gICovCi0gIHB1YmxpYyBVUkxUeXBlKCkKLSAgewotICAgIHN1cGVyKFR5cGVGYWN0b3J5LlVSTF9OQU1FKTsKLSAgfQotIAotICAvKioKLSAgKiBTdHJpbmdUb1R5cGUgZ2V0cyB0aGUgc3RyaW5nIHRha2VuIGJ5IHRoZSAKLSAgKiB1c2VyIGludG8gcHJveHkgZm9ybQotICAqIEByZXR1cm4gU3RyaW5nIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0eXBlIC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBTdHJpbmdUb1R5cGUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBTdHJpbmcgY29udmVyc2lvbiA9ICJuZXcgamF2YS5uZXQuVVJMKCIgKyBuYW1lICsgIik7IjsKLSAgICByZXR1cm4gY29udmVyc2lvbjsgICAgCi0gIH0KLQotICAvKioKLSAgKiBUaGUgc3RyaW5nQ29udmVyc2lvbiBmdW5jdGlvbiBuYWlscyBvdXQgc3BlY2lmaWMgY29udmVyc2lvbiBtZXRob2RzIHVzZWQgYW1vbmcgc2ltcGxlIHR5cGVzIAotICAqIFRoaXMgbWV0aG9kIGlzIHRvIGJlIGltcGxlbWVudGVkIGJ5IFNpbXBsZVR5cGUgc3ViY2xhc3NlcwotICAqIEBwYXJhbSBTdHJpbmcgdGhlIG5hbWUgb2Ygc3RyaW5nIGFmdGVyIHRoZSByZXF1ZXN0IGNhbGwKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgYWN0dWFsIGNvbnZlcnNpb24gc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZVRvU3RyaW5nKFN0cmluZyBuYW1lKQotICB7Ci0gICAgcmV0dXJuIG5hbWUgKyAiLnRvU3RyaW5nKCkiOwotICB9Ci0gCi0gfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvVmVjdG9yVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ZlY3RvclR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEwNzE4ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvVmVjdG9yVHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsOwotCi0KLS8qKgotKiBvYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgcmVjb2duaXplZCByZXR1cm4gdHlwZQotKiAKLSovCi1wdWJsaWMgY2xhc3MgVmVjdG9yVHlwZSBleHRlbmRzIFJlY29nbml6ZWRSZXR1cm5UeXBlCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgCi0gIC8qKgotICAqQ29uc3RydWN0b3IKLSAgKgotICAqLwotICBwdWJsaWMgVmVjdG9yVHlwZSgpCi0gIHsKLSAgICBzdXBlcihUeXBlRmFjdG9yeS5WRUNUT1JfTkFNRSk7Ci0gIH0KLQotICAKLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvYmVhbm1vZGVsL1ZvaWRUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvVm9pZFR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZkZTkxZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC9iZWFubW9kZWwvVm9pZFR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbDsKLQotCi0vKioKLSogb2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIHR5cGUKLSogCi0qLwotcHVibGljIGNsYXNzIFZvaWRUeXBlIGV4dGVuZHMgU2ltcGxlVHlwZQotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIAotICAvKioKLSAgKkNvbnN0cnVjdG9yCi0gICoKLSAgKi8KLSAgcHVibGljIFZvaWRUeXBlKCkKLSAgewotICAgIHN1cGVyKCJ2b2lkIik7Ci0gIH0KLQotICAgLyoqCi0gICogZm9yIGEgdm9pZCB0aGVyZSBpcyBubyBuZWVkIHRvIHJldHVybiAKLSAgKiBAcmV0dXJuIFN0cmluZyBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gdHlwZSAuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgU3RyaW5nVG9UeXBlKFN0cmluZyBuYW1lKQotICB7Ci0gICAgcmV0dXJuICIiOwotICB9Ci0gIAotICAvKioKLSAgKiBUaGUgc3RyaW5nQ29udmVyc2lvbiBmdW5jdGlvbiBuYWlscyBvdXQgc3BlY2lmaWMgY29udmVyc2lvbiBtZXRob2RzIHVzZWQgYW1vbmcgc2ltcGxlIHR5cGVzIAotICAqIFRoaXMgbWV0aG9kIGlzIHRvIGJlIGltcGxlbWVudGVkIGJ5IFNpbXBsZVR5cGUgc3ViY2xhc3NlcwotICAqIEBwYXJhbSBTdHJpbmcgdGhlIG5hbWUgb2Ygc3RyaW5nIGFmdGVyIHRoZSByZXF1ZXN0IGNhbGwKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgYWN0dWFsIGNvbnZlcnNpb24gc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgVHlwZVRvU3RyaW5nKFN0cmluZyBuYW1lKQotICB7Ci0gICAgcmV0dXJuICJTdHJpbmcudmFsdWVPZigiICsgbmFtZSArICIpIjsKLSAgfQotIAotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC92YWxpZGF0ZS9WYWxpZGF0aW9uTWFuYWdlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvdmFsaWRhdGUvVmFsaWRhdGlvbk1hbmFnZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMwMTI4ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC92YWxpZGF0ZS9WYWxpZGF0aW9uTWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC52YWxpZGF0ZTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVdvcmtzcGFjZURlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLQotLyoqCi0gICogVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSB2YWxpZGF0aW9uIHN0YXRlIG9mIHByb2plY3RzIHRoYXQgc29tZSB0YXNrcyBtYXkgd2FudAotICAqIHRvIGRpc2FibGUuICBUaGUgbWFuYWdlciBjYW4gdGhlbiBiZSB1c2VkIHRvIHJlc3RvcmUgdGhlIHZhbGlkYXRpb24gc3RhdGUuCi0qKi8KLXB1YmxpYyBjbGFzcyBWYWxpZGF0aW9uTWFuYWdlcgotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIC8qKgotICAgICogVGhpcyBzZXQgY29udGFpbnMgYSBzZXQgb2YgSVByb2plY3RzIHRoYXQgbmVlZCB0byBiZSB2YWxpZGF0ZWQuCi0gICoqLwotICBwcml2YXRlIEhhc2hTZXQgcHJvamVjdHMgPSBudWxsOyAgICAgICAgICAgICAgCi0KLSAgLyoqCi0gICAgKiBUaGlzIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgajJlZSB2YWxpZGF0b3IuCi0gICoqLwotICAvL3BnbSBwcml2YXRlIFZhbGlkYXRvck1hbmFnZXIgajJlZU1hbmFnZXIgPSBudWxsOwotCi0gIC8qKgotICAgICogVGhpcyBib29sZWFuIGNvbnRhaW5zIHRoZSBhdXRvIGJ1aWxkIHNldHRpbmcgdW5kZXIgcHJlZmVycmVuY2UKLSAgKiovCi0gIHByaXZhdGUgYm9vbGVhbiBpc0F1dG9CdWlsZF87Ci0gIHByaXZhdGUgYm9vbGVhbiBhdXRvQnVpbGREaXNhYmxlZF87Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgcHVibGljIFZhbGlkYXRpb25NYW5hZ2VyKCkKLSAgewotICAgIHByb2plY3RzICAgID0gbmV3IEhhc2hTZXQoKTsKLSAgICAvL3BnbSBqMmVlTWFuYWdlciA9IFZhbGlkYXRvck1hbmFnZXIuZ2V0TWFuYWdlcigpOwotICAgIHNldEF1dG9CdWlsZFByZWZlcmVuY2UoKTsKLSAgICBhdXRvQnVpbGREaXNhYmxlZF8gPSBmYWxzZTsKLSAgfQotICAKLSAgLyoqCi0gICAgKiBEaXNhYmxlcyB0aGUgdmFsaWRhdGlvbiBmb3IgYSBwcm9qZWN0IGlmIHJlcXVpcmVkLgotICAqKi8KLSAgcHVibGljIHZvaWQgZGlzYWJsZVZhbGlkYXRpb25Gb3JQcm9qZWN0KCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgeyAgICAKLSAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyBwcm9qZWN0IG5lZWRzIGhhdmUgdmFsaWRhdGlvbiB0dXJuZWQgYmFjayBvbi4KLSAgICBwcm9qZWN0cy5hZGQoIHByb2plY3QgKTsKLSAgICAKLSAgICAvL3BnbSBqMmVlTWFuYWdlci5zdXNwZW5kQWxsVmFsaWRhdGlvbiggdHJ1ZSApOwotICB9Ci0KLSAgLyoqCi0gICAgKiBSZXN0b3JlcyB0aGUgdmFsaWRhdGlvbiBzdGF0ZSBmb3IgYWxsIG5lZWRlZCBwcm9qZWN0cy4KLSAgKiovCi0gIHB1YmxpYyB2b2lkIHJlc3RvcmVWYWxpZGF0aW9uRm9yUHJvamVjdHMoIGJvb2xlYW4gcnVuVmFsaWRhdGlvbiApCi0gIHsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIG1vZGlmeUF1dG9CdWlsZChib29sZWFuIGlzQXV0b0J1aWxkKSB7Ci0gICAgdHJ5IHsKLSAgICAgIElXb3Jrc3BhY2Ugd29ya3NwYWNlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpOwotICAgICAgSVdvcmtzcGFjZURlc2NyaXB0aW9uIHdvcmtzcGFjZURlc2MgPSB3b3Jrc3BhY2UuZ2V0RGVzY3JpcHRpb24oKTsKLSAgICAgIHdvcmtzcGFjZURlc2Muc2V0QXV0b0J1aWxkaW5nKGlzQXV0b0J1aWxkKTsKLSAgICAgIHdvcmtzcGFjZS5zZXREZXNjcmlwdGlvbih3b3Jrc3BhY2VEZXNjKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQotICB9Ci0KLSAgcHVibGljIHZvaWQgZGlzYWJsZUF1dG9CdWlsZCgpIHsKLSAgICBpZiAoIWF1dG9CdWlsZERpc2FibGVkXykgewotICAgICAgc2V0QXV0b0J1aWxkUHJlZmVyZW5jZSgpOwotICAgICAgbW9kaWZ5QXV0b0J1aWxkKGZhbHNlKTsKLSAgICAgIGF1dG9CdWlsZERpc2FibGVkXyA9IHRydWU7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVzdG9yZUF1dG9CdWlsZCgpIHsKLSAgICBpZiAoYXV0b0J1aWxkRGlzYWJsZWRfKSB7Ci0gICAgICBtb2RpZnlBdXRvQnVpbGQoZ2V0QXV0b0J1aWxkUHJlZmVyZW5jZSgpKTsKLSAgICAgIGF1dG9CdWlsZERpc2FibGVkXyA9IGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHNldEF1dG9CdWlsZFByZWZlcmVuY2UoKSB7Ci0gICAgaXNBdXRvQnVpbGRfID0gZ2V0V29ya3NwYWNlQXV0b0J1aWxkUHJlZmVyZW5jZSgpOwotICAgIHJldHVybiBpc0F1dG9CdWlsZF87Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRBdXRvQnVpbGRQcmVmZXJlbmNlKCkgewotICAgIHJldHVybiBpc0F1dG9CdWlsZF87Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRXb3Jrc3BhY2VBdXRvQnVpbGRQcmVmZXJlbmNlKCkgewotICAgIElXb3Jrc3BhY2VEZXNjcmlwdGlvbiB3b3Jrc3BhY2VEZXNjID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldERlc2NyaXB0aW9uKCk7Ci0gICAgcmV0dXJuIHdvcmtzcGFjZURlc2MuaXNBdXRvQnVpbGRpbmcoKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC93c2RsbW9kZWwvQmluZGluZ0VsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9CaW5kaW5nRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWIxYTJjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9CaW5kaW5nRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC53c2RsbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY0VsZW1lbnQ7Ci0KLQotcHVibGljIGNsYXNzIEJpbmRpbmdFbGVtZW50IGV4dGVuZHMgQmFzaWNFbGVtZW50Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBSRUxfUE9SVCA9ICJwb3J0IjsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgUkVMX09QRVJBVElPTlMgPSAib3BlcmF0aW9ucyI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFJFTF9QT1JUX1RZUEUgPSAicG9ydHR5cGUiOwotICAKLSAgcHVibGljIEJpbmRpbmdFbGVtZW50IChQb3J0RWxlbWVudCBwb3J0RWxlbWVudCxTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUscG9ydEVsZW1lbnQsUkVMX1BPUlQsUG9ydEVsZW1lbnQuUkVMX0JJTkRJTkcpOwotICB9Ci0KLSAgcHVibGljIEVudW1lcmF0aW9uIGdldFBvcnQoKQotICB7Ci0gICAgcmV0dXJuIGdldEVsZW1lbnRzKFJFTF9QT1JUKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRQb3J0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHMoUkVMX1BPUlRfVFlQRSk7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0T3BlcmF0aW9ucygpCi0gIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHMoUkVMX09QRVJBVElPTlMpOwotICB9Ci0KLSAgcHVibGljIGludCBnZXROdW1iZXJPZk9wZXJhdGlvbnMoKQotICB7Ci0gICAgcmV0dXJuIGdldE51bWJlck9mRWxlbWVudHMoUkVMX09QRVJBVElPTlMpOwotICB9Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9EZWZpbml0aW9uRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvd3NkbG1vZGVsL0RlZmluaXRpb25FbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0NTRjMjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvd3NkbG1vZGVsL0RlZmluaXRpb25FbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLndzZGxtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkJhc2ljRWxlbWVudDsKLQotCi1wdWJsaWMgY2xhc3MgRGVmaW5pdGlvbkVsZW1lbnQgZXh0ZW5kcyBCYXNpY0VsZW1lbnQKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFJFTF9TRVJWSUNFUyA9ICJzZXJ2aWNlcyI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFJFTF9XU0RMID0gIndzZGwiOwotICAKLSAgcHVibGljIERlZmluaXRpb25FbGVtZW50IChXU0RMRWxlbWVudCB3c2RsRWxlbWVudCxTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUsd3NkbEVsZW1lbnQsUkVMX1dTREwsV1NETEVsZW1lbnQuUkVMX0RFRklOSVRJT05TKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRXU0RMKCkKLSAgewotICAgIHJldHVybiBnZXRFbGVtZW50cyhSRUxfV1NETCk7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0U2VydmljZXMoKQotICB7Ci0gICAgcmV0dXJuIGdldEVsZW1lbnRzKFJFTF9TRVJWSUNFUyk7Ci0gIH0KLQotICBwdWJsaWMgaW50IGdldE51bWJlck9mU2VydmljZXMoKQotICB7Ci0gICAgcmV0dXJuIGdldE51bWJlck9mRWxlbWVudHMoUkVMX1NFUlZJQ0VTKTsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC93c2RsbW9kZWwvTWVzc2FnZUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9NZXNzYWdlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmUyNzgxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9NZXNzYWdlRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC53c2RsbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY0VsZW1lbnQ7Ci0KLQotcHVibGljIGNsYXNzIE1lc3NhZ2VFbGVtZW50IGV4dGVuZHMgQmFzaWNFbGVtZW50Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBSRUxfT1BFUkFUSU9OID0gIm9wZXJhdGlvbiI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFJFTF9QQVJUUyA9ICJwYXJ0cyI7Ci0gIAotICBwdWJsaWMgTWVzc2FnZUVsZW1lbnQgKE9wZXJhdGlvbkVsZW1lbnQgb3BlcmF0aW9uRWxlbWVudCxTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUsb3BlcmF0aW9uRWxlbWVudCxSRUxfT1BFUkFUSU9OLE9wZXJhdGlvbkVsZW1lbnQuUkVMX01FU1NBR0VTKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRPcGVyYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGdldEVsZW1lbnRzKFJFTF9PUEVSQVRJT04pOwotICB9Ci0KLSAgcHVibGljIEVudW1lcmF0aW9uIGdldFBhcnRzKCkKLSAgewotICAgIHJldHVybiBnZXRFbGVtZW50cyhSRUxfUEFSVFMpOwotICB9Ci0KLSAgcHVibGljIGludCBnZXROdW1iZXJPZlBhcnRzKCkKLSAgewotICAgIHJldHVybiBnZXROdW1iZXJPZkVsZW1lbnRzKFJFTF9QQVJUUyk7Ci0gIH0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvd3NkbG1vZGVsL09wZXJhdGlvbkVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9PcGVyYXRpb25FbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ODljMmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvd3NkbG1vZGVsL09wZXJhdGlvbkVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwud3NkbG1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuQmFzaWNFbGVtZW50OwotCi0KLXB1YmxpYyBjbGFzcyBPcGVyYXRpb25FbGVtZW50IGV4dGVuZHMgQmFzaWNFbGVtZW50Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBSRUxfQklORElORyA9ICJiaW5kaW5nIjsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgUkVMX01FU1NBR0VTID0gIm1lc3NhZ2VzIjsKLQotICBwdWJsaWMgT3BlcmF0aW9uRWxlbWVudCAoQmluZGluZ0VsZW1lbnQgYmluZGluZ0VsZW1lbnQsU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lLGJpbmRpbmdFbGVtZW50LFJFTF9CSU5ESU5HLEJpbmRpbmdFbGVtZW50LlJFTF9PUEVSQVRJT05TKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRCaW5kaW5nKCkKLSAgewotICAgIHJldHVybiBnZXRFbGVtZW50cyhSRUxfQklORElORyk7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0TWVzc2FnZXMoKQotICB7Ci0gICAgcmV0dXJuIGdldEVsZW1lbnRzKFJFTF9NRVNTQUdFUyk7Ci0gIH0KLQotICBwdWJsaWMgaW50IGdldE51bWJlck9mTWVzc2FnZXMoKQotICB7Ci0gICAgcmV0dXJuIGdldE51bWJlck9mRWxlbWVudHMoUkVMX01FU1NBR0VTKTsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC93c2RsbW9kZWwvUGFydEVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9QYXJ0RWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjQwMGRjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9QYXJ0RWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC53c2RsbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY0VsZW1lbnQ7Ci0KLQotcHVibGljIGNsYXNzIFBhcnRFbGVtZW50IGV4dGVuZHMgQmFzaWNFbGVtZW50Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBSRUxfTUVTU0FHRSA9ICJtZXNzYWdlIjsKLSAgICAKLSAgcHVibGljIFBhcnRFbGVtZW50IChNZXNzYWdlRWxlbWVudCBtZXNzYWdlRWxlbWVudCxTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUsbWVzc2FnZUVsZW1lbnQsUkVMX01FU1NBR0UsTWVzc2FnZUVsZW1lbnQuUkVMX1BBUlRTKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiBnZXRFbGVtZW50cyhSRUxfTUVTU0FHRSk7Ci0gIH0KLQotICAKLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvd3NkbG1vZGVsL1BvcnRFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC93c2RsbW9kZWwvUG9ydEVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZiZGE5NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC93c2RsbW9kZWwvUG9ydEVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwud3NkbG1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuQmFzaWNFbGVtZW50OwotCi0KLXB1YmxpYyBjbGFzcyBQb3J0RWxlbWVudCBleHRlbmRzIEJhc2ljRWxlbWVudAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgUkVMX0JJTkRJTkcgPSAiYmluZGluZyI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFJFTF9TRVJWSUNFID0gInNlcnZpY2UiOwotICAKLSAgcHVibGljIFBvcnRFbGVtZW50IChTZXJ2aWNlRWxlbWVudCBzZXJ2aWNlRWxlbWVudCxTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUsc2VydmljZUVsZW1lbnQsUkVMX1NFUlZJQ0UsU2VydmljZUVsZW1lbnQuUkVMX1BPUlRTKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBnZXRFbGVtZW50cyhSRUxfU0VSVklDRSk7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0QmluZGluZygpCi0gIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHMoUkVMX0JJTkRJTkcpOwotICB9Ci0gCi19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9Qb3J0VHlwZUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9Qb3J0VHlwZUVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVkMTU2MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC93c2RsbW9kZWwvUG9ydFR5cGVFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLndzZGxtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkJhc2ljRWxlbWVudDsKLQotCi1wdWJsaWMgY2xhc3MgUG9ydFR5cGVFbGVtZW50IGV4dGVuZHMgQmFzaWNFbGVtZW50Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBSRUxfQklORElORyA9ICJiaW5kaW5nIjsKLSAgCi0gIHB1YmxpYyBQb3J0VHlwZUVsZW1lbnQgKEJpbmRpbmdFbGVtZW50IGJpbmRpbmdFbGVtZW50LFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSxiaW5kaW5nRWxlbWVudCxSRUxfQklORElORyxCaW5kaW5nRWxlbWVudC5SRUxfUE9SVF9UWVBFKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRCaW5kaW5nKCkKLSAgewotICAgIHJldHVybiBnZXRFbGVtZW50cyhSRUxfQklORElORyk7Ci0gIH0KLQotIAotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC93c2RsbW9kZWwvU2VydmljZUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9TZXJ2aWNlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTkxZDdmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9TZXJ2aWNlRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC53c2RsbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY0VsZW1lbnQ7Ci0KLQotcHVibGljIGNsYXNzIFNlcnZpY2VFbGVtZW50IGV4dGVuZHMgQmFzaWNFbGVtZW50Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBSRUxfUE9SVFMgPSAicG9ydHMiOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBSRUxfREVGSU5JVElPTiA9ICJkZWZpbml0aW9uIjsKLSAgCi0gIHB1YmxpYyBTZXJ2aWNlRWxlbWVudCAoRGVmaW5pdGlvbkVsZW1lbnQgZGVmaW5pdGlvbkVsZW1lbnQsU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lLGRlZmluaXRpb25FbGVtZW50LFJFTF9ERUZJTklUSU9OLERlZmluaXRpb25FbGVtZW50LlJFTF9TRVJWSUNFUyk7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0RGVmaW5pdGlvbigpCi0gIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHMoUkVMX0RFRklOSVRJT04pOwotICB9Ci0KLSAgcHVibGljIEVudW1lcmF0aW9uIGdldFBvcnRzKCkKLSAgewotICAgIHJldHVybiBnZXRFbGVtZW50cyhSRUxfUE9SVFMpOwotICB9Ci0KLSAgcHVibGljIGludCBnZXROdW1iZXJPZlBvcnRzKCkKLSAgewotICAgIHJldHVybiBnZXROdW1iZXJPZkVsZW1lbnRzKFJFTF9QT1JUUyk7Ci0gIH0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvd3NkbG1vZGVsL1N0dWJiZWRXU0RMTW9kZWwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9TdHViYmVkV1NETE1vZGVsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyOGZhNzYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9kYXRhbW9kZWwvd3NkbG1vZGVsL1N0dWJiZWRXU0RMTW9kZWwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwud3NkbG1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLQotcHVibGljIGNsYXNzIFN0dWJiZWRXU0RMTW9kZWwKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotCi0gIHByb3RlY3RlZCBNb2RlbCBmTW9kZWw7Ci0gIHB1YmxpYyBTdHViYmVkV1NETE1vZGVsKCkKLSAgewotICAgIFdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gbmV3IFdTRExFbGVtZW50KCJXU0RMRmlsZXMiKTsKLSAgICBmTW9kZWwgPSB3c2RsRWxlbWVudC5nZXRNb2RlbCgpOyAgIAotICB9Ci0KLSAgcHVibGljIE1vZGVsIGdldFdTRExNb2RlbCgpCi0gIHsKLSAgICByZXR1cm4gZk1vZGVsOwotICB9Ci0KLSAgcHVibGljIHZvaWQgYnVpbGRNb2RlbCgpCi0gIHsKLSAgICBEZWZpbml0aW9uRWxlbWVudCBkZWYxID0gbmV3IERlZmluaXRpb25FbGVtZW50KChXU0RMRWxlbWVudClmTW9kZWwuZ2V0Um9vdEVsZW1lbnQoKSwiU3RvY2tRdW90ZSIpOyAKLSAgICBTZXJ2aWNlRWxlbWVudCBzZXIxID0gbmV3IFNlcnZpY2VFbGVtZW50KGRlZjEsImdldFF1b3RlIik7Ci0gICAgU2VydmljZUVsZW1lbnQgc2VyMiA9IG5ldyBTZXJ2aWNlRWxlbWVudChkZWYxLCJzZXRRdW90ZSIpOwotICAgIFBvcnRFbGVtZW50IHBvcnQxID0gbmV3IFBvcnRFbGVtZW50KHNlcjEsInBvcnQxIik7Ci0gICAgUG9ydEVsZW1lbnQgcG9ydDIgPSBuZXcgUG9ydEVsZW1lbnQoc2VyMSwicG9ydDIiKTsKLSAgICBQb3J0RWxlbWVudCBwb3J0MyA9IG5ldyBQb3J0RWxlbWVudChzZXIyLCJwb3J0MSIpOwotICAgIFBvcnRFbGVtZW50IHBvcnQ0ID0gbmV3IFBvcnRFbGVtZW50KHNlcjIsInBvcnQyIik7Ci0gICAgQmluZGluZ0VsZW1lbnQgYmluZDEgPSBuZXcgQmluZGluZ0VsZW1lbnQocG9ydDEsImJpbmQxIik7Ci0gICAgQmluZGluZ0VsZW1lbnQgYmluZDIgPSBuZXcgQmluZGluZ0VsZW1lbnQocG9ydDIsImJpbmQxIik7Ci0gICAgQmluZGluZ0VsZW1lbnQgYmluZDMgPSBuZXcgQmluZGluZ0VsZW1lbnQocG9ydDMsImJpbmQxIik7Ci0gICAgQmluZGluZ0VsZW1lbnQgYmluZDQgPSBuZXcgQmluZGluZ0VsZW1lbnQocG9ydDQsImJpbmQxIik7Ci0gICAgT3BlcmF0aW9uRWxlbWVudCBvcDEgPSBuZXcgT3BlcmF0aW9uRWxlbWVudChiaW5kMSwib3AxIik7Ci0gICAgbmV3IE9wZXJhdGlvbkVsZW1lbnQoYmluZDIsIm9wMSIpOwotICAgIG5ldyBPcGVyYXRpb25FbGVtZW50KGJpbmQzLCJvcDEiKTsKLSAgICBuZXcgT3BlcmF0aW9uRWxlbWVudChiaW5kNCwib3AxIik7Ci0gICAgTWVzc2FnZUVsZW1lbnQgbWUxID0gbmV3IE1lc3NhZ2VFbGVtZW50KG9wMSwibWUxIik7Ci0gICAgTWVzc2FnZUVsZW1lbnQgbWUyID0gbmV3IE1lc3NhZ2VFbGVtZW50KG9wMSwibWUyIik7Ci0gICAgbmV3IFBhcnRFbGVtZW50KG1lMSwicGUxIik7Ci0gICAgbmV3IFBhcnRFbGVtZW50KG1lMiwicGUyIik7Ci0KLSAgICBEZWZpbml0aW9uRWxlbWVudCBkZWYyID0gbmV3IERlZmluaXRpb25FbGVtZW50KChXU0RMRWxlbWVudClmTW9kZWwuZ2V0Um9vdEVsZW1lbnQoKSwiVGVtcENvbnZlcnNpb24iKTsgCi0gICAgU2VydmljZUVsZW1lbnQgc2VyMyA9IG5ldyBTZXJ2aWNlRWxlbWVudChkZWYyLCJnZXRUZW1wIik7Ci0gICAgU2VydmljZUVsZW1lbnQgc2VyNCA9IG5ldyBTZXJ2aWNlRWxlbWVudChkZWYyLCJzZXRUZW1wIik7Ci0gICAgUG9ydEVsZW1lbnQgcG9ydDUgPSBuZXcgUG9ydEVsZW1lbnQoc2VyMywicG9ydDEiKTsKLSAgICBQb3J0RWxlbWVudCBwb3J0NiA9IG5ldyBQb3J0RWxlbWVudChzZXI0LCJwb3J0MSIpOwotICAgIEJpbmRpbmdFbGVtZW50IGJpbmQ1ID0gbmV3IEJpbmRpbmdFbGVtZW50KHBvcnQ1LCJiaW5kMSIpOwotICAgIEJpbmRpbmdFbGVtZW50IGJpbmQ2ID0gbmV3IEJpbmRpbmdFbGVtZW50KHBvcnQ2LCJiaW5kMSIpOwotICAgIG5ldyBPcGVyYXRpb25FbGVtZW50KGJpbmQ1LCJvcDEiKTsKLSAgICBuZXcgT3BlcmF0aW9uRWxlbWVudChiaW5kNiwib3AxIik7Ci0KLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2RhdGFtb2RlbC93c2RsbW9kZWwvV1NETEVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9XU0RMRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWIxNDVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZGF0YW1vZGVsL3dzZGxtb2RlbC9XU0RMRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC53c2RsbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY01vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci0KLQotcHVibGljIGNsYXNzIFdTRExFbGVtZW50IGV4dGVuZHMgQmFzaWNFbGVtZW50Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBSRUxfREVGSU5JVElPTlMgPSAiZGVmaW5pdGlvbnMiOwotICAKLSAgLyoKLSAgKgotICAqKi8KLSAgcHVibGljIFdTRExFbGVtZW50IChTdHJpbmcgbmFtZSkKLSAgewotICAgIHRoaXMobmFtZSxuZXcgQmFzaWNNb2RlbCgiV1NETE1vZGVsIikpOwotICB9Ci0KLSAgcHVibGljIFdTRExFbGVtZW50IChTdHJpbmcgbmFtZSwgTW9kZWwgbW9kZWwpCi0gIHsKLSAgICBzdXBlcihuYW1lLG1vZGVsKTsKLSAgICBtb2RlbC5zZXRSb290RWxlbWVudCh0aGlzKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXREZWZpbml0aW9ucygpCi0gIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHMoUkVMX0RFRklOSVRJT05TKTsKLSAgfQotCi0gIHB1YmxpYyBpbnQgZ2V0TnVtYmVyT2ZEZWZpbml0aW9ucygpCi0gIHsKLSAgICByZXR1cm4gZ2V0TnVtYmVyT2ZFbGVtZW50cyhSRUxfREVGSU5JVElPTlMpOwotICB9Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZnJhZ21lbnRzL0NsaWVudFByZUFzc2VtYmx5RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZnJhZ21lbnRzL0NsaWVudFByZUFzc2VtYmx5RnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYyMmFiYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2ZyYWdtZW50cy9DbGllbnRQcmVBc3NlbWJseUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmZyYWdtZW50czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBDbGllbnRQcmVBc3NlbWJseUZyYWdtZW50IGV4dGVuZHMgU2VxdWVuY2VGcmFnbWVudAotewotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9mcmFnbWVudHMvQ2xpZW50UHJlRGVwbG95RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZnJhZ21lbnRzL0NsaWVudFByZURlcGxveUZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNjlmYmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9mcmFnbWVudHMvQ2xpZW50UHJlRGVwbG95RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZnJhZ21lbnRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2VxdWVuY2VGcmFnbWVudDsKLQotcHVibGljIGNsYXNzIENsaWVudFByZURlcGxveUZyYWdtZW50IGV4dGVuZHMgU2VxdWVuY2VGcmFnbWVudAotewotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9mcmFnbWVudHMvQ2xpZW50UHJlRGV2ZWxvcEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2ZyYWdtZW50cy9DbGllbnRQcmVEZXZlbG9wRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdmYTFlZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2ZyYWdtZW50cy9DbGllbnRQcmVEZXZlbG9wRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZnJhZ21lbnRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2VxdWVuY2VGcmFnbWVudDsKLQotcHVibGljIGNsYXNzIENsaWVudFByZURldmVsb3BGcmFnbWVudCBleHRlbmRzIFNlcXVlbmNlRnJhZ21lbnQKLXsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZnJhZ21lbnRzL0NsaWVudFByZUluc3RhbGxGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9mcmFnbWVudHMvQ2xpZW50UHJlSW5zdGFsbEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MmEyYjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9mcmFnbWVudHMvQ2xpZW50UHJlSW5zdGFsbEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmZyYWdtZW50czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBDbGllbnRQcmVJbnN0YWxsRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50Ci17Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2ZyYWdtZW50cy9TZXJ2aWNlUHJlQXNzZW1ibHlGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9mcmFnbWVudHMvU2VydmljZVByZUFzc2VtYmx5RnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdjZWYzYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2ZyYWdtZW50cy9TZXJ2aWNlUHJlQXNzZW1ibHlGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5mcmFnbWVudHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotCi1wdWJsaWMgY2xhc3MgU2VydmljZVByZUFzc2VtYmx5RnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50Ci17Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2ZyYWdtZW50cy9TZXJ2aWNlUHJlRGVwbG95RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZnJhZ21lbnRzL1NlcnZpY2VQcmVEZXBsb3lGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDU4ZjVjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZnJhZ21lbnRzL1NlcnZpY2VQcmVEZXBsb3lGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5mcmFnbWVudHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotCi1wdWJsaWMgY2xhc3MgU2VydmljZVByZURlcGxveUZyYWdtZW50IGV4dGVuZHMgU2VxdWVuY2VGcmFnbWVudAotewotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9mcmFnbWVudHMvU2VydmljZVByZURldmVsb3BGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9mcmFnbWVudHMvU2VydmljZVByZURldmVsb3BGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2I0ZDJmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vZnJhZ21lbnRzL1NlcnZpY2VQcmVEZXZlbG9wRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZnJhZ21lbnRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2VxdWVuY2VGcmFnbWVudDsKLQotcHVibGljIGNsYXNzIFNlcnZpY2VQcmVEZXZlbG9wRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50Ci17Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2ZyYWdtZW50cy9TZXJ2aWNlUHJlSW5zdGFsbEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL2ZyYWdtZW50cy9TZXJ2aWNlUHJlSW5zdGFsbEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NDkyNDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9mcmFnbWVudHMvU2VydmljZVByZUluc3RhbGxGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5mcmFnbWVudHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotCi1wdWJsaWMgY2xhc3MgU2VydmljZVByZUluc3RhbGxGcmFnbWVudCBleHRlbmRzIFNlcXVlbmNlRnJhZ21lbnQKLXsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vcGx1Z2luL1dlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9wbHVnaW4vV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNDA2MmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9wbHVnaW4vV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjQgICAxMTU2OTAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24ucGx1Z2luOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjsKLQotLyoqCi0qIFRoaXMgaXMgdGhlIHBsdWdpbiBjbGFzcyBmb3IgdGhlIFdlYiBTZXJ2aWNlcyBwbHVnaW4uCi0qIDxwPgotKiBUaGlzIHBsdWdpbiBjb250YWlucyB0aGUgYnVsayBvZiB0aGUgV2ViIFNlcnZpY2VzIHJ1bnRpbWUuCi0qIE9ubHkgdGhlIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSBwb3J0aW9uIG9mIHRoZSBydW50aW1lIGlzCi0qIGZvdW5kIGVsc2V3aGVyZSAtIGluIHRoZSBvcmcuZWNsaXBzZS5qc3Qud3MudWkgcGx1Z2luLgotKi8KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4gZXh0ZW5kcyBQbHVnaW4KLXsKLSAgLyoqCi0gICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRlc2NyaXB0b3Igb2YgdGhpcyBwbHVnaW4gaW4gcGx1Z2luLnhtbC4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSUQgPSAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uIjsKLQotICAvKioKLSAgKiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4uCi0gICovCi0gIHByaXZhdGUgc3RhdGljIFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbiBpbnN0YW5jZV87Ci0KLSAgLyoqCi0gICogQ29uc3RydWN0cyBhIHJ1bnRpbWUgcGx1Z2luIG9iamVjdCBmb3IgdGhpcyBwbHVnaW4uCi0gICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlQ29uc3VtcHRpb25QbHVnaW4gKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgaW5zdGFuY2VfID0gdGhpczsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIHBsdWdpbi4gRXF1aXZhbGVudCB0byBjYWxsaW5nCi0gICogKFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbilQbGF0Zm9ybS5nZXRQbHVnaW4oIm9yZy5lY2xpcHNlLmpzdC53cyIpOwotICAqIEByZXR1cm4gVGhlIFdlYlNlcnZpY2VDb25zdW1wdGlvblBsdWdpbiBzaW5nbGV0b24uCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgV2ViU2VydmljZUNvbnN1bXB0aW9uUGx1Z2luIGdldEluc3RhbmNlICgpCi0gIHsKLSAgICByZXR1cm4gaW5zdGFuY2VfOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vSW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL0lucHV0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjI1ZTAzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vSW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA2MTIgICAxNDU0MzMgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29kZWdlbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uYmVhbi5UeXBlVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5BdHRyaWJ1dGVFbGVtZW50VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5CZWFuRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5UeXBlRmFjdG9yeTsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIElucHV0RmlsZVR5cGVHZW5lcmF0b3IuCi0qICovCi1wdWJsaWMgY2xhc3MgSW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yIGV4dGVuZHMgSW5wdXRGaWxlVHlwZUdlbmVyYXRvciAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAgCi0gIHByaXZhdGUgYm9vbGVhbiBmU3RhdGVMZXNzOwotCi0gIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIAotICAqLwotICBwdWJsaWMgSW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yIChTdHJpbmdCdWZmZXIgYnVmZmVyLCBpbnQgY3VycmVudExldmVsLCBpbnQgbGV2ZWxzRGVlcCkKLSAgewotICAgICBzdXBlcihidWZmZXIsY3VycmVudExldmVsLGxldmVsc0RlZXApOwotICB9Ci0KLSAKLSAgLyoKLSAgKiBUYWtlcyBpbiBhbiBvYmplY3QgdG8gYmUgYWN0ZWQgdXBvbiBieSB0aGlzIHZpc2l0b3IgYWN0aW9uCi0gICogQHBhcmFtIE9iamVjdCBUaGUgb2JqZWN0IHRvIGJlIGFjdGVkIHVwb24KLSAgKi8KLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBvYmplY3QpCi0gIHsKLSAgICAgCi0gICAgIEF0dHJpYnV0ZUVsZW1lbnRUeXBlIGF0dHJpYnV0ZUVsZW1lbnRUeXBlID0gKEF0dHJpYnV0ZUVsZW1lbnRUeXBlKW9iamVjdDsKLSAgICAgLy9pZiBpdCBpcyBhIGJlYW4gaXMgaXQgc3RhdGVsZXNzCi0gICAgIGF0dHJpYnV0ZUVsZW1lbnRUeXBlLmdldFR5cGVFbGVtZW50KCk7IAotICAgICBpZihhdHRyaWJ1dGVFbGVtZW50VHlwZS5nZXRTZXR0ZXJNZXRob2QoKSA9PSBudWxsKSByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICAgaWYoYXR0cmlidXRlRWxlbWVudFR5cGUuZ2V0VHlwZUVsZW1lbnQoKS5pc0JlYW4oKSl7Ci0gICAgICAgQmVhbkVsZW1lbnQgYmVhbiA9IChCZWFuRWxlbWVudClhdHRyaWJ1dGVFbGVtZW50VHlwZS5nZXRUeXBlRWxlbWVudCgpOwotICAgICAgIGZTdGF0ZUxlc3MgPSBiZWFuLmlzU3RhdGVMZXNzKCk7Ci0gICAgIH0JIAotCi0gICAgIFR5cGVWaXNpdG9yIHR5cGVWaXNpdG9yID0gbmV3IFR5cGVWaXNpdG9yKCk7Ci0gICAgIElucHV0RmlsZVR5cGVHZW5lcmF0b3IgaW5wdXRGaWxlVHlwZUdlbmVyYXRvciA9IG5ldyBJbnB1dEZpbGVUeXBlR2VuZXJhdG9yKGZidWZmZXIsZkN1cnJlbnRMZXZlbCxmTGV2ZWxzRGVlcCk7Ci0gICAgIGlmKGF0dHJpYnV0ZUVsZW1lbnRUeXBlLmdldFR5cGVFbGVtZW50KCkuaXNCZWFuKCkgJiYgIVR5cGVGYWN0b3J5LnJlY29nbml6ZWRCZWFuKGF0dHJpYnV0ZUVsZW1lbnRUeXBlLmdldFR5cGVFbGVtZW50KCkuZ2V0TmFtZSgpKSAKLSAgICAgCSYmICEoZ2V0UmV0dXJuUGFyYW0oKSAmJiAoVHlwZUZhY3RvcnkuaXNSZWNvZ25pemVkUmV0dXJuVHlwZShhdHRyaWJ1dGVFbGVtZW50VHlwZS5nZXRUeXBlRWxlbWVudCgpLmdldFR5cGVOYW1lKCkpIHx8IGZTdGF0ZUxlc3MpKSkKLSAgICAgICAgICAgICAgICAKLSAgICAgYWRkUGFyZW50R2V0dGVyKGF0dHJpYnV0ZUVsZW1lbnRUeXBlLmdldEdldHRlck1ldGhvZCgpLGF0dHJpYnV0ZUVsZW1lbnRUeXBlLmdldFR5cGVFbGVtZW50KCkuZ2V0TmFtZSgpKTsKLSAgICAgaW5wdXRGaWxlVHlwZUdlbmVyYXRvci5hZGRQYXJlbnRHZXR0ZXIocmV0dXJuUGFyZW50R2V0dGVyKCkscmV0dXJuUGFyZW50R2V0dGVyVHlwZSgpKTsKLSAgICAgaW5wdXRGaWxlVHlwZUdlbmVyYXRvci5zZXRJbnN0YW5jZU5hbWUoZkluc3RhbmNlTmFtZSk7Ci0gICAgIGlucHV0RmlsZVR5cGVHZW5lcmF0b3Iuc2V0UmV0dXJuUGFyYW0oZ2V0UmV0dXJuUGFyYW0oKSk7Ci0gICAgIHR5cGVWaXNpdG9yLnJ1bihhdHRyaWJ1dGVFbGVtZW50VHlwZSxpbnB1dEZpbGVUeXBlR2VuZXJhdG9yKTsgICAKLSAgICAgZmJ1ZmZlciA9IGlucHV0RmlsZVR5cGVHZW5lcmF0b3IuZ2V0U3RyaW5nQnVmZmVyKCk7Ci0gICAgIAotICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9JbnB1dEZpbGVHZW5lcmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vSW5wdXRGaWxlR2VuZXJhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNDdiYjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9JbnB1dEZpbGVHZW5lcmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29kZWdlbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uYmVhbi5NZXRob2RWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIE1ldGhvZEZpbGVnZW5lcmF0b3IuCi0qICovCi1wdWJsaWMgY2xhc3MgSW5wdXRGaWxlR2VuZXJhdG9yIGV4dGVuZHMgR2VuZXJhdG9yIAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gICAKLSAgcHVibGljIFN0cmluZyBmUmVzdWx0TmFtZTsKLQotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiB1c2VkIGRpcmVjdGx5IAotICAqLwotICBwdWJsaWMgSW5wdXRGaWxlR2VuZXJhdG9yIChTdHJpbmcgcmVzdWx0KQotICB7Ci0gICAgICBzdXBlcigpOwotICAgICAgZlJlc3VsdE5hbWUgPSByZXN1bHQ7Ci0gIH0KLQotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiBjYWxsZWQgZnJvbSBzdWJjbGFzc2VzCi0gICovCi0gIHB1YmxpYyBJbnB1dEZpbGVHZW5lcmF0b3IgKFN0cmluZ0J1ZmZlciBidWZmZXIsIFN0cmluZyByZXN1bHQpCi0gIHsKLSAgICAgIHN1cGVyKGJ1ZmZlcik7Ci0gICAgICBmUmVzdWx0TmFtZSA9IHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIGNhbGxlZCBmcm9tIHN1YmNsYXNzZXMKLSAgKi8KLSAgcHVibGljIElucHV0RmlsZUdlbmVyYXRvciAoU3RyaW5nQnVmZmVyIGJ1ZmZlcikKLSAgewotICAgICAgc3VwZXIoYnVmZmVyKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RmlsZU5hbWVzKFN0cmluZyByZXN1bHRzKQotICB7Ci0gICAgZlJlc3VsdE5hbWUgPSByZXN1bHRzOwotICB9Ci0KLSAgLy90YWtlcyBpbiBhIGJlYW4gbm9kZQotICAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBvYmplY3QpCi0gICB7Ci0gICAgICBFbGVtZW50IGJlYW5FbGVtZW50ID0gKEVsZW1lbnQpb2JqZWN0OwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwlQHBhZ2UgY29udGVudFR5cGU9XCJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOFwiJT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPEhUTUw+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxIRUFEPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8VElUTEU+SW5wdXRzPC9USVRMRT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPC9IRUFEPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8Qk9EWT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPEgxPklucHV0czwvSDE+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgKyAiIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwlIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgKyAiU3RyaW5nIG1ldGhvZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKFwibWV0aG9kXCIpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJpbnQgbWV0aG9kSUQgPSAwOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJpZiAobWV0aG9kID09IG51bGwpIG1ldGhvZElEID0gLTE7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgKyAiIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoImJvb2xlYW4gdmFsaWQgPSB0cnVlOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0KLSAgICAgIGZidWZmZXIuYXBwZW5kKCJpZihtZXRob2RJRCAhPSAtMSkgbWV0aG9kSUQgPSBJbnRlZ2VyLnBhcnNlSW50KG1ldGhvZCk7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOyAKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJzd2l0Y2ggKG1ldGhvZElEKXsgIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgCQotICAgICAgLy8gZ28gdG8gdGhlIG5leHQgZ2VuZXJhdG9yCi0gICAgICBNZXRob2RWaXNpdG9yIG1ldGhvZFZpc2l0b3IgPSBuZXcgTWV0aG9kVmlzaXRvcigpOwotICAgICAgSW5wdXRGaWxlSGVscDFHZW5lcmF0b3IgaW5wdXRGaWxlSGVscDFHZW5lcmF0b3IgPSBuZXcgSW5wdXRGaWxlSGVscDFHZW5lcmF0b3IoZmJ1ZmZlcixmUmVzdWx0TmFtZSk7IAotICAgICAgbWV0aG9kVmlzaXRvci5ydW4oYmVhbkVsZW1lbnQsaW5wdXRGaWxlSGVscDFHZW5lcmF0b3IpOwotICAgICAgZmJ1ZmZlciA9IGlucHV0RmlsZUhlbHAxR2VuZXJhdG9yLmdldFN0cmluZ0J1ZmZlcigpOwotCi0gICAgICBmYnVmZmVyLmFwcGVuZCgiY2FzZSAxMTExMTExMTExOiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJ2YWxpZCA9IGZhbHNlOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8Rk9STSBNRVRIT0Q9XCJQT1NUXCIgQUNUSU9OPVwiIiArIGZSZXN1bHROYW1lICsgIlwiIFRBUkdFVD1cInJlc3VsdFwiPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8SU5QVVQgVFlQRT1cIkhJRERFTlwiIE5BTUU9XCJtZXRob2RcIiBWQUxVRT1cIjwlPW1ldGhvZCU+XCI+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxUQUJMRT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPFRSPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8VEQgQ09MU1BBTj1cIjFcIiBBTElHTj1cIkxFRlRcIj5VUkxTdHJpbmc6PC9URD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPFREIEFMSUdOPVwibGVmdFwiPjxJTlBVVCBUWVBFPVwiVEVYVFwiIE5BTUU9XCJ1cmwxMTExMTExMTExXCIgU0laRT0yMD48L1REPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8L1RSPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8L1RBQkxFPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8QlI+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxJTlBVVCBUWVBFPVwiU1VCTUlUXCIgVkFMVUU9XCJJbnZva2VcIj4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPElOUFVUIFRZUEU9XCJSRVNFVFwiIFZBTFVFPVwiQ2xlYXJcIj4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPC9GT1JNPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8JSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJicmVhazsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiY2FzZSAxMTExMTExMTEyOiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJ2YWxpZCA9IGZhbHNlOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8Rk9STSBNRVRIT0Q9XCJQT1NUXCIgQUNUSU9OPVwiIiArIGZSZXN1bHROYW1lICsgIlwiIFRBUkdFVD1cInJlc3VsdFwiPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8SU5QVVQgVFlQRT1cIkhJRERFTlwiIE5BTUU9XCJtZXRob2RcIiBWQUxVRT1cIjwlPW1ldGhvZCU+XCI+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxCUj4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPElOUFVUIFRZUEU9XCJTVUJNSVRcIiBWQUxVRT1cIkludm9rZVwiPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8SU5QVVQgVFlQRT1cIlJFU0VUXCIgVkFMVUU9XCJDbGVhclwiPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8L0ZPUk0+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwlIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoImJyZWFrOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIAotICAgICAgCi0KLSAgICAgIGZidWZmZXIuYXBwZW5kKCJ9IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOyAgICAKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJpZiAodmFsaWQpIHsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiJT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSArICJTZWxlY3QgYSBtZXRob2QgdG8gdGVzdC4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7ICAKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8JSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKEdlbmVyYXRvci5UQUIgKyAicmV0dXJuOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJ9IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIiU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8L0JPRFk+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwvSFRNTD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAKLSAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCi0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9JbnB1dEZpbGVIZWxwMUdlbmVyYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9JbnB1dEZpbGVIZWxwMUdlbmVyYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDYxMDVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vSW5wdXRGaWxlSGVscDFHZW5lcmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb2RlZ2VuOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZ1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW4uUGFyYW1ldGVyVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5NZXRob2RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIElucHV0RmlsZUhlbHAxR2VuZXJhdG9yLgotKiAqLwotcHVibGljIGNsYXNzIElucHV0RmlsZUhlbHAxR2VuZXJhdG9yIGV4dGVuZHMgSW5wdXRGaWxlR2VuZXJhdG9yIAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5JVElBTF9TVEFURSA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTkFMX1NUQVRFID0gMjsKLQotICBwdWJsaWMgaW50IGZzdGF0ZTsKLSAgIAotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiAKLSAgKi8KLSAgcHVibGljIElucHV0RmlsZUhlbHAxR2VuZXJhdG9yIChTdHJpbmdCdWZmZXIgYnVmZmVyKQotICB7Ci0gICAgICBzdXBlcihidWZmZXIpOwotICAgICAgZnN0YXRlID0gSU5JVElBTF9TVEFURTsKLSAgfQotICAKLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICogCi0gICovCi0gIHB1YmxpYyBJbnB1dEZpbGVIZWxwMUdlbmVyYXRvciAoU3RyaW5nQnVmZmVyIGJ1ZmZlcixTdHJpbmcgcmVzdWx0TmFtZSkKLSAgewotICAgICAgc3VwZXIoYnVmZmVyLHJlc3VsdE5hbWUpOwotICAgICAgZnN0YXRlID0gSU5JVElBTF9TVEFURTsKLSAgfQotICAKLSAgLyoKLSAgKiBUYWtlcyBpbiBhbiBlbGVtZW50Ci0gICogQHBhcmFtIE9iamVjdCBUYWtlcyBpbiBhbiBvYmplY3QgdG8gYmUgYWN0ZWQgdXBvbgotICAqLwotICBwdWJsaWMgSVN0YXR1cyB2aXNpdCAoT2JqZWN0IG9iamVjdCkKLSAgewotICAgICBFbGVtZW50IG1ldGhvZEVsZW1lbnQgPSAoRWxlbWVudClvYmplY3Q7Ci0gICAgIE1ldGhvZEVsZW1lbnQgbWV0aG9kID0gKE1ldGhvZEVsZW1lbnQpbWV0aG9kRWxlbWVudDsKLSAgICAgaWYgKG1ldGhvZC5nZXRNZXRob2RPbW1pc3Npb24oKSkgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgIAotICAgICBQYXJhbWV0ZXJWaXNpdG9yIHBhcmFtZXRlclZpc2l0b3IgPSBuZXcgUGFyYW1ldGVyVmlzaXRvcigpOwotICAgICBmYnVmZmVyLmFwcGVuZCgiY2FzZSAiICsgbWV0aG9kLmdldE51bWJlcklEKCkrICI6IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICBmYnVmZmVyLmFwcGVuZCgidmFsaWQgPSBmYWxzZTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgIGZidWZmZXIuYXBwZW5kKCIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgZmJ1ZmZlci5hcHBlbmQoIjxGT1JNIE1FVEhPRD1cIlBPU1RcIiBBQ1RJT049XCIiICsgZlJlc3VsdE5hbWUgKyAiXCIgVEFSR0VUPVwicmVzdWx0XCI+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICBmYnVmZmVyLmFwcGVuZCgiPElOUFVUIFRZUEU9XCJISURERU5cIiBOQU1FPVwibWV0aG9kXCIgVkFMVUU9XCI8JT1tZXRob2QlPlwiPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAKLSAgICAgLy8gZ28gdG8gdGhlIG5leHQgZ2VuZXJhdG9yCi0gICAgIElucHV0RmlsZUhlbHAyR2VuZXJhdG9yIGlucHV0RmlsZUhlbHAyR2VuZXJhdG9yID0gbmV3IElucHV0RmlsZUhlbHAyR2VuZXJhdG9yKGZidWZmZXIpOyAKLSAgICAgcGFyYW1ldGVyVmlzaXRvci5ydW4obWV0aG9kRWxlbWVudCxpbnB1dEZpbGVIZWxwMkdlbmVyYXRvcik7Ci0gICAgIGZidWZmZXIgPSBpbnB1dEZpbGVIZWxwMkdlbmVyYXRvci5nZXRTdHJpbmdCdWZmZXIoKTsKLSAgICAgCi0gICAgIGZidWZmZXIuYXBwZW5kKCI8QlI+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICBmYnVmZmVyLmFwcGVuZCgiPElOUFVUIFRZUEU9XCJTVUJNSVRcIiBWQUxVRT1cIkludm9rZVwiPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgZmJ1ZmZlci5hcHBlbmQoIjxJTlBVVCBUWVBFPVwiUkVTRVRcIiBWQUxVRT1cIkNsZWFyXCI+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICBmYnVmZmVyLmFwcGVuZCgiPC9GT1JNPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgZmJ1ZmZlci5hcHBlbmQoIjwlIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICBmYnVmZmVyLmFwcGVuZCgiYnJlYWs7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgCi0KLSAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgIAotICAKLSAgfSAgIAotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vSW5wdXRGaWxlSGVscDJHZW5lcmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vSW5wdXRGaWxlSGVscDJHZW5lcmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI3ZTY0Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL0lucHV0RmlsZUhlbHAyR2VuZXJhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29kZWdlbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5iZWFuLlR5cGVWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIElucHV0RmlsZUhlbHAyR2VuZXJhdG9yLgotKiAqLwotcHVibGljIGNsYXNzIElucHV0RmlsZUhlbHAyR2VuZXJhdG9yIGV4dGVuZHMgSW5wdXRGaWxlSGVscDFHZW5lcmF0b3IgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgIAotICAvKgotICAqIFRoaXMgaXMgYWN0dWFsbHkgdXNlZCBieSB0aGUgcmVzdWx0IGdlbmVyYXRvciB0byBzaG93IHRoZSAKLSAgKiByZXN1bHRhbnQgQmVhbgotICAqIFRoZSBuYW1lIGlzIHRoZSBuYW1lIHRoZSByZXN1bHRhbnQgYmVhbiBpcyB1c2luZyBhcyBpdHMgaW5zdGFuY2UgbmFtZQotICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGZJbnN0YW5jZU5hbWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBmUmV0dXJuUGFyYW09ZmFsc2U7Ci0KLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICogCi0gICovCi0gIHB1YmxpYyBJbnB1dEZpbGVIZWxwMkdlbmVyYXRvciAoU3RyaW5nQnVmZmVyIGJ1ZmZlcikKLSAgewotICAgICAgc3VwZXIoYnVmZmVyKTsKLSAgICAgIGZJbnN0YW5jZU5hbWU9IiI7Ci0gIH0KLQotICAvKioKLSAgKiBUaGlzIGlzIHN0YXRlIGRhdGEgdG8gYmUgdXNlZCBieSB0aGUgZ2VuZXJhdG9ycwotICAqIEBwYXJhbSBTdHJpbmcgbmFtZSBUaGUgaW5zdGFuY2UgbmFtZSBvZiB0aGUgcGFyYW1ldGVycyB0eXBlIGJlYW4KLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0SW5zdGFuY2VOYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gICAgZkluc3RhbmNlTmFtZSA9IG5hbWU7Ci0gIH0KLQotICAvKioKLSAgKiBUaGlzIGlzIHN0YXRlIGRhdGEgdG8gYmUgdXNlZCBieSB0aGUgZ2VuZXJhdG9ycwotICAqIEByZXR1cm4gU3RyaW5nIG5hbWUgVGhlIGluc3RhbmNlIG5hbWUgb2YgdGhlIHBhcmFtZXRlcnMgdHlwZSBiZWFuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5zdGFuY2VOYW1lKCkKLSAgewotICAgIHJldHVybiBmSW5zdGFuY2VOYW1lOwotICB9Ci0KLQotICAvKgotICAqIFRha2VzIGluIGFuIG9iamVjdCB0byBiZSBhY3RlZCB1cG9uIGJ5IHRoaXMgdmlzaXRvciBhY3Rpb24KLSAgKiBAcGFyYW0gT2JqZWN0IFRoZSBvYmplY3QgdG8gYmUgYWN0ZWQgdXBvbgotICAqLwotICBwdWJsaWMgSVN0YXR1cyB2aXNpdCAoT2JqZWN0IG9iamVjdCkKLSAgewotICAgICAgRWxlbWVudCBwYXJhbWV0ZXJFbGVtZW50ID0gKEVsZW1lbnQpb2JqZWN0OwotICAgICAgZ2V0VmlzaXRvcigpOwotCi0gICAgICBmYnVmZmVyLmFwcGVuZCgiPFRBQkxFPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLQotICAgICAgVHlwZVZpc2l0b3IgdHlwZVZpc2l0b3IgPSBuZXcgVHlwZVZpc2l0b3IoKTsKLSAgICAgIElucHV0RmlsZVR5cGVHZW5lcmF0b3IgaW5wdXRGaWxlVHlwZUdlbmVyYXRvciA9IG5ldyBJbnB1dEZpbGVUeXBlR2VuZXJhdG9yKGZidWZmZXIsMCk7Ci0gICAgICBpbnB1dEZpbGVUeXBlR2VuZXJhdG9yLnNldFJldHVyblBhcmFtKGdldFJldHVyblBhcmFtKCkpOwotICAgICAgaW5wdXRGaWxlVHlwZUdlbmVyYXRvci5zZXRJbnN0YW5jZU5hbWUoZkluc3RhbmNlTmFtZSk7Ci0gICAgICB0eXBlVmlzaXRvci5ydW4ocGFyYW1ldGVyRWxlbWVudCxpbnB1dEZpbGVUeXBlR2VuZXJhdG9yKTsKLSAgICAgIGZidWZmZXIgPSBpbnB1dEZpbGVUeXBlR2VuZXJhdG9yLmdldFN0cmluZ0J1ZmZlcigpOwotCi0gICAgICBmYnVmZmVyLmFwcGVuZCgiPC9UQUJMRT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAKLSAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGdldFJldHVyblBhcmFtKCkKLSAgewotICAgIHJldHVybiBmUmV0dXJuUGFyYW07Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRSZXR1cm5QYXJhbShib29sZWFuIHJldHVyblBhcmFtKQotICB7Ci0gICAgZlJldHVyblBhcmFtID0gcmV0dXJuUGFyYW07Ci0gIH0gCi0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9JbnB1dEZpbGVUeXBlR2VuZXJhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL0lucHV0RmlsZVR5cGVHZW5lcmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI5YmY2ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL0lucHV0RmlsZVR5cGVHZW5lcmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA2MTIgICAxNDU0MzMgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwNzA0MTAgICAxODA5NTIgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFNhbXBsZSBKU1AgZ2VuZXJhdG9yIGNob2tlcyBvbiBpbnRlcmZhY2VzIGFuZCBhYnN0cmFjdCBjbGFzc2VzIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29kZWdlbjsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZ1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW4uQXR0cmlidXRlVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5iZWFuLkZpZWxkVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5BdHRyaWJ1dGVFbGVtZW50VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5CZWFuRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5EYXRhVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5TaW1wbGVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLlR5cGVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLlR5cGVGYWN0b3J5OwotCi0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgSW5wdXRGaWxlVHlwZUdlbmVyYXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBJbnB1dEZpbGVUeXBlR2VuZXJhdG9yIGV4dGVuZHMgSW5wdXRGaWxlSGVscDJHZW5lcmF0b3IgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgIAotICBwcm90ZWN0ZWQgU3RyaW5nIGZQYXJlbnRHZXR0ZXJzOwotICBwcm90ZWN0ZWQgaW50IGZMZXZlbHNEZWVwOwotICBwcm90ZWN0ZWQgaW50IGZDb2xzcGFuOwotICBwcm90ZWN0ZWQgaW50IGZDdXJyZW50TGV2ZWw7Ci0gIHByaXZhdGUgYm9vbGVhbiBmSXNTaW1wbGU7Ci0gIHByaXZhdGUgYm9vbGVhbiBmU3RhdGVMZXNzQmVhbjsKLSAgcHJpdmF0ZSBWZWN0b3IgZkdldHRlcnM7Ci0gIHByaXZhdGUgVmVjdG9yIGZUeXBlczsKLSAgcHJpdmF0ZSBib29sZWFuIGZXcml0ZSA9IHRydWU7Ci0KLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICogCi0gICovCi0gIHB1YmxpYyBJbnB1dEZpbGVUeXBlR2VuZXJhdG9yIChTdHJpbmdCdWZmZXIgYnVmZmVyLCBpbnQgY3VycmVudExldmVsKQotICB7Ci0gICAgIHN1cGVyKGJ1ZmZlcik7Ci0gICAgIGZDdXJyZW50TGV2ZWwgPSBjdXJyZW50TGV2ZWw7Ci0gICAgIGZMZXZlbHNEZWVwID0gLTE7Ci0gICAgIGZQYXJlbnRHZXR0ZXJzID0gIiI7Ci0gIH0KLQotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiAKLSAgKi8KLSAgcHVibGljIElucHV0RmlsZVR5cGVHZW5lcmF0b3IgKFN0cmluZ0J1ZmZlciBidWZmZXIsIGludCBjdXJyZW50TGV2ZWwsaW50IGxldmVsc0RlZXApCi0gIHsKLSAgICAgc3VwZXIoYnVmZmVyKTsKLSAgICAgZkN1cnJlbnRMZXZlbCA9IGN1cnJlbnRMZXZlbDsKLSAgICAgZkxldmVsc0RlZXAgPSBsZXZlbHNEZWVwOwotICAgICBmUGFyZW50R2V0dGVycyA9ICIiOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0UGFyZW50R2V0dGVycyhWZWN0b3IgZ2V0dGVyLFZlY3RvciB0eXBlKQotICB7Ci0gICAgIGlmKGZHZXR0ZXJzICE9IG51bGwpewotICAgICAgIGZHZXR0ZXJzLmNsZWFyKCk7Ci0gICAgICAgZlR5cGVzLmNsZWFyKCk7Ci0gICAgIH0KLSAgICAgYWRkUGFyZW50R2V0dGVyKGdldHRlcix0eXBlKTsKLSAgfQotCi0KLSAgLyoqCi0gICogVGhpcyBmdW5jdGlvbiBob2xkcyBzb21lIHN0YXRlIGRhdGEgdGhhdCBpcyBpbXBvcnRhbnQgaW4gZ2V0dGluZyB0aGUgCi0gICogU3RyaW5ncyBmb3IgZGlzcGxheSBvZiByZXN1bHRhbnQgYmVhbnMKLSAgKiBAcGFyYW0gU3RyaW5nIGdldHRlciB0aGlzIGlzIHRoZSBnZXR0ZXIgb2YgYW4gYXR0cmlidXRlCi0gICogVGhlIGlkZWEgaXMgdGhhdCBieSB0aGUgdGltZSB3ZSBnZXQgdG8gdGhlIHNpbXBsZSB0eXBlCi0gICogd2UgaGF2ZSBnZXRBZGRyZXNzKCkuZ2V0U3RyZWV0KCkuLi4uCi0gICovCi0gIHB1YmxpYyB2b2lkIGFkZFBhcmVudEdldHRlcihTdHJpbmcgZ2V0dGVyLCBTdHJpbmcgdHlwZSkKLSAgewotICAgIGlmKGZHZXR0ZXJzID09IG51bGwpIGZHZXR0ZXJzID0gbmV3IFZlY3RvcigpOwotICAgIGlmKGZUeXBlcyA9PSBudWxsKSBmVHlwZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZkdldHRlcnMuYWRkRWxlbWVudChnZXR0ZXIpOwotICAgIGZUeXBlcy5hZGRFbGVtZW50KHR5cGUpOwotICB9Ci0KLSAgLyoKLSAgKiB0aGlzIHdpbGwgYmUgdXNlZCB3aGVuIHBhc3NpbmcgYmV0d2VlbiB0d28gdmlzaXRvcnMKLSAgKgotICAqLwotICBwdWJsaWMgdm9pZCBhZGRQYXJlbnRHZXR0ZXIoVmVjdG9yIGdldHRlcnMsIFZlY3RvciB0eXBlcykKLSAgewotICAgIGlmKGZHZXR0ZXJzID09IG51bGwpIGZHZXR0ZXJzID0gbmV3IFZlY3RvcigpOwotICAgIGlmKGZUeXBlcyA9PSBudWxsKSBmVHlwZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgaW50IHNpemUgPSBnZXR0ZXJzLnNpemUoKTsgICAgCi0gICAgZm9yKGludCBpID0gMDsgaTxzaXplOyBpKyspewotICAgICAgZkdldHRlcnMuYWRkRWxlbWVudChnZXR0ZXJzLmdldChpKSk7Ci0gICAgICBmVHlwZXMuYWRkRWxlbWVudCh0eXBlcy5nZXQoaSkpOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCBTdHJpbmcgcmV0dXJuUGFyZW50R2V0dGVyKGludCBjb3VudCkKLSAgewotICAgIGlmIChmR2V0dGVycyA9PSBudWxsIHx8IGNvdW50ID4gZkdldHRlcnMuc2l6ZSgpKSByZXR1cm4gbnVsbDsKLSAgICByZXR1cm4gKFN0cmluZylmR2V0dGVycy5nZXQoY291bnQpOyAgCi0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIHJldHVyblBhcmVudEdldHRlclR5cGUoaW50IGNvdW50KQotICB7Ci0gICAgaWYgKGZUeXBlcyA9PSBudWxsIHx8IGNvdW50ID4gZlR5cGVzLnNpemUoKSkgcmV0dXJuIG51bGw7Ci0gICAgcmV0dXJuIChTdHJpbmcpZlR5cGVzLmdldChjb3VudCk7ICAKLSAgfQotCi0gIHByb3RlY3RlZCBWZWN0b3IgcmV0dXJuUGFyZW50R2V0dGVyKCkKLSAgewotICAgIGlmIChmR2V0dGVycyA9PSBudWxsICkgcmV0dXJuIG5ldyBWZWN0b3IoKTsKLSAgICByZXR1cm4gZkdldHRlcnM7ICAKLSAgfQotCi0gIHByb3RlY3RlZCBWZWN0b3IgcmV0dXJuUGFyZW50R2V0dGVyVHlwZSgpCi0gIHsKLSAgICBpZiAoZlR5cGVzID09IG51bGwgKSByZXR1cm4gbmV3IFZlY3RvcigpOwotICAgIHJldHVybiBmVHlwZXM7ICAKLSAgfQotCi0gIHByb3RlY3RlZCBpbnQgZ2V0dGVyQ291bnQoKQotICB7Ci0gICAgaWYoZkdldHRlcnMgPT0gbnVsbCkgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZHZXR0ZXJzLnNpemUoKTsgCi0gIH0KLQotCi0gIC8qKgotICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBzb21lIHN0YXRlIGRhdGEgdGhhdCBpcyBpbXBvcnRhbnQgaW4gZ2V0dGluZyB0aGUgCi0gICogU3RyaW5ncyBmb3IgZGlzcGxheSBvZiByZXN1bHRhbnQgYmVhbnMKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgc3RyaW5nIG9mIGdldHRlcnMgdG8gdGhpcyBwb2ludAotICAqIFRoZSBpZGVhIGlzIHRoYXQgYnkgdGhlIHRpbWUgd2UgZ2V0IHRvIHRoZSBzaW1wbGUgdHlwZQotICAqIHdlIGhhdmUgZ2V0QWRkcmVzcygpLmdldFN0cmVldCgpLi4uLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFBhcmVudEdldHRlcnMoKQotICB7Ci0gICAgcmV0dXJuIGZQYXJlbnRHZXR0ZXJzOwotICB9Ci0gIAotICAvKgotICAqIFRha2VzIGluIGFuIG9iamVjdCB0byBiZSBhY3RlZCB1cG9uIGJ5IHRoaXMgdmlzaXRvciBhY3Rpb24KLSAgKiBAcGFyYW0gT2JqZWN0IFRoZSBvYmplY3QgdG8gYmUgYWN0ZWQgdXBvbgotICAqLwotICBwdWJsaWMgSVN0YXR1cyB2aXNpdCAoT2JqZWN0IG9iamVjdCkKLSAgewotICAgICBUeXBlRWxlbWVudCBlbGVtZW50ID0gKFR5cGVFbGVtZW50KW9iamVjdDsKLSAgICAgICAgICAKLSAgICAgaWYgKEJvb2xlYW4uVFJVRS5lcXVhbHMoZWxlbWVudC5nZXRQcm9wZXJ0eUFzT2JqZWN0KFR5cGVFbGVtZW50Lk5PTl9JTlNUQU5USUFCTEUpKSkKLQkgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgIAotICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNpbXBsZUVsZW1lbnQpIGZJc1NpbXBsZSA9IHRydWU7Ci0gICAgIGVsc2UgZklzU2ltcGxlID0gZmFsc2U7Ci0KLSAgICAgLy90aGlzIGNvdWxkIGJlIGEgc3RhdGVsZXNzYmVhbiBuZWVkIHRvIGtub3cKLSAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBCZWFuRWxlbWVudCApewotICAgICAgICBCZWFuRWxlbWVudCBiZWFuID0gKEJlYW5FbGVtZW50KWVsZW1lbnQ7Ci0gICAgICAgIGlmIChiZWFuLmlzU3RhdGVMZXNzKCkpIGZTdGF0ZUxlc3NCZWFuID0gdHJ1ZTsKLSAgICAgICAgaWYgKGJlYW4uZ2V0QXR0cmliKCkgPT0gQmVhbkVsZW1lbnQuUkVBRE9OTFkpIGZXcml0ZSA9IGZhbHNlOwotICAgICB9Ci0KLQotCi0gICAgIC8vQ29tcGxleCB0eXBlIHN1cHBvcnQKLSAgICAgLy9maXJzdCBJIG5lZWQgdG8gZmluZCBvdXQgaG93IG1hbnkgbGV2ZWxzIGRlZXAKLSAgICAgaWYoZkxldmVsc0RlZXAgPT0gLTEpewotICAgICAgICBBdHRyaWJ1dGVWaXNpdG9yIGF0dHJpYnV0ZVZpc2l0b3IgPSBuZXcgQXR0cmlidXRlVmlzaXRvcigpOwotICAgICAgICBMZXZlbHNEZWVwVmlzaXRvckFjdGlvbiBsZHZhID0gbmV3IExldmVsc0RlZXBWaXNpdG9yQWN0aW9uKCk7Ci0gICAgICAgIGF0dHJpYnV0ZVZpc2l0b3IucnVuKGVsZW1lbnQsbGR2YSk7Ci0gICAgICAgIGZMZXZlbHNEZWVwID0gbGR2YS5nZXRMZXZlbHNEZWVwKCk7Ci0gICAgICAgIC8vY2hlY2sgb3V0IHRoZSBmaWVsZHMgCi0gICAgICAgIEZpZWxkVmlzaXRvciBmaWVsZFZpc2l0b3IgPSBuZXcgRmllbGRWaXNpdG9yKCk7Ci0gICAgICAgIExldmVsc0RlZXBWaXNpdG9yQWN0aW9uIGxkdmEyID0gbmV3IExldmVsc0RlZXBWaXNpdG9yQWN0aW9uKCk7Ci0gICAgICAgIGZpZWxkVmlzaXRvci5ydW4oZWxlbWVudCxsZHZhMik7Ci0KLSAgICAgICAgaWYoZkxldmVsc0RlZXAgPCBsZHZhMi5nZXRMZXZlbHNEZWVwKCkpZkxldmVsc0RlZXAgPSBsZHZhMi5nZXRMZXZlbHNEZWVwKCk7IAotICAgICAgICBmTGV2ZWxzRGVlcCsrOwotICAgICB9IAotICAgICBmQ29sc3BhbiA9IGZMZXZlbHNEZWVwIC0gZkN1cnJlbnRMZXZlbDsKLQotICAgICAvL2lmIHdlIGhhdmUgYSByZXR1cm4gcGFyYW0gd2l0aCBubyBnZXR0ZXIgbWFrZSBzdXJlIHdlIGFyZSBvbiB0aGUgCi0gICAgIC8vYXR0cmlidXRlIGFuZCBub3QgdGhlIHBhcmFtZXRlciB0aGVuIHJldHVybgotICAgICBpZihnZXRSZXR1cm5QYXJhbSgpICYmICBlbGVtZW50LmdldE93bmluZ0VsZW1lbnQoKSBpbnN0YW5jZW9mIEF0dHJpYnV0ZUVsZW1lbnRUeXBlICYmKCgoQXR0cmlidXRlRWxlbWVudFR5cGUpZWxlbWVudC5nZXRPd25pbmdFbGVtZW50KCkpLmdldEdldHRlck1ldGhvZCgpID09IG51bGwpICkgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0KLSAgICAgLy9Db2RlIGdlbiBmb3IgYWxsIGVsZW1lbnRzCi0gICAgIGlmKGZXcml0ZSl7Ci0gICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxUUj4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmQ3VycmVudExldmVsO2krKyl7Ci0gICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxURCBXSURUSD1cIjUlXCI+PC9URD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgfQotICAgICAgIGZidWZmZXIuYXBwZW5kKCI8VEQgQ09MU1BBTj1cIiIgKyBmQ29sc3BhbiArICJcIiBBTElHTj1cIkxFRlRcIj4iICsgZWxlbWVudC5nZXRPd25pbmdFbGVtZW50KCkuZ2V0TmFtZSgpICsgIjo8L1REPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsgICAKLSAgICAgfQotICAgICBpZihmSXNTaW1wbGUgfHwgVHlwZUZhY3RvcnkucmVjb2duaXplZEJlYW4oZWxlbWVudC5nZXROYW1lKCkpIAotICAgICAgICAgICAgICAgIHx8IChnZXRSZXR1cm5QYXJhbSgpICYmIGZTdGF0ZUxlc3NCZWFuKSAKLSAgICAgICAgICAgICAgICB8fCAoZ2V0UmV0dXJuUGFyYW0oKSAmJiBUeXBlRmFjdG9yeS5pc1JlY29nbml6ZWRSZXR1cm5UeXBlKGVsZW1lbnQuZ2V0VHlwZU5hbWUoKSkpKXsKLSAgICAgICAgaWYoZ2V0SW5zdGFuY2VOYW1lKCkuZXF1YWxzKCIiKSl7Ci0gICAgICAgICAgIGlmKGZXcml0ZSl7Ci0gICAgICAgICAgICAgRGF0YVR5cGUgZGF0YVR5cGUgPSBUeXBlRmFjdG9yeS5jcmVhdGVUeXBlKGVsZW1lbnQuZ2V0TmFtZSgpLGVsZW1lbnQuZ2V0T3duaW5nRWxlbWVudCgpLmdldE1VSUQoKSk7Ci0gICAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoZGF0YVR5cGUuaW5wdXRGb3JtKGVsZW1lbnQuZ2V0T3duaW5nRWxlbWVudCgpLmdldE1VSUQoKSkpOwotICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZXsKLSAgICAgICAgICAgaWYoZ2V0UmV0dXJuUGFyYW0oKSAmJiAoVHlwZUZhY3RvcnkuaXNSZWNvZ25pemVkUmV0dXJuVHlwZShlbGVtZW50LmdldFR5cGVOYW1lKCkpIHx8IGZTdGF0ZUxlc3NCZWFuKSl7Ci0gICAgICAgICAgICAgRGF0YVR5cGUgZGF0YVR5cGUgPSBUeXBlRmFjdG9yeS5jcmVhdGVUeXBlKGVsZW1lbnQuZ2V0VHlwZU5hbWUoKSxlbGVtZW50LmdldE93bmluZ0VsZW1lbnQoKS5nZXRNVUlEKCkpOyAgCi0gICAgICAgICAgICAgU3RyaW5nIHVuaXF1ZU5hbWUgPSAidHlwZSIgKyBkYXRhVHlwZS5nZXRVbmlxdWVOYW1lKCk7Ci0gICAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxURD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwlIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCJpZigiICsgIGdldEluc3RhbmNlTmFtZSgpICsgIiAhPSBudWxsKXsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgICAgICAgU3RyaW5nIGFmdGVyU3RyaW5nID0gZ2V0SW5zdGFuY2VOYW1lKCk7IAotICAgICAgICAgICAgIFN0cmluZyB0bXBTdHJpbmcgPSAidGViZWNlIjsKLSAgICAgICAgICAgICBTdHJpbmcgcHJldlN0cmluZyA9IGdldEluc3RhbmNlTmFtZSgpOwotICAgICAgICAgICAgIFN0cmluZyBuZXdUbXBTdHJpbmcgPSAiIjsKLSAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPGdldHRlckNvdW50KCk7aSsrKXsKLSAgICAgICAgICAgICAgIG5ld1RtcFN0cmluZyA9IHRtcFN0cmluZyArIGk7Ci0gICAgICAgICAgICAgICBmYnVmZmVyLmFwcGVuZChyZXR1cm5QYXJlbnRHZXR0ZXJUeXBlKGkpICsgIiAiICsgbmV3VG1wU3RyaW5nICsgIj0iICsgcHJldlN0cmluZyArICIuIiArIHJldHVyblBhcmVudEdldHRlcihpKSArICI7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICAgICAgICAgcHJldlN0cmluZyA9IG5ld1RtcFN0cmluZzsgCi0gICAgICAgICAgICAgICBmYnVmZmVyLmFwcGVuZCgiaWYoIiArIG5ld1RtcFN0cmluZyArICIgIT0gbnVsbCl7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICAgICAgICAgYWZ0ZXJTdHJpbmcgPSBuZXdUbXBTdHJpbmc7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKGVsZW1lbnQuZ2V0TmFtZSgpICsgIiAiICsgdW5pcXVlTmFtZSArICIgPSAiICsgYWZ0ZXJTdHJpbmcgKyAiLiIgKyAoKEF0dHJpYnV0ZUVsZW1lbnRUeXBlKWVsZW1lbnQuZ2V0T3duaW5nRWxlbWVudCgpKS5nZXRHZXR0ZXJNZXRob2QoKSsgIjsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7ICAgICAgICAgICAgIAotICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKGRhdGFUeXBlLlR5cGVDb252ZXJzaW9uKHVuaXF1ZU5hbWUpKTsKLSAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPGdldHRlckNvdW50KCk7aSsrKXsKLSAgICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCJ9Iik7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCJ9JT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwvVEQ+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgZWxzZXsgCi0gICAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxURD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwlIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCJpZigiICsgIGdldEluc3RhbmNlTmFtZSgpICsgIiAhPSBudWxsKXsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgICAgICAgU3RyaW5nIGFmdGVyU3RyaW5nID0gZ2V0SW5zdGFuY2VOYW1lKCk7Ci0gICAgICAgICAgICAgU3RyaW5nIHRtcFN0cmluZyA9ICJ0ZWJlY2UiOwotICAgICAgICAgICAgIFN0cmluZyBwcmV2U3RyaW5nID0gZ2V0SW5zdGFuY2VOYW1lKCk7Ci0gICAgICAgICAgICAgU3RyaW5nIG5ld1RtcFN0cmluZyA9ICIiOwotICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8Z2V0dGVyQ291bnQoKTtpKyspewotICAgICAgICAgICAgICAgbmV3VG1wU3RyaW5nID0gdG1wU3RyaW5nICsgaTsKLSAgICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKHJldHVyblBhcmVudEdldHRlclR5cGUoaSkgKyAiICIgKyBuZXdUbXBTdHJpbmcgKyAiPSIgKyBwcmV2U3RyaW5nICsgIi4iICsgcmV0dXJuUGFyZW50R2V0dGVyKGkpICsgIjsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgICAgICAgICBwcmV2U3RyaW5nID0gbmV3VG1wU3RyaW5nOyAKLSAgICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCJpZigiICsgbmV3VG1wU3RyaW5nICsgIiAhPSBudWxsKXsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgICAgICAgICBhZnRlclN0cmluZyA9IG5ld1RtcFN0cmluZzsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIiU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCI8JT0iKTsKLSAgICAgICAgICAgICBmYnVmZmVyLmFwcGVuZChhZnRlclN0cmluZyArICIuIiArICgoQXR0cmlidXRlRWxlbWVudFR5cGUpZWxlbWVudC5nZXRPd25pbmdFbGVtZW50KCkpLmdldEdldHRlck1ldGhvZCgpKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgICAgICAgICBmYnVmZmVyLmFwcGVuZCgiJT4iKTsKLSAgICAgICAgICAgICBmYnVmZmVyLmFwcGVuZCgiPCUiKTsKLSAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPGdldHRlckNvdW50KCk7aSsrKXsKLSAgICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCJ9Iik7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCJ9JT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwvVEQ+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAKLSAgICAgfQotICAgICAgICAgCi0gICAgICAvL05vdyBjYXJyeSBvbiBkb3duIHRoZSByZXN0IG9mIHRoZSBiZWFuCi0gICAgIGVsc2UgewotICAgICAgICBBdHRyaWJ1dGVWaXNpdG9yIGF0dHJpYnV0ZVZpc2l0b3IgPSBuZXcgQXR0cmlidXRlVmlzaXRvcigpOwotICAgICAgICBhdHRyaWJ1dGVWaXNpdG9yLnNldFJlc2lkZW50VmVjdG9yMShyZXR1cm5QYXJlbnRHZXR0ZXIoKSk7Ci0gICAgICAgIGF0dHJpYnV0ZVZpc2l0b3Iuc2V0UmVzaWRlbnRWZWN0b3IyKHJldHVyblBhcmVudEdldHRlclR5cGUoKSk7Ci0gICAgICAgIElucHV0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvciBpbnB1dEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IgPSBuZXcgSW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yKGZidWZmZXIsKGZDdXJyZW50TGV2ZWwgKyAxKSxmTGV2ZWxzRGVlcCk7Ci0gICAgICAgIGlucHV0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvci5zZXRSZXR1cm5QYXJhbShnZXRSZXR1cm5QYXJhbSgpKTsKLSAgICAgICAgaW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yLnNldEluc3RhbmNlTmFtZShmSW5zdGFuY2VOYW1lKTsKLSAgICAgICAgYXR0cmlidXRlVmlzaXRvci5ydW4oZWxlbWVudCxpbnB1dEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IpOwotICAgICAgICBmYnVmZmVyID0gaW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yLmdldFN0cmluZ0J1ZmZlcigpOwotICAgICAgIAotICAgICAgICAvL25vdyBkbyBmaWVsZHMgdmVyeSBzaW1pbGFyCi0gICAgICAgIEZpZWxkVmlzaXRvciBmaWVsZFZpc2l0b3IgPSBuZXcgRmllbGRWaXNpdG9yKCk7Ci0gICAgICAgIGZpZWxkVmlzaXRvci5zZXRSZXNpZGVudFZlY3RvcjEocmV0dXJuUGFyZW50R2V0dGVyKCkpOwotICAgICAgICBmaWVsZFZpc2l0b3Iuc2V0UmVzaWRlbnRWZWN0b3IyKHJldHVyblBhcmVudEdldHRlclR5cGUoKSk7Ci0gICAgICAgIElucHV0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvciBpbnB1dEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IyID0gbmV3IElucHV0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvcihmYnVmZmVyLChmQ3VycmVudExldmVsICsgMSksZkxldmVsc0RlZXApOwotICAgICAgICBpbnB1dEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IyLnNldFJldHVyblBhcmFtKGdldFJldHVyblBhcmFtKCkpOwotICAgICAgICBpbnB1dEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IyLnNldEluc3RhbmNlTmFtZShmSW5zdGFuY2VOYW1lKTsKLSAgICAgICAgZmllbGRWaXNpdG9yLnJ1bihlbGVtZW50LGlucHV0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvcjIpOwotICAgICAgICBmYnVmZmVyID0gaW5wdXRGaWxlQXR0cmlidXRlR2VuZXJhdG9yMi5nZXRTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAKLSAgICAgICAgCi0KLSAgICAgfQotCi0KLSAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL0xldmVsc0RlZXBWaXNpdG9yQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL0xldmVsc0RlZXBWaXNpdG9yQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmMmUxYTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9MZXZlbHNEZWVwVmlzaXRvckFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uc2FtcGxlYXBwLmNvZGVnZW47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLlZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uVmlzaXRvckFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5iZWFuLkF0dHJpYnV0ZVZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uYmVhbi5GaWVsZFZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uYmVhbi5UeXBlVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5BdHRyaWJ1dGVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLkJlYW5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLlR5cGVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLlR5cGVGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIExldmVsc0RlZXBWaXNpdG9yQWN0aW9uLgotKiAqLwotcHVibGljIGNsYXNzIExldmVsc0RlZXBWaXNpdG9yQWN0aW9uIGltcGxlbWVudHMgVmlzaXRvckFjdGlvbiAKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotCi0gIHByaXZhdGUgaW50IGZMZXZlbHNEZWVwOwotICBwcml2YXRlIGludCBmRGVlcGVzdExldmVsOwotICAKLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICogVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQKLSAgKiAKLSAgKi8KLSAgcHVibGljIExldmVsc0RlZXBWaXNpdG9yQWN0aW9uICgpCi0gIHsKLSAgICBmTGV2ZWxzRGVlcCA9IDA7Ci0gIH0KLQotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludAotICAqIAotICAqLwotICBwdWJsaWMgTGV2ZWxzRGVlcFZpc2l0b3JBY3Rpb24gKGludCBjdXJyZW50LGJvb2xlYW4gaW5jcmVtZW50KQotICB7Ci0gICAgZkxldmVsc0RlZXAgPSBjdXJyZW50OwotICAgIGlmKGluY3JlbWVudCkgZkxldmVsc0RlZXArKzsKLSAgICBmRGVlcGVzdExldmVsID0gZkxldmVsc0RlZXA7IAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKFN0cmluZyByZXNpZGVudCkKLSAgewotICAgIC8vbm90aGluZyB0byBiZSBkb25lIGJ1dCBtdXN0IGJlIGltcGxlbWVudGVkCi0gIH0KLQotCi0KLSAgLyoqCi0gICogVGhlIHZpc2l0b3IgdGhhdCBjYWxsZWQgdGhpcyBWaXNpdG9yQWN0aW9uCi0gICogQHBhcmFtIHZpc2l0b3IgdGhlIHZpc2l0b3IgdGhhdCBjYWxsZWQgdGhpcyB2aXNpdG9yIGFjdGlvbgotICAqLwotICBwdWJsaWMgdm9pZCBzZXRWaXNpdG9yKFZpc2l0b3IgdmlzaXRvcikKLSAgewotICB9Ci0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBsZXZlbCBvZiBuZXN0aW5nIHdpdGhpbiB0aGlzIGJlYW4KLSAgKiBAcmV0dXJuIGludCByZXR1cm5zIHRoZSBpbnQgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIG5lc3RzIG9mIHRoaXMgYmVhbgotICAqLwotICBwdWJsaWMgaW50IGdldExldmVsc0RlZXAoKQotICB7Ci0gICAgIHJldHVybiBmRGVlcGVzdExldmVsOwotICB9Ci0gCi0KLSAgLyoqCi0gICogVGFrZXMgaW4gYW4gb2JqZWN0IHRvIGJlIGFjdGVkIHVwb24gYnkgdGhpcyB2aXNpdG9yIGFjdGlvbgotICAqIEBwYXJhbSBPYmplY3QgVGhlIG9iamVjdCB0byBiZSBhY3RlZCB1cG9uCi0gICovCi0gIHB1YmxpYyBJU3RhdHVzIHZpc2l0IChPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgICBFbGVtZW50IGVsZW1lbnQgPSAoRWxlbWVudClvYmplY3Q7Ci0gICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEF0dHJpYnV0ZUVsZW1lbnQgfHwgZWxlbWVudCBpbnN0YW5jZW9mIFR5cGVFbGVtZW50KXsKLSAgICAgICAgIFR5cGVWaXNpdG9yIHR5cGVWaXNpdG9yID0gbmV3IFR5cGVWaXNpdG9yKCk7Ci0gICAgICAgICBMZXZlbHNEZWVwVmlzaXRvckFjdGlvbiBsdmRhID0gbmV3IExldmVsc0RlZXBWaXNpdG9yQWN0aW9uKGZMZXZlbHNEZWVwLHRydWUpOwotICAgICAgICAgdHlwZVZpc2l0b3IucnVuKGVsZW1lbnQsbHZkYSk7Ci0KLSAgICAgICAgIGlmIChsdmRhLmdldExldmVsc0RlZXAoKSA+IGZEZWVwZXN0TGV2ZWwpIGZEZWVwZXN0TGV2ZWwgPSBsdmRhLmdldExldmVsc0RlZXAoKTsgCi0gICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBCZWFuRWxlbWVudCAmJiAhKFR5cGVGYWN0b3J5LnJlY29nbml6ZWRCZWFuKGVsZW1lbnQuZ2V0TmFtZSgpKSkpewotICAgICAgICAgQXR0cmlidXRlVmlzaXRvciBhdHRyaWJ1dGVWaXNpdG9yID0gbmV3IEF0dHJpYnV0ZVZpc2l0b3IoKTsKLSAgICAgICAgIExldmVsc0RlZXBWaXNpdG9yQWN0aW9uIGx2ZGEgPSBuZXcgTGV2ZWxzRGVlcFZpc2l0b3JBY3Rpb24oZkxldmVsc0RlZXAsZmFsc2UpOwotICAgICAgICAgYXR0cmlidXRlVmlzaXRvci5ydW4oZWxlbWVudCxsdmRhKTsKLSAgICAgICAgIGlmIChsdmRhLmdldExldmVsc0RlZXAoKSA+IGZEZWVwZXN0TGV2ZWwpIGZEZWVwZXN0TGV2ZWwgPSBsdmRhLmdldExldmVsc0RlZXAoKTsgCi0gICAKLSAgICAgICAgIEZpZWxkVmlzaXRvciBmaWVsZFZpc2l0b3IgPSBuZXcgRmllbGRWaXNpdG9yKCk7Ci0gICAgICAgICBMZXZlbHNEZWVwVmlzaXRvckFjdGlvbiBsdmRhMiA9IG5ldyBMZXZlbHNEZWVwVmlzaXRvckFjdGlvbihmTGV2ZWxzRGVlcCxmYWxzZSk7Ci0gICAgICAgICBmaWVsZFZpc2l0b3IucnVuKGVsZW1lbnQsbHZkYTIpOwotICAgICAgICAgaWYgKGx2ZGEyLmdldExldmVsc0RlZXAoKSA+IGZEZWVwZXN0TGV2ZWwpIGZEZWVwZXN0TGV2ZWwgPSBsdmRhMi5nZXRMZXZlbHNEZWVwKCk7IAotICAgCi0gICAgICB9Ci0gICAgICAgICAKLSAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7ICAgCi0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9NZXRob2RGaWxlR2VuZXJhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL01ldGhvZEZpbGVHZW5lcmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlYzUwZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL01ldGhvZEZpbGVHZW5lcmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uc2FtcGxlYXBwLmNvZGVnZW47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uR2VuZXJhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW4uTWV0aG9kVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBNZXRob2RGaWxlZ2VuZXJhdG9yLgotKiAqLwotcHVibGljIGNsYXNzIE1ldGhvZEZpbGVHZW5lcmF0b3IgZXh0ZW5kcyBHZW5lcmF0b3IgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgIAotICBwdWJsaWMgU3RyaW5nIGZJbnB1dE5hbWU7Ci0gIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIAotICAqLwotICBwdWJsaWMgTWV0aG9kRmlsZUdlbmVyYXRvciAoU3RyaW5nIGlucHV0cykKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgZklucHV0TmFtZSA9IGlucHV0czsKLSAgfQotCi0gICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiBAcGFyYW0gU3RyaW5nQnVmZmVyIGJ1ZmZlciB0byBhcHBlbmQgY29kZWdlbiAKLSAgKi8KLSAgcHVibGljIE1ldGhvZEZpbGVHZW5lcmF0b3IgKFN0cmluZ0J1ZmZlciBidWZmZXIsU3RyaW5nIGlucHV0cykKLSAgewotICAgIHN1cGVyKGJ1ZmZlcik7Ci0gICAgZklucHV0TmFtZSA9IGlucHV0czsKLSAgfQotCi0KLSAgcHVibGljIHZvaWQgc2V0RmlsZU5hbWVzKFN0cmluZyBpbnB1dHMpCi0gIHsKLSAgICBmSW5wdXROYW1lID0gaW5wdXRzOwotICB9Ci0KLSAgLy9wdWJsaWMgc3RhdGljIFN0cmluZyBMT0NBVE9SID0gIkxvY2F0b3IiOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBCRUFOID0gIlByb3h5IjsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgR0VUID0gImdldCI7Ci0KLSAgCi0gIC8vdGFrZXMgaW4gYSBiZWFuIG5vZGUKLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBvYmplY3QpCi0gICB7Ci0gICAgICBFbGVtZW50IGJlYW5FbGVtZW50ID0gKEVsZW1lbnQpb2JqZWN0OwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwlQHBhZ2UgY29udGVudFR5cGU9XCJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOFwiJT4iKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8SFRNTD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSArICI8SEVBRD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSArICI8VElUTEU+TWV0aG9kczwvVElUTEU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgKyAiPC9IRUFEPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICsgIjxCT0RZPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICsgIjxIMT5NZXRob2RzPC9IMT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSArICI8VUw+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgTWV0aG9kVmlzaXRvciBtZXRob2RWaXNpdG9yID0gbmV3IE1ldGhvZFZpc2l0b3IoKTsKLSAgICAgIE1ldGhvZEZpbGVIZWxwR2VuZXJhdG9yIG1ldGhvZEZpbGVIZWxwR2VuZXJhdG9yID0gbmV3IE1ldGhvZEZpbGVIZWxwR2VuZXJhdG9yKGZidWZmZXIsZklucHV0TmFtZSk7IAotICAgICAgbWV0aG9kVmlzaXRvci5ydW4oYmVhbkVsZW1lbnQsbWV0aG9kRmlsZUhlbHBHZW5lcmF0b3IpOwotICAgICAgZmJ1ZmZlciA9IG1ldGhvZEZpbGVIZWxwR2VuZXJhdG9yLmdldFN0cmluZ0J1ZmZlcigpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwvVUw+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgKyAiPC9CT0RZPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FICsgIjwvSFRNTD4iKTsKLSAgICAgIAotICAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vTWV0aG9kRmlsZUhlbHBHZW5lcmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vTWV0aG9kRmlsZUhlbHBHZW5lcmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVkMGI3NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL01ldGhvZEZpbGVIZWxwR2VuZXJhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uc2FtcGxlYXBwLmNvZGVnZW47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuTWV0aG9kRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBNZXRob2RGaWxlZ2VuZXJhdG9yLgotKiAqLwotcHVibGljIGNsYXNzIE1ldGhvZEZpbGVIZWxwR2VuZXJhdG9yIGV4dGVuZHMgTWV0aG9kRmlsZUdlbmVyYXRvcgotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0KLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICoKLSAgKi8KLSAgcHVibGljIE1ldGhvZEZpbGVIZWxwR2VuZXJhdG9yIChTdHJpbmdCdWZmZXIgYnVmZmVyLFN0cmluZyBpbnB1dE5hbWUpCi0gIHsKLSAgICAgIHN1cGVyKGJ1ZmZlcixpbnB1dE5hbWUpOwotICB9Ci0KLQotICAvL3Rha2VzIGluIGEgTWV0aG9kIG5vZGUKLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBvYmplY3QpCi0gIHsKLSAgICAgIEVsZW1lbnQgbWV0aG9kRWxlbWVudCA9IChFbGVtZW50KW9iamVjdDsKLSAgICAgIE1ldGhvZEVsZW1lbnQgbWV0aG9kID0gKE1ldGhvZEVsZW1lbnQpbWV0aG9kRWxlbWVudDsKLSAgICAgIGlmIChtZXRob2QuZ2V0TWV0aG9kT21taXNzaW9uKCkpIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgICAgCi0gICAgICBmYnVmZmVyLmFwcGVuZCgiPExJPjxBIEhSRUY9XCIiICsgZklucHV0TmFtZSArICI/bWV0aG9kPSIgKyBtZXRob2QuZ2V0TnVtYmVySUQoKSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiXCIgVEFSR0VUPVwiaW5wdXRzXCI+ICIgKyBtZXRob2QuZ2V0RGlzcGxheU5hbWUoKSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPC9BPjwvTEk+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotCi0gICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vUmVzdWx0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9SZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxODY2ZjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9SZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA2MTIgICAxNDU0MzMgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb2RlZ2VuOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW4uVHlwZVZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuQXR0cmlidXRlRWxlbWVudFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuRGF0YVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuVHlwZUZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY0VsZW1lbnQ7Ci0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgUmVzdWx0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBSZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yIGV4dGVuZHMgUmVzdWx0RmlsZUhlbHAyR2VuZXJhdG9yIAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gICAKLSAgcHJpdmF0ZSBWZWN0b3IgZlNldHRlclZlY3RvcjsgCi0KLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICogQHBhcmFtIGJ1ZmZlciBTdHJpbmdCdWZmZXIgb2JqZWN0IHRoYXQgdGhpcyBjb2RlIGdlbmVyYXRvciB3cml0ZXMgdG8gCi0gICovCi0gIHB1YmxpYyBSZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yIChTdHJpbmdCdWZmZXIgYnVmZmVyKQotICB7Ci0gICAgICBzdXBlcihidWZmZXIpOwotICAgICAgCi0gIH0KLSAgCi0gIC8qKgotICAqIFNldHRlciB2ZWN0b3IKLSAgKi8KLSAgcHVibGljIFZlY3RvciBnZXRTZXR0ZXJWZWN0b3IoKQotICB7Ci0gICAgICByZXR1cm4gZlNldHRlclZlY3RvcjsKLSAgfQotICAKLQotICAvKioKLSAgKiBWaXNpdCBNZXRob2QgZ2VuZXJhdGVzIGNvZGUgZm9yIHRoaXMgVmlzaXRvcgotICAqIEBwYXJhbSBQYXJhbWV0ZXIgcGFyYW1ldGVyIGNvZGUgd2lsbCBiZSBnZW5lcmF0ZWQgCi0gICovCi0gIHB1YmxpYyBJU3RhdHVzIHZpc2l0IChPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgIEF0dHJpYnV0ZUVsZW1lbnRUeXBlIGF0dHJpYnV0ZUVsZW1lbnRUeXBlID0gKEF0dHJpYnV0ZUVsZW1lbnRUeXBlKW9iamVjdDsKLSAgICAgaWYoYXR0cmlidXRlRWxlbWVudFR5cGUuZ2V0U2V0dGVyTWV0aG9kKCkgPT0gbnVsbCkgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgIEJhc2ljRWxlbWVudCBlbGVtZW50ID0gKEJhc2ljRWxlbWVudClvYmplY3Q7Ci0gICAgIGlmKGF0dHJpYnV0ZUVsZW1lbnRUeXBlLmdldFR5cGVFbGVtZW50KCkuaXNTaW1wbGUoKSB8fCBUeXBlRmFjdG9yeS5yZWNvZ25pemVkQmVhbihhdHRyaWJ1dGVFbGVtZW50VHlwZS5nZXRUeXBlRWxlbWVudCgpLmdldE5hbWUoKSkpeyAgICAgIAotICAgICAgICAvL3N0YXJ0IHRoZSBjb2RlZ2VuCi0gICAgICAgIC8vYXNrIHRoZSBkYXRhdHlwZSBmb3IgaXRzIHJlcXVlc3QgbGluZSwgaXQgbWF5IG5lZWQgbWFyayB1cCBvciBub3QuCi0gICAgICAgIC8vaWUgRm9yIHRoZSBzaW1wbGUgdHlwZXMgd2UgbmVlZCB0aGUgbWFyayB1cAotICAgICAgICAvL2ZvciB0aGUgZG9tIGVsZW1lbnQgd2UgY2FudCB1c2UgaXQuCi0gICAgICAgIERhdGFUeXBlIGRhdGFUeXBlID0gVHlwZUZhY3RvcnkuY3JlYXRlVHlwZShhdHRyaWJ1dGVFbGVtZW50VHlwZS5nZXRUeXBlRWxlbWVudCgpLmdldE5hbWUoKSxlbGVtZW50LmdldE1VSUQoKSk7Ci0gICAgICAgIHNldFR5cGVPd25lcklkKGlkTmFtZShlbGVtZW50LmdldE5hbWUoKSkpOyAKLSAgICAgICAgZmJ1ZmZlci5hcHBlbmQoZGF0YVR5cGUuZ2V0UmVxdWVzdENvZGUoZWxlbWVudC5nZXRNVUlEKCksZ2V0VHlwZU93bmVySWQoKSkpOwotICAgICAgICAgICAgICAgIAotICAgICB9Ci0gICAgIAotICAgICBUeXBlVmlzaXRvciB0eXBlVmlzaXRvciA9IG5ldyBUeXBlVmlzaXRvcigpOwotICAgICBSZXN1bHRGaWxlVHlwZUdlbmVyYXRvciByZXN1bHRGaWxlVHlwZUdlbmVyYXRvciA9IG5ldyBSZXN1bHRGaWxlVHlwZUdlbmVyYXRvcihmYnVmZmVyKTsKLSAgICAgcmVzdWx0RmlsZVR5cGVHZW5lcmF0b3Iuc2V0TnVtYmVyRmFjdG9yeShnZXROdW1iZXJGYWN0b3J5KCkpOwotICAgICByZXN1bHRGaWxlVHlwZUdlbmVyYXRvci5zZXRUeXBlT3duZXJJZChnZXRUeXBlT3duZXJJZCgpKTsKLSAgICAgCi0gICAgIHR5cGVWaXNpdG9yLnJ1bihhdHRyaWJ1dGVFbGVtZW50VHlwZSxyZXN1bHRGaWxlVHlwZUdlbmVyYXRvcik7Ci0gICAgIHNldE51bWJlckZhY3RvcnkocmVzdWx0RmlsZVR5cGVHZW5lcmF0b3IuZ2V0TnVtYmVyRmFjdG9yeSgpKTsKLSAgICAgVmVjdG9yIHNldHRlcklucHV0cyA9IHJlc3VsdEZpbGVUeXBlR2VuZXJhdG9yLmdldFJlc2lkZW50VmVjdG9yKCk7IAotICAgICBwdXRSZXNpZGVudFZlY3RvcihhdHRyaWJ1dGVFbGVtZW50VHlwZS5nZXRTZXR0ZXJTaWduYXR1cmUoKFN0cmluZylzZXR0ZXJJbnB1dHMuZmlyc3RFbGVtZW50KCkpKTsKLSAgICAgCi0gICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9ICAgCi0KLSAgCi0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9SZXN1bHRGaWxlR2VuZXJhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL1Jlc3VsdEZpbGVHZW5lcmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQyNzcyMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL1Jlc3VsdEZpbGVHZW5lcmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MjMgICAxNDIyOTYgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29kZWdlbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uYmVhbi5NZXRob2RWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLkJlYW5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLQotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIE1ldGhvZEZpbGVnZW5lcmF0b3IuCi0qICovCi1wdWJsaWMgY2xhc3MgUmVzdWx0RmlsZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvciAKLXsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgVFJJUExFX1RBQiA9IEdlbmVyYXRvci5ET1VCTEVfVEFCICsgR2VuZXJhdG9yLlRBQjsgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFFVQURfVEFCID0gR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyBHZW5lcmF0b3IuRE9VQkxFX1RBQjsKLSAgCi0gIHByaXZhdGUgU3RyaW5nIHNldEVuZHBvaW50TWV0aG9kOwotCi0gIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIAotICAqLwotICBwdWJsaWMgUmVzdWx0RmlsZUdlbmVyYXRvciAoKQotICB7Ci0gICAgICBzdXBlcigpOwotICB9Ci0KLSAgIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIAotICAqLwotICBwdWJsaWMgUmVzdWx0RmlsZUdlbmVyYXRvciAoU3RyaW5nQnVmZmVyIGJ1ZmZlcikKLSAgewotICAgICAgc3VwZXIoYnVmZmVyKTsKLSAgfQotCi0gIC8vdGFrZXMgaW4gYSBiZWFuIG5vZGUKLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBvYmplY3QpCi0gIHsKLSAgICAgIEVsZW1lbnQgYmVhbkVsZW1lbnQgPSAoRWxlbWVudClvYmplY3Q7Ci0gICAgICBCZWFuRWxlbWVudCBiZWFuID0gKEJlYW5FbGVtZW50KWJlYW5FbGVtZW50OwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwlQHBhZ2UgY29udGVudFR5cGU9XCJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOFwiJT4iKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8JSByZXF1ZXN0LnNldENoYXJhY3RlckVuY29kaW5nKFwiVVRGLThcIik7ICU+IisgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPEhUTUw+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxIRUFEPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8VElUTEU+UmVzdWx0PC9USVRMRT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPC9IRUFEPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8Qk9EWT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPEgxPlJlc3VsdDwvSDE+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLQotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxqc3A6dXNlQmVhbiBpZD1cIiIrIGdldFNlc3Npb25CZWFuSWQoKSArICJcIiBzY29wZT1cInNlc3Npb25cIiBjbGFzcz1cIiIpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoYmVhbi5nZXROYW1lKCkgKyAiXCIgLz4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBpZiAoc2V0RW5kcG9pbnRNZXRob2QgIT0gbnVsbCAmJiBzZXRFbmRwb2ludE1ldGhvZC5sZW5ndGgoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIGZidWZmZXIuYXBwZW5kKCI8JSIpOwotICAgICAgICBmYnVmZmVyLmFwcGVuZChTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgICAgZmJ1ZmZlci5hcHBlbmQoImlmIChyZXF1ZXN0LmdldFBhcmFtZXRlcihcImVuZHBvaW50XCIpICE9IG51bGwgJiYgcmVxdWVzdC5nZXRQYXJhbWV0ZXIoXCJlbmRwb2ludFwiKS5sZW5ndGgoKSA+IDApIik7Ci0gICAgICAgIGZidWZmZXIuYXBwZW5kKFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICBmYnVmZmVyLmFwcGVuZChnZXRTZXNzaW9uQmVhbklkKCkpOwotICAgICAgICBmYnVmZmVyLmFwcGVuZCgiLiIpOwotICAgICAgICBpbnQgaW5kZXggPSBzZXRFbmRwb2ludE1ldGhvZC5pbmRleE9mKCc/Jyk7Ci0gICAgICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgewotICAgICAgICAgIGZidWZmZXIuYXBwZW5kKHNldEVuZHBvaW50TWV0aG9kLnN1YnN0cmluZygwLCBpbmRleCkpOwotICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCIobmV3ICIpOwotICAgICAgICAgIGZidWZmZXIuYXBwZW5kKHNldEVuZHBvaW50TWV0aG9kLnN1YnN0cmluZyhpbmRleCsxLCBzZXRFbmRwb2ludE1ldGhvZC5sZW5ndGgoKSkpOwotICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCIocmVxdWVzdC5nZXRQYXJhbWV0ZXIoXCJlbmRwb2ludFwiKSkpOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGZidWZmZXIuYXBwZW5kKHNldEVuZHBvaW50TWV0aG9kKTsKLSAgICAgICAgICBmYnVmZmVyLmFwcGVuZCgiKHJlcXVlc3QuZ2V0UGFyYW1ldGVyKFwiZW5kcG9pbnRcIikpOyIpOwotICAgICAgICB9Ci0gICAgICAgIGZidWZmZXIuYXBwZW5kKFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICBmYnVmZmVyLmFwcGVuZCgiJT4iKTsKLSAgICAgICAgZmJ1ZmZlci5hcHBlbmQoU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICB9Ci0gICAgICBmYnVmZmVyLmFwcGVuZChTdHJpbmdVdGlscy5ORVdMSU5FKTsgCi0gICAgICAgICAgICAKLSAgICAgIC8vY2Fycnkgb24gd2l0aCByZWd1bGFyIGdvcnAKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8JSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJTdHJpbmcgbWV0aG9kID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoXCJtZXRob2RcIik7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoImludCBtZXRob2RJRCA9IDA7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoImlmIChtZXRob2QgPT0gbnVsbCkgbWV0aG9kSUQgPSAtMTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSArICIiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiaWYobWV0aG9kSUQgIT0gLTEpIG1ldGhvZElEID0gSW50ZWdlci5wYXJzZUludChtZXRob2QpOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsgCi0gICAgICBmYnVmZmVyLmFwcGVuZCgiYm9vbGVhbiBnb3RNZXRob2QgPSBmYWxzZTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotCi0gICAgICBmYnVmZmVyLmFwcGVuZCgidHJ5IHsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgic3dpdGNoIChtZXRob2RJRCl7ICIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAKLSAgICAgIC8vIGdvIHRvIHRoZSBuZXh0IGdlbmVyYXRvcgotICAgICAgTWV0aG9kVmlzaXRvciBtZXRob2RWaXNpdG9yID0gbmV3IE1ldGhvZFZpc2l0b3IoKTsKLSAgICAgIFJlc3VsdEZpbGVIZWxwMUdlbmVyYXRvciByZXN1bHRGaWxlSGVscDFHZW5lcmF0b3IgPSBuZXcgUmVzdWx0RmlsZUhlbHAxR2VuZXJhdG9yKGZidWZmZXIpOyAKLSAgICAgIHJlc3VsdEZpbGVIZWxwMUdlbmVyYXRvci5zZXROdW1iZXJGYWN0b3J5KGdldE51bWJlckZhY3RvcnkoKSk7Ci0gICAgICByZXN1bHRGaWxlSGVscDFHZW5lcmF0b3Iuc2V0Q2xpZW50Rm9sZGVyUGF0aChnZXRDbGllbnRGb2xkZXJQYXRoKCkpOwotICAgICAgbWV0aG9kVmlzaXRvci5ydW4oYmVhbkVsZW1lbnQscmVzdWx0RmlsZUhlbHAxR2VuZXJhdG9yKTsKLSAgICAgIHNldE51bWJlckZhY3RvcnkocmVzdWx0RmlsZUhlbHAxR2VuZXJhdG9yLmdldE51bWJlckZhY3RvcnkoKSk7Ci0KLSAgICAgIGZidWZmZXIgPSByZXN1bHRGaWxlSGVscDFHZW5lcmF0b3IuZ2V0U3RyaW5nQnVmZmVyKCk7Ci0gCi0gICAgICBmYnVmZmVyLmFwcGVuZCgifSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsgICAgCi0gICAgICBmYnVmZmVyLmFwcGVuZCgifSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsgIiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIiU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoImV4Y2VwdGlvbjogPCU9IGUgJT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPCUiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgicmV0dXJuOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJ9IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoImlmKCFnb3RNZXRob2QpeyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJyZXN1bHQ6IE4vQSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8JSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJ9IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIiU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwvQk9EWT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPC9IVE1MPiIpOwotCi0gICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBzZXRFbmRwb2ludE1ldGhvZCBUaGUgc2V0RW5kcG9pbnRNZXRob2QgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2V0RW5kcG9pbnRNZXRob2QoU3RyaW5nIHNldEVuZHBvaW50TWV0aG9kKQotICB7Ci0gICAgdGhpcy5zZXRFbmRwb2ludE1ldGhvZCA9IHNldEVuZHBvaW50TWV0aG9kOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL1Jlc3VsdEZpbGVIZWxwMUdlbmVyYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9SZXN1bHRGaWxlSGVscDFHZW5lcmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE2NzdmNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL1Jlc3VsdEZpbGVIZWxwMUdlbmVyYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29kZWdlbjsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uR2VuZXJhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW4uUGFyYW1ldGVyVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5iZWFuLlJldHVyblBhcmFtZXRlclZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuRGF0YVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmRhdGFtb2RlbC5iZWFubW9kZWwuTWV0aG9kRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5UeXBlRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBSZXN1bHRGaWxlZ2VuZXJhdG9yLgotKiAqLwotcHVibGljIGNsYXNzIFJlc3VsdEZpbGVIZWxwMUdlbmVyYXRvciBleHRlbmRzIFJlc3VsdEZpbGVHZW5lcmF0b3IgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTklUSUFMX1NUQVRFID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklOQUxfU1RBVEUgPSAyOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNVEVNUCA9ICJtdGVtcCI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEJFQU4gPSAiUHJveHkiOwotICAKLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICogQHBhcmFtIGJ1ZmZlciBTdHJpbmdCdWZmZXIgb2JqZWN0IHRoYXQgdGhpcyBjb2RlIGdlbmVyYXRvciB3cml0ZXMgdG8gCi0gICovCi0gIHB1YmxpYyBSZXN1bHRGaWxlSGVscDFHZW5lcmF0b3IgKFN0cmluZ0J1ZmZlciBidWZmZXIpCi0gIHsKLSAgICAgIHN1cGVyKGJ1ZmZlcik7ICAgIAotICB9Ci0gIAotICAvKioKLSAgKiBWaXNpdCBNZXRob2QgZ2VuZXJhdGVzIGNvZGUgZm9yIHRoaXMgVmlzaXRvcgotICAqIEBwYXJhbSBtZXRob2QgbWV0aG9kIGNvZGUgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIAotICAqLwotICBwdWJsaWMgSVN0YXR1cyB2aXNpdCAoT2JqZWN0IG9iamVjdCkKLSAgewotICAgICBFbGVtZW50IG1ldGhvZEVsZW1lbnQgPSAoRWxlbWVudClvYmplY3Q7Ci0gIAotCi0gICAgIE1ldGhvZEVsZW1lbnQgbWV0aG9kID0gKE1ldGhvZEVsZW1lbnQpbWV0aG9kRWxlbWVudDsKLSAgICAgaWYgKG1ldGhvZC5nZXRNZXRob2RPbW1pc3Npb24oKSkgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0KLSAgICAgZmJ1ZmZlci5hcHBlbmQoImNhc2UgIiArIG1ldGhvZC5nZXROdW1iZXJJRCgpKyAiOiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgdmlzaXRIZWxwZXIobWV0aG9kKTsKLSAgICAgCi0gICAgIGZidWZmZXIuYXBwZW5kKCJicmVhazsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7IAotICAKLSAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0gICAKLSAgLyoqCi0gICogSGVscHMgb3V0IHRoZSB2aXNpdG9yCi0gICogQHBhcmFtIG1ldGhvZCBtZXRob2QgY29kZSB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgCi0gICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0SGVscGVyIChFbGVtZW50IG1ldGhvZEVsZW1lbnQpCi0gIHsKLQotICAgICBmYnVmZmVyLmFwcGVuZChHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJnb3RNZXRob2QgPSB0cnVlOyIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgCi0gICAgIE1ldGhvZEVsZW1lbnQgbWV0aG9kID0gKE1ldGhvZEVsZW1lbnQpbWV0aG9kRWxlbWVudDsKLSAgICAgLy8gZ28gdG8gdGhlIG5leHQgZ2VuZXJhdG9yCi0gICAgIFJlc3VsdEZpbGVIZWxwMkdlbmVyYXRvciByZXN1bHRGaWxlSGVscDJHZW5lcmF0b3IgPSBuZXcgUmVzdWx0RmlsZUhlbHAyR2VuZXJhdG9yKGZidWZmZXIpOyAKLSAgICAgcmVzdWx0RmlsZUhlbHAyR2VuZXJhdG9yLnNldE51bWJlckZhY3RvcnkoZ2V0TnVtYmVyRmFjdG9yeSgpKTsKLSAgICAgUGFyYW1ldGVyVmlzaXRvciBwYXJhbWV0ZXJWaXNpdG9yID0gbmV3IFBhcmFtZXRlclZpc2l0b3IoKTsKLSAgICAgcGFyYW1ldGVyVmlzaXRvci5ydW4obWV0aG9kRWxlbWVudCxyZXN1bHRGaWxlSGVscDJHZW5lcmF0b3IpOwotICAgICBmYnVmZmVyID0gcmVzdWx0RmlsZUhlbHAyR2VuZXJhdG9yLmdldFN0cmluZ0J1ZmZlcigpOwotICAgICBzZXROdW1iZXJGYWN0b3J5KHJlc3VsdEZpbGVIZWxwMkdlbmVyYXRvci5nZXROdW1iZXJGYWN0b3J5KCkpOwotICAgICAvLyB3ZSBtdXN0IG5vdyBncmFiIHRoZSBzdGF0ZSBkYXRhIGZyb20gdGhlIHJlc2lkZW50IHZlY3RvcgotICAgICBzZXRSZXNpZGVudFZlY3RvcihyZXN1bHRGaWxlSGVscDJHZW5lcmF0b3IuZ2V0UmVzaWRlbnRWZWN0b3IoKSk7Ci0KLSAgICAgCi0gICAgIC8vdGhlcmUgaXMgbm8gcmV0dXJuIHR5cGUgaWYgdm9pZCBvY2N1cnMgICAgCi0gICAgCi0gICAgIAotICAgICBpZiAobWV0aG9kLmdldFJldHVyblBhcmFtZXRlckVsZW1lbnQoKS5nZXRUeXBlRWxlbWVudCgpLmdldE5hbWUoKS5lcXVhbHMoInZvaWQiKSkKLSAgICAgICAgZmJ1ZmZlci5hcHBlbmQoR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyBnZXRTZXNzaW9uQmVhbklkKCkgKyAiLiIgK21ldGhvZC5nZXROYW1lKCkgKyAiKCIpOwotCi0gICAgIGVsc2V7Ci0gICAgICAgIGZidWZmZXIuYXBwZW5kKEdlbmVyYXRvci5ET1VCTEVfVEFCICsgbWV0aG9kLmdldFJldHVyblBhcmFtZXRlckVsZW1lbnQoKS5nZXRUeXBlRWxlbWVudCgpLmdldE5hbWUoKSArIEdlbmVyYXRvci5TUEFDRSArIG1ldGhvZC5nZXRNVUlEKCkgKyBNVEVNUCArIEdlbmVyYXRvci5TUEFDRSk7Ci0gICAgICAgIGZidWZmZXIuYXBwZW5kKCI9IiArIEdlbmVyYXRvci5TUEFDRSArIGdldFNlc3Npb25CZWFuSWQoKSArICIuIiArIG1ldGhvZC5nZXROYW1lKCkgKyAiKCIpOwotICAgICB9Ci0KLSAgICAgRW51bWVyYXRpb24gZSA9IGZSZXNpZGVudFZlY3Rvci5lbGVtZW50cygpOwotICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSl7Ci0gICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoKFN0cmluZyllLm5leHRFbGVtZW50KCkpOwotICAgICAgICAgIGlmIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgICAgICAgICBmYnVmZmVyLmFwcGVuZCgiLCIpOyAgICAKLSAgICAgfQotICAgICBmYnVmZmVyLmFwcGVuZCgiKTsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgIGlmICghbWV0aG9kLmdldFJldHVyblBhcmFtZXRlckVsZW1lbnQoKS5nZXRUeXBlRWxlbWVudCgpLmdldE5hbWUoKS5lcXVhbHMoInZvaWQiKSAmJiAhbWV0aG9kLmdldFJldHVyblBhcmFtZXRlckVsZW1lbnQoKS5nZXRUeXBlRWxlbWVudCgpLmlzUHJpbWl0aXZlKCkpewotICAgICAgICAvL2luIGNhc2Ugb3VyIHJlc3VsdCBpcyBudWxsCi0gICAgICAgIGZidWZmZXIuYXBwZW5kKCJpZigiICsgbWV0aG9kLmdldE1VSUQoKSArICJtdGVtcCA9PSBudWxsKXsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgIGZidWZmZXIuYXBwZW5kKCIlPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwlPSIgKyBtZXRob2QuZ2V0TVVJRCgpICsgIm10ZW1wICU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICBmYnVmZmVyLmFwcGVuZCgiPCUiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICAgIGZidWZmZXIuYXBwZW5kKCJ9ZWxzZXsiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgIH0KLSAgICAgCi0gICAgIC8vbm93IGxldHMgZGlzcGxheSB0aGUgcmV0dXJuIGJlYW4KLSAgICAgLy8gaWYgaXQgaXMgc2ltcGxlIHdlIGRvbnQgbmVlZCB0byB1c2UgdGhlIGdlbmVyYXRvcgotICAgICAKLSAgICAgaWYgKCFtZXRob2QuZ2V0UmV0dXJuUGFyYW1ldGVyRWxlbWVudCgpLmdldFR5cGVFbGVtZW50KCkuZ2V0TmFtZSgpLmVxdWFscygidm9pZCIpKXsKLSAgICAgICAgaWYgKG1ldGhvZC5nZXRSZXR1cm5QYXJhbWV0ZXJFbGVtZW50KCkuZ2V0VHlwZUVsZW1lbnQoKS5pc1NpbXBsZSgpIAotICAgICAgICAgICB8fCBUeXBlRmFjdG9yeS5yZWNvZ25pemVkQmVhbihtZXRob2QuZ2V0UmV0dXJuUGFyYW1ldGVyRWxlbWVudCgpLmdldFR5cGVFbGVtZW50KCkuZ2V0TmFtZSgpKQotICAgICAgICAgICB8fCBUeXBlRmFjdG9yeS5pc1N0YXRlTGVzc0JlYW4obWV0aG9kLmdldFJldHVyblBhcmFtZXRlckVsZW1lbnQoKS5nZXRUeXBlRWxlbWVudCgpLmdldFR5cGVOYW1lKCkpCi0gICAgICAgICAgIHx8IFR5cGVGYWN0b3J5LmlzUmVjb2duaXplZFJldHVyblR5cGUobWV0aG9kLmdldFJldHVyblBhcmFtZXRlckVsZW1lbnQoKS5nZXRUeXBlRWxlbWVudCgpLmdldFR5cGVOYW1lKCkpKXsKLSAgICAgICAgICAgRGF0YVR5cGUgZGF0YVR5cGUgPSBUeXBlRmFjdG9yeS5jcmVhdGVUeXBlKG1ldGhvZC5nZXRSZXR1cm5QYXJhbWV0ZXJFbGVtZW50KCkuZ2V0VHlwZUVsZW1lbnQoKS5nZXRUeXBlTmFtZSgpLG1ldGhvZC5nZXRSZXR1cm5QYXJhbWV0ZXJFbGVtZW50KCkuZ2V0TVVJRCgpKTsKLSAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoZGF0YVR5cGUuVHlwZUNvbnZlcnNpb24obWV0aG9kLmdldE1VSUQoKSArIE1URU1QKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZXsKLSAgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoIiU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgICAgICBJbnB1dEZpbGVIZWxwMkdlbmVyYXRvciBpbnB1dEZpbGVIZWxwMkdlbmVyYXRvciA9IG5ldyBJbnB1dEZpbGVIZWxwMkdlbmVyYXRvcihmYnVmZmVyKTsKLSAgICAgICAgICAgaW5wdXRGaWxlSGVscDJHZW5lcmF0b3Iuc2V0SW5zdGFuY2VOYW1lKG1ldGhvZC5nZXRNVUlEKCkgKyBNVEVNUCk7Ci0gICAgICAgICAgIGlucHV0RmlsZUhlbHAyR2VuZXJhdG9yLnNldFJldHVyblBhcmFtKHRydWUpOwotICAgICAgICAgICBSZXR1cm5QYXJhbWV0ZXJWaXNpdG9yIHJldHVyblBhcmFtZXRlclZpc2l0b3IgPSBuZXcgUmV0dXJuUGFyYW1ldGVyVmlzaXRvcigpOwotICAgICAgICAgICByZXR1cm5QYXJhbWV0ZXJWaXNpdG9yLnJ1bihtZXRob2QsaW5wdXRGaWxlSGVscDJHZW5lcmF0b3IpOwotICAgICAgICAgICBmYnVmZmVyID0gaW5wdXRGaWxlSGVscDJHZW5lcmF0b3IuZ2V0U3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgICAgIGZidWZmZXIuYXBwZW5kKCI8JSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLQotICAgICAgICB9Ci0gICAgIH0KLQotICAgIGlmICghbWV0aG9kLmdldFJldHVyblBhcmFtZXRlckVsZW1lbnQoKS5nZXRUeXBlRWxlbWVudCgpLmdldE5hbWUoKS5lcXVhbHMoInZvaWQiKSAgJiYgIW1ldGhvZC5nZXRSZXR1cm5QYXJhbWV0ZXJFbGVtZW50KCkuZ2V0VHlwZUVsZW1lbnQoKS5pc1ByaW1pdGl2ZSgpKSBmYnVmZmVyLmFwcGVuZCgifSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsgICAgCi0gICAgCi0gIH0KLQotCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vUmVzdWx0RmlsZUhlbHAyR2VuZXJhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL1Jlc3VsdEZpbGVIZWxwMkdlbmVyYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTIyODA3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vUmVzdWx0RmlsZUhlbHAyR2VuZXJhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb2RlZ2VuOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uYmVhbi5UeXBlVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5EYXRhVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5QYXJhbWV0ZXJFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5kYXRhbW9kZWwuYmVhbm1vZGVsLlR5cGVGYWN0b3J5OwotCi0vKioKLSogT2JqZWN0cyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIFJlc3VsdEZpbGVIZWxwMmdlbmVyYXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBSZXN1bHRGaWxlSGVscDJHZW5lcmF0b3IgZXh0ZW5kcyBHZW5lcmF0b3IgCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgIAotICBwcml2YXRlIFN0cmluZyBmVHlwZU93bmVySWQ7ICAKLQotCi0gIC8qKgotICAqIENvbnN0cnVjdG9yLgotICAqIEBwYXJhbSBidWZmZXIgU3RyaW5nQnVmZmVyIG9iamVjdCB0aGF0IHRoaXMgY29kZSBnZW5lcmF0b3Igd3JpdGVzIHRvIAotICAqLwotICBwdWJsaWMgUmVzdWx0RmlsZUhlbHAyR2VuZXJhdG9yIChTdHJpbmdCdWZmZXIgYnVmZmVyKQotICB7Ci0gICAgICBzdXBlcihidWZmZXIpOwotICAgICAgCi0gIH0KLSAgCi0gIC8qKgotICAqIFZpc2l0IE1ldGhvZCBnZW5lcmF0ZXMgY29kZSBmb3IgdGhpcyBWaXNpdG9yCi0gICogQHBhcmFtIFBhcmFtZXRlciBwYXJhbWV0ZXIgY29kZSB3aWxsIGJlIGdlbmVyYXRlZCAKLSAgKi8KLSAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBvYmplY3QpCi0gIHsKLSAgICAKLQotICAgICBQYXJhbWV0ZXJFbGVtZW50IHBhcmFtZXRlckVsZW1lbnQgPSAoUGFyYW1ldGVyRWxlbWVudClvYmplY3Q7Ci0gICAgIHBhcmFtZXRlckVsZW1lbnQuZ2V0VHlwZUVsZW1lbnQoKTsgCi0gICAgIGlmKHBhcmFtZXRlckVsZW1lbnQuZ2V0VHlwZUVsZW1lbnQoKS5pc1NpbXBsZSgpIHx8IFR5cGVGYWN0b3J5LnJlY29nbml6ZWRCZWFuKHBhcmFtZXRlckVsZW1lbnQuZ2V0VHlwZUVsZW1lbnQoKS5nZXROYW1lKCkpKXsgICAgICAKLSAgICAgICAgLy9zdGFydCB0aGUgY29kZWdlbgotICAgICAgICAgLy9hc2sgdGhlIGRhdGF0eXBlIGZvciBpdHMgcmVxdWVzdCBsaW5lLCBpdCBtYXkgbmVlZCBtYXJrIHVwIG9yIG5vdC4KLSAgICAgICAgLy9pZSBGb3IgdGhlIHNpbXBsZSB0eXBlcyB3ZSBuZWVkIHRoZSBtYXJrIHVwCi0gICAgICAgIC8vZm9yIHRoZSBkb20gZWxlbWVudCB3ZSBjYW50IHVzZSBpdC4KLSAgICAgICAgRGF0YVR5cGUgZGF0YVR5cGUgPSBUeXBlRmFjdG9yeS5jcmVhdGVUeXBlKHBhcmFtZXRlckVsZW1lbnQuZ2V0VHlwZUVsZW1lbnQoKS5nZXROYW1lKCkscGFyYW1ldGVyRWxlbWVudC5nZXRNVUlEKCkpOwotICAgICAgICBzZXRUeXBlT3duZXJJZChpZE5hbWUocGFyYW1ldGVyRWxlbWVudC5nZXROYW1lKCkpKTsKLSAgICAgICAgZmJ1ZmZlci5hcHBlbmQoZGF0YVR5cGUuZ2V0UmVxdWVzdENvZGUocGFyYW1ldGVyRWxlbWVudC5nZXRNVUlEKCksZ2V0VHlwZU93bmVySWQoKSkpOwotICAgICB9Ci0gICAgICAgICAKLSAgICAgLy92aXNpdCB0aGUgdHlwZSBnZW5lcmF0b3IKLSAgICAgUmVzdWx0RmlsZVR5cGVHZW5lcmF0b3IgcmVzdWx0RmlsZVR5cGVHZW5lcmF0b3IgPSBuZXcgUmVzdWx0RmlsZVR5cGVHZW5lcmF0b3IoZmJ1ZmZlcik7IAotICAgICByZXN1bHRGaWxlVHlwZUdlbmVyYXRvci5zZXROdW1iZXJGYWN0b3J5KGdldE51bWJlckZhY3RvcnkoKSk7Ci0gICAgIHJlc3VsdEZpbGVUeXBlR2VuZXJhdG9yLnNldFR5cGVPd25lcklkKGdldFR5cGVPd25lcklkKCkpOwotICAgICBUeXBlVmlzaXRvciBUeXBlVmlzaXRvciA9IG5ldyBUeXBlVmlzaXRvcigpOwotICAgICBUeXBlVmlzaXRvci5ydW4ocGFyYW1ldGVyRWxlbWVudCxyZXN1bHRGaWxlVHlwZUdlbmVyYXRvcik7Ci0gICAgIGZidWZmZXIgPSByZXN1bHRGaWxlVHlwZUdlbmVyYXRvci5nZXRTdHJpbmdCdWZmZXIoKTsKLSAgICAgc2V0TnVtYmVyRmFjdG9yeShyZXN1bHRGaWxlVHlwZUdlbmVyYXRvci5nZXROdW1iZXJGYWN0b3J5KCkpOwotICAgICBTdHJpbmcgbmFtZSA9IChTdHJpbmcpcmVzdWx0RmlsZVR5cGVHZW5lcmF0b3IuZ2V0UmVzaWRlbnRWZWN0b3IoKS5maXJzdEVsZW1lbnQoKTsKLSAgICAgcHV0UmVzaWRlbnRWZWN0b3IobmFtZSk7IAotICAgICAKLSAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZU93bmVySWQoKQotICB7Ci0gICAgIGlmIChmVHlwZU93bmVySWQgPT0gbnVsbCkgZlR5cGVPd25lcklkID0gIiI7IAotICAgICByZXR1cm4gZlR5cGVPd25lcklkOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VHlwZU93bmVySWQoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBmVHlwZU93bmVySWQgPSBuYW1lOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBpZE5hbWUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgCQotICAgIFN0cmluZyB1bmlxdWVOdW0gPSBTdHJpbmcudmFsdWVPZihnZXRVbmlxdWVOdW1iZXIoKSk7Ci0gICAgU3RyaW5nIG5ld05hbWUgPSBuYW1lLnJlcGxhY2UoJy4nLCcxJykgKyAiXyIgK3VuaXF1ZU51bSArICJpZCI7Ci0gICAgcmV0dXJuIG5ld05hbWU7Ci0gIH0KLQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL1Jlc3VsdEZpbGVUeXBlR2VuZXJhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3NhbXBsZWFwcC9jb2RlZ2VuL1Jlc3VsdEZpbGVUeXBlR2VuZXJhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MGQ4OTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9SZXN1bHRGaWxlVHlwZUdlbmVyYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMCAgIDE4MDk1MiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgU2FtcGxlIEpTUCBnZW5lcmF0b3IgY2hva2VzIG9uIGludGVyZmFjZXMgYW5kIGFic3RyYWN0IGNsYXNzZXMKLSAqIDIwMDcxMTEwICAgMjA5MDg3IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29kZWdlbjsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uR2VuZXJhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLmJlYW4uQXR0cmlidXRlVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5iZWFuLkZpZWxkVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5EYXRhVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5UeXBlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLmJlYW5tb2RlbC5UeXBlRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci0KLS8qKgotKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgUmVzdWx0RmlsZUhlbHAyZ2VuZXJhdG9yLgotKiAqLwotcHVibGljIGNsYXNzIFJlc3VsdEZpbGVUeXBlR2VuZXJhdG9yIGV4dGVuZHMgUmVzdWx0RmlsZUhlbHAyR2VuZXJhdG9yIAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0KLQotICBwdWJsaWMgU3RyaW5nIGZUeXBlSWROYW1lOwotIAotICAvKioKLSAgKiBDb25zdHJ1Y3Rvci4KLSAgKiBAcGFyYW0gYnVmZmVyIFN0cmluZ0J1ZmZlciBvYmplY3QgdGhhdCB0aGlzIGNvZGUgZ2VuZXJhdG9yIHdyaXRlcyB0byAKLSAgKi8KLSAgcHVibGljIFJlc3VsdEZpbGVUeXBlR2VuZXJhdG9yIChTdHJpbmdCdWZmZXIgYnVmZmVyKQotICB7Ci0gICAgICBzdXBlcihidWZmZXIpOwotICB9Ci0gIAotICAvKioKLSAgKiBWaXNpdCBNZXRob2QgZ2VuZXJhdGVzIGNvZGUgZm9yIHRoaXMgVmlzaXRvcgotICAqIEBwYXJhbSBQYXJhbWV0ZXIgcGFyYW1ldGVyIGNvZGUgd2lsbCBiZSBnZW5lcmF0ZWQgCi0gICovCi0gIHB1YmxpYyBJU3RhdHVzIHZpc2l0IChPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgIEVsZW1lbnQgdHlwZUVsZW1lbnQgPSAoRWxlbWVudClvYmplY3Q7Ci0gICAgIFR5cGVFbGVtZW50IHR5cGUgPSAoVHlwZUVsZW1lbnQpdHlwZUVsZW1lbnQ7ICAgICAgCi0gICAgIC8vIHJpZ2h0IG5vdyB3ZSBvbmx5IGhhdmUgc2ltcGxlIHRvIHdvcnJ5IGFib3V0Ci0gICAgIGlmKHR5cGUuaXNTaW1wbGUoKSB8fCBUeXBlRmFjdG9yeS5yZWNvZ25pemVkQmVhbih0eXBlLmdldE5hbWUoKSkpewotICAgICAgIC8vIGNyZWF0ZSB0aGUgdHlwZSB0aGF0IHJlcHJlc2VudHMgdGhlIHNpbXBsZSB0eXBlIG5hbWUKLSAgICAgICBEYXRhVHlwZSBkYXRhVHlwZSA9IFR5cGVGYWN0b3J5LmNyZWF0ZVR5cGUodHlwZS5nZXROYW1lKCksdHlwZS5nZXRPd25pbmdFbGVtZW50KCkuZ2V0TVVJRCgpKTsKLSAgCi0gICAgICAgU3RyaW5nIG5vZGVOYW1lID0gZ2V0VHlwZU93bmVySWQoKSsgIlRlbXAiOwotICAgICAgIGlmKCF0eXBlLmlzUHJpbWl0aXZlKCkpewotCQkgIAotCQkgICBmYnVmZmVyLmFwcGVuZChHZW5lcmF0b3IuRE9VQkxFX1RBQiArIEdlbmVyYXRvci5UQUIgKyB0eXBlLmdldE5hbWUoKSArICIgIiArIG5vZGVOYW1lICsgIiA9IG51bGw7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwkgICAJCSAgIAotCQkgICBmYnVmZmVyLmFwcGVuZChHZW5lcmF0b3IuRE9VQkxFX1RBQiArICJpZighIiArIGdldFR5cGVPd25lcklkKCkgKyAiLmVxdWFscyhcIlwiKSl7IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotCQkgICBmYnVmZmVyLmFwcGVuZChkYXRhVHlwZS5zdHJpbmdDb252ZXJzaW9uKCIiLG5vZGVOYW1lLGdldFR5cGVPd25lcklkKCkpKTsKLQkJICAgZmJ1ZmZlci5hcHBlbmQoR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAifSIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsJCSAgIAkgICAgICAgCi0JICAgfQotICAgICAgIGVsc2UKLSAgICAJICAgZmJ1ZmZlci5hcHBlbmQoZGF0YVR5cGUuc3RyaW5nQ29udmVyc2lvbih0eXBlLmdldE5hbWUoKSxub2RlTmFtZSxnZXRUeXBlT3duZXJJZCgpKSk7Ci0KLSAgICAgICBwdXRSZXNpZGVudFZlY3Rvcihub2RlTmFtZSk7Ci0gICAgIH0KLQotICAgICBlbHNlIHsKLSAgICAgICAvL211c3QgYmUgY29tcGxleAotICAgICAgIFN0cmluZyB0eXBlTmFtZSA9IHR5cGVFbGVtZW50LmdldE5hbWUoKTsgCi0gICAgICAgZlR5cGVJZE5hbWUgPSBpZE5hbWUodHlwZU5hbWUpOwotICAgICAgICAgICAgICAKLSAgICAgICBpZiAoIUJvb2xlYW4uVFJVRS5lcXVhbHModHlwZUVsZW1lbnQuZ2V0UHJvcGVydHlBc09iamVjdChUeXBlRWxlbWVudC5OT05fSU5TVEFOVElBQkxFKSkpIHsKLSAgICAgICAKLQkgICAgICAgQXR0cmlidXRlVmlzaXRvciBhdHRyaWJ1dGVWaXNpdG9yID0gbmV3IEF0dHJpYnV0ZVZpc2l0b3IoKTsKLQkgICAgICAgUmVzdWx0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvciByZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yID0gbmV3IFJlc3VsdEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IoZmJ1ZmZlcik7Ci0JICAgICAgIHJlc3VsdEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3Iuc2V0TnVtYmVyRmFjdG9yeShnZXROdW1iZXJGYWN0b3J5KCkpOwotCSAgICAgICBhdHRyaWJ1dGVWaXNpdG9yLnJ1bih0eXBlRWxlbWVudCxyZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yKTsKLQkgICAgICAgc2V0TnVtYmVyRmFjdG9yeShyZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yLmdldE51bWJlckZhY3RvcnkoKSk7Ci0JICAgICAgIGZidWZmZXIgPSByZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yLmdldFN0cmluZ0J1ZmZlcigpOwotCQotCSAgICAgICBGaWVsZFZpc2l0b3IgZmllbGRWaXNpdG9yID0gbmV3IEZpZWxkVmlzaXRvcigpOwotCSAgICAgICBSZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yIHJlc3VsdEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IyID0gbmV3IFJlc3VsdEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IoZmJ1ZmZlcik7Ci0JICAgICAgIHJlc3VsdEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IyLnNldE51bWJlckZhY3RvcnkoZ2V0TnVtYmVyRmFjdG9yeSgpKTsKLQkgICAgICAgZmllbGRWaXNpdG9yLnJ1bih0eXBlRWxlbWVudCxyZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yMik7Ci0JICAgICAgIHNldE51bWJlckZhY3RvcnkocmVzdWx0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvcjIuZ2V0TnVtYmVyRmFjdG9yeSgpKTsKLQkgICAgICAgZmJ1ZmZlciA9IHJlc3VsdEZpbGVBdHRyaWJ1dGVHZW5lcmF0b3IyLmdldFN0cmluZ0J1ZmZlcigpOwotCi0gICAgICAKLQkgICAgICAgZmJ1ZmZlci5hcHBlbmQoR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiJT4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0JICAgICAgIGZidWZmZXIuYXBwZW5kKEdlbmVyYXRvci5ET1VCTEVfVEFCICsgIjxqc3A6dXNlQmVhbiBpZD1cIiIgKyBmVHlwZUlkTmFtZSArICJcIiBzY29wZT1cInNlc3Npb25cIiBjbGFzcz1cIiIgKyB0eXBlTmFtZSArICJcIiAvPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLQkgICAgICAgZmJ1ZmZlci5hcHBlbmQoR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyAiPCUiICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0JICAgICAgIAotCSAgICAgICBFbnVtZXJhdGlvbiBlID0gcmVzdWx0RmlsZUF0dHJpYnV0ZUdlbmVyYXRvci5nZXRSZXNpZGVudFZlY3RvcigpLmVsZW1lbnRzKCk7Ci0JICAgICAgIHdoaWxlKGUuaGFzTW9yZUVsZW1lbnRzKCkpewotCSAgICAgICAgICBmYnVmZmVyLmFwcGVuZChHZW5lcmF0b3IuRE9VQkxFX1RBQiArIGZUeXBlSWROYW1lICsgIi4iICsgZS5uZXh0RWxlbWVudCgpICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0JICAgICAgIH0KLQkKLQkgICAgICAgRW51bWVyYXRpb24gZTIgPSByZXN1bHRGaWxlQXR0cmlidXRlR2VuZXJhdG9yMi5nZXRSZXNpZGVudFZlY3RvcigpLmVsZW1lbnRzKCk7Ci0JICAgICAgIHdoaWxlKGUyLmhhc01vcmVFbGVtZW50cygpKXsKLQkgICAgICAgICAgZmJ1ZmZlci5hcHBlbmQoR2VuZXJhdG9yLkRPVUJMRV9UQUIgKyBmVHlwZUlkTmFtZSArICIuIiArIGUyLm5leHRFbGVtZW50KCkgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLQkgICAgICAgfSAKLQkgICB9Ci0gICAgICAgZWxzZQotICAgIAkgICBmYnVmZmVyLmFwcGVuZChHZW5lcmF0b3IuRE9VQkxFX1RBQiArIHR5cGVOYW1lICsgIiAiICsgZlR5cGVJZE5hbWUgKyAiID0gbnVsbDsiKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsgICAgIAotICAgICAgIAotICAgICAgIHB1dFJlc2lkZW50VmVjdG9yKGZUeXBlSWROYW1lKTsKLSAgICAgICAvL2VuZCBvZiBjaGFuZ2VzCi0gICAgIAotICAgIH0KLSAgICAgCi0gICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9ICAgCi0gIAotCi0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9UZXN0Q2xpZW50RmlsZUdlbmVyYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29kZWdlbi9UZXN0Q2xpZW50RmlsZUdlbmVyYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDcxNGJiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvZGVnZW4vVGVzdENsaWVudEZpbGVHZW5lcmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5zYW1wbGVhcHAuY29kZWdlbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5HZW5lcmF0b3I7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBUZXN0Q2xpZW50RmlsZWdlbmVyYXRvci4KLSogKi8KLXB1YmxpYyBjbGFzcyBUZXN0Q2xpZW50RmlsZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcgotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0KLSAgcHVibGljIFN0cmluZyBmTWV0aG9kTmFtZTsKLSAgcHVibGljIFN0cmluZyBmSW5wdXROYW1lOwotICBwdWJsaWMgU3RyaW5nIGZSZXN1bHROYW1lOwotICAKLSAgLyoqCi0gICogQ29uc3RydWN0b3IuCi0gICoKLSAgKi8KLSAgcHVibGljIFRlc3RDbGllbnRGaWxlR2VuZXJhdG9yIChTdHJpbmcgaW5wdXRzLCBTdHJpbmcgbWV0aG9kcywgU3RyaW5nIHJlc3VsdHMpCi0gIHsKLSAgICAgc3VwZXIoKTsKLSAgICAgZklucHV0TmFtZSA9IGlucHV0czsKLSAgICAgZk1ldGhvZE5hbWUgPSBtZXRob2RzOwotICAgICBmUmVzdWx0TmFtZSA9IHJlc3VsdHM7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRGaWxlTmFtZXMoU3RyaW5nIGlucHV0cywgU3RyaW5nIG1ldGhvZHMsIFN0cmluZyByZXN1bHRzKQotICB7Ci0gICAgZklucHV0TmFtZSA9IGlucHV0czsKLSAgICBmTWV0aG9kTmFtZSA9IG1ldGhvZHM7Ci0gICAgZlJlc3VsdE5hbWUgPSByZXN1bHRzOwotICB9Ci0KLSAgLy90YWtlcyBpbiBhIGJlYW4gbm9kZQotICAgcHVibGljIElTdGF0dXMgdmlzaXQgKE9iamVjdCBvYmplY3QpCi0gICB7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPCVAcGFnZSBjb250ZW50VHlwZT1cInRleHQvaHRtbDtjaGFyc2V0PVVURi04XCIlPiIpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxIVE1MPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8SEVBRD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPFRJVExFPldlYiBTZXJ2aWNlcyBUZXN0IENsaWVudDwvVElUTEU+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwvSEVBRD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSArICIiKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8RlJBTUVTRVQgIENPTFM9XCIyMjAsKlwiPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8RlJBTUUgU1JDPVwiIisgZk1ldGhvZE5hbWUgKyAiXCIgTkFNRT1cIm1ldGhvZHNcIiBNQVJHSU5XSURUSD1cIjFcIiBNQVJHSU5IRUlHSFQ9XCIxXCIgU0NST0xMSU5HPVwieWVzXCIgRlJBTUVCT1JERVI9XCIxXCI+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxGUkFNRVNFVCAgUk9XUz1cIjgwJSwyMCVcIj4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPEZSQU1FIFNSQz1cIiIrIGZJbnB1dE5hbWUgICsgIlwiIE5BTUU9XCJpbnB1dHNcIiAgTUFSR0lOV0lEVEg9XCIxXCIgTUFSR0lOSEVJR0hUPVwiMVwiIFNDUk9MTElORz1cInllc1wiIEZSQU1FQk9SREVSPVwiMVwiPiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8JSIpLmFwcGVuZChTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJTdHJpbmdCdWZmZXIgcmVzdWx0SlNQID0gbmV3IFN0cmluZ0J1ZmZlcihcIiIpLmFwcGVuZChmUmVzdWx0TmFtZSkuYXBwZW5kKCJcIik7IikuYXBwZW5kKFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoInJlc3VsdEpTUC5hcHBlbmQoXCI/XCIpOyIpLmFwcGVuZChTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJqYXZhLnV0aWwuRW51bWVyYXRpb24gcmVzdWx0RW51bSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyTmFtZXMoKTsiKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJ3aGlsZSAocmVzdWx0RW51bS5oYXNNb3JlRWxlbWVudHMoKSkgeyIpLmFwcGVuZChTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJPYmplY3QgcmVzdWx0T2JqID0gcmVzdWx0RW51bS5uZXh0RWxlbWVudCgpOyIpLmFwcGVuZChTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCJyZXN1bHRKU1AuYXBwZW5kKHJlc3VsdE9iai50b1N0cmluZygpKS5hcHBlbmQoXCI9XCIpLmFwcGVuZChyZXF1ZXN0LmdldFBhcmFtZXRlcihyZXN1bHRPYmoudG9TdHJpbmcoKSkpLmFwcGVuZChcIiZcIik7IikuYXBwZW5kKFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIn0iKS5hcHBlbmQoU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiJT4iKS5hcHBlbmQoU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPEZSQU1FIFNSQz1cIjwlPXJlc3VsdEpTUC50b1N0cmluZygpJT5cIiBOQU1FPVwicmVzdWx0XCIgIE1BUkdJTldJRFRIPVwiMVwiIE1BUkdJTkhFSUdIVD1cIjFcIiBTQ1JPTExJTkc9XCJ5ZXNcIiBGUkFNRUJPUkRFUj1cIjFcIj4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPC9GUkFNRVNFVD4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0KLQotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjxOT0ZSQU1FUz4iICsgU3RyaW5nVXRpbHMuTkVXTElORSk7Ci0gICAgICBmYnVmZmVyLmFwcGVuZCgiPEJPRFk+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIlRoZSBXZWIgU2VydmljZXMgVGVzdCBDbGllbnQgcmVxdWlyZXMgYSBicm93c2VyIHRoYXQgc3VwcG9ydHMgZnJhbWVzLiIgKyBTdHJpbmdVdGlscy5ORVdMSU5FKTsKLSAgICAgIGZidWZmZXIuYXBwZW5kKCI8L0JPRFk+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwvTk9GUkFNRVM+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwvRlJBTUVTRVQ+IiArIFN0cmluZ1V0aWxzLk5FV0xJTkUpOwotICAgICAgZmJ1ZmZlci5hcHBlbmQoIjwvSFRNTD4iKTsKLQotICAgICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvbW1hbmQvR2VuZXJhdGVQYWdlQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29tbWFuZC9HZW5lcmF0ZVBhZ2VDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZDdmODcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29tbWFuZC9HZW5lcmF0ZVBhZ2VDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb21tYW5kOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb2RlZ2VuLkdlbmVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbW9uLkZpbGVSZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotCi0KLS8qKgotICogTW9mVG9CZWFuTW9kZWxDb21tYW5kCi0gKiBDcmVhdGlvbiBkYXRlOiAoNC8xMC8yMDAxIDEyOjQxOjQ4IFBNKQotICogQGF1dGhvcjogR2lsYmVydCBBbmRyZXdzCi0gKi8KLXB1YmxpYyBjbGFzcyBHZW5lcmF0ZVBhZ2VDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0JCQotcHJpdmF0ZSBNb2RlbCBtb2RlbF87Ci1wcml2YXRlIEdlbmVyYXRvciBmR2VuZXJhdG9yOwotcHJpdmF0ZSBJRmlsZSBmSUZpbGU7Ci1wcml2YXRlIFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHRfOwotcHJpdmF0ZSBTdHJpbmdCdWZmZXIgZlN0cmluZ0J1ZmZlcjsKLQotLyoqCi0gKiBCdWlsZCBjb25zdHJ1Y3RvciBjb21tZW50LgotICovCi1wdWJsaWMgR2VuZXJhdGVQYWdlQ29tbWFuZCgpCi17Ci19Ci0KLS8qKgotKiBDb25zdHJ1Y3RvcgotKiBUaGlzIGNvbW1hbmQgd2lsbCBnZW5lcmF0ZSBjb2RlIGZyb20gYSBNb2RlbAotKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHRvIGJlIHRyYXZlcnNlZAotKiBAcGFyYW0gZ2VuZXJhdG9yIFRoZSBjb2RlIGdlbmVyYXRvciB0byBiZSB1c2VkCi0qIEBwYXJhbSByZXNvdXJjZSB0aGUgcmVzb3VyY2UgdG8gcGxhY2UgdGhlIGZpbmlzaGVkIHByb2R1Y3QKLSovCi1wdWJsaWMgR2VuZXJhdGVQYWdlQ29tbWFuZChSZXNvdXJjZUNvbnRleHQgY29udGV4dCwgTW9kZWwgbW9kZWwsIEdlbmVyYXRvciBnZW5lcmF0b3IsIElGaWxlIGZpbGUpCi17Ci0gIG1vZGVsXyA9IG1vZGVsOwotICBmR2VuZXJhdG9yID0gZ2VuZXJhdG9yOwotICBmSUZpbGUgPSBmaWxlOwotICByZXNvdXJjZUNvbnRleHRfID0gY29udGV4dDsKLX0KLQotcHVibGljIE1vZGVsIGdldEphdmFEYXRhTW9kZWwoKQotewotICByZXR1cm4gbW9kZWxfOwotfQotCi0vKioKLSAqCi0gKi8KLXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotewotICBJRW52aXJvbm1lbnQgZW52ID0gZ2V0RW52aXJvbm1lbnQoKTsKLSAgCi0gIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgdHJ5IHsKLSAgICBmR2VuZXJhdG9yLnZpc2l0KG1vZGVsXy5nZXRSb290RWxlbWVudCgpKTsKLSAgICBmU3RyaW5nQnVmZmVyID0gZkdlbmVyYXRvci5nZXRTdHJpbmdCdWZmZXIoKTsKLSAgICBTdHJpbmcgdGVtcFN0cmluZyA9IGZTdHJpbmdCdWZmZXIudG9TdHJpbmcoKTsKLSAgICBPdXRwdXRTdHJlYW0gZmlsZVJlc291cmNlID0gRmlsZVJlc291cmNlVXRpbHMubmV3RmlsZU91dHB1dFN0cmVhbShyZXNvdXJjZUNvbnRleHRfLCBmSUZpbGUuZ2V0RnVsbFBhdGgoKSwgbW9uaXRvciwgZW52LmdldFN0YXR1c0hhbmRsZXIoKSk7Ci0gICAgLy9QcmludFN0cmVhbSBwcyA9IG5ldyBQcmludFN0cmVhbShmaWxlUmVzb3VyY2UpOwotICAgIC8vcHMucHJpbnQodGVtcFN0cmluZyk7Ci0gICAgT3V0cHV0U3RyZWFtV3JpdGVyIG9zdyA9IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIoZmlsZVJlc291cmNlLCJVVEYtOCIpOwotICAgIG9zdy53cml0ZSh0ZW1wU3RyaW5nLDAsZlN0cmluZ0J1ZmZlci5sZW5ndGgoKSk7ICAKLSAgICBvc3cuY2xvc2UoKTsKLSAgICBmaWxlUmVzb3VyY2UuY2xvc2UoKTsKLSAgICByZXR1cm4gc3RhdHVzOwotICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2V4YykgewotICAJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIGlvZXhjICk7Ci0gIAlyZXR1cm4gc3RhdHVzOwotICB9Ci19Ci0KLXB1YmxpYyB2b2lkIHNldFJvb3RFbGVtZW50KEVsZW1lbnQgcm9vdEVsZW1lbnQpCi17Ci19Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29tbWFuZC9KYXZhVG9Nb2RlbENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvbW1hbmQvSmF2YVRvTW9kZWxDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0MDgxMDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29tbWFuZC9KYXZhVG9Nb2RlbENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb21tYW5kOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLkNvbnN1bXB0aW9uTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvZGVnZW4uamF2YW1vZnZpc2l0b3JhY3Rpb25zLkphdmFNb2ZCZWFuVmlzaXRvckFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29kZWdlbi5qYXZhbW9mdmlzaXRvcnMuSmF2YU1vZkJlYW5WaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5KYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnNlbGVjdGlvbi5Cb29sZWFuU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuQ2hvaWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci0KLS8qKgotKiBUaGlzIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBjb21tYW5kcyB0aGF0IG5lZWQgdG8gcmVwb3J0IHByb2dyZXNzCi0qIGFuZCBzdGF0dXMgZHVyaW5nIGFuZCBhZnRlciB0aGVpciBleGVjdXRpb24uIFRoaXMgY2xhc3MgZXh0ZW5kcwotKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5jb21tYW5kLkFic3RyYWN0Q29tbWFuZCBBYnN0cmFjdENvbW1hbmR9Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSogd2l0aCBtZXRob2RzIHRvIHtAbGluayAjc2V0UHJvZ3Jlc3NNb25pdG9yIHNldH0KLSogYW5kIHtAbGluayAjZ2V0UHJvZ3Jlc3NNb25pdG9yIGdldH0gYSBwcm9ncmVzcyBtb25pdG9yLAotKiBhbmQgdG8gZ2V0IGEgc3RhdHVzIG9iamVjdCB7QGxpbmsgI2dldFJlYWR5U3RhdHVzIGJlZm9yZX0KLSogb3Ige0BsaW5rICNnZXRSZXN1bHRTdGF0dXMgYWZ0ZXJ9IGV4ZWN1dGlvbi4KLSogPHA+Ci0qIE5vdGUgdGhhdCB0aGUgcmVzcG9uc2liaWxpdHkgb2YgcHJvdmlkaW5nIGFuCi0qIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvciBJUHJvZ3Jlc3NNb25pdG9yfQotKiByZXN0cyB3aXRoIGZyYW1ld29ya3MgdGhhdCBjb25zdHJ1Y3Qgb3IgcnVuIFByb2dyZXNzQ29tbWFuZCBvYmplY3RzLAotKiB3aGVyZWFzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBwcm92aWRpbmcgYW4KLSoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzIElTdGF0dXN9Ci0qIG9iamVjdCBsaWVzIHdpdGggdGhlIHN1YmNsYXNzZXMgb2YgUHJvZ3Jlc3NDb21tYW5kLgotKiBTdWJjbGFzc2VzIG11c3QgZm9sbG93IHRoZSBydWxlcyBkZXNjcmliZWQgZm9yCi0qIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLmNvbW1hbmQuQWJzdHJhY3RDb21tYW5kIEFic3RyYWN0Q29tbWFuZH0uCi0qLwotcHVibGljIGNsYXNzIEphdmFUb01vZGVsQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50UHJvamVjdDsKLSAgcHJpdmF0ZSBCb29sZWFuU2VsZWN0aW9uW10gbWV0aG9kczsKLSAgcHJpdmF0ZSBTdHJpbmcgcHJveHlCZWFuOwotICBwcml2YXRlIEphdmFDbGFzcyBqYXZhQ2xhc3M7Ci0gIHByaXZhdGUgTW9kZWwgbW9kZWw7Ci0gIHByaXZhdGUgRWxlbWVudCBwYXJlbnRFbGVtZW50OwotICAKLSAgcHVibGljIEphdmFUb01vZGVsQ29tbWFuZCAoKQotICB7Ci0gIH0KLQotICAKLSAgcHJpdmF0ZSBJU3RhdHVzIGNyZWF0ZUphdmFSZWZsZWN0aW9uKElFbnZpcm9ubWVudCBlbnYsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0gIHsKLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICBKYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQgamF2YU1vZlJlZmxlY3Rpb25Db21tYW5kID0gbmV3IEphdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZCgpOwotICAgIGphdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZC5zZXRDbGllbnRQcm9qZWN0KGNsaWVudFByb2plY3QpOwotICAgIGphdmFNb2ZSZWZsZWN0aW9uQ29tbWFuZC5zZXRQcm94eUJlYW4ocHJveHlCZWFuKTsKLSAgICBqYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQuc2V0RW52aXJvbm1lbnQoIGVudiApOwotICAgIC8vamF2YU1vZlJlZmxlY3Rpb25Db21tYW5kLnNldFN0YXR1c01vbml0b3IoZ2V0U3RhdHVzTW9uaXRvcigpKTsKLSAgICBzdGF0dXMgPSBqYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQuZXhlY3V0ZSggbW9uaXRvciwgbnVsbCk7Ci0gICAgamF2YUNsYXNzID0gKEphdmFDbGFzcylqYXZhTW9mUmVmbGVjdGlvbkNvbW1hbmQuZ2V0SmF2YUNsYXNzKCk7Ci0gICAgcmV0dXJuIHN0YXR1czsKLSAgfQotCi0gIC8qKgotICAqIFRoZSBNb2RlbCB0aGF0IHdhcyBjcmVhdGVkIGZyb20gdGhpcyBqYXZhbW9mCi0gICogQHJldHVybiBNb2RlbCBUaGUgZGF0YSBtb2RlbCB0aGF0IHdhcyBjcmVhdGVkCi0gICoqLwotICBwdWJsaWMgTW9kZWwgZ2V0SmF2YURhdGFNb2RlbCgpCi0gIHsKLSAgICByZXR1cm4gbW9kZWw7Ci0gIH0KLQotICAvKioKLSAgKiBCdWlsZCB0aGUgZGF0YW1vZGVsIGZyb20gdGhlIG1vZgotICAqLwotICBwdWJsaWMgSVN0YXR1cyBidWlsZE1vZGVsRnJvbU1vZiAoSUVudmlyb25tZW50IGVudikgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAJCi0gIAlDaG9pY2UgT0tDaG9pY2UgPSBuZXcgQ2hvaWNlKCdPJywgQ29uc3VtcHRpb25NZXNzYWdlcy5MQUJFTF9PSywgQ29uc3VtcHRpb25NZXNzYWdlcy5ERVNDUklQVElPTl9PSyk7Ci0gIAlDaG9pY2UgQ2FuY2VsQ2hvaWNlID0gbmV3IENob2ljZSgnQycsIENvbnN1bXB0aW9uTWVzc2FnZXMuTEFCRUxfQ0FOQ0VMLCBDb25zdW1wdGlvbk1lc3NhZ2VzLkRFU0NSSVBUSU9OX0NBTkNFTCk7Ci0gIAkKLSAgICAvLyB3ZSBjb3VsZCBoYXZlIG9uZSBvZiB0aHJlZSBjYXNlczoKLSAgICAvLzEuIFRoZSBtb2RlbCBpcyBudWxsIG1lYW5pbmcgd2Ugd2FudCBhbmQgdGhlIHBhcmVudCBlbGVtZW50IGlzIG51bGwsIG1lYW5pbmcgd2Ugd2FudCB0bwotICAgIC8vICAgY3JlYXRlIGEgYnJhbmQgbmV3IG1vZGVsIGFuZCBtYWtlIHRoaXMgYmVhbiBpdHMgcm9vdAotICAgIC8vMi4gVGhlIG1vZGVsIGlzIG51bGwgYnV0IHRoZSBwYXJlbnRFbGVtZW50IGlzIG5vdCwgbWVhbmluZyB3ZSB3YW50IHRvIGFkZCB0aGUgQmVhbiB0byB0aGUKLSAgICAvLyAgIGdpdmVuIHBhcmVudCBlbGVtZW50Ci0gICAgLy8zLiBUaGUgbW9kZWwgaXMgbm90IG51bGwgaG93ZXZlciB0aGUgcGFyZW50RWxlbWVudCBpcywgbWVhbmluZyB3ZSB3YW50IHRvIGFkZCB0aGlzIEJlYW4gdG8KLSAgICAvLyAgIFRoaXMgbW9kZWwgYnV0IGRvbnQgYXR0YWNoIGl0IHRvIGFueXRoaW5nCi0gICAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0KLSAgICAgIGlmKG1vZGVsID09IG51bGwgJiYgcGFyZW50RWxlbWVudCA9PSBudWxsKXsKLSAgICAgICAgIEphdmFNb2ZCZWFuVmlzaXRvckFjdGlvbiBiZWFuVmlzaXRvckFjdGlvbiA9IG5ldyBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24oY2xpZW50UHJvamVjdCxtZXRob2RzLCBlbnYpOwotICAgICAgICAgLy9iZWFuVmlzaXRvckFjdGlvbi5zZXRTdGF0dXNNb25pdG9yKGdldFN0YXR1c01vbml0b3IoKSk7Ci0JICAgICBKYXZhTW9mQmVhblZpc2l0b3IgYmVhblZpc2l0b3IgPSBuZXcgSmF2YU1vZkJlYW5WaXNpdG9yKCk7Ci0gICAgICAgICBzdGF0dXMgPSBiZWFuVmlzaXRvci5ydW4oamF2YUNsYXNzLGJlYW5WaXNpdG9yQWN0aW9uKTsKLSAgICAgICAgIC8vCi0gICAgICAgICBpbnQgc2V2ZXJpdHkgPSBzdGF0dXMuZ2V0U2V2ZXJpdHkoKTsgCi0gICAgICAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5FUlJPUikKLSAgICAgICAgIAlyZXR1cm4gc3RhdHVzOwotICAgICAgICAgCi0gICAgICAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5XQVJOSU5HKQotICAgICAgICAgewotICAgICAgICAgICBDaG9pY2UgcmVzdWx0ID0gZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzLCBuZXcgQ2hvaWNlW117T0tDaG9pY2UsIENhbmNlbENob2ljZX0pOwotICAgICAgICAgICBpZiAocmVzdWx0LmdldExhYmVsKCkuZXF1YWxzKENhbmNlbENob2ljZS5nZXRMYWJlbCgpKSkKLSAgICAgICAgICAgewotICAgICAgICAgICAJIC8vcmV0dXJuIGFuIGVycm9yIHN0YXR1cyBzaW5jZSB0aGUgdXNlciBjYW5jZWxlZAotICAgICAgICAgICAJICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1NBTVBMRV9DUkVBVElPTl9DQU5DRUxFRCApOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIAkKLSAgICAgICAgIH0KLSAgICAgICAgIC8vCi0gICAgICAgICBtb2RlbCA9IGJlYW5WaXNpdG9yQWN0aW9uLmdldE1vZGVsKCk7Ci0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKG1vZGVsID09IG51bGwgJiYgcGFyZW50RWxlbWVudCAhPSBudWxsKXsKLSAgICAgICAgIEphdmFNb2ZCZWFuVmlzaXRvckFjdGlvbiBiZWFuVmlzaXRvckFjdGlvbiA9IG5ldyBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24ocGFyZW50RWxlbWVudCxjbGllbnRQcm9qZWN0LCBlbnYpOwotICAgICAgICAgLy9iZWFuVmlzaXRvckFjdGlvbi5zZXRTdGF0dXNNb25pdG9yKGdldFN0YXR1c01vbml0b3IoKSk7Ci0JICAgICBKYXZhTW9mQmVhblZpc2l0b3IgYmVhblZpc2l0b3IgPSBuZXcgSmF2YU1vZkJlYW5WaXNpdG9yKCk7Ci0gICAgICAgICBzdGF0dXMgPSBiZWFuVmlzaXRvci5ydW4oamF2YUNsYXNzLGJlYW5WaXNpdG9yQWN0aW9uKTsKLSAgICAgICAgIC8vCi0gICAgICAgICBpbnQgc2V2ZXJpdHkgPSBzdGF0dXMuZ2V0U2V2ZXJpdHkoKTsgCi0gICAgICAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5FUlJPUikKLSAgICAgICAgIAlyZXR1cm4gc3RhdHVzOwotICAgICAgICAgCi0gICAgICAgICBpZiAoc2V2ZXJpdHk9PVN0YXR1cy5XQVJOSU5HKQotICAgICAgICAgewotICAgICAgICAgICBDaG9pY2UgcmVzdWx0ID0gZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQoc3RhdHVzLCBuZXcgQ2hvaWNlW117T0tDaG9pY2UsIENhbmNlbENob2ljZX0pOwotICAgICAgICAgICBpZiAocmVzdWx0LmdldExhYmVsKCkuZXF1YWxzKENhbmNlbENob2ljZS5nZXRMYWJlbCgpKSkKLSAgICAgICAgICAgewotICAgICAgICAgICAJIC8vcmV0dXJuIGFuIGVycm9yIHN0YXR1cyBzaW5jZSB0aGUgdXNlciBjYW5jZWxlZAotICAgICAgICAgICAJICByZXR1cm4gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIENvbnN1bXB0aW9uTWVzc2FnZXMuTVNHX0VSUk9SX1NBTVBMRV9DUkVBVElPTl9DQU5DRUxFRCApOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIAkKLSAgICAgICAgIH0KLSAgICAgICAgIC8vICAgICAgICAgCi0gICAgICAgICBtb2RlbCA9IGJlYW5WaXNpdG9yQWN0aW9uLmdldE1vZGVsKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgIEphdmFNb2ZCZWFuVmlzaXRvckFjdGlvbiBiZWFuVmlzaXRvckFjdGlvbiA9IG5ldyBKYXZhTW9mQmVhblZpc2l0b3JBY3Rpb24obW9kZWwsY2xpZW50UHJvamVjdCwgZW52KTsKLSAgICAgICAgIC8vYmVhblZpc2l0b3JBY3Rpb24uc2V0U3RhdHVzTW9uaXRvcihnZXRTdGF0dXNNb25pdG9yKCkpOwotCSAgICAgSmF2YU1vZkJlYW5WaXNpdG9yIGJlYW5WaXNpdG9yID0gbmV3IEphdmFNb2ZCZWFuVmlzaXRvcigpOwotICAgICAgICAgc3RhdHVzID0gYmVhblZpc2l0b3IucnVuKGphdmFDbGFzcyxiZWFuVmlzaXRvckFjdGlvbik7Ci0gICAgICAgICAvLwotICAgICAgICAgaW50IHNldmVyaXR5ID0gc3RhdHVzLmdldFNldmVyaXR5KCk7IAotICAgICAgICAgaWYgKHNldmVyaXR5PT1TdGF0dXMuRVJST1IpCi0gICAgICAgICAJcmV0dXJuIHN0YXR1czsKLSAgICAgICAgIAotICAgICAgICAgaWYgKHNldmVyaXR5PT1TdGF0dXMuV0FSTklORykKLSAgICAgICAgIHsKLSAgICAgICAgICAgQ2hvaWNlIHJlc3VsdCA9IGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0KHN0YXR1cywgbmV3IENob2ljZVtde09LQ2hvaWNlLCBDYW5jZWxDaG9pY2V9KTsKLSAgICAgICAgICAgaWYgKHJlc3VsdC5nZXRMYWJlbCgpLmVxdWFscyhDYW5jZWxDaG9pY2UuZ2V0TGFiZWwoKSkpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgCSAvL3JldHVybiBhbiBlcnJvciBzdGF0dXMgc2luY2UgdGhlIHVzZXIgY2FuY2VsZWQKLSAgICAgICAgICAgCSAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvbk1lc3NhZ2VzLk1TR19FUlJPUl9TQU1QTEVfQ1JFQVRJT05fQ0FOQ0VMRUQgKTsKLSAgICAgICAgICAgfQotICAgICAgICAgICAJCi0gICAgICAgICB9Ci0gICAgICAgICAvLyAgICAgICAgIAotICAgICAgICAgbW9kZWwgPSBiZWFuVmlzaXRvckFjdGlvbi5nZXRNb2RlbCgpOwotICAgICAgfQotCi0gICAgICByZXR1cm4gc3RhdHVzOwotICB9Ci0KLSAgLyoqCi0gICogR2V0IHRoZSBqYXZhIG1vZGVsIGZyb20gdGhlIHJlc291cmNlIHRoZW4KLSAgKiBidWlsZCB0aGUgbW9kZWwgZnJvbSB0aGUgbW9mCi0gICovCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7ICAgIAotICAgIElFbnZpcm9ubWVudCBlbnYgPSBnZXRFbnZpcm9ubWVudCgpOwotICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIGlmKGNsaWVudFByb2plY3QgPT0gbnVsbCkgcmV0dXJuIHN0YXR1czsKLSAgICAKLSAgCXN0YXR1cyA9IGNyZWF0ZUphdmFSZWZsZWN0aW9uKGVudiwgbW9uaXRvcik7Ci0gICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpPT1TdGF0dXMuRVJST1IpIHJldHVybiBzdGF0dXM7Ci0gICAgdHJ5ewotICAgICAgc3RhdHVzID0gYnVpbGRNb2RlbEZyb21Nb2YoZW52KTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfWNhdGNoKENvcmVFeGNlcHRpb24gZXhjKXsKLSAgICAgIElTdGF0dXMgZW1iZWRkZWRTdGF0dXMgPSBleGMuZ2V0U3RhdHVzKCk7Ci0gICAgICBzdGF0dXMgPSBlbWJlZGRlZFN0YXR1czsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotCi0gIH0KLSAgICAKLSAgcHVibGljIHZvaWQgc2V0TWV0aG9kcyhCb29sZWFuU2VsZWN0aW9uW10gbWV0aG9kcykKLSAgewotICAJdGhpcy5tZXRob2RzID0gIG1ldGhvZHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFByb2plY3QoU3RyaW5nIGNsaWVudFByb2plY3QpCi0gIHsKLSAgCXRoaXMuY2xpZW50UHJvamVjdCA9IGNsaWVudFByb2plY3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFBhcmVudEVsZW1lbnQoRWxlbWVudCBwYXJlbnRFbGVtZW50KQotICB7Ci0gIAl0aGlzLnBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50OwotICB9Ci0gICAgIAotICBwdWJsaWMgdm9pZCBzZXRQcm94eUJlYW4oU3RyaW5nIHByb3h5QmVhbikKLSAgewotICAJdGhpcy5wcm94eUJlYW4gPSBwcm94eUJlYW47Ci0gIH0KLQotIH0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29tbW9uL1NhbXBsZVByb3BlcnR5RGVzY3JpcHRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi9zYW1wbGVhcHAvY29tbW9uL1NhbXBsZVByb3BlcnR5RGVzY3JpcHRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGY0YjAxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vc2FtcGxlYXBwL2NvbW1vbi9TYW1wbGVQcm9wZXJ0eURlc2NyaXB0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnNhbXBsZWFwcC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhSGVscGVyczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5NZXRob2Q7Ci0KLQotLyoqCi0qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgYSBQcm9wZXJ0eURlc2NyaXB0b3IuCi0qICovCi1wdWJsaWMgY2xhc3MgU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yIAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0KLSAgcHJpdmF0ZSBNZXRob2QgZlJlYWRNZXRob2Q7Ci0gIHByaXZhdGUgTWV0aG9kIGZXcml0ZU1ldGhvZDsKLSAgcHJpdmF0ZSBTdHJpbmcgZlByb3BlcnR5TmFtZTsKLSAgcHJpdmF0ZSBKYXZhSGVscGVycyBmUHJvcGVydHlUeXBlOyAKLSAgcHJpdmF0ZSBib29sZWFuIGZTdGF0aWM7Ci0gIAotICAvKgotICAqIENvbnN0cnVjdG9yCi0gICoqLwotICBwdWJsaWMgU2FtcGxlUHJvcGVydHlEZXNjcmlwdG9yKFN0cmluZyBuYW1lKQotICB7Ci0gICAgZlByb3BlcnR5TmFtZSA9IG5hbWU7IAotICB9Ci0KLSAgLyoKLSAgKiBzZXQgdGhlIFJlYWRNZXRob2QKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0UmVhZE1ldGhvZChNZXRob2QgcmVhZE1ldGhvZCkKLSAgewotICAgIGZSZWFkTWV0aG9kID0gcmVhZE1ldGhvZDsKLSAgfQotCi0gICAvKgotICAqIGdldCB0aGUgUmVhZE1ldGhvZCAKLSAgKi8KLSAgcHVibGljIE1ldGhvZCBnZXRSZWFkTWV0aG9kKCkKLSAgewotICAgIHJldHVybiBmUmVhZE1ldGhvZDsKLSAgfQotCi0gIC8qCi0gICogc2V0IHRoZSB3cml0ZU1ldGhvZAotICAqLwotICBwdWJsaWMgdm9pZCBzZXRXcml0ZU1ldGhvZChNZXRob2Qgd3JpdGVNZXRob2QpCi0gIHsKLSAgICBmV3JpdGVNZXRob2QgPSB3cml0ZU1ldGhvZDsKLSAgfQotCi0gICAvKgotICAqIGdldCB0aGUgd3JpdGVNZXRob2QgCi0gICovCi0gIHB1YmxpYyBNZXRob2QgZ2V0V3JpdGVNZXRob2QoKQotICB7Ci0gICAgcmV0dXJuIGZXcml0ZU1ldGhvZDsKLSAgfQotCi0gIC8qCi0gICogc2V0IHRoZSBwcm9wZXJ0eU5hbWUKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIGZQcm9wZXJ0eU5hbWU9IG5hbWU7Ci0gIH0KLQotICAgLyoKLSAgKiBnZXQgdGhlIHByb3BlcnR5TmFtZQotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGZQcm9wZXJ0eU5hbWU7Ci0gIH0KLQotICAvKgotICAqIHNldCB0aGUgUHJvcGVydHlUeXBlCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFByb3BlcnR5VHlwZShKYXZhSGVscGVycyBwcm9wZXJ0eVR5cGUpCi0gIHsKLSAgICBmUHJvcGVydHlUeXBlID0gcHJvcGVydHlUeXBlOwotICB9Ci0KLSAgIC8qCi0gICogZ2V0IHRoZSBQcm9wZXJ0eVR5cGUgCi0gICovCi0gIHB1YmxpYyBKYXZhSGVscGVycyBnZXRQcm9wZXJ0eVR5cGUoKQotICB7Ci0gICAgcmV0dXJuIGZQcm9wZXJ0eVR5cGU7Ci0gIH0KLSAgICAgIAotICBwdWJsaWMgYm9vbGVhbiBpc2ZTdGF0aWMoKQotICB7Ci0gIAlyZXR1cm4gZlN0YXRpYzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldGZTdGF0aWMoYm9vbGVhbiBmU3RhdGljKQotICB7Ci0gICAgdGhpcy5mU3RhdGljID0gZlN0YXRpYzsJCi0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vd3NmaW5kZXIvSVdTRmluZGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3dzZmluZGVyL0lXU0ZpbmRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWE3ZmY1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vd3NmaW5kZXIvSVdTRmluZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLndzZmluZGVyOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVdTRmluZGVyCi17Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0SUQoKTsKLSAgcHVibGljIHZvaWQgc2V0SUQoU3RyaW5nIGlkKTsKLQotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKTsKLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSk7Ci0KLSAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbigpOwotICBwdWJsaWMgdm9pZCBzZXREZXNjcmlwdGlvbihTdHJpbmcgZGVzYyk7Ci0KLSAgcHVibGljIExpc3QgZmluZCgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi93c2ZpbmRlci9MaXZlV1NETEZpbHRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25zdW1wdGlvbi93c2ZpbmRlci9MaXZlV1NETEZpbHRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTYxNGJiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vd3NmaW5kZXIvTGl2ZVdTRExGaWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi53c2ZpbmRlcjsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3M7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuV2ViU2VydmljZXNQYXJzZXJFeHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgTGl2ZVdTRExGaWx0ZXIgZXh0ZW5kcyBUaHJlYWQKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgd3NkbFVSTF87Ci0gIHByaXZhdGUgYm9vbGVhbiBmaW5pc2hfOwotICBwcml2YXRlIGJvb2xlYW4gbGl2ZV87Ci0KLSAgcHVibGljIExpdmVXU0RMRmlsdGVyKFN0cmluZyB3c2RsVVJMKQotICB7Ci0gICAgd3NkbFVSTF8gPSB3c2RsVVJMOwotICAgIGZpbmlzaF8gPSBmYWxzZTsKLSAgICBsaXZlXyA9IGZhbHNlOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXU0RMVVJMKCkKLSAgewotICAgIHJldHVybiB3c2RsVVJMXzsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzRmluaXNoKCkKLSAgewotICAgIHJldHVybiBmaW5pc2hfOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNXU0RMTGl2ZSgpCi0gIHsKLSAgICByZXR1cm4gbGl2ZV87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBydW4oKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgbGl2ZV8gPSB2YWxpZGF0ZVdTREwoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgIHsKLSAgICAgIGxpdmVfID0gZmFsc2U7Ci0gICAgfQotICAgIGZpbmFsbHkKLSAgICB7Ci0gICAgICBmaW5pc2hfID0gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gdmFsaWRhdGVXU0RMKCkgdGhyb3dzIFdTRExFeGNlcHRpb24sIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uCi0gIHsKLSAgCVdlYlNlcnZpY2VzUGFyc2VyRXh0IHBhcnNlciA9IG5ldyBXZWJTZXJ2aWNlc1BhcnNlckV4dCgpOwotICAJRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gcGFyc2VyLmdldFdTRExEZWZpbml0aW9uVmVyYm9zZSh3c2RsVVJMXyk7Ci0gICAgTWFwIHNlcnZpY2VzID0gZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpOwotICAgIEl0ZXJhdG9yIHNlcnZpY2VJdGVyYXRvciA9IHNlcnZpY2VzLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKHNlcnZpY2VJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2Upc2VydmljZUl0ZXJhdG9yLm5leHQoKTsKLSAgICAgIE1hcCBwb3J0cyA9IHNlcnZpY2UuZ2V0UG9ydHMoKTsKLSAgICAgIEl0ZXJhdG9yIHBvcnRJdGVyYXRvciA9IHBvcnRzLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAocG9ydEl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgUG9ydCBwb3J0ID0gKFBvcnQpcG9ydEl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgTGlzdCBleHRlbnNpYmlsaXR5RWxlbWVudHMgPSBwb3J0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICBJdGVyYXRvciBleHRlbnNpYmlsaXR5RWxlbWVudHNJdGVyYXRvciA9IGV4dGVuc2liaWxpdHlFbGVtZW50cy5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoZXh0ZW5zaWJpbGl0eUVsZW1lbnRzSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZXh0ZW5zaWJpbGl0eUVsZW1lbnRzSXRlcmF0b3IubmV4dCgpOwotICAgICAgICAgIGlmICgoZXh0ZW5zaWJpbGl0eUVsZW1lbnQgaW5zdGFuY2VvZiBTT0FQQWRkcmVzcykgfHwgKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgSFRUUEFkZHJlc3MpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnN1bXB0aW9uL3dzZmluZGVyL1dTRmluZGVyUmVnaXN0cnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vd3NmaW5kZXIvV1NGaW5kZXJSZWdpc3RyeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmJmMjdhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uc3VtcHRpb24vd3NmaW5kZXIvV1NGaW5kZXJSZWdpc3RyeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLndzZmluZGVyOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLQotcHVibGljIGNsYXNzIFdTRmluZGVyUmVnaXN0cnkKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgV1NGaW5kZXJSZWdpc3RyeSBpbnN0YW5jZV87Ci0gIHByaXZhdGUgVmVjdG9yIHdzZmluZGVyc187Ci0KLSAgcHJpdmF0ZSBXU0ZpbmRlclJlZ2lzdHJ5KCkKLSAgewotICAgIHdzZmluZGVyc18gPSBuZXcgVmVjdG9yKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAqIFJldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KLSAgKiBAcmV0dXJuIEEgc2luZ2xldG9uIFdTRmluZGVyUmVnaXN0cnkgb2JqZWN0LgotICAqLwotICBwdWJsaWMgc3RhdGljIFdTRmluZGVyUmVnaXN0cnkgZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgaWYgKGluc3RhbmNlXyA9PSBudWxsKQotICAgIHsKLSAgICAgIGluc3RhbmNlXyA9IG5ldyBXU0ZpbmRlclJlZ2lzdHJ5KCk7Ci0gICAgICBpbnN0YW5jZV8uaW5pdCgpOwotICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2VfOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgaW5pdCgpCi0gIHsKLSAgICBJRXh0ZW5zaW9uUmVnaXN0cnkgcGx1Z2luUmVnID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBjb25maWdFbGVtZW50cyA9IHBsdWdpblJlZy5nZXRDb25maWd1cmF0aW9uRWxlbWVudHNGb3IoIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbiIsICJ3c2ZpbmRlciIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uZmlnRWxlbWVudHMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIE9iamVjdCBvYmplY3QgPSBjb25maWdFbGVtZW50c1tpXS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOwotICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgSVdTRmluZGVyKQotICAgICAgICB7Ci0gICAgICAgICAgSVdTRmluZGVyIHdzZmluZGVyID0gKElXU0ZpbmRlcilvYmplY3Q7Ci0gICAgICAgICAgd3NmaW5kZXIuc2V0SUQoY29uZmlnRWxlbWVudHNbaV0uZ2V0QXR0cmlidXRlKCJpZCIpKTsKLSAgICAgICAgICB3c2ZpbmRlci5zZXROYW1lKGNvbmZpZ0VsZW1lbnRzW2ldLmdldEF0dHJpYnV0ZSgibmFtZSIpKTsKLSAgICAgICAgICB3c2ZpbmRlci5zZXREZXNjcmlwdGlvbihjb25maWdFbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoImRlc2NyaXB0aW9uIikpOwotICAgICAgICAgIHdzZmluZGVyc18uYWRkKHdzZmluZGVyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIExpc3QgZ2V0V1NGaW5kZXJzKCkKLSAgewotICAgIHJldHVybiB3c2ZpbmRlcnNfOwotICB9Ci0gIAotICBwdWJsaWMgTGlzdCBnZXRXZWJTZXJ2aWNlcygpCi0gIHsKLSAgICBMaXN0IHdzID0gbmV3IFZlY3RvcigpOwotICAgIExpc3Qgd3NGaW5kZXJzID0gZ2V0V1NGaW5kZXJzKCk7Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IHdzRmluZGVycy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIElXU0ZpbmRlciB3c0ZpbmRlciA9IChJV1NGaW5kZXIpaXQubmV4dCgpOwotICAgICAgd3MuYWRkQWxsKHdzRmluZGVyLmZpbmQoKSk7Ci0gICAgfQotICAgIHJldHVybiB3czsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vd2Vic2VydmljZXV0aWxzL29yZy9lY2xpcHNlL2pzdC93cy91dGlsL0RvbUVsZW1lbnRIZWxwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3dlYnNlcnZpY2V1dGlscy9vcmcvZWNsaXBzZS9qc3Qvd3MvdXRpbC9Eb21FbGVtZW50SGVscGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZWEyYmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vd2Vic2VydmljZXV0aWxzL29yZy9lY2xpcHNlL2pzdC93cy91dGlsL0RvbUVsZW1lbnRIZWxwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudXRpbDsKLQotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotCi0vKioKLSAqIEBhdXRob3IgZ2lsYmVydGEKLSAqCi0gKiBUbyBjaGFuZ2UgdGhlIHRlbXBsYXRlIGZvciB0aGlzIGdlbmVyYXRlZCB0eXBlIGNvbW1lbnQgZ28gdG8KLSAqIFdpbmRvdyZndDtQcmVmZXJlbmNlcyZndDtKYXZhJmd0O0NvZGUgR2VuZXJhdGlvbiZndDtDb2RlIGFuZCBDb21tZW50cwotICovCi1wdWJsaWMgY2xhc3MgRG9tRWxlbWVudEhlbHBlciB7Ci0KLQotICBwdWJsaWMgc3RhdGljIG9yZy53M2MuZG9tLkVsZW1lbnQgY3JlYXRlRG9tRWxlbWVudEZyb21YTUxTdHJpbmcoamF2YS5sYW5nLlN0cmluZyB4bWxTdHJpbmcgKQotICB7Ci0gICAgamF2YS5pby5TdHJpbmdSZWFkZXIgc3RyaW5nUmVhZGVyID0gbmV3IGphdmEuaW8uU3RyaW5nUmVhZGVyKHhtbFN0cmluZyk7IAotICAgIG9yZy54bWwuc2F4LklucHV0U291cmNlIGlucHV0U291cmNlID0gbmV3IG9yZy54bWwuc2F4LklucHV0U291cmNlKHN0cmluZ1JlYWRlcik7IAotICAgIHRyeQotICAgIHsKLSAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZG9jQnVpbGRlckZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7Ci0gICAgICBEb2N1bWVudEJ1aWxkZXIgZG9jQnVpbGRlciA9IGRvY0J1aWxkZXJGYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOwotICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBkb2NCdWlsZGVyLnBhcnNlKGlucHV0U291cmNlKTsKLSAgICAgIHJldHVybiBkb2N1bWVudC5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgamF2YS5sYW5nLlN0cmluZyBkb21Xcml0ZXIob3JnLnczYy5kb20uTm9kZSBub2RlLGphdmEubGFuZy5TdHJpbmdCdWZmZXIgYnVmZmVyKQotICB7Ci0gICAgaWYgKCBub2RlID09IG51bGwgKSB7Ci0gICAgICByZXR1cm4gIiI7Ci0gICAgfQotCWludCB0eXBlID0gbm9kZS5nZXROb2RlVHlwZSgpOwotCXN3aXRjaCAoIHR5cGUgKSB7Ci0JICBjYXNlIG9yZy53M2MuZG9tLk5vZGUuRE9DVU1FTlRfTk9ERTogewotCSAgYnVmZmVyLmFwcGVuZChKc3BVdGlscy5tYXJrdXAoIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PiIpICsgIjxicj4iKTsKLQkgIGRvbVdyaXRlcigoKG9yZy53M2MuZG9tLkRvY3VtZW50KW5vZGUpLmdldERvY3VtZW50RWxlbWVudCgpLGJ1ZmZlcik7Ci0JICBicmVhazsKLQl9Ci0JICBjYXNlIG9yZy53M2MuZG9tLk5vZGUuRUxFTUVOVF9OT0RFOiB7Ci0JICBidWZmZXIuYXBwZW5kKEpzcFV0aWxzLm1hcmt1cCgiPCIgKyBub2RlLmdldE5vZGVOYW1lKCkpKTsKLQkgIG9yZy53M2MuZG9tLkF0dHIgYXR0cnNbXSA9IHNvcnRBdHRyaWJ1dGVzKG5vZGUuZ2V0QXR0cmlidXRlcygpKTsKLQkgIGZvciAoIGludCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrICkgewotCSAgICBvcmcudzNjLmRvbS5BdHRyIGF0dHIgPSBhdHRyc1tpXTsKLQkgICAgYnVmZmVyLmFwcGVuZCgiICIgKyBhdHRyLmdldE5vZGVOYW1lKCkgKyAiPVwiIiArIEpzcFV0aWxzLm1hcmt1cChhdHRyLmdldE5vZGVWYWx1ZSgpKSArICJcIiIpOwotCSAgfQotCSAgICBidWZmZXIuYXBwZW5kKEpzcFV0aWxzLm1hcmt1cCgiPiIpKTsKLQkgICAgb3JnLnczYy5kb20uTm9kZUxpc3QgY2hpbGRyZW4gPSBub2RlLmdldENoaWxkTm9kZXMoKTsKLQkgICAgaWYgKCBjaGlsZHJlbiAhPSBudWxsICkgewotCSAgICAgIGludCBsZW4gPSBjaGlsZHJlbi5nZXRMZW5ndGgoKTsKLQkJICBmb3IgKCBpbnQgaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKLQkJICAgIGlmKCgob3JnLnczYy5kb20uTm9kZSljaGlsZHJlbi5pdGVtKGkpKS5nZXROb2RlVHlwZSgpID09IG9yZy53M2MuZG9tLk5vZGUuRUxFTUVOVF9OT0RFKQotCQkJICBidWZmZXIuYXBwZW5kKCI8YnI+Iik7Ci0JCQlkb21Xcml0ZXIoY2hpbGRyZW4uaXRlbShpKSxidWZmZXIpOwotCQkgIH0KLQkJfQotCQlidWZmZXIuYXBwZW5kKEpzcFV0aWxzLm1hcmt1cCgiPC8iICsgbm9kZS5nZXROb2RlTmFtZSgpICsgIj4iKSk7Ci0JCWJyZWFrOwotICAgICAgfQotCSAgY2FzZSBvcmcudzNjLmRvbS5Ob2RlLkVOVElUWV9SRUZFUkVOQ0VfTk9ERTogewotCSAgICBvcmcudzNjLmRvbS5Ob2RlTGlzdCBjaGlsZHJlbiA9IG5vZGUuZ2V0Q2hpbGROb2RlcygpOwotCSAgICBpZiAoIGNoaWxkcmVuICE9IG51bGwgKSB7Ci0JCSAgaW50IGxlbiA9IGNoaWxkcmVuLmdldExlbmd0aCgpOwotCQkgIGZvciAoIGludCBpID0gMDsgaSA8IGxlbjsgaSsrICkKLQkgICAgICB7Ci0JCSAgICBidWZmZXIuYXBwZW5kKGNoaWxkcmVuLml0ZW0oaSkpOwotCQkgIH0KLQkJfQotCQlicmVhazsKLQkgIH0KLQkgIGNhc2Ugb3JnLnczYy5kb20uTm9kZS5DREFUQV9TRUNUSU9OX05PREU6IHsKLQkgICAgYnVmZmVyLmFwcGVuZChKc3BVdGlscy5tYXJrdXAobm9kZS5nZXROb2RlVmFsdWUoKSkpOwotCSAgICBicmVhazsKLSAgICAgIH0KLQkgIGNhc2Ugb3JnLnczYy5kb20uTm9kZS5URVhUX05PREU6ewotCSAgICBidWZmZXIuYXBwZW5kKEpzcFV0aWxzLm1hcmt1cChub2RlLmdldE5vZGVWYWx1ZSgpKSk7Ci0JICAgIGJyZWFrOwotCSAgfQotCSAgY2FzZSBvcmcudzNjLmRvbS5Ob2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTp7Ci0JCWJ1ZmZlci5hcHBlbmQoSnNwVXRpbHMubWFya3VwKCI8PyIpKTsKLQkJYnVmZmVyLmFwcGVuZChub2RlLmdldE5vZGVOYW1lKCkpOwotCQlTdHJpbmcgZGF0YSA9IG5vZGUuZ2V0Tm9kZVZhbHVlKCk7Ci0JCWlmICggZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoKCkgPiAwICl7Ci0JICAgICAgYnVmZmVyLmFwcGVuZCgiICIpOwotCQkgIGJ1ZmZlci5hcHBlbmQoZGF0YSk7Ci0JCX0KLQkJYnVmZmVyLmFwcGVuZChKc3BVdGlscy5tYXJrdXAoIj8+IikpOwotCQkgIGJyZWFrOwotCQl9Ci0JICB9Ci0JICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7Ci0gICAgfQotIAotCXB1YmxpYyBzdGF0aWMgb3JnLnczYy5kb20uQXR0cltdIHNvcnRBdHRyaWJ1dGVzKG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcCBhdHRycykKLQl7Ci0JICBpbnQgbGVuID0gKGF0dHJzICE9IG51bGwpID8gYXR0cnMuZ2V0TGVuZ3RoKCkgOiAwOwotCSAgb3JnLnczYy5kb20uQXR0ciBhcnJheVtdID0gbmV3IG9yZy53M2MuZG9tLkF0dHJbbGVuXTsKLQkgIGZvciAoIGludCBpID0gMDsgaSA8IGxlbjsgaSsrICl7Ci0JICAgYXJyYXlbaV0gPSAob3JnLnczYy5kb20uQXR0cilhdHRycy5pdGVtKGkpOwotCSAgfQotCSAgZm9yICggaW50IGkgPSAwOyBpIDwgbGVuIC0gMTsgaSsrICkgewotCSAgICBTdHJpbmcgbmFtZSAgPSBhcnJheVtpXS5nZXROb2RlTmFtZSgpOwotCSAgICBpbnQgaW5kZXggPSBpOwotCSAgICBmb3IgKCBpbnQgaiA9IGkgKyAxOyBqIDwgbGVuOyBqKysgKSB7Ci0JICAgICAgU3RyaW5nIGN1ck5hbWUgPSBhcnJheVtqXS5nZXROb2RlTmFtZSgpOwotCQkgIGlmICggY3VyTmFtZS5jb21wYXJlVG8obmFtZSkgPCAwICkgewotCQkgICAgbmFtZSAgPSBjdXJOYW1lOwotCQkJaW5kZXggPSBqOwotCQkgIH0KLQkJfQotCQlpZiAoIGluZGV4ICE9IGkgKSB7Ci0JCSAgb3JnLnczYy5kb20uQXR0ciB0ZW1wID0gYXJyYXlbaV07Ci0JCSAgYXJyYXlbaV0gPSBhcnJheVtpbmRleF07Ci0JCSAgYXJyYXlbaW5kZXhdID0gdGVtcDsKLQkJfQotCSAgfQotCSAgcmV0dXJuIChhcnJheSk7Ci0gICAgfQotIAotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi93ZWJzZXJ2aWNldXRpbHMvb3JnL2VjbGlwc2UvanN0L3dzL3V0aWwvSnNwVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3dlYnNlcnZpY2V1dGlscy9vcmcvZWNsaXBzZS9qc3Qvd3MvdXRpbC9Kc3BVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmI5MDEzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3dlYnNlcnZpY2V1dGlscy9vcmcvZWNsaXBzZS9qc3Qvd3MvdXRpbC9Kc3BVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy51dGlsOwotCi0vKioKLSAqIEBhdXRob3IgZ2lsYmVydGEKLSAqCi0gKiBUbyBjaGFuZ2UgdGhlIHRlbXBsYXRlIGZvciB0aGlzIGdlbmVyYXRlZCB0eXBlIGNvbW1lbnQgZ28gdG8KLSAqIFdpbmRvdyZndDtQcmVmZXJlbmNlcyZndDtKYXZhJmd0O0NvZGUgR2VuZXJhdGlvbiZndDtDb2RlIGFuZCBDb21tZW50cwotICovCi1wdWJsaWMgY2xhc3MgSnNwVXRpbHMgewotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIG1hcmt1cChTdHJpbmcgdGV4dCkgewotCQkJaWYgKHRleHQgPT0gbnVsbCkgewotCQkJCXJldHVybiBudWxsOwotCQkJfQotCi0JCQlTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsKLQkJCQljaGFyIGMgPSB0ZXh0LmNoYXJBdChpKTsKLQkJCQlzd2l0Y2ggKGMpIHsKLQkJCQkJY2FzZSAnPCc6Ci0JCQkJCQlidWZmZXIuYXBwZW5kKCImbHQ7Iik7Ci0JCQkJCQlicmVhazsKLQkJCQkJY2FzZSAnJic6Ci0JCQkJCQlidWZmZXIuYXBwZW5kKCImYW1wOyIpOwotCQkJCQkJYnJlYWs7Ci0JCQkJCWNhc2UgJz4nOgotCQkJCQkJYnVmZmVyLmFwcGVuZCgiJmd0OyIpOwotCQkJCQkJYnJlYWs7Ci0JCQkJCWNhc2UgJyInOgotCQkJCQkJYnVmZmVyLmFwcGVuZCgiJnF1b3Q7Iik7Ci0JCQkJCQlicmVhazsKLQkJCQkJZGVmYXVsdDoKLQkJCQkJCWJ1ZmZlci5hcHBlbmQoYyk7Ci0JCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCQlyZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7Ci0JCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vd2Vic2VydmljZXV0aWxzL29yZy9lY2xpcHNlL2pzdC93cy91dGlsL1NvYXBFbGVtZW50SGVscGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi93ZWJzZXJ2aWNldXRpbHMvb3JnL2VjbGlwc2UvanN0L3dzL3V0aWwvU29hcEVsZW1lbnRIZWxwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgwMzAwNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi93ZWJzZXJ2aWNldXRpbHMvb3JnL2VjbGlwc2UvanN0L3dzL3V0aWwvU29hcEVsZW1lbnRIZWxwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDEzMSAgIDEyMzk2MyBhbmR5emhhaUBjYS5pYm0uY29tIC0gQW5keSBaaGFpCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnV0aWw7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotCi1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5TQVhQYXJzZXI7Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuU0FYUGFyc2VyRmFjdG9yeTsKLQotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLQotLyoqCi0gKiBAYXV0aG9yIGdpbGJlcnRhCi0gKi8KLXB1YmxpYyBjbGFzcyBTb2FwRWxlbWVudEhlbHBlcgotewotCXB1YmxpYyBzdGF0aWMgamF2YXgueG1sLnNvYXAuU09BUEVsZW1lbnQgY3JlYXRlU09BUEVsZW1lbnRGcm9tWE1MU3RyaW5nKFN0cmluZyB4bWxTdHJpbmcpIHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uCi0JewotCQlqYXZhLmlvLlN0cmluZ1JlYWRlciBzdHJpbmdSZWFkZXIgPSBuZXcgamF2YS5pby5TdHJpbmdSZWFkZXIoeG1sU3RyaW5nKTsgCi0JCW9yZy54bWwuc2F4LklucHV0U291cmNlIGlucHV0U291cmNlID0gbmV3IG9yZy54bWwuc2F4LklucHV0U291cmNlKHN0cmluZ1JlYWRlcik7IAotCQlTQVhQYXJzZXJGYWN0b3J5IGZhY3RvcnkgPSBTQVhQYXJzZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7Ci0JCWZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7Ci0JCVNBWFBhcnNlciBwYXJzZXIgPSBmYWN0b3J5Lm5ld1NBWFBhcnNlcigpOwotCQlTb2FwRWxlbWVudFNheEhhbmRsZXIgaGFuZGxlciA9IG5ldyBTb2FwRWxlbWVudFNheEhhbmRsZXIoKTsKLQkJcGFyc2VyLnBhcnNlKGlucHV0U291cmNlLGhhbmRsZXIpOwotCQlyZXR1cm4gaGFuZGxlci5nZXRTT0FQRWxlbWVudCgpOyAgICAKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIGphdmEubGFuZy5TdHJpbmcgc29hcEVsZW1lbnRXcml0ZXIoamF2YXgueG1sLnNvYXAuU09BUEVsZW1lbnQgbm9kZSxqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIGJ1ZmZlcikKLQl7Ci0JCWlmIChub2RlID09IG51bGwgKSB7Ci0JCQlyZXR1cm4gIiI7Ci0JCX0KLQkJCi0JCWJ1ZmZlci5hcHBlbmQoSnNwVXRpbHMubWFya3VwKCI8IiArIG5vZGUuZ2V0RWxlbWVudE5hbWUoKS5nZXRMb2NhbE5hbWUoKSkpOwotCQlqYXZhLnV0aWwuSXRlcmF0b3IgYXR0cnMgPSBub2RlLmdldEFsbEF0dHJpYnV0ZXMoKTsKLQkJd2hpbGUoYXR0cnMuaGFzTmV4dCgpKSB7Ci0JCQlqYXZheC54bWwuc29hcC5OYW1lIGF0dHIgPSAoamF2YXgueG1sLnNvYXAuTmFtZSlhdHRycy5uZXh0KCk7Ci0JCQlidWZmZXIuYXBwZW5kKCIgIiArIGF0dHIuZ2V0UXVhbGlmaWVkTmFtZSgpICsgIj1cIiIgKyBKc3BVdGlscy5tYXJrdXAobm9kZS5nZXRBdHRyaWJ1dGVWYWx1ZShhdHRyKSkgKyAiXCIiKTsKLQkJfQotCQlidWZmZXIuYXBwZW5kKEpzcFV0aWxzLm1hcmt1cCgiPiIpKTsKLQkJamF2YS51dGlsLkl0ZXJhdG9yIGNoaWxkcmVuID0gbm9kZS5nZXRDaGlsZEVsZW1lbnRzKCk7Ci0JCWlmICggY2hpbGRyZW4gIT0gbnVsbCApIHsKLQkJCXdoaWxlKGNoaWxkcmVuLmhhc05leHQoKSl7Ci0JCQkJamF2YXgueG1sLnNvYXAuTm9kZSBjaGlsZE5vZGUgPSAoamF2YXgueG1sLnNvYXAuTm9kZSljaGlsZHJlbi5uZXh0KCk7Ci0JCQkJaWYoY2hpbGROb2RlIGluc3RhbmNlb2YgamF2YXgueG1sLnNvYXAuU09BUEVsZW1lbnQpewotCQkJCQlidWZmZXIuYXBwZW5kKCI8YnI+Iik7Ci0JCQkJCXNvYXBFbGVtZW50V3JpdGVyKChqYXZheC54bWwuc29hcC5TT0FQRWxlbWVudCljaGlsZE5vZGUsYnVmZmVyKTsKLQkJCQl9Ci0JCQkJZWxzZQotCQkJCQlidWZmZXIuYXBwZW5kKEpzcFV0aWxzLm1hcmt1cCgoKGphdmF4LnhtbC5zb2FwLlRleHQpY2hpbGROb2RlKS5nZXRWYWx1ZSgpKSk7IAotCQkJfQotCQkJYnVmZmVyLmFwcGVuZChKc3BVdGlscy5tYXJrdXAoIjwvIiArIG5vZGUuZ2V0RWxlbWVudE5hbWUoKS5nZXRMb2NhbE5hbWUoKSArICI+IikpOwotCQl9Ci0JCXJldHVybiBidWZmZXIudG9TdHJpbmcoKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi93ZWJzZXJ2aWNldXRpbHMvb3JnL2VjbGlwc2UvanN0L3dzL3V0aWwvU29hcEVsZW1lbnRSdW50aW1lRXhjZXB0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi93ZWJzZXJ2aWNldXRpbHMvb3JnL2VjbGlwc2UvanN0L3dzL3V0aWwvU29hcEVsZW1lbnRSdW50aW1lRXhjZXB0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkNjcwZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24vd2Vic2VydmljZXV0aWxzL29yZy9lY2xpcHNlL2pzdC93cy91dGlsL1NvYXBFbGVtZW50UnVudGltZUV4Y2VwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnV0aWw7Ci0KLS8qKgotICogQGF1dGhvciBnaWxiZXJ0YQotICoKLSAqIFRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZ2VuZXJhdGVkIHR5cGUgY29tbWVudCBnbyB0bwotICogV2luZG93Jmd0O1ByZWZlcmVuY2VzJmd0O0phdmEmZ3Q7Q29kZSBHZW5lcmF0aW9uJmd0O0NvZGUgYW5kIENvbW1lbnRzCi0gKi8KLXB1YmxpYyBjbGFzcyBTb2FwRWxlbWVudFJ1bnRpbWVFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24gIHsKLQotICAvKioKLQkgKiBDb21tZW50IGZvciA8Y29kZT5zZXJpYWxWZXJzaW9uVUlEPC9jb2RlPgotCSAqLwotCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDM3NjE2OTMzNzI2NzQ3NDg0NzFMOwotCi1wdWJsaWMgU29hcEVsZW1lbnRSdW50aW1lRXhjZXB0aW9uKFN0cmluZyBtZXNzYWdlKXsKLSAgICBzdXBlcihtZXNzYWdlKTsKLSAgfQotICAKLSAgCi0gICAgICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3dlYnNlcnZpY2V1dGlscy9vcmcvZWNsaXBzZS9qc3Qvd3MvdXRpbC9Tb2FwRWxlbWVudFNheEhhbmRsZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uL3dlYnNlcnZpY2V1dGlscy9vcmcvZWNsaXBzZS9qc3Qvd3MvdXRpbC9Tb2FwRWxlbWVudFNheEhhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZiYmY2ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi93ZWJzZXJ2aWNldXRpbHMvb3JnL2VjbGlwc2UvanN0L3dzL3V0aWwvU29hcEVsZW1lbnRTYXhIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDEzMSAgIDEyMzk2MyBhbmR5emhhaUBjYS5pYm0uY29tIC0gQW5keSBaaGFpCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudXRpbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci0KLWltcG9ydCBqYXZheC54bWwuc29hcC5OYW1lOwotaW1wb3J0IGphdmF4LnhtbC5zb2FwLlNPQVBFbGVtZW50OwotaW1wb3J0IGphdmF4LnhtbC5zb2FwLlNPQVBFeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnNvYXAuU09BUEZhY3Rvcnk7Ci0KLWltcG9ydCBvcmcueG1sLnNheC5BdHRyaWJ1dGVzOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyOwotCi0vKioKLSAqIEBhdXRob3IgeGluemhhaQotICovCi1wdWJsaWMgY2xhc3MgU29hcEVsZW1lbnRTYXhIYW5kbGVyIGV4dGVuZHMgRGVmYXVsdEhhbmRsZXIKLXsKLQkvL1N0b3JlcyBhbGwgdmFsdWVzIG9mIHBhaXJzIG9mIHByZWZpeCBhbmQgVVJJIGluIHRoZSBkb2N1bWVudAotCXByaXZhdGUgSGFzaE1hcCBwcmVmaXhVUklNYXBwaW5nID0gbmV3IEhhc2hNYXAoKTsKLQkvL1N0b3JlcyBhIGxpc3Qgb2YgVVJJcyBmb3IgYSBwYXJ0aWN1bGFyIFNPQVAgZWxlbWVudAotCXByaXZhdGUgQXJyYXlMaXN0IHVyaXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0JLy9SZXByZXNlbnRzIHRoZSB3aG9sZShyb290KSBTT0FQIGRvY3VtZW50Ci0JcHJpdmF0ZSBTT0FQRWxlbWVudCByb290RWxlbWVudCA9IG51bGw7Ci0JLy9SZXByZXNlbnRzIHRoZSBjdXJyZW50IFNPQVAgZWxlbWVudCB3aGVyZSBTQVggcGFyc2VyIGlzIHJlYWRpbmcKLQlwcml2YXRlIFNPQVBFbGVtZW50IGN1cnJlbnRFbGVtZW50ID0gbnVsbDsKLQlwcml2YXRlIFNPQVBGYWN0b3J5IHNvYXBGYWN0b3J5OwotCQotCXB1YmxpYyBTT0FQRWxlbWVudCBnZXRTT0FQRWxlbWVudCgpCi0JewotCQlyZXR1cm4gcm9vdEVsZW1lbnQ7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHN0YXJ0RG9jdW1lbnQoKSB0aHJvd3MgU0FYRXhjZXB0aW9uCi0JewotCQl0cnkgCi0JCXsKLQkJCXNvYXBGYWN0b3J5ID0gU09BUEZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLQkJfQotCQljYXRjaCAoU09BUEV4Y2VwdGlvbiBlKSAKLQkJewotCQkJdGhyb3cgbmV3IFNBWEV4Y2VwdGlvbigiQ2FuJ3QgY3JlYXRlIGEgU09BUEZhY3RvcnkgaW5zdGFuY2UiLCBlKTsKLQkJfQkKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzdGFydFByZWZpeE1hcHBpbmcoU3RyaW5nIHByZWZpeCwgU3RyaW5nIHVyaSkKLQl7Ci0JCXByZWZpeFVSSU1hcHBpbmcucHV0KHVyaSxwcmVmaXgpOwotCQl1cmlzLmFkZCh1cmkpOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBjaGFyYWN0ZXJzKGNoYXJbXSBjaCwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKSB0aHJvd3MgU0FYRXhjZXB0aW9uCi0JewotCQlTdHJpbmcgc3RyID0gU3RyaW5nLnZhbHVlT2YoY2gpOwotCQkvL0FkZCBub24tdHJpdmlhbCB0ZXh0IGFzIGEgdGV4dCBub2RlCi0JCWlmIChsZW5ndGggPiAxKQotCQl7Ci0JCQl0cnkgCi0JCQl7Ci0JCQkJY3VycmVudEVsZW1lbnQuYWRkVGV4dE5vZGUoc3RyLnN1YnN0cmluZyhzdGFydCxzdGFydCtsZW5ndGgpKTsKLQkJCX0gCi0JCQljYXRjaCAoU09BUEV4Y2VwdGlvbiBlKSAKLQkJCXsKLQkJCQl0aHJvdyBuZXcgU0FYRXhjZXB0aW9uKCJDYW4ndCBhZGQgYSB0ZXh0IG5vZGUgaW50byBTT0FQRWxlbWVudCBmcm9tIHRleHQiLCBlKTsKLQkJCX0KLQkJfQotCX0KLQkKLQlwdWJsaWMgdm9pZCBlbmRFbGVtZW50IChTdHJpbmcgdXJpLCBTdHJpbmcgbG9jYWxOYW1lLCBTdHJpbmcgcU5hbWUpCi0JewotCQlpZiAoY3VycmVudEVsZW1lbnQgIT0gcm9vdEVsZW1lbnQgKQotCQl7Ci0JCQljdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmdldFBhcmVudEVsZW1lbnQoKTsKLQkJfQotCX0KLQlwdWJsaWMgdm9pZCBzdGFydEVsZW1lbnQoU3RyaW5nIG5hbWVzcGFjZVVSSSwgU3RyaW5nIGxvY2FsTmFtZSwgU3RyaW5nIHFOYW1lLCBBdHRyaWJ1dGVzIGF0dHMpIHRocm93cyBTQVhFeGNlcHRpb24KLQl7Ci0JCVN0cmluZyBwcmVmaXggPSAoU3RyaW5nKXByZWZpeFVSSU1hcHBpbmcuZ2V0KG5hbWVzcGFjZVVSSSk7Ci0JCXRyeQotCQl7Ci0JCQkvLyBDcmVhdGUgYW5kL29yIGFkZCBjaGlsZCBlbGVtZW50Ci0JCQlpZiAocm9vdEVsZW1lbnQgPT0gbnVsbCAmJiBjdXJyZW50RWxlbWVudCA9PSBudWxsKQotCQkJewotCQkJCXJvb3RFbGVtZW50ID0gc29hcEZhY3RvcnkuY3JlYXRlRWxlbWVudChsb2NhbE5hbWUscHJlZml4LG5hbWVzcGFjZVVSSSk7Ci0JCQkJY3VycmVudEVsZW1lbnQgPSByb290RWxlbWVudDsKLQkJCX0gCi0JCQllbHNlCi0JCQl7Ci0JCQkJY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5hZGRDaGlsZEVsZW1lbnQobG9jYWxOYW1lLHByZWZpeCxuYW1lc3BhY2VVUkkpOwotCQkJfQotCQkJCi0JCQkvLyBBZGQgbmFtZXNwYWNlIGRlY2xhcmF0aW9uCi0JCQlpZiAodXJpcy5zaXplKCkgPiAwKQotCQkJewotCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgdXJpcy5zaXplKCk7IGkrKykKLQkJCQl7Ci0JCQkJCVN0cmluZyB1cmkgPSAoU3RyaW5nKXVyaXMuZ2V0KGkpOwotCQkJCQlTdHJpbmcgcHJlID0gKFN0cmluZylwcmVmaXhVUklNYXBwaW5nLmdldCh1cmkpOwotCQkJCQljdXJyZW50RWxlbWVudC5hZGROYW1lc3BhY2VEZWNsYXJhdGlvbihwcmUsdXJpKTsKLQkJCQl9Ci0JCQkJLy8gTmVlZCB0byByZXNldCB1cmlzIGFzIHdlIHdpbGwgdXNlIGl0IGZvciBuZXh0IGVsZW1lbnQuCi0JCQkJdXJpcy5jbGVhcigpOyAKLQkJCX0KLQkJCQotCQkJLy8gQWRkIGF0dGlidXRlcwotCQkJZm9yIChpbnQgaSA9MDsgaTxhdHRzLmdldExlbmd0aCgpOyBpKyspCi0JCQl7Ci0JCQkJTmFtZSBhdHRyaU5hbWU7Ci0JCQkJaWYgKGF0dHMuZ2V0VVJJKGkpICE9IG51bGwpCi0JCQkJewotCQkJCQlTdHJpbmcgYXR0cmlQcmUgPSAoU3RyaW5nKXByZWZpeFVSSU1hcHBpbmcuZ2V0KGF0dHMuZ2V0VVJJKGkpKTsKLQkJCQkJYXR0cmlOYW1lID0gc29hcEZhY3RvcnkuY3JlYXRlTmFtZShhdHRzLmdldExvY2FsTmFtZShpKSxhdHRyaVByZSxhdHRzLmdldFVSSShpKSk7Ci0JCQkJfQotCQkJCWVsc2UKLQkJCQl7Ci0JCQkJCWF0dHJpTmFtZSA9IHNvYXBGYWN0b3J5LmNyZWF0ZU5hbWUoYXR0cy5nZXRMb2NhbE5hbWUoaSkpOwotCQkJCX0KLQkJCQljdXJyZW50RWxlbWVudC5hZGRBdHRyaWJ1dGUoYXR0cmlOYW1lLCBhdHRzLmdldFZhbHVlKGkpKTsKLQkJCX0KLQkJfQotCQljYXRjaCAoU09BUEV4Y2VwdGlvbiBlKSAKLQkJewotCQkJdGhyb3cgbmV3IFNBWEV4Y2VwdGlvbihlKTsKLQkJfQotCX0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi5lamIudWkvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE0NDg3Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi5lamIudWkvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWJ1aWxkLnhtbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpLy5wcm9qZWN0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDIzNDYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLmVqYi51aS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi5lamIudWk8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi5lamIudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLmVqYi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjI4MWIzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLmVqYi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotI1N1biBKdW4gMDMgMDE6NTc6MDAgRURUIDIwMDcKLWNvbXBpbGVycy5pbmNvbXBhdGlibGUtZW52aXJvbm1lbnQ9MQotY29tcGlsZXJzLnAuYnVpbGQ9MQotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0xCi1jb21waWxlcnMucC5taXNzaW5nLXBhY2thZ2VzPTIKLWNvbXBpbGVycy5wLm5vLXJlcXVpcmVkLWF0dD0wCi1jb21waWxlcnMucC5ub3QtZXh0ZXJuYWxpemVkLWF0dD0xCi1jb21waWxlcnMucC51bmtub3duLWF0dHJpYnV0ZT0wCi1jb21waWxlcnMucC51bmtub3duLWNsYXNzPTIKLWNvbXBpbGVycy5wLnVua25vd24tZWxlbWVudD0xCi1jb21waWxlcnMucC51bmtub3duLXJlc291cmNlPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtZXgtcG9pbnRzPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtaW1wb3J0PTAKLWNvbXBpbGVycy51c2UtcHJvamVjdD10cnVlCi1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpL01FVEEtSU5GL01BTklGRVNULk1GIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGNjZWMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLmVqYi51aS9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVQTFVHSU5fTkFNRQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLmVqYi51aTsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjIwMC5xdWFsaWZpZXIKLUJ1bmRsZS1WZW5kb3I6ICVQTFVHSU5fUFJPVklERVIKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbjtidW5kbGUtdmVyc2lvbj0iWzEuMC4zMDQsMS4xLjApIgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpL2Fib3V0Lmh0bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi5lamIudWkvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi5lamIudWkvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpL2J1aWxkLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi5lamIudWkvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUyOTQwZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi5lamIudWkvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2ZlNjU0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLmVqYi51aS9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPVdlYiBTZXJ2aWNlcyBDcmVhdGlvbiBFSkIgR3JhcGhpY2FsIFVzZXIgSW50ZXJmYWNlCi1QTFVHSU5fUFJPVklERVI9RWNsaXBzZS5vcmcKLQotIwotIyBXZWIgc2VydmljZSB0eXBlcwotIwotV0VCU0VSVklDRVRZUEVfTkFNRV9FSkJfVFA9RUpCIFdlYiBTZXJ2aWNlCi1XRUJTRVJWSUNFVFlQRV9OQU1FX1dTRExfRUpCX1RQPVNrZWxldG9uIEVKQiBXZWIgU2VydmljZQotCi0jCi0jIFBvcC11cCBhY3Rpb25zCi0jCi1BQ1RJT05fREVQTE9ZX1dFQlNFUlZJQ0U9Q3JlYXRlIFdlYiBzZXJ2aWNlCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLmVqYi51aS9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNGJkYTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24uZWpiLnVpL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotCi08cGx1Z2luPgotCi0gICAgPCEtLSBFSkIgV2ViIFNlcnZpY2UgVHlwZXMgLS0+Ci08IS0tICAgCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndlYlNlcnZpY2VTZXJ2ZXJSdW50aW1lVHlwZSI+Ci0KLSAgICAgIDx3ZWJTZXJ2aWNlVHlwZQotICAgICAgICAgICAgbGFiZWw9IiVXRUJTRVJWSUNFVFlQRV9OQU1FX1dTRExfRUpCX1RQIgotICAgICAgICAgICAgcmVzb3VyY2VUeXBlTWV0YWRhdGE9IkZpbGUgSVJlc291cmNlIgotICAgICAgICAgICAgZXh0ZW5zaW9uTWV0YWRhdGE9Ii53c2RsIgotICAgICAgICAgICAgb2JqZWN0U2VsZWN0aW9uV2lkZ2V0PSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuV1NETFNlbGVjdGlvbldpZGdldCIKLSAgICAgICAgICAgIGluY2x1ZGVOYXR1cmVzPSJvcmcuZWNsaXBzZS5qc3QuajJlZS5lamIuRUpCTmF0dXJlIgotICAgICAgICAgICAgZXhjbHVkZU5hdHVyZXM9IiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MudHlwZS53c2RsLmVqYiI+Ci0gICAgICA8L3dlYlNlcnZpY2VUeXBlPgotCi0gICAgICA8d2ViU2VydmljZVR5cGUKLQkJICAgIGxhYmVsPSIlV0VCU0VSVklDRVRZUEVfTkFNRV9FSkJfVFAiCi0JCSAgICByZXNvdXJjZVR5cGVNZXRhZGF0YT0iRUpCT2JqZWN0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5FbnRlcnByaXNlQmVhbiBTZXNzaW9uSW1wbCIKLQkJICAgIGV4dGVuc2lvbk1ldGFkYXRhPSIuamF2YSAuY2xhc3MgLlNlc3Npb25JbXBsIgotCQkgICAgb2JqZWN0U2VsZWN0aW9uV2lkZ2V0PSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuRUpCU2VsZWN0aW9uV2lkZ2V0IgotCQkgICAgaW5jbHVkZU5hdHVyZXM9Im9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5FSkJOYXR1cmUiCi0JCSAgICBleGNsdWRlTmF0dXJlcz0iIgotCQkgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy50eXBlLmVqYiI+Ci0gIAkgPC93ZWJTZXJ2aWNlVHlwZT4KLQk8L2V4dGVuc2lvbj4KLS0tPgotCi0gICA8IS0tIFBvcHVwcyAtLT4KLSAgICAgIAotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLnBvcHVwTWVudXMiPgotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5FbnRlcnByaXNlQmVhbiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZC5lamIiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVBQ1RJT05fREVQTE9ZX1dFQlNFUlZJQ0UiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9Im9yZy5lY2xpcHNlLmpzdC53cy5hdGsudWkud2Vic2VydmljZS5jYXRlZ29yeS5lamIucG9wdXBNZW51L3BvcHVwQWN0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0gICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5qc3QuamF2YWVlLmVqYi5TZXNzaW9uQmVhbiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZC5lamIzIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX0RFUExPWV9XRUJTRVJWSUNFIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXRrLnVpLndlYnNlcnZpY2UuY2F0ZWdvcnkuZWpiMy5wb3B1cE1lbnUvcG9wdXBBY3Rpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0gICA8L2V4dGVuc2lvbj4KLQotCi08IS0tIEVKQiBzdHVmZiAtLT4KLSAgICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndzSW1wbCI+Ci0gICAgIDx3ZWJTZXJ2aWNlSW1wbAotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy53c0ltcGwuZWpiIgotICAgICAgICAgICAgbGFiZWw9IiVXRUJTRVJWSUNFVFlQRV9OQU1FX0VKQl9UUCIKLSAgICAgICAgICAgIHJlc291cmNlVHlwZU1ldGFkYXRhPSJFSkJPYmplY3Qgb3JnLmVjbGlwc2UuanN0LmoyZWUuZWpiLkVudGVycHJpc2VCZWFuIG9yZy5lY2xpcHNlLmpzdC5qYXZhZWUuZWpiLkVudGVycHJpc2VCZWFucyBTZXNzaW9uSW1wbCBTZXNzaW9uQmVhbkltcGwiCi0gICAgICAgICAgICBleHRlbnNpb25NZXRhZGF0YT0iLmphdmEgLmNsYXNzIC5TZXNzaW9uSW1wbCAuU2Vzc2lvbkJlYW5JbXBsIgotICAgICAgICAgICAgbWVyZ2VyQ2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uSmF2YU1lcmdlciIgCi0gICAgICAgICAgICBvYmplY3RTZWxlY3Rpb25XaWRnZXQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5FSkJTZWxlY3Rpb25XaWRnZXQiPgotICAgICA8L3dlYlNlcnZpY2VJbXBsPgotICAgIDwvZXh0ZW5zaW9uPiAgICAKLSAgICAKLQotICAgICAgICAgICAgCi0gICAKLTwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLy5jbGFzc3BhdGggYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTZkNDlhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYy8iLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS41Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTZlZGVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi10ZW1wLmZvbGRlcgotd3NzLXVpLmphcgotQGRvdAotc3JjLnppcAotamF2YUNvbXBpbGVyLi4uYXJncwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjljOGJmYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYWIxODkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotI1NhdCBKdW4gMDIgMTc6MDc6MDYgRURUIDIwMDcKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuNQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hdXRvYm94aW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbXB0eVN0YXRlbWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmllbGRIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsUGFyYW1ldGVyQm91bmQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbGx5QmxvY2tOb3RDb21wbGV0aW5nTm9ybWFsbHk9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5mb3JiaWRkZW5SZWZlcmVuY2U9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaGlkZGVuQ2F0Y2hCbG9jaz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGF0aWJsZU5vbkluaGVyaXRlZEludGVyZmFjZU1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGxldGVFbnVtU3dpdGNoPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmRpcmVjdFN0YXRpY0FjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubG9jYWxWYXJpYWJsZUhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWV0aG9kV2l0aENvbnN0cnVjdG9yTmFtZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdEZXByZWNhdGVkQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ092ZXJyaWRlQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ1NlcmlhbFZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0VmZmVjdEFzc2lnbm1lbnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0ltcGxpY2l0U3RyaW5nQ29udmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vbkV4dGVybmFsaXplZFN0cmluZ0xpdGVyYWw9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm92ZXJyaWRpbmdQYWNrYWdlRGVmYXVsdE1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnBvc3NpYmxlQWNjaWRlbnRhbEJvb2xlYW5Bc3NpZ25tZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zcGVjaWFsUGFyYW1ldGVySGlkaW5nRmllbGQ9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3RhdGljQWNjZXNzUmVjZWl2ZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdXBwcmVzc1dhcm5pbmdzPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3ludGhldGljQWNjZXNzRW11bGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS50eXBlUGFyYW1ldGVySGlkaW5nPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5jaGVja2VkVHlwZU9wZXJhdGlvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuZG9jdW1lbnRlZEVtcHR5QmxvY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuaGFuZGxlZFdhcm5pbmdUb2tlbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5RWxzZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlUeXBlQ2hlY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVucXVhbGlmaWVkRmllbGRBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbldoZW5PdmVycmlkaW5nPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZEltcG9ydD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZExvY2FsPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuSW1wbGVtZW50aW5nQWJzdHJhY3Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbk92ZXJyaWRpbmdDb25jcmV0ZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQcml2YXRlTWVtYmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udmFyYXJnc0FyZ3VtZW50TmVlZENhc3Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NzFhYzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSNNb24gSmFuIDMwIDEwOjQxOjA0IEVTVCAyMDA2Ci1jb21waWxlcnMucC5kZXByZWNhdGVkPTEKLWNvbXBpbGVycy5wLm5vLXJlcXVpcmVkLWF0dD0wCi1jb21waWxlcnMucC5ub3QtZXh0ZXJuYWxpemVkLWF0dD0xCi1jb21waWxlcnMucC51bmtub3duLWF0dHJpYnV0ZT0wCi1jb21waWxlcnMucC51bmtub3duLWNsYXNzPTAKLWNvbXBpbGVycy5wLnVua25vd24tZWxlbWVudD0xCi1jb21waWxlcnMucC51bmtub3duLXJlc291cmNlPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtZXgtcG9pbnRzPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtaW1wb3J0PTAKLWNvbXBpbGVycy51c2UtcHJvamVjdD10cnVlCi1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFmMWNjYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVQTFVHSU5fTkFNRQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpOyBzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuNDA4LnF1YWxpZmllcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQ3JlYXRpb25VSVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLmFudDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5leHRlbnNpb247eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkucGx1Z2luO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLnByZWZlcmVuY2VzO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLnNlcnZlcjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMuYmluZGluZzt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzLnJ1bnRpbWU7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy50ZXN0O3gtaW50ZXJuYWw6PXRydWUKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnY7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS4yLjAsMS4zLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3M7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cztidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb247YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlcjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qc3Qud3MudWk7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5qZHQuY29yZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UudWk7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmVtZi5jb21tb247YnVuZGxlLXZlcnNpb249IlsyLjIuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmplbS51dGlsO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5qZW0ud29ya2JlbmNoO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAyLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbWZ3b3JrYmVuY2guaW50ZWdyYXRpb247YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC5qMmVlO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZS5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamI7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIGphdmF4LndzZGw7YnVuZGxlLXZlcnNpb249IlsxLjUuMCwxLjYuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3JrcztidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudDtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2UudWkuZm9ybXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53cy51aTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2Fib3V0Lmh0bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2J1aWxkLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWRlYzMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXNvdXJjZS4uID0gc3JjLwotYmluLmluY2x1ZGVzID0gLixcCi0gICAgICAgICAgICAgICBpY29ucy8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvZXhwb3J0X3dzLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL2V4cG9ydF93cy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNDRlZjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvZXhwb3J0X3dzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL2Z1bGwvY3Rvb2wxNi9uZXdfd2Vic2Vydl93aXouZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvZnVsbC9jdG9vbDE2L25ld193ZWJzZXJ2X3dpei5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNzM3ZjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvZnVsbC9jdG9vbDE2L25ld193ZWJzZXJ2X3dpei5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9pY29ucy9mdWxsL3dpemJhbi9leHBvcnRfd3Nfd2l6LnBuZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL2Z1bGwvd2l6YmFuL2V4cG9ydF93c193aXoucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDZiY2FiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL2Z1bGwvd2l6YmFuL2V4cG9ydF93c193aXoucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvZnVsbC93aXpiYW4vd2Vic2VydmljZXNfd2l6LnBuZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL2Z1bGwvd2l6YmFuL3dlYnNlcnZpY2VzX3dpei5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1Zjg3NmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvZnVsbC93aXpiYW4vd2Vic2VydmljZXNfd2l6LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL3NlcnZpY2VfYXNzZW1ibGUuanBnIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvc2VydmljZV9hc3NlbWJsZS5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMzc5MzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvc2VydmljZV9hc3NlbWJsZS5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9pY29ucy9zZXJ2aWNlX2RlcGxveS5qcGcgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9pY29ucy9zZXJ2aWNlX2RlcGxveS5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNThiYzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvc2VydmljZV9kZXBsb3kuanBnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvc2VydmljZV9kZXZlbG9wLmpwZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL3NlcnZpY2VfZGV2ZWxvcC5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ZmY2YTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvc2VydmljZV9kZXZlbG9wLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL3NlcnZpY2VfaW5zdGFsbC5qcGcgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9pY29ucy9zZXJ2aWNlX2luc3RhbGwuanBnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGZjZGJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL3NlcnZpY2VfaW5zdGFsbC5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9pY29ucy9zZXJ2aWNlX3J1bi5qcGcgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9pY29ucy9zZXJ2aWNlX3J1bi5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjOTEyZjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvc2VydmljZV9ydW4uanBnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvc2VydmljZV90ZXN0LmpwZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL2ljb25zL3NlcnZpY2VfdGVzdC5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNTY5NTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvaWNvbnMvc2VydmljZV90ZXN0LmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZTg1ZjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPVdlYiBTZXJ2aWNlcyBDcmVhdGlvbiBHcmFwaGljYWwgVXNlciBJbnRlcmZhY2UKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotCi1QTFVHSU5fTkVXX0NBVEVHT1JZX05BTUVfV1M9V2ViIFNlcnZpY2VzCi1QTFVHSU5fTkVXX1dJWkFSRF9OQU1FX1dTX1NFUlZJQ0U9V2ViIFNlcnZpY2UKLVBMVUdJTl9FWFBPUlRfV0laQVJEX05BTUVfV1M9V2ViIFNlcnZpY2UKLVBMVUdJTl9ORVdfV0laQVJEX0RFU0NfV1NfU0VSVklDRT1DcmVhdGUgYSBuZXcgWE1MIHdlYiBzZXJ2aWNlLgotUExVR0lOX0VYUE9SVF9XSVpBUkRfREVTQ19XUz1BIHdpemFyZCBmb3IgZXhwb3J0aW5nIGEgd2ViIHNlcnZpY2UuCi0KLSMKLSMJV2ViIFNlcnZpY2VzIFByZWZlcmFuY2UgUGFnZXMKLSMKLSMgRGlhbG9ncwotQ0hFQ0tCT1hfU0hPV19ERVBMT1lfV0VCX1NFUlZJQ0VfRElBTE9HPUhpZGUgJkNyZWF0ZSBXZWIgc2VydmljZSBEaWFsb2cKLUNIRUNLQk9YX1NIT1dfR0VORVJBVEVfU0tFTEVUT05fRElBTE9HPUhpZGUgR2VuZXJhdGUgSmF2YSBCZWFuIFMma2VsZXRvbiBEaWFsb2cKLUNIRUNLQk9YX1NIT1dfR0VORVJBVEVfV1NETF9GSUxFU19ESUFMT0c9SGlkZSBHZW5lcmF0ZSBXU0RMIEZpbGVzIERpYWxvZwotQ0hFQ0tCT1hfU0hPV19QVUJMSVNIX1dTRExfRElBTE9HPUhpZGUgUHVibGlzaCAmV1NETCBEaWFsb2cKLQotUFJFRkVSRU5DRV9DQVRFR09SWV9TQ0VOQVJJT19ERUZBVUxUUz1TY2VuYXJpbyBEZWZhdWx0cwotCi0KLSMKLSMgUHJlZmVyZW5jZXMgVG9vbHRpcHMKLSMKLSNBY3Rpb24gRGlhbG9ncwotVE9PTFRJUF9QUEFEX0NIRUNLQk9YX0RFUExPWT1IaWRlcyB0aGUgZGlhbG9nIGZvciBkZXBsb3lpbmcgYSBXZWIgc2VydmljZSBhY3Rpb24KLVRPT0xUSVBfUFBBRF9DSEVDS0JPWF9TS0VMRVRPTj1IaWRlcyB0aGUgZGlhbG9nIGZvciBnZW5lcmF0aW5nIEphdmEgYmVhbiBTa2VsZXRvbiBhY3Rpb24KLVRPT0xUSVBfUFBBRF9DSEVDS0JPWF9XU0RMPUhpZGVzIHRoZSBkaWFsb2cgZm9yIGdlbmVyYXRpbmcgV1NETCBmaWxlcyBhY3Rpb24KLVRPT0xUSVBfUFBBRF9DSEVDS0JPWF9QVUJMSVNIPUhpZGVzIHRoZSBkaWFsb2cgZm9yIHB1Ymxpc2hpbmcgdGhlIFdTREwgYWN0aW9uCi0KLSMKLSMgUG9wLXVwIGFjdGlvbnMKLSMKLUFDVElPTl9ERVBMT1lfV0VCU0VSVklDRT1DcmVhdGUgV2ViIHNlcnZpY2UKLUFDVElPTl9HRU5FUkFURV9KQVZBX1NLRUxFVE9OPUdlbmVyYXRlIEphdmEgYmVhbiBza2VsZXRvbgotQUNUSU9OX1BVQkxJU0hfV1NETD1QdWJsaXNoIFdTREwgZmlsZQotCi0jCi0jIFdpemFyZHMuCi0jCi1XSVpBUkRfVElUTEVfV1NTPVdlYiBTZXJ2aWNlCi0KLQotIwotIyBQb3AtdXAgYWN0aW9ucwotIwotQUNUSU9OX0RFUExPWV9XRUJTRVJWSUNFPUNyZWF0ZSBXZWIgc2VydmljZQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI3MWY3Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzk2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci0KLTxwbHVnaW4+Ci0KLSAgICAgPCEtLSBXaXphcmRzIC0tPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkubmV3V2l6YXJkcyI+Ci0gICAgICA8Y2F0ZWdvcnkKLSAgICAgICAgICAgIG5hbWU9IiVQTFVHSU5fTkVXX0NBVEVHT1JZX05BTUVfV1MiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLnVpLm5ldyI+Ci0gICAgICA8L2NhdGVnb3J5PgotICAgICAgPHdpemFyZAotICAgICAgICAgICAgbmFtZT0iJVBMVUdJTl9ORVdfV0laQVJEX05BTUVfV1NfU0VSVklDRSIKLSAgICAgICAgICAgIGljb249Imljb25zL2Z1bGwvY3Rvb2wxNi9uZXdfd2Vic2Vydl93aXouZ2lmIgotICAgICAgICAgICAgY2F0ZWdvcnk9Im9yZy5lY2xpcHNlLmpzdC53cy51aS5uZXciCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuRHluYW1pY1dpemFyZCIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZCI+Ci0gICAgICAgICA8ZGVzY3JpcHRpb24+Ci0gICAgICAgICAgICAlUExVR0lOX05FV19XSVpBUkRfREVTQ19XU19TRVJWSUNFCi0gICAgICAgICA8L2Rlc2NyaXB0aW9uPgotICAgICAgPC93aXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5keW5hbWljV2l6YXJkIj4KLSAgICAgIDxkeW5hbWljV2l6YXJkCi0gICAgICAgICAgICBpY29uYmFubmVyPSJpY29ucy9mdWxsL3dpemJhbi93ZWJzZXJ2aWNlc193aXoucG5nIgotICAgICAgICAgICAgdGl0bGU9IiVXSVpBUkRfVElUTEVfV1NTIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzLmJpbmRpbmcuU2VydmVyV2lkZ2V0QmluZGluZyIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZCI+Ci0gICAgICA8L2R5bmFtaWNXaXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLmV4cG9ydFdpemFyZHMiPgotICAgICAgPGNhdGVnb3J5Ci0gICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53c2V4cG9ydC5jYXRlZ29yeSIKLSAgICAgICAgICAgICBuYW1lPSIlUExVR0lOX05FV19DQVRFR09SWV9OQU1FX1dTIi8+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIAotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLmV4cG9ydFdpemFyZHMiPgotICAgICAgPHdpemFyZAotICAgICAgICAgICAgbmFtZT0iJVBMVUdJTl9FWFBPUlRfV0laQVJEX05BTUVfV1MiCi0gICAgICAgICAgICBpY29uPSJpY29ucy9leHBvcnRfd3MuZ2lmIgotICAgICAgICAgICAgY2F0ZWdvcnk9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53c2V4cG9ydC5jYXRlZ29yeSIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5EeW5hbWljV2l6YXJkIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53c2V4cG9ydCI+Ci0gICAgICAgICA8ZGVzY3JpcHRpb24+Ci0gICAgICAgICAgICAlUExVR0lOX0VYUE9SVF9XSVpBUkRfREVTQ19XUwotICAgICAgICAgPC9kZXNjcmlwdGlvbj4KLSAgICAgIDwvd2l6YXJkPgotICAgPC9leHRlbnNpb24+Ci0KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZHluYW1pY1dpemFyZCI+Ci0gICAgICA8ZHluYW1pY1dpemFyZAotICAgICAgICAgICAgaWNvbmJhbm5lcj0iaWNvbnMvZnVsbC93aXpiYW4vZXhwb3J0X3dzX3dpei5wbmciCi0gICAgICAgICAgICBuYW1lPSIlUExVR0lOX0VYUE9SVF9XSVpBUkRfTkFNRV9XUyIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy5iaW5kaW5nLkV4cG9ydFdTV2lkZ2V0QmluZGluZyIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud3NleHBvcnQiPgotICAgICAgPC9keW5hbWljV2l6YXJkPgotICAgPC9leHRlbnNpb24+Ci0KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZHluYW1pY1dpemFyZCI+Ci0gICAgICA8ZHluYW1pY1dpemFyZAotICAgICAgICAgICAgaWNvbmJhbm5lcj0iaWNvbnMvZnVsbC93aXpiYW4vZXhwb3J0X3dzX3dpei5wbmciCi0gICAgICAgICAgICBuYW1lPSIlUExVR0lOX0VYUE9SVF9XSVpBUkRfTkFNRV9XUyIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy5iaW5kaW5nLkV4cG9ydFdTV2lkZ2V0QmluZGluZyIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnB1Ymxpc2giPgotICAgICAgPC9keW5hbWljV2l6YXJkPgotICAgPC9leHRlbnNpb24+Ci0KLSAgIDwhLS0gIkRvbid0IFNob3cgTWUiIFByZWZlcmVuY2VzIC0tPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlIj4KLQotICAgICAgPGFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlCi0gICAgICAgICAgICBuYW1lPSIlQ0hFQ0tCT1hfU0hPV19ERVBMT1lfV0VCX1NFUlZJQ0VfRElBTE9HIgotICAgICAgICAgICAgdG9vbHRpcD0iJVRPT0xUSVBfUFBBRF9DSEVDS0JPWF9ERVBMT1kiCi0gICAgICAgICAgICBpbmZvcG9wPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkuUFBBRDAwMDYiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0Lndzcy5wb3B1cC5jYXRlZ29yeSIKLSAgICAgICAgICAgIG9iamVjdGlkcz0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuZWpiIG9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkLmVqYjMgb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuamF2YS5maWxlIG9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkLmphdmEuY29tcHVuaXQgb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuamF2YS5zZXJ2aWNlLmJlYW4gb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuamF2YS5iZWFuLmxpbmsiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuamF2YSI+Ci0gICAgICA8L2FjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlPgotCi0gICAgICA8YWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUKLSAgICAgICAgICAgIG5hbWU9IiVDSEVDS0JPWF9TSE9XX0dFTkVSQVRFX1NLRUxFVE9OX0RJQUxPRyIKLSAgICAgICAgICAgIHRvb2x0aXA9IiVUT09MVElQX1BQQURfQ0hFQ0tCT1hfU0tFTEVUT04iCi0gICAgICAgICAgICBpbmZvcG9wPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkuUFBBRDAwMDgiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0Lndzcy5wb3B1cC5jYXRlZ29yeSIKLSAgICAgICAgICAgIG9iamVjdGlkcz0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuc2tlbGV0b24uZmlsZS53c2RsIG9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkLnNrZWxldG9uLnNlcnZpY2Ugb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuc2tlbGV0b24ud3NkbHJlcyBvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZC5za2VsZXRvbi5zZXJ2aWNlcmVmIG9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkLnNrZWxldG9uLmZpbGUud3NpbCIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZC5za2VsZXRvbiI+Ci0gICAgICA8L2FjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlPgotCi0gICAgICA8YWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUKLSAgICAgICAgICAgIG5hbWU9IiVDSEVDS0JPWF9TSE9XX1BVQkxJU0hfV1NETF9ESUFMT0ciCi0gICAgICAgICAgICB0b29sdGlwPSIlVE9PTFRJUF9QUEFEX0NIRUNLQk9YX1BVQkxJU0giCi0gICAgICAgICAgICBpbmZvcG9wPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkuUFBBRDAwMDkiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0Lndzcy5wb3B1cC5jYXRlZ29yeSIKLSAgICAgICAgICAgIG9iamVjdGlkcz0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5wdWJsaXNoLmZpbGUgb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5wdWJsaXNoLnNlcnZpY2Ugb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5wdWJsaXNoLndzZGxyZXMgb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5wdWJsaXNoLnNlcnZpY2VyZWYiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5wdWJsaXNoIj4KLSAgICAgIDwvYWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGU+Ci0KLSAgIDwvZXh0ZW5zaW9uPgotCi0gICA8IS0tIFBvcHVwcyAtLT4KLSAgIAotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLnBvcHVwTWVudXMiPgotCi0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqLmphdmEiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuamF2YS5maWxlIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX0RFUExPWV9XRUJTRVJWSUNFIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJvcmcuZWNsaXBzZS53c3Qud3MudWkud2Vic2VydmljZS5jYXRlZ29yeS5wb3B1cE1lbnUvcG9wdXBBY3Rpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuY29yZS5Db21waWxhdGlvblVuaXQiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqLmphdmEiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuamF2YS5jb21wdW5pdCI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iJUFDVElPTl9ERVBMT1lfV0VCU0VSVklDRSIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0ib3JnLmVjbGlwc2Uud3N0LndzLnVpLndlYnNlcnZpY2UuY2F0ZWdvcnkucG9wdXBNZW51L3BvcHVwQWN0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotCi0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqLndzZGwiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuc2tlbGV0b24uZmlsZS53c2RsIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX0dFTkVSQVRFX0pBVkFfU0tFTEVUT04iCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9Im9yZy5lY2xpcHNlLndzdC53cy51aS53ZWJzZXJ2aWNlLmNhdGVnb3J5LnBvcHVwTWVudS9wb3B1cEFjdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2UiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkLnNrZWxldG9uLnNlcnZpY2UiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVBQ1RJT05fR0VORVJBVEVfSkFWQV9TS0VMRVRPTiIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkLnNrZWxldG9uLndzZGxyZXMiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVBQ1RJT05fR0VORVJBVEVfSkFWQV9TS0VMRVRPTiIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWYiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkLnNrZWxldG9uLnNlcnZpY2VyZWYiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVBQ1RJT05fR0VORVJBVEVfSkFWQV9TS0VMRVRPTiIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuU2VydmljZUltcGxCZWFuIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iKiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZC5qYXZhLnNlcnZpY2UuYmVhbiI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iJUFDVElPTl9ERVBMT1lfV0VCU0VSVklDRSIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0gICAgICAKLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuQmVhbkxpbmsiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQuc2VydmVyd2l6YXJkLmphdmEuYmVhbi5saW5rIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX0RFUExPWV9XRUJTRVJWSUNFIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJhZGRpdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4gICAgICAgCi0gICAgICAKLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9Iioud3NpbCIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZC5za2VsZXRvbi5maWxlLndzaWwiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVBQ1RJT05fR0VORVJBVEVfSkFWQV9TS0VMRVRPTiIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0ib3JnLmVjbGlwc2Uud3N0LndzLnVpLndlYnNlcnZpY2UuY2F0ZWdvcnkucG9wdXBNZW51L3BvcHVwQWN0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotCi0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqLndzZGwiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5wdWJsaXNoLmZpbGUiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVBQ1RJT05fUFVCTElTSF9XU0RMIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJvcmcuZWNsaXBzZS53c3Qud3MudWkud2Vic2VydmljZS5jYXRlZ29yeS5wb3B1cE1lbnUvcG9wdXBBY3Rpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQucHVibGlzaCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotCi0gICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2UiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQucHVibGlzaC5zZXJ2aWNlIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX1BVQkxJU0hfV1NETCIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gICAgICAgICAgICAgICAgICBtZW51YmFyUGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS53aXphcmQucHVibGlzaCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotICAgICAgCi0gICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbCIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9IioiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5wdWJsaXNoLndzZGxyZXMiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVBQ1RJT05fUFVCTElTSF9XU0RMIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJhZGRpdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5wdWJsaXNoIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0gICAgICAKLSAgICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2NsaWVudC5TZXJ2aWNlUmVmIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iKiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnB1Ymxpc2guc2VydmljZXJlZiI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iJUFDVElPTl9QVUJMSVNIX1dTREwiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgICAgbWVudWJhclBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnB1Ymxpc2giPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLQotICAgPC9leHRlbnNpb24+Ci0gICAKLSAgIDwhLS0gUHJlZmVyZW5jZSBQYWdlcyAtLT4KLQotICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UudWkucHJlZmVyZW5jZVBhZ2VzIj4KLSAgICAgIDxwYWdlCi0gICAgICAgICAgICBuYW1lPSIlUFJFRkVSRU5DRV9DQVRFR09SWV9TQ0VOQVJJT19ERUZBVUxUUyIKLSAgICAgICAgICAgIGNhdGVnb3J5PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkucHJlZmVyZW5jZXMubmFtZSIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkucHJlZmVyZW5jZXMuU2NlbmFyaW9EZWZhdWx0c1ByZWZlcmVuY2VQYWdlIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5wcmVmZXJlbmNlcy5TY2VuYXJpb0RlZmF1bHRzUHJlZmVyZW5jZVBhZ2UiPgotICAgICAgPC9wYWdlPgotICAgPC9leHRlbnNpb24+Ci0gICAKLQk8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0UmVnaXN0cnkiPgotICAgICAgIDx3aWRnZXRGYWN0b3J5ICAgCi0gICAgICAgICAgICAgaWQ9IlN0YXJ0U2VydmljZVNlcnZlciIKLSAgICAgICAgICAgICBpbnNlcnRCZWZvcmVDb21tYW5kSWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5leHRlbnNpb24uUHJlU2VydmljZVJ1bkNvbW1hbmQiCi0gICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5zZXJ2ZXIuU3RhcnRTZXJ2ZXJXaWRnZXRGYWN0b3J5Ii8+Ci0gICAgPC9leHRlbnNpb24+IAotICAgIAotICAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuYW50U2NlbmFyaW8iPgotICAgICAgICA8YW50U2NlbmFyaW8KLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkuYW50LkFudFNlcnZpY2VSb290Q29tbWFuZEZyYWdtZW50IgotICAgICAgICAgICAgc2NlbmFyaW9UeXBlPSJzZXJ2aWNlIi8+Ci0gICAgIDwvZXh0ZW5zaW9uPiAgICAKLSAgICAKLSAgICAgPGV4dGVuc2lvbgotICAgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmFudERhdGFNYXBwaW5nIj4KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkluaXRpYWxTZWxlY3Rpb24iCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMuU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJJbml0aWFsU2VsZWN0aW9uIgotICAgICAgICAgICAgICByZXF1aXJlZD0idHJ1ZSIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZzJTZWxlY3Rpb25UcmFuc2Zvcm1lciIvPgotICAgICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iSW5pdGlhbFNlbGVjdGlvbiIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9Ik9iamVjdFNlbGVjdGlvbiIKLSAgICAgICAgICAgICAgcmVxdWlyZWQ9InRydWUiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyU2VsZWN0aW9uVHJhbnNmb3JtZXIiLz4gICAgICAgICAgICAgIAotCQk8bWFwCi0gICAgICAgICAgICAgIGtleT0iUHJvamVjdCIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IlByb2plY3QiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmdUb0lQcm9qZWN0VHJhbnNmb3JtZXIiLz4KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IkNvbXBvbmVudE5hbWUiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0Lk9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJDb21wb25lbnROYW1lIi8+Ci0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJTZXJ2aWNlLlJ1bnRpbWVJZCIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy5TZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iU2VydmljZVR5cGVSdW50aW1lU2VydmVyIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nMlR5cGVSdW50aW1lU2VydmVyTW9kaWZpZXIiLz4KLSAgICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IlNlcnZpY2UuU2VydmVySWQiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMuU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZzJUeXBlUnVudGltZVNlcnZlck1vZGlmaWVyIi8+Ci0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJTZXJ2aWNlLlR5cGVJZCIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy5TZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iU2VydmljZVR5cGVSdW50aW1lU2VydmVyIgotICAgICAgICAgICAgICB0cmFuc2Zvcm09Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nMlR5cGVSdW50aW1lU2VydmVyTW9kaWZpZXIiLz4gICAgICAgICAgICAgCi0gICAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJHZW5lcmF0ZVByb3h5IgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzLlNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJHZW5lcmF0ZVByb3h5Ii8+Ci0gICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iU2VydmljZS5SdW50aW1lSWQiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5TZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZzJUeXBlUnVudGltZVNlcnZlck1vZGlmaWVyIi8+Ci0gICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJTZXJ2aWNlLlNlcnZlcklkIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllciIvPgotICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IlNlcnZpY2UuVHlwZUlkIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllciIvPgotICAgICAgICAgICAgICAKLSAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJTZXJ2aWNlUHJvamVjdE5hbWUiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMucnVudGltZS5TZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJTZXJ2aWNlUHJvamVjdE5hbWUiLz4KLSAgICAgICAgICAgICAgCi0gICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iU2VydmljZVByb2plY3ROYW1lIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJTZXJ2aWNlUHJvamVjdE5hbWUiLz4KLSAgICAgICAgICAgICAgCi0gICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iU2VydmljZUNvbXBvbmVudE5hbWUiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5TZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IlNlcnZpY2VDb21wb25lbnROYW1lIi8+Ci0KLSAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJTZXJ2aWNlRWFyUHJvamVjdE5hbWUiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5TZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IlNlcnZpY2VFYXJQcm9qZWN0TmFtZSIvPgotICAgICAgICAgICAgICAKLSAgICAgIDxtYXAKLSAgICAgICAgICAgICAga2V5PSJTZXJ2aWNlRWFyQ29tcG9uZW50TmFtZSIKLSAgICAgICAgICAgICAgb3BlcmF0aW9uPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLlNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kIgotICAgICAgICAgICAgICBwcm9wZXJ0eT0iU2VydmljZUVhckNvbXBvbmVudE5hbWUiLz4gICAgICAgICAgICAgIAotICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IlNlcnZpY2UuUnVudGltZUlkIgotICAgICAgICAgICAgICBvcGVyYXRpb249Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuU2VydmVyRXh0ZW5zaW9uRnJhZ21lbnQiCi0gICAgICAgICAgICAgIHByb3BlcnR5PSJTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIiCi0gICAgICAgICAgICAgIHRyYW5zZm9ybT0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllciIvPgotICAgICAgPG1hcAotICAgICAgICAgICAgICBrZXk9IlNlcnZpY2UuU2VydmVySWQiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5TZXJ2ZXJFeHRlbnNpb25GcmFnbWVudCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZzJUeXBlUnVudGltZVNlcnZlck1vZGlmaWVyIi8+Ci0gICAgICA8bWFwCi0gICAgICAgICAgICAgIGtleT0iU2VydmljZS5UeXBlSWQiCi0gICAgICAgICAgICAgIG9wZXJhdGlvbj0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5TZXJ2ZXJFeHRlbnNpb25GcmFnbWVudCIKLSAgICAgICAgICAgICAgcHJvcGVydHk9IlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIKLSAgICAgICAgICAgICAgdHJhbnNmb3JtPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlN0cmluZzJUeXBlUnVudGltZVNlcnZlck1vZGlmaWVyIi8+Ci0gICAgIDwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL0NyZWF0aW9uVUkucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvQ3JlYXRpb25VSS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjdkOThjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvQ3JlYXRpb25VSS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIFdpemFyZCBwYWdlcwotIwotUEFHRV9USVRMRV9PQkpFQ1RfU0VMRUNUSU9OPU9iamVjdCBTZWxlY3Rpb24gUGFnZQotUEFHRV9ERVNDX09CSkVDVF9TRUxFQ1RJT049T2JqZWN0IFNlbGVjdGlvbiBQYWdlCi0KLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL0NyZWF0aW9uVUlNZXNzYWdlcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9DcmVhdGlvblVJTWVzc2FnZXMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIxOWU4Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL0NyZWF0aW9uVUlNZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBDcmVhdGlvblVJTWVzc2FnZXMgZXh0ZW5kcyBOTFMgewotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5DcmVhdGlvblVJIjsvLyROT04tTkxTLTEkCi0KLQlwcml2YXRlIENyZWF0aW9uVUlNZXNzYWdlcygpIHsKLQkJLy8gRG8gbm90IGluc3RhbnRpYXRlCi0JfQotCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9USVRMRV9PQkpFQ1RfU0VMRUNUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBBR0VfREVTQ19PQkpFQ1RfU0VMRUNUSU9OOwotCi0Jc3RhdGljIHsKLQkJTkxTLmluaXRpYWxpemVNZXNzYWdlcyhCVU5ETEVfTkFNRSwgQ3JlYXRpb25VSU1lc3NhZ2VzLmNsYXNzKTsKLQl9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9hbnQvQW50U2VydmljZVJvb3RDb21tYW5kRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvYW50L0FudFNlcnZpY2VSb290Q29tbWFuZEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YWExMDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9hbnQvQW50U2VydmljZVJvb3RDb21tYW5kRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDUzMCAgIDE0NDM1OCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA1MzAgICAxNDQzNTAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwODIzICAgMTU0OTM4IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwODI1ICAgMTU1MTE0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYxMDExICAgMTU5MjgzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBwcm9qZWN0IG5vdCBhc3NvY2lhdGVkIHRvIEVBUiB3aGVuIHVzaW5nIGFudCBvbiBjb21tYW5kLWxpbmUKLSAqIDIwMDcwNTAxICAgMTc4MTI5IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCB3b3Jrc3BhY2UgcmVwb3J0cyAiY3Jhc2ggZGV0ZWN0ZWQiIGFmdGVyIHJ1bm5pbmcgV1MgYW50IHRhc2sgKGNtZGxpbmUpCi0gKiAyMDA4MDcyOSAgIDI0MTI3NSBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBObyBWYWxpZGF0aW9uIGVycm9yIGdlbmVyYXRpbmcgV2ViIFNlcnZpY2UgY2xpZW50IGlmIGRpYWxvZyBoaWRkZW4KLSAqIDIwMDgwOTI1ICAgMjQyMzEyIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIENhbm5vdCBjcmVhdGUgQlVKQiBXUyBmcm9tIEJlYW4gaW4gSmF2YSBwcm9qZWN0IHVzaW5nIEFOVCB0YXNrcwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5hbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5BbnREZWZhdWx0aW5nT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLkFudFJlc3RvcmluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuQW50V29ya3NwYWNlU2F2ZUNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1hbmQuTGlzdE9wdGlvbnNDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uRmluaXNoRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1vbi5TY2VuYXJpb0NsZWFudXBDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5zZWxlY3Rpb24uU2VsZWN0aW9uVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5TZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLlNlcnZlckV4dGVuc2lvbkZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuU2VydmVyRXh0ZW5zaW9uT3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuT2JqZWN0U2VsZWN0aW9uRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0Lk9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLmV4dGVuc2lvbi5QcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLmV4dGVuc2lvbi5TZXJ2aWNlUm9vdEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzLlNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzLlNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMucnVudGltZS5TZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci0gCi0vKioKLSAqIAotICogQ29tbWFuZCBmcmFnbWVudCBmb3IgZ2VuZXJhdGluZyB3ZWIgc2VydmljZSB0b3AgZG93biBvciBib3R0b20gdXAgdXNpbmcgQW50IHRhc2suCi0gKiBSdW4gaGVhZGxlc3MgRWNsaXBzZSBvciB3aXRoaW4gd29ya3NwYWNlIHVzaW5nIFJ1biBhcyBBbnQgQnVpbGQuICBUaGlzIGZyYWdtZW50IGVsaW1pbmF0ZXMgYW55IFVJIHNwZWNpZmljIAotICogY29tbWFuZHMgYW5kIGRhdGEgbWFwcGluZ3MgYmV0d2VlbiBjb21tYW5kcyBhbmQgd2lkZ2V0cy4gIFdpZGdldCB0byBjb21tYW5kIG1hcHBpbmdzIGFyZQotICogcmVwbGFjZWQgYnkgQW50IHByb3BlcnR5IGZpbGUgdG8gY29tbWFuZCBtYXBwaW5ncyB3aGljaCBhcmUgZW5hYmxlZCBieSBhIGFudERhdGFNYXBwaW5nIGV4dGVuc2lvbiAKLSAqIHBvaW50IGluIHRoZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYgcGx1Z2luLgotICogCi0gKiBAYXV0aG9yIGpvYW4KLSAqCi0gKi8KLQotcHVibGljIGNsYXNzIEFudFNlcnZpY2VSb290Q29tbWFuZEZyYWdtZW50IGV4dGVuZHMgU2VxdWVuY2VGcmFnbWVudAotewotCQotICBwdWJsaWMgQW50U2VydmljZVJvb3RDb21tYW5kRnJhZ21lbnQoKQotICB7IAotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2NlbmFyaW9DbGVhbnVwQ29tbWFuZCgpLCAiIiApKTsKLSAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudChuZXcgTGlzdE9wdGlvbnNDb21tYW5kKCksICIiKSk7Ci0gICAgYWRkIChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IEFudERlZmF1bHRpbmdPcGVyYXRpb24oKSwgIiIpKTsgICAgCi0gICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpLCAiIikpOwotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZCgpLCAiIiApKTsgICAgCi0gICAgYWRkKCBuZXcgT2JqZWN0U2VsZWN0aW9uRnJhZ21lbnQoKSApOwotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kKCksICIiKSk7Ci0gICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCgpLCAiIikpOyAgIAotICAgIGFkZCggbmV3IFNlcnZpY2VSb290RnJhZ21lbnQoKSApOwotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2VydmVyRXh0ZW5zaW9uT3V0cHV0Q29tbWFuZCgpLCAiIiApKTsKLSAgICBhZGQobmV3IEZpbmlzaEZyYWdtZW50KCkpOwotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgQW50UmVzdG9yaW5nQ29tbWFuZCgpLCAiIiApKTsKLSAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IFNjZW5hcmlvQ2xlYW51cENvbW1hbmQoKSwgIiIgKSk7Ci0gICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBBbnRXb3Jrc3BhY2VTYXZlQ29tbWFuZCgpLCAiIikpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkKLSAgeyAJCi0JZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIk9iamVjdFNlbGVjdGlvbiIsIFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluaXRpYWxTZWxlY3Rpb24iLCBudWxsKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiT2JqZWN0U2VsZWN0aW9uIiwgU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50SW5pdGlhbFNlbGVjdGlvbiIsIG51bGwpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSW5pdGlhbFByb2plY3QiLCBudWxsKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEluaXRpYWxQcm9qZWN0IiwgbnVsbCk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIkNvbXBvbmVudE5hbWUiLCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJbml0aWFsQ29tcG9uZW50TmFtZSIsIG51bGwpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJDb21wb25lbnROYW1lIiwgU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50SW5pdGlhbENvbXBvbmVudE5hbWUiLCBudWxsKTsgICAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZXNQYXJzZXIiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyApOyAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSW5pdGlhbFByb2plY3QiLCBudWxsKTsKLQkKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlJlc291cmNlQ29udGV4dCIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRGV2ZWxvcFNlcnZpY2UiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkFzc2VtYmxlU2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRGVwbG95U2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgICAJCi0gICAgLy8gTWFwIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIsIE9iamVjdFNlbGVjdGlvbkZyYWdtZW50LmNsYXNzLCAiVHlwZVJ1bnRpbWVTZXJ2ZXIiLCBudWxsKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiQ2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIiLCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIiLCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJTdGFydFNlcnZpY2UiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJEZXZlbG9wU2VydmljZSIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiQXNzZW1ibGVTZXJ2aWNlIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJEZXBsb3lTZXJ2aWNlIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgICAKLSAgICAvL01hcCBBbnREZWZhdWx0aW5nRnJhZ21lbnQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhBbnREZWZhdWx0aW5nT3BlcmF0aW9uLmNsYXNzLCAiU2VydmljZUlkc0ZpeGVkIiwgU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhBbnREZWZhdWx0aW5nT3BlcmF0aW9uLmNsYXNzLCAiQ2xpZW50SWRzRml4ZWQiLCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEFudERlZmF1bHRpbmdPcGVyYXRpb24uY2xhc3MsICJTdGFydFNlcnZpY2UiLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKEFudERlZmF1bHRpbmdPcGVyYXRpb24uY2xhc3MsICJJbnN0YWxsU2VydmljZSIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQW50RGVmYXVsdGluZ09wZXJhdGlvbi5jbGFzcywgIkRlcGxveVNlcnZpY2UiLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgIAotICAgIC8vIE1hcCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7ICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VQcm9qZWN0TmFtZSIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlRWFyUHJvamVjdE5hbWUiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZUNvbXBvbmVudE5hbWUiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZUVhckNvbXBvbmVudE5hbWUiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZUoyRUVWZXJzaW9uIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VOZWVkRUFSIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIAotICAgIAotICAgIC8vIE1hcCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVR5cGVSdW50aW1lU2VydmVyIiwgU2VydmVyRXh0ZW5zaW9uRnJhZ21lbnQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJbml0aWFsUHJvamVjdCIsIG51bGwpOwotICAgIAkgIAotCS8vIFNldHVwIHRoZSBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuCQotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiU3RhcnRTZXJ2aWNlIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MpOyAgICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzKTsJCQkKLQkKLQlkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZUNvbXBvbmVudFR5cGUiLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJNb2R1bGVUeXBlIiwgbnVsbCk7Ci0JZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VDb21wb25lbnRUeXBlIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MgKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlUnVudGltZUlkIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluaXRpYWxQcm9qZWN0IiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzICk7Ci0JZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVR5cGVSdW50aW1lU2VydmVyIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzICk7Ci0JZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVJ1bnRpbWVJZCIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcyApOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VKMkVFVmVyc2lvbiIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIG51bGwgKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0RUFSIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiRWFyIiwgbnVsbCApOwotICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkRldmVsb3BTZXJ2aWNlIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJBc3NlbWJsZVNlcnZpY2UiLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgIAotICAgIAotICAgIAotCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiT2JqZWN0U2VsZWN0aW9uIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiU2VsZWN0aW9uIiwgbmV3IFNlbGVjdGlvblRyYW5zZm9ybWVyKCkgKTsKLQlkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIFNlcnZlckV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MgKTsKLQotICAgIC8vIE1hcCBTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kIGZvciBTZXJ2ZXJTdGFydCgpCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2ZXJQcm9qZWN0RUFSIiwgU2VydmVyRXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIkVhclByb2plY3ROYW1lIiwgbnVsbCk7Ci0gICAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQW50RGVmYXVsdGluZ09wZXJhdGlvbi5jbGFzcywgIlJlbmRlcmVyVmFsaWRhdGlvbiIsIEFudFJlc3RvcmluZ0NvbW1hbmQuY2xhc3MpOwotICAgIAotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvZXh0ZW5zaW9uL1ByZVNlcnZpY2VBc3NlbWJsZUNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvZXh0ZW5zaW9uL1ByZVNlcnZpY2VBc3NlbWJsZUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJkNzY1Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL2V4dGVuc2lvbi9QcmVTZXJ2aWNlQXNzZW1ibGVDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMTMxIDEyMTA3MSAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lciAgICAgCi0gKiAyMDA2MDMzMCAxMjg4MjcgICBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA1MjQgICAxNDE5MjUga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MDUwOSAgIDE4MjI3NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzEyMTgJICAyMDAxOTMgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwNzEyMjAgICAyMTM2NDAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMzI1ICAgMjIyNDczIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBDcmVhdGUgRUFSIHZlcnNpb24gYmFzZWQgb24gdGhlIHZlcnNpb24gb2YgbW9kdWxlcyB0byBiZSBhZGRlZAotICogMjAwOTA0MTUgICAyNjQ2ODMgZGFuYWlsLmJyYW5la292QHNhcC5jb20gLSBEYW5haWwgQnJhbmVrb3YKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5leHRlbnNpb247Ci0KLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uub3BlcmF0aW9uLklSdW5uYWJsZVdpdGhQcm9ncmVzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5vcGVyYXRpb24uTW9kYWxDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLnBsdWdpbi5JSjJFRU1vZHVsZUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQXNzb2NpYXRlTW9kdWxlV2l0aEVBUkNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkNyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRNZXJnZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSU1lcmdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlU2NlbmFyaW87Ci0KLXB1YmxpYyBjbGFzcyBQcmVTZXJ2aWNlQXNzZW1ibGVDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0JcHJpdmF0ZSBJV2ViU2VydmljZQkJCQl3ZWJTZXJ2aWNlXzsKLQlwcml2YXRlIFN0cmluZwkJCQkJCXByb2plY3RfOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgIG1vZHVsZV87Ci0JcHJpdmF0ZSBTdHJpbmcJCQkJCQllYXJQcm9qZWN0XzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBlYXJfOwotICBwcml2YXRlIElDb250ZXh0ICAgICAgICAgIGNvbnRleHRfOwotICBwcml2YXRlIElQcm9qZWN0CQlpbml0aWFsUHJvamVjdF87Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLQkgIElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0JICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JICAKLQkgIC8vIEZvciB0b3AgZG93biBzY2VuYXJpb3MsIG1lcmdlIHRoZSBjb250ZW50IG9mIHRoZSBza2VsZXRvbiBmaWxlcyB3aXRoIHRoZSBwcmV2aW91cyB2ZXJzaW9uIHN0b3JlZC4JICAKLQkgIC8vIFRoZSBXZWIgc2VydmljZSBleHRlbnNpb25zIHRyaWdnZXJzIHRoZSBzdG9yaW5nIG9mIHRoZSBjb250ZW50IG9mIHRoZSBvbGQgc2tlbGV0b24gZmlsZSBieSAKLQkgIC8vIGNhbGxpbmcgV2ViU2VydmljZUluZm8uc2V0SW1wbFVSTHMoKSBiZWZvcmUgdGhlIG5ldyBza2VsZXRvbiBpcyBnZW5lcmF0ZWQgaW4gdGhlIGV4dGVuc2lvbidzIAotCSAgLy8gZGV2ZWxvcCgpIG1ldGhvZC4KLQkgIAotCSAgaWYgKGNvbnRleHRfLmdldFNjZW5hcmlvKCkuZ2V0VmFsdWUoKSA9PSBXZWJTZXJ2aWNlU2NlbmFyaW8uVE9QRE9XTikgewotCQkgIFBlcnNpc3RlbnRNZXJnZUNvbnRleHQgbWVyZ2VDb250ZXh0ID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRNZXJnZUNvbnRleHQoKTsKLQkJICBJTWVyZ2VyIG1lcmdlciA9IHdlYlNlcnZpY2VfLmdldFdlYlNlcnZpY2VJbmZvKCkuZ2V0TWVyZ2VyKCk7Ci0JCSAgaWYgKG1lcmdlQ29udGV4dC5pc1NrZWxldG9uTWVyZ2VFbmFibGVkKCkgJiYgbWVyZ2VyICE9IG51bGwpIHsKLQkJCSAgc3RhdHVzID0gbWVyZ2VyLm1lcmdlKG1vbml0b3IsIGdldEVudmlyb25tZW50KCkuZ2V0U3RhdHVzSGFuZGxlcigpKTsJCi0JCQkgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpIHsKLQkJCQkgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJCSAgcmV0dXJuIHN0YXR1czsKLQkJCSAgfQkJCi0JCSAgfQotCSAgfQotCSAgCi0JICBpZiAoY29udGV4dF8uZ2V0QXNzZW1ibGUoKSkgewotCi0JCSAgLy8gQ2hlY2sgaWYgRUFSIG1vZHVsZSBpcyByZXEnZCwgaWUuICE9bnVsbAotCQkgIGlmIChlYXJQcm9qZWN0Xz09bnVsbCkKLQkJCSAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0KLQotCi0JCSAgLy9DcmVhdGUgdGhlIHNlcnZpY2UgRUFSIG1vZHVsZQotCi0JCSAgQ3JlYXRlRmFjZXRlZFByb2plY3RDb21tYW5kIGNvbW1hbmQgPSBuZXcgQ3JlYXRlRmFjZXRlZFByb2plY3RDb21tYW5kKCk7Ci0JCSAgY29tbWFuZC5zZXRQcm9qZWN0TmFtZShlYXJQcm9qZWN0Xyk7Ci0JCSAgY29tbWFuZC5zZXRUZW1wbGF0ZUlkKElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FQVJfVEVNUExBVEUpOwotCi0JCSAgSVByb2plY3QgcHJvamVjdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdChwcm9qZWN0Xyk7Ci0JCSAgY29tbWFuZC5zZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoRmFjZXRVdGlscy5nZXRSZXF1aXJlZEVBUkZhY2V0VmVyc2lvbnMocHJvamVjdCkpOyAKLQotCQkgIGNvbW1hbmQuc2V0U2VydmVyRmFjdG9yeUlkKHdlYlNlcnZpY2VfLmdldFdlYlNlcnZpY2VJbmZvKCkuZ2V0U2VydmVyRmFjdG9yeUlkKCkpOwotCQkgIGNvbW1hbmQuc2V0U2VydmVySW5zdGFuY2VJZCh3ZWJTZXJ2aWNlXy5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldFNlcnZlckluc3RhbmNlSWQoKSk7Ci0JCSAgc3RhdHVzID0gY29tbWFuZC5leGVjdXRlKCBtb25pdG9yLCBhZGFwdGFibGUgKTsKLQkJICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotCQkgIHsKLQkJCSAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKCBzdGF0dXMgKTsKLQkJCSAgcmV0dXJuIHN0YXR1czsKLQkJICB9ICAgICAgICAgICAgICAgIAotCi0JCSAgLy9Bc3NvY2lhdGUgdGhlIHNlcnZpY2UgbW9kdWxlIGFuZCBzZXJ2aWNlIEVBUgotCQkgIEFzc29jaWF0ZU1vZHVsZVdpdGhFQVJDb21tYW5kIGFzc29jaWF0ZUNvbW1hbmQgPSBuZXcgQXNzb2NpYXRlTW9kdWxlV2l0aEVBUkNvbW1hbmQoKTsKLQkJICBhc3NvY2lhdGVDb21tYW5kLnNldFByb2plY3QocHJvamVjdF8pOwotCQkgIGFzc29jaWF0ZUNvbW1hbmQuc2V0TW9kdWxlKG1vZHVsZV8pOwotCQkgIGFzc29jaWF0ZUNvbW1hbmQuc2V0RUFSUHJvamVjdChlYXJQcm9qZWN0Xyk7Ci0JCSAgYXNzb2NpYXRlQ29tbWFuZC5zZXRFYXIoZWFyXyk7Ci0JCSAgYXNzb2NpYXRlQ29tbWFuZC5zZXRFbnZpcm9ubWVudCggZW52aXJvbm1lbnQgKTsKLQkJICBzdGF0dXMgPSBhc3NvY2lhdGVDb21tYW5kLmV4ZWN1dGUoIG1vbml0b3IsIG51bGwgKTsKLQkJICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCk9PVN0YXR1cy5FUlJPUikKLQkJICB7Ci0JCQkgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwkJICAKLQkJICB9CQkJCi0KLQkJICAvL21ha2Ugc3VyZSB0aGUgZWFyIGZpbGUgaGFzIGJlZW4gY3JlYXRlZC4KLQkJICAKLQkJICBpZihpbml0aWFsUHJvamVjdF8gIT0gbnVsbCAmJiBGYWNldFV0aWxzLmlzSmF2YVByb2plY3QoaW5pdGlhbFByb2plY3RfKSkgewotCQkJICBJUHJvamVjdCBlYXJQcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KGVhclByb2plY3RfKTsKLQkJCSAgYWRkSmF2YVByb2plY3RBc1V0aWxpdHlJbk1vZGFsQ3R4KGluaXRpYWxQcm9qZWN0XywgZWFyUHJvamVjdCwgbW9uaXRvcik7Ci0JCSAgfQkJIAotCSAgCi0JICB9Ci0JICByZXR1cm4gc3RhdHVzOwkgIAotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgYWRkSmF2YVByb2plY3RBc1V0aWxpdHlJbk1vZGFsQ3R4KGZpbmFsIElQcm9qZWN0IHByb2plY3RUb0FkZCwgZmluYWwgSVByb2plY3QgZWFyUHJvamVjdCwgZmluYWwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKQotCXsKLQkJZmluYWwgSVJ1bm5hYmxlV2l0aFByb2dyZXNzIGFkZFJ1bm5hYmxlID0gbmV3IElSdW5uYWJsZVdpdGhQcm9ncmVzcygpCi0JCXsKLQkJCXB1YmxpYyB2b2lkIHJ1bihmaW5hbCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cyBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbgotCQkJewotCQkJCUoyRUVVdGlscy5hZGRKYXZhUHJvamVjdEFzVXRpbGl0eUphcihwcm9qZWN0VG9BZGQsIGVhclByb2plY3QsIG1vbml0b3IpOwotCQkJfQotCQl9OwotCi0JCXRyeQotCQl7Ci0JCQlNb2RhbENvbnRleHQucnVuKGFkZFJ1bm5hYmxlLCB0cnVlLCBtb25pdG9yLCBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldERpc3BsYXkoKSk7Ci0JCX0gY2F0Y2ggKEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gZSkKLQkJewotCQkJLy8gVGhlIGV4ZWN1dGVkIHJ1bm5hYmxlIGRvZXMgbm90IHRocm93IGNoZWNrZWQgZXhjZXB0aW9ucyB0aGVyZWZvcmUgaWYgdGhpcyBoYXBwZW5zLCB0aGlzIGlzIGEgcnVudGltZSBleGNlcHRpb24KLQkJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUpOwotCQl9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKQotCQl7Ci0JCQkvLyBUaGUgZXhlY3V0ZWQgcnVubmFibGUgZG9lcyBub3Qgc3VwcG9ydCBjYW5jZWxsYXRpb24gYW5kIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbgotCQkJdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihlKTsKLQkJfQotCX0KLQkKLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFByb2plY3QoSVByb2plY3QgaW5pdGlhbFByb2plY3QpCi0gIHsKLQkgIGluaXRpYWxQcm9qZWN0XyA9IGluaXRpYWxQcm9qZWN0OyAgCi0gIH0JCi0gICAgCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRJbml0aWFsUHJvamVjdCgpCi0gIHsKLQkgIHJldHVybiBpbml0aWFsUHJvamVjdF87ICAKLSAgfQkKLSAgCi0gIHB1YmxpYyB2b2lkIHNldFByb2plY3QoIFN0cmluZyBwcm9qZWN0ICkKLSAgewotCSAgcHJvamVjdF8gPSBwcm9qZWN0OwotICB9Ci0JICAKLSAgcHVibGljIHZvaWQgc2V0TW9kdWxlKCBTdHJpbmcgbW9kdWxlICkKLSAgewotCSAgbW9kdWxlXyA9IG1vZHVsZTsKLSAgfQkKLQkKLSAgcHVibGljIHZvaWQgc2V0RWFyUHJvamVjdCggU3RyaW5nIGVhclByb2plY3QgKQotICB7Ci0JICBlYXJQcm9qZWN0XyA9IGVhclByb2plY3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVhciggU3RyaW5nIGVhciApCi0gIHsKLQkgIGVhcl8gPSBlYXI7ICAKLSAgfQotCQotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlKCBJV2ViU2VydmljZSB3ZWJTZXJ2aWNlICkKLSAgewotCSAgd2ViU2VydmljZV8gPSB3ZWJTZXJ2aWNlOyAgCi0gIH0JCi0gIAotICBwdWJsaWMgdm9pZCBzZXRDb250ZXh0IChJQ29udGV4dCBjb250ZXh0KSB7Ci0JICBjb250ZXh0XyA9IGNvbnRleHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvZXh0ZW5zaW9uL1ByZVNlcnZpY2VEZXBsb3lDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL2V4dGVuc2lvbi9QcmVTZXJ2aWNlRGVwbG95Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTU1NzU5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvZXh0ZW5zaW9uL1ByZVNlcnZpY2VEZXBsb3lDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkuZXh0ZW5zaW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotCi1wdWJsaWMgY2xhc3MgUHJlU2VydmljZURlcGxveUNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIElDb250ZXh0ICAgIGNvbnRleHRfOwotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotICAgICAgaWYgKGNvbnRleHRfLmdldERlcGxveSgpKQotICAgICAgewotICAgICAgICAvL0lmIGFuZCB3aGVuIHRoZXJlIGFyZSBmcmFtZXdvcmsgc3BlY2lmaWMgZGVwbG95IHRoaW5ncyB0byBiZSBkb25lLAotICAgICAgICAvL2RvIHRoZW0gaGVyZS4KLSAgICAgIH0KLSAgICAgIAotCSAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENvbnRleHQoSUNvbnRleHQgY29udGV4dCkKLSAgewotICAgICAgY29udGV4dF89Y29udGV4dDsKLSAgfSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL2V4dGVuc2lvbi9QcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvZXh0ZW5zaW9uL1ByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWJkZTQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvZXh0ZW5zaW9uL1ByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDEzMSAxMjEwNzEgICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwMjIxICAgMTE5MTExIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA1MTYgICAxMjY5NjUga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MDEyMyAgIDE2NzQ4NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICogMjAwNzA0MDMgICAxNzM2NTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcwNTA5ICAgMTgyMjc0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MTIxMgkgIDIwMDE5MyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA3MTIyMCAgIDIxMzY0MCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAzMjYgICAyMjEzNjQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNzI0ICAgMjQxMjc1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIFZhbGlkYXRlIFdTREwgYmVmb3JlIGRvaW5nIG1ham9yIFdlYiBzZXJ2aWNlIHByb2Nlc3NpbmcuCi0gKiAyMDA4MTAwMSAgIDI0Mzg2OSBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBXZWIgU2VydmljZSB0b29scyBhbGxvd2luZyBtaXhlZCBKMkVFIGxldmVscwotICogMjAwOTA0MTUgICAyNjQ2ODMgZGFuYWlsLmJyYW5la292QHNhcC5jb20gLSBEYW5haWwgQnJhbmVrb3YKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5leHRlbnNpb247Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5vcGVyYXRpb24uSVJ1bm5hYmxlV2l0aFByb2dyZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLm9wZXJhdGlvbi5Nb2RhbENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkNyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5SZXF1aXJlZEZhY2V0VmVyc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLldTRExQYXJzZXJGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5Db25zdW1wdGlvblVJTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuVGltZWRXU0RMU2VsZWN0aW9uQ29uZGl0aW9uQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5TZXJ2aWNlUnVudGltZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuVHlwZVJ1bnRpbWVTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklMb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuY29tbW9uLkhUVFBVdGlsaXR5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlRW50aXR5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JTWVyZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LlNpbXBsZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZUluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VTdGF0ZTsKLQotcHVibGljIGNsYXNzIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIAotewotICBwcml2YXRlIFR5cGVSdW50aW1lU2VydmVyIHR5cGVSdW50aW1lU2VydmVyXzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBzZXJ2aWNlUnVudGltZUlkXzsKLSAgcHJpdmF0ZSBJQ29udGV4dCAgICAgICAgICBjb250ZXh0XzsKLSAgcHJpdmF0ZSBJU2VsZWN0aW9uICAgICAgICBzZWxlY3Rpb25fOwotICBwcml2YXRlIFN0cmluZwkJCXByb2plY3RfOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgIG1vZHVsZV87Ci0gIHByaXZhdGUgU3RyaW5nCQkJbW9kdWxlVHlwZV87Ci0gIHByaXZhdGUgU3RyaW5nCQkJZWFyUHJvamVjdF87Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgZWFyXzsKLSAgcHJpdmF0ZSBJUHJvamVjdAkJCWluaXRpYWxQcm9qZWN0XzsKLQkKLSAgcHJpdmF0ZSBJV2ViU2VydmljZSAgICAgICB3ZWJTZXJ2aWNlXzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICBqMmVlTGV2ZWxfOwotICBwcml2YXRlIFJlc291cmNlQ29udGV4dCAgIHJlc291cmNlQ29udGV4dF87Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gZGV2ZWxvcF87Ci0gIHByaXZhdGUgYm9vbGVhbiBhc3NlbWJsZV87Ci0gIHByaXZhdGUgYm9vbGVhbiBkZXBsb3lfOwotICBwcml2YXRlIGJvb2xlYW4gaW5zdGFsbF87Ci0gIHByaXZhdGUgYm9vbGVhbiBydW5fOwotICBwcml2YXRlIGJvb2xlYW4gY2xpZW50XzsKLSAgcHJpdmF0ZSBib29sZWFuIHRlc3RfOwotICBwcml2YXRlIGJvb2xlYW4gcHVibGlzaF87Ci0gIAotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0JICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JICBpZiAoZGV2ZWxvcF8pIHsKLQkJICBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpOwotCi0JCSAgLy8gU3BsaXQgdXAgdGhlIHByb2plY3QgYW5kIG1vZHVsZQotCQkgIGludCBpbmRleCA9IG1vZHVsZV8uaW5kZXhPZigiLyIpOwotCQkgIGlmIChpbmRleCE9LTEpewotCQkJICBwcm9qZWN0XyA9IG1vZHVsZV8uc3Vic3RyaW5nKDAsaW5kZXgpOwotCQkJICBtb2R1bGVfID0gbW9kdWxlXy5zdWJzdHJpbmcoaW5kZXgrMSk7Ci0JCSAgfQotCi0JCSAgaWYgKGVhcl8hPW51bGwgJiYgZWFyXy5sZW5ndGgoKT4wKQotCQkgIHsKLQkJCSAgaW50IGVhckluZGV4ID0gZWFyXy5pbmRleE9mKCIvIik7Ci0JCQkgIGlmIChlYXJJbmRleCE9LTEpIHsKLQkJCQkgIGVhclByb2plY3RfID0gZWFyXy5zdWJzdHJpbmcoMCxlYXJJbmRleCk7Ci0JCQkJICBlYXJfID0gZWFyXy5zdWJzdHJpbmcoZWFySW5kZXgrMSk7Ci0JCQkgIH0KLQkJICB9Ci0KLQotCQkgIElXZWJTZXJ2aWNlUnVudGltZSB3c3J0ICAgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2aWNlUnVudGltZSggc2VydmljZVJ1bnRpbWVJZF8gKTsKLQkJICBXZWJTZXJ2aWNlSW5mbyAgICAgd3NJbmZvID0gbmV3IFdlYlNlcnZpY2VJbmZvKCk7Ci0KLQkJICB3c0luZm8uc2V0U2VydmVyRmFjdG9yeUlkKCB0eXBlUnVudGltZVNlcnZlcl8uZ2V0U2VydmVySWQoKSApOwotCQkgIHdzSW5mby5zZXRTZXJ2ZXJJbnN0YW5jZUlkKCB0eXBlUnVudGltZVNlcnZlcl8uZ2V0U2VydmVySW5zdGFuY2VJZCgpKTsKLQkJICB3c0luZm8uc2V0U3RhdGUoIFdlYlNlcnZpY2VTdGF0ZS5VTktOT1dOX0xJVEVSQUwgKTsKLQkJICB3c0luZm8uc2V0V2ViU2VydmljZVJ1bnRpbWVJZCggdHlwZVJ1bnRpbWVTZXJ2ZXJfLmdldFJ1bnRpbWVJZCgpICk7Ci0JCSAgCi0JCSAgZW52aXJvbm1lbnQuZ2V0TG9nKCkubG9nKElMb2cuSU5GTywgIndzX2ZyYW1ld29yayIsIDUxMDcsIHRoaXMsICJQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQiLCAic2VydmljZVJ1bnRpbWVJZF8gPSAiKyBzZXJ2aWNlUnVudGltZUlkXyk7Ci0JCSAgU2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yIHNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciA9ICBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKHNlcnZpY2VSdW50aW1lSWRfKTsKLQkJICBJTWVyZ2VyIG1lcmdlciA9IHNlcnZpY2VSdW50aW1lRGVzY3JpcHRvci5nZXRTZXJ2aWNlSW1wbGVtZW50YXRpb25UeXBlKCkuZ2V0TWVyZ2VyQ2xhc3MoKTsKLQkJICB3c0luZm8uc2V0TWVyZ2VyKG1lcmdlcik7CQkgIAotCi0JCSAgd2ViU2VydmljZV8gID0gd3NydC5nZXRXZWJTZXJ2aWNlKCB3c0luZm8gKTsKLQotCQkgIC8vU2V0IHVwIHRoZSBJQ29udGV4dAotCQkgIFdlYlNlcnZpY2VTY2VuYXJpbyBzY2VuYXJpbyA9IG51bGw7Ci0JCSAgaW50IHNjZW5hcmlvSW50ID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2NlbmFyaW9Gcm9tVHlwZUlkKHR5cGVSdW50aW1lU2VydmVyXy5nZXRUeXBlSWQoKSk7Ci0JCSAgaWYgKHNjZW5hcmlvSW50ID09IFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01VUCkKLQkJICB7Ci0JCQkgIHNjZW5hcmlvID0gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTVVQX0xJVEVSQUw7Ci0JCQkgIFN0cmluZyBpbXBsID0gKFN0cmluZykoc2VsZWN0aW9uXy5nZXRTZWxlY3Rpb24oKSlbMF07Ci0JCQkgIHdzSW5mby5zZXRJbXBsVVJMKGltcGwpOwotCQkgIH0KLQkJICBlbHNlIGlmIChzY2VuYXJpb0ludCA9PSBXZWJTZXJ2aWNlU2NlbmFyaW8uVE9QRE9XTikKLQkJICB7Ci0JCQkgIHNjZW5hcmlvID0gV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV05fTElURVJBTDsKLQkJCSAgU3RyaW5nIHdzZGxVUkwgPSAoU3RyaW5nKShzZWxlY3Rpb25fLmdldFNlbGVjdGlvbigpKVswXTsKLQkJCSAgCi0JCQkgIC8vIGNoZWNrIGZvciByZWRpcmVjdGlvbiBpbiB0aGUgd3NkbAotCQkJICBIVFRQVXRpbGl0eSBodHRwVXRpbCA9IG5ldyBIVFRQVXRpbGl0eSgpOwotCQkJICBTdHJpbmcgICAgICBuZXdXc2RsVVJMICA9IGh0dHBVdGlsLmhhbmRsZVJlZGlyZWN0KHdzZGxVUkwpOwotCQkJICAKLQkJCSAgd3NJbmZvLnNldFdzZGxVUkwoIG5ld1dzZGxVUkwgKTsgICAKLQkJCSAgCi0JCQkgIC8vIFZhbGlkYXRlIHRoZSB1cmwgYmVmb3JlIHByb2NlZWRpbmcuCi0JCQkgIFRpbWVkV1NETFNlbGVjdGlvbkNvbmRpdGlvbkNvbW1hbmQgdGltZWRDbWQgPSBuZXcgVGltZWRXU0RMU2VsZWN0aW9uQ29uZGl0aW9uQ29tbWFuZCgpOwotCQkJICBXZWJTZXJ2aWNlc1BhcnNlciAgICAgICAgICAgICAgICAgIHBhcnNlciAgID0gV1NETFBhcnNlckZhY3RvcnkuZ2V0V1NETFBhcnNlcigpOwotCQkJICAKLQkJCSAgdGltZWRDbWQuc2V0V2ViU2VydmljZXNQYXJzZXIoIHBhcnNlciApOwotCQkJICB0aW1lZENtZC5zZXRXZWJTZXJ2aWNlVVJJKCBuZXdXc2RsVVJMICk7Ci0JCQkgIHRpbWVkQ21kLmV4ZWN1dGUoIG51bGwsIG51bGwgKTsKLQkJCSAgCi0JICAgICAgV2ViU2VydmljZUVudGl0eSBlbnRpdHkgPSBwYXJzZXIuZ2V0V2ViU2VydmljZUVudGl0eUJ5VVJJKCBuZXdXc2RsVVJMICk7Ci0JICAgICAgCi0JICAgICAgaWYoIGVudGl0eSA9PSBudWxsIHx8IGVudGl0eS5nZXRUeXBlKCkgIT0gV2ViU2VydmljZUVudGl0eS5UWVBFX1dTREwgKQotCSAgICAgIHsKLQkgICAgICAgIC8vIFRoaXMgaXNuJ3QgYSB3c2RsIGZpbGUKLQkgICAgICAgIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9NU0dfU0VMRUNUSU9OX01VU1RfQkVfV1NETCApOwotICAgICAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvciggc3RhdHVzICk7Ci0gICAgICAgICAgcmV0dXJuIHN0YXR1czsKLQkgICAgICB9Ci0JCSAgfQotCi0JCSAgY29udGV4dF8gICAgID0gbmV3IFNpbXBsZUNvbnRleHQoZGV2ZWxvcF8sIGFzc2VtYmxlXywgZGVwbG95XywgaW5zdGFsbF8sIHJ1bl8sIGNsaWVudF8sIHRlc3RfLCBwdWJsaXNoXywgCi0JCQkJICBzY2VuYXJpbywgCi0JCQkJICByZXNvdXJjZUNvbnRleHRfLmlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCksCi0JCQkJICByZXNvdXJjZUNvbnRleHRfLmlzQ3JlYXRlRm9sZGVyc0VuYWJsZWQoKSwKLQkJCQkgIHJlc291cmNlQ29udGV4dF8uaXNDaGVja291dEZpbGVzRW5hYmxlZCgpKTsKLQotCQkgIC8vIENyZWF0ZSB0aGUgc2VydmljZSBtb2R1bGUgaWYgbmVlZGVkLgotCQkgIElQcm9qZWN0IHByb2plY3QgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3QocHJvamVjdF8pOwotCQkgIFJlcXVpcmVkRmFjZXRWZXJzaW9uW10gcmZ2ID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yQnlJZChzZXJ2aWNlUnVudGltZUlkXykuZ2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKCk7Ci0JCSAgaWYgKCFwcm9qZWN0LmV4aXN0cygpKQotCQkgIHsKLQkJCSAgYm9vbGVhbiBtYXRjaGVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZG9lc1NlcnZpY2VSdW50aW1lU3VwcG9ydFRlbXBsYXRlKHNlcnZpY2VSdW50aW1lSWRfLCBtb2R1bGVUeXBlXyk7Ci0JCQkgIGlmIChtYXRjaGVzKQotCQkJICB7CQkJCSAgCi0JCQkJICBDcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQgY29tbWFuZCA9IG5ldyBDcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQoKTsKLQkJCQkgIGNvbW1hbmQuc2V0UHJvamVjdE5hbWUocHJvamVjdF8pOwotCQkJCSAgY29tbWFuZC5zZXRUZW1wbGF0ZUlkKG1vZHVsZVR5cGVfKTsKLQkJCQkgIGNvbW1hbmQuc2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKHJmdik7Ci0JCQkJICBjb21tYW5kLnNldFNlcnZlckZhY3RvcnlJZCh0eXBlUnVudGltZVNlcnZlcl8uZ2V0U2VydmVySWQoKSk7Ci0JCQkJICBjb21tYW5kLnNldFNlcnZlckluc3RhbmNlSWQodHlwZVJ1bnRpbWVTZXJ2ZXJfLmdldFNlcnZlckluc3RhbmNlSWQoKSk7Ci0JCQkJICBjb21tYW5kLnNldEVhclByb2plY3ROYW1lKGVhclByb2plY3RfKTsKLQkJCQkgIHN0YXR1cyA9IGNvbW1hbmQuZXhlY3V0ZSggbW9uaXRvciwgYWRhcHRhYmxlICk7Ci0JCQkJICBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotCQkJCSAgewotCQkJCQkgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvciggc3RhdHVzICk7Ci0JCQkJCSAgcmV0dXJuIHN0YXR1czsKLQkJCQkgIH0gICAgICAgIAotCQkJICB9ICAgICAgICAgICAgCi0JCSAgfSBlbHNlIHsKLQkJCS8vIGFkZCBmYWNldHMgcmVxdWlyZWQgYnkgV2ViIHNlcnZpY2UgcnVudGltZQotCQkgICAgICAgIGlmIChyZnYubGVuZ3RoICE9IDApIHsKLQkJICAgICAgICAJc3RhdHVzID0gRmFjZXRVdGlscy5hZGRSZXF1aXJlZEZhY2V0c1RvUHJvamVjdChwcm9qZWN0LCByZnYsIG1vbml0b3IpOwotCQkgICAgICAgIAlpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotCQkgICAgICAgIAl7Ci0JCSAgICAgICAgCQllbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoIHN0YXR1cyApOwotCQkgICAgICAgIAkJcmV0dXJuIHN0YXR1czsKLQkJICAgICAgICAJfSAgICAgIAotCQkgICAgICAgIH0KLQkJICB9Ci0JICAKLQkgIAotCQkgIGlmKGluaXRpYWxQcm9qZWN0XyAhPSBudWxsICYmIEZhY2V0VXRpbHMuaXNKYXZhUHJvamVjdChpbml0aWFsUHJvamVjdF8pKXsKLQkJCSAgdHJ5ewotCQkJCWFkZEphdmFQcm9qZWN0QXNVdGlsaXR5SW5Nb2RhbEN0eChpbml0aWFsUHJvamVjdF8sIHByb2plY3QsIG1vbml0b3IpOwotCQkJICB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKXsKLQkJCQkgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX01PRFVMRV9ERVBFTkRFTkNZLCBuZXcgU3RyaW5nW117cHJvamVjdC5nZXROYW1lKCksIGluaXRpYWxQcm9qZWN0Xy5nZXROYW1lKCl9KTsKLQkJCQkgIElTdGF0dXMgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhlcnJvck1lc3NhZ2UpOwotCQkJCSAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKGVycm9yU3RhdHVzKTsKLQkJCSAgfSBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKXsKLQkJCQkgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX01PRFVMRV9ERVBFTkRFTkNZLCBuZXcgU3RyaW5nW117cHJvamVjdC5nZXROYW1lKCksIGluaXRpYWxQcm9qZWN0Xy5nZXROYW1lKCl9KTsKLQkJCQkgIElTdGF0dXMgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhlcnJvck1lc3NhZ2UpOwotCQkJCSAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKGVycm9yU3RhdHVzKTsJCQkJCQotCQkJICB9CQkKLQkJICB9Ci0JfQotCSAgcmV0dXJuIHN0YXR1czsKLQotICB9Ci0gIAotICAvKioKLSAgICogQWRkcyB0aGUgcHJvamVjdFRvQWRkIGFzIHV0aWxpdHkgdG8gdGhlIGVhciBwcm9qZWN0IHNwZWNpZmllZC4gVGhlIG9wZXJhdGlvbiBpcyBleGVjdXRlZCBpbiBhIG1vZGFsIGNvbnRleHQgaW4gb3JkZXIgdG8gYXZvaWQgbG9ja2luZyB0aGUgd29ya3NwYWNlIHJvb3QgaW4gdGhlIFVJIHRocmVhZCAKLSAgICovCi0gIHByaXZhdGUgdm9pZCBhZGRKYXZhUHJvamVjdEFzVXRpbGl0eUluTW9kYWxDdHgoZmluYWwgSVByb2plY3QgcHJvamVjdFRvQWRkLCBmaW5hbCBJUHJvamVjdCBlYXJQcm9qZWN0LCBmaW5hbCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cyBJT0V4Y2VwdGlvbiwgQ29yZUV4Y2VwdGlvbgotCXsKLQkJZmluYWwgSVJ1bm5hYmxlV2l0aFByb2dyZXNzIGFkZFJ1bm5hYmxlID0gbmV3IElSdW5uYWJsZVdpdGhQcm9ncmVzcygpCi0JCXsKLQkJCXB1YmxpYyB2b2lkIHJ1bihmaW5hbCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cyBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbgotCQkJewotCQkJCUoyRUVVdGlscy5hZGRKYXZhUHJvamVjdEFzVXRpbGl0eUphcihwcm9qZWN0VG9BZGQsIGVhclByb2plY3QsIG1vbml0b3IpOwotCQkJCXRyeQotCQkJCXsKLQkJCQkJZmluYWwgU3RyaW5nIHVyaSA9IHByb2plY3RUb0FkZC5nZXROYW1lKCkgKyAiLmphciI7Ci0JCQkJCUoyRUVVdGlscy5hZGRKQVJPck1vZHVsZURlcGVuZGVuY3koZWFyUHJvamVjdCwgdXJpKTsKLQkJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotCQkJCXsKLQkJCQkJdGhyb3cgbmV3IEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24oZSk7Ci0JCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKQotCQkJCXsKLQkJCQkJdGhyb3cgbmV3IEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24oZSk7Ci0JCQkJfQotCQkJfQotCQl9OwotCQkKLQkJdHJ5Ci0JCXsKLQkJCU1vZGFsQ29udGV4dC5ydW4oYWRkUnVubmFibGUsIHRydWUsIG1vbml0b3IsIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0RGlzcGxheSgpKTsKLQkJfSBjYXRjaCAoSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBlKQotCQl7Ci0JCQlmaW5hbCBUaHJvd2FibGUgY2F1c2UgPSBlLmdldENhdXNlKCk7Ci0JCQkvLyBJT0V4Y2V0cGlvbiBhbmQgQ29yZUV4Y2VwdGlvbiB0aHJvd24gYnkgSjJFRVV0aWxzLmFkZEpBUk9yTW9kdWxlRGVwZW5kZW5jeQotCQkJaWYoY2F1c2UgaW5zdGFuY2VvZiBJT0V4Y2VwdGlvbikKLQkJCXsKLQkJCQl0aHJvdyAoSU9FeGNlcHRpb24pY2F1c2U7Ci0JCQl9Ci0JCQlpZihjYXVzZSBpbnN0YW5jZW9mIENvcmVFeGNlcHRpb24pCi0JCQl7Ci0JCQkJdGhyb3cgKENvcmVFeGNlcHRpb24pY2F1c2U7Ci0JCQl9Ci0JCQkKLQkJCS8vIE90aGVyIHVuZXhwZWN0ZWQgZXhjZXB0aW9uIGhhcyBvY2N1cnJlZCwgcmV0aHJvdyBpdCBhcyBhIHJ1bnRpbWUgZXhjZXB0aW9uCi0JCQl0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlKTsKLQkJfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkKLQkJewotCQkJLy8gVGhlIGV4ZWN1dGVkIHJ1bm5hYmxlIGRvZXMgbm90IHN1cHBvcnQgY2FuY2VsbGF0aW9uIGFuZCB0aGVyZWZvcmUgdGhpcyBjYW4gbmV2ZXIgaGFwcGVuCi0JCQl0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUpOwotCQl9Ci0JfQotICAKLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKCBUeXBlUnVudGltZVNlcnZlciB0eXBlUnVudGltZVNlcnZlciApCi0gIHsKLQkgIHR5cGVSdW50aW1lU2VydmVyXyA9IHR5cGVSdW50aW1lU2VydmVyOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VSdW50aW1lSWQoU3RyaW5nIGlkKQotICB7Ci0gICAgc2VydmljZVJ1bnRpbWVJZF8gPSBpZDsKLSAgfQotCSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VKMkVFVmVyc2lvbiggU3RyaW5nIGoyZWVMZXZlbCApCi0gIHsKLQlqMmVlTGV2ZWxfID0gajJlZUxldmVsOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SjJlZUxldmVsKCkKLSAgewotCSAgcmV0dXJuIGoyZWVMZXZlbF87ICAKLSAgfQotCQotICBwdWJsaWMgSVdlYlNlcnZpY2UgZ2V0V2ViU2VydmljZSgpCi0gIHsKLQlyZXR1cm4gd2ViU2VydmljZV87ICAKLSAgfQotICAKLSAgcHVibGljIElDb250ZXh0IGdldENvbnRleHQoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRleHRfOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZUNvbnRleHQoIFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHQgKQotICB7Ci0gICAgcmVzb3VyY2VDb250ZXh0XyA9IHJlc291cmNlQ29udGV4dDsJICAKLSAgfQotICAKLSAgcHVibGljIElTZWxlY3Rpb24gZ2V0U2VsZWN0aW9uKCkKLSAgewotICAgIHJldHVybiBzZWxlY3Rpb25fOwkgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb24oIElTZWxlY3Rpb24gc2VsZWN0aW9uICkKLSAgewotCXNlbGVjdGlvbl8gPSBzZWxlY3Rpb247ICAKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRQcm9qZWN0KCkKLSAgewotICAgIHJldHVybiBwcm9qZWN0XzsJICAKLSAgfQotCSAKLSAgcHVibGljIFN0cmluZyBnZXRNb2R1bGUoKQotICB7Ci0gICAgcmV0dXJuIG1vZHVsZV87CSAgCi0gIH0KLQkKLSAgcHVibGljIHZvaWQgc2V0TW9kdWxlKCBTdHJpbmcgbW9kdWxlICkKLSAgewotCSAgbW9kdWxlXyA9IG1vZHVsZTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0TW9kdWxlVHlwZShTdHJpbmcgdHlwZSkKLSAgewotCSAgbW9kdWxlVHlwZV8gPSB0eXBlOwotICB9Ci0JCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RWFyUHJvamVjdCgpCi0gIHsKLSAgICByZXR1cm4gZWFyUHJvamVjdF87CSAgCi0gIH0KLQkKLSAgcHVibGljIFN0cmluZyBnZXRFYXIoKQotICB7Ci0JICByZXR1cm4gZWFyXzsgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRFYXIoIFN0cmluZyBlYXIgKQotICB7Ci0JICBlYXJfID0gZWFyOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEluc3RhbGxTZXJ2aWNlKGJvb2xlYW4gaW5zdGFsbFNlcnZpY2UpCi0JewotCQlpbnN0YWxsXyA9IGluc3RhbGxTZXJ2aWNlOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldERldmVsb3BTZXJ2aWNlKGJvb2xlYW4gZGV2ZWxvcFNlcnZpY2UpIHsKLQkJZGV2ZWxvcF8gPSBkZXZlbG9wU2VydmljZTsKLQl9CQotCQotCXB1YmxpYyB2b2lkIHNldEFzc2VtYmxlU2VydmljZShib29sZWFuIGFzc2VtYmxlU2VydmljZSkgewotCQlhc3NlbWJsZV8gPSBhc3NlbWJsZVNlcnZpY2U7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0RGVwbG95U2VydmljZShib29sZWFuIGRlcGxveVNlcnZpY2UpIHsKLQkJZGVwbG95XyA9IGRlcGxveVNlcnZpY2U7Ci0JfQotICAKLQlwdWJsaWMgdm9pZCBzZXRTdGFydFNlcnZpY2UoYm9vbGVhbiBzdGFydFNlcnZpY2UpCi0JewotCQlydW5fID0gc3RhcnRTZXJ2aWNlOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXRUZXN0U2VydmljZShib29sZWFuIHRlc3RTZXJ2aWNlKQotCXsKLQkJdGVzdF8gPSB0ZXN0U2VydmljZTsKLQl9CQotCQotICBwdWJsaWMgdm9pZCBzZXRQdWJsaXNoU2VydmljZShib29sZWFuIHB1Ymxpc2hTZXJ2aWNlKQotICB7Ci0gICAgcHVibGlzaF8gPSBwdWJsaXNoU2VydmljZTsKLSAgfQotCQotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0ZVByb3h5KGJvb2xlYW4gZ2VuUHJveHkpCi0gIHsKLSAgICBjbGllbnRfID0gZ2VuUHJveHk7ICAKLSAgfQkKLQkKLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFByb2plY3QoSVByb2plY3QgaW5pdGlhbFByb2plY3QpCi0gIHsKLQkgIGluaXRpYWxQcm9qZWN0XyA9IGluaXRpYWxQcm9qZWN0OyAgCi0gIH0JCi0gICAgCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRJbml0aWFsUHJvamVjdCgpCi0gIHsKLQkgIHJldHVybiBpbml0aWFsUHJvamVjdF87ICAKLSAgfQkKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9leHRlbnNpb24vUHJlU2VydmljZUluc3RhbGxDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL2V4dGVuc2lvbi9QcmVTZXJ2aWNlSW5zdGFsbENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc1ODk2ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL2V4dGVuc2lvbi9QcmVTZXJ2aWNlSW5zdGFsbENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA4MTUgICAxOTk2MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcxMTMwICAgMjAzODI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDQyNSAgIDIyMDk4NSAgLSBUcnVuZywgU2VydmVyIGlzIHJlY3JlYXRlZCB3aGVuIHByZXYgcHVibGlzaCBmYWlsZWQKLSAqIDIwMDgwNDI5ICAgMjIwOTg1IHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nIEhhCi0gKiAyMDA4MDUyMCAgIDIzMzA2NSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgU2VydmVyIG5vdCBmb3VuZCBlcnJvciBpbiBXZWIgc2VydmljZSBnZW5lcmF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkuZXh0ZW5zaW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbWFuZC5jb21tb24uQWRkTW9kdWxlVG9TZXJ2ZXJDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5DcmVhdGVTZXJ2ZXJDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2U7Ci0KLXB1YmxpYyBjbGFzcyBQcmVTZXJ2aWNlSW5zdGFsbENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiAKLXsKLQlwcml2YXRlIElXZWJTZXJ2aWNlIHdlYlNlcnZpY2VfOwotCXByaXZhdGUgU3RyaW5nCQlwcm9qZWN0XzsKLSAgICBwcml2YXRlIFN0cmluZyAgICAgIG1vZHVsZV87Ci0JcHJpdmF0ZSBTdHJpbmcJCWVhclByb2plY3RfOwotICAgIHByaXZhdGUgU3RyaW5nICAgICAgZWFyXzsKLSAgICBwcml2YXRlIElDb250ZXh0ICAgIGNvbnRleHRfOwotCQkKLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLQkgIGlmIChjb250ZXh0Xy5nZXRJbnN0YWxsKCkpCi0JICB7Ci0JICAgICAgICAgICAgSUVudmlyb25tZW50IGVudmlyb25tZW50ID0gZ2V0RW52aXJvbm1lbnQoKTsgICAgICAKLQkJCSAgCQkJCi0JCQkJaWYgKHdlYlNlcnZpY2VfLmdldFdlYlNlcnZpY2VJbmZvKCkuZ2V0U2VydmVySW5zdGFuY2VJZCgpPT1udWxsKQotCQkJCXsKLQkJCQkJLy8gQXR0ZW1wdCB0byBmaW5kIGEgc2VydmVyIGluc3RhbmNlIGluIHRoZSB3b3Jrc3BhY2UgbWF0Y2hpbmcKLQkJCQkJLy8gdGhlIHNlcnZlciBpZCBvZiB0aGUgd2ViU2VydmljZV8KLQkJCQkJLy8gSWYgd2UgY2FuIGZpbmQgb25lLCB3ZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBzZXJ2ZXIuCi0JCQkJCUlTZXJ2ZXJbXSBhbGxTZXJ2ZXJzID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJzKCk7Ci0JCQkJCWlmIChhbGxTZXJ2ZXJzICE9IG51bGwgJiYgYWxsU2VydmVycy5sZW5ndGggPiAwKSB7Ci0JCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IGFsbFNlcnZlcnMubGVuZ3RoOyBpKyspIHsKLQkJCQkJCQlJU2VydmVyIG9uZVNlcnZlciA9IGFsbFNlcnZlcnNbaV07Ci0JCQkJCQkJaWYgKG9uZVNlcnZlci5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKS5lcXVhbHMoCi0JCQkJCQkJCQl3ZWJTZXJ2aWNlXy5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldFNlcnZlckZhY3RvcnlJZCgpKSkgewotCQkJCQkJCQkKLQkJCQkJCQkJd2ViU2VydmljZV8uZ2V0V2ViU2VydmljZUluZm8oKS5zZXRTZXJ2ZXJJbnN0YW5jZUlkKG9uZVNlcnZlci5nZXRJZCgpKTsKLQkJCQkJCQkJd2ViU2VydmljZV8uZ2V0V2ViU2VydmljZUluZm8oKS5zZXRTZXJ2ZXJDcmVhdGVkKHRydWUpOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCQkvLyBDYW5ub3QgZmluZCBhbiBhcHByb3ByaWF0ZSBzZXJ2ZXIsIHNvIHdlIHdpbGwgY3JlYXRlIG9uZQotCQkJCQlpZiAod2ViU2VydmljZV8uZ2V0V2ViU2VydmljZUluZm8oKS5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkgPT0gbnVsbCkgewotCQkJCQkJQ3JlYXRlU2VydmVyQ29tbWFuZCBjcmVhdGVTZXJ2ZXJDb21tYW5kID0gbmV3IENyZWF0ZVNlcnZlckNvbW1hbmQoKTsKLQkJCQkJCWNyZWF0ZVNlcnZlckNvbW1hbmQuc2V0U2VydmVyRmFjdG9yeWlkKHdlYlNlcnZpY2VfCi0JCQkJCQkJCS5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldFNlcnZlckZhY3RvcnlJZCgpKTsKLQkJCQkJCWNyZWF0ZVNlcnZlckNvbW1hbmQuc2V0U2VydmVyUnVudGltZUlkKHdlYlNlcnZpY2VfCi0JCQkJCQkJCS5nZXRXZWJTZXJ2aWNlSW5mbygpLmdldFNlcnZlclJ1bnRpbWVJZCgpKTsKLQkJCQkJCWNyZWF0ZVNlcnZlckNvbW1hbmQuc2V0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpOwotCQkJCQkJSVN0YXR1cyBjcmVhdGVTZXJ2ZXJTdGF0dXMgPSBjcmVhdGVTZXJ2ZXJDb21tYW5kLmV4ZWN1dGUoCi0JCQkJCQkJCW1vbml0b3IsIG51bGwpOwotCQkJCQkJaWYgKGNyZWF0ZVNlcnZlclN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5PSykgewotCQkJCQkJCXdlYlNlcnZpY2VfLmdldFdlYlNlcnZpY2VJbmZvKCkuc2V0U2VydmVySW5zdGFuY2VJZCgKLQkJCQkJCQkJCWNyZWF0ZVNlcnZlckNvbW1hbmQuZ2V0U2VydmVySW5zdGFuY2VJZCgpKTsKLQkJCQkJCQl3ZWJTZXJ2aWNlXy5nZXRXZWJTZXJ2aWNlSW5mbygpLnNldFNlcnZlckNyZWF0ZWQodHJ1ZSk7Ci0JCQkJCQl9IGVsc2UgewotCQkJCQkJCWlmIChjcmVhdGVTZXJ2ZXJTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpIHsKLQkJCQkJCQkJZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKAotCQkJCQkJCQkJCWNyZWF0ZVNlcnZlclN0YXR1cyk7Ci0JCQkJCQkJfQotCQkJCQkJCXJldHVybiBjcmVhdGVTZXJ2ZXJTdGF0dXM7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0JCQkJICAKLQkJCQkKLQkJCQkKLQkJCQlBZGRNb2R1bGVUb1NlcnZlckNvbW1hbmQgY29tbWFuZCA9IG5ldyBBZGRNb2R1bGVUb1NlcnZlckNvbW1hbmQoKTsKLQkJCQljb21tYW5kLnNldFNlcnZlckluc3RhbmNlSWQod2ViU2VydmljZV8uZ2V0V2ViU2VydmljZUluZm8oKS5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCkpOwotCQkJCWlmIChlYXJQcm9qZWN0XyAhPSBudWxsICYmIGVhclByb2plY3RfLmxlbmd0aCgpPjAgJiYgZWFyXyE9IG51bGwgJiYgZWFyXy5sZW5ndGgoKT4wKQotCQkJCXsKLQkJCQkJY29tbWFuZC5zZXRQcm9qZWN0KGVhclByb2plY3RfKTsKLQkJCQkJY29tbWFuZC5zZXRNb2R1bGUoZWFyXyk7Ci0JCQkJfQotCQkJCWVsc2UKLQkJCQl7Ci0JCQkJCWNvbW1hbmQuc2V0UHJvamVjdChwcm9qZWN0Xyk7Ci0JCQkJCWNvbW1hbmQuc2V0TW9kdWxlKG1vZHVsZV8pOwkJCQkKLQkJCQl9Ci0JCi0JICAgICAgICAgICAgY29tbWFuZC5zZXRFbnZpcm9ubWVudCggZW52aXJvbm1lbnQgKTsKLQkJCQlJU3RhdHVzIHN0YXR1cyA9IGNvbW1hbmQuZXhlY3V0ZSggbW9uaXRvciwgbnVsbCApOwotCQkJCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKT09U3RhdHVzLkVSUk9SKQotCQkJCXsKLQkJCQkJZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQkJfQkJCQotCQkJICAgIHJldHVybiBzdGF0dXM7Ci0JCSAgfQotCQkgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCSAgfQotCi0JICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KCBTdHJpbmcgcHJvamVjdCApCi0JICB7Ci0JCSAgcHJvamVjdF8gPSBwcm9qZWN0OwotCSAgfQotCQkgIAotCSAgcHVibGljIHZvaWQgc2V0TW9kdWxlKCBTdHJpbmcgbW9kdWxlICkKLQkgIHsKLQkJICBtb2R1bGVfID0gbW9kdWxlOwotCSAgfQkKLQkJCi0JICBwdWJsaWMgdm9pZCBzZXRFYXJQcm9qZWN0KCBTdHJpbmcgZWFyUHJvamVjdCApCi0JICB7Ci0JCSAgZWFyUHJvamVjdF8gPSBlYXJQcm9qZWN0OwotCSAgfQotCSAgCi0JICBwdWJsaWMgdm9pZCBzZXRFYXIoIFN0cmluZyBlYXIgKQotCSAgewotCQkgIGVhcl8gPSBlYXI7ICAKLQkgIH0KLQkJCi0JICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlKCBJV2ViU2VydmljZSB3ZWJTZXJ2aWNlICkKLQkgIHsKLQkJICB3ZWJTZXJ2aWNlXyA9IHdlYlNlcnZpY2U7ICAKLQkgIH0KLQkgIAotCSAgcHVibGljIHZvaWQgc2V0Q29udGV4dChJQ29udGV4dCBjb250ZXh0KQotCSAgewotCQkgIGNvbnRleHRfPWNvbnRleHQ7Ci0JICB9Ci0JCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9leHRlbnNpb24vUHJlU2VydmljZVJ1bkNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvZXh0ZW5zaW9uL1ByZVNlcnZpY2VSdW5Db21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NThiY2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9leHRlbnNpb24vUHJlU2VydmljZVJ1bkNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkuZXh0ZW5zaW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbWFuZC5TdGFydFNlcnZlckNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZTsKLQotcHVibGljIGNsYXNzIFByZVNlcnZpY2VSdW5Db21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gCi17Ci0JcHJpdmF0ZSBJV2ViU2VydmljZQkJCQl3ZWJTZXJ2aWNlXzsKLQlwcml2YXRlIElDb250ZXh0CQkJCWNvbnRleHRfOwotCQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotCQkgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQkgICAgICBpZiAoY29udGV4dF8uZ2V0UnVuKCkpCi0JCSAgewotCSAgICAgICAgICAgIElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0JCQkJCi0JCQkJU3RhcnRTZXJ2ZXJDb21tYW5kIGNvbW1hbmQgPSBuZXcgU3RhcnRTZXJ2ZXJDb21tYW5kKCk7Ci0JCQkJY29tbWFuZC5zZXRTZXJ2ZXJJbnN0YW5jZUlkKHdlYlNlcnZpY2VfLmdldFdlYlNlcnZpY2VJbmZvKCkuZ2V0U2VydmVySW5zdGFuY2VJZCgpKTsKLQkgICAgICAgICAgICBjb21tYW5kLnNldEVudmlyb25tZW50KCBlbnZpcm9ubWVudCApOwotCQkJCXN0YXR1cyA9IGNvbW1hbmQuZXhlY3V0ZSggbW9uaXRvciwgbnVsbCApOwotCQkJCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKT09U3RhdHVzLkVSUk9SKQotCQkJCXsKLQkJCQkJZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7CQkJICAKLQkJCQl9Ci0JCSAgfQotCQkgIAotCQkgIHJldHVybiBzdGF0dXM7CQkJCi0JICB9Ci0JCQotCSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZSggSVdlYlNlcnZpY2Ugd2ViU2VydmljZSApCi0JICB7Ci0JCSAgd2ViU2VydmljZV8gPSB3ZWJTZXJ2aWNlOyAgCi0JICB9Ci0JICAKLQkgIHB1YmxpYyB2b2lkIHNldENvbnRleHQgKElDb250ZXh0IGNvbnRleHQpCi0JICB7Ci0JCSAgY29udGV4dF8gPSBjb250ZXh0OwotCSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL2V4dGVuc2lvbi9TZXJ2aWNlUm9vdEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL2V4dGVuc2lvbi9TZXJ2aWNlUm9vdEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZTg1M2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9leHRlbnNpb24vU2VydmljZVJvb3RGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDEzMSAxMjEwNzEgICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIgICAgIAotICogMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDMzMSAgIDEyODgyNyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzEyMTIJICAyMDAxOTMgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLmV4dGVuc2lvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5leHRlbnNpb24uUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuRGF0YU9iamVjdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnMuQXNzZW1ibGVTZXJ2aWNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnMuRGVwbG95U2VydmljZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHRlbnNpb25zLkRldmVsb3BTZXJ2aWNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnMuSW5zdGFsbFNlcnZpY2VGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9ucy5SdW5TZXJ2aWNlRnJhZ21lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlUm9vdEZyYWdtZW50IGV4dGVuZHMgU2VxdWVuY2VGcmFnbWVudCAKLXsKLSAgcHVibGljIFNlcnZpY2VSb290RnJhZ21lbnQoKQotICB7Ci0gICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQoKSwgIiIgKSApOwotICAgIGFkZCggbmV3IERldmVsb3BTZXJ2aWNlRnJhZ21lbnQoKSApOwotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgUHJlU2VydmljZUFzc2VtYmxlQ29tbWFuZCgpLCAiIiApICk7Ci0gICAgYWRkKCBuZXcgQXNzZW1ibGVTZXJ2aWNlRnJhZ21lbnQoKSApOwotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgUHJlU2VydmljZURlcGxveUNvbW1hbmQoKSwgIiIgKSApOwotICAgIGFkZCggbmV3IERlcGxveVNlcnZpY2VGcmFnbWVudCgpICk7Ci0gICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBQcmVTZXJ2aWNlSW5zdGFsbENvbW1hbmQoKSwgIiIgKSApOwotICAgIGFkZCggbmV3IEluc3RhbGxTZXJ2aWNlRnJhZ21lbnQoKSApOwotICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgUHJlU2VydmljZVJ1bkNvbW1hbmQoKSwgCi0gICAgCSAib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLmV4dGVuc2lvbi5QcmVTZXJ2aWNlUnVuQ29tbWFuZCIgKSApOwotICAgIGFkZCggbmV3IFJ1blNlcnZpY2VGcmFnbWVudCgpICk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IHJlZ2lzdHJ5KSAKLSAgewotCQkvL01hcHBpbmdzIGZyb20gZnJhbWV3b3JrIHRvIGV4dGVuc2lvbiBmcmFnbWVudHMKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2UiLCBEZXZlbG9wU2VydmljZUZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVudmlyb25tZW50IiwgRGV2ZWxvcFNlcnZpY2VGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgRGV2ZWxvcFNlcnZpY2VGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJTZWxlY3Rpb24iLCBEZXZlbG9wU2VydmljZUZyYWdtZW50LmNsYXNzICk7ICAKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiUHJvamVjdCIsIERldmVsb3BTZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIERldmVsb3BTZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiRWFyUHJvamVjdCIsIERldmVsb3BTZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhciIsIERldmVsb3BTZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsKLQkKLQkvLyBNYXAgdGhlIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZCBpbnRvIHRoZSBkYXRhT2JqZWN0IGFuZCB0aGUgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuCi0JcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIERhdGFPYmplY3RDb21tYW5kLmNsYXNzLCAiRGF0YU9iamVjdCIsIG51bGwgKTsKLQlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJEYXRhT2JqZWN0IiwgbnVsbCApOwotCQkKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2UiLCBBc3NlbWJsZVNlcnZpY2VGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFbnZpcm9ubWVudCIsIEFzc2VtYmxlU2VydmljZUZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIkNvbnRleHQiLCBBc3NlbWJsZVNlcnZpY2VGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJTZWxlY3Rpb24iLCBBc3NlbWJsZVNlcnZpY2VGcmFnbWVudC5jbGFzcyApOwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgQXNzZW1ibGVTZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIEFzc2VtYmxlU2VydmljZUZyYWdtZW50LmNsYXNzICk7ICAKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiRWFyUHJvamVjdCIsIEFzc2VtYmxlU2VydmljZUZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXIiLCBBc3NlbWJsZVNlcnZpY2VGcmFnbWVudC5jbGFzcyApOwotCQotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIERlcGxveVNlcnZpY2VGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFbnZpcm9ubWVudCIsIERlcGxveVNlcnZpY2VGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgRGVwbG95U2VydmljZUZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIlNlbGVjdGlvbiIsIERlcGxveVNlcnZpY2VGcmFnbWVudC5jbGFzcyApOwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgRGVwbG95U2VydmljZUZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJNb2R1bGUiLCBEZXBsb3lTZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsgIAotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXJQcm9qZWN0IiwgRGVwbG95U2VydmljZUZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXIiLCBEZXBsb3lTZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsKLQkKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2UiLCBJbnN0YWxsU2VydmljZUZyYWdtZW50LmNsYXNzICk7ICAKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVudmlyb25tZW50IiwgSW5zdGFsbFNlcnZpY2VGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgSW5zdGFsbFNlcnZpY2VGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJTZWxlY3Rpb24iLCBJbnN0YWxsU2VydmljZUZyYWdtZW50LmNsYXNzICk7Ci0JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBJbnN0YWxsU2VydmljZUZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJNb2R1bGUiLCBJbnN0YWxsU2VydmljZUZyYWdtZW50LmNsYXNzICk7ICAKLQkJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiRWFyUHJvamVjdCIsIEluc3RhbGxTZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhciIsIEluc3RhbGxTZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsKLQkKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2UiLCBSdW5TZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsgIAotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiRW52aXJvbm1lbnQiLCBSdW5TZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsgIAotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiQ29udGV4dCIsIFJ1blNlcnZpY2VGcmFnbWVudC5jbGFzcyApOyAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJTZWxlY3Rpb24iLCBSdW5TZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsgIAotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJQcm9qZWN0IiwgUnVuU2VydmljZUZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJNb2R1bGUiLCBSdW5TZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsgIAotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXJQcm9qZWN0IiwgUnVuU2VydmljZUZyYWdtZW50LmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXIiLCBSdW5TZXJ2aWNlRnJhZ21lbnQuY2xhc3MgKTsKLQkJCi0JCS8vTWFwcGluZ3MgZnJvbSBmcmFtZXdvcmsgdG8gZnJhbWV3b3JrIGNvbW1hbmRzCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgUHJlU2VydmljZUFzc2VtYmxlQ29tbWFuZC5jbGFzcyApOwotCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBQcmVTZXJ2aWNlQXNzZW1ibGVDb21tYW5kLmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJNb2R1bGUiLCBQcmVTZXJ2aWNlQXNzZW1ibGVDb21tYW5kLmNsYXNzICk7Ci0JcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiRWFyUHJvamVjdCIsIFByZVNlcnZpY2VBc3NlbWJsZUNvbW1hbmQuY2xhc3MgKTsKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIkVhciIsIFByZVNlcnZpY2VBc3NlbWJsZUNvbW1hbmQuY2xhc3MgKTsKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIkluaXRpYWxQcm9qZWN0IiwgUHJlU2VydmljZUFzc2VtYmxlQ29tbWFuZC5jbGFzcyApOwotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiQ29udGV4dCIsIFByZVNlcnZpY2VBc3NlbWJsZUNvbW1hbmQuY2xhc3MgKTsKLQkJCi0gICAgcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiQ29udGV4dCIsIFByZVNlcnZpY2VEZXBsb3lDb21tYW5kLmNsYXNzICk7Ci0gICAgCi0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgUHJlU2VydmljZUluc3RhbGxDb21tYW5kLmNsYXNzICk7Ci0JCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBQcmVTZXJ2aWNlSW5zdGFsbENvbW1hbmQuY2xhc3MgKTsKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIFByZVNlcnZpY2VJbnN0YWxsQ29tbWFuZC5jbGFzcyApOwotCQlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXJQcm9qZWN0IiwgUHJlU2VydmljZUluc3RhbGxDb21tYW5kLmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXIiLCBQcmVTZXJ2aWNlSW5zdGFsbENvbW1hbmQuY2xhc3MgKTsKLSAgCXJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIkNvbnRleHQiLCBQcmVTZXJ2aWNlSW5zdGFsbENvbW1hbmQuY2xhc3MgKTsKLQotICAJcmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIFByZVNlcnZpY2VSdW5Db21tYW5kLmNsYXNzICk7Ci0gIAlyZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgUHJlU2VydmljZVJ1bkNvbW1hbmQuY2xhc3MgKTsKLQkKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9wbHVnaW4vV2ViU2VydmljZUNyZWF0aW9uVUlQbHVnaW4uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvcGx1Z2luL1dlYlNlcnZpY2VDcmVhdGlvblVJUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YjhhMGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9wbHVnaW4vV2ViU2VydmljZUNyZWF0aW9uVUlQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyNCAgIDExNTY5MCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDYwNTA0ICAgMTM4MTE4IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkucGx1Z2luOwotCi1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkZpbGVMb2NhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yOwotCi0KLS8qKgotKiBUaGlzIGlzIHRoZSBwbHVnaW4gY2xhc3MgZm9yIHRoZSBXZWIgU2VydmljZXMgQ3JlYXRpb24gVUkgcGx1Z2luLgotKiA8cD4KLSogVGhlIFdlYiBTZXJ2aWNlcyBDcmVhdGlvbiBVSSBwbHVnaW4ncyBzb2xlIGZ1bmN0aW9uIGlzIHRvIGFkZCAKLSogdXNlciBpbnRlcmZhY2Ugb2YgdGhlIFdlYiBTZXJ2aWNlcyBDcmVhdGlvbiBXaXphcmQsIGNvbnRhaW5lZCBpbiAgCi0qIHRoZSBvcmcuZWNsaXBzZS5qc3Qud3MudWkgcGx1Z2luLgotKi8KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlQ3JlYXRpb25VSVBsdWdpbiBleHRlbmRzIFBsdWdpbgotewotCi0gIC8qKgotICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXNjcmlwdG9yIG9mIHRoaXMgcGx1Z2luIGluIHBsdWdpbi54bWwuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElEID0gIm9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aSI7Ci0KLSAgLyoqCi0gICogVGhlIHJlZmVyZW5jZSB0byB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgcGx1Z2luLgotICAqLwotICBwcml2YXRlIHN0YXRpYyBXZWJTZXJ2aWNlQ3JlYXRpb25VSVBsdWdpbiBpbnN0YW5jZV87Ci0KLSAgLyoqCi0gICogQ29uc3RydWN0cyBhIHJ1bnRpbWUgcGx1Z2luIG9iamVjdCBmb3IgdGhpcyBwbHVnaW4uCi0gICogVGhlICJwbHVnaW4iIGVsZW1lbnQgaW4gcGx1Z2luLnhtbCBzaG91bGQgaW5jbHVkZSB0aGUgYXR0cmlidXRlCi0gICogY2xhc3MgPSAib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLnBsdWdpbi5XZWJTZXJ2aWNlQ3JlYXRpb25VSVBsdWdpbiIuCi0gICogQHBhcmFtIGRlc2NyaXB0b3IgVGhlIGRlc2NyaXB0b3Igb2YgdGhpcyBwbHVnaW4uCi0gICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlQ3JlYXRpb25VSVBsdWdpbiAoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgICBpbnN0YW5jZV8gPSB0aGlzOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgcGx1Z2luLiBFcXVpdmFsZW50IHRvIGNhbGxpbmcKLSAgKiAoV2ViU2VydmljZUNyZWF0aW9uVUlQbHVnaW4pUGxhdGZvcm0uZ2V0UGx1Z2luKCJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkiKTsKLSAgKiBAcmV0dXJuIFRoZSBXZWJTZXJ2aWNlQ3JlYXRpb25VSVBsdWdpbiBzaW5nbGV0b24uCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgV2ViU2VydmljZUNyZWF0aW9uVUlQbHVnaW4gZ2V0SW5zdGFuY2UgKCkKLSAgewotICAgIHJldHVybiBpbnN0YW5jZV87Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyBhbiBpbWFnZSBkZXNjcmlwdG9yIGZvciB0aGUgbmFtZWQgcmVzb3VyY2UKLSAgICogYXMgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiBpbnN0YWxsIGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIEFuIGltYWdlIGRlc2NyaXB0b3IsIHBvc3NpYmx5IG51bGwuCi0gICAqLwotICAgcHVibGljIHN0YXRpYyBJbWFnZURlc2NyaXB0b3IgZ2V0SW1hZ2VEZXNjcmlwdG9yICggU3RyaW5nIG5hbWUgKQotICAgewotIAl0cnkKLSAgICAgewkKLSAgICAgCVVSTCBpbWFnZVVSTCA9IEZpbGVMb2NhdG9yLmZpbmQoaW5zdGFuY2VfLmdldEJ1bmRsZSgpLCBuZXcgUGF0aCgiJG5sJC8iK25hbWUpLCBudWxsKTsKLSAgICAgCXJldHVybiBJbWFnZURlc2NyaXB0b3IuY3JlYXRlRnJvbVVSTChpbWFnZVVSTCk7Ci0gICAgIH0KLSAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICB7Ci0gICAgICAgcmV0dXJuIG51bGw7Ci0gICAgIH0KLSAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvcHJlZmVyZW5jZXMvU2NlbmFyaW9EZWZhdWx0c1ByZWZlcmVuY2VQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL3ByZWZlcmVuY2VzL1NjZW5hcmlvRGVmYXVsdHNQcmVmZXJlbmNlUGFnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGUwOWYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvcHJlZmVyZW5jZXMvU2NlbmFyaW9EZWZhdWx0c1ByZWZlcmVuY2VQYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDE3ICAgMTM2MzkxIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLnByZWZlcmVuY2VzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucHJlZmVyZW5jZS5QcmVmZXJlbmNlUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMuU2VydmVyV2l6YXJkV2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5wbHVnaW4uV2ViU2VydmljZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLlVJVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoUHJlZmVyZW5jZVBhZ2U7Ci0KLQotCi0vKioKLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBTY2VuYXJpb0RlZmF1bHRzUHJlZmVyZW5jZVBhZ2UgZXh0ZW5kcyBQcmVmZXJlbmNlUGFnZSBpbXBsZW1lbnRzIElXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZSAKLXsKLQlwcml2YXRlIFNlcnZlcldpemFyZFdpZGdldCBzZXJ2ZXJXaWRnZXRfID0gbnVsbDsKLQkKLQlwdWJsaWMgdm9pZCBpbml0KElXb3JrYmVuY2ggd29ya2JlbmNoKSAgIHsgfQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLlByZWZlcmVuY2VQYWdlI2NyZWF0ZUNvbnRlbnRzKG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZSkKLQkgKi8KLQkKLQlwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVDb250ZW50cyhDb21wb3NpdGUgcGFyZW50KSAKLQl7Ci0JICBVSVV0aWxzIHV0aWxzID0gbmV3IFVJVXRpbHMobnVsbCk7Ci0JICAKLQkgIENvbXBvc2l0ZSBwYWdlID0gdXRpbHMuY3JlYXRlQ29tcG9zaXRlKCBwYXJlbnQsIDEgKTsKLQkgIAotICAgICAgc2VydmVyV2lkZ2V0XyA9IG5ldyBTZXJ2ZXJXaXphcmRXaWRnZXQoIGZhbHNlLCB0cnVlICk7Ci0gICAgICBzZXJ2ZXJXaWRnZXRfLmFkZENvbnRyb2xzKCBwYWdlLCBuZXcgTGlzdGVuZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVFdmVudCggRXZlbnQgZXZ0ICl7fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApOyAgICAgIAotCSAgaW5pdGlhbGl6ZVZhbHVlcygpOwotCSAgc2VydmVyV2lkZ2V0Xy5kaXNhYmxlTm9uUHJlZmVyZW5jZVdpZGdldHMoKTsKLQkgIGFwcGx5RGlhbG9nRm9udChwYWdlKTsKLQkgIHJldHVybiBwYWdlOwotCX0KLQotCXByaXZhdGUgdm9pZCBpbml0aWFsaXplVmFsdWVzKCkKLQl7Ci0JICBTY2VuYXJpb0NvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTY2VuYXJpb0NvbnRleHQoKTsKLQotICAgICAgLy8gU2V0IHZhbHVlcyBmcm9tIGNvbnRleHQuCi0JICBUeXBlUnVudGltZVNlcnZlciBzZXJ2ZXJJZHMgPSBuZXcgVHlwZVJ1bnRpbWVTZXJ2ZXIoKTsKLQkgIFR5cGVSdW50aW1lU2VydmVyIGNsaWVudElkcyA9IG5ldyBUeXBlUnVudGltZVNlcnZlcigpOwotCQkKLQkgIHNlcnZlcklkcy5zZXRUeXBlSWQoIGNvbnRleHQuZ2V0V2ViU2VydmljZVR5cGUoKSApOwotCSAgY2xpZW50SWRzLnNldFR5cGVJZCggY29udGV4dC5nZXRDbGllbnRXZWJTZXJ2aWNlVHlwZSgpICk7Ci0JCQotICAgICAgc2VydmVyV2lkZ2V0Xy5zZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoIHNlcnZlcklkcyApOwotICAgICAgc2VydmVyV2lkZ2V0Xy5zZXRDbGllbnRUeXBlUnVudGltZVNlcnZlciggY2xpZW50SWRzICk7Ci0gICAgICAvL2p2aCBzZXJ2ZXJXaWRnZXRfLnNldEdlbmVyYXRlUHJveHkoIG5ldyBCb29sZWFuKGNvbnRleHQuZ2V0R2VuZXJhdGVQcm94eSgpKSApOwotICAgICAgc2VydmVyV2lkZ2V0Xy5zZXRQdWJsaXNoU2VydmljZSggbmV3IEJvb2xlYW4oY29udGV4dC5nZXRMYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXIoKSkgKTsKLSAgICAgIHNlcnZlcldpZGdldF8uc2V0SW5zdGFsbFNlcnZpY2UoIG5ldyBCb29sZWFuKGNvbnRleHQuZ2V0SW5zdGFsbFdlYlNlcnZpY2UoKSkgKTsKLSAgICAgIHNlcnZlcldpZGdldF8uc2V0SW5zdGFsbENsaWVudCggbmV3IEJvb2xlYW4oY29udGV4dC5nZXRJbnN0YWxsQ2xpZW50KCkpICk7Ci0gICAgICBzZXJ2ZXJXaWRnZXRfLnNldFN0YXJ0U2VydmljZSggbmV3IEJvb2xlYW4oY29udGV4dC5nZXRTdGFydFdlYlNlcnZpY2UoKSkgKTsKLSAgICAgIHNlcnZlcldpZGdldF8uc2V0VGVzdFNlcnZpY2UoIG5ldyBCb29sZWFuKGNvbnRleHQuZ2V0VGVzdFdlYlNlcnZpY2UoKSkgKTsKLSAgICAgIHNlcnZlcldpZGdldF8uc2V0VGVzdENsaWVudCggbmV3IEJvb2xlYW4oY29udGV4dC5nZXRUZXN0V2ViU2VydmljZSgpKSApOwotICAgICAgc2VydmVyV2lkZ2V0Xy5zZXRNb25pdG9yU2VydmljZShuZXcgQm9vbGVhbihjb250ZXh0LmdldE1vbml0b3JXZWJTZXJ2aWNlKCkpKTsKLSAgICAgIHNlcnZlcldpZGdldF8uc2V0U2VydmljZUdlbmVyYXRpb24oY29udGV4dC5nZXRHZW5lcmF0ZVdlYlNlcnZpY2UoKSk7ICAvL2p2aCAgICAgIAotICAgICAgc2VydmVyV2lkZ2V0Xy5zZXRDbGllbnRHZW5lcmF0aW9uKGNvbnRleHQuZ2V0R2VuZXJhdGVDbGllbnQoKSk7ICAvL2p2aAotICAgICAgc2VydmVyV2lkZ2V0Xy5pbnRlcm5hbGl6ZSgpOwotCX0KLQkKLSAgICAvKioKLQkgKiBEb2VzIGFueXRoaW5nIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBkZWZhdWx0IGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkLgotCSovCi0JcHJvdGVjdGVkIHZvaWQgcGVyZm9ybURlZmF1bHRzKCkKLQl7Ci0JICBzdXBlci5wZXJmb3JtRGVmYXVsdHMoKTsKLQkgIHNldFRvRGVmYXVsdHMoKTsKLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIHNldFRvRGVmYXVsdHMoKQotCXsKLQkgIFNjZW5hcmlvQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNjZW5hcmlvQ29udGV4dCgpOwotCi0gICAgICAvLyBTZXQgdmFsdWVzIGZyb20gY29udGV4dC4KLQkgIFR5cGVSdW50aW1lU2VydmVyIHNlcnZlcklkcyA9IG5ldyBUeXBlUnVudGltZVNlcnZlcigpOwotCSAgVHlwZVJ1bnRpbWVTZXJ2ZXIgY2xpZW50SWRzID0gbmV3IFR5cGVSdW50aW1lU2VydmVyKCk7Ci0JCQotCSAgc2VydmVySWRzLnNldFR5cGVJZCggY29udGV4dC5nZXRXZWJTZXJ2aWNlVHlwZURlZmF1bHQoKSApOwotCSAgY2xpZW50SWRzLnNldFR5cGVJZCggY29udGV4dC5nZXRDbGllbnRXZWJTZXJ2aWNlVHlwZURlZmF1bHQoKSApOwotCQkKLSAgICAgIHNlcnZlcldpZGdldF8uc2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKCBzZXJ2ZXJJZHMgKTsKLSAgICAgIHNlcnZlcldpZGdldF8uc2V0Q2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIoIGNsaWVudElkcyApOwotICAgICAgc2VydmVyV2lkZ2V0Xy5zZXRQdWJsaXNoU2VydmljZSggbmV3IEJvb2xlYW4oY29udGV4dC5nZXRMYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXJEZWZhdWx0KCkpICk7Ci0gICAgICBzZXJ2ZXJXaWRnZXRfLnNldEluc3RhbGxTZXJ2aWNlKCBuZXcgQm9vbGVhbihjb250ZXh0LmdldEluc3RhbGxXZWJTZXJ2aWNlRGVmYXVsdCgpKSApOwotICAgICAgc2VydmVyV2lkZ2V0Xy5zZXRJbnN0YWxsQ2xpZW50KCBuZXcgQm9vbGVhbihjb250ZXh0LmdldEluc3RhbGxDbGllbnREZWZhdWx0KCkpICk7Ci0gICAgICBzZXJ2ZXJXaWRnZXRfLnNldFN0YXJ0U2VydmljZSggbmV3IEJvb2xlYW4oY29udGV4dC5nZXRTdGFydFdlYlNlcnZpY2VEZWZhdWx0KCkpICk7Ci0gICAgICBzZXJ2ZXJXaWRnZXRfLnNldFRlc3RTZXJ2aWNlKCBuZXcgQm9vbGVhbihjb250ZXh0LmdldFRlc3RXZWJTZXJ2aWNlRGVmYXVsdCgpKSApOwotICAgICAgc2VydmVyV2lkZ2V0Xy5zZXRUZXN0Q2xpZW50KCBuZXcgQm9vbGVhbihjb250ZXh0LmdldFRlc3RXZWJTZXJ2aWNlRGVmYXVsdCgpKSApOwotICAgICAgc2VydmVyV2lkZ2V0Xy5zZXRNb25pdG9yU2VydmljZShuZXcgQm9vbGVhbihjb250ZXh0LmdldE1vbml0b3JXZWJTZXJ2aWNlRGVmYXVsdCgpKSk7Ci0gICAgICBzZXJ2ZXJXaWRnZXRfLnNldFNlcnZpY2VHZW5lcmF0aW9uKGNvbnRleHQuZ2V0R2VuZXJhdGVXZWJTZXJ2aWNlRGVmYXVsdCgpKTsgLy9qdmgKLSAgICAgIHNlcnZlcldpZGdldF8uc2V0Q2xpZW50R2VuZXJhdGlvbihjb250ZXh0LmdldEdlbmVyYXRlQ2xpZW50RGVmYXVsdCgpKTsgLy9qdmgKLSAgICAgIHNlcnZlcldpZGdldF8uaW50ZXJuYWxpemUoKTsKLQl9Ci0KLQkvKioKLQkgKiBEbyBhbnl0aGluZyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgT0sgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0JICogIEByZXR1cm4gd2hldGhlciBpdCBpcyBva2F5IHRvIGNsb3NlIHRoZSBwcmVmZXJlbmNlIHBhZ2UKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBwZXJmb3JtT2soKQotCXsKLQkgIHN0b3JlVmFsdWVzKCk7Ci0JICByZXR1cm4gdHJ1ZTsKLQl9Ci0KLQlwcml2YXRlIHZvaWQgc3RvcmVWYWx1ZXMoKQotCXsKLQkgIFNjZW5hcmlvQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNjZW5hcmlvQ29udGV4dCgpOwotCSAgCi0JICBUeXBlUnVudGltZVNlcnZlciBzZXJ2ZXJJZHMgPSBzZXJ2ZXJXaWRnZXRfLmdldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcigpOwotCSAgVHlwZVJ1bnRpbWVTZXJ2ZXIgY2xpZW50SWRzID0gc2VydmVyV2lkZ2V0Xy5nZXRDbGllbnRUeXBlUnVudGltZVNlcnZlcigpOwotCSAgCi0gICAgICBjb250ZXh0LnNldFdlYlNlcnZpY2VUeXBlKCBzZXJ2ZXJJZHMuZ2V0VHlwZUlkKCkgKTsKLSAgICAgIGNvbnRleHQuc2V0Q2xpZW50V2ViU2VydmljZVR5cGUoIGNsaWVudElkcy5nZXRUeXBlSWQoKSApOwotICAgICAgY29udGV4dC5zZXRHZW5lcmF0ZVByb3h5KCBzZXJ2ZXJXaWRnZXRfLmdldEdlbmVyYXRlUHJveHkoKS5ib29sZWFuVmFsdWUoKSApOwotICAgICAgY29udGV4dC5zZXRMYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXIoIHNlcnZlcldpZGdldF8uZ2V0UHVibGlzaFNlcnZpY2UoKS5ib29sZWFuVmFsdWUoKSApOwotICAgICAgY29udGV4dC5zZXRJbnN0YWxsV2ViU2VydmljZSggc2VydmVyV2lkZ2V0Xy5nZXRJbnN0YWxsU2VydmljZSgpLmJvb2xlYW5WYWx1ZSgpICk7Ci0gICAgICBjb250ZXh0LnNldEluc3RhbGxDbGllbnQoIHNlcnZlcldpZGdldF8uZ2V0SW5zdGFsbENsaWVudCgpLmJvb2xlYW5WYWx1ZSgpICk7Ci0gICAgICBjb250ZXh0LnNldFN0YXJ0V2ViU2VydmljZSggc2VydmVyV2lkZ2V0Xy5nZXRTdGFydFNlcnZpY2UoKS5ib29sZWFuVmFsdWUoKSApOwotICAgICAgY29udGV4dC5zZXRUZXN0V2ViU2VydmljZSggc2VydmVyV2lkZ2V0Xy5nZXRUZXN0U2VydmljZSgpLmJvb2xlYW5WYWx1ZSgpICk7Ci0gICAgICBjb250ZXh0LnNldE1vbml0b3JXZWJTZXJ2aWNlKHNlcnZlcldpZGdldF8uZ2V0TW9uaXRvclNlcnZpY2UoKS5ib29sZWFuVmFsdWUoKSk7Ci0gICAgICBjb250ZXh0LnNldEdlbmVyYXRlV2ViU2VydmljZShzZXJ2ZXJXaWRnZXRfLmdldFNlcnZpY2VHZW5lcmF0aW9uKCkpOyAgICAgIAotICAgICAgY29udGV4dC5zZXRHZW5lcmF0ZUNsaWVudChzZXJ2ZXJXaWRnZXRfLmdldENsaWVudEdlbmVyYXRpb24oKSk7Ci0JfQotCQotCXByb3RlY3RlZCB2b2lkIHBlcmZvcm1BcHBseSgpCi0JewotCSAgcGVyZm9ybU9rKCk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9zZXJ2ZXIvU3RhcnRTZXJ2ZXJXaWRnZXRDb250cmlidXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9zZXJ2ZXIvU3RhcnRTZXJ2ZXJXaWRnZXRDb250cmlidXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzk2YzFjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvc2VydmVyL1N0YXJ0U2VydmVyV2lkZ2V0Q29udHJpYnV0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkuc2VydmVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuc2VydmVyLlN0YXJ0U2VydmVyV2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLklOYW1lZFdpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLQotcHVibGljIGNsYXNzIFN0YXJ0U2VydmVyV2lkZ2V0Q29udHJpYnV0b3IgaW1wbGVtZW50cyBJTmFtZWRXaWRnZXRDb250cmlidXRvciAKLXsKLSAgcHJpdmF0ZSBJU2VydmVyICAgICAgc2VydmVyXzsKLQkgIAotICBwdWJsaWMgU3RhcnRTZXJ2ZXJXaWRnZXRDb250cmlidXRvciggSVNlcnZlciBzZXJ2ZXIgKQotICB7Ci0Jc2VydmVyXyA9IHNlcnZlcjsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbigpIAotICB7Ci0JcmV0dXJuIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfV1NfU1RBUlRfU0VSVkVSOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgCi0gIHsKLQlyZXR1cm4gIiI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFRpdGxlKCkgCi0gIHsKLQlyZXR1cm4gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfU1RBUlRfU0VSVkVSOwotICB9Ci0KLSAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBnZXRXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKSAKLSAgewotCXJldHVybiBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLQkgICAgICAgewotCQkJIHB1YmxpYyBXaWRnZXRDb250cmlidXRvciBjcmVhdGUoKSAKLQkJCSB7Ci0JCQkJcmV0dXJuIG5ldyBTdGFydFNlcnZlcldpZGdldCggc2VydmVyXyApOwotIAkJCSB9Ci0JICAgICAgIH07Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvc2VydmVyL1N0YXJ0U2VydmVyV2lkZ2V0RmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9zZXJ2ZXIvU3RhcnRTZXJ2ZXJXaWRnZXRGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NzE3YjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS9zZXJ2ZXIvU3RhcnRTZXJ2ZXJXaWRnZXRGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcwMzI4ICAgMTczMzQ1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIFBlZWsgbmV4dCBwYWdlIHByb2JsZW0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5zZXJ2ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkuZXh0ZW5zaW9uLlByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlOwotCi1wdWJsaWMgY2xhc3MgU3RhcnRTZXJ2ZXJXaWRnZXRGYWN0b3J5IGltcGxlbWVudHMgSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5IAotewotICBwcml2YXRlIElXZWJTZXJ2aWNlIHdlYnNlcnZpY2VfOwotICBwcml2YXRlIElDb250ZXh0IGNvbnRleHRfOwotICAKLSAgcHVibGljIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIGdldEZpcnN0TmFtZWRXaWRnZXQoKSAKLSAgewotICAgIElTZXJ2ZXIgc2VydmVyID0gbnVsbDsKLSAgICAKLSAgICBpZiggd2Vic2VydmljZV8gIT0gbnVsbCAmJiBjb250ZXh0Xy5nZXRSdW4oKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgaW5zdGFuY2VJZCA9IHdlYnNlcnZpY2VfLmdldFdlYlNlcnZpY2VJbmZvKCkuZ2V0U2VydmVySW5zdGFuY2VJZCgpOwotICAgICAgCi0gICAgICBpZiggaW5zdGFuY2VJZCAhPSBudWxsICYmIGluc3RhbmNlSWQubGVuZ3RoKCkgPiAwICkKLSAgICAgIHsKLSAgICAgICAgc2VydmVyID0gU2VydmVyQ29yZS5maW5kU2VydmVyKCBpbnN0YW5jZUlkICk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmKCBzZXJ2ZXIgIT0gbnVsbCAmJiBzZXJ2ZXIuZ2V0U2VydmVyU3RhdGUoKSAhPSBJU2VydmVyLlNUQVRFX1NUQVJURUQgKQotICAgIHsKLSAgICAgIHJldHVybiBuZXcgU3RhcnRTZXJ2ZXJXaWRnZXRDb250cmlidXRvciggc2VydmVyICk7Ci0gICAgfQotICAgIAotCXJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIGdldE5leHROYW1lZFdpZGdldCggSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3Igd2lkZ2V0Q29udHJpYnV0b3IpIAotICB7Ci0JcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFSZWdpc3RyeSkgCi0gIHsKLQlkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIFN0YXJ0U2VydmVyV2lkZ2V0RmFjdG9yeS5jbGFzcyApOwotCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJDb250ZXh0IiwgU3RhcnRTZXJ2ZXJXaWRnZXRGYWN0b3J5LmNsYXNzICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2UoIElXZWJTZXJ2aWNlIHdlYnNlcnZpY2UgKQotICB7Ci0gICAgd2Vic2VydmljZV8gPSB3ZWJzZXJ2aWNlOyAgCi0gIH0KLSAgcHVibGljIHZvaWQgc2V0Q29udGV4dCAoIElDb250ZXh0IGNvbnRleHQgKQotICB7Ci0gICAgY29udGV4dF8gPSBjb250ZXh0OyAgCi0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9TZXJ2ZXJXaXphcmRXaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9TZXJ2ZXJXaXphcmRXaWRnZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhmNmE5Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL3dpZGdldHMvU2VydmVyV2l6YXJkV2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQ1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQwNyAgIDEzNTQxNSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDA3ICAgMTM1NDQzIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNDEwICAgMTM1NDQyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDQxMCAgIDEzNTQ0MSBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDQxMCAgIDEzNTU2MiBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDQxMSAgIDEzNjE2NyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA0MTcgICAxMzYzOTAvMTM2MzkxLzEzNjE1OSBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDQxMyAgIDEzNTU4MSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDIwICAgMTM2MTU4IHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MjAgICAxMzY3MDUgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQyMCAgIDEzNjE4MiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA0MjAgICAxMzc4MjAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQyMCAgIDEzNTkxMiBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDQyMSAgIDEzNjc2MSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDI0ICAgMTM4MDUyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDQyNSAgIDEzNzgzMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDI2ICAgMTM4NTE5IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNDI3ICAgMTM4MDU4IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNTA0ICAgMTM4MDM1IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNTI0ICAgMTQyMjc2IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDYwNSAgIDE0NTA4MSBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDYwNyAgIDE0NDgyNiBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDYwNyAgIDE0NDA0OSBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDYxNCAgIDE0NjI3MCBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDYxNiAgIDE0NzMxNyBqb2FuQGNhLmlibS5jb20gLSBKb2FuIEhhZ2dhcnR5Ci0gKiAyMDA2MDcxNyAgIDE1MDU3NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICogMjAwNjA3MjYgICAxNTA4NjUgc2VuZ3BsQGNhLmlibS5jb20gLSAgU2VuZyBQaHVuZy1MdQotICogMjAwNjA4MDMgICAxNTI0ODYgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFR5cGluZyBXU0RMIGluIFNlcnZpY2UgZGVmaW5pdGlvbiBmaWVsZCBpcyB2ZXJ5IHNsb3cKLSAqIDIwMDYwODE3ICAgMTQwMDE3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBsb25nZXIgcHJvamVjdCBvciBzZXJ2ZXIvcnVudGltZSBzdHJpbmdzIGRvIG5vdCByZXNpemUgd2l6YXJkCi0gKiAyMDA2MDgyNSAgIDEzNTU3MCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgU2VydmljZSBpbXBsZW1lbnRhdGlvbiBVUkwgbm90IGRpc3BsYXllZCBwcm9wZXJseSBvbiBmaXJzdCBwYWdlCi0gKiAyMDA2MDgyOSAgIDE1NTQ0MSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgd2ViIHNlcnZpY2Ugd2l6YXJkIGhhbmdzIGR1cmluZyByZXNpemUKLSAqIDIwMDYwODMwICAgMTU1MTE0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIFVwZGF0ZWQgcGF0Y2ggZm9yIHRoaXMgZGVmZWN0LgotICogMjAwNjA4MzEgICAxNTU0NDEgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFNtYWxsIHR3ZWFrIGZvciB0aGlzIGJ1ZwotICogMjAwNjEwMDMgICAxNTkxNDIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYxMjEyICAgMTY0MTc3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBJbmNvcnJlY3QgdmFsaWRhdGlvbiBlcnJvciBjb21wbGFpbmluZyBhYm91dCBydW50aW1lIG5vdCBzdXBwb3J0aW5nIGEgcHJvamVjdCB0eXBlCi0gKiAyMDA2MTIxMiAgIDE1OTkxMSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgY2hhbmdpbmcgc2VydmljZSBkZWZpbml0aW9uIHJlc2V0cyBzb21lIGNvbmZpZ3VyYXRpb24gZmllbGRzCi0gKiAyMDA3MDIwNSAgIDE3MjY4NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgTlBFIGluIFNjZW5jYXJpbyBEZWZhdWx0cyBwcmVmZXJlbmNlcyBwYWdlCi0gKiAyMDA3MTEzMCAgIDIwMzgyNiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAyMDUgICAxNzAxNDEga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMjE1ICAgMjE2MzM3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwMzAxICAgMjIxMDM0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDMxMiAgIDE0NzQ0MiB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZyBIYQotICogMjAwODAzMTggICAyMTMzMzAgdHJ1bmdoYUBjYS5pYm0uY29tIC0gVHJ1bmcsIE5vbi1jb252ZW50aW9uYWwgSmF2YSBuYW1pbmcgcHJldmVudHMgY3JlYXRpbmcgV2ViIFNlcnZpY2VzIChjbGllbnQpCi0gKiAyMDA4MDMyNiAgIDE5ODQzOSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODA0MDIgICAxOTg0Mzkga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNDE2ICAgMjE1MDg0IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNDE3ICAgMjI3NTk5IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDYxMyAgIDIzNjUyMyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgT3ZlcndyaXRlIHNldHRpbmcgb24gV2ViIHNlcnZpY2Ugd2l6YXJkIGlzIGNvdXBsZWQgd2l0aCBwcmVmZXJlbmNlCi0gKiAyMDA5MDkyNiAgIDI0ODQ0OCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24sIFNob3VsZCBub3QgcmVzaXplIFdTIFdpemFyZCBmb3IgbG9uZyBXU0RMIGZpbGUgbmFtZXMKLSAqIDIwMDkwMTIxICAgMjYxNzMwIHpoYW5nQGNhLmlibS5jb20gLSBBbGxhbiBaaGFuZywgV2ViU2VydmljZSBjbGllbnQgcnVudGltZSBpZCByZXR1cm4gbnVsbAotICogMjAwOTAzMDIgICAyNDI0NjIgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgU2F2ZSBXZWIgc2VydmljZXMgd2l6YXJkIHNldHRpbmdzCi0gKiAyMDA5MDMxMyAgIDI2ODU2NyBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBwZXJzaXN0ZWQgd2l6YXJkIHNldHRpbmdzIGdvbmUgdW5sZXNzIGxhdW5jaGluZyBvbiBvYmplY3QKLSAqIDIwMDkwMzI2ICAgMjY5MDk3IGtjaG9uZ0BjYS5pYm0uY29tIC0gS2VpdGggQ2hvbmcsIFtBY2Nlc3NpYmlsaXR5XSBXZWIgc2VydmljZXMgd2l6YXJkIGRpYWxvZyBzaG91bGQgYmUgc2VsZWN0ZWQgYWZ0ZXIgY2FuY2VsaW5nIHRoZSBCcm93c2UgZm9yIGNsYXNzIGRpYWxvZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnJlc291cmNlLkltYWdlUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2luZG93LldpbmRvdzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uRGVmYXVsdGluZ1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uVmFsaWRhdGlvblV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuSU9iamVjdFNlbGVjdGlvbkxhdW5jaGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuSVBhY2thYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLlByb2plY3RTZWxlY3Rpb25EaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuV2ViU2VydmljZUNsaWVudFR5cGVXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LklPYmplY3RTZWxlY3Rpb25XaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0Lk9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0Lk9iamVjdFNlbGVjdGlvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5PYmplY3RTZWxlY3Rpb25XaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMub2JqZWN0LlRpbWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnJ1bnRpbWUuUHJvamVjdFNlbGVjdGlvbldpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLlJ1bnRpbWVTZXJ2ZXJTZWxlY3Rpb25EaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5wbHVnaW4uV2ViU2VydmljZUNyZWF0aW9uVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMucnVudGltZS5TZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuTGFiZWxzQW5kSWRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5wbHVnaW4uV2ViU2VydmljZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLkNvbWJvV2l0aEhpc3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbi5VSVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmxlQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmxlQ29udHJvbEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJsZUNvbnRyb2xFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmxlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Db250cm9sRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Db250cm9sTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb2RpZnlFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlJlY3RhbmdsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tYm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGFiZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2NhbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmZvcm1zLkh5cGVybGlua0dyb3VwOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmZvcm1zLkh5cGVybGlua1NldHRpbmdzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmZvcm1zLmV2ZW50cy5IeXBlcmxpbmtFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5mb3Jtcy5ldmVudHMuSUh5cGVybGlua0xpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmZvcm1zLndpZGdldHMuSHlwZXJsaW5rOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5QYWdlSW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TaW1wbGVXaWRnZXREYXRhQ29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldERhdGFFdmVudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS5wbHVnaW4uV1NVSVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VTY2VuYXJpbzsKLQotcHVibGljIGNsYXNzIFNlcnZlcldpemFyZFdpZGdldCBleHRlbmRzIFNpbXBsZVdpZGdldERhdGFDb250cmlidXRvciBpbXBsZW1lbnRzIFJ1bm5hYmxlLCBJUGFja2FibGUgewotCQotCS8vSU5GT1BPUFMKLSAgICAvKiBDT05URVhUX0lEIFdTV1NDRU4wMDAxIGZvciB0aGUgU2NlbmFyaW8gUGFnZSAqLwotCXByaXZhdGUgU3RyaW5nIElORk9QT1BfV1NXU0NFTl9QQUdFID0gIldTV1NDRU4wMDAxIjsKLQkgLyogQ09OVEVYVF9JRCBXU1dTQ0VOMDAxMCBmb3IgdGhlIFdlYiBTZXJ2aWNlIFR5cGUgY29tYm8gYm94IG9mIHRoZSBTY2VuYXJpbyBQYWdlICovCi0JIHByaXZhdGUgU3RyaW5nIElORk9QT1BfV1NXU0NFTl9DT01CT19TRVJWSUNFVFlQRSA9ICJXU1dTQ0VOMDAxMCI7Ci0JIC8qIENPTlRFWFRfSUQgV1NXU0NFTjAwMTQgZm9yIHRoZSBtb25pdG9yIHNlcnZpY2UgY2hlY2tib3ggb2YgdGhlIFNjZW5hcmlvIHBhZ2UgKi8KLQkgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9XU1dTQ0VOX0NIRUNLQk9YX01PTklUT1JfU0VSVklDRSA9ICJXU1dTQ0VOMDAxNCI7Ci0JIC8qIENPTlRFWFRfSUQgV1NXU0NFTjAwMTIgZm9yIHRoZSBMYXVuY2ggVURESSBjaGVjayBib3ggb2YgdGhlIFNjZW5hcmlvIFBhZ2UgKi8KLQkgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9XU1dTQ0VOX0NIRUNLQk9YX0xBVU5DSF9XUyA9ICJXU1dTQ0VOMDAxMiI7Ci0JIC8qIENPTlRFWFRfSUQgV1NXU0NFTjAwMjAgZm9yIHRoZSBTZXJ2aWNlIEltcGxlbWVuYXRpb24gdGV4dCBmaWVsZCBvZiB0aGUgU2NlbmFyaW8gUGFnZSAqLwotCSBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1dTV1NDRU5fVEVYVF9TRVJWSUNFX0lNUEwgPSAiV1NXU0NFTjAwMjAiOwotCSAvKiBDT05URVhUX0lEIFdTV1NDRU4wMDIxIGZvciB0aGVTZXJ2aWNlIFNsaWRlciBvZiB0aGUgU2NlbmFyaW8gUGFnZSAqLwotCSBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1dTV1NDRU5fU0NBTEVfU0VSVklDRSA9ICJXU1dTQ0VOMDAyMSI7Ci0JIC8qIENPTlRFWFRfSUQgV1NXU0NFTjAwMjIgZm9yIHRoZSBTZXJ2ZXIgaHlwZXJsaW5rIG9mIHRoZSBTY2VuYXJpbyBQYWdlICovCi0JIHByaXZhdGUgU3RyaW5nIElORk9QT1BfV1NXU0NFTl9IWVBFUkxJTktfU0VSVkVSID0gIldTV1NDRU4wMDIyIjsKLQkgLyogQ09OVEVYVF9JRCBXU1dTQ0VOMDAyMyBmb3IgdGhlIFJ1bnRpbWUgaHlwZXJsaW5rIG9mIHRoZSBTY2VuYXJpbyBQYWdlICovCi0JIHByaXZhdGUgU3RyaW5nIElORk9QT1BfV1NXU0NFTl9IWVBFUkxJTktfUlVOVElNRSA9ICJXU1dTQ0VOMDAyMyI7Ci0JIC8qIENPTlRFWFRfSUQgV1NXU0NFTjAwMjQgZm9yIHRoZVByb2plY3RzIGh5cGVybGluayBvZiB0aGUgU2NlbmFyaW8gUGFnZSAqLwotCSBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1dTV1NDRU5fSFlQRVJMSU5LX1BST0pFQ1RTICA9ICJXU1dTQ0VOMDAyNCI7Ci0JIC8qIENPTlRFWFRfSUQgV1NXU0NFTjAwMzAgZm9yIHRoZSBPdmVyd3JpdGUgRmlsZXMgY2hlY2tib3ggb2YgdGhlIFNjZW5hcmlvIFBhZ2UgKi8KLQkgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9XU1dTQ0VOX0NIRUNLQk9YX09WRVJXUklURSA9ICJXU1dTQ0VOMDAzMCI7Ci0JIAotCXByaXZhdGUgU2NhbGVTZWxlY3Rpb25MaXN0ZW5lciBzY2FsZVNlbGVjdGlvbkxpc3RlbmVyID0gbmV3IFNjYWxlU2VsZWN0aW9uTGlzdGVuZXIoKTsKLQlwcml2YXRlIExpc3RlbmVyIHN0YXR1c0xpc3RlbmVyXzsKLQlwcml2YXRlIE1vZGlmeUxpc3RlbmVyIG9iamVjdE1vZGlmeUxpc3RlbmVyXyA7Ci0JcHJpdmF0ZSBpbnQgdmFsaWRhdGlvblN0YXRlXzsKLQlib29sZWFuIHZhbGlkT2JqZWN0U2VsZWN0aW9uXyA9IHRydWU7Ci0KLQlwcml2YXRlIEltYWdlUmVnaXN0cnkgaW1hZ2VSZWdfOwotCQotCXByaXZhdGUgVHlwZVJ1bnRpbWVTZXJ2ZXIgaWRzXzsKLQlwcml2YXRlIExhYmVsc0FuZElkcyBsYWJlbElkc187Ci0JcHJpdmF0ZSBTdHJpbmcgc2VydmljZVByb2plY3ROYW1lXzsKLQlwcml2YXRlIElQcm9qZWN0IGluaXRpYWxQcm9qZWN0XzsKLQlwcml2YXRlIFN0cmluZyBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfOwotCXByaXZhdGUgU3RyaW5nIHNlcnZpY2VDb21wb25lbnRUeXBlXzsKLQlwcml2YXRlIFdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlcl87Ci0JcHJpdmF0ZSBib29sZWFuIG5lZWRFYXJfOwotCQkgCi0JcHJpdmF0ZSBib29sZWFuIGRldmVsb3BTZXJ2aWNlXzsKLQlwcml2YXRlIGJvb2xlYW4gYXNzZW1ibGVTZXJ2aWNlXzsKLQlwcml2YXRlIGJvb2xlYW4gZGVwbG95U2VydmljZV87Ci0JCi0JcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3RTZWxlY3Rpb25fOwotCXByaXZhdGUgQm9vbGVhbiB0ZXN0U2VydmljZV87Ci0JcHJpdmF0ZSBCb29sZWFuIHN0YXJ0U2VydmljZV87Ci0JcHJpdmF0ZSBCb29sZWFuIGluc3RhbGxTZXJ2aWNlXzsKLQotCXByaXZhdGUgYm9vbGVhbiBkaXNwbGF5UHJlZmVyZW5jZXNfOwotCXByaXZhdGUgYm9vbGVhbiBwcmVmZXJlbmNlc1BhZ2VfOwotCi0JcHJpdmF0ZSBDb21wb3NpdGUgZ3JvdXBDb21wb3NpdGVfOwotCXByaXZhdGUgQ29tcG9zaXRlIGhDb21wU2VydmljZV87CQotCXByaXZhdGUgV2ViU2VydmljZUNsaWVudFR5cGVXaWRnZXQgY2xpZW50V2lkZ2V0XzsKLSAgICBwcml2YXRlIExhYmVsIHNlcnZpY2VMYWJlbF87Ci0JcHJpdmF0ZSBDb21ibyB3ZWJzZXJ2aWNlVHlwZV87Ci0JcHJpdmF0ZSBDb21ib1dpdGhIaXN0b3J5IHNlcnZpY2VJbXBsXzsKLQlwcml2YXRlIFNjYWxlIHNlcnZpY2VTY2FsZV87Ci0JcHJpdmF0ZSBMYWJlbCB0b3BvbG9neVNwb3RfOwotCXByaXZhdGUgQnV0dG9uIGJyb3dzZUJ1dHRvbl87Ci0JcHJpdmF0ZSBCdXR0b24gcHVibGlzaEJ1dHRvbl87Ci0JcHJpdmF0ZSBCdXR0b24gbW9uaXRvckJ1dHRvbl87Ci0JcHJpdmF0ZSBCdXR0b24gb3ZlcndyaXRlQnV0dG9uXzsJCi0JcHJpdmF0ZSBTZXJ2aWNlSW1wbFNlbGVjdGlvbkRpYWxvZyBicm93c2VEaWFsb2dfOwotCXByaXZhdGUgUHJvamVjdFNlbGVjdGlvbkRpYWxvZyBwcm9qZWN0RGlhbG9nXzsKLQlwcml2YXRlIEh5cGVybGluayBoTGlua1NlcnZpY2VSdW50aW1lXzsKLQlwcml2YXRlIEh5cGVybGluayBoTGlua1NlcnZpY2VTZXJ2ZXJfOwotCXByaXZhdGUgSHlwZXJsaW5rIGhMaW5rU2VydmljZVByb2plY3RfOwotCXByaXZhdGUgSHlwZXJsaW5rIGhMaW5rU2VydmljZUVBUl87Ci0JCQotCXByaXZhdGUgT2JqZWN0IG9iamVjdFNlbGVjdGlvbldpZGdldF87IC8vbWF5IGJlIElPYmplY3RTZWxlY3Rpb25MYXVuY2hhYmxlIG9yIElPYmplY3RTZWxlY3Rpb25XaWRnZXQKLQkKLQlwcml2YXRlIFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHRfOwotCQotCXByaXZhdGUgVGltZXIgdGltZXJfID0gbnVsbDsKLQkJCi0JcHJpdmF0ZSBVSVV0aWxzIHV0aWxzXyA9IG5ldyBVSVV0aWxzKCJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkiKTsKLQkKLQlwcml2YXRlIGJvb2xlYW4gZm9yY2VSZWZyZXNoUnVudGltZSA9IGZhbHNlOwotCQotCXByaXZhdGUgU3RyaW5nIEdSQVBISUNfU0VSVklDRV8wPSJpY29ucy9zZXJ2aWNlX3Rlc3QuanBnIjsgLy8kTk9OLU5MUy1OJAotCXByaXZhdGUgU3RyaW5nIEdSQVBISUNfU0VSVklDRV8xPSJpY29ucy9zZXJ2aWNlX3J1bi5qcGciOyAgLy8kTk9OLU5MUy1OJAotCXByaXZhdGUgU3RyaW5nIEdSQVBISUNfU0VSVklDRV8yPSJpY29ucy9zZXJ2aWNlX2luc3RhbGwuanBnIjsgLy8kTk9OLU5MUy1OJAotCXByaXZhdGUgU3RyaW5nIEdSQVBISUNfU0VSVklDRV8zPSJpY29ucy9zZXJ2aWNlX2RlcGxveS5qcGciOyAvLyROT04tTkxTLU4kCi0JcHJpdmF0ZSBTdHJpbmcgR1JBUEhJQ19TRVJWSUNFXzQ9Imljb25zL3NlcnZpY2VfYXNzZW1ibGUuanBnIjsgLy8kTk9OLU5MUy1OJAotCXByaXZhdGUgU3RyaW5nIEdSQVBISUNfU0VSVklDRV81PSJpY29ucy9zZXJ2aWNlX2RldmVsb3AuanBnIjsgLy8kTk9OLU5MUy1OJAotCQkKLQlwcml2YXRlIFN0cmluZyBJQ09OX1NDQUxFX0JHXzA9Imljb25zL3NjYWxlMF9iZ3JvdW5kLmpwZyI7IC8vJE5PTi1OTFMtTiQKLQlwcml2YXRlIFN0cmluZyBJQ09OX1NDQUxFX0JHXzE9Imljb25zL3NjYWxlMV9iZ3JvdW5kLmpwZyI7IC8vJE5PTi1OTFMtTiQKLQlwcml2YXRlIFN0cmluZyBJQ09OX1NDQUxFX0JHXzI9Imljb25zL3NjYWxlMl9iZ3JvdW5kLmpwZyI7IC8vJE5PTi1OTFMtTiQKLQlwcml2YXRlIFN0cmluZyBJQ09OX1NDQUxFX0JHXzM9Imljb25zL3NjYWxlM19iZ3JvdW5kLmpwZyI7IC8vJE5PTi1OTFMtTiQKLQlwcml2YXRlIFN0cmluZyBJQ09OX1NDQUxFX0JHXzQ9Imljb25zL3NjYWxlNF9iZ3JvdW5kLmpwZyI7IC8vJE5PTi1OTFMtTiQKLQlwcml2YXRlIFN0cmluZyBJQ09OX1NDQUxFX0JHXzU9Imljb25zL3NjYWxlNV9iZ3JvdW5kLmpwZyI7IC8vJE5PTi1OTFMtTiQKLQlwcml2YXRlIFN0cmluZyBJQ09OX1NDQUxFX0JHXzY9Imljb25zL3NjYWxlNl9iZ3JvdW5kLmpwZyI7IC8vJE5PTi1OTFMtTiQKLQotCXByaXZhdGUgU3RyaW5nIFNFUlZJQ0VfUlVOVElNRV9QUkVGSVggPSBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfUlVOVElNRVNfTElTVCA7IAotICAgIHByaXZhdGUgU3RyaW5nIFNFUlZJQ0VfU0VSVkVSX1BSRUZJWCA9ICBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfU0VSVkVSU19MSVNUOwotICAgIHByaXZhdGUgU3RyaW5nIFNFUlZJQ0VfUFJPSkVDVF9QUkVGSVggPSBDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfU0VSVklDRV9QUk9KRUNUOwotICAgIHByaXZhdGUgU3RyaW5nIFNFUlZJQ0VfRUFSX1BSRUZJWCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9TRVJWSUNFX0VBUl9QUk9KRUNUOwotICAgIAotICAgIC8qKgotICAgICAqIEBwYXJhbSBkaXNwbGF5UHJlZmVyZW5jZXMgU2V0IHRvIHRydWUgaWYgcHJlZmVyZW5jZXMgc3VjaCBhcyBvdmVyd3JpdGUgc2hvdWxkIGJlIGRpc3BsYXllZCBvbiB0aGUgd2l6YXJkIHBhZ2UKLSAgICAgKiBAcGFyYW0gcHJlZlBhZ2UgIFNldCB0byB0cnVlIGlmIHRoZSB3aWRnZXQgaXMgYmVpbmcgdXNlZCBvbiB0aGUgcHJlZmVyZW5jZXMgcGFnZS4gIEFsdGVycyB3aWRnZXQgbGF5b3V0LgotICAgICAqLwotCXB1YmxpYyBTZXJ2ZXJXaXphcmRXaWRnZXQoYm9vbGVhbiBkaXNwbGF5UHJlZmVyZW5jZXMsIGJvb2xlYW4gcHJlZlBhZ2UpIHsKLQkJZGlzcGxheVByZWZlcmVuY2VzXyA9IGRpc3BsYXlQcmVmZXJlbmNlczsKLQkJcHJlZmVyZW5jZXNQYWdlXyA9IHByZWZQYWdlOwotCQlpbml0SW1hZ2VSZWdpc3RyeSgpOwotCQl2YWxpZGF0aW9uU3RhdGVfID0gVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX0FMTDsKLQl9Ci0JCi0JcHJpdmF0ZSBDb21wb3NpdGUgc2VydmljZUNvbXBvc2l0ZV87Ci0JCi0JLyoqCi0JICogUnVuIHRoaXMgU2VydmVyV2l6YXJkV2lkZ2V0LCB3aGljaCB2YWxpZGF0ZXMgdGhlIGVudHJ5IGZpZWxkIHZhbHVlcy4KLQkgKi8KLQlwdWJsaWMgdm9pZCBydW4oKSB7Ci0JCQotCQkvLyBkbyBtaW5pbWFsIGNoZWNrIGhlcmUsIHRoaXMgY2FsbCB3aWxsIGRldGVybWluZSBpZiB3ZSBhdCBsZWFzdAotCQkvLyBoYXZlIGEgInZhbGlkT2JqZWN0U2VsZWN0aW9uXyIKLQkJY2hlY2tTZXJ2aWNlSW1wbFRleHRTdGF0dXMoKTsKLQkJCi0JCWlmICh2YWxpZE9iamVjdFNlbGVjdGlvbl8pCi0JCXsKLQkJCWJvb2xlYW4gcmVmcmVzaFJ1bnRpbWUgPSAoZ2V0V2ViU2VydmljZVNjZW5hcmlvKCkgIT0gV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV04pOyAKLQkJCQotCQkJaWYgKG9iamVjdFNlbGVjdGlvbldpZGdldF8gaW5zdGFuY2VvZiBJT2JqZWN0U2VsZWN0aW9uTGF1bmNoYWJsZSkKLQkJICAgICAgIHsKLQkJCQlJT2JqZWN0U2VsZWN0aW9uTGF1bmNoYWJsZSBsYXVuY2hhYmxlID0gKElPYmplY3RTZWxlY3Rpb25MYXVuY2hhYmxlKW9iamVjdFNlbGVjdGlvbldpZGdldF87Ci0JCQkJY2FsbE9iamVjdFRyYW5zZm9ybWF0aW9uKGxhdW5jaGFibGUuZ2V0T2JqZWN0U2VsZWN0aW9uKCksIGxhdW5jaGFibGUuZ2V0UHJvamVjdCgpLCBsYXVuY2hhYmxlLmdldENvbXBvbmVudE5hbWUoKSwgcmVmcmVzaFJ1bnRpbWUpOwkJCQkJCQkJCi0JCSAgICAgICB9Ci0JCQllbHNlIAotCQkJewotCQkJCUlPYmplY3RTZWxlY3Rpb25XaWRnZXQgd2lkZ2V0ID0gKElPYmplY3RTZWxlY3Rpb25XaWRnZXQpb2JqZWN0U2VsZWN0aW9uV2lkZ2V0XzsKLQkJCQljYWxsT2JqZWN0VHJhbnNmb3JtYXRpb24od2lkZ2V0LmdldE9iamVjdFNlbGVjdGlvbigpLCB3aWRnZXQuZ2V0UHJvamVjdCgpLCB3aWRnZXQuZ2V0Q29tcG9uZW50TmFtZSgpLCByZWZyZXNoUnVudGltZSk7Ci0JCSAgICB9CQotCQl9Ci0JCWVsc2UKLQkJCXNldE9iamVjdFNlbGVjdGlvbihudWxsKTsKLQkJCi0JCS8vIGRvIGZ1bGwgdmFsaWRhdGlvbiBhZnRlciBhbGwgdHJhbnNmb3JtYXRpb25zIGFuZCBjYWxjdWxhdGlvbnMgaGF2ZSBvY2N1cnJlZAotCQl2YWxpZGF0aW9uU3RhdGVfID0gVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX0FMTDsKLQkJc3RhdHVzTGlzdGVuZXJfLmhhbmRsZUV2ZW50KG51bGwpOwkJCi0JfQotCQotCS8qKgotCSAqIFBhY2sgdGhpcyB3aWRnZXQgYW5kIHRoZSBjbGllbnQtc2lkZSB3aWRnZXQgYXMgd2VsbC4gCi0JICovCi0JcHJpdmF0ZSB2b2lkIHBhY2tTZWxmKCkgewotCQkvLyBkb24ndCBuZWVkIHRvIGNhbGwgcGFja0l0KCksIHNpbmNlIGNsaWVudFdpZGdldF8gaGFzIGEgY2FsbGJhY2sgdG8gcGFja0l0KCkgYWxyZWFkeS4KLQkJY2xpZW50V2lkZ2V0Xy5wYWNrSXQoKTsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuSVBhY2thYmxlI3BhY2tJdCgpCi0JICovCi0JcHVibGljIHZvaWQgcGFja0l0KCkgewkJCi0JCWdyb3VwQ29tcG9zaXRlXy5wYWNrKHRydWUpOwotCQl1dGlsc18uaG9yaXpvbnRhbFJlc2l6ZShncm91cENvbXBvc2l0ZV8uZ2V0U2hlbGwoKSwgZ3JvdXBDb21wb3NpdGVfLCBVSVV0aWxzLkRFRkFVTFRfUEFERElORyk7Ci0JfQotCQotCXB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGFkZENvbnRyb2xzKENvbXBvc2l0ZSBwYXJlbnQsCi0JCQlMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lcikgewotCQkJCQotCQlzdGF0dXNMaXN0ZW5lcl8gPSBzdGF0dXNMaXN0ZW5lcjsKLQkJdXRpbHNfLmNyZWF0ZUluZm9Qb3AocGFyZW50LCBJTkZPUE9QX1dTV1NDRU5fUEFHRSk7Ci0JCQotCQlDb21wb3NpdGUgdHlwZUNvbXBvc2l0ZSA9IHV0aWxzXy5jcmVhdGVDb21wb3NpdGUocGFyZW50LCAzKTsKLQotCQl3ZWJzZXJ2aWNlVHlwZV8gPSB1dGlsc18uY3JlYXRlQ29tYm8odHlwZUNvbXBvc2l0ZSwKLQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfV0VCU0VSVklDRVRZUEUsCi0JCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdQUl9DT01CT19UWVBFLAotCQkJCUlORk9QT1BfV1NXU0NFTl9DT01CT19TRVJWSUNFVFlQRSwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIKLQkJCQkJCXwgU1dULlJFQURfT05MWSk7Ci0JCUdyaWREYXRhIGdkYXRhMSA9IChHcmlkRGF0YSkgd2Vic2VydmljZVR5cGVfLmdldExheW91dERhdGEoKTsKLQkJZ2RhdGExLmhvcml6b250YWxTcGFuID0gMjsKLQkJd2Vic2VydmljZVR5cGVfLnNldExheW91dERhdGEoZ2RhdGExKTsKLQkJCi0JCXdlYnNlcnZpY2VUeXBlXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgU2VsZWN0aW9uTGlzdGVuZXIoKXsKLQkJCXB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7fQotCQkJCi0JCQlwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7Ci0JCQkJU3RyaW5nIG9sZFR5cGVJZCA9IGlkc18uZ2V0VHlwZUlkKCk7Ci0JCQkJaW50IGN1cnJlbnRTZWxlY3Rpb25JZHggPSB3ZWJzZXJ2aWNlVHlwZV8uZ2V0U2VsZWN0aW9uSW5kZXgoKTsKLQkJCQlTdHJpbmcgY3VycmVudFR5cGVJZCA9IGxhYmVsSWRzXy5nZXRJZHNfKClbY3VycmVudFNlbGVjdGlvbklkeF07Ci0JCQkJaWYgKCFvbGRUeXBlSWQuZXF1YWxzKGN1cnJlbnRUeXBlSWQpKSB7CQkJCQkKLQkJCQkJaWRzXy5zZXRUeXBlSWQoY3VycmVudFR5cGVJZCk7Ci0JCQkJCQotCQkJCQkvLyBkb24ndCBuZWVkIHRvIHJlZnJlc2ggcnVudGltZSBvciB2YWxpZGF0ZSBmaWVsZHMgaWYgd2UgYXJlIG9uIHRoZSBwcmVmZXJlbmNlIHBhZ2UsIGp1c3QgcmV0dXJuCi0JCQkJCWlmIChwcmVmZXJlbmNlc1BhZ2VfKQotCQkJCQkJcmV0dXJuOwotCQkJCQkJCi0JCQkJCWludCBvbGRTY2VuYXJpbyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNjZW5hcmlvRnJvbVR5cGVJZChvbGRUeXBlSWQpOwotCQkJCQlpbnQgY3VycmVudFNjZW5hcmlvID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2NlbmFyaW9Gcm9tVHlwZUlkKGN1cnJlbnRUeXBlSWQpOwotCi0JCQkgICAgICBvYmplY3RTZWxlY3Rpb25XaWRnZXRfID0gZ2V0U2VsZWN0aW9uV2lkZ2V0KCk7Ci0JCQkJCS8vIGNoYW5nZSB0aGUgbGFiZWwgZm9yIHRoZSBzZXJ2aWNlCi0JCQkJCS8vIGltcGxlbWVudGF0aW9uL2RlZmluaXRpb24gYmFzZWQgb24gdGhlIHdlYiBzZXJ2aWNlIHR5cGUKLQkJCQkJaGFuZGxlVHlwZUNoYW5nZSgpOwkJCQkJCi0KLQkJCQkJLy8gQWZ0ZXIgYnVnIDE1OTkxMSwgd2Ugd2lsbCBub3QgcmVmcmVzaCB0aGUgcnVudGltZSBpbiBUT1BET1dOIHNjZW5hcmlvIHVubGVzcyB3ZSBhYnNvbHV0ZWx5Ci0JCQkJCS8vIGhhdmUgdG8uICBUaGVyZWZvcmUsIGlmIHdlIGFyZSBzd2l0Y2hpbmcgZnJvbSBhbm90aGVyIHNjZW5hcmlvIHR5cGUsIHdlIHNob3VsZCBjaGVjayBpZiB0aGUgCi0JCQkJCS8vIGN1cnJlbnQgc2VsZWN0aW9ucyBhcmUgdmFsaWQgZm9yIHRoaXMgVE9QRE9XTiBzY2VuYXJpbywgaWYgbm90LCB0cnkgdG8gcGljayBhIG1vcmUgc3VpdGFibGUgCi0JCQkJCS8vIHJ1bnRpbWUuCi0JCQkJCWlmIChjdXJyZW50U2NlbmFyaW8gPT0gV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV04pIHsKLQkJCQkJCXZhbGlkYXRpb25TdGF0ZV8gPSBWYWxpZGF0aW9uVXRpbHMuVkFMSURBVEVfU0VSVkVSX1JVTlRJTUVfQ0hBTkdFUzsKLQkJCQkJCQotCQkJCQkJLy8gdGhpcyB3aWxsIGZvcmNlIGEgcmVmcmVzaCB0aGUgbmV4dCB0aW1lIHRoZSB3c2RsIGlzIGNoYW5nZWQKLQkJCQkJCWZvcmNlUmVmcmVzaFJ1bnRpbWUgPSAhY2hlY2tFcnJvclN0YXR1cygpLmlzT0soKTsKLQkJCQkJfQotCQkJCQkKLQkJCQkJLy9pZiB0aGUgd2ViIHNlcnZpY2UgdHlwZSBjaGFuZ2UgaXMgZnJvbSBvbmUgdG9wLWRvd24gdHlwZSB0byBhbm90aGVyCi0JCQkJCS8vdG9wLWRvd24gdHlwZSBsZWF2ZSB0aGUgb2JqZWN0IHNlbGVjdGlvbiBmaWVsZCBpbiB0YWN0IGFuZCByZWZyZXNoCi0JCQkJCS8vdGhlIHNlcnZlci9ydW50aW1lIHByb2plY3QgZGVmYXVsdGluZy4KLQkJCQkJLy9PdGhlcndpc2UgY2xlYXIgdGhlIG9iamVjdCBzZWxlY3Rpb24gZmllbGQgc2luY2UgaXQncyB2YWx1ZSBpcyBub3QgdmFsaWQgYW55bW9yZQotCQkJCQlpZiAob2xkU2NlbmFyaW89PVdlYlNlcnZpY2VTY2VuYXJpby5UT1BET1dOICYmIGN1cnJlbnRTY2VuYXJpbz09V2ViU2VydmljZVNjZW5hcmlvLlRPUERPV04pCQkJCQkJCi0JCQkJCXsKLQkJCQkJCS8vIGlmIHN3aXRjaGluZyBmcm9tIG9uZSBUT1BET1dOIHNjZW5hcmlvIHRvIGFub3RoZXIgVE9QRE9XTiBzY2VuYXJpbyBhbmQKLQkJCQkJCS8vIHdlJ3ZlIGRldGVybWluZWQgdGhhdCB0aGUgY3VycmVudCBydW50aW1lIHNlbGVjdGlvbiBpcyBub3Qgc3VpdGFibGUsIHdlIAotCQkJCQkJLy8gY2FuIHJlZnJlc2ggdGhlIHJ1bnRpbWUgbm93IChkb24ndCBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IHRpbWUgdGhlCi0JCQkJCQkvLyB3c2RsIGlzIGNoYW5nZWQpLgotCQkJCQkJaWYgKGZvcmNlUmVmcmVzaFJ1bnRpbWUpIHsKLQkJCQkJCQlyZWZyZXNoU2VydmVyUnVudGltZVNlbGVjdGlvbigpOwotCQkJCQkJCWZvcmNlUmVmcmVzaFJ1bnRpbWUgPSBmYWxzZTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCQllbHNlCi0JCQkJCXsKLQkJCQkJCS8vY2xlYXIgdGhlIG9iamVjdCBzZWxlY3Rpb24gZmllbGQKLQkJCQkJCS8vIHNlcnZpY2VJbXBsIG1heSBiZSBudWxsIGlmIG9uIHRoZSBwcmVmZXJlbmNlcyBwYWdlCi0JCQkJCQlpZiAoc2VydmljZUltcGxfICE9IG51bGwpCi0JCQkJCQl7Ci0JCQkJCQkJc2VydmljZUltcGxfLnJlbW92ZU1vZGlmeUxpc3RlbmVyKG9iamVjdE1vZGlmeUxpc3RlbmVyXyk7Ci0JCQkJCQkJc2VydmljZUltcGxfLnNldFRleHQoIiIpOwotCQkJCQkJCXNldE9iamVjdFNlbGVjdGlvbihudWxsKTsKLQkJCQkJCQlzZXJ2aWNlSW1wbF8uYWRkTW9kaWZ5TGlzdGVuZXIob2JqZWN0TW9kaWZ5TGlzdGVuZXJfKTsKLQkJCQkJCX0JCQkJCQkgICAKLQkJCQkJfQkKLQkJCQkJLy9yZXN0b3JlIHdpZGdldCB2YWx1ZXMsIHNlcnZpY2VJbXBsIG1heSBiZSBudWxsIGlmIG9uIHRoZSBwcmVmZXJlbmNlcyBwYWdlCi0JCQkJCWlmIChzZXJ2aWNlSW1wbF8gIT0gbnVsbCkgewotCQkJCQkJU3RyaW5nIHdlYlNlcnZpY2VUeXBlSUQ9IG51bGw7Ci0JCQkJCQkgICBpZiAoaWRzXyAhPSBudWxsKQotCQkJCQkJCSAgIHdlYlNlcnZpY2VUeXBlSUQgPSBpZHNfLmdldFR5cGVJZCgpOwotCQkJCQkJCXNlcnZpY2VJbXBsXy5yZW1vdmVNb2RpZnlMaXN0ZW5lcihvYmplY3RNb2RpZnlMaXN0ZW5lcl8pOwotCQkJCQkJCVN0cmluZyBjdXJyZW50bHlTZWxlY3RlZFZhbHVlID0gc2VydmljZUltcGxfLmdldFRleHQoKTsKLQkJCQkJCQlzZXJ2aWNlSW1wbF8ucmVtb3ZlQWxsKCk7Ci0JCQkJCQkJaWYgKGN1cnJlbnRseVNlbGVjdGVkVmFsdWUgIT0gbnVsbCkKLQkJCQkJCQkJc2VydmljZUltcGxfLnNldFRleHQoY3VycmVudGx5U2VsZWN0ZWRWYWx1ZSk7Ci0JCQkJCQkJc2VydmljZUltcGxfLnJlc3RvcmVXaWRnZXRIaXN0b3J5KHdlYlNlcnZpY2VUeXBlSUQpOwotCQkJCQkJCXNlcnZpY2VJbXBsXy5hZGRNb2RpZnlMaXN0ZW5lcihvYmplY3RNb2RpZnlMaXN0ZW5lcl8pOwotCi0JCQkJCX0KLQotCQkJICAgdmFsaWRhdGlvblN0YXRlXyA9IFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9BTEw7Ci0JCQkgICBzdGF0dXNMaXN0ZW5lcl8uaGFuZGxlRXZlbnQobnVsbCk7CQkJICAgCi0JCQkJCQotCQkJfQotCQkgIH0KLQkJCQotCQl9KTsKLQkJCi0JCS8vIENyZWF0ZSB0ZXh0IGZpZWxkIGFuZCBicm93c2UgZm9yIG9iamVjdCBzZWxlY3Rpb24gaWYgbm90IG9uIHByZWZlcmVuY2VzIHBhZ2UKLQkJaWYgKCFwcmVmZXJlbmNlc1BhZ2VfKQotCQl7Ci0JCQkvL3RleHQgb2YgdGhpcyBsYWJlbCBpcyBiYXNlZCBvbiB0aGUgd2ViIHNlcnZpY2UgdHlwZSBzZWxlY3RlZCBpbiB3ZWJzZXJ2aWNlVHlwZV8gY29tYm8KLQkJCXNlcnZpY2VMYWJlbF8gPSBuZXcgTGFiZWwoIHR5cGVDb21wb3NpdGUsIFNXVC5XUkFQKTsKLQkJCXNlcnZpY2VMYWJlbF8uc2V0VGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuTEFCRUxfV0VCU0VSVklDRUlNUEwpOwotCQkJc2VydmljZUxhYmVsXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1RFWFRfSU1QTCk7Ci0KLQkJCXNlcnZpY2VJbXBsXyA9IG5ldyBDb21ib1dpdGhIaXN0b3J5KHR5cGVDb21wb3NpdGUsIFNXVC5MRUZUIHwgU1dULkJPUkRFUiwgV1NVSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldERpYWxvZ1NldHRpbmdzKCkpOwotCQkJR3JpZERhdGEgZ3JpZGRhdGEgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMKTsKLQkJCWdyaWRkYXRhLndpZHRoSGludCA9IDIyNTsKLQkJCXNlcnZpY2VJbXBsXy5zZXRMYXlvdXREYXRhKCBncmlkZGF0YSApOwotCQkJc2VydmljZUltcGxfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fVEVYVF9JTVBMKTsKLQkJCXV0aWxzXy5jcmVhdGVJbmZvUG9wKHNlcnZpY2VJbXBsXywgSU5GT1BPUF9XU1dTQ0VOX1RFWFRfU0VSVklDRV9JTVBMKTsKLQkJCQotCQkJb2JqZWN0TW9kaWZ5TGlzdGVuZXJfID0gbmV3IE1vZGlmeUxpc3RlbmVyKCl7Ci0JCQkJcHVibGljIHZvaWQgbW9kaWZ5VGV4dChNb2RpZnlFdmVudCBlKSB7Ci0JCQkJICAgIGlmIChzZXJ2aWNlSW1wbF8uZ2V0VGV4dCgpLmluZGV4T2YoJzonKSA+IDApIHsKLQkJCQkgICAgICAgIHRpbWVyXyA9IFRpbWVyLm5ld0luc3RhbmNlKHRpbWVyXywgRGlzcGxheS5nZXRDdXJyZW50KCksIFNlcnZlcldpemFyZFdpZGdldC50aGlzKTsKLQkJCQkgICAgICAgIHRpbWVyXy5zdGFydFRpbWVyKCk7Ci0JCQkJICAgIH0KLQkJCQkgICAgZWxzZQotCQkJCSAgICAgICAgcnVuKCk7Ci0JCQkJfQotCQkJfTsKLQkJCQotCQkJc2VydmljZUltcGxfLmFkZE1vZGlmeUxpc3RlbmVyKG9iamVjdE1vZGlmeUxpc3RlbmVyXyk7Ci0JCQlzZXJ2aWNlSW1wbF8uYWRkU2VsZWN0aW9uTGlzdGVuZXIoCW5ldyBTZWxlY3Rpb25BZGFwdGVyKCkKLQkJCXsKLQkJCQkJcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQkJCQkJaW50IGluZGV4ID0gc2VydmljZUltcGxfLmdldFNlbGVjdGlvbkluZGV4KCk7Ci0JCQkJCQlzZXJ2aWNlSW1wbF8ucmVtb3ZlTW9kaWZ5TGlzdGVuZXIob2JqZWN0TW9kaWZ5TGlzdGVuZXJfKTsKLQkJCQkgICAgICAgCXNlcnZpY2VJbXBsXy5zZXRUZXh0KHNlcnZpY2VJbXBsXy5nZXRJdGVtKGluZGV4KSk7Ci0JCQkJICAgICAgICBzZXJ2aWNlSW1wbF8uYWRkTW9kaWZ5TGlzdGVuZXIob2JqZWN0TW9kaWZ5TGlzdGVuZXJfKTsKLQkJCQl9Ci0JCQl9KTsKLQkJCWJyb3dzZUJ1dHRvbl8gPSB1dGlsc18uY3JlYXRlUHVzaEJ1dHRvbih0eXBlQ29tcG9zaXRlLAotCQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX0JST1dTRSwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9CVVRUT05fQlJPV1NFX0lNUEwsIG51bGwpOwotCi0JCQlicm93c2VCdXR0b25fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZXJ2aWNlSW1wbEJyb3dzZUxpc3RlbmVyKCkpOwotCQl9Ci0JCS8vIFNlcnZpY2UgTGlmZWN5Y2xlIHNlY3Rpb24gLSBzY2FsZXMgZm9yIHNlcnZpY2UgJiBjbGllbnQsIGdyYXBoaWMKLQkJCi0JCWdyb3VwQ29tcG9zaXRlXyA9IG5ldyBDb21wb3NpdGUocGFyZW50LCBTV1QuTk9ORSk7Ci0JCUdyaWRMYXlvdXQgZ2NsYXlvdXQgPSBuZXcgR3JpZExheW91dCgpOwotCQlnY2xheW91dC5udW1Db2x1bW5zID0gMjsKLQkJZ2NsYXlvdXQuaG9yaXpvbnRhbFNwYWNpbmc9MDsJCQotCQlnY2xheW91dC5tYXJnaW5IZWlnaHQ9MDsJCQotCQlnY2xheW91dC5tYXJnaW5Cb3R0b209NTsKLQkJZ3JvdXBDb21wb3NpdGVfLnNldExheW91dCggZ2NsYXlvdXQgKTsKLQkgICAgR3JpZERhdGEgZ2NHcmlkRGF0YSA9IG5ldyBHcmlkRGF0YShTV1QuQkVHSU5OSU5HLCBTV1QuQkVHSU5OSU5HLCB0cnVlLCB0cnVlKTsKLQkgICAgZ3JvdXBDb21wb3NpdGVfLnNldExheW91dERhdGEoZ2NHcmlkRGF0YSk7CQkKLQkgICAgCi0JICAgIGdyb3VwQ29tcG9zaXRlXy5hZGRDb250cm9sTGlzdGVuZXIobmV3IENvbnRyb2xMaXN0ZW5lcigpCi0JCXsKLQkJCXB1YmxpYyB2b2lkIGNvbnRyb2xNb3ZlZChDb250cm9sRXZlbnQgZSkgewotCQkJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKLQkJCQkKLQkJCX0KLQkJCXB1YmxpYyB2b2lkIGNvbnRyb2xSZXNpemVkKENvbnRyb2xFdmVudCBlKSB7Ci0JCQkJZ3JvdXBDb21wb3NpdGVfLnBhY2sodHJ1ZSk7CQkJCQotCQkJfQotCQl9KTsKLQkgICAgCi0JCXNlcnZpY2VDb21wb3NpdGVfID0gIG5ldyBDb21wb3NpdGUoZ3JvdXBDb21wb3NpdGVfLCBTV1QuTk9ORSk7Ci0JCUdyaWRMYXlvdXQgZ3JpZGxheW91dCAgID0gbmV3IEdyaWRMYXlvdXQoKTsKLQkgICAgZ3JpZGxheW91dC5udW1Db2x1bW5zICAgPSAyOwotCSAgICBncmlkbGF5b3V0Lmhvcml6b250YWxTcGFjaW5nPTA7Ci0JICAgIGdyaWRsYXlvdXQubWFyZ2luSGVpZ2h0PTA7Ci0JICAgIHNlcnZpY2VDb21wb3NpdGVfLnNldExheW91dCggZ3JpZGxheW91dCApOwotCSAgICBHcmlkRGF0YSBzY0dyaWREYXRhID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCk7Ci0JICAgIHNlcnZpY2VDb21wb3NpdGVfLnNldExheW91dERhdGEoc2NHcmlkRGF0YSk7ICAgIAotCSAgICAKLQkJc2VydmljZUNvbXBvc2l0ZV8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9TRVJWSUNFKTsKLQkKLQkJCi0JCXNlcnZpY2VTY2FsZV8gPSBuZXcgU2NhbGUoc2VydmljZUNvbXBvc2l0ZV8sIFNXVC5WRVJUSUNBTCB8IFNXVC5CT1JERVIpOwotCSAgICB1dGlsc18uY3JlYXRlSW5mb1BvcChzZXJ2aWNlU2NhbGVfLCBJTkZPUE9QX1dTV1NDRU5fU0NBTEVfU0VSVklDRSk7Ci0JCXNlcnZpY2VTY2FsZV8uc2V0TWluaW11bSgwKTsKLQkJc2VydmljZVNjYWxlXy5zZXRNYXhpbXVtKDYpOwotCQlzZXJ2aWNlU2NhbGVfLnNldEluY3JlbWVudCgxKTsKLQkJc2VydmljZVNjYWxlXy5zZXRQYWdlSW5jcmVtZW50KDEpOwotCQlzZXJ2aWNlU2NhbGVfLmFkZFNlbGVjdGlvbkxpc3RlbmVyKHNjYWxlU2VsZWN0aW9uTGlzdGVuZXIpOwotCQlzZXJ2aWNlU2NhbGVfLnNldFNlbGVjdGlvbihnZXRTZXJ2aWNlR2VuZXJhdGlvbigpKTsKLQkJc2VydmljZVNjYWxlXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX1NFUlZJQ0UpOwotCQkKLQkJQWNjZXNzaWJsZSBhY2Nlc3NpYmxlU2NhbGUgPSBzZXJ2aWNlU2NhbGVfLmdldEFjY2Vzc2libGUoKTsKLQkJYWNjZXNzaWJsZVNjYWxlLmFkZEFjY2Vzc2libGVMaXN0ZW5lcihuZXcgQWNjZXNzaWJsZUFkYXB0ZXIoKXsKLQkJCS8vCXJldHVybiBhIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB3aGF0IHRvIGRvIHdpdGggdGhlIHNsaWRlcgotCQkJLy8gIHRoaXMgaXMgcmVhZCBieSB0aGUgc2NyZWVuIHJlYWRlciB3aGVuIHRoZSBzbGlkZXIgZmlyc3QgZ2V0cyBmb2N1cwotCQkJcHVibGljIHZvaWQgZ2V0TmFtZShBY2Nlc3NpYmxlRXZlbnQgZSkgewotCQkJCWUucmVzdWx0ID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9TRVJWSUNFOwkJCQotCQkJfQkJCQotCQl9KTsKLQkJYWNjZXNzaWJsZVNjYWxlLmFkZEFjY2Vzc2libGVDb250cm9sTGlzdGVuZXIobmV3IEFjY2Vzc2libGVDb250cm9sQWRhcHRlcigpewotCQkJLy8gcmV0dXJuIGEgbWVhbmluZ2Z1bCBzdHJpbmcgd2hlbiB0aGUgc2NyZWVuIHJlYWRlcgotCQkJLy8gYXR0ZW1wdHMgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzZXJ2aWNlIHNjYWxlCi0JCQlwdWJsaWMgdm9pZCBnZXRWYWx1ZShBY2Nlc3NpYmxlQ29udHJvbEV2ZW50IGUpIHsKLQkJCQlpbnQgc2VsZWN0aW9uID0gc2VydmljZVNjYWxlXy5nZXRTZWxlY3Rpb24oKTsKLQkJCQlzd2l0Y2ggKHNlbGVjdGlvbikgewotCQkJCWNhc2UgMDoKLQkJCQkJZS5yZXN1bHQgPSBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX1RFU1Q7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgMToKLQkJCQkJZS5yZXN1bHQgPSBDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX1JVTjsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSAyOgotCQkJCQllLnJlc3VsdCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfSU5TVEFMTDsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSAzOgotCQkJCQllLnJlc3VsdCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfREVQTE9ZOwotCQkJCQlicmVhazsKLQkJCQljYXNlIDQ6Ci0JCQkJCWUucmVzdWx0ID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9BU1NFTUJMRTsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSA1OgkJCQkJCi0JCQkJY2FzZSA2OgotCQkJCQllLnJlc3VsdCA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfREVWRUxPUDsKLQkJCQkJYnJlYWs7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJYnJlYWs7Ci0JCQkJfQkJCQkJCQkJCi0JCQl9Ci0JCX0pOwkKLQkJCi0JCUdyaWREYXRhIGxheW91dERhdGExID0gbmV3IEdyaWREYXRhKCk7Ci0JCWxheW91dERhdGExLmhvcml6b250YWxBbGlnbm1lbnQ9U1dULkNFTlRFUjsKLQkJbGF5b3V0RGF0YTEudmVydGljYWxBbGlnbm1lbnQgPSBTV1QuQkVHSU5OSU5HOwotCQlSZWN0YW5nbGUgc2NhbGVSID0gKGltYWdlUmVnXy5nZXQoSUNPTl9TQ0FMRV9CR18wKSkuZ2V0Qm91bmRzKCk7Ci0JCWxheW91dERhdGExLmhlaWdodEhpbnQ9c2NhbGVSLmhlaWdodDsKLQkJbGF5b3V0RGF0YTEud2lkdGhIaW50PXNjYWxlUi53aWR0aCsxOwotCQlzZXJ2aWNlU2NhbGVfLnNldExheW91dERhdGEobGF5b3V0RGF0YTEpOwkJCi0JCQotCQl0b3BvbG9neVNwb3RfID0gbmV3IExhYmVsKHNlcnZpY2VDb21wb3NpdGVfLCBTV1QuQk9SREVSIHwgU1dULlRPUCApOwotCQl0b3BvbG9neVNwb3RfLnNldEJhY2tncm91bmQoRGlzcGxheS5nZXRDdXJyZW50KCkuZ2V0U3lzdGVtQ29sb3IoU1dULkNPTE9SX1dISVRFKSk7Ci0JCXRvcG9sb2d5U3BvdF8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9TRVJWSUNFKTsKLQkJCi0JCUdyaWREYXRhIGxheW91dERhdGEyID0gbmV3IEdyaWREYXRhKCk7CQkKLQkJbGF5b3V0RGF0YTIuaG9yaXpvbnRhbEFsaWdubWVudD1TV1QuQkVHSU5OSU5HOwkJCQkKLQkJbGF5b3V0RGF0YTIudmVydGljYWxBbGlnbm1lbnQgPSBTV1QuQkVHSU5OSU5HOwotCQlSZWN0YW5nbGUgdG9wUiA9IChpbWFnZVJlZ18uZ2V0KEdSQVBISUNfU0VSVklDRV8wKSkuZ2V0Qm91bmRzKCk7Ci0JCWxheW91dERhdGEyLmhlaWdodEhpbnQ9dG9wUi5oZWlnaHQ7Ci0JCWxheW91dERhdGEyLndpZHRoSGludD10b3BSLndpZHRoOwotCQl0b3BvbG9neVNwb3RfLnNldExheW91dERhdGEobGF5b3V0RGF0YTIpOwkJCi0JCQkJCi0JCXNldEdyYXBoaWNzKGdldFNlcnZpY2VHZW5lcmF0aW9uKCkpOwotCQkKLQkJaENvbXBTZXJ2aWNlXyA9IHV0aWxzXy5jcmVhdGVDb21wb3NpdGUoZ3JvdXBDb21wb3NpdGVfLCAxKTsKLQkJCi0JCUxhYmVsIHNlcnZpY2VEZXRhaWxzTGFiZWwgPSBuZXcgTGFiZWwoaENvbXBTZXJ2aWNlXywgU1dULk5PTkUpOwotCQlzZXJ2aWNlRGV0YWlsc0xhYmVsLnNldFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1NVTU1BUlkpOwotCQkKLQkJaExpbmtTZXJ2aWNlU2VydmVyXz0gbmV3IEh5cGVybGluayhoQ29tcFNlcnZpY2VfLCBTV1QuTlVMTCk7Ci0JCXV0aWxzXy5jcmVhdGVJbmZvUG9wKGhMaW5rU2VydmljZVNlcnZlcl8sIElORk9QT1BfV1NXU0NFTl9IWVBFUkxJTktfU0VSVkVSKTsKLQkJaExpbmtTZXJ2aWNlU2VydmVyXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9QV1JTX1RFWFRfU0VSVkVSKTsKLQkJaExpbmtTZXJ2aWNlU2VydmVyXy5hZGRIeXBlcmxpbmtMaXN0ZW5lcihuZXcgSUh5cGVybGlua0xpc3RlbmVyKCl7Ci0JCQlwdWJsaWMgdm9pZCBsaW5rQWN0aXZhdGVkKEh5cGVybGlua0V2ZW50IGUpewkJCQkKLQkJCQlsYXVuY2hSdW50aW1lU2VsZWN0aW9uRGlhbG9nKGZhbHNlLCB0cnVlKTsJCQkJCi0JCQl9Ci0JCQlwdWJsaWMgdm9pZCBsaW5rRW50ZXJlZChIeXBlcmxpbmtFdmVudCBlKXt9Ci0JCQlwdWJsaWMgdm9pZCBsaW5rRXhpdGVkKEh5cGVybGlua0V2ZW50IGUpe30JCQkKLQkJfSk7Ci0KLQkJaExpbmtTZXJ2aWNlUnVudGltZV8gPSBuZXcgSHlwZXJsaW5rKGhDb21wU2VydmljZV8sIFNXVC5OVUxMKTsKLQkJdXRpbHNfLmNyZWF0ZUluZm9Qb3AoaExpbmtTZXJ2aWNlUnVudGltZV8sIElORk9QT1BfV1NXU0NFTl9IWVBFUkxJTktfUlVOVElNRSk7Ci0JCWhMaW5rU2VydmljZVJ1bnRpbWVfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BXUlNfVEVYVF9SVU5USU1FKTsKLQkJaExpbmtTZXJ2aWNlUnVudGltZV8uYWRkSHlwZXJsaW5rTGlzdGVuZXIobmV3IElIeXBlcmxpbmtMaXN0ZW5lcigpewotCQkJcHVibGljIHZvaWQgbGlua0FjdGl2YXRlZChIeXBlcmxpbmtFdmVudCBlKXsKLQkJCQkJCQkJbGF1bmNoUnVudGltZVNlbGVjdGlvbkRpYWxvZyhmYWxzZSk7Ci0JCQl9Ci0JCQlwdWJsaWMgdm9pZCBsaW5rRW50ZXJlZChIeXBlcmxpbmtFdmVudCBlKXt9Ci0JCQlwdWJsaWMgdm9pZCBsaW5rRXhpdGVkKEh5cGVybGlua0V2ZW50IGUpe30JCQkKLQkJfSk7Ci0JCQotCQlJV29ya2JlbmNoIHdvcmtiZW5jaCA9IFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCk7Ci0JCXByb2plY3REaWFsb2dfID0gbmV3IFByb2plY3RTZWxlY3Rpb25EaWFsb2cod29ya2JlbmNoLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvdygpLmdldFNoZWxsKCksIAotCQkJCW5ldyBQYWdlSW5mbyhDb25zdW1wdGlvblVJTWVzc2FnZXMuRElBTE9HX1RJVElMRV9TRVJWSUNFX1BST0pFQ1RfU0VUVElOR1MsICIiLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkoKQotICAJCQkJCQl7CQotICAJCQkJCQkJcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0gIAkJCQkJCQl7CSAgCQkJCQkJIAotICAJCQkJCQkJICAgcmV0dXJuIG5ldyBQcm9qZWN0U2VsZWN0aW9uV2lkZ2V0KCk7Ci0gIAkJCQkJCQl9Ci0gIAkJCQkJCX0pKTsKLQkJCi0JCWhMaW5rU2VydmljZVByb2plY3RfPSBuZXcgSHlwZXJsaW5rKGhDb21wU2VydmljZV8sIFNXVC5OVUxMKTsKLQkJdXRpbHNfLmNyZWF0ZUluZm9Qb3AoaExpbmtTZXJ2aWNlUnVudGltZV8sIElORk9QT1BfV1NXU0NFTl9IWVBFUkxJTktfUFJPSkVDVFMpOwotCQloTGlua1NlcnZpY2VQcm9qZWN0Xy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NFUlZJQ0VQUk9KRUNUX0xJTkspOwotCQloTGlua1NlcnZpY2VQcm9qZWN0Xy5hZGRIeXBlcmxpbmtMaXN0ZW5lcihuZXcgSUh5cGVybGlua0xpc3RlbmVyKCl7Ci0JCQlwdWJsaWMgdm9pZCBsaW5rQWN0aXZhdGVkKEh5cGVybGlua0V2ZW50IGUpewotCQkJCWxhdW5jaFByb2plY3REaWFsb2coKTsJCQkJCi0JCQl9Ci0JCQlwdWJsaWMgdm9pZCBsaW5rRW50ZXJlZChIeXBlcmxpbmtFdmVudCBlKXt9Ci0JCQlwdWJsaWMgdm9pZCBsaW5rRXhpdGVkKEh5cGVybGlua0V2ZW50IGUpe30JCQkKLQkJfSk7Ci0JCQotCQloTGlua1NlcnZpY2VFQVJfPSBuZXcgSHlwZXJsaW5rKGhDb21wU2VydmljZV8sIFNXVC5OVUxMKTsKLQkJdXRpbHNfLmNyZWF0ZUluZm9Qb3AoaExpbmtTZXJ2aWNlUnVudGltZV8sIElORk9QT1BfV1NXU0NFTl9IWVBFUkxJTktfUFJPSkVDVFMpOwotCQloTGlua1NlcnZpY2VFQVJfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0VSVklDRVBST0pFQ1RfTElOSyk7Ci0JCWhMaW5rU2VydmljZUVBUl8uYWRkSHlwZXJsaW5rTGlzdGVuZXIobmV3IElIeXBlcmxpbmtMaXN0ZW5lcigpewotCQkJcHVibGljIHZvaWQgbGlua0FjdGl2YXRlZChIeXBlcmxpbmtFdmVudCBlKXsKLQkJCQlsYXVuY2hQcm9qZWN0RGlhbG9nKCk7CQkJCi0JCQl9Ci0JCQlwdWJsaWMgdm9pZCBsaW5rRW50ZXJlZChIeXBlcmxpbmtFdmVudCBlKXt9Ci0JCQlwdWJsaWMgdm9pZCBsaW5rRXhpdGVkKEh5cGVybGlua0V2ZW50IGUpe30JCQkKLQkJfSk7CQkKLQotCQloTGlua1NlcnZpY2VTZXJ2ZXJfLnNldFRleHQoU0VSVklDRV9TRVJWRVJfUFJFRklYKTsgCi0JCWhMaW5rU2VydmljZVJ1bnRpbWVfLnNldFRleHQoU0VSVklDRV9SVU5USU1FX1BSRUZJWCk7Ci0JCWhMaW5rU2VydmljZVByb2plY3RfLnNldFRleHQoU0VSVklDRV9QUk9KRUNUX1BSRUZJWCk7Ci0JCWhMaW5rU2VydmljZUVBUl8uc2V0VGV4dChTRVJWSUNFX0VBUl9QUkVGSVgpOwotCQkKLQkJSHlwZXJsaW5rR3JvdXAgc2VydmVyUnVudGltZUdyb3VwID0gbmV3IEh5cGVybGlua0dyb3VwKERpc3BsYXkuZ2V0Q3VycmVudCgpKTsKLQkJCi0JCXNlcnZlclJ1bnRpbWVHcm91cC5hZGQoaExpbmtTZXJ2aWNlU2VydmVyXyk7Ci0JCXNlcnZlclJ1bnRpbWVHcm91cC5hZGQoaExpbmtTZXJ2aWNlUnVudGltZV8pOwotCQlzZXJ2ZXJSdW50aW1lR3JvdXAuYWRkKGhMaW5rU2VydmljZVByb2plY3RfKTsKLQkJc2VydmVyUnVudGltZUdyb3VwLmFkZChoTGlua1NlcnZpY2VFQVJfKTsKLQkJc2VydmVyUnVudGltZUdyb3VwLnNldEh5cGVybGlua1VuZGVybGluZU1vZGUoSHlwZXJsaW5rU2V0dGluZ3MuVU5ERVJMSU5FX0FMV0FZUyk7Ci0gICAgCi0JCXV0aWxzXy5jcmVhdGVIb3Jpem9udGFsU2VwYXJhdG9yKHBhcmVudCwgMSk7CQkKLQkJCi0JCS8vIEFkZCBjbGllbnQgd2lkZ2V0cy4uLgotCQljbGllbnRXaWRnZXRfID0gbmV3IFdlYlNlcnZpY2VDbGllbnRUeXBlV2lkZ2V0KGZhbHNlKTsKLQkgICAgY2xpZW50V2lkZ2V0Xy5hZGRDb250cm9scyhwYXJlbnQsIHN0YXR1c0xpc3RlbmVyICk7Ci0JICAgIGNsaWVudFdpZGdldF8uc2V0UGFja2FibGUodGhpcyk7Ci0JICAgIGNsaWVudFdpZGdldF8uZW5hYmxlQ2xpZW50U2xpZGVyKHNlcnZpY2VTY2FsZV8uZ2V0U2VsZWN0aW9uKCk8PVNjZW5hcmlvQ29udGV4dC5XU19TVEFSVCk7Ci0JCQotCQkvLyBBZHZhbmNlZCBidXR0b25zIHNlY3Rpb24KLQkJdXRpbHNfLmNyZWF0ZUhvcml6b250YWxTZXBhcmF0b3IocGFyZW50LCAzKTsKLQkJCi0JCUNvbXBvc2l0ZSBhZHZhbmNlZEJ1dHRvblBhbmVsID0gdXRpbHNfLmNyZWF0ZUNvbXBvc2l0ZShwYXJlbnQsIDEpOwotCQkKLQkJcHVibGlzaEJ1dHRvbl8gPSB1dGlsc18uY3JlYXRlQ2hlY2tib3goYWR2YW5jZWRCdXR0b25QYW5lbCwKLQkJCQlDb25zdW1wdGlvblVJTWVzc2FnZXMuQlVUVE9OX1dTV1NDRU5fUFVCTElTSCwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdQUl9DSEVDS0JPWF9MQVVOQ0hfV1MsIElORk9QT1BfV1NXU0NFTl9DSEVDS0JPWF9MQVVOQ0hfV1MpOwkJCi0JCW1vbml0b3JCdXR0b25fID0gdXRpbHNfLmNyZWF0ZUNoZWNrYm94KGFkdmFuY2VkQnV0dG9uUGFuZWwsCi0JCQkJQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkNIRUNLQk9YX01PTklUT1JfV0VCU0VSVklDRSwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfUFdQUl9DSEVDS0JPWF9NT05JVE9SX1NFUlZJQ0UsIElORk9QT1BfV1NXU0NFTl9DSEVDS0JPWF9NT05JVE9SX1NFUlZJQ0UpOwotCi0JCWlmIChkaXNwbGF5UHJlZmVyZW5jZXNfICYmIGdldFJlc291cmNlQ29udGV4dCgpLmlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCkpIHsKLQkJCXV0aWxzXy5jcmVhdGVIb3Jpem9udGFsU2VwYXJhdG9yKHBhcmVudCwgMSk7CQkJCi0JCQlDb21wb3NpdGUgcHJlZkJ1dHRvblBhbmVsID0gdXRpbHNfLmNyZWF0ZUNvbXBvc2l0ZShwYXJlbnQsIDEpOwotCQkJb3ZlcndyaXRlQnV0dG9uXyA9IHV0aWxzXy5jcmVhdGVDaGVja2JveChwcmVmQnV0dG9uUGFuZWwsCi0JCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5DSEVDS0JPWF9PVkVSV1JJVEVfRklMRVMsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fQlVUVE9OX09WRVJXUklURV9GSUxFUywgSU5GT1BPUF9XU1dTQ0VOX0NIRUNLQk9YX09WRVJXUklURSk7Ci0JCQlvdmVyd3JpdGVCdXR0b25fLnNldFNlbGVjdGlvbihnZXRSZXNvdXJjZUNvbnRleHQoKQotCQkJCQkuaXNPdmVyd3JpdGVGaWxlc0VuYWJsZWQoKSk7Ci0JCQlvdmVyd3JpdGVCdXR0b25fLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewotCQkJCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJCQkJZ2V0UmVzb3VyY2VDb250ZXh0KCkuc2V0T3ZlcndyaXRlRmlsZXNFbmFibGVkKG92ZXJ3cml0ZUJ1dHRvbl8uZ2V0U2VsZWN0aW9uKCkpOwotCQkJCX0KLQkJCX0pOwotCQl9Ci0KLQkJcmV0dXJuIHRoaXM7Ci0JfQkKLQkKLQlwcml2YXRlIHZvaWQgbGF1bmNoUHJvamVjdERpYWxvZygpCi0JewotCQlTdHJpbmcgY3VycmVudFByb2plY3ROYW1lID0gZ2V0U2VydmljZVByb2plY3ROYW1lKCk7Ci0JCVN0cmluZyBjdXJyZW50RWFyUHJvamVjdE5hbWUgPSBnZXRTZXJ2aWNlRWFyUHJvamVjdE5hbWUoKTsKLQkJU3RyaW5nIGN1cnJlbnRQcm9qZWN0VHlwZSA9IGdldFNlcnZpY2VDb21wb25lbnRUeXBlKCk7Ci0JCWJvb2xlYW4gY3VycmVudE5lZWRFYXIgPSBnZXRTZXJ2aWNlTmVlZEVBUigpOwotCQkKLQkJcHJvamVjdERpYWxvZ18uc2V0UHJvamVjdE5hbWUoY3VycmVudFByb2plY3ROYW1lKTsKLQkJcHJvamVjdERpYWxvZ18uc2V0RWFyUHJvamVjdE5hbWUoY3VycmVudEVhclByb2plY3ROYW1lKTsKLQkJcHJvamVjdERpYWxvZ18uc2V0UHJvamVjdENvbXBvbmVudFR5cGUoY3VycmVudFByb2plY3RUeXBlKTsKLQkJcHJvamVjdERpYWxvZ18uc2V0TmVlZEVBUihjdXJyZW50TmVlZEVhcik7Ci0JCQotCQlpbnQgc3RhdHVzID0gcHJvamVjdERpYWxvZ18ub3BlbigpOwotCQlpZiAoc3RhdHVzID09IFdpbmRvdy5PSykKLQkJewotCQkJU3RyaW5nIG5ld1Byb2plY3ROYW1lID0gcHJvamVjdERpYWxvZ18uZ2V0UHJvamVjdE5hbWUoKTsKLQkJCVN0cmluZyBuZXdFYXJQcm9qZWN0TmFtZSA9IHByb2plY3REaWFsb2dfLmdldEVhclByb2plY3ROYW1lKCk7Ci0JCQlTdHJpbmcgbmV3UHJvamVjdFR5cGUgPSBwcm9qZWN0RGlhbG9nXy5nZXRQcm9qZWN0Q29tcG9uZW50VHlwZSgpOwotCQkJYm9vbGVhbiBuZXdOZWVkRWFyID0gcHJvamVjdERpYWxvZ18uZ2V0TmVlZEVBUigpOwkKLQkJCQotCQkJLy9VcGRhdGUgcHJvamVjdCBzZXR0aW5ncyBhbmQgdmFsaWRhdGUgcGFnZSBpZiBzZWxlY3Rpb25zIGNoYW5nZWQuCi0JCQlpZiAoIW5ld1Byb2plY3ROYW1lLmVxdWFscyhjdXJyZW50UHJvamVjdE5hbWUpCi0JCQkJCXx8ICFuZXdFYXJQcm9qZWN0TmFtZS5lcXVhbHMoY3VycmVudEVhclByb2plY3ROYW1lKQotCQkJCQl8fCAhbmV3UHJvamVjdFR5cGUuZXF1YWxzKGN1cnJlbnRQcm9qZWN0VHlwZSkKLQkJCQkJfHwgbmV3TmVlZEVhciAhPSBjdXJyZW50TmVlZEVhcikgewotCQkJCXNldFNlcnZpY2VQcm9qZWN0TmFtZShuZXdQcm9qZWN0TmFtZSk7Ci0JCQkJc2V0U2VydmljZUVhclByb2plY3ROYW1lKG5ld0VhclByb2plY3ROYW1lKTsKLQkJCQlzZXRTZXJ2aWNlQ29tcG9uZW50VHlwZShuZXdQcm9qZWN0VHlwZSk7Ci0JCQkJc2V0U2VydmljZU5lZWRFQVIobmV3TmVlZEVhcik7CQkJCQotCQkJCXZhbGlkYXRpb25TdGF0ZV8gPSAobmV3IFZhbGlkYXRpb25VdGlscygpKS5nZXROZXdWYWxpZGF0aW9uU3RhdGUodmFsaWRhdGlvblN0YXRlXywgVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX1BST0pFQ1RfQ0hBTkdFUyk7Ci0JCQkJc3RhdHVzTGlzdGVuZXJfLmhhbmRsZUV2ZW50KG51bGwpOwotCQkJfQotCQkJCi0JCQkvKmNoZWNrIHRvIHNlZSBpZiB0ZXh0IGhhcyBjaGFuZ2VkIGZvciBwcm9qZWN0IGFuZCBFQVIKLQkJCWlmIHNvLCByZXBhaW50IGxpbmtzICovCi0JCQlpZiAoIW5ld1Byb2plY3ROYW1lLmVxdWFscyhjdXJyZW50UHJvamVjdE5hbWUpKQotCQkJewotCQkJCWhMaW5rU2VydmljZVByb2plY3RfLnBhY2sodHJ1ZSk7Ci0JCQkJcGFja1NlbGYoKTsJIAotCQkJfQotCQkJaWYgKCFuZXdFYXJQcm9qZWN0TmFtZS5lcXVhbHMoY3VycmVudEVhclByb2plY3ROYW1lKSkKLQkJCXsKLQkJCQloTGlua1NlcnZpY2VFQVJfLnBhY2sodHJ1ZSk7Ci0JCQkJcGFja1NlbGYoKTsJICAJCQkJCQotCQkJfQotCQl9Ci0JfQotCQkKLQlwcml2YXRlIHZvaWQgbGF1bmNoUnVudGltZVNlbGVjdGlvbkRpYWxvZyhib29sZWFuIGNsaWVudENvbnRleHQpCi0JewotCQlsYXVuY2hSdW50aW1lU2VsZWN0aW9uRGlhbG9nKGNsaWVudENvbnRleHQsIGZhbHNlKTsKLQl9Ci0JCQotCXByaXZhdGUgdm9pZCBsYXVuY2hSdW50aW1lU2VsZWN0aW9uRGlhbG9nKGJvb2xlYW4gY2xpZW50Q29udGV4dCwgYm9vbGVhbiBzZWxlY3RTZXJ2ZXJGaXJzdCkgCQotCXsJCi0JCWJ5dGUgbW9kZSA9IGNsaWVudENvbnRleHQgPyAoYnl0ZSkxIDogKGJ5dGUpMDsKLQkJCi0JCS8vVE9ETzoganZoIC0gaW52ZXN0aWdhdGUgLSBkb24ndCB0aGluayBqMmVlIHZlcnNpb24gc2hvdWxkbid0IGJlIGhhcmQgY29kZWQgKGxhc3QgcGFybSkgCi0JCS8vICBxdWVzdGlvbiAtIHdoZXJlIHRvIHBpY2sgaXQgdXAgZnJvbT8KLQkJLy9SZW1lbWJlciB0aGUgY3VycmVudCB2YWx1ZXMKLQkJVHlwZVJ1bnRpbWVTZXJ2ZXIgY3VycmVudFNlcnZpY2VUUlMgPSBnZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoKTsKLQkJSVdvcmtiZW5jaCB3b3JrYmVuY2ggPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpOwotCQlSdW50aW1lU2VydmVyU2VsZWN0aW9uRGlhbG9nIHJzc2QgPSBuZXcgUnVudGltZVNlcnZlclNlbGVjdGlvbkRpYWxvZygKLQkJCQl3b3JrYmVuY2guZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93KCkuZ2V0U2hlbGwoKSwgbW9kZSwgY3VycmVudFNlcnZpY2VUUlMsICIxNCIpOwkKLQkJcnNzZC5zZXRTZWxlY3RTZXJ2ZXJGaXJzdChzZWxlY3RTZXJ2ZXJGaXJzdCk7CQkKLQkJaW50IHJlc3VsdCA9IHJzc2Qub3BlbigpOwkJCi0JCWlmIChyZXN1bHQgPT0gV2luZG93Lk9LKQotCQl7Ci0JCQlUeXBlUnVudGltZVNlcnZlciBuZXdTZXJ2aWNlVFJTID0gcnNzZC5nZXRUeXBlUnVudGltZVNlcnZlcigpOwotCQkJaWYgKCFjdXJyZW50U2VydmljZVRSUy5lcXVhbHMobmV3U2VydmljZVRSUykpCi0JCQl7Ci0JCQkJc2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKG5ld1NlcnZpY2VUUlMpOwkKLQkJCQlyZWZyZXNoQ2xpZW50U2VydmVyUnVudGltZVNlbGVjdGlvbigpOwkKLQkJCQl2YWxpZGF0aW9uU3RhdGVfID0gKG5ldyBWYWxpZGF0aW9uVXRpbHMoKSkuZ2V0TmV3VmFsaWRhdGlvblN0YXRlKHZhbGlkYXRpb25TdGF0ZV8sIFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9TRVJWRVJfUlVOVElNRV9DSEFOR0VTKTsKLQkJCQljbGllbnRXaWRnZXRfLnNldFZhbGlkYXRpb25TdGF0ZShWYWxpZGF0aW9uVXRpbHMuVkFMSURBVEVfU0VSVkVSX1JVTlRJTUVfQ0hBTkdFUyk7Ci0JCQkJc3RhdHVzTGlzdGVuZXJfLmhhbmRsZUV2ZW50KG51bGwpOyAvL1JldmFsaWRhdGUgdGhlIHBhZ2Ugc2luY2Ugc2VydmVyL3J1bnRpbWUgc2VsZWN0aW9ucyBjaGFuZ2VkLgotCQkJfQotCQkJCi0JCX0JCQotCX0JCi0JCi0JcHVibGljIHZvaWQgc2V0Q2xpZW50VHlwZVJ1bnRpbWVTZXJ2ZXIoVHlwZVJ1bnRpbWVTZXJ2ZXIgaWRzKSB7Ci0JCWNsaWVudFdpZGdldF8uc2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoIGlkcyApOwotCX0KLQotCXB1YmxpYyBUeXBlUnVudGltZVNlcnZlciBnZXRDbGllbnRUeXBlUnVudGltZVNlcnZlcigpIHsKLQkJcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRJbnN0YWxsQ2xpZW50KEJvb2xlYW4gaW5zdGFsbCkgewotCQljbGllbnRXaWRnZXRfLnNldEluc3RhbGxDbGllbnQoIGluc3RhbGwgKTsKLQl9Ci0KLQlwdWJsaWMgQm9vbGVhbiBnZXRJbnN0YWxsQ2xpZW50KCkgewkJCi0JCXJldHVybiBjbGllbnRXaWRnZXRfLmdldEluc3RhbGxDbGllbnQoKTsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0U3RhcnRDbGllbnQoQm9vbGVhbiBzdGFydENsaWVudCkgewotCQljbGllbnRXaWRnZXRfLnNldFN0YXJ0Q2xpZW50KCBzdGFydENsaWVudCApOwotCX0KLQotCXB1YmxpYyBCb29sZWFuIGdldFN0YXJ0Q2xpZW50KCkgewkJCi0JCXJldHVybiBjbGllbnRXaWRnZXRfLmdldFN0YXJ0Q2xpZW50KCk7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldFRlc3RDbGllbnQoQm9vbGVhbiB0ZXN0Q2xpZW50KSB7Ci0JCWNsaWVudFdpZGdldF8uc2V0VGVzdENsaWVudCggdGVzdENsaWVudCApOwotCX0KLQotCXB1YmxpYyBCb29sZWFuIGdldFRlc3RDbGllbnQoKSB7CQkKLQkJcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0VGVzdENsaWVudCgpOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXREZXZlbG9wQ2xpZW50KGJvb2xlYW4gZGV2ZWxvcCkgewotCQljbGllbnRXaWRnZXRfLnNldERldmVsb3BDbGllbnQoIGRldmVsb3AgKTsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBnZXREZXZlbG9wQ2xpZW50KCkgewkJCi0JCXJldHVybiBjbGllbnRXaWRnZXRfLmdldERldmVsb3BDbGllbnQoKTsKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0QXNzZW1ibGVDbGllbnQoYm9vbGVhbiBhc3NlbWJsZSkgewotCQljbGllbnRXaWRnZXRfLnNldEFzc2VtYmxlQ2xpZW50KCBhc3NlbWJsZSApOwotCX0KLQotCXB1YmxpYyBib29sZWFuIGdldEFzc2VtYmxlQ2xpZW50KCkgewkJCi0JCXJldHVybiBjbGllbnRXaWRnZXRfLmdldEFzc2VtYmxlQ2xpZW50KCk7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldERlcGxveUNsaWVudChib29sZWFuIGRlcGxveSkgewotCQljbGllbnRXaWRnZXRfLnNldERlcGxveUNsaWVudCggZGVwbG95ICk7Ci0JfQotCi0JcHVibGljIGJvb2xlYW4gZ2V0RGVwbG95Q2xpZW50KCkgewkJCi0JCXJldHVybiBjbGllbnRXaWRnZXRfLmdldERlcGxveUNsaWVudCgpOwotCX0KLQotcHJpdmF0ZSB2b2lkIGhhbmRsZVR5cGVDaGFuZ2UoKQotCXsKLQkJaWYgKCFwcmVmZXJlbmNlc1BhZ2VfKSB7Ci0JCSAgIGludCBzY2VuYXJpbyA9IGdldFdlYlNlcnZpY2VTY2VuYXJpbygpOwotCQkgICAKLQkJICAgaWYgKHNjZW5hcmlvID09IFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01VUCkKLQkJICAgewotCQkJICBzZXJ2aWNlTGFiZWxfLnNldFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkxBQkVMX1dFQlNFUlZJQ0VJTVBMKTsKLQkJICAgfQotCQkgICBlbHNlIGlmIChzY2VuYXJpbyA9PSBXZWJTZXJ2aWNlU2NlbmFyaW8uVE9QRE9XTikKLQkJICAgewotCQkJICAgc2VydmljZUxhYmVsXy5zZXRUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9XRUJTRVJWSUNFREVGKTsKLQkJICAgfQotCQl9Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKFR5cGVSdW50aW1lU2VydmVyIGlkcykgewotCQlMYWJlbHNBbmRJZHMgbGFiZWxJZHMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMgotCQkJCS5nZXRTZXJ2aWNlVHlwZUxhYmVscygpOwotCQkvLyByc2tyZWcKLQkJaW50IHNlbGVjdGlvbiA9IDA7Ci0JCVN0cmluZ1tdIHNlcnZpY2VJZHMgPSBsYWJlbElkcy5nZXRJZHNfKCk7Ci0JCVN0cmluZyBzZWxlY3RlZElkID0gaWRzLmdldFR5cGVJZCgpOwotCi0JCXdlYnNlcnZpY2VUeXBlXy5zZXRJdGVtcyhsYWJlbElkcy5nZXRMYWJlbHNfKCkpOwotCi0JCS8vIE5vdyBmaW5kIHRoZSBzZWxlY3RlZCBvbmUuCi0JCWZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBzZXJ2aWNlSWRzLmxlbmd0aDsgaW5kZXgrKykgewotCQkJaWYgKHNlbGVjdGVkSWQuZXF1YWxzKHNlcnZpY2VJZHNbaW5kZXhdKSkgewotCQkJCXNlbGVjdGlvbiA9IGluZGV4OwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JCXdlYnNlcnZpY2VUeXBlXy5zZWxlY3Qoc2VsZWN0aW9uKTsKLQkJCi0JCWlkc18gPSBpZHM7Ci0JCQotCQlpZiAoaWRzXyAhPSBudWxsKQotCQl7Ci0JCQlTdHJpbmcgc2VydmljZVNlcnZlclRleHQgPSAiIjsKLQkJCVN0cmluZyBzZXJ2ZXJJZCA9IGlkc18uZ2V0U2VydmVySWQoKTsKLQkJCWlmIChzZXJ2ZXJJZCAhPSBudWxsICYmIHNlcnZlcklkLmxlbmd0aCgpPjApCi0JCQl7Ci0JCQkgIHNlcnZpY2VTZXJ2ZXJUZXh0ID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmVyTGFiZWxCeUlkKHNlcnZlcklkKTsKLQkJCX0KLQkJCVN0cmluZyBzZXJ2aWNlUnVudGltZVRleHQgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRSdW50aW1lTGFiZWxCeUlkKGlkc18uZ2V0UnVudGltZUlkKCkpOwotCQkJCi0JCQlTdHJpbmcgY3VycmVudFNlcnZlclRleHQgPSBoTGlua1NlcnZpY2VTZXJ2ZXJfLmdldFRleHQoKTsKLQkJCVN0cmluZyBjdXJyZW50UnVudGltZVRleHQgPSBoTGlua1NlcnZpY2VSdW50aW1lXy5nZXRUZXh0KCk7Ci0JCQlTdHJpbmcgbmV3U2VydmVyVGV4dCA9IFNFUlZJQ0VfU0VSVkVSX1BSRUZJWCArICIgIiArIHNlcnZpY2VTZXJ2ZXJUZXh0OwotCQkJU3RyaW5nIG5ld1J1bnRpbWVUZXh0ID0gU0VSVklDRV9SVU5USU1FX1BSRUZJWCArICIgIiArIHNlcnZpY2VSdW50aW1lVGV4dDsKLQkJCWhMaW5rU2VydmljZVNlcnZlcl8uc2V0VGV4dChuZXdTZXJ2ZXJUZXh0KTsKLQkJCWhMaW5rU2VydmljZVJ1bnRpbWVfLnNldFRleHQobmV3UnVudGltZVRleHQpOwkJCi0JCQkKLQkJCS8qY2hlY2sgdG8gc2VlIGlmIHRleHQgaGFzIGNoYW5nZWQgZm9yIHNlcnZlciBvciBydW50aW1lCi0JCQlpZiBzbywgcmVwYWludCBsaW5rcyAqLwotCQkJaWYgKCFuZXdTZXJ2ZXJUZXh0LmVxdWFscyhjdXJyZW50U2VydmVyVGV4dCkpCi0JCQl7Ci0JCQkJaExpbmtTZXJ2aWNlU2VydmVyXy5wYWNrKHRydWUpOwotCQkJCXBhY2tTZWxmKCk7Ci0JCQl9CQkJCi0JCQkKLQkJCWlmICghbmV3UnVudGltZVRleHQuZXF1YWxzKGN1cnJlbnRSdW50aW1lVGV4dCkpCi0JCQl7Ci0JCQkJaExpbmtTZXJ2aWNlUnVudGltZV8ucGFjayh0cnVlKTsKLQkJCQlwYWNrU2VsZigpOwotCQkJfSAKLQkJfQkJCQkKLQkJbGFiZWxJZHNfID0gbGFiZWxJZHM7Ci0JCWhhbmRsZVR5cGVDaGFuZ2UoKTsKLQkJCi0JCWlmIChwcm9qZWN0RGlhbG9nXyAhPSBudWxsKQotCQkJcHJvamVjdERpYWxvZ18uc2V0VHlwZVJ1bnRpbWVTZXJ2ZXIoaWRzXyk7Ci0JCQotCQkKLQkJLy9XaGVuIHRoZSBzZXJ2ZXIgY2hhbmdlcywgdGhlIHN0YXRlIG9mIG5lZWRFYXIgY291bGQgY2hhbmdlLgotCQkvL0lmIHRoZSB0aGUgc2VydmVyIGNoYW5nZSByZXN1bHRzIGluIGEgY2hhbmdlIGluIHRoZSBzdGF0ZSBvZiBuZWVkRWFyLAotCQkvL3VwZGF0ZSBuZWVkRWFyIGFuZCBzZXJ2aWNlRWFyUHJvamVjdE5hbWUuCi0JCVZhbGlkYXRpb25VdGlscyB2dSA9IG5ldyBWYWxpZGF0aW9uVXRpbHMoKTsKLQkJYm9vbGVhbiBvbGROZWVkRWFyID0gZ2V0U2VydmljZU5lZWRFQVIoKTsKLQkJYm9vbGVhbiBzZXJ2aWNlUHJvamVjdE9yUHJvamVjdFR5cGVOZWVkc0VhcjsKLQotCQlpZiAoIW9sZE5lZWRFYXIpCi0JCXsKLQkJCS8vSWYgYW4gRUFSIHdhcyBub3QgbmVlZGVkIHByZXZpb3VzbHkgaXQgY291bGQgaGF2ZSBiZWVuIGJlY2F1c2Ugb2YgdGhlIHByb2plY3QvcHJvamVjdCB0eXBlIG9yIHRoZSBzZXJ2ZXIuCi0JCQkvL0lmIGl0IHdhcyBiZWNhdXNlIG9mIHRoZSBwcm9qZWN0L3Byb2plY3QgdHlwZSwgY2hhbmdpbmcgdGhlIHNlcnZlciBzaG91bGQgaGF2ZSBubyBpbXBhY3QKLQkJCS8vb24gdGhlIHN0YXRlIG9mIG5lZWRFYXIuCi0JCQlzZXJ2aWNlUHJvamVjdE9yUHJvamVjdFR5cGVOZWVkc0VhciA9IHZ1LnByb2plY3RPclByb2plY3RUeXBlTmVlZHNFYXIoZ2V0U2VydmljZVByb2plY3ROYW1lKCksIGdldFNlcnZpY2VDb21wb25lbnRUeXBlKCkpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJc2VydmljZVByb2plY3RPclByb2plY3RUeXBlTmVlZHNFYXIgPSB0cnVlOwotCQl9Ci0JCQotCQkvL2Jvb2xlYW4gc2VydmljZVByb2plY3RPclByb2plY3RUeXBlTmVlZHNFYXIgPSB2dS5wcm9qZWN0T3JQcm9qZWN0VHlwZU5lZWRzRWFyKGdldFNlcnZpY2VQcm9qZWN0TmFtZSgpLCBnZXRTZXJ2aWNlQ29tcG9uZW50VHlwZSgpKTsKLQkJaWYgKHNlcnZpY2VQcm9qZWN0T3JQcm9qZWN0VHlwZU5lZWRzRWFyKQotCQl7Ci0JCQkvL0NvdWxkIG5vdCBydWxlIG91dCBuZWVkIGZvciBhbiBFYXIgZnJvbSB0aGUgcHJvamVjdC9wcm9qZWN0IHR5cGUgc28gY2hhbmdpbmcgdGhlIHNlcnZlcgotCQkJLy9tYXkgaW1wYWN0IHRoZSBuZWVkIGZvciBhbiBFYXIuCi0KLQkJCWJvb2xlYW4gY3VycmVudFNlcnZpY2VTZXJ2ZXJOZWVkc0VhciA9IHZ1LnNlcnZlck5lZWRzRUFSKGdldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcigpLmdldFNlcnZlcklkKCkpOwotCQkJaWYgKG9sZE5lZWRFYXIgIT0gY3VycmVudFNlcnZpY2VTZXJ2ZXJOZWVkc0VhcikKLQkJCXsKLQkJCQkvL1VwZGF0ZSBuZWVkRWFyIGFuZCBzZXJ2aWNlRWFyUHJvamVjdE5hbWUuCi0JCQkJaWYgKGN1cnJlbnRTZXJ2aWNlU2VydmVyTmVlZHNFYXIpCi0JCQkJewotCQkJCQkvL0NhbGN1bGF0ZSBhIHJlYXNvbmFibGUgZGVmYXVsdCBmb3IgdGhlIEVhciBwcm9qZWN0IG5hbWUKLQkJCQkJU3RyaW5nIGVhclByb2plY3ROYW1lID0gRGVmYXVsdGluZ1V0aWxzLmdldERlZmF1bHRFQVJQcm9qZWN0TmFtZShnZXRTZXJ2aWNlUHJvamVjdE5hbWUoKSk7Ci0JCQkJCXNldFNlcnZpY2VOZWVkRUFSKGN1cnJlbnRTZXJ2aWNlU2VydmVyTmVlZHNFYXIpOwotCQkJCQlzZXRTZXJ2aWNlRWFyUHJvamVjdE5hbWUoZWFyUHJvamVjdE5hbWUpOwotCQkJCX0KLQkJCQllbHNlCi0JCQkJewotCQkJCQlzZXRTZXJ2aWNlTmVlZEVBUihjdXJyZW50U2VydmljZVNlcnZlck5lZWRzRWFyKTsKLQkJCQkJc2V0U2VydmljZUVhclByb2plY3ROYW1lKCIiKTsJCQkJCQotCQkJCX0KLQkJCQkKLQkJCX0KLQkJfQkJCi0JfQotCi0JcHVibGljIFR5cGVSdW50aW1lU2VydmVyIGdldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcigpIHsKLQkJcmV0dXJuIGlkc187Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0U2VydmljZUdlbmVyYXRpb24oaW50IHZhbHVlKQotCXsKLQkJc2VydmljZVNjYWxlXy5zZXRTZWxlY3Rpb24odmFsdWUpOwotCQlzZXRHcmFwaGljcyh2YWx1ZSk7Ci0JCQotCQkvL2VuYWJsZSBjbGllbnQgd2lkZ2V0IGJhc2VkIG9uIHNlcnZpY2Ugc2NhbGUgc2V0dGluZwotCQljbGllbnRXaWRnZXRfLmVuYWJsZUNsaWVudFNsaWRlcih2YWx1ZTw9U2NlbmFyaW9Db250ZXh0LldTX1NUQVJUKTsKLQkJCi0JCS8qZm9yIHBvcHVwIGNhc2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgVUkgaXMgcmVmcmVzaGVkIGJhc2VkIG9uIAotCQljaGFuZ2VzIHRvIGRhdGEqLwotCQlwYWNrU2VsZigpOwotCX0JCi0KLQlwdWJsaWMgaW50IGdldFNlcnZpY2VHZW5lcmF0aW9uKCkKLQl7Ci0JCXJldHVybiBzZXJ2aWNlU2NhbGVfLmdldFNlbGVjdGlvbigpOwotCX0KLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXREZXZlbG9wU2VydmljZSgpIHsKLQkJcmV0dXJuIGRldmVsb3BTZXJ2aWNlXzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXREZXZlbG9wU2VydmljZShib29sZWFuIGRldmVsb3BTZXJ2aWNlKSB7Ci0JCXRoaXMuZGV2ZWxvcFNlcnZpY2VfID0gZGV2ZWxvcFNlcnZpY2U7Ci0JfQkKLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRBc3NlbWJsZVNlcnZpY2UoKSB7Ci0JCXJldHVybiBhc3NlbWJsZVNlcnZpY2VfOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldEFzc2VtYmxlU2VydmljZShib29sZWFuIGFzc2VtYmxlU2VydmljZSkgewotCQl0aGlzLmFzc2VtYmxlU2VydmljZV8gPSBhc3NlbWJsZVNlcnZpY2U7Ci0JfQotCi0JcHVibGljIGJvb2xlYW4gZ2V0RGVwbG95U2VydmljZSgpIHsKLQkJcmV0dXJuIGRlcGxveVNlcnZpY2VfOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldERlcGxveVNlcnZpY2UoYm9vbGVhbiBkZXBsb3lTZXJ2aWNlKSB7Ci0JCXRoaXMuZGVwbG95U2VydmljZV8gPSBkZXBsb3lTZXJ2aWNlOwotCX0KLQkKLQlwdWJsaWMgQm9vbGVhbiBnZXRTdGFydFNlcnZpY2UoKXsKLQkJcmV0dXJuIHN0YXJ0U2VydmljZV87Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldFN0YXJ0U2VydmljZShCb29sZWFuIHZhbHVlKSB7Ci0gICAgICAgIHN0YXJ0U2VydmljZV89dmFsdWU7Ci0JfQotCi0JcHVibGljIEJvb2xlYW4gZ2V0SW5zdGFsbFNlcnZpY2UoKSB7Ci0JCXJldHVybiBpbnN0YWxsU2VydmljZV87Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0SW5zdGFsbFNlcnZpY2UoQm9vbGVhbiB2YWx1ZSkgewotICAgICAgICBpbnN0YWxsU2VydmljZV89dmFsdWU7Ci0JfQotCi0JcHVibGljIEJvb2xlYW4gZ2V0VGVzdFNlcnZpY2UoKSB7Ci0gICAgICAgIHJldHVybiAKLSAgICAgICAgbmV3IEJvb2xlYW4oIHRlc3RTZXJ2aWNlXy5ib29sZWFuVmFsdWUoKSB8fCBjbGllbnRXaWRnZXRfLmdldFRlc3RDbGllbnQoKS5ib29sZWFuVmFsdWUoKSk7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0VGVzdFNlcnZpY2UoQm9vbGVhbiB2YWx1ZSkgewotICAgICAgICB0ZXN0U2VydmljZV89IHZhbHVlOwotCX0KLQlwdWJsaWMgQm9vbGVhbiBnZXRNb25pdG9yU2VydmljZSgpIHsKLQkJcmV0dXJuIG5ldyBCb29sZWFuKG1vbml0b3JCdXR0b25fLmdldFNlbGVjdGlvbigpKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRNb25pdG9yU2VydmljZShCb29sZWFuIHZhbHVlKSB7Ci0JCW1vbml0b3JCdXR0b25fLnNldFNlbGVjdGlvbih2YWx1ZS5ib29sZWFuVmFsdWUoKSk7Ci0JfQotCi0JcHVibGljIEJvb2xlYW4gZ2V0UHVibGlzaFNlcnZpY2UoKSB7CQkKLQkJcmV0dXJuIG5ldyBCb29sZWFuKHB1Ymxpc2hCdXR0b25fLmdldFNlbGVjdGlvbigpKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRQdWJsaXNoU2VydmljZShCb29sZWFuIHZhbHVlKSB7Ci0JCXB1Ymxpc2hCdXR0b25fLnNldFNlbGVjdGlvbiggdmFsdWUuYm9vbGVhblZhbHVlKCkgKTsKLQl9Ci0KLQlwdWJsaWMgQm9vbGVhbiBnZXRHZW5lcmF0ZVByb3h5KCkgewotCQlyZXR1cm4gbmV3IEJvb2xlYW4oY2xpZW50V2lkZ2V0Xy5nZXRHZW5lcmF0ZVByb3h5KCkpOwkJCi0JfQotCi0JcHVibGljIHZvaWQgc2V0Q2xpZW50R2VuZXJhdGlvbihpbnQgdmFsdWUpCi0JewotCQljbGllbnRXaWRnZXRfLnNldENsaWVudEdlbmVyYXRpb24odmFsdWUpOwotCQkvKmZvciBwb3B1cCBjYXNlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIFVJIGlzIHJlZnJlc2hlZCBiYXNlZCBvbiAKLQkJCWNoYW5nZXMgdG8gZGF0YSovCi0JCXBhY2tTZWxmKCk7Ci0JfQotCQotCXB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoKQotCXsKLQkJcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoKTsKLQl9Ci0JCi0JcHVibGljIFN0cmluZyBnZXRDbGllbnRQcm9qZWN0TmFtZSgpCi0JewotCQlyZXR1cm4gY2xpZW50V2lkZ2V0Xy5nZXRDbGllbnRQcm9qZWN0TmFtZSgpOwotCX0KLQkKLQlwdWJsaWMgaW50IGdldENsaWVudEdlbmVyYXRpb24oKQotCXsKLQkJcmV0dXJuIGNsaWVudFdpZGdldF8uZ2V0Q2xpZW50R2VuZXJhdGlvbigpOwotCX0JCi0KLQlwdWJsaWMgUmVzb3VyY2VDb250ZXh0IGdldFJlc291cmNlQ29udGV4dCgpIHsKLQkJaWYgKHJlc291cmNlQ29udGV4dF8gPT0gbnVsbCkgewotCQkJcmVzb3VyY2VDb250ZXh0XyA9IFdlYlNlcnZpY2VQbHVnaW4uZ2V0SW5zdGFuY2UoKQotCQkJCQkuZ2V0UmVzb3VyY2VDb250ZXh0KCk7Ci0JCX0KLQkJcmV0dXJuIHJlc291cmNlQ29udGV4dF87Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0UmVzb3VyY2VDb250ZXh0KFJlc291cmNlQ29udGV4dCBjb250ZXh0KSB7Ci0JCXJlc291cmNlQ29udGV4dF8gPSBjb250ZXh0OwotCX0KLQotCXB1YmxpYyBJU3RydWN0dXJlZFNlbGVjdGlvbiBnZXRPYmplY3RTZWxlY3Rpb24oKQotCXsKLQkJcmV0dXJuIG9iamVjdFNlbGVjdGlvbl87CQkKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0T2JqZWN0U2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiApCi0JewotCQlvYmplY3RTZWxlY3Rpb25fID0gc2VsZWN0aW9uOwotCX0KLQkKLQlwdWJsaWMgV2ViU2VydmljZXNQYXJzZXIgZ2V0V2ViU2VydmljZXNQYXJzZXIoKQotCXsKLQkJcmV0dXJuIHBhcnNlcl87Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlcikKLQl7Ci0JCXBhcnNlcl8gPSBwYXJzZXI7Ci0JCWNsaWVudFdpZGdldF8uc2V0V2ViU2VydmljZXNQYXJzZXIocGFyc2VyKTsKLQl9Ci0JcHVibGljIHZvaWQgZXh0ZXJuYWxpemUoKSB7Ci0JCXN1cGVyLmV4dGVybmFsaXplKCk7Ci0JCWlmICghcHJlZmVyZW5jZXNQYWdlXykgewotCQkJICAgU3RyaW5nIHdlYlNlcnZpY2VUeXBlSUQ9IG51bGw7Ci0JCQkgICBpZiAoaWRzXyAhPSBudWxsKQotCQkJCSAgIHdlYlNlcnZpY2VUeXBlSUQgPSBpZHNfLmdldFR5cGVJZCgpOwotCQkJICAgc2VydmljZUltcGxfLnN0b3JlV2lkZ2V0SGlzdG9yeSh3ZWJTZXJ2aWNlVHlwZUlEKTsKLQkJCX0KLQl9Ci0JCi0JcHVibGljIHZvaWQgaW50ZXJuYWxpemUoKSB7CQkKLQkJCi0JCWlmIChwcmVmZXJlbmNlc1BhZ2VfKQotCQkJcmV0dXJuOwotCQkKLQkJaWYgKG9iamVjdFNlbGVjdGlvbldpZGdldF8gPT0gbnVsbCkKLQkJCW9iamVjdFNlbGVjdGlvbldpZGdldF8gPSBnZXRTZWxlY3Rpb25XaWRnZXQoKTsKLQkJCi0JCVN0cmluZyBkaXNwbGF5YWJsZSA9IG51bGw7Ci0JCQotCQlpZiAob2JqZWN0U2VsZWN0aW9uV2lkZ2V0XyBpbnN0YW5jZW9mIElPYmplY3RTZWxlY3Rpb25MYXVuY2hhYmxlKSB7CQkKLQkJCUlPYmplY3RTZWxlY3Rpb25MYXVuY2hhYmxlIGxhdW5jaGFibGUgPSAoSU9iamVjdFNlbGVjdGlvbkxhdW5jaGFibGUpIG9iamVjdFNlbGVjdGlvbldpZGdldF87Ci0JCQlsYXVuY2hhYmxlLnNldEluaXRpYWxTZWxlY3Rpb24ob2JqZWN0U2VsZWN0aW9uXyk7Ci0JCQlvYmplY3RTZWxlY3Rpb25fID0gbGF1bmNoYWJsZS5nZXRPYmplY3RTZWxlY3Rpb24oKTsKLQkJCWRpc3BsYXlhYmxlID0gbGF1bmNoYWJsZS5nZXRPYmplY3RTZWxlY3Rpb25EaXNwbGF5YWJsZVN0cmluZygpOwotCQl9Ci0JCWVsc2UgewotCQkJSU9iamVjdFNlbGVjdGlvbldpZGdldCBzZWxlY3Rpb25XaWRnZXQgPSAoSU9iamVjdFNlbGVjdGlvbldpZGdldCkgb2JqZWN0U2VsZWN0aW9uV2lkZ2V0XzsKLQkJCXNlbGVjdGlvbldpZGdldC5zZXRJbml0aWFsU2VsZWN0aW9uKG9iamVjdFNlbGVjdGlvbl8pOwotCQkgICAgZGlzcGxheWFibGUgPSBzZWxlY3Rpb25XaWRnZXQuZ2V0T2JqZWN0U2VsZWN0aW9uRGlzcGxheWFibGVTdHJpbmcoKTsKLQkJfQotCi0JCXNlcnZpY2VJbXBsXy5yZW1vdmVNb2RpZnlMaXN0ZW5lcihvYmplY3RNb2RpZnlMaXN0ZW5lcl8pOwotCQlpZiAoZGlzcGxheWFibGUgIT0gbnVsbCAmJiBkaXNwbGF5YWJsZS5sZW5ndGgoKSAhPSAwKQotCQkJc2VydmljZUltcGxfLnNldFRleHQoZGlzcGxheWFibGUpOwotCQlTdHJpbmcgd2ViU2VydmljZVR5cGVJRCA9IG51bGw7Ci0JCWlmIChpZHNfICE9IG51bGwpCi0JCQl3ZWJTZXJ2aWNlVHlwZUlEID0gaWRzXy5nZXRUeXBlSWQoKTsKLQkJc2VydmljZUltcGxfLnJlc3RvcmVXaWRnZXRIaXN0b3J5KHdlYlNlcnZpY2VUeXBlSUQpOwotCQlzZXJ2aWNlSW1wbF8uYWRkTW9kaWZ5TGlzdGVuZXIob2JqZWN0TW9kaWZ5TGlzdGVuZXJfKTsKLQotCQkJCi0JfQotCi0JcHVibGljIElTdGF0dXMgZ2V0U3RhdHVzKCkgewotCQlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0KLQkJSVN0YXR1cyBtaXNzaW5nRmllbGRTdGF0dXMgPSBjaGVja01pc3NpbmdGaWVsZFN0YXR1cygpOwotCQlpZiAobWlzc2luZ0ZpZWxkU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUikgewotCQkJcmV0dXJuIG1pc3NpbmdGaWVsZFN0YXR1czsKLQkJfQotCi0JCUlTdGF0dXMgc2VydmljZUltcGxWYWxpZGF0aW9uU3RhdHVzID0gY2hlY2tTZXJ2aWNlSW1wbFRleHRTdGF0dXMoKTsKLQkJaWYgKHNlcnZpY2VJbXBsVmFsaWRhdGlvblN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IpIHsKLQkJCXJldHVybiBzZXJ2aWNlSW1wbFZhbGlkYXRpb25TdGF0dXM7Ci0JCX0KLQkJZWxzZSBpZiAoc2VydmljZUltcGxWYWxpZGF0aW9uU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5XQVJOSU5HKXsKLQkJCXJldHVybiBzZXJ2aWNlSW1wbFZhbGlkYXRpb25TdGF0dXM7Ci0JCX0KLQotCQlJU3RhdHVzIHBvc3NpYmxlRXJyb3JTdGF0dXMgPSBjaGVja0Vycm9yU3RhdHVzKCk7Ci0JCWlmIChwb3NzaWJsZUVycm9yU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUiB8fCBwb3NzaWJsZUVycm9yU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5XQVJOSU5HKSB7Ci0JCQlyZXR1cm4gcG9zc2libGVFcnJvclN0YXR1czsKLQkJfQotCi0JCUlTdGF0dXMgcG9zc2libGVXYXJuaW5nU3RhdHVzID0gY2hlY2tXYXJuaW5nU3RhdHVzKCk7Ci0JCWlmIChwb3NzaWJsZVdhcm5pbmdTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLldBUk5JTkcpIHsKLQkJCXJldHVybiBwb3NzaWJsZVdhcm5pbmdTdGF0dXM7Ci0JCX0KLQotCQkvLyBJZiBubyB3YXJuaW5ncy9lcnJvcnMgd2VyZSByZXBvcnRlZCwgY2xlYXIgdmFsaWRhdGlvbiBzdGF0ZSBvbgotCQkvLyBzZXJ2aWNlIHNpZGUgYW5kIGNsaWVudCBzaWRlIChpZiBlbmFibGVkKQotCQl2YWxpZGF0aW9uU3RhdGVfID0gVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX05PTkU7Ci0JCWlmIChjbGllbnRXaWRnZXRfLmdldEdlbmVyYXRlUHJveHkoKSkgewotCQkJY2xpZW50V2lkZ2V0Xy5zZXRWYWxpZGF0aW9uU3RhdGUoVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX05PTkUpOwotCQl9Ci0KLQkJcmV0dXJuIHN0YXR1czsKLQl9Ci0JCi0JLyoKLQkgKiBjYWxsIHZhbGlkYXRpb24gY29kZSBpbiB0aGUgb2JqZWN0IHNlbGVjdGlvbiB3aWRnZXQgdG8gZW5zdXJlIGFueQotCSAqIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHNlcnZpY2VJbXBsXyBmaWVsZCBhcmUgdmFsaWQKLQkgKi8KLQlwcml2YXRlIElTdGF0dXMgY2hlY2tTZXJ2aWNlSW1wbFRleHRTdGF0dXMoKSB7Ci0JCQotCQlTdHJpbmcgZmllbGRUZXh0ID0gc2VydmljZUltcGxfLmdldFRleHQoKS50cmltKCk7Ci0KLQkJaWYgKG9iamVjdFNlbGVjdGlvbldpZGdldF8gPT0gbnVsbCkKLQkJewotCQkJb2JqZWN0U2VsZWN0aW9uV2lkZ2V0XyA9IGdldFNlbGVjdGlvbldpZGdldCgpOwotCQl9Ci0JCQotCQlJT2JqZWN0U2VsZWN0aW9uTGF1bmNoYWJsZSBsYXVuY2hhYmxlID0gbnVsbDsKLQkJaWYgKG9iamVjdFNlbGVjdGlvbldpZGdldF8gaW5zdGFuY2VvZiBJT2JqZWN0U2VsZWN0aW9uTGF1bmNoYWJsZSkKLQkJICAgIHsgICAgICAJCi0JCQkJbGF1bmNoYWJsZSA9IChJT2JqZWN0U2VsZWN0aW9uTGF1bmNoYWJsZSlvYmplY3RTZWxlY3Rpb25XaWRnZXRfOwotCQkJCXZhbGlkT2JqZWN0U2VsZWN0aW9uXyA9IGxhdW5jaGFibGUudmFsaWRhdGUoZmllbGRUZXh0KTsKLQkJCX0KLQkJCWVsc2UgCi0JCQl7Ci0JCQkJSU9iamVjdFNlbGVjdGlvbldpZGdldCB3aWRnZXQgPSAoSU9iamVjdFNlbGVjdGlvbldpZGdldClvYmplY3RTZWxlY3Rpb25XaWRnZXRfOwotCQkJCXZhbGlkT2JqZWN0U2VsZWN0aW9uXyA9IHdpZGdldC52YWxpZGF0ZShmaWVsZFRleHQpOwotCQkJfQotCQkKLQkJaWYgKCF2YWxpZE9iamVjdFNlbGVjdGlvbl8pCi0JCXsKLQkJCWludCBzY2VuYXJpbyA9IGdldFdlYlNlcnZpY2VTY2VuYXJpbygpOwotCQkJCi0JCQlpZiAoc2NlbmFyaW8gPT0gV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTVVQKXsKLQkJCQlpZiAobGF1bmNoYWJsZSAhPSBudWxsKXsKLQkJCQkJSVN0YXR1cyB2YWxTdGF0dXMgPSBsYXVuY2hhYmxlLnZhbGlkYXRlU2VsZWN0aW9uKG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKGZpZWxkVGV4dCkpOwotCQkJCQlpZiAodmFsU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5XQVJOSU5HKQotCQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzLndhcm5pbmdTdGF0dXMoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19XQVJOX1NFUlZJQ0VfSU1QTF9OQU1JTkdfQ09OVkVOVElPTik7Ci0JCQkJfQotCQkJCWVsc2UKLQkJCQkJcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKENvbnN1bXB0aW9uVUlNZXNzYWdlcy5NU0dfSU5WQUxJRF9TRVJWSUNFX0lNUEwpOwotCQkJfQotCQkJZWxzZQotCQkJCXJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0lOVkFMSURfU0VSVklDRV9ERUYpOwkJCQotCQl9CQkKLQkJCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQotCXByaXZhdGUgaW50IGdldFdlYlNlcnZpY2VTY2VuYXJpbygpCi0JewotCQkgICBpbnQgaW5kZXggPSB3ZWJzZXJ2aWNlVHlwZV8uZ2V0U2VsZWN0aW9uSW5kZXgoKTsJCi0JCSAgIFN0cmluZyB0eXBlSWQgPSBsYWJlbElkc18uZ2V0SWRzXygpW2luZGV4XTsKLQkJICAgcmV0dXJuIFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNjZW5hcmlvRnJvbVR5cGVJZCh0eXBlSWQpOwkJCi0JfQotCQotCXByaXZhdGUgSVN0YXR1cyBjaGVja01pc3NpbmdGaWVsZFN0YXR1cygpIHsKLQotCQkvLyAxLiBDaGVjayBmb3IgbWlzc2luZyBmaWVsZHMgb24gc2VydmljZSBzaWRlCi0JCVZhbGlkYXRpb25VdGlscyB2YWxVdGlscyA9IG5ldyBWYWxpZGF0aW9uVXRpbHMoKTsKLQkJU3RyaW5nIHNlcnZpY2VJbXBsID0gc2VydmljZUltcGxfLmdldFRleHQoKS50cmltKCk7Ci0JCVN0cmluZyB0eXBlSWQgPSBnZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoKS5nZXRUeXBlSWQoKTsKLQkJU3RyaW5nIHJ1bnRpbWVJZCA9IGdldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcigpLmdldFJ1bnRpbWVJZCgpOwotCQlTdHJpbmcgc2VydmVySWQgPSBnZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoKS5nZXRTZXJ2ZXJJZCgpOwotCQlTdHJpbmcgcHJvamVjdE5hbWUgPSBnZXRTZXJ2aWNlUHJvamVjdE5hbWUoKTsKLQkJYm9vbGVhbiBuZWVkRWFyID0gZ2V0U2VydmljZU5lZWRFQVIoKTsKLQkJU3RyaW5nIGVhclByb2plY3ROYW1lID0gZ2V0U2VydmljZUVhclByb2plY3ROYW1lKCk7Ci0JCVN0cmluZyBwcm9qZWN0VHlwZUlkID0gZ2V0U2VydmljZUNvbXBvbmVudFR5cGUoKTsKLQkJCi0JCUlTdGF0dXMgc2VydmljZU1pc3NpbmdGaWVsZFN0YXR1cyA9IHZhbFV0aWxzLmNoZWNrTWlzc2luZ0ZpZWxkU3RhdHVzKHZhbGlkYXRpb25TdGF0ZV8sIHR5cGVJZCwgc2VydmljZUltcGwsCi0JCQkJcnVudGltZUlkLCBzZXJ2ZXJJZCwgcHJvamVjdE5hbWUsIG5lZWRFYXIsIGVhclByb2plY3ROYW1lLCBwcm9qZWN0VHlwZUlkLCBmYWxzZSk7Ci0JCWlmIChzZXJ2aWNlTWlzc2luZ0ZpZWxkU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUikgewotCQkJcmV0dXJuIHNlcnZpY2VNaXNzaW5nRmllbGRTdGF0dXM7Ci0JCX0KLQotCQkvLyAyLiBDaGVjayBmb3IgbWlzc2luZyBmaWVsZHMgb24gdGhlIGNsaWVudCBzaWRlIGlmIGl0J3MgdmlzaWJsZS4KLQkJaWYgKGNsaWVudFdpZGdldF8uZ2V0R2VuZXJhdGVQcm94eSgpKSB7Ci0JCQlJU3RhdHVzIGNsaWVudE1pc3NpbmdGaWVsZHNTdGF0dXMgPSBjbGllbnRXaWRnZXRfLmNoZWNrTWlzc2luZ0ZpZWxkU3RhdHVzKCk7Ci0JCQlpZiAoY2xpZW50TWlzc2luZ0ZpZWxkc1N0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IpIHsKLQkJCQlyZXR1cm4gY2xpZW50TWlzc2luZ0ZpZWxkc1N0YXR1czsKLQkJCX0KLQotCQl9Ci0KLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfQotCi0JcHJpdmF0ZSBJU3RhdHVzIGNoZWNrRXJyb3JTdGF0dXMoKSB7Ci0KLQkJVmFsaWRhdGlvblV0aWxzIHZhbFV0aWxzID0gbmV3IFZhbGlkYXRpb25VdGlscygpOwotCi0JCS8vIDEuIENoZWNrIGZvciBlcnJvcnMgb24gc2VydmljZSBzaWRlCi0JCVN0cmluZyBwcm9qZWN0TmFtZSA9IGdldFNlcnZpY2VQcm9qZWN0TmFtZSgpOwotCQlib29sZWFuIG5lZWRFYXIgPSBnZXRTZXJ2aWNlTmVlZEVBUigpOwotCQlTdHJpbmcgZWFyUHJvamVjdE5hbWUgPSBnZXRTZXJ2aWNlRWFyUHJvamVjdE5hbWUoKTsKLQkJU3RyaW5nIHByb2plY3RUeXBlSWQgPSBnZXRTZXJ2aWNlQ29tcG9uZW50VHlwZSgpOwotCQlTdHJpbmcgaW5pdGlhbFByb2plY3ROYW1lID0gIiI7Ci0JCWlmIChpbml0aWFsUHJvamVjdF8gIT0gbnVsbCkgewotCQkJaW5pdGlhbFByb2plY3ROYW1lID0gaW5pdGlhbFByb2plY3RfLmdldE5hbWUoKTsKLQkJfSAKLQkJSVN0YXR1cyBzZXJ2aWNlU2lkZUVycm9yU3RhdHVzID0gdmFsVXRpbHMuY2hlY2tFcnJvclN0YXR1cyh2YWxpZGF0aW9uU3RhdGVfLCBnZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoKSwgcHJvamVjdE5hbWUsIGluaXRpYWxQcm9qZWN0TmFtZSwgbmVlZEVhciwgZWFyUHJvamVjdE5hbWUsIHByb2plY3RUeXBlSWQsIGZhbHNlKTsKLQkJaWYgKHNlcnZpY2VTaWRlRXJyb3JTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLkVSUk9SKSB7Ci0JCQlyZXR1cm4gc2VydmljZVNpZGVFcnJvclN0YXR1czsKLQkJfQotCi0JCS8vIDIuIENoZWNrIGZvciBlcnJvcnMgb24gY2xpZW50IHNpZGUgaWYgaXQgaXMgdmlzaWJsZQotCQlpZiAoY2xpZW50V2lkZ2V0Xy5nZXRHZW5lcmF0ZVByb3h5KCkpIHsKLQkJCUlTdGF0dXMgY2xpZW50U2lkZUVycm9yU3RhdHVzID0gY2xpZW50V2lkZ2V0Xy5jaGVja0Vycm9yU3RhdHVzKCk7Ci0JCQlpZiAoY2xpZW50U2lkZUVycm9yU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUikgewotCQkJCXJldHVybiBjbGllbnRTaWRlRXJyb3JTdGF0dXM7Ci0JCQl9Ci0KLQkJCS8vIDMuIENoZWNrIGZvciBlcnJvcnMgdGhhdCBzcGFuIHNlcnZpY2UgYW5kIGNsaWVudCBpZiBjbGllbnQgc2lkZQotCQkJLy8gaXMgdmlzaWJsZS4KLQkJCWludCBjbGllbnRWYWxpZGF0aW9uU3RhdGUgPSBjbGllbnRXaWRnZXRfLmdldFZhbGlkYXRpb25TdGF0ZSgpOwotCQkJaWYgKHZhbGlkYXRpb25TdGF0ZV8gPT0gVmFsaWRhdGlvblV0aWxzLlZBTElEQVRFX0FMTAotCQkJCQl8fCB2YWxpZGF0aW9uU3RhdGVfID09IFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9QUk9KRUNUX0NIQU5HRVMKLQkJCQkJfHwgY2xpZW50VmFsaWRhdGlvblN0YXRlID09IFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9BTEwKLQkJCQkJfHwgY2xpZW50VmFsaWRhdGlvblN0YXRlID09IFZhbGlkYXRpb25VdGlscy5WQUxJREFURV9QUk9KRUNUX0NIQU5HRVMpIHsKLQkJCQlJV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyIHJ1bnRpbWVDaGVja2VyID0gbnVsbDsKLQotCQkJCVN0cmluZyBzZXJ2aWNlUnVudGltZUlkID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmljZVJ1bnRpbWVJZChnZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoKSwgcHJvamVjdE5hbWUsIHByb2plY3RUeXBlSWQpOwkgICAgCQkKLQkJCQlydW50aW1lQ2hlY2tlciA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZpY2VSdW50aW1lQ2hlY2tlcihzZXJ2aWNlUnVudGltZUlkKTsKLQotCQkJCWlmIChydW50aW1lQ2hlY2tlciAhPSBudWxsKSB7Ci0JCQkJCXJldHVybiBydW50aW1lQ2hlY2tlci5jaGVja1NlcnZpY2VDbGllbnRDb21wYXRpYmlsaXR5KAotCQkJCQkJCWdldFNlcnZpY2VOZWVkRUFSKCksIGdldFNlcnZpY2VFYXJQcm9qZWN0TmFtZSgpLCBnZXRTZXJ2aWNlUHJvamVjdE5hbWUoKSwgCi0JCQkJCQkJY2xpZW50V2lkZ2V0Xy5nZXRDbGllbnROZWVkRUFSKCksIGNsaWVudFdpZGdldF8uZ2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoKSwgCi0JCQkJCQkJY2xpZW50V2lkZ2V0Xy5nZXRDbGllbnRQcm9qZWN0TmFtZSgpKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0KLQlwcml2YXRlIElTdGF0dXMgY2hlY2tXYXJuaW5nU3RhdHVzKCkgewotCQlWYWxpZGF0aW9uVXRpbHMgdmFsVXRpbHMgPSBuZXcgVmFsaWRhdGlvblV0aWxzKCk7Ci0JCS8vIDEuIENoZWNrIGZvciB3YXJuaW5ncyBvbiB0aGUgc2VydmljZSBzaWRlCi0JCWludCBzY2FsZVNldHRpbmcgPSBnZXRTZXJ2aWNlR2VuZXJhdGlvbigpOwotCQlTdHJpbmcgc2VydmVySWQgPSBnZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoKS5nZXRTZXJ2ZXJJZCgpOwotCQlJU3RhdHVzIHNlcnZpY2VXYXJuaW5nU3RhdHVzID0gdmFsVXRpbHMuY2hlY2tXYXJuaW5nU3RhdHVzKHZhbGlkYXRpb25TdGF0ZV8sIHNjYWxlU2V0dGluZywgc2VydmVySWQsIGdldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcigpLmdldFNlcnZlckluc3RhbmNlSWQoKSwgZmFsc2UpOwotCQlpZiAoc2VydmljZVdhcm5pbmdTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLldBUk5JTkcpIHsKLQkJCXJldHVybiBzZXJ2aWNlV2FybmluZ1N0YXR1czsKLQkJfQotCi0JCS8vIDIuIENoZWNrIGZvciB3YXJuaW5ncyBvbiB0aGUgY2xpZW50IHNpZGUgaWYgaXQncyBlbmFibGVkCi0JCWlmIChjbGllbnRXaWRnZXRfLmdldEdlbmVyYXRlUHJveHkoKSkgewotCQkJSVN0YXR1cyBjbGllbnRXYXJuaW5nU3RhdHVzID0gY2xpZW50V2lkZ2V0Xy5jaGVja1dhcm5pbmdTdGF0dXMoKTsKLQkJCWlmIChjbGllbnRXYXJuaW5nU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5XQVJOSU5HKSB7Ci0JCQkJcmV0dXJuIGNsaWVudFdhcm5pbmdTdGF0dXM7Ci0JCQl9Ci0KLQkJfQotCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQkJCi0JcHJvdGVjdGVkIHZvaWQgaW5pdEltYWdlUmVnaXN0cnkoKQotCXsKLQkJaW1hZ2VSZWdfID0gbmV3IEltYWdlUmVnaXN0cnkoRGlzcGxheS5nZXRDdXJyZW50KCkpOwotCQkKLQkJaW1hZ2VSZWdfLnB1dChJQ09OX1NDQUxFX0JHXzAsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihJQ09OX1NDQUxFX0JHXzApKTsKLQkJaW1hZ2VSZWdfLnB1dChJQ09OX1NDQUxFX0JHXzEsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihJQ09OX1NDQUxFX0JHXzEpKTsKLQkJaW1hZ2VSZWdfLnB1dChJQ09OX1NDQUxFX0JHXzIsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihJQ09OX1NDQUxFX0JHXzIpKTsKLQkJaW1hZ2VSZWdfLnB1dChJQ09OX1NDQUxFX0JHXzMsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihJQ09OX1NDQUxFX0JHXzMpKTsKLQkJaW1hZ2VSZWdfLnB1dChJQ09OX1NDQUxFX0JHXzQsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihJQ09OX1NDQUxFX0JHXzQpKTsKLQkJaW1hZ2VSZWdfLnB1dChJQ09OX1NDQUxFX0JHXzUsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihJQ09OX1NDQUxFX0JHXzUpKTsKLQkJaW1hZ2VSZWdfLnB1dChJQ09OX1NDQUxFX0JHXzYsIFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihJQ09OX1NDQUxFX0JHXzYpKTsKLQkJCi0JCWltYWdlUmVnXy5wdXQoR1JBUEhJQ19TRVJWSUNFXzAsIFdlYlNlcnZpY2VDcmVhdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihHUkFQSElDX1NFUlZJQ0VfMCkpOwotCQlpbWFnZVJlZ18ucHV0KEdSQVBISUNfU0VSVklDRV8xLCBXZWJTZXJ2aWNlQ3JlYXRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoR1JBUEhJQ19TRVJWSUNFXzEpKTsKLQkJaW1hZ2VSZWdfLnB1dChHUkFQSElDX1NFUlZJQ0VfMiwgV2ViU2VydmljZUNyZWF0aW9uVUlQbHVnaW4KLQkJCQkuZ2V0SW1hZ2VEZXNjcmlwdG9yKEdSQVBISUNfU0VSVklDRV8yKSk7Ci0JCWltYWdlUmVnXy5wdXQoR1JBUEhJQ19TRVJWSUNFXzMsIFdlYlNlcnZpY2VDcmVhdGlvblVJUGx1Z2luCi0JCQkJLmdldEltYWdlRGVzY3JpcHRvcihHUkFQSElDX1NFUlZJQ0VfMykpOwotCQlpbWFnZVJlZ18ucHV0KEdSQVBISUNfU0VSVklDRV80LCBXZWJTZXJ2aWNlQ3JlYXRpb25VSVBsdWdpbgotCQkJCS5nZXRJbWFnZURlc2NyaXB0b3IoR1JBUEhJQ19TRVJWSUNFXzQpKTsKLQkJaW1hZ2VSZWdfLnB1dChHUkFQSElDX1NFUlZJQ0VfNSwgV2ViU2VydmljZUNyZWF0aW9uVUlQbHVnaW4KLQkJCQkuZ2V0SW1hZ2VEZXNjcmlwdG9yKEdSQVBISUNfU0VSVklDRV81KSk7Ci0JfQotCQotCXByaXZhdGUgdm9pZCBzZXRBZHZhbmNlZE9wdGlvbnMoYm9vbGVhbiBlbmFibGVkKQotCXsKLQkJbW9uaXRvckJ1dHRvbl8uc2V0RW5hYmxlZChlbmFibGVkKTsgCi0JCXB1Ymxpc2hCdXR0b25fLnNldEVuYWJsZWQoZW5hYmxlZCk7CQkKLQl9Ci0JCi0JcHVibGljIHZvaWQgc2V0U2VydmljZVByb2plY3ROYW1lKFN0cmluZyBuYW1lKQotCSAgewotCQlzZXJ2aWNlUHJvamVjdE5hbWVfPSBuYW1lOwotCQloTGlua1NlcnZpY2VQcm9qZWN0Xy5zZXRUZXh0KFNFUlZJQ0VfUFJPSkVDVF9QUkVGSVggKyAiICIgKyBzZXJ2aWNlUHJvamVjdE5hbWVfKTsKLQkJaExpbmtTZXJ2aWNlUHJvamVjdF8ucGFjayh0cnVlKTsKLQkJcGFja1NlbGYoKTsJCi0JICB9Ci0JCi0JcHVibGljIHZvaWQgc2V0SW5pdGlhbFByb2plY3QoSVByb2plY3QgcHJvamVjdCkKLQl7Ci0JCWluaXRpYWxQcm9qZWN0XyA9IHByb2plY3Q7Ci0JfQotCQotCSBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlRWFyUHJvamVjdE5hbWUoU3RyaW5nIG5hbWUpCi0JICB7CSAgCi0JCSBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfID0gbmFtZTsKLQkJIHJlZnJlc2hFQVJMaW5rKCk7Ci0JICB9Ci0JIAotCSAgcHVibGljIHZvaWQgcmVmcmVzaEVBUkxpbmsoKQotCSAgewotCQkgIGhMaW5rU2VydmljZUVBUl8uc2V0VmlzaWJsZShuZWVkRWFyXyk7IAotCQkgIGlmIChuZWVkRWFyXykKLQkJICB7CQkJIAotCQkJICBoTGlua1NlcnZpY2VFQVJfLnNldFRleHQoU0VSVklDRV9FQVJfUFJFRklYICsgIiAiICsgc2VydmljZUVhclByb2plY3ROYW1lXyk7Ci0JCQkgIGhMaW5rU2VydmljZUVBUl8ucGFjayh0cnVlKTsKLQkJCSAgcGFja1NlbGYoKTsKLQkJICB9Ci0JICB9Ci0JIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VDb21wb25lbnRUeXBlKCBTdHJpbmcgdHlwZSApCi0JICB7Ci0JCSBzZXJ2aWNlQ29tcG9uZW50VHlwZV8gPSB0eXBlOwotCSAgfQotCSAKLQkgIHB1YmxpYyB2b2lkIHNldENsaWVudFByb2plY3ROYW1lKFN0cmluZyBuYW1lKQotCSAgewotCSAgICBjbGllbnRXaWRnZXRfLnNldENsaWVudFByb2plY3ROYW1lKG5hbWUpOyAgCi0JICB9ICAKLQkgIAotCSAgcHVibGljIHZvaWQgc2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoU3RyaW5nIG5hbWUpCi0JICB7Ci0JICAgIGNsaWVudFdpZGdldF8uc2V0Q2xpZW50RWFyUHJvamVjdE5hbWUobmFtZSk7ICAKLQkgIH0KLQkgIAotCSAgSVByb2plY3QgcHJvamVjdF87Ci0JICAKLQkgIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZUNvbXBvbmVudFR5cGUoKQotCSAgewotCQkgIHJldHVybiBzZXJ2aWNlQ29tcG9uZW50VHlwZV87Ci0JICB9Ci0JICAKLQkgIHB1YmxpYyB2b2lkIHNldENsaWVudENvbXBvbmVudFR5cGUoU3RyaW5nIHR5cGUpCi0JICB7Ci0JCSAgY2xpZW50V2lkZ2V0Xy5zZXRDbGllbnRDb21wb25lbnRUeXBlKHR5cGUpOwotCSAgfQotCSAgCi0JICBwdWJsaWMgU3RyaW5nIGdldENsaWVudENvbXBvbmVudFR5cGUoKQotCSAgewotCQkgIHJldHVybiBjbGllbnRXaWRnZXRfLmdldENsaWVudENvbXBvbmVudFR5cGUoKTsKLQkgIH0KLQkgCi0JICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VQcm9qZWN0TmFtZSgpCi0JICB7Ci0JCSAgcmV0dXJuIHNlcnZpY2VQcm9qZWN0TmFtZV87Ci0JICB9Ci0JICAKLQkgIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZUVhclByb2plY3ROYW1lKCkKLQkgIHsKLQkJICByZXR1cm4gc2VydmljZUVhclByb2plY3ROYW1lXzsKLQkgIH0KLQkgIAotCSAgcHVibGljIHZvaWQgc2V0Q2xpZW50UHJvamVjdChJUHJvamVjdCBwcm9qZWN0KQotCSAgewotCQkgIGNsaWVudFdpZGdldF8uc2V0UHJvamVjdChwcm9qZWN0KTsKLQkgIH0KLQkgIAotCSAgcHJpdmF0ZSBJUHJvamVjdCBnZXRDbGllbnRQcm9qZWN0KCkKLQkgIHsKLQkJICByZXR1cm4gY2xpZW50V2lkZ2V0Xy5nZXRQcm9qZWN0KCk7IAotCSAgfQotCSAgCi0JICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KElQcm9qZWN0IHByb2plY3QpCi0JICB7Ci0JCSAgcHJvamVjdF8gPSBwcm9qZWN0OwotCSAgfQkgIAotCSAgCSAgCi0JICBwdWJsaWMgSVByb2plY3QgZ2V0UHJvamVjdCgpCi0JICB7Ci0JCSAgcmV0dXJuIHByb2plY3RfOwotCSAgfQotCSAgCi0JICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VSdW50aW1lSWQoKQotCSAgewotCQkgIC8vIGNhbGN1bGF0ZSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBzZXJ2aWNlUnVudGltZUlkIGJhc2VkIG9uIGN1cnJlbnQgc2V0dGluZ3MuCi0JCSAgcmV0dXJuIFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZpY2VSdW50aW1lSWQoZ2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKCksIGdldFNlcnZpY2VQcm9qZWN0TmFtZSgpLCBnZXRTZXJ2aWNlQ29tcG9uZW50VHlwZSgpKTsgICAgCi0JICB9Ci0JICAKLQkgIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50UnVudGltZUlkKCkKLQkgIHsKLQkJICByZXR1cm4gY2xpZW50V2lkZ2V0Xy5nZXRDbGllbnRSdW50aW1lSWQoKTsKLQkgIH0KLQkgIAotCSAgcHVibGljIHZvaWQgc2V0U2VydmljZU5lZWRFQVIoYm9vbGVhbiBiKQotCSAgewotCQkgIG5lZWRFYXJfID0gYjsKLQkJICByZWZyZXNoRUFSTGluaygpOwotCSAgfQotCSAgCi0JICBwdWJsaWMgYm9vbGVhbiBnZXRTZXJ2aWNlTmVlZEVBUigpCi0JICB7Ci0JCSAgcmV0dXJuIG5lZWRFYXJfOwotCSAgfQotCSAgCi0JICBwdWJsaWMgdm9pZCBzZXRDbGllbnROZWVkRUFSKGJvb2xlYW4gYikKLQkgIHsKLQkgICAgY2xpZW50V2lkZ2V0Xy5zZXRDbGllbnROZWVkRUFSKGIpOwotCSAgfQkgIAotCSAgCi0JICBwdWJsaWMgYm9vbGVhbiBnZXRDbGllbnROZWVkRUFSKCkKLQkgIHsKLQkJICByZXR1cm4gY2xpZW50V2lkZ2V0Xy5nZXRDbGllbnROZWVkRUFSKCk7Ci0JICB9Ci0JICAKLQkgIC8vIGxvb2tzIHRocm91Z2ggZXh0ZW5zaW9ucyBhbmQgcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgc2VsZWN0aW9uIHdpZGdldAotCSAgcHJpdmF0ZSBPYmplY3QgZ2V0U2VsZWN0aW9uV2lkZ2V0KCkKLQkgIHsKLQkJCVN0cmluZyAgICAgICAgIHdzdCAgICAgID0gZ2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKCkuZ2V0VHlwZUlkKCk7Ci0JCQlpbnQgICAgICAgICAgICBzY2VuYXJpbyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNjZW5hcmlvRnJvbVR5cGVJZCh3c3QpOwotCQkJU3RyaW5nICAgICAgICAgaW1wbElkICAgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRXZWJTZXJ2aWNlSW1wbElkRnJvbVR5cGVJZCh3c3QpOwotCQkgIFdlYlNlcnZpY2VJbXBsIHdzaW1wbCAgID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0V2ViU2VydmljZUltcGxCeUlkKGltcGxJZCk7Ci0gICAgICBPYmplY3QgICAgICAgICByZXN1bHQgICA9IG51bGw7Ci0gICAgICAgIAotCQkgICAgCi0JCSAgaWYgKHdzaW1wbCAhPSBudWxsKQotCQkgIHsKLQkJICAgIFN0cmluZyBvYmplY3RTZWxlY3Rpb25XaWRnZXRJZCA9IG51bGw7Ci0JCSAgICBpZiAoc2NlbmFyaW8gPT0gV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV04pCi0JCSAgICB7Ci0JCSAgICAgIG9iamVjdFNlbGVjdGlvbldpZGdldElkID0gIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5XU0RMU2VsZWN0aW9uV2lkZ2V0IjsKLQkJICAgIH0KLQkJICAgIGVsc2UKLQkJICAgIHsKLQkJICAgICAgb2JqZWN0U2VsZWN0aW9uV2lkZ2V0SWQgPSB3c2ltcGwuZ2V0T2JqZWN0U2VsZWN0aW9uV2lkZ2V0KCk7Ci0JCSAgICB9Ci0gICAgICAgIAotICAgICAgICBPYmplY3RTZWxlY3Rpb25SZWdpc3RyeSByZWdpc3RyeSA9IE9iamVjdFNlbGVjdGlvblJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0gICAgICAgIGJvb2xlYW4gZWRpdGFibGUgPSByZWdpc3RyeS5nZXRFeHRlcm5hbE1vZGlmeSggb2JqZWN0U2VsZWN0aW9uV2lkZ2V0SWQgKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgc2VydmljZUltcGxfLnNldEVuYWJsZWQoIGVkaXRhYmxlICk7Ci0gICAgICAgIHJlc3VsdCA9IHJlZ2lzdHJ5LmdldFNlbGVjdGlvbldpZGdldCggb2JqZWN0U2VsZWN0aW9uV2lkZ2V0SWQgKTsKLSAgICAgIH0KLSAgICAgIAotCQkgIHJldHVybiByZXN1bHQ7Ci0JICB9Ci0JIAotCS8vIGZvciB0aGUgcHVycG9zZXMgb2YgZGlzYWJsaW5nIHRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGNvbnRyb2xzIGZyb20gdGhlIHByZWZlcmVuY2VzIGRpYWxvZwotCXB1YmxpYyB2b2lkIGRpc2FibGVOb25QcmVmZXJlbmNlV2lkZ2V0cygpCi0JewotCQlpZiAoc2VydmljZUltcGxfICE9IG51bGwpCi0JCQlzZXJ2aWNlSW1wbF8uc2V0RW5hYmxlZChmYWxzZSk7Ci0JCWlmIChicm93c2VCdXR0b25fICE9IG51bGwpCi0JCQlicm93c2VCdXR0b25fLnNldEVuYWJsZWQoZmFsc2UpOwotCQlpZiAoaENvbXBTZXJ2aWNlXyAhPSBudWxsKQotCQl7Ci0JCQloQ29tcFNlcnZpY2VfLnNldFZpc2libGUoZmFsc2UpOwkJCQotCQl9Ci0JCWNsaWVudFdpZGdldF8uZGlzYWJsZU5vblByZWZlcmVuY2VXaWRnZXRzKCk7Ci0JfQotCQotCXByaXZhdGUgdm9pZCBzZXRHcmFwaGljcyhpbnQgdmFsdWUpCi0JewotCQlTdHJpbmcgaWNvbkltYWdlID0gIiI7Ci0JCVN0cmluZyB0b3Bsb2d5SW1hZ2UgPSAiIjsKLQkJc3dpdGNoICh2YWx1ZSkgewotCQljYXNlIDA6Ci0JCQlpY29uSW1hZ2U9SUNPTl9TQ0FMRV9CR18wOwotCQkJdG9wbG9neUltYWdlPUdSQVBISUNfU0VSVklDRV8wOwotCQkJYnJlYWs7Ci0JCWNhc2UgMToKLQkJCWljb25JbWFnZT1JQ09OX1NDQUxFX0JHXzE7Ci0JCQl0b3Bsb2d5SW1hZ2U9R1JBUEhJQ19TRVJWSUNFXzE7Ci0JCQlicmVhazsKLQkJY2FzZSAyOgotCQkJaWNvbkltYWdlPUlDT05fU0NBTEVfQkdfMjsKLQkJCXRvcGxvZ3lJbWFnZT1HUkFQSElDX1NFUlZJQ0VfMjsKLQkJCWJyZWFrOwotCQljYXNlIDM6Ci0JCQlpY29uSW1hZ2U9SUNPTl9TQ0FMRV9CR18zOwotCQkJdG9wbG9neUltYWdlPUdSQVBISUNfU0VSVklDRV8zOwotCQkJYnJlYWs7Ci0JCWNhc2UgNDoKLQkJCWljb25JbWFnZT1JQ09OX1NDQUxFX0JHXzQ7Ci0JCQl0b3Bsb2d5SW1hZ2U9R1JBUEhJQ19TRVJWSUNFXzQ7Ci0JCQlicmVhazsKLQkJY2FzZSA1OgkJCQkJCi0JCWNhc2UgNjoKLQkJCWljb25JbWFnZT1JQ09OX1NDQUxFX0JHXzU7Ci0JCQl0b3Bsb2d5SW1hZ2U9R1JBUEhJQ19TRVJWSUNFXzU7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWJyZWFrOwotCQl9Ci0JCXNlcnZpY2VTY2FsZV8uc2V0QmFja2dyb3VuZEltYWdlKGltYWdlUmVnXy5nZXQoaWNvbkltYWdlKSk7Ci0JCXRvcG9sb2d5U3BvdF8uc2V0SW1hZ2UoaW1hZ2VSZWdfLmdldCh0b3Bsb2d5SW1hZ2UpKTsKLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIHJlZnJlc2hTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uKCkKLQl7CQkKLQkJLy9uZXcgdXAgU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kCi0JCVNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCBzZXJ2ZXJSVERlZmF1bHRDbWQgPSBuZXcgU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kKCk7Ci0JCQotCQkgIC8vY2FsbCBzZXR0ZXJzIG9mIG5ldyBkZWZhdWx0aW5nIGNvbW1hbmQ6Ci0JICAgICAgc2VydmVyUlREZWZhdWx0Q21kLnNldEluaXRpYWxTZWxlY3Rpb24oZ2V0T2JqZWN0U2VsZWN0aW9uKCkpOwotCSAgICAgIHNlcnZlclJURGVmYXVsdENtZC5zZXRJbml0aWFsUHJvamVjdChnZXRQcm9qZWN0KCkpOwotCSAgICAgIHNlcnZlclJURGVmYXVsdENtZC5zZXRHZW5lcmF0ZVByb3h5KGNsaWVudFdpZGdldF8uZ2V0R2VuZXJhdGVQcm94eSgpKTsKLQkgICAgICBzZXJ2ZXJSVERlZmF1bHRDbWQuc2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKGdldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcigpKTsKLQkJICBzZXJ2ZXJSVERlZmF1bHRDbWQuc2V0V2ViU2VydmljZXNQYXJzZXIoZ2V0V2ViU2VydmljZXNQYXJzZXIoKSk7ICAgICAKLQkJICBzZXJ2ZXJSVERlZmF1bHRDbWQuc2V0Q2xpZW50SW5pdGlhbFNlbGVjdGlvbihnZXRPYmplY3RTZWxlY3Rpb24oKSk7Ci0JICAgICAgc2VydmVyUlREZWZhdWx0Q21kLnNldENsaWVudEluaXRpYWxQcm9qZWN0KGdldENsaWVudFByb2plY3QoKSk7Ci0JICAgICAgc2VydmVyUlREZWZhdWx0Q21kLnNldENsaWVudEVhclByb2plY3ROYW1lKGNsaWVudFdpZGdldF8uZ2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoKSk7Ci0JCSAgc2VydmVyUlREZWZhdWx0Q21kLnNldENsaWVudFR5cGVSdW50aW1lU2VydmVyKGdldENsaWVudFR5cGVSdW50aW1lU2VydmVyKCkpOwotCQkgIAkJICAKLQkJICBzZXJ2ZXJSVERlZmF1bHRDbWQuZXhlY3V0ZShudWxsLCBudWxsKTsKLQkJICAKLQkJICAvL3BlcmZvcm0gbWFwcGluZ3MgZnJvbSB0aGUgZGVmYXVsdGluZyBjb21tYW5kIHRvIHRoZSBwcm9qZWN0IHNldHRpbmdzLi4uCQotCQkgIHNldFNlcnZpY2VQcm9qZWN0TmFtZShzZXJ2ZXJSVERlZmF1bHRDbWQuZ2V0U2VydmljZVByb2plY3ROYW1lKCkpOwotCQkgIHNldFNlcnZpY2VFYXJQcm9qZWN0TmFtZShzZXJ2ZXJSVERlZmF1bHRDbWQuZ2V0U2VydmljZUVhclByb2plY3ROYW1lKCkpOwotCQkgIHNldFNlcnZpY2VDb21wb25lbnRUeXBlKHNlcnZlclJURGVmYXVsdENtZC5nZXRTZXJ2aWNlQ29tcG9uZW50VHlwZSgpKTsKLQkJICBzZXRDbGllbnRQcm9qZWN0TmFtZShzZXJ2ZXJSVERlZmF1bHRDbWQuZ2V0Q2xpZW50UHJvamVjdE5hbWUoKSk7Ci0JCSAgc2V0Q2xpZW50RWFyUHJvamVjdE5hbWUoc2VydmVyUlREZWZhdWx0Q21kLmdldENsaWVudEVhclByb2plY3ROYW1lKCkpOwotCQkgIHNldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcihzZXJ2ZXJSVERlZmF1bHRDbWQuZ2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKCkpOwotICAgICAgICAgIHNldENsaWVudFR5cGVSdW50aW1lU2VydmVyKHNlcnZlclJURGVmYXVsdENtZC5nZXRDbGllbnRUeXBlUnVudGltZVNlcnZlcigpKTsKLSAgICAgICAgICBzZXRTZXJ2aWNlTmVlZEVBUihzZXJ2ZXJSVERlZmF1bHRDbWQuZ2V0U2VydmljZU5lZWRFQVIoKSk7Ci0gICAgICAgICAgc2V0Q2xpZW50TmVlZEVBUihzZXJ2ZXJSVERlZmF1bHRDbWQuZ2V0Q2xpZW50TmVlZEVBUigpKTsKLSAgICAgICAgICBzZXRDbGllbnRDb21wb25lbnRUeXBlKHNlcnZlclJURGVmYXVsdENtZC5nZXRDbGllbnRDb21wb25lbnRUeXBlKCkpOwotCX0KLQkKLQkvKioKLQkgKiAgVXBkYXRlIGNsaWVudCBzZXJ2ZXIgYW5kIHJ1bnRpbWUgYmFzZWQgb24gc2VydmljZSBzaWRlCi0JICovCi0JcHJpdmF0ZSB2b2lkIHJlZnJlc2hDbGllbnRTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uKCkKLQl7CQotCQlUeXBlUnVudGltZVNlcnZlciBjbGllbnRUeXBlUnVudGltZXNlcnZlciA9IGdldENsaWVudFR5cGVSdW50aW1lU2VydmVyKCk7Ci0JCWNsaWVudFR5cGVSdW50aW1lc2VydmVyLnNldFJ1bnRpbWVJZChnZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoKS5nZXRSdW50aW1lSWQoKSk7Ci0JCWNsaWVudFR5cGVSdW50aW1lc2VydmVyLnNldFNlcnZlcklkKGdldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcigpLmdldFNlcnZlcklkKCkpOwotCQljbGllbnRUeXBlUnVudGltZXNlcnZlci5zZXRTZXJ2ZXJJbnN0YW5jZUlkKGdldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcigpLmdldFNlcnZlckluc3RhbmNlSWQoKSk7Ci0JCXNldENsaWVudFR5cGVSdW50aW1lU2VydmVyKGNsaWVudFR5cGVSdW50aW1lc2VydmVyKTsKLQl9CQotCQkKLQkKLQlwcml2YXRlIHZvaWQgY2FsbE9iamVjdFRyYW5zZm9ybWF0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIG9iamVjdFNlbGVjdGlvbiwKLQkJCUlQcm9qZWN0IHByb2plY3QsIFN0cmluZyBjb21wb25lbnROYW1lLCBib29sZWFuIHJlZnJlc2hSdW50aW1lKQotCXsKLQkJT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZCBvYmpPdXRwdXRDb21tYW5kID0gbmV3IE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQoKTsKLQkJICAgb2JqT3V0cHV0Q29tbWFuZC5zZXRUeXBlUnVudGltZVNlcnZlcihnZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoKSk7Ci0JCSAgIG9iak91dHB1dENvbW1hbmQuc2V0T2JqZWN0U2VsZWN0aW9uKG9iamVjdFNlbGVjdGlvbik7Ci0JICAgICAgIG9iak91dHB1dENvbW1hbmQuc2V0UHJvamVjdChwcm9qZWN0KTsKLQkgICAgICAgb2JqT3V0cHV0Q29tbWFuZC5zZXRDb21wb25lbnROYW1lKGNvbXBvbmVudE5hbWUpOwkJCSAgIAotCSAgICAgICAKLQkgICAgICAgb2JqT3V0cHV0Q29tbWFuZC5leGVjdXRlKG51bGwsIG51bGwpOwotICAgICAgICAKLQkgICAgICAgc2V0V2ViU2VydmljZXNQYXJzZXIob2JqT3V0cHV0Q29tbWFuZC5nZXRXZWJTZXJ2aWNlc1BhcnNlcigpKTsKLQkgICAgICAgc2V0T2JqZWN0U2VsZWN0aW9uKG9iak91dHB1dENvbW1hbmQuZ2V0T2JqZWN0U2VsZWN0aW9uKCkpOwotCSAgICAgICBzZXRQcm9qZWN0KG9iak91dHB1dENvbW1hbmQuZ2V0UHJvamVjdCgpKTsgICAgICAJCSAgICAgICAKLQkgICAgICAgCi0JICAgICAgIGlmIChyZWZyZXNoUnVudGltZSB8fCBmb3JjZVJlZnJlc2hSdW50aW1lKQotCSAgICAJICAgcmVmcmVzaFNlcnZlclJ1bnRpbWVTZWxlY3Rpb24oKTsgIAotCSAgICAgICAKLQkgICAgICAgZm9yY2VSZWZyZXNoUnVudGltZSA9IGZhbHNlOwotCX0KLQkKLQlwcml2YXRlIGNsYXNzIFNjYWxlU2VsZWN0aW9uTGlzdGVuZXIgaW1wbGVtZW50cyBTZWxlY3Rpb25MaXN0ZW5lcgotCXsKLQkJcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewkJCQotCQkJICAgIAotCQkJICAgIFNjYWxlIHNjYWxlID0gKFNjYWxlKWUud2lkZ2V0OwotCQkJCWludCBzZWxlY3Rpb24gPSBzY2FsZS5nZXRTZWxlY3Rpb24oKTsKLQkJCQkKLQkJCQkvL1RPRE86IGNoYW5nZSB0aGUgaGFyZCBjb2RlZCBpbnRlZ2VycyBoZXJlIHRvIHRoZSB0aGUgU2NlbmFyaW9Db250ZXh0LldTX3h4eCB3aGVuIGluIGxlc3MgY3JpdGljYWwgcGhhc2UKLQkJCQlzd2l0Y2ggKHNlbGVjdGlvbikgewotCQkJCWNhc2UgMDoKLQkJCQkJc2VydmljZVNjYWxlXy5zZXRUb29sVGlwVGV4dChDb25zdW1wdGlvblVJTWVzc2FnZXMuVE9PTFRJUF9XU1dTQ0VOX1NDQUxFX1RFU1QpOwotCQkJCQlicmVhazsKLQkJCQljYXNlIDE6Ci0JCQkJCXNlcnZpY2VTY2FsZV8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9SVU4pOwotCQkJCQlicmVhazsKLQkJCQljYXNlIDI6Ci0JCQkJCXNlcnZpY2VTY2FsZV8uc2V0VG9vbFRpcFRleHQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlRPT0xUSVBfV1NXU0NFTl9TQ0FMRV9JTlNUQUxMKTsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSAzOgotCQkJCQlzZXJ2aWNlU2NhbGVfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfREVQTE9ZKTsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSA0OgotCQkJCQlzZXJ2aWNlU2NhbGVfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfQVNTRU1CTEUpOwotCQkJCQlicmVhazsKLQkJCQljYXNlIDU6CQkJCQkKLQkJCQljYXNlIDY6Ci0JCQkJCXNlcnZpY2VTY2FsZV8uc2V0U2VsZWN0aW9uKFNjZW5hcmlvQ29udGV4dC5XU19ERVZFTE9QKTsgLy8ibm8gc2VsZWN0aW9uIiBpcyBub3QgYWxsb3dlZC4uLm11c3QgZGV2ZWxvcCBzZXJ2aWNlIEAgbWluaW11bQotCQkJCQlzZXJ2aWNlU2NhbGVfLnNldFRvb2xUaXBUZXh0KENvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1dTV1NDRU5fU0NBTEVfREVWRUxPUCk7Ci0JCQkJCS8vcmVzZXQgbG9jYWwgc2VsZWN0aW9uIHNvIHRoYXQgc2V0dGVycyBnZXQgY29ycmVjdCB2YWx1ZSBiZWxvdwotCQkJCQlzZWxlY3Rpb24gPSBTY2VuYXJpb0NvbnRleHQuV1NfREVWRUxPUDsKLQkJCQkJYnJlYWs7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJCQotCQkJCXNldERldmVsb3BTZXJ2aWNlKHNlbGVjdGlvbiA8PSBTY2VuYXJpb0NvbnRleHQuV1NfREVWRUxPUCk7Ci0JCQkJc2V0QXNzZW1ibGVTZXJ2aWNlKHNlbGVjdGlvbiA8PSBTY2VuYXJpb0NvbnRleHQuV1NfQVNTRU1CTEUpOwotCQkJCXNldERlcGxveVNlcnZpY2Uoc2VsZWN0aW9uIDw9IFNjZW5hcmlvQ29udGV4dC5XU19ERVBMT1kpOwotCQkJCQotCQkJCXNldFRlc3RTZXJ2aWNlKG5ldyBCb29sZWFuKHNlbGVjdGlvbiA8PSBTY2VuYXJpb0NvbnRleHQuV1NfVEVTVCkpOwotCQkJCXNldEluc3RhbGxTZXJ2aWNlKG5ldyBCb29sZWFuKHNlbGVjdGlvbiA8PSBTY2VuYXJpb0NvbnRleHQuV1NfSU5TVEFMTCkpOwotCQkJCXNldFN0YXJ0U2VydmljZShuZXcgQm9vbGVhbihzZWxlY3Rpb24gPD0gU2NlbmFyaW9Db250ZXh0LldTX1NUQVJUKSk7Ci0JCQkJc2V0QWR2YW5jZWRPcHRpb25zKHNlbGVjdGlvbiA8PSBTY2VuYXJpb0NvbnRleHQuV1NfSU5TVEFMTCk7Ci0JCQkJY2xpZW50V2lkZ2V0Xy5lbmFibGVDbGllbnRTbGlkZXIoc2VsZWN0aW9uIDw9IFNjZW5hcmlvQ29udGV4dC5XU19TVEFSVCk7Ci0JCQkJCi0JCQkJc2V0R3JhcGhpY3Moc2VsZWN0aW9uKTsKLQkJCQkKLQkJCQkvL1ZhbGlkYXRlIHRoZSBwYWdlCi0JCQkJdmFsaWRhdGlvblN0YXRlXyA9IChuZXcgVmFsaWRhdGlvblV0aWxzKCkpLmdldE5ld1ZhbGlkYXRpb25TdGF0ZSh2YWxpZGF0aW9uU3RhdGVfLCBWYWxpZGF0aW9uVXRpbHMuVkFMSURBVEVfU0NBTEVfQ0hBTkdFUyk7Ci0JCQkJc3RhdHVzTGlzdGVuZXJfLmhhbmRsZUV2ZW50KG51bGwpOwotCQkJCQotCQkJfQkJCi0KLQkJcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJCXdpZGdldFNlbGVjdGVkKGUpOwotCQl9Ci0JfQotCQotCXByaXZhdGUgY2xhc3MgU2VydmljZUltcGxCcm93c2VMaXN0ZW5lciBpbXBsZW1lbnRzIFNlbGVjdGlvbkxpc3RlbmVyCi0JewotCQlwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgkJCQotCQl9Ci0JCQotCQlwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7ICAgICAKLQkJCSAgIAotCQkJICBpZiAob2JqZWN0U2VsZWN0aW9uV2lkZ2V0XyA9PSBudWxsKQotCQkJCSAgIG9iamVjdFNlbGVjdGlvbldpZGdldF8gPSBnZXRTZWxlY3Rpb25XaWRnZXQoKTsKLQkJCSAgCi0JCQkgICBJU3RydWN0dXJlZFNlbGVjdGlvbiBvYmplY3RTZWxlY3Rpb24gPSBudWxsOwotCQkJICAgSVByb2plY3QgcHJvamVjdCA9IG51bGw7Ci0JCQkgICBTdHJpbmcgY29tcG9uZW50TmFtZT0iIjsKLQkJCSAgIGludCByZXN1bHQ9RGlhbG9nLkNBTkNFTDsKLQkJCSAgIAotCQkJICAgLy8gVGhpcyBzaG91bGQgYmUgdGhlIFdlYiBTZXJ2aWNlIFdpemFyZCBEaWFsb2cncyBzaGVsbCwgYW5kIHNob3VsZCBiZSBub24tbnVsbC4KLQkJCSAgIFNoZWxsIHNoZWxsID0gRGlzcGxheS5nZXRDdXJyZW50KCkuZ2V0QWN0aXZlU2hlbGwoKTsKLQkJCSAgIAotCQkJICAgaWYgKG9iamVjdFNlbGVjdGlvbldpZGdldF8gaW5zdGFuY2VvZiBJT2JqZWN0U2VsZWN0aW9uTGF1bmNoYWJsZSkKLQkJICAgICAgIHsgICAgICAJCi0JCQkJIElPYmplY3RTZWxlY3Rpb25MYXVuY2hhYmxlIGxhdW5jaGFibGUgPSAoKElPYmplY3RTZWxlY3Rpb25MYXVuY2hhYmxlKW9iamVjdFNlbGVjdGlvbldpZGdldF8pOwotCQkJCSBsYXVuY2hhYmxlLnNldEluaXRpYWxTZWxlY3Rpb24oZ2V0T2JqZWN0U2VsZWN0aW9uKCkpOwotCi0JCQkJIC8vIEJ1ZyAyNjkwOTcgLSBVc2UgdGhlIFdlYiBTZXJ2aWNlJ3MgZGlhbG9nIHNoZWxsLCBub3QgdGhlIHBsYXRmb3JtIHdvcmtiZW5jaCdzIHNoZWxsCi0JCSAgICAgICAgIHJlc3VsdCA9IGxhdW5jaGFibGUubGF1bmNoKHNoZWxsKTsKLQkJICAgICAgICAgaWYgKHJlc3VsdCA9PSBEaWFsb2cuT0spCi0JCSAgICAgICAgIHsKLQkJICAgICAgICAJIHNlcnZpY2VJbXBsXy5yZW1vdmVNb2RpZnlMaXN0ZW5lcihvYmplY3RNb2RpZnlMaXN0ZW5lcl8pOwotCQkJICAgICAgICAgc2VydmljZUltcGxfLnNldFRleHQobGF1bmNoYWJsZS5nZXRPYmplY3RTZWxlY3Rpb25EaXNwbGF5YWJsZVN0cmluZygpKTsKLQkJCSAgICAgICAgIHNlcnZpY2VJbXBsXy5hZGRNb2RpZnlMaXN0ZW5lcihvYmplY3RNb2RpZnlMaXN0ZW5lcl8pOwotCQkJICAgICAgICAgb2JqZWN0U2VsZWN0aW9uID0gbGF1bmNoYWJsZS5nZXRPYmplY3RTZWxlY3Rpb24oKTsKLQkJCSAgICAgICAgIHByb2plY3QgPSBsYXVuY2hhYmxlLmdldFByb2plY3QoKTsKLQkJCSAgICAgICAgIGNvbXBvbmVudE5hbWU9IGxhdW5jaGFibGUuZ2V0Q29tcG9uZW50TmFtZSgpOwotCQkgICAgICAgICB9Ci0JCSAgICAgICB9Ci0JCQkgICBlbHNlCi0JCQkgICB7Ci0JCQkJCS8vIGJ1ZyAyNjkwOTcgLSAgLSBVc2UgdGhlIFdlYiBTZXJ2aWNlJ3MgZGlhbG9nIHNoZWxsLCBub3QgdGhlIHBsYXRmb3JtIHdvcmtiZW5jaCdzIHNoZWxsLgotCQkJCQlicm93c2VEaWFsb2dfID0gbmV3IFNlcnZpY2VJbXBsU2VsZWN0aW9uRGlhbG9nKHNoZWxsLCAKLQkJCQkJCQluZXcgUGFnZUluZm8oQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkRJQUxPR19USVRJTEVfU0VSVklDRV9JTVBMX1NFTEVDVElPTiwgIiIsIAotCQkJCQkJCQkJbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0JCQkJCQkJewkKLQkJCQkJCQkJcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0JCQkJCQkJCXsJICAJCQkJCQkgCi0JCQkJCQkJCQlyZXR1cm4gbmV3IE9iamVjdFNlbGVjdGlvbldpZGdldCgpOwotCQkJCQkJCQl9Ci0JCQkJCQkJfSkpOwkJCi0KLQkJCQkgICBicm93c2VEaWFsb2dfLnNldFR5cGVSdW50aW1lU2VydmVyKGdldFNlcnZpY2VUeXBlUnVudGltZVNlcnZlcigpKTsKLQkJCQkgICBicm93c2VEaWFsb2dfLnNldEluaXRpYWxTZWxlY3Rpb24oZ2V0T2JqZWN0U2VsZWN0aW9uKCkpOwotCQkJICAgICAgIHJlc3VsdCA9IGJyb3dzZURpYWxvZ18ub3BlbigpOwotCQkJICAgICAgIGlmIChyZXN1bHQgPT0gRGlhbG9nLk9LKQotCQkJICAgICAgIHsKLQkJCSAgICAJICAgc2VydmljZUltcGxfLnJlbW92ZU1vZGlmeUxpc3RlbmVyKG9iamVjdE1vZGlmeUxpc3RlbmVyXyk7Ci0JCQkJICAgICAgIHNlcnZpY2VJbXBsXy5zZXRUZXh0KGJyb3dzZURpYWxvZ18uZ2V0RGlzcGxheWFibGVTZWxlY3Rpb25TdHJpbmcoKSk7IAotCQkJCSAgICAgICBzZXJ2aWNlSW1wbF8uYWRkTW9kaWZ5TGlzdGVuZXIob2JqZWN0TW9kaWZ5TGlzdGVuZXJfKTsKLQkJCQkgICAgICAgb2JqZWN0U2VsZWN0aW9uID0gYnJvd3NlRGlhbG9nXy5nZXRPYmplY3RTZWxlY3Rpb24oKTsKLQkJCQkgICAgICAgcHJvamVjdCA9IGJyb3dzZURpYWxvZ18uZ2V0UHJvamVjdCgpOwotCQkJCSAgICAgICBjb21wb25lbnROYW1lPSBicm93c2VEaWFsb2dfLmdldENvbXBvbmVudE5hbWUoKTsJCQkgICAgICAgCi0JCQkgICAgICAgfQotCQkJICAgICAgIGJyb3dzZURpYWxvZ18gPSBudWxsOwotCQkJICAgfQotCQkJICAgCi0JCQkgICAvLyBjYWxsIE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQgdG8gY2Fycnkgb3V0IGFueSB0cmFuc2Zvcm1hdGlvbiBvbiB0aGUgb2JqZWN0U2VsZWN0aW9uCi0JCQkgICBpZiAocmVzdWx0ID09IERpYWxvZy5PSykKLQkJCSAgIHsKLQkJCQkgICBjYWxsT2JqZWN0VHJhbnNmb3JtYXRpb24ob2JqZWN0U2VsZWN0aW9uLCBwcm9qZWN0LCBjb21wb25lbnROYW1lLCBnZXRXZWJTZXJ2aWNlU2NlbmFyaW8oKSAhPSBXZWJTZXJ2aWNlU2NlbmFyaW8uVE9QRE9XTik7CQkJCSAgIAotCQkJICAgICAgIHZhbGlkYXRpb25TdGF0ZV8gPSBWYWxpZGF0aW9uVXRpbHMuVkFMSURBVEVfQUxMOwotCQkJICAgICAgIHN0YXR1c0xpc3RlbmVyXy5oYW5kbGVFdmVudChudWxsKTsgLy8gdmFsaWRhdGUgdGhlIHBhZ2UKLQkJCSAgIH0JCQkgICAKLQkgICAgfQotCX0KLQotCQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL3dpZGdldHMvU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9TZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODhiOTU5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9TZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUyNCAgIDE0MjYzNSBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA2MDUyOSAgIDE0MTQyMiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzAzMjcgICAxNzIzMzkga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMjIwICAgMjE5NTM3IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrCi0gKiAyMDA4MDUyMyAgIDIzMzc2NCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgVG9wIGRvd24gRUpCIHByZWZlcmVuY2Ugbm90IHJlc3BlY3RlZAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuQ2xpZW50V2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS51dGlscy5BZGFwdGVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotCi1wdWJsaWMgY2xhc3MgU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQgZXh0ZW5kcyBDbGllbnRXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZAoteyAgICAKLSAgcHJpdmF0ZSBUeXBlUnVudGltZVNlcnZlciB0eXBlUnVudGltZVNlcnZlcl87Ci0gIHByaXZhdGUgSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5pdGlhbFNlbGVjdGlvbl87Ci0gIHByaXZhdGUgaW50IHNlcnZpY2VHZW5lcmF0aW9uXzsKLSAgcHJpdmF0ZSBib29sZWFuIGRldmVsb3BTZXJ2aWNlXzsKLSAgcHJpdmF0ZSBib29sZWFuIGFzc2VtYmxlU2VydmljZV87Ci0gIHByaXZhdGUgYm9vbGVhbiBkZXBsb3lTZXJ2aWNlXzsKLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7ICAgIAotICAKLSAgICBTdHJpbmcgdHlwZSAgICAgID0gZ2V0U2NlbmFyaW9Db250ZXh0KCkuZ2V0V2ViU2VydmljZVR5cGUoKTsKLSAgICBTdHJpbmcgcnVudGltZSAgID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0RGVmYXVsdFJ1bnRpbWVWYWx1ZUZvciggdHlwZSApOwotCQotICAgIFN0cmluZyBmYWN0b3J5SUQgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXREZWZhdWx0U2VydmVyVmFsdWVGb3IodHlwZSk7ICAgIAotICAgIHR5cGVSdW50aW1lU2VydmVyXyA9IG5ldyBUeXBlUnVudGltZVNlcnZlcigpOwotICAgIAotICAgIHR5cGVSdW50aW1lU2VydmVyXy5zZXRUeXBlSWQoIHR5cGUgKTsKLSAgICB0eXBlUnVudGltZVNlcnZlcl8uc2V0UnVudGltZUlkKCBydW50aW1lICk7Ci0gICAgdHlwZVJ1bnRpbWVTZXJ2ZXJfLnNldFNlcnZlcklkKCBmYWN0b3J5SUQgKTsKLSAgICAKLSAgICAvL0RlZmF1bHQgdGhlIHR5cGVJZCBmcm9tIHRoZSBpbml0aWFsIHNlbGVjdGlvbgotICAgIFN0cmluZ1tdIHR5cGVJZHMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRXZWJTZXJ2aWNlVHlwZUJ5U2VsZWN0aW9uKGluaXRpYWxTZWxlY3Rpb25fKTsKLQotICAgIGlmICh0eXBlSWRzIT1udWxsICYmIHR5cGVJZHMubGVuZ3RoPjApCi0gICAgewotICAgICAgU3RyaW5nIHByZWZlcnJlZCA9IHR5cGVJZHNbMF07CS8vIGRlZmF1bHQgdG8gZmlyc3QgZW50cnkgaW5pdGlhbGx5Ci0gICAgICBmb3IgKFN0cmluZyB0eXBlSWQgOiB0eXBlSWRzKSB7Ci0gICAgCSAgaWYgKHR5cGVJZC5lcXVhbHModHlwZSkpIHsKLSAgICAJCSAgcHJlZmVycmVkID0gdHlwZUlkOwotICAgIAkJICBicmVhazsKLSAgICAJICB9Ci0gICAgICB9Ci0gICAgICB0eXBlUnVudGltZVNlcnZlcl8uc2V0VHlwZUlkKHByZWZlcnJlZCk7Ci0gIH0gZWxzZSB7Ci0JICBpZiAoaW5pdGlhbFNlbGVjdGlvbl8gIT0gbnVsbCAmJiAhaW5pdGlhbFNlbGVjdGlvbl8uaXNFbXB0eSgpKQotCSAgeyAKLQkJICBPYmplY3QgaW5pdGlhbE9iamVjdCA9IGluaXRpYWxTZWxlY3Rpb25fLmdldEZpcnN0RWxlbWVudCgpOyAKLQkJICAvLyBpbml0aWFsT2JqZWN0IHdvdWxkIG5vdCBiZSBudWxsIHNpbmNlICFpbml0aWFsU2VsZWN0aW9uXy5pc0VtcHR5KCkKLQkJICBib29sZWFuIGhhc0FkYXB0ZXIgPSBBZGFwdGVyVXRpbHMuaGFzQWRhcHRlcihpbml0aWFsT2JqZWN0KTsKLQkJICBpZiAoaGFzQWRhcHRlcikgewotCQkJICBTdHJpbmcgZW50cnkgPSBudWxsOwotCQkJICBTdHJpbmcgcHJlZml4ID0gV2ViU2VydmljZVNjZW5hcmlvLlRPUERPV04gKyAiLyI7Ci0JCQkgIGlmICh0eXBlLnN0YXJ0c1dpdGgocHJlZml4KSkKLQkJCQkgIGVudHJ5ID0gdHlwZTsKLQkJCSAgZWxzZSB7Ci0JCQkJICBTdHJpbmdCdWZmZXIgZW50cnlidWZmID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQkJCSAgZW50cnlidWZmLmFwcGVuZChwcmVmaXgpOwotCQkJCSAgZW50cnlidWZmLmFwcGVuZCgib3JnLmVjbGlwc2UuanN0LndzLndzSW1wbC5qYXZhIik7Ci0JCQkJICBlbnRyeSA9IGVudHJ5YnVmZi50b1N0cmluZygpOwotCQkJICB9Ci0JCQkgIHR5cGVSdW50aW1lU2VydmVyXy5zZXRUeXBlSWQoZW50cnkpOwotCQkgIH0KLQkgIH0KLSAgfQotICAgIAotICAgIHNlcnZpY2VHZW5lcmF0aW9uXyA9IGdldFNjZW5hcmlvQ29udGV4dCgpLmdldEdlbmVyYXRlV2ViU2VydmljZSgpOwotICAgIAkKLQlkZXZlbG9wU2VydmljZV8gPSBzZXJ2aWNlR2VuZXJhdGlvbl8gPD0gU2NlbmFyaW9Db250ZXh0LldTX0RFVkVMT1A7Ci0JYXNzZW1ibGVTZXJ2aWNlXyA9IHNlcnZpY2VHZW5lcmF0aW9uXyA8PSBTY2VuYXJpb0NvbnRleHQuV1NfQVNTRU1CTEU7Ci0JZGVwbG95U2VydmljZV8gPSBzZXJ2aWNlR2VuZXJhdGlvbl8gPD0gU2NlbmFyaW9Db250ZXh0LldTX0RFUExPWTsKLSAgICAKLQlkZWZhdWx0Q2xpZW50U2NhbGUoKTsKLQkKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pCi0gIHsKLSAgICBpbml0aWFsU2VsZWN0aW9uXyA9IHNlbGVjdGlvbjsKLSAgfQotICAKLSAgcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldEluaXRpYWxTZWxlY3Rpb24oKQotICB7Ci0gICAgcmV0dXJuIGluaXRpYWxTZWxlY3Rpb25fIDsKLSAgfQotICAKLSAgSVByb2plY3QgcHJvamVjdF87ICAKLSAgCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRJbml0aWFsUHJvamVjdCgpCi0gIHsKLQkgIGlmIChwcm9qZWN0Xz09bnVsbCkKLQkgIHsKLQkgICAgcHJvamVjdF8gPSBnZXRQcm9qZWN0RnJvbU9iamVjdFNlbGVjdGlvbihpbml0aWFsU2VsZWN0aW9uXyk7Ci0JICB9ICAKLQkgIAotCSAgcmV0dXJuIHByb2plY3RfOwotICB9Ci0gIAotICBwcml2YXRlIElQcm9qZWN0IGdldFByb2plY3RGcm9tT2JqZWN0U2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikKLSAgewotICAgIGlmIChzZWxlY3Rpb24gIT0gbnVsbCAmJiBzZWxlY3Rpb24uc2l6ZSgpID09IDEpCi0gICAgewotICAgICAgT2JqZWN0IG9iaiA9IHNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKTsKLSAgICAgIGlmIChvYmogIT0gbnVsbCkgCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7IAotICAgICAgICAgIElSZXNvdXJjZSByZXNvdXJjZSA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VGcm9tU2VsZWN0aW9uKG9iaik7Ci0gICAgICAgICAgaWYgKHJlc291cmNlPT1udWxsKSAKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgIElQcm9qZWN0IHAgPSBSZXNvdXJjZVV0aWxzLmdldFByb2plY3RPZihyZXNvdXJjZS5nZXRGdWxsUGF0aCgpKTsKLSAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAgfSBjYXRjaChDb3JlRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgVHlwZVJ1bnRpbWVTZXJ2ZXIgZ2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKCkKLSAgeyAKLSAgICByZXR1cm4gdHlwZVJ1bnRpbWVTZXJ2ZXJfOwotICB9Ci0KLSAgcHVibGljIEJvb2xlYW4gZ2V0SW5zdGFsbFNlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBCb29sZWFuKCBnZXRTY2VuYXJpb0NvbnRleHQoKS5nZXRJbnN0YWxsV2ViU2VydmljZSgpICk7ICAKLSAgfQotICAKLSAgcHVibGljIEJvb2xlYW4gZ2V0U3RhcnRTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBuZXcgQm9vbGVhbiggZ2V0U2NlbmFyaW9Db250ZXh0KCkuZ2V0U3RhcnRXZWJTZXJ2aWNlKCkgKTsgIAotICB9Ci0gIAotICBwdWJsaWMgQm9vbGVhbiBnZXRUZXN0U2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IEJvb2xlYW4oIGdldFNjZW5hcmlvQ29udGV4dCgpLmdldFRlc3RXZWJTZXJ2aWNlKCkgKTsgIAotICB9Ci0gIAotICBwdWJsaWMgQm9vbGVhbiBnZXRQdWJsaXNoU2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IEJvb2xlYW4oIGdldFNjZW5hcmlvQ29udGV4dCgpLmdldExhdW5jaFdlYlNlcnZpY2VFeHBsb3JlcigpICk7Ci0gIH0KLQotICBwdWJsaWMgQm9vbGVhbiBnZXRHZW5lcmF0ZVByb3h5KCkKLSAgewotICAgIHJldHVybiBuZXcgQm9vbGVhbiggZ2V0U2NlbmFyaW9Db250ZXh0KCkuZ2V0R2VuZXJhdGVQcm94eSgpICk7ICAKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0UnVuVGVzdENsaWVudCgpCi0gIHsKLSAgICByZXR1cm4gIGdldFNjZW5hcmlvQ29udGV4dCgpLmlzTGF1bmNoU2FtcGxlRW5hYmxlZCgpOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBCb29sZWFuIGdldE1vbml0b3JTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBuZXcgQm9vbGVhbihnZXRTY2VuYXJpb0NvbnRleHQoKS5nZXRNb25pdG9yV2ViU2VydmljZSgpKTsKLSAgfQotICAKLSAgcHVibGljIGludCBnZXRTZXJ2aWNlR2VuZXJhdGlvbigpCi0gIHsKLQkgIHJldHVybiBzZXJ2aWNlR2VuZXJhdGlvbl87Ci0gIH0KLSAgCi0gIHB1YmxpYyBpbnQgZ2V0Q2xpZW50R2VuZXJhdGlvbigpCi0gIHsKLQkgIHJldHVybiBnZXRTY2VuYXJpb0NvbnRleHQoKS5nZXRHZW5lcmF0ZUNsaWVudCgpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXREZXZlbG9wU2VydmljZSgpIHsKLQkgIHJldHVybiBkZXZlbG9wU2VydmljZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldEFzc2VtYmxlU2VydmljZSgpIHsKLQkgIHJldHVybiBhc3NlbWJsZVNlcnZpY2VfOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXREZXBsb3lTZXJ2aWNlKCkgewotCSAgcmV0dXJuIGRlcGxveVNlcnZpY2VfOwotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL1NlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9TZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNTJjYTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL1NlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MjQgICAxNDI2MzUgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNzI3ICAgMTQ0MzU0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLkNsaWVudFdpemFyZFdpZGdldE91dHB1dENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmRhdGEuVHlwZVJ1bnRpbWVTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci0KLQotcHVibGljIGNsYXNzIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQgZXh0ZW5kcyBDbGllbnRXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kCi17ICAgIAotICBwcml2YXRlIFR5cGVSdW50aW1lU2VydmVyIHR5cGVSdW50aW1lU2VydmVyXzsKLSAgcHJpdmF0ZSBib29sZWFuICAgICAgICAgICBpbnN0YWxsU2VydmljZV87Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgc3RhcnRTZXJ2aWNlXzsKLSAgcHJpdmF0ZSBib29sZWFuICAgICAgICAgICB0ZXN0U2VydmljZV87Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgdGVzdENsaWVudF87Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgcnVuVGVzdENsaWVudF87Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgcHVibGlzaFNlcnZpY2VfOwotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgIGdlbmVyYXRlUHJveHlfOwotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgIGRldmVsb3BTZXJ2aWNlXzsKLSAgcHJpdmF0ZSBib29sZWFuICAgICAgICAgICBhc3NlbWJsZVNlcnZpY2VfOwotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgIGRlcGxveVNlcnZpY2VfOyAKLSAgCi0JcHJpdmF0ZSBSZXNvdXJjZUNvbnRleHQgICByZXNvdXJjZUNvbnRleHRfOwotCXByaXZhdGUgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uXzsgCi0gICAgCi0gIAotICBwdWJsaWMgVHlwZVJ1bnRpbWVTZXJ2ZXIgZ2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKCkKLSAgeyAKLSAgICByZXR1cm4gdHlwZVJ1bnRpbWVTZXJ2ZXJfOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZ2V0SW5zdGFsbFNlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIGluc3RhbGxTZXJ2aWNlXzsgIAotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZ2V0U3RhcnRTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBzdGFydFNlcnZpY2VfOyAgCi0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRUZXN0U2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gdGVzdFNlcnZpY2VfOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRSdW5UZXN0Q2xpZW50KCkKLSAgewotICAgIHJldHVybiBydW5UZXN0Q2xpZW50XzsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0UHVibGlzaFNlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIHB1Ymxpc2hTZXJ2aWNlXzsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGdldEdlbmVyYXRlUHJveHkoKQotICB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlUHJveHlfOyAgCi0gIH0KLQkKLQlwdWJsaWMgUmVzb3VyY2VDb250ZXh0IGdldFJlc291cmNlQ29udGV4dCgpCi0JewotCQlyZXR1cm4gcmVzb3VyY2VDb250ZXh0XzsKLQl9Ci0gIAotICAvKioKLSAgICogQHBhcmFtIGdlbmVyYXRlUHJveHlfIFRoZSBnZW5lcmF0ZVByb3h5XyB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0ZVByb3h5KGJvb2xlYW4gZ2VuZXJhdGVQcm94eV8pCi0gIHsKLSAgICB0aGlzLmdlbmVyYXRlUHJveHlfID0gZ2VuZXJhdGVQcm94eV87Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSBwdWJsaXNoU2VydmljZV8gVGhlIHB1Ymxpc2hTZXJ2aWNlXyB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQdWJsaXNoU2VydmljZShib29sZWFuIHB1Ymxpc2hTZXJ2aWNlXykKLSAgewotICAgIHRoaXMucHVibGlzaFNlcnZpY2VfID0gcHVibGlzaFNlcnZpY2VfOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gaW5zdGFsbFNlcnZpY2VfIFRoZSBpbnN0YWxsU2VydmljZV8gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SW5zdGFsbFNlcnZpY2UoYm9vbGVhbiBpbnN0YWxsU2VydmljZV8pCi0gIHsKLSAgICB0aGlzLmluc3RhbGxTZXJ2aWNlXyA9IGluc3RhbGxTZXJ2aWNlXzsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIHN0YXJ0U2VydmljZV8gVGhlIHN0YXJ0U2VydmljZV8gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U3RhcnRTZXJ2aWNlKGJvb2xlYW4gc3RhcnRTZXJ2aWNlXykKLSAgewotICAgIHRoaXMuc3RhcnRTZXJ2aWNlXyA9IHN0YXJ0U2VydmljZV87Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSB0ZXN0U2VydmljZV8gVGhlIHRlc3RTZXJ2aWNlXyB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUZXN0U2VydmljZShib29sZWFuIHRlc3RTZXJ2aWNlXykKLSAgewotICAgIHRoaXMudGVzdFNlcnZpY2VfID0gdGVzdFNlcnZpY2VfOwotICB9Ci0gIAotICAvKioKLSAgICogQHBhcmFtIHRlc3RTZXJ2aWNlXyBUaGUgdGVzdFNlcnZpY2VfIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJ1blRlc3RDbGllbnQoYm9vbGVhbiBydW5UZXN0Q2xpZW50XykKLSAgewotICAgIHRoaXMucnVuVGVzdENsaWVudF8gPSBydW5UZXN0Q2xpZW50XzsKLSAgfQotICAKLSAgLyoqCi0gICAqIEBwYXJhbSB0eXBlUnVudGltZVNlcnZlcl8gVGhlIHR5cGVSdW50aW1lU2VydmVyXyB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoVHlwZVJ1bnRpbWVTZXJ2ZXIgdHlwZVJ1bnRpbWVTZXJ2ZXJfKQotICB7Ci0gICAgdGhpcy50eXBlUnVudGltZVNlcnZlcl8gPSB0eXBlUnVudGltZVNlcnZlcl87Ci0gIH0KLQkKLQlwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZUNvbnRleHQoUmVzb3VyY2VDb250ZXh0IHJjKQotCXsKLQkJcmVzb3VyY2VDb250ZXh0XyA9IHJjOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXRPYmplY3RTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKQotCXsKLQkgICBzZWxlY3Rpb25fID0gc2VsZWN0aW9uOwkKLQl9CQotCQotCXB1YmxpYyBJU3RydWN0dXJlZFNlbGVjdGlvbiBnZXRPYmplY3RTZWxlY3Rpb24oKQotCXsKLQkgICByZXR1cm4gc2VsZWN0aW9uXzsKLQl9Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0RGV2ZWxvcFNlcnZpY2UoKSB7Ci0JCXJldHVybiBkZXZlbG9wU2VydmljZV87Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0RGV2ZWxvcFNlcnZpY2UoYm9vbGVhbiBkZXZlbG9wU2VydmljZSkgewotCQl0aGlzLmRldmVsb3BTZXJ2aWNlXyA9IGRldmVsb3BTZXJ2aWNlOwotCX0JCi0JCi0JcHVibGljIGJvb2xlYW4gZ2V0QXNzZW1ibGVTZXJ2aWNlKCkgewotCQlyZXR1cm4gYXNzZW1ibGVTZXJ2aWNlXzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRBc3NlbWJsZVNlcnZpY2UoYm9vbGVhbiBhc3NlbWJsZVNlcnZpY2UpIHsKLQkJdGhpcy5hc3NlbWJsZVNlcnZpY2VfID0gYXNzZW1ibGVTZXJ2aWNlOwotCX0KLQotCXB1YmxpYyBib29sZWFuIGdldERlcGxveVNlcnZpY2UoKSB7Ci0JCXJldHVybiBkZXBsb3lTZXJ2aWNlXzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXREZXBsb3lTZXJ2aWNlKGJvb2xlYW4gZGVwbG95U2VydmljZSkgewotCQl0aGlzLmRlcGxveVNlcnZpY2VfID0gZGVwbG95U2VydmljZTsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBnZXRUZXN0Q2xpZW50KCkgewotCQlyZXR1cm4gdGVzdENsaWVudF87Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0VGVzdENsaWVudChib29sZWFuIHRlc3RDbGllbnRfKSB7Ci0JCXRoaXMudGVzdENsaWVudF8gPSB0ZXN0Q2xpZW50XzsKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9TZXJ2aWNlSW1wbFNlbGVjdGlvbkRpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL1NlcnZpY2VJbXBsU2VsZWN0aW9uRGlhbG9nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMjEwYTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL1NlcnZpY2VJbXBsU2VsZWN0aW9uRGlhbG9nLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDEwICAgMTM1NDQxIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNDE4ICAgMTM2MzM1IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5vYmplY3QuT2JqZWN0U2VsZWN0aW9uV2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LldlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkFic3RyYWN0U2VsZWN0aW9uRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlBhZ2VJbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VTY2VuYXJpbzsKLQotcHVibGljIGNsYXNzIFNlcnZpY2VJbXBsU2VsZWN0aW9uRGlhbG9nIGV4dGVuZHMgQWJzdHJhY3RTZWxlY3Rpb25EaWFsb2cgewotCi0JVHlwZVJ1bnRpbWVTZXJ2ZXIgdHJzXzsKLQlTdHJpbmcgdGl0bGVUZXh0XzsKLQlJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb25fOwotCQotCXB1YmxpYyBTZXJ2aWNlSW1wbFNlbGVjdGlvbkRpYWxvZyhTaGVsbCBwYXJlbnQsIFBhZ2VJbmZvIHBhZ2VJbmZvKSB7Ci0JCXN1cGVyKHBhcmVudCwgcGFnZUluZm8pOwotCQl0aXRsZVRleHRfID0gcGFnZUluZm8uZ2V0UGFnZU5hbWUoKTsKLQl9Ci0JCi0JcHJvdGVjdGVkIHZvaWQgY2FsbFNldHRlcnMoKQotCXsJCQotCQkoKE9iamVjdFNlbGVjdGlvbldpZGdldClnZXRXaWRnZXQoKSkuc2V0VHlwZVJ1bnRpbWVTZXJ2ZXIodHJzXyk7Ci0JCSgoT2JqZWN0U2VsZWN0aW9uV2lkZ2V0KWdldFdpZGdldCgpKS5zZXRJbml0aWFsU2VsZWN0aW9uKHNlbGVjdGlvbl8pOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXRUeXBlUnVudGltZVNlcnZlcihUeXBlUnVudGltZVNlcnZlciB0cnMpCi0JewotCQl0cnNfID0gdHJzOyAKLQkJCi0JCS8vIHNldCBkaWFsb2cgdGl0bGUgdGV4dCBiYXNlZCBvbiB0aGUgd2ViIHNlcnZpY2Ugc2NlbmFyaW8KLQkJaWYgKHRycyAhPSBudWxsKQotCQl7Ci0JCSAgIFN0cmluZyB0eXBlSWQgPSB0cnMuZ2V0VHlwZUlkKCk7Ci0JCSAgIGludCBzY2VuYXJpbyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNjZW5hcmlvRnJvbVR5cGVJZCh0eXBlSWQpOwotCQkgICAKLQkJICAgaWYgKHNjZW5hcmlvID09IFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01VUCkKLQkJICAgewotCQkJICB0aXRsZVRleHRfID0gQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkRJQUxPR19USVRJTEVfU0VSVklDRV9JTVBMX1NFTEVDVElPTjsKLQkJICAgfQotCQkgICBlbHNlIGlmIChzY2VuYXJpbyA9PSBXZWJTZXJ2aWNlU2NlbmFyaW8uVE9QRE9XTikKLQkJICAgewotCQkJICAgdGl0bGVUZXh0XyA9IENvbnN1bXB0aW9uVUlNZXNzYWdlcy5ESUFMT0dfVElUSUxFX1NFUlZJQ0VfREVGX1NFTEVDVElPTjsKLQkJICAgfQotCQl9ICAgICAgICAgICAgIAkgICAKLQl9Ci0JIAotCSAgcHJvdGVjdGVkIHZvaWQgc2V0U2hlbGxTdHlsZShpbnQgbmV3U2hlbGxTdHlsZSkKLQkgIHsKLQkgICAgc3VwZXIuc2V0U2hlbGxTdHlsZSggbmV3U2hlbGxTdHlsZSB8IFNXVC5SRVNJWkUgKTsgIAotCSAgfQotCi0JICBwcm90ZWN0ZWQgdm9pZCBjb25maWd1cmVTaGVsbChTaGVsbCBuZXdTaGVsbCkKLQkgIHsKLQkgICAgbmV3U2hlbGwuc2V0VGV4dCh0aXRsZVRleHRfKTsgICAKLQkgICAgc3VwZXIuY29uZmlndXJlU2hlbGwobmV3U2hlbGwpOwotCSAgfQotCi0JICBwdWJsaWMgU3RyaW5nIGdldERpc3BsYXlhYmxlU2VsZWN0aW9uU3RyaW5nKCkgewotCQkgIAotCQkgcmV0dXJuICgoT2JqZWN0U2VsZWN0aW9uV2lkZ2V0KWdldFdpZGdldCgpKS5nZXRPYmplY3RTZWxlY3Rpb25EaXNwbGF5YWJsZVN0cmluZygpOwotCX0KLQkgIAotCSAgcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldE9iamVjdFNlbGVjdGlvbigpIHsKLQkJICByZXR1cm4gKChPYmplY3RTZWxlY3Rpb25XaWRnZXQpZ2V0V2lkZ2V0KCkpLmdldE9iamVjdFNlbGVjdGlvbigpOwotCX0KLQkgIAotCSAgcHVibGljIElQcm9qZWN0IGdldFByb2plY3QoKXsKLQkJICByZXR1cm4gKChPYmplY3RTZWxlY3Rpb25XaWRnZXQpZ2V0V2lkZ2V0KCkpLmdldFByb2plY3QoKTsKLQkgIH0KLQkgIAotCSAgcHVibGljIFN0cmluZyBnZXRDb21wb25lbnROYW1lKCl7Ci0JCSAgcmV0dXJuICgoT2JqZWN0U2VsZWN0aW9uV2lkZ2V0KWdldFdpZGdldCgpKS5nZXRDb21wb25lbnROYW1lKCk7ICAKLQkgIH0KLQkgIAotCSAgcHVibGljIHZvaWQgc2V0SW5pdGlhbFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pCi0JICB7Ci0JCSAgc2VsZWN0aW9uXyA9IHNlbGVjdGlvbjsgCi0JICB9Ci0JICAKLQkgIHByb3RlY3RlZCBQb2ludCBnZXRJbml0aWFsU2l6ZSgpCi0JICB7CQotCQkgIHJldHVybiAoKE9iamVjdFNlbGVjdGlvbldpZGdldClnZXRXaWRnZXQoKSkuZ2V0V2lkZ2V0U2l6ZSgpOwkgICAgCi0JICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL3dpZGdldHMvYmluZGluZy9FeHBvcnRXU1dpZGdldEJpbmRpbmcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9iaW5kaW5nL0V4cG9ydFdTV2lkZ2V0QmluZGluZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDA2N2E1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9iaW5kaW5nL0V4cG9ydFdTV2lkZ2V0QmluZGluZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy5iaW5kaW5nOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5QdWJsaXNoVG9Qcml2YXRlVURESUNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5QdWJsaXNoV1NXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNlcXVlbmNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2ltcGxlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldFJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5XU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kOwotCi0KLXB1YmxpYyBjbGFzcyBFeHBvcnRXU1dpZGdldEJpbmRpbmcgaW1wbGVtZW50cyBDb21tYW5kV2lkZ2V0QmluZGluZwotewotICBwcml2YXRlIENhbkZpbmlzaFJlZ2lzdHJ5ICAgY2FuRmluaXNoUmVnaXN0cnk7Ci0gIHByaXZhdGUgV2lkZ2V0UmVnaXN0cnkgICAgICB3aWRnZXRSZWdpc3RyeTsKLSAgcHJpdmF0ZSBEYXRhTWFwcGluZ1JlZ2lzdHJ5IGRhdGFNYXBwaW5nUmVnaXN0cnk7Ci0gIHByaXZhdGUgUHVibGlzaFRvUHJpdmF0ZVVERElDb21tYW5kRnJhZ21lbnQgcHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnOwotCi0gIHB1YmxpYyBFeHBvcnRXU1dpZGdldEJpbmRpbmcoKQotICB7Ci0gICAgcHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnID0gbmV3IFB1Ymxpc2hUb1ByaXZhdGVVRERJQ29tbWFuZEZyYWdtZW50KCk7Ci0gIH0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI2NyZWF0ZSgpCi0gICAqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSBjcmVhdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBDb21tYW5kRnJhZ21lbnRGYWN0b3J5KCkKLSAgICAgICAgICAgewotICAgICAgICAgICAgIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgY3JlYXRlKCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBTZXF1ZW5jZUZyYWdtZW50IHJvb3QgPSBuZXcgU2VxdWVuY2VGcmFnbWVudCgpOwotICAgICAgICAgICAgICAgcm9vdC5hZGQobmV3IFNpbXBsZUZyYWdtZW50KCJXU0V4cG9ydCIpKTsKLSAgICAgICAgICAgICAgIHJvb3QuYWRkKHB1Ymxpc2hUb1ByaXZhdGVVRERJQ21kRnJhZyk7Ci0gICAgICAgICAgICAgICByb290LmFkZChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IFdTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQoKSwgIiIpKTsKLSAgICAgICAgICAgICAgIHJldHVybiByb290OyAgCi0gICAgICAgICAgICAgfQotICAgICAgICAgICB9OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyQ2FuRmluaXNoKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJDYW5GaW5pc2goQ2FuRmluaXNoUmVnaXN0cnkgY2FuRmluaXNoUmVnaXN0cnkpCi0gIHsKLSAgICB0aGlzLmNhbkZpbmlzaFJlZ2lzdHJ5ID0gY2FuRmluaXNoUmVnaXN0cnk7Ci0gICAgcHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnLnJlZ2lzdGVyQ2FuRmluaXNoKHRoaXMuY2FuRmluaXNoUmVnaXN0cnkpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICB7Ci0gICAgdGhpcy5kYXRhTWFwcGluZ1JlZ2lzdHJ5ID0gZGF0YVJlZ2lzdHJ5OwotICAgIHB1Ymxpc2hUb1ByaXZhdGVVRERJQ21kRnJhZy5yZWdpc3RlckRhdGFNYXBwaW5ncyh0aGlzLmRhdGFNYXBwaW5nUmVnaXN0cnkpOwotICAgIAotICAgIC8vIFB1Ymxpc2hUb1ByaXZhdGVVRERJQ29tbWFuZEZyYWdtZW50Ci0gICAgZGF0YU1hcHBpbmdSZWdpc3RyeS5hZGRNYXBwaW5nKFB1Ymxpc2hXU1dpZGdldC5jbGFzcywgIlB1Ymxpc2hUb1ByaXZhdGVVRERJIiwgUHVibGlzaFRvUHJpdmF0ZVVERElDb21tYW5kRnJhZ21lbnQuY2xhc3MpOwotICAgIAotICAgIC8vIExhdW5jaFdlYlNlcnZpY2VzRXhwbG9yZXJDb21tYW5kCi0gICAgZGF0YU1hcHBpbmdSZWdpc3RyeS5hZGRNYXBwaW5nKFB1Ymxpc2hXU1dpZGdldC5jbGFzcywgIkZvcmNlTGF1bmNoT3V0c2lkZUlERSIsIFdTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFNYXBwaW5nUmVnaXN0cnkuYWRkTWFwcGluZyhQdWJsaXNoV1NXaWRnZXQuY2xhc3MsICJMYXVuY2hPcHRpb25zIiwgV1NFeHBsb3JlckxhdW5jaGVyQ29tbWFuZC5jbGFzcyk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3MoV2lkZ2V0UmVnaXN0cnkgd2lkZ2V0UmVnaXN0cnkpCi0gIHsKLSAgICB0aGlzLndpZGdldFJlZ2lzdHJ5ID0gd2lkZ2V0UmVnaXN0cnk7Ci0gICAgcHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnLnJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3ModGhpcy53aWRnZXRSZWdpc3RyeSk7Ci0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoIldTRXhwb3J0IiwgCi0gICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfUFVCTElTSCwKLSAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1dTX1BVQkxJU0gsCi0gICAgICBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLSAgICAgIHsKLSAgICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbmV3IFB1Ymxpc2hXU1dpZGdldCh0cnVlKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9iaW5kaW5nL1B1Ymxpc2hXU0RMV2lkZ2V0QmluZGluZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvUHVibGlzaFdTRExXaWRnZXRCaW5kaW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMGYzOGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvUHVibGlzaFdTRExXaWRnZXRCaW5kaW5nLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMuYmluZGluZzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TaW1wbGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeTsKLQotCi1wdWJsaWMgY2xhc3MgUHVibGlzaFdTRExXaWRnZXRCaW5kaW5nIGltcGxlbWVudHMgQ29tbWFuZFdpZGdldEJpbmRpbmcKLXsKLSAgcHVibGljIFB1Ymxpc2hXU0RMV2lkZ2V0QmluZGluZygpCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNjcmVhdGUoKQotICAgKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudEZhY3RvcnkgY3JlYXRlKCkKLSAgewotICAgIHJldHVybiBuZXcgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSgpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGNyZWF0ZSgpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVGcmFnbWVudCgpOyAgCi0gICAgICAgICAgICAgfQotICAgICAgICAgICB9OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyQ2FuRmluaXNoKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJDYW5GaW5pc2goQ2FuRmluaXNoUmVnaXN0cnkgY2FuRmluaXNoUmVnaXN0cnkpCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYyksIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICB7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3MoV2lkZ2V0UmVnaXN0cnkgd2lkZ2V0UmVnaXN0cnkpCi0gIHsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvU2VydmVyV2lkZ2V0QmluZGluZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL2JpbmRpbmcvU2VydmVyV2lkZ2V0QmluZGluZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzkyODQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9iaW5kaW5nL1NlcnZlcldpZGdldEJpbmRpbmcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY1MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMDQgMTI0NDA4ICAgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDIwNCAxMjE2MDUgICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIgICAgICAgICAgIAotICogMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQwNyAgIDEzNTQxNSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDEwICAgMTM1NTYyIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNDE3ICAgMTM2MzkxIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNDI1ICAgMTM4MDUyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDUyNCAgIDE0MjYzNSBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA2MDUyOSAgIDE0MTQyMiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA1MzAgICAxNDQzNTgga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNjA4ICAgMTQ1NTI5IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDYwOSAgICA4NjQyMSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA3MjcgICAxNDQzNTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNzI4ICAgMTQ1NDI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDgxMCAgIDEzNTM5NSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgRW5hYmxlIFdUUCBXZWIgc2VydmljZSBmcmFtZXdvcmsgb3BlbmluZyBKYXZhIGVkaXRvcgotICogMjAwNjA4MjEgICAxNTM4MzMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEFsbG93IHRoZSBXZWIgU2VydmljZSBUZXN0IGV4dGVuc2lvbiBwb2ludCB0byBzcGVjaWZ5IHRoZSBzdXBwb3J0ZWQgY2xpZW50IHJ1bnRpbWUKLSAqIDIwMDYwODI1ICAgMTU1MTE0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDcwNTAyICAgMTgwMzA0IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDcxMDMxICAgMTQwNTE4IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDcxMjE4CSAgMjAwMTkzIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwMzI1ICAgMTg0NzYxIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNDE2ICAgMjE1MDg0IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwNTA2ICAgMjI3ODQ4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBEaXNhYmxlZCAiUnVuIG9uIFNlcnZlciIgY2hlY2tib3ggaXMgaW4gY2hlY2tlZCBzdGF0ZQotICogMjAwODA3MjkgICAyNDEyNzUgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgTm8gVmFsaWRhdGlvbiBlcnJvciBnZW5lcmF0aW5nIFdlYiBTZXJ2aWNlIGNsaWVudCBpZiBkaWFsb2cgaGlkZGVuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMuYmluZGluZzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5Db21wdXRlRW5kcG9pbnRDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5Db21wdXRlUHJveHlFbmRwb2ludENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkNyZWF0ZU1vbml0b3JDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5NYW5hZ2VTZXJ2ZXJTdGFydFVwQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuQ29uc3VtcHRpb25VSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tYW5kLmRhdGEuU2VydmVySW5zdFRvSVNlcnZlclRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5jb21tb24uRmluaXNoRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmNvbW1vbi5TY2VuYXJpb0NsZWFudXBDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5leHRlbnNpb24uQ2xpZW50Um9vdEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5leHRlbnNpb24uUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnNlbGVjdGlvbi5TZWxlY3Rpb25UcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5QdWJsaXNoVG9Qcml2YXRlVURESUNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5QdWJsaXNoV1NXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5DbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLkNsaWVudEV4dGVuc2lvbkZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy5leHRlbnNpb25zLlNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLmV4dGVuc2lvbnMuU2VydmVyRXh0ZW5zaW9uRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMuZXh0ZW5zaW9ucy5TZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLm9iamVjdC5PYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LkNsaWVudFRlc3RGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LkNsaWVudFRlc3RXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5GaW5pc2hEZWZhdWx0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LkZpbmlzaFRlc3RGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LlRlc3REZWZhdWx0aW5nRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5XU0RMVGVzdExhdW5jaENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMudGVzdC5XZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5leHRlbnNpb24uUHJlU2VydmljZURldmVsb3BDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS5leHRlbnNpb24uU2VydmljZVJvb3RGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy5TZXJ2ZXJXaXphcmRXaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMuU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMuU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy5ydW50aW1lLlNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy50ZXN0LkxhdW5jaEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzLnRlc3QuU2VydmljZVRlc3RGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy50ZXN0LlNlcnZpY2VUZXN0V2lkZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzLnRlc3QuV2ViU2VydmljZVRlc3REZWZhdWx0aW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uQ29uZGl0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Cb29sZWFuRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuU2VxdWVuY2VGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TaW1wbGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TZWxlY3Rpb25Db21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuV1NFeHBsb3JlckxhdW5jaGVyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkuY29tbWFuZC5PcGVuRWRpdG9yQ29tbWFuZDsKLQotcHVibGljIGNsYXNzIFNlcnZlcldpZGdldEJpbmRpbmcgaW1wbGVtZW50cyBDb21tYW5kV2lkZ2V0QmluZGluZwotewotICBwcml2YXRlIENhbkZpbmlzaFJlZ2lzdHJ5ICAgY2FuRmluaXNoUmVnaXN0cnlfOwotICBwcml2YXRlIFdpZGdldFJlZ2lzdHJ5ICAgICAgd2lkZ2V0UmVnaXN0cnlfOwotICBwcml2YXRlIERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YU1hcHBpbmdSZWdpc3RyeV87Ci0gIHByaXZhdGUgUHVibGlzaFRvUHJpdmF0ZVVERElDb21tYW5kRnJhZ21lbnQgcHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnOwotCi0gIHB1YmxpYyBTZXJ2ZXJXaWRnZXRCaW5kaW5nKCkKLSAgewotICAgIHB1Ymxpc2hUb1ByaXZhdGVVRERJQ21kRnJhZyA9IG5ldyBQdWJsaXNoVG9Qcml2YXRlVURESUNvbW1hbmRGcmFnbWVudCgpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI2NyZWF0ZSgpCi0gICAqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSBjcmVhdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBDb21tYW5kRnJhZ21lbnRGYWN0b3J5KCkKLSAgICAgICAgICAgewotICAgICAgICAgICAgIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgY3JlYXRlKCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXR1cm4gbmV3IFNlcnZpY2VSb290Q29tbWFuZEZyYWdtZW50KCk7ICAKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIH07Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJDYW5GaW5pc2gob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckNhbkZpbmlzaChDYW5GaW5pc2hSZWdpc3RyeSBjYW5GaW5pc2hSZWdpc3RyeSkKLSAgewotICAgIGNhbkZpbmlzaFJlZ2lzdHJ5XyA9IGNhbkZpbmlzaFJlZ2lzdHJ5OwotICAgIHB1Ymxpc2hUb1ByaXZhdGVVRERJQ21kRnJhZy5yZWdpc3RlckNhbkZpbmlzaChjYW5GaW5pc2hSZWdpc3RyeV8pOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKSwgCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJEYXRhTWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhUmVnaXN0cnkpCi0gIHsKLSAgICBkYXRhTWFwcGluZ1JlZ2lzdHJ5XyA9IGRhdGFSZWdpc3RyeTsKLQotICAgIC8vIEJlZm9yZSBTZXJ2ZXJXaXphcmRXaWRnZXQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiT2JqZWN0U2VsZWN0aW9uIiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlR2VuZXJhdGlvbiIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7IAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiTW9uaXRvclNlcnZpY2UiLCBTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiTW9uaXRvclNlcnZpY2UiLCBDcmVhdGVNb25pdG9yQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJNb25pdG9yU2VydmljZSIsIENvbXB1dGVFbmRwb2ludENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiTW9uaXRvclNlcnZpY2UiLCBDb21wdXRlUHJveHlFbmRwb2ludENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUHVibGlzaFNlcnZpY2UiLCBTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MpOyAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEdlbmVyYXRpb24iLCBTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSW5zdGFsbENsaWVudCIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7ICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkRldmVsb3BTZXJ2aWNlIiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkFzc2VtYmxlU2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXBsb3lTZXJ2aWNlIiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluc3RhbGxTZXJ2aWNlIiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlN0YXJ0U2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXZlbG9wQ2xpZW50IiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkFzc2VtYmxlQ2xpZW50IiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkRlcGxveUNsaWVudCIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTdGFydENsaWVudCIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0Q2xpZW50IiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluaXRpYWxQcm9qZWN0IiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICAKLQotICAgIAotICAgIC8vIEFmdGVyIFNlcnZlcldpemFyZFdpZGdldAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MgKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJJbnN0YWxsU2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIkluc3RhbGxDbGllbnQiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJTdGFydFNlcnZpY2UiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJUZXN0U2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIk1vbml0b3JTZXJ2aWNlIiwgQ3JlYXRlTW9uaXRvckNvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIk1vbml0b3JTZXJ2aWNlIiwgQ29tcHV0ZUVuZHBvaW50Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiTW9uaXRvclNlcnZpY2UiLCBDb21wdXRlUHJveHlFbmRwb2ludENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIlB1Ymxpc2hTZXJ2aWNlIiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiR2VuZXJhdGVQcm94eSIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiUmVzb3VyY2VDb250ZXh0IiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiT2JqZWN0U2VsZWN0aW9uIiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiRGV2ZWxvcFNlcnZpY2UiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJBc3NlbWJsZVNlcnZpY2UiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJEZXBsb3lTZXJ2aWNlIiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiRGV2ZWxvcENsaWVudCIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIkFzc2VtYmxlQ2xpZW50IiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiRGVwbG95Q2xpZW50IiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiU3RhcnRDbGllbnQiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJUZXN0Q2xpZW50IiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICAgIAotICAgIC8vIEJlZm9yZSBPYmplY3RTZWxlY3Rpb25XaWRnZXQgICAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIENsaWVudFRlc3RXaWRnZXQuY2xhc3MgKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlRlc3RTZXJ2aWNlIixGaW5pc2hUZXN0RnJhZ21lbnQuY2xhc3MpOwotICAgIAotCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgQ2xpZW50RnJhZ21lbnQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VQcm9qZWN0TmFtZSIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZUVhclByb2plY3ROYW1lIiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlQ29tcG9uZW50VHlwZSIsIFNlcnZlcldpemFyZFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdE5hbWUiLCBTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhclByb2plY3ROYW1lIiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIiLCBTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzKTsgICAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZU5lZWRFQVIiLCBTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudE5lZWRFQVIiLCBTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudENvbXBvbmVudFR5cGUiLCBTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MpOyAvL2p2aAotICAgICAgICAgICAgICAgIAotICAgIC8vIEFmdGVyIFNlcnZlcldpemFyZFdpZGdldCAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiU2VydmljZVR5cGVSdW50aW1lU2VydmVyIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIlNlcnZpY2VSdW50aW1lSWQiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7ICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIkNsaWVudFJ1bnRpbWVJZCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJTZXJ2aWNlUHJvamVjdE5hbWUiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiU2VydmljZUVhclByb2plY3ROYW1lIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIlNlcnZpY2VDb21wb25lbnRUeXBlIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOyAgICAgICAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiQ2xpZW50UHJvamVjdE5hbWUiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiQ2xpZW50RWFyUHJvamVjdE5hbWUiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0LmNsYXNzLCAiQ2xpZW50Q29tcG9uZW50VHlwZSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJTZXJ2aWNlTmVlZEVBUiIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJDbGllbnROZWVkRUFSIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldC5jbGFzcywgIldlYlNlcnZpY2VzUGFyc2VyIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MgKTsKLQotICAgIC8vIE1hcCBmcmFnbWVudHMgdGhhdCBkZXBlbmQgb24gZGF0YS4gICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIENsaWVudEV4dGVuc2lvbkZyYWdtZW50LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXQuY2xhc3MsICJTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIiLCBTZXJ2ZXJFeHRlbnNpb25GcmFnbWVudC5jbGFzcyk7Ci0gICAgCi0gICAgLy8gQ3JlYXRlTW9uaXRvckNvbW1hbmQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDcmVhdGVNb25pdG9yQ29tbWFuZC5jbGFzcywgIk1vbml0b3JlZFBvcnQiLCBDb21wdXRlRW5kcG9pbnRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDcmVhdGVNb25pdG9yQ29tbWFuZC5jbGFzcywgIk1vbml0b3JlZFBvcnQiLCBDb21wdXRlUHJveHlFbmRwb2ludENvbW1hbmQuY2xhc3MpOwotICAgIAotICAgIC8vIENvbXB1dGVFbmRwb2ludENvbW1hbmQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDb21wdXRlRW5kcG9pbnRDb21tYW5kLmNsYXNzLCAiRW5kcG9pbnQiLCBTZXJ2aWNlVGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ29tcHV0ZUVuZHBvaW50Q29tbWFuZC5jbGFzcywgIkVuZHBvaW50IiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ29tcHV0ZUVuZHBvaW50Q29tbWFuZC5jbGFzcywgIkVuZHBvaW50IiwgQ29tcHV0ZVByb3h5RW5kcG9pbnRDb21tYW5kLmNsYXNzKTsKLSAgICAKLSAgICAvLyAgQ29tcHV0ZVByb3h5RW5kcG9pbnRDb21tYW5kCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ29tcHV0ZVByb3h5RW5kcG9pbnRDb21tYW5kLmNsYXNzLCAiRW5kcG9pbnQiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAKLSAgICAvLyAxNDU0MjYKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiUHJveHlFbmRwb2ludCIsIENvbXB1dGVQcm94eUVuZHBvaW50Q29tbWFuZC5jbGFzcyk7Ci0KLSAgICAvL1NlcnZpY2VUZXN0V2lkZ2V0IG1hcHBpbmdzICAgIAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVR5cGVSdW50aW1lU2VydmVyIiwgU2VydmljZVRlc3RXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIFNlcnZpY2VUZXN0V2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIsIENyZWF0ZU1vbml0b3JDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiV3NkbFVSSSIsIFNlcnZpY2VUZXN0V2lkZ2V0LmNsYXNzKTsKLQlkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiU2VydmljZVNlcnZlckluc3RhbmNlSWQiLCBTZXJ2aWNlVGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyRXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBDb21wdXRlRW5kcG9pbnRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZXNQYXJzZXIiLCBDb21wdXRlRW5kcG9pbnRDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlVGVzdERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVRlc3RGYWNpbGl0aWVzIiwgU2VydmljZVRlc3RXaWRnZXQuY2xhc3MpOyAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlVGVzdERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRW52aXJvbm1lbnQiLCBTZXJ2aWNlVGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmljZVRlc3RXaWRnZXQuY2xhc3MsICJMYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2aWNlVGVzdFdpZGdldC5jbGFzcywgIkxhdW5jaGVkU2VydmljZVRlc3ROYW1lIiwgRmluaXNoVGVzdEZyYWdtZW50LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2aWNlVGVzdFdpZGdldC5jbGFzcywgIkxhdW5jaGVkU2VydmljZVRlc3ROYW1lIiwgVGVzdERlZmF1bHRpbmdGcmFnbWVudC5jbGFzcyk7Ci0gICAgICAgIAotICAgIC8vIEJlZm9yZSBDbGllbnQgVGVzdCB3aWRnZXQuCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VsZWN0aW9uQ29tbWFuZC5jbGFzcywgIkluaXRpYWxTZWxlY3Rpb24iLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgCi0gICAgLy8gQmVmb3JlIENsaWVudFRlc3RXaWRnZXQKLSAgICAgICAgCi0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlNhbXBsZVByb2plY3QiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlNhbXBsZVByb2plY3RFQVIiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoVGVzdERlZmF1bHRpbmdGcmFnbWVudC5jbGFzcywgIlRlc3RGYWNpbGl0eSIsQ2xpZW50VGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIkZvbGRlciIsQ2xpZW50VGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIkpzcEZvbGRlciIsQ2xpZW50VGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIlJ1bkNsaWVudFRlc3QiLENsaWVudFRlc3RXaWRnZXQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQuY2xhc3MsICJNZXRob2RzIixDbGllbnRUZXN0V2lkZ2V0LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiUnVuVGVzdENsaWVudCIsQ2xpZW50VGVzdFdpZGdldC5jbGFzcyk7Ci0gICAgCi0gICAgLy8gQWZ0ZXIgQ2xpZW50VGVzdFdpZGdldCAgICAKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiU2FtcGxlUHJvamVjdEVBUiIsRmluaXNoRGVmYXVsdENvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFRlc3RXaWRnZXQuY2xhc3MsICJTYW1wbGVQcm9qZWN0IixGaW5pc2hEZWZhdWx0Q29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIlRlc3RGYWNpbGl0eSIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIkZvbGRlciIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIkpzcEZvbGRlciIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudFRlc3RXaWRnZXQuY2xhc3MsICJNZXRob2RzIixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiVGVzdFNlcnZpY2UiLEZpbmlzaFRlc3RGcmFnbWVudC5jbGFzcyk7Ci0gICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50VGVzdFdpZGdldC5jbGFzcywgIlRlc3RJRCIsRmluaXNoVGVzdEZyYWdtZW50LmNsYXNzKTsKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRUZXN0V2lkZ2V0LmNsYXNzLCAiSXNUZXN0V2lkZ2V0IixGaW5pc2hUZXN0RnJhZ21lbnQuY2xhc3MpOwotICAgIC8vIFB1Ymxpc2hXU1dpZGdldAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUHVibGlzaFNlcnZpY2UiLCBQdWJsaXNoV1NXaWRnZXQuY2xhc3MsICJQdWJsaXNoVG9QdWJsaWNVRERJIiwgbnVsbCk7Ci0gICAgCi0gICAgLy8gUHVibGlzaFRvUHJpdmF0ZVVERElDb21tYW5kRnJhZ21lbnQKLSAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhQdWJsaXNoV1NXaWRnZXQuY2xhc3MsICJQdWJsaXNoVG9Qcml2YXRlVURESSIsIFB1Ymxpc2hUb1ByaXZhdGVVRERJQ29tbWFuZEZyYWdtZW50LmNsYXNzKTsKLSAgICAKLSAgICAvLyBMYXVuY2hXZWJTZXJ2aWNlc0V4cGxvcmVyQ29tbWFuZAotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFB1Ymxpc2hXU1dpZGdldC5jbGFzcywgIlB1Ymxpc2hUb1ByaXZhdGVVRERJIiwgTGF1bmNoRnJhZ21lbnQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFB1Ymxpc2hXU1dpZGdldC5jbGFzcywgIlB1Ymxpc2hUb1B1YmxpY1VEREkiLCBMYXVuY2hGcmFnbWVudC5jbGFzcyk7Ci0gICAgLy8gVE9ETyBOZWVkIGRlZmF1bHRzIGZvciB0aGVzZSBwcm9wZXJ0aWVzLgotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFB1Ymxpc2hXU1dpZGdldC5jbGFzcywgIkZvcmNlTGF1bmNoT3V0c2lkZUlERSIsIFdTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQuY2xhc3MpOwotICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFB1Ymxpc2hXU1dpZGdldC5jbGFzcywgIkxhdW5jaE9wdGlvbnMiLCBXU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kLmNsYXNzKTsKLSAgCi0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3MoV2lkZ2V0UmVnaXN0cnkgd2lkZ2V0UmVnaXN0cnkpCi0gIHsKLSAgIAotICAgIHdpZGdldFJlZ2lzdHJ5XyA9IHdpZGdldFJlZ2lzdHJ5OwotICAgIHB1Ymxpc2hUb1ByaXZhdGVVRERJQ21kRnJhZy5yZWdpc3RlcldpZGdldE1hcHBpbmdzKHdpZGdldFJlZ2lzdHJ5Xyk7Ci0KLSAgICB3aWRnZXRSZWdpc3RyeS5hZGQoICJTZXJ2ZXJXaXphcmRXaWRnZXQiLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX1RJVExFX1dTX1BST0pFQ1QsCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1dTX1NFUlZJQ0UsCi0JCQkJICAgICAgICBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLQkJCQkgICAgICAgIHsKLQkJCQkgICAgICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0JCQkJICAgICAgICAgIHsKLQkJCQkgICAgICAgICAgICByZXR1cm4gbmV3IFNlcnZlcldpemFyZFdpZGdldCggdHJ1ZSwgZmFsc2UgKTsKLQkJCQkgICAgICAgICAgfQotCQkJCSAgICAgICAgfSApOwotCi0gICAgd2lkZ2V0UmVnaXN0cnkuYWRkKCAiVGVzdFNlcnZpY2UiLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX1RJVExFX1dTVEVTVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX0RFU0NfV1NURVNULAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXaWRnZXRDb250cmlidXRvciBjcmVhdGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTZXJ2aWNlVGVzdFdpZGdldCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgCi0gICAgd2lkZ2V0UmVnaXN0cnkuYWRkKCAiQ2xpZW50VGVzdFdpZGdldCIsIAotICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfVElUTEVfV1NfU0FNUExFLAotICAgICAgICAgICAgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLlBBR0VfREVTQ19XU19TQU1QTEUsCi0gICAgICAgICAgICBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENsaWVudFRlc3RXaWRnZXQoKTsgCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgIAotICAgIHdpZGdldFJlZ2lzdHJ5LmFkZCggIlB1Ymxpc2giLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5QQUdFX1RJVExFX1dTX1BVQkxJU0gsCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdW1wdGlvblVJTWVzc2FnZXMuUEFHRV9ERVNDX1dTX1BVQkxJU0gsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFB1Ymxpc2hXU1dpZGdldCh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotICB9Ci0gICAgICAKLSAgcHJpdmF0ZSBjbGFzcyBDbGllbnRGcmFnbWVudCBleHRlbmRzIEJvb2xlYW5GcmFnbWVudAotICB7Ci0gICAgYm9vbGVhbiBnZW5Qcm94eV8gPSBmYWxzZTsKLSAgICAKLSAgICBwdWJsaWMgQ2xpZW50RnJhZ21lbnQoKQotICAgIHsgICAgICAKLSAgICAgIHNldENvbmRpdGlvbiggbmV3IENvbmRpdGlvbigpIAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoKQotICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5Qcm94eV87Ci0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgIAotICAgICAgU2VxdWVuY2VGcmFnbWVudCBjbGllbnRSb290ID0gbmV3IFNlcXVlbmNlRnJhZ21lbnQoKTsKLSAgICAgIAotICAgICAgY2xpZW50Um9vdC5hZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kKCBmYWxzZSApLCAiIikpOwotICAgICAgLy9jbGllbnRSb290LmFkZChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IENsaWVudFNlcnZlckRlcGxveWFibGVDb25maWdDb21tYW5kKCksICIiKSk7IC8vTm90ZTogYWRkZWQgaGVyZSBmb3IgY2xpZW50ICAgICAKLSAgICAgIC8vY2xpZW50Um9vdC5hZGQoIG5ldyBDbGllbnRFeHRlbnNpb25GcmFnbWVudCgpICk7Ci0gICAgICBjbGllbnRSb290LmFkZCggbmV3IENsaWVudFJvb3RGcmFnbWVudCgpICk7Ci0gICAgICBjbGllbnRSb290LmFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZCgpLCAiIiApKTsKLSAgICAgIAotICAgICAgc2V0VHJ1ZUZyYWdtZW50KCBjbGllbnRSb290ICk7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIHNldEdlbmVyYXRlUHJveHkoIGJvb2xlYW4gZ2VuUHJveHkgKQotICAgIHsKLSAgICAgIGdlblByb3h5XyA9IGdlblByb3h5OwotICAgIH0KLSAgICAKLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQjcmVnaXN0ZXJEYXRhTWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICAgIHsKLSAgICAgIC8vIE1hcCB0aGUgb3V0cHV0IG9mIHRoZSBzZXJ2aWNlIHNjZW5hcmlvIHRvIHRoZSBjbGllbnQgc2NlbmFyaW8uCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2VzUGFyc2VyIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlckV4dGVuc2lvbk91dHB1dENvbW1hbmQuY2xhc3MsICJXc2RsVVJJIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MgKTsKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiU2VydmljZVNlcnZlckZhY3RvcnlJZCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzICk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlNlcnZpY2VTZXJ2ZXJJbnN0YW5jZUlkIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MgKTsKLQkgIAotICAgICAgCi0gICAgICAvLyBTZXR1cCB0aGUgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJSZXNvdXJjZUNvbnRleHQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXZlbG9wQ2xpZW50IiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQXNzZW1ibGVDbGllbnQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXBsb3lDbGllbnQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSW5zdGFsbENsaWVudCIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTdGFydENsaWVudCIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiU3RhcnRTZXJ2aWNlIiwgbnVsbCk7ICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRSdW50aW1lSWQiLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyApOyAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50SjJFRVZlcnNpb24iLCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0IiwgUHJlQ2xpZW50RGV2ZWxvcENvbW1hbmQuY2xhc3MsICJNb2R1bGUiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0VHlwZSIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiTW9kdWxlVHlwZSIsIG51bGwpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdEVBUiIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzLCAiRWFyIiwgbnVsbCApOyAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiV3NkbFVSSSIsIFByZUNsaWVudERldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVDbGllbnREZXZlbG9wQ29tbWFuZC5jbGFzcywgIldlYlNlcnZpY2UiLCBDbGllbnRFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZUNsaWVudCIsIG51bGwgKTsgICAgICAKLSAgICB9Ci0gIH0KLSAgCi0gIHByaXZhdGUgY2xhc3MgU2VydmljZVJvb3RDb21tYW5kRnJhZ21lbnQgZXh0ZW5kcyBTZXF1ZW5jZUZyYWdtZW50Ci0gIHsKLSAgICBwdWJsaWMgU2VydmljZVJvb3RDb21tYW5kRnJhZ21lbnQoKQotICAgIHsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2NlbmFyaW9DbGVhbnVwQ29tbWFuZCgpLCAiIiApKTsKLSAgICAgIAotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpLCAiIikpOwotICAgICAgYWRkIChuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kKCksICIiKSk7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpLCAiIikpOyAgCi0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggIlNlcnZlcldpemFyZFdpZGdldCIgKSApOwotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kKCksICIiICkpOwotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZCgpLCAiIikpOwotICAgICAgYWRkKCBuZXcgU2VydmljZVJvb3RGcmFnbWVudCgpICk7Ci0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IFNlcnZlckV4dGVuc2lvbk91dHB1dENvbW1hbmQoKSwgIiIgKSk7Ci0gICAgICBhZGQobmV3IFNpbXBsZUZyYWdtZW50KG5ldyBDcmVhdGVNb25pdG9yQ29tbWFuZCgpLCAiIikpOwotICAgICAgYWRkKG5ldyBTaW1wbGVGcmFnbWVudChuZXcgQ29tcHV0ZUVuZHBvaW50Q29tbWFuZCgpLCAiIikpOwotICAgICAgYWRkKCBuZXcgU2VydmljZVRlc3RGcmFnbWVudCggIlRlc3RTZXJ2aWNlIikgKTsKLSAgICAgIGFkZCggbmV3IENsaWVudEZyYWdtZW50KCkgKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KG5ldyBUZXN0RGVmYXVsdGluZ0ZyYWdtZW50KCksIiIpKTsgCi0gICAgICBhZGQoIG5ldyBTaW1wbGVGcmFnbWVudChuZXcgQ29tcHV0ZVByb3h5RW5kcG9pbnRDb21tYW5kKCksICIiKSk7Ci0gICAgICBhZGQoIG5ldyBDbGllbnRUZXN0RnJhZ21lbnQoICJDbGllbnRUZXN0V2lkZ2V0IikgKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCAiUHVibGlzaCIpICk7Ci0gICAgICBhZGQocHVibGlzaFRvUHJpdmF0ZVVERElDbWRGcmFnKTsKLSAgICAgIGFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgT3BlbkVkaXRvckNvbW1hbmQoKSwgIiIpICk7Ci0gICAgICBhZGQobmV3IExhdW5jaEZyYWdtZW50KCkpOwotICAgICAgYWRkKG5ldyBGaW5pc2hGcmFnbWVudCgpKTsKLSAgICAgIAotICAgICAgYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBTY2VuYXJpb0NsZWFudXBDb21tYW5kKCksICIiICkpOwotICAgIH0KLSAgICAKLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQjcmVnaXN0ZXJEYXRhTWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICAgIHsKLSAgICAgIHB1Ymxpc2hUb1ByaXZhdGVVRERJQ21kRnJhZy5yZWdpc3RlckRhdGFNYXBwaW5ncyhkYXRhTWFwcGluZ1JlZ2lzdHJ5Xyk7ICAgCi0gICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlbGVjdGlvbkNvbW1hbmQuY2xhc3MsICJJbml0aWFsU2VsZWN0aW9uIiwgU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MgKTsgICAgICAgICAgICAKLQotICAgICAgLy8gTWFwIFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kIHRvIE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiSW5pdGlhbFNlbGVjdGlvbiIsIE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJPYmplY3RTZWxlY3Rpb24iLCBudWxsKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVR5cGVSdW50aW1lU2VydmVyIiwgT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlR5cGVSdW50aW1lU2VydmVyIiwgbnVsbCk7Ci0gICAgICAKLSAgICAgIC8vIE1hcCBTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZCB0byBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkRldmVsb3BTZXJ2aWNlIiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkFzc2VtYmxlU2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXBsb3lTZXJ2aWNlIiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkRldmVsb3BDbGllbnQiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQXNzZW1ibGVDbGllbnQiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRGVwbG95Q2xpZW50IiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluc3RhbGxDbGllbnQiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU3RhcnRDbGllbnQiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVGVzdENsaWVudCIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJbnN0YWxsU2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTdGFydFNlcnZpY2UiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUnVuVGVzdENsaWVudCIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJQdWJsaXNoU2VydmljZSIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlJlc291cmNlQ29udGV4dCIsIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MpOyAgICAgIAotICAgICAgCi0gICAgICAvLyBNYXAgU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC4gICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJbml0aWFsUHJvamVjdCIsIFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7IAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIsIFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7ICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluc3RhbGxTZXJ2aWNlIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTdGFydFNlcnZpY2UiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlRlc3RTZXJ2aWNlIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOyAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlRlc3RTZXJ2aWNlIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOyAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJQdWJsaXNoU2VydmljZSIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUHVibGlzaFNlcnZpY2UiLCBQdWJsaXNoV1NXaWRnZXQuY2xhc3MsICJQdWJsaXNoVG9QdWJsaWNVRERJIiwgbnVsbCk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJbnN0YWxsQ2xpZW50IiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7IAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7IC8vIEtTQwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJSZXNvdXJjZUNvbnRleHQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJEZXZlbG9wU2VydmljZSIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJBc3NlbWJsZVNlcnZpY2UiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiRGVwbG95U2VydmljZSIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIkluc3RhbGxDbGllbnQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiU3RhcnRDbGllbnQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiRGV2ZWxvcENsaWVudCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJBc3NlbWJsZUNsaWVudCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJEZXBsb3lDbGllbnQiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0KLSAgICAgIAotICAgICAgLy9NYXAgT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZCB0byBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJPYmplY3RTZWxlY3Rpb24iLCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJbml0aWFsU2VsZWN0aW9uIiwgbnVsbCk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiT2JqZWN0U2VsZWN0aW9uIiwgU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50SW5pdGlhbFNlbGVjdGlvbiIsIG51bGwpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJbml0aWFsUHJvamVjdCIsIG51bGwpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRJbml0aWFsUHJvamVjdCIsIG51bGwpOyAgICAgIAotCi0gICAgICAvL01hcCBPYmplY3RTZWxlY3Rpb25PdXRwdXRDb21tYW5kIHRvIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKE9iamVjdFNlbGVjdGlvbk91dHB1dENvbW1hbmQuY2xhc3MsICJPYmplY3RTZWxlY3Rpb24iLCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzKTsgICAgICAKLSAgICAgIAotICAgICAgLy90byB0aGUgdGVzdCB3aXphcmQKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgU2VydmljZVRlc3RGcmFnbWVudC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiV3NkbFVSSSIsIFdTRExUZXN0TGF1bmNoQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZlclByb2plY3QiLCBXU0RMVGVzdExhdW5jaENvbW1hbmQuY2xhc3MpOyAgICAgCi0gICAgICAKLSAgICAgIC8vIE1hcCBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQgICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VSdW50aW1lSWQiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7ICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFJ1bnRpbWVJZCIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsgICAgICAKLSAgICAgIC8vZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVByb2plY3QyRUFSUHJvamVjdCIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VQcm9qZWN0TmFtZSIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VFYXJQcm9qZWN0TmFtZSIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VDb21wb25lbnRUeXBlIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOyAgICAgIAotICAgICAgLy9kYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlQ29tcG9uZW50TmFtZSIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIC8vZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZUVhckNvbXBvbmVudE5hbWUiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAvL2RhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlJ1bnRpbWUyQ2xpZW50VHlwZXMiLCBDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0TmFtZSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhclByb2plY3ROYW1lIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgLy9kYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRFYXJDb21wb25lbnROYW1lIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgLy9kYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRDb21wb25lbnROYW1lIiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOyAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50Q29tcG9uZW50VHlwZSIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIC8vZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZUoyRUVWZXJzaW9uIiwgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgLy9kYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRKMkVFVmVyc2lvbiIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBDbGllbnRGcmFnbWVudC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZU5lZWRFQVIiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJJbml0aWFsUHJvamVjdCIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcyApOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50TmVlZEVBUiIsIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJJbnN0YWxsU2VydmljZSIsIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzKTsgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJTdGFydFNlcnZpY2UiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiTW9uaXRvclNlcnZpY2UiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7ICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJXaXphcmRXaWRnZXRPdXRwdXRDb21tYW5kLmNsYXNzLCAiUHVibGlzaFNlcnZpY2UiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcyk7ICAKLSAgICAgIAotICAgICAgCi0gICAgICAvLyBNYXAgU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVR5cGVSdW50aW1lU2VydmVyIiwgU2VydmVyRXh0ZW5zaW9uRnJhZ21lbnQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIFNlcnZpY2VUZXN0RnJhZ21lbnQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJQdWJsaXNoIiwgUHVibGlzaFRvUHJpdmF0ZVVERElDb21tYW5kRnJhZ21lbnQuY2xhc3MpOyAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIiLFdTRExUZXN0TGF1bmNoQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VUeXBlUnVudGltZVNlcnZlciIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoT2JqZWN0U2VsZWN0aW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlByb2plY3QiLCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluaXRpYWxQcm9qZWN0IiwgbnVsbCk7Ci0JICAKLQkgICAgLy8gU2V0dXAgdGhlIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC4KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkRldmVsb3BTZXJ2aWNlIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkFzc2VtYmxlU2VydmljZSIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJEZXBsb3lTZXJ2aWNlIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkluc3RhbGxTZXJ2aWNlIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlN0YXJ0U2VydmljZSIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcyk7ICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcyk7ICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiUHVibGlzaFNlcnZpY2UiLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MpOyAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJSZXNvdXJjZUNvbnRleHQiLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJPYmplY3RTZWxlY3Rpb24iLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJTZWxlY3Rpb24iLCBuZXcgU2VsZWN0aW9uVHJhbnNmb3JtZXIoKSApOwotCQkKLQkgIC8vZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZpY2VDb21wb25lbnRUeXBlIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiTW9kdWxlVHlwZSIsIG51bGwpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmljZVR5cGVSdW50aW1lU2VydmVyIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlUnVudGltZUlkIiwgUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlSjJFRVZlcnNpb24iLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoIFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZSIsIG51bGwgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZlclByb2plY3RFQVIiLCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJFYXIiLCBudWxsICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2aWNlQ29tcG9uZW50VHlwZSIsIFByZVNlcnZpY2VEZXZlbG9wQ29tbWFuZC5jbGFzcywgIk1vZHVsZVR5cGUiLCBudWxsICk7ICAgICAgCi0JCQkKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKCBQcmVTZXJ2aWNlRGV2ZWxvcENvbW1hbmQuY2xhc3MsICJXZWJTZXJ2aWNlIiwgU2VydmVyRXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcyApOwotIAotICAgICAgLy8gTWFwIENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFR5cGVSdW50aW1lU2VydmVyIiwgQ2xpZW50RXh0ZW5zaW9uRnJhZ21lbnQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRUeXBlUnVudGltZVNlcnZlciIsIEZpbmlzaERlZmF1bHRDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBDbGllbnRUZXN0RnJhZ21lbnQuY2xhc3MgKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNhblJ1blRlc3RDbGllbnQiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNhblJ1blRlc3RDbGllbnQiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlJ1blRlc3RDbGllbnQiLCBDbGllbnRUZXN0V2lkZ2V0LmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3QiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnROZWVkRUFSIiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhclByb2plY3ROYW1lIiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudEVhckNvbXBvbmVudE5hbWUiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLQkgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50UHJvamVjdCIsIFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQuY2xhc3MpOwotCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRQcm9qZWN0RUFSIiwgV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkxhdW5jaGVkU2VydmljZVRlc3ROYW1lIiwgV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFNlcnZlciIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJSdW5UZXN0Q2xpZW50IixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsgCi0gICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJSdW5UZXN0Q2xpZW50IiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICAKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJUZXN0Q2xpZW50IiwgQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIG51bGwpOwotICAgCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlRlc3RDbGllbnQiLCBUZXN0RGVmYXVsdGluZ0ZyYWdtZW50LmNsYXNzLCAiR2VuZXJhdGVQcm94eSIsIG51bGwpOwotICAgCSAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIFRlc3REZWZhdWx0aW5nRnJhZ21lbnQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgbnVsbCk7Ci0gICAJICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFJ1bnRpbWVJZCIsIFRlc3REZWZhdWx0aW5nRnJhZ21lbnQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIENsaWVudFRlc3RGcmFnbWVudC5jbGFzcywgIkdlbmVyYXRlUHJveHkiLCBudWxsKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiVGVzdFNlcnZpY2UiLCBGaW5pc2hUZXN0RnJhZ21lbnQuY2xhc3MsICJHZW5lcmF0ZVByb3h5IiwgbnVsbCk7Ci0KLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyRXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIldzZGxVUkkiLCBDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiU2VydmljZVNlcnZlckluc3RhbmNlSWQiLCBDcmVhdGVNb25pdG9yQ29tbWFuZC5jbGFzcyk7Ci0KLSAgICAgIC8vIE1hcCBTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kIGZvciBTZXJ2ZXJTdGFydCgpCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIlNlcnZlclByb2plY3RFQVIiLCBTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiRWFyUHJvamVjdE5hbWUiLCBudWxsKTsKLQotICAgICAgLy8gTUFQIHBvc3Qgc2VydmVyIGNvbmZpZyBjYWxsCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3RFQVIiLCBDbGllbnRFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiRWFyUHJvamVjdE5hbWUiLCBudWxsKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKENsaWVudEV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiQ2xpZW50U2VydmVySW5zdGFuY2UiLCBDbGllbnRFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiRXhpc3RpbmdTZXJ2ZXJJZCIsIG51bGwpOwotICAgICAgCi0gICAgICAvLyBNYXAgQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIkNhbkdlbmVyYXRlUHJveHkiLCBDbGllbnRUZXN0RnJhZ21lbnQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlByb3h5QmVhbiIsIFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlByb3h5QmVhbiIsIENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uT3V0cHV0Q29tbWFuZC5jbGFzcywgIlNldEVuZHBvaW50TWV0aG9kIiwgQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0JICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiU2VydmVySW5zdGFuY2VJZCIsIEZpbmlzaERlZmF1bHRDb21tYW5kLmNsYXNzKTsKLQkgIAotICAgICAgLy8gTWFwIE1hbmFnZVNlcnZlclN0YXJ0VXBDb21tYW5kCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhTZXJ2ZXJFeHRlbnNpb25PdXRwdXRDb21tYW5kLmNsYXNzLCAiSXNXZWJQcm9qZWN0U3RhcnR1cFJlcXVlc3RlZCIsIE1hbmFnZVNlcnZlclN0YXJ0VXBDb21tYW5kLmNsYXNzKTsKLSAgICAgIAotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyV2l6YXJkV2lkZ2V0T3V0cHV0Q29tbWFuZC5jbGFzcywgIlN0YXJ0U2VydmljZSIsIE1hbmFnZVNlcnZlclN0YXJ0VXBDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlcldpemFyZFdpZGdldE91dHB1dENvbW1hbmQuY2xhc3MsICJUZXN0U2VydmljZSIsIE1hbmFnZVNlcnZlclN0YXJ0VXBDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFNlcnZlckV4dGVuc2lvbkRlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiU2VydmVyUHJvamVjdCIsIE1hbmFnZVNlcnZlclN0YXJ0VXBDb21tYW5kLmNsYXNzLCAiU2VydmljZVByb2plY3QiLCBuZXcgU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyKCkpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmVyRXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJTZXJ2ZXJTZXJ2ZXIiLCBNYW5hZ2VTZXJ2ZXJTdGFydFVwQ29tbWFuZC5jbGFzcywiU2VydmljZVNlcnZlclR5cGVJZCIsIG51bGwpOwotICAgICAgCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhDbGllbnRFeHRlbnNpb25EZWZhdWx0aW5nQ29tbWFuZC5jbGFzcywgIkNsaWVudFByb2plY3QiLCBNYW5hZ2VTZXJ2ZXJTdGFydFVwQ29tbWFuZC5jbGFzcywgIlNhbXBsZVByb2plY3QiLCBuZXcgU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyKCkpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoQ2xpZW50RXh0ZW5zaW9uRGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJDbGllbnRTZXJ2ZXJJbnN0YW5jZSIsIE1hbmFnZVNlcnZlclN0YXJ0VXBDb21tYW5kLmNsYXNzLCJTYW1wbGVFeGlzdGluZ1NlcnZlciIsIG5ldyBTZXJ2ZXJJbnN0VG9JU2VydmVyVHJhbnNmb3JtZXIoKSk7ICAgICAgCi0gICAgICAKLSAgICAgIC8vIE1hcCBXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhUZXN0RGVmYXVsdGluZ0ZyYWdtZW50LmNsYXNzLCAiVGVzdEZhY2lsaXR5IixDbGllbnRUZXN0RGVsZWdhdGVDb21tYW5kLmNsYXNzKTsKLSAgICAgIGRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdlYlNlcnZpY2VDbGllbnRUZXN0QXJyaXZhbENvbW1hbmQuY2xhc3MsICJGb2xkZXIiLENsaWVudFRlc3REZWxlZ2F0ZUNvbW1hbmQuY2xhc3MpOwotICAgICAgZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoV2ViU2VydmljZUNsaWVudFRlc3RBcnJpdmFsQ29tbWFuZC5jbGFzcywgIkpzcEZvbGRlciIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiUnVuQ2xpZW50VGVzdCIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiTWV0aG9kcyIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiU2FtcGxlUHJvamVjdCIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlQ2xpZW50VGVzdEFycml2YWxDb21tYW5kLmNsYXNzLCAiU2FtcGxlUHJvamVjdEVBUiIsQ2xpZW50VGVzdERlbGVnYXRlQ29tbWFuZC5jbGFzcyk7ICAgIAotICAgIAotICAgICAgLy8gTWFwIE9wZW5FZGl0b3JDb21tYW5kCi0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiV2ViU2VydmljZSIsIE9wZW5FZGl0b3JDb21tYW5kLmNsYXNzICk7Ci0gICAgICBkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyggUHJlU2VydmljZURldmVsb3BDb21tYW5kLmNsYXNzLCAiQ29udGV4dCIsICAgIE9wZW5FZGl0b3JDb21tYW5kLmNsYXNzICk7ICAgICAgCi0gICAgICAKLSAgICAgIC8vTWFwIEZpbmlzaCBDb21tYW5kIAotICAgICAgCi0gICAgICAKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy9ydW50aW1lL1NlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL3J1bnRpbWUvU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNmQ1NTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL3J1bnRpbWUvU2VydmVyUnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMTMxIDEyMTA3MSAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lciAgICAgCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwMjI3ICAgMTI0MzkyIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjAzMTUgICAxMzE5NjMgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDQxOCAgIDEyOTY4OCByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNDI3ICAgMTI2NzgwIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MjcgICAxMzgwNTggam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA1MjMgICAxMzM3MTQgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA1MjUgICAxNDM4NDMgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA5MDUgICAxNTYyMzAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4sIEhhbmRsaW5nIHByb2plY3RzIHdpdGggbm8gdGFyZ2V0IHJ1bnRpbWUKLSAqIDIwMDcwMzE5CSAgMTU5NDU4IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiBhZGRlZCBpbiBzb21lIG51bGwgY2hlY2tzCi0gKiAyMDA3MTIxMgkgIDIwMDE5MyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA4MDMyNiAgIDE3MTcwNSB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZywgaW1wcm92ZSBBbnRUYXNrIGVycm9ycyByZXBvcnQKLSAqIDIwMDgwMzI2ICAgMjIxMzY0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDQwMiAgIDIyNTAzMiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICogMjAwODA1MjcgICAyMzQyMjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwNzMwICAgMjQyNjExIHpoYW5nQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA5MjUgICAyNDIzMTIgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgQ2Fubm90IGNyZWF0ZSBCVUpCIFdTIGZyb20gQmVhbiBpbiBKYXZhIHByb2plY3QgdXNpbmcgQU5UIHRhc2tzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMucnVudGltZTsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uU2VydmVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldE1hdGNoZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5GYWNldFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tb24uUmVxdWlyZWRGYWNldFZlcnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkuY29tbW9uLkRlZmF1bHRpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wcmVmZXJlbmNlcy5QZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLnByZWZlcmVuY2VzLlByb2plY3RUb3BvbG9neUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpZGdldHMucnVudGltZS5DbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndzcnQuRmFjZXRNYXRjaENhY2hlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LlJ1bnRpbWVEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LlNlcnZpY2VSdW50aW1lRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuV1NVSVBsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlU2NlbmFyaW87Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2ZXJSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQgZXh0ZW5kcyBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQKLXsJCi0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgZ2VuZXJhdGVQcm94eV89dHJ1ZTsgLy9qdmgKLSAgCi0gIHByaXZhdGUgVHlwZVJ1bnRpbWVTZXJ2ZXIgc2VydmljZUlkc187Ci0gIHByaXZhdGUgYm9vbGVhbiBzZXJ2aWNlSWRzRml4ZWRfID0gZmFsc2U7Ci0gIHByaXZhdGUgU3RyaW5nIHNlcnZpY2VSdW50aW1lSWRfOwotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlUHJvamVjdE5hbWVfOwotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfOwotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlQ29tcG9uZW50VHlwZV87Ci0gIHByaXZhdGUgSVByb2plY3QgaW5pdGlhbFByb2plY3RfOwotICBwcml2YXRlIGJvb2xlYW4gc2VydmljZU5lZWRFQVJfID0gdHJ1ZTsKLSAgcHJpdmF0ZSBGYWNldE1hdGNoZXIgc2VydmljZUZhY2V0TWF0Y2hlcl87Ci0KLSAgcHVibGljIFNlcnZlclJ1bnRpbWVTZWxlY3Rpb25XaWRnZXREZWZhdWx0aW5nQ29tbWFuZCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0gIAotICAKLSAgLyoqCi0gICAqIERlZmF1bHRzIHRoZSBmb2xsb3dpbmcgYml0cyBvZiBpbmZvcm1hdGlvbiBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgotICAgKiBzZXJ2aWNlUnVudGltZUlkXyA6IHRoZSBzZXJ2aWNlUnVudGltZUlkLiBNdXN0IGJlIGRlZmF1bHRlZCB0byBub24tZW1wdHkgU3RyaW5nLgotICAgKiBzZXJ2aWNlSWRzXy5ydW50aW1lSWRfOiB0aGUgV2ViIHNlcnZpY2UgcnVudGltZSBpZC4gTXVzdCBiZSBkZWZhdWx0ZWQgdG8gbm9uLWVtcHR5IFN0cmluZy4KLSAgICogc2VydmljZVByb2plY3ROYW1lXyA6IHRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIHByb2plY3QuIE11c3QgYmUgbm9uLWVtcHR5LiBNYXkgb3IgbWF5IG5vdCBleGlzdC4KLSAgICogc2VydmljZUNvbXBvbmVudFR5cGVfOiB0aGUgaWQgb2YgdGhlIHNlcnZpY2UgcHJvamVjdCB0ZW1wbGF0ZS4gTXVzdCBiZSBlbXB0eSBpZiB0aGUgc2VydmljZQotICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgZXhpc3RzLiBNdXN0IGJlIG5vbi1lbXB0eSBvZiB0aGUgc2VydmljZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LgotICAgKiBzZXJ2aWNlSWRzXy5zZXJ2ZXJJZF86IHRoZSBzZXJ2ZXIgdHlwZSBpZC4gTWF5IGJlIGFuIGVtcHR5IFN0cmluZyBpZiB0aGUgZGVmYXVsdGVkIFdlYiBzZXJ2aWNlIHJ1bnRpbWUKLSAgICogICAgICAgICAgICAgICAgICAgICAgICBkb2VzIG5vdCByZXF1aXJlIGEgc2VydmVyLgotICAgKiBzZXJ2aWNlSWRzXy5zZXJ2ZXJJbnN0YW5jZUlkXzogdGhlIHNlcnZlciBpZC4gTWF5IGJlIG51bGwgb3IgYW4gZW1wdHkgU3RyaW5nLgotICAgKiBzZXJ2aWNlTmVlZEVBUl86IHRydWUgaWYgYW4gRUFSIGlzIG5lZWRlZC4gRmFsc2Ugb3RoZXJ3aXNlLgotICAgKiBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfOiB0aGUgc2VydmljZSBFQVIgcHJvamVjdC4gTXVzdCBiZSBlbXB0eSBpZiB0aGUgc2VydmljZU5lZWRFQVJfIGlzIGZhbHNlLgotICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIG5vbi1lbXB0eSBpZiB0aGUgc2VydmljZU5lZWRFQVJfIGlzIHRydWUuCi0gICAqIERlZmF1bHRzIHRoZSBwYXJhbGxlbCBpbmZvcm1hdGlvbiBvbiB0aGUgY2xpZW50LXNpZGUgaWYgbmVlZGVkIAotICAgKiAoQHNlZSBDbGllbnRSdW50aW1lU2VsZWN0aW9uV2lkZ2V0RGVmYXVsdGluZ0NvbW1hbmQjZXhlY3V0ZSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgKi8KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsgICAgCi0gICAgSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgCi0gICAgdHJ5Ci0gICAgeyAgICAJCi0gICAgIAotICAgICAvLyoqU3RlcCAxKiogRGVmYXVsdCB0aGUgc2VydmljZVJ1bnRpbWUgYW5kIHRoZSBXZWIgc2VydmljZSBydW50aW1lLgotICAgICAvL3NlcnZpY2VJZHNGaXhlZF8gaXMgc2V0IHRvIHRydWUgZm9yIHRoZSBBbnQgc2NlbmFyaW8uIEl0J3MgYWx3YXlzIGZhbHNlIGZvciB0aGUgd2l6YXJkCi0gICAgIC8vc2NlbmFyaW9zLiAgICAJCi0gICAgIGlmIChzZXJ2aWNlSWRzRml4ZWRfKQotICAgICB7Ci0gICAgICAgLy9TZXQgdGhlIHNlcnZpY2VSdW50aW1lIGJhc2VkIG9uIHRoZSBydW50aW1lIGFuZCBzZXJ2ZXIuCi0gICAgICAgLy9JZiB1c2VyIHNldCBhIHNlcnZpY2UgcHJvamVjdCB1c2UgdGhhdCBhcyBpbml0aWFsIHByb2plY3Qgb3RoZXJ3aXNlIGRlZmF1bHQgZnJvbSBpbml0aWFsIHNlbGVjdGlvbi4KLSAgICAgICAvLyhhYm92ZSBpcyB0cnVlIGZvciBhbGwgc2NlbmFyaW9zIGV4Y2VwdCBCVUogZnJvbSBKYXZhIFByb2plY3QtIGZvciBCVUogZnJvbSBKYXZhIFByb2plY3QgbmVlZCB0byBjcmVhdGUgYSBkZXBlbmRhbmN5IGluIGRvd25zdHJlYW0gY29tbWFuZHMKLSAgICAgICAvL2JldHdlZW4gdGhlIGluaXRpYWwgcHJvamVjdCBhbmQgdGhlIHNlcnZpY2UgcHJvamVjdCBzbyBkb24ndCB1c2UgYXMgdGhlIGluaXRpYWwgc2VsZWN0aW9uICAgICAgICAKLSAgICAJIGlmIChzZXJ2aWNlUHJvamVjdE5hbWVfICE9IG51bGwpIAotICAgIAkgewotICAgIAkgCSBJUHJvamVjdCBzZXJ2aWNlUHJvamVjdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdChzZXJ2aWNlUHJvamVjdE5hbWVfKTsKLSAgICAJIAkgLy91c2UgdGhlIHVzZXIgcHJvdmlkZWQgc2VydmljZSBwcm9qZWN0IHRvIGRlZmluZSB0aGUgcnVudGltZSB0cmlwbGV0IChpZiB1c2VyIHByb3ZpZGVkIHNlcnZpY2UgcHJvamVjdCBpcyBub3QgdmFsaWQgZm9yCi0gICAgCSAJIC8vdGhlIHdlYiBzZXJ2aWNlIHR5cGUsIHRoZSBydW50aW1lIHRyaXBsZXQgd2lsbCBjb250YWluIGEgc3VpdGFibGUgcHJvamVjdCBpZiBvbmUgZXhpc3RzKQotICAgIAkgCSBEZWZhdWx0UnVudGltZVRyaXBsZXQgZHJ0ID0gZ2V0RGVmYXVsdFJ1bnRpbWUoc2VydmljZVByb2plY3QsIHNlcnZpY2VJZHNfLmdldFR5cGVJZCgpLCBmYWxzZSwgc2VydmljZUlkc18uZ2V0U2VydmVySWQoKSk7Ci0gICAgCQkgaWYgKCEoV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2NlbmFyaW9Gcm9tVHlwZUlkKHNlcnZpY2VJZHNfLmdldFR5cGVJZCgpKSA9PSBXZWJTZXJ2aWNlU2NlbmFyaW8uQk9UVE9NVVAgJiYKLSAgICAJCSAgICAJCUZhY2V0VXRpbHMuaXNKYXZhUHJvamVjdChpbml0aWFsUHJvamVjdF8pKSl7Ci0gICAgCQkgICAgIC8vdXNlciBzZXQgYSBzZXJ2aWNlIHByb2plY3QsIHVzZSBhcyBpbml0aWFsIHByb2plY3QKLSAgICAJCQkgLy9pbml0aWFsUHJvamVjdF8gaXMgdGhlIHByb2plY3Qgd2hlcmUgdGhlIHNlbGVjdGVkIG9iamVjdCByZXNpZGVzLCBzZXQgdG8gYmUgdGhlIHNlcnZpY2UgcHJvamVjdCBmb3Igbm93IGZvciBhbGwgc2NlbmFyaW9zIGV4Y2VwdCBCVUogZnJvbSBKYXZhIFByb2plY3QgKGZvciAKLSAgICAJCQkgLy9CVUogZnJvbSBKYXZhIFByb2plY3QgbmVlZCB0byBjcmVhdGUgYSBkZXBlbmRhbmN5IGluIGRvd25zdHJlYW0gY29tbWFuZHMgYmV0d2VlbiB0aGUgaW5pdGlhbCBwcm9qZWN0IGFuZCB0aGUgc2VydmljZSBwcm9qZWN0KQotICAgIAkJCSBpbml0aWFsUHJvamVjdF8gPSBzZXJ2aWNlUHJvamVjdDsKLSAgICAJCSB9Ci0gICAgCQkgc2VydmljZUZhY2V0TWF0Y2hlcl8gPSBkcnQuZ2V0RmFjZXRNYXRjaGVyKCk7Ci0gICAJCQkgc2VydmljZVByb2plY3ROYW1lXyA9IGRydC5nZXRQcm9qZWN0TmFtZSgpOyAvL2Egc3VpdGFibGUgc2VydmljZSBwcm9qZWN0IGZvciB0aGUgd2ViIHNlcnZpY2UgdHlwZSwgb3IgbnVsbCBpZiBhIHN1aXRhYmxlIHByb2plY3QgZG9lcyBub3QgZXhpc3QKLSAgICAJICAgICBzZXJ2aWNlUnVudGltZUlkXyA9IGRydC5nZXRSdW50aW1lSWQoKTsgICAgICAgCi0KLSAgICAJICAgICAgIGlmIChzZXJ2aWNlUnVudGltZUlkXyAhPSBudWxsKQotICAgIAkgICAgICAgewotICAgIAkgICAgCSAgIHNlcnZpY2VJZHNfLnNldFJ1bnRpbWVJZChXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKHNlcnZpY2VSdW50aW1lSWRfKS5nZXRSdW50aW1lKCkKLSAgICAJICAgICAgCSAgICAgICAgIC5nZXRJZCgpKTsKLSAgICAJICAgICAgIH0KLSAgICAJIH0KLSAgICAJIGVsc2UKLSAgICAJIHsKLSAgICAJCSBEZWZhdWx0UnVudGltZVRyaXBsZXQgZHJ0ID0gZ2V0RGVmYXVsdFNlcnZpY2VSdW50aW1lRm9yRml4ZWRSdW50aW1lQW5kU2VydmVyKGluaXRpYWxQcm9qZWN0Xywgc2VydmljZUlkc18uZ2V0U2VydmVySWQoKSk7ICAKLSAgICAJICAgICBzZXJ2aWNlRmFjZXRNYXRjaGVyXyA9IGRydC5nZXRGYWNldE1hdGNoZXIoKTsKLSAgICAJICAgICBzZXJ2aWNlUHJvamVjdE5hbWVfID0gZHJ0LmdldFByb2plY3ROYW1lKCk7Ci0gICAgCSAgICAgc2VydmljZVJ1bnRpbWVJZF8gPSBkcnQuZ2V0UnVudGltZUlkKCk7CSAKLSAgICAJIH0gICAKLSAgICAgfQotICAgICBlbHNlCi0gICAgIHsKLSAgICAgICAvLyBTZXQgdGhlIHJ1bnRpbWUgYmFzZWQgb24gdGhlIGluaXRpYWwgc2VsZWN0aW9uCi0gICAgICAgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0IGRydCA9IGdldERlZmF1bHRSdW50aW1lKGluaXRpYWxQcm9qZWN0Xywgc2VydmljZUlkc18uZ2V0VHlwZUlkKCksIGZhbHNlLCBzZXJ2aWNlSWRzXy5nZXRTZXJ2ZXJJZCgpKTsKLSAgICAgICBpZiAoZHJ0LmdldFByb2plY3ROYW1lKCkgPT0gbnVsbCAmJiBpbml0aWFsUHJvamVjdF8gIT0gbnVsbAotICAgIAkgICAmJiBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTY2VuYXJpb0Zyb21UeXBlSWQoc2VydmljZUlkc18uZ2V0VHlwZUlkKCkpID09IFdlYlNlcnZpY2VTY2VuYXJpby5CT1RUT01VUAotICAgIAkgICAmJiBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRXZWJTZXJ2aWNlSW1wbElkRnJvbVR5cGVJZChzZXJ2aWNlSWRzXy5nZXRUeXBlSWQoKSkuZXF1YWxzKCJvcmcuZWNsaXBzZS5qc3Qud3Mud3NJbXBsLmVqYiIpICkKLSAgICAgICB7Ci0gICAgCSAgIGRydC5zZXRQcm9qZWN0TmFtZShpbml0aWFsUHJvamVjdF8uZ2V0TmFtZSgpKTsKLSAgICAgICB9Ci0gICAgICAgc2VydmljZUZhY2V0TWF0Y2hlcl8gPSBkcnQuZ2V0RmFjZXRNYXRjaGVyKCk7Ci0gICAgICAgc2VydmljZVByb2plY3ROYW1lXyA9IGRydC5nZXRQcm9qZWN0TmFtZSgpOwotICAgICAgIHNlcnZpY2VSdW50aW1lSWRfID0gZHJ0LmdldFJ1bnRpbWVJZCgpOyAgICAgICAKLQotICAgICAgIGlmIChzZXJ2aWNlUnVudGltZUlkXyAhPSBudWxsKQotICAgICAgIHsKLSAgICAJICAgc2VydmljZUlkc18uc2V0UnVudGltZUlkKFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvckJ5SWQoc2VydmljZVJ1bnRpbWVJZF8pLmdldFJ1bnRpbWUoKQotICAgIAkJICAgICAgICAgLmdldElkKCkpOyAKLSAgICAgICB9IAotICAgICB9Ci0gICAgIAotICAgICAvLyoqU3RlcCAyKiogRGVmYXVsdCB0aGUgc2VydmljZSBwcm9qZWN0IGlmIGl0IHdhcyBub3QgYWxyZWFkeSBkZWZhdWx0ZWQgCi0gICAgIC8vYXMgcGFydCBvZiBkZWZhdWx0aW5nIHRoZSBXZWIgc2VydmljZSBydW50aW1lLgotICAgICBpZiAoc2VydmljZVByb2plY3ROYW1lXyA9PSBudWxsKQotICAgICB7Ci0gICAgICAgLy8gUHJvamVjdCBuYW1lIGRpZCBub3QgZ2V0IHNldCB3aGVuIHRoZSBydW50aW1lIHdhcyBzZXQsIHNvIHNldCBpdCBub3cKLSAgICAgICBzZXJ2aWNlUHJvamVjdE5hbWVfID0gZ2V0RGVmYXVsdFNlcnZpY2VQcm9qZWN0TmFtZSgpOwotICAgICB9Ci0KLSAgICAgLy8qKlN0ZXAgMyoqIERlZmF1bHQgdGhlIHNlcnZpY2UgcHJvamVjdCB0eXBlLgotICAgICBJUHJvamVjdCBzZXJ2aWNlUHJvamVjdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdChzZXJ2aWNlUHJvamVjdE5hbWVfKTsgCi0gICAgIGlmICghc2VydmljZVByb2plY3QuZXhpc3RzKCkpCi0gICAgIHsKLSAgICAgICAvLyBTZXQgdGhlIHByb2plY3QgdGVtcGxhdGUKLSAgICAgICBzZXJ2aWNlQ29tcG9uZW50VHlwZV8gPSBnZXREZWZhdWx0U2VydmljZVByb2plY3RUZW1wbGF0ZSgpOwotICAgICB9Ci0gICAgIGVsc2UKLSAgICAgewotICAgICAgIC8vU2V0IGl0IHRvIGFuIGVtcHR5IFN0cmluZwotICAgICAgIHNlcnZpY2VDb21wb25lbnRUeXBlXyA9ICIiOwotICAgICB9Ci0gICAgIC8vKipTdGVwIDQqKiBEZWZhdWx0IHRoZSBzZXJ2ZXIgaWYgdGhpcyBpcyBub3QgYW4gQW50IHNjZW5hcmlvLgotICAgICBpZiAoIXNlcnZpY2VJZHNGaXhlZF8pCi0gICAgIHsKLSAgICAgICAvLyBTZXQgdGhlIHNlcnZlcgotICAgICAgIElTdGF0dXMgc2VydmVyU3RhdHVzID0gc2V0U2VydmljZURlZmF1bHRTZXJ2ZXIoKTsKLSAgICAgICBpZiAoc2VydmVyU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotICAgICAgIHsKLSAgICAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc2VydmVyU3RhdHVzKTsKLSAgICAgICAgIHJldHVybiBzZXJ2ZXJTdGF0dXM7Ci0gICAgICAgfQotICAgICB9Ci0gICAgIAotICAgICAvLyoqU3RlcCA1KiogRGVmYXVsdCBjbGllbnROZWVkRUFSIGFuZCBjbGllbnQgRUFSIGlmIGFuIEVBUiBpcyBuZWVkZWQKLSAgICAgc2V0RGVmYXVsdFNlcnZpY2VFYXJQcm9qZWN0KCk7Ci0gICAgIAotICAgICAvLyBqdmggLSBmb3Igbm93IGNvbW1lbnQgb3V0IGdlbmVyYXRlIHByb3h5Ci0gICAgIC8vICAgbmVlZCB0byBsb29rIGF0IGRlZmF1bHRpbmcgYmFzZWQgb24gYW4gZXZlbnQKLSAgICAgLy8gICAgb24gcGFnZSAxIC0gd2hlbiBjbGllbnQgZ2VuZXJhdGlvbiBnb2VzIGZyb20gbm9uZQotICAgICAvLyAgICB0byBkZXZlbG9wLi4uCi0gICAgIC8qaWYgKGdlbmVyYXRlUHJveHlfKQotICAgICB7Ki8KLSAgICAJIC8vRGVmYXVsdCB0aGUgY2xpZW50LXNpZGUuCi0gICAgCSBJU3RhdHVzIGNsaWVudFNpZGVTdGF0dXMgPSBkZWZhdWx0Q2xpZW50U2lkZShtb25pdG9yKTsKLSAgICAgICAgIGlmIChjbGllbnRTaWRlU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gU3RhdHVzLkVSUk9SKQotICAgICAgICAgewotICAgICAgICAgICByZXR1cm4gY2xpZW50U2lkZVN0YXR1czsKLSAgICAgICAgIH0gICAgICAgICAgICAgICAgICAKLSAgICAvLyB9Ci0gICAgICAgICAgCi0gICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgICAKLSAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBDYXRjaCBhbGwgRXhjZXB0aW9ucyBpbiBvcmRlciB0byBnaXZlIHNvbWUgZmVlZGJhY2sgdG8gdGhlIHVzZXIKLSAgICAgIElTdGF0dXMgZXJyb3JTdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX1RBU0tfRVhDRVBURUQsCi0gICAgICAgICAgbmV3IFN0cmluZ1tdIHsgZS5nZXRNZXNzYWdlKCkgfSksIGUpOwotICAgICAgCi0gICAgICAvLyBJZiB0aGUgZXhjZXB0aW9uIGhhcyBubyBlcnJvciBtc2csIGl0J3Mga2luZCBvZiB1c2VsZXNzIHRvIHRoZSB1c2VyIHNvIGxldCdzIGxvZyBpdAotICAgICAgaWYgKCBlLmdldE1lc3NhZ2UoKSA9PSBudWxsKXsKLSAgICAgIAlJTG9nIHBsdWdpbmxvZyA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0TG9nKCk7Ci0gICAgICAJcGx1Z2lubG9nLmxvZyhlcnJvclN0YXR1cyk7Ci0gICAgICAJICAKLSAgICAgIAkvLyBjcmVhdGUgYSBuZXcgSVN0YXR1cyB3aGljaCBoYXMgYSBub24tbnVsbCBtc2csIHRoaXMgaXMgdG8gYmUgdGhyb3duIHRvIHRoZSB1c2VyLgotICAgICAgCWVycm9yU3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoTkxTLmJpbmQoQ29uc3VtcHRpb25VSU1lc3NhZ2VzLk1TR19FUlJPUl9UQVNLX0VYQ0VQVEVELAotICAgIAkgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgV1NVSVBsdWdpbk1lc3NhZ2VzLk1TR19TRUVfRVJST1JfTE9HIH0pLCBlKTsgIAotICAgICAgfQotICAgICAgICAKLSAgICAgIGVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoZXJyb3JTdGF0dXMpOwotICAgICAgcmV0dXJuIGVycm9yU3RhdHVzOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgSVN0YXR1cyBkZWZhdWx0Q2xpZW50U2lkZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCi0gIHsKLSAgICBJU3RhdHVzIGNsaWVudERlZmF1bHRGcm9tU2VydmljZVN0YXR1cyA9IGRlZmF1bHRDbGllbnRTaWRlRnJvbVNlcnZpY2VTaWRlKHNlcnZpY2VQcm9qZWN0TmFtZV8sIHNlcnZpY2VJZHNfLCBzZXJ2aWNlTmVlZEVBUl8sIHNlcnZpY2VFYXJQcm9qZWN0TmFtZV8pOwotCi0gICAgLy8gSWYgYW4gZXJyb3Igc3RhdHVzIGlzIHJldHVybmVkLCB0aGUgb25seSBwcm9wZXJ0eSB0aGF0IHdhcyBzZXQgb24gCi0gICAgLy8gQ2xpZW50UnVudGltZVNlbGVjdGlvbldpZGdldERlZmF1bHRpbmdDb21tYW5kIGlzIGNsaWVudFByb2plY3ROYW1lXy4gCi0gICAgLy8gVGhlIHJlc3Qgb2YgdGhlIHByb3BlcnRpZXMgaW5jbHVkaW5nIGNsaWVudFJ1bnRpbWVJZF8sIGNsaWVudENvbXBvbmVudFR5cGVfLCAKLSAgICAvLyBhbGwgdGhlIHZhbHVlcyBpbiBjbGllbnRJZHNfLCBjbGllbnROZWVkRUFSXywgYW5kIGNsaWVudEVhclByb2plY3ROYW1lXyAKLSAgICAvLyBoYXZlIG5vdCBiZWVuIHNldCBiZWNhdXNlIHRoZSBzZXJ2aWNlIHNpZGUgc2VydmVyIGFuZAotICAgIC8vIHdlYiBzZXJ2aWNlIHJ1bnRpbWUgY291bGQgbm90IGJlIHVzZWQgb24gdGhlIGNsaWVudCBzaWRlLiBSdW4gdGhlIGVudGlyZQotICAgIC8vIGNsaWVudC1zaWRlIGRlZmF1bHRpbmcgYWxnb3JpdGhtIHVzaW5nIGNsaWVudFByb2plY3ROYW1lXyBhcyB0aGUgCi0gICAgLy8gY2xpZW50SW5pdGlhbFByb2plY3RfLiBUaGVuIHVwZGF0ZSB0aGUgY2xpZW50RWFyUHJvamVjdE5hbWVfIGJhc2VkIG9uIHRoZQotICAgIC8vIHNlcnZpY2Ugc2lkZSBFQVIuCi0gICAgaWYgKGNsaWVudERlZmF1bHRGcm9tU2VydmljZVN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IpCi0gICAgewotICAgICAgLy8gMS4gUnVuIGNsaWVudCBzaWRlIGRlZmF1bHRpbmcgZnJvbSBzY3JhdGNoIHdpdGggY2xpZW50SW5pdGlhbFByb2plY3RfCi0gICAgICAvLyBzZXQgdG8gdGhlIG5ldyBjbGllbnRQcm9qZWN0TmFtZV8uCi0gICAgICBJUHJvamVjdCBjbGllbnRQcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KGdldENsaWVudFByb2plY3ROYW1lKCkpOwotICAgICAgc2V0Q2xpZW50SW5pdGlhbFByb2plY3QoY2xpZW50UHJvamVjdCk7Ci0gICAgICBJU3RhdHVzIGNsaWVudEV4ZWN1dGVTdGF0dXMgPSBzdXBlci5leGVjdXRlKG1vbml0b3IsIG51bGwpOwotICAgICAgaWYgKGNsaWVudEV4ZWN1dGVTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjbGllbnRFeGVjdXRlU3RhdHVzOwotICAgICAgfQotCi0gICAgICAvLyAyLiBVcGRhdGUgdGhlIGNsaWVudC1zaWRlIEVBUiBpZiBzZXJ2aWNlTmVlZEVBUl8gaXMgdHJ1ZTsKLSAgICAgIGlmIChzZXJ2aWNlTmVlZEVBUl8pCi0gICAgICB7Ci0gICAgICAgIGRlZmF1bHRDbGllbnRFYXJGcm9tU2VydmljZUVhcihzZXJ2aWNlUHJvamVjdE5hbWVfLCBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JICAKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIHNldERlZmF1bHRTZXJ2aWNlRWFyUHJvamVjdCgpCi0gIHsKLSAgICAvL0Rvbid0IG5lZWQgYW4gZWFyIGlmIHRoaXMgaXMgYSBKYXZhIHByb2plY3QsIG9yIGlmIHRoZSBzZWxlY3RlZCB0ZW1wbGF0ZSBpcyBqc3QudXRpbGl0eQotICAgIElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KHNlcnZpY2VQcm9qZWN0TmFtZV8pOwotICAgIGlmIChzZXJ2aWNlUHJvamVjdC5leGlzdHMoKSkKLSAgICB7Ci0gICAgICBzZXJ2aWNlTmVlZEVBUl8gPSAhKEZhY2V0VXRpbHMuaXNKYXZhUHJvamVjdChzZXJ2aWNlUHJvamVjdCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgc2VydmljZU5lZWRFQVJfID0gIShGYWNldFV0aWxzLmlzVXRpbGl0eVRlbXBsYXRlKHNlcnZpY2VDb21wb25lbnRUeXBlXykpOyAgCi0gICAgfSAgICAKLSAgICAKLSAgICAvL0lmIHNlcnZpY2VOZWVkRUFSXyBpcyBzdGlsbCB0cnVlLCBpdCBtZWFucyB0aGF0IHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggYSBKYXZhIHByb2plY3QKLSAgICAvL29yIEphdmEgcHJvamVjdCB0eXBlLiBDaGVjayB0aGUgc2VydmVyLgotICAgIAotICAgIAotICAgIGlmIChzZXJ2aWNlTmVlZEVBUl8pCi0gICAgewotICAgICAgCi0gICAgICAvLyBEZXRlcm1pbmUgaWYgYW4gZWFyIHNlbGVjdGlvbiBpcyBuZWVkZWQgYmFzZWQgb24gdGhlIHNlcnZlciB0eXBlLiAgICAgIAotICAgICAgU3RyaW5nIHNlcnZlcklkID0gc2VydmljZUlkc18uZ2V0U2VydmVySWQoKTsKLSAgICAgIGlmIChzZXJ2ZXJJZCAhPSBudWxsKQotICAgICAgewotICAgICAgICAvLyBVc2UgdGhlIHNlcnZlciB0eXBlCi0gICAgICAgIFN0cmluZyBzZXJ2ZXJUYXJnZXRJZCA9IFNlcnZlclV0aWxzLmdldFJ1bnRpbWVUYXJnZXRJZEZyb21GYWN0b3J5SWQoc2VydmVySWQpOwotICAgICAgICBpZiAoc2VydmVyVGFyZ2V0SWQgIT0gbnVsbCAmJiBzZXJ2ZXJUYXJnZXRJZC5sZW5ndGgoKSA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIVNlcnZlclV0aWxzLmlzVGFyZ2V0VmFsaWRGb3JFQVIoc2VydmVyVGFyZ2V0SWQsICIxMyIpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIERlZmF1bHQgdGhlIEVBUiBzZWxlY3Rpb24gdG8gYmUgZW1wdHkKLSAgICAgICAgICAgIHNlcnZpY2VOZWVkRUFSXyA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsgLy8gc2VydmVySWQgPT0gbnVsbCwgYXNzdW1lIHRoYXQgaXQgZG9lcyBub3QgbmVlZCBFQVIKLSAgICAJICBzZXJ2aWNlTmVlZEVBUl8gPSBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKHNlcnZpY2VOZWVkRUFSXykKLSAgICB7Ci0gICAgICBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfID0gRGVmYXVsdGluZ1V0aWxzLmdldERlZmF1bHRFQVJQcm9qZWN0TmFtZShzZXJ2aWNlUHJvamVjdE5hbWVfKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHNlcnZpY2VFYXJQcm9qZWN0TmFtZV8gPSAiIjsKLSAgICB9ICAgCi0gIH0KLSAgCi0gIHByaXZhdGUgSVN0YXR1cyBzZXRTZXJ2aWNlRGVmYXVsdFNlcnZlcigpCi0gIHsKLSAgICAvL0Nob29zZSBhbiBleGlzdGluZyBzZXJ2ZXIgdGhlIG1vZHVsZSBpcyBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCBpZiBwb3NzaWJsZQotICAgIElQcm9qZWN0IHNlcnZpY2VQcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KHNlcnZpY2VQcm9qZWN0TmFtZV8pOwotICAgIElTZXJ2ZXJbXSBjb25maWd1cmVkU2VydmVycyA9IG51bGw7Ci0gICAgaWYoc2VydmljZVByb2plY3QuZXhpc3RzKCkpCi0gICAgCWNvbmZpZ3VyZWRTZXJ2ZXJzID0gU2VydmVyVXRpbC5nZXRTZXJ2ZXJzQnlNb2R1bGUoU2VydmVyVXRpbHMuZ2V0TW9kdWxlKHNlcnZpY2VQcm9qZWN0KSwgbnVsbCk7Ci0gICAgCi0gICAgaWYgKGNvbmZpZ3VyZWRTZXJ2ZXJzIT1udWxsICYmIGNvbmZpZ3VyZWRTZXJ2ZXJzLmxlbmd0aD4wKQotICAgIHsKLSAgICAgIHNlcnZpY2VJZHNfLnNldFNlcnZlcklkKGNvbmZpZ3VyZWRTZXJ2ZXJzWzBdLmdldFNlcnZlclR5cGUoKS5nZXRJZCgpKTsKLSAgICAgIHNlcnZpY2VJZHNfLnNldFNlcnZlckluc3RhbmNlSWQoY29uZmlndXJlZFNlcnZlcnNbMF0uZ2V0SWQoKSk7Ci0gICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsgICAgICAgICAgICAgIAotICAgIH0KLSAgICAKLSAgICAvL0lmIHRoZSBwcm9qZWN0IGV4aXN0cywgY2hvb3NlIGEgc3VpdGFibGUgc2VydmVyIG9yIHNlcnZlciB0eXBlIGJhc2VkIG9uIHRoZSBleGlzdGluZyBwcm9qZWN0J3MgcnVudGltZSBvciBmYWNldHMKLSAgICBpZiAoc2VydmljZVByb2plY3QuZXhpc3RzKCkpCi0gICAgewotICAgICAgSVNlcnZlciBzZXJ2ZXIgPSBnZXRTZXJ2ZXJGcm9tUHJvamVjdChzZXJ2aWNlUHJvamVjdE5hbWVfLCBzZXJ2aWNlRmFjZXRNYXRjaGVyXyk7Ci0gICAgICBpZiAoc2VydmVyICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHNlcnZpY2VJZHNfLnNldFNlcnZlcklkKHNlcnZlci5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKSk7Ci0gICAgICAgIHNlcnZpY2VJZHNfLnNldFNlcnZlckluc3RhbmNlSWQoc2VydmVyLmdldElkKCkpOwotICAgICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IGdldFNlcnZlclR5cGVGcm9tUHJvamVjdChzZXJ2aWNlUHJvamVjdE5hbWVfLCBzZXJ2aWNlRmFjZXRNYXRjaGVyXyk7Ci0gICAgICAgIGlmIChzZXJ2ZXJUeXBlICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBzZXJ2aWNlSWRzXy5zZXRTZXJ2ZXJJZChzZXJ2ZXJUeXBlLmdldElkKCkpOwotICAgICAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vSGF2ZW4ndCBwaWNrZWQgYSBzZXJ2ZXIvc2VydmVyIHR5cGUgb24gdGhlIGJhc2lzIG9mIHRoZSBwcm9qZWN0LiBQaWNrIGEgc2VydmVyL3NlcnZlciB0eXBlCi0gICAgLy90aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2VydmljZVJ1bnRpbWVJZC4KLSAgICBJU2VydmVyIHNlcnZlciA9IGdldFNlcnZlckZyb21TZXJ2aWNlUnVudGltZUlkKCk7Ci0gICAgaWYgKHNlcnZlciE9bnVsbCkKLSAgICB7Ci0gICAgICBzZXJ2aWNlSWRzXy5zZXRTZXJ2ZXJJZChzZXJ2ZXIuZ2V0U2VydmVyVHlwZSgpLmdldElkKCkpOwotICAgICAgc2VydmljZUlkc18uc2V0U2VydmVySW5zdGFuY2VJZChzZXJ2ZXIuZ2V0SWQoKSk7Ci0gICAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgICB9Ci0gICAgCi0gICAgSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IGdldFNlcnZlclR5cGVGcm9tU2VydmljZVJ1bnRpbWVJZCgpOwotICAgIGlmIChzZXJ2ZXJUeXBlICE9IG51bGwpCi0gICAgewotICAgICAgc2VydmljZUlkc18uc2V0U2VydmVySWQoc2VydmVyVHlwZS5nZXRJZCgpKTsKLSAgICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICAgIH0gICAgCi0KLSAgICAvL05vIHN1aXRhYmxlIHNlcnZlciB3YXMgZm91bmQuIFBvcHVwIGFuIGVycm9yLgotICAgIFJ1bnRpbWVEZXNjcmlwdG9yIHJ1bnRpbWVEZXNjcmlwdG9yID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZUJ5SWQoc2VydmljZUlkc18uZ2V0UnVudGltZUlkKCkpOwotICAgIGlmIChydW50aW1lRGVzY3JpcHRvci5nZXRTZXJ2ZXJSZXF1aXJlZCgpKQotICAgIHsgICAgCi0gICAgICBTdHJpbmcgcnVudGltZUxhYmVsID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0UnVudGltZUxhYmVsQnlJZChzZXJ2aWNlSWRzXy5nZXRSdW50aW1lSWQoKSk7ICAgIAotICAgICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhOTFMuYmluZChDb25zdW1wdGlvblVJTWVzc2FnZXMuTVNHX0VSUk9SX05PX1NFUlZFUl9SVU5USU1FLCBuZXcgU3RyaW5nW117cnVudGltZUxhYmVsfSkgKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9ICAKLSAgCi0gIHByaXZhdGUgSVNlcnZlciBnZXRTZXJ2ZXJGcm9tU2VydmljZVJ1bnRpbWVJZCgpCi0gIHsKLSAgICBJU2VydmVyW10gc2VydmVycyA9IFNlcnZlckNvcmUuZ2V0U2VydmVycygpOwotICAgIGlmIChzZXJ2ZXJzICE9IG51bGwgJiYgc2VydmVycy5sZW5ndGggPiAwKSAKLSAgICB7Ci0gICAgICBQZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0U2VydmVyUnVudGltZUNvbnRleHQoKTsKLSAgICAgIFN0cmluZyBwcmVmZXJyZWRTZXJ2ZXJGYWN0b3J5SWQgPSBjb250ZXh0LmdldFNlcnZlckZhY3RvcnlJZCgpOwotCi0gICAgICAvL0lmIGEgc2VydmVyIG9mIHRoZSBwcmVmZXJyZWQgc2VydmVyIHR5cGUgaXMgcHJlc2VudCwgY2hlY2sgdGhhdCBvbmUgZmlyc3QKLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2VydmVycy5sZW5ndGg7IGorKykKLSAgICAgIHsKLSAgICAJaWYgKHNlcnZlcnNbal0gIT0gbnVsbCAmJiBzZXJ2ZXJzW2pdLmdldFNlcnZlclR5cGUoKSAhPSBudWxsKQotICAgIAl7Ci0JICAgICAgICBTdHJpbmcgc2VydmVyRmFjdG9yeUlkID0gc2VydmVyc1tqXS5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKTsKLQkgICAgICAgIGlmIChzZXJ2ZXJGYWN0b3J5SWQuZXF1YWxzKHByZWZlcnJlZFNlcnZlckZhY3RvcnlJZCkpCi0JICAgICAgICB7Ci0JICAgICAgICAgIGlmIChXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5kb2VzU2VydmljZVJ1bnRpbWVTdXBwb3J0U2VydmVyKHNlcnZpY2VSdW50aW1lSWRfLCBzZXJ2ZXJGYWN0b3J5SWQpKQotCSAgICAgICAgICB7Ci0JICAgICAgICAgICAgcmV0dXJuIHNlcnZlcnNbal07Ci0JICAgICAgICAgIH0KLQkgICAgICAgIH0gIAotICAgIAl9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIC8vQSBzZXJ2ZXIgb2YgdGhlIHByZWZlcnJlZCBzZXJ2ZXIgdHlwZSBjb3VsZCBub3QgYmUgZm91bmQgb3IgZGlkIG5vdCBtYXRjaC4gQ2hlY2sgYWxsIHRoZSBleGlzdGluZyBzZXJ2ZXJzLiAgICAKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VydmVycy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAJaWYgKHNlcnZlcnNbaV0gIT0gbnVsbCAmJiBzZXJ2ZXJzW2ldLmdldFNlcnZlclR5cGUoKSAhPSBudWxsKQotICAgIAl7Ci0JICAgICAgICBTdHJpbmcgc2VydmVyRmFjdG9yeUlkID0gc2VydmVyc1tpXS5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKTsKLQkgICAgICAgIGlmIChXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5kb2VzU2VydmljZVJ1bnRpbWVTdXBwb3J0U2VydmVyKHNlcnZpY2VSdW50aW1lSWRfLCBzZXJ2ZXJGYWN0b3J5SWQpKQotCSAgICAgICAgewotCSAgICAgICAgICByZXR1cm4gc2VydmVyc1tpXTsKLQkgICAgICAgIH0KLSAgICAJfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsgICAgCi0gIH0KLSAgCi0gIHByaXZhdGUgSVNlcnZlclR5cGUgZ2V0U2VydmVyVHlwZUZyb21TZXJ2aWNlUnVudGltZUlkKCkKLSAgewotICAgIFN0cmluZ1tdIHNlcnZlclR5cGVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmVyRmFjdG9yeUlkc0J5U2VydmljZVJ1bnRpbWUoc2VydmljZVJ1bnRpbWVJZF8pOwotICAgIGlmIChzZXJ2ZXJUeXBlcyE9bnVsbCAmJiBzZXJ2ZXJUeXBlcy5sZW5ndGg+MCkKLSAgICB7Ci0gICAgICAvL1JldHVybiB0aGUgcHJlZmVycmVkIG9uZSBpZiBpdCBpcyBpbiB0aGUgbGlzdAotICAgICAgUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNlcnZlclJ1bnRpbWVDb250ZXh0KCk7Ci0gICAgICBTdHJpbmcgcHJlZmVycmVkU2VydmVyRmFjdG9yeUlkID0gY29udGV4dC5nZXRTZXJ2ZXJGYWN0b3J5SWQoKTsKLSAgICAgIGZvciAoaW50IGk9MDsgaTxzZXJ2ZXJUeXBlcy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgaWYgKHNlcnZlclR5cGVzW2ldLmVxdWFscyhwcmVmZXJyZWRTZXJ2ZXJGYWN0b3J5SWQpKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIFNlcnZlckNvcmUuZmluZFNlcnZlclR5cGUoc2VydmVyVHlwZXNbaV0pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIHJldHVybiBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXJUeXBlKHNlcnZlclR5cGVzWzBdKTsKLSAgICB9ICAgIAotICAgIAotICAgIHJldHVybiBudWxsOwotICB9ICAKLSAgCi0gIAotICBwcml2YXRlIFN0cmluZyBnZXREZWZhdWx0U2VydmljZVByb2plY3RUZW1wbGF0ZSgpCi0gIHsKLSAgICBTdHJpbmdbXSB0ZW1wbGF0ZXMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2aWNlUHJvamVjdFRlbXBsYXRlcyhzZXJ2aWNlSWRzXy5nZXRUeXBlSWQoKSwgc2VydmljZUlkc18uZ2V0UnVudGltZUlkKCkpOyAgICAKLSAgICAKLSAgICAvL1dhbGsgdGhlIGxpc3Qgb2Ygc2VydmljZSBwcm9qZWN0IHR5cGVzIGluIHRoZSBwcm9qZWN0IHRvcG9sb2d5IHByZWZlcmVuY2UKLSAgICBQcm9qZWN0VG9wb2xvZ3lDb250ZXh0IHB0Yz0gV2ViU2VydmljZUNvbnN1bXB0aW9uVUlQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRQcm9qZWN0VG9wb2xvZ3lDb250ZXh0KCk7Ci0gICAgU3RyaW5nW10gcHJlZmVycmVkVGVtcGxhdGVJZHMgPSBwdGMuZ2V0U2VydmljZVR5cGVzKCk7Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBwcmVmZXJyZWRUZW1wbGF0ZUlkcy5sZW5ndGg7IGorKykKLSAgICB7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlbXBsYXRlcy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHRlbXBsYXRlSWQgPSB0ZW1wbGF0ZXNbaV07Ci0gICAgICAgIGlmICh0ZW1wbGF0ZUlkLmVxdWFscyhwcmVmZXJyZWRUZW1wbGF0ZUlkc1tqXSkpCi0gICAgICAgIHsKLSAgICAgICAgICBib29sZWFuIG1hdGNoZXMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5kb2VzU2VydmljZVJ1bnRpbWVTdXBwb3J0VGVtcGxhdGUoc2VydmljZVJ1bnRpbWVJZF8sIHRlbXBsYXRlSWQpOwotICAgICAgICAgIGlmIChtYXRjaGVzKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZXNbaV07Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vU2luY2UgdGhlIHByZWZlcnJlZFRlbXBsYXRlSWRzIGNvbnRhaW5zIHRoZSB1bmlvbiBvZiBhbGwgcHJvamVjdCB0eXBlcyBmb3IgYWxsIHNlcnZpY2UgcnVudGltZXMsIHdlIGFyZQotICAgIC8vZ3VhcmFudGVlZCB0byBoYXZlIHJldHVybmVkIGJ5IG5vdywgc28gdGhlIGNvZGUgYmVsb3cgd2lsbCBuZXZlciBiZSBleGVjdXRlZCB1bmRlciBub3JtYWwKLSAgICAvL2NpcmN1bXN0YW5jZXMuIEp1c3QgcmV0dXJuIHNvbWV0aGluZyB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4KLSAgICBpZiAodGVtcGxhdGVzLmxlbmd0aCA+IDApCi0gICAgICByZXR1cm4gdGVtcGxhdGVzWzBdOwotICAgIAotICAgIHJldHVybiAiIjsgICAgCi0gICAgCi0gIH0gIAotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0RGVmYXVsdFNlcnZpY2VQcm9qZWN0TmFtZSgpCi0gIHsKLSAgICBJUHJvamVjdFtdIHByb2plY3RzID0gRmFjZXRVdGlscy5nZXRBbGxQcm9qZWN0cygpOwotICAgIFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvciBkZXNjID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmljZVJ1bnRpbWVEZXNjcmlwdG9yQnlJZChzZXJ2aWNlUnVudGltZUlkXyk7Ci0gICAgUmVxdWlyZWRGYWNldFZlcnNpb25bXSByZnZzID0gZGVzYy5nZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoKTsKLSAgICAKLSAgICAvL0NoZWNrIGVhY2ggcHJvamVjdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBzZXJ2aWNlUnVudGltZQotICAgIGZvciAoaW50IGk9MDsgaTxwcm9qZWN0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBTZXQgZmFjZXRWZXJzaW9ucyA9IEZhY2V0VXRpbHMuZ2V0RmFjZXRzRm9yUHJvamVjdChwcm9qZWN0c1tpXS5nZXROYW1lKCkpOwotICAgICAgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUucnVudGltZS5JUnVudGltZSBmUnVudGltZSA9IG51bGw7Ci0gICAgICBTdHJpbmcgZlJ1bnRpbWVOYW1lID0gbnVsbDsKLSAgICAgIGZSdW50aW1lID0gRmFjZXRVdGlscy5nZXRGYWNldFJ1bnRpbWVGb3JQcm9qZWN0KHByb2plY3RzW2ldLmdldE5hbWUoKSk7Ci0gICAgICBpZiAoZlJ1bnRpbWUgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZlJ1bnRpbWVOYW1lID0gZlJ1bnRpbWUuZ2V0TmFtZSgpOyAgICAgICAgCi0gICAgICB9ICAgICAgICAgICAgICAKLSAgICAgIAotICAgICAgaWYgKGZhY2V0VmVyc2lvbnMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgRmFjZXRNYXRjaGVyIGZtID0gRmFjZXRNYXRjaENhY2hlLmdldEluc3RhbmNlKCkuZ2V0TWF0Y2hGb3JQcm9qZWN0KGZhbHNlLCBzZXJ2aWNlUnVudGltZUlkXywgcHJvamVjdHNbaV0uZ2V0TmFtZSgpKTsKLSAgICAgICAgYm9vbGVhbiBmYWNldFJ1bnRpbWVNYXRjaGVzID0gdHJ1ZTsKLSAgICAgICAgaWYgKGZSdW50aW1lTmFtZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgZmFjZXRSdW50aW1lTWF0Y2hlcyA9IEZhY2V0VXRpbHMuaXNGYWNldFJ1bnRpbWVTdXBwb3J0ZWQocmZ2cywgZlJ1bnRpbWVOYW1lKTsgIAotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoZm0uaXNNYXRjaCgpICYmIGZhY2V0UnVudGltZU1hdGNoZXMpCi0gICAgICAgIHsKLSAgICAgICAgICBzZXJ2aWNlRmFjZXRNYXRjaGVyXyA9IGZtOwotICAgICAgICAgIHJldHVybiBwcm9qZWN0c1tpXS5nZXROYW1lKCk7Ci0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgIAotICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvL05vIHByb2plY3Qgd2FzIHN1aXRhYmxlLCByZXR1cm4gYSBuZXcgcHJvamVjdCBuYW1lCi0gICAgcmV0dXJuIFJlc291cmNlVXRpbHMuZ2V0RGVmYXVsdFdlYlByb2plY3ROYW1lKCk7Ci0gICAgCi0gIH0gIAotICAKLSAgcHJpdmF0ZSBEZWZhdWx0UnVudGltZVRyaXBsZXQgZ2V0RGVmYXVsdFNlcnZpY2VSdW50aW1lRm9yRml4ZWRSdW50aW1lQW5kU2VydmVyKElQcm9qZWN0IHByb2plY3QsIFN0cmluZyBydW50aW1lUHJlZmVycmVkU2VydmVyKQotICB7Ci0gICAgU3RyaW5nW10gc2VydmljZVJ1bnRpbWVzID0gV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZ2V0U2VydmljZVJ1bnRpbWVzQnlTZXJ2aWNlVHlwZShzZXJ2aWNlSWRzXy5nZXRUeXBlSWQoKSwgcnVudGltZVByZWZlcnJlZFNlcnZlcik7Ci0gICAgQXJyYXlMaXN0PFN0cmluZz4gdmFsaWRTZXJ2aWNlUnVudGltZXMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKLSAgICBmb3IgKGludCBpPTA7IGk8c2VydmljZVJ1bnRpbWVzLmxlbmd0aDsgaSsrICkKLSAgICB7Ci0gICAgICBTZXJ2aWNlUnVudGltZURlc2NyaXB0b3IgZGVzYyA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFNlcnZpY2VSdW50aW1lRGVzY3JpcHRvckJ5SWQoc2VydmljZVJ1bnRpbWVzW2ldKTsKLSAgICAgIGlmIChkZXNjLmdldFJ1bnRpbWUoKS5nZXRJZCgpLmVxdWFscyhzZXJ2aWNlSWRzXy5nZXRSdW50aW1lSWQoKSkpCi0gICAgICB7Ci0gICAgICAgIC8vQ2hlY2sgaWYgdGhpcyBzZXJ2aWNlIHJ1bnRpbWUgc3VwcG9ydHMgdGhlIHNlcnZlcgotICAgICAgICBpZiAoV2ViU2VydmljZVJ1bnRpbWVFeHRlbnNpb25VdGlsczIuZG9lc1NlcnZpY2VSdW50aW1lU3VwcG9ydFNlcnZlcihkZXNjLmdldElkKCksIHNlcnZpY2VJZHNfLmdldFNlcnZlcklkKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgdmFsaWRTZXJ2aWNlUnVudGltZXMuYWRkKGRlc2MuZ2V0SWQoKSk7Ci0gICAgICAgICAgaWYgKHByb2plY3QgIT0gbnVsbCAmJiBwcm9qZWN0LmV4aXN0cygpKSAgCi0gICAgICAgICAgewotICAgICAgICAgICAgU2V0IGZhY2V0VmVyc2lvbnMgPSBGYWNldFV0aWxzLmdldEZhY2V0c0ZvclByb2plY3QocHJvamVjdC5nZXROYW1lKCkpOwotICAgICAgICAgICAgaWYgKGZhY2V0VmVyc2lvbnMgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgRmFjZXRNYXRjaGVyIGZtID0gRmFjZXRNYXRjaENhY2hlLmdldEluc3RhbmNlKCkuZ2V0TWF0Y2hGb3JQcm9qZWN0KGZhbHNlLCBzZXJ2aWNlUnVudGltZXNbaV0sIHByb2plY3QuZ2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgaWYgKGZtLmlzTWF0Y2goKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIERlZmF1bHRSdW50aW1lVHJpcGxldCBkcnQgPSBuZXcgRGVmYXVsdFJ1bnRpbWVUcmlwbGV0KCk7Ci0gICAgICAgICAgICAgICAgZHJ0LnNldEZhY2V0TWF0Y2hlcihmbSk7Ci0gICAgICAgICAgICAgICAgZHJ0LnNldFByb2plY3ROYW1lKHByb2plY3QuZ2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBkcnQuc2V0UnVudGltZUlkKGRlc2MuZ2V0SWQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRydDsKLSAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgIH0KLSAgICAKLSAgICBpZiAodmFsaWRTZXJ2aWNlUnVudGltZXMuc2l6ZSgpID4gMCkKLSAgICB7Ci0gICAgICAvL1dlIGNvdWxkbid0IG1hdGNoIHRvIHRoZSBpbml0aWFsbHkgc2VsZWN0ZWQgcHJvamVjdCBzbyByZXR1cm4gdGhlIGZpcnN0IHZhbGlkIHJ1bnRpbWUuCi0gICAgICBEZWZhdWx0UnVudGltZVRyaXBsZXQgZHJ0ID0gbmV3IERlZmF1bHRSdW50aW1lVHJpcGxldCgpOwotICAgICAgZHJ0LnNldEZhY2V0TWF0Y2hlcihudWxsKTsKLSAgICAgIGRydC5zZXRQcm9qZWN0TmFtZShudWxsKTsKLSAgICAgIGRydC5zZXRSdW50aW1lSWQoKChTdHJpbmdbXSl2YWxpZFNlcnZpY2VSdW50aW1lcy50b0FycmF5KG5ldyBTdHJpbmdbMF0pKVswXSk7Ci0gICAgICByZXR1cm4gZHJ0OyAgICAgIAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy9UaGVyZSBhcmUgbm8gc2VydmljZSBydW50aW1lcyB0aGF0IG1hdGNoIHRoZSBmaXhlZCBydW50aW1lIGFuZCBzZXJ2ZXIuIEZhbGwgYmFjayB0byBvcmlnaW5hbCBhbGdvcml0aG0uCi0gICAgICBzZXJ2aWNlSWRzRml4ZWRfID0gZmFsc2U7Ci0gICAgICByZXR1cm4gZ2V0RGVmYXVsdFJ1bnRpbWUocHJvamVjdCwgc2VydmljZUlkc18uZ2V0VHlwZUlkKCksIGZhbHNlLCBzZXJ2aWNlSWRzXy5nZXRTZXJ2ZXJJZCgpKTsKLSAgICB9Ci0gIH0KLSAgCi0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEluaXRpYWxTZWxlY3Rpb24oSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKQotICB7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEluaXRpYWxQcm9qZWN0KElQcm9qZWN0IGluaXRpYWxQcm9qZWN0KQotICB7Ci0gICAgaW5pdGlhbFByb2plY3RfID0gaW5pdGlhbFByb2plY3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJUHJvamVjdCBnZXRJbml0aWFsUHJvamVjdCgpCi0gIHsKLSAgICByZXR1cm4gaW5pdGlhbFByb2plY3RfOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEluaXRpYWxDb21wb25lbnROYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gICAgLy9UT0RPIFRoaXMgbWV0aG9kIGFuZCBhbnkgbWFwcGluZ3MgdG8gaXQKLQkvLyBzaG91bGQgYmUgcmVtb3ZlZCBpZiBubyBsb25nZXIgbmVlZGVkLgotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoIFR5cGVSdW50aW1lU2VydmVyIGlkcyApCi0gIHsKLSAgICBzZXJ2aWNlSWRzXyA9IGlkczsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U2VydmljZUlkc0ZpeGVkKGJvb2xlYW4gYikKLSAgewotICAgIHNlcnZpY2VJZHNGaXhlZF8gPSBiOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBUeXBlUnVudGltZVNlcnZlciBnZXRTZXJ2aWNlVHlwZVJ1bnRpbWVTZXJ2ZXIoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZpY2VJZHNfOyAKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZVJ1bnRpbWVJZCgpCi0gIHsKLSAgICByZXR1cm4gc2VydmljZVJ1bnRpbWVJZF87Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgZ2VuZXJhdGVQcm94eV8uCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRHZW5lcmF0ZVByb3h5KCkKLSAgewotICAgIHJldHVybiBnZW5lcmF0ZVByb3h5XzsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIGdlbmVyYXRlUHJveHlfIFRoZSBnZW5lcmF0ZVByb3h5XyB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0ZVByb3h5KGJvb2xlYW4gZ2VuZXJhdGVQcm94eV8pCi0gIHsKLSAgICB0aGlzLmdlbmVyYXRlUHJveHlfID0gZ2VuZXJhdGVQcm94eV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZVByb2plY3ROYW1lKCkKLSAgewotICAgIHJldHVybiBzZXJ2aWNlUHJvamVjdE5hbWVfOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZUVhclByb2plY3ROYW1lKCkKLSAgewotICAgIHJldHVybiBzZXJ2aWNlRWFyUHJvamVjdE5hbWVfOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VDb21wb25lbnRUeXBlKCkKLSAgewotICAgIHJldHVybiBzZXJ2aWNlQ29tcG9uZW50VHlwZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldFNlcnZpY2VOZWVkRUFSKCkKLSAgewotICAgIHJldHVybiBzZXJ2aWNlTmVlZEVBUl87Ci0gIH0KLSAgCi0gIC8vIFRoaXMgaXMgZm9yIHRoZSBBbnQgc2NlbmFyaW8gd2hlcmUgdGhlIHNlcnZpY2UgcHJvamVjdCBuYW1lIGNhbiBiZSBzZXQgaW4gdGhlIHByb3BlcnR5IGZpbGUuCi0gIC8vIElmIHRoZSB1c2VyIGhhcyBzZXQgdGhlIFNlcnZpY2VQcm9qZWN0TmFtZSB1c2UgaXQgZm9yIGRlZmF1bHRpbmcgcHVycG9zZXMKLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVByb2plY3ROYW1lKFN0cmluZyBuYW1lKQotICB7Ci0JICBzZXJ2aWNlUHJvamVjdE5hbWVfID0gbmFtZTsKLSAgfQotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy90ZXN0L0xhdW5jaEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL3dpZGdldHMvdGVzdC9MYXVuY2hGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjZkZjg4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy90ZXN0L0xhdW5jaEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzLnRlc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uQ29uZGl0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkJvb2xlYW5GcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TaW1wbGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuV1NFeHBsb3JlckxhdW5jaGVyQ29tbWFuZDsKLQotCi1wdWJsaWMgY2xhc3MgTGF1bmNoRnJhZ21lbnQgZXh0ZW5kcyBCb29sZWFuRnJhZ21lbnQKLXsKLSAgcHJpdmF0ZSBib29sZWFuIHB1Ymxpc2hUb1B1YmxpY1VERElfOyAgCi0gIHByaXZhdGUgYm9vbGVhbiBwdWJsaXNoVG9Qcml2YXRlVURESV87Ci0gIAotICBwdWJsaWMgTGF1bmNoRnJhZ21lbnQoKQotICB7Ci0gICAgQ29uZGl0aW9uIGNvbmRpdGlvbiA9IG5ldyBDb25kaXRpb24oKQotICAgIHsKLSAgICAgIHB1YmxpYyBib29sZWFuIGV2YWx1YXRlKCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIChwdWJsaXNoVG9QdWJsaWNVRERJXyB8fCBwdWJsaXNoVG9Qcml2YXRlVURESV8pOwotICAgICAgfQotICAgIH07Ci0gICAgc2V0Q29uZGl0aW9uKCBjb25kaXRpb24gKTsKLSAgICBzZXRUcnVlRnJhZ21lbnQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IFdTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQoKSwgIiIgKSApOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRQdWJsaXNoVG9QdWJsaWNVRERJKGJvb2xlYW4gcHVibGlzaFRvUHVibGljVURESSkKLSAgewotICAgIHB1Ymxpc2hUb1B1YmxpY1VERElfID0gcHVibGlzaFRvUHVibGljVURESTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0UHVibGlzaFRvUHJpdmF0ZVVEREkoYm9vbGVhbiBwdWJsaXNoVG9Qcml2YXRlVURESSkKLSAgewotICAJcHVibGlzaFRvUHJpdmF0ZVVERElfID0gcHVibGlzaFRvUHJpdmF0ZVVEREk7Ci0gIH0KLSAgIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL3Rlc3QvU2VydmljZVRlc3RGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jcmVhdGlvbi91aS93aWRnZXRzL3Rlc3QvU2VydmljZVRlc3RGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzBlMTUzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy90ZXN0L1NlcnZpY2VUZXN0RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNyZWF0aW9uLnVpLndpZGdldHMudGVzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuV1NETFRlc3RMYXVuY2hDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5Db25kaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkJvb2xlYW5GcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNpbXBsZUZyYWdtZW50OwotCi0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlVGVzdEZyYWdtZW50IGV4dGVuZHMgQm9vbGVhbkZyYWdtZW50Ci17Ci0gIHByaXZhdGUgYm9vbGVhbiB0ZXN0U2VydmljZTsKLSAgcHJpdmF0ZSBib29sZWFuIGdlbmVyYXRlUHJveHk7Ci0gIAotICAKLSAgcHVibGljIFNlcnZpY2VUZXN0RnJhZ21lbnQoIFN0cmluZyBpZCApCi0gIHsKLSAgCVNlcXVlbmNlRnJhZ21lbnQgdGVzdFJvb3QgPSBuZXcgU2VxdWVuY2VGcmFnbWVudCgpOwotICAJQ29uZGl0aW9uIGNvbmRpdGlvbiA9IG5ldyBDb25kaXRpb24oKQotICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0U2VydmljZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgc2V0Q29uZGl0aW9uKCBjb25kaXRpb24gKTsKLSAgICAKLSAgICB0ZXN0Um9vdC5hZGQoIG5ldyBTaW1wbGVGcmFnbWVudCggbmV3IFdlYlNlcnZpY2VUZXN0RGVmYXVsdGluZ0NvbW1hbmQoKSwgIiIgKSApOwotICAgIHRlc3RSb290LmFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBpZCApICk7Ci0gICAgc2V0VHJ1ZUZyYWdtZW50KCB0ZXN0Um9vdCApOwotICAgICAgCi0gIH0KLSAKLSAgCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICB7Ci0gIAkKLSAgCWRhdGFSZWdpc3RyeS5hZGRNYXBwaW5nKFdlYlNlcnZpY2VUZXN0RGVmYXVsdGluZ0NvbW1hbmQuY2xhc3MsICJUZXN0SUQiLFdTRExUZXN0TGF1bmNoQ29tbWFuZC5jbGFzcyk7Ci0gIAkKLSAgCS8vZnJvbSB0aGUgd2l6YXJkIAotICAJZGF0YVJlZ2lzdHJ5LmFkZE1hcHBpbmcoU2VydmljZVRlc3RXaWRnZXQuY2xhc3MsICJUZXN0SUQiLFdTRExUZXN0TGF1bmNoQ29tbWFuZC5jbGFzcyk7Ci0gIAlkYXRhUmVnaXN0cnkuYWRkTWFwcGluZyhXZWJTZXJ2aWNlVGVzdERlZmF1bHRpbmdDb21tYW5kLmNsYXNzLCAiRXh0ZXJuYWxCcm93c2VyIixXU0RMVGVzdExhdW5jaENvbW1hbmQuY2xhc3MpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0ZVByb3h5KGJvb2xlYW4gZ2VuZXJhdGVQcm94eSkKLSAgewotICAJdGhpcy5nZW5lcmF0ZVByb3h5ID0gZ2VuZXJhdGVQcm94eTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0R2VuZXJhdGVQcm94eSgpCi0gIHsKLSAgCXJldHVybiBnZW5lcmF0ZVByb3h5OwotICB9Ci0gIAotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSB0ZXN0U2VydmljZS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRlc3RTZXJ2aWNlKCBib29sZWFuIHRlc3RTZXJ2aWNlICkKLSAgewotICAgIHRoaXMudGVzdFNlcnZpY2UgPSB0ZXN0U2VydmljZTsKLSAgfQotCi0gIAotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy90ZXN0L1NlcnZpY2VUZXN0V2lkZ2V0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL3dpZGdldHMvdGVzdC9TZXJ2aWNlVGVzdFdpZGdldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjE4NmYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy90ZXN0L1NlcnZpY2VUZXN0V2lkZ2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jcmVhdGlvbi51aS53aWRnZXRzLnRlc3Q7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLkNvbnN1bXB0aW9uVUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2lkZ2V0cy50ZXN0LldTRExUZXN0TGF1bmNoQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5UeXBlUnVudGltZVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLlVJVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tYm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnNlbGVjdGlvbi5TZWxlY3Rpb25MaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotCi0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlVGVzdFdpZGdldCBleHRlbmRzIFNpbXBsZVdpZGdldERhdGFDb250cmlidXRvcgotewotICBwcml2YXRlIFN0cmluZyBjcmVhdGVQbHVnaW5JZF8gPSAib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpIjsKLQotICBwcml2YXRlIENvbWJvIHRlc3RUeXBlQ29tYm9fOwotICAvKkNPTlRFWFRfSUQgUFNUUDAwMDEgZm9yIHRoZSBUZXN0IFR5cGUgQ29tYm8gYm94IG9mIHRoZSBTZXJ2aWNlIFRlc3QgUGFnZSovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUFNUUF9DT01CT0JPWF9URVNUID0gIlBTVFAwMDAxIjsKLQotICBwcml2YXRlIEJ1dHRvbiBsYXVuY2hCdXR0b25fOwotICAvKkNPTlRFWFRfSUQgUFNUUDAwMDIgZm9yIHRoZSBsYXVuY2ggYnV0dG9uIG9mIHRoZSBTZXJ2aWNlIFRlc3QgUGFnZSovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUFNUUF9MQVVOQ0hfQlVUVE9OID0gIlBTVFAwMDAyIjsKLQotICAKLSAgcHJpdmF0ZSBTZWxlY3Rpb25MaXN0IGZhY2lsaXRpZXNfOwotICAKLSAgcHJpdmF0ZSBTdHJpbmcgc2VydmljZVNlcnZlckluc3RhbmNlSWQgPSBudWxsOwotICAKLSAgcHVibGljIFdpZGdldERhdGFFdmVudHMgYWRkQ29udHJvbHMoIENvbXBvc2l0ZSBwYXJlbnQsIExpc3RlbmVyIHN0YXR1c0xpc3RlbmVyICkKLSAgewotICAgIFVJVXRpbHMgICAgICB1aVV0aWxzICA9IG5ldyBVSVV0aWxzKGNyZWF0ZVBsdWdpbklkXyApOwotICAgICAgICAKLSAgICBDb21wb3NpdGUgdGVzdENvbXBvc2l0ZSA9IHVpVXRpbHMuY3JlYXRlQ29tcG9zaXRlKCBwYXJlbnQsIDMsIDAsIDAgKTsKLSAgICAKLSAgICB0ZXN0VHlwZUNvbWJvXyA9IHVpVXRpbHMuY3JlYXRlQ29tYm8oIHRlc3RDb21wb3NpdGUsIENvbnN1bXB0aW9uVUlNZXNzYWdlcy5MQUJFTF9URVNUX1RZUEVTLAotICAgIAkJCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BTVFBfQ09NQk9CT1hfVEVTVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORk9QT1BfUFNUUF9DT01CT0JPWF9URVNULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgfCBTV1QuUkVBRF9PTkxZICk7Ci0gICAgCi0gICAgbGF1bmNoQnV0dG9uXyA9IHVpVXRpbHMuY3JlYXRlUHVzaEJ1dHRvbiggdGVzdENvbXBvc2l0ZSwgQ29uc3VtcHRpb25VSU1lc3NhZ2VzLkJVVFRPTl9MQVVOQ0hfU0VSVklDRV9URVNULAotICAgIAkJCQkJCQkJCUNvbnN1bXB0aW9uVUlNZXNzYWdlcy5UT09MVElQX1BTVFBfTEFVTkNIX0JVVFRPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORk9QT1BfUFNUUF9MQVVOQ0hfQlVUVE9OICk7Ci0gICAgbGF1bmNoQnV0dG9uXy5hZGRTZWxlY3Rpb25MaXN0ZW5lciggbmV3IFNlbGVjdGlvbkFkYXB0ZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKCBTZWxlY3Rpb25FdmVudCBldmVudCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUxhdW5jaEJ1dHRvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgIAotICAgICAKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAKLSAgcHJpdmF0ZSBUeXBlUnVudGltZVNlcnZlciBzZXJ2aWNlaWRzOwotICBwcml2YXRlIFN0cmluZyBzZXJ2ZXJQcm9qZWN0OwotICBwcml2YXRlIFN0cmluZyBtb2R1bGU7Ci0gIHByaXZhdGUgU3RyaW5nIHdzZGxVUkk7Ci0gIHByaXZhdGUgU3RyaW5nIGxhdW5jaGVkU2VydmljZVRlc3ROYW1lID0gIiI7Ci0gIHByaXZhdGUgSUVudmlyb25tZW50IGVudjsKLSAgcHJpdmF0ZSBMaXN0IGVuZHBvaW50czsKLSAgCi0gIHByaXZhdGUgdm9pZCBoYW5kbGVMYXVuY2hCdXR0b24oKQotICB7Ci0JLy8gU3BsaXQgdXAgdGhlIHByb2plY3QgYW5kIG1vZHVsZQotCWludCBwID0gc2VydmVyUHJvamVjdC5pbmRleE9mKCIvIik7Ci0JaWYgKHAgIT0gLTEpewotCQltb2R1bGUgPSBzZXJ2ZXJQcm9qZWN0LnN1YnN0cmluZyhwKzEpOwotCQlzZXJ2ZXJQcm9qZWN0ID0gc2VydmVyUHJvamVjdC5zdWJzdHJpbmcoMCxwKTsKLQl9Ci0gIAkKLSAgCVN0cmluZyB0ZXN0SUQgPSB0ZXN0VHlwZUNvbWJvXy5nZXRUZXh0KCk7Ci0gIAlsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZSA9IHRlc3RJRDsKLSAgCVdTRExUZXN0TGF1bmNoQ29tbWFuZCB3dGxjID0gbmV3IFdTRExUZXN0TGF1bmNoQ29tbWFuZCgpOwotICAJd3RsYy5zZXRUZXN0SUQodGVzdElEKTsKLSAgCXd0bGMuc2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKHNlcnZpY2VpZHMpOwotCSAgd3RsYy5zZXRTZXJ2aWNlU2VydmVySW5zdGFuY2VJZChzZXJ2aWNlU2VydmVySW5zdGFuY2VJZCk7Ci0gIAl3dGxjLnNldFNlcnZlclByb2plY3Qoc2VydmVyUHJvamVjdCk7Ci0JICB3dGxjLnNldFNlcnZlck1vZHVsZShtb2R1bGUpOwotICAJd3RsYy5zZXRXc2RsVVJJKHdzZGxVUkkpOwotICAJd3RsYy5zZXRFeHRlcm5hbEJyb3dzZXIodHJ1ZSk7Ci0gIAl3dGxjLnNldEVuZHBvaW50KGVuZHBvaW50cyk7Ci0gIAl3dGxjLnNldEVudmlyb25tZW50KCBlbnYgKTsKLSAgCXd0bGMuZXhlY3V0ZSggbnVsbCwgbnVsbCApOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlVGVzdEZhY2lsaXRpZXMoIFNlbGVjdGlvbkxpc3QgZmFjaWxpdGllcyApCi0gIHsKLSAgICBmYWNpbGl0aWVzXyA9IGZhY2lsaXRpZXM7Ci0gICAgdGVzdFR5cGVDb21ib18uc2V0SXRlbXMoIGZhY2lsaXRpZXMuZ2V0TGlzdCgpICk7Ci0gICAgdGVzdFR5cGVDb21ib18uc2VsZWN0KCBmYWNpbGl0aWVzLmdldEluZGV4KCkgKTsKLSAgfQotICAKLSAgcHVibGljIFNlbGVjdGlvbkxpc3QgZ2V0U2VydmljZVRlc3RGYWNpbGl0aWVzKCkKLSAgewotICAgIGZhY2lsaXRpZXNfLnNldEluZGV4KCB0ZXN0VHlwZUNvbWJvXy5nZXRTZWxlY3Rpb25JbmRleCgpICk7Ci0gICAgcmV0dXJuIGZhY2lsaXRpZXNfOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRUZXN0SUQoKQotICB7Ci0gIAlyZXR1cm4gdGVzdFR5cGVDb21ib18uZ2V0VGV4dCgpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRXc2RsVVJJKFN0cmluZyB3c2RsVVJJKQotICB7Ci0gIAl0aGlzLndzZGxVUkkgPSB3c2RsVVJJOwotICB9Ci0gICAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZlclByb2plY3QoU3RyaW5nIHNlcnZlclByb2plY3QpCi0gIHsKLSAgICB0aGlzLnNlcnZlclByb2plY3QgPSBzZXJ2ZXJQcm9qZWN0OwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVR5cGVSdW50aW1lU2VydmVyKFR5cGVSdW50aW1lU2VydmVyIHNlcnZpY2VpZHMpCi0gIHsKLSAgICB0aGlzLnNlcnZpY2VpZHMgPSBzZXJ2aWNlaWRzOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldExhdW5jaGVkU2VydmljZVRlc3ROYW1lKCkKLSAgewotICAgIHJldHVybiBsYXVuY2hlZFNlcnZpY2VUZXN0TmFtZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEVudmlyb25tZW50KElFbnZpcm9ubWVudCBlbnYpCi0gIHsKLSAgCXRoaXMuZW52ID0gZW52OwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RW5kcG9pbnQoU3RyaW5nIGVuZHBvaW50KQotICB7Ci0gICAgaWYgKGVuZHBvaW50ICE9IG51bGwgJiYgZW5kcG9pbnQubGVuZ3RoKCkgPiAwKQotICAgIHsKLSAgICAgIFZlY3RvciB2ID0gbmV3IFZlY3RvcigpOwotICAgICAgdi5hZGQoZW5kcG9pbnQpOwotICAgICAgc2V0RW5kcG9pbnRzKHYpOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RW5kcG9pbnRzKExpc3QgZW5kcG9pbnRzKQotICB7Ci0gICAgdGhpcy5lbmRwb2ludHMgPSBlbmRwb2ludHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VTZXJ2ZXJJbnN0YW5jZUlkKFN0cmluZyBzc0luc3RhbmNlSWQpewotCSAgdGhpcy5zZXJ2aWNlU2VydmVySW5zdGFuY2VJZCA9IHNzSW5zdGFuY2VJZDsKLSAgfQotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy90ZXN0L1dlYlNlcnZpY2VUZXN0RGVmYXVsdGluZ0NvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY3JlYXRpb24vdWkvd2lkZ2V0cy90ZXN0L1dlYlNlcnZpY2VUZXN0RGVmYXVsdGluZ0NvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQxZDZhZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NyZWF0aW9uL3VpL3dpZGdldHMvdGVzdC9XZWJTZXJ2aWNlVGVzdERlZmF1bHRpbmdDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qCi0gKiBDcmVhdGVkIG9uIEFwciAxNSwgMjAwNAotICoKLSAqIFRPRE8gVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgZmlsZSBnbyB0bwotICogV2luZG93IC0gUHJlZmVyZW5jZXMgLSBKYXZhIC0gQ29kZSBHZW5lcmF0aW9uIC0gQ29kZSBhbmQgQ29tbWVudHMKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY3JlYXRpb24udWkud2lkZ2V0cy50ZXN0OwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5leHQudGVzdC5XZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5wbHVnaW4uV2ViU2VydmljZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5zZWxlY3Rpb24uU2VsZWN0aW9uTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLS8qKgotICogQGF1dGhvciBnaWxiZXJ0YQotICoKLSAqIFRPRE8gVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgdHlwZSBjb21tZW50IGdvIHRvCi0gKiBXaW5kb3cgLSBQcmVmZXJlbmNlcyAtIEphdmEgLSBDb2RlIEdlbmVyYXRpb24gLSBDb2RlIGFuZCBDb21tZW50cwotICovCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZVRlc3REZWZhdWx0aW5nQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIAotewotICAKLSAgcHJpdmF0ZSBTZWxlY3Rpb25MaXN0IHNlcnZpY2VUZXN0RmFjaWxpdGllczsJCi0gIHByaXZhdGUgU3RyaW5nW10gdGVzdElEOwotICAKLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsgICAgCi0gIAlTY2VuYXJpb0NvbnRleHQgc2NlbmFyaW9Db250ZXh0ID0gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNjZW5hcmlvQ29udGV4dCgpLmNvcHkoKTsKLSAgCXRlc3RJRCA9IHNjZW5hcmlvQ29udGV4dC5nZXROb25KYXZhVGVzdFNlcnZpY2UoKTsKLSAgCVN0cmluZ1tdIHRlc3RUeXBlcyA9IHNjZW5hcmlvQ29udGV4dC5nZXRXZWJTZXJ2aWNlVGVzdFR5cGVzKCk7Ci0gIAkgIAkKLSAgCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgCVdlYlNlcnZpY2VUZXN0UmVnaXN0cnkgd3N0dFJlZ2lzdHJ5ID0gV2ViU2VydmljZVRlc3RSZWdpc3RyeS5nZXRJbnN0YW5jZSgpOwotICAJCi0gICAgCi0gIAlWZWN0b3Igd3NkbE5hbWVzID0gbmV3IFZlY3RvcigpOwotICAJZm9yKGludCBpID0wIDtpPHRlc3RUeXBlcy5sZW5ndGg7aSsrKXsKLSAgCSAgV2ViU2VydmljZVRlc3RFeHRlbnNpb24gd3NjdGUgPSAoV2ViU2VydmljZVRlc3RFeHRlbnNpb24pd3N0dFJlZ2lzdHJ5LmdldFdlYlNlcnZpY2VFeHRlbnNpb25zQnlOYW1lKHRlc3RUeXBlc1tpXSk7ICAJCi0gIAkgIGlmKHdzY3RlLnRlc3RXU0RMKCkpewotICAJICAgIHdzZGxOYW1lcy5hZGRFbGVtZW50KHRlc3RUeXBlc1tpXSk7Ci0gIAkgIH0KLSAgCX0KLSAgICAKLSAgCVN0cmluZyBqYXZhTmFtZXNBcnJheVtdID0gbmV3IFN0cmluZ1t3c2RsTmFtZXMuc2l6ZSgpXTsKLSAgCUVudW1lcmF0aW9uIGUgPSB3c2RsTmFtZXMuZWxlbWVudHMoKTsKLSAgCWludCBpID0gMDsKLSAgCXdoaWxlKGUuaGFzTW9yZUVsZW1lbnRzKCkpewotICAgICAgamF2YU5hbWVzQXJyYXlbaV0gPSAoU3RyaW5nKWUubmV4dEVsZW1lbnQoKTsKLSAgCSAgaSsrOwotICAJfQotICAJCi0gIAkKLSAgCXNlcnZpY2VUZXN0RmFjaWxpdGllcyA9IG5ldyBTZWxlY3Rpb25MaXN0KGphdmFOYW1lc0FycmF5LDApOyAgCQotICAJCi0gCXJldHVybiBzdGF0dXM7Ci0gIH0KLQotICBwdWJsaWMgU2VsZWN0aW9uTGlzdCBnZXRTZXJ2aWNlVGVzdEZhY2lsaXRpZXMoKQotICB7Ci0gIAlyZXR1cm4gc2VydmljZVRlc3RGYWNpbGl0aWVzOwotICB9Ci0KLSAgcHVibGljIFN0cmluZ1tdIGdldFRlc3RJRCgpCi0gIHsKLSAgCXJldHVybiB0ZXN0SUQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldEV4dGVybmFsQnJvd3NlcigpCi0gIHsKLSAgCXJldHVybiBmYWxzZTsKLSAgfQotCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS8uY2xhc3NwYXRoIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5Ly5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMTY1ZWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5Ly5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYy8iLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5Ly5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ODUzZWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5Ly5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi10ZW1wLmZvbGRlcgotdWRkaXJlZ2lzdHJ5LmphcgotQGRvdAotc3JjLnppcAotamF2YUNvbXBpbGVyLi4uYXJncwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5Ly5wcm9qZWN0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5Ly5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjI1NjJkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnk8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYjAyOWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSNNb24gSmFuIDMwIDEwOjM2OjU4IEVTVCAyMDA2Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS40Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFubm90YXRpb25TdXBlckludGVyZmFjZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hdXRvYm94aW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbXB0eVN0YXRlbWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maWVsZEhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxQYXJhbWV0ZXJCb3VuZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsbHlCbG9ja05vdENvbXBsZXRpbmdOb3JtYWxseT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZvcmJpZGRlblJlZmVyZW5jZT1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5oaWRkZW5DYXRjaEJsb2NrPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wYXRpYmxlTm9uSW5oZXJpdGVkSW50ZXJmYWNlTWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wbGV0ZUVudW1Td2l0Y2g9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluZGlyZWN0U3RhdGljQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5sb2NhbFZhcmlhYmxlSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5tZXRob2RXaXRoQ29uc3RydWN0b3JOYW1lPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ0RlcHJlY2F0ZWRBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nT3ZlcnJpZGVBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nU2VyaWFsVmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vRWZmZWN0QXNzaWdubWVudD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vSW1wbGljaXRTdHJpbmdDb252ZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9uRXh0ZXJuYWxpemVkU3RyaW5nTGl0ZXJhbD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ub3ZlcnJpZGluZ1BhY2thZ2VEZWZhdWx0TWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucG9zc2libGVBY2NpZGVudGFsQm9vbGVhbkFzc2lnbm1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnNwZWNpYWxQYXJhbWV0ZXJIaWRpbmdGaWVsZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdGF0aWNBY2Nlc3NSZWNlaXZlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN1cHByZXNzV2FybmluZ3M9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zeW50aGV0aWNBY2Nlc3NFbXVsYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnR5cGVQYXJhbWV0ZXJIaWRpbmc9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmNoZWNrZWRUeXBlT3BlcmF0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5kb2N1bWVudGVkRW1wdHlCbG9jaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5oYW5kbGVkV2FybmluZ1Rva2VuPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlFbHNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeVR5cGVDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5xdWFsaWZpZWRGaWVsZEFjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uV2hlbk92ZXJyaWRpbmc9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkSW1wb3J0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkTG9jYWw9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXI9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5JbXBsZW1lbnRpbmdBYnN0cmFjdD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuT3ZlcnJpZGluZ0NvbmNyZXRlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFByaXZhdGVNZW1iZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS52YXJhcmdzQXJndW1lbnROZWVkQ2FzdD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS4zCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjY5YjRkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6NDA6NDkgRVNUIDIwMDYKLWNvbXBpbGVycy5wLmRlcHJlY2F0ZWQ9MQotY29tcGlsZXJzLnAubm8tcmVxdWlyZWQtYXR0PTAKLWNvbXBpbGVycy5wLm5vdC1leHRlcm5hbGl6ZWQtYXR0PTEKLWNvbXBpbGVycy5wLnVua25vd24tYXR0cmlidXRlPTAKLWNvbXBpbGVycy5wLnVua25vd24tY2xhc3M9MAotY29tcGlsZXJzLnAudW5rbm93bi1lbGVtZW50PTEKLWNvbXBpbGVycy5wLnVua25vd24tcmVzb3VyY2U9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1leC1wb2ludHM9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1pbXBvcnQ9MAotY29tcGlsZXJzLnVzZS1wcm9qZWN0PXRydWUKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZGZkODkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJVBMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5OyBzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuNDAwLnF1YWxpZmllcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS5wbHVnaW4uV2ViU2VydmljZVVERElSZWdpc3RyeVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkucGx1Z2luO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzLmJpbmRpbmc7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LndpemFyZDt4LWludGVybmFsOj10cnVlCi1JbXBvcnQtUGFja2FnZTogY29tLmlibS5pY3UudXRpbDsgdmVyc2lvbj0iMy44IgotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLnVpO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cy51aTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnY7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3JrcztidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L2Fib3V0Lmh0bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L2J1aWxkLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFkZWMzMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotc291cmNlLi4gPSBzcmMvCi1iaW4uaW5jbHVkZXMgPSAuLFwKLSAgICAgICAgICAgICAgIGljb25zLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvaWNvbnMvcmVnaXN0cnkuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L2ljb25zL3JlZ2lzdHJ5LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI0M2NhZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvaWNvbnMvcmVnaXN0cnkuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L2ljb25zL3dpemJhbi91ZGRpcHJpdmF0ZWNvbmZpZ193aXoucG5nIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L2ljb25zL3dpemJhbi91ZGRpcHJpdmF0ZWNvbmZpZ193aXoucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmQxNTVlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9pY29ucy93aXpiYW4vdWRkaXByaXZhdGVjb25maWdfd2l6LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9wbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwYWZiNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNzA1MTYgICAxNjMyNjYgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIE1lc3NhZ2VzIGluIHBsdWdpbi54bWwuCi0jCi1QTFVHSU5fTkFNRT1XZWIgU2VydmljZXMgVW5pdmVyc2FsIERlc2NyaXB0aW9uIERpc2NvdmVyeSBhbmQgSW50ZWdyYXRpb24gUmVnaXN0cnkKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotCi1QTFVHSU5fTkVXX1dJWkFSRF9OQU1FX1dTX1VOSVRfVEVTVF9VRERJPVVuaXQgVGVzdCBVRERJCi0KLVhQX1BSSVZBVEVfVURESV9SRUdJU1RSWV9UWVBFUz1Qcml2YXRlIFVEREkgUmVnaXN0cnkgVHlwZXMKLVBSSVZBVEVfVURESV9SRUdJU1RSWV9ERVNDPUNyZWF0ZSBhbmQgY29uZmlndXJlIGEgdW5pdCB0ZXN0IFVEREkgcmVnaXN0cnkKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YWM3NTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotCi08cGx1Z2luPgotCi0gICA8IS0tIFRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsIGFuZCBsaWtlbHkgdG8gYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAtLT4KLSAgIDxleHRlbnNpb24tcG9pbnQgaWQ9InByaXZhdGVVRERJUmVnaXN0cnlUeXBlIiBuYW1lPSIlWFBfUFJJVkFURV9VRERJX1JFR0lTVFJZX1RZUEVTIi8+Ci0KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkucHJpdmF0ZVVERElSZWdpc3RyeVR5cGUiPgotICAgICAgPHByaXZhdGVVRERJUmVnaXN0cnlUeXBlCi0gICAgICAgICAgICBuYW1lPSIlUFJJVkFURV9VRERJX1JFR0lTVFJZX1RZUEVfSU1QTCIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LndpemFyZC5Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZUltcGwiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aXphcmQuUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVJbXBsIj4KLSAgICAgIDwvcHJpdmF0ZVVERElSZWdpc3RyeVR5cGU+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5uZXdXaXphcmRzIj4KLSAgICAgIDx3aXphcmQKLSAgICAgICAgICAgIG5hbWU9IiVQTFVHSU5fTkVXX1dJWkFSRF9OQU1FX1dTX1VOSVRfVEVTVF9VRERJIgotICAgICAgICAgICAgaWNvbj0iaWNvbnMvcmVnaXN0cnkuZ2lmIgotICAgICAgICAgICAgY2F0ZWdvcnk9Im9yZy5lY2xpcHNlLmpzdC53cy51aS5uZXciCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuRHluYW1pY1dpemFyZCIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LndpZGdldHMuYmluZGluZy5Qcml2YXRlVURESVdpZGdldEJpbmRpbmciPgotICAgICAgICAgICAgPGRlc2NyaXB0aW9uPgotICAgICAgICAgICAgJVBSSVZBVEVfVURESV9SRUdJU1RSWV9ERVNDCi0gICAgICAgICA8L2Rlc2NyaXB0aW9uPgotICAgICAgPC93aXphcmQ+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZHluYW1pY1dpemFyZCI+Ci0gICAgICA8ZHluYW1pY1dpemFyZAotICAgICAgICAgICAgbmFtZT0iJVBMVUdJTl9ORVdfV0laQVJEX05BTUVfV1NfVU5JVF9URVNUX1VEREkiCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzLmJpbmRpbmcuUHJpdmF0ZVVERElXaWRnZXRCaW5kaW5nIgotICAgICAgICAgICAgaWNvbmJhbm5lcj0iaWNvbnMvd2l6YmFuL3VkZGlwcml2YXRlY29uZmlnX3dpei5wbmciCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzLmJpbmRpbmcuUHJpdmF0ZVVERElXaWRnZXRCaW5kaW5nIj4KLSAgICAgIDwvZHluYW1pY1dpemFyZD4KLSAgIDwvZXh0ZW5zaW9uPgotICAgPCEtLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLm5ld1dpemFyZHMiPgotICAgICAgPHdpemFyZAotICAgICAgICAgICAgbmFtZT0iJVBMVUdJTl9ORVdfV0laQVJEX05BTUVfV1NfVU5JVF9URVNUX1VEREkiCi0gICAgICAgICAgICBpY29uPSJpY29ucy9yZWdpc3RyeS5naWYiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0LndzLnVpLm5ldyIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LndpemFyZC5Qcml2YXRlVURESVdpemFyZCIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LndpemFyZC5Qcml2YXRlVURESVdpemFyZCI+Ci0gICAgICAgICA8ZGVzY3JpcHRpb24+Ci0gICAgICAgICAgICAlUExVR0lOX05FV19XSVpBUkRfREVTQ19XU19VTklUX1RFU1RfVURESQotICAgICAgICAgPC9kZXNjcmlwdGlvbj4KLSAgICAgICAgIDxzZWxlY3Rpb24KLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2UiPgotICAgICAgICAgPC9zZWxlY3Rpb24+Ci0gICAgICA8L3dpemFyZD4KLSAgIDwvZXh0ZW5zaW9uPgotICAgLS0+Ci08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS9VRERJUmVnaXN0cnkucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS9VRERJUmVnaXN0cnkucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBkMjZiYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91ZGRpcmVnaXN0cnkvVURESVJlZ2lzdHJ5LnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgUHJpdmF0ZVVERElDb25maWdQYWdlCi0jCi1QQUdFX1RJVExFX1BSSVZBVEVfVURESV9DT05GSUc9VW5pdCBUZXN0IFVEREkgUmVnaXN0cnkgQ29uZmlndXJhdGlvbgotUEFHRV9ERVNDX1BSSVZBVEVfVURESV9DT05GSUc9Q29uZmlndXJlIHRoZSB1bml0IHRlc3QgVURESSByZWdpc3RyeS4KLQotIwotIyBUb29sdGlwIGZvciBQcml2YXRlVURESUNvbmZpZ1BhZ2UKLSMKLVRPT0xUSVBfUFVQUl9QUklWQVRFX1VERElfUEFHRT1EZXBsb3kgb3IgcmVtb3ZlIGEgVW5pdCBUZXN0IFVEREkgUmVnaXN0cnkKLVRPT0xUSVBfUFVQUl9QUklWQVRFX1VERElfVFlQRT1DaG9vc2UgdGhlIHR5cGUgb2YgVW5pdCBUZXN0IFVEREkgUmVnaXN0cnkgeW91IHdhbnQgdG8gZGVwbG95Ci1UT09MVElQX1BVUFJfREVQTE9ZX1BSSVZBVEVfVUREST1EZXBsb3kgYSBVbml0IFRlc3QgVURESSBSZWdpc3RyeQotVE9PTFRJUF9QVVBSX1VQREFURV9QUklWQVRFX1VEREk9VXBkYXRlIHRoZSBleGlzdGluZyBVbml0IFRlc3QgVURESSBSZWdpc3RyeQotVE9PTFRJUF9QVVBSX1JFTU9WRV9QUklWQVRFX1VEREk9UmVtb3ZlIHRoZSBleGlzdGluZyBVbml0IFRlc3QgVURESSBSZWdpc3RyeQotCi0jCi0jIENvbW1vbiB3aXphcmQgc3RyaW5ncy4KLSMKLUxBQkVMX1BSSVZBVEVfVURESV9SRUdJU1RSWV9UWVBFUz1Qcml2YXRlIFVEREkgUmVnaXN0cnkgdHlwZToKLUJVVFRPTl9ERVBMT1lfVURESV9SRUdJU1RSWT1EZXBsb3kgdGhlIFVuaXQgVGVzdCBVRERJIFJlZ2lzdHJ5Ci1CVVRUT05fVVBEQVRFX1VERElfUkVHSVNUUlk9VXBkYXRlIHRoZSBwcmV2aW91c2x5IGRlcGxveWVkIFVEREkgcmVnaXN0cnkKLUJVVFRPTl9SRU1PVkVfVURESV9SRUdJU1RSWT1SZW1vdmUgdGhlIHByZXZpb3VzbHkgZGVwbG95ZWQgVURESSByZWdpc3RyeQotCi0jCi0jIFdpemFyZCBwYWdlIHRhc2sgbGFiZWxzIGFuZCBkZXNjcmlwdGlvbnMKLSMgKHVzZWQgb25seSBmb3IgcHJvZ3Jlc3MgaW5kaWNhdGlvbikuCi0jCi0KLSMKLSMgRGlhbG9nIG1lc3NhZ2VzCi0jCi0KLSMKLSMgUHJvZ3Jlc3MgbWVzc2FnZXMKLSMKLQotIwotIyBXYXJuaW5nIG1lc3NhZ2VzCi0jCi0KLSMKLSMgRXJyb3IgbWVzc2FnZXMKLSMKLU1TR19FUlJPUl9OT19VRERJX1JFR0lTVFJZX0FWQUlMQUJMRT1JV0FCMDM2M0UgTm8gVURESSByZWdpc3RyeSBhdmFpbGFibGUuCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91ZGRpcmVnaXN0cnkvVURESVJlZ2lzdHJ5TWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS9VRERJUmVnaXN0cnlNZXNzYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTI5ZTg4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS9VRERJUmVnaXN0cnlNZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotCi1wdWJsaWMgZmluYWwgY2xhc3MgVURESVJlZ2lzdHJ5TWVzc2FnZXMgZXh0ZW5kcyBOTFMgewotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5IjsvLyROT04tTkxTLTEkCi0KLQlwcml2YXRlIFVERElSZWdpc3RyeU1lc3NhZ2VzKCkgewotCQkvLyBEbyBub3QgaW5zdGFudGlhdGUKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUdFX1RJVExFX1BSSVZBVEVfVURESV9DT05GSUc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUEFHRV9ERVNDX1BSSVZBVEVfVURESV9DT05GSUc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QVVBSX1BSSVZBVEVfVURESV9QQUdFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFVQUl9QUklWQVRFX1VERElfVFlQRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BVUFJfREVQTE9ZX1BSSVZBVEVfVURESTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BVUFJfVVBEQVRFX1BSSVZBVEVfVURESTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BVUFJfUkVNT1ZFX1BSSVZBVEVfVURESTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9QUklWQVRFX1VERElfUkVHSVNUUllfVFlQRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQlVUVE9OX0RFUExPWV9VRERJX1JFR0lTVFJZOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9VUERBVEVfVURESV9SRUdJU1RSWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fUkVNT1ZFX1VERElfUkVHSVNUUlk7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX05PX1VERElfUkVHSVNUUllfQVZBSUxBQkxFOwotCi0Jc3RhdGljIHsKLQkJTkxTLmluaXRpYWxpemVNZXNzYWdlcyhCVU5ETEVfTkFNRSwgVURESVJlZ2lzdHJ5TWVzc2FnZXMuY2xhc3MpOwotCX0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91ZGRpcmVnaXN0cnkvcGx1Z2luL1dlYlNlcnZpY2VVRERJUmVnaXN0cnlQbHVnaW4uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS9wbHVnaW4vV2ViU2VydmljZVVERElSZWdpc3RyeVBsdWdpbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjg3YTE1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS9wbHVnaW4vV2ViU2VydmljZVVERElSZWdpc3RyeVBsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LnBsdWdpbjsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yOwotCi0vKioKLSogVGhpcyBpcyB0aGUgcGx1Z2luIGNsYXNzIGZvciB0aGUgV2ViIFNlcnZpY2VzIFVEREkgUmVnaXN0cnkgcGx1Z2luLgotKiA8cD4KLSogVGhlIFdlYiBTZXJ2aWNlcyBVRERJIFJlZ2lzdHJ5IHBsdWdpbidzIGlzIHRvIGFkZCB0aGUKLSogb3B0aW9uIHRvIGNyZWF0ZSBhIHVuaXQgdGVzdCBVRERJIHJlZ2lzdHJ5IAotKi8KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlVURESVJlZ2lzdHJ5UGx1Z2luIGV4dGVuZHMgUGx1Z2luCi17Ci0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMi4iOwotICAvKioKLSAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGVzY3JpcHRvciBvZiB0aGlzIHBsdWdpbiBpbiBwbHVnaW4ueG1sLgotICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJRCA9ICJvcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5IjsKLQotICAvKioKLSAgKiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4uCi0gICovCi0gIHByaXZhdGUgc3RhdGljIFdlYlNlcnZpY2VVRERJUmVnaXN0cnlQbHVnaW4gaW5zdGFuY2VfOwotICAKLSAgLyoqCi0gICogQ29uc3RydWN0cyBhIHJ1bnRpbWUgcGx1Z2luIG9iamVjdCBmb3IgdGhpcyBwbHVnaW4uCi0gICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlVURESVJlZ2lzdHJ5UGx1Z2luICgpCi0gIHsKLSAgICBzdXBlcigpOwotICAgIGluc3RhbmNlXyA9IHRoaXM7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4uIEVxdWl2YWxlbnQgdG8gY2FsbGluZwotICAqIChXZWJTZXJ2aWNlVURESVJlZ2lzdHJ5UGx1Z2luKVBsYXRmb3JtLmdldFBsdWdpbigib3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeSIpOwotICAqIEByZXR1cm4gVGhlIFdlYlNlcnZpY2VVRERJUmVnaXN0cnlQbHVnaW4gc2luZ2xldG9uLgotICAqLwotICBwdWJsaWMgc3RhdGljIFdlYlNlcnZpY2VVRERJUmVnaXN0cnlQbHVnaW4gZ2V0SW5zdGFuY2UgKCkKLSAgewotICAgIHJldHVybiBpbnN0YW5jZV87Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIGFuIGltYWdlIGRlc2NyaXB0b3IgZm9yIHRoZSBuYW1lZCByZXNvdXJjZQotICAqIGFzIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gaW5zdGFsbCBsb2NhdGlvbi4KLSAgKiBAcmV0dXJuIEFuIGltYWdlIGRlc2NyaXB0b3IsIHBvc3NpYmx5IG51bGwuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgSW1hZ2VEZXNjcmlwdG9yIGdldEltYWdlRGVzY3JpcHRvciAoIFN0cmluZyBuYW1lICkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIFVSTCBpbnN0YWxsVVJMID0gaW5zdGFuY2VfLmdldEJ1bmRsZSgpLmdldEVudHJ5KCIvIik7Ci0gICAgICBVUkwgaW1hZ2VVUkwgPSBuZXcgVVJMKGluc3RhbGxVUkwsbmFtZSk7Ci0gICAgICByZXR1cm4gSW1hZ2VEZXNjcmlwdG9yLmNyZWF0ZUZyb21VUkwoaW1hZ2VVUkwpOwotICAgIH0KLSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbWVzc2FnZSBzdHJpbmcgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4ga2V5IGZyb20KLSAgKiBwbHVnaW4ucHJvcGVydGllcy4KLSAgKiBAcmV0dXJuIFRoZSBTdHJpbmcgbWVzc2FnZS4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWVzc2FnZSAoIFN0cmluZyBrZXkgKQotICB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtLmdldFJlc291cmNlU3RyaW5nKGluc3RhbmNlXy5nZXRCdW5kbGUoKSxrZXkpOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbWVzc2FnZSBzdHJpbmcgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4ga2V5IGZyb20KLSAgKiBwbHVnaW4ucHJvcGVydGllcy4gU3Vic3RpdHV0aW9uIHNlcXVlbmNlcyBpbiB0aGUgbWVzc2FnZSBzdHJpbmcKLSAgKiBhcmUgcmVwbGFjZWQgYnkgdGhlIGdpdmVuIGFycmF5IG9mIHN1YnN0aXR1dGlvbiBvYmplY3RzICh3aGljaAotICAqIGFyZSBtb3N0IGZyZXF1ZW50bHkgc3RyaW5ncykuIFNlZSB0aGUgSkRLJ3MKLSAgKiB7QGxpbmsgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXR9Ci0gICogY2xhc3MgZm9yIGZ1cnRoZXIgZGV0YWlscyBvbiBzdWJzdGl0dXRpb24uCi0gICogQHJldHVybiBUaGUgU3RyaW5nIG1lc3NhZ2UuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldE1lc3NhZ2UgKCBTdHJpbmcga2V5LCBPYmplY3RbXSBhcmdzICkKLSAgewotICAgIHJldHVybiBNZXNzYWdlRm9ybWF0LmZvcm1hdChnZXRNZXNzYWdlKGtleSksYXJncyk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS93aWRnZXRzL1ByaXZhdGVVRERJU2VsZWN0aW9uQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpZGdldHMvUHJpdmF0ZVVERElTZWxlY3Rpb25Db21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNGY5NDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpZGdldHMvUHJpdmF0ZVVERElTZWxlY3Rpb25Db21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LndpemFyZC5Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotLyoKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLk1lc3NhZ2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU2ltcGxlU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS5wbHVnaW4uV2ViU2VydmljZVVERElSZWdpc3RyeVBsdWdpbjsKLSovCi0KLXB1YmxpYyBjbGFzcyBQcml2YXRlVURESVNlbGVjdGlvbkNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbgotewotICBwcml2YXRlIGJ5dGUgb3BlcmF0aW9uVHlwZTsKLSAgcHJpdmF0ZSBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZSByZWdpc3RyeVR5cGU7Ci0gIAotICAvKgotICBwdWJsaWMgU3RhdHVzIGV4ZWN1dGUoRW52aXJvbm1lbnQgZW52KQotICB7Ci0gICAgTWVzc2FnZVV0aWxzIG1zZ1V0aWxzID0gbmV3IE1lc3NhZ2VVdGlscyhXZWJTZXJ2aWNlVURESVJlZ2lzdHJ5UGx1Z2luLklEICsgIi5wbHVnaW4iLCB0aGlzKTsKLSAgCWlmIChyZWdpc3RyeVR5cGUgIT0gbnVsbCkKLSAgCXsKLSAgCSAgc3dpdGNoIChvcGVyYXRpb25UeXBlKQotICAJICB7Ci0gIAkgIAljYXNlIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlLk9QX0RFUExPWToKLSAgCSAgICAgIHJldHVybiByZWdpc3RyeVR5cGUuZGVwbG95KGVudik7Ci0gIAkgIAljYXNlIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlLk9QX1VQREFURToKLSAgCSAgCSAgcmV0dXJuIHJlZ2lzdHJ5VHlwZS51cGRhdGUoZW52KTsKLSAgCSAgCWNhc2UgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUuT1BfUkVNT1ZFOgotICAJICAJICByZXR1cm4gcmVnaXN0cnlUeXBlLnJlbW92ZShlbnYpOwotICAJICAJZGVmYXVsdDoKLSAgCSAgfQotICAJfQotICAJcmV0dXJuIG5ldyBTaW1wbGVTdGF0dXMoIiIpOwotICB9Ci0gICovCi0KLSAgcHVibGljIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlIGdldFJlZ2lzdHJ5VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0UHJpdmF0ZVVERElSZWdpc3RyeVR5cGUoKTsKLSAgfQotICAKLSAgcHVibGljIGJ5dGUgZ2V0T3BlcmF0aW9uVHlwZSgpCi0gIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uVHlwZTsKLSAgfQotICAKLSAgcHVibGljIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlIGdldFByaXZhdGVVRERJUmVnaXN0cnlUeXBlKCkKLSAgewotICAJcmV0dXJuIHJlZ2lzdHJ5VHlwZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFJlZ2lzdHJ5VHlwZShQcml2YXRlVURESVJlZ2lzdHJ5VHlwZSByZWdUeXBlKQotICB7Ci0gIAlzZXRQcml2YXRlVURESVJlZ2lzdHJ5VHlwZShyZWdUeXBlKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0T3BlcmF0aW9uVHlwZShieXRlIHR5cGUpCi0gIHsKLSAgICBvcGVyYXRpb25UeXBlID0gdHlwZTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0UHJpdmF0ZVVERElSZWdpc3RyeVR5cGUoUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUgcmVnVHlwZSkKLSAgewotICAJcmVnaXN0cnlUeXBlID0gcmVnVHlwZTsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24KLSAgewotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91ZGRpcmVnaXN0cnkvd2lkZ2V0cy9Qcml2YXRlVURESVNlbGVjdGlvbkNvbW1hbmRGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpZGdldHMvUHJpdmF0ZVVERElTZWxlY3Rpb25Db21tYW5kRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJmYWZhNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91ZGRpcmVnaXN0cnkvd2lkZ2V0cy9Qcml2YXRlVURESVNlbGVjdGlvbkNvbW1hbmRGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkud2l6YXJkLlByaXZhdGVVRERJUmVnaXN0cnlUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5BYnN0cmFjdENvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnk7Ci0KLQotcHVibGljIGNsYXNzIFByaXZhdGVVRERJU2VsZWN0aW9uQ29tbWFuZEZyYWdtZW50IGV4dGVuZHMgQWJzdHJhY3RDb21tYW5kRnJhZ21lbnQKLXsKLSAgcHJpdmF0ZSBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZSByZWdpc3RyeVR5cGU7Ci0gIHByaXZhdGUgRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhTWFwcGluZ1JlZ2lzdHJ5OwotICBwcml2YXRlIENhbkZpbmlzaFJlZ2lzdHJ5IGNhbkZpbmlzaFJlZ2lzdHJ5OwotICBwcml2YXRlIFdpZGdldFJlZ2lzdHJ5IHdpZGdldFJlZ2lzdHJ5OwotICAKLSAgcHVibGljIFByaXZhdGVVRERJU2VsZWN0aW9uQ29tbWFuZEZyYWdtZW50KCkKLSAgewotICAJc3VwZXIobnVsbCwgIiIpOwotICB9Ci0KLSAgLyoqIAotICAgICogR2V0cyB0aGUgZmlyc3QgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMKLSAgICAqIG51bGwgd2hlbiB0aGVyZSBpcyBubyBmaXJzdCBjaGlsZC4KLSAgKiovCi0gIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgZ2V0Rmlyc3RTdWJGcmFnbWVudCgpCi0gIHsKLSAgCWlmIChyZWdpc3RyeVR5cGUgIT0gbnVsbCkKLSAgCXsKLSAgICAgIHJlZ2lzdHJ5VHlwZS5yZWdpc3RlckNhbkZpbmlzaChjYW5GaW5pc2hSZWdpc3RyeSk7Ci0gICAgICByZWdpc3RyeVR5cGUucmVnaXN0ZXJEYXRhTWFwcGluZ3MoZGF0YU1hcHBpbmdSZWdpc3RyeSk7Ci0gICAgICByZWdpc3RyeVR5cGUucmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyh3aWRnZXRSZWdpc3RyeSk7Ci0gICAgICByZXR1cm4gcmVnaXN0cnlUeXBlLmNyZWF0ZSgpLmNyZWF0ZSgpOwotICAJfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAgKiBHZXRzIHRoZSBuZXh0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LgotICAgICoKLSAgICAqIEByZXR1cm4gcmV0dXJucyB0aGUgbmV4dCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMgbnVsbAotICAgICogd2hlbiB0aGVyZSBpcyBubyBuZXh0IGNoaWxkLgotICAqKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudCBnZXROZXh0U3ViRnJhZ21lbnQoQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50KQotICB7Ci0gIAlyZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgLyoKLSAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIHJldHJpZXZlIHRoZSBkYXRhIG1hcHBpbmdzIGZvciB0aGlzIGNvbW1hbmQgZnJhZ21lbnQuCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckRhdGFNYXBwaW5ncyhEYXRhTWFwcGluZ1JlZ2lzdHJ5IHJlZ2lzdHJ5KQotICB7Ci0gIAlkYXRhTWFwcGluZ1JlZ2lzdHJ5ID0gcmVnaXN0cnk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZWdpc3RlckNhbkZpbmlzaChDYW5GaW5pc2hSZWdpc3RyeSBjYW5GaW5pc2hSZWdpc3RyeSkKLSAgewotICAgIHRoaXMuY2FuRmluaXNoUmVnaXN0cnkgPSBjYW5GaW5pc2hSZWdpc3RyeTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3MoV2lkZ2V0UmVnaXN0cnkgd2lkZ2V0UmVnaXN0cnkpCi0gIHsKLSAgICB0aGlzLndpZGdldFJlZ2lzdHJ5ID0gd2lkZ2V0UmVnaXN0cnk7Ci0gIH0KLQotICAvKioKLSAgICAqIEFsbCB3aXphcmQgZnJhZ21lbnRzIG5lZWQgdG8gYmUgY2xvbmVhYmxlLgotICAqKi8KLSAgcHVibGljIE9iamVjdCBjbG9uZSgpCi0gIHsKLSAgCVByaXZhdGVVRERJU2VsZWN0aW9uQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ID0gbmV3IFByaXZhdGVVRERJU2VsZWN0aW9uQ29tbWFuZEZyYWdtZW50KCk7Ci0gIAlmcmFnbWVudC5yZWdpc3RlckRhdGFNYXBwaW5ncyhkYXRhTWFwcGluZ1JlZ2lzdHJ5KTsKLSAgCWZyYWdtZW50LnJlZ2lzdGVyQ2FuRmluaXNoKGNhbkZpbmlzaFJlZ2lzdHJ5KTsKLSAgCWZyYWdtZW50LnJlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mod2lkZ2V0UmVnaXN0cnkpOwotICAJZnJhZ21lbnQuc2V0UHJpdmF0ZVVERElSZWdpc3RyeVR5cGUocmVnaXN0cnlUeXBlKTsKLSAgCXJldHVybiBmcmFnbWVudDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0UHJpdmF0ZVVERElSZWdpc3RyeVR5cGUoUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUgcmVnaXN0cnlUeXBlKQotICB7Ci0gIAl0aGlzLnJlZ2lzdHJ5VHlwZSA9IHJlZ2lzdHJ5VHlwZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpZGdldHMvUHJpdmF0ZVVERElTZWxlY3Rpb25XaWRnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS93aWRnZXRzL1ByaXZhdGVVRERJU2VsZWN0aW9uV2lkZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlYTNkNmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpZGdldHMvUHJpdmF0ZVVERElTZWxlY3Rpb25XaWRnZXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LnBsdWdpbi5XZWJTZXJ2aWNlVURESVJlZ2lzdHJ5UGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkud2l6YXJkLlByaXZhdGVVRERJUmVnaXN0cnlUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkud2l6YXJkLlByaXZhdGVVRERJUmVnaXN0cnlUeXBlUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tYm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuaGVscC5JV29ya2JlbmNoSGVscFN5c3RlbTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldERhdGFFdmVudHM7Ci0KLQotLyoqCi0qIFRoaXMgVURESSBjb25maWd1cmF0aW9uIHBhZ2UgcHJvbXB0cyB0aGUgdXNlcgotKiBmb3IgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGNvbmZpZ3VyZSB0aGUKLSogdW5pdCB0ZXN0IFVEREkgcmVnaXN0cnkuCi0qLwotcHVibGljIGNsYXNzIFByaXZhdGVVRERJU2VsZWN0aW9uV2lkZ2V0IGV4dGVuZHMgU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yCi17Ci0gIHByaXZhdGUgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXI7Ci0KLSAgcHJpdmF0ZSBCdXR0b24gZGVwbG95UmFkaW9fOwotICBwcml2YXRlIExhYmVsIHR5cGVzTGFiZWxfOwotICBwcml2YXRlIENvbWJvIHR5cGVzQ29tYm9fOwotICBwcml2YXRlIEJ1dHRvbiB1cGRhdGVSYWRpb187Ci0gIHByaXZhdGUgQnV0dG9uIHJlbW92ZVJhZGlvXzsKLSAgcHJpdmF0ZSBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZVtdIHR5cGVzXzsKLSAgcHJpdmF0ZSBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZSBpbnN0YWxsZWRUeXBlXzsKLQotICAvLyBJbmZvcG9wCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUFVQUl9QUklWQVRFX1VERElfUEFHRSA9IFdlYlNlcnZpY2VVRERJUmVnaXN0cnlQbHVnaW4uSUQgKyAiLnB1cHIwMDAxIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSU5GT1BPUF9QVVBSX1BSSVZBVEVfVURESV9UWVBFID0gV2ViU2VydmljZVVERElSZWdpc3RyeVBsdWdpbi5JRCArICIucHVwcjAwMDIiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBJTkZPUE9QX1BVUFJfREVQTE9ZX1BSSVZBVEVfVURESSA9IFdlYlNlcnZpY2VVRERJUmVnaXN0cnlQbHVnaW4uSUQgKyAiLnB1cHIwMDAzIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSU5GT1BPUF9QVVBSX1VQREFURV9QUklWQVRFX1VEREkgPSBXZWJTZXJ2aWNlVURESVJlZ2lzdHJ5UGx1Z2luLklEICsgIi5wdXByMDAwNSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUFVQUl9SRU1PVkVfUFJJVkFURV9VRERJID0gV2ViU2VydmljZVVERElSZWdpc3RyeVBsdWdpbi5JRCArICIucHVwcjAwMDQiOwotCi0gIHB1YmxpYyBQcml2YXRlVURESVNlbGVjdGlvbldpZGdldCgpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGFkZENvbnRyb2xzKENvbXBvc2l0ZSBwYXJlbnQsIExpc3RlbmVyIHN0YXR1c0xpc3RlbmVyKQotICB7Ci0gIAl0aGlzLnN0YXR1c0xpc3RlbmVyID0gc3RhdHVzTGlzdGVuZXI7Ci0gICAgcGFyZW50LnNldFRvb2xUaXBUZXh0KFVERElSZWdpc3RyeU1lc3NhZ2VzLlRPT0xUSVBfUFVQUl9QUklWQVRFX1VERElfUEFHRSk7Ci0gICAgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscChwYXJlbnQsIElORk9QT1BfUFVQUl9QUklWQVRFX1VERElfUEFHRSk7Ci0KLSAgICBHcmlkTGF5b3V0IGdsOwotICAgIEdyaWREYXRhIGdkOwotICAgIAotICAgIExpc3RlbmVyIGxpc3RlbmVyID0gbmV3IExpc3RlbmVyKCkKLSAgICB7Ci0gICAgICBwdWJsaWMgdm9pZCBoYW5kbGVFdmVudChFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgIAloYW5kbGVXaWRnZXRFdmVudChldmVudCk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIElXb3JrYmVuY2hIZWxwU3lzdGVtIGhlbHBTeXN0ZW0gPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKTsKLSAgICAKLSAgICBkZXBsb3lSYWRpb18gPSBuZXcgQnV0dG9uKHBhcmVudCwgU1dULlJBRElPKTsKLSAgICBkZXBsb3lSYWRpb18uc2V0VGV4dChVRERJUmVnaXN0cnlNZXNzYWdlcy5CVVRUT05fREVQTE9ZX1VERElfUkVHSVNUUlkpOwotICAgIGRlcGxveVJhZGlvXy5zZXRTZWxlY3Rpb24odHJ1ZSk7Ci0gICAgZGVwbG95UmFkaW9fLmFkZExpc3RlbmVyKFNXVC5TZWxlY3Rpb24sIGxpc3RlbmVyKTsKLSAgICBkZXBsb3lSYWRpb18uc2V0VG9vbFRpcFRleHQoVURESVJlZ2lzdHJ5TWVzc2FnZXMuVE9PTFRJUF9QVVBSX0RFUExPWV9QUklWQVRFX1VEREkpOwotICAgIGhlbHBTeXN0ZW0uc2V0SGVscChkZXBsb3lSYWRpb18sIElORk9QT1BfUFVQUl9ERVBMT1lfUFJJVkFURV9VRERJKTsKLQotICAgIENvbXBvc2l0ZSB0eXBlQ29tcG9zaXRlID0gbmV3IENvbXBvc2l0ZShwYXJlbnQsU1dULk5PTkUpOwotICAgIGdsID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICBnbC5udW1Db2x1bW5zID0gMjsKLSAgICBnbC5tYXJnaW5IZWlnaHQgPSA1OwotICAgIGdsLnZlcnRpY2FsU3BhY2luZyA9IDE1OwotICAgIGdsLm1hcmdpbldpZHRoID0gMjA7Ci0gICAgdHlwZUNvbXBvc2l0ZS5zZXRMYXlvdXQoZ2wpOwotICAgIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCB8IEdyaWREYXRhLkdSQUJfSE9SSVpPTlRBTCk7Ci0gICAgdHlwZUNvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKGdkKTsKLQotICAgIHR5cGVzTGFiZWxfID0gbmV3IExhYmVsKHR5cGVDb21wb3NpdGUsIFNXVC5XUkFQKTsKLSAgICB0eXBlc0xhYmVsXy5zZXRUZXh0KFVERElSZWdpc3RyeU1lc3NhZ2VzLkxBQkVMX1BSSVZBVEVfVURESV9SRUdJU1RSWV9UWVBFUyk7Ci0gICAgdHlwZXNMYWJlbF8uc2V0VG9vbFRpcFRleHQoVURESVJlZ2lzdHJ5TWVzc2FnZXMuVE9PTFRJUF9QVVBSX1BSSVZBVEVfVURESV9UWVBFKTsKLSAgICBoZWxwU3lzdGVtLnNldEhlbHAodHlwZXNMYWJlbF8sIElORk9QT1BfUFVQUl9QUklWQVRFX1VERElfVFlQRSk7Ci0KLSAgICB0eXBlc0NvbWJvXyA9IG5ldyBDb21ibyh0eXBlQ29tcG9zaXRlLCBTV1QuRFJPUF9ET1dOIHwgU1dULlJFQURfT05MWSk7Ci0gICAgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMKTsKLSAgICB0eXBlc0NvbWJvXy5zZXRMYXlvdXREYXRhKGdkKTsKLSAgICB0eXBlc0NvbWJvXy5hZGRMaXN0ZW5lcihTV1QuU2VsZWN0aW9uLCBsaXN0ZW5lcik7Ci0gICAgdHlwZXNDb21ib18uc2V0VG9vbFRpcFRleHQoVURESVJlZ2lzdHJ5TWVzc2FnZXMuVE9PTFRJUF9QVVBSX1BSSVZBVEVfVURESV9UWVBFKTsKLSAgICBoZWxwU3lzdGVtLnNldEhlbHAodHlwZXNDb21ib18sIElORk9QT1BfUFVQUl9QUklWQVRFX1VERElfVFlQRSk7Ci0KLSAgICB1cGRhdGVSYWRpb18gPSBuZXcgQnV0dG9uKHBhcmVudCxTV1QuUkFESU8pOwotICAgIHVwZGF0ZVJhZGlvXy5zZXRUZXh0KFVERElSZWdpc3RyeU1lc3NhZ2VzLkJVVFRPTl9VUERBVEVfVURESV9SRUdJU1RSWSk7Ci0gICAgdXBkYXRlUmFkaW9fLnNldFNlbGVjdGlvbihmYWxzZSk7Ci0gICAgdXBkYXRlUmFkaW9fLmFkZExpc3RlbmVyKFNXVC5TZWxlY3Rpb24sbGlzdGVuZXIpOwotICAgIHVwZGF0ZVJhZGlvXy5zZXRUb29sVGlwVGV4dChVRERJUmVnaXN0cnlNZXNzYWdlcy5UT09MVElQX1BVUFJfVVBEQVRFX1BSSVZBVEVfVURESSk7Ci0gICAgaGVscFN5c3RlbS5zZXRIZWxwKHVwZGF0ZVJhZGlvXywgSU5GT1BPUF9QVVBSX1VQREFURV9QUklWQVRFX1VEREkpOwotCi0gICAgcmVtb3ZlUmFkaW9fID0gbmV3IEJ1dHRvbihwYXJlbnQsIFNXVC5SQURJTyk7Ci0gICAgcmVtb3ZlUmFkaW9fLnNldFRleHQoVURESVJlZ2lzdHJ5TWVzc2FnZXMuQlVUVE9OX1JFTU9WRV9VRERJX1JFR0lTVFJZKTsKLSAgICByZW1vdmVSYWRpb18uc2V0U2VsZWN0aW9uKGZhbHNlKTsKLSAgICByZW1vdmVSYWRpb18uYWRkTGlzdGVuZXIoU1dULlNlbGVjdGlvbiwgbGlzdGVuZXIpOwotICAgIHJlbW92ZVJhZGlvXy5zZXRUb29sVGlwVGV4dChVRERJUmVnaXN0cnlNZXNzYWdlcy5UT09MVElQX1BVUFJfUkVNT1ZFX1BSSVZBVEVfVURESSk7Ci0gICAgaGVscFN5c3RlbS5zZXRIZWxwKHJlbW92ZVJhZGlvXywgSU5GT1BPUF9QVVBSX1JFTU9WRV9QUklWQVRFX1VEREkpOyAgICAgICAgICAgICAgICAKLQotICAgIGxvYWRUeXBlcygpOwotICAgIGluaXQoKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotCi0gIHByaXZhdGUgZmluYWwgdm9pZCBsb2FkVHlwZXMoKQotICB7Ci0gICAgdHlwZXNfID0gUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFR5cGVzKCk7Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIHZvaWQgaW5pdCgpCi0gIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzXy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAodHlwZXNfW2ldICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHR5cGVzQ29tYm9fLmFkZCh0eXBlc19baV0uZ2V0TmFtZSgpKTsKLSAgICAgICAgaWYgKHR5cGVzX1tpXS5pc1ByaXZhdGVVRERJUmVnaXN0cnlJbnN0YWxsZWQoKSkKLSAgICAgICAgICBpbnN0YWxsZWRUeXBlXyA9IHR5cGVzX1tpXTsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHR5cGVzQ29tYm9fLmdldEl0ZW1Db3VudCgpID4gMCkKLSAgICAgIHR5cGVzQ29tYm9fLnNldFRleHQodHlwZXNDb21ib18uZ2V0SXRlbSgwKSk7Ci0gICAgaWYgKGluc3RhbGxlZFR5cGVfICE9IG51bGwpCi0gICAgewotICAgICAgdXBkYXRlUmFkaW9fLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgICByZW1vdmVSYWRpb18uc2V0RW5hYmxlZCh0cnVlKTsgICAgICAgICAgICAgICAgCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB1cGRhdGVSYWRpb18uc2V0RW5hYmxlZChmYWxzZSk7Ci0gICAgICByZW1vdmVSYWRpb18uc2V0RW5hYmxlZChmYWxzZSk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZVdpZGdldEV2ZW50KEV2ZW50IGV2ZW50KQotICB7Ci0gICAgaWYgKGV2ZW50LndpZGdldCA9PSByZW1vdmVSYWRpb18gfHwgZXZlbnQud2lkZ2V0ID09IHVwZGF0ZVJhZGlvXykKLSAgICB7Ci0gICAgICBib29sZWFuIGlzVXBkYXRlT3JSZW1vdmVTZWxlY3RlZCA9ICgoQnV0dG9uKWV2ZW50LndpZGdldCkuZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICB0eXBlc0xhYmVsXy5zZXRFbmFibGVkKCFpc1VwZGF0ZU9yUmVtb3ZlU2VsZWN0ZWQpOwotICAgICAgdHlwZXNDb21ib18uc2V0RW5hYmxlZCghaXNVcGRhdGVPclJlbW92ZVNlbGVjdGVkKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZXZlbnQud2lkZ2V0ID09IGRlcGxveVJhZGlvXykKLSAgICB7Ci0gICAgICBib29sZWFuIGlzRGVwbG95U2VsZWN0ZWQgPSAoKEJ1dHRvbilldmVudC53aWRnZXQpLmdldFNlbGVjdGlvbigpOwotICAgICAgdHlwZXNMYWJlbF8uc2V0RW5hYmxlZChpc0RlcGxveVNlbGVjdGVkKTsKLSAgICAgIHR5cGVzQ29tYm9fLnNldEVuYWJsZWQoaXNEZXBsb3lTZWxlY3RlZCk7Ci0gICAgfQotICAgIHN0YXR1c0xpc3RlbmVyLmhhbmRsZUV2ZW50KGV2ZW50KTsKLSAgfQotICAKLSAgcHVibGljIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlIGdldFByaXZhdGVVRERJUmVnaXN0cnlUeXBlKCkKLSAgewotICAJaWYgKGRlcGxveVJhZGlvXy5nZXRTZWxlY3Rpb24oKSkKLSAgCXsKLSAgCSAgU3RyaW5nIHNlbGVjdGVkUmVnaXN0cnlOYW1lID0gdHlwZXNDb21ib18uZ2V0VGV4dCgpOwotICAJICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzXy5sZW5ndGg7IGkrKykKLSAgICAgICAgaWYgKHNlbGVjdGVkUmVnaXN0cnlOYW1lLmVxdWFscyh0eXBlc19baV0uZ2V0TmFtZSgpKSkKLSAgCSAgCSAgcmV0dXJuIHR5cGVzX1tpXTsKLSAgICAgIHJldHVybiBudWxsOwotICAJfQotICAJZWxzZQotICAJICByZXR1cm4gaW5zdGFsbGVkVHlwZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBieXRlIGdldE9wZXJhdGlvblR5cGUoKQotICB7Ci0gIAlpZiAoZGVwbG95UmFkaW9fLmdldFNlbGVjdGlvbigpKQotICAJICByZXR1cm4gUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUuT1BfREVQTE9ZOwotICAJZWxzZSBpZiAodXBkYXRlUmFkaW9fLmdldFNlbGVjdGlvbigpKQotICAgICAgcmV0dXJuIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlLk9QX1VQREFURTsKLSAgCWVsc2UgaWYgKHJlbW92ZVJhZGlvXy5nZXRTZWxlY3Rpb24oKSkKLSAgICAgIHJldHVybiBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZS5PUF9SRU1PVkU7Ci0gIAllbHNlCi0gIAkgIHJldHVybiBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZS5PUF9ERVBMT1k7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBnZXRTdGF0dXMoKQotICB7Ci0gICAgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUgcHJpdmF0ZVVERElSZWdpc3RyeVR5cGUgPSBnZXRQcml2YXRlVURESVJlZ2lzdHJ5VHlwZSgpOwotICAgIGlmIChwcml2YXRlVURESVJlZ2lzdHJ5VHlwZSAhPSBudWxsKQotICAgICAgcmV0dXJuIHByaXZhdGVVRERJUmVnaXN0cnlUeXBlLmdldE9wZXJhdGlvblN0YXR1cyhnZXRPcGVyYXRpb25UeXBlKCkpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggVURESVJlZ2lzdHJ5TWVzc2FnZXMuTVNHX0VSUk9SX05PX1VERElfUkVHSVNUUllfQVZBSUxBQkxFICk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS93aWRnZXRzL1ByaXZhdGVVRERJU2VsZWN0aW9uV2lkZ2V0Q29uZGl0aW9uQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpZGdldHMvUHJpdmF0ZVVERElTZWxlY3Rpb25XaWRnZXRDb25kaXRpb25Db21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ZWFhOWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpZGdldHMvUHJpdmF0ZVVERElTZWxlY3Rpb25XaWRnZXRDb25kaXRpb25Db21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uQ29uZGl0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLQotcHVibGljIGNsYXNzIFByaXZhdGVVRERJU2VsZWN0aW9uV2lkZ2V0Q29uZGl0aW9uQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIGltcGxlbWVudHMgQ29uZGl0aW9uCi17Ci0gIHByaXZhdGUgYm9vbGVhbiBjb25kaXRpb247Ci0KLSAgcHVibGljIFByaXZhdGVVRERJU2VsZWN0aW9uV2lkZ2V0Q29uZGl0aW9uQ29tbWFuZCgpCi0gIHsKLSAgICBjb25kaXRpb24gPSB0cnVlOwotICB9Ci0gIAotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotICAgIGNvbmRpdGlvbiA9ICFjb25kaXRpb247Ci0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIHVuZG8oIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKQotICB7Ci0gICAgY29uZGl0aW9uID0gIWNvbmRpdGlvbjsKLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoKQotICB7Ci0gICAgcmV0dXJuIGNvbmRpdGlvbjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpZGdldHMvYmluZGluZy9Qcml2YXRlVURESVdpZGdldEJpbmRpbmcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS93aWRnZXRzL2JpbmRpbmcvUHJpdmF0ZVVERElXaWRnZXRCaW5kaW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NDRhNDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpZGdldHMvYmluZGluZy9Qcml2YXRlVURESVdpZGdldEJpbmRpbmcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzLmJpbmRpbmc7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkud2lkZ2V0cy5Qcml2YXRlVURESVNlbGVjdGlvbkNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzLlByaXZhdGVVRERJU2VsZWN0aW9uQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkud2lkZ2V0cy5Qcml2YXRlVURESVNlbGVjdGlvbldpZGdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LndpZGdldHMuUHJpdmF0ZVVERElTZWxlY3Rpb25XaWRnZXRDb25kaXRpb25Db21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNpbXBsZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkNhbkZpbmlzaFJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXRSZWdpc3RyeTsKLQotCi1wdWJsaWMgY2xhc3MgUHJpdmF0ZVVERElXaWRnZXRCaW5kaW5nIGltcGxlbWVudHMgQ29tbWFuZFdpZGdldEJpbmRpbmcKLXsKLSAgcHJpdmF0ZSBDYW5GaW5pc2hSZWdpc3RyeSAgIGNhbkZpbmlzaFJlZ2lzdHJ5OwotICBwcml2YXRlIFdpZGdldFJlZ2lzdHJ5ICAgICAgd2lkZ2V0UmVnaXN0cnk7Ci0gIHByaXZhdGUgRGF0YU1hcHBpbmdSZWdpc3RyeSBkYXRhTWFwcGluZ1JlZ2lzdHJ5OwotICBwcml2YXRlIFByaXZhdGVVRERJU2VsZWN0aW9uQ29tbWFuZEZyYWdtZW50IHByaXZhdGVVRERJU2VsRnJhZ21lbnQ7Ci0gIHByaXZhdGUgUHJpdmF0ZVVERElTZWxlY3Rpb25XaWRnZXRDb25kaXRpb25Db21tYW5kIGNvbmRpdGlvbkNvbW1hbmQ7Ci0gIAotICBwdWJsaWMgUHJpdmF0ZVVERElXaWRnZXRCaW5kaW5nKCkKLSAgewotICAgIHByaXZhdGVVRERJU2VsRnJhZ21lbnQgPSBuZXcgUHJpdmF0ZVVERElTZWxlY3Rpb25Db21tYW5kRnJhZ21lbnQoKTsKLSAgICBjb25kaXRpb25Db21tYW5kID0gbmV3IFByaXZhdGVVRERJU2VsZWN0aW9uV2lkZ2V0Q29uZGl0aW9uQ29tbWFuZCgpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjY3JlYXRlKCkKLSAgICovCi0gIHB1YmxpYyBDb21tYW5kRnJhZ21lbnRGYWN0b3J5IGNyZWF0ZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IENvbW1hbmRGcmFnbWVudEZhY3RvcnkoKQotICAgIHsKLSAgICAgIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgY3JlYXRlKCkKLSAgICAgIHsKLSAgICAgICAgU2VxdWVuY2VGcmFnbWVudCByb290ID0gbmV3IFNlcXVlbmNlRnJhZ21lbnQoKTsKLSAgICAgICAgcm9vdC5hZGQobmV3IFNpbXBsZUZyYWdtZW50KGNvbmRpdGlvbkNvbW1hbmQsICIiKSk7Ci0gICAgICAgIHJvb3QuYWRkKG5ldyBTaW1wbGVGcmFnbWVudCgiUHJpdmF0ZVVERElTZWxlY3Rpb25XaWRnZXQiKSk7Ci0gICAgICAgIHJvb3QuYWRkKG5ldyBTaW1wbGVGcmFnbWVudChjb25kaXRpb25Db21tYW5kLCAiIikpOwotICAgICAgICByb290LmFkZChuZXcgU2ltcGxlRnJhZ21lbnQobmV3IFByaXZhdGVVRERJU2VsZWN0aW9uQ29tbWFuZCgpLCAiIikpOwotICAgICAgICByb290LmFkZChwcml2YXRlVURESVNlbEZyYWdtZW50KTsKLSAgICAgICAgcmV0dXJuIHJvb3Q7Ci0gICAgICB9Ci0gICAgfTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlckNhbkZpbmlzaChvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5DYW5GaW5pc2hSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyQ2FuRmluaXNoKENhbkZpbmlzaFJlZ2lzdHJ5IGNhbkZpbmlzaFJlZ2lzdHJ5KQotICB7Ci0gICAgdGhpcy5jYW5GaW5pc2hSZWdpc3RyeSA9IGNhbkZpbmlzaFJlZ2lzdHJ5OwotICAgIHByaXZhdGVVRERJU2VsRnJhZ21lbnQucmVnaXN0ZXJDYW5GaW5pc2godGhpcy5jYW5GaW5pc2hSZWdpc3RyeSk7Ci0gICAgCi0gICAgY2FuRmluaXNoUmVnaXN0cnkuYWRkQ29uZGl0aW9uKGNvbmRpdGlvbkNvbW1hbmQpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KQotICB7Ci0gICAgZGF0YU1hcHBpbmdSZWdpc3RyeSA9IGRhdGFSZWdpc3RyeTsKLSAgICBwcml2YXRlVURESVNlbEZyYWdtZW50LnJlZ2lzdGVyRGF0YU1hcHBpbmdzKGRhdGFNYXBwaW5nUmVnaXN0cnkpOwotICAgIAotICAgIC8vIFByaXZhdGVVRERJU2VsZWN0aW9uQ29tbWFuZAotICAgIGRhdGFNYXBwaW5nUmVnaXN0cnkuYWRkTWFwcGluZyhQcml2YXRlVURESVNlbGVjdGlvbldpZGdldC5jbGFzcywgIlByaXZhdGVVRERJUmVnaXN0cnlUeXBlIiwgUHJpdmF0ZVVERElTZWxlY3Rpb25Db21tYW5kLmNsYXNzKTsKLSAgICBkYXRhTWFwcGluZ1JlZ2lzdHJ5LmFkZE1hcHBpbmcoUHJpdmF0ZVVERElTZWxlY3Rpb25XaWRnZXQuY2xhc3MsICJPcGVyYXRpb25UeXBlIiwgUHJpdmF0ZVVERElTZWxlY3Rpb25Db21tYW5kLmNsYXNzKTsKLSAgICAKLSAgICAvLyBQcml2YXRlVURESVNlbGVjdGlvbkNvbW1hbmRGcmFnbWVudAotICAgIGRhdGFNYXBwaW5nUmVnaXN0cnkuYWRkTWFwcGluZyhQcml2YXRlVURESVNlbGVjdGlvbldpZGdldC5jbGFzcywgIlByaXZhdGVVRERJUmVnaXN0cnlUeXBlIiwgUHJpdmF0ZVVERElTZWxlY3Rpb25Db21tYW5kRnJhZ21lbnQuY2xhc3MpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyV2lkZ2V0TWFwcGluZ3Mob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuV2lkZ2V0UmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlcldpZGdldE1hcHBpbmdzKFdpZGdldFJlZ2lzdHJ5IHdpZGdldFJlZ2lzdHJ5KQotICB7Ci0gICAgdGhpcy53aWRnZXRSZWdpc3RyeSA9IHdpZGdldFJlZ2lzdHJ5OwotICAgIHByaXZhdGVVRERJU2VsRnJhZ21lbnQucmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyh0aGlzLndpZGdldFJlZ2lzdHJ5KTsKLQotICAgIHdpZGdldFJlZ2lzdHJ5LmFkZCgiUHJpdmF0ZVVERElTZWxlY3Rpb25XaWRnZXQiLCAKLSAgICAgIFVERElSZWdpc3RyeU1lc3NhZ2VzLlBBR0VfVElUTEVfUFJJVkFURV9VRERJX0NPTkZJRywKLSAgICAgIFVERElSZWdpc3RyeU1lc3NhZ2VzLlBBR0VfREVTQ19QUklWQVRFX1VERElfQ09ORklHLAotCSAgbmV3IFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpCi0gICAgICB7Ci0JICAgIHB1YmxpYyBXaWRnZXRDb250cmlidXRvciBjcmVhdGUoKQotCSAgICB7Ci0JICAgICAgcmV0dXJuIG5ldyBQcml2YXRlVURESVNlbGVjdGlvbldpZGdldCgpOwotCSAgICB9Ci0JICB9Ci0gICAgKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpemFyZC9Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpemFyZC9Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjYzZDY4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS93aXphcmQvUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWRkaXJlZ2lzdHJ5LndpemFyZDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nOwotCi0KLXB1YmxpYyBpbnRlcmZhY2UgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUgZXh0ZW5kcyBDb21tYW5kV2lkZ2V0QmluZGluZwotewotICAvLyBvcGVyYXRpb24gdHlwZXMKLSAgcHVibGljIHN0YXRpYyBieXRlIE9QX0RFUExPWSA9IDB4MDsKLSAgcHVibGljIHN0YXRpYyBieXRlIE9QX1VQREFURSA9IDB4MTsKLSAgcHVibGljIHN0YXRpYyBieXRlIE9QX1JFTU9WRSA9IDB4MjsKLQotICAvLyBnZW5lcmFsIGluZm9ybWF0aW9uCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SUQoKTsKLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCk7Ci0gIHB1YmxpYyBib29sZWFuIGlzUHJpdmF0ZVVERElSZWdpc3RyeUluc3RhbGxlZCgpOwotICBwdWJsaWMgSVN0YXR1cyBnZXRPcGVyYXRpb25TdGF0dXMoYnl0ZSBvcGVyYXRpb24pOwotCi0gIC8vIHJlZ2lzdHJ5IFVSTHMKLSAgcHVibGljIFN0cmluZyBnZXRJbnF1aXJ5QVBJKCk7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0UHVibGlzaEFQSSgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpemFyZC9Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS93aXphcmQvUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMmRiZmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpemFyZC9Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkud2l6YXJkOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVkZGlyZWdpc3RyeS53aWRnZXRzLmJpbmRpbmcuUHJpdmF0ZVVERElXaWRnZXRCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nOwotCi0KLXB1YmxpYyBjbGFzcyBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZUltcGwgaW1wbGVtZW50cyBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkudWRkaS5Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZQotewotICAgIHB1YmxpYyBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZUltcGwoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaXNQcml2YXRlVURESVJlZ2lzdHJ5SW5zdGFsbGVkKCkgewotICAgICAgICBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZVtdIHR5cGVzID0gUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFR5cGVzKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmICh0eXBlc1tpXS5pc1ByaXZhdGVVRERJUmVnaXN0cnlJbnN0YWxsZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZ1tdIGdldFByaXZhdGVVRERJUmVnaXN0cnlJbnF1aXJ5QVBJKCkgewotICAgICAgICBWZWN0b3IgaW5xdWlyeUFQSVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVbXSB0eXBlcyA9IFByaXZhdGVVRERJUmVnaXN0cnlUeXBlUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRUeXBlcygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAodHlwZXNbaV0uaXNQcml2YXRlVURESVJlZ2lzdHJ5SW5zdGFsbGVkKCkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgaW5xdWlyeUFQSSA9IHR5cGVzW2ldLmdldElucXVpcnlBUEkoKTsKLSAgICAgICAgICAgICAgICBpZiAoaW5xdWlyeUFQSSAhPSBudWxsICYmIGlucXVpcnlBUEkuc3RhcnRzV2l0aCgiaHR0cCIpKQotICAgICAgICAgICAgICAgICAgICBpbnF1aXJ5QVBJVmVjdG9yLmFkZChpbnF1aXJ5QVBJKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZ1tdIGlucXVpcnlBUElBcnJheSA9IG5ldyBTdHJpbmdbaW5xdWlyeUFQSVZlY3Rvci5zaXplKCldOwotICAgICAgICBFbnVtZXJhdGlvbiBlID0gaW5xdWlyeUFQSVZlY3Rvci5lbGVtZW50cygpOwotICAgICAgICBpbnQgaiA9IDA7Ci0gICAgICAgIHdoaWxlKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGlucXVpcnlBUElBcnJheVtqXSA9IChTdHJpbmcpZS5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgaisrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpbnF1aXJ5QVBJQXJyYXk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZ1tdIGdldFByaXZhdGVVRERJUmVnaXN0cnlQdWJsaXNoQVBJKCkgewotICAgICAgICBWZWN0b3IgcHVibGlzaEFQSVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVbXSB0eXBlcyA9IFByaXZhdGVVRERJUmVnaXN0cnlUeXBlUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRUeXBlcygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAodHlwZXNbaV0uaXNQcml2YXRlVURESVJlZ2lzdHJ5SW5zdGFsbGVkKCkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHVibGlzaEFQSSA9IHR5cGVzW2ldLmdldFB1Ymxpc2hBUEkoKTsKLSAgICAgICAgICAgICAgICBpZiAocHVibGlzaEFQSSAhPSBudWxsICYmIHB1Ymxpc2hBUEkuc3RhcnRzV2l0aCgiaHR0cCIpKQotICAgICAgICAgICAgICAgICAgICBwdWJsaXNoQVBJVmVjdG9yLmFkZChwdWJsaXNoQVBJKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZ1tdIHB1Ymxpc2hBUElBcnJheSA9IG5ldyBTdHJpbmdbcHVibGlzaEFQSVZlY3Rvci5zaXplKCldOwotICAgICAgICBFbnVtZXJhdGlvbiBlID0gcHVibGlzaEFQSVZlY3Rvci5lbGVtZW50cygpOwotICAgICAgICBpbnQgaiA9IDA7Ci0gICAgICAgIHdoaWxlKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIHB1Ymxpc2hBUElBcnJheVtqXSA9IChTdHJpbmcpZS5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgaisrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwdWJsaXNoQVBJQXJyYXk7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBDb21tYW5kV2lkZ2V0QmluZGluZyBnZXRCaW5kaW5nKCkKLSAgICB7Ci0gICAgICByZXR1cm4gbmV3IFByaXZhdGVVRERJV2lkZ2V0QmluZGluZygpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVkZGlyZWdpc3RyeS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VkZGlyZWdpc3RyeS93aXphcmQvUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpemFyZC9Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NTUxMGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWRkaXJlZ2lzdHJ5L3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWRkaXJlZ2lzdHJ5L3dpemFyZC9Qcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjE2ICAgMTI3MTM4IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51ZGRpcmVnaXN0cnkud2l6YXJkOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU3RyaW5nVG9rZW5pemVyOwotCi1wdWJsaWMgY2xhc3MgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeSB7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZVJlZ2lzdHJ5IGluc3RhbmNlXzsKLSAgICBwcml2YXRlIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGNvbmZpZ0VsZW1lbnRzXzsKLQotICAgIHByaXZhdGUgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeSgpIHsKLSAgICB9Ci0gIAotICAgIC8qKgotICAgICogUmV0dXJucyBhIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLgotICAgICogQHJldHVybiBBIHNpbmdsZXRvbiBXZWJTZXJ2aWNlQ2xpZW50VHlwZVJlZ2lzdHJ5IG9iamVjdC4KLSAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeSBnZXRJbnN0YW5jZSgpIHsKLSAgICAgICAgaWYgKGluc3RhbmNlXyA9PSBudWxsKSB7Ci0gICAgICAgICAgICBpbnN0YW5jZV8gPSBuZXcgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVSZWdpc3RyeSgpOwotICAgICAgICAgICAgaW5zdGFuY2VfLmdldENvbmZpZ0VsZW1lbnRzKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGluc3RhbmNlXzsKLSAgICB9Ci0gIAotICAgIHB1YmxpYyBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBnZXRDb25maWdFbGVtZW50cygpIHsKLSAgICAgICAgSUV4dGVuc2lvblJlZ2lzdHJ5IHJlZyA9IFBsYXRmb3JtLmdldEV4dGVuc2lvblJlZ2lzdHJ5KCk7Ci0gICAgICAgIGNvbmZpZ0VsZW1lbnRzXyA9IHJlZy5nZXRDb25maWd1cmF0aW9uRWxlbWVudHNGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2YXRlVURESVJlZ2lzdHJ5VHlwZSIpOwotICAgICAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb25maWdFbGVtZW50c18ubGVuZ3RoOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBpbnQgd2VpZ2h0ID0gZ2V0V2VpZ2h0KGNvbmZpZ0VsZW1lbnRzX1tpXSk7Ci0gICAgICAgICAgaW50IGluZGV4ID0gLTE7Ci0gICAgICAgICAgZm9yIChpbnQgaiA9IHYuc2l6ZSgpLTE7IGogPj0gMDsgai0tKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3ZWlnaHQgPiBnZXRXZWlnaHQoKElDb25maWd1cmF0aW9uRWxlbWVudCl2LmdldChqKSkpCi0gICAgICAgICAgICAgIGluZGV4ID0gajsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgICAgIHYuYWRkKGluZGV4LCBjb25maWdFbGVtZW50c19baV0pOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHYuYWRkKGNvbmZpZ0VsZW1lbnRzX1tpXSk7Ci0gICAgICAgIH0KLSAgICAgICAgdi5jb3B5SW50byhjb25maWdFbGVtZW50c18pOwotICAgICAgICByZXR1cm4gY29uZmlnRWxlbWVudHNfOwotICAgIH0KLQotICAgIHByaXZhdGUgaW50IGdldFdlaWdodChJQ29uZmlndXJhdGlvbkVsZW1lbnQgZSkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIEludGVnZXIucGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoIndlaWdodCIpKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmZlKQotICAgICAgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZ2V0Q29uZmlnRWxlbWVudEJ5SUQoU3RyaW5nIGlkKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDxjb25maWdFbGVtZW50c18ubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChjb25maWdFbGVtZW50c19baV0uZ2V0QXR0cmlidXRlKCJpZCIpLmVxdWFscyhpZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ0VsZW1lbnRzX1tpXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGVbXSBnZXRUeXBlcygpIHsKLSAgICAgICAgVmVjdG9yIHR5cGVzID0gbmV3IFZlY3RvcigpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbmZpZ0VsZW1lbnRzXy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBPYmplY3QgdHlwZU9iaiA9IGNvbmZpZ0VsZW1lbnRzX1tpXS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOwotICAgICAgICAgICAgICAgIGlmICh0eXBlT2JqIGluc3RhbmNlb2YgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUpCi0gICAgICAgICAgICAgICAgICAgIHR5cGVzLmFkZCh0eXBlT2JqKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkge30KLSAgICAgICAgfQotCi0gICAgICAgIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlW10gdHlwZXNBcnJheSA9IG5ldyBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZVt0eXBlcy5zaXplKCldOwotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHR5cGVzLnNpemUoKTsgaisrKSB7Ci0gICAgICAgICAgICB0eXBlc0FycmF5W2pdID0gKFByaXZhdGVVRERJUmVnaXN0cnlUeXBlKXR5cGVzLmVsZW1lbnRBdChqKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHlwZXNBcnJheTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUgZ2V0VHlwZUJ5SUQoU3RyaW5nIGlkKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBPYmplY3QgdHlwZU9iaiA9IGdldENvbmZpZ0VsZW1lbnRCeUlEKGlkKS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOwotICAgICAgICAgICAgaWYgKHR5cGVPYmogaW5zdGFuY2VvZiBQcml2YXRlVURESVJlZ2lzdHJ5VHlwZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gKFByaXZhdGVVRERJUmVnaXN0cnlUeXBlKXR5cGVPYmo7IAotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkge30KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZ1tdIGdldFN1cHBvcnRlZFNlcnZlckZhY3RvcnlJREJ5SUQoU3RyaW5nIGlkKSB7Ci0gICAgICAgIElDb25maWd1cmF0aW9uRWxlbWVudCBjb25maWdFbGVtZW50ID0gZ2V0Q29uZmlnRWxlbWVudEJ5SUQoaWQpOwotICAgICAgICBpZiAoY29uZmlnRWxlbWVudCA9PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbMF07Ci0gICAgICAgIFZlY3RvciBpZFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihjb25maWdFbGVtZW50LmdldEF0dHJpYnV0ZSgic2VydmVyRmFjdG9yeUlEIiksICIsIik7Ci0gICAgICAgIHdoaWxlIChzdC5oYXNNb3JlVG9rZW5zKCkpIHsKLSAgICAgICAgICAgIGlkVmVjdG9yLmFkZChzdC5uZXh0VG9rZW4oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgU3RyaW5nW10gaWRzID0gbmV3IFN0cmluZ1tpZFZlY3Rvci5zaXplKCldOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlkVmVjdG9yLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZHNbaV0gPSAoU3RyaW5nKWlkVmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gaWRzOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvLmNsYXNzcGF0aCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMTY1ZWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjLyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjQiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkZWZmZTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotYmluCi1idWlsZC54bWwKLXRlbXAuZm9sZGVyCi13cy11aS5qYXIKLUBkb3QKLXNyYy56aXAKLWphdmFDb21waWxlci4uLmFyZ3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpLy5wcm9qZWN0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MDE2NjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5qc3Qud3MudWk8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjJhNWJlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSNNb24gSmFuIDMwIDEwOjM3OjA3IEVTVCAyMDA2Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS40Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFubm90YXRpb25TdXBlckludGVyZmFjZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hdXRvYm94aW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbXB0eVN0YXRlbWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maWVsZEhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxQYXJhbWV0ZXJCb3VuZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsbHlCbG9ja05vdENvbXBsZXRpbmdOb3JtYWxseT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZvcmJpZGRlblJlZmVyZW5jZT1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5oaWRkZW5DYXRjaEJsb2NrPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wYXRpYmxlTm9uSW5oZXJpdGVkSW50ZXJmYWNlTWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wbGV0ZUVudW1Td2l0Y2g9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluZGlyZWN0U3RhdGljQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5sb2NhbFZhcmlhYmxlSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5tZXRob2RXaXRoQ29uc3RydWN0b3JOYW1lPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ0RlcHJlY2F0ZWRBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nT3ZlcnJpZGVBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nU2VyaWFsVmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vRWZmZWN0QXNzaWdubWVudD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vSW1wbGljaXRTdHJpbmdDb252ZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9uRXh0ZXJuYWxpemVkU3RyaW5nTGl0ZXJhbD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ub3ZlcnJpZGluZ1BhY2thZ2VEZWZhdWx0TWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucG9zc2libGVBY2NpZGVudGFsQm9vbGVhbkFzc2lnbm1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnNwZWNpYWxQYXJhbWV0ZXJIaWRpbmdGaWVsZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdGF0aWNBY2Nlc3NSZWNlaXZlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN1cHByZXNzV2FybmluZ3M9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zeW50aGV0aWNBY2Nlc3NFbXVsYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnR5cGVQYXJhbWV0ZXJIaWRpbmc9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmNoZWNrZWRUeXBlT3BlcmF0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5kb2N1bWVudGVkRW1wdHlCbG9jaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5oYW5kbGVkV2FybmluZ1Rva2VuPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlFbHNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeVR5cGVDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5xdWFsaWZpZWRGaWVsZEFjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uV2hlbk92ZXJyaWRpbmc9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkSW1wb3J0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkTG9jYWw9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXI9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5JbXBsZW1lbnRpbmdBYnN0cmFjdD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuT3ZlcnJpZGluZ0NvbmNyZXRlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFByaXZhdGVNZW1iZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS52YXJhcmdzQXJndW1lbnROZWVkQ2FzdD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS4zCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2ZmVhMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6NDA6NDUgRVNUIDIwMDYKLWNvbXBpbGVycy5wLmRlcHJlY2F0ZWQ9MQotY29tcGlsZXJzLnAubm8tcmVxdWlyZWQtYXR0PTAKLWNvbXBpbGVycy5wLm5vdC1leHRlcm5hbGl6ZWQtYXR0PTEKLWNvbXBpbGVycy5wLnVua25vd24tYXR0cmlidXRlPTAKLWNvbXBpbGVycy5wLnVua25vd24tY2xhc3M9MAotY29tcGlsZXJzLnAudW5rbm93bi1lbGVtZW50PTEKLWNvbXBpbGVycy5wLnVua25vd24tcmVzb3VyY2U9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1leC1wb2ludHM9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1pbXBvcnQ9MAotY29tcGlsZXJzLnVzZS1wcm9qZWN0PXRydWUKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjRhZTA2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJVBMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5qc3Qud3MudWk7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC40MDIucXVhbGlmaWVyCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkucGx1Z2luLldlYlNlcnZpY2VVSVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmFjdGlvbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb247eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuZGlhbG9nO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLnBsdWdpbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5wcmVmZXJlbmNlczt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS51ZGRpO3gtaW50ZXJuYWw6PXRydWUKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnY7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cztidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qZHQuY29yZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamR0LnVpO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS51aS5pZGU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuZWNvcmU7YnVuZGxlLXZlcnNpb249IlsyLjIuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmplbS51dGlsO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAyLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2UuanN0LmoyZWU7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53cy5leHBsb3JlcjtidW5kbGUtdmVyc2lvbj0iWzEuMC4yMDQsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZS5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3M7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbDtidW5kbGUtdmVyc2lvbj0iWzEuMi4wLDEuMy4wKSIKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL2Fib3V0Lmh0bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL2J1aWxkLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWRlYzMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXNvdXJjZS4uID0gc3JjLwotYmluLmluY2x1ZGVzID0gLixcCi0gICAgICAgICAgICAgICBpY29ucy8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvaWNvbnMvamFyX29iai5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9pY29ucy9qYXJfb2JqLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUyZjRmMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9pY29ucy9qYXJfb2JqLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDAyYTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPVdlYiBTZXJ2aWNlcyBHcmFwaGljYWwgVXNlciBJbnRlcmZhY2UKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotCi1QTFVHSU5fTkVXX0NBVEVHT1JZX05BTUVfV1M9V2ViIFNlcnZpY2VzCi0KLSMKLSMJV2ViIFNlcnZpY2VzIFByZWZlcmFuY2UgUGFnZXMKLSMKLSMgQ2F0ZWdvcmllcwotUFJFRkVSRU5DRV9DQVRFR09SWV9SRVNPVVJDRV9NQU5BR0VNRU5UPVJlc291cmNlIE1hbmFnZW1lbnQKLQotIwotIyAgV1MtSSBQcmVmZXJlbmNlIHBhZ2VzCi0jCi0jIFdTLUkgQ29tcGxpYW5jZSBQYWdlCi0jCi1QUkVGRVJFTkNFX0NBVEVHT1JZX1dTST1XUy1JIENvbXBsaWFuY2UKLQotIwotIyBQb3B1cCBhY3Rpb24gQ2F0ZWdvcnkKLSMKLUxBQkVMX1BPUFVQX0NBVEVHT1JZX1dFQl9TRVJWSUNFUz1XZWIgU2VydmljZXMKLQotIwotIyBNZXNzYWdlcyBmb3IgcG9wdXAgYWN0aW9uIChUZXN0IHdpdGggV2ViIFNlcnZpY2VzIEV4cGxvcmVyKQotIwotUE9QVVBfVEVTVF9XU0RMPVRlc3Qgd2l0aCBXZWIgU2VydmljZXMgRXhwbG9yZXIKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvcGx1Z2luLnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhMGM5ZWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci0KLTxwbHVnaW4+Ci0KLSAgICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLm5ld1dpemFyZHMiPgotICAgICAgPGNhdGVnb3J5Ci0gICAgICAgICAgICBuYW1lPSIlUExVR0lOX05FV19DQVRFR09SWV9OQU1FX1dTIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy51aS5uZXciPgotICAgICAgPC9jYXRlZ29yeT4KLSAgIDwvZXh0ZW5zaW9uPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkucHJlZmVyZW5jZVBhZ2VzIj4KLSAgICAgIAotICAgICAgPHBhZ2UKLSAgICAgICAgICAgIG5hbWU9IiVQUkVGRVJFTkNFX0NBVEVHT1JZX1JFU09VUkNFX01BTkFHRU1FTlQiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLnByZWZlcmVuY2VzLm5hbWUiCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLnByZWZlcmVuY2VzLlJlc291cmNlTWFuYWdtZW50UHJlZmVyZW5jZVBhZ2UiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLnByZWZlcmVuY2VzLlJlc291cmNlTWFuYWdtZW50UHJlZmVyZW5jZVBhZ2UiPgotICAgICAgPC9wYWdlPgotCi0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLnByb3BlcnR5UGFnZXMiPgotCi0gICAgICAKLQotICAgPC9leHRlbnNpb24+Ci0KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5wb3B1cE1lbnVzIj4KLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5FbnRlcnByaXNlQmVhbiIKLSAgICAgICAgICAgIGFkYXB0YWJsZT0idHJ1ZSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXRrLnVpLndlYnNlcnZpY2UuY2F0ZWdvcnkuZWpiLnBvcHVwTWVudSI+Ci0gICAgICAgICA8bWVudQotICAgICAgICAgICAgICAgbGFiZWw9IiVMQUJFTF9QT1BVUF9DQVRFR09SWV9XRUJfU0VSVklDRVMiCi0gICAgICAgICAgICAgICBwYXRoPSJhZGRpdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmF0ay51aS53ZWJzZXJ2aWNlLmNhdGVnb3J5LmVqYi5wb3B1cE1lbnUiPgotICAgICAgICAgICAgPHNlcGFyYXRvcgotICAgICAgICAgICAgICAgICAgbmFtZT0icG9wdXBBY3Rpb25zIj4KLSAgICAgICAgICAgIDwvc2VwYXJhdG9yPgotICAgICAgICAgPC9tZW51PgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuanN0LmphdmFlZS5lamIuU2Vzc2lvbkJlYW4iCi0gICAgICAgICAgICBhZGFwdGFibGU9InRydWUiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmF0ay51aS53ZWJzZXJ2aWNlLmNhdGVnb3J5LmVqYjMucG9wdXBNZW51Ij4KLSAgICAgICAgIDxtZW51Ci0gICAgICAgICAgICAgICBsYWJlbD0iJUxBQkVMX1BPUFVQX0NBVEVHT1JZX1dFQl9TRVJWSUNFUyIKLSAgICAgICAgICAgICAgIHBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXRrLnVpLndlYnNlcnZpY2UuY2F0ZWdvcnkuZWpiMy5wb3B1cE1lbnUiPgotICAgICAgICAgICAgPHNlcGFyYXRvcgotICAgICAgICAgICAgICAgICAgbmFtZT0icG9wdXBBY3Rpb25zIj4KLSAgICAgICAgICAgIDwvc2VwYXJhdG9yPgotICAgICAgICAgPC9tZW51PgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0gICAgICAKLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NjbGllbnQuU2VydmljZVJlZiIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9IioiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmFjdGlvbi5XU0RMRmlsZU1lbnUiCi0gICAgICAgICAgICBhZGFwdGFibGU9InRydWUiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9URVNUX1dTREwiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLnBvcHVwLlBvcHVwVGVzdFNlcnZpY2UiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5wb3B1cC5Qb3B1cFRlc3RTZXJ2aWNlIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIAotPC9wbHVnaW4+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL1dTVUlQbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvV1NVSVBsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTExZjI1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvV1NVSVBsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotIyAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAyMDA2MDIyNyAgIDEyNDM5MiByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSMgMjAwNjAzMjkgICAxMjg4Mjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMgMjAwNjAzMjkgICAxMjQ2Njcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMgMjAwNjAzMzEgICAxMjg4Mjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMgMjAwODAzMjQgICAyMjA5ODMgdHJ1bmdoYUBjYS5pYm0uY29tIC0gVHJ1bmcgSGEKLSMgMjAwODAzMjYgICAxNzE3MDUgdHJ1bmdoYUBjYS5pYm0uY29tIC0gVHJ1bmcsIGltcHJvdmUgQW50VGFzayBlcnJvcnMgcmVwb3J0Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPVdlYiBTZXJ2aWNlcyBHcmFwaGljYWwgVXNlciBJbnRlcmZhY2UKLVBMVUdJTl9WRU5ET1I9RWNsaXBzZS5vcmcKLVBMVUdJTl9ERVNDPVwKLVRoZSBXZWIgc2VydmljZXMgR1VJIHBsdWdpbiBkZWxpdmVycyB0aGUgZ3JhcGhpY2FsIFwKLXVzZXIgaW50ZXJmYWNlIHRvIHRoZSBXZWIgc2VydmljZXMgZnVuY3Rpb24gb2YgdGhlIFwKLVdlYiBzZXJ2aWNlcyBwbHVnaW4uCi0KLVBMVUdJTl9ORVdfQ0FURUdPUllfTkFNRV9XUz1XZWIgU2VydmljZXMKLQotIwotIwlXZWIgU2VydmljZXMgUHJlZmVyYW5jZSBQYWdlcwotIwotIyBDYXRlZ29yaWVzCi1QUkVGRVJFTkNFX0NBVEVHT1JZX1JFU09VUkNFX01BTkFHRU1FTlQ9UmVzb3VyY2UgTWFuYWdlbWVudAotUFJFRkVSRU5DRV9DQVRFR09SWV9DT0RFX0dFTkVSQVRJT049Q29kZSBHZW5lcmF0aW9uCi1QUkVGRVJFTkNFX0NBVEVHT1JZX1NDRU5BUklPX0RFRkFVTFRTPVNjZW5hcmlvIERlZmF1bHRzCi1QUkVGRVJFTkNFX0NBVEVHT1JZX1BST0pFQ1RfVE9QT0xPR1k9UHJvamVjdCBUb3BvbG9neQotUFJFRkVSRU5DRV9DQVRFR09SWV9EUklWRVJfSkFSUz1KREJDIGRyaXZlcnMKLQotIwotI1NjZW5hcmlvIERlZmF1bHRzCi1CVVRUT05fTEFVTkNIX1NBTVBMRT0mTGF1bmNoIHRoZSBzYW1wbGUgd2hlbiBnZW5lcmF0ZWQKLUxBQkVMX01PVkVfVVA9JlVwCi1MQUJFTF9NT1ZFX0RPV049JkRvd24KLUxBQkVMX01PVkVfVVBfMj1VJnAKLUxBQkVMX01PVkVfRE9XTl8yPURvdyZuCi0KLSMKLSMgUHJlZmVyZW5jZXMgVG9vbHRpcHMKLSMKLQotI1NjZW5hcmlvIERlZmF1bHRzCi1UT09MVElQX1BQU0RfUEFHRT1TZXQgdGhlIGRlZmF1bHRzIGZvciB0aGUgV2ViIHNlcnZpY2Ugc2NlbmFyaW9zLgotVE9PTFRJUF9QUFNEX0NIRUNLQk9YX0xBVU5DSF9TQU1QTEU9TGF1bmNoIHRoZSBzYW1wbGUgYXBwbGljYXRpb24gYWZ0ZXIgZ2VuZXJhdGlvbi4KLVRPT0xUSVBfU0VSVklDRV9UWVBFX1RBQkxFX1ZJRVdFUj1QcmVmZXJyZWQgb3JkZXIgb2YgdGhlIGxpc3Qgb2Ygc2VydmljZSBwcm9qZWN0IHR5cGVzCi1UT09MVElQX0NMSUVOVF9UWVBFX1RBQkxFX1ZJRVdFUj1QcmVmZXJyZWQgb3JkZXIgb2YgdGhlIGxpc3Qgb2YgY2xpZW50IHByb2plY3QgdHlwZXMKLVRPT0xUSVBfTU9WRV9VUD1Nb3ZlIHRoZSBzZWxlY3RlZCBwcm9qZWN0IHR5cGUgdXAgdGhlIGxpc3QKLVRPT0xUSVBfTU9WRV9ET1dOPU1vdmUgdGhlIHNlbGVjdGVkIHByb2plY3QgdHlwZSBkb3duIHRoZSBsaXN0Ci0KLSMKLSMgUmVzb3VyY2UgTWFuYWdtZW50Ci1UT09MVElQX1BQUk1fUEFHRT1TZXQgcHJlZmVyZW5jZXMgdGhhdCBjb250cm9sIHJlc291cmNlcyB1c2VkL2dlbmVyYXRlZCBieSB0aGUgV2ViIHNlcnZpY2UuCi1UT09MVElQX1BQUk1fQ0hFQ0tCT1hfT1ZFUldSSVRFX0ZJTEVTPU92ZXJ3cml0ZSBmaWxlcyB3aXRob3V0IHdhcm5pbmcuCi1UT09MVElQX1BQUk1fQ0hFQ0tCT1hfQ1JFQVRFX0ZPTERFUlM9Q3JlYXRlIGZvbGRlcnMgd2hlbiBuZWNlc3NhcnkuCi1UT09MVElQX1BQUk1fQ0hFQ0tCT1hfQ0hFQ0tfT1VUPUNoZWNrIG91dCBmaWxlcyB3aXRob3V0IHdhcm5pbmcuCi1UT09MVElQX1BQUk1fQ0hFQ0tCT1hfU0tFTEVUT05fTUVSR0U9RW5hYmxlIG1lcmdpbmcgb2YgZ2VuZXJhdGVkIHNrZWxldG9uIGZpbGUuCi1CVVRUT05fQ1JFQVRFX0ZPTERFUlM9JkNyZWF0ZSBmb2xkZXJzIHdoZW4gbmVjZXNzYXJ5Ci1CVVRUT05fT1ZFUldSSVRFX0ZJTEVTPSZPdmVyd3JpdGUgZmlsZXMgd2l0aG91dCB3YXJuaW5nCi1CVVRUT05fQ0hFQ0tPVVRfRklMRVM9QyZoZWNrIG91dCBmaWxlcyB3aXRob3V0IHdhcm5pbmcKLUJVVFRPTl9TS0VMRVRPTl9NRVJHRT0mTWVyZ2UgZ2VuZXJhdGVkIHNrZWxldG9uIGZpbGUKLQotIwotIyBHZW5lcmFsIG1lc3NhZ2VzLgotIwotSVNUQVRVU19XSVRIT1VUX0VYQ0VQVElPTj17MH0KLUlTVEFUVVNfV0lUSF9FWENFUFRJT049ezB9XG5FeGNlcHRpb246IHsxfQotTVNHX0lORk9fU0FWRURfU1RBVFVTPUlXQUIwMjk3SSBQcmVzcyB0aGUgRGV0YWlscyBidXR0b24gdG8gc2VlIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMuCi1NU0dfU0VFX0VSUk9SX0xPRz1TZWUgdGhlIFBsYXRmb3JtJ3MgZXJyb3IgbG9nIGZvciBkZXRhaWwKLQotIwotIyBUeXBlU2VsZWN0aW9uRGlhbG9nCi0jCi1ESUFMT0dfVElUTEVfQ0xBU1NfQlJPV1NFPUJyb3dzZSBDbGFzc2VzCi1MQUJFTF9DTEFTU19CUk9XU0U9Q2xhc3MgbmFtZTogKD8gPSBhbnkgY2hhcmFjdGVyLCAqID0gYW55IHN0cmluZykKLURJQUxPR19USVRMRV9JTlRFUkZBQ0VfQlJPV1NFPUJyb3dzZSBJbnRlcmZhY2VzCi0KLSMKLSMgQ29tbW9uIHdpemFyZCBzdHJpbmdzLgotIwotTEFCRUxfU0FNUExFX1RZUEVTPUphdmEgcHJveHkgc2FtcGxlOgotCi0jCi0jIFJlc291cmNlU2VsZWN0aW9uRGlhbG9nCi0jCi1ESUFMT0dfVElUTEVfUkVTT1VSQ0VfQlJPV1NFPUJyb3dzZSBGaWxlcwotTEFCRUxfUkVTT1VSQ0VfRklMVEVSPUZpbHRlcjoKLQotIwotIyBUb29sdGlwcyBmb3IgZGlhbG9nLlJlc291cmNlU2VsZWN0aW9uRGlhbG9nCi0jIERSRVM9RGlhbG9nL1JFU291cmNlcwotIwotVE9PTFRJUF9EUkVTX0NPTUJPX1JFU09VUkNFX1RZUEU9VHlwZSBvZiByZXNvdXJjZXMgdG8gYnJvd3NlLgotVE9PTFRJUF9EUkVTX1RSRUVfUkVTT1VSQ0U9UmVzb3VyY2VzIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uLgotCi0jCi0jIE1lc3NhZ2VzIGZvciBwcm9qZWN0IHRvcG9sb2d5IHByZWZlcmVuY2UgcGFnZQotIwotVE9PTFRJUF9QVFBQX1BBR0U9UHJlZmVyZW5jZSB0aGF0IGNvbnRyb2wgdGhlIHByb2plY3QgdG9wb2xvZ3kgb2YgeW91ciBXZWIgc2VydmljZSBhbmQgY2xpZW50IHNjZW5hcmlvcy4KLVRPT0xUSVBfRU5BQkxFX1RXT19FQVJTPUVuYWJsZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBnZW5lcmF0ZSB5b3VyIFdlYiBzZXJ2aWNlIGFuZCBXZWIgc2VydmljZSBjbGllbnQgaW4gZGlmZmVyZW50IEVBUiBwcm9qZWN0cy4KLQotTEFCRUxfRU5BQkxFX1RXT19FQVJTPSZHZW5lcmF0ZSBXZWIgc2VydmljZSBhbmQgV2ViIHNlcnZpY2UgY2xpZW50IGluIGRpZmZlcmVudCBFQVIgcHJvamVjdHMKLUxBQkVMX0NMSUVOVF9UWVBFX05BTUU9Q2xpZW50IHByb2plY3QgdHlwZXMKLUxBQkVMX1NFUlZJQ0VfVFlQRV9OQU1FPVNlcnZpY2UgcHJvamVjdCB0eXBlcwotIwotIyBSZXNvdXJjZSBCcm93c2VyCi0jCi1ESUFMT0dfVElUTEVfUkVTT1VSQ0VfQlJPV1NFUj1SZXNvdXJjZSBicm93c2VyCi1UT09MVElQX1JFU09VUkNFX1RSRUU9Q2hvb3NlIGEgcmVzb3VyY2UuCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL1dTVUlQbHVnaW5NZXNzYWdlcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9XU1VJUGx1Z2luTWVzc2FnZXMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJjMTU3NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL1dTVUlQbHVnaW5NZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjI3ICAgMTI0MzkyIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjAzMjkgICAxMjg4Mjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwMzI5ICAgMTI0NjY3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDMzMSAgIDEyODgyNyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA1MTUgICAxNDEzOTggY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqIDIwMDgwMzI0ICAgMjIwOTgzIHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nIEhhCi0gKiAyMDA4MDMyNiAgIDE3MTcwNSB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZywgaW1wcm92ZSBBbnRUYXNrIGVycm9ycyByZXBvcnQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotCi1wdWJsaWMgZmluYWwgY2xhc3MgV1NVSVBsdWdpbk1lc3NhZ2VzIGV4dGVuZHMgTkxTIHsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCVU5ETEVfTkFNRSA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuV1NVSVBsdWdpbiI7Ly8kTk9OLU5MUy0xJAotCi0JcHJpdmF0ZSBXU1VJUGx1Z2luTWVzc2FnZXMoKSB7Ci0JCS8vIERvIG5vdCBpbnN0YW50aWF0ZQotCX0KLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBMVUdJTl9OQU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBMVUdJTl9WRU5ET1I7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUExVR0lOX0RFU0M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUExVR0lOX05FV19DQVRFR09SWV9OQU1FX1dTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBSRUZFUkVOQ0VfQ0FURUdPUllfUkVTT1VSQ0VfTUFOQUdFTUVOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQUkVGRVJFTkNFX0NBVEVHT1JZX0NPREVfR0VORVJBVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQUkVGRVJFTkNFX0NBVEVHT1JZX1NDRU5BUklPX0RFRkFVTFRTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBSRUZFUkVOQ0VfQ0FURUdPUllfUFJPSkVDVF9UT1BPTE9HWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQUkVGRVJFTkNFX0NBVEVHT1JZX0RSSVZFUl9KQVJTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9MQVVOQ0hfU0FNUExFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX01PVkVfVVA7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfTU9WRV9ET1dOOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX01PVkVfVVBfMjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9NT1ZFX0RPV05fMjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BQU0RfUEFHRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BQU0RfQ0hFQ0tCT1hfTEFVTkNIX1NBTVBMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX0NMSUVOVF9UWVBFX1RBQkxFX1ZJRVdFUjsKLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1NFUlZJQ0VfVFlQRV9UQUJMRV9WSUVXRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9NT1ZFX1VQOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfTU9WRV9ET1dOOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFBSTV9QQUdFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFBSTV9DSEVDS0JPWF9PVkVSV1JJVEVfRklMRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUFJNX0NIRUNLQk9YX0NSRUFURV9GT0xERVJTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFBSTV9DSEVDS0JPWF9DSEVDS19PVVQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUFJNX0NIRUNLQk9YX1NLRUxFVE9OX01FUkdFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9DUkVBVEVfRk9MREVSUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fT1ZFUldSSVRFX0ZJTEVTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEJVVFRPTl9DSEVDS09VVF9GSUxFUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fU0tFTEVUT05fTUVSR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgSVNUQVRVU19XSVRIT1VUX0VYQ0VQVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBJU1RBVFVTX1dJVEhfRVhDRVBUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19JTkZPX1NBVkVEX1NUQVRVUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU0VFX0VSUk9SX0xPRzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBESUFMT0dfVElUTEVfQ0xBU1NfQlJPV1NFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0NMQVNTX0JST1dTRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBESUFMT0dfVElUTEVfSU5URVJGQUNFX0JST1dTRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TQU1QTEVfVFlQRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRElBTE9HX1RJVExFX1JFU09VUkNFX0JST1dTRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9SRVNPVVJDRV9GSUxURVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9EUkVTX0NPTUJPX1JFU09VUkNFX1RZUEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9EUkVTX1RSRUVfUkVTT1VSQ0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QVFBQX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9FTkFCTEVfVFdPX0VBUlM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfRU5BQkxFX1RXT19FQVJTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX0NMSUVOVF9UWVBFX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRElBTE9HX1RJVExFX1JFU09VUkNFX0JST1dTRVI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9SRVNPVVJDRV9UUkVFOwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1NFUlZJQ0VfVFlQRV9OQU1FOwotCi0Jc3RhdGljIHsKLQkJTkxTLmluaXRpYWxpemVNZXNzYWdlcyhCVU5ETEVfTkFNRSwgV1NVSVBsdWdpbk1lc3NhZ2VzLmNsYXNzKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2FjdGlvbi9MYXVuY2hJbXBvcnRXaXphcmRBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvYWN0aW9uL0xhdW5jaEltcG9ydFdpemFyZEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjdjZDdjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvYWN0aW9uL0xhdW5jaEltcG9ydFdpemFyZEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5hY3Rpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5hY3Rpb24uSUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuV2l6YXJkRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklBY3Rpb25EZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkR5bmFtaWNXaXphcmQ7Ci0KLQotLyoqCi0gKiBUaGlzIGNsYXNzIGxhdW5jaGVzIHRoZSBpbXBvcnQgd2l6YXJkLgotICovCi1wdWJsaWMgY2xhc3MgTGF1bmNoSW1wb3J0V2l6YXJkQWN0aW9uIGltcGxlbWVudHMgSUFjdGlvbkRlbGVnYXRlCi17Ci0gICAgcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb25fOwotICAgIAotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLklBY3Rpb25EZWxlZ2F0ZSNydW4ob3JnLmVjbGlwc2UuamZhY2UuYWN0aW9uLklBY3Rpb24pCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgcnVuKElBY3Rpb24gYWN0aW9uKSAKLSAgICB7Ci0gICAgICBEeW5hbWljV2l6YXJkIHdpemFyZCA9IG5ldyBEeW5hbWljV2l6YXJkKCk7Ci0gICAgICAKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICB3aXphcmQuc2V0SW5pdGlhbERhdGEoICJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud3NpbXBvcnQiICk7Ci0gICAgICAgIHdpemFyZC5pbml0KCBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLCBzZWxlY3Rpb25fICk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCggQ29yZUV4Y2VwdGlvbiBleGMgKQotICAgICAgewotICAgICAgICAvLyBEbyBub3RoaW5nLgotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICAKLSAgCSAgV2l6YXJkRGlhbG9nIGRpYWxvZz0gbmV3IFdpemFyZERpYWxvZyhQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvdygpLmdldFNoZWxsKCksIHdpemFyZCk7Ci0JICBkaWFsb2cuc2V0UGFnZVNpemUoIDUwMCwgNDAwICk7Ci0JICBkaWFsb2cuY3JlYXRlKCk7Ci0JICBkaWFsb2cub3BlbigpOwotICAgIH0KLSAgICAKLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS51aS5JQWN0aW9uRGVsZWdhdGUjc2VsZWN0aW9uQ2hhbmdlZChvcmcuZWNsaXBzZS5qZmFjZS5hY3Rpb24uSUFjdGlvbiwgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uKQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoSUFjdGlvbiBhY3Rpb24sIElTZWxlY3Rpb24gc2VsZWN0aW9uKSAKLSAgICB7Ci0gICAgICBpZiggc2VsZWN0aW9uIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24gKQotICAgICAgewotICAgICAgICBzZWxlY3Rpb25fID0gKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKXNlbGVjdGlvbjsKLSAgICAgIH0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2FjdGlvbi9XZWJTZXJ2aWNlRGVwbG95LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2FjdGlvbi9XZWJTZXJ2aWNlRGVwbG95LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ZDQ4YjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9hY3Rpb24vV2ViU2VydmljZURlcGxveS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5hY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotCi0KLXB1YmxpYyBpbnRlcmZhY2UgV2ViU2VydmljZURlcGxveSB7Ci0JcHVibGljIHZvaWQgcnVuKElSZXNvdXJjZSBzZWxlY3Rpb24pOyAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvYWN0aW9uL1dlYlNlcnZpY2VEZXBsb3lBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvYWN0aW9uL1dlYlNlcnZpY2VEZXBsb3lBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ0ODk3My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2FjdGlvbi9XZWJTZXJ2aWNlRGVwbG95QWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuYWN0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlNlcnZlclV0aWxzOwotCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZURlcGxveUFjdGlvbiBleHRlbmRzIFdpbmRvd0FjdGlvbkRlbGVnYXRlIHsKLXB1YmxpYyB2b2lkIHJ1bihvcmcuZWNsaXBzZS5qZmFjZS5hY3Rpb24uSUFjdGlvbiBhY3Rpb24pIHsKLQotICAgSVByb2plY3QgcHJvamVjdCA9IGdldFNlbGVjdGVkUmVzb3VyY2VQcm9qZWN0KCk7Ci0KLSAgIFN0cmluZyBbXSB0eXBlSWRzID0gU2VydmVyVXRpbHMuZ2V0U2VydmVyVHlwZUlkc0J5TW9kdWxlKHByb2plY3QpOwotICAgT2JqZWN0IHRoZUFjdGlvbiA9IG51bGw7Ci0KLSAgIElFeHRlbnNpb25SZWdpc3RyeSByZWcgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gZWxlbWVudHMgPSByZWcuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzRm9yKCJvcmcuZWNsaXBzZS5qc3Qud3MudWkiLCAid2Vic2VydmljZWRlcGxveSIpOwotICAgdHJ5IHsKLSAgIAkKLSAgIAlpZiAodHlwZUlkcyA9PSBudWxsIHx8IHR5cGVJZHMubGVuZ3RoIDw9IDApCi0gICAJewotICAgCSAJLy8gdGhhdCBtZWFucyB0aGUgbW9kdWxlIGlzIG5vdCBhdHRhY2hlZCB0byBhIHNlcnZlciB0aGVuIHBpY2sgdGhlIGZpcnN0IGV4dGVuc2lvbiBmb3VuZAotICAgCSAgICB0aGVBY3Rpb24gPSBlbGVtZW50c1swXS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOwotICAgCX0KLSAgIAllbHNlIGlmICggdHlwZUlkcy5sZW5ndGggPT0gMSkKLSAgIAl7Ci0gICAJCS8vIHRoYXQgbWVhbnMgdGhlIG1vZHVsZSBpcyBhdHRhY2hlZCB0byBvbmUgc2VydmVyIHRoZW4gZmluZHMgaXQgaWQgYW5kIGEgbWF0Y2hpbiBleHRlbnNpb24gb3IgZ2l2ZSBhIG1lc3NhZ2UKLSAgIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykKLSAgICAgIAl7Ci0JCSAgIAlTdHJpbmcgaWQgPSBlbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoImZhY3RvcnlJZCIpOwotICAgIAkgICAJaWYgKCB0eXBlSWRzWzBdLmVxdWFscyhpZCkpCi0JCSAgIAl7Ci0JCSAgIAkJdGhlQWN0aW9uID0gZWxlbWVudHNbaV0uY3JlYXRlRXhlY3V0YWJsZUV4dGVuc2lvbigiY2xhc3MiKTsKLQkJICAgCQlicmVhazsKLQkJICAgCX0KLSAgIAkJfQotICAgCQlpZiAodGhlQWN0aW9uID09IG51bGwgKQotICAgCQkJewotICAgCQkJCS8vIGdpdmUgYSBtZXNzYWdlCi0gICAJCQl9Ci0gICAJfQotICAgCWVsc2UKLSAgIAl7Ci0JCS8vIFRoZSBtb2R1bGUgaXMgYXR0YWNoZWQgdG8gbW9yZSB0aGFuIG9uZSBzZXJ2ZXIgZmluZCB0aGUgZmlyc3Qgc2VydmVyLWV4dGVuc2lvbiBjb3VwbGUKLQkJLy8gVEJEOiBhZGQgYSBkaWFsb2cgdG8gY2hvb3NlIHRoZSBzZXJ2ZXIgZm9yIGRlcGxveW1lbnQKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykKLSAgICAgIAl7Ci0JCSAgIAlTdHJpbmcgaWQgPSBlbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoImZhY3RvcnlJZCIpOwotCQkgICAJZm9yICggaW50IGs9MDsgazwgdHlwZUlkcy5sZW5ndGg7IGsrKykKLQkJICAgCXsKLSAgICAJICAgCQlpZiAoIHR5cGVJZHNba10uZXF1YWxzKGlkKSkKLQkJICAgCQl7Ci0JCSAgIAkJCXRoZUFjdGlvbiA9IGVsZW1lbnRzW2ldLmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oImNsYXNzIik7Ci0JCSAgIAkJCWJyZWFrOwotCQkgICAJCX0KLQkJICAgCX0KLQkJICAgaWYgKHRoZUFjdGlvbiAhPSBudWxsKSBicmVhazsKLSAgIAkJIH0KLQkJaWYgKHRoZUFjdGlvbiA9PSBudWxsKSAKLQkJCXsKLQkJCQkvLyBnaXZlIGEgTWVzc2FnZQotCQkJfQotICAgCX0KLQotICAgIGlmICh0aGVBY3Rpb24gaW5zdGFuY2VvZiBXZWJTZXJ2aWNlRGVwbG95KQotICAgICAgICAgICgoV2ViU2VydmljZURlcGxveSl0aGVBY3Rpb24pLnJ1bihwcm9qZWN0KTsgICAKLSAgfQotCi0gIGNhdGNoIChFeGNlcHRpb24gZSkge30KLX0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2FjdGlvbi9XaW5kb3dBY3Rpb25EZWxlZ2F0ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9hY3Rpb24vV2luZG93QWN0aW9uRGVsZWdhdGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhkNTEyYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2FjdGlvbi9XaW5kb3dBY3Rpb25EZWxlZ2F0ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmFjdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JQ29tcGlsYXRpb25Vbml0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklKYXZhUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hXaW5kb3dBY3Rpb25EZWxlZ2F0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLQotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgV2luZG93QWN0aW9uRGVsZWdhdGUgaW1wbGVtZW50cyBJV29ya2JlbmNoV2luZG93QWN0aW9uRGVsZWdhdGUgewotcHJvdGVjdGVkIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGZTZWxlY3Rpb247Ci0KLXB1YmxpYyBXaW5kb3dBY3Rpb25EZWxlZ2F0ZSgpIHsKLSAgICBzdXBlcigpOwotIH0KLQotcHVibGljIHZvaWQgZGlzcG9zZSgpIAotIHsKLSB9Ci0KLXB1YmxpYyB2b2lkIGluaXQob3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdyB3aW5kb3cpIHsgfQotCi1wdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKG9yZy5lY2xpcHNlLmpmYWNlLmFjdGlvbi5JQWN0aW9uIGFjdGlvbiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb24gc2VsZWN0aW9uKSB7Ci0gICBpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgIGZTZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbGVjdGlvbjsKLSB9Ci0KLXB1YmxpYyB2b2lkIHNldFNlbGVjdGlvbihJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pIHsKLQlmU2VsZWN0aW9uID0gc2VsZWN0aW9uOwotfQotcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldFNlbGVjdGlvbigpIHsKLQlyZXR1cm4gZlNlbGVjdGlvbjsKLX0KLQotcHVibGljIElQcm9qZWN0IGdldFNlbGVjdGVkUmVzb3VyY2VQcm9qZWN0KCkgewotIElQcm9qZWN0IHByb2plY3QgPSBudWxsOwotIElSZXNvdXJjZSByZXNvdXJjZV8gPSBudWxsOwotICAgdHJ5IHsKLSAgIAkJaWYgKGZTZWxlY3Rpb24gIT0gbnVsbCAmJiBmU2VsZWN0aW9uLnNpemUoKSA9PSAxKSAgICB7Ci0gICAgICAJCU9iamVjdCBvYmogPSBmU2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOwotCi0gICAgICAJCWlmIChvYmogIT0gbnVsbCkgICAgewotICAgICAgCQkJaWYgKCBvYmogaW5zdGFuY2VvZiBJUmVzb3VyY2UpIAotICAgICAgCQkJCXsKLSAgICAgIAkJCQkJcmVzb3VyY2VfID0gKElSZXNvdXJjZSkgb2JqOwotICAgICAgCQkJCX0KLSAgICAgIAkJCWVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIElDb21waWxhdGlvblVuaXQpCi0gICAgICAJCQl7Ci0gICAgICAgIAkJCUlDb21waWxhdGlvblVuaXQgY29tcFVuaXQgPSAoSUNvbXBpbGF0aW9uVW5pdClvYmo7Ci0gICAgICAgIAkJCXJlc291cmNlXz0gY29tcFVuaXQuZ2V0Q29ycmVzcG9uZGluZ1Jlc291cmNlKCk7Ci0gICAgICAJCQl9Ci0JCQkJZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgSUphdmFQcm9qZWN0KSB7Ci0JCQkJCXByb2plY3QgPSAoKElKYXZhUHJvamVjdCkgb2JqKS5nZXRQcm9qZWN0KCk7Ci0JCQkJfQotCi0JCQkJZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgRU9iamVjdCkgewotCQkJCQlwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KChFT2JqZWN0KSBvYmopOwotCQkJCX0KLQotICAgICAgCQkJaWYgKCByZXNvdXJjZV8gIT0gbnVsbCApCi0gICAJCQkJCXByb2plY3QgPSByZXNvdXJjZV8uZ2V0UHJvamVjdCgpOwotICAgICAgICAgCQkKLSAgICAJCX0KLSAgIAkJfQotICAgCX0JCi0gICBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9Ci0gICByZXR1cm4gcHJvamVjdDsKLSB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvY29tbW9uL0NvbWJvV2l0aEhpc3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvY29tbW9uL0NvbWJvV2l0aEhpc3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjYxMTUxZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2NvbW1vbi9Db21ib1dpdGhIaXN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDkwMzAyICAgMjQyNDYyIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIFNhdmUgV2ViIHNlcnZpY2VzIHdpemFyZCBzZXR0aW5ncwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb247Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5JRGlhbG9nU2V0dGluZ3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tYm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotCi1wdWJsaWMgZmluYWwgY2xhc3MgQ29tYm9XaXRoSGlzdG9yeSBleHRlbmRzIENvbWJvIGltcGxlbWVudHMgV2lkZ2V0V2l0aEhpc3RvcnkgewotCXByaXZhdGUgSURpYWxvZ1NldHRpbmdzIHNldHRpbmdzXzsKLQotCXB1YmxpYyBDb21ib1dpdGhIaXN0b3J5KENvbXBvc2l0ZSBwYXJlbnQsIGludCBzdHlsZSwKLQkJCUlEaWFsb2dTZXR0aW5ncyBzZXR0aW5ncykgewotCQlzdXBlcihwYXJlbnQsIHN0eWxlKTsKLQkJc2V0dGluZ3NfID0gc2V0dGluZ3M7Ci0JfQotCi0JcHVibGljIHZvaWQgcmVzdG9yZVdpZGdldEhpc3RvcnkoU3RyaW5nIHJlc3RvcmVLZXkpIHsKLQkJaWYgKHJlc3RvcmVLZXkgPT0gbnVsbCB8fCBzZXR0aW5nc18gPT0gbnVsbCkKLQkJCXJldHVybjsKLQkJU3RyaW5nW10gaGlzdG9yeVZhbHVlcyA9IHNldHRpbmdzXy5nZXRBcnJheShyZXN0b3JlS2V5KTsKLQkJaWYgKGhpc3RvcnlWYWx1ZXMgPT0gbnVsbCB8fCBoaXN0b3J5VmFsdWVzLmxlbmd0aCA9PSAwKSB7Ci0JCQlyZXR1cm47IC8vIGllLi0gbm8gaGlzdG9yeSBzdG9yZWQKLQkJfQotCQlTdHJpbmdbXSBleGlzdGluZ0l0ZW1zID0gdGhpcy5nZXRJdGVtcygpOwotCQlpZiAoZXhpc3RpbmdJdGVtcy5sZW5ndGggPT0gMCkgewotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBoaXN0b3J5VmFsdWVzLmxlbmd0aDsgaSsrKSB7Ci0JCQkJaWYgKGhpc3RvcnlWYWx1ZXNbaV0gIT0gbnVsbCkKLQkJCQkJYWRkKGhpc3RvcnlWYWx1ZXNbaV0pOwotCQkJfQotCQl9IGVsc2UgewotCQkJLy8gb25seSByZXN0b3JlIGZyb20gaGlzdG9yeSBpZiB3aWRnZXQgZG9lc24ndCBhbHJlYWR5IGNvbnRhaW4gdmFsdWUKLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgaGlzdG9yeVZhbHVlcy5sZW5ndGg7IGkrKykgewotCQkJCWJvb2xlYW4gZm91bmRJbkV4aXN0aW5nSXRlbXMgPSBmYWxzZTsKLQkJCQlmb3IgKGludCBqID0gMDsgaiA8IGV4aXN0aW5nSXRlbXMubGVuZ3RoOyBqKyspIHsKLQotCQkJCQlpZiAoZXhpc3RpbmdJdGVtc1tqXS5lcXVhbHMoaGlzdG9yeVZhbHVlc1tpXSkpIHsKLQkJCQkJCWZvdW5kSW5FeGlzdGluZ0l0ZW1zID0gdHJ1ZTsKLQkJCQkJCWJyZWFrOwotCQkJCQl9Ci0JCQkJfQotCQkJCWlmICghZm91bmRJbkV4aXN0aW5nSXRlbXMpCi0JCQkJCS8vIGRvZXNuJ3QgY29udGFpbiB2YWx1ZSBhbHJlYWR5Ci0JCQkJCWlmIChoaXN0b3J5VmFsdWVzW2ldICE9IG51bGwpCi0JCQkJCQlhZGQoaGlzdG9yeVZhbHVlc1tpXSk7Ci0KLQkJCX0KLQkJfQotCi0JfQotCi0JcHJvdGVjdGVkIHZvaWQgY2hlY2tTdWJjbGFzcygpIHsKLQkJLy8gZG8gbm90aGluZywgcmVxdWlyZWQgdG8gb3Zlci1yaWRlIHRoaXMgbWV0aG9kIGlmIGV4dGVuZGluZyBTV1QKLQkJLy8gd2lkZ2V0cywKLQkJLy8gbm90IGV4dGVuZGluZyBTV1QgaGVyZSBwZXItc2UgaGVyZSwgYnV0IGp1c3QgYWxsb3dpbmcgZm9yIGEgd3JhcHBlcgotCQkvLyBpbiBvcmRlciB0bwotCQkvLyBhZGQgaGlzdG9yeSB2aWEgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5JRGlhbG9nU2V0dGluZ3MKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzdG9yZVdpZGdldEhpc3RvcnkoU3RyaW5nIHN0b3JlS2V5KSB7Ci0JCWlmIChzdG9yZUtleSA9PSBudWxsIHx8IHNldHRpbmdzXyA9PSBudWxsKQotCQkJcmV0dXJuOwotCQlTdHJpbmcgY3VycmVudGx5U2VsZWN0ZWRWYWx1ZSA9IGdldFRleHQoKTsKLQkJU3RyaW5nW10gb2xkSGlzdG9yeVZhbHVlcyA9IHNldHRpbmdzXy5nZXRBcnJheShzdG9yZUtleSk7Ci0JCWlmIChvbGRIaXN0b3J5VmFsdWVzID09IG51bGwpIHsKLQkJCW9sZEhpc3RvcnlWYWx1ZXMgPSBuZXcgU3RyaW5nWzBdOwotCQl9Ci0JCS8vIHJpcCBvdXQgYW55IGVtcHR5IGhpc3RvcnksIGRvbid0IGFkZCBzZWxlY3RlZCB2YWx1ZSBhcyBwcm9jZXNzZWQKLQkJLy8gc2VwYXJhdGVseSwKLQkJLy8gYW5kIHRyaW0gbGVuZ3RoIHRvIDUKLQkJQXJyYXlMaXN0IG5ld0hpc3RvcnlWYWx1ZXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgb2xkSGlzdG9yeVZhbHVlcy5sZW5ndGggJiYgaSA8IDU7IGkrKykgewotCQkJaWYgKG9sZEhpc3RvcnlWYWx1ZXNbaV0gIT0gbnVsbAotCQkJCQkmJiBvbGRIaXN0b3J5VmFsdWVzW2ldLnRyaW0oKS5sZW5ndGgoKSA+IDAKLQkJCQkJJiYgIW9sZEhpc3RvcnlWYWx1ZXNbaV0uZXF1YWxzKGN1cnJlbnRseVNlbGVjdGVkVmFsdWUpKSB7Ci0JCQkJbmV3SGlzdG9yeVZhbHVlcy5hZGQob2xkSGlzdG9yeVZhbHVlc1tpXSk7Ci0JCQl9Ci0JCX0KLQkJLy8gYWRkIGN1cnJlbnRseSBzZWxlY3RlZCB2YWx1ZSB0byB0b3Agb2YgbGlzdCBpZiBub3QgZW1wdHkgc3RyaW5nCi0JCWlmIChjdXJyZW50bHlTZWxlY3RlZFZhbHVlLnRyaW0oKS5sZW5ndGgoKSA+IDApCi0JCQluZXdIaXN0b3J5VmFsdWVzLmFkZCgwLCBjdXJyZW50bHlTZWxlY3RlZFZhbHVlKTsKLQkJLy8gZG9uZSBwcm9jZXNzaW5nIG9sZCBoaXN0b3J5IHZhbHVlcywgcmVhbGxvY2F0ZSB0aGUgdmFyIHdpdGggc2FtZSBzaXplCi0JCS8vIGFzIG5ldyB2YWx1ZXMgd2UgYXJlIGFib3V0IHRvIHN0b3JlCi0JCW9sZEhpc3RvcnlWYWx1ZXMgPSBuZXcgU3RyaW5nW25ld0hpc3RvcnlWYWx1ZXMuc2l6ZSgpXTsKLQkJbmV3SGlzdG9yeVZhbHVlcy50b0FycmF5KG9sZEhpc3RvcnlWYWx1ZXMpOwotCQlzZXR0aW5nc18ucHV0KHN0b3JlS2V5LCBvbGRIaXN0b3J5VmFsdWVzKTsKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvY29tbW9uL0RpYWxvZ1Jlc291cmNlQnJvd3Nlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9jb21tb24vRGlhbG9nUmVzb3VyY2VCcm93c2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNDlkYjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9jb21tb24vRGlhbG9nUmVzb3VyY2VCcm93c2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDIzICAgMTgzMDc1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb247Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUNvbnRhaW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuRGVjb3JhdGluZ0xhYmVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU2VsZWN0aW9uQ2hhbmdlZEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVHJlZVZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlZpZXdlckZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuV1NVSVBsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5wbHVnaW4uV2ViU2VydmljZVVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVHJlZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLm1vZGVsLldvcmtiZW5jaENvbnRlbnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5tb2RlbC5Xb3JrYmVuY2hMYWJlbFByb3ZpZGVyOwotCi0vKioKLSogVGhpcyBjbGFzcyBwcm92aWRlcyBhIGRpYWxvZyBmb3IgYnJvd3Npbmcgd29ya3NwYWNlIHJlc291cmNlcy4KLSovCi1wdWJsaWMgY2xhc3MgRGlhbG9nUmVzb3VyY2VCcm93c2VyIGV4dGVuZHMgRGlhbG9nCi17Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUkVTT1VSQ0VfVFJFRSA9IFdlYlNlcnZpY2VVSVBsdWdpbi5JRCArICIuRFJFUzAwMDEiOwotCi0gIHByaXZhdGUgSVJlc291cmNlIHJvb3RfOwotICBwcml2YXRlIElGaWx0ZXJbXSBmaWx0ZXJzXzsKLSAgcHJpdmF0ZSBib29sZWFuIG11bHRpcGxlU2VsZWN0aW9uRW5hYmxlZF87Ci0gIHByaXZhdGUgSVJlc291cmNlW10gc2VsZWN0aW9uXzsKLSAgcHJpdmF0ZSBUcmVlIHJlc291cmNlVHJlZV87Ci0gIHByaXZhdGUgVHJlZVZpZXdlciBmaWxlVmlld2VyXzsKLSAgcHJpdmF0ZSBIYXNoTWFwICAgIHZpc2l0ZWRDb250YWluZXJzXzsKLSAgcHJpdmF0ZSBib29sZWFuICAgIGZvbGRlcnNTZWxlY3RhYmxlXzsKLQotICBwdWJsaWMgRGlhbG9nUmVzb3VyY2VCcm93c2VyKFNoZWxsIHNoZWxsLCBJUmVzb3VyY2Ugcm9vdCwgSUZpbHRlciBmaWx0ZXIpCi0gIHsKLSAgICB0aGlzKHNoZWxsLCByb290LCBuZXcgSUZpbHRlcltde2ZpbHRlcn0sIGZhbHNlICk7Ci0gIH0KLQotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPkRpYWxvZ1Jlc291cmNlQnJvd3NlcjwvY29kZT4KLSAgKiB1bmRlciB0aGUgZ2l2ZW4gPGNvZGU+cGFyZW50IFNoZWxsPC9jb2RlPi4KLSAgKiBUaGUgZGlhbG9nIHJlbmRlcnMgYWxsIHJlc291cmNlcyBpbmNsdWRpbmcgYW5kCi0gICogdW5kZXIgdGhlIGdpdmVuIDxjb2RlPnJvb3QgSVJlc291cmNlPC9jb2RlPgotICAqIEBwYXJhbSBwYXJlbnQgVGhlIHBhcmVudCB7QGxpbmsgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGx9LgotICAqIG9yIG51bGwgdG8gY3JlYXRlIGEgdG9wLWxldmVsIHNoZWxsLgotICAqIEBwYXJhbSByb290IFRoZSByb290IHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2V9LAotICAqIG9yIG51bGwgdG8gYmVnaW4gd2l0aCB0aGUgd29ya3NwYWNlIHJvb3QuCi0gICogQHBhcmFtIGZpbHRlcnMgQW4gYXJyYXkgb2YgamF2YS5sYW5nLlN0cmluZwotICAqLwotICBwdWJsaWMgRGlhbG9nUmVzb3VyY2VCcm93c2VyKFNoZWxsIHNoZWxsLCBJUmVzb3VyY2Ugcm9vdCwgSUZpbHRlcltdIGZpbHRlcnMpCi0gIHsKLSAgICB0aGlzKCBzaGVsbCwgcm9vdCwgZmlsdGVycywgZmFsc2UgKTsKLSAgfQotICAKLSAgcHVibGljIERpYWxvZ1Jlc291cmNlQnJvd3NlcihTaGVsbCBzaGVsbCwgSVJlc291cmNlIHJvb3QsIElGaWx0ZXJbXSBmaWx0ZXJzLCBib29sZWFuIGZvbGRlcnNTZWxlY3RhYmxlICkKLSAgewotICAgIHN1cGVyKHNoZWxsKTsKLQotICAgIElSZXNvdXJjZSBtb2R1bGVSb290ID0gcm9vdDsKLSAgICBpZiAocm9vdCBpbnN0YW5jZW9mIElQcm9qZWN0KQotICAgIHsKLSAgICAgIElQcm9qZWN0IHAgPSAoSVByb2plY3QpbW9kdWxlUm9vdDsKLSAgICAgCi0gICAgICAgIG1vZHVsZVJvb3QgPSBwOwotICAgIAotICAgIH0KLQotICAgIHJvb3RfID0gKG1vZHVsZVJvb3QgPT0gbnVsbCkgPyBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpIDogbW9kdWxlUm9vdDsKLSAgICBmaWx0ZXJzXyA9IChmaWx0ZXJzID09IG51bGwpID8gbmV3IElGaWx0ZXJbMF0gOiBmaWx0ZXJzOwotICAgIHZpc2l0ZWRDb250YWluZXJzXyA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgbXVsdGlwbGVTZWxlY3Rpb25FbmFibGVkXyA9IGZhbHNlOwotICAgIGZvbGRlcnNTZWxlY3RhYmxlXyA9IGZvbGRlcnNTZWxlY3RhYmxlOwotICAgIHNldFNoZWxsU3R5bGUoU1dULkRJQUxPR19UUklNIHwgU1dULlJFU0laRSB8IFNXVC5BUFBMSUNBVElPTl9NT0RBTCk7Ci0gIH0KLQotICAvKioKLSAgKiBFbmFibGVzIG9yIGRpc2FibGVzIG11bHRpcGxlIHNlbGVjdGlvbiBpbiB0aGUgdHJlZSB2aWV3LgotICAqIE11bHRpcGxlIHNlbGVjdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgotICAqIEBwYXJhbSBtdWx0aXBsZVNlbGVjdGlvbkVuYWJsZWQgVHJ1ZSB0byBlbmFibGVkIG9yIGZhbHNlIHRvIGRpc2FibGUuCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldE11bHRpcGxlU2VsZWN0aW9uRW5hYmxlZChib29sZWFuIG11bHRpcGxlU2VsZWN0aW9uRW5hYmxlZCkKLSAgewotICAgIG11bHRpcGxlU2VsZWN0aW9uRW5hYmxlZF8gPSBtdWx0aXBsZVNlbGVjdGlvbkVuYWJsZWQ7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBzZWxlY3Rpb25zIG1hZGUgaW4gdGhlIGRpYWxvZyBpZiBPSyB3YXMgcHJlc3NlZCwKLSAgKiBvciBudWxsIGlmIENhbmNlbCB3YXMgcHJlc3NlZC4gUmV0dXJucyBudWxsIGlmIHRoZSBkaWFsb2cKLSAgKiBoYXMgbmV2ZXIgYmVlbiBvcGVuZWQuCi0gICogQHJldHVybiBBbiBhcnJheSBvZiBzZWxlY3RlZCByZXNvdXJjZXMsIHBvc3NpYmx5IGVtcHR5LCBwb3NzaWJseSBudWxsLgotICAqLwotICBwdWJsaWMgSVJlc291cmNlW10gZ2V0U2VsZWN0aW9uKCkKLSAgewotICAgIHJldHVybiBzZWxlY3Rpb25fOwotICB9Ci0KLSAgcHVibGljIElSZXNvdXJjZSBnZXRGaXJzdFNlbGVjdGlvbigpCi0gIHsKLSAgICBpZiAoc2VsZWN0aW9uXyAhPSBudWxsICYmIHNlbGVjdGlvbl8ubGVuZ3RoID4gMCkKLSAgICAgIHJldHVybiBzZWxlY3Rpb25fWzBdOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgIC8qKgotICAqIENhbGxlZCB3aGVuIHRoZSBDYW5jZWwgYnV0dG9uIGlzIHByZXNzZWQuCi0gICogSW5zdXJlcyB0aGF0IHtAbGluayAjZ2V0UmVzdWx0fSB3aWxsIHJldHVybiBudWxsLgotICAqLwotICBwcm90ZWN0ZWQgdm9pZCBjYW5jZWxQcmVzc2VkKCkKLSAgewotICAgIHNlbGVjdGlvbl8gPSBudWxsOwotICAgIHNldFJldHVybkNvZGUoRGlhbG9nLkNBTkNFTCk7Ci0gICAgc3VwZXIuY2FuY2VsUHJlc3NlZCgpOwotICB9Ci0KLSAgLyoqCi0gICogQ2FsbGVkIHdoZW4gdGhlIE9LIGJ1dHRvbiBpcyBwcmVzc2VkLgotICAqIFNxdWlycmVscyBhd2F5IHRoZSBsaXN0IG9mIHplcm8gb3IgbW9yZSBzZWxlY3RlZAotICAqIDxjb2RlPklSZXNvdXJjZTwvY29kZT5zIHRvIGJlIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0UmVzdWx0fS4KLSAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgb2tQcmVzc2VkKCkKLSAgewotICAgIElTZWxlY3Rpb24gc2VsZWN0aW9uID0gZmlsZVZpZXdlcl8uZ2V0U2VsZWN0aW9uKCk7Ci0gICAgaWYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKQotICAgIHsKLSAgICAgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHN0cnVjdHVyZWRTZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pc2VsZWN0aW9uOwotICAgICAgc2VsZWN0aW9uXyA9IG5ldyBJUmVzb3VyY2Vbc3RydWN0dXJlZFNlbGVjdGlvbi5zaXplKCldOwotICAgICAgaW50IGkgPSAwOwotICAgICAgSXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVkU2VsZWN0aW9uLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBPYmplY3Qgb2JqZWN0ID0gaXQubmV4dCgpOwotICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgSVJlc291cmNlKQotICAgICAgICAgIHNlbGVjdGlvbl9baSsrXSA9IChJUmVzb3VyY2Upb2JqZWN0OwotICAgICAgfQotICAgIH0KLSAgICBzZXRSZXR1cm5Db2RlKERpYWxvZy5PSyk7Ci0gICAgc3VwZXIub2tQcmVzc2VkKCk7Ci0gIH0KLQotICAvKioKLSAgKiBTZWUge0BsaW5rIG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3cjY29uZmlndXJlU2hlbGx9LgotICAqIEBwYXJhbSBzaGVsbCBUaGUgc2hlbGwuCi0gICovCi0gIHByb3RlY3RlZCB2b2lkIGNvbmZpZ3VyZVNoZWxsKFNoZWxsIHNoZWxsKQotICB7Ci0gICAgc3VwZXIuY29uZmlndXJlU2hlbGwoc2hlbGwpOwotICAgIHNoZWxsLnNldFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLkRJQUxPR19USVRMRV9SRVNPVVJDRV9CUk9XU0VSKTsKLSAgfQotCi0gIC8qKiAKLSAgKiBDcmVhdGVzIHRoZSBkaWFsb2cgYXJlYS4KLSAgKiBAcGFyYW0gcGFyZW50IFRoZSBwYXJlbnQgY29tcG9zaXRlLgotICAqIEByZXR1cm4gVGhlIGNvbnRyb2wgYXJlYS4KLSAgKi8KLSAgcHJvdGVjdGVkIENvbnRyb2wgY3JlYXRlRGlhbG9nQXJlYShDb21wb3NpdGUgcGFyZW50KQotICB7Ci0gICAgQ29tcG9zaXRlIGNvbXBvc2l0ZSA9IChDb21wb3NpdGUpc3VwZXIuY3JlYXRlRGlhbG9nQXJlYShwYXJlbnQpOwotICAgIEdyaWREYXRhIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCB8IEdyaWREYXRhLkdSQUJfSE9SSVpPTlRBTCB8IEdyaWREYXRhLlZFUlRJQ0FMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX1ZFUlRJQ0FMKTsKLSAgICBnZC53aWR0aEhpbnQgPSA0MDA7Ci0gICAgZ2QuaGVpZ2h0SGludCA9IDMwMDsKLSAgICBnZC5ncmFiRXhjZXNzVmVydGljYWxTcGFjZSA9IHRydWU7Ci0gICAgZ2QuZ3JhYkV4Y2Vzc0hvcml6b250YWxTcGFjZSA9IHRydWU7Ci0gICAgY29tcG9zaXRlLnNldExheW91dERhdGEoZ2QpOwotCi0gICAgaWYgKG11bHRpcGxlU2VsZWN0aW9uRW5hYmxlZF8pCi0gICAgewotICAgICAgcmVzb3VyY2VUcmVlXyA9IG5ldyBUcmVlKGNvbXBvc2l0ZSxTV1QuTVVMVEkgfCBTV1QuQk9SREVSIHwgU1dULlZfU0NST0xMIHwgU1dULkhfU0NST0xMKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlc291cmNlVHJlZV8gPSBuZXcgVHJlZShjb21wb3NpdGUsU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgfCBTV1QuVl9TQ1JPTEwgfCBTV1QuSF9TQ1JPTEwpOwotICAgIH0KLSAgICBnZCA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwgfCBHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuR1JBQl9WRVJUSUNBTCk7Ci0gICAgZ2QuZ3JhYkV4Y2Vzc1ZlcnRpY2FsU3BhY2UgPSB0cnVlOwotICAgIGdkLmdyYWJFeGNlc3NIb3Jpem9udGFsU3BhY2UgPSB0cnVlOwotICAgIHJlc291cmNlVHJlZV8uc2V0TGF5b3V0RGF0YShnZCk7Ci0gICAgcmVzb3VyY2VUcmVlXy5zZXRUb29sVGlwVGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9SRVNPVVJDRV9UUkVFKTsKLSAgICBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKHJlc291cmNlVHJlZV8sIElORk9QT1BfUkVTT1VSQ0VfVFJFRSk7Ci0KLSAgICBmaWxlVmlld2VyXyA9IG5ldyBUcmVlVmlld2VyKHJlc291cmNlVHJlZV8pOwotICAgIGZpbGVWaWV3ZXJfLnNldENvbnRlbnRQcm92aWRlcihuZXcgV29ya2JlbmNoQ29udGVudFByb3ZpZGVyKCkpOwotICAgIGZpbGVWaWV3ZXJfLnNldExhYmVsUHJvdmlkZXIobmV3IERlY29yYXRpbmdMYWJlbFByb3ZpZGVyKG5ldyBXb3JrYmVuY2hMYWJlbFByb3ZpZGVyKCksIFdlYlNlcnZpY2VVSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFdvcmtiZW5jaCgpLmdldERlY29yYXRvck1hbmFnZXIoKS5nZXRMYWJlbERlY29yYXRvcigpKSk7Ci0gICAgZmlsZVZpZXdlcl8uYWRkRmlsdGVyKAotICAgICAgbmV3IFZpZXdlckZpbHRlcigpCi0gICAgICB7Ci0gICAgICAgIHB1YmxpYyBib29sZWFuIHNlbGVjdChWaWV3ZXIgdmlld2VyLCBPYmplY3QgcGFyZW50T2JqZWN0LCBPYmplY3Qgb2JqZWN0KQotICAgICAgICB7Ci0gICAgICAgICAgaWYoIG9iamVjdCBpbnN0YW5jZW9mIElSZXNvdXJjZSApCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRSZXNvdXJjZSggKElSZXNvdXJjZSlvYmplY3QgKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgKTsKLSAgICAKLSAgICBpZiggIWZvbGRlcnNTZWxlY3RhYmxlXyApCi0gICAgewotICAgICAgZmlsZVZpZXdlcl8uYWRkU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKCBuZXcgSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKFNlbGVjdGlvbkNoYW5nZWRFdmVudCBldmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgfQotICAgIAotICAgIGZpbGVWaWV3ZXJfLnNldElucHV0KHJvb3RfKTsKLSAgICByZXR1cm4gY29tcG9zaXRlOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNlbGVjdGlvbkNoYW5nZWQoKQotICB7Ci0gICAgSVNlbGVjdGlvbiBzZWxlY3Rpb24gICAgICA9IGZpbGVWaWV3ZXJfLmdldFNlbGVjdGlvbigpOwotICAgIGJvb2xlYW4gICAgdmFsaWRTZWxlY3Rpb24gPSB0cnVlOwotICAgIAotICAgIGlmKCBzZWxlY3Rpb24gaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbiApCi0gICAgewotICAgICAgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc3RydWNTZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pc2VsZWN0aW9uOwotICAgICAgSXRlcmF0b3IgICAgICAgICAgICAgaXRlciAgICAgICAgICAgPSBzdHJ1Y1NlbGVjdGlvbi5pdGVyYXRvcigpOwotICAgICAgCi0gICAgICAvLyBFbnN1cmUgdGhhdCBhbGwgc2VsZWN0ZWQgaXRlbXMgYXJlIHZhbGlkLgotICAgICAgd2hpbGUoIGl0ZXIuaGFzTmV4dCgpICkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IG9iamVjdCA9IGl0ZXIubmV4dCgpOwotICAgICAgICAKLSAgICAgICAgaWYoIG9iamVjdCBpbnN0YW5jZW9mIElGaWxlICkKLSAgICAgICAgewotICAgICAgICAgIHZhbGlkU2VsZWN0aW9uID0gYWNjZXB0c0ZpbGUoIChJRmlsZSlvYmplY3QgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICB2YWxpZFNlbGVjdGlvbiA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiggIXZhbGlkU2VsZWN0aW9uICkgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB2YWxpZFNlbGVjdGlvbiA9IGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBCdXR0b24gb2tCdXR0b24gPSBnZXRCdXR0b24oIERpYWxvZy5PSyApOwotICAgIG9rQnV0dG9uLnNldEVuYWJsZWQoIHZhbGlkU2VsZWN0aW9uICk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBhY2NlcHRzRmlsZSggSVJlc291cmNlIGZpbGUgKQotICB7Ci0gICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKLSAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbHRlcnNfLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmKCBmaWx0ZXJzX1tpXS5hY2NlcHRzKCBmaWxlICkgKQotICAgICAgewotICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgcHJpdmF0ZSBib29sZWFuIGlzVmFsaWRSZXNvdXJjZSggSVJlc291cmNlIHJlc291cmNlICkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0gICAgCi0gICAgaWYoIHJlc291cmNlIGluc3RhbmNlb2YgSUZpbGUgKQotICAgIHsKLSAgICAgIC8vIExvb3Agb3ZlciBhbGwgZmlsdGVycy4gIElmIG9uZSBpcyBhY2NlcHRhYmxlIHRoZW4gd2Ugd2lsbAotICAgICAgLy8gcmV0dXJuIHRydWUuCi0gICAgICByZXN1bHQgPSBhY2NlcHRzRmlsZSggcmVzb3VyY2UgKTsKLSAgICB9Ci0gICAgZWxzZSBpZiggcmVzb3VyY2UgaW5zdGFuY2VvZiBJQ29udGFpbmVyICkKLSAgICB7Ci0gICAgICAvLyBOb3cgc2VlIGlmIHRoaXMgY29udGFpbmVyIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSB2YWxpZCBmaWxlLgotICAgICAgQm9vbGVhbiB2YWxpZENvbnRhaW5lciA9IChCb29sZWFuKXZpc2l0ZWRDb250YWluZXJzXy5nZXQoIHJlc291cmNlICk7Ci0gICAgICAKLSAgICAgIGlmKCB2YWxpZENvbnRhaW5lciA9PSBudWxsICkKLSAgICAgIHsKLSAgICAgICAgLy8gV2UgaGF2ZW4ndCBzZWVuIHRoaXMgY29udGFpbmVyIGJlZm9yZS4KLSAgICAgICAgdHJ5IAotICAgICAgICB7Ci0gICAgICAgICAgSUNvbnRhaW5lciAgY29udGFpbmVyID0gKElDb250YWluZXIpcmVzb3VyY2U7Ci0gICAgICAgICAgSVJlc291cmNlW10gbWVtYmVycyAgID0gY29udGFpbmVyLm1lbWJlcnMoKTsKLSAgICAgICAgICAKLSAgICAgICAgICB2aXNpdGVkQ29udGFpbmVyc18ucHV0KCBjb250YWluZXIsIEJvb2xlYW4uRkFMU0UgKTsKLSAgICAgICAgICAKLSAgICAgICAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgbWVtYmVycy5sZW5ndGg7IGluZGV4KyspIAotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKCBpc1ZhbGlkUmVzb3VyY2UobWVtYmVyc1tpbmRleF0pICkgCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHZpc2l0ZWRDb250YWluZXJzXy5wdXQoIGNvbnRhaW5lciwgQm9vbGVhbi5UUlVFICk7Ci0gICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfSAKLSAgICAgICAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkgCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBEbyBub3RoaW5nCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gdmFsaWRDb250YWluZXIuYm9vbGVhblZhbHVlKCk7Ci0gICAgICB9Ci0gICAgfQotICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9jb21tb24vRmlsZUV4dGVuc2lvbkZpbHRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9jb21tb24vRmlsZUV4dGVuc2lvbkZpbHRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODc3ZGNjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvY29tbW9uL0ZpbGVFeHRlbnNpb25GaWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwODA1MDEgICAyMjk3MjggbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIHVwcGVyY2FzZSAuV1NETCBjYW5ub3QgYmUgZm91bmQgYnkgdGhlIFdlYiBTZXJ2aWNlIENsaWVudCB3aXphcmQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLQotLyoqCi0qIFRoaXMgaXMgdGhlIGludGVyZmFjZSBmb3IgYSBjbGFzcyBvZiBvYmplY3RzIHRoYXQgZmlsdGVyCi0qIG90aGVyIG9iamVjdHMgZm9yIGluY2x1c2lvbiBvciBleGNsdXNpb24gYnkgc29tZSBjb25zdW1lci4KLSovCi1wdWJsaWMgY2xhc3MgRmlsZUV4dGVuc2lvbkZpbHRlciBpbXBsZW1lbnRzIElGaWx0ZXIKLXsKLSAgcHJpdmF0ZSBTdHJpbmdbXSBleHRlbnNpb25zXzsKLQotICBwdWJsaWMgRmlsZUV4dGVuc2lvbkZpbHRlcihTdHJpbmdbXSBleHRlbnNpb25zKQotICB7Ci0gICAgZXh0ZW5zaW9uc18gPSAoZXh0ZW5zaW9ucyAhPSBudWxsKSA/IGV4dGVuc2lvbnMgOiBuZXcgU3RyaW5nWzBdOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbG9jYWxlLXNwZWNpZmljIG5hbWUgb2YgdGhpcyBmaWx0ZXIuCi0gICogQHJldHVybiBUaGUgbG9jYWxlLXNwZWNpZmljIG5hbWUgb2YgdGhpcyBmaWx0ZXIuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gIm9yZy5lY2xpcHNlLmpzdC53cy5hdGsudWkuZWRpdG9yLmNvbW1vbi5GaWxlRXh0ZW5zaW9uRmlsdGVyIjsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIGxvY2FsZS1zcGVjaWZpYyBkZXNjcmlwdGlvbiBvZiB0aGlzIGZpbHRlci4KLSAgKiBAcmV0dXJuIFRoZSBsb2NhbGUtc3BlY2lmaWMgZGVzY3JpcHRpb24gb2YgdGhpcyBmaWx0ZXIuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVzY3JpcHRpb24oKQotICB7Ci0gICAgcmV0dXJuICJvcmcuZWNsaXBzZS5qc3Qud3MuYXRrLnVpLmVkaXRvci5jb21tb24uRmlsZUV4dGVuc2lvbkZpbHRlciI7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhpcyA8Y29kZT5GaWx0ZXI8L2NvZGU+Ci0gICogYWNjZXB0cyB0aGUgZ2l2ZW4gPGNvZGU+b2JqZWN0PC9jb2RlPi4gVGhpcyBtZXRob2QKLSAgKiBtdXN0IHJldHVybiB0cnVlIGlmIGFuZCBvbmx5IGlmIHtAbGluayAjc3RhdHVzT2Z9Ci0gICogcmV0dXJucyBhbiA8Y29kZT5JU3RhdHVzPC9jb2RlPiB3aXRoIGEgc2V2ZXJpdHkgb2YKLSAgKiBsZXNzIHRoYW4gPGNvZGU+SVN0YXR1cy5FUlJPUjwvY29kZT4uCi0gICogQHBhcmFtIG9iamVjdCBUaGUgb2JqZWN0IHRvIGZpbHRlci4KLSAgKiBAcmV0dXJuIFRydWUgaWYgYW5kIG9ubHkgaWYgdGhpcyA8Y29kZT5GaWx0ZXI8L2NvZGU+Ci0gICogYWNjZXB0cyB0aGUgZ2l2ZW4gPGNvZGU+b2JqZWN0PC9jb2RlPi4KLSAgKi8KLSAgcHVibGljIGJvb2xlYW4gYWNjZXB0cyhPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIElGaWxlKQotICAgIHsKLSAgICAgIElGaWxlIGZpbGUgPSAoSUZpbGUpb2JqZWN0OwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHRlbnNpb25zXy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgaWYgKGZpbGUuZ2V0RmlsZUV4dGVuc2lvbigpICE9IG51bGwgJiYgZmlsZS5nZXRGaWxlRXh0ZW5zaW9uKCkuZXF1YWxzSWdub3JlQ2FzZShleHRlbnNpb25zX1tpXSkpCi0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9jb21tb24vSUZpbHRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9jb21tb24vSUZpbHRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTVkYjhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvY29tbW9uL0lGaWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uOwotCi0vKioKLSogVGhpcyBpcyB0aGUgaW50ZXJmYWNlIGZvciBhIGNsYXNzIG9mIG9iamVjdHMgdGhhdCBmaWx0ZXIKLSogb3RoZXIgb2JqZWN0cyBmb3IgaW5jbHVzaW9uIG9yIGV4Y2x1c2lvbiBieSBzb21lIGNvbnN1bWVyLgotKi8KLXB1YmxpYyBpbnRlcmZhY2UgSUZpbHRlcgotewotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBsb2NhbGUtc3BlY2lmaWMgbmFtZSBvZiB0aGlzIGZpbHRlci4KLSAgKiBAcmV0dXJuIFRoZSBsb2NhbGUtc3BlY2lmaWMgbmFtZSBvZiB0aGlzIGZpbHRlci4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCk7Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbG9jYWxlLXNwZWNpZmljIGRlc2NyaXB0aW9uIG9mIHRoaXMgZmlsdGVyLgotICAqIEByZXR1cm4gVGhlIGxvY2FsZS1zcGVjaWZpYyBkZXNjcmlwdGlvbiBvZiB0aGlzIGZpbHRlci4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbigpOwotCi0gIC8qKgotICAqIFJldHVybnMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGlzIDxjb2RlPkZpbHRlcjwvY29kZT4KLSAgKiBhY2NlcHRzIHRoZSBnaXZlbiA8Y29kZT5vYmplY3Q8L2NvZGU+LiBUaGlzIG1ldGhvZAotICAqIG11c3QgcmV0dXJuIHRydWUgaWYgYW5kIG9ubHkgaWYge0BsaW5rICNzdGF0dXNPZn0KLSAgKiByZXR1cm5zIGFuIDxjb2RlPklTdGF0dXM8L2NvZGU+IHdpdGggYSBzZXZlcml0eSBvZgotICAqIGxlc3MgdGhhbiA8Y29kZT5JU3RhdHVzLkVSUk9SPC9jb2RlPi4KLSAgKiBAcGFyYW0gb2JqZWN0IFRoZSBvYmplY3QgdG8gZmlsdGVyLgotICAqIEByZXR1cm4gVHJ1ZSBpZiBhbmQgb25seSBpZiB0aGlzIDxjb2RlPkZpbHRlcjwvY29kZT4KLSAgKiBhY2NlcHRzIHRoZSBnaXZlbiA8Y29kZT5vYmplY3Q8L2NvZGU+LgotICAqLwotICBwdWJsaWMgYm9vbGVhbiBhY2NlcHRzKE9iamVjdCBvYmplY3QpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9jb21tb24vVUlVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9jb21tb24vVUlVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGRmMGIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvY29tbW9uL1VJVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI1NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA4MTcgICAxNDAwMTcgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIGxvbmdlciBwcm9qZWN0IG9yIHNlcnZlci9ydW50aW1lIHN0cmluZ3MgZG8gbm90IHJlc2l6ZSB3aXphcmQKLSAqIDIwMDYwODI5ICAgMTU1NDQxIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCB3ZWIgc2VydmljZSB3aXphcmQgaGFuZ3MgZHVyaW5nIHJlc2l6ZQotICogMjAwOTAzMDIgICAyNDI0NjIgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgU2F2ZSBXZWIgc2VydmljZXMgd2l6YXJkIHNldHRpbmdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Hcm91cDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UYWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRyZWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLklEaWFsb2dTZXR0aW5nczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuY29tbW9uLkNvbWJvV2l0aEhpc3Rvcnk7Ci0KLQotcHVibGljIGNsYXNzIFVJVXRpbHMgCi17Ci0JLyoqCi0JICogQSBkZWZhdWx0IHBhZGRpbmcgdmFsdWUgZm9yIGhvcml6b250YWxSZXNpemUoKS4KLQkgKi8KLQlwdWJsaWMgZmluYWwgc3RhdGljIGludCBERUZBVUxUX1BBRERJTkcgPSAzNTsKLQkKLSAgU3RyaW5nICAgICAgIGluZm9Qb3BpZF87Ci0gIAotICBwdWJsaWMgVUlVdGlscyggU3RyaW5nIGluZm9Qb3BpZCApCi0gIHsKLSAgICBpbmZvUG9waWRfID0gaW5mb1BvcGlkOwotICB9Ci0gIAotICBwdWJsaWMgQnV0dG9uIGNyZWF0ZVJhZGlvQnV0dG9uKCBDb21wb3NpdGUgcGFyZW50LCBTdHJpbmcgbGFiZWxOYW1lLCBTdHJpbmcgdG9vbHRpcCwgU3RyaW5nIGluZm9wb3AgKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZUJ1dHRvbiggU1dULlJBRElPLCBwYXJlbnQsIGxhYmVsTmFtZSwgdG9vbHRpcCwgaW5mb3BvcCApOwotICB9Ci0gIAotICBwdWJsaWMgQnV0dG9uIGNyZWF0ZUNoZWNrYm94KCBDb21wb3NpdGUgcGFyZW50LCBTdHJpbmcgbGFiZWxOYW1lLCBTdHJpbmcgdG9vbHRpcCwgU3RyaW5nIGluZm9wb3AgKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZUJ1dHRvbiggU1dULkNIRUNLLCBwYXJlbnQsIGxhYmVsTmFtZSwgdG9vbHRpcCwgaW5mb3BvcCApOwotICB9Ci0gIAotICBwdWJsaWMgQnV0dG9uIGNyZWF0ZVB1c2hCdXR0b24oIENvbXBvc2l0ZSBwYXJlbnQsIFN0cmluZyBsYWJlbE5hbWUsIFN0cmluZyB0b29sdGlwLCBTdHJpbmcgaW5mb3BvcCApCi0gIHsKLSAgICByZXR1cm4gY3JlYXRlQnV0dG9uKCBTV1QuTk9ORSwgcGFyZW50LCBsYWJlbE5hbWUsIHRvb2x0aXAsIGluZm9wb3AgKTsKLSAgfQotICAKLSAgcHVibGljIEJ1dHRvbiBjcmVhdGVCdXR0b24oIGludCBraW5kLCBDb21wb3NpdGUgcGFyZW50LCBTdHJpbmcgbGFiZWxOYW1lLCBTdHJpbmcgdG9vbHRpcCwgU3RyaW5nIGluZm9wb3AgKQotICB7Ci0gICAgQnV0dG9uIGJ1dHRvbiA9IG5ldyBCdXR0b24oIHBhcmVudCwga2luZCApOwotICAgIAotICAgIHRvb2x0aXAgPSB0b29sdGlwID09IG51bGwgPyBsYWJlbE5hbWUgOiB0b29sdGlwOwotICAgIGJ1dHRvbi5zZXRUZXh0KCBsYWJlbE5hbWUgKTsKLSAgICBidXR0b24uc2V0VG9vbFRpcFRleHQoIHRvb2x0aXAgKTsKLSAgICAKLSAgICBpZiggaW5mb3BvcCAhPSBudWxsICkgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscCggYnV0dG9uLCBpbmZvUG9waWRfICsgIi4iICsgaW5mb3BvcCApOwotICAgIAotICAgIHJldHVybiBidXR0b247Ci0gIH0KLSAgCi0gIHB1YmxpYyBDb21ibyBjcmVhdGVDb21ibyggQ29tcG9zaXRlIHBhcmVudCwgU3RyaW5nIGxhYmVsTmFtZSwgU3RyaW5nIHRvb2x0aXAsIFN0cmluZyBpbmZvcG9wLCBpbnQgc3R5bGUgKQotICB7ICAgIAotCSAgcmV0dXJuIGNyZWF0ZUNvbWJvKHBhcmVudCwgbGFiZWxOYW1lLCB0b29sdGlwLCBpbmZvcG9wLCBzdHlsZSwgbnVsbCk7Ci0gIH0KLSAgcHVibGljIENvbWJvIGNyZWF0ZUNvbWJvKCBDb21wb3NpdGUgcGFyZW50LCBTdHJpbmcgbGFiZWxOYW1lLCBTdHJpbmcgdG9vbHRpcCwgU3RyaW5nIGluZm9wb3AsIGludCBzdHlsZSwgSURpYWxvZ1NldHRpbmdzIHNldHRpbmdzICkgewotCSAgICB0b29sdGlwID0gdG9vbHRpcCA9PSBudWxsID8gbGFiZWxOYW1lIDogdG9vbHRpcDsKLQkgICAgQ29tYm8gY29tYm87Ci0JICAgIGlmKCBsYWJlbE5hbWUgIT0gbnVsbCApCi0JICAgIHsKLQkgICAgICBMYWJlbCBsYWJlbCA9IG5ldyBMYWJlbCggcGFyZW50LCBTV1QuV1JBUCk7Ci0JICAgICAgbGFiZWwuc2V0VGV4dCggbGFiZWxOYW1lICk7Ci0JICAgICAgbGFiZWwuc2V0VG9vbFRpcFRleHQoIHRvb2x0aXAgKTsKLQkgICAgfQotCSAgICBpZiAoc2V0dGluZ3MgPT0gbnVsbCkKLQkgICAgCWNvbWJvID0gbmV3IENvbWJvKCBwYXJlbnQsIHN0eWxlICk7Ci0JICAgIGVsc2UKLQkgICAgCWNvbWJvID0gbmV3IENvbWJvV2l0aEhpc3RvcnkocGFyZW50LCBzdHlsZSwgc2V0dGluZ3MpOwotCSAgICBHcmlkRGF0YSBncmlkZGF0YSA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwpOwotCSAgICAgCi0JICAgIGNvbWJvLnNldExheW91dERhdGEoIGdyaWRkYXRhICk7Ci0JICAgIGNvbWJvLnNldFRvb2xUaXBUZXh0KCB0b29sdGlwICk7Ci0JICAgIAotCSAgICBpZiggaW5mb3BvcCAhPSBudWxsICkgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscCggY29tYm8sIGluZm9Qb3BpZF8gKyAiLiIgKyBpbmZvcG9wICk7Ci0JICAgIAotCSAgICByZXR1cm4gY29tYm87ICAgICAgCi0KLSAgfQotICBwdWJsaWMgQ29tYm9XaXRoSGlzdG9yeSBjcmVhdGVDb21ib1dpdGhIaXN0b3J5KENvbXBvc2l0ZSBwYXJlbnQsIFN0cmluZyBsYWJlbE5hbWUsIFN0cmluZyB0b29sdGlwLCBTdHJpbmcgaW5mb3BvcCwgaW50IHN0eWxlLCBJRGlhbG9nU2V0dGluZ3Mgc2V0dGluZ3MgKSB7Ci0JICByZXR1cm4gKENvbWJvV2l0aEhpc3RvcnkpY3JlYXRlQ29tYm8ocGFyZW50LCBsYWJlbE5hbWUsIHRvb2x0aXAsIGluZm9wb3AsIHN0eWxlLCBzZXR0aW5ncyk7Ci0gIH0KLSAgcHVibGljIFRleHQgY3JlYXRlVGV4dCggQ29tcG9zaXRlIHBhcmVudCwgU3RyaW5nIGxhYmVsTmFtZSwgU3RyaW5nIHRvb2x0aXAsIFN0cmluZyBpbmZvcG9wLCBpbnQgc3R5bGUgKQotICB7ICAgIAotICAgIHRvb2x0aXAgPSB0b29sdGlwID09IG51bGwgPyBsYWJlbE5hbWUgOiB0b29sdGlwOwotICAgIAotICAgIGlmKCBsYWJlbE5hbWUgIT0gbnVsbCApCi0gICAgewotICAgICAgTGFiZWwgbGFiZWwgPSBuZXcgTGFiZWwoIHBhcmVudCwgU1dULldSQVApOwotICAgICAgbGFiZWwuc2V0VGV4dCggIGxhYmVsTmFtZSAgKTsKLSAgICAgIGxhYmVsLnNldFRvb2xUaXBUZXh0KCAgdG9vbHRpcCApOwotICAgIH0KLSAgICAKLSAgICBUZXh0IHRleHQgPSBuZXcgVGV4dCggcGFyZW50LCBzdHlsZSApOwotICAgIEdyaWREYXRhIGdyaWRkYXRhID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCB8IEdyaWREYXRhLkdSQUJfSE9SSVpPTlRBTCk7Ci0gICAgCi0gICAgdGV4dC5zZXRMYXlvdXREYXRhKCBncmlkZGF0YSApOwotICAgIHRleHQuc2V0VG9vbFRpcFRleHQoIHRvb2x0aXApOwotICAgIAotICAgIGlmKCBpbmZvcG9wICE9IG51bGwgKSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKCB0ZXh0LCBpbmZvUG9waWRfICsgIi4iICsgaW5mb3BvcCApOwotICAgIAotICAgIHJldHVybiB0ZXh0OyAgICAgIAotICB9Ci0gIAotICBwdWJsaWMgQ29tcG9zaXRlIGNyZWF0ZUNvbXBvc2l0ZSggQ29tcG9zaXRlIHBhcmVudCwgaW50IGNvbHVtbnMgKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNvbXBvc2l0ZSggcGFyZW50LCBjb2x1bW5zLCAtMSwgLTEgKTsKLSAgfQotICAKLSAgcHVibGljIENvbXBvc2l0ZSBjcmVhdGVDb21wb3NpdGUoIENvbXBvc2l0ZSBwYXJlbnQsIGludCBjb2x1bW5zLCBpbnQgbWFyZ2luSGVpZ2h0LCBpbnQgbWFyZ2luV2lkdGggKQotICB7Ci0gICAgQ29tcG9zaXRlIGNvbXBvc2l0ZSA9IG5ldyBDb21wb3NpdGUoIHBhcmVudCwgU1dULk5PTkUgKTsKLSAgICAKLSAgICBHcmlkTGF5b3V0IGdyaWRsYXlvdXQgICA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgZ3JpZGxheW91dC5udW1Db2x1bW5zICAgPSBjb2x1bW5zOwotICAKLSAgICBpZiggbWFyZ2luSGVpZ2h0ID49IDAgKSBncmlkbGF5b3V0Lm1hcmdpbkhlaWdodCA9IG1hcmdpbkhlaWdodDsKLSAgICBpZiggbWFyZ2luV2lkdGggPj0gMCApICBncmlkbGF5b3V0Lm1hcmdpbldpZHRoICA9IG1hcmdpbldpZHRoOwotICAgIAotICAgIGNvbXBvc2l0ZS5zZXRMYXlvdXQoIGdyaWRsYXlvdXQgKTsKLSAgICBHcmlkRGF0YSBncmlkZGF0YSA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwpOwotICAgIGNvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKCBncmlkZGF0YSApOwotICAgIAotICAgIHJldHVybiBjb21wb3NpdGU7Ci0gICAgCi0gIH0KLSAgcHVibGljIEdyb3VwIGNyZWF0ZUdyb3VwKCBDb21wb3NpdGUgcGFyZW50LCBTdHJpbmcgZ3JvdXBOYW1lLCBTdHJpbmcgdG9vbHRpcCwgU3RyaW5nIGluZm9wb3AgKQotICB7Ci0gIAlyZXR1cm4gY3JlYXRlR3JvdXAoIHBhcmVudCwgZ3JvdXBOYW1lLCB0b29sdGlwLCBpbmZvcG9wLCAxLCAtMSwgLTEgKTsKLSAgfQotICAKLSAgcHVibGljIEdyb3VwIGNyZWF0ZUdyb3VwKCBDb21wb3NpdGUgcGFyZW50LCBTdHJpbmcgZ3JvdXBOYW1lLCBTdHJpbmcgdG9vbHRpcCwgU3RyaW5nIGluZm9wb3AsIGludCBjb2x1bW5zLCBpbnQgbWFyZ2luSGVpZ2h0LCBpbnQgbWFyZ2luV2lkdGggKQotICB7Ci0gICAgR3JvdXAgICAgICBuZXdHcm91cCAgICA9IG5ldyBHcm91cCggcGFyZW50LCBTV1QuTk9ORSApOwotICAgIEdyaWREYXRhICAgZ3JpZGRhdGEgICAgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMKTsKLSAgICBHcmlkTGF5b3V0IGdyaWRsYXlvdXQgID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICAKLSAgICBncmlkbGF5b3V0Lm51bUNvbHVtbnMgID0gY29sdW1uczsKLSAgCi0gICAgaWYoIG1hcmdpbkhlaWdodCA+PSAwICkgZ3JpZGxheW91dC5tYXJnaW5IZWlnaHQgPSBtYXJnaW5IZWlnaHQ7Ci0gICAgaWYoIG1hcmdpbldpZHRoID49IDAgKSAgZ3JpZGxheW91dC5tYXJnaW5XaWR0aCAgPSBtYXJnaW5XaWR0aDsKLSAgICAgICAgCi0gICAgdG9vbHRpcCA9IHRvb2x0aXAgPT0gbnVsbCA/IGdyb3VwTmFtZSA6IHRvb2x0aXA7Ci0gICAgbmV3R3JvdXAuc2V0TGF5b3V0KCBncmlkbGF5b3V0ICk7Ci0gICAgbmV3R3JvdXAuc2V0VGV4dCggIGdyb3VwTmFtZSAgKTsKLSAgICBuZXdHcm91cC5zZXRMYXlvdXREYXRhKCBncmlkZGF0YSApOwotICAgIG5ld0dyb3VwLnNldFRvb2xUaXBUZXh0KCAgdG9vbHRpcCApOwotICAgIAotICAgIGlmKCBpbmZvcG9wICE9IG51bGwgKSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKG5ld0dyb3VwLCBpbmZvUG9waWRfICsgIi4iICsgaW5mb3BvcCk7Ci0gICAgCi0gICAgcmV0dXJuIG5ld0dyb3VwOwotICB9Ci0gIAotICBwdWJsaWMgVHJlZSBjcmVhdGVUcmVlKCBDb21wb3NpdGUgcGFyZW50LCBTdHJpbmcgdG9vbHRpcCwgU3RyaW5nIGluZm9wb3AsIGludCBzdHlsZSApCi0gIHsKLSAgICAKLSAgICB0b29sdGlwID0gdG9vbHRpcCA9PSBudWxsID8gIiIgOiB0b29sdGlwOwotICAgIAotICAgIFRyZWUgdHJlZSA9IG5ldyBUcmVlKCBwYXJlbnQsIHN0eWxlICk7Ci0gICAgIAotICAgIHRyZWUuc2V0TGF5b3V0RGF0YSggY3JlYXRlRmlsbEFsbCgpICk7Ci0gICAgdHJlZS5zZXRUb29sVGlwVGV4dCggdG9vbHRpcCk7Ci0gICAgCi0gICAgaWYoIGluZm9wb3AgIT0gbnVsbCApIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAoIHRyZWUsIGluZm9Qb3BpZF8gKyAiLiIgKyBpbmZvcG9wICk7Ci0gICAgCi0gICAgcmV0dXJuIHRyZWU7ICAgICAgCi0gICAgCi0gIH0KLSAgCi0gIHB1YmxpYyBUYWJsZSBjcmVhdGVUYWJsZSggQ29tcG9zaXRlIHBhcmVudCwgU3RyaW5nIHRvb2x0aXAsIFN0cmluZyBpbmZvcG9wLCBpbnQgc3R5bGUgKQotICB7Ci0gICAgCi0gICAgdG9vbHRpcCA9IHRvb2x0aXAgPT0gbnVsbCA/ICIiIDogdG9vbHRpcDsKLSAgICAKLSAgICBUYWJsZSB0YWJsZSA9IG5ldyBUYWJsZSggcGFyZW50LCBzdHlsZSApOwotICAgICAKLSAgICAvL3RhYmxlLnNldExheW91dERhdGEoIGNyZWF0ZUZpbGxBbGwoKSApOwotICAgIHRhYmxlLnNldFRvb2xUaXBUZXh0KCB0b29sdGlwKTsKLSAgICAKLSAgICBpZiggaW5mb3BvcCAhPSBudWxsICkgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscCggdGFibGUsIGluZm9Qb3BpZF8gKyAiLiIgKyBpbmZvcG9wICk7Ci0gICAgCi0gICAgcmV0dXJuIHRhYmxlOyAgICAgIAotICAgIAotICB9ICAKLSAgCi0gIHB1YmxpYyBMYWJlbCBjcmVhdGVIb3Jpem9udGFsU2VwYXJhdG9yKCBDb21wb3NpdGUgcGFyZW50LCBpbnQgc3BhY2luZyApCi0gIHsKLSAgICBDb21wb3NpdGUgY29tcG9zaXRlID0gY3JlYXRlQ29tcG9zaXRlKCBwYXJlbnQsIDEsIHNwYWNpbmcsIC0xICk7Ci0gICAgIAotCUxhYmVsIHNlcGFyYXRvciA9IG5ldyBMYWJlbCggY29tcG9zaXRlLCBTV1QuU0VQQVJBVE9SIHwgU1dULkhPUklaT05UQUwgKTsKLQkKLQlHcmlkRGF0YSBncmlkZGF0YSAgPSBuZXcgR3JpZERhdGEoIEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCB8IEdyaWREYXRhLkdSQUJfSE9SSVpPTlRBTCApOwotCXNlcGFyYXRvci5zZXRMYXlvdXREYXRhKCBncmlkZGF0YSApOwotICAgCi0JcmV0dXJuIHNlcGFyYXRvcjsKLSAgfQotICAKLSAgcHVibGljIEdyaWREYXRhIGNyZWF0ZUZpbGxBbGwoKQotICB7Ci0JR3JpZERhdGEgZGF0YSA9IG5ldyBHcmlkRGF0YSggR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMIHwKLQkJCSAgICAgICAgICAgICAgICAgICAgICBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwgfAotCQkJICAgICAgICAgICAgICAgICAgICAgIEdyaWREYXRhLlZFUlRJQ0FMX0FMSUdOX0ZJTEwgfAotCQkJICAgICAgICAgICAgICAgICAgICAgIEdyaWREYXRhLkdSQUJfVkVSVElDQUwgKTsKLSAgICByZXR1cm4gZGF0YTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgY3JlYXRlSW5mb1BvcChDb250cm9sIGN0cmwsIFN0cmluZyBpbmZvcG9wKQotICB7Ci0JICBpZiggaW5mb3BvcCAhPSBudWxsICkgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscCggY3RybCwgaW5mb1BvcGlkXyArICIuIiArIGluZm9wb3AgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJlc2l6ZXMgdGhlIHdpZHRoIG9mIHRoZSB0YXJnZXQgY29tcG9zaXRlIHNvIHRoYXQgaXQgaXMgYXMgd2lkZSBhcyB0aGUKLSAgICogcmVmZXJlbmNlIGNvbXBvc2l0ZSBwbHVzIGEgcGFkZGluZyB2YWx1ZS4gIAotICAgKiAKLSAgICogQHBhcmFtIHRhcmdldCBUaGUgY29tcG9zaXRlIHRvIHJlc2l6ZS4KLSAgICogQHBhcmFtIHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIGNvbXBvc2l0ZQotICAgKiBAcGFyYW0gcGFkZGluZyBUaGUgcGFkZGluZyB2YWx1ZQotICAgKi8KLSAgcHVibGljIHZvaWQgaG9yaXpvbnRhbFJlc2l6ZShDb21wb3NpdGUgdGFyZ2V0LCBDb21wb3NpdGUgcmVmZXJlbmNlLCBpbnQgcGFkZGluZykgewotCQkKLQkJUG9pbnQgb3JpZ2luYWxTaXplICA9IHRhcmdldC5nZXRTaXplKCk7Ci0JCVBvaW50IHJlZmVyZW5jZVNpemUgPSByZWZlcmVuY2UuZ2V0U2l6ZSgpOwotCQkKLQkJcGFkZGluZyA9IHBhZGRpbmcgPj0gMCA/IHBhZGRpbmcgOiBERUZBVUxUX1BBRERJTkc7Ci0JCQotCQlpZiAocmVmZXJlbmNlU2l6ZS54ICsgcGFkZGluZyA+IG9yaWdpbmFsU2l6ZS54KQotCQkJdGFyZ2V0LnNldFNpemUocmVmZXJlbmNlU2l6ZS54ICsgcGFkZGluZywgb3JpZ2luYWxTaXplLnkpOwotICB9ICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvY29tbW9uL1dpZGdldFdpdGhIaXN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2NvbW1vbi9XaWRnZXRXaXRoSGlzdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2Q5ZWNhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvY29tbW9uL1dpZGdldFdpdGhIaXN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwOTAzMDIgICAyNDI0NjIgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgU2F2ZSBXZWIgc2VydmljZXMgd2l6YXJkIHNldHRpbmdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLmNvbW1vbjsKLQotcHVibGljIGFic3RyYWN0IGludGVyZmFjZSBXaWRnZXRXaXRoSGlzdG9yeSB7Ci0JcHVibGljIGFic3RyYWN0IHZvaWQgc3RvcmVXaWRnZXRIaXN0b3J5KFN0cmluZyBzdG9yZUtleSk7Ci0KLQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZXN0b3JlV2lkZ2V0SGlzdG9yeShTdHJpbmcgcmVzdG9yZUtleSk7Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvZGlhbG9nL0RpYWxvZ1V0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2RpYWxvZy9EaWFsb2dVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjZjMDhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvZGlhbG9nL0RpYWxvZ1V0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwMzI0ICAgMjIwOTgzIHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nIEhhCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuZGlhbG9nOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklDb250YWluZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JSmF2YUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YUNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YU1vZGVsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLnNlYXJjaC5JSmF2YVNlYXJjaFNjb3BlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLnNlYXJjaC5TZWFyY2hFbmdpbmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LnVpLklKYXZhRWxlbWVudFNlYXJjaENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQudWkuSmF2YVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLm9wZXJhdGlvbi5JUnVubmFibGVDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpemFyZC5JV2l6YXJkQ29udGFpbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uRmlsdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuV1NVSVBsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmRpYWxvZ3MuQ29udGFpbmVyU2VsZWN0aW9uRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmRpYWxvZ3MuU2VsZWN0aW9uRGlhbG9nOwotCi0KLS8qKgotKiBDb250YWlucyB1dGlsaXR5IG1ldGhvZHMgZm9yIGxhdW5jaGluZyB2YXJpb3VzIGNvbW1vbiBkaWFsb2dzLgotKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBEaWFsb2dVdGlscwotewotCi0gIC8qKgotICAqIFJhaXNlcyBhIGRpYWxvZyBmb3IgYnJvd3NpbmcgY29udGFpbmVycy4KLSAgKiBAcGFyYW0gcGFyZW50U2hlbGwgVGhlIHBhcmVudCBzaGVsbCwgb3B0aW9uYWxseSBudWxsLgotICAqIEBwYXJhbSBpbml0aWFsUGF0aG5hbWUgVGhlIGluaXRpYWwgc2VsZWN0aW9uLgotICAqIEByZXR1cm4gVGhlIHNlbGVjdGVkIGNvbnRhaW5lciBvciBudWxsIGlmIHRoZSBkaWFsb2cKLSAgKiBpcyBjYW5jZWxsZWQsIG9yIHRoZXJlIGlzIG5vIHNlbGVjdGlvbiwgb3IgdGhlIHNlbGVjdGlvbgotICAqIGlzIG5vdCBhIHByb2plY3Qgb3IgYSBmb2xkZXIuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGJyb3dzZUNvbnRhaW5lcnMgKCBTaGVsbCBwYXJlbnRTaGVsbCwgU3RyaW5nIGluaXRpYWxQYXRobmFtZSApCi0gIHsKLSAgICBTdHJpbmcgc2VsZWN0ZWRQYXRobmFtZSA9IG51bGw7Ci0gICAgSVBhdGggaW5pdGlhbFBhdGggPSBuZXcgUGF0aChpbml0aWFsUGF0aG5hbWUpOwotICAgIElSZXNvdXJjZSBpbml0aWFsUmVzb3VyY2UgPSBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKS5maW5kTWVtYmVyKGluaXRpYWxQYXRoKTsKLSAgICBpZiAoaW5pdGlhbFJlc291cmNlID09IG51bGwpCi0gICAgewotICAgICAgaWYgKGluaXRpYWxQYXRoLnNlZ21lbnRDb3VudCgpID09IDEpCi0gICAgICB7Ci0gICAgICAgIGluaXRpYWxSZXNvdXJjZSA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldFByb2plY3QoaW5pdGlhbFBhdGguc2VnbWVudCgwKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChpbml0aWFsUGF0aC5zZWdtZW50Q291bnQoKSA+IDEpCi0gICAgICB7Ci0gICAgICAgIGluaXRpYWxSZXNvdXJjZSA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZvbGRlcihpbml0aWFsUGF0aCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpZiAoaW5pdGlhbFJlc291cmNlLmdldFR5cGUoKSA9PSBJUmVzb3VyY2UuRklMRSkKLSAgICAgIHsKLSAgICAgICAgaW5pdGlhbFJlc291cmNlID0gaW5pdGlhbFJlc291cmNlLmdldFBhcmVudCgpOwotICAgICAgfQotICAgIH0KLSAgICBDb250YWluZXJTZWxlY3Rpb25EaWFsb2cgZGlhbG9nID0gbmV3IENvbnRhaW5lclNlbGVjdGlvbkRpYWxvZyhwYXJlbnRTaGVsbCwoSUNvbnRhaW5lcilpbml0aWFsUmVzb3VyY2UsdHJ1ZSxudWxsKTsKLSAgICBkaWFsb2cub3BlbigpOwotICAgIE9iamVjdFtdIHJlc3VsdCA9IGRpYWxvZy5nZXRSZXN1bHQoKTsKLSAgICBpZiAocmVzdWx0ICE9IG51bGwgJiYgcmVzdWx0Lmxlbmd0aCA+IDApCi0gICAgewotICAgICAgaWYgKHJlc3VsdFswXSBpbnN0YW5jZW9mIElQYXRoKQotICAgICAgewotICAgICAgICBJUGF0aCBwYXRoID0gKElQYXRoKXJlc3VsdFswXTsKLSAgICAgICAgc2VsZWN0ZWRQYXRobmFtZSA9IHBhdGgudG9TdHJpbmcoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHNlbGVjdGVkUGF0aG5hbWU7Ci0gIH0KLQotICAvKioKLSAgKiBSYWlzZXMgYSBkaWFsb2cgZm9yIGJyb3dzaW5nIHJlc291cmNlcy4KLSAgKiBAcGFyYW0gcGFyZW50U2hlbGwgVGhlIHBhcmVudCBzaGVsbCwgb3B0aW9uYWxseSBudWxsLgotICAqIEBwYXJhbSB0b3BSZXNvdXJjZSBUaGUgcmVzb3VyY2UgdW5kZXIgd2hpY2ggdG8gYnJvd3NlLgotICAqIElmIG51bGwsIGFsbCByZXNvdXJjZXMgaW4gdGhlIHdvcmtzcGFjZSBhcmUgYnJvd3NlZC4KLSAgKiBAcGFyYW0gaW5pdGlhbFNlbGVjdGlvbiBUaGUgaW5pdGlhbCBzZWxlY3Rpb24sIG9yIG51bGwgZm9yIG5vbmUuCi0gICogSWYgdGhlIGluaXRpYWwgc2VsZWN0aW9uIGlzIG5vdCBudWxsIGFuZCBleGlzdHMgaW4gdGhlIHNldCBvZgotICAqIHJlc291cmNlcyBmb3VuZCBieSB0aGUgYnJvd3NlciwgdGhhdCByZXNvdXJjZSBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LgotICAqIEBwYXJhbSBmaWx0ZXIgVGhlIHJlc291cmNlIGZpbHRlciBvYmplY3QuCi0gICogQHJldHVybiBUaGUgc2VsZWN0ZWQgcmVzb3VyY2UuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgSVJlc291cmNlIGJyb3dzZVJlc291cmNlcyAoIFNoZWxsIHBhcmVudFNoZWxsLCBJUmVzb3VyY2UgdG9wUmVzb3VyY2UsIElSZXNvdXJjZSBpbml0aWFsU2VsZWN0aW9uLCBGaWx0ZXIgZmlsdGVyKQotICB7Ci0gICAgUmVzb3VyY2VTZWxlY3Rpb25EaWFsb2cgcmRzID0gbmV3IFJlc291cmNlU2VsZWN0aW9uRGlhbG9nKHBhcmVudFNoZWxsLHRvcFJlc291cmNlLGluaXRpYWxTZWxlY3Rpb24sZmlsdGVyKTsKLSAgICByZHMuc2V0TXVsdGlwbGVTZWxlY3Rpb25FbmFibGVkKGZhbHNlKTsKLSAgICBpZiAocmRzLm9wZW4oKSA9PSBEaWFsb2cuT0spCi0gICAgewotICAgICAgSVJlc291cmNlW10gcmVzb3VyY2VzID0gcmRzLmdldFJlc3VsdCgpOwotICAgICAgaWYgKHJlc291cmNlcyAhPSBudWxsICYmIHJlc291cmNlcy5sZW5ndGggPiAwKQotICAgICAgewotICAgICAgICByZXR1cm4gcmVzb3VyY2VzWzBdOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAqIDxiPkltcGxlbWVudGF0aW9uIHJlbWFpbnMgVEJELjwvYj48YnI+Ci0gICogUmFpc2VzIGEgZGlhbG9nIGZvciBicm93c2luZyBjbGFzc2VzIG9uIGEgcHJvamVjdCdzIGNsYXNzIHBhdGguCi0gICogQHBhcmFtIHBhcmVudFNoZWxsIFRoZSBwYXJlbnQgc2hlbGwsIG9wdGlvbmFsbHkgbnVsbC4KLSAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdC4KLSAgKiBAcmV0dXJuIFRoZSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgc2VsZWN0ZWQgamF2YSBjbGFzcy4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgYnJvd3NlQ2xhc3NlcyAoIFNoZWxsIHBhcmVudFNoZWxsLCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgewotICAgIHJldHVybiBicm93c2VDbGFzc2VzKHBhcmVudFNoZWxsLCBwcm9qZWN0LCAoSVJ1bm5hYmxlQ29udGV4dCludWxsKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGJyb3dzZUNsYXNzZXMgKCBTaGVsbCBwYXJlbnRTaGVsbCwgSVByb2plY3QgcHJvamVjdCwgSVdpemFyZENvbnRhaW5lciBjb250YWluZXIpCi0gIHsKLSAgICByZXR1cm4gYnJvd3NlQ2xhc3NlcyhwYXJlbnRTaGVsbCwgcHJvamVjdCwgKElSdW5uYWJsZUNvbnRleHQpY29udGFpbmVyKTsKLSAgfQotCi0gIC8qKgotICAqIFJhaXNlcyBhIGRpYWxvZyBmb3IgYnJvd3NpbmcgY2xhc3NlcyBvbiBhIHByb2plY3QncyBjbGFzcyBwYXRoLgotICAqIEBwYXJhbSBwYXJlbnRTaGVsbCBUaGUgcGFyZW50IHNoZWxsLCBvcHRpb25hbGx5IG51bGwuCi0gICogQHBhcmFtIHByb2plY3QgVGhlIHByb2plY3QuCi0gICogQHBhcmFtIGNvbnRhaW5lciBUaGUgY29udGFpbmVyIG9mIHRoZSBsYXVuY2hpbmcgd2l6YXJkLgotICAqIEByZXR1cm4gVGhlIHF1YWxpZmllZCBuYW1lIG9mIHRoZSBzZWxlY3RlZCBqYXZhIGNsYXNzLgotICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBicm93c2VDbGFzc2VzICggU2hlbGwgcGFyZW50U2hlbGwsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVByb2plY3QgcHJvamVjdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUnVubmFibGVDb250ZXh0IGN0eHQpIAotICB7Ci0gICAgcmV0dXJuIGJyb3dzZUNsYXNzZXMocGFyZW50U2hlbGwsIG5ldyBJUmVzb3VyY2VbXSB7cHJvamVjdH0sIGN0eHQpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIFN0cmluZyBicm93c2VDbGFzc2VzKFNoZWxsIHBhcmVudFNoZWxsLCBJUmVzb3VyY2VbXSByZXNvdXJjZXMsIElSdW5uYWJsZUNvbnRleHQgY3R4dCkKLSAgewotICAgIElUeXBlIGl0eXBlID0gYnJvd3NlQ2xhc3Nlc0FzSVR5cGUocGFyZW50U2hlbGwsIHJlc291cmNlcywgY3R4dCk7Ci0gICAgaWYgKGl0eXBlICE9IG51bGwpCi0gICAgICByZXR1cm4gaXR5cGUuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgSVR5cGUgYnJvd3NlQ2xhc3Nlc0FzSVR5cGUoU2hlbGwgcGFyZW50U2hlbGwsIElSZXNvdXJjZVtdIHJlc291cmNlcywgSVJ1bm5hYmxlQ29udGV4dCBjdHh0KQotICB7Ci0JVmVjdG9yIGphdmFFbGVtZW50cyA9IG5ldyBWZWN0b3IoKTsKLQlmb3IgKGludCBpID0gMDsgaSA8IHJlc291cmNlcy5sZW5ndGg7IGkrKykKLQl7Ci0JICBJSmF2YUVsZW1lbnQgamF2YUVsZW1lbnQgPSBKYXZhQ29yZS5jcmVhdGUocmVzb3VyY2VzW2ldKTsKLQkgIGlmIChqYXZhRWxlbWVudCAhPSBudWxsKQotCSAgICBqYXZhRWxlbWVudHMuYWRkKGphdmFFbGVtZW50KTsKLQl9Ci0JSUphdmFFbGVtZW50W10gZWxlbWVudHMgPSAoSUphdmFFbGVtZW50W10pamF2YUVsZW1lbnRzLnRvQXJyYXkobmV3IElKYXZhRWxlbWVudFswXSk7Ci0JCi0gICAgSUphdmFTZWFyY2hTY29wZSBzY29wZSA9IFNlYXJjaEVuZ2luZS5jcmVhdGVKYXZhU2VhcmNoU2NvcGUoZWxlbWVudHMpOwotICAgIHNjb3BlLnNldEluY2x1ZGVzQ2xhc3NwYXRocyh0cnVlKTsKLSAgICBzY29wZS5zZXRJbmNsdWRlc0JpbmFyaWVzKHRydWUpOwotCi0gICAgLy9DcmVhdGluZyBhbmQgb3BlbmluZyBhIFR5cGVTZWxlY3Rpb25EaWFsb2cKLSAgICB0cnkKLQl7Ci0gICAgICAvLyBXZSB3YW50IHRvIHNob3cgZXZlcnkgY2xhc3Mgd2hlbiB0aGUgZGlhbG9nIGlzIG9wZW5lZCwgc28gdGhyb3cgaW4gdGhpcyBTdHJpbmcKLSAgICAgIFN0cmluZyBmaWx0ZXJTdHJpbmdUb1NlbGVjdEV2ZXJ5dGhpbmcgPSAiKiAiOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIFNlbGVjdGlvbkRpYWxvZyBkaWFsb2cgPSBKYXZhVUkuY3JlYXRlVHlwZURpYWxvZyhwYXJlbnRTaGVsbCwgY3R4dCwgc2NvcGUsIElKYXZhRWxlbWVudFNlYXJjaENvbnN0YW50cy5DT05TSURFUl9DTEFTU0VTLCBmYWxzZSwgZmlsdGVyU3RyaW5nVG9TZWxlY3RFdmVyeXRoaW5nKTsgCi0gICAgICBkaWFsb2cuc2V0VGl0bGUoV1NVSVBsdWdpbk1lc3NhZ2VzLkRJQUxPR19USVRMRV9DTEFTU19CUk9XU0UpOwotICAgICAgZGlhbG9nLnNldE1lc3NhZ2UoV1NVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX0NMQVNTX0JST1dTRSk7ICAgIAotICAgICAgZGlhbG9nLm9wZW4oKTsKLQotICAgICAgLy9HZXR0aW5nIHRoZSByZXN1bHQgYW5kIHJldHVybmluZyBpdAotICAgICAgT2JqZWN0W10gcmVzdWx0cyA9IGRpYWxvZy5nZXRSZXN1bHQoKTsKLSAgICAgIGlmIChyZXN1bHRzICE9IG51bGwgJiYgcmVzdWx0cy5sZW5ndGggPiAwKQotICAgICAgewotICAgICAgICBpZiAocmVzdWx0c1swXSBpbnN0YW5jZW9mIElUeXBlKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIChJVHlwZSlyZXN1bHRzWzBdOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gam1lKQotCXsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgKiBSYWlzZXMgYSBkaWFsb2cgZm9yIGJyb3dzaW5nIGludGVyZmFjZXMgb24gYSBwcm9qZWN0J3MgY2xhc3MgcGF0aC4KLSAgKiBAcGFyYW0gcGFyZW50U2hlbGwgVGhlIHBhcmVudCBzaGVsbCwgb3B0aW9uYWxseSBudWxsLgotICAqIEBwYXJhbSBwcm9qZWN0IFRoZSBwcm9qZWN0LgotICAqIEBwYXJhbSBjb250YWluZXIgVGhlIGNvbnRhaW5lciBvZiB0aGUgbGF1bmNoaW5nIHdpemFyZC4KLSAgKiBAcmV0dXJuIFRoZSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgc2VsZWN0ZWQgamF2YSBpbnRlcmZhY2UuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGJyb3dzZUludGVyZmFjZXMoIFNoZWxsIHBhcmVudFNoZWxsLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVByb2plY3QgcHJvamVjdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElXaXphcmRDb250YWluZXIgY29udGFpbmVyKSAKLSAgCQkJCQkJCQkJICAgIAotICB7Ci0gICAgU3RyaW5nIGludGVyZmFjZU5hbWUgPSBudWxsOwotCi0gICAgLy9MaW1pdGluZyBzZWFyY2ggc2NvcGUgdG8gdGhlIHByb2plY3QKLSAgICBJUmVzb3VyY2VbXSByZXNvdXJjZXMgPSBuZXcgSVJlc291cmNlWzFdOwotICAgIHJlc291cmNlc1swXT1wcm9qZWN0OwotCUlKYXZhRWxlbWVudFtdIGVsZW1lbnRzID0gbmV3IElKYXZhRWxlbWVudFsxXTsKLQllbGVtZW50c1swXSA9IEphdmFDb3JlLmNyZWF0ZShyZXNvdXJjZXNbMF0pOwotICAgIElKYXZhU2VhcmNoU2NvcGUgc2NvcGUgPSBTZWFyY2hFbmdpbmUuY3JlYXRlSmF2YVNlYXJjaFNjb3BlKGVsZW1lbnRzKTsKLSAgICBzY29wZS5zZXRJbmNsdWRlc0NsYXNzcGF0aHModHJ1ZSk7Ci0gICAgc2NvcGUuc2V0SW5jbHVkZXNCaW5hcmllcyh0cnVlKTsKLQotICAgIC8vQ3JlYXRpbmcgYW5kIG9wZW5pbmcgYSBUeXBlU2VsZWN0aW9uRGlhbG9nCi0gICAgdHJ5Ci0JewotICAgIAlTZWxlY3Rpb25EaWFsb2cgZGlhbG9nID0gSmF2YVVJLmNyZWF0ZVR5cGVEaWFsb2cocGFyZW50U2hlbGwsIGNvbnRhaW5lciwgc2NvcGUsIElKYXZhRWxlbWVudFNlYXJjaENvbnN0YW50cy5DT05TSURFUl9UWVBFUywgZmFsc2UpOwotICAgIAlkaWFsb2cuc2V0VGl0bGUoV1NVSVBsdWdpbk1lc3NhZ2VzLkRJQUxPR19USVRMRV9JTlRFUkZBQ0VfQlJPV1NFKTsKLSAgICAJZGlhbG9nLnNldE1lc3NhZ2UoV1NVSVBsdWdpbk1lc3NhZ2VzLkRJQUxPR19USVRMRV9JTlRFUkZBQ0VfQlJPV1NFKTsgICAgCi0gICAgCWRpYWxvZy5vcGVuKCk7Ci0KLSAgICAJLy9HZXR0aW5nIHRoZSByZXN1bHQgYW5kIHJldHVybmluZyBpdAotICAgIAlPYmplY3RbXSByZXN1bHRzID0gZGlhbG9nLmdldFJlc3VsdCgpOwotICAgIAlpZiAocmVzdWx0cyAhPSBudWxsICYmIHJlc3VsdHMubGVuZ3RoID4gMCkKLSAgICAJewotICAgIAkJaWYgKHJlc3VsdHNbMF0gaW5zdGFuY2VvZiBJVHlwZSkKLSAgICAJCXsKLSAgICAJCQlJVHlwZSByZXN1bHRJbnRlcmZhY2UgPSAoSVR5cGUpcmVzdWx0c1swXTsKLSAgICAJCQlpbnRlcmZhY2VOYW1lID0gcmVzdWx0SW50ZXJmYWNlLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpOwotICAgIAkJfQotICAgIAl9Ci0gICAgfQotICAgIGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gam1lKQotCXsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGludGVyZmFjZU5hbWU7Ci0gIH0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2RpYWxvZy9SZXNvdXJjZVNlbGVjdGlvbkRpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9kaWFsb2cvUmVzb3VyY2VTZWxlY3Rpb25EaWFsb2cuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRlM2JlYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL2RpYWxvZy9SZXNvdXJjZVNlbGVjdGlvbkRpYWxvZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzE5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5kaWFsb2c7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5EZWNvcmF0aW5nTGFiZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TZWxlY3Rpb25DaGFuZ2VkRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVHJlZVZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlZpZXdlckZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkFueUZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLldTVUlQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkucGx1Z2luLldlYlNlcnZpY2VVSVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbWJvOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRyZWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5tb2RlbC5Xb3JrYmVuY2hDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkubW9kZWwuV29ya2JlbmNoTGFiZWxQcm92aWRlcjsKLQotCi0vKioKLSogVGhpcyBjbGFzcyBwcm92aWRlcyBhIGRpYWxvZyBmb3IgYnJvd3Npbmcgd29ya3NwYWNlIHJlc291cmNlcy4KLSogU2VlIGFsc28ge0BsaW5rIERpYWxvZ1V0aWxzI2Jyb3dzZVJlc291cmNlc30uCi0qLwotcHVibGljIGNsYXNzIFJlc291cmNlU2VsZWN0aW9uRGlhbG9nIGV4dGVuZHMgRGlhbG9nIGltcGxlbWVudHMgTGlzdGVuZXIKLXsKLQotICAvLyBEaWFsb2cgY29udHJvbHMuCi0gIC8vCi0gIHByaXZhdGUgTGFiZWwgZmlsdGVyTGFiZWxfOwotICBwcml2YXRlIENvbWJvIGZpbHRlckNvbWJvXzsKLSAgLypDT05URVhUX0lEIERSRVMwMDAxIGZvciB0aGUgUmVzb3VyY2UgVHlwZSBjb21ibyBib3ggb2YgdGhlIFJlc291cmNlIFNlbGVjdGlvbiBEaWFsb2cqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5GT1BPUF9EUkVTX0NPTUJPX1JFU09VUkNFX1RZUEUgPSBXZWJTZXJ2aWNlVUlQbHVnaW4uSUQgKyAiLkRSRVMwMDAxIjsKLQotICBwcml2YXRlIFRyZWUgcmVzb3VyY2VUcmVlXzsKLSAgcHJpdmF0ZSBUcmVlVmlld2VyIGZpbGVWaWV3ZXJfOwotICAvKkNPTlRFWFRfSUQgRFJFUzAwMDIgZm9yIHRoZSBSZXNvdXJjZSB0cmVlIG9mIHRoZSBSZXNvdXJjZSBTZWxlY3Rpb24gRGlhbG9nKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElORk9QT1BfRFJFU19UUkVFX1JFU09VUkNFID0gV2ViU2VydmljZVVJUGx1Z2luLklEICsgIi5EUkVTMDAwMiI7Ci0KLSAgLy8KLSAgLy8gRXNzZW50aWFsIGdvb2RpZXMuCi0gIC8vCi0gIHByaXZhdGUgSVJlc291cmNlIHJvb3RfOwotICBwcml2YXRlIElSZXNvdXJjZSBpbml0aWFsU2VsZWN0aW9uXzsKLSAgcHJpdmF0ZSBGaWx0ZXJbXSBmaWx0ZXJzXzsKLSAgcHJpdmF0ZSBGaWx0ZXIgY3VycmVudEZpbHRlcl87Ci0gIHByaXZhdGUgSVJlc291cmNlW10gc2VsZWN0aW9uXzsKLSAgcHJpdmF0ZSBib29sZWFuIG11bHRpcGxlU2VsZWN0aW9uRW5hYmxlZF87Ci0KLSAgLyoqCi0gICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5SZXNvdXJjZVNlbGVjdGlvbkRpYWxvZzwvY29kZT4KLSAgKiB1bmRlciB0aGUgZ2l2ZW4gPGNvZGU+cGFyZW50IFNoZWxsPC9jb2RlPi4KLSAgKiBUaGUgZGlhbG9nIHJlbmRlcnMgYWxsIHJlc291cmNlcyBpbmNsdWRpbmcgYW5kCi0gICogdW5kZXIgdGhlIGdpdmVuIDxjb2RlPnJvb3QgSVJlc291cmNlPC9jb2RlPi4KLSAgKiBAcGFyYW0gcGFyZW50IFRoZSBwYXJlbnQge0BsaW5rIG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsfSwKLSAgKiBvciBudWxsIHRvIGNyZWF0ZSBhIHRvcC1sZXZlbCBzaGVsbC4KLSAgKiBAcGFyYW0gcm9vdCBUaGUgcm9vdCB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlfSwKLSAgKiBvciBudWxsIHRvIGJlZ2luIHdpdGggdGhlIHdvcmtzcGFjZSByb290LgotICAqIEBwYXJhbSBpbml0aWFsU2VsZWN0aW9uIFRoZSBpbml0aWFsbHkgc2VsZWN0ZWQgb2JqZWN0IG9yIG51bGwgaWYgbm9uZS4KLSAgKi8KLSAgcHVibGljIFJlc291cmNlU2VsZWN0aW9uRGlhbG9nICggU2hlbGwgcGFyZW50LCBJUmVzb3VyY2Ugcm9vdCwgSVJlc291cmNlIGluaXRpYWxTZWxlY3Rpb24gKQotICB7Ci0gICAgdGhpcyhwYXJlbnQscm9vdCxpbml0aWFsU2VsZWN0aW9uLG5ldyBGaWx0ZXJbXSB7bmV3IEFueUZpbHRlcigpfSk7Ci0gIH0KLQotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlJlc291cmNlU2VsZWN0aW9uRGlhbG9nPC9jb2RlPgotICAqIHVuZGVyIHRoZSBnaXZlbiA8Y29kZT5wYXJlbnQgU2hlbGw8L2NvZGU+LgotICAqIFRoZSBkaWFsb2cgcmVuZGVycyBhbGwgcmVzb3VyY2VzIGluY2x1ZGluZyBhbmQKLSAgKiB1bmRlciB0aGUgZ2l2ZW4gPGNvZGU+cm9vdCBJUmVzb3VyY2U8L2NvZGU+IHRoYXQKLSAgKiBhcmUgYWNjZXB0ZWQgYnkgdGhlIGdpdmVuIGZpbHRlci4KLSAgKiBTZWUge0BsaW5rIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uRmlsdGVyI2FjY2VwdHN9LgotICAqIEBwYXJhbSBwYXJlbnQgVGhlIHBhcmVudCB7QGxpbmsgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGx9LAotICAqIG9yIG51bGwgdG8gY3JlYXRlIGEgdG9wLWxldmVsIHNoZWxsLgotICAqIEBwYXJhbSByb290IFRoZSByb290IHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2V9LAotICAqIG9yIG51bGwgdG8gYmVnaW4gd2l0aCB0aGUgd29ya3NwYWNlIHJvb3QuCi0gICogQHBhcmFtIGluaXRpYWxTZWxlY3Rpb24gVGhlIGluaXRpYWxseSBzZWxlY3RlZCBvYmplY3Qgb3IgbnVsbCBpZiBub25lLgotICAqIEBwYXJhbSBmaWx0ZXIgVGhlIHtAbGluayBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkZpbHRlcn0sCi0gICogb3IgbnVsbCB0byBkZWZhdWx0IHRvIGFsbCByZXNvdXJjZXMgdW5kZXIgdGhlIDxjb2RlPnJvb3Q8L2NvZGU+LgotICAqLwotICBwdWJsaWMgUmVzb3VyY2VTZWxlY3Rpb25EaWFsb2cgKCBTaGVsbCBwYXJlbnQsIElSZXNvdXJjZSByb290LCBJUmVzb3VyY2UgaW5pdGlhbFNlbGVjdGlvbiwgRmlsdGVyIGZpbHRlciApCi0gIHsKLSAgICB0aGlzKHBhcmVudCxyb290LGluaXRpYWxTZWxlY3Rpb24sbmV3IEZpbHRlcltdIHtmaWx0ZXJ9KTsKLSAgfQotCi0gIC8qKgotICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+UmVzb3VyY2VTZWxlY3Rpb25EaWFsb2c8L2NvZGU+Ci0gICogdW5kZXIgdGhlIGdpdmVuIDxjb2RlPnBhcmVudCBTaGVsbDwvY29kZT4uCi0gICogVGhlIGRpYWxvZyByZW5kZXJzIGFsbCByZXNvdXJjZXMgaW5jbHVkaW5nIGFuZAotICAqIHVuZGVyIHRoZSBnaXZlbiA8Y29kZT5yb290IElSZXNvdXJjZTwvY29kZT4gdGhhdAotICAqIGFyZSBhY2NlcHRlZCBieSB0aGUgZ2l2ZW4gZmlsdGVycy4KLSAgKiBTZWUge0BsaW5rIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uRmlsdGVyI2FjY2VwdHN9LgotICAqIEBwYXJhbSBwYXJlbnQgVGhlIHBhcmVudCB7QGxpbmsgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGx9LgotICAqIG9yIG51bGwgdG8gY3JlYXRlIGEgdG9wLWxldmVsIHNoZWxsLgotICAqIEBwYXJhbSByb290IFRoZSByb290IHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2V9LAotICAqIG9yIG51bGwgdG8gYmVnaW4gd2l0aCB0aGUgd29ya3NwYWNlIHJvb3QuCi0gICogQHBhcmFtIGluaXRpYWxTZWxlY3Rpb24gVGhlIGluaXRpYWxseSBzZWxlY3RlZCBvYmplY3Qgb3IgbnVsbCBpZiBub25lLgotICAqIEBwYXJhbSBmaWx0ZXJzIEFuIGFycmF5IG9mIHtAbGluayBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkZpbHRlcn0KLSAgKiBvYmplY3RzLgotICAqIElmIHRoZSBhcnJheSBpcyBudWxsIG9yIG9mIGxlbmd0aCB6ZXJvLCB0aGVuIGFsbCByZXNvdXJjZXMgYXJlIGFjY2VwdGVkCi0gICogKGllLiBlcXVpdmFsZW50IHRvIDxjb2RlPlJlc291cmNlU2VsZWN0aW9uRGlhbG9nKHBhcmVudCxyb290KTwvY29kZT4uCi0gICogSWYgdGhlIGFycmF5IGlzIG9mIGxlbmd0aCBvbmUsIHRoZW4gdGhlIGRpYWxvZyB3aWxsIGNvbnNpc3Qgb2YgYSBzaW5nbGUKLSAgKiBjb250cm9sIHNob3dpbmcgYSBsaXN0IG9mIGFsbCBmaWx0ZXJlZCByZXNvdXJjZXMuCi0gICogSWYgdGhlIGFycmF5IGlzIG9mIGxlbmd0aCBncmVhdGVyIHRoYW4gb25lLCB0aGVuIHRoZSBkaWFsb2cgd2lsbAotICAqIGNvbnNpc3Qgb2YgYSBjb21ibyBib3ggY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGZpbHRlcnMgYW5kIHdpdGggdGhlCi0gICogZmlyc3QgZmlsdGVyIChpZS4gPGNvZGU+ZmlsdGVyc1swXTwvY29kZT4pIHNlbGVjdGVkIGJ5IGRlZmF1bHQsIGZvbGxvd2VkCi0gICogYnkgYSBjb250cm9sIHNob3dpbmcgYSBsaXN0IG9mIGFsbCByZXNvdXJjZXMgZmlsdGVyZWQgYnkgdGhlIHNlbGVjdGVkIGZpbHRlci4gCi0gICovCi0gIHB1YmxpYyBSZXNvdXJjZVNlbGVjdGlvbkRpYWxvZyAoIFNoZWxsIHBhcmVudCwgSVJlc291cmNlIHJvb3QsIElSZXNvdXJjZSBpbml0aWFsU2VsZWN0aW9uLCBGaWx0ZXJbXSBmaWx0ZXJzICkKLSAgewotICAgIHN1cGVyKHBhcmVudCk7Ci0gICAgcm9vdF8gPSByb290ID09IG51bGwgPyBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKSA6IHJvb3Q7Ci0gICAgaW5pdGlhbFNlbGVjdGlvbl8gPSBpbml0aWFsU2VsZWN0aW9uOwotICAgIGZpbHRlcnNfID0gKGZpbHRlcnMgPT0gbnVsbCB8fCBmaWx0ZXJzLmxlbmd0aCA9PSAwKSA/IG5ldyBGaWx0ZXJbXSB7bmV3IEFueUZpbHRlcigpfSA6IGZpbHRlcnM7Ci0gICAgY3VycmVudEZpbHRlcl8gPSBmaWx0ZXJzX1swXTsKLSAgICBtdWx0aXBsZVNlbGVjdGlvbkVuYWJsZWRfID0gZmFsc2U7Ci0gICAgc2V0U2hlbGxTdHlsZShTV1QuRElBTE9HX1RSSU0gfCBTV1QuUkVTSVpFIHwgU1dULkFQUExJQ0FUSU9OX01PREFMKTsKLSAgfQotCi0gIC8qKgotICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgbXVsdGlwbGUgc2VsZWN0aW9uIGluIHRoZSB0cmVlIHZpZXcuCi0gICogTXVsdGlwbGUgc2VsZWN0aW9uIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0gICogQHBhcmFtIG11bHRpcGxlU2VsZWN0aW9uRW5hYmxlZCBUcnVlIHRvIGVuYWJsZWQgb3IgZmFsc2UgdG8gZGlzYWJsZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0TXVsdGlwbGVTZWxlY3Rpb25FbmFibGVkICggYm9vbGVhbiBtdWx0aXBsZVNlbGVjdGlvbkVuYWJsZWQgKQotICB7Ci0gICAgbXVsdGlwbGVTZWxlY3Rpb25FbmFibGVkXyA9IG11bHRpcGxlU2VsZWN0aW9uRW5hYmxlZDsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIHNlbGVjdGlvbnMgbWFkZSBpbiB0aGUgZGlhbG9nIGlmIE9LIHdhcyBwcmVzc2VkLAotICAqIG9yIG51bGwgaWYgQ2FuY2VsIHdhcyBwcmVzc2VkLiBSZXR1cm5zIG51bGwgaWYgdGhlIGRpYWxvZwotICAqIGhhcyBuZXZlciBiZWVuIG9wZW5lZC4KLSAgKiBAcmV0dXJuIEFuIGFycmF5IG9mIHNlbGVjdGVkIHJlc291cmNlcywgcG9zc2libHkgZW1wdHksIHBvc3NpYmx5IG51bGwuCi0gICovCi0gIHB1YmxpYyBJUmVzb3VyY2VbXSBnZXRSZXN1bHQgKCkKLSAgewotICAgIHJldHVybiBzZWxlY3Rpb25fOwotICB9Ci0KLSAgLyoqCi0gICogQ2FsbGVkIHdoZW4gdGhlIENhbmNlbCBidXR0b24gaXMgcHJlc3NlZC4KLSAgKiBJbnN1cmVzIHRoYXQge0BsaW5rICNnZXRSZXN1bHR9IHdpbGwgcmV0dXJuIG51bGwuCi0gICovCi0gIHByb3RlY3RlZCB2b2lkIGNhbmNlbFByZXNzZWQgKCkKLSAgewotICAgIHNlbGVjdGlvbl8gPSBudWxsOwotICAgIHNldFJldHVybkNvZGUoRGlhbG9nLkNBTkNFTCk7Ci0gICAgc3VwZXIuY2FuY2VsUHJlc3NlZCgpOwotICB9Ci0KLSAgLyoqCi0gICogQ2FsbGVkIHdoZW4gdGhlIE9LIGJ1dHRvbiBpcyBwcmVzc2VkLgotICAqIFNxdWlycmVscyBhd2F5IHRoZSBsaXN0IG9mIHplcm8gb3IgbW9yZSBzZWxlY3RlZAotICAqIDxjb2RlPklSZXNvdXJjZTwvY29kZT5zIHRvIGJlIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0UmVzdWx0fS4KLSAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgb2tQcmVzc2VkICgpCi0gIHsKLSAgICBJU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGZpbGVWaWV3ZXJfLmdldFNlbGVjdGlvbigpOwotICAgIGlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikKLSAgICB7Ci0gICAgICBJU3RydWN0dXJlZFNlbGVjdGlvbiBzdHJ1Y3R1cmVkU2VsZWN0aW9uID0gKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKXNlbGVjdGlvbjsKLSAgICAgIHNlbGVjdGlvbl8gPSBuZXcgSVJlc291cmNlW3N0cnVjdHVyZWRTZWxlY3Rpb24uc2l6ZSgpXTsKLSAgICAgIGludCBpPTA7Ci0gICAgICBJdGVyYXRvciBpdGVyID0gc3RydWN0dXJlZFNlbGVjdGlvbi5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBPYmplY3Qgb2JqZWN0ID0gaXRlci5uZXh0KCk7Ci0gICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBJUmVzb3VyY2UpCi0gICAgICAgIHsKLSAgICAgICAgICBzZWxlY3Rpb25fW2krK10gPSAoSVJlc291cmNlKW9iamVjdDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBzZXRSZXR1cm5Db2RlKERpYWxvZy5PSyk7Ci0gICAgc3VwZXIub2tQcmVzc2VkKCk7Ci0gIH0KLQotICAvKioKLSAgKiBTZWUge0BsaW5rIG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3cjY29uZmlndXJlU2hlbGx9LgotICAqIEBwYXJhbSBzaGVsbCBUaGUgc2hlbGwuCi0gICovCi0gIHByb3RlY3RlZCB2b2lkIGNvbmZpZ3VyZVNoZWxsICggU2hlbGwgc2hlbGwgKQotICB7Ci0gICAgc3VwZXIuY29uZmlndXJlU2hlbGwoc2hlbGwpOwotICAgIHNoZWxsLnNldFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLkRJQUxPR19USVRMRV9SRVNPVVJDRV9CUk9XU0UpOwotICB9Ci0KLSAgLyoqIAotICAqIENyZWF0ZXMgdGhlIGRpYWxvZyBhcmVhLgotICAqIEBwYXJhbSBwYXJlbnQgVGhlIHBhcmVudCBjb21wb3NpdGUuCi0gICogQHJldHVybiBUaGUgY29udHJvbCBhcmVhLgotICAqLwotICBwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVEaWFsb2dBcmVhICggQ29tcG9zaXRlIHBhcmVudCApCi0gIHsKLSAgICBHcmlkTGF5b3V0IGdsOwotICAgIEdyaWREYXRhIGdkOwotCi0gICAgQ29tcG9zaXRlIGNvbXBvc2l0ZSA9IChDb21wb3NpdGUpc3VwZXIuY3JlYXRlRGlhbG9nQXJlYShwYXJlbnQpOwotICAgIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCB8IEdyaWREYXRhLkdSQUJfSE9SSVpPTlRBTCB8IEdyaWREYXRhLlZFUlRJQ0FMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX1ZFUlRJQ0FMKTsKLSAgICBnZC53aWR0aEhpbnQgPSA0MDA7Ci0gICAgZ2QuaGVpZ2h0SGludCA9IDMwMDsKLSAgICBnZC5ncmFiRXhjZXNzVmVydGljYWxTcGFjZSA9IHRydWU7Ci0gICAgZ2QuZ3JhYkV4Y2Vzc0hvcml6b250YWxTcGFjZSA9IHRydWU7Ci0gICAgY29tcG9zaXRlLnNldExheW91dERhdGEoZ2QpOwotCi0gICAgaWYgKGZpbHRlcnNfLmxlbmd0aCA+IDEpCi0gICAgewotICAgICAgQ29tcG9zaXRlIGYgPSBuZXcgQ29tcG9zaXRlKGNvbXBvc2l0ZSxTV1QuTk9ORSk7Ci0gICAgICBnbCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgICBnbC5udW1Db2x1bW5zID0gMjsKLSAgICAgIGdsLm1hcmdpbkhlaWdodCA9IDA7Ci0gICAgICBnbC5tYXJnaW5XaWR0aCA9IDA7Ci0gICAgICBmLnNldExheW91dChnbCk7Ci0gICAgICBnZCA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwpOwotICAgICAgZi5zZXRMYXlvdXREYXRhKGdkKTsKLQotICAgICAgZmlsdGVyTGFiZWxfID0gbmV3IExhYmVsKGYsU1dULldSQVApOwotICAgICAgZmlsdGVyTGFiZWxfLnNldFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX1JFU09VUkNFX0ZJTFRFUik7Ci0gICAgICBmaWx0ZXJMYWJlbF8uc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfRFJFU19DT01CT19SRVNPVVJDRV9UWVBFKTsKLQotICAgICAgZmlsdGVyQ29tYm9fID0gbmV3IENvbWJvKGYsU1dULkRST1BfRE9XTiB8IFNXVC5SRUFEX09OTFkpOwotICAgICAgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMKTsKLSAgICAgIGZpbHRlckNvbWJvXy5zZXRMYXlvdXREYXRhKGdkKTsKLSAgICAgIGZpbHRlckNvbWJvXy5hZGRMaXN0ZW5lcihTV1QuU2VsZWN0aW9uLHRoaXMpOwotICAgICAgZmlsdGVyQ29tYm9fLnNldFRvb2xUaXBUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5UT09MVElQX0RSRVNfQ09NQk9fUkVTT1VSQ0VfVFlQRSk7Ci0gICAgICBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKGZpbHRlckNvbWJvXyxJTkZPUE9QX0RSRVNfQ09NQk9fUkVTT1VSQ0VfVFlQRSk7Ci0gICAgfQotCi0gICAgaWYgKG11bHRpcGxlU2VsZWN0aW9uRW5hYmxlZF8pCi0gICAgewotICAgICAgcmVzb3VyY2VUcmVlXyA9IG5ldyBUcmVlKGNvbXBvc2l0ZSxTV1QuTVVMVEkgfCBTV1QuQk9SREVSIHwgU1dULlZfU0NST0xMIHwgU1dULkhfU0NST0xMKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlc291cmNlVHJlZV8gPSBuZXcgVHJlZShjb21wb3NpdGUsU1dULlNJTkdMRSB8IFNXVC5CT1JERVIgfCBTV1QuVl9TQ1JPTEwgfCBTV1QuSF9TQ1JPTEwpOwotICAgIH0KLSAgICBnZCA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwgfCBHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9GSUxMIHwgR3JpZERhdGEuR1JBQl9WRVJUSUNBTCk7Ci0gICAgZ2QuZ3JhYkV4Y2Vzc1ZlcnRpY2FsU3BhY2UgPSB0cnVlOwotICAgIGdkLmdyYWJFeGNlc3NIb3Jpem9udGFsU3BhY2UgPSB0cnVlOwotICAgIHJlc291cmNlVHJlZV8uc2V0TGF5b3V0RGF0YShnZCk7Ci0vLyAgcmVzb3VyY2VUcmVlXy5hZGRMaXN0ZW5lcihTV1QuU2VsZWN0aW9uLHRoaXMpOwotICAgIHJlc291cmNlVHJlZV8uc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfRFJFU19UUkVFX1JFU09VUkNFKTsKLSAgICBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKHJlc291cmNlVHJlZV8sSU5GT1BPUF9EUkVTX1RSRUVfUkVTT1VSQ0UpOwotCi0gICAgZmlsZVZpZXdlcl8gPSBuZXcgVHJlZVZpZXdlcihyZXNvdXJjZVRyZWVfKTsKLSAgICBmaWxlVmlld2VyXy5zZXRDb250ZW50UHJvdmlkZXIobmV3IFdvcmtiZW5jaENvbnRlbnRQcm92aWRlcigpKTsKLSAgICBmaWxlVmlld2VyXy5zZXRMYWJlbFByb3ZpZGVyKAotICAgICAgICAgICAgICAgIG5ldyBEZWNvcmF0aW5nTGFiZWxQcm92aWRlcigKLQkJCQkgICAgICAgIG5ldyBXb3JrYmVuY2hMYWJlbFByb3ZpZGVyKCksIAotCQkJCSAgICAgICAgV2ViU2VydmljZVVJUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0V29ya2JlbmNoKCkuZ2V0RGVjb3JhdG9yTWFuYWdlcigpLmdldExhYmVsRGVjb3JhdG9yKCkpKTsKLSAgICBmaWxlVmlld2VyXy5hZGRGaWx0ZXIoCi0gICAgICBuZXcgVmlld2VyRmlsdGVyICgpCi0gICAgICB7Ci0gICAgICAgIHB1YmxpYyBib29sZWFuIHNlbGVjdCAoIFZpZXdlciB2aWV3ZXIsIE9iamVjdCBwYXJlbnRPYmplY3QsIE9iamVjdCBvYmplY3QgKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgKAotICAgICAgICAgICAgKChvYmplY3QgaW5zdGFuY2VvZiBJUmVzb3VyY2UpICYmICgoSVJlc291cmNlKW9iamVjdCkuZ2V0VHlwZSgpICE9IElSZXNvdXJjZS5GSUxFKQotICAgICAgICAgICAgfHwgKFJlc291cmNlU2VsZWN0aW9uRGlhbG9nLnRoaXMuY3VycmVudEZpbHRlcl8uYWNjZXB0cyhvYmplY3QpKQotICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICApOwotICAgIGZpbGVWaWV3ZXJfLnNldElucHV0KHJvb3RfKTsKLSAgICBmaWxlVmlld2VyXy5hZGRTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIoCi0gICAgICBuZXcgSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lciAoKQotICAgICAgewotICAgICAgICBwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkICggU2VsZWN0aW9uQ2hhbmdlZEV2ZW50IGV2ZW50ICkKLSAgICAgICAgewotLy8gICAgICAgIFJlc291cmNlU2VsZWN0aW9uRGlhbG9nLnRoaXMudmFsaWRhdGVQYWdlVG9TdGF0dXMoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICk7Ci0gICAgaWYgKGluaXRpYWxTZWxlY3Rpb25fICE9IG51bGwpCi0gICAgewotICAgICAgZmlsZVZpZXdlcl8uc2V0U2VsZWN0aW9uKG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKFJlc291cmNlU2VsZWN0aW9uRGlhbG9nLnRoaXMuaW5pdGlhbFNlbGVjdGlvbl8pLHRydWUpOwotICAgIH0KLQotICAgIHJldHVybiBjb21wb3NpdGU7Ci0gIH0KLQotICAvKioKLSAgKiBDYWxsZWQgd2hlbiBhbiBldmVudCBvY2N1cnMgb24gdGhlIHBhZ2UuCi0gICogSGFuZGxlcyB0aGUgZXZlbnQgYW5kIHJldmFsaWRhdGVzIHRoZSBwYWdlLgotICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgdGhhdCBvY2N1cmVkLgotICAqLwotICBwdWJsaWMgdm9pZCBoYW5kbGVFdmVudCAoIEV2ZW50IGV2ZW50ICkKLSAgewotLy8gIHZhbGlkYXRlUGFnZVRvU3RhdHVzKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvcGx1Z2luL1dlYlNlcnZpY2VVSVBsdWdpbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9wbHVnaW4vV2ViU2VydmljZVVJUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNTFhNTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9wbHVnaW4vV2ViU2VydmljZVVJUGx1Z2luLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjQgICAxMTU2OTAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLnBsdWdpbjsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47Ci0KLQotLyoqCi0qIFRoaXMgaXMgdGhlIHBsdWdpbiBjbGFzcyBmb3IgdGhlIFdlYiBTZXJ2aWNlcyBwbHVnaW4uCi0qIDxwPgotKiBUaGlzIHBsdWdpbiBjb250YWlucyB0aGUgZ3JhcGhpYyB1c2VyIGludGVyZmFjZSB0byB0aGUKLSogV2ViIFNlcnZpY2VzIHJ1bnRpbWUgZm91bmQgaW4gb3JnLmVjbGlwc2UuanN0LndzLgotKi8KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlVUlQbHVnaW4gZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luCi17Ci0KLSAgLyoqCi0gICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRlc2NyaXB0b3Igb2YgdGhpcyBwbHVnaW4gaW4gcGx1Z2luLnhtbC4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSUQgPSAib3JnLmVjbGlwc2UuanN0LndzLnVpIjsKLQotICAvKioKLSAgKiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4uCi0gICovCi0gIHByaXZhdGUgc3RhdGljIFdlYlNlcnZpY2VVSVBsdWdpbiBpbnN0YW5jZV87Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdHMgYSBydW50aW1lIHBsdWdpbiBvYmplY3QgZm9yIHRoaXMgcGx1Z2luLgotICAgKi8KLSAgcHVibGljIFdlYlNlcnZpY2VVSVBsdWdpbigpIHsKLQlzdXBlcigpOwotCWluc3RhbmNlXyA9IHRoaXM7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4uIEVxdWl2YWxlbnQgdG8gY2FsbGluZwotICAqIChXZWJTZXJ2aWNlVUlQbHVnaW4pUGxhdGZvcm0uZ2V0UGx1Z2luKCJvcmcuZWNsaXBzZS5qc3Qud3MudWkiKTsKLSAgKiBAcmV0dXJuIFRoZSBXZWJTZXJ2aWNlVUlQbHVnaW4gc2luZ2xldG9uLgotICAqLwotICBzdGF0aWMgcHVibGljIFdlYlNlcnZpY2VVSVBsdWdpbiBnZXRJbnN0YW5jZSgpIHsKLSAgICByZXR1cm4gaW5zdGFuY2VfOwotICB9Ci0JCQotICAvKioKLSAgKiBSZXR1cm5zIGFuIGltYWdlIGRlc2NyaXB0b3IgZm9yIHRoZSBuYW1lZCByZXNvdXJjZQotICAqIGFzIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gaW5zdGFsbCBsb2NhdGlvbi4KLSAgKiBAcmV0dXJuIEFuIGltYWdlIGRlc2NyaXB0b3IsIHBvc3NpYmx5IG51bGwuCi0gICovCi0JcHVibGljIHN0YXRpYyBJbWFnZURlc2NyaXB0b3IgZ2V0SW1hZ2VEZXNjcmlwdG9yKFN0cmluZyBuYW1lKSB7Ci0JCXRyeSB7Ci0JCQlVUkwgaW5zdGFsbFVSTCA9IGluc3RhbmNlXy5nZXRCdW5kbGUoKS5nZXRFbnRyeSgiLyIpOwotCQkJVVJMIGltYWdlVVJMID0gbmV3IFVSTChpbnN0YWxsVVJMLCBuYW1lKTsKLQkJCXJldHVybiBJbWFnZURlc2NyaXB0b3IuY3JlYXRlRnJvbVVSTChpbWFnZVVSTCk7Ci0JCX0gY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKSB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9wb3B1cC9Qb3B1cFRlc3RTZXJ2aWNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL3BvcHVwL1BvcHVwVGVzdFNlcnZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkODdiMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL3BvcHVwL1BvcHVwVGVzdFNlcnZpY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDgwMyAgIDE1Mjc5MCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24gKGNyZWF0ZWQgY2xhc3MpCi0gKiAyMDA3MDMyNyAgIDE3MjMzOSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODAxMjMgICAyMTYzNzIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDkwMTI3CSAgMjU3NjE4IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbgotICogMjAwOTAzMTAgICAyNDI0NDAgeWVubHVAY2EuaWJtLmNvbSAtIFllbiBMdSwgUGx1Z2dhYmxlIElGaWxlIHRvIFVSSSBDb252ZXJ0ZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkucG9wdXA7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWY7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFQWN0aW9uQWRhcHRlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLkxhdW5jaE9wdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuV1NFeHBsb3JlckxhdW5jaGVyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGx1Z2luLkV4cGxvcmVyUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wb3B1cC5Qb3B1cFRlc3RXU0RMOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS51dGlscy5BZGFwdGVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzZmluZGVyLldTRExVUkxTdHJpbmdXcmFwcGVyOwotCi0KLXB1YmxpYyBjbGFzcyBQb3B1cFRlc3RTZXJ2aWNlIGV4dGVuZHMgUG9wdXBUZXN0V1NETAotewotICBwdWJsaWMgUG9wdXBUZXN0U2VydmljZSgpCi0gIHsKLQkgIHN1cGVyKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBydW4oKQotICB7Ci0JU3RyaW5nIHN0YXRlTG9jYXRpb24gPSBFeHBsb3JlclBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFBsdWdpblN0YXRlTG9jYXRpb24oKTsKLQlTdHJpbmcgZGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uID0gRXhwbG9yZXJQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXREZWZhdWx0RmF2b3JpdGVzTG9jYXRpb24oKTsKLSAgCVdTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQgY29tbWFuZCA9IG5ldyBXU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kKCk7Ci0gICAgY29tbWFuZC5zZXRGb3JjZUxhdW5jaE91dHNpZGVJREUoZmFsc2UpOwotICAgIFZlY3RvciBsYXVuY2hPcHRpb25zID0gbmV3IFZlY3RvcigpOwotICAgIGlmIChzZWxlY3Rpb24gIT0gbnVsbCkKLSAgICB7ICAgICAgCi0gICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gc2VsZWN0aW9uLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyB3c2RsVVJMID0gbnVsbDsKLSAgICAgICAgT2JqZWN0IG9iamVjdCA9IGl0Lm5leHQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChQbGF0Zm9ybS5nZXRBZGFwdGVyTWFuYWdlcigpLmhhc0FkYXB0ZXIob2JqZWN0LCBXU0RMVVJMU3RyaW5nV3JhcHBlci5jbGFzcy5nZXROYW1lKCkpKSB7Ci0gICAgICAgIAlPYmplY3QgYWRhcHRlZE9iamVjdCA9IFBsYXRmb3JtLmdldEFkYXB0ZXJNYW5hZ2VyKCkubG9hZEFkYXB0ZXIob2JqZWN0LCBXU0RMVVJMU3RyaW5nV3JhcHBlci5jbGFzcy5nZXROYW1lKCkpOwotICAgICAgICAJV1NETFVSTFN0cmluZ1dyYXBwZXIgd3JhcHBlciA9IChXU0RMVVJMU3RyaW5nV3JhcHBlcilhZGFwdGVkT2JqZWN0OwotICAgICAgICAJd3NkbFVSTCA9d3JhcHBlci5nZXRXU0RMVVJMU3RyaW5nKCk7ICAJCQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFNlcnZpY2VSZWYpCi0gICAgICAgIHsKLSAgICAgICAgICBTZXJ2aWNlUmVmIHNlcnZpY2VSZWYgPSAoU2VydmljZVJlZilvYmplY3Q7Ci0gICAgICAgICAgd3NkbFVSTCA9IEoyRUVBY3Rpb25BZGFwdGVyRmFjdG9yeS5nZXRXU0RMVVJJKHNlcnZpY2VSZWYpOwotICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFN0cmluZykgewotICAgICAgICAJd3NkbFVSTCA9IChTdHJpbmcpIG9iamVjdDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgCS8vIE9iamVjdCBpcyBub3QgYW55IHR5cGVzIHdlIHJlY29nbml6ZWQsIHdzZGxVUkwgaXMgc3RpbGwgbnVsbC4KLSAgICAgICAgICAJLy8gVHJ5IGxvb2tpbmcgdXAgYW4gYWRhcHRlciBmb3IgdGhlIG9iamVjdC4KLSAgICAgICAgCS8vIElmIGZvdW5kLCB1cGRhdGUgd3NkbFVSTCBjb250YWlucyB0aGUgYWRhcHRlZCBXU0RMIHN0cmluZy4gIAotICAgICAgICAJLy8gSWYgbm90IGZvdW5kLCB3c2RsVVJMIHdvdWxkIHN0aWxsIGJlIG51bGwuCi0gICAgICAgIAl3c2RsVVJMID0gQWRhcHRlclV0aWxzLmdldEFkYXB0ZWRXU0RMKG9iamVjdCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGFkZExhdW5jaE9wdGlvbnMobGF1bmNoT3B0aW9ucywgd3NkbFVSTCwgc3RhdGVMb2NhdGlvbiwgZGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY29tbWFuZC5zZXRMYXVuY2hPcHRpb25zKChMYXVuY2hPcHRpb25bXSlsYXVuY2hPcHRpb25zLnRvQXJyYXkobmV3IExhdW5jaE9wdGlvblswXSkpOwotICAgIGNvbW1hbmQuZXhlY3V0ZSgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL3ByZWZlcmVuY2VzL1Jlc291cmNlTWFuYWdtZW50UHJlZmVyZW5jZVBhZ2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvcHJlZmVyZW5jZXMvUmVzb3VyY2VNYW5hZ21lbnRQcmVmZXJlbmNlUGFnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGIzZmU3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvdWkvcHJlZmVyZW5jZXMvUmVzb3VyY2VNYW5hZ21lbnRQcmVmZXJlbmNlUGFnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMzMSAgIDEyODgyNyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjA0MDMgICAxMjg4Mjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkucHJlZmVyZW5jZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLlByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5wbHVnaW4uV2ViU2VydmljZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkuV1NVSVBsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5wbHVnaW4uV2ViU2VydmljZVVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmhlbHAuSVdvcmtiZW5jaEhlbHBTeXN0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZURlZmF1bHRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLk1lcmdlRGVmYXVsdHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRNZXJnZUNvbnRleHQ7Ci0KLQotCi1wdWJsaWMgY2xhc3MgUmVzb3VyY2VNYW5hZ21lbnRQcmVmZXJlbmNlUGFnZSBleHRlbmRzIFByZWZlcmVuY2VQYWdlIGltcGxlbWVudHMgSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlCi17Ci0gIC8qQ09OVEVYVF9JRCBQUFJNMDAwMSBmb3IgdGhlIFJlc291cmNlIE1hbmFnbWVudCBQcmVmZXJlbmNlIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BQUk1fUEFHRSA9IFdlYlNlcnZpY2VVSVBsdWdpbi5JRCArICIuUFBSTTAwMDEiOwotICAvLwotICBwcml2YXRlIEJ1dHRvbiBvdmVyV3JpdGVGaWxlczsKLSAgLypDT05URVhUX0lEIFBQUk0wMDAyIGZvciB0aGUgZmlsZSBvdmVyd3JpdGUgY2hlY2sgYm94IG9uIHRoZSBSZXNvdXJjZSBNYW5hZ2VtZW50IFByZWZlcmVuY2UgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFBSTV9DSEVDS0JPWF9PVkVSV1JJVEVfRklMRVMgPSBXZWJTZXJ2aWNlVUlQbHVnaW4uSUQgKyAiLlBQUk0wMDAyIjsKLSAgLy8KLSAgcHJpdmF0ZSBCdXR0b24gY3JlYXRlRm9sZGVyczsKLSAgLypDT05URVhUX0lEIFBQUk0wMDAzIGZvciB0aGUgY3JlYXRlIGZvbGRlcnMgY2hlY2sgYm94IG9uIHRoZSBSZXNvdXJjZSBNYW5hZ2VtZW50IFByZWZlcmVuY2UgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFBSTV9DSEVDS0JPWF9DUkVBVEVfRk9MREVSUyA9IFdlYlNlcnZpY2VVSVBsdWdpbi5JRCArICIuUFBSTTAwMDMiOwotICAvLwotICBwcml2YXRlIEJ1dHRvbiBjaGVja291dEZpbGVzOwotICAvKkNPTlRFWFRfSUQgUFBSTTAwMDQgZm9yIHRoZSBjaGVja291dCBmaWxlcyBjaGVjayBib3ggb24gdGhlIFJlc291cmNlIE1hbmFnZW1lbnQgUHJlZmVyZW5jZSBQYWdlKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QUFJNX0NIRUNLQk9YX0NIRUNLX09VVCA9IFdlYlNlcnZpY2VVSVBsdWdpbi5JRCArICIuUFBSTTAwMDQiOwotICAKLSAgcHJpdmF0ZSBCdXR0b24gc2tlbGV0b25NZXJnZTsKLSAgLypDT05URVhUX0lEIFBQUk0wMDA1IGZvciB0aGUgc2tlbGV0b24gbWVyZ2UgY2hlY2sgYm94IG9uIHRoZSBSZXNvdXJjZSBNYW5hZ2VtZW50IFByZWZlcmVuY2UgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFBSTV9DSEVDS0JPWF9TS0VMRVRPTl9NRVJHRSA9IFdlYlNlcnZpY2VVSVBsdWdpbi5JRCArICIuUFBSTTAwMDUiOwotCi0gLyoqCi0gICAqIENyZWF0ZXMgcHJlZmVyZW5jZSBwYWdlIGNvbnRyb2xzIG9uIGRlbWFuZC4KLSAgICogICBAcGFyYW0gcGFyZW50ICB0aGUgcGFyZW50IGZvciB0aGUgcHJlZmVyZW5jZSBwYWdlCi0gICAqLwotICBwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVDb250ZW50cyhDb21wb3NpdGUgc3VwZXJwYXJlbnQpCi0gIHsKLSAgCUlXb3JrYmVuY2hIZWxwU3lzdGVtIGhlbHBTeXN0ZW0gPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKTsKLSAgCQotICAgIENvbXBvc2l0ZSAgIHBhcmVudCA9IG5ldyBDb21wb3NpdGUoIHN1cGVycGFyZW50LCBTV1QuTk9ORSApOwkKLSAgICBHcmlkTGF5b3V0IGxheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgbGF5b3V0Lm51bUNvbHVtbnMgPSAxOwotICAgIHBhcmVudC5zZXRMYXlvdXQoIGxheW91dCApOwotICAgIHBhcmVudC5zZXRUb29sVGlwVGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9QUFJNX1BBR0UpOwotICAgIGhlbHBTeXN0ZW0uc2V0SGVscChwYXJlbnQsIElORk9QT1BfUFBSTV9QQUdFKTsKLQotICAgIG92ZXJXcml0ZUZpbGVzID0gY3JlYXRlQ2hlY2tCb3gocGFyZW50LCBXU1VJUGx1Z2luTWVzc2FnZXMuQlVUVE9OX09WRVJXUklURV9GSUxFUyk7Ci0gICAgb3ZlcldyaXRlRmlsZXMuc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfUFBSTV9DSEVDS0JPWF9PVkVSV1JJVEVfRklMRVMpOwotICAgIGhlbHBTeXN0ZW0uc2V0SGVscChvdmVyV3JpdGVGaWxlcywgSU5GT1BPUF9QUFJNX0NIRUNLQk9YX09WRVJXUklURV9GSUxFUyk7Ci0KLSAgICBjcmVhdGVGb2xkZXJzICA9IGNyZWF0ZUNoZWNrQm94KHBhcmVudCwgV1NVSVBsdWdpbk1lc3NhZ2VzLkJVVFRPTl9DUkVBVEVfRk9MREVSUyk7Ci0gICAgY3JlYXRlRm9sZGVycy5zZXRUb29sVGlwVGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9QUFJNX0NIRUNLQk9YX0NSRUFURV9GT0xERVJTKTsKLSAgICBoZWxwU3lzdGVtLnNldEhlbHAoY3JlYXRlRm9sZGVycywgSU5GT1BPUF9QUFJNX0NIRUNLQk9YX0NSRUFURV9GT0xERVJTKTsKLQotICAgIGNoZWNrb3V0RmlsZXMgPSBjcmVhdGVDaGVja0JveChwYXJlbnQsIFdTVUlQbHVnaW5NZXNzYWdlcy5CVVRUT05fQ0hFQ0tPVVRfRklMRVMpOyAgICAKLSAgICBjaGVja291dEZpbGVzLnNldFRvb2xUaXBUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5UT09MVElQX1BQUk1fQ0hFQ0tCT1hfQ0hFQ0tfT1VUKTsKLSAgICBoZWxwU3lzdGVtLnNldEhlbHAoY2hlY2tvdXRGaWxlcywgSU5GT1BPUF9QUFJNX0NIRUNLQk9YX0NIRUNLX09VVCk7Ci0gICAgCi0gICAgc2tlbGV0b25NZXJnZSA9IGNyZWF0ZUNoZWNrQm94KHBhcmVudCwgV1NVSVBsdWdpbk1lc3NhZ2VzLkJVVFRPTl9TS0VMRVRPTl9NRVJHRSk7ICAgIAotICAgIHNrZWxldG9uTWVyZ2Uuc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfUFBSTV9DSEVDS0JPWF9TS0VMRVRPTl9NRVJHRSk7Ci0gICAgaGVscFN5c3RlbS5zZXRIZWxwKHNrZWxldG9uTWVyZ2UsIElORk9QT1BfUFBSTV9DSEVDS0JPWF9TS0VMRVRPTl9NRVJHRSk7Ci0KLSAgICBpbml0aWFsaXplVmFsdWVzKCk7Ci0gICAgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2cuYXBwbHlEaWFsb2dGb250KHN1cGVycGFyZW50KTsgICAgCi0KLSAgICByZXR1cm4gcGFyZW50OwotICB9Ci0gCi0gIHByaXZhdGUgQnV0dG9uIGNyZWF0ZUNoZWNrQm94KCBDb21wb3NpdGUgcGFyZW50LCBTdHJpbmcgdGV4dCApCi0gIHsKLSAgICBCdXR0b24gYnV0dG9uID0gbmV3IEJ1dHRvbiggcGFyZW50LCBTV1QuQ0hFQ0sgKTsKLSAgICBidXR0b24uc2V0VGV4dCggdGV4dCApOwotICAgIHJldHVybiBidXR0b247Ci0gIH0KLQotICAvKioKLSAgICogRG9lcyBhbnl0aGluZyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgZGVmYXVsdCBidXR0b24gaGFzIGJlZW4gcHJlc3NlZC4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHBlcmZvcm1EZWZhdWx0cygpCi0gIHsKLSAgICBzdXBlci5wZXJmb3JtRGVmYXVsdHMoKTsKLSAgICBpbml0aWFsaXplRGVmYXVsdHMoKTsKLSAgfQotCi0gIC8qKgotICAgKiBEbyBhbnl0aGluZyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgT0sgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0gICAqICBAcmV0dXJuIHdoZXRoZXIgaXQgaXMgb2theSB0byBjbG9zZSB0aGUgcHJlZmVyZW5jZSBwYWdlCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBwZXJmb3JtT2soKQotICB7Ci0gICAgc3RvcmVWYWx1ZXMoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHBlcmZvcm1BcHBseSgpCi0gIHsKLSAgICBwZXJmb3JtT2soKTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIElXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZQotICAgKi8KLSAgcHVibGljIHZvaWQgaW5pdChJV29ya2JlbmNoIHdvcmtiZW5jaCkgIHsgfQotCi0gIC8qKgotICAgKiBJbml0aWFsaXplcyBzdGF0ZXMgb2YgdGhlIGNvbnRyb2xzIHVzaW5nIGRlZmF1bHQgdmFsdWVzCi0gICAqIGluIHRoZSBwcmVmZXJlbmNlIHN0b3JlLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVEZWZhdWx0cygpCi0gIHsKLSAgICBvdmVyV3JpdGVGaWxlcy5zZXRTZWxlY3Rpb24oIFJlc291cmNlRGVmYXVsdHMuZ2V0T3ZlcndyaXRlRmlsZXNEZWZhdWx0KCkpOwotICAgIGNyZWF0ZUZvbGRlcnMuc2V0U2VsZWN0aW9uKCBSZXNvdXJjZURlZmF1bHRzLmdldENyZWF0ZUZvbGRlcnNEZWZhdWx0KCkpOwotICAgIGNoZWNrb3V0RmlsZXMuc2V0U2VsZWN0aW9uKCBSZXNvdXJjZURlZmF1bHRzLmdldENoZWNrb3V0RmlsZXNEZWZhdWx0KCkpOwotICAgIHNrZWxldG9uTWVyZ2Uuc2V0U2VsZWN0aW9uKCBNZXJnZURlZmF1bHRzLmdldFNrZWxldG9uTWVyZ2VEZWZhdWx0KCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIEluaXRpYWxpemVzIHN0YXRlcyBvZiB0aGUgY29udHJvbHMgZnJvbSB0aGUgcHJlZmVyZW5jZSBzdG9yZS4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBpbml0aWFsaXplVmFsdWVzKCkKLSAgewotICAgIC8vIGdldCB0aGUgcGVyc2lzdGVudCBjb250ZXh0IGZyb20gdGhlIHBsdWdpbgotICAgIFJlc291cmNlQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFJlc291cmNlQ29udGV4dCgpOwotICAgIFBlcnNpc3RlbnRNZXJnZUNvbnRleHQgbWVyZ2VDb250ZXh0ID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRNZXJnZUNvbnRleHQoKTsKLSAgICBvdmVyV3JpdGVGaWxlcy5zZXRTZWxlY3Rpb24oIGNvbnRleHQuaXNPdmVyd3JpdGVGaWxlc0VuYWJsZWQoKSk7Ci0gICAgY3JlYXRlRm9sZGVycy5zZXRTZWxlY3Rpb24oIGNvbnRleHQuaXNDcmVhdGVGb2xkZXJzRW5hYmxlZCgpKTsKLSAgICBjaGVja291dEZpbGVzLnNldFNlbGVjdGlvbiggY29udGV4dC5pc0NoZWNrb3V0RmlsZXNFbmFibGVkKCkpOwotICAgIHNrZWxldG9uTWVyZ2Uuc2V0U2VsZWN0aW9uKCBtZXJnZUNvbnRleHQuaXNTa2VsZXRvbk1lcmdlRW5hYmxlZCgpKTsgCi0gICB9Ci0KLSAgLyoqCi0gICAqIFN0b3JlcyB0aGUgdmFsdWVzIG9mIHRoZSBjb250cm9scyBiYWNrIHRvIHRoZSBwcmVmZXJlbmNlIHN0b3JlLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHN0b3JlVmFsdWVzKCkKLSAgewotICAgIC8vIGdldCB0aGUgcGVyc2lzdGVudCBjb250ZXh0IGZyb20gdGhlIHBsdWdpbgotICAgIFJlc291cmNlQ29udGV4dCBjb250ZXh0ID0gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFJlc291cmNlQ29udGV4dCgpOwotICAgIFBlcnNpc3RlbnRNZXJnZUNvbnRleHQgbWVyZ2VDb250ZXh0ID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRNZXJnZUNvbnRleHQoKTsKLSAgICBjb250ZXh0LnNldE92ZXJ3cml0ZUZpbGVzRW5hYmxlZCggb3ZlcldyaXRlRmlsZXMuZ2V0U2VsZWN0aW9uKCkgKTsKLSAgICBjb250ZXh0LnNldENyZWF0ZUZvbGRlcnNFbmFibGVkKCBjcmVhdGVGb2xkZXJzLmdldFNlbGVjdGlvbigpICk7Ci0gICAgY29udGV4dC5zZXRDaGVja291dEZpbGVzRW5hYmxlZCggY2hlY2tvdXRGaWxlcy5nZXRTZWxlY3Rpb24oKSApOyAgCi0gICAgbWVyZ2VDb250ZXh0LnNldFNrZWxldG9uTWVyZ2VFbmFibGVkKCBza2VsZXRvbk1lcmdlLmdldFNlbGVjdGlvbigpICk7Ci0gIH0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS9wcmVmZXJlbmNlcy9UZXN0RmFjaWxpdHlEZWZhdWx0c1ByZWZlcmVuY2VQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL3ByZWZlcmVuY2VzL1Rlc3RGYWNpbGl0eURlZmF1bHRzUHJlZmVyZW5jZVBhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA2YmM3MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL3ByZWZlcmVuY2VzL1Rlc3RGYWNpbGl0eURlZmF1bHRzUHJlZmVyZW5jZVBhZ2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMTcgICAxMTMxNjkgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjAyMjIgICAxMTg3MTEgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzAzMTQgICAxNTQ1NDMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkgaXMgdHJhY2tpbmcgZXh0ZW5zaW9ucyB1c2luZyBsYWJlbCBhdHRyaWJ1dGUgaW5zdGVhZCBvZiBJRAotICogMjAwODA0MTYgICAyMjczNTkgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFRlc3QgZmFjaWxpdGllcyBkbyBub3QgcmVzcGVjdCBkZWZhdWx0IG9yZGVyIGluIHBsdWdpbiBjdXN0b21pemF0aW9uCi0gKiAyMDA4MDgwNSAgIDI0Mjc3NSBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24sIFRlc3QgZmFjaWxpdHkgSUQgc2hvd2luZyB1cCBldmVuIGlmIG5vIHRlc3QgZmFjaWxpdHkgZXh0ZW5zaW9uIGV4aXN0cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5wcmVmZXJlbmNlczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLlByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuQ29sdW1uV2VpZ2h0RGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkQ29udGVudFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuTGFiZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlRhYmxlTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVGFibGVWaWV3ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5WaWV3ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuUGVyc2lzdGVudFNjZW5hcmlvQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9EZWZhdWx0czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0LnRlc3QuV2ViU2VydmljZVRlc3RFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldlYlNlcnZpY2VUZXN0UmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnBsdWdpbi5XZWJTZXJ2aWNlUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC51aS5XU1VJUGx1Z2luTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnVpLnBsdWdpbi5XZWJTZXJ2aWNlVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkltYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UYWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UYWJsZUNvbHVtbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2g7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci0KLQotCi1wdWJsaWMgY2xhc3MgVGVzdEZhY2lsaXR5RGVmYXVsdHNQcmVmZXJlbmNlUGFnZSBleHRlbmRzIFByZWZlcmVuY2VQYWdlIGltcGxlbWVudHMgSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlLCBTZWxlY3Rpb25MaXN0ZW5lcgotewotICAKLSAgcHJpdmF0ZSBUYWJsZVZpZXdlciB3ZWJTZXJ2aWNlVGVzdFR5cGVWaWV3ZXJfOyAKLSAgcHJpdmF0ZSBCdXR0b24gbW92ZVVwXzsKLSAgcHJpdmF0ZSBCdXR0b24gbW92ZURvd25fOwotICBwcml2YXRlIFZlY3RvciB3ZWJTZXJ2aWNlVGVzdFR5cGVzXzsKLSAgCi0gIC8qQ09OVEVYVF9JRCBQUFNEMDAwMSBmb3IgdGhlIFNjZW5hcmlvIERlZmF1bHRzIFByZWZlcmVuY2UgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFBTRF9QQUdFID0gV2ViU2VydmljZVVJUGx1Z2luLklEICsgIi5QUFNEMDAwMSI7Ci0gIC8vCi0gIHByaXZhdGUgQnV0dG9uIGxhdW5jaFNhbXBsZTsKLSAgLypDT05URVhUX0lEIFBQU0QwMDAyIGZvciB0aGUgbGF1bmNoIHNhbXBsZSBjaGVjayBib3ggb24gdGhlIFNjZW5hcmlvIERlZmF1bHRzIFByZWZlcmVuY2UgUGFnZSovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElORk9QT1BfUFBTRF9DSEVDS0JPWF9MQVVOQ0hfU0FNUExFID0gV2ViU2VydmljZVVJUGx1Z2luLklEICsgIi5QUFNEMDAwMiI7Ci0gIC8vCi0KLSAgLyoqCi0gICAqIENyZWF0ZXMgcHJlZmVyZW5jZSBwYWdlIGNvbnRyb2xzIG9uIGRlbWFuZC4KLSAgICogICBAcGFyYW0gcGFyZW50ICB0aGUgcGFyZW50IGZvciB0aGUgcHJlZmVyZW5jZSBwYWdlCi0gICAqLwotICBwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVDb250ZW50cyhDb21wb3NpdGUgc3VwZXJwYXJlbnQpCi0gIHsKLSAgICAKLSAgCUNvbXBvc2l0ZSAgIHBhcmVudCA9IG5ldyBDb21wb3NpdGUoIHN1cGVycGFyZW50LCBTV1QuTk9ORSApOwkKLSAgICBHcmlkTGF5b3V0IGxheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgbGF5b3V0Lm51bUNvbHVtbnMgPSAxOwotICAgIHBhcmVudC5zZXRMYXlvdXQoIGxheW91dCApOwotICAgIHBhcmVudC5zZXRUb29sVGlwVGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9QUFNEX1BBR0UpOwotICAgIHBhcmVudC5zZXRMYXlvdXREYXRhKCBuZXcgR3JpZERhdGEoIEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCApICk7Ci0gICAgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscChwYXJlbnQsSU5GT1BPUF9QUFNEX1BBR0UpOyAgICAKLQotICAgIGxhdW5jaFNhbXBsZSA9IGNyZWF0ZUNoZWNrQm94KHBhcmVudCwgV1NVSVBsdWdpbk1lc3NhZ2VzLkJVVFRPTl9MQVVOQ0hfU0FNUExFKTsKLSAgICBsYXVuY2hTYW1wbGUuc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfUFBTRF9DSEVDS0JPWF9MQVVOQ0hfU0FNUExFKTsKLSAgICBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKS5zZXRIZWxwKGxhdW5jaFNhbXBsZSwgSU5GT1BPUF9QUFNEX0NIRUNLQk9YX0xBVU5DSF9TQU1QTEUpOwotCi0gICAgCi0gICAgVGV4dCB0ZXN0U2VydmljZVR5cGVMYWJlbCA9IG5ldyBUZXh0KHBhcmVudCwgU1dULlJFQURfT05MWSB8IFNXVC5XUkFQKTsKLSAgICB0ZXN0U2VydmljZVR5cGVMYWJlbC5zZXRUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5MQUJFTF9TQU1QTEVfVFlQRVMpOwotICAgIHRlc3RTZXJ2aWNlVHlwZUxhYmVsLnNldExheW91dERhdGEoIG5ldyBHcmlkRGF0YSggR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMICkgKTsKLQotICAgIENvbXBvc2l0ZSB3ZWJTZXJ2aWNlVGVzdFR5cGVDb21wb3NpdGUgPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOwotICAgIEdyaWRMYXlvdXQgZ2wgPSBuZXcgR3JpZExheW91dCgpOwotICAgIGdsLm51bUNvbHVtbnMgPSAyOwotICAgIGdsLm1hcmdpbkhlaWdodCA9IDA7Ci0gICAgZ2wubWFyZ2luV2lkdGggPSAwOwotICAgIHdlYlNlcnZpY2VUZXN0VHlwZUNvbXBvc2l0ZS5zZXRMYXlvdXQoZ2wpOwotICAgIHdlYlNlcnZpY2VUZXN0VHlwZUNvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKCBuZXcgR3JpZERhdGEoIEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCApICk7Ci0KLSAgICBUYWJsZSB0YWJsZT0gbmV3IFRhYmxlKHdlYlNlcnZpY2VUZXN0VHlwZUNvbXBvc2l0ZSwgU1dULkJPUkRFUiB8IFNXVC5TSU5HTEUgfCBTV1QuRlVMTF9TRUxFQ1RJT04gfCBTV1QuSF9TQ1JPTEwgfCBTV1QuVl9TQ1JPTEwpOwotICAgIEdyaWREYXRhIGdkID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCB8IEdyaWREYXRhLkZJTExfVkVSVElDQUwpOwotICAgIGdkLndpZHRoSGludCA9IDI1NjsKLSAgICB0YWJsZS5zZXRMYXlvdXREYXRhKGdkKTsKLSAgICB0YWJsZS5zZXRUb29sVGlwVGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9DTElFTlRfVFlQRV9UQUJMRV9WSUVXRVIpOwotCi0gICAgd2ViU2VydmljZVRlc3RUeXBlc18gPSBuZXcgVmVjdG9yKCk7Ci0gICAgd2ViU2VydmljZVRlc3RUeXBlVmlld2VyXyA9IG5ldyBUYWJsZVZpZXdlcih0YWJsZSk7Ci0gICAgd2ViU2VydmljZVRlc3RUeXBlVmlld2VyXy5zZXRDb250ZW50UHJvdmlkZXIobmV3IFdlYlNlcnZpY2VUZXN0VHlwZUNvbnRlbnRQcm92aWRlcigpKTsKLSAgICB3ZWJTZXJ2aWNlVGVzdFR5cGVWaWV3ZXJfLnNldExhYmVsUHJvdmlkZXIobmV3IFdlYlNlcnZpY2VUZXN0VHlwZUxhYmVsUHJvdmlkZXIoKSk7Ci0gICAgd2ViU2VydmljZVRlc3RUeXBlVmlld2VyXy5zZXRJbnB1dCh3ZWJTZXJ2aWNlVGVzdFR5cGVzXyk7Ci0KLSAgICBUYWJsZUxheW91dCB0YWJsZUxheW91dCA9IG5ldyBUYWJsZUxheW91dCgpOwotICAgIFRhYmxlQ29sdW1uIHRhYmxlQ29sdW1uID0gbmV3IFRhYmxlQ29sdW1uKHRhYmxlLCBTV1QuTk9ORSk7Ci0gICAgdGFibGVDb2x1bW4uc2V0VGV4dChXU1VJUGx1Z2luTWVzc2FnZXMuTEFCRUxfQ0xJRU5UX1RZUEVfTkFNRSk7Ci0gICAgQ29sdW1uV2VpZ2h0RGF0YSBjb2x1bW5EYXRhID0gbmV3IENvbHVtbldlaWdodERhdGEoMjU2LCAyNTYsIGZhbHNlKTsKLSAgICB0YWJsZUxheW91dC5hZGRDb2x1bW5EYXRhKGNvbHVtbkRhdGEpOwotICAgIHRhYmxlLnNldExheW91dCh0YWJsZUxheW91dCk7Ci0KLSAgICBDb21wb3NpdGUgYyA9IG5ldyBDb21wb3NpdGUod2ViU2VydmljZVRlc3RUeXBlQ29tcG9zaXRlLCBTV1QuTk9ORSk7Ci0gICAgZ2wgPSBuZXcgR3JpZExheW91dCgpOwotICAgIGdsLm51bUNvbHVtbnMgPSAxOwotICAgIGdsLm1hcmdpbkhlaWdodCA9IDEwOwotICAgIGdsLm1hcmdpbldpZHRoID0gMDsKLSAgICBjLnNldExheW91dChnbCk7Ci0gICAgYy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9CRUdJTk5JTkcpKTsKLQotICAgIG1vdmVVcF8gPSBuZXcgQnV0dG9uKGMsIFNXVC5QVVNIKTsKLSAgICBtb3ZlVXBfLnNldFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX01PVkVfVVApOwotICAgIG1vdmVVcF8uc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuSE9SSVpPTlRBTF9BTElHTl9GSUxMKSk7Ci0gICAgbW92ZVVwXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcih0aGlzKTsKLSAgICBtb3ZlVXBfLnNldFRvb2xUaXBUZXh0KFdTVUlQbHVnaW5NZXNzYWdlcy5UT09MVElQX01PVkVfVVApOwotCi0gICAgbW92ZURvd25fID0gbmV3IEJ1dHRvbihjLCBTV1QuUFVTSCk7Ci0gICAgbW92ZURvd25fLnNldFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX01PVkVfRE9XTik7Ci0gICAgbW92ZURvd25fLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCkpOwotICAgIG1vdmVEb3duXy5hZGRTZWxlY3Rpb25MaXN0ZW5lcih0aGlzKTsKLSAgICBtb3ZlRG93bl8uc2V0VG9vbFRpcFRleHQoV1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfTU9WRV9ET1dOKTsKLQotICAgIHRhYmxlLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBUYWJsZVNlbGVjdGlvbkxpc3RlbmVyKG1vdmVVcF8sIG1vdmVEb3duXywgdGFibGUpKTsKLSAgICAKLSAgICBpbml0aWFsaXplVmFsdWVzKCk7Ci0gICAgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2cuYXBwbHlEaWFsb2dGb250KHN1cGVycGFyZW50KTsgICAgCi0KLSAgICByZXR1cm4gcGFyZW50OwotICB9Ci0KLSAgcHJpdmF0ZSBCdXR0b24gY3JlYXRlQ2hlY2tCb3goIENvbXBvc2l0ZSBwYXJlbnQsIFN0cmluZyB0ZXh0ICkKLSAgewotICAgIEJ1dHRvbiBidXR0b24gPSBuZXcgQnV0dG9uKCBwYXJlbnQsIFNXVC5DSEVDSyApOwotICAgIGJ1dHRvbi5zZXRUZXh0KCB0ZXh0ICk7Ci0gICAgcmV0dXJuIGJ1dHRvbjsKLSAgfQotCi0gIC8qKgotICAgKiBEb2VzIGFueXRoaW5nIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBkZWZhdWx0IGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybURlZmF1bHRzKCkKLSAgewotICAgIHN1cGVyLnBlcmZvcm1EZWZhdWx0cygpOwotICAgIGluaXRpYWxpemVEZWZhdWx0cygpOwotICB9Ci0KLSAgLyoqCi0gICAqIERvIGFueXRoaW5nIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBPSyBidXR0b24gaGFzIGJlZW4gcHJlc3NlZC4KLSAgICogIEByZXR1cm4gd2hldGhlciBpdCBpcyBva2F5IHRvIGNsb3NlIHRoZSBwcmVmZXJlbmNlIHBhZ2UKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHBlcmZvcm1PaygpCi0gIHsKLSAgICB0cnl7Ci0gICAgICBzdG9yZVZhbHVlcygpOwotICAgIH1jYXRjaCAoRXhjZXB0aW9uIGV4Yyl7Ci0gICAgCWV4Yy5wcmludFN0YWNrVHJhY2UoKTt9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtQXBwbHkoKQotICB7Ci0gICAgdHJ5ewotICAJcGVyZm9ybU9rKCk7Ci0gICAgfWNhdGNoKE51bGxQb2ludGVyRXhjZXB0aW9uIGV4Yyl7Ci0gICAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KElXb3JrYmVuY2ggd29ya2JlbmNoKSAgeyB9Ci0KLSAgLyoqCi0gICAqIEluaXRpYWxpemVzIHN0YXRlcyBvZiB0aGUgY29udHJvbHMgdG8gdGhlaXIgYnVybmVkLWluIGRlZmF1bHRzLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVEZWZhdWx0cygpCi0gIHsKLSAgICBQZXJzaXN0ZW50U2NlbmFyaW9Db250ZXh0IGNvbnRleHQgPSAoUGVyc2lzdGVudFNjZW5hcmlvQ29udGV4dCkgCi0gICAgCVdlYlNlcnZpY2VQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTY2VuYXJpb0NvbnRleHQoKTsKLSAgICAKLSAgICB3ZWJTZXJ2aWNlVGVzdFR5cGVzXy5jbGVhcigpOwotICAgIFN0cmluZ1tdIHR5cGVzID0gY29udGV4dC5nZXREZWZhdWx0V2ViU2VydmljZVRlc3RJZHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAvL21oOiBjaGVjayB0aGF0IHRoZSB0ZXN0IGZhY2lsaXR5IGV4dGVuc2lvbiBleGlzdHMgYmVmb3JlIGFkZGluZyBpdCB0byB0aGUgbGlzdCAoYnVnIDI0Mjc3NSkKLSAgICAgIGlmICggV2ViU2VydmljZVRlc3RSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFdlYlNlcnZpY2VFeHRlbnNpb25zQnlJZCh0eXBlc1tpXSkgIT0gbnVsbCkgCi0gICAgICB7Ci0gICAgCSAgd2ViU2VydmljZVRlc3RUeXBlc18uYWRkKHR5cGVzW2ldKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgd2ViU2VydmljZVRlc3RUeXBlVmlld2VyXy5yZWZyZXNoKCk7Ci0gIH0KLQotICAvKioKLSAgICogSW5pdGlhbGl6ZXMgc3RhdGVzIG9mIHRoZSBjb250cm9scyBmcm9tIHRoZSBwcmVmZXJlbmNlIGhlbHBlci4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBpbml0aWFsaXplVmFsdWVzKCkKLSAgewotICAJU2NlbmFyaW9Db250ZXh0ICBjb250ZXh0ICA9IFdlYlNlcnZpY2VQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTY2VuYXJpb0NvbnRleHQoKTsKLSAgICBTY2VuYXJpb0RlZmF1bHRzIGRlZmF1bHRzID0gbmV3IFNjZW5hcmlvRGVmYXVsdHMoKTsKLSAgICAKLSAgICBsYXVuY2hTYW1wbGUuc2V0U2VsZWN0aW9uKCBjb250ZXh0LmlzTGF1bmNoU2FtcGxlRW5hYmxlZCgpKTsKLSAgICAgICAgCi0gICAgU3RyaW5nW10gdHlwZXMgPSBjb250ZXh0LmdldFdlYlNlcnZpY2VUZXN0SWRzKCk7Ci0gICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgewotICAgICAgLy9taDogY2hlY2sgdGhhdCB0aGUgdGVzdCBmYWNpbGl0eSBleHRlbnNpb24gZXhpc3RzIGJlZm9yZSBhZGRpbmcgaXQgdG8gdGhlIGxpc3QgKGJ1ZyAyNDI3NzUpCi0gICAgICBpZiAoIFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5SWQodHlwZXNbaV0pICE9IG51bGwpIAotICAgICAgewotICAgIAkgIHdlYlNlcnZpY2VUZXN0VHlwZXNfLmFkZCh0eXBlc1tpXSk7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIGNoZWNrIHdoZXRoZXIgd2UgbWlzc2VkIGFueSB0eXBlcyBmcm9tIHRoZSBkZWZhdWx0IGxpc3QKLSAgICBib29sZWFuIG1pc3NlZCA9IGZhbHNlOwotICAgIHR5cGVzID0gZGVmYXVsdHMuZ2V0V2ViU2VydmljZVRlc3RJZHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmICh3ZWJTZXJ2aWNlVGVzdFR5cGVzXy5pbmRleE9mKHR5cGVzW2ldKSA9PSAtMSkKLSAgICAgIHsgICAJCi0gICAgCSAgLy9taDogY2hlY2sgdGhhdCB0aGUgdGVzdCBmYWNpbGl0eSBleHRlbnNpb24gZXhpc3RzIGJlZm9yZSBhZGRpbmcgaXQgdG8gdGhlIGxpc3QgKGJ1ZyAyNDI3NzUpCi0gICAgICAgICAgaWYgKCBXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5LmdldEluc3RhbmNlKCkuZ2V0V2ViU2VydmljZUV4dGVuc2lvbnNCeUlkKHR5cGVzW2ldKSAhPSBudWxsKSAKLSAgICAgICAgICB7Ci0gICAgCQl3ZWJTZXJ2aWNlVGVzdFR5cGVzXy5hZGQodHlwZXNbaV0pOwotICAgIAkJbWlzc2VkID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChtaXNzZWQpCi0gICAgewotICAgICAgdHlwZXMgPSBuZXcgU3RyaW5nW3dlYlNlcnZpY2VUZXN0VHlwZXNfLnNpemUoKV07Ci0gICAgICB3ZWJTZXJ2aWNlVGVzdFR5cGVzXy5jb3B5SW50byh0eXBlcyk7Ci0gICAgICBjb250ZXh0LnNldFdlYlNlcnZpY2VUZXN0SWRzKHR5cGVzKTsKLSAgICB9Ci0gICAgLy8gcmVmcmVzaCB2aWV3ZXIKLSAgICB3ZWJTZXJ2aWNlVGVzdFR5cGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgICAKLSAgICAvLyBTZWxlY3QgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHRhYmxlCi0gICAgVGFibGUgdGFibGUgPSB3ZWJTZXJ2aWNlVGVzdFR5cGVWaWV3ZXJfLmdldFRhYmxlKCk7Ci0JaWYgKHRhYmxlLmdldEl0ZW1Db3VudCgpID4gMCl7Ci0gICAgCXRhYmxlLnNldFNlbGVjdGlvbigwKTsKLSAgICAJdGFibGUubm90aWZ5TGlzdGVuZXJzKFNXVC5TZWxlY3Rpb24sIG5ldyBFdmVudCgpKTsKLSAgICB9Ci0gICB9Ci0KLSAgLyoqCi0gICAqIFN0b3JlcyB0aGUgdmFsdWVzIG9mIHRoZSBjb250cm9scyBiYWNrIHRvIHRoZSBwcmVmZXJlbmNlIGhlbHBlci4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBzdG9yZVZhbHVlcygpCi0gIHsKLSAgICBTY2VuYXJpb0NvbnRleHQgY29udGV4dCA9IFdlYlNlcnZpY2VQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTY2VuYXJpb0NvbnRleHQoKTsKLSAgICBTdHJpbmdbXSB0eXBlcyA9IG5ldyBTdHJpbmdbd2ViU2VydmljZVRlc3RUeXBlc18uc2l6ZSgpXTsKLSAgICB3ZWJTZXJ2aWNlVGVzdFR5cGVzXy5jb3B5SW50byh0eXBlcyk7Ci0gICAgY29udGV4dC5zZXRXZWJTZXJ2aWNlVGVzdElkcyh0eXBlcyk7Ci0gICAgCi0gICAgY29udGV4dC5zZXRMYXVuY2hTYW1wbGVFbmFibGVkKGxhdW5jaFNhbXBsZS5nZXRTZWxlY3Rpb24oKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgewotICB9Ci0KLSAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgewotICAgIGludCBpbmRleCA9IHdlYlNlcnZpY2VUZXN0VHlwZVZpZXdlcl8uZ2V0VGFibGUoKS5nZXRTZWxlY3Rpb25JbmRleCgpOwotICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICB7Ci0gICAgICBpZiAoZS53aWRnZXQgPT0gbW92ZVVwXyAmJiBpbmRleCA+IDApCi0gICAgICB7Ci0gICAgICAgIE9iamVjdCBvYmplY3QgPSB3ZWJTZXJ2aWNlVGVzdFR5cGVzXy5yZW1vdmUoaW5kZXgpOwotICAgICAgICB3ZWJTZXJ2aWNlVGVzdFR5cGVzXy5pbnNlcnRFbGVtZW50QXQob2JqZWN0LCBpbmRleC0xKTsKLSAgICAgICAgd2ViU2VydmljZVRlc3RUeXBlVmlld2VyXy5yZWZyZXNoKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChlLndpZGdldCA9PSBtb3ZlRG93bl8gJiYgaW5kZXggPCB3ZWJTZXJ2aWNlVGVzdFR5cGVzXy5zaXplKCktMSkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IG9iamVjdCA9IHdlYlNlcnZpY2VUZXN0VHlwZXNfLnJlbW92ZShpbmRleCk7Ci0gICAgICAgIHdlYlNlcnZpY2VUZXN0VHlwZXNfLmluc2VydEVsZW1lbnRBdChvYmplY3QsIGluZGV4KzEpOwotICAgICAgICB3ZWJTZXJ2aWNlVGVzdFR5cGVWaWV3ZXJfLnJlZnJlc2goKTsKLSAgICAgIH0KLSAgICAgIHdlYlNlcnZpY2VUZXN0VHlwZVZpZXdlcl8uZ2V0VGFibGUoKS5ub3RpZnlMaXN0ZW5lcnMoU1dULlNlbGVjdGlvbiwgbmV3IEV2ZW50KCkpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgY2xhc3MgV2ViU2VydmljZVRlc3RUeXBlQ29udGVudFByb3ZpZGVyIGltcGxlbWVudHMgSVN0cnVjdHVyZWRDb250ZW50UHJvdmlkZXIKLSAgewotICAgIC8qKgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZENvbnRlbnRQcm92aWRlciNnZXRFbGVtZW50cyhPYmplY3QpCi0gICAgICovCi0gICAgcHVibGljIE9iamVjdFtdIGdldEVsZW1lbnRzKE9iamVjdCB2YWx1ZSkgCi0gICAgewotICAgICAgcmV0dXJuICgoVmVjdG9yKXZhbHVlKS50b0FycmF5KG5ldyBTdHJpbmdbMF0pOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JQ29udGVudFByb3ZpZGVyI2Rpc3Bvc2UoKQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIGRpc3Bvc2UoKSAKLSAgICB7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklDb250ZW50UHJvdmlkZXIjaW5wdXRDaGFuZ2VkKFZpZXdlciwgT2JqZWN0LCBPYmplY3QpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgaW5wdXRDaGFuZ2VkKFZpZXdlciBhcmcwLCBPYmplY3QgYXJnMSwgT2JqZWN0IGFyZzIpIAotICAgIHsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIGNsYXNzIFdlYlNlcnZpY2VUZXN0VHlwZUxhYmVsUHJvdmlkZXIgZXh0ZW5kcyBMYWJlbFByb3ZpZGVyCi0gIHsKLSAgICBwdWJsaWMgV2ViU2VydmljZVRlc3RUeXBlTGFiZWxQcm92aWRlcigpCi0gICAgewotICAgIH0KLQotICAgIC8qKgotICAgICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklMYWJlbFByb3ZpZGVyI2dldEltYWdlKE9iamVjdCkKLSAgICAqLwotICAgIHB1YmxpYyBJbWFnZSBnZXRJbWFnZShPYmplY3QgYXJnMCkgCi0gICAgeyAKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JTGFiZWxQcm92aWRlciNnZXRUZXh0KE9iamVjdCkKLSAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IHZhbHVlKSAKLSAgICB7Ci0gICAgICBXZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbiBleHRlbnNpb24gPSAoV2ViU2VydmljZVRlc3RFeHRlbnNpb24pIFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkuZ2V0SW5zdGFuY2UoKQotICAgICAgCQkuZ2V0V2ViU2VydmljZUV4dGVuc2lvbnNCeUlkKHZhbHVlLnRvU3RyaW5nKCkpOwotICAgICAgaWYgKGV4dGVuc2lvbiAhPSBudWxsKQotICAgIAkgIHJldHVybiBleHRlbnNpb24uZ2V0TGFiZWwoKTsKLSAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpOwotICAgIH0KLSAgfQotICAKLSAgcHJvdGVjdGVkIGNsYXNzIFRhYmxlU2VsZWN0aW9uTGlzdGVuZXIgaW1wbGVtZW50cyBTZWxlY3Rpb25MaXN0ZW5lcgotICB7Ci0gICAgQnV0dG9uIHVwOwotICAgIEJ1dHRvbiBkb3duOwotICAgIFRhYmxlICB0YWJsZTsKLQotICAgIHB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBhcmcwKQotICAgIHsKLSAgICAgIHdpZGdldFNlbGVjdGVkKGFyZzApOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGFyZzApCi0gICAgewotICAgICAgaW50IGkgPSB0YWJsZS5nZXRTZWxlY3Rpb25JbmRleCgpOwotICAgICAgaWYgKGkgPT0gdGFibGUuZ2V0SXRlbUNvdW50KCkgLSAxKSBkb3duLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgZWxzZSBpZiAoaSA+IC0xKSBkb3duLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgICBpZiAoaSA9PSAwKSB1cC5zZXRFbmFibGVkKGZhbHNlKTsKLSAgICAgIGVsc2UgaWYgKGkgPiAtMSkgdXAuc2V0RW5hYmxlZCh0cnVlKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgVGFibGVTZWxlY3Rpb25MaXN0ZW5lcihCdXR0b24gdXAsIEJ1dHRvbiBkb3duLCBUYWJsZSB0YWJsZSkKLSAgICB7Ci0gICAgICB0aGlzLnVwID0gdXA7Ci0gICAgICB0aGlzLmRvd24gPSBkb3duOwotICAgICAgdGhpcy50YWJsZSA9IHRhYmxlOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC91aS91ZGRpL1ByaXZhdGVVRERJUmVnaXN0cnlUeXBlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL3VkZGkvUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg2ZDAyMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy51aS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3VpL3VkZGkvUHJpdmF0ZVVERElSZWdpc3RyeVR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwudWkudWRkaTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nOwotCi1wdWJsaWMgaW50ZXJmYWNlIFByaXZhdGVVRERJUmVnaXN0cnlUeXBlCi17Ci0gICAgcHVibGljIGJvb2xlYW4gaXNQcml2YXRlVURESVJlZ2lzdHJ5SW5zdGFsbGVkKCk7Ci0gICAgcHVibGljIFN0cmluZ1tdIGdldFByaXZhdGVVRERJUmVnaXN0cnlJbnF1aXJ5QVBJKCk7Ci0gICAgcHVibGljIFN0cmluZ1tdIGdldFByaXZhdGVVRERJUmVnaXN0cnlQdWJsaXNoQVBJKCk7Ci0gICAgcHVibGljIENvbW1hbmRXaWRnZXRCaW5kaW5nIGdldEJpbmRpbmcoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLy5jbGFzc3BhdGggYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDRlODYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjUiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMDFiMGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotYmluCi1idWlsZC54bWwKLXRlbXAuZm9sZGVyCi13cy5qYXIKLUBkb3QKLXNyYy56aXAKLWphdmFDb21waWxlci4uLmFyZ3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLy5wcm9qZWN0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MTQ1MTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5qc3Qud3M8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTY1MTU5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSNXZWQgT2N0IDAxIDA3OjIwOjAyIEVEVCAyMDA4Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuNQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hdXRvYm94aW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbXB0eVN0YXRlbWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmllbGRIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsUGFyYW1ldGVyQm91bmQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbGx5QmxvY2tOb3RDb21wbGV0aW5nTm9ybWFsbHk9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5mb3JiaWRkZW5SZWZlcmVuY2U9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaGlkZGVuQ2F0Y2hCbG9jaz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGF0aWJsZU5vbkluaGVyaXRlZEludGVyZmFjZU1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGxldGVFbnVtU3dpdGNoPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmRpcmVjdFN0YXRpY0FjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubG9jYWxWYXJpYWJsZUhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWV0aG9kV2l0aENvbnN0cnVjdG9yTmFtZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdEZXByZWNhdGVkQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ092ZXJyaWRlQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ1NlcmlhbFZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0VmZmVjdEFzc2lnbm1lbnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0ltcGxpY2l0U3RyaW5nQ29udmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vbkV4dGVybmFsaXplZFN0cmluZ0xpdGVyYWw9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm92ZXJyaWRpbmdQYWNrYWdlRGVmYXVsdE1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnBvc3NpYmxlQWNjaWRlbnRhbEJvb2xlYW5Bc3NpZ25tZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zcGVjaWFsUGFyYW1ldGVySGlkaW5nRmllbGQ9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3RhdGljQWNjZXNzUmVjZWl2ZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdXBwcmVzc1dhcm5pbmdzPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3ludGhldGljQWNjZXNzRW11bGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS50eXBlUGFyYW1ldGVySGlkaW5nPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5jaGVja2VkVHlwZU9wZXJhdGlvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuZG9jdW1lbnRlZEVtcHR5QmxvY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuaGFuZGxlZFdhcm5pbmdUb2tlbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5RWxzZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlUeXBlQ2hlY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVucXVhbGlmaWVkRmllbGRBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbldoZW5PdmVycmlkaW5nPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZEltcG9ydD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZExvY2FsPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuSW1wbGVtZW50aW5nQWJzdHJhY3Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbk92ZXJyaWRpbmdDb25jcmV0ZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQcml2YXRlTWVtYmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udmFyYXJnc0FyZ3VtZW50TmVlZENhc3Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiY2M4YzkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSNNb24gSmFuIDMwIDEwOjQxOjQyIEVTVCAyMDA2Ci1jb21waWxlcnMucC5kZXByZWNhdGVkPTEKLWNvbXBpbGVycy5wLm5vLXJlcXVpcmVkLWF0dD0wCi1jb21waWxlcnMucC5ub3QtZXh0ZXJuYWxpemVkLWF0dD0xCi1jb21waWxlcnMucC51bmtub3duLWF0dHJpYnV0ZT0wCi1jb21waWxlcnMucC51bmtub3duLWNsYXNzPTAKLWNvbXBpbGVycy5wLnVua25vd24tZWxlbWVudD0xCi1jb21waWxlcnMucC51bmtub3duLXJlc291cmNlPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtZXgtcG9pbnRzPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtaW1wb3J0PTAKLWNvbXBpbGVycy51c2UtcHJvamVjdD10cnVlCi1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0Yjk5OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVQTFVHSU5fTkFNRQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UuanN0LndzCi1CdW5kbGUtVmVyc2lvbjogMS4wLjQwNy5xdWFsaWZpZXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5wbHVnaW4uV2ViU2VydmljZVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1hbmQ7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLnJ1bGVzO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQ7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kaWFsb2c7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0O3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0O3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnBsdWdpbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC53c3J0Ci1JbXBvcnQtUGFja2FnZTogY29tLmlibS5pY3UudXRpbDsgdmVyc2lvbj0iMy44IgotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5qZW0udXRpbDtidW5kbGUtdmVyc2lvbj0iWzIuMC4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamVtLndvcmtiZW5jaDtidW5kbGUtdmVyc2lvbj0iWzIuMC4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamVtO2J1bmRsZS12ZXJzaW9uPSJbMi4wLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5qZHQuY29yZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuZW1mLmNvbW1vbjtidW5kbGUtdmVyc2lvbj0iWzIuMi4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcztidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamZhY2U7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmVtZi5lY29yZTtidW5kbGUtdmVyc2lvbj0iWzIuMi4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamVtLndvcmtiZW5jaDtidW5kbGUtdmVyc2lvbj0iWzIuMC4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMiwyLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS4yLjAsMS4zLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZS5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamI7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC5qMmVlO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLm1vZHVsZWNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3JrcztidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaTtidW5kbGUtdmVyc2lvbj0iWzIuMi4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamVtLnV0aWw7YnVuZGxlLXZlcnNpb249IlsyLjAuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQ7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwyLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53cztidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4yLjApIgotRWNsaXBzZS1MYXp5U3RhcnQ6IHRydWUKLUJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvYWJvdXQuaHRtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvYnVpbGQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNTkzNmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXNyYy5pbmNsdWRlcyA9IGNvbXBvbmVudC54bWwKLWJpbi5pbmNsdWRlcyA9IC4sXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMKLXNvdXJjZS4uID0gc3JjLwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvY29tcG9uZW50LnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL2NvbXBvbmVudC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MGJmMTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvY29tcG9uZW50LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y29tcG9uZW50IHhtbG5zPSJodHRwOi8vZWNsaXBzZS5vcmcvd3RwL3JlbGVuZy90b29scy9jb21wb25lbnQtbW9kZWwiIG5hbWU9Im9yZy5lY2xpcHNlLmpzdC53cyI+Ci0gICA8Y29tcG9uZW50LWRlcGVuZHMgdW5yZXN0cmljdGVkPSJ0cnVlIj4KLSAgIDwvY29tcG9uZW50LWRlcGVuZHM+Ci0gICA8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MiIGZyYWdtZW50PSJmYWxzZSIvPgotICAgPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZSIgZnJhZ21lbnQ9ImZhbHNlIi8+Ci0gICA8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aSIgZnJhZ21lbnQ9ImZhbHNlIi8+Ci0gICA8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jcmVhdGlvbi51aSIgZnJhZ21lbnQ9ImZhbHNlIi8+Ci0gICA8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24iIGZyYWdtZW50PSJmYWxzZSIvPgotICAgPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpIiBmcmFnbWVudD0iZmFsc2UiLz4KLSAgIDxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi5lamIudWkiIGZyYWdtZW50PSJmYWxzZSIvPgotICAgPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpIiBmcmFnbWVudD0iZmFsc2UiLz4KLSAgIDxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy51ZGRpcmVnaXN0cnkiIGZyYWdtZW50PSJmYWxzZSIvPgotICAgPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UuanN0LndzLnVpIiBmcmFnbWVudD0iZmFsc2UiLz4KLTwvY29tcG9uZW50PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3MvcGx1Z2luLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA1YThiZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPVdlYiBTZXJ2aWNlcwotUExVR0lOX1BST1ZJREVSPUVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL1dTUGx1Z2luLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL1dTUGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYWE3NWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9XU1BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLU1TR19FUlJPUl9TRVJWRVI9SVdBQjAyMTNFIEVycm9yIGluIHN0YXJ0aW5nIHNlcnZlci4KLQotQU5ZX0ZJTFRFUl9OQU1FPUFsbCBmaWxlcwotQU5ZX0ZJTFRFUl9ERVNDPVRoaXMgaXMgYSBraW5kIG9mIEZpbHRlciB0aGF0IGFjY2VwdHMgYWxsIG9iamVjdHMuCi0KLUVSUk9SX1NFTEVDVElPTl9UUkFOU0ZPUk09U3BlY2lmaWVkIHNlbGVjdGlvbiBkb2VzIG5vdCBtYXRjaCBhIHJlc291cmNlLgotCi1NU0dfSkFYUlBDMTFfTk9UX0NPTVBMSUFOVD1UaGUgc2VydmljZSBjbGFzcyAiezB9IiBkb2VzIG5vdCBjb21wbHkgdG8gb25lIG9yIG1vcmUgcmVxdWlyZW1lbnRzIG9mIHRoZSBKQVgtUlBDIDEuMSBzcGVjaWZpY2F0aW9uLCBhbmQgbWF5IG5vdCBkZXBsb3kgb3IgZnVuY3Rpb24gY29ycmVjdGx5LgotTVNHX0pBWFJQQzExX1VOUkVTT0xWRURfQ0xBU1M9VGhlIGNsYXNzICJ7MH0iIGNhbm5vdCBiZSBsb2FkZWQgdmlhIHByb2plY3QgInsxfSIuIENoZWNrIHRoYXQgdGhlIHByb2plY3QgY29udGFpbnMgdGhlIGNsYXNzLCBvciB0aGF0IHRoZSBjbGFzcyBpcyBsb2FkYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEphdmEgQnVpbGQgUGF0aCBvZiB0aGUgcHJvamVjdC4KLU1TR19KQVhSUEMxMV9VTlJFU09MVkVEX1RZUEU9QSBkYXRhIHR5cGUsICJ7MH0iLCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgd2hpbGUgYW5hbHl6aW5nIHRoZSBzZXJ2aWNlIGNsYXNzLiBDaGVjayB5b3VyIHByb2plY3QgY2xhc3NwYXRoLgotTVNHX0pBWFJQQzExX1JVTEVfMDAwMT1UaGUgc2VydmljZSBjbGFzcyAiezB9IiBkb2VzIG5vdCBoYXZlIGEgcHVibGljIGRlZmF1bHQgY29uc3RydWN0b3IuIENoYXB0ZXIgMTAuMSBvZiB0aGUgSkFYLVJQQyAxLjEgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyBhIHNlcnZpY2UgY2xhc3MgdG8gaGF2ZSBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yLCBvdGhlcndpc2UgYSBKQVgtUlBDIDEuMSBjb21wbGlhbnQgV2ViIHNlcnZpY2UgZW5naW5lIG1heSBiZSB1bmFibGUgdG8gY29uc3RydWN0IGFuIGluc3RhbmNlIG9mIHRoZSBzZXJ2aWNlIGNsYXNzIHRvIGhhbmRsZSBhbiBpbmNvbWluZyByZXF1ZXN0IG1lc3NhZ2UuIAotTVNHX0pBWFJQQzExX1JVTEVfMDAwMj1UaGUgdmFsdWUgdHlwZSAiezB9IiB1c2VkIHZpYSB0aGUgc2VydmljZSBjbGFzcyAiezF9IiBkb2VzIG5vdCBoYXZlIGEgcHVibGljIGRlZmF1bHQgY29uc3RydWN0b3IuIENoYXB0ZXIgNS40IG9mIHRoZSBKQVgtUlBDIDEuMSBzcGVjaWZpY2F0aW9uIHJlcXVpcmVzIGEgdmFsdWUgdHlwZSB0byBoYXZlIGEgcHVibGljIGRlZmF1bHQgY29uc3RydWN0b3IsIG90aGVyd2lzZSBhIEpBWC1SUEMgMS4xIGNvbXBsaWFudCBXZWIgc2VydmljZSBlbmdpbmUgbWF5IGJlIHVuYWJsZSB0byBjb25zdHJ1Y3QgYW4gaW5zdGFuY2Ugb2YgdGhlIHZhbHVlIHR5cGUgZHVyaW5nIGRlc2VyaWFsaXphdGlvbi4KLU1TR19KQVhSUEMxMV9SVUxFXzAwMDM9VGhlIG1ldGhvZCAiezB9IiBvbiB0aGUgc2VydmljZSBjbGFzcyAiezF9IiBpcyBvdmVybG9hZGVkLiBPdmVybG9hZGVkIG1ldGhvZHMgYXJlIGFsbG93ZWQgYnkgY2hhcHRlciA1LjUuNSBvZiB0aGUgSkFYLVJQQyAxLjEgc3BlY2lmaWNhdGlvbiwgaG93ZXZlciwgc29tZSBKQVgtUlBDIDEuMSBjb21wbGlhbnQgdG9vbHMgbWF5IG5vdCBhbGxvdyBvdmVybG9hZGVkIG1ldGhvZHMgb3IgbWF5IGdlbmVyYXRlIFdTREwgd2l0aCBvdmVybG9hZGVkIG9wZXJhdGlvbnMgYXMgY29udHJhcnkgdG8gcnVsZSBSMjMwNCBvZiB0aGUgV1MtSSBCYXNpYyBQcm9maWxlLgotTVNHX0pBWFJQQzExX1JVTEVfMDAwND1UaGUgc2VydmljZSBzcGVjaWZpYyBleGNlcHRpb24gY2xhc3MgInswfSIgZG9lcyBub3QgaGF2ZSBhIHB1YmxpYyBjb25zdHJ1Y3RvciB3aXRoIHBhcmFtZXRlcnMgY29ycmVzcG9uZGluZyBpbiBudW1iZXIgYW5kIHR5cGUgdG8gdGhlIGdldHRlciBtZXRob2RzIG9uIHRoZSBjbGFzcy4gQ2hhcHRlciA1LjUuNSBvZiB0aGUgSkFYLVJQQyAxLjEgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyBhIHNlcnZpY2Ugc3BlY2lmaWMgZXhjZXB0aW9uIHRvIGhhdmUgYSBwdWJsaWMgY29uc3RydWN0b3Igd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgcGFyYW1ldGVycyBhcyB0aGVyZSBhcmUgZ2V0dGVyIG1ldGhvZHMsIGFuZCBvZiBtYXRjaGluZyBkYXRhIHR5cGVzLCBvdGhlcndpc2UgYSBKQVgtUlBDIDEuMSBjb21wbGlhbnQgV2ViIHNlcnZpY2UgZW5naW5lIG1heSBiZSB1bmFibGUgdG8gY29uc3RydWN0IGFuIGluc3RhbmNlIG9mIHRoZSBleGNlcHRpb24gZHVyaW5nIGRlc2VyaWFsaXphdGlvbiBvZiBhIGZhdWx0IG1lc3NhZ2UuCi1NU0dfSkFYUlBDMTFfUlVMRV8wMDA1PVRoZSBtZXRob2QgInswfSIgb24gdGhlIHNlcnZpY2UgY2xhc3MgInsxfSIgdXNlcyBhIGRhdGEgdHlwZSwgInsyfSIsIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgSkFYLVJQQyBzcGVjaWZpY2F0aW9uLiBJbnN0YW5jZXMgb2YgdGhlIHR5cGUgbWF5IG5vdCBzZXJpYWxpemUgb3IgZGVzZXJpYWxpemUgY29ycmVjdGx5LiBMb3NzIG9mIGRhdGEgb3IgY29tcGxldGUgZmFpbHVyZSBvZiB0aGUgV2ViIHNlcnZpY2UgbWF5IHJlc3VsdC4KLU1TR19KQVhSUEMxMV9SVUxFXzAwMDY9VGhlIGZpZWxkIG9yIHByb3BlcnR5ICJ7MH0iIG9uIHRoZSB2YWx1ZSB0eXBlICJ7MX0iIHVzZWQgdmlhIHRoZSBzZXJ2aWNlIGNsYXNzICJ7Mn0iIGhhcyBhIGRhdGEgdHlwZSwgInszfSIsIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgSkFYLVJQQyAxLjEgc3BlY2lmaWNhdGlvbi4gSW5zdGFuY2VzIG9mIHRoZSB0eXBlIG1heSBub3Qgc2VyaWFsaXplIG9yIGRlc2VyaWFsaXplIGNvcnJlY3RseS4gTG9zcyBvZiBkYXRhIG9yIGNvbXBsZXRlIGZhaWx1cmUgb2YgdGhlIFdlYiBzZXJ2aWNlIG1heSByZXN1bHQuCi1NU0dfSkFYUlBDMTFfUlVMRV8wMDA3PVRoZSBwcmltaXRpdmUgdHlwZSAiezB9IiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBKQVgtUlBDIDEuMSBzcGVjaWZpY2F0aW9uLiBBcyBzdGF0ZWQgaW4gY2hhcHRlciA1LjEuMSBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHN1cHBvcnRlZCBwcmltaXRpdmUgdHlwZXMgYXJlICJib29sZWFuIiwgImJ5dGUiLCAic2hvcnQiLCAiaW50IiwgImxvbmciLCAiZmxvYXQiIGFuZCAiZG91YmxlIi4KLU1TR19KQVhSUEMxMV9SVUxFXzAwMDg9VGhlIHdyYXBwZXIgdHlwZSAiezB9IiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBKQVgtUlBDIDEuMSBzcGVjaWZpY2F0aW9uLiBBcyBzdGF0ZWQgaW4gY2hhcHRlciA1LjEuMSBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHN1cHBvcnRlZCB3cmFwcGVyIHR5cGVzIGFyZSB0aG9zZSBjb3JyZXNwb25kaW5nIHRvICJib29sZWFuIiwgImJ5dGUiLCAic2hvcnQiLCAiaW50IiwgImxvbmciLCAiZmxvYXQiIGFuZCAiZG91YmxlIi4KLU1TR19KQVhSUEMxMV9SVUxFXzAwMDk9VGhlIEphdmEgdHlwZSAiezB9IiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBKQVgtUlBDIDEuMSBzcGVjaWZpY2F0aW9uLiBBcyBzdGF0ZWQgaW4gY2hhcHRlciA1LjEuMyBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHN1cHBvcnRlZCBzdGFuZGFyZCB0eXBlcyBhcmUgImphdmEubGFuZy5TdHJpbmciLCAiamF2YS51dGlsLkRhdGUiLCAiamF2YS51dGlsLkNhbGVuZGFyIiwgImphdmEubWF0aC5CaWdJbnRlZ2VyIiwgImphdmEubWF0aC5CaWdEZWNpbWFsIiwgImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiIGFuZCAiamF2YS5uZXQuVVJJIi4KLU1TR19KQVhSUEMxMV9SVUxFXzAwMTA9U3VwcG9ydCBmb3IgY29sbGVjdGlvbiBhbmQgbWFwIGNsYXNzZXMgc3VjaCBhcyAiezB9IiBpcyBub3QgcmVxdWlyZWQgYnkgSkFYLVJQQyAxLjEuIER1ZSB0byB0aGVpciBub24tdHlwZSBzYWZlIG5hdHVyZSwgYSBKQVgtUlBDIDEuMSBjb21wbGlhbnQgV2ViIHNlcnZpY2UgZW5naW5lIG1heSBub3QgaGFuZGxlIGNvbGxlY3Rpb25zLCBvciBtYXkgcmVwcmVzZW50IHRoZW0gaW4gV1NETCBkb2N1bWVudHMgYW5kIFNPQVAgbWVzc2FnZXMgaW4gYSBtYW5uZXIgdGhhdCBpbXBhaXJzIGludGVyb3BlcmFiaWxpdHkuIFRoZSB1c2Ugb2YgYXJyYXlzIGluc3RlYWQgb2YgY29sbGVjdGlvbnMgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQuCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL1dTUGx1Z2luTWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvV1NQbHVnaW5NZXNzYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjk1NzkzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvV1NQbHVnaW5NZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDIwICAgMTMyOTA1IGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5ICAgICAgICAgIAotICogMjAwNjA2MDcgICAxNDU2MDQgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkgICAgICAgICAgCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLQotcHVibGljIGZpbmFsIGNsYXNzIFdTUGx1Z2luTWVzc2FnZXMgZXh0ZW5kcyBOTFMgewotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5XU1BsdWdpbiI7Ly8kTk9OLU5MUy0xJAotCi0JcHJpdmF0ZSBXU1BsdWdpbk1lc3NhZ2VzKCkgewotCQkvLyBEbyBub3QgaW5zdGFudGlhdGUKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfU0VSVkVSOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEFOWV9GSUxURVJfTkFNRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBBTllfRklMVEVSX0RFU0M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRVJST1JfU0VMRUNUSU9OX1RSQU5TRk9STTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSkFYUlBDMTFfTk9UX0NPTVBMSUFOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSkFYUlBDMTFfVU5SRVNPTFZFRF9DTEFTUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSkFYUlBDMTFfVU5SRVNPTFZFRF9UWVBFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19KQVhSUEMxMV9SVUxFXzAwMDE7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0pBWFJQQzExX1JVTEVfMDAwMjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSkFYUlBDMTFfUlVMRV8wMDAzOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19KQVhSUEMxMV9SVUxFXzAwMDQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0pBWFJQQzExX1JVTEVfMDAwNTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSkFYUlBDMTFfUlVMRV8wMDA2OwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19KQVhSUEMxMV9SVUxFXzAwMDc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0pBWFJQQzExX1JVTEVfMDAwODsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSkFYUlBDMTFfUlVMRV8wMDA5OwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19KQVhSUEMxMV9SVUxFXzAwMTA7Ci0KLQlzdGF0aWMgewotCQlOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBXU1BsdWdpbk1lc3NhZ2VzLmNsYXNzKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1hbmQvTnVsbFN0YXR1c01vbml0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbWFuZC9OdWxsU3RhdHVzTW9uaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWFiN2Q4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbWFuZC9OdWxsU3RhdHVzTW9uaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1hbmQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotCi0vKioKLSogQSBOdWxsU3RhdHVzUmVuZGVyZXIgdGhyb3dzIGF3YXkgSVN0YXR1cyBpbmZvcm1hdGlvbi4KLSovCi1wdWJsaWMgY2xhc3MgTnVsbFN0YXR1c01vbml0b3IgaW1wbGVtZW50cyBTdGF0dXNNb25pdG9yCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcmVzdWx0OwotCi0gIC8qKgotICAqIERlZmF1bHQgY29uc3RydWN0b3IuCi0gICovCi0gIHB1YmxpYyBOdWxsU3RhdHVzTW9uaXRvciAoKSAge30KLSAgLyoqCi0gICogRG9lcyBub3RoaW5nLgotICAqLwotICBwdWJsaWMgaW50IHJlcG9ydFN0YXR1cyhJU3RhdHVzIHN0YXR1cywgVmVjdG9yIG9wdGlvbnMpIHsgcmV0dXJuIDA7IH0KLSAgcHVibGljIGJvb2xlYW4gcmVwb3J0U3RhdHVzKElTdGF0dXMgc3RhdHVzKSAKLSAgeyAKLSAgICBzd2l0Y2ggKHN0YXR1cy5nZXRTZXZlcml0eSgpKQotICAgIHsKLSAgICAgIGNhc2UgSVN0YXR1cy5FUlJPUjoKLSAgICAgIGNhc2UgSVN0YXR1cy5XQVJOSU5HOgotICAgICAgCQlyZXN1bHQgPSBmYWxzZTsKLSAgICAgIAkJYnJlYWs7Ci0JICBjYXNlIElTdGF0dXMuSU5GTzoKLSAgICAgIGRlZmF1bHQ6IC8vSVN0YXR1cy5PSwotICAgICAgCQlyZXN1bHQgPSB0cnVlOyAKLSAgICAgIAkJYnJlYWs7Ci0gICAgIH0KLSAJcmV0dXJuIHJlc3VsdDsKLSAgfQotICBwdWJsaWMgdm9pZCBkdW1wU2F2ZWRTdGF0dXMoKSB7IH0KLSAgcHVibGljIGJvb2xlYW4gY2FuQ29udGludWUoKSAKLSAgeyAKLQlyZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVzZXQgKCkgewotICAJCXJlc3VsdCA9IHRydWU7Ci0gIAl9Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbWFuZC9TdGF0dXNNb25pdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1hbmQvU3RhdHVzTW9uaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGFjODAyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbWFuZC9TdGF0dXNNb25pdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbWFuZDsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci0KLS8qKgotKiBBIFN0YXR1c01vbml0b3IgcmVwb3J0cyBJU3RhdHVzIGluZm9ybWF0aW9uIHRvIGEgZGlzcGxheSBzeXN0ZW0uCi0qLwotcHVibGljIGludGVyZmFjZSBTdGF0dXNNb25pdG9yCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgLyoqCi0gICogcmVwb3J0cyB0aGUgY29udGVudHMgb2YgdGhlIGdpdmVuIHN0YXR1cyBvYmplY3QuCi0gICogU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXBvcnQKLSAgKiBJU3RhdHVzIGluZm9ybWF0aW9uIHRvIGEgZ2l2ZW4gZGlzcGxheSBzeXN0ZW0sCi0gICogc3VjaCBhcyBTV1QsIHRoZSBjb21tYW5kIGxpbmUsIG9yIGEgdHJhY2UgZmlsZS4KLSAgKi8KLSAgcHVibGljIGludCByZXBvcnRTdGF0dXMoSVN0YXR1cyBzdGF0dXMsIFZlY3RvciBvcHRpb25zKTsKLSAgcHVibGljIGJvb2xlYW4gcmVwb3J0U3RhdHVzKElTdGF0dXMgc3RhdHVzKTsKLSAgcHVibGljIHZvaWQgZHVtcFNhdmVkU3RhdHVzKCk7Ci0gIHB1YmxpYyBib29sZWFuIGNhbkNvbnRpbnVlKCk7Ci0gIHB1YmxpYyB2b2lkIHJlc2V0KCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1hbmQvU3RhdHVzUmVuZGVyZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbWFuZC9TdGF0dXNSZW5kZXJlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2ZmM2E2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbWFuZC9TdGF0dXNSZW5kZXJlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tYW5kOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci0KLS8qKgotKiBBIFN0YXR1c1JlbmRlcmVyIHJlbmRlcnMgSVN0YXR1cyBpbmZvcm1hdGlvbiB0byBhIGRpc3BsYXkgc3lzdGVtLgotKi8KLXB1YmxpYyBpbnRlcmZhY2UgU3RhdHVzUmVuZGVyZXIKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAvKioKLSAgKiBSZW5kZXJzIHRoZSBjb250ZW50cyBvZiB0aGUgZ2l2ZW4gc3RhdHVzIG9iamVjdC4KLSAgKiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHJlbmRlcgotICAqIElTdGF0dXMgaW5mb3JtYXRpb24gdG8gYSBnaXZlbiBkaXNwbGF5IHN5c3RlbSwKLSAgKiBzdWNoIGFzIFNXVCwgdGhlIGNvbW1hbmQgbGluZSwgb3IgYSB0cmFjZSBmaWxlLgotICAqLwotICBwdWJsaWMgdm9pZCByZW5kZXIgKCBJU3RhdHVzIHN0YXR1cyApOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vQW55RmlsdGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9BbnlGaWx0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVhOGYxNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9BbnlGaWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5wbHVnaW4uV2ViU2VydmljZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuV1NQbHVnaW5NZXNzYWdlczsKLQotLyoqCi0qIFRoaXMgaXMgYSBraW5kIG9mIHtAbGluayBGaWx0ZXJ9IHRoYXQgYWNjZXB0cyBhbGwgb2JqZWN0cywKLSogYW5kIGlzIGEgc3VpdGFibGUgYmFzZSBjbGFzcyBmb3IgbmV3IDxjb2RlPkZpbHRlcnM8L2NvZGU+LgotKi8KLXB1YmxpYyBjbGFzcyBBbnlGaWx0ZXIgaW1wbGVtZW50cyBGaWx0ZXIKLXsKLQotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPkFueUZpbHRlcjwvY29kZT4uCi0gICovCi0gIHB1YmxpYyBBbnlGaWx0ZXIgKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbG9jYWxlLXNwZWNpZmljIG5hbWUgb2YgdGhpcyBmaWx0ZXIuCi0gICogQHJldHVybiBUaGUgbG9jYWxlLXNwZWNpZmljIG5hbWUgb2YgdGhpcyBmaWx0ZXIuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSAoKQotICB7Ci0gICAgcmV0dXJuIFdTUGx1Z2luTWVzc2FnZXMuQU5ZX0ZJTFRFUl9OQU1FOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbG9jYWxlLXNwZWNpZmljIGRlc2NyaXB0aW9uIG9mIHRoaXMgZmlsdGVyLgotICAqIEByZXR1cm4gVGhlIGxvY2FsZS1zcGVjaWZpYyBkZXNjcmlwdGlvbiBvZiB0aGlzIGZpbHRlci4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbiAoKQotICB7Ci0gICAgcmV0dXJuIFdTUGx1Z2luTWVzc2FnZXMuQU5ZX0ZJTFRFUl9ERVNDOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyBhbiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXN9Ci0gICogZGVzY3JpYmluZyB0aGUgPGNvZGU+RmlsdGVyPC9jb2RlPidzIGFzc2Vzc21lbnQgb2YKLSAgKiB0aGUgZ2l2ZW4gPGNvZGU+b2JqZWN0PC9jb2RlPi4KLSAgKiBTZWUge0BsaW5rIEZpbHRlciNzdGF0dXNPZn0gZm9yIGdlbmVyYWwgY29tbWVudHMuCi0gICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgPGNvZGU+QW55RmlsdGVyPC9jb2RlPgotICAqIHJldHVybnMgYSBzdGF0dXMgd2l0aCBzZXZlcml0eSA8Y29kZT5JU3RhdHVzLk9LPC9jb2RlPi4KLSAgKiBTdWJjbGFzc2VzIG1heSBvdmVycmlkZS4KLSAgKiBAcGFyYW0gb2JqZWN0IFRoZSBvYmplY3QgdG8gZmlsdGVyLgotICAqIEByZXR1cm4gQW4ge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzfS4KLSAgKi8KLSAgcHVibGljIElTdGF0dXMgc3RhdHVzT2YgKCBPYmplY3Qgb2JqZWN0ICkKLSAgewotICAgIHJldHVybiBuZXcgU3RhdHVzKElTdGF0dXMuT0ssV2ViU2VydmljZVBsdWdpbi5JRCwwLCIiLG51bGwpOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IGlmIHtAbGluayAjc3RhdHVzT2Z9IHJldHVybnMKLSAgKiBhbiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXN9IHdpdGggYQotICAqIHNldmVyaXR5IG9mIGxlc3MgdGhhbiA8Y29kZT5JU3RhdHVzLkVSUk9SPC9jb2RlPi4KLSAgKiBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0byBwcm92aWRlIGEgaGlnaGVyLXBlcmZvcm1hbmNlCi0gICogaW1wbGVtZW50YXRpb24uCi0gICogQHBhcmFtIG9iamVjdCBUaGUgb2JqZWN0IHRvIGZpbHRlci4KLSAgKiBAcmV0dXJuIFRydWUgaWYgYW5kIG9ubHkgaWYge0BsaW5rICNzdGF0dXNPZn0gcmV0dXJucwotICAqIGFuIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1c30gd2l0aCBhCi0gICogc2V2ZXJpdHkgb2YgbGVzcyB0aGFuIDxjb2RlPklTdGF0dXMuRVJST1I8L2NvZGU+LgotICAqLwotICBwdWJsaWMgYm9vbGVhbiBhY2NlcHRzICggT2JqZWN0IG9iamVjdCApCi0gIHsKLSAgICByZXR1cm4gIXN0YXR1c09mKG9iamVjdCkubWF0Y2hlcyhJU3RhdHVzLkVSUk9SKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vRmlsdGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9GaWx0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY4NzZmYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9GaWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLQotLyoqCi0qIFRoaXMgaXMgdGhlIGludGVyZmFjZSBmb3IgYSBjbGFzcyBvZiBvYmplY3RzIHRoYXQgZmlsdGVyCi0qIG90aGVyIG9iamVjdHMgZm9yIGluY2x1c2lvbiBvciBleGNsdXNpb24gYnkgc29tZSBjb25zdW1lci4KLSovCi1wdWJsaWMgaW50ZXJmYWNlIEZpbHRlcgotewotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIGxvY2FsZS1zcGVjaWZpYyBuYW1lIG9mIHRoaXMgZmlsdGVyLgotICAqIEByZXR1cm4gVGhlIGxvY2FsZS1zcGVjaWZpYyBuYW1lIG9mIHRoaXMgZmlsdGVyLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUgKCk7Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbG9jYWxlLXNwZWNpZmljIGRlc2NyaXB0aW9uIG9mIHRoaXMgZmlsdGVyLgotICAqIEByZXR1cm4gVGhlIGxvY2FsZS1zcGVjaWZpYyBkZXNjcmlwdGlvbiBvZiB0aGlzIGZpbHRlci4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbiAoKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIGFuIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1c30KLSAgKiBkZXNjcmliaW5nIHRoZSA8Y29kZT5GaWx0ZXI8L2NvZGU+J3MgYXNzZXNzbWVudCBvZgotICAqIHRoZSBnaXZlbiA8Y29kZT5vYmplY3Q8L2NvZGU+LgotICAqIFRoZSBzZXZlcml0eSBvZiB0aGUKLSAgKiByZXR1cm5lZCA8Y29kZT5JU3RhdHVzPC9jb2RlPiBpcyBhcyBmb2xsb3dzOgotICAqIDx1bD4KLSAgKiA8bGk+Ci0gICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzI09LfQotICAqIGlmIHRoZSA8Y29kZT5GaWx0ZXI8L2NvZGU+IGFjY2VwdHMgdGhlIDxjb2RlPm9iamVjdDwvY29kZT4KLSAgKiB3aXRoIG5vIGZ1cnRoZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBjYWxsZXIgKG1lYW5pbmcgdGhlCi0gICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzI2dldE1lc3NhZ2V9IGFuZAotICAqIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cyNnZXRFeGNlcHRpb259IG1ldGhvZHMKLSAgKiBhcmUgaWdub3JlZCkuCi0gICogPGxpPgotICAqIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cyNJTkZPfQotICAqIGlmIHRoZSA8Y29kZT5GaWx0ZXI8L2NvZGU+IGFjY2VwdHMgdGhlIDxjb2RlPm9iamVjdDwvY29kZT4KLSAgKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG1heSBiZSBhdmFpbGFibGUgZnJvbSB0aGUKLSAgKiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXMjZ2V0TWVzc2FnZX0gYW5kCi0gICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzI2dldEV4Y2VwdGlvbn0gbWV0aG9kcy4KLSAgKiA8bGk+Ci0gICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzI1dBUk5JTkd9Ci0gICogaWYgdGhlIDxjb2RlPkZpbHRlcjwvY29kZT4gYWNjZXB0cyB0aGUgPGNvZGU+b2JqZWN0PC9jb2RlPi4KLSAgKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG1heSBiZSBhdmFpbGFibGUgZnJvbSB0aGUKLSAgKiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXMjZ2V0TWVzc2FnZX0gYW5kCi0gICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzI2dldEV4Y2VwdGlvbn0gbWV0aG9kcy4KLSAgKiA8bGk+Ci0gICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzI0VSUk9SfQotICAqIGlmIHRoZSA8Y29kZT5GaWx0ZXI8L2NvZGU+IGRvZXMgbm90IGFjY2VwdCB0aGUgPGNvZGU+b2JqZWN0PC9jb2RlPi4KLSAgKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG1heSBiZSBhdmFpbGFibGUgZnJvbSB0aGUKLSAgKiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXMjZ2V0TWVzc2FnZX0gYW5kCi0gICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzI2dldEV4Y2VwdGlvbn0gbWV0aG9kcy4KLSAgKiA8L3VsPgotICAqIEBwYXJhbSBvYmplY3QgVGhlIG9iamVjdCB0byBmaWx0ZXIuCi0gICogQHJldHVybiBBbiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXN9Ci0gICogZGVzY3JpYmluZyB0aGUgPGNvZGU+RmlsdGVyPC9jb2RlPidzIGFzc2Vzc21lbnQgb2YKLSAgKiB0aGUgZ2l2ZW4gPGNvZGU+b2JqZWN0PC9jb2RlPi4KLSAgKi8KLSAgcHVibGljIElTdGF0dXMgc3RhdHVzT2YgKCBPYmplY3Qgb2JqZWN0ICk7Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoaXMgPGNvZGU+RmlsdGVyPC9jb2RlPgotICAqIGFjY2VwdHMgdGhlIGdpdmVuIDxjb2RlPm9iamVjdDwvY29kZT4uIFRoaXMgbWV0aG9kCi0gICogbXVzdCByZXR1cm4gdHJ1ZSBpZiBhbmQgb25seSBpZiB7QGxpbmsgI3N0YXR1c09mfQotICAqIHJldHVybnMgYW4gPGNvZGU+SVN0YXR1czwvY29kZT4gd2l0aCBhIHNldmVyaXR5IG9mCi0gICogbGVzcyB0aGFuIDxjb2RlPklTdGF0dXMuRVJST1I8L2NvZGU+LgotICAqIEBwYXJhbSBvYmplY3QgVGhlIG9iamVjdCB0byBmaWx0ZXIuCi0gICogQHJldHVybiBUcnVlIGlmIGFuZCBvbmx5IGlmIHRoaXMgPGNvZGU+RmlsdGVyPC9jb2RlPgotICAqIGFjY2VwdHMgdGhlIGdpdmVuIDxjb2RlPm9iamVjdDwvY29kZT4uCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGFjY2VwdHMgKCBPYmplY3Qgb2JqZWN0ICk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9JUHJvamVjdFRvU3RyaW5nVHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL0lQcm9qZWN0VG9TdHJpbmdUcmFuc2Zvcm1lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDA2MWU1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL0lQcm9qZWN0VG9TdHJpbmdUcmFuc2Zvcm1lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyOwotCi0KLQotLyoqCi0gKiBUcmFuc2Zyb21zIGEgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9qZWN0IHRvIGphdmEubGFuZy5TdHJpbmcKLSAqLwotcHVibGljIGNsYXNzIElQcm9qZWN0VG9TdHJpbmdUcmFuc2Zvcm1lciBpbXBsZW1lbnRzIFRyYW5zZm9ybWVyIHsKLQkKLQkgIHB1YmxpYyBPYmplY3QgdHJhbnNmb3JtKE9iamVjdCB2YWx1ZSkKLQkgIHsKLQkgIAlJUHJvamVjdCBwcm9qZWN0ID0gKElQcm9qZWN0KXZhbHVlOwotCSAgICByZXR1cm4gcHJvamVjdC5nZXROYW1lKCk7Ci0JICB9CQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vSjJFRUFjdGlvbkFkYXB0ZXJGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9KMkVFQWN0aW9uQWRhcHRlckZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdkYTI1Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9KMkVFQWN0aW9uQWRhcHRlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjIgICAxMjU1NzQgemluYUBjYS5pYm0uY29tIC0gWmluYSBNb3N0YWZpYQotICogMjAwNjAyMjIgICAyMjU1NzQgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwOTAzMTAgICAyNDI0NDAgeWVubHVAY2EuaWJtLmNvbSAtIFllbiBMdSwgUGx1Z2dhYmxlIElGaWxlIHRvIFVSSSBDb252ZXJ0ZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIENyZWF0ZWQgb24gTWF5IDgsIDIwMDQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWY7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmNvbnZlcnRlci5JSUZpbGUyVXJpQ29udmVydGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlNlcnZpY2VJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbDsKLQotCi0vKioKLSAqIEBhdXRob3IgZ2lsYmVydGEKLSAqLwotcHVibGljIGNsYXNzIEoyRUVBY3Rpb25BZGFwdGVyRmFjdG9yeSB7Ci0JIAkgIAotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0Q29udmVydGVkVVJJRnJvbUlGaWxlKElGaWxlIGZpbGUsU3RyaW5nIGRlZmF1bHRVUkkpCi0gIHsKLQlTdHJpbmcgY29udmVydGVkTG9jYXRpb24gPSBudWxsOwotCWJvb2xlYW4gYWxsb3dCYXNlQ29udmVyc2lvbk9uRmFpbHVyZSA9IHRydWU7Ci0JaWYgKGZpbGUgIT0gbnVsbCAmJiBmaWxlLmV4aXN0cygpKQotCXsJCi0JICBJSUZpbGUyVXJpQ29udmVydGVyIGNvbnZlcnRlciA9IFdTUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0SUZpbGUyVXJpQ29udmVydGVyKCk7Ci0JICBpZiAoY29udmVydGVyICE9IG51bGwpCi0JICB7Ci0JCWNvbnZlcnRlZExvY2F0aW9uID0gY29udmVydGVyLmNvbnZlcnQoZmlsZSk7Ci0JCWFsbG93QmFzZUNvbnZlcnNpb25PbkZhaWx1cmUgPSBjb252ZXJ0ZXIuYWxsb3dCYXNlQ29udmVyc2lvbk9uRmFpbHVyZSgpOwotCSAgfQotCX0KLQlpZiAoY29udmVydGVkTG9jYXRpb24gPT0gbnVsbCAmJiBhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlKQotCSAgcmV0dXJuIGRlZmF1bHRVUkk7Ci0JcmV0dXJuIGNvbnZlcnRlZExvY2F0aW9uOwotICB9Ci0gIAotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0Q29udmVydGVkVVJJRnJvbVVSSShTdHJpbmcgb3JpZ2luYWxVUkkpCi0gIHsKLQlJRmlsZSBmaWxlID0gbnVsbDsKLSAgICBpZiAob3JpZ2luYWxVUkkgIT0gbnVsbCkKLQl7Ci0JICBTdHJpbmcgcGxhdGZvcm1SZXNvdXJjZSA9ICJwbGF0Zm9ybTovcmVzb3VyY2UiOwotCSAgaWYgKG9yaWdpbmFsVVJJLnN0YXJ0c1dpdGgocGxhdGZvcm1SZXNvdXJjZSkpCi0JICAgIGZpbGUgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldEZpbGUobmV3IFBhdGgob3JpZ2luYWxVUkkuc3Vic3RyaW5nKHBsYXRmb3JtUmVzb3VyY2UubGVuZ3RoKCkpKSk7Ci0JICBlbHNlIGlmIChvcmlnaW5hbFVSSS5zdGFydHNXaXRoKCJmaWxlOiIpKQotCSAgewotCQlTdHJpbmcgZmlsZVBhdGggPSBjb252ZXJ0VG9SZWxhdGl2ZShvcmlnaW5hbFVSSSk7Ci0JCWZpbGUgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldEZpbGUobmV3IFBhdGgoZmlsZVBhdGgpKTsKLQkgIH0KLQl9Ci0gICAgcmV0dXJuIGdldENvbnZlcnRlZFVSSUZyb21JRmlsZShmaWxlLG9yaWdpbmFsVVJJKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0V1NETFVSSShTZXJ2aWNlSW1wbCBzZXJ2aWNlSW1wbCkKLSAgewotICAJRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gc2VydmljZUltcGwuZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAJU3RyaW5nIGxvY2F0aW9uID0gZGVmaW5pdGlvbi5nZXRMb2NhdGlvbigpOwotICAJcmV0dXJuIGdldENvbnZlcnRlZFVSSUZyb21VUkkobG9jYXRpb24pOwotICB9Ci0gICAKLSAgLy9oYXMgdG8gYmUgdW5kZXIgdGhlIHdlYmNvbnRlbnQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUpCX01PRFVMRSA9ICJlamJNb2R1bGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBUFBDTElFTlRfTU9EVUxFID0gImFwcENsaWVudE1vZHVsZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdFQl9NT0RVTEUgPSAiV2ViQ29udGVudCI7Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0V1NETFVSSShTZXJ2aWNlUmVmIHNlcnZpY2VJbXBsKQotICB7Ci0gIAkgU3RyaW5nIG1vZHVsZVJvb3QgPSBudWxsOwotCSBJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHNlcnZpY2VJbXBsKTsKLQkgaWYoSjJFRVV0aWxzLmlzV2ViQ29tcG9uZW50KHByb2plY3QpKQotCSB7Ci0JICAgbW9kdWxlUm9vdCA9IFdFQl9NT0RVTEU7Ci0JIH0KLSAgICAgZWxzZSBpZiAoSjJFRVV0aWxzLmlzRUpCQ29tcG9uZW50KHByb2plY3QpKQotCSB7Ci0JICAgbW9kdWxlUm9vdCA9IEVKQl9NT0RVTEU7Ci0JIH0KLQkgZWxzZSBpZiAoSjJFRVV0aWxzLmlzQXBwQ2xpZW50Q29tcG9uZW50KHByb2plY3QpKQotCSB7Ci0JICAgbW9kdWxlUm9vdCA9IEFQUENMSUVOVF9NT0RVTEU7Ci0JIH0KLQotCSBpZiAobW9kdWxlUm9vdCAhPSBudWxsKQotCSB7Ci0JICAgSVBhdGggcGF0aCA9IHByb2plY3QuZ2V0TG9jYXRpb24oKS5hZGRUcmFpbGluZ1NlcGFyYXRvcigpOwotCSAgIHBhdGggPSBwYXRoLmFwcGVuZChtb2R1bGVSb290KS5hZGRUcmFpbGluZ1NlcGFyYXRvcigpOwotCSAgIHBhdGggPSBwYXRoLmFwcGVuZChzZXJ2aWNlSW1wbC5nZXRXc2RsRmlsZSgpKTsKLQkgICBGaWxlIGZpbGUgPSBuZXcgRmlsZShwYXRoLnRvU3RyaW5nKCkpOwotCSAgIHRyeSB7Ci0JICAgICBVUkwgdXJsID0gZmlsZS50b1VSTCgpOwotCSAgICAgcmV0dXJuIGdldENvbnZlcnRlZFVSSUZyb21VUkkodXJsLnRvU3RyaW5nKCkpOwotCSAgIH0KLQkgICBjYXRjaChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkgewkJICAgCi0JICAgfQotCSB9Ci0JIHJldHVybiBudWxsOwotIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFdTRExVUkkoV1NETFJlc291cmNlSW1wbCB3c2RsUkkpCi0gIHsKLSAgCURlZmluaXRpb24gZGVmaW5pdGlvbiA9IHdzZGxSSS5nZXREZWZpbml0aW9uKCk7Ci0gIAlTdHJpbmcgbG9jYXRpb24gPSBkZWZpbml0aW9uLmdldExvY2F0aW9uKCk7Ci0gIAlyZXR1cm4gZ2V0Q29udmVydGVkVVJJRnJvbVVSSShsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFdTSUxQYXRoKFdTRExSZXNvdXJjZUltcGwgd3NkbFJJKQotICB7Ci0gIAlyZXR1cm4gY29udmVydFRvUmVsYXRpdmUoZ2V0V1NETFVSSSh3c2RsUkkpKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0V1NJTFBhdGgoU2VydmljZVJlZiBzZXJ2aWNlSW1wbCkKLSAgewotICAJcmV0dXJuIGNvbnZlcnRUb1JlbGF0aXZlKGdldFdTRExVUkkoc2VydmljZUltcGwpKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0V1NJTFBhdGgoU2VydmljZUltcGwgc2VydmljZUltcGwpCi0gIHsKLSAgCXJldHVybiBjb252ZXJ0VG9SZWxhdGl2ZShnZXRXU0RMVVJJKHNlcnZpY2VJbXBsKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEZJTEU9ImZpbGU6LyI7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEZJTEVMPSJmaWxlOiI7IAotICBwdWJsaWMgc3RhdGljIFN0cmluZyBjb252ZXJ0VG9SZWxhdGl2ZShTdHJpbmcgdXJpKQotICB7Ci0gIAkvL3JlbW92ZSBmaWxlOgotICAJU3RyaW5nIHJvb3QgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldExvY2F0aW9uKCkudG9TdHJpbmcoKTsKLSAgICByb290ID0gRklMRSArIHJvb3Q7Ci0gIAlTdHJpbmcgcm9vdEwgPSBGSUxFTCArIHJvb3Q7Ci0gICAgaWYodXJpLnN0YXJ0c1dpdGgocm9vdCkgfHwgdXJpLnN0YXJ0c1dpdGgocm9vdEwpKXsKLSAgICAgIHJldHVybiB1cmkuc3Vic3RyaW5nKHJvb3QubGVuZ3RoKCkpOyAgCQotICAgIH0KLSAgICByZXR1cm4gdXJpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9KMkVFVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL0oyRUVVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWRiZmNkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL0oyRUVVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcxMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMDQgIDEyNDE0MyAgIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lciAgICAgCi0gKiAyMDA2MDMyOSAgIDEyODA2OSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNTAzICAgMTI2ODE5IHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA1MjQgICAxMzExMzIgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKiAyMDA3MDcyMyAgIDE5NDQzNCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbiwgQ2hlY2sgZm9yIG5vbi1leGlzdGluZyBFQVIgd2l0aCBjb250ZW50IG5vdCBkZWxldGVkCi0gKiAyMDA3MTIxOAkgIDIwMDE5MyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA3MTIyMSAgIDIxMzcyNiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzAxMjMgICAyMTYzNDUgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODAyMTIgICAyMDg3OTUgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIFBldGVycywgV1Mgd2l6YXJkIGZyYW1ld29yayBzaG91bGQgc3VwcG9ydCBFSkIgMy4wCi0gKiAyMDA4MDIyOSAgIDIxODY5NiBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBBUElzIHVzaW5nIEVKQkFydGlmYWN0RWRpdCBub3QgYWJsZSB0byBkZWFsIHdpdGggc29tZSBFSkIgMy4wIGJlYW5zIHByb3Blcmx5Ci0gKiAyMDA4MTAwMSAgIDI0Mzg2OSBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBXZWIgU2VydmljZSB0b29scyBhbGxvd2luZyBtaXhlZCBKMkVFIGxldmVscwotICogMjAwOTAxMTQgICAyNjEwODcgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgTm8gd2F5IHRvIGdldCBtZXRhLWluZiBwYXRoIGZvciBhIHByb2plY3QKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklDb250YWluZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5qb2JzLklKb2JNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5qb2JzLkpvYjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwubG9nZ2VyLnByb3h5LkxvZ2dlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5hcHBsaWNhdGlvbi5pbnRlcm5hbC5vcGVyYXRpb25zLkFkZENvbXBvbmVudFRvRW50ZXJwcmlzZUFwcGxpY2F0aW9uRGF0YU1vZGVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuY29tbW9uYXJjaGl2ZWNvcmUuaW50ZXJuYWwuaGVscGVycy5BcmNoaXZlTWFuaWZlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuZWpiLkVKQkphcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamIuRUpCUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuZWpiLkVudGVycHJpc2VCZWFuOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5TZXNzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5TZXNzaW9uVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamIuY29tcG9uZW50Y29yZS51dGlsLkVKQkFydGlmYWN0RWRpdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5KMkVFVmVyc2lvbkNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5jb21tb24uSjJFRVZlcnNpb25VdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLmNvbW1vbi5jbGFzc3BhdGguSjJFRUNvbXBvbmVudENsYXNzcGF0aFVwZGF0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuaW50ZXJuYWwucGx1Z2luLklKMkVFTW9kdWxlQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLnByb2plY3QuSjJFRVByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUubW9kZWwuSU1vZGVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUubW9kZWwuTW9kZWxQcm92aWRlck1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUucHJvamVjdC5FYXJVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUucHJvamVjdC5mYWNldC5JSmF2YVByb2plY3RNaWdyYXRpb25EYXRhTW9kZWxQcm9wZXJ0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLnByb2plY3QuZmFjZXQuSmF2YVByb2plY3RNaWdyYXRpb25EYXRhTW9kZWxQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuamF2YWVlLmVqYi5FbnRlcnByaXNlQmVhbnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmphdmFlZS5lamIuU2Vzc2lvbkJlYW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5Db21wb25lbnRDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5Nb2R1bGVDb3JlTmF0dXJlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5kYXRhbW9kZWwucHJvcGVydGllcy5JQ3JlYXRlUmVmZXJlbmNlQ29tcG9uZW50c0RhdGFNb2RlbFByb3BlcnRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLmludGVybmFsLm9wZXJhdGlvbi5DcmVhdGVSZWZlcmVuY2VDb21wb25lbnRzRGF0YU1vZGVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLmludGVybmFsLnV0aWwuQ29tcG9uZW50VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5pbnRlcm5hbC51dGlsLklNb2R1bGVDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLnJlc291cmNlcy5JVmlydHVhbENvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuRGF0YU1vZGVsRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLklEYXRhTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmludGVybmFsLm9wZXJhdGlvbnMuUHJvamVjdENyZWF0aW9uRGF0YU1vZGVsUHJvdmlkZXJOZXc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSUZhY2V0ZWRQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLklQcm9qZWN0RmFjZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSVByb2plY3RGYWNldFZlcnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuUHJvamVjdEZhY2V0c01hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklNb2R1bGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlclV0aWw7Ci0vKioKLSAqIFRoaXMgY2xhc3MgY29udGFpbnMgc29tZSB1c2VmdWwgSjJFRSB1dGlsaXRpZXMgZm9yIFdlYiBzZXJ2aWNlcyBpbnRlcm5hbCB1c2UuCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBKMkVFVXRpbHMgewotCQotCXB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdFQiA9IDE7Ci0JcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRUpCID0gMjsKLQlwdWJsaWMgZmluYWwgc3RhdGljIGludCBBUFBDTElFTlQgPSA0OwotCXB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEVBUiA9IDg7CQotCQotCS8qKgotCSAqIFJldHVybnMgYW4gSVZpcnR1YWxDb21wb25lbnQKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElWaXJ0dWFsQ29tcG9uZW50IGdldFZpcnR1YWxDb21wb25lbnQoSVByb2plY3QgcHJvamVjdCl7Ci0JCXJldHVybiBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQl9Ci0JCi0JLyoqCi0JICogCi0JICogQHBhcmFtIHByb2plY3ROYW1lCi0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVZpcnR1YWxDb21wb25lbnQgZ2V0VmlydHVhbENvbXBvbmVudChTdHJpbmcgcHJvamVjdE5hbWUpewotCQlJUHJvamVjdCBwcm9qZWN0ID0gbnVsbDsKLQkJaWYgKHByb2plY3ROYW1lIT1udWxsICYmIHByb2plY3ROYW1lLmxlbmd0aCgpID4gMCApCi0gICAgICBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQkJCi0JCXJldHVybiBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQl9Ci0JCi0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBKMkVFIHZlcnNpb24KLQkgKiBAcGFyYW0gcCBwcm9qZWN0Ci0JICogQHJldHVybiBpbnQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGludCBnZXRKMkVFVmVyc2lvbihJUHJvamVjdCBwKXsKLQkJCi0JCVN0cmluZyB2ZXIgPSBKMkVFUHJvamVjdFV0aWxpdGllcy5nZXRKMkVFUHJvamVjdFZlcnNpb24ocCk7Ci0JCXJldHVybiBKMkVFVmVyc2lvblV0aWwuY29udmVydFZlcnNpb25TdHJpbmdUb0ludCh2ZXIpOwotCi0JCS8qCi0JCWludCBqMmVlVmVyID0gLTE7Ci0JCXRyeSB7Ci0gICAgICAgICAgSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwKTsKLSAgICAgICAgICBpZiAodmMhPW51bGwpewotICAgICAgICAgICAgajJlZVZlciA9IGdldEoyRUVWZXJzaW9uKHZjKTsKLSAgICAgICAgICB9Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLQkJCS8vaGFuZGxlIGV4Y2VwdGlvbgotCQl9Ci0JCXJldHVybiBqMmVlVmVyOwotCQkqLwotCX0KLQkKLQlwdWJsaWMgc3RhdGljIGludCBnZXRKMkVFVmVyc2lvbihJVmlydHVhbENvbXBvbmVudCBjaCl7Ci0gICAgICBpbnQgajJlZVZlciA9IC0xOwotICAgICAgLy9jaGVjayB0eXBlCi0gICAgICBpZiAoY2ghPW51bGwpewotICAgIAkgIElQcm9qZWN0IHByb2plY3QgPSBjaC5nZXRQcm9qZWN0KCk7Ci0gICAgCSAgajJlZVZlciA9IGdldEoyRUVWZXJzaW9uKHByb2plY3QpOwotICAgICAgfQotICAgICAgCi0gICAgICAvKiAgVXNlIG5ldyBBUEkgcHJvdmlkZWQgYnkgSjJFRSAKLSAgICAgIGlmIChjaCE9bnVsbCkgewotICAgICAgICBpZiAoaXNXZWJDb21wb25lbnQoY2gpKQotICAgICAgICAgIGoyZWVWZXIgPSBnZXRXZWJDb21wb25lbnRKMkVFVmVyc2lvbihjaCk7Ci0gICAgICAgIGVsc2UgaWYgKGlzQXBwQ2xpZW50Q29tcG9uZW50KGNoKSkKLSAgICAgICAgICBqMmVlVmVyID0gZ2V0QXBwQ2xpZW50Q29tcG9uZW50SjJFRVZlcnNpb24oY2gpOwotICAgICAgICBlbHNlIGlmIChpc0VKQkNvbXBvbmVudChjaCkpCi0gICAgICAgICAgajJlZVZlciA9IGdldEVKQkNvbXBvbmVudEoyRUVWZXJzaW9uKGNoKTsKLSAgICAgICAgZWxzZSBpZiAoaXNFQVJDb21wb25lbnQoY2gpKQotICAgICAgICAgIGoyZWVWZXIgPSBnZXRFQVJDb21wb25lbnRKMkVFVmVyc2lvbihjaCk7Ci0gICAgICB9Ci0gICAgICAqLwotICAgICAgCi0gICAgICByZXR1cm4gajJlZVZlcjsgCi0JfQotCQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgSjJFRVZlcnNpb24KLQkgKiBAcGFyYW0gcCBJUHJvamVjdAotCSAqIEByZXR1cm4gU3RyaW5nCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SjJFRVZlcnNpb25Bc1N0cmluZyhJUHJvamVjdCBwKXsKLQkJCi0JCVN0cmluZyB2ZXIgPSBKMkVFUHJvamVjdFV0aWxpdGllcy5nZXRKMkVFUHJvamVjdFZlcnNpb24ocCk7Ci0JCXJldHVybiAgdmVyICE9IG51bGwgPyB2ZXIgOiBudWxsOwotCQkgCi0JCS8qCi0JCWludCBqMmVlVmVyID0gZ2V0SjJFRVZlcnNpb24ocCk7Ci0JCWlmIChqMmVlVmVyIT0tMSl7Ci0JCQlyZXR1cm4gSjJFRVZlcnNpb25VdGlsLmdldEoyRUVUZXh0VmVyc2lvbihqMmVlVmVyKTsKLQkJfQotCQllbHNlIAotCQkJcmV0dXJuIG51bGw7Ci0JCQotCQkqLwotCX0KLQkKLQlwdWJsaWMgc3RhdGljIElWaXJ0dWFsQ29tcG9uZW50W10gZ2V0QWxsQ29tcG9uZW50cygpewotCQlMaXN0IHYgPSBuZXcgQXJyYXlMaXN0KCk7Ci0JCUlQcm9qZWN0W10gcHJvamVjdHMgPSBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKS5nZXRQcm9qZWN0cygpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IHByb2plY3RzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0c1tpXSk7Ci0gICAgICAgICAgaWYodmMgIT0gbnVsbCkKLSAgICAgICAgCSAgdi5hZGQodmMpOwotICAgICAgICAgIH0KLQotCQlyZXR1cm4gKElWaXJ0dWFsQ29tcG9uZW50W10pdi50b0FycmF5KG5ldyBJVmlydHVhbENvbXBvbmVudFswXSk7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgYWxsIHRoZSBFQVIgY29tcG9uZW50cyBpbiB0aGUgd29ya3NwYWNlCi0JICogQHJldHVybiBJVmlydHVhbENvbXBvbmVudFtdOyBlbXB0eSBpZiBub25lCi0JICovCi0JcHVibGljIHN0YXRpYyBJVmlydHVhbENvbXBvbmVudFtdIGdldEFsbEVBUkNvbXBvbmVudHMoKSB7Ci0JCUxpc3QgdiA9IG5ldyBBcnJheUxpc3QoKTsKLQkJSVByb2plY3RbXSBwcm9qZWN0cyA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldFByb2plY3RzKCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgcHJvamVjdHMubGVuZ3RoOyBpKyspIHsKLQkJCXRyeSB7Ci0JCQkJSVZpcnR1YWxDb21wb25lbnRbXSBjb21wb25lbnRzID0gZ2V0RUFSQ29tcG9uZW50c0Zyb21Qcm9qZWN0KHByb2plY3RzW2ldKTsKLQkJCQlmb3IgKGludCBqPTA7IGo8Y29tcG9uZW50cy5sZW5ndGg7IGorKykgewotCQkJCQlpZiAoY29tcG9uZW50c1tqXSE9bnVsbCkKLQkJCQkJCXYuYWRkKGNvbXBvbmVudHNbal0pOwotCQkJCX0KLQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJCQkvL2hhbmRsZSBleGNlcHRpb24KLQkJCX0KLQotCQl9Ci0JCXJldHVybiAoSVZpcnR1YWxDb21wb25lbnRbXSl2LnRvQXJyYXkobmV3IElWaXJ0dWFsQ29tcG9uZW50WzBdKTsKLQl9Ci0JCi0JcHVibGljIHN0YXRpYyBJVmlydHVhbENvbXBvbmVudFtdIGdldEFsbFdlYkNvbXBvbmVudHMoKXsKLQkJTGlzdCB2ID0gbmV3IEFycmF5TGlzdCgpOwotCQlJUHJvamVjdFtdIHByb2plY3RzID0gUmVzb3VyY2VVdGlscy5nZXRXb3Jrc3BhY2VSb290KCkuZ2V0UHJvamVjdHMoKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBwcm9qZWN0cy5sZW5ndGg7IGkrKykgewotCQkJdHJ5IHsKLQkJCQlJVmlydHVhbENvbXBvbmVudFtdIGNvbXBvbmVudHMgPSBnZXRXZWJDb21wb25lbnRzKHByb2plY3RzW2ldKTsKLQkJCQlmb3IgKGludCBqPTA7IGo8Y29tcG9uZW50cy5sZW5ndGg7IGorKykgewotCQkJCQlpZiAoY29tcG9uZW50c1tqXSE9bnVsbCkKLQkJCQkJCXYuYWRkKGNvbXBvbmVudHNbal0pOwotCQkJCX0KLQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJCQkvL2hhbmRsZSBleGNlcHRpb24KLQkJCX0KLQotCQl9Ci0JCXJldHVybiAoSVZpcnR1YWxDb21wb25lbnRbXSl2LnRvQXJyYXkobmV3IElWaXJ0dWFsQ29tcG9uZW50WzBdKTsJCQotCX0KLSAgICAKLSAgICBwdWJsaWMgc3RhdGljIElWaXJ0dWFsQ29tcG9uZW50W10gZ2V0QWxsRUpCQ29tcG9uZW50cygpewotICAgICAgICBMaXN0IHYgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgICAgIElQcm9qZWN0W10gcHJvamVjdHMgPSBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKS5nZXRQcm9qZWN0cygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHByb2plY3RzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIElWaXJ0dWFsQ29tcG9uZW50W10gY29tcG9uZW50cyA9IGdldEVKQkNvbXBvbmVudHMocHJvamVjdHNbaV0pOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxjb21wb25lbnRzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRzW2pdIT1udWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgdi5hZGQoY29tcG9uZW50c1tqXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgICAgICAgICAgIC8vaGFuZGxlIGV4Y2VwdGlvbgotICAgICAgICAgICAgfQotCi0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIChJVmlydHVhbENvbXBvbmVudFtdKXYudG9BcnJheShuZXcgSVZpcnR1YWxDb21wb25lbnRbMF0pOyAgICAgICAgCi0gICAgfSAgICAKLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBFQVIgY29tcG9uZW50cyBpbiBhIGdpdmVuIElQcm9qZWN0Ci0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuIGVtcHR5IGlmIG5vIEVBUiBjb21wb25lbnRzOyBtdXN0IG5vdCByZXR1cm4gbnVsbAotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVZpcnR1YWxDb21wb25lbnRbXSBnZXRFQVJDb21wb25lbnRzRnJvbVByb2plY3QoSVByb2plY3QgcHJvamVjdCl7Ci0JCS8vZ2V0IGFsbCBjb21wb25lbnRzIGluIHRoZSBwcm9qZWN0Ci0JCUxpc3QgdiA9IG5ldyBBcnJheUxpc3QoKTsJCQotCQl0cnkgewotCQkJSVZpcnR1YWxDb21wb25lbnQgY29tcG9uZW50ID0gQ29tcG9uZW50Q29yZS5jcmVhdGVDb21wb25lbnQocHJvamVjdCk7Ci0JCQlpZiAoY29tcG9uZW50ICE9IG51bGwgJiYgaXNFQVJDb21wb25lbnQoY29tcG9uZW50KSl7Ci0JCQkJdi5hZGQoY29tcG9uZW50KTsKLQkJCX0KLQkJfQotCQljYXRjaCAoRXhjZXB0aW9uIGUpewotCQkJLy9oYW5kbGUgZXhjZXB0aW9uCi0JCX0KLQkJCi0JCXJldHVybiAoSVZpcnR1YWxDb21wb25lbnRbXSl2LnRvQXJyYXkobmV3IElWaXJ0dWFsQ29tcG9uZW50WzBdKTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyBXZWIgY29tcG9uZW50cyBpbiBhIHByb2plY3QKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEByZXR1cm4gZW1wdHkgYXJyYXkgaWYgbm8gd2ViIGNvbXBvbmVudHM7IG11c3Qgbm90IHJldHVybiBudWxsCi0JICovCi0JcHVibGljIHN0YXRpYyBJVmlydHVhbENvbXBvbmVudFtdIGdldFdlYkNvbXBvbmVudHMoSVByb2plY3QgcHJvamVjdCl7Ci0JCQotCQkvL2dldCBhbGwgY29tcG9uZW50cyBpbiB0aGUgcHJvamVjdAotCQlMaXN0IHYgPSBuZXcgQXJyYXlMaXN0KCk7Ci0JCXRyeSB7Ci0JCQlJVmlydHVhbENvbXBvbmVudCBjb21wb25lbnQgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJCQotCQkJCWlmIChjb21wb25lbnQgIT0gbnVsbCAmJiBpc1dlYkNvbXBvbmVudChjb21wb25lbnQpKXsKLQkJCQkJdi5hZGQoY29tcG9uZW50KTsKLQkJCQl9CQkKLQotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSl7Ci0JCQkvL2hhbmRsZSBleGNlcHRpb24KLQkJfQotCQkKLQkJcmV0dXJuIChJVmlydHVhbENvbXBvbmVudFtdKXYudG9BcnJheShuZXcgSVZpcnR1YWxDb21wb25lbnRbMF0pOwotCX0gCi0JCi0JcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRXZWJDb21wb25lbnROYW1lcyhJUHJvamVjdCBwcm9qZWN0KXsKLQkJSVZpcnR1YWxDb21wb25lbnRbXSB2Y3MgPSBnZXRXZWJDb21wb25lbnRzKHByb2plY3QpOwotCQlyZXR1cm4gdG9Db21wb25lbnROYW1lc0FycmF5KHZjcyk7Ci0JfQotCQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0RUFSQ29tcG9uZW50TmFtZXMoSVByb2plY3QgcHJvamVjdCl7Ci0JCUlWaXJ0dWFsQ29tcG9uZW50W10gdmNzID0gZ2V0RUFSQ29tcG9uZW50c0Zyb21Qcm9qZWN0KHByb2plY3QpOwotCQlyZXR1cm4gdG9Db21wb25lbnROYW1lc0FycmF5KHZjcyk7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgYWxsIGNvbXBvbmVudHMgb2YgdHlwZSwgY29tcG9uZW50VHlwZSBpbiB0aGUgcHJvamVjdC4KLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEBwYXJhbSBjb21wb25lbnRUeXBlIGkuZS4gSjJFRVV0aWxzLldFQgotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElWaXJ0dWFsQ29tcG9uZW50W10gZ2V0Q29tcG9uZW50c0J5VHlwZShJUHJvamVjdCBwcm9qZWN0LCBpbnQgY29tcG9uZW50VHlwZSl7Ci0JCQotCQlMaXN0IHYgPSBuZXcgQXJyYXlMaXN0KCk7Ci0JCWlmICggKFdFQiAmIGNvbXBvbmVudFR5cGUpPT1XRUIgKXsKLQkJCUlWaXJ0dWFsQ29tcG9uZW50W10gd2ViVkMgPSBnZXRXZWJDb21wb25lbnRzKHByb2plY3QpOwotCQkJYWRkVG9BcnJheUxpc3RIZWxwZXIod2ViVkMsIHYpOwotCQl9Ci0JCWlmICggKEVKQiAmIGNvbXBvbmVudFR5cGUpPT1FSkIgKXsKLQkJCUlWaXJ0dWFsQ29tcG9uZW50W10gZWpiVkMgPSBnZXRFSkJDb21wb25lbnRzKHByb2plY3QpOwotCQkJYWRkVG9BcnJheUxpc3RIZWxwZXIoZWpiVkMsIHYpOwotCQl9Ci0JCWlmICggKEFQUENMSUVOVCAmIGNvbXBvbmVudFR5cGUpPT1BUFBDTElFTlQgKSB7Ci0JCQlJVmlydHVhbENvbXBvbmVudFtdIGFwcENsaWVudFZDID0gZ2V0QXBwQ2xpZW50Q29tcG9uZW50cyhwcm9qZWN0KTsKLQkJCWFkZFRvQXJyYXlMaXN0SGVscGVyKGFwcENsaWVudFZDLCB2KTsKLQkJfQotCQlpZiAoIChFQVIgJiBjb21wb25lbnRUeXBlKT09RUFSICkgewotCQkJSVZpcnR1YWxDb21wb25lbnRbXSBlYXJWQyA9IGdldEVBUkNvbXBvbmVudHNGcm9tUHJvamVjdChwcm9qZWN0KTsKLQkJCWFkZFRvQXJyYXlMaXN0SGVscGVyKGVhclZDLCB2KTsKLQkJfQotCQkKLQkJcmV0dXJuIChJVmlydHVhbENvbXBvbmVudFtdKXYudG9BcnJheShuZXcgSVZpcnR1YWxDb21wb25lbnRbMF0pOwkJCi0JfQotCQotCS8qKgotCSAqIFJldHVybnMgYWxsIGNvbXBvbmVudHMgb2YgdHlwZSwgY29tcG9uZW50VHlwZSBpbiB0aGUgcHJvamVjdC4KLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEBwYXJhbSBjb21wb25lbnRUeXBlSWQgYXMgZGVmaW5lZCBpbiBJTW9kdWxlQ29uc3RhbnRzLgotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElWaXJ0dWFsQ29tcG9uZW50W10gZ2V0Q29tcG9uZW50c0J5VHlwZShJUHJvamVjdCBwcm9qZWN0LCBTdHJpbmcgY29tcG9uZW50VHlwZUlkKXsKLQkJCi0JCS8vZ2V0IGFsbCBjb21wb25lbnRzIGluIHRoZSBwcm9qZWN0IG9mIHR5cGUgY29tcG9uZW50VHlwZUlkCi0JCUxpc3QgdiA9IG5ldyBBcnJheUxpc3QoKTsKLQkJdHJ5IHsKLQotCQkJSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsJCi0JCQlpZiAoIHZjICE9IG51bGwgJiYgSjJFRVByb2plY3RVdGlsaXRpZXMuaXNQcm9qZWN0T2ZUeXBlKHByb2plY3QsY29tcG9uZW50VHlwZUlkKSkKLQkJCXsKLQkJCQl2LmFkZCh2Yyk7Ci0JCQl9Ci0JCQkvL2lmIChpc1dlYkNvbXBvbmVudChwcm9qZWN0LCBjb21wb25lbnRzW2ldLmdldE5hbWUoKSkpewotCQkJCS8vdi5hZGQoY29tcG9uZW50c1tpXSk7Ci0JCQkvL30JCQotCi0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLQkJCS8vaGFuZGxlIGV4Y2VwdGlvbgotCQl9Ci0JCQotCQlyZXR1cm4gKElWaXJ0dWFsQ29tcG9uZW50W10pdi50b0FycmF5KG5ldyBJVmlydHVhbENvbXBvbmVudFswXSk7Ci0JfQotCQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0UHJvamVjdHNDb250YWluaW5nQ29tcG9uZW50T2ZUeXBlKFN0cmluZyBjb21wb25lbnRUeXBlSWQpCi0JewotCSAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsgCi0JICAgIElWaXJ0dWFsQ29tcG9uZW50W10gY29tcHMgPSBnZXRBbGxDb21wb25lbnRzKCk7Ci0JICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29tcHMubGVuZ3RoOyBpKyspIHsKLQkJCWlmIChKMkVFUHJvamVjdFV0aWxpdGllcy5pc1Byb2plY3RPZlR5cGUoY29tcHNbaV0uZ2V0UHJvamVjdCgpLGNvbXBvbmVudFR5cGVJZCkpCi0JCQl7Ci0JCQkJLy9BZGQgdGhlIHByb2plY3QgbmFtZSB0byB0aGUgdmVjdG9yIGlmIGl0IGhhcyBub3QgYmVlbiBhZGRlZCBhbHJlYWR5Ci0JCQkJU3RyaW5nIG5hbWUgPSBjb21wc1tpXS5nZXRQcm9qZWN0KCkuZ2V0TmFtZSgpOwotCQkJCWlmICghdi5jb250YWlucyhuYW1lKSkKLQkJCQl7Ci0JCQkJCXYuYWRkKG5hbWUpOwkKLQkJCQl9CQkgICAgICAgIAkJCQotCQkJfQotCi0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKFN0cmluZ1tdKXYudG9BcnJheShuZXcgU3RyaW5nWzBdKTsKLQl9Ci0gICAKLQkvKioKLQkgKiBIZWxwZXIgbWV0aG9kIGZvciBnZXRDb21wb25lbnRzQnlUeXBlCi0JICogQHBhcmFtIHZjcwotCSAqIEBwYXJhbSB2ZWN0Ci0JICovCi0JcHJpdmF0ZSBzdGF0aWMgdm9pZCBhZGRUb0FycmF5TGlzdEhlbHBlcihJVmlydHVhbENvbXBvbmVudFtdIHZjcywgTGlzdCBhbCl7Ci0JCWZvciAoaW50IGk9MDtpPHZjcy5sZW5ndGg7aSsrKXsKLQkJCWFsLmFkZCh2Y3NbaV0pOwotCQl9CQkKLQl9Ci0KLQkKLQkvKioKLQkgKiBFc3NlbnRpYWxseSwgcmV0dXJucyBhbGwgcHJvamVjdHMgaW4gdGhlIHdvcmtzcGFjZQotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElQcm9qZWN0W10gZ2V0QWxsRmxleGlibGVQcm9qZWN0cygpewotCi0JCUxpc3QgdiA9IG5ldyBBcnJheUxpc3QoKTsKLQkJdHJ5IHsKLQkJCUlQcm9qZWN0W10gcHJvamVjdHMgPSBQcm9qZWN0VXRpbGl0aWVzLmdldEFsbFByb2plY3RzKCk7Ci0JCQlmb3IoaW50IGk9MDsgaTxwcm9qZWN0cy5sZW5ndGg7aSsrKSB7Ci0JCQkJaWYgKE1vZHVsZUNvcmVOYXR1cmUuZ2V0TW9kdWxlQ29yZU5hdHVyZShwcm9qZWN0c1tpXSkhPW51bGwpewotCQkJCQl2LmFkZChwcm9qZWN0c1tpXSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWNhdGNoKEV4Y2VwdGlvbiBlKXsKLQkJfQotCi0JCXJldHVybiAoSVByb2plY3RbXSl2LnRvQXJyYXkobmV3IElQcm9qZWN0WzBdKTsKLQl9Ci0JCi0JCi0JLyoqCi0JICogVHJ1ZSBpZiB0aGVyZSBleGlzdHMgYSB1bmRlcmx5aW5nIHJlc291cmNlIGJhY2tpbmcgdXAgdGhlIGNvbXBvbmVudCBhbmQgcHJvamVjdCAKLQkgKiBAcGFyYW0gcHJvamVjdE5hbWUKLQkgKiBAcGFyYW0gY29tcG9uZW50TmFtZQotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gZXhpc3RzKFN0cmluZyBwcm9qZWN0TmFtZSwgU3RyaW5nIGNvbXBvbmVudE5hbWUpewotCQlJUHJvamVjdCBwcm9qZWN0ID0gbnVsbDsKLQkJaWYgKHByb2plY3ROYW1lIT1udWxsICYmIHByb2plY3ROYW1lLmxlbmd0aCgpID4gMCApIHsKLQkJICBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotCQkKLQkJcmV0dXJuIGV4aXN0cyhwcm9qZWN0KTsKLQl9Ci0JCi0JLyoqCi0JICogVHJ1ZSBpZiB0aGVyZSBleGlzdHMgYSB1bmRlcmx5aW5nIHJlc291cmNlIGJhY2tpbmcgdXAgdGhlIGNvbXBvbmVudCBhbmQgcHJvamVjdAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBleGlzdHMoSVByb2plY3QgcHJvamVjdCl7Ci0JCWlmIChwcm9qZWN0IT1udWxsKSB7Ci0gICAgICAgICAgICBpZiAoIXByb2plY3QuZXhpc3RzKCkpCi0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotCQkJSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJCXJldHVybiB2Yy5leGlzdHMoKTsKLQkJfQotCQllbHNlIAotCQkJcmV0dXJuIGZhbHNlOwotCQkKLQl9CQotCi0JLyoqCi0JICogUmV0dXJucyBhbiBhcnJheSBvZiBFQVIgY29tcG9uZW50cyB3aGljaCBhcmUgcmVmZXJlbmNlZCBieSB0aGUgY29tcG9uZW50Ci0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBJVmlydHVhbENvbXBvbmVudFtdIGdldFJlZmVyZW5jaW5nRUFSQ29tcG9uZW50cyhJUHJvamVjdCBwcm9qZWN0KXsKLQkJTGlzdCBlYXJzID0gbmV3IEFycmF5TGlzdCgpOwotCQl0cnl7Ci0JCQlJVmlydHVhbENvbXBvbmVudCB0YXJnZXRWQyA9IENvbXBvbmVudENvcmUuY3JlYXRlQ29tcG9uZW50KHByb2plY3QpOwotCQkJCi0JCQlJVmlydHVhbENvbXBvbmVudFtdIGVhclZDID0gZ2V0QWxsRUFSQ29tcG9uZW50cygpOwotCQkJZm9yIChpbnQgaT0wOyBpPGVhclZDLmxlbmd0aDtpKyspIHsKLQkJCQlJVmlydHVhbFJlZmVyZW5jZVtdIHJlZnMgPSBlYXJWQ1tpXS5nZXRSZWZlcmVuY2VzKCk7Ci0JCQkJZm9yIChpbnQgaz0wO2s8cmVmcy5sZW5ndGg7aysrKSB7Ci0JCQkJCWlmICh0YXJnZXRWQy5lcXVhbHMocmVmc1trXS5nZXRSZWZlcmVuY2VkQ29tcG9uZW50KCkpKXsKLQkJCQkJCWVhcnMuYWRkKHJlZnNba10uZ2V0RW5jbG9zaW5nQ29tcG9uZW50KCkpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCi0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLQkJfQotCi0JCXJldHVybiAoSVZpcnR1YWxDb21wb25lbnRbXSllYXJzLnRvQXJyYXkobmV3IElWaXJ0dWFsQ29tcG9uZW50WzBdKTsKLQl9Ci0JCi0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgRUpCIENvbXBvbmVudHMgcmVmZXJlbmNlZCBieSB0aGUgZWFyCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBJVmlydHVhbENvbXBvbmVudFtdIGdldFJlZmVyZW5jaW5nRUpCQ29tcG9uZW50c0Zyb21FQVIoSVByb2plY3QgcHJvamVjdCl7Ci0KLQkJTGlzdCBlamJDb21wcyA9IG5ldyBBcnJheUxpc3QoKTsKLQkJdHJ5ewotCQkJSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJCUlWaXJ0dWFsUmVmZXJlbmNlW10gcmVmcyA9IHZjLmdldFJlZmVyZW5jZXMoKTsKLQkJCWZvciAoaW50IGk9MDtpPHJlZnMubGVuZ3RoO2krKyl7Ci0JCQkJaWYgKGlzRUpCQ29tcG9uZW50KHJlZnNbaV0uZ2V0UmVmZXJlbmNlZENvbXBvbmVudCgpKSl7Ci0JCQkJCWVqYkNvbXBzLmFkZChyZWZzW2ldLmdldFJlZmVyZW5jZWRDb21wb25lbnQoKSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWNhdGNoKEV4Y2VwdGlvbiBlKXsKLQkJfQotCQkKLQkJcmV0dXJuIChJVmlydHVhbENvbXBvbmVudFtdKWVqYkNvbXBzLnRvQXJyYXkobmV3IElWaXJ0dWFsQ29tcG9uZW50WzBdKTsJCQotCX0KLQotCQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBqYXIKLQkgKiBAcmV0dXJuICBWZWN0b3Igb2YgYmVhbiBTdHJpbmcgbmFtZXMuCi0JICogQGRlcHJlY2F0ZWQgdXNlIGdldEJlYW5OYW1lcyhJUHJvamVjdCBwcm9qZWN0KQotCSAqLwotCXB1YmxpYyBzdGF0aWMgVmVjdG9yIGdldEJlYW5OYW1lcyhFSkJKYXIgamFyKSB7Ci0JCS8vIFdlIGN1cnJlbnRseSBvbmx5IHN1cHBvcnQgU3RhdGVsZXNzIHNlc3Npb24gYmVhbnMuCi0JCS8vIExpc3QgY21wQmVhbnMgPSBqYXIuZ2V0QmVhbk1hbmFnZWRCZWFucygpOwotCQkvLyBMaXN0IGJtcEJlYW5zID0gamFyLmdldENvbnRhaW5lck1hbmFnZWRCZWFucygpOwotCQlMaXN0IHNlc3Npb25CZWFucyA9IGphci5nZXRTZXNzaW9uQmVhbnMoKTsKLQotCQlWZWN0b3IgbmFtZXMgPSBuZXcgVmVjdG9yKCk7Ci0KLQkJLy8gZ2V0QmVhbk5hbWVzKCBuYW1lcywgY21wQmVhbnMgKTsKLQkJLy8gZ2V0QmVhbk5hbWVzKCBuYW1lcywgYm1wQmVhbnMgKTsKLQkJZ2V0QmVhbk5hbWVzKG5hbWVzLCBzZXNzaW9uQmVhbnMpOwotCi0JCXJldHVybiBuYW1lczsKLQl9Ci0KLQkKLQkvKioKLQkgKiAKLQkgKiBAcGFyYW0gcHJvamVjdC0gdGhlIHByb2plY3QgdG8gZmluZCBzdGF0ZWxlc3Mgc2Vzc2lvbiBiZWFucyBpbgotCSAqIEByZXR1cm4gIFZlY3RvciBvZiBiZWFuIFN0cmluZyBuYW1lcy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFZlY3RvciBnZXRCZWFuTmFtZXMoSVByb2plY3QgcHJvamVjdCkgewotCQkvLyBXZSBjdXJyZW50bHkgb25seSBzdXBwb3J0IFN0YXRlbGVzcyBzZXNzaW9uIGJlYW5zLgotCQlWZWN0b3IgbmFtZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgCUlNb2RlbFByb3ZpZGVyIHByb3ZpZGVyID0gTW9kZWxQcm92aWRlck1hbmFnZXIuZ2V0TW9kZWxQcm92aWRlcihwcm9qZWN0KTsKLSAgICAJT2JqZWN0IG1vZGVsT2JqZWN0ID0gcHJvdmlkZXIuZ2V0TW9kZWxPYmplY3QoKTsKLQotICAgIAlMaXN0IHNlc3Npb25CZWFucyA9IG5ldyBWZWN0b3IoKTsKLQkJYm9vbGVhbiBpc0oyRUU1ID0gSjJFRVByb2plY3RVdGlsaXRpZXMuaXNKRUVQcm9qZWN0KHByb2plY3QpOwotCQlpZiAoaXNKMkVFNSkgewotICAgIAkJLy9hIEpFRTUgcHJvamVjdAotICAgIAkJRW50ZXJwcmlzZUJlYW5zIGVCZWFucyA9ICgob3JnLmVjbGlwc2UuanN0LmphdmFlZS5lamIuRUpCSmFyKW1vZGVsT2JqZWN0KS5nZXRFbnRlcnByaXNlQmVhbnMoKTsKLSAgICAJCWlmIChlQmVhbnMgIT1udWxsKQotICAgIAkJCXNlc3Npb25CZWFucyA9IGVCZWFucy5nZXRTZXNzaW9uQmVhbnMoKTsKLSAgICAJfSBlbHNlIHsKLSAgICAJCXNlc3Npb25CZWFucyA9ICgoRUpCSmFyKW1vZGVsT2JqZWN0KS5nZXRTZXNzaW9uQmVhbnMoKTsKLSAgICAJfQotCi0JCUl0ZXJhdG9yIGl0ZXJhdG9yID0gc2Vzc2lvbkJlYW5zLml0ZXJhdG9yKCk7Ci0KLQkJd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkgewotCQkJT2JqZWN0IG5leHQgPSAoaXRlcmF0b3IubmV4dCgpKTsKLQkJCWlmIChuZXh0IGluc3RhbmNlb2YgRW50ZXJwcmlzZUJlYW4pIHsKLQkJCQlFbnRlcnByaXNlQmVhbiBiZWFuID0gKEVudGVycHJpc2VCZWFuKSBuZXh0OwotCi0JCQkJaWYgKGJlYW4uaXNTZXNzaW9uKCkpIHsKLQkJCQkJU2Vzc2lvbiBzZXNzaW9uQmVhbiA9IChTZXNzaW9uKSBiZWFuOwotCi0JCQkJCWlmIChzZXNzaW9uQmVhbi5nZXRTZXNzaW9uVHlwZSgpLmdldFZhbHVlKCkgPT0gU2Vzc2lvblR5cGUuU1RBVEVMRVNTKSB7Ci0JCQkJCQluYW1lcy5hZGQoYmVhbi5nZXROYW1lKCkpOwotCQkJCQl9Ci0JCQkJfQotCQkJfSBlbHNlIHsKLQkJCQlTZXNzaW9uQmVhbiBiZWFuID0gKFNlc3Npb25CZWFuKSBuZXh0OwotCQkJCWlmIChiZWFuLmdldFNlc3Npb25UeXBlKCkuZ2V0VmFsdWUoKSA9PSBTZXNzaW9uVHlwZS5TVEFURUxFU1MpIHsKLQkJCQkJbmFtZXMuYWRkKGJlYW4uZ2V0RWpiTmFtZSgpKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIG5hbWVzOwotCX0KLQotCS8qKgotCSAqIEBwYXJhbSBuYW1lcwotCSAqICAgICAgICAgICAgc3BlY2lmaWVzIHRoYXQgdmVjdG9yIG9mIHN0cmluZ3MgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYWRkIGJlYW4KLQkgKiAgICAgICAgICAgIG5hbWVzIHRvLgotCSAqIEBwYXJhbSBiZWFucwotCSAqICAgICAgICAgICAgc3BlY2lmaWVzIGEgbGlzdCBvZiBiZWFucy4KLQkgKi8KLQlwcml2YXRlIHN0YXRpYyB2b2lkIGdldEJlYW5OYW1lcyhWZWN0b3IgbmFtZXMsIExpc3QgYmVhbnMpIHsKLQkJSXRlcmF0b3IgaXRlcmF0b3IgPSBiZWFucy5pdGVyYXRvcigpOwotCi0JCXdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpIHsKLQkJCUVudGVycHJpc2VCZWFuIGJlYW4gPSAoRW50ZXJwcmlzZUJlYW4pIChpdGVyYXRvci5uZXh0KCkpOwotCi0JCQlpZiAoYmVhbi5pc1Nlc3Npb24oKSkgewotCQkJCVNlc3Npb24gc2Vzc2lvbkJlYW4gPSAoU2Vzc2lvbikgYmVhbjsKLQotCQkJCWlmIChzZXNzaW9uQmVhbi5nZXRTZXNzaW9uVHlwZSgpLmdldFZhbHVlKCkgPT0gU2Vzc2lvblR5cGUuU1RBVEVMRVNTKSB7Ci0JCQkJCW5hbWVzLmFkZChiZWFuLmdldE5hbWUoKSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCS8qKgotCSAqIFVzZXMgamVtIFByb2plY3RVdGlsaXRpZXMgdG8gZ2V0IHRoZSBwcm9qZWN0Ci0JICogQHBhcmFtIGVqYiBlT2JqZWN0Ci0JICogQHJldHVybiBJUHJvamVjdAotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVByb2plY3QgZ2V0UHJvamVjdEZyb21FSkIoRW50ZXJwcmlzZUJlYW4gZWpiKSB7Ci0JCXJldHVybiBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoZWpiKTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGEgZGVmYXVsdCBKMkVFIDEuMyBFQVIgY29tcG9uZW50IGluIHRoZSB3b3Jrc3BhY2UKLQkgKiBAcmV0dXJuIEVBUiBjb21wb25lbnQgbmFtZQotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVZpcnR1YWxDb21wb25lbnQgZ2V0RGVmYXVsdDEzRUFSQ29tcG9uZW50KCl7Ci0JCUlWaXJ0dWFsQ29tcG9uZW50W10gYWxsRUFSQ29tcG9uZW50cyA9IGdldEFsbEVBUkNvbXBvbmVudHMoKTsKLQkJZm9yIChpbnQgaj0wO2o8YWxsRUFSQ29tcG9uZW50cy5sZW5ndGg7aisrKXsKLQkJCWludCBqMmVlVmVyc2lvbiA9IGdldEoyRUVWZXJzaW9uKGFsbEVBUkNvbXBvbmVudHNbal0pOwotCQkJaWYgKGoyZWVWZXJzaW9uID09IEoyRUVWZXJzaW9uQ29uc3RhbnRzLkoyRUVfMV8zX0lEKQotCQkJCSByZXR1cm4gYWxsRUFSQ29tcG9uZW50c1tqXTsKLQkJIH0JCi0JCXJldHVybiBudWxsOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGEgZGVmYXVsdCBKMkVFIDEuNCBFQVIgY29tcG9uZW50IGluIHRoZSB3b3Jrc3BhY2UKLQkgKiBAcmV0dXJuIEVBUiBjb21wb25lbnQgbmFtZQotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVZpcnR1YWxDb21wb25lbnQgZ2V0RGVmYXVsdDE0RUFSQ29tcG9uZW50KCl7Ci0JCUlWaXJ0dWFsQ29tcG9uZW50W10gYWxsRUFSQ29tcG9uZW50cyA9IGdldEFsbEVBUkNvbXBvbmVudHMoKTsKLQkJZm9yIChpbnQgaj0wO2o8YWxsRUFSQ29tcG9uZW50cy5sZW5ndGg7aisrKXsKLQkJCWludCBqMmVlVmVyc2lvbiA9IGdldEoyRUVWZXJzaW9uKGFsbEVBUkNvbXBvbmVudHNbal0pOwotCQkJaWYgKGoyZWVWZXJzaW9uID09IEoyRUVWZXJzaW9uQ29uc3RhbnRzLkoyRUVfMV80X0lEKQotCQkJCSByZXR1cm4gYWxsRUFSQ29tcG9uZW50c1tqXTsKLQkJIH0JCi0JCXJldHVybiBudWxsOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBmaXJzdCBFQVIgY29tcG9uZW50IG9mIHRoZSBKMkVFIHZlcnNpb24KLQkgKiBAcGFyYW0gdmVyc2lvbklkCi0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVZpcnR1YWxDb21wb25lbnQgZ2V0RUFSQ29tcG9uZW50b2ZKMkVFVmVyc2lvbihpbnQgdmVyc2lvbklkKXsKLQkJSVZpcnR1YWxDb21wb25lbnRbXSBjb21wb25lbnRzID0gZ2V0QWxsRUFSQ29tcG9uZW50cygpOwotCQlmb3IgKGludCBpPTA7IGk8Y29tcG9uZW50cy5sZW5ndGg7IGkrKyl7Ci0JCQlpZiAoZ2V0SjJFRVZlcnNpb24oY29tcG9uZW50c1tpXSkgPT0gdmVyc2lvbklkKQotCQkJCXJldHVybiBjb21wb25lbnRzW2ldOwotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQkKLQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBqMmVlVmVyc2lvbkludAotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRMYWJlbEZyb21KMkVFVmVyc2lvbihTdHJpbmcgajJlZVZlcnNpb25JbnQpIHsKLQkJaWYgKGoyZWVWZXJzaW9uSW50ID09IG51bGwgfHwgajJlZVZlcnNpb25JbnQubGVuZ3RoKCkgPT0gMCkKLQkJCXJldHVybiAiIjsKLQotCQlpbnQgajJlZVZlcnNpb24gPSBJbnRlZ2VyLnBhcnNlSW50KGoyZWVWZXJzaW9uSW50KTsKLQkJc3dpdGNoIChqMmVlVmVyc2lvbikgewotCQkJY2FzZSBKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfMl9JRCA6Ci0JCQkJcmV0dXJuIEoyRUVWZXJzaW9uQ29uc3RhbnRzLlZFUlNJT05fMV8yX1RFWFQ7Ci0JCQljYXNlIEoyRUVWZXJzaW9uQ29uc3RhbnRzLkoyRUVfMV8zX0lEIDoKLQkJCQlyZXR1cm4gSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8xXzNfVEVYVDsKLQkJCWNhc2UgSjJFRVZlcnNpb25Db25zdGFudHMuSjJFRV8xXzRfSUQgOgotCQkJCXJldHVybiBKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzFfNF9URVhUOwotCQkJZGVmYXVsdCA6Ci0JCQkJcmV0dXJuICIiOwotCQl9Ci0JfQotCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SjJFRVZlcnNpb25Gcm9tTGFiZWwoU3RyaW5nIGoyZWVMYWJlbCkgewotCQlTdHJpbmcgajJlZTEyU3RyaW5nID0gU3RyaW5nLnZhbHVlT2YoSjJFRVZlcnNpb25Db25zdGFudHMuSjJFRV8xXzJfSUQpOwotCQlTdHJpbmcgajJlZTEzU3RyaW5nID0gU3RyaW5nLnZhbHVlT2YoSjJFRVZlcnNpb25Db25zdGFudHMuSjJFRV8xXzNfSUQpOwotCQlTdHJpbmcgajJlZTE0U3RyaW5nID0gU3RyaW5nLnZhbHVlT2YoSjJFRVZlcnNpb25Db25zdGFudHMuSjJFRV8xXzRfSUQpOwotCQlpZiAoajJlZUxhYmVsLmVxdWFscyhKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzFfMl9URVhUKSkKLQkJCXJldHVybiBqMmVlMTJTdHJpbmc7Ci0KLQkJaWYgKGoyZWVMYWJlbC5lcXVhbHMoSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8xXzNfVEVYVCkpCi0JCQlyZXR1cm4gajJlZTEzU3RyaW5nOwotCi0JCWlmIChqMmVlTGFiZWwuZXF1YWxzKEoyRUVWZXJzaW9uQ29uc3RhbnRzLlZFUlNJT05fMV80X1RFWFQpKQotCQkJcmV0dXJuIGoyZWUxNFN0cmluZzsKLQotCQlyZXR1cm4gIiI7Ci0KLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyBTdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIEoyRUUgdmVyc2lvbnMKLQkgKiBAcGFyYW0gYVZlcnNpb24KLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SjJFRUludFZlcnNpb25Bc1N0cmluZyhTdHJpbmcgYVZlcnNpb24pIHsKLQkJaWYgKGFWZXJzaW9uLmVxdWFscyhKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzFfNF9URVhUKSkKLQkJCXJldHVybiBuZXcgSW50ZWdlcihKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfNF9JRCkudG9TdHJpbmcoKTsKLQkJaWYgKGFWZXJzaW9uLmVxdWFscyhKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzFfM19URVhUKSkKLQkJCXJldHVybiBuZXcgSW50ZWdlcihKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfM19JRCkudG9TdHJpbmcoKTsKLQkJaWYgKGFWZXJzaW9uLmVxdWFscyhKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzFfMl9URVhUKSkKLQkJCXJldHVybiBuZXcgSW50ZWdlcihKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfMl9JRCkudG9TdHJpbmcoKTsJCQotCQkvLyBkZWZhdWx0Ci0JCXJldHVybiBuZXcgSW50ZWdlcihKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfNF9JRCkudG9TdHJpbmcoKTsKLQl9CQotCi0JLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLQotCS8qKgotCSAqIAotCSAqIEByZXR1cm4KLQkgKiAKLQkgKiBAZGVwcmVjYXRlZCAgLy8gdXNlIGdldEFMTEVBUkNvbXBvbmVudHMKLQkgKi8KLQlwdWJsaWMgc3RhdGljIElQcm9qZWN0W10gZ2V0RUFSUHJvamVjdHMoKSB7Ci0JCVZlY3RvciB2ID0gbmV3IFZlY3RvcigpOwotCQlJUHJvamVjdFtdIHByb2plY3RzID0gUmVzb3VyY2VVdGlscy5nZXRXb3Jrc3BhY2VSb290KCkuZ2V0UHJvamVjdHMoKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBwcm9qZWN0cy5sZW5ndGg7IGkrKykgewotCQkJdHJ5IHsKLS8vCQkJCWlmIChwcm9qZWN0c1tpXS5oYXNOYXR1cmUoSUVBUk5hdHVyZUNvbnN0YW50cy5OQVRVUkVfSUQpKSB7Ci0JCQkJaWYgKFJlc291cmNlVXRpbHMuaXNFQVJQcm9qZWN0KHByb2plY3RzW2ldKSkgewotCQkJCQl2LmFkZChwcm9qZWN0c1tpXSk7Ci0JCQkJfQotCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCQllLnByaW50U3RhY2tUcmFjZSgpOwotCQkJCS8vaGFuZGxlIGV4Y2VwdGlvbgotCQkJfQotCi0JCX0KLQotCQlyZXR1cm4gKElQcm9qZWN0W10pdi50b0FycmF5KG5ldyBJUHJvamVjdFswXSk7Ci0JfQotCQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIGZpcnN0IEVBUiBwcm9qZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvamVjdCBhbmQgc2VydmVyCi0JICogQHBhcmFtIHNlcnZpY2VQcm9qZWN0Ci0JICogQHBhcmFtIHNlcnZlcgotCSAqIEByZXR1cm4KLQkgKiAKLQkgKiBAZGVwcmVjYXRlZCAgLy8gdG8gYmUgc2ltcGxpZmllZAotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVByb2plY3QgZ2V0RGVmYXVsdEVBUlByb2plY3QoSVByb2plY3Qgc2VydmljZVByb2plY3QsIElTZXJ2ZXIgc2VydmVyKSB7Ci0KLQkJSVByb2plY3RbXSBlYXJQcm9qZWN0cyA9IG51bGw7Ci0JCUlQcm9qZWN0IGVhciA9IG51bGw7Ci0KLQkJaWYgKHNlcnZpY2VQcm9qZWN0ICE9IG51bGwgJiYgc2VydmljZVByb2plY3QuZXhpc3RzKCkpIHsKLQkJCXRyeSB7Ci0KLQkJCQlib29sZWFuIGlzV2ViRUpCT3JBcHBDbGllbnQgPSBSZXNvdXJjZVV0aWxzLmlzV2ViUHJvamVjdChzZXJ2aWNlUHJvamVjdCkgLy9zZXJ2aWNlUHJvamVjdC5oYXNOYXR1cmUoSVdlYk5hdHVyZUNvbnN0YW50cy5KMkVFX05BVFVSRV9JRCkKLQkJCQkJCXx8ICBSZXNvdXJjZVV0aWxzLmlzRUpCUHJvamVjdChzZXJ2aWNlUHJvamVjdCkgLy9zZXJ2aWNlUHJvamVjdC5oYXNOYXR1cmUoSUVKQk5hdHVyZUNvbnN0YW50cy5OQVRVUkVfSUQpCi0JCQkJCQl8fCAgUmVzb3VyY2VVdGlscy5pc0FwcENsaWVudFByb2plY3Qoc2VydmljZVByb2plY3QpOy8vc2VydmljZVByb2plY3QuaGFzTmF0dXJlKElBcHBsaWNhdGlvbkNsaWVudE5hdHVyZUNvbnN0YW50cy5OQVRVUkVfSUQpOwotCQkJCWlmICghaXNXZWJFSkJPckFwcENsaWVudCkgewotCQkJCQlyZXR1cm4gbnVsbDsKLQkJCQl9Ci0KLQkJCQlJUHJvamVjdFtdIGVhcnMgPSBnZXRFQVJQcm9qZWN0cygpOwotCi0JCQkJLy8gc2VwYXJhdGUgRUFScyB3aGljaCBhcmUgYWxyZWFkeSBkZXBsb3llZCB0byB0aGUgZXhpc3RpbmcKLQkJCQkvLyBzZXJ2ZXIKLQkJCQlpZiAoZWFycyAhPSBudWxsICYmIGVhcnMubGVuZ3RoID49IDEpIHsKLQkJCQkJQXJyYXlMaXN0IHByZWZlcnJlZEVBUkxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0JCQkJCUFycmF5TGlzdCBzZWNvbmRhcnlFQVJMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IGVhcnMubGVuZ3RoOyBpKyspIHsKLQkJCQkJCWVhciA9IGVhcnNbaV07Ci0JCQkJCQlJTW9kdWxlIG1vZHVsZSA9IFJlc291cmNlVXRpbHMuZ2V0TW9kdWxlKGVhcik7Ci0JCQkJCQlpZiAobW9kdWxlICE9IG51bGwpIHsKLQkJCQkJCQlpZiAoc2VydmVyICE9IG51bGwKLQkJCQkJCQkJCXx8IFNlcnZlclV0aWwuY29udGFpbnNNb2R1bGUoc2VydmVyLAotCQkJCQkJCQkJCQltb2R1bGUsIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpKSB7Ci0JCQkJCQkJCXByZWZlcnJlZEVBUkxpc3QuYWRkKGVhcik7Ci0JCQkJCQkJfSBlbHNlIHsKLQkJCQkJCQkJc2Vjb25kYXJ5RUFSTGlzdC5hZGQoZWFyKTsKLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQkJLy8gYWRkIHNlY29uZGFyeUVBUkxpc3QgaXRlbXMgdG8gZW5kIG9mIHByaW1hcnkgbGlzdAotCQkJCQlmb3IgKGludCBqID0gMDsgaiA8IHNlY29uZGFyeUVBUkxpc3Quc2l6ZSgpOyBqKyspIHsKLQkJCQkJCXByZWZlcnJlZEVBUkxpc3QuYWRkKHNlY29uZGFyeUVBUkxpc3QuZ2V0KGopKTsKLQkJCQkJfQotCQkJCQkvLyB0b0FycmF5Ci0JCQkJCWlmIChwcmVmZXJyZWRFQVJMaXN0ICE9IG51bGwpIHsKLQkJCQkJCWVhclByb2plY3RzID0gKElQcm9qZWN0W10pIHByZWZlcnJlZEVBUkxpc3QudG9BcnJheShuZXcgSVByb2plY3RbMF0pOwotCQkJCQl9Ci0JCQkJfQotCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGNlKSB7Ci0JCQkJSUxvZyBsb2cgPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZUxvZygpOwotCQkJCWxvZy5sb2coSUxvZy5FUlJPUiwgNTAzOSwgSjJFRVV0aWxzLmNsYXNzLCAiZ2V0RUFSUHJvamVjdHMiLCBjZSk7Ci0KLQkJCX0KLQkJfQotCQlyZXR1cm4gZWFyUHJvamVjdHNbMF07Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgRUpCIENvbXBvbmVudHMgaW4gdGhlIHByb2plY3QKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElWaXJ0dWFsQ29tcG9uZW50W10gZ2V0RUpCQ29tcG9uZW50cyhJUHJvamVjdCBwcm9qZWN0KXsKLQkJCi0JCS8vZ2V0IGFsbCBjb21wb25lbnRzIGluIHRoZSBwcm9qZWN0Ci0JCUxpc3QgdiA9IG5ldyBBcnJheUxpc3QoKTsKLQkJSVZpcnR1YWxDb21wb25lbnQgY29tcG9uZW50ID0gQ29tcG9uZW50Q29yZS5jcmVhdGVDb21wb25lbnQocHJvamVjdCk7Ci0JCXRyeSB7Ci0JCQlpZiAoY29tcG9uZW50ICE9IG51bGwgJiYgaXNFSkJDb21wb25lbnQoY29tcG9uZW50KSl7Ci0JCQkJdi5hZGQoY29tcG9uZW50KTsKLQkJCX0JCi0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLQkJCS8vaGFuZGxlIGV4Y2VwdGlvbgotCQl9Ci0JCQotCQlyZXR1cm4gKElWaXJ0dWFsQ29tcG9uZW50W10pdi50b0FycmF5KG5ldyBJVmlydHVhbENvbXBvbmVudFswXSk7Ci0JfSAKLQkKLQkvKioKLQkgKiBHZXRzIHRoZSBBcHBsaWNhdGlvbiBDbGllbnQgY29tcG9uZW50cyBpbiBhIHByb2plY3QuCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBJVmlydHVhbENvbXBvbmVudFtdIGdldEFwcENsaWVudENvbXBvbmVudHMoSVByb2plY3QgcHJvamVjdCl7Ci0JCQotCQkvL2dldCBhbGwgY29tcG9uZW50cyBpbiB0aGUgcHJvamVjdAotCQlMaXN0IHYgPSBuZXcgQXJyYXlMaXN0KCk7Ci0JCXRyeSB7Ci0JCQlJVmlydHVhbENvbXBvbmVudCBjb21wb25lbnQgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJCQotCQkJCWlmIChjb21wb25lbnQgIT0gbnVsbCAmJiBpc0FwcENsaWVudENvbXBvbmVudChjb21wb25lbnQpKXsKLQkJCQkJdi5hZGQoY29tcG9uZW50KTsKLQkJCQl9CQotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSl7Ci0JCQkvL2hhbmRsZSBleGNlcHRpb24KLQkJfQotCQkKLQkJcmV0dXJuIChJVmlydHVhbENvbXBvbmVudFtdKXYudG9BcnJheShuZXcgSVZpcnR1YWxDb21wb25lbnRbMF0pOwotCX0gCQotCQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVZpcnR1YWxDb21wb25lbnRbXSBnZXRSZWZlcmVuY2luZ0VKQjIwQ29tcG9uZW50c0Zyb21FQVIoSVByb2plY3QgcHJvamVjdCl7Ci0JCSAKLQkJTGlzdCBlamJDb21wcyA9IG5ldyBBcnJheUxpc3QoKTsKLQkJdHJ5ewotCQkJSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJCUlWaXJ0dWFsUmVmZXJlbmNlW10gcmVmcyA9IHZjLmdldFJlZmVyZW5jZXMoKTsKLQkJCWZvciAoaW50IGk9MDsgaTxyZWZzLmxlbmd0aDtpKyspIHsKLQkJCQlpZiAoaXNFSkIyMENvbXBvbmVudChyZWZzW2ldLmdldFJlZmVyZW5jZWRDb21wb25lbnQoKSkpCi0JCQkJCWVqYkNvbXBzLmFkZChyZWZzW2ldLmdldFJlZmVyZW5jZWRDb21wb25lbnQoKSk7Ci0JCQl9Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLQkJfQotCQkKLQkJcmV0dXJuIChJVmlydHVhbENvbXBvbmVudFtdKWVqYkNvbXBzLnRvQXJyYXkobmV3IElWaXJ0dWFsQ29tcG9uZW50WzBdKTsJCQotCX0KLQkKLQkKLQkvKioKLQkgKiBVdGlsaXR5IG1ldGhvZCB0byBjb21iaW5lIHR3byBJUHJvamVjdFtdCi0JICogQHBhcmFtIHByb2plY3RBcnJheTEKLQkgKiBAcGFyYW0gcHJvamVjdEFycmF5MgotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElQcm9qZWN0W10gY29tYmluZVByb2plY3RBcnJheXMoSVByb2plY3RbXSBwcm9qZWN0QXJyYXkxLAotCQkJSVByb2plY3RbXSBwcm9qZWN0QXJyYXkyKSB7Ci0KLQkJLy8gY2hlY2sgaWYgZWl0aGVyIG9yIGJvdGggYXJyYXlzIGFyZSBudWxsLgotCQlpZiAocHJvamVjdEFycmF5MSA9PSBudWxsICYmIHByb2plY3RBcnJheTIgPT0gbnVsbCkKLQkJCXJldHVybiBudWxsOwotCQllbHNlIGlmIChwcm9qZWN0QXJyYXkxICE9IG51bGwgJiYgcHJvamVjdEFycmF5MiA9PSBudWxsKQotCQkJcmV0dXJuIHByb2plY3RBcnJheTE7Ci0JCWVsc2UgaWYgKHByb2plY3RBcnJheTEgPT0gbnVsbCAmJiBwcm9qZWN0QXJyYXkyICE9IG51bGwpCi0JCQlyZXR1cm4gcHJvamVjdEFycmF5MjsKLQotCQlJUHJvamVjdFtdIGNvbWJpbmVkUHJvamVjdHMgPSBuZXcgSVByb2plY3RbcHJvamVjdEFycmF5MS5sZW5ndGgKLQkJCQkrIHByb2plY3RBcnJheTIubGVuZ3RoXTsKLQotCQlTeXN0ZW0uYXJyYXljb3B5KHByb2plY3RBcnJheTEsIDAsIGNvbWJpbmVkUHJvamVjdHMsIDAsCi0JCQkJcHJvamVjdEFycmF5MS5sZW5ndGgpOwotCQlpZiAocHJvamVjdEFycmF5Mi5sZW5ndGggPiAwKSB7Ci0JCQlTeXN0ZW0uYXJyYXljb3B5KHByb2plY3RBcnJheTIsIDAsIGNvbWJpbmVkUHJvamVjdHMsCi0JCQkJCXByb2plY3RBcnJheTEubGVuZ3RoLCBwcm9qZWN0QXJyYXkyLmxlbmd0aCk7Ci0JCX0KLQotCQlyZXR1cm4gY29tYmluZWRQcm9qZWN0czsKLQl9Ci0KLQkvKioKLQkgKiAKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElWaXJ0dWFsQ29tcG9uZW50W10gZ2V0UmVmZXJlbmNpbmdXZWJDb21wb25lbnRzRnJvbUVBUihJUHJvamVjdCBwcm9qZWN0KXsKLQkJTGlzdCB3ZWJDb21wcyA9IG5ldyBBcnJheUxpc3QoKTsKLQkJdHJ5ewotCQkJSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJCUlWaXJ0dWFsUmVmZXJlbmNlW10gcmVmcyA9IHZjLmdldFJlZmVyZW5jZXMoKTsKLQkJCWZvciAoaW50IGk9MDsgaTxyZWZzLmxlbmd0aDtpKyspIHsKLQkJCQlpZiAoaXNXZWJDb21wb25lbnQocmVmc1tpXS5nZXRSZWZlcmVuY2VkQ29tcG9uZW50KCkpKQotCQkJCQl3ZWJDb21wcy5hZGQocmVmc1tpXS5nZXRSZWZlcmVuY2VkQ29tcG9uZW50KCkpOwotCQkJfQkJCQotCQl9Ci0JCWNhdGNoKEV4Y2VwdGlvbiBlKXsKLQkJfQotCQkKLQkJcmV0dXJuIChJVmlydHVhbENvbXBvbmVudFtdKXdlYkNvbXBzLnRvQXJyYXkobmV3IElWaXJ0dWFsQ29tcG9uZW50WzBdKTsJCi0JfQotCQotCi0JCi0JLyoqCi0JICogCi0JICogQHBhcmFtIGVqYkNvbXBvbmVudAotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNFSkIyMENvbXBvbmVudChJVmlydHVhbENvbXBvbmVudCBlamJDb21wb25lbnQpewotCQlyZXR1cm4gaXNFSkIyMENvbXBvbmVudChlamJDb21wb25lbnQuZ2V0UHJvamVjdCgpKTsKLQl9Ci0JCi0JLyoqCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzRUpCMjBDb21wb25lbnQoSVByb2plY3QgcHJvamVjdCl7Ci0JCWJvb2xlYW4gaXNFSkIgPSBmYWxzZTsKLQkJdHJ5IHsKLSAgICAgIElWaXJ0dWFsQ29tcG9uZW50IHZjID0gQ29tcG9uZW50Q29yZS5jcmVhdGVDb21wb25lbnQocHJvamVjdCk7Ci0JCSAgaWYgKEVKQkFydGlmYWN0RWRpdC5pc1ZhbGlkRUpCTW9kdWxlKHZjKSkgewotCQkJICBFSkJBcnRpZmFjdEVkaXQgIGVqYkVkaXQgPSBudWxsOwotCQkJICB0cnkgewotCQkJCSAgZWpiRWRpdCA9IEVKQkFydGlmYWN0RWRpdC5nZXRFSkJBcnRpZmFjdEVkaXRGb3JSZWFkKHZjKTsKLQkJCQkgIEVKQlJlc291cmNlIGVqYlJlcyA9IGVqYkVkaXQuZ2V0RUpCSmFyWG1pUmVzb3VyY2UoKTsKLQkJCQkgIGlmIChlamJSZXMuZ2V0TW9kdWxlVmVyc2lvbklEKCk9PSBKMkVFVmVyc2lvbkNvbnN0YW50cy5FSkJfMl8wX0lEKSB7Ci0JCQkJCSAgcmV0dXJuIHRydWU7Ci0JCQkJICB9Ci0JCQkgIH0KLQkJCSAgZmluYWxseSB7Ci0JCQkJICBpZiAoZWpiRWRpdCE9bnVsbCkKLQkJCQkJICBlamJFZGl0LmRpc3Bvc2UoKTsKLQkJCSAgfQotCQkgIH0KLQkJfQotCQljYXRjaChFeGNlcHRpb24gZXgpe30KLQkJCi0JCXJldHVybiBpc0VKQjsJCQkKLQl9Ci0KLQkKLQkvKioKLQkgKiBDaGVja3MgaWYgdGhlIGNvbXBvbmVudCBhdCBjb21wTmFtZSBpcyByZWZlcmVuY2VkIGJ5IHRoZSBlYXIgYXQgZWFyQ29tcE5hbWUKLQkgKiBAcGFyYW0gZWFyUHJvamVjdAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0NvbXBvbmVudEFzc29jaWF0ZWQoSVByb2plY3QgZWFyUHJvamVjdCwgSVByb2plY3QgcHJvamVjdCkgewotCQlJVmlydHVhbENvbXBvbmVudCB2YzEgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChlYXJQcm9qZWN0KTsKLQkJSVZpcnR1YWxDb21wb25lbnQgdmMyID0gQ29tcG9uZW50Q29yZS5jcmVhdGVDb21wb25lbnQocHJvamVjdCk7Ci0JCXJldHVybiBpc0NvbXBvbmVudEFzc29jaWF0ZWQodmMxLCB2YzIpOwotCX0KLQkKLQkvKioKLQkgKiBDaGVja3MgaWYgdGhlIGNvbXBvbmVudCBpcyByZWZlcmVuY2VkIGJ5IHRoZSBlYXIKLQkgKiBAcGFyYW0gZWFyIAotCSAqIEBwYXJhbSBjb21wb25lbnQKLQkgKiBAcmV0dXJuCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0NvbXBvbmVudEFzc29jaWF0ZWQoSVZpcnR1YWxDb21wb25lbnQgZWFyLCBJVmlydHVhbENvbXBvbmVudCBjb21wb25lbnQpewotCQlib29sZWFuIGlzQXNzb2NpYXRlZCA9IGZhbHNlOwotCQkKLQkJLy8gTm90ZTogbm90IGltcGxlbWVudGVkIGJ5IEoyRUUgeWV0Li4gdG8gYmUgdXNlZCBsYXRlci4KLQkJSVZpcnR1YWxSZWZlcmVuY2VbXSBjb21wUmVmcyA9IGVhci5nZXRSZWZlcmVuY2VzKCk7Ci0JCWlmIChjb21wUmVmcyE9IG51bGwpIHsKLQkJCWZvciAoaW50IGk9MDtpPGNvbXBSZWZzLmxlbmd0aDtpKyspewotCQkJCUlWaXJ0dWFsUmVmZXJlbmNlIHZyZWYgPSBjb21wUmVmc1tpXTsKLQkJCQlpZiAoY29tcG9uZW50LmVxdWFscyh2cmVmLmdldFJlZmVyZW5jZWRDb21wb25lbnQoKSkpCi0JCQkJCQlpc0Fzc29jaWF0ZWQgPSB0cnVlOwotCQkJfQotCQl9Ci0JCXJldHVybiBpc0Fzc29jaWF0ZWQ7Ci0JfQotCi0JLyoqCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcGFyYW0gZWFyUHJvamVjdAotCSAqLwotCXB1YmxpYyBzdGF0aWMgdm9pZCBhc3NvY2lhdGVDb21wb25lbnRUb0VBUihJUHJvamVjdCBwcm9qZWN0LCBJUHJvamVjdCBlYXJQcm9qZWN0KSB7Ci0JCQotICAgICAgICBJRGF0YU1vZGVsIGFkZENvbXBvbmVudFRvRUFSRGF0YU1vZGVsID0gRGF0YU1vZGVsRmFjdG9yeS5jcmVhdGVEYXRhTW9kZWwobmV3IEFkZENvbXBvbmVudFRvRW50ZXJwcmlzZUFwcGxpY2F0aW9uRGF0YU1vZGVsUHJvdmlkZXIoKSk7Ci0JCUlWaXJ0dWFsQ29tcG9uZW50IGVhckNvbXAgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChlYXJQcm9qZWN0KTsKLSAgICAgICAgYWRkQ29tcG9uZW50VG9FQVJEYXRhTW9kZWwuc2V0UHJvcGVydHkoSUNyZWF0ZVJlZmVyZW5jZUNvbXBvbmVudHNEYXRhTW9kZWxQcm9wZXJ0aWVzLlNPVVJDRV9DT01QT05FTlQsIGVhckNvbXApOwotICAgICAgICBMaXN0IG1vZExpc3QgPSAoTGlzdCkgYWRkQ29tcG9uZW50VG9FQVJEYXRhTW9kZWwuZ2V0UHJvcGVydHkoSUNyZWF0ZVJlZmVyZW5jZUNvbXBvbmVudHNEYXRhTW9kZWxQcm9wZXJ0aWVzLlRBUkdFVF9DT01QT05FTlRfTElTVCk7Ci0gICAgICAgIElWaXJ0dWFsQ29tcG9uZW50IHRhcmdldENvbXAgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLSAgICAgICAgbW9kTGlzdC5hZGQodGFyZ2V0Q29tcCk7Ci0JCWFkZENvbXBvbmVudFRvRUFSRGF0YU1vZGVsLnNldFByb3BlcnR5KElDcmVhdGVSZWZlcmVuY2VDb21wb25lbnRzRGF0YU1vZGVsUHJvcGVydGllcy5UQVJHRVRfQ09NUE9ORU5UX0xJU1QsIG1vZExpc3QpOwotICAgICAgICAKLQkJdHJ5IHsKLQkJCWFkZENvbXBvbmVudFRvRUFSRGF0YU1vZGVsLmdldERlZmF1bHRPcGVyYXRpb24oKS5leGVjdXRlKG51bGwsIG51bGwpOwotCQl9IGNhdGNoIChFeGVjdXRpb25FeGNlcHRpb24gZSkgewotCQkJTG9nZ2VyLmdldExvZ2dlcigpLmxvZyhlKTsKLQkJfQotICAgICAgICAgICAgCi0JfQotCSAvKioKLSAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgcHJvamVjdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGVhclByb2plY3Qgc2FmZWx5LgotICAgICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHByb2plY3QgaXMgYSBXZWIgcHJvamVjdCwgRUpCIHByb2plY3QsIG9yIEFwcENsaWVudAotICAgICAqIHByb2plY3QgdGhhdCBjYW4gc2FmZWx5IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgRUFSIHByb2plY3QuIAotICAgICAqIFJldHVybnMgZmFsc2UgaWYgdGhlIHByb2plY3QgaXMgYSBXZWIgcHJvamVjdCwgCi0gICAgICogRUpCIHByb2plY3QsIG9yIEFwcENsaWVudCBwcm9qZWN0IHRoYXQgY2Fubm90IGJlIGFzc29jaWF0ZWQgc2FmZWx5IHdpdGggdGhlIEVBUiBwcm9qZWN0LCBhbmQKLSAgICAgKiB0cnVlIGlmIHByb2plY3QgaXMgbm90IHJlY29nbml6ZWQgYXMgYSBXZWIsIEVKQiwgb3IKLSAgICAgKiBBcHBDbGllbnQgcHJvamVjdCwgYW5kIHR1cmUgaWYgZWFyUHJvamVjdCBpcyBub3QgcmVjb2duaXplZCBhcyBhbiBFQVIgcHJvamVjdC4KLSAgICAgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2FuQXNzb2NpYXRlUHJvamVjdFRvRUFSV2l0aG91dFdhcm5pbmcoSVByb2plY3QgcHJvamVjdCwgSVByb2plY3QgZWFyUHJvamVjdCkgewotCQkgIGJvb2xlYW4gdG9SZXR1cm4gPSB0cnVlOwotCSAgICAgIGJvb2xlYW4gaXNXZWIgPSBpc1dlYkNvbXBvbmVudChwcm9qZWN0KTsKLQkgICAgICBib29sZWFuIGlzRUpCID0gaXNFSkJDb21wb25lbnQocHJvamVjdCk7Ci0JICAgICAgYm9vbGVhbiBpc0FwcENsaWVudCA9IGlzQXBwQ2xpZW50Q29tcG9uZW50KHByb2plY3QpOwotCSAgICAgIGJvb2xlYW4gaXNFQVIgPSBpc0VBUkNvbXBvbmVudChlYXJQcm9qZWN0KTsKLQkgICAgICBpZiAoKGlzV2ViIHx8IGlzRUpCIHx8IGlzQXBwQ2xpZW50KSAmJiBpc0VBUikKLQkgICAgICB7ICAgICAgICAKLQkgICAgICAgIHRyeQotCSAgICAgICAgewotCSAgICAgICAgICBJRmFjZXRlZFByb2plY3QgZlByb2plY3QgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5jcmVhdGUocHJvamVjdCk7Ci0JICAgICAgICAgIElGYWNldGVkUHJvamVjdCBmRWFyUHJvamVjdCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmNyZWF0ZShlYXJQcm9qZWN0KTsKLQkgICAgICAgICAgCi0JICAgICAgICAgIElQcm9qZWN0RmFjZXQgZWFyUGYgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRQcm9qZWN0RmFjZXQoSUoyRUVNb2R1bGVDb25zdGFudHMuSlNUX0VBUl9NT0RVTEUpOwotCSAgICAgICAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiBlYXJQZnYgPSBmRWFyUHJvamVjdC5nZXRJbnN0YWxsZWRWZXJzaW9uKGVhclBmKTsKLQkgICAgICAgICAgU3RyaW5nIGNvbXBhcmVWZXJzaW9uOwotCSAgICAgICAgICBMaXN0PElQcm9qZWN0RmFjZXRWZXJzaW9uPiBzdXBwb3J0ZWRGYWNldFZlcnNpb25MaXN0ID0gbmV3IEFycmF5TGlzdDxJUHJvamVjdEZhY2V0VmVyc2lvbj4oKTsKLQkgICAgICAgICAgaWYgKGlzV2ViKQotCSAgICAgICAgICB7Ci0JICAgICAgICAgICAgSVByb2plY3RGYWNldCB3ZWJQZiA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfV0VCX01PRFVMRSk7Ci0JICAgICAgICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gd2ViUGZ2ID0gZlByb2plY3QuZ2V0SW5zdGFsbGVkVmVyc2lvbih3ZWJQZik7Ci0JICAgICAgICAgICAgc3VwcG9ydGVkRmFjZXRWZXJzaW9uTGlzdCA9IEVhclV0aWxpdGllcy5nZXRTdXBwb3J0ZWRGYWNldHMoZWFyUGZ2LCB3ZWJQZik7Ci0JICAgICAgICAgICAgdG9SZXR1cm4gPSBmYWxzZTsKLQkgICAgICAgICAgICBmb3IgKElQcm9qZWN0RmFjZXRWZXJzaW9uIHN1cHBvcnRlZEZhY2V0VmVyc2lvbiA6IHN1cHBvcnRlZEZhY2V0VmVyc2lvbkxpc3QgKSB7Ci0JICAgICAgICAgICAgCUlQcm9qZWN0RmFjZXRWZXJzaW9uIG5leHQgPSBzdXBwb3J0ZWRGYWNldFZlcnNpb247Ci0JICAgICAgICAgICAgCWNvbXBhcmVWZXJzaW9uID0gd2ViUGZ2LmdldFZlcnNpb25TdHJpbmcoKTsKLQkgICAgICAgICAgICAJaWYgKG5leHQhPSBudWxsICYmIGNvbXBhcmVWZXJzaW9uIT1udWxsICYmIGNvbXBhcmVWZXJzaW9uLmNvbXBhcmVUbyhuZXh0LmdldFZlcnNpb25TdHJpbmcoKSkgPT0gMCkgeyAKLQkgICAgICAgICAgICAJCXRvUmV0dXJuID0gdHJ1ZTsKLQkgICAgICAgICAgICAJCWJyZWFrOwotCSAgICAgICAgICAgIAl9Ci0JICAgICAgICAgICAgfQotCSAgICAgICAgICAgIAotCSAgICAgICAgICB9Ci0JICAgICAgICAgIGVsc2UgaWYgKGlzRUpCKSAgICAgICAgICAgIAotCSAgICAgICAgICB7Ci0JICAgICAgICAgICAgSVByb2plY3RGYWNldCBlamJQZiA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfRUpCX01PRFVMRSk7Ci0JICAgICAgICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gZWpiUGZ2ID0gZlByb2plY3QuZ2V0SW5zdGFsbGVkVmVyc2lvbihlamJQZik7Ci0JICAgICAgICAgICAgc3VwcG9ydGVkRmFjZXRWZXJzaW9uTGlzdCA9IEVhclV0aWxpdGllcy5nZXRTdXBwb3J0ZWRGYWNldHMoZWFyUGZ2LCBlamJQZik7Ci0JICAgICAgICAgICAgdG9SZXR1cm4gPSBmYWxzZTsKLQkgICAgICAgICAgICBmb3IgKElQcm9qZWN0RmFjZXRWZXJzaW9uIHN1cHBvcnRlZEZhY2V0VmVyc2lvbiA6IHN1cHBvcnRlZEZhY2V0VmVyc2lvbkxpc3QgKSB7Ci0JICAgICAgICAgICAgCUlQcm9qZWN0RmFjZXRWZXJzaW9uIG5leHQgPSBzdXBwb3J0ZWRGYWNldFZlcnNpb247Ci0JICAgICAgICAgICAgCWNvbXBhcmVWZXJzaW9uID0gZWpiUGZ2LmdldFZlcnNpb25TdHJpbmcoKTsKLQkgICAgICAgICAgICAJaWYgKG5leHQhPSBudWxsICYmIGNvbXBhcmVWZXJzaW9uIT1udWxsICYmIGNvbXBhcmVWZXJzaW9uLmNvbXBhcmVUbyhuZXh0LmdldFZlcnNpb25TdHJpbmcoKSkgPT0gMCkgeyAKLQkgICAgICAgICAgICAJCXRvUmV0dXJuID0gdHJ1ZTsKLQkgICAgICAgICAgICAJCWJyZWFrOwotCSAgICAgICAgICAgIAl9Ci0JICAgICAgICAgICAgfQotCSAgICAgICAgICAgIAotCSAgICAgICAgICB9Ci0JICAgICAgICAgIGVsc2UgaWYgKGlzQXBwQ2xpZW50KQotCSAgICAgICAgICB7Ci0JICAgICAgICAgICAgSVByb2plY3RGYWNldCBhY1BmID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0UHJvamVjdEZhY2V0KElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9BUFBDTElFTlRfTU9EVUxFKTsKLQkgICAgICAgICAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiBhY1BmdiA9IGZQcm9qZWN0LmdldEluc3RhbGxlZFZlcnNpb24oYWNQZik7Ci0JICAgICAgICAgICAgc3VwcG9ydGVkRmFjZXRWZXJzaW9uTGlzdCA9IEVhclV0aWxpdGllcy5nZXRTdXBwb3J0ZWRGYWNldHMoZWFyUGZ2LCBhY1BmKTsKLQkgICAgICAgICAgICB0b1JldHVybiA9IGZhbHNlOwotCSAgICAgICAgICAgIGZvciAoSVByb2plY3RGYWNldFZlcnNpb24gc3VwcG9ydGVkRmFjZXRWZXJzaW9uIDogc3VwcG9ydGVkRmFjZXRWZXJzaW9uTGlzdCApIHsKLQkgICAgICAgICAgICAJSVByb2plY3RGYWNldFZlcnNpb24gbmV4dCA9IHN1cHBvcnRlZEZhY2V0VmVyc2lvbjsKLQkgICAgICAgICAgICAJY29tcGFyZVZlcnNpb24gPSBhY1Bmdi5nZXRWZXJzaW9uU3RyaW5nKCk7Ci0JICAgICAgICAgICAgCWlmIChuZXh0IT0gbnVsbCAmJiBjb21wYXJlVmVyc2lvbiE9bnVsbCAmJiBjb21wYXJlVmVyc2lvbi5jb21wYXJlVG8obmV4dC5nZXRWZXJzaW9uU3RyaW5nKCkpID09IDApIHsgCi0JICAgICAgICAgICAgCQl0b1JldHVybiA9IHRydWU7Ci0JICAgICAgICAgICAgCQlicmVhazsKLQkgICAgICAgICAgICAJfQotCSAgICAgICAgICAgIH0KLQotCSAgICAgICAgICB9IAotCSAgICAgICAgICAKLQkgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCSAgICAgICAgewotCSAgICAgICAgICAvL25vdCBtdWNoIHdlIGNhbiBkbyBoZXJlLCByZXR1cm4gd2hhdCB3ZSd2ZSBjYWxjdWxhdGVkIHRodXMgZmFyCi0JICAgICAgICB9ICAgICAgICAgCi0JICAgICAgfQotCi0JCQotCQlyZXR1cm4gdG9SZXR1cm47Ci0JCQotCX0KLSAgICAvKioKLSAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgcHJvamVjdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGVhclByb2plY3QuCi0gICAgICogQHJldHVybnMgSVN0YXR1cyBvZiBPSyBpZiB0aGUgcHJvamVjdCBpcyBhIFdlYiBwcm9qZWN0LCBFSkIgcHJvamVjdCwgb3IgQXBwQ2xpZW50Ci0gICAgICogcHJvamVjdCB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIEVBUiBwcm9qZWN0LiAKLSAgICAgKiBSZXR1cm5zIElTdGF0dXMgd2l0aCBhbiBFUlJPUiBzZXZlcml0eSBpZiB0aGUgcHJvamVjdCBpcyBhIFdlYiBwcm9qZWN0LCAKLSAgICAgKiBFSkIgcHJvamVjdCwgb3IgQXBwQ2xpZW50IHByb2plY3QgdGhhdCBjYW5ub3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBFQVIgcHJvamVjdC4gCi0gICAgICogV2hlbiBhbiBJU3RhdHVzIG9mIHNldmVyaXR5IEVSUk9SIGlzIHJldHVybmVkLCB0aGUgSVN0YXR1cycgbWVzc2FnZSB3aWxsIGNvbnRhaW4gdGhlIAotICAgICAqIGxvd2VzdCBKMkVFIGxldmVsIHRoYXQgdGhpcyBwcm9qZWN0IHJlcXVpcmVzIG9uIGFuIEVBUi4KLSAgICAgKiBSZXR1cm5zIGFuIElTdGF0dXMgd2l0aCBzZXZlcml0eSBPSyBpZiBwcm9qZWN0IGlzIG5vdCByZWNvZ25pemVkIGFzIGEgV2ViLCBFSkIsIG9yCi0gICAgICogQXBwQ2xpZW50IHByb2plY3Qgb3IgaWYgZWFyUHJvamVjdCBpcyBub3QgcmVjb2duaXplZCBhcyBhbiBFQVIgcHJvamVjdC4KLSAgICAgKiBAZGVwcmVjYXRlZCB1c2UgY2FuQXNzb2NpYXRlUHJvamVjdFRvRUFSV2l0aG91dFdhcm5pbmcoSVByb2plY3QgcHJvamVjdCwgSVByb2plY3QgZWFyUHJvamVjdCkKLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIElTdGF0dXMgY2FuQXNzb2NpYXRlUHJvamVjdFRvRUFSKElQcm9qZWN0IHByb2plY3QsIElQcm9qZWN0IGVhclByb2plY3QpCi0gICAgewotICAgICAgLy9JZiBwcm9qZWN0IGNvbnRhaW5zIHRoZSB3ZWIsIGVqYiwgb3IgYXBwY2xpZW50IGZhY2V0LCBhbmQgZWFyUHJvamVjdCBjb250YWlucyB0aGUgCi0gICAgICAvL2VhciBmYWNldCwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoZSBmYWNldCB2ZXJzaW9ucyBhcmUgc3VjaCB0aGF0IHRoZSBwcm9qZWN0Ci0gICAgICAvL2NhbiBiZSBhZGRlZCB0byB0aGUgZWFyLiAgICAgIAotCi0gICAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgICBib29sZWFuIGlzV2ViID0gaXNXZWJDb21wb25lbnQocHJvamVjdCk7Ci0gICAgICBib29sZWFuIGlzRUpCID0gaXNFSkJDb21wb25lbnQocHJvamVjdCk7Ci0gICAgICBib29sZWFuIGlzQXBwQ2xpZW50ID0gaXNBcHBDbGllbnRDb21wb25lbnQocHJvamVjdCk7Ci0gICAgICBib29sZWFuIGlzRUFSID0gaXNFQVJDb21wb25lbnQoZWFyUHJvamVjdCk7Ci0gICAgICBpZiAoKGlzV2ViIHx8IGlzRUpCIHx8IGlzQXBwQ2xpZW50KSAmJiBpc0VBUikKLSAgICAgIHsgICAgICAgIAotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIElGYWNldGVkUHJvamVjdCBmUHJvamVjdCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmNyZWF0ZShwcm9qZWN0KTsKLSAgICAgICAgICBJRmFjZXRlZFByb2plY3QgZkVhclByb2plY3QgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5jcmVhdGUoZWFyUHJvamVjdCk7Ci0gICAgICAgICAgCi0gICAgICAgICAgSVByb2plY3RGYWNldCBlYXJQZiA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfRUFSX01PRFVMRSk7Ci0gICAgICAgICAgSVByb2plY3RGYWNldFZlcnNpb24gZWFyUGZ2ID0gZkVhclByb2plY3QuZ2V0SW5zdGFsbGVkVmVyc2lvbihlYXJQZik7Ci0gICAgICAgICAgU3RyaW5nIGVhclZlcnNpb24gPSBlYXJQZnYuZ2V0VmVyc2lvblN0cmluZygpOwotICAgICAgICAgIAotICAgICAgICAgIFN0cmluZyB3ZWJWZXJzaW9uID0gbnVsbDsKLSAgICAgICAgICBTdHJpbmcgZWpiVmVyc2lvbiA9IG51bGw7Ci0gICAgICAgICAgU3RyaW5nIGFjVmVyc2lvbiA9IG51bGw7Ci0gICAgICAgICAgICAKLSAgICAgICAgICBpZiAoaXNXZWIpCi0gICAgICAgICAgewotICAgICAgICAgICAgSVByb2plY3RGYWNldCB3ZWJQZiA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfV0VCX01PRFVMRSk7Ci0gICAgICAgICAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiB3ZWJQZnYgPSBmUHJvamVjdC5nZXRJbnN0YWxsZWRWZXJzaW9uKHdlYlBmKTsKLSAgICAgICAgICAgIHdlYlZlcnNpb24gPSB3ZWJQZnYuZ2V0VmVyc2lvblN0cmluZygpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChpc0VKQikgICAgICAgICAgICAKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBJUHJvamVjdEZhY2V0IGVqYlBmID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0UHJvamVjdEZhY2V0KElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FSkJfTU9EVUxFKTsKLSAgICAgICAgICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIGVqYlBmdiA9IGZQcm9qZWN0LmdldEluc3RhbGxlZFZlcnNpb24oZWpiUGYpOwotICAgICAgICAgICAgZWpiVmVyc2lvbiA9IGVqYlBmdi5nZXRWZXJzaW9uU3RyaW5nKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGlzQXBwQ2xpZW50KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIElQcm9qZWN0RmFjZXQgYWNQZiA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfQVBQQ0xJRU5UX01PRFVMRSk7Ci0gICAgICAgICAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiBhY1BmdiA9IGZQcm9qZWN0LmdldEluc3RhbGxlZFZlcnNpb24oYWNQZik7Ci0gICAgICAgICAgICBhY1ZlcnNpb24gPSBhY1Bmdi5nZXRWZXJzaW9uU3RyaW5nKCk7Ci0gICAgICAgICAgfSAKLSAgICAgICAgICAKLSAgICAgICAgICBpZiAoKGlzV2ViICYmIHdlYlZlcnNpb24uZXF1YWxzKEoyRUVWZXJzaW9uQ29uc3RhbnRzLlZFUlNJT05fMl8yX1RFWFQpKSB8fAotICAgICAgICAgICAgICAoaXNFSkIgJiYgZWpiVmVyc2lvbi5lcXVhbHMoSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8xXzFfVEVYVCkpIHx8Ci0gICAgICAgICAgICAgIChpc0FwcENsaWVudCAmJiBhY1ZlcnNpb24uZXF1YWxzKEoyRUVWZXJzaW9uQ29uc3RhbnRzLlZFUlNJT05fMV8yX1RFWFQpKQotICAgICAgICAgICAgICApCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFncmVhdGVyVGhhbk9yRXF1YWxUbyhlYXJWZXJzaW9uLCBKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzFfMl9URVhUKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8xXzJfVEVYVCk7Ci0gICAgICAgICAgICB9ICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKChpc1dlYiAmJiB3ZWJWZXJzaW9uLmVxdWFscyhKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzJfM19URVhUKSkgfHwKLSAgICAgICAgICAgICAgKGlzRUpCICYmIGVqYlZlcnNpb24uZXF1YWxzKEoyRUVWZXJzaW9uQ29uc3RhbnRzLlZFUlNJT05fMl8wX1RFWFQpKSB8fAotICAgICAgICAgICAgICAoaXNBcHBDbGllbnQgJiYgYWNWZXJzaW9uLmVxdWFscyhKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzFfM19URVhUKSkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmICghZ3JlYXRlclRoYW5PckVxdWFsVG8oZWFyVmVyc2lvbiwgSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8xXzNfVEVYVCkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzFfM19URVhUKTsKLSAgICAgICAgICAgICAgfSAgICAgICAgICAgIAotICAgICAgICAgICAgfSAgICAgICAgICAKLSAgICAgICAgICBlbHNlIGlmICgoaXNXZWIgJiYgd2ViVmVyc2lvbi5lcXVhbHMoSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8yXzRfVEVYVCkpIHx8Ci0gICAgICAgICAgICAgIChpc0VKQiAmJiBlamJWZXJzaW9uLmVxdWFscyhKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzJfMV9URVhUKSkgfHwKLSAgICAgICAgICAgICAgKGlzQXBwQ2xpZW50ICYmIGFjVmVyc2lvbi5lcXVhbHMoSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8xXzRfVEVYVCkpCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAoIWdyZWF0ZXJUaGFuT3JFcXVhbFRvKGVhclZlcnNpb24sIEoyRUVWZXJzaW9uQ29uc3RhbnRzLlZFUlNJT05fMV80X1RFWFQpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8xXzRfVEVYVCk7Ci0gICAgICAgICAgICAgIH0gICAgICAgICAgICAKLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKQotICAgICAgICB7Ci0gICAgICAgICAgLy9JZiBmYWNldCBBUEkgdGhyb3dzIGEgQ29yZUV4Y2VwdGlvbiB3aGVuIHRyeWluZyB0byBjcmVhdGUgYW4gSUZhY2V0ZWRQcm9qZWN0IGZyb20gCi0gICAgICAgICAgLy9hbiBJUHJvamVjdCwgYW4gT0sgU3RhdHVzIHdpbGwgYmUgcmV0dXJuZWQgYW5kIGNsaWVudHMgb2YgdGhpcyB1dGlsaXR5IG1ldGhvZAotICAgICAgICAgIC8vd29uJ3QgcmFpc2UgYSB2YWxpZGF0aW9uIGVycm9yLgotICAgICAgICB9ICAgICAgICAgCi0gICAgICB9Ci0KLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotCi0JCi0gICAgLyoKLSAgICAgKiBAcGFyYW0gdmVyc2lvbkEgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGZvcm0gMS4yLjMKLSAgICAgKiBAcGFyYW0gdmVyc2lvbkEgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGZvcm0gMS4yLjMKLSAgICAgKiBAcmV0dXJuIGJvb2xlYW4gcmV0dXJucyB3aGV0aGVyIHZlcnNpb25BIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB2ZXJzaW9uQgotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gZ3JlYXRlclRoYW5PckVxdWFsVG8oU3RyaW5nIHZlcnNpb25BLCBTdHJpbmcgdmVyc2lvbkIpCi0gICAgewotICAgICAgaWYgKHZlcnNpb25BLmVxdWFscyh2ZXJzaW9uQikpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3RBID0gbmV3IFN0cmluZ1Rva2VuaXplcih2ZXJzaW9uQSwgIi4iKTsKLSAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0QiA9IG5ldyBTdHJpbmdUb2tlbml6ZXIodmVyc2lvbkIsICIuIik7Ci0KLSAgICAgICAgaW50IHNpemVBID0gc3RBLmNvdW50VG9rZW5zKCk7Ci0gICAgICAgIGludCBzaXplQiA9IHN0Qi5jb3VudFRva2VucygpOwotCi0gICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoc2l6ZUEgPCBzaXplQikKLSAgICAgICAgewotICAgICAgICAgIHNpemUgPSBzaXplQTsKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZQotICAgICAgICAgIHNpemUgPSBzaXplQjsKLQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIGludCBhID0gSW50ZWdlci5wYXJzZUludChzdEEubmV4dFRva2VuKCkpOwotICAgICAgICAgIGludCBiID0gSW50ZWdlci5wYXJzZUludChzdEIubmV4dFRva2VuKCkpOwotICAgICAgICAgIGlmIChhICE9IGIpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPiBiOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBzaXplQSA+IHNpemVCOwotICAgICAgfQotICAgIH0KLQkKLQkvKioKLSAgICogQHBhcmFtIHByb2plY3QKLSAgICogQHJldHVybgotICAgKi8KLQlwdWJsaWMgc3RhdGljIElQYXRoIGdldFdlYkluZlBhdGgoSVByb2plY3QgcHJvamVjdCl7Ci0JCQotCQlJVmlydHVhbENvbXBvbmVudCBjb21wb25lbnQgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJCi0JCS8vc2hvdWxkIFdFQi1JTkYgbG9jYXRpb24gYmUgcHVsbGVkIGluIGZyb20gdGhlIC5jb21wb25lbnQgZmlsZSByYXRoZXIgdGhhbiBoYXJkY29kZWQgaGVyZT8KLQkJSVZpcnR1YWxGb2xkZXIgd2ViSW5mRGlyID0gY29tcG9uZW50LmdldFJvb3RGb2xkZXIoKS5nZXRGb2xkZXIobmV3IFBhdGgoIi9XRUItSU5GIikpOwotCQlJUGF0aCBtb2R1bGVQYXRoID0gd2ViSW5mRGlyLmdldFdvcmtzcGFjZVJlbGF0aXZlUGF0aCgpOwotCQkKLQkJaWYgKCF3ZWJJbmZEaXIuZXhpc3RzKCkpCi0JCXsJCi0JCQl0cnkgCi0JCQl7CQotCQkJCXdlYkluZkRpci5jcmVhdGUoMCxudWxsKTsJCQkJCi0JCQl9Ci0JCQljYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKQotCQkJe30KLQkJfQkJCi0JCXJldHVybiBtb2R1bGVQYXRoOwotCX0KLQotCS8qKgotCSAgICogQHBhcmFtIHByb2plY3QKLQkgICAqIEByZXR1cm4KLQkgICAqLwotCQlwdWJsaWMgc3RhdGljIElQYXRoIGdldE1ldGFJbmZQYXRoKElQcm9qZWN0IHByb2plY3QpewotCQkJCi0JCQlJVmlydHVhbENvbXBvbmVudCBjb21wb25lbnQgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJCQotCQkJLy9zaG91bGQgTUVUQS1JTkYgbG9jYXRpb24gYmUgcHVsbGVkIGluIGZyb20gdGhlIC5jb21wb25lbnQgZmlsZSByYXRoZXIgdGhhbiBoYXJkY29kZWQgaGVyZT8KLQkJCUlWaXJ0dWFsRm9sZGVyIG1ldGFJbmZEaXIgPSBjb21wb25lbnQuZ2V0Um9vdEZvbGRlcigpLmdldEZvbGRlcihuZXcgUGF0aCgiL01FVEEtSU5GIikpOwotCQkJSVBhdGggbW9kdWxlUGF0aCA9IG1ldGFJbmZEaXIuZ2V0V29ya3NwYWNlUmVsYXRpdmVQYXRoKCk7Ci0JCQkKLQkJCWlmICghbWV0YUluZkRpci5leGlzdHMoKSkKLQkJCXsJCi0JCQkJdHJ5IAotCQkJCXsJCi0JCQkJCW1ldGFJbmZEaXIuY3JlYXRlKDAsbnVsbCk7CQkJCQotCQkJCX0KLQkJCQljYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKQotCQkJCXt9Ci0JCQl9CQkKLQkJCXJldHVybiBtb2R1bGVQYXRoOwotCQl9Ci0KLQkKLQkvKioKLQkgKiAKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEByZXR1cm4KLQkgKiAKLQkgKi8KLQlwdWJsaWMgc3RhdGljIElQYXRoIGdldEZpcnN0V2ViQ29udGVudFBhdGgoSVByb2plY3QgcHJvamVjdCl7Ci0JCQotCQlJUGF0aCBtb2R1bGVQYXRoID0gbnVsbDsKLQkJdHJ5IHsKLSAgICAgICAgICBJVmlydHVhbENvbXBvbmVudCB2YyA9IENvbXBvbmVudENvcmUuY3JlYXRlQ29tcG9uZW50KHByb2plY3QpOwotCQkgIGlmIChNb2R1bGVDb3JlTmF0dXJlLmlzRmxleGlibGVQcm9qZWN0KHByb2plY3QpKSB7Ci0gICAgICAgICAgICBtb2R1bGVQYXRoID0gdmMuZ2V0Um9vdEZvbGRlcigpLmdldFdvcmtzcGFjZVJlbGF0aXZlUGF0aCgpOwotCQkgIH0KLQkJfQotCQljYXRjaChFeGNlcHRpb24gZXgpe30KLQotCQlyZXR1cm4gbW9kdWxlUGF0aDsJCQkKLQl9Ci0JCi0JLyoqCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBJUGF0aCBnZXRXZWJDb250ZW50UGF0aChJUHJvamVjdCBwcm9qZWN0KXsKLQkJSVZpcnR1YWxDb21wb25lbnQgY29tcG9uZW50ID0gQ29tcG9uZW50Q29yZS5jcmVhdGVDb21wb25lbnQocHJvamVjdCk7Ci0JCUlQYXRoIG1vZHVsZVBhdGggPSBjb21wb25lbnQuZ2V0Um9vdEZvbGRlcigpLmdldFdvcmtzcGFjZVJlbGF0aXZlUGF0aCgpOwotCQlyZXR1cm4gbW9kdWxlUGF0aDsKLQl9Ci0JCi0JLyoqCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuCi0JICogCi0JICovCi0JcHVibGljIHN0YXRpYyBJQ29udGFpbmVyIGdldEZpcnN0V2ViQ29udGVudENvbnRhaW5lcihJUHJvamVjdCBwcm9qZWN0KXsKLQkJSUNvbnRhaW5lciBjb250YWluZXIgPSBudWxsOwotCQlJUGF0aCBtb2R1bGVQYXRoID0gZ2V0Rmlyc3RXZWJDb250ZW50UGF0aChwcm9qZWN0KTsKLQkJSVJlc291cmNlIHJlcyA9IFJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKG1vZHVsZVBhdGgpOwotCQlpZiAocmVzIT1udWxsKXsKLQkJICBjb250YWluZXIgPSByZXMuZ2V0UGFyZW50KCk7Ci0JCX0JCQotCQkgIAotCQlyZXR1cm4gY29udGFpbmVyOwotCX0KLQkKLQkvKioKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElDb250YWluZXIgZ2V0V2ViQ29udGVudENvbnRhaW5lcihJUHJvamVjdCBwcm9qZWN0KXsKLQkJSUNvbnRhaW5lciBjb250YWluZXIgPSBudWxsOwotCQlJUGF0aCBtb2R1bGVQYXRoID0gZ2V0V2ViQ29udGVudFBhdGgocHJvamVjdCk7Ci0JCUlSZXNvdXJjZSByZXMgPSBSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZShtb2R1bGVQYXRoKTsKLQkJaWYgKHJlcyBpbnN0YW5jZW9mIElDb250YWluZXIpewotCQkgIGNvbnRhaW5lciA9IChJQ29udGFpbmVyKXJlczsKLQkJfQkJCi0JCXJldHVybiBjb250YWluZXI7Ci0JfQotCQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIGZpcnN0IE1vZHVsZSBuYW1lIAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqIAotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEZpcnN0V2ViTW9kdWxlTmFtZShJUHJvamVjdCBwcm9qZWN0KXsKLSAgICAgIFN0cmluZyBtb2R1bGVOYW1lID0gbnVsbDsKLSAgICAgIHRyeSB7Ci0gICAgICAgIElWaXJ0dWFsQ29tcG9uZW50IHZjID0gQ29tcG9uZW50Q29yZS5jcmVhdGVDb21wb25lbnQocHJvamVjdCk7Ci0gICAgICAgIG1vZHVsZU5hbWUgPSB2Yy5nZXROYW1lKCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaChFeGNlcHRpb24gZXgpe30KLSAgCi0gICAgICByZXR1cm4gbW9kdWxlTmFtZTsgIAkJCQotCX0KLQkKLQkKLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNXZWJDb21wb25lbnQoSVZpcnR1YWxDb21wb25lbnQgY29tcCl7Ci0JICAgIHJldHVybiBKMkVFUHJvamVjdFV0aWxpdGllcy5pc0R5bmFtaWNXZWJQcm9qZWN0KGNvbXAuZ2V0UHJvamVjdCgpKTsKLSAgfQotCQotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0VBUkNvbXBvbmVudChJVmlydHVhbENvbXBvbmVudCBjb21wKXsKLQkgICAgcmV0dXJuIEoyRUVQcm9qZWN0VXRpbGl0aWVzLmlzRUFSUHJvamVjdChjb21wLmdldFByb2plY3QoKSk7Ci0JfQotCi0JLyoqCi0JICogVHJ1ZSBpZiB0aGUgY29tcG9uZW50IGlzIGEgdmFsaWQgRUpCIGNvbXBvbmVudAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0VKQkNvbXBvbmVudChJUHJvamVjdCBwcm9qZWN0KSB7Ci0gICAgICBJVmlydHVhbENvbXBvbmVudCB2YyA9IENvbXBvbmVudENvcmUuY3JlYXRlQ29tcG9uZW50KHByb2plY3QpOwotICAgICAgaWYgKHZjICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBpc0VKQkNvbXBvbmVudCh2Yyk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7IAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0JfQotCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzRUpCQ29tcG9uZW50KElWaXJ0dWFsQ29tcG9uZW50IGNvbXApewotCQlyZXR1cm4gSjJFRVByb2plY3RVdGlsaXRpZXMuaXNFSkJQcm9qZWN0KGNvbXAuZ2V0UHJvamVjdCgpKTsKLQl9CQotCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzQXBwQ2xpZW50Q29tcG9uZW50KElWaXJ0dWFsQ29tcG9uZW50IGNvbXApewotCQlyZXR1cm4gSjJFRVByb2plY3RVdGlsaXRpZXMuaXNBcHBsaWNhdGlvbkNsaWVudFByb2plY3QoY29tcC5nZXRQcm9qZWN0KCkpOwotCX0KLQkKLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNKYXZhQ29tcG9uZW50KElWaXJ0dWFsQ29tcG9uZW50IGNvbXApewotCQlyZXR1cm4gSjJFRVByb2plY3RVdGlsaXRpZXMuaXNVdGlsaXR5UHJvamVjdChjb21wLmdldFByb2plY3QoKSk7Ci0JfQkKLQkKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRDb21wb25lbnRUeXBlSWQoSVByb2plY3QgcHJvamVjdCkgewotCQlyZXR1cm4gSjJFRVByb2plY3RVdGlsaXRpZXMuZ2V0SjJFRVByb2plY3RUeXBlKHByb2plY3QpOwotCX0KLSAgCi0JcHVibGljIHN0YXRpYyBTdHJpbmdbXSB0b0NvbXBvbmVudE5hbWVzQXJyYXkoSVZpcnR1YWxDb21wb25lbnRbXSBjb21wb25lbnRzKXsKLQkJU3RyaW5nW10gZWNOYW1lcyA9IG5ldyBTdHJpbmdbY29tcG9uZW50cy5sZW5ndGhdOwotCQlmb3IoaW50IGk9MDsgaTxjb21wb25lbnRzLmxlbmd0aDsgaSsrKXsKLQkJCWVjTmFtZXNbaV0gPSBjb21wb25lbnRzW2ldLmdldE5hbWUoKTsKLQkJfQotCQlyZXR1cm4gZWNOYW1lczsJCQotCX0KLQkKLQlwdWJsaWMgc3RhdGljIElQcm9qZWN0W10gdG9Qcm9qZWN0QXJyYXkoSVZpcnR1YWxDb21wb25lbnRbXSBjb21wb25lbnRzKXsKLQkJSVByb2plY3RbXSBwcm9qZWN0cyA9IG5ldyBJUHJvamVjdFtjb21wb25lbnRzLmxlbmd0aF07Ci0JCWZvciAoaW50IGk9MDsgaTxjb21wb25lbnRzLmxlbmd0aDsgaSsrKXsKLQkJCXByb2plY3RzW2ldID0gY29tcG9uZW50c1tpXS5nZXRQcm9qZWN0KCk7Ci0JCX0KLQkJcmV0dXJuIHByb2plY3RzOwotCX0KLQkKLQkvKioKLQkgKiBHaXZlbiBhIEoyRUUgbGV2ZWwsIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGhpZ2hlc3Qgc3VwcG9ydGVkIHNlcnZsZXQgbGV2ZWwKLQkgKiBAcGFyYW0gajJlZUxldmVsCi0JICogQHJldHVybiB3ZWIgYXBwIHZlcnNpb24KLQkgKi8KLQlwdWJsaWMgc3RhdGljIEludGVnZXIgZ2V0U2VydmxldFZlcnNpb25Gb3JKMkVFVmVyc2lvbihTdHJpbmcgajJlZUxldmVsKXsKLQkJaW50IGFWZXJzaW9uID0gSW50ZWdlci52YWx1ZU9mKGoyZWVMZXZlbCkuaW50VmFsdWUoKTsKLQkJc3dpdGNoIChhVmVyc2lvbikgewotCQljYXNlIEoyRUVWZXJzaW9uQ29uc3RhbnRzLkoyRUVfMV8yX0lEOgotCQkJcmV0dXJuIG5ldyBJbnRlZ2VyKEoyRUVWZXJzaW9uQ29uc3RhbnRzLldFQl8yXzJfSUQpOwotCi0JCWNhc2UgSjJFRVZlcnNpb25Db25zdGFudHMuSjJFRV8xXzNfSUQ6Ci0JCQlyZXR1cm4gbmV3IEludGVnZXIoSjJFRVZlcnNpb25Db25zdGFudHMuV0VCXzJfM19JRCk7Ci0KLQkJY2FzZSBKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfNF9JRDoKLQkJCXJldHVybiBuZXcgSW50ZWdlcihKMkVFVmVyc2lvbkNvbnN0YW50cy5XRUJfMl80X0lEKTsKLQkJCQotCQlkZWZhdWx0OgotCQkJcmV0dXJuIG5ldyBJbnRlZ2VyKEoyRUVWZXJzaW9uQ29uc3RhbnRzLldFQl8yXzNfSUQpOwotCQl9CQkKLQl9Ci0JCi0JLyoqCi0JICogR2l2ZW4gYSBKMkVFIGxldmVsLCB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBoaWdoZXN0IHN1cHBvcnRlZCBFSkIgdmVyc2lvbgotCSAqIEBwYXJhbSBqMmVlTGV2ZWwKLQkgKiBAcmV0dXJuIGVqYiBzcGVjIHZlcnNpb24KLQkgKi8KLQlwdWJsaWMgc3RhdGljIEludGVnZXIgZ2V0RUpCVmVyc2lvbkZvckoyRUVWZXJzaW9uKFN0cmluZyBqMmVlTGV2ZWwpewotCQlpbnQgYVZlcnNpb24gPSBJbnRlZ2VyLnZhbHVlT2YoajJlZUxldmVsKS5pbnRWYWx1ZSgpOwotCQlzd2l0Y2ggKGFWZXJzaW9uKSB7Ci0JCWNhc2UgSjJFRVZlcnNpb25Db25zdGFudHMuSjJFRV8xXzJfSUQ6Ci0JCQlyZXR1cm4gbmV3IEludGVnZXIoSjJFRVZlcnNpb25Db25zdGFudHMuRUpCXzFfMV9JRCk7Ci0KLQkJY2FzZSBKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfM19JRDoKLQkJCXJldHVybiBuZXcgSW50ZWdlcihKMkVFVmVyc2lvbkNvbnN0YW50cy5FSkJfMl8wX0lEKTsKLQotCQljYXNlIEoyRUVWZXJzaW9uQ29uc3RhbnRzLkoyRUVfMV80X0lEOgotCQkJcmV0dXJuIG5ldyBJbnRlZ2VyKEoyRUVWZXJzaW9uQ29uc3RhbnRzLkVKQl8yXzFfSUQpOwotCQkJCi0JCWRlZmF1bHQ6Ci0JCQlyZXR1cm4gbmV3IEludGVnZXIoSjJFRVZlcnNpb25Db25zdGFudHMuRUpCXzJfMF9JRCk7Ci0JCX0JCQkKLQl9Ci0KLQkvKioKLQkgKiBUcnVlIGlmIHRoZSBjb21wb25lbnQgaXMgYSB2YWxpZCBKYXZhIGNvbXBvbmVudAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0phdmFDb21wb25lbnQoSVByb2plY3QgcHJvamVjdCkgewotCSAgSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLSAgICAgIGlmICh2YyAhPSBudWxsKQotICAgICAgewotCSAgICByZXR1cm4gaXNKYXZhQ29tcG9uZW50KHZjKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy9jaGVjayBpZiBpdCdzIGEgZmFjZXRlZCBwcm9qZWN0IHdpdGggb25seSB0aGUgSmF2YSBmYWNldC4KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBpZiAocHJvamVjdC5leGlzdHMoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBJRmFjZXRlZFByb2plY3QgZlByb2plY3QgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5jcmVhdGUocHJvamVjdCk7Ci0gICAgICAgICAgICBpZiAoZlByb2plY3QgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgU2V0IGZhY2V0cyA9IGZQcm9qZWN0LmdldFByb2plY3RGYWNldHMoKTsKLSAgICAgICAgICAgICAgaWYgKGZhY2V0cy5zaXplKCk9PTEpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJUHJvamVjdEZhY2V0VmVyc2lvbiBwZnYgPSAoSVByb2plY3RGYWNldFZlcnNpb24pZmFjZXRzLml0ZXJhdG9yKCkubmV4dCgpOwotICAgICAgICAgICAgICAgIGlmIChwZnYuZ2V0UHJvamVjdEZhY2V0KCkuZ2V0SWQoKS5lcXVhbHMoSU1vZHVsZUNvbnN0YW50cy5KU1RfSkFWQSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvL1RoaXMgaXMgbm90IGEgZmFjZXRlZCBwcm9qZWN0LiBDaGVjayBpZiB0aGlzIGlzIGEgc2ltcGxlIEphdmEgcHJvamVjdC4gICAgCi0gICAgICAgICAgICAgIGlmIChSZXNvdXJjZVV0aWxzLmlzSmF2YVByb2plY3QocHJvamVjdCkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgfSAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKQotICAgICAgICB7Ci0gICAgICAgICAgCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgIH0KLSAgICAgIAotICAgICAgcmV0dXJuIGZhbHNlOwotCX0KLQotCS8qKgotCSAqIFRydWUgaWYgdGhlIGNvbXBvbmVudCBpcyBhIHZhbGlkIFdlYiBjb21wb25lbnQKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNXZWJDb21wb25lbnQoSVByb2plY3QgcHJvamVjdCkgewotCSAgSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLSAgICAgIGlmICh2YyAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXR1cm4gaXNXZWJDb21wb25lbnQodmMpOyAgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0JCi0JfQotCi0JLyoqCi0JICogVHJ1ZSBpZiB0aGUgY29tcG9uZW50IGlzIGEgdHJ1ZSBBcHBsaWNhdGlvbiBjbGllbnQgY29tcG9uZW50Ci0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzQXBwQ2xpZW50Q29tcG9uZW50KElQcm9qZWN0IHByb2plY3QpIHsKLQkgIElWaXJ0dWFsQ29tcG9uZW50IHZjID0gQ29tcG9uZW50Q29yZS5jcmVhdGVDb21wb25lbnQocHJvamVjdCk7Ci0gICAgICBpZiAodmMgIT0gbnVsbCkKLSAgICAgIHsKLQkgIHJldHVybiBpc0FwcENsaWVudENvbXBvbmVudCh2Yyk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQl9Ci0KLQkvKioKLQkgKiBUcnVlIGlzIHRoZSBjb21wb25lbnQgaXMgYSB2YWxpZCBFQVIgY29tcG9uZW50Ci0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzRUFSQ29tcG9uZW50KElQcm9qZWN0IHByb2plY3QpewotCSAgSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLSAgICAgIGlmICh2YyAhPSBudWxsKQotICAgICAgewotCSAgcmV0dXJuIGlzRUFSQ29tcG9uZW50KHZjKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotCX0KLQkKLQlwdWJsaWMgc3RhdGljIElGb2xkZXIgZ2V0T3V0cHV0Q29udGFpbmVyUm9vdCAoSVZpcnR1YWxDb21wb25lbnQgY29tcG9uZW50KSB7Ci0JCXJldHVybiAoSUZvbGRlcilKMkVFUHJvamVjdFV0aWxpdGllcy5nZXRPdXRwdXRDb250YWluZXJzKGNvbXBvbmVudC5nZXRQcm9qZWN0KCkpWzBdOwotCX0KLQkKLQkvLyAxOTQ0MzQgLSBDaGVjayBmb3Igbm9uLWV4aXN0aW5nIEVBUiB3aXRoIGNvbnRlbnRzIHRoYXQncyBub3QgZGVsZXRlZCBwcmV2aW91c2x5Ci0JcHVibGljIHN0YXRpYyBJU3RhdHVzIGNhbkNyZWF0ZUVBUihJUHJvamVjdCBlYXJQcm9qZWN0KQotICAgIHsKLQkJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotCQlpZiggIWVhclByb2plY3QuZXhpc3RzKCkgKXsKLQkJCUlQYXRoIHBhdGggPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldExvY2F0aW9uKCk7Ci0JCQlwYXRoID0gcGF0aC5hcHBlbmQoZWFyUHJvamVjdC5nZXROYW1lKCkpOwotCQkJc3RhdHVzID0gUHJvamVjdENyZWF0aW9uRGF0YU1vZGVsUHJvdmlkZXJOZXcudmFsaWRhdGVFeGlzdGluZyhlYXJQcm9qZWN0LmdldE5hbWUoKSwgcGF0aC50b09TU3RyaW5nKCkpOwotCQl9Ci0JCXJldHVybiBzdGF0dXM7Ci0gICAgfQotCQotCi0JIHB1YmxpYyBzdGF0aWMgdm9pZCBhZGRKQVJPck1vZHVsZURlcGVuZGVuY3koSVByb2plY3QgcHJvamVjdCwgU3RyaW5nIHVyaSkgdGhyb3dzIElPRXhjZXB0aW9uLCBDb3JlRXhjZXB0aW9uCi0JICB7Ci0JICAgIGlmIChKMkVFVXRpbHMuaXNXZWJDb21wb25lbnQocHJvamVjdCkpCi0JICAgIHsKLQkgICAgICBBcmNoaXZlTWFuaWZlc3QgbWFuaWZlc3QgPSBKMkVFUHJvamVjdFV0aWxpdGllcy5yZWFkTWFuaWZlc3QocHJvamVjdCk7Ci0JICAgICAgbWFuaWZlc3QubWVyZ2VDbGFzc1BhdGgobmV3IFN0cmluZ1tde3VyaX0pOwotCSAgICAgIEoyRUVQcm9qZWN0VXRpbGl0aWVzLndyaXRlTWFuaWZlc3QocHJvamVjdCwgbWFuaWZlc3QpOwotCSAgICAgIGZvcmNlQ2xhc3NwYXRoVXBkYXRlKHByb2plY3QpOwotCSAgICB9Ci0JICB9Ci0JICAKLQkgIHB1YmxpYyBzdGF0aWMgdm9pZCBhZGRKYXZhUHJvamVjdEFzVXRpbGl0eUphcihJUHJvamVjdCBqYXZhUHJvamVjdCwgSVByb2plY3QgZWFyUHJvamVjdCxJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCi0JICB7Ci0JCSAgdHJ5IHsKLQkJCSAgSURhdGFNb2RlbCBtaWdyYXRpb25kbSA9IERhdGFNb2RlbEZhY3RvcnkuY3JlYXRlRGF0YU1vZGVsKG5ldyBKYXZhUHJvamVjdE1pZ3JhdGlvbkRhdGFNb2RlbFByb3ZpZGVyKCkpOwotCQkJICBtaWdyYXRpb25kbS5zZXRQcm9wZXJ0eShJSmF2YVByb2plY3RNaWdyYXRpb25EYXRhTW9kZWxQcm9wZXJ0aWVzLlBST0pFQ1RfTkFNRSwgamF2YVByb2plY3QuZ2V0TmFtZSgpKTsKLQkJCSAgbWlncmF0aW9uZG0uc2V0UHJvcGVydHkoSUphdmFQcm9qZWN0TWlncmF0aW9uRGF0YU1vZGVsUHJvcGVydGllcy5BRERfVE9fRUFSLCBCb29sZWFuLkZBTFNFKTsKLQkJCSAgbWlncmF0aW9uZG0uZ2V0RGVmYXVsdE9wZXJhdGlvbigpLmV4ZWN1dGUobW9uaXRvciwgbnVsbCk7Ci0JIAotCSAKLQkJCSAgSURhdGFNb2RlbCByZWZkbSA9IERhdGFNb2RlbEZhY3RvcnkuY3JlYXRlRGF0YU1vZGVsKG5ldyBDcmVhdGVSZWZlcmVuY2VDb21wb25lbnRzRGF0YU1vZGVsUHJvdmlkZXIoKSk7Ci0JCQkgIExpc3QgdGFyZ2V0Q29tcExpc3QgPSAoTGlzdCkgcmVmZG0uZ2V0UHJvcGVydHkoSUNyZWF0ZVJlZmVyZW5jZUNvbXBvbmVudHNEYXRhTW9kZWxQcm9wZXJ0aWVzLlRBUkdFVF9DT01QT05FTlRfTElTVCk7Ci0JIAotCQkJICBJVmlydHVhbENvbXBvbmVudCB0YXJnZXRjb21wb25lbnQgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChqYXZhUHJvamVjdCk7Ci0JCQkgIElWaXJ0dWFsQ29tcG9uZW50IHNvdXJjZWNvbXBvbmVudCA9IENvbXBvbmVudFV0aWxpdGllcy5nZXRDb21wb25lbnQoZWFyUHJvamVjdC5nZXROYW1lKCkpOwotCQkJICB0YXJnZXRDb21wTGlzdC5hZGQodGFyZ2V0Y29tcG9uZW50KTsKLQkgCi0JCQkgIHJlZmRtLnNldFByb3BlcnR5KElDcmVhdGVSZWZlcmVuY2VDb21wb25lbnRzRGF0YU1vZGVsUHJvcGVydGllcy5TT1VSQ0VfQ09NUE9ORU5ULHNvdXJjZWNvbXBvbmVudCApOwotCQkJICByZWZkbS5zZXRQcm9wZXJ0eShJQ3JlYXRlUmVmZXJlbmNlQ29tcG9uZW50c0RhdGFNb2RlbFByb3BlcnRpZXMuVEFSR0VUX0NPTVBPTkVOVF9MSVNULCB0YXJnZXRDb21wTGlzdCk7Ci0JCQkgIHJlZmRtLnNldFByb3BlcnR5KElDcmVhdGVSZWZlcmVuY2VDb21wb25lbnRzRGF0YU1vZGVsUHJvcGVydGllcy5UQVJHRVRfQ09NUE9ORU5UU19ERVBMT1lfUEFUSCwgICIvV0VCLUlORi9saWIiKTsKLQkJCSAgcmVmZG0uZ2V0RGVmYXVsdE9wZXJhdGlvbigpLmV4ZWN1dGUobW9uaXRvciwgbnVsbCk7Ci0JCQkJCSAgCi0JCSAgfWNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJICAKLQkJICB9Ci0JICB9Ci0JICAKLQkvL0ZvcmNpbmcgY2xhc3NwYXRoIHVwZGF0ZQotCSAgcHVibGljIHN0YXRpYyB2b2lkIGZvcmNlQ2xhc3NwYXRoVXBkYXRlIChJUHJvamVjdCBwcm9qZWN0KSB7Ci0JCSAgSjJFRUNvbXBvbmVudENsYXNzcGF0aFVwZGF0ZXIgY2xhc3NwYXRoVXBkYXRlciA9IEoyRUVDb21wb25lbnRDbGFzc3BhdGhVcGRhdGVyLmdldEluc3RhbmNlKCk7Ci0JCSAgQ29sbGVjdGlvbiBwcm9qQ29sbGVjdGlvbiA9IENvbGxlY3Rpb25zLnNpbmdsZXRvbihwcm9qZWN0KTsKLQkJICBjbGFzc3BhdGhVcGRhdGVyLmZvcmNlVXBkYXRlKHByb2pDb2xsZWN0aW9uLCB0cnVlKTsKLQkJICBJSm9iTWFuYWdlciBqbSA9IEpvYi5nZXRKb2JNYW5hZ2VyKCk7Ci0JCSAgdHJ5ewotCQkJICBqbS5qb2luKEoyRUVDb21wb25lbnRDbGFzc3BhdGhVcGRhdGVyLk1PRFVMRV9VUERBVEVfSk9CX05BTUUsIG51bGwpOwotCQkgIH1jYXRjaChFeGNlcHRpb24gZXhjKXt9Ci0JICB9Ci0JIC8qKgotICAgICAqIERldGVybWluZXMgdGhlIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfTU9EVUxFIGZhY2V0IHZlcnNpb24gdGhhdAotICAgICAqIG1hdGNoZXMgdGhlIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FQVJfTU9EVUxFIGZhY2V0IHZlcnNpb24KLSAgICAgKiBAcmV0dXJucyB0aGUgdmVyc2lvbiBTdHJpbmcgZm9yIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfTU9EVUxFIGZhY2V0LCBpZiB0aGVyZSBpcyBwcm9ibGVtCi0gICAgICogdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdmVyc2lvbiwgZWl0aGVyIHRoZSBkZWZhdWx0IHZlcnNpb24gb3IgdGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbgotICAgICAqIHdpbGwgYmUgcmV0dXJuZWQKLSAgICAgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRXZWJKMkVFVmVyc2lvbkZyb21FQVJKMkVFVmVyc2lvbihJUHJvamVjdCBlYXJQcm9qZWN0KSB7Ci0JCVN0cmluZyByZXR1cm5WZXJzaW9uID0gRWFyVXRpbGl0aWVzLkRZTkFNSUNfV0VCX0ZBQ0VULmdldERlZmF1bHRWZXJzaW9uKCkuZ2V0VmVyc2lvblN0cmluZygpOwotCQl0cnkgewotCQlyZXR1cm5WZXJzaW9uID0gRWFyVXRpbGl0aWVzLkRZTkFNSUNfV0VCX0ZBQ0VULmdldExhdGVzdFZlcnNpb24oKS5nZXRWZXJzaW9uU3RyaW5nKCk7Ci0JICAgIElGYWNldGVkUHJvamVjdCBmRWFyUHJvamVjdCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmNyZWF0ZShlYXJQcm9qZWN0KTsKLQkgICAgSVByb2plY3RGYWNldCBlYXJQZiA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfRUFSX01PRFVMRSk7Ci0JICAgIElQcm9qZWN0RmFjZXRWZXJzaW9uIGVhclBmdiA9IGZFYXJQcm9qZWN0LmdldEluc3RhbGxlZFZlcnNpb24oZWFyUGYpOwotCSAgICBJUHJvamVjdEZhY2V0IHdlYlBmID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0UHJvamVjdEZhY2V0KElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfTU9EVUxFKTsKLQkgICAgcmV0dXJuVmVyc2lvbj0gRWFyVXRpbGl0aWVzLmdldFN1cHBvcnRlZEZhY2V0cyhlYXJQZnYsIHdlYlBmKS5nZXQoMCkuZ2V0VmVyc2lvblN0cmluZygpOwotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJLy9ub3RoaW5nIHdlIGNhbiBkbyBoZXJlLCByZXR1cm4gd2hhdCB3ZSBoYXZlIGNhbGN1bGF0ZWQgdGh1cyBmYXIKLQkJfQotCSAgICByZXR1cm4gcmV0dXJuVmVyc2lvbjsKLQl9Ci0JIC8qKgotICAgICAqIERldGVybWluZXMgdGhlIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9BUFBDTElFTlRfTU9EVUxFIGZhY2V0IHZlcnNpb24gdGhhdAotICAgICAqIG1hdGNoZXMgdGhlIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FQVJfTU9EVUxFIGZhY2V0IHZlcnNpb24KLSAgICAgKiBAcmV0dXJucyB0aGUgdmVyc2lvbiBTdHJpbmcgZm9yIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9BUFBDTElFTlRfTU9EVUxFIGZhY2V0LCBpZiB0aGVyZSBpcyBwcm9ibGVtCi0gICAgICogdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdmVyc2lvbiwgZWl0aGVyIHRoZSBkZWZhdWx0IHZlcnNpb24gb3IgdGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbgotICAgICAqIHdpbGwgYmUgcmV0dXJuZWQKLSAgICAgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBcHBDbGllbnRKMkVFVmVyc2lvbkZyb21FQVJKMkVFVmVyc2lvbihJUHJvamVjdCBlYXJQcm9qZWN0KSB7Ci0JCVN0cmluZyByZXR1cm5WZXJzaW9uID0gRWFyVXRpbGl0aWVzLkFQUExJQ0FUSU9OX0NMSUVOVF9GQUNFVC5nZXREZWZhdWx0VmVyc2lvbigpLmdldFZlcnNpb25TdHJpbmcoKTsKLQkJdHJ5IHsKLQkJcmV0dXJuVmVyc2lvbiA9IEVhclV0aWxpdGllcy5BUFBMSUNBVElPTl9DTElFTlRfRkFDRVQuZ2V0TGF0ZXN0VmVyc2lvbigpLmdldFZlcnNpb25TdHJpbmcoKTsKLQkgICAgSUZhY2V0ZWRQcm9qZWN0IGZFYXJQcm9qZWN0ID0gUHJvamVjdEZhY2V0c01hbmFnZXIuY3JlYXRlKGVhclByb2plY3QpOwotCSAgICBJUHJvamVjdEZhY2V0IGVhclBmID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0UHJvamVjdEZhY2V0KElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FQVJfTU9EVUxFKTsKLQkgICAgSVByb2plY3RGYWNldFZlcnNpb24gZWFyUGZ2ID0gZkVhclByb2plY3QuZ2V0SW5zdGFsbGVkVmVyc2lvbihlYXJQZik7Ci0JICAgIElQcm9qZWN0RmFjZXQgYWNQZiA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfQVBQQ0xJRU5UX01PRFVMRSk7Ci0JICAgIHJldHVyblZlcnNpb249IEVhclV0aWxpdGllcy5nZXRTdXBwb3J0ZWRGYWNldHMoZWFyUGZ2LCBhY1BmKS5nZXQoMCkuZ2V0VmVyc2lvblN0cmluZygpOwotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJLy9ub3RoaW5nIHdlIGNhbiBkbyBoZXJlLCByZXR1cm4gd2hhdCB3ZSBoYXZlIGNhbGN1bGF0ZWQgdGh1cyBmYXIKLQkJfQotCSAgICByZXR1cm4gcmV0dXJuVmVyc2lvbjsKLQl9Ci0JIC8qKgotICAgICAqIERldGVybWluZXMgdGhlIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FSkJfTU9EVUxFIGZhY2V0IHZlcnNpb24gdGhhdAotICAgICAqIG1hdGNoZXMgdGhlIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FQVJfTU9EVUxFIGZhY2V0IHZlcnNpb24KLSAgICAgKiBAcmV0dXJucyB0aGUgdmVyc2lvbiBTdHJpbmcgZm9yIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FSkJfTU9EVUxFIGZhY2V0LCBpZiB0aGVyZSBpcyBwcm9ibGVtCi0gICAgICogdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdmVyc2lvbiwgZWl0aGVyIHRoZSBkZWZhdWx0IHZlcnNpb24gb3IgdGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbgotICAgICAqIHdpbGwgYmUgcmV0dXJuZWQKLSAgICAgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRFSkJKMkVFVmVyc2lvbkZyb21FQVJKMkVFVmVyc2lvbihJUHJvamVjdCBlYXJQcm9qZWN0KSB7Ci0JCVN0cmluZyByZXR1cm5WZXJzaW9uID0gRWFyVXRpbGl0aWVzLkVKQl9GQUNFVC5nZXREZWZhdWx0VmVyc2lvbigpLmdldFZlcnNpb25TdHJpbmcoKTsKLQkJdHJ5IHsKLQkJcmV0dXJuVmVyc2lvbiA9IEVhclV0aWxpdGllcy5FSkJfRkFDRVQuZ2V0TGF0ZXN0VmVyc2lvbigpLmdldFZlcnNpb25TdHJpbmcoKTsKLQkgICAgSUZhY2V0ZWRQcm9qZWN0IGZFYXJQcm9qZWN0ID0gUHJvamVjdEZhY2V0c01hbmFnZXIuY3JlYXRlKGVhclByb2plY3QpOwotCSAgICBJUHJvamVjdEZhY2V0IGVhclBmID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0UHJvamVjdEZhY2V0KElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9FQVJfTU9EVUxFKTsKLQkgICAgSVByb2plY3RGYWNldFZlcnNpb24gZWFyUGZ2ID0gZkVhclByb2plY3QuZ2V0SW5zdGFsbGVkVmVyc2lvbihlYXJQZik7Ci0JICAgIElQcm9qZWN0RmFjZXQgZWpiUGYgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRQcm9qZWN0RmFjZXQoSUoyRUVNb2R1bGVDb25zdGFudHMuSlNUX0VKQl9NT0RVTEUpOwotCSAgICByZXR1cm5WZXJzaW9uPSBFYXJVdGlsaXRpZXMuZ2V0U3VwcG9ydGVkRmFjZXRzKGVhclBmdiwgZWpiUGYpLmdldCgwKS5nZXRWZXJzaW9uU3RyaW5nKCk7Ci0JCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkvL25vdGhpbmcgd2UgY2FuIGRvIGhlcmUsIHJldHVybiB3aGF0IHdlIGhhdmUgY2FsY3VsYXRlZCB0aHVzIGZhcgotCQl9Ci0JICAgIHJldHVybiByZXR1cm5WZXJzaW9uOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL0phdmFNT0ZVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vSmF2YU1PRlV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NTVmZGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vSmF2YU1PRlV0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbjsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2gubmF0dXJlLkVNRk5hdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0ud29ya2JlbmNoLnV0aWxpdHkuSmVtUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0uamF2YS5KYXZhQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YVJlZkZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLmphdmEuSmF2YVZpc2liaWxpdHlLaW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLk1ldGhvZDsKLQotLyoqCi0qIFRoaXMgY2xhc3MgY29udGFpbnMgc29tZSB1c2VmdWwgdXRpbGl0aWVzIGZvciBkZWFsaW5nIHdpdGggdGhlIEphdmFNT0YKLSovCi0KLXB1YmxpYyBmaW5hbCBjbGFzcyBKYXZhTU9GVXRpbHMKLXsKLSAvKioKLSAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGNsYXNzIG9mIHRoZSBnaXZlbiBuYW1lIGlzIGxvYWRhYmxlIGluIHRoZSBnaXZlbgotICAqIHByb2plY3QuCi0gICogQHBhcmFtIGNsYXNzTmFtZSBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGNsYXNzCi0gICogQHBhcmFtIHByb2plY3QgVGhlIHByb2plY3QKLSAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIGNsYXNzIGlzIGxvYWRhYmxlIGFuZCBubyBleGNlcHRpb25zIGFyZSB0aHJvd24uIAotICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNDbGFzc0xvYWRhYmxlKFN0cmluZyBjbGFzc05hbWUsIElQcm9qZWN0IHByb2plY3QpIHRocm93cyBDb3JlRXhjZXB0aW9uCi0gIHsKLSAgIAlyZXR1cm4gaXNDbGFzc0xvYWRhYmxlKGdldEphdmFDbGFzcyhjbGFzc05hbWUscHJvamVjdCkpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzQ2xhc3NMb2FkYWJsZShKYXZhQ2xhc3MgamF2YUNsYXNzKQotICB7Ci0JcmV0dXJuIGphdmFDbGFzcy5pc0V4aXN0aW5nVHlwZSgpOyAgICAKLSAgfQotCi0gIC8qKgotICAqIERldGVybWluZSB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgY2xhc3MgaGFzIGEgcHVibGljIGNvbnN0cnVjdG9yCi0gICogd2l0aCBhbiBlbXB0eSBwYXJhbWV0ZXIgbGlzdC4KLSAgKiBAcGFyYW0gY2xhc3NOYW1lIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgY2xhc3MKLSAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdAotICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgY2xhc3MgaXMgbG9hZGFibGUgZnJvbSB0aGUgcHJvamVjdCBhbmQgdGhlIAotICAqICAgICAgICAgY2xhc3MgaGFzIGEgcHVibGljIGNvbnN0cnVjdG9yIHdpdGggYW4gZW1wdHkgcGFyYW1ldGVyIGxpc3QgIAotICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaGFzUHVibGljRGVmYXVsdEN0b3IoU3RyaW5nIGNsYXNzTmFtZSwgSVByb2plY3QgcHJvamVjdCkgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAgIHJldHVybiBoYXNQdWJsaWNEZWZhdWx0Q3RvcihnZXRKYXZhQ2xhc3MoY2xhc3NOYW1lLCBwcm9qZWN0KSk7Ci0gIH0KLQotCi0gcHVibGljIHN0YXRpYyBib29sZWFuIGhhc1B1YmxpY0RlZmF1bHRDdG9yKEphdmFDbGFzcyBqYXZhQ2xhc3MpCi0gIHsKLSAgIAotICAgIExpc3QgbWV0aG9kTGlzdCA9IGphdmFDbGFzcy5nZXRNZXRob2RzKCk7Ci0gICAgaWYgKG1ldGhvZExpc3Q9PW51bGwpCi0gICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEl0ZXJhdG9yIGlNZXRob2RzID0gbWV0aG9kTGlzdC5pdGVyYXRvcigpOwotICAgIGJvb2xlYW4gdXNlckRlZmluZWRDdG9yID0gZmFsc2U7Ci0gICAgd2hpbGUgKGlNZXRob2RzLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBNZXRob2QgdGhpc01ldGhvZCA9IChNZXRob2QpaU1ldGhvZHMubmV4dCgpOwotCi0gICAgICBpZiAodGhpc01ldGhvZC5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICB7Ci0gICAgICAgIHVzZXJEZWZpbmVkQ3RvciA9IHRydWU7IAotCi0gICAgICAgIC8vU2luY2UgdGhlIHVzZXIgaGFzIGRlZmluZWQgYSBjdG9yLCB0aGUgZGVmYXVsdCBjdG9yIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuCi0gICAgICAgIC8vV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdXNlciBoYXMgcHJvdmlkZWQgYSBwdWJsaWMgY3RvciB3aXRoIG5vIHBhcmFtZXRlcnMuCi0KLSAgICAgICAgLy9jaGVjayBpZiBwdWJsaWMKLSAgICAgICAgaWYgKHRoaXNNZXRob2QuZ2V0SmF2YVZpc2liaWxpdHkoKS5nZXRWYWx1ZSgpID09IEphdmFWaXNpYmlsaXR5S2luZC5QVUJMSUMpCi0gICAgICAgIHsKLSAgICAgICAgICAvL3NlZSBpZiBwYXJhbWV0ZXIgbGlzdCBpcyBlbXB0eQotICAgICAgICAgIExpc3QgcGFyYW1MaXN0ID0gdGhpc01ldGhvZC5nZXRQYXJhbWV0ZXJzKCk7Ci0gICAgICAgICAgaWYgKHBhcmFtTGlzdC5pc0VtcHR5KCkgKQotICAgICAgICAgIHsKLQkgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgIH0KLQotICAgIGlmICh1c2VyRGVmaW5lZEN0b3IpCi0gICAgewotCSAgcmV0dXJuIGZhbHNlOyAvL2lmIHRoZSB1c2VyIGRlZmluZWQgYSBjdG9yIGFuZCB3ZSBzdGlsbCBoYXZlbid0Ci0JICAJICAgICAgICAgICAgLy9yZXR1cm5lZCB0cnVlLCBub25lIG9mIHRoZW0gd2VyZSBwdWJsaWMgd2l0aCBubyBwYXJhbWV0ZXJzLgotICAgIH0KLSAgICBlbHNlCi0gICAgeyAKLSAgICAgICByZXR1cm4gdHJ1ZTsgICAgCi0gICAgfQotCi0gIH0KLSAgLyoqCi0gICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjbGFzcyBpbXBsZW1lbnRzIHRoZSBzcGVjaWZpZWQgaW50ZXJmYWNlLgotICAqIEBwYXJhbSBjbGFzc05hbWUgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBjbGFzcwotICAqIEBwYXJhbSBpbnRlcmZhY2VOYW1lIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgaW50ZXJmYWNlCi0gICogQHBhcmFtIHByb2plY3QgVGhlIHByb2plY3QKLSAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIGNsYXNzIGFuZCBpbnRlcmZhY2UgYXJlIGxvYWRhYmxlIGZyb20gdGhlIHByb2plY3QgYW5kCi0gICogICAgICAgICB0aGUgY2xhc3MgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlLgotICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaW1wbGVtZW50c0ludGVyZmFjZShTdHJpbmcgY2xhc3NOYW1lLCBTdHJpbmcgaW50ZXJmYWNlTmFtZSwgSVByb2plY3QgcHJvamVjdCkKLSAgCQkJdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAgcmV0dXJuIGltcGxlbWVudHNJbnRlcmZhY2UoZ2V0SmF2YUNsYXNzKGNsYXNzTmFtZSwgcHJvamVjdCksIGdldEphdmFDbGFzcyhpbnRlcmZhY2VOYW1lLCBwcm9qZWN0KSk7Ci0gIH0KLQotcHVibGljIHN0YXRpYyBib29sZWFuIGltcGxlbWVudHNJbnRlcmZhY2UoSmF2YUNsYXNzIGphdmFDbGFzcywgSmF2YUNsYXNzIGludGVyZmFjZUNsYXNzKQotICB7Ci0gICAKLSAgICBpZiAoIWphdmFDbGFzcy5pc0V4aXN0aW5nVHlwZSgpKSAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFpbnRlcmZhY2VDbGFzcy5pc0V4aXN0aW5nVHlwZSgpKSAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICByZXR1cm4gamF2YUNsYXNzLmltcGxlbWVudHNJbnRlcmZhY2UoaW50ZXJmYWNlQ2xhc3MpOwotICB9Ci0KLSAgLyoqCi0gICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjbGFzcyBleHRlbmRzIHRoZSBzcGVjaWZpZWQgc3VwZXJjbGFzcwotICAqIEBwYXJhbSBjbGFzc05hbWUgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBjbGFzcwotICAqIEBwYXJhbSBzdXBlckNsYXNzTmFtZSBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIHN1cGVyY2xhc3MKLSAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdAotICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgY2xhc3MgYW5kIHN1cGVyQ2xhc3MgYXJlIGxvYWRhYmxlIGZyb20gdGhlIHByb2plY3QgYW5kCi0gICogICAgICAgICB0aGUgY2xhc3MgZXh0ZW5kcyB0aGUgc3VwZXJDbGFzcwotICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZXh0ZW5kc0NsYXNzKFN0cmluZyBjbGFzc05hbWUsIFN0cmluZyBzdXBlckNsYXNzTmFtZSwgSVByb2plY3QgcHJvamVjdCkKLSAgICAgICAgIHRocm93cyBDb3JlRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gZXh0ZW5kc0NsYXNzKGdldEphdmFDbGFzcyhjbGFzc05hbWUscHJvamVjdCksIGdldEphdmFDbGFzcyhzdXBlckNsYXNzTmFtZSwgcHJvamVjdCkpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGV4dGVuZHNDbGFzcyhKYXZhQ2xhc3MgamF2YUNsYXNzLCBKYXZhQ2xhc3Mgc3VwZXJDbGFzcykKLSAgewotICAgIHJldHVybiBzdXBlckNsYXNzLmlzQXNzaWduYWJsZUZyb20oamF2YUNsYXNzKTsKLSAgfQotCi0gIC8qKgotICAqIERldGVybWluZSB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgY2xhc3MgaXMgYWN0dWFsbHkgYW4gaW50ZXJmYWNlCi0gICogQHBhcmFtIGNsYXNzTmFtZSBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGNsYXNzCi0gICogQHBhcmFtIHByb2plY3QgVGhlIHByb2plY3QKLSAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIGNsYXNzIGlzIGxvYWRhYmxlIGZyb20gdGhlIHByb2plY3QgYW5kIGlzIAotICAqICAgICAgICAgYWN0dWFsbHkgYW4gaW50ZXJmYWNlCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0ludGVyZmFjZShTdHJpbmcgY2xhc3NOYW1lLCBJUHJvamVjdCBwcm9qZWN0KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICB7Ci0gICAgIHJldHVybiBpc0ludGVyZmFjZShnZXRKYXZhQ2xhc3MoY2xhc3NOYW1lLCBwcm9qZWN0KSk7Ci0gIH0KLQotIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0ludGVyZmFjZShKYXZhQ2xhc3MgamF2YUNsYXNzKQotICB7Ci0gICAgICByZXR1cm4gamF2YUNsYXNzLmlzSW50ZXJmYWNlKCk7Ci0gIH0KLSBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaGFzQWJzdHJhY3RNZXRob2RzIChTdHJpbmcgY2xhc3NOYW1lLCBJUHJvamVjdCBwcm9qZWN0KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotIAl7Ci0JICAgIHJldHVybiBoYXNBYnN0cmFjdE1ldGhvZHMoZ2V0SmF2YUNsYXNzKGNsYXNzTmFtZSwgcHJvamVjdCkpOwotICAJfQotCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBoYXNBYnN0cmFjdE1ldGhvZHMgKEphdmFDbGFzcyBqYXZhQ2xhc3MpCi0gCXsKLQkgICBMaXN0IG1ldGhvZExpc3QgPSBqYXZhQ2xhc3MuZ2V0TWV0aG9kcygpOwotICAgICAgIGlmIChtZXRob2RMaXN0PT1udWxsKQotICAgICAgCXJldHVybiBmYWxzZTsKLQotCSAgIEl0ZXJhdG9yIGlNZXRob2RzID0gbWV0aG9kTGlzdC5pdGVyYXRvcigpOwotCSAgIHdoaWxlIChpTWV0aG9kcy5oYXNOZXh0KCkpCi0gICAgCXsKLSAgICAgIAkJTWV0aG9kIHRoaXNNZXRob2QgPSAoTWV0aG9kKWlNZXRob2RzLm5leHQoKTsKLQkJCWlmICggdGhpc01ldGhvZC5pc0Fic3RyYWN0KCkpIHJldHVybiB0cnVlOwotCSAgIAl9Ci0JCXJldHVybiBmYWxzZTsKLSAJfQotCi0gIC8qIAotICAgKiAKLSAgICovCi0gLyoqCi0gKiBAcGFyYW0gY2xhc3NRTmFtZSBGdWxseSBxdWFsaWZpZWQgY2xhc3NuYW1lIChwYWNrYWdlTmFtZSArIHR5cGVOYW1lKQotICogQHBhcmFtIHByb2plY3QKLSAqIEByZXR1cm4KLSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICovCi1wdWJsaWMgc3RhdGljIEphdmFDbGFzcyBnZXRKYXZhQ2xhc3MoU3RyaW5nIGNsYXNzUU5hbWUgLCBJUHJvamVjdCBwcm9qZWN0KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotIAl7Ci0JIAlFTUZOYXR1cmUgak1PRiA9IEplbVByb2plY3RVdGlsaXRpZXMuZ2V0SkVNX0VNRl9OYXR1cmUocHJvamVjdCwgdHJ1ZSk7Ci0JIAlyZXR1cm4gKEphdmFDbGFzcylKYXZhUmVmRmFjdG9yeS5lSU5TVEFOQ0UucmVmbGVjdFR5cGUoY2xhc3NRTmFtZSxqTU9GLmdldFJlc291cmNlU2V0KCkpOwotIAl9Ci0gCi0gLyoqCi0gKiBAcGFyYW0gcGFja2FnZU5hbWUKLSAqIEBwYXJhbSB0eXBlTmFtZQotICogQHBhcmFtIHByb2plY3QKLSAqIEByZXR1cm4KLSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICovCi1wdWJsaWMgc3RhdGljIEphdmFDbGFzcyBnZXRKYXZhQ2xhc3MoU3RyaW5nIHBhY2thZ2VOYW1lLCBTdHJpbmcgdHlwZU5hbWUgLCBJUHJvamVjdCBwcm9qZWN0KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkgCUVNRk5hdHVyZSBqTU9GID0gSmVtUHJvamVjdFV0aWxpdGllcy5nZXRKRU1fRU1GX05hdHVyZShwcm9qZWN0LCB0cnVlKTsKLQkgCXJldHVybiAoSmF2YUNsYXNzKUphdmFSZWZGYWN0b3J5LmVJTlNUQU5DRS5yZWZsZWN0VHlwZShwYWNrYWdlTmFtZSwgdHlwZU5hbWUsIGpNT0YuZ2V0UmVzb3VyY2VTZXQoKSk7Ci0JfQotCi0gcHVibGljIHN0YXRpYyBib29sZWFuIGlzVmFsaWRTRUlGaWxlKEphdmFDbGFzcyBiZWFuQ2xhc3MsIEphdmFDbGFzcyBzZWlDbGFzcykKLSAJewotIAkJaWYgKCFzZWlDbGFzcy5pc0ludGVyZmFjZSgpKQotIAkJCXJldHVybiBmYWxzZTsKLQotCQlWZWN0b3IgYmVhbk1ldGhvZHNMaXN0ID0gbmV3IFZlY3RvcigpOwotIAkJTGlzdCBiZWFuTWV0aG9kcyA9IGJlYW5DbGFzcy5nZXRNZXRob2RzKCk7Ci0JCUl0ZXJhdG9yIGJlYW5NZXRob2RzSXRlcmF0b3IgPSBiZWFuTWV0aG9kcy5pdGVyYXRvcigpOwotCSAgIAl3aGlsZSAoYmVhbk1ldGhvZHNJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgCXsKLSAgICAgIAkJTWV0aG9kIHRoaXNNZXRob2QgPSAoTWV0aG9kKWJlYW5NZXRob2RzSXRlcmF0b3IubmV4dCgpOwotCQkJYmVhbk1ldGhvZHNMaXN0LmFkZCh0aGlzTWV0aG9kLmdldE1ldGhvZEVsZW1lbnRTaWduYXR1cmUoKSk7Ci0JICAgCX0KLQotCQlMaXN0IHNlaU1ldGhvZHMgPSBzZWlDbGFzcy5nZXRNZXRob2RzKCk7Ci0gCQlpZiAoYmVhbk1ldGhvZHMgPT0gbnVsbCApIHsKLSAJCQlpZiAoIHNlaU1ldGhvZHMgPT0gbnVsbCkgcmV0dXJuIHRydWU7Ci0gCQkJZWxzZQlyZXR1cm4gZmFsc2U7Ci0gCQl9Ci0JCWlmIChzZWlNZXRob2RzID09IG51bGwpIHJldHVybiBmYWxzZTsKLQotCQlJdGVyYXRvciBzZWlNZXRob2RzSXRlcmF0b3IgPSBzZWlNZXRob2RzLml0ZXJhdG9yKCk7Ci0JICAgCXdoaWxlIChzZWlNZXRob2RzSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIAl7Ci0gICAgICAJCU1ldGhvZCB0aGlzTWV0aG9kID0gKE1ldGhvZClzZWlNZXRob2RzSXRlcmF0b3IubmV4dCgpOwotCQkJaWYgKCAhYmVhbk1ldGhvZHNMaXN0LmNvbnRhaW5zKHRoaXNNZXRob2QuZ2V0TWV0aG9kRWxlbWVudFNpZ25hdHVyZSgpKSkgewotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0KLQkgICAJfQotCQlyZXR1cm4gdHJ1ZTsKLSAJCQotIAl9Ci0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9SZXNvdXJjZVV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9SZXNvdXJjZVV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNmE0ODYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vUmVzb3VyY2VVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkxOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMzAgICAxMjQ2Njcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNDIxICAgMTM2NzYxIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICogMjAwNjA0MjQgICAxMTU2OTAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MDUwMyAgIDEyNjgxOSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDgwMTIyICAgMjE1ODY2IHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nIEhhCi0gKiAyMDA4MDMwMyAgIDIxODY5NiBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBBUElzIHVzaW5nIEVKQkFydGlmYWN0RWRpdCBub3QgYWJsZSB0byBkZWFsIHdpdGggc29tZSBFSkIgMy4wIGJlYW5zIHByb3Blcmx5Ci0gKiAyMDA4MDYyNiAgIDIzNjY0NSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS5uZXQuVVJMRW5jb2RlcjsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUNvbnRhaW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JV29ya3NwYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2VSb290OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklDbGFzc3BhdGhFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JSmF2YUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUphdmFQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklQYWNrYWdlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSVBhY2thZ2VGcmFnbWVudFJvb3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YUNvbnZlbnRpb25zOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFNb2RlbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuYXBwbGljYXRpb25jbGllbnQuY29tcG9uZW50Y29yZS51dGlsLkFwcENsaWVudEFydGlmYWN0RWRpdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5jb21wb25lbnRjb3JlLnV0aWwuRUFSQXJ0aWZhY3RFZGl0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5FbnRlcnByaXNlQmVhbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamIuY29tcG9uZW50Y29yZS51dGlsLkVKQkFydGlmYWN0RWRpdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5wcm9qZWN0LkoyRUVQcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qYXZhZWUuZWpiLlNlc3Npb25CZWFuOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5wbHVnaW4uV2ViU2VydmljZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUuQ29tcG9uZW50Q29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUuaW50ZXJuYWwuU3RydWN0dXJlRWRpdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUuaW50ZXJuYWwuV29ya2JlbmNoQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLnJlc291cmNlcy5JVmlydHVhbEZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JTW9kdWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5TZXJ2ZXJVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JVVJMUHJvdmlkZXI7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBjb250YWlucyB1c2VmdWwgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIEVjbGlwc2UgcmVzb3VyY2VzLgotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgUmVzb3VyY2VVdGlscyB7Ci0KLQkvLyBLZWVwcyB0aGUgSVdvcmtzcGFjZVJvb3QgaGFuZ2luZyBhcm91bmQuIFNlZSBnZXRXb3Jrc3BhY2VSb290KCkuCi0JcHJpdmF0ZSBzdGF0aWMgSVdvcmtzcGFjZVJvb3Qgcm9vdF8gPSBudWxsOwotCi0JLy8gS2VlcHMgdGhlIElXb3Jrc3BhY2UgaGFuZ2luZyBhcm91bmQuIFNlZSBnZXRXb3Jrc3BhY2UoKS4KLQotCXByaXZhdGUgc3RhdGljIElXb3Jrc3BhY2Ugd29ya3NwYWNlXyA9IG51bGw7Ci0KLQkvKioKLQkgKiBBcyByZXR1cm5lZCBieSB7QGxpbmsgI2dldFByb2plY3RUeXBlIGdldFByb2plY3RUeXBlKCl9LCBpbmRpY2F0ZXMgdGhhdAotCSAqIHRoZSBnaXZlbiBwcm9qZWN0IGhhcyBubyBKYXZhIG9yIFdlYiBuYXR1cmUuCi0JICovCi0JcHVibGljIHN0YXRpYyBieXRlIFBST0pFQ1RfVFlQRV9OT05FID0gMDsKLQotCS8qKgotCSAqIEFzIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0UHJvamVjdFR5cGUgZ2V0UHJvamVjdFR5cGUoKX0sIGluZGljYXRlcyB0aGF0Ci0JICogdGhlIGdpdmVuIHByb2plY3QgaGFzIGEgSmF2YSBwcm9qZWN0IG5hdHVyZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJ5dGUgUFJPSkVDVF9UWVBFX0pBVkEgPSAxOwotCi0JLyoqCi0JICogQXMgcmV0dXJuZWQgYnkge0BsaW5rICNnZXRQcm9qZWN0VHlwZSBnZXRQcm9qZWN0VHlwZSgpfSwgaW5kaWNhdGVzIHRoYXQKLQkgKiB0aGUgZ2l2ZW4gcHJvamVjdCBoYXMgYSBXZWIgcHJvamVjdCBuYXR1cmUuCi0JICovCi0JcHVibGljIHN0YXRpYyBieXRlIFBST0pFQ1RfVFlQRV9XRUIgPSAyOwotCi0JLyoqCi0JICogQXMgcmV0dXJuZWQgYnkge0BsaW5rICNnZXRQcm9qZWN0VHlwZSBnZXRQcm9qZWN0VHlwZSgpfSwgaW5kaWNhdGVzIHRoYXQKLQkgKiB0aGUgZ2l2ZW4gcHJvamVjdCBoYXMgYW4gRUpCIHByb2plY3QgbmF0dXJlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYnl0ZSBQUk9KRUNUX1RZUEVfRUpCID0gNDsKLQkKLQkvKioKLQkgKiBBcyByZXR1cm5lZCBieSB7QGxpbmsgI2dldFByb2plY3RUeXBlIGdldFByb2plY3RUeXBlKCl9LCBpbmRpY2F0ZXMgdGhhdAotCSAqIHRoZSBnaXZlbiBwcm9qZWN0IGhhcyBhbiBBcHBsaWNhdGlvbiBjbGllbnQgcHJvamVjdCBuYXR1cmUuCi0JICovCQotCXB1YmxpYyBzdGF0aWMgYnl0ZSBQUk9KRUNUX1RZUEVfQVBQQ0xJRU5UID0gODsKLQotCS8qKgotCSAqIFRoZSBTT0FQIHJwY3JvdXRlciBzZXJ2bGV0IGV4dGVuc2lvbiB0byBiZSBhZGRlZCB0byB3ZWIgcHJvamVjdCBVUkwKLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBTRVJWTEVUX0VYVCA9ICIvc2VydmxldC9ycGNyb3V0ZXIiOwotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfQ0xJRU5UX1dFQl9QUk9KRUNUX0VYVCA9ICJDbGllbnQiOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0NMSUVOVF9FSkJfUFJPSkVDVF9FWFQgPSAiRUpCQ2xpZW50IjsKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9FSkJfUFJPSkVDVF9OQU1FID0gIldlYlNlcnZpY2VFSkJQcm9qZWN0IjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9FSkJfQ09NUE9ORU5UX05BTUUgPSAiV2ViU2VydmljZUVKQiI7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfV0VCX1BST0pFQ1RfTkFNRSA9ICJXZWJTZXJ2aWNlUHJvamVjdCI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfV0VCX0NPTVBPTkVOVF9OQU1FID0gIldlYlNlcnZpY2VQcm9qZWN0IjsKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9ST1VURVJfUFJPSkVDVF9FWFQgPSAiUm91dGVyIjsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1NFUlZJQ0VfRUFSX1BST0pFQ1RfTkFNRSA9ICJXZWJTZXJ2aWNlUHJvamVjdEVBUiI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfU0VSVklDRV9FQVJfQ09NUE9ORU5UX05BTUUgPSAiV2ViU2VydmljZVByb2plY3RFQVIiOwotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0NMSUVOVF9FQVJfUFJPSkVDVF9OQU1FID0gIldlYlNlcnZpY2VQcm9qZWN0Q2xpZW50RUFSIjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9DTElFTlRfRUFSX0NPTVBPTkVOVF9OQU1FID0gIldlYlNlcnZpY2VQcm9qZWN0Q2xpZW50RUFSIjsKLSAgICAKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9FQVJfRVhUID0gIkVBUiI7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBJV29ya3NwYWNlUm9vdCBvYmplY3QuCi0JICogQHJldHVybiBUaGUgSVdvcmtzcGFjZVJvb3Qgb2JqZWN0LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVdvcmtzcGFjZVJvb3QgZ2V0V29ya3NwYWNlUm9vdCgpIHsKLQkJaWYgKHJvb3RfID09IG51bGwpIHsKLQkJCXJvb3RfID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLQkJfQotCQlyZXR1cm4gcm9vdF87Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgSVdvcmtzcGFjZSBvYmplY3QuCi0JICogQHJldHVybiBUaGUgSVdvcmtzcGFjZSBvYmplY3QuCi0JICovCi0JcHVibGljIHN0YXRpYyBJV29ya3NwYWNlIGdldFdvcmtzcGFjZSgpIHsKLQkJaWYgKHdvcmtzcGFjZV8gPT0gbnVsbCkgewotCQkJaWYgKHJvb3RfID09IG51bGwpIHsKLQkJCQlyb290XyA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCk7Ci0JCQl9Ci0JCQl3b3Jrc3BhY2VfID0gcm9vdF8uZ2V0V29ya3NwYWNlKCk7Ci0JCX0KLQkJcmV0dXJuIHdvcmtzcGFjZV87Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhbiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlIElSZXNvdXJjZX1vZiB0aGUKLQkgKiBnaXZlbiBhYnNvbHV0ZSBwYXRobmFtZSBvciBudWxsIGlmIG5vIHN1Y2ggcmVzb3VyY2UgZXhpc3RzLgotCSAqIAotCSAqIEBwYXJhbSBhYnNvbHV0ZVBhdGhuYW1lCi0JICogICAgICAgICAgICBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgcmVzb3VyY2UuCi0JICogQHJldHVybiBUaGUgPGNvZGU+SVJlc291cmNlPC9jb2RlPi4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElSZXNvdXJjZSBmaW5kUmVzb3VyY2UoU3RyaW5nIGFic29sdXRlUGF0aG5hbWUpIHsKLQkJaWYgKGFic29sdXRlUGF0aG5hbWUgPT0gbnVsbCkgewotCQkJcmV0dXJuIG51bGw7Ci0JCX0KLQkJcmV0dXJuIGZpbmRSZXNvdXJjZShuZXcgUGF0aChhYnNvbHV0ZVBhdGhuYW1lKSk7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhbiB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlIElSZXNvdXJjZX1vZiB0aGUKLQkgKiBnaXZlbiBhYnNvbHV0ZSBwYXRoIG9yIG51bGwgaWYgbm8gc3VjaCByZXNvdXJjZSBleGlzdHMuCi0JICogCi0JICogQHBhcmFtIGFic29sdXRlUGF0aAotCSAqICAgICAgICAgICAgVGhlIGFic29sdXRlIDxjb2RlPklQYXRoPC9jb2RlPiBvZiB0aGUgcmVzb3VyY2UuCi0JICogQHJldHVybiBUaGUgPGNvZGU+SVJlc291cmNlPC9jb2RlPi4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElSZXNvdXJjZSBmaW5kUmVzb3VyY2UoSVBhdGggYWJzb2x1dGVQYXRoKSB7Ci0JCWlmIChhYnNvbHV0ZVBhdGggPT0gbnVsbCkgewotCQkJcmV0dXJuIG51bGw7Ci0JCX0KLQkJcmV0dXJuIFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmZpbmRNZW1iZXIoYWJzb2x1dGVQYXRoKTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGFuIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2UgSVJlc291cmNlfW9mIHRoZQotCSAqIGdpdmVuIGZpbGUgc3lzdGVtIHJlbGF0aXZlIHBhdGhuYW1lIGFuZCBwcm9qZWN0IG9yIG51bGwgaWYgbm8gc3VjaCByZXNvdXJjZSBleGlzdHMuCi0JICoKLQkgKiBAcGFyYW0gZmlsZVBhdGggRmlsZSBzeXN0ZW0gcmVsYXRpdmUgcGF0aG5hbWUKLQkgKiBAcGFyYW0gcHJvamVjdCBQcm9qZWN0Ci0JICogQHJldHVybiBUaGUgPGNvZGU+SVJlc291cmNlPC9jb2RlPi4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElSZXNvdXJjZSBmaW5kUmVzb3VyY2VBdExvY2F0aW9uKFN0cmluZyBmaWxlUGF0aCwgSVByb2plY3QgcHJvamVjdCkgewotCQkKLQkJcmV0dXJuIGZpbmRSZXNvdXJjZShmaW5kUGF0aEF0TG9jYXRpb24oIG5ldyBQYXRoKGZpbGVQYXRoKSwgcHJvamVjdCkpOwotCX0KLQkKLQkvKioKLQkgKiBUaGlzIG1ldGhvZCBhdHRlbXB0cyB0byBjb252ZXJ0IGEgcGF0aCB0aGF0IGlzIHJlbGF0aXZlIHRvIGEgZmlsZSBzeXN0ZW0KLQkgKiB0byBhIHBhdGggdGhhdCBpcyByZWxhdGl2ZSB0byB0aGUgd29ya3NwYWNlLiBJbnN0ZWFkIG9mIGNvbXBhcmluZyB0aGUKLQkgKiBmaWxlUGF0aCB3aXRoIHRoZSBpbnN0YWxsIGxvY2F0aW9uIG9mIHRoZSB3b3Jrc3BhY2UgKGkuZS4KLQkgKiBQbGF0Zm9ybS5nZXRMb2NhdGlvbigpKSwgdGhlIGZpbGVQYXRoIGlzIGNvbXBhcmVkIHdpdGggdGhlIGxvY2F0aW9uIG9mIHRoZSBwcm9qZWN0Ci0JICogc2luY2UgdGhlIHByb2plY3QgY291bGQgYmUgaW4gYSBsb2NhdGlvbiBvdGhlciB0aGFuIHRoZSB0aGUgZGVmYXVsdCBsb2NhdGlvbiByZWxhdGl2ZSB0byB0aGUKLQkgKiB3b3Jrc3BhY2UuCi0JICogCi0JICogQHBhcmFtIGZpbGVQYXRoCUZpbGUgcGF0aCByZWxhdGl2ZSB0byBhIGZpbGUgc3lzdGVtCi0JICogQHBhcmFtIHByb2plY3QJVGhlIHByb2plY3QgdGhlIGZpbGUgaXMgaW4KLQkgKiBAcmV0dXJuIAkJCVBhdGggcmVsYXRpdmUgdG8gdGhlIHdvcmtzcGFjZQotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVBhdGggZmluZFBhdGhBdExvY2F0aW9uKElQYXRoIGZpbGVQYXRoLCBJUHJvamVjdCBwcm9qZWN0KSB7Ci0JCUlQYXRoIHJlc3VsdCA9IG51bGw7Ci0KLQkJSVBhdGggcHJvamVjdExvY2F0aW9uID0gcHJvamVjdC5nZXRMb2NhdGlvbigpOwotCi0JCWlmIChwcm9qZWN0TG9jYXRpb24ubWF0Y2hpbmdGaXJzdFNlZ21lbnRzKGZpbGVQYXRoKSA9PSBwcm9qZWN0TG9jYXRpb24KLQkJCQkuc2VnbWVudENvdW50KCkpIHsKLQkJCWZpbGVQYXRoID0gZmlsZVBhdGgucmVtb3ZlRmlyc3RTZWdtZW50cyhwcm9qZWN0TG9jYXRpb24KLQkJCQkJLnNlZ21lbnRDb3VudCgpIC0gMSk7Ci0JCQlyZXN1bHQgPSBmaWxlUGF0aC5zZXREZXZpY2UobnVsbCk7Ci0JCX0KLQotCQlyZXR1cm4gcmVzdWx0OwotCX0KLQkvKioKLQkgKiBWYWxpZGF0ZXMgdGhlIGdpdmVuIHN0cmluZyBhcyBhIG5hbWUgZm9yIGEgcmVzb3VyY2Ugb2YgdGhlIGdpdmVuIHR5cGUocykuCi0JICogVGhpcyBtZXRob2Qgb2JleXMgdGhlIGNvbnRyYWN0IG9mCi0JICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2UjdmFsaWRhdGVOYW1lIElXb3Jrc3BhY2UudmFsaWRhdGVOYW1lKCl9LgotCSAqIAotCSAqIEBwYXJhbSBzZWdtZW50Ci0JICogICAgICAgICAgICBUaGUgcGF0aCB0byB2YWxpZGF0ZS4KLQkgKiBAcGFyYW0gdHlwZU1hc2sKLQkgKiAgICAgICAgICAgIFRoZSA8Y29kZT5JUmVzb3VyY2U8L2NvZGU+IHR5cGUgb3IgdHlwZXMuCi0JICogQHJldHVybiBUaGUgc3RhdHVzIHdpdGggYSB2YWx1ZSBpZiA8Y29kZT5JU3RhdHVzLk9LPC9jb2RlPiBpZiB0aGUgcGF0aAotCSAqICAgICAgICAgaXMgdmFsaWQsIG9yIHdpdGggYXBwcm9wcmlhdGUgc2V2ZXJpdHkgYW5kIG1lc3NhZ2UgaW5mb3JtYXRpb24gaWYKLQkgKiAgICAgICAgIHRoZSBwYXRoIGlzIG5vdCB2YWxpZC4KLQkgKiAgICAgICAgIAotCSAqIEBkZXByZWNhdGVkIG5vdCB1c2VkICAgICAgICAgCi0JICovCi0JcHVibGljIHN0YXRpYyBJU3RhdHVzIHZhbGlkYXRlTmFtZShTdHJpbmcgc2VnbWVudCwgaW50IHR5cGVNYXNrKSB7Ci0JCXJldHVybiBnZXRXb3Jrc3BhY2UoKS52YWxpZGF0ZU5hbWUoc2VnbWVudCwgdHlwZU1hc2spOwotCX0KLQotCS8qKgotCSAqIFZhbGlkYXRlcyB0aGUgZ2l2ZW4gc3RyaW5nIGFzIHRoZSBwYXRoIG9mIGEgcmVzb3VyY2Ugb2YgdGhlIGdpdmVuCi0JICogdHlwZShzKS4gVGhpcyBtZXRob2Qgb2JleXMgdGhlIGNvbnRyYWN0IG9mCi0JICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2UjdmFsaWRhdGVQYXRoIElXb3Jrc3BhY2UudmFsaWRhdGVQYXRoKCl9LgotCSAqIAotCSAqIEBwYXJhbSBwYXRoCi0JICogICAgICAgICAgICBUaGUgcGF0aCB0byB2YWxpZGF0ZS4KLQkgKiBAcGFyYW0gdHlwZU1hc2sKLQkgKiAgICAgICAgICAgIFRoZSA8Y29kZT5JUmVzb3VyY2U8L2NvZGU+IHR5cGUgb3IgdHlwZXMuCi0JICogQHJldHVybiBUaGUgc3RhdHVzIHdpdGggYSB2YWx1ZSBpZiA8Y29kZT5JU3RhdHVzLk9LPC9jb2RlPiBpZiB0aGUgcGF0aAotCSAqICAgICAgICAgaXMgdmFsaWQsIG9yIHdpdGggYXBwcm9wcmlhdGUgc2V2ZXJpdHkgYW5kIG1lc3NhZ2UgaW5mb3JtYXRpb24gaWYKLQkgKiAgICAgICAgIHRoZSBwYXRoIGlzIG5vdCB2YWxpZC4KLQkgKiBAZGVwcmVjYXRlZCBub3QgdXNlZCAKLQkgKi8KLQlwdWJsaWMgc3RhdGljIElTdGF0dXMgdmFsaWRhdGVQYXRoKFN0cmluZyBwYXRoLCBpbnQgdHlwZU1hc2spIHsKLQkJcmV0dXJuIGdldFdvcmtzcGFjZSgpLnZhbGlkYXRlUGF0aChwYXRoLCB0eXBlTWFzayk7Ci0JfQotCi0JLyoqCi0JICogVmFsaWRhdGVzIHRoZSBnaXZlbiBKYXZhIHR5cGUgbmFtZS4KLQkgKiAKLQkgKiBAcGFyYW0gdHlwZU5hbWUKLQkgKiAgICAgICAgICAgIFRoZSBKYXZhIHR5cGUgbmFtZS4KLQkgKiBAcmV0dXJuIFRoZSBzdGF0dXMgd2l0aCBhIHZhbHVlIG9mIDxjb2RlPklTdGF0dXMuT0s8L2NvZGU+IGlmIHRoZSBuYW1lCi0JICogICAgICAgICBpcyB2YWxpZCwgb3Igd2l0aCBhcHByb3ByaWF0ZSBzZXZlcml0eSBhbmQgbWVzc2FnZSBpbmZvcm1hdGlvbiBpZgotCSAqICAgICAgICAgbmFtZSBpcyBub3QgdmFsaWQuIFRoZSBwcmltaXRpdmUgdHlwZXMgKGJvb2xlYW4sIGNoYXIsIGJ5dGUsCi0JICogICAgICAgICBzaG9ydCwgaW50LCBsb25nLCBmbG9hdCwgZG91YmxlKSBhcmUgdmFsaWQuIEFycmF5cyBvZiB2YWxpZCB0eXBlcwotCSAqICAgICAgICAgYXJlIHRoZW1zZWx2ZXMgdmFsaWQuCi0JICogQGRlcHJlY2F0ZWQgdXNlIEphdmFDb252ZW50aW9ucyBpbiB0aGUgamR0IGNvcmUgCi0JICovCi0JcHVibGljIHN0YXRpYyBJU3RhdHVzIHZhbGlkYXRlSmF2YVR5cGVOYW1lKFN0cmluZyB0eXBlTmFtZSkgewotCQkvLwotCQkvLyBTdHJpcCBvZmYgdGhlIHRyYWlsaW5nIGFycmF5IGJpdHMsIGlmIGFueS4KLQkJLy8KLQkJaW50IGEgPSB0eXBlTmFtZS5pbmRleE9mKCdbJyk7Ci0JCWlmIChhID4gMCkgewotCQkJdHlwZU5hbWUgPSB0eXBlTmFtZS5zdWJzdHJpbmcoMCwgYSk7Ci0JCX0KLQkJLy8KLQkJLy8gQWxsb3cgcHJpbWl0aXZlcy4KLQkJLy8KLQkJaWYgKGlzUHJpbWl0aXZlSmF2YVR5cGUodHlwZU5hbWUpKSB7Ci0JCQlyZXR1cm4gbmV3IFN0YXR1cyhJU3RhdHVzLk9LLCBXZWJTZXJ2aWNlUGx1Z2luLklELCAwLCAiIiwgbnVsbCk7Ci0JCX0KLQkJLy8KLQkJLy8gRGVmZXIgdG8gSmF2YUNvbnZlbnRpb25zLgotCQkvLwotCQlyZXR1cm4gSmF2YUNvbnZlbnRpb25zLnZhbGlkYXRlSmF2YVR5cGVOYW1lKHR5cGVOYW1lKTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIDxjb2RlPnR5cGVOYW1lPC9jb2RlPiBpcyBhIEphdmEgcHJpbWl0aXZlCi0JICogKGJvb2xlYW4sIGNoYXIsIGJ5dGUsIHNob3J0LCBpbnQsIGxvbmcsIGZsb2F0LCBkb3VibGUpLgotCSAqIAotCSAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgdHlwZSBuYW1lIGlzIGEgSmF2YSBwcmltaXRpdmUuCi0JICogCi0JICogQGRlcHJlY2F0ZWQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNQcmltaXRpdmVKYXZhVHlwZShTdHJpbmcgdHlwZU5hbWUpIHsKLQkJcmV0dXJuICh0eXBlTmFtZS5lcXVhbHMoImJvb2xlYW4iKSB8fCB0eXBlTmFtZS5lcXVhbHMoImNoYXIiKQotCQkJCXx8IHR5cGVOYW1lLmVxdWFscygiYnl0ZSIpIHx8IHR5cGVOYW1lLmVxdWFscygic2hvcnQiKQotCQkJCXx8IHR5cGVOYW1lLmVxdWFscygiaW50IikgfHwgdHlwZU5hbWUuZXF1YWxzKCJsb25nIikKLQkJCQl8fCB0eXBlTmFtZS5lcXVhbHMoImZsb2F0IikgfHwgdHlwZU5hbWUuZXF1YWxzKCJkb3VibGUiKSk7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgaGFuZGxlIG9mIHRoZSBJUHJvamVjdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBnaXZlbgotCSAqIDxjb2RlPmFic29sdXRlUGF0aDwvY29kZT4uIE5laXRoZXIgdGhlIGdpdmVuIHBhdGggbm9yIHRoZSBwcm9qZWN0IG5lZWQKLQkgKiBleGlzdCBpbiB0aGUgd29ya3NwYWNlLiBUaGUgcGF0aCBtdXN0IGJlIGFic29sdXRlLCBhbmQgbXVzdCBjb25zaXN0IG9mIGF0Ci0JICogbGVhc3Qgb25lIHNlZ21lbnQuCi0JICogCi0JICogQHJldHVybiBBbiBJUHJvamVjdCBoYW5kbGUgZm9yIHRoZSBwcm9qZWN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGdpdmVuCi0JICogICAgICAgICA8Y29kZT5hYnNvbHV0ZVBhdGg8L2NvZGU+LCBvciBudWxsIGlmIHRoZSBwYXRoIGRvZXMgbm90Ci0JICogICAgICAgICBzcGVjaWZ5IGEgcHJvamVjdC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElQcm9qZWN0IGdldFByb2plY3RPZihJUGF0aCBhYnNvbHV0ZVBhdGgpIHsKLQkJaWYgKGFic29sdXRlUGF0aC5pc0Fic29sdXRlKCkpIHsKLQkJCVN0cmluZyBwcm9qZWN0TmFtZSA9IGFic29sdXRlUGF0aC5zZWdtZW50KDApOwotCQkJaWYgKHByb2plY3ROYW1lICE9IG51bGwpIHsKLQkJCQlyZXR1cm4gZ2V0V29ya3NwYWNlUm9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotCQkJfQotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBhYnNvbHV0ZVBhdGgKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBJVmlydHVhbENvbXBvbmVudCBnZXRDb21wb25lbnRPZihJUGF0aCBhYnNvbHV0ZVBhdGgpewotCQlpZiAoYWJzb2x1dGVQYXRoLmlzQWJzb2x1dGUoKSkgewotCQkJCVN0cmluZyBwcm9qZWN0TmFtZSA9IGFic29sdXRlUGF0aC5zZWdtZW50KDApOwotCQkJCUlQcm9qZWN0IHByb2plY3QgPSBnZXRXb3Jrc3BhY2VSb290KCkuZ2V0UHJvamVjdChwcm9qZWN0TmFtZSk7Ci0JCQkJaWYgKHByb2plY3ROYW1lICE9IG51bGwpIHsKLQkJCQkJcmV0dXJuIENvbXBvbmVudENvcmUuY3JlYXRlQ29tcG9uZW50KHByb2plY3QpOwotCQkJCX0KLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0JCi0JcHVibGljIHN0YXRpYyBJVmlydHVhbENvbXBvbmVudCBnZXRDb21wb25lbnRPZihJUmVzb3VyY2UgcmVzKQotCXsKLQkJSVZpcnR1YWxSZXNvdXJjZVtdIHZyZXNvdXJjZXMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZVJlc291cmNlcyhyZXMpOwotCQlJVmlydHVhbENvbXBvbmVudCB2Y29tcCA9IG51bGw7Ci0JCWlmICh2cmVzb3VyY2VzICE9IG51bGwgJiYgdnJlc291cmNlcy5sZW5ndGg+MCkKLQkJewotCQkJSVZpcnR1YWxSZXNvdXJjZSB2cmVzID0gdnJlc291cmNlc1swXTsKLQkJCXZjb21wID0gdnJlcy5nZXRDb21wb25lbnQoKTsKLQkJfQotCQlyZXR1cm4gdmNvbXA7Ci0JfQotCQotCQotCS8qKgotCSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gPGNvZGU+cHJvamVjdDwvY29kZT4gaXMgYSBKYXZhIFByb2plY3QuCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvamVjdCBpcyBhIEphdmEgUHJvamVjdC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNKYXZhUHJvamVjdChJUHJvamVjdCBwcm9qZWN0KSB7Ci0JCXRyeQotCQl7Ci0JCSAgcmV0dXJuIHByb2plY3QuaGFzTmF0dXJlKEphdmFDb3JlLk5BVFVSRV9JRCk7Ci0JCX0KLQkJY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0JCXsKLQkJCS8vUmV0dXJuIGZhbHNlIGlmIENvcmVFeGNlcHRpb24gb2NjdXJzIHdoaWxlIGNoZWNraW5nIG5hdHVyZS4KLQkJCXJldHVybiBmYWxzZTsKLQkJfQotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gPGNvZGU+cHJvamVjdDwvY29kZT4gaXMgYSBKYXZhIFByb2plY3QuCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvamVjdCBpcyBhIEphdmEgUHJvamVjdC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNUcnVlSmF2YVByb2plY3QoSVByb2plY3QgcHJvamVjdCkgewotCQlyZXR1cm4gKCFpc1dlYlByb2plY3QocHJvamVjdCkgJiYgIWlzQXBwQ2xpZW50UHJvamVjdChwcm9qZWN0KSAmJiAhaXNFQVJQcm9qZWN0KHByb2plY3QpCi0JCQkJJiYgIWlzRUpCUHJvamVjdChwcm9qZWN0KSAmJiBpc0phdmFQcm9qZWN0KHByb2plY3QpKTsKLQkJLyoKLQkJICogdHJ5IHsgU3RyaW5nW10gbmF0dXJlcyA9IHByb2plY3QuZ2V0RGVzY3JpcHRpb24oKS5nZXROYXR1cmVJZHMoKTsKLQkJICogcmV0dXJuIChuYXR1cmVzLmxlbmd0aCA9PSAxICYmCi0JCSAqIG5hdHVyZXNbMF0uZXF1YWxzKEphdmFDb3JlLk5BVFVSRV9JRCkpOyB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsgfQotCQkgKiByZXR1cm4gZmFsc2U7Ci0JCSAqLwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gPGNvZGU+cHJvamVjdDwvY29kZT4gaXMgYSBXZWIgUHJvamVjdC4KLQkgKiBOb3RlOiBGb3IgY29tcG9uZW50czsgdXNlIEoyRUVVdGlscy5pc1dlYkNvbXBvbmVudCgpCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvamVjdCBpcyBhIFdlYiBQcm9qZWN0LgotICAgKiAKLSAgICogQGRlcHJlY2F0ZWQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNXZWJQcm9qZWN0KElQcm9qZWN0IHByb2plY3QpIHsKLQkJYm9vbGVhbiBpc1dlYiA9IGZhbHNlOwotCQlTdHJ1Y3R1cmVFZGl0IG1jID0gbnVsbDsKLQkJdHJ5IHsKLQkJICBtYyA9IFN0cnVjdHVyZUVkaXQuZ2V0U3RydWN0dXJlRWRpdEZvclJlYWQocHJvamVjdCk7Ci0JCSAgV29ya2JlbmNoQ29tcG9uZW50W10gd2JjcyA9IG1jLmdldFdvcmtiZW5jaE1vZHVsZXMoKTsKLQkJICBpZiAod2Jjcy5sZW5ndGghPTApIHsKLQkJCSAgLy9pc1dlYiA9IFdlYkFydGlmYWN0RWRpdC5pc1ZhbGlkV2ViTW9kdWxlKHdiY3NbMF0pOwotCQkgIH0KLQkJfQotCQljYXRjaChFeGNlcHRpb24gZXgpewotCQkJLy8gaGFuZGxlIGV4Y2VwdGlvbgotCQl9Ci0JCWZpbmFsbHl7Ci0JCQlpZiAobWMhPW51bGwpCi0JCQkJbWMuZGlzcG9zZSgpOwotCQl9Ci0KLQkJcmV0dXJuIGlzV2ViOwotCX0KLQotCS8qKgotCSAqIE5vdGU6IGZvciBjb21wb25lbnRzOyB1c2UgSjJFRVV0aWxzLmlzRUFSQ29tcG9uZW50KCkKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEByZXR1cm4KLSAgICogCi0gICAqIEBkZXByZWNhdGVkCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzRUFSUHJvamVjdChJUHJvamVjdCBwcm9qZWN0KXsKLQkJYm9vbGVhbiBpc0VBUiA9IGZhbHNlOwotCQlTdHJ1Y3R1cmVFZGl0IG1jID0gbnVsbDsKLQkJdHJ5IHsKLQkJICBtYyA9IFN0cnVjdHVyZUVkaXQuZ2V0U3RydWN0dXJlRWRpdEZvclJlYWQocHJvamVjdCk7Ci0JCSAgV29ya2JlbmNoQ29tcG9uZW50W10gd2JjcyA9IG1jLmdldFdvcmtiZW5jaE1vZHVsZXMoKTsKLQkJICBpZiAod2Jjcy5sZW5ndGghPTApIHsKLQkJCUVBUkFydGlmYWN0RWRpdCBlYXJFZGl0ID0gbnVsbDsKLQkJCXRyeSB7Ci0JCQkgIC8vZWFyRWRpdCA9IEVBUkFydGlmYWN0RWRpdC5nZXRFQVJBcnRpZmFjdEVkaXRGb3JSZWFkKHdiY3NbMF0pOwotCQkJICBpZiAoZWFyRWRpdCE9bnVsbCl7Ci0JCQkJaXNFQVIgPSB0cnVlOwotCQkJICB9Ci0JCQl9Ci0JCQlmaW5hbGx5ewotCQkJCWlmIChlYXJFZGl0IT1udWxsKQotCQkJCQllYXJFZGl0LmRpc3Bvc2UoKTsKLQkJCX0KLQkJICB9Ci0JCX0KLQkJY2F0Y2goRXhjZXB0aW9uIGV4KXt9Ci0JCWZpbmFsbHl7Ci0JCQlpZiAobWMhPW51bGwpCi0JCQkJbWMuZGlzcG9zZSgpOwotCQl9Ci0JCQotCQlyZXR1cm4gaXNFQVI7Ci0JfQotCS8qKgotCSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gPGNvZGU+cHJvamVjdDwvY29kZT4gaXMgYW4gRUpCIDEuMSBvciBFSkIgMi4wCi0JICogUHJvamVjdC4KLQkgKiBOb3RlOiBmb3IgY29tcG9uZW50cywgdXNlIEoyRUVVdGlscy5pc0VKQkNvbXBvbmVudAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogICAgICAgICAgICBUaGUgcHJvamVjdC4KLQkgKiBAcmV0dXJuIFRydWUgaWYgdGhlIHByb2plY3QgaXMgYW4gRUpCIDEuMSBvciBhbiBFSkIgMi4wIFByb2plY3QuCi0gICAqIAotICAgKiBAZGVwcmVjYXRlZAotICAgKiAKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNFSkJQcm9qZWN0KElQcm9qZWN0IHByb2plY3QpIHsKLQkJYm9vbGVhbiBpc0VKQiA9IGZhbHNlOwotCQlTdHJ1Y3R1cmVFZGl0IG1jID0gbnVsbDsKLQkJdHJ5IHsKLQkJICBtYyA9IFN0cnVjdHVyZUVkaXQuZ2V0U3RydWN0dXJlRWRpdEZvclJlYWQocHJvamVjdCk7Ci0JCSAgV29ya2JlbmNoQ29tcG9uZW50W10gd2JjcyA9IG1jLmdldFdvcmtiZW5jaE1vZHVsZXMoKTsKLQkJICBpZiAod2Jjcy5sZW5ndGghPTApIHsKLQkJCUVKQkFydGlmYWN0RWRpdCBlamJFZGl0ID0gbnVsbDsKLQkJCXRyeSB7Ci0JCQkgIC8vZWpiRWRpdCA9IEVKQkFydGlmYWN0RWRpdC5nZXRFSkJBcnRpZmFjdEVkaXRGb3JSZWFkKHdiY3NbMF0pOwotCQkJICBpZiAoZWpiRWRpdCE9bnVsbCl7Ci0JCQkJaXNFSkIgPSB0cnVlOwotCQkJICB9Ci0JCQl9Ci0JCQlmaW5hbGx5ewotCQkJCWlmIChlamJFZGl0IT1udWxsKQotCQkJCQllamJFZGl0LmRpc3Bvc2UoKTsKLQkJCX0KLQkJICB9Ci0JCX0KLQkJY2F0Y2goRXhjZXB0aW9uIGV4KXt9Ci0JCWZpbmFsbHl7Ci0JCQlpZiAobWMhPW51bGwpCi0JCQkJbWMuZGlzcG9zZSgpOwotCQl9Ci0JCQotCQlyZXR1cm4gaXNFSkI7CQotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gPGNvZGU+cHJvamVjdDwvY29kZT4gaXMgYW4gQXBwbGljYXRpb24gQ2xpZW50Ci0JICogUHJvamVjdC4KLQkgKiBOb3RlOiBmb3IgY29tcG9uZW50cywgdXNlIEoyRUVVdGlscy5pc0FwcENsaWVudENvbXBvbmVudCgpCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvamVjdCBpcyBhbiBBcHBsaWNhdGlvbiBDbGllbnQgUHJvamVjdAotICAgKiAKLSAgICogQGRlcHJlY2F0ZWQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNBcHBDbGllbnRQcm9qZWN0KElQcm9qZWN0IHByb2plY3QpIHsKLQkJYm9vbGVhbiBpc0FwcENsaWVudCA9IGZhbHNlOwotCQlTdHJ1Y3R1cmVFZGl0IG1jID0gbnVsbDsKLQkJdHJ5IHsKLQkJICBtYyA9IFN0cnVjdHVyZUVkaXQuZ2V0U3RydWN0dXJlRWRpdEZvclJlYWQocHJvamVjdCk7Ci0JCSAgV29ya2JlbmNoQ29tcG9uZW50W10gd2JjcyA9IG1jLmdldFdvcmtiZW5jaE1vZHVsZXMoKTsKLQkJICBpZiAod2Jjcy5sZW5ndGghPTApIHsKLQkJCUFwcENsaWVudEFydGlmYWN0RWRpdCBhcHBDbGllbnRFZGl0ID0gbnVsbDsKLQkJCXRyeSB7Ci0JCQkJLy9hcHBDbGllbnRFZGl0ID0gQXBwQ2xpZW50QXJ0aWZhY3RFZGl0LmdldEFwcENsaWVudEFydGlmYWN0RWRpdEZvclJlYWQod2Jjc1swXSk7Ci0JCQkgIGlmIChhcHBDbGllbnRFZGl0IT1udWxsKXsKLQkJCQkgIGlzQXBwQ2xpZW50ID0gdHJ1ZTsKLQkJCSAgfQotCQkJfQotCQkJZmluYWxseXsKLQkJCQlpZiAoYXBwQ2xpZW50RWRpdCE9bnVsbCkKLQkJCQkJYXBwQ2xpZW50RWRpdC5kaXNwb3NlKCk7Ci0JCQl9Ci0JCSAgfQotCQl9Ci0JCWNhdGNoKEV4Y2VwdGlvbiBleCl7fQotCQlmaW5hbGx5ewotCQkJaWYgKG1jIT1udWxsKQotCQkJCW1jLmRpc3Bvc2UoKTsKLQkJfQotCQkKLQkJcmV0dXJuIGlzQXBwQ2xpZW50OwkKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBnaXZlbiA8Y29kZT5wcm9qZWN0PC9jb2RlPiBhcyBhIGJpdG1hc2suCi0JICogUmVsZXZhbnQgYml0bWFzayB2YWx1ZXMgYXJlOgotCSAqIDxvbD4KLQkgKiA8bGk+e0BsaW5rICNQUk9KRUNUX1RZUEVfSkFWQSBQUk9KRUNUX1RZUEVfSkFWQX0KLQkgKiA8bGk+e0BsaW5rICNQUk9KRUNUX1RZUEVfV0VCIFBST0pFQ1RfVFlQRV9XRUJ9Ci0JICogPGxpPntAbGluayAjUFJPSkVDVF9UWVBFX0VKQiBQUk9KRUNUX1RZUEVfRUpCfQotCSAqIDxsaT57QGxpbmsgI1BST0pFQ1RfVFlQRV9OT05FIFBST0pFQ1RfVFlQRV9OT05FfQotCSAqIDwvb2w+Ci0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEByZXR1cm4gVGhlIHR5cGUgYml0bWFzayBvZiB0aGUgcHJvamVjdC4KLQkgKiAKLQkgKiBAZGVwcmVjYXRlZCB1c2UgZ2V0Q29tcG9uZW50VHlwZQotCSAqLyAKLQlwdWJsaWMgc3RhdGljIGJ5dGUgZ2V0UHJvamVjdFR5cGUoSVByb2plY3QgcHJvamVjdCkgewotCQlieXRlIHByb2plY3RUeXBlID0gUFJPSkVDVF9UWVBFX05PTkU7Ci0JCWlmIChSZXNvdXJjZVV0aWxzLmlzSmF2YVByb2plY3QocHJvamVjdCkpIHsKLQkJCXByb2plY3RUeXBlIHw9IFBST0pFQ1RfVFlQRV9KQVZBOwotCQl9Ci0JCWlmIChSZXNvdXJjZVV0aWxzLmlzV2ViUHJvamVjdChwcm9qZWN0KSkgewotCQkJcHJvamVjdFR5cGUgfD0gUFJPSkVDVF9UWVBFX1dFQjsKLQkJfQotCQlpZiAoUmVzb3VyY2VVdGlscy5pc0VKQlByb2plY3QocHJvamVjdCkpIHsKLQkJCXByb2plY3RUeXBlIHw9IFBST0pFQ1RfVFlQRV9FSkI7Ci0JCX0KLQkJcmV0dXJuIHByb2plY3RUeXBlOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGNvbXBvbmVudCB0eXBlIGlkIGFzIGRlZmluZWQgaW4gSU1vZHVsZUNvbnN0YW50cwotCSAqIGkuZS4gSU1vZHVsZUNvbnN0YW50cy5KU1RfV0VCX01PRFVMRSA9ICJqc3Qud2ViIgotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldENvbXBvbmVudFR5cGUoSVByb2plY3QgcHJvamVjdCl7Ci0JCXJldHVybiBKMkVFUHJvamVjdFV0aWxpdGllcy5nZXRKMkVFUHJvamVjdFR5cGUocHJvamVjdCk7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIGNvbXBvbmVudCB0eXBlCi0JICogQHBhcmFtIGNvbXBvbmVudAotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRDb21wb25lbnRUeXBlKElWaXJ0dWFsQ29tcG9uZW50IGNvbXBvbmVudCl7Ci0JCXJldHVybiBnZXRDb21wb25lbnRUeXBlKGNvbXBvbmVudC5nZXRQcm9qZWN0KCkpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIFdlYk1vZHVsZSBEZXBsb3lhYmxlIG9mIHRoZSA8Y29kZT5wcm9qZWN0PC9jb2RlPiBhcyBhbgotCSAqIDxjb2RlPklEZXBsb3lhYmxlPC9jb2RlPiwgb3IgbnVsbCBpZiB0aGUgcHJvamVjdCBoYXMgbm8gV2ViIG5hdHVyZS4KLQkgKiAKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqICAgICAgICAgICAgVGhlIHByb2plY3QuCi0JICogQHJldHVybiBXZWJNb2R1bGUgRGVwbG95YWJsZSBvZiB0aGUgPGNvZGU+cHJvamVjdDwvY29kZT4gb3IgbnVsbCBpZiB0aGUKLQkgKiAgICAgICAgIHByb2plY3QgaGFzIG5vIFdlYiBuYXR1cmUuCi0JICovCi0JcHVibGljIHN0YXRpYyBJTW9kdWxlIGdldE1vZHVsZShJUHJvamVjdCBwcm9qZWN0KSB7Ci0JcmV0dXJuIFNlcnZlclV0aWwuZ2V0TW9kdWxlKHByb2plY3QpOwotfQotCQotLy8gV29ya2Fyb3VuZCBmb3IgMTEzNjIxIAotLy9wdWJsaWMgc3RhdGljIElNb2R1bGUgZ2V0TW9kdWxlKElQcm9qZWN0IHByb2plY3QpIHsKLS8vCUlNb2R1bGVbXSBtb2R1bGVzID0gU2VydmVyVXRpbC5nZXRNb2R1bGVzKHByb2plY3QpOwotLy8JaWYgKG1vZHVsZXMhPW51bGwgJiYgbW9kdWxlcy5sZW5ndGghPTApIHsKLS8vCQlyZXR1cm4gbW9kdWxlc1swXTsKLS8vCX0KLS8vCXJldHVybiBudWxsOwotLy99Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBidWlsZCBvdXRwdXQgbG9jYXRpb24gb2YgdGhlIDxjb2RlPnByb2plY3Q8L2NvZGU+IGFzIGFuCi0JICogPGNvZGU+SVBhdGg8L2NvZGU+LCBvciBudWxsIGlmIHRoZSBwcm9qZWN0IGhhcyBubyBKYXZhIG5hdHVyZS4KLQkgKiBpLmUuIFdQXC5kZXBsb3lhYmxlc1x3ZWJNb2R1bGVcV0VCLUlORlxjbGFzc2VzCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEByZXR1cm4gVGhlIGJ1aWxkIG91dHB1dCBsb2NhdGlvbiBvZiB0aGUgPGNvZGU+cHJvamVjdDwvY29kZT4gb3IgbnVsbAotCSAqICAgICAgICAgaWYgdGhlIHByb2plY3QgaGFzIG5vIEphdmEgbmF0dXJlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVBhdGggZ2V0SmF2YU91dHB1dExvY2F0aW9uKElQcm9qZWN0IHByb2plY3QpIHsKLQkJSVBhdGggb3V0cHV0TG9jYXRpb24gPSBudWxsOwotCQl0cnkgewotCQkJSUphdmFQcm9qZWN0IGphdmFQcm9qZWN0ID0gSmF2YUNvcmUuY3JlYXRlKHByb2plY3QpOwotCQkJaWYgKGphdmFQcm9qZWN0ICE9IG51bGwpIHsKLQkJCQlvdXRwdXRMb2NhdGlvbiA9IGphdmFQcm9qZWN0LmdldE91dHB1dExvY2F0aW9uKCk7Ci0JCQl9Ci0JCX0gY2F0Y2ggKEphdmFNb2RlbEV4Y2VwdGlvbiBlKSB7Ci0JCX0KLQkJSUxvZyBsb2cgPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZUxvZygpOwotCQlsb2cubG9nKElMb2cuSU5GTywgNTAzMiwgUmVzb3VyY2VVdGlscy5jbGFzcywgImdldEphdmFPdXRwdXRMb2NhdGlvbiIsCi0JCQkJInByb2plY3Q9IiArIHByb2plY3QgKyAiLG91dHB1dExvY2F0aW9uPSIgKyBvdXRwdXRMb2NhdGlvbik7Ci0KLQkJcmV0dXJuIG91dHB1dExvY2F0aW9uOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgYSBidWlsZCBzb3VyY2UgbG9jYXRpb24gb2YgdGhlIDxjb2RlPnByb2plY3Q8L2NvZGU+IGFzIGFuCi0JICogPGNvZGU+SVBhdGg8L2NvZGU+LCBvciBudWxsIGlmIHRoZSBwcm9qZWN0IGVpdGhlciBoYXMgbm8gSmF2YSBuYXR1cmUKLQkgKiBvciBpZiB0aGUgcHJvamVjdCdzIGJ1aWxkIGNsYXNzcGF0aCBjb250YWlucyBubyBmb2xkZXJzIGxvY2FsIHRvIHRoZQotCSAqIHByb2plY3QuIElmIHRoZSBwcm9qZWN0IGhhcyBtb3JlIHRoYW4gb25lIG9mIGl0cyBvd24gZm9sZGVycyBvbiB0aGUgYnVpbGQKLQkgKiBjbGFzc3BhdGgsIHRoZW4gb25lIG9mIHRoZW0gaXMgY2hvc2VuIGFyYml0cmFyaWx5IGFzIHRoZSBidWlsZCBzb3VyY2UKLQkgKiBsb2NhdGlvbi4gVG8gd29yayB3aXRoIGFsbCBlbnRyaWVzIG9uIHRoZSBidWlsZCBjbGFzc3BhdGgsIHVzZQotCSAqIHtAbGluayAjZ2V0SmF2YVBhY2thZ2VGcmFnbWVudFJvb3RzIGdldEphdmFQYWNrYWdlRnJhZ21lbnRSb290cygpfW9yCi0JICoge0BsaW5rICNnZXRKYXZhQ2xhc3NwYXRoIGdldEphdmFDbGFzc3BhdGgoKX0uCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEByZXR1cm4gQSBidWlsZCBzb3VyY2UgbG9jYXRpb24gb2YgdGhlIDxjb2RlPnByb2plY3Q8L2NvZGU+IG9yIG51bGwgaWYKLQkgKiAgICAgICAgIHRoZSBwcm9qZWN0IGhhcyBubyBKYXZhIG5hdHVyZSBvciBpZiB0aGUgcHJvamVjdCdzIGJ1aWxkCi0JICogICAgICAgICBjbGFzc3BhdGggY29udGFpbnMgbm8gZm9sZGVycyBsb2NhbCB0byB0aGUgcHJvamVjdC4KLQkgKi8KLQotCXB1YmxpYyBzdGF0aWMgSVBhdGggZ2V0SmF2YVNvdXJjZUxvY2F0aW9uKElQcm9qZWN0IHByb2plY3QpIHsKLQkJSVBhdGggc291cmNlTG9jYXRpb24gPSBudWxsOwotCQlJUGFja2FnZUZyYWdtZW50Um9vdFtdIGZyYWdtZW50Um9vdHMgPSBnZXRKYXZhUGFja2FnZUZyYWdtZW50Um9vdHMocHJvamVjdCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgZnJhZ21lbnRSb290cy5sZW5ndGggJiYgc291cmNlTG9jYXRpb24gPT0gbnVsbDsgaSsrKSB7Ci0JCQl0cnkgewotCQkJCUlSZXNvdXJjZSBmcmFnbWVudFJvb3QgPSBmcmFnbWVudFJvb3RzW2ldCi0JCQkJCQkuZ2V0Q29ycmVzcG9uZGluZ1Jlc291cmNlKCk7Ci0JCQkJaWYgKGZyYWdtZW50Um9vdCAhPSBudWxsCi0JCQkJCQkmJiAoZnJhZ21lbnRSb290LmdldFByb2plY3QoKS5lcXVhbHMocHJvamVjdCkpCi0JCQkJCQkmJiAoZnJhZ21lbnRSb290LmdldFR5cGUoKSAhPSBJUmVzb3VyY2UuRklMRSkpIHsKLQkJCQkJc291cmNlTG9jYXRpb24gPSBmcmFnbWVudFJvb3QuZ2V0RnVsbFBhdGgoKTsKLQkJCQl9Ci0JCQl9IGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkgewotCQkJfQotCQl9Ci0KLQkJSUxvZyBsb2cgPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZUxvZygpOwotCQlsb2cubG9nKElMb2cuSU5GTywgNTAzMCwgUmVzb3VyY2VVdGlscy5jbGFzcywgImdldEphdmFTb3VyY2VMb2NhdGlvbiIsCi0JCQkJInByb2plY3Q9IiArIHByb2plY3QgKyAiLHNvdXJjZUxvY2F0aW9uPSIgKyBzb3VyY2VMb2NhdGlvbik7Ci0JCQotCQlyZXR1cm4gc291cmNlTG9jYXRpb247Ci0JfQotCi0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgIkphdmFTb3VyY2UiIGZvbGRlcgotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqLwotICAgIC8qCi0JcHVibGljIHN0YXRpYyBJUGF0aCBnZXRKYXZhU291cmNlTG9jYXRpb24oSVByb2plY3QgcHJvamVjdCl7Ci0JCUlWaXJ0dWFsQ29tcG9uZW50IGNvbXBvbmVudCA9IENvbXBvbmVudENvcmUuY3JlYXRlQ29tcG9uZW50KHByb2plY3QpOwotCQlyZXR1cm4gZ2V0SmF2YVNvdXJjZUxvY2F0aW9uKGNvbXBvbmVudCk7CQkJCi0JfQotCSovCi0JLyoqCi0JICogUmV0dXJucyB0aGUgSmF2YVNvdXJjZSBsb2NhdGlvbiBmb2xkZXIKLQkgKiBAcGFyYW0gY29tcAotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElQYXRoIGdldEphdmFTb3VyY2VMb2NhdGlvbihJVmlydHVhbENvbXBvbmVudCBjb21wKXsKLQkJaWYgKGNvbXAhPW51bGwpewotCQkgICBJVmlydHVhbEZvbGRlciBmb2xkZXIgPSBjb21wLmdldFJvb3RGb2xkZXIoKS5nZXRGb2xkZXIobmV3IFBhdGgoIi9XRUItSU5GL2NsYXNzZXMiKSk7Ci0JCSAgIHJldHVybiBmb2xkZXIuZ2V0V29ya3NwYWNlUmVsYXRpdmVQYXRoKCk7Ci0JCX0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIEphdmFTb3VyY2UgbG9jYXRpb25zIGluIGVhY2ggcHJvamVjdAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVBhdGhbXSBnZXRBbGxKYXZhU291cmNlTG9jYXRpb25zKElQcm9qZWN0IHByb2plY3QpIHsKLQkJVmVjdG9yIHBhdGhWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0JCUlQYWNrYWdlRnJhZ21lbnRSb290W10gZnJhZ21lbnRSb290cyA9IGdldEphdmFQYWNrYWdlRnJhZ21lbnRSb290cyhwcm9qZWN0KTsKLQotCQlmb3IgKGludCBpID0gMDsgaSA8IGZyYWdtZW50Um9vdHMubGVuZ3RoOyBpKyspIHsKLQkJCXRyeSB7Ci0JCQkJSVJlc291cmNlIGZyYWdtZW50Um9vdCA9IGZyYWdtZW50Um9vdHNbaV0uZ2V0Q29ycmVzcG9uZGluZ1Jlc291cmNlKCk7Ci0JCQkJaWYgKGZyYWdtZW50Um9vdCAhPSBudWxsICYmIChmcmFnbWVudFJvb3QuZ2V0UHJvamVjdCgpLmVxdWFscyhwcm9qZWN0KSkKLQkJCQkJCSYmIChmcmFnbWVudFJvb3QuZ2V0VHlwZSgpICE9IElSZXNvdXJjZS5GSUxFKSkgewotCQkJCQlwYXRoVmVjdG9yLmFkZChmcmFnbWVudFJvb3QuZ2V0RnVsbFBhdGgoKSk7Ci0JCQkJfQotCQkJfSBjYXRjaCAoSmF2YU1vZGVsRXhjZXB0aW9uIGUpIHsKLQkJCX0KLQkJfQotCQlyZXR1cm4gKElQYXRoW10pIHBhdGhWZWN0b3IudG9BcnJheShuZXcgUGF0aFtwYXRoVmVjdG9yLnNpemUoKV0pOwotCX0KLQotCXB1YmxpYyBzdGF0aWMgSVBhdGhbXSBnZXRBbGxKYXZhU291cmNlTG9jYXRpb25zKElWaXJ0dWFsQ29tcG9uZW50W10gY29tcG9uZW50cykgewotCi0JCWlmIChjb21wb25lbnRzIT1udWxsKXsKLQkJCUxpc3QgamF2YVNvdXJjZVBhdGhzID0gbmV3IEFycmF5TGlzdCgpOwotCQkJZm9yIChpbnQgaT0wO2k8Y29tcG9uZW50cy5sZW5ndGg7aSsrKXsKLQkJCQlJUGF0aCBwYXRoID0gZ2V0SmF2YVNvdXJjZUxvY2F0aW9uKGNvbXBvbmVudHNbaV0pOwotCQkJCWphdmFTb3VyY2VQYXRocy5hZGQocGF0aCk7Ci0JCQl9Ci0JCQlyZXR1cm4gKElQYXRoW10pamF2YVNvdXJjZVBhdGhzLnRvQXJyYXkobmV3IElQYXRoWzBdKTsKLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyBhIGJ1aWxkIHNvdXJjZSBwYWNrYWdlIGZyYWdtZW50IHJvb3Qgb2YgdGhlIDxjb2RlPnByb2plY3Q8L2NvZGU+Ci0JICogYXMgYW4gPGNvZGU+SVBhY2thZ2VGcmFnbWVudFJvb3Q8L2NvZGU+LCBvciBudWxsIGlmIHRoZSBwcm9qZWN0IGVpdGhlcgotCSAqIGhhcyBubyBKYXZhIG5hdHVyZSBvciBpZiB0aGUgcHJvamVjdCdzIGJ1aWxkIGNsYXNzcGF0aCBjb250YWlucyBubwotCSAqIGZvbGRlcnMgbG9jYWwgdG8gdGhlIHByb2plY3QuIElmIHRoZSBwcm9qZWN0IGhhcyBtb3JlIHRoYW4gb25lIG9mIGl0cyBvd24KLQkgKiBmb2xkZXJzIG9uIHRoZSBidWlsZCBjbGFzc3BhdGgsIHRoZW4gb25lIG9mIHRoZW0gaXMgY2hvc2VuIGFyYml0cmFyaWx5IGFzCi0JICogdGhlIGJ1aWxkIHNvdXJjZSBsb2NhdGlvbi4KLQkgKiAKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqICAgICAgICAgICAgVGhlIHByb2plY3QuCi0JICogQHJldHVybiBBIGJ1aWxkIHNvdXJjZSBwYWNrYWdlIGZyYWdtZW50IHJvb3Qgb2YgdGhlIDxjb2RlPnByb2plY3Q8L2NvZGU+Ci0JICogICAgICAgICBvciBudWxsIGlmIHRoZSBwcm9qZWN0IGhhcyBubyBKYXZhIG5hdHVyZSBvciBpZiB0aGUgcHJvamVjdCdzCi0JICogICAgICAgICBidWlsZCBjbGFzc3BhdGggY29udGFpbnMgbm8gZm9sZGVycyBsb2NhbCB0byB0aGUgcHJvamVjdC4KLQkgKiAgICAgICAgIAotCSAqIEBkZXByZWNhdGVkIG5vdCB1c2VkCi0JICovCi0JcHVibGljIHN0YXRpYyBJUGFja2FnZUZyYWdtZW50Um9vdCBnZXRKYXZhU291cmNlUGFja2FnZUZyYWdtZW50Um9vdChJUHJvamVjdCBwcm9qZWN0KSB7Ci0JCUlQYWNrYWdlRnJhZ21lbnRSb290IHBhY2thZ2VGcmFnbWVudFJvb3QgPSBudWxsOwotCQlJUGF0aCBqYXZhU291cmNlTG9jYXRpb24gPSBnZXRKYXZhU291cmNlTG9jYXRpb24ocHJvamVjdCk7Ci0JCXRyeSB7Ci0JCQlJSmF2YVByb2plY3QgamF2YVByb2plY3QgPSBKYXZhQ29yZS5jcmVhdGUocHJvamVjdCk7Ci0JCQlpZiAoamF2YVByb2plY3QgIT0gbnVsbCkgewotCQkJCXBhY2thZ2VGcmFnbWVudFJvb3QgPSBqYXZhUHJvamVjdC5maW5kUGFja2FnZUZyYWdtZW50Um9vdChqYXZhU291cmNlTG9jYXRpb24pOwotCQkJfQotCQl9IGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkgewotCQl9Ci0JCXJldHVybiBwYWNrYWdlRnJhZ21lbnRSb290OwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHBhY2thZ2UgZnJhZ21lbnQgcm9vdHMgb2YgdGhlIDxjb2RlPnByb2plY3Q8L2NvZGU+IGFzIGFuCi0JICogYXJyYXkgb2YgPGNvZGU+SVBhY2thZ2VGcmFnbWVudFJvb3Q8L2NvZGU+IG9iamVjdHMuIElmIHRoZSBwcm9qZWN0IGhhcwotCSAqIG5vIEphdmEgbmF0dXJlIHRoZW4gdGhlIHJldHVybmVkIGFycmF5IHdpbGwgYmUgb2YgbGVuZ3RoIHplcm8uCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEByZXR1cm4gVGhlIHBhY2thZ2UgZnJhZ21lbnQgcm9vdHMgb2YgdGhlIDxjb2RlPnByb2plY3Q8L2NvZGU+LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVBhY2thZ2VGcmFnbWVudFJvb3RbXSBnZXRKYXZhUGFja2FnZUZyYWdtZW50Um9vdHMoSVByb2plY3QgcHJvamVjdCkgewotCQl0cnkgewotCQkJSUphdmFQcm9qZWN0IGphdmFQcm9qZWN0ID0gSmF2YUNvcmUuY3JlYXRlKHByb2plY3QpOwotCQkJaWYgKGphdmFQcm9qZWN0ICE9IG51bGwpIHsKLQkJCQlJUGFja2FnZUZyYWdtZW50Um9vdFtdIHBhY2thZ2VGcmFnbWVudFJvb3RzID0gamF2YVByb2plY3QKLQkJCQkJCS5nZXRQYWNrYWdlRnJhZ21lbnRSb290cygpOwotCQkJCXJldHVybiBwYWNrYWdlRnJhZ21lbnRSb290czsKLQkJCX0KLQkJfSBjYXRjaCAoSmF2YU1vZGVsRXhjZXB0aW9uIGUpIHsKLQkJfQotCQlyZXR1cm4gbmV3IElQYWNrYWdlRnJhZ21lbnRSb290WzBdOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGJ1aWxkIGNsYXNzcGF0aCBlbnRyaWVzIG9mIHRoZSA8Y29kZT5wcm9qZWN0PC9jb2RlPiBhcyBhbgotCSAqIGFycmF5IG9mIDxjb2RlPklDbGFzc3BhdGhFbnRyeTwvY29kZT4gb2JqZWN0cy4gSWYgdGhlIHByb2plY3QgaGFzIG5vCi0JICogSmF2YSBuYXR1cmUgdGhlbiB0aGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBiZSBvZiBsZW5ndGggemVyby4KLQkgKiAKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqICAgICAgICAgICAgVGhlIHByb2plY3QuCi0JICogQHJldHVybiBUaGUgY2xhc3NwYXRoIGVudHJpZXMgb2YgdGhlIDxjb2RlPnByb2plY3Q8L2NvZGU+LgotCSAqIAotCSAqIEBkZXByZWNhdGVkIG5vdCB1c2VkCi0JICovCi0JcHVibGljIHN0YXRpYyBJQ2xhc3NwYXRoRW50cnlbXSBnZXRKYXZhQ2xhc3NwYXRoKElQcm9qZWN0IHByb2plY3QpIHsKLQkJdHJ5IHsKLQkJCUlKYXZhUHJvamVjdCBqYXZhUHJvamVjdCA9IEphdmFDb3JlLmNyZWF0ZShwcm9qZWN0KTsKLQkJCWlmIChqYXZhUHJvamVjdCAhPSBudWxsKSB7Ci0JCQkJSUNsYXNzcGF0aEVudHJ5W10gY2xhc3NwYXRoRW50cmllcyA9IGphdmFQcm9qZWN0LmdldFJhd0NsYXNzcGF0aCgpOwotCQkJCXJldHVybiBjbGFzc3BhdGhFbnRyaWVzOwotCQkJfQotCQl9IGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkgewotCQl9Ci0JCXJldHVybiBuZXcgSUNsYXNzcGF0aEVudHJ5WzBdOwotCX0KLQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqLwotCXB1YmxpYyBzdGF0aWMgSUZvbGRlciBnZXRXZWJDb21wb25lbnRTZXJ2ZXJSb290KElQcm9qZWN0IHByb2plY3QpewotCQkKLSAgICAgIElGb2xkZXIgd2ViTW9kdWxlU2VydmVyUm9vdCA9IG51bGw7Ci0gICAgICBJVmlydHVhbENvbXBvbmVudCB2YyA9IENvbXBvbmVudENvcmUuY3JlYXRlQ29tcG9uZW50KHByb2plY3QpOwotICAgICAgaWYgKHZjLmV4aXN0cygpKQotICAgICAgICB3ZWJNb2R1bGVTZXJ2ZXJSb290ID0gSjJFRVV0aWxzLmdldE91dHB1dENvbnRhaW5lclJvb3QodmMpOwotCi0JICByZXR1cm4gd2ViTW9kdWxlU2VydmVyUm9vdDsKLQl9Ci0JCi0JLyoqCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiBAcmV0dXJuCi0JICovCi0JcHVibGljIHN0YXRpYyBJUGF0aCBnZXRXZWJDb21wb25lbnRTZXJ2ZXJSb290UGF0aChJUHJvamVjdCBwcm9qZWN0KXsKLQkJCi0gICAgICBJQ29udGFpbmVyIHdlYk1vZHVsZVNlcnZlclJvb3QgPSBudWxsOwotICAgICAgSVZpcnR1YWxDb21wb25lbnQgdmMgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLSAgICAgIGlmICh2YyAhPSBudWxsICYmIHZjLmV4aXN0cygpKXsKLSAgICAgICAgSUNvbnRhaW5lcltdIGNvbnRhaW5lcnMgPSBKMkVFUHJvamVjdFV0aWxpdGllcy5nZXRPdXRwdXRDb250YWluZXJzKHByb2plY3QuZ2V0UHJvamVjdCgpKTsKLSAgICAgICAgaWYgKGNvbnRhaW5lcnMubGVuZ3RoID4gMCkKLSAgICAgICAgICB3ZWJNb2R1bGVTZXJ2ZXJSb290ID0gY29udGFpbmVyc1swXTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgaWYgKHdlYk1vZHVsZVNlcnZlclJvb3QgIT0gbnVsbCkgCi0gICAgCXJldHVybiB3ZWJNb2R1bGVTZXJ2ZXJSb290LmdldEZ1bGxQYXRoKCk7Ci0gICAgICByZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBVUkwgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHdlYiBzZXJ2ZXIgbW9kdWxlIHJvb3Qgb2YgdGhlCi0JICogcHJvamVjdCBpbiBhIHNlcnZlciBpbnN0YW5jZSBvciBudWxsIGlmIHRoZSBwcm9qZWN0IGhhcyBubyBXZWIgbmF0dXJlIG9yCi0JICogaGFzIG5vIGFzc29jaWF0aW9uIHRvIGEgc2VydmVyIGluc3RhbmNlLgotCSAqIAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogICAgICAgICAgICBUaGUgcHJvamVjdC4KLQkgKiBAcmV0dXJuIFRoZSB3ZWIgc2VydmVyIG1vZHVsZSByb290IFVSTCBvciBudWxsIGlmIHRoZSBwcm9qZWN0IGhhcyBubyBXZWIKLQkgKiAgICAgICAgIG5hdHVyZSBvciBoYXMgbm8gYXNzb2NpYXRpb24gdG8gYSBzZXJ2ZXIgaW5zdGFuY2UuCi0JICogQGRlcHJlY2F0ZWQgdXNlIGdldFdlYkNvbXBvbmVudFVSTCguLikgd2hpY2ggYmVsb25ncyBpbiBTZXJ2ZXJVdGlscwotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFdlYlByb2plY3RVUkwoSVByb2plY3QgcHJvamVjdCwKLQkJCVN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQsIElTZXJ2ZXIgc2VydmVyKSB7Ci0KLQkJU3RyaW5nIHdlYlByb2plY3RVUkwgPSBudWxsOwotCQlJTW9kdWxlIG1vZHVsZSA9IGdldE1vZHVsZShwcm9qZWN0KTsKLQkJaWYgKG1vZHVsZSAhPSBudWxsKSB7Ci0JCQlJU2VydmVyIHNlcnZlckluc3RhbmNlID0gU2VydmVyVXRpbHMuZ2V0U2VydmVyRm9yTW9kdWxlKG1vZHVsZSwKLQkJCQkJc2VydmVyRmFjdG9yeUlkLCBzZXJ2ZXIsIHRydWUsIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotCQkJaWYgKHNlcnZlckluc3RhbmNlICE9IG51bGwpIHsKLS8vCQkJCVVSTCB1cmwgPSAoKElVUkxQcm92aWRlcikgc2VydmVySW5zdGFuY2UuZ2V0RGVsZWdhdGUoKSkuZ2V0TW9kdWxlUm9vdFVSTChtb2R1bGUpOwotCQkJCVVSTCB1cmwgPSAoKElVUkxQcm92aWRlcilzZXJ2ZXJJbnN0YW5jZS5nZXRBZGFwdGVyKElVUkxQcm92aWRlci5jbGFzcykpLmdldE1vZHVsZVJvb3RVUkwobW9kdWxlKTsKLQkJCQlpZiAodXJsICE9IG51bGwpIHsKLQkJCQkJU3RyaW5nIHMgPSB1cmwudG9TdHJpbmcoKTsKLQkJCQkJd2ViUHJvamVjdFVSTCA9IChzLmVuZHNXaXRoKCIvIikgPyBzLnN1YnN0cmluZygwLCBzCi0JCQkJCQkJLmxlbmd0aCgpIC0gMSkgOiBzKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJCi0JCUlMb2cgbG9nID0gRW52aXJvbm1lbnRTZXJ2aWNlLmdldEVjbGlwc2VMb2coKTsKLQkJbG9nLmxvZyhJTG9nLklORk8sIDUwMzYsIFJlc291cmNlVXRpbHMuY2xhc3MsICJnZXRXZWJQcm9qZWN0VVJMIiwKLQkJCQkicHJvamVjdD0iICsgcHJvamVjdCArICIsd2ViUHJvamVjdFVSTD0iICsgd2ViUHJvamVjdFVSTCk7Ci0KLQkJcmV0dXJuIHdlYlByb2plY3RVUkw7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIGZvcmdlZCBVUkwgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHdlYiBzZXJ2ZXIgbW9kdWxlIHJvb3QKLQkgKiBvZiB0aGUgcHJvamVjdCBpbiBhIHNlcnZlciBpbnN0YW5jZSBvciBudWxsIGlmIHRoZSBwcm9qZWN0IGhhcyBubyBXZWIKLQkgKiBuYXR1cmUgb3IgaGFzIG5vIGFzc29jaWF0aW9uIHRvIGEgc2VydmVyIGluc3RhbmNlLgotCSAqIAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybiBUaGUgd2ViIHNlcnZlciBtb2R1bGUgcm9vdCBVUkwgb3IgbnVsbCBpZiB0aGUgcHJvamVjdCBoYXMgbm8gV2ViCi0JICogICAgICAgICBuYXR1cmUgb3IgaGFzIG5vIGFzc29jaWF0aW9uIHRvIGEgc2VydmVyIGluc3RhbmNlLgotCSAqIEBkZXByZWNhdGVkICBub3QgdXNlZAotCSAqLwotLy8JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0Rm9yZ2VkV2ViUHJvamVjdFVSTChJUHJvamVjdCBwcm9qZWN0LCBTdHJpbmcgc2VydmVyRmFjdG9yeUlkLCBJU2VydmVyIHNlcnZlcil7Ci0vLyAgCQotLy8gIAlTdHJpbmcgd2ViUHJvamVjdFVSTCA9IG51bGw7Ci0vLyAgCUlNb2R1bGUgbW9kdWxlID0gZ2V0TW9kdWxlKHByb2plY3QpOwotLy8gIAlpZiAobW9kdWxlICE9IG51bGwpCi0vLyAgCXsKLS8vICAJCS8vSVNlcnZlciBzZXJ2ZXJJbnN0YW5jZSA9IFNlcnZlclV0aWxzLmdldFNlcnZlckZvck1vZHVsZShtb2R1bGUsCi0vLwkJICAvLyBzZXJ2ZXJGYWN0b3J5SWQsIHNlcnZlciwgdHJ1ZSwgbmV3IE51bGxQcm9ncmVzc01vbml0b3IoKSk7Ci0vLyAgCQlpZiAoc2VydmVyICE9IG51bGwpCi0vLyAgCQl7Ci0vLyAgCQkJU3RyaW5nIGhvc3RuYW1lID0gc2VydmVyLmdldEhvc3QoKTsKLS8vCi0vLyAgCQkJLy8gZ2V0IFNlcnZlclBvcnQKLS8vICAJCQlpbnQgcG9ydE51bWJlciA9IDA7Ci0vLwotLy8gIAkgICAgICAgICAgU2VydmVyUG9ydFtdIHBvcnRzID0gc2VydmVyLmdldFNlcnZlclBvcnRzKG51bGwpOwotLy8gIAkgICAgICAgICAgU2VydmVyUG9ydCBwb3J0ID0gbnVsbDsKLS8vICAJICAgICAgICAgIGZvciAoaW50IGl0ID0gMDsgaXQ8cG9ydHMubGVuZ3RoOyBpdCsrKQotLy8gIAkgICAgICAgICAgewotLy8gIAkgICAgICAgICAgICBTZXJ2ZXJQb3J0IHAgPSBwb3J0c1tpdF07Ci0vLyAgCSAgICAgICAgICAgIFN0cmluZyBwcm90b2NvbCA9IHAuZ2V0UHJvdG9jb2woKTsKLS8vICAJICAgICAgICAgICAgaWYgKHByb3RvY29sICE9IG51bGwgJiYgcHJvdG9jb2wudHJpbSgpLnRvTG93ZXJDYXNlKCkuZXF1YWxzKCJodHRwIikpCi0vLyAgCSAgICAgICAgICAgIHsKLS8vICAJICAgICAgICAgICAgICBwb3J0ID0gcDsKLS8vICAJICAgICAgICAgICAgICBwb3J0TnVtYmVyID0gcC5nZXRQb3J0KCk7Ci0vLyAgCSAgICAgICAgICAgICAgYnJlYWs7Ci0vLyAgCSAgICAgICAgICAgIH0KLS8vICAJICAgICAgICAgIH0KLS8vICAJICAgICAgICAgIAotLy8gIAkgICAgICAgIAotLy8gIAkgICAgICAgIAotLy8gIAkgICAgICAgIFVSTCB1cmwgPSBudWxsOwotLy8gIAkgICAgICAgIHRyeSB7Ci0vLyAgCSAgICAgICAgCXVybCA9IG5ldyBVUkwoImh0dHAiLCBob3N0bmFtZSwgcG9ydE51bWJlciwgIiIpOwotLy8gIAkgICAgICAgIH0KLS8vICAJICAgICAgICBjYXRjaChFeGNlcHRpb24gZSl7Ci0vLyAgCSAgICAgICAgCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0vLyAgCSAgICAgICAgfQotLy8KLS8vICAJICAgICAgICAKLS8vICAJCQkvL1VSTCB1cmwgPSAoKElVUkxQcm92aWRlcikgc2VydmVySW5zdGFuY2UuZ2V0RGVsZWdhdGUoKSkuZ2V0TW9kdWxlUm9vdFVSTChtb2R1bGUpOwotLy8gIAkJCQotLy8gIAkJCWlmICh1cmwgIT0gbnVsbCkKLS8vICAJCQl7Ci0vLyAgCQkJCVN0cmluZyBzID0gdXJsLnRvU3RyaW5nKCk7Ci0vLyAgCQkJCXdlYlByb2plY3RVUkwgPSBzICsgIi8iK3Byb2plY3QuZ2V0TmFtZSgpOwotLy8gIAkJCQkvL3dlYlByb2plY3RVUkwgPSAocy5lbmRzV2l0aCgiLyIpID8gcy5zdWJzdHJpbmcoMCxzLmxlbmd0aCgpLTEpIDogcyk7Ci0vLyAgCQkJfQotLy8gIAkJfQotLy8gIAl9Ci0vLyAJSUxvZyBsb2cgPSBuZXcgRWNsaXBzZUxvZygpOwotLy8gICAgbG9nLmxvZyhJTG9nLklORk8sIDUwMzYsIFJlc291cmNlVXRpbHMuY2xhc3MsICJnZXRXZWJQcm9qZWN0VVJMIiwgInByb2plY3Q9Iitwcm9qZWN0KyIsd2ViUHJvamVjdFVSTD0iK3dlYlByb2plY3RVUkwpOwotLy8gIAlyZXR1cm4gd2ViUHJvamVjdFVSTDsgIAkKLS8vICB9Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgVVJMIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoZSB3ZWIgc2VydmVyIG1vZHVsZSByb290IG9mIHRoZQotCSAqIHByb2plY3QgaW4gYSBzZXJ2ZXIgaW5zdGFuY2Ugb3IgbnVsbCBpZiB0aGUgcHJvamVjdCBoYXMgbm8gV2ViIG5hdHVyZSBvcgotCSAqIGhhcyBubyBhc3NvY2lhdGlvbiB0byBhIHNlcnZlciBpbnN0YW5jZS4KLQkgKiAKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqICAgICAgICAgICAgVGhlIHByb2plY3QuCi0JICogQHJldHVybiBUaGUgd2ViIHNlcnZlciBtb2R1bGUgcm9vdCBVUkwgb3IgbnVsbCBpZiB0aGUgcHJvamVjdCBoYXMgbm8gV2ViCi0JICogICAgICAgICBuYXR1cmUgb3IgaGFzIG5vIGFzc29jaWF0aW9uIHRvIGEgc2VydmVyIGluc3RhbmNlLgotCSAqIEBkZXByZWNhdGVkIGJlbG9uZ3MgaW4gU2VydmVyVXRpbHMKLQkgKgotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFdlYlByb2plY3RVUkwoSVByb2plY3QgcHJvamVjdCkgewotCQlTdHJpbmcgd2ViUHJvamVjdFVSTCA9IG51bGw7Ci0JCUlNb2R1bGUgbW9kdWxlID0gZ2V0TW9kdWxlKHByb2plY3QpOwotCQlpZiAobW9kdWxlICE9IG51bGwpIHsKLQkJCUlTZXJ2ZXIgc2VydmVySW5zdGFuY2UgPSBTZXJ2ZXJVdGlscy5nZXRTZXJ2ZXJGb3JNb2R1bGUobW9kdWxlKTsKLQkJCWlmIChzZXJ2ZXJJbnN0YW5jZSAhPSBudWxsKSB7Ci0JCQkJVVJMIHVybCA9ICgoSVVSTFByb3ZpZGVyKXNlcnZlckluc3RhbmNlLmdldEFkYXB0ZXIoSVVSTFByb3ZpZGVyLmNsYXNzKSkuZ2V0TW9kdWxlUm9vdFVSTChtb2R1bGUpOwotCQkJCWlmICh1cmwgIT0gbnVsbCkgewotCQkJCQlTdHJpbmcgcyA9IHVybC50b1N0cmluZygpOwotCQkJCQl3ZWJQcm9qZWN0VVJMID0gKHMuZW5kc1dpdGgoIi8iKSA/IHMuc3Vic3RyaW5nKDAsIHMKLQkJCQkJCQkubGVuZ3RoKCkgLSAxKSA6IHMpOwotCQkJCX0KLQkJCX0KLQkJfQotCQlJTG9nIGxvZyA9IEVudmlyb25tZW50U2VydmljZS5nZXRFY2xpcHNlTG9nKCk7Ci0JCWxvZy5sb2coSUxvZy5JTkZPLCA1MDM3LCBSZXNvdXJjZVV0aWxzLmNsYXNzLCAiZ2V0V2ViUHJvamVjdFVSTCIsCi0JCQkJInByb2plY3Q9IiArIHByb2plY3QgKyAiLHdlYlByb2plY3RVUkw9IiArIHdlYlByb2plY3RVUkwpOwotCi0JCXJldHVybiB3ZWJQcm9qZWN0VVJMOwotCX0KLQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqIAotCSAqIEBkZXByZWNhdGVkIHNob3VsZCBiZSBpbiBTZXJ2ZXJVdGlscwotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEVuY29kZWRXZWJQcm9qZWN0VVJMKElQcm9qZWN0IHByb2plY3QpIHsKLQkJU3RyaW5nIHVybCA9IGdldFdlYlByb2plY3RVUkwocHJvamVjdCk7Ci0JCWlmICh1cmwgIT0gbnVsbCkgewotCQkJaW50IGluZGV4ID0gdXJsLmxhc3RJbmRleE9mKCcvJyk7Ci0JCQlpZiAoaW5kZXggIT0gLTEpIHsKLQkJCQlTdHJpbmdCdWZmZXIgZW5jb2RlZFVSTCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLQkJCQllbmNvZGVkVVJMLmFwcGVuZCh1cmwuc3Vic3RyaW5nKDAsIGluZGV4ICsgMSkpOwotCQkJCXRyeSB7Ci0JCQkJCVN0cmluZyBjdHh0Um9vdCA9IFVSTEVuY29kZXIuZW5jb2RlKHVybC5zdWJzdHJpbmcoaW5kZXggKyAxLCB1cmwubGVuZ3RoKCkpLCAiVVRGLTgiKTsKLQkJCQkJaW50IHBsdXNJbmRleCA9IGN0eHRSb290LmluZGV4T2YoJysnKTsKLQkJCQkJd2hpbGUgKHBsdXNJbmRleCAhPSAtMSkgewotCQkJCQkJU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQkJCQkJc2IuYXBwZW5kKGN0eHRSb290LnN1YnN0cmluZygwLCBwbHVzSW5kZXgpKTsKLQkJCQkJCXNiLmFwcGVuZCgiJTIwIik7Ci0JCQkJCQlzYi5hcHBlbmQoY3R4dFJvb3Quc3Vic3RyaW5nKHBsdXNJbmRleCArIDEsIGN0eHRSb290Ci0JCQkJCQkJLmxlbmd0aCgpKSk7Ci0JCQkJCQljdHh0Um9vdCA9IHNiLnRvU3RyaW5nKCk7Ci0JCQkJCQlwbHVzSW5kZXggPSBjdHh0Um9vdC5pbmRleE9mKCcrJyk7Ci0JCQkJCX0KLQkJCQkJZW5jb2RlZFVSTC5hcHBlbmQoY3R4dFJvb3QpOwotCQkJCX1jYXRjaCAoSU9FeGNlcHRpb24gaW8pewotCQkJCQkvL2hhbmRsZXIgZXhjZXB0aW9uCi0JCQkJfQkJCQkKLQkJCQl1cmwgPSBlbmNvZGVkVVJMLnRvU3RyaW5nKCk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIHVybDsKLQl9Ci0KLQkvKioKLQkgKiBHaXZlbiB0aGUgPGNvZGU+YWJzb2x1dGVQYXRoPC9jb2RlPiBvZiBhIEphdmEgcmVzb3VyY2UsIHJldHVybnMgdGhlCi0JICogcGFja2FnZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBvciBudWxsIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgcHJvcGVybHkKLQkgKiBsb2NhdGVkIGluIGEgcHJvamVjdCBvciBmb2xkZXIgb24gdGhlIGJ1aWxkIGNsYXNzcGF0aCBvciB0aGF0IGlzIHRoZQotCSAqIGJ1aWxkIG91dHB1dCBwYXRoLgotCSAqIAotCSAqIEBwYXJhbSBhYnNvbHV0ZVBhdGgKLQkgKiAgICAgICAgICAgIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBKYXZhIHJlc291cmNlLgotCSAqIEByZXR1cm4gdGhlIHBhY2thZ2UgbmFtZSBvZiB0aGUgSmF2YSByZXNvdXJjZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRKYXZhUmVzb3VyY2VQYWNrYWdlTmFtZShJUGF0aCBhYnNvbHV0ZVBhdGgpIHsKLQkJdHJ5IHsKLQkJCUlQYXRoIGphdmFGb2xkZXJQYXRoID0gYWJzb2x1dGVQYXRoLnJlbW92ZUxhc3RTZWdtZW50cygxKTsKLQkJCUlQcm9qZWN0IHByb2plY3QgPSBnZXRQcm9qZWN0T2YoYWJzb2x1dGVQYXRoKTsKLQkJCUlKYXZhUHJvamVjdCBqYXZhUHJvamVjdCA9IEphdmFDb3JlLmNyZWF0ZShwcm9qZWN0KTsKLQkJCWlmIChqYXZhUHJvamVjdCAhPSBudWxsKSB7Ci0JCQkJSVBhY2thZ2VGcmFnbWVudCBmcmFnbWVudCA9IGphdmFQcm9qZWN0Ci0JCQkJCQkuZmluZFBhY2thZ2VGcmFnbWVudChqYXZhRm9sZGVyUGF0aCk7Ci0JCQkJaWYgKGZyYWdtZW50ICE9IG51bGwpIHsKLQkJCQkJcmV0dXJuIGZyYWdtZW50LmdldEVsZW1lbnROYW1lKCk7Ci0JCQkJfQotCQkJCUlQYXRoIG91dHB1dFBhdGggPSBnZXRKYXZhT3V0cHV0TG9jYXRpb24ocHJvamVjdCk7Ci0JCQkJaWYgKG91dHB1dFBhdGguaXNQcmVmaXhPZihqYXZhRm9sZGVyUGF0aCkpIHsKLQkJCQkJSVBhdGggamF2YVBhY2thZ2VQYXRoID0gamF2YUZvbGRlclBhdGgKLQkJCQkJCQkucmVtb3ZlRmlyc3RTZWdtZW50cyhvdXRwdXRQYXRoLnNlZ21lbnRDb3VudCgpKTsKLQkJCQkJcmV0dXJuIGphdmFQYWNrYWdlUGF0aC5pc0VtcHR5KCkgPyBudWxsIDogamF2YVBhY2thZ2VQYXRoCi0JCQkJCQkJLnRvU3RyaW5nKCkucmVwbGFjZShJUGF0aC5TRVBBUkFUT1IsICcuJyk7Ci0JCQkJfQotCQkJfQotCQl9IGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkgewotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIEdpdmVuIHRoZSA8Y29kZT5hYnNvbHV0ZVBhdGg8L2NvZGU+IG9mIGEgSmF2YSByZXNvdXJjZSwgcmV0dXJucyB0aGUKLQkgKiBwYWNrYWdlIG5hbWUgb2YgdGhlIHJlc291cmNlIGFzIGEgcmVsYXRpdmUgcGF0aG5hbWUgb3IgbnVsbCBpZiB0aGUKLQkgKiByZXNvdXJjZSBpcyBub3QgcHJvcGVybHkgbG9jYXRlZCBpbiBhIHByb2plY3Qgb3IgZm9sZGVyIG9uIHRoZSBidWlsZAotCSAqIGNsYXNzcGF0aC4KLQkgKiAKLQkgKiBAcGFyYW0gYWJzb2x1dGVQYXRoCi0JICogICAgICAgICAgICBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgSmF2YSByZXNvdXJjZS4KLQkgKiBAcmV0dXJuIHRoZSBwYWNrYWdlIG5hbWUgb2YgdGhlIEphdmEgcmVzb3VyY2UgYXMgYSByZWxhdGl2ZSBwYXRoLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVBhdGggZ2V0SmF2YVJlc291cmNlUGFja2FnZVBhdGgoSVBhdGggYWJzb2x1dGVQYXRoKSB7Ci0JCVN0cmluZyBwYWNrYWdlTmFtZSA9IFJlc291cmNlVXRpbHMKLQkJCQkuZ2V0SmF2YVJlc291cmNlUGFja2FnZU5hbWUoYWJzb2x1dGVQYXRoKTsKLQkJcmV0dXJuIChwYWNrYWdlTmFtZSA9PSBudWxsID8gbnVsbCA6IG5ldyBQYXRoKHBhY2thZ2VOYW1lLnJlcGxhY2UoJy4nLAotCQkJCUlQYXRoLlNFUEFSQVRPUikpKTsKLQl9Ci0KLQkvKioKLQkgKiBHaXZlbiB0aGUgPGNvZGU+YWJzb2x1dGVQYXRoPC9jb2RlPiBvZiBhIEphdmEgcmVzb3VyY2UsIHJldHVybnMgdGhlCi0JICogYWJzb2x1dGUgcGF0aCBvZiB0aGUgcHJvamVjdCBvciBmb2xkZXIgdGhhdCBpcyBvbiB0aGUgYnVpbGQgY2xhc3NwYXRoIG9yCi0JICogaXMgdGhlIGJ1aWxkIG91dHB1dCBwYXRoIGFuZCB0aGF0IGNvbnRhaW5zIHRoZSBmdWxseSBxdWFsaWZpZWQgSmF2YQotCSAqIHJlc291cmNlLCBvciBudWxsIGlmIG5vIHN1Y2ggcHJvamVjdCBvciBmb2xkZXIgZXhpc3RzLgotCSAqIAotCSAqIEBwYXJhbSBhYnNvbHV0ZVBhdGgKLQkgKiAgICAgICAgICAgIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBKYXZhIHJlc291cmNlLgotCSAqIEByZXR1cm4gVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIHByb2plY3Qgb3IgZm9sZGVyIGNvbnRhaW5pbmcgdGhlIGZ1bGx5Ci0JICogICAgICAgICBxdWFsaWZpZWQgSmF2YSByZXNvdXJjZS4KLQkgKiBAZGVwcmVjYXRlZCBub3QgdXNlZAotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVBhdGggZ2V0SmF2YVJlc291cmNlUm9vdFBhdGgoSVBhdGggYWJzb2x1dGVQYXRoKSB7Ci0JCXRyeSB7Ci0JCQlJUHJvamVjdCBwcm9qZWN0ID0gZ2V0UHJvamVjdE9mKGFic29sdXRlUGF0aCk7Ci0JCQlJSmF2YVByb2plY3QgamF2YVByb2plY3QgPSBKYXZhQ29yZS5jcmVhdGUocHJvamVjdCk7Ci0JCQlpZiAoamF2YVByb2plY3QgIT0gbnVsbCkgewotCQkJCUlQYWNrYWdlRnJhZ21lbnRSb290W10gcGZycyA9IGphdmFQcm9qZWN0Ci0JCQkJCQkuZ2V0UGFja2FnZUZyYWdtZW50Um9vdHMoKTsKLQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHBmcnMubGVuZ3RoOyBpKyspIHsKLQkJCQkJSVJlc291cmNlIGZyYWdtZW50Um9vdCA9IHBmcnNbaV0uZ2V0Q29ycmVzcG9uZGluZ1Jlc291cmNlKCk7Ci0JCQkJCWlmIChmcmFnbWVudFJvb3QgIT0gbnVsbCkgewotCQkJCQkJSVBhdGggZnJhZ21lbnRQYXRoID0gZnJhZ21lbnRSb290LmdldEZ1bGxQYXRoKCk7Ci0JCQkJCQlpZiAoZnJhZ21lbnRQYXRoLmlzUHJlZml4T2YoYWJzb2x1dGVQYXRoKSkgewotCQkJCQkJCXJldHVybiBmcmFnbWVudFBhdGg7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0JCQkJSVBhdGggb3V0cHV0UGF0aCA9IGdldEphdmFPdXRwdXRMb2NhdGlvbihwcm9qZWN0KTsKLQkJCQlpZiAob3V0cHV0UGF0aC5pc1ByZWZpeE9mKGFic29sdXRlUGF0aCkpIHsKLQkJCQkJcmV0dXJuIG91dHB1dFBhdGg7Ci0JCQkJfQotCQkJfQotCQl9IGNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkgewotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIERldGVybWluZXMgYW4gVVJMIChIVFRQIG9yIEZJTEUpIHRvIGFuIEVjbGlwc2UgcmVzb3VyY2UsIHJldHVybmluZyB0aGUKLQkgKiBVUkwgc3RyaW5nIGlmIHN1Y2Nlc3NmdWwgYW5kIGZhbHNlIG90aGVyd2lzZS4gQSB2YWx1ZSBvZiBudWxsIHdpbGwKLQkgKiBkZWZpbml0ZWx5IGJlIHJldHVybmVkIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQ6Ci0JICogPG9sPgotCSAqIDxsaT5UaGUgYWJzb2x1dGUgcGF0aCBiZWdpbnMgd2l0aCBhIFdlYiBQcm9qZWN0LgotCSAqIDxsaT5UaGUgbGVhZGluZyBwb3J0aW9uIG9mIHRoZSBhYnNvbHV0ZSBwYXRoIG1hdGNoZXMgdGhlIHBhdGggb2YgdGhlCi0JICogY29udGFpbmVyIHJldHVybmVkIGJ5IHsjbGluayAjZ2V0V2ViTW9kdWxlU2VydmVyUm9vdAotCSAqIGdldFdlYk1vZHVsZVNlcnZlclJvb3R9IGZvciB0aGUgcHJvamVjdC4KLQkgKiA8bGk+VGhlIHBhdGggZG9lcyBub3QgbGVhZCB0byB0aGUgV0VCLUlORiBmb2xkZXIgb3IgYW55IGRlc2NlbmRlbnQKLQkgKiB0aGVyZW9mLgotCSAqIDxsaT5UaGUgV2ViIFByb2plY3QgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIGV4cGxpY2l0IG9yIGRlZmF1bHQgc2VydmVyCi0JICogaW5zdGFuY2UuCi0JICogPC9vbD4KLQkgKiAKLQkgKiBAcGFyYW0gYWJzb2x1dGVQYXRoCi0JICogICAgICAgICAgICBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgcmVzb3VyY2UuCi0JICogQHJldHVybiBUaGUgVVJMIG9mIHRoZSBmaWxlLCBvciBudWxsIGlmIG5vIFVSTCBjYW4gYmUgZGV0ZXJtaW5lZC4KLQkgKiBAZGVwcmVjYXRlZCBub3QgdXNlZAotCSAqLwotLy8JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0VVJMRnJvbVBhdGgoSVBhdGggYWJzb2x1dGVQYXRoLAotLy8JCQlTdHJpbmcgc2VydmVyRmFjdG9yeUlkLCBJU2VydmVyIHNlcnZlcikgewotLy8JCXJldHVybiBnZXRVUkxGcm9tUGF0aChhYnNvbHV0ZVBhdGgsIGdldFdlYlByb2plY3RVUkwoCi0vLwkJCQlnZXRQcm9qZWN0T2YoYWJzb2x1dGVQYXRoKSwgc2VydmVyRmFjdG9yeUlkLCBzZXJ2ZXIpKTsKLS8vCX0KLQotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBhYnNvbHV0ZVBhdGgKLQkgKiBAcGFyYW0gd2ViUHJvamVjdFVSTAotCSAqIEByZXR1cm4KLQkgKiBAZGVwcmVjYXRlZCBub3QgdXNlZAotCSAqLwotLy8JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0VVJMRnJvbVBhdGgoSVBhdGggYWJzb2x1dGVQYXRoLCBTdHJpbmcgd2ViUHJvamVjdFVSTCkgewotLy8JCVN0cmluZ0J1ZmZlciB1cmwgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0vLwkJSVByb2plY3QgcHJvamVjdCA9IGdldFByb2plY3RPZihhYnNvbHV0ZVBhdGgpOwotLy8JCUlDb250YWluZXIgd2ViTW9kdWxlU2VydmVyUm9vdCA9IGdldFdlYk1vZHVsZVNlcnZlclJvb3QocHJvamVjdCk7Ci0vLwkJaWYgKHdlYk1vZHVsZVNlcnZlclJvb3QgIT0gbnVsbCkgewotLy8JCQlJUGF0aCB3ZWJNb2R1bGVTZXJ2ZXJSb290UGF0aCA9IHdlYk1vZHVsZVNlcnZlclJvb3QuZ2V0RnVsbFBhdGgoKTsKLS8vCQkJaWYgKHdlYk1vZHVsZVNlcnZlclJvb3RQYXRoLmlzUHJlZml4T2YoYWJzb2x1dGVQYXRoKSkgewotLy8JCQkJaW50IG51bVNlZ21lbnQgPSB3ZWJNb2R1bGVTZXJ2ZXJSb290UGF0aC5zZWdtZW50Q291bnQoKTsKLS8vCQkJCWludCBudW1TZWdtZW50RnJvbVBhdGggPSBhYnNvbHV0ZVBhdGguc2VnbWVudENvdW50KCk7Ci0vLwkJCQlpZiAobnVtU2VnbWVudEZyb21QYXRoID4gbnVtU2VnbWVudCkgewotLy8JCQkJCVN0cmluZyBuZXh0U2VnbWVudCA9IGFic29sdXRlUGF0aC5zZWdtZW50KG51bVNlZ21lbnQpOwotLy8JCQkJCS8vIGNoZWNrIGlmIHRoZSBzZWdtZW50IGFmdGVyIHRoZSBXZWJNb2R1bGVTZXJ2ZXJSb290IGlzCi0vLwkJCQkJLy8gV0VCLUlORiAoaWdub3JpbmcgY2FzZSkKLS8vCQkJCQlpZiAobmV4dFNlZ21lbnQgIT0gbnVsbAkmJiAhbmV4dFNlZ21lbnQuZXF1YWxzSWdub3JlQ2FzZSgiV0VCLUlORiIpKSB7Ci0vLwkJCQkJCUlQYXRoIHJlbGF0aXZlUGF0aCA9IGFic29sdXRlUGF0aC5yZW1vdmVGaXJzdFNlZ21lbnRzKG51bVNlZ21lbnQpOwotLy8JCQkJCQlpZiAod2ViUHJvamVjdFVSTCAhPSBudWxsKQotLy8JCQkJCQkJdXJsLmFwcGVuZCh3ZWJQcm9qZWN0VVJMKS5hcHBlbmQoSVBhdGguU0VQQVJBVE9SKS5hcHBlbmQocmVsYXRpdmVQYXRoLnRvU3RyaW5nKCkpOwotLy8JCQkJCX0KLS8vCQkJCX0gZWxzZSBpZiAobnVtU2VnbWVudEZyb21QYXRoID09IG51bVNlZ21lbnQpCi0vLwkJCQkJdXJsLmFwcGVuZCh3ZWJQcm9qZWN0VVJMKTsKLS8vCQkJfQotLy8JCX0KLS8vCQlpZiAodXJsLmxlbmd0aCgpIDwgMSkgewotLy8JCQlJV29ya3NwYWNlUm9vdCB3b3Jrc3BhY2UgPSBnZXRXb3Jrc3BhY2VSb290KCk7Ci0vLwkJCXVybC5hcHBlbmQoZ2V0UmVzb3VyY2VVUkkod29ya3NwYWNlLmdldEZpbGUoYWJzb2x1dGVQYXRoKSkpOwotLy8JCX0KLS8vCQlJTG9nIGxvZyA9IG5ldyBFY2xpcHNlTG9nKCk7Ci0vLwkJbG9nLmxvZyhJTG9nLklORk8sIDUwMzgsIFJlc291cmNlVXRpbHMuY2xhc3MsICJnZXRVUkxGcm9tUGF0aCIsCi0vLwkJCQkiYWJzb2x1dGVQYXRoPSIgKyBhYnNvbHV0ZVBhdGggKyAiLHVybD0iICsgdXJsKTsKLS8vCi0vLwkJcmV0dXJuIHVybC50b1N0cmluZygpOwotLy8JfQotCi0JLyoqCi0JICogQ29waWVzIGEgc2V0IG9mIGZpbGVzIGZyb20gYSBwbHVnaW4ncyBpbnN0YWxsYXRpb24gbG9jYXRpb24gdG8gYSBuYXRpdmUKLQkgKiBkaXJlY3RvcnkuIFRoZSBmaWxlcyBhcmUgbmFtZWQgaW4gYW4gaW5kZXggZmlsZSBsb2NhdGVkIHJlbGF0aXZlIHRvIHRoZQotCSAqIHBsdWdpbidzIGluc3RhbGxhdGlvbiBsb2NhdGlvbi4KLQkgKiAKLQkgKiBAcGFyYW0gcGx1Z2luCi0JICogICAgICAgICAgICBUaGUgcGx1Z2luIGNvbnRhaW5pbmcgdGhlIGZpbGVzIHRvIGNvcHkuIE11c3Qgbm90IGJlIG51bGwuCi0JICogQHBhcmFtIHNvdXJjZVBhdGgKLQkgKiAgICAgICAgICAgIFRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgPGNvZGU+cGx1Z2luPC9jb2RlPiBpbnN0YWxsCi0JICogICAgICAgICAgICBsb2NhdGlvbiwgY29udGFpbmluZyB0aGUgZmlsZXMgdG8gY29weS4gSWYgbnVsbCwgdGhlbiB0aGUKLQkgKiAgICAgICAgICAgIHBsdWdpbiBpbnN0YWxsIGxvY2F0aW9uIGlzIHRoZSBzb3VyY2UgcGF0aCAoaWUuIG51bGwgaXMKLQkgKiAgICAgICAgICAgIGVxdWl2YWxlbnQgdG8gIi4iKS4KLQkgKiBAcGFyYW0gaW5kZXhQYXRobmFtZQotCSAqICAgICAgICAgICAgQSBmaWxlIGNvbnRhaW5pbmcgYSB3aGl0ZXNwYWNlLWRlbGltaXR0ZWQgbGlzdCBvZiBwYXRobmFtZXMgb2YKLQkgKiAgICAgICAgICAgIHRoZSBmaWxlcyB0byBjb3B5LiBUaGUgcGF0aG5hbWVzIGFyZSByZWxhdGl2ZSB0byB0aGUKLQkgKiAgICAgICAgICAgIDxjb2RlPnBsdWdpbiBzb3VyY2VQYXRoPC9jb2RlPi4gTXVzdCBub3QgYmUgbnVsbC4KLQkgKiBAcGFyYW0gdGFyZ2V0UGF0aAotCSAqICAgICAgICAgICAgVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIG5hdGl2ZSBkaXJlY3RvcnkgdG8gd2hpY2ggdGhlIGZpbGVzCi0JICogICAgICAgICAgICB3aWxsIGJlIGNvcGllZC4gVGhlIHJlbGF0aXZlIHBhdGhuYW1lcyBvZiB0aGUgZmlsZXMgbmFtZWQgaW4KLQkgKiAgICAgICAgICAgIHRoZSA8Y29kZT5pbmRleFBhdGhuYW1lPC9jb2RlPiBmaWxlIGFyZSBwcmVzZXJ2ZWQuIE11c3Qgbm90Ci0JICogICAgICAgICAgICBiZSBudWxsLgotCSAqIEBwYXJhbSBwcm9ncmVzc01vbml0b3IKLQkgKiAgICAgICAgICAgIFRoZSBwcm9ncmVzcyBtb25pdG9yIGZvciB0aGUgb3BlcmF0aW9uLCBvciBudWxsLgotCSAqIEB0aHJvd3MgSU9FeGNlcHRpb24KLQkgKiAgICAgICAgICAgICBBbiBleGNlcHRpb24gaW5kaWNhdGluZyBhbiBJTyBlcnJvciBoYXMgb2NjdXJlZC4KLQkgKi8KLQlzdGF0aWMgcHVibGljIHZvaWQgY29weUluZGV4ZWRGaWxlc1RvT1MoUGx1Z2luIHBsdWdpbiwgSVBhdGggc291cmNlUGF0aCwKLQkJCUlQYXRoIGluZGV4UGF0aG5hbWUsIElQYXRoIHRhcmdldFBhdGgsCi0JCQlJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvcikgdGhyb3dzIElPRXhjZXB0aW9uIHsKLQkJSW5wdXRTdHJlYW0gaW5wdXQgPSBwbHVnaW4ub3BlblN0cmVhbShpbmRleFBhdGhuYW1lKTsKLQkJRW51bWVyYXRpb24gZmlsZW5hbWVzID0gU3RyaW5nVXRpbHMucGFyc2VGaWxlbmFtZXNGcm9tU3RyZWFtKGlucHV0KTsKLQkJY29weUVudW1lcmF0ZWRGaWxlc1RvT1MocGx1Z2luLCBzb3VyY2VQYXRoLCBmaWxlbmFtZXMsIHRhcmdldFBhdGgsCi0JCQkJcHJvZ3Jlc3NNb25pdG9yKTsKLQl9Ci0KLQkvKioKLQkgKiBDb3BpZXMgYSBzZXQgb2YgZmlsZXMgZnJvbSBhIHBsdWdpbidzIGluc3RhbGxhdGlvbiBsb2NhdGlvbiB0byBhIG5hdGl2ZQotCSAqIGRpcmVjdG9yeS4gVGhlIGZpbGVzIGFyZSBuYW1lZCBpbiBhbiBlbnVtZXJhdGlvbi4KLQkgKiAKLQkgKiBAcGFyYW0gcGx1Z2luCi0JICogICAgICAgICAgICBUaGUgcGx1Z2luIGNvbnRhaW5pbmcgdGhlIGZpbGVzIHRvIGNvcHkuIE11c3Qgbm90IGJlIG51bGwuCi0JICogQHBhcmFtIHNvdXJjZVBhdGgKLQkgKiAgICAgICAgICAgIFRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgPGNvZGU+cGx1Z2luPC9jb2RlPiBpbnN0YWxsCi0JICogICAgICAgICAgICBsb2NhdGlvbiwgY29udGFpbmluZyB0aGUgZmlsZXMgdG8gY29weS4gSWYgbnVsbCwgdGhlbiB0aGUKLQkgKiAgICAgICAgICAgIHBsdWdpbiBpbnN0YWxsIGxvY2F0aW9uIGlzIHRoZSBzb3VyY2UgcGF0aCAoaWUuIG51bGwgaXMKLQkgKiAgICAgICAgICAgIGVxdWl2YWxlbnQgdG8gIi4iKS4KLQkgKiBAcGFyYW0gcGF0aG5hbWVzCi0JICogICAgICAgICAgICBBbiBlbnVtZXJhdGlvbiBvZiBwYXRobmFtZXMgb2YgdGhlIGZpbGVzIHRvIGNvcHkuIFRoZQotCSAqICAgICAgICAgICAgcGF0aG5hbWVzIGFyZSByZWxhdGl2ZSB0byB0aGUgPGNvZGU+cGx1Z2luIHNvdXJjZVBhdGg8L2NvZGU+LgotCSAqICAgICAgICAgICAgTXVzdCBub3QgYmUgbnVsbC4KLQkgKiBAcGFyYW0gdGFyZ2V0UGF0aAotCSAqICAgICAgICAgICAgVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIG5hdGl2ZSBkaXJlY3RvcnkgdG8gd2hpY2ggdGhlIGZpbGVzCi0JICogICAgICAgICAgICB3aWxsIGJlIGNvcGllZC4gVGhlIHJlbGF0aXZlIHBhdGhuYW1lcyBvZiB0aGUgZmlsZXMgbmFtZWQgaW4KLQkgKiAgICAgICAgICAgIHRoZSA8Y29kZT5wYXRobmFtZXM8L2NvZGU+IGVudW1lcmF0aW9uIGFyZSBwcmVzZXJ2ZWQuIE11c3QKLQkgKiAgICAgICAgICAgIG5vdCBiZSBudWxsLgotCSAqIEBwYXJhbSBwcm9ncmVzc01vbml0b3IKLQkgKiAgICAgICAgICAgIFRoZSBwcm9ncmVzcyBtb25pdG9yIGZvciB0aGUgb3BlcmF0aW9uLCBvciBudWxsLgotCSAqIEB0aHJvd3MgSU9FeGNlcHRpb24KLQkgKiAgICAgICAgICAgICBBbiBleGNlcHRpb24gaW5kaWNhdGluZyBhbiBJTyBlcnJvciBoYXMgb2NjdXJlZC4KLQkgKi8KLQlzdGF0aWMgcHVibGljIHZvaWQgY29weUVudW1lcmF0ZWRGaWxlc1RvT1MoUGx1Z2luIHBsdWdpbiwgSVBhdGggc291cmNlUGF0aCwKLQkJCUVudW1lcmF0aW9uIHBhdGhuYW1lcywgSVBhdGggdGFyZ2V0UGF0aCwKLQkJCUlQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yKSB0aHJvd3MgSU9FeGNlcHRpb24gewotCQl3aGlsZSAocGF0aG5hbWVzLmhhc01vcmVFbGVtZW50cygpKSB7Ci0JCQlTdHJpbmcgZmlsZW5hbWUgPSAoU3RyaW5nKSBwYXRobmFtZXMubmV4dEVsZW1lbnQoKTsKLQkJCWNvcHlGaWxlVG9PUyhwbHVnaW4sIHNvdXJjZVBhdGgsIG5ldyBQYXRoKGZpbGVuYW1lKSwgdGFyZ2V0UGF0aCwKLQkJCQkJcHJvZ3Jlc3NNb25pdG9yKTsKLQkJfQotCX0KLQotCS8qKgotCSAqIENvcGllcyBhIGZpbGUgZnJvbSBhIHBsdWdpbidzIGluc3RhbGxhdGlvbiBsb2NhdGlvbiB0byBhIG5hdGl2ZQotCSAqIGRpcmVjdG9yeS4KLQkgKiAKLQkgKiBAcGFyYW0gcGx1Z2luCi0JICogICAgICAgICAgICBUaGUgcGx1Z2luIGNvbnRhaW5pbmcgdGhlIGZpbGVzIHRvIGNvcHkuIE11c3Qgbm90IGJlIG51bGwuCi0JICogQHBhcmFtIHNvdXJjZVBhdGgKLQkgKiAgICAgICAgICAgIFRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgPGNvZGU+cGx1Z2luPC9jb2RlPiBpbnN0YWxsCi0JICogICAgICAgICAgICBsb2NhdGlvbiwgY29udGFpbmluZyB0aGUgZmlsZXMgdG8gY29weS4gSWYgbnVsbCwgdGhlbiB0aGUKLQkgKiAgICAgICAgICAgIHBsdWdpbiBpbnN0YWxsIGxvY2F0aW9uIGlzIHRoZSBzb3VyY2UgcGF0aCAoaWUuIG51bGwgaXMKLQkgKiAgICAgICAgICAgIGVxdWl2YWxlbnQgdG8gIi4iKS4KLQkgKiBAcGFyYW0gcGF0aG5hbWUKLQkgKiAgICAgICAgICAgIFRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBjb3B5LiBUaGUgcGF0aG5hbWUgaXMgcmVsYXRpdmUgdG8KLQkgKiAgICAgICAgICAgIHRoZSA8Y29kZT5wbHVnaW4gc291cmNlUGF0aDwvY29kZT4uIE11c3Qgbm90IGJlIG51bGwuCi0JICogQHBhcmFtIHRhcmdldFBhdGgKLQkgKiAgICAgICAgICAgIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBuYXRpdmUgZGlyZWN0b3J5IHRvIHdoaWNoIHRoZSBmaWxlCi0JICogICAgICAgICAgICB3aWxsIGJlIGNvcGllZC4gVGhlIHJlbGF0aXZlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGlzCi0JICogICAgICAgICAgICBwcmVzZXJ2ZWQuIE11c3Qgbm90IGJlIG51bGwuCi0JICogQHBhcmFtIHByb2dyZXNzTW9uaXRvcgotCSAqICAgICAgICAgICAgVGhlIHByb2dyZXNzIG1vbml0b3IgZm9yIHRoZSBvcGVyYXRpb24sIG9yIG51bGwuCi0JICogQHRocm93cyBJT0V4Y2VwdGlvbgotCSAqICAgICAgICAgICAgIEFuIGV4Y2VwdGlvbiBpbmRpY2F0aW5nIGFuIElPIGVycm9yIGhhcyBvY2N1cmVkLgotCSAqLwotCXN0YXRpYyBwdWJsaWMgdm9pZCBjb3B5RmlsZVRvT1MoUGx1Z2luIHBsdWdpbiwgSVBhdGggc291cmNlUGF0aCwKLQkJCUlQYXRoIHBhdGhuYW1lLCBJUGF0aCB0YXJnZXRQYXRoLCBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvcikKLQkJCXRocm93cyBJT0V4Y2VwdGlvbiB7Ci0JCUlQYXRoIHRhcmdldCA9IHRhcmdldFBhdGguYXBwZW5kKHBhdGhuYW1lKTsKLQkJSVBhdGggc291cmNlID0gc291cmNlUGF0aCA9PSBudWxsID8gcGF0aG5hbWUgOiBzb3VyY2VQYXRoCi0JCQkJLmFwcGVuZChwYXRobmFtZSk7Ci0JCUlucHV0U3RyZWFtIGlucHV0ID0gcGx1Z2luLm9wZW5TdHJlYW0oc291cmNlKTsKLQkJT3V0cHV0U3RyZWFtIG91dHB1dCA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHRhcmdldC50b09TU3RyaW5nKCkpOwotCQljb3B5U3RyZWFtKGlucHV0LCBvdXRwdXQpOwotCQlpbnB1dC5jbG9zZSgpOwotCQlvdXRwdXQuY2xvc2UoKTsKLQl9Ci0KLQkvKioKLQkgKiBDb3BpZXMgZGF0YSBmcm9tIG9uZSBzdHJlYW0gdG8gYW5vdGhlci4KLQkgKiAKLQkgKiBAcGFyYW0gaW5wdXQKLQkgKiAgICAgICAgICAgIFRoZSBpbnB1dCBzdHJlYW0uCi0JICogQHBhcmFtIG91dHB1dAotCSAqICAgICAgICAgICAgVGhlIG91dHB1dCBzdHJlYW0uCi0JICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZC4KLQkgKiBAdGhyb3dzIElPRXhjZXB0aW9uCi0JICogICAgICAgICAgICAgQW4gZXhjZXB0aW9uIGlmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBwcm9jZXNzaW5nIGVpdGhlciBvZgotCSAqICAgICAgICAgICAgIHRoZSBzdHJlYW1zLgotCSAqLwotCXN0YXRpYyBwdWJsaWMgaW50IGNvcHlTdHJlYW0oSW5wdXRTdHJlYW0gaW5wdXQsIE91dHB1dFN0cmVhbSBvdXRwdXQpCi0JCQl0aHJvd3MgSU9FeGNlcHRpb24gewotCQlpbnQgdCA9IDA7Ci0JCWJ5dGVbXSBidWZmZXIgPSBuZXcgYnl0ZVsxMDI0XTsKLQkJaW50IG4gPSBpbnB1dC5yZWFkKGJ1ZmZlcik7Ci0JCXdoaWxlIChuID49IDApIHsKLQkJCW91dHB1dC53cml0ZShidWZmZXIsIDAsIG4pOwotCQkJdCArPSBuOwotCQkJbiA9IGlucHV0LnJlYWQoYnVmZmVyKTsKLQkJfQotCQlyZXR1cm4gdDsKLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGEgbmF0aXZlIGRpcmVjdG9yeSBwYXRoIGVxdWFsIHRvIHRoZSBwYXJlbnQgcG9ydGlvbiBvZiB0aGUgZ2l2ZW4KLQkgKiA8Y29kZT5wYXRobmFtZTwvY29kZT4uIElmIHRoZSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMsIHRoZW4gbm8gYWN0aW9uCi0JICogaXMgdGFrZW4uCi0JICogCi0JICogQHBhcmFtIHBhdGhuYW1lCi0JICogICAgICAgICAgICBUaGUgcGF0aG5hbWUgdG8gdGhlIGZpbGUgd2hvc2UgcGFyZW50IGRpcmVjdG9yeSBzaG91bGQgYmUKLQkgKiAgICAgICAgICAgIGNyZWF0ZWQuCi0JICogQHRocm93cyBJT0V4Y2VwdGlvbgotCSAqICAgICAgICAgICAgIEFuIGV4Y2VwdGlvbiBpZiBhbiBJTyBlcnJvciBvY2N1cnMuCi0JICovCi0Jc3RhdGljIHB1YmxpYyB2b2lkIGNyZWF0ZVBhcmVudERpcmVjdG9yeUZvcihTdHJpbmcgcGF0aG5hbWUpCi0JCQl0aHJvd3MgSU9FeGNlcHRpb24gewotCQlGaWxlIGZpbGUgPSBuZXcgRmlsZShwYXRobmFtZSk7Ci0JCUZpbGUgcGFyZW50ID0gZmlsZS5nZXRQYXJlbnRGaWxlKCk7Ci0JCWlmIChwYXJlbnQgIT0gbnVsbCkgewotCQkJcGFyZW50Lm1rZGlycygpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgSVJlc291cmNlIHJlcHJlc2VudGVkIGJ5IHRoZSBnaXZlbiBzZWxlY3Rpb24uCi0JICogCi0JICogQHBhcmFtIG9iamVjdAotCSAqICAgICAgICAgICAgVGhlIHNlbGVjdGlvbgotCSAqIEByZXR1cm4gSVJlc291cmNlIGlmIHRoZSBzZWxlY3Rpb24gcmVwcmVzZW50cyBhbiBJUmVzb3VyY2UuIFJldHVybnMgbnVsbAotCSAqICAgICAgICAgb3RoZXJ3aXNlLgotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCSAqLwotCXN0YXRpYyBwdWJsaWMgSVJlc291cmNlIGdldFJlc291cmNlRnJvbVNlbGVjdGlvbihPYmplY3Qgb2JqKQotCQkJdGhyb3dzIENvcmVFeGNlcHRpb24gewotCQlJUmVzb3VyY2UgcmVzID0gbnVsbDsKLQkJaWYgKG9iaiAhPSBudWxsKSB7Ci0JCQlpZiAob2JqIGluc3RhbmNlb2YgSVJlc291cmNlKSB7Ci0JCQkJcmVzID0gKElSZXNvdXJjZSkgb2JqOwotCQkJfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBJSmF2YUVsZW1lbnQpIHsKLQkJCQlJSmF2YUVsZW1lbnQgamF2YUVsZW1lbnQgPSAoSUphdmFFbGVtZW50KSBvYmo7Ci0JCQkJcmVzID0gamF2YUVsZW1lbnQuZ2V0Q29ycmVzcG9uZGluZ1Jlc291cmNlKCk7Ci0JCQl9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIEVudGVycHJpc2VCZWFuKSB7Ci0JCQkJRW50ZXJwcmlzZUJlYW4gZWpiQmVhbiA9IChFbnRlcnByaXNlQmVhbikgb2JqOwotCQkJCUlQcm9qZWN0IGVqYlByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoZWpiQmVhbik7Ci0JCQkJaWYgKGVqYlByb2plY3QgIT0gbnVsbCkKLQkJCQkJcmVzID0gZWpiUHJvamVjdDsKLQkJCX0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgU2Vzc2lvbkJlYW4pIHsKLQkJCQlTZXNzaW9uQmVhbiBKRUU1QmVhbiA9IChTZXNzaW9uQmVhbikgb2JqOwotCQkJCUlQcm9qZWN0IGVqYlByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoSkVFNUJlYW4pOwotCQkJCWlmIChlamJQcm9qZWN0ICE9IG51bGwpCi0JCQkJCXJlcyA9IGVqYlByb2plY3Q7Ci0JCQl9Ci0KLQkJfQotCi0JCXJldHVybiByZXM7Ci0JfQotCi0JLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0JLy8gTmF1Z2h0eSBiaXRzLi4uCi0JLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQkvLwotCS8vIENyZWF0ZXMgYSBwYXRoIG9mIGZvbGRlcnMuCi0JLy8gRG8gbm90IGNhbGwgd2l0aCBhbiBhYnNvbHV0ZVBhdGggb2YgbGVzcyB0aGFuIG9uZSBzZWdtZW50LgotCS8vCi0JLy8gIHByaXZhdGUgc3RhdGljIElDb250YWluZXIgbWFrZUZvbGRlclBhdGggKAotCS8vICAgICAgICBSZXNvdXJjZUNvbnRleHQgcmVzb3VyY2VDb250ZXh0LAotCS8vICAgIElQYXRoIGFic29sdXRlUGF0aCwKLQkvLyAgICBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvciwKLQkvLyAgICBTdGF0dXNNb25pdG9yIHN0YXR1c01vbml0b3IKLQkvLyAgKQotCS8vICB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCS8vICB7Ci0JLy8gICAgaWYgKGFic29sdXRlUGF0aC5zZWdtZW50Q291bnQoKSA8PSAxKQotCS8vICAgIHsKLQkvLyAgICAgIHJldHVybiBnZXRXb3Jrc3BhY2VSb290KCkuZ2V0UHJvamVjdChhYnNvbHV0ZVBhdGguc2VnbWVudCgwKSk7Ci0JLy8gICAgfQotCS8vICAgIGVsc2UKLQkvLyAgICB7Ci0JLy8gICAgICBJQ29udGFpbmVyIHBhcmVudCA9IG1ha2VGb2xkZXJQYXRoKHJlc291cmNlQ29udGV4dCwKLQkvLyBhYnNvbHV0ZVBhdGgucmVtb3ZlTGFzdFNlZ21lbnRzKDEpLCBwcm9ncmVzc01vbml0b3IsIHN0YXR1c01vbml0b3IpOwotCS8vICAgICAgU3RyaW5nIGZvbGRlck5hbWUgPSBhYnNvbHV0ZVBhdGgubGFzdFNlZ21lbnQoKTsKLQkvLyAgICAgIHJldHVybiBtYWtlRm9sZGVyKHJlc291cmNlQ29udGV4dCwgcGFyZW50LGZvbGRlck5hbWUsIHByb2dyZXNzTW9uaXRvciAsCi0JLy8gc3RhdHVzTW9uaXRvcik7Ci0JLy8gICAgfQotCS8vICB9Ci0JLy8KLQkvLyBDcmVhdGVzIGEgZm9sZGVyIHVuZGVyIGEgY29udGFpbmVyLgotCS8vIFRoZSBjb250YWluZXIgbXVzdCBhbHJlYWR5IGV4aXN0LgotCS8vCi0JLy8gcHJpdmF0ZSBzdGF0aWMgSUZvbGRlciBtYWtlRm9sZGVyICgKLQkvLyAgICAgICAgUmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dCwKLQkvLyAgICBJQ29udGFpbmVyIHBhcmVudCwKLQkvLyAgICBTdHJpbmcgZm9sZGVyTmFtZSwKLQkvLyAgICBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvciwKLQkvLyAgICBTdGF0dXNNb25pdG9yIHN0YXR1c01vbml0b3IKLQkvLyAgKQotCS8vICB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCS8vICB7Ci0JLy8gICAgSVJlc291cmNlIGNoaWxkID0gcGFyZW50LmZpbmRNZW1iZXIoZm9sZGVyTmFtZSk7Ci0JLy8gICAgaWYgKGNoaWxkID09IG51bGwpCi0JLy8gICAgewotCS8vICAgICAgaWYgKCFyZXNvdXJjZUNvbnRleHQuaXNDcmVhdGVGb2xkZXJzRW5hYmxlZCgpKSB7Ci0JLy8gICAgICAgIGludCByZXN1bHQgPSBzdGF0dXNNb25pdG9yLnJlcG9ydFN0YXR1cyhuZXcKLQkvLyBTdGF0dXMoSVN0YXR1cy5XQVJOSU5HLFdlYlNlcnZpY2VQbHVnaW4uSUQsMCwKLQkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNlcnZpY2VQbHVnaW4uZ2V0TWVzc2FnZSgiJU1TR19FUlJPUl9GT0xERVJfQ1JFQVRJT05fRElTQUJMRUQiLAotCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHtwYXJlbnQuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpLGZvbGRlck5hbWV9KSxudWxsKSwKLQkvLyBnZXRUaHJlZVN0YXRlRmlsZU9wdGlvbnMoKSk7Ci0JLy8gICAgICAgIGlmIChyZXN1bHQgPT0gSVN0YXR1c0RpYWxvZ0NvbnN0YW50cy5DQU5DRUxfSUQpCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLQkvLwotCS8vICAgICAgICAgIGlmICggcmVzdWx0ID09IElTdGF0dXNEaWFsb2dDb25zdGFudHMuWUVTX1RPX0FMTF9JRCkKLQkvLyAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQ29udGV4dC5zZXRDcmVhdGVGb2xkZXJzRW5hYmxlZCh0cnVlKTsKLQkvLwotCS8vICAgICAgfQotCS8vICAgICAgSUZvbGRlciBmb2xkZXIgPSBwYXJlbnQuZ2V0Rm9sZGVyKG5ldyBQYXRoKGZvbGRlck5hbWUpKTsKLQkvLyAgICAgIGZvbGRlci5jcmVhdGUodHJ1ZSx0cnVlLHByb2dyZXNzTW9uaXRvcik7Ci0JLy8gICAgICByZXR1cm4gZm9sZGVyOwotCS8vICAgIH0KLQkvLyAgICBlbHNlIGlmIChjaGlsZC5nZXRUeXBlKCkgPT0gSVJlc291cmNlLkZPTERFUikKLQkvLyAgICB7Ci0JLy8gICAgICByZXR1cm4gKElGb2xkZXIpY2hpbGQ7Ci0JLy8gICAgfQotCS8vICAgIGVsc2UKLQkvLyAgICB7Ci0JLy8gICAgICB0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcKLQkvLyBTdGF0dXMoSVN0YXR1cy5FUlJPUixXZWJTZXJ2aWNlUGx1Z2luLklELDAsV2ViU2VydmljZVBsdWdpbi5nZXRNZXNzYWdlKCIlTVNHX0VSUk9SX1JFU09VUkNFX05PVF9GT0xERVIiLG5ldwotCS8vIE9iamVjdFtdIHtwYXJlbnQuZ2V0RnVsbFBhdGgoKS5hcHBlbmQoZm9sZGVyTmFtZSkudG9TdHJpbmcoKX0pLG51bGwpKTsKLQkvLyAgICB9Ci0JLy8gIH0KLQotCS8vCi0JLy8gQ3JlYXRlcyBhIGZpbGUgdW5kZXIgYSBjb250YWluZXIuCi0JLy8gVGhlIGNvbnRhaW5lciBtdXN0IGFscmVhZHkgZXhpc3QuCi0JLy8KLQkvLyBwcml2YXRlIHN0YXRpYyBJRmlsZSBtYWtlRmlsZSAoCi0JLy8gICAgUmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dCwKLQkvLyAgICBJQ29udGFpbmVyIHBhcmVudCwKLQkvLyAgICBTdHJpbmcgZmlsZU5hbWUsCi0JLy8gICAgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0sCi0JLy8gICAgSVByb2dyZXNzTW9uaXRvciBwcm9ncmVzc01vbml0b3IsCi0JLy8gICAgU3RhdHVzTW9uaXRvciBzdGF0dXNNb25pdG9yCi0JLy8gICkKLQkvLyAgdGhyb3dzIENvcmVFeGNlcHRpb24KLQkvLyAgewotCS8vICAgIElSZXNvdXJjZSBjaGlsZCA9IHBhcmVudC5maW5kTWVtYmVyKGZpbGVOYW1lKTsKLQkvLyAgICBpZiAoY2hpbGQgIT0gbnVsbCkKLQkvLyAgICB7Ci0JLy8gICAgICBpZiAoY2hpbGQuZ2V0VHlwZSgpID09IElSZXNvdXJjZS5GSUxFKQotCS8vICAgICAgewotCS8vICAgICAgICBpZiAoIXJlc291cmNlQ29udGV4dC5pc092ZXJ3cml0ZUZpbGVzRW5hYmxlZCgpKSB7Ci0JLy8gICAgICAgICAgaW50IHJlc3VsdCA9IHN0YXR1c01vbml0b3IucmVwb3J0U3RhdHVzKCBuZXcKLQkvLyBTdGF0dXMoSVN0YXR1cy5XQVJOSU5HLFdlYlNlcnZpY2VQbHVnaW4uSUQsMCwKLQkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNlcnZpY2VQbHVnaW4uZ2V0TWVzc2FnZSgiJU1TR19FUlJPUl9GSUxFX09WRVJXUklURV9ESVNBQkxFRCIsCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10ge3BhcmVudC5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCksZmlsZU5hbWV9KSxudWxsKSwKLQkvLyBnZXRUaHJlZVN0YXRlRmlsZU9wdGlvbnMoKSk7Ci0JLy8KLQkvLyAgICAgICAgICBpZiAocmVzdWx0ID09IElTdGF0dXNEaWFsb2dDb25zdGFudHMuQ0FOQ0VMX0lEKQotCS8vICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0JLy8KLQkvLyAgICAgICAgICBpZiAoIHJlc3VsdCA9PSBJU3RhdHVzRGlhbG9nQ29uc3RhbnRzLllFU19UT19BTExfSUQpCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUNvbnRleHQuc2V0T3ZlcndyaXRlRmlsZXNFbmFibGVkKHRydWUpOwotCS8vICAgICAgICB9Ci0JLy8gICAgICAgIC8vV2UgaGF2ZSBwZXJtaXNzaW9uIHRvIG92ZXJ3cml0ZSBzbyBjaGVjayBpZiBmaWxlIGlzIHJlYWQtb25seQotCS8vICAgICAgICBpZiAoY2hpbGQuaXNSZWFkT25seSgpKQotCS8vICAgICAgICB7Ci0JLy8gICAgICAgICAgaWYgKCFyZXNvdXJjZUNvbnRleHQuaXNDaGVja291dEZpbGVzRW5hYmxlZCgpKSB7Ci0JLy8KLQkvLyAgICAgICAgICAgIGludCByZXN1bHQgPSBzdGF0dXNNb25pdG9yLnJlcG9ydFN0YXR1cyggbmV3Ci0JLy8gU3RhdHVzKElTdGF0dXMuV0FSTklORyxXZWJTZXJ2aWNlUGx1Z2luLklELDAsCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTZXJ2aWNlUGx1Z2luLmdldE1lc3NhZ2UoIiVNU0dfRVJST1JfRklMRV9DSEVDS09VVF9ESVNBQkxFRCIsCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10ge3BhcmVudC5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCksZmlsZU5hbWV9KSxudWxsKSwKLQkvLyBnZXRUaHJlZVN0YXRlRmlsZU9wdGlvbnMoKSk7Ci0JLy8KLQkvLyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSVN0YXR1c0RpYWxvZ0NvbnN0YW50cy5DQU5DRUxfSUQpCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLQkvLwotCS8vICAgICAgICAgICAgaWYgKCByZXN1bHQgPT0gSVN0YXR1c0RpYWxvZ0NvbnN0YW50cy5ZRVNfVE9fQUxMX0lEKQotCS8vICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VDb250ZXh0LnNldENoZWNrb3V0RmlsZXNFbmFibGVkKHRydWUpOwotCS8vICAgICAgICAgIH0KLQkvLwotCS8vICAgICAgICAgIElGaWxlW10gZmlsZXMgPSBuZXcgSUZpbGVbMV07Ci0JLy8gICAgICAgICAgZmlsZXNbMF0gPSAoSUZpbGUpY2hpbGQ7Ci0JLy8KLQkvLyAgICAgICAgICBpZiAoCi0JLy8gIXN0YXR1c01vbml0b3IucmVwb3J0U3RhdHVzKGdldFdvcmtzcGFjZSgpLnZhbGlkYXRlRWRpdChmaWxlcyxudWxsKSkpCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotCS8vICAgICAgICB9Ci0JLy8KLQkvLyAgICAgICAgLy9DaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBleGlzdGluZyBmaWxlLgotCS8vICAgICAgICAgICAgSUZpbGUgZmlsZSA9IHBhcmVudC5nZXRGaWxlKG5ldyBQYXRoKGZpbGVOYW1lKSk7Ci0JLy8gICAgICAgIGZpbGUuc2V0Q29udGVudHMoaW5wdXRTdHJlYW0sdHJ1ZSx0cnVlLHByb2dyZXNzTW9uaXRvcik7Ci0JLy8gICAgICAgIHJldHVybiBmaWxlOwotCS8vCi0JLy8gICAgICB9Ci0JLy8gICAgICBlbHNlCi0JLy8gICAgICB7Ci0JLy8gICAgICAgIHRocm93IG5ldyBDb3JlRXhjZXB0aW9uKG5ldwotCS8vIFN0YXR1cyhJU3RhdHVzLkVSUk9SLFdlYlNlcnZpY2VQbHVnaW4uSUQsMCxXZWJTZXJ2aWNlUGx1Z2luLmdldE1lc3NhZ2UoIiVNU0dfRVJST1JfUkVTT1VSQ0VfTk9UX0ZJTEUiLG5ldwotCS8vIE9iamVjdFtdIHtwYXJlbnQuZ2V0RnVsbFBhdGgoKS5hcHBlbmQoZmlsZU5hbWUpfSksbnVsbCkpOwotCS8vICAgICAgfQotCS8vICAgIH0KLQkvLyAgICBlbHNlCi0JLy8gICAgewotCS8vICAgICAgICAvL0NyZWF0ZSBhIG5ldyBmaWxlLgotCS8vICAgICAgICBJRmlsZSBmaWxlID0gcGFyZW50LmdldEZpbGUobmV3IFBhdGgoZmlsZU5hbWUpKTsKLQkvLyAgICAgICAgZmlsZS5jcmVhdGUoaW5wdXRTdHJlYW0sdHJ1ZSxwcm9ncmVzc01vbml0b3IpOwotCS8vICAgICAgICByZXR1cm4gZmlsZTsKLQkvLyAgICB9Ci0JLy8gIH0KLQotCS8qKgotCSAqIERlbGV0ZXMgYSBmaWxlIHVuZGVyIGEgY29udGFpbmVyLiBUaGUgY29udGFpbmVyIG11c3QgYWxyZWFkeSBleGlzdC4KLQkgKiAKLQkgKiBAcGFyYW0gZmlsZSAtCi0JICogICAgICAgICAgICB0aGUgSUZpbGUgdG8gYmUgZGVsZXRlZAotCSAqIEBwYXJhbSBwcm9ncmVzc01vbml0b3IKLQkgKiBAcGFyYW0gc3RhdHVzTW9uaXRvcgotCSAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvciBpZiBpdCBleGlzdHMgYW5kIGlzCi0JICogICAgICAgICBzdWNjZXNzZnVsbHkgZGVsZXRlZC4gRmFsc2Ugb3RoZXJ3aXNlLgotCSAqLwotCS8vICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZGVsZXRlRmlsZSAoCi0JLy8gICAgICAgIFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHQsCi0JLy8gICAgSUZpbGUgZmlsZSwKLQkvLyAgICBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvciwKLQkvLyAgICBTdGF0dXNNb25pdG9yIHN0YXR1c01vbml0b3IgKQotCS8vICAgIHRocm93cyBDb3JlRXhjZXB0aW9uCi0JLy8gICAgewotCS8vICAgICAgICBpZiAoZmlsZS5leGlzdHMoKSkKLQkvLyAgICAgICAgewotCS8vICAgICAgICAgICAgICAgIGlmICghcmVzb3VyY2VDb250ZXh0LmlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCkpIHsKLQkvLyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBzdGF0dXNNb25pdG9yLnJlcG9ydFN0YXR1cyggbmV3Ci0JLy8gU3RhdHVzKElTdGF0dXMuV0FSTklORyxXZWJTZXJ2aWNlUGx1Z2luLklELDAsCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNlcnZpY2VQbHVnaW4uZ2V0TWVzc2FnZSgiJU1TR19FUlJPUl9GSUxFX09WRVJXUklURV9ESVNBQkxFRCIsCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXQotCS8vIHtmaWxlLmdldFBhcmVudCgpLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKSxmaWxlLmdldE5hbWUoKX0pLG51bGwpLAotCS8vIGdldFRocmVlU3RhdGVGaWxlT3B0aW9ucygpKTsKLQkvLwotCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSVN0YXR1c0RpYWxvZ0NvbnN0YW50cy5DQU5DRUxfSUQpCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0JLy8KLQkvLyAgICAgICAgICAgICAgICBpZiAoIHJlc3VsdCA9PSBJU3RhdHVzRGlhbG9nQ29uc3RhbnRzLllFU19UT19BTExfSUQpCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQ29udGV4dC5zZXRPdmVyd3JpdGVGaWxlc0VuYWJsZWQodHJ1ZSk7Ci0JLy8gICAgICAgICAgICAgICAgICAgICAgICB9Ci0JLy8gICAgICAgICAgICAgICAgLy9XZSBoYXZlIHBlcm1pc3Npb24gdG8gb3ZlcndyaXRlIHNvIGNoZWNrIGlmIGZpbGUgaXMgcmVhZC1vbmx5Ci0JLy8gICAgICAgICAgICAgICAgaWYgKGZpbGUuaXNSZWFkT25seSgpKQotCS8vICAgICAgICAgICAgICAgIHsKLQkvLyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzb3VyY2VDb250ZXh0LmlzQ2hlY2tvdXRGaWxlc0VuYWJsZWQoKSkgewotCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBzdGF0dXNNb25pdG9yLnJlcG9ydFN0YXR1cyggbmV3Ci0JLy8gU3RhdHVzKElTdGF0dXMuV0FSTklORyxXZWJTZXJ2aWNlUGx1Z2luLklELDAsCi0JLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNlcnZpY2VQbHVnaW4uZ2V0TWVzc2FnZSgiJU1TR19FUlJPUl9GSUxFX0NIRUNLT1VUX0RJU0FCTEVEIiwKLQkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdCi0JLy8ge2ZpbGUuZ2V0UGFyZW50KCkuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpLGZpbGUuZ2V0TmFtZSgpfSksbnVsbCksCi0JLy8gZ2V0VGhyZWVTdGF0ZUZpbGVPcHRpb25zKCkpOwotCS8vICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJU3RhdHVzRGlhbG9nQ29uc3RhbnRzLkNBTkNFTF9JRCkKLQkvLyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQkvLwotCS8vICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXN1bHQgPT0gSVN0YXR1c0RpYWxvZ0NvbnN0YW50cy5ZRVNfVE9fQUxMX0lEKQotCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUNvbnRleHQuc2V0Q2hlY2tvdXRGaWxlc0VuYWJsZWQodHJ1ZSk7Ci0JLy8KLQkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCS8vICAgICAgICAgICAgICAgICAgICAgICAgSUZpbGVbXSBmaWxlcyA9IG5ldyBJRmlsZVsxXTsKLQkvLyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzWzBdID0gZmlsZTsKLQkvLwotCS8vICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAotCS8vICFzdGF0dXNNb25pdG9yLnJlcG9ydFN0YXR1cyhnZXRXb3Jrc3BhY2UoKS52YWxpZGF0ZUVkaXQoZmlsZXMsbnVsbCkpKQotCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0JLy8gICAgICAgICAgICAgICAgfQotCS8vICAgICAgICAgICAgICAgIGZpbGUuZGVsZXRlKHRydWUscHJvZ3Jlc3NNb25pdG9yKTsKLQkvLyAgICAgICAgICAgICAgICB9Ci0JLy8gICAgICAgIC8vQXQgdGhpcyBwb2ludCwgZWl0aGVyIHRoZSBmaWxlIGRpZCBub3QgZXhpc3Qgb3Igd2Ugc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQKLQkvLyBpdC4gUmV0dXJuIHN1Y2Nlc3MuCi0JLy8gICAgICAgIHJldHVybiB0cnVlOwotCS8vICB9Ci0JLyoqCi0JICogRGVsZXRlcyBhIGZvbGRlciB1bmRlciBhIGNvbnRhaW5lci4KLQkgKiAKLQkgKiBAcGFyYW0gZm9sZGVyIC0KLQkgKiAgICAgICAgICAgIHRoZSBJRm9sZGVyIHRvIGJlIGRlbGV0ZWQKLQkgKiBAcGFyYW0gcHJvZ3Jlc3NNb25pdG9yCi0JICogQHBhcmFtIHN0YXR1c01vbml0b3IKLQkgKiBAcmV0dXJuIFRydWUgaWYgdGhlIGZvbGRlciBkb2VzIG5vdCBleGlzdCBvciBpZiBpdCBleGlzdHMgYW5kIGlzCi0JICogICAgICAgICBzdWNjZXNzZnVsbHkgZGVsZXRlZCBhbG9uZyB3aXRoIGl0cyBtZW1iZXJzLiBGYWxzZSBvdGhlcndpc2UuCi0JICovCi0JLy8gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBkZWxldGVGb2xkZXIgKAotCS8vICAgIFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHQsCi0JLy8gICAgSUZvbGRlciBmb2xkZXIsCi0JLy8gICAgSVByb2dyZXNzTW9uaXRvciBwcm9ncmVzc01vbml0b3IsCi0JLy8gICAgU3RhdHVzTW9uaXRvciBzdGF0dXNNb25pdG9yCi0JLy8gICkKLQkvLyAgdGhyb3dzIENvcmVFeGNlcHRpb24KLQkvLyAgewotCS8vICAgIGlmICghZm9sZGVyLmV4aXN0cygpKSByZXR1cm4gdHJ1ZTsKLQkvLwotCS8vICAgIGJvb2xlYW4gZGVsZXRlZCA9IHRydWU7Ci0JLy8gICAgSVJlc291cmNlW10gcmVzb3VyY2VzID0gZm9sZGVyLm1lbWJlcnMoKTsKLQkvLyAgICBmb3IgKGludCBpPTA7IGk8cmVzb3VyY2VzLmxlbmd0aDsgaSsrKQotCS8vICAgIHsKLQkvLyAgICAgIElSZXNvdXJjZSByZXNvdXJjZSA9IHJlc291cmNlc1tpXTsKLQkvLyAgICAgIGlmIChyZXNvdXJjZSBpbnN0YW5jZW9mIElGaWxlKQotCS8vICAgICAgewotCS8vICAgICAgICBkZWxldGVkID0gZGVsZXRlRmlsZShyZXNvdXJjZUNvbnRleHQsIChJRmlsZSlyZXNvdXJjZSwgcHJvZ3Jlc3NNb25pdG9yLAotCS8vIHN0YXR1c01vbml0b3IpOwotCS8vICAgICAgfQotCS8vICAgICAgaWYgKHJlc291cmNlIGluc3RhbmNlb2YgSUZvbGRlcikKLQkvLyAgICAgIHsKLQkvLyAgICAgICAgZGVsZXRlZCA9IGRlbGV0ZUZvbGRlciggcmVzb3VyY2VDb250ZXh0LCAoSUZvbGRlcilyZXNvdXJjZSwKLQkvLyBwcm9ncmVzc01vbml0b3IsIHN0YXR1c01vbml0b3IpOwotCS8vICAgICAgfQotCS8vCi0JLy8gICAgICBpZiAoIWRlbGV0ZWQpIGJyZWFrOwotCS8vICAgIH0KLQkvLyAgICBpZiAoZGVsZXRlZCkgewotCS8vICAgICAgZm9sZGVyLmRlbGV0ZSh0cnVlLCB0cnVlLCBwcm9ncmVzc01vbml0b3IpOwotCS8vICAgICAgcmV0dXJuIHRydWU7Ci0JLy8gICAgfQotCS8vICAgIGVsc2UKLQkvLyAgICAgIHJldHVybiBmYWxzZTsKLQkvLwotCS8vICB9Ci0JLyoqCi0JICogRGVsZXRlcyBhIHNldCBvZiBmaWxlcyB0aGF0IGFyZSBuYW1lZCBpbiBhbiBpbmRleCBmaWxlIGxvY2F0ZWQgcmVsYXRpdmUKLQkgKiB0byB0aGUgcGx1Z2luJ3MgaW5zdGFsbGF0aW9uIGxvY2F0aW9uLgotCSAqIAotCSAqIEBwYXJhbSBwbHVnaW4KLQkgKiAgICAgICAgICAgIFRoZSBwbHVnaW4gY29udGFpbmluZyB0aGUgaW5kZXhlZCBmaWxlIE11c3Qgbm90IGJlIG51bGwuCi0JICogQHBhcmFtIHNvdXJjZVBhdGggLQotCSAqICAgICAgICAgICAgcmVsYXRpdmUgcGF0aCBvZiB0aGUgaW5kZXhlZCBmaWxlIHBhc3NpbmcgYSBudWxsIGluIGhhcyB0aGUKLQkgKiAgICAgICAgICAgIHNhbWUgZWZmZWN0IGFzIHBhc3NpbmcgYSAiLiIgaW4KLQkgKiBAcGFyYW0gaW5kZXhGaWxlUGF0aCAtCi0JICogICAgICAgICAgICB0aGUgaW5kZXhlZCBmaWxlbmFtZSBNdXN0IG5vdCBiZSBudWxsCi0JICogQHBhcmFtIHRhcmdldFBhdGggLQotCSAqICAgICAgICAgICAgcGF0aCBjb250YWluaW5nIHRoZSBmaWxlcyBuYW1lZCBpbiB0aGUgaW5kZXhlZCBmaWxlIE11c3Qgbm90Ci0JICogICAgICAgICAgICBiZSBudWxsLCB0aGlzIHBhdGggbXVzdCBlbmQgd2l0aCBhIHRyYWlsaW5nIHNlcGFyYXRvcgotCSAqIEBwYXJhbSBwcm9ncmVzc01vbml0b3IKLQkgKi8KLQkvLyAgcHVibGljIHN0YXRpYyB2b2lkIGRlbGV0ZUluZGV4RmlsZXNGcm9tT1MgKAotCS8vICAgIFBsdWdpbiBwbHVnaW4sCi0JLy8gICAgSVBhdGggaW5kZXhGaWxlUGF0aCwKLQkvLyAgICBJUGF0aCB0YXJnZXRQYXRoCi0JLy8gICkKLQkvLyAgdGhyb3dzIElPRXhjZXB0aW9uIHsKLQkvLyAgICBJbnB1dFN0cmVhbSBpbnB1dCA9IHBsdWdpbi5vcGVuU3RyZWFtKGluZGV4RmlsZVBhdGgpOwotCS8vICAgIEVudW1lcmF0aW9uIGZpbGVuYW1lcyA9IFN0cmluZ1V0aWxzLnBhcnNlRmlsZW5hbWVzRnJvbVN0cmVhbShpbnB1dCk7Ci0JLy8gICAgd2hpbGUgKGZpbGVuYW1lcy5oYXNNb3JlRWxlbWVudHMoKSkgewotCS8vICAgICAgRmlsZSB0YXJnZXRGaWxlID0KLQkvLyB0YXJnZXRQYXRoLmFwcGVuZCgoU3RyaW5nKWZpbGVuYW1lcy5uZXh0RWxlbWVudCgpKS50b0ZpbGUoKTsKLQkvLyAgICAgIGlmICh0YXJnZXRGaWxlLmV4aXN0cygpKQotCS8vICAgICAgICB0YXJnZXRGaWxlLmRlbGV0ZSgpOwotCS8vICAgIH0KLQkvLyAgfQotCS8qKgotCSAqIFJldHVybnMgYSBVUkkgcmVmZXJlbmNlIHRvIHRoZSBnaXZlbiBFY2xpcHNlIHJlc291cmNlLCBvciBudWxsIGlmIG5vIHN1Y2gKLQkgKiByZWZlcmVuY2UgY2FuIGJlIGRldGVybWluZWQgKGZvciBleGFtcGxlLCBpZiB0aGUgcmVzb3VyY2UgZG9lcyBub3QgZXhpc3QKLQkgKiBpbiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtKS4KLQkgKiAKLQkgKiBAcGFyYW0gcmVzb3VyY2UKLQkgKiAgICAgICAgICAgIFRoZSByZXNvdXJjZS4KLQkgKiBAcmV0dXJuIFRoZSBVUkkgYXMgYSBzdHJpbmcsIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gVVJJIHRvIHRoZSByZXNvdXJjZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRSZXNvdXJjZVVSSShJUmVzb3VyY2UgcmVzb3VyY2UpIHsKLQkJU3RyaW5nIHVyaSA9IG51bGw7Ci0JCUlQYXRoIGxvY2F0aW9uID0gcmVzb3VyY2UuZ2V0TG9jYXRpb24oKTsKLQkJaWYgKGxvY2F0aW9uICE9IG51bGwpIHsKLQkJCXVyaSA9ICJmaWxlOiIgKyBsb2NhdGlvbi50b1N0cmluZygpOwotCQl9Ci0JCXJldHVybiB1cmk7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhIFVSSSByZWZlcmVuY2UgdG8gdGhlIGdpdmVuIEVjbGlwc2UgcmVzb3VyY2UgdXNpbmcgdGhlCi0JICogInBsYXRmb3JtOiIgcHJvdG9jb2wsIG9yIG51bGwgaWYgbm8gc3VjaCByZWZlcmVuY2UgY2FuIGJlIGRldGVybWluZWQgKGZvcgotCSAqIGV4YW1wbGUsIGlmIHRoZSByZXNvdXJjZSBkb2VzIG5vdCBleGlzdCBpbiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtKS4KLQkgKiAKLQkgKiBAcGFyYW0gcmVzb3VyY2UKLQkgKiAgICAgICAgICAgIFRoZSByZXNvdXJjZS4KLQkgKiBAcmV0dXJuIFRoZSBVUkkgYXMgYSBzdHJpbmcsIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gVVJJIHRvIHRoZSByZXNvdXJjZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQbGF0Zm9ybVJlc291cmNlVVJJKElSZXNvdXJjZSByZXNvdXJjZSkgewotCQlTdHJpbmcgdXJpID0gbnVsbDsKLQkJSVBhdGggbG9jYXRpb24gPSByZXNvdXJjZS5nZXRGdWxsUGF0aCgpOwotCQlpZiAobG9jYXRpb24gIT0gbnVsbCkgewotCQkJdXJpID0gInBsYXRmb3JtOi9yZXNvdXJjZSIgKyBsb2NhdGlvbi50b1N0cmluZygpOwotCQl9Ci0JCXJldHVybiB1cmk7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgZGVmYXVsdCBiaW5kaW5nIG5hbWVzcGFjZSBzdHJpbmcgZ2l2ZW4gYSBKYXZhIGJlYW4gbmFtZQotCSAqICh1c2luZyB0aGUgY29udmVudGlvbiB1c2VkIGJ5IENUQyBpbiBHTSkuIGUuZy4gSmF2YSBiZWFuIE15Q2xhc3MgcmVzdWx0Ci0JICogaW4gYmluZGluZyBuYW1lc3BhY2Ugb2YKLQkgKiAiaHR0cDovL3d3dy5teWNsYXNzLmNvbS9kZWZpbml0aW9ucy9NeUNsYXNzUmVtb3RlSW50ZXJmYWNlIgotCSAqIAotCSAqIEBwYXJhbSBiZWFuTmFtZQotCSAqICAgICAgICAgICAgVGhlIGphdmEgYmVhbi4KLQkgKiBAcmV0dXJuIFRoZSBiaW5kaW5nIG5hbWVzcGFjZSBhcyBhIHN0cmluZy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRCaW5kaW5nTmFtZXNwYWNlKFN0cmluZyBiZWFuTmFtZSkgewotCQlyZXR1cm4gImh0dHA6Ly93d3cuIiArIGJlYW5OYW1lLnRvTG93ZXJDYXNlKCkgKyAiLmNvbS9kZWZpbml0aW9ucy8iCi0JCQkJKyBiZWFuTmFtZSArICJSZW1vdGVJbnRlcmZhY2UiOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGRlZmF1bHQgc2NoZW1hIG5hbWVzcGFjZSBzdHJpbmcgZ2l2ZW4gYSBKYXZhIGJlYW4gbmFtZSAodXNpbmcKLQkgKiB0aGUgY29udmVudGlvbiB1c2VkIGJ5IENUQyBpbiBHTSkuIGUuZy4gSmF2YSBiZWFuIE15Q2xhc3MgcmVzdWx0IGluCi0JICogc2NoZW1hIG5hbWVzcGFjZSBvZgotCSAqICJodHRwOi8vd3d3Lm15Y2xhc3MuY29tL3NjaGVtYXMvTXlDbGFzc1JlbW90ZUludGVyZmFjZSIKLQkgKiAKLQkgKiBAcGFyYW0gYmVhbk5hbWUKLQkgKiAgICAgICAgICAgIFRoZSBqYXZhIGJlYW4uCi0JICogQHJldHVybiBUaGUgc2NoZW1hcyBuYW1lc3BhY2UgYXMgYSBzdHJpbmcuCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0U2NoZW1hTmFtZXNwYWNlKFN0cmluZyBiZWFuTmFtZSkgewotCQlyZXR1cm4gImh0dHA6Ly93d3cuIiArIGJlYW5OYW1lLnRvTG93ZXJDYXNlKCkgKyAiLmNvbS9zY2hlbWFzLyIKLQkJCQkrIGJlYW5OYW1lICsgIlJlbW90ZUludGVyZmFjZSI7Ci0JfQotCi0JLy8gIHB1YmxpYyBzdGF0aWMgVmVjdG9yIGdldFRocmVlU3RhdGVGaWxlT3B0aW9ucygpIHsKLQkvLyAgICAgICAgVmVjdG9yIG9wdGlvbnMgPSBuZXcgVmVjdG9yKCk7Ci0JLy8gICAgb3B0aW9ucy5hZGQobmV3Ci0JLy8gU3RhdHVzT3B0aW9uKElTdGF0dXNEaWFsb2dDb25zdGFudHMuWUVTX0lELElTdGF0dXNEaWFsb2dDb25zdGFudHMuWUVTX0xBQkVMLCIiLCIiKSk7Ci0JLy8gICAgb3B0aW9ucy5hZGQobmV3Ci0JLy8gU3RhdHVzT3B0aW9uKElTdGF0dXNEaWFsb2dDb25zdGFudHMuWUVTX1RPX0FMTF9JRCxJU3RhdHVzRGlhbG9nQ29uc3RhbnRzLllFU19UT19BTExfTEFCRUwsIiIsIiIpKTsKLQkvLyAgICBvcHRpb25zLmFkZChuZXcKLQkvLyBTdGF0dXNPcHRpb24oSVN0YXR1c0RpYWxvZ0NvbnN0YW50cy5DQU5DRUxfSUQsSVN0YXR1c0RpYWxvZ0NvbnN0YW50cy5DQU5DRUxfTEFCRUwsIiIsIiIpKTsKLQkvLyAgICByZXR1cm4gb3B0aW9uczsKLQkvLyAgfQotCi0JLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQkvKioKLQkgKiBHZXRzIHRoZSBTT0FQIHJwY3JvdXRlciBzZXJ2bGV0IFVSTCBmb3IgdGhlIHNlcnZpY2UgcHJvamVjdAotCSAqIAotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogICAgICAgICAgICBUaGUgcHJvamVjdC4KLQkgKiBAcGFyYW0gc2VydmVyRmFjdG9yeUlkCi0JICogICAgICAgICAgICBUaGUgc2VydmVyIGZhY3RvcnkgaWQKLQkgKiBAcGFyYW0gc2VydmVyCi0JICogICAgICAgICAgICBUaGUgc2VydmVyCi0JICogQHJldHVybiBUaGUgVVJMLCBwb3NzaWJseSBudWxsLgotCSAqLwotCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0U2VydmxldFVSTChJUHJvamVjdCBwcm9qZWN0LAotCQkJU3RyaW5nIHNlcnZlckZhY3RvcnlJZCwgSVNlcnZlciBzZXJ2ZXIpIHsKLQkJcmV0dXJuIGdldFNlcnZsZXRVUkwoZ2V0V2ViUHJvamVjdFVSTChwcm9qZWN0LCBzZXJ2ZXJGYWN0b3J5SWQsIHNlcnZlcikpOwotCX0KLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNlcnZsZXRVUkwoU3RyaW5nIHdlYlByb2plY3RVUkwpIHsKLQkJaWYgKHdlYlByb2plY3RVUkwgPT0gbnVsbCkKLQkJCXJldHVybiBudWxsOwotCQllbHNlCi0JCQlyZXR1cm4gd2ViUHJvamVjdFVSTCArIFNFUlZMRVRfRVhUOwotCX0KLQotCS8qKgotCSAqIEdldHMgdGhlIGNsaWVudCBXZWIgcHJvamVjdCBuYW1lCi0JICogCi0JICogQHBhcmFtIHByb2plY3ROYW1lCi0JICogICAgICAgICAgICBUaGUgcHJvamVjdCBuYW1lIHRvIGJhc2Ugb24uCi0JICogQHBhcmFtIHR5cGVJZCB0aGUgd2Vic2VydmljZSB0eXBlIGlkLgotCSAqIEByZXR1cm4gVGhlIGNsaWVudCBXZWIgcHJvamVjdCBuYW1lLgotCSAqIAotCSAqIEBkZXByZWNhdGVkCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0Q2xpZW50V2ViUHJvamVjdE5hbWUoU3RyaW5nIHByb2plY3ROYW1lLCBTdHJpbmcgdHlwZUlkKSAKLQl7Ci0JCVN0cmluZyAgIGJhc2VDbGllbnRXZWJQcm9qZWN0TmFtZSA9IHByb2plY3ROYW1lICsgREVGQVVMVF9DTElFTlRfV0VCX1BST0pFQ1RfRVhUOwotCQlJUGF0aCAgICBwcm9qZWN0UGF0aDsKLQkJSVByb2plY3QgcHJvamVjdDsKLQkJYm9vbGVhbiAgZm91bmRXZWJQcm9qZWN0ICAgICA9IGZhbHNlOwotCQlpbnQgICAgICBpICAgICAgICAgICAgICAgICAgID0gMTsKLQkJCi0JCWlmKCBpc1NrZWxldG9uRUpCVHlwZSggdHlwZUlkICkgKQotCQl7Ci0JCSAgLy8gRm9yIHRoZSBza2VsZXRvbiBFSkIgc2NlbmFyaW8gd2UgbmVlZCB0byBjcmVhdGUgYSBzbGlnaHRseSBkaWZmZXJlbnQKLQkJICAvLyBiYXNlIG5hbWUuICBXaGVuIHRoZSBFSkIgcHJvamVjdCBpcyBjcmVhdGVkIGFub3RoZXIgcHJvamVjdAotCQkgIC8vIGlzIGNyZWF0ZWQgd2l0aCAiQ2xpZW50IiB0YWNrZWQgb250byB0aGUgZW5kLiAgV2Ugd2lsbAotCQkgIC8vIGFkZCAiV1MiIHRvIG91ciBjbGllbnQgc28gd2UgZG9uJ3QgY29sbGlkZSB3aXRoIHRoZSBvdGhlcgotCQkgIC8vIGNsaWVudCBwcm9qZWN0LgotCQkgIGJhc2VDbGllbnRXZWJQcm9qZWN0TmFtZSA9IHByb2plY3ROYW1lICsgIldTIiArIERFRkFVTFRfQ0xJRU5UX1dFQl9QUk9KRUNUX0VYVDsgICAgCi0JCX0KLQkJCi0JCVN0cmluZyAgY2xpZW50V2ViUHJvamVjdE5hbWUgPSBiYXNlQ2xpZW50V2ViUHJvamVjdE5hbWU7Ci0JCQotCQl3aGlsZSAoIWZvdW5kV2ViUHJvamVjdCkgCi0JCXsKLQkJICBwcm9qZWN0UGF0aCA9IG5ldyBQYXRoKGNsaWVudFdlYlByb2plY3ROYW1lKS5tYWtlQWJzb2x1dGUoKTsKLQkJICBwcm9qZWN0ID0gUmVzb3VyY2VVdGlscy5nZXRQcm9qZWN0T2YocHJvamVjdFBhdGgpOwotCQkgIAotCQkgIGlmIChwcm9qZWN0LmV4aXN0cygpICYmICFSZXNvdXJjZVV0aWxzLmlzV2ViUHJvamVjdChwcm9qZWN0KSkgCi0JCSAgewotCQkJY2xpZW50V2ViUHJvamVjdE5hbWUgPSBiYXNlQ2xpZW50V2ViUHJvamVjdE5hbWUgKyBpOwotCQkJaSsrOwotCQkgIH0KLQkJICBlbHNlIAotCQkgIHsKLQkJCWZvdW5kV2ViUHJvamVjdCA9IHRydWU7Ci0JCSAgfQotCQl9Ci0JCQotCQlyZXR1cm4gY2xpZW50V2ViUHJvamVjdE5hbWU7Ci0JfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0Q2xpZW50UHJvamVjdENvbXBvbmVudE5hbWUoU3RyaW5nIHByb2plY3ROYW1lLCBTdHJpbmcgY29tcG9uZW50TmFtZSwgYm9vbGVhbiBpc0VKQikKLSAgewotICAgIFN0cmluZyBjbGllbnRQcm9qZWN0TmFtZSA9IG51bGw7Ci0gICAgU3RyaW5nIGNsaWVudENvbXBvbmVudE5hbWUgPSBudWxsOwotICAgIGlmIChpc0VKQikKLSAgICB7Ci0gICAgICBjbGllbnRQcm9qZWN0TmFtZSA9IHByb2plY3ROYW1lICsgREVGQVVMVF9DTElFTlRfRUpCX1BST0pFQ1RfRVhUOwotICAgICAgY2xpZW50Q29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgKyBERUZBVUxUX0NMSUVOVF9FSkJfUFJPSkVDVF9FWFQ7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBjbGllbnRQcm9qZWN0TmFtZSA9IHByb2plY3ROYW1lICsgREVGQVVMVF9DTElFTlRfV0VCX1BST0pFQ1RfRVhUOwotLy8gICAgICBTdHJpbmcgYmFzZU5hbWUgPSBjbGllbnRQcm9qZWN0TmFtZTsKLSAgICAgIGNsaWVudENvbXBvbmVudE5hbWUgPSBjb21wb25lbnROYW1lICsgREVGQVVMVF9DTElFTlRfV0VCX1BST0pFQ1RfRVhUOwotLy8gICAgICBTdHJpbmcgYmFzZUNvbXBOYW1lID0gY2xpZW50Q29tcG9uZW50TmFtZTsKLSAgICB9Ci0gICAgCi0gICAgLy9UT0RPIHdlIG1heSB3YW50IHRvIHJlbW92ZSB0aGlzIGlmIHN0YXRlbWVudCBvbmNlIGRlZmVjdCAxMDMzNjYgaXMgcmVzb2x2ZWQuCi0gICAgLy9UT0RPOiAgRGVmZWN0IDEwNzk5NyAtIFJldmlzaXQgcHJqZWN0IGFuZCBtb2R1bGUgY3JlYXRpb24gbG9naWMKLS8vICAgIGlmKCAhRmxleGlibGVKYXZhUHJvamVjdFByZWZlcmVuY2VVdGlsLmdldE11bHRpcGxlTW9kdWxlc1BlclByb2plY3RQcm9wKCkgKQotLy8gICAgewotLy8gICAgICBjbGllbnRDb21wb25lbnROYW1lID0gY2xpZW50UHJvamVjdE5hbWU7CQotLy8gICAgfQotICAgIAotLy8gICAgYm9vbGVhbiAgZm91bmRXZWJQcm9qZWN0ICAgICA9IGZhbHNlOwotLy8gICAgaW50ICAgICAgaSAgICAgICAgICAgICAgICAgICA9IDE7Ci0vLyAgICAKLS8vICAgIHdoaWxlICghZm91bmRXZWJQcm9qZWN0KSAKLS8vICAgIHsKLS8vICAgICAgSVBhdGggcHJvamVjdFBhdGggPSBuZXcgUGF0aChjbGllbnRQcm9qZWN0TmFtZSkubWFrZUFic29sdXRlKCk7Ci0vLyAgICAgIElQcm9qZWN0IHByb2plY3QgPSBSZXNvdXJjZVV0aWxzLmdldFByb2plY3RPZihwcm9qZWN0UGF0aCk7Ci0vLyAgICAgIAotLy8gICAgICBpZiAocHJvamVjdC5leGlzdHMoKSkgCi0vLyAgICAgIHsKLS8vICAgICAgICBjbGllbnRQcm9qZWN0TmFtZSA9IGJhc2VOYW1lICsgaTsKLS8vICAgICAgICBjbGllbnRDb21wb25lbnROYW1lID0gYmFzZUNvbXBOYW1lICsgaTsKLS8vICAgICAgICBpKys7Ci0vLyAgICAgIH0KLS8vICAgICAgZWxzZSAKLS8vICAgICAgewotLy8gICAgICAgIGZvdW5kV2ViUHJvamVjdCA9IHRydWU7Ci0vLyAgICAgIH0KLS8vICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmV3IFN0cmluZ1tde2NsaWVudFByb2plY3ROYW1lLCBjbGllbnRDb21wb25lbnROYW1lfTsKLSAgfQotICAKLSAgICAvKioKLSAgICAgKiAKLSAgICAgKiBAcGFyYW0gdHlwZUlECi0gICAgICogQHJldHVybgotICAgICAqIAotICAgICAqIEBkZXByZWNhdGVkCi0gICAgICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzU2tlbGV0b25FSkJUeXBlKCBTdHJpbmcgdHlwZUlEICkKLQl7Ci0JICByZXR1cm4gdHlwZUlELmVxdWFscyggIm9yZy5lY2xpcHNlLmpzdC53cy50eXBlLndzZGwuZWpiIiApOyAgICAKLQl9Ci0JCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGVmYXVsdEVKQlByb2plY3ROYW1lKCkgewotCQlyZXR1cm4gREVGQVVMVF9FSkJfUFJPSkVDVF9OQU1FOwotCX0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERlZmF1bHRFSkJDb21wb25lbnROYW1lKCkgewotICAgIHJldHVybiBERUZBVUxUX0VKQl9DT01QT05FTlRfTkFNRTsKLSAgfSAgCi0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXREZWZhdWx0V2ViUHJvamVjdE5hbWUoKSB7Ci0JCXJldHVybiBERUZBVUxUX1dFQl9QUk9KRUNUX05BTUU7Ci0JfQotICAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGVmYXVsdFdlYkNvbXBvbmVudE5hbWUoKSB7Ci0gICAgcmV0dXJuIERFRkFVTFRfV0VCX0NPTVBPTkVOVF9OQU1FOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGVmYXVsdENsaWVudEV4dGVuc2lvbigpIHsKLSAgICByZXR1cm4gREVGQVVMVF9DTElFTlRfV0VCX1BST0pFQ1RfRVhUOwotICB9Ci0gIAotCS8qKgotCSAqIAotCSAqIEBwYXJhbSBwcm9qZWN0TmFtZQotCSAqIEByZXR1cm4KLQkgKiAKLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRSb3V0ZXJQcm9qZWN0TmFtZShTdHJpbmcgcHJvamVjdE5hbWUpIHsKLQkJcmV0dXJuIHByb2plY3ROYW1lICsgREVGQVVMVF9ST1VURVJfUFJPSkVDVF9FWFQ7Ci0JfQotCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGVmYXVsdFNlcnZpY2VFQVJQcm9qZWN0TmFtZSgpIHsKLQkJcmV0dXJuIERFRkFVTFRfU0VSVklDRV9FQVJfUFJPSkVDVF9OQU1FOwotCX0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERlZmF1bHRTZXJ2aWNlRUFSQ29tcG9uZW50TmFtZSgpIHsKLSAgICByZXR1cm4gREVGQVVMVF9TRVJWSUNFX0VBUl9DT01QT05FTlRfTkFNRTsKLSAgfQotCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGVmYXVsdENsaWVudEVBUlByb2plY3ROYW1lKCkgewotCQlyZXR1cm4gREVGQVVMVF9DTElFTlRfRUFSX1BST0pFQ1RfTkFNRTsKLQl9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGVmYXVsdENsaWVudEVBUkNvbXBvbmVudE5hbWUoKSB7Ci0gICAgcmV0dXJuIERFRkFVTFRfQ0xJRU5UX0VBUl9DT01QT05FTlRfTkFNRTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGVmYXVsdEVBUkV4dGVuc2lvbigpIHsKLQkgICAgcmV0dXJuIERFRkFVTFRfRUFSX0VYVDsKLQkgIH0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vU2VsZWN0aW9uVG9SZXNvdXJjZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vU2VsZWN0aW9uVG9SZXNvdXJjZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2U0MTIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1NlbGVjdGlvblRvUmVzb3VyY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklDb21waWxhdGlvblVuaXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YU1vZGVsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5FbnRlcnByaXNlQmVhbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyOwotCi1wdWJsaWMgY2xhc3MgU2VsZWN0aW9uVG9SZXNvdXJjZSBpbXBsZW1lbnRzIFRyYW5zZm9ybWVyCi17Ci0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyI3RyYW5zZm9ybShqYXZhLmxhbmcuT2JqZWN0KQotICAgKi8KLSAgcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oT2JqZWN0IHZhbHVlKQotICB7Ci0gICAgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uID0gKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKXZhbHVlOwotICAgIElSZXNvdXJjZSAgICAgICAgICAgIHJlc291cmNlICA9IG51bGw7Ci0gICAgCi0gICAgaWYoIHNlbGVjdGlvbiAhPSBudWxsICkKLSAgICB7Ci0gICAgICBPYmplY3Qgb2JqZWN0ID0gc2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgCi0gICAgICBpZiggb2JqZWN0ICE9IG51bGwgKQotICAgICAgewotICAgICAgICBpZiggb2JqZWN0IGluc3RhbmNlb2YgSVJlc291cmNlKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzb3VyY2UgPSAoSVJlc291cmNlKW9iamVjdDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCBvYmplY3QgaW5zdGFuY2VvZiBJQ29tcGlsYXRpb25Vbml0ICkKLSAgICAgICAgewotICAgICAgICAgIElDb21waWxhdGlvblVuaXQgY29tcFVuaXQgPSAoSUNvbXBpbGF0aW9uVW5pdClvYmplY3Q7Ci0gICAgICAgICAgCi0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgcmVzb3VyY2UgPSBjb21wVW5pdC5nZXRDb3JyZXNwb25kaW5nUmVzb3VyY2UoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2goIEphdmFNb2RlbEV4Y2VwdGlvbiBleGMpCi0gICAgICAgICAgewotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCBvYmplY3QgaW5zdGFuY2VvZiBFbnRlcnByaXNlQmVhbiApIAotICAgICAgICB7Ci0gICAgICAgICAgRW50ZXJwcmlzZUJlYW4gZWpiQmVhbiAgICA9IChFbnRlcnByaXNlQmVhbilvYmplY3Q7Ci0gICAgICAgICAgSVByb2plY3QgICAgICAgZWpiUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdCggZWpiQmVhbiApOwotICAgICAgICAgIAotICAgICAgICAgIGlmKCBlamJQcm9qZWN0ICE9IG51bGwgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc291cmNlID0gZWpiUHJvamVjdDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzb3VyY2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1NlcnZlclV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TZXJ2ZXJVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODdkNTE1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1NlcnZlclV0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjA0ICAxMjQ0MDggICByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIgICAgICAgICAgCi0gKiAyMDA2MDMzMCAgIDEyNDY2NyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNjEwMDQgICAxNTkzNTYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4sIEdldCBjb3JyZWN0IG1vZHVsZSByb290IFVSTCBiYXNlZCBvbiBzZXJ2ZXIgY2hvc2VuCi0gKiAyMDA3MDExOSAgIDE1OTQ1OCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLm5ldC5VUkxFbmNvZGVyOwotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5sb2dnZXIucHJveHkuTG9nZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLkoyRUVWZXJzaW9uQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmludGVybmFsLnNlcnZlcnRhcmdldC5JU2VydmVyVGFyZ2V0Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5XU1BsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUuaW50ZXJuYWwudXRpbC5JTW9kdWxlQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklNb2R1bGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXJUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyV29ya2luZ0NvcHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlclV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLm1vZGVsLklVUkxQcm92aWRlcjsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIGNvbnRhaW5zIHVzZWZ1bCBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggU2VydmVyIHBsdWdpbiBmdW5jdGlvbnMKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIFNlcnZlclV0aWxzIHsKLQotCXByaXZhdGUgSGFzaHRhYmxlIHNlcnZlcklkVG9MYWJlbF87Ci0KLQlwcml2YXRlIEhhc2h0YWJsZSBzZXJ2ZXJMYWJlbFRvSWRfOwotCi0JcHJpdmF0ZSBzdGF0aWMgU2VydmVyVXRpbHMgaW5zdGFuY2VfOwotCi0JcHVibGljIHN0YXRpYyBTZXJ2ZXJVdGlscyBnZXRJbnN0YW5jZSgpIHsKLQkJaWYgKGluc3RhbmNlXyA9PSBudWxsKSB7Ci0JCQlpbnN0YW5jZV8gPSBuZXcgU2VydmVyVXRpbHMoKTsKLQkJfQotCQlyZXR1cm4gaW5zdGFuY2VfOwotCi0JfQotCi0JcHVibGljIFNlcnZlclV0aWxzKCkgewotCX0KLQotCS8vIEdldHMgdGhlIFNlcnZlciBsYWJlbHMgZ2l2ZW4gdGhlIHNlcnZlciBmYWN0b3J5IGlkCi0JcHVibGljIHZvaWQgZ2V0U2VydmVyTGFiZWxzQW5kSWRzKCkgewotCQlzZXJ2ZXJJZFRvTGFiZWxfID0gbmV3IEhhc2h0YWJsZSgpOwotCQlzZXJ2ZXJMYWJlbFRvSWRfID0gbmV3IEhhc2h0YWJsZSgpOwotCQlJU2VydmVyVHlwZVtdIHNlcnZlclR5cGVzID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJUeXBlcygpOwotCQlmb3IgKGludCBpZHggPSAwOyBpZHggPCBzZXJ2ZXJUeXBlcy5sZW5ndGg7IGlkeCsrKSB7Ci0KLQkJCUlTZXJ2ZXJUeXBlIHNlcnZlclR5cGUgPSAoSVNlcnZlclR5cGUpIHNlcnZlclR5cGVzW2lkeF07Ci0KLQkJCVN0cmluZyBpZCA9IHNlcnZlclR5cGUuZ2V0SWQoKTsKLQkJCVN0cmluZyBzZXJ2ZXJMYWJlbCA9IHNlcnZlclR5cGUuZ2V0TmFtZSgpOwotCQkJaWYgKCEoaWQgPT0gbnVsbCkgJiYgIShzZXJ2ZXJMYWJlbCA9PSBudWxsKSkgewotCQkJCXNlcnZlcklkVG9MYWJlbF8ucHV0KGlkLCBzZXJ2ZXJMYWJlbCk7Ci0JCQkJc2VydmVyTGFiZWxUb0lkXy5wdXQoc2VydmVyTGFiZWwsIGlkKTsKLQkJCX0KLQkJfQotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0U2VydmVyTGFiZWxGb3JJZChTdHJpbmcgZmFjdG9yeUlkKSB7Ci0JCWlmIChzZXJ2ZXJJZFRvTGFiZWxfID09IG51bGwpCi0JCQl0aGlzLmdldFNlcnZlckxhYmVsc0FuZElkcygpOwotCQlyZXR1cm4gKFN0cmluZykgc2VydmVySWRUb0xhYmVsXy5nZXQoZmFjdG9yeUlkKTsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldFNlcnZlcklkRm9yTGFiZWwoU3RyaW5nIGZhY3RvcnlMYWJlbCkgewotCQlpZiAoc2VydmVyTGFiZWxUb0lkXyA9PSBudWxsKQotCQkJdGhpcy5nZXRTZXJ2ZXJMYWJlbHNBbmRJZHMoKTsKLQkJcmV0dXJuIChTdHJpbmcpIHNlcnZlckxhYmVsVG9JZF8uZ2V0KGZhY3RvcnlMYWJlbCk7Ci0JfQotCi0JcHVibGljIElTdGF0dXMgbW9kaWZ5TW9kdWxlcyhJRW52aXJvbm1lbnQgZW52LCBJU2VydmVyIHNlcnZlciwKLQkJCUlNb2R1bGUgbW9kdWxlLCBib29sZWFuIGFkZCwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKSB7Ci0KLQkJSVNlcnZlcldvcmtpbmdDb3B5IHdjID0gbnVsbDsKLQkJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgIAotCQl0cnkgewotCi0JCQlpZiAobW9kdWxlID09IG51bGwgfHwgIW1vZHVsZS5nZXRQcm9qZWN0KCkuZXhpc3RzKCkpIHsKLQkJCQlyZXR1cm4gc3RhdHVzOwotCQkJfQotCi0JCQkvLyBjaGVjayBpZiBtb2R1bGUgaXMgYSB0cnVlIEphdmEgcHJvamVjdAotCQkJaWYgKG1vZHVsZSBpbnN0YW5jZW9mIElNb2R1bGUpIHsKLQkJCQlJTW9kdWxlIHBtID0gKElNb2R1bGUpIG1vZHVsZTsKLQkJCQlpZiAocG0gIT0gbnVsbCkgewotCQkJCQlJUHJvamVjdCBwcm9qZWN0ID0gcG0uZ2V0UHJvamVjdCgpOwotCQkJCQlpZiAocHJvamVjdCA9PSBudWxsCi0JCQkJCQkJfHwgUmVzb3VyY2VVdGlscy5pc1RydWVKYXZhUHJvamVjdChwcm9qZWN0KSkgewotCQkJCQkJcmV0dXJuIHN0YXR1czsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQotCQkJd2MgPSBzZXJ2ZXIuY3JlYXRlV29ya2luZ0NvcHkoKTsKLQkJCWlmICh3YyAhPSBudWxsKSB7Ci0vLwkJCQlPYmplY3QgeCA9IHNlcnZlci5nZXRBZGFwdGVyKElSdW5uaW5nQWN0aW9uU2VydmVyLmNsYXNzKTsKLS8vCQkJCWlmICh4ICE9IG51bGwgJiYgeCBpbnN0YW5jZW9mIElSdW5uaW5nQWN0aW9uU2VydmVyKSB7Ci0vLwkJCQkJaW50IHN0YXRlID0gc2VydmVyLmdldFNlcnZlclN0YXRlKCk7Ci0vLwkJCQkJaWYgKHN0YXRlID09IElTZXJ2ZXIuU1RBVEVfU1RPUFBFRAotLy8JCQkJCQkJfHwgc3RhdGUgPT0gSVNlcnZlci5TVEFURV9VTktOT1dOKSB7Ci0vLwkJCQkJCVN0cmluZyBtb2RlID0gSUxhdW5jaE1hbmFnZXIuUlVOX01PREU7Ci0vLwkJCQkJCXNlcnZlci5zeW5jaHJvbm91c1N0YXJ0KG1vZGUsIG1vbml0b3IpOwotLy8JCQkJCX0KLS8vCQkJCX0KLQotCQkJCUxpc3QgbGlzdCA9IEFycmF5cy5hc0xpc3Qoc2VydmVyLmdldE1vZHVsZXMoKSk7Ci0JCQkJaWYgKGFkZCkgewotCQkJCQlpZiAoIWxpc3QuY29udGFpbnMobW9kdWxlKSkgewotCQkJCQkJU2VydmVyVXRpbC5tb2RpZnlNb2R1bGVzKHdjLCBuZXcgSU1vZHVsZVtdIHsgbW9kdWxlIH0sCi0JCQkJCQkJCW5ldyBJTW9kdWxlWzBdLCBtb25pdG9yKTsKLQkJCQkJfQotCQkJCX0gZWxzZSB7IC8vIHJlbW92ZXMgbW9kdWxlCi0JCQkJCWlmIChsaXN0LmNvbnRhaW5zKG1vZHVsZSkpIHsKLQkJCQkJCVNlcnZlclV0aWwubW9kaWZ5TW9kdWxlcyh3YywgbmV3IElNb2R1bGVbMF0sCi0JCQkJCQkJCW5ldyBJTW9kdWxlW10geyBtb2R1bGUgfSwgbW9uaXRvcik7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCS8vIGhhbmRsZSBjYXNlIG9mIE51bGwgV0M7IG5vbi1pc3N1ZSBmb3Igbm93Ci0JCQl9Ci0JCX0gCi0gICAgY2F0Y2ggKENvcmVFeGNlcHRpb24gZXhjICkgCi0gICAgewotCQkJc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTUGx1Z2luTWVzc2FnZXMuTVNHX0VSUk9SX1NFUlZFUiwgZXhjICk7Ci0JCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQlyZXR1cm4gc3RhdHVzOwotCQl9IGZpbmFsbHkgewotCQkJaWYgKHdjICE9IG51bGwpIHsKLQkJCQkvLyBBbHdheXMgc2F2ZUFsbCBhbmQgcmVsZWFzZSB0aGUgc2VydmVyV29ya2luZ0NvcHkKLQkJCQl0cnkgCi0gICAgICAgIHsKLQkJCQkJd2Muc2F2ZUFsbCh0cnVlLCBtb25pdG9yKTsKLQkJCQl9IAotICAgICAgICBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBleGMgKSAKLSAgICAgICAgewotCQkJCQlzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggV1NQbHVnaW5NZXNzYWdlcy5NU0dfRVJST1JfU0VSVkVSLCBleGMgKTsKLQkJCQkJZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJCQlyZXR1cm4gc3RhdHVzOwotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gc3RhdHVzOwotCX0KLQotCXB1YmxpYyBzdGF0aWMgSVNlcnZlciBnZXRTZXJ2ZXJGb3JNb2R1bGUoSU1vZHVsZSBtb2R1bGUsIFN0cmluZyBzZXJ2ZXJUeXBlSWQsIAotCQkJCQkJCQlJU2VydmVyIHNlcnZlciwgYm9vbGVhbiBjcmVhdGUsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgewotCQlpZiAoc2VydmVyICE9IG51bGwpCi0JCQlyZXR1cm4gc2VydmVyOwotCQllbHNlCi0JCQlyZXR1cm4gZ2V0U2VydmVyRm9yTW9kdWxlKG1vZHVsZSwgc2VydmVyVHlwZUlkLCBjcmVhdGUsIG1vbml0b3IpOwotCX0KLQotCXB1YmxpYyBzdGF0aWMgSVNlcnZlciBnZXRTZXJ2ZXJGb3JNb2R1bGUoSU1vZHVsZSBtb2R1bGUsCi0JCQlTdHJpbmcgc2VydmVyVHlwZUlkLCBib29sZWFuIGNyZWF0ZSwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKSB7Ci0JCXRyeSB7Ci0KLQkJCUlTZXJ2ZXJbXSBzZXJ2ZXJzID0gU2VydmVyVXRpbC5nZXRTZXJ2ZXJzQnlNb2R1bGUobW9kdWxlLCBtb25pdG9yKTsKLQotCQkJaWYgKHNlcnZlcnMgIT0gbnVsbCAmJiBzZXJ2ZXJzLmxlbmd0aCA+IDApIHsKLQkJCQlpZiAoc2VydmVyVHlwZUlkID09IG51bGwgfHwgc2VydmVyVHlwZUlkLmxlbmd0aCgpID09IDApCi0JCQkJCXJldHVybiBzZXJ2ZXJzWzBdOyAvLyBXU0FEIHY0IGJlaGF2aW9yCi0KLQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHNlcnZlcnMubGVuZ3RoOyBpKyspIHsKLQkJCQkJaWYgKHNlcnZlcnNbaV0uZ2V0U2VydmVyVHlwZSgpLmdldElkKCkuZXF1YWxzSWdub3JlQ2FzZSgKLQkJCQkJCQlzZXJ2ZXJUeXBlSWQpKQotCQkJCQkJcmV0dXJuIHNlcnZlcnNbaV07Ci0JCQkJfQotCQkJfQotCi0JCQlyZXR1cm4gY3JlYXRlU2VydmVyKG1vZHVsZSwgc2VydmVyVHlwZUlkLCBtb25pdG9yKTsKLQotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJcmV0dXJuIG51bGw7Ci0JCX0KLQl9Ci0KLQlwdWJsaWMgc3RhdGljIElTZXJ2ZXIgZ2V0U2VydmVyRm9yTW9kdWxlKElNb2R1bGUgbW9kdWxlKSB7Ci0JCXRyeSB7Ci0JCQlJU2VydmVyW10gc2VydmVycyA9IFNlcnZlclV0aWwuZ2V0U2VydmVyc0J5TW9kdWxlKG1vZHVsZSwgbnVsbCk7Ci0JCQlyZXR1cm4gKChzZXJ2ZXJzICE9IG51bGwgJiYgc2VydmVycy5sZW5ndGggPiAwKSA/IHNlcnZlcnNbMF0gOiBudWxsKTsKLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCXJldHVybiBudWxsOwotCQl9Ci0JfQotCi0JLyoqCi0JICogCi0JICogQHBhcmFtIGVudgotCSAqIEBwYXJhbSBtb2R1bGUKLQkgKiBAcGFyYW0gc2VydmVyVHlwZUlkCi0JICogQHBhcmFtIG1vbml0b3IKLQkgKiBAcmV0dXJuCi0JICogCi0JICogQGRlcHJlY2F0ZWQKLQkgKi8KLQlwdWJsaWMgSVNlcnZlciBjcmVhdGVTZXJ2ZXIoSUVudmlyb25tZW50IGVudiwgSU1vZHVsZSBtb2R1bGUsCi0JCQlTdHJpbmcgc2VydmVyVHlwZUlkLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHsKLQkJSVNlcnZlcldvcmtpbmdDb3B5IHNlcnZlcldDID0gbnVsbDsKLQkJSVNlcnZlciBzZXJ2ZXIgPSBudWxsOwotCQl0cnkgewotCQkJSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IFNlcnZlckNvcmUuZmluZFNlcnZlclR5cGUoc2VydmVyVHlwZUlkKTsKLQkJCXNlcnZlcldDID0gc2VydmVyVHlwZS5jcmVhdGVTZXJ2ZXIoc2VydmVyVHlwZUlkLCBudWxsLCBtb25pdG9yKTsKLQkJCXRyeSB7Ci0JCQkJaWYgKHNlcnZlcldDICE9IG51bGwpIHsKLQkJCQkJc2VydmVyID0gc2VydmVyV0Muc2F2ZUFsbCh0cnVlLCBtb25pdG9yKTsKLQkJCQl9Ci0JCQl9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKSAKLSAgICAgIHsKLQkJCQlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBXU1BsdWdpbk1lc3NhZ2VzLk1TR19FUlJPUl9TRVJWRVIsIGNlKTsKLQkJCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0JCQkJcmV0dXJuIG51bGw7Ci0JCQl9Ci0KLQkJCWlmIChzZXJ2ZXIgIT0gbnVsbCkgewotCi0vLwkJCQlPYmplY3QgeCA9IHNlcnZlci5nZXRBZGFwdGVyKElSdW5uaW5nQWN0aW9uU2VydmVyLmNsYXNzKTsKLS8vCQkJCWlmICh4ICE9IG51bGwgJiYgeCBpbnN0YW5jZW9mIElSdW5uaW5nQWN0aW9uU2VydmVyKSB7Ci0vLwkJCQkJaW50IHN0YXRlID0gc2VydmVyLmdldFNlcnZlclN0YXRlKCk7Ci0vLwkJCQkJaWYgKHN0YXRlID09IElTZXJ2ZXIuU1RBVEVfU1RPUFBFRAotLy8JCQkJCQkJfHwgc3RhdGUgPT0gSVNlcnZlci5TVEFURV9VTktOT1dOKSB7Ci0vLwkJCQkJCVN0cmluZyBtb2RlID0gSUxhdW5jaE1hbmFnZXIuUlVOX01PREU7Ci0vLwkJCQkJCXNlcnZlci5zeW5jaHJvbm91c1N0YXJ0KG1vZGUsIG1vbml0b3IpOwotLy8JCQkJCX0KLS8vCQkJCX0KLQotCQkJCWlmIChtb2R1bGUgIT0gbnVsbCAmJiBtb2R1bGUuZ2V0UHJvamVjdCgpLmV4aXN0cygpKSB7Ci0JCQkJCUlNb2R1bGVbXSBwYXJlbnRNb2R1bGVzID0gc2VydmVyLmdldFJvb3RNb2R1bGVzKG1vZHVsZSwKLQkJCQkJCQltb25pdG9yKTsKLQkJCQkJaWYgKHBhcmVudE1vZHVsZXMgIT0gbnVsbCAmJiBwYXJlbnRNb2R1bGVzLmxlbmd0aCAhPSAwKSB7Ci0JCQkJCQltb2R1bGUgPSAoSU1vZHVsZSkgcGFyZW50TW9kdWxlc1swXTsKLQkJCQkJfQotCQkJCQlzZXJ2ZXJXQy5tb2RpZnlNb2R1bGVzKG5ldyBJTW9kdWxlW10geyBtb2R1bGUgfSwKLQkJCQkJCQluZXcgSU1vZHVsZVswXSwgbW9uaXRvcik7Ci0JCQkJfQotCi0JCQl9Ci0KLQkJCXJldHVybiBzZXJ2ZXI7Ci0JCX0gCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSAKLSAgICB7Ci0JCQlJU3RhdHVzIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBXU1BsdWdpbk1lc3NhZ2VzLk1TR19FUlJPUl9TRVJWRVIsIGUpOwotCQkJZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotCQkJcmV0dXJuIG51bGw7Ci0JCX0gZmluYWxseSB7Ci0JCQl0cnkgewotCQkJCWlmIChzZXJ2ZXJXQyAhPSBudWxsKSB7Ci0JCQkJCXNlcnZlcldDLnNhdmVBbGwodHJ1ZSwgbW9uaXRvcik7Ci0JCQkJfQotCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkgewotCQkJCUlTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTUGx1Z2luTWVzc2FnZXMuTVNHX0VSUk9SX1NFUlZFUiwgY2UpOwotCQkJCWVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJCQlyZXR1cm4gbnVsbDsKLQkJCX0KLQkJfQotCX0KLQotCS8qKgotCSAqIGNyZWF0ZVNlcnZlciBUaGlzIGNyZWF0ZXMgYSBzZXJ2ZXIgYnV0IGRvZXMgbm90IHJlcG9ydCBlcnJvcnMuIEBwYXJhbQotCSAqIG1vZHVsZSAKLQkgKiBAcGFyYW0gc2VydmVyVHlwZUlkIAotCSAqIEBwYXJhbSBtb25pdG9yIHByb2dyZXNzIG1vbml0b3IgCi0JICogQHJldHVybiBJU2VydmVyIHJldHVybnMgbnVsbCBpZiB1bnN1Y2Nlc3NmdWwKLQkgKiAKLQkgKiBAZGVwcmVjYXRlZAotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVNlcnZlciBjcmVhdGVTZXJ2ZXIoSU1vZHVsZSBtb2R1bGUsIFN0cmluZyBzZXJ2ZXJUeXBlSWQsCi0JCQlJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHsKLQkJSVNlcnZlcldvcmtpbmdDb3B5IHNlcnZlcldDID0gbnVsbDsKLQkJSVNlcnZlciBzZXJ2ZXIgPSBudWxsOwotCQl0cnkgewotCQkJSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IFNlcnZlckNvcmUuZmluZFNlcnZlclR5cGUoc2VydmVyVHlwZUlkKTsKLQkJCXNlcnZlcldDID0gc2VydmVyVHlwZS5jcmVhdGVTZXJ2ZXIoc2VydmVyVHlwZUlkLCBudWxsLCBtb25pdG9yKTsKLQotCQkJdHJ5IHsKLQkJCQlpZiAoc2VydmVyV0MgIT0gbnVsbCkgewotCQkJCQlzZXJ2ZXIgPSBzZXJ2ZXJXQy5zYXZlQWxsKHRydWUsIG1vbml0b3IpOwotCQkJCX0KLQkJCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpIHsKLQkJCQlyZXR1cm4gbnVsbDsKLQkJCX0KLQotCQkJaWYgKHNlcnZlciAhPSBudWxsKSB7Ci0KLS8vCQkJCU9iamVjdCB4ID0gc2VydmVyLmdldEFkYXB0ZXIoSVJ1bm5pbmdBY3Rpb25TZXJ2ZXIuY2xhc3MpOwotLy8JCQkJaWYgKHggIT0gbnVsbCAmJiB4IGluc3RhbmNlb2YgSVJ1bm5pbmdBY3Rpb25TZXJ2ZXIpIHsKLS8vCQkJCQlpbnQgc3RhdGUgPSBzZXJ2ZXIuZ2V0U2VydmVyU3RhdGUoKTsKLS8vCQkJCQlpZiAoc3RhdGUgPT0gSVNlcnZlci5TVEFURV9TVE9QUEVECi0vLwkJCQkJCQl8fCBzdGF0ZSA9PSBJU2VydmVyLlNUQVRFX1VOS05PV04pIHsKLS8vCQkJCQkJU3RyaW5nIG1vZGUgPSBJTGF1bmNoTWFuYWdlci5SVU5fTU9ERTsKLS8vCQkJCQkJc2VydmVyLnN5bmNocm9ub3VzU3RhcnQobW9kZSwgbW9uaXRvcik7Ci0vLwkJCQkJfQotLy8JCQkJfQotCQkJCWlmIChtb2R1bGUgIT0gbnVsbCkgewotCQkJCQlJTW9kdWxlW10gcGFyZW50TW9kdWxlcyA9IHNlcnZlci5nZXRSb290TW9kdWxlcyhtb2R1bGUsCi0JCQkJCQkJbW9uaXRvcik7Ci0JCQkJCWlmIChwYXJlbnRNb2R1bGVzICE9IG51bGwgJiYgcGFyZW50TW9kdWxlcy5sZW5ndGggIT0gMCkgewotCQkJCQkJbW9kdWxlID0gKElNb2R1bGUpIHBhcmVudE1vZHVsZXNbMF07Ci0JCQkJCX0KLQkJCQkJc2VydmVyV0MubW9kaWZ5TW9kdWxlcyhuZXcgSU1vZHVsZVtdIHsgbW9kdWxlIH0sCi0JCQkJCQkJbmV3IElNb2R1bGVbMF0sIG1vbml0b3IpOwotCQkJCX0KLQotCQkJfQotCi0JCQlyZXR1cm4gc2VydmVyOwotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJcmV0dXJuIG51bGw7Ci0JCX0gZmluYWxseSB7Ci0JCQl0cnkgewotCQkJCWlmIChzZXJ2ZXJXQyAhPSBudWxsKSB7Ci0JCQkJCXNlcnZlcldDLnNhdmVBbGwodHJ1ZSwgbW9uaXRvcik7Ci0JCQkJfQotCQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkgewotCQkJCXJldHVybiBudWxsOwotCQkJCS8vIGhhbmRsZXIgY29yZSBleGNlcHRpb24KLQkJCX0KLQkJfQotCX0KLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0U2VydmVyVHlwZUlkc0J5TW9kdWxlKElWaXJ0dWFsQ29tcG9uZW50IGNvbXBvbmVudCkgewotCQlJUHJvamVjdCBwcm9qZWN0ID0gY29tcG9uZW50LmdldFByb2plY3QoKTsKLQkJU3RyaW5nW10gc2VydmVySWRzID0gbnVsbDsKLQotCQlpZiAocHJvamVjdCAhPSBudWxsKSB7Ci0JCQlJU2VydmVyW10gc2VydmVycyA9IFNlcnZlclV0aWwuZ2V0U2VydmVyc0J5TW9kdWxlKGdldE1vZHVsZShwcm9qZWN0KSwgbnVsbCk7Ci0JCQlpZiAoc2VydmVycyAhPSBudWxsKSB7Ci0JCQkJc2VydmVySWRzID0gbmV3IFN0cmluZ1tzZXJ2ZXJzLmxlbmd0aF07Ci0KLQkJCQlmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgc2VydmVycy5sZW5ndGg7IGluZGV4KyspIHsKLQkJCQkJc2VydmVySWRzW2luZGV4XSA9IHNlcnZlcnNbaW5kZXhdLmdldElkKCk7Ci0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlpZiAoc2VydmVySWRzID09IG51bGwpIHsKLQkJCXNlcnZlcklkcyA9IG5ldyBTdHJpbmdbMF07Ci0JCX0KLQotCQlyZXR1cm4gc2VydmVySWRzOwotCX0KLQotCS8qKgotCSAqIEBwYXJhbSBwcm9qZWN0Ci0JICogQHJldHVybgotCSAqIEBkZXByZWNhdGVkIHNob3VsZCBiZSB1c2luZyBnZXRTZXJ2ZXJUeXBlSWRzQnlNb2R1bGUoIElWaXJ0dWFsQ29tcG9uZW50ICkKLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldFNlcnZlclR5cGVJZHNCeU1vZHVsZShJUHJvamVjdCBwcm9qZWN0KSB7Ci0JCVZlY3RvciBzZXJ2ZXJJZHMgPSBuZXcgVmVjdG9yKCk7Ci0JCWlmIChwcm9qZWN0ICE9IG51bGwpIHsKLQkJCUlTZXJ2ZXJbXSBzZXJ2ZXJzID0gU2VydmVyVXRpbC5nZXRTZXJ2ZXJzQnlNb2R1bGUoUmVzb3VyY2VVdGlscwotCQkJCQkuZ2V0TW9kdWxlKHByb2plY3QpLCBudWxsKTsKLQkJCWlmIChzZXJ2ZXJzICE9IG51bGwgJiYgc2VydmVycy5sZW5ndGggPiAwKSB7Ci0JCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7Ci0JCQkJCXNlcnZlcklkcy5hZGQoc2VydmVyc1tpXS5nZXRJZCgpKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIChTdHJpbmdbXSkgc2VydmVySWRzLnRvQXJyYXkobmV3IFN0cmluZ1tzZXJ2ZXJJZHMuc2l6ZSgpXSk7Ci0JfQotCi0JcHVibGljIHN0YXRpYyBJTW9kdWxlIGdldE1vZHVsZShJUHJvamVjdCBwcm9qZWN0KSB7Ci0JcmV0dXJuIFNlcnZlclV0aWwuZ2V0TW9kdWxlKHByb2plY3QpOwotfQotCQotLy8gV29ya2Fyb3VuZCBmb3IgMTEzNjIxCi0vL3B1YmxpYyBzdGF0aWMgSU1vZHVsZSBnZXRNb2R1bGUoSVByb2plY3QgcHJvamVjdCkgewotLy8JSU1vZHVsZVtdIG1vZHVsZXMgPSBTZXJ2ZXJVdGlsLmdldE1vZHVsZXMocHJvamVjdCk7Ci0vLwlpZiAobW9kdWxlcyE9bnVsbCAmJiBtb2R1bGVzLmxlbmd0aCE9MCkgewotLy8JCXJldHVybiBtb2R1bGVzWzBdOwotLy8JfQotLy8JcmV0dXJuIG51bGw7Ci0vL30KLSAgCi0JLyoqCi0JICogUmV0dXJucyB0aGUgVVJMIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoZSB3ZWIgc2VydmVyIG1vZHVsZSByb290IG9mIHRoZQotCSAqIGNvbXBvbmVudCBiYXNlZCBvbiBhIHNlcnZlciBmYWN0b3J5IElEIG9yIG51bGwgaWYgdGhlIHByb2plY3QgaGFzIG5vIFdlYiBuYXR1cmUKLQkgKiBvciB0aGUgbW9kdWxlIHJvb3QgY2Fubm90IGJlIGRldGVybWluZWQgKGUuZy4gRm9yIHNvbWUgdHlwZXMgb2YgCi0JICogc2VydmVycywgd2Ugd291bGQgbm90IGJlIGFibGUgdG8gZ2V0IG1vZHVsZSByb290IFVSTCBpZiB0aGUgc2VydmVyIGhhcyBub3QgYmVlbiBzdGFydGVkKS4KLQkgKiBOb3RlIHRoYXQgd2UgYXJlIG5vdCByZWx5aW5nIG9uIHdoaWNoIHNlcnZlciB0aGUgbW9kdWxlIGlzIGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggdG8gZGV0ZXJtaW5lCi0JICogdGhlIGNvcnJlY3QgbW9kdWxlIHNlcnZlciByb290IGJlY2F1c2UgdGhlIHByb2plY3QgbWlnaHQgYmUgYXNzb2NpYXRlZCB3aXRoIGEgc2VydmVyIGJ1dCB3ZSBuZWVkIHRoZQotCSAqIG1vZHVsZSByb290IGJhc2VkIG9uIGFub3RoZXIgc2VydmVyIGZhY3RvcnkgSUQuCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEBwYXJhbSBzZXJ2ZXJGYWN0b3J5SWQgc2VydmVyIGZhY3RvcnkgSUQKLQkgKiBAcmV0dXJuIFRoZSB3ZWIgc2VydmVyIG1vZHVsZSByb290IFVSTCBvciBudWxsIAotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFdlYkNvbXBvbmVudFVSTChJUHJvamVjdCBwcm9qZWN0LCBTdHJpbmcgc2VydmVyRmFjdG9yeUlkKSB7Ci0JCVN0cmluZyB3ZWJQcm9qZWN0VVJMID0gbnVsbDsKLQkJSU1vZHVsZSBtb2R1bGUgPSBnZXRNb2R1bGUocHJvamVjdCk7Ci0JCWlmIChtb2R1bGUgIT0gbnVsbCkgewotCQkJSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IFNlcnZlckNvcmUuZmluZFNlcnZlclR5cGUoc2VydmVyRmFjdG9yeUlkKTsgICAgICAgICAgICAgICAKLQkJCWlmIChzZXJ2ZXJUeXBlIT1udWxsKQotCQkJewotCQkJCXRyeSB7Ci0JCQkJCS8vQ2hvb3NlIGEgUnVudGltZSB3aGljaCBpcyBub3QgYSBzdHViCi0JCQkJCUlSdW50aW1lIG5vblN0dWJSdW50aW1lID0gbnVsbDsKLQkJCQkJSVJ1bnRpbWVbXSBydW50aW1lcyA9IFNlcnZlclV0aWwuZ2V0UnVudGltZXMobnVsbCwgbnVsbCk7Ci0JCQkJCVN0cmluZyBzZXJ2ZXJSdW50aW1lVHlwZUlkID0gc2VydmVyVHlwZS5nZXRSdW50aW1lVHlwZSgpLmdldElkKCk7Ci0JCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgcnVudGltZXMubGVuZ3RoOyBpKyspIHsKLQkJCQkJCUlSdW50aW1lIHJ1bnRpbWUgPSBydW50aW1lc1tpXTsKLQkJCQkJCUlSdW50aW1lVHlwZSBydW50aW1lVHlwZSA9IHJ1bnRpbWUuZ2V0UnVudGltZVR5cGUoKTsKLQkJCQkJCWlmIChydW50aW1lVHlwZSAhPSBudWxsKQotCQkJCQkJewotCQkJCQkJCVN0cmluZyB0aGlzUnVudGltZVR5cGVJZCA9IHJ1bnRpbWVUeXBlLmdldElkKCk7Ci0JCQkJCQkJaWYgKHRoaXNSdW50aW1lVHlwZUlkLmVxdWFscyhzZXJ2ZXJSdW50aW1lVHlwZUlkKSAmJiAhcnVudGltZS5pc1N0dWIoKSkgewotCQkJCQkJCQkvL0ZvdW5kIGFuIGFwcHJvcHJpYXRlIElSdW50aW1lIHRoYXQgaXMgbm90IGEgc3R1YgotCQkJCQkJCQlub25TdHViUnVudGltZSA9IHJ1bnRpbWU7Ci0JCQkJCQkJCWJyZWFrOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCi0JCQkJCWlmIChub25TdHViUnVudGltZSAhPSBudWxsKQotCQkJCQl7Ci0JCQkJCQlJU2VydmVyV29ya2luZ0NvcHkgc2VydmVyV0MgPSBzZXJ2ZXJUeXBlLmNyZWF0ZVNlcnZlcihudWxsLCBudWxsLCBub25TdHViUnVudGltZSwgbnVsbCk7Ci0JCQkJCQlJVVJMUHJvdmlkZXIgdXJsUHJvdmlkZXIgPSAoSVVSTFByb3ZpZGVyKSBzZXJ2ZXJXQy5sb2FkQWRhcHRlcihJVVJMUHJvdmlkZXIuY2xhc3MsIG51bGwpOwotCQkJCQkJaWYgKHVybFByb3ZpZGVyIT1udWxsKSB7Ci0JCQkJCQkJVVJMIHVybCA9IHVybFByb3ZpZGVyLmdldE1vZHVsZVJvb3RVUkwobW9kdWxlKTsJCQkJCQkJCi0JCQkJCQkJaWYgKHVybCAhPSBudWxsKSB7Ci0JCQkJCQkJCVN0cmluZyBzID0gdXJsLnRvU3RyaW5nKCk7Ci0JCQkJCQkJCXdlYlByb2plY3RVUkwgPSAocy5lbmRzV2l0aCgiLyIpID8gcy5zdWJzdHJpbmcoMCwgcy5sZW5ndGgoKSAtIDEpIDogcyk7Ci0JCQkJCQkJfQkJCQkKLQkJCQkJCX0KLQkJCQkJfQotCi0JCQkJfSBjYXRjaChDb3JlRXhjZXB0aW9uIGNlKXsKLQkJCQkJTG9nZ2VyLmdldExvZ2dlcigpLmxvZyhjZSk7Ci0JCQkJfQotCi0JCQl9Ci0JCX0KLQkJcmV0dXJuIHdlYlByb2plY3RVUkw7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgVVJMIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoZSB3ZWIgc2VydmVyIG1vZHVsZSByb290IG9mIHRoZQotCSAqIGNvbXBvbmVudCBiYXNlZCBvbiBhIHNlcnZlciBmYWN0b3J5IElEIGFuZCBzZXJ2ZXIuICBSZXR1cm5zIG51bGwgaWYgdGhlIHByb2plY3QgaGFzIG5vIFdlYiBuYXR1cmUKLQkgKiBvciB0aGUgbW9kdWxlIHJvb3QgY2Fubm90IGJlIGRldGVybWluZWQgKGUuZy4gRm9yIHNvbWUgdHlwZXMgb2YgCi0JICogc2VydmVycywgd2Ugd291bGQgbm90IGJlIGFibGUgdG8gZ2V0IG1vZHVsZSByb290IFVSTCBpZiB0aGUgc2VydmVyIGhhcyBub3QgYmVlbiBzdGFydGVkKS4KLQkgKiBOb3RlIHRoYXQgd2UgYXJlIG5vdCByZWx5aW5nIG9uIHdoaWNoIHNlcnZlciB0aGUgbW9kdWxlIGlzIGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggdG8gZGV0ZXJtaW5lCi0JICogdGhlIGNvcnJlY3QgbW9kdWxlIHNlcnZlciByb290IGJlY2F1c2UgdGhlIHByb2plY3QgbWlnaHQgYmUgYXNzb2NpYXRlZCB3aXRoIGEgc2VydmVyIGJ1dCB3ZSBuZWVkIHRoZQotCSAqIG1vZHVsZSByb290IGJhc2VkIG9uIGFub3RoZXIgc2VydmVyIC8gc2VydmVyIGZhY3RvcnkgSUQuCi0JICogCi0JICogQHBhcmFtIHByb2plY3QKLQkgKiAgICAgICAgICAgIFRoZSBwcm9qZWN0LgotCSAqIEBwYXJhbSBzZXJ2ZXJGYWN0b3J5SWQgc2VydmVyIGZhY3RvcnkgSUQKLQkgKiBAcGFyYW0gc2VydmVyIFNlcnZlciBpZAotCSAqIEByZXR1cm4gVGhlIHdlYiBzZXJ2ZXIgbW9kdWxlIHJvb3QgVVJMIG9yIG51bGwgCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0V2ViQ29tcG9uZW50VVJMKElQcm9qZWN0IHByb2plY3QsCi0JCQlTdHJpbmcgc2VydmVyRmFjdG9yeUlkLCBJU2VydmVyIHNlcnZlcikgewotCi0JCVN0cmluZyB3ZWJQcm9qZWN0VVJMID0gbnVsbDsKLQkJSU1vZHVsZSBtb2R1bGUgPSBnZXRNb2R1bGUocHJvamVjdCk7Ci0JCWlmIChtb2R1bGUgIT0gbnVsbCkgewotCQkJaWYgKHNlcnZlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgSVVSTFByb3ZpZGVyIHVybFByb3ZpZGVyID0gKElVUkxQcm92aWRlcikgc2VydmVyLmxvYWRBZGFwdGVyKElVUkxQcm92aWRlci5jbGFzcywgbnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKHVybFByb3ZpZGVyIT1udWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIFVSTCB1cmwgPSB1cmxQcm92aWRlci5nZXRNb2R1bGVSb290VVJMKG1vZHVsZSk7ICAgICAgICAgICAgICAKLQkJCQkJaWYgKHVybCAhPSBudWxsKSB7Ci0JCQkJCSAgU3RyaW5nIHMgPSB1cmwudG9TdHJpbmcoKTsKLQkJCQkJICB3ZWJQcm9qZWN0VVJMID0gKHMuZW5kc1dpdGgoIi8iKSA/IHMuc3Vic3RyaW5nKDAsIHMubGVuZ3RoKCkgLSAxKSA6IHMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0JCQkJfQotCQkJfSBlbHNlIHsKLQkJCQl3ZWJQcm9qZWN0VVJMID0gZ2V0V2ViQ29tcG9uZW50VVJMKHByb2plY3QsIHNlcnZlckZhY3RvcnlJZCk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIHdlYlByb2plY3RVUkw7Ci0JfQotCQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEVuY29kZWRXZWJDb21wb25lbnRVUkwoSVByb2plY3QgcHJvamVjdCwgU3RyaW5nIHNlcnZlckZhY3RvcnlJZCkgewotCQlTdHJpbmcgdXJsID0gZ2V0V2ViQ29tcG9uZW50VVJMKHByb2plY3QsIHNlcnZlckZhY3RvcnlJZCk7Ci0JCXJldHVybiBlbmNvZGVVUkwodXJsKTsKLQl9Ci0JCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RW5jb2RlZFdlYkNvbXBvbmVudFVSTChJUHJvamVjdCBwcm9qZWN0LCBTdHJpbmcgc2VydmVyRmFjdG9yeUlkLCBJU2VydmVyIHNlcnZlcikgewotCQlTdHJpbmcgdXJsID0gZ2V0V2ViQ29tcG9uZW50VVJMKHByb2plY3QsIHNlcnZlckZhY3RvcnlJZCwgc2VydmVyKTsKLQkJcmV0dXJuIGVuY29kZVVSTCh1cmwpOwotCX0KLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGVuY29kZVVSTChTdHJpbmcgdXJsKSB7Ci0JCWlmICh1cmwgIT0gbnVsbCkgewotCQkJaW50IGluZGV4ID0gdXJsLmxhc3RJbmRleE9mKCcvJyk7Ci0JCQlpZiAoaW5kZXggIT0gLTEpIHsKLQkJCQlTdHJpbmdCdWZmZXIgZW5jb2RlZFVSTCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLQkJCQllbmNvZGVkVVJMLmFwcGVuZCh1cmwuc3Vic3RyaW5nKDAsIGluZGV4ICsgMSkpOwotCQkJCXRyeSB7Ci0JCQkJCVN0cmluZyBjdHh0Um9vdCA9IFVSTEVuY29kZXIuZW5jb2RlKHVybC5zdWJzdHJpbmcoaW5kZXggKyAxLCB1cmwubGVuZ3RoKCkpLCAiVVRGLTgiKTsKLQkJCQkJaW50IHBsdXNJbmRleCA9IGN0eHRSb290LmluZGV4T2YoJysnKTsKLQkJCQkJd2hpbGUgKHBsdXNJbmRleCAhPSAtMSkgewotCQkJCQkJU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQkJCQkJc2IuYXBwZW5kKGN0eHRSb290LnN1YnN0cmluZygwLCBwbHVzSW5kZXgpKTsKLQkJCQkJCXNiLmFwcGVuZCgiJTIwIik7Ci0JCQkJCQlzYi5hcHBlbmQoY3R4dFJvb3Quc3Vic3RyaW5nKHBsdXNJbmRleCArIDEsIGN0eHRSb290Ci0JCQkJCQkJLmxlbmd0aCgpKSk7Ci0JCQkJCQljdHh0Um9vdCA9IHNiLnRvU3RyaW5nKCk7Ci0JCQkJCQlwbHVzSW5kZXggPSBjdHh0Um9vdC5pbmRleE9mKCcrJyk7Ci0JCQkJCX0KLQkJCQkJZW5jb2RlZFVSTC5hcHBlbmQoY3R4dFJvb3QpOwotCQkJCX1jYXRjaCAoSU9FeGNlcHRpb24gaW8pewotCQkJCQkvL2hhbmRsZXIgZXhjZXB0aW9uCi0JCQkJfQkJCQkKLQkJCQl1cmwgPSBlbmNvZGVkVVJMLnRvU3RyaW5nKCk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIHVybDsKLQl9CQotCi0JcHVibGljIHN0YXRpYyBJU2VydmVyIGdldERlZmF1bHRFeGlzdGluZ1NlcnZlcihJVmlydHVhbENvbXBvbmVudCBjb21wb25lbnQpIHsKLQkJSVByb2plY3QgcHJvamVjdCA9IGNvbXBvbmVudC5nZXRQcm9qZWN0KCk7Ci0JCUlNb2R1bGUgbW9kdWxlID0gZ2V0TW9kdWxlKHByb2plY3QpOwotCQlJU2VydmVyIHByZWZlcnJlZFNlcnZlciA9IFNlcnZlckNvcmUuZ2V0RGVmYXVsdFNlcnZlcihtb2R1bGUpOwotCQlpZiAocHJlZmVycmVkU2VydmVyICE9IG51bGwpCi0JCQlyZXR1cm4gcHJlZmVycmVkU2VydmVyOwotCQkKLQkJSVNlcnZlcltdIGNvbmZpZ3VyZWRTZXJ2ZXJzID0gU2VydmVyVXRpbC5nZXRTZXJ2ZXJzQnlNb2R1bGUobW9kdWxlLAotCQkJCW51bGwpOwotCi0JCWlmIChjb25maWd1cmVkU2VydmVycyAhPSBudWxsICYmIGNvbmZpZ3VyZWRTZXJ2ZXJzLmxlbmd0aCA+IDApIHsKLQkJCXByZWZlcnJlZFNlcnZlciA9IGNvbmZpZ3VyZWRTZXJ2ZXJzWzBdOwotCQl9IGVsc2UgewotCQkJSVNlcnZlcltdIG5vbkNvbmZpZ3VyZWRTZXJ2ZXJzID0gU2VydmVyVXRpbAotCQkJCQkuZ2V0QXZhaWxhYmxlU2VydmVyc0Zvck1vZHVsZShtb2R1bGUsIGZhbHNlLCBudWxsKTsKLQotCQkJaWYgKG5vbkNvbmZpZ3VyZWRTZXJ2ZXJzICE9IG51bGwKLQkJCQkJJiYgbm9uQ29uZmlndXJlZFNlcnZlcnMubGVuZ3RoID4gMCkgewotCQkJCXByZWZlcnJlZFNlcnZlciA9IG5vbkNvbmZpZ3VyZWRTZXJ2ZXJzWzBdOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHByZWZlcnJlZFNlcnZlcjsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gcHJvamVjdAotCSAqIEByZXR1cm4KLQkgKiBAZGVwcmVjYXRlZCBzaG91bGQgYmUgdXNpbmcgZ2V0RGVmYXVsdEV4aXN0aW5nU2VydmVyKCBJVmlydHVhbENvbXBvbmVudCApCi0JICovCi0JcHVibGljIHN0YXRpYyBJU2VydmVyIGdldERlZmF1bHRFeGlzdGluZ1NlcnZlcihJUHJvamVjdCBwcm9qZWN0KSB7Ci0gICAgCi0gICAgICBJTW9kdWxlIG1vZHVsZSA9IFNlcnZlclV0aWwuZ2V0TW9kdWxlKHByb2plY3QpOwotICAgICAgSVNlcnZlciBwcmVmZXJyZWRTZXJ2ZXIgPSBudWxsOwotICAgICAgcHJlZmVycmVkU2VydmVyID0gU2VydmVyQ29yZS5nZXREZWZhdWx0U2VydmVyKG1vZHVsZSk7Ci0JCQotLy8gV29ya2Fyb3VuZCBmb3IgMTEzNjIxCi0vLwkJSU1vZHVsZVtdIG1vZHVsZXMgPSBTZXJ2ZXJVdGlsLmdldE1vZHVsZXMocHJvamVjdCk7Ci0vLyAgICAgIElTZXJ2ZXIgcHJlZmVycmVkU2VydmVyID0gbnVsbDsKLS8vICAgICAgaWYgKG1vZHVsZXMubGVuZ3RoID4gMCl7Ci0vLyAgICAgICAgcHJlZmVycmVkU2VydmVyID0gU2VydmVyQ29yZS5nZXREZWZhdWx0U2VydmVyKG1vZHVsZXNbMF0pOwotLy8gICAgICB9Ci0gIAotCQlpZiAocHJlZmVycmVkU2VydmVyICE9IG51bGwpCi0JCQlyZXR1cm4gcHJlZmVycmVkU2VydmVyOwotCi0JCUlTZXJ2ZXJbXSBjb25maWd1cmVkU2VydmVycyA9IFNlcnZlclV0aWwuZ2V0U2VydmVyc0J5TW9kdWxlKAotCQkJCVJlc291cmNlVXRpbHMuZ2V0TW9kdWxlKHByb2plY3QpLCBudWxsKTsKLQkJaWYgKGNvbmZpZ3VyZWRTZXJ2ZXJzICE9IG51bGwgJiYgY29uZmlndXJlZFNlcnZlcnMubGVuZ3RoID4gMCkgewotCQkJcmV0dXJuIGNvbmZpZ3VyZWRTZXJ2ZXJzWzBdOwotCQl9Ci0KLQkJSVNlcnZlcltdIG5vbkNvbmZpZ3VyZWRTZXJ2ZXJzID0gU2VydmVyVXRpbAotCQkJCS5nZXRBdmFpbGFibGVTZXJ2ZXJzRm9yTW9kdWxlKFJlc291cmNlVXRpbHMuZ2V0TW9kdWxlKHByb2plY3QpLAotCQkJCQkJZmFsc2UsIG51bGwpOwotCQlpZiAobm9uQ29uZmlndXJlZFNlcnZlcnMgIT0gbnVsbCAmJiBub25Db25maWd1cmVkU2VydmVycy5sZW5ndGggPiAwKSB7Ci0JCQlyZXR1cm4gbm9uQ29uZmlndXJlZFNlcnZlcnNbMF07Ci0JCX0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoKLQkgKiBAcGFyYW0gbW9kdWxlVHlwZSAtIGFkIGRlZmluZWQgaW4gSVNlcnZlclRhcmdldENvbnN0YW50cyAoaS5lLiBFQVJfVFlQRSwKLQkgKiBXRUJfVFlQRSwgZXRjLikgQHBhcmFtIGoyZWVWZXJzaW9uIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50Ci0JICogdmFsdWVzIGluIEoyRUVWZXJzaW9uQ29uc3RhbnRzIGkuZS4gIjEyIiBvciAiMTMiIG9yICIxNCIgQHJldHVybiBTdHJpbmcKLQkgKiB0aGUgaWQgb2YgdGhlIHNlcnZlciB0YXJnZXQgLSB0byBiZSB1c2VkIGluIHByb2plY3QgY3JlYXRpb24gb3BlcmF0aW9ucy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRTZXJ2ZXJUYXJnZXRJZEZyb21GYWN0b3J5SWQoU3RyaW5nIHNlcnZlckZhY3RvcnlJZCwKLQkJCVN0cmluZyBtb2R1bGVUeXBlLCBTdHJpbmcgajJlZVZlcnNpb24pIHsKLQkJSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IFNlcnZlckNvcmUuZmluZFNlcnZlclR5cGUoc2VydmVyRmFjdG9yeUlkKTsKLQkJaWYgKHNlcnZlclR5cGUgPT0gbnVsbCkKLQkJCXJldHVybiBudWxsOwotCi0JCVN0cmluZyBzZXJ2ZXJSdW50aW1lVHlwZUlkID0gc2VydmVyVHlwZS5nZXRSdW50aW1lVHlwZSgpLmdldElkKCk7Ci0KLQkJU3RyaW5nIHN0SjJFRVZlcnNpb24gPSBTZXJ2ZXJVdGlscy5nZXRTZXJ2ZXJUYXJnZXRKMkVFVmVyc2lvbihqMmVlVmVyc2lvbik7Ci0gICAgICAgIExpc3QgcnVudGltZXMgPSBBcnJheXMuYXNMaXN0KFNlcnZlclV0aWwuZ2V0UnVudGltZXMobW9kdWxlVHlwZSwgc3RKMkVFVmVyc2lvbikpOyAgICAKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBydW50aW1lcy5zaXplKCk7IGkrKykgewotCQkJSVJ1bnRpbWUgcnVudGltZSA9IChJUnVudGltZSkgcnVudGltZXMuZ2V0KGkpOwotCQkJSVJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBlID0gcnVudGltZS5nZXRSdW50aW1lVHlwZSgpOwotCQkJaWYgKHJ1bnRpbWVUeXBlICE9IG51bGwpCi0JCQl7Ci0JCQkJU3RyaW5nIHRoaXNSdW50aW1lVHlwZUlkID0gcnVudGltZVR5cGUuZ2V0SWQoKTsKLQkJCQlpZiAodGhpc1J1bnRpbWVUeXBlSWQuZXF1YWxzKHNlcnZlclJ1bnRpbWVUeXBlSWQpICYmICFydW50aW1lLmlzU3R1YigpKSB7Ci0JCQkJCXJldHVybiBydW50aW1lLmdldElkKCk7Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoKLQkgKiBAcGFyYW0gc2VydmVyRmFjdG9yeUlkIHRoZSBzZXJ2ZXIncyBmYWN0b3J5IGlkIEByZXR1cm5zIHRoZSBydW50aW1lIHR5cGUKLQkgKiBpZCBnaXZlbiB0aGUgc2VydmVyJ3MgZmFjdG9yeSBpZC4gUmV0dXJucyBhIGJsYW5rIFN0cmluZyBpZiB0aGUgbm8KLQkgKiBTZXJ2ZXJUeXBlIGV4aXN0cyBmb3IgdGhlIGdpdmVuIGZhY3RvcnkgaWQuCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UnVudGltZVRhcmdldElkRnJvbUZhY3RvcnlJZChTdHJpbmcgc2VydmVyRmFjdG9yeUlkKSB7Ci0JCUlTZXJ2ZXJUeXBlIHNlcnZlclR5cGUgPSBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXJUeXBlKHNlcnZlckZhY3RvcnlJZCk7Ci0JCWlmIChzZXJ2ZXJUeXBlICE9IG51bGwpIHsKLQkJCVN0cmluZyBzZXJ2ZXJSdW50aW1lSWQgPSBzZXJ2ZXJUeXBlLmdldFJ1bnRpbWVUeXBlKCkuZ2V0SWQoKTsKLQkJCXJldHVybiBzZXJ2ZXJSdW50aW1lSWQ7Ci0JCX0gZWxzZQotCQkJcmV0dXJuICIiOwotCX0KLQkKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRGYWN0b3J5SWRGcm9tUnVudGltZVRhcmdldElkKFN0cmluZyBydW50aW1lVGFyZ2V0SWQpewotCQlJU2VydmVyVHlwZVtdIHNlcnZlclR5cGVzID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJUeXBlcygpOwotCQlmb3IgKGludCBpPTA7aTxzZXJ2ZXJUeXBlcy5sZW5ndGg7aSsrKSB7Ci0JCQlJUnVudGltZVR5cGUgcnVudGltZVR5cCA9IHNlcnZlclR5cGVzW2ldLmdldFJ1bnRpbWVUeXBlKCk7Ci0JCQlpZiAocnVudGltZVR5cCE9bnVsbCl7Ci0JCQkJaWYgKHJ1bnRpbWVUeXAuZ2V0SWQoKS5lcXVhbHMocnVudGltZVRhcmdldElkKSkKLQkJCQkJcmV0dXJuIHNlcnZlclR5cGVzW2ldLmdldElkKCk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuICIiOwotCQkKLQl9Ci0JCi0KLQkvKgotCSAqIEBwYXJhbSBzZXJ2ZXJGYWN0b3J5SWQgdGhlIHNlcnZlcidzIGZhY3RvcnkgaWQgQHJldHVybnMgdGhlIHNlcnZlciB0eXBlCi0JICogaWQgZ2l2ZW4gdGhlIHNlcnZlcidzIGZhY3RvcnkgaWQuIFJldHVybnMgYSBibGFuayBTdHJpbmcgaWYgdGhlIG5vCi0JICogU2VydmVyVHlwZSBleGlzdHMgZm9yIHRoZSBnaXZlbiBmYWN0b3J5IGlkLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNlcnZlclR5cGVJZEZyb21GYWN0b3J5SWQoU3RyaW5nIHNlcnZlckZhY3RvcnlJZCkgewotCQlJU2VydmVyVHlwZSBzZXJ2ZXJUeXBlID0gU2VydmVyQ29yZS5maW5kU2VydmVyVHlwZShzZXJ2ZXJGYWN0b3J5SWQpOwotCQlpZiAoc2VydmVyVHlwZSAhPSBudWxsKSB7Ci0JCQlTdHJpbmcgc2VydmVyVHlwZUlkID0gc2VydmVyVHlwZS5nZXRJZCgpOwotCQkJcmV0dXJuIHNlcnZlclR5cGVJZDsKLQkJfSBlbHNlCi0JCQlyZXR1cm4gIiI7Ci0JfQotCi0JLyoKLQkgKiBAcGFyYW0gajJlZVZlcnNpb24gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnQgdmFsdWVzIGluCi0JICogSjJFRVZlcnNpb25Db25zdGFudHMgaS5lLiAiMTIiIG9yICIxMyIgb3IgIjE0IgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1RhcmdldFZhbGlkRm9yRUFSKFN0cmluZyBydW50aW1lVGFyZ2V0SWQsCi0JCQlTdHJpbmcgajJlZVZlcnNpb24pIHsKLQkJaWYgKHJ1bnRpbWVUYXJnZXRJZCA9PSBudWxsKQotCQkJcmV0dXJuIGZhbHNlOwotCi0JCVN0cmluZyBlYXJNb2R1bGVUeXBlID0gSU1vZHVsZUNvbnN0YW50cy5KU1RfRUFSX01PRFVMRTsKLQkJU3RyaW5nIHN0SjJFRVZlcnNpb24gPSBTZXJ2ZXJVdGlscy5nZXRTZXJ2ZXJUYXJnZXRKMkVFVmVyc2lvbihqMmVlVmVyc2lvbik7Ci0gICAgICAgIExpc3QgcnVudGltZXMgPSBBcnJheXMuYXNMaXN0KFNlcnZlclV0aWwuZ2V0UnVudGltZXMoZWFyTW9kdWxlVHlwZSwgc3RKMkVFVmVyc2lvbikpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IHJ1bnRpbWVzLnNpemUoKTsgaSsrKSB7Ci0JCQlJUnVudGltZSBydW50aW1lID0gKElSdW50aW1lKSBydW50aW1lcy5nZXQoaSk7Ci0JCQlJUnVudGltZVR5cGUgcnVudGltZVR5cGUgPSBydW50aW1lLmdldFJ1bnRpbWVUeXBlKCk7Ci0JCQlpZiAocnVudGltZVR5cGUgIT0gbnVsbCkKLQkJCXsKLQkJCQlTdHJpbmcgdGhpc0lkID0gcnVudGltZVR5cGUuZ2V0SWQoKTsKLQkJCQlpZiAodGhpc0lkLmVxdWFscyhydW50aW1lVGFyZ2V0SWQpKQotCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCX0KLQkJfQotCi0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKgotCSAqIEBwYXJhbSBqMmVlVmVyc2lvbiBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludCB2YWx1ZXMgaW4KLQkgKiBKMkVFVmVyc2lvbkNvbnN0YW50cyBpLmUuICIxMiIgb3IgIjEzIiBvciAiMTQiIEBwYXJhbSB0aGUgcHJvamVjdCB0eXBlCi0JICogZnJvbSBJU2VydmVyVGFyZ2V0Q29uc3RhbnRzCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzVGFyZ2V0VmFsaWRGb3JQcm9qZWN0VHlwZShTdHJpbmcgcnVudGltZVRhcmdldElkLAotCQkJU3RyaW5nIGoyZWVWZXJzaW9uLCBTdHJpbmcgcHJvamVjdFR5cGUpIHsKLQkJaWYgKHJ1bnRpbWVUYXJnZXRJZCA9PSBudWxsKQotCQkJcmV0dXJuIGZhbHNlOwotCi0JCWlmIChwcm9qZWN0VHlwZSA9PSBudWxsIHx8IHByb2plY3RUeXBlLmxlbmd0aCgpID09IDApCi0JCQlyZXR1cm4gZmFsc2U7Ci0KLQkJU3RyaW5nIHN0SjJFRVZlcnNpb24gPSBTZXJ2ZXJVdGlscy5nZXRTZXJ2ZXJUYXJnZXRKMkVFVmVyc2lvbihqMmVlVmVyc2lvbik7Ci0gICAgICAgIExpc3QgcnVudGltZXMgPSBBcnJheXMuYXNMaXN0KFNlcnZlclV0aWwuZ2V0UnVudGltZXMocHJvamVjdFR5cGUsIHN0SjJFRVZlcnNpb24pKTsgICAgCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgcnVudGltZXMuc2l6ZSgpOyBpKyspIHsKLQkJCUlSdW50aW1lIHJ1bnRpbWUgPSAoSVJ1bnRpbWUpIHJ1bnRpbWVzLmdldChpKTsKLQkJCUlSdW50aW1lVHlwZSBydW50aW1lVHlwZSA9IHJ1bnRpbWUuZ2V0UnVudGltZVR5cGUoKTsKLQkJCWlmIChydW50aW1lVHlwZSAhPSBudWxsKQotCQkJewotCQkJCVN0cmluZyB0aGlzSWQgPSBydW50aW1lVHlwZS5nZXRJZCgpOwotCQkJCWlmICh0aGlzSWQuZXF1YWxzKHJ1bnRpbWVUYXJnZXRJZCkpCi0JCQkJCXJldHVybiB0cnVlOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNlcnZlclRhcmdldEoyRUVWZXJzaW9uKFN0cmluZyBqMmVlVmVyc2lvbikgewotCi0JCWlmIChqMmVlVmVyc2lvbiA9PSBudWxsIHx8IGoyZWVWZXJzaW9uLmxlbmd0aCgpID09IDApCi0JCQlyZXR1cm4gbnVsbDsKLQotCQlpbnQgajJlZVZlcnNpb25JbnQgPSBJbnRlZ2VyLnBhcnNlSW50KGoyZWVWZXJzaW9uKTsKLQkJc3dpdGNoIChqMmVlVmVyc2lvbkludCkgewotCQljYXNlIChKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfMl9JRCk6Ci0JCQlyZXR1cm4gSVNlcnZlclRhcmdldENvbnN0YW50cy5KMkVFXzEyOwotCQljYXNlIChKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfM19JRCk6Ci0JCQlyZXR1cm4gSVNlcnZlclRhcmdldENvbnN0YW50cy5KMkVFXzEzOwotCQljYXNlIChKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfNF9JRCk6Ci0JCQlyZXR1cm4gSVNlcnZlclRhcmdldENvbnN0YW50cy5KMkVFXzE0OwotCQlkZWZhdWx0OgotCQkJcmV0dXJuIG51bGw7Ci0JCX0KLQl9Ci0JCi0JLy9Db252ZXJ0cyBhIG1vZHVsZSB0eXBlIGZyb20gSjJFRVV0aWxzIHRvIGEgbW9kdWxlIHR5cGUgbGlrZQotCS8vdGhlIG9uZSBpbiBJU2VydmVyVGFyZ2V0Q29uc3RhbnRzLgotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNlcnZlclRhcmdldE1vZHVsZVR5cGUoaW50IG1vZHVsZVR5cGUpCi0JewotCQlzd2l0Y2ggKG1vZHVsZVR5cGUpCi0gICAgewotICAgIGNhc2UgSjJFRVV0aWxzLldFQiA6Ci0gICAgICByZXR1cm4gSVNlcnZlclRhcmdldENvbnN0YW50cy5XRUJfVFlQRTsKLSAgICBjYXNlIEoyRUVVdGlscy5FSkIgOgotICAgICAgcmV0dXJuIElTZXJ2ZXJUYXJnZXRDb25zdGFudHMuRUpCX1RZUEU7Ci0gICAgY2FzZSBKMkVFVXRpbHMuQVBQQ0xJRU5UIDoKLSAgICAgIHJldHVybiBJU2VydmVyVGFyZ2V0Q29uc3RhbnRzLkFQUF9DTElFTlRfVFlQRTsKLSAgICBjYXNlIEoyRUVVdGlscy5FQVIgOgotICAgICAgcmV0dXJuIElTZXJ2ZXJUYXJnZXRDb25zdGFudHMuRUFSX1RZUEU7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBudWxsOwotICAgICAgCi0gICAgfSAgICAgIAkJCQotCX0KLSAgICAKLSAgLyoKLSAgICogUmV0dXJucyBhIG5vbi1zdHViIHJ1bnRpbWUgaWYgb25lIGlzIGF2YWlsYWJsZSBmb3IgdGhlIHRoZSBnaXZlbiBzZXJ2ZXIgdHlwZS4KLSAgICogQHBhcmFtIHNlcnZlckZhY3RvcnlJZCAtIHNlcnZlciB0eXBlIGlkCi0gICAqIEByZXR1cm5zIElSdW50aW1lIFJldHVybnMgYSBub24tc3R1YiBydW50aW1lIGlmIG9uZSBpcyBhdmFpbGFibGUgZm9yIHRoZSB0aGUgZ2l2ZW4gc2VydmVyIHR5cGUuCi0gICAqIFJldHVybnMgbnVsbCBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIElSdW50aW1lIGdldE5vblN0dWJSdW50aW1lKFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQpCi0gIHsKLSAgICAvL0ZpbmQgYSBSdW50aW1lIHdoaWNoIGlzIG5vdCBhIHN0dWIKLSAgICBJU2VydmVyVHlwZSBzZXJ2ZXJUeXBlID0gU2VydmVyQ29yZS5maW5kU2VydmVyVHlwZShzZXJ2ZXJGYWN0b3J5SWQpOwotICAgIElSdW50aW1lIG5vblN0dWJSdW50aW1lID0gbnVsbDsKLSAgICBpZiAoc2VydmVyVHlwZSAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vYm9vbGVhbiBmb3VuZE5vblN0dWJSdW50aW1lID0gZmFsc2U7Ci0gICAgICBJUnVudGltZVtdIHJ1bnRpbWVzID0gU2VydmVyVXRpbC5nZXRSdW50aW1lcyhudWxsLCBudWxsKTsKLSAgICAgIFN0cmluZyBzZXJ2ZXJSdW50aW1lVHlwZUlkID0gc2VydmVyVHlwZS5nZXRSdW50aW1lVHlwZSgpLmdldElkKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bnRpbWVzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBJUnVudGltZSBydW50aW1lID0gcnVudGltZXNbaV07Ci0gICAgICAgIElSdW50aW1lVHlwZSBydW50aW1lVHlwZSA9IHJ1bnRpbWUuZ2V0UnVudGltZVR5cGUoKTsKLSAgICAJaWYgKHJ1bnRpbWVUeXBlICE9IG51bGwpCi0gICAgCXsKLSAgICAJCVN0cmluZyB0aGlzUnVudGltZVR5cGVJZCA9IHJ1bnRpbWVUeXBlLmdldElkKCk7Ci0JICAgICAgICBpZiAodGhpc1J1bnRpbWVUeXBlSWQuZXF1YWxzKHNlcnZlclJ1bnRpbWVUeXBlSWQpICYmICFydW50aW1lLmlzU3R1YigpKQotCSAgICAgICAgewotCSAgICAgICAgICAvLyBGb3VuZCBhbiBhcHByb3ByaWF0ZSBJUnVudGltZSB0aGF0IGlzIG5vdCBhIHN0dWIKLQkgICAgICAgICAgLy9mb3VuZE5vblN0dWJSdW50aW1lID0gdHJ1ZTsKLQkgICAgICAgICAgbm9uU3R1YlJ1bnRpbWUgPSBydW50aW1lOwotCSAgICAgICAgICBicmVhazsKLQkgICAgICAgIH0KLSAgICAJfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbm9uU3R1YlJ1bnRpbWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1N0YXR1c09iamVjdEhhbmRsZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1N0YXR1c09iamVjdEhhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY0OTliMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdGF0dXNPYmplY3RIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbjsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTXVsdGlTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuV3JhcHBlZEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwucGx1Z2luLldlYlNlcnZpY2VQbHVnaW47Ci0KLQotcHVibGljIGNsYXNzIFN0YXR1c09iamVjdEhhbmRsZXIKLXsKLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfREVUQUlMUyA9IDE2OwotCi0gIHB1YmxpYyBzdGF0aWMgSVN0YXR1cyBnZW5lcmF0ZVRyZWVTdGF0dXMgKElTdGF0dXMgc3RhdHVzKSAKLSAgCXsKLSAgICAvLwotICAgIC8vIFRoZXJlIGNvdWxkIGJlIGxvdHMgb2YgVGhyb3dhYmxlcywgQ29yZUV4Y2VwdGlvbnMsCi0gICAgLy8gV3JhcHBlZEV4Y2VwdGlvbnMgYW5kIElTdGF0dXMgb2JqZWN0cyBiZW5lYXRoIHRoZQotICAgIC8vIGdpdmVuIHN0YXR1cy4gRmluZCB0aGVtLgotICAgIC8vCi0gICAgTGlua2VkTGlzdCBzdGF0dXNMaXN0ID0gbmV3IExpbmtlZExpc3QoKTsKLSAgICBhcHBlbmRTdGF0dXMoTUFYX0RFVEFJTFMsIHN0YXR1c0xpc3QsIHN0YXR1cywgc3RhdHVzLmdldFNldmVyaXR5KCkpOwotICAgIGlmIChzdGF0dXNMaXN0LnNpemUoKSA+IDApCi0gICAgewotICAgICAgSVN0YXR1cyBuZXdTdGF0dXMgPSAoSVN0YXR1cylzdGF0dXNMaXN0LnJlbW92ZUZpcnN0KCk7Ci0gICAgICBpZiAoc3RhdHVzTGlzdC5zaXplKCkgPiAwKQotICAgICAgewotICAgICAgICBJU3RhdHVzW10gc2Vjb25kYXJ5U3RhdHVzQXJyYXkgPSBuZXcgSVN0YXR1c1tzdGF0dXNMaXN0LnNpemUoKV07Ci0gICAgICAgIGludCBuID0gMDsKLSAgICAgICAgSXRlcmF0b3IgaSA9IHN0YXR1c0xpc3QuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKGkuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgc2Vjb25kYXJ5U3RhdHVzQXJyYXlbbisrXSA9IChJU3RhdHVzKWkubmV4dCgpOwotICAgICAgICB9Ci0gICAgICAgIG5ld1N0YXR1cyA9IG5ldyBNdWx0aVN0YXR1cyhzdGF0dXMuZ2V0UGx1Z2luKCksc3RhdHVzLmdldENvZGUoKSxzZWNvbmRhcnlTdGF0dXNBcnJheSxzdGF0dXMuZ2V0TWVzc2FnZSgpLHN0YXR1cy5nZXRFeGNlcHRpb24oKSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbmV3U3RhdHVzOwotICAgIH0KLSAgICBlbHNlIAotICAgIAlyZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8vCi0gIC8vIEFwcGVuZHMgemVybyBvciBtb3JlIElTdGF0dXMgb2JqZWN0cyB0byB0aGUgbGlzdCBvZiBJU3RhdHVzIG9iamVjdHMKLSAgLy8gYmFzZWQgdXBvbiBhbiBJU3RhdHVzLgotICAvLwotICBwcml2YXRlIHN0YXRpYyBpbnQgYXBwZW5kU3RhdHVzICggaW50IG1heCwgTGlzdCBzdGF0dXNMaXN0LCBJU3RhdHVzIHN0YXR1cywgaW50IHNldmVyaXR5ICkKLSAgewotICAgIGlmIChtYXggPiAwICYmIHN0YXR1cyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBBcHBlbmQgYW4gSVN0YXR1cyBvYmplY3QgZm9yIHRoZSBnaXZlbiBzdGF0dXMnIG1lc3NhZ2UuCi0gICAgICAvLwotICAgICAgaWYgKHN0YXR1cy5nZXRNZXNzYWdlKCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgbWF4ID0gYXBwZW5kKHN0YXR1c0xpc3QsbWF4LHNldmVyaXR5LHN0YXR1cy5nZXRQbHVnaW4oKSxzdGF0dXMuZ2V0Q29kZSgpLHN0YXR1cy5nZXRNZXNzYWdlKCksc3RhdHVzLmdldEV4Y2VwdGlvbigpKTsKLSAgICAgIH0KLSAgICAgIC8vCi0gICAgICAvLyBBcHBlbmQgdGhlIElTdGF0dXMnIFRocm93YWJsZSwgaWYgYW55LgotICAgICAgLy8KLSAgICAgIG1heCA9IGFwcGVuZFRocm93YWJsZShtYXgsc3RhdHVzTGlzdCxzdGF0dXMuZ2V0RXhjZXB0aW9uKCksc2V2ZXJpdHkpOwotICAgICAgLy8KLSAgICAgIC8vIElmIHRoZSBJU3RhdHVzIGlzIGEgbXVsdGkgc3RhdHVzLCBhcHBlbmQgdGhlIGNoaWxkcmVuLgotICAgICAgLy8KLSAgICAgIElTdGF0dXNbXSBjaGlsZHJlbiA9IHN0YXR1cy5nZXRDaGlsZHJlbigpOwotICAgICAgZm9yIChpbnQgaT0wOyBpPGNoaWxkcmVuLmxlbmd0aCAmJiBtYXg+MDsgaSsrKQotICAgICAgewotICAgICAgICBtYXggPSBhcHBlbmRTdGF0dXMobWF4LHN0YXR1c0xpc3QsY2hpbGRyZW5baV0sc2V2ZXJpdHkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbWF4OwotICB9Ci0KLSAgLy8KLSAgLy8gQXBwZW5kcyB6ZXJvIG9yIG1vcmUgSVN0YXR1cyBvYmplY3RzIHRvIHRoZSBsaXN0IG9mIElTdGF0dXMgb2JqZWN0cwotICAvLyBiYXNlZCB1cG9uIGEgVGhyb3dhYmxlLiBXcmFwcGVkRXhjZXB0aW9ucyBhbmQgQ29yZUV4Y2VwdGlvbnMgYXJlCi0gIC8vIGdpdmVuIHNwZWNpYWwgdHJlYXRtZW50LgotICAvLwotICBwcml2YXRlIHN0YXRpYyBpbnQgYXBwZW5kVGhyb3dhYmxlICggaW50IG1heCwgTGlzdCBzdGF0dXNMaXN0LCBUaHJvd2FibGUgdGhyb3dhYmxlLCBpbnQgc2V2ZXJpdHkgKQotICB7Ci0gICAgaWYgKG1heCA+IDAgJiYgdGhyb3dhYmxlICE9IG51bGwpCi0gICAgewotICAgICAgLy8KLSAgICAgIC8vIEFwcGVuZCBhbiBJU3RhdHVzIG9iamVjdCBmb3IgdGhlIGV4Y2VwdGlvbidzIG1lc3NhZ2UuCi0gICAgICAvLwotICAgICAgaWYgKHRocm93YWJsZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgbWF4ID0gYXBwZW5kKHN0YXR1c0xpc3QsbWF4LHNldmVyaXR5LFdlYlNlcnZpY2VQbHVnaW4uSUQsMCx0aHJvd2FibGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpLHRocm93YWJsZSk7Ci0gICAgICB9Ci0gICAgICAvLwotICAgICAgLy8gSWYgdGhlIGV4Y2VwdGlvbiBpcyBhIFdyYXBwZWRFeGNlcHRpb24sIGFwcGVuZCB0aGUgd3JhcHBlZCBFeGNlcHRpb24uCi0gICAgICAvLwotICAgICAgaWYgKHRocm93YWJsZSBpbnN0YW5jZW9mIFdyYXBwZWRFeGNlcHRpb24pCi0gICAgICB7Ci0gICAgICAgIFdyYXBwZWRFeGNlcHRpb24gd2V4YyA9IChXcmFwcGVkRXhjZXB0aW9uKXRocm93YWJsZTsKLSAgICAgICAgbWF4ID0gYXBwZW5kVGhyb3dhYmxlKG1heCxzdGF0dXNMaXN0LHdleGMuZXhjZXB0aW9uKCksc2V2ZXJpdHkpOwotICAgICAgfQotICAgICAgLy8KLSAgICAgIC8vIElmIHRoZSBleGNlcHRpb24gaXMgYSBDb3JlRXhjZXB0aW9uLCBhcHBlbmQgdGhlIGVuY2xvc2VkIElTdGF0dXMuCi0gICAgICAvLwotICAgICAgaWYgKHRocm93YWJsZSBpbnN0YW5jZW9mIENvcmVFeGNlcHRpb24pCi0gICAgICB7Ci0gICAgICAgIENvcmVFeGNlcHRpb24gY2V4YyA9IChDb3JlRXhjZXB0aW9uKXRocm93YWJsZTsKLSAgICAgICAgbWF4ID0gYXBwZW5kU3RhdHVzKG1heCxzdGF0dXNMaXN0LGNleGMuZ2V0U3RhdHVzKCksc2V2ZXJpdHkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbWF4OwotICB9Ci0KLSAgLy8KLSAgLy8gQ3JlYXRlcyBhbmQgYXBwZW5kcyBhbiBJU3RhdHVzIHRvIHRoZSBsaXN0IG9mIElTdGF0dXMgb2JqZWN0cy4KLSAgLy8KLSAgcHJpdmF0ZSBzdGF0aWMgaW50IGFwcGVuZCAoIExpc3Qgc3RhdHVzTGlzdCwgaW50IG1heCwgaW50IHNldmVyaXR5LCBTdHJpbmcgaWQsIGludCBjb2RlLCBTdHJpbmcgbWVzc2FnZSwgVGhyb3dhYmxlIHRocm93YWJsZSApCi0gIHsKLSAgICBpZiAobWF4ID4gMCkKLSAgICB7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IG5ldyBTdGF0dXMoc2V2ZXJpdHksaWQsY29kZSxtZXNzYWdlLHRocm93YWJsZSk7Ci0gICAgICBzdGF0dXNMaXN0LmFkZChzdGF0dXMpOwotICAgICAgbWF4LS07Ci0gICAgfQotICAgIHJldHVybiBtYXg7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1N0cmluZzJQYXRoVHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1N0cmluZzJQYXRoVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE3ZTFkYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdHJpbmcyUGF0aFRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyOwotCi0vKioKLSAqIAotICogVHJhbnNmb3JtcyBhIGlucHV0IFN0cmluZyB0byBhIFBhdGgKLSAqIAotICogQGF1dGhvciBqb2FuCi0gKgotICovCi0KLXB1YmxpYyBjbGFzcyBTdHJpbmcyUGF0aFRyYW5zZm9ybWVyIGltcGxlbWVudHMgVHJhbnNmb3JtZXIgewotCQotCXB1YmxpYyBPYmplY3QgdHJhbnNmb3JtKE9iamVjdCB2YWx1ZSkgewkJCQkgCi0JCVBhdGggcGF0aCA9IG5ldyBQYXRoKHZhbHVlLnRvU3RyaW5nKCkpOwotCQlyZXR1cm4gcGF0aDsJCSAKLQl9Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vU3RyaW5nMlNlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdHJpbmcyU2VsZWN0aW9uVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYwNjdkZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdHJpbmcyU2VsZWN0aW9uVHJhbnNmb3JtZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjIgICAxMjgwOTQgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNzAzMDUgICAxNzUxOTQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEFudCB0YXNrIEluaXRpYWxTZWxlY3Rpb24gb25seSBhbGxvd3Mgd3NkbCB3aXRoaW4gdGhlIHdvcmtzcGFjZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS5qYXZhLkphdmFDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuZWpiLkVKQkphcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5lamIuRUpCUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LmoyZWUuZWpiLkVudGVycHJpc2VCZWFuOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLmVqYi5jb21wb25lbnRjb3JlLnV0aWwuRUpCQXJ0aWZhY3RFZGl0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5XU1BsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tb24uRmlsZVJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsQ29tcG9uZW50OwotCi0vKioKLSAqIFRyYW5zZm9ybXMgYSBzdHJpbmcgdmFsdWUgcmVwcmVzZW50aW5nIGEgd29ya3NwYWNlIHJlc291cmNlIHBhdGggaW50byBhIFN0cnVjdHVyZWRTZWxlY3Rpb24gb2JqZWN0Ci0gKiAKLSAqIEBhdXRob3Igam9hbgotICoKLSAqLwotCi1wdWJsaWMgY2xhc3MgU3RyaW5nMlNlbGVjdGlvblRyYW5zZm9ybWVyIGltcGxlbWVudHMgVHJhbnNmb3JtZXIgewotCi0JcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oT2JqZWN0IHZhbHVlKSB7Ci0JCQotCQlTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiA9IG51bGw7Ci0JCUlSZXNvdXJjZSByZXNvdXJjZSA9IEZpbGVSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKS5maW5kTWVtYmVyKG5ldyBQYXRoKHZhbHVlLnRvU3RyaW5nKCkpKTsKLQkJaWYgKHJlc291cmNlICE9IG51bGwpCi0JCXsKLQkJCUlQcm9qZWN0IHJlc1Byb2plY3QgPSByZXNvdXJjZS5nZXRQcm9qZWN0KCk7CQkJCi0JCQkvLyBjaGVjayBpZiByZXNvdXJjZSBpcyBwYXJ0IG9mIGFuIEVKQgotCQkJaWYgKEoyRUVVdGlscy5pc0VKQkNvbXBvbmVudChyZXNQcm9qZWN0KSkKLQkJCXsKLQkJCQkvLyBpZiByZXNvdXJjZSBpcyBwYXJ0IG9mIEVKQiBuZWVkIHRvIGdldCB0aGUgRW50ZXJwcmlzZUJlYW4gYXMgdGhlIHNlbGVjdGlvbgotCQkJCUlWaXJ0dWFsQ29tcG9uZW50W10gZWpiQ29tcG9uZW50cyA9IEoyRUVVdGlscy5nZXRFSkJDb21wb25lbnRzKHJlc1Byb2plY3QpOwotCQkJCUVKQkFydGlmYWN0RWRpdCAgZWpiRWRpdCA9IG51bGw7CQkJCi0JCQkJdHJ5ewkJCQkKLQkJCQkJZWpiRWRpdCA9IEVKQkFydGlmYWN0RWRpdC5nZXRFSkJBcnRpZmFjdEVkaXRGb3JSZWFkKGVqYkNvbXBvbmVudHNbMF0pOwkJCQkKLQkJICAgICAgICAgICAgRUpCUmVzb3VyY2UgZWpiUmVzID0gZWpiRWRpdC5nZXRFSkJKYXJYbWlSZXNvdXJjZSgpOwotCQkgICAgICAgICAgICBFSkJKYXIgZWpiSmFyID0gZWpiUmVzLmdldEVKQkphcigpOwkgICAgICAgICAgICAKLQkJICAgICAgICAgICAgSVBhdGggcGF0aCA9IHJlc291cmNlLmdldEZ1bGxQYXRoKCk7Ci0JCSAgICAgICAgICAgIFN0cmluZyByZXNvdXJjZVBhdGggPSBSZXNvdXJjZVV0aWxzLmdldEphdmFSZXNvdXJjZVBhY2thZ2VOYW1lKHBhdGgpOwotCQkgICAgICAgICAgICBTdHJpbmcgamF2YUNsYXNzTmFtZSA9IHJlc291cmNlLmdldE5hbWUoKTsKLQkJICAgICAgICAgICAgLy8gc3RyaXAgb2ZmIGZpbGUgZXh0ZW5zaW9uIGlmIG5lY2Vzc2FyeQotCQkgICAgICAgICAgICBpZiAoamF2YUNsYXNzTmFtZS5sYXN0SW5kZXhPZignLicpPi0xKQotCQkgICAgICAgICAgICB7CQotCQkgICAgICAgICAgICAgIGphdmFDbGFzc05hbWUgPSBqYXZhQ2xhc3NOYW1lLnN1YnN0cmluZygwLCBqYXZhQ2xhc3NOYW1lLmxhc3RJbmRleE9mKCcuJykpOwkgICAgICAgICAgICAgIAotCQkgICAgICAgICAgICB9IAotCQkgICAgICAgICAgICBKYXZhQ2xhc3MgamF2YUNsYXNzID0gSmF2YU1PRlV0aWxzLmdldEphdmFDbGFzcyhyZXNvdXJjZVBhdGgsIGphdmFDbGFzc05hbWUsIHJlc1Byb2plY3QpOwotCQkgICAgICAgICAgICBFbnRlcnByaXNlQmVhbiBlamIgPSBlamJKYXIuZ2V0RW50ZXJwcmlzZUJlYW5XaXRoUmVmZXJlbmNlKGphdmFDbGFzcyk7Ci0JCSAgICAgICAgICAgIGlmIChlamIgIT0gbnVsbCkKLQkJICAgICAgICAgICAgewotCQkgICAgICAgICAgICAJc2VsZWN0aW9uID0gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oZWpiLmdldE5hbWUoKSk7CQotCQkgICAgICAgICAgICB9Ci0JCQkJfQotCQkJCWNhdGNoIChFeGNlcHRpb24gZXhjKQotCQkJCXsKLQkJCQkJCi0JCQkJfQotCQkJCWZpbmFsbHkgewotCQkgICAgICAgICAgICAgIGlmIChlamJFZGl0IT1udWxsKQotCQkgICAgICAgICAgICAgICAgZWpiRWRpdC5kaXNwb3NlKCk7Ci0JCSAgICAgICAgfQotCQkJfQotCQkJLy8gaWYgc2VsZWN0aW9uIG5vdCBhbHJlYWR5IHNldCAtIGNyZWF0ZSBpdCBmcm9tIHRoZSByZXNvdXJjZSBvYmplY3QKLQkJCWlmIChzZWxlY3Rpb24gPT0gbnVsbCkKLQkJCXsKLQkJCSAgc2VsZWN0aW9uID0gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24ocmVzb3VyY2UpOwotCQkJfQotCQl9Ci0JCWVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nICYmIHZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZigiOiIpICE9IC0xKSB7Ci0JCQkvLyByZW1vdGUgZmlsZQotCQkJc2VsZWN0aW9uID0gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24odmFsdWUpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJLy8gc3RyaW5nIGRvZXNuJ3QgcmV0dXJuIHJlc291cmNlIC0gZXJyb3IgY29uZGl0aW9uCi0JCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKFdTUGx1Z2luTWVzc2FnZXMuRVJST1JfU0VMRUNUSU9OX1RSQU5TRk9STSk7Ci0JCX0KLQkJcmV0dXJuIHNlbGVjdGlvbjsKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1N0cmluZzJUZXN0RmFjaWxpdHlMaXN0VHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1N0cmluZzJUZXN0RmFjaWxpdHlMaXN0VHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg1OTYwNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdHJpbmcyVGVzdEZhY2lsaXR5TGlzdFRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwucGx1Z2luLldlYlNlcnZpY2VQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5zZWxlY3Rpb24uU2VsZWN0aW9uTGlzdDsKLQotcHVibGljIGNsYXNzIFN0cmluZzJUZXN0RmFjaWxpdHlMaXN0VHJhbnNmb3JtZXIgaW1wbGVtZW50cyBUcmFuc2Zvcm1lciB7Ci0KLQlwdWJsaWMgT2JqZWN0IHRyYW5zZm9ybShPYmplY3QgdmFsdWUpIHsKLQkJU3RyaW5nIHRlc3RGYWNpbGl0eSA9IChTdHJpbmcpdmFsdWU7Ci0JCS8vdmFsdWUgcmVwcmVzZW50cyBuYW1lIG9mIGEgdGVzdCBmYWNpbGl0eQotCQkvL3BpY2sgdXAgbGlzdCBvZiB0ZXN0IGZhY2lsaXRpZXMKLQkJU3RyaW5nW10gdGVzdFR5cGVzID0gV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNjZW5hcmlvQ29udGV4dCgpLmdldFdlYlNlcnZpY2VUZXN0VHlwZXMoKTsgICAgICAgIAkKLQkJCi0JCWludCBpbmRleCA9IDA7Ci0JCS8vbWF0Y2ggdmFsdWUgdG8gbmFtZSBvZiB0ZXN0IGZhY2lsaXR5IGFuZCBzZXQgaW5kZXggYWNjb3JkaW5nbHkKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0VHlwZXMubGVuZ3RoOyBpKyspIHsKLQkJCWlmICh0ZXN0VHlwZXNbaV0uZXF1YWxzKHRlc3RGYWNpbGl0eSkpCi0JCQl7CQkKLQkJCQlicmVhazsKLQkJCX0JCQkKLQkJCWluZGV4Kys7Ci0JCX0KLQkJCi0JCVNlbGVjdGlvbkxpc3Qgc2VsZWN0aW9uTGlzdCA9IG5ldyBTZWxlY3Rpb25MaXN0KHRlc3RUeXBlcywgaW5kZXgpOwkJCi0JCXJldHVybiBzZWxlY3Rpb25MaXN0OwotCX0KLX0KLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vU3RyaW5nMlR5cGVSdW50aW1lU2VydmVyTW9kaWZpZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU4N2ZlMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdHJpbmcyVHlwZVJ1bnRpbWVTZXJ2ZXJNb2RpZmllci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMzAzICAgMTI4ODMyIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uOwotCi1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLlR5cGVSdW50aW1lU2VydmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuQmVhbk1vZGlmaWVyOwotCi1wdWJsaWMgY2xhc3MgU3RyaW5nMlR5cGVSdW50aW1lU2VydmVyTW9kaWZpZXIgaW1wbGVtZW50cyBCZWFuTW9kaWZpZXIgewotCi0JcHJpdmF0ZSBTdHJpbmcgU0VSVklDRV9SVF9JRF9LRVkgPSAiU2VydmljZS5SdW50aW1lSWQiOyAgLy8kTk9OLU5MUy1OJAotCXByaXZhdGUgU3RyaW5nIFJVTlRJTUVfSUQgPSAiUnVudGltZUlkIjsgIC8vJE5PTi1OTFMtTiQKLQlwcml2YXRlIFN0cmluZyBTRVJWSUNFX1NSVl9JRF9LRVkgPSAiU2VydmljZS5TZXJ2ZXJJZCI7ICAvLyROT04tTkxTLU4kCi0JcHJpdmF0ZSBTdHJpbmcgU0VSVkVSX0lEID0gIlNlcnZlcklkIjsgIC8vJE5PTi1OTFMtTiQKLQlwcml2YXRlIFN0cmluZyBUWVBFX0lEID0gIlR5cGVJZCI7ICAvLyROT04tTkxTLU4kCi0JcHJpdmF0ZSBTdHJpbmcgVERfRUpCID0gIlRPUCBET1dOIEVKQiI7ICAvLyROT04tTkxTLU4kCi0JcHJpdmF0ZSBTdHJpbmcgQlVfRUpCID0gIkJPVFRPTSBVUCBFSkIiOyAgLy8kTk9OLU5MUy1OJAotCXByaXZhdGUgU3RyaW5nIFREX0VKQl9UWVBFX0lEID0gIjEvb3JnLmVjbGlwc2UuanN0LndzLndzSW1wbC5lamIiOwotCXByaXZhdGUgU3RyaW5nIEJVX0VKQl9UWVBFX0lEID0gIjAvb3JnLmVjbGlwc2UuanN0LndzLndzSW1wbC5lamIiOwotCXByaXZhdGUgU3RyaW5nIFNFUlZJQ0VfUFJFRklYID0gIlNlcnZpY2UuIjsgIC8vJE5PTi1OTFMtTiQKLQlwcml2YXRlIFN0cmluZyBDTElFTlRfUFJFRklYID0gIkNsaWVudC4iOyAgLy8kTk9OLU5MUy1OJAotCQotCS8qKgotCSAqIE1vZGlmaWVzIHRoZSBzdXBwbGllZCBUeXBlUnVudGltZVNlcnZlciBiZWFuIHdpdGggcHJvcGVydGllcyBpbiBob2xkZXIuCi0JICogSWYgdGhlIGJlYW4gaXMgbnVsbCwgY29uc3RydWN0IGEgbmV3IG9uZSBhbmQgc2V0IGl0cyBwcm9wZXJ0aWVzLgotCSAqIEBwYXJhbSBiZWFuIFR5cGVSdW50aW1lU2VydmVyIGJlYW4gdG8gYmUgbW9kaWZpZWQKLQkgKiBAcGFyYW0gaG9sZGVyIE1hcCBjb250YWluaW5nIHZhbHVlcyBmb3IgVHlwZVJ1bnRpbWVTZXJ2ZXIgcHJvcGVydGllcyAKLQkgKiBAcmV0dXJuIFR5cGVSdW50aW1lU2VydmVyIHdpdGggcHJvcGVydGllcyBzZXQKLQkgKi8KLQlwdWJsaWMgdm9pZCBtb2RpZnkoT2JqZWN0IGJlYW4sIE9iamVjdCBob2xkZXIpIHsKLQkJCi0JCVR5cGVSdW50aW1lU2VydmVyIHR5cGVzID0gbnVsbDsKLQkJaWYgKGJlYW4gPT0gbnVsbCB8fCAhKGJlYW4gaW5zdGFuY2VvZiBUeXBlUnVudGltZVNlcnZlcikpCi0JCXsKLQkJCXR5cGVzID0gbmV3IFR5cGVSdW50aW1lU2VydmVyKCk7CQkJCi0JCX0KLQkJZWxzZQotCQl7Ci0JCQl0eXBlcyA9IChUeXBlUnVudGltZVNlcnZlciliZWFuOwotCQl9Ci0JCQotCQlpZiAoaG9sZGVyIGluc3RhbmNlb2YgTWFwKQotCQl7CQotCQkJTWFwIHR5cGVzTWFwID0gKE1hcClob2xkZXI7Ci0JCQlTdHJpbmcgcHJlZml4ID0gIiI7Ci0JCQkKLQkJCQotCQkJaWYgKHR5cGVzTWFwLmNvbnRhaW5zS2V5KFNFUlZJQ0VfUlRfSURfS0VZKXx8dHlwZXNNYXAuY29udGFpbnNLZXkoU0VSVklDRV9TUlZfSURfS0VZKSkKLQkJCXsKLQkJCQlwcmVmaXggPSBTRVJWSUNFX1BSRUZJWDsKLQkJCX0JCQkgIAkKLQkJCWVsc2UKLQkJCXsKLQkJCQlwcmVmaXggPSBDTElFTlRfUFJFRklYOwotCQkJfQotCQkJCi0JCQlTdHJpbmcgcnVudGltZUlEID0gKFN0cmluZyl0eXBlc01hcC5nZXQocHJlZml4K1JVTlRJTUVfSUQpOwotCQkJaWYgKHJ1bnRpbWVJRCAhPSBudWxsKQotCQkJCXR5cGVzLnNldFJ1bnRpbWVJZChydW50aW1lSUQpOwkJCi0JCQkKLQkJCVN0cmluZyBzZXJ2ZXJJRCA9IChTdHJpbmcpdHlwZXNNYXAuZ2V0KHByZWZpeCtTRVJWRVJfSUQpOwotCQkJaWYgKHNlcnZlcklEICAhPSBudWxsKQkJCQkKLQkJCQl0eXBlcy5zZXRTZXJ2ZXJJZChzZXJ2ZXJJRCk7CQotCQkJCi0JCQkvL2NoZWNrIGlmIHdlYiBzZXJ2aWNlIHR5cGUgaXMgRUpCIC0gaWYgbm90LCBkZWZhdWx0IGZvciBKYXZhIGJlYW4gdHlwZXMKLQkJCVN0cmluZyB0eXBlSUQgPSAoU3RyaW5nKXR5cGVzTWFwLmdldChwcmVmaXgrVFlQRV9JRCk7Ci0JCQlpZiAodHlwZUlEICE9IG51bGwpCi0JCQl7Ci0JCQkJaWYgKHR5cGVJRC50b1VwcGVyQ2FzZSgpLmVxdWFscyhURF9FSkIpKSAgLy9vbmx5IHNldHRpbmcgdHlwZUlEIHNwZWNpZmljYWxseSBmb3IgRUpCIGNhc2UKLQkJCQl7Ci0JCQkJCXR5cGVzLnNldFR5cGVJZChURF9FSkJfVFlQRV9JRCk7Ci0JCQkJfQkKLQkJCQllbHNlIGlmICh0eXBlSUQudG9VcHBlckNhc2UoKS5lcXVhbHMoQlVfRUpCKSkKLQkJCQl7Ci0JCQkJCXR5cGVzLnNldFR5cGVJZChCVV9FSkJfVFlQRV9JRCk7Ci0JCQkJfQkKLQkJCX0JCQkKLQkJfQotICB9CQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdHJpbmdUb0lQcm9qZWN0VHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1N0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWI2NmQ4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29tbW9uL1N0cmluZ1RvSVByb2plY3RUcmFuc2Zvcm1lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lcjsKLQotCi0vKioKLSAqIFRyYW5zZnJvbXMgYSBqYXZhLmxhbmcuU3RyaW5nIHRvIGFuIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvamVjdAotICovCi1wdWJsaWMgY2xhc3MgU3RyaW5nVG9JUHJvamVjdFRyYW5zZm9ybWVyIGltcGxlbWVudHMgVHJhbnNmb3JtZXIKLXsKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuVHJhbnNmb3JtZXIjdHJhbnNmb3JtKGphdmEubGFuZy5PYmplY3QpCi0gICAqIEBwYXJhbSBPYmplY3QgVGhpcyBtdXN0IGJlIGEgamF2YS5sYW5nLlN0cmluZwotICAgKiBAcmV0dXJuIE9iamVjdCBSZXR1cm5zIGFuIElQcm9qZWN0Ci0gICAqLwotCi0gIHB1YmxpYyBPYmplY3QgdHJhbnNmb3JtKE9iamVjdCB2YWx1ZSkKLSAgewotCVN0cmluZyBwcm9qZWN0ICAgICA9IChTdHJpbmcpdmFsdWU7Ci0JaW50ICAgIHNsYXNoSW5kZXggID0gcHJvamVjdC5pbmRleE9mKCAnLycgKTsKLQlTdHJpbmcgcHJvamVjdE5hbWUgPSBwcm9qZWN0OwotCQotCWlmKCBzbGFzaEluZGV4ICE9IC0xICkKLQl7Ci0JICBwcm9qZWN0TmFtZSA9IHByb2plY3Quc3Vic3RyaW5nKCAwLCBzbGFzaEluZGV4ICk7Ci0JfQotCQotICAgIHJldHVybiBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdHJpbmdVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb21tb24vU3RyaW5nVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI1ZWFhMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbW1vbi9TdHJpbmdVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YUNvbnZlbnRpb25zOwotCi0vKioKLSAgKiBUaGlzIGNsYXNzIGNvbnRhaW5zIHNvbWUgdXNlZnVsIHN0cmluZyB1dGlsaXRpZXMgdGhhdCBhcmUgbm90IHByb3ZpZGVkIGJ5Ci0gICogZWl0aGVyIFN0cmluZyBvciBTdHJpbmdCdWZmZXIuCi0gICoKLSAgKiBAYXV0aG9yIFBldGVyIE1vb2drCi0gICogQGRhdGUgICBKdWx5IDEzLCAyMDAwCi0qKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBTdHJpbmdVdGlscwotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIC8qKgotICAqIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBsaW5lIHNlcGFyYXRvci4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkVXTElORSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgibGluZS5zZXBhcmF0b3IiKTsKLQotICBwcml2YXRlIFN0cmluZ1V0aWxzKCl7fTsKLQotICAvKioKLSAgICAqIFRoaXMgbWV0aG9kIHNwbGl0cyBhIHNpbmdsZSBsaW5lIG9mIHRleHQgaW50byBtdWx0aXBsZSBsaW5lcwotICAgICogYmFzZWQgb24gYSBtYXhpbXVtIGxpbmUgbGVuZ3RoLiAgVGhlIG1ldGhvZCB3aWxsIHRyeSB0byBmaXQgYXMKLSAgICAqIG1hbnkgd29yZHMgYXMgcG9zc2libGUgb250byBhIGxpbmUgd2l0aG91dCBleGNlZWRpbmcgdGhlIG1heGltdW0KLSAgICAqIGxpbmUgbGVuZ3RoLiAgTm90ZTogdGhlIG9ubHkgY2FzZSB3aGVyZSBhIGxpbmUgbWlnaHQgZXhjZWVkIHRoZQotICAgICogbWF4aW11bSBpcyBpZiBhIHNpbmdsZSB3b3JkIGlzIGxvbmdlciB0aGFuIHRoZSBtYXhpbXVtLgotICAqKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBzcGxpdHRlciggU3RyaW5nIHRleHQsIGludCBtYXhfbGVuZ3RoICkKLSAgewotICAgIFZlY3RvciAgICAgICAgICByZXR1cm5fdGV4dCA9IG5ldyBWZWN0b3IoMjApOwotICAgIFN0cmluZ1tdICAgICAgICByZXR1cm5fc3RyOwotICAgIGludCAgICAgICAgICAgICBpbmRleCA9IDA7Ci0KLSAgICB3aGlsZSggaW5kZXggPCB0ZXh0Lmxlbmd0aCgpICkKLSAgICB7Ci0gICAgICBTdHJpbmcgc3RyID0gdGV4dC5zdWJzdHJpbmcoIGluZGV4LCBNYXRoLm1pbiggbWF4X2xlbmd0aCArIGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQubGVuZ3RoKCkgKSApOwotICAgICAgaW50IHNwYWNlX2luZGV4ID0gc3RyLmxhc3RJbmRleE9mKCAiICIgKTsKLQotICAgICAgaWYoIGluZGV4ICsgc3RyLmxlbmd0aCgpIDwgdGV4dC5sZW5ndGgoKSAmJgotICAgICAgICAgIHRleHQuY2hhckF0KCBpbmRleCArIHN0ci5sZW5ndGgoKSAtIDEgKSAhPSAnICcgJiYKLSAgICAgICAgICB0ZXh0LmNoYXJBdCggaW5kZXggKyBzdHIubGVuZ3RoKCkgKSAhPSAnICcgJiYKLSAgICAgICAgICBzcGFjZV9pbmRleCAhPSAtMSApCi0gICAgICB7Ci0gICAgICAgIHJldHVybl90ZXh0LmFkZEVsZW1lbnQoIHN0ci5zdWJzdHJpbmcoIDAsIHNwYWNlX2luZGV4ICkgKTsKLSAgICAgICAgaW5kZXggKz0gc3BhY2VfaW5kZXggKyAxOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXR1cm5fdGV4dC5hZGRFbGVtZW50KCBzdHIudHJpbSgpICk7Ci0gICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGgoKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm5fc3RyID0gbmV3IFN0cmluZ1tyZXR1cm5fdGV4dC5zaXplKCldOwotCi0gICAgZm9yKCBpbmRleCA9IDA7IGluZGV4IDwgcmV0dXJuX3RleHQuc2l6ZSgpOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICByZXR1cm5fc3RyW2luZGV4XSA9IChTdHJpbmcpKHJldHVybl90ZXh0LmVsZW1lbnRBdChpbmRleCkpOwotICAgIH0KLQotICAgIHJldHVybiByZXR1cm5fc3RyOwotICB9Ci0KLSAgLyoqCi0gICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIHdpdGggYSByZXBlYXRlZCBudW1iZXIgb2YgY2hhcmFjdGVycy4KLSAgKiovCi0gIHN0YXRpYyBwdWJsaWMgU3RyaW5nIHJlcGVhdCggY2hhciB0aGVfY2hhciwgaW50IGNvdW50ICkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCBjb3VudCApOwotCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBidWYuYXBwZW5kKCB0aGVfY2hhciApOwotICAgIH0KLQotICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qKgotICAgICogVGhpcyBtZXRob2QgZmxhdHRlbnMgYW4gYXJyYXkgb2YgYXJndW1lbnRzIHRvIGEgc3RyaW5nLgotICAgICogVGhlIG1ldGhvZCByZXNwZWN0cyBlbWJlZGRlZCB3aGl0ZXNwYWNlIGFuZCBxdW90ZXMuCi0gICAgKiA8dWw+Ci0gICAgKiA8bGk+QW55IGFyZ3VtZW50IHdpdGggZW1iZWRkZWQgd2hpdGVzcGFjZSB3aWxsIGJlIGZsYXR0ZW5lZCBvdXQKLSAgICAqIHdpdGggZW5jbG9zaW5nIHF1b3Rlcy4gRm9yIGV4YW1wbGUsIHRoZSBzaW5nbGUgYXJndW1lbnQKLSAgICAqIDx1PkhlbGxvIFdvcmxkPC91PgotICAgICogd2lsbCBiZSByZXR1cm5lZCBhcwotICAgICogPHU+IkhlbGxvIFdvcmxkIjwvdT4uCi0gICAgKiA8bGk+QW55IGFyZ3VtZW50IHdpdGggcXVvdGVzIHdpbGwgYmUgZmxhdHRlbmVkIG91dCB3aXRoIHRoZQotICAgICogcXVvdGVzIGVzY2FwZWQuIEZvciBleGFtcGxlLCB0aGUgc2luZ2xlIGFyZ3VtZW50Ci0gICAgKiA8dT4iSGFwcHkgZGF5cyI8L3U+Ci0gICAgKiB3aWxsIGJlIHJldHVybmVkIGFzCi0gICAgKiA8dT5cIkhhcHB5IGRheXNcIjwvdT4uCi0gICAgKiA8L3VsPgotICAgICogQHBhcmFtIGFyZ3VtZW50cyBUaGUgYXJyYXkgb2Ygc3RyaW5ncyB0byBmbGF0dGVuLgotICAgICogQHJldHVybiB0aGUgZmxhdHRlbmVkIHN0cmluZy4KLSAgKi8KLSAgc3RhdGljIHB1YmxpYyBTdHJpbmcgZmxhdHRlbkFyZ3VtZW50cyAoIFN0cmluZ1tdIGFyZ3VtZW50cyApCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCi0gICAgZm9yIChpbnQgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICAvLwotICAgICAgLy8gQXBwZW5kIGEgc2VwYXJhdG9yIChleGNlcHQgdGhlIGZpcnN0IHRpbWUpLgotICAgICAgLy8KLSAgICAgIGlmIChpID4gMCkgYnVmLmFwcGVuZCgnICcpOwotCi0gICAgICAvLwotICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZS4KLSAgICAgIC8vCi0gICAgICBib29sZWFuIHdoaXRlc3BhY2UgPSBmYWxzZTsKLSAgICAgIGNoYXJbXSBjaGFycyA9IGFyZ3VtZW50c1tpXS50b0NoYXJBcnJheSgpOwotICAgICAgZm9yIChpbnQgaj0wOyAhd2hpdGVzcGFjZSAmJiBqPGNoYXJzLmxlbmd0aDsgaisrKQotICAgICAgewotICAgICAgICBpZiAoQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShjaGFyc1tqXSkpCi0gICAgICAgIHsKLSAgICAgICAgICB3aGl0ZXNwYWNlID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLwotICAgICAgLy8gQXBwZW5kIHRoZSBhcmd1bWVudCwgcXVvdGVkIGFzIG5lY2Vzc2FyeS4KLSAgICAgIC8vCi0gICAgICBpZiAod2hpdGVzcGFjZSkgYnVmLmFwcGVuZCgnIicpOwotICAgICAgZm9yIChpbnQgaj0wOyBqPGNoYXJzLmxlbmd0aDsgaisrKQotICAgICAgewotICAgICAgICBpZiAoY2hhcnNbal0gPT0gJyInKSBidWYuYXBwZW5kKCdcXCcpOwotICAgICAgICBidWYuYXBwZW5kKGNoYXJzW2pdKTsKLSAgICAgIH0KLSAgICAgIGlmICh3aGl0ZXNwYWNlKSBidWYuYXBwZW5kKCciJyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAgKiBUaGlzIG1ldGhvZCBwYXJzZXMgd2hpdGVzcGFjZS1kZWxpbWl0dGVkIGZpbGVuYW1lcyBmcm9tCi0gICAgKiB0aGUgZ2l2ZW4gPGNvZGU+aW5wdXQ8L2NvZGU+IHN0cmVhbS4gPGI+TGltaXRhdGlvbjo8L2I+Ci0gICAgKiBRdW90ZWQgZmlsZW5hbWVzIG9yIGZpbGVuYW1lcyB3aXRoIGVtYmVkZGVkIHdoaXRlc3BhY2UKLSAgICAqIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KLSAgICAqIEBwYXJhbSBpbnB1dCBUaGUgaW5wdXQgc3RyZWFtLgotICAgICogQHJldHVybiBBbiBlbnVtZXJhdGlvbiBvZiBmaWxlbmFtZXMgZnJvbSB0aGUgc3RyZWFtLgotICAqLwotICBzdGF0aWMgcHVibGljIEVudW1lcmF0aW9uIHBhcnNlRmlsZW5hbWVzRnJvbVN0cmVhbSAoIElucHV0U3RyZWFtIGlucHV0ICkKLSAgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBWZWN0b3IgZmlsZW5hbWVzID0gbmV3IFZlY3Rvcig2NCw2NCk7Ci0gICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG51bGw7Ci0gICAgYnl0ZSBzdGF0ZSA9IFNUQVRFX1dTOwotICAgIGludCBpYyA9IGlucHV0LnJlYWQoKTsKLSAgICB3aGlsZSAoaWMgPj0gMCkKLSAgICB7Ci0gICAgICBjaGFyIGMgPSAoY2hhcilpYzsKLSAgICAgIHN3aXRjaCAoc3RhdGUpCi0gICAgICB7Ci0gICAgICAgIGNhc2UgU1RBVEVfV1M6Ci0gICAgICAgICAgaWYgKCFDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGMpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoYyk7Ci0gICAgICAgICAgICBzdGF0ZSA9IFNUQVRFX05XUzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1RBVEVfTldTOgotICAgICAgICAgIGlmICghQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShjKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKGMpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gYnVmZmVyLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICBmaWxlbmFtZXMuYWRkKGZpbGVuYW1lKTsKLSAgICAgICAgICAgIGJ1ZmZlciA9IG51bGw7Ci0gICAgICAgICAgICBzdGF0ZSA9IFNUQVRFX1dTOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGljID0gaW5wdXQucmVhZCgpOwotICAgIH0KLSAgICByZXR1cm4gZmlsZW5hbWVzLmVsZW1lbnRzKCk7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFNUQVRFX1dTID0gMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBTVEFURV9OV1MgPSAxOwotCi0KLSAgLyoqCi0gICogUmV0dXJucyB0cnVlIGlzIHRoZSB0eXBlIHBhc3NlZCBpbiBpcyBhIHByaW10aXZlIGphdmEgdHlwZQotICAqIEBwYXJhbSBjbGFzcyBuYW1lIFN0cmluZwotICAqIEByZXR1cm4gdHJ1ZSBpcyBwcmltaXRpdmUgdHlwZQotICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNQcmltaXRpdmVUeXBlKFN0cmluZyB0eXBlTmFtZSkgCi0gIHsKLQotICAgIGlmICh0eXBlTmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJib29sZWFuIikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImJ5dGUiKSB8fAotICAgICAgdHlwZU5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiZG91YmxlIikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImZsb2F0IikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImludCIpIHx8Ci0gICAgICB0eXBlTmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJsb25nIikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoInNob3J0IikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImNoYXIiKSkKLSAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLQotICB9Ci0KLSAgLyoqCi0gICogVGhlIG1ldGhvZCByZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsbG93ZWQgaW4gVVJJcwotICAqIGFuZCBub3QgYWxsb3dlZCBpbiBKYXZhIGNsYXNzIG5hbWVzIHRvIGFuIHVuZGVyc2NvcmUgKCdfJykKLSAgKiBAcGFyYW0gVVJJIFN0cmluZwotICAqIEByZXR1cm4gdmFsaWQgSmF2YSBjbGFzcyBuYW1lIFN0cmluZwotICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBVUkkyQ2xhc3NOYW1lKCBTdHJpbmcgdXJpICkgewotICAgIFN0cmluZyBjbGFzc05hbWUgPSB1cmk7Ci0gICAgZm9yICggaW50IGkgPSAwOyBpIDwgVVJJX1NZTUJPTFMubGVuZ3RoOyBpKysgKSB7Ci0gICAgCWNsYXNzTmFtZSA9IGNsYXNzTmFtZS5yZXBsYWNlICggVVJJX1NZTUJPTFNbaV0sIFVOREVSU0NPUkUgKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNsYXNzTmFtZTsKLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXJbXSBVUklfU1lNQk9MUyA9IHsnLScsICd+JywgJyMnLCAnLycsICcuJ307Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgVU5ERVJTQ09SRSA9ICdfJzsKLQotCi0gIC8qKgotICAgKiBUaGlzIHJldHVybnMgYSB2YWxpZCBKYXZhIGlkZW50aWZpZXIgYmFzZWQgb24gdGhlIGdpdmVuIG5hbWUuIAotICAgKiAoZm9sbG93cyBKQVgtUlBDIDEuMCBQdWJsaWMgUmV2aWV3IERyYWZ0IDIgcmVjb21tZW5kYXRpb25zKQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgamF2YUlkZW50aWZpZXJGb3IoU3RyaW5nIGxvY2FsTmFtZSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgYm9vbGVhbiBza2lwcGVkID0gZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9IDAsIGxlbmd0aCA9IGxvY2FsTmFtZS5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKQotICAgIHsKLSAgICAgIGNoYXIgY2hhcmFjdGVyID0gbG9jYWxOYW1lLmNoYXJBdChpKTsKLSAgICAgIGlmIChDaGFyYWN0ZXIuaXNKYXZhSWRlbnRpZmllclBhcnQoY2hhcmFjdGVyKSAmJiAhaXNEZWxpbWl0ZXIoY2hhcmFjdGVyKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKHNraXBwZWQgJiYgcmVzdWx0Lmxlbmd0aCgpICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICBjaGFyYWN0ZXIgPSBDaGFyYWN0ZXIudG9VcHBlckNhc2UoY2hhcmFjdGVyKTsKLSAgICAgICAgfQotICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgICAgIHNraXBwZWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgc2tpcHBlZCA9dHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIUphdmFDb252ZW50aW9ucy52YWxpZGF0ZUlkZW50aWZpZXIocmVzdWx0LnRvU3RyaW5nKCkpLmlzT0soKSkKLSAgICB7Ci0gICAgICByZXN1bHQuaW5zZXJ0KDAsICJfIik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0RlbGltaXRlcihjaGFyIGNoYXJhY3RlcikKLSAgewotICAgIHJldHVybiAiXHUwMDJEXHUwMDJFXHUwMDNBXHUwMDVGXHUwMEI3XHUwMzg3XHUwNkREXHUwNkRFIi5pbmRleE9mKGNoYXJhY3RlcikgIT0gLTE7Ci0gIH0KLSAgCi0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9JSmF2YUJlYW5Qcm9wZXJ0eS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9JSmF2YUJlYW5Qcm9wZXJ0eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2ZlMjdkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSUphdmFCZWFuUHJvcGVydHkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxOSAgIDEzMjkwNSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleSAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotCi0vKioKLSAqIEBhdXRob3IgY2JyZWFsZXkKLSAqIFRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSBzaW1wbGUgb3IgaW5kZXhlZCBwcm9wZXJ0eQotICogYXMgZGVmaW5lZCBieSB0aGUgSmF2YSBCZWFuIHNwZWNpZmljYXRpb24uIEV2ZXJ5Ci0gKiBJSmF2YUJlYW5Qcm9wZXJ0eSBpcyBjaGFyYWN0ZXJpemVkIGJ5IGZvdXIgdGhpbmdzOgotICogPG9sPgotICogPGxpPlRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS48L2xpPgotICogPGxpPldoZXRoZXIgb3Igbm90IHRoZSBwcm9wZXJ0eSBpcyBpbmRleGVkLjwvbGk+Ci0gKiA8bGk+VGhlIEpEVCBJTWV0aG9kIG9mIHRoZSBnZXR0ZXIsIGlmIGFueS48L2xpPgotICogPGxpPlRoZSBKRFQgSU1ldGhvZCBvZiB0aGUgc2V0dGVyLCBpZiBhbnkuPC9saT4KLSAqIDwvb2w+Ci0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSUphdmFCZWFuUHJvcGVydHkKLXsKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS4KLQkgKiBAcmV0dXJuIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldE5hbWUgKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIHByb3BlcnR5IGlzIGluZGV4ZWQuCi0JICogQHJldHVybiBUcnVlIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm9wZXJ0eSBpcyBpbmRleGVkLgotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzSW5kZXhlZCAoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIEpEVCBJTWV0aG9kIG9mIHRoZSBnZXR0ZXIuCi0JICogRm9yIGluZGV4ZWQgcHJvcGVydGllcywKLQkgKiB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGdldHRlciB3aWxsIGJlIGFuIGFycmF5LgotCSAqIEZvciBzaW1wbGUgcHJvcGVydGllcywKLQkgKiB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGdldHRlciB3aWxsIG5vdCBiZSBhbiBhcnJheS4KLQkgKiBAcmV0dXJuIFRoZSBKRFQgSU1ldGhvZCBvZiB0aGUgZ2V0dGVyLAotCSAqIG9yIG51bGwgaWYgdGhpcyBpcyBhIHdyaXRlLW9ubHkgcHJvcGVydHkuCi0JICovCi0JcHVibGljIElNZXRob2QgZ2V0R2V0dGVyICgpOwotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIEpEVCBJTWV0aG9kIG9mIHRoZSBpbmRleGVkIGdldHRlciwKLQkgKiBvciBudWxsIGlmIHRoaXMgaXMgZWl0aGVyIG5vdCBhbiBpbmRleGVkIHByb3BlcnR5LAotCSAqIG9yIGlzIGFuIGluZGV4ZWQgcHJvcGVydHkgYnV0IGhhcyBvbmx5IHRoZSBhcnJheS0KLQkgKiBiYXNlZCBnZXR0ZXIuCi0JICogQHJldHVybiBUaGUgSkRUIElNZXRob2Qgb2YgdGhlIGluZGV4ZWQgZ2V0dGVyLAotCSAqIG9yIG51bGwgaWYgdGhpcyBpcyBub3QgYW4gaW5kZXhlZCBwcm9wZXJ0eSBvcgotCSAqIGlmIHRoZXJlIGlzIG5vIGluZGV4ZWQgZ2V0dGVyLgotCSAqLwotCXB1YmxpYyBJTWV0aG9kIGdldEluZGV4ZWRHZXR0ZXIgKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBKRFQgSU1ldGhvZCBvZiB0aGUgc2V0dGVyLgotCSAqIEZvciBpbmRleGVkIHByb3BlcnRpZXMsCi0JICogdGhlIHBhcmFtZXRlciB0eXBlIG9mIHRoZSBzZXR0ZXIgd2lsbCBiZSBhbiBhcnJheS4KLQkgKiBGb3Igc2ltcGxlIHByb3BlcnRpZXMsCi0JICogdGhlIHBhcmFtZXRlciB0eXBlIG9mIHRoZSBzZXR0ZXIgd2lsbCBub3QgYmUgYW4gYXJyYXkuCi0JICogQHJldHVybiBUaGUgSkRUIElNZXRob2Qgb2YgdGhlIHNldHRlciwKLQkgKiBvciBudWxsIGlmIHRoaXMgaXMgYSByZWFkLW9ubHkgcHJvcGVydHkuCi0JICovCi0JcHVibGljIElNZXRob2QgZ2V0U2V0dGVyICgpOwotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIEpEVCBJTWV0aG9kIG9mIHRoZSBpbmRleGVkIHNldHRlciwKLQkgKiBvciBudWxsIGlmIHRoaXMgaXMgZWl0aGVyIG5vdCBhbiBpbmRleGVkIHByb3BlcnR5LAotCSAqIG9yIGlzIGFuIGluZGV4ZWQgcHJvcGVydHkgYnV0IGhhcyBvbmx5IHRoZSBhcnJheS0KLQkgKiBiYXNlZCBzZXR0ZXIuCi0JICogQHJldHVybiBUaGUgSkRUIElNZXRob2Qgb2YgdGhlIGluZGV4ZWQgc2V0dGVyLAotCSAqIG9yIG51bGwgaWYgdGhpcyBpcyBub3QgYW4gaW5kZXhlZCBwcm9wZXJ0eSBvcgotCSAqIGlmIHRoZXJlIGlzIG5vIGluZGV4ZWQgc2V0dGVyLgotCSAqLwotCXB1YmxpYyBJTWV0aG9kIGdldEluZGV4ZWRTZXR0ZXIgKCk7Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdHlwZSB3aXRoaW4gd2hpY2ggdGhlIGdldHRlciBhbmQvb3Igc2V0dGVyCi0JICogb2YgdGhpcyBwcm9wZXJ0eSBpcyBkZWNsYXJlZCwgb3IgbnVsbCBpZiBub25lLgotCSAqIEByZXR1cm4gVGhlIHR5cGUgd2l0aGluIHdoaWNoIHRoZSBnZXR0ZXIgYW5kL29yIHNldHRlcgotCSAqIG9mIHRoaXMgcHJvcGVydHkgaXMgZGVjbGFyZWQuCi0JICovCi0JcHVibGljIElUeXBlIGdldERlY2xhcmluZ1R5cGUgKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL0lKYXZhV2ViU2VydmljZVJ1bGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSUphdmFXZWJTZXJ2aWNlUnVsZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTEyYzlkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSUphdmFXZWJTZXJ2aWNlUnVsZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxOSAgIDEzMjkwNSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleSAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2U7Ci0KLWltcG9ydCBqYXZhLnV0aWwuU3RhY2s7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JRmllbGQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSU1ldGhvZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JVHlwZTsKLQotLyoqCi0gKiBAYXV0aG9yIGNicmVhbGV5Ci0gKiBBIEphdmEgV2ViIHNlcnZpY2UgY29uZm9ybWFuY2UgUnVsZSB0ZXN0cyBzb21lIGNvbGxlY3Rpb24KLSAqIG9mIEphdmEgcmVzb3VyY2VzIHRoYXQgaW1wbGVtZW50LCBvciBhcmUgbWVhbnQgdG8gaW1wbGVtZW50LAotICogYSBXZWIgc2VydmljZSBhZ2FpbnN0IGEgc2luZ2xlLCBjb25jaXNlIHJlcXVpcmVtZW50IGFzIGlzCi0gKiB0eXBpY2FsbHkgZGVmaW5lZCBieSBhIHNwZWNpZmljYXRpb24gKGVnLiBKQVgtUlBDLCBKU1IgMTA5KQotICogb3IgYSBydW50aW1lIChlZy4gQXBhY2hlIEF4aXMpLgotICogPHA+Ci0gKiBFdmVyeSBydWxlIG11c3QgaGF2ZSBhIG5hbWVzcGFjZSBhbmQgYSB1bmlxdWUgSUQgdW5kZXIgdGhhdAotICogdGhhdCBuYW1lc3BhY2UuIEV2ZXJ5IHJ1bGUgbWF5IGhhdmUgYSBzaG9ydCBuYW1lIGFuZCBhIGxvbmcKLSAqIGRlc2NyaXB0aW9uLCBib3RoIG9mIHdoaWNoIGFyZSByZWNvbW1lbmRlZCBidXQgb3B0aW9uYWwuCi0gKiA8cD4KLSAqIEV2ZXJ5IHJ1bGUgZm9sbG93cyBhIGxpZmVjeWNsZSBvZiBpbml0aWFsaXphdGlvbiwgYW5hbHlzaXMKLSAqIGFuZCBjb21wbGV0aW9uLiBBIEphdmEgV2ViIHNlcnZpY2UgcnVsZSBlbmdpbmUgd2lsbCBkcml2ZQotICogdGhlIDxjb2RlPmluaXQoKTwvY29kZT4gbWV0aG9kIHRvIGluaXRpYWxpemUgdGhlIHJ1bGUsIHRoZW4KLSAqIGRyaXZlIHRoZSB2YXJpb3VzIDxjb2RlPnZpc2l0Li4uKCk8L2NvZGU+IG1ldGhvZHMgYXMgaXQKLSAqIG5hdmlnYXRlcyBzb21lIGNvbGxlY3Rpb24gb2YgSkRUIHJlc291cmNlcywgdGhlbiBkcml2ZSB0aGUKLSAqIDxjb2RlPmdldFJlc3VsdHMoKTwvY29kZT4gbWV0aG9kIHRvIGluZGljYXRlIGFuYWx5c2lzIGlzIGRvbmUKLSAqIGFuZCByZXRyaWV2ZSBhIHN0YXR1cyBvYmplY3Qgd2l0aCB0aGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSUphdmFXZWJTZXJ2aWNlUnVsZQotewotCS8qKgotCSAqIFJldHVybnMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBydWxlCi0JICogd2l0aGluIHRoZSBuYW1lc3BhY2UgdG8gd2hpY2ggdGhlIHJ1bGUgYmVsb25ncy4KLQkgKiBAcmV0dXJuIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcnVsZS4KLQkgKiBWYWxpZCBydWxlIGlkZW50aWZpZXJzIG11c3Qgbm90IGJlIG5lZ2F0aXZlLgotCSAqLwotCXB1YmxpYyBpbnQgZ2V0SWQgKCk7Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbmFtZXNwYWNlIHRvIHdoaWNoIHRoaXMgcnVsZSBiZWxvbmdzLgotCSAqIEByZXR1cm4gVGhlIG5hbWVzcGFjZSB0byB3aGljaCB0aGlzIHJ1bGUgYmVsb25ncy4KLQkgKiBOZXZlciByZXR1cm5zIG51bGwuCi0JICovCi0JcHVibGljIFN0cmluZyBnZXROYW1lc3BhY2UgKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB0cmFuc2xhdGFibGUgc2hvcnQgbmFtZSBvZiB0aGlzIHJ1bGUuICAKLQkgKiBAcmV0dXJuIFRoZSB0cmFuc2xhdGFibGUgc2hvcnQgbmFtZSBvZiB0aGlzIHJ1bGUsCi0JICogb3IgbnVsbCBpZiB0aGUgcnVsZSBoYXMgbm8gbmFtZS4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldE5hbWUgKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB0cmFuc2xhdGFibGUgZGVzY3JpcHRpb24gb2YgdGhpcyBydWxlLgotCSAqIEByZXR1cm4gVGhlIHRyYW5zbGF0YWJsZSBkZXNjcmlwdGlvbiBvZiB0aGlzIHJ1bGUsCi0JICogb3IgbnVsbCBpZiB0aGUgcnVsZSBoYXMgbm8gZGVzY3JpcHRpb24uCi0JICovCi0JcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbiAoKTsKLQotCS8qKgotCSAqIENhbGxlZCBieSB0aGUgcnVsZSBlbmdpbmUgdG8gZ2l2ZSB0aGlzIHJ1bGUgYSBjaGFuY2UKLQkgKiB0byBpbml0aWFsaXplIGl0c2VsZiBwcmlvciB0byB2aXNpdGluZyBKRFQgb2JqZWN0cy4KLQkgKiBAcGFyYW0gZW5naW5lIFRoZSBlbmdpbmUgaW5pdGlhbGl6aW5nIHRoaXMgcnVsZS4KLQkgKi8KLQlwdWJsaWMgdm9pZCBpbml0ICggSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZSBlbmdpbmUgKTsKLQotCS8qKgotCSAqIENhbGxlZCBieSB0aGUgcnVsZSBlbmdpbmUgd2hlbiBpdCBkZWNpZGVzIHRvIHZpc2l0Ci0JICogYSBKYXZhIGNsYXNzIChpZS4gcHJpbWl0aXZlIHR5cGVzIGFyZSBleGNsdWRlZCkuCi0JICogQHBhcmFtIGpkdENsYXNzIFRoZSBjbGFzcyB0byB2aXNpdC4KLQkgKiBAcGFyYW0gcGVhbnV0VHJhaWwgVGhlIHRyYWlsIG9mIG9iamVjdHMgYmFjayB0byB0aGUgcm9vdC4KLQkgKi8KLQlwdWJsaWMgdm9pZCB2aXNpdENsYXNzICggSVR5cGUgamR0Q2xhc3MsIFN0YWNrIHBlYW51dFRyYWlsICk7Ci0KLQkvKioKLQkgKiBDYWxsZWQgYnkgdGhlIHJ1bGUgZW5naW5lIHdoZW4gaXQgZGVjaWRlcyB0byB2aXNpdAotCSAqIGEgSmF2YSBjbGFzcyBmb3VuZCBvbiB0aGUgdGhyb3dzIGNsYXVzZSBvZiBhIG1ldGhvZC4KLQkgKiBAcGFyYW0gamR0Q2xhc3MgVGhlIGV4Y2VwdGlvbiBjbGFzcyB0byB2aXNpdC4KLQkgKiBAcGFyYW0gcGVhbnV0VHJhaWwgVGhlIHRyYWlsIG9mIG9iamVjdHMgYmFjayB0byB0aGUgcm9vdC4KLQkgKi8KLQlwdWJsaWMgdm9pZCB2aXNpdEV4Y2VwdGlvbiAoIElUeXBlIGpkdENsYXNzLCBTdGFjayBwZWFudXRUcmFpbCApOwotCi0JLyoqCi0JICogQ2FsbGVkIGJ5IHRoZSBydWxlIGVuZ2luZSB3aGVuIGl0IGRlY2lkZXMgdG8gdmlzaXQKLQkgKiBhIGZpZWxkIGJlbG9uZ2luZyB0byBhIGNsYXNzLgotCSAqIEBwYXJhbSBqZHRGaWVsZCBUaGUgZmllbGQgdG8gdmlzaXQuCi0JICogQHBhcmFtIHBlYW51dFRyYWlsIFRoZSB0cmFpbCBvZiBvYmplY3RzIGJhY2sgdG8gdGhlIHJvb3QuCi0JICovCi0JcHVibGljIHZvaWQgdmlzaXRGaWVsZCAoIElGaWVsZCBqZHRGaWVsZCwgU3RhY2sgcGVhbnV0VHJhaWwgKTsKLQotCS8qKgotCSAqIENhbGxlZCBieSB0aGUgcnVsZSBlbmdpbmUgd2hlbiBpdCBkZWNpZGVzIHRvIHZpc2l0Ci0JICogYSBKYXZhIEJlYW4gcHJvcGVydHkgKGllLiByZXByZXNlbnRlZCBieSBhICJnZXQiIGFuZC9vcgotCSAqICJzZXQiIG1ldGhvZCkgYmVsb25pbmcgdG8gYSBjbGFzcy4KLQkgKiBAcGFyYW0gYmVhblByb3BlcnR5IFRoZSBwcm9wZXJ0eSB0byB2aXNpdC4KLQkgKiBAcGFyYW0gcGVhbnV0VHJhaWwgVGhlIHRyYWlsIG9mIG9iamVjdHMgYmFjayB0byB0aGUgcm9vdC4KLQkgKi8KLQlwdWJsaWMgdm9pZCB2aXNpdFByb3BlcnR5ICggSUphdmFCZWFuUHJvcGVydHkgYmVhblByb3BlcnR5LCBTdGFjayBwZWFudXRUcmFpbCApOwotCi0JLyoqCi0JICogQ2FsbGVkIGJ5IHRoZSBydWxlIGVuZ2luZSB3aGVuIGl0IGRlY2lkZXMgdG8gdmlzaXQgYSBtZXRob2QuCi0JICogQHBhcmFtIGpkdE1ldGhvZCBUaGUgbWV0aG9kIHRvIHZpc2l0LgotCSAqIEBwYXJhbSBwZWFudXRUcmFpbCBUaGUgdHJhaWwgb2Ygb2JqZWN0cyBiYWNrIHRvIHRoZSByb290LgotCSAqLwotCXB1YmxpYyB2b2lkIHZpc2l0TWV0aG9kICggSU1ldGhvZCBqZHRNZXRob2QsIFN0YWNrIHBlYW51dFRyYWlsICk7Ci0KLQkvKioKLQkgKiBDYWxsZWQgYnkgdGhlIHJ1bGUgZW5naW5lIGFmdGVyIGFsbCBKRFQgb2JqZWN0cyBoYXZlCi0JICogYmVlbiB2aXNpdGVkIHNvIHRoYXQgdGhlIHJ1bGUgY2FuIHJldHVybiBhIHN0YXR1cwotCSAqIG9iamVjdCAodXN1YWxseSBhIG11bHRpLXN0YXR1cykgd2l0aCBhIHN1bW1hcnkgb2YKLQkgKiBhbnkgdmlvbGF0aW9ucyBieSBKRFQgb2JqZWN0cyBkZXRlY3RlZCBieSB0aGlzIHJ1bGUuCi0JICogQHJldHVybiBUaGUgcmVzdWx0cyBvZiB0aGUgcnVsZSdzIGFuYWx5c2lzLgotCSAqLwotCXB1YmxpYyBJU3RhdHVzIGdldFJlc3VsdHMgKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL0lKYXZhV2ViU2VydmljZVJ1bGVFbmdpbmUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2VmMGI2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDE5ICAgMTMyOTA1IGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5ICAgICAgICAgIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotCi0vKioKLSAqIEBhdXRob3IgY2JyZWFsZXkKLSAqIFRoaXMgaXMgYW4gZW5naW5lIHRoYXQgd2Fsa3MgYSBKRFQgbW9kZWwgYW5kIHJ1bnMgcnVsZXMuCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZQotewotCS8qKgotCSAqIEFuYWx5emVzIHRoZSBnaXZlbiBjbGFzcyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZ2l2ZW4gCi0JICogcHJvamVjdCBmb3IgY29tcGxpYW5jZSB0byBhIHNldCBvZiBKQVgtUlBDIHJ1bGVzLgotCSAqIEBwYXJhbSBwcm9qZWN0IFRoZSBwcm9qZWN0IGNvbnRleHQgb2YgdGhlIGFuYWx5c2lzLgotCSAqIEBwYXJhbSByb290Q2xhc3MgVGhlIElUeXBlIG9mIHRoZSBjbGFzcyB0byBhbmFseXplLgotCSAqIEBwYXJhbSBydWxlcyBUaGUgcnVsZXMgdG8gdXNlIGZvciB0aGUgYW5hbHlzaXMuCi0JICogQHJldHVybiBBbiBJU3RhdHVzIHN1bW1hcml6aW5nIHRoZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBhbmFseXplICggSVByb2plY3QgcHJvamVjdCwgSVR5cGUgcm9vdENsYXNzLCBKYXZhV2ViU2VydmljZVJ1bGVTZXQgcnVsZXMgKTsKLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBKRFRSZXNvbHZlciBpbiB1c2UgYnkgdGhpcyBhbmFseXplci4KLQkgKiBUaGUgSkRUUmVzb2x2ZXIgaXMgZ3VhcmFudGVlZCBub3QgdG8gYmUgbnVsbCBvbmx5Ci0JICogYWZ0ZXIgdGhlIGFuYWx5emUgbWV0aG9kIGhhcyBiZWVuIGludm9rZWQgYW5kIGJlZm9yZQotCSAqIHRoZSBmaXJzdCBydWxlIGlzIHZpc2l0ZWQuIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkCi0JICogZm9yIHVzZSBieSBpbXBsZW1lbnRhdGlvbnMgb2YgSUphdmFXZWJTZXJ2aWNlUnVsZS4KLQkgKiBAcmV0dXJuIFRoZSBKRFRSZXNvbHZlciBpbiB1c2UgYnkgdGhpcyBhbmFseXplci4KLQkgKi8KLQlwdWJsaWMgSkRUUmVzb2x2ZXIgZ2V0SkRUUmVzb2x2ZXIgKCk7Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcHJvZ3Jlc3MgbW9uaXRvciBpbiB1c2UgYnkgdGhpcyBhbmFseXplciwKLQkgKiBvciBudWxsIGlmIG5vIHByb2dyZXNzIG1vbml0b3IgaXMgaW4gdXNlLgotCSAqIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIGZvciB1c2UgYnkgaW1wbGVtZW50YXRpb25zCi0JICogb2YgSUphdmFXZWJTZXJ2aWNlUnVsZS4KLQkgKiBAcmV0dXJuIFRoZSBwcm9ncmVzcyBtb25pdG9yIGluIHVzZSBieSB0aGlzIGFuYWx5emVyLAotCSAqIG9yIG51bGwgZm9yIG5vbmUuCi0JICovCi0JcHVibGljIElQcm9ncmVzc01vbml0b3IgZ2V0UHJvZ3Jlc3NNb25pdG9yICgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9KQVhSUENXZWJTZXJ2aWNlQW5hbHl6ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSkFYUlBDV2ViU2VydmljZUFuYWx5emVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNWVmYjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9KQVhSUENXZWJTZXJ2aWNlQW5hbHl6ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MTkgICAxMzI5MDUgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkgICAgICAgICAgCi0gKiAyMDA2MDYwNyAgIDE0NTYwNCBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleSAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklDbGFzc0ZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUNvbXBpbGF0aW9uVW5pdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JSmF2YUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUphdmFQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFNb2RlbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuV1NQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UucnVsZXMuSkFYUlBDUnVsZVNldEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGFuYWx5emluZwotICogY29tcGxpYW5jZSBvZiBKYXZhIHNlcnZpY2UgY2xhc3NlcyBhbmQgdmFsdWUgdHlwZXMgdG8KLSAqIHRoZSBKQVgtUlBDIDEuMSBzcGVjaWZpY2F0aW9uLiBUeXBpY2FsIHVzYWdlIG9mIHRoaXMKLSAqIGNsYXNzOgotICogPGNvZGU+Ci0gKiBJVHlwZSB0eXBlID0gSkFYUlBDV2ViU2VydmljZUFuYWx5emVyLmFzVHlwZShteUphdmFGaWxlUmVzb3VyY2UpOwotICogSmF2YVdlYlNlcnZpY2VSdWxlU2V0IHJ1bGVzID0gSkFYUlBDV2ViU2VydmljZUFuYWx5emVyLmdldFJ1bGVTZXQoKTsKLSAqIEpBWFJQQ1dlYlNlcnZpY2VBbmFseXplci5nZXRSdWxlRW5naW5lKCkuYW5hbHl6ZSh0eXBlLHJ1bGVzLG15UHJvZ3Jlc3NNb25pdG9yKTsKLSAqIDwvY29kZT4gCi0gKiBAYXV0aG9yIGNicmVhbGV5Ci0gKi8KLXB1YmxpYyBjbGFzcyBKQVhSUENXZWJTZXJ2aWNlQW5hbHl6ZXIKLXsKLQlwcml2YXRlIEphdmFXZWJTZXJ2aWNlUnVsZVNldCBydWxlU2V0XzsKLQkKLQkvKioKLQkgKiBDb25zdHJ1Y3RzIGEgbmV3IEpBWC1SUEMgV2ViIHNlcnZpY2UgYW5hbHl6ZXIsCi0JICogYSBjb252ZW5pZW5jZSBjbGFzcyB3cmFwcGVkIGFyb3VuZCBhCi0JICogSkFYUlBDV2ViU2VydmljZUFuYWx5emVyLgotCSAqLwotCXB1YmxpYyBKQVhSUENXZWJTZXJ2aWNlQW5hbHl6ZXIgKCkKLQl7Ci0JCXJ1bGVTZXRfID0gSkFYUlBDUnVsZVNldEZhY3RvcnkubmV3UnVsZVNldCgpOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHNldCBvZiBydWxlcyBpbiB1c2UsIHRoZSBjb250ZW50cyBvZgotCSAqIHdoaWNoIGNhbiBiZSBtYW5pcHVsYXRlZCBhbmQgd2lsbCBiZSByZXNwZWN0ZWQgYnkKLQkgKiB0aGlzIGFuYWx5emVyLiBJbiBvdGhlciB3b3JkcywgdGhpcyBtZXRob2QgcmV0dXJucyBhCi0JICogcmVmZXJlbmNlIHRvLCBub3QgYSBjb3B5IG9mLCB0aGUgc2V0IG9mIHJ1bGVzIGluIHVzZS4KLQkgKiBAcmV0dXJuIFRoZSBzZXQgb2YgcnVsZXMgaW4gdXNlIGJ5IHRoZSBhbmFseXplci4KLQkgKi8KLQlwdWJsaWMgSmF2YVdlYlNlcnZpY2VSdWxlU2V0IGdldFJ1bGVTZXQgKCkKLQl7Ci0JCXJldHVybiBydWxlU2V0XzsKLQl9Ci0JCi0JLyoqCi0JICogQW5hbHl6ZXMgdGhlIEphdmEgc2VydmljZSBjbGFzcyByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4KLQkgKiBKRFQgdHlwZSBmb3IgY29tcGxpYW5jZSB0byB0aGUgSkFYLVJQQyBmb3IgY29tcGxpYW5jZSB0bwotCSAqIHRoZSBKQVgtUlBDIHNwZWNpZmljYXRpb24uCi0JICogUHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBwcm92aWRlZCBieSB0aGUgZ2l2ZW4gbW9uaXRvci4gCi0JICogQHBhcmFtIHByb2plY3QgVGhlIHByb2plY3QgY29udGV4dCBpbiB3aGljaCB0aGUgYW5hbHlzaXMKLQkgKiBzaG91bGQgdGFrZSBwbGFjZS4KLQkgKiBAcGFyYW0gcm9vdENsYXNzIFRoZSBKYXZhIHNlcnZpY2UgY2xhc3MgdG8gYW5hbHl6ZS4KLQkgKiBAcGFyYW0gbW9uaXRvciBUaGUgcHJvZ3Jlc3MgbW9uaXRvciB0byB1c2UsCi0JICogb3IgbnVsbCBpZiBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqIEByZXR1cm4gQSBzdGF0dXMgb2JqZWN0IHdob3NlIHNldmVyaXR5LCBtZXNzYWdlIGFuZAotCSAqIGNoaWxkIHN0YXR1cyBvYmplY3RzLCBpZiBhbnksIGRlc2NyaWJlIGFueSBKQVgtUlBDCi0JICogcnVsZXMgdGhhdCBtYXkgYmUgY29tcHJvbWlzZWQgYnkgdGhlIHNlcnZpY2UgY2xhc3MuCi0JICogTmV2ZXIgcmV0dXJucyBudWxsLgotCSAqLwotCXB1YmxpYyBJU3RhdHVzIGFuYWx5emUgKCBJUHJvamVjdCBwcm9qZWN0LCBJVHlwZSByb290Q2xhc3MsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0JewotCQlJSmF2YVdlYlNlcnZpY2VSdWxlRW5naW5lIGVuZ2luZSA9IG5ldyBKQVhSUENXZWJTZXJ2aWNlUnVsZUVuZ2luZShtb25pdG9yKTsKLQkJcmV0dXJuIGVuZ2luZS5hbmFseXplKHByb2plY3Qscm9vdENsYXNzLHJ1bGVTZXRfKTsKLQl9Ci0KLQkvKioKLQkgKiBBbmFseXplcyB0aGUgSmF2YSBzZXJ2aWNlIGNsYXNzIHJlcHJlc2VudGVkIGJ5IHRoZSBnaXZlbgotCSAqIEpEVCB0eXBlIGZvciBjb21wbGlhbmNlIHRvIHRoZSBKQVgtUlBDIGZvciBjb21wbGlhbmNlIHRvCi0JICogdGhlIEpBWC1SUEMgc3BlY2lmaWNhdGlvbi4KLQkgKiBQcm9ncmVzcyBtb25pdG9yaW5nIGlzIHByb3ZpZGVkIGJ5IHRoZSBnaXZlbiBtb25pdG9yLiAKLQkgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdCBjb250ZXh0IGluIHdoaWNoIHRoZSBhbmFseXNpcwotCSAqIHNob3VsZCB0YWtlIHBsYWNlLgotCSAqIEBwYXJhbSByb290Q2xhc3MgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZQotCSAqIEphdmEgc2VydmljZSBjbGFzcyB0byBhbmFseXplLgotCSAqIEBwYXJhbSBtb25pdG9yIFRoZSBwcm9ncmVzcyBtb25pdG9yIHRvIHVzZSwKLQkgKiBvciBudWxsIGlmIG1vbml0b3JpbmcgaXMgbm90IGRlc2lyZWQuCi0JICogQHJldHVybiBBIHN0YXR1cyBvYmplY3Qgd2hvc2Ugc2V2ZXJpdHksIG1lc3NhZ2UgYW5kCi0JICogY2hpbGQgc3RhdHVzIG9iamVjdHMsIGlmIGFueSwgZGVzY3JpYmUgYW55IEpBWC1SUEMKLQkgKiBydWxlcyB0aGF0IG1heSBiZSBjb21wcm9taXNlZCBieSB0aGUgc2VydmljZSBjbGFzcy4KLQkgKiBOZXZlciByZXR1cm5zIG51bGwuCi0JICovCi0JcHVibGljIElTdGF0dXMgYW5hbHl6ZSAoIElQcm9qZWN0IHByb2plY3QsIFN0cmluZyByb290Q2xhc3MsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0JewotCQl0cnkKLQkJewotCQkJSVR5cGUgcm9vdFR5cGUgPSBhc1R5cGUocm9vdENsYXNzLHByb2plY3QpOwotCQkJaWYgKHJvb3RUeXBlID09IG51bGwpCi0JCQl7Ci0JCQkJU3RyaW5nIG1lc3NhZ2UgPSBOTFMuYmluZChXU1BsdWdpbk1lc3NhZ2VzLk1TR19KQVhSUEMxMV9VTlJFU09MVkVEX0NMQVNTLHJvb3RDbGFzcyxwcm9qZWN0LmdldE5hbWUoKSk7Ci0JCQkJcmV0dXJuIG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUiwib3JnLmVjbGlwc2UuanN0LndzIiwwLG1lc3NhZ2UsbnVsbCk7Ci0JCQl9Ci0JCQlyZXR1cm4gYW5hbHl6ZShwcm9qZWN0LHJvb3RUeXBlLG1vbml0b3IpOwotCQl9Ci0JCWNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkKLQkJewotCQkJLy8gQW4gZXhjZXB0aW9uIG1heSBiZSB0aHJvd24gZnJvbSB0aGUgY2FsbCB0byBhc1R5cGUoLi4uKSwKLQkJCS8vIG5vdCBmcm9tIHRoZSBjYWxsIHRvIGFuYWx5emUoLi4uKS4gRXhjZXB0aW9ucyB3aXRoaW4gdGhlCi0JCQkvLyBhbmFseXplKC4uLikgbWV0aG9kIGFyZSBjYXB0dXJlZCBpbiB0aGUgcmV0dXJuZWQgSVN0YXR1cy4KLQkJCXJldHVybiBuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIm9yZy5lY2xpcHNlLmpzdC53cyIsMCwiSW50ZXJuYWwgZXJyb3IiLGUpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogQW5hbHl6ZXMgdGhlIEphdmEgc2VydmljZSBjbGFzcyByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4KLQkgKiAiLmphdmEiIGNvbXBpbGF0aW9uIHVuaXQgb3IgIi5jbGFzcyIgZmlsZSBmb3IgY29tcGxpYW5jZQotCSAqIHRvIHRoZSBKQVgtUlBDIHNwZWNpZmljYXRpb24uCi0JICogUHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBwcm92aWRlZCBieSB0aGUgZ2l2ZW4gbW9uaXRvci4gCi0JICogQHBhcmFtIHByb2plY3QgVGhlIHByb2plY3QgY29udGV4dCBpbiB3aGljaCB0aGUgYW5hbHlzaXMKLQkgKiBzaG91bGQgdGFrZSBwbGFjZS4KLQkgKiBAcGFyYW0gcm9vdENsYXNzIFRoZSBKYXZhIHNlcnZpY2UgY2xhc3MgdG8gYW5hbHl6ZS4KLQkgKiBAcGFyYW0gbW9uaXRvciBUaGUgcHJvZ3Jlc3MgbW9uaXRvciB0byB1c2UsCi0JICogb3IgbnVsbCBpZiBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqIEByZXR1cm4gQSBzdGF0dXMgb2JqZWN0IHdob3NlIHNldmVyaXR5LCBtZXNzYWdlIGFuZAotCSAqIGNoaWxkIHN0YXR1cyBvYmplY3RzLCBpZiBhbnksIGRlc2NyaWJlIGFueSBKQVgtUlBDCi0JICogcnVsZXMgdGhhdCBtYXkgYmUgY29tcHJvbWlzZWQgYnkgdGhlIHNlcnZpY2UgY2xhc3MuCi0JICogTmV2ZXIgcmV0dXJucyBudWxsLgotCSAqLwotCXB1YmxpYyBJU3RhdHVzIGFuYWx5emUgKCBJUHJvamVjdCBwcm9qZWN0LCBJRmlsZSByb290Q2xhc3MsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0JewotCQl0cnkKLQkJewotCQkJSVR5cGUgcm9vdFR5cGUgPSBhc1R5cGUocm9vdENsYXNzKTsKLQkJCWlmIChyb290VHlwZSA9PSBudWxsKQotCQkJewotCQkJCVN0cmluZyBtZXNzYWdlID0gTkxTLmJpbmQoV1NQbHVnaW5NZXNzYWdlcy5NU0dfSkFYUlBDMTFfVU5SRVNPTFZFRF9DTEFTUyxyb290Q2xhc3MuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpLHByb2plY3QuZ2V0TmFtZSgpKTsKLQkJCQlyZXR1cm4gbmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLCJvcmcuZWNsaXBzZS5qc3Qud3MiLDAsbWVzc2FnZSxudWxsKTsKLQkJCX0KLQkJCXJldHVybiBhbmFseXplKHByb2plY3Qscm9vdFR5cGUsbW9uaXRvcik7Ci0JCX0KLQkJY2F0Y2ggKEphdmFNb2RlbEV4Y2VwdGlvbiBlKQotCQl7Ci0JCQkvLyBBbiBleGNlcHRpb24gbWF5IGJlIHRocm93biBmcm9tIHRoZSBjYWxsIHRvIGFzVHlwZSguLi4pLAotCQkJLy8gbm90IGZyb20gdGhlIGNhbGwgdG8gYW5hbHl6ZSguLi4pLiBFeGNlcHRpb25zIHdpdGhpbiB0aGUKLQkJCS8vIGFuYWx5emUoLi4uKSBtZXRob2QgYXJlIGNhcHR1cmVkIGluIHRoZSByZXR1cm5lZCBJU3RhdHVzLgotCQkJcmV0dXJuIG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUiwib3JnLmVjbGlwc2UuanN0LndzIiwwLCJJbnRlcm5hbCBlcnJvciIsZSk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBKYXZhIHR5cGUgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGZpbGUsCi0JICogb3IgbnVsbCBpZiBubyBzdWNoIHR5cGUgY2FuIGJlIGNsZWFybHkgZGV0ZXJtaW5lZC4KLQkgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB3aG9zZSB0eXBlIHRvIGluZmVyLCB1c3VhbGx5IGEKLQkgKiAiLmphdmEiIG9yICIuY2xhc3MiIGZpbGUuIEZvciAiLmphdmEiIGZpbGVzLCB0aGlzCi0JICogbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBwcmltYXJ5IHR5cGUuCi0JICogQHJldHVybiBUaGUgaW5mZXJyZWQgSkRUIEphdmEgdHlwZS4KLQkgKiBAdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbiBJZiB0aGUgZ2l2ZW4gZmlsZSBjb3VsZCBub3QKLQkgKiBtYXBwZWQgdG8gYSBKRFQgSVR5cGUuCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgSVR5cGUgYXNUeXBlICggU3RyaW5nIHFuYW1lLCBJUHJvamVjdCBwcm9qZWN0ICkKLQl0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JewotCQlJVHlwZSB0eXBlID0gbnVsbDsKLQkJSUphdmFFbGVtZW50IGphdmFFbGVtZW50ID0gSmF2YUNvcmUuY3JlYXRlKHByb2plY3QpOwotCQlpZiAoamF2YUVsZW1lbnQgaW5zdGFuY2VvZiBJSmF2YVByb2plY3QpCi0JCXsKLQkJCUlKYXZhUHJvamVjdCBqYXZhUHJvamVjdCA9IChJSmF2YVByb2plY3QpamF2YUVsZW1lbnQ7Ci0JCQl0eXBlID0gamF2YVByb2plY3QuZmluZFR5cGUocW5hbWUpOwotCQl9Ci0JCXJldHVybiB0eXBlOwotCX0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBKYXZhIHR5cGUgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGZpbGUsCi0JICogb3IgbnVsbCBpZiBubyBzdWNoIHR5cGUgY2FuIGJlIGNsZWFybHkgZGV0ZXJtaW5lZC4KLQkgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB3aG9zZSB0eXBlIHRvIGluZmVyLCB1c3VhbGx5IGEKLQkgKiAiLmphdmEiIG9yICIuY2xhc3MiIGZpbGUuIEZvciAiLmphdmEiIGZpbGVzLCB0aGlzCi0JICogbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBwcmltYXJ5IHR5cGUuCi0JICogQHJldHVybiBUaGUgaW5mZXJyZWQgSkRUIEphdmEgdHlwZS4KLQkgKiBAdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbiBJZiB0aGUgZ2l2ZW4gZmlsZSBjb3VsZCBub3QKLQkgKiBtYXBwZWQgdG8gYSBKRFQgSVR5cGUuCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgSVR5cGUgYXNUeXBlICggSUZpbGUgZmlsZSApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJSVR5cGUgdHlwZSA9IG51bGw7Ci0JCUlKYXZhRWxlbWVudCBqYXZhRWxlbWVudCA9IEphdmFDb3JlLmNyZWF0ZShmaWxlKTsKLQkJaWYgKGphdmFFbGVtZW50IGluc3RhbmNlb2YgSUNvbXBpbGF0aW9uVW5pdCkKLQkJewotCQkJSUNvbXBpbGF0aW9uVW5pdCBjb21waWxhdGlvblVuaXQgPSAoSUNvbXBpbGF0aW9uVW5pdClqYXZhRWxlbWVudDsKLQkJCXR5cGUgPSBjb21waWxhdGlvblVuaXQuZmluZFByaW1hcnlUeXBlKCk7Ci0JCX0KLQkJZWxzZSBpZiAoamF2YUVsZW1lbnQgaW5zdGFuY2VvZiBJQ2xhc3NGaWxlKQotCQl7Ci0JCQlJQ2xhc3NGaWxlIGNsYXNzRmlsZSA9IChJQ2xhc3NGaWxlKWphdmFFbGVtZW50OwotCQkJdHlwZSA9IGNsYXNzRmlsZS5nZXRUeXBlKCk7Ci0JCX0KLQkJcmV0dXJuIHR5cGU7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9KQVhSUENXZWJTZXJ2aWNlUnVsZUVuZ2luZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9KQVhSUENXZWJTZXJ2aWNlUnVsZUVuZ2luZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzU5N2YwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSkFYUlBDV2ViU2VydmljZVJ1bGVFbmdpbmUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MTkgICAxMzI5MDUgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqIDIwMDYwNzExICAgMTQ5NDExIGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZhLnV0aWwuU3RhY2s7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklGaWVsZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFNb2RlbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuV1NQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotCi0vKioKLSAqIEBhdXRob3IgY2JyZWFsZXkKLSAqIFRoaXMgZW5naW5lIG5hdmlnYXRlZCBKRFQgY2xhc3NlcyBhY2NvcmRpbmcgdG8gYSBKQVgtUlBDCi0gKiBpbnRlcnByZXRhdGlvbi4gVGhlIHJvb3QgY2xhc3MgaXMgY29uc2lkZXJlZCB0byBiZSBhCi0gKiBjYW5kaWRhdGUgSkFYLVJQQyBzZXJ2aWNlIGNsYXNzLCBhbmQgYW55IG5vbi1zdGFuZGFyZAotICogb3Igbm9uLXByaW1pdGl2ZSB0eXBlcyB1c2VkIGJ5IHRoZSBtZXRob2RzIG9mIHRoZSBzZXJ2aWNlCi0gKiBjbGFzcyBhcmUgY29uc2lkZXJlZCB0byBiZSBjYW5kaWRhdGVzIGZvciBKQVgtUlBDIHZhbHVlCi0gKiB0eXBlIGNsYXNzZXMuIAotICovCi1wdWJsaWMgY2xhc3MgSkFYUlBDV2ViU2VydmljZVJ1bGVFbmdpbmUgaW1wbGVtZW50cyBJSmF2YVdlYlNlcnZpY2VSdWxlRW5naW5lCi17Ci0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBKQVgtUlBDIGFuYWx5c2lzIGVuZ2luZSB3aXRoIHRoZSBnaXZlbgotCSAqIHByb2dyZXNzIG1vbml0b3IuCi0JICogQHBhcmFtIHByb2dyZXNzTW9uaXRvciBUaGUgcHJvZ3Jlc3MgbW9uaXRvciBmb3IgdGhlCi0JICogZW5naW5lIHRvIHVzZSwgb3IgbnVsbCBpZiBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqLwotCXB1YmxpYyBKQVhSUENXZWJTZXJ2aWNlUnVsZUVuZ2luZSAoIElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yICkKLQl7Ci0JCXByb2dyZXNzTW9uaXRvcl8gPSBwcm9ncmVzc01vbml0b3I7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YVdlYlNlcnZpY2VSdWxlRW5naW5lI2FuYWx5emUob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QsIG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlLCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlU2V0LCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcikKLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBhbmFseXplICggSVByb2plY3QgcHJvamVjdCwgSVR5cGUgcm9vdENsYXNzLCBKYXZhV2ViU2VydmljZVJ1bGVTZXQgcnVsZXMgKQotCXsKLQkJdmlzaXRlZF8gPSBuZXcgSGFzaFNldCgpOwotCQlwZWFudXRUcmFpbF8gPSBuZXcgU3RhY2soKTsJCQotCQlyZXNvbHZlcl8gPSBuZXcgSkRUUmVzb2x2ZXIocHJvamVjdCxwcm9ncmVzc01vbml0b3JfKTsKLQkJSVN0YXR1cyBzdGF0dXMgPSBudWxsOwotCQlydWxlcy5pbml0KHRoaXMpOwotCQl0cnkKLQkJewotCQkJYW5hbHl6ZVNlcnZpY2VDbGFzcyhyb290Q2xhc3MscnVsZXMpOwotCQkJU3RyaW5nIGluQ2FzZU9mRmFpbHVyZU1lc3NhZ2UgPSBOTFMuYmluZChXU1BsdWdpbk1lc3NhZ2VzLk1TR19KQVhSUEMxMV9OT1RfQ09NUExJQU5ULHJvb3RDbGFzcy5nZXRGdWxseVF1YWxpZmllZE5hbWUoKSk7Ci0JCQlzdGF0dXMgPSBydWxlcy5nZXRSZXN1bHRzKGluQ2FzZU9mRmFpbHVyZU1lc3NhZ2UpOwotCQl9Ci0JCWNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkKLQkJewotCQkJc3RhdHVzID0gbmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLCJvcmcuZWNsaXBzZS5qc3Qud3MiLDAsIkludGVybmFsIEVycm9yIixlKTsKLQkJfQotCQlyZXR1cm4gc3RhdHVzOwotCX0KLQkKLQlwcml2YXRlIHZvaWQgYW5hbHl6ZVNlcnZpY2VDbGFzcyAoIElUeXBlIHR5cGUsIEphdmFXZWJTZXJ2aWNlUnVsZVNldCBydWxlcyApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJcnVsZXMudmlzaXRDbGFzcyh0eXBlLHBlYW51dFRyYWlsXyk7Ci0JCXZpc2l0ZWRfLmFkZCh0eXBlLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpKTsKLQkJcHVzaCh0eXBlKTsKLQkJdHJ5Ci0JCXsKLQkJCUlUeXBlW10gc3VwZXJDbGFzc2VzID0gcmVzb2x2ZXJfLmdldFN1cGVyQ2xhc3Nlcyh0eXBlKTsKLQkJCUlNZXRob2RbXSBtZXRob2RzID0gcmVzb2x2ZXJfLmdldFB1YmxpY01ldGhvZHModHlwZSxzdXBlckNsYXNzZXMpOwotCQkJZm9yIChpbnQgbT0wOyBtPG1ldGhvZHMubGVuZ3RoOyBtKyspCi0JCQl7Ci0JCQkJYW5hbHl6ZU1ldGhvZChtZXRob2RzW21dLHJ1bGVzKTsKLQkJCX0KLQkJfQotCQlmaW5hbGx5Ci0JCXsKLQkJCXBvcCgpOwotCQl9Ci0JfQotCQotCXByaXZhdGUgdm9pZCBhbmFseXplTWV0aG9kICggSU1ldGhvZCBtZXRob2QsIEphdmFXZWJTZXJ2aWNlUnVsZVNldCBydWxlcyApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJcnVsZXMudmlzaXRNZXRob2QobWV0aG9kLHBlYW51dFRyYWlsXyk7Ci0JCXB1c2gobWV0aG9kKTsKLQkJdHJ5Ci0JCXsKLQkJCUlUeXBlIHJldHVyblR5cGUgPSByZXNvbHZlcl8uZ2V0UmV0dXJuVHlwZShtZXRob2QpOwotCQkJYW5hbHl6ZURhdGFUeXBlKHJldHVyblR5cGUscnVsZXMpOwotCQkJSVR5cGVbXSBwYXJhbWV0ZXJUeXBlcyA9IHJlc29sdmVyXy5nZXRQYXJhbWV0ZXJUeXBlcyhtZXRob2QpOwotCQkJZm9yIChpbnQgcD0wOyBwPHBhcmFtZXRlclR5cGVzLmxlbmd0aDsgcCsrKQotCQkJewotCQkJCWFuYWx5emVEYXRhVHlwZShwYXJhbWV0ZXJUeXBlc1twXSxydWxlcyk7Ci0JCQl9Ci0JCQlJVHlwZVtdIGV4Y2VwdGlvblR5cGVzID0gcmVzb2x2ZXJfLmdldEV4Y2VwdGlvblR5cGVzKG1ldGhvZCk7Ci0JCQlmb3IgKGludCBlPTA7IGU8ZXhjZXB0aW9uVHlwZXMubGVuZ3RoOyBlKyspCi0JCQl7Ci0JCQkJYW5hbHl6ZUV4Y2VwdGlvblR5cGUoZXhjZXB0aW9uVHlwZXNbZV0scnVsZXMpOwotCQkJfQotCQl9Ci0JCWZpbmFsbHkKLQkJewotCQkJcG9wKCk7Ci0JCX0KLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIGFuYWx5emVEYXRhVHlwZSAoIElUeXBlIHR5cGUsIEphdmFXZWJTZXJ2aWNlUnVsZVNldCBydWxlcyApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJaWYgKHR5cGUgIT0gbnVsbCAmJiAhcmVzb2x2ZXJfLmlzU3RhbmRhcmRUeXBlKHR5cGUuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCkpICYmICF2aXNpdGVkXy5jb250YWlucyh0eXBlLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpKSkKLQkJewotCQkJcnVsZXMudmlzaXRDbGFzcyh0eXBlLHBlYW51dFRyYWlsXyk7CQkJCi0JCQl2aXNpdGVkXy5hZGQodHlwZS5nZXRGdWxseVF1YWxpZmllZE5hbWUoKSk7Ci0JCQlwdXNoKHR5cGUpOwotCQkJdHJ5Ci0JCQl7CQotCQkJCUlUeXBlW10gc3VwZXJDbGFzc2VzID0gcmVzb2x2ZXJfLmdldFN1cGVyQ2xhc3Nlcyh0eXBlKTsKLQkJCQlJRmllbGRbXSBmaWVsZHMgPSByZXNvbHZlcl8uZ2V0UHVibGljRmllbGRzKHR5cGUsc3VwZXJDbGFzc2VzKTsKLQkJCQlmb3IgKGludCBmPTA7IGY8ZmllbGRzLmxlbmd0aDsgZisrKQotCQkJCXsKLQkJCQkJYW5hbHl6ZUZpZWxkKGZpZWxkc1tmXSxydWxlcyk7Ci0JCQkJfQotCQkJCUlKYXZhQmVhblByb3BlcnR5W10gcHJvcGVydGllcyA9IHJlc29sdmVyXy5nZXRQdWJsaWNQcm9wZXJ0aWVzKHR5cGUsc3VwZXJDbGFzc2VzKTsKLQkJCQlmb3IgKGludCBwPTA7IHA8cHJvcGVydGllcy5sZW5ndGg7IHArKykKLQkJCQl7Ci0JCQkJCWFuYWx5emVQcm9wZXJ0eShwcm9wZXJ0aWVzW3BdLHJ1bGVzKTsKLQkJCQl9Ci0JCQl9Ci0JCQlmaW5hbGx5Ci0JCQl7Ci0JCQkJcG9wKCk7Ci0JCQl9Ci0JCX0KLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIGFuYWx5emVGaWVsZCAoIElGaWVsZCBmaWVsZCwgSmF2YVdlYlNlcnZpY2VSdWxlU2V0IHJ1bGVzICkKLQl0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JewotCQlpZiAoZmllbGQgIT0gbnVsbCkKLQkJewotCQkJcnVsZXMudmlzaXRGaWVsZChmaWVsZCxwZWFudXRUcmFpbF8pOwotCQkJcHVzaChmaWVsZCk7Ci0JCQl0cnkKLQkJCXsKLQkJCQkvL1RPRE86IEdldCBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgZmllbGQgdHlwZQotCQkJCS8vYW5kIGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIGJ1aWxkIGFuIElUeXBlCi0JCQkJLy9mb3IgaXQgYW5kIGFuYWx5emUgaXQuCi0JCQkJSVR5cGUgdHlwZSA9IHJlc29sdmVyXy5nZXRGaWVsZFR5cGUoZmllbGQpOwotCQkJCWFuYWx5emVEYXRhVHlwZSh0eXBlLHJ1bGVzKTsKLQkJCX0KLQkJCWZpbmFsbHkKLQkJCXsKLQkJCQlwb3AoKTsKLQkJCX0KLQkJfQotCX0KLQkKLQlwcml2YXRlIHZvaWQgYW5hbHl6ZVByb3BlcnR5ICggSUphdmFCZWFuUHJvcGVydHkgcHJvcGVydHksIEphdmFXZWJTZXJ2aWNlUnVsZVNldCBydWxlcyApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJaWYgKHByb3BlcnR5ICE9IG51bGwpCi0JCXsKLQkJCXJ1bGVzLnZpc2l0UHJvcGVydHkocHJvcGVydHkscGVhbnV0VHJhaWxfKTsKLQkJCXB1c2gocHJvcGVydHkpOwotCQkJdHJ5Ci0JCQl7Ci0JCQkJSVR5cGUgdHlwZSA9IHJlc29sdmVyXy5nZXRQcm9wZXJ0eVR5cGUocHJvcGVydHkpOwotCQkJCWFuYWx5emVEYXRhVHlwZSh0eXBlLHJ1bGVzKTsKLQkJCX0KLQkJCWZpbmFsbHkKLQkJCXsKLQkJCQlwb3AoKTsKLQkJCX0KLQkJfQotCX0KLQotCXByaXZhdGUgdm9pZCBhbmFseXplRXhjZXB0aW9uVHlwZSAoIElUeXBlIHR5cGUsIEphdmFXZWJTZXJ2aWNlUnVsZVNldCBydWxlcyApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJaWYgKHR5cGUgIT0gbnVsbCAmJiAhcmVzb2x2ZXJfLmlzU3RhbmRhcmRUeXBlKHR5cGUuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCkpICYmICF2aXNpdGVkXy5jb250YWlucyh0eXBlLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpKSkKLQkJewotCQkJcnVsZXMudmlzaXRFeGNlcHRpb24odHlwZSxwZWFudXRUcmFpbF8pOwotCQkJdmlzaXRlZF8uYWRkKHR5cGUuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCkpOwotCQkJcHVzaCh0eXBlKTsKLQkJCXRyeQotCQkJewotCQkJCS8vIFdlIHRydXN0IGphdmEubGFuZy5FeGNlcHRpb24vVGhyb3dhYmxlIGFzIHN1cGVyY2xhc3NlcwotCQkJCS8vIGZvciBzZXJ2aWNlIHNwZWNpZmljIGV4Y2VwdGlvbiBjbGFzc2VzLCB0aGVyZWZvcmUgd2UgZG8KLQkJCQkvLyBub3QgdHJ5IHRvIGFuYWx5emUgdGhlaXIgcHJvcGVydGllcyAoc29tZSBvZiB3aGljaCB3b3VsZAotCQkJCS8vIG90aGVyd2lzZSB2aW9sYXRlIEpBWC1SUEMncyBydWxlcyBhbnl3YXlzKS4KLQkJCQlJVHlwZVtdIHN1cGVyQ2xhc3NlcyA9IHJlc29sdmVyXy5nZXRTdXBlckNsYXNzZXModHlwZSwiamF2YS5sYW5nLkV4Y2VwdGlvbiIpOwotCQkJCUlKYXZhQmVhblByb3BlcnR5W10gcHJvcGVydGllcyA9IHJlc29sdmVyXy5nZXRQdWJsaWNQcm9wZXJ0aWVzKHR5cGUsc3VwZXJDbGFzc2VzKTsKLQkJCQlmb3IgKGludCBwPTA7IHA8cHJvcGVydGllcy5sZW5ndGg7IHArKykKLQkJCQl7Ci0JCQkJCWFuYWx5emVQcm9wZXJ0eShwcm9wZXJ0aWVzW3BdLHJ1bGVzKTsKLQkJCQl9Ci0JCQl9Ci0JCQlmaW5hbGx5Ci0JCQl7Ci0JCQkJcG9wKCk7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZSNnZXRKRFRSZXNvbHZlcigpCi0JICovCi0JcHVibGljIEpEVFJlc29sdmVyIGdldEpEVFJlc29sdmVyICgpCi0JewotCQlyZXR1cm4gcmVzb2x2ZXJfOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZSNnZXRQcm9ncmVzc01vbml0b3IoKQotCSAqLwotCXB1YmxpYyBJUHJvZ3Jlc3NNb25pdG9yIGdldFByb2dyZXNzTW9uaXRvciAoKQotCXsKLQkJcmV0dXJuIHByb2dyZXNzTW9uaXRvcl87Ci0JfQotCQotCS8qCi0JICogUHVzaGVzIGEgcGVhbnV0IG9udG8gdGhlIHBlYW51dCB0cmFpbC4KLQkgKi8KLQlwcml2YXRlIHZvaWQgcHVzaCAoIE9iamVjdCBwZWFudXQgKQotCXsKLQkJcGVhbnV0VHJhaWxfLnB1c2gocGVhbnV0KTsKLQl9Ci0JCi0JLyoKLQkgKiBQb3BzIGEgcGVhbnV0IG9mZiB0aGUgcGVhbnV0IHRyYWlsLiAKLQkgKi8KLQlwcml2YXRlIHZvaWQgcG9wICgpCi0JewotCQlwZWFudXRUcmFpbF8ucG9wKCk7Ci0JfQotCQotCS8qCi0JICogVGhlIEpEVFJlc29sdmVyIHVzZWQgYnkgdGhpcyBhbmFseXplci4KLQkgKi8KLQlwcml2YXRlIEpEVFJlc29sdmVyIHJlc29sdmVyXzsKLQkKLQkvKgotCSAqIFRoZSBwcm9ncmVzcyBtb25pdG9yIHVzZWQgYnkgdGhpcyBhbmFseXplci4gCi0JICovCi0JcHJpdmF0ZSBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvcl87Ci0JCi0JLyoKLQkgKiBUaGlzIHNldCBrZWVwcyB0cmFjayBvZiB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWVzIG9mCi0JICogY2xhc3NlcyB3ZSBoYXZlIHZpc2l0ZWQgc28gdGhhdCB3ZSBkb24ndCB2aXNpdCB0aGUgc2FtZQotCSAqIHNlcnZpY2UgY2xhc3MsIHZhbHVlIHR5cGUgb3IgZXhjZXB0aW9uIGNsYXNzIG1vcmUgdGhhbiBvbmNlLgotCSAqLwotCXByaXZhdGUgU2V0IHZpc2l0ZWRfOwotCi0JLyoKLQkgKiBUaGlzIHN0YWNrIGtlZXBzIGEgdHJhaWwgb2YgSkRUIG9iamVjdHMgYmFjayB0byB0aGUKLQkgKiBzZXJ2aWNlIGNsYXNzIHdlIGJlZ2FuIHdpdGguIFRoaXMgY2FuIGJlIHVzZWZ1bCB0bwotCSAqIHZpc2l0b3JzIHRoYXQgbmVlZCB0byBpbnNwZWN0IHRoZSBKRFQgZWxlbWVudHMgdGhhdAotCSAqIGVuY2xvc2UgdGhlIGN1cnJlbnRseSB2aXNpdGVkIGVsZW1lbnQuCi0JICovCi0JcHJpdmF0ZSBTdGFjayBwZWFudXRUcmFpbF87Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL0pEVFJlc29sdmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL0pEVFJlc29sdmVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYzU3NDguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9KRFRSZXNvbHZlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxOSAgIDEzMjkwNSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA3MTEgICAxNDk0MTEgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqIDIwMDcwMTAyICAgMTk2MzcxIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5GbGFnczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JRmllbGQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUphdmFFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklKYXZhUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlSGllcmFyY2h5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFNb2RlbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5TaWduYXR1cmU7Ci0KLS8qKgotICogQGF1dGhvciBjYnJlYWxleQotICogQSBKRFRSZXNvbHZlciBwcm92aWRlcyBzZXZlcmFsIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yCi0gKiBuYXZpZ2F0aW5nIHJlZmVyZW5jZXMgYmV0d2VlbiBKYXZhIGNsYXNzZXMsIG1ldGhvZHMsCi0gKiBmaWVsZHMgYW5kIHByb3BlcnRpZXMuIEEgSkRUUmVzb2x2ZXIgaXMgY29uc3RydWN0ZWQKLSAqIGZvciBhIEphdmEgcHJvamVjdCB3aG9zZSBlZmZlY3RpdmUgY2xhc3NwYXRoIHdpbGwKLSAqIGdvdmVybiB0aGUgc2NvcGUgb2Ygc2VhcmNoIG9wZXJhdGlvbnMgcGVyZm9ybWVkIGJ5IHRoZQotICogSkRUUmVzb2x2ZXIgd2hlbmV2ZXIgaXQgbmVlZHMgdG8gY29udmVydCBhIHNpZ25hdHVyZQotICogaW50byBhIEpEVCBJVHlwZSBvYmplY3QuCi0gKi8KLXB1YmxpYyBjbGFzcyBKRFRSZXNvbHZlcgotewotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgSkRUUmVzb2x2ZXIgZm9yIHRoZSBnaXZlbiBwcm9qZWN0LgotCSAqIEBwYXJhbSBwcm9qZWN0IFRoZSBwcm9qZWN0IHByb3ZpZGluZyB0aGUgY29udGV4dAotCSAqIEBwYXJhbSBtb25pdG9yIFRoZSBwcm9ncmVzcyBtb25pdG9yIGZvciB0aGlzIHJlc29sdmVyCi0JICogdG8gdXNlLCBvciBudWxsIGlmIHByb2dyZXNzIG1vbml0b3JpbmcgaXMgbm90IGRlc2lyZWQuCi0JICogd2l0aGluIHdoaWNoIHRoaXMgcmVzb2x2ZXIgd2lsbCBzZWFyY2ggZm9yIGNsYXNzZXMuCi0JICovCi0JcHVibGljIEpEVFJlc29sdmVyICggSVByb2plY3QgcHJvamVjdCwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLQl7Ci0JCWphdmFQcm9qZWN0XyA9IEphdmFDb3JlLmNyZWF0ZShwcm9qZWN0KTsKLQkJbW9uaXRvcl8gPSBtb25pdG9yOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGdpdmVuIEpEVCBJVHlwZSBpcyBhbiBpbnRlcmZhY2UuCi0JICogQHBhcmFtIGpkdFR5cGUgVGhlIHR5cGUgdG8gYW5hbHl6ZS4KLQkgKiBAcmV0dXJuIFRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGdpdmVuIEpEVCBJVHlwZSBpcyBhbiBpbnRlcmZhY2UuCi0JICogQHRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24gSWYgdGhlIEpEVCBtb2RlbCBmYWlscyB0bwotCSAqIGFuYWx5emUgdGhlIGdpdmVuIHR5cGUuCi0JICovCi0JcHVibGljIGJvb2xlYW4gaXNJbnRlcmZhY2UgKCBJVHlwZSBqZHRUeXBlICkKLQl0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JewotCQlyZXR1cm4gamR0VHlwZS5pc0ludGVyZmFjZSgpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGdpdmVuIEpEVCBJVHlwZSBpcyBhbiBhYnN0cmFjdCBjbGFzcy4KLQkgKiBAcGFyYW0gamR0VHlwZSBUaGUgdHlwZSB0byBhbmFseXplLgotCSAqIEByZXR1cm4gVHJ1ZSBpZiBhbmQgb25seSBpZiB0aGUgZ2l2ZW4gSkRUIElUeXBlIGlzIGFuIGFic3RyYWN0IGNsYXNzLgotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uIElmIHRoZSBKRFQgbW9kZWwgZmFpbHMgdG8KLQkgKiBhbmFseXplIHRoZSBnaXZlbiB0eXBlLgotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzQWJzdHJhY3QgKCBJVHlwZSBqZHRUeXBlICkKLQl0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JewotCQlyZXR1cm4gRmxhZ3MuaXNBYnN0cmFjdChqZHRUeXBlLmdldEZsYWdzKCkpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgaW5zdGFuY2VzIG9mIHRoZSBnaXZlbiBKRFQgSVR5cGUKLQkgKiBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBUaGUgY2xhc3MKLQkgKiBtdXN0IGhhdmUgYW4gZXhwbGljaXQgcHVibGljIGRlZmF1bHQgY29uc3RydWN0b3IsIG9yIGhhdmUgbm8KLQkgKiBleHBsaWNpdCBjb25zdHJ1Y3RvcnMgYXQgYWxsIHRvIG1lZXQgdGhpcyBjcml0ZXJpYS4KLQkgKiBAcGFyYW0gamR0VHlwZSBUaGUgdHlwZSB0byBhbmFseXplLgotCSAqIEByZXR1cm4gVHJ1ZSBpZiBhbmQgb25seSBpZiBpbnN0YW5jZXMgb2YgdGhlIHR5cGUgYXJlCi0JICogcHVibGljIGRlZmF1bHQgY29uc3RydWN0YWJsZS4KLQkgKiBAdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbiBJZiB0aGUgSkRUIG1vZGVsIGZhaWxzIHRvCi0JICogYW5hbHl6ZSB0aGUgZ2l2ZW4gdHlwZS4KLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBpc0NvbnN0cnVjdGFibGUgKCBJVHlwZSBqZHRUeXBlICkKLQl0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JewotCQlJTWV0aG9kW10gbWV0aG9kcyA9IGpkdFR5cGUuZ2V0TWV0aG9kcygpOwotCQlpbnQgbnVtYmVyT2ZDb25zdHJ1Y3RvcnMgPSAwOwotCQlmb3IgKGludCBtPTA7IG08bWV0aG9kcy5sZW5ndGg7IG0rKykKLQkJewotCQkJaWYgKG1ldGhvZHNbbV0uaXNDb25zdHJ1Y3RvcigpKQotCQkJewotCQkJCW51bWJlck9mQ29uc3RydWN0b3JzKys7Ci0JCQkJaWYgKG1ldGhvZHNbbV0uZ2V0TnVtYmVyT2ZQYXJhbWV0ZXJzKCkgPT0gMCAmJiBGbGFncy5pc1B1YmxpYyhtZXRob2RzW21dLmdldEZsYWdzKCkpKQotCQkJCXsKLQkJCQkJcmV0dXJuIHRydWU7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiBudW1iZXJPZkNvbnN0cnVjdG9ycyA9PSAwOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGdpdmVuIGZ1bGx5IHF1YWxpZmllZAotCSAqIHR5cGUgbmFtZSBpcyBhIHR5cGUgZnJvbSB0aGUgc3RhbmRhcmQgSkRLLCB0aGF0IGlzLAotCSAqIGlmIHRoZSBnaXZlbiB0eXBlIG5hbWUgYmVsb25ncyB1bmRlciB0aGUgImphdmEiIG9yCi0JICogImphdmF4IiBwYWNrYWdlcy4KLQkgKiBAcGFyYW0gdHlwZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHR5cGUgdG8gY2hlY2suCi0JICogQHJldHVybiBUcnVlIGlmIGFuZCBvbmx5IGlmIHRoZSB0eXBlIGlzIGEgbm9uLXByaW1pdGl2ZSwKLQkgKiBKYXZhIHN0YW5kYXJkIHR5cGUuCi0JICovCi0JcHVibGljIGJvb2xlYW4gaXNTdGFuZGFyZFR5cGUgKCBTdHJpbmcgdHlwZU5hbWUgKQotCXsKLQkJcmV0dXJuIHR5cGVOYW1lLnN0YXJ0c1dpdGgoImphdmEuIikgfHwgdHlwZU5hbWUuc3RhcnRzV2l0aCgiamF2YXguIik7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGUgZ2l2ZW4gdHlwZSBuYW1lIGlzIGEKLQkgKiBKYXZhIHByaW1pdGl2ZSB0eXBlLgotCSAqIEBwYXJhbSB0eXBlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdHlwZSB0byBjaGVjay4KLQkgKiBAcmV0dXJuIFRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIHR5cGUgaXMgYSBKYXZhIHByaW1pdGl2ZSB0eXBlLgotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzUHJpbWl0aXZlVHlwZSAoIFN0cmluZyB0eXBlTmFtZSApCi0JewotCQlmb3IgKGludCBpPTA7IGk8cHJpbWl0aXZlVHlwZXNfLmxlbmd0aDsgaSsrKQotCQl7Ci0JCQlpZiAocHJpbWl0aXZlVHlwZXNfW2ldLmVxdWFscyh0eXBlTmFtZSkpCi0JCQl7Ci0JCQkJcmV0dXJuIHRydWU7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGZhbHNlOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGdpdmVuIGZ1bGx5IHF1YWxpZmllZAotCSAqIHR5cGUgbmFtZSBpcyBhIEphdmEgd3JhcHBlciB0eXBlLgotCSAqIEBwYXJhbSB0eXBlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdHlwZSB0byBjaGVjay4KLQkgKiBAcmV0dXJuIFRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIHR5cGUgaXMgYSBKYXZhIHdyYXBwZXIgdHlwZS4KLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBpc1dyYXBwZXJUeXBlICggU3RyaW5nIHR5cGVOYW1lICkKLQl7Ci0JCWZvciAoaW50IGk9MDsgaTx3cmFwcGVyVHlwZXNfLmxlbmd0aDsgaSsrKQotCQl7Ci0JCQlpZiAod3JhcHBlclR5cGVzX1tpXS5lcXVhbHModHlwZU5hbWUpKQotCQkJewotCQkJCXJldHVybiB0cnVlOwotCQkJfQotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0JCQotCS8qKgotCSAqIFJldHVybnMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGUgZ2l2ZW4gZnVsbHkgcXVhbGlmaWVkCi0JICogdHlwZSBuYW1lIGlzIGEgSmF2YSBwcmltaXRpdmUgb3Igc3RhbmRhcmQgdHlwZSBzdXBwb3J0ZWQKLQkgKiBieSB0aGUgSkFYLVJQQyBzcGVjaWZpY2F0aW9uLgotCSAqIEBwYXJhbSB0eXBlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdHlwZSB0byBjaGVjay4KLQkgKiBAcmV0dXJuIFRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIHR5cGUgaXMgYSBKYXZhIHdyYXBwZXIgdHlwZS4KLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBpc0pBWFJQQ1N0YW5kYXJkVHlwZSAoIFN0cmluZyB0eXBlTmFtZSApCi0JewotCQlmb3IgKGludCBpPTA7IGk8amF4cnBjVHlwZXNfLmxlbmd0aDsgaSsrKQotCQl7Ci0JCQlpZiAoamF4cnBjVHlwZXNfW2ldLmVxdWFscyh0eXBlTmFtZSkpCi0JCQl7Ci0JCQkJcmV0dXJuIHRydWU7Ci0JCQl9Ci0JCX0KLQkJaWYgKGlzV3JhcHBlclR5cGUodHlwZU5hbWUpICYmICEiamF2YS5sYW5nLkNoYXJhY3RlciIuZXF1YWxzKHR5cGVOYW1lKSkKLQkJewotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJaWYgKGlzUHJpbWl0aXZlVHlwZSh0eXBlTmFtZSkgJiYgISJjaGFyIi5lcXVhbHModHlwZU5hbWUpKQotCQl7Ci0JCQlyZXR1cm4gdHJ1ZTsKLQkJfQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHplcm8gb3IgbW9yZSBKRFQgSVR5cGUgb2JqZWN0cwotCSAqIGZvciB0aGUgcHVibGljIGZpZWxkcyBiZWxvbmdpbmcgdG8gdGhlIGdpdmVuIHR5cGUKLQkgKiBAcGFyYW0gamR0VHlwZSBUaGUgdHlwZSB0byBhbmFseXplLgotCSAqIEBwYXJhbSBqZHRTdXBlclR5cGVzIEFueSBzdXBlcnR5cGVzIHRvIGFuYWx5emUsCi0JICogb3IgbnVsbCB0byBhbmFseXplIG9ubHkgdGhlIDxjb2RlPmpkdFR5cGU8L2NvZGU+LgotCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgemVybyBvciBtb3JlIHB1YmxpYyBmaWVsZCB0eXBlcy4KLQkgKiBAdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbiBJZiB0aGUgSkRUIGVuZ2luZSBmYWlscyB0bwotCSAqIGFuYWx5emUgdGhlIGdpdmVuIHR5cGVzIHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LgotCSAqLwotCXB1YmxpYyBJRmllbGRbXSBnZXRQdWJsaWNGaWVsZHMgKCBJVHlwZSBqZHRUeXBlLCBJVHlwZVtdIGpkdFN1cGVyQ2xhc3NlcyApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJTGlzdCBmaWVsZHNMaXN0ID0gbmV3IExpbmtlZExpc3QoKTsKLQkJaGFydmVzdFB1YmxpY0ZpZWxkcyhqZHRUeXBlLGZpZWxkc0xpc3QpOwotCQlpZiAoamR0U3VwZXJDbGFzc2VzICE9IG51bGwpCi0JCXsKLQkJCWZvciAoaW50IHQ9MDsgdDxqZHRTdXBlckNsYXNzZXMubGVuZ3RoOyB0KyspCi0JCQl7Ci0JCQkJaGFydmVzdFB1YmxpY0ZpZWxkcyhqZHRTdXBlckNsYXNzZXNbdF0sZmllbGRzTGlzdCk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIChJRmllbGRbXSlmaWVsZHNMaXN0LnRvQXJyYXkobmV3IElGaWVsZFswXSk7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgYW4gYXJyYXkgb2YgemVybyBvciBtb3JlIEpEVCBJTWV0aG9kIG9iamVjdHMKLQkgKiBmb3IgdGhlIHB1YmxpYyBtZXRob2RzIGJlbG9uZ2luZyB0byB0aGUgZ2l2ZW4gdHlwZS4KLQkgKiBAcGFyYW0gamR0VHlwZSBUaGUgdHlwZSB0byBhbmFseXplLgotCSAqIEBwYXJhbSBqZHRTdXBlclR5cGVzIEFueSBzdXBlcnR5cGVzIHRvIGFuYWx5emUsCi0JICogb3IgbnVsbCB0byBhbmFseXplIG9ubHkgdGhlIDxjb2RlPmpkdFR5cGU8L2NvZGU+LgotCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgemVybyBvciBtb3JlIHB1YmxpYyBtZXRob2RzLgotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uIElmIHRoZSBKRFQgZW5naW5lIGZhaWxzIHRvCi0JICogYW5hbHl6ZSB0aGUgZ2l2ZW4gdHlwZXMgdG8gc2F0aXNmeSB0aGlzIHJlcXVlc3QuCi0JICovCi0JcHVibGljIElNZXRob2RbXSBnZXRQdWJsaWNNZXRob2RzICggSVR5cGUgamR0VHlwZSwgSVR5cGVbXSBqZHRTdXBlckNsYXNzZXMgKQotCXRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24KLQl7Ci0JCUxpc3QgbWV0aG9kc0xpc3QgPSBuZXcgTGlua2VkTGlzdCgpOwotCQloYXJ2ZXN0UHVibGljTWV0aG9kcyhqZHRUeXBlLG1ldGhvZHNMaXN0KTsKLQkJaWYgKGpkdFN1cGVyQ2xhc3NlcyAhPSBudWxsKQotCQl7Ci0JCQlmb3IgKGludCB0PTA7IHQ8amR0U3VwZXJDbGFzc2VzLmxlbmd0aDsgdCsrKQotCQkJewotCQkJCWhhcnZlc3RQdWJsaWNNZXRob2RzKGpkdFN1cGVyQ2xhc3Nlc1t0XSxtZXRob2RzTGlzdCk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIChJTWV0aG9kW10pbWV0aG9kc0xpc3QudG9BcnJheShuZXcgSU1ldGhvZFswXSk7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgYW4gYXJyYXkgb2YgemVybyBvciBtb3JlIEpEVCBJVHlwZSBvYmplY3RzCi0JICogZm9yIHRoZSBwdWJsaWMgcHJvcGVydGllcyAoZ2V0dGVycyBhbmQvb3Igc2V0dGVycykKLQkgKiBiZWxvbmdpbmcgdG8gdGhlIGdpdmVuIHR5cGUuCi0JICogQHBhcmFtIGpkdFR5cGUgVGhlIHR5cGUgdG8gYW5hbHl6ZS4KLQkgKiBAcGFyYW0gamR0U3VwZXJUeXBlcyBBbnkgc3VwZXJ0eXBlcyB0byBhbmFseXplLAotCSAqIG9yIG51bGwgdG8gYW5hbHl6ZSBvbmx5IHRoZSA8Y29kZT5qZHRUeXBlPC9jb2RlPi4KLQkgKiBAcmV0dXJuIEFuIGFycmF5IG9mIHplcm8gb3IgbW9yZSBwdWJsaWMgcHJvcGVydHkgdHlwZXMuCi0JICogQHRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24gSWYgdGhlIEpEVCBlbmdpbmUgZmFpbHMgdG8KLQkgKiBhbmFseXplIHRoZSBnaXZlbiB0eXBlcyB0byBzYXRpc2Z5IHRoaXMgcmVxdWVzdC4KLQkgKi8KLQlwdWJsaWMgSUphdmFCZWFuUHJvcGVydHlbXSBnZXRQdWJsaWNQcm9wZXJ0aWVzICggSVR5cGUgamR0VHlwZSwgSVR5cGVbXSBqZHRTdXBlckNsYXNzZXMgKQotCXRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24KLQl7Ci0JCUlNZXRob2RbXSBtZXRob2RzID0gZ2V0UHVibGljTWV0aG9kcyhqZHRUeXBlLGpkdFN1cGVyQ2xhc3Nlcyk7Ci0JCU1hcCBwcm9wZXJ0aWVzID0gbmV3IEhhc2hNYXAoKTsKLQkJZm9yIChpbnQgbT0wOyBtPG1ldGhvZHMubGVuZ3RoOyBtKyspCi0JCXsKLQkJCVN0cmluZyBuYW1lID0gZ2V0R2V0dGVyTmFtZShtZXRob2RzW21dKTsKLQkJCWlmIChuYW1lICE9IG51bGwpCi0JCQl7Ci0JCQkJSmF2YUJlYW5Qcm9wZXJ0eSBwcm9wZXJ0eSA9IChKYXZhQmVhblByb3BlcnR5KXByb3BlcnRpZXMuZ2V0KG5hbWUpOwotCQkJCWlmIChwcm9wZXJ0eSA9PSBudWxsKQotCQkJCXsKLQkJCQkJcHJvcGVydHkgPSBuZXcgSmF2YUJlYW5Qcm9wZXJ0eSgpOwotCQkJCQlwcm9wZXJ0eS5zZXROYW1lKG5hbWUpOwotCQkJCQlwcm9wZXJ0aWVzLnB1dChuYW1lLHByb3BlcnR5KTsKLQkJCQl9Ci0JCQkJcHJvcGVydHkuc2V0R2V0dGVyKG1ldGhvZHNbbV0pOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCW5hbWUgPSBnZXRTZXR0ZXJOYW1lKG1ldGhvZHNbbV0pOwotCQkJCWlmIChuYW1lICE9IG51bGwpCi0JCQkJewotCQkJCQlKYXZhQmVhblByb3BlcnR5IHByb3BlcnR5ID0gKEphdmFCZWFuUHJvcGVydHkpcHJvcGVydGllcy5nZXQobmFtZSk7Ci0JCQkJCWlmIChwcm9wZXJ0eSA9PSBudWxsKQotCQkJCQl7Ci0JCQkJCQlwcm9wZXJ0eSA9IG5ldyBKYXZhQmVhblByb3BlcnR5KCk7Ci0JCQkJCQlwcm9wZXJ0eS5zZXROYW1lKG5hbWUpOwotCQkJCQkJcHJvcGVydGllcy5wdXQobmFtZSxwcm9wZXJ0eSk7Ci0JCQkJCX0KLQkJCQkJcHJvcGVydHkuc2V0U2V0dGVyKG1ldGhvZHNbbV0pOwotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gKElKYXZhQmVhblByb3BlcnR5W10pcHJvcGVydGllcy52YWx1ZXMoKS50b0FycmF5KG5ldyBKYXZhQmVhblByb3BlcnR5WzBdKTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgSkRUIElUeXBlIG9iamVjdCBmb3IgdGhlIGdpdmVuIGZpZWxkLgotCSAqIEBwYXJhbSBqZHRGaWVsZCBUaGUgZmllbGQgdG8gYW5hbHl6ZS4KLQkgKiBAcmV0dXJuIFRoZSBmaWVsZCB0eXBlLgotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uIElmIHRoZSBKRFQgZW5naW5lIGZhaWxzIHRvCi0JICogYW5hbHl6ZSB0aGUgZ2l2ZW4gZmllbGQgdG8gc2F0aXNmeSB0aGlzIHJlcXVlc3QuCi0JICovCi0JcHVibGljIElUeXBlIGdldEZpZWxkVHlwZSAoIElGaWVsZCBqZHRGaWVsZCApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJSUphdmFFbGVtZW50IGVsZW0gPSBqZHRGaWVsZC5nZXRBbmNlc3RvcihJSmF2YUVsZW1lbnQuVFlQRSk7Ci0JCUlUeXBlIGFuY2VzdG9yID0gZWxlbSBpbnN0YW5jZW9mIElUeXBlID8gKElUeXBlKWVsZW0gOiBudWxsOwotCQlTdHJpbmcgc2lnbmF0dXJlID0gamR0RmllbGQuZ2V0VHlwZVNpZ25hdHVyZSgpOwotCQlTdHJpbmcgdHlwZU5hbWUgPSBnZXRUeXBlTmFtZUZyb21TaWduYXR1cmUoc2lnbmF0dXJlKTsKLQkJcmV0dXJuIGZpbmRUeXBlKHR5cGVOYW1lLGFuY2VzdG9yKTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdHlwZSBuYW1lIGZvciB0aGUgZ2l2ZW4gZmllbGQuCi0JICogQHBhcmFtIGpkdEZpZWxkIFRoZSBmaWVsZCB0byBhbmFseXplLgotCSAqIEByZXR1cm4gVGhlIGZpZWxkIHR5cGUgbmFtZS4KLQkgKiBAdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbiBJZiB0aGUgSkRUIGVuZ2luZSBmYWlscyB0bwotCSAqIGFuYWx5emUgdGhlIGdpdmVuIGZpZWxkIHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LgotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0RmllbGRUeXBlTmFtZSAoIElGaWVsZCBqZHRGaWVsZCApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJSUphdmFFbGVtZW50IGVsZW0gPSBqZHRGaWVsZC5nZXRBbmNlc3RvcihJSmF2YUVsZW1lbnQuVFlQRSk7Ci0JCUlUeXBlIGFuY2VzdG9yID0gZWxlbSBpbnN0YW5jZW9mIElUeXBlID8gKElUeXBlKWVsZW0gOiBudWxsOwotCQlTdHJpbmcgc2lnbmF0dXJlID0gamR0RmllbGQuZ2V0VHlwZVNpZ25hdHVyZSgpOwotCQlTdHJpbmcgdHlwZU5hbWUgPSBnZXRUeXBlTmFtZUZyb21TaWduYXR1cmUoc2lnbmF0dXJlKTsKLQkJcmV0dXJuIHJlc29sdmVUeXBlKHR5cGVOYW1lLGFuY2VzdG9yKTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgSkRUIElUeXBlIG9iamVjdCBmb3IgdGhlIGdpdmVuIGJlYW4gcHJvcGVydHkuCi0JICogQHBhcmFtIGphdmFCZWFuUHJvcGVydHkgVGhlIGJlYW4gcHJvcGVydHkgdG8gYW5hbHl6ZS4KLQkgKiBAcmV0dXJuIFRoZSBwcm9wZXJ0eSB0eXBlLgotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uIElmIHRoZSBKRFQgZW5naW5lIGZhaWxzIHRvCi0JICogYW5hbHl6ZSB0aGUgZ2l2ZW4gYmVhbiBwcm9wZXJ0eSB0byBzYXRpc2Z5IHRoaXMgcmVxdWVzdC4KLQkgKi8KLQlwdWJsaWMgSVR5cGUgZ2V0UHJvcGVydHlUeXBlICggSUphdmFCZWFuUHJvcGVydHkgamF2YUJlYW5Qcm9wZXJ0eSApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJSU1ldGhvZCBtZXRob2QgPSBqYXZhQmVhblByb3BlcnR5LmdldEdldHRlcigpOwotCQlpZiAobWV0aG9kICE9IG51bGwpCi0JCXsKLQkJCXJldHVybiBnZXRSZXR1cm5UeXBlKG1ldGhvZCk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQltZXRob2QgPSBqYXZhQmVhblByb3BlcnR5LmdldFNldHRlcigpOwotCQkJaWYgKG1ldGhvZCAhPSBudWxsKQotCQkJewotCQkJCUlUeXBlW10gcGFyYW1ldGVycyA9IGdldFBhcmFtZXRlclR5cGVzKG1ldGhvZCk7Ci0JCQkJaWYgKHBhcmFtZXRlcnMubGVuZ3RoID4gMCkKLQkJCQl7Ci0JCQkJCS8vCi0JCQkJCS8vIEl0J3MgdGhlIGxhc3QgcGFyYW1ldGVyJ3MgdHlwZSB3ZSB3YW50LAotCQkJCQkvLyBmb3IgaW5kZXhlZCBvciBub24taW5kZXhlZCBzZXR0ZXJzLgotCQkJCQkvLwotCQkJCQlyZXR1cm4gcGFyYW1ldGVyc1twYXJhbWV0ZXJzLmxlbmd0aC0xXTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIHR5cGUgbmFtZSBmb3IgdGhlIGdpdmVuIGJlYW4gcHJvcGVydHkuCi0JICogQHBhcmFtIGphdmFCZWFuUHJvcGVydHkgVGhlIGJlYW4gcHJvcGVydHkgdG8gYW5hbHl6ZS4KLQkgKiBAcmV0dXJuIFRoZSBwcm9wZXJ0eSB0eXBlIG5hbWUuCi0JICogQHRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24gSWYgdGhlIEpEVCBlbmdpbmUgZmFpbHMgdG8KLQkgKiBhbmFseXplIHRoZSBnaXZlbiBiZWFuIHByb3BlcnR5IHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LgotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0UHJvcGVydHlUeXBlTmFtZSAoIElKYXZhQmVhblByb3BlcnR5IGphdmFCZWFuUHJvcGVydHkgKQotCXRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24KLQl7Ci0JCUlNZXRob2QgbWV0aG9kID0gamF2YUJlYW5Qcm9wZXJ0eS5nZXRHZXR0ZXIoKTsKLQkJaWYgKG1ldGhvZCAhPSBudWxsKQotCQl7Ci0JCQlyZXR1cm4gZ2V0UmV0dXJuVHlwZU5hbWUobWV0aG9kKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCW1ldGhvZCA9IGphdmFCZWFuUHJvcGVydHkuZ2V0U2V0dGVyKCk7Ci0JCQlpZiAobWV0aG9kICE9IG51bGwpCi0JCQl7Ci0JCQkJU3RyaW5nW10gcGFyYW1ldGVyVHlwZU5hbWVzID0gZ2V0UGFyYW1ldGVyVHlwZU5hbWVzKG1ldGhvZCk7Ci0JCQkJaWYgKHBhcmFtZXRlclR5cGVOYW1lcy5sZW5ndGggPiAwKQotCQkJCXsKLQkJCQkJcmV0dXJuIHBhcmFtZXRlclR5cGVOYW1lc1swXTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIEpEVCBJVHlwZSBvYmplY3QgZm9yIHRoZSByZXR1cm4gdHlwZQotCSAqIG9mIHRoZSBnaXZlbiBtZXRob2QsIG9yIG51bGwgaWYgdGhlIG1ldGhvZCBpcyB2b2lkLgotCSAqIEBwYXJhbSBqZHRNZXRob2QgVGhlIG1ldGhvZCB0byBhbmFseXplLgotCSAqIEByZXR1cm4gVGhlIG1ldGhvZCByZXR1cm4gdHlwZSwgb3IgbnVsbCBpZiBub25lLgotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uIElmIHRoZSBKRFQgZW5naW5lIGZhaWxzIHRvCi0JICogYW5hbHl6ZSB0aGUgZ2l2ZW4gbWV0aG9kIHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LgotCSAqLwotCXB1YmxpYyBJVHlwZSBnZXRSZXR1cm5UeXBlICggSU1ldGhvZCBqZHRNZXRob2QgKQotCXRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24KLQl7Ci0JCUlKYXZhRWxlbWVudCBlbGVtID0gamR0TWV0aG9kLmdldEFuY2VzdG9yKElKYXZhRWxlbWVudC5UWVBFKTsKLQkJSVR5cGUgYW5jZXN0b3IgPSBlbGVtIGluc3RhbmNlb2YgSVR5cGUgPyAoSVR5cGUpZWxlbSA6IG51bGw7Ci0JCVN0cmluZyBzaWduYXR1cmUgPSBqZHRNZXRob2QuZ2V0UmV0dXJuVHlwZSgpOwotCQlTdHJpbmcgdHlwZU5hbWUgPSBnZXRUeXBlTmFtZUZyb21TaWduYXR1cmUoc2lnbmF0dXJlKTsKLQkJcmV0dXJuIGZpbmRUeXBlKHR5cGVOYW1lLGFuY2VzdG9yKTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdHlwZSBuYW1lIGZvciB0aGUgcmV0dXJuIHR5cGUKLQkgKiBvZiB0aGUgZ2l2ZW4gbWV0aG9kLCBvciBudWxsIGlmIHRoZSBtZXRob2QgaXMgdm9pZC4KLQkgKiBAcGFyYW0gamR0TWV0aG9kIFRoZSBtZXRob2QgdG8gYW5hbHl6ZS4KLQkgKiBAcmV0dXJuIFRoZSBtZXRob2QgcmV0dXJuIHR5cGUgbmFtZSwgb3IgbnVsbCBpZiBub25lLgotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uIElmIHRoZSBKRFQgZW5naW5lIGZhaWxzIHRvCi0JICogYW5hbHl6ZSB0aGUgZ2l2ZW4gbWV0aG9kIHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LgotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0UmV0dXJuVHlwZU5hbWUgKCBJTWV0aG9kIGpkdE1ldGhvZCApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJSUphdmFFbGVtZW50IGVsZW0gPSBqZHRNZXRob2QuZ2V0QW5jZXN0b3IoSUphdmFFbGVtZW50LlRZUEUpOwotCQlJVHlwZSBhbmNlc3RvciA9IGVsZW0gaW5zdGFuY2VvZiBJVHlwZSA/IChJVHlwZSllbGVtIDogbnVsbDsKLQkJU3RyaW5nIHNpZ25hdHVyZSA9IGpkdE1ldGhvZC5nZXRSZXR1cm5UeXBlKCk7Ci0JCVN0cmluZyB0eXBlTmFtZSA9IGdldFR5cGVOYW1lRnJvbVNpZ25hdHVyZShzaWduYXR1cmUpOwotCQlyZXR1cm4gcmVzb2x2ZVR5cGUodHlwZU5hbWUsYW5jZXN0b3IpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHplcm8gb3IgbW9yZSBKRFQgSVR5cGUgb2JqZWN0cwotCSAqIGZvciB0aGUgcGFyYW1ldGVycyBvZiB0aGUgZ2l2ZW4gbWV0aG9kLgotCSAqIEBwYXJhbSBqZHRNZXRob2QgVGhlIG1ldGhvZCB0byBhbmFseXplLgotCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgemVybyBvciBtb3JlIHBhcmFtZXRlciB0eXBlcy4KLQkgKiBAdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbiBJZiB0aGUgSkRUIGVuZ2luZSBmYWlscyB0bwotCSAqIGFuYWx5emUgdGhlIGdpdmVuIG1ldGhvZCB0byBzYXRpc2Z5IHRoaXMgcmVxdWVzdC4KLQkgKi8KLQlwdWJsaWMgSVR5cGVbXSBnZXRQYXJhbWV0ZXJUeXBlcyAoIElNZXRob2QgamR0TWV0aG9kICkKLQl0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JewotCQlJSmF2YUVsZW1lbnQgZWxlbSA9IGpkdE1ldGhvZC5nZXRBbmNlc3RvcihJSmF2YUVsZW1lbnQuVFlQRSk7Ci0JCUlUeXBlIGFuY2VzdG9yID0gZWxlbSBpbnN0YW5jZW9mIElUeXBlID8gKElUeXBlKWVsZW0gOiBudWxsOwotCQlTdHJpbmdbXSBzaWduYXR1cmVzID0gamR0TWV0aG9kLmdldFBhcmFtZXRlclR5cGVzKCk7Ci0JCUlUeXBlW10gdHlwZXMgPSBuZXcgSVR5cGVbc2lnbmF0dXJlcy5sZW5ndGhdOwotCQlmb3IgKGludCBzPTA7IHM8c2lnbmF0dXJlcy5sZW5ndGg7IHMrKykKLQkJewotCQkJU3RyaW5nIHR5cGVOYW1lID0gZ2V0VHlwZU5hbWVGcm9tU2lnbmF0dXJlKHNpZ25hdHVyZXNbc10pOwotCQkJdHlwZXNbc10gPSBmaW5kVHlwZSh0eXBlTmFtZSxhbmNlc3Rvcik7Ci0JCX0KLQkJcmV0dXJuIHR5cGVzOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHplcm8gb3IgbW9yZSB0eXBlIG5hbWVzCi0JICogZm9yIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBnaXZlbiBtZXRob2QuCi0JICogQHBhcmFtIGpkdE1ldGhvZCBUaGUgbWV0aG9kIHRvIGFuYWx5emUuCi0JICogQHJldHVybiBBbiBhcnJheSBvZiB6ZXJvIG9yIG1vcmUgcGFyYW1ldGVyIHR5cGUgbmFtZXMuCi0JICogQHRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24gSWYgdGhlIEpEVCBlbmdpbmUgZmFpbHMgdG8KLQkgKiBhbmFseXplIHRoZSBnaXZlbiBtZXRob2QgdG8gc2F0aXNmeSB0aGlzIHJlcXVlc3QuCi0JICovCi0JcHVibGljIFN0cmluZ1tdIGdldFBhcmFtZXRlclR5cGVOYW1lcyAoIElNZXRob2QgamR0TWV0aG9kICkKLQl0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JewotCQlJSmF2YUVsZW1lbnQgZWxlbSA9IGpkdE1ldGhvZC5nZXRBbmNlc3RvcihJSmF2YUVsZW1lbnQuVFlQRSk7Ci0JCUlUeXBlIGFuY2VzdG9yID0gZWxlbSBpbnN0YW5jZW9mIElUeXBlID8gKElUeXBlKWVsZW0gOiBudWxsOwotCQlTdHJpbmdbXSBzaWduYXR1cmVzID0gamR0TWV0aG9kLmdldFBhcmFtZXRlclR5cGVzKCk7Ci0JCVN0cmluZ1tdIHR5cGVOYW1lcyA9IG5ldyBTdHJpbmdbc2lnbmF0dXJlcy5sZW5ndGhdOwotCQlmb3IgKGludCBzPTA7IHM8c2lnbmF0dXJlcy5sZW5ndGg7IHMrKykKLQkJewotCQkJU3RyaW5nIHR5cGVOYW1lID0gZ2V0VHlwZU5hbWVGcm9tU2lnbmF0dXJlKHNpZ25hdHVyZXNbc10pOwotCQkJdHlwZU5hbWVzW3NdID0gcmVzb2x2ZVR5cGUodHlwZU5hbWUsYW5jZXN0b3IpOwotCQl9Ci0JCXJldHVybiB0eXBlTmFtZXM7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgYW4gYXJyYXkgb2YgemVybyBvciBtb3JlIEpEVCBJVHlwZSBvYmplY3RzCi0JICogZm9yIHRoZSBleGNlcHRpb25zIHRocm93biBieSB0aGUgZ2l2ZW4gbWV0aG9kLgotCSAqIEBwYXJhbSBqZHRNZXRob2QgVGhlIG1ldGhvZCB0byBhbmFseXplLgotCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgemVybyBvciBtb3JlIGV4Y2VwdGlvbiB0eXBlcy4KLQkgKiBAdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbiBJZiB0aGUgSkRUIGVuZ2luZSBmYWlscyB0bwotCSAqIGFuYWx5emUgdGhlIGdpdmVuIG1ldGhvZCB0byBzYXRpc2Z5IHRoaXMgcmVxdWVzdC4KLQkgKi8KLQlwdWJsaWMgSVR5cGVbXSBnZXRFeGNlcHRpb25UeXBlcyAoIElNZXRob2QgamR0TWV0aG9kICkKLQl0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JewotCQlJSmF2YUVsZW1lbnQgZWxlbSA9IGpkdE1ldGhvZC5nZXRBbmNlc3RvcihJSmF2YUVsZW1lbnQuVFlQRSk7Ci0JCUlUeXBlIGFuY2VzdG9yID0gZWxlbSBpbnN0YW5jZW9mIElUeXBlID8gKElUeXBlKWVsZW0gOiBudWxsOwotCQlTdHJpbmdbXSBzaWduYXR1cmVzID0gamR0TWV0aG9kLmdldEV4Y2VwdGlvblR5cGVzKCk7Ci0JCUlUeXBlW10gdHlwZXMgPSBuZXcgSVR5cGVbc2lnbmF0dXJlcy5sZW5ndGhdOwotCQlmb3IgKGludCBzPTA7IHM8c2lnbmF0dXJlcy5sZW5ndGg7IHMrKykKLQkJewotCQkJU3RyaW5nIHR5cGVOYW1lID0gZ2V0VHlwZU5hbWVGcm9tU2lnbmF0dXJlKHNpZ25hdHVyZXNbc10pOwotCQkJdHlwZXNbc10gPSBmaW5kVHlwZSh0eXBlTmFtZSxhbmNlc3Rvcik7Ci0JCX0KLQkJcmV0dXJuIHR5cGVzOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHplcm8gb3IgbW9yZSB0eXBlIG5hbWVzCi0JICogZm9yIHRoZSBleGNlcHRpb25zIHRocm93biBieSB0aGUgZ2l2ZW4gbWV0aG9kLgotCSAqIEBwYXJhbSBqZHRNZXRob2QgVGhlIG1ldGhvZCB0byBhbmFseXplLgotCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgemVybyBvciBtb3JlIGV4Y2VwdGlvbiB0eXBlIG5hbWVzLgotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uIElmIHRoZSBKRFQgZW5naW5lIGZhaWxzIHRvCi0JICogYW5hbHl6ZSB0aGUgZ2l2ZW4gbWV0aG9kIHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LgotCSAqLwotCXB1YmxpYyBTdHJpbmdbXSBnZXRFeGNlcHRpb25UeXBlTmFtZXMgKCBJTWV0aG9kIGpkdE1ldGhvZCApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJSUphdmFFbGVtZW50IGVsZW0gPSBqZHRNZXRob2QuZ2V0QW5jZXN0b3IoSUphdmFFbGVtZW50LlRZUEUpOwotCQlJVHlwZSBhbmNlc3RvciA9IGVsZW0gaW5zdGFuY2VvZiBJVHlwZSA/IChJVHlwZSllbGVtIDogbnVsbDsKLQkJU3RyaW5nW10gc2lnbmF0dXJlcyA9IGpkdE1ldGhvZC5nZXRFeGNlcHRpb25UeXBlcygpOwotCQlTdHJpbmdbXSB0eXBlTmFtZXMgPSBuZXcgU3RyaW5nW3NpZ25hdHVyZXMubGVuZ3RoXTsKLQkJZm9yIChpbnQgcz0wOyBzPHNpZ25hdHVyZXMubGVuZ3RoOyBzKyspCi0JCXsKLQkJCVN0cmluZyB0eXBlTmFtZSA9IGdldFR5cGVOYW1lRnJvbVNpZ25hdHVyZShzaWduYXR1cmVzW3NdKTsKLQkJCXR5cGVOYW1lc1tzXSA9IHJlc29sdmVUeXBlKHR5cGVOYW1lLGFuY2VzdG9yKTsKLQkJfQotCQlyZXR1cm4gdHlwZU5hbWVzOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHplcm8gb3IgbW9yZSB0eXBlcyByZXByZXNlbnRpbmcKLQkgKiB0aGUgc3VwZXJjbGFzc2VzLCBpZiBhbnksIG9mIHRoZSBnaXZlbiBJVHlwZSBpbiBib3R0b20tdXAKLQkgKiBvcmRlciBleGNsdWRpbmcgamF2YS5sYW5nLk9iamVjdC4KLQkgKiBAcGFyYW0gamR0VHlwZSBUaGUgdHlwZSB0byBhbmFseXplLgotCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgemVybyBvciBtb3JlIHN1cGVyY2xhc3MgdHlwZXMuCi0JICogQHRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24gSWYgdGhlIEpEVCBlbmdpbmUgZmFpbHMgdG8KLQkgKiBhbmFseXplIHRoZSBnaXZlbiB0eXBlIHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LgotCSAqLwotCXB1YmxpYyBJVHlwZVtdIGdldFN1cGVyQ2xhc3NlcyAoIElUeXBlIGpkdFR5cGUgKQotCXRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24KLQl7Ci0JCXJldHVybiBnZXRTdXBlckNsYXNzZXMoamR0VHlwZSwiamF2YS5sYW5nLk9iamVjdCIpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHplcm8gb3IgbW9yZSB0eXBlcyByZXByZXNlbnRpbmcKLQkgKiB0aGUgc3VwZXJjbGFzc2VzLCBpZiBhbnksIG9mIHRoZSBnaXZlbiBJVHlwZS4KLQkgKiBVbmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgamF2YS5sYW5nLk9iamVjdCBpcyBpbmNsdWRlZC4KLQkgKiBAcGFyYW0gamR0VHlwZSBUaGUgdHlwZSB0byBhbmFseXplLgotCSAqIEBwYXJhbSBzdG9wQ2xhc3NOYW1lIFRoZSBuYW1lIG9mIGEgc3RvcCBjbGFzcyB1c2VkIHRvIGxpbWl0Ci0JICogdGhlIHN1cGVyY2xhc3NlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiBJZiB0aGUgc3RvcCBjbGFzcwotCSAqIGlzIG51bGwgb3IgbmFtZXMgYSBjbGFzcyBub3QgZm91bmQgaW4gdGhlIGhpZXJhcmNoeSwgYWxsCi0JICogc3VwZXJjbGFzc2VzIGFyZSByZXR1cm5lZC4gT3RoZXJ3aXNlLCBvbmx5IHN1cGVyY2xhc3NlcyB1cAotCSAqIHRvIGJ1dCBleGNsdWRpbmcgdGhlIHN0b3AgY2xhc3MgYXJlIHJldHVybmVkLgotCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgemVybyBvciBtb3JlIHN1cGVyY2xhc3MgdHlwZXMuCi0JICogQHRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24gSWYgdGhlIEpEVCBlbmdpbmUgZmFpbHMgdG8KLQkgKiBhbmFseXplIHRoZSBnaXZlbiB0eXBlIHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LgotCSAqLwotCXB1YmxpYyBJVHlwZVtdIGdldFN1cGVyQ2xhc3NlcyAoIElUeXBlIGpkdFR5cGUsIFN0cmluZyBzdG9wQ2xhc3NOYW1lICkKLQl0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uCi0JewotCQlJVHlwZUhpZXJhcmNoeSBoaWVyYXJjaHkgPSBqZHRUeXBlLm5ld1N1cGVydHlwZUhpZXJhcmNoeShtb25pdG9yXyk7Ci0JCUlUeXBlW10gYWxsU3VwZXJDbGFzc2VzID0gaGllcmFyY2h5LmdldEFsbFN1cGVyY2xhc3NlcyhqZHRUeXBlKTsKLQkJTGlzdCBzdXBlckNsYXNzZXMgPSBuZXcgTGlua2VkTGlzdCgpOwotCQlmb3IgKGludCBpPTA7IGk8YWxsU3VwZXJDbGFzc2VzLmxlbmd0aDsgaSsrKQotCQl7Ci0JCQlpZiAoYWxsU3VwZXJDbGFzc2VzW2ldLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpLmVxdWFscyhzdG9wQ2xhc3NOYW1lKSkKLQkJCQlicmVhazsKLQkJCXN1cGVyQ2xhc3Nlcy5hZGQoYWxsU3VwZXJDbGFzc2VzW2ldKTsKLQkJfQotCQlyZXR1cm4gKElUeXBlW10pc3VwZXJDbGFzc2VzLnRvQXJyYXkobmV3IElUeXBlWzBdKTsKLQl9Ci0JCi0JLyoqCi0JICogRXh0cmFjdHMgdGhlIHF1YWxpZmllZCB0eXBlIG5hbWUgZnJvbSBhIEpEVCBzaWduYXR1cmUuCi0JICogQHBhcmFtIHNpZ25hdHVyZSBUaGUgc2lnbmF0dXJlIHRvIGV4YW1pbmUuCi0JICogQHJldHVybiBUaGUgcXVhbGlmaWVkIHR5cGUgbmFtZSBmcm9tIHRoZSBzaWduYXR1cmUuCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRUeXBlTmFtZUZyb21TaWduYXR1cmUgKCBTdHJpbmcgc2lnbmF0dXJlICkKLQl7Ci0KLQkJU3RyaW5nIHBhY2thZ2VOYW1lID0gU2lnbmF0dXJlLmdldFNpZ25hdHVyZVF1YWxpZmllcihzaWduYXR1cmUpOwotCQlTdHJpbmcgYmFzZU5hbWUgPSBTaWduYXR1cmUuZ2V0U2lnbmF0dXJlU2ltcGxlTmFtZShzaWduYXR1cmUpOwotCQlpZiAoYmFzZU5hbWUuZW5kc1dpdGgoIltdIikpewotCQkJYmFzZU5hbWUgPSBiYXNlTmFtZS5zdWJzdHJpbmcoMCwgYmFzZU5hbWUuaW5kZXhPZigiWyIpKTsKLQkJfQotCQkJCi0JCVN0cmluZyB0eXBlTmFtZSA9IChwYWNrYWdlTmFtZS50cmltKCkuZXF1YWxzKCIiKT8iIjpwYWNrYWdlTmFtZSsiLiIpICsgYmFzZU5hbWU7Ci0JCXJldHVybiB0eXBlTmFtZTsKLQl9Ci0JCi0JLyoqCi0JICogQXR0ZW1wdHMgdG8gcmVzb2x2ZSBhbiB1bnJlc29sdmVkIHR5cGUgbmFtZSBpbiB0aGUKLQkgKiBjb250ZXh0IG9mIHRoZSBnaXZlbiBhbmNlc3RvciB0eXBlIChpZS4gdGhlIHR5cGUKLQkgKiBhY3RpbmcgYXMgdGhlIGNvbnRleHQgd2l0aGluIHdoaWNoIHRoZSB0eXBlIG5hbWUKLQkgKiBzaG91bGQgYmUgcmVzb2x2ZWQpLgotCSAqIEBwYXJhbSB0eXBlTmFtZSBUaGUgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIHR5cGUgdG8gZmluZC4KLQkgKiBAcGFyYW0gYW5jZXN0b3IgVGhlIHR5cGUgcHJvdmlkaW5nIHRoZSBjb250ZXh0IHdpdGhpbgotCSAqIHdoaWNoIHRvIGxvb2sgdXAgdGhlIHR5cGUuCi0JICogQHJldHVybiBUaGUgcXVhbGlmaWVkIG5hbWUsIG9yIHRoZSBvcmlnaW5hbCB0eXBlIG5hbWUKLQkgKiBpZiBpdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQuCi0JICovCi0JcHVibGljIFN0cmluZyByZXNvbHZlVHlwZSAoIFN0cmluZyB0eXBlTmFtZSwgSVR5cGUgYW5jZXN0b3IgKQotCXRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24KLQl7Ci0JCWlmIChhbmNlc3RvciAhPSBudWxsKQotCQl7Ci0JCQlTdHJpbmdbXVtdIG1hdGNoZXMgPSBhbmNlc3Rvci5yZXNvbHZlVHlwZSh0eXBlTmFtZSk7Ci0JCQlpZiAobWF0Y2hlcyAhPSBudWxsICYmIG1hdGNoZXMubGVuZ3RoID4gMCkKLQkJCXsKLQkJCQlTdHJpbmdCdWZmZXIgcW5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0JCQkJaW50IG4gPSBtYXRjaGVzWzBdLmxlbmd0aDsKLQkJCQlmb3IgKGludCBqPTA7IGo8bi0xOyBqKyspCi0JCQkJewotCQkJCQlxbmFtZS5hcHBlbmQobWF0Y2hlc1swXVtqXSkuYXBwZW5kKCIuIik7Ci0JCQkJfQotCQkJCWlmIChuID49IDApCi0JCQkJewotCQkJCQlxbmFtZS5hcHBlbmQobWF0Y2hlc1swXVtuLTFdKTsKLQkJCQl9Ci0JCQkJcmV0dXJuIHFuYW1lLnRvU3RyaW5nKCk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIHR5cGVOYW1lOwotCX0KLQotCS8qKgotCSAqIEF0dGVtcHRzIHRvIGZpbmQgYSBKRFQgSVR5cGUgb2JqZWN0IGZvciB0aGUgZ2l2ZW4KLQkgKiByZXNvbHZlZCBvciB1bnJlc29sdmVkIHR5cGUgbmFtZSBpbiB0aGUgY29udGV4dCBvZgotCSAqIHRoZSBnaXZlbiBhbmNlc3RvciB0eXBlIChpZS4gdGhlIHR5cGUgYWN0aW5nIGFzIHRoZQotCSAqIGNvbnRleHQgd2l0aGluIHdoaWNoIHRoZSB0eXBlIG5hbWUgc2hvdWxkIGJlIHJlc29sdmVkKS4KLQkgKiBAcGFyYW0gdHlwZU5hbWUgVGhlIHF1YWxpZmllZCBuYW1lIG9mIHRoZSB0eXBlIHRvIGZpbmQuCi0JICogQHBhcmFtIGFuY2VzdG9yIFRoZSB0eXBlIHByb3ZpZGluZyB0aGUgY29udGV4dCB3aXRoaW4KLQkgKiB3aGljaCB0byBsb29rIHVwIHRoZSB0eXBlLgotCSAqIEByZXR1cm4gVGhlIElUeXBlIG9iamVjdCBvZiB0aGUgZ2l2ZW4gcXVhbGlmaWVkIG5hbWUsCi0JICogb3IgbnVsbCBpZiBubyB0eXBlIGNvdWxkIGJlIGZvdW5kIGluIHRoZSB3b3Jrc3BhY2UuCi0JICovCi0JcHVibGljIElUeXBlIGZpbmRUeXBlICggU3RyaW5nIHR5cGVOYW1lLCBJVHlwZSBhbmNlc3RvciApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJSVR5cGUgdHlwZSA9IGphdmFQcm9qZWN0Xy5maW5kVHlwZSh0eXBlTmFtZSk7Ci0JCWlmICh0eXBlID09IG51bGwgJiYgYW5jZXN0b3IgIT0gbnVsbCkKLQkJewotCQkJU3RyaW5nW11bXSBtYXRjaGVzID0gYW5jZXN0b3IucmVzb2x2ZVR5cGUodHlwZU5hbWUpOwotCQkJaWYgKG1hdGNoZXMgIT0gbnVsbCkKLQkJCXsKLQkJCQlpbnQgaT0wOwotCQkJCXdoaWxlICh0eXBlID09IG51bGwgJiYgaTxtYXRjaGVzLmxlbmd0aCkKLQkJCQl7Ci0JCQkJCVN0cmluZ0J1ZmZlciBxbmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLQkJCQkJaW50IG4gPSBtYXRjaGVzW2ldLmxlbmd0aDsKLQkJCQkJZm9yIChpbnQgaj0wOyBqPG4tMTsgaisrKQotCQkJCQl7Ci0JCQkJCQlxbmFtZS5hcHBlbmQobWF0Y2hlc1tpXVtqXSkuYXBwZW5kKCIuIik7Ci0JCQkJCX0KLQkJCQkJaWYgKG4gPj0gMCkKLQkJCQkJewotCQkJCQkJcW5hbWUuYXBwZW5kKG1hdGNoZXNbaV1bbi0xXSk7Ci0JCQkJCX0KLQkJCQkJdHlwZSA9IGphdmFQcm9qZWN0Xy5maW5kVHlwZShxbmFtZS50b1N0cmluZygpKTsKLQkJCQkJaSsrOwotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gdHlwZTsKLQl9Ci0KLQkvKioKLQkgKiBGaW5kcyBhbGwgcHVibGljLCBub24tY29uc3RydWN0b3IgSU1ldGhvZHMgYmVsb25naW5nCi0JICogdG8gdGhlIGdpdmVuIElUeXBlIGFuZCBhZGRzIHRoZW0gdG8gdGhlIGdpdmVuIGxpc3QuCi0JICogQHBhcmFtIGpkdFR5cGUgVGhlIHR5cGUgd2hvc2UgbWV0aG9kcyBhcmUgdG8gYmUgaGFydmVzdGVkLgotCSAqIEBwYXJhbSBsaXN0IFRoZSBsaXN0IHRvIHdoaWNoIHRoZSBoYXJ2ZXN0ZWQgbWV0aG9kcyB3aWxsIGJlIGFkZGVkLgotCSAqIEB0aHJvd3MgSmF2YU1vZGVsRXhjZXB0aW9uIElmIHRoZSBKRFQgZW5naW5lIGZhaWxzIHRvCi0JICogYW5hbHl6ZSB0aGUgZ2l2ZW4gdHlwZSB0byBzYXRpc2Z5IHRoaXMgcmVxdWVzdC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBoYXJ2ZXN0UHVibGljTWV0aG9kcyAoIElUeXBlIGpkdFR5cGUsIExpc3QgbGlzdCApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJSU1ldGhvZFtdIG1ldGhvZHMgPSBqZHRUeXBlLmdldE1ldGhvZHMoKTsKLQkJZm9yIChpbnQgbT0wOyBtPG1ldGhvZHMubGVuZ3RoOyBtKyspCi0JCXsKLQkJCWlmICghbWV0aG9kc1ttXS5pc0NvbnN0cnVjdG9yKCkgJiYgRmxhZ3MuaXNQdWJsaWMobWV0aG9kc1ttXS5nZXRGbGFncygpKSkKLQkJCXsKLQkJCQlsaXN0LmFkZChtZXRob2RzW21dKTsKLQkJCX0KLQkJfQotCX0KLQkKLQkvKioKLQkgKiBGaW5kcyBhbGwgcHVibGljIElGaWVsZHMgYmVsb25naW5nCi0JICogdG8gdGhlIGdpdmVuIElUeXBlIGFuZCBhZGRzIHRoZW0gdG8gdGhlIGdpdmVuIGxpc3QuCi0JICogQHBhcmFtIGpkdFR5cGUgVGhlIHR5cGUgd2hvc2UgZmllbGRzIGFyZSB0byBiZSBoYXJ2ZXN0ZWQuCi0JICogQHBhcmFtIGxpc3QgVGhlIGxpc3QgdG8gd2hpY2ggdGhlIGhhcnZlc3RlZCBmaWVsZHMgd2lsbCBiZSBhZGRlZC4KLQkgKiBAdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbiBJZiB0aGUgSkRUIGVuZ2luZSBmYWlscyB0bwotCSAqIGFuYWx5emUgdGhlIGdpdmVuIHR5cGUgdG8gc2F0aXNmeSB0aGlzIHJlcXVlc3QuCi0JICovCi0JcHVibGljIHZvaWQgaGFydmVzdFB1YmxpY0ZpZWxkcyAoIElUeXBlIGpkdFR5cGUsIExpc3QgbGlzdCApCi0JdGhyb3dzIEphdmFNb2RlbEV4Y2VwdGlvbgotCXsKLQkJSUZpZWxkW10gZmllbGRzID0gamR0VHlwZS5nZXRGaWVsZHMoKTsKLQkJZm9yIChpbnQgZj0wOyBmPGZpZWxkcy5sZW5ndGg7IGYrKykKLQkJewotCQkJaWYgKEZsYWdzLmlzUHVibGljKGZpZWxkc1tmXS5nZXRGbGFncygpKSkKLQkJCXsKLQkJCQlsaXN0LmFkZChmaWVsZHNbZl0pOwotCQkJfQotCQl9Ci0JfQotCQotCS8qKgotCSAqIElmIHRoZSBnaXZlbiBtZXRob2QgaXMgYSBnZXR0ZXIgYWNjb3JkaW5nIHRvIHRoZSBCZWFuIHNwZWMKLQkgKiAoZWcuICJNeVR5cGUgZ2V0TXlQcm9wZXJ0eSAoKSIgb3IgImJvb2xlYW4gaXNNeVByb3BlcnR5ICgpIikKLQkgKiByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgYmVhbiBwcm9wZXJ0eSBuYW1lIChlZy4gIm15UHJvcGVydHkiKSwKLQkgKiBvdGhlcndpc2UsIHJldHVybiBudWxsLgotCSAqIEBwYXJhbSBtZXRob2QgVGhlIG1ldGhvZCB0byBjaGVjay4KLQkgKiBAcmV0dXJuIFRoZSBwcm9wZXJ0eSBuYW1lIG9yIG5vbmUgaWYgdGhlIG1ldGhvZCBpcyBub3QgYSBnZXR0ZXIuCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRHZXR0ZXJOYW1lICggSU1ldGhvZCBtZXRob2QgKQotCXsKLQkJdHJ5Ci0JCXsKLQkJCVN0cmluZyBtZXRob2ROYW1lID0gbWV0aG9kLmdldEVsZW1lbnROYW1lKCk7Ci0JCQlpZiAobWV0aG9kTmFtZS5zdGFydHNXaXRoKCJnZXQiKSAmJiBtZXRob2ROYW1lLmxlbmd0aCgpID4gMykKLQkJCXsKLQkJCQlTdHJpbmcgc2lnbmF0dXJlID0gbWV0aG9kLmdldFNpZ25hdHVyZSgpOwotCQkJCVN0cmluZyByZXR1cm5UeXBlTmFtZSA9IFNpZ25hdHVyZS5nZXRSZXR1cm5UeXBlKHNpZ25hdHVyZSk7Ci0JCQkJLy8KLQkJCQkvLyBHZXR0ZXJzIG11c3Qgbm90IGJlIHZvaWQuCi0JCQkJLy8KLQkJCQlpZiAocmV0dXJuVHlwZU5hbWUgIT0gbnVsbCAmJiByZXR1cm5UeXBlTmFtZSAhPSBTaWduYXR1cmUuU0lHX1ZPSUQpCi0JCQkJewotCQkJCQlTdHJpbmdbXSBwYXJhbWV0ZXJTaWduYXR1cmVzID0gbWV0aG9kLmdldFBhcmFtZXRlclR5cGVzKCk7Ci0JCQkJCS8vCi0JCQkJCS8vIE5vbi1pbmRleGVkIGdldHRlcnMgbXVzdCBoYXZlIHplcm8gcGFyYW1ldGVycy4KLQkJCQkJLy8KLQkJCQkJaWYgKHBhcmFtZXRlclNpZ25hdHVyZXMubGVuZ3RoID09IDApCi0JCQkJCXsKLQkJCQkJCXJldHVybiBtZXRob2ROYW1lLnN1YnN0cmluZygzLDQpLnRvTG93ZXJDYXNlKCkgKyBtZXRob2ROYW1lLnN1YnN0cmluZyg0KTsKLQkJCQkJfQotCQkJCQkvLwotCQkJCQkvLyBJbmRleGVkIGdldHRlcnMgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlciBvZiB0eXBlICJpbnQiLgotCQkJCQkvLwotCQkJCQllbHNlIGlmIChwYXJhbWV0ZXJTaWduYXR1cmVzLmxlbmd0aCA9PSAxKQotCQkJCQl7Ci0JCQkJCQlTdHJpbmcgaW5kZXhUeXBlTmFtZSA9IGdldFR5cGVOYW1lRnJvbVNpZ25hdHVyZShwYXJhbWV0ZXJTaWduYXR1cmVzWzBdKTsKLQkJCQkJCWlmIChpbmRleFR5cGVOYW1lLmVxdWFscygiaW50IikpCi0JCQkJCQl7Ci0JCQkJCQkJcmV0dXJuIG1ldGhvZE5hbWUuc3Vic3RyaW5nKDMsNCkudG9Mb3dlckNhc2UoKSArIG1ldGhvZE5hbWUuc3Vic3RyaW5nKDQpOwotCQkJCQkJfQotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQkJZWxzZSBpZiAobWV0aG9kTmFtZS5zdGFydHNXaXRoKCJpcyIpICYmIG1ldGhvZE5hbWUubGVuZ3RoKCkgPiAyKQotCQkJewotCQkJCVN0cmluZyBzaWduYXR1cmUgPSBtZXRob2QuZ2V0U2lnbmF0dXJlKCk7Ci0JCQkJU3RyaW5nIHJldHVyblR5cGVOYW1lID0gU2lnbmF0dXJlLmdldFJldHVyblR5cGUoc2lnbmF0dXJlKTsKLQkJCQkvLwotCQkJCS8vICJpcyIgZ2V0dGVycyBtdXN0IGJlIGJvb2xlYW4uCi0JCQkJLy8KLQkJCQlpZiAoU2lnbmF0dXJlLlNJR19CT09MRUFOLmVxdWFscyhyZXR1cm5UeXBlTmFtZSkpCi0JCQkJewotCQkJCQkvLwotCQkJCQkvLyAiaXMiIGdldHRlcnMgbXVzdCBoYXZlIG5vIHBhcmFtZXRlcnMuCi0JCQkJCS8vCi0JCQkJCWlmIChtZXRob2QuZ2V0UGFyYW1ldGVyVHlwZXMoKS5sZW5ndGggPT0gMCkKLQkJCQkJewotCQkJCQkJcmV0dXJuIG1ldGhvZE5hbWUuc3Vic3RyaW5nKDIsMykudG9Mb3dlckNhc2UoKSArIG1ldGhvZE5hbWUuc3Vic3RyaW5nKDMpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkKLQkJewotCQkJcmV0dXJuIG51bGw7Ci0JCX0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCQotCS8qKgotCSAqIElmIHRoZSBnaXZlbiBtZXRob2QgaXMgYSBzZXR0ZXIgYWNjb3JkaW5nIHRvIHRoZSBCZWFuIHNwZWMKLQkgKiAoZWcuICJ2b2lkIHNldE15UHJvcGVydHkgKE15VHlwZSkiIHJldHVybiB0aGUgY29ycmVzcG9uZGluZwotCSAqIGJlYW4gcHJvcGVydHkgbmFtZSAoZWcuICJteVByb3BlcnR5IiksIG90aGVyd2lzZSwgcmV0dXJuIG51bGwuCi0JICogQHBhcmFtIG1ldGhvZCBUaGUgbWV0aG9kIHRvIGNoZWNrLgotCSAqIEByZXR1cm4gVGhlIHByb3BlcnR5IG5hbWUgb3Igbm9uZSBpZiB0aGUgbWV0aG9kIGlzIG5vdCBhIHNldHRlci4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFNldHRlck5hbWUgKCBJTWV0aG9kIG1ldGhvZCApCi0JewotCQl0cnkKLQkJewotCQkJU3RyaW5nIG1ldGhvZE5hbWUgPSBtZXRob2QuZ2V0RWxlbWVudE5hbWUoKTsKLQkJCWlmIChtZXRob2ROYW1lLnN0YXJ0c1dpdGgoInNldCIpICYmIG1ldGhvZE5hbWUubGVuZ3RoKCkgPiAzKQotCQkJewotCQkJCVN0cmluZyBzaWduYXR1cmUgPSBtZXRob2QuZ2V0U2lnbmF0dXJlKCk7Ci0JCQkJU3RyaW5nIHJldHVyblR5cGVOYW1lID0gU2lnbmF0dXJlLmdldFJldHVyblR5cGUoc2lnbmF0dXJlKTsKLQkJCQkvLwotCQkJCS8vIFNldHRlcnMgbXVzdCBiZSB2b2lkLgotCQkJCS8vCi0JCQkJaWYgKFNpZ25hdHVyZS5TSUdfVk9JRC5lcXVhbHMocmV0dXJuVHlwZU5hbWUpKQotCQkJCXsKLQkJCQkJU3RyaW5nW10gcGFyYW1ldGVyU2lnbmF0dXJlcyA9IG1ldGhvZC5nZXRQYXJhbWV0ZXJUeXBlcygpOwotCQkJCQkvLwotCQkJCQkvLyBOb24taW5kZXhlZCBzZXR0ZXJzIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBwYXJhbWV0ZXIuCi0JCQkJCS8vCi0JCQkJCWlmIChwYXJhbWV0ZXJTaWduYXR1cmVzLmxlbmd0aCA9PSAxKQotCQkJCQl7Ci0JCQkJCQlyZXR1cm4gbWV0aG9kTmFtZS5zdWJzdHJpbmcoMyw0KS50b0xvd2VyQ2FzZSgpICsgbWV0aG9kTmFtZS5zdWJzdHJpbmcoNCk7Ci0JCQkJCX0KLQkJCQkJLy8KLQkJCQkJLy8gSW5kZXhlZCBzZXR0ZXJzIG11c3QgaGF2ZSBleGFjdGx5IHR3byBwYXJhbWV0ZXJzLAotCQkJCQkvLyB0aGUgZmlyc3Qgb2Ygd2hpY2ggbXVzdCBiZSAiaW50Ii4KLQkJCQkJLy8KLQkJCQkJZWxzZSBpZiAocGFyYW1ldGVyU2lnbmF0dXJlcy5sZW5ndGggPT0gMikKLQkJCQkJewotCQkJCQkJaWYgKFNpZ25hdHVyZS5TSUdfSU5ULmVxdWFscyhwYXJhbWV0ZXJTaWduYXR1cmVzWzBdKSkKLQkJCQkJCXsKLQkJCQkJCQlyZXR1cm4gbWV0aG9kTmFtZS5zdWJzdHJpbmcoMyw0KS50b0xvd2VyQ2FzZSgpICsgbWV0aG9kTmFtZS5zdWJzdHJpbmcoNCk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJY2F0Y2ggKEphdmFNb2RlbEV4Y2VwdGlvbiBlKQotCQl7Ci0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0JCi0JLyoKLQkgKiBUaGUgSmF2YSBwcm9qZWN0IHRoYXQgZ292ZXJucyB0aGUgc2VhcmNoIHNjb3BlIGZvciB0aGlzIHJlc29sdmVyLgotCSAqLwotCXByaXZhdGUgSUphdmFQcm9qZWN0IGphdmFQcm9qZWN0XzsKLQkKLQkvKgotCSAqIFRoZSBwcm9ncmVzcyBtb25pdG9yIHRvIHVzZSwgaWYgYW55LiAKLQkgKi8KLQlwcml2YXRlIElQcm9ncmVzc01vbml0b3IgbW9uaXRvcl87Ci0JCi0JLyoKLQkgKiBUaGUgc2V0IG9mIEphdmEgd3JhcHBlciB0eXBlcy4KLQkgKi8KLQlwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSB3cmFwcGVyVHlwZXNfID0gewotCQkiamF2YS5sYW5nLkNoYXJhY3RlciIsCi0JCSJqYXZhLmxhbmcuQm9vbGVhbiIsCi0JCSJqYXZhLmxhbmcuQnl0ZSIsCi0JCSJqYXZhLmxhbmcuU2hvcnQiLAotCQkiamF2YS5sYW5nLkludGVnZXIiLAotCQkiamF2YS5sYW5nLkxvbmciLAotCQkiamF2YS5sYW5nLkZsb2F0IiwKLQkJImphdmEubGFuZy5Eb3VibGUiCi0JfTsKLQotCS8qCi0JICogVGhlIHNldCBvZiBKYXZhIHByaW1pdGl2ZSB0eXBlcy4KLQkgKi8KLQlwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSBwcmltaXRpdmVUeXBlc18gPSB7Ci0JCSJjaGFyIiwKLQkJImJvb2xlYW4iLAotCQkiYnl0ZSIsCi0JCSJzaG9ydCIsCi0JCSJpbnQiLAotCQkibG9uZyIsCi0JCSJmbG9hdCIsCi0JCSJkb3VibGUiCi0JfTsKLQotCS8qCi0JICogVGhlIHNldCBvZiBKQVgtUlBDIHN1cHBvcnRlZCBKYXZhIHN0YW5kYXJkIHR5cGVzLAotCSAqIGV4Y2x1ZGluZyBwcmltaXRpdmVzIGFuZCB3cmFwcGVyIHR5cGVzLgotCSAqLwotCXByaXZhdGUgc3RhdGljIFN0cmluZ1tdIGpheHJwY1R5cGVzXyA9IHsKLQkJImJvb2xlYW4iLAotCQkiYnl0ZSIsCi0JCSJzaG9ydCIsCi0JCSJpbnQiLAotCQkibG9uZyIsCi0JCSJmbG9hdCIsCi0JCSJkb3VibGUiLAotCQkiamF2YS5sYW5nLlN0cmluZyIsCi0JCSJqYXZhLmxhbmcuQm9vbGVhbiIsCi0JCSJqYXZhLmxhbmcuQnl0ZSIsCi0JCSJqYXZhLmxhbmcuU2hvcnQiLAotCQkiamF2YS5sYW5nLkludGVnZXIiLAotCQkiamF2YS5sYW5nLkxvbmciLAotCQkiamF2YS5sYW5nLkZsb2F0IiwKLQkJImphdmEubGFuZy5Eb3VibGUiLAotCQkiamF2YS51dGlsLkRhdGUiLAotCQkiamF2YS51dGlsLkNhbGVuZGFyIiwKLQkJImphdmEubWF0aC5CaWdJbnRlZ2VyIiwKLQkJImphdmEubWF0aC5CaWdEZWNpbWFsIiwKLQkJImphdmEubmV0LlVSSSIsCi0JCSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgotCX07Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL0phdmFCZWFuUHJvcGVydHkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSmF2YUJlYW5Qcm9wZXJ0eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjlkNTUyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSmF2YUJlYW5Qcm9wZXJ0eS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxOSAgIDEzMjkwNSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleSAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotCi0vKioKLSAqIEBhdXRob3IgY2JyZWFsZXkKLSAqIFRoaXMgaXMgYSBnYXJkZW4gdmFyaWV0eSBpbXBsZW1lbnRhdGlvbiBvZiBJSmF2YUJlYW5Qcm9wZXJ0eSwKLSAqIGNvbnN0cnVjdGFibGUgYnkgZGVmYXVsdCBhbmQgZXF1aXBwZWQgd2l0aCBnZXR0ZXJzIGFuZCBzZXR0ZXJzCi0gKiBmb3IgdGhlIHByb3BlcnRpZXMgb2YgSUphdmFCZWFuUHJvcGVydHkuCi0gKi8KLXB1YmxpYyBjbGFzcyBKYXZhQmVhblByb3BlcnR5IGltcGxlbWVudHMgSUphdmFCZWFuUHJvcGVydHkKLXsKLQlwcml2YXRlIFN0cmluZyBuYW1lXzsKLQlwcml2YXRlIGJvb2xlYW4gaW5kZXhlZF87Ci0JcHJpdmF0ZSBJTWV0aG9kIGdldHRlcl87Ci0JcHJpdmF0ZSBJTWV0aG9kIHNldHRlcl87Ci0JcHJpdmF0ZSBJTWV0aG9kIGluZGV4ZWRHZXR0ZXJfOwotCXByaXZhdGUgSU1ldGhvZCBpbmRleGVkU2V0dGVyXzsKLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFCZWFuUHJvcGVydHkjZ2V0TmFtZSgpCi0JICovCi0JcHVibGljIFN0cmluZyBnZXROYW1lICgpCi0JewotCQlyZXR1cm4gbmFtZV87Ci0JfQotCQotCS8qKgotCSAqIFNldHMgdGhlICJuYW1lIiBwcm9wZXJ0eSBvZiB0aGlzIEphdmEgQmVhbiBQcm9wZXJ0eSBkZXNjcmlwdG9yLgotCSAqIEBwYXJhbSBuYW1lIFRoZSBzdHJpbmcgdmFsdWUgdG8gc2V0LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldE5hbWUgKCBTdHJpbmcgbmFtZSApCi0JewotCQluYW1lXyA9IG5hbWU7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YUJlYW5Qcm9wZXJ0eSNpc0luZGV4ZWQoKQotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzSW5kZXhlZCAoKQotCXsKLQkJcmV0dXJuIGluZGV4ZWRfOwotCX0KLQkKLQkvKioKLQkgKiBTZXRzIHRoZSAiaW5kZXhlZCIgcHJvcGVydHkgb2YgdGhpcyBKYXZhIEJlYW4gUHJvcGVydHkgZGVzY3JpcHRvci4KLQkgKiBAcGFyYW0gaW5kZXhlZCBUaGUgYm9vbGVhbiB2YWx1ZSB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0SW5kZXhlZCAoIGJvb2xlYW4gaW5kZXhlZCApCi0JewotCQlpbmRleGVkXyA9IGluZGV4ZWQ7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YUJlYW5Qcm9wZXJ0eSNnZXRHZXR0ZXIoKQotCSAqLwotCXB1YmxpYyBJTWV0aG9kIGdldEdldHRlciAoKQotCXsKLQkJcmV0dXJuIGdldHRlcl87Ci0JfQotCQotCS8qKgotCSAqIFNldHMgdGhlICJnZXR0ZXIiIHByb3BlcnR5IG9mIHRoaXMgSmF2YSBCZWFuIFByb3BlcnR5IGRlc2NyaXB0b3IuCi0JICogQHBhcmFtIGdldHRlciBUaGUgSU1ldGhvZCB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0R2V0dGVyICggSU1ldGhvZCBnZXR0ZXIgKQotCXsKLQkJZ2V0dGVyXyA9IGdldHRlcjsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLklKYXZhQmVhblByb3BlcnR5I2dldFNldHRlcigpCi0JICovCi0JcHVibGljIElNZXRob2QgZ2V0U2V0dGVyICgpCi0JewotCQlyZXR1cm4gc2V0dGVyXzsKLQl9Ci0JCi0JLyoqCi0JICogU2V0cyB0aGUgInNldHRlciIgcHJvcGVydHkgb2YgdGhpcyBKYXZhIEJlYW4gUHJvcGVydHkgZGVzY3JpcHRvci4KLQkgKiBAcGFyYW0gc2V0dGVyIFRoZSBJTWV0aG9kIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTZXR0ZXIgKCBJTWV0aG9kIHNldHRlciApCi0JewotCQlzZXR0ZXJfID0gc2V0dGVyOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFCZWFuUHJvcGVydHkjZ2V0SW5kZXhlZEdldHRlcigpCi0JICovCi0JcHVibGljIElNZXRob2QgZ2V0SW5kZXhlZEdldHRlciAoKQotCXsKLQkJcmV0dXJuIGluZGV4ZWRHZXR0ZXJfOwotCX0KLQkKLQkvKioKLQkgKiBTZXRzIHRoZSAiaW5kZXhlZEdldHRlciIgcHJvcGVydHkgb2YgdGhpcyBKYXZhIEJlYW4gUHJvcGVydHkgZGVzY3JpcHRvci4KLQkgKiBAcGFyYW0gaW5kZXhlZEdldHRlciBUaGUgSU1ldGhvZCB0byBzZXQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0SW5kZXhlZEdldHRlciAoIElNZXRob2QgaW5kZXhlZEdldHRlciApCi0JewotCQlpbmRleGVkR2V0dGVyXyA9IGluZGV4ZWRHZXR0ZXI7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YUJlYW5Qcm9wZXJ0eSNnZXRJbmRleGVkU2V0dGVyKCkKLQkgKi8KLQlwdWJsaWMgSU1ldGhvZCBnZXRJbmRleGVkU2V0dGVyICgpCi0JewotCQlyZXR1cm4gaW5kZXhlZFNldHRlcl87Ci0JfQotCQotCS8qKgotCSAqIFNldHMgdGhlICJpbmRleGVkU2V0dGVyIiBwcm9wZXJ0eSBvZiB0aGlzIEphdmEgQmVhbiBQcm9wZXJ0eSBkZXNjcmlwdG9yLgotCSAqIEBwYXJhbSBpbmRleGVkU2V0dGVyIFRoZSBJTWV0aG9kIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRJbmRleGVkU2V0dGVyICggSU1ldGhvZCBpbmRleGVkU2V0dGVyICkKLQl7Ci0JCWluZGV4ZWRTZXR0ZXJfID0gaW5kZXhlZFNldHRlcjsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFCZWFuUHJvcGVydHkjZ2V0RGVjbGFyaW5nVHlwZSgpCi0JICovCi0JcHVibGljIElUeXBlIGdldERlY2xhcmluZ1R5cGUgKCkKLQl7Ci0JCUlNZXRob2QgbWV0aG9kID0gZ2V0R2V0dGVyKCk7Ci0JCWlmIChtZXRob2QgPT0gbnVsbCkgbWV0aG9kID0gZ2V0U2V0dGVyKCk7Ci0JCWlmIChtZXRob2QgPT0gbnVsbCkgbWV0aG9kID0gZ2V0SW5kZXhlZEdldHRlcigpOwotCQlpZiAobWV0aG9kID09IG51bGwpIG1ldGhvZCA9IGdldEluZGV4ZWRTZXR0ZXIoKTsKLQkJcmV0dXJuIG1ldGhvZCAhPSBudWxsID8gbWV0aG9kLmdldERlY2xhcmluZ1R5cGUoKSA6IG51bGw7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9KYXZhV2ViU2VydmljZVJ1bGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSmF2YVdlYlNlcnZpY2VSdWxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZmZhMzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9KYXZhV2ViU2VydmljZVJ1bGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MTkgICAxMzI5MDUgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkgICAgICAgICAgCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5TdGFjazsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5NdWx0aVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklGaWVsZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotCi0vKioKLSAqIEEgYmFzaWMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBJSmF2YVdlYlNlcnZpY2VSdWxlLgotICovCi1wdWJsaWMgY2xhc3MgSmF2YVdlYlNlcnZpY2VSdWxlIGltcGxlbWVudHMgSUphdmFXZWJTZXJ2aWNlUnVsZQotewotCXByb3RlY3RlZCBJSmF2YVdlYlNlcnZpY2VSdWxlRW5naW5lIGVuZ2luZV87Ci0JcHJvdGVjdGVkIExpc3Qgc3RhdHVzTGlzdF87Ci0JcHJvdGVjdGVkIGludCBpZF87Ci0JcHJvdGVjdGVkIFN0cmluZyBuYW1lc3BhY2VfOwotCXByb3RlY3RlZCBTdHJpbmcgbmFtZV87Ci0JcHJvdGVjdGVkIFN0cmluZyBkZXNjcmlwdGlvbl87Ci0JCi0JcHJvdGVjdGVkIEphdmFXZWJTZXJ2aWNlUnVsZSAoKQotCXsKLQkJLy8gTm90IHB1YmxpY2x5IGNvbnN0cnVjdGFibGUuCi0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YVdlYlNlcnZpY2VSdWxlI2dldElkKCkKLQkgKi8KLQlwdWJsaWMgaW50IGdldElkICgpCi0JewotCQlyZXR1cm4gaWRfOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZSNnZXROYW1lc3BhY2UoKQotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZXNwYWNlICgpCi0JewotCQlyZXR1cm4gbmFtZXNwYWNlXzsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLklKYXZhV2ViU2VydmljZVJ1bGUjZ2V0TmFtZSgpCi0JICovCi0JcHVibGljIFN0cmluZyBnZXROYW1lICgpCi0JewotCQlyZXR1cm4gbmFtZV87Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YVdlYlNlcnZpY2VSdWxlI2dldERlc2NyaXB0aW9uKCkKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uICgpCi0JewotCQlyZXR1cm4gZGVzY3JpcHRpb25fOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZSNpbml0KCkKLQkgKi8KLQlwdWJsaWMgdm9pZCBpbml0ICggSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZSBlbmdpbmUgKQotCXsKLQkJZW5naW5lXyA9IGVuZ2luZTsKLQkJc3RhdHVzTGlzdF8gPSBuZXcgTGlua2VkTGlzdCgpOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZSN2aXNpdENsYXNzKG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlLCBqYXZhLnV0aWwuU3RhY2spCi0JICovCi0JcHVibGljIHZvaWQgdmlzaXRDbGFzcyAoIElUeXBlIGpkdENsYXNzLCBTdGFjayBwZWFudXRUcmFpbCApCi0JewotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZSN2aXNpdEV4Y2VwdGlvbihvcmcuZWNsaXBzZS5qZHQuY29yZS5JRmllbGQsIGphdmEudXRpbC5TdGFjaykKLQkgKi8KLQlwdWJsaWMgdm9pZCB2aXNpdEV4Y2VwdGlvbiAoIElUeXBlIGpkdENsYXNzLCBTdGFjayBwZWFudXRUcmFpbCApCi0JewotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZSN2aXNpdEZpZWxkKG9yZy5lY2xpcHNlLmpkdC5jb3JlLklGaWVsZCwgamF2YS51dGlsLlN0YWNrKQotCSAqLwotCXB1YmxpYyB2b2lkIHZpc2l0RmllbGQgKCBJRmllbGQgamR0RmllbGQsIFN0YWNrIHBlYW51dFRyYWlsICkKLQl7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YVdlYlNlcnZpY2VSdWxlI3Zpc2l0UHJvcGVydHkob3JnLmVjbGlwc2UuamR0LmNvcmUuSU1ldGhvZCwgb3JnLmVjbGlwc2UuamR0LmNvcmUuSU1ldGhvZCwgamF2YS51dGlsLlN0YWNrKQotCSAqLwotCXB1YmxpYyB2b2lkIHZpc2l0UHJvcGVydHkgKCBJSmF2YUJlYW5Qcm9wZXJ0eSBiZWFuUHJvcGVydHksIFN0YWNrIHBlYW51dFRyYWlsICkKLQl7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YVdlYlNlcnZpY2VSdWxlI3Zpc2l0TWV0aG9kKG9yZy5lY2xpcHNlLmpkdC5jb3JlLklNZXRob2QsIGphdmEudXRpbC5TdGFjaykKLQkgKi8KLQlwdWJsaWMgdm9pZCB2aXNpdE1ldGhvZCAoIElNZXRob2QgamR0TWV0aG9kLCBTdGFjayBwZWFudXRUcmFpbCApCi0JewotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZSNnZXRSZXN1bHRzKCkKLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBnZXRSZXN1bHRzICgpCi0JewotCQlJU3RhdHVzIHN0YXR1cyA9IG51bGw7Ci0JCWlmIChzdGF0dXNMaXN0Xy5zaXplKCkgPT0gMCkKLQkJewotCQkJc3RhdHVzID0gbmV3IFN0YXR1cyhJU3RhdHVzLk9LLCJvcmcuZWNsaXBzZS5qc3Qud3MiLDAsIiIsbnVsbCk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlNdWx0aVN0YXR1cyBtdWx0aVN0YXR1cyA9IG5ldyBNdWx0aVN0YXR1cygib3JnLmVjbGlwc2UuanN0LndzIiwwLCIiLG51bGwpOwotCQkJSXRlcmF0b3IgaSA9IHN0YXR1c0xpc3RfLml0ZXJhdG9yKCk7Ci0JCQl3aGlsZSAoaS5oYXNOZXh0KCkpCi0JCQl7Ci0JCQkJbXVsdGlTdGF0dXMuYWRkKChJU3RhdHVzKWkubmV4dCgpKTsKLQkJCX0KLQkJCXN0YXR1cyA9IG11bHRpU3RhdHVzOwotCQl9Ci0JCXJldHVybiBzdGF0dXM7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9KYXZhV2ViU2VydmljZVJ1bGVTZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvSmF2YVdlYlNlcnZpY2VSdWxlU2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ODc3MTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9KYXZhV2ViU2VydmljZVJ1bGVTZXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MTkgICAxMzI5MDUgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkgICAgICAgICAgCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZhLnV0aWwuU3RhY2s7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTXVsdGlTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JRmllbGQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSU1ldGhvZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JVHlwZTsKLQotLyoqCi0gKiBAYXV0aG9yIGNicmVhbGV5Ci0gKiBUaGlzIG9iamVjdCBtYW5hZ2VzIGEgc2V0IG9mIHJ1bGVzLgotICogUnVsZXMgaW4gdGhlIHNldCBtYXkgYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4KLSAqLwotcHVibGljIGNsYXNzIEphdmFXZWJTZXJ2aWNlUnVsZVNldAotewotCXByaXZhdGUgU2V0IGVuYWJsZWRSdWxlc18gPSBuZXcgSGFzaFNldCgpOwotCXByaXZhdGUgU2V0IGRpc2FibGVkUnVsZXNfID0gbmV3IEhhc2hTZXQoKTsKLQkKLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3LCBpbml0aWFsbHkgZW1wdHkgc2V0IG9mIHJ1bGVzLgotCSAqLwotCXB1YmxpYyBKYXZhV2ViU2VydmljZVJ1bGVTZXQgKCkKLQl7Ci0JCS8vIE5vdGhpbmcgdG8gZG8uCi0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBzZXQgb2YgcnVsZXMgaW5pdGlhbGl6ZWQgd2l0aCB0aG9zZQotCSAqIGZyb20gdGhlIGdpdmVuIGFycmF5IG9mIDxjb2RlPnJ1bGVzPC9jb2RlPi4KLQkgKiBAcGFyYW0gcnVsZXMgQW4gYXJyYXkgb2YgcnVsZXMgdG8gYWRkLgotCSAqLwotCXB1YmxpYyBKYXZhV2ViU2VydmljZVJ1bGVTZXQgKCBJSmF2YVdlYlNlcnZpY2VSdWxlW10gcnVsZXMgKQotCXsKLQkJYWRkUnVsZXMocnVsZXMpOwotCX0KLQkKLQkvKioKLQkgKiBBZGRzIGEgPGNvZGU+cnVsZTwvY29kZT4gdG8gdGhlIHNldC4KLQkgKiBSdWxlcyBhZGRlZCB0byB0aGUgc2V0IGFyZSBpbml0aWFsbHkgZW5hYmxlZC4KLQkgKiBAcGFyYW0gcnVsZSBUaGUgcnVsZSB0byBhZGQuCi0JICovCi0JcHVibGljIHZvaWQgYWRkUnVsZSAoIElKYXZhV2ViU2VydmljZVJ1bGUgcnVsZSApCi0JewotCQllbmFibGVkUnVsZXNfLmFkZChydWxlKTsKLQl9Ci0JCi0JLyoqCi0JICogQWRkcyBzZXZlcmFsIDxjb2RlPnJ1bGVzPC9jb2RlPiB0byB0aGUgc2V0LgotCSAqIFJ1bGVzIGFkZGVkIHRvIHRoZSBzZXQgYXJlIGluaXRpYWxseSBlbmFibGVkLgotCSAqIEBwYXJhbSBydWxlcyBUaGUgYXJyYXkgb2YgcnVsZXMgdG8gYWRkLgotCSAqLwotCXB1YmxpYyB2b2lkIGFkZFJ1bGVzICggSUphdmFXZWJTZXJ2aWNlUnVsZVtdIHJ1bGVzICkKLQl7Ci0JCWVuYWJsZWRSdWxlc18uYWRkQWxsKEFycmF5cy5hc0xpc3QocnVsZXMpKTsKLQl9Ci0JCi0JLyoqCi0JICogTWFya3MgdGhlIGdpdmVuIDxjb2RlPnJ1bGU8L2NvZGU+IGFzIGRpc2FibGVkIG9yIGVuYWJsZWQuCi0JICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgcnVsZSBpcyBub3QgYWxyZWFkeSBpbgotCSAqIHRoZSBzZXQsIGluIG90aGVyIHdvcmRzLCB0aGlzIG1ldGhvZCB3aWxsIG5vdCBoYXZlIHRoZQotCSAqIHNpZGUgZWZmZWN0IG9mIGFkZGluZyBhIHJ1bGUgdG8gdGhlIHNldC4KLQkgKiBAcGFyYW0gcnVsZSBUaGUgcnVsZSB0byBkaXNhYmxlIG9yIGVuYWJsZS4KLQkgKiBAcGFyYW0gZGlzYWJsZWQgVHJ1ZSB0byBkaXNhYmxlIHRoZSBydWxlIG9yIGZhbHNlIHRvIGVuYWJsZSBpdC4KLQkgKiBAcmV0dXJuIFRydWUgaWYgYSBjaGFuZ2UgaW4gc3RhdHVzIHdhcyBhY3R1YWxseSBtYWRlLgotCSAqLwotCXB1YmxpYyBib29sZWFuIHNldFJ1bGVEaXNhYmxlZCAoIElKYXZhV2ViU2VydmljZVJ1bGUgcnVsZSwgYm9vbGVhbiBkaXNhYmxlZCApCi0JewotCQlpZiAoZGlzYWJsZWQpCi0JCXsKLQkJCWlmIChlbmFibGVkUnVsZXNfLnJlbW92ZShydWxlKSkKLQkJCXsKLQkJCQlkaXNhYmxlZFJ1bGVzXy5hZGQocnVsZSk7Ci0JCQkJcmV0dXJuIHRydWU7Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlpZiAoZGlzYWJsZWRSdWxlc18ucmVtb3ZlKHJ1bGUpKQotCQkJewotCQkJCWVuYWJsZWRSdWxlc18uYWRkKHJ1bGUpOwotCQkJCXJldHVybiB0cnVlOwotCQkJfQotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcnVsZXMgaW4gdGhlIHNldC4KLQkgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgcnVsZXMgaW4gdGhlIHNldC4KLQkgKi8KLQlwdWJsaWMgaW50IHNpemUgKCkKLQl7Ci0JCXJldHVybiBlbmFibGVkUnVsZXNfLnNpemUoKSArIGRpc2FibGVkUnVsZXNfLnNpemUoKTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVuYWJsZWQgcnVsZXMgaW4gdGhlIHNldC4KLQkgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgZW5hYmxlZCBydWxlcyBpbiB0aGUgc2V0LgotCSAqLwotCXB1YmxpYyBpbnQgbnVtYmVyRW5hYmxlZCAoKQotCXsKLQkJcmV0dXJuIGVuYWJsZWRSdWxlc18uc2l6ZSgpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgcnVsZXMgaW4gdGhlIHNldC4KLQkgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgZGlzYWJsZWQgcnVsZXMgaW4gdGhlIHNldC4KLQkgKi8KLQlwdWJsaWMgaW50IG51bWJlckRpc2FibGVkICgpCi0JewotCQlyZXR1cm4gZGlzYWJsZWRSdWxlc18uc2l6ZSgpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBjdXJyZW50bHkgZW5hYmxlZCBydWxlcyBmcm9tIHRoZSBzZXQuCi0JICogQHJldHVybiBBbiBhcnJheSBvZiBhbGwgY3VycmVudGx5IGVuYWJsZWQgcnVsZXMgZnJvbSB0aGUgc2V0LgotCSAqLwotCXB1YmxpYyBJSmF2YVdlYlNlcnZpY2VSdWxlW10gZ2V0RW5hYmxlZFJ1bGVzICgpCi0JewotCQlyZXR1cm4gKElKYXZhV2ViU2VydmljZVJ1bGVbXSllbmFibGVkUnVsZXNfLnRvQXJyYXkobmV3IElKYXZhV2ViU2VydmljZVJ1bGVbMF0pOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBjdXJyZW50bHkgZGlzYWJsZWQgcnVsZXMgZnJvbSB0aGUgc2V0LgotCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgYWxsIGN1cnJlbnRseSBkaXNhYmxlZCBydWxlcyBmcm9tIHRoZSBzZXQuCi0JICovCi0JcHVibGljIElKYXZhV2ViU2VydmljZVJ1bGVbXSBnZXREaXNhYmxlZFJ1bGVzICgpCi0JewotCQlyZXR1cm4gKElKYXZhV2ViU2VydmljZVJ1bGVbXSlkaXNhYmxlZFJ1bGVzXy50b0FycmF5KG5ldyBJSmF2YVdlYlNlcnZpY2VSdWxlWzBdKTsKLQl9Ci0JCi0JLyoqCi0JICogSW5pdGlhbGl6ZXMgYWxsIHJ1bGVzIGluIHRoZSBzZXQgYnkgY2FsbGluZwotCSAqIHRoZWlyIGluaXQoKSBtZXRob2RzIHdpdGggdGhlIGdpdmVuIGVuZ2luZS4KLQkgKiBAcGFyYW0gZW5naW5lIFRoZSBlbmdpbmUgaW5pdGlhbGl6aW5nIAotCSAqLwotCXB1YmxpYyB2b2lkIGluaXQgKCBJSmF2YVdlYlNlcnZpY2VSdWxlRW5naW5lIGVuZ2luZSApCi0JewotCQlJdGVyYXRvciBpID0gZW5hYmxlZFJ1bGVzXy5pdGVyYXRvcigpOwotCQl3aGlsZSAoaS5oYXNOZXh0KCkpCi0JCXsKLQkJCUlKYXZhV2ViU2VydmljZVJ1bGUgcnVsZSA9IChJSmF2YVdlYlNlcnZpY2VSdWxlKWkubmV4dCgpOwotCQkJcnVsZS5pbml0KGVuZ2luZSk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBWaXNpdHMgdGhlICJ2aXNpdENsYXNzIiBtZXRob2Qgb2YgYWxsIHJ1bGVzIGluIHRoZSBzZXQuIAotCSAqIEBwYXJhbSBqZHRDbGFzcyBUaGUgSkRUIElUeXBlIGJlaW5nIHZpc2l0ZWQuCi0JICogQHBhcmFtIHBlYW51dFRyYWlsIFRoZSBzdGFjayBvZiBvYmplY3RzIHVwIHRvIHRoZSByb290LgotCSAqLwotCXB1YmxpYyB2b2lkIHZpc2l0Q2xhc3MgKCBJVHlwZSBqZHRDbGFzcywgU3RhY2sgcGVhbnV0VHJhaWwgKQotCXsKLQkJSXRlcmF0b3IgaSA9IGVuYWJsZWRSdWxlc18uaXRlcmF0b3IoKTsKLQkJd2hpbGUgKGkuaGFzTmV4dCgpKQotCQl7Ci0JCQlJSmF2YVdlYlNlcnZpY2VSdWxlIHJ1bGUgPSAoSUphdmFXZWJTZXJ2aWNlUnVsZSlpLm5leHQoKTsKLQkJCXJ1bGUudmlzaXRDbGFzcyhqZHRDbGFzcyxwZWFudXRUcmFpbCk7Ci0JCX0JCQotCX0KLQotCS8qKgotCSAqIFZpc2l0cyB0aGUgInZpc2l0RXhjZXB0aW9uIiBtZXRob2Qgb2YgYWxsIHJ1bGVzIGluIHRoZSBzZXQuIAotCSAqIEBwYXJhbSBqZHRDbGFzcyBUaGUgSkRUIElUeXBlIGJlaW5nIHZpc2l0ZWQuCi0JICogQHBhcmFtIHBlYW51dFRyYWlsIFRoZSBzdGFjayBvZiBvYmplY3RzIHVwIHRvIHRoZSByb290LgotCSAqLwotCXB1YmxpYyB2b2lkIHZpc2l0RXhjZXB0aW9uICggSVR5cGUgamR0Q2xhc3MsIFN0YWNrIHBlYW51dFRyYWlsICkKLQl7Ci0JCUl0ZXJhdG9yIGkgPSBlbmFibGVkUnVsZXNfLml0ZXJhdG9yKCk7Ci0JCXdoaWxlIChpLmhhc05leHQoKSkKLQkJewotCQkJSUphdmFXZWJTZXJ2aWNlUnVsZSBydWxlID0gKElKYXZhV2ViU2VydmljZVJ1bGUpaS5uZXh0KCk7Ci0JCQlydWxlLnZpc2l0RXhjZXB0aW9uKGpkdENsYXNzLHBlYW51dFRyYWlsKTsKLQkJfQotCX0KLQotCi0JLyoqCi0JICogVmlzaXRzIHRoZSAidmlzaXRGaWVsZCIgbWV0aG9kIG9mIGFsbCBydWxlcyBpbiB0aGUgc2V0LiAKLQkgKiBAcGFyYW0gamR0Q2xhc3MgVGhlIEpEVCBJRmllbGQgYmVpbmcgdmlzaXRlZC4KLQkgKiBAcGFyYW0gcGVhbnV0VHJhaWwgVGhlIHN0YWNrIG9mIG9iamVjdHMgdXAgdG8gdGhlIHJvb3QuCi0JICovCi0JcHVibGljIHZvaWQgdmlzaXRGaWVsZCAoIElGaWVsZCBqZHRGaWVsZCwgU3RhY2sgcGVhbnV0VHJhaWwgKQotCXsKLQkJSXRlcmF0b3IgaSA9IGVuYWJsZWRSdWxlc18uaXRlcmF0b3IoKTsKLQkJd2hpbGUgKGkuaGFzTmV4dCgpKQotCQl7Ci0JCQlJSmF2YVdlYlNlcnZpY2VSdWxlIHJ1bGUgPSAoSUphdmFXZWJTZXJ2aWNlUnVsZSlpLm5leHQoKTsKLQkJCXJ1bGUudmlzaXRGaWVsZChqZHRGaWVsZCxwZWFudXRUcmFpbCk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBWaXNpdHMgdGhlICJ2aXNpdFByb3BlcnR5IiBtZXRob2Qgb2YgYWxsIHJ1bGVzIGluIHRoZSBzZXQuIAotCSAqIEBwYXJhbSBqZHRDbGFzcyBUaGUgSUphdmFCZWFuUHJvcGVydHkgYmVpbmcgdmlzaXRlZC4KLQkgKiBAcGFyYW0gcGVhbnV0VHJhaWwgVGhlIHN0YWNrIG9mIG9iamVjdHMgdXAgdG8gdGhlIHJvb3QuCi0JICovCi0JcHVibGljIHZvaWQgdmlzaXRQcm9wZXJ0eSAoIElKYXZhQmVhblByb3BlcnR5IGJlYW5Qcm9wZXJ0eSwgU3RhY2sgcGVhbnV0VHJhaWwgKQotCXsKLQkJSXRlcmF0b3IgaSA9IGVuYWJsZWRSdWxlc18uaXRlcmF0b3IoKTsKLQkJd2hpbGUgKGkuaGFzTmV4dCgpKQotCQl7Ci0JCQlJSmF2YVdlYlNlcnZpY2VSdWxlIHJ1bGUgPSAoSUphdmFXZWJTZXJ2aWNlUnVsZSlpLm5leHQoKTsKLQkJCXJ1bGUudmlzaXRQcm9wZXJ0eShiZWFuUHJvcGVydHkscGVhbnV0VHJhaWwpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogVmlzaXRzIHRoZSAidmlzaXRNZXRob2QiIG1ldGhvZCBvZiBhbGwgcnVsZXMgaW4gdGhlIHNldC4gCi0JICogQHBhcmFtIGpkdENsYXNzIFRoZSBKRFQgSU1ldGhvZCBiZWluZyB2aXNpdGVkLgotCSAqIEBwYXJhbSBwZWFudXRUcmFpbCBUaGUgc3RhY2sgb2Ygb2JqZWN0cyB1cCB0byB0aGUgcm9vdC4KLQkgKi8KLQlwdWJsaWMgdm9pZCB2aXNpdE1ldGhvZCAoIElNZXRob2QgamR0TWV0aG9kLCBTdGFjayBwZWFudXRUcmFpbCApCi0JewotCQlJdGVyYXRvciBpID0gZW5hYmxlZFJ1bGVzXy5pdGVyYXRvcigpOwotCQl3aGlsZSAoaS5oYXNOZXh0KCkpCi0JCXsKLQkJCUlKYXZhV2ViU2VydmljZVJ1bGUgcnVsZSA9IChJSmF2YVdlYlNlcnZpY2VSdWxlKWkubmV4dCgpOwotCQkJcnVsZS52aXNpdE1ldGhvZChqZHRNZXRob2QscGVhbnV0VHJhaWwpOwotCQl9Ci0JfQotCQotCS8qKgotCSAqIENvbGxlY3RzIHRoZSByZXN1bHRzIG9mIGFsbCBydWxlcyBpbiB0aGUgc2V0IHRvZ2V0aGVyLgotCSAqIElmIG9uZSBvciBtb3JlIHdhcm5pbmdzIG9yIGVycm9ycyBhcmUgZm91bmQsIHJldHVybnMKLQkgKiBhIHN0YXR1cyBvYmplY3Qgd2hvc2UgdG9wIGxldmVsIG1lc3NhZ2UgaXMgdGhlIHJvb3QKLQkgKiBtZXNzYWdlIHBhc3NlZCB0byB0aGlzIG1lc3NhZ2UsIG90aGVyd2lzZSwgcmV0dXJucyBhCi0JICogYmFzaWMgIk9LIiBzdGF0dXMuCi0JICogQHBhcmFtIHJvb3RNZXNzYWdlIFRoZSB3YXJuaW5nL2Vycm9yIG1lc3NhZ2UgdG8gYWN0IGFzCi0JICogdGhlIHJvb3QgbWVzc2FnZSBpZiBuZWNlc3NhcnkgKGllLiBpZiBhdCBsZWFzdCBvbmUgcnVsZQotCSAqIGluIHRoZSBzZXQgcmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHdhcm5pbmcvZXJyb3IpLgotCSAqIEByZXR1cm4gVGhlIGNvbGxlY3RpdmUgc3RhdHVzLgotCSAqLwotCXB1YmxpYyBJU3RhdHVzIGdldFJlc3VsdHMgKCBTdHJpbmcgcm9vdE1lc3NhZ2UgKQotCXsKLQkJTGlzdCBsaXN0ID0gbmV3IExpbmtlZExpc3QoKTsKLQkJSXRlcmF0b3IgZSA9IGVuYWJsZWRSdWxlc18uaXRlcmF0b3IoKTsKLQkJd2hpbGUgKGUuaGFzTmV4dCgpKQotCQl7Ci0JCQlJSmF2YVdlYlNlcnZpY2VSdWxlIHJ1bGUgPSAoSUphdmFXZWJTZXJ2aWNlUnVsZSllLm5leHQoKTsKLQkJCUlTdGF0dXMgc3RhdHVzID0gcnVsZS5nZXRSZXN1bHRzKCk7Ci0JCQlpZiAoIXN0YXR1cy5pc09LKCkpCi0JCQl7Ci0JCQkJbGlzdC5hZGQoc3RhdHVzKTsKLQkJCX0KLQkJfQotCQlpZiAobGlzdC5zaXplKCkgPiAwKQotCQl7Ci0JCQlNdWx0aVN0YXR1cyBtdWx0aVN0YXR1cyA9IG5ldyBNdWx0aVN0YXR1cygib3JnLmVjbGlwc2UuanN0LndzIiwwLHJvb3RNZXNzYWdlLG51bGwpOwotCQkJSXRlcmF0b3IgbCA9IGxpc3QuaXRlcmF0b3IoKTsKLQkJCXdoaWxlIChsLmhhc05leHQoKSkKLQkJCXsKLQkJCQlJU3RhdHVzIHN0YXR1cyA9IChJU3RhdHVzKWwubmV4dCgpOwotCQkJCW11bHRpU3RhdHVzLmFkZEFsbChzdGF0dXMpOwotCQkJfQotCQkJcmV0dXJuIG11bHRpU3RhdHVzOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJcmV0dXJuIG5ldyBTdGF0dXMoSVN0YXR1cy5PSywib3JnLmVjbGlwc2UuanN0LndzIiwwLCIiLG51bGwpOwotCQl9Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9ydWxlcy9KQVhSUENSdWxlMDAwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9ydWxlcy9KQVhSUENSdWxlMDAwMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDQxMDc5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvcnVsZXMvSkFYUlBDUnVsZTAwMDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxOSAgIDEzMjkwNSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleSAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UucnVsZXM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuU3RhY2s7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFNb2RlbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuV1NQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSkRUUmVzb2x2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLkphdmFXZWJTZXJ2aWNlUnVsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotCi0vKioKLSAqIFRoaXMgcnVsZSBjaGVja3MgaWYgYSBzZXJ2aWNlIGNsYXNzCi0gKiBpcyBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3RhYmxlLgotICovCi1wdWJsaWMgY2xhc3MgSkFYUlBDUnVsZTAwMDEgZXh0ZW5kcyBKYXZhV2ViU2VydmljZVJ1bGUKLXsKLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgcnVsZS4KLQkgKi8KLQlwdWJsaWMgSkFYUlBDUnVsZTAwMDEgKCkKLQl7Ci0JCWlkXyA9IDE7Ci0JCW5hbWVzcGFjZV8gPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9vcmcuZWNsaXBzZS5qc3Qud3MvamF4cnBjLzEuMSI7Ci0JCW5hbWVfID0gbnVsbDsKLQkJZGVzY3JpcHRpb25fID0gbnVsbDsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlI3Zpc2l0Q2xhc3Mob3JnLmVjbGlwc2UuamR0LmNvcmUuSVR5cGUsIGphdmEudXRpbC5TdGFjaykKLQkgKi8KLQlwdWJsaWMgdm9pZCB2aXNpdENsYXNzICggSVR5cGUgamR0Q2xhc3MsIFN0YWNrIHBlYW51dFRyYWlsICkKLQl7Ci0JCS8vIEFuIGVtcHR5IHBlYW51dCB0cmFpbCBpbXBsaWVzIHRoaXMgaXMgdGhlIHJvb3QKLQkJLy8gY2xhc3Mgb3IgSkFYLVJQQyBzZXJ2aWNlIGNsYXNzLgotCQlpZiAocGVhbnV0VHJhaWwuc2l6ZSgpID09IDApCi0JCXsKLQkJCXRyeQotCQkJewotCQkJCUpEVFJlc29sdmVyIHJlc29sdmVyID0gZW5naW5lXy5nZXRKRFRSZXNvbHZlcigpOwotCQkJCWlmICghcmVzb2x2ZXIuaXNDb25zdHJ1Y3RhYmxlKGpkdENsYXNzKSB8fCByZXNvbHZlci5pc0ludGVyZmFjZShqZHRDbGFzcykgfHwgcmVzb2x2ZXIuaXNBYnN0cmFjdChqZHRDbGFzcykpCi0JCQkJewotCQkJCQlTdHJpbmcgbWVzc2FnZSA9IE5MUy5iaW5kKFdTUGx1Z2luTWVzc2FnZXMuTVNHX0pBWFJQQzExX1JVTEVfMDAwMSxqZHRDbGFzcy5nZXRGdWxseVF1YWxpZmllZE5hbWUoKSk7Ci0JCQkJCXN0YXR1c0xpc3RfLmFkZChuZXcgU3RhdHVzKElTdGF0dXMuV0FSTklORywib3JnLmVjbGlwc2UuanN0LndzIiwwLG1lc3NhZ2UsbnVsbCkpOwotCQkJCX0KLQkJCX0KLQkJCWNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkKLQkJCXsKLQkJCQlzdGF0dXNMaXN0Xy5hZGQobmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLCJvcmcuZWNsaXBzZS5qc3Qud3MiLDAsIkludGVybmFsIGVycm9yIixlKSk7Ci0JCQl9Ci0JCX0KLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL3J1bGVzL0pBWFJQQ1J1bGUwMDAyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL3J1bGVzL0pBWFJQQ1J1bGUwMDAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNDljMzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9ydWxlcy9KQVhSUENSdWxlMDAwMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDE5ICAgMTMyOTA1IGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5ICAgICAgICAgIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5ydWxlczsKLQotaW1wb3J0IGphdmEudXRpbC5TdGFjazsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YU1vZGVsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5XU1BsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5KRFRSZXNvbHZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLS8qKgotICogVGhpcyBydWxlIGNoZWNrcyBpZiBhIHZhbHVlIHR5cGUgY2xhc3MKLSAqIGlzIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdGFibGUuCi0gKi8KLXB1YmxpYyBjbGFzcyBKQVhSUENSdWxlMDAwMiBleHRlbmRzIEphdmFXZWJTZXJ2aWNlUnVsZQotewotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBydWxlLgotCSAqLwotCXB1YmxpYyBKQVhSUENSdWxlMDAwMiAoKQotCXsKLQkJaWRfID0gMjsKLQkJbmFtZXNwYWNlXyA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL29yZy5lY2xpcHNlLmpzdC53cy9qYXhycGMvMS4xIjsKLQkJbmFtZV8gPSBudWxsOwotCQlkZXNjcmlwdGlvbl8gPSBudWxsOwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5KYXZhV2ViU2VydmljZVJ1bGUjdmlzaXRDbGFzcyhvcmcuZWNsaXBzZS5qZHQuY29yZS5JVHlwZSwgamF2YS51dGlsLlN0YWNrKQotCSAqLwotCXB1YmxpYyB2b2lkIHZpc2l0Q2xhc3MgKCBJVHlwZSBqZHRDbGFzcywgU3RhY2sgcGVhbnV0VHJhaWwgKQotCXsKLQkJLy8gQW4gZW1wdHkgcGVhbnV0IHRyYWlsIGltcGxpZXMgdGhpcyBpcyB0aGUgcm9vdCBjbGFzcwotCQkvLyByb290IGNsYXNzIG9yIEpBWC1SUEMgc2VydmljZSBjbGFzcywgd2hlcmVhcyBhIG5vbi1lbXB0eQotCQkvLyBwZWFudXQgdHJhaWwgaW1wbGllcyB0aGlzIGlzIGEgY2xhc3MgZnJvbSBhIG1ldGhvZCwgZmllbGQKLQkJLy8gb3IgcHJvcGVydHkgc2lnbmF0dXJlLiBJbiB0aGUgZm9ybWVyIGNhc2UsIHJlbWVtYmVyIHRoZQotCQkvLyBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgdHlwZSBqdXN0IGluIGNhc2Ugd2UgbmVlZCBpdCBmb3IgdGhlCi0JCS8vIGxhdHRlciBjYXNlLgotCQlpZiAocGVhbnV0VHJhaWwuc2l6ZSgpID09IDApCi0JCXsKLQkJCXNlcnZpY2VDbGFzc05hbWVfID0gamR0Q2xhc3MuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQl0cnkKLQkJCXsKLQkJCQlKRFRSZXNvbHZlciByZXNvbHZlciA9IGVuZ2luZV8uZ2V0SkRUUmVzb2x2ZXIoKTsKLQkJCQlTdHJpbmcgcW5hbWUgPSBqZHRDbGFzcy5nZXRGdWxseVF1YWxpZmllZE5hbWUoKTsKLQkJCQlpZiAoIXJlc29sdmVyLmlzU3RhbmRhcmRUeXBlKHFuYW1lKSkKLQkJCQl7IAotCQkJCQlpZiAoIXJlc29sdmVyLmlzQ29uc3RydWN0YWJsZShqZHRDbGFzcykgfHwgcmVzb2x2ZXIuaXNJbnRlcmZhY2UoamR0Q2xhc3MpIHx8IHJlc29sdmVyLmlzQWJzdHJhY3QoamR0Q2xhc3MpKQotCQkJCQl7Ci0JCQkJCQlTdHJpbmcgbWVzc2FnZSA9IE5MUy5iaW5kKFdTUGx1Z2luTWVzc2FnZXMuTVNHX0pBWFJQQzExX1JVTEVfMDAwMixxbmFtZSxzZXJ2aWNlQ2xhc3NOYW1lXyk7Ci0JCQkJCQlzdGF0dXNMaXN0Xy5hZGQobmV3IFN0YXR1cyhJU3RhdHVzLldBUk5JTkcsIm9yZy5lY2xpcHNlLmpzdC53cyIsMCxtZXNzYWdlLG51bGwpKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJCWNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkKLQkJCXsKLQkJCQlzdGF0dXNMaXN0Xy5hZGQobmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLCJvcmcuZWNsaXBzZS5qc3Qud3MiLDAsIkludGVybmFsIGVycm9yIixlKSk7Ci0JCQl9Ci0JCX0KLQl9Ci0JCi0JcHJpdmF0ZSBTdHJpbmcgc2VydmljZUNsYXNzTmFtZV87Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL3J1bGVzL0pBWFJQQ1J1bGUwMDAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL3J1bGVzL0pBWFJQQ1J1bGUwMDAzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNjViY2QuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9ydWxlcy9KQVhSUENSdWxlMDAwMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxOSAgIDEzMjkwNSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleSAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UucnVsZXM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlN0YWNrOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JTWV0aG9kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFNb2RlbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuV1NQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLS8qKgotICogVGhpcyBydWxlIHZlcmlmaWVzIHRoYXQgYSBzZXJ2aWNlIGNsYXNzIGhhcyBubyBvdmVybG9hZGVkIG1ldGhvZHMuCi0gKi8KLXB1YmxpYyBjbGFzcyBKQVhSUENSdWxlMDAwMyBleHRlbmRzIEphdmFXZWJTZXJ2aWNlUnVsZQotewotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBydWxlLgotCSAqLwotCXB1YmxpYyBKQVhSUENSdWxlMDAwMyAoKQotCXsKLQkJaWRfID0gMzsKLQkJbmFtZXNwYWNlXyA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL29yZy5lY2xpcHNlLmpzdC53cy9qYXhycGMvMS4xIjsKLQkJbmFtZV8gPSBudWxsOwotCQlkZXNjcmlwdGlvbl8gPSBudWxsOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlI2luaXQob3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLklKYXZhV2ViU2VydmljZVJ1bGVFbmdpbmUpCi0JICovCi0JcHVibGljIHZvaWQgaW5pdCAoIElKYXZhV2ViU2VydmljZVJ1bGVFbmdpbmUgZW5naW5lICkKLQl7Ci0JCXN1cGVyLmluaXQoZW5naW5lKTsKLQkJbWV0aG9kTmFtZXNfID0gbmV3IEhhc2hNYXAoKTsKLQkJb3ZlcmxvYWRlZE1ldGhvZE5hbWVzXyA9IG5ldyBIYXNoU2V0KCk7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5KYXZhV2ViU2VydmljZVJ1bGUjdmlzaXRDbGFzcyhvcmcuZWNsaXBzZS5qZHQuY29yZS5JVHlwZSwgamF2YS51dGlsLlN0YWNrKQotCSAqLwotCXB1YmxpYyB2b2lkIHZpc2l0Q2xhc3MgKCBJVHlwZSBqZHRDbGFzcywgU3RhY2sgcGVhbnV0VHJhaWwgKQotCXsKLQkJLy8KLQkJLy8gQW4gZW1wdHkgcGVhbnV0IHRyYWlsIGltcGxpZXMgdGhpcyBpcyB0aGUgcm9vdAotCQkvLyBjbGFzcywgYWthLiBKQVgtUlBDIHNlcnZpY2UgY2xhc3MuIFB1dCBhc2lkZQotCQkvLyB0aGUgY2xhc3MgbmFtZSBpbiBjYXNlIHZpc2l0TWV0aG9kKCkgbmVlZHMgaXQuCi0JCS8vCi0JCWlmIChwZWFudXRUcmFpbC5zaXplKCkgPT0gMCkKLQkJewotCQkJc2VydmljZUNsYXNzTmFtZV8gPSBqZHRDbGFzcy5nZXRGdWxseVF1YWxpZmllZE5hbWUoKTsKLQkJfQotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5KYXZhV2ViU2VydmljZVJ1bGUjdmlzaXRNZXRob2Qob3JnLmVjbGlwc2UuamR0LmNvcmUuSU1ldGhvZCwgamF2YS51dGlsLlN0YWNrKQotCSAqLwotCXB1YmxpYyB2b2lkIHZpc2l0TWV0aG9kICggSU1ldGhvZCBqZHRNZXRob2QsIFN0YWNrIHBlYW51dFRyYWlsICkKLQl7Ci0JCS8vCi0JCS8vIEEgcGVhbnV0IHRyYWlsIG9mIGxlbmd0aCBvbmUgaW1wbGllcyB0aGlzIGlzIGEgbWV0aG9kCi0JCS8vIGJlbG9uZ2luZyB0byB0aGUgcm9vdCBjbGFzcywgYWthLiBKQVgtUlBDIHNlcnZpY2UgY2xhc3MuCi0JCS8vCi0JCWlmIChwZWFudXRUcmFpbC5zaXplKCkgPT0gMSkKLQkJewotCQkJdHJ5Ci0JCQl7Ci0JCQkJLy8KLQkJCQkvLyBJZiB3ZSBoYXZlIGVuY291bnRlcmVkIHRoaXMgbWV0aG9kIGFscmVhZHkgYnV0IGhhdmVuJ3QKLQkJCQkvLyByZXBvcnRlZCB0aGUgb3ZlcmxvYWQgY29uZGl0aW9uLCByZXBvcnQgaXQuCi0JCQkJLy8KLQkJCQlTdHJpbmcgbWV0aG9kTmFtZSA9IGpkdE1ldGhvZC5nZXRFbGVtZW50TmFtZSgpOwotCQkJCVN0cmluZyBmaXJzdFBhcmFtZXRlclNpZ25hdHVyZSA9IChTdHJpbmcpbWV0aG9kTmFtZXNfLmdldChtZXRob2ROYW1lKTsKLQkJCQlTdHJpbmcgdGhpc1BhcmFtZXRlclNpZ25hdHVyZSA9IGZsYXR0ZW5lZFNpZ25hdHVyZU9mKGpkdE1ldGhvZCk7Ci0JCQkJaWYgKHRoaXNQYXJhbWV0ZXJTaWduYXR1cmUgIT0gbnVsbCkKLQkJCQl7Ci0JCQkJCWlmIChmaXJzdFBhcmFtZXRlclNpZ25hdHVyZSAhPSBudWxsKQotCQkJCQl7Ci0JCQkJCQkvLwotCQkJCQkJLy8gSWYgd2UgaGF2ZSBlbmNvdW50ZXJlZCB0aGlzIG1ldGhvZCdzIG5hbWUgYWxyZWFkeSwKLQkJCQkJCS8vIGJ1dCBoYXZlIG5vdCB5ZXQgZGV0ZXJtaW5lZCBpZiBpdCBpcyBvdmVybG9hZGVkLAotCQkJCQkJLy8gdGhlbiBjb21wYXJlIHRoaXMgbWV0aG9kJ3MgcGFyYW1ldGVyIHNpZ25hdHVyZSB3aXRoCi0JCQkJCQkvLyB0aGF0IG9mIHRoZSAiZmlyc3Qgc2lnbmF0dXJlIiBvZiB0aGUgbWV0aG9kIG5hbWUuCi0JCQkJCQkvLyBUaGUgbW9tZW50IHdlIGZpbmQgYSBzZWNvbmQgc2lnbmF0dXJlIGZvciBhIGdpdmVuCi0JCQkJCQkvLyBtZXRob2QgbmFtZSwgd2UgaGF2ZSBhbiBvdmVybG9hZCBjb25kaXRpb24uCi0JCQkJCQkvLwotCQkJCQkJaWYgKCFvdmVybG9hZGVkTWV0aG9kTmFtZXNfLmNvbnRhaW5zKG1ldGhvZE5hbWUpICYmICF0aGlzUGFyYW1ldGVyU2lnbmF0dXJlLmVxdWFscyhmaXJzdFBhcmFtZXRlclNpZ25hdHVyZSkpCi0JCQkJCQl7Ci0JCQkJCQkJb3ZlcmxvYWRlZE1ldGhvZE5hbWVzXy5hZGQobWV0aG9kTmFtZSk7Ci0JCQkJCQkJU3RyaW5nIG1lc3NhZ2UgPSBOTFMuYmluZChXU1BsdWdpbk1lc3NhZ2VzLk1TR19KQVhSUEMxMV9SVUxFXzAwMDMsbWV0aG9kTmFtZSxzZXJ2aWNlQ2xhc3NOYW1lXyk7Ci0JCQkJCQkJc3RhdHVzTGlzdF8uYWRkKG5ldyBTdGF0dXMoSVN0YXR1cy5XQVJOSU5HLCJvcmcuZWNsaXBzZS5qc3Qud3MiLDAsbWVzc2FnZSxudWxsKSk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQkJZWxzZQotCQkJCQl7Ci0JCQkJCQkvLwotCQkJCQkJLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCBubyBzaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBtZXRob2QKLQkJCQkJCS8vIG5hbWUgKGllLiB3ZSBoYXZlIG5vdCBlbmNvdW50ZXJlZCB0aGUgbWV0aG9kIG5hbWUgeWV0KSwKLQkJCQkJCS8vIHRoZW4gcmVjb3JkIHRoaXMgb25lLiBBbnkgImZpcnN0IHNpZ25hdHVyZSIgd2lsbCBkby4KLQkJCQkJCS8vCi0JCQkJCQltZXRob2ROYW1lc18ucHV0KG1ldGhvZE5hbWUsdGhpc1BhcmFtZXRlclNpZ25hdHVyZSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCQljYXRjaCAoSmF2YU1vZGVsRXhjZXB0aW9uIGUpCi0JCQl7Ci0JCQkJLy8gRG8gbm90aGluZy4KLQkJCX0KLQkJfQotCX0KLQkKLQkvKgotCSAqIEdyYWJzIHRoZSB0eXBlcyBvZiB0aGUgcGFyYW1ldGVycyBvZiB0aGUgZ2l2ZW4gbWV0aG9kCi0JICogYW5kIGZsYXR0ZW5zIHRoZW4gaW50byBhIHNpbmdsZSBzdHJpbmcgc3VmZmljaWVudCB0bwotCSAqIGRpc3Rpbmd1aXNoIGJldHdlZW4gb3ZlcmxvYWRlZCB2cy4gb3ZlcnJpZGRlbiBtZXRob2RzLgotCSAqLwotCXByaXZhdGUgU3RyaW5nIGZsYXR0ZW5lZFNpZ25hdHVyZU9mICggSU1ldGhvZCBqZHRNZXRob2QgKQotCXRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24KLQl7Ci0JCVN0cmluZ1tdIHNpZ25hdHVyZXMgPSBlbmdpbmVfLmdldEpEVFJlc29sdmVyKCkuZ2V0UGFyYW1ldGVyVHlwZU5hbWVzKGpkdE1ldGhvZCk7Ci0JCVN0cmluZ0J1ZmZlciBmbGF0dGVuZWRTaWduYXR1cmUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0JCWZvciAoaW50IHM9MDsgczxzaWduYXR1cmVzLmxlbmd0aDsgcysrKQotCQl7Ci0JCQlmbGF0dGVuZWRTaWduYXR1cmUuYXBwZW5kKHNpZ25hdHVyZXNbc10pLmFwcGVuZCgiLCIpOwotCQl9Ci0JCXJldHVybiBmbGF0dGVuZWRTaWduYXR1cmUudG9TdHJpbmcoKTsKLQl9Ci0JCi0JcHJpdmF0ZSBNYXAgbWV0aG9kTmFtZXNfOwotCXByaXZhdGUgU2V0IG92ZXJsb2FkZWRNZXRob2ROYW1lc187Ci0JcHJpdmF0ZSBTdHJpbmcgc2VydmljZUNsYXNzTmFtZV87Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL3J1bGVzL0pBWFJQQ1J1bGUwMDA1LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL3J1bGVzL0pBWFJQQ1J1bGUwMDA1LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NmNmN2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9ydWxlcy9KQVhSUENSdWxlMDAwNS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxOSAgIDEzMjkwNSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleSAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UucnVsZXM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuU3RhY2s7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklNZXRob2Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSmF2YU1vZGVsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5XU1BsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YVdlYlNlcnZpY2VSdWxlRW5naW5lOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5KRFRSZXNvbHZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLS8qKgotICogVGhpcyBydWxlIHZlcmlmaWVzIHRoYXQgdGhlIG1ldGhvZHMgb2YgYSBzZXJ2aWNlIGNsYXNzCi0gKiB1c2VzIG9ubHkgSkFYLVJQQyBzdXBwb3J0ZWQgdHlwZXMuCi0gKi8KLXB1YmxpYyBjbGFzcyBKQVhSUENSdWxlMDAwNSBleHRlbmRzIEphdmFXZWJTZXJ2aWNlUnVsZQotewotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBydWxlLgotCSAqLwotCXB1YmxpYyBKQVhSUENSdWxlMDAwNSAoKQotCXsKLQkJaWRfID0gNTsKLQkJbmFtZXNwYWNlXyA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL29yZy5lY2xpcHNlLmpzdC53cy9qYXhycGMvMS4xIjsKLQkJbmFtZV8gPSBudWxsOwotCQlkZXNjcmlwdGlvbl8gPSBudWxsOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlI2luaXQob3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLklKYXZhV2ViU2VydmljZVJ1bGVFbmdpbmUpCi0JICovCi0JcHVibGljIHZvaWQgaW5pdCAoIElKYXZhV2ViU2VydmljZVJ1bGVFbmdpbmUgZW5naW5lICkKLQl7Ci0JCXN1cGVyLmluaXQoZW5naW5lKTsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLkphdmFXZWJTZXJ2aWNlUnVsZSN2aXNpdENsYXNzKG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlLCBqYXZhLnV0aWwuU3RhY2spCi0JICovCi0JcHVibGljIHZvaWQgdmlzaXRDbGFzcyAoIElUeXBlIGpkdENsYXNzLCBTdGFjayBwZWFudXRUcmFpbCApCi0JewotCQkvLwotCQkvLyBBbiBlbXB0eSBwZWFudXQgdHJhaWwgaW1wbGllcyB0aGlzIGlzIHRoZSByb290Ci0JCS8vIGNsYXNzLCBha2EuIEpBWC1SUEMgc2VydmljZSBjbGFzcy4gUHV0IGFzaWRlCi0JCS8vIHRoZSBjbGFzcyBuYW1lIGluIGNhc2UgdmlzaXRNZXRob2QoKSBuZWVkcyBpdC4KLQkJLy8KLQkJaWYgKHBlYW51dFRyYWlsLnNpemUoKSA9PSAwKQotCQl7Ci0JCQlzZXJ2aWNlQ2xhc3NOYW1lXyA9IGpkdENsYXNzLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpOwotCQl9Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLkphdmFXZWJTZXJ2aWNlUnVsZSN2aXNpdE1ldGhvZChvcmcuZWNsaXBzZS5qZHQuY29yZS5JTWV0aG9kLCBqYXZhLnV0aWwuU3RhY2spCi0JICovCi0JcHVibGljIHZvaWQgdmlzaXRNZXRob2QgKCBJTWV0aG9kIGpkdE1ldGhvZCwgU3RhY2sgcGVhbnV0VHJhaWwgKQotCXsKLQkJLy8KLQkJLy8gQSBwZWFudXQgdHJhaWwgb2YgbGVuZ3RoIG9uZSBpbXBsaWVzIHRoaXMgaXMgYSBtZXRob2QKLQkJLy8gYmVsb25naW5nIHRvIHRoZSByb290IGNsYXNzLCBha2EuIEpBWC1SUEMgc2VydmljZSBjbGFzcy4KLQkJLy8KLQkJaWYgKHBlYW51dFRyYWlsLnNpemUoKSA9PSAxKQotCQl7Ci0JCQl0cnkKLQkJCXsKLQkJCQlTdHJpbmcgbWV0aG9kTmFtZSA9IGpkdE1ldGhvZC5nZXRFbGVtZW50TmFtZSgpOwotCQkJCS8vCi0JCQkJLy8gQ2hlY2sgdGhlIG1ldGhvZCByZXR1cm4gdHlwZSBmb3IgY29tcGxpYW5jZS4KLQkJCQkvLyBBbnkgSmF2YSBwcmltaXRpdmUgb3Igc3RhbmRhcmQgKCJqYXZhLiIgb3IgImphdmF4LiIpIHR5cGUKLQkJCQkvLyB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgSkFYLVJQQyB3aWxsIGdldCBmbGFnZ2VkLgotCQkJCS8vIEFueSBub24tcHJpbWl0aXZlIG9yIG5vbi1zdGFuZGFyZCB0eXBlIGlzIHByZXN1bWVkIHRvIGJlIGEKLQkJCQkvLyBwb3RlbnRpYWwgdmFsdWUgdHlwZSBhbmQgaXMgYnlwYXNzZWQgc2luY2UgdGhlIHJ1bGUgZW5naW5lCi0JCQkJLy8gd2lsbCBuYXZpZ2F0ZSBpbnRvIHRoZSBwb3RlbnRpYWwgdmFsdWUgdHlwZSdzIGNsYXNzLgotCQkJCS8vCi0JCQkJSkRUUmVzb2x2ZXIgcmVzb2x2ZXIgPSBlbmdpbmVfLmdldEpEVFJlc29sdmVyKCk7Ci0JCQkJU3RyaW5nIHJldHVyblR5cGVOYW1lID0gcmVzb2x2ZXIuZ2V0UmV0dXJuVHlwZU5hbWUoamR0TWV0aG9kKTsKLQkJCQlpZiAoKHJlc29sdmVyLmlzUHJpbWl0aXZlVHlwZShyZXR1cm5UeXBlTmFtZSkgfHwgcmVzb2x2ZXIuaXNTdGFuZGFyZFR5cGUocmV0dXJuVHlwZU5hbWUpKSAmJiAhcmVzb2x2ZXIuaXNKQVhSUENTdGFuZGFyZFR5cGUocmV0dXJuVHlwZU5hbWUpKQotCQkJCXsKLQkJCQkJU3RyaW5nIG1lc3NhZ2UgPSBOTFMuYmluZChXU1BsdWdpbk1lc3NhZ2VzLk1TR19KQVhSUEMxMV9SVUxFXzAwMDUsbmV3IFN0cmluZ1tdIHttZXRob2ROYW1lLHNlcnZpY2VDbGFzc05hbWVfLHJldHVyblR5cGVOYW1lfSk7Ci0JCQkJCXN0YXR1c0xpc3RfLmFkZChuZXcgU3RhdHVzKElTdGF0dXMuV0FSTklORywib3JnLmVjbGlwc2UuanN0LndzIiwwLG1lc3NhZ2UsbnVsbCkpOwotCQkJCX0KLQkJCQkvLwotCQkJCS8vIENoZWNrIHRoZSBtZXRob2QgcGFyYW1ldGVyIHR5cGVzIGZvciBjb21wbGlhbmNlLgotCQkJCS8vIFNhbWUgY29tbWVudCBhcyBhYm92ZSwgb25seSBhcHBsaWVkIHRvIHRoZSBtZXRob2QncyBwYXJhbWV0ZXJzLgotCQkJCS8vCi0JCQkJU3RyaW5nW10gcGFyYW1ldGVyVHlwZU5hbWVzID0gcmVzb2x2ZXIuZ2V0UGFyYW1ldGVyVHlwZU5hbWVzKGpkdE1ldGhvZCk7Ci0JCQkJZm9yIChpbnQgcD0wOyBwPHBhcmFtZXRlclR5cGVOYW1lcy5sZW5ndGg7IHArKykKLQkJCQl7Ci0JCQkJCWlmICgocmVzb2x2ZXIuaXNQcmltaXRpdmVUeXBlKHBhcmFtZXRlclR5cGVOYW1lc1twXSkgfHwgcmVzb2x2ZXIuaXNTdGFuZGFyZFR5cGUocGFyYW1ldGVyVHlwZU5hbWVzW3BdKSkgJiYgIXJlc29sdmVyLmlzSkFYUlBDU3RhbmRhcmRUeXBlKHBhcmFtZXRlclR5cGVOYW1lc1twXSkpCi0JCQkJCXsKLQkJCQkJCVN0cmluZyBtZXNzYWdlID0gTkxTLmJpbmQoV1NQbHVnaW5NZXNzYWdlcy5NU0dfSkFYUlBDMTFfUlVMRV8wMDA1LG5ldyBTdHJpbmdbXSB7bWV0aG9kTmFtZSxzZXJ2aWNlQ2xhc3NOYW1lXyxwYXJhbWV0ZXJUeXBlTmFtZXNbcF19KTsKLQkJCQkJCXN0YXR1c0xpc3RfLmFkZChuZXcgU3RhdHVzKElTdGF0dXMuV0FSTklORywib3JnLmVjbGlwc2UuanN0LndzIiwwLG1lc3NhZ2UsbnVsbCkpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQkJY2F0Y2ggKEphdmFNb2RlbEV4Y2VwdGlvbiBlKQotCQkJewotCQkJCS8vIERvIG5vdGhpbmcuCi0JCQl9Ci0JCX0KLQl9Ci0JCi0JcHJpdmF0ZSBTdHJpbmcgc2VydmljZUNsYXNzTmFtZV87Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL3J1bGVzL0pBWFJQQ1J1bGUwMDA2LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbmZvcm1hbmNlL3J1bGVzL0pBWFJQQ1J1bGUwMDA2LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwN2FmZDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9ydWxlcy9KQVhSUENSdWxlMDAwNi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxOSAgIDEzMjkwNSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleSAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UucnVsZXM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuU3RhY2s7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklGaWVsZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5KYXZhTW9kZWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLldTUGx1Z2luTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLklKYXZhQmVhblByb3BlcnR5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5JSmF2YVdlYlNlcnZpY2VSdWxlRW5naW5lOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5KRFRSZXNvbHZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLS8qKgotICogVGhpcyBydWxlIHZlcmlmaWVzIHRoYXQgdGhlIGZpZWxkcyBhbmQgcHJvcGVydGllcyBvZiBhCi0gKiB2YWx1ZSB0eXBlIGNsYXNzIHVzZXMgb25seSBKQVgtUlBDIHN1cHBvcnRlZCB0eXBlcy4KLSAqLwotcHVibGljIGNsYXNzIEpBWFJQQ1J1bGUwMDA2IGV4dGVuZHMgSmF2YVdlYlNlcnZpY2VSdWxlCi17Ci0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIHJ1bGUuCi0JICovCi0JcHVibGljIEpBWFJQQ1J1bGUwMDA2ICgpCi0JewotCQlpZF8gPSA2OwotCQluYW1lc3BhY2VfID0gImh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvb3JnLmVjbGlwc2UuanN0LndzL2pheHJwYy8xLjEiOwotCQluYW1lXyA9IG51bGw7Ci0JCWRlc2NyaXB0aW9uXyA9IG51bGw7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25mb3JtYW5jZS5KYXZhV2ViU2VydmljZVJ1bGUjaW5pdChvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZSkKLQkgKi8KLQlwdWJsaWMgdm9pZCBpbml0ICggSUphdmFXZWJTZXJ2aWNlUnVsZUVuZ2luZSBlbmdpbmUgKQotCXsKLQkJc3VwZXIuaW5pdChlbmdpbmUpOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlI3Zpc2l0Q2xhc3Mob3JnLmVjbGlwc2UuamR0LmNvcmUuSVR5cGUsIGphdmEudXRpbC5TdGFjaykKLQkgKi8KLQlwdWJsaWMgdm9pZCB2aXNpdENsYXNzICggSVR5cGUgamR0Q2xhc3MsIFN0YWNrIHBlYW51dFRyYWlsICkKLQl7Ci0JCS8vCi0JCS8vIEFuIGVtcHR5IHBlYW51dCB0cmFpbCBpbXBsaWVzIHRoaXMgaXMgdGhlIHJvb3QKLQkJLy8gY2xhc3MsIGFrYS4gSkFYLVJQQyBzZXJ2aWNlIGNsYXNzLiBQdXQgYXNpZGUKLQkJLy8gdGhlIGNsYXNzIG5hbWUgaW4gY2FzZSB2aXNpdE1ldGhvZCgpIG5lZWRzIGl0LgotCQkvLwotCQlpZiAocGVhbnV0VHJhaWwuc2l6ZSgpID09IDApCi0JCXsKLQkJCXNlcnZpY2VDbGFzc05hbWVfID0gamR0Q2xhc3MuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCk7Ci0JCX0KLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlI3Zpc2l0TWV0aG9kKG9yZy5lY2xpcHNlLmpkdC5jb3JlLklNZXRob2QsIGphdmEudXRpbC5TdGFjaykKLQkgKi8KLQlwdWJsaWMgdm9pZCB2aXNpdEZpZWxkICggSUZpZWxkIGpkdEZpZWxkLCBTdGFjayBwZWFudXRUcmFpbCApCi0JewotCQkvLwotCQkvLyBBIHBlYW51dCB0cmFpbCBvZiBsZW5ndGggZ3JlYXRlciB0aGFuIG9uZSBpbXBsaWVzIHRoaXMgaXMgYQotCQkvLyBmaWVsZCBiZWxvbmdpbmcgdG8gYSBjbGFzcyBvdGhlciB0aGFuIHRoZSByb290IChha2EuIEpBWC1SUEMKLQkJLy8gc2VydmljZSkgY2xhc3MsIG5hbWVseSBhIHByZXN1bWVkIHZhbHVlIHR5cGUgY2xhc3MuCi0JCS8vCi0JCWlmIChwZWFudXRUcmFpbC5zaXplKCkgPiAxKQotCQl7Ci0JCQl0cnkKLQkJCXsKLQkJCQkvLwotCQkJCS8vIEFueSBKYXZhIHByaW1pdGl2ZSBvciBzdGFuZGFyZCAoImphdmEuIiBvciAiamF2YXguIikgdHlwZQotCQkJCS8vIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSBKQVgtUlBDIHdpbGwgZ2V0IGZsYWdnZWQuCi0JCQkJLy8gQW55IG5vbi1wcmltaXRpdmUgb3Igbm9uLXN0YW5kYXJkIHR5cGUgaXMgcHJlc3VtZWQgdG8gYmUgYQotCQkJCS8vIHBvdGVudGlhbCB2YWx1ZSB0eXBlIGFuZCBpcyBieXBhc3NlZCBzaW5jZSB0aGUgcnVsZSBlbmdpbmUKLQkJCQkvLyB3aWxsIG5hdmlnYXRlIGludG8gdGhlIHBvdGVudGlhbCB2YWx1ZSB0eXBlJ3MgY2xhc3MuCi0JCQkJLy8KLQkJCQlKRFRSZXNvbHZlciByZXNvbHZlciA9IGVuZ2luZV8uZ2V0SkRUUmVzb2x2ZXIoKTsKLQkJCQlTdHJpbmcgZmllbGRUeXBlTmFtZSA9IHJlc29sdmVyLmdldEZpZWxkVHlwZU5hbWUoamR0RmllbGQpOwotCQkJCWlmICgocmVzb2x2ZXIuaXNQcmltaXRpdmVUeXBlKGZpZWxkVHlwZU5hbWUpIHx8IHJlc29sdmVyLmlzU3RhbmRhcmRUeXBlKGZpZWxkVHlwZU5hbWUpKSAmJiAhcmVzb2x2ZXIuaXNKQVhSUENTdGFuZGFyZFR5cGUoZmllbGRUeXBlTmFtZSkpCi0JCQkJewotCQkJCQkvLwotCQkJCQkvLyBUaGUgZmllbGQgcHJldHR5IG11Y2ggTVVTVCBiZSBkZWNsYXJlZCBpbiBhIHR5cGUgb3IKLQkJCQkJLy8gd2Ugd291bGQgbm90IGhhdmUgZ290dGVuIGhlcmUuIFN0aWxsLCBiZXN0IHRvIGJlIHNhZmUuCi0JCQkJCS8vCi0JCQkJCUlUeXBlIHZhbHVlVHlwZSA9IGpkdEZpZWxkLmdldERlY2xhcmluZ1R5cGUoKTsKLQkJCQkJaWYgKHZhbHVlVHlwZSAhPSBudWxsKQotCQkJCQl7Ci0JCQkJCQlTdHJpbmcgdmFsdWVUeXBlQ2xhc3NOYW1lID0gdmFsdWVUeXBlLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpOwotCQkJCQkJU3RyaW5nIGZpZWxkTmFtZSA9IGpkdEZpZWxkLmdldEVsZW1lbnROYW1lKCk7Ci0JCQkJCQlTdHJpbmcgbWVzc2FnZSA9IE5MUy5iaW5kKFdTUGx1Z2luTWVzc2FnZXMuTVNHX0pBWFJQQzExX1JVTEVfMDAwNixuZXcgU3RyaW5nW10ge2ZpZWxkTmFtZSx2YWx1ZVR5cGVDbGFzc05hbWUsc2VydmljZUNsYXNzTmFtZV8sZmllbGRUeXBlTmFtZX0pOwotCQkJCQkJc3RhdHVzTGlzdF8uYWRkKG5ldyBTdGF0dXMoSVN0YXR1cy5XQVJOSU5HLCJvcmcuZWNsaXBzZS5qc3Qud3MiLDAsbWVzc2FnZSxudWxsKSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCQljYXRjaCAoSmF2YU1vZGVsRXhjZXB0aW9uIGUpCi0JCQl7Ci0JCQkJLy8gRG8gbm90aGluZy4KLQkJCX0KLQkJfQotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlI3Zpc2l0UHJvcGVydHkob3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbmZvcm1hbmNlLklKYXZhQmVhblByb3BlcnR5LCBqYXZhLnV0aWwuU3RhY2spCi0JICovCi0JcHVibGljIHZvaWQgdmlzaXRQcm9wZXJ0eSAoIElKYXZhQmVhblByb3BlcnR5IHByb3BlcnR5LCBTdGFjayBwZWFudXRUcmFpbCApCi0JewotCQkvLwotCQkvLyBBIHBlYW51dCB0cmFpbCBvZiBsZW5ndGggZ3JlYXRlciB0aGFuIG9uZSBpbXBsaWVzIHRoaXMgaXMgYQotCQkvLyBwcm9wZXJ0eSBiZWxvbmdpbmcgdG8gYSBjbGFzcyBvdGhlciB0aGFuIHRoZSByb290IChha2EuIEpBWC1SUEMKLQkJLy8gc2VydmljZSkgY2xhc3MsIG5hbWVseSBhIHByZXN1bWVkIHZhbHVlIHR5cGUgY2xhc3MuCi0JCS8vCi0JCWlmIChwZWFudXRUcmFpbC5zaXplKCkgPiAxKQotCQl7Ci0JCQl0cnkKLQkJCXsKLQkJCQkvLwotCQkJCS8vIEFueSBKYXZhIHByaW1pdGl2ZSBvciBzdGFuZGFyZCAoImphdmEuIiBvciAiamF2YXguIikgdHlwZQotCQkJCS8vIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSBKQVgtUlBDIHdpbGwgZ2V0IGZsYWdnZWQuCi0JCQkJLy8gQW55IG5vbi1wcmltaXRpdmUgb3Igbm9uLXN0YW5kYXJkIHR5cGUgaXMgcHJlc3VtZWQgdG8gYmUgYQotCQkJCS8vIHBvdGVudGlhbCB2YWx1ZSB0eXBlIGFuZCBpcyBieXBhc3NlZCBzaW5jZSB0aGUgcnVsZSBlbmdpbmUKLQkJCQkvLyB3aWxsIG5hdmlnYXRlIGludG8gdGhlIHBvdGVudGlhbCB2YWx1ZSB0eXBlJ3MgY2xhc3MuCi0JCQkJLy8KLQkJCQlKRFRSZXNvbHZlciByZXNvbHZlciA9IGVuZ2luZV8uZ2V0SkRUUmVzb2x2ZXIoKTsKLQkJCQlTdHJpbmcgcHJvcGVydHlUeXBlTmFtZSA9IHJlc29sdmVyLmdldFByb3BlcnR5VHlwZU5hbWUocHJvcGVydHkpOwotCQkJCWlmICgocmVzb2x2ZXIuaXNQcmltaXRpdmVUeXBlKHByb3BlcnR5VHlwZU5hbWUpIHx8IHJlc29sdmVyLmlzU3RhbmRhcmRUeXBlKHByb3BlcnR5VHlwZU5hbWUpKSAmJiAhcmVzb2x2ZXIuaXNKQVhSUENTdGFuZGFyZFR5cGUocHJvcGVydHlUeXBlTmFtZSkpCi0JCQkJewotCQkJCQkvLwotCQkJCQkvLyBUaGUgZmllbGQgcHJldHR5IG11Y2ggTVVTVCBiZSBkZWNsYXJlZCBpbiBhIHR5cGUgb3IKLQkJCQkJLy8gd2Ugd291bGQgbm90IGhhdmUgZ290dGVuIGhlcmUuIFN0aWxsLCBiZXN0IHRvIGJlIHNhZmUuCi0JCQkJCS8vCi0JCQkJCUlUeXBlIHZhbHVlVHlwZSA9IHByb3BlcnR5LmdldERlY2xhcmluZ1R5cGUoKTsKLQkJCQkJaWYgKHZhbHVlVHlwZSAhPSBudWxsKQotCQkJCQl7Ci0JCQkJCQlTdHJpbmcgdmFsdWVUeXBlQ2xhc3NOYW1lID0gdmFsdWVUeXBlLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpOwotCQkJCQkJU3RyaW5nIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LmdldE5hbWUoKTsKLQkJCQkJCVN0cmluZyBtZXNzYWdlID0gTkxTLmJpbmQoV1NQbHVnaW5NZXNzYWdlcy5NU0dfSkFYUlBDMTFfUlVMRV8wMDA2LG5ldyBTdHJpbmdbXSB7cHJvcGVydHlOYW1lLHZhbHVlVHlwZUNsYXNzTmFtZSxzZXJ2aWNlQ2xhc3NOYW1lXyxwcm9wZXJ0eVR5cGVOYW1lfSk7Ci0JCQkJCQlzdGF0dXNMaXN0Xy5hZGQobmV3IFN0YXR1cyhJU3RhdHVzLldBUk5JTkcsIm9yZy5lY2xpcHNlLmpzdC53cyIsMCxtZXNzYWdlLG51bGwpKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJCWNhdGNoIChKYXZhTW9kZWxFeGNlcHRpb24gZSkKLQkJCXsKLQkJCQkvLyBEbyBub3RoaW5nLgotCQkJfQotCQl9Ci0JfQotCQotCXByaXZhdGUgU3RyaW5nIHNlcnZpY2VDbGFzc05hbWVfOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9ydWxlcy9KQVhSUENSdWxlU2V0RmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb25mb3JtYW5jZS9ydWxlcy9KQVhSUENSdWxlU2V0RmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjFjN2E2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29uZm9ybWFuY2UvcnVsZXMvSkFYUlBDUnVsZVNldEZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQxOSAgIDEzMjkwNSBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleSAgICAgICAgICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UucnVsZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uZm9ybWFuY2UuSmF2YVdlYlNlcnZpY2VSdWxlU2V0OwotCi0vKioKLSAqIEEgZmFjdG9yeSB0aGF0IHByb2R1Y2VzIGEgSmF2YVdlYlNlcnZpY2VSdWxlU2V0Ci0gKiBmb3IgdGhlIEpBWC1SUEMgMS4xIHNwZWNpZmljYXRpb24uCi0gKi8KLXB1YmxpYyBjbGFzcyBKQVhSUENSdWxlU2V0RmFjdG9yeQotewotCXByaXZhdGUgSkFYUlBDUnVsZVNldEZhY3RvcnkgKCkKLQl7Ci0JCS8vIE5vdCBwdWJsaWNseSBjb25zdHJ1Y3RhYmxlLgotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGEgc2V0IG9mIHJ1bGVzIGZvciBhbmFseXppbmcgSmF2YSBjbGFzc2VzCi0JICogZm9yIGNvbXBsaWFuY2UgdG8gdGhlIHJ1bGVzIG9mIEpBWC1SUEMgMS4xLiAgCi0JICogQHJldHVybiBBIHNldCBvZiBKQVgtUlBDIDEuMSBhbmFseXNpcyBydWxlcy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIEphdmFXZWJTZXJ2aWNlUnVsZVNldCBuZXdSdWxlU2V0ICgpCi0JewotCQlKYXZhV2ViU2VydmljZVJ1bGVTZXQgc2V0ID0gbmV3IEphdmFXZWJTZXJ2aWNlUnVsZVNldCgpOwotCQlzZXQuYWRkUnVsZShuZXcgSkFYUlBDUnVsZTAwMDEoKSk7Ci0JCXNldC5hZGRSdWxlKG5ldyBKQVhSUENSdWxlMDAwMigpKTsKLQkJc2V0LmFkZFJ1bGUobmV3IEpBWFJQQ1J1bGUwMDAzKCkpOwotCQlzZXQuYWRkUnVsZShuZXcgSkFYUlBDUnVsZTAwMDUoKSk7Ci0JCXNldC5hZGRSdWxlKG5ldyBKQVhSUENSdWxlMDAwNigpKTsKLQkJcmV0dXJuIHNldDsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvUGVyc2lzdGVudFNjZW5hcmlvQ29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb250ZXh0L1BlcnNpc3RlbnRTY2VuYXJpb0NvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEyYzA1My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvUGVyc2lzdGVudFNjZW5hcmlvQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDAzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIxNiAgIDEyNzEzOCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MDMxNCAgIDE1NDU0MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViU2VydmljZVRlc3RSZWdpc3RyeSBpcyB0cmFja2luZyBleHRlbnNpb25zIHVzaW5nIGxhYmVsIGF0dHJpYnV0ZSBpbnN0ZWFkIG9mIElECi0gKiAyMDA4MDQxNiAgIDIyNzM1OSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgVGVzdCBmYWNpbGl0aWVzIGRvIG5vdCByZXNwZWN0IGRlZmF1bHQgb3JkZXIgaW4gcGx1Z2luIGN1c3RvbWl6YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0OwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0LnRlc3QuV2ViU2VydmljZVRlc3RFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldlYlNlcnZpY2VUZXN0UmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnBsdWdpbi5XZWJTZXJ2aWNlUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0LlBlcnNpc3RlbnRDb250ZXh0OwotaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU3RyaW5nVG9rZW5pemVyOwotCi0KLXB1YmxpYyBjbGFzcyBQZXJzaXN0ZW50U2NlbmFyaW9Db250ZXh0IGV4dGVuZHMgUGVyc2lzdGVudENvbnRleHQgaW1wbGVtZW50cyBTY2VuYXJpb0NvbnRleHQKLXsKLSAgcHVibGljIFBlcnNpc3RlbnRTY2VuYXJpb0NvbnRleHQoKQotICB7Ci0gICAgc3VwZXIoV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpKTsgCi0gIH0KLQotICBwdWJsaWMgdm9pZCBsb2FkKCkKLSAgewotICAgIFNjZW5hcmlvRGVmYXVsdHMgZGVmYXVsdHMgPSBuZXcgU2NlbmFyaW9EZWZhdWx0cygpOwotICAgIFN0cmluZ1tdIGlkcyA9IGRlZmF1bHRzLmdldFdlYlNlcnZpY2VUZXN0SWRzKCk7Ci0gICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChpICE9IDApIHNiLmFwcGVuZCgiLCIpOwotICAgICAgc2IuYXBwZW5kKGlkc1tpXSk7Ci0gICAgfQotICAgIFN0cmluZyBub25KYXZhVGVzdFNlcnZpY2UgPSBkZWZhdWx0cy5nZXROb25KYXZhVGVzdFNlcnZpY2VEZWZhdWx0KCk7Ci0gICAgc2V0RGVmYXVsdFN0cmluZ0lmTm9EZWZhdWx0KFBSRUZFUkVOQ0VfV0VCU0VSVklDRV9URVNUX1RZUEVTLCBzYi50b1N0cmluZygpKTsKLSAgICBzZXREZWZhdWx0U3RyaW5nSWZOb0RlZmF1bHQoUFJFRkVSRU5DRV9OT05fSkFWQV9URVNUX1NFUlZJQ0UsIG5vbkphdmFUZXN0U2VydmljZSk7Ci0gICAgCi0gICAgc2V0RGVmYXVsdFN0cmluZ0lmTm9EZWZhdWx0KFBSRUZFUkVOQ0VfQ0xJRU5UX1dFQlNFUlZJQ0VfVFlQRSwgZGVmYXVsdHMud2Vic2VydmljZUNsaWVudFR5cGVEZWZhdWx0KCkgKTsKLSAgICBzZXREZWZhdWx0U3RyaW5nSWZOb0RlZmF1bHQoUFJFRkVSRU5DRV9XRUJTRVJWSUNFX1RZUEUsIGRlZmF1bHRzLndlYnNlcnZpY2VUeXBlSWREZWZhdWx0KCkgKTsKLSAgICBzZXREZWZhdWx0Qm9vbGVhbklmTm9EZWZhdWx0KFBSRUZFUkVOQ0VfR0VORVJBVEVfUFJPWFksIGRlZmF1bHRzLmdlbmVyYXRlUHJveHlEZWZhdWx0KCkgKTsKLSAgICBzZXREZWZhdWx0Qm9vbGVhbklmTm9EZWZhdWx0KFBSRUZFUkVOQ0VfTEFVTkNIX1dFQlNFUlZJQ0VfRVhQTE9SRVIsIGRlZmF1bHRzLmxhdW5jaFdlYnNlcnZpY2VFeHBsb3JlckRlZmF1bHQoKSApOwotICAgIHNldERlZmF1bHRCb29sZWFuSWZOb0RlZmF1bHQoUFJFRkVSRU5DRV9JTlNUQUxMX1dFQlNFUlZJQ0UsIGRlZmF1bHRzLmluc3RhbGxXZWJzZXJ2aWNlRGVmYXVsdCgpICk7Ci0gICAgc2V0RGVmYXVsdEJvb2xlYW5JZk5vRGVmYXVsdChQUkVGRVJFTkNFX0lOU1RBTExfQ0xJRU5ULCBkZWZhdWx0cy5pbnN0YWxsQ2xpZW50RGVmYXVsdCgpICk7Ci0gICAgc2V0RGVmYXVsdEJvb2xlYW5JZk5vRGVmYXVsdChQUkVGRVJFTkNFX1NUQVJUX1dFQlNFUlZJQ0UsIGRlZmF1bHRzLnN0YXJ0V2Vic2VydmljZURlZmF1bHQoKSApOwotICAgIHNldERlZmF1bHRCb29sZWFuSWZOb0RlZmF1bHQoUFJFRkVSRU5DRV9URVNUX1dFQlNFUlZJQ0UsIGRlZmF1bHRzLnRlc3RXZWJzZXJ2aWNlRGVmYXVsdCgpICk7Ci0gICAgc2V0RGVmYXVsdEJvb2xlYW5JZk5vRGVmYXVsdChQUkVGRVJFTkNFX01PTklUT1JfV0VCU0VSVklDRSwgZGVmYXVsdHMuZ2V0TW9uaXRvcldlYlNlcnZpY2VEZWZhdWx0KCkpOwotICAgIHNldERlZmF1bHRCb29sZWFuSWZOb0RlZmF1bHQoUFJFRkVSRU5DRV9MQVVOQ0hfU0FNUExFLCBkZWZhdWx0cy5sYXVuY2hTYW1wbGUoKSApOwotICAgIAotICAgIHNldERlZmF1bHRJbnRJZk5vRGVmYXVsdChQUkVGRVJFTkNFX0dFTkVSQVRFX1dFQlNFUlZJQ0UsIGRlZmF1bHRzLnNlcnZpY2VHZW5lcmF0aW9uRGVmYXVsdCgpKTsgLy9qdmgKLSAgICBzZXREZWZhdWx0SW50SWZOb0RlZmF1bHQoUFJFRkVSRU5DRV9HRU5FUkFURV9DTElFTlQsIGRlZmF1bHRzLmNsaWVudEdlbmVyYXRpb25EZWZhdWx0KCkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZ1tdIGdldE5vbkphdmFUZXN0U2VydmljZSgpCi0gIHsKLSAgICBXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gV2ViU2VydmljZVRlc3RSZWdpc3RyeS5nZXRJbnN0YW5jZSgpOwotICAgIFN0cmluZ1tdIGlkcyA9IGdldFdlYlNlcnZpY2VUZXN0SWRzKCk7Ci0gICAgVmVjdG9yIG5ld1Rlc3RDYXNlcyA9IG5ldyBWZWN0b3IoKTsKLQlmb3IgKGludCBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBXZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbiB3c2UgPSAoV2ViU2VydmljZVRlc3RFeHRlbnNpb24pIHJlZ2lzdHJ5Ci0gICAgICAgICAgLmdldFdlYlNlcnZpY2VFeHRlbnNpb25zQnlJZChpZHNbaV0pOwotICAgICAgaWYgKHdzZSAhPSBudWxsICYmIHdzZS50ZXN0V1NETCgpKSAKLQkJICBuZXdUZXN0Q2FzZXMuYWRkRWxlbWVudCh3c2UuZ2V0TGFiZWwoKSk7Ci0gICAgfQotCVN0cmluZ1tdIHdzZGxUZXN0QXJyYXkgPSBuZXcgU3RyaW5nW25ld1Rlc3RDYXNlcy5zaXplKCldOwotCUVudW1lcmF0aW9uIGUgPSBuZXdUZXN0Q2FzZXMuZWxlbWVudHMoKTsKLQlpbnQgaSA9IDA7Ci0Jd2hpbGUoZS5oYXNNb3JlRWxlbWVudHMoKSl7Ci0JICB3c2RsVGVzdEFycmF5W2ldID0gKFN0cmluZyllLm5leHRFbGVtZW50KCk7Ci0JICBpKys7Ci0JfQotCQotCXJldHVybiB3c2RsVGVzdEFycmF5OwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlVGVzdElkcyhTdHJpbmdbXSBpZHMpCi0gIHsKLQlTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0JZm9yIChpbnQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspCi0JewotCSAgaWYgKGkgIT0gMCkgc2IuYXBwZW5kKCIsIik7Ci0JICBzYi5hcHBlbmQoaWRzW2ldKTsKLQl9Ci0Jc2V0VmFsdWUoUFJFRkVSRU5DRV9XRUJTRVJWSUNFX1RFU1RfVFlQRVMsIHNiLnRvU3RyaW5nKCkpOyAgCi0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nW10gZ2V0V2ViU2VydmljZVRlc3RJZHMoU3RyaW5nIHZhbHVlKQotICB7Ci0JU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcih2YWx1ZSwgIiwiKTsKLQlTdHJpbmdbXSBzID0gbmV3IFN0cmluZ1tzdC5jb3VudFRva2VucygpXTsKLQlmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHsKLQkgIC8vIDE1NDU0Mzogd2UgaGF2ZSB0byBjb250aW51ZSB0byBpbnRlcnByZXQgdGhlIG9sZCBsYWJlbCBzdHlsZSBwcmVmZXJlbmNlcwotCSAgc1tpXSA9IFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5sYWJlbFRvSWQoc3QubmV4dFRva2VuKCkpOwotCX0KLQlyZXR1cm4gczsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRXZWJTZXJ2aWNlVGVzdElkcygpCi0gIHsKLQlyZXR1cm4gZ2V0V2ViU2VydmljZVRlc3RJZHMoZ2V0VmFsdWVBc1N0cmluZyhQUkVGRVJFTkNFX1dFQlNFUlZJQ0VfVEVTVF9UWVBFUykpOyAKLSAgfSAgCi0gIAotICBwdWJsaWMgU3RyaW5nW10gZ2V0RGVmYXVsdFdlYlNlcnZpY2VUZXN0SWRzKCkKLSAgewotCXJldHVybiBnZXRXZWJTZXJ2aWNlVGVzdElkcyhnZXREZWZhdWx0U3RyaW5nKFBSRUZFUkVOQ0VfV0VCU0VSVklDRV9URVNUX1RZUEVTKSk7IAotICB9CQotICAKLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZVRlc3RUeXBlcyhTdHJpbmdbXSBpZHMpCi0gIHsKLQkvLyAxNTQ1NDM6IGRlcHJlY2F0ZWQsIG5vb3AKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRXZWJTZXJ2aWNlVGVzdFR5cGVzKCkKLSAgewotCVdlYlNlcnZpY2VUZXN0UmVnaXN0cnkgcmVnaXN0cnkgPSBXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0JU3RyaW5nW10gaWRzID0gZ2V0V2ViU2VydmljZVRlc3RJZHMoKTsgIAotICAgIFZlY3RvciBsYWJlbHMgPSBuZXcgVmVjdG9yKCk7Ci0JZm9yIChpbnQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgV2ViU2VydmljZVRlc3RFeHRlbnNpb24gd3NlID0gKFdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uKSByZWdpc3RyeQotICAgICAgICAgIC5nZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5SWQoaWRzW2ldKTsKLSAgICAgIGlmICh3c2UgIT0gbnVsbCkgCi0JCSAgbGFiZWxzLmFkZEVsZW1lbnQod3NlLmdldExhYmVsKCkpOwotICAgIH0JICAJICAKLSAgICBTdHJpbmdbXSBzID0gbmV3IFN0cmluZ1tsYWJlbHMuc2l6ZSgpXTsKLSAgICBsYWJlbHMuY29weUludG8ocyk7Ci0gICAgcmV0dXJuIHM7Ci0gIH0KLQotICBwdWJsaWMgU2NlbmFyaW9Db250ZXh0IGNvcHkoKQotICB7Ci0gICAgVHJhbnNpZW50U2NlbmFyaW9Db250ZXh0IGNvbnRleHQgPSBuZXcgVHJhbnNpZW50U2NlbmFyaW9Db250ZXh0KCk7Ci0gICAgY29udGV4dC5zZXRXZWJTZXJ2aWNlVGVzdElkcyhnZXRXZWJTZXJ2aWNlVGVzdElkcygpKTsKLSAgICBjb250ZXh0LnNldFdlYlNlcnZpY2VUZXN0VHlwZXMoZ2V0V2ViU2VydmljZVRlc3RUeXBlcygpKTsKLSAgICBjb250ZXh0LnNldE5vbkphdmFUZXN0U2VydmljZShnZXROb25KYXZhVGVzdFNlcnZpY2UoKSk7Ci0gICAgCi0gICAgY29udGV4dC5zZXRDbGllbnRXZWJTZXJ2aWNlVHlwZSggZ2V0Q2xpZW50V2ViU2VydmljZVR5cGUoKSApOwotICAgIGNvbnRleHQuc2V0V2ViU2VydmljZVR5cGUoIGdldFdlYlNlcnZpY2VUeXBlKCkgKTsKLSAgICBjb250ZXh0LnNldExhdW5jaFdlYlNlcnZpY2VFeHBsb3JlciggZ2V0TGF1bmNoV2ViU2VydmljZUV4cGxvcmVyKCkgKTsKLSAgICBjb250ZXh0LnNldFN0YXJ0V2ViU2VydmljZSggZ2V0U3RhcnRXZWJTZXJ2aWNlKCkgKTsKLSAgICBjb250ZXh0LnNldEdlbmVyYXRlUHJveHkoIGdldEdlbmVyYXRlUHJveHkoKSApOwotICAgIGNvbnRleHQuc2V0VGVzdFdlYlNlcnZpY2UoIGdldFRlc3RXZWJTZXJ2aWNlKCkgKTsKLSAgICBjb250ZXh0LnNldE1vbml0b3JXZWJTZXJ2aWNlKGdldE1vbml0b3JXZWJTZXJ2aWNlKCkpOwotICAgIGNvbnRleHQuc2V0TGF1bmNoU2FtcGxlRW5hYmxlZCggaXNMYXVuY2hTYW1wbGVFbmFibGVkKCkgKTsKLSAgICAKLSAgICByZXR1cm4gY29udGV4dDsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNnZXRDbGllbnRXZWJTZXJ2aWNlVHlwZSgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFdlYlNlcnZpY2VUeXBlKCkKLSAgewotICAgIHJldHVybiBnZXRWYWx1ZUFzU3RyaW5nKFBSRUZFUkVOQ0VfQ0xJRU5UX1dFQlNFUlZJQ0VfVFlQRSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50V2ViU2VydmljZVR5cGVEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBnZXREZWZhdWx0U3RyaW5nKFBSRUZFUkVOQ0VfQ0xJRU5UX1dFQlNFUlZJQ0VfVFlQRSk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjZ2V0R2VuZXJhdGVQcm94eSgpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRHZW5lcmF0ZVByb3h5KCkKLSAgewotICAgIHJldHVybiBnZXRWYWx1ZUFzQm9vbGVhbihQUkVGRVJFTkNFX0dFTkVSQVRFX1BST1hZKTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0R2VuZXJhdGVQcm94eURlZmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIGdldERlZmF1bHRCb29sZWFuKFBSRUZFUkVOQ0VfR0VORVJBVEVfUFJPWFkpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldExhdW5jaFdlYlNlcnZpY2VFeHBsb3JlcigpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRMYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXIoKQotICB7Ci0gICAgcmV0dXJuIGdldFZhbHVlQXNCb29sZWFuKFBSRUZFUkVOQ0VfTEFVTkNIX1dFQlNFUlZJQ0VfRVhQTE9SRVIpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRMYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXJEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBnZXREZWZhdWx0Qm9vbGVhbihQUkVGRVJFTkNFX0xBVU5DSF9XRUJTRVJWSUNFX0VYUExPUkVSKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNnZXRTdGFydFdlYlNlcnZpY2UoKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0U3RhcnRXZWJTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBnZXRWYWx1ZUFzQm9vbGVhbihQUkVGRVJFTkNFX1NUQVJUX1dFQlNFUlZJQ0UpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRTdGFydFdlYlNlcnZpY2VEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBnZXREZWZhdWx0Qm9vbGVhbihQUkVGRVJFTkNFX1NUQVJUX1dFQlNFUlZJQ0UpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldEluc3RhbGxXZWJTZXJ2aWNlKCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldEluc3RhbGxXZWJTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBnZXRWYWx1ZUFzQm9vbGVhbihQUkVGRVJFTkNFX0lOU1RBTExfV0VCU0VSVklDRSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldEluc3RhbGxXZWJTZXJ2aWNlRGVmYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gZ2V0RGVmYXVsdEJvb2xlYW4oUFJFRkVSRU5DRV9JTlNUQUxMX1dFQlNFUlZJQ0UpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldEluc3RhbGxXZWJTZXJ2aWNlKCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldEluc3RhbGxDbGllbnQoKQotICB7Ci0gICAgcmV0dXJuIGdldFZhbHVlQXNCb29sZWFuKFBSRUZFUkVOQ0VfSU5TVEFMTF9DTElFTlQpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRJbnN0YWxsQ2xpZW50RGVmYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gZ2V0RGVmYXVsdEJvb2xlYW4oUFJFRkVSRU5DRV9JTlNUQUxMX0NMSUVOVCk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjZ2V0VGVzdFdlYlNlcnZpY2UoKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0VGVzdFdlYlNlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIGdldFZhbHVlQXNCb29sZWFuKFBSRUZFUkVOQ0VfVEVTVF9XRUJTRVJWSUNFKTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0VGVzdFdlYlNlcnZpY2VEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBnZXREZWZhdWx0Qm9vbGVhbihQUkVGRVJFTkNFX1RFU1RfV0VCU0VSVklDRSk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjZ2V0V2ViU2VydmljZVR5cGUoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlVHlwZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0VmFsdWVBc1N0cmluZyhQUkVGRVJFTkNFX1dFQlNFUlZJQ0VfVFlQRSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V2ViU2VydmljZVR5cGVEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBnZXREZWZhdWx0U3RyaW5nKFBSRUZFUkVOQ0VfV0VCU0VSVklDRV9UWVBFKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNzZXRDbGllbnRXZWJTZXJ2aWNlVHlwZShqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q2xpZW50V2ViU2VydmljZVR5cGUoU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgc2V0VmFsdWUoIFBSRUZFUkVOQ0VfQ0xJRU5UX1dFQlNFUlZJQ0VfVFlQRSwgdmFsdWUpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I3NldEdlbmVyYXRlUHJveHkoYm9vbGVhbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEdlbmVyYXRlUHJveHkoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHNldFZhbHVlKCBQUkVGRVJFTkNFX0dFTkVSQVRFX1BST1hZLCB2YWx1ZSk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjc2V0TGF1bmNoV2ViU2VydmljZUV4cGxvcmVyKGJvb2xlYW4pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXIoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHNldFZhbHVlKCBQUkVGRVJFTkNFX0xBVU5DSF9XRUJTRVJWSUNFX0VYUExPUkVSLCB2YWx1ZSk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjc2V0SW5zdGFsbFdlYlNlcnZpY2UoYm9vbGVhbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEluc3RhbGxXZWJTZXJ2aWNlKGJvb2xlYW4gdmFsdWUpCi0gIHsKLSAgICBzZXRWYWx1ZSggUFJFRkVSRU5DRV9JTlNUQUxMX1dFQlNFUlZJQ0UsIHZhbHVlKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNzZXRJbnN0YWxsV2ViU2VydmljZShib29sZWFuKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SW5zdGFsbENsaWVudChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgc2V0VmFsdWUoIFBSRUZFUkVOQ0VfSU5TVEFMTF9DTElFTlQsIHZhbHVlKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNzZXRTdGFydFdlYlNlcnZpY2UoYm9vbGVhbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFN0YXJ0V2ViU2VydmljZShib29sZWFuIHZhbHVlKQotICB7Ci0gICAgc2V0VmFsdWUoIFBSRUZFUkVOQ0VfU1RBUlRfV0VCU0VSVklDRSwgdmFsdWUpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I3NldFRlc3RXZWJTZXJ2aWNlKGJvb2xlYW4pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUZXN0V2ViU2VydmljZShib29sZWFuIHZhbHVlKQotICB7Ci0gICAgc2V0VmFsdWUoIFBSRUZFUkVOQ0VfVEVTVF9XRUJTRVJWSUNFLCB2YWx1ZSk7Ci0gIH0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNzZXRXZWJTZXJ2aWNlVHlwZShqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZVR5cGUoU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgc2V0VmFsdWUoIFBSRUZFUkVOQ0VfV0VCU0VSVklDRV9UWVBFLCB2YWx1ZSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldE1vbml0b3JXZWJTZXJ2aWNlKCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldE1vbml0b3JXZWJTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBnZXRWYWx1ZUFzQm9vbGVhbihQUkVGRVJFTkNFX01PTklUT1JfV0VCU0VSVklDRSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldE1vbml0b3JXZWJTZXJ2aWNlRGVmYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gZ2V0RGVmYXVsdEJvb2xlYW4oUFJFRkVSRU5DRV9NT05JVE9SX1dFQlNFUlZJQ0UpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNzZXRNb25pdG9yV2ViU2VydmljZShib29sZWFuKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TW9uaXRvcldlYlNlcnZpY2UoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHNldFZhbHVlKFBSRUZFUkVOQ0VfTU9OSVRPUl9XRUJTRVJWSUNFLCB2YWx1ZSk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjZ2V0TGF1bmNoU2FtcGxlRW5hYmxlZERlZmF1bHQoKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0TGF1bmNoU2FtcGxlRW5hYmxlZERlZmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIGdldERlZmF1bHRCb29sZWFuKFBSRUZFUkVOQ0VfTEFVTkNIX1NBTVBMRSk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjaXNMYXVuY2hTYW1wbGVFbmFibGVkKCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzTGF1bmNoU2FtcGxlRW5hYmxlZCgpCi0gIHsKLSAgICByZXR1cm4gZ2V0VmFsdWVBc0Jvb2xlYW4oUFJFRkVSRU5DRV9MQVVOQ0hfU0FNUExFKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNzZXRMYXVuY2hTYW1wbGVFbmFibGVkKGJvb2xlYW4pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMYXVuY2hTYW1wbGVFbmFibGVkKGJvb2xlYW4gdmFsdWUpCi0gIHsKLSAgICBzZXRWYWx1ZSggUFJFRkVSRU5DRV9MQVVOQ0hfU0FNUExFLCB2YWx1ZSk7Ci0gIH0KLSAgCi0gIC8vanZoCi0gIHB1YmxpYyBpbnQgZ2V0R2VuZXJhdGVXZWJTZXJ2aWNlKCkKLSAgewotCSAgcmV0dXJuIGdldFZhbHVlQXNJbnQoUFJFRkVSRU5DRV9HRU5FUkFURV9XRUJTRVJWSUNFKTsKLSAgfQotICAKLSAgcHVibGljIGludCBnZXRHZW5lcmF0ZVdlYlNlcnZpY2VEZWZhdWx0KCkKLSAgewotCSAgcmV0dXJuIGdldERlZmF1bHRJbnQoUFJFRkVSRU5DRV9HRU5FUkFURV9XRUJTRVJWSUNFKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0R2VuZXJhdGVXZWJTZXJ2aWNlKGludCB2YWx1ZSkKLSAgewotCSAgc2V0VmFsdWUoUFJFRkVSRU5DRV9HRU5FUkFURV9XRUJTRVJWSUNFLCB2YWx1ZSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBpbnQgZ2V0R2VuZXJhdGVDbGllbnREZWZhdWx0KCkKLSAgewotCSAgcmV0dXJuIGdldERlZmF1bHRJbnQoUFJFRkVSRU5DRV9HRU5FUkFURV9DTElFTlQpOwotICB9Ci0gIAotICBwdWJsaWMgaW50IGdldEdlbmVyYXRlQ2xpZW50KCkKLSAgewotCSAgcmV0dXJuIGdldFZhbHVlQXNJbnQoUFJFRkVSRU5DRV9HRU5FUkFURV9DTElFTlQpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0ZUNsaWVudChpbnQgdmFsdWUpCi0gIHsKLQkgIHNldFZhbHVlKFBSRUZFUkVOQ0VfR0VORVJBVEVfQ0xJRU5ULCB2YWx1ZSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29udGV4dC9QZXJzaXN0ZW50VURESVByZWZlcmVuY2VDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvUGVyc2lzdGVudFVERElQcmVmZXJlbmNlQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDJiMWVkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29udGV4dC9QZXJzaXN0ZW50VURESVByZWZlcmVuY2VDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwucGx1Z2luLldlYlNlcnZpY2VQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbnRleHQuUGVyc2lzdGVudENvbnRleHQ7Ci0KLQotcHVibGljIGNsYXNzIFBlcnNpc3RlbnRVRERJUHJlZmVyZW5jZUNvbnRleHQgZXh0ZW5kcyBQZXJzaXN0ZW50Q29udGV4dCBpbXBsZW1lbnRzIFVERElQcmVmZXJlbmNlQ29udGV4dAotewotICBwdWJsaWMgUGVyc2lzdGVudFVERElQcmVmZXJlbmNlQ29udGV4dCgpCi0gIHsKLSAgICBzdXBlcihXZWJTZXJ2aWNlUGx1Z2luLmdldEluc3RhbmNlKCkpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgbG9hZCgpCi0gIHsKLSAgICBzZXREZWZhdWx0KFBSRUZFUkVOQ0VfVURESV9DQVRfREFUQV9DT0xVTU5fREVMSU1JVEVSLCBVRERJUHJlZmVyZW5jZURlZmF1bHRzLmdldFVkZGlDYXREYXRhQ29sdW1uRGVsaW1pdGVyKCkpOwotICAgIHNldERlZmF1bHQoUFJFRkVSRU5DRV9VRERJX0NBVF9EQVRBX1NUUklOR19ERUxJTUlURVIsIFVERElQcmVmZXJlbmNlRGVmYXVsdHMuZ2V0VWRkaUNhdERhdGFTdHJpbmdEZWxpbWl0ZXIoKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRVZGRpQ2F0RGF0YUNvbHVtbkRlbGltaXRlcihTdHJpbmcgZGVsaW1pdGVyKQotICB7Ci0gICAgc2V0VmFsdWUoUFJFRkVSRU5DRV9VRERJX0NBVF9EQVRBX0NPTFVNTl9ERUxJTUlURVIsIGRlbGltaXRlcik7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFVkZGlDYXREYXRhQ29sdW1uRGVsaW1pdGVyKCkKLSAgewotICAgIHJldHVybiBnZXRWYWx1ZUFzU3RyaW5nKFBSRUZFUkVOQ0VfVURESV9DQVRfREFUQV9DT0xVTU5fREVMSU1JVEVSKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFVkZGlDYXREYXRhU3RyaW5nRGVsaW1pdGVyKFN0cmluZyBkZWxpbWl0ZXIpCi0gIHsKLSAgICBzZXRWYWx1ZShQUkVGRVJFTkNFX1VERElfQ0FUX0RBVEFfU1RSSU5HX0RFTElNSVRFUiwgZGVsaW1pdGVyKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VWRkaUNhdERhdGFTdHJpbmdEZWxpbWl0ZXIoKQotICB7Ci0gICAgcmV0dXJuIGdldFZhbHVlQXNTdHJpbmcoUFJFRkVSRU5DRV9VRERJX0NBVF9EQVRBX1NUUklOR19ERUxJTUlURVIpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvU2NlbmFyaW9Db250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvU2NlbmFyaW9Db250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxN2Q2NjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb250ZXh0L1NjZW5hcmlvQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMTQgICAxNTQ1NDMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkgaXMgdHJhY2tpbmcgZXh0ZW5zaW9ucyB1c2luZyBsYWJlbCBhdHRyaWJ1dGUgaW5zdGVhZCBvZiBJRAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0OwotCi1wdWJsaWMgaW50ZXJmYWNlIFNjZW5hcmlvQ29udGV4dCAKLXsKLSAgcHVibGljIGZpbmFsIFN0cmluZyBQUkVGRVJFTkNFX1dFQlNFUlZJQ0VfVEVTVF9UWVBFUyA9ICJ3ZWJTZXJ2aWNlVGVzdFR5cGVzIjsKLSAgICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBQUkVGRVJFTkNFX05PTl9KQVZBX1RFU1RfU0VSVklDRT0gIm5vbkphdmFUZXN0U2VydmljZSI7Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfV0VCU0VSVklDRV9UWVBFID0gIndlYlNlcnZpY2VUeXBlIjsKLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9TVEFSVF9XRUJTRVJWSUNFID0gInN0YXJ0V2ViU2VydmljZSI7Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfSU5TVEFMTF9XRUJTRVJWSUNFID0gImluc3RhbGxXZWJTZXJ2aWNlIjsKLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9JTlNUQUxMX0NMSUVOVCA9ICJpbnN0YWxsQ2xpZW50IjsKLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9MQVVOQ0hfV0VCU0VSVklDRV9FWFBMT1JFUiA9ICJsYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXIiOwotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBQUkVGRVJFTkNFX0dFTkVSQVRFX1BST1hZID0gImdlbmVyYXRlUHJveHkiOwotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBQUkVGRVJFTkNFX0NMSUVOVF9XRUJTRVJWSUNFX1RZUEUgPSAiY2xpZW50V2ViU2VydmljZVR5cGUiOwotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBQUkVGRVJFTkNFX1RFU1RfV0VCU0VSVklDRSA9ICJ0ZXN0V2ViU2VydmljZSI7Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfTU9OSVRPUl9XRUJTRVJWSUNFID0gIm1vbml0b3JXZWJTZXJ2aWNlIjsKLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9MQVVOQ0hfU0FNUExFID0gImxhdW5jaFNhbXBsZSI7Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfR0VORVJBVEVfV0VCU0VSVklDRSA9ICJnZW5lcmF0ZVdlYlNlcnZpY2UiOyAvL2p2aAotICBwdWJsaWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfR0VORVJBVEVfQ0xJRU5UID0gImdlbmVyYXRlQ2xpZW50IjsgLy9qdmggIAotICAKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgV1NfVEVTVD0wOwotICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBXU19TVEFSVD0xOwotICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBXU19JTlNUQUxMPTI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdTX0RFUExPWT0zOyAgCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdTX0FTU0VNQkxFPTQ7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdTX0RFVkVMT1A9NTsgIAotICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBXU19OT05FPTY7Ci0gIAotICBwdWJsaWMgU3RyaW5nW10gZ2V0V2ViU2VydmljZVRlc3RJZHMoKTsKLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZVRlc3RJZHMoU3RyaW5nW10gaWRzKTsKLSAgCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRXZWJTZXJ2aWNlVGVzdFR5cGVzKCk7Ci0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VUZXN0VHlwZXMoU3RyaW5nW10gdGVzdFR5cGVzKTsKLSAgCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXROb25KYXZhVGVzdFNlcnZpY2UoKTsKLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V2ViU2VydmljZVR5cGUoKTsKLSAgcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlVHlwZURlZmF1bHQoKTsKLSAgcHVibGljIHZvaWQgICBzZXRXZWJTZXJ2aWNlVHlwZSggU3RyaW5nIHZhbHVlICk7Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRJbnN0YWxsV2ViU2VydmljZSgpOwotICBwdWJsaWMgYm9vbGVhbiBnZXRJbnN0YWxsV2ViU2VydmljZURlZmF1bHQoKTsKLSAgcHVibGljIHZvaWQgICAgc2V0SW5zdGFsbFdlYlNlcnZpY2UoIGJvb2xlYW4gdmFsdWUgKTsKLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldEluc3RhbGxDbGllbnQoKTsKLSAgcHVibGljIGJvb2xlYW4gZ2V0SW5zdGFsbENsaWVudERlZmF1bHQoKTsKLSAgcHVibGljIHZvaWQgICAgc2V0SW5zdGFsbENsaWVudCggYm9vbGVhbiB2YWx1ZSApOwotICAgIAotICBwdWJsaWMgYm9vbGVhbiBnZXRTdGFydFdlYlNlcnZpY2UoKTsKLSAgcHVibGljIGJvb2xlYW4gZ2V0U3RhcnRXZWJTZXJ2aWNlRGVmYXVsdCgpOwotICBwdWJsaWMgdm9pZCAgICBzZXRTdGFydFdlYlNlcnZpY2UoIGJvb2xlYW4gdmFsdWUgKTsKLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldExhdW5jaFdlYlNlcnZpY2VFeHBsb3JlcigpOwotICBwdWJsaWMgYm9vbGVhbiBnZXRMYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXJEZWZhdWx0KCk7Ci0gIHB1YmxpYyB2b2lkICAgIHNldExhdW5jaFdlYlNlcnZpY2VFeHBsb3JlciggYm9vbGVhbiB2YWx1ZSApOwotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0R2VuZXJhdGVQcm94eSgpOwotICBwdWJsaWMgYm9vbGVhbiBnZXRHZW5lcmF0ZVByb3h5RGVmYXVsdCgpOwotICBwdWJsaWMgdm9pZCAgICBzZXRHZW5lcmF0ZVByb3h5KCBib29sZWFuIHZhbHVlICk7Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFdlYlNlcnZpY2VUeXBlKCk7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50V2ViU2VydmljZVR5cGVEZWZhdWx0KCk7Ci0gIHB1YmxpYyB2b2lkICAgc2V0Q2xpZW50V2ViU2VydmljZVR5cGUoIFN0cmluZyB2YWx1ZSApOwotICAKLSAgcHVibGljIGJvb2xlYW4gZ2V0VGVzdFdlYlNlcnZpY2UoKTsKLSAgcHVibGljIGJvb2xlYW4gZ2V0VGVzdFdlYlNlcnZpY2VEZWZhdWx0KCk7Ci0gIHB1YmxpYyB2b2lkICAgIHNldFRlc3RXZWJTZXJ2aWNlKCBib29sZWFuIHZhbHVlICk7Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRNb25pdG9yV2ViU2VydmljZSgpOwotICBwdWJsaWMgYm9vbGVhbiBnZXRNb25pdG9yV2ViU2VydmljZURlZmF1bHQoKTsKLSAgcHVibGljIHZvaWQgc2V0TW9uaXRvcldlYlNlcnZpY2UoYm9vbGVhbiB2YWx1ZSk7Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBpc0xhdW5jaFNhbXBsZUVuYWJsZWQoKTsKLSAgcHVibGljIGJvb2xlYW4gZ2V0TGF1bmNoU2FtcGxlRW5hYmxlZERlZmF1bHQoKTsKLSAgcHVibGljIHZvaWQgICAgc2V0TGF1bmNoU2FtcGxlRW5hYmxlZCggYm9vbGVhbiB2YWx1ZSApOwotICAKLSAgcHVibGljIGludCBnZXRHZW5lcmF0ZVdlYlNlcnZpY2VEZWZhdWx0KCk7Ci0gIHB1YmxpYyBpbnQgZ2V0R2VuZXJhdGVXZWJTZXJ2aWNlKCk7Ci0gIHB1YmxpYyB2b2lkIHNldEdlbmVyYXRlV2ViU2VydmljZShpbnQgdmFsdWUpOwotICAKLSAgcHVibGljIGludCBnZXRHZW5lcmF0ZUNsaWVudERlZmF1bHQoKTsKLSAgcHVibGljIGludCBnZXRHZW5lcmF0ZUNsaWVudCgpOwotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0ZUNsaWVudChpbnQgdmFsdWUpOwotICAKLSAgcHVibGljIFNjZW5hcmlvQ29udGV4dCBjb3B5KCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvU2NlbmFyaW9EZWZhdWx0cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb250ZXh0L1NjZW5hcmlvRGVmYXVsdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY0ZTE1MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvU2NlbmFyaW9EZWZhdWx0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMTQgICAxNTQ1NDMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkgaXMgdHJhY2tpbmcgZXh0ZW5zaW9ucyB1c2luZyBsYWJlbCBhdHRyaWJ1dGUgaW5zdGVhZCBvZiBJRAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0OwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZGF0YS5MYWJlbHNBbmRJZHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0LldlYlNlcnZpY2VUZXN0UmVnaXN0cnk7Ci0KLQotCi1wdWJsaWMgY2xhc3MgU2NlbmFyaW9EZWZhdWx0cwoteyAgCi0gIAotCQotICBwdWJsaWMgU3RyaW5nW10gZ2V0V2ViU2VydmljZVRlc3RJZHMoKQotICB7Ci0gIAkvL3dlIHdpbGwgc2V0IHRoZSBob21lIGdyb3duIHNhbXBsZSBhcyB0aGUgZmlyc3QgY2hvaWNlCi0gIAlXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5IHRlc3RSZWdpc3RyeSA9IFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkuZ2V0SW5zdGFuY2UoKTsKLSAgCQotICAJTGFiZWxzQW5kSWRzIGxhYmVsc2FuZGlkcyA9IHRlc3RSZWdpc3RyeS5nZXRMYWJlbHNBbmRJRHMoKTsKLSAgCVN0cmluZ1tdIGlkcyA9IGxhYmVsc2FuZGlkcy5nZXRJZHNfKCk7Ci0gIAkKLSAgCVN0cmluZ1tdIG5ld0lkcyA9IG5ldyBTdHJpbmdbaWRzLmxlbmd0aF07Ci0gIAlpbnQgaW5kZXggPSAtMTsKLSAgCWZvcihpbnQgaSA9IDA7aTxpZHMubGVuZ3RoO2krKyl7Ci0gIAkgIGlmKGlkc1tpXS5lcXVhbHMoIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aWRnZXRzLnRlc3QuV2ViU2VydmljZVNhbXBsZVRlc3QiKSkgIAkKLSAgCSAgICBpbmRleCA9IGk7ICAgCi0gIAl9Ci0gIAlpZihpbmRleCAhPSAtMSl7Ci0gIAkgIG5ld0lkc1swXSA9IGlkc1tpbmRleF07Ci0gIAkgIGludCBqID0gMTsKLSAgCSAgZm9yKGludCBpID0gMDtpPGlkcy5sZW5ndGg7aSsrKXsKLSAgCSAgICBpZihpICE9IGluZGV4KXsKLSAgCSAgCSAgbmV3SWRzW2pdID0gaWRzW2ldOyAKLSAgCSAgICAgIGorKzsKLSAgCSAgICB9Ci0gIAkgIH0KLSAgCX0KLSAgCWVsc2UgcmV0dXJuIGlkczsKLSAgCQotICAJcmV0dXJuIG5ld0lkczsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXROb25KYXZhVGVzdFNlcnZpY2VEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiAiV2ViIFNlcnZpY2VzIEV4cGxvcmVyIjsJCi0gIH0gCi0gIAotICBwdWJsaWMgU3RyaW5nIHdlYnNlcnZpY2VUeXBlSWREZWZhdWx0KCkKLSAgewotICAgIHJldHVybiAiMC9vcmcuZWNsaXBzZS5qc3Qud3Mud3NJbXBsLmphdmEiOwotICB9Ci0gIAotICBwdWJsaWMgaW50IHNlcnZpY2VHZW5lcmF0aW9uRGVmYXVsdCgpCi0gIHsKLQkgIHJldHVybiBTY2VuYXJpb0NvbnRleHQuV1NfU1RBUlQ7ICAKLSAgfQotICAKLSAgcHVibGljIGludCBjbGllbnRHZW5lcmF0aW9uRGVmYXVsdCgpCi0gIHsKLQkgIHJldHVybiBTY2VuYXJpb0NvbnRleHQuV1NfTk9ORTsgIAotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBzdGFydFdlYnNlcnZpY2VEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBpbnN0YWxsV2Vic2VydmljZURlZmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGluc3RhbGxDbGllbnREZWZhdWx0KCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBsYXVuY2hXZWJzZXJ2aWNlRXhwbG9yZXJEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZ2VuZXJhdGVQcm94eURlZmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIHdlYnNlcnZpY2VDbGllbnRUeXBlRGVmYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gIm9yZy5lY2xpcHNlLmpzdC53cy5jbGllbnQudHlwZS5qYXZhIjsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gdGVzdFdlYnNlcnZpY2VEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGdldE1vbml0b3JXZWJTZXJ2aWNlRGVmYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGxhdW5jaFNhbXBsZSgpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb250ZXh0L1RyYW5zaWVudFNjZW5hcmlvQ29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb250ZXh0L1RyYW5zaWVudFNjZW5hcmlvQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWNlOTg5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29udGV4dC9UcmFuc2llbnRTY2VuYXJpb0NvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzE0ICAgMTU0NTQzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5IGlzIHRyYWNraW5nIGV4dGVuc2lvbnMgdXNpbmcgbGFiZWwgYXR0cmlidXRlIGluc3RlYWQgb2YgSUQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0OwotCi1wdWJsaWMgY2xhc3MgVHJhbnNpZW50U2NlbmFyaW9Db250ZXh0IGltcGxlbWVudHMgU2NlbmFyaW9Db250ZXh0Ci17Ci0gIHByaXZhdGUgU3RyaW5nW10gd2ViU2VydmljZVRlc3RJZHM7Ci0gIHByaXZhdGUgU3RyaW5nW10gd2ViU2VydmljZVRlc3RUeXBlczsKLSAgcHJpdmF0ZSBTdHJpbmdbXSBub25KYXZhVGVzdFNlcnZpY2U7Ci0gIHByaXZhdGUgU3RyaW5nICAgd2ViU2VydmljZVR5cGVfOwotICBwcml2YXRlIGJvb2xlYW4gIGluc3RhbGxXZWJTZXJ2aWNlXzsKLSAgcHJpdmF0ZSBib29sZWFuICBpbnN0YWxsQ2xpZW50XzsKLSAgcHJpdmF0ZSBib29sZWFuICBzdGFydFdlYlNlcnZpY2VfOwotICBwcml2YXRlIGJvb2xlYW4gIGxhdW5jaFdlYlNlcnZpY2VFeHBsb3Jlcl87Ci0gIHByaXZhdGUgYm9vbGVhbiAgZ2VuZXJhdGVQcm94eV87Ci0gIHByaXZhdGUgU3RyaW5nICAgY2xpZW50V2ViU2VydmljZVR5cGVfOwotICBwcml2YXRlIGJvb2xlYW4gIHRlc3RXZWJTZXJ2aWNlXzsKLSAgcHJpdmF0ZSBib29sZWFuICBtb25pdG9yV2ViU2VydmljZTsKLSAgcHJpdmF0ZSBib29sZWFuICBsYXVuY2hTYW1wbGVfOwotICBwcml2YXRlIGludCBnZW5lcmF0ZVdlYlNlcnZpY2VfOyAvL2p2aAotICBwcml2YXRlIGludCBnZW5lcmF0ZUNsaWVudF87IC8vanZoCi0gIAotICBwcml2YXRlIFNjZW5hcmlvRGVmYXVsdHMgZGVmYXVsdHMgPSBuZXcgU2NlbmFyaW9EZWZhdWx0cygpOwotIAotICBwdWJsaWMgVHJhbnNpZW50U2NlbmFyaW9Db250ZXh0ICgpIHt9Ci0KLSAgcHVibGljIFN0cmluZ1tdIGdldE5vbkphdmFUZXN0U2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gbm9uSmF2YVRlc3RTZXJ2aWNlOwotICB9Ci0gCi0gIHB1YmxpYyB2b2lkIHNldE5vbkphdmFUZXN0U2VydmljZShTdHJpbmdbXSBub25KYXZhVGVzdFNlcnZpY2UpCi0gIHsKLSAgICB0aGlzLm5vbkphdmFUZXN0U2VydmljZSA9IG5vbkphdmFUZXN0U2VydmljZTsJCi0gIH0KLSAKLSAgcHVibGljIHZvaWQgc2V0V2ViU2VydmljZVRlc3RJZHMoU3RyaW5nW10gd2ViU2VydmljZVRlc3RJZHMpIHsKLSAgICB0aGlzLndlYlNlcnZpY2VUZXN0SWRzID0gd2ViU2VydmljZVRlc3RJZHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRXZWJTZXJ2aWNlVGVzdElkcygpIHsKLSAgICByZXR1cm4gd2ViU2VydmljZVRlc3RJZHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VUZXN0VHlwZXMoU3RyaW5nW10gd2ViU2VydmljZVRlc3RUeXBlcykKLSAgewotICAgIHRoaXMud2ViU2VydmljZVRlc3RUeXBlcyA9IHdlYlNlcnZpY2VUZXN0VHlwZXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRXZWJTZXJ2aWNlVGVzdFR5cGVzKCkKLSAgewotICAgIHJldHVybiB3ZWJTZXJ2aWNlVGVzdFR5cGVzOwkKLSAgfQotIAotICBwdWJsaWMgU2NlbmFyaW9Db250ZXh0IGNvcHkoKSB7Ci0gIAlUcmFuc2llbnRTY2VuYXJpb0NvbnRleHQgY29udGV4dCA9IG5ldyBUcmFuc2llbnRTY2VuYXJpb0NvbnRleHQoKTsKLSAgCWNvbnRleHQuc2V0V2ViU2VydmljZVRlc3RJZHMoZ2V0V2ViU2VydmljZVRlc3RJZHMoKSk7Ci0JY29udGV4dC5zZXRXZWJTZXJ2aWNlVGVzdFR5cGVzKGdldFdlYlNlcnZpY2VUZXN0VHlwZXMoKSk7Ci0JY29udGV4dC5zZXROb25KYXZhVGVzdFNlcnZpY2UoZ2V0Tm9uSmF2YVRlc3RTZXJ2aWNlKCkpOwotCQotCWNvbnRleHQuc2V0V2ViU2VydmljZVR5cGUoIGdldFdlYlNlcnZpY2VUeXBlKCkgKTsKLQljb250ZXh0LnNldENsaWVudFdlYlNlcnZpY2VUeXBlKCBnZXRDbGllbnRXZWJTZXJ2aWNlVHlwZSgpICk7Ci0JY29udGV4dC5zZXRHZW5lcmF0ZVByb3h5KCBnZXRHZW5lcmF0ZVByb3h5KCkgKTsKLQljb250ZXh0LnNldExhdW5jaFdlYlNlcnZpY2VFeHBsb3JlciggZ2V0TGF1bmNoV2ViU2VydmljZUV4cGxvcmVyKCkgKTsKLQljb250ZXh0LnNldEluc3RhbGxXZWJTZXJ2aWNlKCBnZXRJbnN0YWxsV2ViU2VydmljZSgpICk7Ci0JY29udGV4dC5zZXRJbnN0YWxsQ2xpZW50KCBnZXRJbnN0YWxsQ2xpZW50KCkgKTsKLQljb250ZXh0LnNldFN0YXJ0V2ViU2VydmljZSggZ2V0U3RhcnRXZWJTZXJ2aWNlKCkgKTsKLQljb250ZXh0LnNldFRlc3RXZWJTZXJ2aWNlKCBnZXRUZXN0V2ViU2VydmljZSgpICk7Ci0JY29udGV4dC5zZXRNb25pdG9yV2ViU2VydmljZShnZXRNb25pdG9yV2ViU2VydmljZSgpKTsKLQljb250ZXh0LnNldExhdW5jaFNhbXBsZUVuYWJsZWQoIGlzTGF1bmNoU2FtcGxlRW5hYmxlZCgpICk7Ci0JY29udGV4dC5zZXRHZW5lcmF0ZVdlYlNlcnZpY2UoZ2V0R2VuZXJhdGVXZWJTZXJ2aWNlKCkpOyAgLy9qdmgKLQlyZXR1cm4gY29udGV4dDsKLSAgfQotIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldENsaWVudFdlYlNlcnZpY2VUeXBlKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50V2ViU2VydmljZVR5cGUoKQotICB7Ci0gICAgcmV0dXJuIGNsaWVudFdlYlNlcnZpY2VUeXBlXzsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRDbGllbnRXZWJTZXJ2aWNlVHlwZURlZmF1bHQoKXsgcmV0dXJuIGRlZmF1bHRzLndlYnNlcnZpY2VDbGllbnRUeXBlRGVmYXVsdCgpOyB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldEdlbmVyYXRlUHJveHkoKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0R2VuZXJhdGVQcm94eSgpCi0gIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVQcm94eV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldEdlbmVyYXRlUHJveHlEZWZhdWx0KCl7IHJldHVybiBkZWZhdWx0cy5nZW5lcmF0ZVByb3h5RGVmYXVsdCgpOyB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldExhdW5jaFdlYlNlcnZpY2VFeHBsb3JlcigpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRMYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXIoKQotICB7Ci0gICAgcmV0dXJuIGxhdW5jaFdlYlNlcnZpY2VFeHBsb3Jlcl87Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldExhdW5jaFdlYlNlcnZpY2VFeHBsb3JlckRlZmF1bHQoKXsgcmV0dXJuIGRlZmF1bHRzLmxhdW5jaFdlYnNlcnZpY2VFeHBsb3JlckRlZmF1bHQoKTsgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNnZXRJbnN0YWxsV2ViU2VydmljZSgpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRJbnN0YWxsV2ViU2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gaW5zdGFsbFdlYlNlcnZpY2VfOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRJbnN0YWxsV2ViU2VydmljZURlZmF1bHQoKXsgcmV0dXJuIGRlZmF1bHRzLmluc3RhbGxXZWJzZXJ2aWNlRGVmYXVsdCgpOyB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldEluc3RhbGxXZWJTZXJ2aWNlKCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldEluc3RhbGxDbGllbnQoKQotICB7Ci0gICAgcmV0dXJuIGluc3RhbGxDbGllbnRfOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRJbnN0YWxsQ2xpZW50RGVmYXVsdCgpeyByZXR1cm4gZGVmYXVsdHMuaW5zdGFsbENsaWVudERlZmF1bHQoKTsgfQotICAKLSAgCi0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldFN0YXJ0V2ViU2VydmljZSgpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRTdGFydFdlYlNlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIHN0YXJ0V2ViU2VydmljZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGdldFN0YXJ0V2ViU2VydmljZURlZmF1bHQoKXsgcmV0dXJuIGRlZmF1bHRzLnN0YXJ0V2Vic2VydmljZURlZmF1bHQoKTsgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNnZXRUZXN0V2ViU2VydmljZSgpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRUZXN0V2ViU2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gdGVzdFdlYlNlcnZpY2VfOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRUZXN0V2ViU2VydmljZURlZmF1bHQoKXsgcmV0dXJuIGRlZmF1bHRzLnRlc3RXZWJzZXJ2aWNlRGVmYXVsdCgpOyB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2dldFdlYlNlcnZpY2VUeXBlKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V2ViU2VydmljZVR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHdlYlNlcnZpY2VUeXBlXzsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlVHlwZURlZmF1bHQoKXsgcmV0dXJuIGRlZmF1bHRzLndlYnNlcnZpY2VUeXBlSWREZWZhdWx0KCk7IH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjc2V0Q2xpZW50V2ViU2VydmljZVR5cGUoamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENsaWVudFdlYlNlcnZpY2VUeXBlKFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGNsaWVudFdlYlNlcnZpY2VUeXBlXyA9IHZhbHVlOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I3NldEdlbmVyYXRlUHJveHkoYm9vbGVhbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEdlbmVyYXRlUHJveHkoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIGdlbmVyYXRlUHJveHlfID0gdmFsdWU7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjc2V0TGF1bmNoV2ViU2VydmljZUV4cGxvcmVyKGJvb2xlYW4pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMYXVuY2hXZWJTZXJ2aWNlRXhwbG9yZXIoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIGxhdW5jaFdlYlNlcnZpY2VFeHBsb3Jlcl8gPSB2YWx1ZTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNzZXRJbnN0YWxsV2ViU2VydmljZShib29sZWFuKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SW5zdGFsbFdlYlNlcnZpY2UoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIGluc3RhbGxXZWJTZXJ2aWNlXyA9IHZhbHVlOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I3NldEluc3RhbGxXZWJTZXJ2aWNlKGJvb2xlYW4pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRJbnN0YWxsQ2xpZW50KGJvb2xlYW4gdmFsdWUpCi0gIHsKLSAgICBpbnN0YWxsQ2xpZW50XyA9IHZhbHVlOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I3NldFN0YXJ0V2ViU2VydmljZShib29sZWFuKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U3RhcnRXZWJTZXJ2aWNlKGJvb2xlYW4gdmFsdWUpCi0gIHsKLSAgICBzdGFydFdlYlNlcnZpY2VfID0gdmFsdWU7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjc2V0VGVzdFdlYlNlcnZpY2UoYm9vbGVhbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRlc3RXZWJTZXJ2aWNlKGJvb2xlYW4gdmFsdWUpCi0gIHsKLSAgICB0ZXN0V2ViU2VydmljZV8gPSB2YWx1ZTsKLSAgfQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I3NldFdlYlNlcnZpY2VUeXBlKGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlVHlwZShTdHJpbmcgdmFsdWUpCi0gIHsKLSAgICB3ZWJTZXJ2aWNlVHlwZV8gPSB2YWx1ZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjZ2V0TW9uaXRvcldlYlNlcnZpY2UoKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0TW9uaXRvcldlYlNlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIG1vbml0b3JXZWJTZXJ2aWNlOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBnZXRNb25pdG9yV2ViU2VydmljZURlZmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIGRlZmF1bHRzLmdldE1vbml0b3JXZWJTZXJ2aWNlRGVmYXVsdCgpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dCNzZXRNb25pdG9yV2ViU2VydmljZShib29sZWFuKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TW9uaXRvcldlYlNlcnZpY2UoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIG1vbml0b3JXZWJTZXJ2aWNlID0gdmFsdWU7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjZ2V0TGF1bmNoU2FtcGxlRW5hYmxlZERlZmF1bHQoKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0TGF1bmNoU2FtcGxlRW5hYmxlZERlZmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIGRlZmF1bHRzLmxhdW5jaFNhbXBsZSgpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuU2NlbmFyaW9Db250ZXh0I2lzTGF1bmNoU2FtcGxlRW5hYmxlZCgpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0xhdW5jaFNhbXBsZUVuYWJsZWQoKQotICB7Ci0gICAgcmV0dXJuIGxhdW5jaFNhbXBsZV87Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQjc2V0TGF1bmNoU2FtcGxlRW5hYmxlZChib29sZWFuKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TGF1bmNoU2FtcGxlRW5hYmxlZChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgbGF1bmNoU2FtcGxlXyA9IHZhbHVlOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0ZVdlYlNlcnZpY2UoaW50IHZhbHVlKQotICB7Ci0JICBnZW5lcmF0ZVdlYlNlcnZpY2VfID0gdmFsdWU7ICAKLSAgfQotICAKLSAgcHVibGljIGludCBnZXRHZW5lcmF0ZVdlYlNlcnZpY2VEZWZhdWx0KCkKLSAgewotCSAgcmV0dXJuIGRlZmF1bHRzLnNlcnZpY2VHZW5lcmF0aW9uRGVmYXVsdCgpOyAgCi0gIH0gIAotICAKLSAgcHVibGljIGludCBnZXRHZW5lcmF0ZVdlYlNlcnZpY2UoKQotICB7Ci0JICByZXR1cm4gZ2VuZXJhdGVXZWJTZXJ2aWNlXzsgCi0gIH0KLSAgCi0gIHB1YmxpYyBpbnQgZ2V0R2VuZXJhdGVDbGllbnREZWZhdWx0KCkKLSAgewotCSAgcmV0dXJuIGRlZmF1bHRzLmNsaWVudEdlbmVyYXRpb25EZWZhdWx0KCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBpbnQgZ2V0R2VuZXJhdGVDbGllbnQoKQotICB7Ci0JICByZXR1cm4gZ2VuZXJhdGVDbGllbnRfOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0ZUNsaWVudChpbnQgdmFsdWUpCi0gIHsKLQkgIGdlbmVyYXRlQ2xpZW50XyA9IHZhbHVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvVURESVByZWZlcmVuY2VDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvVURESVByZWZlcmVuY2VDb250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyNGFkZGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9jb250ZXh0L1VERElQcmVmZXJlbmNlQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dDsKLQotcHVibGljIGludGVyZmFjZSBVRERJUHJlZmVyZW5jZUNvbnRleHQgCi17Ci0gIC8qCi0gICAqIFRoaXMgY29uc3RhbnQgU3RyaW5nIGlzIHVzZWQgdG8gbG9va3VwIHRoZSBjb2x1bW4gZGVsaW1pdGVyIGZvciB1c2VyLWRlZmluZWQgVURESQotICAgKiBDYXRlZ29yeSBkYXRhLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9VRERJX0NBVF9EQVRBX0NPTFVNTl9ERUxJTUlURVIgPSAidWRkaUNhdERhdGFDb2x1bW5EZWxpbWl0ZXIiOwotICAKLSAgLyoKLSAgICogVGhpcyBjb25zdGFudCBTdHJpbmcgaXMgdXNlZCB0byBsb29rdXAgdGhlIHN0cmluZyBkZWxpbWl0ZXIgZm9yIHVzZXItZGVmaW5lZCBVRERJCi0gICAqIENhdGVnb3J5IGRhdGEuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGRVJFTkNFX1VERElfQ0FUX0RBVEFfU1RSSU5HX0RFTElNSVRFUiA9ICJ1ZGRpQ2F0RGF0YVN0cmluZ0RlbGltaXRlciI7Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRVZGRpQ2F0RGF0YUNvbHVtbkRlbGltaXRlcihTdHJpbmcgZGVsaW1pdGVyKTsKLSAgcHVibGljIFN0cmluZyBnZXRVZGRpQ2F0RGF0YUNvbHVtbkRlbGltaXRlcigpOwotICBwdWJsaWMgdm9pZCBzZXRVZGRpQ2F0RGF0YVN0cmluZ0RlbGltaXRlcihTdHJpbmcgZGVsaW1pdGVyKTsKLSAgcHVibGljIFN0cmluZyBnZXRVZGRpQ2F0RGF0YVN0cmluZ0RlbGltaXRlcigpOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29udGV4dC9VRERJUHJlZmVyZW5jZURlZmF1bHRzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2NvbnRleHQvVURESVByZWZlcmVuY2VEZWZhdWx0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWViYTkxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvY29udGV4dC9VRERJUHJlZmVyZW5jZURlZmF1bHRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0OwotCi1wdWJsaWMgY2xhc3MgVURESVByZWZlcmVuY2VEZWZhdWx0cwotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRVZGRpQ2F0RGF0YUNvbHVtbkRlbGltaXRlcigpCi0gIHsKLSAgICByZXR1cm4gIiMiOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRVZGRpQ2F0RGF0YVN0cmluZ0RlbGltaXRlcigpCi0gIHsKLSAgICByZXR1cm4gIlwiIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9kYXRhL0xhYmVsc0FuZElkcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9kYXRhL0xhYmVsc0FuZElkcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmQwZjY0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZGF0YS9MYWJlbHNBbmRJZHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhOwotCi1wdWJsaWMgY2xhc3MgTGFiZWxzQW5kSWRzCi17Ci0gIHByaXZhdGUgU3RyaW5nW10gbGFiZWxzXzsKLSAgcHJpdmF0ZSBTdHJpbmdbXSBpZHNfOwotICAKLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaWRzXy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRJZHNfKCkKLSAgewotICAgIHJldHVybiBpZHNfOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gaWRzXyBUaGUgaWRzXyB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRJZHNfKFN0cmluZ1tdIGlkc18pCi0gIHsKLSAgICB0aGlzLmlkc18gPSBpZHNfOwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGxhYmVsc18uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nW10gZ2V0TGFiZWxzXygpCi0gIHsKLSAgICByZXR1cm4gbGFiZWxzXzsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIGxhYmVsc18gVGhlIGxhYmVsc18gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TGFiZWxzXyhTdHJpbmdbXSBsYWJlbHNfKQotICB7Ci0gICAgdGhpcy5sYWJlbHNfID0gbGFiZWxzXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9kYXRhL1R5cGVSdW50aW1lU2VydmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2RhdGEvVHlwZVJ1bnRpbWVTZXJ2ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjViNDQ0MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2RhdGEvVHlwZVJ1bnRpbWVTZXJ2ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MTMgICAxMzU1ODEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhOwotCi1wdWJsaWMgY2xhc3MgVHlwZVJ1bnRpbWVTZXJ2ZXIKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgdHlwZUlkXyAgICAgPSAiIjsKLSAgcHJpdmF0ZSBTdHJpbmcgcnVudGltZUlkXyAgPSAiIjsKLSAgcHJpdmF0ZSBTdHJpbmcgc2VydmVySWRfICAgPSAiIjsKLSAgcHJpdmF0ZSBTdHJpbmcgc2VydmVySW5zdGFuY2VJZF87Ci0gIAotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBydW50aW1lSWRfLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSdW50aW1lSWQoKQotICB7Ci0gICAgcmV0dXJuIHJ1bnRpbWVJZF87Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSBydW50aW1lSWRfIFRoZSBydW50aW1lSWRfIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJ1bnRpbWVJZChTdHJpbmcgcnVudGltZUlkXykKLSAgewotICAgIHRoaXMucnVudGltZUlkXyA9IHJ1bnRpbWVJZF87Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgc2VydmVySWRfLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJJZCgpCi0gIHsKLSAgICByZXR1cm4gc2VydmVySWRfOwotICB9Ci0gIC8qKgotICAgKiBAcGFyYW0gc2VydmVySWRfIFRoZSBzZXJ2ZXJJZF8gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2VydmVySWQoU3RyaW5nIHNlcnZlcklkXykKLSAgewotICAgIHRoaXMuc2VydmVySWRfID0gc2VydmVySWRfOwotICB9Ci0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHNlcnZlckluc3RhbmNlSWRfLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJJbnN0YW5jZUlkKCkKLSAgewotICAgIHJldHVybiBzZXJ2ZXJJbnN0YW5jZUlkXzsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIHNlcnZlckluc3RhbmNlSWRfIFRoZSBzZXJ2ZXJJbnN0YW5jZUlkXyB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJJbnN0YW5jZUlkKFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkXykKLSAgewotICAgIHRoaXMuc2VydmVySW5zdGFuY2VJZF8gPSBzZXJ2ZXJJbnN0YW5jZUlkXzsKLSAgfQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSB0eXBlSWRfLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUeXBlSWQoKQotICB7Ci0gICAgcmV0dXJuIHR5cGVJZF87Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSB0eXBlSWRfIFRoZSB0eXBlSWRfIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFR5cGVJZChTdHJpbmcgdHlwZUlkXykKLSAgewotICAgIHRoaXMudHlwZUlkXyA9IHR5cGVJZF87Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I3RvU3RyaW5nKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgcmV0dXJuICJ0eXBlKCIgKyB0eXBlSWRfICsgIikgcnVudGltZSgiICsgcnVudGltZUlkXyArICIpIGZhY3RvcnkoIiArIHNlcnZlcklkXyArICIpIHNlcnZJbnN0SWQoIiArIHNlcnZlckluc3RhbmNlSWRfICsgIikiOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iamVjdCkKLSAgewotCWlmIChvYmplY3QgIT0gbnVsbCAmJiBvYmplY3QgaW5zdGFuY2VvZiBUeXBlUnVudGltZVNlcnZlcikKLQl7Ci0JCVR5cGVSdW50aW1lU2VydmVyIHRycyA9IChUeXBlUnVudGltZVNlcnZlcilvYmplY3Q7Ci0JCVN0cmluZyB0cnNUeXBlSWQgPSB0cnMuZ2V0VHlwZUlkKCk7Ci0JCVN0cmluZyB0cnNSdW50aW1lSWQgPSB0cnMuZ2V0UnVudGltZUlkKCk7Ci0JCVN0cmluZyB0cnNTZXJ2ZXJJZCA9IHRycy5nZXRTZXJ2ZXJJZCgpOwotCQlTdHJpbmcgdHJzU2VydmVySW5zdGFuY2VJZCA9IHRycy5nZXRTZXJ2ZXJJbnN0YW5jZUlkKCk7Ci0JCQotCQlib29sZWFuIHR5cGVJZHNNYXRjaCA9ICgodHlwZUlkXyA9PSBudWxsKSAmJiAodHJzVHlwZUlkID09IG51bGwpKSB8fCAoKHR5cGVJZF8gIT0gbnVsbCkgJiYgKHR5cGVJZF8uZXF1YWxzKHRyc1R5cGVJZCkpKTsKLQkJaWYgKCF0eXBlSWRzTWF0Y2gpIHJldHVybiBmYWxzZTsKLQkJYm9vbGVhbiBydW50aW1lSWRzTWF0Y2ggPSAoKHJ1bnRpbWVJZF8gPT0gbnVsbCkgJiYgKHRyc1J1bnRpbWVJZCA9PSBudWxsKSkgfHwgKChydW50aW1lSWRfICE9IG51bGwpICYmIChydW50aW1lSWRfLmVxdWFscyh0cnNSdW50aW1lSWQpKSk7Ci0JCWlmICghcnVudGltZUlkc01hdGNoKSByZXR1cm4gZmFsc2U7Ci0JCWJvb2xlYW4gc2VydmVySWRzTWF0Y2ggPSAoKHNlcnZlcklkXyA9PSBudWxsKSAmJiAodHJzU2VydmVySWQgPT0gbnVsbCkpIHx8ICgoc2VydmVySWRfICE9IG51bGwpICYmIChzZXJ2ZXJJZF8uZXF1YWxzKHRyc1NlcnZlcklkKSkpOwotCQlpZiAoIXNlcnZlcklkc01hdGNoKSByZXR1cm4gZmFsc2U7Ci0JCWJvb2xlYW4gc2VydmVySW5zdGFuY2VJZHNNYXRjaCA9ICgoc2VydmVySW5zdGFuY2VJZF8gPT0gbnVsbCkgJiYgKHRyc1NlcnZlckluc3RhbmNlSWQgPT0gbnVsbCkpIHx8ICgoc2VydmVySW5zdGFuY2VJZF8gIT0gbnVsbCkgJiYgKHNlcnZlckluc3RhbmNlSWRfLmVxdWFscyh0cnNTZXJ2ZXJJbnN0YW5jZUlkKSkpOwotCQlpZiAoIXNlcnZlckluc3RhbmNlSWRzTWF0Y2gpIHJldHVybiBmYWxzZTsKLQkJCi0JCXJldHVybiB0cnVlOwkJCi0JfQotCQotCXJldHVybiBmYWxzZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9kaWFsb2cvSVN0YXR1c0RpYWxvZ0NvbnN0YW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9kaWFsb2cvSVN0YXR1c0RpYWxvZ0NvbnN0YW50cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWIxMzRlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZGlhbG9nL0lTdGF0dXNEaWFsb2dDb25zdGFudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kaWFsb2c7Ci0KLS8qKgotKiBDb25zdGFudHMgZm9yIHN0YXR1cyBkaWFsb2dzCi0qLwotcHVibGljIGludGVyZmFjZSBJU3RhdHVzRGlhbG9nQ29uc3RhbnRzIHsKLQotICAvKgotICAqIEJ1dHRvbiBJRCBmb3IgdGhlICJZZXMiIGJ1dHRvbgotICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBZRVNfSUQgPSAyOwotICAvKgotICAqIEJ1dHRvbiBJRCBmb3IgdGhlICJZZXMgdG8gYWxsIiBidXR0b24KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgWUVTX1RPX0FMTF9JRCA9IDQ7Ci0gIC8qCi0gICogQnV0dG9uIElEIGZvciB0aGUgIkNhbmNlbCIgYnV0dG9uCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENBTkNFTF9JRCA9IDE7Ci0gIC8qCi0gICogQnV0dG9uIElEIGZvciB0aGUgIk9LIiBidXR0b24KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT0tfSUQgPSAwOwotICAvKgotICAqIEJ1dHRvbiBJRCBmb3IgdGhlICJEZXRhaWxzIiBidXR0b24KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVUQUlMU19JRCA9IDEzOwotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC9XZWJTZXJ2aWNlRXhlY3V0YWJsZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4ZWN1dGFibGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjljNjkxMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC9XZWJTZXJ2aWNlRXhlY3V0YWJsZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLS8qKgotKiBBbGwgRXh0ZW5zaW9ucyB3aXRoIGV4ZWN0dXRhYmxlIGV4dGVuc2lvbnMgc2hvdWxkIGltcGxlbWVudCB0aGlzIAotKiB0byBmaXQgb3VyIGZyYW1ld29yawotKi8KLXB1YmxpYyBpbnRlcmZhY2UgV2ViU2VydmljZUV4ZWN1dGFibGUKLXsKLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0gIC8qKgotICAqUmV0dXJucyBhIHdpemFyZCBmcmFnbWVudCBmb3IgdGhpcyBleGVudGlvbiB0eXBlIAotICAqCi0gICovCi0gIHB1YmxpYyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiBnZXRGaW5pc2hDb21tYW5kKCk7Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODZhOWExLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeHRlbnNpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5leHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotCi0KLS8qKgotKiBUaGlzIHJlcHJlc2VudHMgYW4gZXh0ZW5zaW9uIGluIHRoZSBwbHVnaW4gcmVnaXN0cnkgCi0qIEl0IGpvYiBpcyB0byBhY3QgYXMgYSBwcm94eSB0byB0aGUgaWNvbmZpZ2VsZW1lbnQKLSovCi1wdWJsaWMgaW50ZXJmYWNlIFdlYlNlcnZpY2VFeHRlbnNpb24KLXsKLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgLyoqCi0gICogSWYgdGhlIGV4dGVuc2lvbiBoYXMgY29kZSB0aGF0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkIG9yIGEgZnJhZ21lbnQgYWRkZWQKLSAgKiBAcmV0dXJuIFdlYlNlcnZpY2VFeGVjdXRhYmxlIHRoaXMgaW50ZXJmYWNlIGhvbGRzIGV4ZWN1dGFibGUgY29kZSBhbmQgYSAKLSAgKiBmcmFnbWVudAotICAqLwotICBwdWJsaWMgT2JqZWN0IGdldFdlYlNlcnZpY2VFeGVjdXRhYmxlRXh0ZW5zaW9uKCk7Ci0KLSAgLyoqCi0gICogVGhpcyBpcyB0aGUgY29uZmlnIGVsZW1lbnQgdGhhdCBob2xkcyB0aGUgZXh0ZW5zaW9uIGluZm8KLSAgKiBAcGFyYW0gSUNvbmZpZ3VyYXRpb25FbGVtZW50IEV4dGVuc2lvbiBlbGVtZW50Ci0gICovCi0gIHB1YmxpYyB2b2lkIHNldENvbmZpZ0VsZW1lbnQoSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNvbmZpZ0VsZW1lbnQpOwotIAotICAvKioKLSAgKiBJZiB0aGUgZXh0ZW5zaW9uIGhhcyBjb2RlIHRoYXQgCi0gICogQHJldHVybiBJQ29uZmlndXJhdGlvbkVsZW1lbnQgRXh0ZW5zaW9uIGVsZW1lbnQKLSAgKi8KLSAgcHVibGljIElDb25maWd1cmF0aW9uRWxlbWVudCBnZXRDb25maWdFbGVtZW50KCk7Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvbkltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeHRlbnNpb25JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNzIwZDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvbkltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkVudmlyb25tZW50U2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklMb2c7Ci0KLQotCi0KLQotLyoqCi0qIFRoaXMgcmVwcmVzZW50cyBhbiBleHRlbnNpb24gaW4gdGhlIHBsdWdpbiByZWdpc3RyeSAKLSogSXQgam9iIGlzIHRvIGFjdCBhcyBhIHByb3h5IHRvIHRoZSBpY29uZmlnZWxlbWVudAotKi8KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlRXh0ZW5zaW9uSW1wbCBpbXBsZW1lbnRzIFdlYlNlcnZpY2VFeHRlbnNpb24KLXsKLQotCXByaXZhdGUgSUxvZwlsb2dfOwotCQotICAvKgotICAqIFRoZSBDb25maWdFbGVtZW50IHRoYXQgaG9sZHMgZXh0ZW5zaW9uIGluZm8KLSAgKi8KLSAgcHJvdGVjdGVkIElDb25maWd1cmF0aW9uRWxlbWVudCBjb25maWdFbGVtZW50XzsKLQotICAvKgotICAqIFRoZSBleHRlbnNpb24gZXhlY3V0YWJsZSAKLSAgKi8KLSAgcHJvdGVjdGVkIFdlYlNlcnZpY2VFeGVjdXRhYmxlIHdlYlNlcnZpY2VFeGVjdXRhYmxlXzsKLSAgCi0KLSAgcHVibGljIFdlYlNlcnZpY2VFeHRlbnNpb25JbXBsKElDb25maWd1cmF0aW9uRWxlbWVudCBjb25maWdFbGVtZW50KQotICB7Ci0gICAgY29uZmlnRWxlbWVudF8gPSBjb25maWdFbGVtZW50OwotICAgIGxvZ18gPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZUxvZygpOwotICB9Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgLyoqCi0gICogSWYgdGhlIGV4dGVuc2lvbiBoYXMgY29kZSB0aGF0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkIG9yIGEgZnJhZ21lbnQgYWRkZWQKLSAgKiBAcmV0dXJuIFdlYlNlcnZpY2VFeGVjdXRhYmxlIHRoaXMgaW50ZXJmYWNlIGhvbGRzIGV4ZWN1dGFibGUgY29kZSBhbmQgYSAKLSAgKiBmcmFnbWVudAotICAqLwotICBwdWJsaWMgT2JqZWN0IGdldFdlYlNlcnZpY2VFeGVjdXRhYmxlRXh0ZW5zaW9uKCkKLSAgewotICAgIGlmKHdlYlNlcnZpY2VFeGVjdXRhYmxlXyAhPSBudWxsKSByZXR1cm4gd2ViU2VydmljZUV4ZWN1dGFibGVfOwotCi0gICAgdHJ5ewotICAgICAgcmV0dXJuIGNvbmZpZ0VsZW1lbnRfLmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oImNsYXNzIik7Ci0gICAgfWNhdGNoIChDb3JlRXhjZXB0aW9uIGUpewotICAgICAgbG9nXy5sb2coSUxvZy5FUlJPUiwgNTAyOSwgdGhpcywgImdldFdlYlNlcnZpY2VFeGVjdXRhYmxlRXh0ZW5zaW9uIixlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAqIFRoaXMgaXMgdGhlIGNvbmZpZyBlbGVtZW50IHRoYXQgaG9sZHMgdGhlIGV4dGVuc2lvbiBpbmZvCi0gICogQHBhcmFtIElDb25maWd1cmF0aW9uRWxlbWVudCBFeHRlbnNpb24gZWxlbWVudAotICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb25maWdFbGVtZW50KElDb25maWd1cmF0aW9uRWxlbWVudCBjb25maWdFbGVtZW50KQotICB7Ci0gICAgY29uZmlnRWxlbWVudF8gPSBjb25maWdFbGVtZW50OwotICB9CQotCi0gIC8qKgotICAqIFRoaXMgaXMgdGhlIGNvbmZpZyBlbGVtZW50IHRoYXQgaG9sZHMgdGhlIGV4dGVuc2lvbiBpbmZvCi0gICogQHJldHVybiBJQ29uZmlndXJhdGlvbkVsZW1lbnQgRXh0ZW5zaW9uIGVsZW1lbnQKLSAgKi8KLSAgcHVibGljIElDb25maWd1cmF0aW9uRWxlbWVudCBnZXRDb25maWdFbGVtZW50KCkKLSAgewotICAgIHJldHVybiBjb25maWdFbGVtZW50XzsKLSAgfQotICAKLSAgLyoqCi0gICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBiZWluZyB1c2VkCi0gICogQHJldHVybiBTdHJpbmcgbmFtZSBvZiB0aGlzIGV4dGVuc2lvbgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGdldENvbmZpZ0VsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoICJuYW1lIiApOwotICB9Ci0KLQotfQotCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeHRlbnNpb25SZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYzFkMDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dDsKLQotCi0vKioKLSogUmV0dXJucyB0aGUgbmFtZXMgb2YgdGhlIGV4dGVuc2lvbnMgZm9yIGEgZ2l2ZW4gZXh0ZW5zaW9uLXBvaW50IAotKiBhbHNvIHJldHVybnMgdGhlIGV4dGVuc2lvbiBvYmplY3RzIAotKgotKi8KLXB1YmxpYyBpbnRlcmZhY2UgV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5Ci17Ci0gIAotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBuYW1lcyBvZiBhbGwgcmVnaXN0ZXJlZCBleHRlbnNpb25zCi0gICogQHJldHVybiBUaGUgbmFtZXMgb2YgYWxsIHJlZ2lzdGVyZWQgZXh0ZW5zaW9ucy4KLSAgKi8KLSAgcHVibGljIFN0cmluZ1tdIGdldFdlYlNlcnZpY2VFeHRlbnNpb25OYW1lcyAoKTsKLSAgCi0gIC8qKgotICAqIFJldHVybnMgdGhlIGV4dGVuc2lvbiBvYmplY3Qgb2YgdGhlIGdpdmVuIG5hbWUKLSAgKkByZXR1cm4gV2ViU2VydmljZUV4dGVuc2lvbiBvYmplY3QKLSAgKi8KLSAgcHVibGljIFdlYlNlcnZpY2VFeHRlbnNpb24gZ2V0V2ViU2VydmljZUV4dGVuc2lvbnNCeU5hbWUoIFN0cmluZyBuYW1lKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIEFsbCBleHRlbnRpb24gb2JqZWN0cyBpbiB0aGlzIHJlZ2lzdHJ5Ci0gICpAcmV0dXJuIFdlYlNlcnZpY2VFeHRlbnNpb24gb2JqZWN0cwotICAqLwotICBwdWJsaWMgV2ViU2VydmljZUV4dGVuc2lvbltdIGdldFdlYlNlcnZpY2VFeHRlbnNpb25zKCk7Ci0gIAotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeHRlbnNpb25SZWdpc3RyeUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeHRlbnNpb25SZWdpc3RyeUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZiZWExMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC9XZWJTZXJ2aWNlRXh0ZW5zaW9uUmVnaXN0cnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDgyMSAgIDE1MzgzMyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQWxsb3cgdGhlIFdlYiBTZXJ2aWNlIFRlc3QgZXh0ZW5zaW9uIHBvaW50IHRvIHNwZWNpZnkgdGhlIHN1cHBvcnRlZCBjbGllbnQgcnVudGltZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5kYXRhLkxhYmVsc0FuZElkczsKLQotCi0vKioKLSogVGhpcyBpcyBhIGdlbmVyaWMgcmVnaXN0cnkgd2hpY2ggc2V0cyB1cCBnZW5lcmFsIGNvZGUgaW4gaGFuZGxpbmcgICAKLSogSUNvbmZpZ0VsZW1lbnRzIGZvciBhbiBleHRlbnNpb24KLSovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5SW1wbCBpbXBsZW1lbnRzIFdlYlNlcnZpY2VFeHRlbnNpb25SZWdpc3RyeQotewotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLSAgCi0gIHByb3RlY3RlZCBIYXNodGFibGUgbmFtZUV4dGVuc2lvblRhYmxlXzsKLSAgcHJvdGVjdGVkIFZlY3RvciBpZF87Ci0gIHByb3RlY3RlZCBWZWN0b3IgbGFiZWxfOwotICBwcml2YXRlIExhYmVsc0FuZElkcyBsYWJlbHNhbmRpZHNfOwotICAgIAotICBwdWJsaWMgV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5SW1wbCgpCi0gIHsKLSAgICBuYW1lRXh0ZW5zaW9uVGFibGVfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGxhYmVsXyA9IG5ldyBWZWN0b3IoKTsKLSAgICBpZF8gPSBuZXcgVmVjdG9yKCk7Ci0gICAgbG9hZEV4dGVuc2lvbnMoKTsKLSAgfQotICAKLSAgLyoqCi0gICogQ2hpbGRyZW4gcmVnaXN0cmllcyB3aWxsIGhhdmUgZGlmZmVyZW50IGV4dGVuc2lvbiB0eXBlcyAKLSAgKiBAcmV0dXJuIFdlYnNlcnZpY2VFeHRlbnNpb24gaG9sZHMgYSBjb25maWcgZWxlbQotICAqIGZvciB0aGF0IGV4dGVuc2lvbiBjYXBhYmxlIG9mIGNyZWF0aW5nIGFuIGV4ZWN1dGFibGUgZmlsZQotICAqLwotICBwdWJsaWMgYWJzdHJhY3QgV2ViU2VydmljZUV4dGVuc2lvbiBjcmVhdGVXZWJTZXJ2aWNlRXh0ZW5zaW9uKElDb25maWd1cmF0aW9uRWxlbWVudCBjb25maWdFbGVtZW50KTsKLQotICAvKioKLSAgKiBDaGlsZHJlbiBtdXN0IGltcGxlbWVudCBob3cgdGhleSBnZXQgdGhlIElDb25maWd1cmF0aW9uRWxlbWVudFtdIAotICAqIEByZXR1cm4gSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gYW4gYXJyYXkgb2YgZWxlbWVudHMgcGFydGljdWxhciB0byB0aGF0Ci0gICogZXh0ZW5zaW9uCi0gICovCi0gIHB1YmxpYyBhYnN0cmFjdCBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBnZXRDb25maWdFbGVtZW50cygpOwotCi0gIC8qCi0gICogTG9hZHMgV2ViU2VydmljZUV4dGVuc2lvbnMgZm9yIFdlYlNlcnZpY2VDbGllbnRUZXN0IGludG8gdGhpcyByZWdpc3RyeS4KLSAgKiBUaGlzIGlzIGRvbmUgYnkgcXVlcnlpbmcgdGhlIHBsdWdpbiByZWdpc3RyeSBmb3IgYWxsIGV4dGVuc2lvbnMKLSAgKiB0aGF0IGV4dGVuZCB3ZWJTZXJ2aWNlQ2xpZW50VGVzdCAgCi0gICovCi0gIHByb3RlY3RlZCB2b2lkIGxvYWRFeHRlbnNpb25zICgpCi0gIHsgICAgCi0gICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY29uZmlnID0gZ2V0Q29uZmlnRWxlbWVudHMoKTsKLQotICAgIGZvcihpbnQgaWR4PTA7IGlkeDxjb25maWcubGVuZ3RoOyBpZHgrKykgCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW0gPSBjb25maWdbaWR4XTsKLSAgICAgIFN0cmluZyBsYWJlbCA9IGVsZW0uZ2V0QXR0cmlidXRlKCAibGFiZWwiICk7Ci0gICAgICBTdHJpbmcgaWQgPSAgIGVsZW0uZ2V0QXR0cmlidXRlKCAiaWQiICk7ICAgICAgCi0gICAgICBXZWJTZXJ2aWNlRXh0ZW5zaW9uIHdlYlNlcnZpY2VFeHRlbnNpb24gPSBjcmVhdGVXZWJTZXJ2aWNlRXh0ZW5zaW9uKGVsZW0pOwkKLSAgICAgIG5hbWVFeHRlbnNpb25UYWJsZV8ucHV0KGxhYmVsLHdlYlNlcnZpY2VFeHRlbnNpb24pOwotICAgICAgbGFiZWxfLmFkZChsYWJlbCk7Ci0gICAgICBpZF8uYWRkKGlkKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBuYW1lcyBvZiBhbGwgcmVnaXN0ZXJlZCBleHRlbnNpb25zCi0gICogQHJldHVybiBUaGUgbmFtZXMgb2YgYWxsIHJlZ2lzdGVyZWQgZXh0ZW5zaW9ucy4KLSAgKi8KLSAgcHVibGljIFN0cmluZ1tdIGdldFdlYlNlcnZpY2VFeHRlbnNpb25OYW1lcyAoKQotICB7Ci0gICAgcmV0dXJuIChTdHJpbmdbXSluYW1lRXh0ZW5zaW9uVGFibGVfLmtleVNldCgpLnRvQXJyYXkoIG5ldyBTdHJpbmdbMF0gKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIG5hbWVzIGFuZCBJZHMgCi0gICAqLwotICBwdWJsaWMgTGFiZWxzQW5kSWRzIGdldExhYmVsc0FuZElEcygpCi0gIHsKLSAgCWxhYmVsc2FuZGlkc18gPSBuZXcgTGFiZWxzQW5kSWRzKCk7Ci0gIAlsYWJlbHNhbmRpZHNfLnNldExhYmVsc18oKFN0cmluZ1tdKWxhYmVsXy50b0FycmF5KCBuZXcgU3RyaW5nWzBdICkpOwotICAJbGFiZWxzYW5kaWRzXy5zZXRJZHNfKChTdHJpbmdbXSlpZF8udG9BcnJheSggbmV3IFN0cmluZ1swXSApKTsKLSAgCXJldHVybiBsYWJlbHNhbmRpZHNfOwotICB9Ci0gIAotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBleHRlbnNpb24gb2JqZWN0IG9mIHRoZSBnaXZlbiBuYW1lCi0gICogQHJldHVybiBXZWJTZXJ2aWNlRXh0ZW5zaW9uIG9iamVjdAotICAqLwotICBwdWJsaWMgV2ViU2VydmljZUV4dGVuc2lvbiBnZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5TmFtZSggU3RyaW5nIG5hbWUpCi0gIHsKLSAgICByZXR1cm4gKFdlYlNlcnZpY2VFeHRlbnNpb24pbmFtZUV4dGVuc2lvblRhYmxlXy5nZXQobmFtZSk7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIEFsbCBleHRlbnRpb24gb2JqZWN0cyBpbiB0aGlzIHJlZ2lzdHJ5Ci0gICpAcmV0dXJuIFdlYlNlcnZpY2VFeHRlbnNpb24gb2JqZWN0cwotICAqLwotICBwdWJsaWMgV2ViU2VydmljZUV4dGVuc2lvbltdIGdldFdlYlNlcnZpY2VFeHRlbnNpb25zKCkKLSAgewotICAgIHJldHVybiAoV2ViU2VydmljZUV4dGVuc2lvbltdKW5hbWVFeHRlbnNpb25UYWJsZV8udmFsdWVzKCkudG9BcnJheSggbmV3IFdlYlNlcnZpY2VFeHRlbnNpb25bMF0gKTsKLSAgfQotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L3Rlc3QvSmF2YVByb3h5VGVzdENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L3Rlc3QvSmF2YVByb3h5VGVzdENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiMzY3ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC90ZXN0L0phdmFQcm94eVRlc3RDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0LnRlc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5zZWxlY3Rpb24uQm9vbGVhblNlbGVjdGlvbjsKLQotcHVibGljIGludGVyZmFjZSBKYXZhUHJveHlUZXN0Q29tbWFuZCBleHRlbmRzIFdlYlNlcnZpY2VUZXN0RmluaXNoQ29tbWFuZAotewotCi0gLyoqCi0gICogVGhpcyBob2xkcyBhbiBpbmZvIGNsYXNzIHRoYXQgY29tZXMgZnJvbSB1c2VyIGlucHV0IG9yIHNvbWUgY2FsY2lsYXRpb25zIHRoYXQgbmVlZHMgdG8gYmUKLSAgKiB1c2VkIGZvciB0aGUgZmluaXNoCi0gICovCi0gIAotICBwdWJsaWMgdm9pZCBzZXRKc3BGb2xkZXIoU3RyaW5nIGpzcEZvbGRlcik7Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRSdW5DbGllbnRUZXN0KGJvb2xlYW4gcnVuQ2xpZW50VGVzdCk7Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTYW1wbGVQcm9qZWN0KFN0cmluZyBzYW1wbGVQcm9qZWN0KTsKLSAgCi0gIHB1YmxpYyB2b2lkIHNldFByb3h5QmVhbihTdHJpbmcgcHJveHlCZWFuKTsKLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNldEVuZHBvaW50TWV0aG9kKFN0cmluZyBzZXRFbmRwb2ludE1ldGhvZCk7Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRQcm9qZWN0KFN0cmluZyBjbGllbnRQcm9qZWN0KTsKLSAgCi0gIHB1YmxpYyB2b2lkIHNldE1ldGhvZHMoQm9vbGVhblNlbGVjdGlvbltdIG1ldGhvZHMpOwotICAKLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC90ZXN0L1dTRExUZXN0RmluaXNoQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9leHQvdGVzdC9XU0RMVGVzdEZpbmlzaENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMxNzI1My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC90ZXN0L1dTRExUZXN0RmluaXNoQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0OwotCi1wdWJsaWMgaW50ZXJmYWNlIFdTRExUZXN0RmluaXNoQ29tbWFuZCBleHRlbmRzIFdlYlNlcnZpY2VUZXN0RmluaXNoQ29tbWFuZAotewotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlUHJvamVjdChTdHJpbmcgc2VydmVyUHJvamVjdCk7Ci0gIHB1YmxpYyB2b2lkIHNldFdzZGxTZXJ2aWNlVVJMKFN0cmluZyB3c2RsVVJJKTsKLSAgcHVibGljIHZvaWQgc2V0RXh0ZXJuYWxCcm93c2VyKGJvb2xlYW4gZXh0ZXJuYWwpOyAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L3Rlc3QvV2ViU2VydmljZVRlc3RFeHRlbnNpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L3Rlc3QvV2ViU2VydmljZVRlc3RFeHRlbnNpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU3ZWY0ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC90ZXN0L1dlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwODE2ICAgMTA0ODcwIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDgyMSAgIDE1MzgzMyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQWxsb3cgdGhlIFdlYiBTZXJ2aWNlIFRlc3QgZXh0ZW5zaW9uIHBvaW50IHRvIHNwZWNpZnkgdGhlIHN1cHBvcnRlZCBjbGllbnQgcnVudGltZQotICogMjAwNzAzMTQgICAxNTQ1NDMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkgaXMgdHJhY2tpbmcgZXh0ZW5zaW9ucyB1c2luZyBsYWJlbCBhdHRyaWJ1dGUgaW5zdGVhZCBvZiBJRAotICogMjAwODAzMjUgICAxODQ3NjEgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0OwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC5XZWJTZXJ2aWNlRXh0ZW5zaW9uSW1wbDsKLQotCi0KLQotLyoqCi0qIFRoaXMgcmVwcmVzZW50cyBhbiBleHRlbnNpb24gaW4gdGhlIHBsdWdpbiByZWdpc3RyeSAKLSogSXQgam9iIGlzIHRvIGFjdCBhcyBhIHByb3h5IHRvIHRoZSBpY29uZmlnZWxlbWVudAotKiBJbiBwYXJ0aWN1bGFyIGl0IGhvbGRzIGEgY2xpZW50IHRlc3QgZXh0ZW5zaW9uIGVsZW1lbnQgCi0qLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uIGV4dGVuZHMgV2ViU2VydmljZUV4dGVuc2lvbkltcGwKLXsKLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgcHJpdmF0ZSBMaXN0IHN1cHBvcnRlZFJ1bnRpbWVzXyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgCi0gIHB1YmxpYyBXZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbihJQ29uZmlndXJhdGlvbkVsZW1lbnQgY29uZmlnRWxlbWVudCkKLSAgewotICAgIHN1cGVyKGNvbmZpZ0VsZW1lbnQpOwotICAgICAgIAotICAgIFN0cmluZyBydW50aW1lc0xpc3QgPSBnZXRDb25maWdFbGVtZW50KCkuZ2V0QXR0cmlidXRlKCJzdXBwb3J0ZWRDbGllbnRSdW50aW1lcyIpOyAgCi0gICAKLSAgICBhZGRSdW50aW1lcyhydW50aW1lc0xpc3QpOwotICB9Ci0gIAotICAvKioKLSAgICogQWRkcyBhIGxpc3Qgb2Ygc3BhY2UgZGVsaW1pdGVkIHJ1bnRpbWUgSURzLgotICAgKiAKLSAgICogQHBhcmFtIHJ1bnRpbWVzTGlzdCBUaGUgbGlzdCBvZiBydW50aW1lIElEcy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFJ1bnRpbWVzKFN0cmluZyBydW50aW1lc0xpc3QpIHsKLQkgIAotCSAgaWYgKHJ1bnRpbWVzTGlzdCA9PSBudWxsKQotCQkgIHJldHVybjsKLQkgIAotCSAgU3RyaW5nW10gcnVudGltZXMgPSBydW50aW1lc0xpc3Quc3BsaXQoIlxccysiKTsKLQkgICAgCi0JICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bnRpbWVzLmxlbmd0aDsgaSsrKSB7CSAgICAJCi0JCSAgaWYgKHJ1bnRpbWVzW2ldLmxlbmd0aCgpID4gMCkKLQkJCSAgc3VwcG9ydGVkUnVudGltZXNfLmFkZChydW50aW1lc1tpXSk7ICAgCi0JICB9Ci0gIH0KLSAgCi0gIC8qKgotICAqIFdpbGwgdGhpcyB0ZXN0Q2xpZW50IGdlbmVyYXRlIGNvZGUKLSAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBjb2RlZ2VuIG5lZWRlZAotICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0NvZGVHZW5OZWVkZWQoKQotICB7Ci0gICAgcmV0dXJuIEJvb2xlYW4udmFsdWVPZihnZXRDb25maWdFbGVtZW50KCkuZ2V0QXR0cmlidXRlKCAiY29kZUdlbmVyYXRlZCIgKSkuYm9vbGVhblZhbHVlKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAqIFVzZSB0aGUgZGVmYXVsdCBGb2xkZXIgUHJvdmlkZWQgYnkgdXMKLSAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBubyBzcGVjaWFsIGZvbGRlciByZXF1aXJlcwotICAqLwotICBwdWJsaWMgYm9vbGVhbiB1c2VEZWZhdWx0Q29kZUdlbkZvbGRlcigpCi0gIHsKLSAgICByZXR1cm4gQm9vbGVhbi52YWx1ZU9mKGdldENvbmZpZ0VsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoICJkZWZhdWx0Y29kZWdlbmZvbGRlciIgKSkuYm9vbGVhblZhbHVlKCk7Ci0gIH0KLQotICAvKioKLSAgKiBVc2UgU3BlY2lhbCBGb2xkZXIgZm9yIGdlbmVyYXRlZCBjb2RlCi0gICogQHJldHVybiBTdHJpbmcgc3BlY2lhbCBmb2xkZXIgbmFtZQotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldENvZGVHZW5Gb2xkZXIoKQotICB7Ci0gICAgcmV0dXJuIGdldENvbmZpZ0VsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoICJjb2RlZ2VuZm9sZGVyIiApOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNEZWZhdWx0SkFYUlBDKCkKLSAgewotCSAgcmV0dXJuIEJvb2xlYW4udmFsdWVPZihnZXRDb25maWdFbGVtZW50KCkuZ2V0QXR0cmlidXRlKCAiaXNkZWZhdWx0amF4cnBjIiApKS5ib29sZWFuVmFsdWUoKTsKLSAgfQotICAgCi0gIC8qKgotICAqIERvIHdlIG5lZWQgdG8gbGF1bmNoIHNvbWV0aGluZwotICAqIEByZXR1cm4gQm9vbGVhbiBpZiB0cnVlIGxhdW5jaCBjb2RlZ2VuCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGlzTGF1bmNoUmVxdWlyZWQoKQotICB7Ci0gICAgcmV0dXJuIEJvb2xlYW4udmFsdWVPZihnZXRDb25maWdFbGVtZW50KCkuZ2V0QXR0cmlidXRlKCAibGF1bmNoUmVxdWlyZWQiICkpLmJvb2xlYW5WYWx1ZSgpOwotICB9Ci0KLSAgLyoqCi0gICogRG8gd2UgbmVlZCB0aGUgbWV0aG9kcyBmb3IgdGhlIHByb3h5Ci0gICogQHJldHVybiBib29sZWFuIHRydWUgaWYgcHJveHkgbWV0aG9kcyBuZWVkZWQKLSAgKi8KLSAgcHVibGljIGJvb2xlYW4gYXJlTWV0aG9kc05lZWRlZCgpCi0gIHsKLSAgICByZXR1cm4gQm9vbGVhbi52YWx1ZU9mKGdldENvbmZpZ0VsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoICJtZXRob2RzbmVlZGVkIiApKS5ib29sZWFuVmFsdWUoKTsKLSAgfQotCi0gIC8qKgotICAqIERvZXMgdGhpcyB0ZXN0IG1hY2hpbmUgbmVlZCBhIHNlcnZlcgotICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGEgc2VydmVyIGlzIHJlcXVpcmVkCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGlzU2VydmVyTmVlZGVkKCkKLSAgewotICAgIHJldHVybiBCb29sZWFuLnZhbHVlT2YoZ2V0Q29uZmlnRWxlbWVudCgpLmdldEF0dHJpYnV0ZSggInNlcnZlclJlcXVpcmVkIiApKS5ib29sZWFuVmFsdWUoKTsKLSAgfQotCi0gIC8qKgotICAqIFVzZSB0aGUgRGVmYXVsdCBTZXJ2ZXIgY2hvc2VuIGJ5IHRoZSB3aXphcmQKLSAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiB0aGUgZGVmYXVsdCBzZXJ2ZXIgaXMgd2FudGVkCi0gICovCi0gIHB1YmxpYyBib29sZWFuIHVzZURlZmF1bHRTZXJ2ZXIoKQotICB7Ci0gICAgcmV0dXJuIEJvb2xlYW4udmFsdWVPZihnZXRDb25maWdFbGVtZW50KCkuZ2V0QXR0cmlidXRlKCAiZGVmYXVsdHNlcnZlciIgKSkuYm9vbGVhblZhbHVlKCk7Ci0gIH0KLQotICAvKioKLSAgKiBVc2UgdGhlIERlZmF1bHQgU2VydmVyIGNob3NlbiBieSB0aGUgd2l6YXJkCi0gICogQHJldHVybiBib29sZWFuIHRydWUgaWYgdGhlIGRlZmF1bHQgc2VydmVyIGlzIHdhbnRlZAotICAqLwotICBwdWJsaWMgU3RyaW5nIHVzZVNlcnZlcigpCi0gIHsKLSAgICByZXR1cm4gZ2V0Q29uZmlnRWxlbWVudCgpLmdldEF0dHJpYnV0ZSggInVzZXNlcnZlciIgKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHRlc3RXU0RMKCkKLSAgewotICAJU3RyaW5nIHdzZGwgPSBnZXRDb25maWdFbGVtZW50KCkuZ2V0QXR0cmlidXRlKCAidGVzdFdTREwiICk7Ci0gICAgaWYod3NkbC5lcXVhbHMoInllcyIpIHx8IHdzZGwuZXF1YWxzKCJ0cnVlIikpCi0JICByZXR1cm4gdHJ1ZTsKLQkgCi0JcmV0dXJuIGZhbHNlOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIHRlc3RKYXZhUHJveHkoKQotICB7Ci0gIAlTdHJpbmcgamF2YVByb3h5ID0gZ2V0Q29uZmlnRWxlbWVudCgpLmdldEF0dHJpYnV0ZSggInRlc3RKYXZhUHJveHkiICk7Ci0gICAgaWYoamF2YVByb3h5ID09IG51bGwpIHJldHVybiBmYWxzZTsKLSAgCWlmKGphdmFQcm94eS5lcXVhbHMoInllcyIpIHx8IGphdmFQcm94eS5lcXVhbHMoInRydWUiKSkKLQkgIHJldHVybiB0cnVlOwotCSAKLQlyZXR1cm4gZmFsc2U7ICAKLSAgfQotICAJCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpZCBhdHRyaWJ1dGUgb2YgdGhpcyBXZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbgotICAgKiAKLSAgICogQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIGlkIGF0dHJpYnV0ZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7Ci0JcmV0dXJuIGdldENvbmZpZ0VsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoICJpZCIgKTsgCi0gIH0KLSAgIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgbGFiZWwgYXR0cmlidXRlIG9mIHRoaXMgV2ViU2VydmljZVRlc3RFeHRlbnNpb24KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBsYWJlbCBhdHRyaWJ1dGUuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldExhYmVsKCkgewotICAgIHJldHVybiBnZXRDb25maWdFbGVtZW50KCkuZ2V0QXR0cmlidXRlKCAibGFiZWwiICk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBEb2VzIHRoaXMgZXh0ZW5zaW9uIGFsbG93IGV4dGVuZGVycyB0byByZXN0cmljdCB0aGUgcnVudGltZXMgdGhhdCBhcmUgc3VwcG9ydGVkPwotICAgKiAgCi0gICAqIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBhbGxvd1J1bmltZXNSZXN0cmljdGlvbiBhdHRyaWJ1dGUsIGZhbHNlIGlmIG5vdCBwcmVzZW50LgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gYWxsb3dDbGllbnRSdW50aW1lc1Jlc3RyaWN0aW9uKCkgewotCSAgcmV0dXJuIEJvb2xlYW4udmFsdWVPZihnZXRDb25maWdFbGVtZW50KCkuZ2V0QXR0cmlidXRlKCAiYWxsb3dDbGllbnRSdW50aW1lc1Jlc3RyaWN0aW9uIiApKS5ib29sZWFuVmFsdWUoKTsKLSAgfSAgCi0gICAgICAgCi0gIC8qKgotICAgKiBEZXRlcm1pbmVzIGlmIHRoaXMgV2ViU2VydmljZVRlc3RFeHRlbnNpb24gc3VwcG9ydHMgdGhlIGdpdmUgY2xpZW50IHJ1bnRpbWUgSUQuCi0gICAqIAotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNsaWVudCBydW50aW1lIElEIGlzIHN1cHBvcnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNSdW50aW1lKFN0cmluZyBydW50aW1lSWQpIHsKLQkgIAotCSBpZiAoIWFsbG93Q2xpZW50UnVudGltZXNSZXN0cmljdGlvbigpIHx8IHN1cHBvcnRlZFJ1bnRpbWVzXy5pc0VtcHR5KCkpCi0JCSByZXR1cm4gdHJ1ZTsKLQkgIAotCSByZXR1cm4gc3VwcG9ydGVkUnVudGltZXNfLmNvbnRhaW5zKHJ1bnRpbWVJZCk7Ci0gIH0KLX0KLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC90ZXN0L1dlYlNlcnZpY2VUZXN0RmluaXNoQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9leHQvdGVzdC9XZWJTZXJ2aWNlVGVzdEZpbmlzaENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzExZTlkMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC90ZXN0L1dlYlNlcnZpY2VUZXN0RmluaXNoQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC50ZXN0OwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXI7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgV2ViU2VydmljZVRlc3RGaW5pc2hDb21tYW5kIAotewotCi0gIC8qKgotICAgKiBJZiB0aGUgY29tbWFuZCBuZWVkcyBhIHNlcnZlciB0aGlzIGlzIHRoZSBjaG9zZW4gCi0gICAqIGNsaWVudCBzZXJ2ZXJJRAotICAgKiBAcGFyYW0gc2FtcGxlU2VydmVyVHlwZUlECi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJUeXBlSUQoU3RyaW5nIHNlcnZpY2VTZXJ2ZXJUeXBlSUQpOwotICAKLSAgLyoqCi0gICAqIFRoaXMgaXMgdGhlIElTZXJ2ZXIgaWYgcmVxdWlyZWQKLSAgICogQHBhcmFtIHNhbXBsZUV4aXN0aW5nU2VydmVyCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFeGlzdGluZ1NlcnZlcihJU2VydmVyIHNlcnZpY2VFeGlzdGluZ1NlcnZlcik7Ci0gIAotICAvKioKLSAgICogVGhpcyBpcyB0aGUgZW5kcG9pbnRzIGlmIG1vbml0b3Igc2VydmljZSBpcyBlbmFibGVkCi0gICAqIEBwYXJhbSBlbmRwb2ludHMKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVuZHBvaW50KExpc3QgZW5kcG9pbnRzKTsKLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL2V4dC90ZXN0L1dlYlNlcnZpY2VUZXN0UmVnaXN0cnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L3Rlc3QvV2ViU2VydmljZVRlc3RSZWdpc3RyeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2ZlY2NjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvZXh0L3Rlc3QvV2ViU2VydmljZVRlc3RSZWdpc3RyeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA4MjEgICAxNTM4MzMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEFsbG93IHRoZSBXZWIgU2VydmljZSBUZXN0IGV4dGVuc2lvbiBwb2ludCB0byBzcGVjaWZ5IHRoZSBzdXBwb3J0ZWQgY2xpZW50IHJ1bnRpbWUKLSAqIDIwMDcwMzE0ICAgMTU0NTQzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5IGlzIHRyYWNraW5nIGV4dGVuc2lvbnMgdXNpbmcgbGFiZWwgYXR0cmlidXRlIGluc3RlYWQgb2YgSUQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5leHQudGVzdDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuZXh0LldlYlNlcnZpY2VFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC5XZWJTZXJ2aWNlRXh0ZW5zaW9uUmVnaXN0cnlJbXBsOwotCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZVRlc3RSZWdpc3RyeSBleHRlbmRzIFdlYlNlcnZpY2VFeHRlbnNpb25SZWdpc3RyeUltcGwKLXsKLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0gIC8qCi0gICAqIFRoaXMgaXMgYSBzaW5nbGV0b24gYmVjYXN1ZSBpdCB3YXMgZGVjaWRlZCB0aGF0IHRoZSBtZW1vcnkgZm9vdCBwcmludCAKLSAgICogaXMgbm90IGFzIGV4cGVuc2l2ZSBhcyB0aGUgdGltZSB0YWtlbiByZXRyaWV2aW5nIHRoZSBkYXRhCi0gICAqIAotICAgKi8KLSAgCi0gIAotICBwcml2YXRlIHN0YXRpYyBXZWJTZXJ2aWNlVGVzdFJlZ2lzdHJ5IHdzdHI7Ci0gIAotICBwdWJsaWMgc3RhdGljIFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkgZ2V0SW5zdGFuY2UoKQotICB7Ci0gIAlpZih3c3RyID09IG51bGwpIHdzdHIgPSBuZXcgV2ViU2VydmljZVRlc3RSZWdpc3RyeSgpOwotICAgIHJldHVybiB3c3RyOwotICB9Ci0gIAotICBwcml2YXRlIFdlYlNlcnZpY2VUZXN0UmVnaXN0cnkoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEhlbHBlciBtZXRob2QgdG8gImpvaW4iIGFuIGV4aXN0aW5nIHZhbHVlIGFuZCBhIG5ldyB2YWx1ZSB0b2dldGhlciBieQotICAgKiBhIHNwYWNlIGluIGJldHdlZW4uICBIYW5kbGVzIHNwZWNpYWwgY2FzZSB3aGVuIGVpdGhlciB2YWx1ZSBpcyBudWxsLiAKLSAgICogIAotICAgKiBAcGFyYW0gZXhpc3RpbmdWYWx1ZSBUaGUgZXhpc3RpbmcgdmFsdWUKLSAgICogQHBhcmFtIG5ld1ZhbHVlIFRoZSBuZXcgdmFsdWUKLSAgICogQHJldHVybiBJZiBlaXRlciB0aGUgZXhpc3Rpbmcgb3IgbmV3IHZhbHVlIGlzIG51bGwsIHNpbXBseSByZXR1cm5zIHRoZQotICAgKiBuZXcgdmFsdWUgYXMgaXMgKHdoaWNoIGNvdWxkIGJlIG51bGwpLiAgT3RoZXJ3aXNlIHJldHVybnMgdGhlIHZhbHVlIGpvaW5lZAotICAgKiBieSBhIHNwYWNlLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2VuTmV3VmFsdWUoU3RyaW5nIGV4aXN0aW5nVmFsdWUsIFN0cmluZyBuZXdWYWx1ZSkgewotCSAgCi0JICBpZiAoZXhpc3RpbmdWYWx1ZSA9PSBudWxsIHx8IG5ld1ZhbHVlID09IG51bGwpCi0JCSAgcmV0dXJuIG5ld1ZhbHVlOwotCSAgCSAgCSAKLQkgIHJldHVybiBleGlzdGluZ1ZhbHVlICsgIiAiICsgbmV3VmFsdWU7Ci0gIH0KLSAgICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5leHQuV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5SW1wbCNsb2FkRXh0ZW5zaW9ucygpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBsb2FkRXh0ZW5zaW9ucyAoKQotICB7Ci0JLy8ga2VlcCB0cmFjayBvZiB0aGUgc3VwcG9ydCBydW50aW1lcyBmb3IgZWFjaCB0ZXN0IGZhY2lsaXR5IElECi0gICAgSGFzaHRhYmxlIHN1cHBvcnRlZENsaWVudFJ1bnRpbWVzID0gbmV3IEhhc2h0YWJsZSgpOwotCSAgCi0gICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY29uZmlnID0gZ2V0Q29uZmlnRWxlbWVudHMoKTsKLSAgICAKLSAgICBmb3IoaW50IGlkeD0wOyBpZHg8Y29uZmlnLmxlbmd0aDsgaWR4KyspIAotICAgIHsKLSAgICAgIElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtID0gY29uZmlnW2lkeF07Ci0gICAgICBTdHJpbmcgbGFiZWwgPSBlbGVtLmdldEF0dHJpYnV0ZSggImxhYmVsIiApOwotICAgICAgU3RyaW5nIGlkID0gICBlbGVtLmdldEF0dHJpYnV0ZSggImlkIiApOyAgICAgIAotICAgICAgCi0gICAgICAvLyBsYWJlbCBpcyBmb3VuZCwgaGVuY2Ugd2UgaGF2ZSBhIG1hc3RlciBleHRlbnNpb24gZWxlbWVudAotICAgICAgaWYgKGxhYmVsICE9IG51bGwpIHsKLSAgICAJICBXZWJTZXJ2aWNlRXh0ZW5zaW9uIHdlYlNlcnZpY2VFeHRlbnNpb24gPSBjcmVhdGVXZWJTZXJ2aWNlRXh0ZW5zaW9uKGVsZW0pOwkKLSAgICAJICBuYW1lRXh0ZW5zaW9uVGFibGVfLnB1dChpZCx3ZWJTZXJ2aWNlRXh0ZW5zaW9uKTsKLSAgICAJICBsYWJlbF8uYWRkKGxhYmVsKTsKLSAgICAJICBpZF8uYWRkKGlkKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgLy8gc2xhdmUgZXh0ZW5zaW9uIGVsZW1lbnQsIHdoaWNoIG9ubHkgaGFzIHRoZSBpZCBhbmQgc3VwcG9ydGVkQ2xpZW50UnVudGltZXMgYXR0cmlidXRlcwotICAgICAgZWxzZSB7Ci0gICAgCSAgU3RyaW5nIGV4aXN0aW5nVmFsdWUgPSAoU3RyaW5nKSBzdXBwb3J0ZWRDbGllbnRSdW50aW1lcy5nZXQoaWQpOwotICAgIAkgIFN0cmluZyBuZXdWYWx1ZSA9IGdlbk5ld1ZhbHVlKGV4aXN0aW5nVmFsdWUsIGVsZW0uZ2V0QXR0cmlidXRlKCJzdXBwb3J0ZWRDbGllbnRSdW50aW1lcyIpKTsKLSAgICAJICAKLSAgICAJICBpZiAobmV3VmFsdWUgIT0gbnVsbCkKLSAgICAJCSAgc3VwcG9ydGVkQ2xpZW50UnVudGltZXMucHV0KGlkLCBuZXdWYWx1ZSk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIG1lcmdlIGFueSBzdXBwb3J0ZWRDbGllbnRSdW50aW1lcyBhdHRyaWJ1dGVzIGZyb20gdGhlIHNsYXZlIGVsZW1lbnRzIGJhY2sgdG8gdGhlIG1hc3RlciBlbGVtZW50cwotICAgIAotICAgIEl0ZXJhdG9yIGl0ZXIgPSBuYW1lRXh0ZW5zaW9uVGFibGVfLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgCi0gICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7Ci0gICAgCVdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uIHdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uID0gKFdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uKSBpdGVyLm5leHQoKTsKLSAgICAKLSAgICAJLy8gc2tpcCBpZiB0aGUgZXh0ZW5zaW9uIGRvZXMgbm90IGFsbG93IHJlc3RyaWN0aW9uIG9uIHRoZSBzdXBwb3J0ZWQgY2xpZW50IHJ1bnRpbWVzCi0gICAgCWlmICh3ZWJTZXJ2aWNlVGVzdEV4dGVuc2lvbi5hbGxvd0NsaWVudFJ1bnRpbWVzUmVzdHJpY3Rpb24oKSkgewotICAgIAkJU3RyaW5nIGlkID0gd2ViU2VydmljZVRlc3RFeHRlbnNpb24uZ2V0SWQoKTsKLSAgICAJCXdlYlNlcnZpY2VUZXN0RXh0ZW5zaW9uLmFkZFJ1bnRpbWVzKChTdHJpbmcpIHN1cHBvcnRlZENsaWVudFJ1bnRpbWVzLmdldChpZCkpOwotICAgIAl9Ci0gICAgfSAgICAKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5leHQuV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5SW1wbCNnZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uTmFtZXMoKQotICAgKi8KLSAgcHVibGljIFN0cmluZ1tdIGdldFdlYlNlcnZpY2VFeHRlbnNpb25OYW1lcygpIHsKLQlyZXR1cm4gKFN0cmluZ1tdKWxhYmVsXy50b0FycmF5KCBuZXcgU3RyaW5nWzBdICk7Ci0gIH0gCi0KLSAgLyoqCi0gICAqIFJldHVybiB0aGUgSUQgY29ycmVzcG9uZGluZyB0byB0aGUgbGFiZWwuCi0gICAqIEBwYXJhbSBsYWJlbCBUaGUgbGFiZWwuCi0gICAqIEByZXR1cm4gVGhlIElEIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxhYmVsLCBvciBpZiB0aGUgbGFiZWwgcGFyYW1ldGVyIGlzIG5vdCBhIGxhYmVsCi0gICAqIChtdXN0IGJlIGFscmVhZHkgYW4gSUQpLCBpdCBpcyByZXR1cm5lZC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgbGFiZWxUb0lkKFN0cmluZyBsYWJlbCkgewotICAgIGludCBsYWJlbEluZGV4ID0gbGFiZWxfLmluZGV4T2YobGFiZWwpOwotICAgIGlmIChsYWJlbEluZGV4ID09IC0xKQotICAgICAgcmV0dXJuIGxhYmVsOwotICAgIHJldHVybiAoU3RyaW5nKSBpZF8uZWxlbWVudEF0KGxhYmVsSW5kZXgpOwotICB9IAotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBXZWJTZXJ2aWNlRXh0ZW5zaW9uIHdpdGggdGhlIGdpdmVuIElELgotICAgKiBAcGFyYW0gaWQgVGhlIElELgotICAgKiBAcmV0dXJuIFRoZSBXZWJTZXJ2aWNlRXh0ZW5zaW9uIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlRXh0ZW5zaW9uIGdldFdlYlNlcnZpY2VFeHRlbnNpb25zQnlJZChTdHJpbmcgaWQpIHsKLSAgICByZXR1cm4gKFdlYlNlcnZpY2VFeHRlbnNpb24pIG5hbWVFeHRlbnNpb25UYWJsZV8uZ2V0KGlkKTsKLSAgfSAKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmV4dC5XZWJTZXJ2aWNlRXh0ZW5zaW9uUmVnaXN0cnlJbXBsI2dldFdlYlNlcnZpY2VFeHRlbnNpb25zQnlOYW1lKGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgV2ViU2VydmljZUV4dGVuc2lvbiBnZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5TmFtZShTdHJpbmcgbmFtZSkgewotICAgIHJldHVybiBnZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5SWQobGFiZWxUb0lkKG5hbWUpKTsKLSAgfQotCi0gIC8qKgotICAqIENoaWxkcmVuIHJlZ2lzdHJpZXMgd2lsbCBoYXZlIGRpZmZlcmVudCBleHRlbnNpb24gdHlwZXMgCi0gICogQHJldHVybiBXZWJzZXJ2aWNlRXh0ZW5zaW9uIGhvbGRzIGEgY29uZmlnIGVsZW0KLSAgKiBmb3IgdGhhdCBleHRlbnNpb24gY2FwYWJsZSBvZiBjcmVhdGluZyBhbiBleGVjdXRhYmxlIGZpbGUKLSAgKi8KLSAgcHVibGljIFdlYlNlcnZpY2VFeHRlbnNpb24gY3JlYXRlV2ViU2VydmljZUV4dGVuc2lvbihJQ29uZmlndXJhdGlvbkVsZW1lbnQgY29uZmlnRWxlbWVudCkKLSAgewotICAgIHJldHVybiBuZXcgV2ViU2VydmljZVRlc3RFeHRlbnNpb24oY29uZmlnRWxlbWVudCk7Ci0gIH0KLQotICAvKioKLSAgKiBDaGlsZHJlbiBtdXN0IGltcGxlbWVudCBob3cgdGhleSBnZXQgdGhlIElDb25maWd1cmF0aW9uRWxlbWVudFtdIAotICAqIEByZXR1cm4gSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gYW4gYXJyYXkgb2YgZWxlbWVudHMgcGFydGljdWxhciB0byB0aGF0Ci0gICogZXh0ZW5zaW9uCi0gICovCi0gIHB1YmxpYyBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBnZXRDb25maWdFbGVtZW50cygpCi0gIHsKLSAgICBJRXh0ZW5zaW9uUmVnaXN0cnkgcmVnID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBjb25maWcgPSByZWcuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzRm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0ZXIiKTsKLSAgICByZXR1cm4gY29uZmlnOyAgICAKLSAgfQotCi0KLSAgICAKLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3BsdWdpbi9XZWJTZXJ2aWNlUGx1Z2luLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3BsdWdpbi9XZWJTZXJ2aWNlUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MjBkMTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS5qc3Qud3Mvc3JjL29yZy9lY2xpcHNlL2pzdC93cy9pbnRlcm5hbC9wbHVnaW4vV2ViU2VydmljZVBsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDI0ICAgMTE1NjkwIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnBsdWdpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuUGVyc2lzdGVudFNjZW5hcmlvQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5QZXJzaXN0ZW50VURESVByZWZlcmVuY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb250ZXh0LlNjZW5hcmlvQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5VRERJUHJlZmVyZW5jZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbnRleHQuUGVyc2lzdGVudFJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLQotCi0vKioKLSogVGhpcyBpcyB0aGUgcGx1Z2luIGNsYXNzIGZvciB0aGUgV2ViIFNlcnZpY2VzIHBsdWdpbi4KLSogPHA+Ci0qIFRoaXMgcGx1Z2luIGNvbnRhaW5zIHRoZSBidWxrIG9mIHRoZSBXZWIgU2VydmljZXMgcnVudGltZS4KLSogT25seSB0aGUgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlIHBvcnRpb24gb2YgdGhlIHJ1bnRpbWUgaXMKLSogZm91bmQgZWxzZXdoZXJlIC0gaW4gdGhlIG9yZy5lY2xpcHNlLmpzdC53cy51aSBwbHVnaW4uCi0qLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VQbHVnaW4gZXh0ZW5kcyBQbHVnaW4KLXsKLSAgLyoqCi0gICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRlc2NyaXB0b3Igb2YgdGhpcyBwbHVnaW4gaW4gcGx1Z2luLnhtbC4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSUQgPSAib3JnLmVjbGlwc2UuanN0LndzIjsKLQotICAvKioKLSAgKiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4uCi0gICovCi0gIHByaXZhdGUgc3RhdGljIFdlYlNlcnZpY2VQbHVnaW4gaW5zdGFuY2VfOwotCi0gIHByaXZhdGUgUGVyc2lzdGVudFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHRfOwotICBwcml2YXRlIFBlcnNpc3RlbnRTY2VuYXJpb0NvbnRleHQgc2NlbmFyaW9Db250ZXh0XzsKLSAgcHJpdmF0ZSBQZXJzaXN0ZW50VURESVByZWZlcmVuY2VDb250ZXh0IHVkZGlQcmVmZXJlbmNlQ29udGV4dDsKLSAgCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RzIGEgcnVudGltZSBwbHVnaW4gb2JqZWN0IGZvciB0aGlzIHBsdWdpbi4KLSAgICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlUGx1Z2luKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgaW5zdGFuY2VfID0gdGhpczsgCi0gIH0KLSAgCi0gIC8qKgotICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIHBsdWdpbi4KLSAgKiBAcmV0dXJuIFRoZSBXZWJTZXJ2aWNlUGx1Z2luIHNpbmdsZXRvbi4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBXZWJTZXJ2aWNlUGx1Z2luIGdldEluc3RhbmNlICgpCi0gIHsKLSAgICByZXR1cm4gaW5zdGFuY2VfOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRQbHVnaW5QcmVmZXJlbmNlcygpIAotICB7Ci0gIAkJKChQZXJzaXN0ZW50VURESVByZWZlcmVuY2VDb250ZXh0KSBnZXRVRERJUHJlZmVyZW5jZUNvbnRleHQoKSkubG9hZCgpOwotICB9Ci0KLSAgcHVibGljIFJlc291cmNlQ29udGV4dCBnZXRSZXNvdXJjZUNvbnRleHQoKQotICB7Ci0gIAkJaWYgKHJlc291cmNlQ29udGV4dF8gPT0gbnVsbCkgCi0gIAkJCXJlc291cmNlQ29udGV4dF8gPSBQZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0LmdldEluc3RhbmNlKCk7Ci0JCXJldHVybiByZXNvdXJjZUNvbnRleHRfOwotICB9Ci0KLSAgcHVibGljIFNjZW5hcmlvQ29udGV4dCBnZXRTY2VuYXJpb0NvbnRleHQoKQotICB7Ci0gIAkJaWYgKHNjZW5hcmlvQ29udGV4dF8gPT0gbnVsbCkKLSAgCQl7Ci0gIAkJICBzY2VuYXJpb0NvbnRleHRfID0gbmV3IFBlcnNpc3RlbnRTY2VuYXJpb0NvbnRleHQoKTsKLSAgCQkgIHNjZW5hcmlvQ29udGV4dF8ubG9hZCgpOwotICAJCX0KLQotCQlyZXR1cm4gc2NlbmFyaW9Db250ZXh0XzsKLSAgfQotICAKLSAgcHVibGljIFVERElQcmVmZXJlbmNlQ29udGV4dCBnZXRVRERJUHJlZmVyZW5jZUNvbnRleHQoKQotICB7Ci0gICAgaWYgKHVkZGlQcmVmZXJlbmNlQ29udGV4dCA9PSBudWxsKQotICAgICAgdWRkaVByZWZlcmVuY2VDb250ZXh0ID0gbmV3IFBlcnNpc3RlbnRVRERJUHJlZmVyZW5jZUNvbnRleHQoKTsKLSAgICByZXR1cm4gdWRkaVByZWZlcmVuY2VDb250ZXh0OwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvd3NydC9XZWJTZXJ2aWNlSmF2YUNsaWVudEluZm8uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvd3NydC9XZWJTZXJ2aWNlSmF2YUNsaWVudEluZm8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE5MDAyYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3dzcnQvV2ViU2VydmljZUphdmFDbGllbnRJbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNjIwICAgMTQ3ODY0IGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwud3NydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VDbGllbnRJbmZvOwotCi0vKioKLSAqIFRoaXMgc3ViY2xhc3Mgb2YgV2ViU2VydmljZUNsaWVudEluZm8gYWRkcyBwcm9wZXJ0aWVzCi0gKiByZWxldmFudCB0byBkZXNjcmlwdG9ycyBvZiBKYXZhIFdlYiBzZXJ2aWNlIGNsaWVudHMuCi0gKi8KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlSmF2YUNsaWVudEluZm8gZXh0ZW5kcyBXZWJTZXJ2aWNlQ2xpZW50SW5mbwotewotCXByaXZhdGUgSVR5cGUgamR0VHlwZV87Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgSkRUIElUeXBlIG9mIHRoZSBwcmltYXJ5IEphdmEgcHJveHkgY2xhc3MKLQkgKiBvZiBhIFdlYiBzZXJ2aWNlIGNsaWVudCwgb3IgbnVsbCBpZiBubyBzdWNoIGNsYXNzIGhhcwotCSAqIGJlZW4gbG9jYXRlZC4KLQkgKiBAcmV0dXJuIFRoZSBKRFQgSVR5cGUgb2YgdGhlIEphdmEgY2xpZW50IHByb3h5IGNsYXNzLgotCSAqLwotCXB1YmxpYyBJVHlwZSBnZXRUeXBlICgpCi0JewotCQlyZXR1cm4gamR0VHlwZV87Ci0JfQotCQotCS8qKgotCSAqIFNldHMgdGhlIEpEVCBJVHlwZSBvZiB0aGUgcHJpbWFyeSBKYXZhIHByb3h5IGNsYXNzCi0JICogb2YgYSBXZWIgc2VydmljZSBjbGllbnQuCi0JICogQHBhcmFtIGpkdFR5cGUgVGhlIEpEVCBJVHlwZSBvZiB0aGUgSmF2YSBjbGllbnQgcHJveHkgY2xhc3MuCi0JICovCi0JcHVibGljIHZvaWQgc2V0VHlwZSAoIElUeXBlIGpkdFR5cGUgKQotCXsKLQkJamR0VHlwZV8gPSBqZHRUeXBlOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvd3NydC9XZWJTZXJ2aWNlSmF2YUluZm8uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2UuanN0LndzL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvaW50ZXJuYWwvd3NydC9XZWJTZXJ2aWNlSmF2YUluZm8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZkOWVjOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLmpzdC53cy9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL2ludGVybmFsL3dzcnQvV2ViU2VydmljZUphdmFJbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNjIwICAgMTQ3ODY0IGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwud3NydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VJbmZvOwotCi0vKioKLSAqIFRoaXMgc3ViY2xhc3Mgb2YgV2ViU2VydmljZUluZm8gYWRkcyBwcm9wZXJ0aWVzCi0gKiByZWxldmFudCB0byBkZXNjcmlwdG9ycyBvZiBKYXZhIFdlYiBzZXJ2aWNlcy4KLSAqLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VKYXZhSW5mbyBleHRlbmRzIFdlYlNlcnZpY2VJbmZvCi17Ci0JcHJpdmF0ZSBJVHlwZSBqZHRUeXBlXzsKLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBKRFQgSVR5cGUgb2YgdGhlIHByaW1hcnkgSmF2YSBpbXBsZW1lbnRhdGlvbgotCSAqIGNsYXNzIG9mIGEgV2ViIHNlcnZpY2UsIG9yIG51bGwgaWYgbm8gc3VjaCBjbGFzcyBoYXMKLQkgKiBiZWVuIGxvY2F0ZWQuCi0JICogQHJldHVybiBUaGUgSkRUIElUeXBlIG9mIHRoZSBKYXZhIGltcGxlbWVudGF0aW9uIGNsYXNzLgotCSAqLwotCXB1YmxpYyBJVHlwZSBnZXRUeXBlICgpCi0JewotCQlyZXR1cm4gamR0VHlwZV87Ci0JfQotCQotCS8qKgotCSAqIFNldHMgdGhlIEpEVCBJVHlwZSBvZiB0aGUgcHJpbWFyeSBKYXZhIGltcGxlbWVudGF0aW9uCi0JICogY2xhc3Mgb2YgYSBXZWIgc2VydmljZS4KLQkgKiBAcGFyYW0gamR0VHlwZSBUaGUgSkRUIElUeXBlIG9mIHRoZSBKYXZhIGltcGxlbWVudGF0aW9uIGNsYXNzLgotCSAqLwotCXB1YmxpYyB2b2lkIHNldFR5cGUgKCBJVHlwZSBqZHRUeXBlICkKLQl7Ci0JCWpkdFR5cGVfID0gamR0VHlwZTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlLy5jbGFzc3BhdGggYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNzM5MzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS8uY2xhc3NwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI2OGIwNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi1ydW50aW1lCi10ZW1wLmZvbGRlcgotZW52Y29yZS5qYXIKLUBkb3QKLXNyYy56aXAKLWphdmFDb21waWxlci4uLmFyZ3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzI3ZGVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWRlODQ2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6Mzc6MjEgRVNUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbkluRGVwcmVjYXRlZENvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25XaGVuT3ZlcnJpZGluZ0RlcHJlY2F0ZWRNZXRob2Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGlzY291cmFnZWRSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVtcHR5U3RhdGVtZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmhpZGRlbkNhdGNoQmxvY2s9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBhdGlibGVOb25Jbmhlcml0ZWRJbnRlcmZhY2VNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBsZXRlRW51bVN3aXRjaD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5kaXJlY3RTdGF0aWNBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmxvY2FsVmFyaWFibGVIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nRGVwcmVjYXRlZEFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdTZXJpYWxWZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9FZmZlY3RBc3NpZ25tZW50PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9JbXBsaWNpdFN0cmluZ0NvbnZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub25FeHRlcm5hbGl6ZWRTdHJpbmdMaXRlcmFsPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3BlY2lhbFBhcmFtZXRlckhpZGluZ0ZpZWxkPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN0YXRpY0FjY2Vzc1JlY2VpdmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN5bnRoZXRpY0FjY2Vzc0VtdWxhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udHlwZVBhcmFtZXRlckhpZGluZz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuY2hlY2tlZFR5cGVPcGVyYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmRvY3VtZW50ZWRFbXB0eUJsb2NrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeUVsc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5VHlwZUNoZWNrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnF1YWxpZmllZEZpZWxkQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb25XaGVuT3ZlcnJpZGluZz1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRJbXBvcnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5PdmVycmlkaW5nQ29uY3JldGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUHJpdmF0ZU1lbWJlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ3YTIzNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jTW9uIEphbiAzMCAxMDo0MDozNCBFU1QgMjAwNgotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0xCi1jb21waWxlcnMucC5uby1yZXF1aXJlZC1hdHQ9MAotY29tcGlsZXJzLnAubm90LWV4dGVybmFsaXplZC1hdHQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1hdHRyaWJ1dGU9MAotY29tcGlsZXJzLnAudW5rbm93bi1jbGFzcz0wCi1jb21waWxlcnMucC51bmtub3duLWVsZW1lbnQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1yZXNvdXJjZT0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWV4LXBvaW50cz0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWltcG9ydD0wCi1jb21waWxlcnMudXNlLXByb2plY3Q9dHJ1ZQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWQzY2E4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjIwNC5xdWFsaWZpZXIKLUJ1bmRsZS1WZW5kb3I6ICVQTFVHSU5fUFJPVklERVIKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGE7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnJlZ2lzdHJ5O3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUudXJpO3gtaW50ZXJuYWw6PXRydWUKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3M7YnVuZGxlLXZlcnNpb249IlsxLjEuMjAwLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcztidW5kbGUtdmVyc2lvbj0iWzMuNC4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSJbMy40LjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50O2J1bmRsZS12ZXJzaW9uPSJbMS4wLjIwMCwyLjAuMCkiCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvYWJvdXQuaHRtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvYnVpbGQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRiODJjNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1iaW4uaW5jbHVkZXMgPSAqLmphcixcCi0gICAgICAgICAgICAgICAuLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sCi1zcmMuaW5jbHVkZXMgPSBjb21wb25lbnQueG1sCi1zb3VyY2UuLiA9IHNyYy8KLW91dHB1dC4uID0gYmluLwotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL2NvbXBvbmVudC54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL2NvbXBvbmVudC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNDU4ZjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9jb21wb25lbnQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNvbXBvbmVudCB4bWxucz0iaHR0cDovL2VjbGlwc2Uub3JnL3d0cC9yZWxlbmcvdG9vbHMvY29tcG9uZW50LW1vZGVsIiBuYW1lPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZCI+Ci0gICA8Y29tcG9uZW50LWRlcGVuZHMgdW5yZXN0cmljdGVkPSJ0cnVlIj4KLSAgIDwvY29tcG9uZW50LWRlcGVuZHM+Ci0gICA8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYiIGZyYWdtZW50PSJmYWxzZSIvPgotICAgPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUiIGZyYWdtZW50PSJmYWxzZSIvPgotICAgPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpIiBmcmFnbWVudD0iZmFsc2UiLz4KLTwvY29tcG9uZW50PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9wbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MTcwOWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPUVudmlyb25tZW50IENvbW1hbmQgRnJhbWV3b3JrIChjb3JlKQotUExVR0lOX1BST1ZJREVSPUVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9Db21tYW5kRmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvQ29tbWFuZEZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFkOGRlYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9Db21tYW5kRmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGNyZWF0ZSBDb21tYW5kIG9iamVjdHMuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIENvbW1hbmRGYWN0b3J5IAotewotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIGNyZWF0ZWQgQ29tbWFuZCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gY3JlYXRlKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9Db21tYW5kTWFuYWdlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvQ29tbWFuZE1hbmFnZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI5NDZkMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9Db21tYW5kTWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotCi0vKioKLSAqIENvbW1hbmRNYW5hZ2VycyBoZWxwIG1hbmFnZSB0aGUgbGlmZWN5Y2xlIG9mIENvbW1hbmRzLgotICovCi1wdWJsaWMgaW50ZXJmYWNlIENvbW1hbmRNYW5hZ2VyCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBDb21tYW5kTWFuYWdlciBpcyBjYXBhYmxlIG9mIHVuZG9pbmcKLSAgICogQ29tbWFuZHMuIFNvbWUgQ29tbWFuZE1hbmFnZXJzIGFuZCBFbnZpcm9ubWVudHMgbWF5IGJlIG9mCi0gICAqIGEgc29ydCB0aGF0IHdpbGwgbmV2ZXIgdW5kbygpIENvbW1hbmRzLiBDb21tYW5kLmV4ZWN1dGUoKQotICAgKiBtZXRob2RzIHNob3VsZCB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIG1ldGhvZCB0byBvcHRpbWl6ZQotICAgKiBvdXQgYW55IGNhY2hpbmcgbG9naWMgd2hlbmV2ZXIgdGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzVW5kb0VuYWJsZWQgKCk7Ci0KLSAgLy8gVGhlcmUncyBwcm9iYWJseSBtb3JlLCBsaWtlIGZhY3RvcnkgbWV0aG9kcyBmb3IgY3JlYXRpbmcKLSAgLy8gVW5kby9SZWRvIHN0YWNrcyBhbmQgc3R1ZmYgbGlrZSB0aGF0LgotICAKLSAgcHVibGljIERhdGFNYXBwaW5nUmVnaXN0cnkgZ2V0TWFwcGluZ1JlZ2lzdHJ5KCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9FbnZpcm9ubWVudENvcmUucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL0Vudmlyb25tZW50Q29yZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTFkOGMwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL0Vudmlyb25tZW50Q29yZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDcwNDE4ICAgMTc3MDA1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBDb21tb24gTWVzc2FnZXMKLSMKLU1TR19FUlJPUl9VTkVYUEVDVEVEX0VSUk9SPUlXQUIwMDE0RSBVbmV4cGVjdGVkIGV4Y2VwdGlvbiBvY2N1cnJlZC4KLQotVElUTEVfV0FSTklORz1XYXJuaW5nOgotVElUTEVfRVJST1I9RXJyb3I6Ci1USVRMRV9JTkZPPUluZm86CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9FbnZpcm9ubWVudENvcmVNZXNzYWdlcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvRW52aXJvbm1lbnRDb3JlTWVzc2FnZXMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ1ODFhZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9FbnZpcm9ubWVudENvcmVNZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLQotcHVibGljIGZpbmFsIGNsYXNzIEVudmlyb25tZW50Q29yZU1lc3NhZ2VzIGV4dGVuZHMgTkxTIHsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCVU5ETEVfTkFNRSA9ICJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5FbnZpcm9ubWVudENvcmUiOy8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgRW52aXJvbm1lbnRDb3JlTWVzc2FnZXMoKSB7Ci0JCS8vIERvIG5vdCBpbnN0YW50aWF0ZQotCX0KLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9VTkVYUEVDVEVEX0VSUk9SOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRJVExFX1dBUk5JTkc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVElUTEVfRVJST1I7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVElUTEVfSU5GTzsKLQotCXN0YXRpYyB7Ci0JCU5MUy5pbml0aWFsaXplTWVzc2FnZXMoQlVORExFX05BTUUsIEVudmlyb25tZW50Q29yZU1lc3NhZ2VzLmNsYXNzKTsKLQl9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvSUNvbW1hbmRGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9JQ29tbWFuZEZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgyYTI4Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9JQ29tbWFuZEZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZTsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLS8qKgotICogCi0gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gcmV0dXJuIGEgc2VxdWVuY2Ugb2YgQ29tbWFuZHMuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElDb21tYW5kRmFjdG9yeSBleHRlbmRzIEl0ZXJhdG9yIAotewotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgbmV4dCBDb21tYW5kIGluIHRoZSBzZXF1ZW5jZS4KLSAgICovCi0gIHB1YmxpYyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiBnZXROZXh0Q29tbWFuZCgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvU2ltcGxlQ29tbWFuZEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL1NpbXBsZUNvbW1hbmRGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ZmRjNGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvU2ltcGxlQ29tbWFuZEZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZTsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotCi1wdWJsaWMgY2xhc3MgU2ltcGxlQ29tbWFuZEZhY3RvcnkgaW1wbGVtZW50cyBJQ29tbWFuZEZhY3RvcnkgCi17Ci0gICAgcHJpdmF0ZSBWZWN0b3IgY29tbWFuZHNfOwotCXByaXZhdGUgaW50ICAgIGluZGV4XzsKLQkKLQlwdWJsaWMgU2ltcGxlQ29tbWFuZEZhY3RvcnkoIFZlY3RvciBjb21tYW5kcyApCi0JewotCSAgY29tbWFuZHNfID0gY29tbWFuZHM7Ci0JICBpbmRleF8gICAgPSAwOwotCX0KLQkKLQlwdWJsaWMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gZ2V0TmV4dENvbW1hbmQoKSAKLQl7Ci0JCXJldHVybiAoQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24pbmV4dCgpOwotCX0KLQotCXB1YmxpYyB2b2lkIHJlbW92ZSgpIAotCXsKLSAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOwotCX0KLQotCXB1YmxpYyBib29sZWFuIGhhc05leHQoKSAKLQl7Ci0JCXJldHVybiBpbmRleF8gPCBjb21tYW5kc18uc2l6ZSgpOwotCX0KLQotCXB1YmxpYyBPYmplY3QgbmV4dCgpIAotCXsKLQkJcmV0dXJuIGNvbW1hbmRzXy5lbGVtZW50QXQoaW5kZXhfKyspOwotCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29tbW9uL0NvbmRpdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29tbW9uL0NvbmRpdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjEyY2Y3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbW1vbi9Db25kaXRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb247Ci0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgZGVmaW5lcyBhIGJvb2xlYW4gY29uZGl0aW9uIHRoYXQgY2FuIGJlIGV2YWx1YXRlZCBmb3IgYW55IG9iamVjdC4KLSAqLwotcHVibGljIGludGVyZmFjZSBDb25kaXRpb24KLXsKLSAgLyoqCi0gICAqIFRoaXMgcmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgcGFzc2VzIHRoaXMgY29uZGl0aW9uLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbW1vbi9FdmFsdWF0ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29tbW9uL0V2YWx1YXRlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZmE4MDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29tbW9uL0V2YWx1YXRlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uOwotCi0vKioKLSAgKiBUaGlzIGludGVyZmFjZSBjYW4gYmUgdXNlZCB3aGVuIGEgY29uZGl0aW9uYWwgb2JqZWN0IG5lZWRzIHRvIGJlIHJldHVybmVkLgotKiovCi1wdWJsaWMgaW50ZXJmYWNlIEV2YWx1YXRlCi17Ci0gIC8qKgotICAgICogQHJldHVybiByZXR1cm5zIGFuIG9iamVjdCBiYXNlZCBvbiBzb21lIGV2YWx1YXRlZCBjb25kaXRpb24uCi0gICoqLwotICBwdWJsaWMgT2JqZWN0IGV2YWx1YXRlKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb21tb24vTWVzc2FnZVV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb21tb24vTWVzc2FnZVV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MmNkNDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29tbW9uL01lc3NhZ2VVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbjsKLQotaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIGNvbnZpZW5lbnQgd2F5IHRvIGFjY2VzcyByZXNvdXJjZSBidW5kbGVzIGFuZAotICogcmV0aWV2ZSB0cmFuc2xhdGVkIHN0cmluZ3MuCi0gKgotICoKLSAqLwotcHVibGljIGNsYXNzIE1lc3NhZ2VVdGlscwotewotICBwcml2YXRlIFJlc291cmNlQnVuZGxlIHJlc291cmNlXzsKLSAgCi0gIHByaXZhdGUgc3RhdGljIEhhc2h0YWJsZSBidW5kbGVzXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHBhcmFtIGJ1bmRsZUlkIHRoZSByZXNvdXJjZSBidW5kbGUgSUQuCi0gICAqIEBwYXJhbSBvYmplY3QgdGhlIGNsYXNzIGxvYWRlciBmb3IgdGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIHJldHJpZXZlCi0gICAqICAgICAgICAgICAgICAgdGhlIHJlc291cmNlIGJ1bmRsZS4KLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlVXRpbHMoIFN0cmluZyBidW5kbGVJZCwgT2JqZWN0IG9iamVjdCApCi0gIHsKLSAgICB0aGlzKCBidW5kbGVJZCwgb2JqZWN0LmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKSApOwotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIEBwYXJhbSBidW5kbGVJZCB0aGUgcmVzb3VyY2UgYnVuZGxlIElELgotICAgKiBAcGFyYW0gbG9hZGVyIHRoZSBjbGFzcyBsb2FkZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmV0cmlldmUKLSAgICogICAgICAgICAgICAgICB0aGUgcmVzb3VyY2UgYnVuZGxlLgotICAgKi8KLSAgcHVibGljIE1lc3NhZ2VVdGlscyggU3RyaW5nIGJ1bmRsZUlkLCBDbGFzc0xvYWRlciBsb2FkZXIgKQotICB7Ci0gICAgcmVzb3VyY2VfID0gKFJlc291cmNlQnVuZGxlKWJ1bmRsZXNfLmdldCggYnVuZGxlSWQgKTsKLSAgICAKLSAgICBpZiggcmVzb3VyY2VfID09IG51bGwgKQotICAgIHsKLSAgICAgIHJlc291cmNlXyA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSggYnVuZGxlSWQsIExvY2FsZS5nZXREZWZhdWx0KCksIGxvYWRlciApOwotICAgICAgYnVuZGxlc18ucHV0KCBidW5kbGVJZCwgcmVzb3VyY2VfICk7Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIEBwYXJhbSBrZXkgdGhlIGtleSBmb3IgdGhlIHN0cmluZyB0byByZXRyaWV2ZS4KLSAgICogQHJldHVybiByZXR1cm5zIHRoZSB0cmFuc2xhdGVkIHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TWVzc2FnZSAoIFN0cmluZyBrZXkgKQotICB7Ci0gICAgU3RyaW5nIHZhbHVlID0ga2V5OwotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIHZhbHVlID0gcmVzb3VyY2VfLmdldFN0cmluZygga2V5ICk7IAotICAgIH0KLSAgICBjYXRjaCggVGhyb3dhYmxlIGV4YyApCi0gICAgewotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHBhcmFtIGtleSB0aGUga2V5IGZvciB0aGUgc3RyaW5nIHRvIHJldHJpZXZlLgotICAgKiBAcGFyYW0gYXJncyBUaGVzZSBhcmd1bWVudHMgd2lsbCBiZSBzdWJzdGl0dXRlZCBpbnRvIHRoZSB0cmFuc2xhdGVkIHN0cmluZy4KLSAgICogQHJldHVybiByZXR1cm5zIHRoZSB0cmFuc2xhdGVkIHN0cmluZyB3aXRoIGFueSBzdWJzdGl0dXRpb25zLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlICggU3RyaW5nIGtleSwgT2JqZWN0W10gYXJncyApCi0gIHsKLSAgICByZXR1cm4gTWVzc2FnZUZvcm1hdC5mb3JtYXQoIGdldE1lc3NhZ2Uoa2V5KSxhcmdzICk7Ci0gIH0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb21tb24vUHJvZ3Jlc3NVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29tbW9uL1Byb2dyZXNzVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAyOGNhYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb21tb24vUHJvZ3Jlc3NVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZQotICogYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLQotcHVibGljIGNsYXNzIFByb2dyZXNzVXRpbHMKLXsKLSAgc3RhdGljIHB1YmxpYyB2b2lkIHJlcG9ydCggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBTdHJpbmcgbWVzc2FnZSApCi0gIHsKLSAgICBpZiggbW9uaXRvciAhPSBudWxsICkgCi0gICAgewotICAgICAgIG1vbml0b3IuYmVnaW5UYXNrKCBtZXNzYWdlLCBJUHJvZ3Jlc3NNb25pdG9yLlVOS05PV04gKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbW1vbi9SYW5nZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29tbW9uL1JhbmdlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MjI0ZjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29tbW9uL1JhbmdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC51cmkuSVVSSTsKLQotLyoqCi0gKiBDYXJyaWVzIHBvc2l0aW9uIGluZm9ybWF0aW9uIHdpdGhpbiBhIHJlc291cmNlLgotICovCi1wdWJsaWMgaW50ZXJmYWNlIFJhbmdlCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVOS05PV04gPSAtMTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWRlbnRpZmllciBvZiB0aGUgcmVzb3VyY2UgdGhlIHJhbmdlIGFwcGxpZXMgdG8uCi0gICAqLwotICBwdWJsaWMgSVVSSSBnZXRVUkkgKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGluZGV4LCB6ZXJvLWluZGV4ZWQsIG9mIHRoZSBmaXJzdCBsaW5lCi0gICAqIG9mIHRoZSByYW5nZS4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0U3RhcnRpbmdMaW5lTnVtYmVyICgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpbmRleCwgemVyby1pbmRleGVkLCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyCi0gICAqIG9mIHRoZSByYW5nZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLgotICAgKi8KLSAgcHVibGljIGludCBnZXRTdGFydGluZ0NoYXJOdW1iZXJJbkxpbmUgKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGluZGV4LCB6ZXJvLWluZGV4ZWQsIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKLSAgICogb2YgdGhlIHJhbmdlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuCi0gICAqLwotICBwdWJsaWMgaW50IGdldFN0YXJ0aW5nQ2hhck51bWJlckluVVJJICgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpbmRleCwgemVyby1pbmRleGVkLCBvZiB0aGUgbGFzdCBsaW5lCi0gICAqIG9mIHRoZSByYW5nZS4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0RW5kaW5nTGluZU51bWJlciAoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgb2Zmc2V0LCB6ZXJvLWluZGV4ZWQsIG9mIHRoZSBsYXN0IGNoYXJhY3RlcgotICAgKiBvZiB0aGUgcmFuZ2UgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0RW5kaW5nQ2hhck51bWJlckluTGluZSAoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgaW5kZXgsIHplcm8taW5kZXhlZCwgb2YgdGhlIGxhc3QgY2hhcmFjdGVyCi0gICAqIG9mIHRoZSByYW5nZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLgotICAgKi8KLSAgcHVibGljIGludCBnZXRFbmRpbmdDaGFyTnVtYmVySW5VUkkgKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb21tb24vUmFuZ2VWZWN0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbW1vbi9SYW5nZVZlY3Rvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjQ2MGJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbW1vbi9SYW5nZVZlY3Rvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbjsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLS8qKgotICogVGhpcyBWZWN0b3IgbWFrZXMgdGhlIHByb3RlY3RlZCBtZXRob2QgcmVtb3ZlUmFuZ2UgcHVibGljLgotICoKLSAqLwotcHVibGljIGNsYXNzIFJhbmdlVmVjdG9yIGV4dGVuZHMgVmVjdG9yCi17Ci0gIC8qKgotICAgKiBDb21tZW50IGZvciA8Y29kZT5zZXJpYWxWZXJzaW9uVUlEPC9jb2RlPgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNDA0ODc5MzQ3NjY1OTIzMDc3M0w7Ci0KLSAgcHVibGljIHZvaWQgcmVtb3ZlUmFuZ2UoIGludCBzdGFydCwgaW50IGVuZCApCi0gIHsKLSAgICBzdXBlci5yZW1vdmVSYW5nZSggc3RhcnQsIGVuZCApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb21tb24vU3RhdHVzVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbW1vbi9TdGF0dXNVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDNhNTcyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbW1vbi9TdGF0dXNVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZQotICogYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTXVsdGlTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLQotcHVibGljIGNsYXNzIFN0YXR1c1V0aWxzCi17Ci0gIHB1YmxpYyBzdGF0aWMgSVN0YXR1cyBlcnJvclN0YXR1cyggU3RyaW5nIGVycm9yTWVzc2FnZSApCi0gIHsKLSAgICByZXR1cm4gbmV3IFN0YXR1cyggSVN0YXR1cy5FUlJPUiwgImlkIiwgMCwgZXJyb3JNZXNzYWdlLCBudWxsICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgSVN0YXR1cyBlcnJvclN0YXR1cyggVGhyb3dhYmxlIGV4YyApCi0gIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IGV4Yy5nZXRNZXNzYWdlKCk7Ci0gICAgCi0gICAgcmV0dXJuIG5ldyBTdGF0dXMoIElTdGF0dXMuRVJST1IsICJpZCIsIDAsIG1lc3NhZ2UgPT0gbnVsbCA/ICIiIDogbWVzc2FnZSwgZXhjICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgSVN0YXR1cyBlcnJvclN0YXR1cyggU3RyaW5nIG1lc3NhZ2UsIFRocm93YWJsZSBleGMgKQotICB7Ci0gICAgcmV0dXJuIG5ldyBTdGF0dXMoIElTdGF0dXMuRVJST1IsICJpZCIsIDAsIG1lc3NhZ2UsIGV4YyApOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIE11bHRpU3RhdHVzIG11bHRpU3RhdHVzKCBTdHJpbmcgbWVzc2FnZSwgSVN0YXR1c1tdIGNoaWxkcmVuLCBUaHJvd2FibGUgZXhjICkKLSAgewotICAgIHJldHVybiBuZXcgTXVsdGlTdGF0dXMoICJpZCIsIDAsIGNoaWxkcmVuLCBtZXNzYWdlLCBleGMgKTsgIAotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIE11bHRpU3RhdHVzIG11bHRpU3RhdHVzKCBTdHJpbmcgbWVzc2FnZSwgSVN0YXR1c1tdIGNoaWxkcmVuICkKLSAgewotICAgIHJldHVybiBuZXcgTXVsdGlTdGF0dXMoICJpZCIsIDAsIGNoaWxkcmVuLCBtZXNzYWdlLCBudWxsICk7ICAKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBJU3RhdHVzIHdhcm5pbmdTdGF0dXMoIFN0cmluZyB3YXJuaW5nTWVzc2FnZSApCi0gIHsKLSAgICByZXR1cm4gbmV3IFN0YXR1cyggSVN0YXR1cy5XQVJOSU5HLCAiaWQiLCAwLCB3YXJuaW5nTWVzc2FnZSwgbnVsbCApOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIElTdGF0dXMgd2FybmluZ1N0YXR1cyggU3RyaW5nIHdhcm5pbmdNZXNzYWdlLCBUaHJvd2FibGUgZXhjICkKLSAgewotICAgIHJldHVybiBuZXcgU3RhdHVzKCBJU3RhdHVzLldBUk5JTkcsICJpZCIsIDAsIHdhcm5pbmdNZXNzYWdlLCBleGMgKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBJU3RhdHVzIGluZm9TdGF0dXMoIFN0cmluZyBpbmZvTWVzc2FnZSApCi0gIHsKLSAgICByZXR1cm4gbmV3IFN0YXR1cyggSVN0YXR1cy5JTkZPLCAiaWQiLCAwLCBpbmZvTWVzc2FnZSwgbnVsbCApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb250ZXh0L0NvbnRleHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbnRleHQvQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTcyNmEwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbnRleHQvQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQ7Ci0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSB3YXkgdG8gZ2V0IGFuZCBzZXQgcHJlZmVyZW5jZSBpbmZvcm1hdGlvbi4KLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgQ29udGV4dCAKLXsKLSAvKioKLSAgKiBMb2FkcyB0aGUgcHJlZmVyZW5jZSBkYXRhIGludG8gdGhpcyBDb250ZXh0IG9iamVjdC4KLSAgKgotICAqLwotIHB1YmxpYyB2b2lkIGxvYWQoKTsKLQotIC8qKgotICAqIFNldHMgdGhlIGRlZmF1bHQgZm9yIGEgYm9vbGVhbiBwcmVmZXJlbmNlLgotICAqIEBwYXJhbSBuYW1lIHRoZSBwcmVmZXJlbmNlIG5hbWUuCi0gICogQHBhcmFtIHZhbHVlIHRoZSBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyB2b2lkIHNldERlZmF1bHQgKFN0cmluZyBuYW1lLCBib29sZWFuIHZhbHVlKTsgCi0gCi0gLyoqCi0gICogU2V0cyB0aGUgZGVmYXVsdCBmb3IgYSBzdHJpbmcgcHJlZmVyZW5jZS4KLSAgKiBAcGFyYW0gbmFtZSB0aGUgcHJlZmVyZW5jZSBuYW1lLgotICAqIEBwYXJhbSB2YWx1ZSB0aGUgcHJlZmVyZW5jZSB2YWx1ZS4KLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXREZWZhdWx0IChTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKTsKLSAKLSAvKioKLSAgKiBTZXRzIHRoZSBkZWZhdWx0IGZvciBhIGludCBwcmVmZXJlbmNlLgotICAqIEBwYXJhbSBuYW1lIHRoZSBwcmVmZXJlbmNlIG5hbWUuCi0gICogQHBhcmFtIHZhbHVlIHRoZSBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyB2b2lkIHNldERlZmF1bHQgKFN0cmluZyBuYW1lLCBpbnQgdmFsdWUpOyAKLQotIC8qKgotICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIHN0cmluZyBwcmVmZXJlbmNlLgotICAqIEBwYXJhbSBuYW1lIHRoZSBwcmVmZXJlbmNlIG5hbWUuCi0gICogQHBhcmFtIHZhbHVlIHRoZSBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyB2b2lkIHNldFZhbHVlIChTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKTsKLSAKLSAvKioKLSAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBib29sZWFuIHByZWZlcmVuY2UuCi0gICogQHBhcmFtIG5hbWUgdGhlIHByZWZlcmVuY2UgbmFtZS4KLSAgKiBAcGFyYW0gdmFsdWUgdGhlIHByZWZlcmVuY2UgdmFsdWUuCi0gICovCi0gcHVibGljIHZvaWQgc2V0VmFsdWUgKFN0cmluZyBuYW1lLCBib29sZWFuIHZhbHVlKTsKLSAKLSAvKioKLSAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBpbnQgcHJlZmVyZW5jZS4KLSAgKiBAcGFyYW0gbmFtZSB0aGUgcHJlZmVyZW5jZSBuYW1lLgotICAqIEBwYXJhbSB2YWx1ZSB0aGUgcHJlZmVyZW5jZSB2YWx1ZS4KLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRWYWx1ZSAoU3RyaW5nIG5hbWUsIGludCB2YWx1ZSk7ICAgCi0KLSAvKioKLSAgKiBHZXRzIHRoZSB2YWx1ZSBmb3IgYSBzdHJpbmcgcHJlZmVyZW5jZS4KLSAgKiBAcGFyYW0gbmFtZSB0aGUgcHJlZmVyZW5jZSBuYW1lLgotICAqIEByZXR1cm4gdGhlIHByZWZlcmVuY2UgdmFsdWUuCi0gICovCi0gcHVibGljIFN0cmluZyBnZXRWYWx1ZUFzU3RyaW5nICggU3RyaW5nIG5hbWUpOwotIAotIC8qKgotICAqIEdldHMgdGhlIHZhbHVlIGZvciBhIGJvb2xlYW4gcHJlZmVyZW5jZS4KLSAgKiBAcGFyYW0gbmFtZSB0aGUgcHJlZmVyZW5jZSBuYW1lLgotICAqIEByZXR1cm4gdGhlIHByZWZlcmVuY2UgdmFsdWUuCi0gICovCi0gcHVibGljIGJvb2xlYW4gZ2V0VmFsdWVBc0Jvb2xlYW4gKCBTdHJpbmcgbmFtZSk7Ci0gCi0gLyoqCi0gICogR2V0cyB0aGUgdmFsdWUgZm9yIGEgaW50IHByZWZlcmVuY2UuCi0gICogQHBhcmFtIG5hbWUgdGhlIHByZWZlcmVuY2UgbmFtZS4KLSAgKiBAcmV0dXJuIHRoZSBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyBpbnQgZ2V0VmFsdWVBc0ludCAoIFN0cmluZyBuYW1lKTsgIAkJCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb250ZXh0L1Jlc291cmNlQ29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29udGV4dC9SZXNvdXJjZUNvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA1Yzc1YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb250ZXh0L1Jlc291cmNlQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQ7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgUmVzb3VyY2VDb250ZXh0IAotewotIC8qKgotICAgKiBUaGlzIGNvbnN0YW50IHN0cmluZyBpcyB1c2VkIHRvIGxvb2t1cCB0aGUgb3ZlcndyaXRlIGZpbGVzIGdlbmVyYWwgcHJlZmVyZW5jZSBmcm9tCi0gICAqIHRoZSBwbHVnaW5zIGxvY2FsIHByZWZlcmVuY2VzIHN0b3JlLgotICoqLwotIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfT1ZFUldSSVRFID0gImZpbGVzT3ZlcndyaXRlIjsKLQotIC8qKgotICAgKiBUaGlzIGNvbnN0YW50IHN0cmluZyBpcyB1c2VkIHRvIGxvb2t1cCB0aGUgY3JlYXRlIGZvbGRlcnMgZ2VuZXJhbCBwcmVmZXJlbmNlIGZyb20KLSAgICogdGhlIHBsdWdpbnMgbG9jYWwgcHJlZmVyZW5jZXMgc3RvcmUuCi0gKiovCi0gcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9DUkVBVEVfRk9MREVSUyA9ICJjcmVhdGVGb2xkZXJzIjsKLSAKLSAvKioKLSAgICogVGhpcyBjb25zdGFudCBzdHJpbmcgaXMgdXNlZCB0byBsb29rdXAgdGhlIGNoZWNrb3V0IGZpbGVzIGdlbmVyYWwgcHJlZmVyZW5jZSBmcm9tCi0gICAqIHRoZSBwbHVnaW5zIGxvY2FsIHByZWZlcmVuY2VzIHN0b3JlLgotICoqLwotIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZFUkVOQ0VfQ0hFQ0tPVVQgPSAiZmlsZXNDaGVja291dCI7Ci0KLSAvKioKLSAgKiAKLSAgKiBAcGFyYW0gZW5hYmxlIHNldCB3aGV0aGVyIG92ZXJ3cml0aW5nIG9mIGZpbGVzIGlzIGVuYWJsZWQuCi0gICovCi0gcHVibGljIHZvaWQgc2V0T3ZlcndyaXRlRmlsZXNFbmFibGVkICggYm9vbGVhbiBlbmFibGUpOwotIAotIC8qKgotICAqIAotICAqIEByZXR1cm4gcmV0dXJucyB3aGV0aGVyIG92ZXJ3cml0aW5nIG9mIGZpbGVzIGlzIGVuYWJsZWQuCi0gICovCi0gcHVibGljIGJvb2xlYW4gaXNPdmVyd3JpdGVGaWxlc0VuYWJsZWQoKTsKLSAKLSAvKioKLSAgKiAKLSAgKiBAcGFyYW0gZW5hYmxlIHNldCB3aGV0aGVyIGNyZWF0aW9uIG9mIGZvbGRlcnMgaXMgZW5hYmxlZC4KLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRDcmVhdGVGb2xkZXJzRW5hYmxlZCggYm9vbGVhbiBlbmFibGUpOwotIAotIC8qKgotICAqIAotICAqIEByZXR1cm4gcmV0dXJucyB3aGV0aGVyIGNyZWF0aW9uIG9mIGZvbGRlcnMgaXMgZW5hYmxlZC4KLSAgKi8KLSBwdWJsaWMgYm9vbGVhbiBpc0NyZWF0ZUZvbGRlcnNFbmFibGVkKCk7IAotIAotIC8qKgotICAqIAotICAqIEBwYXJhbSBlbmFibGUgc2V0cyB3aGV0aGVyIGF1dG9tYXRpYyBjaGVja291dCBvZiBmaWxlcyBpcyBlbmFibGVkLgotICAqLwotIHB1YmxpYyB2b2lkIHNldENoZWNrb3V0RmlsZXNFbmFibGVkKCBib29sZWFuIGVuYWJsZSk7Ci0gCi0gLyoqCi0gICogCi0gICogQHJldHVybiByZXR1cm5zIHdoZXRoZXIgYXV0b21hdGljIGNoZWNrb3V0IG9mIGZpbGVzIGlzIGVuYWJsZWQuCi0gICovCi0gcHVibGljIGJvb2xlYW4gaXNDaGVja291dEZpbGVzRW5hYmxlZCgpOwotIAotIC8qKgotICAqIAotICAqIEByZXR1cm4gcmV0dXJucyBhIGNvcHkgb2YgdGhpcyBSZXNvdXJjZUNvbnRleHQuCi0gICovCi0gcHVibGljIFJlc291cmNlQ29udGV4dCBjb3B5KCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9jb250ZXh0L1Jlc291cmNlRGVmYXVsdHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbnRleHQvUmVzb3VyY2VEZWZhdWx0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjEzNDQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbnRleHQvUmVzb3VyY2VEZWZhdWx0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQ7Ci0KLXB1YmxpYyBjbGFzcyBSZXNvdXJjZURlZmF1bHRzCi17Ci0gcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBQUkVGRVJFTkNFX09WRVJXUklURV9ERUZBVUxUID0gZmFsc2U7Ci0gcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBQUkVGRVJFTkNFX0NSRUFURV9GT0xERVJTX0RFRkFVTFQgPSB0cnVlOwotIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gUFJFRkVSRU5DRV9DSEVDS09VVF9ERUZBVUxUID0gZmFsc2U7Ci0KLSAvKioKLSAgKiAKLSAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGRlZmF1bHQgc2V0dGluZyBmb3Igb3ZlcndyaXRpbmcgZmlsZXMuCi0gICovCi0gcHVibGljIHN0YXRpYyBib29sZWFuIGdldE92ZXJ3cml0ZUZpbGVzRGVmYXVsdCAoKQotIHsKLSAJcmV0dXJuIFBSRUZFUkVOQ0VfT1ZFUldSSVRFX0RFRkFVTFQ7Ci0gfQotIAotIC8qKgotICAqIAotICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZGVmYXVsdCBzZXR0aW5nIG9mciBjcmVhdGluZyBmb2xkZXJzLgotICAqLwotIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBnZXRDcmVhdGVGb2xkZXJzRGVmYXVsdCAoKQotIHsgCi0JcmV0dXJuIFBSRUZFUkVOQ0VfQ1JFQVRFX0ZPTERFUlNfREVGQVVMVDsKLSB9Ci0KLSAvKioKLSAgKiAKLSAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgY2hlY2tpbmcgb3V0IGZpbGVzLgotICAqLwotIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBnZXRDaGVja291dEZpbGVzRGVmYXVsdCgpCi0gewotCXJldHVybiBQUkVGRVJFTkNFX0NIRUNLT1VUX0RFRkFVTFQ7Ci0gfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29udGV4dC9UcmFuc2llbnRSZXNvdXJjZUNvbnRleHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2NvbnRleHQvVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMGJhM2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvY29udGV4dC9UcmFuc2llbnRSZXNvdXJjZUNvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0OwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIFJlc291cmNlQ29udGV4dCBpbnRlcmZhY2Ugd2hlcmUgdGhlIHN0YXRlCi0gKiBvZiB0aGUgY29udGV4dCBkYXRhIGlzIHRyYW5zaWVudC4KLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBUcmFuc2llbnRSZXNvdXJjZUNvbnRleHQgaW1wbGVtZW50cyBSZXNvdXJjZUNvbnRleHQgCi17Ci0gIHByaXZhdGUgYm9vbGVhbiBvdmVyV3JpdGVGaWxlczsKLSAgcHJpdmF0ZSBib29sZWFuIGNyZWF0ZUZvbGRlcnM7Ci0gIHByaXZhdGUgYm9vbGVhbiBjaGVja091dEZpbGVzOwotCi0gIHB1YmxpYyBUcmFuc2llbnRSZXNvdXJjZUNvbnRleHQoKSB7Ci0gICAgc2V0T3ZlcndyaXRlRmlsZXNFbmFibGVkKFJlc291cmNlRGVmYXVsdHMuZ2V0T3ZlcndyaXRlRmlsZXNEZWZhdWx0KCkpOwotICAgIHNldENyZWF0ZUZvbGRlcnNFbmFibGVkKFJlc291cmNlRGVmYXVsdHMuZ2V0Q3JlYXRlRm9sZGVyc0RlZmF1bHQoKSk7Ci0gICAgc2V0Q2hlY2tvdXRGaWxlc0VuYWJsZWQoUmVzb3VyY2VEZWZhdWx0cy5nZXRDaGVja291dEZpbGVzRGVmYXVsdCgpKTsKLSAgfQotCi0gIC8qKiAgCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQjc2V0T3ZlcndyaXRlRmlsZXNFbmFibGVkKGJvb2xlYW4pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRPdmVyd3JpdGVGaWxlc0VuYWJsZWQoYm9vbGVhbiBlbmFibGUpIHsKLSAgICBvdmVyV3JpdGVGaWxlcyA9IGVuYWJsZTsKLSAgfQotICAKLSAgLyoqICAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dCNpc092ZXJ3cml0ZUZpbGVzRW5hYmxlZCgpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc092ZXJ3cml0ZUZpbGVzRW5hYmxlZCgpIHsKLSAgICByZXR1cm4gb3ZlcldyaXRlRmlsZXM7Ci0gIH0KLQotICAvKiogIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQuUmVzb3VyY2VDb250ZXh0I3NldENyZWF0ZUZvbGRlcnNFbmFibGVkKGJvb2xlYW4pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDcmVhdGVGb2xkZXJzRW5hYmxlZChib29sZWFuIGVuYWJsZSkgewotICAgIGNyZWF0ZUZvbGRlcnMgPSBlbmFibGU7Ci0gIH0KLSAgCi0gIC8qKiAgCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQjaXNDcmVhdGVGb2xkZXJzRW5hYmxlZCgpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0NyZWF0ZUZvbGRlcnNFbmFibGVkKCkgewotICAgIHJldHVybiBjcmVhdGVGb2xkZXJzOwotICB9Ci0KLSAgLyoqICAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dCNzZXRDaGVja291dEZpbGVzRW5hYmxlZChib29sZWFuKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q2hlY2tvdXRGaWxlc0VuYWJsZWQoYm9vbGVhbiBlbmFibGUpIHsKLSAgICBjaGVja091dEZpbGVzID0gZW5hYmxlOwotICB9Ci0gIAotICAvKiogIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQuUmVzb3VyY2VDb250ZXh0I2lzQ2hlY2tvdXRGaWxlc0VuYWJsZWQoKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNDaGVja291dEZpbGVzRW5hYmxlZCgpIHsKLSAgICByZXR1cm4gY2hlY2tPdXRGaWxlczsKLSAgfQotICAKLSAgLyoqICAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dCNjb3B5KCkKLSAgICovCi0gIHB1YmxpYyBSZXNvdXJjZUNvbnRleHQgY29weSgpIHsKLSAgICBSZXNvdXJjZUNvbnRleHQgY2MgPSBuZXcgVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0KCk7Ci0gICAgY2Muc2V0T3ZlcndyaXRlRmlsZXNFbmFibGVkKGlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCkpOwotICAgIGNjLnNldENyZWF0ZUZvbGRlcnNFbmFibGVkKGlzQ3JlYXRlRm9sZGVyc0VuYWJsZWQoKSk7Ci0gICAgY2Muc2V0Q2hlY2tvdXRGaWxlc0VuYWJsZWQoaXNDaGVja291dEZpbGVzRW5hYmxlZCgpKTsKLSAgICByZXR1cm4gY2M7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2RhdGEvQmVhbk1vZGlmaWVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9kYXRhL0JlYW5Nb2RpZmllci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTZmYzY2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2RhdGEvQmVhbk1vZGlmaWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGE7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgQmVhbk1vZGlmaWVyIHsKLQotCS8qKgotCSAqIFBlcmZvcm1zIG1vZGlmaWNhdGlvbiBvbiBiZWFuIHByb3BlcnRpZXMgdXNpbmcgZGF0YSBwcm92aWRlZAotCSAqIEBwYXJhbSBiZWFuICBUaGUgYmVhbiB0byBiZSBtb2RpZmllZAotCSAqIEBwYXJhbSBwcm9wZXJ0eUhvbGRlciBUaGUgZGF0YSB0byB1c2UgdG8gbWFrZSB0aGUgbW9kaWZpY2F0aW9uCi0JICovCi0JcHVibGljIHZvaWQgbW9kaWZ5KE9iamVjdCBiZWFuLCBPYmplY3QgcHJvcGVydHlIb2xkZXIpOwotCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZGF0YS9DbGFzc0VudHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9kYXRhL0NsYXNzRW50cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFlNWM1Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9kYXRhL0NsYXNzRW50cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxMyAgIDEzMDk1OCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotcHVibGljIGNsYXNzIENsYXNzRW50cnkKLXsKLSAgLy8gQSBsaXN0IG9mIGdldHRlciBtZXRob2RzIGZvciBhIHBhcnRpY3VsYXIgY2xhc3MuCi0gIHB1YmxpYyBWZWN0b3IgZ2V0dGVyTGlzdF87Ci0gIAotICAvLyBBIGxpc3Qgb2Ygc2V0dGVyIG1ldGhvZHMgZm9yIGEgcGFydGljdWxhciBjbGFzcy4KLSAgcHVibGljIFZlY3RvciBzZXR0ZXJMaXN0XzsKLSAgCi0gIC8vIEEgbGlzdCBvZiBpbnN0YW5jZSBvYmplY3RzIGZvciB0aGlzIGNsYXNzLiAgT25seSB0aGUgbGFzdCBlbnRyeQotICAvLyBzaG91bGQgYmUgbG9va2VkIGF0LiAKLSAgcHJpdmF0ZSBWZWN0b3Igb2JqZWN0TGlzdF8gPSBuZXcgVmVjdG9yKCk7Ci0gIAotICAvLyBBIGxpc3Qgb2YgSW50ZXJnZXIgb2JqZWN0cyB0aGF0IHJlcHJlc2VudCBhbiBvcmRlcmluZyBvZiBvYmplY3RzLgotICAvLyBUaGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIG9iamVjdExpc3QgdmVjdG9yIGFuZCB0aGUgb3JkZXJMaXN0IHZlY3RvcgotICAvLyBzaG91bGQgYmUgdGhlIHNhbWUuICBFYWNoIGVudHJ5IGluIHRoZSBvYmplY3RMaXN0IHZlY3RvciBpcwotICAvLyBjb3JlbGF0ZWQgd2l0aCBlYWNoIGVudHJ5IGluIHRoZSBvcmRlckxpc3QgdmVjdG9yLgotICBwcml2YXRlIFZlY3RvciBvcmRlckxpc3RfID0gbmV3IFZlY3RvcigpOwotICAKLSAgcHVibGljIHZvaWQgYWRkT2JqZWN0KCBPYmplY3Qgb2JqZWN0LCBpbnQgb3JkZXIgKQotICB7Ci0gICAgb2JqZWN0TGlzdF8uYWRkKG9iamVjdCk7Ci0gICAgb3JkZXJMaXN0Xy5hZGQoIG5ldyBJbnRlZ2VyKG9yZGVyKSApOwotICB9Ci0gIAotICBwdWJsaWMgT2JqZWN0IGdldExhc3RPYmplY3QoKQotICB7Ci0gICAgT2JqZWN0IHJlc3VsdCA9IG51bGw7Ci0gICAgCi0gICAgaWYoIG9iamVjdExpc3RfLnNpemUoKSA+IDAgKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IG9iamVjdExpc3RfLmxhc3RFbGVtZW50KCk7Ci0gICAgfQotICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgcHVibGljIGludCBnZXRMYXN0T3JkZXIoKQotICB7Ci0gICAgaW50IHJlc3VsdCA9IC0xOwotICAgIAotICAgIGlmKCBvcmRlckxpc3RfLnNpemUoKSA+IDAgKQotICAgIHsKLSAgICAgIHJlc3VsdCA9ICgoSW50ZWdlcilvcmRlckxpc3RfLmxhc3RFbGVtZW50KCkpLmludFZhbHVlKCk7Ci0gICAgfQotICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgcmVtb3ZlT2JqZWN0KCBPYmplY3Qgb2JqZWN0ICkKLSAgewotICAgIGludCByZW1vdmFsSW5kZXggPSBvYmplY3RMaXN0Xy5pbmRleE9mKG9iamVjdCk7Ci0gICAgCi0gICAgaWYoIHJlbW92YWxJbmRleCAhPSAtMSApCi0gICAgewotICAgICAgb2JqZWN0TGlzdF8ucmVtb3ZlKHJlbW92YWxJbmRleCk7Ci0gICAgICBvcmRlckxpc3RfLnJlbW92ZShyZW1vdmFsSW5kZXgpOwotICAgIH0gICAKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZGF0YS9EYXRhRmxvd01hbmFnZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2RhdGEvRGF0YUZsb3dNYW5hZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZmZlMDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZGF0YS9EYXRhRmxvd01hbmFnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMTMgICAxMzA5NTggcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGE7Ci0KLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Nb2RpZmllcjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotCi0KLXB1YmxpYyBjbGFzcyBEYXRhRmxvd01hbmFnZXIgCi17Ci0gIHByaXZhdGUgRGF0YU1hcHBpbmdSZWdpc3RyeUltcGwgcmVnaXN0cnlfOwotICBwcml2YXRlIEhhc2h0YWJsZSAgICAgICAgICAgICAgIGNsYXNzVGFibGVfOwotICBwcml2YXRlIGludCAgICAgICAgICAgICAgICAgICAgIG9yZGVyXzsKLSAgcHJpdmF0ZSBJRW52aXJvbm1lbnQJCQkJICAgIGVudmlyb25tZW50XzsKLSAgCi0gIHB1YmxpYyBEYXRhRmxvd01hbmFnZXIoIERhdGFNYXBwaW5nUmVnaXN0cnlJbXBsIHJlZ2lzdHJ5LCBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgKQotICB7Ci0gICAgcmVnaXN0cnlfICAgPSByZWdpc3RyeTsKLSAgICBjbGFzc1RhYmxlXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBvcmRlcl8gICAgICA9IDA7Ci0gICAgZW52aXJvbm1lbnRfID0gZW52aXJvbm1lbnQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBEYXRhTWFwcGluZ1JlZ2lzdHJ5IGdldE1hcHBpbmdSZWdpc3RyeSgpCi0gIHsKLSAgICByZXR1cm4gcmVnaXN0cnlfOyAKLSAgfQotICAKLSAgLy8gUmVtb3ZlIHRoaXMgaW5zdGFuY2Ugb2JqZWN0IGZyb20gdGhlIG1hcHBpbmcgdGFibGUuCi0gIHB1YmxpYyB2b2lkIHVucHJvY2VzcyggT2JqZWN0IG9iamVjdCApCi0gIHsKLSAgICBTdHJpbmcgICAgIG9iamVjdFR5cGUgPSBvYmplY3QuZ2V0Q2xhc3MoKS5nZXROYW1lKCk7Ci0gICAgQ2xhc3NFbnRyeSBjbGFzc0VudHJ5ID0gKENsYXNzRW50cnkpY2xhc3NUYWJsZV8uZ2V0KCBvYmplY3RUeXBlICk7Ci0KLSAgICBpZiggY2xhc3NFbnRyeSAhPSBudWxsICkKLSAgICB7Ci0gICAgICBjbGFzc0VudHJ5LnJlbW92ZU9iamVjdChvYmplY3QpOwotICAgIH0KLSAgfQotICAKLSAgLy8gQWRkIHRoaXMgb2JqZWN0IHRvIG91ciBtYXBwaW5nIHRhYmxlIGFuZCBjYWxsIHRoZSBzZXR0ZXJzCi0gIC8vIHRoYXQgaGF2ZSBjb3JyZXNwb25kaW5nIGdldHRlciBvYmplY3RzLgotICBwdWJsaWMgdm9pZCBwcm9jZXNzKCBPYmplY3Qgb2JqZWN0ICkKLSAgewotICAgIC8vIEFkZCB0aGlzIG9iamVjdCB0byB0aGUgY2xhc3NUYWJsZV8gaWYgcmVxdWlyZWQuCi0gICAgU3RyaW5nICAgICBvYmplY3RUeXBlID0gb2JqZWN0LmdldENsYXNzKCkuZ2V0TmFtZSgpOwotICAgIENsYXNzRW50cnkgY2xhc3NFbnRyeSA9IChDbGFzc0VudHJ5KWNsYXNzVGFibGVfLmdldCggb2JqZWN0VHlwZSApOwotCQotICAgIGVudmlyb25tZW50Xy5nZXRMb2coKS5sb2coSUxvZy5JTkZPLCAiZGF0YSIsIDUwMDQsIHRoaXMsICJwcm9jZXNzIiwgIlByb2Nlc3Npbmc6ICIgKyBvYmplY3RUeXBlICk7Ci0gICAgCi0gICAgaWYoIGNsYXNzRW50cnkgPT0gbnVsbCApCi0gICAgewotICAgICAgY2xhc3NFbnRyeSA9IG5ldyBDbGFzc0VudHJ5KCk7Ci0gICAgICBjbGFzc1RhYmxlXy5wdXQoIG9iamVjdFR5cGUsIGNsYXNzRW50cnkgKTsKLSAgICB9Ci0gICAgICAgIAotICAgIGNsYXNzRW50cnkuYWRkT2JqZWN0KG9iamVjdCwgb3JkZXJfKysgKTsKLSAgICAKLSAgICAvLyBOb3cgcHJvY2VzcyB0aGUgc2V0dGVycyBmb3IgdGhpcyBvYmplY3QKLSAgICBWZWN0b3IgcnVsZUVudHJpZXMgID0gcmVnaXN0cnlfLmdldFJ1bGVFbnRyaWVzKCBvYmplY3RUeXBlICk7Ci0gICAgCi0gICAgaWYoIHJ1bGVFbnRyaWVzICE9IG51bGwgKQotICAgIHsKLSAgICAgIGlmKCBjbGFzc0VudHJ5LnNldHRlckxpc3RfID09IG51bGwgKQotICAgICAgewotICAgICAgICBjbGFzc0VudHJ5LnNldHRlckxpc3RfID0gZ2V0U2V0dGVyTGlzdCggb2JqZWN0ICk7ICAKLSAgICAgIH0gICAgCi0gICAgICAKLSAgICAgIC8vIEZvciBlYWNoIHNldHRlciBpbiB0aGlzIG9iamVjdCB0cnkgdG8gZmluZCBhIHJ1bGUuCi0gICAgICBmb3IoIGludCBzZXR0ZXJJbmRleCA9IDA7IHNldHRlckluZGV4IDwgY2xhc3NFbnRyeS5zZXR0ZXJMaXN0Xy5zaXplKCk7IHNldHRlckluZGV4KysgKQotICAgICAgewotICAgICAgICBPYmplY3RNZXRob2QgY3VycmVudE9iamVjdE1ldGhvZCA9IG5ldyBPYmplY3RNZXRob2QoKTsKLSAgICAgICAgTWV0aG9kICAgICAgIHNldHRlck1ldGhvZCAgICAgICAgPSAoTWV0aG9kKWNsYXNzRW50cnkuc2V0dGVyTGlzdF8uZWxlbWVudEF0KCBzZXR0ZXJJbmRleCApOwotICAgICAgICBSdWxlRW50cnkgICAgY3VycmVudFJ1bGVFbnRyeSAgICA9IG51bGw7Ci0KLSAgICAgICAgY3VycmVudE9iamVjdE1ldGhvZC5vcmRlciA9IC0xOwotICAgICAgICAKLSAgICAgICAgLy8gRmluZCBydWxlcyB0aGF0IG1hdGNoIHRoaXMgc2V0dGVyLiAgTm90ZTogdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgcnVsZQotICAgICAgICAvLyB0aGF0IG1hdGNoZXMgdGhpcyBzZXR0ZXIuICBJbiB0aGlzIGNhc2Ugd2UgdXNlIHRoZSBtb3N0IHJlY2VudCwgd2hpY2ggaXMgCi0gICAgICAgIC8vIGRlZmluZWQgYnkgdGhlIG9yZGVyIGZpZWxkLgotICAgICAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgcnVsZUVudHJpZXMuc2l6ZSgpOyBpbmRleCsrICkKLSAgICAgICAgewotICAgICAgICAgIFJ1bGVFbnRyeSBydWxlRW50cnkgPSAoUnVsZUVudHJ5KXJ1bGVFbnRyaWVzLmVsZW1lbnRBdCggaW5kZXggKTsgICAgICAgCi0gICAgICAgICAgCi0gICAgICAgICAgaWYoIHNldHRlck1ldGhvZC5nZXROYW1lKCkuZXF1YWxzKCAic2V0IiArIHJ1bGVFbnRyeS50YXJnZXRQcm9wZXJ0eV8gKSApCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBzZXR0ZXIgZm9yIHRoaXMgcnVsZS4gIE5vdyBmaW5kIHRoZSBnZXR0ZXIgbWV0aG9kLgotICAgICAgICAgICAgLy8gTm90ZTogZ2V0R2V0dGVyTWV0aG9kIGFsd2F5cyByZXR1cm5zIGEgdmFsdWUsIGJ1dCBpZiB0aGVyZSBpcyBubwotICAgICAgICAgICAgLy8gICAgICAgZ2V0dGVycyBhdmFpbGFibGUgaXQgd2lsbCBzZXQgdGhlIG9yZGVyIHRvIC0xLgotICAgICAgICAgICAgT2JqZWN0TWV0aG9kIGdldHRlciA9IGdldEdldHRlck1ldGhvZCggcnVsZUVudHJ5LnNvdXJjZVR5cGVfLCBydWxlRW50cnkuc291cmNlUHJvcGVydHlfICk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmKCBnZXR0ZXIub3JkZXIgPT0gLTEgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgCWVudmlyb25tZW50Xy5nZXRMb2coKS5sb2coSUxvZy5JTkZPICwgImRhdGEiLCA1MDA1LCB0aGlzLCAicHJvY2VzcyIsICIgID4+Tm8gZ2V0dGVyIGZvdW5kIGZvciBwcm9wZXJ0eTogIiArIHNldHRlck1ldGhvZC5nZXROYW1lKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiggY3VycmVudE9iamVjdE1ldGhvZC5vcmRlciA8IGdldHRlci5vcmRlciApIAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIG1vcmUgcmVjZW50IGdldHRlci4KLSAgICAgICAgICAgICAgY3VycmVudE9iamVjdE1ldGhvZCA9IGdldHRlcjsKLSAgICAgICAgICAgICAgY3VycmVudFJ1bGVFbnRyeSA9IHJ1bGVFbnRyeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0gCi0gICAgICAgIAotICAgICAgICBpZiggY3VycmVudE9iamVjdE1ldGhvZC5vcmRlciAhPSAtMSApCi0gICAgICAgIHsKLSAgICAgICAgICBpbnZva2VNZXRob2QoIGN1cnJlbnRPYmplY3RNZXRob2Qub2JqZWN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPYmplY3RNZXRob2QubWV0aG9kLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXR0ZXJNZXRob2QsIAotICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFJ1bGVFbnRyeS50cmFuc2Zvcm1lcl8gKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgCWVudmlyb25tZW50Xy5nZXRMb2coKS5sb2coSUxvZy5JTkZPLCAiZGF0YSIsIDUwMDYsIHRoaXMsICJwcm9jZXNzIiwgIiAgPj5ObyBydWxlIGZvdW5kIGZvciBzZXR0ZXI6ICIgKyBzZXR0ZXJNZXRob2QuZ2V0TmFtZSgpICk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9ICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBGaW5kIGFsbCB0aGUgc2V0dGVycyBmb3IgdGhpcyBvYmplY3QgYW5kIHJldHVybiBhIHZlY3RvciBvZiB0aGVtLgotICAgKiAKLSAgICogQHBhcmFtIG9iamVjdAotICAgKiBAcmV0dXJuCi0gICAqLwotICBwcml2YXRlIFZlY3RvciBnZXRTZXR0ZXJMaXN0KCBPYmplY3Qgb2JqZWN0ICkKLSAgewotICAgIFZlY3RvciByZXN1bHQgPSBuZXcgVmVjdG9yKCk7Ci0gICAgCi0gICAgTWV0aG9kW10gbWV0aG9kcyA9IG9iamVjdC5nZXRDbGFzcygpLmdldE1ldGhvZHMoKTsKLSAgICAKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgbWV0aG9kcy5sZW5ndGg7IGluZGV4KysgKQotICAgIHsKLSAgICAgIE1ldGhvZCAgbWV0aG9kICAgICA9IG1ldGhvZHNbaW5kZXhdOwotICAgICAgYm9vbGVhbiBpc1B1YmxpYyAgID0gTW9kaWZpZXIuaXNQdWJsaWMoIG1ldGhvZC5nZXRNb2RpZmllcnMoKSApOwotICAgICAgQ2xhc3MgICByZXR1cm5UeXBlID0gbWV0aG9kLmdldFJldHVyblR5cGUoKTsKLSAgICAKLSAgICAgIGlmKCBpc1B1YmxpYyAmJiAKLSAgICAgICAgICByZXR1cm5UeXBlID09IFZvaWQuVFlQRSAmJiAKLSAgICAgICAgICBtZXRob2QuZ2V0UGFyYW1ldGVyVHlwZXMoKS5sZW5ndGggPT0gMSAmJgotICAgICAgICAgIG1ldGhvZC5nZXROYW1lKCkuc3RhcnRzV2l0aCggInNldCIgKSkKLSAgICAgIHsKLSAgICAgICAgbWV0aG9kLnNldEFjY2Vzc2libGUoIHRydWUgKTsKLSAgICAgICAgcmVzdWx0LmFkZCggbWV0aG9kICk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgCi0gIHByaXZhdGUgT2JqZWN0TWV0aG9kIGdldEdldHRlck1ldGhvZCggU3RyaW5nIHNvdXJjZVR5cGUsIFN0cmluZyBzb3VyY2VQcm9wZXJ0eSApCi0gIHsKLSAgICBDbGFzc0VudHJ5ICAgY2xhc3NFbnRyeSA9IChDbGFzc0VudHJ5KWNsYXNzVGFibGVfLmdldCggc291cmNlVHlwZSApOwotICAgIE9iamVjdE1ldGhvZCBnZXR0ZXJGb3VuZCA9IG5ldyBPYmplY3RNZXRob2QoKTsKLSAgICAKLSAgICAvLyBJbmRpY2F0ZSB0aGF0IHRoZXJlIGlzIG5vIGdldHRlciB5ZXQuCi0gICAgZ2V0dGVyRm91bmQub3JkZXIgPSAtMTsKLSAgICAKLSAgICBpZiggY2xhc3NFbnRyeSAhPSBudWxsICkKLSAgICB7Ci0gICAgICBPYmplY3QgbGFzdE9iamVjdCA9IGNsYXNzRW50cnkuZ2V0TGFzdE9iamVjdCgpOwotICAgICAgCi0gICAgICBpZiggbGFzdE9iamVjdCAhPSBudWxsICkKLSAgICAgIHsgICAgICAgIAotICAgICAgICBpZiggY2xhc3NFbnRyeS5nZXR0ZXJMaXN0XyA9PSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIC8vIEJ1aWxkIHRoZSBnZXR0ZXIgbGlzdC4KLSAgICAgICAgICBjbGFzc0VudHJ5LmdldHRlckxpc3RfID0gZ2V0R2V0dGVyTGlzdCggbGFzdE9iamVjdCApOwotICAgICAgICB9Ci0gICAgICAKLSAgICAgICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzRW50cnkuZ2V0dGVyTGlzdF8uc2l6ZSgpOyBpbmRleCsrICkKLSAgICAgICAgewotICAgICAgICAgIE1ldGhvZCBnZXR0ZXIgPSAoTWV0aG9kKWNsYXNzRW50cnkuZ2V0dGVyTGlzdF8uZWxlbWVudEF0KCBpbmRleCApOwotICAgICAgICAKLSAgICAgICAgICBpZiggZ2V0dGVyLmdldE5hbWUoKS5lcXVhbHMoICJnZXQiICsgc291cmNlUHJvcGVydHkgKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBnZXR0ZXJGb3VuZC5vcmRlciAgPSBjbGFzc0VudHJ5LmdldExhc3RPcmRlcigpOwotICAgICAgICAgICAgZ2V0dGVyRm91bmQubWV0aG9kID0gZ2V0dGVyOwotICAgICAgICAgICAgZ2V0dGVyRm91bmQub2JqZWN0ID0gbGFzdE9iamVjdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZ2V0dGVyRm91bmQ7Ci0gIH0KLSAgCi0gIHByaXZhdGUgVmVjdG9yIGdldEdldHRlckxpc3QoIE9iamVjdCBvYmplY3QgKQotICB7Ci0gICAgVmVjdG9yIHJlc3VsdCA9IG5ldyBWZWN0b3IoKTsKLSAgICAKLSAgICBNZXRob2RbXSBtZXRob2RzID0gb2JqZWN0LmdldENsYXNzKCkuZ2V0TWV0aG9kcygpOwotICAgIAotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBtZXRob2RzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgewotICAgICAgTWV0aG9kICBtZXRob2QgICAgID0gbWV0aG9kc1tpbmRleF07Ci0gICAgICBib29sZWFuIGlzUHVibGljICAgPSBNb2RpZmllci5pc1B1YmxpYyggbWV0aG9kLmdldE1vZGlmaWVycygpICk7Ci0gICAgICBDbGFzcyAgIHJldHVyblR5cGUgPSBtZXRob2QuZ2V0UmV0dXJuVHlwZSgpOwotICAgIAotICAgICAgaWYoIGlzUHVibGljICYmIAotICAgICAgICAgIHJldHVyblR5cGUgIT0gVm9pZC5UWVBFICYmIAotICAgICAgICAgIG1ldGhvZC5nZXRQYXJhbWV0ZXJUeXBlcygpLmxlbmd0aCA9PSAwICYmCi0gICAgICAgICAgbWV0aG9kLmdldE5hbWUoKS5zdGFydHNXaXRoKCAiZ2V0IiApKQotICAgICAgewotICAgICAgICBtZXRob2Quc2V0QWNjZXNzaWJsZSggdHJ1ZSApOwotICAgICAgICByZXN1bHQuYWRkKCBtZXRob2QgKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAgIAotICBwcml2YXRlIHZvaWQgaW52b2tlTWV0aG9kKCBPYmplY3QgICAgICBzb3VyY2VPYmplY3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgICAgICBzb3VyY2VNZXRob2QgLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0ICAgICAgY2xpZW50T2JqZWN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kICAgICAgY2xpZW50TWV0aG9kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1lciB0cmFuc2Zvcm1lcikKLSAgeyAgCQotICAJT2JqZWN0IGRhdGEgPSBudWxsOwotICAJICAJICAJCi0gIAl0cnkKLSAgCXsKLSAgCSAgZGF0YSA9IHNvdXJjZU1ldGhvZC5pbnZva2UoIHNvdXJjZU9iamVjdCwgbmV3IE9iamVjdFswXSApOwotICAJfQotICAJY2F0Y2goIEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gZXhjICkKLSAgCXsKLSAgCSAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgLy8gcGdtIE5lZWQgdG8gZXh0ZXJuYWxpemUgdGhpcyBzdHJpbmcuCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCAiUHJvdmlkZXIgXCIiICsgc291cmNlT2JqZWN0LmdldENsYXNzKCkuZ2V0TmFtZSgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiB0aHJldyBhbiBleGNlcHRpb24uIiApOwotICAJfQotICAJY2F0Y2goIElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gZXhjICkKLSAgCXsKLSAgCSAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgLy8gcGdtIE5lZWQgdG8gZXh0ZXJuYWxpemUgdGhpcyBzdHJpbmcuCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCAiUHJvdmlkZXIgXCIiICsgc291cmNlT2JqZWN0LmdldENsYXNzKCkuZ2V0TmFtZSgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCIgdGhyZXcgYW4gZXhjZXB0aW9uLiIgKTsKLSAgCX0KLSAgCQotICAJZW52aXJvbm1lbnRfLmdldExvZygpLmxvZyhJTG9nLklORk8sICJkYXRhIiwgNTAwNywgdGhpcywgImludm9rZU1ldGhvZCAiLCIgIFNldHRpbmcgcHJvcDogIiArIGNsaWVudE1ldGhvZC5nZXROYW1lKCkgKyAiIGRhdGE9IiArIGRhdGEgKyAiIGZyb206ICIgKyBzb3VyY2VPYmplY3QuZ2V0Q2xhc3MoKS5nZXROYW1lKCkgKTsKLSAgCQotICAJCi0gIAlpZiggdHJhbnNmb3JtZXIgIT0gbnVsbCApCi0gIAl7Ci0gIAkgIGRhdGEgPSB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oIGRhdGEgKTsgIAkgICAgCi0gIAl9Ci0gIAkKLSAgCXRyeQotICAJeyAgCSAgCi0gIAkgIGNsaWVudE1ldGhvZC5pbnZva2UoIGNsaWVudE9iamVjdCwgbmV3IE9iamVjdFtdeyBkYXRhIH0gKTsKLSAgCX0KLSAgCWNhdGNoKCBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGV4YyApCi0gIAl7Ci0gIAkgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIC8vIHBnbSBOZWVkIHRvIGV4dGVybmFsaXplIHRoaXMgc3RyaW5nLgotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiggIkNsaWVudCBcIiIgKyBjbGllbnRPYmplY3QuZ2V0Q2xhc3MoKS5nZXROYW1lKCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiIHRocmV3IGFuIGV4Y2VwdGlvbi4iICk7Ci0gIAl9Ci0gIAljYXRjaCggSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBleGMgKQotICAJewotICAJICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICAvLyBwZ20gTmVlZCB0byBleHRlcm5hbGl6ZSB0aGlzIHN0cmluZy4KLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oICJDbGllbnQgXCIiICsgY2xpZW50T2JqZWN0LmdldENsYXNzKCkuZ2V0TmFtZSgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiB0aHJldyBhbiBleGNlcHRpb24uIiApOwotICAJfQotICB9Ci0gIAotICBwcml2YXRlIGNsYXNzIE9iamVjdE1ldGhvZAotICB7Ci0gICAgcHVibGljIE9iamVjdCBvYmplY3Q7Ci0gICAgcHVibGljIE1ldGhvZCBtZXRob2Q7Ci0gICAgcHVibGljIGludCAgICBvcmRlcjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZGF0YS9EYXRhTWFwcGluZ1JlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9kYXRhL0RhdGFNYXBwaW5nUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIwMzczMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9kYXRhL0RhdGFNYXBwaW5nUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhOwotCi1wdWJsaWMgaW50ZXJmYWNlIERhdGFNYXBwaW5nUmVnaXN0cnkKLXsKLSAgLyoqCi0gICAqIFRoaXMgbWV0aG9kIGFkZHMgYSBkYXRhIG1hcHBpbmcgZnJvbSBhIHNvdXJjZSBvYmplY3QgdG8gYSB0YXJnZXQKLSAgICogb2JqZWN0LiAgV2hlbiB0aGUgc291cmNlT2JqZWN0IGlzIGVuY291bnRlcmVkIGJ5IHRoZSBmcmFtZXdvcmsgdGhlCi0gICAqIHNvdXJjZVByb3BlcnR5IHdpbGwgYmUgY2FsbGVkIGFuZCB0aGUgZGF0YSB3aWxsIGJlIHBhc3NlZCB0byB0aGUKLSAgICogdGFyZ2V0UHJvcGVydHkgaW4gdGhlIHRhcmdldE9iamVjdC4gIElmIGEgdHJhbnNmb3JtZXIgb2JqZWN0IGlzCi0gICAqIHNwZWNpZmllZCB0aGUgc291cmNlT2JqZWN0IGlzIHRyYW5zZm9ybWVkIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8KLSAgICogdGhlIHRhcmdldCBvYmplY3QuCi0gICAqIAotICAgKiBAcGFyYW0gc291cmNlVHlwZSAgICAgIFRoZSBzb3VyY2Ugb2JqZWN0LgotICAgKiBAcGFyYW0gc291cmNlUHJvcGVydHkgIFRoZSBzb3VyY2UgcHJvcGVydHkuCi0gICAqIEBwYXJhbSB0YXJnZXRUeXBlICAgICAgVGhlIHRhcmdldCBvYmplY3QuCi0gICAqIEBwYXJhbSB0YXJnZXRQcm9wZXJ0eSAgVGhlIHRhcmdldCBwcm9wZXJ0eS4KLSAgICogQHBhcmFtIHRyYW5zZm9ybWVyICAgICBUaGUgdHJhbnNmb3JtZXIgb2JqZWN0IHRoYXQgdHJhbnNmb3JtcyB0aGUKLSAgICogICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZE1hcHBpbmcoIENsYXNzICAgICAgIHNvdXJjZVR5cGUsCi0JCQkJCQkgIFN0cmluZyAgICAgIHNvdXJjZVByb3BlcnR5LAotCQkJCQkJICBDbGFzcyAgICAgICB0YXJnZXRUeXBlLAotCQkJCQkJICBTdHJpbmcgICAgICB0YXJnZXRQcm9wZXJ0eSwKLQkJCQkJCSAgVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIgKTsKLSAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIHRoZSBhYm92ZSB3aXRoIHRhcmdldFByb3BlcnR5IHRoZSBzYW1lCi0gICAqIGFzIHRoZSBzb3VyY2VQcm9wZXJ0eSBhbmQgd2l0aCB0aGUgdHJhbnNmb3JtZXIgc2V0IHRvIG51bGwuCi0gICAqIAotICAgKiBAcGFyYW0gc291cmNlVHlwZSAgICAgVGhlIHNvdXJjZSBvYmplY3QuCi0gICAqIEBwYXJhbSBzb3VyY2VQcm9wZXJ0eSBUaGUgc291cmNlIHByb3BlcnR5LgotICAgKiBAcGFyYW0gdGFyZ2V0VHlwZSAgICAgVGhlIHRhcmdldCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRNYXBwaW5nKCBDbGFzcyAgICAgICBzb3VyY2VUeXBlLAotCSAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICBzb3VyY2VQcm9wZXJ0eSwKLQkgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgdGFyZ2V0VHlwZSApOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZGF0YS9EYXRhTWFwcGluZ1JlZ2lzdHJ5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZGF0YS9EYXRhTWFwcGluZ1JlZ2lzdHJ5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWE1ZjJlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2RhdGEvRGF0YU1hcHBpbmdSZWdpc3RyeUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotCi1wdWJsaWMgY2xhc3MgRGF0YU1hcHBpbmdSZWdpc3RyeUltcGwgaW1wbGVtZW50cyBEYXRhTWFwcGluZ1JlZ2lzdHJ5Ci17ICAKLSAgcHJpdmF0ZSBIYXNodGFibGUgcnVsZXNUYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0KLSAgcHVibGljIFZlY3RvciBnZXRSdWxlRW50cmllcyggU3RyaW5nIHRhcmdldFR5cGUgKQotICB7Ci0gICAgcmV0dXJuIChWZWN0b3IpcnVsZXNUYWJsZV8uZ2V0KCB0YXJnZXRUeXBlICk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkjYWRkTWFwcGluZyhqYXZhLmxhbmcuQ2xhc3MsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcywgamF2YS5sYW5nLlN0cmluZywgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5UcmFuc2Zvcm1lcikKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZE1hcHBpbmcoIENsYXNzIHNvdXJjZVR5cGUsIFN0cmluZyBzb3VyY2VQcm9wZXJ0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgdGFyZ2V0VHlwZSwgU3RyaW5nIHRhcmdldFByb3BlcnR5LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIpIAotICB7Ci0gICAgVmVjdG9yICAgIHJ1bGVFbnRyaWVzID0gKFZlY3RvcilydWxlc1RhYmxlXy5nZXQoIHRhcmdldFR5cGUuZ2V0TmFtZSgpICk7Ci0gICAgUnVsZUVudHJ5IHJ1bGVFbnRyeSAgID0gbnVsbDsKLSAgICAKLSAgICBpZiggcnVsZUVudHJpZXMgPT0gbnVsbCApCi0gICAgewotICAgICAgcnVsZUVudHJpZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBydWxlc1RhYmxlXy5wdXQoIHRhcmdldFR5cGUuZ2V0TmFtZSgpLCBydWxlRW50cmllcyApOwotICAgIH0KLSAgICAKLSAgICAvLyBGaW5kIHRoZSBydWxlIGVudHJ5Ci0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHJ1bGVFbnRyaWVzLnNpemUoKTsgaW5kZXgrKyApCi0gICAgewotICAgICAgUnVsZUVudHJ5IG5ld0VudHJ5ID0gKFJ1bGVFbnRyeSlydWxlRW50cmllcy5lbGVtZW50QXQoIGluZGV4ICk7Ci0gICAgCi0gICAgICBpZiggc291cmNlUHJvcGVydHkuZXF1YWxzKCBuZXdFbnRyeS5zb3VyY2VQcm9wZXJ0eV8gKSAmJgotICAgICAgICAgIHNvdXJjZVR5cGUuZXF1YWxzKCBuZXdFbnRyeS5zb3VyY2VUeXBlXyApICYmCi0gICAgICAgICAgdGFyZ2V0UHJvcGVydHkuZXF1YWxzKCBuZXdFbnRyeS50YXJnZXRQcm9wZXJ0eV8gKSApCi0gICAgICB7Ci0gICAgICAgIC8vIFRoZSBlbnRyeSBhbHJlYWR5IGV4aXN0cwotICAgICAgICBydWxlRW50cnkgPSBuZXdFbnRyeTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmKCBydWxlRW50cnkgPT0gbnVsbCApCi0gICAgewotICAgICAgLy8gVGhlIHJ1bGUgZGlkbid0IGV4aXN0IGFscmVhZHkgc28gd2Ugd2lsbCBjcmVhdGUgYSBuZXcgb25lLgotICAgICAgcnVsZUVudHJ5ID0gbmV3IFJ1bGVFbnRyeShzb3VyY2VUeXBlLmdldE5hbWUoKSwgc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5LCB0cmFuc2Zvcm1lciApOwotICAgICAgcnVsZUVudHJpZXMuYWRkKCBydWxlRW50cnkgKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIEp1c3QgdXBkYXRlIHRoZSB0cmFuc2Zvcm1lci4KLSAgICAgIHJ1bGVFbnRyeS50cmFuc2Zvcm1lcl8gPSB0cmFuc2Zvcm1lcjsgIAotICAgIH0KLSAgfQotICAgIAotICAgIC8vcnVsZUVudHJpZXNfLgotLy8gICAgU3RyaW5nICAgIHNvdXJjZUNsYXNzID0gc291cmNlVHlwZS5nZXROYW1lKCk7Ci0vLyAgICBTdHJpbmcgICAgdGFyZ2V0Q2xhc3MgPSB0YXJnZXRUeXBlLmdldE5hbWUoKTsKLS8vICAgIFZlY3RvciAgICBlbnRyaWVzICAgICA9IChWZWN0b3IpcnVsZUVudHJpZXNfLmdldCggc291cmNlQ2xhc3MgKTsgCi0vLyAgICBSdWxlRW50cnkgcnVsZUVudHJ5ICAgPSBudWxsOwotLy8gICAgCi0vLyAgICBpZiggZW50cmllcyAhPSBudWxsICkKLS8vICAgIHsKLS8vICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgbWFwcGluZyBhbHJlYWR5IGV4aXN0cy4KLS8vICAgICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGVudHJpZXMuc2l6ZSgpOyBpbmRleCsrICkKLS8vICAgICAgewotLy8gICAgICAgIFJ1bGVFbnRyeSBmb3VuZEVudHJ5ID0gKFJ1bGVFbnRyeSllbnRyaWVzLmVsZW1lbnRBdCggaW5kZXggKTsKLS8vICAgICAgICAKLS8vICAgICAgICBpZiggc291cmNlUHJvcGVydHkuZXF1YWxzKCBmb3VuZEVudHJ5LnNvdXJjZVByb3BlcnR5XyApICYmCi0vLyAgICAgICAgICAgIHRhcmdldFR5cGUuZXF1YWxzKCBmb3VuZEVudHJ5LnRhcmdldFR5cGVfICkgJiYKLS8vICAgICAgICAgICAgdGFyZ2V0UHJvcGVydHkuZXF1YWxzKCBmb3VuZEVudHJ5LnRhcmdldFByb3BlcnR5XyApICkKLS8vICAgICAgICB7Ci0vLyAgICAgICAgICBydWxlRW50cnkgPSBmb3VuZEVudHJ5OwotLy8gICAgICAgICAgcnVsZUVudHJ5LnRyYW5zZm9ybWVyXyA9IHRyYW5zZm9ybWVyOwotLy8gICAgICAgIH0KLS8vICAgICAgfQotLy8gICAgICAKLS8vICAgICAgLy8gVGhlcmUgaXMgYW4gZXhpc3RpbmcgdmVjdG9yIGZvciB0aGlzIHNvdXJjZUNsYXNzLCBidXQgaXQgZGlkbid0Ci0vLyAgICAgIC8vIGNvbnRhaW4gdGhpcyBuZXcgcnVsZSBzbyB3ZSB3aWxsIGFkZCBpdCBpbi4KLS8vICAgICAgaWYoIHJ1bGVFbnRyeSA9PSBudWxsICkKLS8vICAgICAgewotLy8gICAgICAgIHJ1bGVFbnRyeSA9IG5ldyBSdWxlRW50cnkoIHNvdXJjZVByb3BlcnR5LCB0YXJnZXRDbGFzcywgdGFyZ2V0UHJvcGVydHksIHRyYW5zZm9ybWVyICk7Ci0vLyAgICAgICAgZW50cmllcy5hZGQoIHJ1bGVFbnRyeSApOwotLy8gICAgICB9Ci0vLyAgICB9Ci0vLyAgICBlbHNlCi0vLyAgICB7Ci0vLyAgICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IHZlY3RvciBmb3IgdGhpcyBzb3VyY2VDbGFzcy4KLS8vICAgICAgZW50cmllcyA9IG5ldyBWZWN0b3IoKTsKLS8vICAgICAgcnVsZUVudHJ5ID0gbmV3IFJ1bGVFbnRyeSggc291cmNlUHJvcGVydHksIHRhcmdldENsYXNzLCB0YXJnZXRQcm9wZXJ0eSwgdHJhbnNmb3JtZXIgKTsKLS8vICAgICAgZW50cmllcy5hZGQoIHJ1bGVFbnRyeSApOwotLy8gICAgICBydWxlRW50cmllc18ucHV0KCBzb3VyY2VDbGFzcywgZW50cmllcyApOyAgCi0vLyAgICB9ICAgIAotLy8gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnkjYWRkTWFwcGluZyhqYXZhLmxhbmcuQ2xhc3MsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcykKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZE1hcHBpbmcoQ2xhc3Mgc291cmNlVHlwZSwgU3RyaW5nIHNvdXJjZVByb3BlcnR5LCBDbGFzcyB0YXJnZXRUeXBlKSAKLSAgewotICAgIGFkZE1hcHBpbmcoIHNvdXJjZVR5cGUsIHNvdXJjZVByb3BlcnR5LCB0YXJnZXRUeXBlLCBzb3VyY2VQcm9wZXJ0eSwgbnVsbCApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9kYXRhL1J1bGVFbnRyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZGF0YS9SdWxlRW50cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI5MDkwMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9kYXRhL1J1bGVFbnRyeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGE7Ci0KLQotcHVibGljIGNsYXNzIFJ1bGVFbnRyeSAKLXsKLSAgcHVibGljIFN0cmluZyAgICAgIHNvdXJjZVR5cGVfOwotICBwdWJsaWMgU3RyaW5nICAgICAgc291cmNlUHJvcGVydHlfOwotICBwdWJsaWMgU3RyaW5nICAgICAgdGFyZ2V0UHJvcGVydHlfOwotICBwdWJsaWMgVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXJfOwotICAKLSAKLSAgcHVibGljIFJ1bGVFbnRyeSggU3RyaW5nIHNvdXJjZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VQcm9wZXJ0eSwKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmdldFByb3BlcnR5LCAKLSAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIgKQotICB7Ci0gICAgc291cmNlVHlwZV8gICAgID0gc291cmNlVHlwZTsKLSAgICBzb3VyY2VQcm9wZXJ0eV8gPSBzb3VyY2VQcm9wZXJ0eTsKLSAgICB0YXJnZXRQcm9wZXJ0eV8gPSB0YXJnZXRQcm9wZXJ0eTsgICAgCi0gICAgdHJhbnNmb3JtZXJfICAgID0gdHJhbnNmb3JtZXI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2RhdGEvVHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2RhdGEvVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg4MGE2NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9kYXRhL1RyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YTsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIHRyYW5zZm9ybSBhbiBvYmplY3QgZnJvbSBvbmUgY2xhc3MgdG8gYW5vdGhlci4KLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgVHJhbnNmb3JtZXIKLXsKLSAgLyoKLSAgICogQHJldHVybiByZXR1cm5zIGEgdHJhbnNmb3JtZWQgb2JqZWN0IGJhc2VkIG9uIHRoZSBpbnB1dCB2YWx1ZS4KLSAgICovCi0gIHB1YmxpYyBPYmplY3QgdHJhbnNmb3JtKCBPYmplY3QgdmFsdWUgKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0Fic3RyYWN0Q29tbWFuZEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9BYnN0cmFjdENvbW1hbmRGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWQwNjc3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0Fic3RyYWN0Q29tbWFuZEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5OwotCi0KLS8qKgotICAqIFRoaXMgY2xhc3MgaXMgdXNlZCBhcyB0aGUgYmFzZSBjbGFzcyBmb3Igb3RoZXIgc3RhbmRhcmQgZnJhZ21lbnQgY2xhc3Nlcy4KLSAgKiAKLSoqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Q29tbWFuZEZyYWdtZW50IGltcGxlbWVudHMgQ29tbWFuZEZyYWdtZW50Ci17Ci0gIHByaXZhdGUgQ29tbWFuZEZhY3RvcnkgY29tbWFuZEZhY3RvcnlfOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgIGlkXzsKLSAgcHJpdmF0ZSBib29sZWFuICAgICAgICBkb05vdFJ1bkluVHJhbnNhY3Rpb25fID0gZmFsc2U7Ci0KLSAgLyoqCi0gICAqIENvcHkgY29uc3RydWN0b3IuCi0gICAqIEBwYXJhbSBmcmFnbWVudAotICAgKi8KLSAgcHJvdGVjdGVkIEFic3RyYWN0Q29tbWFuZEZyYWdtZW50KCBBYnN0cmFjdENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgICBjb21tYW5kRmFjdG9yeV8gPSBmcmFnbWVudC5jb21tYW5kRmFjdG9yeV87Ci0gICAgaWRfICAgICAgICAgICAgID0gZnJhZ21lbnQuaWRfOwotICB9Ci0gIAotICAvKioKLSAgICAqIENyZWF0ZXMgYSBuZXcgQWJzdHJhY3RDb21tYW5kRnJhZ21lbnQuCi0gICAgKgotICAgICogQHBhcmFtIGNvbW1hbmQgdGhlIGV4ZWN1dGFibGUgY29tbWFuZCBmb3IgdGhpcyBmcmFnbWVudC4KLSAgKiovCi0gIHB1YmxpYyBBYnN0cmFjdENvbW1hbmRGcmFnbWVudCggQ29tbWFuZEZhY3RvcnkgY29tbWFuZEZhY3RvcnksIFN0cmluZyBpZCApCi0gIHsKLSAgICBjb21tYW5kRmFjdG9yeV8gPSBjb21tYW5kRmFjdG9yeTsgIAotICAgIGlkXyAgICAgID0gaWQ7Ci0gIH0gCi0gIAotICBwdWJsaWMgU3RyaW5nIGdldElkKCkKLSAgewotICAgIHJldHVybiBpZF87Ci0gIH0KLSAgIAotICBwdWJsaWMgdm9pZCBzZXRJZCggU3RyaW5nIGlkICkKLSAgewotICAgIGlkXyA9IGlkOyAKLSAgfQotICAKLSAgLyoqIAotICAgICogR2V0cyBleGVjdXRhYmxlIGNvbW1hbmQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMKLSAgICAqIG51bGwgd2hlbiB0aGVyZSBpcyBubyBmaXJzdCBjaGlsZC4KLSAgKiovCi0gIHB1YmxpYyBDb21tYW5kRmFjdG9yeSBnZXRDb21tYW5kRmFjdG9yeSgpCi0gIHsKLSAgICByZXR1cm4gY29tbWFuZEZhY3RvcnlfOwotICB9Ci0gIAotICAvKioKLSAgICogIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCByZXRyaWV2ZSB0aGUgZGF0YSBtYXBwaW5ncyBmb3IgdGhpcyBjb21tYW5kIGZyYWdtZW50LgotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoIERhdGFNYXBwaW5nUmVnaXN0cnkgcmVnaXN0cnkgKQotICB7Ci0gICAgLy8gVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIG5vdCB0byBhZGQgYW55IGVudHJpZXMgdG8gdGhlIHJlZ2lzdHJ5LgotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gSWYgdGhlIGNvbW1hbmRzIGZvciB0aGlzIGZyYWdtZW50IHNob3VsZCBub3QgYmUgcnVuIHdpdGhpbiBhIHRyYW5zYWN0aW9uIHRoZW4KLSAgICogdGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0cnVlLiAgSWYgdGhlIGZyYWdtZW50IGRvZXMgbm90IGNhcmUgaWYgaXQgaXMgcnVuIGluIGEgdHJhbnNhY3Rpb24KLSAgICogb3Igbm90IGl0IHNob3VsZCByZXR1cm4gZmFsc2UuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBkb05vdFJ1bkluVHJhbnNhY3Rpb24oKQotICB7Ci0gICAgcmV0dXJuIGRvTm90UnVuSW5UcmFuc2FjdGlvbl87Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXRzIHRoZSBydW4gaW4gdHJhbnNhY3Rpb24gcHJvcGVydHkuCi0gICAqIEBwYXJhbSBkb05vdFJ1bkluVHJhbnNhY3Rpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERvTm90UnVuSW5UcmFuc2FjdGlvbiggYm9vbGVhbiBkb05vdFJ1bkluVHJhbnNhY3Rpb24gKQotICB7Ci0gICAgZG9Ob3RSdW5JblRyYW5zYWN0aW9uXyA9IGRvTm90UnVuSW5UcmFuc2FjdGlvbjsKLSAgfQotICAKLSAgLyoqCi0gICAgKiBBbGwgZnJhZ21lbnRzIG5lZWQgdG8gYmUgY2xvbmVhYmxlLgotICAqKi8KLSAgYWJzdHJhY3QgcHVibGljIE9iamVjdCBjbG9uZSgpOyAgCi0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvQm9vbGVhbkZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9Cb29sZWFuRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU2YjM2OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9Cb29sZWFuRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5Db21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uQ29uZGl0aW9uOwotCi0KLS8qKgotICAqIFRoaXMgY2xhc3MgcmV0dXJucyBlaXRoZXIgdGhlIHRydWUgZnJhZ21lbnQgb3IgdGhlIGZhbHNlIGZyYWdtZW50Ci0gICogYmFzZWQgb24gdGhlIHJlc3BvbnNlIGZyb20gdGhlIGNvbmRpdGlvbiBvYmplY3QuCi0qKi8KLXB1YmxpYyBjbGFzcyBCb29sZWFuRnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdENvbW1hbmRGcmFnbWVudAotewotICBwcml2YXRlIENvbW1hbmRGcmFnbWVudCB0cnVlRnJhZ21lbnRfOwotICBwcml2YXRlIENvbW1hbmRGcmFnbWVudCBmYWxzZUZyYWdtZW50XzsKLSAgcHJpdmF0ZSBDb25kaXRpb24gICAgICAgY29uZGl0aW9uXzsKLQotICAvKioKLSAgICogQ3JlYXRlIGEgQm9vbGVhbkZyYWdtZW50IHdpdGggZGVmYXVsdCB2YWx1ZXMuCi0gICAqCi0gICAqLwotICBwdWJsaWMgQm9vbGVhbkZyYWdtZW50KCkKLSAgewotICAgIHRoaXMoIG51bGwsIG51bGwsIG5ldyBDb25kaXRpb24oKQotICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGV2YWx1YXRlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgfSwgCi0gICAgICAgICAgICAgICAgICAgICAgbnVsbCwgIiIgKTsgIAotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIEBwYXJhbSB0cnVlRnJhZ21lbnQgIFRoZSBmcmFnbWVudCBjaG9zZW4gaWYgdGhlIGNvbmRpdGlvbiBpcyB0cnVlLgotICAgKiBAcGFyYW0gZmFsc2VGcmFnbWVudCBUaGUgZnJhZ21lbnQgY2hvc2VuIGlmIHRoZSBjb25kaXRpb24gaXMgZmFsc2UuCi0gICAqIEBwYXJhbSBjb25kaXRpb24gICAgIFRoZSBjb25kaXRpb24uCi0gICAqLwotICBwdWJsaWMgQm9vbGVhbkZyYWdtZW50KCBDb21tYW5kRnJhZ21lbnQgdHJ1ZUZyYWdtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kRnJhZ21lbnQgZmFsc2VGcmFnbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uICAgICAgIGNvbmRpdGlvbiApCi0gIHsKLSAgICB0aGlzKCB0cnVlRnJhZ21lbnQsIGZhbHNlRnJhZ21lbnQsIGNvbmRpdGlvbiwgbnVsbCwgIiIgKTsKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgCi0KLSAgLyoqCi0gICAgKiBDcmVhdGVzIGEgbmV3IEJvb2xlYW5GcmFnbWVudC4KLSAgICAqCi0gICAgKiBAcGFyYW0gdHJ1ZUZyYWdtZW50IHJldHVybmVkIGlmIGNvbmRpdGlvbiBpcyB0cnVlLgotICAgICogQHBhcmFtIGZhbHNlRnJhZ21lbnQgcmV0dXJuZWQgaWYgY29uZGl0aW9uIGlzIGZhbHNlLgotICAgICogQHBhcmFtIGNvbmRpdGlvbiB0aGUgY29uZGl0aW9uIGZvciB0aGlzIGZyYWdtZW50LgotICAgICogQHBhcmFtIHN0YXRlIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIGNvbmRpdGlvbi4KLSAgICAqIEBwYXJhbSBjb21tYW5kIHRoZSBleGVjdGFibGUgY29tbWFuZCBmb3IgdGhpcyBmcmFnbWVudC4KLSAgKiovCi0gIHB1YmxpYyBCb29sZWFuRnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCAgdHJ1ZUZyYWdtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEZyYWdtZW50IGZhbHNlRnJhZ21lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBDb25kaXRpb24gICAgICAgY29uZGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEZhY3RvcnkgIGNvbW1hbmRGYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgIGlkICkKLSAgewotICAgIHN1cGVyKCBjb21tYW5kRmFjdG9yeSwgaWQgKTsKLQotICAgIHRydWVGcmFnbWVudF8gICAgICAgPSB0cnVlRnJhZ21lbnQ7Ci0gICAgZmFsc2VGcmFnbWVudF8gICAgICA9IGZhbHNlRnJhZ21lbnQ7Ci0gICAgY29uZGl0aW9uXyAgICAgICAgICA9IGNvbmRpdGlvbjsgCi0gIH0KLQotICAvKioKLSAgICogQ29weSBjb25zdHJ1Y3Rvci4KLSAgICogQHBhcmFtIGZyYWcKLSAgICovCi0gIHByb3RlY3RlZCBCb29sZWFuRnJhZ21lbnQoIEJvb2xlYW5GcmFnbWVudCBmcmFnICkKLSAgewotICAgIHRoaXMoIG51bGwsCi0gICAgCSAgbnVsbCwKLSAgICAJICBmcmFnLmNvbmRpdGlvbl8sCi0gICAgCSAgZnJhZy5nZXRDb21tYW5kRmFjdG9yeSgpLAotICAgIAkgIGZyYWcuZ2V0SWQoKSApOwotCi0gICAgLy8gTm93IHdlIGhhdmUgdG8gY2xvbmUgaW4gdGhlIHRydWUgYW5kIGZhbHNlCi0gICAgLy8gZnJhZ21lbnRzLgotICAgIHRydWVGcmFnbWVudF8gID0gKENvbW1hbmRGcmFnbWVudCl0cnVlRnJhZ21lbnRfLmNsb25lKCk7Ci0gICAgZmFsc2VGcmFnbWVudF8gPSAoQ29tbWFuZEZyYWdtZW50KWZhbHNlRnJhZ21lbnRfLmNsb25lKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgICogTWFrZXMgYSBjb3B5IG9mIHRoZSBDb21tYW5kRnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIGEgY29weSBvZiB0aGlzIGZyYWdtZW50LgotICAqKi8KLSAgcHVibGljIE9iamVjdCBjbG9uZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IEJvb2xlYW5GcmFnbWVudCggdGhpcyApOwotICB9Ci0KLSAgLyoqIAotICAgICogR2V0cyB0aGUgZmlyc3QgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMKLSAgICAqIG51bGwgd2hlbiB0aGVyZSBpcyBubyBmaXJzdCBjaGlsZC4KLSAgKiovCi0gIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgZ2V0Rmlyc3RTdWJGcmFnbWVudCgpCi0gIHsgICAgCi0gICAgcmV0dXJuIGNvbmRpdGlvbl8uZXZhbHVhdGUoKSA/IHRydWVGcmFnbWVudF8gOiBmYWxzZUZyYWdtZW50XzsKLSAgfQotICAKLSAgLyoqCi0gICAgKiBHZXRzIHRoZSBuZXh0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LgotICAgICoKLSAgICAqIEByZXR1cm4gcmV0dXJucyB0aGUgbmV4dCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMgbnVsbAotICAgICogd2hlbiB0aGVyZSBpcyBubyBuZXh0IGNoaWxkLgotICAqKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudCBnZXROZXh0U3ViRnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIGNvbmRpdGlvbi4KLSAgICogQHBhcmFtIGNvbmRpdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q29uZGl0aW9uKCBDb25kaXRpb24gY29uZGl0aW9uICkKLSAgewotICAgIGNvbmRpdGlvbl8gPSBjb25kaXRpb247ICAgIAotICB9Ci0gIAotICAvKioKLSAgICogU2V0cyB0aGUgdHJ1ZSBmcmFnbWVudC4KLSAgICogQHBhcmFtIGZyYWdtZW50Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUcnVlRnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgICB0cnVlRnJhZ21lbnRfID0gZnJhZ21lbnQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXRzIHRoZSBmYWxzZSBmcmFnbWVudC4KLSAgICogQHBhcmFtIGZyYWdtZW50Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGYWxzZUZyYWdtZW50KCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0gICAgZmFsc2VGcmFnbWVudF8gPSBmcmFnbWVudDsKLSAgfSAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0Nob2ljZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9DaG9pY2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmM3NzJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0Nob2ljZUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50OwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5Db21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uRXZhbHVhdGU7Ci0KLQotLyoqCi0gICogVGhpcyBjbGFzcyByZXR1cm5zIGEgZnJhZ21lbnQgZnJvbSBhIGxpc3Qgb2YgZnJhZ21lbnRzIGJhc2VkCi0gICogb24gdGhlIG9iamVjdCByZXR1cm5lZCBmcm9tIHRoZSBFdmFsdWF0ZSBvYmplY3QuCi0qKi8KLXB1YmxpYyBjbGFzcyBDaG9pY2VGcmFnbWVudCBleHRlbmRzIEFic3RyYWN0Q29tbWFuZEZyYWdtZW50IAotewotICBwcml2YXRlIEhhc2h0YWJsZSAgICAgIGZyYWdtZW50VGFibGVfOwotICBwcml2YXRlIEV2YWx1YXRlICAgICAgIGV2YWx1YXRlXzsKLQotICAvKioKLSAgICAqIENyZWF0ZSBhIGNsb25lIHdpdGggbmV3IGEgbmV3IGhhc2h0YWJsZS4KLSAgKiovCi0gIHByb3RlY3RlZCBDaG9pY2VGcmFnbWVudCggQ2hvaWNlRnJhZ21lbnQgZnJhZyApCi0gIHsKLSAgICBzdXBlciggZnJhZy5nZXRDb21tYW5kRmFjdG9yeSgpLCBmcmFnLmdldElkKCkgKTsKLSAgICAKLSAgICBldmFsdWF0ZV8gICAgICA9IGZyYWcuZXZhbHVhdGVfOwotICAgIGZyYWdtZW50VGFibGVfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgCi0gICAgRW51bWVyYXRpb24ga2V5cyA9IGZyYWcuZnJhZ21lbnRUYWJsZV8ua2V5cygpOwotCi0gICAgLy8gQ2xvbmUgdGhlIGZyYWdtZW50cyBpbiB0aGUgdGFibGUuCi0gICAgd2hpbGUoIGtleXMuaGFzTW9yZUVsZW1lbnRzKCkgKQotICAgIHsKLSAgICAgIE9iamVjdCBrZXkgPSBrZXlzLm5leHRFbGVtZW50KCk7Ci0gICAgICBmcmFnbWVudFRhYmxlXy5wdXQoIGtleSwgKChDb21tYW5kRnJhZ21lbnQpZnJhZy5mcmFnbWVudFRhYmxlXy5nZXQoa2V5KSkuY2xvbmUoKSApOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIENob2ljZUZyYWdtZW50KCBPYmplY3RbXSAgICAgICAgICBrZXlzLAotICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRGcmFnbWVudFtdIGZyYWdtZW50cyApCi0gIHsKLSAgCXRoaXMoIGtleXMsIGZyYWdtZW50cywgbnVsbCwgbnVsbCwgIiIgKTsgICAgCi0gIH0KLSAgCi0gIHB1YmxpYyBDaG9pY2VGcmFnbWVudCggT2JqZWN0W10gICAgICAgICAga2V5cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kRnJhZ21lbnRbXSBmcmFnbWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRXZhbHVhdGUgICAgICAgICAgZXZhbHVhdGUgKQotICB7Ci0gIAl0aGlzKCBrZXlzLCBmcmFnbWVudHMsIGV2YWx1YXRlLCBudWxsLCAiIiApOwotICB9ICAgICAgICAgICAgICAgICAgICAgICAgIAotICAKLSAgcHVibGljIHZvaWQgc2V0RXZhbHVhdGUoIEV2YWx1YXRlIGV2YWx1YXRlICkKLSAgewotICAgIGV2YWx1YXRlXyA9IGV2YWx1YXRlOyAgCi0gIH0KLSAgCi0gIC8qKgotICAgICogQ29uc3RydWN0cyBhIGNob2ljZSBmcmFnbWVudC4gIFRoZSBrZXkgYXQgaW5kZXggWCBpcyBtYXBwZWQgdG8gCi0gICAgKiB0byB0aGUgZnJhZ21lbnQgYXQgaW5kZXggWC4KLSAgICAqCi0gICAgKiBAcGFyYW0ga2V5cyB0aGVzZSBrZXlzIG11c3QgYmUgdW5pcXVlIGFzIGRldGVybWluZWQgYnkgdGhlIGVxdWFscyBtZXRob2QuCi0gICAgKiBUaGV5IGFyZSB1c2VkIHRvIGlkZW50aWZ5IHdoaWNoIGZyYWdtZW50IHRvIHJldHVybi4KLSAgICAqIEBwYXJhbSBmcmFnbWVudHMgdGhlc2UgYXJlIHRoZSBmcmFnbWVudHMgdG8gYmUgcmV0dXJuZWQuICBOdWxsIGlzIG5vdCBhbGxvd2VkCi0gICAgKiBhcyBhbiBlbnRyeSBpbiB0aGUgYXJyYXkuCi0gICAgKiBAcGFyYW0gZXZhbHVhdGUgdGhlIG9iamVjdCByZXR1cm5lZCBieSB0aGlzIGV2YWx1YXRlIG9iamVjdCBpcyB1c2VkCi0gICAgKiBhcyB0aGUga2V5IHRvIGxvY2F0ZSBhIGZyYWdtZW50LgotICAgICogQHBhcmFtIHN0YXRlIHRoZSBzdGF0ZSBwYXNzZWQgdG8gZXZhbHVhdGUuCi0gICoqLwotICBwdWJsaWMgQ2hvaWNlRnJhZ21lbnQoIE9iamVjdFtdICAgICAgICAgIGtleXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEZyYWdtZW50W10gZnJhZ21lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgIEV2YWx1YXRlICAgICAgICAgIGV2YWx1YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRGYWN0b3J5ICAgIGNvbW1hbmRGYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyAgICAgICAgICAgIGlkICkKLSAgewotICAgIHN1cGVyKCBjb21tYW5kRmFjdG9yeSwgaWQgKTsKLQotICAgIGV2YWx1YXRlXyAgICAgID0gZXZhbHVhdGU7Ci0gICAgZnJhZ21lbnRUYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0KLSAgICBpZigga2V5cyA9PSBudWxsIHx8IGZyYWdtZW50cyA9PSBudWxsIHx8IGtleXMubGVuZ3RoICE9IGZyYWdtZW50cy5sZW5ndGggKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oICJCYWQga2V5cyBvciBmcmFnbWVudHMuIiApOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gQ3JlYXRlIHRoZSBmcmFnbWVudCB0YWJsZS4KLSAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBrZXlzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgICB7Ci0gICAgICAgIGZyYWdtZW50VGFibGVfLnB1dCgga2V5c1tpbmRleF0sIGZyYWdtZW50c1tpbmRleF0gKTsKLSAgICAgIH0gICAgIAotICAgIH0KLSAgfQotICAKLSAgLyoqCi0gICAgKiBNYWtlcyBhIGNvcHkgb2YgdGhlIENvbW1hbmRGcmFnbWVudC4KLSAgICAqCi0gICAgKiBAcmV0dXJuIHJldHVybnMgYSBjb3B5IG9mIHRoaXMgZnJhZ21lbnQuCi0gICoqLwotICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKLSAgewotICAgIHJldHVybiBuZXcgQ2hvaWNlRnJhZ21lbnQoIHRoaXMgKTsKLSAgfQotICAKLSAgLyoqIAotICAgICogR2V0cyB0aGUgZmlyc3QgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMKLSAgICAqIG51bGwgd2hlbiB0aGVyZSBpcyBubyBmaXJzdCBjaGlsZC4KLSAgKiovCi0gIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgZ2V0Rmlyc3RTdWJGcmFnbWVudCgpCi0gIHsgICAgCi0gICAgT2JqZWN0IGtleSAgICAgICAgICAgICAgPSBldmFsdWF0ZV8uZXZhbHVhdGUoKTsKLSAgICBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgPSAoQ29tbWFuZEZyYWdtZW50KWZyYWdtZW50VGFibGVfLmdldChrZXkpOwotCi0gICAgaWYoIGZyYWdtZW50ID09IG51bGwgKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oICJLZXkgbm90IGZvdW5kIGluIHRhYmxlLiBLZXk9IiArIGtleSApOwotICAgIH0KLQotICAgIHJldHVybiBmcmFnbWVudDsKLSAgfQotICAKLSAgLyoqCi0gICAgKiBHZXRzIHRoZSBuZXh0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LgotICAgICoKLSAgICAqIEByZXR1cm4gcmV0dXJucyB0aGUgbmV4dCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMgbnVsbAotICAgICogd2hlbiB0aGVyZSBpcyBubyBuZXh0IGNoaWxkLgotICAqKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudCBnZXROZXh0U3ViRnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvQ29tbWFuZEZhY3RvcnlGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvQ29tbWFuZEZhY3RvcnlGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTA3NWFjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0NvbW1hbmRGYWN0b3J5RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuSUNvbW1hbmRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgQ29tbWFuZEZhY3RvcnlGcmFnbWVudCBpbXBsZW1lbnRzIENvbW1hbmRGcmFnbWVudCAKLXsKLSAgcHJpdmF0ZSBWZWN0b3IgY29tbWFuZHNfOwotICAKLSAgLyoqCi0gICAqIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGFuZCByZXR1cm4KLSAgICogYW4gQ29tbWFuZEZhY3RvcnkuCi0gICAqIEByZXR1cm4KLSAgICovCi0gIHB1YmxpYyBhYnN0cmFjdCBJQ29tbWFuZEZhY3RvcnkgZ2V0SUNvbW1hbmRGYWN0b3J5KCk7Ci0gIAotICAvKioKLSAgICogQWxsIHdpemFyZCBmcmFnbWVudHMgbmVlZCB0byBiZSBjbG9uZWFibGUuCi0gICoqLwotICBwdWJsaWMgYWJzdHJhY3QgT2JqZWN0IGNsb25lKCk7Ci0gIAotICBwcm90ZWN0ZWQgQ29tbWFuZEZhY3RvcnlGcmFnbWVudCggQ29tbWFuZEZhY3RvcnlGcmFnbWVudCBmcmFnICkKLSAgewotICAgIGNvbW1hbmRzXyA9IGZyYWcuY29tbWFuZHNfOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBDb21tYW5kRmFjdG9yeUZyYWdtZW50KCkKLSAgewotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gUmV0dXJucyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGZyYWdtZW50LgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICByZXR1cm4gIiI7Ci0gIH0KLSAgCi0gIC8qKiAKLSAgICAqIEdldHMgZXhlY3V0YWJsZSBjb21tYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZyYWdtZW50LgotICAgICoKLSAgICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuICBSZXR1cm5zCi0gICAgKiBudWxsIHdoZW4gdGhlcmUgaXMgbm8gZmlyc3QgY2hpbGQuCi0gICoqLwotICBwdWJsaWMgQ29tbWFuZEZhY3RvcnkgZ2V0Q29tbWFuZEZhY3RvcnkoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKiogCi0gICAgKiBHZXRzIHRoZSBmaXJzdCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4KLSAgICAqCi0gICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LiAgUmV0dXJucwotICAgICogbnVsbCB3aGVuIHRoZXJlIGlzIG5vIGZpcnN0IGNoaWxkLgotICAqKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudCBnZXRGaXJzdFN1YkZyYWdtZW50KCkKLSAgewotCUNvbW1hbmRGcmFnbWVudCByZXN1bHQgPSBudWxsOwotCQotICAgIGNvbW1hbmRzXyA9IGNyZWF0ZUNvbW1hbmRzKCk7CQotCi0JaWYoIGNvbW1hbmRzXy5zaXplKCkgPiAwICkKLQl7Ci0JICByZXN1bHQgPSAoQ2hpbGRGcmFnbWVudCljb21tYW5kc18uZWxlbWVudEF0KDApOwotCX0KLQkKLQlyZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAgKiBHZXRzIHRoZSBuZXh0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LgotICAgICoKLSAgICAqIEByZXR1cm4gcmV0dXJucyB0aGUgbmV4dCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMgbnVsbAotICAgICogd2hlbiB0aGVyZSBpcyBubyBuZXh0IGNoaWxkLgotICAqKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudCBnZXROZXh0U3ViRnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLQlDb21tYW5kRnJhZ21lbnQgcmVzdWx0ID0gbnVsbDsKLQkJCi0JaWYoIGNvbW1hbmRzXyAhPSBudWxsICYmIGZyYWdtZW50IGluc3RhbmNlb2YgQ2hpbGRGcmFnbWVudCApIAotCXsKLQkgIENoaWxkRnJhZ21lbnQgY2hpbGQgPSAoQ2hpbGRGcmFnbWVudClmcmFnbWVudDsKLQkgIAotCSAgaW50IGluZGV4ID0gY2hpbGQuaW5kZXhfOwotCQotICAgICAgaWYoIGluZGV4ICE9IC0xICkKLQkgIHsKLQkgICAgaW5kZXgrKzsKLQkgIAotCSAgICBpZiggaW5kZXggPCBjb21tYW5kc18uc2l6ZSgpICkKLQkJewotCQkgIHJlc3VsdCA9IChDb21tYW5kRnJhZ21lbnQpY29tbWFuZHNfLmVsZW1lbnRBdCggaW5kZXggKTsKLQkJfQotCSAgfQotCX0KLQkKLQlyZXR1cm4gcmVzdWx0OwotICB9Ci0gIAotICAvKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdG8gcmV0cmlldmUgdGhlIGRhdGEgbWFwcGluZ3MgZm9yIHRoaXMgY29tbWFuZCBmcmFnbWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKCBEYXRhTWFwcGluZ1JlZ2lzdHJ5IHJlZ2lzdHJ5ICkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIElmIHRoZSBjb21tYW5kcyBmb3IgdGhpcyBmcmFnbWVudCBzaG91bGQgbm90IGJlIHJ1biB3aXRoaW4gYSB0cmFuc2FjdGlvbiB0aGVuCi0gICAqIHRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdHJ1ZS4gIElmIHRoZSBmcmFnbWVudCBkb2VzIG5vdCBjYXJlIGlmIGl0IGlzIHJ1biBpbiBhIHRyYW5zYWN0aW9uCi0gICAqIG9yIG5vdCBpdCBzaG91bGQgcmV0dXJuIGZhbHNlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZG9Ob3RSdW5JblRyYW5zYWN0aW9uKCkKLSAgewotICAgIHJldHVybiBmYWxzZTsKLSAgfSAgCi0gIAotICBwcml2YXRlIFZlY3RvciBjcmVhdGVDb21tYW5kcygpCi0gIHsKLQlWZWN0b3IgICAgICAgICAgY29tbWFuZHMgPSBuZXcgVmVjdG9yKCk7Ci0JSUNvbW1hbmRGYWN0b3J5IGZhY3RvcnkgID0gZ2V0SUNvbW1hbmRGYWN0b3J5KCk7Ci0JaW50ICAgICAgICAgICAgIGluZGV4ICAgID0gMDsKLQkJICAKLQl3aGlsZSggZmFjdG9yeSAhPSBudWxsICYmIGZhY3RvcnkuaGFzTmV4dCgpICkKLQl7Ci0JICBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiBjb21tYW5kID0gZmFjdG9yeS5nZXROZXh0Q29tbWFuZCgpOwotCQkJCi0JICBjb21tYW5kcy5hZGQoIG5ldyBDaGlsZEZyYWdtZW50KCBjb21tYW5kLCBpbmRleCsrICkgKTsKLQl9Ci0JCi0JcmV0dXJuIGNvbW1hbmRzOwotICB9Ci0gIAotICBwcml2YXRlIGNsYXNzIENoaWxkRnJhZ21lbnQgZXh0ZW5kcyBTaW1wbGVGcmFnbWVudAotICB7Ci0JICBpbnQgaW5kZXhfOwotCQotCSAgcHVibGljIENoaWxkRnJhZ21lbnQoIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIGNvbW1hbmQsIGludCBpbmRleCApCi0JICB7Ci0JICAgIHN1cGVyKCBjb21tYW5kLCBjb21tYW5kLmdldElEKCkgKTsKLQkgICAgaW5kZXhfID0gaW5kZXg7Ci0JICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0NvbW1hbmRGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvQ29tbWFuZEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NzYyYTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvQ29tbWFuZEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5Db21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci0KLQotLyoqCi0gICogVGhpcyBpbnRlcmZhY2UgZGVzY3JpYmVzIGEgbGlzdCBvZiBpbnRlcnJ1cHRhYmxlIGNvbW1hbmRzLiAgVGhlCi0gICogb3JkZXIgb2YgdGhpcyBsaXN0IG9mIGNvbW1hbmRzIGlzIGRlZmluZWQgYnkgdGhlIGdldEZpcnN0U3ViRnJhZ21lbnQgYW5kCi0gICogZ2V0TmV4dFN1YkZyYWdtZW50IG1ldGhvZHMuCi0qKi8KLXB1YmxpYyBpbnRlcmZhY2UgQ29tbWFuZEZyYWdtZW50IGV4dGVuZHMgQ2xvbmVhYmxlCi17IAotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gUmV0dXJucyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGZyYWdtZW50LgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRJZCgpOwotICAKLSAgLyoqIAotICAgICogR2V0cyBleGVjdXRhYmxlIGNvbW1hbmQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMKLSAgICAqIG51bGwgd2hlbiB0aGVyZSBpcyBubyBmaXJzdCBjaGlsZC4KLSAgKiovCi0gIHB1YmxpYyBDb21tYW5kRmFjdG9yeSBnZXRDb21tYW5kRmFjdG9yeSgpOwotCi0gIC8qKiAKLSAgICAqIEdldHMgdGhlIGZpcnN0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LgotICAgICoKLSAgICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuICBSZXR1cm5zCi0gICAgKiBudWxsIHdoZW4gdGhlcmUgaXMgbm8gZmlyc3QgY2hpbGQuCi0gICoqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGdldEZpcnN0U3ViRnJhZ21lbnQoKTsKLQotICAvKioKLSAgICAqIEdldHMgdGhlIG5leHQgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBuZXh0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LiAgUmV0dXJucyBudWxsCi0gICAgKiB3aGVuIHRoZXJlIGlzIG5vIG5leHQgY2hpbGQuCi0gICoqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGdldE5leHRTdWJGcmFnbWVudCggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICk7Ci0gIAotICAvKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdG8gcmV0cmlldmUgdGhlIGRhdGEgbWFwcGluZ3MgZm9yIHRoaXMgY29tbWFuZCBmcmFnbWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKCBEYXRhTWFwcGluZ1JlZ2lzdHJ5IHJlZ2lzdHJ5ICk7Ci0KLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIElmIHRoZSBjb21tYW5kcyBmb3IgdGhpcyBmcmFnbWVudCBzaG91bGQgbm90IGJlIHJ1biB3aXRoaW4gYSB0cmFuc2FjdGlvbiB0aGVuCi0gICAqIHRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdHJ1ZS4gIElmIHRoZSBmcmFnbWVudCBkb2VzIG5vdCBjYXJlIGlmIGl0IGlzIHJ1biBpbiBhIHRyYW5zYWN0aW9uCi0gICAqIG9yIG5vdCBpdCBzaG91bGQgcmV0dXJuIGZhbHNlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZG9Ob3RSdW5JblRyYW5zYWN0aW9uKCk7Ci0gIAotICAvKioKLSAgICAqIEFsbCB3aXphcmQgZnJhZ21lbnRzIG5lZWQgdG8gYmUgY2xvbmVhYmxlLgotICAqKi8KLSAgcHVibGljIE9iamVjdCBjbG9uZSgpOyAgCi19ICAKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0NvbW1hbmRGcmFnbWVudEVuZ2luZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvQ29tbWFuZEZyYWdtZW50RW5naW5lLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MTE2OTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvQ29tbWFuZEZyYWdtZW50RW5naW5lLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjIzICAgMTI5MjMyIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwMzEzICAgMTMwOTU4IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYxMDExICAgMTU5MjgzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBwcm9qZWN0IG5vdCBhc3NvY2lhdGVkIHRvIEVBUiB3aGVuIHVzaW5nIGFudCBvbiBjb21tYW5kLWxpbmUKLSAqIDIwMDcwMzIzICAgMTc1ODAwIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDcwNzMwICAgMTk3MTQ0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIFBhc3MgcHJvZ3Jlc3MgbW9uaXRvciB0byB1bmRvIGNvbW1hbmRzLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50OwotCi1pbXBvcnQgamF2YS51dGlsLlN0YWNrOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk11bHRpU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuQ29tbWFuZE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuRW52aXJvbm1lbnRDb3JlTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlN0YXR1c1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YUZsb3dNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklMb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotCi0KLS8qKgotICogVGhlIENvbW1hbmRGcmFnbWVudEVuZ2luZSBwcm92aWRlcyBhIGNvbnZpZW5lbnQgd2F5IHRvIHRyYXZlcnNlIENvbW1hbmRGcmFnbWVudHMKLSAqIGFuZCBwb3NzaWJsaXR5IGV4ZWN1dGUgaXRzIGFzc29jaWF0ZSBDb21tYW5kLgotICovCi1wdWJsaWMgY2xhc3MgQ29tbWFuZEZyYWdtZW50RW5naW5lIGltcGxlbWVudHMgQ29tbWFuZE1hbmFnZXIKLXsKLSAgcHJpdmF0ZSBTdGFjayAgICAgICAgICAgIGNvbW1hbmRTdGFja187Ci0gIHByaXZhdGUgRnJhZ21lbnRMaXN0ZW5lciB1bmRvRnJhZ21lbnRMaXN0ZW5lcl87Ci0gIHByaXZhdGUgRnJhZ21lbnRMaXN0ZW5lciBuZXh0RnJhZ21lbnRMaXN0ZW5lcl87Ci0gIHByaXZhdGUgRnJhZ21lbnRMaXN0ZW5lciBhZnRlckV4ZWN1dGVGcmFnbWVudExpc3RlbmVyXzsKLSAgcHJpdmF0ZSBGcmFnbWVudExpc3RlbmVyIHBlZWtGcmFnbWVudExpc3RlbmVyXzsKLSAgcHJpdmF0ZSBEYXRhRmxvd01hbmFnZXIgIGRhdGFNYW5hZ2VyXzsKLSAgcHJpdmF0ZSBJRW52aXJvbm1lbnQgICAgIGVudmlyb25tZW50XzsKLSAgcHJpdmF0ZSBJU3RhdHVzICAgICAgICAgIGxhc3RTdGF0dXNfOwotICAKLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBDb21tYW5kRnJhZ21lbnRFbmdpbmUuCi0gICAqIAotICAgKiBAcGFyYW0gc3RhcnRGcmFnbWVudCB0aGUgcm9vdCBmcmFnbWVudCB3aGVyZSB0cmF2ZXJzYWwgd2lsbCBiZWdpbi4KLSAgICogQHBhcmFtIGRhdGFNYW5hZ2VyIHRoZSBkYXRhIG1hbmFnZXIgY29udGFpbmluZyBhbGwgb2YgdGhlIGRhdGEgbWFwcGluZ3MuCi0gICAqIEBwYXJhbSBlbnZpcm9ubWVudCB0aGUgZW52aXJvbm1lbnQuCi0gICAqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50RW5naW5lKCBDb21tYW5kRnJhZ21lbnQgc3RhcnRGcmFnbWVudCwgRGF0YUZsb3dNYW5hZ2VyIGRhdGFNYW5hZ2VyLCBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnQgKQotICB7Ci0gIAlTZXF1ZW5jZUZyYWdtZW50IHJvb3QgPSBuZXcgU2VxdWVuY2VGcmFnbWVudCgpOwotICAJcm9vdC5hZGQoIHN0YXJ0RnJhZ21lbnQgKTsKLSAgCSAgCQotICAJY29tbWFuZFN0YWNrXyA9IG5ldyBTdGFjaygpOwotICAJCi0gIAlhZGRUb1N0YWNrKCByb290LCAtMSApOwotICAJYWRkVG9TdGFjayggc3RhcnRGcmFnbWVudCwgMCApOwotICAJCi0gIAlkYXRhTWFuYWdlcl8gPSBkYXRhTWFuYWdlcjsKLSAgCWVudmlyb25tZW50XyA9IGVudmlyb25tZW50OwotICB9IAotICAKLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBTdHJpbmcgICAgICBuZXdsaW5lID0gU3lzdGVtLmdldFByb3BlcnR5KCJsaW5lLnNlcGFyYXRvciIpOyAgICAKLSAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIAotICAgIGJ1ZmZlci5hcHBlbmQobmV3bGluZSk7Ci0gICAgYnVmZmVyLmFwcGVuZCgiQ29tbWFuZCBzdGFjayBzdGFydDoiKTsKLSAgICBidWZmZXIuYXBwZW5kKG5ld2xpbmUpOwotICAgIAotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBjb21tYW5kU3RhY2tfLnNpemUoKTsgaW5kZXgrKyApCi0gICAgewotICAgICAgQ29tbWFuZExpc3RFbnRyeSBlbnRyeSA9IChDb21tYW5kTGlzdEVudHJ5KWNvbW1hbmRTdGFja18uZWxlbWVudEF0KGluZGV4KTsKLSAgICAgIGVudHJ5LmR1bXAoYnVmZmVyLCBpbmRleCk7Ci0gICAgfQotICAgIAotICAgIGJ1ZmZlci5hcHBlbmQoIkNvbW1hbmQgc3RhcnQgZW5kOiIpOwotICAgIGJ1ZmZlci5hcHBlbmQobmV3bGluZSk7Ci0gICAgCi0gICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOwotICB9Ci0gIAotICAvKioKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBEYXRhIG1hcHBpbmcgcmVnaXN0cnkuCi0gICAqLwotICBwdWJsaWMgRGF0YU1hcHBpbmdSZWdpc3RyeSBnZXRNYXBwaW5nUmVnaXN0cnkoKQotICB7Ci0JcmV0dXJuIGRhdGFNYW5hZ2VyXy5nZXRNYXBwaW5nUmVnaXN0cnkoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSBTdGF0dXMgZnJvbSB0aGUgbGFzdCBDb21tYW5kIGV4ZWN1dGVkLgotICAgKi8KLSAgcHVibGljIElTdGF0dXMgZ2V0TGFzdFN0YXR1cygpCi0gIHsKLSAgICByZXR1cm4gbGFzdFN0YXR1c187Ci0gIH0KLSAgCi0gIC8qKgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNVbmRvRW5hYmxlZCgpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIG5leHQgZnJhZ21lbnQgbGlzdGVuZXIgZm9yIHRoaXMgZW5naW5lLiAgVGhpcyBsaXN0ZW5lciB3aWxsIGJlCi0gICAqIGNhbGxlZCBmb3IgZWFjaCBmcmFnbWVudCB0aGF0IGlzIHRyYXZlcnNlZCBpbiBtb3ZlRm9yd2FyZFRvTmV4dFN0b3Agb3BlcmF0aW9uLgotICAgKiAKLSAgICogQHBhcmFtIGxpc3RlbmVyIHRoZSBmcmFnbWVudCBsaXN0ZW5lci4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE5leHRGcmFnbWVudExpc3RlbmVyKCBGcmFnbWVudExpc3RlbmVyIGxpc3RlbmVyICkKLSAgewotICAgIG5leHRGcmFnbWVudExpc3RlbmVyXyA9IGxpc3RlbmVyOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRBZnRlckV4ZWN1dGVGcmFnbWVudExpc3RlbmVyKCBGcmFnbWVudExpc3RlbmVyIGxpc3RlbmVyICkKLSAgewotICAgIGFmdGVyRXhlY3V0ZUZyYWdtZW50TGlzdGVuZXJfID0gbGlzdGVuZXI7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXRzIHRoZSBuZXh0IGZyYWdtZW50IGxpc3RlbmVyIGZvciB0aGlzIGVuZ2luZS4gIFRoaXMgbGlzdGVuZXIgd2lsbCBiZQotICAgKiBjYWxsZWQgZm9yIGVhY2ggZnJhZ21lbnQgdGhhdCBpcyB0cmF2ZXJzZWQgaW4gcGVla0ZvcndhcmRUb05leHRTdG9wIG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgZnJhZ21lbnQgbGlzdGVuZXIuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQZWVrRnJhZ21lbnRMaXN0ZW5lciggRnJhZ21lbnRMaXN0ZW5lciBsaXN0ZW5lciApCi0gIHsKLSAgICBwZWVrRnJhZ21lbnRMaXN0ZW5lcl8gPSBsaXN0ZW5lcjsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIHBlZWsgZnJhZ21lbnQgbGlzdGVuZXIgZm9yIHRoaXMgZW5naW5lLiAgVGhpcyBsaXN0ZW5lciB3aWxsIGJlCi0gICAqIGNhbGxlZCBmb3IgZWFjaCBmcmFnbWVudCB0aGF0IGlzIHRyYXZlcnNlZCBpbiB1bmRvVG9MYXN0U3RvcCBvcGVyYXRpb24uCi0gICAqIAotICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGZyYWdtZW50IGxpc3RlbmVyLgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VW5kb0ZyYWdtZW50TGlzdGVuZXIoIEZyYWdtZW50TGlzdGVuZXIgbGlzdGVuZXIgKQotICB7Ci0gICAgdW5kb0ZyYWdtZW50TGlzdGVuZXJfID0gbGlzdGVuZXI7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUcmF2ZXJzZSB0aGUgQ29tbWFuZEZyYWdtZW50cyBzdGFydGluZyB3aXRoIHRoZSBDb21tYW5kRnJhZ21lbnQgb24gdGhlCi0gICAqIHRvcCBvZiB0aGUgY29tbWFuZCBmcmFnbWVudCBzdGFjay4gIFRoZSBvcGVyYXRpb24gZG9lcyBOT1QgY2hhbmdlIHRoZQotICAgKiBjb21tYW5kIGZyYWdtZW50IHN0YWNrIGFuZCBkb2VzIG5vdCBleGVjdXRlIGFueSBjb21tYW5kIGFzc29jaWF0ZWQgd2l0aAotICAgKiBhIENvbW1hbmRGcmFnbWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHBlZWtGb3J3YXJkVG9OZXh0U3RvcCgpCi0gIHsKLSAgCUNvbW1hbmRMaXN0RW50cnkgdG9wRW50cnkgICAgICA9IChDb21tYW5kTGlzdEVudHJ5KWNvbW1hbmRTdGFja18ubGFzdEVsZW1lbnQoKTsgIAkKLSAgCWludCAgICAgICAgICAgICAgcGFyZW50SW5kZXggICA9IHRvcEVudHJ5LnBhcmVudEluZGV4XzsKLSAgCUNvbW1hbmRGcmFnbWVudCAgY2hpbGRGcmFnbWVudCA9IHRvcEVudHJ5LmZyYWdtZW50XzsgCi0gIAlib29sZWFuICAgICAgICAgIGNvbnRpbnVlTG9vcCAgPSBuYXZpZ2F0ZUNoaWxkRnJhZ21lbnRzKCBjaGlsZEZyYWdtZW50LCBmYWxzZSApOwotICAJICAJCi0gIAl3aGlsZSggcGFyZW50SW5kZXggIT0gLTEgJiYgY29udGludWVMb29wICkKLSAgCXsgIAkKLSAgCSAgQ29tbWFuZExpc3RFbnRyeSBwYXJlbnRFbnRyeSAgICA9IChDb21tYW5kTGlzdEVudHJ5KWNvbW1hbmRTdGFja18uZWxlbWVudEF0KCBwYXJlbnRJbmRleCApOwotICAJICBDb21tYW5kRnJhZ21lbnQgIHBhcmVudEZyYWdtZW50ID0gcGFyZW50RW50cnkuZnJhZ21lbnRfOwotICAJICBDb21tYW5kRnJhZ21lbnQgIG5leHRGcmFnbWVudCAgID0gcGFyZW50RnJhZ21lbnQuZ2V0TmV4dFN1YkZyYWdtZW50KCBjaGlsZEZyYWdtZW50ICk7Ci0gIAkgIAotICAJICBpZiggbmV4dEZyYWdtZW50ID09IG51bGwgKQotICAJICB7Ci0gIAkgIAkvLyBUaGVyZSBhcmUgbm8gbW9yZSBzaWJsaW5nIGZyYWdtZW50cyB0byBuYXZpZ2F0ZSBzbyB3ZSB3aWxsIHBvcCB1cCB0byB0aGUgcGFyZW50Ci0gIAkgIAkvLyBhbiBjb250aW51ZSBuYXZpZ2F0aW9uIHRoZXJlLgotICAJICAJcGFyZW50SW5kZXggICA9IHBhcmVudEVudHJ5LnBhcmVudEluZGV4XzsKLSAgCSAgCWNoaWxkRnJhZ21lbnQgPSBwYXJlbnRGcmFnbWVudDsgCi0gIAkgIH0KLSAgCSAgZWxzZQotICAJICB7ICAJICAJCi0gIAkgIAlpZiggbmF2aWdhdGVDaGlsZEZyYWdtZW50cyggbmV4dEZyYWdtZW50LCB0cnVlICkgKSAKLSAgCSAgCXsKLSAgCSAgCSAgLy8gV2UgYXJlIGNvbnRpbnVpbmcgdG8gbmF2aWdhdGUuICBUaGlzIHRpbWUgd2Ugd2FudCB0byB0cmF2ZXJzZSB0aGUgc2libGluZwotICAJICAJICAvLyBvZiBuZXh0RnJhZ21lbnQuIAotICAJICAJICBjaGlsZEZyYWdtZW50ID0gbmV4dEZyYWdtZW50OwotICAJICAJfQotICAJICAJZWxzZQotICAJICAJewotICAJICAJICAvLyBXZSBhcmUgc3RvcHBpbmcgb3VyIG5hdmlnYXRpb24uCi0gIAkgIAkgIGNvbnRpbnVlTG9vcCA9IGZhbHNlOwotICAJICAJfQotICAJICB9Ci0gIAl9Ci0gIH0KLSAgCi0gIAotICAvKioKLSAgICogVHJhdmVyc2UgdGhlIENvbW1hbmRGcmFnbWVudHMgc3RhcnRpbmcgd2l0aCB0aGUgQ29tbWFuZEZyYWdtZW50IG9uIHRoZQotICAgKiB0b3Agb2YgdGhlIGNvbW1hbmQgZnJhZ21lbnQgc3RhY2suICBUaGlzIG9wZXJhdGlvbiBkb2VzIGNoYW5nZSB0aGUKLSAgICogY29tbWFuZCBmcmFnbWVudCBzdGFjayBhbmQgZG9lcyBleGVjdXRlIGFueSBjb21tYW5kIGFzc29jaWF0ZWQgd2l0aAotICAgKiBhIENvbW1hbmRGcmFnbWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIG1vdmVGb3J3YXJkVG9OZXh0U3RvcCggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLSAgewotICAJQ29tbWFuZExpc3RFbnRyeSB0b3BFbnRyeSAgICAgICAgPSAoQ29tbWFuZExpc3RFbnRyeSljb21tYW5kU3RhY2tfLmxhc3RFbGVtZW50KCk7ICAJCi0gIAlpbnQgICAgICAgICAgICAgIHBhcmVudEluZGV4ICAgICA9IHRvcEVudHJ5LnBhcmVudEluZGV4XzsKLSAgCUNvbW1hbmRGcmFnbWVudCAgY3VycmVudEZyYWdtZW50ID0gdG9wRW50cnkuZnJhZ21lbnRfOyAgCi0gIAlib29sZWFuICAgICAgICAgIGNvbnRpbnVlRXhlY3V0ZSA9IHZpc2l0VG9wKCBtb25pdG9yICk7Ci0gIAlDb21tYW5kRnJhZ21lbnQgIGNoaWxkRnJhZ21lbnQgICAgPSBjdXJyZW50RnJhZ21lbnQuZ2V0Rmlyc3RTdWJGcmFnbWVudCgpOwotICAJICAgIAotICAJLy8gSWYgdGhlIGN1cnJlbnQgZnJhZ21lbnQgaGFzIGNoaWxkIGZyYWdtZW50cyB3ZSBuZWVkIHRvIHRyYXZlcnNlIHRoZXNlIGNoaWxkcmVuLgotICAJd2hpbGUoIGNoaWxkRnJhZ21lbnQgIT0gbnVsbCAmJiBjb250aW51ZUV4ZWN1dGUgKQotICAJewotICAJICBwYXJlbnRJbmRleCA9IGNvbW1hbmRTdGFja18uc2l6ZSgpIC0gMTsKLSAgCSAgYWRkVG9TdGFjayggY2hpbGRGcmFnbWVudCwgcGFyZW50SW5kZXggKTsKLSAgCSAgY29udGludWVFeGVjdXRlID0gdmlzaXRUb3AoIG1vbml0b3IgKTsKLSAgCSAgY3VycmVudEZyYWdtZW50ID0gY2hpbGRGcmFnbWVudDsKLSAgCSAgY2hpbGRGcmFnbWVudCAgID0gY3VycmVudEZyYWdtZW50LmdldEZpcnN0U3ViRnJhZ21lbnQoKTsKLSAgCX0KLSAgCQotICAJLy8gVGhlIHByZXZpb3VzIHdoaWxlIGxvb3AgaGFzIGd1YXJhbnRlZWQgdGhhdCBjdXJyZW50RnJhZ21lbnQgaGFzIG5vCi0gIAkvLyBjaGlsZCBmcmFnbWVudHMuIFRoaXMgd2hpbGUgbG9vcCBhc3N1bWVzIHRoaXMgdG8gYmUgdGhlIGNhc2UuCi0gIAl3aGlsZSggcGFyZW50SW5kZXggIT0gLTEgJiYgY29udGludWVFeGVjdXRlICkKLSAgCXsgIAkgICAJCi0gIAkgIENvbW1hbmRMaXN0RW50cnkgcGFyZW50RW50cnkgICAgPSAoQ29tbWFuZExpc3RFbnRyeSljb21tYW5kU3RhY2tfLmVsZW1lbnRBdCggcGFyZW50SW5kZXggKTsKLSAgCSAgQ29tbWFuZEZyYWdtZW50ICBwYXJlbnRGcmFnbWVudCA9IHBhcmVudEVudHJ5LmZyYWdtZW50XzsKLSAgCSAgQ29tbWFuZEZyYWdtZW50ICBuZXh0RnJhZ21lbnQgICA9IG51bGw7Ci0gIAkgIAotICAJICBpZiggY3VycmVudEZyYWdtZW50ID09IG51bGwgKQotICAJICB7Ci0gIAkgICAgbmV4dEZyYWdtZW50ID0gcGFyZW50RnJhZ21lbnQuZ2V0Rmlyc3RTdWJGcmFnbWVudCgpOwotICAJICB9Ci0gIAkgIGVsc2UKLSAgCSAgewkKLSAgCSAgICBuZXh0RnJhZ21lbnQgPSBwYXJlbnRGcmFnbWVudC5nZXROZXh0U3ViRnJhZ21lbnQoIGN1cnJlbnRGcmFnbWVudCApOwotICAJICB9Ci0gIAkgIAotICAJICBpZiggbmV4dEZyYWdtZW50ID09IG51bGwgKQotICAJICB7Ci0gIAkgIAkvLyBUaGVyZSBhcmUgbm8gbW9yZSBzaWJsaW5nIGZyYWdtZW50cyB0byBuYXZpZ2F0ZSBzbyB3ZSB3aWxsIHBvcCB1cCB0byB0aGUgcGFyZW50Ci0gIAkgIAkvLyBhbmQgY29udGludWUgbmF2aWdhdGlvbiB0aGVyZS4KLSAgCSAgCXBhcmVudEluZGV4ICAgICA9IHBhcmVudEVudHJ5LnBhcmVudEluZGV4XzsKLSAgCSAgCWN1cnJlbnRGcmFnbWVudCA9IHBhcmVudEZyYWdtZW50OyAKLSAgCSAgfQotICAJICBlbHNlCi0gIAkgIHsgIAkKLSAgCSAgCS8vIFdlIGhhdmUgYSBuZXcgZnJhZ21lbnQgdGhhdCB3ZSBuZWVkIHRvIGFkZCB0byB0aGUgdG9wIG9mIHRoZSBzdGFjay4KLSAgCSAgCWFkZFRvU3RhY2soIG5leHRGcmFnbWVudCwgcGFyZW50SW5kZXggKTsgIAkgIAkKLSAgCSAgICBwYXJlbnRJbmRleCAgICAgPSBjb21tYW5kU3RhY2tfLnNpemUoKSAtIDE7ICAJCi0gIAkgICAgY29udGludWVFeGVjdXRlID0gdmlzaXRUb3AoIG1vbml0b3IgKTsKLSAgCSAgICBjdXJyZW50RnJhZ21lbnQgPSBudWxsOyAgCSAgCQotICAJICB9Ci0gIAl9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRydWUgaWYgdGhlIHRoZXJlIGlzIG5vdCBsb25nZXIgYW55IGVsZW1lbnRzIG9uIHRoZSBzdGFjay4gIE5vdGU6Ci0gICAqICAgICAgICAgICAgICAgICB0aGF0IGxhc3QgdHdvIGVudHJpZXMgYXJlIGFsd2F5cyBsZWZ0IG9uIHRoZSBzdGFjay4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHVuZG9Ub0xhc3RTdG9wKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotICB7ICAgIAotICAJQ29tbWFuZExpc3RFbnRyeSB0b3BFbnRyeSA9IChDb21tYW5kTGlzdEVudHJ5KWNvbW1hbmRTdGFja18ubGFzdEVsZW1lbnQoKTsJCi0gIAkKLQkgIGlmKCB0b3BFbnRyeS5mcmFnbWVudFN0b3BwZWRfICYmICF0b3BFbnRyeS5iZWZvcmVFeGVjdXRlXyApCi0gICAgewotICAgICAgLy8gTm9ybWFsbHkgdGhlIGNvbW1hbmQgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaGFzIG5vdCBiZWVuIGV4ZWN1dGVkLiAgSWYKLSAgICAgIC8vIGl0IGhhcyBiZWVuIGV4ZWN1dGUsIGl0IG1lYW5zIHRoYXQgd2UgdHJpZWQgdG8gZXhlY3V0ZSBhbmQgaXQgZmFpbGVkLgotICAgICAgLy8gVGhlIGZpcnN0IGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgc3RhY2sgZmFpbGVkLiAgVGhlcmVmb3JlLCB3ZSBzaG91bGQKLSAgICAgIC8vIG9ubHkgdW5kbyB0aGlzIGNvbW1hbmQuCi0gICAgICBwZXJmb3JtVW5kbyggdG9wRW50cnksIG1vbml0b3IgKTsKLSAgICAgIHJldHVybiB0b3BFbnRyeS5wYXJlbnRJbmRleF8gPT0gMDsKLSAgICB9Ci0gICAgCi0gIAlwZXJmb3JtVW5kbyggdG9wRW50cnksIG1vbml0b3IgKTsKLSAgCQkKLSAgICB3aGlsZSggdG9wRW50cnkucGFyZW50SW5kZXhfICE9IDAgKQotICAJewotICAgICAgY29tbWFuZFN0YWNrXy5wb3AoKTsKLSAgCSAgdG9wRW50cnkgPSAoQ29tbWFuZExpc3RFbnRyeSljb21tYW5kU3RhY2tfLmxhc3RFbGVtZW50KCk7CSAgCi0gICAgICAKLSAgCSAgcGVyZm9ybVVuZG8oIHRvcEVudHJ5LCBtb25pdG9yICk7Ci0gIAkgIAotICAJICBpZiggdG9wRW50cnkuZnJhZ21lbnRTdG9wcGVkXyApCi0gIAkgIHsKLSAgCSAgICBicmVhazsKLSAgCSAgfQotICAJfQotICAJCi0gIAlyZXR1cm4gdG9wRW50cnkucGFyZW50SW5kZXhfID09IDA7Ci0gIH0KLSAgIAotICBwcml2YXRlIHZvaWQgcGVyZm9ybVVuZG8oIENvbW1hbmRMaXN0RW50cnkgZW50cnksIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0gIHsKLSAgICBpZiggZW50cnkucGFyZW50SW5kZXhfID09IDAgKSByZXR1cm47Ci0gICAgCi0JICBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiBjbWQgPSBlbnRyeS5jb21tYW5kXzsKLSAgCSAgCi0gICAgdHJ5Ci0gICAgewotICAgICAgaWYoIGNtZCAhPSBudWxsICkKLSAgICAgIHsKLSAgICAgICAgaWYoIGNtZC5jYW5VbmRvKCkgJiYgIWVudHJ5LmJlZm9yZUV4ZWN1dGVfICkKLQkgICAgICB7Ci0JICAgICAgICBjbWQudW5kbyggbW9uaXRvciwgbnVsbCApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBkYXRhTWFuYWdlcl8udW5wcm9jZXNzKCBjbWQgKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgIHsKLSAgICAgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gICAgCi0JICBlbnRyeS5iZWZvcmVFeGVjdXRlXyA9IHRydWU7ICAKLQkgIHVuZG9GcmFnbWVudExpc3RlbmVyXy5ub3RpZnkoIGVudHJ5LmZyYWdtZW50XyApOyAgCQotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gbmF2aWdhdGVDaGlsZEZyYWdtZW50cyggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50LCBib29sZWFuIHZpc2l0Q3VycmVudCApCi0gIHsKLSAgCWJvb2xlYW4gICAgICAgICBjb250aW51ZU5hdmlnYXRlID0gdHJ1ZTsKLSAgCUNvbW1hbmRGcmFnbWVudCBjaGlsZEZyYWcgICAgICAgID0gbnVsbDsgCi0gIAkgIAotICAJaWYoIHZpc2l0Q3VycmVudCApCi0gIAl7Ci0gIAkgIGNvbnRpbnVlTmF2aWdhdGUgPSBwZWVrRnJhZ21lbnRMaXN0ZW5lcl8ubm90aWZ5KCBmcmFnbWVudCApOwotICAgICAgZGF0YU1hbmFnZXJfLnByb2Nlc3MoIGZyYWdtZW50ICk7Ci0gIAl9Ci0gIAkKLSAgCWNoaWxkRnJhZyA9IGZyYWdtZW50LmdldEZpcnN0U3ViRnJhZ21lbnQoKTsKLSAgIAkKLSAgCXdoaWxlKCBjaGlsZEZyYWcgIT0gbnVsbCAmJiBjb250aW51ZU5hdmlnYXRlICkKLSAgCXsKLSAgCSAgY29udGludWVOYXZpZ2F0ZSA9IG5hdmlnYXRlQ2hpbGRGcmFnbWVudHMoIGNoaWxkRnJhZywgdHJ1ZSApOwotICAJICBjaGlsZEZyYWcgICAgICAgID0gZnJhZ21lbnQuZ2V0TmV4dFN1YkZyYWdtZW50KCBjaGlsZEZyYWcgKTsKLSAgCX0KLSAgCQotICAJcmV0dXJuIGNvbnRpbnVlTmF2aWdhdGU7Ci0gIH0KLSAgICAKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0VG9wKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotICB7ICAKLSAgCUNvbW1hbmRMaXN0RW50cnkgZW50cnkgICAgICAgICAgID0gKENvbW1hbmRMaXN0RW50cnkpY29tbWFuZFN0YWNrXy5sYXN0RWxlbWVudCgpOwotICAJYm9vbGVhbiAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGUgPSBuZXh0RnJhZ21lbnRMaXN0ZW5lcl8ubm90aWZ5KCBlbnRyeS5mcmFnbWVudF8gKTsKLSAgCSAgCi0gIAlpZiggY29udGludWVOYXZpZ2F0ZSApCi0gIAl7Ci0gIAkgIC8vIENhbGwgdGhlIHNldHRlcnMgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICAgICBkYXRhTWFuYWdlcl8ucHJvY2VzcyggZW50cnkuZnJhZ21lbnRfICk7Ci0gICAgICAKLSAgICAgIC8vIEFkZCBhbnkgcnVsZXMgdG8gdGhlIG1hcHBpbmcgcmVnaXN0cnkgYmVmb3JlIHdlIGV4ZWN1dGUgdGhlIGNvbW1hbmQuCi0gICAgICBlbnRyeS5mcmFnbWVudF8ucmVnaXN0ZXJEYXRhTWFwcGluZ3MoIGRhdGFNYW5hZ2VyXy5nZXRNYXBwaW5nUmVnaXN0cnkoKSApOwotICAgCi0gIAkgIGxhc3RTdGF0dXNfID0gcnVuQ29tbWFuZCggZW50cnksIG1vbml0b3IgKTsKLSAgCSAgCi0gICAgICBpZiggYWZ0ZXJFeGVjdXRlRnJhZ21lbnRMaXN0ZW5lcl8gIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIGNvbnRpbnVlTmF2aWdhdGUgPSBhZnRlckV4ZWN1dGVGcmFnbWVudExpc3RlbmVyXy5ub3RpZnkoIGVudHJ5LmZyYWdtZW50XyApOyAgCi0gICAgICAgIAotICAgICAgICBpZiggIWNvbnRpbnVlTmF2aWdhdGUgKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gVGhlIGFmdGVyIGV4ZWN1dGlvbiBsaXN0ZW5lciBoYXMgaW5kaWNhdGVkIHRoYXQgZXhlY3V0aW9uIHNob3VsZCBzdG9wLgotICAgICAgICAgIC8vIFRoZXJlZm9yZSwgd2Ugd2lsbCB1cGdyYWRlIHRoZSBzZXZlcml0eSBvZiB0aGUgbGFzdCBzdGF0dXMgdG8gRVJST1IuCi0gICAgICAgICAgbGFzdFN0YXR1c18gPSBuZXcgU3RhdHVzKCBJU3RhdHVzLkVSUk9SLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0dXNfLmdldFBsdWdpbigpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0dXNfLmdldENvZGUoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0U3RhdHVzXy5nZXRNZXNzYWdlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0U3RhdHVzXy5nZXRFeGNlcHRpb24oKSApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgCSAgaWYoIGNvbnRpbnVlTmF2aWdhdGUgJiYgbGFzdFN0YXR1c18uZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLkVSUk9SICkgY29udGludWVOYXZpZ2F0ZSA9IGZhbHNlOwotICAJfQotICAJCi0gICAJaWYoICFjb250aW51ZU5hdmlnYXRlICkgZW50cnkuZnJhZ21lbnRTdG9wcGVkXyA9IHRydWU7Ci0gICAJCi0gIAlyZXR1cm4gY29udGludWVOYXZpZ2F0ZTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGFkZFRvU3RhY2soIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCwgaW50IHBhcmVudEluZGV4ICkKLSAgewotICAgIENvbW1hbmRMaXN0RW50cnkgZW50cnkgPSBuZXcgQ29tbWFuZExpc3RFbnRyeSggZnJhZ21lbnQsIHBhcmVudEluZGV4ICk7Ci0gICAgY29tbWFuZFN0YWNrXy5wdXNoKCBlbnRyeSApOwotICB9Ci0gIAotICAvLyBTdWJjbGFzc2VzIGNhbiBkbyBpbml0aWFsaXphdGlvbiBiZWZvcmUgdGhlIGV4ZWN1dGlvbiBvZiBhIGNvbW1hbmQgaGVyZQotICBwcm90ZWN0ZWQgSVN0YXR1cyBpbml0QmVmb3JlRXhlY3V0ZSggQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gb3BlcmF0aW9uICkKLSAgeyAgCi0JICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotICAKLSAgcHJpdmF0ZSBJU3RhdHVzIHJ1bkNvbW1hbmQoIENvbW1hbmRMaXN0RW50cnkgZW50cnksIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0gIHsKLQlDb21tYW5kRmFjdG9yeSBmYWN0b3J5ICA9IGVudHJ5LmZyYWdtZW50Xy5nZXRDb21tYW5kRmFjdG9yeSgpOwotICAJSVN0YXR1cyAgICAgIHN0YXR1cyAgID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgCQotICAJaWYoIGZhY3RvcnkgIT0gbnVsbCApCi0gIAl7Ci0gIAkgIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIGNtZCAgPSBmYWN0b3J5LmNyZWF0ZSgpOwotICAgICAgCi0gIAkgIGVudHJ5LmNvbW1hbmRfID0gY21kOwotICAJICAgIAotICAJICBpZiggY21kICE9IG51bGwgKQotICAJICB7Ci0gIAkgICAgdHJ5Ci0gIAkgICAgewotICAJICAgICAgZGF0YU1hbmFnZXJfLnByb2Nlc3MoIGNtZCApOyAgCSAgICAJCi0gIAkgICAgCQotICAgICAgICAgIHN0YXR1cyA9IGluaXRCZWZvcmVFeGVjdXRlKCBjbWQgKTsKLSAgICAgICAgICAKLSAgCSAgICAgIGVudmlyb25tZW50Xy5nZXRMb2coKS5sb2coSUxvZy5JTkZPLCAiY29tbWFuZCIsIDUwMDEsIHRoaXMsICJydW5Db21tYW5kIiwgIkV4ZWN1dGluZzogIiArIGNtZC5nZXRDbGFzcygpLmdldE5hbWUoKSk7Ci0gIAkgIAkgICAgCi0gCSAgICAgICAgY21kLnNldEVudmlyb25tZW50KCBlbnZpcm9ubWVudF8gKTsKLSAgICAgICAgICBzdGF0dXMgPSBjbWQuZXhlY3V0ZSggbW9uaXRvciwgbnVsbCApOwotICAgICAgICAgIAotCQkgICAgICBlbnRyeS5iZWZvcmVFeGVjdXRlXyA9IGZhbHNlOwotICAJICAgIH0KLSAgCSAgICBjYXRjaCggVGhyb3dhYmxlIGV4YyApCi0gIAkgICAgewotICAJICAgICAgSVN0YXR1cyAgICAgIHVuZXhwZWN0ZWRFcnJvciA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBleGMgKTsKLSAgICAgICAgICBNdWx0aVN0YXR1cyAgcGFyZW50U3RhdHVzICAgID0gbmV3IE11bHRpU3RhdHVzKCAiaWQiLCAwLCBuZXcgSVN0YXR1c1tde3VuZXhwZWN0ZWRFcnJvcn0sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50Q29yZU1lc3NhZ2VzLk1TR19FUlJPUl9VTkVYUEVDVEVEX0VSUk9SLCBudWxsICk7Ci0gIAkgICAgICBlbnZpcm9ubWVudF8uZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKCBwYXJlbnRTdGF0dXMgKTsKLSAgCSAgICAgIHN0YXR1cyA9IHVuZXhwZWN0ZWRFcnJvcjsKLSAgCSAgICB9Ci0gIAkgICAgZmluYWxseQotICAJICAgIHsKLSAgCSAgICAgIFN0cmluZyBtZXNzYWdlID0gIk9rIjsKLSAgCSAgICAgIAotICAJICAgICAgaWYoIHN0YXR1cy5nZXRTZXZlcml0eSgpID09IFN0YXR1cy5FUlJPUiApCi0gIAkgICAgICB7Ci0gIAkgICAgICAgIG1lc3NhZ2UgPSAiRXJyb3I6ICIgKyBzdGF0dXMuZ2V0TWVzc2FnZSgpOyAKLSAgCSAgICAgIH0KLSAgCSAgICAgIAotCSAgICAgIGVudmlyb25tZW50Xy5nZXRMb2coKS5sb2coSUxvZy5JTkZPLCAiY29tbWFuZCIsIDUwMDEsIHRoaXMsICJydW5Db21tYW5kIiwgIkV4ZWN1dGlvbiBzdGF0dXM6ICIgKyBtZXNzYWdlICk7Ci0gIAkgICAgfQotICAJICB9Ci0gIAl9Ci0gIAkKLSAgCXJldHVybiBzdGF0dXM7Ci0gIH0KLSAgICAKLSAgcHJpdmF0ZSBjbGFzcyBDb21tYW5kTGlzdEVudHJ5Ci0gIHsKLSAgCXB1YmxpYyBDb21tYW5kTGlzdEVudHJ5KCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQsIGludCBwYXJlbnRJbmRleCApCi0gIAl7Ci0gIAkgIGZyYWdtZW50XyAgICAgICAgPSBmcmFnbWVudDsKLSAgCSAgcGFyZW50SW5kZXhfICAgICA9IHBhcmVudEluZGV4OwotICAJICBmcmFnbWVudFN0b3BwZWRfID0gZmFsc2U7Ci0JICBiZWZvcmVFeGVjdXRlXyAgID0gdHJ1ZTsKLSAgCX0KLSAgCSAgCQotICAJcHVibGljIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIGNvbW1hbmRfOwotICAJcHVibGljIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudF87Ci0gIAlwdWJsaWMgaW50ICAgICAgICAgICAgIHBhcmVudEluZGV4XzsKLSAgCXB1YmxpYyBib29sZWFuICAgICAgICAgZnJhZ21lbnRTdG9wcGVkXzsKLSAgCXB1YmxpYyBib29sZWFuICAgICAgICAgYmVmb3JlRXhlY3V0ZV87Ci0gICAgCi0gICAgcHVibGljIHZvaWQgZHVtcCggU3RyaW5nQnVmZmVyIGJ1ZmZlciwgaW50IGluZGV4ICkKLSAgICB7Ci0gICAgICBTdHJpbmcgbmV3bGluZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgibGluZS5zZXBhcmF0b3IiKTsgICAgCi0gICAgICBTdHJpbmcgbGluZSAgICA9ICIgICIgKyBpbmRleCArICItIGZyYWc6ICIgKyBmcmFnbWVudF8uZ2V0SWQoKSArICIgcGFySW5kZXg6ICIgKyBwYXJlbnRJbmRleF8gKyAiIHN0b3A6ICIgKyBmcmFnbWVudFN0b3BwZWRfICsgIiBiZWZvcmVFeGVjdXRlOiAiICsgYmVmb3JlRXhlY3V0ZV8gOwotICAgICAgYnVmZmVyLmFwcGVuZChsaW5lKTsgCi0gICAgICBidWZmZXIuYXBwZW5kKG5ld2xpbmUpOwotICAgIH0KLSAgfSAgICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0NvbW1hbmRGcmFnbWVudEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0NvbW1hbmRGcmFnbWVudEZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIzYzk2My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9Db21tYW5kRnJhZ21lbnRGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQ7Ci0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSB3YXkgdG8gY3JlYXRlIENvbW1hbmRGcmFnbWVudHMuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIENvbW1hbmRGcmFnbWVudEZhY3RvcnkKLXsKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgYSBjcmVhdGVkIENvbW1hbmRGcmFnbWVudCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGNyZWF0ZSgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvQ29tbWFuZEZyYWdtZW50RmFjdG9yeUZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0NvbW1hbmRGcmFnbWVudEZhY3RvcnlGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OWZiNmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvQ29tbWFuZEZyYWdtZW50RmFjdG9yeUZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudDsKLQotcHVibGljIGludGVyZmFjZSBDb21tYW5kRnJhZ21lbnRGYWN0b3J5RmFjdG9yeSAKLXsKLSAgLyoqCi0gICAqIFRoZSBmcmFtZXdvcmsgY2FsbHMgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBDb21tYW5kRnJhZ21lbnRGYWN0b3J5Ci0gICAqIGZvciBhIHBhcnRpY3VsYXIgZXh0ZW5zaW9uLgotICAgKiAKLSAgICogQHJldHVybiBDcmVhdGVzIGEgQ29tbWFuZEZyYWdtZW50RmFjdG9yeS4KLSAgICovCi0gIHB1YmxpYyBDb21tYW5kRnJhZ21lbnRGYWN0b3J5IGNyZWF0ZSgpOyAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9FeHRlbnNpb25GcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvRXh0ZW5zaW9uRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkxNzNmMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9FeHRlbnNpb25GcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50OwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5yZWdpc3RyeS5Db21tYW5kUmVnaXN0cnk7Ci0KLQotcHVibGljIGNsYXNzIEV4dGVuc2lvbkZyYWdtZW50IGV4dGVuZHMgQWJzdHJhY3RDb21tYW5kRnJhZ21lbnQgCi17Ci0gIHByaXZhdGUgU3RyaW5nW10gICAgICAgIGlkc187OwotICBwcml2YXRlIENvbW1hbmRSZWdpc3RyeSBleHRlbnNpb25SZWdpc3RyeV87Ci0gIHByaXZhdGUgSGFzaHRhYmxlICAgICAgIGZyYWdtZW50c187Ci0gIAotICAvKioKLSAgICogIFRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAqCi0gICAqLwotICBwdWJsaWMgRXh0ZW5zaW9uRnJhZ21lbnQoKQotICB7Ci0gICAgc3VwZXIoIG51bGwsICIiICk7ICAKLSAgICBmcmFnbWVudHNfID0gbmV3IEhhc2h0YWJsZSgpOwotICB9Ci0gICAgCi0gIC8qKgotICAgKiBDb3B5IGNvbnN0cnVjdG9yLgotICAgKiBAcGFyYW0gRnJhZ21lbnQgdGhlIGZyYWdtZW50IHRvIGNvcHkKLSAgICovCi0gIHByb3RlY3RlZCBFeHRlbnNpb25GcmFnbWVudCggRXh0ZW5zaW9uRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0gICAgc3VwZXIoIGZyYWdtZW50ICk7Ci0gICAgCi0gICAgaWRzXyAgICAgICAgICAgICAgID0gZnJhZ21lbnQuaWRzXzsKLSAgICBleHRlbnNpb25SZWdpc3RyeV8gPSBmcmFnbWVudC5leHRlbnNpb25SZWdpc3RyeV87Ci0gICAgZnJhZ21lbnRzXyAgICAgICAgID0gZnJhZ21lbnQuZnJhZ21lbnRzXzsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gaWRzIFNldHMgdGhlIElEcyBmb3IgdGhpcyBleHRlbnNpb24gZnJhZ21lbnQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFeHRlbnNpb25JZHMoIFN0cmluZ1tdIGlkcyApCi0gIHsKLSAgICBpZHNfID0gaWRzOwotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIEBwYXJhbSByZWdpc3RyeSBTZXRzIHRoZSByZWdpc3RyeSBmb3IgdGhpcyBleHRlbnNpb24gZnJhZ21lbnQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFeHRlbnNpb25SZWdpc3RyeSggQ29tbWFuZFJlZ2lzdHJ5IHJlZ2lzdHJ5ICkKLSAgewotICAgIGV4dGVuc2lvblJlZ2lzdHJ5XyA9IHJlZ2lzdHJ5OyAKLSAgfQotICAgICAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudCNnZXRGaXJzdFN1YkZyYWdtZW50KCkKLSAgICovCi0gIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgZ2V0Rmlyc3RTdWJGcmFnbWVudCgpIAotICB7Ci0gICAgQ29tbWFuZEZyYWdtZW50RmFjdG9yeUZhY3RvcnkgZmFjdG9yeSAgPSBleHRlbnNpb25SZWdpc3RyeV8uZ2V0RmFjdG9yeUZhY3RvcnkoIGlkc18gKTsKLSAgICAKLSAgICBpZiggZmFjdG9yeSA9PSBudWxsICkgcmV0dXJuIG51bGw7Ci0gICAgCi0gICAgQ29tbWFuZEZyYWdtZW50ICAgICAgICAgICAgICAgZnJhZ21lbnQgPSAoQ29tbWFuZEZyYWdtZW50KWZyYWdtZW50c18uZ2V0KCBmYWN0b3J5ICk7Ci0gICAgCi0gICAgaWYoIGZyYWdtZW50ID09IG51bGwgKQotICAgIHsKLSAgICAgIGZyYWdtZW50ID0gZmFjdG9yeS5jcmVhdGUoKS5jcmVhdGUoKTsKLSAgICAgIGZyYWdtZW50c18ucHV0KCBmYWN0b3J5LCBmcmFnbWVudCApOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gIGZyYWdtZW50OwotICB9Ci0gIAotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQjZ2V0TmV4dFN1YkZyYWdtZW50KG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudCkKLSAgICovCi0gIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgZ2V0TmV4dFN1YkZyYWdtZW50KENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCkgCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgLyoqCi0gICAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCNjbG9uZSgpCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgCi0gIHsKLSAgICByZXR1cm4gbmV3IEV4dGVuc2lvbkZyYWdtZW50KCB0aGlzICk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0ZyYWdtZW50TGlzdGVuZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0ZyYWdtZW50TGlzdGVuZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBkZTdlOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9GcmFnbWVudExpc3RlbmVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQ7Ci0KLS8qKgotICogVGhpcyBpbnRlcmZhY2Ugc2hvdWxkIGJlIGltcGxlbWVudCBmb3IgY29kZSB0aGF0IG5lZWRzIHRvIGxpc3RlbiB0byBmcmFnbWVudHMKLSAqIHRoYXQgYXJlIGJlaW5nIHRyYXZlcnNlIGJ5IHRoZSBDb21tYW5kRnJhZ21lbnRFbmdpbmUuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIEZyYWdtZW50TGlzdGVuZXIgCi17Ci0gIC8qCi0gICAqIE5vdGlmaWVzIHRoaXMgbGlzdGVuZXIgdGhhdCBhIGNvbW1hbmRGcmFnbWVudCBpcyBiZWluZyB2aXNpdGVkIGR1cmluZwotICAgKiBhIHRyYXZlcnNhbC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIG5vdGlmeSggQ29tbWFuZEZyYWdtZW50IGNvbW1hbmRGcmFnbWVudCApOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvTG9vcENvbmRpdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvTG9vcENvbmRpdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDNiMWExLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0xvb3BDb25kaXRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudDsKLQotLyoqCi0gICogVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgd2hlbiBhIGNvbmRpdGlvbmFsIG9iamVjdCBuZWVkcyB0byBiZSByZXR1cm5lZC4KLSoqLwotcHVibGljIGludGVyZmFjZSBMb29wQ29uZGl0aW9uCi17Ci0gIC8qKgotICAgICogRXZhbHVhdGVzIGEgbG9vcCBjb25kaXRpb24uCi0gICAgKgotICAgICogQHBhcmFtIGxvb3AgdGhlIGxvb3AgZnJhZ21lbnQgdGhhdCBpcyBiZWluZyBldmFsdWF0ZWQuCi0gICAgKiBAcGFyYW0gZnJhZ21lbnQgdGhlIGNoaWxkIGZyYWdtZW50IG9mIHRoZSBsb29wIAotICAgICogICAgICAgIHVuZGVyIGV2YWx1YXRpb24uICBOb3RlOiBmcmFnbWVudCBjYW4gYmUgbnVsbC4KLSAgICAqIEByZXR1cm4gcmV0dXJucyBhbiBvYmplY3QgYmFzZWQgb24gc29tZSBldmFsdWF0ZWQgY29uZGl0aW9uLgotICAqKi8KLSAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoIExvb3BGcmFnbWVudCBsb29wLCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L0xvb3BGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvTG9vcEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzOTcxYTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvTG9vcEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLlJhbmdlVmVjdG9yOwotCi0KLS8qKgotICAqIFRoaXMgY2xhc3MgcmV0dXJucyBhIGR5bmFtaWNhbGx5IGRldGVybWluZWQgbnVtYmVyIG9mCi0gICogZnJhZ21lbnRzLiAgVGhpcyBsb29wIHdpbGwgcmV0dXJuIHRoZSBmcmFnbWVudCBwYXJhbWV0ZXIKLSAgKiBhcyBsb25nIGFzIHRoZSBzdG9wQ29uZGl0aW9uIGV2YWx1YXRlcyB0byBmYWxzZS4gIE90aGVyd2lzZSwKLSAgKiBudWxsIGlzIHJldHVybmVkLgotKiovCi1wdWJsaWMgY2xhc3MgTG9vcEZyYWdtZW50IGV4dGVuZHMgQWJzdHJhY3RDb21tYW5kRnJhZ21lbnQKLXsKLSAgcHJpdmF0ZSBMb29wQ29uZGl0aW9uICAgc3RvcENvbmRpdGlvbl87Ci0gIHByaXZhdGUgQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50XzsKLSAgcHJpdmF0ZSBSYW5nZVZlY3RvciAgICAgZnJhZ21lbnRIaXN0b3J5XzsKLQotICAvKioKLSAgICAqIENvcHkgY29udHJ1Y3RvciBmb3IgdGhpcyBmcmFnbWVudC4KLSAgKiovCi0gIHByb3RlY3RlZCBMb29wRnJhZ21lbnQoIExvb3BGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgICB0aGlzKCBmcmFnbWVudC5mcmFnbWVudF8sCi0gICAgCSAgZnJhZ21lbnQuc3RvcENvbmRpdGlvbl8sCi0gICAgCSAgZnJhZ21lbnQuZ2V0Q29tbWFuZEZhY3RvcnkoKSwKLSAgICAJICBmcmFnbWVudC5nZXRJZCgpICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBMb29wRnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIExvb3BDb25kaXRpb24gICBzdG9wQ29uZGl0aW9uICkKLSAgewotICAgIHRoaXMoIGZyYWdtZW50LCBzdG9wQ29uZGl0aW9uLCBudWxsLCAiIiApOwotICB9ICAgICAgICAgICAgICAgICAgICAgICAKLSAgCi0gIC8qKgotICAgICogQHBhcmFtIGZyYWdtZW50IHRoZSBmcmFnbWVudCB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgYnkgdGhlIGxvb3AuCi0gICAgKiBAcGFyYW0gc3RvcENvbmRpdGlvbiB3aGVuIGZhbHNlIHRoZSBmcmFnbWVudCB3aWxsIGJlIHJldHVybmVkLCAKLSAgICAqIG90aGVyd2lzZSBudWxsIGlzIHJldHVybmVkLgotICAgICogQHBhcmFtIHN0YXRlIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIGNvbmRpdGlvbi4KLSAgICAqIEBwYXJhbSBjb21tYW5kIHRoZSBleGVjdXRhYmxlIGNvbW1hbmQgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICoqLwotICBwdWJsaWMgTG9vcEZyYWdtZW50KCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIExvb3BDb25kaXRpb24gICBzdG9wQ29uZGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kRmFjdG9yeSAgY29tbWFuZEZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyAgICAgICAgICBpZCAgICkKLSAgewotICAgIHN1cGVyKCBjb21tYW5kRmFjdG9yeSwgaWQgKTsKLQotICAgIGZyYWdtZW50XyAgICAgICAgPSBmcmFnbWVudDsKLSAgICBzdG9wQ29uZGl0aW9uXyAgID0gc3RvcENvbmRpdGlvbjsKLSAgICBmcmFnbWVudEhpc3RvcnlfID0gbmV3IFJhbmdlVmVjdG9yKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgICogTWFrZXMgYSBjb3B5IG9mIHRoZSBDb21tYW5kRnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIGEgY29weSBvZiB0aGlzIGZyYWdtZW50LgotICAqKi8KLSAgcHVibGljIE9iamVjdCBjbG9uZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IExvb3BGcmFnbWVudCggdGhpcyApOwotICB9Ci0KLSAgLyoqCi0gICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZnJhZ21lbnQKLSAgICAqCi0gICAgKiBAcGFyYW0gZnJhZ21lbnQgdGhlIGZyYWdtZW50IHRvIHNlYXJjaC4KLSAgICAqIEByZXR1cm4gdGhlIGluZGV4IG9mIHRoaXMgZnJhZ21lbnQuCi0gICoqLwotICBwdWJsaWMgaW50IGluZGV4T2YoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgICByZXR1cm4gZnJhZ21lbnRIaXN0b3J5Xy5pbmRleE9mKCBmcmFnbWVudCApOwotICB9Ci0KLQotICAvKiogCi0gICAgKiBHZXRzIHRoZSBmaXJzdCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4KLSAgICAqCi0gICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LiAgUmV0dXJucwotICAgICogbnVsbCB3aGVuIHRoZXJlIGlzIG5vIGZpcnN0IGNoaWxkLgotICAqKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudCBnZXRGaXJzdFN1YkZyYWdtZW50KCkKLSAgeyAgICAKLSAgICByZXR1cm4gZ2V0TmV4dFN1YkZyYWdtZW50KCBudWxsICk7Ci0gIH0KLQotICAvKioKLSAgICAqIEdldHMgdGhlIG5leHQgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBuZXh0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LiAgUmV0dXJucyBudWxsCi0gICAgKiB3aGVuIHRoZXJlIGlzIG5vIG5leHQgY2hpbGQuCi0gICoqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGdldE5leHRTdWJGcmFnbWVudCggQ29tbWFuZEZyYWdtZW50IGZyYWcgKQotICB7Ci0gICAgQ29tbWFuZEZyYWdtZW50IG5leHRGcmFnICA9IG51bGw7Ci0gICAgCi0gICAgaWYoIHN0b3BDb25kaXRpb25fLmV2YWx1YXRlKCB0aGlzLCBmcmFnICkgKQotICAgIHsKLSAgICAgIC8vIFRoZSBzdG9wIGNvbmRpdGlvbiBoYXMgYmVlbiBtZXQuCi0gICAgICAvLyBEbyBub3RoaW5nLgotICAgIH0KLSAgICBlbHNlCi0gICAgeyAgICAgIAotICAgICAgaW50IGZyYWdJbmRleCA9IGluZGV4T2YoIGZyYWcgKTsKLQotICAgICAgLy8gTm90ZTogd2hlbiBmcmFnbWVudCA9PSBudWxsIHRoZSBmcmFnSW5kZXgKLSAgICAgIC8vICAgICAgIHNob3VsZCBiZSAtMS4gIFRoZXJlZm9yZSwgaWYgdGhlcmUKLSAgICAgIC8vICAgICAgIGlzIGFscmVhZHkgYSBmaXJzdCBmcmFnbWVudCBpbgotICAgICAgLy8gICAgICAgZnJhZ21lbnRIaXN0b3J5IHRoYXQgd2lsbCBiZSByZXR1cm5lZC4KLSAgICAgIGlmKCBmcmFnSW5kZXggKyAxIDwgZnJhZ21lbnRIaXN0b3J5Xy5zaXplKCkgKQotICAgICAgewotICAgICAgICAvLyBXZSBoYXZlIGEgY29weSBvZiB0aGUgZnJhZ21lbnQgYWxyZWFkeS4KLSAgICAgICAgbmV4dEZyYWcgPSAoQ29tbWFuZEZyYWdtZW50KShmcmFnbWVudEhpc3RvcnlfLmVsZW1lbnRBdCggZnJhZ0luZGV4ICsgMSApKTsgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIG5leHRGcmFnID0gKENvbW1hbmRGcmFnbWVudCkoZnJhZ21lbnRfLmNsb25lKCkpOwotICAgICAgICBmcmFnbWVudEhpc3RvcnlfLmFkZCggbmV4dEZyYWcgKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbmV4dEZyYWc7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L1NlcXVlbmNlRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL2ZyYWdtZW50L1NlcXVlbmNlRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEwY2U2Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9TZXF1ZW5jZUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50OwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuQ29tbWFuZEZhY3Rvcnk7Ci0KLQotLyoqCi0gICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgc2VxdWVuY2Ugb2YgQ29tbWFuZEZyYWdtZW50cy4KLSoqLwotcHVibGljIGNsYXNzIFNlcXVlbmNlRnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdENvbW1hbmRGcmFnbWVudAotewotICBwcml2YXRlIExpc3QgZnJhZ21lbnRMaXN0XzsKLQotICBwcm90ZWN0ZWQgU2VxdWVuY2VGcmFnbWVudCggU2VxdWVuY2VGcmFnbWVudCBmcmFnICkKLSAgewotICAJc3VwZXIoIGZyYWcuZ2V0Q29tbWFuZEZhY3RvcnkoKSwgZnJhZy5nZXRJZCgpICk7Ci0gIAkKLSAgICBmcmFnbWVudExpc3RfID0gbmV3IFZlY3RvcigpOwotICAgIAotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBmcmFnLmZyYWdtZW50TGlzdF8uc2l6ZSgpOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBPYmplY3QgbmV3RnJhZyA9ICgoQ29tbWFuZEZyYWdtZW50KWZyYWcuZnJhZ21lbnRMaXN0Xy5nZXQoaW5kZXgpKS5jbG9uZSgpOwotICAgICAgZnJhZ21lbnRMaXN0Xy5hZGQoIG5ld0ZyYWcgKTsKLSAgICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyBTZXF1ZW5jZUZyYWdtZW50KCBDb21tYW5kRnJhZ21lbnRbXSBmcmFnbWVudHMsIAotCQkJCQkJICAgQ29tbWFuZEZhY3RvcnkgICAgY29tbWFuZEZhY3RvcnksIAotCQkJCQkgICAgICAgU3RyaW5nICAgICAgICAgICAgaWQgICkKLSAgewotICAJc3VwZXIoIGNvbW1hbmRGYWN0b3J5LCBpZCApOwotICAJCi0gICAgaWYoIGZyYWdtZW50cyAhPSBudWxsICkKLSAgICB7Ci0gICAgICBmcmFnbWVudExpc3RfID0gQXJyYXlzLmFzTGlzdCggZnJhZ21lbnRzICk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBmcmFnbWVudExpc3RfID0gbmV3IFZlY3RvcigpOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIFNlcXVlbmNlRnJhZ21lbnQoKQotICB7Ci0gIAlzdXBlciggbnVsbCwgIiIgKTsKLSAgCQotICAJZnJhZ21lbnRMaXN0XyA9IG5ldyBWZWN0b3IoKTsKLSAgfQotCi0gIC8qKgotICAgICogQXBwZW5kcyBhIGZyYWdtZW50IHRvIHRoZSBzZXF1ZW5jZS4gCi0gICoqLwotICBwdWJsaWMgdm9pZCBhZGQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgICBmcmFnbWVudExpc3RfLmFkZCggZnJhZ21lbnQgKTsKLSAgfQotICAKLSAgLyoqCi0gICAgKiBNYWtlcyBhIGNvcHkgb2YgdGhlIENvbW1hbmRGcmFnbWVudC4KLSAgICAqCi0gICAgKiBAcmV0dXJuIHJldHVybnMgYSBjb3B5IG9mIHRoaXMgZnJhZ21lbnQuCi0gICoqLwotICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKLSAgewotICAgIHJldHVybiBuZXcgU2VxdWVuY2VGcmFnbWVudCggdGhpcyApOwotICB9Ci0KLSAgLyoqIAotICAgICogR2V0cyB0aGUgZmlyc3QgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMKLSAgICAqIG51bGwgd2hlbiB0aGVyZSBpcyBubyBmaXJzdCBjaGlsZC4KLSAgKiovCi0gIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgZ2V0Rmlyc3RTdWJGcmFnbWVudCgpCi0gIHsKLSAgICBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgPSBudWxsOwotCi0gICAgaWYoIGZyYWdtZW50TGlzdF8gPT0gbnVsbCB8fCBmcmFnbWVudExpc3RfLnNpemUoKSA9PSAwICkKLSAgICB7Ci0gICAgICBmcmFnbWVudCA9IG51bGw7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7ICAgICAgCi0gICAgICBmcmFnbWVudCA9IChDb21tYW5kRnJhZ21lbnQpKCBmcmFnbWVudExpc3RfLmdldCgwKSApOwotICAgIH0KLQotICAgIHJldHVybiBmcmFnbWVudDsgICAgCi0gIH0KLQotICAvKioKLSAgICAqIEdldHMgdGhlIG5leHQgY2hpbGQgZnJhZ21lbnQgZm9yIHRoaXMgZnJhZ21lbnQuCi0gICAgKgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBuZXh0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LiAgUmV0dXJucyBudWxsCi0gICAgKiB3aGVuIHRoZXJlIGlzIG5vIG5leHQgY2hpbGQuCi0gICoqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGdldE5leHRTdWJGcmFnbWVudCggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICkKLSAgewotICAgIGludCBpbmRleCA9IGZyYWdtZW50TGlzdF8uaW5kZXhPZiggZnJhZ21lbnQgKTsKLQotICAgIGlmKCBpbmRleCA9PSAtMSApCi0gICAgewotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiggIkZyYWdtZW50IG5vdCBmb3VuZCBpbiBzZXF1ZW5jZS4iKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGluZGV4Kys7Ci0KLSAgICAgIGlmKCBpbmRleCA+PSBmcmFnbWVudExpc3RfLnNpemUoKSApCi0gICAgICB7Ci0gICAgICAgIC8vIFRoZXJlIGlzIG5vdGhpbmcgZm9sbG93aW5nIHRoaXMgZnJhZ21lbnQgc28gcmV0dXJuIG51bGw7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBSZXR1cm4gdGhlIG5leHQgZnJhZ21lbnQuCi0gICAgICAgIHJldHVybiAoQ29tbWFuZEZyYWdtZW50KShmcmFnbWVudExpc3RfLmdldCggaW5kZXggKSk7Ci0gICAgICB9Ci0gICAgfQotICB9CQotfSAgCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9TaW1wbGVGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvZnJhZ21lbnQvU2ltcGxlRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUzZWJhOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9mcmFnbWVudC9TaW1wbGVGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotLyoqCi0gICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGFuIGVtcHR5IG9mIFdpemFyZEZyYWdtZW50LgotKiovCi1wdWJsaWMgY2xhc3MgU2ltcGxlRnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdENvbW1hbmRGcmFnbWVudAotewotICBwdWJsaWMgU2ltcGxlRnJhZ21lbnQoKQotICB7Ci0gICAgdGhpcyggKENvbW1hbmRGYWN0b3J5KW51bGwsICIiICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTaW1wbGVGcmFnbWVudCggU3RyaW5nIGlkICkKLSAgewotICAgIHRoaXMoIChDb21tYW5kRmFjdG9yeSludWxsLCBpZCApOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBTaW1wbGVGcmFnbWVudCggZmluYWwgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gb3BlcmF0aW9uLCBTdHJpbmcgaWQgKQotICB7Ci0gICAgc3VwZXIoIG5ldyBDb21tYW5kRmFjdG9yeSgpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBwdWJsaWMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gY3JlYXRlKCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgfSwgaWQgKTsgIAotICB9Ci0gIAotICBwdWJsaWMgU2ltcGxlRnJhZ21lbnQoIENvbW1hbmRGYWN0b3J5IGNvbW1hbmRGYWN0b3J5LCBTdHJpbmcgaWQgKQotICB7Ci0gIAlzdXBlciggY29tbWFuZEZhY3RvcnksIGlkICk7Ci0gIH0KLSAgCi0gIC8qKgotICAgICogQ29weSBjb25zdHJ1Y3RvciBmb3IgZnJhZ21lbnQuCi0gICoqLwotICBwcm90ZWN0ZWQgU2ltcGxlRnJhZ21lbnQoIFNpbXBsZUZyYWdtZW50IGZyYWdtZW50ICkKLSAgewotICAgIHN1cGVyKCBmcmFnbWVudC5nZXRDb21tYW5kRmFjdG9yeSgpLCBmcmFnbWVudC5nZXRJZCgpICk7Ci0gIH0KLSAgICAKLSAgLyoqCi0gICAgKiBBbGwgd2l6YXJkIGZyYWdtZW50cyBuZWVkIHRvIGJlIGNsb25lYWJsZS4KLSAgKiovCi0gIHB1YmxpYyBPYmplY3QgY2xvbmUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBTaW1wbGVGcmFnbWVudCggdGhpcyApOwotICB9Ci0KLQotICAvKiogCi0gICAgKiBHZXRzIHRoZSBmaXJzdCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4KLSAgICAqCi0gICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LiAgUmV0dXJucwotICAgICogbnVsbCB3aGVuIHRoZXJlIGlzIG5vIGZpcnN0IGNoaWxkLgotICAqKi8KLSAgcHVibGljIENvbW1hbmRGcmFnbWVudCBnZXRGaXJzdFN1YkZyYWdtZW50KCl7IHJldHVybiBudWxsOyB9Ci0KLSAgLyoqCi0gICAgKiBHZXRzIHRoZSBuZXh0IGNoaWxkIGZyYWdtZW50IGZvciB0aGlzIGZyYWdtZW50LgotICAgICogU2luY2UgdGhpcyBpcyBhIHNpbXBsZSBmcmFnbWVudCwgdGhlcmUgaXMgbm8gbmV4dCBmcmFnbWVudAotICAgICogc28gd2Ugd2lsbCBhbHdheXMgcmV0dXJuIG51bGwuIAotICAgICoKLSAgICAqIEByZXR1cm4gcmV0dXJucyB0aGUgbmV4dCBjaGlsZCBmcmFnbWVudCBmb3IgdGhpcyBmcmFnbWVudC4gIFJldHVybnMgbnVsbAotICAgICogd2hlbiB0aGVyZSBpcyBubyBuZXh0IGNoaWxkLgotICAqKi8gIAotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50IGdldE5leHRTdWJGcmFnbWVudCggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICl7IHJldHVybiBudWxsOyB9Ci19ICAKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL3JlZ2lzdHJ5L0NvbW1hbmRSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvcmVnaXN0cnkvQ29tbWFuZFJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNmVmODcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvcmVnaXN0cnkvQ29tbWFuZFJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUucmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnRGYWN0b3J5RmFjdG9yeTsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBwcm92aWRlcyBhIHdheSB0byBjcmVhdGUgYSBDb21tYW5kRnJhZ21lbnRGYWN0b3J5RmFjdG9yeQotICogZnJvbSBhbiBhcnJheSBvZiBpZHMuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIENvbW1hbmRSZWdpc3RyeSAKLXsgIAotICAvKioKLSAgICogQ3JlYXRlcyBhIENvbW1hbmRGcmFnbWVudEZhY3RvcnlGYWN0b3J5IGZyb20gYW4gYXJyYXkgb2YgaWRzLgotICAgKiAKLSAgICogQHBhcmFtIGlkcyB0aGUgaWRzLgotICAgKiBAcmV0dXJuIHRoZSBDb21tYW5kRnJhZ21lbnRGYWN0b3J5RmFjdG9yeSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50RmFjdG9yeUZhY3RvcnkgZ2V0RmFjdG9yeUZhY3RvcnkoIFN0cmluZ1tdIGlkcyApOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvc2VsZWN0aW9uL0Jvb2xlYW5TZWxlY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL3NlbGVjdGlvbi9Cb29sZWFuU2VsZWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ODA1YTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvc2VsZWN0aW9uL0Jvb2xlYW5TZWxlY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKiBUaGlzIGNsYXNzIGNvbWJpbmVzIGEgc3RyaW5nIHdpdGggYSBib29sZWFuIHZhbHVlLiAgVGhpcyBpcwotICogdXNlZnVsIGZvciBzdG9yaW5nIHRoZSBzdGF0ZSBkYXRhIGZvciBhIGJvb2xlYW4gc2VsZWN0aW9uIGxpc3QuCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgQm9vbGVhblNlbGVjdGlvbgotewotICBwcml2YXRlIFN0cmluZyAgdmFsdWVfOwotICBwcml2YXRlIGJvb2xlYW4gc2VsZWN0ZWRfOwotICAKLSAgcHVibGljIEJvb2xlYW5TZWxlY3Rpb24oIFN0cmluZyB2YWx1ZSwgYm9vbGVhbiBzZWxlY3RlZCApCi0gIHsKLSAgICB2YWx1ZV8gICAgPSB2YWx1ZTsKLSAgICBzZWxlY3RlZF8gPSBzZWxlY3RlZDsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIEdldCB0aGUgc3RyaW5nIHZhbHVlLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRWYWx1ZSgpCi0gIHsKLSAgICByZXR1cm4gdmFsdWVfOwotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gR2V0IHRoZSBib29sZWFuIHZhbHVlIGZvciB0aGlzIHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzU2VsZWN0ZWQoKQotICB7Ci0gICAgcmV0dXJuIHNlbGVjdGVkXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvc2VsZWN0aW9uL0Nob2ljZXNUb1N0cmluZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvc2VsZWN0aW9uL0Nob2ljZXNUb1N0cmluZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzMzYzZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL3NlbGVjdGlvbi9DaG9pY2VzVG9TdHJpbmcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5zZWxlY3Rpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyOwotCi0vKioKLSAqIFRoaXMgdHJhbnNmb3JtZXIgY2xhc3Mgc2VsZWN0cyBhIHN0cmluZyBhdCBhIHBhcnRpY3VsYXIgbGV2ZWwKLSAqIGluIGEgU2VsZWN0aW9uTGlzdENob2ljZXMgY2xhc3MuCi0gKi8KLXB1YmxpYyBjbGFzcyBDaG9pY2VzVG9TdHJpbmcgaW1wbGVtZW50cyBUcmFuc2Zvcm1lcgotewotICBwcml2YXRlIGludCBsZXZlbF87Ci0gIAotICBwdWJsaWMgQ2hvaWNlc1RvU3RyaW5nKCBpbnQgbGV2ZWwgKQotICB7Ci0gICAgbGV2ZWxfID0gbGV2ZWw7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyI3RyYW5zZm9ybShqYXZhLmxhbmcuT2JqZWN0KQotICAgKi8KLSAgcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oIE9iamVjdCB2YWx1ZSApCi0gIHsKLSAgICBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBjaG9pY2VzID0gKFNlbGVjdGlvbkxpc3RDaG9pY2VzKXZhbHVlOwotICAgIAotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBsZXZlbF87IGluZGV4KysgKQotICAgIHsKLSAgICAgIGNob2ljZXMgPSBjaG9pY2VzLmdldENob2ljZSgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gY2hvaWNlcy5nZXRMaXN0KCkuZ2V0U2VsZWN0aW9uKCk7Ci0gIH0KLQotICBwdWJsaWMgU2VsZWN0aW9uTGlzdCB0cmFuc2Zvcm0oIFNlbGVjdGlvbkxpc3RDaG9pY2VzIGNob2ljZXMgKQotICB7Ci0gICAgcmV0dXJuIChTZWxlY3Rpb25MaXN0KXRyYW5zZm9ybSggKE9iamVjdCljaG9pY2VzICk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL3NlbGVjdGlvbi9EeW5hbWljTGlzdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvc2VsZWN0aW9uL0R5bmFtaWNMaXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZWM3MWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvc2VsZWN0aW9uL0R5bmFtaWNMaXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuc2VsZWN0aW9uOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotLyoqCi0gKiBUaGlzIGlzIGEgRHluYW1pYyB2ZXJzaW9uIG9mIHRoZSBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBjbGFzcy4KLSAqLwotcHVibGljIGNsYXNzIER5bmFtaWNMaXN0IAotewotICBwcml2YXRlIFZlY3RvciBzdHJpbmdMaXN0XyA9IG5ldyBWZWN0b3IoKTsKLSAgcHJpdmF0ZSBWZWN0b3IgZHluYW1pY0xpc3RWZWN0b3JMaXN0XyA9IG5ldyBWZWN0b3IoKTsKLSAgCi0gIC8qKgotICAgKiBBZGRzIGFuIGVudHJ5IGludG8gdGhlIGR5bmFtaWMgbGlzdC4KLSAgICogCi0gICAqIEBwYXJhbSB2YWx1ZXMgdGhlIHN0cmluZyB2YWx1ZXMgdGhhdCBsZWFkIHRvIHRoZSB0YXJnZXQuCi0gICAqIEBwYXJhbSB0YXJnZXQgdGhlIHRhcmdldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZCggU3RyaW5nW10gdmFsdWVzLCBPYmplY3QgdGFyZ2V0ICkKLSAgewotICAgIER5bmFtaWNMaXN0IGN1cnJlbnRMaXN0ID0gdGhpczsKLSAgICAKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgewotICAgICAgU3RyaW5nIHZhbHVlICAgICAgPSB2YWx1ZXNbaW5kZXhdOwotICAgICAgaW50ICAgIGxlbmd0aCAgICAgPSBjdXJyZW50TGlzdC5zdHJpbmdMaXN0Xy5zaXplKCk7Ci0gICAgICBpbnQgICAgZm91bmRJbmRleCA9IC0xOwotICAgICAgCi0gICAgICAvLyBGaW5kIHRoZSBzdHJpbmcgaW4gdGhlIGN1cnJlbnQgbGlzdC4KLSAgICAgIGZvciggaW50IHNlYXJjaEluZGV4ID0gMDsgc2VhcmNoSW5kZXggPCBsZW5ndGg7IHNlYXJjaEluZGV4KysgKQotICAgICAgewotICAgICAgICBTdHJpbmcgc3RyaW5nID0gKFN0cmluZyljdXJyZW50TGlzdC5zdHJpbmdMaXN0Xy5lbGVtZW50QXQoIHNlYXJjaEluZGV4ICk7IAotICAgICAgICAKLSAgICAgICAgaWYoIHN0cmluZy5lcXVhbHMoIHZhbHVlICkgKSAKLSAgICAgICAgewotICAgICAgICAgIGZvdW5kSW5kZXggPSBzZWFyY2hJbmRleDsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICBpZiggZm91bmRJbmRleCA9PSAtMSApCi0gICAgICB7Ci0gICAgICAgIC8vIFdlIGhhdmUgYSBuZXcgc3RyaW5nIHNvIGFkZCBpdCB0byB0aGUgbGlzdC4KLSAgICAgICAgY3VycmVudExpc3Quc3RyaW5nTGlzdF8uYWRkKCB2YWx1ZSApOwotICAgICAgICBjdXJyZW50TGlzdC5keW5hbWljTGlzdFZlY3Rvckxpc3RfLmFkZCggbmV3IER5bmFtaWNMaXN0KCkgKTsKLSAgICAgICAgZm91bmRJbmRleCA9IGxlbmd0aDsKLSAgICAgIH0KLSAgICAgIAotICAgICAgY3VycmVudExpc3QgPSAoRHluYW1pY0xpc3QpY3VycmVudExpc3QuZHluYW1pY0xpc3RWZWN0b3JMaXN0Xy5lbGVtZW50QXQoIGZvdW5kSW5kZXggKTsgICAgICAgCi0gICAgfQotICAgIAotICAgIGN1cnJlbnRMaXN0LmR5bmFtaWNMaXN0VmVjdG9yTGlzdF8uYWRkKCB0YXJnZXQgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgYSBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBvYmplY3QgZnJvbSB0aGlzIER5bmFtaWNMaXN0Ci0gICAqIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTZWxlY3Rpb25MaXN0Q2hvaWNlcyB0b0xpc3RDaG9pY2VzKCkKLSAgewotICAgIFNlbGVjdGlvbkxpc3QgbGlzdCAgID0gbmV3IFNlbGVjdGlvbkxpc3QoIChTdHJpbmdbXSlzdHJpbmdMaXN0Xy50b0FycmF5KCBuZXcgU3RyaW5nWzBdICksIDApOwotICAgIGludCAgICAgICAgICAgbGVuZ3RoID0gZHluYW1pY0xpc3RWZWN0b3JMaXN0Xy5zaXplKCk7Ci0gICAgVmVjdG9yICAgICAgICB2ZWN0b3IgPSBuZXcgVmVjdG9yKCk7IAotICAgIAotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBkeW5hbWljTGlzdFZlY3Rvckxpc3RfLmVsZW1lbnRBdChpbmRleCk7Ci0gICAgICAKLSAgICAgIGlmKCBvYmogaW5zdGFuY2VvZiBEeW5hbWljTGlzdCApCi0gICAgICB7Ci0gICAgICAgIHZlY3Rvci5hZGQoICgoRHluYW1pY0xpc3Qpb2JqKS50b0xpc3RDaG9pY2VzKCkgKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgdmVjdG9yLmFkZCggb2JqICk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBuZXcgU2VsZWN0aW9uTGlzdENob2ljZXMoIGxpc3QsIHZlY3RvciApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9zZWxlY3Rpb24vU2VsZWN0aW9uTGlzdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvc2VsZWN0aW9uL1NlbGVjdGlvbkxpc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA4NTc3My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9zZWxlY3Rpb24vU2VsZWN0aW9uTGlzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnNlbGVjdGlvbjsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIHN0b3JlcyBhIGxpc3Qgc3RyaW5ncyBhbG9uZyB3aXRoIGEgc2VsZWN0aW9uSW5kZXggd2hpY2gKLSAqIHN0b3JlcyB0aGUgY3VycmVudCBzdHJpbmcgdGhhdCBzZWxlY3RlZC4gIFRoZXJlIGlzIGFsc28gYSBzZWxlY3Rpb24KLSAqIHZhbHVlLiAgSWYgdGhpcyB2YWx1ZSBpcyBvbmUgb2YgdGhlIHN0cmluZ3MgaW4gdGhlIHRoZSBzdHJpbmcgbGlzdAotICogdGhlbiBzZWxlY3Rpb25JbmRleCB3aWxsIGNvbnRhaW4gdGhlIGluZGV4IG9mIHRoaXMgc3RyaW5nLiAgSWYgaXQKLSAqIGlzIG5vdCBpbiB0aGUgbGlzdCB0aGVuIHRoZSBzZWxlY3Rpb25WYWx1ZSBzdHJpbmcgd2lsbCBjb250YWluIHRoaXMKLSAqIHZhbHVlIGFuZCBzZWxlY3Rpb25JbmRleCB3aWxsIGJlIHNldCB0byAtMS4gIFRoaXMgY2xhc3MgY2FuIGJlCi0gKiB1c2VkIHRvIHN0b3JlIHRoZSBzdGF0ZSBkYXRhIGZvciBhIENvbWJvIGJveC4KLSAqLwotcHVibGljIGNsYXNzIFNlbGVjdGlvbkxpc3QKLXsKLSAgcHJpdmF0ZSBpbnQgICAgICBzZWxlY3Rpb25JbmRleF87Ci0gIHByaXZhdGUgU3RyaW5nW10gbGlzdF87Ci0gIHByaXZhdGUgU3RyaW5nICAgc2VsZWN0aW9uVmFsdWVfOwotICAKLSAgcHVibGljIFNlbGVjdGlvbkxpc3QoIFN0cmluZ1tdIGxpc3QsIGludCBzZWxlY3Rpb25JbmRleCApCi0gIHsKLSAgICBsaXN0XyAgICAgICAgICAgPSBsaXN0OwotICAgIHNlbGVjdGlvbkluZGV4XyA9IHNlbGVjdGlvbkluZGV4OwotICB9Ci0gIAotICAvKioKLSAgICogU2V0cyB0aGUgc2VsZWN0aW9uIHZhbHVlIGZvciB0aGlzIG9iamVjdC4KLSAgICogCi0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25WYWx1ZSggU3RyaW5nIHZhbHVlICkKLSAgewotICAgIHNlbGVjdGlvblZhbHVlXyA9IHZhbHVlOyAgCi0gICAgc2VsZWN0aW9uSW5kZXhfID0gLTE7Ci0gICAgCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGxpc3RfLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgewotICAgICAgaWYoIHZhbHVlLmVxdWFscyggbGlzdF9baW5kZXhdICkgKQotICAgICAgewotICAgICAgICBzZWxlY3Rpb25JbmRleF8gPSBpbmRleDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9IAotICAKLSAgLyoKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBzdHJpbmcgbGlzdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRMaXN0KCkKLSAgewotICAgIHJldHVybiBsaXN0XzsKLSAgfQotICAKLSAgLyoKLSAgICogU2V0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHN0cmluZyBpbiB0aGUgbGlzdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEluZGV4KCBpbnQgaW5kZXggKQotICB7Ci0gICAgc2VsZWN0aW9uSW5kZXhfID0gaW5kZXg7Ci0gICAgc2VsZWN0aW9uVmFsdWVfID0gbnVsbDsKLSAgfQotIAotICAvKgotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IHN0cmluZy4gIFRoZSB2YWx1ZQotICAgKiB3aWxsIGJlIC0xIGlmIHRoZSBzZWxlY3Rpb24gdmFsdWUgaXMgbm90IGluIHRoZSBzdHJpbmcgbGlzdC4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0SW5kZXgoKQotICB7Ci0gICAgcmV0dXJuIHNlbGVjdGlvbkluZGV4XzsgIAotICB9Ci0gIAotICAvKgotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGN1cnJlbnQgc3RyaW5nIHNlbGVjdGlvbiBmb3IgdGhpcyBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdGlvbigpCi0gIHsKLSAgICBpZiggc2VsZWN0aW9uVmFsdWVfICE9IG51bGwgKSByZXR1cm4gc2VsZWN0aW9uVmFsdWVfOwotICAgIAotICAgIGlmKCBzZWxlY3Rpb25JbmRleF8gPT0gLTEgfHwgc2VsZWN0aW9uSW5kZXhfID4gbGlzdF8ubGVuZ3RoLTEgKQotICAgIHsKLSAgICAgIHJldHVybiAiIjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJldHVybiBsaXN0X1sgc2VsZWN0aW9uSW5kZXhfIF07Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS9zZWxlY3Rpb24vU2VsZWN0aW9uTGlzdENob2ljZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL3NlbGVjdGlvbi9TZWxlY3Rpb25MaXN0Q2hvaWNlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzIxMGJkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb3JlL3NlbGVjdGlvbi9TZWxlY3Rpb25MaXN0Q2hvaWNlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5zZWxlY3Rpb247Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi0vKgotICogVGhpcyBjbGFzcyBjYW4gYmUgdXNlZCB0byBzdG9yZSBhIGhpZXJhcmNoeSBvZiBTZWxlY3Rpb25MaXN0Ci0gKiBvYmplY3RzLgotICovCi1wdWJsaWMgY2xhc3MgU2VsZWN0aW9uTGlzdENob2ljZXMKLXsKLSAgcHJpdmF0ZSBTZWxlY3Rpb25MaXN0IHNlbGVjdGlvbkxpc3RfOwotICBwcml2YXRlIFZlY3RvciAgICAgICAgY2hvaWNlc187Ci0gIHByaXZhdGUgU2VsZWN0aW9uTGlzdCBuZXdWYWx1ZVNlbGVjdGlvbkxpc3RfOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gbGlzdCAgICAgVGhlIHNlbGVjdGlvbiBsaXN0LgotICAgKiBAcGFyYW0gY2hvaWNlcyAgVGhpcyBpcyBhIHZlY3RvciBvZiBTZWxlY3Rpb25MaXN0Q2hvaWVzIGFuZCBjYW4gYmUKLSAgICogICAgICAgICAgICAgICAgIG51bGwgaWYgdGhlcmUgYXJlIG5vIGNob2ljZXMuICBUaGlzIGluZGV4IG9mIGxpc3QKLSAgICogICAgICAgICAgICAgICAgIGlzIHVzZWQgdG8gaW5kZXggaW50byBjaG9pY2VzLiAgSWYgaW5kZXggaXMgLTEgdGhlbgotICAgKiAgICAgICAgICAgICAgICAgdGhlIG5ld1ZhbHVlU2VsZWN0aW9uTGlzdCBpcyB1c2VkLgotICAgKi8KLSAgcHVibGljIFNlbGVjdGlvbkxpc3RDaG9pY2VzKCBTZWxlY3Rpb25MaXN0IGxpc3QsIFZlY3RvciBjaG9pY2VzICkKLSAgewotICAgIHNlbGVjdGlvbkxpc3RfID0gbGlzdDsKLSAgICBjaG9pY2VzXyAgICAgICA9IGNob2ljZXM7Ci0gICAgCi0gICAgbmV3VmFsdWVTZWxlY3Rpb25MaXN0XyA9IG5ldyBTZWxlY3Rpb25MaXN0KCBuZXcgU3RyaW5nWzBdLCAtMSApOwotICB9Ci0gIAotICBwdWJsaWMgU2VsZWN0aW9uTGlzdENob2ljZXMoIFNlbGVjdGlvbkxpc3QgbGlzdCwgVmVjdG9yIGNob2ljZXMsIFNlbGVjdGlvbkxpc3QgbmV3TGlzdCApCi0gIHsKLSAgICB0aGlzKCBsaXN0LCBjaG9pY2VzICk7Ci0gICAgbmV3VmFsdWVTZWxlY3Rpb25MaXN0XyA9IG5ld0xpc3Q7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGN1cnJlbnQgU2VsZWN0aW9uIGxpc3QuCi0gICAqLwotICBwdWJsaWMgU2VsZWN0aW9uTGlzdCBnZXRMaXN0KCkKLSAgewotICAgIHJldHVybiBzZWxlY3Rpb25MaXN0XzsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGNob2ljZXMgZm9yIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFZlY3RvciBnZXRDaG9pY2VzKCkKLSAgewotICAgIHJldHVybiBjaG9pY2VzXzsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gbGV2ZWwgdGhlIGxldmVsIGluIHRoZSBoaWVyYXJjaHkgd2hlcmUgd2Ugd2FudCB0byBnZXQgdGhlIGNob2ljZXMuCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIHZlY3RvciBvZiBTZWxlY3Rpb25MaXN0Q2hvaWNlcy4KLSAgICovCi0gIHB1YmxpYyBWZWN0b3IgZ2V0Q2hvaWNlc0F0TGV2ZWwoIGludCBsZXZlbCApCi0gIHsKLSAgICBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBjaG9pY2VzID0gdGhpczsKLSAgICAKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgbGV2ZWw7IGluZGV4KysgKQotICAgIHsKLSAgICAgIGNob2ljZXMgPSBjaG9pY2VzLmdldENob2ljZSgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gY2hvaWNlcy5nZXRDaG9pY2VzKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBjdXJyZW50IFNlbGVjdGlvbkxpc3RDaG9pY2UKLSAgICovCi0gIHB1YmxpYyBTZWxlY3Rpb25MaXN0Q2hvaWNlcyBnZXRDaG9pY2UoKQotICB7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uSW5kZXggPSBzZWxlY3Rpb25MaXN0Xy5nZXRJbmRleCgpOwotICAgIFNlbGVjdGlvbkxpc3RDaG9pY2VzIHJlc3VsdCAgICAgICAgID0gbnVsbDsKLSAgICAKLSAgICBpZiggc2VsZWN0aW9uSW5kZXggPT0gLTEgKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IG5ldyBTZWxlY3Rpb25MaXN0Q2hvaWNlcyggbmV3VmFsdWVTZWxlY3Rpb25MaXN0XywgbnVsbCApOwotICAgIH0KLSAgICBlbHNlIGlmKCBjaG9pY2VzXyAhPSBudWxsICYmIGNob2ljZXNfLnNpemUoKSAhPSAwICkgCi0gICAgewotICAgICAgcmVzdWx0ID0gKFNlbGVjdGlvbkxpc3RDaG9pY2VzKWNob2ljZXNfLmVsZW1lbnRBdCggc2VsZWN0aW9uSW5kZXggKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gaW5kZXggdGhlIGluZGV4IG9mIHRoZSBjaG9pY2Ugd2Ugd2FudC4KLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBTZWxlY3Rpb25MaXN0Q2hvaWNlIGF0IHRoZSBpbmRleCBzcGVjaWZpZWQuCi0gICAqLwotICBwdWJsaWMgU2VsZWN0aW9uTGlzdENob2ljZXMgZ2V0Q2hvaWNlKGludCBpbmRleCkKLSAgewotICAgIFNlbGVjdGlvbkxpc3RDaG9pY2VzIHJlc3VsdCA9IG51bGw7Ci0gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBnZXRMaXN0KCkuZ2V0TGlzdCgpLmxlbmd0aCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBuZXcgU2VsZWN0aW9uTGlzdENob2ljZXMoIG5ld1ZhbHVlU2VsZWN0aW9uTGlzdF8sIG51bGwgKTsgICAgICAKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlc3VsdCA9IChTZWxlY3Rpb25MaXN0Q2hvaWNlcyljaG9pY2VzXy5lbGVtZW50QXQoIGluZGV4ICk7Ci0gICAgfQotICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvcmUvdXJpL05hdGl2ZUZpbGVDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS91cmkvTmF0aXZlRmlsZUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThhNTUwNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29yZS91cmkvTmF0aXZlRmlsZUNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUudXJpOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQudXJpLklVUkk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC51cmkuVVJJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBOYXRpdmVGaWxlQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByb3RlY3RlZCBTdHJpbmcgbmFtZTsKLQotICBwcm90ZWN0ZWQgU3RyaW5nIGRlc2NyaXB0aW9uOwotCi0gIHByb3RlY3RlZCBJVVJJW10gdXJpc1RvUmVhZDsKLQotICBwcm90ZWN0ZWQgSVVSSVtdIHVyaXNUb1dyaXRlOwotCi0gIHByb3RlY3RlZCBOYXRpdmVGaWxlQ29tbWFuZCAoKQotICB7Ci0gICAgdGhpcyhudWxsLG51bGwpOwotICB9Ci0KLSAgcHJvdGVjdGVkIE5hdGl2ZUZpbGVDb21tYW5kICggU3RyaW5nIG5hbWUsIFN0cmluZyBkZXNjcmlwdGlvbiApCi0gIHsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwotICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSAoKQotICB7Ci0gICAgcmV0dXJuIG5hbWU7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uICgpCi0gIHsKLSAgICByZXR1cm4gZGVzY3JpcHRpb247Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRVUklzVG9SZWFkICggSVVSSVtdIHVyaXNUb1JlYWQgKQotICB7Ci0gICAgdGhpcy51cmlzVG9SZWFkID0gdXJpc1RvUmVhZDsKLSAgfQotCi0gIHB1YmxpYyBJVVJJW10gZ2V0VVJJc1RvUmVhZCAoKQotICB7Ci0gICAgcmV0dXJuIHVyaXNUb1JlYWQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRVUklzVG9Xcml0ZSAoIElVUklbXSB1cmlzVG9Xcml0ZSApCi0gIHsKLSAgICB0aGlzLnVyaXNUb1dyaXRlID0gdXJpc1RvV3JpdGU7Ci0gIH0KLQotICBwdWJsaWMgSVVSSVtdIGdldFVSSXNUb1dyaXRlICgpCi0gIHsKLSAgICByZXR1cm4gdXJpc1RvV3JpdGU7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlICggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApCi0gIHsKLSAgICBGaWxlW10gZmlsZXNUb1JlYWQgPSBnZXRGaWxlcyh1cmlzVG9SZWFkKTsKLSAgICBGaWxlW10gZmlsZXNUb1dyaXRlID0gZ2V0RmlsZXModXJpc1RvV3JpdGUpOwotICAgIHByZVByb2Nlc3MoZmlsZXNUb1JlYWQsZmlsZXNUb1dyaXRlKTsKLSAgICBJU3RhdHVzIHN0YXR1cyA9IGV4ZWN1dGUoZmlsZXNUb1JlYWQsZmlsZXNUb1dyaXRlKTsKLSAgICBwb3N0UHJvY2VzcyhmaWxlc1RvUmVhZCxmaWxlc1RvV3JpdGUpOwotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLQotICBwdWJsaWMgYWJzdHJhY3QgSVN0YXR1cyBleGVjdXRlICggRmlsZVtdIGZpbGVzVG9SZWFkLCBGaWxlW10gZmlsZXNUb1dyaXRlICk7Ci0KLSAgcHJpdmF0ZSB2b2lkIHByZVByb2Nlc3MgKCBGaWxlW10gZmlsZXNUb1JlYWQsIEZpbGVbXSBmaWxlc1RvV3JpdGUgKQotICB7Ci0gICAgLy8gVEJELgotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHBvc3RQcm9jZXNzICggRmlsZVtdIGZpbGVzVG9SZWFkLCBGaWxlW10gZmlsZXNUb1dyaXRlICkKLSAgewotICAgIC8vIFRCRC4KLSAgfQotCi0gIHByaXZhdGUgRmlsZVtdIGdldEZpbGVzICggSVVSSVtdIHVyaXMgKQotICB7Ci0gICAgTGlzdCBsaXN0ID0gbmV3IExpbmtlZExpc3QoKTsKLSAgICBpZiAodXJpcyAhPSBudWxsKQotICAgIHsKLSAgICAgIGZvciAoaW50IGk9MDsgaTx1cmlzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBpZiAodXJpc1tpXS5pc0F2YWlsYWJsZUFzRmlsZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgbGlzdC5hZGQodXJpc1tpXS5hc0ZpbGUoKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoIChVUklFeGNlcHRpb24gZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiAoRmlsZVtdKWxpc3QudG9BcnJheShuZXcgRmlsZVswXSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLy5jbGFzc3BhdGggYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTczOTMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjQiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyOGM3YTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotYmluCi1idWlsZC54bWwKLXJ1bnRpbWUKLXRlbXAuZm9sZGVyCi1lbnZ1aS5qYXIKLUBkb3QKLXNyYy56aXAKLWphdmFDb21waWxlci4uLmFyZ3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLy5wcm9qZWN0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYjBiMzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWk8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODdhZWUxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSNNb24gSmFuIDMwIDEwOjM3OjI4IEVTVCAyMDA2Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS40Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFubm90YXRpb25TdXBlckludGVyZmFjZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hdXRvYm94aW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbXB0eVN0YXRlbWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maWVsZEhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxQYXJhbWV0ZXJCb3VuZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsbHlCbG9ja05vdENvbXBsZXRpbmdOb3JtYWxseT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZvcmJpZGRlblJlZmVyZW5jZT1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5oaWRkZW5DYXRjaEJsb2NrPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wYXRpYmxlTm9uSW5oZXJpdGVkSW50ZXJmYWNlTWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wbGV0ZUVudW1Td2l0Y2g9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluZGlyZWN0U3RhdGljQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5sb2NhbFZhcmlhYmxlSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5tZXRob2RXaXRoQ29uc3RydWN0b3JOYW1lPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ0RlcHJlY2F0ZWRBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nT3ZlcnJpZGVBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nU2VyaWFsVmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vRWZmZWN0QXNzaWdubWVudD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vSW1wbGljaXRTdHJpbmdDb252ZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9uRXh0ZXJuYWxpemVkU3RyaW5nTGl0ZXJhbD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ub3ZlcnJpZGluZ1BhY2thZ2VEZWZhdWx0TWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucG9zc2libGVBY2NpZGVudGFsQm9vbGVhbkFzc2lnbm1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnNwZWNpYWxQYXJhbWV0ZXJIaWRpbmdGaWVsZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdGF0aWNBY2Nlc3NSZWNlaXZlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN1cHByZXNzV2FybmluZ3M9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zeW50aGV0aWNBY2Nlc3NFbXVsYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnR5cGVQYXJhbWV0ZXJIaWRpbmc9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmNoZWNrZWRUeXBlT3BlcmF0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5kb2N1bWVudGVkRW1wdHlCbG9jaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5oYW5kbGVkV2FybmluZ1Rva2VuPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlFbHNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeVR5cGVDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5xdWFsaWZpZWRGaWVsZEFjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uV2hlbk92ZXJyaWRpbmc9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkSW1wb3J0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkTG9jYWw9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXI9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5JbXBsZW1lbnRpbmdBYnN0cmFjdD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuT3ZlcnJpZGluZ0NvbmNyZXRlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFByaXZhdGVNZW1iZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS52YXJhcmdzQXJndW1lbnROZWVkQ2FzdD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS4zCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JhZTg3NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6NDA6MzAgRVNUIDIwMDYKLWNvbXBpbGVycy5wLmRlcHJlY2F0ZWQ9MQotY29tcGlsZXJzLnAubm8tcmVxdWlyZWQtYXR0PTAKLWNvbXBpbGVycy5wLm5vdC1leHRlcm5hbGl6ZWQtYXR0PTEKLWNvbXBpbGVycy5wLnVua25vd24tYXR0cmlidXRlPTAKLWNvbXBpbGVycy5wLnVua25vd24tY2xhc3M9MAotY29tcGlsZXJzLnAudW5rbm93bi1lbGVtZW50PTEKLWNvbXBpbGVycy5wLnVua25vd24tcmVzb3VyY2U9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1leC1wb2ludHM9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1pbXBvcnQ9MAotY29tcGlsZXJzLnVzZS1wcm9qZWN0PXRydWUKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTMxMDlhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJVBMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWk7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMS4yLnF1YWxpZmllcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLnBsdWdpbi5FbnZVSVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmNvbW1vbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5kaWFsb2c7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZWNsaXBzZTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5wbHVnaW47eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkucHJlZmVyZW5jZXM7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkucmVnaXN0cnk7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwO3gtaW50ZXJuYWw6PXRydWUKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMC4yMDMsMi4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnY7YnVuZGxlLXZlcnNpb249IlsxLjAuMzA1LDIuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSJbMy40LjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS51aTtidW5kbGUtdmVyc2lvbj0iWzMuNC4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjIwMCwyLjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzO2J1bmRsZS12ZXJzaW9uPSJbMy40LjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS51aS5pZGU7YnVuZGxlLXZlcnNpb249IlszLjQuMCw0LjAuMCkiCi1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQotQnVuZGxlLVJlcXVpcmVkRXhlY3V0aW9uRW52aXJvbm1lbnQ6IEoyU0UtMS40CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9hYm91dC5odG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9idWlsZC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRkN2U0OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICAqLmphcixcCi0gICAgICAgICAgICAgICAuLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBpY29ucy8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbAotc291cmNlLi4gPSBzcmMvCi1vdXRwdXQuLiA9IGJpbi8KLXNyYy5pbmNsdWRlcyA9IHNjaGVtYS8KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL2ljb25zL2Z1bGwvb2JqMTYvYW50X2J1aWxkZmlsZS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9pY29ucy9mdWxsL29iajE2L2FudF9idWlsZGZpbGUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGYzNDY5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL2ljb25zL2Z1bGwvb2JqMTYvYW50X2J1aWxkZmlsZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9pY29ucy9mdWxsL3dpemJhbi9uZXdhbnRmaWxlc193aXoucG5nIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvaWNvbnMvZnVsbC93aXpiYW4vbmV3YW50ZmlsZXNfd2l6LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYyM2M0Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9pY29ucy9mdWxsL3dpemJhbi9uZXdhbnRmaWxlc193aXoucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvcGx1Z2luLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiNzA0Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgMjAwODAyMjEgMTQ2MDIzIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MgCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPUVudmlyb25tZW50IENvbW1hbmQgRnJhbWV3b3JrIChHVUkpCi1QTFVHSU5fUFJPVklERVI9RWNsaXBzZS5vcmcKLQotV0lER0VUX1JFR0lTVFJZX05BTUU9V2lkZ2V0IGNvbnRyaWJ1dG9yIHJlZ2lzdHJ5Ci0KLVBMVUdJTl9YUF9BTlRfV0laQVJEX05BTUU9QW50IEZpbGVzCi1QTFVHSU5fWFBfQU5UX1dJWkFSRF9ERVNDPUNyZWF0ZSBBbnQgc2NyaXB0IGFuZCBwcm9wZXJ0aWVzIGZpbGVzIGluIHRoZSB3b3Jrc3BhY2UuCi0KLUxBQkVMX0FOVF9FWFRFTlRJT049QW50IEV4dGVudGlvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3BsdWdpbi54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTc3MjM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotCi08cGx1Z2luPgotCi08ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkubmV3V2l6YXJkcyI+Ci0gICAgICA8d2l6YXJkCi0gICAgICAgICAgICBuYW1lPSIlUExVR0lOX1hQX0FOVF9XSVpBUkRfTkFNRSIKLSAgICAgICAgICAgIGljb249Imljb25zL2Z1bGwvb2JqMTYvYW50X2J1aWxkZmlsZS5naWYiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0LndzLnVpLm5ldyIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZGlhbG9nLkFudEZpbGVJbXBvcnRXaXphcmQiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLkFudEZpbGVJbXBvcnRXaXphcmQiPgotICAgICAgICAgPGRlc2NyaXB0aW9uPgotICAgICAgICAgICAgJVBMVUdJTl9YUF9BTlRfV0laQVJEX0RFU0MKLSAgICAgICAgIDwvZGVzY3JpcHRpb24+Ci0gICAgICA8L3dpemFyZD4KLSAgIDwvZXh0ZW5zaW9uPgotCi0gICA8IS0tIFRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsIGFuZCBsaWtlbHkgdG8gYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAtLT4KLSAgIDxleHRlbnNpb24tcG9pbnQgaWQ9IndpZGdldFJlZ2lzdHJ5IiBuYW1lPSIlV0lER0VUX1JFR0lTVFJZX05BTUUiIHNjaGVtYT0ic2NoZW1hL3dpZGdldFJlZ2lzdHJ5LmV4c2QiLz4KLQotCTwhLS0gQW50IEZpbGUgRXh0ZW5zaW9ucyBiZWdpbm5pbmcgIC0tPgotCQotCTxleHRlbnNpb24tcG9pbnQgaWQ9ImFudGZpbGVzIiBuYW1lPSIlTEFCRUxfQU5UX0VYVEVOVElPTiIvPgotCQotCQotCQotPC9wbHVnaW4+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zY2hlbWEvd2lkZ2V0UmVnaXN0cnkuZXhzZCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NjaGVtYS93aWRnZXRSZWdpc3RyeS5leHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTZjYzdjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NjaGVtYS93aWRnZXRSZWdpc3RyeS5leHNkCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+Ci08IS0tIFNjaGVtYSBmaWxlIHdyaXR0ZW4gYnkgUERFIC0tPgotPHNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aSI+Ci08YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2NoZW1hIHBsdWdpbj0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpIiBpZD0id2lkZ2V0UmVnaXN0cnkiIG5hbWU9IldpZGdldCBSZWdpc3RyeSIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaW9uIj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxzZXF1ZW5jZT4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0id2lkZ2V0RmFjdG9yeSIvPgotICAgICAgICAgPC9zZXF1ZW5jZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9pbnQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYSBmdWxseSBxdWFsaWZpZWQgaWRlbnRpZmllciBvZiB0aGUgdGFyZ2V0IGV4dGVuc2lvbiBwb2ludAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIGlkZW50aWZpZXIgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZQotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9IndpZGdldEZhY3RvcnkiPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbnNlcnRCZWZvcmVDb21tYW5kSWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9InNpbmNlIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICZsdDtiJmd0O1RoaXMgZXh0ZW5zaW9uIHBvaW50IGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuJmx0Oy9iJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJleGFtcGxlcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpSW5mbyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iaW1wbGVtZW50YXRpb24iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImNvcHlyaWdodCIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0O2JyJmd0OwotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSAKLWF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyAKLXRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICZsdDthCi1ocmVmPSZxdW90O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJnF1b3Q7Jmd0O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJmx0Oy9hJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvRW52aXJvbm1lbnRVSS5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9FbnZpcm9ubWVudFVJLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzOTVjMjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9FbnZpcm9ubWVudFVJLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNjA1MDkgICAxMTkyOTYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotIyAyMDA4MDIyMSAgIDE0NjAyMyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzIAotIyAyMDA4MDMyNiAgIDIyMzgyOSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotIyAyMDA4MDQwMiAgIDIyMjA5NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbiwgVXBkYXRlIHByb3BlcnRpZXMgZmlsZS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotQlVUVE9OX1NIT1dfQUxMX0RJQUxPR1M9JlNob3cgQWxsCi1CVVRUT05fSElERV9BTExfRElBTE9HUz0mSGlkZSBBbGwKLUNIRUNLQk9YX0RPX05PVF9TSE9XX0RJQUxPR19BR0FJTj1EbyBub3Qgc2hvdyBtZSB0aGlzIGRpYWxvZyBib3ggYWdhaW4uCi0KLVRPT0xUSVBfUFBBRF9QQUdFPUNvbnRyb2wgdG8gc2hvdy9oaWRlIHRoZSBkaWFsb2dzIHRoYXQgYXBwZWFyIHdoZW4gYSBwb3AtdXAgYWN0aW9uIGlzIGV4ZWN1dGVkLgotVE9PTFRJUF9ET19OT1RfU0hPV19ESUFMT0dfQUdBSU49VG8gYWxsb3cgdGhpcyBkaWFsb2cgdG8gc2hvdyBhZ2FpbiwgZW5hYmxlIGZyb20gcHJlZmVyZW5jZSAtIGRpYWxvZ3MuCi1UT09MVElQX1BQQURfQlVUVE9OX1NIT1dfQUxMPVNob3cgYWxsIGRpYWxvZ3MuCi1UT09MVElQX1BQQURfQlVUVE9OX0hJREVfQUxMPUhpZGUgYWxsIGRpYWxvZ3MgYW5kIGV4ZWN1dGUgcG9wLXVwIGFjdGlvbnMuCi1UT09MVElQX1BQQURfQ09NQk9fUlVOVElNRT1UaGUgcnVudGltZSB5b3UgcmVxdWlyZSBhbnQgdGVtcGxhdGVzIGZvci4KLVRPT0xUSVBfUFBBRF9DT01CT19TQ0VOQVJJTz1UaGUgc2NlbmFyaW8geW91IHJlcXVpcmUgYW50IHRlbXBsYXRlcyBmb3IuCi0KLVdJWkFSRF9USVRMRV9BTlQ9Q3JlYXRlIEFudCBGaWxlcwotV0laQVJEX1BBR0VfVElUTEVfQU5UPUNyZWF0ZSBXZWIgU2VydmljZSBBbnQgZmlsZXMKLVdJWkFSRF9QQUdFX0RFU0NfQU5UPVNlbGVjdCB3b3Jrc3BhY2UgZm9sZGVyIGZvciBBbnQgc2NyaXB0IGFuZCBwcm9wZXJ0aWVzIGZpbGVzCi1NU0dfU1RBVFVTX0NPUFlJTkdfQU5UX0ZJTEVTPUNvcHlpbmcgd2ViIHNlcnZpY2VzIEFudCBmaWxlcwotTVNHX0VSUl9DT1BZSU5HX0FOVF9GSUxFUz1FcnJvciBlbmNvdW50ZXJlZCBjb3B5aW5nIEFudCBmaWxlcwotTVNHX0VSUl9BTlRfRklMRVNfTk9UX0ZPVU5EPUFudCBmaWxlIG5vdCBmb3VuZCBhdCB7MH0KLU1TR19XQVJOSU5HX0ZJTEVfRVhJU1RTPVRoZSBmaWxlIHswfSBleGlzdHMuICBEbyB5b3Ugd2FudCB0byBvdmVyd3JpdGU/Ci1ESUFMT0dfVElUTEVfT1ZFUldSSVRFPUNvbmZpcm0gT3ZlcndyaXRlCi0KLU1TR19FUlJPUl9XSVpBUkRfSURfTk9UX0ZPVU5EPUlXQUIwMDEzRSBDb3VsZCBub3QgZmluZCB3aXphcmQgaWQ6IHswfQotTVNHX0VSUk9SX09QRVJBVElPTl9USU1FRF9PVVQ9T3BlcmF0aW9uIHRpbWVkIG91dC4KLQotTEFCRUxfUlVOVElNRVNfTElTVD1XZWIgc2VydmljZSBydW50aW1lOgotTEFCRUxfU0VSVkVSU19MSVNUPVdlYiBzZXJ2aWNlIHR5cGU6CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL0Vudmlyb25tZW50VUlNZXNzYWdlcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9FbnZpcm9ubWVudFVJTWVzc2FnZXMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY4NDliYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL0Vudmlyb25tZW50VUlNZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTA5ICAgMTE5Mjk2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwMjIxIDE0NjAyMyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzIAotICogMjAwODA0MDIgICAyMjIwOTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4sIFVwZGF0ZSBwcm9wZXJ0aWVzIGZpbGUuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLQotcHVibGljIGZpbmFsIGNsYXNzIEVudmlyb25tZW50VUlNZXNzYWdlcyBleHRlbmRzIE5MUyB7Ci0KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQlVORExFX05BTUUgPSAib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLkVudmlyb25tZW50VUkiOy8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgRW52aXJvbm1lbnRVSU1lc3NhZ2VzKCkgewotCQkvLyBEbyBub3QgaW5zdGFudGlhdGUKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fU0hPV19BTExfRElBTE9HUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBCVVRUT05fSElERV9BTExfRElBTE9HUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBDSEVDS0JPWF9ET19OT1RfU0hPV19ESUFMT0dfQUdBSU47Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUEFEX1BBR0U7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9ET19OT1RfU0hPV19ESUFMT0dfQUdBSU47Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QUEFEX0JVVFRPTl9TSE9XX0FMTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BQQURfQlVUVE9OX0hJREVfQUxMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFBBRF9DT01CT19SVU5USU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFBBRF9DT01CT19TQ0VOQVJJTzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfV0laQVJEX0lEX05PVF9GT1VORDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXSVpBUkRfVElUTEVfQU5UOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdJWkFSRF9QQUdFX1RJVExFX0FOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXSVpBUkRfUEFHRV9ERVNDX0FOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfU1RBVFVTX0NPUFlJTkdfQU5UX0ZJTEVTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJfQ09QWUlOR19BTlRfRklMRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUl9BTlRfRklMRVNfTk9UX0ZPVU5EOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19XQVJOSU5HX0ZJTEVfRVhJU1RTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIERJQUxPR19USVRMRV9PVkVSV1JJVEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX09QRVJBVElPTl9USU1FRF9PVVQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfUlVOVElNRVNfTElTVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TRVJWRVJTX0xJU1Q7Ci0KLQlzdGF0aWMgewotCQlOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBFbnZpcm9ubWVudFVJTWVzc2FnZXMuY2xhc3MpOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvY29tbW9uL0xhYmVsc0FuZElkcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9jb21tb24vTGFiZWxzQW5kSWRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4ZmI4OWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9jb21tb24vTGFiZWxzQW5kSWRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiAgICAgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDIyMSAxNDYwMjMgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cyAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmNvbW1vbjsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLXB1YmxpYyBjbGFzcyBMYWJlbHNBbmRJZHMKLXsKLSAgcHJpdmF0ZSBWZWN0b3IgbGFiZWxzXyA9IG5ldyBWZWN0b3IoKTsKLSAgcHJpdmF0ZSBWZWN0b3IgaWRzXyA9IG5ldyBWZWN0b3IoKTsKLSAgCi0gIAotICBwdWJsaWMgdm9pZCBhZGQoU3RyaW5nIGlkLCBTdHJpbmcgbGFiZWwpewotCSAgaWRzXy5hZGQoaWQpOwotCSAgbGFiZWxzXy5hZGQobGFiZWwpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldElkKGludCBpbmRleCl7Ci0JICByZXR1cm4gKFN0cmluZylpZHNfLmdldChpbmRleCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGlkc18uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nW10gZ2V0SWRzKCkKLSAgewotCSAgU3RyaW5nW10gc3RyaW5nQXJyYXkgPSBuZXcgU3RyaW5nW2lkc18uc2l6ZSgpXTsgCi0JICBpZHNfLmNvcHlJbnRvKHN0cmluZ0FycmF5KTsKLQkgIHJldHVybiBzdHJpbmdBcnJheTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZ1tdIGdldExhYmVscygpCi0gIHsKLQkgIFN0cmluZ1tdIHN0cmluZ0FycmF5ID0gbmV3IFN0cmluZ1tpZHNfLnNpemUoKV07IAotCSAgbGFiZWxzXy5jb3B5SW50byhzdHJpbmdBcnJheSk7Ci0JICByZXR1cm4gc3RyaW5nQXJyYXk7Ci0gIH0KLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2NvbW1vbi9UaW1lZE9wZXJhdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9jb21tb24vVGltZWRPcGVyYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAxMmRjYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2NvbW1vbi9UaW1lZE9wZXJhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUwNCAgIDExOTI5NiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MDgyMiAgIDE1NDc1MCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmNvbW1vbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMub3BlcmF0aW9ucy5BYnN0cmFjdE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLm9wZXJhdGlvbnMuSVVuZG9Db250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMub3BlcmF0aW9ucy5JVW5kb2FibGVPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLk1lc3NhZ2VEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuRW52aXJvbm1lbnRVSU1lc3NhZ2VzOwotCi1wdWJsaWMgY2xhc3MgVGltZWRPcGVyYXRpb24gaW1wbGVtZW50cyBJVW5kb2FibGVPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBBYnN0cmFjdE9wZXJhdGlvbiBvcGVyYXRpb247Ci0gIHByaXZhdGUgaW50ICAgICAgICAgICAgICAgdGltZW91dDsKLSAgcHJpdmF0ZSBJUHJvZ3Jlc3NNb25pdG9yICB0ZW1wTW9uaXRvcjsKLSAgcHJpdmF0ZSBJQWRhcHRhYmxlICAgICAgICB0ZW1wSW5mbzsKLSAgcHJpdmF0ZSBJU3RhdHVzICAgICAgICAgICByZXR1cm5TdGF0dXM7Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgb3BlcmF0aW9uQ29tcGxldGU7Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgdGltZU91dE1lc3NhZ2U7Ci0gIAotICBwdWJsaWMgVGltZWRPcGVyYXRpb24oIEFic3RyYWN0T3BlcmF0aW9uIG9wZXJhdGlvbiwgaW50IHRpbWVvdXQsIFN0cmluZyB0aW1lT3V0TWVzc2FnZSApCi0gIHsKLSAgICB0aGlzLm9wZXJhdGlvbiAgICAgID0gb3BlcmF0aW9uOwotICAgIHRoaXMudGltZW91dCAgICAgICAgPSB0aW1lb3V0OwotICAgIHRoaXMudGltZU91dE1lc3NhZ2UgPSB0aW1lT3V0TWVzc2FnZTsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIAotICB7Ci0gICAgVGhyZWFkICBleGVjdXRlVGhyZWFkID0gbmV3IFRocmVhZCggbmV3IE9wZXJhdGlvblJ1bm5hYmxlKCkgKTsKLSAgICAKLSAgICByZXR1cm5TdGF0dXMgICAgICA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgdGVtcE1vbml0b3IgICAgICAgPSBtb25pdG9yOwotICAgIHRlbXBJbmZvICAgICAgICAgID0gaW5mbzsKLSAgICBvcGVyYXRpb25Db21wbGV0ZSA9IGZhbHNlOwotICAgIGV4ZWN1dGVUaHJlYWQuc3RhcnQoKTsKLSAgICAKLSAgICBzeW5jaHJvbml6ZWQoIG9wZXJhdGlvbiApCi0gICAgewotICAgICAgd2hpbGUoICFvcGVyYXRpb25Db21wbGV0ZSApCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgb3BlcmF0aW9uLndhaXQodGltZW91dCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goIEludGVycnVwdGVkRXhjZXB0aW9uIGV4YyApCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgbWVzc2FnZSAgICAgPSBleGMuZ2V0TWVzc2FnZSgpOwotICAgICAgICAgIFN0YXR1cyBlcnJvclN0YXR1cyA9IG5ldyBTdGF0dXMoIElTdGF0dXMuRVJST1IsImlkIiwgMCwgbWVzc2FnZSA9PSBudWxsID8gIiIgOiBtZXNzYWdlLCBleGMgKTsKLSAgICAgICAgICBleGVjdXRlVGhyZWFkLmludGVycnVwdCgpOwotICAgICAgICAgIHJldHVybiBlcnJvclN0YXR1czsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYoICFvcGVyYXRpb25Db21wbGV0ZSApCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBXZSB0aW1lZCBvdXQsIHNpbmNlIHRoZSBleGVjdXRpb24gdGhyZWFkIGhhc24ndCBzZXQgb3BlcmF0aW9uQ29tcGxldGUgCi0gICAgICAgICAgLy8gdG8gdHJ1ZS4KLSAgICAgICAgICBTdGF0dXMgIGVycm9yU3RhdHVzID0gbmV3IFN0YXR1cyggSVN0YXR1cy5FUlJPUiwiaWQiLCAwLCBFbnZpcm9ubWVudFVJTWVzc2FnZXMuTVNHX0VSUk9SX09QRVJBVElPTl9USU1FRF9PVVQsIG51bGwpOwotICAgICAgICAgIFNoZWxsICAgc2hlbGwgICAgICAgPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvdygpLmdldFNoZWxsKCk7Ci0gICAgICAgICAgYm9vbGVhbiB3YWl0TW9yZSAgICA9IE1lc3NhZ2VEaWFsb2cub3BlbkNvbmZpcm0oc2hlbGwsIEVudmlyb25tZW50VUlNZXNzYWdlcy5NU0dfRVJST1JfT1BFUkFUSU9OX1RJTUVEX09VVCwgdGltZU91dE1lc3NhZ2UgKTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZiggIXdhaXRNb3JlICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBleGVjdXRlVGhyZWFkLmludGVycnVwdCgpOwotICAgICAgICAgICAgb3BlcmF0aW9uQ29tcGxldGUgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGVycm9yU3RhdHVzOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBXZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiAgVGhlcmVmb3JlIHJldHVybiB0aGUgc3RhdHVzIHNldCBpbiB0aGUgZm9ya2VkCi0gICAgLy8gdGhyZWFkLgotICAgIHJldHVybiByZXR1cm5TdGF0dXM7Ci0gIH0KLQotICBwcml2YXRlIGNsYXNzIE9wZXJhdGlvblJ1bm5hYmxlIGltcGxlbWVudHMgUnVubmFibGUKLSAgewotICAgIHB1YmxpYyB2b2lkIHJ1bigpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIHJldHVyblN0YXR1cyA9IG9wZXJhdGlvbi5leGVjdXRlKHRlbXBNb25pdG9yLCB0ZW1wSW5mbyk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCggVGhyb3dhYmxlIGV4YyApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gZXhjLmdldE1lc3NhZ2UoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVyblN0YXR1cyA9IG5ldyBTdGF0dXMoIElTdGF0dXMuRVJST1IsImlkIiwgMCwgbWVzc2FnZSA9PSBudWxsID8gIiIgOiBtZXNzYWdlLCBleGMgKTsKLSAgICAgIH0KLSAgICAgIGZpbmFsbHkKLSAgICAgIHsKLSAgICAgICAgc3luY2hyb25pemVkKCBvcGVyYXRpb24gKQotICAgICAgICB7Ci0gICAgICAgICAgb3BlcmF0aW9uQ29tcGxldGUgPSB0cnVlOwotICAgICAgICAgIG9wZXJhdGlvbi5ub3RpZnkoKTsKLSAgICAgICAgfSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgSVN0YXR1cyByZWRvKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBpbmZvKSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uLnJlZG8obW9uaXRvciwgaW5mbyk7Ci0gIH0KLQotICBwdWJsaWMgSVN0YXR1cyB1bmRvKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBpbmZvKSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uLnVuZG8obW9uaXRvciwgaW5mbyk7Ci0gIH0KLSAgcHVibGljIElVbmRvQ29udGV4dFtdIGdldENvbnRleHRzKCkKLSAgewotICAgIHJldHVybiBvcGVyYXRpb24uZ2V0Q29udGV4dHMoKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGhhc0NvbnRleHQoSVVuZG9Db250ZXh0IGNvbnRleHQpCi0gIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uLmhhc0NvbnRleHQoY29udGV4dCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRDb250ZXh0KElVbmRvQ29udGV4dCBjb250ZXh0KQotICB7Ci0gICAgb3BlcmF0aW9uLmFkZENvbnRleHQoY29udGV4dCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBjYW5FeGVjdXRlKCkKLSAgewotICAgIHJldHVybiBvcGVyYXRpb24uY2FuRXhlY3V0ZSgpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gY2FuUmVkbygpCi0gIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uLmNhblJlZG8oKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGNhblVuZG8oKQotICB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbi5jYW5VbmRvKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBkaXNwb3NlKCkKLSAgewotICAgIG9wZXJhdGlvbi5kaXNwb3NlKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldExhYmVsKCkKLSAgewotICAgIHJldHVybiBvcGVyYXRpb24uZ2V0TGFiZWwoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlbW92ZUNvbnRleHQoSVVuZG9Db250ZXh0IGNvbnRleHQpCi0gIHsKLSAgICBvcGVyYXRpb24ucmVtb3ZlQ29udGV4dChjb250ZXh0KTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldExhYmVsKFN0cmluZyBuYW1lKQotICB7Ci0gICAgb3BlcmF0aW9uLnNldExhYmVsKG5hbWUpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2RpYWxvZy9BbnRFeHRlbnNpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZGlhbG9nL0FudEV4dGVuc2lvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzM0ZWE5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZGlhbG9nL0FudEV4dGVuc2lvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqICAgICB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwMjIxIDE0NjAyMyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZGlhbG9nOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLQotcHVibGljIGNsYXNzIEFudEV4dGVuc2lvbiB7Ci0JCi0JcHJpdmF0ZSBTdHJpbmcgbGFiZWxfOwotCXByaXZhdGUgU3RyaW5nIHJ1bnRpbWVfOwotCXByaXZhdGUgU3RyaW5nIHNjZW5hcmlvXzsKLQlwcml2YXRlIFN0cmluZyBpZF87Ci0JcHJpdmF0ZSBTdHJpbmcgcnVudGltZUlEXzsKLQlwcml2YXRlIFN0cmluZyBwbHVnaW5fOwotCXByaXZhdGUgU3RyaW5nIHBhdGhfOwotCXByaXZhdGUgU3RyaW5nIHdzZ2VucGF0aF87Ci0JcHJpdmF0ZSBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudF87Ci0JCi0JcHVibGljIEFudEV4dGVuc2lvbihJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCkKLQl7Ci0JCWVsZW1lbnRfID0gZWxlbWVudDsKLQl9Ci0JCi0JcHVibGljIFN0cmluZyBnZXRMYWJlbCgpCi0JewotCSAgICBpZiAobGFiZWxfPT1udWxsKQotCSAgICB7Ci0JICAgIAlsYWJlbF8gPSBlbGVtZW50Xy5nZXRBdHRyaWJ1dGUoImxhYmVsIik7Ci0JICAgIH0KLQkgICAgcmV0dXJuIGxhYmVsXzsKLQl9ICAgCi0KLQlwdWJsaWMgU3RyaW5nIGdldFJ1bnRpbWVMYWJlbCgpCi0JewotCSAgICBpZiAocnVudGltZV89PW51bGwpCi0JICAgIHsKLQkgICAgCXJ1bnRpbWVfID0gZWxlbWVudF8uZ2V0QXR0cmlidXRlKCJydW50aW1lbGFiZWwiKTsKLQkgICAgfQotCSAgICByZXR1cm4gcnVudGltZV87Ci0JfQotCQotCXB1YmxpYyBTdHJpbmcgZ2V0U2NlbmFyaW9MYWJlbCgpCi0JewotCSAgICBpZiAoc2NlbmFyaW9fPT1udWxsKQotCSAgICB7Ci0JICAgIAlzY2VuYXJpb18gPSBlbGVtZW50Xy5nZXRBdHRyaWJ1dGUoInNjZW5hcmlvbGFiZWwiKTsKLQkgICAgfQotCSAgICByZXR1cm4gc2NlbmFyaW9fOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldElEKCkKLQl7Ci0JICAgIGlmIChpZF89PW51bGwpCi0JICAgIHsKLQkgICAgCWlkXyA9IGVsZW1lbnRfLmdldEF0dHJpYnV0ZSgiaWQiKTsKLQkgICAgfQotCSAgICByZXR1cm4gaWRfOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldFJ1bnRpbWVJRCgpCi0JewotCSAgICBpZiAocnVudGltZUlEXz09bnVsbCkKLQkgICAgewotCSAgICAJcnVudGltZUlEXyA9IGVsZW1lbnRfLmdldEF0dHJpYnV0ZSgicnVudGltZWlkIik7Ci0JICAgIH0KLQkgICAgcmV0dXJuIHJ1bnRpbWVJRF87Ci0JfQotCQotCXB1YmxpYyBTdHJpbmcgZ2V0UGx1Z2luKCkKLQl7Ci0JICAgIGlmIChwbHVnaW5fPT1udWxsKQotCSAgICB7Ci0JICAgIAlwbHVnaW5fID0gZWxlbWVudF8uZ2V0QXR0cmlidXRlKCJwbHVnaW5sb2NhdGlvbiIpOwotCSAgICB9Ci0JICAgIHJldHVybiBwbHVnaW5fOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldFBhdGgoKQotCXsKLQkgICAgaWYgKHBhdGhfPT1udWxsKQotCSAgICB7Ci0JICAgIAlwYXRoXyA9IGVsZW1lbnRfLmdldEF0dHJpYnV0ZSgicGF0aCIpOwotCSAgICB9Ci0JICAgIHJldHVybiBwYXRoXzsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldFdTR2VuUGF0aCgpCi0JewotCSAgICBpZiAod3NnZW5wYXRoXz09bnVsbCkKLQkgICAgewotCSAgICAJd3NnZW5wYXRoXyA9IGVsZW1lbnRfLmdldEF0dHJpYnV0ZSgid3NnZW5wYXRoIik7Ci0JICAgIH0KLQkgICAgcmV0dXJuIHdzZ2VucGF0aF87Ci0JfQotCi0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2RpYWxvZy9BbnRFeHRlbnNpb25DcmVhdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvQW50RXh0ZW5zaW9uQ3JlYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk3NGYxMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2RpYWxvZy9BbnRFeHRlbnNpb25DcmVhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqICAgICB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwMjIxIDE0NjAyMyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZGlhbG9nOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5jb21tb24uTGFiZWxzQW5kSWRzOwotCi1wdWJsaWMgY2xhc3MgQW50RXh0ZW5zaW9uQ3JlYXRpb24gewotCi0JcHJpdmF0ZSBIYXNodGFibGUgYW50RXh0ZW50aW9uc187Ci0JcHJpdmF0ZSBzdGF0aWMgQW50RXh0ZW5zaW9uQ3JlYXRpb24gYW50RXh0ZW5zaW9uQ187Ci0JcHJpdmF0ZSBIYXNodGFibGUgcnVudGltZVN0cnVjdHNfID0gbnVsbDsKLQkKLQkKLQlwdWJsaWMgc3RhdGljIEFudEV4dGVuc2lvbkNyZWF0aW9uIGdldEluc3RhbmNlKCl7Ci0JCWlmKGFudEV4dGVuc2lvbkNfID09IG51bGwpewotCQkJYW50RXh0ZW5zaW9uQ18gPSBuZXcgQW50RXh0ZW5zaW9uQ3JlYXRpb24oKTsKLQkJfQotCQlyZXR1cm4gYW50RXh0ZW5zaW9uQ187Ci0JfQotCQotCXB1YmxpYyB2b2lkIGNyZWF0ZUV4dGVuc2lvbnMoKQotCXsKLQkJYW50RXh0ZW50aW9uc18gPSBuZXcgSGFzaHRhYmxlKCk7Ci0JCUlFeHRlbnNpb25SZWdpc3RyeSByZWcgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotCQkvL0xvYWQgIGJ5IHJlYWRpbmcgYWxsIGV4dGVuc2lvbnMgdG8gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLmFudGZpbGVzCi0JCUlDb25maWd1cmF0aW9uRWxlbWVudFtdIGFudEV4dHMgPSByZWcuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzRm9yKCJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkiLCAiYW50ZmlsZXMiKTsKLSAgICAKLQkJZm9yKGludCBpZHg9MDsgaWR4PGFudEV4dHMubGVuZ3RoOyBpZHgrKykgCi0JCXsKLQkJCUlDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtID0gYW50RXh0c1tpZHhdOwotCQkJaWYgKGVsZW0uZ2V0TmFtZSgpLmVxdWFscygiYW50ZmlsZXMiKSkKLQkJCXsKLQkJCQlBbnRFeHRlbnNpb24gYWUgPSBuZXcgQW50RXh0ZW5zaW9uKGVsZW0pOwotCQkJCWFudEV4dGVudGlvbnNfLnB1dChlbGVtLmdldEF0dHJpYnV0ZSgiaWQiKSwgYWUpOwotCQkJfSAgICAgICAgCi0JCX0KLQl9Ci0JCi0JcHVibGljIHZvaWQgY3JlYXRlUnVudGltZXMoKXsKLQkJRW51bWVyYXRpb24gYW50RXh0c0VudW0gPSBhbnRFeHRlbnRpb25zXy5lbGVtZW50cygpOwotCQlydW50aW1lU3RydWN0c18gPSBuZXcgSGFzaHRhYmxlKCk7Ci0JCQotCQl3aGlsZShhbnRFeHRzRW51bS5oYXNNb3JlRWxlbWVudHMoKSl7Ci0JCQlBbnRFeHRlbnNpb24gYW50RXh0ID0gKEFudEV4dGVuc2lvbilhbnRFeHRzRW51bS5uZXh0RWxlbWVudCgpOwotCQkJUnVudGltZVN0cnVjdCBycyA9IChSdW50aW1lU3RydWN0KXJ1bnRpbWVTdHJ1Y3RzXy5nZXQoYW50RXh0LmdldFJ1bnRpbWVJRCgpKTsKLQkJCWlmKHJzID09IG51bGwpewotCQkJCXJzID0gbmV3IFJ1bnRpbWVTdHJ1Y3QoYW50RXh0LmdldFJ1bnRpbWVJRCgpKTsgCi0JCQkJcnMuc2V0UnVudGltZUxhYmVsKGFudEV4dC5nZXRSdW50aW1lTGFiZWwoKSk7Ci0JCQkJcnMuc2V0U2NlbmFyaW8oYW50RXh0LmdldElEKCksIGFudEV4dC5nZXRTY2VuYXJpb0xhYmVsKCkpOwotCQkJCXJ1bnRpbWVTdHJ1Y3RzXy5wdXQocnMuZ2V0UnVudGltZUlEKCksIHJzKTsKLQkJCX0KLQkJCWVsc2V7Ci0JCQkJcnMuc2V0U2NlbmFyaW8oYW50RXh0LmdldElEKCksIGFudEV4dC5nZXRTY2VuYXJpb0xhYmVsKCkpOwotCQkJfQotCQl9Ci0JfQotCQkKLQlwdWJsaWMgTGFiZWxzQW5kSWRzIGdldFJ1bnRpbWVMYWJlbHNBbmRJZHMoKXsKLQkJaWYoYW50RXh0ZW50aW9uc18gPT0gbnVsbCkgY3JlYXRlRXh0ZW5zaW9ucygpOwotCQlpZihydW50aW1lU3RydWN0c18gPT0gbnVsbCljcmVhdGVSdW50aW1lcygpOwotCQlMYWJlbHNBbmRJZHMgcnVudGltZSA9IG5ldyBMYWJlbHNBbmRJZHMoKTsgCi0JCUVudW1lcmF0aW9uIHJ1bnRpbWVTdHJ1Y3RzID0gcnVudGltZVN0cnVjdHNfLmVsZW1lbnRzKCk7Ci0JCXdoaWxlKHJ1bnRpbWVTdHJ1Y3RzLmhhc01vcmVFbGVtZW50cygpKXsKLQkJCVJ1bnRpbWVTdHJ1Y3QgcnMgPSAoUnVudGltZVN0cnVjdClydW50aW1lU3RydWN0cy5uZXh0RWxlbWVudCgpOwkKLQkJCXJ1bnRpbWUuYWRkKHJzLmdldFJ1bnRpbWVJRCgpLHJzLmdldFJ1bnRpbWVMYWJlbCgpKTsKLQkJfQotCQlyZXR1cm4gcnVudGltZTsKLQl9Ci0JCi0JcHVibGljIExhYmVsc0FuZElkcyBnZXRTY2VuYXJpb0xhYmVsc0J5UnVudGltZShTdHJpbmcgcnVudGltZUlkKXsKLQkJaWYoYW50RXh0ZW50aW9uc18gPT0gbnVsbCkgY3JlYXRlRXh0ZW5zaW9ucygpOwotCQlpZihydW50aW1lU3RydWN0c18gPT0gbnVsbCkgY3JlYXRlUnVudGltZXMoKTsKLQkJUnVudGltZVN0cnVjdCBycyA9IChSdW50aW1lU3RydWN0KXJ1bnRpbWVTdHJ1Y3RzXy5nZXQocnVudGltZUlkKTsJCi0JCXJldHVybiBycy5nZXRTY2VuYXJpb0xhYmVscygpOwotCX0KLQkKLQkJCi0JcHVibGljIEFudEV4dGVuc2lvbiBnZXRBbnJFeHRCeVNjZW5hcmlvKFN0cmluZyBzZWxlY3Rpb24pewotCQlpZihhbnRFeHRlbnRpb25zXyA9PSBudWxsKSByZXR1cm4gbnVsbDsKLQkJcmV0dXJuIChBbnRFeHRlbnNpb24pYW50RXh0ZW50aW9uc18uZ2V0KHNlbGVjdGlvbik7CQotCX0KLQotCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvQW50RmlsZUltcG9ydFdpemFyZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvQW50RmlsZUltcG9ydFdpemFyZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGY3ZjZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZGlhbG9nL0FudEZpbGVJbXBvcnRXaXphcmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMzE1ICAgMTI4NzExIGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDgwMjIxICAgMTQ2MDIzIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MgCi0gKiAyMDA4MDUxMiAgIDIyMjA5NCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgRXJyb3IgaGFuZGxpbmcgd2hlbiBBbnQgdGVtcGxhdGUgY2Fubm90IGJlIGZvdW5kCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmRpYWxvZzsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS5uZXQuVVJMQ29ubmVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5OdWxsUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuV2l6YXJkOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5NZXNzYWdlQm94OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklOZXdXaXphcmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoUGFydFJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoV2luZG93OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBhcnQuSVNldFNlbGVjdGlvblRhcmdldDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbW9uLkZpbGVSZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5Qcm9ncmVzc1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlRyYW5zaWVudFJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYucGx1Z2luLkVudlBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuRW52aXJvbm1lbnRVSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5wbHVnaW4uRW52VUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50Lk51bGxTdGF0dXNIYW5kbGVyOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGU7Ci0KLXB1YmxpYyBjbGFzcyBBbnRGaWxlSW1wb3J0V2l6YXJkIGV4dGVuZHMgV2l6YXJkIGltcGxlbWVudHMgSU5ld1dpemFyZCB7Ci0KLQkvL3ByaXZhdGUgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGZDb25maWdFbGVtZW50OwotCXByaXZhdGUgQW50RmlsZUltcG9ydFdpemFyZFBhZ2UgbWFpblBhZ2U7Ci0JLyoqCi0gICAgICogVGhlIHdvcmtiZW5jaC4KLSAgICAgKi8KLSAgICBwcml2YXRlIElXb3JrYmVuY2ggd29ya2JlbmNoOwotICAgIHByaXZhdGUgQW50RXh0ZW5zaW9uQ3JlYXRpb24gYW50RXh0Q187Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgY3VycmVudCBzZWxlY3Rpb24uCi0gICAgICovCi0gICAgcHJvdGVjdGVkIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbjsKLSAgICAKLQlwdWJsaWMgQW50RmlsZUltcG9ydFdpemFyZCgpCi0JewotCQlzdXBlcigpOwkJIAotCQlzZXRXaW5kb3dUaXRsZShFbnZpcm9ubWVudFVJTWVzc2FnZXMuV0laQVJEX1RJVExFX0FOVCk7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHNldFdpbmRvd1RpdGxlKFN0cmluZyBuZXdUaXRsZSkgewotCQlzdXBlci5zZXRXaW5kb3dUaXRsZShuZXdUaXRsZSk7Ci0JfQotCQotCSBwdWJsaWMgdm9pZCBhZGRQYWdlcygpIHsKLQkgICAgICAgIHN1cGVyLmFkZFBhZ2VzKCk7CSAgICAgICAgCi0JICAgICAgICBtYWluUGFnZSA9IG5ldyBBbnRGaWxlSW1wb3J0V2l6YXJkUGFnZShFbnZpcm9ubWVudFVJTWVzc2FnZXMuV0laQVJEX1BBR0VfVElUTEVfQU5ULCBnZXRTZWxlY3Rpb24oKSk7Ci0gICAgICAgICAgICBhZGRQYWdlKG1haW5QYWdlKTsKLQkgICAgfQotCQotCXB1YmxpYyBib29sZWFuIHBlcmZvcm1GaW5pc2goKSB7CQotCQlhbnRFeHRDXyA9IEFudEV4dGVuc2lvbkNyZWF0aW9uLmdldEluc3RhbmNlKCk7Ci0JCUlQYXRoIGRlc3RpbmF0aW9uID0gbWFpblBhZ2UuZ2V0UGF0aCgpOwotCQlpZiAoZGVzdGluYXRpb24gPT0gbnVsbCkKLQkJewotCQkJcmV0dXJuIGZhbHNlOwotCQl9CQkJCi0JCWVsc2UKLQkJewotCQkJQW50RXh0ZW5zaW9uIGFudEV4dCA9IGFudEV4dENfLmdldEFuckV4dEJ5U2NlbmFyaW8obWFpblBhZ2UuZ2V0U2NlbmFyaW8oKSk7Ci0JCQlCdW5kbGUgd3NCdW5kbGUgPSBQbGF0Zm9ybS5nZXRCdW5kbGUoYW50RXh0LmdldFBsdWdpbigpKTsKLQkJCUlQYXRoIHByb3BlcnR5UGF0aCA9IG5ldyBQYXRoKGFudEV4dC5nZXRQYXRoKCkpOwotCQkJVVJMIHByb3BlcnR5VVJMID0gRmlsZUxvY2F0b3IuZmluZCggd3NCdW5kbGUsIHByb3BlcnR5UGF0aCwgbnVsbCk7Ci0JCQkKLQkJCWlmIChwcm9wZXJ0eVVSTCA9PSBudWxsKSB7Ci0JCQkJbWFpblBhZ2UuZGlzcGxheUVycm9yRGlhbG9nKAotCQkJCQkJTkxTLmJpbmQoRW52aXJvbm1lbnRVSU1lc3NhZ2VzLk1TR19FUlJfQU5UX0ZJTEVTX05PVF9GT1VORCwgYW50RXh0LmdldFBhdGgoKSkpOwotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0KLQkJCQotCQkJVVJMQ29ubmVjdGlvbiBjb25uOwotCQkJSW5wdXRTdHJlYW0gaXNQcm9wZXJ0eSA9IG51bGw7Ci0JCQl0cnl7Ci0JCQkJY29ubiA9IHByb3BlcnR5VVJMLm9wZW5Db25uZWN0aW9uKCk7Ci0JCQkJaXNQcm9wZXJ0eSA9IGNvbm4uZ2V0SW5wdXRTdHJlYW0oKTsKLQkJICAgIH0KLQkJICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBpb2Upe30KLQkJICAgIAotCQkgICAgUGx1Z2luIHNvdXJjZVBsdWdpbiA9IEVudlBsdWdpbi5nZXRJbnN0YW5jZSgpOyAgCi0JCQlTdHJpbmcgdGFyZ2V0RmlsZSA9IGFudEV4dC5nZXRQYXRoKCk7Ci0JCSAgICBjcmVhdGVJRmlsZShzb3VyY2VQbHVnaW4sIGlzUHJvcGVydHksIGRlc3RpbmF0aW9uLCB0YXJnZXRGaWxlLCAoSVByb2dyZXNzTW9uaXRvciluZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLQkJICAgIAotCQkgICAgSVBhdGggd3NnZW5QYXRoID0gbmV3IFBhdGgoYW50RXh0LmdldFdTR2VuUGF0aCgpKTsKLQkJCVVSTCBmaWxlVVJMID0gRmlsZUxvY2F0b3IuZmluZCggd3NCdW5kbGUsIHdzZ2VuUGF0aCwgbnVsbCk7Ci0JCQkKLQkJCWlmIChmaWxlVVJMID09IG51bGwpIHsKLQkJCQltYWluUGFnZS5kaXNwbGF5RXJyb3JEaWFsb2coCi0JCQkJCQlOTFMuYmluZChFbnZpcm9ubWVudFVJTWVzc2FnZXMuTVNHX0VSUl9BTlRfRklMRVNfTk9UX0ZPVU5ELCBhbnRFeHQuZ2V0V1NHZW5QYXRoKCkpKTsJCQkJCi0JCQkJcmV0dXJuIGZhbHNlOwotCQkJfQotCQkJCi0JCQlVUkxDb25uZWN0aW9uIGNvbm5XU0dlbjsKLQkJCUlucHV0U3RyZWFtIGlzV1NHZW4gPSBudWxsOwotCQkJdHJ5ewotCQkJCWNvbm5XU0dlbiA9IGZpbGVVUkwub3BlbkNvbm5lY3Rpb24oKTsKLQkJCQlpc1dTR2VuID0gY29ubldTR2VuLmdldElucHV0U3RyZWFtKCk7Ci0JCSAgICB9Ci0JCSAgICBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKXt9Ci0JCSAgICAKLQkJICAgIFN0cmluZyB0YXJnZXRGaWxlV1NHZW4gPSBhbnRFeHQuZ2V0V1NHZW5QYXRoKCk7Ci0JCSAgICBjcmVhdGVJRmlsZShzb3VyY2VQbHVnaW4sIGlzV1NHZW4sIGRlc3RpbmF0aW9uLCB0YXJnZXRGaWxlV1NHZW4sIChJUHJvZ3Jlc3NNb25pdG9yKW5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotCQkJCi0JCSAgICAKLQkJICAgCi0JCX0KLQkgICAgcmV0dXJuIHRydWU7CQkKLSAgfQkKLQkKLQkKLQkKLQlwcml2YXRlIElTdGF0dXMgY3JlYXRlSUZpbGUoUGx1Z2luIHBsdWdpbiwgSW5wdXRTdHJlYW0gc291cmNlLCBJUGF0aCB0YXJnZXRQYXRoLCBTdHJpbmcgdGFyZ2V0RmlsZSwgLypJRW52aXJvbm1lbnQgZW52LCovIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0JewotCSAgICAKLQkgIGlmIChwbHVnaW4gIT0gbnVsbCkKLQkgIHsKLQkgICAgSVBhdGggdGFyZ2V0ID0gdGFyZ2V0UGF0aC5hcHBlbmQobmV3IFBhdGgodGFyZ2V0RmlsZSkpOwotCSAgICAKLQkgICAgUHJvZ3Jlc3NVdGlscy5yZXBvcnQoIG1vbml0b3IsIEVudmlyb25tZW50VUlNZXNzYWdlcy5NU0dfU1RBVFVTX0NPUFlJTkdfQU5UX0ZJTEVTKTsKLQkgICAgdHJ5Ci0JICAgIHsKLQkgICAgICAgUmVzb3VyY2VDb250ZXh0IGNvbnRleHQgPSBuZXcgVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0KCk7Ci0JICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiBmaWxlIGV4aXN0cyBiZWZvcmUgY29weQotCSAgICAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBGaWxlUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UodGFyZ2V0KTsJICAgICAKLQkgICAgICAgCi0JICAgICAgIGlmIChyZXNvdXJjZSAhPSBudWxsKQotCQkJewotCQkJCU1lc3NhZ2VCb3ggb3ZlcndyaXRlQm94ID0gbmV3IE1lc3NhZ2VCb3goZ2V0U2hlbGwoKSwgU1dULklDT05fUVVFU1RJT058U1dULllFU3xTV1QuTk8pOwotCQkJCW92ZXJ3cml0ZUJveC5zZXRNZXNzYWdlKEVudmlyb25tZW50VUlNZXNzYWdlcy5iaW5kKEVudmlyb25tZW50VUlNZXNzYWdlcy5NU0dfV0FSTklOR19GSUxFX0VYSVNUUywgdGFyZ2V0LnRvU3RyaW5nKCkpKTsJCQkJCi0JCQkJb3ZlcndyaXRlQm94LnNldFRleHQoRW52aXJvbm1lbnRVSU1lc3NhZ2VzLkRJQUxPR19USVRMRV9PVkVSV1JJVEUpOwotCQkJCWludCByZXN1bHQgPSBvdmVyd3JpdGVCb3gub3BlbigpOwotCQkJCWlmIChyZXN1bHQgIT0gU1dULk5PKQotCQkJCQlGaWxlUmVzb3VyY2VVdGlscy5jcmVhdGVGaWxlKGNvbnRleHQsIHRhcmdldCwgc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbml0b3IsIChJU3RhdHVzSGFuZGxlciluZXcgTnVsbFN0YXR1c0hhbmRsZXIoKSk7Ci0JCQkJZWxzZSAKLQkJCQkJcmV0dXJuIFN0YXR1cy5DQU5DRUxfU1RBVFVTOwotCQkJfSAgICAgICAKLQkJCWVsc2UgCi0JCQl7Ci0JCQkJRmlsZVJlc291cmNlVXRpbHMuY3JlYXRlRmlsZShjb250ZXh0LCB0YXJnZXQsIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbml0b3IsIChJU3RhdHVzSGFuZGxlciluZXcgTnVsbFN0YXR1c0hhbmRsZXIoKSk7Ci0JCQl9Ci0JICAgIH0KLQkgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CSAgICAJCi0JICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKEVudmlyb25tZW50VUlNZXNzYWdlcy5NU0dfRVJSX0NPUFlJTkdfQU5UX0ZJTEVTLCBlKTsKLQkgICAgfQotCSAgfQkgIAotCSAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfQotCQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIHNlbGVjdGlvbiB3aGljaCB3YXMgcGFzc2VkIHRvIDxjb2RlPmluaXQ8L2NvZGU+LgotICAgICAqCi0gICAgICogQHJldHVybiB0aGUgc2VsZWN0aW9uCi0gICAgICovCi0gICAgcHVibGljIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGdldFNlbGVjdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSB3b3JrYmVuY2ggd2hpY2ggd2FzIHBhc3NlZCB0byA8Y29kZT5pbml0PC9jb2RlPi4KLSAgICAgKgotICAgICAqIEByZXR1cm4gdGhlIHdvcmtiZW5jaAotICAgICAqLwotICAgIHB1YmxpYyBJV29ya2JlbmNoIGdldFdvcmtiZW5jaCgpIHsKLSAgICAgICAgcmV0dXJuIHdvcmtiZW5jaDsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgPGNvZGU+QmFzaWNOZXdSZXNvdXJjZVdpemFyZDwvY29kZT4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyAKLSAgICAgKiA8Y29kZT5JV29ya2JlbmNoV2l6YXJkPC9jb2RlPiBtZXRob2QgcmVjb3JkcyB0aGUgZ2l2ZW4gd29ya2JlbmNoIGFuZAotICAgICAqIHNlbGVjdGlvbiwgYW5kIGluaXRpYWxpemVzIHRoZSBkZWZhdWx0IGJhbm5lciBpbWFnZSBmb3IgdGhlIHBhZ2VzCi0gICAgICogYnkgY2FsbGluZyA8Y29kZT5pbml0aWFsaXplRGVmYXVsdFBhZ2VJbWFnZURlc2NyaXB0b3I8L2NvZGU+LgotICAgICAqIFN1YmNsYXNzZXMgbWF5IGV4dGVuZC4KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBpbml0KElXb3JrYmVuY2ggd29ya2JlbmNoLCBJU3RydWN0dXJlZFNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9uKSB7Ci0gICAgICAgIHRoaXMud29ya2JlbmNoID0gd29ya2JlbmNoOwotICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb247Ci0KLSAgICAgICAgaW5pdGlhbGl6ZURlZmF1bHRQYWdlSW1hZ2VEZXNjcmlwdG9yKCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogSW5pdGlhbGl6ZXMgdGhlIGRlZmF1bHQgcGFnZSBpbWFnZSBkZXNjcmlwdG9yIHRvIGFuIGFwcHJvcHJpYXRlIGJhbm5lci4KLSAgICAgKiBCeSBjYWxsaW5nIDxjb2RlPnNldERlZmF1bHRQYWdlSW1hZ2VEZXNjcmlwdG9yPC9jb2RlPi4KLSAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1ldGhvZCB1c2VzIGEgZ2VuZXJpYyBuZXcgd2l6YXJkIGltYWdlLgotICAgICAqIDxwPgotICAgICAqIFN1YmNsYXNzZXMgbWF5IHJlaW1wbGVtZW50LgotICAgICAqIDwvcD4KLSAgICAgKi8KLSAgICBwcm90ZWN0ZWQgdm9pZCBpbml0aWFsaXplRGVmYXVsdFBhZ2VJbWFnZURlc2NyaXB0b3IoKSB7Ci0gICAgCUltYWdlRGVzY3JpcHRvciBkZXNjID0gRW52VUlQbHVnaW4uZ2V0SW1hZ2VEZXNjcmlwdG9yKCJpY29ucy9mdWxsL3dpemJhbi9uZXdhbnRmaWxlc193aXoucG5nIik7Ly8kTk9OLU5MUy0xJAotICAgICAgICBzZXREZWZhdWx0UGFnZUltYWdlRGVzY3JpcHRvcihkZXNjKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBTZWxlY3RzIGFuZCByZXZlYWxzIHRoZSBuZXdseSBhZGRlZCByZXNvdXJjZSBpbiBhbGwgcGFydHMKLSAgICAgKiBvZiB0aGUgYWN0aXZlIHdvcmtiZW5jaCB3aW5kb3cncyBhY3RpdmUgcGFnZS4KLSAgICAgKgotICAgICAqIEBzZWUgSVNldFNlbGVjdGlvblRhcmdldAotICAgICAqLwotICAgIHByb3RlY3RlZCB2b2lkIHNlbGVjdEFuZFJldmVhbChJUmVzb3VyY2UgbmV3UmVzb3VyY2UpIHsKLSAgICAgICAgc2VsZWN0QW5kUmV2ZWFsKG5ld1Jlc291cmNlLCBnZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQXR0ZW1wdHMgdG8gc2VsZWN0IGFuZCByZXZlYWwgdGhlIHNwZWNpZmllZCByZXNvdXJjZSBpbiBhbGwKLSAgICAgKiBwYXJ0cyB3aXRoaW4gdGhlIHN1cHBsaWVkIHdvcmtiZW5jaCB3aW5kb3cncyBhY3RpdmUgcGFnZS4KLSAgICAgKiA8cD4KLSAgICAgKiBDaGVja3MgYWxsIHBhcnRzIGluIHRoZSBhY3RpdmUgcGFnZSB0byBzZWUgaWYgdGhleSBpbXBsZW1lbnQgPGNvZGU+SVNldFNlbGVjdGlvblRhcmdldDwvY29kZT4sCi0gICAgICogZWl0aGVyIGRpcmVjdGx5IG9yIGFzIGFuIGFkYXB0ZXIuIElmIHNvLCB0ZWxscyB0aGUgcGFydCB0byBzZWxlY3QgYW5kIHJldmVhbCB0aGUKLSAgICAgKiBzcGVjaWZpZWQgcmVzb3VyY2UuCi0gICAgICogPC9wPgotICAgICAqCi0gICAgICogQHBhcmFtIHJlc291cmNlIHRoZSByZXNvdXJjZSB0byBiZSBzZWxlY3RlZCBhbmQgcmV2ZWFsZWQKLSAgICAgKiBAcGFyYW0gd2luZG93IHRoZSB3b3JrYmVuY2ggd2luZG93IHRvIHNlbGVjdCBhbmQgcmV2ZWFsIHRoZSByZXNvdXJjZQotICAgICAqIAotICAgICAqIEBzZWUgSVNldFNlbGVjdGlvblRhcmdldAotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZWxlY3RBbmRSZXZlYWwoSVJlc291cmNlIHJlc291cmNlLAotICAgICAgICAgICAgSVdvcmtiZW5jaFdpbmRvdyB3aW5kb3cpIHsKLSAgICAgICAgLy8gdmFsaWRhdGUgdGhlIGlucHV0Ci0gICAgICAgIGlmICh3aW5kb3cgPT0gbnVsbCB8fCByZXNvdXJjZSA9PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBJV29ya2JlbmNoUGFnZSBwYWdlID0gd2luZG93LmdldEFjdGl2ZVBhZ2UoKTsKLSAgICAgICAgaWYgKHBhZ2UgPT0gbnVsbCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBnZXQgYWxsIHRoZSB2aWV3IGFuZCBlZGl0b3IgcGFydHMKLSAgICAgICAgTGlzdCBwYXJ0cyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgSVdvcmtiZW5jaFBhcnRSZWZlcmVuY2UgcmVmc1tdID0gcGFnZS5nZXRWaWV3UmVmZXJlbmNlcygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlZnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIElXb3JrYmVuY2hQYXJ0IHBhcnQgPSByZWZzW2ldLmdldFBhcnQoZmFsc2UpOwotICAgICAgICAgICAgaWYgKHBhcnQgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICBwYXJ0cy5hZGQocGFydCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVmcyA9IHBhZ2UuZ2V0RWRpdG9yUmVmZXJlbmNlcygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlZnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChyZWZzW2ldLmdldFBhcnQoZmFsc2UpICE9IG51bGwpCi0gICAgICAgICAgICAgICAgcGFydHMuYWRkKHJlZnNbaV0uZ2V0UGFydChmYWxzZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmluYWwgSVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihyZXNvdXJjZSk7Ci0gICAgICAgIEl0ZXJhdG9yIGl0ciA9IHBhcnRzLml0ZXJhdG9yKCk7Ci0gICAgICAgIHdoaWxlIChpdHIuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICBJV29ya2JlbmNoUGFydCBwYXJ0ID0gKElXb3JrYmVuY2hQYXJ0KSBpdHIubmV4dCgpOwotCi0gICAgICAgICAgICAvLyBnZXQgdGhlIHBhcnQncyBJU2V0U2VsZWN0aW9uVGFyZ2V0IGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICBJU2V0U2VsZWN0aW9uVGFyZ2V0IHRhcmdldCA9IG51bGw7Ci0gICAgICAgICAgICBpZiAocGFydCBpbnN0YW5jZW9mIElTZXRTZWxlY3Rpb25UYXJnZXQpCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gKElTZXRTZWxlY3Rpb25UYXJnZXQpIHBhcnQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gKElTZXRTZWxlY3Rpb25UYXJnZXQpIHBhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRBZGFwdGVyKElTZXRTZWxlY3Rpb25UYXJnZXQuY2xhc3MpOwotCi0gICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBzZWxlY3QgYW5kIHJldmVhbCByZXNvdXJjZQotICAgICAgICAgICAgICAgIGZpbmFsIElTZXRTZWxlY3Rpb25UYXJnZXQgZmluYWxUYXJnZXQgPSB0YXJnZXQ7Ci0gICAgICAgICAgICAgICAgd2luZG93LmdldFNoZWxsKCkuZ2V0RGlzcGxheSgpLmFzeW5jRXhlYyhuZXcgUnVubmFibGUoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsVGFyZ2V0LnNlbGVjdFJldmVhbChzZWxlY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2RpYWxvZy9BbnRGaWxlSW1wb3J0V2l6YXJkUGFnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvQW50RmlsZUltcG9ydFdpemFyZFBhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYwMWNkMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2RpYWxvZy9BbnRGaWxlSW1wb3J0V2l6YXJkUGFnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDIyMSAgIDE0NjAyMyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzIAotICogMjAwODA1MTIgICAyMjIwOTQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEVycm9yIGhhbmRsaW5nIHdoZW4gQW50IHRlbXBsYXRlIGNhbm5vdCBiZSBmb3VuZAotICogMjAwODA2MTggICAyMzc2NzEgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIExhYmVsIG9uIEFudCBmaWxlcyB3aXphcmQgaXMgdHJ1bmNhdGVkCi0gKiAyMDA4MDcxNiAgIDIzODA1OSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgTmV3IGFudCBmaWxlcyB3aXphcmQgbm90IHdvcmtpbmcKLSAqIDIwMDgxMDIzICAgMjUxOTExIGVyaWNkcEBjYS5pYm0uY29tICAgLSBFcmljIEQuIFBldGVycywgTlBFIGluIC5sb2cgd2hlbiBjaG9vc2luZyBhbnQgZmlsZXMgdG8gaW1wb3J0Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmRpYWxvZzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVRyZWVDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tYm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuZGlhbG9ncy5XaXphcmRSZXNvdXJjZUltcG9ydFBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLkVudmlyb25tZW50VUlNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuY29tbW9uLkxhYmVsc0FuZElkczsKLQotcHVibGljIGNsYXNzIEFudEZpbGVJbXBvcnRXaXphcmRQYWdlIGV4dGVuZHMgV2l6YXJkUmVzb3VyY2VJbXBvcnRQYWdlewotCSAgCi0JcHJpdmF0ZSBTdHJpbmcgcGx1Z2luSWRfID0gIm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aSI7Ci0JCi0JLyogQ09OVEVYVF9JRCBTUlBGMDAwMSBmb3Igc2VydmVyIHByZWZlcmVuY2Ugb24gdGhlIHNlcnZlciBydW50aW1lIHByZWZlcmVuY2UgcGFnZSAqLwotCXByaXZhdGUgU3RyaW5nIElORk9QT1BfU1JQRl9TRVJWRVJfUFJFRiA9IHBsdWdpbklkXyArICIuU1JQRjAwMDEiOwotCXByaXZhdGUgQ29tYm8gc2NlbmFyaW9fOwotCi0JLyogQ09OVEVYVF9JRCBTUlBGMDAwMiBmb3IgcnVudGltZSBwcmVmZXJlbmNlIG9uIHRoZSBzZXJ2ZXIgcnVudGltZSBwcmVmZXJlbmNlIHBhZ2UgKi8KLQlwcml2YXRlIFN0cmluZyBJTkZPUE9QX1NSUEZfUlVOVElNRV9QUkVGID0gcGx1Z2luSWRfICsgIi5TUlBGMDAwMiI7Ci0JcHJpdmF0ZSBDb21ibyBydW50aW1lXzsJCi0JCi0JcHJpdmF0ZSBBbnRFeHRlbnNpb25DcmVhdGlvbiBhbnRFeHRDXzsKLQlwcml2YXRlIExhYmVsc0FuZElkcyBsYWJlbHNBbmRJZHNTY2VuYXJpb187Ci0JcHJpdmF0ZSBMYWJlbHNBbmRJZHMgbGFiZWxzQW5kSWRzUnVudGltZV87Ci0vLwlwcml2YXRlIGludCBydW50aW1lSWR4XzsKLQkKLQlwdWJsaWMgQW50RmlsZUltcG9ydFdpemFyZFBhZ2UoU3RyaW5nIHBhZ2VOYW1lLAotCSAgICAgICAgICAgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikgewotCSAgICAgICAgc3VwZXIoIldTQW50RmlsZXNQYWdlMSIsIHNlbGVjdGlvbik7Ly8kTk9OLU5MUy0xJAotCSAgICAgICAgc2V0VGl0bGUocGFnZU5hbWUpOwkgICAgICAgIAotCSAgICAgICAgc2V0RGVzY3JpcHRpb24oRW52aXJvbm1lbnRVSU1lc3NhZ2VzLldJWkFSRF9QQUdFX0RFU0NfQU5UKTsJICAgICAgICAKLQkgICAgfQotCQotCQkKLQlwdWJsaWMgQ29tYm8gY3JlYXRlQ29tYm8oIENvbXBvc2l0ZSBwYXJlbnQsIFN0cmluZyBsYWJlbE5hbWUsIFN0cmluZyB0b29sdGlwLCBTdHJpbmcgaW5mb3BvcCwgaW50IHN0eWxlICkKLQkgIHsgICAgCi0JICAgIHRvb2x0aXAgPSB0b29sdGlwID09IG51bGwgPyBsYWJlbE5hbWUgOiB0b29sdGlwOwotCSAgICAKLQkgICAgaWYoIGxhYmVsTmFtZSAhPSBudWxsICkKLQkgICAgewotCSAgICAgIExhYmVsIGxhYmVsID0gbmV3IExhYmVsKCBwYXJlbnQsIFNXVC5OT05FKTsKLQkgICAgICBsYWJlbC5zZXRUZXh0KCBsYWJlbE5hbWUgKTsKLQkgICAgICBsYWJlbC5zZXRUb29sVGlwVGV4dCggdG9vbHRpcCApOwotCSAgICB9Ci0JICAgIAotCSAgICBDb21ibyBjb21ibyA9IG5ldyBDb21ibyggcGFyZW50LCBzdHlsZSApOwotCSAgICBHcmlkRGF0YSBncmlkZGF0YSA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwpOwotCSAgICAgCi0JICAgIGNvbWJvLnNldExheW91dERhdGEoIGdyaWRkYXRhICk7Ci0JICAgIGNvbWJvLnNldFRvb2xUaXBUZXh0KCB0b29sdGlwICk7Ci0JICAgIAotCSAgICBpZiggaW5mb3BvcCAhPSBudWxsICkgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscCggY29tYm8sIHBsdWdpbklkXyArICIuIiArIGluZm9wb3AgKTsKLQkgICAgCi0JICAgIHJldHVybiBjb21ibzsgICAgICAKLQkgIH0KLQkKLQlwcm90ZWN0ZWQgSVRyZWVDb250ZW50UHJvdmlkZXIgZ2V0RmlsZVByb3ZpZGVyKCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0JCi0JcHVibGljIElQYXRoIGdldFBhdGgoKQotCXsKLQkJcmV0dXJuIGdldENvbnRhaW5lckZ1bGxQYXRoKCk7Ci0JfQotCQotCXByb3RlY3RlZCB2b2lkIGNyZWF0ZVNvdXJjZUdyb3VwKENvbXBvc2l0ZSBwYXJlbnQpIHsKLQkJQ29tcG9zaXRlIHBhZ2UgPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOwotCQlHcmlkTGF5b3V0IGdsID0gbmV3IEdyaWRMYXlvdXQoKTsKLQkJZ2wubnVtQ29sdW1ucyA9IDI7Ci0JCXBhZ2Uuc2V0TGF5b3V0KGdsKTsKLQkJR3JpZERhdGEgZ2QgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuVkVSVElDQUxfQUxJR05fRklMTCB8IEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCk7Ci0JCXBhZ2Uuc2V0TGF5b3V0RGF0YShnZCk7Ci0JICAKLQkJcnVudGltZV8gPSBjcmVhdGVDb21ibyhwYWdlLEVudmlyb25tZW50VUlNZXNzYWdlcy5MQUJFTF9SVU5USU1FU19MSVNULAotCQkJICBFbnZpcm9ubWVudFVJTWVzc2FnZXMuVE9PTFRJUF9QUEFEX0NPTUJPX1JVTlRJTUUsCi0JCQkJCQkJCQkgSU5GT1BPUF9TUlBGX1JVTlRJTUVfUFJFRiwKLQkJCQkJCQkJCSBTV1QuU0lOR0xFfFNXVC5CT1JERVJ8U1dULlJFQURfT05MWSk7Ci0JCi0JCXJ1bnRpbWVfLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25MaXN0ZW5lcigpewotCQkJcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHt9Ci0JCQkKLQkJCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJCQloYW5kbGVSdW50aW1lU2VsZWN0ZWQoKTsJCQkJCQotCQkJfQotCQl9KTsKLQkKLQkJc2NlbmFyaW9fID0gY3JlYXRlQ29tYm8ocGFnZSxFbnZpcm9ubWVudFVJTWVzc2FnZXMuTEFCRUxfU0VSVkVSU19MSVNULAotCQkJCSAgRW52aXJvbm1lbnRVSU1lc3NhZ2VzLlRPT0xUSVBfUFBBRF9DT01CT19TQ0VOQVJJTywKLQkJCQkJCQkJCQlJTkZPUE9QX1NSUEZfU0VSVkVSX1BSRUYsCi0JCQkJCQkJCQkJU1dULlNJTkdMRXxTV1QuQk9SREVSfFNXVC5SRUFEX09OTFkpOwotCQkKLQkJaW5pYXRpYWxpemUoKTsKLQl9Ci0JCi0JcHJvdGVjdGVkIGJvb2xlYW4gdmFsaWRhdGVTb3VyY2VHcm91cCgpIHsKLQkJcmV0dXJuIHJ1bnRpbWVfLmdldEl0ZW1Db3VudCgpID4gMDsKLQl9Ci0KLQlwcm90ZWN0ZWQgSVRyZWVDb250ZW50UHJvdmlkZXIgZ2V0Rm9sZGVyUHJvdmlkZXIoKSB7Ci0JCSByZXR1cm4gbnVsbDsKLQl9Ci0JCi0JcHJvdGVjdGVkIHZvaWQgY3JlYXRlT3B0aW9uc0dyb3VwKENvbXBvc2l0ZSBwYXJlbnQpIHsKLSAgICAgICAgLy9lbXB0eSAtIGRvbid0IHdhbnQgYW4gb3B0aW9ucyBncm91cCAKLSAgICB9Ci0JCi0JcHVibGljIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQgZXZlbnQpCi0JewotCQlpZiAoc2NlbmFyaW9fID09IGV2ZW50LndpZGdldCkKLQkJCWhhbmRsZVNjZW5hcmlvU2VsZWN0ZWQoKTsKLQkJZWxzZSBpZiAocnVudGltZV8gPT0gZXZlbnQud2lkZ2V0KQotCQkJaGFuZGxlUnVudGltZVNlbGVjdGVkKCk7Ci0JCWVsc2UKLQkJCXN1cGVyLmhhbmRsZUV2ZW50KGV2ZW50KTsKLQkJCQotCX0KLQkKLQlwdWJsaWMgdm9pZCBoYW5kbGVSdW50aW1lU2VsZWN0ZWQoKXsKLQkJbGFiZWxzQW5kSWRzU2NlbmFyaW9fID0gYW50RXh0Q18uZ2V0U2NlbmFyaW9MYWJlbHNCeVJ1bnRpbWUobGFiZWxzQW5kSWRzUnVudGltZV8uZ2V0SWQocnVudGltZV8uZ2V0U2VsZWN0aW9uSW5kZXgoKSkpOwotCQlzZXRTY2VuYXJpb0xhYmVscyhsYWJlbHNBbmRJZHNTY2VuYXJpb18uZ2V0TGFiZWxzKCkpOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBoYW5kbGVTY2VuYXJpb1NlbGVjdGVkKCl7Ci0JCQotCX0KLQkKLQlwcml2YXRlIHZvaWQgaW5pYXRpYWxpemUoKXsKLQkJYW50RXh0Q18gPSBBbnRFeHRlbnNpb25DcmVhdGlvbi5nZXRJbnN0YW5jZSgpOwotCQlsYWJlbHNBbmRJZHNSdW50aW1lXyA9IGFudEV4dENfLmdldFJ1bnRpbWVMYWJlbHNBbmRJZHMoKTsKLQkJaWYgKGxhYmVsc0FuZElkc1J1bnRpbWVfLmdldExhYmVscygpLmxlbmd0aCA+IDApCi0JCQlzZXRSdW50aW1lTGFiZWxzKGxhYmVsc0FuZElkc1J1bnRpbWVfLmdldExhYmVscygpKTsKLQl9Ci0JCi0JcHVibGljIFN0cmluZyBnZXRTY2VuYXJpbygpewotCQlyZXR1cm4gbGFiZWxzQW5kSWRzU2NlbmFyaW9fLmdldElkKHNjZW5hcmlvXy5nZXRTZWxlY3Rpb25JbmRleCgpKTsKLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIHNldFNlbGVjdGlvbihDb21ibyBjb21ibywgU3RyaW5nIHMpCi0JewotCQlTdHJpbmdbXSBpdGVtcyA9IGNvbWJvLmdldEl0ZW1zKCk7Ci0JCWZvciAoaW50IGk9MDsgaTxpdGVtcy5sZW5ndGg7IGkrKykKLQkJewotCQkJaWYgKGl0ZW1zW2ldLmVxdWFscyhzKSkKLQkJCXsKLQkJCQljb21iby5zZWxlY3QoaSk7Ci0JCQkJcmV0dXJuOwotCQkJfQotCQl9Ci0JfQotCQotCXByaXZhdGUgdm9pZCBzZXRSdW50aW1lTGFiZWxzKFN0cmluZ1tdIHJ1bnRpbWVMYWJlbHMpCi0JewotCQlydW50aW1lXy5zZXRJdGVtcyhydW50aW1lTGFiZWxzKTsKLQkgICAgLy91bnRpbCB0aGUgcHJlZmVyZW5jZXMgYXJlIHNldCB1cAotCQlzZXRTZWxlY3Rpb24ocnVudGltZV8scnVudGltZUxhYmVsc1swXSk7Ci0vLwkJcnVudGltZUlkeF8gPSAwOwotCQlsYWJlbHNBbmRJZHNTY2VuYXJpb18gPSBhbnRFeHRDXy5nZXRTY2VuYXJpb0xhYmVsc0J5UnVudGltZShsYWJlbHNBbmRJZHNSdW50aW1lXy5nZXRJZCgwKSk7Ci0JCXNldFNjZW5hcmlvTGFiZWxzKGxhYmVsc0FuZElkc1NjZW5hcmlvXy5nZXRMYWJlbHMoKSk7Ci0JfQotCQotCXByaXZhdGUgdm9pZCBzZXRTY2VuYXJpb0xhYmVscyhTdHJpbmdbXSBzY2VuYXJpb0xhYmVscykKLQl7Ci0JCXNjZW5hcmlvXy5zZXRJdGVtcyhzY2VuYXJpb0xhYmVscyk7Ci0JICAgIC8vdW50aWwgdGhlIHByZWZlcmVuY2VzIGFyZSBzZXQgdXAKLQkJc2V0U2VsZWN0aW9uKHNjZW5hcmlvXyxzY2VuYXJpb0xhYmVsc1swXSk7Ci0JCQotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS51aS5kaWFsb2dzLldpemFyZERhdGFUcmFuc2ZlclBhZ2UjZGlzcGxheUVycm9yRGlhbG9nKGphdmEubGFuZy5TdHJpbmcpCi0JICovCi0JcHJvdGVjdGVkIHZvaWQgZGlzcGxheUVycm9yRGlhbG9nKFN0cmluZyBtZXNzYWdlKSB7Ci0JCXN1cGVyLmRpc3BsYXlFcnJvckRpYWxvZyhtZXNzYWdlKTsKLQl9Ci19Ci0KLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2RpYWxvZy9FcnJvckRpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvRXJyb3JEaWFsb2cuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JkMWMxMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2RpYWxvZy9FcnJvckRpYWxvZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5kaWFsb2c7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLklEaWFsb2dDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuSW1hZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci0KLQotLyoqCi0gKiBBIGRpYWxvZyB0byBkaXNwbGF5IG9uZSBvciBtb3JlIGVycm9ycyB0byB0aGUgdXNlciwgYXMgY29udGFpbmVkIGluIGFuCi0gKiA8Y29kZT5TdGF0dXM8L2NvZGU+IG9iamVjdC4gSWYgYW4gZXJyb3IgY29udGFpbnMgYWRkaXRpb25hbCBkZXRhaWxlZAotICogaW5mb3JtYXRpb24gdGhlbiBhIERldGFpbHMgYnV0dG9uIGlzIGF1dG9tYXRpY2FsbHkgc3VwcGxpZWQsIHdoaWNoIHNob3dzIG9yCi0gKiBoaWRlcyBhbiBlcnJvciBkZXRhaWxzIHZpZXdlciB3aGVuIHByZXNzZWQgYnkgdGhlIHVzZXIuCi0gKiAgCi0gKi8KLXB1YmxpYyBjbGFzcyBFcnJvckRpYWxvZyBleHRlbmRzIE1lc3NhZ2VEaWFsb2cKLXsKLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBlcnJvciBkaWFsb2cuIE5vdGUgdGhhdCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSBubyB2aXN1YWwKLSAgICogcmVwcmVzZW50YXRpb24gKG5vIHdpZGdldHMpIHVudGlsIGl0IGlzIHRvbGQgdG8gb3Blbi4KLSAgICogPHA+Ci0gICAqIE5vcm1hbGx5IG9uZSBzaG91bGQgdXNlIDxjb2RlPm9wZW5FcnJvcjwvY29kZT4gdG8gY3JlYXRlIGFuZCBvcGVuIG9uZSBvZgotICAgKiB0aGVzZS4gVGhpcyBjb25zdHJ1Y3RvciBpcyB1c2VmdWwgb25seSBpZiB0aGUgZXJyb3Igb2JqZWN0IGJlaW5nIGRpc3BsYXllZAotICAgKiBjb250YWlucyBjaGlsZCBpdGVtcyA8aXQ+YW5kPC9pdD4geW91IG5lZWQgdG8gc3BlY2lmeSBhIG1hc2sgd2hpY2ggd2lsbAotICAgKiBiZSB1c2VkIHRvIGZpbHRlciB0aGUgZGlzcGxheWluZyBvZiB0aGVzZSBjaGlsZHJlbi4KLSAgICogPC9wPgotICAgKiAKLSAgICogQHBhcmFtIHBhcmVudFNoZWxsCi0gICAqICAgICAgICAgICAgdGhlIHNoZWxsIHVuZGVyIHdoaWNoIHRvIGNyZWF0ZSB0aGlzIGRpYWxvZwotICAgKiBAcGFyYW0gZGlhbG9nVGl0bGUKLSAgICogICAgICAgICAgICB0aGUgdGl0bGUgdG8gdXNlIGZvciB0aGlzIGRpYWxvZywgb3IgPGNvZGU+bnVsbDwvY29kZT4gdG8KLSAgICogICAgICAgICAgICBpbmRpY2F0ZSB0aGF0IHRoZSBkZWZhdWx0IHRpdGxlIHNob3VsZCBiZSB1c2VkCi0gICAqIEBwYXJhbSBtZXNzYWdlCi0gICAqICAgICAgICAgICAgdGhlIG1lc3NhZ2UgdG8gc2hvdyBpbiB0aGlzIGRpYWxvZywgb3IgPGNvZGU+bnVsbDwvY29kZT4gdG8KLSAgICogICAgICAgICAgICBpbmRpY2F0ZSB0aGF0IHRoZSBlcnJvcidzIG1lc3NhZ2Ugc2hvdWxkIGJlIHNob3duIGFzIHRoZQotICAgKiAgICAgICAgICAgIHByaW1hcnkgbWVzc2FnZQotICAgKiBAcGFyYW0gc3RhdHVzCi0gICAqICAgICAgICAgICAgdGhlIGVycm9yIHRvIHNob3cgdG8gdGhlIHVzZXIKLSAgICogQHBhcmFtIGRpc3BsYXlNYXNrCi0gICAqICAgICAgICAgICAgdGhlIG1hc2sgdG8gdXNlIHRvIGZpbHRlciB0aGUgZGlzcGxheWluZyBvZiBjaGlsZCBpdGVtcywgYXMgcGVyCi0gICAqICAgICAgICAgICAgPGNvZGU+U3RhdHVzLm1hdGNoZXM8L2NvZGU+Ci0gICAqLwotICBwdWJsaWMgRXJyb3JEaWFsb2coCi0gICAgU2hlbGwgcGFyZW50U2hlbGwsCi0gICAgU3RyaW5nIGRpYWxvZ1RpdGxlLAotICAgIFN0cmluZyBtZXNzYWdlLAotICAgIElTdGF0dXMgc3RhdHVzLAotICAgIGludCBkaXNwbGF5TWFzaykKLSAgewotICAgIHN1cGVyKHBhcmVudFNoZWxsLCBkaWFsb2dUaXRsZSwgbWVzc2FnZSwgc3RhdHVzLCBkaXNwbGF5TWFzayk7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpIFRoaXMgc2hvdWxkIGFsc28gYmUgb3ZlcndyaXR0ZW4gTWV0aG9kIGRlY2xhcmVkIG9uIERpYWxvZy4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGNyZWF0ZUJ1dHRvbnNGb3JCdXR0b25CYXIoQ29tcG9zaXRlIHBhcmVudCkKLSAgewotICAgIC8vIGNyZWF0ZSBPSyBhbmQgRGV0YWlscyBidXR0b25zCi0gICAgY3JlYXRlQnV0dG9uKAotICAgICAgcGFyZW50LAotICAgICAgU3RhdHVzRGlhbG9nQ29uc3RhbnRzLk9LX0lELAotICAgICAgSURpYWxvZ0NvbnN0YW50cy5PS19MQUJFTCwKLSAgICAgIHRydWUpOwotICAgIGlmIChzdGF0dXMuaXNNdWx0aVN0YXR1cygpIHx8IHN0YXR1cy5nZXRFeGNlcHRpb24oKSAhPSBudWxsICkKLSAgICB7Ci0gICAgICBkZXRhaWxzQnV0dG9uID0KLSAgICAgICAgY3JlYXRlQnV0dG9uKAotICAgICAgICAgIHBhcmVudCwKLSAgICAgICAgICBTdGF0dXNEaWFsb2dDb25zdGFudHMuREVUQUlMU19JRCwKLSAgICAgICAgICBJRGlhbG9nQ29uc3RhbnRzLlNIT1dfREVUQUlMU19MQUJFTCwKLSAgICAgICAgICBmYWxzZSk7Ci0gICAgfQotICB9Ci0KLSAgLyoKLSAgICogVGhpcyBpcyBvbmUgb2YgdGhlIGZldyBtZXRob2RzIHRoYXQgbmVlZHMgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgdGhlCi0gICAqIHN1YmNsYXNzZXMuIFRoZSBpbWFnZSBuYW1lcyBjYW4gYmUgZm91bmQgaW4gdGhlIERpYWxvZyBjbGFzcwotICAgKi8KLSAgcHJvdGVjdGVkIEltYWdlIGdldERpYWxvZ0ltYWdlKCkKLSAgewotICAgIC8vIGNyZWF0ZSBpbWFnZQotICAgIHJldHVybiBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldERpc3BsYXkoKS5nZXRTeXN0ZW1JbWFnZShTV1QuSUNPTl9FUlJPUik7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvSW5mb0RpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvSW5mb0RpYWxvZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTA3ZGI2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZGlhbG9nL0luZm9EaWFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZGlhbG9nOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5JRGlhbG9nQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkltYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotCi0KLS8qKgotICogQSBkaWFsb2cgdG8gZGlzcGxheSBvbmUgb3IgbW9yZSBlcnJvcnMgdG8gdGhlIHVzZXIsIGFzIGNvbnRhaW5lZCBpbiBhbgotICogPGNvZGU+U3RhdHVzPC9jb2RlPiBvYmplY3QuIElmIGFuIGVycm9yIGNvbnRhaW5zIGFkZGl0aW9uYWwgZGV0YWlsZWQKLSAqIGluZm9ybWF0aW9uIHRoZW4gYSBEZXRhaWxzIGJ1dHRvbiBpcyBhdXRvbWF0aWNhbGx5IHN1cHBsaWVkLCB3aGljaCBzaG93cyBvcgotICogaGlkZXMgYW4gZXJyb3IgZGV0YWlscyB2aWV3ZXIgd2hlbiBwcmVzc2VkIGJ5IHRoZSB1c2VyLgotICogIAotICovCi1wdWJsaWMgY2xhc3MgSW5mb0RpYWxvZyBleHRlbmRzIE1lc3NhZ2VEaWFsb2cKLXsKLSAgLyoqCi0gICAqIENyZWF0ZXMgYW4gZXJyb3IgZGlhbG9nLiBOb3RlIHRoYXQgdGhlIGRpYWxvZyB3aWxsIGhhdmUgbm8gdmlzdWFsCi0gICAqIHJlcHJlc2VudGF0aW9uIChubyB3aWRnZXRzKSB1bnRpbCBpdCBpcyB0b2xkIHRvIG9wZW4uCi0gICAqIDxwPgotICAgKiBOb3JtYWxseSBvbmUgc2hvdWxkIHVzZSA8Y29kZT5vcGVuRXJyb3I8L2NvZGU+IHRvIGNyZWF0ZSBhbmQgb3BlbiBvbmUgb2YKLSAgICogdGhlc2UuIFRoaXMgY29uc3RydWN0b3IgaXMgdXNlZnVsIG9ubHkgaWYgdGhlIGVycm9yIG9iamVjdCBiZWluZyBkaXNwbGF5ZWQKLSAgICogY29udGFpbnMgY2hpbGQgaXRlbXMgPGl0PmFuZDwvaXQ+IHlvdSBuZWVkIHRvIHNwZWNpZnkgYSBtYXNrIHdoaWNoIHdpbGwKLSAgICogYmUgdXNlZCB0byBmaWx0ZXIgdGhlIGRpc3BsYXlpbmcgb2YgdGhlc2UgY2hpbGRyZW4uCi0gICAqIDwvcD4KLSAgICogCi0gICAqIEBwYXJhbSBwYXJlbnRTaGVsbAotICAgKiAgICAgICAgICAgIHRoZSBzaGVsbCB1bmRlciB3aGljaCB0byBjcmVhdGUgdGhpcyBkaWFsb2cKLSAgICogQHBhcmFtIGRpYWxvZ1RpdGxlCi0gICAqICAgICAgICAgICAgdGhlIHRpdGxlIHRvIHVzZSBmb3IgdGhpcyBkaWFsb2csIG9yIDxjb2RlPm51bGw8L2NvZGU+IHRvCi0gICAqICAgICAgICAgICAgaW5kaWNhdGUgdGhhdCB0aGUgZGVmYXVsdCB0aXRsZSBzaG91bGQgYmUgdXNlZAotICAgKiBAcGFyYW0gbWVzc2FnZQotICAgKiAgICAgICAgICAgIHRoZSBtZXNzYWdlIHRvIHNob3cgaW4gdGhpcyBkaWFsb2csIG9yIDxjb2RlPm51bGw8L2NvZGU+IHRvCi0gICAqICAgICAgICAgICAgaW5kaWNhdGUgdGhhdCB0aGUgZXJyb3IncyBtZXNzYWdlIHNob3VsZCBiZSBzaG93biBhcyB0aGUKLSAgICogICAgICAgICAgICBwcmltYXJ5IG1lc3NhZ2UKLSAgICogQHBhcmFtIHN0YXR1cwotICAgKiAgICAgICAgICAgIHRoZSBlcnJvciB0byBzaG93IHRvIHRoZSB1c2VyCi0gICAqIEBwYXJhbSBkaXNwbGF5TWFzawotICAgKiAgICAgICAgICAgIHRoZSBtYXNrIHRvIHVzZSB0byBmaWx0ZXIgdGhlIGRpc3BsYXlpbmcgb2YgY2hpbGQgaXRlbXMsIGFzIHBlcgotICAgKiAgICAgICAgICAgIDxjb2RlPlN0YXR1cy5tYXRjaGVzPC9jb2RlPgotICAgKi8KLSAgcHVibGljIEluZm9EaWFsb2coCi0gICAgU2hlbGwgcGFyZW50U2hlbGwsCi0gICAgU3RyaW5nIGRpYWxvZ1RpdGxlLAotICAgIFN0cmluZyBtZXNzYWdlLAotICAgIElTdGF0dXMgc3RhdHVzLAotICAgIGludCBkaXNwbGF5TWFzaykKLSAgewotICAgIHN1cGVyKHBhcmVudFNoZWxsLCBkaWFsb2dUaXRsZSwgbWVzc2FnZSwgc3RhdHVzLCBkaXNwbGF5TWFzayk7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpIFRoaXMgc2hvdWxkIGFsc28gYmUgb3ZlcndyaXR0ZW4gTWV0aG9kIGRlY2xhcmVkIG9uIERpYWxvZy4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGNyZWF0ZUJ1dHRvbnNGb3JCdXR0b25CYXIoQ29tcG9zaXRlIHBhcmVudCkKLSAgewotICAgIC8vIGNyZWF0ZSBPSyBhbmQgRGV0YWlscyBidXR0b25zCi0gICAgY3JlYXRlQnV0dG9uKAotICAgICAgcGFyZW50LAotICAgICAgU3RhdHVzRGlhbG9nQ29uc3RhbnRzLk9LX0lELAotICAgICAgSURpYWxvZ0NvbnN0YW50cy5PS19MQUJFTCwKLSAgICAgIHRydWUpOwotICAgIGlmIChzdGF0dXMuaXNNdWx0aVN0YXR1cygpICkKLSAgICB7Ci0gICAgICBkZXRhaWxzQnV0dG9uID0KLSAgICAgICAgY3JlYXRlQnV0dG9uKAotICAgICAgICAgIHBhcmVudCwKLSAgICAgICAgICBTdGF0dXNEaWFsb2dDb25zdGFudHMuREVUQUlMU19JRCwKLSAgICAgICAgICBJRGlhbG9nQ29uc3RhbnRzLlNIT1dfREVUQUlMU19MQUJFTCwKLSAgICAgICAgICBmYWxzZSk7Ci0gICAgfQotICB9Ci0KLSAgLyoKLSAgICogVGhpcyBpcyBvbmUgb2YgdGhlIGZldyBtZXRob2RzIHRoYXQgbmVlZHMgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgdGhlCi0gICAqIHN1YmNsYXNzZXMuIFRoZSBpbWFnZSBuYW1lcyBjYW4gYmUgZm91bmQgaW4gdGhlIERpYWxvZyBjbGFzcwotICAgKi8KLSAgcHJvdGVjdGVkIEltYWdlIGdldERpYWxvZ0ltYWdlKCkKLSAgewotICAgIC8vIGNyZWF0ZSBpbWFnZQotICAgIHJldHVybiBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldERpc3BsYXkoKS5nZXRTeXN0ZW1JbWFnZShTV1QuSUNPTl9JTkZPUk1BVElPTik7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvTWVzc2FnZURpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvTWVzc2FnZURpYWxvZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGFmNzIzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZGlhbG9nL01lc3NhZ2VEaWFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU4NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MDQgICAxMjg5ODQgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5kaWFsb2c7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLklEaWFsb2dDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSkZhY2VSZXNvdXJjZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuQ29sb3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkltYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5Qb2ludDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGFiZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbW1vbi5TdHJpbmdVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkNob2ljZTsKLQotCi0vKioKLSAqIEEgZGlhbG9nIHRvIGRpc3BsYXkgb25lIG9yIG1vcmUgZXJyb3JzIHRvIHRoZSB1c2VyLCBhcyBjb250YWluZWQgaW4gYW4KLSAqIDxjb2RlPlN0YXR1czwvY29kZT4gb2JqZWN0LiBJZiBhbiBlcnJvciBjb250YWlucyBhZGRpdGlvbmFsIGRldGFpbGVkCi0gKiBpbmZvcm1hdGlvbiB0aGVuIGEgRGV0YWlscyBidXR0b24gaXMgYXV0b21hdGljYWxseSBzdXBwbGllZCwgd2hpY2ggc2hvd3Mgb3IKLSAqIGhpZGVzIGFuIGVycm9yIGRldGFpbHMgdmlld2VyIHdoZW4gcHJlc3NlZCBieSB0aGUgdXNlci4KLSAqICAKLSAqLwotcHVibGljIGNsYXNzIE1lc3NhZ2VEaWFsb2cgZXh0ZW5kcyBEaWFsb2cKLXsKLSAgcHJvdGVjdGVkIENvbXBvc2l0ZSBwYXJlbnQ7Ci0KLSAgLyoqCi0gICAqIFJlc2VydmUgcm9vbSBmb3IgdGhpcyBtYW55IGxpc3QgaXRlbXMuCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBMSVNUX0lURU1fQ09VTlQgPSA3OwotCi0gIC8qKgotICAgKiBUaGUgRGV0YWlscyBidXR0b24uCi0gICAqLwotICBwcm90ZWN0ZWQgQnV0dG9uIGRldGFpbHNCdXR0b247Ci0KLSAgLyoqCi0gICAqIFRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyB0aXRsZTsKLQotICAvKioKLSAgICogVGhlIG1lc3NhZ2UgdG8gZGlzcGxheS4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgbWVzc2FnZTsKLQotICAvKioKLSAgICogVGhlIFNXVCBsaXN0IGNvbnRyb2wgdGhhdCBkaXNwbGF5cyB0aGUgZXJyb3IgZGV0YWlscy4KLSAgICovCi0gIHByb3RlY3RlZCBMaXN0IGxpc3Q7Ci0gIHByb3RlY3RlZCBUZXh0IGRldGFpbHM7Ci0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBlcnJvciBkZXRhaWxzIHZpZXdlciBpcyBjdXJyZW50bHkgY3JlYXRlZC4KLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIGxpc3RDcmVhdGVkID0gZmFsc2U7Ci0gIHByb3RlY3RlZCBib29sZWFuIGRldGFpbHNDcmVhdGVkID0gZmFsc2U7Ci0KLSAgLyoqCi0gICAqIEZpbHRlciBtYXNrIGZvciBkZXRlcm1pbmluZyB3aGljaCBzdGF0dXMgaXRlbXMgdG8gZGlzcGxheS4KLSAgICovCi0gIHByb3RlY3RlZCBpbnQgZGlzcGxheU1hc2sgPSAweEZGRkY7Ci0KLSAgLyoqCi0gICAqIFRoZSBtYWluIHN0YXR1cyBvYmplY3QuCi0gICAqLwotICBwcm90ZWN0ZWQgSVN0YXR1cyBzdGF0dXM7Ci0gIAotICBwcml2YXRlIFBvaW50IHNhdmVkU2l6ZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIExpc3Qgb2YgdGhlIG1haW4gZXJyb3Igb2JqZWN0J3MgZGV0YWlsZWQgZXJyb3JzIChlbGVtZW50IHR5cGU6IDxjb2RlPlN0YXR1czwvY29kZT4pLgotICAgKi8KLSAgcHJvdGVjdGVkIGphdmEudXRpbC5MaXN0IHN0YXR1c0xpc3Q7Ci0gIC8qKgotICAgKiBDcmVhdGVzIGFuIGVycm9yIGRpYWxvZy4gTm90ZSB0aGF0IHRoZSBkaWFsb2cgd2lsbCBoYXZlIG5vIHZpc3VhbAotICAgKiByZXByZXNlbnRhdGlvbiAobm8gd2lkZ2V0cykgdW50aWwgaXQgaXMgdG9sZCB0byBvcGVuLgotICAgKiA8cD4KLSAgICogTm9ybWFsbHkgb25lIHNob3VsZCB1c2UgPGNvZGU+b3BlbkVycm9yPC9jb2RlPiB0byBjcmVhdGUgYW5kIG9wZW4gb25lIG9mCi0gICAqIHRoZXNlLiBUaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWZ1bCBvbmx5IGlmIHRoZSBlcnJvciBvYmplY3QgYmVpbmcgZGlzcGxheWVkCi0gICAqIGNvbnRhaW5zIGNoaWxkIGl0ZW1zIDxpdD5hbmQ8L2l0PiB5b3UgbmVlZCB0byBzcGVjaWZ5IGEgbWFzayB3aGljaCB3aWxsCi0gICAqIGJlIHVzZWQgdG8gZmlsdGVyIHRoZSBkaXNwbGF5aW5nIG9mIHRoZXNlIGNoaWxkcmVuLgotICAgKiA8L3A+Ci0gICAqIAotICAgKiBAcGFyYW0gcGFyZW50U2hlbGwKLSAgICogICAgICAgICAgICB0aGUgc2hlbGwgdW5kZXIgd2hpY2ggdG8gY3JlYXRlIHRoaXMgZGlhbG9nCi0gICAqIEBwYXJhbSBkaWFsb2dUaXRsZQotICAgKiAgICAgICAgICAgIHRoZSB0aXRsZSB0byB1c2UgZm9yIHRoaXMgZGlhbG9nLCBvciA8Y29kZT5udWxsPC9jb2RlPiB0bwotICAgKiAgICAgICAgICAgIGluZGljYXRlIHRoYXQgdGhlIGRlZmF1bHQgdGl0bGUgc2hvdWxkIGJlIHVzZWQKLSAgICogQHBhcmFtIG1lc3NhZ2UKLSAgICogICAgICAgICAgICB0aGUgbWVzc2FnZSB0byBzaG93IGluIHRoaXMgZGlhbG9nLCBvciA8Y29kZT5udWxsPC9jb2RlPiB0bwotICAgKiAgICAgICAgICAgIGluZGljYXRlIHRoYXQgdGhlIGVycm9yJ3MgbWVzc2FnZSBzaG91bGQgYmUgc2hvd24gYXMgdGhlCi0gICAqICAgICAgICAgICAgcHJpbWFyeSBtZXNzYWdlCi0gICAqIEBwYXJhbSBzdGF0dXMKLSAgICogICAgICAgICAgICB0aGUgZXJyb3IgdG8gc2hvdyB0byB0aGUgdXNlcgotICAgKiBAcGFyYW0gZGlzcGxheU1hc2sKLSAgICogICAgICAgICAgICB0aGUgbWFzayB0byB1c2UgdG8gZmlsdGVyIHRoZSBkaXNwbGF5aW5nIG9mIGNoaWxkIGl0ZW1zLCBhcyBwZXIKLSAgICogICAgICAgICAgICA8Y29kZT5TdGF0dXMubWF0Y2hlczwvY29kZT4KLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlRGlhbG9nKAotICAgIFNoZWxsIHBhcmVudFNoZWxsLAotICAgIFN0cmluZyBkaWFsb2dUaXRsZSwKLSAgICBTdHJpbmcgbWVzc2FnZSwKLSAgICBJU3RhdHVzIHN0YXR1cywKLSAgICBpbnQgZGlzcGxheU1hc2spCi0gIHsKLSAgICBzdXBlcihwYXJlbnRTaGVsbCk7Ci0gICAgICB0aGlzLnRpdGxlID0gZGlhbG9nVGl0bGUgPT0gbnVsbCA/IEpGYWNlUmVzb3VyY2VzLmdldFN0cmluZygiUHJvYmxlbV9PY2N1cnJlZCIpIDogLy8kTk9OLU5MUy0xJAotICBkaWFsb2dUaXRsZTsKLSAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlID09IG51bGwgPyBzdGF0dXMuZ2V0TWVzc2FnZSgpIDogSkZhY2VSZXNvdXJjZXMuZm9ybWF0KCJSZWFzb24iLCBuZXcgT2JqZWN0W10geyBtZXNzYWdlLCBzdGF0dXMuZ2V0TWVzc2FnZSgpfSk7IC8vJE5PTi1OTFMtMSQKLSAgICB0aGlzLnN0YXR1cyA9IHN0YXR1czsKLSAgICBzdGF0dXNMaXN0ID0gQXJyYXlzLmFzTGlzdChzdGF0dXMuZ2V0Q2hpbGRyZW4oKSk7Ci0gICAgdGhpcy5kaXNwbGF5TWFzayA9IGRpc3BsYXlNYXNrOwotICAgIHNldFNoZWxsU3R5bGUoU1dULkRJQUxPR19UUklNIHwgU1dULlJFU0laRSB8IFNXVC5BUFBMSUNBVElPTl9NT0RBTCk7Ci0gIH0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKSBNZXRob2QgZGVjbGFyZWQgb24gRGlhbG9nLiBIYW5kbGVzIHRoZSBwcmVzc2luZyBvZiB0aGUgT2sgb3IKLSAgICogRGV0YWlscyBidXR0b24gaW4gdGhpcyBkaWFsb2cuIElmIHRoZSBPayBidXR0b24gd2FzIHByZXNzZWQgdGhlbiBjbG9zZQotICAgKiB0aGlzIGRpYWxvZy4gSWYgdGhlIERldGFpbHMgYnV0dG9uIHdhcyBwcmVzc2VkIHRoZW4gdG9nZ2xlIHRoZSBkaXNwbGF5aW5nCi0gICAqIG9mIHRoZSBlcnJvciBkZXRhaWxzIGFyZWEuIE5vdGUgdGhhdCB0aGUgRGV0YWlscyBidXR0b24gd2lsbCBvbmx5IGJlCi0gICAqIHZpc2libGUgaWYgdGhlIGVycm9yIGJlaW5nIGRpc3BsYXllZCBzcGVjaWZpZXMgY2hpbGQgZGV0YWlscy4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGJ1dHRvblByZXNzZWQoaW50IGlkKQotICB7Ci0gICAgaWYgKGlkID09IFN0YXR1c0RpYWxvZ0NvbnN0YW50cy5ERVRBSUxTX0lEKQotICAgIHsgLy8gd2FzIHRoZSBkZXRhaWxzIGJ1dHRvbiBwcmVzc2VkPwotICAgICAgdG9nZ2xlRGV0YWlsc0FyZWEoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHN1cGVyLmJ1dHRvblByZXNzZWQoaWQpOwotICAgIH0KLSAgfQotICAvKgotICAgKiAobm9uLUphdmFkb2MpIE1ldGhvZCBkZWNsYXJlZCBpbiBXaW5kb3cuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBjb25maWd1cmVTaGVsbChTaGVsbCBzaGVsbCkKLSAgewotICAgIHN1cGVyLmNvbmZpZ3VyZVNoZWxsKHNoZWxsKTsKLSAgICBzaGVsbC5zZXRUZXh0KHRpdGxlKTsKLSAgfQotICAvKgotICAgKiAobm9uLUphdmFkb2MpIFRoaXMgc2hvdWxkIGFsc28gYmUgb3ZlcndyaXR0ZW4gTWV0aG9kIGRlY2xhcmVkIG9uIERpYWxvZy4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGNyZWF0ZUJ1dHRvbnNGb3JCdXR0b25CYXIoQ29tcG9zaXRlIHBhcmVudCkKLSAgewotICAgIC8vIGNyZWF0ZSBPSyBhbmQgRGV0YWlscyBidXR0b25zCi0gICAgY3JlYXRlQnV0dG9uKAotICAgICAgcGFyZW50LAotICAgICAgU3RhdHVzRGlhbG9nQ29uc3RhbnRzLk9LX0lELAotICAgICAgSURpYWxvZ0NvbnN0YW50cy5PS19MQUJFTCwKLSAgICAgIHRydWUpOwotICAgIGlmIChzdGF0dXMuaXNNdWx0aVN0YXR1cygpIHx8IHN0YXR1cy5nZXRFeGNlcHRpb24oKSAhPSBudWxsICkKLSAgICB7Ci0gICAgICBkZXRhaWxzQnV0dG9uID0KLSAgICAgICAgY3JlYXRlQnV0dG9uKAotICAgICAgICAgIHBhcmVudCwKLSAgICAgICAgICBTdGF0dXNEaWFsb2dDb25zdGFudHMuREVUQUlMU19JRCwKLSAgICAgICAgICBJRGlhbG9nQ29uc3RhbnRzLlNIT1dfREVUQUlMU19MQUJFTCwKLSAgICAgICAgICBmYWxzZSk7Ci0gICAgfQotICAgIAotICAgIHBhcmVudC5zZXRMYXlvdXREYXRhKCBuZXcgR3JpZERhdGEoIEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCApKTsKLSAgfQotCi0gIC8qCi0gICAqIFRoaXMgaXMgb25lIG9mIHRoZSBmZXcgbWV0aG9kcyB0aGF0IG5lZWRzIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZQotICAgKiBzdWJjbGFzc2VzLiBUaGUgaW1hZ2UgbmFtZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBEaWFsb2cgY2xhc3MKLSAgICovCi0gIHByb3RlY3RlZCBJbWFnZSBnZXREaWFsb2dJbWFnZSgpCi0gIHsKLSAgICAvLyBjcmVhdGUgaW1hZ2UKLSAgICByZXR1cm4gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXREaXNwbGF5KCkuZ2V0U3lzdGVtSW1hZ2UoU1dULklDT05fSU5GT1JNQVRJT04pOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKSBNZXRob2QgZGVjbGFyZWQgb24gRGlhbG9nLiBDcmVhdGVzIGFuZCByZXR1cm5zIHRoZSBjb250ZW50cwotICAgKiBvZiB0aGUgdXBwZXIgcGFydCBvZiB0aGUgZGlhbG9nIChhYm92ZSB0aGUgYnV0dG9uIGJhcikuCi0gICAqLwotICBwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVEaWFsb2dBcmVhKENvbXBvc2l0ZSBwYXJlbnQpCi0gIHsKLSAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKLQotICAgIC8vIGNyZWF0ZSBjb21wb3NpdGUKLSAgICBDb21wb3NpdGUgY29tcG9zaXRlID0gKENvbXBvc2l0ZSkgc3VwZXIuY3JlYXRlRGlhbG9nQXJlYShwYXJlbnQpOwotICAgIENvbXBvc2l0ZSBpbWFnZUFuZExhYmVsID0gbmV3IENvbXBvc2l0ZShjb21wb3NpdGUsIFNXVC5OT05FKTsKLSAgICBHcmlkTGF5b3V0IGdsID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICBnbC5udW1Db2x1bW5zID0gMjsKLSAgICBpbWFnZUFuZExhYmVsLnNldExheW91dChnbCk7Ci0gICAgaW1hZ2VBbmRMYWJlbC5zZXRMYXlvdXREYXRhKCBuZXcgR3JpZERhdGEoIEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCApICk7Ci0gICAgY29tcG9zaXRlLnNldExheW91dERhdGEoIG5ldyBHcmlkRGF0YSggR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMICkpOwotICAgIAotICAgIC8vIGNyZWF0ZSBpbWFnZQotICAgIEltYWdlIGltYWdlID0gZ2V0RGlhbG9nSW1hZ2UoKTsKLSAgICBpZiAoaW1hZ2UgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMYWJlbCBsYWJlbCA9IG5ldyBMYWJlbChpbWFnZUFuZExhYmVsLCAwKTsKLSAgICAgIGltYWdlLnNldEJhY2tncm91bmQobGFiZWwuZ2V0QmFja2dyb3VuZCgpKTsKLSAgICAgIGxhYmVsLnNldEltYWdlKGltYWdlKTsKLSAgICAgIGxhYmVsLnNldExheW91dERhdGEoCi0gICAgICAgIG5ldyBHcmlkRGF0YSgKLSAgICAgICAgICBHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0NFTlRFUgotICAgICAgICAgICAgfCBHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9CRUdJTk5JTkcpKTsKLSAgICB9Ci0KLSAgICAvLyBjcmVhdGUgbWVzc2FnZQotICAgIGlmIChtZXNzYWdlICE9IG51bGwpCi0gICAgewotICAgICAgVGV4dCB0ZXh0ID0gbmV3IFRleHQoaW1hZ2VBbmRMYWJlbCwgU1dULlJFQURfT05MWXxTV1QuV1JBUCk7Ci0gICAgICB0ZXh0LnNldFRleHQobWVzc2FnZSk7Ci0gICAgICBHcmlkRGF0YSBkYXRhID0KLSAgICAgICAgbmV3IEdyaWREYXRhKAotICAgICAgICAgIEdyaWREYXRhLkdSQUJfSE9SSVpPTlRBTAotICAgICAgICAgICAgfCBHcmlkRGF0YS5HUkFCX1ZFUlRJQ0FMCi0gICAgICAgICAgICB8IEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTAotICAgICAgICAgICAgfCBHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9DRU5URVIpOwotICAgICAgZGF0YS53aWR0aEhpbnQgPQotICAgICAgICBjb252ZXJ0SG9yaXpvbnRhbERMVXNUb1BpeGVscygKLSAgICAgICAgICBJRGlhbG9nQ29uc3RhbnRzLk1JTklNVU1fTUVTU0FHRV9BUkVBX1dJRFRIKTsKLSAgICAgCi0gICAgICB0ZXh0LnNldExheW91dERhdGEoZGF0YSk7Ci0gICAgICB0ZXh0LnNldEZvbnQocGFyZW50LmdldEZvbnQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbXBvc2l0ZTsKLSAgfQotCi0gIHByb3RlY3RlZCBMaXN0IGNyZWF0ZURyb3BEb3duTGlzdChDb21wb3NpdGUgcGFyZW50KQotICB7Ci0gICAgLy8gY3JlYXRlIHRoZSBsaXN0Ci0gICAgbGlzdCA9IG5ldyBMaXN0KHBhcmVudCwgU1dULkJPUkRFUiB8IFNXVC5IX1NDUk9MTCB8IFNXVC5WX1NDUk9MTCk7Ci0KLSAgICAvLyBmaWxsIHRoZSBsaXN0Ci0gICAgcG9wdWxhdGVMaXN0KGxpc3QpOwotCi0gICAgR3JpZERhdGEgZGF0YSA9Ci0gICAgICBuZXcgR3JpZERhdGEoCi0gICAgICAgIEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTAotICAgICAgICAgIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMCi0gICAgICAgICAgfCBHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9GSUxMCi0gICAgICAgICAgfCBHcmlkRGF0YS5HUkFCX1ZFUlRJQ0FMKTsKLSAgICBkYXRhLmhlaWdodEhpbnQgPSBsaXN0LmdldEl0ZW1IZWlnaHQoKSAqIExJU1RfSVRFTV9DT1VOVDsKLSAgICBsaXN0LnNldExheW91dERhdGEoZGF0YSk7Ci0gICAgbGlzdENyZWF0ZWQgPSB0cnVlOwotICAgIHJldHVybiBsaXN0OwotICB9Ci0gIHByb3RlY3RlZCBUZXh0IGNyZWF0ZURyb3BEb3duRGV0YWlscyhDb21wb3NpdGUgcGFyZW50KQotICB7Ci0gICAgZGV0YWlscyA9IG5ldyBUZXh0KHBhcmVudCwgU1dULkJPUkRFUiB8IFNXVC5IX1NDUk9MTCB8IFNXVC5WX1NDUk9MTCB8IFNXVC5SRUFEX09OTFkgfCBTV1QuV1JBUCApOwotICAgIC8vZGV0YWlscy5zZXRFZGl0YWJsZShmYWxzZSk7Ci0gICAgQ29sb3IgY29sb3IgPSBwYXJlbnQuZ2V0U2hlbGwoKS5nZXREaXNwbGF5KCkuZ2V0U3lzdGVtQ29sb3IoIFNXVC5DT0xPUl9XSElURSApOwotICAgIGRldGFpbHMuc2V0QmFja2dyb3VuZChjb2xvcik7Ci0gICAgcG9wdWxhdGVEZXRhaWxzKGRldGFpbHMsIHN0YXR1cywgMCk7Ci0gICAgR3JpZERhdGEgZGF0YSA9Ci0gICAgICBuZXcgR3JpZERhdGEoCi0gICAgICAgIEdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTAotICAgICAgICAgIHwgR3JpZERhdGEuR1JBQl9IT1JJWk9OVEFMCi0gICAgICAgICAgfCBHcmlkRGF0YS5WRVJUSUNBTF9BTElHTl9GSUxMCi0gICAgICAgICAgfCBHcmlkRGF0YS5HUkFCX1ZFUlRJQ0FMKTsKLSAgICAKLSAgICBkZXRhaWxzLnNldExheW91dERhdGEoZGF0YSk7Ci0gICAgZGV0YWlscy5zZXRTZWxlY3Rpb24oMCk7Ci0gICAgZGV0YWlsc0NyZWF0ZWQgPSB0cnVlOwotICAgIHJldHVybiBkZXRhaWxzOwotICB9Ci0gIC8qCi0gICAqIChub24tSmF2YWRvYykgTWV0aG9kIGRlY2xhcmVkIG9uIFdpbmRvdy4KLSAgICovCi0gIC8qKgotICAgKiBFeHRlbmRzIDxjb2RlPldpbmRvdy5vcGVuKCk8L2NvZGU+LiBPcGVucyBhbiBlcnJvciBkaWFsb2cgdG8gZGlzcGxheQotICAgKiB0aGUgZXJyb3IuIElmIHlvdSBzcGVjaWZpZWQgYSBtYXNrIHRvIGZpbHRlciB0aGUgZGlzcGxheWluZyBvZiB0aGVzZQotICAgKiBjaGlsZHJlbiwgdGhlIGVycm9yIGRpYWxvZyB3aWxsIG9ubHkgYmUgZGlzcGxheWVkIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZQotICAgKiBjaGlsZCBzdGF0dXMgbWF0Y2hpbmcgdGhlIG1hc2suCi0gICAqLwotICBwdWJsaWMgaW50IG9wZW4oKQotICB7Ci0gICAgaWYgKHNob3VsZERpc3BsYXkoc3RhdHVzLCBkaXNwbGF5TWFzaykpCi0gICAgewotICAgICAgcmV0dXJuIHN1cGVyLm9wZW4oKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgLyoqCi0gICAqIFRoaXMgZXNzZW50aWFsbHkgZG9lcyB0aGUgd29yayBvZiBhIGZhY3RvcnkgT3BlbnMgYW4gZXJyb3IgZGlhbG9nIHRvCi0gICAqIGRpc3BsYXkgdGhlIGdpdmVuIGVycm9yLiBVc2UgdGhpcyBtZXRob2QgaWYgdGhlIGVycm9yIG9iamVjdCBiZWluZwotICAgKiBkaXNwbGF5ZWQgZG9lcyBub3QgY29udGFpbiBjaGlsZCBpdGVtcywgb3IgaWYgeW91IHdpc2ggdG8gZGlzcGxheSBhbGwgc3VjaAotICAgKiBpdGVtcyB3aXRob3V0IGZpbHRlcmluZy4KLSAgICogCi0gICAqIEBwYXJhbSBwYXJlbnQKLSAgICogICAgICAgICAgICB0aGUgcGFyZW50IHNoZWxsIG9mIHRoZSBkaWFsb2csIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vbmUKLSAgICogQHBhcmFtIGRpYWxvZ1RpdGxlCi0gICAqICAgICAgICAgICAgdGhlIHRpdGxlIHRvIHVzZSBmb3IgdGhpcyBkaWFsb2csIG9yIDxjb2RlPm51bGw8L2NvZGU+IHRvCi0gICAqICAgICAgICAgICAgaW5kaWNhdGUgdGhhdCB0aGUgZGVmYXVsdCB0aXRsZSBzaG91bGQgYmUgdXNlZAotICAgKiBAcGFyYW0gbWVzc2FnZQotICAgKiAgICAgICAgICAgIHRoZSBtZXNzYWdlIHRvIHNob3cgaW4gdGhpcyBkaWFsb2csIG9yIDxjb2RlPm51bGw8L2NvZGU+IHRvCi0gICAqICAgICAgICAgICAgaW5kaWNhdGUgdGhhdCB0aGUgZXJyb3IncyBtZXNzYWdlIHNob3VsZCBiZSBzaG93biBhcyB0aGUKLSAgICogICAgICAgICAgICBwcmltYXJ5IG1lc3NhZ2UKLSAgICogQHBhcmFtIHN0YXR1cwotICAgKiAgICAgICAgICAgIHRoZSBlcnJvciB0byBzaG93IHRvIHRoZSB1c2VyCi0gICAqIEByZXR1cm4gdGhlIGNvZGUgb2YgdGhlIGJ1dHRvbiB0aGF0IHdhcyBwcmVzc2VkIHRoYXQgcmVzdWx0ZWQgaW4gdGhpcwotICAgKiAgICAgICAgIGRpYWxvZyBjbG9zaW5nLiBUaGlzIHdpbGwgYmUgPGNvZGU+RGlhbG9nLk9LPC9jb2RlPiBpZiB0aGUgT0sKLSAgICogICAgICAgICBidXR0b24gd2FzIHByZXNzZWQsIG9yIDxjb2RlPkRpYWxvZy5DQU5DRUw8L2NvZGU+IGlmIHRoaXMKLSAgICogICAgICAgICBkaWFsb2cncyBjbG9zZSB3aW5kb3cgZGVjb3JhdGlvbiBvciB0aGUgRVNDIGtleSB3YXMgdXNlZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IG9wZW5NZXNzYWdlKAotICAgIFNoZWxsIHBhcmVudCwKLSAgICBTdHJpbmcgZGlhbG9nVGl0bGUsCi0gICAgU3RyaW5nIG1lc3NhZ2UsCi0gICAgSVN0YXR1cyBzdGF0dXMpCi0gIHsKLQotICAgIHN3aXRjaCAoc3RhdHVzLmdldFNldmVyaXR5KCkpCi0gICAgewotICAgICAgY2FzZSBJU3RhdHVzLklORk8gOgotICAgICAgICByZXR1cm4gb3BlbkluZm8oCi0gICAgICAgICAgcGFyZW50LAotICAgICAgICAgIGRpYWxvZ1RpdGxlLAotICAgICAgICAgIG1lc3NhZ2UsCi0gICAgICAgICAgc3RhdHVzLAotICAgICAgICAgIElTdGF0dXMuT0sgfCBJU3RhdHVzLklORk8gfCBJU3RhdHVzLldBUk5JTkcgfCBJU3RhdHVzLkVSUk9SKTsKLSAgICAgIGNhc2UgSVN0YXR1cy5XQVJOSU5HIDoKLSAgICAgICAgcmV0dXJuIG9wZW5XYXJuaW5nKAotICAgICAgICAgIHBhcmVudCwKLSAgICAgICAgICBkaWFsb2dUaXRsZSwKLSAgICAgICAgICBtZXNzYWdlLAotICAgICAgICAgIHN0YXR1cywKLSAgICAgICAgICBJU3RhdHVzLk9LIHwgSVN0YXR1cy5JTkZPIHwgSVN0YXR1cy5XQVJOSU5HIHwgSVN0YXR1cy5FUlJPUik7Ci0gICAgICBkZWZhdWx0IDoKLSAgICAgICAgcmV0dXJuIG9wZW5FcnJvcigKLSAgICAgICAgICBwYXJlbnQsCi0gICAgICAgICAgZGlhbG9nVGl0bGUsCi0gICAgICAgICAgbWVzc2FnZSwKLSAgICAgICAgICBzdGF0dXMsCi0gICAgICAgICAgSVN0YXR1cy5PSyB8IElTdGF0dXMuSU5GTyB8IElTdGF0dXMuV0FSTklORyB8IElTdGF0dXMuRVJST1IpOwotICAgIH0KLQotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBpbnQgb3Blbk1lc3NhZ2UoCi0gICAgU2hlbGwgcGFyZW50LAotICAgIFN0cmluZyBkaWFsb2dUaXRsZSwKLSAgICBTdHJpbmcgbWVzc2FnZSwKLSAgICBJU3RhdHVzIHN0YXR1cywKLSAgICBDaG9pY2VbXSBvcHRpb25zKQotICB7Ci0KLSAgICByZXR1cm4gb3Blbk9wdGlvbnMoCi0gICAgICBwYXJlbnQsCi0gICAgICBkaWFsb2dUaXRsZSwKLSAgICAgIG1lc3NhZ2UsCi0gICAgICBzdGF0dXMsCi0gICAgICBJU3RhdHVzLk9LIHwgSVN0YXR1cy5JTkZPIHwgSVN0YXR1cy5XQVJOSU5HIHwgSVN0YXR1cy5FUlJPUiwKLSAgICAgIG9wdGlvbnMpOwotICB9Ci0KLSAgLyoqCi0gICAqIE9wZW5zIGFuIGVycm9yIGRpYWxvZyB0byBkaXNwbGF5IHRoZSBnaXZlbiBlcnJvci4gVXNlIHRoaXMgbWV0aG9kIGlmIHRoZQotICAgKiBlcnJvciBvYmplY3QgYmVpbmcgZGlzcGxheWVkIGNvbnRhaW5zIGNoaWxkIGl0ZW1zIDxpdD5hbmQ8L2l0PiB5b3Ugd2lzaAotICAgKiB0byBzcGVjaWZ5IGEgbWFzayB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZmlsdGVyIHRoZSBkaXNwbGF5aW5nIG9mIHRoZXNlCi0gICAqIGNoaWxkcmVuLiBUaGUgZXJyb3IgZGlhbG9nIHdpbGwgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lCi0gICAqIGNoaWxkIHN0YXR1cyBtYXRjaGluZyB0aGUgbWFzay4KLSAgICogCi0gICAqIEBwYXJhbSBwYXJlbnRTaGVsbAotICAgKiAgICAgICAgICAgIHRoZSBwYXJlbnQgc2hlbGwgb2YgdGhlIGRpYWxvZywgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm9uZQotICAgKiBAcGFyYW0gZGlhbG9nVGl0bGUKLSAgICogICAgICAgICAgICB0aGUgdGl0bGUgdG8gdXNlIGZvciB0aGlzIGRpYWxvZywgb3IgPGNvZGU+bnVsbDwvY29kZT4gdG8KLSAgICogICAgICAgICAgICBpbmRpY2F0ZSB0aGF0IHRoZSBkZWZhdWx0IHRpdGxlIHNob3VsZCBiZSB1c2VkCi0gICAqIEBwYXJhbSBtZXNzYWdlCi0gICAqICAgICAgICAgICAgdGhlIG1lc3NhZ2UgdG8gc2hvdyBpbiB0aGlzIGRpYWxvZywgb3IgPGNvZGU+bnVsbDwvY29kZT4gdG8KLSAgICogICAgICAgICAgICBpbmRpY2F0ZSB0aGF0IHRoZSBlcnJvcidzIG1lc3NhZ2Ugc2hvdWxkIGJlIHNob3duIGFzIHRoZQotICAgKiAgICAgICAgICAgIHByaW1hcnkgbWVzc2FnZQotICAgKiBAcGFyYW0gc3RhdHVzCi0gICAqICAgICAgICAgICAgdGhlIGVycm9yIHRvIHNob3cgdG8gdGhlIHVzZXIKLSAgICogQHBhcmFtIGRpc3BsYXlNYXNrCi0gICAqICAgICAgICAgICAgdGhlIG1hc2sgdG8gdXNlIHRvIGZpbHRlciB0aGUgZGlzcGxheWluZyBvZiBjaGlsZCBpdGVtcywgYXMgcGVyCi0gICAqICAgICAgICAgICAgPGNvZGU+U3RhdHVzLm1hdGNoZXM8L2NvZGU+Ci0gICAqIEByZXR1cm4gdGhlIGNvZGUgb2YgdGhlIGJ1dHRvbiB0aGF0IHdhcyBwcmVzc2VkIHRoYXQgcmVzdWx0ZWQgaW4gdGhpcwotICAgKiAgICAgICAgIGRpYWxvZyBjbG9zaW5nLiBUaGlzIHdpbGwgYmUgPGNvZGU+RGlhbG9nLk9LPC9jb2RlPiBpZiB0aGUgT0sKLSAgICogICAgICAgICBidXR0b24gd2FzIHByZXNzZWQsIG9yIDxjb2RlPkRpYWxvZy5DQU5DRUw8L2NvZGU+IGlmIHRoaXMKLSAgICogICAgICAgICBkaWFsb2cncyBjbG9zZSB3aW5kb3cgZGVjb3JhdGlvbiBvciB0aGUgRVNDIGtleSB3YXMgdXNlZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IG9wZW5FcnJvcigKLSAgICBTaGVsbCBwYXJlbnRTaGVsbCwKLSAgICBTdHJpbmcgdGl0bGUsCi0gICAgU3RyaW5nIG1lc3NhZ2UsCi0gICAgSVN0YXR1cyBzdGF0dXMsCi0gICAgaW50IGRpc3BsYXlNYXNrKQotICB7Ci0gICAgRXJyb3JEaWFsb2cgZGlhbG9nID0KLSAgICAgIG5ldyBFcnJvckRpYWxvZyhwYXJlbnRTaGVsbCwgdGl0bGUsIG1lc3NhZ2UsIHN0YXR1cywgZGlzcGxheU1hc2spOwotICAgIHJldHVybiBkaWFsb2cub3BlbigpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBpbnQgb3BlbkluZm8oCi0gICAgU2hlbGwgcGFyZW50U2hlbGwsCi0gICAgU3RyaW5nIHRpdGxlLAotICAgIFN0cmluZyBtZXNzYWdlLAotICAgIElTdGF0dXMgc3RhdHVzLAotICAgIGludCBkaXNwbGF5TWFzaykKLSAgewotICAgIEluZm9EaWFsb2cgZGlhbG9nID0KLSAgICAgIG5ldyBJbmZvRGlhbG9nKHBhcmVudFNoZWxsLCB0aXRsZSwgbWVzc2FnZSwgc3RhdHVzLCBkaXNwbGF5TWFzayk7Ci0gICAgcmV0dXJuIGRpYWxvZy5vcGVuKCk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIGludCBvcGVuV2FybmluZygKLSAgICBTaGVsbCBwYXJlbnRTaGVsbCwKLSAgICBTdHJpbmcgdGl0bGUsCi0gICAgU3RyaW5nIG1lc3NhZ2UsCi0gICAgSVN0YXR1cyBzdGF0dXMsCi0gICAgaW50IGRpc3BsYXlNYXNrKQotICB7Ci0gICAgV2FybmluZ0RpYWxvZyBkaWFsb2cgPQotICAgICAgbmV3IFdhcm5pbmdEaWFsb2cocGFyZW50U2hlbGwsIHRpdGxlLCBtZXNzYWdlLCBzdGF0dXMsIGRpc3BsYXlNYXNrKTsKLSAgICByZXR1cm4gZGlhbG9nLm9wZW4oKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgaW50IG9wZW5PcHRpb25zKAotICAgIFNoZWxsIHBhcmVudFNoZWxsLAotICAgIFN0cmluZyB0aXRsZSwKLSAgICBTdHJpbmcgbWVzc2FnZSwKLSAgICBJU3RhdHVzIHN0YXR1cywKLSAgICBpbnQgZGlzcGxheU1hc2ssCi0gICAgQ2hvaWNlW10gb3B0aW9ucykKLSAgewotICAgIE9wdGlvbnNEaWFsb2cgZGlhbG9nID0KLSAgICAgIG5ldyBPcHRpb25zRGlhbG9nKAotICAgICAgICBwYXJlbnRTaGVsbCwKLSAgICAgICAgdGl0bGUsCi0gICAgICAgIG1lc3NhZ2UsCi0gICAgICAgIHN0YXR1cywKLSAgICAgICAgZGlzcGxheU1hc2ssCi0gICAgICAgIG9wdGlvbnMpOwotICAgIGRpYWxvZy5vcGVuKCk7Ci0gICAgcmV0dXJuIGRpYWxvZy5nZXRSZXR1cm5Db2RlKCk7Ci0gIH0KLQotICAvKioKLSAgICogUG9wdWxhdGVzIHRoZSBsaXN0IHVzaW5nIHRoaXMgZXJyb3IgZGlhbG9nJ3Mgc3RhdHVzIG9iamVjdC4gVGhpcyB3YWxrcyB0aGUKLSAgICogY2hpbGQgc3RhdGkgb2YgdGhlIHN0YXR1cyBvYmplY3QgYW5kIGRpc3BsYXlzIHRoZW0gaW4gYSBsaXN0LiBUaGUgZm9ybWF0Ci0gICAqIGZvciBlYWNoIGVudHJ5IGlzIHN0YXR1c19wYXRoIDogc3RhdHVzX21lc3NhZ2UgSWYgdGhlIHN0YXR1cydzIHBhdGggd2FzCi0gICAqIG51bGwgdGhlbiBpdCAoYW5kIHRoZSBjb2xvbikgYXJlIG9taXR0ZWQuCi0gICAqLwotICBwcml2YXRlIHZvaWQgcG9wdWxhdGVMaXN0KExpc3QgbGlzdCkKLSAgewotICAgIEl0ZXJhdG9yIGVudW1lcmF0aW9uID0gc3RhdHVzTGlzdC5pdGVyYXRvcigpOwotICAgIHdoaWxlIChlbnVtZXJhdGlvbi5oYXNOZXh0KCkpCi0gICAgewotICAgICAgSVN0YXR1cyBjaGlsZFN0YXR1cyA9IChJU3RhdHVzKSBlbnVtZXJhdGlvbi5uZXh0KCk7Ci0gICAgICBwb3B1bGF0ZUxpc3QobGlzdCwgY2hpbGRTdGF0dXMsIDApOwotICAgIH0KLSAgfQotICBwcml2YXRlIHZvaWQgcG9wdWxhdGVMaXN0KExpc3QgbGlzdCwgSVN0YXR1cyBzdGF0dXMsIGludCBuZXN0aW5nKQotICB7Ci0gICAgaWYgKCFzdGF0dXMubWF0Y2hlcyhkaXNwbGF5TWFzaykpCi0gICAgewotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuZXN0aW5nOyBpKyspCi0gICAgewotICAgICAgc2IuYXBwZW5kKCIgICIpOwotICAgIH0KLSAgICBzYi5hcHBlbmQoc3RhdHVzLmdldE1lc3NhZ2UoKSk7Ci0gICAgbGlzdC5hZGQoc2IudG9TdHJpbmcoKSk7Ci0gICAgSVN0YXR1c1tdIGNoaWxkcmVuID0gc3RhdHVzLmdldENoaWxkcmVuKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBwb3B1bGF0ZUxpc3QobGlzdCwgY2hpbGRyZW5baV0sIG5lc3RpbmcgKyAxKTsKLSAgICB9Ci0gIH0KLSAgcHJpdmF0ZSB2b2lkIHBvcHVsYXRlRGV0YWlscyhUZXh0IHRleHQsIElTdGF0dXMgc3RhdHVzLCBpbnQgbmVzdGluZykKLSAgewotICAgIGlmICghc3RhdHVzLm1hdGNoZXMoZGlzcGxheU1hc2spKQotICAgIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIFN0cmluZyAgICB0YWJDaGFycyAgICA9IFN0cmluZ1V0aWxzLnJlcGVhdCggJyAnLCBuZXN0aW5nICogMiApOwotICAgIFN0cmluZyAgICBtZXNzYWdlTGluZSA9IHRhYkNoYXJzICsgc3RhdHVzLmdldE1lc3NhZ2UoKSArIFN5c3RlbS5nZXRQcm9wZXJ0eSgibGluZS5zZXBhcmF0b3IiKTsKLSAgICBUaHJvd2FibGUgZXhjZXB0ICAgICAgPSBzdGF0dXMuZ2V0RXhjZXB0aW9uKCk7Ci0gICAgCi0gICAgdGV4dC5hcHBlbmQoIG1lc3NhZ2VMaW5lICk7Ci0gICAgCi0gICAgaWYoIGV4Y2VwdCAhPSBudWxsICkKLSAgICB7Ci0gICAgICBTdHJpbmdbXSB0cmFjZSA9IFN0cmluZ1V0aWxzLmdldFN0YWNrVHJhY2UoIGV4Y2VwdCApOwotICAgICAgCi0gICAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgdHJhY2UubGVuZ3RoOyBpbmRleCsrICkKLSAgICAgIHsKLSAgICAgICAgdGV4dC5hcHBlbmQoIHRhYkNoYXJzICsgIiAgICAiICsgdHJhY2VbaW5kZXhdICsgU3lzdGVtLmdldFByb3BlcnR5KCJsaW5lLnNlcGFyYXRvciIpICk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIElTdGF0dXNbXSBjaGlsZHJlbiA9IHN0YXR1cy5nZXRDaGlsZHJlbigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgcG9wdWxhdGVEZXRhaWxzKHRleHQsIGNoaWxkcmVuW2ldLCBuZXN0aW5nICsgMSk7Ci0gICAgfQotICB9Ci0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHN0YXR1cyBvYmplY3Qgc2hvdWxkIGJlIGRpc3BsYXllZC4KLSAgICogCi0gICAqIEBwYXJhbSBzdGF0dXMKLSAgICogICAgICAgICAgICBhIHN0YXR1cyBvYmplY3QKLSAgICogQHBhcmFtIG1hc2sKLSAgICogICAgICAgICAgICBhIG1hc2sgYXMgcGVyIDxjb2RlPlN0YXR1cy5tYXRjaGVzPC9jb2RlPgotICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBnaXZlbiBzdGF0dXMgc2hvdWxkIGJlIGRpc3BsYXllZCwgYW5kCi0gICAqICAgICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZQotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBib29sZWFuIHNob3VsZERpc3BsYXkoSVN0YXR1cyBzdGF0dXMsIGludCBtYXNrKQotICB7Ci0gICAgSVN0YXR1c1tdIGNoaWxkcmVuID0gc3RhdHVzLmdldENoaWxkcmVuKCk7Ci0gICAgaWYgKGNoaWxkcmVuID09IG51bGwgfHwgY2hpbGRyZW4ubGVuZ3RoID09IDApCi0gICAgewotICAgICAgcmV0dXJuIHN0YXR1cy5tYXRjaGVzKG1hc2spOwotICAgIH0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChjaGlsZHJlbltpXS5tYXRjaGVzKG1hc2spKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIC8qKgotICAgKiBUb2dnbGVzIHRoZSB1bmZvbGRpbmcgb2YgdGhlIGRldGFpbHMgYXJlYS4gVGhpcyBpcyB0cmlnZ2VyZWQgYnkgdGhlIHVzZXIKLSAgICogcHJlc3NpbmcgdGhlIGRldGFpbHMgYnV0dG9uLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRvZ2dsZURldGFpbHNBcmVhKCkKLSAgewotICAgIFBvaW50IHdpbmRvd1NpemUgPSBnZXRTaGVsbCgpLmdldFNpemUoKTsKLSAgICBpbnQgICBuZXdIZWlnaHQgID0gLTE7Ci0gICAgCi0gICAgaWYgKGRldGFpbHNDcmVhdGVkKQotICAgIHsKLSAgICAgIGRldGFpbHMuZGlzcG9zZSgpOwotICAgICAgZGV0YWlsc0NyZWF0ZWQgPSBmYWxzZTsKLSAgICAgIGRldGFpbHNCdXR0b24uc2V0VGV4dChJRGlhbG9nQ29uc3RhbnRzLlNIT1dfREVUQUlMU19MQUJFTCk7Ci0gICAgICAKLSAgICAgIC8vIFdpdGhvdXQgdGhlIGZvbGxvd2luZyBjb21wdXRlU2l6ZSBjYWxsIHRoZSBzZXRTaXplIGNhbGwgYmVsb3cgdGhyb3dzIGFuIGFycmF5IG91dCBvZiBib3VuZHMgZXhjZXB0aW9uLgotICAgICAgLy8gVmVyeSB3ZWlyZC4KLSAgICAgIGdldENvbnRlbnRzKCkuY29tcHV0ZVNpemUoU1dULkRFRkFVTFQsIFNXVC5ERUZBVUxUKTsKLSAgICAgIAotICAgICAgbmV3SGVpZ2h0ID0gc2F2ZWRTaXplLnk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpZiggc2F2ZWRTaXplID09IG51bGwgKSBzYXZlZFNpemUgPSB3aW5kb3dTaXplOwotICAgICAgICAKLSAgICAgIGRldGFpbHMgPSBjcmVhdGVEcm9wRG93bkRldGFpbHMoKENvbXBvc2l0ZSkgZ2V0Q29udGVudHMoKSk7Ci0gICAgICBkZXRhaWxzQnV0dG9uLnNldFRleHQoSURpYWxvZ0NvbnN0YW50cy5ISURFX0RFVEFJTFNfTEFCRUwpOwotICAgICAgbmV3SGVpZ2h0ID0gZ2V0Q29udGVudHMoKS5jb21wdXRlU2l6ZShTV1QuREVGQVVMVCwgU1dULkRFRkFVTFQpLnk7Ci0gICAgICBuZXdIZWlnaHQgPSBuZXdIZWlnaHQgPCAyNTAgPyAyNTAgOiBuZXdIZWlnaHQ7Ci0gICAgfQotCi0gICAgbmV3SGVpZ2h0ID0gbmV3SGVpZ2h0ID4gNDAwID8gNDAwIDogbmV3SGVpZ2h0OwotICAgIAotICAgIGdldFNoZWxsKCkuc2V0U2l6ZSggbmV3IFBvaW50KHdpbmRvd1NpemUueCwgbmV3SGVpZ2h0KSApOwotICAgIHBhcmVudC5sYXlvdXQoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvT3B0aW9uc0RpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvT3B0aW9uc0RpYWxvZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjExNzlkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZGlhbG9nL09wdGlvbnNEaWFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmRpYWxvZzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuSURpYWxvZ0NvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5JbWFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkNob2ljZTsKLQotCi0vKioKLSAqIEEgZGlhbG9nIHRvIGRpc3BsYXkgb25lIG9yIG1vcmUgZXJyb3JzIHRvIHRoZSB1c2VyLCBhcyBjb250YWluZWQgaW4gYW4KLSAqIDxjb2RlPlN0YXR1czwvY29kZT4gb2JqZWN0LiBJZiBhbiBlcnJvciBjb250YWlucyBhZGRpdGlvbmFsIGRldGFpbGVkCi0gKiBpbmZvcm1hdGlvbiB0aGVuIGEgRGV0YWlscyBidXR0b24gaXMgYXV0b21hdGljYWxseSBzdXBwbGllZCwgd2hpY2ggc2hvd3Mgb3IKLSAqIGhpZGVzIGFuIGVycm9yIGRldGFpbHMgdmlld2VyIHdoZW4gcHJlc3NlZCBieSB0aGUgdXNlci4KLSAqICAKLSAqLwotcHVibGljIGNsYXNzIE9wdGlvbnNEaWFsb2cgZXh0ZW5kcyBNZXNzYWdlRGlhbG9nCi17Ci0gIHByaXZhdGUgQ2hvaWNlW10gY2hvaWNlczsKLSAgcHJpdmF0ZSBpbnQgcmV0dXJuQ29kZV87Ci0KLSAgcHVibGljIE9wdGlvbnNEaWFsb2coCi0gICAgU2hlbGwgcGFyZW50U2hlbGwsCi0gICAgU3RyaW5nIGRpYWxvZ1RpdGxlLAotICAgIFN0cmluZyBtZXNzYWdlLAotICAgIElTdGF0dXMgc3RhdHVzLAotICAgIGludCBkaXNwbGF5TWFzaywKLSAgICBDaG9pY2VbXSBjaG9pY2VzKQotICB7Ci0gICAgc3VwZXIocGFyZW50U2hlbGwsIGRpYWxvZ1RpdGxlLCBtZXNzYWdlLCBzdGF0dXMsIGRpc3BsYXlNYXNrKTsKLSAgICB0aGlzLmNob2ljZXMgPSBjaG9pY2VzOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKSBUaGlzIHNob3VsZCBhbHNvIGJlIG92ZXJ3cml0dGVuIE1ldGhvZCBkZWNsYXJlZCBvbiBEaWFsb2cuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGVCdXR0b25zRm9yQnV0dG9uQmFyKENvbXBvc2l0ZSBwYXJlbnQpCi0gIHsKLSAgICAvLyBjcmVhdGUgYSBidXR0b24gZm9yIGVhY2ggb3B0aW9ucwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hvaWNlcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBjcmVhdGVCdXR0b24ocGFyZW50LCBjaG9pY2VzW2ldLmdldFNob3J0Y3V0KCksIGNob2ljZXNbaV0uZ2V0TGFiZWwoKSwgdHJ1ZSk7Ci0gICAgfQotICAgIGlmIChzdGF0dXMuaXNNdWx0aVN0YXR1cygpICkKLSAgICB7Ci0gICAgICBkZXRhaWxzQnV0dG9uID0KLSAgICAgICAgY3JlYXRlQnV0dG9uKAotICAgICAgICAgIHBhcmVudCwKLSAgICAgICAgICBTdGF0dXNEaWFsb2dDb25zdGFudHMuREVUQUlMU19JRCwKLSAgICAgICAgICBJRGlhbG9nQ29uc3RhbnRzLlNIT1dfREVUQUlMU19MQUJFTCwKLSAgICAgICAgICBmYWxzZSk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgYnV0dG9uUHJlc3NlZChpbnQgaWQpCi0gIHsKLSAgICBpZiAoaWQgPT0gU3RhdHVzRGlhbG9nQ29uc3RhbnRzLkRFVEFJTFNfSUQpCi0gICAgICAvLyB3YXMgdGhlIERldGFpbHMgYnV0dG9uIHByZXNzZWQ/Ci0gICAgICBzdXBlci5idXR0b25QcmVzc2VkKGlkKTsKLSAgICBlbHNlCi0gICAgewotICAgICAgc2V0UmV0dXJuQ29kZShpZCk7Ci0gICAgICBjbG9zZSgpOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHNldFJldHVybkNvZGUoaW50IGlkKQotICB7Ci0gICAgcmV0dXJuQ29kZV8gPSBpZDsKLSAgfQotCi0gIHB1YmxpYyBpbnQgZ2V0UmV0dXJuQ29kZSgpCi0gIHsKLSAgICByZXR1cm4gcmV0dXJuQ29kZV87Ci0gIH0KLSAgLyoKLSAgICogVGhpcyBpcyBvbmUgb2YgdGhlIGZldyBtZXRob2RzIHRoYXQgbmVlZHMgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgdGhlCi0gICAqIHN1YmNsYXNzZXMuIFRoZSBpbWFnZSBuYW1lcyBjYW4gYmUgZm91bmQgaW4gdGhlIERpYWxvZyBjbGFzcwotICAgKi8KLSAgcHJvdGVjdGVkIEltYWdlIGdldERpYWxvZ0ltYWdlKCkKLSAgewotICAgIC8vIGNyZWF0ZSBpbWFnZQotICAgIHN3aXRjaCAoc3RhdHVzLmdldFNldmVyaXR5KCkpCi0gICAgewotICAgICAgY2FzZSBJU3RhdHVzLklORk8gOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXREaXNwbGF5KCkuZ2V0U3lzdGVtSW1hZ2UoU1dULklDT05fSU5GT1JNQVRJT04pOwotICAgICAgY2FzZSBJU3RhdHVzLldBUk5JTkcgOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXREaXNwbGF5KCkuZ2V0U3lzdGVtSW1hZ2UoU1dULklDT05fV0FSTklORyk7Ci0gICAgICBkZWZhdWx0IDoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0RGlzcGxheSgpLmdldFN5c3RlbUltYWdlKFNXVC5JQ09OX0VSUk9SKTsKLSAgICB9Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvUnVudGltZVN0cnVjdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvUnVudGltZVN0cnVjdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTkwMjQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZGlhbG9nL1J1bnRpbWVTdHJ1Y3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqICAgICB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwMjIxIDE0NjAyMyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZGlhbG9nOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmNvbW1vbi5MYWJlbHNBbmRJZHM7Ci0KLXB1YmxpYyBjbGFzcyBSdW50aW1lU3RydWN0IHsKLQotCXByaXZhdGUgU3RyaW5nIHJ1bnRpbWVJRF87Ci0JcHJpdmF0ZSBTdHJpbmcgcnVudGltZUxhYmVsXzsKLQlwcml2YXRlIExhYmVsc0FuZElkcyBzY2VuYXJpb3NfOwotCQotCXB1YmxpYyBSdW50aW1lU3RydWN0KFN0cmluZyBydW50aW1lSUQpewotCQlydW50aW1lSURfID0gcnVudGltZUlEOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0UnVudGltZUlEKCl7Ci0JCXJldHVybiBydW50aW1lSURfOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldFJ1bnRpbWVMYWJlbChTdHJpbmcgbGFiZWwpewotCQlydW50aW1lTGFiZWxfID0gbGFiZWw7Ci0JfQotCQotCXB1YmxpYyBTdHJpbmcgZ2V0UnVudGltZUxhYmVsKCl7Ci0JCXJldHVybiBydW50aW1lTGFiZWxfOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXRTY2VuYXJpbyhTdHJpbmcgaWQsIFN0cmluZyBsYWJlbCl7Ci0JCWlmKHNjZW5hcmlvc18gPT0gbnVsbCkgc2NlbmFyaW9zXyA9IG5ldyBMYWJlbHNBbmRJZHMoKTsgCi0JCWlmKGlkID09IG51bGwgfHwgbGFiZWwgPT0gbnVsbCkgcmV0dXJuOwotCQlzY2VuYXJpb3NfLmFkZChpZCxsYWJlbCk7Ci0JfQotCQotCXB1YmxpYyBMYWJlbHNBbmRJZHMgZ2V0U2NlbmFyaW9MYWJlbHMoKXsKLQkJcmV0dXJuIHNjZW5hcmlvc187Ci0JfQotCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvU3RhdHVzRGlhbG9nQ29uc3RhbnRzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2RpYWxvZy9TdGF0dXNEaWFsb2dDb25zdGFudHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU1Njc4OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2RpYWxvZy9TdGF0dXNEaWFsb2dDb25zdGFudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmRpYWxvZzsKLQotLyoqCi0qIENvbnN0YW50cyBmb3Igc3RhdHVzIGRpYWxvZ3MKLSovCi1wdWJsaWMgaW50ZXJmYWNlIFN0YXR1c0RpYWxvZ0NvbnN0YW50cyB7Ci0KLSAgLyoKLSAgKiBCdXR0b24gSUQgZm9yIHRoZSAiWWVzIiBidXR0b24KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgWUVTX0lEID0gMjsKLSAgLyoKLSAgKiBCdXR0b24gSUQgZm9yIHRoZSAiWWVzIHRvIGFsbCIgYnV0dG9uCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFlFU19UT19BTExfSUQgPSA0OwotICAvKgotICAqIEJ1dHRvbiBJRCBmb3IgdGhlICJDYW5jZWwiIGJ1dHRvbgotICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDQU5DRUxfSUQgPSAxOwotICAvKgotICAqIEJ1dHRvbiBJRCBmb3IgdGhlICJPSyIgYnV0dG9uCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9LX0lEID0gMDsKLSAgLyoKLSAgKiBCdXR0b24gSUQgZm9yIHRoZSAiRGV0YWlscyIgYnV0dG9uCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERFVEFJTFNfSUQgPSAxMzsKLQotICAvKgotICAqIEJ1dHRvbiBsYWJlbCBmb3IgdGhlICJZZXMiIGJ1dHRvbgotICAqLwotIC8vIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFlFU19MQUJFTCA9IEVudmlyb25tZW50UGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0TWVzc2FnZSgiJVNUQVRVU19ESUFMT0dfWUVTX0xBQkVMIik7Ci0gIC8qCi0gICogQnV0dG9uIGxhYmVsIGZvciB0aGUgIlllcyB0byBhbGwiIGJ1dHRvbgotICAqLwotIC8vIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFlFU19UT19BTExfTEFCRUwgPSBFbnZpcm9ubWVudFBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldE1lc3NhZ2UoIiVTVEFUVVNfRElBTE9HX1lFU19UT19BTExfTEFCRUwiKTsKLSAgLyoKLSAgKiBCdXR0b24gbGFiZWwgZm9yIHRoZSAiQ2FuY2VsIiBidXR0b24KLSAgKi8KLSAvLyBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDQU5DRUxfTEFCRUwgPSBFbnZpcm9ubWVudFBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldE1lc3NhZ2UoIiVTVEFUVVNfRElBTE9HX0NBTkNFTF9MQUJFTCIpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvV2FybmluZ0RpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9kaWFsb2cvV2FybmluZ0RpYWxvZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjU2OTVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZGlhbG9nL1dhcm5pbmdEaWFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmRpYWxvZzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuSURpYWxvZ0NvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5JbWFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLQotCi0vKioKLSAqIEEgZGlhbG9nIHRvIGRpc3BsYXkgb25lIG9yIG1vcmUgZXJyb3JzIHRvIHRoZSB1c2VyLCBhcyBjb250YWluZWQgaW4gYW4KLSAqIDxjb2RlPlN0YXR1czwvY29kZT4gb2JqZWN0LiBJZiBhbiBlcnJvciBjb250YWlucyBhZGRpdGlvbmFsIGRldGFpbGVkCi0gKiBpbmZvcm1hdGlvbiB0aGVuIGEgRGV0YWlscyBidXR0b24gaXMgYXV0b21hdGljYWxseSBzdXBwbGllZCwgd2hpY2ggc2hvd3Mgb3IKLSAqIGhpZGVzIGFuIGVycm9yIGRldGFpbHMgdmlld2VyIHdoZW4gcHJlc3NlZCBieSB0aGUgdXNlci4KLSAqICAKLSAqLwotcHVibGljIGNsYXNzIFdhcm5pbmdEaWFsb2cgZXh0ZW5kcyBNZXNzYWdlRGlhbG9nCi17Ci0gIC8qKgotICAgKiBDcmVhdGVzIGFuIGVycm9yIGRpYWxvZy4gTm90ZSB0aGF0IHRoZSBkaWFsb2cgd2lsbCBoYXZlIG5vIHZpc3VhbAotICAgKiByZXByZXNlbnRhdGlvbiAobm8gd2lkZ2V0cykgdW50aWwgaXQgaXMgdG9sZCB0byBvcGVuLgotICAgKiA8cD4KLSAgICogTm9ybWFsbHkgb25lIHNob3VsZCB1c2UgPGNvZGU+b3BlbkVycm9yPC9jb2RlPiB0byBjcmVhdGUgYW5kIG9wZW4gb25lIG9mCi0gICAqIHRoZXNlLiBUaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWZ1bCBvbmx5IGlmIHRoZSBlcnJvciBvYmplY3QgYmVpbmcgZGlzcGxheWVkCi0gICAqIGNvbnRhaW5zIGNoaWxkIGl0ZW1zIDxpdD5hbmQ8L2l0PiB5b3UgbmVlZCB0byBzcGVjaWZ5IGEgbWFzayB3aGljaCB3aWxsCi0gICAqIGJlIHVzZWQgdG8gZmlsdGVyIHRoZSBkaXNwbGF5aW5nIG9mIHRoZXNlIGNoaWxkcmVuLgotICAgKiA8L3A+Ci0gICAqIAotICAgKiBAcGFyYW0gcGFyZW50U2hlbGwKLSAgICogICAgICAgICAgICB0aGUgc2hlbGwgdW5kZXIgd2hpY2ggdG8gY3JlYXRlIHRoaXMgZGlhbG9nCi0gICAqIEBwYXJhbSBkaWFsb2dUaXRsZQotICAgKiAgICAgICAgICAgIHRoZSB0aXRsZSB0byB1c2UgZm9yIHRoaXMgZGlhbG9nLCBvciA8Y29kZT5udWxsPC9jb2RlPiB0bwotICAgKiAgICAgICAgICAgIGluZGljYXRlIHRoYXQgdGhlIGRlZmF1bHQgdGl0bGUgc2hvdWxkIGJlIHVzZWQKLSAgICogQHBhcmFtIG1lc3NhZ2UKLSAgICogICAgICAgICAgICB0aGUgbWVzc2FnZSB0byBzaG93IGluIHRoaXMgZGlhbG9nLCBvciA8Y29kZT5udWxsPC9jb2RlPiB0bwotICAgKiAgICAgICAgICAgIGluZGljYXRlIHRoYXQgdGhlIGVycm9yJ3MgbWVzc2FnZSBzaG91bGQgYmUgc2hvd24gYXMgdGhlCi0gICAqICAgICAgICAgICAgcHJpbWFyeSBtZXNzYWdlCi0gICAqIEBwYXJhbSBzdGF0dXMKLSAgICogICAgICAgICAgICB0aGUgZXJyb3IgdG8gc2hvdyB0byB0aGUgdXNlcgotICAgKiBAcGFyYW0gZGlzcGxheU1hc2sKLSAgICogICAgICAgICAgICB0aGUgbWFzayB0byB1c2UgdG8gZmlsdGVyIHRoZSBkaXNwbGF5aW5nIG9mIGNoaWxkIGl0ZW1zLCBhcyBwZXIKLSAgICogICAgICAgICAgICA8Y29kZT5TdGF0dXMubWF0Y2hlczwvY29kZT4KLSAgICovCi0gIHB1YmxpYyBXYXJuaW5nRGlhbG9nKAotICAgIFNoZWxsIHBhcmVudFNoZWxsLAotICAgIFN0cmluZyBkaWFsb2dUaXRsZSwKLSAgICBTdHJpbmcgbWVzc2FnZSwKLSAgICBJU3RhdHVzIHN0YXR1cywKLSAgICBpbnQgZGlzcGxheU1hc2spCi0gIHsKLSAgICBzdXBlcihwYXJlbnRTaGVsbCwgZGlhbG9nVGl0bGUsIG1lc3NhZ2UsIHN0YXR1cywgZGlzcGxheU1hc2spOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKSBUaGlzIHNob3VsZCBhbHNvIGJlIG92ZXJ3cml0dGVuIE1ldGhvZCBkZWNsYXJlZCBvbiBEaWFsb2cuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGVCdXR0b25zRm9yQnV0dG9uQmFyKENvbXBvc2l0ZSBwYXJlbnQpCi0gIHsKLSAgICAvLyBjcmVhdGUgT0ssIENhbmNlbCBhbmQgRGV0YWlscyBidXR0b25zCi0gICAgY3JlYXRlQnV0dG9uKAotICAgICAgcGFyZW50LAotICAgICAgU3RhdHVzRGlhbG9nQ29uc3RhbnRzLk9LX0lELAotICAgICAgSURpYWxvZ0NvbnN0YW50cy5PS19MQUJFTCwKLSAgICAgIHRydWUpOwotICAgIGNyZWF0ZUJ1dHRvbigKLSAgICAgIHBhcmVudCwKLSAgICAgIFN0YXR1c0RpYWxvZ0NvbnN0YW50cy5DQU5DRUxfSUQsCi0gICAgICBJRGlhbG9nQ29uc3RhbnRzLkNBTkNFTF9MQUJFTCwKLSAgICAgIGZhbHNlKTsKLSAgICBpZiAoc3RhdHVzLmlzTXVsdGlTdGF0dXMoKSkKLSAgICB7Ci0gICAgICBkZXRhaWxzQnV0dG9uID0KLSAgICAgICAgY3JlYXRlQnV0dG9uKAotICAgICAgICAgIHBhcmVudCwKLSAgICAgICAgICBTdGF0dXNEaWFsb2dDb25zdGFudHMuREVUQUlMU19JRCwKLSAgICAgICAgICBJRGlhbG9nQ29uc3RhbnRzLlNIT1dfREVUQUlMU19MQUJFTCwKLSAgICAgICAgICBmYWxzZSk7Ci0gICAgfQotICB9Ci0KLSAgLyoKLSAgICogVGhpcyBpcyBvbmUgb2YgdGhlIGZldyBtZXRob2RzIHRoYXQgbmVlZHMgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgdGhlCi0gICAqIHN1YmNsYXNzZXMuIFRoZSBpbWFnZSBuYW1lcyBjYW4gYmUgZm91bmQgaW4gdGhlIERpYWxvZyBjbGFzcwotICAgKi8KLSAgcHJvdGVjdGVkIEltYWdlIGdldERpYWxvZ0ltYWdlKCkKLSAgewotICAgIC8vIGNyZWF0ZSBpbWFnZQotICAgIHJldHVybiBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldERpc3BsYXkoKS5nZXRTeXN0ZW1JbWFnZShTV1QuSUNPTl9XQVJOSU5HKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2VjbGlwc2UvRWNsaXBzZVN0YXR1c0hhbmRsZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZWNsaXBzZS9FY2xpcHNlU3RhdHVzSGFuZGxlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWM3NjQ1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZWNsaXBzZS9FY2xpcHNlU3RhdHVzSGFuZGxlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDMxNCAgIDE3Njg4NiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MDUwMiAgIDE2MjI4NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgU2VydmVyIHB1Ymxpc2ggY2FuY2VsIGJ1dHRvbiB1bmF2YWlsYWJsZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5lY2xpcHNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLkVudmlyb25tZW50Q29yZU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkJhc2VTdGF0dXNIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5kaWFsb2cuTWVzc2FnZURpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZGlhbG9nLlN0YXR1c0RpYWxvZ0NvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkNob2ljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LlN0YXR1c0V4Y2VwdGlvbjsKLQotCi0vKioKLSAqIFRoaXMgaXMgdGhlIEVjbGlwc2UgVUkgdmVyc2lvbiBvZiB0aGUgSVN0YXR1c0hhbmRsZXIKLSAqLwotcHVibGljIGNsYXNzIEVjbGlwc2VTdGF0dXNIYW5kbGVyIGV4dGVuZHMgQmFzZVN0YXR1c0hhbmRsZXIKLXsKLSAgcHJpdmF0ZSBTaGVsbCAgIHNoZWxsICAgICAgID0gbnVsbDsKLSAgICAKLSAgcHVibGljIEVjbGlwc2VTdGF0dXNIYW5kbGVyKCkKLSAgeyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBFY2xpcHNlU3RhdHVzSGFuZGxlciggU2hlbGwgdGhlU2hlbGwgKQotICB7Ci0gICAgc2hlbGwgPSB0aGVTaGVsbDsgIAotICB9Ci0gICAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmVudi5jb21tb24uSVN0YXR1c0hhbmRsZXIjcmVwb3J0KG9yZy5lY2xpcHNlLmVudi5jb21tb24uU3RhdHVzLCBvcmcuZWNsaXBzZS5lbnYuY29tbW9uLkNob2ljZVtdKQotICAgKi8KLSAgcHVibGljIENob2ljZSByZXBvcnQoIGZpbmFsIElTdGF0dXMgc3RhdHVzLCBmaW5hbCBDaG9pY2VbXSBjaG9pY2VzKSAKLSAgewotICAgIGZpbmFsIGludFtdIHJlc3VsdCA9IG5ldyBpbnRbMV07Ci0gICAgCi0gICAgY2hlY2tTdGF0dXMoIHN0YXR1cyApOwotICAgIAotICAgIFJ1bm5hYmxlIHJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkKLSAgICB7Ci0gICAgICBwdWJsaWMgdm9pZCBydW4oKQotICAgICAgewotICAgICAgICByZXN1bHRbMF0gPQotICAgICAgICAgIE1lc3NhZ2VEaWFsb2cub3Blbk1lc3NhZ2UoIGdldFNoZWxsKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRDb3JlTWVzc2FnZXMuVElUTEVfV0FSTklORywgLy9UT0RPOiBTaG91bGQgYmUgaW5mZXJyZWQgZnJvbSBzdGF0dXMnIHNldmVyaXR5LgotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXMpOwotICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgRGlzcGxheS5nZXREZWZhdWx0KCkuc3luY0V4ZWMoIHJ1bm5hYmxlICk7Ci0gICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaG9pY2VzLmxlbmd0aDsgaSsrKQotICAgICB7Ci0gICAgICBpZiAoY2hvaWNlc1tpXS5nZXRTaG9ydGN1dCgpID09IHJlc3VsdFswXSApCi0gICAgICAgIHJldHVybiBjaG9pY2VzW2ldOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmVudi5jb21tb24uSVN0YXR1c0hhbmRsZXIjcmVwb3J0KG9yZy5lY2xpcHNlLmVudi5jb21tb24uU3RhdHVzKQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVwb3J0KElTdGF0dXMgc3RhdHVzKSB0aHJvd3MgU3RhdHVzRXhjZXB0aW9uCi0gIHsKLSAgICBib29sZWFuIHVzZXJPayA9IGZhbHNlOwotICAgIAotICAgIGNoZWNrU3RhdHVzKCBzdGF0dXMgKTsKLSAgICAKLSAgICBzd2l0Y2ggKHN0YXR1cy5nZXRTZXZlcml0eSgpKQotICAgIHsKLSAgICAgIC8vIGFuIGVycm9yIGhhcyBiZWVuIHJlcG9ydGVkIGFuZCB3ZSBuZWVkIHRvIHN0b3AgZXhlY3V0aW5nIHRoZSBjb21taW5nCi0gICAgICAvLyBjb21tYW5kcwotICAgICAgY2FzZSBTdGF0dXMuRVJST1IgOgotICAgICAgewotICAgICAgICB1c2VyT2sgPSByZXBvcnRFcnJvclN0YXR1cyhzdGF0dXMpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGNhc2UgU3RhdHVzLldBUk5JTkcgOgotICAgICAgewotICAgICAgICB1c2VyT2sgPSByZXBvcnRXYXJuaW5nKHN0YXR1cyk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfSAgICAgCi0gICAgICBjYXNlIFN0YXR1cy5JTkZPIDoKLSAgICAgIHsKLSAgICAgICAgdXNlck9rID0gdHJ1ZTsKLSAgICAgICAgcmVwb3J0SW5mbyhzdGF0dXMpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYoICF1c2VyT2sgKSB0aHJvdyBuZXcgU3RhdHVzRXhjZXB0aW9uKCBzdGF0dXMgKTsKLSAgfQotICAKLSAgcHJpdmF0ZSBib29sZWFuIHJlcG9ydFdhcm5pbmcoIGZpbmFsIElTdGF0dXMgc3RhdHVzICkKLSAgewotICAgIGZpbmFsIGludCB1c2VyUmVzcG9uc2VbXSA9IG5ldyBpbnRbMV07Ci0gICAgCi0gICAgUnVubmFibGUgcnVubmFibGUgPSBuZXcgUnVubmFibGUoKQotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIHJ1bigpCi0gICAgICB7Ci0gICAgICAgIHVzZXJSZXNwb25zZVswXSA9Ci0gICAgICAgICAgTWVzc2FnZURpYWxvZy5vcGVuTWVzc2FnZSggZ2V0U2hlbGwoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudENvcmVNZXNzYWdlcy5USVRMRV9XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzKTsKLSAgICAgIH0KLSAgICB9OwotICAgIAotICAgIERpc3BsYXkuZ2V0RGVmYXVsdCgpLnN5bmNFeGVjKCBydW5uYWJsZSApOwotICAgIAotICAgIHJldHVybiAodXNlclJlc3BvbnNlWzBdID09IFN0YXR1c0RpYWxvZ0NvbnN0YW50cy5PS19JRCk7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gcmVwb3J0RXJyb3JTdGF0dXMoZmluYWwgSVN0YXR1cyBzdGF0dXMpCi0gIHsKLQkvLyBubyBuZWVkIHRvIHJlcG9ydCBhbiBlbXB0eSBtZXNzYWdlIHdpdGggbm8gZXhjZXB0aW9uCi0JaWYgKCIiLmVxdWFscyhzdGF0dXMuZ2V0TWVzc2FnZSgpKSAmJiBzdGF0dXMuZ2V0RXhjZXB0aW9uKCkgPT0gbnVsbCkKLQkJcmV0dXJuIGZhbHNlOwotCSAgCi0gICAgUnVubmFibGUgcnVubmFibGUgPSBuZXcgUnVubmFibGUoKQotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIHJ1bigpCi0gICAgICB7Ci0gICAgICAgIE1lc3NhZ2VEaWFsb2cub3Blbk1lc3NhZ2UoIGdldFNoZWxsKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50Q29yZU1lc3NhZ2VzLlRJVExFX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOwotICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgRGlzcGxheS5nZXREZWZhdWx0KCkuc3luY0V4ZWMoIHJ1bm5hYmxlICk7Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gICAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5JU3RhdHVzSGFuZGxlciNyZXBvcnRFcnJvcihvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzKQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVwb3J0RXJyb3IoSVN0YXR1cyBzdGF0dXMpCi0gIHsKLSAgICBjaGVja1N0YXR1cyggc3RhdHVzICk7Ci0gICAgcmVwb3J0RXJyb3JTdGF0dXMoIHN0YXR1cyApOwotICB9Ci0gIAotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uSVN0YXR1c0hhbmRsZXIjcmVwb3J0SW5mbyhvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzKQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVwb3J0SW5mbyhmaW5hbCBJU3RhdHVzIHN0YXR1cykKLSAgewotICAgIFJ1bm5hYmxlIHJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkKLSAgICB7Ci0gICAgICBwdWJsaWMgdm9pZCBydW4oKQotICAgICAgewotICAgICAgICBNZXNzYWdlRGlhbG9nLm9wZW5NZXNzYWdlKCBnZXRTaGVsbCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudENvcmVNZXNzYWdlcy5USVRMRV9JTkZPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOwotICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgRGlzcGxheS5nZXREZWZhdWx0KCkuc3luY0V4ZWMoIHJ1bm5hYmxlICk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU2hlbGwgZ2V0U2hlbGwoKQotICB7Ci0gICAgaWYoIHNoZWxsICE9IG51bGwgKSByZXR1cm4gc2hlbGw7Ci0gICAgCi0gICAgRGlzcGxheSBkaXNwbGF5ID0gRGlzcGxheS5nZXREZWZhdWx0KCk7Ci0gICAgCi0gICAgcmV0dXJuIGRpc3BsYXkgPT0gbnVsbCA/IG51bGwgOiBkaXNwbGF5LmdldEFjdGl2ZVNoZWxsKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZWNsaXBzZS9FbnZpcm9ubWVudFV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2VjbGlwc2UvRW52aXJvbm1lbnRVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTFkZTM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvZWNsaXBzZS9FbnZpcm9ubWVudFV0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmVjbGlwc2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlRyYW5zaWVudFJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5FY2xpcHNlRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBFbnZpcm9ubWVudFV0aWxzCi17ICAgICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gZW52IFRoaXMgc2hvdWxkIGJlIGFuIEVjbGlwc2VFbnZpcm9ubWVudC4KLSAgICogQHJldHVybiBSZXR1cm5zIGEgUmVzb3VyY2VDb250ZXh0LgotICAgKi8gCi0gIHB1YmxpYyBzdGF0aWMgUmVzb3VyY2VDb250ZXh0IGdldFJlc291cmNlQ29udGV4dCggSUVudmlyb25tZW50IGVudiApCi0gIHsKLSAgICBSZXNvdXJjZUNvbnRleHQgY29udGV4dCA9IG51bGw7Ci0gICAgCi0gICAgaWYoIGVudiBpbnN0YW5jZW9mIEVjbGlwc2VFbnZpcm9ubWVudCApCi0gICAgewotICAgICAgY29udGV4dCA9ICgoRWNsaXBzZUVudmlyb25tZW50KWVudikuZ2V0UmVzb3VyY2VDb250ZXh0KCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBjb250ZXh0ID0gbmV3IFRyYW5zaWVudFJlc291cmNlQ29udGV4dCgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gY29udGV4dDsKLSAgfQotICAKLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2VjbGlwc2UvU1dURW52aXJvbm1lbnRNYW5hZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL2VjbGlwc2UvU1dURW52aXJvbm1lbnRNYW5hZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MTMyYmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9lY2xpcHNlL1NXVEVudmlyb25tZW50TWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZQotICogYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZWNsaXBzZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0LlBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQmFzZUVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5FY2xpcHNlRW52aXJvbm1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBTV1RFbnZpcm9ubWVudE1hbmFnZXIKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgYW4gSUVudmlyb25tZW50IGZvciB0aGUgRWNsaXBzZSBTV1QgR1VJLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBCYXNlRWNsaXBzZUVudmlyb25tZW50IGdldE5ld1NXVEVudmlyb25tZW50KCkKLSAgewotICAgIFBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQgY29udGV4dCAgICAgICAgPSBQZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0LmdldEluc3RhbmNlKCk7Ci0gICAgRWNsaXBzZVN0YXR1c0hhbmRsZXIgICAgICBoYW5kbGVyICAgICAgICA9IG5ldyBFY2xpcHNlU3RhdHVzSGFuZGxlcigpOwotICAgIEVjbGlwc2VFbnZpcm9ubWVudCAgICAgICAgZW52aXJvbm1lbnQgICAgPSBuZXcgRWNsaXBzZUVudmlyb25tZW50KCBudWxsLCBjb250ZXh0LCBoYW5kbGVyICk7Ci0gICAgCi0gICAgcmV0dXJuIGVudmlyb25tZW50OyAgCi0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvcGx1Z2luL0VudlVJUGx1Z2luLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3BsdWdpbi9FbnZVSVBsdWdpbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzE1ZDYwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvcGx1Z2luL0VudlVJUGx1Z2luLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5wbHVnaW47Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7Ci0KLS8qKgotICogVGhlIG1haW4gcGx1Z2luIGNsYXNzIHRvIGJlIHVzZWQgaW4gdGhlIGRlc2t0b3AuCi0gKi8KLXB1YmxpYyBjbGFzcyBFbnZVSVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7Ci0KLQkvL1RoZSBzaGFyZWQgaW5zdGFuY2UuCi0JcHJpdmF0ZSBzdGF0aWMgRW52VUlQbHVnaW4gaW5zdGFuY2U7Ci0KLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IuCi0JICovCi0JcHVibGljIEVudlVJUGx1Z2luKCkgewotCQlzdXBlcigpOwotCQlpbnN0YW5jZSA9IHRoaXM7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRW52VUlQbHVnaW4gZ2V0SW5zdGFuY2UoKSB7Ci0JCXJldHVybiBpbnN0YW5jZTsKLQl9Ci0JIHB1YmxpYyBzdGF0aWMgSW1hZ2VEZXNjcmlwdG9yIGdldEltYWdlRGVzY3JpcHRvciAoIFN0cmluZyBuYW1lICkKLQkgIHsKLQkgICAgdHJ5Ci0JICAgIHsKLQkgICAgICBVUkwgaW5zdGFsbFVSTCA9IGluc3RhbmNlLmdldEJ1bmRsZSgpLmdldEVudHJ5KCIvIik7Ci0JICAgICAgVVJMIGltYWdlVVJMID0gbmV3IFVSTChpbnN0YWxsVVJMLG5hbWUpOwotCSAgICAgIHJldHVybiBJbWFnZURlc2NyaXB0b3IuY3JlYXRlRnJvbVVSTChpbWFnZVVSTCk7Ci0JICAgIH0KLQkgICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotCSAgICB7Ci0JICAgICAgcmV0dXJuIG51bGw7Ci0JICAgIH0KLQkgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvcHJlZmVyZW5jZXMvQWN0aW9uRGlhbG9nc1ByZWZlcmVuY2VQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3ByZWZlcmVuY2VzL0FjdGlvbkRpYWxvZ3NQcmVmZXJlbmNlUGFnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWU0YTc5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvcHJlZmVyZW5jZXMvQWN0aW9uRGlhbG9nc1ByZWZlcmVuY2VQYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDcyNiAgIDE1MTg2NiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgUG9wdXAgRGlhbG9nIFNlbGVjdGlvbiBwcmVmZXJlbmNlcyBkZWZhdWx0cyBpbmNvcnJlY3RseSB0byBoaWRlIGFsbAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5wcmVmZXJlbmNlczsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4ZWN1dGFibGVFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucHJlZmVyZW5jZS5QcmVmZXJlbmNlUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGFiZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoUHJlZmVyZW5jZVBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dC5QZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnByZWZlcmVuY2VzLkFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5FbnZpcm9ubWVudFVJTWVzc2FnZXM7Ci0KLQotLyoqCi0gKiBUaGlzIGNsYXNzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHBvcHVwIGFjdGlvbnMgcHJlZmVyZW5jZSBwYWdlIGZvciBhIAotICogcGFydGljdWxhciBjYXRlZ29yeS4gIEZvciBleGFtcGxlOgotICoKLSAqIDxwcmU+Ci0gKiAgJmx0O2V4dGVuc2lvbgotICogICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5wcmVmZXJlbmNlUGFnZXMiJmd0OwotICogICAgICZsdDtwYWdlCi0gKiAgICAgICAgICAgbmFtZT0iJVBSRUZFUkVOQ0VfQ0FURUdPUllfRElBTE9HUyIKLSAqICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0LndzLnVpLnByZWZlcmVuY2VzLm5hbWUiCi0gKiAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5wcmVmZXJlbmNlcy5BY3Rpb25EaWFsb2dzUHJlZmVyZW5jZVBhZ2UiCi0gKiAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53c3MucG9wdXAuY2F0ZWdvcnkiJmd0OwotICogICAgICZsdDsvcGFnZSZndDsKLSAqICogPC9wcmU+Ci0gKiBUaGlzIGVudHJ5IHNwZWNpZmllcyB0aGF0IGFsbCBwb3B1cCBhY3Rpb25zIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUKLSAqIG9yZy5lY2xpcHNlLmpzdC53c3MucG9wdXAuY2F0ZWdvcnkgd2lsbCBiZSBkaXNwbGF5ZWQgb24gdGhpcwotICogcHJlZmVyZW5jZSBwYWdlLgotICovCi1wdWJsaWMgY2xhc3MgQWN0aW9uRGlhbG9nc1ByZWZlcmVuY2VQYWdlIGV4dGVuZHMgUHJlZmVyZW5jZVBhZ2UgaW1wbGVtZW50cyBJV29ya2JlbmNoUHJlZmVyZW5jZVBhZ2UsIExpc3RlbmVyLCBJRXhlY3V0YWJsZUV4dGVuc2lvbgotewotICAvKkNPTlRFWFRfSUQgUFBBRDAwMDEgZm9yIHRoZSBBY3Rpb24gRGlhbG9ncyBQcmVmZXJlbmNlIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BQQURfUEFHRSA9ICJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkuUFBBRDAwMDEiOwotICAvLwotICBwcml2YXRlIEJ1dHRvbiBzaG93QWxsOwotICAvKkNPTlRFWFRfSUQgUFBBRDAwMDIgZm9yIHRoZSAgc2hvdyBhbGwgY2hlY2sgYm94IG9uIHRoZSBBY3Rpb24gRGlhbG9ncyBQcmVmZXJlbmNlIFBhZ2UqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BQQURfQlVUVE9OX1NIT1dfQUxMID0gIm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS5QUEFEMDAwMiI7Ci0gIC8vCi0gIHByaXZhdGUgQnV0dG9uIGhpZGVBbGw7Ci0gIC8qQ09OVEVYVF9JRCBQUEFEMDAwMyBmb3IgdGhlICBoaWRlIGFsbCBjaGVjayBib3ggb24gdGhlIEFjdGlvbiBEaWFsb2dzIFByZWZlcmVuY2UgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFBBRF9CVVRUT05fSElERV9BTEwgPSAib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLlBQQUQwMDAzIjsKLQotICBwcml2YXRlIEhhc2h0YWJsZSBjaGVja0JveGVzXzsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgY2F0ZWdvcnlJZF87Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJbml0aWFsaXphdGlvbkRhdGEoIElDb25maWd1cmF0aW9uRWxlbWVudCBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgICAgZGF0YSApCi0gICAgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAgIGNhdGVnb3J5SWRfICAgPSBjb25maWcuZ2V0QXR0cmlidXRlKCAiaWQiICk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBwcmVmZXJlbmNlIHBhZ2UgY29udHJvbHMgb24gZGVtYW5kLgotICAgKiAgIEBwYXJhbSBwYXJlbnQgIHRoZSBwYXJlbnQgZm9yIHRoZSBwcmVmZXJlbmNlIHBhZ2UKLSAgICovCi0gIHByb3RlY3RlZCBDb250cm9sIGNyZWF0ZUNvbnRlbnRzKENvbXBvc2l0ZSBzdXBlcnBhcmVudCkKLSAgewotICAgCi0gICAgY2hlY2tCb3hlc18gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgYWRkT3B0aW9uYWxEaWFsb2dzQ2hlY2tCb3hlcyAoc3VwZXJwYXJlbnQpOwotCW5ldyBMYWJlbChzdXBlcnBhcmVudCwgU1dULkhPUklaT05UQUwpOwotCQotICAgIENvbXBvc2l0ZSAgIHBhcmVudCA9IG5ldyBDb21wb3NpdGUoIHN1cGVycGFyZW50LCBTV1QuTk9ORSApOwkKLSAgICBHcmlkTGF5b3V0IGxheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgbGF5b3V0Lm51bUNvbHVtbnMgPSAyOwotICAgIHBhcmVudC5zZXRMYXlvdXQoIGxheW91dCApOwotICAgIHBhcmVudC5zZXRUb29sVGlwVGV4dChFbnZpcm9ubWVudFVJTWVzc2FnZXMuVE9PTFRJUF9QUEFEX1BBR0UpOwotICAgIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAocGFyZW50LCBJTkZPUE9QX1BQQURfUEFHRSApOwotCQotICAgIHNob3dBbGwgPSBuZXcgQnV0dG9uKHBhcmVudCwgU1dULk5PTkUpOwotICAgIHNob3dBbGwuc2V0VGV4dChFbnZpcm9ubWVudFVJTWVzc2FnZXMuQlVUVE9OX1NIT1dfQUxMX0RJQUxPR1MpOwotICAgIHNob3dBbGwuYWRkTGlzdGVuZXIoU1dULlNlbGVjdGlvbiwgdGhpcyk7Ci0gICAgc2hvd0FsbC5zZXRUb29sVGlwVGV4dChFbnZpcm9ubWVudFVJTWVzc2FnZXMuVE9PTFRJUF9QUEFEX0JVVFRPTl9TSE9XX0FMTCk7Ci0gICAgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscChzaG93QWxsLCBJTkZPUE9QX1BQQURfQlVUVE9OX1NIT1dfQUxMICk7Ci0gICAKLSAgICBoaWRlQWxsID0gbmV3IEJ1dHRvbihwYXJlbnQsIFNXVC5OT05FKTsKLSAgICBoaWRlQWxsLnNldFRleHQoRW52aXJvbm1lbnRVSU1lc3NhZ2VzLkJVVFRPTl9ISURFX0FMTF9ESUFMT0dTKTsKLSAgICBoaWRlQWxsLmFkZExpc3RlbmVyICggU1dULlNlbGVjdGlvbiwgdGhpcyk7Ci0gICAgaGlkZUFsbC5zZXRUb29sVGlwVGV4dChFbnZpcm9ubWVudFVJTWVzc2FnZXMuVE9PTFRJUF9QUEFEX0JVVFRPTl9ISURFX0FMTCk7Ci0gICAgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscChoaWRlQWxsLCBJTkZPUE9QX1BQQURfQlVUVE9OX0hJREVfQUxMICk7Ci0KLSAgICBpbml0aWFsaXplVmFsdWVzKCk7Ci0gICAgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2cuYXBwbHlEaWFsb2dGb250KHN1cGVycGFyZW50KTsKLSAgICByZXR1cm4gcGFyZW50OwotICB9Ci0KLSBwdWJsaWMgdm9pZCBoYW5kbGVFdmVudCAoRXZlbnQgZXZlbnQpIAotIHsKLSAgICBpZiAoc2hvd0FsbCA9PSBldmVudC53aWRnZXQpCi0JCWhhbmRsZVNob3dBbGxFdmVudCgpOwotICAgIAotICAgIGVsc2UgaWYgKCBoaWRlQWxsID09IGV2ZW50LndpZGdldCkKLSAgICAJaGFuZGxlSGlkZUFsbEV2ZW50KCk7Ci0gfQotCi0gcHJpdmF0ZSB2b2lkIGhhbmRsZVNob3dBbGxFdmVudCAoKQotIHsKLSAgICBFbnVtZXJhdGlvbiBlID0gY2hlY2tCb3hlc18uZWxlbWVudHMoKTsKLSAJZm9yIChpbnQgaT0wOyBlLmhhc01vcmVFbGVtZW50cygpOyBpKyspCi0gICAgCXsKLSAgICAJCUJ1dHRvbiBkaWFsb2cgPSAoQnV0dG9uKSBlLm5leHRFbGVtZW50KCk7Ci0gICAgCQlkaWFsb2cuc2V0U2VsZWN0aW9uKCBmYWxzZSApOwotICAgIAl9ICAgICAgICAgICAgICAgICAgICAgIAotIH0KLQotIHByaXZhdGUgdm9pZCBoYW5kbGVIaWRlQWxsRXZlbnQgKCkKLSB7Ci0gCUVudW1lcmF0aW9uIGUgPSBjaGVja0JveGVzXy5lbGVtZW50cygpOwotIAlmb3IgKGludCBpPTA7IGUuaGFzTW9yZUVsZW1lbnRzKCk7IGkrKykKLSAgICAJewotICAgIAkJQnV0dG9uIGRpYWxvZyA9IChCdXR0b24pIGUubmV4dEVsZW1lbnQoKTsKLSAgICAJCWRpYWxvZy5zZXRTZWxlY3Rpb24oIHRydWUgKTsKLSAgICAJfQotIH0KLSAKLSBwcml2YXRlIHZvaWQgYWRkT3B0aW9uYWxEaWFsb2dzQ2hlY2tCb3hlcyAoIENvbXBvc2l0ZSBwYXJlbnQpCi0gIHsKLSAgICBQZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQgY29udGV4dCA9IFBlcnNpc3RlbnRBY3Rpb25EaWFsb2dzQ29udGV4dC5nZXRJbnN0YW5jZSgpOwotICAgIEFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlW10gZGlhbG9ncyA9IGNvbnRleHQuZ2V0RGlhbG9ncygpOwotICAgIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGlhbG9ncy5sZW5ndGg7IGkrKykgCi0gICAgewotICAgICAgQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUgZGlhbG9nICAgPSBkaWFsb2dzW2ldOwotICAgICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgPSBkaWFsb2cuZ2V0Q2F0ZWdvcnkoKTsKLSAgICAgIAotICAgICAgaWYoIGRpYWxvZy5nZXRTaG93Q2hlY2tib3goKSAmJiAgY2F0ZWdvcnkgIT0gbnVsbCAmJiBjYXRlZ29yeS5lcXVhbHMoIGNhdGVnb3J5SWRfKSApCi0gICAgICB7Ci0gICAgCUJ1dHRvbiBjaGVja0JveCA9IGNyZWF0ZUNoZWNrQm94KHBhcmVudCwgZGlhbG9nLmdldE5hbWUoKSk7Ci0gICAgCWNoZWNrQm94LnNldFRvb2xUaXBUZXh0KCBkaWFsb2cuZ2V0VG9vbHRpcCgpICk7Ci0gICAgCVBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SGVscFN5c3RlbSgpLnNldEhlbHAoY2hlY2tCb3gsIGRpYWxvZy5nZXRJbmZvcG9wKCkgKTsKLSAgICAJY2hlY2tCb3hlc18ucHV0KGRpYWxvZy5nZXRJZCgpLCBjaGVja0JveCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIEJ1dHRvbiBjcmVhdGVDaGVja0JveCggQ29tcG9zaXRlIHBhcmVudCwgU3RyaW5nIHRleHQgKQotICB7Ci0gICAgQnV0dG9uIGJ1dHRvbiA9IG5ldyBCdXR0b24oIHBhcmVudCwgU1dULkNIRUNLICk7Ci0gICAgYnV0dG9uLnNldFRleHQoIHRleHQgKTsKLSAgICByZXR1cm4gYnV0dG9uOwotICB9Ci0KLSAgLyoqCi0gICAqIERvZXMgYW55dGhpbmcgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIGRlZmF1bHQgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtRGVmYXVsdHMoKQotICB7Ci0gICAgc3VwZXIucGVyZm9ybURlZmF1bHRzKCk7Ci0gICAgaW5pdGlhbGl6ZURlZmF1bHRzKCk7Ci0gIH0KLQotICAvKioKLSAgICogRG8gYW55dGhpbmcgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIE9LIGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkLgotICAgKiAgQHJldHVybiB3aGV0aGVyIGl0IGlzIG9rYXkgdG8gY2xvc2UgdGhlIHByZWZlcmVuY2UgcGFnZQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gcGVyZm9ybU9rKCkKLSAgewotICAgIHN0b3JlVmFsdWVzKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtQXBwbHkoKQotICB7Ci0gICAgcGVyZm9ybU9rKCk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBJV29ya2JlbmNoUHJlZmVyZW5jZVBhZ2UKLSAgICovCi0gIHB1YmxpYyB2b2lkIGluaXQoSVdvcmtiZW5jaCB3b3JrYmVuY2gpICB7IH0KLQotICAvKioKLSAgICogSW5pdGlhbGl6ZXMgc3RhdGVzIG9mIHRoZSBjb250cm9scyB1c2luZyBkZWZhdWx0IHZhbHVlcwotICAgKiBpbiB0aGUgcHJlZmVyZW5jZSBzdG9yZS4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBpbml0aWFsaXplRGVmYXVsdHMoKQotICB7Ci0gICAgUGVyc2lzdGVudEFjdGlvbkRpYWxvZ3NDb250ZXh0IGNvbnRleHQgPSBQZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQuZ2V0SW5zdGFuY2UoKTsgIAotICAgIEVudW1lcmF0aW9uIGUgPSBjaGVja0JveGVzXy5rZXlzKCk7Ci0gICAgZm9yIChpbnQgaT0wOyBlLmhhc01vcmVFbGVtZW50cygpOyBpKyspCi0gICAgewotICAgICAgU3RyaW5nIGlkID0gKFN0cmluZykgZS5uZXh0RWxlbWVudCgpOyAgICAgICAgICAgIAkKLSAgICAgIEJ1dHRvbiBkaWFsb2cgPSAoQnV0dG9uKSBjaGVja0JveGVzXy5nZXQoaWQpOwotICAgICAgZGlhbG9nLnNldFNlbGVjdGlvbihjb250ZXh0LmdldERlZmF1bHRCb29sZWFuKGlkKSk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEluaXRpYWxpemVzIHN0YXRlcyBvZiB0aGUgY29udHJvbHMgZnJvbSB0aGUgcHJlZmVyZW5jZXMuCi0gICAqLwotICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZVZhbHVlcygpCi0gIHsKLSAgICBQZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQgY29udGV4dCA9IFBlcnNpc3RlbnRBY3Rpb25EaWFsb2dzQ29udGV4dC5nZXRJbnN0YW5jZSgpOwotICAgIEVudW1lcmF0aW9uIGUgPSBjaGVja0JveGVzXy5rZXlzKCk7Ci0gICAgZm9yIChpbnQgaT0wOyBlLmhhc01vcmVFbGVtZW50cygpOyBpKyspCi0gICAgewotICAgICAgU3RyaW5nIGlkID0gKFN0cmluZykgZS5uZXh0RWxlbWVudCgpOwotICAgICAgQnV0dG9uIGJ1dHRvbiA9IChCdXR0b24pIGNoZWNrQm94ZXNfLmdldChpZCk7Ci0gICAgICBidXR0b24uc2V0U2VsZWN0aW9uKGNvbnRleHQuaXNBY3Rpb25EaWFsb2dFbmFibGVkKGlkKSk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFN0b3JlcyB0aGUgdmFsdWVzIG9mIHRoZSBjb250cm9scyBiYWNrIHRvIHRoZSBwcmVmZXJlbmNlIHN0b3JlLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHN0b3JlVmFsdWVzKCkKLSAgewotICAgIFBlcnNpc3RlbnRBY3Rpb25EaWFsb2dzQ29udGV4dCBjb250ZXh0ID0gUGVyc2lzdGVudEFjdGlvbkRpYWxvZ3NDb250ZXh0LmdldEluc3RhbmNlKCk7Ci0KLSAgICBFbnVtZXJhdGlvbiBlID0gY2hlY2tCb3hlc18ua2V5cygpOwotICAgIGZvciAoaW50IGk9MDsgZS5oYXNNb3JlRWxlbWVudHMoKTsgaSsrKQotICAgIHsKLSAgICAgIFN0cmluZyBpZCA9IChTdHJpbmcpIGUubmV4dEVsZW1lbnQoKTsKLSAgICAgIGNvbnRleHQuc2V0QWN0aW9uRGlhbG9nRW5hYmxlZChpZCwgKChCdXR0b24pY2hlY2tCb3hlc18uZ2V0KGlkKSkuZ2V0U2VsZWN0aW9uKCkpOwotICAgIH0KLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3JlZ2lzdHJ5L1dpZGdldFJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3JlZ2lzdHJ5L1dpZGdldFJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYjViMzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS9yZWdpc3RyeS9XaWRnZXRSZWdpc3RyeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkucmVnaXN0cnk7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLklOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeTsKLQotcHVibGljIGNsYXNzIFdpZGdldFJlZ2lzdHJ5IAotewotICBwcml2YXRlIHN0YXRpYyBXaWRnZXRSZWdpc3RyeSByZWdpc3RyeV87Ci0gIAotICBwcml2YXRlIEhhc2h0YWJsZSBlbnRyaWVzXzsKLSAgCi0gIHByaXZhdGUgV2lkZ2V0UmVnaXN0cnkoKQotICB7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgV2lkZ2V0UmVnaXN0cnkgaW5zdGFuY2UoKQotICB7Ci0JaWYgKHJlZ2lzdHJ5XyA9PSBudWxsKQotCXsKLQkJcmVnaXN0cnlfID0gbmV3IFdpZGdldFJlZ2lzdHJ5KCk7Ci0JCXJlZ2lzdHJ5Xy5sb2FkKCk7Ci0JfQotCi0JcmV0dXJuIHJlZ2lzdHJ5XzsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQotICB7Ci0gICAgcmVnaXN0cnlfID0gbnVsbDsgIAotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIEBwYXJhbSBpZCB0aGUgbWV0aG9kSWQgdGhhdCBtYXkgaGF2ZSBXaWRnZXRDb250cmlidXRvciBhc3NvY2lhdGVkIHdpdGggaXQuCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBpZiBvbmUgd2FzIGRlZmluZWQgaW4gdGhlIHJlZ2lzdHJ5LgotICAgKiBPdGhlcndpc2UgbnVsbCBpcyByZXR1cm5lZC4KLSAgICovCi0gIHB1YmxpYyBJTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3RvcnkgZ2V0RmFjdG9yeSggU3RyaW5nIGlkICkKLSAgewotCUlOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBmYWN0b3J5ID0gbnVsbDsKLQlFbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkgICA9IChFbnRyeSllbnRyaWVzXy5nZXQoIGlkICk7Ci0JCi0JaWYoIGVudHJ5ICE9IG51bGwgKQotCXsKLQkgIHRyeQotCSAgewotCQlpZiggZW50cnkuZmFjdG9yeV8gPT0gbnVsbCApCi0JCXsKLQkJICBlbnRyeS5mYWN0b3J5XyA9IChJTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3RvcnkpZW50cnkuZWxlbWVudF8uY3JlYXRlRXhlY3V0YWJsZUV4dGVuc2lvbiggImNsYXNzIiApOwotCQl9Ci0JCQotCQlmYWN0b3J5ID0gZW50cnkuZmFjdG9yeV87Ci0JICB9Ci0JICBjYXRjaCggQ29yZUV4Y2VwdGlvbiBleGMgKQotCSAgewotCSAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0JICB9Ci0JICBjYXRjaCggVGhyb3dhYmxlIGV4YyApCi0JICB7Ci0JCWV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLQkgIH0KLQl9Ci0JCi0JcmV0dXJuIGZhY3Rvcnk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBsb2FkKCkKLSAgewotCUlDb25maWd1cmF0aW9uRWxlbWVudFtdIGVsZW1lbnRzID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKS5nZXRDb25maWd1cmF0aW9uRWxlbWVudHNGb3IoIm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRSZWdpc3RyeSIpOwotCQotCWVudHJpZXNfID0gbmV3IEhhc2h0YWJsZSgpOwotCQotCWZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBlbGVtZW50cy5sZW5ndGg7IGluZGV4KysgKQotCXsKLQkgIC8vIElmIHRoaXMgaXMgbm90IGFuIGVsZW1lbnQgdGhhdCBrbm93IGFib3V0IHdlIHdpbGwgc2tpcCBpdC4KLQkgIGlmKCAhZWxlbWVudHNbaW5kZXhdLmdldE5hbWUoKS5lcXVhbHMoIndpZGdldEZhY3RvcnkiKSApIGNvbnRpbnVlOwotCSAgCi0JICBFbnRyeSAgICAgICAgICAgICAgICAgZW50cnkgICAgPSBuZXcgRW50cnkoKTsKLQkgIElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtZW50ICA9IGVsZW1lbnRzW2luZGV4XTsKLQkgIFN0cmluZyAgICAgICAgICAgICAgICBpZCAgICAgICA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCAiaWQiICk7Ci0JICBTdHJpbmcgICAgICAgICAgICAgICAgbWV0aG9kSWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSggImluc2VydEJlZm9yZUNvbW1hbmRJZCIgKTsKLQkgIAotCSAgZW50cnkuZWxlbWVudF8gPSBlbGVtZW50OwotCSAgZW50cnkuaWRfICAgICAgPSBpZDsKLQkgIAotCSAgZW50cmllc18ucHV0KCBtZXRob2RJZCwgZW50cnkgKTsKLQl9Ci0gIH0KLSAgCi0gIHByaXZhdGUgY2xhc3MgRW50cnkKLSAgewotICAgIFN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICBpZF87Ci0JSUNvbmZpZ3VyYXRpb25FbGVtZW50ICAgICAgICAgIGVsZW1lbnRfOwotCUlOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBmYWN0b3J5XzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL0Fic3RyYWN0U2VsZWN0aW9uRGlhbG9nLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvQWJzdHJhY3RTZWxlY3Rpb25EaWFsb2cuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ5NGVjYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvQWJzdHJhY3RTZWxlY3Rpb25EaWFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNlbGVjdGlvbkRpYWxvZyBleHRlbmRzIFNpbXBsZURpYWxvZyB7Ci0JCi0JcHVibGljIEFic3RyYWN0U2VsZWN0aW9uRGlhbG9nKCBTaGVsbCBzaGVsbCwgUGFnZUluZm8gcGFnZUluZm8pCi0JewotCQlzdXBlcihzaGVsbCwgcGFnZUluZm8pOwotCX0KLQotCXByb3RlY3RlZCB2b2lkIGNhbGxTZXR0ZXJzKCkgewotCQkvLyBleHRlbmRlcnMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kCi0KLQl9Ci0JCi0JcHVibGljIFN0cmluZyBnZXREaXNwbGF5YWJsZVNlbGVjdGlvblN0cmluZygpCi0JewotCQlyZXR1cm4gIiI7Ci0JfQotCQotCXB1YmxpYyBhYnN0cmFjdCBJU3RydWN0dXJlZFNlbGVjdGlvbiBnZXRPYmplY3RTZWxlY3Rpb24oKTsKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL0NhbkZpbmlzaFJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvQ2FuRmluaXNoUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg2NjQwOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvQ2FuRmluaXNoUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5Db25kaXRpb247Ci0KLS8qKgotICogVGhpcyBpcyBhbiBpbnRlcmZhY2UgZm9yIGFuIGFic3RyYWN0IGNhbiBmaW5pc2ggcmVnaXN0cnkuCi0gKiBUaGlzIHJlZ2lzdHJ5IGlzIHVzdWFsbHkgYXNzb2NpYXRlIHdpdGggYW4gRWNsaXBzZSB3aXphcmQuICBUaGlzCi0gKiByZWdpc3RyeSBhbGxvdyBjb25kaXRpb24gb2JqZWN0IHRvIGJlIGFkZGVkIHRvIGl0IGluIG9yZGVyIHRvCi0gKiBkZXRlcm1pbmUgaWYgdGhlIHdpemFyZCBjYW4gZmluaXNoIG9yIG5vdC4KLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgQ2FuRmluaXNoUmVnaXN0cnkKLXsKLSAgLyoqCi0gICAqIEFkZCBhIGNvbmRpdGlvbiBvYmplY3QgdG8gdGhlIHJlZ2lzdHJ5LgotICAgKiBAcGFyYW0gY29uZGl0aW9uIHRoZSBjb25kaXRpb24uCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRDb25kaXRpb24oIENvbmRpdGlvbiBjb25kaXRpb24gKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9Db21tYW5kV2lkZ2V0QmluZGluZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL0NvbW1hbmRXaWRnZXRCaW5kaW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxY2ZjMzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL0NvbW1hbmRXaWRnZXRCaW5kaW5nLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50RmFjdG9yeUZhY3Rvcnk7Ci0KLQotcHVibGljIGludGVyZmFjZSBDb21tYW5kV2lkZ2V0QmluZGluZyBleHRlbmRzIENvbW1hbmRGcmFnbWVudEZhY3RvcnlGYWN0b3J5Ci17Ci0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IGV4dGVuc2lvbnMgdG8gcmVnaXN0ZXIgdGhlaXIgd2lkZ2V0cyB3aXRoCi0gICAqIENvbW1hbmRGcmFnbWVudHMKLSAgICogCi0gICAqIEBwYXJhbSB3aWRnZXRSZWdpc3RyeQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyggV2lkZ2V0UmVnaXN0cnkgd2lkZ2V0UmVnaXN0cnkgKTsKLSAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IGV4dGVuaW9ucyB0byByZWdpc3RlciB0aGUgZGF0YSBtYXBwaW5ncwotICAgKiB0aGF0IHRoZWlyIHdpZGdldHMgdXNlLgotICAgKiAKLSAgICogQHBhcmFtIGRhdGFSZWdpc3RyeQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoIERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5ICk7Ci0gIAotICAvKioKLSAgICogVGhpcyBtZXRob2QgaXMgdXNlZCBieSBleHRlbnNpb25zIHRvIHJlZ2lzdGVyIGNvbmRpdGlvbiBvYmplY3RzCi0gICAqIHRoYXQgY29udHJvbCBpZiB0aGUgd2l6YXJkIGNhbiBmaW5pc2ggb3Igbm90LgotICAgKiAKLSAgICogQHBhcmFtIGNhbkZpbmlzaFJlZ2lzdHJ5Ci0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckNhbkZpbmlzaCggQ2FuRmluaXNoUmVnaXN0cnkgY2FuRmluaXNoUmVnaXN0cnkgKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9Db21tYW5kV2lkZ2V0QmluZGluZ0xpc3QuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9Db21tYW5kV2lkZ2V0QmluZGluZ0xpc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMxOTgwNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvQ29tbWFuZFdpZGdldEJpbmRpbmdMaXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotCi0KLXB1YmxpYyBjbGFzcyBDb21tYW5kV2lkZ2V0QmluZGluZ0xpc3QgaW1wbGVtZW50cyBDb21tYW5kV2lkZ2V0QmluZGluZwotewotICBwcml2YXRlIFZlY3RvciAgICAgICAgICAgICAgICAgYmluZGluZ3NfOwotICBwcml2YXRlIFZlY3RvciAgICAgICAgICAgICAgICAgZnJhZ21lbnRzXzsKLSAgcHJpdmF0ZSBDb21tYW5kRnJhZ21lbnRGYWN0b3J5IGZhY3RvcnlfOwotICAKLSAgLyoqCi0gICAqIFRoaXMgQ29tbWFuZFdpZGdldEJpbmRpbmcgY29tYmluZXMgYSBsaXN0IG9mIENvbW1hbmRXaWRnZXRCaW5kaW5ncy4KLSAgICogVGhlcmUgc2hvdWxkIGJlIHRoZSBzYW1lIG51bWJlciBvZiBlbnRyaWVzIGluIGJvdGggdGhlIGJpbmRpbmdzCi0gICAqIHBhcmFtZXRlciBhbmQgdGhlIGZyYWdtZW50cyBwYXJhbWV0ZXIuICBFbnRyaWVzIGluIGVpdGhlciBvZiB0aGUKLSAgICogYmluZGluZ3MgZm9yIGZyYWdtZW50cyB2ZWN0b3JzIGFyZSBhbGxvd2VkIHRvIGJlIG51bGwuCi0gICAqIAotICAgKiBAcGFyYW0gYmluZGluZ3MgICB0aGUgYmluZGluZ3MgdG8gY29tYmluZS4KLSAgICogQHBhcmFtIGZyYWdtZW50cyAgVGhlc2UgZnJhZ21lbnRzIHdpbGwgYmUgaW50ZXJzcGVyc2VkIHdpdGggdGhlCi0gICAqICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggZWFjaCBiaW5kaW5nLiAgVGhlIGZpcnN0Ci0gICAqICAgICAgICAgICAgICAgICAgIGZyYWdtZW50IHdpbGwgYmUgcHV0IGJlZm9yZSB0aGUgZnJhZ21lbnQgZnJvbSB0aGUKLSAgICogICAgICAgICAgICAgICAgICAgZmlyc3QgYmluZGluZy4gIEZvbGxvd2luZyB0aGlzIHdpbGwgYmUgdGhlIHNlY29uZAotICAgKiAgICAgICAgICAgICAgICAgICBmcmFnbWVudCBmcm9tIHRoZSBmcmFnbWVudHMgdmVjdG9yIGFuZCB0aGVuIHRoZQotICAgKiAgICAgICAgICAgICAgICAgICBzZWNvbmQgZnJhZ21lbnQgZnJvbSB0aGUgYmluZGluZ3MgdmVjdG9yLCBldGMuCi0gICAqLwotICBwdWJsaWMgQ29tbWFuZFdpZGdldEJpbmRpbmdMaXN0KCBWZWN0b3IgYmluZGluZ3MsIFZlY3RvciBmcmFnbWVudHMgKQotICB7Ci0gICAgYmluZGluZ3NfICA9IGJpbmRpbmdzOyAKLSAgICBmcmFnbWVudHNfID0gZnJhZ21lbnRzOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcjcmVnaXN0ZXJDYW5GaW5pc2gob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlckNhbkZpbmlzaChDYW5GaW5pc2hSZWdpc3RyeSBjYW5GaW5pc2hSZWdpc3RyeSkgCi0gIHsKLSAgICBpbnQgbGVuZ3RoID0gYmluZGluZ3NfLnNpemUoKTsKLSAgICAKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBDb21tYW5kV2lkZ2V0QmluZGluZyBiaW5kaW5nID0gKENvbW1hbmRXaWRnZXRCaW5kaW5nKWJpbmRpbmdzXy5lbGVtZW50QXQoIGluZGV4ICk7Ci0gICAgICAKLSAgICAgIGlmKCBiaW5kaW5nICE9IG51bGwgKSBiaW5kaW5nLnJlZ2lzdGVyQ2FuRmluaXNoKCBjYW5GaW5pc2hSZWdpc3RyeSApOwotICAgIH0KLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLkNvbW1hbmRXaWRnZXRCaW5kaW5nI3JlZ2lzdGVyRGF0YU1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KSAKLSAgewotICAgIGludCBsZW5ndGggPSBiaW5kaW5nc18uc2l6ZSgpOwotICAgIAotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKQotICAgIHsKLSAgICAgIENvbW1hbmRXaWRnZXRCaW5kaW5nIGJpbmRpbmcgPSAoQ29tbWFuZFdpZGdldEJpbmRpbmcpYmluZGluZ3NfLmVsZW1lbnRBdCggaW5kZXggKTsKLSAgICAgIGlmKCBiaW5kaW5nICE9IG51bGwgKSBiaW5kaW5nLnJlZ2lzdGVyRGF0YU1hcHBpbmdzKCBkYXRhUmVnaXN0cnkgKTsKLSAgICB9Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZyNyZWdpc3RlcldpZGdldE1hcHBpbmdzKG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLldpZGdldFJlZ2lzdHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyhXaWRnZXRSZWdpc3RyeSB3aWRnZXRSZWdpc3RyeSkgCi0gIHsKLSAgICBpbnQgbGVuZ3RoID0gYmluZGluZ3NfLnNpemUoKTsKLSAgICAKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBDb21tYW5kV2lkZ2V0QmluZGluZyBiaW5kaW5nID0gKENvbW1hbmRXaWRnZXRCaW5kaW5nKWJpbmRpbmdzXy5lbGVtZW50QXQoIGluZGV4ICk7Ci0gICAgICBpZiggYmluZGluZyAhPSBudWxsICkgYmluZGluZy5yZWdpc3RlcldpZGdldE1hcHBpbmdzKCB3aWRnZXRSZWdpc3RyeSApOwotICAgIH0KLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudEZhY3RvcnlGYWN0b3J5I2NyZWF0ZSgpCi0gICAqLwotICBwdWJsaWMgQ29tbWFuZEZyYWdtZW50RmFjdG9yeSBjcmVhdGUoKSAKLSAgewotICAgIGlmKCBmYWN0b3J5XyA9PSBudWxsICkKLSAgICB7Ci0gICAgICBmYWN0b3J5XyA9IG5ldyBDb21tYW5kRnJhZ21lbnRGYWN0b3J5KCkKLSAgICAgICAgewotICAgICAgICAgIHB1YmxpYyBDb21tYW5kRnJhZ21lbnQgY3JlYXRlKCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBTZXF1ZW5jZUZyYWdtZW50IGZyYWdtZW50TGlzdCA9IG5ldyBTZXF1ZW5jZUZyYWdtZW50KCk7Ci0gICAgICAgICAgICBpbnQgICAgICAgICAgICAgIGxlbmd0aCAgICAgICA9IGJpbmRpbmdzXy5zaXplKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgPSAoQ29tbWFuZEZyYWdtZW50KWZyYWdtZW50c18uZWxlbWVudEF0KCBpbmRleCApOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgaWYoIGZyYWdtZW50ICE9IG51bGwgKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZnJhZ21lbnRMaXN0LmFkZCggZnJhZ21lbnQgKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgQ29tbWFuZFdpZGdldEJpbmRpbmcgYmluZGluZyA9IChDb21tYW5kV2lkZ2V0QmluZGluZyliaW5kaW5nc18uZWxlbWVudEF0KCBpbmRleCApOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgaWYoIGJpbmRpbmcgIT0gbnVsbCApCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmcmFnbWVudExpc3QuYWRkKCBiaW5kaW5nLmNyZWF0ZSgpLmNyZWF0ZSgpICk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50TGlzdDsKLSAgICAgICAgICB9Ci0gICAgICAgIH07IAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFjdG9yeV87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9DdXJyZW50UGFnZUNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9DdXJyZW50UGFnZUNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM4NTVkNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvQ3VycmVudFBhZ2VDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLklXaXphcmRQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLQotLyoqCi0gKiBUaGlzIENvbW1hbmQgY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBjdXJyZW50IHBhZ2UuCi0gKiBVc2Ugb2YgdGhpcyBjbGFzcyBpcyBub3QgcmVjb21tZW5kZWQuCi0gKgotICovCi1wdWJsaWMgY2xhc3MgQ3VycmVudFBhZ2VDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBXaXphcmRQYWdlTWFuYWdlciBwYWdlTWFuYWdlcl87Ci0gIAotICBwdWJsaWMgQ3VycmVudFBhZ2VDb21tYW5kKCBXaXphcmRQYWdlTWFuYWdlciBwYWdlTWFuYWdlciApCi0gIHsKLSAgICBwYWdlTWFuYWdlcl8gPSBwYWdlTWFuYWdlcjsKLSAgfQotICAKLSAgcHVibGljIElXaXphcmRQYWdlIGdldEN1cnJlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiBwYWdlTWFuYWdlcl8uZ2V0Q3VycmVudFBhZ2UoKTsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24KLSAgewotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvRGF0YU9iamVjdENvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9EYXRhT2JqZWN0Q29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDUwYWQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9EYXRhT2JqZWN0Q29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0KLS8qKgotICogVGhpcyBDb21tYW5kIGNhbiBiZSB1c2UgdG8gZ2V0IHRoZSByZXN1bHRpbmcgZGF0YSBvYmplY3QgZm9yCi0gKiB0aGlzIHdpemFyZC4KLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBEYXRhT2JqZWN0Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgT2JqZWN0IGRhdGFPYmplY3RfOwotICAKLSAgcHVibGljIHZvaWQgc2V0RGF0YU9iamVjdCggT2JqZWN0IG9iamVjdCApCi0gIHsKLSAgICBkYXRhT2JqZWN0XyA9IG9iamVjdDsKLSAgfQotICAKLSAgcHVibGljIE9iamVjdCBnZXREYXRhT2JqZWN0KCkKLSAgewotICAgIHJldHVybiBkYXRhT2JqZWN0XzsKLSAgfQotCi0gIHB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24KLSAgewotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvRGlhbG9nRGF0YUV2ZW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL0RpYWxvZ0RhdGFFdmVudHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJmZDE5ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvRGlhbG9nRGF0YUV2ZW50cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzOwotCi0KLS8qKgotICogRHluYW1pYyB3aXphcmQgaW1wbGVtZW50YXRpb25zIHRoYXQgd2FudCB0byBjcmVhdGUgZGlmZmVyZW50Ci0gKiBraW5kcyBvZiB3aXphcmQgcGFnZXMgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuCi0gKiBUaGUgV2l6YXJkUGFnZUZhY3RvcnkgcmV0dXJucyBhIGNsYXNzIG9mIHRoaXMgdHlwZS4KLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRGlhbG9nRGF0YUV2ZW50cwotewotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgV2lkZ2V0RGF0YUV2ZW50cyBvYmplY3QgY3JlYXRlZCBieSB0aGUgYWRkQ29udHJvbHMKLSAgICogbWV0aG9kIG9mIGEgV2lkZ2V0Q29udHJpYnV0b3IuCi0gICAqLwotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBnZXREYXRhRXZlbnRzKCk7Ci0gIAotICAvKioKLSAgICogVmFsaWRhdGVzIHRoYXQgdGhpcyB3aXphcmQgcGFnZSBpcyBjb21wbGV0ZS4gCi0gICAqCi0gICAqLwotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZVBhZ2VUb1N0YXR1cygpOwotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvRHluYW1pY1dpemFyZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL0R5bmFtaWNXaXphcmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIwMjRkZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvRHluYW1pY1dpemFyZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMyAgIDEyOTIzMiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MDgyMiAgIDE1NDc1MCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MDUyOSAgIDE4Nzc4MCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDYxMyAgIDIzNjUyMyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgT3ZlcndyaXRlIHNldHRpbmcgb24gV2ViIHNlcnZpY2Ugd2l6YXJkIGlzIGNvdXBsZWQgd2l0aCBwcmVmZXJlbmNlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4ZWN1dGFibGVFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb25Qb2ludDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnJlc291cmNlLkltYWdlRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpemFyZC5JV2l6YXJkUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuV2l6YXJkOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSU5ld1dpemFyZDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0LlBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLkNvbmRpdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFGbG93TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5TZXF1ZW5jZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LlNpbXBsZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuRW52aXJvbm1lbnRVSU1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5lY2xpcHNlLkVjbGlwc2VTdGF0dXNIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5yZWdpc3RyeS5XaWRnZXRSZWdpc3RyeTsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotCi0KLS8qKgotICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGFkZCBkeW5hbWljIHdpemFyZHMgaW50byBFY2xpcHNlLiAgV2hlbiBhZGRpbmcKLSAqIGEgZHluYW1pYyB3aXphcmQgaW50byBlY2xpcHNlIHR3byBlbnRyaWVzIG5lZWQgdG8gYmUgbWFkZSBpbiB0aGUgcGx1Z2luLnhtbAotICogZmlsZS4gIFRoaXMgZmlyc3QgZW50cnkgdGVsbHMgRWNsaXBzZSB0aGF0IGEgbmV3IHdpemFyZCBzaG91bGQgYmUgYWRkZWQKLSAqIGFuZCBpdCByZWZlcmVuY2VzIHRoaXMgY2xhc3MuICBUaGUgc2Vjb25kIGVudHJ5IHNwZWNpZmllcyBkZXRhaWxlZCBpbmZvcm1hdGlvbgotICogdGhhdCBpcyBzcGVjaWZpYyB0byB0aGUgd2l6YXJkIHRvIGJlIGFkZGVkLiAgVGhlc2UgdHdvIHBsdWdpbi54bWwgZW50cmllcwotICogYXJlIGxpbmtlZCB0b2dldGhlciB2aWEgdGhlaXIgaWQgYXR0cmlidXRlcy4gIEZvciBleGFtcGxlIGhlcmUgaXMgYW4KLSAqIGVudHJ5IHRoYXQgcmVnaXN0ZXJzIGEgbmV3IHdpemFyZCB3aXRoIGVjbGlwc2UuICBOb3RlIHRoZSBjbGFzcyBhdHRyaWJ1dGUKLSAqIHJlZmVyZW5jZXMgdGhpcyBjbGFzcy4KLSAqIDxwcmU+Ci0gKiAgICZsdDtleHRlbnNpb24KLSAqICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkubmV3V2l6YXJkcyImZ3Q7Ci0gKiAgICAgJmx0O3dpemFyZAotICogICAgICAgICAgIG5hbWU9IiVQTFVHSU5fTkVXX1dJWkFSRF9OQU1FX1dTX0NMSUVOVCIKLSAqICAgICAgICAgICBpY29uPSJpY29ucy9mdWxsL2N0b29sMTYvbmV3Y2xpZW50X3dlYnNlcnZfd2l6LmdpZiIKLSAqICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UuanN0LndzLnVpLm5ldyIKLSAqICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuRHluYW1pY1dpemFyZCIKLSAqICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuY2xpZW50d2l6YXJkIiZndDsKLSAqICAgICAgICAmbHQ7ZGVzY3JpcHRpb24mZ3Q7Ci0gKiAgICAgICAgICAgJVBMVUdJTl9ORVdfV0laQVJEX0RFU0NfV1NfQ0xJRU5UCi0gKiAgICAgICAgJmx0Oy9kZXNjcmlwdGlvbiZndDsKLSAqICAgICAgICAmbHQ7c2VsZWN0aW9uCi0gKiAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZSImZ3Q7Ci0gKiAgICAgICAgJmx0Oy9zZWxlY3Rpb24mZ3Q7Ci0gKiAgICAgJmx0Oy93aXphcmQmZ3Q7Ci0gKiAgICZsdDsvZXh0ZW5zaW9uJmd0OwotICoKLSAqIDwvcHJlPgotICogSGVyZSBpcyB0aGUgZHluYW1pY1dpemFyZCBlbnRyeSBmb3IgdGhpcyBwYXJ0aWN1bGFyIHdpemFyZC4gIFRoaXMgaWQgYXR0cmlidXRlcwotICogbGluayB0aGVzZSB0d28gZW50cmllcyB0b2dldGhlci4gIFRoZSBjbGFzcyBhdHRyaWJ1dGUgbXVzdCBzcGVjaWZ5IGEgY2xhc3MgdGhhdAotICogaW1wbGVtZW50cyB0aGUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLndpZGdldHMuQ29tbWFuZFdpZGdldEJpbmRpbmcgaW50ZXJmYWNlLiAgVGhpcwotICogaW50ZXJmYWNlIHNwZWNpZmllcyB3aGF0IHRoZSBVSSBzaG91bGQgbG9vayBsaWtlIGFuZCB0aGUgY29tbWFuZHMgdGhlIHNob3VsZAotICogYmUgZXhlY3V0ZWQgaW4gdGhlIHdpemFyZC4KLSAqIAotICogPHByZT4KLSAqICAgJmx0O2V4dGVuc2lvbgotICogICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZHluYW1pY1dpemFyZCImZ3Q7Ci0gKiAgICAgJmx0O2R5bmFtaWNXaXphcmQKLSAqICAgICAgICAgICBpY29uYmFubmVyPSJpY29ucy9mdWxsL3dpemJhbi93ZWJzZXJ2aWNlc2NsaWVudF93aXouZ2lmIgotICogICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2lkZ2V0cy5iaW5kaW5nLkNsaWVudFdpZGdldEJpbmRpbmciCi0gKiAgICAgICAgICAgdGl0bGU9IiVXSVpBUkRfVElUTEVfV1NDIgotICogICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQiJmd0OwotICogICAgICZsdDsvZHluYW1pY1dpemFyZCZndDsKLSAqICAgJmx0Oy9leHRlbnNpb24mZ3Q7Ci0gKiA8L3ByZT4KLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBEeW5hbWljV2l6YXJkIGV4dGVuZHMgV2l6YXJkIGltcGxlbWVudHMgSU5ld1dpemFyZCwgSUV4ZWN1dGFibGVFeHRlbnNpb24KLXsKLSAgcHJpdmF0ZSAgIFN0cmluZyAgICAgICAgICAgICAgICAgIGljb25CYW5uZXJOYW1lXzsKLSAgcHJpdmF0ZSAgIEJ1bmRsZSAgICAgICAgICAgICAgICAgIGJ1bmRsZV87Ci0gIHByaXZhdGUgICBTaW1wbGVDYW5GaW5pc2hSZWdpc3RyeSBjYW5GaW5pc2hSZWdpc3RyeV87IAotICBwcml2YXRlICAgU3RyaW5nICAgICAgICAgICAgICAgICAgd2l6YXJkVGl0bGVfOwotICBwcml2YXRlICAgRGF0YU9iamVjdENvbW1hbmQgICAgICAgZGF0YU9iamVjdENvbW1hbmRfID0gbnVsbDsKLSAgcHJpdmF0ZSAgIFdpemFyZFBhZ2VNYW5hZ2VyICAgICAgIHBhZ2VNYW5hZ2VyXzsKLSAgCi0gIHByb3RlY3RlZCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgICB3aXphcmRFbGVtZW50XzsKLSAgcHJvdGVjdGVkIElDb25maWd1cmF0aW9uRWxlbWVudCAgIG9yaWdpbmFsRWxlbWVudF87Ci0gIHByb3RlY3RlZCBDb21tYW5kV2lkZ2V0QmluZGluZyAgICBjb21tYW5kV2lkZ2V0QmluZGluZ187Ci0gIAotICBwdWJsaWMgRHluYW1pY1dpemFyZCgpCi0gIHsKLQlzZXROZWVkc1Byb2dyZXNzTW9uaXRvcih0cnVlKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBEeW5hbWljIHdpemFyZCBpcyBjcmVhdGVkIGJ5IGVjbGlwc2UuCi0gICAqIFdlIG5lZWQgdG8gZmluZCBhIGR5bmFtaWNXaXphcmQgZXh0ZW5zaW9uIHBvaW50IHRoYXQgbWF0Y2hlcyB0aGUgaWQKLSAgICogZm9yIHRoaXMgd2l6YXJkLiAgT25jZSB0aGUgZXh0ZW5zaW9uIHBvaW50IGlzIGZvdW5kIGl0IHdpbGwgY29udGFpbgotICAgKiBhIHJlZmVyZW5jZSB0byBhIENvbW1hbmRXaWRnZXRCaW5kaW5nIGNsYXNzIHdoaWNoIGRlZmluZXMgdGhlIHdpZGdldHMgCi0gICAqIGFuZCBjb21tYW5kcyBmb3IgdGhpcyB3aXphcmQuCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXhlY3V0YWJsZUV4dGVuc2lvbiNzZXRJbml0aWFsaXphdGlvbkRhdGEob3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEluaXRpYWxpemF0aW9uRGF0YSggSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNvbmZpZywKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lLAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCAgICAgICAgICAgICAgICBkYXRhICkKLSAgICB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHdpemFyZElkICAgPSBjb25maWcuZ2V0QXR0cmlidXRlKCAiaWQiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAKLSAgICBzZXRJbml0aWFsRGF0YSggd2l6YXJkSWQgKTsKLSAgICBvcmlnaW5hbEVsZW1lbnRfID0gY29uZmlnOwotICB9Ci0gIAotICAvKioKLSAgICogVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSBEeW5hbWljIFdpemFyZCBpcyBiZWluZwotICAgKiBsYXVuY2hlZCB0aHJvdWdoIHNvbWUgb3RoZXIgbWVjaGFuaXNlIG90aGVyIHRoYW4gdGhlIEVjbGlwc2UgTmV3IFdpemFyZAotICAgKiBtZWNoYW5pc20uCi0gICAqIAotICAgKiBAcGFyYW0gYmluZGluZyAgICAgICAgdGhlIGNvbW1hbmQgd2lkZ2V0IGJpbmRpbmcgZm9yIHRoaXMgd2l6YXJkLgotICAgKiBAcGFyYW0gZGVzY3JpcHRvciAgICAgdGhlIHBsdWdpbiBkZXNjcmlwdG9yIHdoZXJlIHRoZSBpY29uIGJhbm5lciBpcwotICAgKiAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZC4KLSAgICogQHBhcmFtIGljb25CYW5uZXJQYXRoIHRoZSBpY29uIGJhbm5lciBwYXRoIGZvciB0aGlzIHdpemFyZC4gIFRoZSBwYXRoCi0gICAqICAgICAgICAgICAgICAgICAgICAgICBpcyByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIHNwZWNpZmllZCBieSB0aGUgCi0gICAqICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yIHBhcmFtZXRlci4KLSAgICogQHBhcmFtIHdpemFyZFRpdGxlICAgIHRoZSB3aXphcmQgdGl0bGUKLSAgICogCi0gICAqIEBkZXByZWNhdGVkIFVzZSBlaXRoZXIgc2V0SW5pdGlhbERhdGEod2l6YXJkSWQpIG9yCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5pdGlhbERhdGEod2l6YXJkSWQsIGJ1bmRsZSwgaWNvbkJhbm5lclBhdGgsIHdpemFyZFRpdGxlICkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEluaXRpYWxEYXRhKCBDb21tYW5kV2lkZ2V0QmluZGluZyBiaW5kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVuZGxlICAgICAgICAgICAgICAgYnVuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgICAgICAgaWNvbkJhbm5lclBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICB3aXphcmRUaXRsZSApCi0gIHsKLSAgICBjb21tYW5kV2lkZ2V0QmluZGluZ18gPSBiaW5kaW5nOwotICAgIGJ1bmRsZV8gICAgICAgICAgICAgICA9IGJ1bmRsZTsKLSAgICBpY29uQmFubmVyTmFtZV8gICAgICAgPSBpY29uQmFubmVyUGF0aDsKLSAgICB3aXphcmRUaXRsZV8gICAgICAgICAgPSB3aXphcmRUaXRsZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIGluaXRpYWwgZGF0YSBiYXNlZCBvbiB0aGUgZHluYW1pYyB3aXphcmQgaWQuCi0gICAqIAotICAgKiBAcGFyYW0gd2l6YXJkSWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEluaXRpYWxEYXRhKCBTdHJpbmcgd2l6YXJkSWQgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICB7Ci0gICAgc2V0SW5pdGlhbERhdGEod2l6YXJkSWQsIG51bGwsIG51bGwsIG51bGwgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIGluaXRpYWwgZGF0YSBiYXNlZCBvbiB0aGUgZHluYW1pYyB3aXphcmQgaWQuCi0gICAqIAotICAgKiBAcGFyYW0gd2l6YXJkSWQgdGhlIElEIG9mIHRoZSB3aXphcmQuCi0gICAqIEBwYXJhbSBidW5kbGUgdGhlIGJ1bmRsZSB1c2VkIHRvIGZpbmQgYW4gaWNvbiBiYW5uZXIuICBDYW4gYmUgbnVsbCBpZgotICAgKiBubyBpY29uIGJhbm5lciBpcyBzcGVjaWZpZWQuCi0gICAqIEBwYXJhbSBpY29uQmFubmVyUGF0aCB0aGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgYnVuZGxlIHNwZWNpZmllZC4KLSAgICogQHBhcmFtIHdpemFyZFRpdGxlIHRoZSB0aXRsZSBvZiB0aGUgd2l6YXJkLgotICAgKiAKLSAgICogTm90ZTogbm9ybWFsbHkgdGhlIHdpemFyZCBhc3NvY2lhdGVkIHdpdGggYSB3aXphcmRJZCB3aWxsIGhhdmUgYW4KLSAgICogaWNvbiBiYW5uZXIgYW5kIGEgdGl0bGUuICBUaGUgcGFyYW1ldGVycyBvbiB0aGlzIG1ldGhvZCBhbGxvdyB0aGUgY2FsbGVyCi0gICAqIHRvIG92ZXJyaWRlIHRoZXNlIHZhbHVlcy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEluaXRpYWxEYXRhKCBTdHJpbmcgd2l6YXJkSWQsIEJ1bmRsZSBidW5kbGUsIFN0cmluZyBpY29uQmFubmVyUGF0aCwgU3RyaW5nIHdpemFyZFRpdGxlICkgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAgIElFeHRlbnNpb25SZWdpc3RyeSAgICByZWdpc3RyeSAgICAgID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLSAgICBJRXh0ZW5zaW9uUG9pbnQgICAgICAgcG9pbnQgICAgICAgICA9IHJlZ2lzdHJ5LmdldEV4dGVuc2lvblBvaW50KCJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZHluYW1pY1dpemFyZCIpOyAvLyROT04tTkxTLTEkCi0gICAgSUV4dGVuc2lvbltdICAgICAgICAgIGV4dGVuc2lvbnMgICAgPSBwb2ludC5nZXRFeHRlbnNpb25zKCk7Ci0gICAgCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGV4dGVuc2lvbnMubGVuZ3RoOyBpbmRleCsrKSAKLSAgICB7Ci0gICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBlbGVtZW50cyA9IGV4dGVuc2lvbnNbaW5kZXhdLmdldENvbmZpZ3VyYXRpb25FbGVtZW50cygpOwotICAgICAgCi0gICAgICBpZiggZWxlbWVudHMubGVuZ3RoID09IDEgJiYgZWxlbWVudHNbMF0uZ2V0TmFtZSgpLmVxdWFscyggImR5bmFtaWNXaXphcmQiKSApICAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBpZCA9IGVsZW1lbnRzWzBdLmdldEF0dHJpYnV0ZSggImlkIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgIAotICAgICAgICBpZiggaWQgIT0gbnVsbCAmJiBpZC5lcXVhbHMoIHdpemFyZElkICkgKQotICAgICAgICB7Ci0gICAgICAgICAgd2l6YXJkRWxlbWVudF8gPSBlbGVtZW50c1swXTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAgICAKLSAgICBidW5kbGVfICAgICAgICAgPSBidW5kbGU7Ci0gICAgaWNvbkJhbm5lck5hbWVfID0gaWNvbkJhbm5lclBhdGg7Ci0gICAgd2l6YXJkVGl0bGVfICAgID0gd2l6YXJkVGl0bGU7Ci0gICAgCi0gICAgaWYoIHdpemFyZEVsZW1lbnRfID09IG51bGwgKQotICAgIHsKLSAgICAgIFN0YXR1cyBzdGF0dXMgPSBuZXcgU3RhdHVzKCBTdGF0dXMuRVJST1IsICJpZCIsIDAsIE5MUy5iaW5kKEVudmlyb25tZW50VUlNZXNzYWdlcy5NU0dfRVJST1JfV0laQVJEX0lEX05PVF9GT1VORCwgbmV3IFN0cmluZ1tdeyB3aXphcmRJZH0pICwgbnVsbCApOyAvLyROT04tTkxTLTEkCi0gICAgICB0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbiggc3RhdHVzICk7Ci0gICAgfQotICB9Ci0gICAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIGVjbGlwc2UgZnJhbWV3b3JrIHRvIGluaXRpYWxpemUgdGhlCi0gICAqIHdpemFyZC4gCi0gICAqIAotICAgKiBOb3RlOiBpZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgcHJvZ3JhbWF0aWNhbGx5KGllLiBub3QgYnkgdGhlIGVjbGlwc2UKLSAgICogZnJhbWV3b3JrLikgb25lIG9mIHRoZSBzZXRJbml0YWxEYXRhIG1ldGhvZHMgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGlzCi0gICAqIG1ldGhvZCBpcyBpbnZva2VkLgotICAgKiAKLSAgICogQHBhcmFtIHdvcmtiZW5jaCB0aGUgZWNsaXBzZSB3b3JrYmVuY2gKLSAgICogQHBhcmFtIHNlbGVjdGlvbiB0aGUgaW5pdGlhbCBzZWxlY3Rpb24gdGhhdCB0aGUgdXNlciBoYXMgbWFkZSB3aXRoaW4KLSAgICogICAgICAgICAgICAgICAgICBlY2xpcHNlLgotICAgKi8KLSAgcHVibGljIHZvaWQgaW5pdCAoIElXb3JrYmVuY2ggd29ya2JlbmNoLCBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24gKQotICB7ICAgIAotICAgIFJlc291cmNlQ29udGV4dCAgICAgICAgICAgY29udGV4dCAgICAgICAgPSBQZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0LmdldEluc3RhbmNlKCkuY29weSgpOwotICAgIEVjbGlwc2VTdGF0dXNIYW5kbGVyICAgICAgaGFuZGxlciAgICAgICAgPSBuZXcgRWNsaXBzZVN0YXR1c0hhbmRsZXIoKTsKLSAgICBFY2xpcHNlRW52aXJvbm1lbnQgICAgICAgIGVudmlyb25tZW50ICAgID0gbmV3IEVjbGlwc2VFbnZpcm9ubWVudCggbnVsbCwgY29udGV4dCwgaGFuZGxlciApOwotICAgIAotICAgIERhdGFNYXBwaW5nUmVnaXN0cnlJbXBsIGRhdGFSZWdpc3RyeV8gICA9IG5ldyBEYXRhTWFwcGluZ1JlZ2lzdHJ5SW1wbCgpOwotICAgIFNpbXBsZVdpZGdldFJlZ2lzdHJ5ICAgIHdpZGdldFJlZ2lzdHJ5XyA9IG5ldyBTaW1wbGVXaWRnZXRSZWdpc3RyeSgpOyAgCi0gICAgRGF0YUZsb3dNYW5hZ2VyICAgICAgICAgZGF0YU1hbmFnZXIgICAgID0gbmV3IERhdGFGbG93TWFuYWdlciggZGF0YVJlZ2lzdHJ5XywgZW52aXJvbm1lbnQgKTsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiggd2l6YXJkRWxlbWVudF8gIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIGlmKCBjb21tYW5kV2lkZ2V0QmluZGluZ18gPT0gbnVsbCApCi0gICAgICAgIHsKLSAgICAgICAgICBjb21tYW5kV2lkZ2V0QmluZGluZ18gPSAoQ29tbWFuZFdpZGdldEJpbmRpbmcpd2l6YXJkRWxlbWVudF8uY3JlYXRlRXhlY3V0YWJsZUV4dGVuc2lvbiggImNsYXNzIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmKCBidW5kbGVfID09IG51bGwgKQotICAgICAgICB7Ci0gICAgICAgICAgYnVuZGxlXyA9IFBsYXRmb3JtLmdldEJ1bmRsZSggd2l6YXJkRWxlbWVudF8uZ2V0TmFtZXNwYWNlKCkgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYoIGljb25CYW5uZXJOYW1lXyA9PSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIGljb25CYW5uZXJOYW1lXyA9IHdpemFyZEVsZW1lbnRfLmdldEF0dHJpYnV0ZSggImljb25iYW5uZXIiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYoIHdpemFyZFRpdGxlXyA9PSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIHdpemFyZFRpdGxlXyA9IHdpemFyZEVsZW1lbnRfLmdldEF0dHJpYnV0ZSggInRpdGxlIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotICAgIAotCWRhdGFPYmplY3RDb21tYW5kXyA9IG5ldyBEYXRhT2JqZWN0Q29tbWFuZCgpOwotICAgIGNhbkZpbmlzaFJlZ2lzdHJ5XyA9IG5ldyBTaW1wbGVDYW5GaW5pc2hSZWdpc3RyeSgpOyAKLSAgICBwYWdlTWFuYWdlcl8gICAgICAgPSBuZXcgV2l6YXJkUGFnZU1hbmFnZXIoIHdpZGdldFJlZ2lzdHJ5XywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRXaXphcmRQYWdlRmFjdG9yeSgpLCAKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTWFuYWdlciwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50ICk7ICAKLSAgICAKLSAgICBwYWdlTWFuYWdlcl8uc2V0Um9vdEZyYWdtZW50KCBnZXRSb290RnJhZ21lbnQoIHNlbGVjdGlvbiwgcGFnZU1hbmFnZXJfICkgKTsKLSAgICAKLSAgICBjb21tYW5kV2lkZ2V0QmluZGluZ18ucmVnaXN0ZXJXaWRnZXRNYXBwaW5ncyggd2lkZ2V0UmVnaXN0cnlfICk7Ci0gICAgY29tbWFuZFdpZGdldEJpbmRpbmdfLnJlZ2lzdGVyRGF0YU1hcHBpbmdzKCBkYXRhUmVnaXN0cnlfICk7Ci0gICAgY29tbWFuZFdpZGdldEJpbmRpbmdfLnJlZ2lzdGVyQ2FuRmluaXNoKCBjYW5GaW5pc2hSZWdpc3RyeV8gKTsKLSAgICAgICAgCi0gICAgLy8gSWYgYSBwYWdlIGlzIG5vdCBjb21wbGV0ZSBlbnN1cmUgdGhhdCBjYW5GaW5pc2ggaXMgZmFsc2UuCi0gICAgQ29uZGl0aW9uIGNhbkZpbmlzaCA9IG5ldyBDb25kaXRpb24oKQotICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gZXZhbHVhdGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElXaXphcmRQYWdlIGN1cnJlbnRQYWdlID0gcGFnZU1hbmFnZXJfLmdldEN1cnJlbnRQYWdlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UGFnZSAhPSBudWxsID8gY3VycmVudFBhZ2UuaXNQYWdlQ29tcGxldGUoKSA6IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICB9OyAKLSAgICAKLSAgICBjYW5GaW5pc2hSZWdpc3RyeV8uYWRkKCBjYW5GaW5pc2ggKTsKLSAgICAKLSAgICAvLyBTZXQgdGhhdCB3ZSBuZWVkIGEgcHJvZ3Jlc3MgbW9uaXRvci4KLSAgICBzZXROZWVkc1Byb2dyZXNzTW9uaXRvciggdHJ1ZSApOwotICAgIAotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBuZXh0L2JhY2sgYnV0dG9ucyBhcmUgZW5hYmxlZC4KLQlzZXRGb3JjZVByZXZpb3VzQW5kTmV4dEJ1dHRvbnMoIHRydWUgKTsKLSAgICAKLSAgICAvLyBTZXQgdGhlIGljb24gYmFubmVyIGlmIHNwZWNpZmllZC4KLSAgICBpZiggaWNvbkJhbm5lck5hbWVfICE9IG51bGwgJiYgaWNvbkJhbm5lck5hbWVfLmxlbmd0aCgpID4gMCApCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIFVSTCBpbnN0YWxsVVJMICAgICAgICA9IGJ1bmRsZV8uZ2V0RW50cnkoIi8iKTsgLy8kTk9OLU5MUy0xJAotICAgICAgICBVUkwgaW1hZ2VVUkwgICAgICAgICAgPSBuZXcgVVJMKGluc3RhbGxVUkwsIGljb25CYW5uZXJOYW1lXyApOwotICAgICAgICBJbWFnZURlc2NyaXB0b3IgaW1hZ2UgPSBJbWFnZURlc2NyaXB0b3IuY3JlYXRlRnJvbVVSTChpbWFnZVVSTCk7Ci0gICAgICAgIAotICAgICAgICBpZiggaW1hZ2UgIT0gbnVsbCApCi0gICAgICAgIHsKLSAgICAgICAgICBzZXREZWZhdWx0UGFnZUltYWdlRGVzY3JpcHRvciggaW1hZ2UgKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiggd2l6YXJkVGl0bGVfICE9IG51bGwgJiYgd2l6YXJkVGl0bGVfLmxlbmd0aCgpID4gMCApCi0gICAgewotICAgICAgc2V0V2luZG93VGl0bGUoIHdpemFyZFRpdGxlXyApOwotICAgIH0KLSAgfQotICAKLSAgLy8gU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcy4KLSAgcHJvdGVjdGVkIFdpemFyZFBhZ2VGYWN0b3J5IGdldFdpemFyZFBhZ2VGYWN0b3J5KCkKLSAgewotICAgIHJldHVybiBuZXcgU2ltcGxlUGFnZUZhY3RvcnkoKTsKLSAgfQotICAKLSAgLyoqCi0gICogUmV0dXJucyB0cnVlIGlmIGFsbCBwYWdlcyBhcmUgY29tcGxldGUuCi0gICogQHJldHVybiBUcnVlIGlmIGFsbCBwYWdlcyBhcmUgY29tcGxldGUuCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGNhbkZpbmlzaCAoKQotICB7Ci0gIAlpbnQgICAgIGxlbmd0aCA9IGNhbkZpbmlzaFJlZ2lzdHJ5Xy5zaXplKCk7Ci0gIAlib29sZWFuIHJlc3VsdCA9IHRydWU7Ci0gIAkKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBDb25kaXRpb24gY29uZGl0aW9uID0gKENvbmRpdGlvbiljYW5GaW5pc2hSZWdpc3RyeV8uZWxlbWVudEF0KCBpbmRleCApOwotICAgIAotICAgICAgcmVzdWx0ID0gY29uZGl0aW9uLmV2YWx1YXRlKCk7Ci0gICAgICAKLSAgICAgIGlmKCAhcmVzdWx0ICkgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKioKLSAgICAqIFJldHVybnMgdGhlIGZpcnN0IHBhZ2UgZm9yIHRoaXMgd2l6YXJkLgotICAgICoKLSAgICAqIEByZXR1cm4gdGhlIGZpcnN0IHBhZ2UgZm9yIHRoaXMgd2l6YXJkLgotICAqKi8KLSAgcHVibGljIElXaXphcmRQYWdlIGdldFN0YXJ0aW5nUGFnZSgpCi0gIHsKLSAgICByZXR1cm4gcGFnZU1hbmFnZXJfLmdldFN0YXJ0aW5nUGFnZSgpOwotICB9Ci0KLSAgLyoqCi0gICAgKiBSZXR1cm5zIHRoZSBuZXh0IHBhZ2UgYWZ0ZXIgcGFnZSBhbmQKLSAgICAqIHJ1bnMgdGhlIGFwcHJvcHJpYXRlIHRhc2tzLgotICAgICoKLSAgICAqIEByZXR1cm4gdGhlIG5leHQgcGFnZSBhZnRlciBwYWdlLgotICAqKi8KLSAgcHVibGljIElXaXphcmRQYWdlIGdldE5leHRQYWdlKCBJV2l6YXJkUGFnZSBwYWdlICkKLSAgeyAgIAotICAgIHJldHVybiBwYWdlTWFuYWdlcl8uZ2V0TmV4dFBhZ2UoKTsKLSAgfQotICAKLSAgLyoqCi0gICovCi0gIHB1YmxpYyBib29sZWFuIHBlcmZvcm1GaW5pc2ggKCkKLSAgeyAKLSAgICBib29sZWFuIHJlc3VsdCA9IHBhZ2VNYW5hZ2VyXy5wZXJmb3JtRmluaXNoKCk7Ci0gICAgCi0gICAgaWYoIHJlc3VsdCApIGNsZWFudXAoKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIFVuZG8gZnJhZ21lbnRzCi0gICovCi0gIHB1YmxpYyBib29sZWFuIHBlcmZvcm1DYW5jZWwgKCkKLSAgewotICAJYm9vbGVhbiByZXN1bHQgPSBwYWdlTWFuYWdlcl8ucGVyZm9ybUNhbmNlbCgpOwotICAJCi0gIAlpZiggcmVzdWx0ICkgY2xlYW51cCgpOwotICAJCi0gIAlyZXR1cm4gcmVzdWx0OwotICB9ICAKLSAgICAgIAotICBwdWJsaWMgT2JqZWN0IGdldERhdGFPYmplY3QoKQotICB7Ci0gICAgcmV0dXJuIGRhdGFPYmplY3RDb21tYW5kXy5nZXREYXRhT2JqZWN0KCk7ICAKLSAgfQotICAKLSAgcHJvdGVjdGVkIENvbW1hbmRGcmFnbWVudCBnZXRSb290RnJhZ21lbnQoIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiwgV2l6YXJkUGFnZU1hbmFnZXIgcGFnZU1hbmFnZXIgKQotICB7Ci0gICAgU2VxdWVuY2VGcmFnbWVudCByb290ID0gbmV3IFNlcXVlbmNlRnJhZ21lbnQoKTsKLSAgICAKLSAgICByb290LmFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBuZXcgU2VsZWN0aW9uQ29tbWFuZCggc2VsZWN0aW9uICksICIiICkgKTsgLy8kTk9OLU5MUy0xJAotICAgIHJvb3QuYWRkKCBuZXcgU2ltcGxlRnJhZ21lbnQoIG5ldyBDdXJyZW50UGFnZUNvbW1hbmQoIHBhZ2VNYW5hZ2VyICksICIiICkgKTsgLy8kTk9OLU5MUy0xJAotICAgIHJvb3QuYWRkKCBjb21tYW5kV2lkZ2V0QmluZGluZ18uY3JlYXRlKCkuY3JlYXRlKCkgKTsKLQlyb290LmFkZCggbmV3IFNpbXBsZUZyYWdtZW50KCBkYXRhT2JqZWN0Q29tbWFuZF8sICIiICkpOyAvLyROT04tTkxTLTEkCi0gICAgCi0gICAgcmV0dXJuIHJvb3Q7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZ2V0Q29uZmlnRWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gd2l6YXJkRWxlbWVudF87Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBmcmVlcyB1cCB0aGUgbWVtb3J5IGhlbGQgYnkgdGhpcyBvYmplY3QuCi0gICAqCi0gICAqLwotICBwcml2YXRlIHZvaWQgY2xlYW51cCgpCi0gIHsKLQkgIGljb25CYW5uZXJOYW1lXyAgICAgICA9IG51bGw7Ci0JICBidW5kbGVfICAgICAgICAgICAgICAgPSBudWxsOwotCSAgY2FuRmluaXNoUmVnaXN0cnlfICAgID0gbnVsbDsgCi0JICBwYWdlTWFuYWdlcl8gICAgICAgICAgPSBudWxsOwotCSAgd2l6YXJkVGl0bGVfICAgICAgICAgID0gbnVsbDsKLQkgIGNvbW1hbmRXaWRnZXRCaW5kaW5nXyA9IG51bGw7Ci0JICBXaWRnZXRSZWdpc3RyeS5pbml0aWFsaXplKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9JTmFtZWRXaWRnZXRDb250cmlidXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL0lOYW1lZFdpZGdldENvbnRyaWJ1dG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1YmFmMzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL0lOYW1lZFdpZGdldENvbnRyaWJ1dG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLQotcHVibGljIGludGVyZmFjZSBJTmFtZWRXaWRnZXRDb250cmlidXRvciAKLXsKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIFdpZGdldENvbnRyaWJ1dG9yIGZvciB0aGlzIE5hbWVkIHdpZGdldC4KLSAgICovCi0gIHB1YmxpYyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkgZ2V0V2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5KCk7Ci0gIAotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSAoKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIGEgZGVzY3JpcHRpb24gdGhhdCBtaWdodCBiZSBkaXNwbGF5ZWQgb24KLSAgICogYSB3aXphcmQgcGFnZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVzY3JpcHRpb24gKCk7Ci0gIAotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aXRsZSB0aGF0IG1heSBiZSBkaXNwbGF5ZWQgb24gCi0gICAqIGEgd2l6YXJkIHBhZ2UuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFRpdGxlKCk7ICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9JTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9JTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE0ZmYwMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5IAotewotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZmlyc3QgbmFtZWQgd2lkZ2V0LgotICAgKi8KLSAgSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3IgZ2V0Rmlyc3ROYW1lZFdpZGdldCgpOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gd2lkZ2V0Q29udHJpYnV0b3IKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBuZXh0IG5hbWVkIHdpZGdldCBhZnRlciB0aGUgb25lIHNwZWNpZmllZC4KLSAgICovCi0gIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIGdldE5leHROYW1lZFdpZGdldCggSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3Igd2lkZ2V0Q29udHJpYnV0b3IgKTsKLSAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IGV4dGVuaW9ucyB0byByZWdpc3RlciB0aGUgZGF0YSBtYXBwaW5ncwotICAgKiB0aGF0IHRoZWlyIHdpZGdldHMgdXNlLgotICAgKiAKLSAgICogQHBhcmFtIGRhdGFSZWdpc3RyeQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoIERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5ICk7Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1BhZ2VJbmZvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvUGFnZUluZm8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU4NDM2NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvUGFnZUluZm8uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotCi0KLXB1YmxpYyBjbGFzcyBQYWdlSW5mbyAKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICAgICAgICAgcGFnZU5hbWVfOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGVfOwotICBwcml2YXRlIFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSB3aWRnZXRGYWN0b3J5XzsKLSAgCi0gIHB1YmxpYyBQYWdlSW5mbyggU3RyaW5nICAgICAgICAgICAgICAgICAgIHBhZ2VOYW1lLAotICAgICAgICAgICAgICAgICAgIFN0cmluZyAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGUsCi0gICAgICAgICAgICAgICAgICAgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5IHdpZGdldEZhY3RvcnkgKQotICB7Ci0gICAgcGFnZU5hbWVfICAgICAgID0gcGFnZU5hbWU7Ci0gICAgcGFnZVRpdGxlXyAgICAgID0gcGFnZVRpdGxlOwotICAgIHdpZGdldEZhY3RvcnlfICA9IHdpZGdldEZhY3Rvcnk7Ci0gIH0gICAKLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UGFnZU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHBhZ2VOYW1lXzsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRQYWdlVGl0bGUoKQotICB7Ci0gICAgcmV0dXJuIHBhZ2VUaXRsZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBXaWRnZXRDb250cmlidXRvckZhY3RvcnkgZ2V0V2lkZ2V0RmFjdG9yeSgpCi0gIHsKLSAgICByZXR1cm4gd2lkZ2V0RmFjdG9yeV87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9QYWdlV2l6YXJkRGF0YUV2ZW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1BhZ2VXaXphcmREYXRhRXZlbnRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlYjY1ZjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1BhZ2VXaXphcmREYXRhRXZlbnRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuSVdpemFyZFBhZ2U7Ci0KLS8qKgotICogRHluYW1pYyB3aXphcmQgaW1wbGVtZW50YXRpb25zIHRoYXQgd2FudCB0byBjcmVhdGUgZGlmZmVyZW50Ci0gKiBraW5kcyBvZiB3aXphcmQgcGFnZXMgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuCi0gKiBUaGUgV2l6YXJkUGFnZUZhY3RvcnkgcmV0dXJucyBhIGNsYXNzIG9mIHRoaXMgdHlwZS4KLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgUGFnZVdpemFyZERhdGFFdmVudHMgZXh0ZW5kcyBJV2l6YXJkUGFnZQotewotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgV2lkZ2V0RGF0YUV2ZW50cyBvYmplY3QgY3JlYXRlZCBieSB0aGUgYWRkQ29udHJvbHMKLSAgICogbWV0aG9kIG9mIGEgV2lkZ2V0Q29udHJpYnV0b3IuCi0gICAqLwotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBnZXREYXRhRXZlbnRzKCk7Ci0gIAotICAvKioKLSAgICogVmFsaWRhdGVzIHRoYXQgdGhpcyB3aXphcmQgcGFnZSBpcyBjb21wbGV0ZS4gCi0gICAqCi0gICAqLwotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZVBhZ2VUb1N0YXR1cygpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NlbGVjdGlvbkNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9TZWxlY3Rpb25Db21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMTNiY2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NlbGVjdGlvbkNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLQotLyoqCi0gKiBUaGlzIFNlbGVjdGlvbkNvbW1hbmQgaXMgZXhlY3V0ZSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlCi0gKiBkeW5hbWljIHdpemFyZC4gIENvbW1hbmRzIGV4ZWN1dGVkIGluIHRoZSB3aXphcmQgdGhhdCBuZWVkCi0gKiB0aGUgaW5pdGlhbCBzZWxlY3Rpb24gY2FuIGdldCBpdCB0aHJvdWdoIGEgZGF0YSBtYXBwaW5nIGZyb20gCi0gKiB0aGlzIGNvbW1hbmQgdG8gdGhlIGNvbW1hbmQgdGhhdCBuZWVkcyBpdC4KLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBTZWxlY3Rpb25Db21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb25fOwotICAKLSAgcHVibGljIFNlbGVjdGlvbkNvbW1hbmQoIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiApCi0gIHsKLSAgICBzZWxlY3Rpb25fID0gc2VsZWN0aW9uOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBJU3RydWN0dXJlZFNlbGVjdGlvbiBnZXRJbml0aWFsU2VsZWN0aW9uKCkKLSAgewotICAgIHJldHVybiBzZWxlY3Rpb25fOwotICB9Ci0KLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgaW5mbykgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9TaW1wbGVDYW5GaW5pc2hSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NpbXBsZUNhbkZpbmlzaFJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlOTlkYzYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NpbXBsZUNhbkZpbmlzaFJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLkNvbmRpdGlvbjsKLQotCi0KLXB1YmxpYyBjbGFzcyBTaW1wbGVDYW5GaW5pc2hSZWdpc3RyeSBleHRlbmRzIFZlY3RvciBpbXBsZW1lbnRzIENhbkZpbmlzaFJlZ2lzdHJ5Ci17Ci0KLSAgLyoqCi0gICAqIENvbW1lbnQgZm9yIDxjb2RlPnNlcmlhbFZlcnNpb25VSUQ8L2NvZGU+Ci0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAzMjU3Mjg1ODM3ODcwNzQxMzA1TDsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuZW52LndpZGdldHMuQ2FuRmluaXNoUmVnaXN0cnkjYWRkQ29uZGl0aW9uKG9yZy5lY2xpcHNlLmVudi5jb21tYW5kLmZyYWdtZW50LkNvbmRpdGlvbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZENvbmRpdGlvbihDb25kaXRpb24gY29uZGl0aW9uKQotICB7Ci0gICAgYWRkKCBjb25kaXRpb24gKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NpbXBsZUNvbW1hbmRFbmdpbmVNYW5hZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlQ29tbWFuZEVuZ2luZU1hbmFnZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZhYWE3Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlQ29tbWFuZEVuZ2luZU1hbmFnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjMgICAxMjkyMzIgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzAzMTQgICAxNzY4ODYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzA3MzAgICAxOTcxNDQgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgUGFzcyBwcm9ncmVzcyBtb25pdG9yIHRvIHVuZG8gY29tbWFuZHMuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uub3BlcmF0aW9uLklSdW5uYWJsZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uub3BlcmF0aW9uLklSdW5uYWJsZVdpdGhQcm9ncmVzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFGbG93TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50RW5naW5lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkZyYWdtZW50TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQmFzZVN0YXR1c0hhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuRWNsaXBzZUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUxvZzsKLQotCi0vKioKLSAqIFRoaXMgY2xhc3MgbWFuYWdlcyB0aGUgZXhlY3V0aW9uIG9mIENvbW1hbmRzIGluIGEgZmxvdyBvZiBDb21tYW5kRnJhZ21lbnRzLgotICogVGhlIGJ1bGsgb2YgdGhpcyB3b3JrIGlzIGRvbmUgYnkgdGhlIENvbW1hbmRGcmFnbWVudEVuZ2luZS4gIFRoZSBtYWluIGpvYiBvZgotICogdGhpcyBjbGFzcyBpcyBydW4gdGhlIGZyYWdtZW50cyBpbiBhIHBhcnRpY3VsYXIgdHJhbnNhY3Rpb25hbCBlbnZpcm9ubWVudC4KLSAqIEEgZnJhZ21lbnQgaGFzIGEgbWV0aG9kIGNhbGxlZCBkb05vdFJ1bkluVHJhbnNhY3Rpb24gd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmUKLSAqIGlmIGl0cyBjb21tYW5kcyBzaG91bGQgYmUgcnVuIGluIGEgdHJhbnNhY3Rpb24gb3Igbm90LiAgSWYgdGhpcyBtZXRob2QgcmV0dXJucwotICogdHJ1ZShpZS4gbm90IGluIGEgdHJhbnNhY3Rpb24pIHRoZSBDb21tYW5kcyBhcmUgd3JhcHBlZCBpbiBhIElSdW5uYWJsZVdpdGhQcm9ncmVzcy4KLSAqIElmIGZhbHNlKCBpZS4gaW4gYSB0cmFuc2FjdGlvbiApIHRoZSBDb21tYW5kcyBhcmUgd3JhcHBlZCBpbiBhIFdvcmtzcGFjZU1vZGlmeU9wZXJhdGlvbi4gCi0gKgotICovCi1wdWJsaWMgY2xhc3MgU2ltcGxlQ29tbWFuZEVuZ2luZU1hbmFnZXIKLXsKLSAgcHJvdGVjdGVkIENvbW1hbmRGcmFnbWVudEVuZ2luZSBlbmdpbmVfOwotICBwcm90ZWN0ZWQgRGF0YUZsb3dNYW5hZ2VyICAgICAgIGRhdGFNYW5hZ2VyXzsKLSAgcHJvdGVjdGVkICAgRWNsaXBzZUVudmlyb25tZW50ICAgIGVudmlyb25tZW50XzsKLSAgCi0gIHByaXZhdGUgICBib29sZWFuICAgICAgICAgICAgICAgZm91bmRTdG9wXzsKLSAgcHJpdmF0ZSAgIGJvb2xlYW4gICAgICAgICAgICAgICBkb05vdFJ1bkluVHJhbnNhY3Rpb25fOwotICAKLSAgcHVibGljIFNpbXBsZUNvbW1hbmRFbmdpbmVNYW5hZ2VyKCBFY2xpcHNlRW52aXJvbm1lbnQgZW52aXJvbm1lbnQsIERhdGFGbG93TWFuYWdlciBkYXRhTWFuYWdlciApCi0gIHsKLSAgICBlbnZpcm9ubWVudF8gPSBlbnZpcm9ubWVudDsKLSAgICBkYXRhTWFuYWdlcl8gPSBkYXRhTWFuYWdlcjsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIHJvb3QgZnJhZ21lbnQuICBUaGUgZXhlY3V0aW9uIGVuZ2luZSB3aWxsIHN0YXJ0IGV4ZWN1dGluZyBjb21tYW5kcwotICAgKiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgcm9vdCBmcmFnbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSByb290IHRoZSByb290IGZyYWdtZW50LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Um9vdEZyYWdtZW50KCBDb21tYW5kRnJhZ21lbnQgcm9vdCApCi0gIHsKLSAgCWVuZ2luZV8gPSBuZXcgQ29tbWFuZEZyYWdtZW50RW5naW5lKCByb290LCBkYXRhTWFuYWdlcl8sIGVudmlyb25tZW50XyApOwotCQotCSAgZW52aXJvbm1lbnRfLnNldENvbW1hbmRNYW5hZ2VyKCBlbmdpbmVfICk7Ci0gIAkKLSAgICBlbmdpbmVfLnNldFBlZWtGcmFnbWVudExpc3RlbmVyKCAKLSAgICAgIG5ldyBGcmFnbWVudExpc3RlbmVyKCkKLSAgICAgIHsKLSAgICAgICAgcHVibGljICBib29sZWFuIG5vdGlmeSggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBwZWVrRnJhZ21lbnQoIGZyYWdtZW50ICk7Ci0gICAgICAgIH0KLSAgICAgIH0gKTsgIAotICAgICAgICAgICAgICAgICAgCi0gICAgZW5naW5lXy5zZXROZXh0RnJhZ21lbnRMaXN0ZW5lciggCi0gICAgICBuZXcgRnJhZ21lbnRMaXN0ZW5lcigpCi0gICAgICB7Ci0gICAgICAgIHB1YmxpYyAgYm9vbGVhbiBub3RpZnkoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbmV4dEZyYWdtZW50KCBmcmFnbWVudCApOwotICAgICAgICB9Ci0gICAgICB9ICk7ICAKLSAgICAKLSAgICBlbmdpbmVfLnNldEFmdGVyRXhlY3V0ZUZyYWdtZW50TGlzdGVuZXIoIAotICAgICAgICBuZXcgRnJhZ21lbnRMaXN0ZW5lcigpCi0gICAgICAgIHsKLSAgICAgICAgICBwdWJsaWMgIGJvb2xlYW4gbm90aWZ5KCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZnRlckV4ZWN1dGVOZXh0RnJhZ21lbnQoIGZyYWdtZW50ICk7Ci0gICAgICAgICAgfQotICAgICAgICB9ICk7ICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkgIGVuZ2luZV8uc2V0VW5kb0ZyYWdtZW50TGlzdGVuZXIoCi0gICAgICBuZXcgRnJhZ21lbnRMaXN0ZW5lcigpCi0gICAgICB7Ci0gICAgICAgIHB1YmxpYyBib29sZWFuIG5vdGlmeSggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB1bmRvRnJhZ21lbnQoIGZyYWdtZW50ICk7Ci0gICAgICAgIH0KLSAgICAgIH0gKTsgICAgICAgICAgICAgICAKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGFmdGVyRXhlY3V0ZU5leHRGcmFnbWVudCggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICkKLSAgewotICAgIGJvb2xlYW4gICAgICAgICAgIGNvbnRpbnVlRXhlY3V0ZSA9IHRydWU7Ci0gICAgQmFzZVN0YXR1c0hhbmRsZXIgc3RhdHVzSGFuZGxlciAgID0gKEJhc2VTdGF0dXNIYW5kbGVyKWVudmlyb25tZW50Xy5nZXRTdGF0dXNIYW5kbGVyKCk7Ci0gICAgSVN0YXR1cyAgICAgICAgICAgY29tbWFuZFN0YXR1cyAgID0gZW5naW5lXy5nZXRMYXN0U3RhdHVzKCk7Ci0gICAgSVN0YXR1cyAgICAgICAgICAgaGFuZGxlclN0YXR1cyAgID0gc3RhdHVzSGFuZGxlci5nZXRTdGF0dXMoKTsKLSAgICAKLSAgICBpZiggY29tbWFuZFN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IgJiYKLSAgICAgICAgaGFuZGxlclN0YXR1cy5nZXRTZXZlcml0eSgpICE9IElTdGF0dXMuRVJST1IgKQotICAgIHsKLSAgICAgIC8vIFRoZSBjb21tYW5kIHJldHVybmVkIGFuIGVycm9yIHN0YXR1cyBmb3IgdGhlIGVuZ2luZSB0byBzdG9wLAotICAgICAgLy8gYnV0IHRoZSBzdGF0dXMgaGFuZGxlciBkaWQgbm90IGhhdmUgcmVwb3J0IGFuZCBlcnJvci4KLSAgICAgIC8vIFRoZXJlZm9yZSwgd2Ugd2lsbCByZXBvcnQgdGhpcyBzdGF0dXMgcmV0dXJuZWQgYnkgdGhlIGNvbW1hbmQKLSAgICAgIC8vIGlmIHRoZXJlIGlzIGEgbWVzc2FnZSB0byBkaXNwbGF5LiAgCi0gICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gY29tbWFuZFN0YXR1cy5nZXRNZXNzYWdlKCk7Ci0gICAgICAKLSAgICAgIGlmKCBlcnJvck1lc3NhZ2UgIT0gbnVsbCAmJiBlcnJvck1lc3NhZ2UubGVuZ3RoKCkgPiAwICkKLSAgICAgIHsKLSAgICAgICAgc3RhdHVzSGFuZGxlci5yZXBvcnRFcnJvciggY29tbWFuZFN0YXR1cyApOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmKCBjb21tYW5kU3RhdHVzLmdldFNldmVyaXR5KCkgIT0gSVN0YXR1cy5FUlJPUiAmJgotICAgICAgICAgICAgIGhhbmRsZXJTdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLkVSUk9SICkKLSAgICB7Ci0gICAgICAvLyBUaGUgbGFzdCBjb21tYW5kIGRpZG4ndCByZXR1cm4gYW4gZXJyb3IsIGJ1dCB0aGUgc3RhdHVzIGhhbmRsZXIKLSAgICAgIC8vIGRpZCByZXBvcnQgYW5kIGVycm9yLiAgVGhlcmVmb3JlLCB3ZSBzaG91bGQgc3RvcC4KLSAgICAgIGNvbnRpbnVlRXhlY3V0ZSA9IGZhbHNlOyAgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gY29udGludWVFeGVjdXRlOwotICB9Ci0gIAotICAvKioKLSAgICogVGhlIENvbW1hbmRGcmFnbWVudEVuZ2luZSBjYWxscyB0aGlzIG1ldGhvZCB3aGVuIGl0IGlzIHBlZWtpbmcgZm9yd2FyZAotICAgKiBpbiB0aGUgZnJhZ21lbnRzLiAgV2hlbiBwZWVraW5nIGZvcndhcmQgdGhlIGNvbW1hbmQgc3RhY2sgc3RhdGUgaW4gdGhlCi0gICAqIGVuZ2luZSBpcyBub3QgY2hhbmdlcy4KLSAgICogCi0gICAqIAotICAgKiBAcGFyYW0gZnJhZ21lbnQgdGhlIGZyYWdtZW50IHRoYXQgaXQgaXMgcGVla2luZyBhdC4KLSAgICogQHJldHVybiBJbmRpY2F0ZXMgd2hldGhlciBwZWVraW5nIHNob3VsZCBzdG9wIG9yIG5vdC4KLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIHBlZWtGcmFnbWVudCggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICkKLSAgeyAgICAgCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUaGUgQ29tbWFuZEZyYWdtZW50RW5naW5lIGNhbGxzIHRoaXMgbWV0aG9kIHdoZW4gaXQgaXMgbW92aW5nIGZvcndhcmQKLSAgICogaW4gdGhlIGZyYWdtZW50cy4gICBXaGVuIG1vdmluZyBmb3J3YXJkIHRoZSBjb21tYW5kIHN0YWNrIHN0YXRlIGlzIHNhdmVkCi0gICAqIGF0IGVhY2ggZnJhZ21lbnQgaXMgdHJhdmVyc2VkLgotICAgKiAKLSAgICogQHBhcmFtIGZyYWdtZW50IHRoZSBmcmFnbWVudCB0aGF0IGlzIGJlaW5nIHRyYXZlcnNlZC4KLSAgICogQHJldHVybiBpbmRpY2F0ZXMgaWYgdGhlIGZvcndhcmQgdHJhdmVyc2FsIHNob3VsZCBjb250aW51ZS4gIAotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gbmV4dEZyYWdtZW50KCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7ICAgICAKLSAgICBpZiggZnJhZ21lbnQuZG9Ob3RSdW5JblRyYW5zYWN0aW9uKCkgIT0gZG9Ob3RSdW5JblRyYW5zYWN0aW9uXyApCi0gICAgewotICAgICAgLy8gVGhlIGZyYWdtZW50IGlzIHJlcXVlc3RpbmcgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gZW52aXJvbm1lbnQgdGhhbgotICAgICAgLy8gdGhlIG9uZSB0aGF0IHdlIGFyZSBpbiBzbyB3ZSBtdXN0IHN0b3AgYW5kIGNoYW5nZSBlbnZpcm9ubWVudHMuCi0gICAgICBkb05vdFJ1bkluVHJhbnNhY3Rpb25fID0gZnJhZ21lbnQuZG9Ob3RSdW5JblRyYW5zYWN0aW9uKCk7Ci0gICAgICBmb3VuZFN0b3BfICAgICAgICAgICAgID0gZmFsc2U7ICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBmb3VuZFN0b3BfOwotICB9Ci0gIAotICAvKioKLSAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZvciBlYWNoIGZyYWdtZW50IHdoZW4gdGhlIGNvbW1hbmQgZW5naW5lIGlzIHVud2luZGluZwotICAgKiBpdHMgc3RhY2sgZHVyaW5nIGFuIHVuZG8gb3BlcmF0aW9uLgotICAgKiAKLSAgICogQHBhcmFtIGZyYWdtZW50ICB0aGUgZnJhZ21lbnQgYmVpbmcgdW5kb25lLgotICAgKiBAcmV0dXJuIHJldHVybnMgdHJ1ZSBpZiB0aGUgdW5kbyBwcm9jZXNzIHNob3VsZCBjb250aW51ZS4KLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIHVuZG9GcmFnbWVudCggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICkKLSAgeyAgCSAgCQotICAgIHJldHVybiB0cnVlOwotICB9Ci0gICAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCB1bmRvZXMgdGhlIGNvbW1hbmRzIHRoYXQgd2VyZSBleGVjdXRlZCBpbiB0aGUgcnVuRm9yd2FyZFRvTmV4dFN0b3AKLSAgICogbWV0aG9kLgotICAgKiBAcGFyYW0gY29udGV4dCB0aGUgcnVubmFibGUgY29udGV4dC4KLSAgICogQHJldHVybiByZXR1cm5zIGlmIGFsbCBjb21tYW5kcyBoYXZlIGJlZW4gdW5kb25lIG9yIG5vdC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHJ1blVuZG9Ub05leHRTdG9wKCBJUnVubmFibGVDb250ZXh0IGNvbnRleHQgKQotICB7Ci0gICAgZmluYWwgYm9vbGVhbiByZXN1bHRbXSA9IG5ldyBib29sZWFuW117dHJ1ZX07Ci0gICAgCi0gICAgSVJ1bm5hYmxlV2l0aFByb2dyZXNzIHVuZG9PcGVyYXRpb24gCi0gICAgICA9IG5ldyBJUnVubmFibGVXaXRoUHJvZ3Jlc3MoKQotICAgICAgICB7Ci0gICAgICAgICAgcHVibGljIHZvaWQgcnVuKElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHRbMF0gPSBlbmdpbmVfLnVuZG9Ub0xhc3RTdG9wKG1vbml0b3IpOwotICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgdHJ5Ci0gICAgeyAgICAgIAotICAgICAgaWYoIGNvbnRleHQgPT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYSBjb250YWluZXIgeWV0IHNvIGp1c3QgcnVuIHRoZSBvcGVyYXRpb24uCi0gICAgICAgIHVuZG9PcGVyYXRpb24ucnVuKCBudWxsICk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIFdlIGhhdmUgYSBjb250YWluZXIgd2hlcmUgdGhpcyBvcGVyYXRpb24gY2FuIHJ1biBhbmQgaGF2ZQotICAgICAgICAvLyBpdHMgcHJvZ3Jlc3MgZGlzcGxheWVkLgotICAgICAgICBjb250ZXh0LnJ1biggZmFsc2UsIGZhbHNlLCB1bmRvT3BlcmF0aW9uICk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoKCBFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICAvLyBGb3Igbm93IHdlIHdpbGwgaWdub3JlIGFsbCBleGNlcHRpb25zLgotICAgIH0gCi0gICAgCi0gICAgcmV0dXJuIHJlc3VsdFswXTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgZXhlY3V0ZXMgdGhlIENvbW1hbmRGcmFnbWVudCBjb21tYW5kcyBpbiB0aGUgY29udGV4dCBwcm92aWRlZC4KLSAgICogCi0gICAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0Ci0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgc3RhdHVzIG9mIGV4ZWN1dGluZyB0aGUgY29tbWFuZHMuCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyBydW5Gb3J3YXJkVG9OZXh0U3RvcCggSVJ1bm5hYmxlQ29udGV4dCBjb250ZXh0ICkKLSAgewotICAgIElSdW5uYWJsZVdpdGhQcm9ncmVzcyBvcGVyYXRpb24gPSBudWxsOwotICAgIAotICAJZG9Ob3RSdW5JblRyYW5zYWN0aW9uXyA9IGZhbHNlOwotICAJCi0gIAlkbwotICAJewotICAJICAvLyBXZSB3aWxsIHN0b3AgdW5sZXNzIHdlIGFyZSBjaGFuZ2luZyB0cmFuc2FjdGlvbiBtb2Rlcy4KLSAgICAgIGZvdW5kU3RvcF8gPSB0cnVlOwotICAgICAgCi0gIAkgIGlmKCBkb05vdFJ1bkluVHJhbnNhY3Rpb25fICkKLSAgCSAgewotICAJICAgIG9wZXJhdGlvbiA9IGdldE5vVHJhbnNhY3Rpb25PcGVyYXRpb24oKTsKLSAgCSAgfQotICAJICBlbHNlCi0gIAkgIHsKLSAgCSAgICBvcGVyYXRpb24gPSBnZXRUcmFuc2FjdGlvbk9wZXJhdGlvbigpOwotICAJICB9Ci0gIAkgIAotICAgCSAgdHJ5Ci0gIAkgIHsgIAkgICAKLSAgCSAgICBpZiggY29udGV4dCA9PSBudWxsICkKLSAgCSAgICB7Ci0gIAkgICAJICAvLyBXZSBkb24ndCBoYXZlIGEgY29udGFpbmVyIHlldCBzbyBqdXN0IHJ1biB0aGUgb3BlcmF0aW9uLgotICAJICAgCSAgb3BlcmF0aW9uLnJ1biggbnVsbCApOwotICAJICAgIH0KLSAgCSAgICBlbHNlCi0gIAkgICAgewotICAJICAgCSAgLy8gV2UgaGF2ZSBhIGNvbnRhaW5lciB3aGVyZSB0aGlzIG9wZXJhdGlvbiBjYW4gcnVuIGFuZCBoYXZlCi0gIAkgICAJICAvLyBpdHMgcHJvZ3Jlc3MgZGlzcGxheWVkLgotICAJICAgICAgY29udGV4dC5ydW4oIGZhbHNlLCBmYWxzZSwgb3BlcmF0aW9uICk7Ci0gIAkgICAgfQotICAJICB9Ci0gIAkgIGNhdGNoKCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBleGMgKQotICAJICB7Ci0gIAkgICAgLy9UT0RPIHNob3VsZCBsb2cgdGhlc2UgZXhjZXB0aW9ucy4KLSAgCSAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gIAkgIH0KLSAgCSAgY2F0Y2goIEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gZXhjICkKLSAgCSAgewotICAJICAgIC8vVE9ETyBzaG91bGQgbG9nIHRoZXNlIGV4Y2VwdGlvbnMuCi0gIAkgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAJICB9Ci0gIAl9ICAKLSAgCXdoaWxlKCAhZm91bmRTdG9wXyApOyAKLSAgCQotICAJcmV0dXJuIGVuZ2luZV8uZ2V0TGFzdFN0YXR1cygpOwotICB9Ci0gIAotICBwcml2YXRlIElSdW5uYWJsZVdpdGhQcm9ncmVzcyBnZXRUcmFuc2FjdGlvbk9wZXJhdGlvbigpCi0gIHsKLSAgICBJUnVubmFibGVXaXRoUHJvZ3Jlc3Mgb3BlcmF0aW9uID0gbmV3IElSdW5uYWJsZVdpdGhQcm9ncmVzcygpCi0gICAgewotICAgICAgcHVibGljIHZvaWQgcnVuKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotICAgICAgewotICAgICAgICBlbnZpcm9ubWVudF8uZ2V0TG9nKCkubG9nKElMb2cuSU5GTywgImNvbW1hbmQiLCA1MDAyLCB0aGlzLCAiZ2V0VHJhbnNhY3Rpb25PcGVyYXRpb24iLCAiU3RhcnQgb2YgdHJhbnNhY3Rpb24iKTsKLSAgICAgICAgCi0gICAgICAgIEJhc2VTdGF0dXNIYW5kbGVyIHN0YXR1c0hhbmRsZXIgPSAoQmFzZVN0YXR1c0hhbmRsZXIpZW52aXJvbm1lbnRfLmdldFN0YXR1c0hhbmRsZXIoKTsKLSAgICAgICAgCi0gICAgICAgIHN0YXR1c0hhbmRsZXIucmVzZXRTdGF0dXMoKTsKLSAgICAgICAgZW5naW5lXy5tb3ZlRm9yd2FyZFRvTmV4dFN0b3AoIG1vbml0b3IgKTsKLSAgICAgICAgCi0gICAgICAgIAotICAgICAgICBlbnZpcm9ubWVudF8uZ2V0TG9nKCkubG9nKElMb2cuSU5GTywgImNvbW1hbmQiLCA1MDAzLCB0aGlzLCAiZ2V0VHJhbnNhY3Rpb25PcGVyYXRpb24iLCAiRW5kIG9mIHRyYW5zYWN0aW9uIik7Ci0gICAgICB9Ci0gICAgfTsKLSAgICAKLSAgICByZXR1cm4gb3BlcmF0aW9uOwotICB9Ci0gIAotICBwcml2YXRlIElSdW5uYWJsZVdpdGhQcm9ncmVzcyBnZXROb1RyYW5zYWN0aW9uT3BlcmF0aW9uKCkKLSAgewotICAgIElSdW5uYWJsZVdpdGhQcm9ncmVzcyBvcGVyYXRpb24gPSBuZXcgSVJ1bm5hYmxlV2l0aFByb2dyZXNzKCkKLSAgICB7Ci0gICAgICBwdWJsaWMgdm9pZCBydW4oIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0gICAgICB7Ci0gICAgICAgIGVudmlyb25tZW50Xy5nZXRMb2coKS5sb2coSUxvZy5JTkZPLCAiY29tbWFuZCIsIDUwODUsIHRoaXMsICJnZXROb1RyYW5zYWN0aW9uT3BlcmF0aW9uIiwgIlN0YXJ0IG9mIE5PTiB0cmFuc2FjdGlvbiIpOwotICAgICAgICAKLSAgICAgICAgQmFzZVN0YXR1c0hhbmRsZXIgc3RhdHVzSGFuZGxlciA9IChCYXNlU3RhdHVzSGFuZGxlcillbnZpcm9ubWVudF8uZ2V0U3RhdHVzSGFuZGxlcigpOwotICAgICAgICAKLSAgICAgICAgc3RhdHVzSGFuZGxlci5yZXNldFN0YXR1cygpOwotICAgICAgICBlbmdpbmVfLm1vdmVGb3J3YXJkVG9OZXh0U3RvcCggbW9uaXRvciApOwotICAgICAgICBlbnZpcm9ubWVudF8uZ2V0TG9nKCkubG9nKElMb2cuSU5GTywgImNvbW1hbmQiLCA1MDg2LCB0aGlzLCAiZ2V0Tm9UcmFuc2FjdGlvbk9wZXJhdGlvbiIsICJFbmQgb2YgTk9OIHRyYW5zYWN0aW9uIik7Ci0gICAgICB9Ci0gICAgfTsgCi0gICAgCi0gICAgcmV0dXJuIG9wZXJhdGlvbjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NpbXBsZURpYWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NpbXBsZURpYWxvZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTZmOGY3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9TaW1wbGVEaWFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MTggICAxMzYzMzUgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA0MTggICAxMzY3NTkgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjExMDYgICAxNDI1MDAgZGF2aWQuc2NobmVpZGVyQHVuaXN5cy5jb20gLSBEYXZpZCBTY2huZWlkZXIKLSAqIDIwMDYwODI5ICAgMTgwODMzIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsICBOZXcgV2ViIFNlcnZpY2Ugd2l6YXJkIHNlcnZpY2Ugc2V0dGluZ3MgZGlhbG9nIGhhcyB1bmxhYmVsbGVkIGVuYWJsZWQgdGV4dCBmaWVsZHMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuSURpYWxvZ0NvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBTaW1wbGVEaWFsb2cgZXh0ZW5kcyBEaWFsb2cgaW1wbGVtZW50cyBEaWFsb2dEYXRhRXZlbnRzCi17Ci0gIHByaXZhdGUgICBXaWRnZXRDb250cmlidXRvciB3aWRnZXRfOwotICBwcml2YXRlICAgV2lkZ2V0RGF0YUV2ZW50cyAgZGF0YUV2ZW50c187Ci0gIHByaXZhdGUgICBMaXN0ZW5lciAgICAgICAgICBzdGF0dXNMaXN0ZW5lcl87Ci0gIHByb3RlY3RlZCBXaXphcmRQYWdlTWFuYWdlciBwYWdlTWFuYWdlcl87ICAKLSAgcHJpdmF0ZSBUZXh0IG1lc3NhZ2VUZXh0XzsKLSAgcHJpdmF0ZSBib29sZWFuIG9rXzsKLSAgCQotICBwdWJsaWMgU2ltcGxlRGlhbG9nKCBTaGVsbCBzaGVsbCwgUGFnZUluZm8gcGFnZUluZm8pCi0gIHsKLQlzdXBlcihzaGVsbCk7Ci0Jd2lkZ2V0XyAgPSBwYWdlSW5mby5nZXRXaWRnZXRGYWN0b3J5KCkuY3JlYXRlKCk7Ci0gIAlzdGF0dXNMaXN0ZW5lcl8gPSBuZXcgU3RhdHVzTGlzdGVuZXIoKTsKLSAgfSAJIAotICAKLSAgQ29tcG9zaXRlIHBhcmVudF87Ci0gIHB1YmxpYyBDb250cm9sIGNyZWF0ZURpYWxvZ0FyZWEoIENvbXBvc2l0ZSBwYXJlbnQgKQotICB7CQotCSAgcGFyZW50XyA9IHBhcmVudDsKLQlDb21wb3NpdGUgY29udHJvbCA9IChDb21wb3NpdGUpIHN1cGVyLmNyZWF0ZURpYWxvZ0FyZWEocGFyZW50KTsKLQlkYXRhRXZlbnRzXyA9IHdpZGdldF8uYWRkQ29udHJvbHMoIGNvbnRyb2wsIHN0YXR1c0xpc3RlbmVyXyApOwotCQotCS8vVGV4dCBhcmVhIHRvIGRpc3BsYXkgdmFsaWRhdGlvbiBtZXNzYWdlcwotCW1lc3NhZ2VUZXh0XyA9IG5ldyBUZXh0KHBhcmVudCwgU1dULldSQVAgfCBTV1QuTVVMVEkgfCBTV1QuUkVBRF9PTkxZKTsKLQltZXNzYWdlVGV4dF8uc2V0QmFja2dyb3VuZChwYXJlbnQuZ2V0QmFja2dyb3VuZCgpKTsKLSAgICBHcmlkRGF0YSBncmlkZGF0YSA9IG5ldyBHcmlkRGF0YShHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwpOwotICAgIGdyaWRkYXRhLmhvcml6b250YWxJbmRlbnQgPSAxMDsKLSAgICBtZXNzYWdlVGV4dF8uc2V0TGF5b3V0RGF0YSggZ3JpZGRhdGEgKTsgICAgCi0gICAgcGFyZW50Xy5zZXRGb2N1cygpOwotICAgIAotICAgIC8vQ2FsbCBleHRlbmRlcnMgb3ZlcnJpZGUgb2YgdGhlIGNhbGxTZXR0ZXJzIG1ldGhvZCB0byBpbnRpYWxpemUgYW55IGRhdGEgaW4gd2lkZ2V0Ci0gICAgY2FsbFNldHRlcnMoKTsgICAKLSAgICBEaWFsb2cuYXBwbHlEaWFsb2dGb250KHBhcmVudCk7Ci0gICAgcmV0dXJuIGNvbnRyb2w7Ci0gIH0gIAotICAKLSAgLy9PdmVycmlkZSBvZiBEaWFsb2cuY3JlYXRlQ29udGVudHMgc28gd2UgY2FuIGFmZmVjdCBidXR0b24gZW5hYmxlbWVudCAKLSAgcHJvdGVjdGVkIENvbnRyb2wgY3JlYXRlQ29udGVudHMoQ29tcG9zaXRlIHBhcmVudCkgewotCUNvbnRyb2wgYyA9IHN1cGVyLmNyZWF0ZUNvbnRlbnRzKHBhcmVudCk7Ci0JLy9lbmFibGUgY29udHJvbHMgZm9yIGluaXRpYWwgZW50cnkgdG8gZGlhbG9nCi0JdmFsaWRhdGVQYWdlVG9TdGF0dXMoKTsKLQlyZXR1cm4gYzsKLSAgfQotCi0gIC8vIEVuYWJsZSBvciBkaXNhYmxlIG9rIGJ1dHRvbiBiYXNlZCBvbiBzdGF0ZQotICBwcml2YXRlIHZvaWQgZW5hYmxlT2soYm9vbGVhbiBzdGF0ZSkKLSAgewotCSAgQnV0dG9uIG9rQnV0dG9uID0gZ2V0QnV0dG9uKElEaWFsb2dDb25zdGFudHMuT0tfSUQpOwotCSAgaWYgKG9rQnV0dG9uICE9IG51bGwpCi0JICAgIG9rQnV0dG9uLnNldEVuYWJsZWQoc3RhdGUpOwotICB9Ci0gIAotICAvL0ltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBjYWxsIGFsbCBzZXR0ZXJzIG9uIHRoZSBkaWFsb2cgd2lkZ2V0IGFmdGVyIHRoZSBjb250cm9scyBhcmUgY3JlYXRlZAotICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBjYWxsU2V0dGVycygpOwotICAKLSAgcHVibGljIFdpZGdldERhdGFFdmVudHMgZ2V0RGF0YUV2ZW50cygpCi0gIHsKLSAgICByZXR1cm4gZGF0YUV2ZW50c187Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBXaWRnZXRDb250cmlidXRvciBnZXRXaWRnZXQoKQotICB7Ci0JICByZXR1cm4gd2lkZ2V0XzsKLSAgfQotICAKLSAgLy8gc2V0cyBtZXNzYWdlIGluIG1lc3NhZ2UgYXJlYSBhYm92ZSBPSyBhbmQgQ2FuY2VsIGJ1dHRvbnMKLSAgcHJpdmF0ZSB2b2lkIHNldE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2UpCi0gIHsgIAotCSAgaWYgKG1lc3NhZ2UgPT0gbnVsbCkKLQkJICBtZXNzYWdlVGV4dF8uc2V0VGV4dCgiIik7CSAgICAgIAotCSAgZWxzZQkJICAKLQkgICAgICBtZXNzYWdlVGV4dF8uc2V0VGV4dChtZXNzYWdlKTsKLSAgICAgIC8vIGZvcmNlIGEgcmVzaXplIG9mIHRoZSBwYXJlbnQgY29tcG9zaXRlIGFuZCB3cmFwIG9mIHRoZSB0ZXh0IGZpZWxkIGlmIG5lY2Vzc2FyeQotCSAgcGFyZW50Xy5sYXlvdXQoKTsgIAotICB9Ci0gIAkgIAotICAKLSAgCi0gIHB1YmxpYyB2b2lkIHZhbGlkYXRlUGFnZVRvU3RhdHVzKCkKLSAgewotICAgIElTdGF0dXMgc3RhdHVzICA9IHdpZGdldF8uZ2V0U3RhdHVzKCk7ICAgIAotICAgICAgICAKLSAgICBpZiggc3RhdHVzICE9IG51bGwgKQotICAgIHsKLSAgICAgIFN0cmluZyBtZXNzYWdlID0gc3RhdHVzLmdldE1lc3NhZ2UoKTsKLSAgICAgIGludCBzZXZlcml0eSA9IHN0YXR1cy5nZXRTZXZlcml0eSgpOwotICAgICAgCi0gICAgICAvLyBmb3IgZXJyb3IgY29uZGl0aW9uLCBkaXNhYmxlIG9rIGFuZCBwcmludCBtZXNzYWdlCi0gICAgICBpZiggc2V2ZXJpdHkgPT0gSVN0YXR1cy5FUlJPUiApCi0gICAgICB7IAotICAgICAgICBpZiggbWVzc2FnZS5sZW5ndGgoKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgIHNldE1lc3NhZ2UoIG51bGwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHNldE1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICAgIH0KLSAgICAgICAgb2tfID0gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBkaXNwbGF5IHdhcm5pbmcgYW5kIGluZm8gbWVzc2FnZXMgYnV0IHN0aWxsIGVuYWJsZSBPSwotICAgICAgZWxzZSBpZiAoc2V2ZXJpdHkgPT0gSVN0YXR1cy5XQVJOSU5HIHwgc2V2ZXJpdHkgPT0gSVN0YXR1cy5JTkZPKQotICAgICAgewotICAgICAgICBzZXRNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICBva18gPSB0cnVlOyAgICAgICAgCi0gICAgICB9ICAgICAKLSAgICAgIC8vIG5vIG1lc3NhZ2UgdG8gZGlzcGxheQotICAgICAgZWxzZSAgCi0gICAgICB7Ci0gICAgICAgIHNldE1lc3NhZ2UoIG51bGwpOwotICAgICAgICBva18gPSB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICAvLyBudWxsIHN0YXR1cyBjYXNlCi0gICAgZWxzZQotICAgIHsKLSAgICAgIHNldE1lc3NhZ2UobnVsbCk7Ci0gICAgICBva18gPSB0cnVlOwotICAgIH0KLSAgICAKLSAgICBlbmFibGVPayhva18pOyAgICAKLSAgfQotICAKLSAgcHJpdmF0ZSBjbGFzcyBTdGF0dXNMaXN0ZW5lciBpbXBsZW1lbnRzIExpc3RlbmVyCi0gIHsKLQlwdWJsaWMgdm9pZCBoYW5kbGVFdmVudCggRXZlbnQgZXZ0ICkgCi0JewotICAgICAgdmFsaWRhdGVQYWdlVG9TdGF0dXMoKTsKLQl9Ci0gIH0KLX0gIAotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlUGFnZUZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9TaW1wbGVQYWdlRmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Njk0ZTcwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9TaW1wbGVQYWdlRmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzOwotCi0KLXB1YmxpYyBjbGFzcyBTaW1wbGVQYWdlRmFjdG9yeSBpbXBsZW1lbnRzIFdpemFyZFBhZ2VGYWN0b3J5Ci17ICAgCi0gIHB1YmxpYyBQYWdlV2l6YXJkRGF0YUV2ZW50cyBnZXRQYWdlKCBQYWdlSW5mbyBwYWdlSW5mbywgV2l6YXJkUGFnZU1hbmFnZXIgbWFuYWdlciApCi0gIHsKLSAgICByZXR1cm4gbmV3IFNpbXBsZVdpemFyZFBhZ2UoIHBhZ2VJbmZvLCBtYW5hZ2VyICk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9TaW1wbGVQb3B1cFBhZ2VGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlUG9wdXBQYWdlRmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTMzMWQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9TaW1wbGVQb3B1cFBhZ2VGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLQotcHVibGljIGNsYXNzIFNpbXBsZVBvcHVwUGFnZUZhY3RvcnkgaW1wbGVtZW50cyBXaXphcmRQYWdlRmFjdG9yeQoteyAgIAotICBwcml2YXRlIFN0cmluZyBpZF87Ci0gIAotICBwdWJsaWMgU2ltcGxlUG9wdXBQYWdlRmFjdG9yeSggU3RyaW5nIGlkICkKLSAgewotICAgIGlkXyA9IGlkOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBQYWdlV2l6YXJkRGF0YUV2ZW50cyBnZXRQYWdlKCBQYWdlSW5mbyBwYWdlSW5mbywgV2l6YXJkUGFnZU1hbmFnZXIgbWFuYWdlciApCi0gIHsKLSAgICByZXR1cm4gbmV3IFNpbXBsZVBvcHVwV2l6YXJkUGFnZSggcGFnZUluZm8sIG1hbmFnZXIsIGlkXyApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlUG9wdXBXaXphcmRQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlUG9wdXBXaXphcmRQYWdlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNTA5Y2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NpbXBsZVBvcHVwV2l6YXJkUGFnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNzMxICAgMTIwMzc4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBGaWVsZHMgbm90IHZpc2libGUgaW4gTGFyZ2UgZm9udCBzZXR0aW5ncwotICogMjAwNzA1MjIgICAxODQwMDYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbnRleHQuUGVyc2lzdGVudEFjdGlvbkRpYWxvZ3NDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5FbnZpcm9ubWVudFVJTWVzc2FnZXM7Ci0KLQotCi1wdWJsaWMgY2xhc3MgU2ltcGxlUG9wdXBXaXphcmRQYWdlIGV4dGVuZHMgU2ltcGxlV2l6YXJkUGFnZQoteyAgCi0gIHByaXZhdGUgU3RyaW5nIGlkXzsKLSAgCi0gIHB1YmxpYyBTaW1wbGVQb3B1cFdpemFyZFBhZ2UoIFBhZ2VJbmZvIHBhZ2VJbmZvLCBXaXphcmRQYWdlTWFuYWdlciBwYWdlTWFuYWdlciwgU3RyaW5nIGlkICkKLSAgewotICAJc3VwZXIoIHBhZ2VJbmZvLCBwYWdlTWFuYWdlciApOwotICAJCi0gIAlpZF8gPSBpZDsKLSAgfSAJICAKLSAgCQotICBwcm90ZWN0ZWQgQ29tcG9zaXRlIGludGVybmFsQ3JlYXRlQ29udHJvbCggQ29tcG9zaXRlIHBhcmVudCApIAotICB7ICAJCi0JQ29tcG9zaXRlIGNvbXBvc2l0ZSA9IHN1cGVyLmludGVybmFsQ3JlYXRlQ29udHJvbChwYXJlbnQpOwotCSAgCi0gIAlmaW5hbCBQZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQgY29udGV4dCAgID0gUGVyc2lzdGVudEFjdGlvbkRpYWxvZ3NDb250ZXh0LmdldEluc3RhbmNlKCk7Ci0gIAkKLSAgCS8vIElmIHRoZSBjdXJyZW50IHBhZ2UgaXMgbnVsbCB0aGVuIHRoaXMgbXVzdCBiZSB0aGUgZmlyc3QgcGFnZS4KLSAgCWlmKCBwYWdlTWFuYWdlcl8uZ2V0Q3VycmVudFBhZ2UoKSA9PSBudWxsICYmIGNvbnRleHQuc2hvd0NoZWNrYm94KGlkXykgKQotICAJewotICAgICAgZmluYWwgIEJ1dHRvbiBidXR0b24gID0gbmV3IEJ1dHRvbiggY29tcG9zaXRlLCBTV1QuQ0hFQ0sgKTsKLSAgICAgIFN0cmluZyBsYWJlbCAgID0gRW52aXJvbm1lbnRVSU1lc3NhZ2VzLkNIRUNLQk9YX0RPX05PVF9TSE9XX0RJQUxPR19BR0FJTjsKLSAgICAgIAotICAgICAgLypDT05URVhUX0lEIFRXUDAwMDEgZm9yIHRoZSBzaG93L2hpZGUgY2hlY2sgYm94Ki8KLSAgICAgIFN0cmluZyBpbmZvcG9wID0JIm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS5UV1AwMDAxIjsKLSAgICAgIFN0cmluZyB0b29sdGlwID0gRW52aXJvbm1lbnRVSU1lc3NhZ2VzLlRPT0xUSVBfRE9fTk9UX1NIT1dfRElBTE9HX0FHQUlOOwotICAgICAgCi0gICAgICBidXR0b24uc2V0VGV4dCggbGFiZWwgKTsKLSAgICAgIGJ1dHRvbi5zZXRUb29sVGlwVGV4dCggdG9vbHRpcCApOwotICAgICAgYnV0dG9uLmFkZFNlbGVjdGlvbkxpc3RlbmVyKCBuZXcgU2VsZWN0aW9uQWRhcHRlcigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZCggU2VsZWN0aW9uRXZlbnQgZXZ0ICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnNldE9iamVjdEFjdGlvbkRpYWxvZ0VuYWJsZWQoIGlkXywgYnV0dG9uLmdldFNlbGVjdGlvbigpICk7ICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgYnV0dG9uLnNldFNlbGVjdGlvbiggZmFsc2UgKTsKLSAgICAgIAotICAgICAgUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCkuc2V0SGVscCggYnV0dG9uLCBpbmZvcG9wICk7ICAJCi0gIAl9Ci0gIAkKLSAgCXJldHVybiBjb21wb3NpdGU7Ci0gIH0gIAotfSAgCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlV2lkZ2V0Q29udHJpYnV0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9TaW1wbGVXaWRnZXRDb250cmlidXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTJjMmY0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9TaW1wbGVXaWRnZXRDb250cmlidXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnk7Ci0KLXB1YmxpYyBjbGFzcyBTaW1wbGVXaWRnZXRDb250cmlidXRvciBpbXBsZW1lbnRzIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIAotewotICAgIHByaXZhdGUgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5IGZhY3RvcnlfOwotCXByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgICAgIG5hbWVfOwotCXByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uXzsKLQlwcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgICAgICB0aXRsZV87Ci0JCi0JcHVibGljIHZvaWQgc2V0RGVzY3JpcHRpb24oU3RyaW5nIGRlc2NyaXB0aW9uKSAKLQl7Ci0JCWRlc2NyaXB0aW9uXyA9IGRlc2NyaXB0aW9uOwotCX0KLQkKLQotCXB1YmxpYyB2b2lkIHNldEZhY3RvcnkoV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5IGZhY3RvcnkpIAotCXsKLQkJZmFjdG9yeV8gPSBmYWN0b3J5OwotCX0KLQkKLQotCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIAotCXsKLQkJbmFtZV8gPSBuYW1lOwotCX0KLQkKLQotCXB1YmxpYyB2b2lkIHNldFRpdGxlKFN0cmluZyB0aXRsZSkgCi0JewotCQl0aXRsZV8gPSB0aXRsZTsKLQl9Ci0JCi0KLQlwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5IGdldFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpIAotCXsKLQkJcmV0dXJuIGZhY3RvcnlfOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIAotCXsKLQkJcmV0dXJuIG5hbWVfOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0RGVzY3JpcHRpb24oKSAKLQl7Ci0JCXJldHVybiBkZXNjcmlwdGlvbl87Ci0JfQotCi0JcHVibGljIFN0cmluZyBnZXRUaXRsZSgpIAotCXsKLQkJcmV0dXJuIHRpdGxlXzsKLQl9Ci0KLQkvKioKLQkgKiBTdWJzY2xhc3NlcnMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kLgotCSAqLwotCXB1YmxpYyB2b2lkIHJlZ2lzdGVyRGF0YU1hcHBpbmdzKERhdGFNYXBwaW5nUmVnaXN0cnkgZGF0YVJlZ2lzdHJ5KSAKLQl7Ci0KLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlV2lkZ2V0RGF0YUNvbnRyaWJ1dG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmODA2YTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NpbXBsZVdpZGdldERhdGFDb250cmlidXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotCi0KLS8qKgotICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbXBsZSBXaWRnZXREYXRhQ29udHJpYnV0b3IgY2xhc3MgdGhhdCBjb25jcmV0ZSAKLSAqIFdpZGdldERhdGFDb250cmlidXRvcnMgY2FuIHN1YmNsYXNzLgotICoKLSAqLwotcHVibGljIGNsYXNzIFNpbXBsZVdpZGdldERhdGFDb250cmlidXRvciBpbXBsZW1lbnRzIFdpZGdldERhdGFDb250cmlidXRvcgoteyAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yI2FkZENvbnRyb2xzKG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZSwgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXIpCi0gICAqLwotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyggQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIpCi0gIHsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldENvbnRyaWJ1dG9yI2dldFN0YXR1cygpCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyBnZXRTdGF0dXMoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5XaWRnZXREYXRhRXZlbnRzI2V4dGVybmFsaXplKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGV4dGVybmFsaXplKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2lkZ2V0RGF0YUV2ZW50cyNpbnRlcm5hbGl6ZSgpCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbnRlcm5hbGl6ZSgpCi0gIHsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NpbXBsZVdpZGdldFJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlV2lkZ2V0UmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE2ZmFmYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlV2lkZ2V0UmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci0KLQotCi1wdWJsaWMgY2xhc3MgU2ltcGxlV2lkZ2V0UmVnaXN0cnkgaW1wbGVtZW50cyBXaWRnZXRSZWdpc3RyeQotewotICBwcml2YXRlIEhhc2h0YWJsZSB0YWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gIAotICBwdWJsaWMgdm9pZCBhZGQoIFN0cmluZyBmcmFnbWVudElkLAotICAgICAgICAgICAgICAgICAgIFN0cmluZyBwYWdlTmFtZSwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmcgcGFnZVRpdGxlLAotICAgICAgICAgICAgICAgICAgIFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSB3aWRnZXRGYWN0b3J5ICkKLSAgewotICAJUGFnZUluZm8gZW50cnkgPSBuZXcgUGFnZUluZm8oIHBhZ2VOYW1lLCBwYWdlVGl0bGUsIHdpZGdldEZhY3RvcnkgKTsKLSAgCXRhYmxlXy5wdXQoIGZyYWdtZW50SWQsIGVudHJ5ICk7Ci0gIH0gICAgICAgICAgICAgICAgICAgCi0gIAotICBwdWJsaWMgUGFnZUluZm8gZ2V0UGFnZUluZm8oIFN0cmluZyBmcmFnbWVudElkICkKLSAgewotICAgIHJldHVybiAoUGFnZUluZm8pdGFibGVfLmdldCggZnJhZ21lbnRJZCApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlV2l6YXJkUGFnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1NpbXBsZVdpemFyZFBhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYyNTk2NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvU2ltcGxlV2l6YXJkUGFnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA3MzEgICAxMjAzNzggbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEZpZWxkcyBub3QgdmlzaWJsZSBpbiBMYXJnZSBmb250IHNldHRpbmdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuSVdpemFyZFBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLldpemFyZFBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuY3VzdG9tLlNjcm9sbGVkQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0ZW5lcjsKLQotCi0KLXB1YmxpYyBjbGFzcyBTaW1wbGVXaXphcmRQYWdlIGV4dGVuZHMgV2l6YXJkUGFnZSBpbXBsZW1lbnRzIFBhZ2VXaXphcmREYXRhRXZlbnRzCi17Ci0gIHByaXZhdGUgICBXaWRnZXRDb250cmlidXRvciB3aWRnZXRfOwotICBwcml2YXRlICAgV2lkZ2V0RGF0YUV2ZW50cyAgZGF0YUV2ZW50c187Ci0gIHByaXZhdGUgICBMaXN0ZW5lciAgICAgICAgICBzdGF0dXNMaXN0ZW5lcl87Ci0gIHByb3RlY3RlZCBXaXphcmRQYWdlTWFuYWdlciBwYWdlTWFuYWdlcl87Ci0gIAkKLSAgcHVibGljIFNpbXBsZVdpemFyZFBhZ2UoIFBhZ2VJbmZvIHBhZ2VJbmZvLCBXaXphcmRQYWdlTWFuYWdlciBwYWdlTWFuYWdlciApCi0gIHsKLSAgCXN1cGVyKCAiIiApOwotICAJCi0gIAlzZXRUaXRsZSggcGFnZUluZm8uZ2V0UGFnZU5hbWUoKSApOwotICAJc2V0RGVzY3JpcHRpb24oIHBhZ2VJbmZvLmdldFBhZ2VUaXRsZSgpKTsKLSAgCSAgCi0gIAl3aWRnZXRfICAgICAgICAgPSBwYWdlSW5mby5nZXRXaWRnZXRGYWN0b3J5KCkuY3JlYXRlKCk7Ci0gIAlzdGF0dXNMaXN0ZW5lcl8gPSBuZXcgU3RhdHVzTGlzdGVuZXIoKTsKLSAgCXBhZ2VNYW5hZ2VyXyAgICA9IHBhZ2VNYW5hZ2VyOwotICB9IAkgIAotICAJCi0gIHB1YmxpYyB2b2lkIGNyZWF0ZUNvbnRyb2woIENvbXBvc2l0ZSBwYXJlbnQgKSAKLSAgewkgIAotCVNjcm9sbGVkQ29tcG9zaXRlIGNvbnRyb2wgPSBuZXcgU2Nyb2xsZWRDb21wb3NpdGUoIHBhcmVudCwgU1dULlZfU0NST0xMICk7CQotCUNvbXBvc2l0ZSBpbm5lciA9IGludGVybmFsQ3JlYXRlQ29udHJvbChjb250cm9sKTsKLQkKLQljb250cm9sLnNldEV4cGFuZEhvcml6b250YWwodHJ1ZSk7Ci0gIAljb250cm9sLnNldEV4cGFuZFZlcnRpY2FsKHRydWUpOwotCWNvbnRyb2wuc2V0Q29udGVudChpbm5lcik7ICAJCi0gICAgY29udHJvbC5zZXRNaW5TaXplKGlubmVyLmNvbXB1dGVTaXplKFNXVC5ERUZBVUxULCBTV1QuREVGQVVMVCkpOwkKLQkKLSAgICBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZy5hcHBseURpYWxvZ0ZvbnQoY29udHJvbCk7Ci0gICAgc2V0Q29udHJvbCggY29udHJvbCApOwotICB9Ci0JCi0gIHByb3RlY3RlZCBDb21wb3NpdGUgaW50ZXJuYWxDcmVhdGVDb250cm9sKCBDb21wb3NpdGUgcGFyZW50ICkgewotCi0JQ29tcG9zaXRlIGNvbnRyb2wgPSBuZXcgQ29tcG9zaXRlKCBwYXJlbnQsIFNXVC5OT05FICk7Ci0JY29udHJvbC5zZXRMYXlvdXQoIG5ldyBHcmlkTGF5b3V0KCkgKTsKLSAgCWNvbnRyb2wuc2V0TGF5b3V0RGF0YSggbmV3IEdyaWREYXRhKCBHcmlkRGF0YS5GSUxMX0JPVEggKSk7Ci0JCi0JZGF0YUV2ZW50c18gPSB3aWRnZXRfLmFkZENvbnRyb2xzKCBjb250cm9sLCBzdGF0dXNMaXN0ZW5lcl8gKTsJCi0JCi0JcmV0dXJuIGNvbnRyb2w7Ci0gIH0KLSAgCi0gIHB1YmxpYyBXaWRnZXREYXRhRXZlbnRzIGdldERhdGFFdmVudHMoKQotICB7Ci0gICAgcmV0dXJuIGRhdGFFdmVudHNfOwotICB9Ci0gIAkgIAotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZVBhZ2VUb1N0YXR1cygpCi0gIHsKLSAgICBJU3RhdHVzIHN0YXR1cyAgPSB3aWRnZXRfLmdldFN0YXR1cygpOwotICAgIAotICAgIGlmKCBzdGF0dXMgIT0gbnVsbCApCi0gICAgewotICAgICAgaWYoIHN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IgKQotICAgICAgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IHN0YXR1cy5nZXRNZXNzYWdlKCk7Ci0KLSAgICAgICAgaWYoIG1lc3NhZ2UubGVuZ3RoKCkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoIG51bGwgKTsKLSAgICAgICAgICBzZXRNZXNzYWdlKCBnZXREZXNjcmlwdGlvbigpICk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKCBtZXNzYWdlICk7Ci0gICAgICAgIH0KLSAgICAgICAgICAKLSAgICAgICAgc2V0UGFnZUNvbXBsZXRlKCBmYWxzZSApOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5XQVJOSU5HICkKLSAgICAgIHsKLSAgICAgICAgc2V0RXJyb3JNZXNzYWdlKCBudWxsICk7Ci0gICAgICAgIHNldE1lc3NhZ2Uoc3RhdHVzLmdldE1lc3NhZ2UoKSwgSVN0YXR1cy5XQVJOSU5HICk7Ci0gICAgICAgIHNldFBhZ2VDb21wbGV0ZSggdHJ1ZSApOwotICAgICAgfQotICAgICAgZWxzZSBpZiggc3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5JTkZPICkKLSAgICAgIHsKLSAgICAgICAgc2V0RXJyb3JNZXNzYWdlKCBudWxsICk7Ci0gICAgICAgIHNldE1lc3NhZ2UoIHN0YXR1cy5nZXRNZXNzYWdlKCksIElTdGF0dXMuSU5GTyApOwotICAgICAgICBzZXRQYWdlQ29tcGxldGUoIHRydWUgKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgc2V0RXJyb3JNZXNzYWdlKCBudWxsICk7Ci0gICAgICAgIHNldE1lc3NhZ2UoIGdldERlc2NyaXB0aW9uKCkgKTsKLSAgICAgICAgc2V0UGFnZUNvbXBsZXRlKCB0cnVlICk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBzZXRFcnJvck1lc3NhZ2UoIG51bGwgKTsKLSAgICAgIHNldE1lc3NhZ2UoIGdldERlc2NyaXB0aW9uKCkgKTsKLSAgICAgIHNldFBhZ2VDb21wbGV0ZSggdHJ1ZSApOwotICAgIH0KLSAgICAKLSAgICBnZXRDb250YWluZXIoKS51cGRhdGVCdXR0b25zKCk7Ci0gIH0KLSAgICAKLSAgcHVibGljIGJvb2xlYW4gY2FuRmxpcFRvTmV4dFBhZ2UoKSAKLSAgewotCXJldHVybiBpc1BhZ2VDb21wbGV0ZSgpICYmIHBhZ2VNYW5hZ2VyXy5oYXNOZXh0UGFnZSgpOwotICB9Ci0KLSAgcHVibGljIElXaXphcmRQYWdlIGdldE5leHRQYWdlKCkgCi0gIHsKLQlyZXR1cm4gcGFnZU1hbmFnZXJfLmdldE5leHRQYWdlKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFZpc2libGUoYm9vbGVhbiB2YWx1ZSkgCi0gIHsKLSAgCXBhZ2VNYW5hZ2VyXy5oYW5kbGVQYWdlVmlzaWJsZSggdGhpcywgdmFsdWUgKTsKLSAgCQotICAgIHN1cGVyLnNldFZpc2libGUodmFsdWUpOwotICB9Ci0gIAotICBwcml2YXRlIGNsYXNzIFN0YXR1c0xpc3RlbmVyIGltcGxlbWVudHMgTGlzdGVuZXIKLSAgewotCXB1YmxpYyB2b2lkIGhhbmRsZUV2ZW50KCBFdmVudCBldnQgKSAKLQl7Ci0gICAgICB2YWxpZGF0ZVBhZ2VUb1N0YXR1cygpOwotCX0KLSAgfQotfSAgCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvV2lkZ2V0QmluZGluZ1RvV2lkZ2V0RmFjdG9yeUFkYXB0ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaWRnZXRCaW5kaW5nVG9XaWRnZXRGYWN0b3J5QWRhcHRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTJmN2M4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaWRnZXRCaW5kaW5nVG9XaWRnZXRGYWN0b3J5QWRhcHRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeTsKLQotcHVibGljIGNsYXNzIFdpZGdldEJpbmRpbmdUb1dpZGdldEZhY3RvcnlBZGFwdGVyIAotewotICBwcml2YXRlIEhhc2h0YWJsZSAgICAgICAgICAgIHdpZGdldENvbnRyaWJ1dG9yXzsKLSAgcHJpdmF0ZSBDb21tYW5kV2lkZ2V0QmluZGluZyBiaW5kaW5nXzsKLSAgCi0gIHB1YmxpYyBXaWRnZXRCaW5kaW5nVG9XaWRnZXRGYWN0b3J5QWRhcHRlciggQ29tbWFuZFdpZGdldEJpbmRpbmcgYmluZGluZyApCi0gIHsKLSAgICB3aWRnZXRDb250cmlidXRvcl8gPSBuZXcgSGFzaHRhYmxlKCk7IAotCWJpbmRpbmdfICAgICAgICAgICA9IGJpbmRpbmc7Ci0JCi0JYmluZGluZy5yZWdpc3RlcldpZGdldE1hcHBpbmdzKCBuZXcgTXlXaWRnZXRSZWdpc3RyeSgpICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJTmFtZWRXaWRnZXRDb250cmlidXRvciBnZXRXaWRnZXQoIFN0cmluZyBpZCApCi0gIHsKLSAgICByZXR1cm4gKElOYW1lZFdpZGdldENvbnRyaWJ1dG9yKXdpZGdldENvbnRyaWJ1dG9yXy5nZXQoIGlkICk7ICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgcmVnaXN0ZXJEYXRhTWFwcGluZ3MoIERhdGFNYXBwaW5nUmVnaXN0cnkgcmVnaXN0cnkgKQotICB7Ci0gICAgYmluZGluZ18ucmVnaXN0ZXJEYXRhTWFwcGluZ3MoIHJlZ2lzdHJ5ICk7ICAKLSAgfQotICAKLSAgcHJpdmF0ZSBjbGFzcyBNeVdpZGdldFJlZ2lzdHJ5IGltcGxlbWVudHMgV2lkZ2V0UmVnaXN0cnkKLSAgewotCXB1YmxpYyB2b2lkIGFkZChTdHJpbmcgZnJhZ21lbnRJZCwgU3RyaW5nIHBhZ2VOYW1lLCBTdHJpbmcgcGFnZVRpdGxlLCBXaWRnZXRDb250cmlidXRvckZhY3Rvcnkgd2lkZ2V0RmFjdG9yeSkgCi0JewotCSAgU2ltcGxlV2lkZ2V0Q29udHJpYnV0b3Igd2lkZ2V0ID0gbmV3IFNpbXBsZVdpZGdldENvbnRyaWJ1dG9yKCk7Ci0JICB3aWRnZXQuc2V0VGl0bGUoIHBhZ2VOYW1lICk7Ci0JICB3aWRnZXQuc2V0RGVzY3JpcHRpb24oIHBhZ2VUaXRsZSApOwotCSAgd2lkZ2V0LnNldEZhY3RvcnkoIG5ldyBNeVdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSggd2lkZ2V0RmFjdG9yeSApICk7Ci0JICAKLQkgIHdpZGdldENvbnRyaWJ1dG9yXy5wdXQoIGZyYWdtZW50SWQsIHdpZGdldCApOwotCX0JICAKLSAgfQotICAKLSAgcHJpdmF0ZSBjbGFzcyBNeVdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBpbXBsZW1lbnRzIFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeQotICB7Ci0JcHJpdmF0ZSBXaWRnZXRDb250cmlidXRvckZhY3RvcnkgZmFjdG9yeV87Ci0JcHJpdmF0ZSBXaWRnZXRDb250cmlidXRvciAgICAgICAgd2lkZ2V0XzsKLQkKLQlwdWJsaWMgTXlXaWRnZXRDb250cmlidXRvckZhY3RvcnkoIFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBmYWN0b3J5ICkKLQl7Ci0JICBmYWN0b3J5XyA9IGZhY3Rvcnk7CQotCX0KLQkKLQlwdWJsaWMgV2lkZ2V0Q29udHJpYnV0b3IgY3JlYXRlKCkgCi0JewotICAgICAgaWYoIHdpZGdldF8gPT0gbnVsbCApCi0JICB7Ci0JICAgIHdpZGdldF8gPSBmYWN0b3J5Xy5jcmVhdGUoKTsKLQkgIH0KLQkgIAotCSAgcmV0dXJuIHdpZGdldF87Ci0JfQkgIAotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvV2lkZ2V0Q29udHJpYnV0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaWRnZXRDb250cmlidXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzhhZmM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaWRnZXRDb250cmlidXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotCi0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSB3YXkgZm9yIGRldmVsb3BlcnMgdG8gY3JlYXRlIHZhbGlkYXRhYmxlIHdpZGdldHMKLSAqIHRoYXQgY2FuIGJlIHVzZWQgaW4gbWFueSBkaWZmZXJlbnQgRWNsaXBzZSBVSSBjb250ZXh0cy4gKGllLiBpbiBhIFdpbmRvd3MsIERpYWdsb2dzLAotICogd2l6YXJkIHBhZ2VzLCBldGMpCi0gKgotICogVGhlIG1haW4gZnVuY3Rpb25hbGl0eSB0aGlzIGludGVyZmFjZSBoYXMgb3ZlciBqdXN0IGEgcmVndWxhciBFY2xpcHNlIENvbXBvc2l0ZQotICogaXMgdGhhdCBpdCBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgdmFsaWRhdGluZyB0aGUgV2lkZ2V0LiAgV2hlbiB2YWxpZGF0aW5nCi0gKiB0aGVyZSBhcmUgdHdvIGFzcGVjdHMgdG8ga2VlcCBpbiBtaW5kLiAgVGhlIGZpcnN0IGFzcGVjdCBkZWFscyB3aXRoIFdIRU4gdmFsaWRhdGlvbgotICogb2NjdXJzIGFuZCB0aGUgc2Vjb25kIGFzcGVjdCBkZWFscyB3aXRoIFdIQVQgdG8gZG8gZm9yIGEgdmFsaWRhdGlvbiBldmVudC4KLSAqIAotICogVGhlIGZpcnN0IGFzcGVjdCBvZiB0cmlnZ2VyaW5nIHZhbGlkYXRpb24gZXZlbnRzIGlzIGhhbmRsZWQgYnkgdGhlIHN0YXR1c0xpc3RlbmVyCi0gKiBwYXJhbWV0ZXIgb2YgdGhlIGFkZENvbnRyb2xzIG1ldGhvZC4gIElmIGEgcGFydGljdWxhciBjb250cm9sIHRoYXQgaXMgY29udHJpYnV0ZWQgY2FuCi0gKiBhZmZlY3QgdGhlIHZhbGlkaXR5IG9mIHRoaXMgV2lkZ2V0Q29udHJpYnV0b3IgdGhlbiB0aGUgc3RhdHVzTGlzdGVuZXIgb2JqZWN0Ci0gKiBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGxpc3RlbmVyIGxpc3Qgb2YgdGhhdCBjb250cm9sLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSB0ZXh0IGluCi0gKiBhIFRleHQgd2lkZ2V0IGNhbiBhZmZlY3QgdGhlIHZhbGlkaXR5IG9mIHRoaXMgV2lkZ2V0Q29udHJpYnV0b3IgdGhlbiB5b3Ugd291bGQKLSAqIGFkZCB0aGUgc3RhdHVzTGlzdGVuZXIgdG8gdGhlIFRleHQgd2lkZ2V0cyBNb2RpZnkgbGlzdGVuZXIgbGlzdDoKLSAqIAotICogCi0gKiAgIFRleHQgc29tZVRleHQgPSBuZXcgVGV4dCggcGFyZW50LCBTV1QuTk9ORSApOwotICogICBzb21lVGV4dC5hZGRMaXN0ZW5lciggU1dULk1vZGlmeSwgc3RhdHVzTGlzdGVuZXIgKTsKLSAqIAotICogTm90ZTogaWYgeW91IHdhbnQgdG8gZm9yY2UgdmFsaWRhdGlvbiBvZiB0aGlzIHdpZGdldCB5b3UgY2FuIGNhbGwKLSAqICAgICAgIHRoZSBzdGF0dXNMaXN0ZW5lci5oYW5kbGVFdmVudChudWxsKSBtZXRob2QgZGlyZWN0bHkuICBUaGlzCi0gKiAgICAgICBpcyBub3QgdGhlIHByZWZlcmVkIG1heSB0byB0cmlnZ2VyIHZhbGlkYXRpb24sIGhvd2V2ZXIuCi0gKiAgICAgICAKLSAqIFRoZSBzZWNvbmQgYXNwZWN0IG9mIHZhbGlhdGlvbiBpcyB3aGF0IHRvIGRvIHdoZW4gdGhlIHZhbGlkYXRpb24gZXZlbnQgb2NjdXJzLgotICogVGhpcyBpcyBoYW5kbGVkIGJ5IGdldFN0YXR1cyBtZXRob2QuICBBbnkgY29kZSB0aGF0IGVuc3VyZXMgdGhhdCB0aGlzIHdpZGdldCBpcwotICogdmFsaWQgc2hvdWxkIGJlIHB1dCBpbiB0aGUgZ2V0U3RhdHVzIGltcGxlbWVudGF0aW9uLiAKLSAqIAotICogCi0qLwotcHVibGljIGludGVyZmFjZSBXaWRnZXRDb250cmlidXRvciAKLXsKLSAgLyoqCi0gICAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSB1c2VkIHRvIGltcGxlbWVudCB0aGUgVUkgY29udHJpYnV0aW9ucyBmb3IgdGhpcyB3aWRnZXQuCi0gICAqIAotICAgKiBAcGFyYW0gcGFyZW50IFRoZSBjb21wb3NpdGUgcGFyZW50IHRoYXQgc3ViIHdpZGdldHMgc2hvdWxkIHVzZS4KLSAgICogQHBhcmFtIHN0YXR1c0xpc3RlbmVyIFRoaXMgbGlzdGVuZXIgc2hvdWxkIGJlIGFkZGVkIHRvIGFueSB3aWRnZXQgdGhhdCBjYW4KLSAgICogICAgICAgICAgICAgICAgICAgICAgIGFmZmVjdCB0aGUgdmFsaWRpdHkgb2YgdGhpcyBXaWRnZXRDb250cmlidXRvci4KLSAgICogQHJldHVybiByZXR1cm5zIGEgV2lkZ2V0RGF0YUV2ZW50cyBvYmplY3QuICBUaGlzIG9iamVjdCBpcyB1c2VkIGJ5IHRoZQotICAgKiAgICAgICAgIGZyYW1ld29yayB0byBpbnRlcm5hbGl6ZSBhbmQgZXh0ZXJuYWxpemUgZGF0YSBmb3IgdGhpcyB3aWRnZXQuCi0gICAqLwotICBwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyggQ29tcG9zaXRlIHBhcmVudCwgTGlzdGVuZXIgc3RhdHVzTGlzdGVuZXIgKTsKLSAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgaW1wbGVtZW50IHZhbGlkYXRpb24gY29kZSBmb3IgdGhpcyBXaWRnZXRDb250cmlidXRvci4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIHN0YXR1cyBvYmplY3QgaW5kaWNhdGluZyB0aGUgdmFsaWRpdHkgb2YgdGhpcyB3aWRnZXQuCi0gICAqICAgICAgICAgSWYgdGhlIHN0YXR1cyBzZXZlcml0eSBpcyBFUlJPUiB0aGVuIHRoaXMgd2lkZ2V0IGlzIGNvbnNpZGVyZWQgdG8KLSAgICogICAgICAgICBiZSBpbnZhbGlkLiAgRm9yIGFueSBvdGhlciBzdGF0dXMgc2V2ZXJpdHkgb3IgaWYgdGhlIHN0YXR1cyByZXR1cm5lZAotICAgKiAgICAgICAgIGlzIG51bGwgdGhpcyB3aWRnZXQgaXMgY29uc2lkZXJlZCB0byBiZSB2YWxpZC4KLSAgICovCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1dpZGdldENvbnRyaWJ1dG9yRmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1dpZGdldENvbnRyaWJ1dG9yRmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjdlZmM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaWRnZXRDb250cmlidXRvckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBwcm92aWRlIGEgd2F5IGZvciBjcmVhdGluZyBXaWRnZXRDb250cmlidXRvcnMKLSAqCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSAKLXsKLSAgcHVibGljIFdpZGdldENvbnRyaWJ1dG9yIGNyZWF0ZSgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1dpZGdldERhdGFDb250cmlidXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1dpZGdldERhdGFDb250cmlidXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzgxYWNiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaWRnZXREYXRhQ29udHJpYnV0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBXaWRnZXRDb250cmlidXRvciBpbnRlcmZhY2UgYW5kCi0gKiB0aGUgV2lkZ2V0RGF0YUV2ZW50cyBpbnRlcmZhY2UuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIFdpZGdldERhdGFDb250cmlidXRvciBleHRlbmRzIFdpZGdldENvbnRyaWJ1dG9yLCBXaWRnZXREYXRhRXZlbnRzIAotewotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1dpZGdldERhdGFFdmVudHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaWRnZXREYXRhRXZlbnRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMWQ5ZjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1dpZGdldERhdGFFdmVudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBwcm92aWRlcyBhIHdheSBmb3IgaW50ZXJuYWxpemluZyBhbmQgZXh0ZXJuYWxpemluZyBzdGF0ZQotICogZGF0YSBpbiBhIFdpZGdldENvbnRyaWJ1dG9yLiAgVGhlIGludGVybmFsaXplIG1ldGhvZCB3aWxsIGJlIGNhbGxlZAotICogYmVmb3JlIHRoZSB3aWRnZXQgaXMgZGlzcGxheWVkIHNvIHRoYXQgaXQgY2FuIHNldCB0aGUgZGVmYXVsdCBkYXRhCi0gKiBmb3IgdGhhdCB3aWRnZXQuICBUaGUgZXh0ZXJuYWxpemUgbWV0aG9kIHByb3ZpZGVzIGEgd2F5IG9mIGdldHRpbmcgZGF0YQotICogZnJvbSB0aGUgd2lkZ2V0IGFmdGVyIGl0IGlzIGRpc3BsYXllZC4KLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgV2lkZ2V0RGF0YUV2ZW50cyAKLXsKLSAgLyoqCi0gICAqIEltcGxlbWVudGF0aW9ucyBzaG91bGQgc2V0IHdpZGdldCBzdGF0ZSBkYXRhIGhlcmUuCi0gICAqCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbnRlcm5hbGl6ZSgpOwotICAKLSAgLyoqCi0gICAqIEltcGxlbWVuYXRpb25zIHNob3VsZCBnZXQgd2lkZ2V0IHN0YXRlIGRhdGEgaGVyZS4KLSAgICoKLSAgICovCi0gIHB1YmxpYyB2b2lkIGV4dGVybmFsaXplKCk7ICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaWRnZXRSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1dpZGdldFJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MWIxOGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1dpZGdldFJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHM7Ci0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgZGVmaW5lcyBob3cgV2lkZ2V0Q29udHJpYnV0b3JzIGFyZSBtYWRlIGtub3duIHRvIHRoZQotICogZHluYW1pYyB3aXphcmQgZnJhbWV3b3JrLiAgVGhpcyB3aWRnZXQgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYSB3aXphcmQgcGFnZQotICogd2l0aCB0aGUgbmFtZSBhbmQgdGl0bGUgc3BlY2lmaWVkIGluIHRoZSBhZGQgbWV0aG9kLiAgVGhlIGZyYWdtZW50SWQgaXMgCi0gKiB1c2VkIHRvIGFzc29jaWF0ZSB0aGlzIHdpZGdldCB3aXRoIGEgcGFydGljdWxhciBDb21tYW5kRnJhZ21lbnQuICBXaGVuCi0gKiBhIENvbW1hbmRGcmFnbWVudCB3aXRoIHRoaXMgZnJhZ21lbnRJZCBpcyB0cmF2ZXJzZWQgdGhlIGNvcnJlc3BvbmRpbmcKLSAqIFdpZGdldENvbnRyaWJ1dG9yIHdpbGwgYmUgZGlzcGxheWVkLgotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBXaWRnZXRSZWdpc3RyeQotewotICAvKioKLSAgICogQWRkcyBhIFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSB0byB0aGUgZnJhbWV3b3JrLiAgVGhpcyBmYWN0b3J5Ci0gICAqIGlzIHVzZWQgdG8gZ2V0IHRoZSBXaWRnZXRDb250cmlidXRvci4gIFRoaXMgV2lkZ2V0Q29udHJpYnV0b3IKLSAgICogd2lsbCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgd2l6YXJkIHBhZ2UuCi0gICAqIAotICAgKiBAcGFyYW0gZnJhZ21lbnRJZCB0aGUgQ29tbWFuZEZyYWdtZW50IGlkIHRoYXQgdGhpcyBXaWRnZXRDb250cmlidXRvciBpcyBhc3NvY2lhdGVkIHdpdGguCi0gICAqIEBwYXJhbSBwYWdlTmFtZSB0aGUgbmFtZSBvZiB0aGlzIHdpemFyZCBwYWdlLgotICAgKiBAcGFyYW0gcGFnZVRpdGxlIHRoZSB0aXRsZSBvZiB0aGlzIHdpemFyZCBwYWdlLgotICAgKiBAcGFyYW0gd2lkZ2V0RmFjdG9yeSB0aGUgZmFjdG9yeSB3aGljaCB3aWxsIGNyZWF0ZSB0aGUgV2lkZ2V0Q29udHJpYnV0b3IuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGQoIFN0cmluZyBmcmFnbWVudElkLAotCQkJCSAgIFN0cmluZyBwYWdlTmFtZSwKLQkJCQkgICBTdHJpbmcgcGFnZVRpdGxlLAotCQkJCSAgIFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSB3aWRnZXRGYWN0b3J5ICk7Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL1dpemFyZFBhZ2VGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvV2l6YXJkUGFnZUZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZiNjY0ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvV2l6YXJkUGFnZUZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotCi0vKioKLSAqIAotICoKLSAqCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIFdpemFyZFBhZ2VGYWN0b3J5IAotewotICBwdWJsaWMgUGFnZVdpemFyZERhdGFFdmVudHMgZ2V0UGFnZSggUGFnZUluZm8gcGFnZUluZm8sIFdpemFyZFBhZ2VNYW5hZ2VyIG1hbmFnZXIgKTsgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3VpL3dpZGdldHMvV2l6YXJkUGFnZU1hbmFnZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaXphcmRQYWdlTWFuYWdlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjhlZDdkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9XaXphcmRQYWdlTWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTM4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMyAgIDEyOTIzMiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MDMxMyAgIDEzMDk1OCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MDMxOSAgIDE3NTcyMSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MDMyOCAgIDE3MzM0NSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBQZWVrIG5leHQgcGFnZSBwcm9ibGVtCi0gKiAyMDA3MDczMCAgIDE5NzE0NCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBQYXNzIHByb2dyZXNzIG1vbml0b3IgdG8gdW5kbyBjb21tYW5kcy4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0czsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlN0YWNrOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLklXaXphcmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLklXaXphcmRDb250YWluZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLklXaXphcmRQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YUZsb3dNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5FY2xpcHNlRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLnJlZ2lzdHJ5LldpZGdldFJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUxvZzsKLQotCi0KLXB1YmxpYyBjbGFzcyBXaXphcmRQYWdlTWFuYWdlciBleHRlbmRzIFNpbXBsZUNvbW1hbmRFbmdpbmVNYW5hZ2VyCi17Ci0gIHByaXZhdGUgICBXaXphcmRQYWdlRmFjdG9yeSAgICAgIHBhZ2VGYWN0b3J5XzsKLSAgcHJpdmF0ZSAgIEhhc2h0YWJsZSAgICAgICAgICAgICAgcGFnZVRhYmxlXzsKLSAgcHJpdmF0ZSAgIElXaXphcmQgICAgICAgICAgICAgICAgd2l6YXJkXzsKLSAgcHJvdGVjdGVkIFNpbXBsZVdpZGdldFJlZ2lzdHJ5ICAgcmVnaXN0cnlfOwotICAKLSAgLy8gVGhlc2UgdmFyaWFibGVzIGFyZSB1c2VkIGFuZCBzZXQgYnkgb3VyIG1ldGhvZHMgd2hpY2ggaXMKLSAgLy8gd2h5IHRoZXkgYXJlIG5vdCBpbml0aWFsaXplZCBpbiB0aGUgY29uc3RydWN0b3IuCi0gIHByaXZhdGUgUGFnZVdpemFyZERhdGFFdmVudHMgY3VycmVudFBhZ2VfOwotICBwcml2YXRlIFBhZ2VXaXphcmREYXRhRXZlbnRzIG5leHRQYWdlXzsKLSAgcHJpdmF0ZSBQYWdlV2l6YXJkRGF0YUV2ZW50cyBuZXh0UGVla1BhZ2VfOwotICBwcml2YXRlIFBhZ2VXaXphcmREYXRhRXZlbnRzIGZpcnN0UGFnZV87Ci0gIHByaXZhdGUgQ29tbWFuZEZyYWdtZW50ICAgICAgbGFzdFVuZG9GcmFnbWVudF87Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgICAgZmlyc3RGcmFnbWVudF87Ci0gIAotICBwcml2YXRlIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSB3aWRnZXRGYWN0b3J5XzsKLSAgcHJpdmF0ZSBTdGFjayAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RhY2tfOwotICBwcml2YXRlIFN0YWNrICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdGFja1N0YWNrXzsKLSAgcHJpdmF0ZSBIYXNodGFibGUgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0VGFibGVfOwotICBwcml2YXRlIFdpZGdldFJlZ2lzdHJ5ICAgICAgICAgICAgICAgICB3aWRnZXRSZWdpc3RyeV87Ci0gIHByaXZhdGUgSGFzaHRhYmxlICAgICAgICAgICAgICAgICAgICAgIHdpZGdldEZhY3RvcnlUYWJsZV87Ci0gICAgCi0gIHB1YmxpYyBXaXphcmRQYWdlTWFuYWdlciggU2ltcGxlV2lkZ2V0UmVnaXN0cnkgIHJlZ2lzdHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpemFyZFBhZ2VGYWN0b3J5ICAgICBwYWdlRmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJV2l6YXJkICAgICAgICAgICAgICAgd2l6YXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFGbG93TWFuYWdlciAgICAgICBkYXRhTWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlRW52aXJvbm1lbnQgICAgZW52aXJvbm1lbnQgKQotICB7IAotICAgIHN1cGVyKCBlbnZpcm9ubWVudCwgZGF0YU1hbmFnZXIgKTsgIAotICAgIAotICAJcGFnZUZhY3RvcnlfICAgICAgICA9IHBhZ2VGYWN0b3J5OwotICAJcGFnZVRhYmxlXyAgICAgICAgICA9IG5ldyBIYXNodGFibGUoKTsgIAotICAJcmVnaXN0cnlfICAgICAgICAgICA9IHJlZ2lzdHJ5OwotICAJd2l6YXJkXyAgICAgICAgICAgICA9IHdpemFyZDsKLQkgIHdpZGdldFRhYmxlXyAgICAgICAgPSBuZXcgSGFzaHRhYmxlKCk7Ci0JICB3aWRnZXRGYWN0b3J5VGFibGVfID0gbmV3IEhhc2h0YWJsZSgpOwotCSAgd2lkZ2V0UmVnaXN0cnlfICAgICA9IFdpZGdldFJlZ2lzdHJ5Lmluc3RhbmNlKCk7Ci0JICB3aWRnZXRTdGFja1N0YWNrXyAgID0gbmV3IFN0YWNrKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyAgSVdpemFyZFBhZ2UgZ2V0U3RhcnRpbmdQYWdlKCkKLSAgewotICAgIGlmKCBmaXJzdFBhZ2VfID09IG51bGwgKQotICAgIHsKLSAgICAgIGZpcnN0UGFnZV8gPSAoUGFnZVdpemFyZERhdGFFdmVudHMpZ2V0TmV4dFBhZ2UoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZpcnN0UGFnZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdHVzIHJ1bkZvcndhcmRUb05leHRTdG9wKCkKLSAgeyAgICAKLSAgCWZpcnN0RnJhZ21lbnRfICA9IHRydWU7Ci0gIAluZXh0UGFnZV8gICAgICAgPSBudWxsOwotICAgCQotICAJcmV0dXJuIHN1cGVyLnJ1bkZvcndhcmRUb05leHRTdG9wKCBnZXRDb250YWluZXIoKSApOwotICB9Ci0gICAgCi0gIHByaXZhdGUgSVdpemFyZENvbnRhaW5lciBnZXRDb250YWluZXIoKQotICB7Ci0gICAgSVdpemFyZENvbnRhaW5lciBjb250YWluZXIgPSB3aXphcmRfLmdldENvbnRhaW5lcigpOwotICAgIAotICAgIGlmKCBjb250YWluZXIgPT0gbnVsbCB8fCBjb250YWluZXIuZ2V0Q3VycmVudFBhZ2UoKSA9PSBudWxsICkKLSAgICB7Ci0gICAgICBjb250YWluZXIgPSBudWxsOwotICAgIH0gICAKLSAgICAKLSAgICByZXR1cm4gY29udGFpbmVyOwotICB9Ci0gIAotICBwdWJsaWMgSVdpemFyZFBhZ2UgZ2V0Q3VycmVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGN1cnJlbnRQYWdlXzsKLSAgfQotICAgIAotICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0UGFnZSgpCi0gIHsJCi0JIAotICAgIG5leHRQZWVrUGFnZV8gPSBudWxsOwotICAgIAotCXRyeQotCXsKLSAgCW5leHRQZWVrUGFnZV8gPSBnZXROZXh0UGFnZUluR3JvdXAoIHdpZGdldEZhY3RvcnlfLCB3aWRnZXRTdGFja18sIGZhbHNlICk7Ci0JCQotCSAgaWYoIG5leHRQZWVrUGFnZV8gPT0gbnVsbCApCi0JICB7Ci0JICAgIC8vIElmIGEgcGFnZSBpcyBmb3VuZCBuZXh0UGFnZV8gd2lsbCBiZSBzZXQgdG8gaXRzIHZhbHVlIGluIHRoZSBtZXRob2QgYmVsb3cuCi0gIAkgICAgZW5naW5lXy5wZWVrRm9yd2FyZFRvTmV4dFN0b3AoKTsKLQkgIH0KLQl9Ci0JY2F0Y2goIFRocm93YWJsZSBleGMgKQotCXsKLQkgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLQl9Ci0gIAkKLSAgICByZXR1cm4gbmV4dFBlZWtQYWdlXyAhPSBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgSVdpemFyZFBhZ2UgZ2V0TmV4dFBhZ2UoKQotICB7ICAJCi0JdHJ5Ci0JeyAgICAKLSAgCS8vIE5lZWQgdG8gZXh0ZXJuYWxpemUgdGhlIGRhdGEgZm9yIHRoZSBjdXJyZW50IHBhZ2Ugc28gdGhhdAotICAJLy8gd2hlbiB3ZSBtb3ZlIGZvcndhcmQgYmVsb3cgdGhlIGRhdGEgaXMgYXZhaWxhYmxlLgotICAJaWYoIGN1cnJlbnRQYWdlXyAhPSBudWxsICkgY3VycmVudFBhZ2VfLmdldERhdGFFdmVudHMoKS5leHRlcm5hbGl6ZSgpOwotICAJCi0gICAgaWYoIGVudmlyb25tZW50Xy5nZXRMb2coKS5pc0VuYWJsZWQoKSApCi0gICAgewotICAgICAgZW52aXJvbm1lbnRfLmdldExvZygpLmxvZyhJTG9nLklORk8sICJ3c19kdF9jbWRfZW5naW5lIiwgNTAxMCwgdGhpcywgIkNtZCBzdGFjayBkdW1wOiIsIGVuZ2luZV8gKTsKLSAgICB9Ci0gICAgCi0JICBuZXh0UGFnZV8gPSBnZXROZXh0UGFnZUluR3JvdXAoIHdpZGdldEZhY3RvcnlfLCB3aWRnZXRTdGFja18sIHRydWUgKTsKLQkKLQkgIGlmKCBuZXh0UGFnZV8gPT0gbnVsbCApCi0JICB7Ci0JICAgIHdpZGdldEZhY3RvcnlfID0gbnVsbDsKLQkgICAgd2lkZ2V0U3RhY2tfICAgPSBudWxsOwotCQkKLSAgCSAgSVN0YXR1cyBzdGF0dXMgPSBydW5Gb3J3YXJkVG9OZXh0U3RvcCgpOwotICAJCi0gIAkgIGlmKCBzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLkVSUk9SICkKLSAgCSAgewotICAJICAgIC8vIEFuIGVycm9yIGhhcyBvY2N1cmVkIHNvIHdlIG5lZWQgdW5kbyB0byB0aGUgcHJldmlvdXMgc3RvcCBwb2ludC4KLSAgCSAgICB1bmRvVG9MYXN0UGFnZSgpOwotICAJICB9Ci0JICB9Ci0JCi0gIAlpZiggbmV4dFBhZ2VfICE9IG51bGwgKSBuZXh0UGFnZV8uc2V0V2l6YXJkKCB3aXphcmRfICk7Ci0gIAkgIAkKLSAgCXJldHVybiBuZXh0UGFnZV87Ci0JfQotCWNhdGNoKCBUaHJvd2FibGUgZXhjICkKLQl7Ci0JICBleGMucHJpbnRTdGFja1RyYWNlKCk7CQotCX0KLQkKLQlyZXR1cm4gbnVsbDsKLSAgfQotICAgIAotICBwdWJsaWMgdm9pZCBoYW5kbGVQYWdlVmlzaWJsZSggUGFnZVdpemFyZERhdGFFdmVudHMgcGFnZSwgYm9vbGVhbiBpc1BhZ2VWaXNpYmxlICkKLSAgewotICAgIGlmKCAhaXNQYWdlVmlzaWJsZSAmJiBwYWdlID09IGZpcnN0UGFnZV8gJiYgcGFnZSA9PSBjdXJyZW50UGFnZV8gKQotICAgIHsKLSAgICAgIC8vIFdlIGFyZSBtb3ZpbmcgYmFjayBvbmUgcGFnZSBmcm9tIHRoZSBmaXJzdCBwYWdlLiAgVGhpcyBjYW4ndCBoYXBwZW4gd2l0aCBwb3B1cCB3aXphcmRzCi0gICAgICAvLyBzaW5jZSB0aGUgcHJldmlvdXMgYnV0dG9uIHdvdWxkIGJlIGdyZXllZCBvdXQuICBCdXQgd2hlbiB0aGUgbmV3IHdpemFyZCBsYXVuY2hlcyB0aGlzIHdpemFyZAotICAgICAgLy8gdGhlIHByZXZpb3VzIGJ1dHRvbiBpcyBub3QgZ3JleWVkIG91dCBhbmQgYnJpbmdzIHRoZSB1c2VyIGJhY2sgdG8gdGhlIGxpc3Qgd2l6YXJkcyB0byBzZWxlY3QuCi0gICAgICAvLyBUaGVyZWZvcmUsIHdlIG11c3QgdW53aW5kIHRoZSBjb21tYW5kIGVuZ2luZSBhbmQgZ2V0IHJlYWR5IGZvciB0aGUgdXNlciB0byBpbnZva2UgdGhpcyB3aXphcmQgCi0gICAgICAvLyBhZ2Fpbi4gIFdlIGFyZSBhc3N1bWluZyBoZXJlIHRoYXQgdGhlIGZpcnN0IHBhZ2UgaXMgbmV2ZXIgcGFydCBvZiBhIHdpZGdldCBncm91cCEKLSAgCSAgdW5kb1RvTGFzdFBhZ2UoKTsJICAKLSAgICAgIGN1cnJlbnRQYWdlXyA9IG51bGw7Ci0gICAgICBmaXJzdFBhZ2VfICAgPSBudWxsOwotICAgIH0KLSAgCWlmKCBjdXJyZW50UGFnZV8gIT0gbnVsbCAmJiBwYWdlID09IGN1cnJlbnRQYWdlXy5nZXRQcmV2aW91c1BhZ2UoKSAmJiBpc1BhZ2VWaXNpYmxlICkKLSAgCXsKLSAgCSAgLy8gV2UgYXJlIG1vdmluZyBiYWNrIG9uZSBwYWdlLgotICAJICAvLyBOb3RlOiB3ZSBkb24ndCBpbnRlcm5hbGl6ZSB0aGUgcHJldmlvdXMgcGFnZSBhbmQgd2UgZG8gbm90IGV4dGVybmFsaXplIHRoZSBjdXJyZW50IHBhZ2UuCi0gIAkgIC8vICAgICAgIHdlIGFyZSBiYXNpY2FsbHkganVzdCBsZWF2aW5nIHRoZSBjdXJyZW50IHBhZ2Ugd2l0aG91dCByZXRyaWV2aW5nIGl0cyBzdGF0ZSBhbmQKLSAgCSAgLy8gICAgICAgbW92aW5nIHRvIHRoZSBwcmV2aW91cyBwYWdlIHdoaWNoIGFscmVhZHkgaGFzIGl0cyBzdGF0ZSBzZXQuCi0JCi0JICAgIGlmKCB3aWRnZXRGYWN0b3J5XyAhPSBudWxsICkKLQkgICAgewotCQkgICAgaWYoIHdpZGdldFN0YWNrXy5zaXplKCkgPiAwICkKLQkJICAgIHsKLQkJICAgICAgd2lkZ2V0U3RhY2tfLnBvcCgpOwotCQkgICAgfQotCQkKLQkJICAgIGlmKCB3aWRnZXRTdGFja18uc2l6ZSgpID09IDAgKQotCQkgICAgewotCQkgICAgICB3aWRnZXRGYWN0b3J5XyA9IG51bGw7Ci0JCSAgICAgIHdpZGdldFN0YWNrXyA9IG51bGw7Ci0JCSAgICAgIHdpZGdldFN0YWNrU3RhY2tfLnBvcCgpOwotCQkgICAgfQotCSAgICB9Ci0JICAKLQkgICAgaWYoIHdpZGdldEZhY3RvcnlfID09IG51bGwgKQotCSAgICB7Ci0gIAkgICAgdW5kb1RvTGFzdFBhZ2UoKTsKLQkgICAgfQotCSAgCi0gICAgICAvLyBTaW5jZSB3ZSBhcmUgbW92aW5nIGJhY2t3YXJkcyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUKLSAgICAgIC8vIGN1cnJlbnQgcGFnZSBvYmplY3QgZnJvbSB0aGUgbWFwcGluZyB0YWJsZS4KLSAgICAgIGRhdGFNYW5hZ2VyXy51bnByb2Nlc3MoIGN1cnJlbnRQYWdlXy5nZXREYXRhRXZlbnRzKCkgKTsKLSAgICAgIAotICAJICBjdXJyZW50UGFnZV8gPSBwYWdlOwotICAJfQkKLSAgCWVsc2UgaWYoIGlzUGFnZVZpc2libGUgKQotICAJewotCSAgICB0cnkKLQkgICAgewotICAJICAgIC8vIFdlIGFyZSBtb3ZpbmcgZm9yd2FyZCBvbmUgcGFnZS4KLSAgCSAgICBXaWRnZXREYXRhRXZlbnRzIGRhdGFFdmVudHMgPSBwYWdlLmdldERhdGFFdmVudHMoKTsKLSAgCSAgCi0gIAkgICAgZGF0YU1hbmFnZXJfLnByb2Nlc3MoIGRhdGFFdmVudHMgKTsgIC8vIFB1c2ggbW9kZWwgZGF0YSBpbnRvIHRoZSBuZXcgcGFnZS4KLSAgCSAgICBkYXRhRXZlbnRzLmludGVybmFsaXplKCk7Ci0gIAkgIAotICAJICAgIHBhZ2UudmFsaWRhdGVQYWdlVG9TdGF0dXMoKTsgIAkgIAotCSAgICB9Ci0JICAgIGNhdGNoKCBUaHJvd2FibGUgZXhjICkKLQkgICAgewotCQkgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotCSAgICB9Ci0JICAgIGZpbmFsbHkKLQkgICAgewotCSAgCSAgaWYoIGN1cnJlbnRQYWdlXyAhPSBudWxsICkgcGFnZS5zZXRQcmV2aW91c1BhZ2UoIGN1cnJlbnRQYWdlXyApOwotCSAgICAJICAKLQkgIAkgIGN1cnJlbnRQYWdlXyA9IHBhZ2U7ICAKLQkgICAgfQotICAJfQotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBwZXJmb3JtRmluaXNoKCkKLSAgeyAJCi0gIAkvLyBXZSBuZWVkIHRvIHNpbXVsYXRlIHRoZSBuZXh0IGJ1dHRvbiBiZWluZyBwcmVzc2VkIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlIHBhZ2VzLgotICAJLy8gSWYgYW4gZXJyb3Igb2NjdXJzIHdlIHdpbGwgcmV0dXJuIGZhbHNlIGFuZCByZXNldCB0aGUgY29tbWFuZCBzdGFjayBiYWNrIG91ciBvcmlnaW5hbCBzdGF0ZS4KLSAgCWJvb2xlYW4gICAgICAgICAgICAgIGRvbmVPayAgICAgICAgID0gdHJ1ZTsKLSAgCVBhZ2VXaXphcmREYXRhRXZlbnRzIHN0YXJ0UGFnZSAgICAgID0gY3VycmVudFBhZ2VfOwotICAgIGludCAgICAgICAgICAgICAgICAgIHN0YWNrU3RhY2tTaXplID0gd2lkZ2V0U3RhY2tTdGFja18uc2l6ZSgpOwotICAgIAotICAgIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBjdXJyZW50RmFjdG9yeSA9IHdpZGdldEZhY3RvcnlfOwotICAJCi0gIAkvLyBFeHRlcm5hbGl6ZSB0aGUgY3VycmVudCBwYWdlLgotICAJY3VycmVudFBhZ2VfLmdldERhdGFFdmVudHMoKS5leHRlcm5hbGl6ZSgpOwotICAJCi0gIAkvLyBMb29wIHRocm91Z2ggc3Vic2VxdWVudCBwYWdlcy4KLSAgCWRvCi0gIAl7ICAJICAKLSAgCSAgSVN0YXR1cyBzdGF0dXMgPSBydW5Gb3J3YXJkVG9OZXh0U3RvcCgpOwkgIAotICAJICAKLSAgCSAgaWYoIHN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IgKQotICAJICB7Ci0gIAkgIAkvLyBBbiBlcnJvciBvY2N1cmVkIGluIG9uZSBvZiB0aGUgY29tbWFuZHMuCi0gIAkgIAlkb25lT2sgPSBmYWxzZTsKLSAgCSAgfQotICAJfQotICAJd2hpbGUoIG5leHRQYWdlXyAhPSBudWxsICYmIGRvbmVPayk7Ci0gIAkKLSAgCWlmKCAhZG9uZU9rICkKLSAgCXsKLSAgCSAgLy8gQW4gZXJyb3Igb2NjdXJlZCwgc28gd2UgbmVlZCB0byByZXR1cm4gdGhlIGNvbW1hbmQgc3RhY2sgdG8gaXQncwotICAJICAvLyBvcmdpbmFsIHN0YXRlLgotICAJICBQYWdlV2l6YXJkRGF0YUV2ZW50cyBwYWdlID0gbnVsbDsKLSAgCSAgYm9vbGVhbiAgICAgICAgICAgICAgZG9uZSA9IGZhbHNlOwotICAJICAKLSAgCSAgZG8KLSAgCSAgewotICAJICAgIGRvbmUgPSBydW5VbmRvVG9OZXh0U3RvcCggZ2V0Q29udGFpbmVyKCkgKTsKLSAgCSAgICBwYWdlID0gZ2V0UGFnZSggbGFzdFVuZG9GcmFnbWVudF8gKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCBwYWdlID09IG51bGwgJiYgCi0gICAgICAgICAgICBjdXJyZW50RmFjdG9yeSAhPSBudWxsICYmIAotICAgICAgICAgICAgbGFzdFVuZG9GcmFnbWVudF8gIT0gbnVsbCAmJgotICAgICAgICAgICAgZ2V0V2lkZ2V0RmFjdG9yeSggbGFzdFVuZG9GcmFnbWVudF8uZ2V0SWQoKSApID09IGN1cnJlbnRGYWN0b3J5ICkKLSAgICAgICAgewotICAgICAgICAgIC8vIFRoZSBjdXJyZW50IHdpZGdldCBmYWN0b3J5IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGFzdCBmcmFnbWVudCB0aGF0IHdhcyB1bmRvbmUuCi0gICAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBhcmUgYmFjayB0byB3aGVyZSB3ZSBzdGFydGVkLgotICAgICAgICAgIGRvbmUgPSB0cnVlOyAgICAKLSAgICAgICAgICAKLSAgICAgICAgICAvLyBSZXN0b3JlIHRoZSB3aWRnZXRTdGFja1N0YWNrIGJhY2sgdG8gdGhlIHN0YXRlIGl0IHdhcyBpbiBiZWZvcmUKLSAgICAgICAgICAvLyBydW5uaW5nIGZvcndhcmQuCi0gICAgICAgICAgd2lkZ2V0U3RhY2tTdGFja18uc2V0U2l6ZSggc3RhY2tTdGFja1NpemUgKTsKLSAgICAgICAgICAKLSAgICAgICAgICBTdGFja0VudHJ5IGVudHJ5ID0gKFN0YWNrRW50cnkpd2lkZ2V0U3RhY2tTdGFja18ucGVlaygpOwotICAgICAgICAgIAotICAgICAgICAgIHdpZGdldEZhY3RvcnlfID0gZW50cnkuZmFjdG9yeV87Ci0gICAgICAgICAgd2lkZ2V0U3RhY2tfICAgPSBlbnRyeS5zdGFja187Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiggcGFnZSAhPSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIHdpZGdldEZhY3RvcnlfID0gbnVsbDsKLSAgICAgICAgICB3aWRnZXRTdGFja18gPSBudWxsOwotICAgICAgICB9Ci0gIAkgIH0KLSAgCSAgd2hpbGUoIHBhZ2UgIT0gc3RhcnRQYWdlICYmICFkb25lICk7IAkgIAotICAJfQotICAJCi0gIAlyZXR1cm4gZG9uZU9rOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBwZXJmb3JtQ2FuY2VsKCkKLSAgewotICAgIElXaXphcmRDb250YWluZXIgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyKCk7Ci0gICAgCi0gIAl3aGlsZSggIXJ1blVuZG9Ub05leHRTdG9wKCBjb250YWluZXIgKSApe30KLSAgCQotICAJcmV0dXJuIHRydWU7Ci0gIH0KLSAgICAKLSAgcHJvdGVjdGVkIGJvb2xlYW4gcGVla0ZyYWdtZW50KCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7ICAgICAJCi0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgZnJhZ21lbnQgaXMgaW4gb3VyIHBhZ2UgdGFibGUuCi0gICAgbmV4dFBlZWtQYWdlXyA9IGdldFBhZ2UoIGZyYWdtZW50ICk7Ci0gICAgICAgICAgCQotCSAgaWYoIG5leHRQZWVrUGFnZV8gPT0gbnVsbCApCi0JICB7Ci0JICAgIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBmYWN0b3J5ID0gZ2V0V2lkZ2V0RmFjdG9yeSggZnJhZ21lbnQuZ2V0SWQoKSApOwotCSAgCi0JICAgIGlmKCBmYWN0b3J5ICE9IG51bGwgKQotCSAgICB7Ci0JCSAgICBuZXh0UGVla1BhZ2VfID0gZ2V0TmV4dFBhZ2VJbkdyb3VwKCBmYWN0b3J5LCBudWxsLCBmYWxzZSApOyAgCi0JICAgIH0KLQkgIH0KLQkKLSAgICByZXR1cm4gbmV4dFBlZWtQYWdlXyA9PSBudWxsOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgYm9vbGVhbiBuZXh0RnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgICAvLyBJZiB0aGUgc3VwZXIgY2xhc3MgbmV4dEZyYWdtZW50IHdhbnQgdXMgdG8gc3RvcCB0aGVuIHdlIHdpbGwgc3RvcCByaWdodCBhd2F5LgotICAgIGlmKCAhc3VwZXIubmV4dEZyYWdtZW50KCBmcmFnbWVudCApICkgcmV0dXJuIGZhbHNlOwotICAgIAotICAJLy8gVGhlIGZpcnN0IGZyYWdtZW50IGlzIGVpdGhlciBhdCB0aGUgc3RhcnQgb2YgdGhlIHdpemFyZAotICAJLy8gb3IgaXQgaXMgb24gYSB3aXphcmQgcGFnZS4gIEluIGVpdGhlciBjYXNlIHdlIGRvIG5vdCB3YW50IAotICAJLy8gdG8gc3RvcCBpZiBhIHBhZ2UgaXMgZm91bmQuCi0gIAlpZiggZmlyc3RGcmFnbWVudF8gKQotICAJewotICAJICBmaXJzdEZyYWdtZW50XyA9IGZhbHNlOwotICAJfQotICAJZWxzZQotICAJewotCSAgICB3aWRnZXRGYWN0b3J5XyA9IGdldFdpZGdldEZhY3RvcnkoIGZyYWdtZW50LmdldElkKCkgKTsKLQkgIAotCSAgICBpZiggd2lkZ2V0RmFjdG9yeV8gIT0gbnVsbCApCi0JICAgIHsKLQkJICAgIHdpZGdldFN0YWNrXyA9IG5ldyBTdGFjaygpOwotICAgICAgICAKLSAgICAgICAgbmV4dFBhZ2VfID0gZ2V0TmV4dFBhZ2VJbkdyb3VwKCB3aWRnZXRGYWN0b3J5Xywgd2lkZ2V0U3RhY2tfLCB0cnVlICk7Ci0JCQotICAgICAgICBpZiggbmV4dFBhZ2VfID09IG51bGwgKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gV2UgZm91bmQgYSB3aWRnZXQgY29udHJpYnV0b3IgZm9yIHRoaXMgZnJhZ21lbnQsIGJ1dCBubyBwYWdlIHdhcyBkZWxpdmVyZWQgZm9yIGl0LgotICAgICAgICAgIC8vIFdlIHdpbGwgdGhlcmVmb3JlLCBub3QgcHV0IGl0IG9uIG91ciBzdGFjayBvZiB3aWRnZXQgc3RhY2tzLgotICAgICAgICAgIHdpZGdldFN0YWNrXyA9IG51bGw7Ci0gICAgICAgICAgd2lkZ2V0RmFjdG9yeV8gPSBudWxsOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotCQkgICAgICBTdGFja0VudHJ5IGVudHJ5ID0gbmV3IFN0YWNrRW50cnkoKTsKLQkJCi0JCSAgICAgIGVudHJ5LmZhY3RvcnlfID0gd2lkZ2V0RmFjdG9yeV87Ci0JCSAgICAgIGVudHJ5LnN0YWNrXyAgID0gd2lkZ2V0U3RhY2tfOwotCQkgICAgICB3aWRnZXRTdGFja1N0YWNrXy5wdXNoKCBlbnRyeSApOwotICAgICAgICB9Ci0JICAgIH0KLQkgICAgZWxzZQotCSAgICB7Ci0gIAkgICAgbmV4dFBhZ2VfID0gZ2V0UGFnZSggZnJhZ21lbnQgKTsKLQkgICAgfQotICAJfSAgCSAgCQotICAJCi0gICAgcmV0dXJuIG5leHRQYWdlXyA9PSBudWxsOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgYm9vbGVhbiB1bmRvRnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLSAgCWxhc3RVbmRvRnJhZ21lbnRfID0gZnJhZ21lbnQ7Ci0gIAkKLSAgCXJldHVybiB0cnVlOwotICB9Ci0gIAotICAKLSAgcHJpdmF0ZSBQYWdlV2l6YXJkRGF0YUV2ZW50cyBnZXROZXh0UGFnZUluR3JvdXAoIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBmYWN0b3J5LCBTdGFjayB3aWRnZXRTdGFjaywgYm9vbGVhbiBwdXNoTmV3V2lkZ2V0ICkKLSAgewotCSAgUGFnZVdpemFyZERhdGFFdmVudHMgcGFnZSA9IG51bGw7Ci0JCi0JICBpZiggZmFjdG9yeSAhPSBudWxsICkKLQkgIHsJICAKLQkgICAgSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3IgbmV3V2lkZ2V0ID0gbnVsbDsKLQkJICAKLQkgICAgaWYoIHdpZGdldFN0YWNrID09IG51bGwgfHwgd2lkZ2V0U3RhY2suc2l6ZSgpID09IDAgKQotCSAgICB7Ci0JCSAgICBuZXdXaWRnZXQgPSBmYWN0b3J5LmdldEZpcnN0TmFtZWRXaWRnZXQoKTsgICAKLQkgICAgfQotCSAgICBlbHNlCi0JICAgIHsKLQkJICAgIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIGN1cnJlbnRXaWRnZXQgPSAoSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3Ipd2lkZ2V0U3RhY2sucGVlaygpOwotCQkgICAgbmV3V2lkZ2V0ID0gZmFjdG9yeS5nZXROZXh0TmFtZWRXaWRnZXQoIGN1cnJlbnRXaWRnZXQgKTsgCi0JICAgIH0KLQkJICAKLQkgICAgaWYoIG5ld1dpZGdldCAhPSBudWxsICkKLQkgICAgewotCQkgICAgcGFnZSA9IGdldFBhZ2UoIG5ld1dpZGdldCApOwotCQkKLQkJICAgIGlmKCBwdXNoTmV3V2lkZ2V0ICkKLQkJICAgIHsKLQkJICAgICAgd2lkZ2V0U3RhY2sucHVzaCggbmV3V2lkZ2V0ICk7Ci0JCSAgICB9Ci0JICAgIH0KLQkgIH0KLQkJCi0JICByZXR1cm4gcGFnZTsgIAotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgdW5kb1RvTGFzdFBhZ2UoKQotICB7Ci0gICAgYm9vbGVhbiBzdGFja0VtcHR5ICA9IGZhbHNlOwotCSAgYm9vbGVhbiBkb25lVW5kb2luZyA9IGZhbHNlOwotICAgIAotCSAgd2hpbGUoICFkb25lVW5kb2luZyApCi0JICB7Ci0JICAgIHN0YWNrRW1wdHkgPSBydW5VbmRvVG9OZXh0U3RvcCggZ2V0Q29udGFpbmVyKCkgKTsKLQkgIAotCSAgICBJV2l6YXJkUGFnZSBwYWdlID0gbnVsbDsKLQkgIAotCSAgICBpZiggbGFzdFVuZG9GcmFnbWVudF8gIT0gbnVsbCApCi0JICAgIHsKLQkgICAgICBwYWdlID0gZ2V0UGFnZSggbGFzdFVuZG9GcmFnbWVudF8gKTsKLQkJCi0JICAgICAgaWYoIHBhZ2UgPT0gbnVsbCApCi0JICAgICAgewotCQkgICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBncm91cCBwYWdlIGZyYWdtZW50IHdhcyBmb3VuZC4KLQkJICAgICAgSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5IGZhY3RvcnkgPSBnZXRXaWRnZXRGYWN0b3J5KCBsYXN0VW5kb0ZyYWdtZW50Xy5nZXRJZCgpICk7Ci0JCSAgCi0JCSAgICAgIGlmKCBmYWN0b3J5ICE9IG51bGwgJiYgIXdpZGdldFN0YWNrU3RhY2tfLmVtcHR5KCkgKQotCQkgICAgICB7Ci0JCSAgICAgICAgU3RhY2tFbnRyeSBlbnRyeSA9IChTdGFja0VudHJ5KXdpZGdldFN0YWNrU3RhY2tfLnBlZWsoKTsKLQkJCQotICAgICAgICAgICAgaWYoIGVudHJ5LmZhY3RvcnlfID09IGZhY3RvcnkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBXZSBmb3VuZCB0aGUgZmFjdG9yeSBmb3IgdGhlIGVudHJ5IGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLgotCQkgICAgICAgICAgd2lkZ2V0RmFjdG9yeV8gPSBlbnRyeS5mYWN0b3J5XzsKLQkJICAgICAgICAgIHdpZGdldFN0YWNrXyAgID0gZW50cnkuc3RhY2tfOwkKLQkJCQotCQkgICAgICAgICAgaWYoIHdpZGdldFN0YWNrXyAhPSBudWxsICYmICF3aWRnZXRTdGFja18uZW1wdHkoKSApCi0JCSAgICAgICAgICB7Ci0JCSAgICAgICAgICAgIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yIGN1cnJlbnRXaWRnZXQgPSAoSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3Ipd2lkZ2V0U3RhY2tfLnBlZWsoKTsKLQkJCQotCQkgICAgICAgICAgICBwYWdlID0gZ2V0UGFnZSggY3VycmVudFdpZGdldCApOwotCQkgICAgICAgICAgfQotICAgICAgICAgICAgfQotCQkgICAgICB9Ci0JICAgICAgfQotCSAgICB9Ci0JICAKLQkgICAgZG9uZVVuZG9pbmcgPSBwYWdlICE9IG51bGwgfHwgc3RhY2tFbXB0eTsKLQkgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSBQYWdlV2l6YXJkRGF0YUV2ZW50cyBnZXRQYWdlKCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgZnJhZ21lbnQgaXMgaW4gb3VyIHBhZ2UgdGFibGUuCi0gIAlQYWdlV2l6YXJkRGF0YUV2ZW50cyBwYWdlID0gKFBhZ2VXaXphcmREYXRhRXZlbnRzKXBhZ2VUYWJsZV8uZ2V0KCBmcmFnbWVudCApOyAKLSAgCVN0cmluZyAgICAgIGlkICAgPSBmcmFnbWVudC5nZXRJZCgpOyAgICAgIAkKLSAgICAgICAgICAJCi0gICAgaWYoIHBhZ2UgPT0gbnVsbCAmJiBpZCAhPSBudWxsICkKLSAgICB7Ci0gICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhpcyBmcmFnbWVudCBpZCBpcyBpbiB0aGUgcmVnaXN0cnkuCi0gICAgICBQYWdlSW5mbyBwYWdlSW5mbyA9IHJlZ2lzdHJ5Xy5nZXRQYWdlSW5mbyggaWQgKTsgICAgICAgICAgCSAgCi0gICAgICAgICAgICAgIAotICAgICAgaWYoIHBhZ2VJbmZvICE9IG51bGwgKQotICAgICAgewotICAgICAgICBwYWdlID0gcGFnZUZhY3RvcnlfLmdldFBhZ2UoIHBhZ2VJbmZvLCB0aGlzICk7Ci0gICAgICAgIHBhZ2VUYWJsZV8ucHV0KCBmcmFnbWVudCwgcGFnZSApOyAgICAgICAgICAgIAkKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcGFnZTsKLSAgfSAgICAKLSAgCi0gIHByaXZhdGUgUGFnZVdpemFyZERhdGFFdmVudHMgZ2V0UGFnZSggSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3Igd2lkZ2V0ICkKLSAgewotCSAgUGFnZVdpemFyZERhdGFFdmVudHMgcGFnZSA9IChQYWdlV2l6YXJkRGF0YUV2ZW50cyl3aWRnZXRUYWJsZV8uZ2V0KCB3aWRnZXQgKTsKLQotCSAgaWYoIHBhZ2UgPT0gbnVsbCApCi0JICB7Ci0JICAgIFBhZ2VJbmZvIHBhZ2VJbmZvID0gbmV3IFBhZ2VJbmZvKHdpZGdldC5nZXRUaXRsZSgpLCB3aWRnZXQuZ2V0RGVzY3JpcHRpb24oKSwgd2lkZ2V0LmdldFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSgpICk7Ci0JICAKLQkgICAgcGFnZSA9IHBhZ2VGYWN0b3J5Xy5nZXRQYWdlKCBwYWdlSW5mbywgdGhpcyApOwotCSAgICB3aWRnZXRUYWJsZV8ucHV0KCB3aWRnZXQsIHBhZ2UgKTsKLQkgIH0KLQkKLQkgIHJldHVybiBwYWdlOwotICB9Ci0gIAotICBwcml2YXRlIElOYW1lZFdpZGdldENvbnRyaWJ1dG9yRmFjdG9yeSBnZXRXaWRnZXRGYWN0b3J5KCBTdHJpbmcgaWQgKQotICB7Ci0JICBJTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3RvcnkgZmFjdG9yeSA9IChJTmFtZWRXaWRnZXRDb250cmlidXRvckZhY3Rvcnkpd2lkZ2V0RmFjdG9yeVRhYmxlXy5nZXQoIGlkICk7Ci0JCi0JICBpZiggZmFjdG9yeSA9PSBudWxsICkKLQkgIHsKLQkgICAgLy8gVGhlIGZhY3RvcnkgaXMgbm90IGluIG91ciB0YWJsZSBzbyB3ZSB3aWxsIHRyeSB0aGUgcmVnaXN0cnkuCi0JICAgIGZhY3RvcnkgPSB3aWRnZXRSZWdpc3RyeV8uZ2V0RmFjdG9yeSggaWQgKTsKLQkgIAotCSAgICBpZiggZmFjdG9yeSAhPSBudWxsICkKLQkgICAgewotCSAgICAgIHdpZGdldEZhY3RvcnlUYWJsZV8ucHV0KCBpZCwgZmFjdG9yeSApOwotCSAgICAgIGZhY3RvcnkucmVnaXN0ZXJEYXRhTWFwcGluZ3MoIGRhdGFNYW5hZ2VyXy5nZXRNYXBwaW5nUmVnaXN0cnkoKSApOwotCQkgICAgZGF0YU1hbmFnZXJfLnByb2Nlc3MoIGZhY3RvcnkgKTsKLQkgICAgfQotCSAgfQotCSAgZWxzZQotCSAgewotCSAgICBkYXRhTWFuYWdlcl8ucHJvY2VzcyggZmFjdG9yeSApOwotCSAgfQotCQotCSAgcmV0dXJuIGZhY3Rvcnk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgY2xhc3MgU3RhY2tFbnRyeQotICB7Ci0gICAgSU5hbWVkV2lkZ2V0Q29udHJpYnV0b3JGYWN0b3J5IGZhY3RvcnlfOwotCSAgU3RhY2sgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL3BvcHVwL0R5bmFtaWNQb3B1cFdpemFyZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi91aS93aWRnZXRzL3BvcHVwL0R5bmFtaWNQb3B1cFdpemFyZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTE3NDhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpL3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvdWkvd2lkZ2V0cy9wb3B1cC9EeW5hbWljUG9wdXBXaXphcmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjMgICAxMjkyMzIgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjA0MTcgICAxMzY1OTYgam9hbkBjYS5pYm0uY29tIC0gSm9hbiBIYWdnYXJ0eQotICogMjAwNjA3MzEgICAxMjAzNzggbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEZpZWxkcyBub3QgdmlzaWJsZSBpbiBMYXJnZSBmb250IHNldHRpbmdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXA7Ci0KLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuYWN0aW9uLklBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5Qcm9ncmVzc01vbml0b3JEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uub3BlcmF0aW9uLklSdW5uYWJsZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uub3BlcmF0aW9uLklSdW5uYWJsZVdpdGhQcm9ncmVzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLldpemFyZERpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JQWN0aW9uRGVsZWdhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0LlBlcnNpc3RlbnRBY3Rpb25EaWFsb2dzQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dC5QZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YUZsb3dNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YU1hcHBpbmdSZWdpc3RyeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZWNsaXBzZS5FY2xpcHNlU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5EeW5hbWljV2l6YXJkOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZUNvbW1hbmRFbmdpbmVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLlNpbXBsZVBvcHVwUGFnZUZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuV2l6YXJkUGFnZUZhY3Rvcnk7Ci0KLQotLyoqCi0gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gcG9wdXAgZHluYW1pYyB3aXphcmRzLiAgVGhlIHBvcHVwTWVudXMgZXh0ZW5zaW9uIGlzIHVzZWQKLSAqIHRoZSBjb250cmlidXRlIGEgcG9wdXAgdG8gRWNsaXBzZS4gIFRoZSBjbGFzcyBpbiB0aGUgYWN0aW9uIGVsZW1lbnQgc2hvdWxkIHJlZmVyZW5jZQotICogdGhpcyBEeW5hbWljUG9wdXBXaXphcmQgY2xhc3MuICBUaGlzIGlkIGF0dHJpYnV0ZSBpbiB0aGUgYWN0aW9uIGVsZW1lbnQgc2hvdWxkIGNvbnRhaW4KLSAqIGFuIGlkIHRoYXQgcmVmZXJlbmNlcyBhIGR5bmFtaWNXaXphcmQgZXh0ZW5zaW9uIHBvaW50LiAgVGhpcyBpcyBob3cgdGhlIER5bmFtaWNQb3B1cFdpemFyZAotICogY2xhc3Mga25vd3Mgd2hpY2ggd2l6YXJkIHRvIGRpc3BsYXkuCi0gKiAgIAotICogTm90ZTogdGhlIGlkIGF0dHJpYnV0ZSBpbiB0aGUgb2JqZWN0Q29udHJpYnV0aW9uIGVsZW1lbnQgcmVmZXJzIHRvIGFuCi0gKiAgICAgICBhY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZSBleHRlbnNpb24gcG9pbnQuICBUaGUgaWRzIGluIG9iamVjdENvbnRyaWJ1dGlvbgotICogICAgICAgZWxlbWVudCBhbmQgdGhlIGFjdGlvbiBlbGVtZW50IG5lZWQgbm90IGJlIHRoZSBzYW1lIGFzIHRoZXkgYXJlIGluIHRoZQotICogICAgICAgZXhhbXBsZSBiZWxvdy4KLSAqCi0gKjxwcmU+Ci0gKiAgICZsdDtleHRlbnNpb24KLSAqICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLnBvcHVwTWVudXMiJmd0OwotICombHQ7IS0tIElGaWxlICoud3NkbCBwb3B1cCBtZW51IC0tJmd0OwotICogICAgICZsdDtvYmplY3RDb250cmlidXRpb24KLSAqICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiCi0gKiAgICAgICAgICAgbmFtZUZpbHRlcj0iKi53c2RsIgotICogICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQiJmd0OwotICombHQ7IS0tIFdTREwgVG8gSmF2YSBCZWFuIFByb3h5IC0tJmd0OwotICogICAgICAgICZsdDthY3Rpb24KLSAqICAgICAgICAgICAgICBsYWJlbD0iJUFDVElPTl9HRU5FUkFURV9KQVZBX1BST1hZIgotICogICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQiCi0gKiAgICAgICAgICAgICAgbWVudWJhclBhdGg9Im9yZy5lY2xpcHNlLmpzdC53cy5hdGsudWkud2Vic2VydmljZS5jYXRlZ29yeS5wb3B1cE1lbnUvcG9wdXBBY3Rpb25zIgotICogICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQiJmd0OwotICogICAgICAgICZsdDsvYWN0aW9uJmd0OwotICogICAgICZsdDsvb2JqZWN0Q29udHJpYnV0aW9uJmd0OwotICogICZsdDsvZXh0ZW5zaW9uJmd0OwotICoKLSAqICAgJmx0O2V4dGVuc2lvbgotICogICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZHluYW1pY1dpemFyZCImZ3Q7Ci0gKiAgICAgJmx0O2R5bmFtaWNXaXphcmQKLSAqICAgICAgICAgICBpY29uYmFubmVyPSJpY29ucy9mdWxsL3dpemJhbi93ZWJzZXJ2aWNlc2NsaWVudF93aXouZ2lmIgotICogICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2lkZ2V0cy5iaW5kaW5nLkNsaWVudFdpZGdldEJpbmRpbmciCi0gKiAgICAgICAgICAgdGl0bGU9IiVXSVpBUkRfVElUTEVfV1NDIgotICogICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQiJmd0OwotICogICAgICZsdDsvZHluYW1pY1dpemFyZCZndDsKLSAqICAmbHQ7L2V4dGVuc2lvbiZndDsKLSAqPC9wcmU+Ci0gKgotICovCi1wdWJsaWMgY2xhc3MgRHluYW1pY1BvcHVwV2l6YXJkIGV4dGVuZHMgRHluYW1pY1dpemFyZCBpbXBsZW1lbnRzIElBY3Rpb25EZWxlZ2F0ZQotewotICBwcml2YXRlIElTZWxlY3Rpb24gc2VsZWN0aW9uXzsKLSAgCi0gIHB1YmxpYyBEeW5hbWljUG9wdXBXaXphcmQoKQotICB7Ci0Jc3VwZXIoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLkR5bmFtaWNXaXphcmQjZ2V0V2l6YXJkUGFnZUZhY3RvcnkoKQotICAgKi8KLSAgcHJvdGVjdGVkIFdpemFyZFBhZ2VGYWN0b3J5IGdldFdpemFyZFBhZ2VGYWN0b3J5KCkKLSAgewotICAgIHJldHVybiBuZXcgU2ltcGxlUG9wdXBQYWdlRmFjdG9yeSggZ2V0SWQoKSApOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICByZXR1cm4gKChJQ29uZmlndXJhdGlvbkVsZW1lbnQpb3JpZ2luYWxFbGVtZW50Xy5nZXRQYXJlbnQoKSkuZ2V0QXR0cmlidXRlKCAiaWQiICk7ICAKLSAgfQotICAKLSAgLyoqCi0gICAqIEBzZWUgSUFjdGlvbkRlbGVnYXRlI3J1bgotICAgKi8KLSAgcHVibGljIHZvaWQgcnVuKElBY3Rpb24gYWN0aW9uKSAKLSAgewotICAgIFBlcnNpc3RlbnRBY3Rpb25EaWFsb2dzQ29udGV4dCBjb250ZXh0ID0gUGVyc2lzdGVudEFjdGlvbkRpYWxvZ3NDb250ZXh0LmdldEluc3RhbmNlKCk7Ci0gICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgIGlkICAgICAgPSBnZXRJZCgpOwotICAgIAotCWlmKCBjb250ZXh0LnNob3dEaWFsb2coaWQpICkKLQl7Ci0JICAvLyBMYXVuY2ggdGhlIHdpemFyZC4KLQkgIGluaXQoIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCksIGdldFNlbGVjdGlvbigpICk7ICAKLQkgICAgCi0JICBXaXphcmREaWFsb2cgZGlhbG9nPSBuZXcgV2l6YXJkRGlhbG9nKFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93KCkuZ2V0U2hlbGwoKSwgdGhpcyk7Ci0JICBkaWFsb2cuY3JlYXRlKCk7Ci0gICAgCi0gICAgaWYoIGdldFN0YXJ0aW5nUGFnZSgpICE9IG51bGwgKQotICAgIHsKLQkgICAgZGlhbG9nLm9wZW4oKTsKLSAgICB9Ci0JfQotCWVsc2UKLQl7Ci0JICBmaW5hbCBQcm9ncmVzc01vbml0b3JEaWFsb2cgbW9uaXRvciA9IG5ldyBQcm9ncmVzc01vbml0b3JEaWFsb2coUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKS5nZXRTaGVsbCgpKTsKLQkgIAotCSAgdHJ5Ci0JICB7Ci0JICAgIG1vbml0b3IucnVuKCBmYWxzZSwgZmFsc2UsIG5ldyBJUnVubmFibGVXaXRoUHJvZ3Jlc3MoKQotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvciApCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgcnVuSGVhZExlc3MoIGdldFNlbGVjdGlvbigpLCBtb25pdG9yICk7Ci0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0JICB9Ci0JICBjYXRjaCggSW50ZXJydXB0ZWRFeGNlcHRpb24gZXhjICkKLQkgIHsgCi0JICB9Ci0JICBjYXRjaCggSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBleGMgKQotCSAgewotCSAgfQotCX0KLSAgfQotICAKLSAgLyoqCi0gICAqIFJ1bnMgb25seSB0aGUgQ29tbWFuZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkeW5hbWljIHdpemFyZC4KLSAgICogCi0gICAqIEBwYXJhbSBzZWxlY3Rpb24gdGhlIGluaXRpYWwgc2VsZWN0aW9uIGZyb20gdGhlIHVzZXIuCi0gICAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0IHRoYXQgdGhpcyBleGVjdXRpb24gc2hvdWxkIHRha2UgcGxhY2UgaW4uICBUaGlzCi0gICAqICAgICAgICAgICAgICAgIGlzIHVzdWFsbHkgYSBwcm9ncmVzcyBjb250ZXh0IHNvIHRoYXQgdGhlIHVzZXIgY2FuIGdldCBmZWVkYmFjawotICAgKiAgICAgICAgICAgICAgICBvbiBob3cgZXhlY3V0aW9uIGlzIHByb2dyZXNzaW5nLiAgVGhlIGNvbnRleHQgbWF5IGJlIG51bGwuCi0gICAqLwotICBwdWJsaWMgdm9pZCBydW5IZWFkTGVzcyggSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uLCBJUnVubmFibGVDb250ZXh0IGNvbnRleHQgKQotICB7Ci0JUGVyc2lzdGVudFJlc291cmNlQ29udGV4dCAgcmVzb3VyY2VDb250ZXh0ID0gUGVyc2lzdGVudFJlc291cmNlQ29udGV4dC5nZXRJbnN0YW5jZSgpOwotCUVjbGlwc2VTdGF0dXNIYW5kbGVyICAgICAgIGhhbmRsZXIgICAgICAgICA9IG5ldyBFY2xpcHNlU3RhdHVzSGFuZGxlcigpOwotCUVjbGlwc2VFbnZpcm9ubWVudCAgICAgICAgIGVudmlyb25tZW50ICAgICA9IG5ldyBFY2xpcHNlRW52aXJvbm1lbnQoIG51bGwsIHJlc291cmNlQ29udGV4dCwgaGFuZGxlciApOwotCSAgICAKLQlEYXRhTWFwcGluZ1JlZ2lzdHJ5SW1wbCAgICBkYXRhUmVnaXN0cnlfICAgPSBuZXcgRGF0YU1hcHBpbmdSZWdpc3RyeUltcGwoKTsJICAgIAotCURhdGFGbG93TWFuYWdlciAgICAgICAgICAgIGRhdGFNYW5hZ2VyICAgICA9IG5ldyBEYXRhRmxvd01hbmFnZXIoIGRhdGFSZWdpc3RyeV8sIGVudmlyb25tZW50ICk7Ci0JU2ltcGxlQ29tbWFuZEVuZ2luZU1hbmFnZXIgbWFuYWdlciAgICAgICAgID0gbmV3IFNpbXBsZUNvbW1hbmRFbmdpbmVNYW5hZ2VyKGVudmlyb25tZW50LCBkYXRhTWFuYWdlciApOwotCQotICAgIHRyeQotICAgIHsKLSAgICAgIGNvbW1hbmRXaWRnZXRCaW5kaW5nXyA9IChDb21tYW5kV2lkZ2V0QmluZGluZyl3aXphcmRFbGVtZW50Xy5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCAiY2xhc3MiICk7Ci0gICAgfQotICAgIGNhdGNoKCBDb3JlRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLQkgIAotCWNvbW1hbmRXaWRnZXRCaW5kaW5nXy5yZWdpc3RlckRhdGFNYXBwaW5ncyggZGF0YVJlZ2lzdHJ5XyApOwotCQotCUNvbW1hbmRGcmFnbWVudCByb290RnJhZ21lbnQgPSBnZXRSb290RnJhZ21lbnQoIHNlbGVjdGlvbiwgbnVsbCApOwotCQotCW1hbmFnZXIuc2V0Um9vdEZyYWdtZW50KCByb290RnJhZ21lbnQgKTsKLQltYW5hZ2VyLnJ1bkZvcndhcmRUb05leHRTdG9wKCBjb250ZXh0ICk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAc2VlIElBY3Rpb25EZWxlZ2F0ZSNzZWxlY3Rpb25DaGFuZ2VkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKElBY3Rpb24gYWN0aW9uLCBJU2VsZWN0aW9uIHNlbGVjdGlvbikgCi0gIHsKLSAgICAgIHNlbGVjdGlvbl8gPSBzZWxlY3Rpb247Ci0gIH0KLSAgCi0gIHByaXZhdGUgSVN0cnVjdHVyZWRTZWxlY3Rpb24gZ2V0U2VsZWN0aW9uKCkKLSAgewotICAgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHJlc3VsdCA9IG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKCk7Ci0gICAgCi0JaWYoIHNlbGVjdGlvbl8gIT0gbnVsbCkgCi0JewkKLQkgIGlmKCBzZWxlY3Rpb25fIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24gKSAKLQkgIHsKLQkgICAgcmVzdWx0ID0gKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKXNlbGVjdGlvbl87Ci0JICB9Ci0JfQotCWVsc2UgCi0JewotCSAgSVdvcmtiZW5jaFdpbmRvdyB3aW5kb3cgPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvdygpOwotCSAgCi0JICBpZiggd2luZG93ICE9IG51bGwgKSAKLQkgIHsKLQkJSVNlbGVjdGlvbiBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uU2VydmljZSgpLmdldFNlbGVjdGlvbigpOwotCQkKLQkJaWYoIHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uICkgCi0JCXsKLQkJICByZXN1bHQgPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pc2VsZWN0aW9uOwotCQl9Ci0JICB9Ci0JfQotCQotCXJldHVybiByZXN1bHQ7Ci0gIH0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvLmNsYXNzcGF0aCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52Ly5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNjY1MzQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0iYW50LXNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjUiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52Ly5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhOTE4M2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi1ydW50aW1lCi10ZW1wLmZvbGRlcgotZW52LmphcgotQGRvdAotc3JjLnppcAotZW52c3JjLnppcAotamF2YUNvbXBpbGVyLmVudi5qYXIuYXJncwotamF2YUNvbXBpbGVyLmFudC1saWJfYW50dGFza3MuamFyLmFyZ3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52Ly5leHRlcm5hbFRvb2xCdWlsZGVycy9idWlsZC1hbnR0YXNrcy5sYXVuY2ggYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8uZXh0ZXJuYWxUb29sQnVpbGRlcnMvYnVpbGQtYW50dGFza3MubGF1bmNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODBlZTQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52Ly5leHRlcm5hbFRvb2xCdWlsZGVycy9idWlsZC1hbnR0YXNrcy5sYXVuY2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGxhdW5jaENvbmZpZ3VyYXRpb24gdHlwZT0ib3JnLmVjbGlwc2UuYW50LkFudExhdW5jaENvbmZpZ3VyYXRpb25UeXBlIj4KLTxzdHJpbmdBdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS51aS5leHRlcm5hbHRvb2xzLkFUVFJfTE9DQVRJT04iIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9idWlsZC1hbnR0YXNrcy54bWx9Ii8+Ci08c3RyaW5nQXR0cmlidXRlIGtleT0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5NQUlOX1RZUEUiIHZhbHVlPSJvcmcuZWNsaXBzZS5hbnQuaW50ZXJuYWwudWkuYW50c3VwcG9ydC5JbnRlcm5hbEFudFJ1bm5lciIvPgotPGJvb2xlYW5BdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS5kZWJ1Zy51aS5BVFRSX0xBVU5DSF9JTl9CQUNLR1JPVU5EIiB2YWx1ZT0iZmFsc2UiLz4KLTxzdHJpbmdBdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLlBST0pFQ1RfQVRUUiIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudiIvPgotPHN0cmluZ0F0dHJpYnV0ZSBrZXk9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUiIgdmFsdWU9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvaWJtLXNkay1qYXZhNS0yMDA2MDkxMiIvPgotPGJvb2xlYW5BdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS51aS5leHRlcm5hbHRvb2xzLkFUVFJfVFJJR0dFUlNfQ09ORklHVVJFRCIgdmFsdWU9InRydWUiLz4KLTxzdHJpbmdBdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkNMQVNTUEFUSF9QUk9WSURFUiIgdmFsdWU9Im9yZy5lY2xpcHNlLmFudC51aS5BbnRDbGFzc3BhdGhQcm92aWRlciIvPgotPGJvb2xlYW5BdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS5hbnQudWkuREVGQVVMVF9WTV9JTlNUQUxMIiB2YWx1ZT0idHJ1ZSIvPgotPGxpc3RBdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlLk1BUFBFRF9SRVNPVVJDRV9UWVBFUyI+Ci08bGlzdEVudHJ5IHZhbHVlPSIxIi8+Ci08L2xpc3RBdHRyaWJ1dGU+Ci08c3RyaW5nQXR0cmlidXRlIGtleT0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5TT1VSQ0VfUEFUSF9QUk9WSURFUiIgdmFsdWU9Im9yZy5lY2xpcHNlLmFudC51aS5BbnRDbGFzc3BhdGhQcm92aWRlciIvPgotPGxpc3RBdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlLk1BUFBFRF9SRVNPVVJDRV9QQVRIUyI+Ci08bGlzdEVudHJ5IHZhbHVlPSIvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L2J1aWxkLWFudHRhc2tzLnhtbCIvPgotPC9saXN0QXR0cmlidXRlPgotPGJvb2xlYW5BdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlLmFwcGVuZEVudmlyb25tZW50VmFyaWFibGVzIiB2YWx1ZT0idHJ1ZSIvPgotPHN0cmluZ0F0dHJpYnV0ZSBrZXk9InByb2Nlc3NfZmFjdG9yeV9pZCIgdmFsdWU9Im9yZy5lY2xpcHNlLmFudC51aS5yZW1vdGVBbnRQcm9jZXNzRmFjdG9yeSIvPgotPC9sYXVuY2hDb25maWd1cmF0aW9uPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEyODFkOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudjwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UudWkuZXh0ZXJuYWx0b29scy5FeHRlcm5hbFRvb2xCdWlsZGVyPC9uYW1lPgotCQkJPHRyaWdnZXJzPmZ1bGwsaW5jcmVtZW50YWwsPC90cmlnZ2Vycz4KLQkJCTxhcmd1bWVudHM+Ci0JCQkJPGRpY3Rpb25hcnk+Ci0JCQkJCTxrZXk+TGF1bmNoQ29uZmlnSGFuZGxlPC9rZXk+Ci0JCQkJCTx2YWx1ZT4mbHQ7cHJvamVjdCZndDsvLmV4dGVybmFsVG9vbEJ1aWxkZXJzL2J1aWxkLWFudHRhc2tzLmxhdW5jaDwvdmFsdWU+Ci0JCQkJPC9kaWN0aW9uYXJ5PgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMmYyMDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jU3VuIE1heSAwNyAyMzoxNDo1NyBFRFQgMjAwNgotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWVuY29kaW5nLzxwcm9qZWN0Pj1JU08tODg1OS0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0N2Q3ZjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotI0ZyaSBKdWwgMTEgMTA6MzI6MzcgRURUIDIwMDgKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS41Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnVudXNlZExvY2FsPXByZXNlcnZlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcubGluZU51bWJlcj1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcubG9jYWxWYXJpYWJsZT1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcuc291cmNlRmlsZT1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hbm5vdGF0aW9uU3VwZXJJbnRlcmZhY2U9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hc3NlcnRJZGVudGlmaWVyPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbkluRGVwcmVjYXRlZENvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25XaGVuT3ZlcnJpZGluZ0RlcHJlY2F0ZWRNZXRob2Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGlzY291cmFnZWRSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVtcHR5U3RhdGVtZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maWVsZEhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxQYXJhbWV0ZXJCb3VuZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsbHlCbG9ja05vdENvbXBsZXRpbmdOb3JtYWxseT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZvcmJpZGRlblJlZmVyZW5jZT1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5oaWRkZW5DYXRjaEJsb2NrPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wYXRpYmxlTm9uSW5oZXJpdGVkSW50ZXJmYWNlTWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wbGV0ZUVudW1Td2l0Y2g9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluZGlyZWN0U3RhdGljQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5sb2NhbFZhcmlhYmxlSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5tZXRob2RXaXRoQ29uc3RydWN0b3JOYW1lPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ0RlcHJlY2F0ZWRBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nT3ZlcnJpZGVBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nU2VyaWFsVmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vRWZmZWN0QXNzaWdubWVudD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vSW1wbGljaXRTdHJpbmdDb252ZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9uRXh0ZXJuYWxpemVkU3RyaW5nTGl0ZXJhbD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ub3ZlcnJpZGluZ1BhY2thZ2VEZWZhdWx0TWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucG9zc2libGVBY2NpZGVudGFsQm9vbGVhbkFzc2lnbm1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnNwZWNpYWxQYXJhbWV0ZXJIaWRpbmdGaWVsZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdGF0aWNBY2Nlc3NSZWNlaXZlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN1cHByZXNzV2FybmluZ3M9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zeW50aGV0aWNBY2Nlc3NFbXVsYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnR5cGVQYXJhbWV0ZXJIaWRpbmc9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmNoZWNrZWRUeXBlT3BlcmF0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5kb2N1bWVudGVkRW1wdHlCbG9jaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5oYW5kbGVkV2FybmluZ1Rva2VuPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlFbHNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeVR5cGVDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5xdWFsaWZpZWRGaWVsZEFjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uV2hlbk92ZXJyaWRpbmc9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkSW1wb3J0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkTG9jYWw9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXI9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5JbXBsZW1lbnRpbmdBYnN0cmFjdD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuT3ZlcnJpZGluZ0NvbmNyZXRlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFByaXZhdGVNZW1iZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS52YXJhcmdzQXJndW1lbnROZWVkQ2FzdD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS41CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZmMDlhYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jVHVlIEphbiAzMSAwMDoxNjo1NCBFU1QgMjAwNgotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWludGVybmFsLmRlZmF1bHQuY29tcGxpYW5jZT1kZWZhdWx0CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBmYWEwOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6NDA6MzggRVNUIDIwMDYKLWNvbXBpbGVycy5wLmRlcHJlY2F0ZWQ9MQotY29tcGlsZXJzLnAubm8tcmVxdWlyZWQtYXR0PTAKLWNvbXBpbGVycy5wLm5vdC1leHRlcm5hbGl6ZWQtYXR0PTEKLWNvbXBpbGVycy5wLnVua25vd24tYXR0cmlidXRlPTAKLWNvbXBpbGVycy5wLnVua25vd24tY2xhc3M9MAotY29tcGlsZXJzLnAudW5rbm93bi1lbGVtZW50PTEKLWNvbXBpbGVycy5wLnVua25vd24tcmVzb3VyY2U9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1leC1wb2ludHM9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1pbXBvcnQ9MAotY29tcGlsZXJzLnVzZS1wcm9qZWN0PXRydWUKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmJjYTVkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJVBMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnY7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC40MDgucXVhbGlmaWVyCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYucGx1Z2luLkVudlBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52O3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmFudDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tYW5kbGluZTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tb247eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnBsdWdpbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5wcmVmZXJlbmNlczt4LWludGVybmFsOj10cnVlCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMjAzLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSJbMy40LjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcztidW5kbGUtdmVyc2lvbj0iWzMuNC4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjIwMCwyLjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHM7YnVuZGxlLXZlcnNpb249IlszLjQuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQ7YnVuZGxlLXZlcnNpb249IlsxLjAuMjAwLDIuMC4wKSIsCi0gb3JnLmFwYWNoZS5hbnQ7YnVuZGxlLXZlcnNpb249IlsxLjcuMCwyLjAuMCkiO3Jlc29sdXRpb246PW9wdGlvbmFsLAotIG9yZy5lY2xpcHNlLmFudC5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMy4xLjMwMCw0LjAuMCkiO3Jlc29sdXRpb246PW9wdGlvbmFsCi1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQotQnVuZGxlLVJlcXVpcmVkRXhlY3V0aW9uRW52aXJvbm1lbnQ6IEoyU0UtMS41CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hYm91dC5odG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hbnQtbGliLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hbnQtbGliLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwZGJjMzkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50LWxpYi8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hbnR0YXNrcy5qYXIKLWFudHRhc2tzc3JjLnppcApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50LXNyYy93cy9hbnQvdGFzay9XZWJTZXJ2aWNlR2VuZXJhdGlvbkFudFRhc2suamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L2FudC1zcmMvd3MvYW50L3Rhc2svV2ViU2VydmljZUdlbmVyYXRpb25BbnRUYXNrLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYjQyMTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50LXNyYy93cy9hbnQvdGFzay9XZWJTZXJ2aWNlR2VuZXJhdGlvbkFudFRhc2suamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDUyMiAgIDE3Njk0MyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugd3MuYW50LnRhc2s7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5CdWlsZEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5Qcm9qZWN0OwotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LlRhc2s7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmFudC5BbnRDb250cm9sbGVyOwotCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZUdlbmVyYXRpb25BbnRUYXNrIGV4dGVuZHMgVGFzayAKLXsJCi0JCXB1YmxpYyB2b2lkIGV4ZWN1dGUoKQotCQl7CQkJCi0JCQkvL2dldCBwcm9wZXJ0aWVzIHNldCBpbiB0aGUgQW50IGZpbGUKLQkJCVByb2plY3QgcHJvaiA9IGdldFByb2plY3QoKTsKLSAgICAgIAotICAgICAgaWYoIHByb2ogIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIC8vY2FsbCB0aGUgQW50Q29udHJvbGxlciB0byBraWNrIG9mZiBnZW5lcmF0aW9uCi0gICAgCQlBbnRDb250cm9sbGVyIGNvbnRyb2xsZXIgICA9IG5ldyBBbnRDb250cm9sbGVyKHByb2ouZ2V0UHJvcGVydGllcygpKTsKLSAgICAgICAgU3RyaW5nICAgICAgICBlcnJvck1lc3NhZ2UgPSBjb250cm9sbGVyLmdldEVycm9yTWVzc2FnZSgpOwotICAgICAgICAKLSAgICAgICAgaWYoIGVycm9yTWVzc2FnZSAhPSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBCdWlsZEV4Y2VwdGlvbiggZXJyb3JNZXNzYWdlICk7Ci0gICAgICAgIH0KLSAgICAgIH0gICAgICAgICAgIAkJCi0JCX0JCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50L2F4aXNjbGllbnQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L2FudC9heGlzY2xpZW50LnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZTY1OWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50L2F4aXNjbGllbnQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSEtLVNjZW5hcmlvVHlwZSBSRVFVSVJFRC4gRGlmZmVyZW50aWF0ZXMgZnJvbSAic2VydmljZSIgc2NlbmFyaW8uICBTZWUgYXhpc3NlcnZpY2UucHJvcGVydGllcy4KLVNjZW5hcmlvVHlwZT1jbGllbnQKLQotIS0tSW5pdGlhbFNlbGVjdGlvbiBSRVFVSVJFRC4gIFdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgdG8gdGhlIGlucHV0IFdTREwgb3IgSmF2YS4KLUluaXRpYWxTZWxlY3Rpb249L2R5bmFtaWNXZWJQcm9qZWN0TmFtZS9XZWJDb250ZW50L3dzZGwvbXlTZXJ2aWNlLndzZGwKLQotIS0tVXRpbGl0eSBwcm9wZXJ0eSB2YWx1ZXMgLSB1c2UgdGhlc2UgdG8gbGlzdCB2YWx1ZXMgZm9yIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLSEtLSBDbGllbnQuUnVudGltZUlkLCBDbGllbnQuU2VydmVySWQgCi1MaXN0UnVudGltZXM9dHJ1ZQotTGlzdFNlcnZlcnM9dHJ1ZQotIS0tIFZlcmJvc2Ugd2lsbCBsaXN0IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgYXMgd2VsbCBhcyBlcnJvcnMgaWYgc2V0IHRvIHRydWUKLVZlcmJvc2U9dHJ1ZQotCi0gCi0hLS1DbGllbnQuUnVudGltZUlkIC0gSUQgb2Ygd2ViIHNlcnZpY2UgcnVudGltZSAKLUNsaWVudC5SdW50aW1lSWQ9b3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24uYXhpc1dlYlNlcnZpY2VSVAotIS0tQ2xpZW50LlNlcnZlcklkIC0gSUQgb2YgdGFyZ2V0IHNlcnZlciAKLUNsaWVudC5TZXJ2ZXJJZD1vcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC42MAotCi0hLS1DbGllbnRQcm9qZWN0TmFtZSAtIG5hbWUgb2YgQ2xpZW50IHByb2plY3QgLSB0aGlzIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIGdpdmUgdGhlIGNsaWVudCBwcm9qZWN0IGEgCi0hLS0gZGlmZmVyZW50IG5hbWUgdGhhbiB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBpbml0aWFsIHNlbGVjdGlvbgotIS0tQ2xpZW50UHJvamVjdE5hbWU9Y2xpZW50UHJvamVjdE5hbWUKLQotIS0tQ2xpZW50RWFyUHJvamVjdE5hbWUtIG5hbWUgb2YgQ2xpZW50IEVBUiBwcm9qZWN0IC0gc2V0IG9ubHkgaWYgYXBwbGljYWJsZSBmb3Igc2VsZWN0ZWQgc2VydmVyIHR5cGUKLSEtLUNsaWVudEVhclByb2plY3ROYW1lPWNsaWVudEVBUlByb2plY3ROYW1lCi0KLSEtLUNsaWVudENvbXBvbmVudFR5cGUgLSB0eXBlIG9mIENsaWVudCBwcm9qZWN0IC0gdGhlIGZvbGxvd2luZyBhcmUgdmFsaWQgQXhpcyB0ZW1wbGF0ZXM6IHRlbXBsYXRlLmpzdC53ZWIgYW5kIHRlbXBsYXRlLmpzdC51dGlsaXR5Ci0hLS1DbGllbnRDb21wb25lbnRUeXBlPXRlbXBsYXRlLmpzdC53ZWIKLQotIS0tIEN1c3RvbWl6ZUNsaWVudE1hcHBpbmdzIC0gc2V0IHRvIHRydWUgdG8gc3VwcGx5IHBhY2thZ2UtbmFtZXNwYWNlIG1hcHBpbmdzIHR5cGU6IGJvb2xlYW4KLSEtLUN1c3RvbWl6ZUNsaWVudE1hcHBpbmdzPWZhbHNlICAKLSAgICAKLSEtLSBNYXBwaW5ncyAKLSEtLSBXb3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIHByb3BlcnR5IGZpbGUgY29udGFpbmluZyBtYXBwaW5ncwotIS0tIE1hcHBpbmdzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhY2thZ2UgbmFtZXMgb2YgdGhlIGdlbmVyYXRlZCBKYXZhIGNsYXNzZXMuCi0hLS0gTmVlZCBub3QgYmUgc2V0IGlmIEN1c3RvbWl6ZUNsaWVudE1hcHBpbmdzIGlzIGZhbHNlICAKLSEtLSBUaGUgY29udGVudCBvZiB0aGUgcHJvcGVydGllcyBmaWxlIG11c3QgYmUgb2YgdGhlIGZvcm1hdCBuYW1lc3BhY2U9cGFja2FnZS4KLSEtLU1hcHBpbmdzPS90ZXN0UHJvai9tYXBwaW5ncy9tYXBwaW5ncy50eHQKLQotIS0tT3ZlcndyaXRlRmlsZXNFbmFibGVkIC0gc2V0IHRvIHRydWUgdG8gb3ZlcndyaXRlIGZpbGVzIHRoYXQgYWxyZWFkeSBleGlzdC4gdHlwZTpib29sZWFuIAotIS0tIG5vdGUgZm9yIG5vbi1pbnRlcmFjdGl2ZSBtb2RlIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhpcyBiZSBzZXQgdG8gdHJ1ZQotIS0tIE92ZXJ3cml0ZUZpbGVzRW5hYmxlZD10cnVlCi0KLSEtLUNyZWF0ZUZvbGRlcnNFbmFibGVkIC0gc2V0IHRvIHRydWUgY3JlYXRlIGZvbGRlcnMgbmVjZXNzYXJ5IGR1cmluZyBmaWxlIGdlbmVyYXRpb24gdHlwZTpib29sZWFuCi0hLS0gbm90ZSBmb3Igbm9uLWludGVyYWN0aXZlIG1vZGUgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGlzIGJlIHNldCB0byB0cnVlCi0hLS0gQ3JlYXRlRm9sZGVyc0VuYWJsZWQ9dHJ1ZQotCi0hLS1DaGVja291dEZpbGVzRW5hYmxlZCAtIHNldCB0byB0cnVlIHRvIGNoZWNrIG91dCBmaWxlcyB3aXRoIG5vIHdhcm5pbmcgdG8gdGhlIHVzZXIgdHlwZTpib29sZWFuCi0hLS0gbm90ZSBmb3Igbm9uLWludGVyYWN0aXZlIG1vZGUgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGlzIGJlIHNldCB0byB0cnVlCi0hLS0gQ2hlY2tvdXRGaWxlc0VuYWJsZWQ9dHJ1ZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50L2F4aXNzZXJ2aWNlLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hbnQvYXhpc3NlcnZpY2UucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYxNjIyNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hbnQvYXhpc3NlcnZpY2UucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSEtLSBTY2VuYXJpb1R5cGUgUkVRVUlSRUQuIERpZmZlcmVudGlhdGVzIGZyb20gImNsaWVudCIgc2NlbmFyaW8uICBTZWUgYXhpc2NsaWVudC5wcm9wZXJ0aWVzLgotU2NlbmFyaW9UeXBlPXNlcnZpY2UKLQotIS0tIEluaXRpYWxTZWxlY3Rpb24gUkVRVUlSRUQuICBXb3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIHRoZSBpbnB1dCBXU0RMIG9yIEphdmEKLUluaXRpYWxTZWxlY3Rpb249L2R5bmFtaWNXZWJQcm9qZWN0TmFtZS9XZWJDb250ZW50L215U2VydmljZS53c2RsCi0KLSEtLVV0aWxpdHkgcHJvcGVydHkgdmFsdWVzIC0gdXNlIHRoZXNlIHRvIGxpc3QgdmFsaWQgdmFsdWVzIGZvciB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6Ci0hLS0gU2VydmljZS5SdW50aW1lSWQsIFNlcnZpY2UuU2VydmVySWQgCi1MaXN0UnVudGltZXM9dHJ1ZQotTGlzdFNlcnZlcnM9dHJ1ZQotIS0tIFZlcmJvc2Ugd2lsbCBsaXN0IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgYXMgd2VsbCBhcyBlcnJvcnMgaWYgc2V0IHRvIHRydWUKLVZlcmJvc2U9dHJ1ZQotCi0hLS0gIFNlcnZpY2UuUnVudGltZUlkIC0gSUQgb2Ygd2ViIHNlcnZpY2UgcnVudGltZSAKLVNlcnZpY2UuUnVudGltZUlkPW9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLmF4aXNXZWJTZXJ2aWNlUlQKLSEtLSBTZXJ2aWNlLlNlcnZlcklkIC0gIElEIG9mIHRhcmdldCBzZXJ2ZXIgCi1TZXJ2aWNlLlNlcnZlcklkPW9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjYwCi0hLS0gU2VydmljZS5UeXBlSWQgLSBKYXZhIEJlYW4gaXMgZGVmYXVsdCBmb3IgYm90aCBUb3AgRG93biBhbmQgQm90dG9tIFVwCi0hLS0gU2VydmljZS5UeXBlSWQ9SmF2YSBCZWFuCi0KLSEtLSBTZXJ2aWNlUHJvamVjdE5hbWUgLSAhLS10eXBlOlN0cmluZyAtIG5hbWUgb2YgU2VydmljZSBwcm9qZWN0IC0gdGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBnaXZlIHRoZSBzZXJ2aWNlIHByb2plY3QgYSBkaWZmZXJlbnQgbmFtZSB0aGFuIHRoZSBwcm9qZWN0IGNvbnRhaW5pbmcgdGhlIGluaXRpYWwgc2VsZWN0aW9uLiAgdHlwZTogU3RyaW5nICAgIAotIS0tU2VydmljZVByb2plY3ROYW1lPXNlcnZpY2VQcm9qZWN0TmFtZQotIS0tIFNlcnZpY2VFYXJQcm9qZWN0TmFtZSAtICEtLXR5cGU6U3RyaW5nIC0gbmFtZSBvZiBTZXJ2aWNlIEVBUiBwcm9qZWN0LSB0aGlzIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIGdpdmUgdGhlIHNlcnZpY2UgRUFSIHByb2plY3QgYSBkaWZmZXJlbnQgbmFtZSB0aGFuIHRoZSBFQVIgcHJvamVjdCBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2VydmljZSBwcm9qZWN0LiAgdHlwZTogU3RyaW5nCi0hLS1TZXJ2aWNlRWFyUHJvamVjdE5hbWU9c2VydmljZUVhclByb2plY3ROYW1lCi0KLSEtLSBNYXBwaW5ncwotIS0tIFRvcCBkb3duIG9yIGJvdHRvbSB1cCBzY2VuYXJpby4gV29ya3NwYWNlIHJlbGF0aXZlIFVSSSB0byBwcm9wZXJ0eSBmaWxlIGNvbnRhaW5pbmcgbWFwcGluZ3MuCi0hLS0gVG9wIERvd246IE1hcHBpbmdzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhY2thZ2UgbmFtZXMgb2YgdGhlIGdlbmVyYXRlZCBKYXZhIHRlbXBsYXRlIGNsYXNzZXMuCi0hLS0gVGhlIGNvbnRlbnQgb2YgdGhlIHByb3BlcnRpZXMgZmlsZSBtdXN0IGJlIG9mIHRoZSBmb3JtYXQgbmFtZXNwYWNlPXBhY2thZ2UgIAotIS0tIEJvdHRvbSBVcDogTWFwcGluZ3MgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5hbWVzIGluIHRoZSBnZW5lcmF0ZWQgV1NETC4KLSEtLSBUaGUgY29udGVudCBvZiB0aGUgcHJvcGVydGllcyBmaWxlIG11c3QgYmUgb2YgdGhlIGZvcm1hdCBwYWNrYWdlID0gbmFtZXNwYWNlIAotIS0tTWFwcGluZ3M9L3Rlc3RQcm9qL21hcHBpbmdzL21hcHBpbmdzLnR4dAotCi0hLS0gSmF2YU91dHB1dAotIS0tIFRvcCBkb3duIC0gU3RyaW5nOiB0aGUgd29ya3NwYWNlIHJlbGF0aXZlIFVSSSBmb3IgYSBKYXZhIHNvdXJjZSBmb2xkZXIgZm9yIHRoZSBnZW5lcmF0ZWQgSmF2YSBjb2RlIC0gbXVzdCBiZSBleGlzdGluZyB3b3Jrc3BhY2Ugc291cmNlIGZvbGRlcgotIS0tSmF2YU91dHB1dD0vcHJvamVjdE5hbWUvSmF2YVNvdXJjZQotCi0hLS0gTWV0aG9kcwotIS0tIEJvdHRvbSB1cCAtIHNwYWNlIGRlbGltaXRlZCBzdHJpbmcgb2YgbWV0aG9kIHNpZ25hdHVyZXMgKGkuZS4gbWV0aG9kMShwYXJtVHlwZTEpIG1ldGhvZDIocGFybVR5cGUyKSkgdG8gYmUgZXhwb3NlZCBpbiBvdXRwdXQgV1NETC4gIElmIG5vIGxpc3QgaXMgcHJvdmlkZWQsIGFsbCBtZXRob2RzIGFyZSBleHBvc2VkLgotIS0tIE1ldGhvZHM9Ci0KLSEtLSBTdHlsZQotIS0tIEJvdHRvbSB1cCAtIFN0cmluZzogb25lIG9mOiBSUEMsIERPQ1VNRU5ULCBXUkFQUEVECi0hLS1TdHlsZT1ET0NVTUVOVAotCi0hLS0gVXNlCi0hLS0gQm90dG9tIHVwIC0gU3RyaW5nOiBvbmUgb2Y6IExJVEVSQUwsIEVOQ09ERUQgCi0hLS1Vc2U9TElURVJBTAotCi0hLS1PdmVyd3JpdGVGaWxlc0VuYWJsZWQgLSBzZXQgdG8gdHJ1ZSB0byBvdmVyd3JpdGUgZmlsZXMgdGhhdCBhbHJlYWR5IGV4aXN0LiB0eXBlOmJvb2xlYW4gCi0hLS0gbm90ZSBmb3Igbm9uLWludGVyYWN0aXZlIG1vZGUgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGlzIGJlIHNldCB0byB0cnVlCi0hLS1PdmVyd3JpdGVGaWxlc0VuYWJsZWQ9dHJ1ZQotCi0hLS1DcmVhdGVGb2xkZXJzRW5hYmxlZCAtIHNldCB0byB0cnVlIGNyZWF0ZSBmb2xkZXJzIG5lY2Vzc2FyeSBkdXJpbmcgZmlsZSBnZW5lcmF0aW9uIHR5cGU6Ym9vbGVhbgotIS0tIG5vdGUgZm9yIG5vbi1pbnRlcmFjdGl2ZSBtb2RlIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhpcyBiZSBzZXQgdG8gdHJ1ZQotIS0tQ3JlYXRlRm9sZGVyc0VuYWJsZWQ9dHJ1ZQotCi0hLS1DaGVja291dEZpbGVzRW5hYmxlZCAtIHNldCB0byB0cnVlIHRvIGNoZWNrIG91dCBmaWxlcyB3aXRoIG5vIHdhcm5pbmcgdG8gdGhlIHVzZXIgdHlwZTpib29sZWFuCi0hLS0gbm90ZSBmb3Igbm9uLWludGVyYWN0aXZlIG1vZGUgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGlzIGJlIHNldCB0byB0cnVlCi0hLS1DaGVja291dEZpbGVzRW5hYmxlZD10cnVlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hbnQvd3NhbnQuYmF0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50L3dzYW50LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY4NWU5NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hbnQvd3NhbnQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotZWNobyBvZmYKLXJlbSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1yZW0gIENvcHlyaWdodCAoYykgMjAwNSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLXJlbSAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotcmVtICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLXJlbSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLXJlbSAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLXJlbSAKLXJlbSAgQ29udHJpYnV0b3JzOgotcmVtICAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi1yZW0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotc2V0bG9jYWwKLQotUkVNICoqKioqKioqKioqIExvY2FsIGVudmFycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotUkVNIFRoZSBKUkUgamF2YS5leGUgdG8gYmUgdXNlZCBieSBBbnQuICBOb3RlOiBmb3IgV1RQIDIuMCB0aGUgSkRLIG5lZWRzIHRvIGJlIDEuNSBvciBoaWdoZXIuCi1zZXQgSkFWQUVYRT0iQzpcamRrMS41LjBcanJlXGJpblxqYXZhLmV4ZSIKLQotUkVNIFRoZSBFY2xpcHNlIGluc3RhbGwgZGlyZWN0b3J5LiAgU29tZSBFY2xpcHNlIGJhc2VkIHByb2R1Y3RzIG1heSByZWZlciB0byB0aGlzIGRpcmVjdG9yeQotUkVNIGFzIHRoZSBub24gc2hhcmVkIGRpcmVjdG9yeS4gIERvIG5vdCBwdXQgcXVvdGVzIGFyb3VuZCB0aGlzIHZhbHVlLgotc2V0IElOU1RBTExfRElSRUNUT1JZPWQ6XHByb2R1Y3RkaXJlY3RvcnlcZWNsaXBzZQotCi1SRU0gVGhlIHNoYXJlZCBFY2xpcHNlIGZlYXR1cmVzIGRpcmVjdG9yeS4gIFNvbWUgRWNsaXBzZSBiYXNlZCBwcm9kdWN0cyBtYXkgc3BsaXQgdGhlaXIgCi1SRU0gZGlyZWN0b3J5IHN0cnVjdHVyZSBpbnRvIHNoYXJlZCBhbmQgbm9uIHNoYXJlZCBmb2xkZXJzLiAgVGhlIHZhcmlhYmxlIGJlbG93IHNob3VsZCBiZQotUkVNIHNldCB0byB0aGUgc2hhcmVkIGRpcmVjdG9yeS4gIE5vdGU6IGEgZGVmYXVsdCBXVFAgaW5zdGFsbGF0aW9uIGRvZXMgbm90IHNwbGl0IGl0J3MKLVJFTSBkaXJlY3Rvcnkgc3RydWN0dXJlIHNvIHRoZSBJTlNUQUxMX0RJUkVDVE9SWSBhbmQgdGhlIFNIQVJFRF9ESVJFQ1RPUlkgc2hvdWxkIGJlIHRoZSBzYW1lLgotUkVNIERvIG5vdCBwdXQgcXVvdGVzIGFyb3VuZCB0aGlzIHZhbHVlLgotc2V0IFNIQVJFRF9ESVJFQ1RPUlk9JUlOU1RBTExfRElSRUNUT1JZJQotCi1SRU0gVGhlIEVjbGlwc2UgRXF1aW5veCBMYXVuY2hlciBqYXIuICBVc3VhbGx5IHRoaXMgcGx1Z2luIGphciBmaWxlIGlzIGxvY2F0ZWQgaW4gdGhlCi1SRU0gc2hhcmVkIHBsdWdpbiBkaXJlY3RvcnkoaWUuIHBsdWdpbnNcb3JnLmVjbGlwc2UuZXF1aW5veC5sYXVuY2hlciouamFyICkKLXNldCBMQVVOQ0hFUl9KQVI9IiVTSEFSRURfRElSRUNUT1JZJVxwbHVnaW5zXG9yZy5lY2xpcHNlLmVxdWlub3gubGF1bmNoZXJfMS4wLjAudjIwMDcwNjA2LmphciIKLQotUkVNIFRoZSBsb2NhdGlvbiBvZiB5b3VyIHdvcmtzcGFjZSB3aXRob3V0IHRoZSB0cmFpbGluZyBwYXRoIHNlcGFyYXRvci4KLVJFTSBEbyBub3QgcHV0IHF1b3RlcyBhcm91bmQgdGhpcyB2YWx1ZS4KLXNldCBXT1JLU1BBQ0U9Qzpcd29ya3NwYWNlCi0KLVJFTSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLWlmIG5vdCBleGlzdCAlSkFWQUVYRSUgZWNobyBFUlJPUjogaW5jb3JyZWN0IGphdmEuZXhlPSVKQVZBRVhFJSwgZWRpdCB0aGlzIGZpbGUgYW5kIGNvcnJlY3QgdGhlIEpBVkFFWEUgZW52YXIKLWlmIG5vdCBleGlzdCAlSkFWQUVYRSUgZ290byBkb25lCi0KLWlmIG5vdCBleGlzdCAlTEFVTkNIRVJfSkFSJSBlY2hvIEVSUk9SOiBpbmNvcnJlY3QgbGF1bmNoZXIgamFyPSVMQVVOQ0hFUl9KQVIlLCBlZGl0IHRoaXMgZmlsZSBhbmQgY29ycmVjdCB0aGUgTEFVTkNIRVJfSkFSIGVudmFyCi1pZiBub3QgZXhpc3QgJUxBVU5DSEVSX0pBUiUgZ290byBkb25lCi0KLTpydW4KLUBlY2hvIG9uCi0lSkFWQUVYRSUgLWphciAlTEFVTkNIRVJfSkFSJSAtaW5zdGFsbCAiJUlOU1RBTExfRElSRUNUT1JZJSIgLWFwcGxpY2F0aW9uIG9yZy5lY2xpcHNlLmFudC5jb3JlLmFudFJ1bm5lciAtZGF0YSAiJVdPUktTUEFDRSUiIC1maWxlIHdzZ2VuLnhtbCAlKiA+d3NnZW4udHh0IDI+JjEKLQotOmRvbmUKLXBhdXNlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hbnQvd3NhbnQuc2ggYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9hbnQvd3NhbnQuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZWY0NWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50L3dzYW50LnNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIS9iaW4vc2gKLXNldCArdgotCi0jU2NyaXB0IHRvIHJ1biBXZWJTZXJ2aWNlIEFudCB0YXNrcyBpbiBoZWFkbGVzcyBFY2xpcHNlIG1vZGUKLQotZWNobyAiU2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMiCi0KLSMgVGhlIEpSRSBqYXZhLmV4ZSB0byBiZSB1c2VkIGJ5IEFudC4gIE5vdGU6IGZvciBXVFAgMi4wIHRoZSBKREsgbmVlZHMgdG8gYmUgMS41IG9yIGhpZ2hlci4KLUpBVkFFWEU9L2hvbWUvdGVzdGVyL2pkazEuNS4wL2pyZS9iaW4vamF2YQotICAgICAgIAotICAgICAgIAotIyBUaGUgRWNsaXBzZSBpbnN0YWxsIGRpcmVjdG9yeS4gIFNvbWUgRWNsaXBzZSBiYXNlZCBwcm9kdWN0cyBtYXkgcmVmZXIgdG8gdGhpcyBkaXJlY3RvcnkKLSMgYXMgdGhlIG5vbiBzaGFyZWQgZGlyZWN0b3J5LgotSU5TVEFMTF9ESVJFQ1RPUlk9L3Byb2R1Y3RkaXJlY3RvcnkvZWNsaXBzZQotCi0jIFRoZSBzaGFyZWQgRWNsaXBzZSBmZWF0dXJlcyBkaXJlY3RvcnkuICBTb21lIEVjbGlwc2UgYmFzZWQgcHJvZHVjdHMgbWF5IHNwbGl0IHRoZWlyIAotIyBkaXJlY3Rvcnkgc3RydWN0dXJlIGludG8gc2hhcmVkIGFuZCBub24gc2hhcmVkIGZvbGRlcnMuICBUaGUgdmFyaWFibGUgYmVsb3cgc2hvdWxkIGJlCi0jIHNldCB0byB0aGUgc2hhcmVkIGRpcmVjdG9yeS4gIE5vdGU6IGEgZGVmYXVsdCBXVFAgaW5zdGFsbGF0aW9uIGRvZXMgbm90IHNwbGl0IGl0J3MKLSMgZGlyZWN0b3J5IHN0cnVjdHVyZSBzbyB0aGUgSU5TVEFMTF9ESVJFQ1RPUlkgYW5kIHRoZSBTSEFSRURfRElSRUNUT1JZIHNob3VsZCBiZSB0aGUgc2FtZS4KLVNIQVJFRF9ESVJFQ1RPUlk9JElOU1RBTExfRElSRUNUT1JZCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotIyBUaGUgRWNsaXBzZSBFcXVpbm94IExhdW5jaGVyIGphci4gIFVzdWFsbHkgdGhpcyBwbHVnaW4gamFyIGZpbGUgaXMgbG9jYXRlZCBpbiB0aGUKLSMgc2hhcmVkIHBsdWdpbiBkaXJlY3RvcnkoaWUuIHBsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5sYXVuY2hlciouamFyICkKLUxBVU5DSEVSX0pBUj0kU0hBUkVEX0RJUkVDVE9SWS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gubGF1bmNoZXJfMS4wLjAudjIwMDcwNjA2LmphcgotCi0KLSMgVGhlIGxvY2F0aW9uIG9mIHlvdXIgd29ya3NwYWNlCi1XT1JLU1BBQ0U9L2hvbWUvdGVzdGVyL3dvcmtzcGFjZQotCi1ydW4oKSB7Ci0gIHNldCAtdgotICAkSkFWQUVYRSAtamFyICRMQVVOQ0hFUl9KQVIgLWluc3RhbGwgJElOU1RBTExfRElSRUNUT1JZIC1hcHBsaWNhdGlvbiBvcmcuZWNsaXBzZS5hbnQuY29yZS5hbnRSdW5uZXIgLWRhdGEgJFdPUktTUEFDRSAtZmlsZSB3c2dlbi54bWwgJGxzID4gd3NnZW4udHh0IDI+JjEKLX0KLQotaWYgWyAhIC1lICRKQVZBRVhFIF07IHRoZW4gCi0gIGVjaG8gIkVSUk9SOiBpbmNvcnJlY3QgamF2YS5leGU9JEpBVkFFWEUsIGVkaXQgdGhlIHNjcmlwdCBhbmQgY29ycmVjdCB0aGUgSkFWQUVYRSBlbnZpcm9ubWVudCB2YXJpYWJsZSI7Ci0gIGV4aXQgMTsKLWZpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLWlmIFsgISAtZSAkTEFVTkNIRVJfSkFSIF07IHRoZW4KLWVjaG8gIkVSUk9SOiBpbmNvcnJlY3QgbGF1bmNoZXI9JExBVU5DSEVSX0pBUiwgZWRpdCB0aGUgc2NyaXB0IGFuZCBjb3JyZWN0IHRoZSBMQVVOQ0hFUl9KQVIgZW52aXJvbm1lbnQgdmFyaWFibGUiOwotZXhpdCAxOwotZmkgIAotCi1ydW4KLWV4aXQgMApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50L3dzZ2VuLnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L2FudC93c2dlbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0N2E2YzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYW50L3dzZ2VuLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/PgotCi08cHJvamVjdCBkZWZhdWx0PSJtYWluIiBiYXNlZGlyPSIuIj4KLQotPGVjaG8gbWVzc2FnZT0icHVsbGluZyBpbiBwcm9wZXJ0eSBmaWxlcyIvPgotPHByb3BlcnR5IGZpbGU9ImF4aXNzZXJ2aWNlLnByb3BlcnRpZXMiLz4KLQkKLTxlY2hvIG1lc3NhZ2U9ImNhbGxpbmcgdGhlIHdlYiBzZXJ2aWNlcyBnZW5lcmF0aW9uIGFudCB0YXNrOiB3c2dlbiIvPgotIDx0YXJnZXQgbmFtZT0ibWFpbiIgPgotICAJIDx3c2dlbi8+Ci0gIDwvdGFyZ2V0PgotICAKLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L2J1aWxkLWFudHRhc2tzLnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L2J1aWxkLWFudHRhc2tzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUxZWQ4OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9idWlsZC1hbnR0YXNrcy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3QgbmFtZT0iQnVpbGQgQW50IEVudmlyb25tZW50IHN1cHBvcnQgSkFSIiBkZWZhdWx0PSJidWlsZCIgYmFzZWRpcj0iLiI+Ci0KLQk8dGFyZ2V0IG5hbWU9ImJ1aWxkIiBkZXNjcmlwdGlvbj0iQ2xlYW5zLCBidWlsZHMgYW5kIHJlZnJlc2hlcyIgZGVwZW5kcz0iY2xlYW4sIGFudC1saWIvYW50dGFza3MuamFyIi8+Ci0KLQk8dGFyZ2V0IG5hbWU9ImluaXQiIGRlcGVuZHM9InByb3BlcnRpZXMiPgotCQk8cHJvcGVydHkgbmFtZT0idmVyc2lvbi5zdWZmaXgiIHZhbHVlPSJfMy4xLjAiLz4KLQkJPHByb3BlcnR5IG5hbWU9Im5ldy52ZXJzaW9uLnN1ZmZpeCIgdmFsdWU9Il8zLjIuMCIvPgotCQk8cHJvcGVydHkgbmFtZT0iYm9vdGNsYXNzcGF0aCIgdmFsdWU9IiIvPgotCQk8cHJvcGVydHkgbmFtZT0idGVtcC5mb2xkZXIiIHZhbHVlPSIke2Jhc2VkaXJ9L3RlbXAuZm9sZGVyIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJidWlsZC5yZXN1bHQuZm9sZGVyIiB2YWx1ZT0iJHtiYXNlZGlyfSIvPgotCQk8cHJvcGVydHkgbmFtZT0id2luMzIuamFyIiB2YWx1ZT0iJHtlY2xpcHNlLmhvbWV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uuc3d0LndpbjMyLndpbjMyLng4NiR7dmVyc2lvbi5zdWZmaXh9LmphciIvPgotCQk8cHJvcGVydHkgbmFtZT0iZ3RrLmphciIgdmFsdWU9IiR7ZWNsaXBzZS5ob21lfS9wbHVnaW5zL29yZy5lY2xpcHNlLnN3dC5ndGsubGludXgueDg2JHt2ZXJzaW9uLnN1ZmZpeH0uamFyIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJtb3RpZi5qYXIiIHZhbHVlPSIke2VjbGlwc2UuaG9tZX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5zd3QubW90aWYke3ZlcnNpb24uc3VmZml4fS5qYXIiLz4KLQkJPHByb3BlcnR5IG5hbWU9Im9zeC5qYXIiIHZhbHVlPSIke2VjbGlwc2UuaG9tZX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5zd3QuY2FyYm9uLm1hY29zeC5wcGMke3ZlcnNpb24uc3VmZml4fS5qYXIiLz4KLQkJPGF2YWlsYWJsZSBmaWxlPSIke3dpbjMyLmphcn0iIHByb3BlcnR5PSJzd3QuamFyIiB2YWx1ZT0iJHt3aW4zMi5qYXJ9Ii8+Ci0JCTxhdmFpbGFibGUgZmlsZT0iJHtndGsuamFyfSIgcHJvcGVydHk9InN3dC5qYXIiIHZhbHVlPSIke2d0ay5qYXJ9Ii8+Ci0JCTxhdmFpbGFibGUgZmlsZT0iJHttb3RpZi5qYXJ9IiBwcm9wZXJ0eT0ic3d0LmphciIgdmFsdWU9IiR7bW90aWYuamFyfSIvPgotCQk8YXZhaWxhYmxlIGZpbGU9IiR7b3N4Lmphcn0iIHByb3BlcnR5PSJzd3QuamFyIiB2YWx1ZT0iJHtvc3guamFyfSIvPgotCTwvdGFyZ2V0PgotCQotCTx0YXJnZXQgbmFtZT0icHJvcGVydGllcyIgaWY9ImVjbGlwc2UucnVubmluZyI+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJidWlsZC5jb21waWxlciIgdmFsdWU9Im9yZy5lY2xpcHNlLmpkdC5jb3JlLkpEVENvbXBpbGVyQWRhcHRlciIvPgotCTwvdGFyZ2V0PgotCQkKLQkJPHRhcmdldCBuYW1lPSJhbnQtbGliL2FudHRhc2tzLmphciIgZGVzY3JpcHRpb249ICJDcmVhdGVzIHRoZSBhbnRydW5uZXIuamFyIiBkZXBlbmRzPSJpbml0Ij4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJkZXN0ZGlyIiB2YWx1ZT0iJHt0ZW1wLmZvbGRlcn0vYW50LWxpYi9hbnR0YXNrcy5qYXIiLz4KLQkJCTxkZWxldGUgZGlyPSIke2Rlc3RkaXJ9Ii8+Ci0JCQk8bWtkaXIgZGlyPSIke2Rlc3RkaXJ9Ii8+Ci0JCQk8amF2YWMgZGVzdGRpcj0iJHtkZXN0ZGlyfSIgZmFpbG9uZXJyb3I9InRydWUiIHZlcmJvc2U9ImZhbHNlIiBkZWJ1Zz0ib24iIGluY2x1ZGVKYXZhUnVudGltZT0gInllcyIKLQkJCSAJYm9vdGNsYXNzcGF0aD0iJHtib290Y2xhc3NwYXRofSIKLQkJCSAJY2xhc3NwYXRoPSIke2Jhc2VkaXJ9L2JpbiI+Ci0JCQkJPHNyYyBwYXRoPSJhbnQtc3JjLyIvPgotCQkJPC9qYXZhYz4KLQkJCTxjb3B5IHRvZGlyPSIke2Rlc3RkaXJ9Ij4KLQkJCQk8ZmlsZXNldCBkaXI9ImFudC1zcmMvIiBleGNsdWRlcz0iKiovKi5qYXZhIi8+Ci0JCQk8L2NvcHk+Ci0JCQk8bWtkaXIgZGlyPSIke2J1aWxkLnJlc3VsdC5mb2xkZXJ9L2FudC1saWIiLz4KLQkJCTxqYXIgZGVzdGZpbGU9IiR7YnVpbGQucmVzdWx0LmZvbGRlcn0vYW50LWxpYi9hbnR0YXNrcy5qYXIiIGJhc2VkaXI9IiR7ZGVzdGRpcn0iLz4KLQkJCTxkZWxldGUgZGlyPSIke3RlbXAuZm9sZGVyfSIvPgotCQk8L3RhcmdldD4KLQotCQk8dGFyZ2V0IG5hbWU9ImNsZWFuIiBkZXNjcmlwdGlvbj0iRGVsZXRlcyBwcmV2aW91cyBidWlsZCByZW1uYW50cyIgZGVwZW5kcz0iaW5pdCI+Ci0JCQk8ZGVsZXRlIGZpbGU9IiR7YnVpbGQucmVzdWx0LmZvbGRlcn0vYW50LWxpYi9hbnR0YXNrcy5qYXIiLz4KLQkJCTxkZWxldGUgZGlyPSIke3RlbXAuZm9sZGVyfSIvPgotCQk8L3RhcmdldD4KLQkKLQk8dGFyZ2V0IG5hbWU9InJlZnJlc2giPgotCTxlY2xpcHNlLkxvY2FsUmVmcmVzaCByZXNvdXJjZT0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52IiBkZXB0aD0iaW5maW5pdGUiLz4KLQk8L3RhcmdldD4KLQkKLQk8L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9idWlsZC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ1M2ZiMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICBhbnQvLFwKLSAgICAgICAgICAgICAgIGFudC1saWIvYW50dGFza3MuamFyLFwKLSAgICAgICAgICAgICAgIC4KLWphcnMuY29tcGlsZS5vcmRlciA9IC4sXAotICAgICAgICAgICAgICAgICAgICAgYW50LWxpYi9hbnR0YXNrcy5qYXIKLXNvdXJjZS5hbnQtbGliL2FudHRhc2tzLmphciA9IGFudC1zcmMvCi1vdXRwdXQuYW50LWxpYi9hbnR0YXNrcy5qYXIgPSBiaW4vCi1yb290LnBlcm1pc3Npb25zLjc3NyA9IGFudC8KLW91dHB1dC4uID0gYmluLwotc291cmNlLi4gPSBzcmMvCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9wbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzdkM2NjYmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPUVudmlyb25tZW50IENvbW1hbmQgRnJhbWV3b3JrIChoZWFkbGVzcykKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotCi1QTFVHSU5fWFBfRFlOQU1JQ19XSVpBUkQ9RHluYW1pYyBXaXphcmQKLVBMVUdJTl9YUF9QT1BVUF9ESUFMT0dTPU9wdGlvbmFsIFBvcC11cCBBY3Rpb24gRGlhbG9ncyBUeXBlcwotCi1YUF9hbnREYXRhTWFwcGluZz1BbnQgRW52aXJvbm1lbnQgcHJvcGVydHkgbWFwcGluZ3MKLVhQX2FudFNjZW5hcmlvPUFudCBFbnZpcm9ubWVudCBzY2VuYXJpb3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3BsdWdpbi54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTYyMjE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotCi08cGx1Z2luPgotCi0gICA8IS0tIFRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsIGFuZCBsaWtlbHkgdG8gY2hhbmdlLiAtLT4KLSAgIDxleHRlbnNpb24tcG9pbnQKLSAgICAgIGlkPSJkeW5hbWljV2l6YXJkIgotICAgICAgbmFtZT0iJVBMVUdJTl9YUF9EWU5BTUlDX1dJWkFSRCIvPgotCi0gICA8IS0tIFRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50IGlzIGludGVybmFsIGFuZCBsaWtlbHkgdG8gY2hhbmdlLiAtLT4gICAKLSAgIDxleHRlbnNpb24tcG9pbnQKLSAgICAgIGlkPSJhY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZSIKLSAgICAgIG5hbWU9IiVQTFVHSU5fWFBfUE9QVVBfRElBTE9HUyIvPgotCi0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJhbnREYXRhTWFwcGluZyIgbmFtZT0iJVhQX2FudERhdGFNYXBwaW5nIiBzY2hlbWE9InNjaGVtYS9hbnRkYXRhbWFwcGluZy5leHNkIi8+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJhbnRTY2VuYXJpbyIgbmFtZT0iJVhQX2FudFNjZW5hcmlvIiBzY2hlbWE9InNjaGVtYS9hbnRTY2VuYXJpby5leHNkIi8+Ci0gICAgIAotICAgPGV4dGVuc2lvbgotICAgICAgICAgaWQ9IndzZ2VuIgotICAgICAgICAgbmFtZT0id3NnZW4iCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuYW50LmNvcmUuYW50VGFza3MiPgotICAgICAgPGFudFRhc2sKLSAgICAgICAgICAgIGNsYXNzPSJ3cy5hbnQudGFzay5XZWJTZXJ2aWNlR2VuZXJhdGlvbkFudFRhc2siCi0gICAgICAgICAgICBlY2xpcHNlUnVudGltZT0idHJ1ZSIKLSAgICAgICAgICAgIGhlYWRsZXNzPSJ0cnVlIgotICAgICAgICAgICAgbGlicmFyeT0iYW50LWxpYi9hbnR0YXNrcy5qYXIiCi0gICAgICAgICAgICBuYW1lPSJ3c2dlbiIvPgotICAgPC9leHRlbnNpb24+IAotICAgICA8ZXh0ZW5zaW9uCi0gICAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS5hbnQuY29yZS5leHRyYUNsYXNzcGF0aEVudHJpZXMiPgotICAgICAgICA8ZXh0cmFDbGFzc3BhdGhFbnRyeSBsaWJyYXJ5PSJhbnQtbGliL2FudHRhc2tzLmphciIvPgotICAgICA8L2V4dGVuc2lvbj4gICAgIAotCi08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NjaGVtYS9hbnRTY2VuYXJpby5leHNkIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc2NoZW1hL2FudFNjZW5hcmlvLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhYWZmNTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc2NoZW1hL2FudFNjZW5hcmlvLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52Ij4KLTxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zY2hlbWEgcGx1Z2luPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYiIGlkPSJhbnRTY2VuYXJpbyIgbmFtZT0iQW50IEVudmlyb25tZW50IFNjZW5hcmlvcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaW9uIj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxzZXF1ZW5jZT4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0iYW50U2NlbmFyaW8iLz4KLSAgICAgICAgIDwvc2VxdWVuY2U+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBvaW50IiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGEgZnVsbHkgcXVhbGlmaWVkIGlkZW50aWZpZXIgb2YgdGhlIHRhcmdldCBleHRlbnNpb24gcG9pbnQKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhbiBvcHRpb25hbCBpZGVudGlmaWVyIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZQotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJhbnRTY2VuYXJpbyI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNjZW5hcmlvVHlwZSIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0ic2luY2UiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgJmx0O2ImZ3Q7VGhpcyBleHRlbnNpb24gcG9pbnQgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBleHBlY3RlZCB0byBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sgZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4gKHJlcGVhdGVkbHkpIGFzIHRoZSBBUEkgZXZvbHZlcy4mbHQ7L2ImZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJhcGlJbmZvIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJpbXBsZW1lbnRhdGlvbiIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iY29weXJpZ2h0Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4mbHQ7YnImZ3Q7Ci1BbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIAotYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIAotdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgJmx0O2EKLWhyZWY9JnF1b3Q7aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwmcXVvdDsmZ3Q7aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwmbHQ7L2EmZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLTwvc2NoZW1hPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc2NoZW1hL2FudGRhdGFtYXBwaW5nLmV4c2QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zY2hlbWEvYW50ZGF0YW1hcHBpbmcuZXhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFlNzM5My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zY2hlbWEvYW50ZGF0YW1hcHBpbmcuZXhzZAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/PgotPCEtLSBTY2hlbWEgZmlsZSB3cml0dGVuIGJ5IFBERSAtLT4KLTxzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYiPgotPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNjaGVtYSBwbHVnaW49Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudiIgaWQ9ImFudERhdGFNYXBwaW5nIiBuYW1lPSJBbnQgRW52aXJvbm1lbnQgUHJvcGVydHkgTWFwcGluZ3MiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImV4dGVuc2lvbiI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8c2VxdWVuY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9Im1hcCIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotICAgICAgICAgPC9zZXF1ZW5jZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9pbnQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYSBmdWxseSBxdWFsaWZpZWQgaWRlbnRpZmllciBvZiB0aGUgdGFyZ2V0IGV4dGVuc2lvbiBwb2ludAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIGlkZW50aWZpZXIgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZQotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9Im1hcCI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImtleSIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJvcGVyYXRpb24iIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icHJvcGVydHkiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InJlcXVpcmVkIiB0eXBlPSJib29sZWFuIiB1c2U9Im9wdGlvbmFsIiBkZWZhdWx0PSJmYWxzZSI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9InNpbmNlIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICZsdDtiJmd0O1RoaXMgZXh0ZW5zaW9uIHBvaW50IGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuJmx0Oy9iJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJleGFtcGxlcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpSW5mbyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iaW1wbGVtZW50YXRpb24iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImNvcHlyaWdodCIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0O2JyJmd0OwotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSAKLWF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyAKLXRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICZsdDthCi1ocmVmPSZxdW90O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJnF1b3Q7Jmd0O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJmx0Oy9hJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvRW52aXJvbm1lbnQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvRW52aXJvbm1lbnQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZjYTBiNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L0Vudmlyb25tZW50LnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNzA0MTggICAxNzcwMDUgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotIyAyMDA4MDMyNiAgIDE3MTcwNSB0cnVuZ2hhQGNhLmlibS5jb20gLSBUcnVuZwotIyAyMDA4MDMyNiAgIDE0OTA2MCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0jIDIwMDgwMzI1ICAgMjIzOTEyIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIEFkZGluZyBQSUkvTVJJIHRvIHBhcnRpYWxseSBhZGRyZXNzIDE3MTcwNQotIyAyMDA4MDMyOCAgIDIyNDU2MyBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBUZXh0IGluY29ycmVjdCBnZW5lcmF0aW5nIHdlYiBzZXJ2aWNlcyAmIGNsaWVudHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBNZXNzYWdlcyBmb3IgUmVzb3VjZVV0aWxzCi0jCi1NU0dfRVJST1JfUEFUSF9OT1RfQUJTT0xVVEU9SVdBQjAwMDNFIFBhdGggezB9IGlzIG5vdCBhYnNvbHV0ZSBmb3IgY3JlYXRpbmcgYSBmaWxlLgotTVNHX0VSUk9SX1BBVEhfRU1QVFk9SVdBQjAwMDRFIFBhdGggezB9IGlzIGVtcHR5IHdoaWxlIGNyZWF0aW5nIGEgZmlsZS4KLU1TR19FUlJPUl9QQVRIX05PVF9GT0xERVI9SVdBQjAwMDVFIFBhdGggezB9IGlzIG5vdCBhIGZvbGRlciBmb3IgY3JlYXRpbmcgYSBmaWxlLgotTVNHX0VSUk9SX0ZPTERFUl9DUkVBVElPTl9ESVNBQkxFRD1JV0FCMDAwN0UgRm9sZGVyIGNyZWF0aW9uIGhhcyBiZWVuIGRpc2FibGVkIGZvciBwYXJlbnQgZm9sZGVyIHswfS4gRG8geW91IHdhbnQgdG8gY3JlYXRlIGZvbGRlciB7MX0/Ci1NU0dfRVJST1JfUkVTT1VSQ0VfTk9UX0ZPTERFUj1JV0FCMDAwOEUgUmVzb3VyY2UgezB9IGlzIG5vdCBhIGZvbGRlci4KLU1TR19XQVJOX0ZJTEVfT1ZFUldSSVRFX0RJU0FCTEVEPUlXQUIwMDA5VyBDYW5ub3Qgb3ZlcndyaXRlIGZpbGUgezF9IGluIGZvbGRlciB7MH0uCi1NU0dfRVJST1JfRklMRV9DSEVDS09VVF9ESVNBQkxFRD1JV0FCMDAxMEUgQ2Fubm90IGNoZWNrb3V0IGZpbGUgezF9IGluIGZvbGRlciB7MH0uCi1NU0dfRVJST1JfUkVTT1VSQ0VfTk9UX0ZJTEU9SVdBQjAwMTFFIFRoZSBmb2xsb3dpbmcgcGF0aCBpcyBub3QgYSByZXNvdXJjZTogezB9LgotTVNHX0VSUk9SX0ZPTERFUl9IQVNfQ0hJTERSRU49SVdBQjAwMTJFIENhbm5vdCBjcmVhdGUgZm9sZGVyOiB7MH0gdGhhdCBhbHJlYWR5IGhhcyBjaGlsZHJlbi4KLU1TR19FUlJPUl9JTz1JV0FCMDAwNkUgQW4gaW5wdXQvb3V0cHV0IGVycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhlIHJlc291cmNlICJ7MH0iLgotTVNHX0VSUk9SX0ZJTEVfT1ZFUldSSVRFX0RJU0FCTEVEPUlXQUIwMTY0RSBDYW5ub3Qgb3ZlcndyaXRlIHRoZSBmaWxlICJ7MX0iIHJlbGF0aXZlIHRvIHRoZSBwYXRoICJ7MH0iIGJlY2F1c2UgYXV0b21hdGljIGZpbGUgb3ZlcndyaXRpbmcgaGFzIG5vdCBiZWVuIGVuYWJsZWQuIERvIHlvdSB3YW50IHRvIGVuYWJsZSBpdCBmb3IgdGhpcyBmaWxlPwotTVNHX0VSUk9SX1VORVhQRUNURURfRVJST1I9SVdBQjAwMTRFIFVuZXhwZWN0ZWQgZXhjZXB0aW9uIG9jY3VycmVkLgotTVNHX0VSUk9SX0FOVF9EQVRBX1RSQU5TRk9STT1FeGNlcHRpb24gdHJhbnNmb3JtaW5nIEFudCBwcm9wZXJ0eSBrZXkgezB9IHVzaW5nIHRyYW5zZm9ybWF0aW9uIHsxfS4KLU1TR19FUlJPUl9BTlRfQ0FMTF9TRVRURVI9RXhjZXB0aW9uIGludm9raW5nIHNldHRlciBtZXRob2QgezB9IGZvciBBbnQgcHJvcGVydHkuCi1NU0dfRVJST1JfQU5UX0NNRF9GUkFHTUVOVD1FeGNlcHRpb24gcmV0cmlldmluZyBBbnQgY29tbWFuZCBmcmFnbWVudCBmcm9tIHJlZ2lzdHJ5LgotTVNHX0VSUk9SX0FOVF9TQ0VOQVJJT19UWVBFPUNhbm5vdCBkZXRlcm1pbmUgc2NlbmFyaW8gdHlwZS4gIFBsZWFzZSBlbnN1cmUgU2NlbmFyaW9UeXBlIEFudCBwcm9wZXJ0eSBpcyBzZXQuCi1NU0dfRVJST1JfQU5UX1JFUVVJUkVEX1BST1BFUlRZPVJlcXVpcmVkIHByb3BlcnR5IHswfSB3YXMgbm90IHNldCBpbiB0aGUgQW50IHByb3BlcnR5IGZpbGUuCi1NU0dfRVJST1JfQU5UX1BST1BFUlRZX1dJVEhfSU5WQUxJRF9WQUxVRT1Qcm9wZXJ0eSB7MH0gd2FzIHNldCB3aXRoIGFuIGludmFsaWQgdmFsdWU6IHsxfS4KLU1TR19JTkZPX0FOVF9fUFJPUEVSVFlfREVGQVVMVD1Qcm9wZXJ0eSB7MH0gd2FzIG5vdCBzZXQgaW4gdGhlIEFudCBwcm9wZXJ0eSBmaWxlLiAgQSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZC4KLQotTEFCRUxfWUVTPVllcwotTEFCRUxfWUVTX1RPX0FMTD1ZZXMgdG8gQWxsCi1MQUJFTF9DQU5DRUw9Q2FuY2VsCi0KLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L0Vudmlyb25tZW50TWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvRW52aXJvbm1lbnRNZXNzYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTcxZGI5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvRW52aXJvbm1lbnRNZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwMzI2ICAgMTcxNzA1IHRydW5naGFAY2EuaWJtLmNvbSAtIFRydW5nCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLQotcHVibGljIGZpbmFsIGNsYXNzIEVudmlyb25tZW50TWVzc2FnZXMgZXh0ZW5kcyBOTFMgewotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5FbnZpcm9ubWVudCI7Ly8kTk9OLU5MUy0xJAotCi0JcHJpdmF0ZSBFbnZpcm9ubWVudE1lc3NhZ2VzKCkgewotCQkvLyBEbyBub3QgaW5zdGFudGlhdGUKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfUEFUSF9OT1RfQUJTT0xVVEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1BBVEhfRU1QVFk7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1BBVEhfTk9UX0ZPTERFUjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfRk9MREVSX0NSRUFUSU9OX0RJU0FCTEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9SRVNPVVJDRV9OT1RfRk9MREVSOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19XQVJOX0ZJTEVfT1ZFUldSSVRFX0RJU0FCTEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9GSUxFX0NIRUNLT1VUX0RJU0FCTEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9SRVNPVVJDRV9OT1RfRklMRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfRk9MREVSX0hBU19DSElMRFJFTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfSU87Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0ZJTEVfT1ZFUldSSVRFX0RJU0FCTEVEOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9VTkVYUEVDVEVEX0VSUk9SOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9BTlRfREFUQV9UUkFOU0ZPUk07Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0FOVF9DQUxMX1NFVFRFUjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQU5UX0NNRF9GUkFHTUVOVDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQU5UX1NDRU5BUklPX1RZUEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0FOVF9SRVFVSVJFRF9QUk9QRVJUWTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQU5UX1BST1BFUlRZX1dJVEhfSU5WQUxJRF9WQUxVRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfSU5GT19BTlRfX1BST1BFUlRZX0RFRkFVTFQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfWUVTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1lFU19UT19BTEw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfQ0FOQ0VMOwotCi0Jc3RhdGljIHsKLQkJTkxTLmluaXRpYWxpemVNZXNzYWdlcyhCVU5ETEVfTkFNRSwgRW52aXJvbm1lbnRNZXNzYWdlcy5jbGFzcyk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9hbnQvQW50Q29udHJvbGxlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9hbnQvQW50Q29udHJvbGxlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmQyNGEyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvYW50L0FudENvbnRyb2xsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA3MjYgICAxNTE2MTQgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjEwMTEgICAxNTkyODMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIHByb2plY3Qgbm90IGFzc29jaWF0ZWQgdG8gRUFSIHdoZW4gdXNpbmcgYW50IG9uIGNvbW1hbmQtbGluZQotICogMjAwNzA1MjIgICAxNzY5NDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzA3MzAgICAxOTcxNDQgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgUGFzcyBwcm9ncmVzcyBtb25pdG9yIHRvIHVuZG8gY29tbWFuZHMuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuYW50OwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5OdWxsUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LkVudmlyb25tZW50TWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbnRleHQuUGVyc2lzdGVudFJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5Db21tYW5kTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlRyYW5zaWVudFJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFGbG93TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLkRhdGFNYXBwaW5nUmVnaXN0cnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5GcmFnbWVudExpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkJhc2VTdGF0dXNIYW5kbGVyOwotCi0vKioKLSAqIAotICogQ2VudHJhbCBwb2ludCBvZiBjb250cm9sIGZvciB3ZWIgc2VydmljZSBBbnQgdGFza3MuCi0gKiBDb25zdHJ1Y3RzIEFudCBlbnZpcm9ubWVudCwgcm9vdCBmcmFnbWVudCBhbmQgY29tbWFuZCBtYW5hZ2VyLiAgU3RhcnRzIGV4ZWN1dGlvbiBvZiB0aGUgY29tbWFuZCBzdGFjay4KLSAqIAotICogQGF1dGhvciBqb2FuCi0gKgotICovCi0KLXB1YmxpYyBjbGFzcyBBbnRDb250cm9sbGVyIAotewkKLSAgIHByaXZhdGUgQW50T3BlcmF0aW9uTWFuYWdlciBvcGVyYXRpb25NYW5hZ2VyXzsKLSAgIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VfID0gbnVsbDsKLSAgIHByaXZhdGUgQW50RW52aXJvbm1lbnQgICAgICBlbnZpcm9ubWVudF87Ci0JCi0gICBwdWJsaWMgQW50Q29udHJvbGxlcihIYXNodGFibGUgcHJvcGVydGllcykKLSAgIHsKLQkgICAvLyBjb25zdHJ1Y3QgdGhlIGVudmlyb25tZW50IC0gcGFzc2luZyBpbiB0aGUgcHJvcGVydHkgdGFibGUJICAgCi0JICAgLy8gLS1tYWludGFpbnMgbGluayB0byBwcm9wZXJ0eSB0YWJsZSBwbHVzIGFueSBvdGhlciBlbnZpcm9ubWVudCBwcm9wZXJ0aWVzCi0JICAgLy8gLS1jb2RlIHRvIGFjY2VzcyBleHRlbnNpb24gcG9pbnQgbWFwcGluZ3MgZm9yIG9wZXJhdGlvbnMgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHByb3BlcnR5IHRhYmxlCi0JICAgVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0ICByZXNvdXJjZUNvbnRleHQgPSAoVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0KVBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQuZ2V0SW5zdGFuY2UoKS5jb3B5KCk7Ci0JICAgQW50U3RhdHVzSGFuZGxlciAgICAgICAgICBoYW5kbGVyICAgICAgICAgPSBuZXcgQW50U3RhdHVzSGFuZGxlcigpOwotICAgICAKLQkgICBlbnZpcm9ubWVudF8gPSBuZXcgQW50RW52aXJvbm1lbnQodGhpcywgcmVzb3VyY2VDb250ZXh0LCBoYW5kbGVyLCBwcm9wZXJ0aWVzKTsKLSAgICAgICAKLQkgICAvLyBjb25zdHJ1Y3QgZGF0YSBtYW5hZ2VyIGZvciBtYWludGFpbmluZyBzdGF0ZSBhY3Jvc3Mgb3BlcmF0aW9ucwotCSAgIERhdGFGbG93TWFuYWdlciBkYXRhTWFuYWdlciA9IG5ldyBEYXRhRmxvd01hbmFnZXIoIG5ldyBEYXRhTWFwcGluZ1JlZ2lzdHJ5SW1wbCgpLCBlbnZpcm9ubWVudF8gKTsKLSAgICAgICAKLQkgICAvLyAgc2V0IHVwIG9wZXJhdGlvbiBmcmFnbWVudHMgLSBjb25kaXRpb25hbCBvbiBvcHRpb25zIGJ5IHVzZXIuLi4gc2VydmljZSBvciBjbGllbnQKLQkgICAvLyAgYWxzbyBuZWVkIHRvIGluaXRpYWxpemUgdGhlICJzZWxlY3Rpb24iIG9yIGlucHV0IGZpbGUgKFdTREwsIEphdmEpIGhlcmUKLQkgICAKLQkgICBDb21tYW5kRnJhZ21lbnQgcm9vdEZyYWdtZW50ID0gIGVudmlyb25tZW50Xy5nZXRSb290Q29tbWFuZEZyYWdtZW50KCk7Ci0JICAgCi0JICAgaWYgKHJvb3RGcmFnbWVudCAhPSBudWxsKQotCSAgIHsJCSAgIAotCSAgICAgICAvL2NvbnN0cnVjdCB0aGUgZW5naW5lIC0gbWFuYWdlcyBleGVjdXRpb24gb2Ygb3BlcmF0aW9ucwotCQkgICBjcmVhdGVPcGVyYXRpb25NYW5hZ2VyKCByb290RnJhZ21lbnQsIGRhdGFNYW5hZ2VyLCBlbnZpcm9ubWVudF8gKTsKLQkJICAgCi0JCSAgIERhdGFNYXBwaW5nUmVnaXN0cnlJbXBsICAgIGRhdGFSZWdpc3RyeV8gICA9IG5ldyBEYXRhTWFwcGluZ1JlZ2lzdHJ5SW1wbCgpOwotCQkgICByb290RnJhZ21lbnQucmVnaXN0ZXJEYXRhTWFwcGluZ3MoZGF0YVJlZ2lzdHJ5Xyk7CQkgICAKLQkgICB9Ci0JICAgZWxzZSAgLy9wcm9ibGVtIGdldHRpbmcgdGhlIHJvb3QgZnJhZ21lbnQgLSBzY2VuYXJpbyB0eXBlIGlzIGxpa2VseSBtaXNzaW5nCi0JICAgewotICAgICAgIGVycm9yTWVzc2FnZV8gPSBFbnZpcm9ubWVudE1lc3NhZ2VzLk1TR19FUlJPUl9BTlRfU0NFTkFSSU9fVFlQRTsKLQkJICAgaGFuZGxlci5yZXBvcnRFcnJvcihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsICJ3c19hbnQiLCA5OTk5LCBlcnJvck1lc3NhZ2VfLCBudWxsKSk7Ci0JCSAgIHJldHVybjsKLQkgICB9Ci0JICAgICAgCi0JICAgLy9yZWFkeSB0byBzdGFydCBydW5uaW5nIG9wZXJhdGlvbnMKLQkgICBJUHJvZ3Jlc3NNb25pdG9yIG51bGxNb25pdG9yID0gbmV3IE51bGxQcm9ncmVzc01vbml0b3IoKTsKLQkgICAKLSAJICAgb3BlcmF0aW9uTWFuYWdlcl8ubW92ZUZvcndhcmRUb05leHRTdG9wKCBudWxsTW9uaXRvciApOwotCi0gICAgIElTdGF0dXMgbGFzdFN0YXR1cyA9IG9wZXJhdGlvbk1hbmFnZXJfLmdldExhc3RTdGF0dXMoKTsKLSAgICAgCi0gCSAgIGlmICggIWxhc3RTdGF0dXMuaXNPSygpICkgCi0gICAgIHsKLSAgICAgICBlcnJvck1lc3NhZ2VfID0gbGFzdFN0YXR1cy5nZXRNZXNzYWdlKCk7Ci0gCQkgICBvcGVyYXRpb25NYW5hZ2VyXy51bmRvVG9MYXN0U3RvcCggbnVsbE1vbml0b3IgKTsKLSAgICAgfQotICAgfQotICAgCi0gICBwdWJsaWMgU3RyaW5nIGdldEVycm9yTWVzc2FnZSgpCi0gICB7Ci0gICAgIHJldHVybiBlcnJvck1lc3NhZ2VfOyAgCi0gICB9Ci0gICAKLSAgIHByaXZhdGUgdm9pZCBjcmVhdGVPcGVyYXRpb25NYW5hZ2VyKENvbW1hbmRGcmFnbWVudCBmcmFnLCBEYXRhRmxvd01hbmFnZXIgbWdyLCBBbnRFbnZpcm9ubWVudCBlbnYpCi0gICB7CQkgICAKLQkJICAgb3BlcmF0aW9uTWFuYWdlcl8gPSBuZXcgQW50T3BlcmF0aW9uTWFuYWdlcihmcmFnLCBtZ3IsIGVudik7CQkJCi0JCi0JCSAgIG9wZXJhdGlvbk1hbmFnZXJfLnNldFBlZWtGcmFnbWVudExpc3RlbmVyKCAKLQkJCQkgICAgICBuZXcgRnJhZ21lbnRMaXN0ZW5lcigpCi0JCQkJICAgICAgewotCQkJCSAgICAgICAgcHVibGljICBib29sZWFuIG5vdGlmeSggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICkKLQkJCQkgICAgICAgIHsKLQkJCQkgICAgICAgICAgcmV0dXJuIHBlZWtGcmFnbWVudCggZnJhZ21lbnQgKTsKLQkJCQkgICAgICAgIH0KLQkJCQkgICAgICB9ICk7ICAKLQkJCQkgICAgICAgICAgICAgICAgICAKLQkJICAgb3BlcmF0aW9uTWFuYWdlcl8uc2V0TmV4dEZyYWdtZW50TGlzdGVuZXIoIAotCQkJCSAgICAgIG5ldyBGcmFnbWVudExpc3RlbmVyKCkKLQkJCQkgICAgICB7Ci0JCQkJICAgICAgICBwdWJsaWMgIGJvb2xlYW4gbm90aWZ5KCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgKQotCQkJCSAgICAgICAgewotCQkJCSAgICAgICAgICByZXR1cm4gbmV4dEZyYWdtZW50KCBmcmFnbWVudCApOwotCQkJCSAgICAgICAgfQotCQkJCSAgICAgIH0gKTsgIAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkJICAgb3BlcmF0aW9uTWFuYWdlcl8uc2V0VW5kb0ZyYWdtZW50TGlzdGVuZXIoCi0JCQkJICAgICAgbmV3IEZyYWdtZW50TGlzdGVuZXIoKQotCQkJCSAgICAgIHsKLQkJCQkgICAgICAgIHB1YmxpYyBib29sZWFuIG5vdGlmeSggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICkKLQkJCQkgICAgICAgIHsKLQkJCQkgICAgICAgICAgcmV0dXJuIHVuZG9GcmFnbWVudCggZnJhZ21lbnQgKTsKLQkJCQkgICAgICAgIH0KLQkJCQkgICAgICB9ICk7Ci0gICAgICAgCi0gICAgICAgb3BlcmF0aW9uTWFuYWdlcl8uc2V0QWZ0ZXJFeGVjdXRlRnJhZ21lbnRMaXN0ZW5lcigKLSAgICAgICAgICAgIG5ldyBGcmFnbWVudExpc3RlbmVyKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gbm90aWZ5KCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFmdGVyRXhlY3V0ZU5leHRGcmFnbWVudCggZnJhZ21lbnQgKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSApOwotICAgfQotCQotCXByb3RlY3RlZCBDb21tYW5kTWFuYWdlciBnZXRPcGVyYXRpb25NYW5hZ2VyKCkKLQl7Ci0JCXJldHVybiBvcGVyYXRpb25NYW5hZ2VyXzsKLQl9Ci0JCi0JLyoqCi0JICAgKiBUaGUgQ29tbWFuZEZyYWdtZW50RW5naW5lIGNhbGxzIHRoaXMgbWV0aG9kIHdoZW4gaXQgaXMgcGVla2luZyBmb3J3YXJkCi0JICAgKiBpbiB0aGUgZnJhZ21lbnRzLiAgV2hlbiBwZWVraW5nIGZvcndhcmQgdGhlIGNvbW1hbmQgc3RhY2sgc3RhdGUgaW4gdGhlCi0JICAgKiBlbmdpbmUgaXMgbm90IGNoYW5nZXMuCi0JICAgKiAKLQkgICAqIAotCSAgICogQHBhcmFtIGZyYWdtZW50IHRoZSBmcmFnbWVudCB0aGF0IGl0IGlzIHBlZWtpbmcgYXQuCi0JICAgKiBAcmV0dXJuIEluZGljYXRlcyB3aGV0aGVyIHBlZWtpbmcgc2hvdWxkIHN0b3Agb3Igbm90LgotCSAgICovCi0JICBwcm90ZWN0ZWQgYm9vbGVhbiBwZWVrRnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0JICB7ICAgICAKLQkgICAgcmV0dXJuIHRydWU7Ci0JICB9Ci0JICAKLQkgIC8qKgotCSAgICogVGhlIENvbW1hbmRGcmFnbWVudEVuZ2luZSBjYWxscyB0aGlzIG1ldGhvZCB3aGVuIGl0IGlzIG1vdmluZyBmb3J3YXJkCi0JICAgKiBpbiB0aGUgZnJhZ21lbnRzLiAgIFdoZW4gbW92aW5nIGZvcndhcmQgdGhlIGNvbW1hbmQgc3RhY2sgc3RhdGUgaXMgc2F2ZWQKLQkgICAqIGF0IGVhY2ggZnJhZ21lbnQgaXMgdHJhdmVyc2VkLgotCSAgICogCi0JICAgKiBAcGFyYW0gZnJhZ21lbnQgdGhlIGZyYWdtZW50IHRoYXQgaXMgYmVpbmcgdHJhdmVyc2VkLgotCSAgICogQHJldHVybiBpbmRpY2F0ZXMgaWYgdGhlIGZvcndhcmQgdHJhdmVyc2FsIHNob3VsZCBjb250aW51ZS4gIAotCSAgICovCi0JICBwcm90ZWN0ZWQgYm9vbGVhbiBuZXh0RnJhZ21lbnQoIENvbW1hbmRGcmFnbWVudCBmcmFnbWVudCApCi0JICB7ICAgICAKLQkgICAgcmV0dXJuIHRydWU7Ci0JICB9Ci0JICAKLQkgIC8qKgotCSAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZvciBlYWNoIGZyYWdtZW50IHdoZW4gdGhlIGNvbW1hbmQgZW5naW5lIGlzIHVud2luZGluZwotCSAgICogaXRzIHN0YWNrIGR1cmluZyBhbiB1bmRvIG9wZXJhdGlvbi4KLQkgICAqIAotCSAgICogQHBhcmFtIGZyYWdtZW50ICB0aGUgZnJhZ21lbnQgYmVpbmcgdW5kb25lLgotCSAgICogQHJldHVybiByZXR1cm5zIHRydWUgaWYgdGhlIHVuZG8gcHJvY2VzcyBzaG91bGQgY29udGludWUuCi0JICAgKi8KLQkgIHByb3RlY3RlZCBib29sZWFuIHVuZG9GcmFnbWVudCggQ29tbWFuZEZyYWdtZW50IGZyYWdtZW50ICkKLQkgIHsgIAkgIAkKLQkgICAgcmV0dXJuIHRydWU7Ci0JICB9Ci0gICAgCi0gICAgcHJvdGVjdGVkIGJvb2xlYW4gYWZ0ZXJFeGVjdXRlTmV4dEZyYWdtZW50KCBDb21tYW5kRnJhZ21lbnQgZnJhZ21lbnQgKQotICAgIHsKLSAgICAgIGJvb2xlYW4gICAgICAgICAgIGNvbnRpbnVlRXhlY3V0ZSA9IHRydWU7Ci0gICAgICBCYXNlU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyICAgPSAoQmFzZVN0YXR1c0hhbmRsZXIpZW52aXJvbm1lbnRfLmdldFN0YXR1c0hhbmRsZXIoKTsKLSAgICAgIElTdGF0dXMgICAgICAgICAgIGNvbW1hbmRTdGF0dXMgICA9IG9wZXJhdGlvbk1hbmFnZXJfLmdldExhc3RTdGF0dXMoKTsKLSAgICAgIElTdGF0dXMgICAgICAgICAgIGhhbmRsZXJTdGF0dXMgICA9IHN0YXR1c0hhbmRsZXIuZ2V0U3RhdHVzKCk7Ci0gICAgICAKLSAgICAgIGlmKCBjb21tYW5kU3RhdHVzLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUiAmJgotICAgICAgICAgIGhhbmRsZXJTdGF0dXMuZ2V0U2V2ZXJpdHkoKSAhPSBJU3RhdHVzLkVSUk9SICkKLSAgICAgIHsKLSAgICAgICAgLy8gVGhlIGNvbW1hbmQgcmV0dXJuZWQgYW4gZXJyb3Igc3RhdHVzIGZvciB0aGUgZW5naW5lIHRvIHN0b3AsCi0gICAgICAgIC8vIGJ1dCB0aGUgc3RhdHVzIGhhbmRsZXIgZGlkIG5vdCBoYXZlIHJlcG9ydCBhbmQgZXJyb3IuCi0gICAgICAgIC8vIFRoZXJlZm9yZSwgd2Ugd2lsbCByZXBvcnQgdGhpcyBzdGF0dXMgcmV0dXJuZWQgYnkgdGhlIGNvbW1hbmQKLSAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBtZXNzYWdlIHRvIGRpc3BsYXkuICAKLSAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IGNvbW1hbmRTdGF0dXMuZ2V0TWVzc2FnZSgpOwotICAgICAgICAKLSAgICAgICAgaWYoIGVycm9yTWVzc2FnZSAhPSBudWxsICYmIGVycm9yTWVzc2FnZS5sZW5ndGgoKSA+IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgc3RhdHVzSGFuZGxlci5yZXBvcnRFcnJvciggY29tbWFuZFN0YXR1cyApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKCBjb21tYW5kU3RhdHVzLmdldFNldmVyaXR5KCkgIT0gSVN0YXR1cy5FUlJPUiAmJgotICAgICAgICAgICAgICAgaGFuZGxlclN0YXR1cy5nZXRTZXZlcml0eSgpID09IElTdGF0dXMuRVJST1IgKQotICAgICAgewotICAgICAgICAvLyBUaGUgbGFzdCBjb21tYW5kIGRpZG4ndCByZXR1cm4gYW4gZXJyb3IsIGJ1dCB0aGUgc3RhdHVzIGhhbmRsZXIKLSAgICAgICAgLy8gZGlkIHJlcG9ydCBhbmQgZXJyb3IuICBUaGVyZWZvcmUsIHdlIHNob3VsZCBzdG9wLgotICAgICAgICBlcnJvck1lc3NhZ2VfID0gaGFuZGxlclN0YXR1cy5nZXRNZXNzYWdlKCk7Ci0gICAgICAgIGNvbnRpbnVlRXhlY3V0ZSA9IGZhbHNlOyAgIAotICAgICAgfQotICAgICAgCi0gICAgICByZXR1cm4gY29udGludWVFeGVjdXRlOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvYW50L0FudEVudmlyb25tZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2FudC9BbnRFbnZpcm9ubWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjEyNWVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvYW50L0FudEVudmlyb25tZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1ODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTIzICAgMTMzNzE0IGpvYW5AY2EuaWJtLmNvbSAtIEpvYW4gSGFnZ2FydHkKLSAqIDIwMDYwNzI2ICAgMTUxNjE0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDcwMzE0ICAgMTc2ODg2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuYW50OwotCi1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7Ci1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOwotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1vZGlmaWVyOwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LkVudmlyb25tZW50TWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuQ29tbWFuZE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5UcmFuc2llbnRSZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5CZWFuTW9kaWZpZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5DbGFzc0VudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5JRWNsaXBzZVN0YXR1c0hhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnBsdWdpbi5FbnZQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLS8qKgotICogCi0gKiBBY2Nlc3MgdG8gc3RhdHVzIGhhbmRsZXIsIGxvZywgcmVzb3VyY2UgY29udGV4dCBhbmQgY29tbWFuZCBtYW5hZ2VyLiAgCi0gKiBJbml0aWFsaXplcyBkYXRhIGZvciBjb21tYW5kcyBmcm9tIEFudCBwcm9wZXJ0eSBmaWxlcyBiYXNlZCBvbiBhbnREYXRhTWFwcGluZyBleHRlbnNpb25zLiAKLSAqIAotICogQGF1dGhvciBqb2FuCi0gKgotICovCi0KLXB1YmxpYyBjbGFzcyBBbnRFbnZpcm9ubWVudCBleHRlbmRzIEVjbGlwc2VFbnZpcm9ubWVudHsKLQkKLQlwcml2YXRlIEhhc2h0YWJsZSBhbnRQcm9wZXJ0aWVzXzsKLQlwcml2YXRlIEhhc2h0YWJsZSBvcGVyYXRpb25EYXRhUmVjb3JkXyA9IG5ldyBIYXNodGFibGUoKTsKLQlwcml2YXRlIGJvb2xlYW4gbWFwcGluZ0NvbXBsZXRlXzsKLQlwcml2YXRlIENsYXNzRW50cnkgY2xhc3NFbnRyeTsJCi0JCQotCS8vIGV4dGVuc2lvblBvaW50IG5hbWVzIGFuZCBuYW1lc3BhY2UKLQlwcml2YXRlIHN0YXRpYyBTdHJpbmcgTUFQUEVSX0VYVF9QVCA9ICJhbnREYXRhTWFwcGluZyI7ICAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIFNDRU5BUklPX0VYVF9QVCA9ICJhbnRTY2VuYXJpbyI7ICAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIEVYVF9QVF9OQU1FU1BBQ0UgPSAib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52IjsgLy8vLyROT04tTkxTLTEkCi0JCi0JLy8gYW50RGF0YU1hcHBpbmcgZXh0ZW5zaW9uIHBvaW50IGF0dHJpYnV0ZXMKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUFQUEVSX09QRVJBVElPTl9BVFRSSUJVVEU9ICJvcGVyYXRpb24iOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1BUFBFUl9LRVlfQVRUUklCVVRFPSAia2V5IjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNQVBQRVJfUFJPUEVSVFlfQVRUUklCVVRFPSAicHJvcGVydHkiOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1BUFBFUl9UUkFOU0ZPUk1fQVRUUklCVVRFPSAidHJhbnNmb3JtIjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNQVBQRVJfUkVRVUlSRURfQVRUUklCVVRFPSAicmVxdWlyZWQiOyAvLyROT04tTkxTLTEkCi0JCQotCS8vIGFudFNjZW5hcmlvIGV4dGVuc2lvbiBwb2ludCBhdHRyaWJ1dGVzCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5BUklPX1RZUEVfQVRUUklCVVRFID0gInNjZW5hcmlvVHlwZSI7IC8vJE5PTi1OTFMtMSQKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkFSSU9fQ0xBU1NfQVRUUklCVVRFID0gImNsYXNzIjsgLy8kTk9OLU5MUy0xJAotCi0JLy8gQW50IHByb3BlcnR5IElEcwotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBWRVJCT1NFX1BST1BFUlRZID0gIlZlcmJvc2UiOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE9WRVJXUklURV9QUk9QRVJUWSA9ICJPdmVyd3JpdGVGaWxlc0VuYWJsZWQiOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENSRUFURUZPTERFUl9QUk9QRVJUWSA9ICJDcmVhdGVGb2xkZXJzRW5hYmxlZCI7IC8vJE5PTi1OTFMtMSQKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0hFQ0tPVVRfUFJPUEVSVFkgPSAiQ2hlY2tvdXRGaWxlc0VuYWJsZWQiOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5BUklPX1RZUEVfUFJPUEVSVFkgPSAiU2NlbmFyaW9UeXBlIjsgLy8kTk9OLU5MUy0xJAotCQotICAgIHByaXZhdGUgQW50Q29udHJvbGxlciBjb250cm9sbGVyXzsKLQkKLQlwdWJsaWMgQW50RW52aXJvbm1lbnQoQW50Q29udHJvbGxlciBjb250cm9sbGVyLCBUcmFuc2llbnRSZXNvdXJjZUNvbnRleHQgY29udGV4dCwgSUVjbGlwc2VTdGF0dXNIYW5kbGVyIGhhbmRsZXIsIEhhc2h0YWJsZSBwcm9wZXJ0aWVzKQotCXsKLQkgICBzdXBlcihjb250cm9sbGVyLmdldE9wZXJhdGlvbk1hbmFnZXIoKSwgY29udGV4dCwgaGFuZGxlcik7Ci0JICAgYW50UHJvcGVydGllc18gPSBwcm9wZXJ0aWVzOwkKLQkgICBjb250cm9sbGVyXyA9IGNvbnRyb2xsZXI7CQotCSAgIHNldENvbnRleHQoIGNvbnRleHQgKTsKLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIHNldENvbnRleHQoVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0IGNvbnRleHQpIAotCXsKLQkgIEJvb2xlYW4gb3ZlcndyaXRlU2V0ICAgID0gZ2V0Qm9vbGVhblByb3BlcnR5KCBPVkVSV1JJVEVfUFJPUEVSVFkgKTsKLQkgIEJvb2xlYW4gY3JlYXRlZm9sZGVyU2V0ID0gZ2V0Qm9vbGVhblByb3BlcnR5KCBDUkVBVEVGT0xERVJfUFJPUEVSVFkgKTsKLQkgIEJvb2xlYW4gY2hlY2tvdXRTZXQgICAgID0gZ2V0Qm9vbGVhblByb3BlcnR5KCBDSEVDS09VVF9QUk9QRVJUWSApOwotCSAgCi0JICBpZiggb3ZlcndyaXRlU2V0ICE9IG51bGwgKSBjb250ZXh0LnNldE92ZXJ3cml0ZUZpbGVzRW5hYmxlZCggb3ZlcndyaXRlU2V0LmJvb2xlYW5WYWx1ZSgpICk7Ci0JICBpZiggY3JlYXRlZm9sZGVyU2V0ICE9IG51bGwgKSBjb250ZXh0LnNldENyZWF0ZUZvbGRlcnNFbmFibGVkKCBjcmVhdGVmb2xkZXJTZXQuYm9vbGVhblZhbHVlKCkgKTsKLQkgIGlmKCBjaGVja291dFNldCAhPSBudWxsICkgY29udGV4dC5zZXRDaGVja291dEZpbGVzRW5hYmxlZCggY2hlY2tvdXRTZXQuYm9vbGVhblZhbHVlKCkgKTsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiB2ZXJib3NlKCkKLQl7Ci0JICBCb29sZWFuIHJlc3VsdCA9IGdldEJvb2xlYW5Qcm9wZXJ0eSggVkVSQk9TRV9QUk9QRVJUWSApOwotCSAgCi0JICByZXR1cm4gcmVzdWx0ID09IG51bGwgPyBmYWxzZSA6IHJlc3VsdC5ib29sZWFuVmFsdWUoKTsKLQl9Ci0JCi0JcHVibGljIEJvb2xlYW4gZ2V0Qm9vbGVhblByb3BlcnR5KCBTdHJpbmcgcHJvcGVydHkgKQotCXsKLQkgIFN0cmluZyAgdmFsdWUgID0gZ2V0UHJvcGVydHkoIHByb3BlcnR5ICk7CQotCSAgQm9vbGVhbiByZXN1bHQgPSBudWxsOwotCQkgIAotCSAgaWYoIHZhbHVlICE9IG51bGwgKQotCSAgewotCQl2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7Ci0JCXJlc3VsdCA9IG5ldyBCb29sZWFuKCB2YWx1ZS5lcXVhbHMoICJ0cnVlIikgKTsKLQkgIH0KLQkgIAotCSAgcmV0dXJuIHJlc3VsdDsKLQl9Ci0JCi0JLy8gcmV0dXJucyBTdHJpbmcgc2luY2UgdGhlIHByb3BlcnR5IHRhYmxlIGJ1aWx0IGJ5IEFudCBpcyBwcm9wZXJ0eSB2YWx1ZSBwYWlycyB3aGVyZSB0aGUgdmFsdWUgaXMgYSBTdHJpbmcKLQlwcml2YXRlIFN0cmluZyBnZXRQcm9wZXJ0eShTdHJpbmcga2V5KQotCXsKLQkJT2JqZWN0IHByb3BlcnR5ID0gYW50UHJvcGVydGllc18uZ2V0KGtleSk7Ci0JCWlmIChwcm9wZXJ0eSAhPSBudWxsICYmICghcHJvcGVydHkudG9TdHJpbmcoKS5lcXVhbHMoIiIpKSkKLQkJCXJldHVybiBwcm9wZXJ0eS50b1N0cmluZygpLnRyaW0oKTsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCQotCS8vIGNhbGwgZnJvbSBlbmdpbmUgcHJpb3IgdG8gZXhlY3V0aW5nIHRoZSBvcGVyYXRpb24gCi0JcHVibGljIElTdGF0dXMgaW5pdE9wZXJhdGlvbkRhdGEoQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gb3ApCi0JewotCQkvL2NoZWNrIHRvIHNlZSBpZiBkYXRhIGhhcyBhbHJlYWR5IGJlZW4gcHJpbWVkIGZvciB0aGlzIG9wZXJhdGlvbiAKLQkJU3RyaW5nIHF1YWxpZmllZENsYXNzTmFtZSA9IG9wLmdldENsYXNzKCkuZ2V0TmFtZSgpOwotCQlpZiAob3BlcmF0aW9uRGF0YVJlY29yZF8uZ2V0KHF1YWxpZmllZENsYXNzTmFtZSkgPT0gbnVsbCkKLQkJewotCQkJY2xhc3NFbnRyeSA9IG5ldyBDbGFzc0VudHJ5KCk7Ci0JCQkKLQkJCXRyeSB7Ci0JCQkJLy9leHRlbnNpb24gbG9va3VwIGZvciB0aGUgYmVhbiAtIG1heSBiZSBtb3JlIHRoYW4gb25lIHByb3BlcnR5IGZvciBpdAotCQkJCUVudW1lcmF0aW9uIG9wZXJhdGlvbkRhdGEgPSBnZXRNYXBwaW5nRXh0ZW5zaW9ucyhvcCk7CQkJCQkKLQkJCQljbGFzc0VudHJ5LnNldHRlckxpc3RfPSBnZXRTZXR0ZXJMaXN0KG9wKTsJCQotCQkJCXdoaWxlIChvcGVyYXRpb25EYXRhLmhhc01vcmVFbGVtZW50cygpKQotCQkJCXsJCQkJCi0JCQkJCVByb3BlcnR5RGF0YUhvbGRlciBtYXBwaW5nID0gKFByb3BlcnR5RGF0YUhvbGRlcilvcGVyYXRpb25EYXRhLm5leHRFbGVtZW50KCk7Ci0JCQkJCQkKLQkJCQkJICAgIG1hcHBpbmdDb21wbGV0ZV8gPSBmYWxzZTsKLQkJCQkJCVN0cmluZyBwcm9wZXJ0eSA9IG1hcHBpbmcucHJvcGVydHlfOwotCQkJCQkJU3RyaW5nIHNldHRlck1ldGhvZE5hbWUgPSBjcmVhdGVTZXR0ZXJOYW1lKHByb3BlcnR5KTsJCQotCQkJCQkJCQkJCQkJCi0JCQkJCQlpbnQgc3RlcCA9IDE7Ci0JCQkJCQl3aGlsZSAoIW1hcHBpbmdDb21wbGV0ZV8pCi0JCQkJCQl7CQkJCQkJCQotCQkJCQkJICAgc3dpdGNoIChzdGVwKSB7Ci0JCQkJCQkJY2FzZSAxOgotCQkJCQkJCQltYXBwaW5nQ29tcGxldGVfID0gdHJhbnNmb3JtQW5kU2V0KG1hcHBpbmcsIHNldHRlck1ldGhvZE5hbWUpOwkJCQkJCQkJCi0JCQkJCQkJCWJyZWFrOwkJCQkJCQkJCi0JCQkJCQkJY2FzZSAyOgotCQkJCQkJCQltYXBwaW5nQ29tcGxldGVfID0gY2FsbFNldHRlcihtYXBwaW5nLm9wZXJhdGlvbl8sIG1hcHBpbmcudmFsdWVfLCBzZXR0ZXJNZXRob2ROYW1lKTsKLQkJCQkJCQkJYnJlYWs7Ci0JCQkJCQkJCQotCQkJCQkJCWNhc2UgMzoKLQkJCQkJCQkJbWFwcGluZ0NvbXBsZXRlXyA9IGNhbGxQcmltaXRpdmVTZXR0ZXIobWFwcGluZyk7Ci0JCQkJCQkJCWJyZWFrOwotCQkJCQkJCQotCQkJCQkJCWNhc2UgNDoKLQkJCQkJCQkJbWFwcGluZ0NvbXBsZXRlXyA9IGNhbGxTZXR0ZXJDb25zdHJ1Y3RvcihtYXBwaW5nKTsKLQkJCQkJCQkJYnJlYWs7Ci0JCQkJCQkJCQotCQkJCQkJCWRlZmF1bHQ6Ci0JCQkJCQkJCW1hcHBpbmdDb21wbGV0ZV8gPSB0cnVlOwotCQkJCQkJCQlicmVhazsJCQkJCQkJCQotCQkJCQkJCX0KLQkJCQkJCSAgIHN0ZXArKzsKLQkJCQkJCX0JCQkJCQotCQkJCSAgfQkJCQkKLSAgICAgICAgICAgICAgICAvL2FkZCBvcGVyYXRpb24gdG8gdGhlIHJlY29yZCAtIG5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBhZ2Fpbi4uLgotICAgICAgICAgICAgICAgIG9wZXJhdGlvbkRhdGFSZWNvcmRfLnB1dChxdWFsaWZpZWRDbGFzc05hbWUsICIiKTsKLQkJCX0JCQkKLQkJCWNhdGNoIChFeGNlcHRpb24gZSkKLQkJCXsJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0JCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7Ci0JCQl9Ci0KLQkJfQotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGVzIHNldHRlciBuYW1lIGJhc2VkIG9uIHRoZSBwcm9wZXJ0eSBwYXNzZWQgaW4uICBJZiB0aGUgCi0JICogcHJvcGVydHkgaGFzIGFueSBsZWFkaW5nIHF1YWxpZmllcnMgdGhleSBhcmUgc3RyaXBwZWQgb2ZmLgotCSAqIFRoZSBwcm9wZXJ0eSBpcyBjYXBpdGFsaXplZCBhbmQgc2V0IGlzIHByZXBlbmRlZC4KLQkgKiBAcGFyYW0gcHJvcGVydHkgIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IHJlcXVpcmVzIGEgc2V0dGVyLgotCSAqIEByZXR1cm4KLQkgKi8JCi0JcHJpdmF0ZSBTdHJpbmcgY3JlYXRlU2V0dGVyTmFtZShTdHJpbmcgcHJvcGVydHkpCi0JewkJCi0JCXdoaWxlIChwcm9wZXJ0eS5pbmRleE9mKCIuIik+PTApCi0JCXsKLQkJCXByb3BlcnR5PXByb3BlcnR5LnN1YnN0cmluZyhwcm9wZXJ0eS5pbmRleE9mKCIuIikrMSk7Ci0JCX0JCSAKLQkJIFN0cmluZyBmaXJzdENoYXIgPSBwcm9wZXJ0eS5zdWJzdHJpbmcoMCwxKTsKLQkJIGZpcnN0Q2hhciA9IGZpcnN0Q2hhci50b1VwcGVyQ2FzZSgpOwotCQkgcHJvcGVydHkgPSBmaXJzdENoYXIgKyBwcm9wZXJ0eS5zdWJzdHJpbmcoMSk7ICAKLQkJIFN0cmluZyBzZXR0ZXJOYW1lID0gInNldCIgKyBwcm9wZXJ0eTsJCSAKLQkJIHJldHVybiBzZXR0ZXJOYW1lOwkJIAotCX0JCi0JCi0JICAgLyoqCi0JICAgICogUmV0cmlldmVzIGV4dGVuc2lvbnMgZm9yIHRoZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYgYW50RGF0YU1hcHBpbmcKLQkgICAgKiBleHRlbnNpb24gcG9pbnQuICBFeHRyYWN0cyB0aG9zZSB0aGF0IHdpdGggY2xhc3MgYXR0cmlidXRlIHZhbHVlcyB0aGF0IG1hdGNoIG9wZXJhdGlvbk5hbWUuCi0JICAgICogQWxsIG1hcHBpbmdzIGFyZSBjb252ZXJ0ZWQgdG8gUHJvcGVydHlEYXRhSG9sZGVyIG9iamVjdHMuCi0JICAgICogQW55IG06MSBBbnQga2V5IHRvIHByb3BlcnR5IG1hcHBpbmdzIGFyZSBjb2xsZWN0ZWQgaW50byBhIGtleS12YWx1ZSBtYXAgd2l0aGluCi0JICAgICogYSBzaW5nbGUgUHJvcGVydHlEYXRhSG9sZGVyLiAgCi0JICAgICogQHBhcmFtIG9wZXJhdGlvbk5hbWUgVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiB0aGF0IGlzIGJlaW5nIGluaXRpYWxpemVkLgotCSAgICAqIEByZXR1cm4gQSBjb2xsZWN0aW9uIG9mIFByb3BlcnR5RGF0YUhvbGRlciBvYmplY3RzLiBSZXR1cm5zIG51bGwgaWYgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMgbWF0Y2hpbmcgdGhlIG9wZXJhdGlvbk5hbWUuCi0JICAgICovCi0JICAgcHJpdmF0ZSBFbnVtZXJhdGlvbiBnZXRNYXBwaW5nRXh0ZW5zaW9ucyhBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiBvcGVyYXRpb24pIHRocm93cyBDb3JlRXhjZXB0aW9uCi0JICAgewkgICAJCSAgIAotCQkgICBTdHJpbmcgb3BlcmF0aW9uTmFtZSA9IG9wZXJhdGlvbi5nZXRDbGFzcygpLmdldE5hbWUoKTsKLQkJICAgLy9nbyB0byBleHQgcmVnaXN0cnkgYW5kIGdldCBhbGwgYW50TWFwcGluZyBleHRlbnNpb25zCi0JCSAgIElFeHRlbnNpb25SZWdpc3RyeSByZWcgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotCQkgICBJRXh0ZW5zaW9uUG9pbnQgZXh0UHQgPSByZWcuZ2V0RXh0ZW5zaW9uUG9pbnQoRVhUX1BUX05BTUVTUEFDRSwgTUFQUEVSX0VYVF9QVCk7Ci0JCSAgIEhhc2h0YWJsZSBkYXRhVGFibGUgPSBuZXcgSGFzaHRhYmxlKDI1KTsKLQkJICAgCi0JCSAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGVsZW1lbnRzID0gZXh0UHQuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzKCk7Ci0JCSAgIAotCQkgICBmb3IgKGludCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0JCQkKLQkJCSBJQ29uZmlndXJhdGlvbkVsZW1lbnQgY2UgPSBlbGVtZW50c1tpXTsKLQkJCSBPYmplY3Qgb2JqID0gY2UuZ2V0QXR0cmlidXRlKE1BUFBFUl9PUEVSQVRJT05fQVRUUklCVVRFKTsKLQkJCSAvLyBsb29rIGZvciBtYXBwaW5ncyBmb3IgdGhpcyBvcGVyYXRpb24KLQkJCSBpZiAob2JqLmVxdWFscyhvcGVyYXRpb25OYW1lKSkKLQkJCSB7CQkJCSAKLQkJCQkgU3RyaW5nIGtleSA9IGNlLmdldEF0dHJpYnV0ZShNQVBQRVJfS0VZX0FUVFJJQlVURSk7Ci0JCQkJIFN0cmluZyB2YWx1ZSA9IGdldFByb3BlcnR5KGtleSk7Ci0JCQkJIAotCQkJCSAvL2NoZWNrIHRvIHNlZSBpZiB0aGUgcHJvcGVydHkgZm9yIHRoaXMgZXh0ZW5zaW9uIGlzIGFscmVhZHkgaW4gdGhlIGRhdGEgdGFibGUKLQkJCQkgLy8gaWYgc28sIHRoZXJlIGlzIGEgbToxIG1hcHBpbmcKLQkJCQkgaWYgKHZhbHVlICE9IG51bGwpICAvL29ubHkgZG8gYSBtYXBwaW5nIGlmIHRoZXJlIGlzIGFuIEFudCBwcm9wZXJ0eSB2YWx1ZSBwYXNzZWQgaW4uLi4KLQkJCQkgewotCQkJCQotCQkJCQkgU3RyaW5nIHByb3BlcnR5ID0gY2UuZ2V0QXR0cmlidXRlKE1BUFBFUl9QUk9QRVJUWV9BVFRSSUJVVEUpOwotCQkJCQkgT2JqZWN0IHRyYW5zZm9ybSA9IG51bGw7Ci0JCQkJCSB0cnkKLQkJCQkJIHsKLQkJCQkJCSAvL2NoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBhbiB0cmFuc2Zvcm0gYXR0cmlidXRlIHByb3ZpZGVkCi0JCQkJCQkgLy8gIGlmIHNvLCBnZXQgdGhlIGNsYXNzIHRvIGRvIHRoZSB0cmFuc2Zvcm1hdGlvbgotCQkJCQkJIGlmIChjZS5nZXRBdHRyaWJ1dGUoTUFQUEVSX1RSQU5TRk9STV9BVFRSSUJVVEUpIT0gbnVsbCkKLQkJCQkJCQkgdHJhbnNmb3JtID0gY2UuY3JlYXRlRXhlY3V0YWJsZUV4dGVuc2lvbihNQVBQRVJfVFJBTlNGT1JNX0FUVFJJQlVURSk7CSAKLQkJCQkJIH0KLQkJCQkJIGNhdGNoIChDb3JlRXhjZXB0aW9uIGNleCkgewotCQkJCQkgICBTdGF0dXMgZXJyb3JTdGF0dXMgPSBuZXcgU3RhdHVzKFN0YXR1cy5FUlJPUiwgIndzX2FudCIsIDUwOTIsIGNleC5nZXRNZXNzYWdlKCksIGNleCk7Ci0JCQkJCSAgIGdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihlcnJvclN0YXR1cyk7Ci0JCQkJCSAgIGdldExvZygpLmxvZyhJTG9nLkVSUk9SLCAid3NfYW50IiwgNTA5MiwgdGhpcywgImdldE1hcHBpbmdFeHRlbnNpb25zIiwgRW52aXJvbm1lbnRNZXNzYWdlcy5iaW5kKEVudmlyb25tZW50TWVzc2FnZXMuTVNHX0VSUk9SX0FOVF9EQVRBX1RSQU5TRk9STSwga2V5LCB0cmFuc2Zvcm0pKTsKLQkJCQkJICAgdGhyb3cgbmV3IENvcmVFeGNlcHRpb24oZXJyb3JTdGF0dXMpOwotCQkJCQkgfQotCQkJCQkgCi0JCQkJCSBpZiAodHJhbnNmb3JtICE9IG51bGwgJiYgdHJhbnNmb3JtIGluc3RhbmNlb2YgQmVhbk1vZGlmaWVyLypkYXRhVGFibGUuY29udGFpbnNLZXkocHJvcGVydHkpKi8pCi0JCQkJCSB7Ci0JCQkJCQkgLy9nZXQgdGhlIFByb3BlcnR5RGF0YUhvbGRlciBmcm9tIHRoZSB0YWJsZQotCQkJCQkJIFByb3BlcnR5RGF0YUhvbGRlciBob2xkZXIgPSAoUHJvcGVydHlEYXRhSG9sZGVyKWRhdGFUYWJsZS5nZXQocHJvcGVydHkpOwotCQkJCQkJIGlmIChob2xkZXIgPT0gbnVsbCkKLQkJCQkJCSB7Ci0JCQkJCQkJIGhvbGRlciA9IG5ldyBQcm9wZXJ0eURhdGFIb2xkZXIoKTsKLQkJCQkJCQkgaG9sZGVyLmtleV8gPSAiIjsKLQkJCQkJCQkgaG9sZGVyLnZhbHVlXyA9ICIiOwkKLQkJCQkJCQkgaG9sZGVyLnRyYW5zZm9ybV8gPSB0cmFuc2Zvcm07Ci0JCQkJCQkJIGhvbGRlci5vcGVyYXRpb25fID0gb3BlcmF0aW9uOwotCQkJCQkJCSBob2xkZXIucHJvcGVydHlfID0gcHJvcGVydHk7Ci0JCQkJCQkJIGhvbGRlci5tYXBfID0gbmV3IEhhc2hNYXAoKTsKLQkJCQkJCQkgaG9sZGVyLm1hcF8ucHV0KGtleSwgdmFsdWUpOwotCQkJCQkJCSBkYXRhVGFibGUucHV0KHByb3BlcnR5LCBob2xkZXIpOwotCQkJCQkJIH0JCQkJCQkgCi0JCQkJCQkgZWxzZQotCQkJCQkJIHsJCQkJCQkKLQkJCQkJCQlob2xkZXIubWFwXy5wdXQoa2V5LCB2YWx1ZSk7Ci0JCQkJCQkgfQkJCQkJCi0JCQkJCSB9Ci0JCQkJCSBlbHNlICAvL3BsYWluIHByb3BlcnR5IG1hcHBpbmcgbm90IGEgYmVhbgotCQkJCQkgewotCQkJCQkJIFByb3BlcnR5RGF0YUhvbGRlciBob2xkZXIgPSBuZXcgUHJvcGVydHlEYXRhSG9sZGVyKCk7Ci0JCQkJCQkgaG9sZGVyLm9wZXJhdGlvbl8gPSBvcGVyYXRpb247Ci0JCQkJCQkgaG9sZGVyLmtleV8gPSBrZXk7Ci0JCQkJCQkgaG9sZGVyLnByb3BlcnR5XyA9IHByb3BlcnR5OwotCQkJCQkJIGhvbGRlci50cmFuc2Zvcm1fID0gdHJhbnNmb3JtOwotCQkJCQkJIGhvbGRlci52YWx1ZV8gPSB2YWx1ZTsKLQkJCQkJCSBkYXRhVGFibGUucHV0KHByb3BlcnR5LCBob2xkZXIpOwotCQkJCQkgfQkJCSAKLQkJCQkgfQotCQkJCSBlbHNlIGlmKGNlLmdldEF0dHJpYnV0ZShNQVBQRVJfUkVRVUlSRURfQVRUUklCVVRFKSE9bnVsbCAmJiBjZS5nZXRBdHRyaWJ1dGUoTUFQUEVSX1JFUVVJUkVEX0FUVFJJQlVURSkuZXF1YWxzKCJ0cnVlIikpCi0JCQkJIHsJCQkJCi0JCQkJCSBTdHJpbmcgbXNnID0gRW52aXJvbm1lbnRNZXNzYWdlcy5iaW5kKEVudmlyb25tZW50TWVzc2FnZXMuTVNHX0VSUk9SX0FOVF9SRVFVSVJFRF9QUk9QRVJUWSwga2V5LnRvU3RyaW5nKCkpOwotCQkJCQkgU3RhdHVzIHN0YXR1c09iaiA9IG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUiwgCi0JCQkJCQkJCUVudlBsdWdpbi5JRCwKLQkJCQkJCQkJSVN0YXR1cy5FUlJPUiwKLQkJCQkJCQkJbXNnLCAKLQkJCQkJCQkJbnVsbCk7Ci0JCQkJCSBnZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzT2JqKTsKLQkgICAgICAgICAgICAgICAgIGdldExvZygpLmxvZyhJTG9nLkVSUk9SLCAid3NfYW50IiwgOTk5OSwgdGhpcywgImdldE1hcHBpbmdFeHRlbnNpb25zIiwgbXNnKTsJCQkJCSAKLQkJCQkgfQotCQkJCSBlbHNlIGlmICh2ZXJib3NlKCkpCi0JCQkJIHsKLQkJCQkJIFN0cmluZyBtc2cgPSBFbnZpcm9ubWVudE1lc3NhZ2VzLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfSU5GT19BTlRfX1BST1BFUlRZX0RFRkFVTFQsIGtleS50b1N0cmluZygpKTsKLQkJCQkJIFN0YXR1cyBzdGF0dXNPYmogPSBuZXcgU3RhdHVzKElTdGF0dXMuSU5GTywgCi0JCQkJCQkJCUVudlBsdWdpbi5JRCwKLQkJCQkJCQkJSVN0YXR1cy5JTkZPLAotCQkJCQkJCQltc2csIAotCQkJCQkJCQludWxsKTsKLQkJCQkJIGdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRJbmZvKHN0YXR1c09iaik7Ci0JCQkJCSBnZXRMb2coKS5sb2coSUxvZy5JTkZPLCAid3NfYW50IiwgOTk5OSwgdGhpcywgImdldE1hcHBpbmdFeHRlbnNpb25zIiwgbXNnKTsJCQkJCSAKLQkJCQkgfQotCQkgICAgICB9ICAgIAkgCi0JCSAgfQotCQkgICByZXR1cm4gZGF0YVRhYmxlLmVsZW1lbnRzKCk7Ci0JCX0gICAgIAotCSAgIAotCSAgIHByaXZhdGUgYm9vbGVhbiB0cmFuc2Zvcm1BbmRTZXQoUHJvcGVydHlEYXRhSG9sZGVyIG1hcHBpbmcsIFN0cmluZyBzZXR0ZXJNZXRob2ROYW1lKQotCSAgIHsKLQkJCU9iamVjdCB0cmFuc2Zvcm0gPSBtYXBwaW5nLnRyYW5zZm9ybV87Ci0JCQlpZiAodHJhbnNmb3JtICE9IG51bGwpCi0JCQl7Ci0JCQkJLy8gZ2V0IHRyYW5zZm9ybSBjbGFzcyAmIGNyZWF0ZSBzZXR0ZXIgcGFyYW1ldGVycwkJCi0JCQkJdHJ5Ci0JCQkJewotCQkJCQkvL09iamVjdCBjbGFzc09iamVjdCA9IENsYXNzLmZvck5hbWUodHJhbnNmb3JtKS5uZXdJbnN0YW5jZSgpOwotCQkJCQlPYmplY3QgcGFyYW0gPSBuZXcgT2JqZWN0KCk7Ci0JCQkJCWlmICh0cmFuc2Zvcm0gaW5zdGFuY2VvZiBUcmFuc2Zvcm1lcikKLQkJCQkJewotCQkJCQkJVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIgPSAoVHJhbnNmb3JtZXIpdHJhbnNmb3JtOwkJCQkJCQotCQkJCQkJLy8gdHJhbnNmb3JtIHRoZSBwcm9wZXJ0eSB2YWx1ZQotCQkJCQkJcGFyYW0gPSB0cmFuc2Zvcm1lci50cmFuc2Zvcm0obWFwcGluZy52YWx1ZV8pOwkJCQkJCQotCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKG1hcHBpbmcubWFwXyAhPSBudWxsICYmIHRyYW5zZm9ybSBpbnN0YW5jZW9mIEJlYW5Nb2RpZmllcikKLQkJCQkJewotCQkJCQkJICBCZWFuTW9kaWZpZXIgbW9kaWZpZXIgPSAoQmVhbk1vZGlmaWVyKXRyYW5zZm9ybTsJCQotICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgZ2V0dGVyID0gZ2V0R2V0dGVyTWV0aG9kKG1hcHBpbmcpOwotCQkJCQkJICBwYXJhbSA9IGdldHRlci5pbnZva2UobWFwcGluZy5vcGVyYXRpb25fLCBuZXcgT2JqZWN0W117fSk7CQkJCQkJICAKLQkJCQkJCSAgbW9kaWZpZXIubW9kaWZ5KHBhcmFtLCBtYXBwaW5nLm1hcF8pOwotCQkJCQl9CQkJCQkJCQkJCQkJCi0JCQkJCXJldHVybiBjYWxsU2V0dGVyKG1hcHBpbmcub3BlcmF0aW9uXywgcGFyYW0sIHNldHRlck1ldGhvZE5hbWUpOwotCQkJCQkKLQkJCQl9Ci0JCQkJY2F0Y2ggKEV4Y2VwdGlvbiBleGMpCi0JCQkJewotCQkJCQlnZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IobmV3IFN0YXR1cyhTdGF0dXMuRVJST1IsICJ3c19hbnQiLCA1MDkzLCBleGMuZ2V0TWVzc2FnZSgpLCBleGMpKTsKLSAgICAgICAgICAgICAgICAgICAgZ2V0TG9nKCkubG9nKElMb2cuRVJST1IsICJ3c19hbnQiLCA1MDkzLCB0aGlzLCAidHJhbnNmb3JtQW5kU2V0IiwgRW52aXJvbm1lbnRNZXNzYWdlcy5iaW5kKEVudmlyb25tZW50TWVzc2FnZXMuTVNHX0VSUk9SX0FOVF9EQVRBX1RSQU5TRk9STSwgbWFwcGluZy5rZXlfLCBtYXBwaW5nLnRyYW5zZm9ybV8pKTsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihleGMuZ2V0TWVzc2FnZSgpKTsKLQkJCQl9CQkJCQotCQkJfQotCQkJcmV0dXJuIGZhbHNlOwotCSAgIH0JICAgCi0JICAgCi0JICAgcHJpdmF0ZSBWZWN0b3IgZ2V0U2V0dGVyTGlzdChPYmplY3Qgb3ApCi0JICAgewotCQkgICBWZWN0b3IgcmVzdWx0ID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgICBNZXRob2RbXSBtZXRob2RzID0gb3AuZ2V0Q2xhc3MoKS5nZXRNZXRob2RzKCk7CQkgICAgIAotCQkgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBtZXRob2RzLmxlbmd0aDsgaW5kZXgrKyApCi0JCSAgICAgewotCQkgICAgICAgTWV0aG9kICBtZXRob2QgICAgID0gbWV0aG9kc1tpbmRleF07Ci0JCSAgICAgICBib29sZWFuIGlzUHVibGljICAgPSBNb2RpZmllci5pc1B1YmxpYyggbWV0aG9kLmdldE1vZGlmaWVycygpICk7Ci0JCSAgICAgICBDbGFzcyAgIHJldHVyblR5cGUgPSBtZXRob2QuZ2V0UmV0dXJuVHlwZSgpOwotCQkgICAgIAotCQkgICAgICAgaWYoIGlzUHVibGljICYmIAotCQkgICAgICAgICAgIHJldHVyblR5cGUgPT0gVm9pZC5UWVBFICYmIAotCQkgICAgICAgICAgIG1ldGhvZC5nZXRQYXJhbWV0ZXJUeXBlcygpLmxlbmd0aCA9PSAxICYmCi0JCSAgICAgICAgICAgbWV0aG9kLmdldE5hbWUoKS5zdGFydHNXaXRoKCAic2V0IiApKQotCQkgICAgICAgewotCQkgICAgICAgICBtZXRob2Quc2V0QWNjZXNzaWJsZSggdHJ1ZSApOwotCQkgICAgICAgICByZXN1bHQuYWRkKCBtZXRob2QgKTsKLQkJICAgICAgIH0KLQkJICAgICB9Ci0JCQkgICAgIAotCSAgICAgcmV0dXJuIHJlc3VsdDsKLQkgICB9Ci0JICAgCi0JICAgcHJpdmF0ZSBNZXRob2QgZ2V0R2V0dGVyTWV0aG9kKFByb3BlcnR5RGF0YUhvbGRlciBtYXBwaW5nKQotCSAgIHsKLQkgICAgICAgTWV0aG9kIGdldHRlckZvdW5kID0gbnVsbDsgICAgIAotCi0JICAgICAgIGlmIChjbGFzc0VudHJ5LmdldHRlckxpc3RfID09IG51bGwpCi0JICAgICAgIHsKLQkgICAgCSAgIGNsYXNzRW50cnkuZ2V0dGVyTGlzdF8gPSBnZXRHZXR0ZXJMaXN0KG1hcHBpbmcub3BlcmF0aW9uXyk7ICAKLQkgICAgICAgfQotCSAgICAgICAKLQkgICAgICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzRW50cnkuZ2V0dGVyTGlzdF8uc2l6ZSgpOyBpbmRleCsrICkKLQkgICAgICAgewotCSAgICAgICAgIE1ldGhvZCBnZXR0ZXIgPSAoTWV0aG9kKWNsYXNzRW50cnkuZ2V0dGVyTGlzdF8uZWxlbWVudEF0KCBpbmRleCApOwotCSAgICAgICAgIAotCSAgICAgICAgIGlmKCBnZXR0ZXIuZ2V0TmFtZSgpLmVxdWFscyggImdldCIgKyBtYXBwaW5nLnByb3BlcnR5XyApKQotCSAgICAgICAgIHsKLQkgICAgICAgICAgICBnZXR0ZXJGb3VuZCA9IGdldHRlcjsKLQkgICAgICAgICAgICBicmVhazsKLQkgICAgICAgICB9ICAgICAgIAotCSAgICAgICB9Ci0JICAgICAgIHJldHVybiBnZXR0ZXJGb3VuZDsKLQkgICB9Ci0JICAgCi0JICAgcHJpdmF0ZSBWZWN0b3IgZ2V0R2V0dGVyTGlzdCggT2JqZWN0IG9iamVjdCApCi0JICAgewotCSAgICAgVmVjdG9yIHJlc3VsdCA9IG5ldyBWZWN0b3IoKTsJICAgICAKLQkgICAgIE1ldGhvZFtdIG1ldGhvZHMgPSBvYmplY3QuZ2V0Q2xhc3MoKS5nZXRNZXRob2RzKCk7Ci0JICAgICAKLQkgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBtZXRob2RzLmxlbmd0aDsgaW5kZXgrKyApCi0JICAgICB7Ci0JICAgICAgIE1ldGhvZCAgbWV0aG9kICAgICA9IG1ldGhvZHNbaW5kZXhdOwotCSAgICAgICBib29sZWFuIGlzUHVibGljICAgPSBNb2RpZmllci5pc1B1YmxpYyggbWV0aG9kLmdldE1vZGlmaWVycygpICk7Ci0JICAgICAgIENsYXNzICAgcmV0dXJuVHlwZSA9IG1ldGhvZC5nZXRSZXR1cm5UeXBlKCk7Ci0JICAgICAKLQkgICAgICAgaWYoIGlzUHVibGljICYmIAotCSAgICAgICAgICAgcmV0dXJuVHlwZSAhPSBWb2lkLlRZUEUgJiYgCi0JICAgICAgICAgICBtZXRob2QuZ2V0UGFyYW1ldGVyVHlwZXMoKS5sZW5ndGggPT0gMCAmJgotCSAgICAgICAgICAgbWV0aG9kLmdldE5hbWUoKS5zdGFydHNXaXRoKCAiZ2V0IiApKQotCSAgICAgICB7Ci0JICAgICAgICAgbWV0aG9kLnNldEFjY2Vzc2libGUoIHRydWUgKTsKLQkgICAgICAgICByZXN1bHQuYWRkKCBtZXRob2QgKTsKLQkgICAgICAgfQotCSAgICAgfQotCSAgICAgCi0JICAgICByZXR1cm4gcmVzdWx0OwotCSAgIH0gICAKLSAgICAgICAKLQkgICBwcml2YXRlIGJvb2xlYW4gY2FsbFNldHRlcihBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiBvcCwgT2JqZWN0IHBhcmFtLCBTdHJpbmcgc2V0dGVyTWV0aG9kTmFtZSkgdGhyb3dzIENvcmVFeGNlcHRpb24KLQkgICB7Ci0JCSAgIGZvciAoSXRlcmF0b3IgaXRlcmF0b3IgPSBjbGFzc0VudHJ5LnNldHRlckxpc3RfLml0ZXJhdG9yKCk7IGl0ZXJhdG9yLmhhc05leHQoKTspIAotCQkgICB7Ci0JCQkJTWV0aG9kIG1ldGhvZCA9IChNZXRob2QpIGl0ZXJhdG9yLm5leHQoKTsKLQkJCQlpZiAobWV0aG9kLmdldE5hbWUoKS5lcXVhbHMoc2V0dGVyTWV0aG9kTmFtZSkpCi0JCQkJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkJCSAgICAgICBDbGFzc1tdIHBhcmFtVHlwZXMgPSBtZXRob2QuZ2V0UGFyYW1ldGVyVHlwZXMoKTsKLQkJCSAgICAgICBpZiAocGFyYW1UeXBlcy5sZW5ndGggPT0gMSAmJiBwYXJhbSAhPSBudWxsKQotCQkJICAgICAgIHsJCQkgIAotCQkJICAgICAgICAJIHRyeXsJCQkgICAgICAJCQkKLQkJCSAgICAgCQkJIG1ldGhvZC5pbnZva2Uob3AsIG5ldyBPYmplY3RbXXtwYXJhbX0pOwotCQkJICAgICAJCQkgcmV0dXJuIHRydWU7Ci0JCQkgICAgIAkJIH0KLQkJCSAgICAgCQkgY2F0Y2goRXhjZXB0aW9uIGNleCl7Ci0JCQkgICAgIAkJCVN0YXR1cyBlcnJvclN0YXR1cyA9IG5ldyBTdGF0dXMoU3RhdHVzLkVSUk9SLCAid3NfYW50IiwgNTA5NCwgY2V4LmdldE1lc3NhZ2UoKSwgY2V4KTsKLQkJCSAgICAgCQkJZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKGVycm9yU3RhdHVzKTsKLQkJCSAgICAgCQkJZ2V0TG9nKCkubG9nKElMb2cuRVJST1IsICJ3c19hbnQiLCA1MDk0LCB0aGlzLCAiY2FsbFNldHRlciIsIEVudmlyb25tZW50TWVzc2FnZXMuYmluZChFbnZpcm9ubWVudE1lc3NhZ2VzLk1TR19FUlJPUl9BTlRfQ0FMTF9TRVRURVIsIHNldHRlck1ldGhvZE5hbWUpKTsKLQkJCSAgICAgCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24oZXJyb3JTdGF0dXMpOwotCQkJICAgICAJCSB9Ci0JCQkgICAgICAgfSAgCi0JCQkJfQotCQkJfQotCQkgICAgcmV0dXJuIGZhbHNlOwotCSAgIH0KLQkgICAKLQkKLQkgICAvLyBsb29rIGZvciBzZXR0ZXIgd2l0aCBwcmltaXRpdmUgdHlwZSBwYXJhbWV0ZXIgLSBpZiBmaW5kIG9uZSwgY29udmVydCBTdHJpbmcgcHJvcGVydHlWYWx1ZSBhbmQgY2FsbCBpdAotCSAgIHByaXZhdGUgYm9vbGVhbiBjYWxsUHJpbWl0aXZlU2V0dGVyKFByb3BlcnR5RGF0YUhvbGRlciBtYXBwaW5nKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCSAgIHsJCQkKLQkJCWZvciAoSXRlcmF0b3IgaXRlcmF0b3IgPSBjbGFzc0VudHJ5LnNldHRlckxpc3RfLml0ZXJhdG9yKCk7IGl0ZXJhdG9yLmhhc05leHQoKTspIHsKLQkJCQlNZXRob2QgZWxlbWVudCA9IChNZXRob2QpIGl0ZXJhdG9yLm5leHQoKTsKLQkJCQlDbGFzc1tdIHBhcm1UeXBlcyA9IGVsZW1lbnQuZ2V0UGFyYW1ldGVyVHlwZXMoKTsKLQkJCQlpZiAocGFybVR5cGVzLmxlbmd0aD09MSAmJiBwYXJtVHlwZXNbMF0uaXNQcmltaXRpdmUoKSkKLQkJCQl7CQkJCQkJCQkJCQotCQkJCQlDbGFzcyBwYXJtVHlwZSA9IHBhcm1UeXBlc1swXS5nZXRDbGFzcygpOwotCQkJCQlPYmplY3Qgc2V0dGVyUGFybSA9IG51bGw7Ci0JCQkJCWlmIChwYXJtVHlwZS5lcXVhbHMoSW50ZWdlci5jbGFzcykpCi0JCQkJCXsKLQkJCQkJCXNldHRlclBhcm0gPSBJbnRlZ2VyLnZhbHVlT2YobWFwcGluZy52YWx1ZV8pOwotCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKHBhcm1UeXBlLmVxdWFscyhCb29sZWFuLmNsYXNzKSkKLQkJCQkJewotCQkJCQkJc2V0dGVyUGFybSA9IEJvb2xlYW4udmFsdWVPZihtYXBwaW5nLnZhbHVlXyk7Ci0JCQkJCX0KLQkJCQkJZWxzZSBpZiAocGFybVR5cGUuZXF1YWxzKENoYXJhY3Rlci5jbGFzcykgJiYgbWFwcGluZy52YWx1ZV8ubGVuZ3RoKCkgPT0gMSkKLQkJCQkJewotCQkJCQkJc2V0dGVyUGFybSA9IG5ldyBDaGFyYWN0ZXIobWFwcGluZy52YWx1ZV8uY2hhckF0KDApKTsgIAotCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKHBhcm1UeXBlLmVxdWFscyhCeXRlLmNsYXNzKSkKLQkJCQkJewotCQkJCQkJc2V0dGVyUGFybSA9IEJ5dGUudmFsdWVPZihtYXBwaW5nLnZhbHVlXyk7Ci0JCQkJCX0KLQkJCQkJZWxzZSBpZiAocGFybVR5cGUuZXF1YWxzKFNob3J0LmNsYXNzKSkKLQkJCQkJewotCQkJCQkJc2V0dGVyUGFybSA9IFNob3J0LnZhbHVlT2YobWFwcGluZy52YWx1ZV8pOwotCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKHBhcm1UeXBlLmVxdWFscyhMb25nLmNsYXNzKSkKLQkJCQkJewotCQkJCQkJc2V0dGVyUGFybSA9IExvbmcudmFsdWVPZihtYXBwaW5nLnZhbHVlXyk7Ci0JCQkJCX0KLQkJCQkJZWxzZSBpZiAocGFybVR5cGUuZXF1YWxzKEZsb2F0LmNsYXNzKSkKLQkJCQkJewotCQkJCQkJc2V0dGVyUGFybSA9IEZsb2F0LnZhbHVlT2YobWFwcGluZy52YWx1ZV8pOwotCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKHBhcm1UeXBlLmVxdWFscyhEb3VibGUuY2xhc3MpKQotCQkJCQl7Ci0JCQkJCQlzZXR0ZXJQYXJtID0gRG91YmxlLnZhbHVlT2YobWFwcGluZy52YWx1ZV8pOwotCQkJCQl9Ci0JCQkJCQkJCQkJCQkJCQotCQkJCSAgICBpZiAoc2V0dGVyUGFybSAhPSBudWxsKQotCQkJCSAgICB7CQotCQkJCSAgICAJdHJ5Ci0JCQkJICAgIAl7Ci0JCQkJICAgIAkJZWxlbWVudC5pbnZva2UobWFwcGluZy5vcGVyYXRpb25fLCBuZXcgT2JqZWN0W117c2V0dGVyUGFybX0pOwotCQkJCQkgICAgCXJldHVybiB0cnVlOwkKLQkJCQkgICAgCX0KLQkJCQkgICAgCWNhdGNoKEV4Y2VwdGlvbiBlKXsKLQkJCQkgICAgCQlTdGF0dXMgZXJyb3JTdGF0dXMgPSBuZXcgU3RhdHVzKFN0YXR1cy5FUlJPUiwgIndzX2FudCIsIDUwOTUsIGUuZ2V0TWVzc2FnZSgpLCBlKTsKLQkJCQkgICAgCQlnZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoZXJyb3JTdGF0dXMpOwotCQkJCSAgICAJCWdldExvZygpLmxvZyhJTG9nLkVSUk9SLCAid3NfYW50IiwgNTA5NSwgdGhpcywgImNhbGxQcmltaXRpdmVTZXR0ZXIiLCBFbnZpcm9ubWVudE1lc3NhZ2VzLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfRVJST1JfQU5UX0NBTExfU0VUVEVSLCBlbGVtZW50LmdldE5hbWUoKSkpOwotCQkJCSAgICAJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKGVycm9yU3RhdHVzKTsKLQkJCQkgICAgCX0KLQkJCQkgICAgfQkJCQotCQkJCX0KLQkJICAgIH0gICAKLQkJCXJldHVybiBmYWxzZTsKLQkgICB9Ci0JCQotCQkvL2NoZWNrIGZvciBzZXR0ZXIgd2l0aCBwYXJhbWV0ZXIgdHlwZSB0aGF0IHRha2VzIGEgU3RyaW5nIHRvIGNvbnN0cnVjdAotCQkvLyBjb25zdHJ1Y3QgdGhlIHBhcmFtZXRlciB1c2luZyBTdHJpbmcgJiBjYWxsIHRoZSBzZXR0ZXIgIAotCSAgIHByaXZhdGUgYm9vbGVhbiBjYWxsU2V0dGVyQ29uc3RydWN0b3IoUHJvcGVydHlEYXRhSG9sZGVyIG1hcHBpbmcpIHRocm93cyBDb3JlRXhjZXB0aW9uCi0JICAgewkKLQkJCWZvciAoSXRlcmF0b3IgaXRlcmF0b3IgPSBjbGFzc0VudHJ5LnNldHRlckxpc3RfLml0ZXJhdG9yKCk7IGl0ZXJhdG9yLmhhc05leHQoKTspIHsKLQkJCQlNZXRob2QgZWxlbWVudCA9IChNZXRob2QpIGl0ZXJhdG9yLm5leHQoKTsKLQkJCQlDbGFzc1tdIHBhcm1UeXBlcyA9IGVsZW1lbnQuZ2V0UGFyYW1ldGVyVHlwZXMoKTsKLQkJCQlDbGFzc1tdIHN0cmluZ1Bhcm0gPSBuZXcgQ2xhc3NbXXtTdHJpbmcuY2xhc3N9OwotCQkJCWlmIChwYXJtVHlwZXMubGVuZ3RoPT0xKQotCQkJCXsKLQkJCQkJdHJ5Ci0JCQkJCXsJCQkKLQkJCQkJCUNvbnN0cnVjdG9yIGN0b3IgPSBwYXJtVHlwZXMuZ2V0Q2xhc3MoKS5nZXRDb25zdHJ1Y3RvcihzdHJpbmdQYXJtKTsKLQkJCQkJCU9iamVjdCBwYXJhbWV0ZXIgPSBjdG9yLm5ld0luc3RhbmNlKG5ldyBPYmplY3RbXXttYXBwaW5nLnZhbHVlX30pOwotCQkJCQkJZWxlbWVudC5pbnZva2UobWFwcGluZy5vcGVyYXRpb25fLCBuZXcgT2JqZWN0W117cGFyYW1ldGVyfSk7CQkJCQkJCi0JCQkJCX0KLQkJCQkJY2F0Y2ggKEV4Y2VwdGlvbiBleGMpCi0JCQkJCXsKLQkJCQkJCVN0YXR1cyBlcnJvclN0YXR1cyA9IG5ldyBTdGF0dXMoU3RhdHVzLkVSUk9SLCAid3NfYW50IiwgNTA5NiwgZXhjLmdldE1lc3NhZ2UoKSwgZXhjKTsKLQkJCQkJCWdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihlcnJvclN0YXR1cyk7Ci0JCQkJCQlnZXRMb2coKS5sb2coSUxvZy5FUlJPUiwgIndzX2FudCIsIDUwOTYsIHRoaXMsICJjYWxsU2V0dGVyQ29uc3RydWN0b3IiLCBFbnZpcm9ubWVudE1lc3NhZ2VzLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfRVJST1JfQU5UX0NBTExfU0VUVEVSLCBlbGVtZW50LmdldE5hbWUoKSkpOwotCQkJCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24oZXJyb3JTdGF0dXMpOwotCQkJCQl9Ci0JCQkJfQotCSAgICAgICAgfQkJCQotCQkgICByZXR1cm4gZmFsc2U7Ci0JICAgfQotCi0JICAgLyoqCi0JICAgICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBoZWxwcyBtYW5hZ2UgZXhlY3V0aW9uL3VuZG9pbmcgb2YgQ29tbWFuZHMuCi0JICAgICovCi0JICAgcHVibGljIENvbW1hbmRNYW5hZ2VyIGdldENvbW1hbmRNYW5hZ2VyICgpewotCQkgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0T3BlcmF0aW9uTWFuYWdlcigpOwotCSAgIH0gCi0JICAgCi0JICAgcHVibGljIENvbW1hbmRGcmFnbWVudCBnZXRSb290Q29tbWFuZEZyYWdtZW50KCkgCi0gICAgICAgewotICAgIAkgICAKLSAgICAJICAgLy9sb29rIHVwIHRoZSBjb21tYW5kRnJhZ21lbnQgaW4gdGhlIHNjZW5hcmlvUmVnaXN0cnkgZXh0ZW5zaW9uIHBvaW50IHdpdGggYW4gSUQgY29ycmVzcG9uZGluZyB0byB0aGUgc2NlbmFyaW8gcHJvcGVydHkgaW4gdGhlIHByb3BlcnR5dGFibGUKLSAgICAJICAgU3RyaW5nIHNjZW5hcmlvUHJvcGVydHkgPSAoU3RyaW5nKWdldFByb3BlcnR5KFNDRU5BUklPX1RZUEVfUFJPUEVSVFkpOwotICAgIAkgICBJRXh0ZW5zaW9uUmVnaXN0cnkgcmVnID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLQkJICAgSUV4dGVuc2lvblBvaW50IGV4dFB0ID0gcmVnLmdldEV4dGVuc2lvblBvaW50KEVYVF9QVF9OQU1FU1BBQ0UsIFNDRU5BUklPX0VYVF9QVCk7Ci0JCSAgIAotCQkgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBlbGVtZW50cyA9IGV4dFB0LmdldENvbmZpZ3VyYXRpb25FbGVtZW50cygpOwotCQkgICAKLQkJICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewotCQkJCi0JCQkgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNvbmZpZ0VsZW1lbnQgPSBlbGVtZW50c1tpXTsJCQkgCi0JCQkgaWYgKGNvbmZpZ0VsZW1lbnQuZ2V0QXR0cmlidXRlKFNDRU5BUklPX1RZUEVfQVRUUklCVVRFKS5lcXVhbHMoc2NlbmFyaW9Qcm9wZXJ0eSkpCi0JCQkgewkJCQkgCi0JCQkJIHRyeQotCQkJCSB7CQkJCQkgCi0JCQkJCU9iamVjdCBvYmogPSBjb25maWdFbGVtZW50LmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oU0NFTkFSSU9fQ0xBU1NfQVRUUklCVVRFKTsKLQkJCi0JCQkJCWlmIChvYmogaW5zdGFuY2VvZiBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQpCi0JCQkJCXsKLQkJCQkJCXJldHVybiAob3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZnJhZ21lbnQuQ29tbWFuZEZyYWdtZW50KW9iajsKLQkJCQkJfQotCQkJCSB9Ci0JCQkJIGNhdGNoIChFeGNlcHRpb24gZXhjZXB0aW9uKQotCQkJCSB7Ci0JCQkJCSBTdGF0dXMgZXJyb3JTdGF0dXMgPSBuZXcgU3RhdHVzKFN0YXR1cy5FUlJPUiwgIndzX2FudCIsIDUwOTcsIGV4Y2VwdGlvbi5nZXRNZXNzYWdlKCksIGV4Y2VwdGlvbik7Ci0JCQkJCSBnZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3IoZXJyb3JTdGF0dXMpOwotCQkJCQkgZ2V0TG9nKCkubG9nKElMb2cuRVJST1IsICJ3c19hbnQiLCA1MDk3LCB0aGlzLCAiZ2V0Um9vdENvbW1hbmRGcmFnbWVudCIsIEVudmlyb25tZW50TWVzc2FnZXMuTVNHX0VSUk9SX0FOVF9DTURfRlJBR01FTlQpOwkJCQkJIAotCQkJCSB9CQkJCSAKLQkJCSAgfSAgICAJICAgCi0gICAgICAgICAgIH0KLQkJICAgcmV0dXJuIG51bGw7Ci0gICAgICAgfQotICB9CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2FudC9BbnRPcGVyYXRpb25NYW5hZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2FudC9BbnRPcGVyYXRpb25NYW5hZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNGQwOTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9hbnQvQW50T3BlcmF0aW9uTWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5hbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmRhdGEuRGF0YUZsb3dNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnRFbmdpbmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLS8qKgotICogTWFuYWdlcyB0aGUgZXhlY3V0aW9uIG9mIGNvbW1hbmRzIGluIHRoZSByb290IGZyYWdtZW50IHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuCi0gKiAKLSAqIEBhdXRob3Igam9hbgotICoKLSAqLwkKLQotcHVibGljIGNsYXNzIEFudE9wZXJhdGlvbk1hbmFnZXIgZXh0ZW5kcyBDb21tYW5kRnJhZ21lbnRFbmdpbmUKLXsJCi0JICBwcml2YXRlIEFudEVudmlyb25tZW50IGVudmlyb25tZW50XzsKLQkgIAotCSAgcHJvdGVjdGVkIElTdGF0dXMgaW5pdEJlZm9yZUV4ZWN1dGUoIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIG9wZXJhdGlvbiApCi0gICAgeyAgICAgIAotICAgICAgZW52aXJvbm1lbnRfLmdldExvZygpLmxvZyhJTG9nLklORk8sICJ3c19hbnQiLCA1MDk4LCB0aGlzLCAiaW5pdEJlZm9yZUV4ZWN1dGUiLCAiSW5pdGlhbGl6aW5nIGRhdGEgZm9yOiAiICsgb3BlcmF0aW9uLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKLSAgICAgIElTdGF0dXMgaW5pdFN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAJICBpbml0U3RhdHVzID0gZW52aXJvbm1lbnRfLmluaXRPcGVyYXRpb25EYXRhKCBvcGVyYXRpb24gKTsgIAotICAgICAgfQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgIAkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7ICAKLSAgICAgIH0gICAgICAgIAotICAgICAgcmV0dXJuIGluaXRTdGF0dXM7Ci0gICAgfQotCi0gICAgLyoqCi0JICAgKiBDcmVhdGVzIGEgQ29tbWFuZEZyYWdtZW50RW5naW5lLgotCSAgICogCi0JICAgKiBAcGFyYW0gc3RhcnRGcmFnbWVudCB0aGUgcm9vdCBmcmFnbWVudCB3aGVyZSB0cmF2ZXJzYWwgd2lsbCBiZWdpbi4KLQkgICAqIEBwYXJhbSBkYXRhTWFuYWdlciB0aGUgZGF0YSBtYW5hZ2VyIGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBkYXRhIG1hcHBpbmdzLgotCSAgICogQHBhcmFtIGVudmlyb25tZW50IHRoZSBlbnZpcm9ubWVudC4KLQkgICAqLwotCSAgcHVibGljIEFudE9wZXJhdGlvbk1hbmFnZXIoIENvbW1hbmRGcmFnbWVudCBzdGFydEZyYWdtZW50LCBEYXRhRmxvd01hbmFnZXIgZGF0YU1hbmFnZXIsIEFudEVudmlyb25tZW50IGVudmlyb25tZW50ICkKLQkgIHsKLSAgICAgIHN1cGVyKCBzdGFydEZyYWdtZW50LCBkYXRhTWFuYWdlciwgZW52aXJvbm1lbnQgKTsKLSAgICAgIAotCSAgCWVudmlyb25tZW50XyA9IGVudmlyb25tZW50OwotCSAgfSAKLX0KLQotCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvYW50L0FudFN0YXR1c0hhbmRsZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvYW50L0FudFN0YXR1c0hhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBlYTVjNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2FudC9BbnRTdGF0dXNIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMTQgICAxNzY4ODYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzA1MjIgICAxNzY5NDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5hbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5CYXNlU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkNob2ljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LlN0YXR1c0V4Y2VwdGlvbjsKLQotcHVibGljIGNsYXNzIEFudFN0YXR1c0hhbmRsZXIgZXh0ZW5kcyBCYXNlU3RhdHVzSGFuZGxlcgotewotCi0JcHVibGljIENob2ljZSByZXBvcnQoSVN0YXR1cyBzdGF0dXMsIENob2ljZVtdIGNob2ljZXMpIHsKLQkJLy8gVE9ETyAKLQkgIGNoZWNrU3RhdHVzKHN0YXR1cyk7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCXB1YmxpYyB2b2lkIHJlcG9ydChJU3RhdHVzIHN0YXR1cykgdGhyb3dzIFN0YXR1c0V4Y2VwdGlvbiB7Ci0JCWlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLkVSUk9SKQotCQkJcmVwb3J0RXJyb3Ioc3RhdHVzKTsKLQkJZWxzZQotCQkJcmVwb3J0SW5mbyhzdGF0dXMpOwotCi0JfQotCi0JcHVibGljIHZvaWQgcmVwb3J0RXJyb3IoSVN0YXR1cyBzdGF0dXMpIHsKLQkgIGNoZWNrU3RhdHVzKHN0YXR1cyk7Ci0JCVN5c3RlbS5lcnIucHJpbnRsbihzdGF0dXMuZ2V0TWVzc2FnZSgpKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCByZXBvcnRJbmZvKElTdGF0dXMgc3RhdHVzKSB7CQotCSAgY2hlY2tTdGF0dXMoc3RhdHVzKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKHN0YXR1cy5nZXRNZXNzYWdlKCkpOwkJCi0JfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2FudC9Qcm9wZXJ0eURhdGFIb2xkZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvYW50L1Byb3BlcnR5RGF0YUhvbGRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDlhYjZiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvYW50L1Byb3BlcnR5RGF0YUhvbGRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuYW50OwotCi0vKioKLSAqIFNpbXBsZSBjbGFzcyB0byBob2xkIGRhdGEgbWFwcGluZyBpbmZvcm1hdGlvbiBvbmNlIHJldHJpZXZlZCBmcm9tIEFudCBwcm9wZXJ0eSBmaWxlLgotICogTWFwIGlzIHVzZWQgZm9yIG1hbnkgdG8gb25lIG1hcHBpbmdzIGludm9sdmluZyBtYXBwaW5nIG9mIG11bHRpcGxlIHByb3BlcnRpZXMgdG8gYSBiZWFuLgotICogSW4gdGhpcyBjYXNlLCB0aGUga2V5XyBhbmQgdmFsdWVfIHNob3VsZCBiZSBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIGFuZCBhbGwga2V5IHZhbHVlIHBhaXJzCi0gKiBmb3IgcHJvcGVydGllcyBwdXQgaW50byB0aGUgbWFwIGluc3RlYWQuICBUaGUgdHJhbnNmb3JtYXRpb24gZm9yIHRoaXMgY2FzZSB3b3VsZCBiZSBhIG1vZGlmaWVyCi0gKiB3aGljaCB3aWxsIHNldCB0aGUgcHJvcGVydGllcyBvbnRvIHRoZSBiZWFuLgotICovCi0gCi1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3Jrcy5kYXRhbW9kZWwuQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb247Ci0KLXB1YmxpYyBjbGFzcyBQcm9wZXJ0eURhdGFIb2xkZXIgewotCSAgIHB1YmxpYyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiBvcGVyYXRpb25fOwotCSAgIHB1YmxpYyBPYmplY3QgdHJhbnNmb3JtXzsKLQkgICBwdWJsaWMgU3RyaW5nIGtleV87Ci0JICAgcHVibGljIFN0cmluZyBwcm9wZXJ0eV87Ci0JICAgcHVibGljIFN0cmluZyB2YWx1ZV87CQkKLQkgICBwdWJsaWMgTWFwIG1hcF87Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvYW50L1N0cmluZzJCb29sZWFuVHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvYW50L1N0cmluZzJCb29sZWFuVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgzZTU0Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2FudC9TdHJpbmcyQm9vbGVhblRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5hbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5kYXRhLlRyYW5zZm9ybWVyOwotCi1wdWJsaWMgY2xhc3MgU3RyaW5nMkJvb2xlYW5UcmFuc2Zvcm1lciBpbXBsZW1lbnRzIFRyYW5zZm9ybWVyIHsKLQotCXB1YmxpYyBPYmplY3QgdHJhbnNmb3JtKE9iamVjdCB2YWx1ZSkgewotCQkJU3RyaW5nIHN0ciA9IChTdHJpbmcpdmFsdWU7Ci0JCQlzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTsKLQkJCWlmIChzdHIuZXF1YWxzKCJ0cnVlIikpCi0JCQl7Ci0JCQkJcmV0dXJuIG5ldyBCb29sZWFuKHRydWUpOwotCQkJfQotCQkJZWxzZSByZXR1cm4gbmV3IEJvb2xlYW4oZmFsc2UpOwkJCi0KLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29tbWFuZGxpbmUvQ29tbWFuZExpbmUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29tbWFuZGxpbmUvQ29tbWFuZExpbmUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEwOWJkYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbW1hbmRsaW5lL0NvbW1hbmRMaW5lLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tYW5kbGluZTsKLQotaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OwotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkJpdFNldDsKLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbW9uLlN0cmluZ1V0aWxzOwotCi0KLS8qKgotICAqIDxwPlRoaXMgaXMgYSBnZW5lcmljIGNvbW1hbmQgbGluZSBwYXJzaW5nIGNsYXNzLiAgVGhlIHByb2dyYW1tZXIgbmVlZCBvbmx5IHNwZWNpZnkKLSAgKiB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZWlyIGNvbW1hbmQgbGluZShpZS4gcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBmbGFncywgZXRjKQotICAqIGFuZCB0aGlzIGNsYXNzIHdpbGwgcGVyZm9ybSB0aGUgcmVzdCBvZiB0aGUgcGFyc2luZyB3b3JrLiAgQXMgYW4gYWRkZWQgYm9udXMgdGhpcwotICAqIGNsYXNzIHdpbGwgYWxzbyBjcmVhdGUgZm9ybWF0ZWQgaGVscCB0ZXh0IHRoYXQgZGlzcGxheXMgdGhlIHN5bnRheCBvZiB0aGlzCi0gICogY29tbWFuZCBsaW5lLgotICAqCi0gICogPHA+VGhlIG1haW4gcGFyYW1ldGVyIHRvIHRoZSBDb21tYW5kTGluZSBjb25zdHJ1Y3RvciBpcyBhIHR3byBkaW1lbnNpb25hbCBTdHJpbmcKLSAgKiBhcnJheS4gIFRoZXJlIGFyZSA1IGNvbHVtbnMgaW4gdGhpcyBhcnJheSBhbmQgYXMgbWFueSByb3dzIGFzIG5lZWRlZCBmb3IgZWFjaAotICAqIGZsYWcgb3IgcG9zaXRpb25hbCBwYXJhbWV0ZXIuICBUaGUgZml2ZSBjb2x1bW5zIGFyZToKLSAgKgotICAqIDxvbD4KLSAgKiA8bGk+VGhlIG5hbWUgb2YgdGhlIGZsYWcoZWcuICJoZWxwIiBvciAiYSIsIGV0YykKLSAgKiAgICAgTm90ZTogbm8gZGFzaCBzaG91bGQgYmUgaW4gdGhlIG5hbWUgaGVyZS4gIFRoZSB1c2VyIHdvdWxkIHNwZWNpZnkgIi1oZWxwIiBvbiB0aGUKLSAgKiAgICAgICAgICAgY29tbWFuZCBsaW5lIHRob3VnaC4KLSAgKiA8bGk+VGhlIG5hbWUgb2YgdGhlIGZsYWcgcGFyYW1ldGVyKGlmIGFueSkKLSAgKiA8bGk+QSBzdHJpbmcgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgZmxhZyBjYW4gYXBwZWFyIG1vcmUgdGhhbiBvbmNlIG9uIHRoZQotICAqICAgICBjb21tYW5kIGxpbmUuCi0gICogPGxpPkEgc3RyaW5nIGluZGljYXRpbmcgd2hldGhlciB0aGlzIGZsYWcgbXVzdCBiZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAgKiA8bGk+QSBoZWxwIHRleHQgc3RyaW5nIHdoaWNoIGRlc2NyaWJlcyB0aGlzIHBhcnRpY3VsYXIgZmxhZyBvciBwb3NpdGlvbmFsIHBhcmFtZXRlci4KLSAgKiA8L29sPgotICAqCi0gICogPHA+RWFjaCByb3cgaW4gdGhlIHN0cmluZyBhcnJheSBpcyBhc3NvY2lhdGUgd2l0aCBlaXRoZXIgYSBwb3NpdGlvbmFsIHBhcmFtZXRlcgotICAqIG9yIHdpdGggYSBmbGFnLiAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoaXMgY29tbWFuZCBsaW5lOgotICAqIDx1bD4KLSAgKiA8bGk+TXlfcHJvZyByZXF1aXJlZF9wYXJtMSAtYWIgcGFybV9mb3JfYWIgcmVxdWlyZWRfcGFybTIgLWhlbHAgb3B0aW9uYWxfcGFybXMKLSAgKiA8L3VsPgotICAqCi0gICogPHA+SW4gdGhpcyBleGFtcGxlIE15X3Byb2cgaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0uICByZXF1aXJlZF9wYXJtMSBhbmQKLSAgKiByZXF1aXJlZF9wYXJtMiBtdXN0IGJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLiAgTm90aWNlIHRoYXQgdGhleSBkbyBub3QKLSAgKiBoYXZlIHRvIGJlIGFkamFjZW50IHRvIGVhY2ggb3RoZXIgb24gdGhlIGNvbW1hbmQgbGluZS4gb3B0aW9uYWxfcGFybXMgbWF5IG9wdGlvbmFsbHkKLSAgKiBzcGVjaWZpZWQuICBvcHRpb25hbF9wYXJtcyBjYW4gYmUgMCBvciBtb3JlIHBhcmFtZXRlcnMuICBUaGV5IGRvZXMgbm90IG5lZWQgdG8gYmUKLSAgKiBhZGphY2VudCB0byB0aGUgcmVxdWlyZWQgcGFyYW1ldGVycywgYnV0IHRoZXkgZG8gbmVlZCB0byBmb2xsb3cgdGhlIHJlcXVpcmVkCi0gICogcGFyYW1ldGVycy4gVHdvIGZsYWdzIGFyZSBzcGVjaWZpZWQgIi1hYiIgYW5kICItaGVscCIuICBUaGUgIi1hYiIgZmxhZyBoYXMgYQotICAqIHBhcmFtZXRlciAicGFybV9mb3JfYWIiIGFzc29jaWF0ZWQgd2l0aCBpdC4gIE5vdGU6IGEgZmxhZyBjYW4gbm90IGhhdmUgYW4gb3B0aW9uYWwKLSAgKiBwYXJhbWV0ZXIuIChpZS4gYSBmbGFnIGVpdGhlciBuZXZlciBoYXZlIGEgcGFyYW1ldGVyIG9yIGl0IGFsd2F5cyBoYXMgYSBwYXJhbWV0ZXIpCi0gICogSW4gdGhpcyBleGFtcGxlLCB0aGUgZmlyc3QgdHdvIHJvd3MgaW4gdGhlIHN0cmluZyBhcnJheSB3b3VsZCBkZXNjcmliZSByZXF1aXJlZF9wYXJtMQotICAqIGFuZCByZXF1aXJlZF9wYXJtMi4gIFRoZSB0aGlyZCBlbnRyeSB3b3VsZCBkZXNjcmliZSBvcHRpb25hbF9wYXJtcy4gIFRoZSBmb3VydGggYW5kCi0gICogZmlmdGggcm93cyB3b3VsZCBkZXNjcmliZSAiLWFiIiBhbmQgIi1oZWxwIi4gIEZvciB0aGlzIGNvbW1hbmQgbGluZSB0aGUgc3RyaW5nIGFycmF5Ci0gICogd291bGQgbG9vayBsaWtlIHRoaXM6Ci0gICoKLSAgKiA8dWw+Ci0gICogPGxpPnsgeyBDb21tYW5kTGluZS5QT1NJVElPTkFMLCAicGFybTEiLCBDb21tYW5kTGluZS5OT19EVVBTLAotICAqICAgICAgIENvbW1hbmRMaW5lLlJFUVVJUkVELCAicGFybTEgaGVscCB0ZXh0IiB9LAotICAqIDxsaT57IENvbW1hbmRMaW5lLlBPU0lUSU9OQUwsICJwYXJtMiIsIENvbW1hbmRMaW5lLk5PX0RVUFMsCi0gICogICAgICAgQ29tbWFuZExpbmUuUkVRVUlSRUQsICJwYXJtMiBoZWxwIHRleHQiIH0sCi0gICogPGxpPnsgQ29tbWFuZExpbmUuUE9TSVRJT05BTCwgIm9wdGlvbmFsX3Bhcm1zIiwgQ29tbWFuZExpbmUuRFVQU19PSywKLSAgKiAgICAgICBDb21tYW5kTGluZS5SRVFVSVJFRCwgIm9wdGlvbmFsIGhlbHAgdGV4dCIgfSwKLSAgKiA8bGk+eyAiYWIiLCAicGFybV9mb3JfYWIiLCBDb21tYW5kTGluZS5OT19EVVBTLAotICAqICAgICAgIENvbW1hbmRMaW5lLk9QVElPTkFMLCAiYWIgaGVscCB0ZXh0IiB9LAotICAqIDxsaT57ICJoZWxwIiwgQ29tbWFuZExpbmUuTk9fUEFSTSwgQ29tbWFuZExpbmUuTk9fRFVQUywKLSAgKiAgICAgICBDb21tYW5kTGluZS5PUFRJT05BTCwgImRpc3BsYXlzIHRoaXMgaGVscCB0ZXh0IiB9IH0KLSAgKiA8L3VsPgotICAqCi0gICogPHA+U3RyaW5nIGFycmF5IHJ1bGVzOgotICAqCi0gICogPG9sPgotICAqIDxsaT5Qb3NpdGlvbmFsIHJvd3MgbXVzdCBhbHdheXMgY29tZSBmaXJzdCBpbiB0aGUgYXJyYXkuICBUaGVzZSByb3dzIG11c3QKLSAgKiAgICAgaGF2ZSBhIG5hbWUgc3BlY2lmaWVkIGluIGNvbHVtbiAyLCBleGNlcHQgZm9yIG9uZSBjYXNlLiAgSWYgeW91IHdhbnQgdG8gaW5kaWNhdGUgdGhhdAotICAqICAgICB0aGVyZSBhcmUgbm8gb3B0aW9uYWwgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIHlvdSB3b3VsZCBwdXQgQ29tbWFuZExpbmUuTk9fUEFSTQotICAqICAgICBpbiBjb2x1bW4gMiBvZiB0aGUgcG9zaXRpb25hbCByb3cuICBZb3Ugd291bGQgYWxzbyBuZWVkIHRvIHB1dCBDb21tYW5kTGluZS5PUFRJT05BTAotICAqICAgICBpbiBjb2x1bW4gNCBzaW5jZSB0aGlzIHJvdyBpcyBmb3Igb3B0aW9uYWwgcGFyYW1ldGVycyhvciB0aGUgbm9uLWV4aXN0ZW5jZSBvZgotICAqICAgICBvcHRpb25hbCBwYXJhbWV0ZXJzIGFzIHRoZSBjYXNlIG1heSBiZSkKLSAgKiA8bGk+T25jZSBhIHBvc2l0aW9uYWwgcm93IHNwZWNpZmllcyB0aGF0IGl0IGlzIG9wdGlvbmFsLCBubyBmdXJ0aGVyIHBvc2l0aW9uYWwgcm93cwotICAqICAgICBtYXkgYmUgc3BlY2lmaWVkLgotICAqIDxsaT5BdCBsZWFzdCBvbmUgcG9zaXRpb25hbCByb3cgbXVzdCBiZSBzcGVjaWZpZWQsIGV2ZW4gaWYgaXQgaXMgdG8ganVzdCB0byBzcGVjaWZ5IHRoYXQKLSAgKiAgICAgdGhlcmUgYXJlIG5vIG9wdGlvbmFsIHBhcmFtZXRlcnMuCi0gICogPGxpPkZsYWcgbmFtZXMgbXVzdCBiZSBpbiBsb3dlciBjYXNlLiAgTm90ZTogdGhlIHVzZXIgY2FuIHNwZWNpZnkgdXBwZXIgb3IgbG93ZXIgY2FzZQotICAqICAgICBvbiB0aGUgY29tbWFuZCBsaW5lLgotICAqIDxsaT5JZiBhIGZsYWcgaGFzIGEgcGFyYW1ldGVyIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHB1dCBpbnRvIGNvbHVtbiAyLgotICAqICAgICBvdGhlcndpc2UgQ29tbWFuZExpbmUuTk9fUEFSTSBzaG91bGQgYmUgcHV0IGluIGNvbHVtbiAyLgotICAqIDxsaT5JZiBhIGZsYWcgaXMgYWxsb3dlZCB0byBhcHBlYXIgbW9yZSB0aGFuIG9uY2Ugb24gdGhlIGNvbW1hbmQgbGluZSB0aGVuCi0gICogICAgIENvbW1hbmRMaW5lLkRVUFNfT0sgc2hvdWxkIGJlIHB1dCBpbnRvIGNvbHVtbiAzLCBvdGhlcndpc2UgQ29tbWFuZExpbmUuTk9fRFVQUwotICAqICAgICBzaG91bGQgYmUgcHV0IGludG8gY29sdW1uIDMuCi0gICogPGxpPklmIGEgZmxhZyBtdXN0IGJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIHRoZW4gQ29tbWFuZExpbmUuUkVRVUlSRUQgc2hvdWxkCi0gICogICAgIGJlIHNwZWNpZmllZCBpbiBjb2x1bW4gNCwgb3RoZXJ3aXNlIENvbW1hbmRMaW5lLk9QVElPTkFMIHNob3VsZCBiZSBzcGVjaWZpZWQuCi0gICogPGxpPkEgaGVscCBmbGFnIG11c3QgYmUgc3BlY2lmaWVkLgotICAqIDxsaT5UaGUgc3RyaW5ncyBzcGVjaWZpZWQgaW4gdGhlIGZsYWdzIGNvbHVtbiwgdGhlIHBhcmFtZXRlciBuYW1lIGNvbHVtbiwgYW5kIHRoZQotICAqICAgICBoZWxwIGNvbHVtbiBhcmUgYWx3YXlzIHRyYW5zbGF0ZWQgdXNpbmcgdGhlIHJlc291cmNlIGJ1bmRsZSBzcGVjaWZpZWQuICBPZgotICAqICAgICBjb3Vyc2UgdGhlIHNwZWNpYWwgc3RyaW5nIHZhbHVlcyBzdWNoIGFzIFBPU0lUSU9OQUwgYW5kIE5PX1BBUk0gYXJlIG5vdAotICAqICAgICB0cmFuc2xhdGVkLgotICAqIDwvb2w+Ci0gICoKLSAgKiA8cD4gRmxhZyBtYXRjaGluZyBydWxlczoKLSAgKiA8b2w+Ci0gICogPGxpPlRoZSBwYXJzZXIgd2lsbCBhdHRlbXB0IHRvIG1hdGNoIGEgdXNlciBzcGVjaWZpZWQgZmxhZyB3aXRoIHRoZSBtaW5pbXVtIG51bWJlcgotICAqICAgICBvZiBwcm9ncmFtbWVyIHNwZWNpZmllZCBmbGFnIGNoYXJhY3RlcnMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIHByb2dyYW1tZXIgaGFzCi0gICogICAgIHNwZWNpZmllZCB0aGF0IHRoZSBmbGFnIGlzICJoZWxwIiB0aGUgdXNlciBjb3VsZCBzcGVjaWZ5ICItaCIsICItaGUiLCAiLWhlbCIsIG9yCi0gICogICAgICItaGVscCIuICBJZiB0aGUgcHJvZ3JhbW1lciBoYXMgYWxzbyBzcGVjaWZpZWQgYSBmbGFnIGNhbGxlZCAiaGVsbG8iLCB0aGUKLSAgKiAgICAgdXNlciB3b3VsZCBnZXQgYW4gZXJyb3IgbWVzc2FnZSBmb3Igc3BlY2lmaW5nIGVpdGhlciAiLWgiLCAiLWhlIiBvciAiLWhlbCIsIHNpbmNlCi0gICogICAgIGl0IGlzIGFtYmlndW91cyB3aGljaCBmbGFnIGlzIGJlaW5nIHJlZmVyZWQgdG8uICBCb3RoICItaGVsbCIgYW5kICItaGVsbG8iCi0gICogICAgIHdvdWxkIGJlIG9rIGZvciB0aGUgdXNlciB0byBzcGVjaWZ5IHRoZSBoZWxsbyBmbGFnIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0gICogPGxpPklmIGEgZmxhZyBoYXMgYSBwYXJhbWV0ZXIsIHRoZSBwYXJhbWV0ZXIgbWF5IGJlIGltbWVkaWF0ZWx5IGFkamFjZW50IHRvIHRoZSBmbGFnLgotICAqICAgICBGb3IgZXhhbXBsZSBpZiAiYWJjZCIgaXMgc3BlY2lmaWVkIGFzIGEgZmxhZyB3aXRoIGEgcGFyYW1ldGVyLCB0aGUgdXNlciBjb3VsZAotICAqICAgICBzcGVjaWZ5IHRoZSBmb2xsb3dpbmcgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIG90aGVyIGFtYmlndW91cyBmbGFncy4gIi1hYmNkcGFybSIsCi0gICogICAgICItYWJjcGFybSIsICItYWJwYXJtIiwgb3IgIi1hcGFybSIgd2hlcmUgcGFybSBpcyB0aGUgcGFyYW1ldGVyIGZvciB0aGUgZmxhZy4KLSAgKiAgICAgKE9mIGNvdXJzZSB0aGUgdXNlciBjYW4gYWx3YXlzIHB1dCBhIHdoaXRlIHNwYWNlIGJldHdlZW4gdGhlIGZsYWcgYW5kIHRoZQotICAqICAgICBwYXJhbWV0ZXIuKQotICAqIDxsaT5JZiBhIGZsYWcgZG9lcyBub3QgaGF2ZSBhIHBhcmFtZXRlciBhbmQgYSBwYXJhbWV0ZXIgaXMgYWRqYWNlbnQgdG8gaXQgdGhlbiB0aGlzCi0gICogICAgIHBhcmFtZXRlciBpcyBpbnRlcnByZXRlZCBhcyBhIHBvc2l0aW9uYWwgcGFyYW1ldGVyLiAgRm9yIGV4YW1wbGUgaWYgImFiY2IiIGlzCi0gICogICAgIHNwZWNpZmllZCBhcyBhIGZsYWcgYW5kIHRoZSB1c2VyIHNwZWNpZmllcyAiLWFiaGVsbG8iLCB0aGVuIHRoZSBmaXJzdCAiYWIiIHdpbGwgYmUKLSAgKiAgICAgaW50ZXJwcmV0ZWQgYXMgdGhlIGZsYWcgYW5kICJoZWxsbyIgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIHBvc2l0aW9uYWwKLSAgKiAgICAgcGFyYW1ldGVyLgotICAqIDwvb2w+Ci0gICoKLSAgKiBAYXV0aG9yIFBldGVyIE1vb2drCi0gICogQGRhdGUgICBKdWx5IDEzLCAyMDAwCi0qKi8KLQotcHVibGljIGNsYXNzIENvbW1hbmRMaW5lCi17Ci0gIC8vIENvbnN0YW50IHN0cmluZ3MgdGhhdCB0aGUgdXNlciBzaG91bGQgdXNlIGluIHRoZWlyIGZsYWdzX2luZm8gaW5wdXQgYXJyYXkuCi0gIC8qKgotICAgICogU3BlY2lmaWVzIHRoYXQgdGhpcyBmbGFnIG9yIHBvc2l0aW9uYWwgcGFyYW1ldGVyIGlzIHJlcXVpcmVkLgotICAqKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVRVUlSRUQgICA9ICJyZXF1aXJlZCI7Ci0gIC8qKgotICAgICogU3BlY2lmaWVzIHRoYXQgdGhpcyBmbGFnIG9yIHBvc2l0aW9uYWwgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLgotICAqKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1BUSU9OQUwgICA9ICJvcHRpb25hbCI7Ci0gIC8qKgotICAgICogU3BlY2lmaWVzIHRoYXQgdGhpcyBmbGFnIG1heSBiZSBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2Ugb24gdGhlIGNvbW1hbmQgbGluZS4KLSAgICAqIE5vdGU6IFRoaXMgc3RyaW5nIGhhcyBubyBtZWFuaW5nIGZvciBwb3NpdGlvbmFsIHBhcmFtZXRlcnMuCi0gICoqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBEVVBTX09LICAgID0gImR1cHNfb2siOwotICAvKioKLSAgICAqIFNwZWNpZmllcyB0aGF0IHRoaXMgZmxhZyBtYXkgbm90IGJlIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSBvbiB0aGUgY29tbWFuZCBsaW5lLgotICAgICogTm90ZTogVGhpcyBzdHJpbmcgaGFzIG5vIG1lYW5pbmcgZm9yIHBvc2l0aW9uYWwgcGFyYW1ldGVycy4KLSAgKiovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5PX0RVUFMgICAgPSAibm9fZHVwcyI7Ci0gIC8qKgotICAgICogU3BlY2lmaWVzIHRoYXQgYSByb3cgaXMgYSBwb3NpdGlvbmFsIHBhcmFtZXRlciByb3cuCi0gICoqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQT1NJVElPTkFMID0gIiI7Ci0gIC8qKgotICAgICogU3BlY2lmaWVzIHRoYXQgYSBmbGFnIGhhcyBubyBwYXJhbWV0ZXIuICBGb3IgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIHRoaXMKLSAgICAqIHN0cmluZyBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgbm8gb3B0aW9uYWwgcGFyYW1ldGVycy4KLSAgKiovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5PX1BBUk0gICAgPSAiIjsKLSAgCi0gIC8qKgotICAgICogQHBhcmFtIGZsYWdzX2luZm8gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlCi0gICAgKiAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpbmUgcGFyc2VyLiAgU2VlIHRoZSBjbGFzcyBkZXNjcmlwdGlvbiBmb3IgYQotICAgICogICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiBvZiB3aGF0IHRoaXMgc3RyaW5nIGFycmF5IHNob3VsZCBsb29rIGxpa2UuCi0gICAgKiBAcGFyYW0gaGVscF9mbGFnICBUaGlzIHN0cmluZyBpbmRpY2F0ZXMgd2hpY2ggZmxhZyBpbiB0aGUgZmxhZ3NfaW5mbwotICAgICogICAgICAgICAgICAgICAgICAgYXJyYXkgaXMgdGhlIGhlbHAgZmxhZy4KLSAgICAqIEBwYXJhbSB0b29sX25hbWUgIFRoaXMgc3RyaW5nIGluZGljYXRlcyB0aGUgbmFtZSBvZiB0aGUgdG9vbCB0aGF0IHRoaXMKLSAgICAqICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGluZSBwYXJzZXIgaXMgYmVpbmcgdXNlZCBmb3IuICBUaGlzIHN0cmluZwotICAgICogICAgICAgICAgICAgICAgICAgaXMgb25seSB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIGhlbHAgdGV4dC4KLSAgKiovCi0gIHB1YmxpYyBDb21tYW5kTGluZSggU3RyaW5nW11bXSAgICAgZmxhZ3NfaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgaGVscF9mbGFnLAotICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICB0b29sX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlQnVuZGxlIGZsYWdNZXNzYWdlcyApCi0gICAgICAgICAgICAgICAgICAgCi0gICAgdGhyb3dzIEludGVybmFsRXJyb3JFeGMKLSAgewotICAgIHRoaXMuZmxhZ3NfaW5mbyAgID0gZmxhZ3NfaW5mbzsKLSAgICB0aGlzLmhlbHBfZmxhZyAgICA9IGhlbHBfZmxhZzsKLSAgICB0aGlzLnRvb2xfbmFtZSAgICA9IHRvb2xfbmFtZTsKLSAgICB0aGlzLmZsYWdNZXNzYWdlcyA9IGZsYWdNZXNzYWdlczsKLSAgICAKLSAgICBtZXNzYWdlcyA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSggIm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tYW5kbGluZS5jb21tYW5kbGluZSIgKTsKLSAgICB2ZXJpZnlfZmxhZ3NfaW5mbygpOwotICB9Ci0KLSAgLyoqCi0gICAgKiBDYWxsIHRoaXMgbWV0aG9kIHRvIHBhcnNlIGEgY29tbWFuZCBsaW5lLgotICAgICogQHBhcmFtIGFyZ3MgVGhpcyBpcyB0aGUgc3RyaW5nIGFycmF5IGZyb20gdGhlIGNvbW1hbmQgbGluZS4KLSAgICAqIEB0aHJvd3MgRmxhZ19lcnJvciBJZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIHRoZSBjb21tYW5kIGxpbmUgaW5jb3JyZWN0bHkKLSAgICAqICAgICAgICAgICAgICAgICAgICBhIEZsYWdfZXJyb3IgZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLiAgVXNlIGdldE1lc3NhZ2UKLSAgICAqICAgICAgICAgICAgICAgICAgICB0byBnZXQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdXNlciBlcnJvci4KLSAgICAqCi0gICAgKiBAdGhyb3dzIEhlbHBfc3BlY2lmaWVkIElmIHRoZSB1c2VyIHNwZWNpZmllcyB0aGUgaGVscCBmbGFnIHRoaXMgZXhjZXB0aW9uCi0gICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgdGhyb3duLiAgVXNlIGdldE1lc3NhZ2UgdG8gZ2V0IGEgZnVsbHkKLSAgICAqICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIHN5bnRheCBkZXNjcmlwdGlvbiBvZiB0aGlzIGNvbW1hbmQgbGluZS4KLSAgKiovCi0gIHB1YmxpYyB2b2lkIGNoZWNrX2ZsYWdzKCBTdHJpbmdbXSBhcmdzICkgdGhyb3dzIEZsYWdfZXJyb3IKLSAgewotICAgIGZsYWdzX3NwZWNpZmllZCA9IG5ldyBWZWN0b3JbZmxhZ3NfaW5mby5sZW5ndGhdOwotCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3MubGVuZ3RoOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBib29sZWFuIHByb2Nlc3NlZF90aGVfbmV4dF9hcmcgPSBwcm9jZXNzX2FyZyggYXJncywgaW5kZXggKTsKLSAgICAgIGlmKCBwcm9jZXNzZWRfdGhlX25leHRfYXJnID09IHRydWUgKSBpbmRleCsrOwotICAgIH0KLQotICAgIC8vIElmIGhlbHAgd2FzIHNwZWNpZmllZCB3ZSB3aWxsIG5vdCBjaGVjayB0aGUgcmVndWxhciBydWxlcy4KLSAgICBpZiggIWZsYWdfc3BlY2lmaWVkKCBoZWxwX2ZsYWcgKSApCi0gICAgewotICAgICAgLy8gQ2hlY2sgZm9yIGZsYWdzIGJyZWFraW5nIHRoZSBydWxlcyBzcGVjaWZpZWQgaW4gZmxhZ3NfaW5mby4KLSAgICAgIGNoZWNrX3J1bGVzKCk7Ci0KLSAgICAgIC8vIENhbGwgc3ViY2xhc3NlZCBtZXRob2QgdG8gc2VlIGlmIG1vcmUgcHJvY2Vzc2luZyBpcyByZXF1aXJlZC4KLSAgICAgIG1vcmVfcHJvY2Vzc2luZygpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgICogVGhpcyBtZXRob2QgaXMgZm9yIHN1YmNsYXNzZXMgb2YgdGhpcyBjbGFzcy4gIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBhdAotICAgICogdGhlIHZlcnkgZW5kIG9mIGNoZWNrX2ZsYWdzIG1ldGhvZC4gIEl0IGlzIGludGVuZGVkIHRoYXQgc3ViY2xhc3NlcyB3b3VsZAotICAgICogcGVyZm9ybSBhZGRpdGlvbmFsIGNvbW1hbmQgbGluZSBjaGVja2luZyBoZXJlLgotICAqKi8KLSAgcHJvdGVjdGVkIHZvaWQgbW9yZV9wcm9jZXNzaW5nKCkgdGhyb3dzIEZsYWdfZXJyb3IsIEludGVybmFsRXJyb3JFeGMKLSAgewotICB9Ci0KLSAgLyoqCi0gICAgKiBPbmNlIHRoZSBjb21tYW5kIGxpbmUgaGFzIGJlZW4gcGFyc2VkIGJ5IGNhbGxpbmcgY2hlY2tfZmxhZ3MgYQotICAgICogY2FsbCBjYW4gYmUgbWFkZSB0byB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoaXMgZmxhZy4KLSAgICAqIElmIHRoZSBmbGFnIHdhcyBub3Qgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUgbnVsbCB3aWxsIGJlIHJldHVybmVkLgotICAgICogSWYgdGhlIGZsYWcgd2FzIHNwZWNpZmllZCwgYnV0IGhhcyBubyBwYXJhbWV0ZXJzIGEgdmFsaWQgdmVjdG9yIHdpbGwgYmUKLSAgICAqIHJldHVybmVkIGNvbnRhaW5pbmcgYSBudWxsLgotICAqKi8KLSAgcHVibGljIFN0cmluZ1tdIGdldF9mbGFnX3Bhcm1zKCBTdHJpbmcgZmxhZyApCi0gIHsKLSAgICBpbnQgICAgIHJvdyAgICAgICAgPSAwOwotICAgIGJvb2xlYW4gZmxhZ19mb3VuZCA9IGZhbHNlOwotCi0gICAgd2hpbGUoIGZsYWdfZm91bmQgPT0gZmFsc2UgJiYgcm93IDwgZmxhZ3NfaW5mby5sZW5ndGggKQotICAgIHsKLSAgICAgIGlmKCBmbGFnc19pbmZvW3Jvd11bRkxBR19DT0xdLmVxdWFscyggZmxhZyApICkKLSAgICAgIHsKLSAgICAgICAgZmxhZ19mb3VuZCA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJvdysrOwotICAgICAgfQotICAgIH0KLQotICAgIGlmKCBmbGFnX2ZvdW5kID09IHRydWUgKSAKLSAgICB7Ci0gICAgICBWZWN0b3IgcGFybXMgPSBmbGFnc19zcGVjaWZpZWRbcm93XTsKLSAgICAgIHJldHVybiBwYXJtcyA9PSBudWxsID8gbnVsbCA6IChTdHJpbmdbXSkocGFybXMudG9BcnJheSggbmV3IFN0cmluZ1swXSApKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgICogQ2FsbCB0aGlzIG1ldGhvZCB0byBnZXQgYWxsIG9mIHRoZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMuCi0gICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGJvdGggdGhlIHJlcXVpcmVkIHBvc2l0aW9uYWxzIGFuZCB0aGUKLSAgICAqIG9wdGlvbmFsIHBvc2l0aW9uYWxzIGluIHRoYXQgb3JkZXIuICBJZiBubyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMKLSAgICAqIHdlcmUgc3BlY2lmaWVkIG51bGwgd2lsbCBiZSByZXR1cm5lZC4KLSAgKiovCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRfcG9zaXRpb25hbHMoKQotICB7Ci0gICAgcmV0dXJuIChTdHJpbmdbXSlmbGFnc19zcGVjaWZpZWRbUE9TSVRJT05BTF9ST1ddLnRvQXJyYXkoIG5ldyBTdHJpbmdbMF0gKTsKLSAgfQotCi0gIC8qKgotICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0cnVlIGlmIHRoaXMgZmxhZyB3YXMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyCi0gICAgKiBvdGhlcndpc2UgZmFsc2UgaXMgcmV0dXJuZWQuCi0gICoqLwotICBwdWJsaWMgYm9vbGVhbiBmbGFnX3NwZWNpZmllZCggU3RyaW5nIGZsYWcgKQotICB7Ci0gICAgcmV0dXJuIGdldF9mbGFnX3Bhcm1zKCBmbGFnICkgIT0gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBmdWxseSBmb3JtYXRlZCBoZWxwIHRleHQgc3ludGF4IGZvciB0aGlzCi0gICAgKiBjb21tYW5kIGxpbmUuCi0gICoqLwotICBwdWJsaWMgU3RyaW5nIGdldF9oZWxwX3RleHQoKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGhlbHBfdGV4dCAgPSBuZXcgU3RyaW5nQnVmZmVyKDQwMCk7Ci0gICAgaW50ICAgICAgICAgIGhlbHBfd2lkdGggPSBIRUxQX0xJTkVfTEVOIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLSAgICAgICAgICAgICAgLy8gYmxhbmtzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gICAgICAgICAgICAgIC8vIGRhc2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9mbGFnX3NpemUgLSAgLy8gZmxhZyBmaWVsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtICAgICAgICAgICAgICAvLyBibGFuawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X25hbWVfc2l6ZSAtICAvLyBuYW1lIGZpZWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOyAgICAgICAgICAgICAgIC8vIGJsYW5rCi0KLSAgICBoZWxwX3RleHQuYXBwZW5kKCBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfSU5GT19TWU5UQVggKSArCi0gICAgICAgICAgICAgICAgICAgICAgIjogIiArIHRvb2xfbmFtZSArICIgIiApOwotCi0gICAgLy8gRGlzcGxheSB0aGUgcmVxdWlyZWQgcG9zaXRpb25hbHMgaWYgYW55LgotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCByZXF1aXJlZF9wb3NpdGlvbmFsczsgaW5kZXgrKyApCi0gICAgewotICAgICAgaGVscF90ZXh0LmFwcGVuZCggZmxhZ01lc3NhZ2VzLmdldFN0cmluZyggZmxhZ3NfaW5mb1tpbmRleF1bTkFNRV9DT0xdICkgKwotICAgICAgICAgICAgICAgICAgICAgICAgIiAiICk7Ci0gICAgfQotCi0gICAgaGVscF90ZXh0LmFwcGVuZCggIlsiICsgbWVzc2FnZXMuZ2V0U3RyaW5nKCBGbGFnTWVzc2FnZXMuUEFSU0VSX0ZMQUdTICkgKwotICAgICAgICAgICAgICAgICAgICAgICJdICIgKTsKLQotICAgIGlmKCBvcHRpb25hbF9wb3NpdGlvbmFsc19hbGxvd2VkID09IHRydWUgKQotICAgIHsKLSAgICAgIGhlbHBfdGV4dC5hcHBlbmQoIGZsYWdNZXNzYWdlcy5nZXRTdHJpbmcoIGZsYWdzX2luZm9bb3B0aW9uYWxfbGlzdF9pbmRleF1bTkFNRV9DT0xdICkgKTsKLSAgICB9Ci0KLSAgICBoZWxwX3RleHQuYXBwZW5kKCAiXG4gICIgKyBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfSU5GT19XSEVSRSApICsgIlxuIiApOwotCi0gICAgLy8gQ3JlYXRlIG9uZSBsaW5lIG9mIGRlc2NyaXB0aW9uIGZvciBlYWNoIHBhcmFtZXRlcgotICAgIGZvciggaW50IHJvdyA9IDA7IHJvdyA8IGZsYWdzX2luZm8ubGVuZ3RoOyByb3crKyApCi0gICAgewotICAgICAgU3RyaW5nIGNvbHVtbklkICAgPSBmbGFnc19pbmZvW3Jvd11bTkFNRV9DT0xdOwotICAgICAgU3RyaW5nIGNvbHVtbk5hbWUgPSBjb2x1bW5JZCA9PSBOT19QQVJNID8gIiIgOiBmbGFnTWVzc2FnZXMuZ2V0U3RyaW5nKCBjb2x1bW5JZCApOwotCi0gICAgICBTdHJpbmcgZmxhZ0lkICAgICA9IGZsYWdzX2luZm9bcm93XVtGTEFHX0NPTF07Ci0gICAgICBTdHJpbmcgZmxhZ05hbWUgICA9IGZsYWdJZCA9PSBQT1NJVElPTkFMID8gUE9TSVRJT05BTCA6IGZsYWdNZXNzYWdlcy5nZXRTdHJpbmcoZmxhZ0lkKTsKLQotICAgICAgaW50IGZsYWdfcGFkZGluZyA9IG1heF9mbGFnX3NpemUgLSBmbGFnTmFtZS5sZW5ndGgoKTsKLSAgICAgIGludCBuYW1lX3BhZGRpbmcgPSBtYXhfbmFtZV9zaXplIC0gY29sdW1uTmFtZS5sZW5ndGgoKTsKLQotICAgICAgLy8gU2tpcCB0aGlzIHJvdyBpZiB0aGlzIGlzIGEgbWFya2VyIGZvciBubyBvcHRpb25hbCBwb3NpdGlvbmFscy4KLSAgICAgIGlmKCBmbGFnc19pbmZvW3Jvd11bRkxBR19DT0xdID09IFBPU0lUSU9OQUwgJiYKLSAgICAgICAgICBmbGFnc19pbmZvW3Jvd11bTkFNRV9DT0xdID09IE5PX1BBUk0gKSBjb250aW51ZTsKLQotICAgICAgaWYoIGZsYWdOYW1lID09IFBPU0lUSU9OQUwgKQotICAgICAgewotICAgICAgICBoZWxwX3RleHQuYXBwZW5kKCBnZXRCbGFua3MoMyApICk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGhlbHBfdGV4dC5hcHBlbmQoICIgIC0iICsgZmxhZ05hbWUgKTsKLSAgICAgIH0KLQotICAgICAgaGVscF90ZXh0LmFwcGVuZCggZ2V0QmxhbmtzKCBmbGFnX3BhZGRpbmcgKyAxICkgKTsKLSAgICAgIGhlbHBfdGV4dC5hcHBlbmQoIGNvbHVtbk5hbWUgKTsKLSAgICAgIGhlbHBfdGV4dC5hcHBlbmQoIGdldEJsYW5rcyggbmFtZV9wYWRkaW5nICsgMSApICk7Ci0KLSAgICAgIFN0cmluZyAgIGNvbHVtbkhlbHAgPSBmbGFnTWVzc2FnZXMuZ2V0U3RyaW5nKCBmbGFnc19pbmZvW3Jvd11bSEVMUF9DT0xdICk7Ci0gICAgICBTdHJpbmdbXSBzcGxpdF9oZWxwX3RleHQKLSAgICAgICAgPSBTdHJpbmdVdGlscy5zcGxpdHRlciggY29sdW1uSGVscCwgaGVscF93aWR0aCApOwotCi0gICAgICBpZiggc3BsaXRfaGVscF90ZXh0Lmxlbmd0aCA+IDAgKQotICAgICAgICBoZWxwX3RleHQuYXBwZW5kKCBzcGxpdF9oZWxwX3RleHRbMF0gKyAiXG4iICk7Ci0gICAgICBlbHNlCi0gICAgICAgIGhlbHBfdGV4dC5hcHBlbmQoICJcbiIgKTsKLQotICAgICAgZm9yKCBpbnQgaW5kZXggPSAxOyBpbmRleCA8IHNwbGl0X2hlbHBfdGV4dC5sZW5ndGg7IGluZGV4KysgKQotICAgICAgewotICAgICAgICBoZWxwX3RleHQuYXBwZW5kKCBnZXRCbGFua3MoIEhFTFBfTElORV9MRU4gLSBoZWxwX3dpZHRoICkgKTsKLSAgICAgICAgaGVscF90ZXh0LmFwcGVuZCggc3BsaXRfaGVscF90ZXh0W2luZGV4XSArICJcbiIgKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgaGVscF90ZXh0LmFwcGVuZCggIlxuIiApOwotICAgIH0KLQotICAgIHJldHVybiAiIiArIGhlbHBfdGV4dDsKLSAgfQotICAKLSAgLyoqCi0gICAqICBSZXR1cm4gYSBzdHJpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBibGFua3MuCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBnZXRCbGFua3MoIGludCBjb3VudCApCi0gIHsKLSAgCWNoYXJbXSBibGFua3MgPSBuZXcgY2hhcltjb3VudF07Ci0gIAlBcnJheXMuZmlsbCggYmxhbmtzLCAwLCBjb3VudCwgJyAnICk7Ci0gIAkKLSAgCXJldHVybiBuZXcgU3RyaW5nKCBibGFua3MgKTsKLSAgfQotCi0gIC8qKgotICAgICogVGhpcyBjbGFzcyBpcyB0aGUgYmFzZSBmb3IgYWxsIGNvbW1hbmQgbGluZSBleGNlcHRpb24gY2xhc3Nlcy4KLSAgKiovCi0gIHN0YXRpYyBwdWJsaWMgY2xhc3MgRXJyb3JFeGMgZXh0ZW5kcyBFeGNlcHRpb24KLSAgewotICAJLyoqCi0JICogQ29tbWVudCBmb3IgPGNvZGU+c2VyaWFsVmVyc2lvblVJRDwvY29kZT4KLQkgKi8KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAzMjU3NTY3MzE3MjU5NzkzNzIwTDsKLQotCXB1YmxpYyBFcnJvckV4YyggU3RyaW5nIG1lc3NhZ2UsIFN0cmluZ1tdIGFyZ3MgKQotICAJewotICAJICBzdXBlciggTWVzc2FnZUZvcm1hdC5mb3JtYXQoIG1lc3NhZ2UsIGFyZ3MgKSApOwotICAJfQotICB9Ci0KLSAgLyoqCi0gICAgKiBUaGlzIGNsYXNzIHdpbGwgYmUgdGhyb3duIHdoZW4gYW4gaW50ZXJuYWwgZXJyb3IgaXMgZGV0ZWN0ZWQuCi0gICAgKiBUaGlzIHVzdWFsbHkgaGFwcGVucyBpZiB0aGUgZmxhZyBkZXNjcmlwdGlvbiBpbmZvcm1hdGlvbiB3YXMKLSAgICAqIHNwZWNpZmllZCBpbmNvcnJlY3RseS4KLSAgKiovCi0gIHN0YXRpYyBwdWJsaWMgY2xhc3MgSW50ZXJuYWxFcnJvckV4YyBleHRlbmRzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgotICB7ICAJCi0gIAkvKioKLQkgKiBDb21tZW50IGZvciA8Y29kZT5zZXJpYWxWZXJzaW9uVUlEPC9jb2RlPgotCSAqLwotCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDMyNTg0MTA2MjExMzY2MTQ0NTBMOwotCi0JcHVibGljIEludGVybmFsRXJyb3JFeGMoIFN0cmluZyBtZXNzYWdlLCBTdHJpbmdbXSBhcmdzICkKLSAgCXsKLSAgCSAgc3VwZXIoIE1lc3NhZ2VGb3JtYXQuZm9ybWF0KCBtZXNzYWdlLCBhcmdzICkgKTsKLSAgCX0KLSAgCQotICAJcHVibGljIEludGVybmFsRXJyb3JFeGMoIFN0cmluZyBtZXNzYWdlICkKLSAgCXsKLSAgCSAgdGhpcyggbWVzc2FnZSwgKFN0cmluZ1tdKW51bGwgKTsKLSAgCX0KLSAgCQotICAJcHVibGljIEludGVybmFsRXJyb3JFeGMoIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgYXJnICkKLSAgCXsKLSAgCSAgdGhpcyggbWVzc2FnZSwgbmV3IFN0cmluZ1tdeyBhcmcgfSApOwotICAJfQotICB9Ci0KLSAgLyoqCi0gICAgKiBUaGlzIGNsYXNzIHdpbGwgYmUgdGhyb3duIGlmIGEgdXNlciBlcnJvciBvY2N1cnMgd2hpbGUgcGFyc2luZyB0aGUgY29tbWFuZCBsaW5lLgotICAqKi8KLSAgc3RhdGljIHB1YmxpYyBjbGFzcyBGbGFnX2Vycm9yIGV4dGVuZHMgRXJyb3JFeGMKLSAgewotICAgIC8qKgotCSAqIENvbW1lbnQgZm9yIDxjb2RlPnNlcmlhbFZlcnNpb25VSUQ8L2NvZGU+Ci0JICovCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMzgzMjYyMTc3Njg3NzY2MzUzN0w7Ci0KLQlwdWJsaWMgRmxhZ19lcnJvciggU3RyaW5nIG1lc3NhZ2UsIFN0cmluZ1tdIGFyZ3MgKQotICAgIHsKLSAgICAgIHN1cGVyKCBtZXNzYWdlLCBhcmdzICk7Ci0gICAgfQotCi0gICAgcHVibGljIEZsYWdfZXJyb3IoIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgYXJnICkKLSAgICB7Ci0gICAgICBzdXBlciggbWVzc2FnZSwgbmV3IFN0cmluZ1tdeyBhcmcgfSApOwotICAgIH0KLQotICAgIHB1YmxpYyBGbGFnX2Vycm9yKCBTdHJpbmcgbWVzc2FnZSApCi0gICAgewotICAgICAgc3VwZXIoIG1lc3NhZ2UsIG51bGwgKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICAqIFRyaWVzIHRvIHByb2Nlc3MgYSBzaW5nbGUgZmxhZyBvbiB0aGUgY29tbWFuZCBsaW5lLgotICAgICogQHBhcmFtICBhcmdzICAgICAgQWxsIHRoZSBjb21tYW5kIGxpbmUgcGFyYW1ldGVycy4KLSAgICAqIEBwYXJhbSAgYXJnX2luZGV4IFRoaXMgaXMgdGhlIGluZGV4IG9mIHRoZSBhcmd1bWVudCB0aGF0IGlzIHRvIGJlIHByb2Nlc3NlZC4KLSAgICAqIEByZXR1cm4gcmV0dXJucyB0cnVlIGlmIHRoZSBhcmd1bWVudCB3ZSBhcmUgcHJvY2Vzc2luZyBpcyBhIGZsYWcgdGhhdCBoYXMgYQotICAgICogICAgICAgICBwYXJhbWV0ZXIgYW5kIHRoZSBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBuZXh0IGFyZ3VtZW50LgotICAqKi8KLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NfYXJnKCBTdHJpbmdbXSBhcmdzLCBpbnQgYXJnX2luZGV4ICkgdGhyb3dzIEZsYWdfZXJyb3IKLSAgewotICAgIGJvb2xlYW4gcHJvY2Vzc2VkX25leHRfYXJnID0gZmFsc2U7Ci0KLSAgICBpZiggYXJnc1thcmdfaW5kZXhdLmNoYXJBdCgwKSA9PSAnLScgKQotICAgIHsKLSAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgZmxhZy4KLSAgICAgIGludCBmbGFnX2luZGV4ID0gMTsKLSAgICAgIGludCBpbmZvX2luZGV4ID0gZ2V0X2luZm9faW5kZXgoIGFyZ3NbYXJnX2luZGV4XSwgZmxhZ19pbmRleCApOwotICAgICAgaW50IG1heF9pbmRleCAgPSBnZXRfbWF4X2luZGV4KCBhcmdzW2FyZ19pbmRleF0sIGZsYWdfaW5kZXgsIGluZm9faW5kZXggKTsKLQotICAgICAgaWYoIGZsYWdzX2luZm9baW5mb19pbmRleF1bTkFNRV9DT0xdICE9IE5PX1BBUk0gKQotICAgICAgewotICAgICAgICAvLyBUaGlzIGZsYWcgdGFrZXMgYSBwYXJhbWV0ZXIgc28gY2hlY2sgaWYgaXQgaXMgc3R1Y2sgdG8gdGhpcwotICAgICAgICAvLyBhcmcuCi0gICAgICAgIGlmKCBtYXhfaW5kZXggPCBhcmdzW2FyZ19pbmRleF0ubGVuZ3RoKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgYWRkX2ZsYWdfcGFybSggaW5mb19pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzW2FyZ19pbmRleF0uc3Vic3RyaW5nKCBtYXhfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1thcmdfaW5kZXhdLmxlbmd0aCgpICkgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBUaGlzIGZsYWcgaGFzIGEgcGFyYW1ldGVyIGFuZCBpdCB3YXNuJ3Qgc3R1Y2sgdG8gdGhlIGZsYWcsCi0gICAgICAgICAgLy8gc28gd2Ugd2lsbCB0cnkgdG8gZ2V0IGl0IGZyb20gdGhlIG5leHQgYXJnLgotICAgICAgICAgIGlmKCBhcmdfaW5kZXgrMSA8IGFyZ3MubGVuZ3RoICYmCi0gICAgICAgICAgICAgIGFyZ3NbYXJnX2luZGV4KzFdLmNoYXJBdCgwKSAhPSAnLScgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFdlIGZvdW5kIGFuIHBhcmFtZXRlciBpbiB0aGUgbmV4dCBzdHJpbmcgc28gd2Ugd2lsbCB1c2UgdGhpcwotICAgICAgICAgICAgLy8gb25lIGFzIGEgcGFyYW1ldGVyIGZvciB0aGlzIGZsYWcuICBOb3RlOiBpZiB3YXMgbm8gcGFyYW1ldGVyCi0gICAgICAgICAgICAvLyBhZnRlciB0aGUgZmxhZyBhdCBhbGwsIHRoZSBlcnJvciB3aWxsIGJlIGNhdWdodCBpbiB0aGUKLSAgICAgICAgICAgIC8vIGNoZWNrX3J1bGVzIG1ldGhvZC4KLSAgICAgICAgICAgIGFkZF9mbGFnX3Bhcm0oIGluZm9faW5kZXgsIGFyZ3NbYXJnX2luZGV4KzFdICk7Ci0gICAgICAgICAgICBwcm9jZXNzZWRfbmV4dF9hcmcgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gRXJyb3IgbWlzc2luZyBwYXJhbWF0ZXIuIFRoaXMgZXJyb3IgaXMgY2F1Z2h0IGJ5IGNoZWNrX3J1bGVzLgotICAgICAgICAgICAgYWRkX2ZsYWdfcGFybSggaW5mb19pbmRleCwgbnVsbCApOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBUaGUgZmxhZyBkb2VzIG5vdCBoYXZlIGEgcGFyYW1ldGVyIHNvIHdlIHdpbGwgYWRkIGEgbnVsbC4KLSAgICAgICAgYWRkX2ZsYWdfcGFybSggaW5mb19pbmRleCwgbnVsbCApOwotCi0gICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIHBvc2l0aW9uYWwgcGFyYW1ldGVyIGlzIHN0dWNrIHRvIHRoaXMgZmxhZy4KLSAgICAgICAgaWYoIG1heF9pbmRleCA8IGFyZ3NbYXJnX2luZGV4XS5sZW5ndGgoKSApCi0gICAgICAgIHsKLSAgICAgICAgICBhZGRfcG9zaXRpb25hbCggYXJnc1thcmdfaW5kZXhdLnN1YnN0cmluZyggbWF4X2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzW2FyZ19pbmRleF0ubGVuZ3RoKCkgKSApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBUaGlzIGlzIGEgcG9zaXRpb25hbCBwYXJhbWV0ZXIuCi0gICAgICBhZGRfcG9zaXRpb25hbCggYXJnc1thcmdfaW5kZXhdICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHByb2Nlc3NlZF9uZXh0X2FyZzsKLSAgfQotCi0gIC8qKgotICAgICogRmluZHMgdGhlIHJvdyBmb3IgdGhlIGZsYWcgdGhhdCB1bmlxdWVseSBtYXRjaGVkIHRoaXMgZmxhZyBzdHIuCi0gICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGZsYWdzX2luZm8gaW5kZXggb2YgdGhlIG1hdGNoaW5nIGZsYWcuCi0gICoqLwotICBwcml2YXRlIGludCBnZXRfaW5mb19pbmRleCggU3RyaW5nIGZsYWdfc3RyLCBpbnQgc3RhcnRfaW5kZXggKQotICAgIHRocm93cyBGbGFnX2Vycm9yCi0gIHsKLSAgICAvL2ludCBpbmZvX3N0YXJ0ICA9IDE7Ci0gICAgLy9pbnQgaW5mb19lbmQgICAgPSBmbGFnc19pbmZvLmxlbmd0aDsKLSAgICBpbnQgaW5mb19pbmRleDsKLSAgICBpbnQgZm91bmRfY291bnQgPSAwOwotICAgIGludCBpbmZvX2NvbF9pbmRleCA9IDA7Ci0gICAgaW50IGxhc3RfaW5mb19pbmRleCA9IDA7Ci0KLSAgICBCaXRTZXQgZmxhZ3NfcmVqZWN0ZWQgPSBuZXcgQml0U2V0KCk7Ci0KLSAgICAvLyBMb29wIG92ZXIgZWFjaCBjaGFyIGluIGZsYWdfc3RyLiAgTm90ZTogd2Ugd2lsbCBwcm9iYWJseSBiYWlsIGVhcmx5LgotICAgIGZvciggaW50IGZsYWdfY29sX2luZGV4ID0gc3RhcnRfaW5kZXg7IGZsYWdfY29sX2luZGV4IDwgZmxhZ19zdHIubGVuZ3RoKCk7IGZsYWdfY29sX2luZGV4KysgKQotICAgIHsKLSAgICAgIC8vIExvb3Agb3ZlciBlYWNoIGZsYWcgaW4gZmxhZ19pbmZvCi0gICAgICBmb3IoIGluZm9faW5kZXggPSAwOyBpbmZvX2luZGV4IDwgZmxhZ3NfaW5mby5sZW5ndGg7IGluZm9faW5kZXgrKyApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBmbGFnSWQgICA9IGZsYWdzX2luZm9baW5mb19pbmRleF1bRkxBR19DT0xdOwotICAgICAgICBTdHJpbmcgZmxhZ05hbWUgPSBmbGFnSWQgPT0gUE9TSVRJT05BTCA/IFBPU0lUSU9OQUwgOiBmbGFnTWVzc2FnZXMuZ2V0U3RyaW5nKCBmbGFnSWQgKTsKLQotICAgICAgICBpZiggZmxhZ3NfcmVqZWN0ZWQuZ2V0KCBpbmZvX2luZGV4ICkgPT0gZmFsc2UgJiYKLSAgICAgICAgICAgIGluZm9fY29sX2luZGV4IDwgZmxhZ05hbWUubGVuZ3RoKCkgJiYKLSAgICAgICAgICAgICAgQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGZsYWdfc3RyLmNoYXJBdChmbGFnX2NvbF9pbmRleCkpID09Ci0gICAgICAgICAgICAgIGZsYWdOYW1lLmNoYXJBdChpbmZvX2NvbF9pbmRleCkgKQotICAgICAgICB7Ci0gICAgICAgICAgZm91bmRfY291bnQrKzsKLSAgICAgICAgICBsYXN0X2luZm9faW5kZXggPSBpbmZvX2luZGV4OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGZsYWdzX3JlamVjdGVkLnNldCggaW5mb19pbmRleCApOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmKCBmb3VuZF9jb3VudCA9PSAxICkKLSAgICAgIHsKLSAgICAgICAgLy8gV2UgaGF2ZSBhIG1hdGNoLgotICAgICAgICByZXR1cm4gbGFzdF9pbmZvX2luZGV4OwotICAgICAgfQotICAgICAgZWxzZSBpZiggZm91bmRfY291bnQgPT0gMCApCi0gICAgICB7Ci0gICAgICAgIC8vIEZsYWcgbm90IGZvdW5kIGF0IGFsbC4KLSAgICAgICAgdGhyb3cgbmV3IEZsYWdfZXJyb3IoIG1lc3NhZ2VzLmdldFN0cmluZyggRmxhZ01lc3NhZ2VzLlBBUlNFUl9FUlJPUl9GTEFHX05PVF9GT1VORCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19zdHIuc3Vic3RyaW5nKCBzdGFydF9pbmRleCApICk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIE1vcmUgdGhhbiBvbmUgZmxhZyB3YXMgZm91bmQgd2l0aCB0aGlzIGNoYXIgc28gd2Ugd2lsbCBnbyB0byB0aGUKLSAgICAgICAgLy8gbmV4dCBjaGFyIHRvIHVuaXF1ZWx5IG1hdGNoIGl0LgotICAgICAgICBpbmZvX2NvbF9pbmRleCsrOwotICAgICAgICAvL2luZm9fc3RhcnQgPSBsYXN0X2luZm9faW5kZXggLSBmb3VuZF9jb3VudCArIDE7Ci0gICAgICAgIC8vaW5mb19lbmQgICA9IGxhc3RfaW5mb19pbmRleCArIDE7Ci0gICAgICAgIGZvdW5kX2NvdW50ID0gMDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBUaGUgb25seSB3YXkgdG8gZ2V0IHRvIHRoaXMgY29kZSBpcyBpZiB0aGUgbG9vcCBleGl0ZWQgd2l0aAotICAgIC8vIHRoZSBmb3VuZF9jb3VudCBncmVhdGVyIHRoYW4gMS4gIFRoZXJlZm9yZSwgdGhlIGZsYWcgc3BlY2lmaWVkIGlzCi0gICAgLy8gYW1iaWd1b3VzLgotICAgIHRocm93IG5ldyBGbGFnX2Vycm9yKCBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfRVJST1JfQU1CSUdVT1VTX0ZMQUcgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19zdHIuc3Vic3RyaW5nKCBzdGFydF9pbmRleCkgKTsKLSAgfQotCi0gIC8qKgotICAgICogVGhpcyBtZXRob2QgdHJpZXMgdG8gbWF0Y2ggYXMgbWFueSBjaGFyYWN0ZXJzIGFzIHBvc3NpYmxlIG9mIHRoZSB1c2VyCi0gICAgKiBzcGVjaWZpZWQgZmxhZyB3aXRoIHRoZSBtYXRjaGVkIGZsYWcgc3RyaW5nLgotICAgICogQHJldHVybiByZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGFzdCBtYXRjaGluZyBmbGFnIGNoYXJhcmFjdGVyLgotICAqKi8KLSAgcHJpdmF0ZSBpbnQgZ2V0X21heF9pbmRleCggU3RyaW5nIGZsYWdfc3RyLCBpbnQgZmxhZ19zdGFydCwgaW50IGluZm9faW5kZXggKQotICB7Ci0gICAgaW50IGZsYWdfY29sX2luZGV4ID0gZmxhZ19zdGFydDsKLSAgICBpbnQgaW5mb19jb2xfaW5kZXggPSAwOwotCi0gICAgU3RyaW5nIGluZm9fc3RyID0gZmxhZ01lc3NhZ2VzLmdldFN0cmluZyggZmxhZ3NfaW5mb1tpbmZvX2luZGV4XVtGTEFHX0NPTF0gKTsKLQotICAgIHdoaWxlKCBmbGFnX2NvbF9pbmRleCA8IGZsYWdfc3RyLmxlbmd0aCgpICYmCi0gICAgICAgICAgIGluZm9fY29sX2luZGV4IDwgaW5mb19zdHIubGVuZ3RoKCkgKQotICAgIHsKLSAgICAgIGlmKCBDaGFyYWN0ZXIudG9Mb3dlckNhc2UoIGZsYWdfc3RyLmNoYXJBdChmbGFnX2NvbF9pbmRleCkgKSAhPQotICAgICAgICAgIGluZm9fc3RyLmNoYXJBdChpbmZvX2NvbF9pbmRleCkgKQotICAgICAgICBicmVhazsKLQotICAgICAgZmxhZ19jb2xfaW5kZXgrKzsKLSAgICAgIGluZm9fY29sX2luZGV4Kys7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZsYWdfY29sX2luZGV4OwotICB9Ci0KLSAgLyoqCi0gICAgKiBBZGRzIGEgcG9zaXRpb25hbCBwYXJhbWV0ZXIgdG8gZmxhZ3Nfc3BlY2lmaWVkLgotICAqKi8KLSAgcHJpdmF0ZSB2b2lkIGFkZF9wb3NpdGlvbmFsKCBTdHJpbmcgcG9zaXRpb25hbF9wYXJtICkKLSAgewotICAgIGlmKCBmbGFnc19zcGVjaWZpZWRbUE9TSVRJT05BTF9ST1ddID09IG51bGwgKQotICAgICAgZmxhZ3Nfc3BlY2lmaWVkW1BPU0lUSU9OQUxfUk9XXSA9IG5ldyBWZWN0b3IoMyk7Ci0KLSAgICBmbGFnc19zcGVjaWZpZWRbUE9TSVRJT05BTF9ST1ddLmFkZCggcG9zaXRpb25hbF9wYXJtICk7Ci0gIH0KLQotICAvKioKLSAgICAqIEFkZHMgYSBmbGFnIGFuZCBpdHMgcGFyYW1ldGVyIHRvIGZsYWdzX3NwZWNpZmllZC4gIElmIG9ubHkgdGhlCi0gICAgKiBmbGFnIHdhcyBzcGVjaWZpZWQsIHRoZW4gYSBudWxsIHNob3VsZCBiZSBwYXNzZWQgdG8gZmxhZ19wYXJtLgotICAqKi8KLSAgcHJpdmF0ZSB2b2lkIGFkZF9mbGFnX3Bhcm0oIGludCBmbGFnX2luZGV4LCBTdHJpbmcgZmxhZ19wYXJtICkKLSAgICB0aHJvd3MgRmxhZ19lcnJvcgotICB7Ci0gICAgaWYoIGZsYWdzX2luZm9bZmxhZ19pbmRleF1bRFVQX0NPTF0gPT0gTk9fRFVQUyAmJgotICAgICAgICBmbGFnc19zcGVjaWZpZWRbZmxhZ19pbmRleF0gIT0gbnVsbCApCi0gICAgICB0aHJvdyBuZXcgRmxhZ19lcnJvciggbWVzc2FnZXMuZ2V0U3RyaW5nKCBGbGFnTWVzc2FnZXMuUEFSU0VSX0VSUk9SX0RVUExJQ0FURV9GTEFHU19OT1RfQUxMT1dFRCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnTWVzc2FnZXMuZ2V0U3RyaW5nKCBmbGFnc19pbmZvW2ZsYWdfaW5kZXhdW0ZMQUdfQ09MXSApICk7Ci0KLSAgICBpZiggZmxhZ3Nfc3BlY2lmaWVkW2ZsYWdfaW5kZXhdID09IG51bGwgKQotICAgICAgZmxhZ3Nfc3BlY2lmaWVkW2ZsYWdfaW5kZXhdID0gbmV3IFZlY3RvcigzKTsKLQotICAgIGZsYWdzX3NwZWNpZmllZFtmbGFnX2luZGV4XS5hZGQoIGZsYWdfcGFybSApOwotICB9Ci0KLSAgLyoqCi0gICAgKiBDaGVja3MgdGhhdCB0aGUgdXNlciBoYXNuJ3QgYnJva2VuIGFueSBjb21tYW5kIGxpbmUgcnVsZXMuCi0gICoqLwotICBwcml2YXRlIHZvaWQgY2hlY2tfcnVsZXMoKSB0aHJvd3MgRmxhZ19lcnJvcgotICB7Ci0gICAgLy8gQ2hlY2sgdGhhdCBhbGwgb2YgdGhlIHJlcXVpcmVkIHBvc2l0aW9uYWxzIHdlcmUgc3BlY2lmaWVkLgotICAgIGludCBwb3NpdGlvbmFsX2NvdW50ID0gMDsKLQotICAgIGlmKCBmbGFnc19zcGVjaWZpZWRbUE9TSVRJT05BTF9ST1ddICE9IG51bGwgKQotICAgIHsKLSAgICAgIHBvc2l0aW9uYWxfY291bnQgPSBmbGFnc19zcGVjaWZpZWRbUE9TSVRJT05BTF9ST1ddLnNpemUoKTsKLSAgICB9Ci0KLSAgICBpZiggcmVxdWlyZWRfcG9zaXRpb25hbHMgPiBwb3NpdGlvbmFsX2NvdW50ICkKLSAgICAgIHRocm93IG5ldyBGbGFnX2Vycm9yKCBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfRVJST1JfTUlTU0lOR19QT1NJVElPTkFMICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdNZXNzYWdlcy5nZXRTdHJpbmcoIGZsYWdzX2luZm9bcmVxdWlyZWRfcG9zaXRpb25hbHMtMV1bTkFNRV9DT0xdICkgKTsKLQotICAgIGVsc2UgaWYoIHJlcXVpcmVkX3Bvc2l0aW9uYWxzIDwgcG9zaXRpb25hbF9jb3VudCAmJgotICAgICAgICAgICAgIG9wdGlvbmFsX3Bvc2l0aW9uYWxzX2FsbG93ZWQgPT0gZmFsc2UgKQotICAgICAgdGhyb3cgbmV3IEZsYWdfZXJyb3IoIG1lc3NhZ2VzLmdldFN0cmluZyggRmxhZ01lc3NhZ2VzLlBBUlNFUl9FUlJPUl9UT09fTUFOWV9QT1NJVElPTkFMUyApICk7Ci0KLSAgICBmb3IoIGludCByb3cgPSAwOyByb3cgPCBmbGFnc19pbmZvLmxlbmd0aDsgcm93KysgKQotICAgIHsKLSAgICAgIGlmKCBmbGFnc19pbmZvW3Jvd11bRkxBR19DT0xdID09IFBPU0lUSU9OQUwgKSBjb250aW51ZTsKLQotICAgICAgaWYoIGZsYWdzX3NwZWNpZmllZFtyb3ddID09IG51bGwgJiYKLSAgICAgICAgICBmbGFnc19pbmZvW3Jvd11bUkVRVUlSRURfQ09MXSA9PSBSRVFVSVJFRCApCi0gICAgICAgIHRocm93IG5ldyBGbGFnX2Vycm9yKCBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfRVJST1JfTUlTU0lOR19SRVFVSVJFRF9GTEFHICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ01lc3NhZ2VzLmdldFN0cmluZyggZmxhZ3NfaW5mb1tyb3ddW0ZMQUdfQ09MXSApICk7Ci0KLSAgICAgIGludCBwYXJtX2NvdW50ID0gMDsKLQotICAgICAgaWYoIGZsYWdzX3NwZWNpZmllZFtyb3ddICE9IG51bGwgKSBwYXJtX2NvdW50ID0gZmxhZ3Nfc3BlY2lmaWVkW3Jvd10uc2l6ZSgpOwotCi0gICAgICAvLyBDaGVjayBmb3IgdG9vIG1hbnkgZmxhZyBwYXJhbWV0ZXJzLgotICAgICAgaWYoIGZsYWdzX2luZm9bcm93XVtEVVBfQ09MXSA9PSBOT19EVVBTICYmIHBhcm1fY291bnQgPiAxICkKLSAgICAgICAgdGhyb3cgbmV3IEZsYWdfZXJyb3IoIG1lc3NhZ2VzLmdldFN0cmluZyggRmxhZ01lc3NhZ2VzLlBBUlNFUl9FUlJPUl9EVVBMSUNBVEVfRkxBR1NfTk9UX0FMTE9XRUQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnTWVzc2FnZXMuZ2V0U3RyaW5nKCBmbGFnc19pbmZvW3Jvd11bRkxBR19DT0xdICkgKTsKLQotICAgICAgLy8gQ2hlY2sgZm9yIG1pc3NpbmcgZmxhZyBwYXJhbWV0ZXIuCi0gICAgICBpZiggcGFybV9jb3VudCA+IDAgJiYgZmxhZ3NfaW5mb1tyb3ddW05BTUVfQ09MXSAhPSBOT19QQVJNICkKLSAgICAgIHsKLSAgICAgICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGZsYWdzX3NwZWNpZmllZFtyb3ddLnNpemUoKTsgaW5kZXgrKyApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiggZmxhZ3Nfc3BlY2lmaWVkW3Jvd10uZWxlbWVudEF0KGluZGV4KSA9PSBudWxsICkKLSAgICAgICAgICAgIHRocm93IG5ldyBGbGFnX2Vycm9yKCBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfRVJST1JfTUlTU0lOR19GTEFHX1BBUkFNRVRFUiApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmbGFnTWVzc2FnZXMuZ2V0U3RyaW5nKCBmbGFnc19pbmZvW3Jvd11bRkxBR19DT0xdICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdNZXNzYWdlcy5nZXRTdHJpbmcoIGZsYWdzX2luZm9bcm93XVtOQU1FX0NPTF0gKSB9ICk7Ci0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgICogVGhpcyBtZXRob2QgdmVyaWZpZXMgdGhhdCBhIHByb3BlciBmbGFnc19pbmZvIHN0cmluZyBhcnJheSB3YXMgcGFzc2VkCi0gICAgKiB0byB1cyBieSB0aGUgcHJvZ3JhbW1lci4KLSAgKiovCi0gIHByaXZhdGUgdm9pZCB2ZXJpZnlfZmxhZ3NfaW5mbygpIHRocm93cyBJbnRlcm5hbEVycm9yRXhjCi0gIHsKLSAgICBib29sZWFuIGRvbmVfcG9zaXRpb25hbHMgPSBmYWxzZTsKLSAgICBib29sZWFuIGhlbHBfc3BlY2lmaWVkICAgPSBmYWxzZTsKLQotICAgIHJlcXVpcmVkX3Bvc2l0aW9uYWxzID0gMDsKLSAgICBvcHRpb25hbF9wb3NpdGlvbmFsc19hbGxvd2VkID0gZmFsc2U7Ci0gICAgb3B0aW9uYWxfbGlzdF9pbmRleCA9IC0xOwotICAgIG1heF9mbGFnX3NpemUgPSAwOwotICAgIG1heF9uYW1lX3NpemUgPSAwOwotCi0gICAgaWYoIGZsYWdzX2luZm8gPT0gbnVsbCB8fCBmbGFnc19pbmZvLmxlbmd0aCA9PSAwICkKLSAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yRXhjKCBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfRVJST1JfTk9fRkxBR1NfREFUQV9TUEVDSUZJRUQgICkgKTsKLQotICAgIGlmKCBmbGFnc19pbmZvW1BPU0lUSU9OQUxfUk9XXSAhPSBudWxsICYmCi0gICAgICAgIGZsYWdzX2luZm9bUE9TSVRJT05BTF9ST1ddLmxlbmd0aCA+IDAgJiYKLSAgICAgICAgZmxhZ3NfaW5mb1tQT1NJVElPTkFMX1JPV11bRkxBR19DT0xdICE9IFBPU0lUSU9OQUwgKQotICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3JFeGMoIG1lc3NhZ2VzLmdldFN0cmluZyggRmxhZ01lc3NhZ2VzLlBBUlNFUl9FUlJPUl9GSVJTVF9GTEFHX05PVF9QT1NJVElPTkFMICkgKTsKLQotICAgIGZvciggaW50IHJvdyA9IDA7IHJvdyA8IGZsYWdzX2luZm8ubGVuZ3RoOyByb3crKyApCi0gICAgewotICAgICAgaWYoIGZsYWdzX2luZm9bcm93XSA9PSBudWxsICkKLSAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3JFeGMoIG1lc3NhZ2VzLmdldFN0cmluZyggRmxhZ01lc3NhZ2VzLlBBUlNFUl9FUlJPUl9OVUxMX0ZMQUdfUk9XICkgKTsKLQotICAgICAgaWYoIGZsYWdzX2luZm9bcm93XS5sZW5ndGggIT0gNSApCi0gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yRXhjKCBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfRVJST1JfSU5DT1JSRUNUX1JPV19TSVpFICkgKTsKLQotICAgICAgaWYoIGZsYWdzX2luZm9bcm93XVtGTEFHX0NPTF0gPT0gbnVsbCB8fAotICAgICAgICAgIGZsYWdzX2luZm9bcm93XVtOQU1FX0NPTF0gPT0gbnVsbCB8fAotICAgICAgICAgIGZsYWdzX2luZm9bcm93XVtIRUxQX0NPTF0gPT0gbnVsbCApCi0gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yRXhjKCBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfRVJST1JfTlVMTF9JTl9ST1cgKSApOwotCi0gICAgICBpZiggZmxhZ3NfaW5mb1tyb3ddW0ZMQUdfQ09MXS5lcXVhbHMoIGhlbHBfZmxhZyApICkgaGVscF9zcGVjaWZpZWQgPSB0cnVlOwotCi0gICAgICBTdHJpbmcgZmxhZ0lkICAgPSBmbGFnc19pbmZvW3Jvd11bRkxBR19DT0xdOwotICAgICAgU3RyaW5nIG5hbWVJZCAgID0gZmxhZ3NfaW5mb1tyb3ddW05BTUVfQ09MXTsKLQotICAgICAgU3RyaW5nIGZsYWdfY29sID0gZmxhZ0lkID09IFBPU0lUSU9OQUwgPyBQT1NJVElPTkFMIDogZmxhZ01lc3NhZ2VzLmdldFN0cmluZyggZmxhZ0lkICk7Ci0gICAgICBTdHJpbmcgbmFtZV9jb2wgPSBuYW1lSWQgPT0gTk9fUEFSTSA/IE5PX1BBUk0gOiBmbGFnTWVzc2FnZXMuZ2V0U3RyaW5nKCBuYW1lSWQgKTsKLQotICAgICAgaWYoIGZsYWdfY29sLmxlbmd0aCgpID4gbWF4X2ZsYWdfc2l6ZSApCi0gICAgICAgIG1heF9mbGFnX3NpemUgPSBmbGFnX2NvbC5sZW5ndGgoKTsKLQotICAgICAgaWYoIG5hbWVfY29sICE9IE5PX1BBUk0gJiYgbmFtZV9jb2wubGVuZ3RoKCkgPiBtYXhfbmFtZV9zaXplICkKLSAgICAgICAgbWF4X25hbWVfc2l6ZSA9IG5hbWVfY29sLmxlbmd0aCgpOwotCi0gICAgICAvLyBFbnN1cmUgdGhhdCBmbGFncyBhcmUgYWxsIGluIGxvd2VyY2FzZS4KLSAgICAgIGlmKCAhZmxhZ19jb2wuZXF1YWxzKCBmbGFnX2NvbC50b0xvd2VyQ2FzZSgpICkgKQotICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvckV4YyggbWVzc2FnZXMuZ2V0U3RyaW5nKCBGbGFnTWVzc2FnZXMuUEFSU0VSX0VSUk9SX0ZMQUdfTk9UX0xPV0VSQ0FTRSApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19jb2wgKTsKLQotICAgICAgLy8gRW5zdXJlIHRoYXQgb25seSB0aGUgcHJlZGVmaW5lZCBkdXAgc3RyaW5ncyBhcmUgdXNlZC4KLSAgICAgIC8vIE5vdGU6IGl0J3Mgb2sgdG8gdXNlICE9IHdoZW4gY29tcGFyaW5nIGNvbnN0YW50IHN0cmluZ3MgbGl0ZXJhbHMuCi0gICAgICBpZiggZmxhZ3NfaW5mb1tyb3ddW0RVUF9DT0xdID09IG51bGwgfHwKLSAgICAgICAgICAoIGZsYWdzX2luZm9bcm93XVtEVVBfQ09MXSAhPSBOT19EVVBTICYmCi0gICAgICAgICAgICBmbGFnc19pbmZvW3Jvd11bRFVQX0NPTF0gIT0gRFVQU19PSyApICkKLSAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3JFeGMoIG1lc3NhZ2VzLmdldFN0cmluZyggRmxhZ01lc3NhZ2VzLlBBUlNFUl9FUlJPUl9JTkNPUlJFQ1RfRFVQX1NUUklORyApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfaW5mb1tyb3ddW0RVUF9DT0xdICk7Ci0KLSAgICAgIC8vIEVuc3VyZSB0aGF0IG9ubHkgdGhlIHByZWRlZmluZWQgcmVxdWlyZWQgc3RyaW5ncyBhcmUgdXNlZC4KLSAgICAgIGlmKCBmbGFnc19pbmZvW3Jvd11bUkVRVUlSRURfQ09MXSA9PSBudWxsIHx8Ci0gICAgICAgICAgKCBmbGFnc19pbmZvW3Jvd11bUkVRVUlSRURfQ09MXSAhPSBSRVFVSVJFRCAmJgotICAgICAgICAgICAgZmxhZ3NfaW5mb1tyb3ddW1JFUVVJUkVEX0NPTF0gIT0gT1BUSU9OQUwgKSApCi0gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yRXhjKCBtZXNzYWdlcy5nZXRTdHJpbmcoIEZsYWdNZXNzYWdlcy5QQVJTRVJfRVJST1JfSU5DT1JSRUNUX1JFUVVJUkVEX1NUUklORyApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfaW5mb1tyb3ddW1JFUVVJUkVEX0NPTF0gKTsKLQotICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiByZXF1aXJlZCBwb3NpdGlvbmFscy4KLSAgICAgIGlmKCBmbGFnc19pbmZvW3Jvd11bRkxBR19DT0xdID09IFBPU0lUSU9OQUwgKQotICAgICAgewotICAgICAgICBpZiggZmxhZ3NfaW5mb1tyb3ddW1JFUVVJUkVEX0NPTF0gPT0gUkVRVUlSRUQgKQotICAgICAgICB7Ci0gICAgICAgICAgaWYoIGZsYWdzX2luZm9bcm93XVtOQU1FX0NPTF0gPT0gTk9fUEFSTSApCi0gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvckV4YyggbWVzc2FnZXMuZ2V0U3RyaW5nKCBGbGFnTWVzc2FnZXMuUEFSU0VSX0VSUk9SX1JFUVVJUkVEX1BPU0lUSU9OQUxfTkVFRFNfTkFNRSApICk7Ci0KLSAgICAgICAgICByZXF1aXJlZF9wb3NpdGlvbmFscysrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoIGZsYWdzX2luZm9bcm93XVtOQU1FX0NPTF0gIT0gTk9fUEFSTSApCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBXZSB1c2UgdGhlIE5BTUVfQ09MIGZpZWxkIGZvciBhbiBvcHRpb25hbCBwb3NpdGlvbmFsIHRvIGRlbm90ZQotICAgICAgICAgIC8vIHdoZXRoZXIgYWRkaXRpb25hbCBwb3NpdGlvbmFscyBhcmUgYWxsb3dlZCBvciBub3QuCi0gICAgICAgICAgb3B0aW9uYWxfcG9zaXRpb25hbHNfYWxsb3dlZCA9IHRydWU7Ci0gICAgICAgICAgb3B0aW9uYWxfbGlzdF9pbmRleCA9IHJvdzsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyBFbnN1cmUgdGhhdCBwb3NpdGlvbmFscyBhcmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5mby4KLSAgICAgIGlmKCBmbGFnc19pbmZvW3Jvd11bRkxBR19DT0xdICE9IFBPU0lUSU9OQUwgfHwKLSAgICAgICAgICAoIGRvbmVfcG9zaXRpb25hbHMgPT0gZmFsc2UgJiYKLSAgICAgICAgICAgIGZsYWdzX2luZm9bcm93XVtGTEFHX0NPTF0gPT0gUE9TSVRJT05BTCAmJgotICAgICAgICAgICAgZmxhZ3NfaW5mb1tyb3ddW1JFUVVJUkVEX0NPTF0gPT0gT1BUSU9OQUwgKSApCi0gICAgICB7Ci0gICAgICAgIGRvbmVfcG9zaXRpb25hbHMgPSB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZiggZG9uZV9wb3NpdGlvbmFscyA9PSB0cnVlICkKLSAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3JFeGMoIG1lc3NhZ2VzLmdldFN0cmluZyggRmxhZ01lc3NhZ2VzLlBBUlNFUl9FUlJPUl9QT1NJVElPTkFMX05PVF9BVF9CRUdJTk5JTkcgKSApOwotICAgIH0KLQotICAgIC8vIEVuc3VyZSB0aGF0IGEgaGVscCBmbGFnIHdhcyBzcGVjaWZpZWQgaW4gdGhlIGluZm8gbGlzdC4KLSAgICBpZiggaGVscF9zcGVjaWZpZWQgPT0gZmFsc2UgKQotICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3JFeGMoIG1lc3NhZ2VzLmdldFN0cmluZyggRmxhZ01lc3NhZ2VzLlBBUlNFUl9FUlJPUl9IRUxQX0ZMQUdfTk9UX1NQRUNJRklFRCApICk7Ci0gIH0KLQotICAvKioKLSAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZHVtcCBpbnRlcm5hbCBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnNlZAotICAgICogY29tbWFuZCBsaW5lLgotICAqKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYiA9IG5ldyBTdHJpbmdCdWZmZXIoMTAwKTsKLQotICAgIGZvciggaW50IHJvdyA9IDA7IHJvdyA8IGZsYWdzX2luZm8ubGVuZ3RoOyByb3crKyApCi0gICAgewotICAgICAgYi5hcHBlbmQoICJcbiIgKTsKLQotICAgICAgaWYoIGZsYWdzX2luZm9bcm93XVtGTEFHX0NPTF0gPT0gUE9TSVRJT05BTCApCi0gICAgICAgIGIuYXBwZW5kKCAiUG9zaXRpb25hbDoiICk7Ci0gICAgICBlbHNlCi0gICAgICAgIGIuYXBwZW5kKCBmbGFnTWVzc2FnZXMuZ2V0U3RyaW5nKCBmbGFnc19pbmZvW3Jvd11bRkxBR19DT0xdICkgKyAiOiIgKTsKLQotCi0gICAgICBpZiggZmxhZ3Nfc3BlY2lmaWVkW3Jvd10gPT0gbnVsbCApCi0gICAgICAgIGIuYXBwZW5kKCAibm8gcGFyYW1ldGVycyIgKTsKLSAgICAgIGVsc2UKLSAgICAgICAgZm9yKCBpbnQgcGFybV9pbmRleCA9IDA7IHBhcm1faW5kZXggPCBmbGFnc19zcGVjaWZpZWRbcm93XS5zaXplKCk7IHBhcm1faW5kZXgrKyApCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgcGFybSA9IChTdHJpbmcpZmxhZ3Nfc3BlY2lmaWVkW3Jvd10uZWxlbWVudEF0KHBhcm1faW5kZXgpOwotICAgICAgICAgIGIuYXBwZW5kKCBwYXJtICsgIjoiICk7Ci0gICAgICAgIH0KLSAgICAgIGIuYXBwZW5kKCAiXG4iICk7Ci0gICAgfQotCi0gICAgcmV0dXJuICIiK2I7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19DT0wgICAgID0gMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5BTUVfQ09MICAgICA9IDE7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEVVBfQ09MICAgICAgPSAyOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUkVRVUlSRURfQ09MID0gMzsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhFTFBfQ09MICAgICA9IDQ7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFBPU0lUSU9OQUxfUk9XID0gMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhFTFBfTElORV9MRU4gID0gNzU7Ci0KLSAgcHJpdmF0ZSBTdHJpbmdbXVtdIGZsYWdzX2luZm87Ci0gIHByaXZhdGUgU3RyaW5nICAgICBoZWxwX2ZsYWc7Ci0gIHByaXZhdGUgU3RyaW5nICAgICB0b29sX25hbWU7Ci0gIHByaXZhdGUgVmVjdG9yW10gICBmbGFnc19zcGVjaWZpZWQ7Ci0gIHByaXZhdGUgaW50ICAgICAgICByZXF1aXJlZF9wb3NpdGlvbmFsczsKLSAgcHJpdmF0ZSBib29sZWFuICAgIG9wdGlvbmFsX3Bvc2l0aW9uYWxzX2FsbG93ZWQ7Ci0gIHByaXZhdGUgaW50ICAgICAgICBvcHRpb25hbF9saXN0X2luZGV4OwotICBwcml2YXRlIGludCAgICAgICAgbWF4X2ZsYWdfc2l6ZTsKLSAgcHJpdmF0ZSBpbnQgICAgICAgIG1heF9uYW1lX3NpemU7Ci0KLSAgcHJvdGVjdGVkIFJlc291cmNlQnVuZGxlIG1lc3NhZ2VzOwotICBwcml2YXRlICAgUmVzb3VyY2VCdW5kbGUgZmxhZ01lc3NhZ2VzOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb21tYW5kbGluZS9GbGFnTWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29tbWFuZGxpbmUvRmxhZ01lc3NhZ2VzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ODQxNGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb21tYW5kbGluZS9GbGFnTWVzc2FnZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbWFuZGxpbmU7Ci0KLS8qKgotICAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBzdG9yZSBjb25zdGFudCBzdHJpbmcgZXJyb3IgbWVzc2FnZXMKLSAgKiBnZW5lcmF0ZWQgYnkgQ29tbWFuZExpbmUuamF2YQotICAqCi0gICoKLSAgKiBAYXV0aG9yIFBldGVyIE1vb2drCi0gICogQGRhdGUgICBKdWx5IDEzLCAyMDAwCi0gICogQHNlZSAgICBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbWFuZGxpbmUuQ29tbWFuZExpbmUKLSoqLwotCi1wdWJsaWMgZmluYWwgY2xhc3MgRmxhZ01lc3NhZ2VzCi17Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX0ZMQUdfTk9UX0ZPVU5EID0gIlBBUlNFUl9FUlJPUl9GTEFHX05PVF9GT1VORCI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX0FNQklHVU9VU19GTEFHID0gIlBBUlNFUl9FUlJPUl9BTUJJR1VPVVNfRkxBRyI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX01JU1NJTkdfUE9TSVRJT05BTCA9ICJQQVJTRVJfRVJST1JfTUlTU0lOR19QT1NJVElPTkFMIjsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJTRVJfRVJST1JfVE9PX01BTllfUE9TSVRJT05BTFMgPSAiUEFSU0VSX0VSUk9SX1RPT19NQU5ZX1BPU0lUSU9OQUxTIjsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJTRVJfRVJST1JfTUlTU0lOR19SRVFVSVJFRF9GTEFHID0gIlBBUlNFUl9FUlJPUl9NSVNTSU5HX1JFUVVJUkVEX0ZMQUciOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlNFUl9FUlJPUl9EVVBMSUNBVEVfRkxBR1NfTk9UX0FMTE9XRUQgPSAiUEFSU0VSX0VSUk9SX0RVUExJQ0FURV9GTEFHU19OT1RfQUxMT1dFRCI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX01JU1NJTkdfRkxBR19QQVJBTUVURVIgPSAiUEFSU0VSX0VSUk9SX01JU1NJTkdfRkxBR19QQVJBTUVURVIiOwotCi0gIC8vIEVycm9yIGludGVybmFsIGVycm9yIG1lc3NhZ2VzLgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJTRVJfRVJST1JfTUVTU0FHRV9NSVNTSU5HX0FSRyA9ICJQQVJTRVJfRVJST1JfTUVTU0FHRV9NSVNTSU5HX0FSRyI7Ci0KLSAgLy8gSW50ZXJuYWwgY29tbWFuZCBsaW5lIGVycm9yIG1lc3NhZ2VzLgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJTRVJfRVJST1JfTk9fRkxBR1NfREFUQV9TUEVDSUZJRUQgPSAiUEFSU0VSX0VSUk9SX05PX0ZMQUdTX0RBVEFfU1BFQ0lGSUVEIjsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJTRVJfRVJST1JfRklSU1RfRkxBR19OT1RfUE9TSVRJT05BTCA9ICJQQVJTRVJfRVJST1JfRklSU1RfRkxBR19OT1RfUE9TSVRJT05BTCI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX05VTExfRkxBR19ST1cgPSAiUEFSU0VSX0VSUk9SX05VTExfRkxBR19ST1ciOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlNFUl9FUlJPUl9JTkNPUlJFQ1RfUk9XX1NJWkUgPSAiUEFSU0VSX0VSUk9SX0lOQ09SUkVDVF9ST1dfU0laRSI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX05VTExfSU5fUk9XID0gIlBBUlNFUl9FUlJPUl9OVUxMX0lOX1JPVyI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX0lOQ09SUkVDVF9EVVBfU1RSSU5HID0gIlBBUlNFUl9FUlJPUl9JTkNPUlJFQ1RfRFVQX1NUUklORyI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX0lOQ09SUkVDVF9SRVFVSVJFRF9TVFJJTkcgPSAiUEFSU0VSX0VSUk9SX0lOQ09SUkVDVF9SRVFVSVJFRF9TVFJJTkciOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlNFUl9FUlJPUl9QT1NJVElPTkFMX05PVF9BVF9CRUdJTk5JTkcgPSAiUEFSU0VSX0VSUk9SX1BPU0lUSU9OQUxfTk9UX0FUX0JFR0lOTklORyI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX0hFTFBfRkxBR19OT1RfU1BFQ0lGSUVEID0gIlBBUlNFUl9FUlJPUl9IRUxQX0ZMQUdfTk9UX1NQRUNJRklFRCI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX0ZMQUdTX05PVF9PUkRFUkVEID0gIlBBUlNFUl9FUlJPUl9GTEFHU19OT1RfT1JERVJFRCI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSU0VSX0VSUk9SX0ZMQUdfTk9UX0xPV0VSQ0FTRSA9ICJQQVJTRVJfRVJST1JfRkxBR19OT1RfTE9XRVJDQVNFIjsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJTRVJfRVJST1JfUkVRVUlSRURfUE9TSVRJT05BTF9ORUVEU19OQU1FID0gIlBBUlNFUl9FUlJPUl9SRVFVSVJFRF9QT1NJVElPTkFMX05FRURTX05BTUUiOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlNFUl9JTkZPX1NZTlRBWCA9ICJQQVJTRVJfU1lOVEFYIjsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJTRVJfRkxBR1MgPSAiUEFSU0VSX0ZMQUdTIjsKLSAgCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlNFUl9JTkZPX1dIRVJFID0gIlBBUlNFUl9XSEVSRSI7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbW1hbmRsaW5lL2NvbW1hbmRsaW5lLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbW1hbmRsaW5lL2NvbW1hbmRsaW5lLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NTI5ODEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb21tYW5kbGluZS9jb21tYW5kbGluZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotUEFSU0VSX0VSUk9SX0ZMQUdfTk9UX0ZPVU5EPUlXQUIwMTIzRSBGbGFnIC17MH0gaXMgbm90IHZhbGlkLgotUEFSU0VSX0VSUk9SX0FNQklHVU9VU19GTEFHPUlXQUIwMjg0RSBGbGFnIC17MH0gaXMgYW1iaWd1b3VzLgotUEFSU0VSX0VSUk9SX01JU1NJTkdfUE9TSVRJT05BTD1JV0FCMDI4NUUgTWlzc2luZyB7MH0gcGFyYW1ldGVyLgotUEFSU0VSX0VSUk9SX1RPT19NQU5ZX1BPU0lUSU9OQUxTPUlXQUIwMjg2RSBUb28gbWFueSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgc3BlY2lmaWVkLgotUEFSU0VSX0VSUk9SX01JU1NJTkdfUkVRVUlSRURfRkxBRz1JV0FCMDI4OEUgRmxhZyAtezB9IGlzIG1pc3NpbmcuCi1QQVJTRVJfRVJST1JfRFVQTElDQVRFX0ZMQUdTX05PVF9BTExPV0VEPUlXQUIwMjkzRSBGbGFnIC17MH0gaGFzIGJlZW4gc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlLgotUEFSU0VSX0VSUk9SX01JU1NJTkdfRkxBR19QQVJBTUVURVI9SVdBQjAyOTRFIEZsYWcgLXswfSBpcyBtaXNzaW5nIHBhcmFtZXRlciB7MX0uCi1QQVJTRVJfRVJST1JfTUVTU0FHRV9NSVNTSU5HX0FSRz1JV0FCMDMxOUUgRXJyb3IgbWVzc2FnZSB7MH0gaXMgbWlzc2luZyBhbiBhcmd1bWVudC4KLVBBUlNFUl9FUlJPUl9OT19GTEFHU19EQVRBX1NQRUNJRklFRD1JV0FCMDM0NUUgU3BlY2lmeSBmbGFnIGluZm9ybWF0aW9uLgotUEFSU0VSX0VSUk9SX0ZJUlNUX0ZMQUdfTk9UX1BPU0lUSU9OQUw9SVdBQjAzNDZFIFRoZSBmaXJzdCBmbGFnIG11c3QgYmUgcG9zaXRpb25hbC4KLVBBUlNFUl9FUlJPUl9OVUxMX0ZMQUdfUk9XPUlXQUIwMzQ3RSBOdWxsIGZsYWcgcm93LgotUEFSU0VSX0VSUk9SX0lOQ09SUkVDVF9ST1dfU0laRT1JV0FCMDM0OEUgRmxhZyByb3cgbXVzdCBoYXZlIDUgc3RyaW5ncy4KLVBBUlNFUl9FUlJPUl9OVUxMX0lOX1JPVz1JV0FCMDM0OUUgRmxhZyBpbmZvcm1hdGlvbiBjb250YWlucyBhIG51bGwgc3RyaW5nLgotUEFSU0VSX0VSUk9SX0lOQ09SUkVDVF9EVVBfU1RSSU5HPUlXQUIwMzUwRSBEdXBsaWNhdGUgc3RyaW5nIHswfSBpcyBub3QgdmFsaWQuCi1QQVJTRVJfRVJST1JfSU5DT1JSRUNUX1JFUVVJUkVEX1NUUklORz1JV0FCMDM1MUUgUmVxdWlyZWQgc3RyaW5nIHswfSBpcyBub3QgdmFsaWQuCi1QQVJTRVJfRVJST1JfUE9TSVRJT05BTF9OT1RfQVRfQkVHSU5OSU5HPUlXQUIwMzUyRSBQb3NpdGlvbmFsIGZsYWcgaXMgbm90IGF0IHRoZSBiZWdpbm5pbmcuCi1QQVJTRVJfRVJST1JfSEVMUF9GTEFHX05PVF9TUEVDSUZJRUQ9SVdBQjAzNTNFIEhlbHAgZmxhZyBpcyBub3Qgc3BlY2lmaWVkIGluIGluZm9ybWF0aW9uIGFycmF5LgotUEFSU0VSX0VSUk9SX0ZMQUdTX05PVF9PUkRFUkVEPUlXQUIwMzU0RSBGbGFncyBhcmUgbm90IGluIGxleGljYWwgb3JkZXIuCi1QQVJTRVJfRVJST1JfRkxBR19OT1RfTE9XRVJDQVNFPUlXQUIwMzU1RSBGbGFnIHswfSBpcyBub3QgbG93ZXJjYXNlLgotUEFSU0VSX0VSUk9SX1JFUVVJUkVEX1BPU0lUSU9OQUxfTkVFRFNfTkFNRT1JV0FCMDM1NkUgUmVxdWlyZWQgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIG11c3QgaGF2ZSBhIG5hbWUgc3BlY2lmaWVkLgotUEFSU0VSX1NZTlRBWD1TeW50YXgKLVBBUlNFUl9GTEFHUz1GbGFncwotUEFSU0VSX1dIRVJFPVdoZXJlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbW1vbi9DbGFzc1BhdGguamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29tbW9uL0NsYXNzUGF0aC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDhhNGE1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29tbW9uL0NsYXNzUGF0aC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tb247Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci0KLS8qKgotICogCi0gKiBUaGUgY2xhc3MgcHJvdmlkZXMgYW5kIGVhc3kgd2F5IHRvIGJ1aWxkIGNsYXNzcGF0aHMuCi0gKgotICovCi1wdWJsaWMgY2xhc3MgQ2xhc3NQYXRoIAotewotICBwcml2YXRlIFN0cmluZ0J1ZmZlciBwYXRoID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gbmV3UGF0aCBhcHBlbmRzIHRoaXMgbmV3IHBhdGggdG8gdGhlIGVuZCBvZiB0aGUgY2xhc3NwYXRoLgotICAgKi8KLSAgcHVibGljIHZvaWQgYXBwZW5kUGF0aCggU3RyaW5nIG5ld1BhdGggKQotICB7Ci0gIAkvLyBObyB2YWx1ZSB0byBwdXQgb24gcGF0aCwgc28ganVzdCByZXR1cm4KLSAgCWlmKCBuZXdQYXRoLmVxdWFscyggIiIgKSApIHJldHVybjsKLSAgCQotICAJLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgcGF0aCBpbiB0aGUgc3RyaW5nIHRoZW4gd2UgZG9uJ3QgbmVlZCBhIHBhdGgKLSAgCS8vIHNlcGFyYXRvci4KLSAgCWlmKCBwYXRoLmxlbmd0aCgpID09IDAgKQotICAJewotICAJICBwYXRoLmFwcGVuZCggbmV3UGF0aCApOwotICAJfQotICAJZWxzZQotICAJewotICAJICBwYXRoLmFwcGVuZCggRmlsZS5wYXRoU2VwYXJhdG9yQ2hhciArIG5ld1BhdGggKTsKLSAgCX0KLSAgfQotICAKLSAgLyoqCi0gICAqIFRoaXMgbWV0aG9kIGFwcGVuZHMgYWxsIGphciBhbmQgemlwIGZpbGVzIGluIGEgcGFydGljdWxhciBkaXJlY3RvcnkgdG8KLSAgICogdGhlIGNsYXNzcGF0aC4KLSAgICogCi0gICAqIEBwYXJhbSBkaXJlY3Rvcnkgc3BlY2lmaWVzIGEgZGlyZWN0b3J5IGNvbnRhaW5zIGphciBhbmQgemlwIGZpbGVzLgotICAgKi8KLSAgcHVibGljIHZvaWQgYXBwZW5kRGlyKCBTdHJpbmcgZGlyZWN0b3J5ICkKLSAgewotICAJRmlsZSBkaXIgPSBuZXcgRmlsZSggZGlyZWN0b3J5ICk7Ci0gIAkKLSAgCWlmKCAhZGlyLmlzRGlyZWN0b3J5KCkgKSByZXR1cm47Ci0gIAkKLSAgCUZpbGVbXSBmaWxlcyA9IGRpci5saXN0RmlsZXMoKTsKLSAgCQotICAJZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGZpbGVzLmxlbmd0aDsgaW5kZXgrKyApCi0gIAl7Ci0gIAkgIEZpbGUgICBmaWxlID0gZmlsZXNbaW5kZXhdOwotICAJICBTdHJpbmcgbmFtZSA9IGZpbGUuZ2V0TmFtZSgpOwotICAJICAKLSAgCSAgaWYoIGZpbGUuaXNGaWxlKCkgJiYKLSAgCSAgICAgICggbmFtZS5lbmRzV2l0aCggIi5qYXIiICkgfHwKLSAgCSAgICAgICAgbmFtZS5lbmRzV2l0aCggIi56aXAiICkgKSApCi0gIAkgIHsKLSAgCSAgCWFwcGVuZFBhdGgoIGZpbGUuZ2V0QWJzb2x1dGVQYXRoKCkgKTsKLSAgCSAgfQotICAJICAgICAgICAKLSAgCX0KLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gbmV3UGF0aCBhcHBlbmRzIGEgbmV3IGNsYXNzcGF0aCB0byB0aGUgZW5kIG9mIHRoaXMgY2xhc3NwYXRoLgotICAgKi8KLSAgcHVibGljIHZvaWQgYXBwZW5kUGF0aCggQ2xhc3NQYXRoIG5ld1BhdGggKQotICB7Ci0gIAlhcHBlbmRQYXRoKCBuZXdQYXRoLnBhdGgudG9TdHJpbmcoKSApOwotICB9Ci0gIAotICAvKioKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBmdWxsIHN0cmluZyBjbGFzc3BhdGggd2l0aCBzZXBhcmF0b3JzLgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgCXJldHVybiBwYXRoLnRvU3RyaW5nKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29tbW9uL0ZpbGVSZXNvdXJjZU91dHB1dFN0cmVhbS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb21tb24vRmlsZVJlc291cmNlT3V0cHV0U3RyZWFtLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYzRhNDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb21tb24vRmlsZVJlc291cmNlT3V0cHV0U3RyZWFtLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tb247Ci0KLWltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQuUmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSVN0YXR1c0hhbmRsZXI7Ci0KLQotCi0vKioKLSogVGhpcyBjbGFzcyBkZWZpbmVzIGFuIG91dHB1dCBzdHJlYW0gdGhhdCB3cml0ZXMgdG8gYW4KLSoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlIElGaWxlfS4KLSovCi1wdWJsaWMgY2xhc3MgRmlsZVJlc291cmNlT3V0cHV0U3RyZWFtIGV4dGVuZHMgT3V0cHV0U3RyZWFtCi17Ci0KLSAgSVBhdGggICAgICAgICAgICAgICAgIGZGaWxlUGF0aDsKLSAgUmVzb3VyY2VDb250ZXh0ICAgICAgIGZSZXNvdXJjZUNvbnRleHQ7IAotICBJUHJvZ3Jlc3NNb25pdG9yICAgICAgIGZNb25pdG9yOyAgIAotICBJU3RhdHVzSGFuZGxlciAgICAgICAgIGZTdGF0dXNIYW5kbGVyOwotICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gZkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKLSAgYm9vbGVhbiAgICAgICAgICAgICAgIGZPcGVuOwotCi0gIC8qKgotICAqIENvbnN0cnVjdHMgYW4gb3V0cHV0IHN0cmVhbSB0aGF0IGNhbiBiZSB1c2VkIHRvIHdyaXRlIHRvIHRoZQotICAqIGdpdmVuIDxjb2RlPmZpbGU8L2NvZGU+LiBUaGUgd29ya3NwYWNlIGlzIG5laXRoZXIgZXhhbWluZWQgbm9yCi0gICogYWx0ZXJlZCBkdXJpbmcgY29uc3RydWN0aW9uLiBBbGwgcmVzb3VyY2UgY3JlYXRpb24gaXMgZGVmZXJyZWQKLSAgKiB1bnRpbCBsYXRlciBpbiB0aGUgc3RyZWFtJ3MgbGlmZWN5Y2xlLCBzdWNoIGFzIGR1cmluZyB3cml0aW5nCi0gICogb3IgY2xvc3VyZS4KLSAgKiA8Yj5Ob3RlOjwvYj4gVGhlIHByZWZlcnJlZCBtZWNoYW5pc20gZm9yIGNyZWF0aW5nIGEgc3RyZWFtIHRoYXQKLSAgKiB3cml0ZXMgdG8gYW4gSUZpbGUgaXMgdG8gY2FsbCB0aGUgc3RhdGljIGZhY3RvcnkgbWV0aG9kCi0gICoge0BsaW5rIEZpbGVSZXNvdXJjZVV0aWxzI25ld0ZpbGVPdXRwdXRTdHJlYW0gRmlsZVJlc291cmNlVXRpbHMubmV3RmlsZU91dHB1dFN0cmVhbSgpfQotICAqIGFuZCB3b3JrIHdpdGggdGhlIHJlc3VsdGluZyA8Y29kZT5PdXRwdXRTdHJlYW08L2NvZGU+LgotICAqIERpcmVjdCBjb25zdHJ1Y3Rpb24gb2YgYSBGaWxlUmVzb3VyY2VPdXRwdXRTdHJlYW0gaXMgbm90IHJlY29tbWVuZGVkLgotICAqIEBwYXJhbSBmaWxlIFRoZSB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUgSUZpbGV9Ci0gICogaGFuZGxlIG9mIHRoZSBmaWxlIHJlc291cmNlIHRvIGNyZWF0ZS4gVGhlIHByb2plY3QgaW1wbGllZCBieSB0aGUKLSAgKiBwYXRobmFtZSBvZiB0aGUgZmlsZSBtdXN0IGFscmVhZHkgZXhpc3QsCi0gICogdGhhdCBpcywgdGhpcyBtZXRob2QgY2Fubm90IGJlIHVzZWQgdG8gY3JlYXRlIHByb2plY3RzLgotICAqIEBwYXJhbSBwcm9ncmVzc01vbml0b3IgVGhlIHByb2dyZXNzIG1vbml0b3IgZm9yIHRoZSBvcGVyYXRpb24sIG9yIG51bGwuCi0gICovCi0gIHB1YmxpYyBGaWxlUmVzb3VyY2VPdXRwdXRTdHJlYW0gKCAKLSAgCQkJUmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dCwgCi0gIAkJCUlQYXRoICAgICAgICAgICBmaWxlUGF0aCwgCi0gIAkJCUlQcm9ncmVzc01vbml0b3IgbW9uaXRvciwKLSAgCQkJSVN0YXR1c0hhbmRsZXIgICBzdGF0dXNIYW5kbGVyCi0gIAkJCSkKLSAgewotICAgIGZGaWxlUGF0aCA9IGZpbGVQYXRoOwotICAgIGZSZXNvdXJjZUNvbnRleHQgPSByZXNvdXJjZUNvbnRleHQ7Ci0gICAgZk1vbml0b3IgPSBtb25pdG9yOwotICAgIGZTdGF0dXNIYW5kbGVyID0gc3RhdHVzSGFuZGxlcjsKLSAgICBmQnl0ZUFycmF5T3V0cHV0U3RyZWFtID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOwotICAgIGZPcGVuID0gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAqIENsb3NlcyB0aGUgc3RyZWFtLgotICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGNsb3NpbmcgdGhlIHN0cmVhbS4KLSAgKiBGb3IgZXhhbXBsZSwgaWYgdGhpcyBzdHJlYW0gd2FzIGNvbnN0cnVjdGVkIHdpdGggb3ZlcndyaXRlRmlsZSA9IGZhbHNlCi0gICogYW5kIGEgZmlsZSBvZiB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLCB0aGVuIGFuIElPRXhjZXB0aW9uIHdpbGwKLSAgKiBiZSB0aHJvd24gZWl0aGVyIG5vdyBvciBkdXJpbmcgYW4gZWFybGllciB7QGxpbmsgI3dyaXRlIHdyaXRlfS4KLSAgKi8KLSAgcHVibGljIHZvaWQgY2xvc2UgKCkKLSAgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBpZiAoIWZPcGVuKSByZXR1cm47Ci0gICAgZk9wZW4gPSBmYWxzZTsKLSAgICBmQnl0ZUFycmF5T3V0cHV0U3RyZWFtLmNsb3NlKCk7Ci0gICAgYnl0ZVtdIGJ1ZmZlciA9IGZCeXRlQXJyYXlPdXRwdXRTdHJlYW0udG9CeXRlQXJyYXkoKTsKLSAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSB0ZW1wSW5wdXRTdHJlYW0gPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnVmZmVyKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBGaWxlUmVzb3VyY2VVdGlscy5jcmVhdGVGaWxlKGZSZXNvdXJjZUNvbnRleHQsIGZGaWxlUGF0aCwgdGVtcElucHV0U3RyZWFtLCBmTW9uaXRvciwgZlN0YXR1c0hhbmRsZXIpOwotICAgIH0KLSAgICBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICogRmx1c2hlcyB0aGUgc3RyZWFtLiBUaGlzIGRvZXMgbm90IGltcGx5IHRoZSBGaWxlIHJlc291cmNlCi0gICogd2lsbCBiZSBjcmVhdGVkIG9yIGJlY29tZSB2aXNpYmxlIHdpdGhpbiB0aGUgd29ya2JlbmNoLgotICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gSWYgYW4gZXJyb3Igb2NjdXJzLiBGb3IgZXhhbXBsZSwgaWYgdGhpcwotICAqIHN0cmVhbSB3YXMgY29uc3RydWN0ZWQgd2l0aCBvdmVyd3JpdGVGaWxlID0gZmFsc2UgYW5kIGEgZmlsZSBvZiB0aGUKLSAgKiBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMsIHRoZW4gYW4gSU9FeGNlcHRpb24gbWF5IGJlIHRocm93biBhdAotICAqIHRoaXMgcG9pbnQuCi0gICovCi0gIHB1YmxpYyB2b2lkIGZsdXNoICgpCi0gIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgZkJ5dGVBcnJheU91dHB1dFN0cmVhbS5mbHVzaCgpOwotICB9Ci0KLSAgLyoqCi0gICogV3JpdGVzIGFsbCBieXRlcyBmcm9tIHRoZSBnaXZlbiBhcnJheSB0byB0aGUgc3RyZWFtLgotICAqIEBwYXJhbSBiIFRoZSBhcnJheSBvZiBieXRlcyB0byB3cml0ZS4KLSAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIElmIGFuIGVycm9yIG9jY3Vycy4gRm9yIGV4YW1wbGUsIGlmIHRoaXMKLSAgKiBzdHJlYW0gd2FzIGNvbnN0cnVjdGVkIHdpdGggb3ZlcndyaXRlRmlsZSA9IGZhbHNlIGFuZCBhIGZpbGUgb2YgdGhlCi0gICogc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLCB0aGVuIGFuIElPRXhjZXB0aW9uIG1heSBiZSB0aHJvd24gYXQKLSAgKiB0aGlzIHBvaW50LgotICAqLwotICBwdWJsaWMgdm9pZCB3cml0ZSAoIGJ5dGVbXSBiICkKLSAgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBmQnl0ZUFycmF5T3V0cHV0U3RyZWFtLndyaXRlKGIpOwotICB9Ci0KLSAgLyoqCi0gICogV3JpdGVzIGJ5dGVzIGZyb20gdGhlIGdpdmVuIGFycmF5IGJlZ2lubmluZyBhdCBzb21lIG9mZnNldAotICAqIGFuZCBjb250aW51aW5nIGZvciBzb21lIG51bWJlciBvZiBieXRlcyAobGVuKSB0byB0aGUgc3RyZWFtLgotICAqIEBwYXJhbSBiIFRoZSBhcnJheSBvZiBieXRlcyB0byB3cml0ZS4KLSAgKiBAcGFyYW0gb2ZmIFRoZSBvZmZzZXQgaW50byB0aGUgYXJyYXkgdG8gYmVnaW4gd3JpdGluZy4KLSAgKiBAcGFyYW0gbGVuIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUuCi0gICogQHRocm93cyBJT0V4Y2VwdGlvbiBJZiBhbiBlcnJvciBvY2N1cnMuIEZvciBleGFtcGxlLCBpZiB0aGlzCi0gICogc3RyZWFtIHdhcyBjb25zdHJ1Y3RlZCB3aXRoIG92ZXJ3cml0ZUZpbGUgPSBmYWxzZSBhbmQgYSBmaWxlIG9mIHRoZQotICAqIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0cywgdGhlbiBhbiBJT0V4Y2VwdGlvbiBtYXkgYmUgdGhyb3duIGF0Ci0gICogdGhpcyBwb2ludC4KLSAgKi8KLSAgcHVibGljIHZvaWQgd3JpdGUgKCBieXRlW10gYiwgaW50IG9mZiwgaW50IGxlbiApCi0gIHsKLSAgICBmQnl0ZUFycmF5T3V0cHV0U3RyZWFtLndyaXRlKGIsb2ZmLGxlbik7Ci0gIH0KLQotICAvKioKLSAgKiBXcml0ZXMgYSBzaW5nbGUgYnl0ZSB0byB0aGUgc3RyZWFtLgotICAqIEBwYXJhbSBiIFRoZSBieXRlIHRvIHdyaXRlLgotICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gSWYgYW4gZXJyb3Igb2NjdXJzLiBGb3IgZXhhbXBsZSwgaWYgdGhpcwotICAqIHN0cmVhbSB3YXMgY29uc3RydWN0ZWQgd2l0aCBvdmVyd3JpdGVGaWxlID0gZmFsc2UgYW5kIGEgZmlsZSBvZiB0aGUKLSAgKiBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMsIHRoZW4gYW4gSU9FeGNlcHRpb24gbWF5IGJlIHRocm93biBhdAotICAqIHRoaXMgcG9pbnQuCi0gICovCi0gIHB1YmxpYyB2b2lkIHdyaXRlICggaW50IGIgKQotICB7Ci0gICAgZkJ5dGVBcnJheU91dHB1dFN0cmVhbS53cml0ZShiKTsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbW1vbi9GaWxlUmVzb3VyY2VVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb21tb24vRmlsZVJlc291cmNlVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgzYjg0Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbW1vbi9GaWxlUmVzb3VyY2VVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDExMiAgIDEyMTE5OSBqZXNwZXJAc2Vsc2thYmV0Lm9yZyAtIEplc3BlciBN+GxsZXIKLSAqIDIwMDcwODEzICAgMTg4OTk5IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwNjEzICAgMjM2NTIzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBPdmVyd3JpdGUgc2V0dGluZyBvbiBXZWIgc2VydmljZSB3aXphcmQgaXMgY291cGxlZCB3aXRoIHByZWZlcmVuY2UKLSAqIDIwMDgwNjI1ICAgMjM3MTI5IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBFcnJvciBtb3ZpbmcgcmVzb3VyY2U6IG51bGwKLSAqIDIwMDgwNzExICAgMjQwNDA4IHJra2xhaUBjYS5pYm0uY29tIC0gUmF5bW9uZCBMYWksIHN1cHBvcnQgY2FzZS1pbnNlbnNpdGl2ZSBwbGF0Zm9ybSBtYWtlRmlsZSB3aGVuIGEgZmlsZSB3aXRoIHZhcmlhbnQgY2FzZSBleGlzdHMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbW9uOwotCi0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklDb250YWluZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVdvcmtzcGFjZVJvb3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuRW52aXJvbm1lbnRNZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dC5QZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkNob2ljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklTdGF0dXNIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuU3RhdHVzRXhjZXB0aW9uOwotCi0KLQotLyoqCi0qIFRoaXMgY2xhc3MgY29udGFpbnMgdXNlZnVsIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBFY2xpcHNlIHJlc291cmNlcy4KLSovCi1wdWJsaWMgZmluYWwgY2xhc3MgRmlsZVJlc291cmNlVXRpbHMKLXsKLSAgLy8KLSAgLy8gS2VlcHMgdGhlIElXb3Jrc3BhY2UgaGFuZ2luZyBhcm91bmQuIFNlZSBnZXRXb3Jrc3BhY2UoKS4KLSAgLy8KLSAgcHJpdmF0ZSBzdGF0aWMgSVdvcmtzcGFjZSB3b3Jrc3BhY2VfID0gbnVsbDsKLSAgLy8KLSAgLy8gS2VlcHMgdGhlIElXb3Jrc3BhY2VSb290IGhhbmdpbmcgYXJvdW5kLiBTZWUgZ2V0V29ya3NwYWNlUm9vdCgpLgotICAvLwotICBwcml2YXRlIHN0YXRpYyBJV29ya3NwYWNlUm9vdCByb290XyA9IG51bGw7Ci0gIAotLy8gIHByaXZhdGUgc3RhdGljIE1lc3NhZ2VVdGlscyBtc2dfID0gbmV3IE1lc3NhZ2VVdGlscyggIm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tb24uZW52aXJvbm1lbnQiLCBuZXcgRmlsZVJlc291cmNlVXRpbHMoKSApOwotCi0KLSAvKioKLSAgKiBSZXR1cm5zIHRoZSBJV29ya3NwYWNlUm9vdCBvYmplY3QuCi0gICogQHJldHVybiBUaGUgSVdvcmtzcGFjZVJvb3Qgb2JqZWN0LgotICAqLwotICBwdWJsaWMgc3RhdGljIElXb3Jrc3BhY2VSb290IGdldFdvcmtzcGFjZVJvb3QgKCkKLSAgewotICAgIGlmIChyb290XyA9PSBudWxsKQotICAgIHsKLSAgICAgIHJvb3RfID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJvb3RfOwotICB9Ci0KLSAgLyoqCi0JICogUmV0dXJucyB0aGUgSVdvcmtzcGFjZSBvYmplY3QuCi0JICogCi0JICogQHJldHVybiBUaGUgSVdvcmtzcGFjZSBvYmplY3QuCi0JICovCi0gIHB1YmxpYyBzdGF0aWMgSVdvcmtzcGFjZSBnZXRXb3Jrc3BhY2UgKCkKLSAgewotICAgIGlmICh3b3Jrc3BhY2VfID09IG51bGwpCi0gICAgewotICAgICAgaWYgKHJvb3RfID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJvb3RfID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgd29ya3NwYWNlXyA9IHJvb3RfLmdldFdvcmtzcGFjZSgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gd29ya3NwYWNlXzsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgYW4gYXJyYXkgb2YgdGhyZWUgY29tbW9uIGNob2ljZXMuIChpZS4gWWVzLCB5ZXMgYWxsLCBhbmQgY2FuY2VsICkKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgQ2hvaWNlW10gZ2V0VGhyZWVTdGF0ZUZpbGVPcHRpb25zKCkgCi0gIHsKLSAgICBWZWN0b3IgY2hvaWNlcyA9IG5ldyBWZWN0b3IoKTsKLSAgICAKLSAgICBjaG9pY2VzLmFkZChuZXcgQ2hvaWNlKCAnWScsIEVudmlyb25tZW50TWVzc2FnZXMuTEFCRUxfWUVTKSk7Ci0gICAgY2hvaWNlcy5hZGQobmV3IENob2ljZSggJ0EnLCBFbnZpcm9ubWVudE1lc3NhZ2VzLkxBQkVMX1lFU19UT19BTEwpKTsKLSAgICBjaG9pY2VzLmFkZChuZXcgQ2hvaWNlKCAnQycsIEVudmlyb25tZW50TWVzc2FnZXMuTEFCRUxfQ0FOQ0VMKSk7Ci0gICAgCi0gICAgcmV0dXJuIChDaG9pY2VbXSljaG9pY2VzLnRvQXJyYXkobmV3IENob2ljZVtjaG9pY2VzLnNpemUoKV0pOwotICB9Ci0gIAotICAvKioKLSAgKiBSZXR1cm5zIGFuCi0gICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZSBJUmVzb3VyY2V9Ci0gICogb2YgdGhlIGdpdmVuIGFic29sdXRlIHBhdGhuYW1lIG9yIG51bGwgaWYgbm8gc3VjaCByZXNvdXJjZSBleGlzdHMuCi0gICogQHBhcmFtIGFic29sdXRlUGF0aG5hbWUgVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIHJlc291cmNlLgotICAqIEByZXR1cm4gVGhlIDxjb2RlPklSZXNvdXJjZTwvY29kZT4uCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgSVJlc291cmNlIGZpbmRSZXNvdXJjZSAoIFN0cmluZyBhYnNvbHV0ZVBhdGhuYW1lICkKLSAgewotICAgIGlmIChhYnNvbHV0ZVBhdGhuYW1lID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmaW5kUmVzb3VyY2UobmV3IFBhdGgoYWJzb2x1dGVQYXRobmFtZSkpOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyBhbgotICAqIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2UgSVJlc291cmNlfQotICAqIG9mIHRoZSBnaXZlbiBhYnNvbHV0ZSBwYXRoIG9yIG51bGwgaWYgbm8gc3VjaCByZXNvdXJjZSBleGlzdHMuCi0gICogQHBhcmFtIGFic29sdXRlUGF0aCBUaGUgYWJzb2x1dGUgPGNvZGU+SVBhdGg8L2NvZGU+IG9mIHRoZSByZXNvdXJjZS4KLSAgKiBAcmV0dXJuIFRoZSA8Y29kZT5JUmVzb3VyY2U8L2NvZGU+LgotICAqLwotICBwdWJsaWMgc3RhdGljIElSZXNvdXJjZSBmaW5kUmVzb3VyY2UgKCBJUGF0aCBhYnNvbHV0ZVBhdGggKQotICB7Ci0gICAgaWYgKGFic29sdXRlUGF0aCA9PSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gRmlsZVJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmZpbmRNZW1iZXIoYWJzb2x1dGVQYXRoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIENvcGllcyBhIGZpbGUgZnJvbSBhIHBsdWdpbidzIGluc3RhbGxhdGlvbiBsb2NhdGlvbgotICAgKiB0byBhbiBFY2xpcHNlIGZvbGRlci4KLSAgICogQHBhcmFtIHBsdWdpbiBUaGUgcGx1Z2luIGNvbnRhaW5pbmcgdGhlIGZpbGVzIHRvIGNvcHkuCi0gICAqIE11c3Qgbm90IGJlIG51bGwuCi0gICAqIEBwYXJhbSBzb3VyY2VQYXRoIFRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgPGNvZGU+cGx1Z2luPC9jb2RlPgotICAgKiBpbnN0YWxsIGxvY2F0aW9uLCBjb250YWluaW5nIHRoZSBmaWxlcyB0byBjb3B5LgotICAgKiBJZiBudWxsLCB0aGVuIHRoZSBwbHVnaW4gaW5zdGFsbCBsb2NhdGlvbiBpcyB0aGUgc291cmNlIHBhdGgKLSAgICogKGllLiBudWxsIGlzIGVxdWl2YWxlbnQgdG8gIi4iKS4KLSAgICogQHBhcmFtIHBhdGhuYW1lIFRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBjb3B5LgotICAgKiBUaGUgcGF0aG5hbWUgaXMgcmVsYXRpdmUgdG8gdGhlIDxjb2RlPnBsdWdpbiBzb3VyY2VQYXRoPC9jb2RlPi4KLSAgICogTXVzdCBub3QgYmUgbnVsbC4KLSAgICogQHBhcmFtIHRhcmdldFBhdGggVGhlIGFic29sdXRlIEVjbGlwc2UgcGF0aCBvZiB0aGUgZm9sZGVyIHRvCi0gICAqIHdoaWNoIHRoZSBmaWxlIHdpbGwgYmUgY29waWVkLiBUaGUgcmVsYXRpdmUgcGF0aG5hbWUgb2YgdGhlCi0gICAqIGZpbGUgaXMgcHJlc2VydmVkLgotICAgKiBNdXN0IG5vdCBiZSBudWxsLgotICAgKiBAcGFyYW0gY3JlYXRlRm9sZGVycyBUaGUgaW50ZXJtZWRpYXRlIGZvbGRlciBjcmVhdGlvbiBwb2xpY3ksIG9uZSBvZgotICAgKiB7QGxpbmsgI0NSRUFURSBDUkVBVEV9IG9yIHtAbGluayAjRE9OVF9DUkVBVEUgRE9OVF9DUkVBVEV9LgotICAgKiA8dWw+Ci0gICAqIDxsaT48Y29kZT5DUkVBVEU8L2NvZGU+IC0KLSAgICogSWYgYW55IGludGVybWVkaWF0ZSBmb2xkZXJzIGluIHRoZSBnaXZlbiA8Y29kZT5hYnNvbHV0ZVBhdGg8L2NvZGU+Ci0gICAqIGRvIG5vdCBleGlzdCwgdGhleSB3aWxsIGJlIGNyZWF0ZWQuCi0gICAqIDxsaT48Y29kZT5ET05UX0NSRUFURTwvY29kZT4gLQotICAgKiBJZiBhbnkgaW50ZXJtZWRpYXRlIGZvbGRlcnMgaW4gdGhlIGdpdmVuIDxjb2RlPmFic29sdXRlUGF0aDwvY29kZT4KLSAgICogZG8gbm90IGV4aXN0LCB0aGUgbWV0aG9kIHdpbGwgdGhyb3cgYSA8Y29kZT5Db3JlRXhjZXB0aW9uPC9jb2RlPi4KLSAgICogPC91bD4KLSAgICogQHBhcmFtIG92ZXJ3cml0ZUZpbGUgVGhlIHBvbGljeSBmb3IgZXhpc3RpbmcgZmlsZXMsIG9uZSBvZgotICAgKiB7QGxpbmsgI09WRVJXUklURSBPVkVSV1JJVEV9IG9yIHtAbGluayAjRE9OVF9PVkVSV1JJVEUgRE9OVF9PVkVSV1JJVEV9LgotICAgKiA8dWw+Ci0gICAqIDxsaT48Y29kZT5PVkVSV1JJVEU8L2NvZGU+IC0KLSAgICogSWYgYSByZXNvdXJjZSBvZiB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnaXZlbgotICAgKiA8Y29kZT5hYnNvbHV0ZVBhdGg8L2NvZGU+IGFscmVhZHkgZXhpc3RzIGFuZCBpcyBhIGZpbGUsCi0gICAqIGl0IHdpbGwgYmUgcmVwbGFjZWQuCi0gICAqIElmIHRoZSByZXNvdXJjZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXQgaXMgbm90IGEgZmlsZSwKLSAgICogdGhlbiBubyBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhbmQKLSAgICogYSA8Y29kZT5Db3JlRXhjZXB0aW9uPC9jb2RlPiB3aWxsIGJlIHRocm93bi4KLSAgICogPGxpPjxjb2RlPkRPTlRfT1ZFUldSSVRFPC9jb2RlPiAtCi0gICAqIElmIGFueSByZXNvdXJjZSBvZiB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnaXZlbgotICAgKiA8Y29kZT5hYnNvbHV0ZVBhdGg8L2NvZGU+IGFscmVhZHkgZXhpc3RzLAotICAgKiB0aGVuIG5vIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGFuZAotICAgKiBhIDxjb2RlPkNvcmVFeGNlcHRpb248L2NvZGU+IHdpbGwgYmUgdGhyb3duLgotICAgKiA8L3VsPgotICAgKiBAcGFyYW0gcHJvZ3Jlc3NNb25pdG9yIFRoZSBwcm9ncmVzcyBtb25pdG9yIGZvciB0aGUgb3BlcmF0aW9uLCBvciBudWxsLgotICAgKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gQW4gZXhjZXB0aW9uIGNvbnRhaW5pbmcgYW4KLSAgICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzIElTdGF0dXN9Ci0gICAqIHdpdGggYSBzZXZlcml0eSBvZiA8Y29kZT5JU3RhdHVzLkVSUk9SPC9jb2RlPiBhbmQgYQotICAgKiBsb2NhbGUtc3BlY2lmaWMgZGVzY3JpcHRpb24gb2YgdGhlIGNhdXNlLgotICAgKi8KLSAgIHN0YXRpYyBwdWJsaWMgdm9pZCBjb3B5RmlsZSggUmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGx1Z2luIHBsdWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBhdGggc291cmNlUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBhdGggcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQYXRoIHRhcmdldFBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU3RhdHVzSGFuZGxlciBzdGF0dXNNb25pdG9yICkKLSAgICAgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgIHsKLSAgICAgdHJ5Ci0gICAgIHsKLSAgICAgICBJUGF0aCB0YXJnZXQgPSB0YXJnZXRQYXRoLmFwcGVuZChwYXRobmFtZSk7Ci0gICAgICAgSVBhdGggc291cmNlID0gc291cmNlUGF0aCA9PSBudWxsID8gcGF0aG5hbWUgOiBzb3VyY2VQYXRoLmFwcGVuZChwYXRobmFtZSk7Ci0gICAgICAgSW5wdXRTdHJlYW0gaW5wdXQgPSBwbHVnaW4ub3BlblN0cmVhbShzb3VyY2UpOwotICAgICAgIGNyZWF0ZUZpbGUocmVzb3VyY2VDb250ZXh0LCB0YXJnZXQsIGlucHV0LCBwcm9ncmVzc01vbml0b3IsIHN0YXR1c01vbml0b3IpOwotICAgICB9Ci0gICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgICB7Ci0gICAgICAgdGhyb3cgbmV3IENvcmVFeGNlcHRpb24obmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbi5nZXRCdW5kbGUoKS5nZXRTeW1ib2xpY05hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50TWVzc2FnZXMuTVNHX0VSUk9SX0lPLGUpKTsKLSAgICAgfQotICAgfQotICAgCi0gIC8qKgotICAgKiBEZWxldGVzIGEgZmlsZSB1bmRlciBhIGNvbnRhaW5lci4KLSAgICogVGhlIGNvbnRhaW5lciBtdXN0IGFscmVhZHkgZXhpc3QuCi0gICAqIEBwYXJhbSBmaWxlIC0gdGhlIElGaWxlIHRvIGJlIGRlbGV0ZWQKLSAgICogQHBhcmFtIHByb2dyZXNzTW9uaXRvcgotICAgKiBAcGFyYW0gc3RhdHVzTW9uaXRvcgotICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaWYgaXQgZXhpc3RzIGFuZCBpcyBzdWNjZXNzZnVsbHkgZGVsZXRlZC4gRmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGRlbGV0ZUZpbGUoIFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUZpbGUgZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTdGF0dXNIYW5kbGVyIHN0YXR1c01vbml0b3IpCi0gICAgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAgIGlmIChmaWxlLmV4aXN0cygpKQotICAgIHsKLSAgICAgIGlmICghcmVzb3VyY2VDb250ZXh0LmlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCkpCi0gICAgICB7Ci0gICAgICAgIElTdGF0dXMgc3RhdHVzIAotICAgICAgICAgID0gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyggTkxTLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfRVJST1JfRklMRV9PVkVSV1JJVEVfRElTQUJMRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXXsgZmlsZS5nZXRQYXJlbnQoKS5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5nZXROYW1lKCl9KSApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAKLSAgICAgICAgQ2hvaWNlIGNob2ljZSA9IHN0YXR1c01vbml0b3IucmVwb3J0KCBzdGF0dXMsIGdldFRocmVlU3RhdGVGaWxlT3B0aW9ucygpICk7Ci0gICAgICAgIAotICAgICAgICBpZiggY2hvaWNlLmdldFNob3J0Y3V0KCkgPT0gJ0MnICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgaWYoIGNob2ljZS5nZXRTaG9ydGN1dCgpID09ICdBJyApIHsKLSAgICAgICAgCXJlc291cmNlQ29udGV4dC5zZXRPdmVyd3JpdGVGaWxlc0VuYWJsZWQodHJ1ZSk7Ci0gICAgICAgIAlQZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0LmdldEluc3RhbmNlKCkuc2V0T3ZlcndyaXRlRmlsZXNFbmFibGVkKHRydWUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIC8vV2UgaGF2ZSBwZXJtaXNzaW9uIHRvIG92ZXJ3cml0ZSBzbyBjaGVjayBpZiBmaWxlIGlzIHJlYWQtb25seQotICAgICAgaWYgKGZpbGUuaXNSZWFkT25seSgpKQotICAgICAgewotICAgICAgICBpZiAoIXJlc291cmNlQ29udGV4dC5pc0NoZWNrb3V0RmlsZXNFbmFibGVkKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBJU3RhdHVzIHN0YXR1cyAKLSAgICAgICAgICAgID0gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyggTkxTLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfRVJST1JfRklMRV9DSEVDS09VVF9ESVNBQkxFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117IGZpbGUuZ2V0UGFyZW50KCkuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5nZXROYW1lKCl9KSApOwotICAgICAgICAgIAotICAgICAgICAgIENob2ljZSBjaG9pY2UgPSBzdGF0dXNNb25pdG9yLnJlcG9ydCggc3RhdHVzLCBnZXRUaHJlZVN0YXRlRmlsZU9wdGlvbnMoKSApOwotICAgICAgICAgIAotICAgICAgICAgIGlmKCBjaG9pY2UuZ2V0U2hvcnRjdXQoKSA9PSAnQycgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgCi0gICAgICAgICAgaWYoIGNob2ljZS5nZXRTaG9ydGN1dCgpID09ICdBJyApIHsKLSAgICAgICAgCSAgcmVzb3VyY2VDb250ZXh0LnNldENoZWNrb3V0RmlsZXNFbmFibGVkKHRydWUpOwotICAgICAgICAJICBQZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0LmdldEluc3RhbmNlKCkuc2V0Q2hlY2tvdXRGaWxlc0VuYWJsZWQodHJ1ZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBJRmlsZVtdIGZpbGVzID0gbmV3IElGaWxlWzFdOwotICAgICAgICBmaWxlc1swXSA9IGZpbGU7Ci0gICAgICAgIElTdGF0dXMgc3RhdHVzID0gZ2V0V29ya3NwYWNlKCkudmFsaWRhdGVFZGl0KGZpbGVzLCBudWxsKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCBzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBJU3RhdHVzLkVSUk9SICkKLSAgICAgICAgewotICAgICAgICAgIHN0YXR1c01vbml0b3IucmVwb3J0RXJyb3IoIHN0YXR1cyApOwotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICBmaWxlLmRlbGV0ZSh0cnVlLCBudWxsKTsKLSAgICB9Ci0gICAgLy9BdCB0aGlzIHBvaW50LCBlaXRoZXIgdGhlIGZpbGUgZGlkIG5vdCBleGlzdCBvciB3ZSBzdWNjZXNzZnVsbHkgZGVsZXRlZAotICAgIC8vIGl0LiBSZXR1cm4gc3VjY2Vzcy4KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBEZWxldGVzIGEgZm9sZGVyIHVuZGVyIGEgY29udGFpbmVyLgotICAgKiBAcGFyYW0gZm9sZGVyIC0gdGhlIElGb2xkZXIgdG8gYmUgZGVsZXRlZAotICAgKiBAcGFyYW0gcHJvZ3Jlc3NNb25pdG9yCi0gICAqIEBwYXJhbSBzdGF0dXNNb25pdG9yCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgZm9sZGVyIGRvZXMgbm90IGV4aXN0IG9yIGlmIGl0IGV4aXN0cyBhbmQgaXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgYWxvbmcgd2l0aCBpdHMgbWVtYmVycy4gRmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBkZWxldGVGb2xkZXIoIFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRm9sZGVyIGZvbGRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0YXR1c0hhbmRsZXIgc3RhdHVzTW9uaXRvciApCi0gICAgIHRocm93cyBDb3JlRXhjZXB0aW9uCi0gICB7Ci0gICAgIGlmICghZm9sZGVyLmV4aXN0cygpKSByZXR1cm4gdHJ1ZTsKLQotICAgICBib29sZWFuICAgICBkZWxldGVkICAgPSB0cnVlOwotICAgICBJUmVzb3VyY2VbXSByZXNvdXJjZXMgPSBmb2xkZXIubWVtYmVycygpOwotICAgICAKLSAgICAgZm9yIChpbnQgaT0wOyBpPHJlc291cmNlcy5sZW5ndGg7IGkrKykKLSAgICAgewotICAgICAgIElSZXNvdXJjZSByZXNvdXJjZSA9IHJlc291cmNlc1tpXTsKLSAgICAgICBpZiAocmVzb3VyY2UgaW5zdGFuY2VvZiBJRmlsZSkKLSAgICAgICB7Ci0gICAgICAgICBkZWxldGVkID0gZGVsZXRlRmlsZShyZXNvdXJjZUNvbnRleHQsIChJRmlsZSlyZXNvdXJjZSwgcHJvZ3Jlc3NNb25pdG9yLCBzdGF0dXNNb25pdG9yKTsKLSAgICAgICB9Ci0gICAgICAgaWYgKHJlc291cmNlIGluc3RhbmNlb2YgSUZvbGRlcikKLSAgICAgICB7Ci0gICAgICAgICBkZWxldGVkID0gZGVsZXRlRm9sZGVyKCByZXNvdXJjZUNvbnRleHQsIChJRm9sZGVyKXJlc291cmNlLCBwcm9ncmVzc01vbml0b3IsIHN0YXR1c01vbml0b3IpOwotICAgICAgIH0KLQotICAgICAgIGlmKCAhZGVsZXRlZCApIGJyZWFrOwotICAgICB9Ci0gICAgIAotICAgICBpZiggZGVsZXRlZCApCi0gICAgIHsKLSAgICAgICBmb2xkZXIuZGVsZXRlKHRydWUsIHRydWUsIG51bGwpOwotICAgICAgIHJldHVybiB0cnVlOwotICAgICB9Ci0gICAgIGVsc2UKLSAgICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0KLSAgLyoqCi0gICogQ3JlYXRlcyBhIGZpbGUgb2YgdGhlIGdpdmVuIDxjb2RlPmFic29sdXRlUGF0aDwvY29kZT4KLSAgKiBhbmQgcmV0dXJucyBpdHMgaGFuZGxlIGFzIGFuIDxjb2RlPklGaWxlPC9jb2RlPi4KLSAgKiBJZiB0aGUgZmlsZSBjYW5ub3QgYmUgY3JlYXRlZCwgYQotICAqIDxjb2RlPkNvcmVFeGNlcHRpb248L2NvZGU+IGNvbnRhaW5pbmcgYW4KLSAgKiA8Y29kZT5JU3RhdHVzPC9jb2RlPiBvYmplY3QgaXMgdGhyb3duLgotICAqIEBwYXJhbSBhYnNvbHV0ZVBhdGggVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLgotICAqIFRoZSBwcm9qZWN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhdGggbXVzdCBhbHJlYWR5IGV4aXN0LAotICAqIHRoYXQgaXMsIHRoaXMgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIHRvIGNyZWF0ZSBwcm9qZWN0cy4KLSAgKiBAcGFyYW0gcHJvZ3Jlc3NNb25pdG9yIFRoZSBwcm9ncmVzcyBtb25pdG9yIGZvciB0aGUgb3BlcmF0aW9uLCBvciBudWxsLgotICAqIEByZXR1cm4gVGhlIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSBJRmlsZX0KLSAgKiBoYW5kbGUgb2YgdGhlIGZpbGUuCi0gICogQHRocm93cyBDb3JlRXhjZXB0aW9uIEFuIGV4Y2VwdGlvbiBjb250YWluaW5nIGFuCi0gICoge0BsaW5rIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzIElTdGF0dXN9Ci0gICogd2l0aCBhIHNldmVyaXR5IG9mIDxjb2RlPklTdGF0dXMuRVJST1I8L2NvZGU+IGFuZCBhCi0gICogbG9jYWxlLXNwZWNpZmljIGRlc2NyaXB0aW9uIG9mIHRoZSBjYXVzZS4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBJRmlsZSBjcmVhdGVGaWxlICgKLSAgICBSZXNvdXJjZUNvbnRleHQgcmVzb3VyY2VDb250ZXh0LAotICAgIElQYXRoICAgICAgICAgICBhYnNvbHV0ZVBhdGgsCi0gICAgSW5wdXRTdHJlYW0gICAgIGlucHV0U3RyZWFtLAotICAgIElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yLAotICAgIElTdGF0dXNIYW5kbGVyICAgc3RhdHVzSGFuZGxlciApCi0KLSAgICB0aHJvd3MgQ29yZUV4Y2VwdGlvbiAKLSAgeyAgICAKLSAgICBpZiAoIWFic29sdXRlUGF0aC5pc0Fic29sdXRlKCkpCi0gICAgewotICAgICAgdGhyb3cgbmV3IENvcmVFeGNlcHRpb24obmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLCAiUmVzb3VyY2VVdGlscyIsMCxOTFMuYmluZChFbnZpcm9ubWVudE1lc3NhZ2VzLk1TR19FUlJPUl9QQVRIX05PVF9BQlNPTFVURSxuZXcgT2JqZWN0W10ge2Fic29sdXRlUGF0aC50b1N0cmluZygpfSksbnVsbCkpOwotICAgIH0KLSAgICBpZiAoYWJzb2x1dGVQYXRoLnNlZ21lbnRDb3VudCgpIDwgMSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIlJlc291cmNlVXRpbHMiLDAsTkxTLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfRVJST1JfUEFUSF9FTVBUWSxuZXcgT2JqZWN0W10ge2Fic29sdXRlUGF0aC50b1N0cmluZygpfSksbnVsbCkpOwotICAgIH0KLSAgICBpZiAoYWJzb2x1dGVQYXRoLnNlZ21lbnRDb3VudCgpIDwgMikKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIlJlc291cmNlVXRpbHMiLDAsTkxTLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfRVJST1JfUEFUSF9OT1RfRk9MREVSLG5ldyBPYmplY3RbXSB7YWJzb2x1dGVQYXRoLnRvU3RyaW5nKCl9KSxudWxsKSk7Ci0gICAgfQotICAgIElDb250YWluZXIgcGFyZW50ICAgPSBtYWtlRm9sZGVyUGF0aChyZXNvdXJjZUNvbnRleHQsIGFic29sdXRlUGF0aC5yZW1vdmVMYXN0U2VnbWVudHMoMSksIHByb2dyZXNzTW9uaXRvciwgc3RhdHVzSGFuZGxlcik7Ci0gICAgU3RyaW5nICAgICBmaWxlTmFtZSA9IGFic29sdXRlUGF0aC5sYXN0U2VnbWVudCgpOwotICAgIAotICAgIHJldHVybiBtYWtlRmlsZShyZXNvdXJjZUNvbnRleHQsIHBhcmVudCwgZmlsZU5hbWUsIGlucHV0U3RyZWFtLCBwcm9ncmVzc01vbml0b3IsIHN0YXR1c0hhbmRsZXIpOwotICB9Ci0KLSAgLyoqCi0gICogQ3JlYXRlcyB1bmRlciB0aGUgZ2l2ZW4gPGNvZGU+cHJvamVjdDwvY29kZT4KLSAgKiBhIGZpbGUgb2YgdGhlIGdpdmVuIDxjb2RlPnJlbGF0aXZlUGF0aDwvY29kZT4KLSAgKiBhbmQgcmV0dXJucyBpdHMgaGFuZGxlIGFzIGFuIDxjb2RlPklGaWxlPC9jb2RlPi4KLSAgKiBJZiB0aGUgZmlsZSBjYW5ub3QgYmUgY3JlYXRlZCwgYQotICAqIDxjb2RlPkNvcmVFeGNlcHRpb248L2NvZGU+IGNvbnRhaW5pbmcgYW4KLSAgKiA8Y29kZT5JU3RhdHVzPC9jb2RlPiBvYmplY3QgaXMgdGhyb3duLgotICAqIEBwYXJhbSBhYnNvbHV0ZVBhdGggVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLgotICAqIFRoZSBwcm9qZWN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhdGggbXVzdCBhbHJlYWR5IGV4aXN0LAotICAqIHRoYXQgaXMsIHRoaXMgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIHRvIGNyZWF0ZSBwcm9qZWN0cy4KLSAgKiBAcGFyYW0gY3JlYXRlRm9sZGVycyBUaGUgaW50ZXJtZWRpYXRlIGZvbGRlciBjcmVhdGlvbiBwb2xpY3ksIG9uZSBvZgotICAqIHtAbGluayAjQ1JFQVRFIENSRUFURX0gb3Ige0BsaW5rICNET05UX0NSRUFURSBET05UX0NSRUFURX0uCi0gICogPHVsPgotICAqIDxsaT48Y29kZT5DUkVBVEU8L2NvZGU+IC0KLSAgKiBJZiBhbnkgaW50ZXJtZWRpYXRlIGZvbGRlcnMgaW4gdGhlIGdpdmVuIDxjb2RlPmFic29sdXRlUGF0aDwvY29kZT4KLSAgKiBkbyBub3QgZXhpc3QsIHRoZXkgd2lsbCBiZSBjcmVhdGVkLgotICAqIDxsaT48Y29kZT5ET05UX0NSRUFURTwvY29kZT4gLQotICAqIElmIGFueSBpbnRlcm1lZGlhdGUgZm9sZGVycyBpbiB0aGUgZ2l2ZW4gPGNvZGU+YWJzb2x1dGVQYXRoPC9jb2RlPgotICAqIGRvIG5vdCBleGlzdCwgdGhlIG1ldGhvZCB3aWxsIHRocm93IGEgPGNvZGU+Q29yZUV4Y2VwdGlvbjwvY29kZT4uCi0gICogPC91bD4KLSAgKiBAcGFyYW0gb3ZlcndyaXRlRmlsZSBUaGUgcG9saWN5IGZvciBleGlzdGluZyBmaWxlcywgb25lIG9mCi0gICoge0BsaW5rICNPVkVSV1JJVEUgT1ZFUldSSVRFfSBvciB7QGxpbmsgI0RPTlRfT1ZFUldSSVRFIERPTlRfT1ZFUldSSVRFfS4KLSAgKiA8dWw+Ci0gICogPGxpPjxjb2RlPk9WRVJXUklURTwvY29kZT4gLQotICAqIElmIGEgcmVzb3VyY2Ugb2YgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2l2ZW4KLSAgKiA8Y29kZT5hYnNvbHV0ZVBhdGg8L2NvZGU+IGFscmVhZHkgZXhpc3RzIGFuZCBpcyBhIGZpbGUsCi0gICogaXQgd2lsbCBiZSByZXBsYWNlZC4KLSAgKiBJZiB0aGUgcmVzb3VyY2UgYWxyZWFkeSBleGlzdHMgYW5kIGl0IGlzIG5vdCBhIGZpbGUsCi0gICogdGhlbiBubyBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhbmQKLSAgKiBhIDxjb2RlPkNvcmVFeGNlcHRpb248L2NvZGU+IHdpbGwgYmUgdGhyb3duLgotICAqIDxsaT48Y29kZT5ET05UX09WRVJXUklURTwvY29kZT4gLQotICAqIElmIGFueSByZXNvdXJjZSBvZiB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnaXZlbgotICAqIDxjb2RlPmFic29sdXRlUGF0aDwvY29kZT4gYWxyZWFkeSBleGlzdHMsCi0gICogdGhlbiBubyBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhbmQKLSAgKiBhIDxjb2RlPkNvcmVFeGNlcHRpb248L2NvZGU+IHdpbGwgYmUgdGhyb3duLgotICAqIDwvdWw+Ci0gICogQHBhcmFtIHByb2dyZXNzTW9uaXRvciBUaGUgcHJvZ3Jlc3MgbW9uaXRvciBmb3IgdGhlIG9wZXJhdGlvbiwgb3IgbnVsbC4KLSAgKiBAcmV0dXJuIFRoZSB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUgSUZpbGV9Ci0gICogaGFuZGxlIG9mIHRoZSBmaWxlLgotICAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBBbiBleGNlcHRpb24gY29udGFpbmluZyBhbgotICAqIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cyBJU3RhdHVzfQotICAqIHdpdGggYSBzZXZlcml0eSBvZiA8Y29kZT5JU3RhdHVzLkVSUk9SPC9jb2RlPiBhbmQgYQotICAqIGxvY2FsZS1zcGVjaWZpYyBkZXNjcmlwdGlvbiBvZiB0aGUgY2F1c2UuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgSUZpbGUgY3JlYXRlRmlsZSAoCi0gICAgUmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dCwKLSAgICBJUHJvamVjdCAgICAgICAgcHJvamVjdCwKLSAgICBJUGF0aCAgICAgICAgICAgcmVsYXRpdmVQYXRoLAotICAgIElucHV0U3RyZWFtICAgICBpbnB1dFN0cmVhbSwKLSAgICBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvciwKLSAgICBJU3RhdHVzSGFuZGxlciAgIHN0YXR1c01vbml0b3IgKQotIAotICAgIHRocm93cyBDb3JlRXhjZXB0aW9uIAotICB7Ci0gICAgSVBhdGggYWJzb2x1dGVQYXRoID0gcHJvamVjdC5nZXRGdWxsUGF0aCgpLmFwcGVuZChyZWxhdGl2ZVBhdGgpOwotICAgIHJldHVybiBjcmVhdGVGaWxlKHJlc291cmNlQ29udGV4dCwgYWJzb2x1dGVQYXRoLCBpbnB1dFN0cmVhbSwgcHJvZ3Jlc3NNb25pdG9yLCBzdGF0dXNNb25pdG9yKTsKLSAgfQotCi0gIC8qKgotICAqIENyZWF0ZXMgYW4gb3V0cHV0IHN0cmVhbSB0aGF0IGNhbiBiZSB1c2VkIHRvIHdyaXRlIHRvIHRoZQotICAqIGdpdmVuIDxjb2RlPmZpbGU8L2NvZGU+LiBBY3R1YWwgY2hhbmdlcyB0byB0aGUgd29ya3NwYWNlCi0gICogbWF5IG9jY3VyIGR1cmluZyBjcmVhdGlvbiBvZiB0aGUgc3RyZWFtLCB3aGlsZSB3cml0aW5nIHRvCi0gICogdGhlIHN0cmVhbSwgb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZC4KLSAgKiBBIDxjb2RlPkNvcmVFeGNlcHRpb248L2NvZGU+IGNvbnRhaW5pbmcKLSAgKiBhbiA8Y29kZT5JU3RhdHVzPC9jb2RlPiB3aWxsIGJlIHRocm93bgotICAqIGF0IHNvbWUgcG9pbnQgaW4gdGhlIGxpZmVjeWNsZSBvZiB0aGUgc3RyZWFtCi0gICogaWYgdGhlIGZpbGUgcmVzb3VyY2UgY2Fubm90IGJlIGNyZWF0ZWQuCi0gICogQHBhcmFtIGZpbGUgVGhlIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSBJRmlsZX0KLSAgKiBoYW5kbGUgb2YgdGhlIGZpbGUgcmVzb3VyY2UgdG8gY3JlYXRlLiBUaGUgcHJvamVjdCBpbXBsaWVkIGJ5IHRoZQotICAqIHBhdGhuYW1lIG9mIHRoZSBmaWxlIG11c3QgYWxyZWFkeSBleGlzdCwKLSAgKiB0aGF0IGlzLCB0aGlzIG1ldGhvZCBjYW5ub3QgYmUgdXNlZCB0byBjcmVhdGUgcHJvamVjdHMuCi0gICogQHBhcmFtIHByb2dyZXNzTW9uaXRvciBUaGUgcHJvZ3Jlc3MgbW9uaXRvciBmb3IgdGhlIG9wZXJhdGlvbiwgb3IgbnVsbC4KLSAgKiBAcmV0dXJuIEFuIDxjb2RlPk91dHB1dFN0cmVhbTwvY29kZT4gdGllZCB0byB0aGUgZmlsZSByZXNvdXJjZS4KLSAgKiBBY3R1YWwgY2hlY2tzIG9mIG9yIGNoYW5nZXMgdG8gdGhlIHdvcmtzcGFjZSBtYXkgb2NjdXIgYXMgZWFybHkgZHVyaW5nCi0gICogc3RyZWFtIGNyZWF0aW9uLCBjbG9zdXJlLCBvciBhbnkgdGltZSBpbiBiZXR3ZWVuLgotICAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBBbiBleGNlcHRpb24gY29udGFpbmluZyBhbgotICAqIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cyBJU3RhdHVzfQotICAqIHdpdGggYSBzZXZlcml0eSBvZiA8Y29kZT5JU3RhdHVzLkVSUk9SPC9jb2RlPiBhbmQgYQotICAqIGxvY2FsZS1zcGVjaWZpYyBkZXNjcmlwdGlvbiBvZiB0aGUgY2F1c2UuCi0gICogUmVhc29ucyBpbmNsdWRlOgotICAqIDxvbD4KLSAgKiA8bGk+VGhlIHByb2plY3Qgb2YgdGhlIGdpdmVuIGZpbGUncyBwYXRoIGRvZXMgbm90IGV4aXN0LgotICAqIDxsaT5BIG5vbi1maWxlIHJlc291cmNlIG9mIHRoZSBzYW1lIG5hbWUgb2YgdGhlIGdpdmVuIGZpbGUKLSAgKiBhbHJlYWR5IGV4aXN0cy4KLSAgKiA8bGk+QSBmaWxlIHJlc291cmNlIG9mIHRoZSBzYW1lIG5hbWUgb2YgdGhlIGdpdmVuIGZpbGUKLSAgKiBhbHJlYWR5IGV4aXN0cywgYW5kIDxjb2RlPm92ZXJ3cml0ZUZpbGU8L2NvZGU+IGlzIGZhbHNlLgotICAqIDxsaT5PbmUgb3IgbW9yZSBpbnRlcm1lZGlhdGUgZm9sZGVycyB0byB0aGUgZ2l2ZW4gZmlsZQotICAqIGRvIG5vdCBleGlzdCwgYW5kIDxjb2RlPmNyZWF0ZUZvbGRlcnM8L2NvZGU+IGlzIGZhbHNlLgotICAqIDwvb2w+Ci0gICovCi0KLSAgcHVibGljIHN0YXRpYyBPdXRwdXRTdHJlYW0gbmV3RmlsZU91dHB1dFN0cmVhbSAoCi0gICAgICAgUmVzb3VyY2VDb250ZXh0ICBjb250ZXh0LAotICAgICAgIElQYXRoICAgICAgICAgICAgZmlsZSwKLSAgICAgICBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvciwKLSAgICAgICBJU3RhdHVzSGFuZGxlciAgICBzdGF0dXNIYW5kbGVyICkKLSAKLSAgewotICAgIHJldHVybiBuZXcgRmlsZVJlc291cmNlT3V0cHV0U3RyZWFtKGNvbnRleHQsIGZpbGUsIHByb2dyZXNzTW9uaXRvciwgc3RhdHVzSGFuZGxlcik7Ci0gIH0KLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gTmF1Z2h0eSBiaXRzLi4uCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIC8vCi0gIC8vIENyZWF0ZXMgYSBwYXRoIG9mIGZvbGRlcnMuCi0gIC8vIERvIG5vdCBjYWxsIHdpdGggYW4gYWJzb2x1dGVQYXRoIG9mIGxlc3MgdGhhbiBvbmUgc2VnbWVudC4KLSAgLy8KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBwYXRoIG9mIGZvbGRlcnMuCi0gICAqIERvIG5vdCBjYWxsIHdpdGggYW4gYWJzb2x1dGVQYXRoIG9mIGxlc3MgdGhhbiBvbmUgc2VnbWVudC4KLSAgICogQHBhcmFtIHJlc291cmNlQ29udGV4dCB0aGUgcmVzb3VyY2UgY29udGV4dCBmb3IgbWFraW5nIGZvbGRlcnMuCi0gICAqIEBwYXJhbSBhYnNvbHV0ZVBhdGggdGhlIHBhdGggb2YgZm9sZGVycyB0aGF0IHdpbGwgYmUgY3JlYXRlZC4KLSAgICogQHBhcmFtIHByb2dyZXNzTW9uaXRvciB0aGUgcHJvZ3Jlc3MgbW9uaXRvciB0byBiZSB1c2VkLgotICAgKiBAcGFyYW0gc3RhdHVzSGFuZGxlciB0aGUgc3RhdHVzIGhhbmRsZXIuCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgSUNvbnRhaW5lciBvZiB0aGUgY3JlYXRlZCBmb2xkZXIuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIElDb250YWluZXIgbWFrZUZvbGRlclBhdGggKAotICAgIFJlc291cmNlQ29udGV4dCAgcmVzb3VyY2VDb250ZXh0LAotICAgIElQYXRoICAgICAgICAgICAgYWJzb2x1dGVQYXRoLAotICAgIElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yLAotICAgIElTdGF0dXNIYW5kbGVyICAgIHN0YXR1c0hhbmRsZXIgKQotICAKLSAgICB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICB7Ci0gICAgaWYgKGFic29sdXRlUGF0aC5zZWdtZW50Q291bnQoKSA8PSAxKQotICAgIHsKLSAgICAgIHJldHVybiBnZXRXb3Jrc3BhY2VSb290KCkuZ2V0UHJvamVjdChhYnNvbHV0ZVBhdGguc2VnbWVudCgwKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBJQ29udGFpbmVyIHBhcmVudCA9IG1ha2VGb2xkZXJQYXRoKHJlc291cmNlQ29udGV4dCwgYWJzb2x1dGVQYXRoLnJlbW92ZUxhc3RTZWdtZW50cygxKSwgcHJvZ3Jlc3NNb25pdG9yLCBzdGF0dXNIYW5kbGVyICk7Ci0gICAgICBTdHJpbmcgZm9sZGVyTmFtZSA9IGFic29sdXRlUGF0aC5sYXN0U2VnbWVudCgpOwotICAgICAgCi0gICAgICBjaGVja1BhcmVudCggcGFyZW50LCBhYnNvbHV0ZVBhdGggKTsKLSAgICAgIHJldHVybiBtYWtlRm9sZGVyKHJlc291cmNlQ29udGV4dCwgcGFyZW50LGZvbGRlck5hbWUsIHByb2dyZXNzTW9uaXRvciAsIHN0YXR1c0hhbmRsZXIgKTsKLSAgICB9Ci0gIH0KLSAgCi0gIHByaXZhdGUgc3RhdGljIHZvaWQgY2hlY2tQYXJlbnQoIElDb250YWluZXIgcGFyZW50LCBJUGF0aCBhYnNvbHV0ZVBhdGggKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICB7Ci0gICAgaWYoIHBhcmVudCA9PSBudWxsICkKLSAgICB7Ci0gICAgICAvLyBUaGUgcGFyZW50IGlzIG51bGwsIHNvIHRoZXJlIG11c3QgaGF2ZSBiZWVuIHByb2JsZW1zIGNyZWF0aW5nIGl0LiAgV2Ugd2lsbCB0aHJvdwotICAgICAgLy8gYSBDb3JlRXhjZXB0aW9uIHdhcm5pbmcgZm9yIHRoaXMgcHJvYmxlbS4KLSAgICAgIElQYXRoICBwYXJlbnRQYXRoID0gYWJzb2x1dGVQYXRoLnJlbW92ZUxhc3RTZWdtZW50cygxKTsKLSAgICAgIFN0cmluZyBmb2xkZXJQYXRoID0gYWJzb2x1dGVQYXRoLmxhc3RTZWdtZW50KCk7Ci0gICAgICB0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbiggU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTFMuYmluZChFbnZpcm9ubWVudE1lc3NhZ2VzLk1TR19FUlJPUl9GT0xERVJfQ1JFQVRJT05fRElTQUJMRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeyBwYXJlbnRQYXRoLnRvU3RyaW5nKCksIGZvbGRlclBhdGh9ICkgKSApOwotICAgIH0gIAotICB9Ci0gIAotICAvLwotICAvLyBDcmVhdGVzIGEgZm9sZGVyIHVuZGVyIGEgY29udGFpbmVyLgotICAvLyBUaGUgY29udGFpbmVyIG11c3QgYWxyZWFkeSBleGlzdC4KLSAgLy8KLSBwcml2YXRlIHN0YXRpYyBJRm9sZGVyIG1ha2VGb2xkZXIgKAotICAgIFJlc291cmNlQ29udGV4dCAgcmVzb3VyY2VDb250ZXh0LAotICAgIElDb250YWluZXIgICAgICAgcGFyZW50LAotICAgIFN0cmluZyAgICAgICAgICAgZm9sZGVyTmFtZSwKLSAgICBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvciwKLSAgICBJU3RhdHVzSGFuZGxlciAgICBzdGF0dXNIYW5kbGVyICkKLSAgCi0gIHRocm93cyBDb3JlRXhjZXB0aW9uCi0gIHsKLSAgICBJUmVzb3VyY2UgY2hpbGQgID0gcGFyZW50LmZpbmRNZW1iZXIoZm9sZGVyTmFtZSk7Ci0gICAgQ2hvaWNlICAgIHJlc3VsdCA9IG51bGw7Ci0gICAgCi0gICAgaWYoIGNoaWxkID09IG51bGwgKQotICAgIHsKLSAgICAgIGlmICghcmVzb3VyY2VDb250ZXh0LmlzQ3JlYXRlRm9sZGVyc0VuYWJsZWQoKSkgIAotICAgICAgewotICAgICAgICByZXN1bHQgPSBzdGF0dXNIYW5kbGVyLnJlcG9ydCgKLSAgICAgICAgICAgICAgICBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKAotICAgICAgICAgICAgICAgIAkJTkxTLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfRVJST1JfRk9MREVSX0NSRUFUSU9OX0RJU0FCTEVELAotICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXXsgcGFyZW50LmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKSwgZm9sZGVyTmFtZX0gKSApLCAKLSAgICAgICAgICAgICAgICBnZXRUaHJlZVN0YXRlRmlsZU9wdGlvbnMoKSApOwotICAgICAgICAKLSAgICAgICAgaWYoIHJlc3VsdCA9PSBudWxsIHx8IHJlc3VsdC5nZXRTaG9ydGN1dCgpID09ICdDJyApCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCByZXN1bHQuZ2V0U2hvcnRjdXQoKSA9PSAnQScgKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzb3VyY2VDb250ZXh0LnNldENyZWF0ZUZvbGRlcnNFbmFibGVkKHRydWUpOwotICAgICAgICAgIFBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQuZ2V0SW5zdGFuY2UoKS5zZXRDcmVhdGVGb2xkZXJzRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICBJRm9sZGVyIGZvbGRlciA9IHBhcmVudC5nZXRGb2xkZXIobmV3IFBhdGgoZm9sZGVyTmFtZSkpOwotICAgICAgZm9sZGVyLmNyZWF0ZSh0cnVlLHRydWUsbnVsbCk7Ci0gICAgICByZXR1cm4gZm9sZGVyOwotICAgIH0KLSAgICBlbHNlIGlmKCBjaGlsZC5nZXRUeXBlKCkgPT0gSVJlc291cmNlLkZPTERFUiApCi0gICAgewotICAgICAgcmV0dXJuIChJRm9sZGVyKWNoaWxkOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgdGhyb3cgbmV3IENvcmVFeGNlcHRpb24oCi0gICAgICAgIG5ldyBTdGF0dXMoIElTdGF0dXMuRVJST1IsIAotICAgICAgICAgICAgICAgICAgICAiUmVzb3VyY2VVdGlscyIsCi0gICAgICAgICAgICAgICAgICAgIDAsIAotICAgICAgICAgICAgICAgICAgICBOTFMuYmluZChFbnZpcm9ubWVudE1lc3NhZ2VzLk1TR19FUlJPUl9SRVNPVVJDRV9OT1RfRk9MREVSLAotCQkJCQkgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXXsgcGFyZW50LmdldEZ1bGxQYXRoKCkuYXBwZW5kKGZvbGRlck5hbWUpLnRvU3RyaW5nKCkgfSksCi0JCQludWxsICkgKTsKLSAgICB9Ci0gIH0KLQotICAvLwotICAvLyBDcmVhdGVzIGEgZmlsZSB1bmRlciBhIGNvbnRhaW5lci4KLSAgLy8gVGhlIGNvbnRhaW5lciBtdXN0IGFscmVhZHkgZXhpc3QuCi0gIC8vCi0gcHJpdmF0ZSBzdGF0aWMgSUZpbGUgbWFrZUZpbGUgKAotICAgIFJlc291cmNlQ29udGV4dCAgcmVzb3VyY2VDb250ZXh0LAotICAgIElDb250YWluZXIgICAgICAgcGFyZW50LAotICAgIFN0cmluZyAgICAgICAgICAgZmlsZU5hbWUsCi0gICAgSW5wdXRTdHJlYW0gICAgICBpbnB1dFN0cmVhbSwKLSAgICBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvciwKLSAgICBJU3RhdHVzSGFuZGxlciAgICBzdGF0dXNIYW5kbGVyICkKLSAKLSAgICB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICB7Ci0JIElGaWxlIGZpbGUgPSBwYXJlbnQuZ2V0RmlsZSggbmV3IFBhdGgoZmlsZU5hbWUpICk7Ci0KLQkgLy8gY3JlYXRlIHRoZSBmaWxlIGlmIGl0IGRvZXNuJ3QgZXhpc3QKLQkgaWYgKCFmaWxlLmV4aXN0cygpKSB7Ci0JCSB0cnkgewotCQkJIGZpbGUuY3JlYXRlKCBpbnB1dFN0cmVhbSwgdHJ1ZSwgbnVsbCk7ICAgIAotCQkJIHJldHVybiBmaWxlOwotCQkgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjb3JlRXhjZXB0aW9uKSB7Ci0JCQkgLy8gdGhpcyBlcnJvciBvbmx5IGhhcHBlbnMgaW4gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtOyBzbyBpZ25vcmUgdGhlIGNhc2VzLgotCQkJIGlmIChjb3JlRXhjZXB0aW9uLmdldFN0YXR1cygpLmdldENvZGUoKSA9PSBJUmVzb3VyY2VTdGF0dXMuQ0FTRV9WQVJJQU5UX0VYSVNUUykgewotCQkJCSBib29sZWFuIGZvdW5kSWdub3JpbmdDYXNlID0gZmFsc2U7Ci0KLQkJCQkgZm9yIChJUmVzb3VyY2UgcmVzb3VyY2UgOiBwYXJlbnQubWVtYmVycygpKSB7Ci0JCQkJCSBpZiAocmVzb3VyY2UuZ2V0TmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoZmlsZU5hbWUpKSB7Ci0JCQkJCQkgLy8gZm91bmQgdGhlIGZpbGUKLQkJCQkJCSBmb3VuZElnbm9yaW5nQ2FzZSA9IHRydWU7Ci0JCQkJCQkgZmlsZU5hbWUgPSByZXNvdXJjZS5nZXROYW1lKCk7Ci0JCQkJCQkgZmlsZSA9IHBhcmVudC5nZXRGaWxlKCBuZXcgUGF0aChmaWxlTmFtZSkpOwotCQkJCQkJIGJyZWFrOwotCQkJCQkgfQotCQkJCSB9Ci0KLQkJCQkgLy8gY2FuJ3QgZmluZCB0aGUgZmlsZSBjYXVzaW5nIHRoZSBDQVNFX1ZBUklBTlRfRVhJU1RTIGV4Y2VwdGlvbjsgdGhyb3cgdGhlIGV4Y2VwdGlvbgotCQkJCSBpZiAoIWZvdW5kSWdub3JpbmdDYXNlKQotCQkJCQkgdGhyb3cgY29yZUV4Y2VwdGlvbjsKLQkJCSB9IGVsc2UgewotCQkJCSAvLyB0aHJvdyBvdGhlciBleGNlcHRpb25zCi0JCQkJIHRocm93IGNvcmVFeGNlcHRpb247Ci0JCQkgfQotCQkgfQotCSB9Ci0KLQkgCi0gICAgQ2hvaWNlICAgIHJlc3VsdCA9IG51bGw7Ci0gICAgCi0KLSAgICBpZiggZmlsZS5nZXRUeXBlKCkgPT0gSVJlc291cmNlLkZJTEUgKQotICAgIHsKLSAgICAgIGlmKCAhcmVzb3VyY2VDb250ZXh0LmlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCkgKSAgIAotICAgICAgewotICAgICAgICByZXN1bHQgPSBzdGF0dXNIYW5kbGVyLnJlcG9ydCggCi0gICAgICAgICAgICAgIFN0YXR1c1V0aWxzLndhcm5pbmdTdGF0dXMoIE5MUy5iaW5kKEVudmlyb25tZW50TWVzc2FnZXMuTVNHX0VSUk9SX0ZJTEVfT1ZFUldSSVRFX0RJU0FCTEVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10ge3BhcmVudC5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCksZmlsZU5hbWV9KSApLAkJCQkJICAJCSAgICAKLSAgICAgICAgICAgICAgZ2V0VGhyZWVTdGF0ZUZpbGVPcHRpb25zKCkgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCByZXN1bHQgPT0gbnVsbCB8fCByZXN1bHQuZ2V0U2hvcnRjdXQoKSA9PSAnQycgKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiggcmVzdWx0LmdldFNob3J0Y3V0KCkgPT0gJ0EnICkKLSAgICAgICAgewotICAgICAgICAgIHJlc291cmNlQ29udGV4dC5zZXRPdmVyd3JpdGVGaWxlc0VuYWJsZWQodHJ1ZSk7Ci0gICAgICAgICAgUGVyc2lzdGVudFJlc291cmNlQ29udGV4dC5nZXRJbnN0YW5jZSgpLnNldE92ZXJ3cml0ZUZpbGVzRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgfQotICAgICAgfQkKLSAgICAgICAgCi0gICAgICAvL1dlIGhhdmUgcGVybWlzc2lvbiB0byBvdmVyd3JpdGUgc28gY2hlY2sgaWYgZmlsZSBpcyByZWFkLW9ubHkKLSAgICAgIGlmKCBmaWxlLmdldFJlc291cmNlQXR0cmlidXRlcygpID09IG51bGwgKQotICAgICAgewotICAgICAgCS8vIHJlc291cmNlIGlzIGxpa2VseSBvdXQtb2Ytc3luYyB3aXRoIGZpbGVzeXN0ZW0KLSAgICAgIAl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbiggCi0gICAgICAJICAgICAgICAgIG5ldyBTdGF0dXMoIElTdGF0dXMuRVJST1IsCi0gICAgICAJICAgICAgICAgICAgICAgICAgICAgICJSZXNvdXJjZVV0aWxzIiwKLSAgICAgIAkgICAgICAgICAgICAgICAgICAgICAgMCwgCi0gICAgICAJICAgICAgICAgICAgICAgICAgICAgIGZpbGUuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpLAotICAgICAgCQkJCQkJICBudWxsICkgKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoIGZpbGUuZ2V0UmVzb3VyY2VBdHRyaWJ1dGVzKCkuaXNSZWFkT25seSgpICkKLSAgICAgIHsKLSAgICAgICAgaWYoICFyZXNvdXJjZUNvbnRleHQuaXNDaGVja291dEZpbGVzRW5hYmxlZCgpICkgCi0gICAgICAgIHsgICAgICAgICAgICAKLSAgICAgICAgICByZXN1bHQgPSBzdGF0dXNIYW5kbGVyLnJlcG9ydCggCi0gICAgICAgICAgICAgICAgICAgICAgIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBOTFMuYmluZChFbnZpcm9ubWVudE1lc3NhZ2VzLk1TR19FUlJPUl9GSUxFX0NIRUNLT1VUX0RJU0FCTEVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeyBwYXJlbnQuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpLGZpbGVOYW1lfSApICksIAotICAgICAgICAgICAgICAgICAgICAgICBnZXRUaHJlZVN0YXRlRmlsZU9wdGlvbnMoKSApOwotICAgICAgICAgIAotICAgICAgICAgIGlmKCByZXN1bHQgPT0gbnVsbCB8fCByZXN1bHQuZ2V0U2hvcnRjdXQoKSA9PSAnQycgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCQkgIH0KLSAgICAgICAgICBlbHNlIGlmKCByZXN1bHQuZ2V0U2hvcnRjdXQoKSA9PSAnQScgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc291cmNlQ29udGV4dC5zZXRDaGVja291dEZpbGVzRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgICAgIFBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQuZ2V0SW5zdGFuY2UoKS5zZXRDaGVja291dEZpbGVzRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBJRmlsZVtdIGZpbGVzID0gbmV3IElGaWxlWzFdOwotICAgICAgICBmaWxlc1swXSA9IChJRmlsZSlmaWxlOwotICAgICAgICAgIAotICAgICAgICBJU3RhdHVzIHN0YXR1cyA9IGdldFdvcmtzcGFjZSgpLnZhbGlkYXRlRWRpdChmaWxlcyxudWxsKTsKLSAgICAgICAgCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgc3RhdHVzSGFuZGxlci5yZXBvcnQoIHN0YXR1cyApOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKCBTdGF0dXNFeGNlcHRpb24gZXhjICkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBmaWxlLnNldENvbnRlbnRzKCBpbnB1dFN0cmVhbSwgdHJ1ZSwgdHJ1ZSwgbnVsbCApOwotICAgICAgICAKLSAgICAgIHJldHVybiBmaWxlOwotICAgICAgCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbiggCi0gICAgICAgIG5ldyBTdGF0dXMoIElTdGF0dXMuRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICJSZXNvdXJjZVV0aWxzIiwKLSAgICAgICAgICAgICAgICAgICAgMCwgCi0gICAgICAgICAgICAgICAgICAgIE5MUy5iaW5kKEVudmlyb25tZW50TWVzc2FnZXMuTVNHX0VSUk9SX1JFU09VUkNFX05PVF9GSUxFLAotCQkgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7cGFyZW50LmdldEZ1bGxQYXRoKCkuYXBwZW5kKGZpbGVOYW1lKX0pLAotCQkgICAgICAgICAgICAgICAgICAgICAgIG51bGwgKSApOwotICAgIH0KLSAgfQotCi0gCi0gLyoqCi0gICAqIENyZWF0ZXMgYSBmaWxlIG9mIHRoZSBnaXZlbiA8Y29kZT5hYnNvbHV0ZVBhdGg8L2NvZGU+Ci0gICAqIGFuZCByZXR1cm5zIGl0cyBoYW5kbGUgYXMgYW4gPGNvZGU+SUZpbGU8L2NvZGU+LgotICAgKiBJZiB0aGUgZmlsZSBjYW5ub3QgYmUgY3JlYXRlZCwgYQotICAgKiA8Y29kZT5Db3JlRXhjZXB0aW9uPC9jb2RlPiBjb250YWluaW5nIGFuCi0gICAqIDxjb2RlPklTdGF0dXM8L2NvZGU+IG9iamVjdCBpcyB0aHJvd24uCi0gICAqIEBwYXJhbSBhYnNvbHV0ZVBhdGggVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLgotICAgKiBUaGUgcHJvamVjdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoIG11c3QgYWxyZWFkeSBleGlzdCwKLSAgICogdGhhdCBpcywgdGhpcyBtZXRob2QgY2Fubm90IGJlIHVzZWQgdG8gY3JlYXRlIHByb2plY3RzLgotICAgKiBAcGFyYW0gcHJvZ3Jlc3NNb25pdG9yIFRoZSBwcm9ncmVzcyBtb25pdG9yIGZvciB0aGUgb3BlcmF0aW9uLCBvciBudWxsLgotICAgKiBAcmV0dXJuIFRoZSB7QGxpbmsgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUgSUZpbGV9Ci0gICAqIGhhbmRsZSBvZiB0aGUgZmlsZS4KLSAgICogQHRocm93cyBDb3JlRXhjZXB0aW9uIEFuIGV4Y2VwdGlvbiBjb250YWluaW5nIGFuCi0gICAqIHtAbGluayBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cyBJU3RhdHVzfQotICAgKiB3aXRoIGEgc2V2ZXJpdHkgb2YgPGNvZGU+SVN0YXR1cy5FUlJPUjwvY29kZT4gYW5kIGEKLSAgICogbG9jYWxlLXNwZWNpZmljIGRlc2NyaXB0aW9uIG9mIHRoZSBjYXVzZS4KLSAgICovCi0gICBwdWJsaWMgc3RhdGljIElGaWxlIGNyZWF0ZUZpbGVBdExvY2F0aW9uICgKLSAgICAgUmVzb3VyY2VDb250ZXh0IHJlc291cmNlQ29udGV4dCwKLSAgICAgSVBhdGggICAgICAgICAgIGFic29sdXRlUGF0aCwKLSAgICAgSW5wdXRTdHJlYW0gICAgIGlucHV0U3RyZWFtLAotICAgICBJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvciwKLSAgICAgSVN0YXR1c0hhbmRsZXIgICBzdGF0dXNIYW5kbGVyICkKLQotICAgICB0aHJvd3MgQ29yZUV4Y2VwdGlvbiAKLSAgIHsgICAgCi0gICAgIGlmICghYWJzb2x1dGVQYXRoLmlzQWJzb2x1dGUoKSkKLSAgICAgewotICAgICAgIHRocm93IG5ldyBDb3JlRXhjZXB0aW9uKG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUiwgIlJlc291cmNlVXRpbHMiLDAsTkxTLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfRVJST1JfUEFUSF9OT1RfQUJTT0xVVEUsbmV3IE9iamVjdFtdIHthYnNvbHV0ZVBhdGgudG9TdHJpbmcoKX0pLG51bGwpKTsKLSAgICAgfQotICAgICBpZiAoYWJzb2x1dGVQYXRoLnNlZ21lbnRDb3VudCgpIDwgMSkKLSAgICAgewotICAgICAgIHRocm93IG5ldyBDb3JlRXhjZXB0aW9uKG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUiwiUmVzb3VyY2VVdGlscyIsMCxOTFMuYmluZChFbnZpcm9ubWVudE1lc3NhZ2VzLk1TR19FUlJPUl9QQVRIX0VNUFRZLG5ldyBPYmplY3RbXSB7YWJzb2x1dGVQYXRoLnRvU3RyaW5nKCl9KSxudWxsKSk7Ci0gICAgIH0KLSAgICAgaWYgKGFic29sdXRlUGF0aC5zZWdtZW50Q291bnQoKSA8IDIpCi0gICAgIHsKLSAgICAgICB0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIlJlc291cmNlVXRpbHMiLDAsTkxTLmJpbmQoRW52aXJvbm1lbnRNZXNzYWdlcy5NU0dfRVJST1JfUEFUSF9OT1RfRk9MREVSLG5ldyBPYmplY3RbXSB7YWJzb2x1dGVQYXRoLnRvU3RyaW5nKCl9KSxudWxsKSk7Ci0gICAgIH0KLSAgICAgSUNvbnRhaW5lciBwYXJlbnQgICA9IG1ha2VGb2xkZXJQYXRoQXRMb2NhdGlvbihyZXNvdXJjZUNvbnRleHQsIGFic29sdXRlUGF0aC5yZW1vdmVMYXN0U2VnbWVudHMoMSksIHByb2dyZXNzTW9uaXRvciwgc3RhdHVzSGFuZGxlcik7Ci0gICAgIFN0cmluZyAgICAgZmlsZU5hbWUgPSBhYnNvbHV0ZVBhdGgubGFzdFNlZ21lbnQoKTsKLSAgICAgCi0gICAgIGNoZWNrUGFyZW50KCBwYXJlbnQsIGFic29sdXRlUGF0aCApOwotICAgICAKLSAgICAgcmV0dXJuIG1ha2VGaWxlKHJlc291cmNlQ29udGV4dCwgcGFyZW50LCBmaWxlTmFtZSwgaW5wdXRTdHJlYW0sIHByb2dyZXNzTW9uaXRvciwgc3RhdHVzSGFuZGxlcik7Ci0gICB9Ci0KLS8qKgotICAqIENyZWF0ZXMgYSBwYXRoIG9mIGZvbGRlcnMgdXNpbmcgYWJzb2x1dGUgZmlsZW5hbWVzLgotICAqIERvIG5vdCBjYWxsIHdpdGggYW4gYWJzb2x1dGVQYXRoIG9mIGxlc3MgdGhhbiBvbmUgc2VnbWVudC4KLSAgKiBAcGFyYW0gcmVzb3VyY2VDb250ZXh0IHRoZSByZXNvdXJjZSBjb250ZXh0IGZvciBtYWtpbmcgZm9sZGVycy4KLSAgKiBAcGFyYW0gcmVzb3VyY2UgdGhlIHJlc291cmNlIHRoYXQgd2lsbCBiZSBjcmVhdGVkLgotICAqIEBwYXJhbSBwcm9ncmVzc01vbml0b3IgdGhlIHByb2dyZXNzIG1vbml0b3IgdG8gYmUgdXNlZC4KLSAgKiBAcGFyYW0gc3RhdHVzSGFuZGxlciB0aGUgc3RhdHVzIGhhbmRsZXIuCi0gICogQHJldHVybiByZXR1cm5zIHRoZSBJQ29udGFpbmVyIG9mIHRoZSBjcmVhdGVkIGZvbGRlci4KLSAgKi8KLSBwdWJsaWMgc3RhdGljIElDb250YWluZXIgbWFrZUZvbGRlclBhdGhBdExvY2F0aW9uICgKLSAgIFJlc291cmNlQ29udGV4dCAgcmVzb3VyY2VDb250ZXh0LAotICAgSUNvbnRhaW5lciAgICAgICByZXNvdXJjZSwKLSAgIElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yLAotICAgSVN0YXR1c0hhbmRsZXIgICBzdGF0dXNIYW5kbGVyICkKLSAKLSAgIHRocm93cyBDb3JlRXhjZXB0aW9uCi0gICB7Ci0JIGlmIChyZXNvdXJjZS5leGlzdHMoKSkKLQkgewotCQkgaWYgKHJlc291cmNlIGluc3RhbmNlb2YgSUNvbnRhaW5lcikKLQkJIHsKLQkJCSByZXR1cm4gKElDb250YWluZXIpIHJlc291cmNlOwotCQkgfQotCQkgZWxzZQotCQkgewotCQkJIHRocm93IG5ldyBDb3JlRXhjZXB0aW9uKAotCQkJCQkgbmV3IFN0YXR1cyggSVN0YXR1cy5FUlJPUiwgCi0JCQkJCQkJICJSZXNvdXJjZVV0aWxzIiwKLQkJCQkJCQkgMCwgCi0JCQkJCQkJIE5MUy5iaW5kKEVudmlyb25tZW50TWVzc2FnZXMuTVNHX0VSUk9SX1JFU09VUkNFX05PVF9GT0xERVIsCi0JCQkJCQkJCQkgbmV3IE9iamVjdFtdeyByZXNvdXJjZS5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCkgfSksCi0JCQkJCQkJCQkgbnVsbCApICk7Ci0JCSB9Ci0JIH0KLQkgZWxzZQotCSB7Ci0JCSBJQ29udGFpbmVyIHBhcmVudCA9IG1ha2VGb2xkZXJQYXRoQXRMb2NhdGlvbihyZXNvdXJjZUNvbnRleHQsIHJlc291cmNlLmdldFBhcmVudCgpLCBwcm9ncmVzc01vbml0b3IsIHN0YXR1c0hhbmRsZXIgKTsKLQkJIFN0cmluZyBmb2xkZXJOYW1lID0gcmVzb3VyY2UuZ2V0TmFtZSgpOwotCQkgCi0JCSByZXR1cm4gbWFrZUZvbGRlcihyZXNvdXJjZUNvbnRleHQsIHBhcmVudCwgZm9sZGVyTmFtZSwgcHJvZ3Jlc3NNb25pdG9yICwgc3RhdHVzSGFuZGxlciApOwotCSB9Ci0gfQotIAotIC8qKgotICAqIENyZWF0ZXMgYSBwYXRoIG9mIGZvbGRlcnMuCi0gICogRG8gbm90IGNhbGwgd2l0aCBhbiBhYnNvbHV0ZVBhdGggb2YgbGVzcyB0aGFuIG9uZSBzZWdtZW50LgotICAqIEBwYXJhbSByZXNvdXJjZUNvbnRleHQgdGhlIHJlc291cmNlIGNvbnRleHQgZm9yIG1ha2luZyBmb2xkZXJzLgotICAqIEBwYXJhbSBhYnNvbHV0ZVBhdGggdGhlIHBhdGggb2YgZm9sZGVycyB0aGF0IHdpbGwgYmUgY3JlYXRlZC4KLSAgKiBAcGFyYW0gcHJvZ3Jlc3NNb25pdG9yIHRoZSBwcm9ncmVzcyBtb25pdG9yIHRvIGJlIHVzZWQuCi0gICogQHBhcmFtIHN0YXR1c0hhbmRsZXIgdGhlIHN0YXR1cyBoYW5kbGVyLgotICAqIEByZXR1cm4gcmV0dXJucyB0aGUgSUNvbnRhaW5lciBvZiB0aGUgY3JlYXRlZCBmb2xkZXIuCi0gICovCi0gcHVibGljIHN0YXRpYyBJQ29udGFpbmVyIG1ha2VGb2xkZXJQYXRoQXRMb2NhdGlvbiAoCi0gICBSZXNvdXJjZUNvbnRleHQgIHJlc291cmNlQ29udGV4dCwKLSAgIElQYXRoICAgICAgICAgICAgYWJzb2x1dGVQYXRoLAotICAgSVByb2dyZXNzTW9uaXRvciBwcm9ncmVzc01vbml0b3IsCi0gICBJU3RhdHVzSGFuZGxlciAgICBzdGF0dXNIYW5kbGVyICkKLSAKLSAgIHRocm93cyBDb3JlRXhjZXB0aW9uCi0gewotIAlyZXR1cm4gbWFrZUZvbGRlclBhdGhBdExvY2F0aW9uKHJlc291cmNlQ29udGV4dCwKLSAJCWdldFdvcmtzcGFjZVJvb3QoKS5nZXRDb250YWluZXJGb3JMb2NhdGlvbihhYnNvbHV0ZVBhdGgpLAotIAkJcHJvZ3Jlc3NNb25pdG9yLCBzdGF0dXNIYW5kbGVyKTsKLSB9Ci0gCi0gCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29tbW9uL1N0cmluZ1V0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbW1vbi9TdHJpbmdVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzRlYTk1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29tbW9uL1N0cmluZ1V0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tb247Ci0KLWltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi0vKioKLSAgKiBUaGlzIGNsYXNzIGNvbnRhaW5zIHNvbWUgdXNlZnVsIHN0cmluZyB1dGlsaXRpZXMgdGhhdCBhcmUgbm90IHByb3ZpZGVkIGJ5Ci0gICogZWl0aGVyIFN0cmluZyBvciBTdHJpbmdCdWZmZXIuCi0gICoKLSAgKiBAYXV0aG9yIFBldGVyIE1vb2drCi0gICogQGRhdGUgICBKdWx5IDEzLCAyMDAwCi0qKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBTdHJpbmdVdGlscwotewotICAvKioKLSAgKiBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgbGluZSBzZXBhcmF0b3IuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5FV0xJTkUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImxpbmUuc2VwYXJhdG9yIik7Ci0KLSAgcHJpdmF0ZSBTdHJpbmdVdGlscygpe307Ci0KLSAgLyoqCi0gICAgKiBUaGlzIG1ldGhvZCBzcGxpdHMgYSBzaW5nbGUgbGluZSBvZiB0ZXh0IGludG8gbXVsdGlwbGUgbGluZXMKLSAgICAqIGJhc2VkIG9uIGEgbWF4aW11bSBsaW5lIGxlbmd0aC4gIFRoZSBtZXRob2Qgd2lsbCB0cnkgdG8gZml0IGFzCi0gICAgKiBtYW55IHdvcmRzIGFzIHBvc3NpYmxlIG9udG8gYSBsaW5lIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBtYXhpbXVtCi0gICAgKiBsaW5lIGxlbmd0aC4gIE5vdGU6IHRoZSBvbmx5IGNhc2Ugd2hlcmUgYSBsaW5lIG1pZ2h0IGV4Y2VlZCB0aGUKLSAgICAqIG1heGltdW0gaXMgaWYgYSBzaW5nbGUgd29yZCBpcyBsb25nZXIgdGhhbiB0aGUgbWF4aW11bS4KLSAgICAqIEBwYXJhbSB0ZXh0IGEgc2luZ2xlIGxpbmUgYSB0ZXh0IHRoYXQgaXMgdG8gYmUgc3BsaXQuCi0gICAgKiBAcGFyYW0gbWF4X2xlbmd0aCB0aGUgbWF4aW11bSBsZW5ndGggb2YgZWFjaCBzcGxpdCBsaW5lLgotICAgICogQHJldHVybiBhIHN0cmluZyBhcnJheSBvZiB0aGUgc3BsaXQgbGluZXMuCi0gICoqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIHNwbGl0dGVyKCBTdHJpbmcgdGV4dCwgaW50IG1heF9sZW5ndGggKQotICB7Ci0gICAgVmVjdG9yICAgICAgICAgIHJldHVybl90ZXh0ID0gbmV3IFZlY3RvcigyMCk7Ci0gICAgU3RyaW5nW10gICAgICAgIHJldHVybl9zdHI7Ci0gICAgaW50ICAgICAgICAgICAgIGluZGV4ID0gMDsKLQotICAgIHdoaWxlKCBpbmRleCA8IHRleHQubGVuZ3RoKCkgKQotICAgIHsKLSAgICAgIFN0cmluZyBzdHIgPSB0ZXh0LnN1YnN0cmluZyggaW5kZXgsIE1hdGgubWluKCBtYXhfbGVuZ3RoICsgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5sZW5ndGgoKSApICk7Ci0gICAgICBpbnQgc3BhY2VfaW5kZXggPSBzdHIubGFzdEluZGV4T2YoICIgIiApOwotCi0gICAgICBpZiggaW5kZXggKyBzdHIubGVuZ3RoKCkgPCB0ZXh0Lmxlbmd0aCgpICYmCi0gICAgICAgICAgdGV4dC5jaGFyQXQoIGluZGV4ICsgc3RyLmxlbmd0aCgpIC0gMSApICE9ICcgJyAmJgotICAgICAgICAgIHRleHQuY2hhckF0KCBpbmRleCArIHN0ci5sZW5ndGgoKSApICE9ICcgJyAmJgotICAgICAgICAgIHNwYWNlX2luZGV4ICE9IC0xICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuX3RleHQuYWRkRWxlbWVudCggc3RyLnN1YnN0cmluZyggMCwgc3BhY2VfaW5kZXggKSApOwotICAgICAgICBpbmRleCArPSBzcGFjZV9pbmRleCArIDE7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJldHVybl90ZXh0LmFkZEVsZW1lbnQoIHN0ci50cmltKCkgKTsKLSAgICAgICAgaW5kZXggKz0gc3RyLmxlbmd0aCgpOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybl9zdHIgPSBuZXcgU3RyaW5nW3JldHVybl90ZXh0LnNpemUoKV07Ci0KLSAgICBmb3IoIGluZGV4ID0gMDsgaW5kZXggPCByZXR1cm5fdGV4dC5zaXplKCk7IGluZGV4KysgKQotICAgIHsKLSAgICAgIHJldHVybl9zdHJbaW5kZXhdID0gKFN0cmluZykocmV0dXJuX3RleHQuZWxlbWVudEF0KGluZGV4KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJldHVybl9zdHI7Ci0gIH0KLQotICAvKioKLSAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgd2l0aCBhIHJlcGVhdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzLgotICAgICogQHBhcmFtIHRoZV9jaGFyIHRoZSBjaGFyYWN0ZXIgdG8gYmUgcmVwZWF0ZWQuCi0gICAgKiBAcGFyYW0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lIHRoaXMgY2hhcmFjdGVyIHNob3VsZCBiZSByZXBlYXRlZC4KLSAgICAqIEByZXR1cm4gdGhlIHJlc3VsdGluZyBzdHJpbmcgb2YgcmVwZWF0ZWQgY2hhcmFjdGVycy4KLSAgKiovCi0gIHN0YXRpYyBwdWJsaWMgU3RyaW5nIHJlcGVhdCggY2hhciB0aGVfY2hhciwgaW50IGNvdW50ICkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCBjb3VudCApOwotCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBidWYuYXBwZW5kKCB0aGVfY2hhciApOwotICAgIH0KLQotICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qKgotICAgICogVGhpcyBtZXRob2QgZmxhdHRlbnMgYW4gYXJyYXkgb2YgYXJndW1lbnRzIHRvIGEgc3RyaW5nLgotICAgICogVGhlIG1ldGhvZCByZXNwZWN0cyBlbWJlZGRlZCB3aGl0ZXNwYWNlIGFuZCBxdW90ZXMuCi0gICAgKiA8dWw+Ci0gICAgKiA8bGk+QW55IGFyZ3VtZW50IHdpdGggZW1iZWRkZWQgd2hpdGVzcGFjZSB3aWxsIGJlIGZsYXR0ZW5lZCBvdXQKLSAgICAqIHdpdGggZW5jbG9zaW5nIHF1b3Rlcy4gRm9yIGV4YW1wbGUsIHRoZSBzaW5nbGUgYXJndW1lbnQKLSAgICAqIDx1PkhlbGxvIFdvcmxkPC91PgotICAgICogd2lsbCBiZSByZXR1cm5lZCBhcwotICAgICogPHU+IkhlbGxvIFdvcmxkIjwvdT4uCi0gICAgKiA8bGk+QW55IGFyZ3VtZW50IHdpdGggcXVvdGVzIHdpbGwgYmUgZmxhdHRlbmVkIG91dCB3aXRoIHRoZQotICAgICogcXVvdGVzIGVzY2FwZWQuIEZvciBleGFtcGxlLCB0aGUgc2luZ2xlIGFyZ3VtZW50Ci0gICAgKiA8dT4iSGFwcHkgZGF5cyI8L3U+Ci0gICAgKiB3aWxsIGJlIHJldHVybmVkIGFzCi0gICAgKiA8dT5cIkhhcHB5IGRheXNcIjwvdT4uCi0gICAgKiA8L3VsPgotICAgICogQHBhcmFtIGFyZ3VtZW50cyBUaGUgYXJyYXkgb2Ygc3RyaW5ncyB0byBmbGF0dGVuLgotICAgICogQHJldHVybiB0aGUgZmxhdHRlbmVkIHN0cmluZy4KLSAgKi8KLSAgc3RhdGljIHB1YmxpYyBTdHJpbmcgZmxhdHRlbkFyZ3VtZW50cyAoIFN0cmluZ1tdIGFyZ3VtZW50cyApCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCi0gICAgZm9yIChpbnQgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICAvLwotICAgICAgLy8gQXBwZW5kIGEgc2VwYXJhdG9yIChleGNlcHQgdGhlIGZpcnN0IHRpbWUpLgotICAgICAgLy8KLSAgICAgIGlmIChpID4gMCkgYnVmLmFwcGVuZCgnICcpOwotCi0gICAgICAvLwotICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZS4KLSAgICAgIC8vCi0gICAgICBib29sZWFuIHdoaXRlc3BhY2UgPSBmYWxzZTsKLSAgICAgIGNoYXJbXSBjaGFycyA9IGFyZ3VtZW50c1tpXS50b0NoYXJBcnJheSgpOwotICAgICAgZm9yIChpbnQgaj0wOyAhd2hpdGVzcGFjZSAmJiBqPGNoYXJzLmxlbmd0aDsgaisrKQotICAgICAgewotICAgICAgICBpZiAoQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShjaGFyc1tqXSkpCi0gICAgICAgIHsKLSAgICAgICAgICB3aGl0ZXNwYWNlID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLwotICAgICAgLy8gQXBwZW5kIHRoZSBhcmd1bWVudCwgcXVvdGVkIGFzIG5lY2Vzc2FyeS4KLSAgICAgIC8vCi0gICAgICBpZiAod2hpdGVzcGFjZSkgYnVmLmFwcGVuZCgnIicpOwotICAgICAgZm9yIChpbnQgaj0wOyBqPGNoYXJzLmxlbmd0aDsgaisrKQotICAgICAgewotICAgICAgICBpZiAoY2hhcnNbal0gPT0gJyInKSBidWYuYXBwZW5kKCdcXCcpOwotICAgICAgICBidWYuYXBwZW5kKGNoYXJzW2pdKTsKLSAgICAgIH0KLSAgICAgIGlmICh3aGl0ZXNwYWNlKSBidWYuYXBwZW5kKCciJyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAgKiBUaGlzIG1ldGhvZCBwYXJzZXMgd2hpdGVzcGFjZS1kZWxpbWl0dGVkIGZpbGVuYW1lcyBmcm9tCi0gICAgKiB0aGUgZ2l2ZW4gPGNvZGU+aW5wdXQ8L2NvZGU+IHN0cmVhbS4gPGI+TGltaXRhdGlvbjo8L2I+Ci0gICAgKiBRdW90ZWQgZmlsZW5hbWVzIG9yIGZpbGVuYW1lcyB3aXRoIGVtYmVkZGVkIHdoaXRlc3BhY2UKLSAgICAqIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KLSAgICAqIEBwYXJhbSBpbnB1dCBUaGUgaW5wdXQgc3RyZWFtLgotICAgICogQHJldHVybiBBbiBlbnVtZXJhdGlvbiBvZiBmaWxlbmFtZXMgZnJvbSB0aGUgc3RyZWFtLgotICAqLwotICBzdGF0aWMgcHVibGljIEVudW1lcmF0aW9uIHBhcnNlRmlsZW5hbWVzRnJvbVN0cmVhbSAoIElucHV0U3RyZWFtIGlucHV0ICkKLSAgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBWZWN0b3IgZmlsZW5hbWVzID0gbmV3IFZlY3Rvcig2NCw2NCk7Ci0gICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG51bGw7Ci0gICAgYnl0ZSBzdGF0ZSA9IFNUQVRFX1dTOwotICAgIGludCBpYyA9IGlucHV0LnJlYWQoKTsKLSAgICB3aGlsZSAoaWMgPj0gMCkKLSAgICB7Ci0gICAgICBjaGFyIGMgPSAoY2hhcilpYzsKLSAgICAgIHN3aXRjaCAoc3RhdGUpCi0gICAgICB7Ci0gICAgICAgIGNhc2UgU1RBVEVfV1M6Ci0gICAgICAgICAgaWYgKCFDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGMpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoYyk7Ci0gICAgICAgICAgICBzdGF0ZSA9IFNUQVRFX05XUzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1RBVEVfTldTOgotICAgICAgICAgIGlmICghQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShjKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKGMpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gYnVmZmVyLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICBmaWxlbmFtZXMuYWRkKGZpbGVuYW1lKTsKLSAgICAgICAgICAgIGJ1ZmZlciA9IG51bGw7Ci0gICAgICAgICAgICBzdGF0ZSA9IFNUQVRFX1dTOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGljID0gaW5wdXQucmVhZCgpOwotICAgIH0KLSAgICByZXR1cm4gZmlsZW5hbWVzLmVsZW1lbnRzKCk7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFNUQVRFX1dTID0gMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBTVEFURV9OV1MgPSAxOwotCi0KLSAgLyoqCi0gICogUmV0dXJucyB0cnVlIGlzIHRoZSB0eXBlIHBhc3NlZCBpbiBpcyBhIHByaW10aXZlIGphdmEgdHlwZQotICAqIEBwYXJhbSBjbGFzcyBuYW1lIFN0cmluZwotICAqIEByZXR1cm4gdHJ1ZSBpcyBwcmltaXRpdmUgdHlwZQotICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNQcmltaXRpdmVUeXBlKFN0cmluZyB0eXBlTmFtZSkgCi0gIHsKLQotICAgIGlmICh0eXBlTmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJib29sZWFuIikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImJ5dGUiKSB8fAotICAgICAgdHlwZU5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiZG91YmxlIikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImZsb2F0IikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImludCIpIHx8Ci0gICAgICB0eXBlTmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJsb25nIikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoInNob3J0IikgfHwKLSAgICAgIHR5cGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoImNoYXIiKSkKLSAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLQotICB9Ci0KLSAgLyoqCi0gICogVGhlIG1ldGhvZCByZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsbG93ZWQgaW4gVVJJcwotICAqIGFuZCBub3QgYWxsb3dlZCBpbiBKYXZhIGNsYXNzIG5hbWVzIHRvIGFuIHVuZGVyc2NvcmUgKCdfJykKLSAgKiBAcGFyYW0gVVJJIFN0cmluZwotICAqIEByZXR1cm4gdmFsaWQgSmF2YSBjbGFzcyBuYW1lIFN0cmluZwotICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBVUkkyQ2xhc3NOYW1lKCBTdHJpbmcgdXJpICkgewotICAgIFN0cmluZyBjbGFzc05hbWUgPSB1cmk7Ci0gICAgZm9yICggaW50IGkgPSAwOyBpIDwgVVJJX1NZTUJPTFMubGVuZ3RoOyBpKysgKSB7Ci0gICAgCWNsYXNzTmFtZSA9IGNsYXNzTmFtZS5yZXBsYWNlICggVVJJX1NZTUJPTFNbaV0sIFVOREVSU0NPUkUgKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNsYXNzTmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGFuZCBhcnJheSBvZiBzdHJpbmdzIGNvbnRhaW5pbmcgdGhlIGV4Y2VwdGlvbiB0cmFjZWJhY2sgaW5mb3JtYXRpb24gb2YKLSAgICogYSBUaHJvd2FibGUuICBUaGlzIGlzIHRoZSBzYW1lIHRyYWNlYmFjayBkYXRhIHRoYXQgaXMgZGlzcGxheWVkIGJ5IGV4Yy5wcmludFN0YWNrVHJhY2UoKS4KLSAgICogQHBhcmFtIGV4YyB0aGUgZXhjZXB0aW9uCi0gICAqIEByZXR1cm4gYSBzdHJpbmcgYXJyYXkgb2YgdGhlIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0U3RhY2tUcmFjZSggVGhyb3dhYmxlIGV4YyApCi0gIHsKLSAgICBWZWN0b3IgICAgICAgbGluZXMgICAgICAgID0gbmV3IFZlY3RvcigpOwotICAgIFN0cmluZ1dyaXRlciBzdHJpbmdXcml0ZXIgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgIHByaW50V3JpdGVyICA9IG5ldyBQcmludFdyaXRlciggc3RyaW5nV3JpdGVyICk7Ci0gICAgCi0gICAgZXhjLnByaW50U3RhY2tUcmFjZSggcHJpbnRXcml0ZXIgKTsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICBwcmludFdyaXRlci5jbG9zZSgpOwotICAgICAgc3RyaW5nV3JpdGVyLmNsb3NlKCk7Ci0gICAgfQotICAgIGNhdGNoKCBFeGNlcHRpb24gbmVzdGVkRXhjICkKLSAgICB7Ci0gICAgICByZXR1cm4gbmV3IFN0cmluZ1swXTsKLSAgICB9Ci0gICAgCi0gICAgU3RyaW5nUmVhZGVyIHN0cmluZ1JlYWRlciA9IG5ldyBTdHJpbmdSZWFkZXIoIHN0cmluZ1dyaXRlci50b1N0cmluZygpICk7Ci0gICAgQnVmZmVyZWRSZWFkZXIgcmVhZGVyICAgICA9IG5ldyBCdWZmZXJlZFJlYWRlciggc3RyaW5nUmVhZGVyICk7Ci0gICAgU3RyaW5nICAgICAgICAgbGluZSAgICAgICA9IG51bGw7Ci0gICAgCi0gICAgdHJ5Ci0gICAgewotICAgICAgbGluZSA9IHJlYWRlci5yZWFkTGluZSgpOwotICAgIAotICAgICAgd2hpbGUoIGxpbmUgIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIGxpbmVzLmFkZCggbGluZS50cmltKCkgKTsKLSAgICAgICAgbGluZSA9IHJlYWRlci5yZWFkTGluZSgpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCggRXhjZXB0aW9uIG5lc3RlZEV4YyApCi0gICAgewotICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbMF07Ci0gICAgfQotICAgIAotICAgIHJldHVybiAoU3RyaW5nW10pbGluZXMudG9BcnJheSggbmV3IFN0cmluZ1swXSApOwotICB9Ci0gIAotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyW10gVVJJX1NZTUJPTFMgPSB7Jy0nLCAnficsICcjJywgJy8nLCAnLid9OwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFVOREVSU0NPUkUgPSAnXyc7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbW1vbi9XYWl0Rm9yQXV0b0J1aWxkQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb21tb24vV2FpdEZvckF1dG9CdWlsZENvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVkNWU1Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbW1vbi9XYWl0Rm9yQXV0b0J1aWxkQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLQotLyoqCi0gKiBAZGVwcmVjYXRlZCBXZSBzaG91bGQgbm90IGRlcGVuZCBvbiB0aGUgYXV0byBidWlsZCB0byBidWlsZCBwcm9qZWN0cywgc2luY2UgYXV0byBidWlsZCBtaWdodCBiZSBvZmYuCi0gKiBUcnkgdXNpbmcgQnVpbGRCZWFuQ29tbWFuZCBvciBCdWlsZFByb2plY3RDb21tYW5kIHRvIGJ1aWxkIHRoZSBwcm9qZWN0IGluc3RlYWQuIEFsc28sIHRoZSBqb2luKCkgY2FsbCAKLSAqIGNhbiBsZWFkIHRvIGRlYWRsb2NrIGluIHNvbWUgc2l0dWF0aW9ucy4KLSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkJ1aWxkQmVhbkNvbW1hbmQKLSAqIEBzZWUgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkJ1aWxkUHJvamVjdENvbW1hbmQKLSovIAotcHVibGljIGNsYXNzIFdhaXRGb3JBdXRvQnVpbGRDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb250aXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUgKSAKLSAgewotICAJSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAJCi0JdHJ5IAotCXsKLQkgIFBsYXRmb3JtLmdldEpvYk1hbmFnZXIoKS5qb2luKFJlc291cmNlc1BsdWdpbi5GQU1JTFlfQVVUT19CVUlMRCwgbnVsbCk7Ci0JfSAKLQljYXRjaCggSW50ZXJydXB0ZWRFeGNlcHRpb24gZXhjICkgCi0JewotCSAgLy8gVUlTeW5jaHJvbml6ZXIuc3luY0V4ZWMgc2VlbXMgdG8gaW50ZXJydXB0IHRoZSBVSSB0cmVhZCB3aGVuIHRoZSBhdXRvYnVpbGRlciBpcyBkb25lLiAgTm90IHN1cmUsIHdoeS4KLQkgIC8vIEknbSBhc3N1bWluZyBoZXJlIHRoYXQgdGhlIGF1dG9idWlsZGVyIGhhcyBhY3R1YWxseSBjb21wbGV0ZWQgaXRzIHN0dWZmLgkKLQl9Ci0JCQotCXJldHVybiBzdGF0dXM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29udGV4dC9BY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZVJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbnRleHQvQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGVSZWdpc3RyeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWRhOWRjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29udGV4dC9BY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZVJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNTIyICAgMTg0MDA2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0OwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5wcmVmZXJlbmNlcy5BY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZTsKLQotCi1wdWJsaWMgY2xhc3MgQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGVSZWdpc3RyeQotewotICBwcml2YXRlIFZlY3RvciBwcmVmZXJlbmNlc187Ci0gIAotICBwcml2YXRlIHN0YXRpYyBBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZVJlZ2lzdHJ5IHJlZ2lzdHJ5XzsKLQotICBwcml2YXRlIEFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlUmVnaXN0cnkoKQotICB7Ci0gICAgcHJlZmVyZW5jZXNfID0gbmV3IFZlY3RvcigpOwotICAgIAotICAgIGxvYWREaWFsb2dzUHJlZmVyZW5jZXMoKTsgIAotICB9Ci0gIAotICBzdGF0aWMgcHVibGljIEFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlUmVnaXN0cnkgZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgaWYoIHJlZ2lzdHJ5XyA9PSBudWxsICkKLSAgICB7Ci0gICAgICByZWdpc3RyeV8gPSBuZXcgQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGVSZWdpc3RyeSgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVnaXN0cnlfOwotICB9Ci0gIAotICAvLwotICBwcml2YXRlIHZvaWQgbG9hZERpYWxvZ3NQcmVmZXJlbmNlcyAoKQotICB7Ci0gIAlJRXh0ZW5zaW9uUmVnaXN0cnkgcmVnID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBjb25maWcgPSByZWcuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzRm9yKCAib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUiKTsKLSAgICAKLSAgICBmb3IoaW50IGlkeD0wOyBpZHg8Y29uZmlnLmxlbmd0aDsgaWR4KyspIAotICAgIHsKLSAgICAgIElDb25maWd1cmF0aW9uRWxlbWVudCAgICAgIGVsZW0gICA9IGNvbmZpZ1tpZHhdOyAgICAgCi0gICAgICBBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZSBkaWFsb2cgPSBuZXcgQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUoKTsKLSAgICAgIAotICAgICAgZGlhbG9nLnNldElkKCBlbGVtLmdldEF0dHJpYnV0ZSgiaWQiKSApOwotICAgICAgZGlhbG9nLnNldE5hbWUoIGVsZW0uZ2V0QXR0cmlidXRlKCJuYW1lIikgKTsKLSAgICAgIGRpYWxvZy5zZXRJbmZvcG9wKCBlbGVtLmdldEF0dHJpYnV0ZSgiaW5mb3BvcCIpICk7Ci0gICAgICBkaWFsb2cuc2V0VG9vbHRpcCggZWxlbS5nZXRBdHRyaWJ1dGUoInRvb2x0aXAiKSApOwotICAgICAgZGlhbG9nLnNldENhdGVnb3J5KCBlbGVtLmdldEF0dHJpYnV0ZSgiY2F0ZWdvcnkiKSApOwotICAgICAgCi0gICAgICBTdHJpbmcgc2hvd0NoZWNrYm94ID0gZWxlbS5nZXRBdHRyaWJ1dGUoICJzaG93Y2hlY2tib3giICk7Ci0gICAgICBTdHJpbmcgYWx3YXlzSGlkZSAgID0gZWxlbS5nZXRBdHRyaWJ1dGUoICJhbHdheXNoaWRlIiApOwotICAgICAgCi0gICAgICBkaWFsb2cuc2V0U2hvd0NoZWNrYm94KCBzaG93Q2hlY2tib3ggPT0gbnVsbCA/IHRydWUgOiBzaG93Q2hlY2tib3guZXF1YWxzKCAidHJ1ZSIgKSApOwotICAgICAgZGlhbG9nLnNldEFsd2F5c0hpZGUoIGFsd2F5c0hpZGUgPT0gbnVsbCA/IGZhbHNlIDogYWx3YXlzSGlkZS5lcXVhbHMoICJ0cnVlIiApICk7Ci0gICAgICAKLSAgICAgIHNldE9iamVjdElkcyggZWxlbS5nZXRBdHRyaWJ1dGUoICJvYmplY3RpZHMiICksIGRpYWxvZyApOwotICAgICAgCi0gICAgICBwcmVmZXJlbmNlc18uYWRkKGRpYWxvZyk7ICAgICAgICAKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgc2V0T2JqZWN0SWRzKCBTdHJpbmcgaWRMaXN0LCBBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZSBkaWFsb2cgKQotICB7Ci0gICAgaWYoIGlkTGlzdCAhPSBudWxsICkKLSAgICB7Ci0gICAgICBTdHJpbmdbXSBpZHMgPSBpZExpc3Quc3BsaXQoICIgIiApOwotICAgICAgCi0gICAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgaWRzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgICB7Ci0gICAgICAgIGRpYWxvZy5hZGRPYmplY3RJZCggaWRzW2luZGV4XSApOyAgIAotICAgICAgfQotICAgIH0KLSAgfQotICAKLSAgLyoqCi0gICogUmV0dXJucyBhbGwgcmVnaXN0ZXJlZCA8Y29kZT5XZWJTZXJ2aWNlVHlwZTwvY29kZT4gb2JqZWN0cy4KLSAgKiBAcmV0dXJuIEFsbCByZWdpc3RlcmVkIDxjb2RlPldlYlNlcnZpY2VUeXBlPC9jb2RlPiBvYmplY3RzLgotICAqLwotICBwdWJsaWMgQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGVbXSBnZXRBY3Rpb25EaWFsb2dzUHJlZnJlbmNlcyAoKQotICB7Ci0gICAgcmV0dXJuIChBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZVtdKXByZWZlcmVuY2VzXy50b0FycmF5KCBuZXcgQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGVbMF0pOwotICB9Ci0gIAotICBwdWJsaWMgQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUgZ2V0QWN0aW9uRGlhbG9nc1ByZWZyZW5jZSggU3RyaW5nIGlkICkKLSAgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IHByZWZlcmVuY2VzXy5zaXplKCk7Ci0gICAgQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUgcmVzdWx0ID0gbnVsbDsKLSAgICAKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZSBwcmVmZXJlbmNlID0gKEFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlKXByZWZlcmVuY2VzXy5lbGVtZW50QXQoIGluZGV4ICk7Ci0gICAgICAKLSAgICAgIGlmKCBwcmVmZXJlbmNlLmdldE9iamVjdElkcygpLmNvbnRhaW5zKCBpZCApICkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gcHJlZmVyZW5jZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29udGV4dC9QZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29udGV4dC9QZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QyYTYxYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbnRleHQvUGVyc2lzdGVudEFjdGlvbkRpYWxvZ3NDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNTIyICAgMTg0MDA2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5wbHVnaW4uRW52UGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5wcmVmZXJlbmNlcy5BY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZTsKLQotCi1wdWJsaWMgY2xhc3MgUGVyc2lzdGVudEFjdGlvbkRpYWxvZ3NDb250ZXh0IGV4dGVuZHMgUGVyc2lzdGVudENvbnRleHQKLXsKLSAgcHJpdmF0ZSBBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZVJlZ2lzdHJ5IHJlZ2lzdHJ5OwotICAKLSAgcHJpdmF0ZSBzdGF0aWMgUGVyc2lzdGVudEFjdGlvbkRpYWxvZ3NDb250ZXh0IGluc3RhbmNlXyA9IG51bGw7Ci0KLSAgcHJpdmF0ZSBQZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQoKQotICB7Ci0gICAgc3VwZXIoRW52UGx1Z2luLmdldEluc3RhbmNlKCkpOwotICB9Ci0gIAotICBzdGF0aWMgcHVibGljIFBlcnNpc3RlbnRBY3Rpb25EaWFsb2dzQ29udGV4dCBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICBpZiggaW5zdGFuY2VfID09IG51bGwgKQotICAgIHsKLSAgICAgIGluc3RhbmNlXyA9IG5ldyBQZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQoKTsKLSAgICAgIGluc3RhbmNlXy5sb2FkKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBpbnN0YW5jZV87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBsb2FkKCkKLSAgewotICAgIHJlZ2lzdHJ5ID0gQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpOwotICAgIEFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlW10gZGlhbG9ncyA9IHJlZ2lzdHJ5LmdldEFjdGlvbkRpYWxvZ3NQcmVmcmVuY2VzKCk7Ci0gIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGlhbG9ncy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBzZXREZWZhdWx0KGRpYWxvZ3NbaV0uZ2V0SWQoKSwgZmFsc2UpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZVtdIGdldERpYWxvZ3MoKQotICB7Ci0gICAgcmV0dXJuIHJlZ2lzdHJ5LmdldEFjdGlvbkRpYWxvZ3NQcmVmcmVuY2VzKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRBY3Rpb25EaWFsb2dFbmFibGVkKFN0cmluZyBpZCwgYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHNldFZhbHVlKGlkLCB2YWx1ZSk7Ci0gIH0KLQotICAvLyBUaGlzIG1ldGhvZCBpcyB1c3VhbGx5IGNhbGxlZCBmcm9tIHRoZSBwb3B1cCB3aXphcmQgd2l0aCB0aGUgSWQKLSAgLy8gb2YgdGhlIE9iamVjdENvbnRyaWJ1dGlvbiBkZWZpbmluZyB0aGUgcG9wdXAuCi0gIHB1YmxpYyB2b2lkIHNldE9iamVjdEFjdGlvbkRpYWxvZ0VuYWJsZWQoIFN0cmluZyBpZCwgYm9vbGVhbiB2YWx1ZSApCi0gIHsKLSAgICAvLyBOZWVkIHRvIGZpcnN0IGZpbmQgdGhlIGRpYWxvZyBvYmplY3QgdGhhdCByZWZlcmVuY2VzIHRoZSBwb3B1cC4KLSAgICBBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZSBkaWFsb2cgPSByZWdpc3RyeS5nZXRBY3Rpb25EaWFsb2dzUHJlZnJlbmNlKCBpZCApOwotICAgIAotICAgIGlmKCBkaWFsb2cgIT0gbnVsbCApCi0gICAgewotICAgICAgc2V0QWN0aW9uRGlhbG9nRW5hYmxlZCggZGlhbG9nLmdldElkKCksIHZhbHVlICk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBpc0FjdGlvbkRpYWxvZ0VuYWJsZWQoU3RyaW5nIGlkKQotICB7Ci0gICAgaWYgKGlkID09IG51bGwpIHJldHVybiB0cnVlOwotICAgIHJldHVybiBnZXRWYWx1ZUFzQm9vbGVhbihpZCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIHNob3dEaWFsb2coIFN0cmluZyBpZCApCi0gIHsKLSAgICBBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZSBkaWFsb2cgPSByZWdpc3RyeS5nZXRBY3Rpb25EaWFsb2dzUHJlZnJlbmNlKCBpZCApOyAgICAKLSAgIAotICAgIC8vIFdlIGFyZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBwb3B1cCB3aXphcmQgc2hvdWxkIGJlIGRpc3BsYXllZAotICAgIC8vIG9yIG5vdCB3aXRoIHRoaXMgbG9naWMuICBJZiB0aGUgZGlhbG9nIHZhcmlhYmxlIGlzIG51bGwgdGhlbgotICAgIC8vIHRoZXJlIHdhcyBubyBwb3B1cCBleHRlbnNpb24gcG9pbnQgcG9pbnQgZGVmaW5lZCBmb3IgdGhpcyB3aXphcmQuICBJbgotICAgIC8vIHRoaXMgY2FzZSB3ZSB3aWxsIGFzc3VtZSB0aGF0IHRoZSBwb3B1cCBzaG91bGQgYWx3YXlzIGJlIGRpc3BsYXllZC4KLSAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGUgZXh0ZW5zaW9uIHNheXMgdGhhdCB0aGUgc2hvdyBjaGVjayBib3ggY29udHJvbAotICAgIC8vIHNob3VsZCBiZSBkaXNwbGF5ZWQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3aXphcmQgc2hvdWxkIG5vdCBhbHdheXMKLSAgICAvLyBiZSBoaWRkZW4sIGFzIHdlbGwgd2UgbmVlZCB0byBjaGVjayB0aGUgY3VycmVudCBzZXR0aW5nIG9mIHRoZSBjaGVjawotICAgIC8vIGJveCB2aWEgdGhlIGlzQWN0aW9uRGlhbG9nRW5hYmxlZCBjYWxsLiAgSWYgdGhlIHNob3cgY2hlY2sgYm94IHN0YXRlCi0gICAgLy8gZGVmaW5lZCBpbiB0aGUgZXh0ZW5zaW9uIGlzIGZhbHNlLCBidXQgYWx3YXlzIGhpZGUgaXMgYWxzbyBmYWxzZSB0aGVuCi0gICAgLy8gd2Ugd2lsbCBkaXNwbGF5IHRoZSBwb3Agd2l6YXJkLgotICAgIHJldHVybiBkaWFsb2cgPT0gbnVsbCB8fAotICAgICAgICAgICAoICggZGlhbG9nLmdldFNob3dDaGVja2JveCgpICYmIAotICAgICAgICAgICAgICAgIWRpYWxvZy5nZXRBbHdheXNIaWRlKCkgJiYgCi0gICAgICAgICAgICAgICAhaXNBY3Rpb25EaWFsb2dFbmFibGVkKCBkaWFsb2cuZ2V0SWQoKSkgKSB8fAotICAgICAgICAgICAgICggIWRpYWxvZy5nZXRTaG93Q2hlY2tib3goKSAmJiAKLSAgICAgICAgICAgICAgICFkaWFsb2cuZ2V0QWx3YXlzSGlkZSgpICkgKTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gc2hvd0NoZWNrYm94KCBTdHJpbmcgaWQgKQotICB7Ci0gICAgQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUgZGlhbG9nID0gcmVnaXN0cnkuZ2V0QWN0aW9uRGlhbG9nc1ByZWZyZW5jZSggaWQgKTsgICAgCi0gICAgCi0gICAgcmV0dXJuIGRpYWxvZyA9PSBudWxsID8gZmFsc2UgOiBkaWFsb2cuZ2V0U2hvd0NoZWNrYm94KCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvY29udGV4dC9QZXJzaXN0ZW50Q29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb250ZXh0L1BlcnNpc3RlbnRDb250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYTViZDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb250ZXh0L1BlcnNpc3RlbnRDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUHJlZmVyZW5jZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5Db250ZXh0OwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgdXNlZCBhcyB0aGUgYmFzZSBjbGFzcyBmb3IgdHlwZXMgdGhhdCB3aGF0IHRvIHBlcnNpc3QgcHJlZmVyZW5jZQotICogZGF0YSBpbiB0aGUgcGx1Z2luIHByZWZlcmVuY2VzIGFyZWEuCi0gKgotICoKLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIFBlcnNpc3RlbnRDb250ZXh0IGltcGxlbWVudHMgQ29udGV4dAotewotIHByb3RlY3RlZCBQcmVmZXJlbmNlcyBwcmVmZXJlbmNlc187Ci0gcHJvdGVjdGVkIFBsdWdpbiBwbHVnaW5fOwotCi0gcHVibGljIFBlcnNpc3RlbnRDb250ZXh0ICggUGx1Z2luIHBsdWdpbikKLSAJewotIAkJcGx1Z2luXyA9IHBsdWdpbjsKLSAJICAJcHJlZmVyZW5jZXNfID0gcGx1Z2luLmdldFBsdWdpblByZWZlcmVuY2VzKCk7Ci0gCX0KLQotIC8qKgotICAqIFNldHMgdGhlIGRlZmF1bHQgZm9yIGEgYm9vbGVhbiBwcmVmZXJlbmNlLgotICAqIEBwYXJhbSBuYW1lIHRoZSBwcmVmZXJlbmNlIG5hbWUuCi0gICogQHBhcmFtIHZhbHVlIHRoZSBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyB2b2lkIHNldERlZmF1bHQgKFN0cmluZyBuYW1lLCBib29sZWFuIHZhbHVlKSB7Ci0gCXByZWZlcmVuY2VzXy5zZXREZWZhdWx0KG5hbWUsIHZhbHVlKTsKLSAJfQotIAotIC8qKgotICAqIFNldHMgdGhlIGRlZmF1bHQgZm9yIGEgc3RyaW5nIHByZWZlcmVuY2UuCi0gICogQHBhcmFtIG5hbWUgdGhlIHByZWZlcmVuY2UgbmFtZS4KLSAgKiBAcGFyYW0gdmFsdWUgdGhlIHByZWZlcmVuY2UgdmFsdWUuCi0gICovCi0gcHVibGljIHZvaWQgc2V0RGVmYXVsdCAoU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSkgewotIAlwcmVmZXJlbmNlc18uc2V0RGVmYXVsdChuYW1lLHZhbHVlKTsKLSAJfQotIAotIC8qKgotICAqIFNldHMgdGhlIGRlZmF1bHQgZm9yIGEgaW50IHByZWZlcmVuY2UuCi0gICogQHBhcmFtIG5hbWUgdGhlIHByZWZlcmVuY2UgbmFtZS4KLSAgKiBAcGFyYW0gdmFsdWUgdGhlIHByZWZlcmVuY2UgdmFsdWUuCi0gICovCi0gcHVibGljIHZvaWQgc2V0RGVmYXVsdCAoU3RyaW5nIG5hbWUsIGludCB2YWx1ZSkgewotIAlwcmVmZXJlbmNlc18uc2V0RGVmYXVsdChuYW1lLHZhbHVlKTsKLSAJfQotIAotIC8qKgotICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIHN0cmluZyBwcmVmZXJlbmNlLgotICAqIEBwYXJhbSBuYW1lIHRoZSBwcmVmZXJlbmNlIG5hbWUuCi0gICogQHBhcmFtIHZhbHVlIHRoZSBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyB2b2lkIHNldFZhbHVlIChTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKSB7Ci0gCXByZWZlcmVuY2VzXy5zZXRWYWx1ZShuYW1lLHZhbHVlKTsKLSAJcGx1Z2luXy5zYXZlUGx1Z2luUHJlZmVyZW5jZXMoKTsKLSAJfQotIAotIC8qKgotICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIGJvb2xlYW4gcHJlZmVyZW5jZS4KLSAgKiBAcGFyYW0gbmFtZSB0aGUgcHJlZmVyZW5jZSBuYW1lLgotICAqIEBwYXJhbSB2YWx1ZSB0aGUgcHJlZmVyZW5jZSB2YWx1ZS4KLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRWYWx1ZSAoU3RyaW5nIG5hbWUsIGJvb2xlYW4gdmFsdWUpIHsKLSAJcHJlZmVyZW5jZXNfLnNldFZhbHVlKG5hbWUsIHZhbHVlKTsKLSAJcGx1Z2luXy5zYXZlUGx1Z2luUHJlZmVyZW5jZXMoKTsKLSAJfQotIAotIC8qKgotICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIGludCBwcmVmZXJlbmNlLgotICAqIEBwYXJhbSBuYW1lIHRoZSBwcmVmZXJlbmNlIG5hbWUuCi0gICogQHBhcmFtIHZhbHVlIHRoZSBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyB2b2lkIHNldFZhbHVlIChTdHJpbmcgbmFtZSwgaW50IHZhbHVlKSB7Ci0gCXByZWZlcmVuY2VzXy5zZXRWYWx1ZShuYW1lLCB2YWx1ZSk7Ci0gCXBsdWdpbl8uc2F2ZVBsdWdpblByZWZlcmVuY2VzKCk7Ci0JfQotCi0gLyoqCi0gICogR2V0cyB0aGUgdmFsdWUgZm9yIGEgc3RyaW5nIHByZWZlcmVuY2UuCi0gICogQHBhcmFtIG5hbWUgdGhlIHByZWZlcmVuY2UgbmFtZS4KLSAgKiBAcmV0dXJuIHRoZSBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyBTdHJpbmcgZ2V0VmFsdWVBc1N0cmluZyAoIFN0cmluZyBuYW1lKSB7Ci0gCXJldHVybiBwcmVmZXJlbmNlc18uZ2V0U3RyaW5nKG5hbWUpOwotIAl9Ci0gCi0gLyoqCi0gICogR2V0cyB0aGUgdmFsdWUgZm9yIGEgYm9vbGVhbiBwcmVmZXJlbmNlLgotICAqIEBwYXJhbSBuYW1lIHRoZSBwcmVmZXJlbmNlIG5hbWUuCi0gICogQHJldHVybiB0aGUgcHJlZmVyZW5jZSB2YWx1ZS4KLSAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0VmFsdWVBc0Jvb2xlYW4gKCBTdHJpbmcgbmFtZSkgewotIAlyZXR1cm4gcHJlZmVyZW5jZXNfLmdldEJvb2xlYW4obmFtZSk7Ci0gCX0KLSAgCi0gIC8qKgotICAgKiBHZXRzIHRoZSB2YWx1ZSBmb3IgYSBpbnQgcHJlZmVyZW5jZS4KLSAgICogQHBhcmFtIG5hbWUgdGhlIHByZWZlcmVuY2UgbmFtZS4KLSAgICogQHJldHVybiB0aGUgcHJlZmVyZW5jZSB2YWx1ZS4KLSAgICovCi0gcHVibGljIGludCBnZXRWYWx1ZUFzSW50KCBTdHJpbmcgbmFtZSkgewotIAkJcmV0dXJuIHByZWZlcmVuY2VzXy5nZXRJbnQobmFtZSk7Ci0gCX0KLSAKLSAvKioKLSAgKiBHZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhIHN0cmluZyBwcmVmZXJlbmNlLgotICAqIEBwYXJhbSBuYW1lIHRoZSBwcmVmZXJlbmNlIG5hbWUuCi0gICogQHJldHVybiB0aGUgZGVmYXVsdCBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdFN0cmluZyhTdHJpbmcgbmFtZSkKLSB7Ci0gCXJldHVybiBwcmVmZXJlbmNlc18uZ2V0RGVmYXVsdFN0cmluZyhuYW1lKTsKLSB9Ci0gCi0gLyoqCi0gICogR2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgYSBib29sZWFuIHByZWZlcmVuY2UuCi0gICogQHBhcmFtIG5hbWUgdGhlIHByZWZlcmVuY2UgbmFtZS4KLSAgKiBAcmV0dXJuIHRoZSBkZWZhdWx0IHByZWZlcmVuY2UgdmFsdWUuCi0gICovCi0gcHVibGljIGJvb2xlYW4gZ2V0RGVmYXVsdEJvb2xlYW4oU3RyaW5nIG5hbWUpCi0gewotIAlyZXR1cm4gcHJlZmVyZW5jZXNfLmdldERlZmF1bHRCb29sZWFuKG5hbWUpOwotIH0KLSAKLSAvKioKLSAgKiBHZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhIGludCBwcmVmZXJlbmNlLgotICAqIEBwYXJhbSBuYW1lIHRoZSBwcmVmZXJlbmNlIG5hbWUuCi0gICogQHJldHVybiB0aGUgZGVmYXVsdCBwcmVmZXJlbmNlIHZhbHVlLgotICAqLwotIHB1YmxpYyBpbnQgZ2V0RGVmYXVsdEludChTdHJpbmcgbmFtZSkKLSB7Ci0gCXJldHVybiBwcmVmZXJlbmNlc18uZ2V0RGVmYXVsdEludChuYW1lKTsKLSB9Ci0gCi0gLyoqCi0gICogU2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgYSBzdHJpbmcgcHJlZmVyZW5jZSBpZiBhIGRlZmF1bHQgdmFsdWUgaGFzCi0gICogbm90IGFscmVhZHkgYmVlbiBzZXQuCi0gICogQHBhcmFtIG5hbWUgdGhlIHByZWZlcmVuY2UgbmFtZS4KLSAgKiBAcGFyYW0gdmFsdWUgdGhlIGRlZmF1bHQgcHJlZmVyZW5jZSB2YWx1ZQotICAqLwotIHB1YmxpYyB2b2lkIHNldERlZmF1bHRTdHJpbmdJZk5vRGVmYXVsdCggU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlICkKLSB7Ci0gICAvLyBJZiB0aGUga2V5IGFscmVhZHkgaGFzIGEgZGVmYXVsdCB2YWx1ZSB3ZSBkb24ndCB3YW50IHRvIG92ZXJyaWRlIGl0LgotICAgaWYoIHByZWZlcmVuY2VzXy5nZXREZWZhdWx0U3RyaW5nKCBrZXkgKS5lcXVhbHMoIiIpICkgCi0gICB7Ci0gICAgIHByZWZlcmVuY2VzXy5zZXREZWZhdWx0KCBrZXksIHZhbHVlICk7Ci0gICB9Ci0gfQotIAotIC8qKgotICAqIFNldHMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGEgYm9vbGVhbiBwcmVmZXJlbmNlIGlmIGEgZGVmYXVsdCB2YWx1ZSBoYXMKLSAgKiBub3QgYWxyZWFkeSBiZWVuIHNldC4KLSAgKiBAcGFyYW0gbmFtZSB0aGUgcHJlZmVyZW5jZSBuYW1lLgotICAqIEBwYXJhbSB2YWx1ZSB0aGUgZGVmYXVsdCBwcmVmZXJlbmNlIHZhbHVlCi0gICovCi0gcHVibGljIHZvaWQgc2V0RGVmYXVsdEJvb2xlYW5JZk5vRGVmYXVsdCggU3RyaW5nIGtleSwgYm9vbGVhbiB2YWx1ZSApCi0gewotICAgLy8gSWYgdGhlIGtleSBhbHJlYWR5IGhhcyBhIGRlZmF1bHQgdmFsdWUgd2UgZG9uJ3Qgd2FudCB0byBvdmVycmlkZSBpdC4KLSAgIGlmKCBwcmVmZXJlbmNlc18uZ2V0RGVmYXVsdFN0cmluZygga2V5ICkuZXF1YWxzKCIiKSApIAotICAgewotICAgICBwcmVmZXJlbmNlc18uc2V0RGVmYXVsdCgga2V5LCB2YWx1ZSApOwotICAgfQotIH0KLSAKLSAvKioKLSAgKiBTZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhIGludCBwcmVmZXJlbmNlIGlmIGEgZGVmYXVsdCB2YWx1ZSBoYXMKLSAgKiBub3QgYWxyZWFkeSBiZWVuIHNldC4KLSAgKiBAcGFyYW0gbmFtZSB0aGUgcHJlZmVyZW5jZSBuYW1lLgotICAqIEBwYXJhbSB2YWx1ZSB0aGUgZGVmYXVsdCBwcmVmZXJlbmNlIHZhbHVlCi0gICovCi0gcHVibGljIHZvaWQgc2V0RGVmYXVsdEludElmTm9EZWZhdWx0KCBTdHJpbmcga2V5LCBpbnQgdmFsdWUgKQotIHsKLSAgIC8vIElmIHRoZSBrZXkgYWxyZWFkeSBoYXMgYSBkZWZhdWx0IHZhbHVlIHdlIGRvbid0IHdhbnQgdG8gb3ZlcnJpZGUgaXQuCi0gICBpZiggcHJlZmVyZW5jZXNfLmdldERlZmF1bHRTdHJpbmcoIGtleSApLmVxdWFscygiIikgKSAKLSAgIHsKLSAgICAgcHJlZmVyZW5jZXNfLnNldERlZmF1bHQoIGtleSwgdmFsdWUgKTsKLSAgIH0KLSB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbnRleHQvUGVyc2lzdGVudFJlc291cmNlQ29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9jb250ZXh0L1BlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJmYjRiYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2NvbnRleHQvUGVyc2lzdGVudFJlc291cmNlQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZURlZmF1bHRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQuVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5wbHVnaW4uRW52UGx1Z2luOwotCi0KLXB1YmxpYyBjbGFzcyBQZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0IGV4dGVuZHMgUGVyc2lzdGVudENvbnRleHQgaW1wbGVtZW50cyBSZXNvdXJjZUNvbnRleHQKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgUGVyc2lzdGVudFJlc291cmNlQ29udGV4dCBjb250ZXh0XyA9IG51bGw7Ci0gIAotICBwdWJsaWMgc3RhdGljIFBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQgZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgaWYoIGNvbnRleHRfID09IG51bGwgKQotICAgIHsKLSAgICAgIGNvbnRleHRfID0gbmV3IFBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQoKTsKLSAgICAgIGNvbnRleHRfLmxvYWQoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGNvbnRleHRfOwotICB9Ci0gIAotICBwcml2YXRlIFBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQoKQotICB7Ci0gICAgc3VwZXIoRW52UGx1Z2luLmdldEluc3RhbmNlKCkpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgbG9hZCgpCi0gIHsKLSAgICBzZXREZWZhdWx0KFBSRUZFUkVOQ0VfT1ZFUldSSVRFLCBSZXNvdXJjZURlZmF1bHRzCi0gICAgICAgIC5nZXRPdmVyd3JpdGVGaWxlc0RlZmF1bHQoKSk7Ci0gICAgc2V0RGVmYXVsdChQUkVGRVJFTkNFX0NSRUFURV9GT0xERVJTLCBSZXNvdXJjZURlZmF1bHRzCi0gICAgICAgIC5nZXRDcmVhdGVGb2xkZXJzRGVmYXVsdCgpKTsKLSAgICBzZXREZWZhdWx0KFBSRUZFUkVOQ0VfQ0hFQ0tPVVQsIFJlc291cmNlRGVmYXVsdHMuZ2V0Q2hlY2tvdXRGaWxlc0RlZmF1bHQoKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRPdmVyd3JpdGVGaWxlc0VuYWJsZWQoYm9vbGVhbiBlbmFibGUpCi0gIHsKLSAgICBzZXRWYWx1ZShQUkVGRVJFTkNFX09WRVJXUklURSwgZW5hYmxlKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCkKLSAgewotICAgIHJldHVybiBnZXRWYWx1ZUFzQm9vbGVhbihQUkVGRVJFTkNFX09WRVJXUklURSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRDcmVhdGVGb2xkZXJzRW5hYmxlZChib29sZWFuIGVuYWJsZSkKLSAgewotICAgIHNldFZhbHVlKFBSRUZFUkVOQ0VfQ1JFQVRFX0ZPTERFUlMsIGVuYWJsZSk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBpc0NyZWF0ZUZvbGRlcnNFbmFibGVkKCkKLSAgewotICAgIHJldHVybiBnZXRWYWx1ZUFzQm9vbGVhbihQUkVGRVJFTkNFX0NSRUFURV9GT0xERVJTKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENoZWNrb3V0RmlsZXNFbmFibGVkKGJvb2xlYW4gZW5hYmxlKQotICB7Ci0gICAgc2V0VmFsdWUoUFJFRkVSRU5DRV9DSEVDS09VVCwgZW5hYmxlKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzQ2hlY2tvdXRGaWxlc0VuYWJsZWQoKQotICB7Ci0gICAgcmV0dXJuIGdldFZhbHVlQXNCb29sZWFuKFBSRUZFUkVOQ0VfQ0hFQ0tPVVQpOwotICB9Ci0KLSAgcHVibGljIFJlc291cmNlQ29udGV4dCBjb3B5KCkKLSAgewotICAgIFJlc291cmNlQ29udGV4dCBjYyA9IG5ldyBUcmFuc2llbnRSZXNvdXJjZUNvbnRleHQoKTsKLSAgICBjYy5zZXRPdmVyd3JpdGVGaWxlc0VuYWJsZWQoaXNPdmVyd3JpdGVGaWxlc0VuYWJsZWQoKSk7Ci0gICAgY2Muc2V0Q3JlYXRlRm9sZGVyc0VuYWJsZWQoaXNDcmVhdGVGb2xkZXJzRW5hYmxlZCgpKTsKLSAgICBjYy5zZXRDaGVja291dEZpbGVzRW5hYmxlZChpc0NoZWNrb3V0RmlsZXNFbmFibGVkKCkpOwotICAgIHJldHVybiBjYzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9lY2xpcHNlL0FjY3VtdWxhdGVTdGF0dXNIYW5kbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2VjbGlwc2UvQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMwMzBmNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2VjbGlwc2UvQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA1MTAgICAxODA1Njcgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2U7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkNob2ljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LlN0YXR1c0V4Y2VwdGlvbjsKLQotcHVibGljIGNsYXNzIEFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyIGV4dGVuZHMgQmFzZVN0YXR1c0hhbmRsZXJ7Ci0KLQlBcnJheUxpc3Qgc3RhdHVzTGlzdF8gPSBudWxsOwotCUFycmF5TGlzdCBlcnJvckxpc3RfID0gbnVsbDsKLQlBcnJheUxpc3Qgd2FybmluZ0xpc3RfID0gbnVsbDsKLQkKLQkvKioKLQkgKiBDb25zdHJ1Y3RvcgotCSAqLwotCXB1YmxpYyBBY2N1bXVsYXRlU3RhdHVzSGFuZGxlcigpewotCQlyZXNldFN0YXR1cygpOwotCX0KLQkKLQkvKioKLQkgKiBDb25zdHJ1Y3RvciBmb3IgcmVsb2FkaW5nIHN0YXR1cyB2YWx1ZXMgYW5kIHVzaW5nIHRoZSB1dGlsaXR5IG1ldGhvZHMKLQkgKi8KLQlwdWJsaWMgQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXIoSVN0YXR1c1tdIHN0YXR1cyl7Ci0JCXJlc2V0U3RhdHVzKCk7Ci0JCWZvciAoaW50IGk9MDtpPHN0YXR1cy5sZW5ndGg7aSsrKQotCQkJc3RhdHVzTGlzdF8uYWRkKHN0YXR1c1tpXSk7Ci0JfQotCQotCXB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpIHsKLQkgICAgSVN0YXR1cyB3b3JzdFN0YXR1cyA9IFN0YXR1cy5PS19TVEFUVVM7Ci0JICAgIAotCSAgICAvLyBGaW5kIHRoZSB3b3JzdCBlcnJvciBzdGF0dXMgY29kZQotCSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgc3RhdHVzTGlzdF8uc2l6ZSgpOyBpbmRleCsrICkKLQkgICAgewotCSAgICAgIElTdGF0dXMgc3RhdHVzID0gKElTdGF0dXMpc3RhdHVzTGlzdF8uZ2V0KCBpbmRleCApOwotCSAgICAgIAotCSAgICAgIGlmKCBzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA+IHdvcnN0U3RhdHVzLmdldFNldmVyaXR5KCkgKQotCSAgICAgIHsKLQkgICAgICAgIHdvcnN0U3RhdHVzID0gc3RhdHVzOwotCSAgICAgIH0KLQkgICAgfQotCSAgICAKLQkgICAgcmV0dXJuIHdvcnN0U3RhdHVzOwotCX0KLQotCXB1YmxpYyB2b2lkIHJlc2V0U3RhdHVzKCkgewotCSAgICBzdGF0dXNMaXN0XyA9IG5ldyBBcnJheUxpc3QoKTsKLQkgICAgZXJyb3JMaXN0XyA9IG51bGw7Ci0JICAgIHdhcm5pbmdMaXN0XyA9IG51bGw7Ci0JfQotCi0JcHVibGljIHZvaWQgcmVwb3J0KElTdGF0dXMgc3RhdHVzKSB0aHJvd3MgU3RhdHVzRXhjZXB0aW9uIHsKLQkJc3RhdHVzTGlzdF8uYWRkKHN0YXR1cyk7Ci0JfQotCi0JcHVibGljIENob2ljZSByZXBvcnQoSVN0YXR1cyBzdGF0dXMsIENob2ljZVtdIGNob2ljZXMpIHsKLQkgIAlDaG9pY2UgcmVzdWx0ID0gbnVsbDsKLQkgIAkKLQkgIAkvLyBBbHdheXMgdGFrZSB0aGUgZmlyc3QgY2hvaWNlIGlmIGF2YWlsYWJsZS4KLQkgICAgaWYoIGNob2ljZXMgIT0gbnVsbCAmJiBjaG9pY2VzLmxlbmd0aCA+IDAgKQotCSAgICB7Ci0JICAgIAlyZXN1bHQgPSBjaG9pY2VzWzBdOwotCSAgICB9Ci0JICAgIAotCSAgICBzdGF0dXNMaXN0Xy5hZGQoIHN0YXR1cyApOwotCSAgICAKLQkgICAgcmV0dXJuIHJlc3VsdDsKLQl9Ci0KLQlwdWJsaWMgdm9pZCByZXBvcnRFcnJvcihJU3RhdHVzIHN0YXR1cykgewotCQlzdGF0dXNMaXN0Xy5hZGQoc3RhdHVzKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCByZXBvcnRJbmZvKElTdGF0dXMgc3RhdHVzKSB7Ci0JCXN0YXR1c0xpc3RfLmFkZChzdGF0dXMpOwotCX0KLQkKLQkvKioKLQkgKiBGb3IgdXNlIGJ5IGFzc2VydGlvbiBtZXRob2RzCi0JICogQHJldHVybiBJU3RhdHVzW10KLQkgKi8KLQlwdWJsaWMgSVN0YXR1c1tdIGdldEFsbFJlcG9ydHMoKXsKLQkJaWYgKHN0YXR1c0xpc3RfPT1udWxsIHx8IHN0YXR1c0xpc3RfLmlzRW1wdHkoKSl7Ci0JCQlyZXR1cm4gbmV3IElTdGF0dXNbXXtTdGF0dXMuT0tfU1RBVFVTfTsKLQkJfQotCQlyZXR1cm4gKElTdGF0dXNbXSlzdGF0dXNMaXN0Xy50b0FycmF5KG5ldyBJU3RhdHVzWzBdKTsKLQl9Ci0JCi0JLyoqCi0JICogR2V0IGVycm9yIHN0YXR1c2VzIG9ubHkKLQkgKiBAcmV0dXJuIElTdGF0dXNbXQotCSAqLwotCXB1YmxpYyBJU3RhdHVzW10gZ2V0RXJyb3JSZXBvcnRzKCl7Ci0JCWlmIChlcnJvckxpc3RfPT1udWxsKQotCQkJc29ydFJlcG9ydHMoKTsKLQkgICAgcmV0dXJuIChJU3RhdHVzW10pZXJyb3JMaXN0Xy50b0FycmF5KG5ldyBJU3RhdHVzWzBdKTsKLQl9Ci0JCi0JLyoqCi0JICogR2V0IHdhcm5pbmcgc3RhdHVzZXMgb25seQotCSAqIEByZXR1cm4gSVN0YXR1c1tdCi0JICovCi0JcHVibGljIElTdGF0dXNbXSBnZXRXYXJuaW5nUmVwb3J0cygpewotCQlpZiAod2FybmluZ0xpc3RfPT1udWxsKQotCQkJc29ydFJlcG9ydHMoKTsKLQkJcmV0dXJuIChJU3RhdHVzW10pd2FybmluZ0xpc3RfLnRvQXJyYXkobmV3IElTdGF0dXNbMF0pOwotCX0KLQkKLQkvKioKLQkgKiBTb3J0IGFsbCBzdGF0dXMgcmVwb3J0cwotCSAqLwotCXByaXZhdGUgdm9pZCBzb3J0UmVwb3J0cygpewotCSAgICBlcnJvckxpc3RfID0gbmV3IEFycmF5TGlzdCgpOwotCSAgICB3YXJuaW5nTGlzdF8gPSBuZXcgQXJyYXlMaXN0KCk7Ci0JICAgIAotCSAgICAvLyBTb3J0IGFjY29yZGluZyB0byBlcnJvciBzdGF0dXMgY29kZQotCSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgc3RhdHVzTGlzdF8uc2l6ZSgpOyBpbmRleCsrICkKLQkgICAgewotCSAgICAgIElTdGF0dXMgc3RhdHVzID0gKElTdGF0dXMpc3RhdHVzTGlzdF8uZ2V0KGluZGV4KTsKLQkgICAgICAKLQkgICAgICBpZiggc3RhdHVzLmdldFNldmVyaXR5KCk9PSBJU3RhdHVzLkVSUk9SKXsKLQkgICAgICAgIGVycm9yTGlzdF8uYWRkKHN0YXR1cyk7Ci0JICAgICAgfQotCSAgICAgIGVsc2UgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpPT1JU3RhdHVzLldBUk5JTkcpewotCSAgICAgICAgd2FybmluZ0xpc3RfLmFkZChzdGF0dXMpOwotCSAgICAgIH0KLQkgICAgfQotCSAgICAKLQotCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9lY2xpcHNlL0Jhc2VFY2xpcHNlRW52aXJvbm1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvZWNsaXBzZS9CYXNlRWNsaXBzZUVudmlyb25tZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMGE0MzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9lY2xpcHNlL0Jhc2VFY2xpcHNlRW52aXJvbm1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQuUmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotCi0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgYWRkcyByZXNvdXJjZXMgdG8gdGhlIGJhc2UgSUVudmlyb25tZW50LgotICovCi1wdWJsaWMgaW50ZXJmYWNlIEJhc2VFY2xpcHNlRW52aXJvbm1lbnQgZXh0ZW5kcyBJRW52aXJvbm1lbnQgCi17Ci0gIC8qKgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIGEgUmVzb3VyY2VDb250ZXh0IG9iamVjdCBmb3IgdGhpcyBlbnZpcm9ubWVudC4KLSAgICovCQotICBwdWJsaWMgUmVzb3VyY2VDb250ZXh0IGdldFJlc291cmNlQ29udGV4dCgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9lY2xpcHNlL0Jhc2VTdGF0dXNIYW5kbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2VjbGlwc2UvQmFzZVN0YXR1c0hhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk1OWM0ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2VjbGlwc2UvQmFzZVN0YXR1c0hhbmRsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDMxNCAgIDE3Njg4NiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuQ2hvaWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuU3RhdHVzRXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgQmFzZVN0YXR1c0hhbmRsZXIgaW1wbGVtZW50cyBJRWNsaXBzZVN0YXR1c0hhbmRsZXIKLXsKLSAgcHJpdmF0ZSBJU3RhdHVzIHdvcnN0U3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLSAgCi0gIHB1YmxpYyBJU3RhdHVzIGdldFN0YXR1cygpIAotICB7Ci0JcmV0dXJuIHdvcnN0U3RhdHVzOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVzZXRTdGF0dXMoKSAKLSAgewotICAgIHdvcnN0U3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsJCQotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVwb3J0KElTdGF0dXMgc3RhdHVzKSB0aHJvd3MgU3RhdHVzRXhjZXB0aW9uIAotICB7Ci0gICAgY2hlY2tTdGF0dXMoc3RhdHVzKTsKLSAgfQotCi0gIHB1YmxpYyBDaG9pY2UgcmVwb3J0KElTdGF0dXMgc3RhdHVzLCBDaG9pY2VbXSBjaG9pY2VzKSAKLSAgewotCWNoZWNrU3RhdHVzKHN0YXR1cyk7Ci0JcmV0dXJuIGNob2ljZXMgPT0gbnVsbCB8fCBjaG9pY2VzLmxlbmd0aCA9PSAwPyBudWxsIDogY2hvaWNlc1swXTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlcG9ydEVycm9yKElTdGF0dXMgc3RhdHVzKSAKLSAgewotCWNoZWNrU3RhdHVzKHN0YXR1cyk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZXBvcnRJbmZvKElTdGF0dXMgc3RhdHVzKSAKLSAgewotCWNoZWNrU3RhdHVzKHN0YXR1cyk7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCB2b2lkIGNoZWNrU3RhdHVzKCBJU3RhdHVzIHN0YXR1cyApCi0gIHsKLSAgICBpZiggc3RhdHVzLmdldFNldmVyaXR5KCkgPiB3b3JzdFN0YXR1cy5nZXRTZXZlcml0eSgpICkKLSAgICB7Ci0gICAgICB3b3JzdFN0YXR1cyA9IHN0YXR1czsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvZWNsaXBzZS9FY2xpcHNlRW52aXJvbm1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvZWNsaXBzZS9FY2xpcHNlRW52aXJvbm1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg2NTViNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2VjbGlwc2UvRWNsaXBzZUVudmlyb25tZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuQ29tbWFuZE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29udGV4dC5SZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSVN0YXR1c0hhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC51cmkuU2ltcGxlVVJJRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LnVyaS5JVVJJRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LnVyaS5JVVJJU2NoZW1lOwotCi0KLS8qKgotICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGFuIElFbnZpcm9ubWVudCBjbGFzcyBmb3IgdGhlIEVjbGlwc2UgSUVudmlyb25tZW50LgotICogVGhpcyBJRW52aXJvbm1lbnQgY3VycmVudGx5IHN1cHBvcnRzIHRoZSAicGxhdGZvcm0iIHByb3RvY29sIGFuZCB0aGUgImZpbGUiCi0gKiBwcm90b2NvbC4KLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBFY2xpcHNlRW52aXJvbm1lbnQgaW1wbGVtZW50cyBCYXNlRWNsaXBzZUVudmlyb25tZW50Ci17Ci0gIHByaXZhdGUgQ29tbWFuZE1hbmFnZXIgICBjb21tYW5kTWFuYWdlcl8gID0gbnVsbDsKLSAgcHJpdmF0ZSBTaW1wbGVVUklGYWN0b3J5IHVyaUZhY3RvcnlfICAgICAgPSBudWxsOwotICBwcml2YXRlIFJlc291cmNlQ29udGV4dCAgcmVzb3VyY2VDb250ZXh0XyA9IG51bGw7Ci0gIHByaXZhdGUgSVN0YXR1c0hhbmRsZXIgICAgc3RhdHVzSGFuZGxlcl8gICA9IG51bGw7Ci0gIHByaXZhdGUgSUxvZyAgICAgICAgICAgICAgbG9nZ2VyXyAgICAgICAgICA9IG51bGw7Ci0gIAotICBwdWJsaWMgRWNsaXBzZUVudmlyb25tZW50KCBDb21tYW5kTWFuYWdlciAgY29tbWFuZE1hbmFnZXIsIAotIAkJICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlQ29udGV4dCByZXNvdXJjZUNvbnRleHQsCi0JCQkJCQkgICAgICAgICAgICAgICAgIElTdGF0dXNIYW5kbGVyICAgc3RhdHVzSGFuZGxlciApCi0gIHsKLSAgICBJVVJJU2NoZW1lIGVjbGlwc2VTY2hlbWUgPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZVNjaGVtZSgpOwotICAgIElVUklTY2hlbWUgZmlsZVNjaGVtZSAgICA9IEVudmlyb25tZW50U2VydmljZS5nZXRGaWxlU2NoZW1lKCk7Ci0gICAgCi0gICAgY29tbWFuZE1hbmFnZXJfICA9IGNvbW1hbmRNYW5hZ2VyOwotICAgIHJlc291cmNlQ29udGV4dF8gPSByZXNvdXJjZUNvbnRleHQ7Ci0gICAgdXJpRmFjdG9yeV8gICAgICA9IG5ldyBTaW1wbGVVUklGYWN0b3J5KCk7Ci0gICAgc3RhdHVzSGFuZGxlcl8gICA9IHN0YXR1c0hhbmRsZXI7Ci0gICAgCi0gICAgdXJpRmFjdG9yeV8ucmVnaXN0ZXJTY2hlbWUoICJwbGF0Zm9ybSIsIGVjbGlwc2VTY2hlbWUgKTsKLSAgICB1cmlGYWN0b3J5Xy5yZWdpc3RlclNjaGVtZSggImZpbGUiLCBmaWxlU2NoZW1lICk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5JRW52aXJvbm1lbnQjZ2V0Q29tbWFuZE1hbmFnZXIoKQotICAgKi8KLSAgcHVibGljIENvbW1hbmRNYW5hZ2VyIGdldENvbW1hbmRNYW5hZ2VyKCkKLSAgewotICAgIHJldHVybiBjb21tYW5kTWFuYWdlcl87Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uSUVudmlyb25tZW50I2dldExvZygpCi0gICAqLwotICBwdWJsaWMgSUxvZyBnZXRMb2coKQotICB7Ci0JICBpZiggbG9nZ2VyXyA9PSBudWxsICkKLSAgICB7ICAKLSAgICAgIGxvZ2dlcl8gPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZUxvZygpOyAKLSAgICB9OwotCQotICAgIHJldHVybiBsb2dnZXJfOwotICB9Ci0KLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gbG9nZ2VyIHRoZSBuZXcgbG9nZ2VyIGZvciB0aGlzIGVudmlyb25tZW50LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9nKCBJTG9nIGxvZ2dlciApCi0gIHsKLQlsb2dnZXJfID0gbG9nZ2VyOyAgCi0gIH0KLSAgIAotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uSUVudmlyb25tZW50I2dldFN0YXR1c0hhbmRsZXIoKQotICAgKi8KLSAgcHVibGljIElTdGF0dXNIYW5kbGVyIGdldFN0YXR1c0hhbmRsZXIoKQotICB7Ci0gICAgcmV0dXJuIHN0YXR1c0hhbmRsZXJfOwotICB9Ci0KLSAgLyoqIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uSUVudmlyb25tZW50I2dldFVSSUZhY3RvcnkoKQotICAgKi8KLSAgcHVibGljIElVUklGYWN0b3J5IGdldFVSSUZhY3RvcnkoKQotICB7Ci0gICAgcmV0dXJuIHVyaUZhY3RvcnlfOwotICB9Ci0KLSAgLyoqCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIFJlc291cmNlQ29udGV4dCBmb3IgdGhpcyBJRW52aXJvbm1lbnQuCi0gICAqLwotICBwdWJsaWMgUmVzb3VyY2VDb250ZXh0IGdldFJlc291cmNlQ29udGV4dCgpCi0gIHsKLSAgICByZXR1cm4gcmVzb3VyY2VDb250ZXh0XzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q29tbWFuZE1hbmFnZXIoIENvbW1hbmRNYW5hZ2VyIG1hbmFnZXIgKQotICB7Ci0JY29tbWFuZE1hbmFnZXJfID0gbWFuYWdlcjsgIAotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2VjbGlwc2UvRW52aXJvbm1lbnRNYW5hZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2VjbGlwc2UvRW52aXJvbm1lbnRNYW5hZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NDIxNjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9lY2xpcHNlL0Vudmlyb25tZW50TWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzE0ICAgMTc2ODg2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0LlBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQ7Ci0KLXB1YmxpYyBjbGFzcyBFbnZpcm9ubWVudE1hbmFnZXIKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgYW4gSUVudmlyb25tZW50IGZvciB0aGUgRWNsaXBzZSBub24tR1VJLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBCYXNlRWNsaXBzZUVudmlyb25tZW50IGdldE5ld0Vudmlyb25tZW50KCkKLSAgewotICAgIFBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQgY29udGV4dCAgICAgICAgPSBQZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0LmdldEluc3RhbmNlKCk7Ci0gICAgSUVjbGlwc2VTdGF0dXNIYW5kbGVyICAgICBoYW5kbGVyICAgICAgICA9IG5ldyBCYXNlU3RhdHVzSGFuZGxlcigpOwotICAgIEVjbGlwc2VFbnZpcm9ubWVudCAgICAgICAgZW52aXJvbm1lbnQgICAgPSBuZXcgRWNsaXBzZUVudmlyb25tZW50KCBudWxsLCBjb250ZXh0LCBoYW5kbGVyICk7Ci0gICAgCi0gICAgcmV0dXJuIGVudmlyb25tZW50OyAgCi0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvZWNsaXBzZS9JRWNsaXBzZVN0YXR1c0hhbmRsZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvZWNsaXBzZS9JRWNsaXBzZVN0YXR1c0hhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ4MDk4Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L2VjbGlwc2UvSUVjbGlwc2VTdGF0dXNIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMTQgICAxNzY4ODYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLQotcHVibGljIGludGVyZmFjZSBJRWNsaXBzZVN0YXR1c0hhbmRsZXIgZXh0ZW5kcyBJU3RhdHVzSGFuZGxlcgotewotICAvKioKLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgd29yc3Qgc3RhdHVzIHRoYXQgaGFzIGJlZW4gcmVwb3J0ZWQuCi0gICAqLwkKLSAgcHVibGljIElTdGF0dXMgZ2V0U3RhdHVzKCk7Ci0gIAotICAvKioKLSAgICogUmVzZXRzIHRoZSB3b3JzdCBzdGF0dXMgcmVwb3J0ZWQgdG8gYmUgT0suCi0gICAqCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXNldFN0YXR1cygpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9wbHVnaW4vRW52UGx1Z2luLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3BsdWdpbi9FbnZQbHVnaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjllMTA3MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi9zcmMvb3JnL2VjbGlwc2Uvd3N0L2NvbW1hbmQvaW50ZXJuYWwvZW52L3BsdWdpbi9FbnZQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnBsdWdpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci0KLS8qKgotICogVGhlIG1haW4gcGx1Z2luIGNsYXNzIHRvIGJlIHVzZWQgaW4gdGhlIGRlc2t0b3AuCi0gKi8KLXB1YmxpYyBjbGFzcyBFbnZQbHVnaW4gZXh0ZW5kcyBQbHVnaW4gewotCi0JLy9UaGUgc2hhcmVkIGluc3RhbmNlLgotCXByaXZhdGUgc3RhdGljIEVudlBsdWdpbiBpbnN0YW5jZTsKLQotCS8qKgotCSAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGVzY3JpcHRvciBvZiB0aGlzIHBsdWdpbiBpbiBwbHVnaW4ueG1sLgotCSAgKi8KLQkgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElEID0gIm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudiI7CQotCQotCS8qKgotCSAqIFRoZSBjb25zdHJ1Y3Rvci4KLQkgKi8KLQlwdWJsaWMgRW52UGx1Z2luKCkgewotCQlzdXBlcigpOwotCQlpbnN0YW5jZSA9IHRoaXM7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRW52UGx1Z2luIGdldEluc3RhbmNlKCkgewotCQlyZXR1cm4gaW5zdGFuY2U7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9wcmVmZXJlbmNlcy9BY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYvc3JjL29yZy9lY2xpcHNlL3dzdC9jb21tYW5kL2ludGVybmFsL2Vudi9wcmVmZXJlbmNlcy9BY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGYxYzE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52L3NyYy9vcmcvZWNsaXBzZS93c3QvY29tbWFuZC9pbnRlcm5hbC9lbnYvcHJlZmVyZW5jZXMvQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA1MjIgICAxODQwMDYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5wcmVmZXJlbmNlczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBkZWZpbmUgcHJlZmVyZW5jZSBpZHMuIEl0IGNvcnJlc3BvbmRzIHRvIGluZm9ybWF0aW9uCi0gKiBzcGVjaWZpZWQgYnkgYSBhY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZSBleHRlbnNpb24gcG9pbnQuCi0gKiBFYWNoIGFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlIGVudHJ5IHdpbGwgcmVzdWx0IGluIGFuIGVudHJ5IGluIHRoZQotICogYWN0aW9uIGRpYWxvZ3MgcHJlZmVyZW5jZSBwYWdlIGlmIHRoZSBzaG93Y2hlY2tib3ggZmllbGQgaXMgdHJ1ZS4KLSAqICAgCi0gKiBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdGhpcyBleHRlbnNpb24gcG9pbnQuCi0gKiAKLSAqIDxwcmU+Ci0gICogICAmbHQ7ZXh0ZW5zaW9uCi0gKiAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlIiZndDsKLSAqICAgICAmbHQ7YWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUKLSAqICAgICAgICAgICBzaG93Y2hlY2tib3g9InRydWUiCi0gKiAgICAgICAgICAgbmFtZT0iJUNIRUNLQk9YX1NIT1dfR0VORVJBVEVfSkFWQV9QUk9YWV9ESUFMT0ciCi0gKiAgICAgICAgICAgY2F0ZWdvcnk9Im9yZy5lY2xpcHNlLmpzdC53c3MucG9wdXAuY2F0ZWdvcnkiCi0gKiAgICAgICAgICAgdG9vbHRpcD0iJVRPT0xUSVBfUFBBRF9DSEVDS0JPWF9XU0RMMlBST1hZIgotICogICAgICAgICAgIGluZm9wb3A9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5QUEFEMDAwNCIKLSAqICAgICAgICAgICBvYmplY3RpZHM9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZC5maWxlIgotICogICAgICAgICAgIGFsd2F5c2hpZGU9ImZhbHNlIgotICogICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQiJmd0OwotICogICAgICZsdDsvYWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUmZ3Q7Ci0gKiA8L3ByZT4KLSAqCi0gKiBUaGlzIGFjdGlvbkRpYWxvZ1ByZWZlcmVuY2VUeXBlIGV4dGVuc2lvbiBwb2ludCBpcyBhc3NvY2lhdGVkIHdpdGggYW4gT2JqZWN0Q29udHJpYnV0aW9uCi0gKiBleHRlbnNpb24gcG9pbnQuICBGb3IgZXhhbXBsZTogCi0gKiAKLSAqICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICogICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSIKLSAqICAgICAgICAgICBuYW1lRmlsdGVyPSIqLndzZGwiCi0gKiAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZC5maWxlIj4KLSAqIDwhLS0gV1NETCBUbyBKYXZhIEJlYW4gUHJveHkgLS0+Ci0gKiAgICAgICAgPGFjdGlvbgotICogICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX0dFTkVSQVRFX0pBVkFfUFJPWFkiCi0gKiAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAqICAgICAgICAgICAgICBtZW51YmFyUGF0aD0ib3JnLmVjbGlwc2UuanN0LndzLmF0ay51aS53ZWJzZXJ2aWNlLmNhdGVnb3J5LnBvcHVwTWVudS9wb3B1cEFjdGlvbnMiCi0gKiAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZCI+Ci0gKiAgICAgICAgPC9hY3Rpb24+Ci0gKiAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0gKgotICogVGhlIE9iamVjdENvbnRyaWJ1dGlvbiBlbnRyeSBpcyBsaW5rZWQgd2l0aCB0aGUgYWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUgZW50cnkKLSAqIHZpYSB0aGUgaWQgYXR0cmlidXRlIG9mIHRoZSBPYmplY3RDb250aXJidXRpb24gYW5kIHRoZSBpZCBhdHRyaWJ1dGUgb2YgYWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGUuCi0gKiBOb3RlOiB0aGUgaWQgaW4gdGhlIGFjdGlvbiBlbnRyeSBpcyBhbHdheXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkeW5hbWljIHdpemFyZCB0aGF0Ci0gKiBzaG91bGQgYmUgcG9wdXBlZCB1cC4gIEluIHRoZSBleGFtcGxlIGFib3ZlIHRoZSBPYmplY3Rpb25Db250cmlidXRpb24gaWQgYW5kIHRoZQotICogYWN0aW9uIGlkcyBhcmUgdGhlIHNhbWUsIGJ1dCB0aGlzIG5lZWQgbm90IGJlIHRoZSBjYXNlLiAgCi0gKi8KLXB1YmxpYyBjbGFzcyBBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZQotewotICBwcml2YXRlIFN0cmluZyAgaWRfOwotICBwcml2YXRlIFN0cmluZyAgbmFtZV87Ci0gIHByaXZhdGUgU3RyaW5nICBpbmZvcG9wXzsKLSAgcHJpdmF0ZSBTdHJpbmcgIHRvb2x0aXBfOwotICBwcml2YXRlIGJvb2xlYW4gc2hvd0NoZWNrYm94XzsKLSAgcHJpdmF0ZSBib29sZWFuIGFsd2F5c0hpZGVfOwotICBwcml2YXRlIFN0cmluZyAgY2F0ZWdvcnlfOwotICBwcml2YXRlIEhhc2hTZXQgb2JqZWN0SWRzXyA9IG5ldyBIYXNoU2V0KCk7Ci0KLSAgcHVibGljIEhhc2hTZXQgZ2V0T2JqZWN0SWRzKCkKLSAgewotICAgIHJldHVybiBvYmplY3RJZHNfOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBhZGRPYmplY3RJZCggU3RyaW5nIGlkICkKLSAgewotICAgIG9iamVjdElkc18uYWRkKCBpZCApOyAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXRzIHRoZSBpZCBmb3IgdGhpcyBwb3B1cCBhY3Rpb24uICBUaGlzIGlkIGxpbmsgdGhlIGFjdGlvbkRpYWxvZ1ByZWZlcmVuY2UKLSAgICogd2l0aCBhbiBPYmplY3RDb250cmlidXRpb24uCi0gICAqIEBwYXJhbSBpZCB0aGUgaWQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRJZChTdHJpbmcgaWQpCi0gIHsKLSAgICBpZF8gPSBpZDsKLSAgfQotCi0gIC8qKgotICAgKiBHZXRzIHRoZSBpZCBmb3IgdGhpcyBwb3B1cCBhY3Rpb24uCi0gICAqIEByZXR1cm4gdGhlIGlkLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICByZXR1cm4gaWRfOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIG5hbWUgZm9yIHRoaXMgcG9wdXAgYWN0aW9uLiAgVGhpcyBuYW1lIGlzIGRpc3BsYXllZCBvbiB0aGUKLSAgICogZGlhbG9nIHByZWZlcmVuY2VzIHBhZ2UgYW5kIG11c3QgYmUgdHJhbnNsYXRlZC4KLSAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIHBvcHVwIGNoZWNrIGJveC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBuYW1lXyA9IG5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyB0aGUgZGlzcGxheSB2YWx1ZSBmb3IgdGhpcyBwb3B1cCBjaGVjayBib3guCi0gICAqIE5vdGU6IHRoaXMgdmFsdWUgbWF5IGJlIG51bGwgaWYgdGhlIGdldFNob3dDaGVja0JveCBtZXRob2QgcmV0dXJucyBmYWxzZS4KLSAgICogQHJldHVybiB0aGUgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gbmFtZV87Ci0gIH0KLQotICAvKioKLSAgICogU2V0cyB0aGUgaW5mbyBwb3AgdmFsdWUgZm9yIHRoaXMgcG9wdXAgY2hlY2sgYm94LgotICAgKiBAcGFyYW0gaW5mb3BvcAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SW5mb3BvcChTdHJpbmcgaW5mb3BvcCkKLSAgewotICAgIGluZm9wb3BfID0gaW5mb3BvcDsKLSAgfQotCi0gIC8qKgotICAgKiBHZXRzIHRoZSBpbmZvIHBvcCB2YWx1ZSBmb3IgdGhpcyBwb3B1cCBjaGVjayBib3guCi0gICAqIE5vdGU6IHRoaXMgdmFsdWUgbWF5IGJlIG51bGwgaWYgdGhlIGdldFNob3dDaGVja0JveCBtZXRob2QgcmV0dXJucyBmYWxzZS4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIGluZm9wb3AgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEluZm9wb3AoKQotICB7Ci0gICAgcmV0dXJuIGluZm9wb3BfOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHRvb2x0aXAgdmFsdWUgZm9yIHRoaXMgcG9wdXAgY2hlY2sgYm94LgotICAgKiBAcGFyYW0gdG9vbHRpcAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VG9vbHRpcChTdHJpbmcgdG9vbHRpcCkKLSAgewotICAgIHRvb2x0aXBfID0gdG9vbHRpcDsKLSAgfQotCi0gIC8qKgotICAgKiBHZXRzIHRoZSB0b29sdGlwIHZhbHVlIGZvciB0aGlzIHBvcHVwIGNoZWNrIGJveC4KLSAgICogTm90ZTogdGhpcyB2YWx1ZSBtYXkgYmUgbnVsbCBpZiB0aGUgZ2V0U2hvd0NoZWNrQm94IG1ldGhvZCByZXR1cm5zIGZhbHNlLgotICAgKiAKLSAgICogQHJldHVybiB0aGUgdG9vbHRpcCB2YWx1ZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VG9vbHRpcCgpCi0gIHsKLSAgICByZXR1cm4gdG9vbHRpcF87Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXRzIHRoZSBzaG93IGNoZWNrIGJveCB2YWx1ZSBmb3IgdGhpcyBwb3B1cC4gIElmIHRoZSB2YWx1ZSBpcyB0cnVlIHRoZW4KLSAgICogdGhpcyBwb3B1cCB3aWxsIGFwcGVhciBvbiBhbiBhY3Rpb24gZGlhbG9ncyBwcmVmZXJlbmNlIHBhZ2UuICBBbHNvIGlmIHRoaXMKLSAgICogdmFsdWUgaXMgdHJ1ZSBhbmQgdGhlIGFsd2F5cyBoaWRlIHZhbHVlIGlzIGZhbHNlIHRoZW4gYSBjaGVjayBib3ggd2lsbCBiZSBkaXNwbGF5ZWQKLSAgICogb24gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhpcyBwb3B1cCB3aGljaCBhc2tzIHRoZSB1c2VyIGlmIHRoZXkgd2FudCB0aGUgcG9wdXAKLSAgICogdG8gYmUgZGlzcGxheWVkIHRoZSBuZXh0IHRpbWUgYXJlIHRvIGp1c3QgZXhlY3V0ZSB0aGUgcG9wdXAgYWN0aW9uLgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIHNob3cgY2hlY2sgYm94IHZhbHVlLgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2hvd0NoZWNrYm94KCBib29sZWFuIHZhbHVlICkKLSAgewotICAgIHNob3dDaGVja2JveF8gPSB2YWx1ZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldHMgdGhlIHNob3cgY2hlY2sgYm94IHZhbHVlLgotICAgKiBAcmV0dXJuIHRoZSBzaG93IGNoZWNrIGJveCB2YWx1ZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFNob3dDaGVja2JveCgpCi0gIHsKLSAgICByZXR1cm4gc2hvd0NoZWNrYm94XzsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIGFsd2F5cyBoaWRlIHZhbHVlLiAgVGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhhdCB0aGUgcG9wdXAgc2hvdWxkIGFsd2F5cwotICAgKiBiZSBleGVjdXRlZCB3aXRob3V0IGJyaW5naW5nIHVwIHRoZSBwb3B1cCB3aXphcmQuCi0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgYWx3YXlzIGhpZGUgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBbHdheXNIaWRlKCBib29sZWFuIHZhbHVlICkKLSAgewotICAgIGFsd2F5c0hpZGVfID0gdmFsdWU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBhbHdheXMgaGlkZSB2YWx1ZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldEFsd2F5c0hpZGUoKQotICB7Ci0gICAgcmV0dXJuIGFsd2F5c0hpZGVfOyAKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIGNhdGVnb3J5IGlkIGZvciBwb3B1cCBhY3Rpb24uICBBbGwgcG9wdXAgYWN0aW9ucyB3aXRoIHRoZSBzYW1lCi0gICAqIGNhdGVnb3J5IGlkIHdpbGwgYmUgZ3JvdXBlZCB0b2dldGhlciBvbiB0aGUgc2FtZSBwb3B1cCBhY3Rpb24gcHJlZmVyZW5jZSBwYWdlLgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIGNhdGVnb3J5LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q2F0ZWdvcnkoIFN0cmluZyB2YWx1ZSApCi0gIHsKLSAgICBjYXRlZ29yeV8gPSB2YWx1ZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSBjYXRlZ29yeSBpZC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2F0ZWdvcnkoKQotICB7Ci0gICAgcmV0dXJuIGNhdGVnb3J5XzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvLmNsYXNzcGF0aCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhOTNjZTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0id3NleHBsb3Jlci1wcm9wZXJ0aWVzIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSL29yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZS9KMlNFLTEuNSIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPgotPC9jbGFzc3BhdGg+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBhYWUzYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1iaW4KLWJ1aWxkCi13ZWJhcHBzCi10ZW1wLmZvbGRlcgotYnVpbGQueG1sCi0qLndhcgotZXhwbG9yZXJzcmMuemlwCi1qYXZhQ29tcGlsZXIuKi5hcmdzCi0qLmphcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYyMTk5OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53cy5leHBsb3JlcjwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNjhmNTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jU2F0IERlYyAyMiAxOTo1NjozNCBFU1QgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWVuY29kaW5nLzxwcm9qZWN0Pj1JU08tODg1OS0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMTYxMjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotI1dlZCBKdW4gMDYgMTQ6MzI6MzcgRURUIDIwMDcKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1pbnN0YW5jZS9vcmcuZWNsaXBzZS5jb3JlLm5ldC9vcmcuZWNsaXBzZS5jb3JlLm5ldC5oYXNNaWdyYXRlZD10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5idWlsZGVyLmNsZWFuT3V0cHV0Rm9sZGVyPWNsZWFuCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5idWlsZGVyLmR1cGxpY2F0ZVJlc291cmNlVGFzaz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5idWlsZGVyLmludmFsaWRDbGFzc3BhdGg9YWJvcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmJ1aWxkZXIucmVzb3VyY2VDb3B5RXhjbHVzaW9uRmlsdGVyPSoubGF1bmNoCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jaXJjdWxhckNsYXNzcGF0aD1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY2xhc3NwYXRoLmV4Y2x1c2lvblBhdHRlcm5zPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNsYXNzcGF0aC5tdWx0aXBsZU91dHB1dExvY2F0aW9ucz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS41Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnVudXNlZExvY2FsPXByZXNlcnZlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcubGluZU51bWJlcj1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcubG9jYWxWYXJpYWJsZT1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcuc291cmNlRmlsZT1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIubWF4UHJvYmxlbVBlclVuaXQ9MTAwCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFubm90YXRpb25TdXBlckludGVyZmFjZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXV0b2JveGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uSW5EZXByZWNhdGVkQ29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbldoZW5PdmVycmlkaW5nRGVwcmVjYXRlZE1ldGhvZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kaXNjb3VyYWdlZFJlZmVyZW5jZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW1wdHlTdGF0ZW1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaGlkZGVuQ2F0Y2hCbG9jaz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGF0aWJsZU5vbkluaGVyaXRlZEludGVyZmFjZU1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGxldGVFbnVtU3dpdGNoPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmRpcmVjdFN0YXRpY0FjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubG9jYWxWYXJpYWJsZUhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWV0aG9kV2l0aENvbnN0cnVjdG9yTmFtZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdEZXByZWNhdGVkQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ092ZXJyaWRlQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ1NlcmlhbFZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0VmZmVjdEFzc2lnbm1lbnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0ltcGxpY2l0U3RyaW5nQ29udmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vbkV4dGVybmFsaXplZFN0cmluZ0xpdGVyYWw9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm92ZXJyaWRpbmdQYWNrYWdlRGVmYXVsdE1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnBvc3NpYmxlQWNjaWRlbnRhbEJvb2xlYW5Bc3NpZ25tZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zcGVjaWFsUGFyYW1ldGVySGlkaW5nRmllbGQ9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3RhdGljQWNjZXNzUmVjZWl2ZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdXBwcmVzc1dhcm5pbmdzPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3ludGhldGljQWNjZXNzRW11bGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS50eXBlUGFyYW1ldGVySGlkaW5nPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5jaGVja2VkVHlwZU9wZXJhdGlvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuZG9jdW1lbnRlZEVtcHR5QmxvY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuaGFuZGxlZFdhcm5pbmdUb2tlbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5RWxzZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlUeXBlQ2hlY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVucXVhbGlmaWVkRmllbGRBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbldoZW5PdmVycmlkaW5nPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZEltcG9ydD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZExvY2FsPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuSW1wbGVtZW50aW5nQWJzdHJhY3Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbk92ZXJyaWRpbmdDb25jcmV0ZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQcml2YXRlTWVtYmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udmFyYXJnc0FyZ3VtZW50TmVlZENhc3Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNQotb3JnLmVjbGlwc2UuamR0LmNvcmUuaW5jb21wYXRpYmxlSkRLTGV2ZWw9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5pbmNvbXBsZXRlQ2xhc3NwYXRoPWVycm9yCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMwMGY3OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jRnJpIEp1biAwMyAwMDozMjowMiBFRFQgMjAwNQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWludGVybmFsLmRlZmF1bHQuY29tcGxpYW5jZT1kZWZhdWx0CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxZTkzYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6NDA6MDQgRVNUIDIwMDYKLWNvbXBpbGVycy5wLmRlcHJlY2F0ZWQ9MQotY29tcGlsZXJzLnAubm8tcmVxdWlyZWQtYXR0PTAKLWNvbXBpbGVycy5wLm5vdC1leHRlcm5hbGl6ZWQtYXR0PTEKLWNvbXBpbGVycy5wLnVua25vd24tYXR0cmlidXRlPTAKLWNvbXBpbGVycy5wLnVua25vd24tY2xhc3M9MAotY29tcGlsZXJzLnAudW5rbm93bi1lbGVtZW50PTEKLWNvbXBpbGVycy5wLnVua25vd24tcmVzb3VyY2U9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1leC1wb2ludHM9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1pbXBvcnQ9MAotY29tcGlsZXJzLnVzZS1wcm9qZWN0PXRydWUKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzZjZmFiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJVBMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXI7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC40MDcucXVhbGlmaWVyCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGx1Z2luLkV4cGxvcmVyUGx1Z2luCi1CdW5kbGUtVmVuZG9yOiAlUExVR0lOX1BST1ZJREVSCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLUV4cG9ydC1QYWNrYWdlOiBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXI7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuZmF2b3JpdGVzO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsdWdpbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wb3B1cDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQ7eC1pbnRlcm5hbDo9dHJ1ZQotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmhlbHAuYXBwc2VydmVyO2J1bmRsZS12ZXJzaW9uPSJbMy4xLjEwMCwzLjIuMCkiLAotIG9yZy5lY2xpcHNlLnVpO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuY29tbW9uO2J1bmRsZS12ZXJzaW9uPSJbMi4yLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuZWNvcmU7YnVuZGxlLXZlcnNpb249IlsyLjIuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLnhzZDtidW5kbGUtdmVyc2lvbj0iWzIuMi4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52O2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3M7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlcjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbDtidW5kbGUtdmVyc2lvbj0iWzEuMi4wLDEuMy4wKSIsCi0gamF2YXgud3NkbDtidW5kbGUtdmVyc2lvbj0iWzEuNS4wLDEuNi4wKSIsCi0gb3JnLmFwYWNoZS53c2lsNGo7YnVuZGxlLXZlcnNpb249IlsxLjAuMCwxLjEuMCkiLAotIG9yZy51ZGRpNGo7YnVuZGxlLXZlcnNpb249IlsyLjAuNCwyLjEuMCkiLAotIG9yZy5hcGFjaGUuYXhpcztidW5kbGUtdmVyc2lvbj0iWzEuNC4wLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MudWk7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQ7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi51cmlyZXNvbHZlcjtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5lcXVpbm94Lmh0dHAuamV0dHk7YnVuZGxlLXZlcnNpb249IlsxLjAuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLmVxdWlub3guanNwLmphc3Blci5yZWdpc3RyeTtidW5kbGUtdmVyc2lvbj0iWzEuMC4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuZXF1aW5veC5odHRwLnJlZ2lzdHJ5O2J1bmRsZS12ZXJzaW9uPSJbMS4wLjAsMy4wLjApIiwKLSBqYXZheC54bWwucnBjO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMi4wLjApIiwKLSBvcmcuYXBhY2hlLmNvbW1vbnMuY29kZWM7YnVuZGxlLXZlcnNpb249IlsxLjIuMCwyLjAuMCkiCi1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQotQnVuZGxlLVJlcXVpcmVkRXhlY3V0aW9uRW52aXJvbm1lbnQ6IEoyU0UtMS41Ci1JbXBvcnQtUGFja2FnZTogamF2YXguc2VydmxldDt2ZXJzaW9uPSIyLjQuMCIsCi0gamF2YXguc2VydmxldC5odHRwO3ZlcnNpb249IjIuNC4wIiwKLSBvcmcub3NnaS5zZXJ2aWNlLmh0dHA7dmVyc2lvbj0iMS4yLjAiLAotIGNvbS5pYm0uaWN1LnV0aWw7IHZlcnNpb249IjMuOCIsCi0gY29tLmlibS5pY3UudGV4dDsgdmVyc2lvbj0iMy44IgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvYWJvdXQuaHRtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvYnVpbGQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ODYzYjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXNvdXJjZS4uID0gc3JjLyx3c2V4cGxvcmVyLXByb3BlcnRpZXMvCi1qYXJzLmNvbXBpbGUub3JkZXIgPSAuCi0gICAgICAgICAgICAgICAgICAgICAKLW91dHB1dC4uID0gYmluLwotYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICAuLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIHByb3BlcnRpZXMvLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIGljb25zLyxcCi0gICAgICAgICAgICAgICB3c2V4cGxvcmVyLyxcCi0gICAgICAgICAgICAgICB3c2V4cGxvcmVyLXByb3BlcnRpZXMvCi0KLQotY3VzdG9tQnVpbGRDYWxsYmFja3M9YnVpbGRKU1BzLnhtbAotCi0KLXNyYy5pbmNsdWRlcyA9IHNjaGVtYS8KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL2J1aWxkSlNQcy54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9idWlsZEpTUHMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDRiYTM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL2J1aWxkSlNQcy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gQW50IGJ1aWxkIHNjcmlwdCBmb3IgSlNQcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08cHJvamVjdCBuYW1lPSJKU1AgQnVpbGQiPgotCi0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPCEtLSBXb3Jrc3BhY2UgKGRldikgYnVpbGQ7IGNhbGxlZCBhcyBhbiBBbnQgYnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPHRhcmdldCBuYW1lPSJidWlsZCI+Ci0KLQkJPCEtLSBDb25zdHJ1Y3QgdGhlIGZ1bGwgY2xhc3NwYXRoIC0tPgotCQk8cGF0aCBpZD0iZXhwbG9yZXIuamFyLmNsYXNzcGF0aCIgPgotCQkJPHBhdGhlbGVtZW50IHBhdGg9IiR7dGFyZ2V0LmZvbGRlcn0iLz4KLQkJCTxkaXJzZXQgZGlyPSIke3dvcmtzcGFjZV9sb2N9Ij4KLQkJCQk8cGF0dGVybnNldD4KLQkJCQkJPGluY2x1ZGUgbmFtZT0ib3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL2JpbiIvPgotCQkJCQkKLQkJCQk8L3BhdHRlcm5zZXQ+Ci0JCQk8L2RpcnNldD4KLQkJCTxmaWxlc2V0IGRpcj0iJHt0YXJnZXRfaG9tZX0vcGx1Z2lucyI+Ci0JCQkJPHBhdHRlcm5zZXQ+Ci0JCQkJCTxpbmNsdWRlIG5hbWU9ImphdmF4LnNlcnZsZXQqLmphciIvPgotCQkJCQk8aW5jbHVkZSBuYW1lPSJqYXZheC5zZXJ2bGV0LmpzcCouamFyIi8+Ci0JCQkJCTxpbmNsdWRlIG5hbWU9Im9yZy5hcGFjaGUuYW50Ki9saWIvYW50LmphciIvPgotCQkJCQk8aW5jbHVkZSBuYW1lPSJvcmcuYXBhY2hlLmNvbW1vbnMuZWwqLmphciIvPgotCQkJCQk8aW5jbHVkZSBuYW1lPSJvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZyouamFyIi8+Ci0JCQkJCTxpbmNsdWRlIG5hbWU9Im9yZy5hcGFjaGUuamFzcGVyKi5qYXIiLz4KLQkJCQkJCi0JCQkJPC9wYXR0ZXJuc2V0PgotCQkJPC9maWxlc2V0PgotCQk8L3BhdGg+Ci0KLQkJPCEtLSBDb21waWxlIHRoZSBKU1BzIC0tPgotCQk8YW50Y2FsbCB0YXJnZXQ9ImNvbXBpbGUiPgotCQkJPHJlZmVyZW5jZSByZWZpZD0iZXhwbG9yZXIuamFyLmNsYXNzcGF0aCIvPgotCQk8L2FudGNhbGw+Ci0JCQotCTwvdGFyZ2V0PgotCi0JPHByb3BlcnR5IG5hbWU9IndzZXhwbG9yZXJEaXIiIHZhbHVlPSIke2Jhc2VkaXJ9L3dzZXhwbG9yZXIiLz4KLQkKLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8IS0tIENvbXBpbGUgdGhlIEpTUHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8dGFyZ2V0IG5hbWU9ImNvbXBpbGUiPgotCQkKLQkJPCEtLSBJbnZva2UgSmFzcGVyIGNvbXBpbGVyIC0tPgotCQk8amF2YQotCQkJY2xhc3NuYW1lPSJvcmcuYXBhY2hlLmphc3Blci5Kc3BDIgotCQkJY2xhc3NwYXRocmVmPSJleHBsb3Jlci5qYXIuY2xhc3NwYXRoIgotCQkJZm9yaz0idHJ1ZSIKLQkJCWZhaWxvbmVycm9yPSJ0cnVlIj4KLQkJCTxhcmcgdmFsdWU9Ii1jb21waWxlIi8+Ci0JCQk8YXJnIHZhbHVlPSItZCIvPgotCQkJPGFyZyB2YWx1ZT0iJHt3c2V4cGxvcmVyRGlyfSIgLz4KLQkJCTxhcmcgdmFsdWU9Ii1wIi8+Ci0JCQk8YXJnIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIuanNwIi8+Ci0JCQk8YXJnIHZhbHVlPSItd2ViYXBwIi8+Ci0JCQk8YXJnIHZhbHVlPSIke3dzZXhwbG9yZXJEaXJ9Ii8+Ci0JCQk8YXJnIHZhbHVlPSItZGllIi8+Ci0JCQk8Y2xhc3NwYXRoPgotCQkJCTxwYXRoZWxlbWVudCBwYXRoPSIke3RhcmdldC5mb2xkZXJ9Ii8+Ci0JCQkJPGRpcnNldCBkaXI9IiR7YmFzZWRpcn0iPgotCQkJCQkJPGluY2x1ZGUgbmFtZT0iKi9AZG90IiAvPgotCQkJCTwvZGlyc2V0PgotCQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfSI+Ci0JCQkJCQk8aW5jbHVkZSBuYW1lPSIqKi8qLmphciIgLz4gCi0JCQkJPC9maWxlc2V0PgotCQkJPC9jbGFzc3BhdGg+Ci0JCTwvamF2YT4KLQkJCi0JPC90YXJnZXQ+Ci0JCi0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPCEtLSBTdGVwcyB0byBkbyBiZWZvcmUgdGhlIHRhcmdldCBidWlsZC5qYXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSBBdmFpbGFibGUgcGFyYW1ldGVycyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIGJ1aWxkLnJlc3VsdC5mb2xkZXIgLSBmb2xkZXIgdG8gY29udGFpbiB0aGUgYnVpbGQgcmVzdWx0cyAgICAgICAgICAgLS0+Ci0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPHRhcmdldCBuYW1lPSJwcmUuYnVpbGQuamFycyI+Ci0JPC90YXJnZXQ+Ci0KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8IS0tIFN0ZXBzIHRvIGRvIGFmdGVyIHRoZSB0YXJnZXQgYnVpbGQuamFycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tIEF2YWlsYWJsZSBwYXJhbWV0ZXJzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tICAgYnVpbGQucmVzdWx0LmZvbGRlciAtIGZvbGRlciB0byBjb250YWluIHRoZSBidWlsZCByZXN1bHRzICAgICAgICAgICAtLT4KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8dGFyZ2V0IG5hbWU9InBvc3QuYnVpbGQuamFycyI+Ci0JPC90YXJnZXQ+Ci0JCi0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPCEtLSBTdGVwcyB0byBkbyBiZWZvcmUgdGhlIHRhcmdldCBidWlsZC5zb3VyY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSBBdmFpbGFibGUgcGFyYW1ldGVycyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIGJ1aWxkLnJlc3VsdC5mb2xkZXIgLSBmb2xkZXIgdG8gY29udGFpbiB0aGUgYnVpbGQgcmVzdWx0cyAgICAgICAgICAgLS0+Ci0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPHRhcmdldCBuYW1lPSJwcmUuYnVpbGQuc291cmNlcyI+Ci0JPC90YXJnZXQ+Ci0KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8IS0tIFN0ZXBzIHRvIGRvIGFmdGVyIHRoZSB0YXJnZXQgYnVpbGQuc291cmNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tIEF2YWlsYWJsZSBwYXJhbWV0ZXJzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tICAgYnVpbGQucmVzdWx0LmZvbGRlciAtIGZvbGRlciB0byBjb250YWluIHRoZSBidWlsZCByZXN1bHRzICAgICAgICAgICAtLT4KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8dGFyZ2V0IG5hbWU9InBvc3QuYnVpbGQuc291cmNlcyI+Ci0JPC90YXJnZXQ+Ci0KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8IS0tIFN0ZXBzIHRvIGRvIGJlZm9yZSB0aGUgY29tcGlsYXRpb24gdGFyZ2V0IDxuYW1lPiAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tIFN1YnN0aXR1dGUgIm5hbWUiIHdpdGggdGhlIG5hbWUgb2YgdGhlIGNvbXBpbGF0aW9uIHRhcmdldCwgZWcgQGRvdCAgICAtLT4KLQk8IS0tIEF2YWlsYWJsZSBwYXJhbWV0ZXJzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tICAgc291cmNlLmZvbGRlcm4gOiBuID0gMSAuLi4gTiwgdGhlIHNvdXJjZSBmb2xkZXJzICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tICAgdGFyZ2V0LmZvbGRlciAgOiB3aGVyZSB0aGUgcmVzdWx0cyBvZiB0aGUgY29tcGlsYXRpb24gZ28gICAgICAgICAgICAtLT4KLQk8IS0tICAgPG5hbWU+LmNsYXNzcGF0aCA6IG5hbWUgPSBuYW1lIG9mIHRoZSBjb21waWxhdGlvbiB0YXJnZXQuIEEgICAgICAgICAtLT4KLQk8IS0tICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSB0byB0aGUgY2xhc3NwYXRoIHN0cnVjdHVyZS4gICAgICAgICAgICAtLT4KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8dGFyZ2V0IG5hbWU9InByZS5leHBsb3Jlci5qYXIiPgotCTwvdGFyZ2V0PgotCi0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPCEtLSBTdGVwcyB0byBkbyBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uIHRhcmdldCA8bmFtZT4sIGFmdGVyIHRoZSBjb21waWxlICAgLS0+Ci0JPCEtLSBidXQgYmVmb3JlIGphcmluZy4gIFN1YnN0aXR1dGUgIm5hbWUiIHdpdGggdGhlIG5hbWUgb2YgdGhlIGNvbXBpbGF0aW9uLS0+Ci0JPCEtLSB0YXJnZXQsIGVnIEBkb3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSBBdmFpbGFibGUgcGFyYW1ldGVycyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIHNvdXJjZS5mb2xkZXJuIDogbiA9IDEgLi4uIE4sIHRoZSBzb3VyY2UgZm9sZGVycyAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIHRhcmdldC5mb2xkZXIgIDogd2hlcmUgdGhlIHJlc3VsdHMgb2YgdGhlIGNvbXBpbGF0aW9uIGdvICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIDxuYW1lPi5jbGFzc3BhdGggOiBuYW1lID0gbmFtZSBvZiB0aGUgY29tcGlsYXRpb24gdGFyZ2V0LiBBICAgICAgICAgLS0+Ci0JPCEtLSAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgdG8gdGhlIGNsYXNzcGF0aCBzdHJ1Y3R1cmUuICAgICAgICAgICAgLS0+Ci0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPHRhcmdldCBuYW1lPSJwb3N0LmNvbXBpbGUuZXhwbG9yZXIuamFyIj4KLQkJCi0JCTwhLS0gQ29tcGlsZSB0aGUgSlNQcyAtLT4KLQkJPGFudGNhbGwgdGFyZ2V0PSJjb21waWxlIj4KLQkJCTxyZWZlcmVuY2UgcmVmaWQ9ImV4cGxvcmVyLmphci5jbGFzc3BhdGgiLz4KLQkJPC9hbnRjYWxsPgotCQkKLQkJPCEtLSBKc3BDIGFsd2F5cyBnZW5lcmF0ZXMgLmphdmEgZmlsZXM7IGRlbGV0ZSB0aGVtIC0tPgotCQk8ZGVsZXRlPgotCQkJPGZpbGVzZXQgZGlyPSIke3RhcmdldC5mb2xkZXJ9IiBpbmNsdWRlcz0iKiovKi5qYXZhIi8+Ci0JCTwvZGVsZXRlPgotCi0JPC90YXJnZXQ+Ci0JCi0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPCEtLSBTdGVwcyB0byBkbyBhZnRlciB0aGUgY29tcGlsYXRpb24gdGFyZ2V0IDxuYW1lPiAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSBTdWJzdGl0dXRlICJuYW1lIiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjb21waWxhdGlvbiB0YXJnZXQsIGVnIEBkb3QgICAgLS0+Ci0JPCEtLSBBdmFpbGFibGUgcGFyYW1ldGVycyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIGphci5sb2NhdGlvbiAtIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tcGlsYXRpb24gcmVzdWx0cyAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIDxuYW1lPi5jbGFzc3BhdGggOiBuYW1lID0gbmFtZSBvZiB0aGUgY29tcGlsYXRpb24gdGFyZ2V0LiBBICAgICAgICAgLS0+Ci0JPCEtLSAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgdG8gdGhlIGNsYXNzcGF0aCBzdHJ1Y3R1cmUuICAgICAgICAgICAgLS0+Ci0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPHRhcmdldCBuYW1lPSJwb3N0LmV4cGxvcmVyLmphciI+Ci0JPC90YXJnZXQ+Ci0JCi0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPCEtLSBTdGVwcyB0byBkbyBiZWZvcmUgdGhlIHRhcmdldCBnYXRoZXIuYmluLnBhcnRzICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotCTwhLS0gQXZhaWxhYmxlIHBhcmFtZXRlcnMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotCTwhLS0gICBidWlsZC5yZXN1bHQuZm9sZGVyIC0gZm9sZGVyIGNvbnRhaW5pbmcgdGhlIGJ1aWxkIHJlc3VsdHMgICAgICAgICAgIC0tPgotCTwhLS0gICB0YXJnZXQuZm9sZGVyIC0gZGVzdGluYXRpb24gZm9sZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotCTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotCTx0YXJnZXQgbmFtZT0icHJlLmdhdGhlci5iaW4ucGFydHMiPgotCTwvdGFyZ2V0PgotCQkKLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8IS0tIFN0ZXBzIHRvIGRvIGFmdGVyIHRoZSB0YXJnZXQgZ2F0aGVyLmJpbi5wYXJ0cyAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tIEF2YWlsYWJsZSBwYXJhbWV0ZXJzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tICAgYnVpbGQucmVzdWx0LmZvbGRlciAtIGZvbGRlciBjb250YWluaW5nIHRoZSBidWlsZCByZXN1bHRzICAgICAgICAgICAtLT4KLQk8IS0tICAgdGFyZ2V0LmZvbGRlciAtIGRlc3RpbmF0aW9uIGZvbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8dGFyZ2V0IG5hbWU9InBvc3QuZ2F0aGVyLmJpbi5wYXJ0cyI+Ci0JPC90YXJnZXQ+Ci0KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8IS0tIFN0ZXBzIHRvIGRvIGJlZm9yZSB0aGUgdGFyZ2V0IGdhdGhlci5zb3VyY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tIEF2YWlsYWJsZSBwYXJhbWV0ZXJzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tICAgZGVzdGluYXRpb24udGVtcC5mb2xkZXIgLSBkZXN0aW5hdGlvbiBmb2xkZXIgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8dGFyZ2V0IG5hbWU9InByZS5nYXRoZXIuc291cmNlcyI+Ci0JPC90YXJnZXQ+Ci0KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8IS0tIFN0ZXBzIHRvIGRvIGFmdGVyIHRoZSB0YXJnZXQgZ2F0aGVyLnNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tIEF2YWlsYWJsZSBwYXJhbWV0ZXJzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tICAgZGVzdGluYXRpb24udGVtcC5mb2xkZXIgLSBkZXN0aW5hdGlvbiBmb2xkZXIgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8dGFyZ2V0IG5hbWU9InBvc3QuZ2F0aGVyLnNvdXJjZXMiPgotCTwvdGFyZ2V0PgotCi0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPCEtLSBTdGVwcyB0byBkbyBiZWZvcmUgdGhlIHRhcmdldCBnYXRoZXIubG9ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSBBdmFpbGFibGUgcGFyYW1ldGVycyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIGRlc3RpbmF0aW9uLnRlbXAuZm9sZGVyIC0gZGVzdGluYXRpb24gZm9sZGVyICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPHRhcmdldCBuYW1lPSJwcmUuZ2F0aGVyLmxvZ3MiPiAgICAgICAgCi0JPC90YXJnZXQ+Ci0KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8IS0tIFN0ZXBzIHRvIGRvIGFmdGVyIHRoZSB0YXJnZXQgZ2F0aGVyLmxvZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tIEF2YWlsYWJsZSBwYXJhbWV0ZXJzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tICAgZGVzdGluYXRpb24udGVtcC5mb2xkZXIgLSBkZXN0aW5hdGlvbiBmb2xkZXIgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLQk8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQk8dGFyZ2V0IG5hbWU9InBvc3QuZ2F0aGVyLmxvZ3MiPiAgICAgICAKLQk8L3RhcmdldD4KLQotCTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotCTwhLS0gU3RlcHMgdG8gZG8gYmVmb3JlIHRoZSB0YXJnZXQgY2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotCTwhLS0gQXZhaWxhYmxlIHBhcmFtZXRlcnMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotCTwhLS0gICBkZXN0aW5hdGlvbi50ZW1wLmZvbGRlciAtIGRlc3RpbmF0aW9uIGZvbGRlciAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotCTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotCTx0YXJnZXQgbmFtZT0icHJlLmNsZWFuIj4gICAgICAgICAgICAgIAotCTwvdGFyZ2V0PgotCi0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPCEtLSBTdGVwcyB0byBkbyBhZnRlciB0aGUgdGFyZ2V0IGNsZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSBBdmFpbGFibGUgcGFyYW1ldGVycyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIHBsdWdpbi5kZXN0aW5hdGlvbiAtIGZpbmFsIGRlc3RpbmF0aW9uIG9mIHRoZSBidWlsZCAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIGJ1aWxkLnJlc3VsdC5mb2xkZXIgLSByZXN1bHRzIG9mIHRoZSBjb21waWxhdGlvbiAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSAgIHRlbXAuZm9sZGVyIC0gdGVtcG9yYXJ5IGZvbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Ci0JPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0JPHRhcmdldCBuYW1lPSJwb3N0LmNsZWFuIj4gICAgICAgICAgICAgCi0JPC90YXJnZXQ+Ci0KLQk8dGFyZ2V0IG5hbWU9InByZS53c2V4cGxvcmVyLXByb3BlcnRpZXMuamFyIj4gICAgICAgICAgICAgIAotCQk8L3RhcmdldD4KLQk8dGFyZ2V0IG5hbWU9InBvc3Qud3NleHBsb3Jlci1wcm9wZXJ0aWVzLmphciI+ICAgICAgICAgICAgICAKLQkJCTwvdGFyZ2V0PgotCTx0YXJnZXQgbmFtZT0icG9zdC5jb21waWxlLndzZXhwbG9yZXItcHJvcGVydGllcy5qYXIiPiAgICAgICAgICAgICAgCi0JCQk8L3RhcmdldD4KLQotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvaWNvbnMvZXRvb2wxNi9sYXVuY2hfd3NfZXhwbG9yZXIuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvaWNvbnMvZXRvb2wxNi9sYXVuY2hfd3NfZXhwbG9yZXIuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWEwYmFhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL2ljb25zL2V0b29sMTYvbGF1bmNoX3dzX2V4cGxvcmVyLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwOTg2ZDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSMgMjAwNzA4MjAgICAxOTE1ODUgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIE1lc3NhZ2VzIGluIHBsdWdpbi54bWwuCi0jCi1QTFVHSU5fTkFNRT1XZWIgU2VydmljZXMgRXhwbG9yZXIKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotCi1YUF9XU0VfVFJBTlNQT1JUX1BST1ZJREVSPVdlYiBTZXJ2aWNlcyBFeHBsb3JlciBUcmFuc3BvcnQgUHJvdmlkZXIKLVNPQVBfVFJBTlNQT1JUX1BST1ZJREVSPURlZmF1bHQgU09BUCBUcmFuc3BvcnQgUHJvdmlkZXIKLQotIwotIyBNZXNzYWdlcyBmb3IgdGhlIGNsaWVudCB0eXBlIGV4dGVuc2lvbgotIwotV0VCU0VSVklDRUNMSUVOVFRZUEVfTkFNRV9XU0VYUExPUkVSPVN0dWJsZXNzIChXZWIgU2VydmljZXMgRXhwbG9yZXIpCi1UQVNLX0xBQkVMX0VYUExPUkVfV1NETF9VU0lOR19XU0U9RXhwbG9yZXIgV1NETCB1c2luZyBXZWIgU2VydmljZXMgRXhwbG9yZXIuCi0KLSMKLSMgTWVzc2FnZXMgZm9yIHRoZSBXU0V4cGxvcmVyIHR5cGUgZXh0ZW5zaW9uCi0jCi1NU0dfRVJST1JfTEFVTkNIX1dTRVhQTE9SRVI9SVdBQjAzNjZFIFVuYWJsZSB0byBsYXVuY2ggV2ViIFNlcnZpY2VzIEV4cGxvcmVyLgotTVNHX0VSUk9SX0xPQURfTEFVTkNIX09QVElPTlM9SVdBQjAzNjdFIFVuYWJsZSB0byBsb2FkIGxhdW5jaCBvcHRpb25zLgotTVNHX0JST0tFTl9WTV9ET0VTX05PVF9TVVBQT1JUX1VURi04PUJyb2tlbiBWTSBkb2VzIG5vdCBzdXBwb3J0IFVURi04LgotCi0jCi0jIE1lc3NhZ2VzIGZvciBwb3B1cCBhY3Rpb24gKFRlc3Qgd2l0aCBXZWIgU2VydmljZXMgRXhwbG9yZXIpCi0jCi1QT1BVUF9URVNUX1dTREw9VGVzdCB3aXRoIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcgotCi0jCi0jIFNPQVAgdHJhbnNwb3J0IG1lc3NhZ2VzCi0jCi1NU0dfRVJST1JfVU5TVVBQT1JURURfQklORElORz17MH0gYmluZGluZyBpcyB1bnN1cHBvcnRlZC4KLU1TR19FUlJPUl9VTlNVUFBPUlRFRF9UUkFOU1BPUlQ9ezB9IHRyYW5zcG9ydCBpcyB1bnN1cHBvcnRlZC4KLQotIwotIyBXZWJTZXJ2aWNlUHVibGlzaFBhZ2UKLSMKLVRPT0xUSVBfTEFVTkNIX1dTX0VYUExPUkVSPUxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyCi1DT01NQU5EX0xBVU5DSF9XU19FWFBMT1JFUj1MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcgotCi0jCi0jIFBvcC11cCBhY3Rpb25zCi0jCi1NRU5VX1JVTj0mUnVuCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3BsdWdpbi54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDNjZTAyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLQotPHBsdWdpbj4KLSAgIDxleHRlbnNpb24tcG9pbnQgaWQ9IndzZVRyYW5zcG9ydFByb3ZpZGVyIiBuYW1lPSIlWFBfV1NFX1RSQU5TUE9SVF9QUk9WSURFUiIgc2NoZW1hPSJzY2hlbWEvd3NlVHJhbnNwb3J0UHJvdmlkZXIuZXhzZCIvPgotCi0gICAgCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBFeHRlbnNpb24gcG9pbnQ6IEVjbGlwc2UgUG9wdXAgQWN0aW9uIChvcmcuZWNsaXBzZS51aS5wb3B1cE1lbnVzKSAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkucG9wdXBNZW51cyI+Ci0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqLndzZGwiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLnVpLmFjdGlvbi5XU0RMRmlsZU1lbnUuZmlsZS53c2RsIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlUE9QVVBfVEVTVF9XU0RMIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wb3B1cC5Qb3B1cFRlc3RXU0RMIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9Im9yZy5lY2xpcHNlLndzdC53cy51aS53ZWJzZXJ2aWNlLmNhdGVnb3J5LnBvcHVwTWVudS9wb3B1cEFjdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBvcHVwLlBvcHVwVGVzdFdTREwiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9Iioud3NpbCIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MudWkuYWN0aW9uLldTRExGaWxlTWVudS5maWxlLndzaWwiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9URVNUX1dTREwiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBvcHVwLlBvcHVwVGVzdFdTSUwiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0ib3JnLmVjbGlwc2Uud3N0LndzLnVpLndlYnNlcnZpY2UuY2F0ZWdvcnkucG9wdXBNZW51L3BvcHVwQWN0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucG9wdXAuUG9wdXBUZXN0V1NJTCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbCIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9IioiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLnVpLmFjdGlvbi5XU0RMRmlsZU1lbnUud3NkbHJlcyI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iJVBPUFVQX1RFU1RfV1NETCIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucG9wdXAuUG9wdXBUZXN0V1NETCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJhZGRpdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBvcHVwLlBvcHVwVGVzdFdTREwiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlIgotICAgICAgICAgICAgbmFtZUZpbHRlcj0iKiIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MudWkuYWN0aW9uLldTRExGaWxlTWVudS5zZXJ2aWNlIgotICAgICAgICAgICAgYWRhcHRhYmxlPSJ0cnVlIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlUE9QVVBfVEVTVF9XU0RMIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wb3B1cC5Qb3B1cFRlc3RXU0RMIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucG9wdXAuUG9wdXBUZXN0V1NETCI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotICAgPC9leHRlbnNpb24+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyLndzZVRyYW5zcG9ydFByb3ZpZGVyIj4KLSAgICAgIDxzb2FwVHJhbnNwb3J0UHJvdmlkZXIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC50cmFuc3BvcnQuU09BUFRyYW5zcG9ydFByb3ZpZGVyIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci5zb2FwVHJhbnNwb3J0UHJvdmlkZXIiCi0gICAgICAgICAgICBuYW1lPSIlU09BUF9UUkFOU1BPUlRfUFJPVklERVIiCi0gICAgICAgICAgICBuYW1lc3BhY2VVUkk9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0gICAgICAgICAgICB0cmFuc3BvcnRVUkk9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgPC9leHRlbnNpb24+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuZXF1aW5veC5odHRwLnJlZ2lzdHJ5Lmh0dHBjb250ZXh0cyI+Ci0gICAgICA8aHR0cGNvbnRleHQKLSAgICAgICAgICAgIGlkPSJ3c2UiPgotICAgICAgICAgPHJlc291cmNlLW1hcHBpbmcKLSAgICAgICAgICAgICAgIHBhdGg9Ii93c2V4cGxvcmVyIj4KLSAgICAgICAgIDwvcmVzb3VyY2UtbWFwcGluZz4KLSAgICAgIDwvaHR0cGNvbnRleHQ+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS5lcXVpbm94Lmh0dHAucmVnaXN0cnkucmVzb3VyY2VzIj4KLSAgICAgIDxyZXNvdXJjZQotICAgICAgICAgICAgYWxpYXM9Ii8iCi0gICAgICAgICAgICBiYXNlLW5hbWU9Ii8iCi0gICAgICAgICAgICBodHRwY29udGV4dElkPSJ3c2UiPgotICAgICAgPC9yZXNvdXJjZT4KLSAgICAgIDxzZXJ2aWNlU2VsZWN0b3IKLSAgICAgICAgICAgIGZpbHRlcj0iKG90aGVyLmluZm89b3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyKSI+Ci0gICAgICA8L3NlcnZpY2VTZWxlY3Rvcj4KLSAgIDwvZXh0ZW5zaW9uPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLmVxdWlub3guaHR0cC5yZWdpc3RyeS5zZXJ2bGV0cyI+Ci0gICAgICA8c2VydmxldAotICAgICAgICAgICAgYWxpYXM9Ii8qLmpzcCIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5lcXVpbm94LmpzcC5qYXNwZXIucmVnaXN0cnkuSlNQRmFjdG9yeTovIgotICAgICAgICAgICAgaHR0cGNvbnRleHRJZD0id3NlIj4KLSAgICAgIDwvc2VydmxldD4KLSAgICAgIDxzZXJ2aWNlU2VsZWN0b3IKLSAgICAgICAgICAgIGZpbHRlcj0iKG90aGVyLmluZm89b3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyKSI+Ci0gICAgICA8L3NlcnZpY2VTZWxlY3Rvcj4KLSAgIDwvZXh0ZW5zaW9uPgotICAgCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkucGVyc3BlY3RpdmVFeHRlbnNpb25zIj4KLSAgICAgIDxwZXJzcGVjdGl2ZUV4dGVuc2lvbgotICAgICAgICAgICAgdGFyZ2V0SUQ9Im9yZy5lY2xpcHNlLmpzdC5qMmVlLkoyRUVQZXJzcGVjdGl2ZSI+Ci0gICAgICAgICA8YWN0aW9uU2V0Ci0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyLmV4cGxvcmVyIj4KLSAgICAgICAgIDwvYWN0aW9uU2V0PgotICAgICAgPC9wZXJzcGVjdGl2ZUV4dGVuc2lvbj4KLSAgICAgIAotICAgICAgPHBlcnNwZWN0aXZlRXh0ZW5zaW9uCi0gICAgICAgICAgICB0YXJnZXRJRD0ib3JnLmVjbGlwc2Uud3N0LndlYi51aS53ZWJEZXZQZXJzcGVjdGl2ZSI+Ci0gICAgICAgICA8YWN0aW9uU2V0Ci0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyLmV4cGxvcmVyIj4KLSAgICAgICAgIDwvYWN0aW9uU2V0PgotICAgICAgPC9wZXJzcGVjdGl2ZUV4dGVuc2lvbj4KLSAgIDwvZXh0ZW5zaW9uPgotICAgCi0gICAKLSAgICA8IS0tIE1haW4gTWVudSBBY3Rpb25zIC0tPgotCi0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS51aS5hY3Rpb25TZXRzIj4KLQotICAgICAgPGFjdGlvblNldAotICAgICAgICAgICAgbGFiZWw9IiVDT01NQU5EX0xBVU5DSF9XU19FWFBMT1JFUiIKLSAgICAgICAgICAgIHZpc2libGU9ImZhbHNlIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci5leHBsb3JlciI+Ci0gICAgICAgICA8bWVudQotICAgICAgICAgICAgICAgbGFiZWw9IiVNRU5VX1JVTiIKLSAgICAgICAgICAgICAgIHBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS51aS5ydW4iPgotICAgICAgICAgICAgPHNlcGFyYXRvciBuYW1lPSJleHBsb3JlciI+Ci0gICAgICAgICAgICA8L3NlcGFyYXRvcj4KLSAgICAgICAgIDwvbWVudT4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQ09NTUFORF9MQVVOQ0hfV1NfRVhQTE9SRVIiCi0gICAgICAgICAgICAgICBpY29uPSJpY29ucy9ldG9vbDE2L2xhdW5jaF93c19leHBsb3Jlci5naWYiCi0gICAgICAgICAgICAgICB0b29sdGlwPSIlVE9PTFRJUF9MQVVOQ0hfV1NfRVhQTE9SRVIiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLmFjdGlvbi5MYXVuY2hXU0VBY3Rpb24iCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0ib3JnLmVjbGlwc2UudWkucnVuL2V4cGxvcmVyIgotICAgICAgICAgICAgICAgdG9vbGJhclBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuYWN0aW9uLkxhdW5jaFdTRUFjdGlvbiI+Ci0gICAgICAgIDwvYWN0aW9uPgotICAgICA8L2FjdGlvblNldD4KLQotICAgPC9leHRlbnNpb24+Ci0gICAKLTwvcGx1Z2luPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvcHJvcGVydGllcy9mYXZvcml0ZXNfZGVmYXVsdC53c2lsIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvcHJvcGVydGllcy9mYXZvcml0ZXNfZGVmYXVsdC53c2lsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmU4YjM4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3Byb3BlcnRpZXMvZmF2b3JpdGVzX2RlZmF1bHQud3NpbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08aW5zcGVjdGlvbiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwMS8xMC9pbnNwZWN0aW9uLyIKLSAgeG1sbnM6d3NpbHdzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDEvMTAvaW5zcGVjdGlvbi93c2RsLyIKLSAgeG1sbnM6d3NpbHVkZGk9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDEvMTAvaW5zcGVjdGlvbi91ZGRpLyIKLSAgeG1sbnM6dWRkaT0idXJuOnVkZGktb3JnOmFwaSI+Ci0gIDxhYnN0cmFjdCB4bWw6bGFuZz0iZW4tVVMiPnY1XzBfMV8wPC9hYnN0cmFjdD4KLQotICAgCi0KLSAKLQotICA8bGluayByZWZlcmVuY2VkTmFtZXNwYWNlPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDAxLzEwL2luc3BlY3Rpb24vIiBsb2NhdGlvbj0iaHR0cDovL3d3dy54bWV0aG9kcy5jb20vaW5zcGVjdGlvbi53c2lsIi8+Ci08L2luc3BlY3Rpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zY2hlbWEvd3NlVHJhbnNwb3J0UHJvdmlkZXIuZXhzZCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NjaGVtYS93c2VUcmFuc3BvcnRQcm92aWRlci5leHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzJlZWYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NjaGVtYS93c2VUcmFuc3BvcnRQcm92aWRlci5leHNkCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+Ci08IS0tIFNjaGVtYSBmaWxlIHdyaXR0ZW4gYnkgUERFIC0tPgotPHNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Im9yZy5lY2xpcHNlLndzdC53cy5leHBsb3JlciI+Ci08YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2NoZW1hIHBsdWdpbj0ib3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyIiBpZD0id3NlVHJhbnNwb3J0UHJvdmlkZXIiIG5hbWU9IldlYiBTZXJ2aWNlcyBFeHBsb3JlciBUcmFuc3BvcnQgUHJvdmlkZXIiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgW0VudGVyIGRlc2NyaXB0aW9uIG9mIHRoaXMgZXh0ZW5zaW9uIHBvaW50Ll0KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaW9uIj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxzZXF1ZW5jZSBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ic29hcFRyYW5zcG9ydFByb3ZpZGVyIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwb2ludCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBBIGZ1bGx5IHF1YWxpZmllZCBpZGVudGlmaWVyIG9mIHRoZSB0YXJnZXQgZXh0ZW5zaW9uIHBvaW50Ci0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgQW4gb3B0aW9uYWwgaWRlbnRpZmllciBmb3IgdGhpcyBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIEFuIG9wdGlvbmFsIG5hbWUgdGhpcyBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIHRyYW5zbGF0YWJsZT0idHJ1ZSIvPgotICAgICAgICAgICAgICAgPC9hcHBJbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJzb2FwVHJhbnNwb3J0UHJvdmlkZXIiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZXh0ZW5zaW9uIHBvaW50IGVudHJ5IGFsbG93cyBhbiBleHRlbmRlciB0byBwbHVnIGluIGEgbmV3IGZhY3RvcnkgZm9yIGNyZWF0aW5nIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBUcmFuc3BvcnQgaW5zdGFuY2VzLiAgVGhlIElTT0FQVHJhbnBvcnQgaXMgdXNlZCBieSB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGZvciBpbnZva2luZyB3ZWIgc2VydmljZXMgb3BlcmF0aW9ucyB0aGF0IHVzZXMgdGhlIFNPQVAgbWVzc2FnZSBwcm90b2NvbC4KLSAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhpcyBjbGFzcyBtdXN0IGltcGxlbWVudCB0aGUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUFRyYW5zcG9ydFByb3ZpZGVyIGludGVyZmFjZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIGtpbmQ9ImphdmEiIGJhc2VkT249Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBUcmFuc3BvcnRQcm92aWRlciIvPgotICAgICAgICAgICAgICAgPC9hcHBJbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgaWQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIHNvYXBUcmFuc3BvcnRQcm92aWRlciBlbGVtZW50LgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhpcyBzb2FwVHJhbnNwb3J0UHJvdmlkZXIgZWxlbWVudC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIHRyYW5zbGF0YWJsZT0idHJ1ZSIvPgotICAgICAgICAgICAgICAgPC9hcHBJbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgbmFtZXNwYWNlIFVSSSBvZiB0aGUgc29hcDpiaW5kaW5nIGVsZW1lbnQgdGhhdCB0aGlzIHRyYW5zcG9ydCBwcm92aWRlciBjbGFpbXMgc3VwcG9ydCBmb3IuICBGb3IgZXhhbXBsZSwgaWYgdGhpcyB0cmFuc3BvcnQgcHJvdmlkZXIgc3VwcG9ydHMgdGhlIFNPQVAgMS4xIGJpbmRpbmcsIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB3b3VsZCBiZSBodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvLiAgSWYgdW5zcGVjaWZpZWQsIHRoaXMgdHJhbnNwb3J0IHByb3ZpZGVyIGNsYWltcyBzdXBwb3J0IGZvciBhbGwgU09BUCBiaW5kaW5ncy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0cmFuc3BvcnRVUkkiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIHRyYW5zcG9ydCBwcm90b2NvbCBVUkkgb2YgdGhlIHNvYXA6YmluZGluZyBlbGVtZW50IHRoYXQgdGhpcyB0cmFuc3BvcnQgcHJvdmlkZXIgY2xhaW1zIHN1cHBvcnQgZm9yLiAgRm9yIGV4YW1wbGUsIGlmIHRoaXMgdHJhbnNwb3J0IHByb3ZpZGVyIHN1cHBvcnRzIFNPQVAgb3ZlciBIVFRQLCB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgd291bGQgYmUgaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwLiAgSWYgdW5zcGVjaWZpZWQsIHRoaXMgdHJhbnNwb3J0IHByb3ZpZGVyIGNsYWltcyBzdXBwb3J0IGZvciBhbGwgdHJhbnNwb3J0IHByb3RvY29scy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0ic2luY2UiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgJmx0O2ImZ3Q7VGhpcyBleHRlbnNpb24gcG9pbnQgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBleHBlY3RlZCB0byBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sgZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4gKHJlcGVhdGVkbHkpIGFzIHRoZSBBUEkgZXZvbHZlcy4mbHQ7L2ImZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFtFbnRlciBleHRlbnNpb24gcG9pbnQgdXNhZ2UgZXhhbXBsZSBoZXJlLl0KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpSW5mbyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBbRW50ZXIgQVBJIGluZm9ybWF0aW9uIGhlcmUuXQotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJpbXBsZW1lbnRhdGlvbiIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBbRW50ZXIgaW5mb3JtYXRpb24gYWJvdXQgc3VwcGxpZWQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBleHRlbnNpb24gcG9pbnQuXQotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJjb3B5cmlnaHQiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiZsdDticiZndDsKLUFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgCi1hdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgCi10aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAmbHQ7YQotaHJlZj0mcXVvdDtodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCZxdW90OyZndDtodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCZsdDsvYSZndDsKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotPC9zY2hlbWE+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zZXJ2bGV0YXBpL29yZy5lY2xpcHNlLmVxdWlub3guc2VydmxldC5hcGlfMS4wLjAudjIwMDYwMjA2LmphciBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NlcnZsZXRhcGkvb3JnLmVjbGlwc2UuZXF1aW5veC5zZXJ2bGV0LmFwaV8xLjAuMC52MjAwNjAyMDYuamFyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGFkNTc3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NlcnZsZXRhcGkvb3JnLmVjbGlwc2UuZXF1aW5veC5zZXJ2bGV0LmFwaV8xLjAuMC52MjAwNjAyMDYuamFyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9KZXR0eVJ1bm5hYmxlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL0pldHR5UnVubmFibGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM3NDJjOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL0pldHR5UnVubmFibGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3JlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmhlbHAuaW50ZXJuYWwuYXBwc2VydmVyLkFwcHNlcnZlclBsdWdpbjsKLQotCi1wdWJsaWMgY2xhc3MgSmV0dHlSdW5uYWJsZSB7Ci0KLQlwcml2YXRlIHN0YXRpYyBKZXR0eVJ1bm5hYmxlIGpldHR5UnVubmFibGVfOwotCi0JcHJpdmF0ZSBKZXR0eVJ1bm5hYmxlKCkgewotCX0KLQotCXB1YmxpYyBzdGF0aWMgSmV0dHlSdW5uYWJsZSBnZXRKZXR0eVJ1bm5hYmxlKCkgewotCQlpZiAoamV0dHlSdW5uYWJsZV8gPT0gbnVsbCkgewotCQkJamV0dHlSdW5uYWJsZV8gPSBuZXcgSmV0dHlSdW5uYWJsZSgpOwotCQkJamV0dHlSdW5uYWJsZV8uaW5pdCgpOwotCQl9Ci0JCXJldHVybiBqZXR0eVJ1bm5hYmxlXzsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBpc0pldHR5U3RhcnRlZCgpIHsKLQkJdHJ5IHsKLQkJCXJldHVybiBBcHBzZXJ2ZXJQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldEFwcFNlcnZlcigpLmlzUnVubmluZygpOwotCQl9IGNhdGNoIChUaHJvd2FibGUgdCkgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JfQotCi0JcHVibGljIGludCBnZXRKZXR0eVBvcnQoKSB7Ci0JCXJldHVybiBXZWJhcHBNYW5hZ2VyLmdldFBvcnQoKTsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldEpldHR5SG9zdCgpIHsKLQkJcmV0dXJuIFdlYmFwcE1hbmFnZXIuZ2V0SG9zdCgpOwotCX0KLQotCQotCXByaXZhdGUgdm9pZCBpbml0KCkgewotCQl0cnkgewotCQkJV2ViYXBwTWFuYWdlci5zdGFydCgid3NlIik7Ci0JCX0gY2F0Y2ggKFRocm93YWJsZSB0KSB7Ci0JCX0KLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL0xhdW5jaE9wdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9MYXVuY2hPcHRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY2NmVkZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL0xhdW5jaE9wdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3JlcjsKLQotLyoqCi0gKiBAYXV0aG9yIGNicmVhbGV5QGNhLmlibS5jb20KLSAqIAotICogVGhpcyBzaW1wbGUgY2xhc3MgaXMgdXNlZCB0byBob2xkIGEgc2luZ2xlIFdlYiBTZXJ2aWNlcwotICogRXhwbG9yZXIgbGF1bmNoIG9wdGlvbiBwcm9wZXJ0eSBhbmQgaXRzIHZhbHVlLiBBbGxvd2VkCi0gKiBsYXVuY2ggb3B0aW9uIHByb3BlcnRpZXMgYXJlIGRlZmluZWQgYnkKLSAqIDxjb2RlPntAbGluayBMYXVuY2hPcHRpb25zfTwvY29kZT4uCi0gKi8KLXB1YmxpYyBjbGFzcyBMYXVuY2hPcHRpb24gewotCXByaXZhdGUgU3RyaW5nIGtleV87Ci0KLQlwcml2YXRlIFN0cmluZyBvcHRpb25fOwotCi0JLyoKLQkgKiBDb25zdHJ1Y3RzIGEgbmV3IGxhdW5jaCBvcHRpb24gd2l0aCB0aGUgZ2l2ZW4KLQkgKiBwcm9wZXJ0eSBuYW1lIGFuZCB2YWx1ZS4gCi0JICovCi0JcHVibGljIExhdW5jaE9wdGlvbihTdHJpbmcga2V5LCBTdHJpbmcgb3B0aW9uKSB7Ci0JCWtleV8gPSBrZXk7Ci0JCW9wdGlvbl8gPSBvcHRpb247Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcHJvcGVydHkgbmFtZSBvZiB0aGlzIGxhdW5jaCBvcHRpb24uCi0JICogQHJldHVybiBUaGUgcHJvcGVydHkgbmFtZS4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldEtleSgpIHsKLQkJcmV0dXJuIGtleV87Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUgb2YgdGhpcyBsYXVuY2ggb3B0aW9uLgotCSAqIEByZXR1cm4gVGhlIHByb3BlcnR5IHZhbHVlLgotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0T3B0aW9uKCkgewotCQlyZXR1cm4gb3B0aW9uXzsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL0xhdW5jaE9wdGlvbnMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvTGF1bmNoT3B0aW9ucy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTViOTY4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvTGF1bmNoT3B0aW9ucy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwNTA2ICAgMjAyOTQ1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEFsbG93IFdTRSB0byBiZSBsYXVuY2hlZCBmcm9tIGEgV1NJTCBmaWxlLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyOwotCi0vKioKLSAqIEBhdXRob3IgY2JyZWFsZXlAY2EuaWJtLmNvbQotICogCi0gKiBUaGlzIGNsYXNzIGRlZmluZXMgdGhlIHByb3BlcnR5IG5hbWVzIHVuZGVyc3Rvb2QgYnkgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcgotICogYW5kIHVzZWQgdG8gY29uZmlndXJlIGl0J3MgaW5pdGlhbCBhcHBlYXJhbmNlIGFuZCBiZWhhdmlvdXIgYXQgdGhlIHRpbWUgaXQgaXMKLSAqIGxhdW5jaGVkLgotICogQHNlZSBMYXVuY2hPcHRpb24KLSAqLwotcHVibGljIGNsYXNzIExhdW5jaE9wdGlvbnMgewotCS8vIEdlbmVyYWwgcHVycG9zZSBwcmVsb2FkIGNvbnN0YW50cwotCQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNUQVRFX0xPQ0FUSU9OID0gInN0YXRlTG9jYXRpb24iOwotCQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfRkFWT1JJVEVTX0xPQ0FUSU9OID0gImRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbiI7Ci0JCi0JLy8gV1NETCBQYWdlIHByZWxvYWQgY29uc3RhbnRzCi0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXU0RMX1VSTCA9ICJ3c2RsIjsKLQkKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXU0lMX1VSTCA9ICJ3c2lsdXJsIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdFQl9TRVJWSUNFX0VORFBPSU5UID0gIndlYlNlcnZpY2VFbmRwb2ludCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVJWSUNFX1FOQU1FX1NUUklORyA9ICJzZXJ2aWNlUU5hbWVTdHJpbmciOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQklORElOR19OQU1FX1NUUklORyA9ICJiaW5kaW5nTmFtZVN0cmluZyI7Ci0KLQkvLyBVRERJIFBhZ2UgcHJlbG9hZCBjb25zdGFudHMKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElOUVVJUllfVVJMID0gImlucXVpcnkiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFVCTElTSF9VUkwgPSAicHVibGlzaCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVJWSUNFX05BTUUgPSAic2VydmljZU5hbWUiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VSVklDRV9LRVkgPSAic2VydmljZUtleSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDQVRFR09SSUVTX0RJUkVDVE9SWSA9ICJjYXRlZ29yaWVzRGlyZWN0b3J5IjsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvTGF1bmNoV2l6YXJkUnVubmFibGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvTGF1bmNoV2l6YXJkUnVubmFibGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ4YjY5Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL0xhdW5jaFdpemFyZFJ1bm5hYmxlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLldpemFyZERpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuRHluYW1pY1dpemFyZDsKLQotcHVibGljIGNsYXNzIExhdW5jaFdpemFyZFJ1bm5hYmxlIGV4dGVuZHMgVGhyZWFkIGltcGxlbWVudHMgUnVubmFibGUgewotCXByaXZhdGUgU3RyaW5nIGlkOwotCi0JcHJpdmF0ZSBTdHJpbmcgd3NkbFVSTDsKLQotCXByaXZhdGUgYm9vbGVhbiBmaW5pc2g7Ci0KLQlwdWJsaWMgTGF1bmNoV2l6YXJkUnVubmFibGUoU3RyaW5nIGlkLCBTdHJpbmcgd3NkbFVSTCkgewotCQl0aGlzLmlkID0gaWQ7Ci0JCXRoaXMud3NkbFVSTCA9ICh3c2RsVVJMICE9IG51bGwpID8gd3NkbFVSTCA6ICIiOwotCQlmaW5pc2ggPSBmYWxzZTsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBpc0ZpbmlzaCgpIHsKLQkJcmV0dXJuIGZpbmlzaDsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBydW4oKSB7Ci0JCXRyeSB7Ci0JCQlEeW5hbWljV2l6YXJkIHdpemFyZCA9IG5ldyBEeW5hbWljV2l6YXJkKCk7Ci0JCQl3aXphcmQuc2V0SW5pdGlhbERhdGEoaWQpOwotCQkJSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsID0gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24od3NkbFVSTCk7Ci0JCQl3aXphcmQuaW5pdChudWxsLCBzZWwpOwotCQkJV2l6YXJkRGlhbG9nIHdkID0gbmV3IFdpemFyZERpYWxvZyhuZXcgU2hlbGwoRGlzcGxheS5nZXREZWZhdWx0KCksCi0JCQkJCVNXVC5BUFBMSUNBVElPTl9NT0RBTCksIHdpemFyZCk7Ci0JCQl3ZC5vcGVuKCk7Ci0JCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCX0gZmluYWxseSB7Ci0JCQlmaW5pc2ggPSB0cnVlOwotCQl9Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9MYXVuY2hXaXphcmRUYXNrLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL0xhdW5jaFdpemFyZFRhc2suamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAyMTUzNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL0xhdW5jaFdpemFyZFRhc2suamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dURXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci0KLXB1YmxpYyBjbGFzcyBMYXVuY2hXaXphcmRUYXNrIHsKLQkvLyBzaW5nbGV0b24KLQlwcml2YXRlIHN0YXRpYyBMYXVuY2hXaXphcmRUYXNrIHRhc2tfOwotCi0JLy8gdGhlIHNoZWxsIGZvciB0aGUgd2l6YXJkIHRvIGJlIGxhdW5jaGVkCi0JcHJpdmF0ZSBTaGVsbCBzaGVsbF87Ci0KLQkvLyB0aGUgTGF1bmNoV2l6YXJkUnVubmFibGUgdGhhdCBpcyBjdXJyZW50bHkgcnVubmluZwotCXByaXZhdGUgTGF1bmNoV2l6YXJkUnVubmFibGUgcnVubmFibGVfOwotCi0JcHJpdmF0ZSBMYXVuY2hXaXphcmRUYXNrKFNoZWxsIHNoZWxsKSB7Ci0JCXNoZWxsXyA9IHNoZWxsOwotCQlydW5uYWJsZV8gPSBudWxsOwotCX0KLQotCXB1YmxpYyBzdGF0aWMgTGF1bmNoV2l6YXJkVGFzayBnZXRJbnN0YW5jZSgpIHsKLQkJaWYgKHRhc2tfID09IG51bGwpCi0JCQl0YXNrXyA9IG5ldyBMYXVuY2hXaXphcmRUYXNrKFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkKLQkJCQkJLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvdygpLmdldFNoZWxsKCkpOwotCQlyZXR1cm4gdGFza187Ci0JfQotCi0JcHVibGljIHZvaWQgYXN5bmNFeGVjKFJ1bm5hYmxlIHJ1bm5hYmxlKSB0aHJvd3MgU1dURXhjZXB0aW9uIHsKLQkJc2hlbGxfLmdldERpc3BsYXkoKS5hc3luY0V4ZWMocnVubmFibGUpOwotCX0KLQotCXB1YmxpYyBib29sZWFuIGNoZWNrQW5kQXN5bmNFeGVjKExhdW5jaFdpemFyZFJ1bm5hYmxlIHJ1bm5hYmxlKSB7Ci0JCXRyeSB7Ci0JCQlpZiAoIWdldElzRXhlY3V0aW5nKCkpIHsKLQkJCQlhc3luY0V4ZWMocnVubmFibGUpOwotCQkJCXJ1bm5hYmxlXyA9IHJ1bm5hYmxlOwotCQkJCXJldHVybiB0cnVlOwotCQkJfSBlbHNlCi0JCQkJcmV0dXJuIGZhbHNlOwotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JfQotCi0JcHVibGljIGJvb2xlYW4gZ2V0SXNFeGVjdXRpbmcoKSB7Ci0JCWlmIChydW5uYWJsZV8gIT0gbnVsbCkgewotCQkJYm9vbGVhbiBpc0ZpbmlzaCA9IHJ1bm5hYmxlXy5pc0ZpbmlzaCgpOwotCQkJaWYgKGlzRmluaXNoKQotCQkJCXJ1bm5hYmxlXyA9IG51bGw7Ci0JCQlyZXR1cm4gIWlzRmluaXNoOwotCQl9IGVsc2UKLQkJCXJldHVybiBmYWxzZTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL1dTRXhwbG9yZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvV1NFeHBsb3Jlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2Y1ZjYwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvV1NFeHBsb3Jlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjk0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDcyMSAgIDE1MTQwOSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFIGRvZXMgbm90IG9wZW4gaW4gZXh0ZXJuYWwgYnJvd3NlciBvbiBSSAotICogMjAwNjA4MDIgICAxNTA0Mjggc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA2MTIxOSAgIDE2ODYyMCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFIGRvZXMgbm90IG9wZW4gaW4gZXh0ZXJuYWwgYnJvd3NlciBvbiBMaW51eAotICogMjAwNzAyMjAgICAxNjg2MjAgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRSBkb2VzIG5vdCBvcGVuIGluIGV4dGVybmFsIGJyb3dzZXIgb24gTGludXggKGNvbnQuKQotICogMjAwODA0MzAgICAyMjk2OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRSBkb2VzIG5vdCByZWFjdCB0byBpbnRlcm5hbC9leHRlcm5hbCBXZWIgYnJvd3NlciBwcmVmZXJlbmNlIGNoYW5nZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3JlcjsKLQotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEubmV0LlVSTENvbm5lY3Rpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMRW5jb2RlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5wcmVmZXJlbmNlcy5JUHJlZmVyZW5jZXNTZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmJyb3dzZXIuSVdlYkJyb3dzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuYnJvd3Nlci5JV29ya2JlbmNoQnJvd3NlclN1cHBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsdWdpbi5FeHBsb3JlclBsdWdpbjsKLQotcHVibGljIGNsYXNzIFdTRXhwbG9yZXIgewotCXByaXZhdGUgc3RhdGljIFdTRXhwbG9yZXIgaW5zdGFuY2U7Ci0KLQlwcml2YXRlIHN0YXRpYyBpbnQgbGF1bmNoT3B0aW9uc0tleV8gPSAwOwotCi0JcHJpdmF0ZSBJV2ViQnJvd3NlciBpbnRlcm5hbEJyb3dzZXJfID0gbnVsbDsKLQkKLQlwdWJsaWMgV1NFeHBsb3JlcigpIHsKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIFdTRXhwbG9yZXIgZ2V0SW5zdGFuY2UoKSB7Ci0JCWlmIChpbnN0YW5jZSA9PSBudWxsKSB7Ci0JCQlpbnN0YW5jZSA9IG5ldyBXU0V4cGxvcmVyKCk7Ci0JCX0KLQkJcmV0dXJuIGluc3RhbmNlOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0Q29udGV4dE5hbWUoKSB7Ci0JCXJldHVybiAid3NleHBsb3JlciI7Ci0JfQotCi0JcHVibGljIFN0cmluZyBnZXRQYXJlbnRQbHVnaW5JRCgpIHsKLQkJcmV0dXJuIEV4cGxvcmVyUGx1Z2luLklEOwotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0V2ViQXBwTG9jYXRpb24oKSB7Ci0JCXJldHVybiAid3NleHBsb3JlciI7Ci0JfQotCi0JcHVibGljIFN0cmluZyBnZXRXZWxjb21lVVJMKCkgewotCQlyZXR1cm4gIndzZXhwbG9yZXIuanNwIjsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldExhdW5jaE9wdGlvblJlZ2lzdHJ5VVJMKCkgewotCQlyZXR1cm4gImxhdW5jaF9vcHRpb25zX3JlZ2lzdHJ5LmpzcCI7Ci0JfQotCi0JcHVibGljIFN0cmluZyBnZXRCYXNlVVJMKCkgewotCQlTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0JCSAgCi0JCQotCQlzYi5hcHBlbmQoImh0dHA6Ly8iKTsgCi0JCXNiLmFwcGVuZChKZXR0eVJ1bm5hYmxlLmdldEpldHR5UnVubmFibGUoKS5nZXRKZXR0eUhvc3QoKSk7IAotCQlzYi5hcHBlbmQoIjoiKTsKLQkJc2IuYXBwZW5kKEpldHR5UnVubmFibGUuZ2V0SmV0dHlSdW5uYWJsZSgpLmdldEpldHR5UG9ydCgpKTsKLQkJc2IuYXBwZW5kKCIvIik7Ci0JCXNiLmFwcGVuZCgid3NlIik7Ci0JCXNiLmFwcGVuZCgiLyIpOwotCQlzYi5hcHBlbmQoZ2V0Q29udGV4dE5hbWUoKSk7Ci0JCXNiLmFwcGVuZCgiLyIpOwotCQlyZXR1cm4gc2IudG9TdHJpbmcoKTsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldE1ldGFkYXRhRGlyZWN0b3J5KCkgewotCQkvLyA8d29ya3NwYWNlPi8ubWV0YWRhdGEvLnBsdWdpbnMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyLyAobm90ZQotCQkvLyB0aGUgdHJhaWxpbmcgc2VwYXJhdG9yKS4KLQkJcmV0dXJuIEV4cGxvcmVyUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0UGx1Z2luU3RhdGVMb2NhdGlvbigpOwotCX0KLQotCXB1YmxpYyBJU3RhdHVzIGxhdW5jaChJV29ya2JlbmNoIHdiLCBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWwsCi0JCUxhdW5jaE9wdGlvbltdIG9wdGlvbnMsIGJvb2xlYW4gZm9yY2VMYXVuY2hPdXRzaWRlSURFKSB7Ci0JCS8vIGxhdW5jaE9wdGlvbktleQotCQlpbnQgbGF1bmNoT3B0aW9uS2V5ID0gZ2V0TGF1bmNoT3B0aW9uc0tleSgpOwotCQkvLyBXZWIgU2VydmljZXMgRXhwbG9yZXIgVVJMCi0JCVN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLQkJc2IuYXBwZW5kKGdldEJhc2VVUkwoKSk7Ci0JCXNiLmFwcGVuZChnZXRXZWxjb21lVVJMKCkpOwotCQlzYi5hcHBlbmQoIj8iKTsKLQkJaWYgKG9wdGlvbnMgIT0gbnVsbCAmJiBvcHRpb25zLmxlbmd0aCA+IDApIHsKLQkJCVN0cmluZyBlbmNvZGVkSUQgPSBudWxsOwotCQkJdHJ5IHsKLQkJCQllbmNvZGVkSUQgPSBVUkxFbmNvZGVyLmVuY29kZShFeHBsb3JlclBsdWdpbi5JRCwKLQkJCQkJCUV4cGxvcmVyUGx1Z2luLkNIQVJTRVQpOwotCQkJfSBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKSB7Ci0JCQkJcmV0dXJuIG5ldyBTdGF0dXMoCi0JCQkJCQlJU3RhdHVzLkVSUk9SLAotCQkJCQkJRXhwbG9yZXJQbHVnaW4uSUQsCi0JCQkJCQkwLAotCQkJCQkJRXhwbG9yZXJQbHVnaW4KLQkJCQkJCQkJLmdldE1lc3NhZ2UoIiVNU0dfQlJPS0VOX1ZNX0RPRVNfTk9UX1NVUFBPUlRfVVRGLTgiKSwKLQkJCQkJCWUpOwotCQkJfQotCQkJc2IuYXBwZW5kKGVuY29kZWRJRCk7Ci0JCQlzYi5hcHBlbmQoIj0iKTsKLQkJCXNiLmFwcGVuZChsYXVuY2hPcHRpb25LZXkpOwotCQl9Ci0JCS8vIGxhdW5jaCBXZWIgU2VydmljZXMgRXhwbG9yZXIKLQkJdHJ5IHsKLQkJCUlXb3JrYmVuY2hCcm93c2VyU3VwcG9ydCBicm93c2VyU3VwcG9ydCA9IEV4cGxvcmVyUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0V29ya2JlbmNoKCkuZ2V0QnJvd3NlclN1cHBvcnQoKTsKLQkJCUlXZWJCcm93c2VyIGJyb3dzZXIgPSBudWxsOwotCQkJCi0JCQlJUHJlZmVyZW5jZXNTZXJ2aWNlIHBzID0gUGxhdGZvcm0uZ2V0UHJlZmVyZW5jZXNTZXJ2aWNlKCk7Ci0JCQlpbnQgYnJvd3NlckNob2ljZSA9IHBzLmdldEludCgib3JnLmVjbGlwc2UudWkuYnJvd3NlciIsICJicm93c2VyLWNob2ljZSIsIDAsIG51bGwpOwotCQkJCi0JCQkvLyBmb3JjZSBleHRlcm5hbCBvciBicm93c2VyIGNob2ljZSBpcyBleHRlcm5hbAotCQkJaWYgKGZvcmNlTGF1bmNoT3V0c2lkZUlERSB8fCBicm93c2VyQ2hvaWNlID09IDEpIHsKLQkJCQkKLQkJCQkvLyBleHRlcm5hbCBicm93c2VyIHN1cHBvcnQgdXNlcyBzd3QgUHJvZ3JhbS5maW5kUHJvZ3JhbSgpIHRvIGxvY2F0ZSBhbiBhcHByb3ByaWF0ZSBicm93c2VyIGZvciBIVE1MIGZpbGVzCi0JCQkJLy8gY2VydGFpbiB2ZXJzaW9ucyBvZiBzd3QgUHJvZ3JhbSBjbGFzcyBuZWVkIHRvIGJlIHJ1biBmcm9tIHRoZSBVSSB0aHJlYWQsIG90aGVyd2lzZSBmaW5kUHJvZ3JhbSgpIGRvZXMgbm90Ci0JCQkJLy8gd29yayBwcm9wZXJseSAodGhpcyBhcHBsaWVzIHRvIExpbnV4IG9ubHkpLiAgVGhlIGNvZGUgYmVsb3cgaXMgdG8gd29ya2Fyb3VuZCB0aGlzIHByb2JsZW0uCi0JCQkJCi0JCQkJLy8gRGlzcGxheS5nZXRDdXJyZW50KCkgd2lsbCBiZSBudWxsIGlmIHRoaXMgaXMgbm90IHRoZSBVSSB0aHJlYWQKLQkJCQlpZiAoRGlzcGxheS5nZXRDdXJyZW50KCkgPT0gbnVsbCkgewotCQkJCQkKLQkJCQkJLy8gY3JlYXRlIGEgcnVubmFibGUgdG8gb3BlbiB0aGUgYnJvd3NlciwgcnVuIGl0IGluIHRoZSBVSSB0aHJlYWQKLQkJCQkJT3BlbkJyb3dzZXJSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBPcGVuQnJvd3NlclJ1bm5hYmxlKGJyb3dzZXJTdXBwb3J0LCBuZXcgVVJMKHNiLnRvU3RyaW5nKCkpKTsKLQkJCQkJRGlzcGxheS5nZXREZWZhdWx0KCkuc3luY0V4ZWMocnVubmFibGUpOwotCQkJCQkKLQkJCQkJaWYgKHJ1bm5hYmxlLmdldEV4Y2VwdGlvbigpICE9IG51bGwpCi0JCQkJCQl0aHJvdyBydW5uYWJsZS5nZXRFeGNlcHRpb24oKTsKLQkJCQl9Ci0JCQkJZWxzZSB7Ci0JCQkJCWJyb3dzZXIgPSBicm93c2VyU3VwcG9ydC5nZXRFeHRlcm5hbEJyb3dzZXIoKTsKLQkJCQkJYnJvd3Nlci5vcGVuVVJMKG5ldyBVUkwoc2IudG9TdHJpbmcoKSkpOwotCQkJCX0KLQkJCX0KLQkJCWVsc2UgewotCQkJCS8vIGJyb3dzZXJJZAotCQkJCVN0cmluZ0J1ZmZlciBicm93c2VySWQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0JCQkJYnJvd3NlcklkLmFwcGVuZChFeHBsb3JlclBsdWdpbi5JRCk7Ci0JCQkJYnJvd3NlcklkLmFwcGVuZChnZXRDb250ZXh0TmFtZSgpKTsKLQkJCQkKLQkJCQlpZiAoaW50ZXJuYWxCcm93c2VyXz09bnVsbCkKLQkJCQkJaW50ZXJuYWxCcm93c2VyXyA9IGJyb3dzZXJTdXBwb3J0LmNyZWF0ZUJyb3dzZXIoYnJvd3NlcklkLnRvU3RyaW5nKCkpOwotCQkJCWJyb3dzZXIgPSBpbnRlcm5hbEJyb3dzZXJfOwotCQkJCWJyb3dzZXIub3BlblVSTChuZXcgVVJMKHNiLnRvU3RyaW5nKCkpKTsKLQkJCX0KLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCXJldHVybiBuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIEV4cGxvcmVyUGx1Z2luLklELCAwLAotCQkJCQlFeHBsb3JlclBsdWdpbi5nZXRNZXNzYWdlKCIlTVNHX0VSUk9SX0xBVU5DSF9XU0VYUExPUkVSIiksCi0JCQkJCWUpOwotCQl9Ci0JCS8vIHJlZ2lzdGVyIGxhdW5jaCBvcHRpb25zCi0JCWlmIChvcHRpb25zICE9IG51bGwgJiYgb3B0aW9ucy5sZW5ndGggPiAwKSB7Ci0JCQl0cnkgewotCQkJCVN0cmluZ0J1ZmZlciBsYXVuY2hPcHRpb25zUmVnVVJMID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQkJCWxhdW5jaE9wdGlvbnNSZWdVUkwuYXBwZW5kKGdldEJhc2VVUkwoKSk7Ci0JCQkJbGF1bmNoT3B0aW9uc1JlZ1VSTC5hcHBlbmQoZ2V0TGF1bmNoT3B0aW9uUmVnaXN0cnlVUkwoKSk7Ci0JCQkJVVJMIHVybCA9IG5ldyBVUkwobGF1bmNoT3B0aW9uc1JlZ1VSTC50b1N0cmluZygpKTsKLQkJCQlVUkxDb25uZWN0aW9uIGNvbm5lY3Rpb24gPSB1cmwub3BlbkNvbm5lY3Rpb24oKTsKLQkJCQljb25uZWN0aW9uLnNldERvT3V0cHV0KHRydWUpOwotCQkJCVByaW50V3JpdGVyIG91dCA9IG5ldyBQcmludFdyaXRlcihjb25uZWN0aW9uLmdldE91dHB1dFN0cmVhbSgpKTsKLQkJCQlTdHJpbmdCdWZmZXIgcGFyYW1zID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQkJCVN0cmluZyBlbmNvZGVkSUQgPSBudWxsOwotCQkJCXRyeSB7Ci0JCQkJCWVuY29kZWRJRCA9IFVSTEVuY29kZXIuZW5jb2RlKEV4cGxvcmVyUGx1Z2luLklELAotCQkJCQkJCUV4cGxvcmVyUGx1Z2luLkNIQVJTRVQpOwotCQkJCX0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkgewotCQkJCQlyZXR1cm4gbmV3IFN0YXR1cygKLQkJCQkJCQlJU3RhdHVzLkVSUk9SLAotCQkJCQkJCUV4cGxvcmVyUGx1Z2luLklELAotCQkJCQkJCTAsCi0JCQkJCQkJRXhwbG9yZXJQbHVnaW4KLQkJCQkJCQkJCS5nZXRNZXNzYWdlKCIlTVNHX0JST0tFTl9WTV9ET0VTX05PVF9TVVBQT1JUX1VURi04IiksCi0JCQkJCQkJZSk7Ci0JCQkJfQotCQkJCXBhcmFtcy5hcHBlbmQoZW5jb2RlZElEKTsKLQkJCQlwYXJhbXMuYXBwZW5kKCI9Iik7Ci0JCQkJcGFyYW1zLmFwcGVuZChsYXVuY2hPcHRpb25LZXkpOwotCQkJCXBhcmFtcy5hcHBlbmQoIiYiKTsKLQkJCQlmb3IgKGludCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKLQkJCQkJaWYgKG9wdGlvbnNbaV0gIT0gbnVsbCkgewotCQkJCQkJcGFyYW1zLmFwcGVuZChvcHRpb25zW2ldLmdldEtleSgpKTsKLQkJCQkJCXBhcmFtcy5hcHBlbmQoIj0iKTsKLQkJCQkJCVN0cmluZyBvcHRpb24gPSBudWxsOwotCQkJCQkJdHJ5IHsKLQkJCQkJCQlvcHRpb24gPSBVUkxFbmNvZGVyLmVuY29kZShvcHRpb25zW2ldLmdldE9wdGlvbigpLAotCQkJCQkJCQkJRXhwbG9yZXJQbHVnaW4uQ0hBUlNFVCk7Ci0JCQkJCQl9IGNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGUpIHsKLQkJCQkJCQlyZXR1cm4gbmV3IFN0YXR1cygKLQkJCQkJCQkJCUlTdGF0dXMuRVJST1IsCi0JCQkJCQkJCQlFeHBsb3JlclBsdWdpbi5JRCwKLQkJCQkJCQkJCTAsCi0JCQkJCQkJCQlFeHBsb3JlclBsdWdpbgotCQkJCQkJCQkJCQkuZ2V0TWVzc2FnZSgiJU1TR19CUk9LRU5fVk1fRE9FU19OT1RfU1VQUE9SVF9VVEYtOCIpLAotCQkJCQkJCQkJZSk7Ci0JCQkJCQl9Ci0JCQkJCQlwYXJhbXMuYXBwZW5kKG9wdGlvbik7Ci0JCQkJCQlwYXJhbXMuYXBwZW5kKCImIik7Ci0JCQkJCX0KLQkJCQl9Ci0JCQkJb3V0LnByaW50KHBhcmFtcy50b1N0cmluZygpKTsKLQkJCQlvdXQuY2xvc2UoKTsKLQkJCQlvdXQgPSBudWxsOwotCQkJCUlucHV0U3RyZWFtIGlzID0gY29ubmVjdGlvbi5nZXRJbnB1dFN0cmVhbSgpOwotCQkJCWlzLmNsb3NlKCk7Ci0JCQkJaXMgPSBudWxsOwotCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCQlyZXR1cm4gbmV3IFN0YXR1cyhJU3RhdHVzLldBUk5JTkcsIEV4cGxvcmVyUGx1Z2luLklELCAwLAotCQkJCQkJRXhwbG9yZXJQbHVnaW4KLQkJCQkJCQkJLmdldE1lc3NhZ2UoIiVNU0dfRVJST1JfTE9BRF9MQVVOQ0hfT1BUSU9OUyIpLAotCQkJCQkJZSk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIG5ldyBTdGF0dXMoSVN0YXR1cy5PSywgRXhwbG9yZXJQbHVnaW4uSUQsIDAsICIiLCBudWxsKTsKLQl9Ci0KLQlwcml2YXRlIHN0YXRpYyBpbnQgZ2V0TGF1bmNoT3B0aW9uc0tleSgpIHsKLQkJcmV0dXJuIGxhdW5jaE9wdGlvbnNLZXlfKys7Ci0JfQotCi0JcHVibGljIElTdGF0dXMgbGF1bmNoKElXb3JrYmVuY2ggd2IsIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbCwKLQkJCVN0cmluZ1tdIGlucXVpcnlVUkwsIFN0cmluZ1tdIHB1Ymxpc2hVUkwsCi0JCQlib29sZWFuIGZvcmNlTGF1bmNoT3V0c2lkZUlERSkgewotCQlpbnQgaW5xdWlyeVVSTE9wdGlvbkxlbmd0aCA9IChpbnF1aXJ5VVJMICE9IG51bGwpID8gaW5xdWlyeVVSTC5sZW5ndGgKLQkJCQk6IDA7Ci0JCWludCBwdWJsaXNoVVJMT3B0aW9uTGVuZ3RoID0gKHB1Ymxpc2hVUkwgIT0gbnVsbCkgPyBwdWJsaXNoVVJMLmxlbmd0aAotCQkJCTogMDsKLQkJTGF1bmNoT3B0aW9uW10gb3B0aW9ucyA9IG5ldyBMYXVuY2hPcHRpb25baW5xdWlyeVVSTE9wdGlvbkxlbmd0aAotCQkJCSsgcHVibGlzaFVSTE9wdGlvbkxlbmd0aF07Ci0JCWludCBpbmRleCA9IDA7Ci0JCWlmIChpbnF1aXJ5VVJMICE9IG51bGwpIHsKLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5xdWlyeVVSTC5sZW5ndGg7IGkrKykgewotCQkJCW9wdGlvbnNbaW5kZXhdID0gbmV3IExhdW5jaE9wdGlvbihMYXVuY2hPcHRpb25zLklOUVVJUllfVVJMLAotCQkJCQkJaW5xdWlyeVVSTFtpXSk7Ci0JCQkJaW5kZXgrKzsKLQkJCX0KLQkJfQotCQlpZiAocHVibGlzaFVSTCAhPSBudWxsKSB7Ci0JCQlmb3IgKGludCBpID0gMDsgaSA8IHB1Ymxpc2hVUkwubGVuZ3RoOyBpKyspIHsKLQkJCQlvcHRpb25zW2luZGV4XSA9IG5ldyBMYXVuY2hPcHRpb24oTGF1bmNoT3B0aW9ucy5QVUJMSVNIX1VSTCwKLQkJCQkJCXB1Ymxpc2hVUkxbaV0pOwotCQkJCWluZGV4Kys7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGxhdW5jaCh3Yiwgc2VsLCBvcHRpb25zLCBmb3JjZUxhdW5jaE91dHNpZGVJREUpOwotCX0KLX0KLQotLyoqCi0gKiBIZWxwZXIgY2xhc3MgZm9yIG9wZW5pbmcgYSBicm93c2VyIGFuZCBzdG9yaW5nIHRoZQotICogRXhjZXB0aW9uIHRocm93biBpZiBpdCB3YXMgdW5zdWNjZXNzZnVsLiAKLSAqLwotY2xhc3MgT3BlbkJyb3dzZXJSdW5uYWJsZSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKLQkKLQlwcml2YXRlIElXb3JrYmVuY2hCcm93c2VyU3VwcG9ydCBicm93c2VyU3VwcG9ydDsKLQlwcml2YXRlIFVSTCB1cmw7Ci0JcHJpdmF0ZSBFeGNlcHRpb24gZXhjZXB0aW9uID0gbnVsbDsKLQkKLQlwdWJsaWMgT3BlbkJyb3dzZXJSdW5uYWJsZShJV29ya2JlbmNoQnJvd3NlclN1cHBvcnQgYnJvd3NlclN1cHBvcnQsIFVSTCB1cmwpIHsKLQkJdGhpcy5icm93c2VyU3VwcG9ydCA9IGJyb3dzZXJTdXBwb3J0OwotCQl0aGlzLnVybCA9IHVybDsKLQl9Ci0JCi0JcHVibGljIHZvaWQgcnVuKCkgewotCQl0cnkgewotCQkJYnJvd3NlclN1cHBvcnQuZ2V0RXh0ZXJuYWxCcm93c2VyKCkub3BlblVSTCh1cmwpOwkJCQotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJZXhjZXB0aW9uID0gZTsKLQkJfQotCX0KLQkKLQlwdWJsaWMgRXhjZXB0aW9uIGdldEV4Y2VwdGlvbigpIHsKLQkJcmV0dXJuIGV4Y2VwdGlvbjsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL1dTRXhwbG9yZXJDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL1dTRXhwbG9yZXJDb250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3N2RlNTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9XU0V4cGxvcmVyQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3JlcjsKLQotcHVibGljIGZpbmFsIGNsYXNzIFdTRXhwbG9yZXJDb250ZXh0IHsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJRCA9ICJvcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIiOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9XU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL1dTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJjNzY1YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL1dTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXI7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMRW5jb2RlcjsKLWltcG9ydCBqYXZhLnV0aWwuUHJvcGVydGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0vKioKLSAqIEBhdXRob3IgY2JyZWFsZXlAY2EuaWJtLmNvbQotICogCi0gKiBUaGlzIDxjb2RlPkNvbW1hbmQ8L2NvZGU+LCB3aGVuIGV4ZWN1dGVkLCBsYXVuY2hlcyB0aGUKLSAqIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlci4KLSAqLwotcHVibGljIGNsYXNzIFdTRXhwbG9yZXJMYXVuY2hlckNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiB7Ci0JcHJpdmF0ZSBib29sZWFuIGZvcmNlTGF1bmNoT3V0c2lkZUlERTsKLQotCXByaXZhdGUgTGF1bmNoT3B0aW9uW10gbGF1bmNoT3B0aW9uczsKLQotCXB1YmxpYyBXU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kKCkgewotCX0KLQotCXB1YmxpYyB2b2lkIHdyaXRlQ2F0ZWdvcnlJbmZvKFN0cmluZyBpbnF1aXJ5VVJMLCBTdHJpbmcgY2F0ZWdvcmllc0RpcmVjdG9yeSkgewotCQl0cnkgewotCQkJUHJvcGVydGllcyBwID0gbmV3IFByb3BlcnRpZXMoKTsKLQkJCXAuc2V0UHJvcGVydHkoTGF1bmNoT3B0aW9ucy5DQVRFR09SSUVTX0RJUkVDVE9SWSwKLQkJCQkJY2F0ZWdvcmllc0RpcmVjdG9yeSk7Ci0JCQlTdHJpbmdCdWZmZXIgcHJvcGVydGllc0ZpbGVOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQkJcHJvcGVydGllc0ZpbGVOYW1lLmFwcGVuZChXU0V4cGxvcmVyLmdldEluc3RhbmNlKCkKLQkJCQkJLmdldE1ldGFkYXRhRGlyZWN0b3J5KCkpOwotCQkJRmlsZSBtZXRhZGF0YURpcmVjdG9yeUZpbGUgPSBuZXcgRmlsZShwcm9wZXJ0aWVzRmlsZU5hbWUudG9TdHJpbmcoKSk7Ci0JCQlpZiAoIW1ldGFkYXRhRGlyZWN0b3J5RmlsZS5leGlzdHMoKSkgewotCQkJCW1ldGFkYXRhRGlyZWN0b3J5RmlsZS5ta2RpcnMoKTsKLQkJCX0KLQkJCXByb3BlcnRpZXNGaWxlTmFtZS5hcHBlbmQoVVJMRW5jb2Rlci5lbmNvZGUoaW5xdWlyeVVSTCwiVVRGLTgiKSkuYXBwZW5kKAotCQkJCQkiLnByb3BlcnRpZXMiKTsKLQkJCUZpbGVPdXRwdXRTdHJlYW0gZm91dCA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHByb3BlcnRpZXNGaWxlTmFtZQotCQkJCQkudG9TdHJpbmcoKSk7Ci0JCQlwLnN0b3JlKGZvdXQsIG51bGwpOwotCQkJZm91dC5jbG9zZSgpOwotCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JCX0KLQl9Ci0KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCkgewotCQlyZXR1cm4gV1NFeHBsb3Jlci5nZXRJbnN0YW5jZSgpLmxhdW5jaChudWxsLCBudWxsLCBsYXVuY2hPcHRpb25zLAotCQkJCWZvcmNlTGF1bmNoT3V0c2lkZUlERSk7Ci0JfQotCi0JcHVibGljIElTdGF0dXMgZXhlY3V0ZSggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGFkYXB0YWJsZSApIAotICB7Ci0gICAgcmV0dXJuIGV4ZWN1dGUoKTsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gZm9yY2VMYXVuY2hPdXRzaWRlSURFCi0JICogICAgICAgICAgICBUaGUgZm9yY2VMYXVuY2hPdXRzaWRlSURFIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRGb3JjZUxhdW5jaE91dHNpZGVJREUoYm9vbGVhbiBmb3JjZUxhdW5jaE91dHNpZGVJREUpIHsKLQkJdGhpcy5mb3JjZUxhdW5jaE91dHNpZGVJREUgPSBmb3JjZUxhdW5jaE91dHNpZGVJREU7Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIGxhdW5jaE9wdGlvbnMKLQkgKiAgICAgICAgICAgIFRoZSBsYXVuY2hPcHRpb25zIHRvIHNldC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRMYXVuY2hPcHRpb25zKExhdW5jaE9wdGlvbltdIGxhdW5jaE9wdGlvbnMpIHsKLQkJdGhpcy5sYXVuY2hPcHRpb25zID0gbGF1bmNoT3B0aW9uczsKLQl9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9XZWJhcHBNYW5hZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL1dlYmFwcE1hbmFnZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ1MDc1Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL1dlYmFwcE1hbmFnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyOwotCi1pbXBvcnQgamF2YS51dGlsLkRpY3Rpb25hcnk7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsKLWltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZXF1aW5veC5odHRwLmpldHR5LkpldHR5Q29uZmlndXJhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbHVnaW4uRXhwbG9yZXJQbHVnaW47Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZTsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5JbnZhbGlkU3ludGF4RXhjZXB0aW9uOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5TZXJ2aWNlUmVmZXJlbmNlOwotCi1wdWJsaWMgY2xhc3MgV2ViYXBwTWFuYWdlciB7Ci0KLQlwcml2YXRlIHN0YXRpYyBTdHJpbmcgaG9zdDsKLQlwcml2YXRlIHN0YXRpYyBpbnQgcG9ydCA9IC0xOwotCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBVVRPX1NFTEVDVF9KRVRUWV9QT1JUID0gMDsKLQkKLQlwdWJsaWMgc3RhdGljIHZvaWQgc3RhcnQoU3RyaW5nIHdlYmFwcE5hbWUpIHRocm93cyBFeGNlcHRpb24gewotCQlEaWN0aW9uYXJ5IGQgPSBuZXcgSGFzaHRhYmxlKCk7Ci0JCQotCQkKLQkJZC5wdXQoImh0dHAucG9ydCIsIG5ldyBJbnRlZ2VyKGdldFBvcnRQYXJhbWV0ZXIoKSkpOyAvLyROT04tTkxTLTEkCi0KLQkJLy8gc2V0IHRoZSBiYXNlIFVSTAotCQlkLnB1dCgiY29udGV4dC5wYXRoIiwgIi93c2UiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0JCWQucHV0KCJvdGhlci5pbmZvIiwgIm9yZy5lY2xpcHNlLndzdC53cy5leHBsb3JlciIpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQKLQkJCi0JCS8vIHN1cHByZXNzIEpldHR5IElORk8vREVCVUcgbWVzc2FnZXMgdG8gc3RkZXJyCi0JCUxvZ2dlci5nZXRMb2dnZXIoIm9yZy5tb3J0YmF5Iikuc2V0TGV2ZWwoTGV2ZWwuV0FSTklORyk7IC8vJE5PTi1OTFMtMSQJCi0KLQkJSmV0dHlDb25maWd1cmF0b3Iuc3RhcnRTZXJ2ZXIod2ViYXBwTmFtZSwgZCk7Ci0JCWNoZWNrQnVuZGxlKCk7Ci0JCQotCX0KLQkKLQkvKgotCSAqIEVuc3VyZXMgdGhhdCB0aGUgYnVuZGxlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGFuZCB0aGUgaGlnaGVzdCBhdmFpbGFibGUKLQkgKiB2ZXJzaW9uIGlzIHN0YXJ0ZWQgYW5kIHJlYWRzIHRoZSBwb3J0IG51bWJlcgotCSAqLwotCXByaXZhdGUgc3RhdGljIHZvaWQgY2hlY2tCdW5kbGUoKSB0aHJvd3MgSW52YWxpZFN5bnRheEV4Y2VwdGlvbiwgQnVuZGxlRXhjZXB0aW9uIHsKLQkJQnVuZGxlIGJ1bmRsZSA9IFBsYXRmb3JtLmdldEJ1bmRsZSgib3JnLmVjbGlwc2UuZXF1aW5veC5odHRwLnJlZ2lzdHJ5Iik7IC8vJE5PTi1OTFMtMSRpZiAoYnVuZGxlICE9IG51bGwpIHsKLQkJaWYgKGJ1bmRsZS5nZXRTdGF0ZSgpID09IEJ1bmRsZS5SRVNPTFZFRCkgewotCQkJYnVuZGxlLnN0YXJ0KEJ1bmRsZS5TVEFSVF9UUkFOU0lFTlQpOwotCQl9Ci0JCWlmIChwb3J0ID09IC0xKSB7Ci0JCQkvLyBKZXR0eSBzZWxlY3RlZCBhIHBvcnQgbnVtYmVyIGZvciB1cwotCQkJU2VydmljZVJlZmVyZW5jZVtdIHJlZmVyZW5jZSA9IGJ1bmRsZS5nZXRCdW5kbGVDb250ZXh0KCkuZ2V0U2VydmljZVJlZmVyZW5jZXMoIm9yZy5vc2dpLnNlcnZpY2UuaHR0cC5IdHRwU2VydmljZSIsICIob3RoZXIuaW5mbz1vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIpIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotCQkJT2JqZWN0IGFzc2lnbmVkUG9ydCA9IHJlZmVyZW5jZVswXS5nZXRQcm9wZXJ0eSgiaHR0cC5wb3J0Iik7IC8vJE5PTi1OTFMtMSQKLQkJCXBvcnQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpYXNzaWduZWRQb3J0KTsKLQkJfQotCX0KLQotCXB1YmxpYyBzdGF0aWMgdm9pZCBzdG9wKFN0cmluZyB3ZWJhcHBOYW1lKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCXRyeSB7Ci0JCQlKZXR0eUNvbmZpZ3VyYXRvci5zdG9wU2VydmVyKHdlYmFwcE5hbWUpOwotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJLy9IZWxwQmFzZVBsdWdpbi5sb2dFcnJvcigiQW4gZXJyb3Igb2NjdXJlZCB3aGlsZSBzdG9wcGluZyB0aGUgaGVscCBzZXJ2ZXIiLCBlKTsgLy8kTk9OLU5MUy0xJAotCQl9Ci0JfQotCi0JcHVibGljIHN0YXRpYyBpbnQgZ2V0UG9ydCgpIHsKLQkJcmV0dXJuIHBvcnQ7Ci0JfQotCi0JLyoKLQkgKiBHZXQgdGhlIHBvcnQgbnVtYmVyIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIEpldHR5Ci0JICovCi0JcHJpdmF0ZSBzdGF0aWMgaW50IGdldFBvcnRQYXJhbWV0ZXIoKSB7Ci0JCWlmIChwb3J0ID09IC0xKSB7IAotCQkJcmV0dXJuIEFVVE9fU0VMRUNUX0pFVFRZX1BPUlQ7Ci0JCX0KLQkJcmV0dXJuIHBvcnQ7Ci0JfQotCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SG9zdCgpIHsKLQkJaWYgKGhvc3QgPT0gbnVsbCkgewotCQkJU3RyaW5nIGhvc3RDb21tYW5kTGluZU92ZXJyaWRlID0gRXhwbG9yZXJQbHVnaW4uZ2V0QnVuZGxlQ29udGV4dCgpLmdldFByb3BlcnR5KCJzZXJ2ZXJfaG9zdCIpOyAvLyROT04tTkxTLTEkCi0JCQlpZiAoaG9zdENvbW1hbmRMaW5lT3ZlcnJpZGUgIT0gbnVsbCAmJiBob3N0Q29tbWFuZExpbmVPdmVycmlkZS50cmltKCkubGVuZ3RoKCkgPiAwKSB7Ci0JCQkJaG9zdCA9IGhvc3RDb21tYW5kTGluZU92ZXJyaWRlOwotCQkJfQotCQkJZWxzZSB7Ci0JCQkJaG9zdCA9ICIxMjcuMC4wLjEiOyAvLyROT04tTkxTLTEkCi0JCQl9Ci0JCX0KLQkJcmV0dXJuIGhvc3Q7Ci0JfQotCQotCXByaXZhdGUgV2ViYXBwTWFuYWdlcigpIHsKLQl9Ci0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL2FjdGlvbi9MYXVuY2hXU0VBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvYWN0aW9uL0xhdW5jaFdTRUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjMyNGY5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvYWN0aW9uL0xhdW5jaFdTRUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwODIwICAgMTkxNTg1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuYWN0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuYWN0aW9uLklBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hXaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvd0FjdGlvbkRlbGVnYXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbnRleHQuVHJhbnNpZW50UmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkuZWNsaXBzZS5FY2xpcHNlU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuTGF1bmNoT3B0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5MYXVuY2hPcHRpb25zOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5XU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbHVnaW4uRXhwbG9yZXJQbHVnaW47Ci0KLQotcHVibGljIGNsYXNzIExhdW5jaFdTRUFjdGlvbiBpbXBsZW1lbnRzIElXb3JrYmVuY2hXaW5kb3dBY3Rpb25EZWxlZ2F0ZQotewotICBwdWJsaWMgdm9pZCBydW4oSUFjdGlvbiBhY3Rpb24pCi0gIHsKLSAgICBFY2xpcHNlU3RhdHVzSGFuZGxlciAgICAgICAgICAgICBoYW5kbGVyICAgICA9IG5ldyBFY2xpcHNlU3RhdHVzSGFuZGxlcigpOwotICAgIFRyYW5zaWVudFJlc291cmNlQ29udGV4dCAgICAgICAgIGNvbnRleHQgICAgID0gbmV3IFRyYW5zaWVudFJlc291cmNlQ29udGV4dCgpOwotICAgIEVjbGlwc2VFbnZpcm9ubWVudCAgICAgICAgICAgICAgIGVudmlyb25tZW50ID0gbmV3IEVjbGlwc2VFbnZpcm9ubWVudCggbnVsbCwgY29udGV4dCwgaGFuZGxlciApOyAKLSAgICBXU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kICAgICAgICBjbWQgICAgICAgICA9IG5ldyBXU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kKCk7Ci0gICAgCi0gICAgU3RyaW5nIHN0YXRlTG9jYXRpb24gPSBFeHBsb3JlclBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFBsdWdpblN0YXRlTG9jYXRpb24oKTsKLQlTdHJpbmcgZGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uID0gRXhwbG9yZXJQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXREZWZhdWx0RmF2b3JpdGVzTG9jYXRpb24oKTsKLQlMYXVuY2hPcHRpb25bXSBsYXVuY2hPcHRpb25zID0gbmV3IExhdW5jaE9wdGlvbltdIHsKLQkJbmV3IExhdW5jaE9wdGlvbihMYXVuY2hPcHRpb25zLlNUQVRFX0xPQ0FUSU9OLHN0YXRlTG9jYXRpb24pLAotCQluZXcgTGF1bmNoT3B0aW9uKExhdW5jaE9wdGlvbnMuREVGQVVMVF9GQVZPUklURVNfTE9DQVRJT04sZGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uKQotCX07Ci0gICAgY21kLnNldExhdW5jaE9wdGlvbnMobGF1bmNoT3B0aW9ucyk7Ci0gICAgY21kLnNldEVudmlyb25tZW50KCBlbnZpcm9ubWVudCApOwotCSAgY21kLmV4ZWN1dGUoIG51bGwsIG51bGwgKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hXaW5kb3dBY3Rpb25EZWxlZ2F0ZSNkaXNwb3NlKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGRpc3Bvc2UoKSB7ICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvd0FjdGlvbkRlbGVnYXRlI2luaXQob3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdykKLSAgICovCi0gIHB1YmxpYyB2b2lkIGluaXQoSVdvcmtiZW5jaFdpbmRvdyB3aW5kb3cpIHsgIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS51aS5JQWN0aW9uRGVsZWdhdGUjc2VsZWN0aW9uQ2hhbmdlZChvcmcuZWNsaXBzZS5qZmFjZS5hY3Rpb24uSUFjdGlvbiwgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChJQWN0aW9uIGFjdGlvbiwgSVNlbGVjdGlvbiBzZWxlY3Rpb24pIHsgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1JlZ2lzdHJ5VHlwZURlZmF1bHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1JlZ2lzdHJ5VHlwZURlZmF1bHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA5YzgxNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL2Zhdm9yaXRlcy9GYXZvcml0ZXNSZWdpc3RyeVR5cGVEZWZhdWx0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuZmF2b3JpdGVzOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuV1NJTERvY3VtZW50OwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5XU0lMRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbHVnaW4uRXhwbG9yZXJQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5mYXZvcml0ZXMuRmF2b3JpdGVzUmVnaXN0cnlUeXBlQWJzdHJhY3Q7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNSZWdpc3RyeVR5cGVEZWZhdWx0IGV4dGVuZHMgRmF2b3JpdGVzUmVnaXN0cnlUeXBlQWJzdHJhY3QgewotCXByaXZhdGUgc3RhdGljIFdTSUxEb2N1bWVudCB3c2lsRG9jXzsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZBVk9SSVRFU19ERUZBVUxUID0gInByb3BlcnRpZXMvZmF2b3JpdGVzX2RlZmF1bHQud3NpbCI7Ci0JCi0JcHJpdmF0ZSBTdHJpbmcgZGVmYXVsdEZhdm9yaXRlc18gPSBudWxsOwotCi0JcHVibGljIEZhdm9yaXRlc1JlZ2lzdHJ5VHlwZURlZmF1bHQoKSB7Ci0JCXN1cGVyKCk7Ci0JCXdzaWxEb2NfID0gbnVsbDsKLQl9Ci0KLQlwdWJsaWMgRmF2b3JpdGVzUmVnaXN0cnlUeXBlRGVmYXVsdChTdHJpbmcgZGVmYXVsdEZhdm9yaXRlcykgewotCQlzdXBlcigpOwotCQl3c2lsRG9jXyA9IG51bGw7Ci0JCWRlZmF1bHRGYXZvcml0ZXNfID0gZGVmYXVsdEZhdm9yaXRlczsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldFJlYWRMb2NhdGlvbigpIHsKLQkJU3RyaW5nQnVmZmVyIHJlYWRMb2NhdGlvbiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLQkJaWYgKGRlZmF1bHRGYXZvcml0ZXNfID09IG51bGwpCi0JCXsKLQkJCXJlYWRMb2NhdGlvbi5hcHBlbmQoRXhwbG9yZXJQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRQbHVnaW5JbnN0YWxsTG9jYXRpb24oKSk7Ci0JCQlyZWFkTG9jYXRpb24uYXBwZW5kKEZBVk9SSVRFU19ERUZBVUxUKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXJlYWRMb2NhdGlvbi5hcHBlbmQoZGVmYXVsdEZhdm9yaXRlc18pOwotCQl9Ci0JCXJldHVybiByZWFkTG9jYXRpb24udG9TdHJpbmcoKTsKLQl9Ci0KLQlwdWJsaWMgU3RyaW5nIGdldFdyaXRlTG9jYXRpb24oKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCXByb3RlY3RlZCBXU0lMRG9jdW1lbnQgZ2V0V1NJTERvY3VtZW50KCkgewotCQlpZiAod3NpbERvY18gPT0gbnVsbCkgewotCQkJd3NpbERvY18gPSBsb2FkV1NJTERvY3VtZW50KGdldFJlYWRMb2NhdGlvbigpLCB0cnVlKTsKLQkJCWdldEZhdm9yaXRlc1VERElSZWdpc3RyaWVzKCk7Ci0JCQkvKiBUT0RPOiBQdWJsaWMgcmVnaXN0cnkgc3RyaW5ncyBzaG91bGRuJ3QgYmUgaW4gcHJvcGVydGllcyAtIEFpbid0IGV4dGVuc2libGUuCi0JCQlmb3IgKGludCBpID0gMDsgaSA8IHJlZ2lzdHJpZXMubGVuZ3RoOyBpKyspIHsKLQkJCQlyZWdpc3RyaWVzW2ldLnNldE5hbWUoV1NQbHVnaW4uZ2V0UmVzb3VyY2VTdHJpbmcocmVnaXN0cmllc1tpXS5nZXROYW1lKCkpKTsKLQkJCX0KLQkJCSovCi0JCX0KLQkJcmV0dXJuIHdzaWxEb2NfOwotCX0KLQotCXB1YmxpYyBXU0lMRG9jdW1lbnQgZ2V0RmF2b3JpdGVzRGVmYXVsdCgpIHsKLQkJcmV0dXJuIGdldFdTSUxEb2N1bWVudCgpOwotCX0KLQotCXB1YmxpYyB2b2lkIHNhdmUoKSB0aHJvd3MgV1NJTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24gewotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1JlZ2lzdHJ5VHlwZVdTRS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9mYXZvcml0ZXMvRmF2b3JpdGVzUmVnaXN0cnlUeXBlV1NFLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNzZhMWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9mYXZvcml0ZXMvRmF2b3JpdGVzUmVnaXN0cnlUeXBlV1NFLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuZmF2b3JpdGVzOwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLldTSUxEb2N1bWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGx1Z2luLkV4cGxvcmVyUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzLkZhdm9yaXRlc1JlZ2lzdHJ5VHlwZUFic3RyYWN0OwotCi0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNSZWdpc3RyeVR5cGVXU0UgZXh0ZW5kcyBGYXZvcml0ZXNSZWdpc3RyeVR5cGVBYnN0cmFjdAotewotICBwcml2YXRlIHN0YXRpYyBXU0lMRG9jdW1lbnQgd3NpbERvY187Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZBVk9SSVRFU19XU0VYUExPUkVSID0gImZhdm9yaXRlcy53c2lsIjsKLSAgcHJpdmF0ZSBTdHJpbmcgZGVmYXVsdEZhdm9yaXRlc18gPSBudWxsOwotICBwcml2YXRlIFN0cmluZyBzdGF0ZUxvY2F0aW9uXyA9IG51bGw7Ci0gIAotICBwdWJsaWMgRmF2b3JpdGVzUmVnaXN0cnlUeXBlV1NFKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgd3NpbERvY18gPSBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgRmF2b3JpdGVzUmVnaXN0cnlUeXBlV1NFKFN0cmluZyBkZWZhdWx0RmF2b3JpdGVzLCBTdHJpbmcgc3RhdGVMb2NhdGlvbikgewotCXN1cGVyKCk7Ci0Jd3NpbERvY18gPSBudWxsOwotCWRlZmF1bHRGYXZvcml0ZXNfID0gZGVmYXVsdEZhdm9yaXRlczsKLQlzdGF0ZUxvY2F0aW9uXyA9IHN0YXRlTG9jYXRpb247Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRMb2NhdGlvbigpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgcmVhZExvY2F0aW9uID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIHJlYWRMb2NhdGlvbi5hcHBlbmQoc3RhdGVMb2NhdGlvbl8gPT0gbnVsbCA/IEV4cGxvcmVyUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0UGx1Z2luU3RhdGVMb2NhdGlvbigpIDogc3RhdGVMb2NhdGlvbl8pOwotICAgIHJlYWRMb2NhdGlvbi5hcHBlbmQoRkFWT1JJVEVTX1dTRVhQTE9SRVIpOwotICAgIHJldHVybiByZWFkTG9jYXRpb24udG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3JpdGVMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gZ2V0UmVhZExvY2F0aW9uKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgV1NJTERvY3VtZW50IGdldFdTSUxEb2N1bWVudCgpCi0gIHsKLSAgICBpZiAod3NpbERvY18gPT0gbnVsbCkKLSAgICB7Ci0gICAgICB3c2lsRG9jXyA9IGxvYWRXU0lMRG9jdW1lbnQoZ2V0UmVhZExvY2F0aW9uKCksIGZhbHNlKTsKLSAgICAgIGlmICh3c2lsRG9jXyA9PSBudWxsKQotICAgICAgewotICAgICAgICByZXN0b3JlRmF2b3JpdGVzRGVmYXVsdCgpOwotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIHNhdmUoKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gd3NpbERvY187Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZXN0b3JlRmF2b3JpdGVzRGVmYXVsdCgpCi0gIHsKLSAgICB3c2lsRG9jXyA9IChuZXcgRmF2b3JpdGVzUmVnaXN0cnlUeXBlRGVmYXVsdChkZWZhdWx0RmF2b3JpdGVzXykpLmdldFdTSUxEb2N1bWVudCgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMDdmZTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLkN1cnJlbnROb2RlU2VsZWN0aW9uVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lci5JVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuUGVyc3BlY3RpdmU7Ci0KLS8vIEFic3RyYWN0IGFjdGlvbiBjbGFzcyB1c2VkIGZvciBib3RoIExpbmsgYW5kIEZvcm0gYWN0aW9ucy4KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBY3Rpb24KLXsKLSAgcHJvdGVjdGVkIENvbnRyb2xsZXIgY29udHJvbGxlcl87Ci0gIHByb3RlY3RlZCBIYXNodGFibGUgcHJvcGVydHlUYWJsZV87Ci0gIHByb3RlY3RlZCBWZWN0b3IgcmVtb3ZlZFByb3BlcnRpZXNfOwotCi0gIHB1YmxpYyBBY3Rpb24oKQotICB7Ci0gICAgdGhpcyhudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgY29udHJvbGxlcl8gPSBjb250cm9sbGVyOwotICAgIHByb3BlcnR5VGFibGVfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHJlbW92ZWRQcm9wZXJ0aWVzXyA9IG5ldyBWZWN0b3IoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBDb250cm9sbGVyIGdldENvbnRyb2xsZXIoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfOwotICB9Ci0KLSAgLyoqCi0gICogUmVhZCBwcm9wZXJ0aWVzIGZyb20gYW4gSHR0cFNlcnZsZXRSZXF1ZXN0IGFuZCBhZGQgdGhlbSB0byB0aGUgcHJvcGVydHkgdGFibGUuCi0gICogQHBhcmFtIEh0dHBTZXJ2bGV0UmVxdWVzdCBUaGUgSHR0cFNlcnZsZXRSZXF1ZXN0IGNvbnRhaW5pbmcgdGhlIGVtYmVkZGVkIHBhcmFtZXRlcnMuCi0gICogQHJldHVybiBib29sZWFuIFdoZXRoZXIgb3Igbm90IHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCi0gICovCi0gIHB1YmxpYyBhYnN0cmFjdCBib29sZWFuIHBvcHVsYXRlUHJvcGVydHlUYWJsZShIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCk7Ci0KLSAgLyoqCi0gICogR2V0IHRoZSBwcm9wZXJ0eSB0YWJsZS4KLSAgKiBAcmV0dXJuIEhhc2h0YWJsZSBBIGhhc2h0YWJsZSBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzIGZvciB0aGlzIGFjdGlvbi4KLSAgKi8KLSAgcHVibGljIGZpbmFsIEhhc2h0YWJsZSBnZXRQcm9wZXJ0eVRhYmxlKCkKLSAgewotICAgIHJldHVybiBwcm9wZXJ0eVRhYmxlXzsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldCB0aGUgcHJvcGVydHkgdGFibGUuCi0gICAqIEByZXR1cm4gdm9pZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UHJvcGVydHlUYWJsZShIYXNodGFibGUgcHJvcGVydHlUYWJsZSkKLSAgewotICAgcHJvcGVydHlUYWJsZV8gPSBwcm9wZXJ0eVRhYmxlOwotICB9Ci0gIAotICAvKioKLSAgICogQWRkIGEgcHJvcGVydHkgdG8gdGhlIHByb3BlcnR5IHRhYmxlLgotICAgKiBAcGFyYW0gdm9pZAotICAgKi8KLSAgcHVibGljIGZpbmFsIHZvaWQgYWRkUHJvcGVydHkoT2JqZWN0IGtleSwgT2JqZWN0IHZhbHVlKQotICB7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KGtleSwgdmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICogUmVtb3ZlIGEgcHJvcGVydHkgZnJvbSB0aGUgcHJvcGVydHkgdGFibGUuIFRyYWNrIHRoZSBkZWxldGlvbnMuCi0gICogQHBhcmFtIE9iamVjdCBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBiZWluZyByZW1vdmVkLgotICAqLwotICBwdWJsaWMgZmluYWwgdm9pZCByZW1vdmVQcm9wZXJ0eShPYmplY3Qga2V5KQotICB7Ci0gICAgcHJvcGVydHlUYWJsZV8ucmVtb3ZlKGtleSk7Ci0gICAgcmVtb3ZlZFByb3BlcnRpZXNfLmFkZEVsZW1lbnQoa2V5KTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZ1tdIGdldFByb3BlcnR5QXNTdHJpbmdBcnJheShPYmplY3Qga2V5KQotICB7Ci0gICAgT2JqZWN0IG9iamVjdCA9IHByb3BlcnR5VGFibGVfLmdldChrZXkpOwotICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTdHJpbmdbXSkKLSAgICAgIHJldHVybiAoU3RyaW5nW10pb2JqZWN0OwotICAgIGVsc2UgaWYgKG9iamVjdCAhPSBudWxsKQotICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXSB7b2JqZWN0LnRvU3RyaW5nKCl9OwotICAgIGVsc2UKLSAgICAgIHJldHVybiBuZXcgU3RyaW5nWzBdOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gZXhlY3V0ZSgpCi0gIHsKLSAgICByZXR1cm4gZXhlY3V0ZSh0cnVlKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGV4ZWN1dGUoYm9vbGVhbiB1c2VBY3Rpb25FbmdpbmUpCi0gIHsKLSAgICBpZiAodXNlQWN0aW9uRW5naW5lKQotICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEFjdGlvbkVuZ2luZSgpLmV4ZWN1dGVBY3Rpb24odGhpcyk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHJ1bigpOwotICB9Ci0KLSAgLy8gQWJzdHJhY3QgbWV0aG9kIGZvciBydW5uaW5nIHRoaXMgYWN0aW9uLgotICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBydW4oKTsKLSAgCi0gIC8qKgotICAqIFJldHVybiB0aGUgdHJhbnNmb3JtZXJzIHVzZWQgdG8gbm9ybWFsaXplIHRoZSBpbnB1dC9vdXRwdXQgcGFyYW1ldGVycyBmb3IgdGhpcyBhY3Rpb24KLSAgKiBAcmV0dXJuIElUcmFuc2Zvcm1lcltdCi0gICovCi0gIHB1YmxpYyBJVHJhbnNmb3JtZXJbXSBnZXRUcmFuc2Zvcm1lcnMoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBJVHJhbnNmb3JtZXJbXSB7bmV3IEN1cnJlbnROb2RlU2VsZWN0aW9uVHJhbnNmb3JtZXIoY29udHJvbGxlcl8pfTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbihQZXJzcGVjdGl2ZSBwZXJzcGVjdGl2ZSxNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlLFN0cmluZyBleGNlcHRpb25OYW1lLFRocm93YWJsZSB0KQotICB7Ci0gICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UocGVyc3BlY3RpdmUuZ2V0Q29udHJvbGxlcigpLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGV4Y2VwdGlvbk5hbWUpOwotICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHQuZ2V0TWVzc2FnZSgpKTsKLSAgfSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvQ2hlY2tXb3JrYmVuY2hGaWxlUmVhZE9ubHlBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9DaGVja1dvcmtiZW5jaEZpbGVSZWFkT25seUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzgzMmY2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9DaGVja1dvcmtiZW5jaEZpbGVSZWFkT25seUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotCi1wdWJsaWMgY2xhc3MgQ2hlY2tXb3JrYmVuY2hGaWxlUmVhZE9ubHlBY3Rpb24gZXh0ZW5kcyBBY3Rpb24KLXsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGluaygpCi0gIHsKLSAgICByZXR1cm4gImFjdGlvbnMvQ2hlY2tXb3JrYmVuY2hGaWxlUmVhZE9ubHlBY3Rpb25KU1AuanNwIjsKLSAgfQotICAgIAotICBwdWJsaWMgYm9vbGVhbiBwb3B1bGF0ZVByb3BlcnR5VGFibGUoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvQ2xlYXJOb2RlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvQ2xlYXJOb2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1M2ZkYzYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL0NsZWFyTm9kZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwOTA2ICAgMTU2Mzk4IGplZmZsaXVAY2EuaWJtLmNvbSAtIEplZmZyZXkgTGl1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIENsZWFyTm9kZUFjdGlvbiBleHRlbmRzIE5vZGVBY3Rpb24KLXsKLSAgcHVibGljIENsZWFyTm9kZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIsTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyLG5vZGVNYW5hZ2VyKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgaWYgKCFpc1N0YWxlTm9kZShub2RlSWQpKQotICAgIHsKLSAgICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJZCk7Ci0gICAgICBUcmVlRWxlbWVudCBlbGVtZW50ID0gbm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgLy9lbGVtZW50LmRpc2Nvbm5lY3RBbGwoKTsKLSAgICAgIExpc3QgZWxlbWVudHMycmVtb3ZlID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgY29sbGVjdEVsZW1lbnRzMlJlbW92ZShlbGVtZW50LCBlbGVtZW50czJyZW1vdmUpOwotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IGVsZW1lbnRzMnJlbW92ZS5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgICAgewotICAgICAgICBUcmVlRWxlbWVudCBlID0gKFRyZWVFbGVtZW50KWl0Lm5leHQoKTsKLSAgICAgICAgZS5nZXRNb2RlbCgpLnJlbW92ZUVsZW1lbnQoZSk7Ci0gICAgICB9Ci0gICAgICBpZiAoZWxlbWVudC5nZXRNb2RlbCgpLmdldFJvb3RFbGVtZW50KCkgIT0gZWxlbWVudCkKLSAgICAgICAgbm9kZU1hbmFnZXJfLnJlbW92ZUZyb21Ob2RlVGFibGUobm9kZUlkKTsKLSAgICAgIC8vIERvIG5vdCBhZGQgdGhpcyB0byB0aGUgaGlzdG9yeS4KLSAgICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSBjb250cm9sbGVyXy5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19JTkZPX05PREVfQ0xFQVJFRCIsbm9kZS5nZXROb2RlTmFtZSgpKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGNvbGxlY3RFbGVtZW50czJSZW1vdmUoVHJlZUVsZW1lbnQgZWxlbWVudCwgTGlzdCBlbGVtZW50czJyZW1vdmUpCi0gIHsKLSAgICBpZiAoIWVsZW1lbnRzMnJlbW92ZS5jb250YWlucyhlbGVtZW50KSkKLSAgICB7Ci0gICAgICBpZiAoZWxlbWVudC5nZXRNb2RlbCgpLmdldFJvb3RFbGVtZW50KCkgIT0gZWxlbWVudCkKLSAgICAgICAgZWxlbWVudHMycmVtb3ZlLmFkZChlbGVtZW50KTsKLSAgICAgIEVudW1lcmF0aW9uIHJlbHMgPSBlbGVtZW50LmdldFJlbHMoKTsKLSAgICAgIHdoaWxlIChyZWxzLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgewotICAgICAgICBSZWwgcmVsID0gKFJlbClyZWxzLm5leHRFbGVtZW50KCk7Ci0gICAgICAgIFN0cmluZyByZWxOYW1lID0gcmVsLmdldE5hbWUoKTsKLSAgICAgICAgaWYgKCFNb2RlbENvbnN0YW50cy5SRUxfT1dORVIuZXF1YWxzKHJlbE5hbWUpKQotICAgICAgICB7Ci0gICAgICAgICAgRW51bWVyYXRpb24gY2hpbGRyZW4gPSBlbGVtZW50LmdldEVsZW1lbnRzKHJlbC5nZXROYW1lKCkpOwotICAgICAgICAgIHdoaWxlIChjaGlsZHJlbi5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBjb2xsZWN0RWxlbWVudHMyUmVtb3ZlKChUcmVlRWxlbWVudCljaGlsZHJlbi5uZXh0RWxlbWVudCgpLCBlbGVtZW50czJyZW1vdmUpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGlua0Zvckhpc3RvcnkoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvLyBEZWxldGluZyBhIG5vZGUgZnJvbSB0aGUgdHJlZSByZXN1bHRzIGluIGNoYW5nZXMgdG8gdGhlIHRyZWV2aWV3IGFuZCBzdGF0dXMgY29udGVudHMuCi0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRTdGF0dXNDb250ZW50VmFyKCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9DbGVhclZpZXdFbGVtZW50QWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvQ2xlYXJWaWV3RWxlbWVudEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzU5OGQ2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9DbGVhclZpZXdFbGVtZW50QWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVmlld1Rvb2w7Ci0KLS8vIEFic3RyYWN0IGFjdGlvbiBjbGFzcyB1c2VkIGZvciBib3RoIExpbmsgYW5kIEZvcm0gYWN0aW9ucy4KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBDbGVhclZpZXdFbGVtZW50QWN0aW9uIGV4dGVuZHMgTGlua0FjdGlvbgotewotICBwcml2YXRlIFN0cmluZyBsaXN0TWFuYWdlclJlbF87Ci0gIHByaXZhdGUgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXJfOwotICBwdWJsaWMgQ2xlYXJWaWV3RWxlbWVudEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIsTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsU3RyaW5nIGxpc3RNYW5hZ2VyUmVsKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgbm9kZU1hbmFnZXJfICA9IG5vZGVNYW5hZ2VyOwotICAgIGxpc3RNYW5hZ2VyUmVsXyA9IGxpc3RNYW5hZ2VyUmVsOwotICB9Ci0KLSAgLy8gLi4uanNwP3ZpZXdJZD0uLi4KLSAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gcHJvY2Vzc0xpbmtQYXJhbWV0ZXJzKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KQotICB7Ci0gICAgU3RyaW5nIHZpZXdJZFN0cmluZyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgIC8vIFBlcmZvcm0gZGF0YSB2YWxpZGF0aW9uLgotICAgIHRyeQotICAgIHsKLSAgICAgIEludGVnZXIucGFyc2VJbnQodmlld0lkU3RyaW5nKTsKLSAgICB9Ci0gICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIFZhbGlkYXRpb24gZmFpbGVkIQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLlZJRVdJRCx2aWV3SWRTdHJpbmcpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIGludCB2aWV3SWQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5WSUVXSUQpKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBWaWV3VG9vbCB2aWV3VG9vbCA9IChWaWV3VG9vbClzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKTsKLSAgICBpZiAodmlld1Rvb2wuZ2V0VG9vbE1hbmFnZXIodmlld0lkKSA9PSBudWxsKQotICAgIHsKLSAgICAgIC8vIFN0YWxlIHZpZXcuCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFRyZWVFbGVtZW50IGVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBMaXN0TWFuYWdlciBsaXN0TWFuYWdlciA9IChMaXN0TWFuYWdlcillbGVtZW50LmdldFByb3BlcnR5QXNPYmplY3QobGlzdE1hbmFnZXJSZWxfKTsKLSAgICBsaXN0TWFuYWdlci5yZW1vdmVFbGVtZW50V2l0aFZpZXdJZCh2aWV3SWQpOwotICAgIHZpZXdUb29sLmNsZWFyVmlld1Rvb2xNYW5hZ2VyKHZpZXdJZCk7Ci0gICAgc2VsZWN0ZWROb2RlLnNldFZpZXdJZChBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpOwotICAgIC8vIERvIG5vdCBhZGQgdGhpcyB0byB0aGUgaGlzdG9yeS4KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGlua0Zvckhpc3RvcnkoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJWYXIoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpOwotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRTdGF0dXNDb250ZW50UGFnZSgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL0Zvcm1BY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9Gb3JtQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NGQzMGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL0Zvcm1BY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkhUTUxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEZvcm1BY3Rpb24gZXh0ZW5kcyBBY3Rpb24KLXsKLSAgcHVibGljIEZvcm1BY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYWJzdHJhY3QgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBwb3B1bGF0ZVByb3BlcnR5VGFibGUoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIgPSBuZXcgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIoKTsKLSAgICAgIHBhcnNlci5wYXJzZVJlcXVlc3QocmVxdWVzdCxIVE1MVXRpbHMuVVRGOF9FTkNPRElORyk7Ci0gICAgICBnZXRTZWxlY3RlZEZvcm1Ub29sKCkuY2xlYXJFcnJvcnMoKTsKLSAgICAgIGJvb2xlYW4gcmVzdWx0ID0gcHJvY2Vzc1BhcnNlZFJlc3VsdHMocGFyc2VyKTsKLSAgICAgIHJlbW92ZWRQcm9wZXJ0aWVzXy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgY2F0Y2ggKE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFByb3BlcnR5VGFibGUoSGFzaHRhYmxlIHByb3BlcnR5VGFibGUpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBwcm9jZXNzUGFyc2VkUmVzdWx0cyhuZXcgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIocHJvcGVydHlUYWJsZSkpOwotICAgIH0KLSAgICBjYXRjaCAoTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24gbWZkZSkKLSAgICB7Ci0gICAgfQotICAgIGZvciAoSXRlcmF0b3IgaXQgPSBwcm9wZXJ0eVRhYmxlLmtleVNldCgpLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgewotICAgICAgT2JqZWN0IGtleSA9IGl0Lm5leHQoKTsKLSAgICAgIEhhc2h0YWJsZSB0aGlzUHJvcGVydHlUYWJsZSA9IGdldFByb3BlcnR5VGFibGUoKTsKLSAgICAgIGlmICghdGhpc1Byb3BlcnR5VGFibGUuY29udGFpbnNLZXkoa2V5KSkKLSAgICAgICAgYWRkUHJvcGVydHkoa2V5LCBwcm9wZXJ0eVRhYmxlLmdldChrZXkpKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBhZGRUb0hpc3RvcnkoaW50IHBlcnNwZWN0aXZlSWQsU3RyaW5nIHVybCkKLSAgewotICAgIGNvbnRyb2xsZXJfLmFkZFRvSGlzdG9yeShwZXJzcGVjdGl2ZUlkLHVybCk7Ci0gIH0KLQotICBwdWJsaWMgYWJzdHJhY3QgRm9ybVRvb2wgZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL0Zvcm1JbnB1dEV4Y2VwdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL0Zvcm1JbnB1dEV4Y2VwdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjJjY2E0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9Gb3JtSW5wdXRFeGNlcHRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zOwotCi0vLyBBIGNsYXNzIGZvciByZXBvcnRpbmcgZm9ybSBpbnB1dCBleGNlcHRpb25zLgotcHVibGljIGNsYXNzIEZvcm1JbnB1dEV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgotewotICAvKioKLQkgKiBDb21tZW50IGZvciA8Y29kZT5zZXJpYWxWZXJzaW9uVUlEPC9jb2RlPgotCSAqLwotCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDMyNTc4NDY2MDE2ODU5Mzg3NDJMOwotCi1wdWJsaWMgRm9ybUlucHV0RXhjZXB0aW9uKFN0cmluZyBtc2cpCi0gIHsKLSAgICBzdXBlcihtc2cpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNzI0NWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyOwotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZmFjdG9yeS5XU0RMRmFjdG9yeTsKLWltcG9ydCBqYXZheC53c2RsLnhtbC5XU0RMV3JpdGVyOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5XU0lMRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC53c2RsNGouV1NETEZhY3RvcnlJbXBsOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uIGV4dGVuZHMgTGlua0FjdGlvbgotewotICBwdWJsaWMgSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgLy8gb3MgaXMgdGhlIE91dHB1dFN0cmVhbSBvZiB0aGUgZmlsZSBpbiB0aGUgZmlsZSBzeXN0ZW0KLSAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gd3JpdGUoT3V0cHV0U3RyZWFtIG9zKTsKLQotICAvLyB0aGUgZGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZQotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldERlZmF1bHRGaWxlTmFtZSgpOwotCi0gIHB1YmxpYyBib29sZWFuIHdyaXRlV1NETERlZmluaXRpb24oT3V0cHV0U3RyZWFtIG9zLCBEZWZpbml0aW9uIGRlZmluaXRpb24pCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBXU0RMRmFjdG9yeSB3c2RsRmFjdG9yeSA9IG5ldyBXU0RMRmFjdG9yeUltcGwoKTsKLSAgICAgIFdTRExXcml0ZXIgd3NkbFdyaXRlciA9IHdzZGxGYWN0b3J5Lm5ld1dTRExXcml0ZXIoKTsKLSAgICAgIHdzZGxXcml0ZXIud3JpdGVXU0RMKGRlZmluaXRpb24sIG9zKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHdyaXRlV1NJTERvY3VtZW50KE91dHB1dFN0cmVhbSBvcywgV1NJTERvY3VtZW50IHdzaWxEb2MpCi0gIHsKLSAgICBPdXRwdXRTdHJlYW1Xcml0ZXIgb3N3ID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBvc3cgPSBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKG9zKTsKLSAgICAgIHdzaWxEb2Mud3JpdGUob3N3KTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBmaW5hbGx5Ci0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGlmIChvc3cgIT0gbnVsbCkKLSAgICAgICAgICBvc3cuY2xvc2UoKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSUQsIGludCB0b29sSUQsIGludCB2aWV3SUQsIGludCB2aWV3VG9vbElELCBTdHJpbmcganNwUGFnZSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcihqc3BQYWdlKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPycpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQobm9kZUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5UT09MSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodG9vbElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodmlld0lEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXVE9PTElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdUb29sSUQpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzTGlua1BhcmFtZXRlcnMoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICBTdHJpbmcgbm9kZUlEID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgU3RyaW5nIHRvb2xJRCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5UT09MSUQpOwotICAgIFN0cmluZyB2aWV3SUQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuVklFV0lEKTsKLSAgICBTdHJpbmcgdmlld1Rvb2xJRCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5WSUVXVE9PTElEKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRCk7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KHRvb2xJRCk7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KHZpZXdJRCk7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KHZpZXdUb29sSUQpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsIG5vZGVJRCk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLlRPT0xJRCwgdG9vbElEKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuVklFV0lELCB2aWV3SUQpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5WSUVXVE9PTElELCB2aWV3VG9vbElEKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLQotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9JbXBvcnRUb1dvcmtiZW5jaEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTBjM2Y5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9JbXBvcnRUb1dvcmtiZW5jaEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDcyMSAgIDE0OTA3MCBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzLCB1cGRhdGUgdG8gcmVzcGVjdCBwcmVmZXJlbmNlcwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2VSb290OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dC5QZXJzaXN0ZW50UmVzb3VyY2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkVjbGlwc2VFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2lsLkFkZFdTRExUb1dTSUxDb21tYW5kOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24gZXh0ZW5kcyBGb3JtQWN0aW9uIHsKLSAgcHJpdmF0ZSBJV29ya3NwYWNlUm9vdCBpV29ya3NwYWNlUm9vdF87Ci0gIHByaXZhdGUgSVByb2plY3QgaVByb2plY3RfOwotICBwcml2YXRlIElSZXNvdXJjZSB0YXJnZXRGaWxlUmVzb3VyY2VfOwotCi0gICAgcHVibGljIEltcG9ydFRvV29ya2JlbmNoQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgICAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICAgICAgaVdvcmtzcGFjZVJvb3RfID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbiB7Ci0gICAgICAgIGdldFNlbGVjdGVkRm9ybVRvb2woKTsKLSAgICAgICAgTWVzc2FnZVF1ZXVlIG1zZ1F1ZXVlID0gY29udHJvbGxlcl8uZ2V0Q3VycmVudFBlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotICAgICAgICBTdHJpbmcgd29ya2JlbmNoUHJvamVjdE5hbWUgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5XT1JLQkVOQ0hfUFJPSkVDVF9OQU1FKTsKLSAgICAgICAgaWYgKHdvcmtiZW5jaFByb2plY3ROYW1lID09IG51bGwgfHwgd29ya2JlbmNoUHJvamVjdE5hbWUubGVuZ3RoKCkgPD0gMCkgewotICAgICAgICAgICAgbXNnUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9XT1JLQkVOQ0hfUFJPSkVDVCIpKTsKLSAgICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpUHJvamVjdF8gPSBpV29ya3NwYWNlUm9vdF8uZ2V0UHJvamVjdCh3b3JrYmVuY2hQcm9qZWN0TmFtZSk7Ci0gICAgICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLldPUktCRU5DSF9QUk9KRUNUX05BTUUsIHdvcmtiZW5jaFByb2plY3ROYW1lKTsKLSAgICAgICAgfQotICAgICAgICBTdHJpbmcgaW1wb3J0RmlsZSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLklNUE9SVF9GSUxFKTsKLSAgICAgICAgaWYgKGltcG9ydEZpbGUgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5JTVBPUlRfRklMRSwgQWN0aW9uSW5wdXRzLklNUE9SVF9GSUxFKTsKLSAgICAgICAgICAgIFN0cmluZyBpbXBvcnRlZEZpbGVOYW1lID0gcGFyc2VyLmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuSU1QT1JURURfRklMRV9OQU1FKTsKLSAgICAgICAgICAgIGlmIChpbXBvcnRlZEZpbGVOYW1lID09IG51bGwgfHwgaW1wb3J0ZWRGaWxlTmFtZS5sZW5ndGgoKSA8PSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1zZ1F1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfRklMRV9OQU1FIikpOwotICAgICAgICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5JTVBPUlRFRF9GSUxFX05BTUUsIGltcG9ydGVkRmlsZU5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBpbXBvcnRUb1dTSUwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5JTVBPUlRfVE9fV1NJTCk7Ci0gICAgICAgIGlmIChpbXBvcnRUb1dTSUwgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5JTVBPUlRfVE9fV1NJTCwgQWN0aW9uSW5wdXRzLklNUE9SVF9UT19XU0lMKTsKLSAgICAgICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuSU1QT1JURURfV1NETF9VUkwsIHBhcnNlci5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLklNUE9SVEVEX1dTRExfVVJMKSk7Ci0gICAgICAgICAgICBTdHJpbmcgd3NpbEZpbGVOYW1lID0gcGFyc2VyLmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuV1NJTF9GSUxFX05BTUUpOwotICAgICAgICAgICAgaWYgKHdzaWxGaWxlTmFtZSA9PSBudWxsIHx8IHdzaWxGaWxlTmFtZS5sZW5ndGgoKSA8PSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1zZ1F1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfV1NJTF9GSUxFX05BTUUiKSk7Ci0gICAgICAgICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLldTSUxfRklMRV9OQU1FLCB3c2lsRmlsZU5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbXBvcnRGaWxlID09IG51bGwgJiYgaW1wb3J0VG9XU0lMID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1zZ1F1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX0lNUE9SVF9PUFRJT05fU0VMRUNURUQiKSk7Ci0gICAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIE91dHB1dFN0cmVhbSBnZXRPdXRwdXRTdHJlYW0oU3RyaW5nIGRlZmF1bHRGaWxlTmFtZSkgdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB7Ci0gICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGNvbnRyb2xsZXJfLmdldFNlcnZsZXRFbmdpbmVTdGF0ZUxvY2F0aW9uKCkgKyBkZWZhdWx0RmlsZU5hbWUpOwotICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGUpOwotICAgICAgICByZXR1cm4gZm9zOwotICAgIH0KLQotICAgIHByaXZhdGUgYm9vbGVhbiBpbXBvcnRUZW1wRmlsZVRvV2ViUHJvamVjdChTdHJpbmcgZGVmYXVsdEZpbGVOYW1lKSB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBDb3JlRXhjZXB0aW9uCi0gICAgewotICAgICAgaWYgKHRhcmdldEZpbGVSZXNvdXJjZV8gIT0gbnVsbCAmJiB0YXJnZXRGaWxlUmVzb3VyY2VfLmdldFR5cGUoKSA9PSBJUmVzb3VyY2UuRklMRSkKLSAgICAgICAgdGFyZ2V0RmlsZVJlc291cmNlXy5kZWxldGUodHJ1ZSxuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLQotICAgICAgU3RyaW5nIGltcG9ydGVkRmlsZU5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuSU1QT1JURURfRklMRV9OQU1FKTsKLSAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGNvbnRyb2xsZXJfLmdldFNlcnZsZXRFbmdpbmVTdGF0ZUxvY2F0aW9uKCkrZGVmYXVsdEZpbGVOYW1lKTsKLSAgICAgIEJ1ZmZlcmVkSW5wdXRTdHJlYW0gYmlzID0gbmV3IEJ1ZmZlcmVkSW5wdXRTdHJlYW0obmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKSk7Ci0KLSAgICAgIElGaWxlIGlGaWxlID0gaVByb2plY3RfLmdldEZpbGUoIi8iK2ltcG9ydGVkRmlsZU5hbWUpOwotICAgICAgaUZpbGUuY3JlYXRlKGJpcyx0cnVlLG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotCi0gICAgICAvLyBSZW1vdmUgdGhlIHRlbXBvcmFyeSBmaWxlCi0gICAgICBmaWxlLmRlbGV0ZSgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gZmlsZUV4aXN0cygpCi0gICAgewotICAgICAgU3RyaW5nIGltcG9ydGVkRmlsZU5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuSU1QT1JURURfRklMRV9OQU1FKTsKLSAgICAgIGlmIChpbXBvcnRlZEZpbGVOYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRhcmdldEZpbGVSZXNvdXJjZV8gPSBpUHJvamVjdF8uZmluZE1lbWJlcihpbXBvcnRlZEZpbGVOYW1lKTsKLSAgICAgICAgcmV0dXJuICh0YXJnZXRGaWxlUmVzb3VyY2VfICE9IG51bGwgJiYgdGFyZ2V0RmlsZVJlc291cmNlXy5nZXRUeXBlKCkgPT0gSVJlc291cmNlLkZJTEUpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaXNUYXJnZXRGaWxlUmVzb3VyY2VSZWFkT25seSgpCi0gICAgewotICAgICAgcmV0dXJuIHRhcmdldEZpbGVSZXNvdXJjZV8uZ2V0UmVzb3VyY2VBdHRyaWJ1dGVzKCkuaXNSZWFkT25seSgpOwotICAgIH0KLQotICAgIAotICAgIHB1YmxpYyBib29sZWFuIGlzQ2hlY2tvdXRGaWxlc0VuYWJsZWQoKQotICAgIHsKLSAgICAJcmV0dXJuIFBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQuZ2V0SW5zdGFuY2UoKS5pc0NoZWNrb3V0RmlsZXNFbmFibGVkKCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlUGx1Z2luRmlsZU1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2VJZCkKLSAgICB7Ci0gICAgICBTdHJpbmcgaW1wb3J0ZWRGaWxlTmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5JTVBPUlRFRF9GSUxFX05BTUUpOwotICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UobWVzc2FnZUlkLG5ldyBTdHJpbmdbXXtpUHJvamVjdF8uZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpLGltcG9ydGVkRmlsZU5hbWV9KTsKLSAgICB9Ci0KLSAgICAKLSAgICBwdWJsaWMgYm9vbGVhbiBpc092ZXJ3cml0ZUZpbGVzRW5hYmxlZCgpCi0gICAgewotICAgIAlyZXR1cm4gUGVyc2lzdGVudFJlc291cmNlQ29udGV4dC5nZXRJbnN0YW5jZSgpLmlzT3ZlcndyaXRlRmlsZXNFbmFibGVkKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVFZGl0KCkKLSAgICB7Ci0gICAgICBJRmlsZVtdIGZpbGVzID0gbmV3IElGaWxlWzFdOwotICAgICAgZmlsZXNbMF0gPSAoSUZpbGUpdGFyZ2V0RmlsZVJlc291cmNlXzsKLSAgICAgIElTdGF0dXMgc3RhdHVzID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLnZhbGlkYXRlRWRpdChmaWxlcyxudWxsKTsKLSAgICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSBjb250cm9sbGVyXy5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHN0YXR1cy5nZXRNZXNzYWdlKCkpOwotICAgICAgcmV0dXJuIHN0YXR1cy5pc09LKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gcnVuKCkgewotICAgICAgICBNZXNzYWdlUXVldWUgbXNnUXVldWUgPSBjb250cm9sbGVyXy5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICAgICAgaWYgKHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuSU1QT1JUX0ZJTEUpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uIGFjdGlvbiA9IG5ld0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbigpOwotICAgICAgICAgICAgICAgIGFjdGlvbi5ydW4oKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgZGVmYXVsdEZpbGVOYW1lID0gYWN0aW9uLmdldERlZmF1bHRGaWxlTmFtZSgpOwotICAgICAgICAgICAgICAgIGlmICghYWN0aW9uLndyaXRlKGdldE91dHB1dFN0cmVhbShkZWZhdWx0RmlsZU5hbWUpKSkgewotICAgICAgICAgICAgICAgICAgICBtc2dRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9XUklUSU5HX1RFTVBfRklMRV9UT19GUyIpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbXBvcnRUZW1wRmlsZVRvV2ViUHJvamVjdChkZWZhdWx0RmlsZU5hbWUpOwotICAgICAgICAgICAgICAgIFN0cmluZyBpbXBvcnRlZEZpbGVOYW1lID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLklNUE9SVEVEX0ZJTEVfTkFNRSk7Ci0gICAgICAgICAgICAgICAgbXNnUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfSU5GT19JTVBPUlRfVE9fV09SS0JFTkNIX1NVQ0NFU1NGVUwiLCBpbXBvcnRlZEZpbGVOYW1lKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGZuZmUpIHsKLSAgICAgICAgICAgICAgICBtc2dRdWV1ZS5hZGRNZXNzYWdlKGZuZmUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkgewotICAgICAgICAgICAgICAgIG1zZ1F1ZXVlLmFkZE1lc3NhZ2UoY2UuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuSU1QT1JUX1RPX1dTSUwpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBwcm9qZWN0TmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5XT1JLQkVOQ0hfUFJPSkVDVF9OQU1FKTsKLSAgICAgICAgICAgIFN0cmluZyBpbXBvcnRlZFdTSUxGaWxlTmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5XU0lMX0ZJTEVfTkFNRSk7Ci0gICAgICAgICAgICBTdHJpbmcgd3NkbFVSTCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5JTVBPUlRFRF9XU0RMX1VSTCk7Ci0gICAgICAgICAgICBTdHJpbmdCdWZmZXIgd3NpbFBsYXRmb3JtVVJMID0gbmV3IFN0cmluZ0J1ZmZlcigicGxhdGZvcm06L3Jlc291cmNlLyIpOwotICAgICAgICAgICAgd3NpbFBsYXRmb3JtVVJMLmFwcGVuZChwcm9qZWN0TmFtZSk7Ci0gICAgICAgICAgICB3c2lsUGxhdGZvcm1VUkwuYXBwZW5kKCcvJyk7Ci0gICAgICAgICAgICB3c2lsUGxhdGZvcm1VUkwuYXBwZW5kKGltcG9ydGVkV1NJTEZpbGVOYW1lKTsKLSAgICAgICAgICAgIEFkZFdTRExUb1dTSUxDb21tYW5kIGNvbW1hbmQgPSBuZXcgQWRkV1NETFRvV1NJTENvbW1hbmQoKTsKLSAgICAgICAgICAgIFN0cmluZ1tdIGFyZ3MgPSBuZXcgU3RyaW5nWzVdOwotICAgICAgICAgICAgYXJnc1swXSA9IEFkZFdTRExUb1dTSUxDb21tYW5kLkFSR19XU0lMOwotICAgICAgICAgICAgYXJnc1sxXSA9IHdzaWxQbGF0Zm9ybVVSTC50b1N0cmluZygpOwotICAgICAgICAgICAgYXJnc1syXSA9IEFkZFdTRExUb1dTSUxDb21tYW5kLkFSR19XU0RMOwotICAgICAgICAgICAgYXJnc1szXSA9IHdzZGxVUkw7Ci0gICAgICAgICAgICBhcmdzWzRdID0gQWRkV1NETFRvV1NJTENvbW1hbmQuQVJHX1JFU09MVkVfV1NETDsKLSAgICAgICAgICAgIGNvbW1hbmQuc2V0QXJndW1lbnRzKGFyZ3MpOwotICAgICAgICAgICAgSUVudmlyb25tZW50IGVudiA9IG5ldyBFY2xpcHNlRW52aXJvbm1lbnQobnVsbCwgbnVsbCwgbnVsbCk7Ci0gICAgICAgICAgICBjb21tYW5kLnNldEVudmlyb25tZW50KCBlbnYgKTsKLSAgICAgICAgICAgIGNvbW1hbmQuZXhlY3V0ZSggbnVsbCwgbnVsbCApOwotICAgICAgICAgICAgbXNnUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfSU5GT19JTVBPUlRfU0VSVklDRV9SRUZfVE9fV1NJTF9TVUNDRVNTRlVMIiwgaW1wb3J0ZWRXU0lMRmlsZU5hbWUpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCk7Ci0gICAgcHVibGljIGFic3RyYWN0IEltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbiBuZXdJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24oKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTNhMzZiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuTGF1bmNoV2l6YXJkUnVubmFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLkxhdW5jaFdpemFyZFRhc2s7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uIGV4dGVuZHMgRm9ybUFjdGlvbgotewotICBwdWJsaWMgTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgd2l6YXJkSUQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5XRUJfU0VSVklDRV9XSVpBUkQpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuV0VCX1NFUlZJQ0VfV0laQVJELCB3aXphcmRJRCk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBsYXVuY2hXaXphcmQoU3RyaW5nIHdzZGxVUkwpCi0gIHsKLSAgICBMYXVuY2hXaXphcmRUYXNrIHRhc2sgPSBMYXVuY2hXaXphcmRUYXNrLmdldEluc3RhbmNlKCk7Ci0gICAgaWYgKHRhc2suZ2V0SXNFeGVjdXRpbmcoKSkKLSAgICB7Ci0gICAgICBjb250cm9sbGVyXy5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9XSVpBUkRfQUxSRUFEWV9SVU5OSU5HIikpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpbnQgd2l6YXJkSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5XRUJfU0VSVklDRV9XSVpBUkQpKTsKLSAgICBMYXVuY2hXaXphcmRSdW5uYWJsZSBydW5uYWJsZTsKLSAgICBpZiAod2l6YXJkSUQgPT0gQWN0aW9uSW5wdXRzLldFQl9TRVJWSUNFX0NMSUVOVF9XSVpBUkQpCi0gICAgICBydW5uYWJsZSA9IG5ldyBMYXVuY2hXaXphcmRSdW5uYWJsZSgib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuY2xpZW50d2l6YXJkIiwgd3NkbFVSTCk7Ci0gICAgZWxzZSBpZiAod2l6YXJkSUQgPT0gQWN0aW9uSW5wdXRzLldFQl9TRVJWSUNFX1NLRUxFVE9OX1dJWkFSRCkKLSAgICAgIHJ1bm5hYmxlID0gbmV3IExhdW5jaFdpemFyZFJ1bm5hYmxlKCJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZCIsIHdzZGxVUkwpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB0YXNrLmNoZWNrQW5kQXN5bmNFeGVjKHJ1bm5hYmxlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFZhcigpOwotCi0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9MaW5rQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvTGlua0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2Y2NDRkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9MaW5rQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci0KLS8vIEFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyB0aGUgYWN0aW9uIG9mIGNsaWNraW5nIGEgbGluay4gVGhlc2UgYWN0aW9ucwotLy8gbWF5IGNoYW5nZSB0aGUgaGlzdG9yeSBsaXN0LgotcHVibGljIGFic3RyYWN0IGNsYXNzIExpbmtBY3Rpb24gZXh0ZW5kcyBBY3Rpb24KLXsKLSAgcHJpdmF0ZSBib29sZWFuIGlzQWRkZWRUb0hpc3RvcnlfOwotICBwcml2YXRlIGJvb2xlYW4gaXNTdGFsZUJyZWFkQ3J1bWJfOwotCi0gIHB1YmxpYyBMaW5rQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIGlzQWRkZWRUb0hpc3RvcnlfID0gZmFsc2U7Ci0gICAgaXNTdGFsZUJyZWFkQ3J1bWJfID0gZmFsc2U7Ci0gIH0KLQotICAvLyBEZXRlcm1pbmUgaWYgdGhlIGFjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIHRoaXMgaGlzdG9yeSBsaXN0LgotICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHJ1bigpIG1ldGhvZC4KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSgpCi0gIHsKLSAgICByZXR1cm4gaXNBZGRlZFRvSGlzdG9yeV87Ci0gIH0KLQotICBwcm90ZWN0ZWQgYWJzdHJhY3QgYm9vbGVhbiBwcm9jZXNzTGlua1BhcmFtZXRlcnMoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpOwotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHBvcHVsYXRlUHJvcGVydHlUYWJsZShIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKLSAgewotICAgIFN0cmluZyBpc0hpc3RvcnlTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuSVNISVNUT1JZKTsKLSAgICBpZiAoaXNIaXN0b3J5U3RyaW5nICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLklTSElTVE9SWSxpc0hpc3RvcnlTdHJpbmcpOwotICAgIHJldHVybiBwcm9jZXNzTGlua1BhcmFtZXRlcnMocmVxdWVzdCk7Ci0gIH0KLQotICAvLyBBZGQgdGhlIGFjdGlvbidzIFVSTCB0byB0aGUgY29udHJvbGxlcidzIGhpc3RvcnkgbGlzdC4KLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgYWRkVG9IaXN0b3J5KGludCBwZXJzcGVjdGl2ZUlkLFN0cmluZyB1cmwpCi0gIHsKLSAgICBpZiAoIWlzSGlzdG9yeUFjdGlvbigpKQotICAgICAgaXNBZGRlZFRvSGlzdG9yeV8gPSBjb250cm9sbGVyXy5hZGRUb0hpc3RvcnkocGVyc3BlY3RpdmVJZCx1cmwpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNIaXN0b3J5QWN0aW9uKCkKLSAgewotICAgIHJldHVybiAocHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5JU0hJU1RPUlkpICE9IG51bGwpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0U3RhbGVCcmVhZENydW1iKCkKLSAgewotICAgIGlmIChpc0hpc3RvcnlBY3Rpb24oKSkKLSAgICB7Ci0gICAgICBpc1N0YWxlQnJlYWRDcnVtYl8gPSB0cnVlOwotICAgICAgY29udHJvbGxlcl8ucHJvY2Vzc1N0YWxlQnJlYWRDcnVtYigpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzU3RhbGVCcmVhZENydW1iKCkKLSAgewotICAgIHJldHVybiBpc1N0YWxlQnJlYWRDcnVtYl87Ci0gIH0KLQotICAvLyBDYWxsIHRoaXMgd2hlbiBhIHN0YWxlIGJyZWFkY3J1bWIgaXMgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyBoaXN0b3J5IGNoYWluLgotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldE5leHRIaXN0b3J5QWN0aW9uTGluaygpCi0gIHsKLSAgICByZXR1cm4gUmV0cmlldmVIaXN0b3J5QWN0aW9uLmdldEFjdGlvbkxpbmsoY29udHJvbGxlcl8uZ2V0SGlzdG9yeURpcmVjdGlvbigpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL05vZGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9Ob2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNDRhNjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL05vZGVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgTm9kZUFjdGlvbiBleHRlbmRzIExpbmtBY3Rpb24KLXsKLSAgcHJvdGVjdGVkIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyXzsKLSAgcHJpdmF0ZSBib29sZWFuIHJlcXVpcmVzVHJlZVZpZXdSZWZyZXNoXzsKLSAgcHJpdmF0ZSBib29sZWFuIHJlcXVpcmVzTm9kZVNlbGVjdGlvbl87Ci0gIHByaXZhdGUgYm9vbGVhbiByZXF1aXJlc1ZpZXdTZWxlY3Rpb25fOwotICBwcml2YXRlIGJvb2xlYW4gcmVxdWlyZXNTdGF0dXNVcGRhdGVfOwotCi0gIHB1YmxpYyBOb2RlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcixOb2RlTWFuYWdlciBub2RlTWFuYWdlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIG5vZGVNYW5hZ2VyXyA9IG5vZGVNYW5hZ2VyOwotICAgIHJlcXVpcmVzVHJlZVZpZXdSZWZyZXNoXyA9IGZhbHNlOwotICAgIHJlcXVpcmVzTm9kZVNlbGVjdGlvbl8gPSBmYWxzZTsKLSAgICByZXF1aXJlc1ZpZXdTZWxlY3Rpb25fID0gZmFsc2U7Ci0gICAgcmVxdWlyZXNTdGF0dXNVcGRhdGVfID0gZmFsc2U7Ci0gIH0KLQotICAvLyAuLi5qc3A/bm9kZUlkPS4uLjwmaXNIaXN0b3J5PTE+Ci0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NMaW5rUGFyYW1ldGVycyhIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKLSAgewotICAgIFN0cmluZyBub2RlSWRTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICAvLyBQZXJmb3JtIGRhdGEgdmFsaWRhdGlvbi4KLSAgICB0cnkKLSAgICB7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KG5vZGVJZFN0cmluZyk7Ci0gICAgfQotICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBWYWxpZGF0aW9uIGZhaWxlZCEKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsbm9kZUlkU3RyaW5nKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIGlzU3RhbGVOb2RlKGludCBub2RlSWQpCi0gIHsKLSAgICByZXR1cm4gKG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJZCkgPT0gbnVsbCk7Ci0gIH0KLQotICAvKioKLSAgKiBNYWtlIGEgbm9kZSB2aXNpYmxlLiBBIG5vZGUgaXMgdmlzaWJsZSB3aGVuIGFsbCBvZiBpdHMgYW5jZXN0b3JzIGFyZSBleHBhbmRlZC4KLSAgKiBAcGFyYW0gTm9kZSBUaGUgbm9kZSB0byBiZSBtYWRlIHZpc2libGUuCi0gICogQHJldHVybiBib29sZWFuIEluZGljYXRvciBmb3Igd2hldGhlciBvciBub3QgdGhlIHRyZWUgc3RydWN0dXJlIHdhcyBjaGFuZ2VkIChpLmUuIGV4cGFuZGVkIHRvIHNob3cgdGhlIG5vZGUgaW4gcXVlc3Rpb24pLgotICAqLwotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBtYWtlTm9kZVZpc2libGUoTm9kZSBub2RlKQotICB7Ci0gICAgcmVxdWlyZXNUcmVlVmlld1JlZnJlc2hfID0gbm9kZS5nZXROb2RlTWFuYWdlcigpLm1ha2VOb2RlVmlzaWJsZShub2RlKTsKLSAgICByZXR1cm4gcmVxdWlyZXNUcmVlVmlld1JlZnJlc2hfOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ha2UgYSBub2RlIHZpc2libGUuIEEgbm9kZSBpcyB2aXNpYmxlIHdoZW4gYWxsIG9mIGl0cyBhbmNlc3RvcnMgYXJlIGV4cGFuZGVkLgotICAgKiBAcGFyYW0gTm9kZSBUaGUgbm9kZSB0byBiZSBtYWRlIHZpc2libGUuCi0gICAqIEByZXR1cm4gYm9vbGVhbiBJbmRpY2F0b3IgZm9yIHdoZXRoZXIgb3Igbm90IHRoZSB0cmVlIHN0cnVjdHVyZSB3YXMgY2hhbmdlZCAoaS5lLiBleHBhbmRlZCB0byBzaG93IHRoZSBub2RlIGluIHF1ZXN0aW9uKS4KLSAgICovCi0gICBwdWJsaWMgZmluYWwgdm9pZCBzZXRUcmVlUmVmcmVzaE5lZWRlZCgpCi0gICB7Ci0gICAgIHJlcXVpcmVzVHJlZVZpZXdSZWZyZXNoXyA9IHRydWU7Ci0gICAgIAotICAgfQotICAKLSAgLyoqCi0gICogU2VsZWN0IGEgbm9kZSB3aXRoIGlkIG5vZGVJZC4KLSAgKiBAcGFyYW0gaW50IFRoZSBpZCBvZiB0aGUgbm9kZSB0byBiZSBzZWxlY3RlZC4KLSAgKi8KLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgc2V0U2VsZWN0ZWROb2RlSWQoaW50IG5vZGVJZCkKLSAgewotICAgIGlmIChub2RlTWFuYWdlcl8uZ2V0U2VsZWN0ZWROb2RlSWQoKSAhPSBub2RlSWQpCi0gICAgewotICAgICAgcmVxdWlyZXNOb2RlU2VsZWN0aW9uXyA9IHRydWU7Ci0gICAgICBub2RlTWFuYWdlcl8uc2V0U2VsZWN0ZWROb2RlSWQobm9kZUlkKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBzZXRTZWxlY3RlZFZpZXdJZChpbnQgdmlld0lkKQotICB7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgaWYgKHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSAhPSB2aWV3SWQpCi0gICAgewotICAgICAgcmVxdWlyZXNWaWV3U2VsZWN0aW9uXyA9IHRydWU7Ci0gICAgICBzZWxlY3RlZE5vZGUuc2V0Vmlld0lkKHZpZXdJZCk7Ci0gICAgfQotICB9Ci0KLSAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSB0cmVldmlldyByZXF1aXJlcyByZWxvYWRpbmcgYXMgYSByZXN1bHQgb2YgdGhpcyBhY3Rpb24uCi0gIC8vIFJlbG9hZGluZyBpcyByZXF1aXJlZCB3aGVuIGJyYW5jaGVzIGFyZSBhZGRlZC9yZW1vdmVkLgotICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc1RyZWVWaWV3UmVmcmVzaCgpCi0gIHsKLSAgICByZXR1cm4gcmVxdWlyZXNUcmVlVmlld1JlZnJlc2hfOwotICB9Ci0KLSAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgbmV3IG5vZGUgaGFzIGJlZW4gc2VsZWN0ZWQgYXMgYSByZXN1bHQgb2YgdGhlIGFjdGlvbi4KLSAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNOb2RlU2VsZWN0aW9uKCkKLSAgewotICAgIHJldHVybiByZXF1aXJlc05vZGVTZWxlY3Rpb25fOwotICB9Ci0KLSAgLy8gRGV0ZXJtaW5lIGlmIGEgbmV3IHZpZXcgZWxlbWVudCBpcyBzZWxlY3RlZC4KLSAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNWaWV3U2VsZWN0aW9uKCkKLSAgewotICAgIHJldHVybiByZXF1aXJlc1ZpZXdTZWxlY3Rpb25fOwotICB9Ci0KLSAgLy8gRGV0ZXJtaW5lIGlmIGFueSBzdGF0dXMgbWVzc2FnZXMgYXJvc2UgZnJvbSB0aGlzIGFjdGlvbi4KLSAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNTdGF0dXNVcGRhdGUoKQotICB7Ci0gICAgcmV0dXJuIHJlcXVpcmVzU3RhdHVzVXBkYXRlXzsKLSAgfQotCi0gIHByb3RlY3RlZCBhYnN0cmFjdCBTdHJpbmcgZ2V0QWN0aW9uTGlua0Zvckhpc3RvcnkoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9PcGVuQ2FsZW5kYXJCcm93c2VyQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvT3BlbkNhbGVuZGFyQnJvd3NlckFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDIyMTE5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9PcGVuQ2FsZW5kYXJCcm93c2VyQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci0KLXB1YmxpYyBjbGFzcyBPcGVuQ2FsZW5kYXJCcm93c2VyQWN0aW9uIGV4dGVuZHMgQWN0aW9uCi17Ci0gIHB1YmxpYyBPcGVuQ2FsZW5kYXJCcm93c2VyQWN0aW9uKCkKLSAgewotICB9Ci0KLSAgLy8gY2FsZW5kYXJfYnJvd3Nlci5qc3A/c2Vzc2lvbklkPS4uLiZjYWxlbmRhclR5cGU9Li4uCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmsoU3RyaW5nIHNlc3Npb25JZCxpbnQgY2FsZW5kYXJUeXBlKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJjYWxlbmRhcl9icm93c2VyLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuU0VTU0lPTklEKS5hcHBlbmQoJz0nKS5hcHBlbmQoc2Vzc2lvbklkKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRSkuYXBwZW5kKCc9JykuYXBwZW5kKGNhbGVuZGFyVHlwZSk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGlua0ZvckRhdGUoU3RyaW5nIHNlc3Npb25JZCkKLSAgewotICAgIHJldHVybiBnZXRBY3Rpb25MaW5rKHNlc3Npb25JZCxBY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRV9EQVRFKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGlua0ZvckRhdGVUaW1lKFN0cmluZyBzZXNzaW9uSWQpCi0gIHsKLSAgICByZXR1cm4gZ2V0QWN0aW9uTGluayhzZXNzaW9uSWQsQWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEVfREFURVRJTUUpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9yR1llYXJNb250aChTdHJpbmcgc2Vzc2lvbklkKQotICB7Ci0gICAgcmV0dXJuIGdldEFjdGlvbkxpbmsoc2Vzc2lvbklkLEFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0dZRUFSTU9OVEgpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9yR0RheShTdHJpbmcgc2Vzc2lvbklkKQotICB7Ci0gICAgcmV0dXJuIGdldEFjdGlvbkxpbmsoc2Vzc2lvbklkLEFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0dEQVkpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9yR01vbnRoRGF5KFN0cmluZyBzZXNzaW9uSWQpCi0gIHsKLSAgICByZXR1cm4gZ2V0QWN0aW9uTGluayhzZXNzaW9uSWQsQWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEVfR01PTlRIREFZKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHBvcHVsYXRlUHJvcGVydHlUYWJsZShIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvT3BlbldTRExCcm93c2VyQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvT3BlbldTRExCcm93c2VyQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNGNkODAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL09wZW5XU0RMQnJvd3NlckFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotCi1wdWJsaWMgY2xhc3MgT3BlbldTRExCcm93c2VyQWN0aW9uIGV4dGVuZHMgQWN0aW9uCi17Ci0gIHB1YmxpYyBPcGVuV1NETEJyb3dzZXJBY3Rpb24oKQotICB7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rKFN0cmluZyBzZXNzaW9uSWQsaW50IHdzZGxUeXBlKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ3c2RsX2Jyb3dzZXIuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpLmFwcGVuZCgnPScpLmFwcGVuZChzZXNzaW9uSWQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJykuYXBwZW5kKEFjdGlvbklucHV0cy5XU0RMX1RZUEUpLmFwcGVuZCgnPScpLmFwcGVuZCh3c2RsVHlwZSk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JTZXJ2aWNlKFN0cmluZyBzZXNzaW9uSWQpCi0gIHsKLSAgICByZXR1cm4gZ2V0QWN0aW9uTGluayhzZXNzaW9uSWQsQWN0aW9uSW5wdXRzLldTRExfVFlQRV9TRVJWSUNFKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGlua0ZvclNlcnZpY2VJbnRlcmZhY2UoU3RyaW5nIHNlc3Npb25JZCkKLSAgewotICAgIHJldHVybiBnZXRBY3Rpb25MaW5rKHNlc3Npb25JZCxBY3Rpb25JbnB1dHMuV1NETF9UWVBFX1NFUlZJQ0VfSU5URVJGQUNFKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHBvcHVsYXRlUHJvcGVydHlUYWJsZShIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvUHJveHlMb2FkUGFnZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL1Byb3h5TG9hZFBhZ2VBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlOTMwOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvUHJveHlMb2FkUGFnZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotCi1wdWJsaWMgY2xhc3MgUHJveHlMb2FkUGFnZUFjdGlvbiBleHRlbmRzIEFjdGlvbgotewotICAvLyBHZXQgdGhlIGFjdGlvbiBnaXZlbiBhIHJlbGF0aXZlIHRhcmdldFBhZ2UgVVJMLiBlLmcuICJmb3Jtcy9Mb25nTG9hZGluZ0Zvcm0uanNwIgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rKFN0cmluZyB0YXJnZXRQYWdlKQotICB7Ci0gICAgcmV0dXJuIGdldEFjdGlvbkxpbmsobnVsbCx0YXJnZXRQYWdlKTsKLSAgfQotICAKLSAgLy8gR2V0IHRoZSBhY3Rpb24gZ2l2ZW4gYSBzZXNzaW9uSWQgYW5kIGEgcmVsYXRpdmUgdGFyZ2V0UGFnZSBVUkwuCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmsoU3RyaW5nIHNlc3Npb25JZCxTdHJpbmcgdGFyZ2V0UGFnZSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigiZm9ybXMvUHJveHlMb2FkUGFnZS5qc3A/Iik7Ci0gICAgaWYgKHNlc3Npb25JZCAhPSBudWxsKQotICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCkuYXBwZW5kKCc9JykuYXBwZW5kKHNlc3Npb25JZCkuYXBwZW5kKCcmJyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlRBUkdFVF9QQUdFKS5hcHBlbmQoJz0nKS5hcHBlbmQodGFyZ2V0UGFnZSk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gcG9wdWxhdGVQcm9wZXJ0eVRhYmxlKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KQotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL1Jlc2l6ZUZyYW1lc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL1Jlc2l6ZUZyYW1lc0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzcwNTBlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9SZXNpemVGcmFtZXNBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5IVE1MVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBSZXNpemVGcmFtZXNBY3Rpb24gZXh0ZW5kcyBBY3Rpb24KLXsKLSAgcHJvdGVjdGVkIENvbnRyb2xsZXIgY29udHJvbGxlcl87Ci0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgZnJhbWVOYW1lID0gcGFyc2VyLmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuRlJBTUVfTkFNRSk7Ci0gICAgaWYgKGZyYW1lTmFtZSAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5GUkFNRV9OQU1FLGZyYW1lTmFtZSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBwcm9jZXNzT3RoZXJzKHBhcnNlcik7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBhYnN0cmFjdCBib29sZWFuIHByb2Nlc3NPdGhlcnMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci0gIAotICBwdWJsaWMgUmVzaXplRnJhbWVzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIGNvbnRyb2xsZXJfID0gY29udHJvbGxlcjsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcG9wdWxhdGVQcm9wZXJ0eVRhYmxlKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyID0gbmV3IE11bHRpcGFydEZvcm1EYXRhUGFyc2VyKCk7Ci0gICAgICBwYXJzZXIucGFyc2VSZXF1ZXN0KHJlcXVlc3QsSFRNTFV0aWxzLlVURjhfRU5DT0RJTkcpOwotICAgICAgYm9vbGVhbiByZXN1bHQgPSBwcm9jZXNzUGFyc2VkUmVzdWx0cyhwYXJzZXIpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgY2F0Y2ggKE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9SZXRyaWV2ZUhpc3RvcnlBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9SZXRyaWV2ZUhpc3RvcnlBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ5ZDIyYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvUmV0cmlldmVIaXN0b3J5QWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkJyZWFkQ3J1bWI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci0KLXB1YmxpYyBjbGFzcyBSZXRyaWV2ZUhpc3RvcnlBY3Rpb24gZXh0ZW5kcyBMaW5rQWN0aW9uCi17Ci0gIHByaXZhdGUgQnJlYWRDcnVtYiBicmVhZENydW1iXzsKLQotICBwdWJsaWMgUmV0cmlldmVIaXN0b3J5QWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIGJyZWFkQ3J1bWJfID0gbnVsbDsKLSAgfQotCi0gIC8vIGFjdGlvbnMvUmV0cmlldmVIaXN0b3J5QWN0aW9uLmpzcD9qdW1wPTEgIC0gZm9yd2FyZCAgKEFjdGlvbklucHV0cy5KVU1QX0ZPUldBUkQpCi0gIC8vIGFjdGlvbnMvUmV0cmlldmVIaXN0b3J5QWN0aW9uLmpzcD9qdW1wPS0xIC0gYmFja3dhcmQgKEFjdGlvbklucHV0cy5KVU1QX0JBQ0spCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IGp1bXApCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoImFjdGlvbnMvUmV0cmlldmVIaXN0b3J5QWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuSlVNUCkuYXBwZW5kKCc9JykuYXBwZW5kKGp1bXApOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzTGlua1BhcmFtZXRlcnMoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICBTdHJpbmcganVtcFN0cmluZyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5KVU1QKTsKLSAgICAvLyBQZXJmb3JtIGRhdGEgdmFsaWRhdGlvbi4KLSAgICB0cnkKLSAgICB7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KGp1bXBTdHJpbmcpOwotICAgIH0KLSAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gVmFsaWRhdGlvbiBmYWlsZWQhCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuSlVNUCxqdW1wU3RyaW5nKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpbnQganVtcCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLkpVTVApKTsKLSAgICBzd2l0Y2ggKGp1bXApCi0gICAgewotICAgICAgY2FzZSBBY3Rpb25JbnB1dHMuSlVNUF9GT1JXQVJEOgotICAgICAgICBicmVhZENydW1iXyA9IGNvbnRyb2xsZXJfLmZvcndhcmQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEFjdGlvbklucHV0cy5KVU1QX0JBQ0s6Ci0gICAgICAgIGJyZWFkQ3J1bWJfID0gY29udHJvbGxlcl8uYmFjaygpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIEJyZWFkQ3J1bWIgZ2V0QnJlYWRDcnVtYigpCi0gIHsKLSAgICByZXR1cm4gYnJlYWRDcnVtYl87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9TZWxlY3ROb2RlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvU2VsZWN0Tm9kZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjM4ZTg4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9TZWxlY3ROb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLk5vZGVTZWxlY3Rpb25UcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBTZWxlY3ROb2RlQWN0aW9uIGV4dGVuZHMgTm9kZUFjdGlvbgotewotICBwcm90ZWN0ZWQgTm9kZSBzZWxlY3RlZE5vZGVfOwotCi0gIHB1YmxpYyBTZWxlY3ROb2RlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcixOb2RlTWFuYWdlciBub2RlTWFuYWdlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsbm9kZU1hbmFnZXIpOwotICAgIHNlbGVjdGVkTm9kZV8gPSBudWxsOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgcGVyZm9ybUJhc2VBY3Rpb24oaW50IG5vZGVJZCkKLSAgewotICAgIHNldFNlbGVjdGVkTm9kZUlkKG5vZGVJZCk7Ci0gICAgc2VsZWN0ZWROb2RlXyA9IG5vZGVNYW5hZ2VyXy5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHBlcmZvcm1FeHRlbmRlZEFjdGlvbigpCi0gIHsKLQkgLy90aGUgZXh0ZW5kZWQgY2xhc3NlcyBjYW4gaW50ZXJqZWN0IGhlcmUgIAotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgaW50IG5vZGVJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIGlmICghaXNTdGFsZU5vZGUobm9kZUlkKSkKLSAgICB7Ci0gICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbm9kZSBpcyB2aXNpYmxlLgotICAgICAgbWFrZU5vZGVWaXNpYmxlKG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJZCkpOwotICAgICAgcGVyZm9ybUJhc2VBY3Rpb24obm9kZUlkKTsKLSAgICAgIHBlcmZvcm1FeHRlbmRlZEFjdGlvbigpOwotICAgICAgYWRkVG9IaXN0b3J5KGdldFBlcnNwZWN0aXZlSWQoKSxnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBzZXRTdGFsZUJyZWFkQ3J1bWIoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgTm9kZSBnZXRTZWxlY3RlZE5vZGUoKQotICB7Ci0gICAgcmV0dXJuIHNlbGVjdGVkTm9kZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBJVHJhbnNmb3JtZXJbXSBnZXRUcmFuc2Zvcm1lcnMoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBJVHJhbnNmb3JtZXJbXSB7bmV3IE5vZGVTZWxlY3Rpb25UcmFuc2Zvcm1lcihjb250cm9sbGVyXyl9OwotICB9Ci0KLSAgLy8gU2VsZWN0aW5nIGEgbm9kZSBjaGFuZ2VzIHRoZSB0cmVldmlldyBjb250ZW50IGFuZCB0aGUgcHJvcGVydGllcyBjb250YWluZXIuCi0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKTsKLSAgcHVibGljIGFic3RyYWN0IGludCBnZXRQZXJzcGVjdGl2ZUlkKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvU2VsZWN0Tm9kZVRvb2xBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9TZWxlY3ROb2RlVG9vbEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjZmZmU4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9TZWxlY3ROb2RlVG9vbEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lci5DdXJyZW50Tm9kZVNlbGVjdGlvblRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUudHJhbnNmb3JtZXIuSVRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlZpZXdUb29sOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2VsZWN0Tm9kZVRvb2xBY3Rpb24gZXh0ZW5kcyBTZWxlY3ROb2RlQWN0aW9uCi17Ci0gIHByb3RlY3RlZCBOb2RlTWFuYWdlciBub2RlTWFuYWdlcl87Ci0gIHByb3RlY3RlZCBUb29sIHNlbGVjdGVkVG9vbF87Ci0KLSAgcHVibGljIFNlbGVjdE5vZGVUb29sQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcixOb2RlTWFuYWdlciBub2RlTWFuYWdlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsbm9kZU1hbmFnZXIpOwotICAgIG5vZGVNYW5hZ2VyXyA9IG5vZGVNYW5hZ2VyOwotICAgIHNlbGVjdGVkVG9vbF8gPSBudWxsOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIE5vZGVNYW5hZ2VyIGdldE5vZGVNYW5hZ2VyKCkKLSAgewotICAgIHJldHVybiBub2RlTWFuYWdlcl87Ci0gIH0KLQotICAvLyAuLi5qc3A/bm9kZUlkPS4uLiZ0b29sSWQ9Li4uPCZ2aWV3SWQ9Li4uJnZpZXdUb29sSWQ9Li4uPjwmaXNIaXN0b3J5PTE+Ci0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NMaW5rUGFyYW1ldGVycyhIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ID0gc3VwZXIucHJvY2Vzc0xpbmtQYXJhbWV0ZXJzKHJlcXVlc3QpOwotICAgIFN0cmluZyB0b29sSWRTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuVE9PTElEKTsKLSAgICBTdHJpbmcgdmlld0lkU3RyaW5nID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlZJRVdJRCk7Ci0gICAgU3RyaW5nIHZpZXdUb29sSWRTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuVklFV1RPT0xJRCk7Ci0KLSAgICAvLyBQZXJmb3JtIGRhdGEgdmFsaWRhdGlvbi4KLSAgICB0cnkKLSAgICB7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KHRvb2xJZFN0cmluZyk7Ci0gICAgfQotICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBWYWxpZGF0aW9uIGZhaWxlZC4KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5UT09MSUQsdG9vbElkU3RyaW5nKTsKLQotICAgIC8vIE9wdGlvbmFsIHByb3BlcnRpZXMKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpbnQgdmlld0lkID0gSW50ZWdlci5wYXJzZUludCh2aWV3SWRTdHJpbmcpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5WSUVXSUQsdmlld0lkU3RyaW5nKTsKLSAgICAgIGlmICh2aWV3SWQgIT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKQotICAgICAgewotICAgICAgICBJbnRlZ2VyLnBhcnNlSW50KHZpZXdUb29sSWRTdHJpbmcpOwotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLlZJRVdUT09MSUQsdmlld1Rvb2xJZFN0cmluZyk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgaW50IG5vZGVJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIGlmICghaXNTdGFsZU5vZGUobm9kZUlkKSkKLSAgICB7Ci0gICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbm9kZSBpcyB2aXNpYmxlLgotICAgICAgbWFrZU5vZGVWaXNpYmxlKG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJZCkpOwotICAgICAgc2V0U2VsZWN0ZWROb2RlSWQobm9kZUlkKTsKLSAgICAgIHNlbGVjdGVkTm9kZV8gPSBub2RlTWFuYWdlcl8uZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgICBpbnQgdG9vbElkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVE9PTElEKSk7Ci0gICAgICBUb29sTWFuYWdlciB0b29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZV8uZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICAgIHRvb2xNYW5hZ2VyLnNldFNlbGVjdGVkVG9vbElkKHRvb2xJZCk7Ci0gICAgICBzZWxlY3RlZFRvb2xfID0gdG9vbE1hbmFnZXIuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgICBTdHJpbmcgdmlld0lkU3RyaW5nID0gKChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5WSUVXSUQpKTsKLSAgICAgIGlmICh2aWV3SWRTdHJpbmcgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaW50IHZpZXdJZCA9IEludGVnZXIucGFyc2VJbnQodmlld0lkU3RyaW5nKTsKLSAgICAgICAgc2V0U2VsZWN0ZWRWaWV3SWQodmlld0lkKTsKLSAgICAgICAgaWYgKHZpZXdJZCAhPSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgdmlld1Rvb2xJZFN0cmluZyA9ICgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVklFV1RPT0xJRCkpOwotICAgICAgICAgIFZpZXdUb29sIHZpZXdUb29sID0gKFZpZXdUb29sKXNlbGVjdGVkVG9vbF87Ci0gICAgICAgICAgaWYgKHZpZXdUb29sSWRTdHJpbmcgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgdmlld1Rvb2xJZCA9IEludGVnZXIucGFyc2VJbnQodmlld1Rvb2xJZFN0cmluZyk7Ci0gICAgICAgICAgICBUb29sTWFuYWdlciB2aWV3VG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGVfLmdldFZpZXdUb29sTWFuYWdlcigpOwotICAgICAgICAgICAgaWYgKHZpZXdUb29sTWFuYWdlciA9PSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAoIWlzSGlzdG9yeUFjdGlvbigpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmlld1Rvb2xNYW5hZ2VyID0gdmlld1Rvb2wuY3JlYXRlVG9vbE1hbmFnZXIodmlld0lkKTsKLSAgICAgICAgICAgICAgICB2aWV3VG9vbElkID0gdmlld1Rvb2xNYW5hZ2VyLmdldFNlbGVjdGVkVG9vbElkKCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc2V0U3RhbGVCcmVhZENydW1iKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2aWV3VG9vbE1hbmFnZXIuc2V0U2VsZWN0ZWRUb29sSWQodmlld1Rvb2xJZCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHNldFNlbGVjdGVkVmlld0lkKEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCk7Ci0gICAgICBhZGRUb0hpc3RvcnkoZ2V0UGVyc3BlY3RpdmVJZCgpLGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHNldFN0YWxlQnJlYWRDcnVtYigpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBJVHJhbnNmb3JtZXJbXSBnZXRUcmFuc2Zvcm1lcnMoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBJVHJhbnNmb3JtZXJbXSB7bmV3IEN1cnJlbnROb2RlU2VsZWN0aW9uVHJhbnNmb3JtZXIoY29udHJvbGxlcl8pfTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBUb29sIGdldFNlbGVjdGVkVmlld1Rvb2woKQotICB7Ci0gICAgaWYgKHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVklFV0lEKSAhPSBudWxsKQotICAgICAgcmV0dXJuIHNlbGVjdGVkTm9kZV8uZ2V0Vmlld1Rvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgVG9vbCBnZXRTZWxlY3RlZFRvb2woKQotICB7Ci0gICAgcmV0dXJuIHNlbGVjdGVkVG9vbF87Ci0gIH0KLQotICAvLyBTZWxlY3RpbmcgYSBub2RlIHRvb2wgdXBkYXRlcyB0aGUgcHJvcGVydGllcyBjb250ZW50LiBBbHNvLCBpbiB0aGUgZXZlbnQKLSAgLy8gb2YgYSBoaXN0b3J5IHN3aXRjaCwgbm9kZXMgbWF5IG5lZWQgdG8gYmUgc2VsZWN0ZWQgcmVzdWx0aW5nIGluIGNoYW5nZXMgdG8KLSAgLy8gYm90aCB0aGUgdHJlZXZpZXcgY29udGVudCBhbmQgdGhlIHByb3BlcnRpZXMgY29udGFpbmVyLiBUaGVzZSByZXF1aXJlbWVudHMgYXJlCi0gIC8vIGNvdmVyZWQgdGhyb3VnaCB0aGUgYmFzZSBjbGFzcy4KLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGVudFZhcigpOwotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFByb3BlcnRpZXNDb250ZW50UGFnZSgpOwotICBwdWJsaWMgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgYWJzdHJhY3QgaW50IGdldFBlcnNwZWN0aXZlSWQoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9TaG93UGVyc3BlY3RpdmVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9TaG93UGVyc3BlY3RpdmVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE3NGZhMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvU2hvd1BlcnNwZWN0aXZlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuSFRNTFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotCi1wdWJsaWMgY2xhc3MgU2hvd1BlcnNwZWN0aXZlQWN0aW9uIGV4dGVuZHMgTGlua0FjdGlvbgotewotICBwdWJsaWMgU2hvd1BlcnNwZWN0aXZlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgLy8gYWN0aW9ucy9zaG93X3BlcnNwZWN0aXZlLmpzcD9wZXJzcGVjdGl2ZT0wPCZpc0hpc3Rvcnk9MT4gLSBVRERJIChBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfVURESSkKLSAgLy8gYWN0aW9ucy9zaG93X3BlcnNwZWN0aXZlLmpzcD9wZXJzcGVjdGl2ZT0xPCZpc0hpc3Rvcnk9MT4gLSBXU0lMIChBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfV1NJTCkKLSAgLy8gYWN0aW9ucy9zaG93X3BlcnNwZWN0aXZlLmpzcD9wZXJzcGVjdGl2ZT0yPCZpc0hpc3Rvcnk9MT4gLSBXU0RMIChBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfV1NETCkKLSAgLy8gYWN0aW9ucy9zaG93X3BlcnNwZWN0aXZlLmpzcD9wZXJzcGVjdGl2ZT0zPCZpc0hpc3Rvcnk9MT4gLSBGYXZvcml0ZXMgKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9GQVZPUklURVMpCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5ld1BlcnNwZWN0aXZlLGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigiYWN0aW9ucy9TaG93UGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRSkuYXBwZW5kKCc9JykuYXBwZW5kKG5ld1BlcnNwZWN0aXZlKTsKLSAgICBpZiAoZm9ySGlzdG9yeSkKLSAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJykuYXBwZW5kKEFjdGlvbklucHV0cy5JU0hJU1RPUlkpLmFwcGVuZCgiPTEiKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIHByb2Nlc3NMaW5rUGFyYW1ldGVycyhIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0gICAgU3RyaW5nIHBlcnNwZWN0aXZlU3RyaW5nID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFKTsKLSAgICAvLyBQZXJmb3JtIGRhdGEgdmFsaWRhdGlvbi4KLSAgICB0cnkKLSAgICB7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KHBlcnNwZWN0aXZlU3RyaW5nKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkUscGVyc3BlY3RpdmVTdHJpbmcpOwotICAgICAgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyID0gbmV3IE11bHRpcGFydEZvcm1EYXRhUGFyc2VyKCk7Ci0gICAgICBwYXJzZXIucGFyc2VSZXF1ZXN0KHJlcXVlc3QsSFRNTFV0aWxzLlVURjhfRU5DT0RJTkcpOwotICAgICAgcmVzdWx0ID0gcHJvY2Vzc1BhcnNlZFJlc3VsdHMocGFyc2VyKTsKLSAgICAgIHJlbW92ZWRQcm9wZXJ0aWVzXy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgIH0KLSAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gVmFsaWRhdGlvbiBmYWlsZWQhIC0gVGhpcyBzaG91bGQgbm90IGhhcHBlbi4KLSAgICB9Ci0gICAgY2F0Y2ggKE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIGludCBwZXJzcGVjdGl2ZSA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFKSk7Ci0gICAgY29udHJvbGxlcl8uc2V0Q3VycmVudFBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlKTsKLSAgICBhZGRUb0hpc3RvcnkocGVyc3BlY3RpdmUsZ2V0QWN0aW9uTGluayhwZXJzcGVjdGl2ZSx0cnVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9Ub2dnbGVOb2RlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvVG9nZ2xlTm9kZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzA1YjQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9Ub2dnbGVOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLk5vZGVJZFRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFRvZ2dsZU5vZGVBY3Rpb24gZXh0ZW5kcyBOb2RlQWN0aW9uCi17Ci0gIHByb3RlY3RlZCBOb2RlIHRvZ2dsZWROb2RlXzsKLSAgcHVibGljIFRvZ2dsZU5vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyLE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcixub2RlTWFuYWdlcik7Ci0gICAgdG9nZ2xlZE5vZGVfID0gbnVsbDsKLSAgfQotCi0gIC8vIFRvZ2dsZSB0aGUgY3VycmVudCBub2RlIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBpZmYgdGhlIGN1cnJlbnRseSBzZWxlY3RlZAotICAvLyBpcyBhIHJlbGF0ZWQgZGVzY2VuZGFudCBvZiBhIGNvbGxhcHNlZCBub2RlLgotICAvKioKLSAgKiBUb2dnbGUgdGhlIGN1cnJlbnQgbm9kZSBhbmQgdXBkYXRlIHRoZSBzZWxlY3Rpb24gaWZmIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQKLSAgKiBub2RlIGlzIGEgcmVsYXRlZCBkZXNjZW5kYW50IG9mIHRoZSBjdXJyZW50IG5vZGUgYW5kIHRoZSBjdXJyZW50IG5vZGUgaXMKLSAgKiBub3cgY29sbGFwc2VkIGFzIGEgcmVzdWx0IG9mIHRoaXMgYWN0aW9uLgotICAqCi0gICogQHBhcmFtIGludCBUaGUgbm9kZSBJRCBvZiB0aGUgbm9kZSBmb3Igd2hpY2ggdGhpcyBhY3Rpb24gYXBwbGllcyB0by4KLSAgKiBAcmV0dXJuIGJvb2xlYW4gSW5kaWNhdG9yIG9mIHdoZXRoZXIgb3Igbm90IGEgc2VsZWN0aW9uIGNoYW5nZSB3YXMgbmVjZXNzYXJ5LgotICAqLwotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBwZXJmb3JtQmFzZUFjdGlvbihpbnQgbm9kZUlkKQotICB7Ci0gICAgdG9nZ2xlZE5vZGVfID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlkKTsKLSAgICBub2RlTWFuYWdlcl8uc2V0Rm9jdXNlZE5vZGVJZChub2RlSWQpOwotICAgIHRvZ2dsZWROb2RlXy5zZXRWaXNpYmlsaXR5T2ZDaGlsZHJlbighdG9nZ2xlZE5vZGVfLmlzT3BlbigpKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBpZiAoc2VsZWN0ZWROb2RlICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKCFzZWxlY3RlZE5vZGUuaXNWaXNpYmxlKCkpCi0gICAgICB7Ci0gICAgICAgIHNldFNlbGVjdGVkTm9kZUlkKG5vZGVJZCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgaW50IG5vZGVJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIGlmICghaXNTdGFsZU5vZGUobm9kZUlkKSkKLSAgICB7Ci0gICAgICBpZiAocGVyZm9ybUJhc2VBY3Rpb24obm9kZUlkKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIG9mIHRoZSB0b2dnbGUgbGluayBpbiB0aGUgaGlzdG9yeS4KLSAgICAgICAgYWRkVG9IaXN0b3J5KGdldFBlcnNwZWN0aXZlSWQoKSxnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpKTsKLSAgICAgIH0KLSAgICAgIC8vIERvIG5vdCBzYXZlIHRoZSB0b2dnbGUgaW4gaGlzdG9yeS4KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBzZXRTdGFsZUJyZWFkQ3J1bWIoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgTm9kZSBnZXRUb2dnbGVkTm9kZSgpCi0gIHsKLSAgICByZXR1cm4gdG9nZ2xlZE5vZGVfOwotICB9Ci0KLSAgcHVibGljIElUcmFuc2Zvcm1lcltdIGdldFRyYW5zZm9ybWVycygpCi0gIHsKLSAgICByZXR1cm4gbmV3IElUcmFuc2Zvcm1lcltdIHtuZXcgTm9kZUlkVHJhbnNmb3JtZXIoY29udHJvbGxlcl8pfTsKLSAgfQotCi0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKTsKLSAgcHVibGljIGFic3RyYWN0IGludCBnZXRQZXJzcGVjdGl2ZUlkKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvVmFsaWRhdGVFZGl0QWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvVmFsaWRhdGVFZGl0QWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwOTRmNTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL1ZhbGlkYXRlRWRpdEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVFZGl0QWN0aW9uIGV4dGVuZHMgQWN0aW9uCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmsoKQotICB7Ci0gICAgcmV0dXJuICJhY3Rpb25zL1ZhbGlkYXRlRWRpdEFjdGlvbkpTUC5qc3AiOwotICB9Ci0gICAgCi0gIHB1YmxpYyBib29sZWFuIHBvcHVsYXRlUHJvcGVydHlUYWJsZShIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9XU0RMRmlsZU5hbWVIZWxwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vYWN0aW9ucy9XU0RMRmlsZU5hbWVIZWxwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzYyNGYyNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvV1NETEZpbGVOYW1lSGVscGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9uczsKLQotcHVibGljIGNsYXNzIFdTRExGaWxlTmFtZUhlbHBlcgotewotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGVmYXVsdF8gPSAidGVtcC53c2RsIjsKLSAgCi0gIC8qKgotICAqIEdpdmVuIGEgd3NkbCBwYXRoIChmaWxlLCBVUkwgZXRjLiksIGd1ZXNzIGF0IHRoZSBmaWxlIG5hbWUgYnkgbG9va2luZyBmb3IgdGhlIC53c2RsIGV4dGVuc2lvbiBhdCB0aGUgZW5kIG9mIHRoZQotICAqIHBhdGggYW5kIHRoZSBmaWxlIHRoYXQgaXQgYmVsb25ncyB0by4gSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIHJldHVybiB0aGUgZGVmYXVsdCBkZWZpbmVkIGluIHRoaXMgY2xhc3MuCi0gICogQHBhcmFtIFN0cmluZyBUaGUgcGF0aCAoZmlsZSwgVVJMIGV0Yy4pIG9mIHRoaXMgV1NETCBmaWxlLgotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBXU0RMIGZpbGUgbmFtZSBkZXRlcm1pbmVkIGJ5IHRoaXMgcm91dGluZS4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0V1NETEZpbGVOYW1lKFN0cmluZyB3c2RsUGF0aG5hbWUpCi0gIHsKLSAgICBpZiAod3NkbFBhdGhuYW1lICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKHdzZGxQYXRobmFtZS5lbmRzV2l0aCgiLndzZGwiKSkKLSAgICAgIHsKLSAgICAgICAgaW50IGxhc3RTZXBhcmF0b3JQb3MgPSBNYXRoLm1heCh3c2RsUGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSx3c2RsUGF0aG5hbWUubGFzdEluZGV4T2YoIlxcIikpOwotICAgICAgICBpZiAobGFzdFNlcGFyYXRvclBvcyA+IDApCi0gICAgICAgICAgcmV0dXJuIHdzZGxQYXRobmFtZS5zdWJzdHJpbmcobGFzdFNlcGFyYXRvclBvcysxLHdzZGxQYXRobmFtZS5sZW5ndGgoKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBkZWZhdWx0XzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9hY3Rpb25zL1dyaXRlV1NETFRvV29ya2JlbmNoQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvV3JpdGVXU0RMVG9Xb3JrYmVuY2hBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEzNjliMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2FjdGlvbnMvV3JpdGVXU0RMVG9Xb3JrYmVuY2hBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKLQotcHVibGljIGNsYXNzIFdyaXRlV1NETFRvV29ya2JlbmNoQWN0aW9uIGV4dGVuZHMgQWN0aW9uCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmsoKQotICB7Ci0gICAgcmV0dXJuICJhY3Rpb25zL1dyaXRlV1NETFRvV29ya2JlbmNoQWN0aW9uSlNQLmpzcCI7Ci0gIH0KLSAgICAKLSAgcHVibGljIGJvb2xlYW4gcG9wdWxhdGVQcm9wZXJ0eVRhYmxlKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KQotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9jb25zdGFudHMvQWN0aW9uSW5wdXRzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2NvbnN0YW50cy9BY3Rpb25JbnB1dHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU2MGNmMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2NvbnN0YW50cy9BY3Rpb25JbnB1dHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIEFjdGlvbklucHV0cwotewotICAvLyBVUkwgcGFybSBmb3IgYWxsIGFjdGlvbnMgd2hpY2ggYXJlIGluIHRoZSBoaXN0b3J5IGxpc3QuCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElTSElTVE9SWSA9ICJpc0hpc3RvcnkiOwotCi0gIC8vIFV0aWxpdHkgY29uc3RhbnQgZm9yIHRyZWUgbm9kZSBpZGVudGlmaWNhdGlvbi4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTk9ERUlEID0gIm5vZGVJZCI7Ci0KLSAgLy8gVXRpbGl0eSBjb25zdGFudCBmb3IgdG9vbCBpZGVudGlmaWNhdGlvbi4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVE9PTElEID0gInRvb2xJZCI7Ci0KLSAgLy8gVXRpbGl0eSBjb25zdGFudCBmb3IgdmlldyBpZGVudGlmaWNhdGlvbi4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVklFV0lEID0gInZpZXdJZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFZJRVdJRF9ERUZBVUxUID0gLTE7Ci0KLSAgLy8gVXRpbGl0eSBjb25zdGFudCBmb3IgdmlldyB0b29sIGlkZW50aWZpY2F0aW9uLgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBWSUVXVE9PTElEID0gInZpZXdUb29sSWQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBWSUVXVE9PTElEX0RFRkFVTFQgPSAtMTsKLQotICAvLyBVdGlsaXR5IGNvbnN0YW50cyBmb3IgdHJhbnNwb3J0IGNsYXNzZXMKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNQT1JUX0NMQVNTX05BTUUgPSAib3JnLnVkZGk0ai5UcmFuc3BvcnRDbGFzc05hbWUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUUkFTUE9SVF9DTEFTUyA9ICJvcmcudWRkaTRqLnRyYW5zcG9ydC5BcGFjaGVBeGlzVHJhbnNwb3J0IjsKLSAgLy9wdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBWElTX1RSQU5TUE9SVF9DTEFTUyA9ICJvcmcudWRkaTRqLnRyYW5zcG9ydC5BcGFjaGVBeGlzVHJhbnNwb3J0IjsKLSAgLy9wdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTT0FQX1RSQU5TUE9SVF9DTEFTUyA9ICJvcmcudWRkaTRqLnRyYW5zcG9ydC5BcGFjaGVTT0FQVHJhbnNwb3J0IjsKLQotICAvLyBUb2dnbGVOb2RlQWN0aW9uIGFuZCBpdHMgZGVyaXZhdGl2ZXMuCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9QRU4gPSAib3BlbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9QRU5fTk9ERSA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENMT1NFX05PREUgPSAwOwotCi0gIC8vIFNob3dQZXJzcGVjdGl2ZUFjdGlvbgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQRVJTUEVDVElWRSA9ICJwZXJzcGVjdGl2ZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFUlNQRUNUSVZFX1VEREkgPSAwOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQRVJTUEVDVElWRV9XU0lMID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEVSU1BFQ1RJVkVfV1NETCA9IDI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFUlNQRUNUSVZFX0ZBVk9SSVRFUyA9IDM7Ci0KLSAgLy8gUmV0cmlldmVIaXN0b3J5QWN0aW9uCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEpVTVAgPSAianVtcCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEpVTVBfRk9SV0FSRCA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEpVTVBfQkFDSyA9IC0xOwotCi0gIC8vIExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV0VCX1NFUlZJQ0VfV0laQVJEID0gIndlYlNlcnZpY2VXaXphcmQiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBXRUJfU0VSVklDRV9DTElFTlRfV0laQVJEID0gMDsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgV0VCX1NFUlZJQ0VfU0tFTEVUT05fV0laQVJEID0gMTsKLQotICAvLyBJbXBvcnRUb1dvcmtiZW5jaEFjdGlvbgotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXT1JLQkVOQ0hfUFJPSkVDVF9OQU1FID0gIndvcmtiZW5jaFByb2plY3ROYW1lIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgSU1QT1JUX0ZJTEUgPSAiaW1wb3J0V1NETCI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIElNUE9SVEVEX0ZJTEVfTkFNRSA9ICJpbXBvcnRlZEZpbGVOYW1lIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgSU1QT1JUX1RPX1dTSUwgPSAiaW1wb3J0VG9XU0lMIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NJTF9GSUxFX05BTUUgPSAiV1NJTEZpbGVOYW1lIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgSU1QT1JURURfV1NETF9VUkwgPSAiaW1wb3J0ZWRXc2RsVXJsIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgSU1QT1JUX0FDVElPTiA9ICJpbXBvcnRBY3Rpb24iOwotCi0gIC8vIFByb3h5TG9hZEFjdGlvbgotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBUQVJHRVRfUEFHRSA9ICJ0YXJnZXRQYWdlIjsKLQotICAvLyBTZXNzaW9uIElEIGZvciBwb3AgdXBzIHdob3NlIGJyb3dzZXJzIGNob29zZSB0byBpZ25vcmUgdGhlIHNlc3Npb24uCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFNFU1NJT05JRCA9ICJzSWQiOwotCi0gIC8vIFdTREwgQnJvd3NlcgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9KRUNUID0gInByb2plY3QiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDQVRFR09SWSA9ICJjYXRlZ29yeSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfVFlQRSA9ICJ3c2RsVHlwZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdTRExfVFlQRV9TRVJWSUNFX0lOVEVSRkFDRSA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdTRExfVFlQRV9TRVJWSUNFID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfV0VCUFJPSkVDVF9XU0RMX1VSTCA9ICJ3ZWJQcm9qZWN0V1NETFVSTCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0ZBVk9SSVRFX1dTRExfVVJMID0gImZhdm9yaXRlV1NETFVSTCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX1dTRExfVVJMID0gIndzZGxVUkwiOwotCi0gIC8vIENhbGVuZGFyIEJyb3dzZXIKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0FMRU5EQVJfVFlQRSA9ICJjYWxlbmRhclR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDQUxFTkRBUl9UWVBFX0RBVEUgPSAwOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDQUxFTkRBUl9UWVBFX0RBVEVUSU1FID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0FMRU5EQVJfVFlQRV9HWUVBUk1PTlRIID0gMjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0FMRU5EQVJfVFlQRV9HREFZID0gMzsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0FMRU5EQVJfVFlQRV9HTU9OVEhEQVkgPSA0OwotCi0gIC8vIFJlc2l6ZUZyYW1lQWN0aW9uCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZSQU1FX05BTUUgPSAiZnJhbWVOYW1lIjsKLQotICAvLyBPdGhlciBBY3Rpb25zCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENVUlJFTlRfVE9PTF9NQU5BR0VSID0gImN1cnJlbnRUb29sTWFuYWdlciI7Ci0gIAotICAvLyBBY3Rpb24gRW5naW5lCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElPTl9FTkdJTkVfU0NFTkFSSU8gPSAiYWN0aW9uRW5naW5lU2NlbmFyaW8iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fRU5HSU5FX01PREUgPSAiYWN0aW9uRW5naW5lTW9kZSI7Ci0KLSAgLy8gTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTVVMVElQQVJUX0ZPUk1fREFUQV9QQVJTRVIgPSAibXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIiOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9jb25zdGFudHMvRnJhbWVOYW1lcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9jb25zdGFudHMvRnJhbWVOYW1lcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTg1Mzg3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vY29uc3RhbnRzL0ZyYW1lTmFtZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzOwotCi1wdWJsaWMgY2xhc3MgRnJhbWVOYW1lcwotewotICAvLyB3c2V4cGxvcmVyLmpzcAotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXSU5ET1dfTkFNRV9XU0VYUExPUkVSX0pTUCA9ICJ3c2V4cGxvcmVyLmpzcCI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBFUlNQRUNUSVZFX1dPUktBUkVBID0gInBlcnNwZWN0aXZlX3dvcmthcmVhIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUEVSU1BFQ1RJVkVfVE9PTEJBUiA9ICJwZXJzcGVjdGl2ZV90b29sYmFyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUEVSU1BFQ1RJVkVfQ09OVEVOVCA9ICJwZXJzcGVjdGl2ZV9jb250ZW50IjsKLSAgCi0gIC8vIFdTREwgQnJvd3NlcgotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0RMX1RPT0xCQVIgPSAid3NkbF90b29sYmFyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UID0gIndzZGxfY29udGVudCI7Ci0gIAotICAvLyBDYWxlbmRhciBCcm93c2VyCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIENBTEVOREFSX1RPT0xCQVIgPSAiY2FsZW5kYXJfdG9vbGJhciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIENBTEVOREFSX0NPTlRFTlQgPSAiY2FsZW5kYXJfY29udGVudCI7ICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vY29uc3RhbnRzL01vZGVsQ29uc3RhbnRzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2NvbnN0YW50cy9Nb2RlbENvbnN0YW50cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTg3ZGQyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vY29uc3RhbnRzL01vZGVsQ29uc3RhbnRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIE1vZGVsQ29uc3RhbnRzCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFTF9JRCA9ICJyZWxhdGlvbnNoaXBJZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFTF9MT0NBTE5BTUVfU0VQQVJBVE9SID0gIiMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUxfT1dORVIgPSAib3duZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUxfQ0hJTERSRU4gPSAiY2hpbGRyZW4iOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9jb25zdGFudHMvVG9vbFR5cGVzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2NvbnN0YW50cy9Ub29sVHlwZXMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I5MmNiNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2NvbnN0YW50cy9Ub29sVHlwZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHM7Ci0KLXB1YmxpYyBjbGFzcyBUb29sVHlwZXMKLXsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIEZPUk0gPSAwOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgQUNUSU9OID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIFZJRVcgPSAyOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9kYXRhbW9kZWwvTGlzdEVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZGF0YW1vZGVsL0xpc3RFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZThjMjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9kYXRhbW9kZWwvTGlzdEVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLQotcHVibGljIGNsYXNzIExpc3RFbGVtZW50Ci17Ci0gIHByaXZhdGUgaW50IHZpZXdJZF87Ci0gIHByaXZhdGUgT2JqZWN0IG9iamVjdF87Ci0gIC8vIEZvciBzZWFyY2ggcGFyYW1ldGVyczogaW5mbyBvbiB0aGUgTm9kZSBhbmQgVmlld1Rvb2wgaG9sZGluZyB0aGlzIGVsZW1lbnQuCi0gIHByaXZhdGUgaW50IHRhcmdldE5vZGVJZF87Ci0gIHByaXZhdGUgaW50IHRhcmdldFRvb2xJZF87Ci0gIHByaXZhdGUgaW50IHRhcmdldFZpZXdJZF87Ci0KLSAgcHVibGljIExpc3RFbGVtZW50KE9iamVjdCBvYmplY3QpCi0gIHsKLSAgICBvYmplY3RfID0gb2JqZWN0OwotICAgIHZpZXdJZF8gPSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQ7Ci0gICAgdGFyZ2V0Tm9kZUlkXyA9IC0xOwotICAgIHRhcmdldFRvb2xJZF8gPSAtMTsKLSAgICB0YXJnZXRWaWV3SWRfID0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIE9iamVjdCBnZXRPYmplY3QoKQotICB7Ci0gICAgcmV0dXJuIG9iamVjdF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRWaWV3SWQoaW50IHZpZXdJZCkKLSAgewotICAgIHZpZXdJZF8gPSB2aWV3SWQ7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgaW50IGdldFZpZXdJZCgpCi0gIHsKLSAgICByZXR1cm4gdmlld0lkXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldFRhcmdldFZpZXdUb29sSW5mbyhpbnQgbm9kZUlkLGludCB0b29sSWQsaW50IHZpZXdJZCkKLSAgewotICAgIHRhcmdldE5vZGVJZF8gPSBub2RlSWQ7Ci0gICAgdGFyZ2V0VG9vbElkXyA9IHRvb2xJZDsKLSAgICB0YXJnZXRWaWV3SWRfID0gdmlld0lkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGludCBnZXRUYXJnZXROb2RlSWQoKQotICB7Ci0gICAgcmV0dXJuIHRhcmdldE5vZGVJZF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgaW50IGdldFRhcmdldFRvb2xJZCgpCi0gIHsKLSAgICByZXR1cm4gdGFyZ2V0VG9vbElkXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0VGFyZ2V0Vmlld0lkKCkKLSAgewotICAgIHJldHVybiB0YXJnZXRWaWV3SWRfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICByZXR1cm4gZ2V0T2JqZWN0KCkudG9TdHJpbmcoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9kYXRhbW9kZWwvTGlzdE1hbmFnZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZGF0YW1vZGVsL0xpc3RNYW5hZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YTc4YWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9kYXRhbW9kZWwvTGlzdE1hbmFnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotcHVibGljIGNsYXNzIExpc3RNYW5hZ2VyCi17Ci0gIHByaXZhdGUgaW50IG5leHRWaWV3SWRfOwotICBwcml2YXRlIFZlY3RvciBpdGVtc0xpc3RfOwotICBwcml2YXRlIEhhc2h0YWJsZSBpdGVtc1RhYmxlXzsKLQotICBwdWJsaWMgTGlzdE1hbmFnZXIoKQotICB7Ci0gICAgbmV4dFZpZXdJZF8gPSAwOwotICAgIGl0ZW1zTGlzdF8gPSBuZXcgVmVjdG9yKCk7Ci0gICAgaXRlbXNUYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlTWFuYWdlcihMaXN0RWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaXRlbXNUYWJsZV8ucHV0KFN0cmluZy52YWx1ZU9mKG5leHRWaWV3SWRfKSxlbGVtZW50KTsKLSAgICBlbGVtZW50LnNldFZpZXdJZChuZXh0Vmlld0lkXyk7Ci0gICAgbmV4dFZpZXdJZF8rKzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGFkZChMaXN0RWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaXRlbXNMaXN0Xy5hZGRFbGVtZW50KGVsZW1lbnQpOwotICAgIHVwZGF0ZU1hbmFnZXIoZWxlbWVudCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBhZGRXaXRoQ3VycmVudFZpZXdJZChMaXN0RWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaXRlbXNMaXN0Xy5hZGRFbGVtZW50KGVsZW1lbnQpOwotICAgIGl0ZW1zVGFibGVfLnB1dChTdHJpbmcudmFsdWVPZihlbGVtZW50LmdldFZpZXdJZCgpKSxlbGVtZW50KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBMaXN0RWxlbWVudCBlbGVtZW50QXQoaW50IGluZGV4KQotICB7Ci0gICAgcmV0dXJuIChMaXN0RWxlbWVudClpdGVtc0xpc3RfLmVsZW1lbnRBdChpbmRleCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgTGlzdEVsZW1lbnQgZ2V0RWxlbWVudFdpdGhWaWV3SWQoaW50IHZpZXdJZCkKLSAgewotICAgIHJldHVybiAoTGlzdEVsZW1lbnQpaXRlbXNUYWJsZV8uZ2V0KFN0cmluZy52YWx1ZU9mKHZpZXdJZCkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgcmVtb3ZlRWxlbWVudFdpdGhWaWV3SWQoaW50IHZpZXdJZCkKLSAgewotICAgIGl0ZW1zVGFibGVfLnJlbW92ZShTdHJpbmcudmFsdWVPZih2aWV3SWQpKTsKLSAgICBmb3IgKGludCBpPTA7aTxpdGVtc0xpc3RfLnNpemUoKTtpKyspCi0gICAgewotICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSBlbGVtZW50QXQoaSk7Ci0gICAgICBpZiAobGlzdEVsZW1lbnQuZ2V0Vmlld0lkKCkgPT0gdmlld0lkKQotICAgICAgewotICAgICAgICBpdGVtc0xpc3RfLnJlbW92ZUVsZW1lbnRBdChpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgcmVtb3ZlRWxlbWVudEF0KGludCBpbmRleCkKLSAgewotICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWVsZW1lbnRBdChpbmRleCk7Ci0gICAgaXRlbXNMaXN0Xy5yZW1vdmVFbGVtZW50QXQoaW5kZXgpOwotICAgIGl0ZW1zVGFibGVfLnJlbW92ZShTdHJpbmcudmFsdWVPZihsaXN0RWxlbWVudC5nZXRWaWV3SWQoKSkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgaW5zZXJ0RWxlbWVudEF0KExpc3RFbGVtZW50IGVsZW1lbnQsaW50IGluZGV4KQotICB7Ci0gICAgaXRlbXNMaXN0Xy5pbnNlcnRFbGVtZW50QXQoZWxlbWVudCxpbmRleCk7Ci0gICAgdXBkYXRlTWFuYWdlcihlbGVtZW50KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBFbnVtZXJhdGlvbiBnZXRMaXN0RWxlbWVudHMoKQotICB7Ci0gICAgcmV0dXJuIGl0ZW1zTGlzdF8uZWxlbWVudHMoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGNsZWFyKCkKLSAgewotICAgIGl0ZW1zTGlzdF8ucmVtb3ZlQWxsRWxlbWVudHMoKTsKLSAgICBpdGVtc1RhYmxlXy5jbGVhcigpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIExpc3RNYW5hZ2VyIGNvcHkoTGlzdE1hbmFnZXIgbmV3TGlzdE1hbmFnZXIpCi0gIHsKLSAgICBuZXdMaXN0TWFuYWdlci5jbGVhcigpOwotICAgIGZvciAoaW50IGk9MDtpPGl0ZW1zTGlzdF8uc2l6ZSgpO2krKykKLSAgICB7Ci0gICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudCllbGVtZW50QXQoaSk7Ci0gICAgICBMaXN0RWxlbWVudCBuZXdMaXN0RWxlbWVudCA9IG5ldyBMaXN0RWxlbWVudChsaXN0RWxlbWVudC5nZXRPYmplY3QoKSk7Ci0gICAgICBuZXdMaXN0RWxlbWVudC5zZXRWaWV3SWQobGlzdEVsZW1lbnQuZ2V0Vmlld0lkKCkpOwotICAgICAgbmV3TGlzdEVsZW1lbnQuc2V0VGFyZ2V0Vmlld1Rvb2xJbmZvKGxpc3RFbGVtZW50LmdldFRhcmdldE5vZGVJZCgpLGxpc3RFbGVtZW50LmdldFRhcmdldFRvb2xJZCgpLGxpc3RFbGVtZW50LmdldFRhcmdldFZpZXdJZCgpKTsKLSAgICAgIG5ld0xpc3RNYW5hZ2VyLmFkZFdpdGhDdXJyZW50Vmlld0lkKG5ld0xpc3RFbGVtZW50KTsKLSAgICB9Ci0gICAgbmV3TGlzdE1hbmFnZXIuc2V0TmV4dFZpZXdJZChuZXh0Vmlld0lkXyk7Ci0gICAgcmV0dXJuIG5ld0xpc3RNYW5hZ2VyOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0TmV4dFZpZXdJZChpbnQgbmV4dFZpZXdJZCkKLSAgewotICAgIG5leHRWaWV3SWRfID0gbmV4dFZpZXdJZDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0TmV4dFZpZXdJZCgpCi0gIHsKLSAgICByZXR1cm4gbmV4dFZpZXdJZF87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZGF0YW1vZGVsL1RyZWVFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2RhdGFtb2RlbC9UcmVlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWQwOTgxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZGF0YW1vZGVsL1RyZWVFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLQotcHVibGljIGNsYXNzIFRyZWVFbGVtZW50IGV4dGVuZHMgQmFzaWNFbGVtZW50Ci17Ci0gIHByaXZhdGUgU3RyaW5nIGtleV87Ci0KLSAgcHVibGljIFRyZWVFbGVtZW50KFN0cmluZyBuYW1lLE1vZGVsIG1vZGVsKQotICB7Ci0gICAgc3VwZXIobmFtZSxtb2RlbCk7Ci0gICAga2V5XyA9IG5hbWU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRLZXkoU3RyaW5nIGtleSkKLSAgewotICAgIGtleV8gPSBrZXk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEtleSgpCi0gIHsKLSAgICByZXR1cm4ga2V5XzsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGVxdWFscyhUcmVlRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaWYgKGtleV8gPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4ga2V5Xy5lcXVhbHMoZWxlbWVudC5nZXRLZXkoKSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZW5naW5lL0FjdGlvbkRhdGFQYXJzZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZW5naW5lL0FjdGlvbkRhdGFQYXJzZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNhZjJiNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS9BY3Rpb25EYXRhUGFyc2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5GYWN0b3J5Q29uZmlndXJhdGlvbkVycm9yOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS5jb25zdGFudHMuQWN0aW9uRGF0YUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLmRhdGEuQWN0aW9uRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLmRhdGEuU2NlbmFyaW9EZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUuZGF0YS5UcmFuc2FjdGlvbkRlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLnczYy5kb20uQ0RBVEFTZWN0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLXB1YmxpYyBjbGFzcyBBY3Rpb25EYXRhUGFyc2VyCi17Ci0gIHByaXZhdGUgRG9jdW1lbnQgZG9jOwotCi0gIHB1YmxpYyBTY2VuYXJpb0Rlc2NyaXB0b3IgcGFyc2VTY2VuYXJpbyhFbGVtZW50IGUpCi0gIHsKLSAgICBTY2VuYXJpb0Rlc2NyaXB0b3Igc2NlbmFyaW9EZXNjcmlwdG9yID0gbmV3IFNjZW5hcmlvRGVzY3JpcHRvcigpOwotICAgIE5vZGVMaXN0IHRyYW5zYWN0aW9ucyA9IGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoQWN0aW9uRGF0YUNvbnN0YW50cy5FTEVNRU5UX1RSQU5TQUNUSU9OKTsKLSAgICBUcmFuc2FjdGlvbkRlc2NyaXB0b3JbXSB0cmFuc2FjdGlvbkRlc2NyaXB0b3JzID0gbmV3IFRyYW5zYWN0aW9uRGVzY3JpcHRvclt0cmFuc2FjdGlvbnMuZ2V0TGVuZ3RoKCldOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHJhbnNhY3Rpb25EZXNjcmlwdG9ycy5sZW5ndGg7IGkrKykKLSAgICAgIHRyYW5zYWN0aW9uRGVzY3JpcHRvcnNbaV0gPSBwYXJzZVRyYW5zYWN0aW9uKChFbGVtZW50KSB0cmFuc2FjdGlvbnMuaXRlbShpKSk7Ci0gICAgc2NlbmFyaW9EZXNjcmlwdG9yLnNldFRyYW5zYWN0aW9uRGVzY3JpcHRvcnModHJhbnNhY3Rpb25EZXNjcmlwdG9ycyk7Ci0gICAgcmV0dXJuIHNjZW5hcmlvRGVzY3JpcHRvcjsKLSAgfQotCi0gIHB1YmxpYyBUcmFuc2FjdGlvbkRlc2NyaXB0b3IgcGFyc2VUcmFuc2FjdGlvbihFbGVtZW50IGUpCi0gIHsKLSAgICBUcmFuc2FjdGlvbkRlc2NyaXB0b3IgdHJhbnNhY3Rpb25EZXNjcmlwdG9yID0gbmV3IFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpOwotICAgIE5vZGVMaXN0IGFjdGlvbnMgPSBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKEFjdGlvbkRhdGFDb25zdGFudHMuRUxFTUVOVF9BQ1RJT04pOwotICAgIEFjdGlvbkRlc2NyaXB0b3JbXSBhY3Rpb25EZXNjcmlwdG9ycyA9IG5ldyBBY3Rpb25EZXNjcmlwdG9yW2FjdGlvbnMuZ2V0TGVuZ3RoKCldOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWN0aW9uRGVzY3JpcHRvcnMubGVuZ3RoOyBpKyspCi0gICAgICBhY3Rpb25EZXNjcmlwdG9yc1tpXSA9IHBhcnNlQWN0aW9uKChFbGVtZW50KSBhY3Rpb25zLml0ZW0oaSkpOwotICAgIHRyYW5zYWN0aW9uRGVzY3JpcHRvci5zZXRBY3Rpb25EZXNjcmlwdG9ycyhhY3Rpb25EZXNjcmlwdG9ycyk7Ci0gICAgcmV0dXJuIHRyYW5zYWN0aW9uRGVzY3JpcHRvcjsKLSAgfQotCi0gIHB1YmxpYyBBY3Rpb25EZXNjcmlwdG9yIHBhcnNlQWN0aW9uKEVsZW1lbnQgZSkKLSAgewotICAgIEFjdGlvbkRlc2NyaXB0b3IgYWN0aW9uRGVzY3JpcHRvciA9IG5ldyBBY3Rpb25EZXNjcmlwdG9yKCk7Ci0gICAgYWN0aW9uRGVzY3JpcHRvci5zZXRJZChlLmdldEF0dHJpYnV0ZShBY3Rpb25EYXRhQ29uc3RhbnRzLkFUVFJfSUQpKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBhY3Rpb25EZXNjcmlwdG9yLnNldEF0dGVtcHRzKEludGVnZXIucGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoQWN0aW9uRGF0YUNvbnN0YW50cy5BVFRSX0FUVEVNUFRTKSkpOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgICAgYWN0aW9uRGVzY3JpcHRvci5zZXRBdHRlbXB0cygxKTsKLSAgICB9Ci0gICAgYWN0aW9uRGVzY3JpcHRvci5zZXRTdGF0dXNJZChlLmdldEF0dHJpYnV0ZShBY3Rpb25EYXRhQ29uc3RhbnRzLkFUVFJfU1RBVFVTX0lEKSk7Ci0gICAgSGFzaHRhYmxlIHByb3BlcnRpZXNUYWJsZSA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBOb2RlTGlzdCBwcm9wZXJ0aWVzID0gZS5nZXRFbGVtZW50c0J5VGFnTmFtZShBY3Rpb25EYXRhQ29uc3RhbnRzLkVMRU1FTlRfUFJPUEVSVFkpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJvcGVydGllcy5nZXRMZW5ndGgoKTsgaSsrKQotICAgIHsKLSAgICAgIEVsZW1lbnQgcHJvcGVydHkgPSAoRWxlbWVudCkgcHJvcGVydGllcy5pdGVtKGkpOwotICAgICAgU3RyaW5nIG5hbWUgPSBwcm9wZXJ0eS5nZXRBdHRyaWJ1dGUoQWN0aW9uRGF0YUNvbnN0YW50cy5BVFRSX05BTUUpOwotICAgICAgTm9kZUxpc3QgdmFsdWVMaXN0ID0gcHJvcGVydHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoQWN0aW9uRGF0YUNvbnN0YW50cy5FTEVNRU5UX1ZBTFVFKTsKLSAgICAgIGlmICh2YWx1ZUxpc3QuZ2V0TGVuZ3RoKCkgPiAxKQotICAgICAgewotICAgICAgICBTdHJpbmdbXSB2YWx1ZXMgPSBuZXcgU3RyaW5nW3ZhbHVlTGlzdC5nZXRMZW5ndGgoKV07Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdmFsdWVzLmxlbmd0aDsgaisrKQotICAgICAgICB7Ci0gICAgICAgICAgRWxlbWVudCB2YWx1ZSA9IChFbGVtZW50KSB2YWx1ZUxpc3QuaXRlbShqKTsKLSAgICAgICAgICBOb2RlIHRleHROb2RlID0gdmFsdWUuZ2V0Rmlyc3RDaGlsZCgpOwotICAgICAgICAgIHZhbHVlc1tqXSA9ICh0ZXh0Tm9kZSAhPSBudWxsKSA/IHRleHROb2RlLmdldE5vZGVWYWx1ZSgpLnRyaW0oKSA6ICIiOwotICAgICAgICB9Ci0gICAgICAgIHByb3BlcnRpZXNUYWJsZS5wdXQobmFtZSwgdmFsdWVzKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgTm9kZSB0ZXh0Tm9kZSA9ICgoRWxlbWVudCkgdmFsdWVMaXN0Lml0ZW0oMCkpLmdldEZpcnN0Q2hpbGQoKTsKLSAgICAgICAgcHJvcGVydGllc1RhYmxlLnB1dChuYW1lLCAodGV4dE5vZGUgIT0gbnVsbCkgPyB0ZXh0Tm9kZS5nZXROb2RlVmFsdWUoKS50cmltKCkgOiAiIik7Ci0gICAgICB9Ci0gICAgfQotICAgIGFjdGlvbkRlc2NyaXB0b3Iuc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzVGFibGUpOwotICAgIE5vZGVMaXN0IHN0YXR1c0xpc3QgPSBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKEFjdGlvbkRhdGFDb25zdGFudHMuRUxFTUVOVF9TVEFUVVMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhdHVzTGlzdC5nZXRMZW5ndGgoKTsgaSsrKQotICAgIHsKLSAgICAgIEVsZW1lbnQgc3RhdHVzID0gKEVsZW1lbnQpc3RhdHVzTGlzdC5pdGVtKGkpOwotICAgICAgQ0RBVEFTZWN0aW9uIGNEYXRhID0gKENEQVRBU2VjdGlvbilzdGF0dXMuZ2V0Rmlyc3RDaGlsZCgpOwotICAgICAgYWN0aW9uRGVzY3JpcHRvci5hZGRTdGF0dXMoY0RhdGEuZ2V0RGF0YSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFjdGlvbkRlc2NyaXB0b3I7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudCB0b0VsZW1lbnQoU2NlbmFyaW9EZXNjcmlwdG9yIHNjZW5hcmlvRGVzY3JpcHRvcikKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTsKLSAgICAgIEVsZW1lbnQgc2NlbmFyaW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChBY3Rpb25EYXRhQ29uc3RhbnRzLkVMRU1FTlRfU0NFTkFSSU8pOwotICAgICAgVHJhbnNhY3Rpb25EZXNjcmlwdG9yW10gdHJhbnNhY3Rpb25EZXNjcmlwdG9ycyA9IHNjZW5hcmlvRGVzY3JpcHRvci5nZXRUcmFuc2FjdGlvbkRlc2NyaXB0b3JzKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRyYW5zYWN0aW9uRGVzY3JpcHRvcnMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEVsZW1lbnQgdHJhbnNhY3Rpb25FbGVtZW50ID0gdG9FbGVtZW50KHRyYW5zYWN0aW9uRGVzY3JpcHRvcnNbaV0pOwotICAgICAgICBpZiAodHJhbnNhY3Rpb25FbGVtZW50ICE9IG51bGwpCi0gICAgICAgICAgc2NlbmFyaW9FbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zYWN0aW9uRWxlbWVudCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gc2NlbmFyaW9FbGVtZW50OwotICAgIH0KLSAgICBjYXRjaCAoRE9NRXhjZXB0aW9uIGRvbWUpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIEVsZW1lbnQgdG9FbGVtZW50KFRyYW5zYWN0aW9uRGVzY3JpcHRvciB0cmFuc2FjdGlvbkRlc2NyaXB0b3IpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEb2N1bWVudCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7Ci0gICAgICBFbGVtZW50IHRyYW5zYWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoQWN0aW9uRGF0YUNvbnN0YW50cy5FTEVNRU5UX1RSQU5TQUNUSU9OKTsKLSAgICAgIEFjdGlvbkRlc2NyaXB0b3JbXSBhY3Rpb25EZXNjcmlwdG9ycyA9IHRyYW5zYWN0aW9uRGVzY3JpcHRvci5nZXRBY3Rpb25EZXNjcmlwdG9ycygpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhY3Rpb25EZXNjcmlwdG9ycy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgRWxlbWVudCBhY3Rpb25FbGVtZW50ID0gdG9FbGVtZW50KGFjdGlvbkRlc2NyaXB0b3JzW2ldKTsKLSAgICAgICAgaWYgKGFjdGlvbkVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgICB0cmFuc2FjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoYWN0aW9uRWxlbWVudCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gdHJhbnNhY3Rpb25FbGVtZW50OwotICAgIH0KLSAgICBjYXRjaCAoRE9NRXhjZXB0aW9uIGRvbWUpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIEVsZW1lbnQgdG9FbGVtZW50KEFjdGlvbkRlc2NyaXB0b3IgYWN0aW9uRGVzY3JpcHRvcikKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTsKLSAgICAgIEVsZW1lbnQgYWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoQWN0aW9uRGF0YUNvbnN0YW50cy5FTEVNRU5UX0FDVElPTik7Ci0gICAgICBhY3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZShBY3Rpb25EYXRhQ29uc3RhbnRzLkFUVFJfSUQsIGFjdGlvbkRlc2NyaXB0b3IuZ2V0SWQoKSk7Ci0gICAgICBhY3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZShBY3Rpb25EYXRhQ29uc3RhbnRzLkFUVFJfQVRURU1QVFMsIFN0cmluZy52YWx1ZU9mKGFjdGlvbkRlc2NyaXB0b3IuZ2V0QXR0ZW1wdHMoKSkpOwotICAgICAgU3RyaW5nIHN0YXR1c0lkID0gYWN0aW9uRGVzY3JpcHRvci5nZXRTdGF0dXNJZCgpOwotICAgICAgaWYgKHN0YXR1c0lkICE9IG51bGwpCi0gICAgICAgIGFjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlKEFjdGlvbkRhdGFDb25zdGFudHMuQVRUUl9TVEFUVVNfSUQsIHN0YXR1c0lkKTsKLSAgICAgIEhhc2h0YWJsZSBwcm9wZXJ0aWVzID0gYWN0aW9uRGVzY3JpcHRvci5nZXRQcm9wZXJ0aWVzKCk7Ci0gICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQotICAgICAgewotICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gcHJvcGVydGllcy5rZXlTZXQoKS5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgICAgICB7Ci0gICAgICAgICAgT2JqZWN0IGtleSA9IGl0Lm5leHQoKTsKLSAgICAgICAgICBPYmplY3QgdmFsdWUgPSBwcm9wZXJ0aWVzLmdldChrZXkpOwotICAgICAgICAgIE9iamVjdFtdIHZhbHVlczsKLSAgICAgICAgICBpZiAodmFsdWUuZ2V0Q2xhc3MoKS5pc0FycmF5KCkpCi0gICAgICAgICAgICB2YWx1ZXMgPSAoT2JqZWN0W10pdmFsdWU7Ci0gICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBMaXN0KQotICAgICAgICAgICAgdmFsdWVzID0gKChMaXN0KXZhbHVlKS50b0FycmF5KCk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsdWVzID0gbmV3IE9iamVjdFtdIHt2YWx1ZX07Ci0gICAgICAgICAgYm9vbGVhbiBpc0FkZGVkID0gZmFsc2U7Ci0gICAgICAgICAgRWxlbWVudCBwcm9wZXJ0eUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KEFjdGlvbkRhdGFDb25zdGFudHMuRUxFTUVOVF9QUk9QRVJUWSk7Ci0gICAgICAgICAgcHJvcGVydHlFbGVtZW50LnNldEF0dHJpYnV0ZShBY3Rpb25EYXRhQ29uc3RhbnRzLkFUVFJfTkFNRSwga2V5LnRvU3RyaW5nKCkpOwotICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0gaW5zdGFuY2VvZiBTdHJpbmcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIEVsZW1lbnQgdmFsdWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChBY3Rpb25EYXRhQ29uc3RhbnRzLkVMRU1FTlRfVkFMVUUpOwotICAgICAgICAgICAgICB2YWx1ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodmFsdWVzW2ldLnRvU3RyaW5nKCkpKTsKLSAgICAgICAgICAgICAgcHJvcGVydHlFbGVtZW50LmFwcGVuZENoaWxkKHZhbHVlRWxlbWVudCk7Ci0gICAgICAgICAgICAgIGlzQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoaXNBZGRlZCkKLSAgICAgICAgICAgIGFjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydHlFbGVtZW50KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgTGlzdCBzdGF0dXMgPSBhY3Rpb25EZXNjcmlwdG9yLmdldFN0YXR1cygpOwotICAgICAgaWYgKHN0YXR1cyAhPSBudWxsKQotICAgICAgewotICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gc3RhdHVzLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICAgIHsKLSAgICAgICAgICBFbGVtZW50IHN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KEFjdGlvbkRhdGFDb25zdGFudHMuRUxFTUVOVF9TVEFUVVMpOwotICAgICAgICAgIENEQVRBU2VjdGlvbiBjRGF0YSA9IGRvY3VtZW50LmNyZWF0ZUNEQVRBU2VjdGlvbihpdC5uZXh0KCkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgc3RhdHVzRWxlbWVudC5hcHBlbmRDaGlsZChjRGF0YSk7Ci0gICAgICAgICAgYWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNFbGVtZW50KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIGFjdGlvbkVsZW1lbnQ7Ci0gICAgfQotICAgIGNhdGNoIChET01FeGNlcHRpb24gZG9tZSkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIERvY3VtZW50IGdldERvY3VtZW50KCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIGlmIChkb2MgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotICAgICAgICBEb2N1bWVudEJ1aWxkZXIgYnVpbGRlciA9IGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7Ci0gICAgICAgIGRvYyA9IGJ1aWxkZXIubmV3RG9jdW1lbnQoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBkb2M7Ci0gICAgfQotICAgIGNhdGNoIChGYWN0b3J5Q29uZmlndXJhdGlvbkVycm9yIGZjZSkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gICAgY2F0Y2ggKFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gcGNlKQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvQWN0aW9uRW5naW5lLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS9BY3Rpb25FbmdpbmUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAyZTJkYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS9BY3Rpb25FbmdpbmUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZTsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7Ci1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5TaG93UGVyc3BlY3RpdmVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS5jb25zdGFudHMuQWN0aW9uRGF0YUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLmRhdGEuQWN0aW9uRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLmRhdGEuU2NlbmFyaW9EZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUuZGF0YS5UcmFuc2FjdGlvbkRlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lci5JVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci0KLXB1YmxpYyBjbGFzcyBBY3Rpb25FbmdpbmUKLXsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIE1PREVfRElTQUJMRUQgPSAweDA7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBNT0RFX1NUT1AgPSAweDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBNT0RFX1JFQ09SRCA9IDB4MjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIE1PREVfUExBWSA9IDB4MzsKLQotICBwcml2YXRlIENvbnRyb2xsZXIgY29udHJvbGxlcjsKLSAgcHJpdmF0ZSBieXRlIG1vZGU7Ci0gIHByaXZhdGUgVmVjdG9yIGFjdGlvbkRlc2NyaXB0b3JzOwotCi0gIHB1YmxpYyBBY3Rpb25FbmdpbmUoQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgICBtb2RlID0gTU9ERV9ESVNBQkxFRDsKLSAgICBhY3Rpb25EZXNjcmlwdG9ycyA9IG5ldyBWZWN0b3IoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGV4ZWN1dGVTY2VuYXJpbyhTY2VuYXJpb0Rlc2NyaXB0b3Igc2NlbmFyaW9EZXNjcmlwdG9yKQotICB7Ci0gICAgVHJhbnNhY3Rpb25EZXNjcmlwdG9yW10gdHJhbnNhY3Rpb25EZXNjcmlwdG9ycyA9IHNjZW5hcmlvRGVzY3JpcHRvci5nZXRUcmFuc2FjdGlvbkRlc2NyaXB0b3JzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0cmFuc2FjdGlvbkRlc2NyaXB0b3JzLmxlbmd0aDsgaSsrKQotICAgICAgZXhlY3V0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uRGVzY3JpcHRvcnNbaV0pOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZXhlY3V0ZVRyYW5zYWN0aW9uKFRyYW5zYWN0aW9uRGVzY3JpcHRvciB0cmFuc2FjdGlvbkRlc2NyaXB0b3IpCi0gIHsKLSAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7Ci0gICAgQWN0aW9uRGVzY3JpcHRvcltdIGFjdGlvbkRlc2NyaXB0b3JzID0gdHJhbnNhY3Rpb25EZXNjcmlwdG9yLmdldEFjdGlvbkRlc2NyaXB0b3JzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhY3Rpb25EZXNjcmlwdG9ycy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAocmVzdWx0KQotICAgICAgewotICAgICAgICBpZiAoIWV4ZWN1dGVBY3Rpb24oYWN0aW9uRGVzY3JpcHRvcnNbaV0pKQotICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBhY3Rpb25EZXNjcmlwdG9yc1tpXS5zZXRTdGF0dXNJZChBY3Rpb25EYXRhQ29uc3RhbnRzLlZBTFVFX1NUQVRVU19JRF9VTkFUVEVNUFRFRCk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBleGVjdXRlQWN0aW9uKEFjdGlvbkRlc2NyaXB0b3IgYWN0aW9uRGVzY3JpcHRvcikKLSAgewotICAgIGludCBhdHRlbXB0cyA9IGFjdGlvbkRlc2NyaXB0b3IuZ2V0QXR0ZW1wdHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dGVtcHRzOyBpKyspCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIENsYXNzIGNsYXNzQWN0aW9uID0gQ2xhc3MuZm9yTmFtZShhY3Rpb25EZXNjcmlwdG9yLmdldElkKCkpOwotICAgICAgICBpZiAoQWN0aW9uLmNsYXNzLmlzQXNzaWduYWJsZUZyb20oY2xhc3NBY3Rpb24pKQotICAgICAgICB7Ci0gICAgICAgICAgQWN0aW9uIGFjdGlvbiA9IChBY3Rpb24pIG5ld0luc3RhbmNlKGNsYXNzQWN0aW9uKTsKLSAgICAgICAgICBpZiAoYWN0aW9uICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgSGFzaHRhYmxlIHByb3BlcnRpZXMgPSBhY3Rpb25EZXNjcmlwdG9yLmdldFByb3BlcnRpZXMoKTsKLSAgICAgICAgICAgIElUcmFuc2Zvcm1lcltdIHRyYW5zZm9ybWVycyA9IGFjdGlvbi5nZXRUcmFuc2Zvcm1lcnMoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdHJhbnNmb3JtZXJzLmxlbmd0aDsgaisrKQotICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gdHJhbnNmb3JtZXJzW2pdLmRlTm9ybWFsaXplKHByb3BlcnRpZXMpOwotICAgICAgICAgICAgYWN0aW9uLnNldFByb3BlcnR5VGFibGUocHJvcGVydGllcyk7Ci0gICAgICAgICAgICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5ydW4oKTsKLSAgICAgICAgICAgIC8vIFRPRE8gYWN0aW9uRGVzY3JpcHRvci5hZGRTdGF0dXMoYWN0aW9uLmdldFN0YXR1cygpKTsKLSAgICAgICAgICAgIGlmIChhY3Rpb25SZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGFjdGlvbkRlc2NyaXB0b3Iuc2V0U3RhdHVzSWQoQWN0aW9uRGF0YUNvbnN0YW50cy5WQUxVRV9TVEFUVVNfSURfUEFTU0VEKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93IG5ldyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uKGFjdGlvbkRlc2NyaXB0b3IuZ2V0SWQoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGNuZmUpCi0gICAgICB7Ci0gICAgICAgIGNuZmUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICAgICAgY25mZS5wcmludFN0YWNrVHJhY2UobmV3IFByaW50V3JpdGVyKHN3KSk7Ci0gICAgICAgIGFjdGlvbkRlc2NyaXB0b3IuYWRkU3RhdHVzKHN3LmdldEJ1ZmZlcigpLnRvU3RyaW5nKCkpOwotICAgICAgfQotICAgICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgICAgewotICAgICAgICB0LnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgICAgIHQucHJpbnRTdGFja1RyYWNlKG5ldyBQcmludFdyaXRlcihzdykpOwotICAgICAgICBhY3Rpb25EZXNjcmlwdG9yLmFkZFN0YXR1cyhzdy5nZXRCdWZmZXIoKS50b1N0cmluZygpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgYWN0aW9uRGVzY3JpcHRvci5zZXRTdGF0dXNJZChBY3Rpb25EYXRhQ29uc3RhbnRzLlZBTFVFX1NUQVRVU19JRF9GQUlMRUQpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHByaXZhdGUgU2NlbmFyaW9EZXNjcmlwdG9yIG5ld1NjZW5hcmlvRGVzY3JpcHRvcigpCi0gIHsKLSAgICByZXR1cm4gbmV3IFNjZW5hcmlvRGVzY3JpcHRvcigpOwotICB9Ci0KLSAgcHJpdmF0ZSBUcmFuc2FjdGlvbkRlc2NyaXB0b3IgbmV3VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCkKLSAgewotICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25EZXNjcmlwdG9yKCk7Ci0gIH0KLQotICBwcml2YXRlIEFjdGlvbkRlc2NyaXB0b3IgbmV3QWN0aW9uRGVzY3JpcHRvcihBY3Rpb24gYWN0aW9uKQotICB7Ci0gICAgQWN0aW9uRGVzY3JpcHRvciBhY3Rpb25EZXNjcmlwdG9yID0gbmV3IEFjdGlvbkRlc2NyaXB0b3IoKTsKLSAgICBhY3Rpb25EZXNjcmlwdG9yLnNldElkKGFjdGlvbi5nZXRDbGFzcygpLmdldE5hbWUoKSk7Ci0gICAgSGFzaHRhYmxlIHByb3BlcnRpZXMgPSBuZXcgSGFzaHRhYmxlKGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCkpOwotICAgIElUcmFuc2Zvcm1lcltdIHRyYW5zZm9ybWVycyA9IGFjdGlvbi5nZXRUcmFuc2Zvcm1lcnMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRyYW5zZm9ybWVycy5sZW5ndGg7IGkrKykKLSAgICAgIHByb3BlcnRpZXMgPSB0cmFuc2Zvcm1lcnNbaV0ubm9ybWFsaXplKHByb3BlcnRpZXMpOwotICAgIGFjdGlvbkRlc2NyaXB0b3Iuc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTsKLSAgICByZXR1cm4gYWN0aW9uRGVzY3JpcHRvcjsKLSAgfQotCi0gIHByaXZhdGUgT2JqZWN0IG5ld0luc3RhbmNlKENsYXNzIGMpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBpbnN0YW50aWF0ZXMgdGhlIGFjdGlvbiB1c2luZyB0aGUgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBpbiBhCi0gICAgICAvLyBjb250cm9sbGVyIG9iamVjdAotICAgICAgQ29uc3RydWN0b3IgY29uc3RydWN0b3IgPSBjLmdldENvbnN0cnVjdG9yKG5ldyBDbGFzc1tde0NvbnRyb2xsZXIuY2xhc3N9KTsKLSAgICAgIHJldHVybiBjb25zdHJ1Y3Rvci5uZXdJbnN0YW5jZShuZXcgT2JqZWN0W117Y29udHJvbGxlcn0pOwotICAgIH0KLSAgICBjYXRjaCAoTm9TdWNoTWV0aG9kRXhjZXB0aW9uIG5zbWUpCi0gICAgewotICAgIH0KLSAgICBjYXRjaCAoSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiBpZSkKLSAgICB7Ci0gICAgfQotICAgIGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGlhZSkKLSAgICB7Ci0gICAgfQotICAgIGNhdGNoIChJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGl0ZSkKLSAgICB7Ci0gICAgfQotICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICB7Ci0gICAgfQotICAgIE9iamVjdCBpbnN0YW5jZSA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gaW5zdGFudGlhdGVzIHRoZSBhY3Rpb24gdXNpbmcgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IKLSAgICAgIENvbnN0cnVjdG9yIGNvbnN0cnVjdG9yID0gYy5nZXRDb25zdHJ1Y3RvcihuZXcgQ2xhc3NbMF0pOwotICAgICAgaW5zdGFuY2UgPSBjb25zdHJ1Y3Rvci5uZXdJbnN0YW5jZShuZXcgT2JqZWN0WzBdKTsKLSAgICAgIE1ldGhvZCBtZXRob2QgPSBjLmdldE1ldGhvZCgic2V0Q29udHJvbGxlciIsIG5ldyBDbGFzc1tde0NvbnRyb2xsZXIuY2xhc3N9KTsKLSAgICAgIG1ldGhvZC5pbnZva2UoaW5zdGFuY2UsIG5ldyBPYmplY3RbXXtjb250cm9sbGVyfSk7Ci0gICAgfQotICAgIGNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gbnNtZSkKLSAgICB7Ci0gICAgfQotICAgIGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGllKQotICAgIHsKLSAgICB9Ci0gICAgY2F0Y2ggKElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gaWFlKQotICAgIHsKLSAgICB9Ci0gICAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpCi0gICAgewotICAgIH0KLSAgICBjYXRjaCAoSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBpdGUpCi0gICAgewotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBieXRlIGdldE1vZGUoKQotICB7Ci0gICAgcmV0dXJuIG1vZGU7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldE1vZGUoYnl0ZSBtb2RlKQotICB7Ci0gICAgdGhpcy5tb2RlID0gbW9kZTsKLSAgICBpZiAobW9kZSA9PSBNT0RFX1JFQ09SRCkKLSAgICB7Ci0gICAgICBhY3Rpb25EZXNjcmlwdG9ycyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIFNob3dQZXJzcGVjdGl2ZUFjdGlvbiBzaG93UGVyc3BlY3RpdmVBY3Rpb24gPSBuZXcgU2hvd1BlcnNwZWN0aXZlQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgICAgc2hvd1BlcnNwZWN0aXZlQWN0aW9uLmFkZFByb3BlcnR5KEFjdGlvbklucHV0cy5QRVJTUEVDVElWRSwgU3RyaW5nLnZhbHVlT2YoY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXRQZXJzcGVjdGl2ZUlkKCkpKTsKLSAgICAgIGFjdGlvbkRlc2NyaXB0b3JzLmFkZChuZXdBY3Rpb25EZXNjcmlwdG9yKHNob3dQZXJzcGVjdGl2ZUFjdGlvbikpOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gZXhlY3V0ZUFjdGlvbihBY3Rpb24gYWN0aW9uKQotICB7Ci0gICAgaWYgKG1vZGUgPT0gTU9ERV9SRUNPUkQpCi0gICAgewotICAgICAgQWN0aW9uRGVzY3JpcHRvciBhY3Rpb25EZXNjcmlwdG9yID0gbmV3QWN0aW9uRGVzY3JpcHRvcihhY3Rpb24pOwotICAgICAgYWN0aW9uRGVzY3JpcHRvcnMuYWRkKGFjdGlvbkRlc2NyaXB0b3IpOwotICAgIH0KLSAgICByZXR1cm4gYWN0aW9uLnJ1bigpOwotICB9Ci0gIAotICBwdWJsaWMgU2NlbmFyaW9EZXNjcmlwdG9yIGdldFNjZW5hcmlvKCkKLSAgewotICAgIFNjZW5hcmlvRGVzY3JpcHRvciBzY2VuYXJpb0Rlc2NyaXB0b3IgPSBuZXdTY2VuYXJpb0Rlc2NyaXB0b3IoKTsKLSAgICBUcmFuc2FjdGlvbkRlc2NyaXB0b3IgdHJhbnNhY3Rpb25EZXNjcmlwdG9yID0gbmV3VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCk7Ci0gICAgQWN0aW9uRGVzY3JpcHRvcltdIGFjdGlvbkRlc2NyaXB0b3JBcnJheSA9IChBY3Rpb25EZXNjcmlwdG9yW10pYWN0aW9uRGVzY3JpcHRvcnMudG9BcnJheShuZXcgQWN0aW9uRGVzY3JpcHRvclswXSk7Ci0gICAgdHJhbnNhY3Rpb25EZXNjcmlwdG9yLnNldEFjdGlvbkRlc2NyaXB0b3JzKGFjdGlvbkRlc2NyaXB0b3JBcnJheSk7Ci0gICAgc2NlbmFyaW9EZXNjcmlwdG9yLnNldFRyYW5zYWN0aW9uRGVzY3JpcHRvcnMobmV3IFRyYW5zYWN0aW9uRGVzY3JpcHRvcltdIHt0cmFuc2FjdGlvbkRlc2NyaXB0b3J9KTsKLSAgICByZXR1cm4gc2NlbmFyaW9EZXNjcmlwdG9yOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS9jb25zdGFudHMvQWN0aW9uRGF0YUNvbnN0YW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvY29uc3RhbnRzL0FjdGlvbkRhdGFDb25zdGFudHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y3MTZkZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS9jb25zdGFudHMvQWN0aW9uRGF0YUNvbnN0YW50cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUuY29uc3RhbnRzOwotCi1wdWJsaWMgY2xhc3MgQWN0aW9uRGF0YUNvbnN0YW50cwotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0lEID0gImlkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9OQU1FID0gIm5hbWUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0FUVEVNUFRTID0gImF0dGVtcHRzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9TVEFUVVNfSUQgPSAic3RhdHVzSWQiOwotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTUVOVF9TQ0VOQVJJTyA9ICJzY2VuYXJpbyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1FTlRfVFJBTlNBQ1RJT04gPSAidHJhbnNhY3Rpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNRU5UX0FDVElPTiA9ICJhY3Rpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNRU5UX1BST1BFUlRZID0gInByb3BlcnR5IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTUVOVF9WQUxVRSA9ICJ2YWx1ZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1FTlRfU1RBVFVTID0gInN0YXR1cyI7Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBWQUxVRV9TVEFUVVNfSURfVU5BVFRFTVBURUQgPSAidW5hdHRlbXB0ZWQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBWQUxVRV9TVEFUVVNfSURfUEFTU0VEID0gInBhc3NlZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFZBTFVFX1NUQVRVU19JRF9GQUlMRUQgPSAiZmFpbGVkIjsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZW5naW5lL2RhdGEvQWN0aW9uRGVzY3JpcHRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvZGF0YS9BY3Rpb25EZXNjcmlwdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YTYwMGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvZGF0YS9BY3Rpb25EZXNjcmlwdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS5kYXRhOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1wdWJsaWMgY2xhc3MgQWN0aW9uRGVzY3JpcHRvcgotewotICBwcml2YXRlIFN0cmluZyBpZDsKLSAgcHJpdmF0ZSBIYXNodGFibGUgcHJvcGVydGllczsKLSAgcHJpdmF0ZSBpbnQgYXR0ZW1wdHM7Ci0gIHByaXZhdGUgU3RyaW5nIHN0YXR1c0lkOwotICBwcml2YXRlIExpc3Qgc3RhdHVzTGlzdDsKLSAgCi0gIHB1YmxpYyBBY3Rpb25EZXNjcmlwdG9yKCkKLSAgewotICAgIGF0dGVtcHRzID0gMTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKQotICB7Ci0gICAgcmV0dXJuIGlkOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJZChTdHJpbmcgaWQpCi0gIHsKLSAgICB0aGlzLmlkID0gaWQ7Ci0gIH0KLQotICBwdWJsaWMgSGFzaHRhYmxlIGdldFByb3BlcnRpZXMoKQotICB7Ci0gICAgcmV0dXJuIHByb3BlcnRpZXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFByb3BlcnRpZXMoSGFzaHRhYmxlIHByb3BlcnRpZXMpCi0gIHsKLSAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwotICB9Ci0gIAotICBwdWJsaWMgaW50IGdldEF0dGVtcHRzKCkKLSAgewotICAJcmV0dXJuIGF0dGVtcHRzOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRBdHRlbXB0cyhpbnQgYXR0ZW1wdHMpCi0gIHsKLSAgCXRoaXMuYXR0ZW1wdHMgPSBhdHRlbXB0czsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRTdGF0dXNJZCgpCi0gIHsKLSAgICByZXR1cm4gc3RhdHVzSWQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFN0YXR1c0lkKFN0cmluZyBzdGF0dXNJZCkKLSAgewotICAgIHRoaXMuc3RhdHVzSWQgPSBzdGF0dXNJZDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgYWRkU3RhdHVzKE9iamVjdCBzdGF0dXMpCi0gIHsKLSAgICBpZiAoc3RhdHVzICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKHN0YXR1c0xpc3QgPT0gbnVsbCkKLSAgICAgICAgc3RhdHVzTGlzdCA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIHN0YXR1c0xpc3QuYWRkKHN0YXR1cyk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiByZW1vdmVTdGF0dXMoT2JqZWN0IHN0YXR1cykKLSAgewotICAgIGlmIChzdGF0dXMgIT0gbnVsbCAmJiBzdGF0dXNMaXN0ICE9IG51bGwpCi0gICAgICByZXR1cm4gc3RhdHVzTGlzdC5yZW1vdmUoc3RhdHVzKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBMaXN0IGdldFN0YXR1cygpCi0gIHsKLSAgICByZXR1cm4gc3RhdHVzTGlzdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvZGF0YS9TY2VuYXJpb0Rlc2NyaXB0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZW5naW5lL2RhdGEvU2NlbmFyaW9EZXNjcmlwdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZTkyYWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvZGF0YS9TY2VuYXJpb0Rlc2NyaXB0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLmRhdGE7Ci0KLXB1YmxpYyBjbGFzcyBTY2VuYXJpb0Rlc2NyaXB0b3IKLXsKLSAgcHJpdmF0ZSBUcmFuc2FjdGlvbkRlc2NyaXB0b3JbXSB0cmFuc2FjdGlvbkRlc2NyaXB0b3JzOwotCi0gIHB1YmxpYyBUcmFuc2FjdGlvbkRlc2NyaXB0b3JbXSBnZXRUcmFuc2FjdGlvbkRlc2NyaXB0b3JzKCkKLSAgewotICAgIHJldHVybiB0cmFuc2FjdGlvbkRlc2NyaXB0b3JzOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRUcmFuc2FjdGlvbkRlc2NyaXB0b3JzKFRyYW5zYWN0aW9uRGVzY3JpcHRvcltdIHRyYW5zYWN0aW9uRGVzY3JpcHRvcnMpCi0gIHsKLSAgICB0aGlzLnRyYW5zYWN0aW9uRGVzY3JpcHRvcnMgPSB0cmFuc2FjdGlvbkRlc2NyaXB0b3JzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS9kYXRhL1RyYW5zYWN0aW9uRGVzY3JpcHRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvZGF0YS9UcmFuc2FjdGlvbkRlc2NyaXB0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkxN2ExMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS9kYXRhL1RyYW5zYWN0aW9uRGVzY3JpcHRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUuZGF0YTsKLQotcHVibGljIGNsYXNzIFRyYW5zYWN0aW9uRGVzY3JpcHRvcgotewotICBwcml2YXRlIEFjdGlvbkRlc2NyaXB0b3JbXSBhY3Rpb25EZXNjcmlwdG9yczsKLQotICBwdWJsaWMgQWN0aW9uRGVzY3JpcHRvcltdIGdldEFjdGlvbkRlc2NyaXB0b3JzKCkKLSAgewotICAgIHJldHVybiBhY3Rpb25EZXNjcmlwdG9yczsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0QWN0aW9uRGVzY3JpcHRvcnMoQWN0aW9uRGVzY3JpcHRvcltdIGFjdGlvbkRlc2NyaXB0b3JzKQotICB7Ci0gICAgdGhpcy5hY3Rpb25EZXNjcmlwdG9ycyA9IGFjdGlvbkRlc2NyaXB0b3JzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9DdXJyZW50Tm9kZVNlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9DdXJyZW50Tm9kZVNlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NjZlNmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvdHJhbnNmb3JtZXIvQ3VycmVudE5vZGVTZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUudHJhbnNmb3JtZXI7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotCi1wdWJsaWMgY2xhc3MgQ3VycmVudE5vZGVTZWxlY3Rpb25UcmFuc2Zvcm1lciBpbXBsZW1lbnRzIElUcmFuc2Zvcm1lcgotewotICBwcm90ZWN0ZWQgQ29udHJvbGxlciBjb250cm9sbGVyOwotICBwcm90ZWN0ZWQgU3RyaW5nIGtleTsKLQotICBwdWJsaWMgQ3VycmVudE5vZGVTZWxlY3Rpb25UcmFuc2Zvcm1lcihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICB0aGlzKGNvbnRyb2xsZXIsIEFjdGlvbklucHV0cy5OT0RFSUQpOwotICB9Ci0KLSAgcHVibGljIEN1cnJlbnROb2RlU2VsZWN0aW9uVHJhbnNmb3JtZXIoQ29udHJvbGxlciBjb250cm9sbGVyLCBTdHJpbmcga2V5KQotICB7Ci0gICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgICB0aGlzLmtleSA9IGtleTsKLSAgfQotCi0gIHB1YmxpYyBIYXNodGFibGUgbm9ybWFsaXplKEhhc2h0YWJsZSBwcm9wZXJ0aWVzKQotICB7Ci0gICAgcmV0dXJuIHByb3BlcnRpZXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBIYXNodGFibGUgZGVOb3JtYWxpemUoSGFzaHRhYmxlIHByb3BlcnRpZXMpCi0gIHsKLSAgICBOb2RlIGN1cnJOb2RlID0gY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIGlmIChjdXJyTm9kZSAhPSBudWxsKQotICAgICAgcHJvcGVydGllcy5wdXQoa2V5LCBTdHJpbmcudmFsdWVPZihjdXJyTm9kZS5nZXROb2RlSWQoKSkpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9JVHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZW5naW5lL3RyYW5zZm9ybWVyL0lUcmFuc2Zvcm1lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDE2ZDMwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZW5naW5lL3RyYW5zZm9ybWVyL0lUcmFuc2Zvcm1lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUudHJhbnNmb3JtZXI7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi1wdWJsaWMgaW50ZXJmYWNlIElUcmFuc2Zvcm1lcgotewotICBwdWJsaWMgSGFzaHRhYmxlIG5vcm1hbGl6ZShIYXNodGFibGUgcHJvcGVydGllcyk7Ci0gIHB1YmxpYyBIYXNodGFibGUgZGVOb3JtYWxpemUoSGFzaHRhYmxlIHByb3BlcnRpZXMpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvdHJhbnNmb3JtZXIvTWFzc05vZGVJZFRyYW5zZm9ybWVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9NYXNzTm9kZUlkVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI3NGU4My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9NYXNzTm9kZUlkVHJhbnNmb3JtZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lcjsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLk1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotCi1wdWJsaWMgY2xhc3MgTWFzc05vZGVJZFRyYW5zZm9ybWVyIGV4dGVuZHMgTm9kZUlkVHJhbnNmb3JtZXIKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBtYXNzTm9kZUlkS2V5OwotCi0gIHB1YmxpYyBNYXNzTm9kZUlkVHJhbnNmb3JtZXIoQ29udHJvbGxlciBjb250cm9sbGVyLCBTdHJpbmcgbWFzc05vZGVJZEtleSkKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHRoaXMubWFzc05vZGVJZEtleSA9IG1hc3NOb2RlSWRLZXk7Ci0gIH0KLQotICBwdWJsaWMgSGFzaHRhYmxlIG5vcm1hbGl6ZShIYXNodGFibGUgcHJvcGVydGllcykKLSAgewotICAgIGlmICghcHJvcGVydGllcy5jb250YWluc0tleShtYXNzTm9kZUlkS2V5KSkKLSAgICAgIHJldHVybiBzdXBlci5ub3JtYWxpemUocHJvcGVydGllcyk7Ci0gICAgT2JqZWN0IG9yaWdOb2RlSWQgPSBwcm9wZXJ0aWVzLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICBTdHJpbmdbXSBtYXNzTm9kZUlkcyA9IGdldFZhbHVlQXNTdHJpbmdBcnJheShwcm9wZXJ0aWVzLCBtYXNzTm9kZUlkS2V5KTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1hc3NOb2RlSWRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIHByb3BlcnRpZXMucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsIG1hc3NOb2RlSWRzW2ldKTsKLSAgICAgIHByb3BlcnRpZXMgPSBzdXBlci5ub3JtYWxpemUocHJvcGVydGllcyk7Ci0gICAgICBTdHJpbmdbXSByZWxzID0gZ2V0VmFsdWVBc1N0cmluZ0FycmF5KHByb3BlcnRpZXMsIE1vZGVsQ29uc3RhbnRzLlJFTF9JRCk7Ci0gICAgICBpZiAocmVscy5sZW5ndGggPiAwKQotICAgICAgewotICAgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKE1vZGVsQ29uc3RhbnRzLlJFTF9JRCk7Ci0gICAgICAgIHNiLmFwcGVuZChNb2RlbENvbnN0YW50cy5SRUxfTE9DQUxOQU1FX1NFUEFSQVRPUik7Ci0gICAgICAgIHNiLmFwcGVuZChtYXNzTm9kZUlkc1tpXSk7Ci0gICAgICAgIHByb3BlcnRpZXMucHV0KHNiLnRvU3RyaW5nKCksIHJlbHMpOwotICAgICAgfQotICAgICAgcHJvcGVydGllcy5yZW1vdmUoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgICBwcm9wZXJ0aWVzLnJlbW92ZShNb2RlbENvbnN0YW50cy5SRUxfSUQpOwotICAgIH0KLSAgICBpZiAob3JpZ05vZGVJZCAhPSBudWxsKQotICAgICAgcHJvcGVydGllcy5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgb3JpZ05vZGVJZCk7Ci0gICAgcmV0dXJuIHByb3BlcnRpZXM7Ci0gIH0KLQotICBwdWJsaWMgSGFzaHRhYmxlIGRlTm9ybWFsaXplKEhhc2h0YWJsZSBwcm9wZXJ0aWVzKQotICB7Ci0gICAgaWYgKCFwcm9wZXJ0aWVzLmNvbnRhaW5zS2V5KG1hc3NOb2RlSWRLZXkpKQotICAgICAgcmV0dXJuIHN1cGVyLmRlTm9ybWFsaXplKHByb3BlcnRpZXMpOwotICAgIFZlY3RvciBtYXNzTm9kZUlkVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIE9iamVjdCBvcmlnTm9kZUlkID0gcHJvcGVydGllcy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgcHJvcGVydGllcy5yZW1vdmUoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgU3RyaW5nW10gbWFzc05vZGVJZHMgPSBnZXRWYWx1ZUFzU3RyaW5nQXJyYXkocHJvcGVydGllcywgbWFzc05vZGVJZEtleSk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXNzTm9kZUlkcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKE1vZGVsQ29uc3RhbnRzLlJFTF9JRCk7Ci0gICAgICBzYi5hcHBlbmQoTW9kZWxDb25zdGFudHMuUkVMX0xPQ0FMTkFNRV9TRVBBUkFUT1IpOwotICAgICAgc2IuYXBwZW5kKG1hc3NOb2RlSWRzW2ldKTsKLSAgICAgIE9iamVjdCByZWxzID0gcHJvcGVydGllcy5nZXQoc2IudG9TdHJpbmcoKSk7Ci0gICAgICBpZiAocmVscyAhPSBudWxsKQotICAgICAgewotICAgICAgICBwcm9wZXJ0aWVzLnB1dChNb2RlbENvbnN0YW50cy5SRUxfSUQsIHJlbHMpOwotICAgICAgICBwcm9wZXJ0aWVzID0gc3VwZXIuZGVOb3JtYWxpemUocHJvcGVydGllcyk7Ci0gICAgICAgIE9iamVjdCBub2RlSWQgPSBwcm9wZXJ0aWVzLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICAgICAgaWYgKG5vZGVJZCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgbWFzc05vZGVJZFZlY3Rvci5hZGQobm9kZUlkKTsKLSAgICAgICAgICBwcm9wZXJ0aWVzLnJlbW92ZShBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICAgICAgfQotICAgICAgICBwcm9wZXJ0aWVzLnJlbW92ZShNb2RlbENvbnN0YW50cy5SRUxfSUQpOwotICAgICAgfQotICAgIH0KLSAgICBpZiAob3JpZ05vZGVJZCAhPSBudWxsKQotICAgICAgcHJvcGVydGllcy5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgb3JpZ05vZGVJZCk7Ci0gICAgaW50IHNpemUgPSBtYXNzTm9kZUlkVmVjdG9yLnNpemUoKTsKLSAgICBpZiAoc2l6ZSA9PSAxKQotICAgICAgcHJvcGVydGllcy5wdXQobWFzc05vZGVJZEtleSwgbWFzc05vZGVJZFZlY3Rvci5nZXQoMCkpOwotICAgIGVsc2UgaWYgKHNpemUgPiAxKQotICAgICAgcHJvcGVydGllcy5wdXQobWFzc05vZGVJZEtleSwgbWFzc05vZGVJZFZlY3Rvci50b0FycmF5KG5ldyBTdHJpbmdbMF0pKTsKLSAgICBlbHNlCi0gICAgICBwcm9wZXJ0aWVzLnJlbW92ZShtYXNzTm9kZUlkS2V5KTsKLSAgICByZXR1cm4gcHJvcGVydGllczsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nW10gZ2V0VmFsdWVBc1N0cmluZ0FycmF5KEhhc2h0YWJsZSBwcm9wZXJ0aWVzLCBTdHJpbmcga2V5KQotICB7Ci0gICAgT2JqZWN0IHZhbHVlcyA9IHByb3BlcnRpZXMuZ2V0KGtleSk7Ci0gICAgaWYgKHZhbHVlcyA9PSBudWxsKQotICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbMF07Ci0gICAgZWxzZSBpZiAodmFsdWVzIGluc3RhbmNlb2YgU3RyaW5nW10pCi0gICAgICByZXR1cm4gKFN0cmluZ1tdKXZhbHVlczsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbmV3IFN0cmluZ1tdIHt2YWx1ZXMudG9TdHJpbmcoKX07Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZW5naW5lL3RyYW5zZm9ybWVyL011bHRpcGFydEZvcm1EYXRhUGFyc2VyVHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZW5naW5lL3RyYW5zZm9ybWVyL011bHRpcGFydEZvcm1EYXRhUGFyc2VyVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMyYzE2NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9NdWx0aXBhcnRGb3JtRGF0YVBhcnNlclRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lcjsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotCi1wdWJsaWMgY2xhc3MgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXJUcmFuc2Zvcm1lciBpbXBsZW1lbnRzIElUcmFuc2Zvcm1lcgotewotICBwcm90ZWN0ZWQgQ29udHJvbGxlciBjb250cm9sbGVyOwotCi0gIHB1YmxpYyBNdWx0aXBhcnRGb3JtRGF0YVBhcnNlclRyYW5zZm9ybWVyKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0gIH0KLQotICBwdWJsaWMgSGFzaHRhYmxlIG5vcm1hbGl6ZShIYXNodGFibGUgcHJvcGVydGllcykKLSAgewotICAgIE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlciA9IChNdWx0aXBhcnRGb3JtRGF0YVBhcnNlcilwcm9wZXJ0aWVzLmdldChBY3Rpb25JbnB1dHMuTVVMVElQQVJUX0ZPUk1fREFUQV9QQVJTRVIpOwotICAgIFN0cmluZ1tdIGtleXM7Ci0gICAgdHJ5Ci0gICAgewotICAgICAga2V5cyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJOYW1lcygpOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgICAga2V5cyA9IG5ldyBTdHJpbmdbMF07Ci0gICAgfQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBTdHJpbmdCdWZmZXIgbmV3S2V5ID0gbmV3IFN0cmluZ0J1ZmZlcihBY3Rpb25JbnB1dHMuTVVMVElQQVJUX0ZPUk1fREFUQV9QQVJTRVIpOwotICAgICAgbmV3S2V5LmFwcGVuZChrZXlzW2ldKTsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBwcm9wZXJ0aWVzLnB1dChuZXdLZXkudG9TdHJpbmcoKSwgcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhrZXlzW2ldKSk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBwcm9wZXJ0aWVzOwotICB9Ci0gIAotICBwdWJsaWMgSGFzaHRhYmxlIGRlTm9ybWFsaXplKEhhc2h0YWJsZSBwcm9wZXJ0aWVzKQotICB7Ci0gICAgRW51bWVyYXRpb24gZSA9IHByb3BlcnRpZXMua2V5cygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIE9iamVjdCBrZXkgPSBlLm5leHRFbGVtZW50KCk7Ci0gICAgICBpZiAoa2V5IGluc3RhbmNlb2YgU3RyaW5nKQotICAgICAgewotICAgICAgICBpZiAoKChTdHJpbmcpa2V5KS5zdGFydHNXaXRoKEFjdGlvbklucHV0cy5NVUxUSVBBUlRfRk9STV9EQVRBX1BBUlNFUikpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgcmVhbEtleSA9ICgoU3RyaW5nKWtleSkuc3Vic3RyaW5nKEFjdGlvbklucHV0cy5NVUxUSVBBUlRfRk9STV9EQVRBX1BBUlNFUi5sZW5ndGgoKSk7Ci0gICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmNvbnRhaW5zS2V5KHJlYWxLZXkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIE9iamVjdCB2YWx1ZSA9IHByb3BlcnRpZXMucmVtb3ZlKGtleSk7Ci0gICAgICAgICAgICBwcm9wZXJ0aWVzLnB1dChyZWFsS2V5LCB2YWx1ZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBwcm9wZXJ0aWVzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9Ob2RlSWRUcmFuc2Zvcm1lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvdHJhbnNmb3JtZXIvTm9kZUlkVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE1NDEzYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9Ob2RlSWRUcmFuc2Zvcm1lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIE5vZGVJZFRyYW5zZm9ybWVyIGltcGxlbWVudHMgSVRyYW5zZm9ybWVyCi17Ci0gIHByb3RlY3RlZCBDb250cm9sbGVyIGNvbnRyb2xsZXI7Ci0KLSAgcHVibGljIE5vZGVJZFRyYW5zZm9ybWVyKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0gIH0KLQotICBwdWJsaWMgSGFzaHRhYmxlIG5vcm1hbGl6ZShIYXNodGFibGUgcHJvcGVydGllcykKLSAgewotICAgIFZlY3RvciByZWxzID0gbmV3IFZlY3RvcigpOwotICAgIHRyeQotICAgIHsKLSAgICAgIGludCBub2RlSWQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydGllcy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBjb250cm9sbGVyLmdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgICBOb2RlIHJvb3ROb2RlID0gbm9kZU1hbmFnZXIuZ2V0Um9vdE5vZGUoKTsKLSAgICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUobm9kZUlkKTsKLSAgICAgIGludCBkZXB0aCA9IDA7Ci0gICAgICBpZiAobm9kZSAhPSBudWxsKQotICAgICAgICBkZXB0aCA9IG5vZGUuZ2V0Tm9kZURlcHRoKCk7Ci0gICAgICB3aGlsZSAocmVscy5zaXplKCkgPCBkZXB0aCAmJiBub2RlICE9IG51bGwgJiYgbm9kZSAhPSByb290Tm9kZSkKLSAgICAgIHsKLSAgICAgICAgTm9kZSBwYXJlbnROb2RlID0gbm9kZS5nZXRQYXJlbnQoKTsKLSAgICAgICAgRWxlbWVudCBlbGVtZW50ID0gbm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICBSZWwgcmVsID0gZ2V0UmVsKHBhcmVudE5vZGUuZ2V0VHJlZUVsZW1lbnQoKSwgZWxlbWVudCk7Ci0gICAgICAgIFN0cmluZ0J1ZmZlciByZWxWYWx1ZSA9IG5ldyBTdHJpbmdCdWZmZXIocmVsLmdldE5hbWUoKSk7Ci0gICAgICAgIHJlbFZhbHVlLmFwcGVuZChNb2RlbENvbnN0YW50cy5SRUxfTE9DQUxOQU1FX1NFUEFSQVRPUik7Ci0gICAgICAgIHJlbFZhbHVlLmFwcGVuZChlbGVtZW50LmdldE5hbWUoKSk7Ci0gICAgICAgIHJlbHMuaW5zZXJ0RWxlbWVudEF0KHJlbFZhbHVlLnRvU3RyaW5nKCksIDApOwotICAgICAgICBub2RlID0gcGFyZW50Tm9kZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBuZmUpCi0gICAgewotICAgIH0KLSAgICBpbnQgbnVtUmVsYXRpb25zaGlwcyA9IHJlbHMuc2l6ZSgpOwotICAgIGlmIChudW1SZWxhdGlvbnNoaXBzID09IDEpCi0gICAgICBwcm9wZXJ0aWVzLnB1dChNb2RlbENvbnN0YW50cy5SRUxfSUQsIHJlbHMuZ2V0KDApLnRvU3RyaW5nKCkpOwotICAgIGVsc2UgaWYgKG51bVJlbGF0aW9uc2hpcHMgPiAxKQotICAgICAgcHJvcGVydGllcy5wdXQoTW9kZWxDb25zdGFudHMuUkVMX0lELCAoU3RyaW5nW10pcmVscy50b0FycmF5KG5ldyBTdHJpbmdbMF0pKTsKLSAgICByZXR1cm4gcHJvcGVydGllczsKLSAgfQotCi0gIHByaXZhdGUgUmVsIGdldFJlbChFbGVtZW50IHNvdXJjZUVsZW1lbnQsIEVsZW1lbnQgdGFyZ2V0RWxlbWVudCkKLSAgewotICAgIEVudW1lcmF0aW9uIHJlbHMgPSBzb3VyY2VFbGVtZW50LmdldFJlbHMoKTsKLSAgICB3aGlsZSAocmVscy5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICBSZWwgcmVsID0gKFJlbClyZWxzLm5leHRFbGVtZW50KCk7Ci0gICAgICBFbnVtZXJhdGlvbiB0YXJnZXRFbGVtZW50cyA9IHJlbC5nZXRUYXJnZXRFbGVtZW50cygpOwotICAgICAgd2hpbGUgKHRhcmdldEVsZW1lbnRzLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgewotICAgICAgICBpZiAodGFyZ2V0RWxlbWVudHMubmV4dEVsZW1lbnQoKSA9PSB0YXJnZXRFbGVtZW50KQotICAgICAgICAgIHJldHVybiByZWw7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIEhhc2h0YWJsZSBkZU5vcm1hbGl6ZShIYXNodGFibGUgcHJvcGVydGllcykKLSAgewotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyLmdldFJvb3ROb2RlKCk7Ci0gICAgT2JqZWN0IHZhbHVlID0gcHJvcGVydGllcy5nZXQoTW9kZWxDb25zdGFudHMuUkVMX0lEKTsKLSAgICBTdHJpbmdbXSByZWxhdGlvbnNoaXBzID0gbnVsbDsKLSAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBTdHJpbmdbXSkKLSAgICAgIHJlbGF0aW9uc2hpcHMgPSAoU3RyaW5nW10pdmFsdWU7Ci0gICAgZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkKLSAgICAgIHJlbGF0aW9uc2hpcHMgPSBuZXcgU3RyaW5nW10ge3ZhbHVlLnRvU3RyaW5nKCl9OwotICAgIGlmIChyZWxhdGlvbnNoaXBzICE9IG51bGwpCi0gICAgewotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWxhdGlvbnNoaXBzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBpbnQgaW5kZXggPSByZWxhdGlvbnNoaXBzW2ldLmluZGV4T2YoTW9kZWxDb25zdGFudHMuUkVMX0xPQ0FMTkFNRV9TRVBBUkFUT1IpOwotICAgICAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICAgICAgcmV0dXJuIGRlTm9ybWFsaXplQXNTZWxlY3RlZE5vZGUocHJvcGVydGllcyk7Ci0gICAgICAgIFN0cmluZyByZWwgPSAoaW5kZXggIT0gLTEpID8gcmVsYXRpb25zaGlwc1tpXS5zdWJzdHJpbmcoMCwgaW5kZXgpIDogcmVsYXRpb25zaGlwc1tpXTsKLSAgICAgICAgU3RyaW5nIGxvY2FsbmFtZSA9IChpbmRleCAhPSAtMSkgPyByZWxhdGlvbnNoaXBzW2ldLnN1YnN0cmluZyhpbmRleCArIDEsIHJlbGF0aW9uc2hpcHNbaV0ubGVuZ3RoKCkpIDogbnVsbDsKLSAgICAgICAgaWYgKGxvY2FsbmFtZSA9PSBudWxsKQotICAgICAgICAgIHJldHVybiBkZU5vcm1hbGl6ZUFzU2VsZWN0ZWROb2RlKHByb3BlcnRpZXMpOwotICAgICAgICBub2RlID0gZ2V0Tm9kZShub2RlLCByZWwsIGxvY2FsbmFtZSk7Ci0gICAgICAgIGlmIChub2RlID09IG51bGwpCi0gICAgICAgICAgcmV0dXJuIGRlTm9ybWFsaXplQXNTZWxlY3RlZE5vZGUocHJvcGVydGllcyk7Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0aWVzLnB1dChBY3Rpb25JbnB1dHMuTk9ERUlELCBTdHJpbmcudmFsdWVPZihub2RlLmdldE5vZGVJZCgpKSk7Ci0gICAgICByZXR1cm4gcHJvcGVydGllczsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGRlTm9ybWFsaXplQXNTZWxlY3RlZE5vZGUocHJvcGVydGllcyk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgSGFzaHRhYmxlIGRlTm9ybWFsaXplQXNTZWxlY3RlZE5vZGUoSGFzaHRhYmxlIHByb3BlcnRpZXMpCi0gIHsKLSAgICByZXR1cm4gKG5ldyBDdXJyZW50Tm9kZVNlbGVjdGlvblRyYW5zZm9ybWVyKGNvbnRyb2xsZXIpKS5kZU5vcm1hbGl6ZShwcm9wZXJ0aWVzKTsKLSAgfQotCi0gIHByaXZhdGUgTm9kZSBnZXROb2RlKE5vZGUgcGFyZW50LCBTdHJpbmcgcmVsLCBTdHJpbmcgbG9jYWxuYW1lKQotICB7Ci0gICAgRWxlbWVudCBwYXJlbnRFbGVtZW50ID0gcGFyZW50LmdldFRyZWVFbGVtZW50KCk7Ci0gICAgRW51bWVyYXRpb24gZSA9IHBhcmVudEVsZW1lbnQuZ2V0RWxlbWVudHMocmVsKTsKLSAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICBFbGVtZW50IGVsZW1lbnQgPSAoRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgICBpZiAobG9jYWxuYW1lLmVxdWFscyhlbGVtZW50LmdldE5hbWUoKSkpCi0gICAgICAgIHJldHVybiBwYXJlbnQuZ2V0Q2hpbGROb2RlKChUcmVlRWxlbWVudCllbGVtZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZW5naW5lL3RyYW5zZm9ybWVyL05vZGVTZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvdHJhbnNmb3JtZXIvTm9kZVNlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZjU3ZWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvdHJhbnNmb3JtZXIvTm9kZVNlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUudHJhbnNmb3JtZXI7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLk1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgTm9kZVNlbGVjdGlvblRyYW5zZm9ybWVyIGltcGxlbWVudHMgSVRyYW5zZm9ybWVyCi17Ci0gIHByb3RlY3RlZCBDb250cm9sbGVyIGNvbnRyb2xsZXI7Ci0KLSAgcHVibGljIE5vZGVTZWxlY3Rpb25UcmFuc2Zvcm1lcihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICB0aGlzLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyOwotICB9Ci0KLSAgcHVibGljIEhhc2h0YWJsZSBub3JtYWxpemUoSGFzaHRhYmxlIHByb3BlcnRpZXMpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGNvbnRyb2xsZXIuZ2V0Q3VycmVudFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgIE5vZGUgbmV4dE5vZGUgPSBub2RlTWFuYWdlci5nZXROb2RlKEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydGllcy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpKTsKLSAgICAgIE5vZGUgY3Vyck5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgIGlmIChjdXJyTm9kZSA9PSBudWxsKQotICAgICAgICBjdXJyTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFJvb3ROb2RlKCk7Ci0gICAgICBWZWN0b3IgbmV4dFJlbHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBWZWN0b3IgY3VyclJlbHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICB3aGlsZSAobmV4dE5vZGUgIT0gbnVsbCAmJiBjdXJyTm9kZSAhPSBudWxsICYmICghaXNSb290RWxlbWVudChuZXh0Tm9kZS5nZXRUcmVlRWxlbWVudCgpKSB8fCAhaXNSb290RWxlbWVudChjdXJyTm9kZS5nZXRUcmVlRWxlbWVudCgpKSkgJiYgbmV4dE5vZGUgIT0gY3Vyck5vZGUpCi0gICAgICB7Ci0gICAgICAgIGlmIChuZXh0Tm9kZS5nZXROb2RlRGVwdGgoKSA+PSBjdXJyTm9kZS5nZXROb2RlRGVwdGgoKSkKLSAgICAgICAgewotICAgICAgICAgIE5vZGUgcGFyZW50Tm9kZSA9IG5leHROb2RlLmdldFBhcmVudCgpOwotICAgICAgICAgIEVsZW1lbnQgbmV4dEVsZW1lbnQgPSBuZXh0Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICAgIFJlbCByZWwgPSBnZXRSZWwocGFyZW50Tm9kZS5nZXRUcmVlRWxlbWVudCgpLCBuZXh0RWxlbWVudCk7Ci0gICAgICAgICAgU3RyaW5nQnVmZmVyIHJlbFZhbHVlID0gbmV3IFN0cmluZ0J1ZmZlcihyZWwuZ2V0TmFtZSgpKTsKLSAgICAgICAgICByZWxWYWx1ZS5hcHBlbmQoTW9kZWxDb25zdGFudHMuUkVMX0xPQ0FMTkFNRV9TRVBBUkFUT1IpOwotICAgICAgICAgIHJlbFZhbHVlLmFwcGVuZChuZXh0RWxlbWVudC5nZXROYW1lKCkpOwotICAgICAgICAgIG5leHRSZWxzLmluc2VydEVsZW1lbnRBdChyZWxWYWx1ZS50b1N0cmluZygpLCAwKTsKLSAgICAgICAgICBuZXh0Tm9kZSA9IHBhcmVudE5vZGU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgTm9kZSBwYXJlbnROb2RlID0gY3Vyck5vZGUuZ2V0UGFyZW50KCk7Ci0gICAgICAgICAgRWxlbWVudCBwYXJlbnRFbGVtZW50ID0gcGFyZW50Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICAgIFJlbCByZWwgPSBnZXRSZWwoY3Vyck5vZGUuZ2V0VHJlZUVsZW1lbnQoKSwgcGFyZW50RWxlbWVudCk7Ci0gICAgICAgICAgU3RyaW5nQnVmZmVyIHJlbFZhbHVlID0gbmV3IFN0cmluZ0J1ZmZlcihyZWwuZ2V0TmFtZSgpKTsKLSAgICAgICAgICByZWxWYWx1ZS5hcHBlbmQoTW9kZWxDb25zdGFudHMuUkVMX0xPQ0FMTkFNRV9TRVBBUkFUT1IpOwotICAgICAgICAgIHJlbFZhbHVlLmFwcGVuZChwYXJlbnRFbGVtZW50LmdldE5hbWUoKSk7Ci0gICAgICAgICAgY3VyclJlbHMuYWRkKHJlbFZhbHVlLnRvU3RyaW5nKCkpOwotICAgICAgICAgIGN1cnJOb2RlID0gcGFyZW50Tm9kZTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY3VyclJlbHMuYWRkQWxsKG5leHRSZWxzKTsKLSAgICAgIGludCBudW1SZWxhdGlvbnNoaXBzID0gY3VyclJlbHMuc2l6ZSgpOwotICAgICAgaWYgKG51bVJlbGF0aW9uc2hpcHMgPT0gMSkKLSAgICAgICAgcHJvcGVydGllcy5wdXQoTW9kZWxDb25zdGFudHMuUkVMX0lELCBjdXJyUmVscy5nZXQoMCkudG9TdHJpbmcoKSk7Ci0gICAgICBlbHNlIGlmIChudW1SZWxhdGlvbnNoaXBzID4gMSkKLSAgICAgICAgcHJvcGVydGllcy5wdXQoTW9kZWxDb25zdGFudHMuUkVMX0lELCAoU3RyaW5nW10pIGN1cnJSZWxzLnRvQXJyYXkobmV3IFN0cmluZ1swXSkpOwotICAgIH0KLSAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkKLSAgICB7Ci0gICAgfQotICAgIHJldHVybiBwcm9wZXJ0aWVzOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIGlzUm9vdEVsZW1lbnQoRWxlbWVudCBlKQotICB7Ci0gICAgcmV0dXJuIGUuZ2V0TW9kZWwoKS5nZXRSb290RWxlbWVudCgpID09IGU7Ci0gIH0KLQotICBwcml2YXRlIFJlbCBnZXRSZWwoRWxlbWVudCBzb3VyY2VFbGVtZW50LCBFbGVtZW50IHRhcmdldEVsZW1lbnQpCi0gIHsKLSAgICBFbnVtZXJhdGlvbiByZWxzID0gc291cmNlRWxlbWVudC5nZXRSZWxzKCk7Ci0gICAgd2hpbGUgKHJlbHMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgUmVsIHJlbCA9IChSZWwpIHJlbHMubmV4dEVsZW1lbnQoKTsKLSAgICAgIEVudW1lcmF0aW9uIHRhcmdldEVsZW1lbnRzID0gcmVsLmdldFRhcmdldEVsZW1lbnRzKCk7Ci0gICAgICB3aGlsZSAodGFyZ2V0RWxlbWVudHMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICB7Ci0gICAgICAgIGlmICh0YXJnZXRFbGVtZW50cy5uZXh0RWxlbWVudCgpID09IHRhcmdldEVsZW1lbnQpCi0gICAgICAgICAgcmV0dXJuIHJlbDsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgSGFzaHRhYmxlIGRlTm9ybWFsaXplKEhhc2h0YWJsZSBwcm9wZXJ0aWVzKQotICB7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBjb250cm9sbGVyLmdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSByb290Tm9kZSA9IG5vZGVNYW5hZ2VyLmdldFJvb3ROb2RlKCk7Ci0gICAgTm9kZSBjdXJyTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIGlmIChjdXJyTm9kZSA9PSBudWxsKQotICAgICAgY3Vyck5vZGUgPSByb290Tm9kZTsKLSAgICBPYmplY3QgdmFsdWUgPSBwcm9wZXJ0aWVzLmdldChNb2RlbENvbnN0YW50cy5SRUxfSUQpOwotICAgIFN0cmluZ1tdIHJlbGF0aW9uc2hpcHMgPSBudWxsOwotICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZ1tdKQotICAgICAgcmVsYXRpb25zaGlwcyA9IChTdHJpbmdbXSkgdmFsdWU7Ci0gICAgZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkKLSAgICAgIHJlbGF0aW9uc2hpcHMgPSBuZXcgU3RyaW5nW117dmFsdWUudG9TdHJpbmcoKX07Ci0gICAgaWYgKHJlbGF0aW9uc2hpcHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBFbGVtZW50IGN1cnJFbGVtZW50ID0gY3Vyck5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVsYXRpb25zaGlwcy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgaW50IGluZGV4ID0gcmVsYXRpb25zaGlwc1tpXS5pbmRleE9mKE1vZGVsQ29uc3RhbnRzLlJFTF9MT0NBTE5BTUVfU0VQQVJBVE9SKTsKLSAgICAgICAgU3RyaW5nIHJlbCA9IChpbmRleCAhPSAtMSkgPyByZWxhdGlvbnNoaXBzW2ldLnN1YnN0cmluZygwLCBpbmRleCkgOiByZWxhdGlvbnNoaXBzW2ldOwotICAgICAgICBTdHJpbmcgbG9jYWxuYW1lID0gKGluZGV4ICE9IC0xKSA/IHJlbGF0aW9uc2hpcHNbaV0uc3Vic3RyaW5nKGluZGV4ICsgMSwgcmVsYXRpb25zaGlwc1tpXS5sZW5ndGgoKSkgOiBudWxsOwotICAgICAgICBFbnVtZXJhdGlvbiBlID0gY3VyckVsZW1lbnQuZ2V0RWxlbWVudHMocmVsKTsKLSAgICAgICAgRWxlbWVudCB0YXJnZXRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgaWYgKGxvY2FsbmFtZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgRWxlbWVudCBmaXJzdEVsZW1lbnQgPSBudWxsOwotICAgICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIEVsZW1lbnQgbmV4dEVsZW1lbnQgPSAoRWxlbWVudCkgZS5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgaWYgKGZpcnN0RWxlbWVudCA9PSBudWxsKQotICAgICAgICAgICAgICBmaXJzdEVsZW1lbnQgPSBuZXh0RWxlbWVudDsKLSAgICAgICAgICAgIGlmIChsb2NhbG5hbWUuZXF1YWxzKG5leHRFbGVtZW50LmdldE5hbWUoKSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHRhcmdldEVsZW1lbnQgPSBuZXh0RWxlbWVudDsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50ID09IG51bGwpCi0gICAgICAgICAgICB0YXJnZXRFbGVtZW50ID0gZmlyc3RFbGVtZW50OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGlmIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgICAgICAgdGFyZ2V0RWxlbWVudCA9IChFbGVtZW50KSBlLm5leHRFbGVtZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGN1cnJFbGVtZW50ID0gKEVsZW1lbnQpIHRhcmdldEVsZW1lbnQ7Ci0gICAgICAgICAgTm9kZSBwYXJlbnROb2RlID0gY3Vyck5vZGUuZ2V0UGFyZW50KCk7Ci0gICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT0gbnVsbCAmJiBwYXJlbnROb2RlLmdldFRyZWVFbGVtZW50KCkgPT0gY3VyckVsZW1lbnQpCi0gICAgICAgICAgICBjdXJyTm9kZSA9IHBhcmVudE5vZGU7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY3Vyck5vZGUgPSBjdXJyTm9kZS5nZXRDaGlsZE5vZGUoKFRyZWVFbGVtZW50KSBjdXJyRWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcHJvcGVydGllcy5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgU3RyaW5nLnZhbHVlT2YoY3Vyck5vZGUuZ2V0Tm9kZUlkKCkpKTsKLSAgICByZXR1cm4gcHJvcGVydGllczsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9lbmdpbmUvdHJhbnNmb3JtZXIvVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9WaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI2MWYyYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2VuZ2luZS90cmFuc2Zvcm1lci9WaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lcjsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lciBpbXBsZW1lbnRzIElUcmFuc2Zvcm1lcgotewotICBwcm90ZWN0ZWQgQ29udHJvbGxlciBjb250cm9sbGVyOwotICBwcm90ZWN0ZWQgU3RyaW5nIGxpc3RNYW5hZ2VyS2V5OwotICBwcm90ZWN0ZWQgU3RyaW5nIHZpZXdLZXk7Ci0KLSAgcHVibGljIFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lcihDb250cm9sbGVyIGNvbnRyb2xsZXIsIFN0cmluZyBsaXN0TWFuYWdlcktleSwgU3RyaW5nIHZpZXdLZXkpCi0gIHsKLSAgICB0aGlzLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyOwotICAgIHRoaXMubGlzdE1hbmFnZXJLZXkgPSBsaXN0TWFuYWdlcktleTsKLSAgICB0aGlzLnZpZXdLZXkgPSB2aWV3S2V5OwotICB9Ci0KLSAgcHVibGljIEhhc2h0YWJsZSBub3JtYWxpemUoSGFzaHRhYmxlIHByb3BlcnRpZXMpCi0gIHsKLSAgICBWZWN0b3Igbm9ybWFsaXplZFZpZXdJZHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBjb250cm9sbGVyLmdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBjdXJyTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIFRyZWVFbGVtZW50IGN1cnJFbGVtZW50ID0gY3Vyck5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBPYmplY3QgbGlzdE1hbmFnZXJPYmogPSBjdXJyRWxlbWVudC5nZXRQcm9wZXJ0eUFzT2JqZWN0KGxpc3RNYW5hZ2VyS2V5KTsKLSAgICBpZiAobGlzdE1hbmFnZXJPYmogaW5zdGFuY2VvZiBMaXN0TWFuYWdlcikKLSAgICB7Ci0gICAgICBMaXN0TWFuYWdlciBsaXN0TWFuYWdlciA9IChMaXN0TWFuYWdlcikgbGlzdE1hbmFnZXJPYmo7Ci0gICAgICBTdHJpbmdbXSB2aWV3SWRzID0gZ2V0Vmlld1ZhbHVlcyhwcm9wZXJ0aWVzKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmlld0lkcy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSBudWxsOwotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIGxpc3RFbGVtZW50ID0gbGlzdE1hbmFnZXIuZ2V0RWxlbWVudFdpdGhWaWV3SWQoSW50ZWdlci5wYXJzZUludCh2aWV3SWRzW2ldKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBuZmUpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICBpZiAobGlzdEVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIE9iamVjdCBvYmplY3QgPSBsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgICBpZiAob2JqZWN0ICE9IG51bGwgJiYgb2JqZWN0IGluc3RhbmNlb2YgRWxlbWVudCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQgPSAoRWxlbWVudCkgb2JqZWN0OwotICAgICAgICAgICAgbm9ybWFsaXplZFZpZXdJZHMuYWRkKGVsZW1lbnQuZ2V0TmFtZSgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcHJvcGVydGllcy5wdXQodmlld0tleSwgbm9ybWFsaXplZFZpZXdJZHMudG9BcnJheShuZXcgU3RyaW5nWzBdKSk7Ci0gICAgcmV0dXJuIHByb3BlcnRpZXM7Ci0gIH0KLQotICBwdWJsaWMgSGFzaHRhYmxlIGRlTm9ybWFsaXplKEhhc2h0YWJsZSBwcm9wZXJ0aWVzKQotICB7Ci0gICAgVmVjdG9yIHZpZXdJZHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgTm9kZSBjdXJyTm9kZSA9IGNvbnRyb2xsZXIuZ2V0Q3VycmVudFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBpZiAoY3Vyck5vZGUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBUcmVlRWxlbWVudCBjdXJyRWxlbWVudCA9IGN1cnJOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICBPYmplY3QgbGlzdE1hbmFnZXJPYmogPSBjdXJyRWxlbWVudC5nZXRQcm9wZXJ0eUFzT2JqZWN0KGxpc3RNYW5hZ2VyS2V5KTsKLSAgICAgIGlmIChsaXN0TWFuYWdlck9iaiBpbnN0YW5jZW9mIExpc3RNYW5hZ2VyKQotICAgICAgewotICAgICAgICBMaXN0TWFuYWdlciBsaXN0TWFuYWdlciA9IChMaXN0TWFuYWdlcikgbGlzdE1hbmFnZXJPYmo7Ci0gICAgICAgIFN0cmluZ1tdIG5vcm1hbGl6ZWRWaWV3SWRzID0gZ2V0Vmlld1ZhbHVlcyhwcm9wZXJ0aWVzKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBub3JtYWxpemVkVmlld0lkcy5sZW5ndGg7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIEVudW1lcmF0aW9uIGUgPSBsaXN0TWFuYWdlci5nZXRMaXN0RWxlbWVudHMoKTsKLSAgICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudCkgZS5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgRWxlbWVudCBlbGVtZW50ID0gKEVsZW1lbnQpIGxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT0gbnVsbCAmJiBub3JtYWxpemVkVmlld0lkc1tpXS5lcXVhbHMoZWxlbWVudC5nZXROYW1lKCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICB2aWV3SWRzLmFkZChTdHJpbmcudmFsdWVPZihsaXN0RWxlbWVudC5nZXRWaWV3SWQoKSkpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgaW50IHNpemUgPSB2aWV3SWRzLnNpemUoKTsKLSAgICBpZiAoc2l6ZSA9PSAxKQotICAgICAgcHJvcGVydGllcy5wdXQodmlld0tleSwgdmlld0lkcy5nZXQoMCkpOwotICAgIGVsc2UgaWYgKHNpemUgPiAxKQotICAgICAgcHJvcGVydGllcy5wdXQodmlld0tleSwgdmlld0lkcy50b0FycmF5KG5ldyBTdHJpbmdbMF0pKTsKLSAgICByZXR1cm4gcHJvcGVydGllczsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nW10gZ2V0Vmlld1ZhbHVlcyhIYXNodGFibGUgcHJvcGVydGllcykKLSAgewotICAgIE9iamVjdCB2aWV3VmFsdWVPYmogPSBwcm9wZXJ0aWVzLmdldCh2aWV3S2V5KTsKLSAgICBTdHJpbmdbXSB2aWV3VmFsdWVzOwotICAgIGlmICh2aWV3VmFsdWVPYmogPT0gbnVsbCkKLSAgICAgIHZpZXdWYWx1ZXMgPSBuZXcgU3RyaW5nWzBdOwotICAgIGVsc2UgaWYgKHZpZXdWYWx1ZU9iai5nZXRDbGFzcygpLmlzQXJyYXkoKSkKLSAgICAgIHZpZXdWYWx1ZXMgPSAoU3RyaW5nW10pIHZpZXdWYWx1ZU9iajsKLSAgICBlbHNlCi0gICAgICB2aWV3VmFsdWVzID0gbmV3IFN0cmluZ1tdeyhTdHJpbmcpIHZpZXdWYWx1ZU9ian07Ci0gICAgcmV0dXJuIHZpZXdWYWx1ZXM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9BZGRCdXNpbmVzc1RvVURESVBlcnNwZWN0aXZlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYTI3ZTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9BZGRCdXNpbmVzc1RvVURESVBlcnNwZWN0aXZlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc1VERElCdXNpbmVzc0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5SZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIEFkZEJ1c2luZXNzVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24gZXh0ZW5kcyBBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbgotewotICBwdWJsaWMgQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIGludCBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGZhdlBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXROb2RlKG5vZGVJRCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgRmF2b3JpdGVzVURESUJ1c2luZXNzRWxlbWVudCBidXNFbGVtZW50ID0gKEZhdm9yaXRlc1VERElCdXNpbmVzc0VsZW1lbnQpIHNlbGVjdGVkRWxlbWVudDsKLSAgICBTdHJpbmcgYnVzaW5lc3NOYW1lID0gYnVzRWxlbWVudC5nZXROYW1lKCk7Ci0gICAgU3RyaW5nIGlucXVpcnlBUEkgPSBidXNFbGVtZW50LmdldElucXVpcnlVUkwoKTsKLSAgICBTdHJpbmcgYnVzaW5lc3NLZXkgPSBidXNFbGVtZW50LmdldEJ1c2luZXNzS2V5KCk7Ci0gICAgLy8gY3JlYXRlIHRoZSByZWdpc3RyeSBpbiB0aGUgVURESSBwZXJzcGVjdGl2ZQotICAgIGlmICghY3JlYXRlUmVnaXN0cnlJblVERElQZXJzcGVjdGl2ZShpbnF1aXJ5QVBJLCBudWxsLCBpbnF1aXJ5QVBJLCBudWxsLCB0cnVlKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBSZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uIGFjdGlvbiA9IG5ldyBSZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSwgYnVzaW5lc3NLZXkpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSwgYnVzaW5lc3NOYW1lKTsKLSAgICBpZiAoIWFjdGlvbi5ydW4oKSkKLSAgICB7Ci0gICAgICBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9BRERfVE9fVURESV9QRVJTUEVDVElWRSIsIGJ1c2luZXNzTmFtZSkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLnNldFZpc2liaWxpdHlPZkNoaWxkcmVuKHRydWUpOwotICAgIGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2UoZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fQUREX1RPX1VERElfUEVSU1BFQ1RJVkVfU1VDQ0VTU0ZVTCIsIGJ1c2luZXNzTmFtZSkpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0FkZFJlZ2lzdHJ5VG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvQWRkUmVnaXN0cnlUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGE2MTRmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvQWRkUmVnaXN0cnlUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEFkZFJlZ2lzdHJ5VG9VRERJUGVyc3BlY3RpdmVBY3Rpb24gZXh0ZW5kcyBBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbgotewotICBwdWJsaWMgQWRkUmVnaXN0cnlUb1VERElQZXJzcGVjdGl2ZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIGludCBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUobm9kZUlEKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudCkgc2VsZWN0ZWRFbGVtZW50OwotICAgIFN0cmluZyByZWdpc3RyeU5hbWUgPSByZWdFbGVtZW50LmdldE5hbWUoKTsKLSAgICBTdHJpbmcgaW5xdWlyeUFQSSA9IHJlZ0VsZW1lbnQuZ2V0SW5xdWlyeVVSTCgpOwotICAgIFN0cmluZyBwdWJsaXNoQVBJID0gcmVnRWxlbWVudC5nZXRQdWJsaXNoVVJMKCk7Ci0gICAgU3RyaW5nIHJlZ2lzdHJhdGlvblVSTCA9IHJlZ0VsZW1lbnQuZ2V0UmVnaXN0cmF0aW9uVVJMKCk7Ci0gICAgaWYgKCFjcmVhdGVSZWdpc3RyeUluVURESVBlcnNwZWN0aXZlKGlucXVpcnlBUEksIHB1Ymxpc2hBUEksIHJlZ2lzdHJ5TmFtZSwgcmVnaXN0cmF0aW9uVVJMLCBmYWxzZSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZShmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19BRERfVE9fVURESV9QRVJTUEVDVElWRV9TVUNDRVNTRlVMIiwgcmVnaXN0cnlOYW1lKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvQWRkU2VydmljZUludGVyZmFjZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0FkZFNlcnZpY2VJbnRlcmZhY2VUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmZmODIxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvQWRkU2VydmljZUludGVyZmFjZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlJlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlVVVJREFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci0KLXB1YmxpYyBjbGFzcyBBZGRTZXJ2aWNlSW50ZXJmYWNlVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24gZXh0ZW5kcyBBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbgotewotICBwdWJsaWMgQWRkU2VydmljZUludGVyZmFjZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gZXhlY3V0ZVNpbmdsZUxpbmtBY3Rpb24oKQotICB7Ci0gICAgaW50IG5vZGVJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUobm9kZUlEKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUVsZW1lbnQgc2VySW50RWxlbWVudCA9IChGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUVsZW1lbnQpIHNlbGVjdGVkRWxlbWVudDsKLSAgICBTdHJpbmcgc2VySW50TmFtZSA9IHNlckludEVsZW1lbnQuZ2V0TmFtZSgpOwotICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gc2VySW50RWxlbWVudC5nZXRJbnF1aXJ5VVJMKCk7Ci0gICAgU3RyaW5nIHNlckludEtleSA9IHNlckludEVsZW1lbnQuZ2V0U2VydmljZUludGVyZmFjZUtleSgpOwotICAgIC8vIGNyZWF0ZSB0aGUgcmVnaXN0cnkgaW4gdGhlIFVEREkgcGVyc3BlY3RpdmUKLSAgICBpZiAoIWNyZWF0ZVJlZ2lzdHJ5SW5VRERJUGVyc3BlY3RpdmUoaW5xdWlyeUFQSSwgbnVsbCwgaW5xdWlyeUFQSSwgbnVsbCwgdHJ1ZSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VVVUlEQWN0aW9uIGFjdGlvbiA9IG5ldyBSZWdGaW5kU2VydmljZUludGVyZmFjZVVVSURBY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZLCBzZXJJbnRLZXkpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSwgc2VySW50TmFtZSk7Ci0gICAgaWYgKCFhY3Rpb24ucnVuKCkpCi0gICAgewotICAgICAgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZShmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfQUREX1RPX1VERElfUEVSU1BFQ1RJVkUiLCBzZXJJbnROYW1lKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCkuc2V0VmlzaWJpbGl0eU9mQ2hpbGRyZW4odHJ1ZSk7Ci0gICAgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZShmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19BRERfVE9fVURESV9QRVJTUEVDVElWRV9TVUNDRVNTRlVMIiwgc2VySW50TmFtZSkpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0FkZFNlcnZpY2VUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9BZGRTZXJ2aWNlVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkyMzljMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0FkZFNlcnZpY2VUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNVRERJU2VydmljZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5SZWdGaW5kU2VydmljZVVVSURBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotCi1wdWJsaWMgY2xhc3MgQWRkU2VydmljZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uIGV4dGVuZHMgQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24KLXsKLSAgcHVibGljIEFkZFNlcnZpY2VUb1VERElQZXJzcGVjdGl2ZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIGludCBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGZhdlBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXROb2RlKG5vZGVJRCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50IHNlckVsZW1lbnQgPSAoRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50KSBzZWxlY3RlZEVsZW1lbnQ7Ci0gICAgU3RyaW5nIHNlcnZpY2VOYW1lID0gc2VyRWxlbWVudC5nZXROYW1lKCk7Ci0gICAgU3RyaW5nIGlucXVpcnlBUEkgPSBzZXJFbGVtZW50LmdldElucXVpcnlVUkwoKTsKLSAgICBTdHJpbmcgc2VydmljZUtleSA9IHNlckVsZW1lbnQuZ2V0U2VydmljZUtleSgpOwotICAgIC8vIGNyZWF0ZSB0aGUgcmVnaXN0cnkgaW4gdGhlIFVEREkgcGVyc3BlY3RpdmUKLSAgICBpZiAoIWNyZWF0ZVJlZ2lzdHJ5SW5VRERJUGVyc3BlY3RpdmUoaW5xdWlyeUFQSSwgbnVsbCwgaW5xdWlyeUFQSSwgbnVsbCwgdHJ1ZSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVnRmluZFNlcnZpY2VVVUlEQWN0aW9uIGFjdGlvbiA9IG5ldyBSZWdGaW5kU2VydmljZVVVSURBY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9LRVksIHNlcnZpY2VLZXkpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSwgc2VydmljZU5hbWUpOwotICAgIGlmICghYWN0aW9uLnJ1bigpKQotICAgIHsKLSAgICAgIGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2UoZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0FERF9UT19VRERJX1BFUlNQRUNUSVZFIiwgc2VydmljZU5hbWUpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKS5zZXRWaXNpYmlsaXR5T2ZDaGlsZHJlbih0cnVlKTsKLSAgICBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX0FERF9UT19VRERJX1BFUlNQRUNUSVZFX1NVQ0NFU1NGVUwiLCBzZXJ2aWNlTmFtZSkpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0FkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0FkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkODZiNmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9BZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9uczsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc0ZvbGRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc1VERElTZXJ2aWNlRm9sZGVyRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUZvbGRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuT3BlblJlZ2lzdHJ5QWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5DYXRlZ29yeU1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuUmVnaXN0cnlOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElNYWluTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5VUkxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teTsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEFkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uIGV4dGVuZHMgTXVsdGlwbGVMaW5rQWN0aW9uIHsKLSAgICBwdWJsaWMgQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgaW50IHRvb2xJRCwgaW50IHZpZXdJRCwgaW50IHZpZXdUb29sSUQpIHsKLSAgICAgICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJmYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChub2RlSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVE9PTElEKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQodG9vbElEKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdJRCk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdJRCk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXVE9PTElEKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQodmlld1Rvb2xJRCk7Ci0gICAgICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QmFzZUFjdGlvbkxpbmsoKSB7Ci0gICAgICAgIHJldHVybiAiZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwIjsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgYm9vbGVhbiBjcmVhdGVSZWdpc3RyeUluVURESVBlcnNwZWN0aXZlKFN0cmluZyBpbnF1aXJ5QVBJLCBTdHJpbmcgcHVibGlzaEFQSSwgU3RyaW5nIHJlZ2lzdHJ5TmFtZSwgU3RyaW5nIHJlZ2lzdHJhdGlvblVSTCwgYm9vbGVhbiB1c2VFeGlzdGluZykKLSAgICB7Ci0gICAgICByZXR1cm4gY3JlYXRlUmVnaXN0cnlJblVERElQZXJzcGVjdGl2ZShpbnF1aXJ5QVBJLCBwdWJsaXNoQVBJLCByZWdpc3RyeU5hbWUsIHJlZ2lzdHJhdGlvblVSTCwgbnVsbCwgbnVsbCwgbnVsbCwgdXNlRXhpc3RpbmcpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBib29sZWFuIGNyZWF0ZVJlZ2lzdHJ5SW5VRERJUGVyc3BlY3RpdmUoU3RyaW5nIGlucXVpcnlBUEksIFN0cmluZyBwdWJsaXNoQVBJLCBTdHJpbmcgcmVnaXN0cnlOYW1lLCBTdHJpbmcgcmVnaXN0cmF0aW9uVVJMLCBTdHJpbmcgZGVmYXVsdExvZ2luLCBTdHJpbmcgZGVmYXVsdFBhc3N3b3JkLCBUYXhvbm9teVtdIHRheG9ub21pZXMsIGJvb2xlYW4gdXNlRXhpc3RpbmcpIHsKLSAgICAgIFZlY3RvciByZWdpc3RyeU5vZGVzID0gZ2V0UmVnaXN0cnlOb2Rlc0J5SW5xdWlyeVVSTChpbnF1aXJ5QVBJKTsKLSAgICAgICAgaWYgKHJlZ2lzdHJ5Tm9kZXMgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlmICh1c2VFeGlzdGluZykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBOb2RlIHJlZ2lzdHJ5Tm9kZSA9IChOb2RlKXJlZ2lzdHJ5Tm9kZXMuZWxlbWVudEF0KDApOwotICAgICAgICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSByZWdpc3RyeU5vZGUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgICAgICAgIG5vZGVNYW5hZ2VyLnNldFNlbGVjdGVkTm9kZUlkKHJlZ2lzdHJ5Tm9kZS5nZXROb2RlSWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIG9wZW4gdGhlIHJlZ2lzdHJ5IGlmIGl0IGlzIG5vdCBhbHJlYWR5IG9wZW5lZCBpbiB0aGUgVURESSBwZXJzcGVjdGl2ZQotICAgICAgICBPcGVuUmVnaXN0cnlBY3Rpb24gb3BlblJlZ0FjdGlvbiA9IG5ldyBPcGVuUmVnaXN0cnlBY3Rpb24oY29udHJvbGxlcl8pOwotCi0gICAgICAgIC8vIHBvcHVsYXRlIHRoZSBwcm9wZXJ0eSB0YWJsZQotICAgICAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IG9wZW5SZWdBY3Rpb24uZ2V0UHJvcGVydHlUYWJsZSgpOwotICAgICAgICBpZiAoVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHJlZ2lzdHJ5TmFtZSkpCi0gICAgICAgICAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlJFR0lTVFJZX05BTUUscmVnaXN0cnlOYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChWYWxpZGF0b3IudmFsaWRhdGVVUkwoaW5xdWlyeUFQSSkpCi0gICAgICAgICAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLklOUVVJUllfVVJMLGlucXVpcnlBUEkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKFZhbGlkYXRvci52YWxpZGF0ZVVSTChwdWJsaXNoQVBJKSkKLSAgICAgICAgICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSF9VUkwscHVibGlzaEFQSSk7Ci0KLSAgICAgICAgaWYgKFZhbGlkYXRvci52YWxpZGF0ZVVSTChyZWdpc3RyYXRpb25VUkwpKQotICAgICAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5SRUdJU1RSQVRJT05fVVJMLHJlZ2lzdHJhdGlvblVSTCk7Ci0KLSAgICAgICAgaWYgKGRlZmF1bHRMb2dpbiAhPSBudWxsKQotICAgICAgICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuVURESV9VU0VSTkFNRSwgZGVmYXVsdExvZ2luKTsKLQotICAgICAgICBpZiAoZGVmYXVsdFBhc3N3b3JkICE9IG51bGwpCi0gICAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5VRERJX1BBU1NXT1JELCBkZWZhdWx0UGFzc3dvcmQpOwotICAgICAgICAgICAgCi0gICAgICAgIC8vIElmIHVzZXItZGVmaW5lZCBjYXRlZ29yeSBtZXRhZGF0YSBleGlzdHMsIHNlYXJjaCBhbmQgbWFrZSB0aGUgYXNzb2NpYXRpb25zLgotICAgICAgICBTdHJpbmdCdWZmZXIgZGlyZWN0b3J5QnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICBGYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50LmZvcm1DYXRlZ29yaWVzRGlyZWN0b3J5KGRpcmVjdG9yeUJ1ZmZlcixjb250cm9sbGVyXy5nZXRTZXJ2bGV0RW5naW5lU3RhdGVMb2NhdGlvbigpLHJlZ2lzdHJ5TmFtZSk7Ci0gICAgICAgIEZpbGUgY2F0ZWdvcmllc0RpcmVjdG9yeSA9IG5ldyBGaWxlKGRpcmVjdG9yeUJ1ZmZlci50b1N0cmluZygpKTsKLSAgICAgICAgRmlsZVtdIGNhdGVnb3J5RmlsZXMgPSBudWxsOwotICAgICAgICBpZiAoY2F0ZWdvcmllc0RpcmVjdG9yeS5leGlzdHMoKSkKLSAgICAgICAgewotICAgICAgICAgIGNhdGVnb3J5RmlsZXMgPSBjYXRlZ29yaWVzRGlyZWN0b3J5Lmxpc3RGaWxlcygpOwotICAgICAgICAgIGlmIChjYXRlZ29yeUZpbGVzLmxlbmd0aCA+IDApCi0gICAgICAgICAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLkNIRUNLX1VTRVJfREVGSU5FRF9DQVRFR09SSUVTLEJvb2xlYW4uVFJVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBydW4gdGhlIGFjdGlvbgotICAgICAgICBpZiAoIW9wZW5SZWdBY3Rpb24ucnVuKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBpZiAodGF4b25vbWllcyAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgSGFzaHRhYmxlIHRheG9ub215VGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICAgICAgZm9yIChpbnQgaT0wOyBpPHRheG9ub21pZXMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgVGF4b25vbXkgdGF4b25vbXkgPSB0YXhvbm9taWVzW2ldOwotICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSB0YXhvbm9teS5nZXROYW1lKCk7Ci0gICAgICAgICAgICBTdHJpbmcgdG1vZGVsS2V5ID0gdGF4b25vbXkuZ2V0VG1vZGVsS2V5KCk7Ci0gICAgICAgICAgICBDYXRlZ29yeU1vZGVsIGNhdE1vZGVsID0gbmV3IENhdGVnb3J5TW9kZWwoKTsKLSAgICAgICAgICAgIGNhdE1vZGVsLnNldERpc3BsYXlOYW1lKG5hbWUpOwotICAgICAgICAgICAgY2F0TW9kZWwuc2V0Q2F0ZWdvcnlLZXkobmFtZSk7Ci0gICAgICAgICAgICBjYXRNb2RlbC5zZXRUTW9kZWxLZXkodG1vZGVsS2V5KTsKLSAgICAgICAgICAgIGNhdE1vZGVsLmxvYWRGcm9tVGF4b25vbXkodGF4b25vbXkpOwotICAgICAgICAgICAgdGF4b25vbXlUYWJsZS5wdXQodG1vZGVsS2V5LCBjYXRNb2RlbCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudCkoY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TmF2aWdhdG9yTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldFRyZWVFbGVtZW50KCkpOwotICAgICAgICAgIHJlZ0VsZW1lbnQuc2V0VXNlckRlZmluZWRDYXRlZ29yaWVzKHRheG9ub215VGFibGUpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoY2F0ZWdvcnlGaWxlcyAhPSBudWxsICYmIGNhdGVnb3J5RmlsZXMubGVuZ3RoID4gMCkKLSAgICAgICAgewotICAgICAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudCkoY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TmF2aWdhdG9yTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldFRyZWVFbGVtZW50KCkpOwotICAgICAgICAgIHJlZ0VsZW1lbnQuc2V0Q2hlY2tGb3JVc2VyRGVmaW5lZENhdGVnb3JpZXModHJ1ZSk7Ci0gICAgICAgICAgcmVnRWxlbWVudC5nZXRVc2VyRGVmaW5lZENhdGVnb3JpZXMoKTsKLSAgICAgICAgICBsaW5rQ2F0ZWdvcnlNb2RlbHNXaXRoU2F2ZWREYXRhKHJlZ2lzdHJ5TmFtZSxyZWdFbGVtZW50LmdldFVzZXJEZWZpbmVkQ2F0ZWdvcmllcygpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGZpbmFsIHZvaWQgbGlua0NhdGVnb3J5TW9kZWxzV2l0aFNhdmVkRGF0YShTdHJpbmcgcmVnaXN0cnlOYW1lLEVudW1lcmF0aW9uIHVzZXJEZWZpbmVkQ2F0ZWdvcmllcykKLSAgICB7Ci0gICAgICBTdHJpbmdCdWZmZXIgZGlyZWN0b3J5QnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudC5mb3JtQ2F0ZWdvcmllc0RpcmVjdG9yeShkaXJlY3RvcnlCdWZmZXIsY29udHJvbGxlcl8uZ2V0U2VydmxldEVuZ2luZVN0YXRlTG9jYXRpb24oKSxyZWdpc3RyeU5hbWUpOwotICAgICAgbGlua0NhdGVnb3J5TW9kZWxzV2l0aFNhdmVkRGF0YSh1c2VyRGVmaW5lZENhdGVnb3JpZXMsZGlyZWN0b3J5QnVmZmVyLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgdm9pZCBsaW5rQ2F0ZWdvcnlNb2RlbHNXaXRoU2F2ZWREYXRhKEVudW1lcmF0aW9uIHVzZXJEZWZpbmVkQ2F0ZWdvcmllcyxTdHJpbmcgY2F0ZWdvcmllc0RpcmVjdG9yeSkKLSAgICB7Ci0gICAgICBGaWxlIGNhdGVnb3JpZXNEaXJlY3RvcnlGaWxlID0gbmV3IEZpbGUoY2F0ZWdvcmllc0RpcmVjdG9yeSk7Ci0gICAgICBGaWxlW10gY2F0ZWdvcnlGaWxlcyA9IG51bGw7Ci0gICAgICBpZiAoY2F0ZWdvcmllc0RpcmVjdG9yeUZpbGUuZXhpc3RzKCkpCi0gICAgICB7Ci0gICAgICAgIGNhdGVnb3J5RmlsZXMgPSBjYXRlZ29yaWVzRGlyZWN0b3J5RmlsZS5saXN0RmlsZXMoKTsgCi0gICAgICAgIGlmICh1c2VyRGVmaW5lZENhdGVnb3JpZXMgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHdoaWxlICh1c2VyRGVmaW5lZENhdGVnb3JpZXMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgQ2F0ZWdvcnlNb2RlbCBjYXRlZ29yeU1vZGVsID0gKENhdGVnb3J5TW9kZWwpdXNlckRlZmluZWRDYXRlZ29yaWVzLm5leHRFbGVtZW50KCk7Ci0gICAgICAgICAgICBTdHJpbmcgY2F0ZWdvcnlLZXkgPSBjYXRlZ29yeU1vZGVsLmdldENhdGVnb3J5S2V5KCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7aTxjYXRlZ29yeUZpbGVzLmxlbmd0aDtpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFN0cmluZyBjYXRlZ29yeVByb3BlcnRpZXNGaWxlTmFtZSA9IGNhdGVnb3J5RmlsZXNbaV0uZ2V0TmFtZSgpOwotICAgICAgICAgICAgICBpbnQgbGFzdERvdFBvcyA9IGNhdGVnb3J5UHJvcGVydGllc0ZpbGVOYW1lLmxhc3RJbmRleE9mKCIuIik7Ci0gICAgICAgICAgICAgIFN0cmluZyBkZWNvZGVkQ2F0ZWdvcnlQcm9wZXJ0aWVzRmlsZU5hbWVCYXNlID0gVVJMVXRpbHMuZGVjb2RlKGNhdGVnb3J5UHJvcGVydGllc0ZpbGVOYW1lLnN1YnN0cmluZygwLGxhc3REb3RQb3MpKTsKLSAgICAgICAgICAgICAgaWYgKGxhc3REb3RQb3MgPiAwICYmIGNhdGVnb3J5UHJvcGVydGllc0ZpbGVOYW1lLmVuZHNXaXRoKCIucHJvcGVydGllcyIpICYmIGNhdGVnb3J5S2V5LmVxdWFscyhkZWNvZGVkQ2F0ZWdvcnlQcm9wZXJ0aWVzRmlsZU5hbWVCYXNlKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhdGVnb3J5TW9kZWwuc2V0RGVmYXVsdERhdGFGaWxlKGNhdGVnb3J5RmlsZXNbaV0uZ2V0QWJzb2x1dGVQYXRoKCkpOwotICAgICAgICAgICAgICAgIGNhdGVnb3J5TW9kZWwubG9hZEZyb21EZWxpbWl0ZXJGaWxlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgVmVjdG9yIGdldFJlZ2lzdHJ5Tm9kZXNCeUlucXVpcnlVUkwoU3RyaW5nIGlucXVpcnlVUkwpCi0gICAgewotICAgICAgVmVjdG9yIHJlZ2lzdHJ5Tm9kZXMgPSBudWxsOwotICAgICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgICAgIFVERElNYWluTm9kZSB1ZGRpTWFpbk5vZGUgPSAoVURESU1haW5Ob2RlKShuYXZpZ2F0b3JNYW5hZ2VyLmdldFJvb3ROb2RlKCkpOwotICAgICAgVmVjdG9yIGNoaWxkTm9kZXMgPSB1ZGRpTWFpbk5vZGUuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgZm9yIChpbnQgaT0wO2k8Y2hpbGROb2Rlcy5zaXplKCk7aSsrKQotICAgICAgewotICAgICAgICBOb2RlIGNoaWxkTm9kZSA9IChOb2RlKWNoaWxkTm9kZXMuZWxlbWVudEF0KGkpOwotICAgICAgICBpZiAoY2hpbGROb2RlIGluc3RhbmNlb2YgUmVnaXN0cnlOb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWNoaWxkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICAgIFN0cmluZyBjdXJySW5xdWlyeVVSTCA9IHJlZ0VsZW1lbnQuZ2V0SW5xdWlyeVVSTCgpOwotICAgICAgICAgIGlmIChjdXJySW5xdWlyeVVSTCAhPSBudWxsICYmIGN1cnJJbnF1aXJ5VVJMLmVxdWFscyhpbnF1aXJ5VVJMKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocmVnaXN0cnlOb2RlcyA9PSBudWxsKQotICAgICAgICAgICAgICByZWdpc3RyeU5vZGVzID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgICAgcmVnaXN0cnlOb2Rlcy5hZGRFbGVtZW50KGNoaWxkTm9kZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9ICAgICAgICAKLSAgICAgIH0KLSAgICAgIHJldHVybiByZWdpc3RyeU5vZGVzOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgc3RhdGljIEFkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uIG5ld0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKLSAgICAgICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCkuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgRmF2b3JpdGVzRm9sZGVyRWxlbWVudCBmYXZvcml0ZXNGb2xkZXJFbGVtZW50ID0gbnVsbDsKLQotICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzRm9sZGVyRWxlbWVudCkgewotICAgICAgICAgICAgZmF2b3JpdGVzRm9sZGVyRWxlbWVudCA9IChGYXZvcml0ZXNGb2xkZXJFbGVtZW50KXNlbGVjdGVkRWxlbWVudDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBGYXZvcml0ZXNFbGVtZW50KSB7Ci0gICAgICAgICAgICBmYXZvcml0ZXNGb2xkZXJFbGVtZW50ID0gKChGYXZvcml0ZXNFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0UGFyZW50Rm9sZGVyRWxlbWVudCgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24gZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mCi0gICAgICAgIC8vIGZhdm9yaXRlcyBmb2xkZXIgZWxlbWVudCBiZWluZyBzZWxlY3RlZC4KLSAgICAgICAgaWYgKGZhdm9yaXRlc0ZvbGRlckVsZW1lbnQgaW5zdGFuY2VvZiBGYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRSZWdpc3RyeVRvVURESVBlcnNwZWN0aXZlQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgICAgICBlbHNlIGlmIChmYXZvcml0ZXNGb2xkZXJFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gbmV3IEFkZFVzZXJEZWZSZWdpc3RyeVRvVURESVBlcnNwZWN0aXZlQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgICAgICBlbHNlIGlmIChmYXZvcml0ZXNGb2xkZXJFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZUFjdGlvbihjb250cm9sbGVyKTsKLSAgICAgICAgZWxzZSBpZiAoZmF2b3JpdGVzRm9sZGVyRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc1VERElTZXJ2aWNlRm9sZGVyRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQWRkU2VydmljZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgICAgICBlbHNlIGlmIChmYXZvcml0ZXNGb2xkZXJFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VGb2xkZXJFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRTZXJ2aWNlSW50ZXJmYWNlVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24oY29udHJvbGxlcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvQWRkVXNlckRlZlJlZ2lzdHJ5VG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvQWRkVXNlckRlZlJlZ2lzdHJ5VG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgwOTUzOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0FkZFVzZXJEZWZSZWdpc3RyeVRvVURESVBlcnNwZWN0aXZlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215OwotCi1wdWJsaWMgY2xhc3MgQWRkVXNlckRlZlJlZ2lzdHJ5VG9VRERJUGVyc3BlY3RpdmVBY3Rpb24gZXh0ZW5kcyBBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbgotewotICBwdWJsaWMgQWRkVXNlckRlZlJlZ2lzdHJ5VG9VRERJUGVyc3BlY3RpdmVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpCi0gIHsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUobm9kZUlEKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlFbGVtZW50KXNlbGVjdGVkRWxlbWVudDsKLSAgICBTdHJpbmcgcmVnaXN0cnlOYW1lID0gcmVnRWxlbWVudC5nZXROYW1lKCk7Ci0gICAgU3RyaW5nIGlucXVpcnlBUEkgPSByZWdFbGVtZW50LmdldElucXVpcnlVUkwoKTsKLSAgICBTdHJpbmcgcHVibGlzaEFQSSA9IHJlZ0VsZW1lbnQuZ2V0UHVibGlzaFVSTCgpOwotICAgIFN0cmluZyBkZWZhdWx0TG9naW4gPSByZWdFbGVtZW50LmdldERlZmF1bHRMb2dpbigpOwotICAgIFN0cmluZyBkZWZhdWx0UGFzc3dvcmQgPSByZWdFbGVtZW50LmdldERlZmF1bHRQYXNzd29yZCgpOwotICAgIFRheG9ub215W10gdGF4b25vbWllcyA9IHJlZ0VsZW1lbnQuZ2V0VGF4b25vbWllcygpOwotICAgIGlmICghY3JlYXRlUmVnaXN0cnlJblVERElQZXJzcGVjdGl2ZShpbnF1aXJ5QVBJLCBwdWJsaXNoQVBJLCByZWdpc3RyeU5hbWUsIG51bGwsIGRlZmF1bHRMb2dpbiwgZGVmYXVsdFBhc3N3b3JkLCB0YXhvbm9taWVzLCBmYWxzZSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZShmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19BRERfVE9fVURESV9QRVJTUEVDVElWRV9TVUNDRVNTRlVMIiwgcmVnaXN0cnlOYW1lKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvQWRkV1NJTFRvV1NJTFBlcnNwZWN0aXZlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0FkZFdTSUxUb1dTSUxQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWI1OGM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvQWRkV1NJTFRvV1NJTFBlcnNwZWN0aXZlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc1dTSUxFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuT3BlbldTSUxBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxBY3Rpb25JbnB1dHM7Ci0KLXB1YmxpYyBjbGFzcyBBZGRXU0lMVG9XU0lMUGVyc3BlY3RpdmVBY3Rpb24gZXh0ZW5kcyBNdWx0aXBsZUxpbmtBY3Rpb24KLXsKLSAgcHVibGljIEFkZFdTSUxUb1dTSUxQZXJzcGVjdGl2ZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgaW50IHRvb2xJRCwgaW50IHZpZXdJRCwgaW50IHZpZXdUb29sSUQpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoImZhdm9yaXRlcy9hY3Rpb25zL0FkZFdTSUxUb1dTSUxQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChub2RlSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlRPT0xJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCh0b29sSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCh2aWV3SUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdUT09MSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodmlld1Rvb2xJRCk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEJhc2VBY3Rpb25MaW5rKCkKLSAgewotICAgIHJldHVybiAiZmF2b3JpdGVzL2FjdGlvbnMvQWRkV1NJTFRvV1NJTFBlcnNwZWN0aXZlQWN0aW9uSlNQLmpzcCI7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpCi0gIHsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGZhdlBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXROb2RlKG5vZGVJRCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgRmF2b3JpdGVzV1NJTEVsZW1lbnQgd3NpbEVsZW1lbnQgPSAoRmF2b3JpdGVzV1NJTEVsZW1lbnQpIHNlbGVjdGVkRWxlbWVudDsKLSAgICBTdHJpbmcgd3NpbFVSTCA9IHdzaWxFbGVtZW50LmdldFdzaWxVcmwoKTsKLSAgICBPcGVuV1NJTEFjdGlvbiBvcGVuV1NJTEFjdGlvbiA9IG5ldyBPcGVuV1NJTEFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgSGFzaHRhYmxlIHByb3BlcnR5VGFibGUgPSBvcGVuV1NJTEFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoV3NpbEFjdGlvbklucHV0cy5XU0lMX1VSTCwgd3NpbFVSTCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoV3NpbEFjdGlvbklucHV0cy5XU0lMX0lOU1BFQ1RJT05fVFlQRSwgU3RyaW5nLnZhbHVlT2YoV3NpbEFjdGlvbklucHV0cy5XU0lMX0RFVEFJTFMpKTsKLSAgICBib29sZWFuIGFjdGlvblJlc3VsdCA9IG9wZW5XU0lMQWN0aW9uLnJ1bigpOwotICAgIGlmIChhY3Rpb25SZXN1bHQpCi0gICAgICBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX0FERF9XU0lMX1RPX1dTSUxfUEVSU1BFQ1RJVkVfU1VDQ0VTU0ZVTCIsIHdzaWxVUkwpKTsKLSAgICBlbHNlCi0gICAgICBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9BRERfV1NJTF9UT19XU0lMX1BFUlNQRUNUSVZFIiwgd3NpbFVSTCkpOwotICAgIHJldHVybiBhY3Rpb25SZXN1bHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE1MjhkOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0FkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5PcGVuV1NETEFjdGlvbjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc0FkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uIGV4dGVuZHMgTXVsdGlwbGVMaW5rQWN0aW9uCi17Ci0gIHB1YmxpYyBGYXZvcml0ZXNBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgaW50IHRvb2xJRCwgaW50IHZpZXdJRCwgaW50IHZpZXdUb29sSUQpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoImZhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0FkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKG5vZGVJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVE9PTElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHRvb2xJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV0lEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV1RPT0xJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCh2aWV3VG9vbElEKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QmFzZUFjdGlvbkxpbmsoKQotICB7Ci0gICAgcmV0dXJuICJmYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3AiOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gZXhlY3V0ZVNpbmdsZUxpbmtBY3Rpb24oKQotICB7Ci0gICAgaW50IG5vZGVJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0Tm9kZShub2RlSUQpOwotICAgIEZhdm9yaXRlc1dTRExTZXJ2aWNlRWxlbWVudCB3c2RsRWxlbWVudCA9IChGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQpIHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIFN0cmluZyB3c2RsVXJsID0gd3NkbEVsZW1lbnQuZ2V0V3NkbFVybCgpOwotICAgIE9wZW5XU0RMQWN0aW9uIG9wZW5XU0RMQWN0aW9uID0gbmV3IE9wZW5XU0RMQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IG9wZW5XU0RMQWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV1NETF9VUkwsIHdzZGxVcmwpOwotICAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gb3BlbldTRExBY3Rpb24ucnVuKCk7Ci0gICAgaWYgKGFjdGlvblJlc3VsdCkKLSAgICAgIGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2UoZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fQUREX1dTRExfVE9fV1NETF9QRVJTUEVDVElWRV9TVUNDRVNTRlVMIiwgd3NkbFVybCkpOwotICAgIGVsc2UKLSAgICAgIGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2UoZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0FERF9XU0RMX1RPX1dTRExfUEVSU1BFQ1RJVkUiLCB3c2RsVXJsKSk7Ci0gICAgcmV0dXJuIGFjdGlvblJlc3VsdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2YzFlM2QuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9uczsKLQotaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5JbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuV1NETEZpbGVOYW1lSGVscGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnV0aWwuVWRkaTRqSGVscGVyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uIGV4dGVuZHMgSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uIHsKLQotICAgIHByaXZhdGUgRGVmaW5pdGlvbiBkZWZfOwotICAgIHByaXZhdGUgU3RyaW5nIHdzZGxGaWxlTmFtZV87Ci0KLSAgICBwdWJsaWMgRmF2b3JpdGVzSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgICAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSWQsaW50IHRvb2xJZCxpbnQgdmlld0lkLGludCB2aWV3VG9vbElkKQotICAgIHsKLSAgICAgIHJldHVybiBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQsdG9vbElkLHZpZXdJZCx2aWV3VG9vbElkLCJmYXZvcml0ZXMvYWN0aW9ucy9GYXZvcnRpZXNJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb25KU1AuanNwIik7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gd3JpdGUoT3V0cHV0U3RyZWFtIG9zKSB7Ci0gICAgICAgIGlmIChkZWZfICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiB3cml0ZVdTRExEZWZpbml0aW9uKG9zLCBkZWZfKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdEZpbGVOYW1lKCkgewotICAgICAgICByZXR1cm4gd3NkbEZpbGVOYW1lXzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBydW4oKSB7Ci0gICAgICAgIGludCBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLQotICAgICAgICAvLyByZXR1cm4gZmFsc2UgaWYgbm9kZUlEID09IDAsIHRoYXQgaXMgdGhlIG1haW4gbm9kZQotICAgICAgICBpZiAobm9kZUlEID09IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGZhdlBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0Tm9kZShub2RlSUQpOwotICAgICAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLQotICAgICAgICBTdHJpbmcgd3NkbFVSTCA9ICgoRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0V3NkbFVybCgpOwotICAgICAgICB3c2RsRmlsZU5hbWVfID0gV1NETEZpbGVOYW1lSGVscGVyLmdldFdTRExGaWxlTmFtZSh3c2RsVVJMKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICBkZWZfID0gKG5ldyBVZGRpNGpIZWxwZXIoKSkuZ2V0V1NETERlZmluaXRpb24od3NkbFVSTCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7Ci0gICAgICAgICAgICBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHQuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKQotICAgIHsKLSAgICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCkKLSAgICB7Ci0gICAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXRTdGF0dXNDb250ZW50UGFnZSgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNmNTFlNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0ltcG9ydFRvV29ya2JlbmNoQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5JbXBvcnRUb1dvcmtiZW5jaEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNJbXBvcnRUb1dvcmtiZW5jaEFjdGlvbiBleHRlbmRzIEltcG9ydFRvV29ya2JlbmNoQWN0aW9uIHsKLSAgICBwdWJsaWMgRmF2b3JpdGVzSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIH0KLQotICAgIHB1YmxpYyBGb3JtVG9vbCBnZXRTZWxlY3RlZEZvcm1Ub29sKCkgewotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZvcml0ZXNQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgICAgIHJldHVybiAoRm9ybVRvb2wpZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpOwotICAgIH0KLQotICAgIHB1YmxpYyBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24gbmV3SW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uKCkgewotICAgICAgICBGYXZvcml0ZXNJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24gYWN0aW9uID0gbmV3IEZhdm9yaXRlc0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgICAgIEhhc2h0YWJsZSB0YWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0KLSAgICAgICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2b3JpdGVzUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0KLSAgICAgICAgdGFibGUucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsIFN0cmluZy52YWx1ZU9mKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSkpOwotICAgICAgICB0YWJsZS5wdXQoQWN0aW9uSW5wdXRzLlZJRVdJRCwgU3RyaW5nLnZhbHVlT2Yoc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpKSk7Ci0KLSAgICAgICAgcmV0dXJuIGFjdGlvbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKQotICAgIHsKLSAgICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCkKLSAgICB7Ci0gICAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXRTdGF0dXNDb250ZW50UGFnZSgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNmZhN2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc0xhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24gZXh0ZW5kcyBMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uIHsKLQotICAgIHB1YmxpYyBGYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgICAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24gbmV3QWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgICAgICByZXR1cm4gbmV3IEZhdm9yaXRlc0xhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24oY29udHJvbGxlcik7Ci0gICAgfQotCi0gICAgcHVibGljIEZvcm1Ub29sIGdldFNlbGVjdGVkRm9ybVRvb2woKSB7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdm9yaXRlc1BlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgcmV0dXJuIChGb3JtVG9vbClmYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gcnVuKCkgewotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZvcml0ZXNQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gbGF1bmNoV2l6YXJkKCgoRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0V3NkbFVybCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKQotICAgIHsKLSAgICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTdGF0dXNDb250ZW50UGFnZSgpCi0gICAgewotICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFBhZ2UoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMDUzMjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNSZXN0b3JlRGVmYXVsdEZhdm9yaXRlc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkxpbmtBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNGb2xkZXJFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc01haW5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzUmVzdG9yZURlZmF1bHRGYXZvcml0ZXNBY3Rpb24gZXh0ZW5kcyBMaW5rQWN0aW9uCi17Ci0gIHB1YmxpYyBGYXZvcml0ZXNSZXN0b3JlRGVmYXVsdEZhdm9yaXRlc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgaW50IHRvb2xJRCwgaW50IHZpZXdJRCwgaW50IHZpZXdUb29sSUQpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoImZhdm9yaXRlcy9hY3Rpb25zL1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzQ29uZmlybUpTUC5qc3AiKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc0xpbmtQYXJhbWV0ZXJzKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KQotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIG1haW5Ob2RlID0gbm9kZU1hbmFnZXIuZ2V0Um9vdE5vZGUoKTsKLSAgICBGYXZvcml0ZXNNYWluRWxlbWVudCBtYWluRWxlbWVudCA9IChGYXZvcml0ZXNNYWluRWxlbWVudCltYWluTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gbWFpbkVsZW1lbnQucmVzdG9yZUZhdm9yaXRlc0RlZmF1bHQoKTsKLSAgICBpZiAoYWN0aW9uUmVzdWx0KQotICAgIHsKLSAgICAgIFZlY3RvciBmb2xkZXJOb2RlcyA9IG1haW5Ob2RlLmdldENoaWxkTm9kZXMoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9sZGVyTm9kZXMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIE5vZGUgZm9sZGVyTm9kZSA9IChOb2RlKWZvbGRlck5vZGVzLmVsZW1lbnRBdChpKTsKLSAgICAgICAgVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQgPSBmb2xkZXJOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICBGYXZvcml0ZXNGb2xkZXJFbGVtZW50IGZvbGRlckVsZW1lbnQgPSAoRmF2b3JpdGVzRm9sZGVyRWxlbWVudCl0cmVlRWxlbWVudDsKLSAgICAgICAgICBmb2xkZXJFbGVtZW50LnJlbW92ZUFsbEZhdm9yaXRlcyhjb250cm9sbGVyXy5nZXRTZXJ2bGV0RW5naW5lU3RhdGVMb2NhdGlvbigpKTsKLSAgICAgICAgICBmb2xkZXJFbGVtZW50LmluaXQobWFpbkVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX0ZBVk9SSVRFU19SRVNUT1JFRF9UT19ERUZBVUxUIikpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9PUEVOX0ZBVk9SSVRFU19CQUNLVVAiKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc1RvZ2dsZU5vZGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzVG9nZ2xlTm9kZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGU5OTIzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzVG9nZ2xlTm9kZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuVG9nZ2xlTm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLlRvb2xUeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNUb2dnbGVOb2RlQWN0aW9uIGV4dGVuZHMgVG9nZ2xlTm9kZUFjdGlvbiB7Ci0gICAgcHVibGljIEZhdm9yaXRlc1RvZ2dsZU5vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRyb2xsZXIsIGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSWQsIGJvb2xlYW4gb3BlbikgewotICAgICAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoImZhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc1RvZ2dsZU5vZGVBY3Rpb25KU1AuanNwPyIpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQobm9kZUlkKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk9QRU4pOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBpZiAob3BlbikKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5PUEVOX05PREUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuQ0xPU0VfTk9ERSk7Ci0gICAgICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpIHsKLSAgICAgICAgVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIgPSB0b2dnbGVkTm9kZV8uZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICAgICAgVG9vbCBzZWxlY3RlZFRvb2wgPSB0b29sTWFuYWdlci5nZXRTZWxlY3RlZFRvb2woKTsKLSAgICAgICAgaW50IG5vZGVJZCA9IHRvZ2dsZWROb2RlXy5nZXROb2RlSWQoKTsKLSAgICAgICAgaW50IHRvb2xJZCA9IHNlbGVjdGVkVG9vbC5nZXRUb29sSWQoKTsKLSAgICAgICAgaW50IHZpZXdJZCA9IHRvZ2dsZWROb2RlXy5nZXRWaWV3SWQoKTsKLSAgICAgICAgaW50IHZpZXdUb29sSWQgPSB0b2dnbGVkTm9kZV8uZ2V0Vmlld1Rvb2xJZCgpOwotICAgICAgICBpZiAoc2VsZWN0ZWRUb29sLmdldFRvb2xUeXBlKCkgIT0gVG9vbFR5cGVzLkFDVElPTikKLSAgICAgICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkLCB0b29sSWQsIHZpZXdJZCwgdmlld1Rvb2xJZCwgdHJ1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkLCB0cnVlKTsKLSAgICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFZhcigpCi0gIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXRUcmVlQ29udGVudFZhcigpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0VHJlZUNvbnRlbnRQYWdlKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJWYXIoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0UHJvcGVydGllc0NvbnRhaW5lclZhcigpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpCi0gIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgaW50IGdldFBlcnNwZWN0aXZlSWQoKQotICB7Ci0gICAgcmV0dXJuIEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9GQVZPUklURVM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvTXVsdGlwbGVMaW5rQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL011bHRpcGxlTGlua0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODBkZWZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvTXVsdGlwbGVMaW5rQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuTGlua0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLk1hc3NOb2RlSWRUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy5GYXZvcml0ZXNBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBNdWx0aXBsZUxpbmtBY3Rpb24gZXh0ZW5kcyBMaW5rQWN0aW9uCi17Ci0gIHB1YmxpYyBNdWx0aXBsZUxpbmtBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzTGlua1BhcmFtZXRlcnMoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICBTdHJpbmcgaXNNdWx0aXBsZUxpbmtBY3Rpb24gPSByZXF1ZXN0LmdldFBhcmFtZXRlcihGYXZvcml0ZXNBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04pOwotICAgIGlmIChpc011bHRpcGxlTGlua0FjdGlvbiAhPSBudWxsKQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChGYXZvcml0ZXNBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04sIGlzTXVsdGlwbGVMaW5rQWN0aW9uKTsKLSAgICAgIHJldHVybiBwcm9jZXNzTXVsdGlwbGVMaW5rQWN0aW9uUGFyYW1ldGVycyhyZXF1ZXN0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnJlbW92ZShGYXZvcml0ZXNBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04pOwotICAgICAgU3RyaW5nIG5vZGVJRFN0cmluZyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgICAgU3RyaW5nIHRvb2xJRFN0cmluZyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5UT09MSUQpOwotICAgICAgU3RyaW5nIHZpZXdJRFN0cmluZyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgICAgU3RyaW5nIHZpZXdUb29sSURTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuVklFV1RPT0xJRCk7Ci0gICAgICBpZiAobm9kZUlEU3RyaW5nICE9IG51bGwpCi0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuTk9ERUlELCBub2RlSURTdHJpbmcpOwotICAgICAgaWYgKHRvb2xJRFN0cmluZyAhPSBudWxsKQotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLlRPT0xJRCwgdG9vbElEU3RyaW5nKTsKLSAgICAgIGlmICh2aWV3SURTdHJpbmcgIT0gbnVsbCkKLSAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5WSUVXSUQsIHZpZXdJRFN0cmluZyk7Ci0gICAgICBpZiAodmlld1Rvb2xJRFN0cmluZyAhPSBudWxsKQotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLlZJRVdUT09MSUQsIHZpZXdUb29sSURTdHJpbmcpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc011bHRpcGxlTGlua0FjdGlvblBhcmFtZXRlcnMoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICBTdHJpbmdbXSBtYXNzQWN0aW9uTm9kZUlEcyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyVmFsdWVzKEZhdm9yaXRlc0FjdGlvbklucHV0cy5NQVNTX0FDVElPTl9OT0RFX0lEKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoRmF2b3JpdGVzQWN0aW9uSW5wdXRzLk1BU1NfQUNUSU9OX05PREVfSUQsIG1hc3NBY3Rpb25Ob2RlSURzKTsKLSAgICBpZiAobWFzc0FjdGlvbk5vZGVJRHMubGVuZ3RoID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgSVRyYW5zZm9ybWVyW10gZ2V0VHJhbnNmb3JtZXJzKCkKLSAgewotICAgIHJldHVybiBuZXcgSVRyYW5zZm9ybWVyW10ge25ldyBNYXNzTm9kZUlkVHJhbnNmb3JtZXIoY29udHJvbGxlcl8sIEZhdm9yaXRlc0FjdGlvbklucHV0cy5NQVNTX0FDVElPTl9OT0RFX0lEKX07Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBpc011bHRpcGxlTGlua0FjdGlvbigpCi0gIHsKLSAgICByZXR1cm4gcHJvcGVydHlUYWJsZV8uY29udGFpbnNLZXkoRmF2b3JpdGVzQWN0aW9uSW5wdXRzLk1VTFRJUExFX0xJTktfQUNUSU9OKTsKLSAgfQotCi0gIHByb3RlY3RlZCBTdHJpbmdbXSBnZXRNYXNzQWN0aW9uTm9kZUlkcygpCi0gIHsKLSAgICBPYmplY3Qgb2JqZWN0ID0gcHJvcGVydHlUYWJsZV8uZ2V0KEZhdm9yaXRlc0FjdGlvbklucHV0cy5NQVNTX0FDVElPTl9OT0RFX0lEKTsKLSAgICBpZiAob2JqZWN0ID09IG51bGwpCi0gICAgICByZXR1cm4gbmV3IFN0cmluZ1swXTsKLSAgICBlbHNlIGlmIChvYmplY3QuZ2V0Q2xhc3MoKS5pc0FycmF5KCkpCi0gICAgICByZXR1cm4gKFN0cmluZ1tdKW9iamVjdDsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbmV3IFN0cmluZ1tdIHsoU3RyaW5nKW9iamVjdH07Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgcmV0dXJuIChpc011bHRpcGxlTGlua0FjdGlvbigpKSA/IGV4ZWN1dGVNdWx0aXBsZUxpbmtBY3Rpb24oKSA6IGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBleGVjdXRlTXVsdGlwbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0gICAgU3RyaW5nW10gbWFzc0FjdGlvbk5vZGVJRHMgPSBnZXRNYXNzQWN0aW9uTm9kZUlkcygpOwotICAgIGlmIChtYXNzQWN0aW9uTm9kZUlEcyAhPSBudWxsKQotICAgIHsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWFzc0FjdGlvbk5vZGVJRHMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuTk9ERUlELCBtYXNzQWN0aW9uTm9kZUlEc1tpXSk7Ci0gICAgICAgIGlmIChleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpKQotICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5yZW1vdmUoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYWJzdHJhY3QgYm9vbGVhbiBleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9SZW1vdmVGYXZvcml0ZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4YTMxODEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9SZW1vdmVGYXZvcml0ZXNBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuRmF2b3JpdGVzTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNGb2xkZXJFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc01haW5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgUmVtb3ZlRmF2b3JpdGVzQWN0aW9uIGV4dGVuZHMgTXVsdGlwbGVMaW5rQWN0aW9uCi17Ci0gIHB1YmxpYyBSZW1vdmVGYXZvcml0ZXNBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSUQsIGludCB0b29sSUQsIGludCB2aWV3SUQsIGludCB2aWV3VG9vbElEKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJmYXZvcml0ZXMvYWN0aW9ucy9SZW1vdmVGYXZvcml0ZXNBY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQobm9kZUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5UT09MSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodG9vbElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodmlld0lEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXVE9PTElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdUb29sSUQpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRCYXNlQWN0aW9uTGluaygpCi0gIHsKLSAgICByZXR1cm4gImZhdm9yaXRlcy9hY3Rpb25zL1JlbW92ZUZhdm9yaXRlc0FjdGlvbkpTUC5qc3AiOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gZXhlY3V0ZVNpbmdsZUxpbmtBY3Rpb24oKQotICB7Ci0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBTdHJpbmcgbm9kZUlEU3RyaW5nID0gKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIGludCBub2RlSUQ7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludChub2RlSURTdHJpbmcpOwotICAgIH0KLSAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkKLSAgICB7Ci0gICAgICBub2RlSUQgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGVJZCgpOwotICAgIH0KLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUobm9kZUlEKTsKLSAgICBpZiAoc2VsZWN0ZWROb2RlID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5ID0gY29udHJvbGxlcl8uZ2V0U2VydmxldEVuZ2luZVN0YXRlTG9jYXRpb24oKTsKLSAgICBib29sZWFuIGFjdGlvblJlc3VsdDsKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzRWxlbWVudCkKLSAgICAgIGFjdGlvblJlc3VsdCA9ICgoRmF2b3JpdGVzRWxlbWVudCkgc2VsZWN0ZWRFbGVtZW50KS5nZXRQYXJlbnRGb2xkZXJFbGVtZW50KCkucmVtb3ZlRmF2b3JpdGVCeU5vZGVJRChub2RlSUQsIHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5KTsKLSAgICBlbHNlIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBGYXZvcml0ZXNGb2xkZXJFbGVtZW50KQotICAgICAgYWN0aW9uUmVzdWx0ID0gKChGYXZvcml0ZXNGb2xkZXJFbGVtZW50KSBzZWxlY3RlZEVsZW1lbnQpLnJlbW92ZUFsbEZhdm9yaXRlcyhwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzTWFpbkVsZW1lbnQpCi0gICAgewotICAgICAgRW51bWVyYXRpb24gZTsKLSAgICAgIEZhdm9yaXRlc01haW5FbGVtZW50IG1haW5FbGVtZW50ID0gKEZhdm9yaXRlc01haW5FbGVtZW50KSBzZWxlY3RlZEVsZW1lbnQ7Ci0gICAgICBlID0gbWFpbkVsZW1lbnQuZ2V0RWxlbWVudHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1dTSUxfRk9MREVSX05PREUpOwotICAgICAgYWN0aW9uUmVzdWx0ID0gKChGYXZvcml0ZXNGb2xkZXJFbGVtZW50KSBlLm5leHRFbGVtZW50KCkpLnJlbW92ZUFsbEZhdm9yaXRlcyhwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSk7Ci0gICAgICBlID0gbWFpbkVsZW1lbnQuZ2V0RWxlbWVudHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1dTRExfU0VSVklDRV9GT0xERVJfTk9ERSk7Ci0gICAgICBhY3Rpb25SZXN1bHQgPSBhY3Rpb25SZXN1bHQgJiYgKChGYXZvcml0ZXNGb2xkZXJFbGVtZW50KSBlLm5leHRFbGVtZW50KCkpLnJlbW92ZUFsbEZhdm9yaXRlcyhwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSk7Ci0gICAgICBlID0gbWFpbkVsZW1lbnQuZ2V0RWxlbWVudHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9GT0xERVJfTk9ERSk7Ci0gICAgICBhY3Rpb25SZXN1bHQgPSBhY3Rpb25SZXN1bHQgJiYgKChGYXZvcml0ZXNGb2xkZXJFbGVtZW50KSBlLm5leHRFbGVtZW50KCkpLnJlbW92ZUFsbEZhdm9yaXRlcyhwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSk7Ci0gICAgICBlID0gbWFpbkVsZW1lbnQuZ2V0RWxlbWVudHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfQlVTSU5FU1NfRk9MREVSX05PREUpOwotICAgICAgYWN0aW9uUmVzdWx0ID0gYWN0aW9uUmVzdWx0ICYmICgoRmF2b3JpdGVzRm9sZGVyRWxlbWVudCkgZS5uZXh0RWxlbWVudCgpKS5yZW1vdmVBbGxGYXZvcml0ZXMocGx1Z2luTWV0YWRhdGFEaXJlY3RvcnkpOwotICAgICAgZSA9IG1haW5FbGVtZW50LmdldEVsZW1lbnRzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0ZPTERFUl9OT0RFKTsKLSAgICAgIGFjdGlvblJlc3VsdCA9IGFjdGlvblJlc3VsdCAmJiAoKEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQpIGUubmV4dEVsZW1lbnQoKSkucmVtb3ZlQWxsRmF2b3JpdGVzKHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5KTsKLSAgICAgIGUgPSBtYWluRWxlbWVudC5nZXRFbGVtZW50cyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9SRUdJU1RSWV9GT0xERVJfTk9ERSk7Ci0gICAgICBhY3Rpb25SZXN1bHQgPSBhY3Rpb25SZXN1bHQgJiYgKChGYXZvcml0ZXNGb2xkZXJFbGVtZW50KSBlLm5leHRFbGVtZW50KCkpLnJlbW92ZUFsbEZhdm9yaXRlcyhwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGFjdGlvblJlc3VsdCA9IGZhbHNlOwotICAgIGlmIChhY3Rpb25SZXN1bHQpCi0gICAgICBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19JTkZPX05PREVfQ0xFQVJFRCIsIHNlbGVjdGVkTm9kZS5nZXROb2RlTmFtZSgpKSk7Ci0gICAgcmV0dXJuIGFjdGlvblJlc3VsdDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuICJmYXZOYXZpZ2F0b3JDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAiZmF2b3JpdGVzL2Zhdl9uYXZpZ2F0b3JfY29udGVudC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkKLSAgewotICAgIHJldHVybiAiZmF2UHJvcGVydGllc0NvbnRhaW5lciI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkKLSAgewotICAgIHJldHVybiAiZmF2b3JpdGVzL2Zhdl9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTdGF0dXNDb250ZW50VmFyKCkKLSAgewotICAgIHJldHVybiAiZmF2U3RhdHVzQ29udGVudCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAiZmF2b3JpdGVzL2Zhdl9zdGF0dXNfY29udGVudC5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL1Jlc2l6ZUZhdm9yaXRlc0ZyYW1lc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9SZXNpemVGYXZvcml0ZXNGcmFtZXNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM0YmUzMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL1Jlc2l6ZUZhdm9yaXRlc0ZyYW1lc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlJlc2l6ZUZyYW1lc0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy5GYXZvcml0ZXNBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuRmF2b3JpdGVzRnJhbWVOYW1lczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotCi1wdWJsaWMgY2xhc3MgUmVzaXplRmF2b3JpdGVzRnJhbWVzQWN0aW9uIGV4dGVuZHMgUmVzaXplRnJhbWVzQWN0aW9uCi17Ci0gIHB1YmxpYyBSZXNpemVGYXZvcml0ZXNGcmFtZXNBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NPdGhlcnMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKEZhdm9yaXRlc0FjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gcGFyc2VyLmdldFBhcmFtZXRlcihGYXZvcml0ZXNBY3Rpb25JbnB1dHMuRlJBTUVTRVRfUk9XU19BQ1RJT05TX0NPTlRBSU5FUik7Ci0gICAgaWYgKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyAhPSBudWxsICYmIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoRmF2b3JpdGVzQWN0aW9uSW5wdXRzLkZSQU1FU0VUX0NPTFNfUEVSU1BFQ1RJVkVfQ09OVEVOVCxwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEZhdm9yaXRlc0FjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSLGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIC8vIFNhdmUgdGhlIGN1cnJlbnQgZnJhbWVzZXQgc2l6ZXMuCi0gICAgU3RyaW5nIGZyYW1lTmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5GUkFNRV9OQU1FKTsKLSAgICBTdHJpbmcgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoRmF2b3JpdGVzQWN0aW9uSW5wdXRzLkZSQU1FU0VUX0NPTFNfUEVSU1BFQ1RJVkVfQ09OVEVOVCk7Ci0gICAgU3RyaW5nIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChGYXZvcml0ZXNBY3Rpb25JbnB1dHMuRlJBTUVTRVRfUk9XU19BQ1RJT05TX0NPTlRBSU5FUik7Ci0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgIAotICAgIC8vIFNldCB0aGUgbmV3IGZyYW1lc2V0IHNpemVzLgotICAgIGlmIChmcmFtZU5hbWUuZXF1YWxzKEZhdm9yaXRlc0ZyYW1lTmFtZXMuTkFWSUdBVE9SX0NPTlRBSU5FUikpCi0gICAgewotICAgICAgZmF2UGVyc3BlY3RpdmUuc2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgIGZhdlBlcnNwZWN0aXZlLnNldFNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgIGlmIChwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMuc3RhcnRzV2l0aCgiMTAwJSIpKQotICAgICAgewotICAgICAgICAvLyBSZXN0b3JlLgotICAgICAgICBmYXZQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoZmF2UGVyc3BlY3RpdmUuZ2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIE1heGltaXplLgotICAgICAgICBmYXZQZXJzcGVjdGl2ZS5zZXRTYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyhwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMpOwotICAgICAgICBmYXZQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoIjEwMCUsMCUiKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoZnJhbWVOYW1lLmVxdWFscyhGYXZvcml0ZXNGcmFtZU5hbWVzLlBST1BFUlRJRVNfQ09OVEFJTkVSKSkKLSAgICB7Ci0gICAgICBpZiAoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cy5zdGFydHNXaXRoKCIxMDAlIikpCi0gICAgICB7Ci0gICAgICAgIGlmIChwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMuZW5kc1dpdGgoIjEwMCUiKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIFJlc3RvcmUuCi0gICAgICAgICAgZmF2UGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKGZhdlBlcnNwZWN0aXZlLmdldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkpOwotICAgICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoZmF2UGVyc3BlY3RpdmUuZ2V0U2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIE1heGltaXplLgotICAgICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgZmF2UGVyc3BlY3RpdmUuc2V0U2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygiMCUsMTAwJSIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIE1heGltaXplLgotICAgICAgICBmYXZQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoIjEwMCUsMCUiKTsKLSAgICAgICAgaWYgKCFwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMuZW5kc1dpdGgoIjEwMCUiKSkKLSAgICAgICAgewotICAgICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgZmF2UGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoZnJhbWVOYW1lLmVxdWFscyhGYXZvcml0ZXNGcmFtZU5hbWVzLlNUQVRVU19DT05UQUlORVIpKQotICAgIHsKLSAgICAgIGlmIChhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICB7Ci0gICAgICAgIGlmIChwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMuZW5kc1dpdGgoIjEwMCUiKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIFJlc3RvcmUuCi0gICAgICAgICAgZmF2UGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKGZhdlBlcnNwZWN0aXZlLmdldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkpOwotICAgICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoZmF2UGVyc3BlY3RpdmUuZ2V0U2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIE1heGltaXplLgotICAgICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgZmF2UGVyc3BlY3RpdmUuc2V0U2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygiMCUsMTAwJSIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIE1heGltaXplLgotICAgICAgICBmYXZQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoIjAlLDEwMCUiKTsKLSAgICAgICAgaWYgKCFwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMuZW5kc1dpdGgoIjEwMCUiKSkKLSAgICAgICAgewotICAgICAgICAgIGZhdlBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgZmF2UGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvU2VsZWN0RmF2b3JpdGVzTm9kZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9TZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyOTc0NzUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9TZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuU2VsZWN0Tm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLlRvb2xUeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLQotcHVibGljIGNsYXNzIFNlbGVjdEZhdm9yaXRlc05vZGVBY3Rpb24gZXh0ZW5kcyBTZWxlY3ROb2RlQWN0aW9uCi17Ci0gICAgcHVibGljIFNlbGVjdEZhdm9yaXRlc05vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICAgIHsKLSAgICAgICAgc3VwZXIoY29udHJvbGxlciwgY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCkpOwotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgYm9vbGVhbiBrZWVwSGlzdG9yeSkKLSAgICB7Ci0gICAgICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigiZmF2b3JpdGVzL2FjdGlvbnMvU2VsZWN0RmF2b3JpdGVzTm9kZUFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChub2RlSUQpOwotICAgICAgICBpZiAoa2VlcEhpc3RvcnkpIHsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuSVNISVNUT1JZKTsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCI9MSIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpCi0gICAgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IGdldFNlbGVjdGVkTm9kZSgpOwotICAgICAgICBUb29sIHNlbGVjdGVkVG9vbCA9IHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpOwotICAgICAgICBpZiAoc2VsZWN0ZWRUb29sID09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgZWxzZSBpZiAoc2VsZWN0ZWRUb29sLmdldFRvb2xUeXBlKCkgIT0gVG9vbFR5cGVzLkFDVElPTikKLSAgICAgICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZFRvb2wuZ2V0VG9vbElkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgdHJ1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBnZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdHJ1ZSk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFZhcigpIHsKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0VHJlZUNvbnRlbnRWYXIoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRyZWVDb250ZW50UGFnZSgpIHsKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0VHJlZUNvbnRlbnRQYWdlKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkgewotICAgICAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpIHsKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKTsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGZpbmFsIGludCBnZXRQZXJzcGVjdGl2ZUlkKCkKLSAgICB7Ci0gICAgICByZXR1cm4gQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX0ZBVk9SSVRFUzsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTY3MjdjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlNlbGVjdE5vZGVUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuVG9vbFR5cGVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotCi1wdWJsaWMgY2xhc3MgU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbiBleHRlbmRzIFNlbGVjdE5vZGVUb29sQWN0aW9uCi17Ci0gICAgcHVibGljIFNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICAgIHsKLSAgICAgICAgc3VwZXIoY29udHJvbGxlciwgY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCkpOwotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgaW50IHRvb2xJRCwgaW50IHZpZXdJRCwgaW50IHZpZXdUb29sSUQsIGJvb2xlYW4ga2VlcEhpc3RvcnkpCi0gICAgewotICAgICAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoImZhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb25KU1AuanNwPyIpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQobm9kZUlEKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlRPT0xJRCk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKHRvb2xJRCk7Ci0gICAgICAgIGlmICh2aWV3SUQgIT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKSB7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdJRCk7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQodmlld0lEKTsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV1RPT0xJRCk7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQodmlld1Rvb2xJRCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGtlZXBIaXN0b3J5KSB7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLklTSElTVE9SWSk7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgiPTEiKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0QWN0aW9uTGlua0Zvckhpc3RvcnkoKQotICAgIHsKLSAgICAgICAgaWYgKGdldFNlbGVjdGVkVG9vbCgpLmdldFRvb2xUeXBlKCkgIT0gVG9vbFR5cGVzLkFDVElPTikgewotICAgICAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBnZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgZ2V0U2VsZWN0ZWRUb29sKCkuZ2V0VG9vbElkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFZhcigpIHsKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0VHJlZUNvbnRlbnRWYXIoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRyZWVDb250ZW50UGFnZSgpIHsKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0VHJlZUNvbnRlbnRQYWdlKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkgewotICAgICAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpIHsKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250ZW50VmFyKCkgewotICAgICAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXRQcm9wZXJ0aWVzQ29udGVudFZhcigpOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRlbnRQYWdlKCkgewotICAgICAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXRQcm9wZXJ0aWVzQ29udGVudFBhZ2UoKTsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGZpbmFsIGludCBnZXRQZXJzcGVjdGl2ZUlkKCkKLSAgICB7Ci0gICAgICByZXR1cm4gQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX0ZBVk9SSVRFUzsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlOb2RlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlOb2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0NjQ1OTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9TZWxlY3RGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci0KLXB1YmxpYyBjbGFzcyBTZWxlY3RGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZUFjdGlvbiBleHRlbmRzIFNlbGVjdEZhdm9yaXRlc05vZGVBY3Rpb24KLXsKLSAgICBwdWJsaWMgU2VsZWN0RmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeU5vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICAgIHsKLSAgICAgICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgcGVyZm9ybUV4dGVuZGVkQWN0aW9uKCkKLSAgICB7Ci0gICAgCVRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAJKChGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpLnJlZnJlc2goKTsKLSAgICB9Ci0gICAgCi0gICAgCi0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlELCBib29sZWFuIGtlZXBIaXN0b3J5KQotICAgIHsKLSAgICAgICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJmYXZvcml0ZXMvYWN0aW9ucy9TZWxlY3RGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZUFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChub2RlSUQpOwotICAgICAgICBpZiAoa2VlcEhpc3RvcnkpIHsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuSVNISVNUT1JZKTsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCI9MSIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21GYXZvcml0ZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2FjdGlvbnMvU3dpdGNoUGVyc3BlY3RpdmVGcm9tRmF2b3JpdGVzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZDkwOGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21GYXZvcml0ZXNBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlNob3dQZXJzcGVjdGl2ZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy5GYXZvcml0ZXNBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLQotcHVibGljIGZpbmFsIGNsYXNzIFN3aXRjaFBlcnNwZWN0aXZlRnJvbUZhdm9yaXRlc0FjdGlvbiBleHRlbmRzIFNob3dQZXJzcGVjdGl2ZUFjdGlvbgotewotICBwdWJsaWMgU3dpdGNoUGVyc3BlY3RpdmVGcm9tRmF2b3JpdGVzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoRmF2b3JpdGVzQWN0aW9uSW5wdXRzLkZSQU1FU0VUX0NPTFNfUEVSU1BFQ1RJVkVfQ09OVEVOVCk7Ci0gICAgU3RyaW5nIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKEZhdm9yaXRlc0FjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSKTsKLSAgICBpZiAocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzICE9IG51bGwgJiYgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyAhPSBudWxsKQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChGYXZvcml0ZXNBY3Rpb25JbnB1dHMuRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5ULHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoRmF2b3JpdGVzQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIsYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgU3RyaW5nIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEZhdm9yaXRlc0FjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoRmF2b3JpdGVzQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIpOwotICAgIAotICAgIC8vIFNhdmUgdGhlIGZyYW1lc2V0IHNpemVzIGlmZiBubyBmcmFtZSBpcyBtYXhpbWl6ZWQuCi0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgIGlmICghcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLnN0YXJ0c1dpdGgoIjEwMCUiKSAmJiAhcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICBmYXZQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKTsKLSAgICAgIAotICAgIGlmICghYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cy5zdGFydHNXaXRoKCIxMDAlIikgJiYgIWFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MuZW5kc1dpdGgoIjEwMCUiKSkKLSAgICAgIGZhdlBlcnNwZWN0aXZlLnNldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAKLSAgICByZXR1cm4gc3VwZXIucnVuKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldEZvcm1BY3Rpb25MaW5rKGludCB0YXJnZXRQZXJzcGVjdGl2ZUlkLGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBmb3JtTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzZGwvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21XU0RMQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBmb3JtTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFKS5hcHBlbmQoJz0nKS5hcHBlbmQodGFyZ2V0UGVyc3BlY3RpdmVJZCk7Ci0gICAgaWYgKGZvckhpc3RvcnkpCi0gICAgICBmb3JtTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLklTSElTVE9SWSkuYXBwZW5kKCI9MSIpOyAgICAKLSAgICByZXR1cm4gZm9ybUxpbmsudG9TdHJpbmcoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvY29uc3RhbnRzL0Zhdm9yaXRlc0FjdGlvbklucHV0cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvY29uc3RhbnRzL0Zhdm9yaXRlc0FjdGlvbklucHV0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzRkMzdiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2NvbnN0YW50cy9GYXZvcml0ZXNBY3Rpb25JbnB1dHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzQWN0aW9uSW5wdXRzCi17Ci0gICAgLy8gbWFzcyBhY3Rpb25zCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTVVMVElQTEVfTElOS19BQ1RJT04gPSAibXVsdGlwbGVMaW5rQWN0aW9uIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBNQVNTX0FDVElPTl9OT0RFX0lEID0gIm1hc3NBY3Rpb25Ob2RlSUQiOwotCi0gICAgLy8gcmVzaXplIGZhdm9yaXRlcyBmcmFtZXMgYWN0aW9uCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5UID0gImZyYW1lc2V0Q29sc1BlcnNwZWN0aXZlQ29udGVudCI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgRlJBTUVTRVRfUk9XU19BQ1RJT05TX0NPTlRBSU5FUiA9ICJmcmFtZXNldFJvd3NBY3Rpb25zQ29udGFpbmVyIjsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2NvbnN0YW50cy9GYXZvcml0ZXNGcmFtZU5hbWVzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9jb25zdGFudHMvRmF2b3JpdGVzRnJhbWVOYW1lcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjZjMjY5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2NvbnN0YW50cy9GYXZvcml0ZXNGcmFtZU5hbWVzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc0ZyYW1lTmFtZXMKLXsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTkFWSUdBVE9SX0NPTlRBSU5FUiA9ICJmYXZfbmF2aWdhdG9yX2NvbnRhaW5lciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5BVklHQVRPUl9UT09MQkFSID0gImZhdl9uYXZpZ2F0b3JfdG9vbGJhciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5BVklHQVRPUl9DT05URU5UID0gImZhdl9uYXZpZ2F0b3JfY29udGVudCI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIEFDVElPTlNfQ09OVEFJTkVSID0gImZhdl9hY3Rpb25zX2NvbnRhaW5lciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBST1BFUlRJRVNfQ09OVEFJTkVSID0gImZhdl9wcm9wZXJ0aWVzX2NvbnRhaW5lciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBST1BFUlRJRVNfVE9PTEJBUiA9ICJmYXZfcHJvcGVydGllc190b29sYmFyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUEVSVElFU19DT05URU5UID0gImZhdl9wcm9wZXJ0aWVzX2NvbnRlbnQiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBTVEFUVVNfQ09OVEFJTkVSID0gImZhdl9zdGF0dXNfY29udGFpbmVyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgU1RBVFVTX1RPT0xCQVIgPSAiZmF2X3N0YXR1c190b29sYmFyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgU1RBVFVTX0NPTlRFTlQgPSAiZmF2X3N0YXR1c19jb250ZW50IjsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2NvbnN0YW50cy9GYXZvcml0ZXNNb2RlbENvbnN0YW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvY29uc3RhbnRzL0Zhdm9yaXRlc01vZGVsQ29uc3RhbnRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZjBjMjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvY29uc3RhbnRzL0Zhdm9yaXRlc01vZGVsQ29uc3RhbnRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzIHsKLSAgICAvLyBSZWxhdGlvbnMKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBSRUxfV1NJTF9GT0xERVJfTk9ERSA9ICJyZWxXU0lMRm9sZGVyTm9kZSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVMX1dTRExfU0VSVklDRV9GT0xERVJfTk9ERSA9ICJyZWxXU0RMU2VydmljZUZvbGRlck5vZGUiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFJFTF9VRERJX1NFUlZJQ0VfRk9MREVSX05PREUgPSAicmVsVURESVNlcnZpY2VGb2xkZXJOb2RlIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBSRUxfVURESV9CVVNJTkVTU19GT0xERVJfTk9ERSA9ICJyZWxVRERJQnVzaW5lc3NGb2xkZXJOb2RlIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBSRUxfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9GT0xERVJfTk9ERSA9ICJyZWxVRERJU2VydmljZUludGVyZmFjZUZvbGRlck5vZGUiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFJFTF9VRERJX1JFR0lTVFJZX0ZPTERFUl9OT0RFID0gInJlbFVERElSZWdpc3RyeUZvbGVyTm9kZSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVMX1VTRVJfREVGX1VERElfUkVHSVNUUllfRk9MREVSX05PREUgPSAicmVsVXNlckRlZlVERElSZWdpc3RyeUZvbGRlck5vZGUiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFJFTF9XU0lMX05PREUgPSAicmVsV1NJTE5vZGUiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFJFTF9XU0RMX1NFUlZJQ0VfTk9ERSA9ICJyZWxXU0RMU2VydmljZU5vZGUiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFJFTF9VRERJX1NFUlZJQ0VfTk9ERSA9ICJyZWxVRERJU2VydmljZU5vZGUiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFJFTF9VRERJX0JVU0lORVNTX05PREUgPSAicmVsVURESUJ1c2luZXNzTm9kZSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVMX1VERElfU0VSVklDRV9JTlRFUkZBQ0VfTk9ERSA9ICJyZWxVRERJU2VydmljZUludGVyZmFjZU5vZGUiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFJFTF9VRERJX1JFR0lTVFJZX05PREUgPSAicmVsVURESVJlZ2lzdHJ5Tm9kZSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVMX1VTRVJfREVGX1VERElfUkVHSVNUUllfTk9ERSA9ICJyZWxVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZSI7Ci0KLSAgICAvLyBQcm9wZXJ0aWVzCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUF9QTFVHSU5fTUVUQURBVEFfRElSRUNUT1JZID0gInBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5IjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QX1dTSUxfVVJMID0gIndzaWxVUkwiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBST1BfV1NETF9VUkwgPSAid3NkbFVSTCI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUF9VRERJX1NFUlZJQ0VfTkFNRSA9ICJVRERJU2VydmljZU5hbWUiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBST1BfVURESV9TRVJWSUNFX0lOUVVJUllfQVBJID0gIlVERElTZXJ2aWNlSW5xdWlyeUFQSSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUF9VRERJX1NFUlZJQ0VfS0VZID0gIlVERElTZXJ2aWNlS2V5IjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QX1VERElfQlVTSU5FU1NfTkFNRSA9ICJVRERJQnVzaW5lc3NOYW1lIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QX1VERElfQlVTSU5FU1NfSU5RVUlSWV9BUEkgPSAiVURESUJ1c2luZXNzSW5xdWlyeUFQSSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUF9VRERJX0JVU0lORVNTX0tFWSA9ICJVRERJQnVzaW5lc3NLZXkiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBST1BfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FID0gIlVERElTZXJ2aWNlSW50ZXJmYWNlTmFtZSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0lOUVVJUllfQVBJID0gIlVERElTZXJ2aWNlSW50ZXJmYWNlSW5xdWlyeUFQSSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0tFWSA9ICJVRERJU2VydmljZUludGVyZmFjZUtleSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUF9VRERJX1JFR0lTVFJZX05BTUUgPSAiVURESVJlZ2lzdHJ5TmFtZSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUF9VRERJX1JFR0lTVFJZX0lOUVVJUllfQVBJID0gIlVERElSZWdpc3RyeUlucXVpcnlBUEkiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBST1BfVURESV9SRUdJU1RSWV9QVUJMSVNIX0FQSSA9ICJVRERJUmVnaXN0cnlQdWJsaXNoQVBJIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QX1VERElfUkVHSVNUUllfUkVHSVNUUkFUSU9OX1VSTCA9ICJVRERJUmVnaXN0cnlSZWdpc3RyYXRpb25VUkwiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBST1BfVURESV9SRUdJU1RSWV9DQVRFR09SSUVTX0VOVU0gPSAiVURESVJlZ2lzdHJ5Q2F0ZWdvcmllc0VudW0iOwotCi0gICAgLy8gTGlzdCBNYW5hZ2VycyBmb3IgRmF2b3JpdGVzCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTElTVF9NQU5BR0VSX1dTRExfU0VSVklDRVMgPSAid3NkbFNlcnZpY2VzIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBMSVNUX01BTkFHRVJfVURESV9TRVJWSUNFUyA9ICJ1ZGRpU2VydmljZXMiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIExJU1RfTUFOQUdFUl9VRERJX0JVU0lORVNTID0gInVkZGlCdXNpbmVzcyI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTElTVF9NQU5BR0VSX1dTSUxfTElOS1MgPSAid3NpbExpbmtzIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBMSVNUX01BTkFHRVJfVURESV9SRUdJU1RSWSA9ICJ1ZGRpUmVnaXN0cnkiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIExJU1RfTUFOQUdFUl9VRERJX1NFUlZJQ0VfSU5URVJGQUNFID0gInVkZGlTZXJ2aWNlSW50ZXJmYWNlIjsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjY3N2QyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLQotLyoqCi0qIFRoZSBkYXRhIG1vZGVsIGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIAotKiBhIFdTSUwgZG9jdW1lbnQKLSovCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzRWxlbWVudCBleHRlbmRzIFRyZWVFbGVtZW50IHsKLQotICBwdWJsaWMgRmF2b3JpdGVzRWxlbWVudChTdHJpbmcgbmFtZSwgTW9kZWwgbW9kZWwpIHsKLSAgICBzdXBlcihuYW1lLCBtb2RlbCk7Ci0gIH0KLQotICBwdWJsaWMgRmF2b3JpdGVzRm9sZGVyRWxlbWVudCBnZXRQYXJlbnRGb2xkZXJFbGVtZW50KCkgewotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRFbGVtZW50cyhNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgIGlmICghZS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHJldHVybiBudWxsOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAoRmF2b3JpdGVzRm9sZGVyRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNGb2xkZXJFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzRm9sZGVyRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWI5YzBjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNGb2xkZXJFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLS8qKgotKiBUaGUgZGF0YSBtb2RlbCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyAKLSogYSBXU0lMIGRvY3VtZW50Ci0qLwotcHVibGljIGFic3RyYWN0IGNsYXNzIEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQgZXh0ZW5kcyBUcmVlRWxlbWVudAotewotICAgIHByb3RlY3RlZCBOb2RlTWFuYWdlciBub2RlTWFuYWdlcl87Ci0gICAgCi0gICAgcHVibGljIEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBOb2RlTWFuYWdlciBub2RlTWFuYWdlcikgewotICAgICAgICBzdXBlcihuYW1lLCBtb2RlbCk7Ci0gICAgICAgIG5vZGVNYW5hZ2VyXyA9IG5vZGVNYW5hZ2VyOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBGYXZvcml0ZXNNYWluRWxlbWVudCBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpIHsKLSAgICAgICAgcmV0dXJuIChGYXZvcml0ZXNNYWluRWxlbWVudClub2RlTWFuYWdlcl8uZ2V0Um9vdE5vZGUoKS5nZXRUcmVlRWxlbWVudCgpOwotICAgIH0KLQotICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGluaXQoRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQpOwotCi0gICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gcmVtb3ZlRmF2b3JpdGVCeU5vZGVJRChpbnQgbm9kZUlELFN0cmluZyBwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSk7Ci0KLSAgICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiByZW1vdmVBbGxGYXZvcml0ZXMoU3RyaW5nIHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5KTsKLQotICAgIHB1YmxpYyBhYnN0cmFjdCBib29sZWFuIGFkZEZhdm9yaXRlKEhhc2h0YWJsZSB0YWJsZSk7Ci0KLSAgICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBmYXZvcml0ZUV4aXN0cyhIYXNodGFibGUgdGFibGUpOwotCi0gICAgcHVibGljIGFic3RyYWN0IEVudW1lcmF0aW9uIGdldEFsbEZhdm9yaXRlcygpOwotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzTWFpbkVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNNYWluRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTllZWNkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNNYWluRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsOwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkxpbms7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuZmF2b3JpdGVzLkZhdm9yaXRlc1JlZ2lzdHJ5VHlwZVdTRTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci0KLS8qKgotKiBUaGUgZGF0YSBtb2RlbCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyAKLSogYSBXU0lMIGRvY3VtZW50Ci0qLwotcHVibGljIGNsYXNzIEZhdm9yaXRlc01haW5FbGVtZW50IGV4dGVuZHMgVHJlZUVsZW1lbnQKLXsKLSAgcHJpdmF0ZSBDb250cm9sbGVyIGNvbnRyb2xsZXJfOwotICBwcml2YXRlIEZhdm9yaXRlc1JlZ2lzdHJ5VHlwZVdTRSBmYXZSZWdpc3RyeV87Ci0KLSAgcHVibGljIEZhdm9yaXRlc01haW5FbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICAgIGNvbnRyb2xsZXJfID0gY29udHJvbGxlcjsKLSAgICBmYXZSZWdpc3RyeV8gPSBuZXcgRmF2b3JpdGVzUmVnaXN0cnlUeXBlV1NFKAotCQkJY29udHJvbGxlci5nZXREZWZhdWx0RmF2b3JpdGVzTG9jYXRpb24oKSwKLQkJCWNvbnRyb2xsZXIuZ2V0U2VydmxldEVuZ2luZVN0YXRlTG9jYXRpb24oKQotCSk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZXN0b3JlRmF2b3JpdGVzRGVmYXVsdCgpCi0gIHsKLSAgICBmYXZSZWdpc3RyeV8ucmVzdG9yZUZhdm9yaXRlc0RlZmF1bHQoKTsKLSAgICByZXR1cm4gc2F2ZUZhdm9yaXRlcygpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gc2F2ZUZhdm9yaXRlcygpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBmYXZSZWdpc3RyeV8uc2F2ZSgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICB7Ci0gICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgICBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9TQVZFX0ZBVk9SSVRFU19XU0lMIiwgZmF2UmVnaXN0cnlfLmdldFdyaXRlTG9jYXRpb24oKSkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBMaW5rIGFkZFVERElSZWdpc3RyeShTdHJpbmcgcmVnaXN0cnlOYW1lLCBTdHJpbmcgaW5xdWlyeUFQSSwgU3RyaW5nIHB1Ymxpc2hBUEksIFN0cmluZyByZWdpc3RyYXRpb25VUkwpCi0gIHsKLSAgICByZXR1cm4gZmF2UmVnaXN0cnlfLmFkZFVERElSZWdpc3RyeShyZWdpc3RyeU5hbWUsIGlucXVpcnlBUEksIHB1Ymxpc2hBUEksIHJlZ2lzdHJhdGlvblVSTCk7Ci0gIH0KLQotICBwdWJsaWMgTGluayBhZGRVRERJQnVzaW5lc3MoU3RyaW5nIGJ1c2luZXNzTmFtZSwgU3RyaW5nIGlucXVpcnlBUEksIFN0cmluZyBidXNpbmVzc0tleSkKLSAgewotICAgIHJldHVybiBmYXZSZWdpc3RyeV8uYWRkVURESUJ1c2luZXNzKGJ1c2luZXNzTmFtZSwgaW5xdWlyeUFQSSwgYnVzaW5lc3NLZXkpOwotICB9Ci0KLSAgcHVibGljIFNlcnZpY2UgYWRkVURESVNlcnZpY2UoU3RyaW5nIHNlcnZpY2VOYW1lLCBTdHJpbmcgaW5xdWlyeUFQSSwgU3RyaW5nIHNlcnZpY2VLZXkpCi0gIHsKLSAgICByZXR1cm4gZmF2UmVnaXN0cnlfLmFkZFVERElTZXJ2aWNlKHNlcnZpY2VOYW1lLCBpbnF1aXJ5QVBJLCBzZXJ2aWNlS2V5KTsKLSAgfQotCi0gIHB1YmxpYyBTZXJ2aWNlIGFkZFVERElTZXJ2aWNlSW50ZXJmYWNlKFN0cmluZyBzZXJJbnROYW1lLCBTdHJpbmcgaW5xdWlyeUFQSSwgU3RyaW5nIHNlckludEtleSkKLSAgewotICAgIHJldHVybiBmYXZSZWdpc3RyeV8uYWRkVURESVNlcnZpY2VJbnRlcmZhY2Uoc2VySW50TmFtZSwgaW5xdWlyeUFQSSwgc2VySW50S2V5KTsKLSAgfQotCi0gIHB1YmxpYyBTZXJ2aWNlIGFkZFdTRExTZXJ2aWNlKFN0cmluZyB1cmwpCi0gIHsKLSAgICByZXR1cm4gZmF2UmVnaXN0cnlfLmFkZFdTRExTZXJ2aWNlKHVybCk7Ci0gIH0KLQotICBwdWJsaWMgTGluayBhZGRXU0lMTGluayhTdHJpbmcgdXJsKQotICB7Ci0gICAgcmV0dXJuIGZhdlJlZ2lzdHJ5Xy5hZGRXU0lMTGluayh1cmwpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcmVtb3ZlU2VydmljZShTZXJ2aWNlIHNlcnZpY2UpIHsKLSAgICBmYXZSZWdpc3RyeV8ucmVtb3ZlU2VydmljZShzZXJ2aWNlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJlbW92ZUxpbmsoTGluayBsaW5rKSB7Ci0gICAgZmF2UmVnaXN0cnlfLnJlbW92ZUxpbmsobGluayk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgTGlua1tdIGxvYWRVRERJUmVnaXN0cmllcygpCi0gIHsKLSAgICByZXR1cm4gZmF2UmVnaXN0cnlfLmxvYWRVRERJUmVnaXN0cmllcygpOwotICB9Ci0gICAgCi0gIHB1YmxpYyBMaW5rW10gbG9hZFVERElCdXNpbmVzc2VzKCkKLSAgewotICAgIHJldHVybiBmYXZSZWdpc3RyeV8ubG9hZFVERElCdXNpbmVzc2VzKCk7Ci0gIH0KLQotICBwdWJsaWMgU2VydmljZVtdIGxvYWRVRERJU2VydmljZXMoKQotICB7Ci0gICAgcmV0dXJuIGZhdlJlZ2lzdHJ5Xy5sb2FkVURESVNlcnZpY2VzKCk7Ci0gIH0KLQotICBwdWJsaWMgU2VydmljZVtdIGxvYWRVRERJU2VydmljZUludGVyZmFjZXMoKQotICB7Ci0gICAgcmV0dXJuIGZhdlJlZ2lzdHJ5Xy5sb2FkVURESVNlcnZpY2VJbnRlcmZhY2VzKCk7Ci0gIH0KLQotICBwdWJsaWMgU2VydmljZVtdIGxvYWRXU0RMU2VydmljZXMoKQotICB7Ci0gICAgcmV0dXJuIGZhdlJlZ2lzdHJ5Xy5sb2FkV1NETFNlcnZpY2VzKCk7Ci0gIH0KLQotICBwdWJsaWMgTGlua1tdIGxvYWRXU0lMcygpCi0gIHsKLSAgICByZXR1cm4gZmF2UmVnaXN0cnlfLmxvYWRXU0lMcygpOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudCBnZXRGYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50KCkKLSAgewotICAgIHJldHVybiAoRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudCkoZ2V0RWxlbWVudHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfUkVHSVNUUllfRk9MREVSX05PREUpLm5leHRFbGVtZW50KCkpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzVURESUJ1c2luZXNzRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElCdXNpbmVzc0VsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJkMTdmYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzVURESUJ1c2luZXNzRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWw7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuTGluazsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzLkZhdm9yaXRlc1VERElCdXNpbmVzczsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VERElCdXNpbmVzc0VsZW1lbnQgZXh0ZW5kcyBGYXZvcml0ZXNFbGVtZW50IHsKLQotICBwcml2YXRlIEZhdm9yaXRlc1VERElCdXNpbmVzcyB1ZGRpQnVzaW5lc3NfOwotCi0gIHB1YmxpYyBGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgTGluayBsaW5rKSB7Ci0gICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICAgIHVkZGlCdXNpbmVzc18gPSBuZXcgRmF2b3JpdGVzVURESUJ1c2luZXNzKCk7Ci0gICAgdWRkaUJ1c2luZXNzXy5zZXRMaW5rKGxpbmspOwotICB9Ci0KLSAgcHVibGljIExpbmsgZ2V0TGluaygpIHsKLSAgICByZXR1cm4gdWRkaUJ1c2luZXNzXy5nZXRMaW5rKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgcmV0dXJuIHVkZGlCdXNpbmVzc18uZ2V0TmFtZSgpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJbnF1aXJ5VVJMKCkgewotICAgIHJldHVybiB1ZGRpQnVzaW5lc3NfLmdldElucXVpcnlVUkwoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QnVzaW5lc3NLZXkoKSB7Ci0gICAgcmV0dXJuIHVkZGlCdXNpbmVzc18uZ2V0QnVzaW5lc3NLZXkoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgcmV0dXJuIGdldE5hbWUoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElCdXNpbmVzc0ZvbGRlckVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVRERJQnVzaW5lc3NGb2xkZXJFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNGFiNGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElCdXNpbmVzc0ZvbGRlckVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5MaW5rOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotLyoqCi0qIFRoZSBkYXRhIG1vZGVsIGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIAotKiBhIFdTSUwgZG9jdW1lbnQKLSovCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyRWxlbWVudCBleHRlbmRzIEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQKLXsKLSAgcHVibGljIEZhdm9yaXRlc1VERElCdXNpbmVzc0ZvbGRlckVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBOb2RlTWFuYWdlciBub2RlTWFuYWdlcikgewotICAgIHN1cGVyKG5hbWUsIG1vZGVsLCBub2RlTWFuYWdlcik7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBpbml0KEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50KSB7Ci0gICAgTGlua1tdIGxpbmtzID0gZmF2TWFpbkVsZW1lbnQubG9hZFVERElCdXNpbmVzc2VzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7IGkrKykgewotICAgICAgTGluayBsaW5rID0gbGlua3NbaV07Ci0gICAgICBGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50IGZhdlVERElCdXNpbmVzc0VsZW1lbnQgPSBuZXcgRmF2b3JpdGVzVURESUJ1c2luZXNzRWxlbWVudCgobGluay5nZXRBYnN0cmFjdHMoKSlbMF0uZ2V0VGV4dCgpLCBnZXRNb2RlbCgpLCBsaW5rKTsKLSAgICAgIGNvbm5lY3QoZmF2VURESUJ1c2luZXNzRWxlbWVudCwgRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfQlVTSU5FU1NfTk9ERSwgTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBhZGRGYXZvcml0ZShIYXNodGFibGUgdGFibGUpIHsKLSAgICBTdHJpbmcgYnVzaW5lc3NOYW1lID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX0JVU0lORVNTX05BTUUpOwotICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX0JVU0lORVNTX0lOUVVJUllfQVBJKTsKLSAgICBTdHJpbmcgYnVzaW5lc3NLZXkgPSAoU3RyaW5nKXRhYmxlLmdldChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfQlVTSU5FU1NfS0VZKTsKLSAgICBpZiAoYnVzaW5lc3NOYW1lID09IG51bGwgfHwgaW5xdWlyeUFQSSA9PSBudWxsIHx8IGJ1c2luZXNzS2V5ID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRmF2b3JpdGVzVURESUJ1c2luZXNzRWxlbWVudCBlID0gZ2V0RmF2b3JpdGUoaW5xdWlyeUFQSSwgYnVzaW5lc3NLZXkpOwotICAgIGlmIChlICE9IG51bGwpCi0gICAgICByZW1vdmVGYXZvcml0ZShlKTsKLSAgICBGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCA9IGdldEZhdm9yaXRlc01haW5FbGVtZW50KCk7Ci0gICAgTGluayBsaW5rID0gZmF2TWFpbkVsZW1lbnQuYWRkVURESUJ1c2luZXNzKGJ1c2luZXNzTmFtZSwgaW5xdWlyeUFQSSwgYnVzaW5lc3NLZXkpOwotICAgIGJvb2xlYW4gc2F2ZWQgPSBmYXZNYWluRWxlbWVudC5zYXZlRmF2b3JpdGVzKCk7Ci0gICAgaWYgKHNhdmVkKSB7Ci0gICAgICBGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50IGZhdlVERElCdXNpbmVzc0VsZW1lbnQgPSBuZXcgRmF2b3JpdGVzVURESUJ1c2luZXNzRWxlbWVudChidXNpbmVzc05hbWUsIGdldE1vZGVsKCksIGxpbmspOwotICAgICAgY29ubmVjdChmYXZVRERJQnVzaW5lc3NFbGVtZW50LCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9CVVNJTkVTU19OT0RFLCBNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgIH0KLSAgICByZXR1cm4gc2F2ZWQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBmYXZvcml0ZUV4aXN0cyhIYXNodGFibGUgdGFibGUpIHsKLSAgICBTdHJpbmcgaW5xdWlyeUFQSSA9IChTdHJpbmcpdGFibGUuZ2V0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9CVVNJTkVTU19JTlFVSVJZX0FQSSk7Ci0gICAgU3RyaW5nIGJ1c2luZXNzS2V5ID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX0JVU0lORVNTX0tFWSk7Ci0gICAgaWYgKGlucXVpcnlBUEkgPT0gbnVsbCB8fCBidXNpbmVzc0tleSA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAoZ2V0RmF2b3JpdGUoaW5xdWlyeUFQSSwgYnVzaW5lc3NLZXkpICE9IG51bGwpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcmVtb3ZlRmF2b3JpdGVCeU5vZGVJRChpbnQgbm9kZUlELFN0cmluZyBwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSkgewotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlEKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCA9IGdldEZhdm9yaXRlc01haW5FbGVtZW50KCk7Ci0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc1VERElCdXNpbmVzc0VsZW1lbnQpCi0gICAgICByZXR1cm4gKHJlbW92ZUZhdm9yaXRlKChGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkgJiYgZmF2TWFpbkVsZW1lbnQuc2F2ZUZhdm9yaXRlcygpKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gcmVtb3ZlRmF2b3JpdGUoRmF2b3JpdGVzVURESUJ1c2luZXNzRWxlbWVudCBlbGVtZW50KSB7Ci0gICAgTGluayBsaW5rID0gZWxlbWVudC5nZXRMaW5rKCk7Ci0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpOwotICAgIGlmIChmYXZNYWluRWxlbWVudC5yZW1vdmVMaW5rKGxpbmspKSB7Ci0gICAgICBlbGVtZW50LmRpc2Nvbm5lY3RBbGwoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZW1vdmVBbGxGYXZvcml0ZXMoU3RyaW5nIHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5KSB7Ci0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpOwotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRBbGxGYXZvcml0ZXMoKTsKLSAgICB3aGlsZShlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICBGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50IGZhdlVERElCdXNpbmVzc0VsZW1lbnQgPSAoRmF2b3JpdGVzVURESUJ1c2luZXNzRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgICBMaW5rIGxpbmsgPSBmYXZVRERJQnVzaW5lc3NFbGVtZW50LmdldExpbmsoKTsKLSAgICAgIGZhdk1haW5FbGVtZW50LnJlbW92ZUxpbmsobGluayk7Ci0gICAgfQotICAgIGRpc2Nvbm5lY3RSZWwoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfQlVTSU5FU1NfTk9ERSk7Ci0gICAgcmV0dXJuIGZhdk1haW5FbGVtZW50LnNhdmVGYXZvcml0ZXMoKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRBbGxGYXZvcml0ZXMoKSB7Ci0gICAgcmV0dXJuIGdldEVsZW1lbnRzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX0JVU0lORVNTX05PREUpOwotICB9Ci0KLSAgcHJpdmF0ZSBGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50IGdldEZhdm9yaXRlKFN0cmluZyBpbnF1aXJ5QVBJLCBTdHJpbmcgYnVzaW5lc3NLZXkpIHsKLSAgICBFbnVtZXJhdGlvbiBlID0gZ2V0QWxsRmF2b3JpdGVzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgIEZhdm9yaXRlc1VERElCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCA9IChGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIGlmIChpbnF1aXJ5QVBJLmVxdWFscyhidXNFbGVtZW50LmdldElucXVpcnlVUkwoKSkgJiYKLSAgICAgICAgICBidXNpbmVzc0tleS5lcXVhbHMoYnVzRWxlbWVudC5nZXRCdXNpbmVzc0tleSgpKSkKLSAgICAgICAgcmV0dXJuIGJ1c0VsZW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgzZjY2Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWw7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuTGluazsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzLkZhdm9yaXRlc1VERElSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmZhdm9yaXRlcy5JRmF2b3JpdGVzVURESVJlZ2lzdHJ5OwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudCBleHRlbmRzIEZhdm9yaXRlc0VsZW1lbnQgewotCi0gIHByaXZhdGUgRmF2b3JpdGVzVURESVJlZ2lzdHJ5IHVkZGlSZWdfOwotCi0gIHB1YmxpYyBGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgTGluayBsaW5rKSB7Ci0gICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICAgIHVkZGlSZWdfID0gbmV3IEZhdm9yaXRlc1VERElSZWdpc3RyeSgpOwotICAgIHVkZGlSZWdfLnNldExpbmsobGluayk7Ci0gIH0KLQotICBwdWJsaWMgTGluayBnZXRMaW5rKCkgewotICAgIHJldHVybiB1ZGRpUmVnXy5nZXRMaW5rKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgcmV0dXJuIHVkZGlSZWdfLmdldE5hbWUoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5xdWlyeVVSTCgpIHsKLSAgICByZXR1cm4gdWRkaVJlZ18uZ2V0SW5xdWlyeVVSTCgpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQdWJsaXNoVVJMKCkgewotICAgIHJldHVybiB1ZGRpUmVnXy5nZXRQdWJsaXNoVVJMKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlZ2lzdHJhdGlvblVSTCgpIHsKLSAgICByZXR1cm4gdWRkaVJlZ18uZ2V0UmVnaXN0cmF0aW9uVVJMKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgIHJldHVybiBnZXROYW1lKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJRmF2b3JpdGVzVURESVJlZ2lzdHJ5IGdldElGYXZvcml0ZXNVRERJUmVnaXN0cnlJbnRlcmZhY2UoKQotICB7Ci0gICAgcmV0dXJuIHVkZGlSZWdfOwotICB9Ci19Ci0gIApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElSZWdpc3RyeUZvbGRlckVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhOGZjYzkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElSZWdpc3RyeUZvbGRlckVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuTGluazsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy5GYXZvcml0ZXNNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkNhdGVnb3J5TW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVVJMVXRpbHM7Ci0KLS8qKgotKiBUaGUgZGF0YSBtb2RlbCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyAKLSogYSBXU0lMIGRvY3VtZW50Ci0qLwotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VERElSZWdpc3RyeUZvbGRlckVsZW1lbnQgZXh0ZW5kcyBGYXZvcml0ZXNGb2xkZXJFbGVtZW50Ci17Ci0gIHB1YmxpYyBGYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIpIHsKLSAgICBzdXBlcihuYW1lLCBtb2RlbCwgbm9kZU1hbmFnZXIpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaW5pdChGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCkgewotICAgIExpbmtbXSBsaW5rcyA9IGZhdk1haW5FbGVtZW50LmxvYWRVRERJUmVnaXN0cmllcygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspIHsKLSAgICAgIExpbmsgbGluayA9IGxpbmtzW2ldOwotICAgICAgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudCBmYXZVRERJUmVnc2l0cnlFbGVtZW50ID0gbmV3IEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQoKGxpbmsuZ2V0QWJzdHJhY3RzKCkpWzBdLmdldFRleHQoKSwgZ2V0TW9kZWwoKSwgbGluayk7Ci0gICAgICBjb25uZWN0KGZhdlVERElSZWdzaXRyeUVsZW1lbnQsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1JFR0lTVFJZX05PREUsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBhZGRGYXZvcml0ZShIYXNodGFibGUgdGFibGUpIHsKLSAgICBTdHJpbmcgcmVnaXN0cnlOYW1lID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1JFR0lTVFJZX05BTUUpOwotICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1JFR0lTVFJZX0lOUVVJUllfQVBJKTsKLSAgICBTdHJpbmcgcHVibGlzaEFQSSA9IChTdHJpbmcpdGFibGUuZ2V0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9SRUdJU1RSWV9QVUJMSVNIX0FQSSk7Ci0gICAgU3RyaW5nIHJlZ2lzdHJhdGlvblVSTCA9IChTdHJpbmcpdGFibGUuZ2V0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9SRUdJU1RSWV9SRUdJU1RSQVRJT05fVVJMKTsKLSAgICBFbnVtZXJhdGlvbiB1c2VyRGVmaW5lZENhdGVnb3JpZXMgPSAoRW51bWVyYXRpb24pdGFibGUuZ2V0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9SRUdJU1RSWV9DQVRFR09SSUVTX0VOVU0pOwotICAgIC8vIFNhdmUgdGhlIGNhdGVnb3J5IGRhdGEgZmlyc3QgYW5kIHVuZG8gaWYgbmVjZXNzYXJ5LgotICAgIGlmICh1c2VyRGVmaW5lZENhdGVnb3JpZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgcGx1Z2luTWV0YWRhdGFEaXJlY3RvcnkgPSAoU3RyaW5nKXRhYmxlLmdldChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1BMVUdJTl9NRVRBREFUQV9ESVJFQ1RPUlkpOwotICAgICAgU3RyaW5nQnVmZmVyIGRpcmVjdG9yeUJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgIGZvcm1DYXRlZ29yaWVzRGlyZWN0b3J5KGRpcmVjdG9yeUJ1ZmZlcixwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSxyZWdpc3RyeU5hbWUpOwotICAgICAgRmlsZSBjYXRlZ29yaWVzRGlyZWN0b3J5RmlsZSA9IG5ldyBGaWxlKGRpcmVjdG9yeUJ1ZmZlci50b1N0cmluZygpKTsKLSAgICAgIGNhdGVnb3JpZXNEaXJlY3RvcnlGaWxlLm1rZGlycygpOwotICAgICAgU3RyaW5nQnVmZmVyIGNhdGVnb3J5RmlsZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICB3aGlsZSAodXNlckRlZmluZWRDYXRlZ29yaWVzLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgewotICAgICAgICBDYXRlZ29yeU1vZGVsIGNhdGVnb3J5TW9kZWwgPSAoQ2F0ZWdvcnlNb2RlbCl1c2VyRGVmaW5lZENhdGVnb3JpZXMubmV4dEVsZW1lbnQoKTsgICAgICAgIAotICAgICAgICBjYXRlZ29yeUZpbGVOYW1lLnNldExlbmd0aCgwKTsKLSAgICAgICAgU3RyaW5nIGVuY29kZWRDYXRlZ29yeUtleSA9IFVSTFV0aWxzLmVuY29kZShjYXRlZ29yeU1vZGVsLmdldENhdGVnb3J5S2V5KCkpOwotICAgICAgICBjYXRlZ29yeUZpbGVOYW1lLmFwcGVuZChjYXRlZ29yaWVzRGlyZWN0b3J5RmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSkuYXBwZW5kKEZpbGUuc2VwYXJhdG9yQ2hhcikuYXBwZW5kKGVuY29kZWRDYXRlZ29yeUtleSkuYXBwZW5kKCIudHh0Iik7Ci0gICAgICAgIGJ5dGUgcmMgPSBjYXRlZ29yeU1vZGVsLnNhdmVEYXRhKGNhdGVnb3J5RmlsZU5hbWUudG9TdHJpbmcoKSk7Ci0gICAgICAgIGlmIChyYyAhPSBDYXRlZ29yeU1vZGVsLk9QRVJBVElPTl9TVUNDRVNTRlVMKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gRGVsZXRlIHRoZSBjYXRlZ29yeSBmaWxlIGlmIGl0IGV4aXN0cy4KLSAgICAgICAgICBGaWxlIGNhdGVnb3J5RmlsZSA9IG5ldyBGaWxlKGNhdGVnb3J5RmlsZU5hbWUudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgaWYgKGNhdGVnb3J5RmlsZS5leGlzdHMoKSkKLSAgICAgICAgICAgIGNhdGVnb3J5RmlsZS5kZWxldGUoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2xlYW51cENhdGVnb3J5RGlyZWN0b3JpZXMoY2F0ZWdvcmllc0RpcmVjdG9yeUZpbGUpOwotICAgIH0KLSAgICBpZiAocmVnaXN0cnlOYW1lID09IG51bGwgfHwgaW5xdWlyeUFQSSA9PSBudWxsIHx8IHB1Ymxpc2hBUEkgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50IGUgPSBnZXRGYXZvcml0ZShyZWdpc3RyeU5hbWUpOwotICAgIGlmIChlICE9IG51bGwpCi0gICAgICByZW1vdmVGYXZvcml0ZShlKTsKLSAgICBGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCA9IGdldEZhdm9yaXRlc01haW5FbGVtZW50KCk7Ci0gICAgTGluayBsaW5rID0gZmF2TWFpbkVsZW1lbnQuYWRkVURESVJlZ2lzdHJ5KHJlZ2lzdHJ5TmFtZSwgaW5xdWlyeUFQSSwgcHVibGlzaEFQSSwgcmVnaXN0cmF0aW9uVVJMKTsKLSAgICBib29sZWFuIHNhdmVkID0gZmF2TWFpbkVsZW1lbnQuc2F2ZUZhdm9yaXRlcygpOwotICAgIGlmIChzYXZlZCkgewotICAgICAgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudCBmYXZVRERJUmVnc2l0cnlFbGVtZW50ID0gbmV3IEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQocmVnaXN0cnlOYW1lLCBnZXRNb2RlbCgpLCBsaW5rKTsKLSAgICAgIGNvbm5lY3QoZmF2VURESVJlZ3NpdHJ5RWxlbWVudCwgRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfUkVHSVNUUllfTk9ERSwgTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNhdmVkOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZm9ybUNhdGVnb3JpZXNEaXJlY3RvcnkoU3RyaW5nQnVmZmVyIGNhdGVnb3JpZXNEaXJlY3RvcnksU3RyaW5nIHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5LFN0cmluZyByZWdpc3RyeU5hbWUpCi0gIHsKLSAgICAvLyA8bWV0YWRhdGE+L3VkZGkvPHJlZ2lzdHJ5SWQ+L2NhdGVnb3JpZXMKLQlTdHJpbmcgZW5jb2RlZFJlZ2lzdHJ5TmFtZSA9IFVSTFV0aWxzLmVuY29kZShyZWdpc3RyeU5hbWUpOwotICAgIGNhdGVnb3JpZXNEaXJlY3RvcnkuYXBwZW5kKHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5KS5hcHBlbmQoInVkZGkiKS5hcHBlbmQoRmlsZS5zZXBhcmF0b3JDaGFyKS5hcHBlbmQoZW5jb2RlZFJlZ2lzdHJ5TmFtZSkuYXBwZW5kKEZpbGUuc2VwYXJhdG9yQ2hhcikuYXBwZW5kKCJjYXRlZ29yaWVzIik7ICAgIAotICB9Ci0gIAotICBwcml2YXRlIGZpbmFsIHZvaWQgY2xlYXJSZWdpc3RyeU1ldGFkYXRhKFN0cmluZyBwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSxTdHJpbmcgcmVnaXN0cnlOYW1lKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGNhdGVnb3JpZXNEaXJlY3RvcnkgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgZm9ybUNhdGVnb3JpZXNEaXJlY3RvcnkoY2F0ZWdvcmllc0RpcmVjdG9yeSxwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSxyZWdpc3RyeU5hbWUpOwotICAgIEZpbGUgY2F0ZWdvcmllc0RpcmVjdG9yeUZpbGUgPSBuZXcgRmlsZShjYXRlZ29yaWVzRGlyZWN0b3J5LnRvU3RyaW5nKCkpOwotICAgIEZpbGVbXSBjYXRlZ29yeUZpbGVzID0gY2F0ZWdvcmllc0RpcmVjdG9yeUZpbGUubGlzdEZpbGVzKCk7Ci0gICAgaWYgKGNhdGVnb3J5RmlsZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmb3IgKGludCBpPTA7aTxjYXRlZ29yeUZpbGVzLmxlbmd0aDtpKyspCi0gICAgICAgIGNhdGVnb3J5RmlsZXNbaV0uZGVsZXRlKCk7Ci0gICAgfQotICAgIGNsZWFudXBDYXRlZ29yeURpcmVjdG9yaWVzKGNhdGVnb3JpZXNEaXJlY3RvcnlGaWxlKTsKLSAgfQotICAKLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNsZWFudXBDYXRlZ29yeURpcmVjdG9yaWVzKEZpbGUgY2F0ZWdvcmllc0RpcmVjdG9yeUZpbGUpCi0gIHsKLSAgICAvLyBEZWxldGUgdGhlIGNhdGVnb3JpZXMgc3ViZGlyZWN0b3J5IGlmIGl0IGlzIGVtcHR5LgotICAgIFN0cmluZ1tdIGZpbGVMaXN0OwotICAgIGZpbGVMaXN0ID0gY2F0ZWdvcmllc0RpcmVjdG9yeUZpbGUubGlzdCgpOwotICAgIGlmIChmaWxlTGlzdCA9PSBudWxsIHx8IGZpbGVMaXN0Lmxlbmd0aCA9PSAwKQotICAgICAgY2F0ZWdvcmllc0RpcmVjdG9yeUZpbGUuZGVsZXRlKCk7Ci0gICAgLy8gRGVsZXRlIHRoZSA8cmVnaXN0cnlJZD4gc3ViZGlyZWN0b3J5IGlmIGl0IGlzIGVtcHR5LgotICAgIEZpbGUgcmVnaXN0cnlJZERpcmVjdG9yeUZpbGUgPSBjYXRlZ29yaWVzRGlyZWN0b3J5RmlsZS5nZXRQYXJlbnRGaWxlKCk7Ci0gICAgZmlsZUxpc3QgPSByZWdpc3RyeUlkRGlyZWN0b3J5RmlsZS5saXN0KCk7Ci0gICAgaWYgKGZpbGVMaXN0ID09IG51bGwgfHwgZmlsZUxpc3QubGVuZ3RoID09IDApCi0gICAgICByZWdpc3RyeUlkRGlyZWN0b3J5RmlsZS5kZWxldGUoKTsKLSAgICAvLyBEZWxldGUgdGhlIHVkZGkgc3ViZGlyZWN0b3J5IGlmIGl0IGlzIGVtcHR5LgotICAgIEZpbGUgdWRkaURpcmVjdG9yeUZpbGUgPSByZWdpc3RyeUlkRGlyZWN0b3J5RmlsZS5nZXRQYXJlbnRGaWxlKCk7Ci0gICAgZmlsZUxpc3QgPSB1ZGRpRGlyZWN0b3J5RmlsZS5saXN0KCk7Ci0gICAgaWYgKGZpbGVMaXN0ID09IG51bGwgfHwgZmlsZUxpc3QubGVuZ3RoID09IDApCi0gICAgICB1ZGRpRGlyZWN0b3J5RmlsZS5kZWxldGUoKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGZhdm9yaXRlRXhpc3RzKEhhc2h0YWJsZSB0YWJsZSkgewotICAgIFN0cmluZyByZWdpc3RyeU5hbWUgPSAoU3RyaW5nKXRhYmxlLmdldChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfUkVHSVNUUllfTkFNRSk7Ci0gICAgaWYgKHJlZ2lzdHJ5TmFtZSA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAoZ2V0RmF2b3JpdGUocmVnaXN0cnlOYW1lKSAhPSBudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJlbW92ZUZhdm9yaXRlQnlOb2RlSUQoaW50IG5vZGVJRCxTdHJpbmcgcGx1Z2luTWV0YWRhdGFEaXJlY3RvcnkpIHsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJRCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpOwotICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50KQotICAgIHsKLSAgICAgIGNsZWFyUmVnaXN0cnlNZXRhZGF0YShwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSxzZWxlY3RlZEVsZW1lbnQuZ2V0TmFtZSgpKTsKLSAgICAgIGJvb2xlYW4gcmMgPSByZW1vdmVGYXZvcml0ZSgoRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudClzZWxlY3RlZEVsZW1lbnQpOwotICAgICAgcmMgPSByYyAmJiBmYXZNYWluRWxlbWVudC5zYXZlRmF2b3JpdGVzKCk7Ci0gICAgICByZXR1cm4gcmM7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiByZW1vdmVGYXZvcml0ZShGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50IGVsZW1lbnQpIHsKLSAgICBMaW5rIGxpbmsgPSAoKEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQpZWxlbWVudCkuZ2V0TGluaygpOwotICAgIEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50ID0gZ2V0RmF2b3JpdGVzTWFpbkVsZW1lbnQoKTsKLSAgICBpZiAoZmF2TWFpbkVsZW1lbnQucmVtb3ZlTGluayhsaW5rKSkgewotICAgICAgZWxlbWVudC5kaXNjb25uZWN0QWxsKCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcmVtb3ZlQWxsRmF2b3JpdGVzKFN0cmluZyBwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSkgewotICAgIEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50ID0gZ2V0RmF2b3JpdGVzTWFpbkVsZW1lbnQoKTsKLSAgICBFbnVtZXJhdGlvbiBlID0gZ2V0QWxsRmF2b3JpdGVzKCk7Ci0gICAgd2hpbGUoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudCBmYXZVRERJUmVnaXN0cnlFbGVtZW50ID0gKEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgY2xlYXJSZWdpc3RyeU1ldGFkYXRhKHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5LGZhdlVERElSZWdpc3RyeUVsZW1lbnQuZ2V0TmFtZSgpKTsKLSAgICAgIExpbmsgbGluayA9IGZhdlVERElSZWdpc3RyeUVsZW1lbnQuZ2V0TGluaygpOwotICAgICAgZmF2TWFpbkVsZW1lbnQucmVtb3ZlTGluayhsaW5rKTsKLSAgICB9Ci0gICAgZGlzY29ubmVjdFJlbChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9SRUdJU1RSWV9OT0RFKTsKLSAgICByZXR1cm4gZmF2TWFpbkVsZW1lbnQuc2F2ZUZhdm9yaXRlcygpOwotICB9Ci0KLSAgcHVibGljIEVudW1lcmF0aW9uIGdldEFsbEZhdm9yaXRlcygpIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfUkVHSVNUUllfTk9ERSk7Ci0gIH0KLQotICBwcml2YXRlIEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQgZ2V0RmF2b3JpdGUoU3RyaW5nIHJlZ2lzdHJ5TmFtZSkgewotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRBbGxGYXZvcml0ZXMoKTsKLSAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgaWYgKHJlZ2lzdHJ5TmFtZS5lcXVhbHMocmVnRWxlbWVudC5nZXROYW1lKCkpKQotICAgICAgICByZXR1cm4gcmVnRWxlbWVudDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVRERJU2VydmljZUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVRERJU2VydmljZUVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAwYjM0ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbDsKLQotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5mYXZvcml0ZXMuRmF2b3JpdGVzVURESVNlcnZpY2U7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNVRERJU2VydmljZUVsZW1lbnQgZXh0ZW5kcyBGYXZvcml0ZXNFbGVtZW50IHsKLQotICBwcml2YXRlIEZhdm9yaXRlc1VERElTZXJ2aWNlIHVkZGlTZXJ2aWNlXzsKLQotICBwdWJsaWMgRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgU2VydmljZSBzZXJ2aWNlKSB7Ci0gICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICAgIHVkZGlTZXJ2aWNlXyA9IG5ldyBGYXZvcml0ZXNVRERJU2VydmljZSgpOwotICAgIHVkZGlTZXJ2aWNlXy5zZXRTZXJ2aWNlKHNlcnZpY2UpOwotICB9Ci0KLSAgcHVibGljIFNlcnZpY2UgZ2V0U2VydmljZSgpIHsKLSAgICByZXR1cm4gdWRkaVNlcnZpY2VfLmdldFNlcnZpY2UoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLSAgICByZXR1cm4gdWRkaVNlcnZpY2VfLmdldE5hbWUoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5xdWlyeVVSTCgpIHsKLSAgICByZXR1cm4gdWRkaVNlcnZpY2VfLmdldElucXVpcnlVUkwoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZUtleSgpIHsKLSAgICByZXR1cm4gdWRkaVNlcnZpY2VfLmdldFNlcnZpY2VLZXkoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgcmV0dXJuIGdldE5hbWUoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElTZXJ2aWNlRm9sZGVyRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElTZXJ2aWNlRm9sZGVyRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWI0ZjkxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVRERJU2VydmljZUZvbGRlckVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotLyoqCi0qIFRoZSBkYXRhIG1vZGVsIGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIAotKiBhIFdTSUwgZG9jdW1lbnQKLSovCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESVNlcnZpY2VGb2xkZXJFbGVtZW50IGV4dGVuZHMgRmF2b3JpdGVzRm9sZGVyRWxlbWVudAotewotCi0gIHB1YmxpYyBGYXZvcml0ZXNVRERJU2VydmljZUZvbGRlckVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBOb2RlTWFuYWdlciBub2RlTWFuYWdlcikgewotICAgIHN1cGVyKG5hbWUsIG1vZGVsLCBub2RlTWFuYWdlcik7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBpbml0KEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50KSB7Ci0gICAgU2VydmljZVtdIHNlcnZpY2VzID0gZmF2TWFpbkVsZW1lbnQubG9hZFVERElTZXJ2aWNlcygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VydmljZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgIFNlcnZpY2Ugc2VydmljZSA9IHNlcnZpY2VzW2ldOwotICAgICAgRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50IGZhdlVERElTZXJ2aWNlRWxlbWVudCA9IG5ldyBGYXZvcml0ZXNVRERJU2VydmljZUVsZW1lbnQoKHNlcnZpY2UuZ2V0U2VydmljZU5hbWVzKCkpWzBdLmdldFRleHQoKSwgZ2V0TW9kZWwoKSwgc2VydmljZSk7Ci0gICAgICBjb25uZWN0KGZhdlVERElTZXJ2aWNlRWxlbWVudCwgRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9OT0RFLCBNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGFkZEZhdm9yaXRlKEhhc2h0YWJsZSB0YWJsZSkgewotICAgIFN0cmluZyBzZXJ2aWNlTmFtZSA9IChTdHJpbmcpdGFibGUuZ2V0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9TRVJWSUNFX05BTUUpOwotICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5RVUlSWV9BUEkpOwotICAgIFN0cmluZyBzZXJ2aWNlS2V5ID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfS0VZKTsKLSAgICBpZiAoc2VydmljZU5hbWUgPT0gbnVsbCB8fCBpbnF1aXJ5QVBJID09IG51bGwgfHwgc2VydmljZUtleSA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZhdm9yaXRlc1VERElTZXJ2aWNlRWxlbWVudCBlID0gZ2V0RmF2b3JpdGUoaW5xdWlyeUFQSSwgc2VydmljZUtleSk7Ci0gICAgaWYgKGUgIT0gbnVsbCkKLSAgICAgIHJlbW92ZUZhdm9yaXRlKGUpOwotICAgIEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50ID0gZ2V0RmF2b3JpdGVzTWFpbkVsZW1lbnQoKTsKLSAgICBTZXJ2aWNlIHNlcnZpY2UgPSBmYXZNYWluRWxlbWVudC5hZGRVRERJU2VydmljZShzZXJ2aWNlTmFtZSwgaW5xdWlyeUFQSSwgc2VydmljZUtleSk7Ci0gICAgYm9vbGVhbiBzYXZlZCA9IGZhdk1haW5FbGVtZW50LnNhdmVGYXZvcml0ZXMoKTsKLSAgICBpZiAoc2F2ZWQpIHsKLSAgICAgIEZhdm9yaXRlc1VERElTZXJ2aWNlRWxlbWVudCBmYXZVRERJU2VydmljZUVsZW1lbnQgPSBuZXcgRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50KHNlcnZpY2VOYW1lLCBnZXRNb2RlbCgpLCBzZXJ2aWNlKTsKLSAgICAgIGNvbm5lY3QoZmF2VURESVNlcnZpY2VFbGVtZW50LCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9TRVJWSUNFX05PREUsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgfQotICAgIHJldHVybiBzYXZlZDsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGZhdm9yaXRlRXhpc3RzKEhhc2h0YWJsZSB0YWJsZSkgewotICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5RVUlSWV9BUEkpOwotICAgIFN0cmluZyBzZXJ2aWNlS2V5ID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfS0VZKTsKLSAgICBpZiAoaW5xdWlyeUFQSSA9PSBudWxsIHx8IHNlcnZpY2VLZXkgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gKGdldEZhdm9yaXRlKGlucXVpcnlBUEksIHNlcnZpY2VLZXkpICE9IG51bGwpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcmVtb3ZlRmF2b3JpdGVCeU5vZGVJRChpbnQgbm9kZUlELFN0cmluZyBwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSkgewotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlEKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCA9IGdldEZhdm9yaXRlc01haW5FbGVtZW50KCk7Ci0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc1VERElTZXJ2aWNlRWxlbWVudCkKLSAgICAgIHJldHVybiAocmVtb3ZlRmF2b3JpdGUoKEZhdm9yaXRlc1VERElTZXJ2aWNlRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpICYmIGZhdk1haW5FbGVtZW50LnNhdmVGYXZvcml0ZXMoKSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIHJlbW92ZUZhdm9yaXRlKEZhdm9yaXRlc1VERElTZXJ2aWNlRWxlbWVudCBlbGVtZW50KSB7Ci0gICAgU2VydmljZSBzZXJ2aWNlID0gKChGYXZvcml0ZXNVRERJU2VydmljZUVsZW1lbnQpZWxlbWVudCkuZ2V0U2VydmljZSgpOwotICAgIEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50ID0gZ2V0RmF2b3JpdGVzTWFpbkVsZW1lbnQoKTsKLSAgICBpZiAoZmF2TWFpbkVsZW1lbnQucmVtb3ZlU2VydmljZShzZXJ2aWNlKSkgewotICAgICAgZWxlbWVudC5kaXNjb25uZWN0QWxsKCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcmVtb3ZlQWxsRmF2b3JpdGVzKFN0cmluZyBwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSkgewotICAgIEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50ID0gZ2V0RmF2b3JpdGVzTWFpbkVsZW1lbnQoKTsKLSAgICBFbnVtZXJhdGlvbiBlID0gZ2V0QWxsRmF2b3JpdGVzKCk7Ci0gICAgd2hpbGUoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50IGZhdlVERElTZXJ2aWNlRWxlbWVudCA9IChGYXZvcml0ZXNVRERJU2VydmljZUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgU2VydmljZSBzZXJ2aWNlID0gZmF2VURESVNlcnZpY2VFbGVtZW50LmdldFNlcnZpY2UoKTsKLSAgICAgIGZhdk1haW5FbGVtZW50LnJlbW92ZVNlcnZpY2Uoc2VydmljZSk7Ci0gICAgfQotICAgIGRpc2Nvbm5lY3RSZWwoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9OT0RFKTsKLSAgICByZXR1cm4gZmF2TWFpbkVsZW1lbnQuc2F2ZUZhdm9yaXRlcygpOwotICB9Ci0KLSAgcHVibGljIEVudW1lcmF0aW9uIGdldEFsbEZhdm9yaXRlcygpIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9OT0RFKTsKLSAgfQotCi0gIHByaXZhdGUgRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50IGdldEZhdm9yaXRlKFN0cmluZyBpbnF1aXJ5QVBJLCBTdHJpbmcgc2VydmljZUtleSkgewotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRBbGxGYXZvcml0ZXMoKTsKLSAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50IHNlckVsZW1lbnQgPSAoRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIGlmIChpbnF1aXJ5QVBJLmVxdWFscyhzZXJFbGVtZW50LmdldElucXVpcnlVUkwoKSkgJiYKLSAgICAgICAgICBzZXJ2aWNlS2V5LmVxdWFscyhzZXJFbGVtZW50LmdldFNlcnZpY2VLZXkoKSkpCi0gICAgICAgIHJldHVybiBzZXJFbGVtZW50OwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDliMmMwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsOwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmZhdm9yaXRlcy5GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZTsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBleHRlbmRzIEZhdm9yaXRlc0VsZW1lbnQgewotCi0gIHByaXZhdGUgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2UgdWRkaVNlckludF87Ci0KLSAgcHVibGljIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudChTdHJpbmcgbmFtZSwgTW9kZWwgbW9kZWwsIFNlcnZpY2Ugc2VydmljZSkgewotICAgIHN1cGVyKG5hbWUsIG1vZGVsKTsKLSAgICB1ZGRpU2VySW50XyA9IG5ldyBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZSgpOwotICAgIHVkZGlTZXJJbnRfLnNldFNlcnZpY2Uoc2VydmljZSk7Ci0gIH0KLQotICBwdWJsaWMgU2VydmljZSBnZXRTZXJ2aWNlKCkgewotICAgIHJldHVybiB1ZGRpU2VySW50Xy5nZXRTZXJ2aWNlKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgcmV0dXJuIHVkZGlTZXJJbnRfLmdldE5hbWUoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5xdWlyeVVSTCgpIHsKLSAgICByZXR1cm4gdWRkaVNlckludF8uZ2V0SW5xdWlyeVVSTCgpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlSW50ZXJmYWNlS2V5KCkgewotICAgIHJldHVybiB1ZGRpU2VySW50Xy5nZXRTZXJ2aWNlSW50ZXJmYWNlS2V5KCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgIHJldHVybiBnZXROYW1lKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUZvbGRlckVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUZvbGRlckVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWViNDlkYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VGb2xkZXJFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy5GYXZvcml0ZXNNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLS8qKgotKiBUaGUgZGF0YSBtb2RlbCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyAKLSogYSBXU0lMIGRvY3VtZW50Ci0qLwotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRm9sZGVyRWxlbWVudCBleHRlbmRzIEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQKLXsKLQotICBwdWJsaWMgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VGb2xkZXJFbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIpIHsKLSAgICBzdXBlcihuYW1lLCBtb2RlbCwgbm9kZU1hbmFnZXIpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaW5pdChGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCkgewotICAgIFNlcnZpY2VbXSBzZXJ2aWNlcyA9IGZhdk1haW5FbGVtZW50LmxvYWRVRERJU2VydmljZUludGVyZmFjZXMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZpY2VzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBTZXJ2aWNlIHNlcnZpY2UgPSBzZXJ2aWNlc1tpXTsKLSAgICAgIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBmYXZVRERJU2VySW50RWxlbWVudCA9IG5ldyBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUVsZW1lbnQoKHNlcnZpY2UuZ2V0U2VydmljZU5hbWVzKCkpWzBdLmdldFRleHQoKSwgZ2V0TW9kZWwoKSwgc2VydmljZSk7Ci0gICAgICBjb25uZWN0KGZhdlVERElTZXJJbnRFbGVtZW50LCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9OT0RFLCBNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGFkZEZhdm9yaXRlKEhhc2h0YWJsZSB0YWJsZSkgewotICAgIFN0cmluZyBzZXJJbnROYW1lID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUpOwotICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0lOUVVJUllfQVBJKTsKLSAgICBTdHJpbmcgc2VySW50S2V5ID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0tFWSk7Ci0gICAgaWYgKHNlckludE5hbWUgPT0gbnVsbCB8fCBpbnF1aXJ5QVBJID09IG51bGwgfHwgc2VySW50S2V5ID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IGUgPSBnZXRGYXZvcml0ZShpbnF1aXJ5QVBJLCBzZXJJbnRLZXkpOwotICAgIGlmIChlICE9IG51bGwpCi0gICAgICByZW1vdmVGYXZvcml0ZShlKTsKLSAgICBGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCA9IGdldEZhdm9yaXRlc01haW5FbGVtZW50KCk7Ci0gICAgU2VydmljZSBzZXJ2aWNlID0gZmF2TWFpbkVsZW1lbnQuYWRkVURESVNlcnZpY2VJbnRlcmZhY2Uoc2VySW50TmFtZSwgaW5xdWlyeUFQSSwgc2VySW50S2V5KTsKLSAgICBib29sZWFuIHNhdmVkID0gZmF2TWFpbkVsZW1lbnQuc2F2ZUZhdm9yaXRlcygpOwotICAgIGlmIChzYXZlZCkgewotICAgICAgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IGZhdlVERElTZXJJbnRFbGVtZW50ID0gbmV3IEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudChzZXJJbnROYW1lLCBnZXRNb2RlbCgpLCBzZXJ2aWNlKTsKLSAgICAgIGNvbm5lY3QoZmF2VURESVNlckludEVsZW1lbnQsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX05PREUsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgfQotICAgIHJldHVybiBzYXZlZDsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGZhdm9yaXRlRXhpc3RzKEhhc2h0YWJsZSB0YWJsZSkgewotICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0lOUVVJUllfQVBJKTsKLSAgICBTdHJpbmcgc2VySW50S2V5ID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0tFWSk7Ci0gICAgaWYgKGlucXVpcnlBUEkgPT0gbnVsbCB8fCBzZXJJbnRLZXkgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gKGdldEZhdm9yaXRlKGlucXVpcnlBUEksIHNlckludEtleSkgIT0gbnVsbCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZW1vdmVGYXZvcml0ZUJ5Tm9kZUlEKGludCBub2RlSUQsU3RyaW5nIHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5KSB7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0Tm9kZShub2RlSUQpOwotICAgIFRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50ID0gZ2V0RmF2b3JpdGVzTWFpbkVsZW1lbnQoKTsKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VFbGVtZW50KQotICAgICAgcmV0dXJuIChyZW1vdmVGYXZvcml0ZSgoRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkgJiYgZmF2TWFpbkVsZW1lbnQuc2F2ZUZhdm9yaXRlcygpKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gcmVtb3ZlRmF2b3JpdGUoRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IGVsZW1lbnQpIHsKLSAgICBTZXJ2aWNlIHNlcnZpY2UgPSAoKEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCllbGVtZW50KS5nZXRTZXJ2aWNlKCk7Ci0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpOwotICAgIGlmIChmYXZNYWluRWxlbWVudC5yZW1vdmVTZXJ2aWNlKHNlcnZpY2UpKSB7Ci0gICAgICBlbGVtZW50LmRpc2Nvbm5lY3RBbGwoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZW1vdmVBbGxGYXZvcml0ZXMoU3RyaW5nIHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5KSB7Ci0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpOwotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRBbGxGYXZvcml0ZXMoKTsKLSAgICB3aGlsZShlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUVsZW1lbnQgZmF2VURESVNlckludEVsZW1lbnQgPSAoRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIFNlcnZpY2Ugc2VydmljZSA9IGZhdlVERElTZXJJbnRFbGVtZW50LmdldFNlcnZpY2UoKTsKLSAgICAgIGZhdk1haW5FbGVtZW50LnJlbW92ZVNlcnZpY2Uoc2VydmljZSk7Ci0gICAgfQotICAgIGRpc2Nvbm5lY3RSZWwoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9JTlRFUkZBQ0VfTk9ERSk7Ci0gICAgcmV0dXJuIGZhdk1haW5FbGVtZW50LnNhdmVGYXZvcml0ZXMoKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRBbGxGYXZvcml0ZXMoKSB7Ci0gICAgcmV0dXJuIGdldEVsZW1lbnRzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX05PREUpOwotICB9Ci0KLSAgcHJpdmF0ZSBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUVsZW1lbnQgZ2V0RmF2b3JpdGUoU3RyaW5nIGlucXVpcnlBUEksIFN0cmluZyBzZXJJbnRLZXkpIHsKLSAgICBFbnVtZXJhdGlvbiBlID0gZ2V0QWxsRmF2b3JpdGVzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBzZXJJbnRFbGVtZW50ID0gKEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgICBpZiAoaW5xdWlyeUFQSS5lcXVhbHMoc2VySW50RWxlbWVudC5nZXRJbnF1aXJ5VVJMKCkpICYmCi0gICAgICAgICAgIHNlckludEtleS5lcXVhbHMoc2VySW50RWxlbWVudC5nZXRTZXJ2aWNlSW50ZXJmYWNlS2V5KCkpKQotICAgICAgICByZXR1cm4gc2VySW50RWxlbWVudDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5RWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3YTRkZTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDkxMiAgIDE0MTc5NiBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeS5JUmVnaXN0cnlNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeS5SZWdpc3RyeVNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5LlVERElSZWdpc3RyeVNlcnZpY2U7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5RWxlbWVudCBleHRlbmRzIEZhdm9yaXRlc0VsZW1lbnQKLXsKLSAgcHJpdmF0ZSBMaXN0IG5hbWVzOwotICBwcml2YXRlIExpc3QgZGVzY3M7Ci0gIHByaXZhdGUgU3RyaW5nIHZlcnNpb247Ci0gIHByaXZhdGUgU3RyaW5nIGRlZmF1bHRMb2dpbjsKLSAgcHJpdmF0ZSBTdHJpbmcgZGVmYXVsdFBhc3N3b3JkOwotICBwcml2YXRlIFN0cmluZyBpbnF1aXJ5VVJMOwotICBwcml2YXRlIFN0cmluZyBwdWJsaXNoVVJMOwotICBwcml2YXRlIFN0cmluZyBzZWN1cmVJbnF1aXJ5VVJMOwotICBwcml2YXRlIFN0cmluZyBzZWN1cmVQdWJsaXNoVVJMOwotICBwcml2YXRlIFRheG9ub215W10gdGF4b25vbWllczsKLQotICBwdWJsaWMgU3RyaW5nIGdldERlZmF1bHRMb2dpbigpCi0gIHsKLSAgICByZXR1cm4gZGVmYXVsdExvZ2luOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RGVmYXVsdExvZ2luKFN0cmluZyBkZWZhdWx0TG9naW4pCi0gIHsKLSAgICB0aGlzLmRlZmF1bHRMb2dpbiA9IGRlZmF1bHRMb2dpbjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdFBhc3N3b3JkKCkKLSAgewotICAgIHJldHVybiBkZWZhdWx0UGFzc3dvcmQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXREZWZhdWx0UGFzc3dvcmQoU3RyaW5nIGRlZmF1bHRQYXNzd29yZCkKLSAgewotICAgIHRoaXMuZGVmYXVsdFBhc3N3b3JkID0gZGVmYXVsdFBhc3N3b3JkOwotICB9Ci0KLSAgcHVibGljIFRheG9ub215W10gZ2V0VGF4b25vbWllcygpCi0gIHsKLSAgICByZXR1cm4gdGF4b25vbWllczsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFRheG9ub21pZXMoVGF4b25vbXlbXSB0YXhvbm9taWVzKQotICB7Ci0gICAgdGhpcy50YXhvbm9taWVzID0gdGF4b25vbWllczsKLSAgfQotCi0gIHB1YmxpYyBGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5RWxlbWVudChTdHJpbmcgbmFtZSwgTW9kZWwgbW9kZWwpCi0gIHsKLSAgICBzdXBlcihuYW1lLCBtb2RlbCk7Ci0gIH0KLQotICBwdWJsaWMgTGlzdCBnZXREZXNjcygpCi0gIHsKLSAgICByZXR1cm4gZGVzY3M7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXREZXNjcyhMaXN0IGRlc2NzKQotICB7Ci0gICAgdGhpcy5kZXNjcyA9IGRlc2NzOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJbnF1aXJ5VVJMKCkKLSAgewotICAgIHJldHVybiBpbnF1aXJ5VVJMOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0SW5xdWlyeVVSTChTdHJpbmcgaW5xdWlyeVVSTCkKLSAgewotICAgIHRoaXMuaW5xdWlyeVVSTCA9IGlucXVpcnlVUkw7Ci0gIH0KLQotICBwdWJsaWMgTGlzdCBnZXROYW1lcygpCi0gIHsKLSAgICByZXR1cm4gbmFtZXM7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXROYW1lcyhMaXN0IG5hbWVzKQotICB7Ci0gICAgdGhpcy5uYW1lcyA9IG5hbWVzOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQdWJsaXNoVVJMKCkKLSAgewotICAgIHJldHVybiBwdWJsaXNoVVJMOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0UHVibGlzaFVSTChTdHJpbmcgcHVibGlzaFVSTCkKLSAgewotICAgIHRoaXMucHVibGlzaFVSTCA9IHB1Ymxpc2hVUkw7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNlY3VyZUlucXVpcnlVUkwoKQotICB7Ci0gICAgcmV0dXJuIHNlY3VyZUlucXVpcnlVUkw7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRTZWN1cmVJbnF1aXJ5VVJMKFN0cmluZyBzZWN1cmVJbnF1aXJ5VVJMKQotICB7Ci0gICAgdGhpcy5zZWN1cmVJbnF1aXJ5VVJMID0gc2VjdXJlSW5xdWlyeVVSTDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VjdXJlUHVibGlzaFVSTCgpCi0gIHsKLSAgICByZXR1cm4gc2VjdXJlUHVibGlzaFVSTDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFNlY3VyZVB1Ymxpc2hVUkwoU3RyaW5nIHNlY3VyZVB1Ymxpc2hVUkwpCi0gIHsKLSAgICB0aGlzLnNlY3VyZVB1Ymxpc2hVUkwgPSBzZWN1cmVQdWJsaXNoVVJMOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRWZXJzaW9uKCkKLSAgewotICAgIHJldHVybiB2ZXJzaW9uOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VmVyc2lvbihTdHJpbmcgdmVyc2lvbikKLSAgewotICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIHJldHVybiBnZXROYW1lKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHJlZnJlc2hNZXRhKCl7Ci0JICAgIAotCSAgICBSZWdpc3RyeVNlcnZpY2UgcmVnU2VydmljZSA9IFJlZ2lzdHJ5U2VydmljZS5pbnN0YW5jZSgpOwotCSAgICBJUmVnaXN0cnlNYW5hZ2VyIHJlZ01hbmFnZXIgPSByZWdTZXJ2aWNlLmdldERlZmF1bHRSZWdpc3RyeU1hbmFnZXIoKTsKLQkgICAgdHJ5Ci0JICAgIHsKLQkgICAgICAKLQkgICAgCQotCSAgICAgIHJlZ01hbmFnZXIucmVmcmVzaE1hbmFnZXIoKTsKLQkgICAgICBTdHJpbmdbXSByZWdVUklzID0gcmVnTWFuYWdlci5nZXRSZWdpc3RyeVVSSXMoKTsKLQkgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlZ1VSSXMubGVuZ3RoOyBpKyspCi0JICAgICAgewotCSAgICAgICAgUmVnaXN0cnkgcmVnID0gcmVnTWFuYWdlci5sb2FkUmVnaXN0cnkocmVnVVJJc1tpXSk7Ci0JICAgICAgICBpZiAocmVnIGluc3RhbmNlb2YgVURESVJlZ2lzdHJ5KQotCSAgICAgICAgewotCSAgICAgICAgICBVRERJUmVnaXN0cnkgdWRkaVJlZyA9IChVRERJUmVnaXN0cnkpcmVnOwotCSAgICAgICAgICBMaXN0IG5hbWVzID0gdWRkaVJlZy5nZXROYW1lKCk7Ci0JICAgICAgICAgIAotCSAgICAgICAgICBpZih1ZGRpUmVnLmdldERpc2NvdmVyeVVSTCgpLmVxdWFscyhnZXRJbnF1aXJ5VVJMKCkpKXsKLQkgICAgICAgICAgCi0JICAgICAgICAJICBzZXROYW1lcyhuYW1lcyk7Ci0JICAgICAgICAJICBzZXREZXNjcyh1ZGRpUmVnLmdldERlc2NyaXB0aW9uKCkpOwotCSAgICAgICAgCSAgc2V0VmVyc2lvbih1ZGRpUmVnLmdldFZlcnNpb24oKSk7Ci0JICAgICAgICAJICBzZXREZWZhdWx0TG9naW4odWRkaVJlZy5nZXREZWZhdWx0TG9naW4oKSk7Ci0JICAgICAgICAJICBzZXREZWZhdWx0UGFzc3dvcmQodWRkaVJlZy5nZXREZWZhdWx0UGFzc3dvcmQoKSk7Ci0JICAgICAgICAJICBzZXRJbnF1aXJ5VVJMKHVkZGlSZWcuZ2V0RGlzY292ZXJ5VVJMKCkpOwotCSAgICAgICAgCSAgc2V0UHVibGlzaFVSTCh1ZGRpUmVnLmdldFB1YmxpY2F0aW9uVVJMKCkpOwotCSAgICAgICAgCSAgc2V0U2VjdXJlSW5xdWlyeVVSTCh1ZGRpUmVnLmdldFNlY3VyZWREaXNjb3ZlcnlVUkwoKSk7Ci0JICAgICAgICAJICBzZXRTZWN1cmVQdWJsaXNoVVJMKHVkZGlSZWcuZ2V0U2VjdXJlZFB1YmxpY2F0aW9uVVJMKCkpOwotCSAgICAgICAgCSAgVGF4b25vbXlbXSB0YXhvbm9taWVzID0gcmVnTWFuYWdlci5sb2FkVGF4b25vbWllcyhVRERJUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCkuZ2V0VGF4b25vbXlVUklzKHVkZGlSZWcpKTsKLQkgICAgICAgIAkgIHNldFRheG9ub21pZXModGF4b25vbWllcyk7Ci0JICAgICAgICAgIH0KLQkgICAgICAgIH0KLQkgICAgICB9Ci0JICAgIH0KLQkgICAgY2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0JICAgIHsKLQkgICAgICAvLyBUT0RPOiBCZXR0ZXIgZXJyb3IgcmVwb3J0aW5nCi0JICAgICAgY2UucHJpbnRTdGFja1RyYWNlKCk7Ci0JICAgIH0gIAotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTFhZDExLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA5MDYgICAxNDE3OTYgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy5GYXZvcml0ZXNNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5OYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5LklSZWdpc3RyeU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5LlJlZ2lzdHJ5U2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuVURESVJlZ2lzdHJ5U2VydmljZTsKLQotLyoqCi0gKiBUaGUgZGF0YSBtb2RlbCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyBhIFdTSUwgZG9jdW1lbnQKLSAqLwotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50IGV4dGVuZHMgRmF2b3JpdGVzRm9sZGVyRWxlbWVudAotewotICBwdWJsaWMgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBOb2RlTWFuYWdlciBub2RlTWFuYWdlcikKLSAgewotICAgIHN1cGVyKG5hbWUsIG1vZGVsLCBub2RlTWFuYWdlcik7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBpbml0KEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50KQotICB7Ci0gICAgcmVmcmVzaCgpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVmcmVzaCgpewotCSAgICBkaXNjb25uZWN0UmVsKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VU0VSX0RFRl9VRERJX1JFR0lTVFJZX05PREUpOwotCSAgICBSZWdpc3RyeVNlcnZpY2UgcmVnU2VydmljZSA9IFJlZ2lzdHJ5U2VydmljZS5pbnN0YW5jZSgpOwotCSAgICBJUmVnaXN0cnlNYW5hZ2VyIHJlZ01hbmFnZXIgPSByZWdTZXJ2aWNlLmdldERlZmF1bHRSZWdpc3RyeU1hbmFnZXIoKTsKLQkgICAgdHJ5Ci0JICAgIHsKLQkgICAgICByZWdNYW5hZ2VyLnJlZnJlc2hNYW5hZ2VyKCk7Ci0JICAgICAgU3RyaW5nW10gcmVnVVJJcyA9IHJlZ01hbmFnZXIuZ2V0UmVnaXN0cnlVUklzKCk7Ci0JICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWdVUklzLmxlbmd0aDsgaSsrKQotCSAgICAgIHsKLQkgICAgICAgIFJlZ2lzdHJ5IHJlZyA9IHJlZ01hbmFnZXIubG9hZFJlZ2lzdHJ5KHJlZ1VSSXNbaV0pOwotCSAgICAgICAgaWYgKHJlZyBpbnN0YW5jZW9mIFVERElSZWdpc3RyeSkKLQkgICAgICAgIHsKLQkgICAgICAgICAgVURESVJlZ2lzdHJ5IHVkZGlSZWcgPSAoVURESVJlZ2lzdHJ5KXJlZzsKLQkgICAgICAgICAgTGlzdCBuYW1lcyA9IHVkZGlSZWcuZ2V0TmFtZSgpOwotCSAgICAgICAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSBuYW1lcyAhPSBudWxsICYmICFuYW1lcy5pc0VtcHR5KCkgPyAoKE5hbWUpbmFtZXMuZ2V0KDApKS5nZXRWYWx1ZSgpIDogIiI7Ci0JICAgICAgICAgIEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlFbGVtZW50IGZhdlVzZXJEZWZVRERJUmVnRWxlbWVudCA9IG5ldyBGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5RWxlbWVudChkaXNwbGF5TmFtZSwgZ2V0TW9kZWwoKSk7Ci0JICAgICAgICAgIGZhdlVzZXJEZWZVRERJUmVnRWxlbWVudC5zZXROYW1lcyhuYW1lcyk7Ci0JICAgICAgICAgIGZhdlVzZXJEZWZVRERJUmVnRWxlbWVudC5zZXREZXNjcyh1ZGRpUmVnLmdldERlc2NyaXB0aW9uKCkpOwotCSAgICAgICAgICBmYXZVc2VyRGVmVURESVJlZ0VsZW1lbnQuc2V0VmVyc2lvbih1ZGRpUmVnLmdldFZlcnNpb24oKSk7Ci0JICAgICAgICAgIGZhdlVzZXJEZWZVRERJUmVnRWxlbWVudC5zZXREZWZhdWx0TG9naW4odWRkaVJlZy5nZXREZWZhdWx0TG9naW4oKSk7Ci0JICAgICAgICAgIGZhdlVzZXJEZWZVRERJUmVnRWxlbWVudC5zZXREZWZhdWx0UGFzc3dvcmQodWRkaVJlZy5nZXREZWZhdWx0UGFzc3dvcmQoKSk7Ci0JICAgICAgICAgIGZhdlVzZXJEZWZVRERJUmVnRWxlbWVudC5zZXRJbnF1aXJ5VVJMKHVkZGlSZWcuZ2V0RGlzY292ZXJ5VVJMKCkpOwotCSAgICAgICAgICBmYXZVc2VyRGVmVURESVJlZ0VsZW1lbnQuc2V0UHVibGlzaFVSTCh1ZGRpUmVnLmdldFB1YmxpY2F0aW9uVVJMKCkpOwotCSAgICAgICAgICBmYXZVc2VyRGVmVURESVJlZ0VsZW1lbnQuc2V0U2VjdXJlSW5xdWlyeVVSTCh1ZGRpUmVnLmdldFNlY3VyZWREaXNjb3ZlcnlVUkwoKSk7Ci0JICAgICAgICAgIGZhdlVzZXJEZWZVRERJUmVnRWxlbWVudC5zZXRTZWN1cmVQdWJsaXNoVVJMKHVkZGlSZWcuZ2V0U2VjdXJlZFB1YmxpY2F0aW9uVVJMKCkpOwotCSAgICAgICAgICBUYXhvbm9teVtdIHRheG9ub21pZXMgPSByZWdNYW5hZ2VyLmxvYWRUYXhvbm9taWVzKFVERElSZWdpc3RyeVNlcnZpY2UuaW5zdGFuY2UoKS5nZXRUYXhvbm9teVVSSXModWRkaVJlZykpOwotCSAgICAgICAgICBmYXZVc2VyRGVmVURESVJlZ0VsZW1lbnQuc2V0VGF4b25vbWllcyh0YXhvbm9taWVzKTsKLQkgICAgICAgICAgY29ubmVjdChmYXZVc2VyRGVmVURESVJlZ0VsZW1lbnQsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VU0VSX0RFRl9VRERJX1JFR0lTVFJZX05PREUsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0JICAgICAgICB9Ci0JICAgICAgfQotCSAgICB9Ci0JICAgIGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKQotCSAgICB7Ci0JICAgICAgLy8gVE9ETzogQmV0dGVyIGVycm9yIHJlcG9ydGluZwotCSAgICAgIGNlLnByaW50U3RhY2tUcmFjZSgpOwotCSAgICB9ICAKLSAgfQotICAKLSAgCi0gIHB1YmxpYyBib29sZWFuIGFkZEZhdm9yaXRlKEhhc2h0YWJsZSB0YWJsZSkKLSAgewotICAgIC8vIGRvIG5vdGhpbmcKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGZhdm9yaXRlRXhpc3RzKEhhc2h0YWJsZSB0YWJsZSkKLSAgewotICAgIC8vIGRvIG5vdGhpbmcKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJlbW92ZUZhdm9yaXRlQnlOb2RlSUQoaW50IG5vZGVJRCwgU3RyaW5nIHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5KQotICB7Ci0gICAgLy8gZG8gbm90aGluZwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcmVtb3ZlQWxsRmF2b3JpdGVzKFN0cmluZyBwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSkKLSAgewotICAgIC8vIGRvIG5vdGhpbmcKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRBbGxGYXZvcml0ZXMoKQotICB7Ci0gICAgIHJldHVybiBnZXRFbGVtZW50cyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVVNFUl9ERUZfVURESV9SRUdJU1RSWV9OT0RFKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1dTRExTZXJ2aWNlRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1dTRExTZXJ2aWNlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjJiYjZiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsOwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmZhdm9yaXRlcy5GYXZvcml0ZXNXU0RMOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50IGV4dGVuZHMgRmF2b3JpdGVzRWxlbWVudCB7Ci0KLSAgcHJpdmF0ZSBGYXZvcml0ZXNXU0RMIHdzZGxfOwotCi0gIHB1YmxpYyBGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBTZXJ2aWNlIHNlcnZpY2UpIHsKLSAgICBzdXBlcihuYW1lLCBtb2RlbCk7Ci0gICAgd3NkbF8gPSBuZXcgRmF2b3JpdGVzV1NETCgpOwotICAgIHdzZGxfLnNldFNlcnZpY2Uoc2VydmljZSk7Ci0gIH0KLQotICBwdWJsaWMgU2VydmljZSBnZXRTZXJ2aWNlKCkgewotICAgIHJldHVybiB3c2RsXy5nZXRTZXJ2aWNlKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdzZGxVcmwoKSB7Ci0gICAgcmV0dXJuIHdzZGxfLmdldFdzZGxVcmwoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgcmV0dXJuIGdldFdzZGxVcmwoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1dTRExTZXJ2aWNlRm9sZGVyRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1dTRExTZXJ2aWNlRm9sZGVyRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjgzZjQ1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNXU0RMU2VydmljZUZvbGRlckVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1dTRExTZXJ2aWNlRm9sZGVyRWxlbWVudCBleHRlbmRzIEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQKLXsKLQotICBwdWJsaWMgRmF2b3JpdGVzV1NETFNlcnZpY2VGb2xkZXJFbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIpIHsKLSAgICBzdXBlcihuYW1lLCBtb2RlbCwgbm9kZU1hbmFnZXIpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaW5pdChGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCkgewotICAgIFNlcnZpY2VbXSBzZXJ2aWNlcyA9IGZhdk1haW5FbGVtZW50LmxvYWRXU0RMU2VydmljZXMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZpY2VzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBTZXJ2aWNlIHNlcnZpY2UgPSBzZXJ2aWNlc1tpXTsKLSAgICAgIEZhdm9yaXRlc1dTRExTZXJ2aWNlRWxlbWVudCBmYXZXU0RMU2VydmljZUVsZW1lbnQgPSBuZXcgRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50KChzZXJ2aWNlLmdldERlc2NyaXB0aW9ucygpKVswXS5nZXRMb2NhdGlvbigpLCBnZXRNb2RlbCgpLCBzZXJ2aWNlKTsKLSAgICAgIGNvbm5lY3QoZmF2V1NETFNlcnZpY2VFbGVtZW50LCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NETF9TRVJWSUNFX05PREUsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gYWRkRmF2b3JpdGUoSGFzaHRhYmxlIHRhYmxlKSB7Ci0gICAgU3RyaW5nIHdzZGxVUkwgPSAoU3RyaW5nKXRhYmxlLmdldChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1dTRExfVVJMKTsKLSAgICBpZiAod3NkbFVSTCA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZhdm9yaXRlc1dTRExTZXJ2aWNlRWxlbWVudCBlID0gZ2V0RmF2b3JpdGUod3NkbFVSTCk7Ci0gICAgaWYgKGUgIT0gbnVsbCkKLSAgICAgIHJlbW92ZUZhdm9yaXRlKGUpOwotICAgIEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50ID0gZ2V0RmF2b3JpdGVzTWFpbkVsZW1lbnQoKTsKLSAgICBTZXJ2aWNlIHNlcnZpY2UgPSBmYXZNYWluRWxlbWVudC5hZGRXU0RMU2VydmljZSh3c2RsVVJMKTsKLSAgICBib29sZWFuIHNhdmVkID0gZmF2TWFpbkVsZW1lbnQuc2F2ZUZhdm9yaXRlcygpOwotICAgIGlmIChzYXZlZCkgewotICAgICAgRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50IGZhdldTRExTZXJ2aWNlRWxlbWVudCA9IG5ldyBGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQod3NkbFVSTCwgZ2V0TW9kZWwoKSwgc2VydmljZSk7Ci0gICAgICBjb25uZWN0KGZhdldTRExTZXJ2aWNlRWxlbWVudCwgRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1dTRExfU0VSVklDRV9OT0RFLCBNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgIH0KLSAgICByZXR1cm4gc2F2ZWQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBmYXZvcml0ZUV4aXN0cyhIYXNodGFibGUgdGFibGUpIHsKLSAgICBTdHJpbmcgd3NkbFVSTCA9IChTdHJpbmcpdGFibGUuZ2V0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfV1NETF9VUkwpOwotICAgIGlmICh3c2RsVVJMID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIChnZXRGYXZvcml0ZSh3c2RsVVJMKSAhPSBudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJlbW92ZUZhdm9yaXRlQnlOb2RlSUQoaW50IG5vZGVJRCxTdHJpbmcgcGx1Z2luTWV0YWRhdGFEaXJlY3RvcnkpIHsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJRCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpOwotICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQpCi0gICAgICByZXR1cm4gKHJlbW92ZUZhdm9yaXRlKChGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50KSAmJiBmYXZNYWluRWxlbWVudC5zYXZlRmF2b3JpdGVzKCkpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIHJlbW92ZUZhdm9yaXRlKEZhdm9yaXRlc1dTRExTZXJ2aWNlRWxlbWVudCBlbGVtZW50KSB7Ci0gICAgU2VydmljZSBzZXJ2aWNlID0gKChGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQpZWxlbWVudCkuZ2V0U2VydmljZSgpOwotICAgIEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50ID0gZ2V0RmF2b3JpdGVzTWFpbkVsZW1lbnQoKTsKLSAgICBpZiAoZmF2TWFpbkVsZW1lbnQucmVtb3ZlU2VydmljZShzZXJ2aWNlKSkgewotICAgICAgZWxlbWVudC5kaXNjb25uZWN0QWxsKCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcmVtb3ZlQWxsRmF2b3JpdGVzKFN0cmluZyBwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSkgewotICAgIEZhdm9yaXRlc01haW5FbGVtZW50IGZhdk1haW5FbGVtZW50ID0gZ2V0RmF2b3JpdGVzTWFpbkVsZW1lbnQoKTsKLSAgICBFbnVtZXJhdGlvbiBlID0gZ2V0QWxsRmF2b3JpdGVzKCk7Ci0gICAgd2hpbGUoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50IGZhdldTRExTZXJ2aWNlRWxlbWVudCA9IChGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgU2VydmljZSBzZXJ2aWNlID0gZmF2V1NETFNlcnZpY2VFbGVtZW50LmdldFNlcnZpY2UoKTsKLSAgICAgIGZhdk1haW5FbGVtZW50LnJlbW92ZVNlcnZpY2Uoc2VydmljZSk7Ci0gICAgfQotICAgIGRpc2Nvbm5lY3RSZWwoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1dTRExfU0VSVklDRV9OT0RFKTsKLSAgICByZXR1cm4gZmF2TWFpbkVsZW1lbnQuc2F2ZUZhdm9yaXRlcygpOwotICB9Ci0KLSAgcHVibGljIEVudW1lcmF0aW9uIGdldEFsbEZhdm9yaXRlcygpIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1dTRExfU0VSVklDRV9OT0RFKTsKLSAgfQotCi0gIHByaXZhdGUgRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50IGdldEZhdm9yaXRlKFN0cmluZyB3c2RsVXJsKSB7Ci0gICAgRW51bWVyYXRpb24gZSA9IGdldEFsbEZhdm9yaXRlcygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICBGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQgd3NkbEVsZW1lbnQgPSAoRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIGlmICh3c2RsVXJsLmVxdWFscyh3c2RsRWxlbWVudC5nZXRXc2RsVXJsKCkpKQotICAgICAgICByZXR1cm4gd3NkbEVsZW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzV1NJTEVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNXU0lMRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODBiNjA3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL2RhdGFtb2RlbC9GYXZvcml0ZXNXU0lMRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWw7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuTGluazsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzLkZhdm9yaXRlc1dTSUw7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNXU0lMRWxlbWVudCBleHRlbmRzIEZhdm9yaXRlc0VsZW1lbnQgewotCi0gIHByaXZhdGUgRmF2b3JpdGVzV1NJTCB3c2lsXzsKLQotICBwdWJsaWMgRmF2b3JpdGVzV1NJTEVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBMaW5rIGxpbmspIHsKLSAgICBzdXBlcihuYW1lLCBtb2RlbCk7Ci0gICAgd3NpbF8gPSBuZXcgRmF2b3JpdGVzV1NJTCgpOwotICAgIHdzaWxfLnNldExpbmsobGluayk7Ci0gIH0KLQotICBwdWJsaWMgTGluayBnZXRMaW5rKCkgewotICAgIHJldHVybiB3c2lsXy5nZXRMaW5rKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdzaWxVcmwoKSB7Ci0gICAgcmV0dXJuIHdzaWxfLmdldFdzaWxVcmwoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgcmV0dXJuIGdldFdzaWxVcmwoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvZGF0YW1vZGVsL0Zhdm9yaXRlc1dTSUxGb2xkZXJFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzV1NJTEZvbGRlckVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVhNDkzMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9kYXRhbW9kZWwvRmF2b3JpdGVzV1NJTEZvbGRlckVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5MaW5rOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1dTSUxGb2xkZXJFbGVtZW50IGV4dGVuZHMgRmF2b3JpdGVzRm9sZGVyRWxlbWVudCB7Ci0KLSAgcHVibGljIEZhdm9yaXRlc1dTSUxGb2xkZXJFbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIpIHsKLSAgICBzdXBlcihuYW1lLCBtb2RlbCwgbm9kZU1hbmFnZXIpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaW5pdChGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCkgewotICAgIExpbmtbXSBsaW5rcyA9IGZhdk1haW5FbGVtZW50LmxvYWRXU0lMcygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspIHsKLSAgICAgIExpbmsgbGluayA9IGxpbmtzW2ldOwotICAgICAgRmF2b3JpdGVzV1NJTEVsZW1lbnQgZmF2V1NJTEVsZW1lbnQgPSBuZXcgRmF2b3JpdGVzV1NJTEVsZW1lbnQobGluay5nZXRMb2NhdGlvbigpLCBnZXRNb2RlbCgpLCBsaW5rKTsKLSAgICAgIGNvbm5lY3QoZmF2V1NJTEVsZW1lbnQsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9XU0lMX05PREUsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gYWRkRmF2b3JpdGUoSGFzaHRhYmxlIHRhYmxlKSB7Ci0gICAgU3RyaW5nIHdzaWxVUkwgPSAoU3RyaW5nKXRhYmxlLmdldChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1dTSUxfVVJMKTsKLSAgICBpZiAod3NpbFVSTCA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZhdm9yaXRlc1dTSUxFbGVtZW50IGUgPSBnZXRGYXZvcml0ZSh3c2lsVVJMKTsKLSAgICBpZiAoZSAhPSBudWxsKQotICAgICAgcmVtb3ZlRmF2b3JpdGUoZSk7Ci0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpOwotICAgIExpbmsgbGluayA9IGZhdk1haW5FbGVtZW50LmFkZFdTSUxMaW5rKHdzaWxVUkwpOwotICAgIGJvb2xlYW4gc2F2ZWQgPSBmYXZNYWluRWxlbWVudC5zYXZlRmF2b3JpdGVzKCk7Ci0gICAgaWYgKHNhdmVkKSB7Ci0gICAgICBGYXZvcml0ZXNXU0lMRWxlbWVudCBmYXZXU0lMRWxlbWVudCA9IG5ldyBGYXZvcml0ZXNXU0lMRWxlbWVudCh3c2lsVVJMLCBnZXRNb2RlbCgpLCBsaW5rKTsKLSAgICAgIGNvbm5lY3QoZmF2V1NJTEVsZW1lbnQsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9XU0lMX05PREUsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgfQotICAgIHJldHVybiBzYXZlZDsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGZhdm9yaXRlRXhpc3RzKEhhc2h0YWJsZSB0YWJsZSkgewotICAgIFN0cmluZyB3c2lsVVJMID0gKFN0cmluZyl0YWJsZS5nZXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9XU0lMX1VSTCk7Ci0gICAgaWYgKHdzaWxVUkwgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gKGdldEZhdm9yaXRlKHdzaWxVUkwpICE9IG51bGwpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcmVtb3ZlRmF2b3JpdGVCeU5vZGVJRChpbnQgbm9kZUlELFN0cmluZyBwbHVnaW5NZXRhZGF0YURpcmVjdG9yeSkgewotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlEKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZNYWluRWxlbWVudCA9IGdldEZhdm9yaXRlc01haW5FbGVtZW50KCk7Ci0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc1dTSUxFbGVtZW50KQotICAgICAgcmV0dXJuIChyZW1vdmVGYXZvcml0ZSgoRmF2b3JpdGVzV1NJTEVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50KSAmJiBmYXZNYWluRWxlbWVudC5zYXZlRmF2b3JpdGVzKCkpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiByZW1vdmVGYXZvcml0ZShGYXZvcml0ZXNXU0lMRWxlbWVudCBlbGVtZW50KSB7Ci0gICAgTGluayBsaW5rID0gZWxlbWVudC5nZXRMaW5rKCk7Ci0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpOwotICAgIGlmIChmYXZNYWluRWxlbWVudC5yZW1vdmVMaW5rKGxpbmspKSB7Ci0gICAgICBlbGVtZW50LmRpc2Nvbm5lY3RBbGwoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZW1vdmVBbGxGYXZvcml0ZXMoU3RyaW5nIHBsdWdpbk1ldGFkYXRhRGlyZWN0b3J5KSB7Ci0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSBnZXRGYXZvcml0ZXNNYWluRWxlbWVudCgpOwotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRBbGxGYXZvcml0ZXMoKTsKLSAgICB3aGlsZShlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICBGYXZvcml0ZXNXU0lMRWxlbWVudCBmYXZXU0lMRWxlbWVudCA9IChGYXZvcml0ZXNXU0lMRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgICBMaW5rIGxpbmsgPSBmYXZXU0lMRWxlbWVudC5nZXRMaW5rKCk7Ci0gICAgICBmYXZNYWluRWxlbWVudC5yZW1vdmVMaW5rKGxpbmspOwotICAgIH0KLSAgICBkaXNjb25uZWN0UmVsKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9XU0lMX05PREUpOwotICAgIHJldHVybiBmYXZNYWluRWxlbWVudC5zYXZlRmF2b3JpdGVzKCk7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0QWxsRmF2b3JpdGVzKCkgewotICAgIHJldHVybiBnZXRFbGVtZW50cyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NJTF9OT0RFKTsKLSAgfQotCi0gIHByaXZhdGUgRmF2b3JpdGVzV1NJTEVsZW1lbnQgZ2V0RmF2b3JpdGUoU3RyaW5nIHdzaWxVcmwpIHsKLSAgICBFbnVtZXJhdGlvbiBlID0gZ2V0QWxsRmF2b3JpdGVzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgIEZhdm9yaXRlc1dTSUxFbGVtZW50IHdzaWxFbGVtZW50ID0gKEZhdm9yaXRlc1dTSUxFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIGlmICh3c2lsVXJsLmVxdWFscyh3c2lsRWxlbWVudC5nZXRXc2lsVXJsKCkpKQotICAgICAgICByZXR1cm4gd3NpbEVsZW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9BZGRUb1VERElQZXJzcGVjdGl2ZVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0FkZFRvVURESVBlcnNwZWN0aXZlVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGExNzk3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0FkZFRvVURESVBlcnNwZWN0aXZlVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5BZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQWN0aW9uVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBBZGRUb1VERElQZXJzcGVjdGl2ZVRvb2wgZXh0ZW5kcyBBY3Rpb25Ub29sIHsKLQotICAgIHB1YmxpYyBBZGRUb1VERElQZXJzcGVjdGl2ZVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJmYXZvcml0ZXMvaW1hZ2VzL2FkZF90b191ZGRpX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmIiwgImZhdm9yaXRlcy9pbWFnZXMvYWRkX3RvX3VkZGlfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9BZGRXU0lMVG9XU0lMUGVyc3BlY3RpdmVUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9BZGRXU0lMVG9XU0lMUGVyc3BlY3RpdmVUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNDgxMmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvQWRkV1NJTFRvV1NJTFBlcnNwZWN0aXZlVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5BZGRXU0lMVG9XU0lMUGVyc3BlY3RpdmVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLlNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkFjdGlvblRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgQWRkV1NJTFRvV1NJTFBlcnNwZWN0aXZlVG9vbCBleHRlbmRzIEFjdGlvblRvb2wgewotCi0gICAgcHVibGljIEFkZFdTSUxUb1dTSUxQZXJzcGVjdGl2ZVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJmYXZvcml0ZXMvaW1hZ2VzL2FkZF90b193c2lsX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmIiwgImZhdm9yaXRlcy9pbWFnZXMvYWRkX3RvX3dzaWxfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gQWRkV1NJTFRvV1NJTFBlcnNwZWN0aXZlQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCkpOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzQWRkVG9XU0RMUGVyc3BlY3RpdmVUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEwMGZhYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuRmF2b3JpdGVzQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLlNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkFkZFRvV1NETFBlcnNwZWN0aXZlVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wgZXh0ZW5kcyBBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wgewotCi0gIHB1YmxpYyBGYXZvcml0ZXNBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICBzdXBlcih0b29sTWFuYWdlcixhbHQpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgcmV0dXJuIFNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBGYXZvcml0ZXNBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzSW1wb3J0VG9GaWxlU3lzdGVtVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzSW1wb3J0VG9GaWxlU3lzdGVtVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzExMGM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc0ltcG9ydFRvRmlsZVN5c3RlbVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5JbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLlNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkltcG9ydFRvRmlsZVN5c3RlbVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzSW1wb3J0VG9GaWxlU3lzdGVtVG9vbCBleHRlbmRzIEltcG9ydFRvRmlsZVN5c3RlbVRvb2wgewotCi0gICAgcHVibGljIEZhdm9yaXRlc0ltcG9ydFRvRmlsZVN5c3RlbVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIEltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCJmYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb25KU1AuanNwIik7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNJbXBvcnRUb1dvcmtiZW5jaFRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc0ltcG9ydFRvV29ya2JlbmNoVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2FjOGYwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc0ltcG9ydFRvV29ya2JlbmNoVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5JbXBvcnRUb1dvcmtiZW5jaFRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzSW1wb3J0VG9Xb3JrYmVuY2hUb29sIGV4dGVuZHMgSW1wb3J0VG9Xb3JrYmVuY2hUb29sIHsKLQotICAgIHB1YmxpYyBGYXZvcml0ZXNJbXBvcnRUb1dvcmtiZW5jaFRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEZvcm1MaW5rKCkKLSAgICB7Ci0gICAgICByZXR1cm4gImZhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNJbXBvcnRUb1dvcmtiZW5jaEZvcm0uanNwIjsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE5YjM1OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbCBleHRlbmRzIExhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sIHsKLQotICAgIHB1YmxpYyBGYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0Rm9ybUxpbmsoKQotICAgIHsKLSAgICAgIHJldHVybiAiZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc0xhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCI7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzTWFpbk5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc01haW5Ob2RlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NjAxMDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzTWFpbk5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLk1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuRmF2b3JpdGVzTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzTWFpbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc1VERElTZXJ2aWNlRm9sZGVyRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC5GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUZvbGRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzV1NETFNlcnZpY2VGb2xkZXJFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc1dTSUxGb2xkZXJFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc01haW5Ob2RlIGV4dGVuZHMgRmF2b3JpdGVzTmF2aWdhdG9yTm9kZSB7Ci0gICAgcHVibGljIEZhdm9yaXRlc01haW5Ob2RlKFRyZWVFbGVtZW50IHRyZWVFbGVtZW50LCBOb2RlTWFuYWdlciBub2RlTWFuYWdlcikgewotICAgICAgICBzdXBlcih0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXIsIDEsICJpbWFnZXMvcm9vdF9tYWluLmdpZiIpOwotCi0gICAgICAgIC8vIENyZWF0ZSBVRERJIFJlZ2lzdHJ5IEZvbGRlciBOb2RlCi0gICAgICAgIEZhdm9yaXRlc1VERElSZWdpc3RyeUZvbGRlckVsZW1lbnQgZmF2VURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudCA9IG5ldyBGYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50KGdldE1lc3NhZ2UoIkZBVk9SSVRFU19VRERJX1JFR0lTVFJJRVNfRk9MREVSX05PREUiKSwgdHJlZUVsZW1lbnQuZ2V0TW9kZWwoKSwgbm9kZU1hbmFnZXIpOwotICAgICAgICB0cmVlRWxlbWVudC5jb25uZWN0KGZhdlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1JFR0lTVFJZX0ZPTERFUl9OT0RFLCBNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgICAgICBGYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJOb2RlIGZhdlVERElSZWdpc3RyeUZvbGRlck5vZGUgPSBuZXcgRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyTm9kZShmYXZVRERJUmVnaXN0cnlGb2xkZXJFbGVtZW50LCBub2RlTWFuYWdlciwgbm9kZURlcHRoXyArIDEpOwotICAgICAgICBhZGRDaGlsZChmYXZVRERJUmVnaXN0cnlGb2xkZXJOb2RlKTsKLSAgICAgICAgZmF2VURESVJlZ2lzdHJ5Rm9sZGVyTm9kZS5zZXRWaXNpYmlsaXR5T2ZDaGlsZHJlbihmYWxzZSk7Ci0gICAgICAgIGZhdlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQuaW5pdCgoRmF2b3JpdGVzTWFpbkVsZW1lbnQpdHJlZUVsZW1lbnQpOwotCi0gICAgICAgIC8vIENyZWF0ZSBVc2VyIGRlZmluZWQgVURESSBSZWdpc3RyeSBGb2xkZXIgTm9kZQotICAgICAgICBGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudCBmYXZVc2VyRGVmVURESUZvbGRlckVsZW1lbnQgPSBuZXcgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQoZ2V0TWVzc2FnZSgiRkFWT1JJVEVTX1VTRVJfREVGX1VERElfUkVHSVNUUklFU19GT0xERVJfTk9ERSIpLCB0cmVlRWxlbWVudC5nZXRNb2RlbCgpLCBub2RlTWFuYWdlcik7Ci0gICAgICAgIHRyZWVFbGVtZW50LmNvbm5lY3QoZmF2VXNlckRlZlVERElGb2xkZXJFbGVtZW50LCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVVNFUl9ERUZfVURESV9SRUdJU1RSWV9GT0xERVJfTk9ERSwgTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICAgICAgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlck5vZGUgZmF2VXNlckRlZlVERElGb2xkZXJOb2RlID0gbmV3IEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlGb2xkZXJOb2RlKGZhdlVzZXJEZWZVRERJRm9sZGVyRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aF8gKyAxKTsKLSAgICAgICAgYWRkQ2hpbGQoZmF2VXNlckRlZlVERElGb2xkZXJOb2RlKTsKLSAgICAgICAgZmF2VXNlckRlZlVERElGb2xkZXJOb2RlLnNldFZpc2liaWxpdHlPZkNoaWxkcmVuKGZhbHNlKTsKLSAgICAgICAgZmF2VXNlckRlZlVERElGb2xkZXJFbGVtZW50LmluaXQoKEZhdm9yaXRlc01haW5FbGVtZW50KXRyZWVFbGVtZW50KTsKLQotICAgICAgICAvLyBDcmVhdGUgVURESSBCdXNpbmVzcyBGb2xkZXIgTm9kZQotICAgICAgICBGYXZvcml0ZXNVRERJQnVzaW5lc3NGb2xkZXJFbGVtZW50IGZhdlVERElCdXNpbmVzc0ZvbGRlckVsZW1lbnQgPSBuZXcgRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyRWxlbWVudChnZXRNZXNzYWdlKCJGQVZPUklURVNfVURESV9CVVNJTkVTU0VTX0ZPTERFUl9OT0RFIiksIHRyZWVFbGVtZW50LmdldE1vZGVsKCksIG5vZGVNYW5hZ2VyKTsKLSAgICAgICAgdHJlZUVsZW1lbnQuY29ubmVjdChmYXZVRERJQnVzaW5lc3NGb2xkZXJFbGVtZW50LCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9CVVNJTkVTU19GT0xERVJfTk9ERSwgTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICAgICAgRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyTm9kZSBmYXZVRERJQnVzaW5lc3NGb2xkZXJOb2RlID0gbmV3IEZhdm9yaXRlc1VERElCdXNpbmVzc0ZvbGRlck5vZGUoZmF2VURESUJ1c2luZXNzRm9sZGVyRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aF8gKyAxKTsKLSAgICAgICAgYWRkQ2hpbGQoZmF2VURESUJ1c2luZXNzRm9sZGVyTm9kZSk7Ci0gICAgICAgIGZhdlVERElCdXNpbmVzc0ZvbGRlck5vZGUuc2V0VmlzaWJpbGl0eU9mQ2hpbGRyZW4oZmFsc2UpOwotICAgICAgICBmYXZVRERJQnVzaW5lc3NGb2xkZXJFbGVtZW50LmluaXQoKEZhdm9yaXRlc01haW5FbGVtZW50KXRyZWVFbGVtZW50KTsKLQotICAgICAgICAvLyBDcmVhdGUgVURESSBTZXJ2aWNlIEZvbGRlciBOb2RlCi0gICAgICAgIEZhdm9yaXRlc1VERElTZXJ2aWNlRm9sZGVyRWxlbWVudCBmYXZVRERJU2VydmljZUZvbGRlckVsZW1lbnQgPSBuZXcgRmF2b3JpdGVzVURESVNlcnZpY2VGb2xkZXJFbGVtZW50KGdldE1lc3NhZ2UoIkZBVk9SSVRFU19VRERJX1NFUlZJQ0VfRk9MREVSX05PREUiKSwgdHJlZUVsZW1lbnQuZ2V0TW9kZWwoKSwgbm9kZU1hbmFnZXIpOwotICAgICAgICB0cmVlRWxlbWVudC5jb25uZWN0KGZhdlVERElTZXJ2aWNlRm9sZGVyRWxlbWVudCwgRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9GT0xERVJfTk9ERSwgTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICAgICAgRmF2b3JpdGVzVURESVNlcnZpY2VGb2xkZXJOb2RlIGZhdlVERElTZXJ2aWNlRm9sZGVyTm9kZSA9IG5ldyBGYXZvcml0ZXNVRERJU2VydmljZUZvbGRlck5vZGUoZmF2VURESVNlcnZpY2VGb2xkZXJFbGVtZW50LCBub2RlTWFuYWdlciwgbm9kZURlcHRoXyArIDEpOwotICAgICAgICBhZGRDaGlsZChmYXZVRERJU2VydmljZUZvbGRlck5vZGUpOwotICAgICAgICBmYXZVRERJU2VydmljZUZvbGRlck5vZGUuc2V0VmlzaWJpbGl0eU9mQ2hpbGRyZW4oZmFsc2UpOwotICAgICAgICBmYXZVRERJU2VydmljZUZvbGRlckVsZW1lbnQuaW5pdCgoRmF2b3JpdGVzTWFpbkVsZW1lbnQpdHJlZUVsZW1lbnQpOwotCi0gICAgICAgIC8vIENyZWF0ZSBVRERJIFNlcnZpY2UgSW50ZXJmYWNlIEZvbGRlciBOb2RlCi0gICAgICAgIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRm9sZGVyRWxlbWVudCBmYXZVRERJU2VydmljZUludGVyZmFjZUZvbGRlckVsZW1lbnQgPSBuZXcgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VGb2xkZXJFbGVtZW50KGdldE1lc3NhZ2UoIkZBVk9SSVRFU19VRERJX1NFUlZJQ0VfSU5URVJGQUNFU19GT0xERVJfTk9ERSIpLCB0cmVlRWxlbWVudC5nZXRNb2RlbCgpLCBub2RlTWFuYWdlcik7Ci0gICAgICAgIHRyZWVFbGVtZW50LmNvbm5lY3QoZmF2VURESVNlcnZpY2VJbnRlcmZhY2VGb2xkZXJFbGVtZW50LCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9GT0xERVJfTk9ERSwgTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICAgICAgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VGb2xkZXJOb2RlIGZhdlVERElTZXJ2aWNlSW50ZXJmYWNlRm9sZGVyTm9kZSA9IG5ldyBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUZvbGRlck5vZGUoZmF2VURESVNlcnZpY2VJbnRlcmZhY2VGb2xkZXJFbGVtZW50LCBub2RlTWFuYWdlciwgbm9kZURlcHRoXyArIDEpOwotICAgICAgICBhZGRDaGlsZChmYXZVRERJU2VydmljZUludGVyZmFjZUZvbGRlck5vZGUpOwotICAgICAgICBmYXZVRERJU2VydmljZUludGVyZmFjZUZvbGRlck5vZGUuc2V0VmlzaWJpbGl0eU9mQ2hpbGRyZW4oZmFsc2UpOwotICAgICAgICBmYXZVRERJU2VydmljZUludGVyZmFjZUZvbGRlckVsZW1lbnQuaW5pdCgoRmF2b3JpdGVzTWFpbkVsZW1lbnQpdHJlZUVsZW1lbnQpOwotCi0gICAgICAgIC8vIENyZWF0ZSBXU0lMIEZvbGRlciBOb2RlCi0gICAgICAgIEZhdm9yaXRlc1dTSUxGb2xkZXJFbGVtZW50IGZhdldTSUxGb2xkZXJFbGVtZW50ID0gbmV3IEZhdm9yaXRlc1dTSUxGb2xkZXJFbGVtZW50KGdldE1lc3NhZ2UoIkZBVk9SSVRFU19XU0lMX0ZPTERFUl9OT0RFIiksIHRyZWVFbGVtZW50LmdldE1vZGVsKCksIG5vZGVNYW5hZ2VyKTsKLSAgICAgICAgdHJlZUVsZW1lbnQuY29ubmVjdChmYXZXU0lMRm9sZGVyRWxlbWVudCwgRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1dTSUxfRk9MREVSX05PREUsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgICAgIEZhdm9yaXRlc1dTSUxGb2xkZXJOb2RlIGZhdldTSUxGb2xkZXJOb2RlID0gbmV3IEZhdm9yaXRlc1dTSUxGb2xkZXJOb2RlKGZhdldTSUxGb2xkZXJFbGVtZW50LCBub2RlTWFuYWdlciwgbm9kZURlcHRoXyArIDEpOwotICAgICAgICBhZGRDaGlsZChmYXZXU0lMRm9sZGVyTm9kZSk7Ci0gICAgICAgIGZhdldTSUxGb2xkZXJOb2RlLnNldFZpc2liaWxpdHlPZkNoaWxkcmVuKGZhbHNlKTsKLSAgICAgICAgZmF2V1NJTEZvbGRlckVsZW1lbnQuaW5pdCgoRmF2b3JpdGVzTWFpbkVsZW1lbnQpdHJlZUVsZW1lbnQpOwotCi0gICAgICAgIC8vIENyZWF0ZSBXU0RMIFNlcnZpY2UgRm9sZGVyIE5vZGUKLSAgICAgICAgRmF2b3JpdGVzV1NETFNlcnZpY2VGb2xkZXJFbGVtZW50IGZhdldTRExTZXJ2aWNlRm9sZGVyRWxlbWVudCA9IG5ldyBGYXZvcml0ZXNXU0RMU2VydmljZUZvbGRlckVsZW1lbnQoZ2V0TWVzc2FnZSgiRkFWT1JJVEVTX1dTRExfU0VSVklDRV9GT0xERVJfTk9ERSIpLCB0cmVlRWxlbWVudC5nZXRNb2RlbCgpLCBub2RlTWFuYWdlcik7Ci0gICAgICAgIHRyZWVFbGVtZW50LmNvbm5lY3QoZmF2V1NETFNlcnZpY2VGb2xkZXJFbGVtZW50LCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NETF9TRVJWSUNFX0ZPTERFUl9OT0RFLCBNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgICAgICBGYXZvcml0ZXNXU0RMU2VydmljZUZvbGRlck5vZGUgZmF2V1NETFNlcnZpY2VGb2xkZXJOb2RlID0gbmV3IEZhdm9yaXRlc1dTRExTZXJ2aWNlRm9sZGVyTm9kZShmYXZXU0RMU2VydmljZUZvbGRlckVsZW1lbnQsIG5vZGVNYW5hZ2VyLCBub2RlRGVwdGhfICsgMSk7Ci0gICAgICAgIGFkZENoaWxkKGZhdldTRExTZXJ2aWNlRm9sZGVyTm9kZSk7Ci0gICAgICAgIGZhdldTRExTZXJ2aWNlRm9sZGVyTm9kZS5zZXRWaXNpYmlsaXR5T2ZDaGlsZHJlbihmYWxzZSk7Ci0gICAgICAgIGZhdldTRExTZXJ2aWNlRm9sZGVyRWxlbWVudC5pbml0KChGYXZvcml0ZXNNYWluRWxlbWVudCl0cmVlRWxlbWVudCk7Ci0KLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBpbml0VG9vbHMoKSB7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBTdHJpbmcgZ2V0TWVzc2FnZShTdHJpbmcgbXNnKSB7Ci0gICAgICAgIENvbnRyb2xsZXIgY29udHJvbGxlciA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCk7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICByZXR1cm4gZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZShtc2cpOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzTmF2aWdhdG9yRm9sZGVyTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzTmF2aWdhdG9yRm9sZGVyTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzVkMGFjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc05hdmlnYXRvckZvbGRlck5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5GYXZvcml0ZXNUb2dnbGVOb2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb2xkZXJOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEZhdm9yaXRlc05hdmlnYXRvckZvbGRlck5vZGUgZXh0ZW5kcyBGb2xkZXJOb2RlIHsKLQotICAgIHB1YmxpYyBGYXZvcml0ZXNOYXZpZ2F0b3JGb2xkZXJOb2RlKFRyZWVFbGVtZW50IHRyZWVFbGVtZW50LCBOb2RlTWFuYWdlciBub2RlTWFuYWdlciwgaW50IG5vZGVEZXB0aCkgewotICAgICAgICBzdXBlcih0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aCk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIFN0cmluZyBnZXRUb2dnbGVOb2RlQWN0aW9uSHJlZigpIHsKLSAgICAgICAgcmV0dXJuIEZhdm9yaXRlc1RvZ2dsZU5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWRfLGlzT3Blbl8pOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0TGlua0FjdGlvbkhyZWYoKSB7Ci0gICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkXywgZmFsc2UpOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzTmF2aWdhdG9yTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzTmF2aWdhdG9yTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjg3ZDY2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc05hdmlnYXRvck5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5GYXZvcml0ZXNUb2dnbGVOb2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEZhdm9yaXRlc05hdmlnYXRvck5vZGUgZXh0ZW5kcyBOb2RlIHsKLQotICAgIHB1YmxpYyBGYXZvcml0ZXNOYXZpZ2F0b3JOb2RlKFRyZWVFbGVtZW50IHRyZWVFbGVtZW50LCBOb2RlTWFuYWdlciBub2RlTWFuYWdlciwgaW50IG5vZGVEZXB0aCwgU3RyaW5nIGltYWdlUGF0aCkgewotICAgICAgICBzdXBlcih0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aCwgaW1hZ2VQYXRoKTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgU3RyaW5nIGdldFRvZ2dsZU5vZGVBY3Rpb25IcmVmKCkgewotICAgICAgICByZXR1cm4gRmF2b3JpdGVzVG9nZ2xlTm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGVJZF8saXNPcGVuXyk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIFN0cmluZyBnZXRMaW5rQWN0aW9uSHJlZigpIHsKLSAgICAgICAgcmV0dXJuIFNlbGVjdEZhdm9yaXRlc05vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWRfLCBmYWxzZSk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNQZXJzcGVjdGl2ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzUGVyc3BlY3RpdmUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU0OThmOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNQZXJzcGVjdGl2ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuQmFzaWNNb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU3dpdGNoUGVyc3BlY3RpdmVGcm9tRmF2b3JpdGVzQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc01haW5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHM7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBleHRlbmRzIFBlcnNwZWN0aXZlCi17Ci0gICAgcHJpdmF0ZSBCYXNpY01vZGVsIG1vZGVsXzsKLSAgICBwcml2YXRlIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyXzsKLSAgICBwcml2YXRlIFN0cmluZyBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfOwotICAgIHByaXZhdGUgU3RyaW5nIHNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXzsKLSAgICBwcml2YXRlIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzXzsKLSAgICBwcml2YXRlIFN0cmluZyBzYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotCi0gICAgcHVibGljIEZhdm9yaXRlc1BlcnNwZWN0aXZlKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgICB7Ci0gICAgICAgIHN1cGVyKCJmYXZvcml0ZXMiLGNvbnRyb2xsZXIpOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCB2b2lkIGluaXRQZXJzcGVjdGl2ZShTZXJ2bGV0Q29udGV4dCBhcHBsaWNhdGlvbikKLSAgICB7Ci0gICAgICAgIG1vZGVsXyA9IG5ldyBCYXNpY01vZGVsKCJGYXZvcml0ZXNNb2RlbCIpOwotICAgICAgICBGYXZvcml0ZXNNYWluRWxlbWVudCBmYXZvcml0ZXNNYWluRWxlbWVudCA9IG5ldyBGYXZvcml0ZXNNYWluRWxlbWVudChnZXRNZXNzYWdlKCJGQVZPUklURVNfTUFJTl9OT0RFIiksIG1vZGVsXywgY29udHJvbGxlcl8pOwotICAgICAgICBtb2RlbF8uc2V0Um9vdEVsZW1lbnQoZmF2b3JpdGVzTWFpbkVsZW1lbnQpOwotICAgICAgICBub2RlTWFuYWdlcl8gPSBuZXcgTm9kZU1hbmFnZXIoY29udHJvbGxlcl8pOwotICAgICAgICBGYXZvcml0ZXNNYWluTm9kZSBmYXZNYWluTm9kZSA9IG5ldyBGYXZvcml0ZXNNYWluTm9kZShmYXZvcml0ZXNNYWluRWxlbWVudCwgbm9kZU1hbmFnZXJfKTsKLSAgICAgICAgbm9kZU1hbmFnZXJfLnNldFJvb3ROb2RlKGZhdk1haW5Ob2RlKTsKLSAgICAgICAgCi0gICAgICAgIC8vIFN0YXJ0aW5nIGZyYW1lc2V0IHNpemVzLgotICAgICAgICBpZiAoIURpclV0aWxzLmlzUlRMKCkpCi0gICAgICAgICAgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9ICIzMCUsKiI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfID0gIiosMzAlIjsKLSAgICAgICAgc2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfID0gcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXzsKLSAgICAgICAgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c18gPSAiNzUlLCoiOwotICAgICAgICBzYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfID0gYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c187ICAgICAgICAKLSAgICB9Ci0KLSAgICBwdWJsaWMgTm9kZU1hbmFnZXIgZ2V0Tm9kZU1hbmFnZXIoKSB7Ci0gICAgICAgIHJldHVybiBub2RlTWFuYWdlcl87Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRQZXJzcGVjdGl2ZUNvbnRlbnRQYWdlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAiZmF2b3JpdGVzL2Zhdl9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcCI7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRQZXJzcGVjdGl2ZUlkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfRkFWT1JJVEVTOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGFuZXNGaWxlKCkgewotICAgICAgICByZXR1cm4gImZhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc1BhbmVzLmpzcCI7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJvY2Vzc0ZyYW1lc2V0c0Zvcm0oKQotICAgIHsKLSAgICAgIHJldHVybiAiZmF2b3JpdGVzL2Zvcm1zL1Byb2Nlc3NGYXZvcml0ZXNGcmFtZXNldHNGb3JtLmpzcCI7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBTdHJpbmcgZ2V0RnJhbWVzZXRzRmlsZSgpCi0gICAgewotICAgICAgcmV0dXJuICJmYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNmcmFtZXNldHMuanNwIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFRyZWVDb250ZW50VmFyKCkgewotICAgICAgICByZXR1cm4gImZhdk5hdmlnYXRvckNvbnRlbnQiOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkgewotICAgICAgICByZXR1cm4gImZhdm9yaXRlcy9mYXZfbmF2aWdhdG9yX2NvbnRlbnQuanNwIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJWYXIoKSB7Ci0gICAgICAgIHJldHVybiAiZmF2UHJvcGVydGllc0NvbnRhaW5lciI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpIHsKLSAgICAgICAgcmV0dXJuICJmYXZvcml0ZXMvZmF2X3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTdGF0dXNDb250ZW50VmFyKCkgewotICAgICAgICByZXR1cm4gImZhdlN0YXR1c0NvbnRlbnQiOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKSB7Ci0gICAgICAgIHJldHVybiAiZmF2b3JpdGVzL2Zhdl9zdGF0dXNfY29udGVudC5qc3AiOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRlbnRWYXIoKSB7Ci0gICAgICAgIHJldHVybiAiZmF2UHJvcGVydGllc0NvbnRlbnQiOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRlbnRQYWdlKCkgewotICAgICAgICByZXR1cm4gImZhdm9yaXRlcy9mYXZfcHJvcGVydGllc19jb250ZW50LmpzcCI7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKQotICAgIHsKLSAgICAgIHJldHVybiBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoU3RyaW5nIGNvbHMpCi0gICAgewotICAgICAgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9IGNvbHM7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKQotICAgIHsKLSAgICAgIHJldHVybiBzYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc187Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKFN0cmluZyBjb2xzKQotICAgIHsKLSAgICAgIHNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9IGNvbHM7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpCi0gICAgewotICAgICAgcmV0dXJuIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKFN0cmluZyByb3dzKQotICAgIHsKLSAgICAgIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfID0gcm93czsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKQotICAgIHsKLSAgICAgIHJldHVybiBzYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoU3RyaW5nIHJvd3MpCi0gICAgewotICAgICAgc2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzXyA9IHJvd3M7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3dpdGNoUGVyc3BlY3RpdmVGb3JtQWN0aW9uTGluayhpbnQgdGFyZ2V0UGVyc3BlY3RpdmVJZCxib29sZWFuIGZvckhpc3RvcnkpCi0gICAgewotICAgICAgcmV0dXJuIFN3aXRjaFBlcnNwZWN0aXZlRnJvbUZhdm9yaXRlc0FjdGlvbi5nZXRGb3JtQWN0aW9uTGluayh0YXJnZXRQZXJzcGVjdGl2ZUlkLGZvckhpc3RvcnkpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzUmVzdG9yZURlZmF1bHRGYXZvcml0ZXNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNmM2Y2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzUmVzdG9yZURlZmF1bHRGYXZvcml0ZXNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLkZhdm9yaXRlc1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzVG9vbCBleHRlbmRzIEFjdGlvblRvb2wgewotICAgIHB1YmxpYyBGYXZvcml0ZXNSZXN0b3JlRGVmYXVsdEZhdm9yaXRlc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvcmVmcmVzaF9lbmFibGVkLmdpZiIsICJpbWFnZXMvcmVmcmVzaF9oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKCkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBGYXZvcml0ZXNSZXN0b3JlRGVmYXVsdEZhdm9yaXRlc0FjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1NldERlZmF1bHRWaWV3VG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzU2V0RGVmYXVsdFZpZXdUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZWM0ZjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzU2V0RGVmYXVsdFZpZXdUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLlNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNldERlZmF1bHRWaWV3VG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNTZXREZWZhdWx0Vmlld1Rvb2wgZXh0ZW5kcyBTZXREZWZhdWx0Vmlld1Rvb2wgewotICAgIHB1YmxpYyBGYXZvcml0ZXNTZXREZWZhdWx0Vmlld1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxULCBBY3Rpb25JbnB1dHMuVklFV1RPT0xJRF9ERUZBVUxULCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCksIEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCwgQWN0aW9uSW5wdXRzLlZJRVdUT09MSURfREVGQVVMVCwgZmFsc2UpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElCdXNpbmVzc0RldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVRERJQnVzaW5lc3NEZXRhaWxzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzYxNTM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElCdXNpbmVzc0RldGFpbHNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLlNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VERElCdXNpbmVzc0RldGFpbHNUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotCi0gICAgcHVibGljIEZhdm9yaXRlc1VERElCdXNpbmVzc0RldGFpbHNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAiaW1hZ2VzL2RldGFpbHNfZW5hYmxlZC5naWYiLCAiaW1hZ2VzL2RldGFpbHNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0Rm9ybUxpbmsoKQotICAgIHsKLSAgICAgIHJldHVybiAiZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1VERElCdXNpbmVzc0RldGFpbHNQYWdlLmpzcCI7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjIyZmNlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElCdXNpbmVzc0ZvbGRlck5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnRBZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsQWRkRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxSZW1vdmVFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VERElCdXNpbmVzc0ZvbGRlck5vZGUgZXh0ZW5kcyBGYXZvcml0ZXNOYXZpZ2F0b3JGb2xkZXJOb2RlIHsKLSAgICBwdWJsaWMgRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyTm9kZShUcmVlRWxlbWVudCB0cmVlRWxlbWVudCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsIGludCBub2RlRGVwdGgpIHsKLSAgICAgICAgc3VwZXIodHJlZUVsZW1lbnQsIG5vZGVNYW5hZ2VyLCBub2RlRGVwdGgpOwotICAgICAgICB0cmVlRWxlbWVudC5hZGRMaXN0ZW5lcihuZXcgRWxlbWVudEFkYXB0ZXIoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCByZWxBZGRlZChSZWxBZGRFdmVudCBldmVudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZWwgPSBldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9CVVNJTkVTU19OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYXZvcml0ZXNVRERJQnVzaW5lc3NOb2RlIGZhdm9yaXRlc1VERElCdXNpbmVzc05vZGUgPSBuZXcgRmF2b3JpdGVzVURESUJ1c2luZXNzTm9kZSgoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0UGFyZW50RWxlbWVudCgpLCBub2RlTWFuYWdlcl8sIG5vZGVEZXB0aF8gKyAxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2hpbGQoZmF2b3JpdGVzVURESUJ1c2luZXNzTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCByZWxSZW1vdmVkKFJlbFJlbW92ZUV2ZW50IGV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJlZUVsZW1lbnQgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZ2V0SW5Cb3VuZFJlbE5hbWUoKS5lcXVhbHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfQlVTSU5FU1NfTk9ERSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRFbGVtZW50ID0gKFRyZWVFbGVtZW50KWV2ZW50LmdldEluYm91bmRFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKS5lcXVhbHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfQlVTSU5FU1NfTk9ERSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRFbGVtZW50ID0gKFRyZWVFbGVtZW50KWV2ZW50LmdldE91dEJvdW5kRWxlbWVudCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDaGlsZE5vZGUoY2hpbGRFbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgaW5pdFRvb2xzKCkgewotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgbmV3IExpc3RGYXZvcml0ZVVERElCdXNpbmVzc1Rvb2wodG9vbE1hbmFnZXJfLCBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTElTVF9GQVZPUklURV9VRERJX0JVU0lORVNTIikpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElCdXNpbmVzc05vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElCdXNpbmVzc05vZGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NjOGEyYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVRERJQnVzaW5lc3NOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNVRERJQnVzaW5lc3NOb2RlIGV4dGVuZHMgRmF2b3JpdGVzTmF2aWdhdG9yTm9kZSB7Ci0gICAgcHVibGljIEZhdm9yaXRlc1VERElCdXNpbmVzc05vZGUoVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQsIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLCBpbnQgbm9kZURlcHRoKSB7Ci0gICAgICAgIHN1cGVyKHRyZWVFbGVtZW50LCBub2RlTWFuYWdlciwgbm9kZURlcHRoLCAiZmF2b3JpdGVzL2ltYWdlcy91ZGRpX2J1c2luZXNzX25vZGUuZ2lmIik7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgaW5pdFRvb2xzKCkgewotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgbmV3IEZhdm9yaXRlc1VERElCdXNpbmVzc0RldGFpbHNUb29sKHRvb2xNYW5hZ2VyXywgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZBVk9SSVRFU19VRERJX0JVU0lORVNTX0RFVEFJTFMiKSk7Ci0gICAgICAgIG5ldyBBZGRUb1VERElQZXJzcGVjdGl2ZVRvb2wodG9vbE1hbmFnZXJfLCBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfQUREX1RPX1VERElfUEVSU1BFQ1RJVkUiKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVJlZ2lzdHJ5RGV0YWlsc1Rvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElSZWdpc3RyeURldGFpbHNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZjZjZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVJlZ2lzdHJ5RGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RGV0YWlsc1Rvb2wgZXh0ZW5kcyBGb3JtVG9vbCB7Ci0KLSAgICBwdWJsaWMgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RGV0YWlsc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZGV0YWlsc19lbmFibGVkLmdpZiIsICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRGb3JtTGluaygpCi0gICAgewotICAgICAgcmV0dXJuICJmYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzVURESVJlZ2lzdHJ5RGV0YWlsc1BhZ2UuanNwIjsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJOb2RlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJOb2RlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NjBhMTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnRBZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsQWRkRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxSZW1vdmVFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc1VERElSZWdpc3RyeUZvbGRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyTm9kZSBleHRlbmRzIEZhdm9yaXRlc05hdmlnYXRvckZvbGRlck5vZGUgewotICAgIHB1YmxpYyBGYXZvcml0ZXNVRERJUmVnaXN0cnlGb2xkZXJOb2RlKFRyZWVFbGVtZW50IHRyZWVFbGVtZW50LCBOb2RlTWFuYWdlciBub2RlTWFuYWdlciwgaW50IG5vZGVEZXB0aCkgewotICAgICAgICBzdXBlcih0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aCk7Ci0gICAgICAgIHRyZWVFbGVtZW50LmFkZExpc3RlbmVyKG5ldyBFbGVtZW50QWRhcHRlcigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbEFkZGVkKFJlbEFkZEV2ZW50IGV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJlbCA9IGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWwuZXF1YWxzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1JFR0lTVFJZX05PREUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyZWVFbGVtZW50IHJlZ0VsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0UGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaW1hZ2VQYXRoOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgY2F0ZWdvcmllc0RpcmVjdG9yeSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudC5mb3JtQ2F0ZWdvcmllc0RpcmVjdG9yeShjYXRlZ29yaWVzRGlyZWN0b3J5LG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0U2VydmxldEVuZ2luZVN0YXRlTG9jYXRpb24oKSxyZWdFbGVtZW50LmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUgY2F0ZWdvcnlEaXJlY3RvcnlGaWxlID0gbmV3IEZpbGUoY2F0ZWdvcmllc0RpcmVjdG9yeS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gY2F0ZWdvcnlGaWxlcyA9IGNhdGVnb3J5RGlyZWN0b3J5RmlsZS5saXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yeUZpbGVzICE9IG51bGwgJiYgY2F0ZWdvcnlGaWxlcy5sZW5ndGggPiAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aCA9ICJmYXZvcml0ZXMvaW1hZ2VzL3VkZGlfcmVnaXN0cnlfY2F0X25vZGUuZ2lmIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aCA9ICJmYXZvcml0ZXMvaW1hZ2VzL3VkZGlfcmVnaXN0cnlfbm9kZS5naWYiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYXZvcml0ZXNVRERJUmVnaXN0cnlOb2RlIGZhdm9yaXRlc1VERElSZWdpc3RyeU5vZGUgPSBuZXcgRmF2b3JpdGVzVURESVJlZ2lzdHJ5Tm9kZShyZWdFbGVtZW50LCBub2RlTWFuYWdlcl8sIG5vZGVEZXB0aF8gKyAxLCBpbWFnZVBhdGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDaGlsZChmYXZvcml0ZXNVRERJUmVnaXN0cnlOb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbFJlbW92ZWQoUmVsUmVtb3ZlRXZlbnQgZXZlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmVlRWxlbWVudCBjaGlsZEVsZW1lbnQgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5nZXRJbkJvdW5kUmVsTmFtZSgpLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9SRUdJU1RSWV9OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0SW5ib3VuZEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9SRUdJU1RSWV9OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0T3V0Qm91bmRFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNoaWxkTm9kZShjaGlsZEVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBpbml0VG9vbHMoKSB7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICBuZXcgTGlzdEZhdm9yaXRlVURESVJlZ2lzdHJ5VG9vbCh0b29sTWFuYWdlcl8sIGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MSVNUX0ZBVk9SSVRFX1VERElfUkVHSVNUUlkiKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVJlZ2lzdHJ5Tm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVJlZ2lzdHJ5Tm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGYyODEzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElSZWdpc3RyeU5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VERElSZWdpc3RyeU5vZGUgZXh0ZW5kcyBGYXZvcml0ZXNOYXZpZ2F0b3JOb2RlIHsKLSAgICBwdWJsaWMgRmF2b3JpdGVzVURESVJlZ2lzdHJ5Tm9kZShUcmVlRWxlbWVudCB0cmVlRWxlbWVudCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsIGludCBub2RlRGVwdGgsU3RyaW5nIGltYWdlUGF0aCkgewotICAgICAgICBzdXBlcih0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aCwgaW1hZ2VQYXRoKTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBpbml0VG9vbHMoKSB7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICBuZXcgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RGV0YWlsc1Rvb2wodG9vbE1hbmFnZXJfLCBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfRkFWT1JJVEVTX1VERElfUkVHSVNUUllfREVUQUlMUyIpKTsKLSAgICAgICAgbmV3IEFkZFRvVURESVBlcnNwZWN0aXZlVG9vbCh0b29sTWFuYWdlcl8sIGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9BRERfVE9fVURESV9QRVJTUEVDVElWRSIpKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVRERJU2VydmljZURldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVRERJU2VydmljZURldGFpbHNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNGY0ZTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVNlcnZpY2VEZXRhaWxzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNVRERJU2VydmljZURldGFpbHNUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotCi0gICAgcHVibGljIEZhdm9yaXRlc1VERElTZXJ2aWNlRGV0YWlsc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZGV0YWlsc19lbmFibGVkLmdpZiIsICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRGb3JtTGluaygpCi0gICAgewotICAgICAgcmV0dXJuICJmYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzVURESVNlcnZpY2VEZXRhaWxzUGFnZS5qc3AiOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElTZXJ2aWNlRm9sZGVyTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVNlcnZpY2VGb2xkZXJOb2RlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMTRkMjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVNlcnZpY2VGb2xkZXJOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5FbGVtZW50QWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbEFkZEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsUmVtb3ZlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy5GYXZvcml0ZXNNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNVRERJU2VydmljZUZvbGRlck5vZGUgZXh0ZW5kcyBGYXZvcml0ZXNOYXZpZ2F0b3JGb2xkZXJOb2RlIHsKLSAgICBwdWJsaWMgRmF2b3JpdGVzVURESVNlcnZpY2VGb2xkZXJOb2RlKFRyZWVFbGVtZW50IHRyZWVFbGVtZW50LCBOb2RlTWFuYWdlciBub2RlTWFuYWdlciwgaW50IG5vZGVEZXB0aCkgewotICAgICAgICBzdXBlcih0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aCk7Ci0gICAgICAgIHRyZWVFbGVtZW50LmFkZExpc3RlbmVyKG5ldyBFbGVtZW50QWRhcHRlcigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbEFkZGVkKFJlbEFkZEV2ZW50IGV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJlbCA9IGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWwuZXF1YWxzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1NFUlZJQ0VfTk9ERSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmF2b3JpdGVzVURESVNlcnZpY2VOb2RlIGZhdm9yaXRlc1VERElTZXJ2aWNlTm9kZSA9IG5ldyBGYXZvcml0ZXNVRERJU2VydmljZU5vZGUoKFRyZWVFbGVtZW50KWV2ZW50LmdldFBhcmVudEVsZW1lbnQoKSwgbm9kZU1hbmFnZXJfLCBub2RlRGVwdGhfICsgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENoaWxkKGZhdm9yaXRlc1VERElTZXJ2aWNlTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCByZWxSZW1vdmVkKFJlbFJlbW92ZUV2ZW50IGV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJlZUVsZW1lbnQgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZ2V0SW5Cb3VuZFJlbE5hbWUoKS5lcXVhbHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0SW5ib3VuZEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9TRVJWSUNFX05PREUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRPdXRCb3VuZEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2hpbGROb2RlKGNoaWxkRWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIGluaXRUb29scygpIHsKLSAgICAgICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgICAgIG5ldyBMaXN0RmF2b3JpdGVVRERJU2VydmljZVRvb2wodG9vbE1hbmFnZXJfLCBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTElTVF9GQVZPUklURV9VRERJX1NFUlZJQ0UiKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjkyZTdiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzVG9vbCBleHRlbmRzIEZvcm1Ub29sIHsKLQotICAgIHB1YmxpYyBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZURldGFpbHNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAiaW1hZ2VzL2RldGFpbHNfZW5hYmxlZC5naWYiLCAiaW1hZ2VzL2RldGFpbHNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0Rm9ybUxpbmsoKQotICAgIHsKLSAgICAgIHJldHVybiAiZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1VERElTZXJ2aWNlSW50RGV0YWlsc1BhZ2UuanNwIjsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUZvbGRlck5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRm9sZGVyTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2Y2NjcyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRm9sZGVyTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxBZGRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbFJlbW92ZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuRmF2b3JpdGVzTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VGb2xkZXJOb2RlIGV4dGVuZHMgRmF2b3JpdGVzTmF2aWdhdG9yRm9sZGVyTm9kZSB7Ci0gICAgcHVibGljIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRm9sZGVyTm9kZShUcmVlRWxlbWVudCB0cmVlRWxlbWVudCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsIGludCBub2RlRGVwdGgpIHsKLSAgICAgICAgc3VwZXIodHJlZUVsZW1lbnQsIG5vZGVNYW5hZ2VyLCBub2RlRGVwdGgpOwotICAgICAgICB0cmVlRWxlbWVudC5hZGRMaXN0ZW5lcihuZXcgRWxlbWVudEFkYXB0ZXIoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCByZWxBZGRlZChSZWxBZGRFdmVudCBldmVudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZWwgPSBldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZU5vZGUgZmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VOb2RlID0gbmV3IEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlTm9kZSgoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0UGFyZW50RWxlbWVudCgpLCBub2RlTWFuYWdlcl8sIG5vZGVEZXB0aF8gKyAxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2hpbGQoZmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VOb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbFJlbW92ZWQoUmVsUmVtb3ZlRXZlbnQgZXZlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmVlRWxlbWVudCBjaGlsZEVsZW1lbnQgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5nZXRJbkJvdW5kUmVsTmFtZSgpLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0SW5ib3VuZEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0T3V0Qm91bmRFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNoaWxkTm9kZShjaGlsZEVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBpbml0VG9vbHMoKSB7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICBuZXcgTGlzdEZhdm9yaXRlVURESVNlcnZpY2VJbnRlcmZhY2VUb29sKHRvb2xNYW5hZ2VyXywgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0xJU1RfRkFWT1JJVEVfVURESV9TRVJWSUNFX0lOVEVSRkFDRSIpKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZU5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjg2Y2NjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VOb2RlIGV4dGVuZHMgRmF2b3JpdGVzTmF2aWdhdG9yTm9kZSB7Ci0gICAgcHVibGljIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlTm9kZShUcmVlRWxlbWVudCB0cmVlRWxlbWVudCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsIGludCBub2RlRGVwdGgpIHsKLSAgICAgICAgc3VwZXIodHJlZUVsZW1lbnQsIG5vZGVNYW5hZ2VyLCBub2RlRGVwdGgsICJmYXZvcml0ZXMvaW1hZ2VzL3VkZGlfc2VydmljZV9pbnRlcmZhY2Vfbm9kZS5naWYiKTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBpbml0VG9vbHMoKSB7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICBuZXcgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzVG9vbCh0b29sTWFuYWdlcl8sIGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9GQVZPUklURVNfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9ERVRBSUxTIikpOwotICAgICAgICBuZXcgQWRkVG9VRERJUGVyc3BlY3RpdmVUb29sKHRvb2xNYW5hZ2VyXywgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0FERF9UT19VRERJX1BFUlNQRUNUSVZFIikpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VERElTZXJ2aWNlTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVNlcnZpY2VOb2RlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlYWI3N2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVURESVNlcnZpY2VOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNVRERJU2VydmljZU5vZGUgZXh0ZW5kcyBGYXZvcml0ZXNOYXZpZ2F0b3JOb2RlIHsKLSAgICBwdWJsaWMgRmF2b3JpdGVzVURESVNlcnZpY2VOb2RlKFRyZWVFbGVtZW50IHRyZWVFbGVtZW50LCBOb2RlTWFuYWdlciBub2RlTWFuYWdlciwgaW50IG5vZGVEZXB0aCkgewotICAgICAgICBzdXBlcih0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aCwgImZhdm9yaXRlcy9pbWFnZXMvdWRkaV9zZXJ2aWNlX25vZGUuZ2lmIik7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgaW5pdFRvb2xzKCkgewotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgbmV3IEZhdm9yaXRlc1VERElTZXJ2aWNlRGV0YWlsc1Rvb2wodG9vbE1hbmFnZXJfLCBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfRkFWT1JJVEVTX1VERElfU0VSVklDRV9ERVRBSUxTIikpOwotICAgICAgICBuZXcgQWRkVG9VRERJUGVyc3BlY3RpdmVUb29sKHRvb2xNYW5hZ2VyXywgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0FERF9UT19VRERJX1BFUlNQRUNUSVZFIikpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlEZXRhaWxzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeURldGFpbHNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0OTU3MjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeURldGFpbHNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5RGV0YWlsc1Rvb2wgZXh0ZW5kcyBGb3JtVG9vbAotewotICBwdWJsaWMgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeURldGFpbHNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZGV0YWlsc19lbmFibGVkLmdpZiIsICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgcmV0dXJuIFNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEZvcm1MaW5rKCkKLSAgewotICAgIHJldHVybiAiZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlEZXRhaWxzUGFnZS5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Rm9sZGVyTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlck5vZGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJmYzBlYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Rm9sZGVyTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxBZGRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbFJlbW92ZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLlNlbGVjdEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlOb2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlGb2xkZXJOb2RlIGV4dGVuZHMgRmF2b3JpdGVzTmF2aWdhdG9yRm9sZGVyTm9kZQotewotICBwdWJsaWMgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlck5vZGUoVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQsIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLCBpbnQgbm9kZURlcHRoKQotICB7Ci0gICAgc3VwZXIodHJlZUVsZW1lbnQsIG5vZGVNYW5hZ2VyLCBub2RlRGVwdGgpOwotICAgIHRyZWVFbGVtZW50LmFkZExpc3RlbmVyKG5ldyBFbGVtZW50QWRhcHRlcigpCi0gICAgewotICAgICAgcHVibGljIHZvaWQgcmVsQWRkZWQoUmVsQWRkRXZlbnQgZXZlbnQpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyByZWwgPSBldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKTsKLSAgICAgICAgaWYgKHJlbC5lcXVhbHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VTRVJfREVGX1VERElfUkVHSVNUUllfTk9ERSkpCi0gICAgICAgIHsKLSAgICAgICAgICBUcmVlRWxlbWVudCByZWdFbGVtZW50ID0gKFRyZWVFbGVtZW50KWV2ZW50LmdldFBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICBTdHJpbmcgaW1hZ2VQYXRoID0gImZhdm9yaXRlcy9pbWFnZXMvdWRkaV9yZWdpc3RyeV9ub2RlLmdpZiI7Ci0gICAgICAgICAgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeU5vZGUgZmF2VXNlckRlZlVERElSZWdpc3RyeU5vZGUgPSBuZXcgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeU5vZGUocmVnRWxlbWVudCwgbm9kZU1hbmFnZXJfLCBub2RlRGVwdGhfICsgMSwgaW1hZ2VQYXRoKTsKLSAgICAgICAgICBhZGRDaGlsZChmYXZVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgcmVsUmVtb3ZlZChSZWxSZW1vdmVFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgICAgVHJlZUVsZW1lbnQgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgaWYgKGV2ZW50LmdldEluQm91bmRSZWxOYW1lKCkuZXF1YWxzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VU0VSX0RFRl9VRERJX1JFR0lTVFJZX05PREUpKQotICAgICAgICB7Ci0gICAgICAgICAgY2hpbGRFbGVtZW50ID0gKFRyZWVFbGVtZW50KWV2ZW50LmdldEluYm91bmRFbGVtZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVVNFUl9ERUZfVURESV9SRUdJU1RSWV9OT0RFKSkKLSAgICAgICAgewotICAgICAgICAgIGNoaWxkRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRPdXRCb3VuZEVsZW1lbnQoKTsKLSAgICAgICAgfQotICAgICAgICByZW1vdmVDaGlsZE5vZGUoY2hpbGRFbGVtZW50KTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGluaXRUb29scygpCi0gIHsKLSAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICBuZXcgTGlzdEZhdm9yaXRlVXNlckRlZlVERElSZWdpc3RyeVRvb2wodG9vbE1hbmFnZXJfLCBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTElTVF9GQVZPUklURV9VU0VSX0RFRl9VRERJX1JFR0lTVFJZIikpOwotICB9Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRMaW5rQWN0aW9uSHJlZigpIHsKLSAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGVJZF8sIGZhbHNlKTsKLSAgfQotCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlOb2RlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjYxNzU2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeU5vZGUgZXh0ZW5kcyBGYXZvcml0ZXNOYXZpZ2F0b3JOb2RlCi17Ci0gIHB1YmxpYyBGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZShUcmVlRWxlbWVudCB0cmVlRWxlbWVudCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsIGludCBub2RlRGVwdGgsIFN0cmluZyBpbWFnZVBhdGgpCi0gIHsKLSAgICBzdXBlcih0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aCwgaW1hZ2VQYXRoKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGluaXRUb29scygpCi0gIHsKLSAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICBuZXcgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeURldGFpbHNUb29sKHRvb2xNYW5hZ2VyXywgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZBVk9SSVRFU19VU0VSX0RFRl9VRERJX1JFR0lTVFJZX0RFVEFJTFMiKSk7Ci0gICAgbmV3IEFkZFRvVURESVBlcnNwZWN0aXZlVG9vbCh0b29sTWFuYWdlcl8sIGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9BRERfVE9fVURESV9QRVJTUEVDVElWRSIpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzV1NETERldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNXU0RMRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQwZTUyZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNXU0RMRGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzV1NETERldGFpbHNUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotCi0gICAgcHVibGljIEZhdm9yaXRlc1dTRExEZXRhaWxzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgImltYWdlcy9kZXRhaWxzX2VuYWJsZWQuZ2lmIiwgImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEZvcm1MaW5rKCkKLSAgICB7Ci0gICAgICByZXR1cm4gImZhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNXU0RMRGV0YWlsc1BhZ2UuanNwIjsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNXU0RMU2VydmljZUZvbGRlck5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1dTRExTZXJ2aWNlRm9sZGVyTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmY0OGRiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1dTRExTZXJ2aWNlRm9sZGVyTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxBZGRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbFJlbW92ZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuRmF2b3JpdGVzTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzV1NETFNlcnZpY2VGb2xkZXJOb2RlIGV4dGVuZHMgRmF2b3JpdGVzTmF2aWdhdG9yRm9sZGVyTm9kZSB7Ci0gICAgcHVibGljIEZhdm9yaXRlc1dTRExTZXJ2aWNlRm9sZGVyTm9kZShUcmVlRWxlbWVudCB0cmVlRWxlbWVudCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsIGludCBub2RlRGVwdGgpIHsKLSAgICAgICAgc3VwZXIodHJlZUVsZW1lbnQsIG5vZGVNYW5hZ2VyLCBub2RlRGVwdGgpOwotICAgICAgICB0cmVlRWxlbWVudC5hZGRMaXN0ZW5lcihuZXcgRWxlbWVudEFkYXB0ZXIoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCByZWxBZGRlZChSZWxBZGRFdmVudCBldmVudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZWwgPSBldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NETF9TRVJWSUNFX05PREUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhdm9yaXRlc1dTRExTZXJ2aWNlTm9kZSBmYXZvcml0ZXNXU0RMU2VydmljZU5vZGUgPSBuZXcgRmF2b3JpdGVzV1NETFNlcnZpY2VOb2RlKChUcmVlRWxlbWVudClldmVudC5nZXRQYXJlbnRFbGVtZW50KCksIG5vZGVNYW5hZ2VyXywgbm9kZURlcHRoXyArIDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDaGlsZChmYXZvcml0ZXNXU0RMU2VydmljZU5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcmVsUmVtb3ZlZChSZWxSZW1vdmVFdmVudCBldmVudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyZWVFbGVtZW50IGNoaWxkRWxlbWVudCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldEluQm91bmRSZWxOYW1lKCkuZXF1YWxzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX1NFUlZJQ0VfTk9ERSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRFbGVtZW50ID0gKFRyZWVFbGVtZW50KWV2ZW50LmdldEluYm91bmRFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKS5lcXVhbHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1dTRExfU0VSVklDRV9OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0T3V0Qm91bmRFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNoaWxkTm9kZShjaGlsZEVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBpbml0VG9vbHMoKSB7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICBuZXcgTGlzdEZhdm9yaXRlV1NETFNlcnZpY2VUb29sKHRvb2xNYW5hZ2VyXywgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0xJU1RfRkFWT1JJVEVfV1NETF9TRVJWSUNFIikpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1dTRExTZXJ2aWNlTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzV1NETFNlcnZpY2VOb2RlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNDE2YTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzV1NETFNlcnZpY2VOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNXU0RMU2VydmljZU5vZGUgZXh0ZW5kcyBGYXZvcml0ZXNOYXZpZ2F0b3JOb2RlIHsKLSAgICBwdWJsaWMgRmF2b3JpdGVzV1NETFNlcnZpY2VOb2RlKFRyZWVFbGVtZW50IHRyZWVFbGVtZW50LCBOb2RlTWFuYWdlciBub2RlTWFuYWdlciwgaW50IG5vZGVEZXB0aCkgewotICAgICAgICBzdXBlcih0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXIsIG5vZGVEZXB0aCwgImZhdm9yaXRlcy9pbWFnZXMvd3NkbF9zZXJ2aWNlX25vZGUuZ2lmIik7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgaW5pdFRvb2xzKCkgewotICAgICAgICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpOwotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgbmV3IEZhdm9yaXRlc1dTRExEZXRhaWxzVG9vbCh0b29sTWFuYWdlcl8sIGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9GQVZPUklURVNfV1NETF9ERVRBSUxTIikpOwotICAgICAgICBuZXcgRmF2b3JpdGVzSW1wb3J0VG9Xb3JrYmVuY2hUb29sKHRvb2xNYW5hZ2VyXywgY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfSU1QT1JUX1dTRExfVE9fV09SS0JFTkNIIikpOwotICAgICAgICBuZXcgRmF2b3JpdGVzSW1wb3J0VG9GaWxlU3lzdGVtVG9vbCh0b29sTWFuYWdlcl8sIGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1dTRExfSU1QT1JUX1RPX0ZTIikpOwotICAgICAgICBuZXcgRmF2b3JpdGVzTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wodG9vbE1hbmFnZXJfLCBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9MQVVOQ0hfV0VCX1NFUlZJQ0VfV0laQVJEIikpOwotICAgICAgICBuZXcgRmF2b3JpdGVzQWRkVG9XU0RMUGVyc3BlY3RpdmVUb29sKHRvb2xNYW5hZ2VyXywgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0FERF9XU0RMX1RPX1dTRExfUEVSU1BFQ1RJVkUiKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzV1NJTERldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNXU0lMRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTcwMmI4MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNXU0lMRGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzV1NJTERldGFpbHNUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotCi0gICAgcHVibGljIEZhdm9yaXRlc1dTSUxEZXRhaWxzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgImltYWdlcy9kZXRhaWxzX2VuYWJsZWQuZ2lmIiwgImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEZvcm1MaW5rKCkKLSAgICB7Ci0gICAgICByZXR1cm4gImZhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNXU0lMRGV0YWlsc1BhZ2UuanNwIjsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNXU0lMRm9sZGVyTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvRmF2b3JpdGVzV1NJTEZvbGRlck5vZGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRmNDYxYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNXU0lMRm9sZGVyTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxBZGRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbFJlbW92ZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuRmF2b3JpdGVzTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzV1NJTEZvbGRlck5vZGUgZXh0ZW5kcyBGYXZvcml0ZXNOYXZpZ2F0b3JGb2xkZXJOb2RlIHsKLSAgICBwdWJsaWMgRmF2b3JpdGVzV1NJTEZvbGRlck5vZGUoVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQsIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLCBpbnQgbm9kZURlcHRoKSB7Ci0gICAgICAgIHN1cGVyKHRyZWVFbGVtZW50LCBub2RlTWFuYWdlciwgbm9kZURlcHRoKTsKLSAgICAgICAgdHJlZUVsZW1lbnQuYWRkTGlzdGVuZXIobmV3IEVsZW1lbnRBZGFwdGVyKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcmVsQWRkZWQoUmVsQWRkRXZlbnQgZXZlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcmVsID0gZXZlbnQuZ2V0T3V0Qm91bmRSZWxOYW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbC5lcXVhbHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1dTSUxfTk9ERSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmF2b3JpdGVzV1NJTE5vZGUgZmF2b3JpdGVzV1NJTE5vZGUgPSBuZXcgRmF2b3JpdGVzV1NJTE5vZGUoKFRyZWVFbGVtZW50KWV2ZW50LmdldFBhcmVudEVsZW1lbnQoKSwgbm9kZU1hbmFnZXJfLCBub2RlRGVwdGhfICsgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENoaWxkKGZhdm9yaXRlc1dTSUxOb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbFJlbW92ZWQoUmVsUmVtb3ZlRXZlbnQgZXZlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmVlRWxlbWVudCBjaGlsZEVsZW1lbnQgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5nZXRJbkJvdW5kUmVsTmFtZSgpLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NJTF9OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0SW5ib3VuZEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpLmVxdWFscyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NJTF9OT0RFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0T3V0Qm91bmRFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNoaWxkTm9kZShjaGlsZEVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBpbml0VG9vbHMoKSB7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICBuZXcgTGlzdEZhdm9yaXRlV1NJTFRvb2wodG9vbE1hbmFnZXJfLCBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTElTVF9GQVZPUklURV9XU0lMIikpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1dTSUxOb2RlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9GYXZvcml0ZXNXU0lMTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWYyZDE5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0Zhdm9yaXRlc1dTSUxOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNXU0lMTm9kZSBleHRlbmRzIEZhdm9yaXRlc05hdmlnYXRvck5vZGUgewotICAgIHB1YmxpYyBGYXZvcml0ZXNXU0lMTm9kZShUcmVlRWxlbWVudCB0cmVlRWxlbWVudCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsIGludCBub2RlRGVwdGgpIHsKLSAgICAgICAgc3VwZXIodHJlZUVsZW1lbnQsIG5vZGVNYW5hZ2VyLCBub2RlRGVwdGgsICJmYXZvcml0ZXMvaW1hZ2VzL3dzaWxfbm9kZS5naWYiKTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBpbml0VG9vbHMoKSB7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgICAgICBuZXcgRmF2b3JpdGVzV1NJTERldGFpbHNUb29sKHRvb2xNYW5hZ2VyXywgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZBVk9SSVRFU19XU0lMX0RFVEFJTFMiKSk7Ci0gICAgICAgIG5ldyBBZGRXU0lMVG9XU0lMUGVyc3BlY3RpdmVUb29sKHRvb2xNYW5hZ2VyXywgZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0FERF9XU0lMX1RPX1dTSUxfUEVSU1BFQ1RJVkUiKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvTGlzdEZhdm9yaXRlVURESUJ1c2luZXNzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvTGlzdEZhdm9yaXRlVURESUJ1c2luZXNzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzFhOGZmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0xpc3RGYXZvcml0ZVVERElCdXNpbmVzc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgTGlzdEZhdm9yaXRlVURESUJ1c2luZXNzVG9vbCBleHRlbmRzIEZvcm1Ub29sIHsKLSAgICBwdWJsaWMgTGlzdEZhdm9yaXRlVURESUJ1c2luZXNzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgImZhdm9yaXRlcy9pbWFnZXMvbGlzdF9idXNpbmVzc19lbmFibGVkLmdpZiIsICJmYXZvcml0ZXMvaW1hZ2VzL2xpc3RfYnVzaW5lc3NfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgICAgIHJldHVybiAiZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVVERElCdXNpbmVzc1ZpZXcuanNwIjsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0xpc3RGYXZvcml0ZVVERElSZWdpc3RyeVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0xpc3RGYXZvcml0ZVVERElSZWdpc3RyeVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBjZDE1Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9MaXN0RmF2b3JpdGVVRERJUmVnaXN0cnlUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLlNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIExpc3RGYXZvcml0ZVVERElSZWdpc3RyeVRvb2wgZXh0ZW5kcyBGb3JtVG9vbCB7Ci0gICAgcHVibGljIExpc3RGYXZvcml0ZVVERElSZWdpc3RyeVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJmYXZvcml0ZXMvaW1hZ2VzL2xpc3RfcmVnaXN0cnlfZW5hYmxlZC5naWYiLCAiZmF2b3JpdGVzL2ltYWdlcy9saXN0X3JlZ2lzdHJ5X2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gImZhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVVRERJUmVnaXN0cnlWaWV3LmpzcCI7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9MaXN0RmF2b3JpdGVVRERJU2VydmljZUludGVyZmFjZVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0xpc3RGYXZvcml0ZVVERElTZXJ2aWNlSW50ZXJmYWNlVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWFmMjRmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0xpc3RGYXZvcml0ZVVERElTZXJ2aWNlSW50ZXJmYWNlVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBMaXN0RmF2b3JpdGVVRERJU2VydmljZUludGVyZmFjZVRvb2wgZXh0ZW5kcyBGb3JtVG9vbCB7Ci0gICAgcHVibGljIExpc3RGYXZvcml0ZVVERElTZXJ2aWNlSW50ZXJmYWNlVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgImZhdm9yaXRlcy9pbWFnZXMvbGlzdF9zZXJ2aWNlX2ludGVyZmFjZV9lbmFibGVkLmdpZiIsICJmYXZvcml0ZXMvaW1hZ2VzL2xpc3Rfc2VydmljZV9pbnRlcmZhY2VfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgICAgIHJldHVybiAiZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVVERElTZXJ2aWNlSW50ZXJmYWNlVmlldy5qc3AiOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvTGlzdEZhdm9yaXRlVURESVNlcnZpY2VUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9MaXN0RmF2b3JpdGVVRERJU2VydmljZVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY0OWMwZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9MaXN0RmF2b3JpdGVVRERJU2VydmljZVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgTGlzdEZhdm9yaXRlVURESVNlcnZpY2VUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotICAgIHB1YmxpYyBMaXN0RmF2b3JpdGVVRERJU2VydmljZVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJmYXZvcml0ZXMvaW1hZ2VzL2xpc3Rfc2VydmljZV9lbmFibGVkLmdpZiIsICJmYXZvcml0ZXMvaW1hZ2VzL2xpc3Rfc2VydmljZV9oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpIHsKLSAgICAgICAgcmV0dXJuICJmYXZvcml0ZXMvdmlld3MvTGlzdEZhdm9yaXRlVURESVNlcnZpY2VWaWV3LmpzcCI7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9MaXN0RmF2b3JpdGVVc2VyRGVmVURESVJlZ2lzdHJ5VG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvTGlzdEZhdm9yaXRlVXNlckRlZlVERElSZWdpc3RyeVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFiOGM5NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9MaXN0RmF2b3JpdGVVc2VyRGVmVURESVJlZ2lzdHJ5VG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgTGlzdEZhdm9yaXRlVXNlckRlZlVERElSZWdpc3RyeVRvb2wgZXh0ZW5kcyBGb3JtVG9vbAotewotICBwdWJsaWMgTGlzdEZhdm9yaXRlVXNlckRlZlVERElSZWdpc3RyeVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpCi0gIHsKLSAgICBzdXBlcih0b29sTWFuYWdlciwgImZhdm9yaXRlcy9pbWFnZXMvbGlzdF9yZWdpc3RyeV9lbmFibGVkLmdpZiIsICJmYXZvcml0ZXMvaW1hZ2VzL2xpc3RfcmVnaXN0cnlfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KQotICB7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpCi0gIHsKLSAgICByZXR1cm4gImZhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVVc2VyRGVmVURESVJlZ2lzdHJ5Vmlldy5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9MaXN0RmF2b3JpdGVXU0RMU2VydmljZVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0xpc3RGYXZvcml0ZVdTRExTZXJ2aWNlVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmYyMDgxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0xpc3RGYXZvcml0ZVdTRExTZXJ2aWNlVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBMaXN0RmF2b3JpdGVXU0RMU2VydmljZVRvb2wgZXh0ZW5kcyBGb3JtVG9vbCB7Ci0gICAgcHVibGljIExpc3RGYXZvcml0ZVdTRExTZXJ2aWNlVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgImZhdm9yaXRlcy9pbWFnZXMvbGlzdF93c2RsX2VuYWJsZWQuZ2lmIiwgImZhdm9yaXRlcy9pbWFnZXMvbGlzdF93c2RsX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gImZhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVXU0RMU2VydmljZVZpZXcuanNwIjsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0xpc3RGYXZvcml0ZVdTSUxUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL2Zhdm9yaXRlcy9wZXJzcGVjdGl2ZS9MaXN0RmF2b3JpdGVXU0lMVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzgzMjViLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL0xpc3RGYXZvcml0ZVdTSUxUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLlNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIExpc3RGYXZvcml0ZVdTSUxUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotICAgIHB1YmxpYyBMaXN0RmF2b3JpdGVXU0lMVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgImZhdm9yaXRlcy9pbWFnZXMvbGlzdF9XU0lMX2VuYWJsZWQuZ2lmIiwgImZhdm9yaXRlcy9pbWFnZXMvbGlzdF9XU0lMX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0RmF2b3JpdGVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gImZhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVXU0lMVmlldy5qc3AiOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvUmVtb3ZlRmF2b3JpdGVzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9mYXZvcml0ZXMvcGVyc3BlY3RpdmUvUmVtb3ZlRmF2b3JpdGVzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzY3MmZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vZmF2b3JpdGVzL3BlcnNwZWN0aXZlL1JlbW92ZUZhdm9yaXRlc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuUmVtb3ZlRmF2b3JpdGVzQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIFJlbW92ZUZhdm9yaXRlc1Rvb2wgZXh0ZW5kcyBBY3Rpb25Ub29sIHsKLQotICAgIHB1YmxpYyBSZW1vdmVGYXZvcml0ZXNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIiwgImltYWdlcy9jbGVhcl9oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKCkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBSZW1vdmVGYXZvcml0ZXNBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0FjdGlvblRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvQWN0aW9uVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzNlZGQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvQWN0aW9uVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Ub29sVHlwZXM7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBY3Rpb25Ub29sIGV4dGVuZHMgVG9vbAotewotICBwdWJsaWMgQWN0aW9uVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlcixTdHJpbmcgZW5hYmxlZEltYWdlTGluayxTdHJpbmcgaGlnaGxpZ2h0ZWRJbWFnZUxpbmssU3RyaW5nIGFsdCkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLGVuYWJsZWRJbWFnZUxpbmssaGlnaGxpZ2h0ZWRJbWFnZUxpbmssYWx0LFRvb2xUeXBlcy5BQ1RJT04pOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9BZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvQWRkVG9XU0RMUGVyc3BlY3RpdmVUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2M2Q0NDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9BZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZTsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEFkZFRvV1NETFBlcnNwZWN0aXZlVG9vbCBleHRlbmRzIEFjdGlvblRvb2wKLXsKLSAgcHVibGljIEFkZFRvV1NETFBlcnNwZWN0aXZlVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlcixTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsImltYWdlcy9hZGRfdG9fd3NkbF9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZiIsImltYWdlcy9hZGRfdG9fd3NkbF9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYiLGFsdCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvQnJlYWRDcnVtYi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9CcmVhZENydW1iLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0OTdjMjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9CcmVhZENydW1iLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLS8vIEEgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgYSBicm93ZXIgYnJlYWRjcnVtYi4gRWFjaCBicmVhZGNydW1iIGVuY2Fwc3VsYXRlcwotLy8gYSBuYXZpZ2F0ZWQgVVJMLgotcHVibGljIGNsYXNzIEJyZWFkQ3J1bWIKLXsKLSAgcHJpdmF0ZSBpbnQgcGVyc3BlY3RpdmVJZF87Ci0gIHByaXZhdGUgU3RyaW5nIHVybF87Ci0KLSAgcHVibGljIEJyZWFkQ3J1bWIoaW50IHBlcnNwZWN0aXZlSWQsU3RyaW5nIHVybCkKLSAgewotICAgIHBlcnNwZWN0aXZlSWRfID0gcGVyc3BlY3RpdmVJZDsKLSAgICB1cmxfID0gdXJsOwotICB9Ci0KLSAgLyoqCi0gICogR2V0IHRoZSBVUkwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnJlYWRjcnVtYi4KLSAgKiBAcmV0dXJuIFN0cmluZyBUaGUgVVJMLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFVSTCgpCi0gIHsKLSAgICByZXR1cm4gdXJsXzsKLSAgfQotCi0gIC8qKgotICAqIEdldCB0aGUgSUQgb2YgdGhlIHBlcnNwZWN0aXZlIHdoZXJlIHRoaXMgYnJlYWRjcnVtYiBiZWxvbmdzLgotICAqIEByZXR1cm4gaW50IFRoZSBwZXJzcGVjdGl2ZUlEIGFzIGRlZmluZWQgaW4gQWN0aW9uSW5wdXRzLgotICAqLwotICBwdWJsaWMgaW50IGdldFBlcnNwZWN0aXZlSWQoKQotICB7Ci0gICAgcmV0dXJuIHBlcnNwZWN0aXZlSWRfOwotICB9Ci0KLSAgLyoqCi0gICogVGVzdCBlcXVhbGl0eSBiZXR3ZWVuIHRoaXMgYnJlYWRjcnVtYiBhbmQgYW5vdGhlci4gQm90aCB0aGUgVVJMcyBhbmQgcGVyc3BlY3RpdmUKLSAgKiBJRHMgbXVzdCBiZSBlcXVhbCBmb3IgdHdvIGJyZWFkY3J1bWJzIHRvIGJlIGVxdWFsLgotICAqIEBwYXJhbSBCcmVhZENydW1iIEEgYnJlYWRjcnVtYi4KLSAgKiBAcmV0dXJuIGJvb2xlYW4gVGhlIHJlc3VsdCBvZiB0aGUgZXF1YWxpdHkgdGVzdC4KLSAgKi8KLSAgcHVibGljIGJvb2xlYW4gZXF1YWxzKEJyZWFkQ3J1bWIgYikKLSAgewotICAgIHJldHVybiAoKHVybF8uZXF1YWxzKGIuZ2V0VVJMKCkpKSAmJiAocGVyc3BlY3RpdmVJZF8gPT0gYi5nZXRQZXJzcGVjdGl2ZUlkKCkpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9Db250cm9sbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0NvbnRyb2xsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE5Nzg3Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0NvbnRyb2xsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUuQWN0aW9uRW5naW5lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5XU0lMUGVyc3BlY3RpdmU7Ci0KLXB1YmxpYyBjbGFzcyBDb250cm9sbGVyIGV4dGVuZHMgTWVzc2FnZVByb3ZpZGVyCi17Ci0gIHByaXZhdGUgU3RyaW5nIHNlc3Npb25JZF87Ci0gIHByaXZhdGUgU3RyaW5nIHN0YXRlTG9jYXRpb25fOwotICBwcml2YXRlIFN0cmluZyBkZWZhdWx0RmF2b3JpdGVzTG9jYXRpb25fOwotICBwcml2YXRlIFN0cmluZyBjb250ZXh0UGF0aF87Ci0gIHByaXZhdGUgaW50IGhpc3RvcnlEaXJlY3Rpb25fOwotICBwcml2YXRlIEhpc3RvcnkgaGlzdG9yeV87Ci0gIHByaXZhdGUgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZV87Ci0gIHByaXZhdGUgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZV87Ci0gIHByaXZhdGUgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZV87Ci0gIHByaXZhdGUgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2b3JpdGVzUGVyc3BlY3RpdmVfOwotICBwcml2YXRlIFBlcnNwZWN0aXZlIGN1cnJlbnRQZXJzcGVjdGl2ZV87Ci0gIHByaXZhdGUgYm9vbGVhbiBpc1BlcnNwZWN0aXZlQ29udGVudEJsYW5rXzsKLSAgcHJpdmF0ZSBBY3Rpb25FbmdpbmUgYWN0aW9uRW5naW5lOwotICAKLSAgLy8gV1NETCBCcm93c2VyCi0gIHByaXZhdGUgaW50IHdzZGxUeXBlXzsKLQotICBwdWJsaWMgQ29udHJvbGxlcigpCi0gIHsKLSAgICBzdXBlcigiZXhwbG9yZXIiKTsKLSAgICBjb250ZXh0UGF0aF8gPSBudWxsOwotCXN0YXRlTG9jYXRpb25fID0gbnVsbDsKLSAgICBoaXN0b3J5XyA9IG5ldyBIaXN0b3J5KCk7Ci0gICAgdWRkaVBlcnNwZWN0aXZlXyA9IG5ldyBVRERJUGVyc3BlY3RpdmUodGhpcyk7Ci0gICAgd3NpbFBlcnNwZWN0aXZlXyA9IG5ldyBXU0lMUGVyc3BlY3RpdmUodGhpcyk7Ci0gICAgd3NkbFBlcnNwZWN0aXZlXyA9IG5ldyBXU0RMUGVyc3BlY3RpdmUodGhpcyk7Ci0gICAgZmF2b3JpdGVzUGVyc3BlY3RpdmVfID0gbmV3IEZhdm9yaXRlc1BlcnNwZWN0aXZlKHRoaXMpOwotICAgIC8vIFNldCB0aGUgZGVmYXVsdCBwZXJzcGVjdGl2ZSB0byBVRERJLgotICAgIGN1cnJlbnRQZXJzcGVjdGl2ZV8gPSB1ZGRpUGVyc3BlY3RpdmVfOwotICAgIGhpc3RvcnlEaXJlY3Rpb25fID0gQWN0aW9uSW5wdXRzLkpVTVBfQkFDSzsKLSAgICB3c2RsVHlwZV8gPSBBY3Rpb25JbnB1dHMuV1NETF9UWVBFX1NFUlZJQ0VfSU5URVJGQUNFOwotICAgIGlzUGVyc3BlY3RpdmVDb250ZW50QmxhbmtfID0gdHJ1ZTsKLSAgICBhY3Rpb25FbmdpbmUgPSBuZXcgQWN0aW9uRW5naW5lKHRoaXMpOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRTdGF0ZUxvY2F0aW9uKFN0cmluZyBzdGF0ZUxvY2F0aW9uKQotICB7Ci0Jc3RhdGVMb2NhdGlvbl8gPSBzdGF0ZUxvY2F0aW9uOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0RGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uKFN0cmluZyBkZWZhdWx0RmF2b3JpdGVzTG9jYXRpb24pCi0gIHsKLQkgIGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbl8gPSBkZWZhdWx0RmF2b3JpdGVzTG9jYXRpb247Ci0gIH0KLSAgCi0gIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIENvbnRyb2xsZXIgYmVhbiBpcyBpbnN0YW50aWF0ZWQuCi0gIHByaXZhdGUgZmluYWwgdm9pZCBzZXRDb250ZXh0UGF0aChTdHJpbmcgY29udGV4dFBhdGgpCi0gIHsKLSAgICBpZiAoY29udGV4dFBhdGhfID09IG51bGwpCi0gICAgICBjb250ZXh0UGF0aF8gPSBjb250ZXh0UGF0aDsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQYXRoV2l0aENvbnRleHQoU3RyaW5nIHJlbGF0aXZlUGF0aCkKLSAgewotICAgIGlmIChyZWxhdGl2ZVBhdGggPT0gbnVsbCkKLSAgICAgIHJldHVybiByZWxhdGl2ZVBhdGg7Ci0gICAgU3RyaW5nQnVmZmVyIHBhdGggPSBuZXcgU3RyaW5nQnVmZmVyKHJlbGF0aXZlUGF0aCk7Ci0gICAgaWYgKGNvbnRleHRQYXRoXyAhPSBudWxsKQotICAgICAgcGF0aC5pbnNlcnQoMCwnLycpLmluc2VydCgwLGNvbnRleHRQYXRoXyk7Ci0gICAgcmV0dXJuIHBhdGgudG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U2Vzc2lvbklkKCkKLSAgewotICAgIHJldHVybiBzZXNzaW9uSWRfOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldENvbnRleHRQYXRoKCkKLSAgewotICAgIHJldHVybiBjb250ZXh0UGF0aF87Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U2VydmxldEVuZ2luZVN0YXRlTG9jYXRpb24oKSB7Ci0JcmV0dXJuIHN0YXRlTG9jYXRpb25fOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldERlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbiAoKSB7Ci0JcmV0dXJuIGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbl87Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGluaXQoU3RyaW5nIHNlc3Npb25JZCxTZXJ2bGV0Q29udGV4dCBhcHBsaWNhdGlvbixTdHJpbmcgY29udGV4dFBhdGgpCi0gIHsKLSAgICBzZXNzaW9uSWRfID0gc2Vzc2lvbklkOwotICAgIHNldENvbnRleHRQYXRoKGNvbnRleHRQYXRoKTsKLSAgICB1ZGRpUGVyc3BlY3RpdmVfLmluaXRQZXJzcGVjdGl2ZShhcHBsaWNhdGlvbik7Ci0gICAgd3NpbFBlcnNwZWN0aXZlXy5pbml0UGVyc3BlY3RpdmUoYXBwbGljYXRpb24pOwotICAgIHdzZGxQZXJzcGVjdGl2ZV8uaW5pdFBlcnNwZWN0aXZlKGFwcGxpY2F0aW9uKTsKLSAgICBmYXZvcml0ZXNQZXJzcGVjdGl2ZV8uaW5pdFBlcnNwZWN0aXZlKGFwcGxpY2F0aW9uKTsKLSAgfQotCi0gIC8vIFNldHRlciBmb3IgdGhlIGN1cnJlbnQgcGVyc3BlY3RpdmUuCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldEN1cnJlbnRQZXJzcGVjdGl2ZShpbnQgcGVyc3BlY3RpdmUpCi0gIHsKLSAgICBzd2l0Y2ggKHBlcnNwZWN0aXZlKQotICAgIHsKLSAgICAgIGNhc2UgQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1VEREk6Ci0gICAgICAgIGN1cnJlbnRQZXJzcGVjdGl2ZV8gPSB1ZGRpUGVyc3BlY3RpdmVfOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1dTSUw6Ci0gICAgICAgIGN1cnJlbnRQZXJzcGVjdGl2ZV8gPSB3c2lsUGVyc3BlY3RpdmVfOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1dTREw6Ci0gICAgICAgIGN1cnJlbnRQZXJzcGVjdGl2ZV8gPSB3c2RsUGVyc3BlY3RpdmVfOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX0ZBVk9SSVRFUzoKLSAgICAgICAgY3VycmVudFBlcnNwZWN0aXZlXyA9IGZhdm9yaXRlc1BlcnNwZWN0aXZlXzsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0KLSAgLy8gR2V0dGVyIGZvciB0aGUgY3VycmVudCBwZXJzcGVjdGl2ZS4KLSAgcHVibGljIGZpbmFsIFBlcnNwZWN0aXZlIGdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpCi0gIHsKLSAgICByZXR1cm4gY3VycmVudFBlcnNwZWN0aXZlXzsKLSAgfQotCi0gIC8vIEdldHRlciBmb3IgdGhlIFVEREkgcGVyc3BlY3RpdmUuCi0gIHB1YmxpYyBmaW5hbCBVRERJUGVyc3BlY3RpdmUgZ2V0VURESVBlcnNwZWN0aXZlKCkKLSAgewotICAgIHJldHVybiB1ZGRpUGVyc3BlY3RpdmVfOwotICB9Ci0KLSAgLy8gR2V0dGVyIGZvciB0aGUgV1NJTCBwZXJzcGVjdGl2ZS4KLSAgcHVibGljIGZpbmFsIFdTSUxQZXJzcGVjdGl2ZSBnZXRXU0lMUGVyc3BlY3RpdmUoKQotICB7Ci0gICAgcmV0dXJuIHdzaWxQZXJzcGVjdGl2ZV87Ci0gIH0KLSAgCi0gIC8vIEdldHRlciBmb3IgdGhlIFdTREwgcGVyc3BlY3RpdmUuCi0gIHB1YmxpYyBmaW5hbCBXU0RMUGVyc3BlY3RpdmUgZ2V0V1NETFBlcnNwZWN0aXZlKCkKLSAgewotICAgIHJldHVybiB3c2RsUGVyc3BlY3RpdmVfOwotICB9Ci0KLSAgLy8gR2V0dGVyIGZvciB0aGUgRmF2b3JpdGVzIHBlcnNwZWN0aXZlLgotICBwdWJsaWMgZmluYWwgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKSB7Ci0gICAgcmV0dXJuIGZhdm9yaXRlc1BlcnNwZWN0aXZlXzsKLSAgfQotICAKLSAgLy8gR2V0dGVyIGZvciB0aGUgYWN0aW9uIGVuZ2luZQotICBwdWJsaWMgZmluYWwgQWN0aW9uRW5naW5lIGdldEFjdGlvbkVuZ2luZSgpIHsKLSAgICByZXR1cm4gYWN0aW9uRW5naW5lOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gYWRkVG9IaXN0b3J5KGludCBwZXJzcGVjdGl2ZUlkLFN0cmluZyB1cmwpCi0gIHsKLSAgICBpZiAodXJsICE9IG51bGwpCi0gICAgICByZXR1cm4gaGlzdG9yeV8uYWRkQnJlYWRDcnVtYihuZXcgQnJlYWRDcnVtYihwZXJzcGVjdGl2ZUlkLHVybCkpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8vIFdyYXBwZXIgZm9yIG1vdmluZyBmb3J3YXJkIGluIHRoZSBoaXN0b3J5IGxpc3QgYW5kIG9idGFpbmluZyB0aGUgYnJlYWRjcnVtYi4KLSAgcHVibGljIGZpbmFsIEJyZWFkQ3J1bWIgZm9yd2FyZCgpCi0gIHsKLSAgICBoaXN0b3J5RGlyZWN0aW9uXyA9IEFjdGlvbklucHV0cy5KVU1QX0ZPUldBUkQ7Ci0gICAgcmV0dXJuIGhpc3RvcnlfLmZvcndhcmQoKTsKLSAgfQotCi0gIC8vIFdyYXBwZXIgZm9yIG1vdmluZyBiYWNrIGluIHRoZSBoaXN0b3J5IGxpc3QgYW5kIG9idGFpbmluZyB0aGUgYnJlYWRjcnVtYi4KLSAgcHVibGljIGZpbmFsIEJyZWFkQ3J1bWIgYmFjaygpCi0gIHsKLSAgICBoaXN0b3J5RGlyZWN0aW9uXyA9IEFjdGlvbklucHV0cy5KVU1QX0JBQ0s7Ci0gICAgcmV0dXJuIGhpc3RvcnlfLmJhY2soKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0SGlzdG9yeURpcmVjdGlvbigpCi0gIHsKLSAgICByZXR1cm4gaGlzdG9yeURpcmVjdGlvbl87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBwcm9jZXNzU3RhbGVCcmVhZENydW1iKCkKLSAgewotICAgIGhpc3RvcnlfLnJlbW92ZUN1cnJlbnRCcmVhZENydW1iKCk7Ci0gIH0KLSAgCi0gIC8vIFdTREwgQnJvd3NlcgotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRXU0RMVHlwZShpbnQgd3NkbFR5cGUpCi0gIHsKLSAgICB3c2RsVHlwZV8gPSB3c2RsVHlwZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0V1NETFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHdzZGxUeXBlXzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNQZXJzcGVjdGl2ZUNvbnRlbnRCbGFuaygpCi0gIHsKLSAgICByZXR1cm4gaXNQZXJzcGVjdGl2ZUNvbnRlbnRCbGFua187Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGVuYWJsZVBlcnNwZWN0aXZlQ29udGVudEJsYW5rKGJvb2xlYW4gaXNQZXJzcGVjdGl2ZUNvbnRlbnRCbGFuaykKLSAgewotICAgIGlzUGVyc3BlY3RpdmVDb250ZW50QmxhbmtfID0gaXNQZXJzcGVjdGl2ZUNvbnRlbnRCbGFuazsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIHZvaWQgZHVtcEhpc3RvcnkoKQotICB7Ci0gICAgaGlzdG9yeV8uZHVtcCgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0ZvbGRlck5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvRm9sZGVyTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmEzOTE4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvRm9sZGVyTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEZvbGRlck5vZGUgZXh0ZW5kcyBOb2RlCi17Ci0gIHB1YmxpYyBGb2xkZXJOb2RlKFRyZWVFbGVtZW50IGVsZW1lbnQsTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsaW50IG5vZGVEZXB0aCkKLSAgewotICAgIHN1cGVyKGVsZW1lbnQsbm9kZU1hbmFnZXIsbm9kZURlcHRoLCJpbWFnZXMvZm9sZGVyX2Nsb3NlZC5naWYiKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0T3BlbkltYWdlUGF0aCgpCi0gIHsKLSAgICByZXR1cm4gImltYWdlcy9mb2xkZXJfb3Blbi5naWYiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0Zvcm1Ub29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0Zvcm1Ub29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMmY0N2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9Gb3JtVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Ub29sVHlwZXM7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBGb3JtVG9vbCBleHRlbmRzIFRvb2wgaW1wbGVtZW50cyBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UKLXsKLSAgcHJvdGVjdGVkIEZvcm1Ub29sUHJvcGVydGllcyBmb3JtVG9vbFByb3BlcnRpZXNfOwotCi0gIHB1YmxpYyBGb3JtVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlcixTdHJpbmcgZW5hYmxlZEltYWdlTGluayxTdHJpbmcgaGlnaGxpZ2h0ZWRJbWFnZUxpbmssU3RyaW5nIGFsdCkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLGVuYWJsZWRJbWFnZUxpbmssaGlnaGxpZ2h0ZWRJbWFnZUxpbmssYWx0LFRvb2xUeXBlcy5GT1JNKTsKLSAgICBmb3JtVG9vbFByb3BlcnRpZXNfID0gbmV3IEZvcm1Ub29sUHJvcGVydGllcygpOwotICAgIGluaXREZWZhdWx0UHJvcGVydGllcygpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKCkKLSAgewotICB9Ci0KLSAgcHVibGljIGZpbmFsIE9iamVjdCBnZXRQcm9wZXJ0eShPYmplY3Qga2V5KQotICB7Ci0gICAgcmV0dXJuIGZvcm1Ub29sUHJvcGVydGllc18uZ2V0UHJvcGVydHkoa2V5KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldFByb3BlcnR5KE9iamVjdCBrZXksT2JqZWN0IHZhbHVlKQotICB7Ci0gICAgZm9ybVRvb2xQcm9wZXJ0aWVzXy5zZXRQcm9wZXJ0eShrZXksdmFsdWUpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgcmVtb3ZlUHJvcGVydHkoT2JqZWN0IGtleSkKLSAgewotICAgIGZvcm1Ub29sUHJvcGVydGllc18ucmVtb3ZlUHJvcGVydHkoa2V5KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGNsZWFyUHJvcGVydHlUYWJsZSgpCi0gIHsKLSAgICBmb3JtVG9vbFByb3BlcnRpZXNfLmNsZWFyUHJvcGVydHlUYWJsZSgpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgdXBkYXRlUHJvcGVydHlUYWJsZShIYXNodGFibGUgbmV3UHJvcGVydHlUYWJsZSkKLSAgewotICAgIGZvcm1Ub29sUHJvcGVydGllc18udXBkYXRlUHJvcGVydHlUYWJsZShuZXdQcm9wZXJ0eVRhYmxlKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldFByb3BlcnR5VGFibGUoSGFzaHRhYmxlIG5ld1Byb3BlcnR5VGFibGUpCi0gIHsKLSAgICBmb3JtVG9vbFByb3BlcnRpZXNfLnNldFByb3BlcnR5VGFibGUobmV3UHJvcGVydHlUYWJsZSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBmbGFnRXJyb3IoT2JqZWN0IGlucHV0S2V5KQotICB7Ci0gICAgZm9ybVRvb2xQcm9wZXJ0aWVzXy5mbGFnRXJyb3IoaW5wdXRLZXkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgZmxhZ1Jvd0Vycm9yKE9iamVjdCBpbnB1dEtleSxpbnQgcm93TnVtYmVyKQotICB7Ci0gICAgZm9ybVRvb2xQcm9wZXJ0aWVzXy5mbGFnUm93RXJyb3IoaW5wdXRLZXkscm93TnVtYmVyKTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIHZvaWQgZmxhZ1Jvd0Vycm9yKE9iamVjdCBpbnB1dEtleSxPYmplY3Qgcm93SWQpCi0gIHsKLSAgICBmb3JtVG9vbFByb3BlcnRpZXNfLmZsYWdSb3dFcnJvcihpbnB1dEtleSxyb3dJZCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBjbGVhckVycm9ycygpCi0gIHsKLSAgICBmb3JtVG9vbFByb3BlcnRpZXNfLmNsZWFyRXJyb3JzKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc0lucHV0VmFsaWQoT2JqZWN0IGlucHV0S2V5KQotICB7Ci0gICAgcmV0dXJuIGZvcm1Ub29sUHJvcGVydGllc18uaXNJbnB1dFZhbGlkKGlucHV0S2V5KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzUm93SW5wdXRWYWxpZChPYmplY3QgaW5wdXRLZXksaW50IHJvd051bWJlcikKLSAgewotICAgIHJldHVybiBmb3JtVG9vbFByb3BlcnRpZXNfLmlzUm93SW5wdXRWYWxpZChpbnB1dEtleSxTdHJpbmcudmFsdWVPZihyb3dOdW1iZXIpKTsKLSAgfQotICAKLSAgLy8gVGhlIHJvdyBudW1iZXIgbWF5IGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgYSB1bmlxdWUgb2JqZWN0IChlLmcuIFVVSUQpCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzUm93SW5wdXRWYWxpZChPYmplY3QgaW5wdXRLZXksT2JqZWN0IHJvd0lkKQotICB7Ci0gICAgcmV0dXJuIGZvcm1Ub29sUHJvcGVydGllc18uaXNSb3dJbnB1dFZhbGlkKGlucHV0S2V5LHJvd0lkKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGluaygpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9Gb3JtVG9vbFByb3BlcnRpZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvRm9ybVRvb2xQcm9wZXJ0aWVzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwY2Y3OWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9Gb3JtVG9vbFByb3BlcnRpZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLQotcHVibGljIGNsYXNzIEZvcm1Ub29sUHJvcGVydGllcyBpbXBsZW1lbnRzIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZQotewotICBwcml2YXRlIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlXzsKLSAgcHJpdmF0ZSBIYXNodGFibGUgZXJyYW50VmFsdWVzXzsKLQotICBwdWJsaWMgRm9ybVRvb2xQcm9wZXJ0aWVzKCkKLSAgewotICAgIHByb3BlcnR5VGFibGVfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGVycmFudFZhbHVlc18gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgT2JqZWN0IGdldFByb3BlcnR5KE9iamVjdCBrZXkpCi0gIHsKLSAgICByZXR1cm4gcHJvcGVydHlUYWJsZV8uZ2V0KGtleSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRQcm9wZXJ0eShPYmplY3Qga2V5LE9iamVjdCB2YWx1ZSkKLSAgewotICAgIHByb3BlcnR5VGFibGVfLnB1dChrZXksdmFsdWUpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgcmVtb3ZlUHJvcGVydHkoT2JqZWN0IGtleSkKLSAgewotICAgIHByb3BlcnR5VGFibGVfLnJlbW92ZShrZXkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgY2xlYXJQcm9wZXJ0eVRhYmxlKCkKLSAgewotICAgIHByb3BlcnR5VGFibGVfLmNsZWFyKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCB1cGRhdGVQcm9wZXJ0eVRhYmxlKEhhc2h0YWJsZSBuZXdQcm9wZXJ0eVRhYmxlKQotICB7Ci0gICAgRW51bWVyYXRpb24gZSA9IG5ld1Byb3BlcnR5VGFibGUua2V5cygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChrZXksbmV3UHJvcGVydHlUYWJsZS5nZXQoa2V5KSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0UHJvcGVydHlUYWJsZShIYXNodGFibGUgbmV3UHJvcGVydHlUYWJsZSkKLSAgewotICAgIGNsZWFyUHJvcGVydHlUYWJsZSgpOwotICAgIHVwZGF0ZVByb3BlcnR5VGFibGUobmV3UHJvcGVydHlUYWJsZSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBmbGFnRXJyb3IoT2JqZWN0IGlucHV0S2V5KQotICB7Ci0gICAgaWYgKGlzSW5wdXRWYWxpZChpbnB1dEtleSkpCi0gICAgICBlcnJhbnRWYWx1ZXNfLnB1dChpbnB1dEtleSxCb29sZWFuLlRSVUUpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgZmxhZ1Jvd0Vycm9yKE9iamVjdCBpbnB1dEtleSxpbnQgcm93TnVtYmVyKQotICB7Ci0gICAgZmxhZ1Jvd0Vycm9yKGlucHV0S2V5LFN0cmluZy52YWx1ZU9mKHJvd051bWJlcikpOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBmbGFnUm93RXJyb3IoT2JqZWN0IGlucHV0S2V5LE9iamVjdCByb3dJZCkKLSAgewotICAgIE9iamVjdCBlcnJvck9iamVjdCA9IGVycmFudFZhbHVlc18uZ2V0KGlucHV0S2V5KTsKLSAgICBIYXNodGFibGUgcm93SGFzaDsKLSAgICBpZiAoZXJyb3JPYmplY3QgaW5zdGFuY2VvZiBIYXNodGFibGUpCi0gICAgICByb3dIYXNoID0gKEhhc2h0YWJsZSllcnJvck9iamVjdDsKLSAgICBlbHNlCi0gICAgICByb3dIYXNoID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHJvd0hhc2gucHV0KHJvd0lkLEJvb2xlYW4uVFJVRSk7Ci0gICAgZXJyYW50VmFsdWVzXy5wdXQoaW5wdXRLZXkscm93SGFzaCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGNsZWFyRXJyb3JzKCkKLSAgewotICAgIGVycmFudFZhbHVlc18uY2xlYXIoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzSW5wdXRWYWxpZChPYmplY3QgaW5wdXRLZXkpCi0gIHsKLSAgICByZXR1cm4gKGVycmFudFZhbHVlc18uZ2V0KGlucHV0S2V5KSA9PSBudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzUm93SW5wdXRWYWxpZChPYmplY3QgaW5wdXRLZXksaW50IHJvd051bWJlcikKLSAgewotICAgIHJldHVybiBpc1Jvd0lucHV0VmFsaWQoaW5wdXRLZXksU3RyaW5nLnZhbHVlT2Yocm93TnVtYmVyKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzUm93SW5wdXRWYWxpZChPYmplY3QgaW5wdXRLZXksT2JqZWN0IHJvd0lkKQotICB7Ci0gICAgSGFzaHRhYmxlIHJvd0hhc2ggPSAoSGFzaHRhYmxlKWVycmFudFZhbHVlc18uZ2V0KGlucHV0S2V5KTsKLSAgICBpZiAocm93SGFzaCA9PSBudWxsKQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIChyb3dIYXNoLmdldChyb3dJZCkgPT0gbnVsbCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0Zvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzA3NDc5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi1wdWJsaWMgYWJzdHJhY3QgaW50ZXJmYWNlIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZQotewotICAvLyBHZXR0ZXIgYW5kIFNldHRlciBmb3IgYSBwcm9wZXJ0eS4KLSAgcHVibGljIGFic3RyYWN0IE9iamVjdCBnZXRQcm9wZXJ0eShPYmplY3Qga2V5KTsKLSAgcHVibGljIGFic3RyYWN0IHZvaWQgc2V0UHJvcGVydHkoT2JqZWN0IGtleSxPYmplY3QgdmFsdWUpOwotICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZW1vdmVQcm9wZXJ0eShPYmplY3Qga2V5KTsKLQotICAvLyBQcm9wZXJ0eSB0YWJsZSBvcGVyYXRvcnMuCi0gIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGNsZWFyUHJvcGVydHlUYWJsZSgpOwotICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCB1cGRhdGVQcm9wZXJ0eVRhYmxlKEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlKTsKLSAgcHVibGljIGFic3RyYWN0IHZvaWQgc2V0UHJvcGVydHlUYWJsZShIYXNodGFibGUgcHJvcGVydHlUYWJsZSk7Ci0KLSAgLy8gRXJyb3IgaGFuZGxpbmcuCi0gIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGZsYWdFcnJvcihPYmplY3QgaW5wdXRLZXkpOwotICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBmbGFnUm93RXJyb3IoT2JqZWN0IGlucHV0S2V5LGludCByb3dOdW1iZXIpOwotICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBmbGFnUm93RXJyb3IoT2JqZWN0IGlucHV0S2V5LE9iamVjdCByb3dJZCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGNsZWFyRXJyb3JzKCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBib29sZWFuIGlzSW5wdXRWYWxpZChPYmplY3QgaW5wdXRLZXkpOwotICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBpc1Jvd0lucHV0VmFsaWQoT2JqZWN0IGlucHV0S2V5LGludCByb3dOdW1iZXIpOwotICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBpc1Jvd0lucHV0VmFsaWQoT2JqZWN0IGlucHV0S2V5LE9iamVjdCByb3dJZCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0hpc3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvSGlzdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODAyZDQ1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvSGlzdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotLy8gQSBjbGFzcyByZXByZXNlbnRpbmcgYSBWZWN0b3Igb2YgYnJlYWRjcnVtYnMuIEEgcG9zaXRpb24gaW5kZXggaXMgdXNlZAotLy8gdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgZGF0YSBzdHJ1Y3R1cmUuCi1wdWJsaWMgY2xhc3MgSGlzdG9yeQotewotICBwcml2YXRlIFZlY3RvciBpdGVtc187Ci0gIHByaXZhdGUgaW50IHBvc2l0aW9uXzsKLQotICBwdWJsaWMgSGlzdG9yeSgpCi0gIHsKLSAgICBpdGVtc18gPSBuZXcgVmVjdG9yKCk7Ci0gICAgcG9zaXRpb25fID0gLTE7Ci0gIH0KLQotICAvLyBBZGQgYSBuZXcgYnJlYWRjcnVtYiB0byB0aGUgaGlzdG9yeSBsaXN0LiBXaGVuIGFkZGluZyBhIG5ldyBicmVhZGNydW1iCi0gIC8vIHdpdGhpbiB0aGUgY3VycmVudCBsaXN0LCBhbGwgYnJlYWRjcnVtYnMgYWZ0ZXIgdGhlIG5ld2x5IGFkZGVkIG9uZSBhcmUKLSAgLy8gcmVtb3ZlZC4KLSAgcHVibGljIGJvb2xlYW4gYWRkQnJlYWRDcnVtYihCcmVhZENydW1iIGIpCi0gIHsKLSAgICBpbnQgbnVtYmVyT2ZJdGVtcyA9IGl0ZW1zXy5zaXplKCk7Ci0gICAgaWYgKG51bWJlck9mSXRlbXMgPT0gMCkKLSAgICB7Ci0gICAgICBwb3NpdGlvbl8rKzsKLSAgICAgIGl0ZW1zXy5hZGRFbGVtZW50KGIpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBCcmVhZENydW1iIGN1cnJlbnRCcmVhZENydW1iID0gKEJyZWFkQ3J1bWIpaXRlbXNfLmVsZW1lbnRBdChwb3NpdGlvbl8pOwotICAgICAgaWYgKCFjdXJyZW50QnJlYWRDcnVtYi5lcXVhbHMoYikpCi0gICAgICB7Ci0gICAgICAgIHBvc2l0aW9uXysrOwotICAgICAgICBpdGVtc18uaW5zZXJ0RWxlbWVudEF0KGIscG9zaXRpb25fKTsKLSAgICAgICAgZm9yIChpbnQgaT1pdGVtc18uc2l6ZSgpLTE7aT5wb3NpdGlvbl87aS0tKQotICAgICAgICAgIGl0ZW1zXy5yZW1vdmVFbGVtZW50QXQoaSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvLyBNb3ZlIGZvcndhcmQgd2l0aGluIHRoZSBoaXN0b3J5IGxpc3QgYW5kIG9idGFpbiB0aGUgYnJlYWRjcnVtYi4KLSAgcHVibGljIEJyZWFkQ3J1bWIgZm9yd2FyZCgpCi0gIHsKLSAgICBpZiAocG9zaXRpb25fIDwgaXRlbXNfLnNpemUoKS0xKQotICAgIHsKLSAgICAgIHBvc2l0aW9uXysrOwotICAgICAgQnJlYWRDcnVtYiBiID0gKEJyZWFkQ3J1bWIpaXRlbXNfLmVsZW1lbnRBdChwb3NpdGlvbl8pOwotICAgICAgcmV0dXJuIGI7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLy8gTW92ZSBiYWNrIHdpdGhpbiB0aGUgaGlzdG9yeSBsaXN0IGFuZCBvYnRhaW4gdGhlIGJyZWFkY3J1bWIuCi0gIHB1YmxpYyBCcmVhZENydW1iIGJhY2soKQotICB7Ci0gICAgaWYgKHBvc2l0aW9uXyA+IDApCi0gICAgewotICAgICAgcG9zaXRpb25fLS07Ci0gICAgICBCcmVhZENydW1iIGIgPSAoQnJlYWRDcnVtYilpdGVtc18uZWxlbWVudEF0KHBvc2l0aW9uXyk7Ci0gICAgICByZXR1cm4gYjsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmVDdXJyZW50QnJlYWRDcnVtYigpCi0gIHsKLSAgICBpdGVtc18ucmVtb3ZlRWxlbWVudEF0KHBvc2l0aW9uXyk7Ci0gICAgaWYgKHBvc2l0aW9uXyA+IGl0ZW1zXy5zaXplKCktMSkKLSAgICAgIHBvc2l0aW9uXy0tOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBkdW1wKCkKLSAgewotICAgIGZvciAoaW50IGk9MDtpPGl0ZW1zXy5zaXplKCk7aSsrKQotICAgIHsKLSAgICAgIGl0ZW1zXy5lbGVtZW50QXQoaSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0ltcG9ydFRvRmlsZVN5c3RlbVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvSW1wb3J0VG9GaWxlU3lzdGVtVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzkxYmMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvSW1wb3J0VG9GaWxlU3lzdGVtVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgSW1wb3J0VG9GaWxlU3lzdGVtVG9vbCBleHRlbmRzIEFjdGlvblRvb2wgewotICAgIHB1YmxpYyBJbXBvcnRUb0ZpbGVTeXN0ZW1Ub29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAiaW1hZ2VzL2ltcG9ydF9mc19lbmFibGVkLmdpZiIsICJpbWFnZXMvaW1wb3J0X2ZzX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0ltcG9ydFRvV29ya2JlbmNoVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9JbXBvcnRUb1dvcmtiZW5jaFRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhjM2VlZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0ltcG9ydFRvV29ya2JlbmNoVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgSW1wb3J0VG9Xb3JrYmVuY2hUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotICAgIHB1YmxpYyBJbXBvcnRUb1dvcmtiZW5jaFRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvaW1wb3J0X3RvX3dvcmtiZW5jaF9lbmFibGVkLmdpZiIsICJpbWFnZXMvaW1wb3J0X3RvX3dvcmtiZW5jaF9oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgICAgIHJldHVybiAiZm9ybXMvSW1wb3J0VG9Xb3JrYmVuY2hGb3JtLmpzcCI7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0xhdW5jaE9wdGlvbnNNYW5hZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0xhdW5jaE9wdGlvbnNNYW5hZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNjdiZTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9MYXVuY2hPcHRpb25zTWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDUwNiAgIDIwMjk0NSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBBbGxvdyBXU0UgdG8gYmUgbGF1bmNoZWQgZnJvbSBhIFdTSUwgZmlsZS4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldENvbnRleHQ7Ci1pbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXNzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5MYXVuY2hPcHRpb25zOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5XU0RMUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotCi1wdWJsaWMgY2xhc3MgTGF1bmNoT3B0aW9uc01hbmFnZXIKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgTGF1bmNoT3B0aW9uc01hbmFnZXIgaW5zdGFuY2VfOwotCi0gIHByaXZhdGUgSGFzaHRhYmxlIG9wdGlvbnNUYWJsZV87Ci0KLSAgcHJpdmF0ZSBMYXVuY2hPcHRpb25zTWFuYWdlcigpCi0gIHsKLSAgICBvcHRpb25zVGFibGVfID0gbmV3IEhhc2h0YWJsZSgpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBMYXVuY2hPcHRpb25zTWFuYWdlciBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICBpZiAoaW5zdGFuY2VfID09IG51bGwpCi0gICAgICBpbnN0YW5jZV8gPSBuZXcgTGF1bmNoT3B0aW9uc01hbmFnZXIoKTsKLSAgICByZXR1cm4gaW5zdGFuY2VfOwotICB9Ci0KLSAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIG1hbmFnZShTdHJpbmcga2V5LCBPYmplY3QgdmFsdWUsIFNlcnZsZXRDb250ZXh0IGFwcGxpY2F0aW9uKQotICB7Ci0gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nKQotICAgICAgbWFuYWdlU2Vzc2lvbihrZXksIChTdHJpbmcpdmFsdWUsIGFwcGxpY2F0aW9uKTsKLSAgICBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEhhc2h0YWJsZSkKLSAgICAgIG1hbmFnZU9wdGlvbnMoa2V5LCAoSGFzaHRhYmxlKXZhbHVlLCBhcHBsaWNhdGlvbik7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgbWFuYWdlU2Vzc2lvbihTdHJpbmcga2V5LCBTdHJpbmcgc2Vzc2lvbklkLCBTZXJ2bGV0Q29udGV4dCBhcHBsaWNhdGlvbikKLSAgewotICAgIE9iamVjdCBvYmogPSBvcHRpb25zVGFibGVfLnJlbW92ZShrZXkpOwotICAgIGlmIChvYmogIT0gbnVsbCAmJiAob2JqIGluc3RhbmNlb2YgSGFzaHRhYmxlKSkKLSAgICAgIGxvYWRPcHRpb25zKHNlc3Npb25JZCwgKEhhc2h0YWJsZSlvYmosIGFwcGxpY2F0aW9uKTsKLSAgICBlbHNlCi0gICAgICBvcHRpb25zVGFibGVfLnB1dChrZXksIHNlc3Npb25JZCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgbWFuYWdlT3B0aW9ucyhTdHJpbmcga2V5LCBIYXNodGFibGUgb3B0aW9ucywgU2VydmxldENvbnRleHQgYXBwbGljYXRpb24pCi0gIHsKLSAgICBPYmplY3Qgb2JqID0gb3B0aW9uc1RhYmxlXy5yZW1vdmUoa2V5KTsKLSAgICBpZiAob2JqICE9IG51bGwgJiYgKG9iaiBpbnN0YW5jZW9mIFN0cmluZykpCi0gICAgICBsb2FkT3B0aW9ucygoU3RyaW5nKW9iaiwgb3B0aW9ucywgYXBwbGljYXRpb24pOwotICAgIGVsc2UKLSAgICAgIG9wdGlvbnNUYWJsZV8ucHV0KGtleSwgb3B0aW9ucyk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgbG9hZE9wdGlvbnMoU3RyaW5nIHNlc3Npb25JZCwgSGFzaHRhYmxlIG9wdGlvbnMsIFNlcnZsZXRDb250ZXh0IGFwcGxpY2F0aW9uKQotICB7Ci0gICAgSHR0cFNlc3Npb24gaHR0cFNlc3Npb24gPSAoSHR0cFNlc3Npb24pYXBwbGljYXRpb24uZ2V0QXR0cmlidXRlKHNlc3Npb25JZCk7Ci0gICAgaWYgKGh0dHBTZXNzaW9uICE9IG51bGwpCi0gICAgewotICAgICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpaHR0cFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci0JICBTdHJpbmdbXSBzdGF0ZUxvY2F0aW9ucyA9IChTdHJpbmdbXSlvcHRpb25zLmdldChMYXVuY2hPcHRpb25zLlNUQVRFX0xPQ0FUSU9OKTsKLQkgIFN0cmluZ1tdIGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbnMgPSAoU3RyaW5nW10pb3B0aW9ucy5nZXQoTGF1bmNoT3B0aW9ucy5ERUZBVUxUX0ZBVk9SSVRFU19MT0NBVElPTik7Ci0gICAgICBTdHJpbmdbXSBpbnF1aXJ5VVJMcyA9IChTdHJpbmdbXSlvcHRpb25zLmdldChMYXVuY2hPcHRpb25zLklOUVVJUllfVVJMKTsKLSAgICAgIFN0cmluZ1tdIHB1Ymxpc2hVUkxzID0gKFN0cmluZ1tdKW9wdGlvbnMuZ2V0KExhdW5jaE9wdGlvbnMuUFVCTElTSF9VUkwpOwotICAgICAgU3RyaW5nW10gc2VydmljZU5hbWVzID0gKFN0cmluZ1tdKW9wdGlvbnMuZ2V0KExhdW5jaE9wdGlvbnMuU0VSVklDRV9OQU1FKTsKLSAgICAgIFN0cmluZ1tdIHNlcnZpY2VLZXlzID0gKFN0cmluZ1tdKW9wdGlvbnMuZ2V0KExhdW5jaE9wdGlvbnMuU0VSVklDRV9LRVkpOwotICAgICAgU3RyaW5nW10gd3NkbFVSTHMgPSAoU3RyaW5nW10pb3B0aW9ucy5nZXQoTGF1bmNoT3B0aW9ucy5XU0RMX1VSTCk7Ci0gICAgICBTdHJpbmdbXSB3c2lsVVJMcyA9IChTdHJpbmdbXSlvcHRpb25zLmdldChMYXVuY2hPcHRpb25zLldTSUxfVVJMKTsKLSAgICAgIFN0cmluZ1tdIGVuZHBvaW50cyA9IChTdHJpbmdbXSlvcHRpb25zLmdldChMYXVuY2hPcHRpb25zLldFQl9TRVJWSUNFX0VORFBPSU5UKTsKLSAgICAgIFN0cmluZ1tdIHNlcnZpY2VRTmFtZVN0cmluZ3MgPSAoU3RyaW5nW10pb3B0aW9ucy5nZXQoTGF1bmNoT3B0aW9ucy5TRVJWSUNFX1FOQU1FX1NUUklORyk7Ci0gICAgICBTdHJpbmdbXSBiaW5kaW5nTmFtZVN0cmluZ3MgPSAoU3RyaW5nW10pb3B0aW9ucy5nZXQoTGF1bmNoT3B0aW9ucy5CSU5ESU5HX05BTUVfU1RSSU5HKTsKLQkgIFN0cmluZyBzdGF0ZUxvY2F0aW9uID0gKHN0YXRlTG9jYXRpb25zID09IG51bGwgfHwgc3RhdGVMb2NhdGlvbnMubGVuZ3RoID09IDApID8gbnVsbCA6IHN0YXRlTG9jYXRpb25zWzBdOwotCSAgY29udHJvbGxlci5zZXRTdGF0ZUxvY2F0aW9uKHN0YXRlTG9jYXRpb24pOwotCSAgU3RyaW5nIGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbiA9IChkZWZhdWx0RmF2b3JpdGVzTG9jYXRpb25zID09IG51bGwgfHwgZGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9ucy5sZW5ndGggPT0gMCkgPyBudWxsIDogZGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uc1swXTsKLQkgIGNvbnRyb2xsZXIuc2V0RGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uKGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbik7Ci0gICAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICAgIHVkZGlQZXJzcGVjdGl2ZS5wcmVsb2FkVURESVJlZ2lzdHJpZXMoaW5xdWlyeVVSTHMsIHB1Ymxpc2hVUkxzKTsKLSAgICAgIHVkZGlQZXJzcGVjdGl2ZS5wcmVsb2FkU2VydmljZXMoaW5xdWlyeVVSTHMsc2VydmljZU5hbWVzLHNlcnZpY2VLZXlzKTsKLSAgICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgICAgd3NkbFBlcnNwZWN0aXZlLnByZWxvYWRXU0RMKHdzZGxVUkxzKTsKLSAgICAgIHdzZGxQZXJzcGVjdGl2ZS5wcmVsb2FkRW5kcG9pbnRzKHdzZGxVUkxzLCBlbmRwb2ludHMpOwotICAgICAgd3NkbFBlcnNwZWN0aXZlLnByZXNlbGVjdFNlcnZpY2VPckJpbmRpbmcod3NkbFVSTHMsc2VydmljZVFOYW1lU3RyaW5ncyxiaW5kaW5nTmFtZVN0cmluZ3MpOwotICAgICAgCi0gICAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5wcmVsb2FkV1NJTCggd3NpbFVSTHMgKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDViM2QzZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL0xhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbCBleHRlbmRzIEZvcm1Ub29sIHsKLSAgICBwdWJsaWMgTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvbGF1bmNoX3dzd2l6YXJkX2VuYWJsZWQuZ2lmIiwgImltYWdlcy9sYXVuY2hfd3N3aXphcmRfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gImZvcm1zL0xhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCI7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL01lc3NhZ2VCdW5kbGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTWVzc2FnZUJ1bmRsZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2E1ZDUyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTWVzc2FnZUJ1bmRsZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOwotCi0vKioKLSogQW4gbWVzc2FnZSBidW5kbGUgaXMgYSBjb2xsZWN0aW9uIG9mIG1lc3NhZ2VzIGRyYXduIGZyb20gc29tZQotKiBzZXQgb2YgcHJvcGVydGllcy4KLSovCi1wdWJsaWMgY2xhc3MgTWVzc2FnZUJ1bmRsZQotewotICBwcml2YXRlIFJlc291cmNlQnVuZGxlIGZSZXNvdXJjZUJ1bmRsZTsKLQotICAvKioKLSAgKiBDb25zdHJ1Y3RzIGEgbmV3IE1lc3NhZ2VCdW5kbGUgZnJvbSB0aGUgZ2l2ZW4gUmVzb3VyY2VCdW5kbGUuCi0gICovCi0gIHB1YmxpYyBNZXNzYWdlQnVuZGxlICggUmVzb3VyY2VCdW5kbGUgcmVzb3VyY2VCdW5kbGUgKQotICB7Ci0gICAgZlJlc291cmNlQnVuZGxlID0gcmVzb3VyY2VCdW5kbGU7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBtZXNzYWdlIGlkZW50aWZpZWQgYnkgbWVzc2FnZUlkLgotICAqIEBwYXJhbSBtZXNzYWdlSWQgVGhlIG1lc3NhZ2UgSUQuCi0gICogQHJldHVybiBTdHJpbmcgVGhlIG1lc3NhZ2UgdGV4dC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlICggU3RyaW5nIG1lc3NhZ2VJZCApCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICByZXR1cm4gZlJlc291cmNlQnVuZGxlLmdldFN0cmluZyhtZXNzYWdlSWQpOwotICAgIH0KLSAgICBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIG1lc3NhZ2VJZDsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBtZXNzYWdlIGlkZW50aWZpZWQgYnkgbWVzc2FnZUlkLgotICAqIEBwYXJhbSBtZXNzYWdlSWQgVGhlIG1lc3NhZ2UgSUQuCi0gICogQHBhcmFtIHN1YiBBIHN1YnN0aXR1dGlvbiB2YWx1ZSBmb3IgIiUxIiBpbiB0aGUgbWVzc2FnZS4KLSAgKiBAcmV0dXJuIFN0cmluZyBUaGUgbWVzc2FnZSB0ZXh0LgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UgKCBTdHJpbmcgbWVzc2FnZUlkLCBTdHJpbmcgc3ViICkKLSAgewotICAgIFN0cmluZ1tdIHMgPSB7c3VifTsKLSAgICByZXR1cm4gZ2V0TWVzc2FnZShtZXNzYWdlSWQscyk7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBtZXNzYWdlIGlkZW50aWZpZWQgYnkgbWVzc2FnZUlkLgotICAqIEBwYXJhbSBtZXNzYWdlSWQgVGhlIG1lc3NhZ2UgSUQuCi0gICogQHBhcmFtIHN1YiBTdWJzdGl0dXRpb24gdmFsdWVzIGZvciAiJTEuLiVuIiAoc3ViWzBdLi5zdWJbbi0xXSkgaW4KLSAgKiB0aGUgbWVzc2FnZS4KLSAgKiBAcmV0dXJuIFN0cmluZyBUaGUgbWVzc2FnZSB0ZXh0LgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UgKCBTdHJpbmcgbWVzc2FnZUlkLCBTdHJpbmdbXSBzdWIgKQotICB7Ci0gICAgU3RyaW5nIG0gPSBnZXRNZXNzYWdlKG1lc3NhZ2VJZCk7Ci0gICAgaW50IGxlbiA9IG0ubGVuZ3RoKCk7Ci0gICAgaW50IG1heCA9IHN1Yi5sZW5ndGg7Ci0gICAgU3RyaW5nQnVmZmVyIGIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgaW50IHBvcyA9IDA7Ci0gICAgd2hpbGUgKHBvcyA+PSAwKQotICAgIHsKLSAgICAgIGludCBwY3QgPSBtLmluZGV4T2YoJyUnLHBvcyk7Ci0gICAgICBpZiAocGN0ID49IDApCi0gICAgICB7Ci0gICAgICAgIGIuYXBwZW5kKG0uc3Vic3RyaW5nKHBvcyxwY3QpKTsKLSAgICAgICAgcG9zID0gcGN0ICsgMTsKLSAgICAgICAgaWYgKHBvcyA8IGxlbikKLSAgICAgICAgewotICAgICAgICAgIGNoYXIgZCA9IG0uY2hhckF0KHBvcyk7Ci0gICAgICAgICAgaWYgKENoYXJhY3Rlci5pc0RpZ2l0KGQpICYmIGQgIT0gJzAnKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGludCB2ID0gSW50ZWdlci5wYXJzZUludChuZXcgQ2hhcmFjdGVyKGQpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgaWYgKHYgPD0gbWF4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBiLmFwcGVuZChzdWJbdi0xXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGIuYXBwZW5kKCc/Jyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3MrKzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGIuYXBwZW5kKCclJyk7Ci0gICAgICAgICAgICBiLmFwcGVuZChkKTsKLSAgICAgICAgICAgIHBvcysrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBiLmFwcGVuZCgnJScpOwotICAgICAgICAgIHBvcyA9IC0xOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGIuYXBwZW5kKG0uc3Vic3RyaW5nKHBvcykpOwotICAgICAgICBwb3MgPSAtMTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGIudG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBSZXNvdXJjZUJ1bmRsZSBnZXRSZXNvdXJjZUJ1bmRsZSgpCi0gIHsKLSAgICByZXR1cm4gZlJlc291cmNlQnVuZGxlOwotICB9Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTWVzc2FnZVByb3ZpZGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL01lc3NhZ2VQcm92aWRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDUyZTRkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTWVzc2FnZVByb3ZpZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKLQotLy8gQSBDbGFzcyB3aGljaCBwcm92aWRlcyBTdHJpbmcgbWVzc2FnZXMuCi1wdWJsaWMgY2xhc3MgTWVzc2FnZVByb3ZpZGVyCi17Ci0gIHByb3RlY3RlZCBNZXNzYWdlQnVuZGxlIG1lc3NhZ2VCdW5kbGVfOwotICBwcml2YXRlIFN0cmluZyBtZXNzYWdlUHJvdmlkZXJOYW1lXzsKLQotICBwdWJsaWMgTWVzc2FnZVByb3ZpZGVyKFN0cmluZyBtZXNzYWdlQnVuZGxlRmlsZU5hbWUpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBMb2FkIHRoZSBtZXNzYWdlIGJ1bmRsZSBmcm9tIHRoZSBXRUItSU5GXGNsYXNzZXMgc3ViZGlyZWN0b3J5LgotICAgICAgbWVzc2FnZVByb3ZpZGVyTmFtZV8gPSBtZXNzYWdlQnVuZGxlRmlsZU5hbWU7Ci0gICAgICBtZXNzYWdlQnVuZGxlXyA9IG5ldyBNZXNzYWdlQnVuZGxlKFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShtZXNzYWdlQnVuZGxlRmlsZU5hbWUpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAJU3lzdGVtLmVyci5wcmludGxuKCJDb3VsZCBub3QgbG9hZCAiK21lc3NhZ2VCdW5kbGVGaWxlTmFtZSk7Ci0gICAgCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKFN0cmluZyBtZXNzYWdlSWQpCi0gIHsKLSAgICByZXR1cm4gbWVzc2FnZUJ1bmRsZV8uZ2V0TWVzc2FnZShtZXNzYWdlSWQpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKFN0cmluZyBtZXNzYWdlSWQsU3RyaW5nIHN1YikKLSAgewotICAgIHJldHVybiBtZXNzYWdlQnVuZGxlXy5nZXRNZXNzYWdlKG1lc3NhZ2VJZCxzdWIpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKFN0cmluZyBtZXNzYWdlSWQsU3RyaW5nW10gc3ViKQotICB7Ci0gICAgcmV0dXJuIG1lc3NhZ2VCdW5kbGVfLmdldE1lc3NhZ2UobWVzc2FnZUlkLHN1Yik7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TWVzc2FnZVByb3ZpZGVyTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gbWVzc2FnZVByb3ZpZGVyTmFtZV87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTWVzc2FnZVF1ZXVlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL01lc3NhZ2VRdWV1ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzgwOGVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTWVzc2FnZVF1ZXVlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5IVE1MVXRpbHM7Ci0KLXB1YmxpYyBjbGFzcyBNZXNzYWdlUXVldWUKLXsKLSAgcHJvdGVjdGVkIFZlY3RvciBtZXNzYWdlTGlzdF87Ci0KLSAgcHVibGljIE1lc3NhZ2VRdWV1ZSgpCi0gIHsKLSAgICBtZXNzYWdlTGlzdF8gPSBuZXcgVmVjdG9yKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRNZXNzYWdlKFN0cmluZyBtZXNzYWdlKQotICB7Ci0gICAgbWVzc2FnZUxpc3RfLmFkZEVsZW1lbnQobWVzc2FnZSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2VzRnJvbUxpc3QoKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIG1lc3NhZ2VzID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCi0gICAgaWYgKG1lc3NhZ2VMaXN0Xy5zaXplKCk9PTApCi0gICAgICByZXR1cm4gIiI7Ci0KLSAgICBFbnVtZXJhdGlvbiBlID0gbWVzc2FnZUxpc3RfLmVsZW1lbnRzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgU3RyaW5nIHRoaXNNZXNzYWdlID0gKFN0cmluZyllLm5leHRFbGVtZW50KCk7Ci0gICAgICBtZXNzYWdlcy5hcHBlbmQodGhpc01lc3NhZ2UpOwotICAgICAgbWVzc2FnZXMuYXBwZW5kKEhUTUxVdGlscy5MSU5FX1NFUEFSQVRPUik7Ci0gICAgfQotICAgIG1lc3NhZ2VMaXN0Xy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgIHJldHVybiBtZXNzYWdlcy50b1N0cmluZygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL05vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmE1M2I0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDUzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDMyNCAgIDE4NjQ1NiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkZyYW1lTmFtZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5IVE1MVXRpbHM7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBOb2RlCi17Ci0gIHByb3RlY3RlZCBUcmVlRWxlbWVudCBlbGVtZW50XzsKLSAgcHJvdGVjdGVkIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyXzsKLSAgcHJvdGVjdGVkIGludCBub2RlSWRfOwotICBwcm90ZWN0ZWQgaW50IG5vZGVEZXB0aF87Ci0gIHByb3RlY3RlZCBTdHJpbmcgaW1hZ2VQYXRoXzsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNPcGVuXzsKLSAgcHJvdGVjdGVkIFZlY3RvciBjaGlsZE5vZGVzXzsKLSAgcHJvdGVjdGVkIFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyXzsKLSAgcHJvdGVjdGVkIE5vZGUgcGFyZW50XzsKLSAgcHJpdmF0ZSBTdHJpbmcgYW5jaG9yTmFtZV87Ci0gIHByaXZhdGUgaW50IHZpZXdJZF87Ci0KLSAgcHVibGljIE5vZGUoVHJlZUVsZW1lbnQgZWxlbWVudCxOb2RlTWFuYWdlciBub2RlTWFuYWdlcixpbnQgbm9kZURlcHRoLFN0cmluZyBpbWFnZVBhdGgpCi0gIHsKLSAgICBlbGVtZW50XyA9IGVsZW1lbnQ7Ci0gICAgbm9kZU1hbmFnZXJfID0gbm9kZU1hbmFnZXI7Ci0gICAgbm9kZUlkXyA9IG5vZGVNYW5hZ2VyLmFkZFRvTm9kZVRhYmxlKHRoaXMpOwotICAgIG5vZGVEZXB0aF8gPSBub2RlRGVwdGg7Ci0gICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKTsKLSAgICBpZiAoaW1hZ2VQYXRoID09IG51bGwpCi0gICAgICBpbWFnZVBhdGhfID0gY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoTm9kZU1hbmFnZXIuUEFUSF9TUEFDRSk7Ci0gICAgZWxzZQotICAgICAgaW1hZ2VQYXRoXyA9IGltYWdlUGF0aDsKLSAgICBpc09wZW5fID0gdHJ1ZTsKLSAgICBjaGlsZE5vZGVzXyA9IG5ldyBWZWN0b3IoKTsKLSAgICB0b29sTWFuYWdlcl8gPSBuZXcgVG9vbE1hbmFnZXIodGhpcyk7Ci0gICAgaW5pdFRvb2xzKCk7Ci0gICAgYW5jaG9yTmFtZV8gPSAobmV3IFN0cmluZ0J1ZmZlcigiYWN0aW9uIikpLmFwcGVuZChub2RlSWRfKS50b1N0cmluZygpOwotICAgIHBhcmVudF8gPSBudWxsOwotICAgIHZpZXdJZF8gPSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQ7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBUcmVlRWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBub2RlLgotICAqIEByZXR1cm4gVHJlZUVsZW1lbnQgVGhlIGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbm9kZS4KLSAgKi8KLSAgcHVibGljIFRyZWVFbGVtZW50IGdldFRyZWVFbGVtZW50KCkKLSAgewotICAgIHJldHVybiBlbGVtZW50XzsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG5vZGUuCi0gICogQHJldHVybiBTdHJpbmcKLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROb2RlTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gZWxlbWVudF8uZ2V0TmFtZSgpOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgTm9kZU1hbmFnZXIgbWFuYWdpbmcgdGhpcyBub2RlLgotICAqIEByZXR1cm4gTm9kZU1hbmFnZXIKLSAgKi8KLSAgcHVibGljIE5vZGVNYW5hZ2VyIGdldE5vZGVNYW5hZ2VyKCkKLSAgewotICAgIHJldHVybiBub2RlTWFuYWdlcl87Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGlzIG5vZGUuCi0gICogQHJldHVybiBpbnQKLSAgKi8KLSAgcHVibGljIGludCBnZXROb2RlSWQoKQotICB7Ci0gICAgcmV0dXJuIG5vZGVJZF87Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBkZXB0aCBpbiB0aGUgdHJlZSBvZiB0aGlzIG5vZGUgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgbm9kZQotICAqIEByZXR1cm4gaW50Ci0gICovCi0gIHB1YmxpYyBpbnQgZ2V0Tm9kZURlcHRoKCkKLSAgewotICAgIHJldHVybiBub2RlRGVwdGhfOwotICB9Ci0KLSAgLyoqCi0gICogU2V0IHRoZSBwYXRoIG9mIHRoZSBpbWFnZSByZXByZXNlbnRpbmcgdGhpcyBjbGFzcyBvZiBOb2RlLgotICAqIEBwYXJhbSBTdHJpbmcgVGhlIHBhdGguCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldEltYWdlUGF0aChTdHJpbmcgcGF0aCkKLSAgewotICAgIGltYWdlUGF0aF8gPSBwYXRoOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0cnVlIGlmIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUgYXJlIHZpc2libGUuIFJldHVybnMgZmFsc2UKLSAgKiBpZiB0aGV5IGFyZSBub3QuCi0gICogQHJldHVybiBib29sZWFuCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGlzT3BlbigpCi0gIHsKLSAgICByZXR1cm4gaXNPcGVuXzsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzVmlzaWJsZSgpCi0gIHsKLSAgICBOb2RlIHBhcmVudE5vZGUgPSBwYXJlbnRfOwotICAgIHdoaWxlIChwYXJlbnROb2RlICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKCFwYXJlbnROb2RlLmlzT3BlbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5nZXRQYXJlbnQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgKiBTZXRzIHRoZSB2aXNpYmlsaXR5IG9mIHRoaXMgbm9kZSdzIGNoaWxkcmVuIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuCi0gICogVXBkYXRlcyB0aGUgTm9kZU1hbmFnZXIncyByZWNvcmQgb2YgdGhlIG1heGltdW0gZGVwdGggdmlzaWJsZSBpbiB0aGUgdHJlZS4KLSAgKiBAcGFyYW0gYm9vbGVhbgotICAqLwotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRWaXNpYmlsaXR5T2ZDaGlsZHJlbihib29sZWFuIG9wZW4pCi0gIHsKLSAgICBpc09wZW5fID0gb3BlbjsKLSAgICBub2RlTWFuYWdlcl8udXBkYXRlTWF4RGVwdGhWaXNpYmxlKCk7Ci0gIH0KLQotICAvKioKLSAgKiBHZXRzIHRoZSBtYXhpbXVtIGRlcHRoIGRpc3BsYXllZCBpbiB0aGlzIG5vZGUncyBicmFuY2ggb2YgdGhlIHRyZWUKLSAgKiBVc2VkIGJ5IE5vZGVNYW5hZ2VyIGZvciBodG1sIGRpc3BsYXkgcHVycG9zZXMuCi0gICogQHJldHVybiBpbnQKLSAgKi8KLSAgcHVibGljIGludCBnZXRNYXhEZXB0aFZpc2libGUoKQotICB7Ci0gICAgaWYgKCFpc09wZW5fKQotICAgICAgcmV0dXJuIG5vZGVEZXB0aF87Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGludCBjdXJyZW50RGVwdGggPSBub2RlRGVwdGhfOwotICAgICAgRW51bWVyYXRpb24gZSA9IGNoaWxkTm9kZXNfLmVsZW1lbnRzKCk7Ci0gICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHsKLSAgICAgICAgTm9kZSB0aGlzTm9kZSA9IChOb2RlKWUubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgaW50IGRlcHRoID0gdGhpc05vZGUuZ2V0TWF4RGVwdGhWaXNpYmxlKCk7Ci0gICAgICAgIGlmIChkZXB0aD5jdXJyZW50RGVwdGgpCi0gICAgICAgICAgY3VycmVudERlcHRoPWRlcHRoOwotICAgICAgfQotICAgICAgcmV0dXJuIGN1cnJlbnREZXB0aDsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRQYXJlbnQoTm9kZSBub2RlKQotICB7Ci0gICAgcGFyZW50XyA9IG5vZGU7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgTm9kZSBnZXRQYXJlbnQoKQotICB7Ci0gICAgcmV0dXJuIHBhcmVudF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRWaWV3SWQoaW50IHZpZXdJZCkKLSAgewotICAgIHZpZXdJZF8gPSB2aWV3SWQ7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgaW50IGdldFZpZXdJZCgpCi0gIHsKLSAgICByZXR1cm4gdmlld0lkXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0Vmlld1Rvb2xJZCgpCi0gIHsKLSAgICBUb29sTWFuYWdlciB2aWV3VG9vbE1hbmFnZXIgPSBnZXRWaWV3VG9vbE1hbmFnZXIoKTsKLSAgICBpZiAodmlld1Rvb2xNYW5hZ2VyICE9IG51bGwpCi0gICAgICByZXR1cm4gdmlld1Rvb2xNYW5hZ2VyLmdldFNlbGVjdGVkVG9vbElkKCk7Ci0gICAgcmV0dXJuIEFjdGlvbklucHV0cy5WSUVXVE9PTElEX0RFRkFVTFQ7Ci0gIH0KLQotICAvKioKLSAgKiBBZGRzIHRoZSBzcGVjaWZpZWQgbm9kZSBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZS4KLSAgKiBAcGFyYW0gTm9kZSBUaGUgY2hpbGQgYmVpbmcgYWRkZWQuCi0gICogQHJldHVybiBib29sZWFuIEFsd2F5cyB0cnVlLgotICAqLwotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBhZGRDaGlsZChOb2RlIGNoaWxkTm9kZSkKLSAgewotICAgIGNoaWxkTm9kZS5zZXRQYXJlbnQodGhpcyk7Ci0gICAgY2hpbGROb2Rlc18uYWRkRWxlbWVudChjaGlsZE5vZGUpOwotICAgIG5vZGVNYW5hZ2VyXy51cGRhdGVNYXhEZXB0aFZpc2libGUoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIGNoaWxkIG5vZGVzIG9mIHRoaXMgbm9kZS4gSWYgdGhpcyBub2RlIGhhcyBubyBjaGlsZHJlbiwgYW4KLSAgKiBlbXB0eSB2ZWN0b3IgaXMgcmV0dXJuZWQuCi0gICogQHJldHVybiBWZWN0b3IKLSAgKi8KLSAgcHVibGljIFZlY3RvciBnZXRDaGlsZE5vZGVzKCkKLSAgewotICAgIHJldHVybiBjaGlsZE5vZGVzXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBOb2RlIGdldENoaWxkTm9kZShUcmVlRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgRW51bWVyYXRpb24gZSA9IGNoaWxkTm9kZXNfLmVsZW1lbnRzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgTm9kZSBwcmVzZW50Tm9kZSA9IChOb2RlKWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIGlmIChwcmVzZW50Tm9kZS5nZXRUcmVlRWxlbWVudCgpID09IGVsZW1lbnQpCi0gICAgICAgIHJldHVybiBwcmVzZW50Tm9kZTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCByZW1vdmVDaGlsZE5vZGVzKGJvb2xlYW4gaXNFbnRyeSkKLSAgewotICAgIGludCBudW1iZXJPZkNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzXy5zaXplKCk7Ci0gICAgZm9yIChpbnQgaT1udW1iZXJPZkNoaWxkTm9kZXMtMTtpPj0wO2ktLSkKLSAgICB7Ci0gICAgICBOb2RlIGNoaWxkTm9kZSA9IChOb2RlKWNoaWxkTm9kZXNfLmVsZW1lbnRBdChpKTsKLSAgICAgIGNoaWxkTm9kZS5yZW1vdmVDaGlsZE5vZGVzKGZhbHNlKTsKLSAgICAgIG5vZGVNYW5hZ2VyXy5yZW1vdmVGcm9tTm9kZVRhYmxlKGNoaWxkTm9kZS5nZXROb2RlSWQoKSk7Ci0gICAgfQotICAgIGlmIChudW1iZXJPZkNoaWxkTm9kZXMgPiAwKQotICAgIHsKLSAgICAgIGNoaWxkTm9kZXNfLnJlbW92ZUFsbEVsZW1lbnRzKCk7Ci0gICAgICBpZiAoaXNFbnRyeSkKLSAgICAgICAgbm9kZU1hbmFnZXJfLnVwZGF0ZU1heERlcHRoVmlzaWJsZSgpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJlbW92ZUNoaWxkTm9kZShUcmVlRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgTm9kZSBjaGlsZE5vZGUgPSBnZXRDaGlsZE5vZGUoZWxlbWVudCk7Ci0gICAgaWYgKGNoaWxkTm9kZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGludCBjaGlsZE5vZGVJZCA9IGNoaWxkTm9kZS5nZXROb2RlSWQoKTsKLSAgICAgIGlmIChub2RlTWFuYWdlcl8uZ2V0U2VsZWN0ZWROb2RlSWQoKSA9PSBjaGlsZE5vZGVJZCkKLSAgICAgICAgbm9kZU1hbmFnZXJfLnNldFNlbGVjdGVkTm9kZUlkKG5vZGVJZF8pOwotICAgICAgY2hpbGROb2Rlc18ucmVtb3ZlRWxlbWVudChjaGlsZE5vZGUpOwotICAgICAgbm9kZU1hbmFnZXJfLnJlbW92ZUZyb21Ob2RlVGFibGUoY2hpbGROb2RlSWQpOwotICAgICAgbm9kZU1hbmFnZXJfLnVwZGF0ZU1heERlcHRoVmlzaWJsZSgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAqIEdldCB0aGUgbmFtZSBvZiB0aGUgSFRNTCBhbmNob3IgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbm9kZS4KLSAgKiBAcmV0dXJuIFN0cmluZyBUaGUgbmFtZSBvZiB0aGUgYW5jaG9yLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEFuY2hvck5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGFuY2hvck5hbWVfOwotICB9Ci0KLSAgcHVibGljIFRvb2xNYW5hZ2VyIGdldFRvb2xNYW5hZ2VyKCkKLSAgewotICAgIHJldHVybiB0b29sTWFuYWdlcl87Ci0gIH0KLQotICBwdWJsaWMgVG9vbE1hbmFnZXIgZ2V0Vmlld1Rvb2xNYW5hZ2VyKCkKLSAgewotICAgIGlmICh2aWV3SWRfICE9IEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCkKLSAgICB7Ci0gICAgICBWaWV3VG9vbCB2aWV3VG9vbCA9IChWaWV3VG9vbCl0b29sTWFuYWdlcl8uZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgICByZXR1cm4gdmlld1Rvb2wuZ2V0VG9vbE1hbmFnZXIodmlld0lkXyk7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgVG9vbE1hbmFnZXIgZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkKLSAgewotICAgIFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyID0gZ2V0Vmlld1Rvb2xNYW5hZ2VyKCk7Ci0gICAgaWYgKHRvb2xNYW5hZ2VyID09IG51bGwpCi0gICAgICB0b29sTWFuYWdlciA9IHRvb2xNYW5hZ2VyXzsKLSAgICByZXR1cm4gdG9vbE1hbmFnZXI7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBpbml0VG9vbHMoKTsKLQotICBwcm90ZWN0ZWQgYWJzdHJhY3QgU3RyaW5nIGdldFRvZ2dsZU5vZGVBY3Rpb25IcmVmKCk7Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRUb2dnbGVOb2RlQWN0aW9uVGFyZ2V0KCkKLSAgewotICAgIHJldHVybiBGcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgYWRkVG9nZ2xlKEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UsU3RyaW5nQnVmZmVyIHRyZWVWaWV3LGJvb2xlYW4gaXNMYXN0Q2hpbGQpCi0gIHsKLSAgICBpZiAobm9kZURlcHRoXyAhPSAxKQotICAgIHsKLSAgICAgIHRyZWVWaWV3LmFwcGVuZCgiICAgIDx0ZCBhbGlnbj1cImxlZnRcIiB3aWR0aD0xNiBoZWlnaHQ9MTYgbm93cmFwPiIpOwotICAgICAgU3RyaW5nIHRvZ2dsZUltYWdlVGFnOwotICAgICAgaWYgKGNoaWxkTm9kZXNfLnNpemUoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIC8vIDxhIGhyZWY9Ii4uLiIgdGFyZ2V0PSIuLi4iPnRvZ2dsZUltYWdlVGFnPC9hPgotICAgICAgICBTdHJpbmcgaHJlZiA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0UGF0aFdpdGhDb250ZXh0KGdldFRvZ2dsZU5vZGVBY3Rpb25IcmVmKCkpOwotICAgICAgICBpZiAoaXNPcGVuXykKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyB0b2dnbGVBbHQgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpLmdldE1lc3NhZ2UoIkFMVF9DTE9TRSIpOwotICAgICAgICAgIGlmIChpc0xhc3RDaGlsZCkKLSAgICAgICAgICAgIHRvZ2dsZUltYWdlVGFnID0gSFRNTFV0aWxzLmdldEhUTUxJbWFnZVRhZyhyZXNwb25zZSxub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpLmdldFBhdGhXaXRoQ29udGV4dChOb2RlTWFuYWdlci5QQVRIX01JTlVTX0xBU1QpLHRvZ2dsZUFsdCwiMTYiLCIxNiIsbnVsbCk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgdG9nZ2xlSW1hZ2VUYWcgPSBIVE1MVXRpbHMuZ2V0SFRNTEltYWdlVGFnKHJlc3BvbnNlLG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0UGF0aFdpdGhDb250ZXh0KE5vZGVNYW5hZ2VyLlBBVEhfTUlOVVNfTk9UTEFTVCksdG9nZ2xlQWx0LCIxNiIsIjE2IixudWxsKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgdG9nZ2xlQWx0ID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRNZXNzYWdlKCJBTFRfT1BFTiIpOwotICAgICAgICAgIGlmIChpc0xhc3RDaGlsZCkKLSAgICAgICAgICAgIHRvZ2dsZUltYWdlVGFnID0gSFRNTFV0aWxzLmdldEhUTUxJbWFnZVRhZyhyZXNwb25zZSxub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpLmdldFBhdGhXaXRoQ29udGV4dChOb2RlTWFuYWdlci5QQVRIX1BMVVNfTEFTVCksdG9nZ2xlQWx0LCIxNiIsIjE2IixudWxsKTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB0b2dnbGVJbWFnZVRhZyA9IEhUTUxVdGlscy5nZXRIVE1MSW1hZ2VUYWcocmVzcG9uc2Usbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRQYXRoV2l0aENvbnRleHQoTm9kZU1hbmFnZXIuUEFUSF9QTFVTX05PVExBU1QpLHRvZ2dsZUFsdCwiMTYiLCIxNiIsbnVsbCk7Ci0gICAgICAgIH0KLSAgICAgICAgU3RyaW5nIGxpbmtUYWcgPSBIVE1MVXRpbHMuZ2V0SFRNTExpbmtUYWcocmVzcG9uc2UsaHJlZixnZXRUb2dnbGVOb2RlQWN0aW9uVGFyZ2V0KCksU3RyaW5nLnZhbHVlT2Yobm9kZUlkXyksdG9nZ2xlSW1hZ2VUYWcsbnVsbCk7Ci0gICAgICAgIHRyZWVWaWV3LmFwcGVuZChsaW5rVGFnKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gPGltZy4uLj4KLSAgICAgICAgaWYgKGlzTGFzdENoaWxkKQotICAgICAgICAgIHRvZ2dsZUltYWdlVGFnID0gSFRNTFV0aWxzLmdldEhUTUxJbWFnZVRhZyhyZXNwb25zZSxub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpLmdldFBhdGhXaXRoQ29udGV4dChOb2RlTWFuYWdlci5QQVRIX0xJTkVfTEFTVCksIiIsIjE2IiwiMTYiLG51bGwpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgdG9nZ2xlSW1hZ2VUYWcgPSBIVE1MVXRpbHMuZ2V0SFRNTEltYWdlVGFnKHJlc3BvbnNlLG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0UGF0aFdpdGhDb250ZXh0KE5vZGVNYW5hZ2VyLlBBVEhfTElORV9OT1RMQVNUKSwiIiwiMTYiLCIxNiIsbnVsbCk7Ci0gICAgICAgIHRyZWVWaWV3LmFwcGVuZCh0b2dnbGVJbWFnZVRhZyk7Ci0gICAgICB9Ci0gICAgICB0cmVlVmlldy5hcHBlbmQoIjwvdGQ+IikuYXBwZW5kKEhUTUxVdGlscy5MSU5FX1NFUEFSQVRPUik7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIGFic3RyYWN0IFN0cmluZyBnZXRMaW5rQWN0aW9uSHJlZigpOwotCi0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0TGlua0FjdGlvblRhcmdldCgpCi0gIHsKLSAgICByZXR1cm4gRnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0T3BlbkltYWdlUGF0aCgpCi0gIHsKLSAgICByZXR1cm4gaW1hZ2VQYXRoXzsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xvc2VkSW1hZ2VQYXRoKCkKLSAgewotICAgIHJldHVybiBpbWFnZVBhdGhfOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgYWRkSFRNTExhYmVsKEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UsU3RyaW5nQnVmZmVyIHRyZWVWaWV3LGJvb2xlYW4gaXNMYXN0Q2hpbGQpCi0gIHsKLSAgICAvLyA8YSBocmVmPSIuLi4iIHRhcmdldD0iLi4uIiBvbkNsaWNrPSJzZWxlY3ROb2RlKCcuLi4nKSI+PGltZy4uLj48L2E+Ci0gICAgSGFzaHRhYmxlIGFkZGl0aW9uYWxBdHRyaWJ1dGVzID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGFkZGl0aW9uYWxBdHRyaWJ1dGVzLnB1dCgibmFtZSIsYW5jaG9yTmFtZV8pOwotICAgIFN0cmluZyBpbWFnZVBhdGggPSAobm9kZU1hbmFnZXJfLmdldFNlbGVjdGVkTm9kZUlkKCkgPT0gbm9kZUlkXyk/Z2V0T3BlbkltYWdlUGF0aCgpOmdldENsb3NlZEltYWdlUGF0aCgpOwotCi0gICAgU3RyaW5nIGltYWdlVGFnID0gSFRNTFV0aWxzLmdldEhUTUxJbWFnZVRhZyhyZXNwb25zZSxub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpLmdldFBhdGhXaXRoQ29udGV4dChpbWFnZVBhdGgpLGdldE5vZGVOYW1lKCksIjE2IiwiMTYiLGFkZGl0aW9uYWxBdHRyaWJ1dGVzKTsKLSAgICBTdHJpbmcgYmFzZUhyZWYgPSBnZXRMaW5rQWN0aW9uSHJlZigpOwotICAgIFN0cmluZyBocmVmID0gKChiYXNlSHJlZiA9PSBudWxsKT9iYXNlSHJlZjpub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpLmdldFBhdGhXaXRoQ29udGV4dChiYXNlSHJlZikpOwotICAgIFN0cmluZyB0YXJnZXQgPSBnZXRMaW5rQWN0aW9uVGFyZ2V0KCk7Ci0gICAgYWRkaXRpb25hbEF0dHJpYnV0ZXMuY2xlYXIoKTsKLQotICAgIHRyZWVWaWV3LmFwcGVuZCgiICAgIDx0ZCBhbGlnbj1cImxlZnRcIiB3aWR0aD0xNiBoZWlnaHQ9MTYgbm93cmFwPiIpOwotICAgIGlmIChocmVmICE9IG51bGwpCi0gICAgICB0cmVlVmlldy5hcHBlbmQoSFRNTFV0aWxzLmdldEhUTUxMaW5rVGFnKHJlc3BvbnNlLGhyZWYsdGFyZ2V0LG51bGwsaW1hZ2VUYWcsYWRkaXRpb25hbEF0dHJpYnV0ZXMpKTsKLSAgICBlbHNlCi0gICAgICB0cmVlVmlldy5hcHBlbmQoaW1hZ2VUYWcpOwotICAgIHRyZWVWaWV3LmFwcGVuZCgiPC90ZD4iKS5hcHBlbmQoSFRNTFV0aWxzLkxJTkVfU0VQQVJBVE9SKTsKLSAgICB0cmVlVmlldy5hcHBlbmQoIiAgICA8dGQgYWxpZ249XCJsZWZ0XCIgd2lkdGg9MyBoZWlnaHQ9MTAgbm93cmFwPiIpLmFwcGVuZChIVE1MVXRpbHMuZ2V0SFRNTEltYWdlVGFnKHJlc3BvbnNlLG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0UGF0aFdpdGhDb250ZXh0KE5vZGVNYW5hZ2VyLlBBVEhfU1BBQ0UpLCIiLCIzIiwiMTAiLG51bGwpKS5hcHBlbmQoIjwvdGQ+IikuYXBwZW5kKEhUTUxVdGlscy5MSU5FX1NFUEFSQVRPUik7Ci0KLSAgICAvLyA8YSBuYW1lPSIuLi4iIGhyZWY9Ii4uLiIgdGFyZ2V0PSIuLi4iPmxhYmVsPC9hPgotICAgIHRyZWVWaWV3LmFwcGVuZCgiICAgIDx0ZCBhbGlnbj1cImxlZnRcIiBub3dyYXA+IikuYXBwZW5kKEhUTUxVdGlscy5MSU5FX1NFUEFSQVRPUik7Ci0gICAgdHJlZVZpZXcuYXBwZW5kKCIgICAgICAiKTsKLSAgICBpZiAoaHJlZiAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyB0ZXh0QW5jaG9yQ2xhc3M7Ci0gICAgICBpZiAobm9kZU1hbmFnZXJfLmdldFNlbGVjdGVkTm9kZUlkKCkgPT0gbm9kZUlkXykKLSAgICAgICAgdGV4dEFuY2hvckNsYXNzPSJzZWxlY3RlZFRleHRBbmNob3IiOwotICAgICAgZWxzZQotICAgICAgICB0ZXh0QW5jaG9yQ2xhc3M9InVuc2VsZWN0ZWRUZXh0QW5jaG9yIjsKLSAgICAgIGFkZGl0aW9uYWxBdHRyaWJ1dGVzLnB1dCgiY2xhc3MiLHRleHRBbmNob3JDbGFzcyk7Ci0gICAgICB0cmVlVmlldy5hcHBlbmQoSFRNTFV0aWxzLmdldEhUTUxMaW5rVGFnKHJlc3BvbnNlLGhyZWYsdGFyZ2V0LGFuY2hvck5hbWVfLGdldE5vZGVOYW1lKCksYWRkaXRpb25hbEF0dHJpYnV0ZXMpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgdHJlZVZpZXcuYXBwZW5kKCI8c3Ryb25nPiIpLmFwcGVuZChnZXROb2RlTmFtZSgpKS5hcHBlbmQoIjwvc3Ryb25nPiIpOwotICAgIHRyZWVWaWV3LmFwcGVuZChIVE1MVXRpbHMuTElORV9TRVBBUkFUT1IpLmFwcGVuZCgiICAgIDwvdGQ+IikuYXBwZW5kKEhUTUxVdGlscy5MSU5FX1NFUEFSQVRPUik7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW5kZXJOb2RlKEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UsU3RyaW5nQnVmZmVyIHRyZWVWaWV3LFN0cmluZyBwcmVmaXhDb2x1bW5zLGJvb2xlYW4gaXNMYXN0Q2hpbGQpCi0gIHsKLSAgICBTdHJpbmcgc3BhY2VfMTZ4MTYgPSBIVE1MVXRpbHMuZ2V0SFRNTEltYWdlVGFnKHJlc3BvbnNlLG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0UGF0aFdpdGhDb250ZXh0KE5vZGVNYW5hZ2VyLlBBVEhfU1BBQ0UpLCIiLCIxNiIsIjE2IixudWxsKTsKLSAgICBTdHJpbmcgbGluZV8xNngxNiA9IEhUTUxVdGlscy5nZXRIVE1MSW1hZ2VUYWcocmVzcG9uc2Usbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRQYXRoV2l0aENvbnRleHQoTm9kZU1hbmFnZXIuUEFUSF9MSU5FKSwiIiwiMTYiLCIxNiIsbnVsbCk7Ci0KLSAgICAvLyBVc2UgYm9yZGVyPTEgdG8gaGVscCB3aXRoIGRlYnVnZ2luZy4KLSAgICB0cmVlVmlldy5hcHBlbmQoIjx0YWJsZSBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTAgYm9yZGVyPTA+IikuYXBwZW5kKEhUTUxVdGlscy5MSU5FX1NFUEFSQVRPUik7Ci0gICAgdHJlZVZpZXcuYXBwZW5kKCIgIDx0cj4iKS5hcHBlbmQoSFRNTFV0aWxzLkxJTkVfU0VQQVJBVE9SKTsKLSAgICB0cmVlVmlldy5hcHBlbmQoIiAgICA8dGQgYWxpZ249XCJsZWZ0XCIgd2lkdGg9MTYgaGVpZ2h0PTE2IG5vd3JhcD4iKS5hcHBlbmQoc3BhY2VfMTZ4MTYpLmFwcGVuZCgiPC90ZD4iKS5hcHBlbmQoSFRNTFV0aWxzLkxJTkVfU0VQQVJBVE9SKTsKLSAgICBTdHJpbmdCdWZmZXIgbmV3UHJlZml4Q29sdW1ucyA9IG5ldyBTdHJpbmdCdWZmZXIocHJlZml4Q29sdW1ucyk7Ci0gICAgaWYgKG5vZGVEZXB0aF8gPj0gMikKLSAgICB7Ci0gICAgICBpZiAocHJlZml4Q29sdW1ucy5sZW5ndGgoKSA+IDApCi0gICAgICAgIHRyZWVWaWV3LmFwcGVuZChwcmVmaXhDb2x1bW5zKS5hcHBlbmQoSFRNTFV0aWxzLkxJTkVfU0VQQVJBVE9SKTsKLSAgICAgIC8vIGdlbmVyYXRlIGEgbmV3IHByZWZpeCBjb2x1bW5zLgotICAgICAgbmV3UHJlZml4Q29sdW1ucy5hcHBlbmQoIiAgICA8dGQgYWxpZ249XCJsZWZ0XCIgd2lkdGg9MTYgaGVpZ2h0PTE2IG5vd3JhcD4iKTsKLSAgICAgIGlmIChpc0xhc3RDaGlsZCkKLSAgICAgICAgbmV3UHJlZml4Q29sdW1ucy5hcHBlbmQoc3BhY2VfMTZ4MTYpOwotICAgICAgZWxzZQotICAgICAgICBuZXdQcmVmaXhDb2x1bW5zLmFwcGVuZChsaW5lXzE2eDE2KTsKLSAgICAgIG5ld1ByZWZpeENvbHVtbnMuYXBwZW5kKCI8L3RkPiIpLmFwcGVuZChIVE1MVXRpbHMuTElORV9TRVBBUkFUT1IpOwotICAgIH0KLSAgICBhZGRUb2dnbGUocmVzcG9uc2UsdHJlZVZpZXcsaXNMYXN0Q2hpbGQpOwotICAgIGFkZEhUTUxMYWJlbChyZXNwb25zZSx0cmVlVmlldyxpc0xhc3RDaGlsZCk7Ci0gICAgdHJlZVZpZXcuYXBwZW5kKCIgIDwvdHI+IikuYXBwZW5kKEhUTUxVdGlscy5MSU5FX1NFUEFSQVRPUik7Ci0gICAgdHJlZVZpZXcuYXBwZW5kKCI8L3RhYmxlPiIpLmFwcGVuZChIVE1MVXRpbHMuTElORV9TRVBBUkFUT1IpOwotICAgIGludCBudW1iZXJPZkNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzXy5zaXplKCk7Ci0gICAgaWYgKG51bWJlck9mQ2hpbGROb2RlcyA+IDApCi0gICAgewotICAgICAgaWYgKGlzT3Blbl8pCi0gICAgICB7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPG51bWJlck9mQ2hpbGROb2Rlcy0xO2krKykKLSAgICAgICAgewotICAgICAgICAgIE5vZGUgY2hpbGROb2RlID0gKE5vZGUpY2hpbGROb2Rlc18uZWxlbWVudEF0KGkpOwotICAgICAgICAgIGNoaWxkTm9kZS5yZW5kZXJOb2RlKHJlc3BvbnNlLHRyZWVWaWV3LG5ld1ByZWZpeENvbHVtbnMudG9TdHJpbmcoKSxmYWxzZSk7Ci0gICAgICAgIH0KLSAgICAgICAgTm9kZSBsYXN0Q2hpbGROb2RlID0gKE5vZGUpY2hpbGROb2Rlc18uZWxlbWVudEF0KG51bWJlck9mQ2hpbGROb2Rlcy0xKTsKLSAgICAgICAgbGFzdENoaWxkTm9kZS5yZW5kZXJOb2RlKHJlc3BvbnNlLHRyZWVWaWV3LG5ld1ByZWZpeENvbHVtbnMudG9TdHJpbmcoKSx0cnVlKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvLyBGb3Igc29ydGluZyBwdXJwb3Nlcy4gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIHJldHVybiBnZXROb2RlTmFtZSgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL05vZGVNYW5hZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL05vZGVNYW5hZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZDQ4YzYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9Ob2RlTWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjUzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7Ci0KLXB1YmxpYyBjbGFzcyBOb2RlTWFuYWdlcgotewotICAvLyBwYXRocyB0byBpY29uIGltYWdlcwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVRIX1BMVVNfTk9UTEFTVCA9ICJpbWFnZXMvcGx1c19ub3RsYXN0LmdpZiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBVEhfUExVU19MQVNUID0gImltYWdlcy9wbHVzX2xhc3QuZ2lmIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFUSF9NSU5VU19OT1RMQVNUID0gImltYWdlcy9taW51c19ub3RsYXN0LmdpZiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBVEhfTUlOVVNfTEFTVCA9ICJpbWFnZXMvbWludXNfbGFzdC5naWYiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVRIX0xJTkUgPSAiaW1hZ2VzL2xpbmUuZ2lmIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFUSF9MSU5FX05PVExBU1QgPSAiaW1hZ2VzL2xpbmVfbm90bGFzdC5naWYiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVRIX0xJTkVfTEFTVCA9ICJpbWFnZXMvbGluZV9sYXN0LmdpZiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBVEhfU1BBQ0UgPSAiaW1hZ2VzL3NwYWNlLmdpZiI7Ci0KLSAgcHJpdmF0ZSBDb250cm9sbGVyIGNvbnRyb2xsZXJfOwotICBwcml2YXRlIE5vZGUgcm9vdE5vZGVfOwotICBwcml2YXRlIEhhc2h0YWJsZSBub2RlVGFibGVfOwotICBwcml2YXRlIGludCBmb2N1c2VkTm9kZUlkXzsKLSAgcHJpdmF0ZSBpbnQgc2VsZWN0ZWROb2RlSWRfOwotICBwcml2YXRlIGludCBwcmV2aW91c1NlbGVjdGVkTm9kZUlkXzsKLSAgcHJpdmF0ZSBpbnQgbWF4RGVwdGhWaXNpYmxlXzsKLSAgcHJpdmF0ZSBpbnQgbmV4dElkXzsKLQotICBwdWJsaWMgTm9kZU1hbmFnZXIoQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgY29udHJvbGxlcl8gPSBjb250cm9sbGVyOwotICAgIHJvb3ROb2RlXyA9IG51bGw7Ci0gICAgbm9kZVRhYmxlXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBmb2N1c2VkTm9kZUlkXyA9IC0xOwotICAgIHNlbGVjdGVkTm9kZUlkXyA9IC0xOwotICAgIHByZXZpb3VzU2VsZWN0ZWROb2RlSWRfID0gLTE7Ci0gICAgbWF4RGVwdGhWaXNpYmxlXyA9IDE7Ci0gICAgbmV4dElkXyA9IDA7Ci0gIH0KLQotICAvKioKLSAgKiBIb29rIGZvciB0aGUgY29udHJvbGxlci4KLSAgKiBAcmV0dXJuIENvbnRyb2xsZXIgVGhlIHBlcnNwZWN0aXZlIGNvbnRyb2xsZXIuCi0gICovCi0gIHB1YmxpYyBDb250cm9sbGVyIGdldENvbnRyb2xsZXIoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfOwotICB9Ci0KLSAgLyoqCi0gICogU2V0cyB0aGUgcm9vdCBub2RlIG9mIHRoZSB0cmVlLgotICAqIEBwYXJhbSByb290Tm9kZSBUaGUgbm9kZSBiZWluZyBkZXNpZ25hdGVkIGFzIHRoZSByb290IG5vZGUuCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFJvb3ROb2RlKE5vZGUgcm9vdE5vZGUpCi0gIHsKLSAgICByb290Tm9kZV8gPSByb290Tm9kZTsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIHJvb3Qgbm9kZSBvZiB0aGUgdHJlZSBtYW5hZ2VkIGJ5IHRoaXMgTm9kZU1hbmFnZXIuCi0gICogQHJldHVybiBOb2RlIFRoZSByb290IG5vZGUuCi0gICovCi0gIHB1YmxpYyBOb2RlIGdldFJvb3ROb2RlKCkKLSAgewotICAgIHJldHVybiByb290Tm9kZV87Ci0gIH0KLQotICAvKioKLSAgKiBAcGFyYW0gSW50ZWdlciBUaGUgaWQgb2YgdGhlIG5vZGUgYmVpbmcgYWRkZWQuCi0gICogQHBhcmFtIE5vZGUgVGhlIG5vZGUgYmVpbmcgYWRkZWQuCi0gICogQHJldHVybiBUaGUgbm9kZUlkIGFzc2lnbmVkIHRvIHRoaXMgbm9kZS4KLSAgKi8KLSAgcHVibGljIGludCBhZGRUb05vZGVUYWJsZShOb2RlIG5vZGUpCi0gIHsKLSAgICBpbnQgYXNzaWduZWROb2RlSWQgPSBuZXh0SWRfOwotICAgIG5vZGVUYWJsZV8ucHV0KFN0cmluZy52YWx1ZU9mKGFzc2lnbmVkTm9kZUlkKSxub2RlKTsKLSAgICBuZXh0SWRfKys7Ci0gICAgcmV0dXJuIGFzc2lnbmVkTm9kZUlkOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVtb3ZlRnJvbU5vZGVUYWJsZShpbnQgbm9kZUlkKQotICB7Ci0gICAgVmVjdG9yIG5vZGVzVG9SZW1vdmUgPSBuZXcgVmVjdG9yKCk7Ci0gICAgTm9kZSBub2RlID0gZ2V0Tm9kZShub2RlSWQpOwotICAgIGdhdGhlck5vZGVzVG9SZW1vdmUobm9kZXNUb1JlbW92ZSwgbm9kZSk7Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IG5vZGVzVG9SZW1vdmUuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgewotICAgICAgbm9kZVRhYmxlXy5yZW1vdmUoU3RyaW5nLnZhbHVlT2YoKChOb2RlKWl0Lm5leHQoKSkuZ2V0Tm9kZUlkKCkpKTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgZ2F0aGVyTm9kZXNUb1JlbW92ZShWZWN0b3Igbm9kZXNUb1JlbW92ZSwgTm9kZSBub2RlKSB7Ci0gICAgaWYgKG5vZGUgIT0gbnVsbCkgewotICAgICAgbm9kZXNUb1JlbW92ZS5hZGQobm9kZSk7Ci0gICAgICBWZWN0b3IgY2hpbGROb2RlcyA9IG5vZGUuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IGNoaWxkTm9kZXMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgewotICAgICAgICBnYXRoZXJOb2Rlc1RvUmVtb3ZlKG5vZGVzVG9SZW1vdmUsIChOb2RlKWl0Lm5leHQoKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgZGVwdGggb2YgdGhlIGRlZXBlc3QgdmlzaWJsZSBub2RlIGluIHRoZSB0cmVlLgotICAqIEByZXR1cm4gaW50Ci0gICovCi0gIHB1YmxpYyBpbnQgZ2V0TWF4RGVwdGhWaXNpYmxlKCkKLSAgewotICAgIHJldHVybiBtYXhEZXB0aFZpc2libGVfOwotICB9Ci0KLSAgLyoqCi0gICogVXBkYXRlcyB0aGUgZGVwdGggb2YgdGhlIGRlZXBlc3QgdmlzaWJsZSBub2RlIGluIHRoZSB0cmVlLiBOb2RlcwotICAqIG11c3QgY2FsbCB0aGlzIHdoZW4gdGhlIHZpc2liaWxpdHkgb2YgdGhlaXIgY2hpbGRyZW4gY2hhbmdlcy4KLSAgKiAoZS5nLiBleHBhbmQvY29sbGFwc2Ugb2YgYSBwYXJlbnQgbm9kZSkuCi0gICovCi0gIHB1YmxpYyB2b2lkIHVwZGF0ZU1heERlcHRoVmlzaWJsZSgpCi0gIHsKLSAgICBpZiAocm9vdE5vZGVfICE9IG51bGwpCi0gICAgICBtYXhEZXB0aFZpc2libGVfID0gcm9vdE5vZGVfLmdldE1heERlcHRoVmlzaWJsZSgpOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbmV4dCBhdmFpbGFibGUgaWQgZm9yIGEgbmV3bHkgY3JlYXRlZCBub2RlLgotICAqIEByZXR1cm4gaW50Ci0gICovCi0gIHB1YmxpYyBpbnQgZ2V0TmV4dE5vZGVJZCgpCi0gIHsKLSAgICByZXR1cm4gbmV4dElkXzsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBub2RlIGluIHRoZSB0cmVlLiBBIG5vZGUKLSAgKiBiZWNvbWVzIGZvY3VzZWQgd2hlbiBhbnkgb2YgdGhlIGZvbGxvd2luZyBldmVudHMgb2NjdXI6Ci0gICogMSkgVGhlIG5vZGUncyBpY29uIG9yIGltYWdlIGFyZSBzZWxlY3RlZCBieSBhIHVzZXIuCi0gICogMikgVGhlIG5vZGUncyBleHBhbmQvY29sbGFwc2UgaWNvbiBpcyBjbGlja2VkLgotICAqIDMpIFByb2dyYW1tYXRpY2FsbHkgc2V0IGJ5IHRoZSBwcm9ncmFtbWVyLgotICAqIFRoZSB0cmVldmlldyB3aWxsIGFsd2F5cyBzY3JvbGwgdG8gdGhlIGN1cnJlbnQgZm9jdXNlZCBub2RlIHdoZW4gbG9hZGVkLgotICAqIEByZXR1cm4gaW50IFRoZSBpZC4KLSAgKi8KLSAgcHVibGljIGludCBnZXRGb2N1c2VkTm9kZUlkKCkKLSAgewotICAgIHJldHVybiBmb2N1c2VkTm9kZUlkXzsKLSAgfQotCi0gIC8qKgotICAqIEFsbG93cyBtb2RpZmljYXRpb24gb2YgdGhlIGZvY3VzZWQgbm9kZS4KLSAgKiBAcGFyYW0gaW50IFRoZSBpZCBvZiB0aGUgbm9kZSB0aGF0IGlzIGluIGZvY3VzLgotICAqLwotICBwdWJsaWMgdm9pZCBzZXRGb2N1c2VkTm9kZUlkKGludCBub2RlSWQpCi0gIHsKLSAgICBmb2N1c2VkTm9kZUlkXyA9IG5vZGVJZDsKLSAgfQotCi0gIHB1YmxpYyBOb2RlIGdldEZvY3VzZWROb2RlKCkKLSAgewotICAgIHJldHVybiBnZXROb2RlKGZvY3VzZWROb2RlSWRfKTsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbm9kZSBpbiB0aGUgdHJlZS4KLSAgKiBAcmV0dXJuIGludCBUaGUgaWQuCi0gICovCi0gIHB1YmxpYyBpbnQgZ2V0U2VsZWN0ZWROb2RlSWQoKQotICB7Ci0gICAgcmV0dXJuIHNlbGVjdGVkTm9kZUlkXzsKLSAgfQotCi0gIHB1YmxpYyBOb2RlIGdldFNlbGVjdGVkTm9kZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0Tm9kZShzZWxlY3RlZE5vZGVJZF8pOwotICB9Ci0KLSAgLyoqCi0gICogUmV0cmlldmUgYSByZWZlcmVuY2UgdG8gYSBOb2RlIGluIHRoaXMgbWFuYWdlcidzIG5vZGUgdGFibGUuCi0gICogQHJldHVybiBOb2RlIFRoZSBub2RlLgotICAqLwotICBwdWJsaWMgTm9kZSBnZXROb2RlKGludCBub2RlSWQpCi0gIHsKLSAgICByZXR1cm4gKE5vZGUpbm9kZVRhYmxlXy5nZXQoU3RyaW5nLnZhbHVlT2Yobm9kZUlkKSk7Ci0gIH0KLQotICAvKioKLSAgKiBBbGxvd3MgbW9kaWZpY2F0aW9uIG9mIHRoZSBzZWxlY3RlZCBOb2RlLiBOb3RlIHRoYXQgc2V0dGluZyBhIG5vZGUgdG8gYmVjb21lCi0gICogc2VsZWN0ZWQgYXV0b21hdGljYWxseSBtYWtlcyBpdCB0aGUgZm9jdXNlZCBub2RlLiBIb3dldmVyLCB0aGlzIGlzIG9ubHkgYSBvbmUKLSAgKiB3YXkgcmVsYXRpb25zaGlwLgotICAqIEBwYXJhbSBpbnQgVGhlIGlkIG9mIHRoZSBub2RlIHRoYXQgaXMgYmVpbmcgc2VsZWN0ZWQuCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFNlbGVjdGVkTm9kZUlkKGludCBub2RlSWQpCi0gIHsKLSAgICBwcmV2aW91c1NlbGVjdGVkTm9kZUlkXyA9IHNlbGVjdGVkTm9kZUlkXzsKLSAgICBzZWxlY3RlZE5vZGVJZF8gPSBub2RlSWQ7Ci0gICAgc2V0Rm9jdXNlZE5vZGVJZChzZWxlY3RlZE5vZGVJZF8pOwotICB9Ci0KLSAgcHVibGljIGludCBnZXRQcmV2aW91c1NlbGVjdGVkTm9kZUlkKCkKLSAgewotICAgIHJldHVybiBwcmV2aW91c1NlbGVjdGVkTm9kZUlkXzsKLSAgfQotCi0gIHB1YmxpYyBOb2RlIGdldFByZXZpb3VzU2VsZWN0ZWROb2RlKCkKLSAgewotICAgIHJldHVybiAoTm9kZSlub2RlVGFibGVfLmdldChTdHJpbmcudmFsdWVPZihwcmV2aW91c1NlbGVjdGVkTm9kZUlkXykpOwotICB9Ci0KLSAgLyoqCi0gICogUmVuZGVyIHRoZSBIVE1MIHRyZWUgdmlldyBmb3IgdGhpcyBub2RlLgotICAqIEBwYXJhbSBIdHRwU2VydmxldFJlc3BvbnNlIEZvciBlbmNvZGluZyBVUkxzLgotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBIVE1MIHJlcHJlc2VudGluZyB0aGUgdHJlZSB2aWV3LgotICAqLwotICBwdWJsaWMgU3RyaW5nIHJlbmRlclRyZWVWaWV3KEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgdHJlZVZpZXcgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgcm9vdE5vZGVfLnJlbmRlck5vZGUocmVzcG9uc2UsdHJlZVZpZXcsIiIsZmFsc2UpOwotICAgIHJldHVybiB0cmVlVmlldy50b1N0cmluZygpOwotICB9Ci0gIAotICAvKioKLSAgKiBNYWtlIHRoZSBwcm92aWRlZCBub2RlIGlzIHZpc2libGUgYnkgZW5zdXJpbmcgdGhhdCBpdHMgYW5jZXN0b3JzIGFyZSB2aXNpYmxlLgotICAqIEBwYXJhbSBOb2RlIFRoZSBub2RlIHRvIGJlIG1hZGUgdmlzaWJsZS4KLSAgKiBAcmV0dXJuIGJvb2xlYW4gSW5kaWNhdG9yIGZvciB3aGV0aGVyIG9yIG5vdCB0aGUgdHJlZXZpZXcgbmVlZHMgcmVmcmVzaGluZyAoaS5lLiBhbiBhbmNlc3RvciB3YXMgbm90IHZpc2libGUpLgotICAqLwotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBtYWtlTm9kZVZpc2libGUoTm9kZSBub2RlKQotICB7Ci0gICAgYm9vbGVhbiByZXF1aXJlc1RyZWVWaWV3UmVmcmVzaCA9IGZhbHNlOwotICAgIHdoaWxlICgobm9kZSA9IG5vZGUuZ2V0UGFyZW50KCkpICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKCFub2RlLmlzT3BlbigpKQotICAgICAgewotICAgICAgICByZXF1aXJlc1RyZWVWaWV3UmVmcmVzaCA9IHRydWU7Ci0gICAgICAgIG5vZGUuc2V0VmlzaWJpbGl0eU9mQ2hpbGRyZW4odHJ1ZSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXF1aXJlc1RyZWVWaWV3UmVmcmVzaDsKLSAgfQotICAKLSAgLyoqCi0gICogTWFrZSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG5vZGUgdmlzaWJsZSBieSBlbnN1cmluZyB0aGF0IGl0cyBhbmNlc3RvcnMgYXJlIHZpc2libGUuCi0gICovCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIG1ha2VTZWxlY3RlZE5vZGVWaXNpYmxlKCkKLSAgewotICAgIHJldHVybiBtYWtlTm9kZVZpc2libGUoZ2V0U2VsZWN0ZWROb2RlKCkpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1BlcnNwZWN0aXZlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1BlcnNwZWN0aXZlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NWYxNGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9QZXJzcGVjdGl2ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldENvbnRleHQ7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBQZXJzcGVjdGl2ZSBleHRlbmRzIE1lc3NhZ2VQcm92aWRlcgotewotICBwcm90ZWN0ZWQgQ29udHJvbGxlciBjb250cm9sbGVyXzsKLSAgcHJvdGVjdGVkIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWVfOwotCi0gIHB1YmxpYyBQZXJzcGVjdGl2ZShTdHJpbmcgbWVzc2FnZUJ1bmRsZUZpbGVOYW1lLENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKG1lc3NhZ2VCdW5kbGVGaWxlTmFtZSk7Ci0gICAgY29udHJvbGxlcl8gPSBjb250cm9sbGVyOwotICAgIG1lc3NhZ2VRdWV1ZV8gPSBuZXcgTWVzc2FnZVF1ZXVlKCk7Ci0gIH0KLQotICBwdWJsaWMgTWVzc2FnZVF1ZXVlIGdldE1lc3NhZ2VRdWV1ZSgpCi0gIHsKLSAgICByZXR1cm4gbWVzc2FnZVF1ZXVlXzsKLSAgfQotCi0gIHB1YmxpYyBDb250cm9sbGVyIGdldENvbnRyb2xsZXIoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfOwotICB9Ci0KLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRQYW5lc0ZpbGUoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRGcmFtZXNldHNGaWxlKCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0UHJvY2Vzc0ZyYW1lc2V0c0Zvcm0oKTsKLQotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFRyZWVDb250ZW50VmFyKCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclZhcigpOwotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFZhcigpOwotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCk7Ci0KLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRTd2l0Y2hQZXJzcGVjdGl2ZUZvcm1BY3Rpb25MaW5rKGludCB0YXJnZXRQZXJzcGVjdGl2ZUlkLGJvb2xlYW4gZm9ySGlzdG9yeSk7Ci0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0UGVyc3BlY3RpdmVDb250ZW50UGFnZSgpOwotICBwdWJsaWMgYWJzdHJhY3QgaW50IGdldFBlcnNwZWN0aXZlSWQoKTsKLQotICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciB0aGUgcGVyc3BlY3RpdmUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGluc3RhbnRpYXRlZC4KLSAgcHVibGljIGFic3RyYWN0IHZvaWQgaW5pdFBlcnNwZWN0aXZlKFNlcnZsZXRDb250ZXh0IGFwcGxpY2F0aW9uKTsKLSAgCi0gIC8vIE5vZGUgbWFuYWdlciBmb3IgdGhlIG5hdmlnYXRvci90cmVlIGNvbnRlbnQgcGFnZQotICBwdWJsaWMgYWJzdHJhY3QgTm9kZU1hbmFnZXIgZ2V0Tm9kZU1hbmFnZXIoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvU2VjdGlvbkhlYWRlckluZm8uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvU2VjdGlvbkhlYWRlckluZm8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdlNWU0YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1NlY3Rpb25IZWFkZXJJbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLXB1YmxpYyBjbGFzcyBTZWN0aW9uSGVhZGVySW5mbwotewotICBwcml2YXRlIFN0cmluZyBjb250YWluZXJJZF87Ci0gIHByaXZhdGUgYm9vbGVhbiBkeW5hbWljXzsKLSAgcHJpdmF0ZSBPYmplY3Qgb3RoZXJQcm9wZXJ0aWVzXzsKLQotICBwdWJsaWMgU2VjdGlvbkhlYWRlckluZm8oKQotICB7Ci0gICAgY2xlYXIoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGNsZWFyKCkKLSAgewotICAgIGNvbnRhaW5lcklkXyA9ICIiOwotICAgIGR5bmFtaWNfID0gdHJ1ZTsKLSAgICBvdGhlclByb3BlcnRpZXNfID0gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldENvbnRhaW5lcklkKFN0cmluZyBjb250YWluZXJJZCkKLSAgewotICAgIGNvbnRhaW5lcklkXyA9IGNvbnRhaW5lcklkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRDb250YWluZXJJZCgpCi0gIHsKLSAgICByZXR1cm4gY29udGFpbmVySWRfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgZW5hYmxlRHluYW1pYyhib29sZWFuIGlzRW5hYmxlZCkKLSAgewotICAgIGR5bmFtaWNfID0gaXNFbmFibGVkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNEeW5hbWljKCkKLSAgewotICAgIHJldHVybiBkeW5hbWljXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldE90aGVyUHJvcGVydGllcyhPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgb3RoZXJQcm9wZXJ0aWVzXyA9IG9iamVjdDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBPYmplY3QgZ2V0T3RoZXJQcm9wZXJ0aWVzKCkKLSAgewotICAgIHJldHVybiBvdGhlclByb3BlcnRpZXNfOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1NldERlZmF1bHRWaWV3VG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9TZXREZWZhdWx0Vmlld1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M5MWI5NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1NldERlZmF1bHRWaWV3VG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2V0RGVmYXVsdFZpZXdUb29sIGV4dGVuZHMgQWN0aW9uVG9vbAotewotICBwdWJsaWMgU2V0RGVmYXVsdFZpZXdUb29sKFRvb2xNYW5hZ2VyIHZpZXdUb29sTWFuYWdlcixTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodmlld1Rvb2xNYW5hZ2VyLCJpbWFnZXMvdG9wX2VuYWJsZWQuZ2lmIiwiaW1hZ2VzL3RvcF9oaWdobGlnaHRlZC5naWYiLGFsdCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vcGVyc3BlY3RpdmUvVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9Ub29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YmZiOTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9Ub29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyNyAgIDEzNjQ0OSBicnVuc3NlbkB1cy5pYm0uY29tIC0gVmluY2UgQnJ1bnNzZW4gIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkZyYW1lTmFtZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuSFRNTFV0aWxzOwotCi0vLyBBIGNsYXNzIGZvciByZXByZXNlbnRpbmcgdG9vbGJhciB0b29scy4KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBUb29sCi17Ci0gIHByb3RlY3RlZCBUb29sTWFuYWdlciB0b29sTWFuYWdlcl87Ci0gIHByaXZhdGUgU3RyaW5nIGVuYWJsZWRJbWFnZUxpbmtfOwotICBwcml2YXRlIFN0cmluZyBoaWdobGlnaHRlZEltYWdlTGlua187Ci0gIHByaXZhdGUgU3RyaW5nIGFsdF87Ci0gIHByb3RlY3RlZCBpbnQgdG9vbElkXzsKLSAgcHJvdGVjdGVkIGJ5dGUgdG9vbFR5cGVfOwotCi0gIHB1YmxpYyBUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBlbmFibGVkSW1hZ2VMaW5rLFN0cmluZyBoaWdobGlnaHRlZEltYWdlTGluayxTdHJpbmcgYWx0LGJ5dGUgdG9vbFR5cGUpCi0gIHsKLSAgICB0b29sTWFuYWdlcl8gPSB0b29sTWFuYWdlcjsKLSAgICBlbmFibGVkSW1hZ2VMaW5rXyA9IGVuYWJsZWRJbWFnZUxpbms7Ci0gICAgaGlnaGxpZ2h0ZWRJbWFnZUxpbmtfID0gaGlnaGxpZ2h0ZWRJbWFnZUxpbms7Ci0gICAgYWx0XyA9IGFsdDsKLSAgICB0b29sSWRfID0gdG9vbE1hbmFnZXJfLmFkZFRvb2wodGhpcyk7Ci0gICAgdG9vbFR5cGVfID0gdG9vbFR5cGU7Ci0gIH0KLQotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSk7Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uVGFyZ2V0KCkKLSAgewotICAgIHJldHVybiBGcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGdlbmVyYXRlT25Nb3VzZVZhbHVlKFN0cmluZ0J1ZmZlciB2YWx1ZSxIdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlLFN0cmluZyBmdWxsSW1hZ2VMaW5rKQotICB7Ci0gICAgdmFsdWUuYXBwZW5kKCJzcmM9JyIpLmFwcGVuZChyZXNwb25zZS5lbmNvZGVVUkwoZnVsbEltYWdlTGluaykpLmFwcGVuZCgnXCcnKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgcmVuZGVyVG9vbChIdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlLENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIEhhc2h0YWJsZSBqc0ltYWdlUHJvcGVydGllcyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBTdHJpbmdCdWZmZXIgcHJvcGVydHlWYWx1ZSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBTdHJpbmcgZnVsbEVuYWJsZWRJbWFnZUxpbmsgPSBjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChlbmFibGVkSW1hZ2VMaW5rXyk7Ci0gICAgZ2VuZXJhdGVPbk1vdXNlVmFsdWUocHJvcGVydHlWYWx1ZSxyZXNwb25zZSxmdWxsRW5hYmxlZEltYWdlTGluayk7Ci0gICAgaW50IHByb3BlcnR5VmFsdWVMZW5ndGggPSBwcm9wZXJ0eVZhbHVlLmxlbmd0aCgpOwotICAgIGpzSW1hZ2VQcm9wZXJ0aWVzLnB1dCgiY2xhc3MiLCJub3JtYWwiKTsKLSAgICBqc0ltYWdlUHJvcGVydGllcy5wdXQoIm9uTW91c2VPdXQiLHByb3BlcnR5VmFsdWUuYXBwZW5kKCI7bW91c2VvdXQodGhpcykiKS50b1N0cmluZygpKTsKLSAgICBwcm9wZXJ0eVZhbHVlLmRlbGV0ZShwcm9wZXJ0eVZhbHVlTGVuZ3RoLHByb3BlcnR5VmFsdWUubGVuZ3RoKCkpOwotICAgIGpzSW1hZ2VQcm9wZXJ0aWVzLnB1dCgib25Nb3VzZVVwIixwcm9wZXJ0eVZhbHVlLmFwcGVuZCgiO21vdXNldXAodGhpcykiKS50b1N0cmluZygpKTsKLSAgICBwcm9wZXJ0eVZhbHVlLnNldExlbmd0aCgwKTsKLSAgICBnZW5lcmF0ZU9uTW91c2VWYWx1ZShwcm9wZXJ0eVZhbHVlLHJlc3BvbnNlLGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGhpZ2hsaWdodGVkSW1hZ2VMaW5rXykpOwotICAgIHByb3BlcnR5VmFsdWVMZW5ndGggPSBwcm9wZXJ0eVZhbHVlLmxlbmd0aCgpOwotICAgIGpzSW1hZ2VQcm9wZXJ0aWVzLnB1dCgib25Nb3VzZU92ZXIiLHByb3BlcnR5VmFsdWUuYXBwZW5kKCI7bW91c2VvdmVyKHRoaXMpIikudG9TdHJpbmcoKSk7Ci0gICAgcHJvcGVydHlWYWx1ZS5kZWxldGUocHJvcGVydHlWYWx1ZUxlbmd0aCxwcm9wZXJ0eVZhbHVlLmxlbmd0aCgpKTsKLSAgICBqc0ltYWdlUHJvcGVydGllcy5wdXQoIm9uTW91c2VET3duIixwcm9wZXJ0eVZhbHVlLmFwcGVuZCgiO21vdXNlZG93bih0aGlzKSIpLnRvU3RyaW5nKCkpOwotCi0gICAgU3RyaW5nIGltYWdlVGFnID0gSFRNTFV0aWxzLmdldEhUTUxJbWFnZVRhZyhyZXNwb25zZSxmdWxsRW5hYmxlZEltYWdlTGluayxhbHRfLCIxNiIsIjE2Iixqc0ltYWdlUHJvcGVydGllcyk7Ci0gICAgcmV0dXJuIEhUTUxVdGlscy5nZXRIVE1MTGlua1RhZyhyZXNwb25zZSxjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihmYWxzZSkpLGdldFNlbGVjdFRvb2xBY3Rpb25UYXJnZXQoKSxudWxsLGltYWdlVGFnLG51bGwpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFRvb2xNYW5hZ2VyIGdldFRvb2xNYW5hZ2VyKCkKLSAgewotICAgIHJldHVybiB0b29sTWFuYWdlcl87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgaW50IGdldFRvb2xJZCgpCi0gIHsKLSAgICByZXR1cm4gdG9vbElkXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBieXRlIGdldFRvb2xUeXBlKCkKLSAgewotICAgIHJldHVybiB0b29sVHlwZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0RW5hYmxlZEltYWdlTGluaygpCi0gIHsKLSAgICByZXR1cm4gZW5hYmxlZEltYWdlTGlua187Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0SGlnaGxpZ2h0ZWRJbWFnZUxpbmsoKQotICB7Ci0gICAgcmV0dXJuIGhpZ2hsaWdodGVkSW1hZ2VMaW5rXzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRBbHRUZXh0KCkKLSAgewotICAgIHJldHVybiBhbHRfOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRBbHRUZXh0KFN0cmluZyBhbHQpCi0gIHsKLSAgCWFsdF8gPSBhbHQ7Ci0gIH0gIAotCi0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0Rm9ybUxpbmsoKTsKLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRBY3Rpb25MaW5rKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1Rvb2xNYW5hZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1Rvb2xNYW5hZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYTkxYTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9Ub29sTWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLXB1YmxpYyBjbGFzcyBUb29sTWFuYWdlcgotewotICBwcml2YXRlIFZlY3RvciB0b29sc187Ci0gIHByaXZhdGUgaW50IHNlbGVjdGVkVG9vbElkXzsKLSAgcHJpdmF0ZSBOb2RlIG5vZGVfOwotCi0gIHB1YmxpYyBUb29sTWFuYWdlcihOb2RlIG5vZGUpCi0gIHsKLSAgICB0b29sc18gPSBuZXcgVmVjdG9yKCk7Ci0gICAgc2VsZWN0ZWRUb29sSWRfID0gMDsKLSAgICBub2RlXyA9IG5vZGU7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgaW50IGdldFNlbGVjdGVkVG9vbElkKCkKLSAgewotICAgIHJldHVybiBzZWxlY3RlZFRvb2xJZF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgaW50IHNldFNlbGVjdGVkVG9vbElkKGludCB0b29sSWQpCi0gIHsKLSAgICBpZiAodG9vbElkID49IDAgJiYgdG9vbElkIDwgdG9vbHNfLnNpemUoKSkKLSAgICAgIHNlbGVjdGVkVG9vbElkXyA9IHRvb2xJZDsKLSAgICByZXR1cm4gc2VsZWN0ZWRUb29sSWRfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGludCBhZGRUb29sKFRvb2wgdG9vbCkKLSAgewotICAgIHRvb2xzXy5hZGRFbGVtZW50KHRvb2wpOwotICAgIHJldHVybiB0b29sc18uc2l6ZSgpLTE7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgVG9vbCBnZXRUb29sKGludCB0b29sSWQpCi0gIHsKLSAgICBpZiAodG9vbElkID49MCAmJiB0b29sSWQgPCBnZXROdW1iZXJPZlRvb2xzKCkpCi0gICAgICByZXR1cm4gKFRvb2wpdG9vbHNfLmVsZW1lbnRBdCh0b29sSWQpOwotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgTGlzdCBnZXRUb29scygpCi0gIHsKLSAgICByZXR1cm4gdG9vbHNfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFRvb2wgZ2V0U2VsZWN0ZWRUb29sKCkKLSAgewotICAgIGlmIChzZWxlY3RlZFRvb2xJZF8gPj0wICYmIHNlbGVjdGVkVG9vbElkXyA8IGdldE51bWJlck9mVG9vbHMoKSkKLSAgICAgIHJldHVybiAoVG9vbCl0b29sc18uZWxlbWVudEF0KHNlbGVjdGVkVG9vbElkXyk7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgaW50IGdldE51bWJlck9mVG9vbHMoKQotICB7Ci0gICAgcmV0dXJuIHRvb2xzXy5zaXplKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgTm9kZSBnZXROb2RlKCkKLSAgewotICAgIHJldHVybiBub2RlXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9UcmFuc3BvcnRQcm92aWRlclJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1RyYW5zcG9ydFByb3ZpZGVyUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNiOThkOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1RyYW5zcG9ydFByb3ZpZGVyUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb25SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlByZWZlcmVuY2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbHVnaW4uRXhwbG9yZXJQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUFRyYW5zcG9ydFByb3ZpZGVyOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGxvYWRpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcidzIHRyYW5zcG9ydCBwcm92aWRlcgotICogZXh0ZW5zaW9ucyBhbmQgaW5zdGFudGlhdGluZyB0aGVtIHdoZW4gbmVlZGVkLiAKLSAqLwotcHVibGljIGNsYXNzIFRyYW5zcG9ydFByb3ZpZGVyUmVnaXN0cnkgewotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfVFJBTlNQT1JUX1BST1ZJREVSUyA9ICJUUkFOU1BPUlRfUFJPVklERVJTIjsJCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVYVEVOU0lPTl9OQU1FICAgICAgICAgICA9ICJ3c2VUcmFuc3BvcnRQcm92aWRlciI7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNPQVBfVFJBTlNQT1JUX1BST1ZJREVSICA9ICJzb2FwVHJhbnNwb3J0UHJvdmlkZXIiOwotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FU1BBQ0VfVVJJICAgICAgICAgICAgPSAibmFtZXNwYWNlVVJJIjsKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNQT1JUX1VSSSAgICAgICAgICAgID0gInRyYW5zcG9ydFVSSSI7Ci0JCi0JcHJpdmF0ZSBzdGF0aWMgVHJhbnNwb3J0UHJvdmlkZXJSZWdpc3RyeSBpbnN0YW5jZSA9IG51bGw7Ci0JCi0JcHJpdmF0ZSBMaXN0IHByZWZlcnJlZElEcyAgICAgICAgPSBudWxsOyAKLQlwcml2YXRlIE1hcCBzb2FwUHJvdmlkZXJFbGVtZW50cyA9IG51bGw7Ci0JcHJpdmF0ZSBNYXAgc29hcFByb3ZpZGVyQ2FjaGUgICAgPSBudWxsOwotCQotCS8qKgotCSAqIFJldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBUcmFuc3BvcnRQcm92aWRlclJlZ2lzdHJ5LgotCSAqICAKLQkgKiBAcmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCi0JICovCi0JcHVibGljIHN5bmNocm9uaXplZCBzdGF0aWMgVHJhbnNwb3J0UHJvdmlkZXJSZWdpc3RyeSBnZXRJbnN0YW5jZSgpIHsKLQkJaWYgKGluc3RhbmNlID09IG51bGwpCi0JCQlpbnN0YW5jZSA9IG5ldyBUcmFuc3BvcnRQcm92aWRlclJlZ2lzdHJ5KCk7Ci0JCXJldHVybiBpbnN0YW5jZTsKLQl9Ci0JCi0JLyoKLQkgKiBDb25zdHJ1Y3Rvci4KLQkgKi8KLQlwcml2YXRlIFRyYW5zcG9ydFByb3ZpZGVyUmVnaXN0cnkoKSB7CQkKLQkJCi0JCS8vIGdldCB0aGUgcHJlZmVyZW5jZSB2YWx1ZQotCQlQcmVmZXJlbmNlcyBwcmVmZXJlbmNlcyA9IEV4cGxvcmVyUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0UGx1Z2luUHJlZmVyZW5jZXMoKTsKLQkJU3RyaW5nIHRyYW5zcG9ydFByb3ZpZGVycyA9IHByZWZlcmVuY2VzLmdldFN0cmluZyhQUkVGX1RSQU5TUE9SVF9QUk9WSURFUlMpLnJlcGxhY2VBbGwoIlxccyIsICIiKTsKLQkJCi0JCS8vIHNwbGl0IGl0IGludG8gYSBsaXN0IG9mIHByZWZlcnJlZCB0cmFuc3BvcnQgcHJvdmlkZXIgSURzCi0JCWlmICh0cmFuc3BvcnRQcm92aWRlcnMubGVuZ3RoKCkgPT0gMCkKLQkJCXByZWZlcnJlZElEcyA9IG5ldyBBcnJheUxpc3QoKTsKLQkJZWxzZQkJCQotCQkJcHJlZmVycmVkSURzID0gQXJyYXlzLmFzTGlzdCh0cmFuc3BvcnRQcm92aWRlcnMuc3BsaXQoIiwiKSk7Ci0JCQotCQkvLyBub3cgZmluZCBhbGwgZXh0ZW5kZXJzCi0JCUlFeHRlbnNpb25SZWdpc3RyeSByZWdpc3RyeSA9IFBsYXRmb3JtLmdldEV4dGVuc2lvblJlZ2lzdHJ5KCk7Ci0JICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGNvbmZpZ3MgPSAKLQkgICAgCXJlZ2lzdHJ5LmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcihFeHBsb3JlclBsdWdpbi5JRCwgRVhURU5TSU9OX05BTUUpOyAKLQotCSAgICAvLyBjdXJyZW50bHkgd2Ugb25seSBoYXZlIG9uZSB0eXBlIG9mIHByb3ZpZGVyczogU09BUCB0cmFuc3BvcnQgcHJvdmlkZXJzCi0JICAgIHNvYXBQcm92aWRlckVsZW1lbnRzID0gbmV3IEhhc2h0YWJsZSgpOwkgICAgCi0JICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uZmlncy5sZW5ndGg7IGkrKykgewkgICAgCQkgICAgCQotICAgIAkJaWYgKFNPQVBfVFJBTlNQT1JUX1BST1ZJREVSLmVxdWFscyhjb25maWdzW2ldLmdldE5hbWUoKSkpIHsJICAgIAkJCQotICAgIAkJCVN0cmluZyBpZCA9IGNvbmZpZ3NbaV0uZ2V0QXR0cmlidXRlKCJpZCIpOwotICAgIAkJCXNvYXBQcm92aWRlckVsZW1lbnRzLnB1dChpZCwgY29uZmlnc1tpXSk7ICAgIAkJCSAgICAJCQkJCi0gICAgCQl9CSAgICAJCSAgICAJCi0JICAgIH0KLQkgICAgCi0JICAgIHNvYXBQcm92aWRlckNhY2hlID0gbmV3IEhhc2h0YWJsZSgpOwotCX0JCQotCQotCS8qCi0JICogRGV0ZXJtaW5lIGlmIHRoZSBVUklzIG1hdGNoLgotCSAqLwotCXByaXZhdGUgYm9vbGVhbiB1cmlNYXRjaChTdHJpbmcgcmVxdWlyZWQsIFN0cmluZyBzdXBwb3J0ZWQpIHsKLQkJCi0JCS8vIG5vdCBzcGVjaWZpZWQgbWVhbiBzdXBwb3J0IGV2ZXJ5dGhpbmcKLQkJaWYgKHN1cHBvcnRlZCA9PSBudWxsKQotCQkJcmV0dXJuIHRydWU7Ci0JCQkJCi0JCWlmICghcmVxdWlyZWQuZW5kc1dpdGgoIi8iKSkgIHJlcXVpcmVkICs9ICIvIjsKLQkJaWYgKCFzdXBwb3J0ZWQuZW5kc1dpdGgoIi8iKSkgc3VwcG9ydGVkICs9ICIvIjsKLQkJCi0JCXJldHVybiByZXF1aXJlZC5lcXVhbHMoc3VwcG9ydGVkKTsKLQl9Ci0JCi0JLyoKLQkgKiBDcmVhdGUgdGhlIGV4dGVuc2lvbiBmb3IgdGhlIGdpdmVuIGtleSwgYnV0IG9ubHkgaWYgaXQgc3VwcG9ydHMgdGhlIGJpbmRpbmcgbmFtZXNwYWNlIGFuZCB0cmFuc3BvcnQKLQkgKi8KLQlwcml2YXRlIElTT0FQVHJhbnNwb3J0UHJvdmlkZXIgY3JlYXRlRXh0ZW5zaW9uKE9iamVjdCBrZXksIFN0cmluZyBuYW1lc3BhY2VVUkksIFN0cmluZyB0cmFuc3BvcnRVUkkpIHsKLQkJCi0JCUlDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtZW50ID0gKElDb25maWd1cmF0aW9uRWxlbWVudCkgc29hcFByb3ZpZGVyRWxlbWVudHMuZ2V0KGtleSk7CQkJCQkJCi0JCWlmIChlbGVtZW50ID09IG51bGwpCi0JCQlyZXR1cm4gbnVsbDsKLQkJCi0JCWJvb2xlYW4gc3VwcG9ydHNOYW1lc3BhY2UgPSB1cmlNYXRjaChuYW1lc3BhY2VVUkksIGVsZW1lbnQuZ2V0QXR0cmlidXRlKE5BTUVTUEFDRV9VUkkpKTsKLQkJYm9vbGVhbiBzdXBwb3J0c1RyYW5zcG9ydCA9IHVyaU1hdGNoKHRyYW5zcG9ydFVSSSwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoVFJBTlNQT1JUX1VSSSkpOwkJCQotCQkKLQkJaWYgKHN1cHBvcnRzTmFtZXNwYWNlICYmIHN1cHBvcnRzVHJhbnNwb3J0KSB7CQkJCi0JCQkKLQkJCVN0cmluZyBwcm92aWRlckNsYXNzSUQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsKLQkJCU9iamVjdCBvYmogPSBudWxsOwotCQkJCi0JCQl0cnkgewotCQkJCS8vIGNoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGUgdHJhbnNwb3J0IHByb3ZpZGVyIGNhY2hlZCwKLQkJCQkvLyBpZiBub3QsIHRoZW4gY3JlYXRlIG9uZQotCQkJCXN5bmNocm9uaXplZCAoc29hcFByb3ZpZGVyQ2FjaGUpIHsKLQkJCQkJb2JqID0gc29hcFByb3ZpZGVyQ2FjaGUuZ2V0KHByb3ZpZGVyQ2xhc3NJRCk7IAkJCQkJCi0JCQkJCWlmIChvYmogPT0gbnVsbCkgewkJCQkJCi0JCQkJCQlvYmogPSBlbGVtZW50LmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oImNsYXNzIik7Ci0JCQkJCQlzb2FwUHJvdmlkZXJDYWNoZS5wdXQocHJvdmlkZXJDbGFzc0lELCBvYmopOwotCQkJCQl9CQkJCQkKLQkJCQl9Ci0JCQkJcmV0dXJuIChJU09BUFRyYW5zcG9ydFByb3ZpZGVyKSBvYmo7Ci0JCQl9Ci0JCQljYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7fQkJCQkJCi0JCX0KLQkJCi0JCXJldHVybiBudWxsOwotCX0KLQkKLQkvKioKLQkgKiBHZXQgYW4gSVNPQVBUcmFuc3BvcnRQcm92aWRlciB0aGF0IHN1cHBvcnRzIHRoZSBiaW5kaW5nIG5hbWVzcGFjZSBhbmQgdHJhbnNwb3J0LiAgVGhpcyBtZXRob2Qgd2lsbAotCSAqIGZpcnN0IGxvb2sgZm9yIHByZWZlcnJlZCBJRHMgZGVmaW5lZCB1c2luZyB0aGUgVFJBTlNQT1JUX1BST1ZJREVSUyBwcmVmZXJlbmNlIGtleS4gIElmIGEgc3VpdGFibGUKLQkgKiBwcm92aWRlciBpcyBub3QgZm91bmQsIGl0IHdpbGwgdGhlbiBsb29rIGF0IGFsbCBvdGhlciBleHRlbmRlcnMgaW4gbm9uLWRldGVybWluaXN0aWMgb3JkZXIuCi0JICogCi0JICogQHBhcmFtIG5hbWVzcGFjZVVSSSBUaGUgYmluZGluZyBuYW1lc3BhY2UgVVJJCi0JICogQHBhcmFtIHRyYW5zcG9ydFVSSSBUaGUgYmluZGluZyB0cmFuc3BvcnQgVVJJCi0JICogCi0JICogQHJldHVybiBSZXR1cm5zIGEgc3VpdGFibGUgSVNPQVBUcmFucG9ydFByb3ZpZGVyIGZvciB0aGUgZ2l2ZW4gYmluZGluZyBpbmZvcm1hdGlvbiwgb3IgbnVsbAotCSAqIGlmIHRoZXJlJ3Mgbm8gbWF0Y2guCi0JICovCi0JcHVibGljIElTT0FQVHJhbnNwb3J0UHJvdmlkZXIgZ2V0U09BUFRyYW5zcG9ydFByb3ZpZGVyKFN0cmluZyBuYW1lc3BhY2VVUkksIFN0cmluZyB0cmFuc3BvcnRVUkkpIHsKLQkKLQkJSVNPQVBUcmFuc3BvcnRQcm92aWRlciBwcm92aWRlciA9IG51bGw7Ci0JCQotCQlJdGVyYXRvciBpdGVyID0gcHJlZmVycmVkSURzLml0ZXJhdG9yKCk7Ci0JCQotCQkvLyBjaGVjayBwcmVmZXJyZWQgSURzIGZpcnN0Ci0JCXdoaWxlIChpdGVyLmhhc05leHQoKSkgewotCQkJcHJvdmlkZXIgPSBjcmVhdGVFeHRlbnNpb24oaXRlci5uZXh0KCksIG5hbWVzcGFjZVVSSSwgdHJhbnNwb3J0VVJJKTsKLQkJCWlmIChwcm92aWRlciAhPSBudWxsKQotCQkJCXJldHVybiBwcm92aWRlcjsKLQkJfQotCQkKLQkJaXRlciA9IHNvYXBQcm92aWRlckVsZW1lbnRzLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0JCQotCQkvLyBjaGVjayByZXN0IG9mIHRoZSBwcm92aWRlcnMKLQkJd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7Ci0JCQlPYmplY3Qga2V5ID0gaXRlci5uZXh0KCk7Ci0JCQotCQkJLy8gYWxyZWFkeSBjaGVja2VkIHRoZSBwcmVmZXJyZWQgSURzCi0JCQlpZiAocHJlZmVycmVkSURzLmNvbnRhaW5zKGtleSkpCi0JCQkJY29udGludWU7Ci0JCQkKLQkJCXByb3ZpZGVyID0gY3JlYXRlRXh0ZW5zaW9uKGtleSwgbmFtZXNwYWNlVVJJLCB0cmFuc3BvcnRVUkkpOwotCQkJaWYgKHByb3ZpZGVyICE9IG51bGwpCi0JCQkJcmV0dXJuIHByb3ZpZGVyOwkJCQotCQl9Ci0JCQotCQlyZXR1cm4gbnVsbDsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1ZpZXdUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3BlcnNwZWN0aXZlL1ZpZXdUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNTk2MDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS9wZXJzcGVjdGl2ZS9WaWV3VG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLlRvb2xUeXBlczsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFZpZXdUb29sIGV4dGVuZHMgRm9ybVRvb2wKLXsKLSAgcHJpdmF0ZSBIYXNodGFibGUgdmlld1Rvb2xNYW5hZ2Vyc187Ci0KLSAgcHVibGljIFZpZXdUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBlbmFibGVkSW1hZ2VMaW5rLFN0cmluZyBoaWdobGlnaHRlZEltYWdlTGluayxTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsZW5hYmxlZEltYWdlTGluayxoaWdobGlnaHRlZEltYWdlTGluayxhbHQpOwotICAgIHRvb2xUeXBlXyA9IFRvb2xUeXBlcy5WSUVXOwotICAgIHZpZXdUb29sTWFuYWdlcnNfID0gbmV3IEhhc2h0YWJsZSgpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgYWRkU2V0RGVmYXVsdFZpZXdUb29sKFRvb2xNYW5hZ2VyIHZpZXdUb29sTWFuYWdlcixpbnQgaW5kZXgpOwotICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBhZGRUb29scyhUb29sTWFuYWdlciB2aWV3VG9vbE1hbmFnZXIsaW50IGluZGV4KTsKLQotICBwdWJsaWMgZmluYWwgVG9vbE1hbmFnZXIgY3JlYXRlVG9vbE1hbmFnZXIoaW50IHZpZXdJZCkKLSAgewotICAgIFRvb2xNYW5hZ2VyIHZpZXdUb29sTWFuYWdlciA9IG5ldyBUb29sTWFuYWdlcih0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpKTsKLSAgICBhZGRUb29scyh2aWV3VG9vbE1hbmFnZXIsdmlld0lkKTsKLSAgICBhZGRTZXREZWZhdWx0Vmlld1Rvb2wodmlld1Rvb2xNYW5hZ2VyLHZpZXdJZCk7Ci0gICAgdmlld1Rvb2xNYW5hZ2Vyc18ucHV0KFN0cmluZy52YWx1ZU9mKHZpZXdJZCksdmlld1Rvb2xNYW5hZ2VyKTsKLSAgICByZXR1cm4gdmlld1Rvb2xNYW5hZ2VyOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFRvb2xNYW5hZ2VyIGdldFRvb2xNYW5hZ2VyKGludCB2aWV3SWQpCi0gIHsKLSAgICByZXR1cm4gKFRvb2xNYW5hZ2VyKSh2aWV3VG9vbE1hbmFnZXJzXy5nZXQoU3RyaW5nLnZhbHVlT2Yodmlld0lkKSkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgY2xlYXJWaWV3VG9vbE1hbmFnZXIoaW50IHZpZXdJZCkKLSAgewotICAgIHZpZXdUb29sTWFuYWdlcnNfLnJlbW92ZShTdHJpbmcudmFsdWVPZih2aWV3SWQpKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGNsZWFyVmlld1Rvb2xNYW5hZ2VycygpCi0gIHsKLSAgICB2aWV3VG9vbE1hbmFnZXJzXy5jbGVhcigpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9BZGRJdGVtc1RvRmF2b3JpdGVzQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9BZGRJdGVtc1RvRmF2b3JpdGVzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjODdlNWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQWRkSXRlbXNUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotCi1wdWJsaWMgY2xhc3MgQWRkSXRlbXNUb0Zhdm9yaXRlc0FjdGlvbiBleHRlbmRzIFVERElQcm9wZXJ0aWVzRm9ybUFjdGlvbgotewotICBwdWJsaWMgQWRkSXRlbXNUb0Zhdm9yaXRlc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIFN0cmluZ1tdIHNlbGVjdGVkTm9kZUlkcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgLy8gVGhlIGNsaWVudCBKYXZhc2NyaXB0IGVuZm9yY2VzIHRoZSBydWxlIHRoYXQgYXQgbGVhc3Qgb25lIGl0ZW0gd2FzIHNlbGVjdGVkIGJlZm9yZSB0aGUgZm9ybSBjYW4gYmUgc3VibWl0dGVkLgotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlNFTEVDVEVEX05PREVJRFMsc2VsZWN0ZWROb2RlSWRzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFN0cmluZ1tdIHNlbGVjdGVkTm9kZUlkcyA9IChTdHJpbmdbXSlwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5TRUxFQ1RFRF9OT0RFSURTKTsKLSAgICBBZGRUb0Zhdm9yaXRlc0FjdGlvbiBhY3Rpb24gPSBuZXcgQWRkVG9GYXZvcml0ZXNBY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBmb3IgKGludCBpPTA7aTxzZWxlY3RlZE5vZGVJZHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlLnB1dChBY3Rpb25JbnB1dHMuTk9ERUlELHNlbGVjdGVkTm9kZUlkc1tpXSk7Ci0gICAgICBpZiAoYWN0aW9uLmZhdm9yaXRlRXhpc3RzKCkpIHsKLSAgICAgICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgICAgICBOb2RlIG5vZGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChzZWxlY3RlZE5vZGVJZHNbaV0pKTsKLSAgICAgICAgU3RyaW5nIG5vZGVOYW1lID0gbm9kZS5nZXROb2RlTmFtZSgpOwotICAgICAgICB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0ZBVk9SSVRFX0FMUkVBRFlfRVhJU1RTIixub2RlTmFtZSkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBhY3Rpb24ucnVuKCk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9BZGRQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9BZGRQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NmI3NjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQWRkUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjQyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkJ1c2luZXNzRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLk11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmFzc2VydGlvbi5QdWJsaXNoZXJBc3NlcnRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5EaXNwb3NpdGlvblJlcG9ydDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlJlc3VsdDsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLktleWVkUmVmZXJlbmNlOwotCi1wdWJsaWMgY2xhc3MgQWRkUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbiBleHRlbmRzIENvbW1vblB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24KLXsKLSAgcHVibGljIEFkZFB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgaWYgKHJlZ2lzdHJ5Tm9kZV8gPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIEZvcm1Ub29sIGZvcm1Ub29sID0gZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpOwotCi0gICAgLy8gaWRzIGZyb20gdWRkaU9iamVjdHNfdGFibGUuanNwCi0gICAgU3RyaW5nW10gc2VsZWN0ZWRCdXNJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfU0VMRUNURURfQlVTX0lEKTsKLSAgICBpZiAoc2VsZWN0ZWRCdXNJZHMgPT0gbnVsbCB8fCBzZWxlY3RlZEJ1c0lkcy5sZW5ndGggPT0gMCkgewotICAgICAgLy8gU3luY2hyb25pemUgY2xpZW50IHZpZXcgYW5kIHNlcnZlciBtb2RlbCAodWRkaU9iamVjdF90YWJsZS5qc3ApCi0gICAgICBzeW5jaHJvbml6ZVVERElPYmplY3RUYWJsZSgpOwotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19TRUxFQ1RFRF9CVVNfSUQsIHNlbGVjdGVkQnVzSWRzKTsKLSAgICAgIC8vIFN5bmNocm9uaXplIGNsaWVudCB2aWV3IGFuZCBzZXJ2ZXIgbW9kZWwgKHVkZGlPYmplY3RfdGFibGUuanNwKQotICAgICAgc3luY2hyb25pemVVRERJT2JqZWN0VGFibGUoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmdbXSBhc3NlcnRpb25UeXBlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19UWVBFKTsKLSAgICBpZiAoYXNzZXJ0aW9uVHlwZXMgIT0gbnVsbCAmJiBhc3NlcnRpb25UeXBlcy5sZW5ndGggPiAwKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfVFlQRSwgYXNzZXJ0aW9uVHlwZXMpOwotICAgIGVsc2UKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0KLSAgICBTdHJpbmdbXSBkaXJlY3Rpb25zID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hFUl9BU1NFUlRJT05TX0RJUkVDVElPTik7Ci0gICAgaWYgKGRpcmVjdGlvbnMgIT0gbnVsbCAmJiBkaXJlY3Rpb25zLmxlbmd0aCA+IDApCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19ESVJFQ1RJT04sIGRpcmVjdGlvbnMpOwotICAgIGVsc2UKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0KLSAgICAvLyBpZiBub3QgeWV0IGxvZ2dlZCBpbiwgdmFsaWRhdGUgdGhlIHBhcmFtZXRlcnMgbmVlZGVkIHRvIGxvZyBpbgotICAgIGlmICghaXNMb2dnZWRJbl8pIHsKLSAgICAgIFN0cmluZyBwdWJsaXNoVVJMID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgIFN0cmluZyB1c2VySUQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgIFN0cmluZyBwYXNzd29yZCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0KLSAgICAgIGlmIChwdWJsaXNoVVJMICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMLHB1Ymxpc2hVUkwpOwotICAgICAgICBmb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMLHB1Ymxpc2hVUkwpOwotICAgICAgfQotICAKLSAgICAgIGlmICghVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHB1Ymxpc2hVUkwpKQotICAgICAgewotICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICBmb3JtVG9vbC5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9QVUJMSVNIX1VSTCIpKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHVzZXJJRCAhPSBudWxsKQotICAgICAgewotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQsdXNlcklEKTsKLSAgICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQsdXNlcklEKTsKLSAgICAgIH0KLSAgCi0gICAgICBpZiAoIVZhbGlkYXRvci52YWxpZGF0ZVN0cmluZyh1c2VySUQpKQotICAgICAgewotICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICBmb3JtVG9vbC5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfVVNFUklEIikpOwotICAgICAgfQotCi0gICAgICBpZiAocGFzc3dvcmQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQscGFzc3dvcmQpOwotICAgICAgICBmb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JELHBhc3N3b3JkKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gaW5wdXRzVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgaWYgKHJlZ2lzdHJ5Tm9kZV8gPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdpc3RyeUVsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ2lzdHJ5Tm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0KLSAgICAvLyBpZiBub3QgeWV0IGxvZ2dlZCBpbiwgbG9nIGluIGZpcnN0Ci0gICAgaWYgKCFpc0xvZ2dlZEluXykgewotICAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgIFN0cmluZyB1c2VySUQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgICBTdHJpbmcgcGFzc3dvcmQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEKTsKLQotICAgICAgdHJ5IHsKLSAgICAgICAgcmVnaXN0cnlFbGVtZW50LnBlcmZvcm1Mb2dpbihwdWJsaXNoVVJMLCB1c2VySUQsIHBhc3N3b3JkKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChUcmFuc3BvcnRFeGNlcHRpb24gdGUpIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJUcmFuc3BvcnRFeGNlcHRpb24iKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgY2F0Y2ggKFVERElFeGNlcHRpb24gdWRkaWUpIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJVRERJRXhjZXB0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGllLnRvU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG1lKSB7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiTWFsZm9ybWVkVVJMRXhjZXB0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKG1lLmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBVRERJUHJveHkgcHJveHkgPSByZWdpc3RyeUVsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICByZWdpc3RyeUVsZW1lbnQuZ2V0VXNlcklkKCk7Ci0gICAgcmVnaXN0cnlFbGVtZW50LmdldENyZWQoKTsKLSAgICBCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCA9IChCdXNpbmVzc0VsZW1lbnQpc2VsZWN0ZWRFbGVtZW50OwotCi0gICAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIG93bmVkIGJ1c2luZXNzCi0gICAgLy8gaWYgbm90LCB0aGUgQWRkUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkCi0gICAgaWYgKCFpc0J1c2luZXNzT3duZWQoYnVzRWxlbWVudCkpIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT1RfT1dORURfQlVTSU5FU1MiKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgU3RyaW5nW10gYXNzZXJ0aW9uVHlwZXMgPSAoU3RyaW5nW10pcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfVFlQRSk7Ci0gICAgICBTdHJpbmdbXSBkaXJlY3Rpb25zID0gKFN0cmluZ1tdKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hFUl9BU1NFUlRJT05TX0RJUkVDVElPTik7Ci0gICAgICBTdHJpbmcgdGhpc0J1c2luZXNzS2V5ID0gYnVzRWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpLmdldEJ1c2luZXNzS2V5KCk7Ci0KLSAgICAgIC8vIGdldCBhbGwgc2VsZWN0ZWQgYnVzaW5lc3NlcwotICAgICAgRm9ybVRvb2wgZm9ybVRvb2wgPSAoRm9ybVRvb2wpKHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0gICAgICBTdHJpbmcgc3ViUXVlcnlLZXkgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgICAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5KTsKLSAgICAgIFZlY3RvciBzZWxlY3RlZEJ1c2luZXNzZXMgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRERfUFVCTElTSEVSX0FTU0VSVElPTlMpOwotICAgICAgRW51bWVyYXRpb24gZSA9IHNlbGVjdGVkQnVzaW5lc3Nlcy5lbGVtZW50cygpOwotICAgICAgaWYgKCFlLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgLy8gY3JlYXRlIGEgdmVjdG9yIG9mIHB1Ymxpc2hlciBhc3NlcnRpb25zIGJhc2VkIG9uIGFsbCB0aGUgc2VsZWN0ZWQgYnVzaW5lc3NlcwotICAgICAgVmVjdG9yIHB1YkFzc2VydGlvblZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGludCBpID0gMDsKLSAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgIExpc3RFbGVtZW50IGxlID0gKExpc3RFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgQnVzaW5lc3NFbnRpdHkgc3AgPSAoQnVzaW5lc3NFbnRpdHkpbGUuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIEtleWVkUmVmZXJlbmNlIGtleWVkUmVmID0gbmV3IEtleWVkUmVmZXJlbmNlKGFzc2VydGlvblR5cGVzW2ldLCBhc3NlcnRpb25UeXBlc1tpXSwgVE1vZGVsLlJFTEFUSU9OU0hJUFNfVE1PREVMX0tFWSk7Ci0gICAgICAgIGlmIChJbnRlZ2VyLnBhcnNlSW50KGRpcmVjdGlvbnNbaV0pID09IFVERElBY3Rpb25JbnB1dHMuRElSRUNUSU9OX1RPKQotICAgICAgICAgIHB1YkFzc2VydGlvblZlY3Rvci5hZGQobmV3IFB1Ymxpc2hlckFzc2VydGlvbihzcC5nZXRCdXNpbmVzc0tleSgpLCB0aGlzQnVzaW5lc3NLZXksIGtleWVkUmVmKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBwdWJBc3NlcnRpb25WZWN0b3IuYWRkKG5ldyBQdWJsaXNoZXJBc3NlcnRpb24odGhpc0J1c2luZXNzS2V5LCBzcC5nZXRCdXNpbmVzc0tleSgpLCBrZXllZFJlZikpOwotICAgICAgICBpKys7Ci0gICAgICB9Ci0KLSAgICAgIC8vIHByb3h5LmFkZF9wdWJsaXNoZXJBc3NlcnRpb25zKC4uLikKLSAgICAgIERpc3Bvc2l0aW9uUmVwb3J0IHJlcG9ydCA9IHByb3h5LmFkZF9wdWJsaXNoZXJBc3NlcnRpb25zKHJlZ2lzdHJ5RWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpLCBwdWJBc3NlcnRpb25WZWN0b3IpOwotCi0gICAgICAvLyByZWZyZXNoIHB1Ymxpc2hlciBhc3NlcnRpb25zIGlmZiBwcm94eSByZXBvcnRzIHN1Y2Nlc3MKLSAgICAgIGlmIChyZXBvcnQuc3VjY2VzcygpKSB7Ci0gICAgICAgIHNlbGVjdGVkQnVzaW5lc3Nlcy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgICBTaG93UHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbiBzaG93UEFBY3Rpb24gPSBuZXcgU2hvd1B1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24oY29udHJvbGxlcl8pOwotICAgICAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IHNob3dQQUFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgIE9iamVjdCBpZHMgPSBwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19TRUxFQ1RFRF9CVVNfSUQpOwotICAgICAgICBpZiAoaWRzICE9IG51bGwpCi0gICAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19TRUxFQ1RFRF9CVVNfSUQsIGlkcyk7Ci0gICAgICAgIHNob3dQQUFjdGlvbi5ydW4oKTsKLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHJlcG9ydC5zdWNjZXNzKCk7Ci0gICAgfQotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIHVkZGllKSB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJVRERJRXhjZXB0aW9uIik7Ci0gICAgICBEaXNwb3NpdGlvblJlcG9ydCByZXBvcnQgPSB1ZGRpZS5nZXREaXNwb3NpdGlvblJlcG9ydCgpOwotCSAgVmVjdG9yIHJlcG9ydEVyckluZm8gPSByZXBvcnQuZ2V0UmVzdWx0VmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcG9ydEVyckluZm8uc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoKChSZXN1bHQpIHJlcG9ydEVyckluZm8uZ2V0KGkpKS5nZXRFcnJJbmZvKCkuZ2V0VGV4dCgpKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgY2F0Y2goRXhjZXB0aW9uIGUpIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIkV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQWRkVG9GYXZvcml0ZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0FkZFRvRmF2b3JpdGVzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYzMzZWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQWRkVG9GYXZvcml0ZXNBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc0ZvbGRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuQnVzaW5lc3NFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5DYXRlZ29yeU1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlSW50ZXJmYWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5CdXNpbmVzc05vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuUmVnaXN0cnlOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlNlcnZpY2VJbnRlcmZhY2VOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlNlcnZpY2VOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIEFkZFRvRmF2b3JpdGVzQWN0aW9uIGV4dGVuZHMgVURESU5vZGVBY3Rpb24KLXsKLSAgcHVibGljIEFkZFRvRmF2b3JpdGVzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ1ZGRpL2FjdGlvbnMvQ2hlY2tGYXZvcml0ZUV4aXN0c0FjdGlvbkpTUC5qc3A/Iik7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCkuYXBwZW5kKCc9JykuYXBwZW5kKG5vZGVJZCk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJlZ2lzdHJ5RXhpc3RzKFN0cmluZyByZWdpc3RyeU5hbWUsTm9kZSByZWdpc3RyeU5vZGUpCi0gIHsKLSAgICByZWdpc3RyeU5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9SRUdJU1RSWV9OQU1FLHJlZ2lzdHJ5TmFtZSk7Ci0gICAgcmV0dXJuIGZhdm9yaXRlRXhpc3RzKHRhYmxlLEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1JFR0lTVFJZX0ZPTERFUl9OT0RFKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGJ1c2luZXNzRXhpc3RzKFN0cmluZyBidXNpbmVzc05hbWUsTm9kZSBidXNpbmVzc05vZGUpCi0gIHsKLSAgICBCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCA9IChCdXNpbmVzc0VsZW1lbnQpYnVzaW5lc3NOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIGJ1c2luZXNzS2V5ID0gYnVzRWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpLmdldEJ1c2luZXNzS2V5KCk7Ci0gICAgU3RyaW5nIGlucXVpcnlVUkwgPSByZWdFbGVtZW50LmdldElucXVpcnlVUkwoKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9CVVNJTkVTU19OQU1FLGJ1c2luZXNzTmFtZSk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9CVVNJTkVTU19JTlFVSVJZX0FQSSxpbnF1aXJ5VVJMKTsKLSAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX0JVU0lORVNTX0tFWSwgYnVzaW5lc3NLZXkpOwotICAgIHJldHVybiBmYXZvcml0ZUV4aXN0cyh0YWJsZSxGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9CVVNJTkVTU19GT0xERVJfTk9ERSk7Ci0gIH0KLQotICAgcHVibGljIGZpbmFsIGJvb2xlYW4gc2VydmljZUV4aXN0cyhTdHJpbmcgc2VydmljZU5hbWUsTm9kZSBzZXJ2aWNlTm9kZSkKLSAgewotICAgIFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFNlcnZpY2VFbGVtZW50KXNlcnZpY2VOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIHNlcnZpY2VLZXkgPSBzZXJ2aWNlRWxlbWVudC5nZXRCdXNpbmVzc1NlcnZpY2UoKS5nZXRTZXJ2aWNlS2V5KCk7Ci0gICAgU3RyaW5nIGlucXVpcnlVUkwgPSByZWdFbGVtZW50LmdldElucXVpcnlVUkwoKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9TRVJWSUNFX05BTUUsc2VydmljZU5hbWUpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfU0VSVklDRV9JTlFVSVJZX0FQSSxpbnF1aXJ5VVJMKTsKLSAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfS0VZLHNlcnZpY2VLZXkpOwotICAgIHJldHVybiBmYXZvcml0ZUV4aXN0cyh0YWJsZSxGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9TRVJWSUNFX0ZPTERFUl9OT0RFKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHNlcnZpY2VJbnRlcmZhY2VFeGlzdHMoU3RyaW5nIHNpTmFtZSxOb2RlIHNpTm9kZSkKLSAgewotICAgIFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IHNpRWxlbWVudCA9IChTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudClzaU5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBTdHJpbmcgdE1vZGVsS2V5ID0gc2lFbGVtZW50LmdldFRNb2RlbCgpLmdldFRNb2RlbEtleSgpOwotICAgIFN0cmluZyBpbnF1aXJ5VVJMID0gcmVnRWxlbWVudC5nZXRJbnF1aXJ5VVJMKCk7Ci0gICAgSGFzaHRhYmxlIHRhYmxlID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSxzaU5hbWUpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfU0VSVklDRV9JTlRFUkZBQ0VfSU5RVUlSWV9BUEksaW5xdWlyeVVSTCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9LRVksdE1vZGVsS2V5KTsKLSAgICByZXR1cm4gZmF2b3JpdGVFeGlzdHModGFibGUsRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9JTlRFUkZBQ0VfRk9MREVSX05PREUpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gYWRkUmVnaXN0cnlUb0Zhdm9yaXRlcyhTdHJpbmcgcmVnaXN0cnlOYW1lLE5vZGUgcmVnaXN0cnlOb2RlKQotICB7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ2lzdHJ5Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIFN0cmluZyBpbnF1aXJ5VVJMID0gcmVnRWxlbWVudC5nZXRJbnF1aXJ5VVJMKCk7Ci0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSByZWdFbGVtZW50LmdldFB1Ymxpc2hVUkwoKTsKLSAgICBpZiAocHVibGlzaFVSTCA9PSBudWxsKQotICAgICAgcHVibGlzaFVSTCA9ICIiOwotICAgIEhhc2h0YWJsZSB0YWJsZSA9IG5ldyBIYXNodGFibGUoKTsKLSAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1JFR0lTVFJZX1BVQkxJU0hfQVBJLHB1Ymxpc2hVUkwpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfUkVHSVNUUllfSU5RVUlSWV9BUEksaW5xdWlyeVVSTCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9SRUdJU1RSWV9OQU1FLHJlZ2lzdHJ5TmFtZSk7Ci0gICAgRW51bWVyYXRpb24gdXNlckRlZmluZWRDYXRlZ29yaWVzRW51bSA9IHJlZ0VsZW1lbnQuZ2V0VXNlckRlZmluZWRDYXRlZ29yaWVzKCk7Ci0gICAgaWYgKHVzZXJEZWZpbmVkQ2F0ZWdvcmllc0VudW0gIT0gbnVsbCkKLSAgICB7Ci0gICAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1JFR0lTVFJZX0NBVEVHT1JJRVNfRU5VTSx1c2VyRGVmaW5lZENhdGVnb3JpZXNFbnVtKTsKLSAgICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1BMVUdJTl9NRVRBREFUQV9ESVJFQ1RPUlksY29udHJvbGxlcl8uZ2V0U2VydmxldEVuZ2luZVN0YXRlTG9jYXRpb24oKSk7Ci0gICAgfQotICAgIHJldHVybiBhZGRUb0Zhdm9yaXRlcyh0YWJsZSxGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9SRUdJU1RSWV9GT0xERVJfTk9ERSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBhZGRCdXNpbmVzc1RvRmF2b3JpdGVzKFN0cmluZyBidXNpbmVzc05hbWUsTm9kZSBidXNpbmVzc05vZGUpCi0gIHsKLSAgICBCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCA9IChCdXNpbmVzc0VsZW1lbnQpYnVzaW5lc3NOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIGJ1c2luZXNzS2V5ID0gYnVzRWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpLmdldEJ1c2luZXNzS2V5KCk7Ci0gICAgU3RyaW5nIGlucXVpcnlVUkwgPSByZWdFbGVtZW50LmdldElucXVpcnlVUkwoKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9CVVNJTkVTU19OQU1FLGJ1c2luZXNzTmFtZSk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9CVVNJTkVTU19JTlFVSVJZX0FQSSxpbnF1aXJ5VVJMKTsKLSAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX0JVU0lORVNTX0tFWSwgYnVzaW5lc3NLZXkpOwotICAgIHJldHVybiBhZGRUb0Zhdm9yaXRlcyh0YWJsZSxGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9CVVNJTkVTU19GT0xERVJfTk9ERSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGFkZFNlcnZpY2VUb0Zhdm9yaXRlcyhTdHJpbmcgc2VydmljZU5hbWUsTm9kZSBzZXJ2aWNlTm9kZSkKLSAgewotICAgIFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFNlcnZpY2VFbGVtZW50KXNlcnZpY2VOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIHNlcnZpY2VLZXkgPSBzZXJ2aWNlRWxlbWVudC5nZXRCdXNpbmVzc1NlcnZpY2UoKS5nZXRTZXJ2aWNlS2V5KCk7Ci0gICAgU3RyaW5nIGlucXVpcnlVUkwgPSByZWdFbGVtZW50LmdldElucXVpcnlVUkwoKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9TRVJWSUNFX05BTUUsc2VydmljZU5hbWUpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfU0VSVklDRV9JTlFVSVJZX0FQSSxpbnF1aXJ5VVJMKTsKLSAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfS0VZLHNlcnZpY2VLZXkpOwotICAgIHJldHVybiBhZGRUb0Zhdm9yaXRlcyh0YWJsZSxGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9TRVJWSUNFX0ZPTERFUl9OT0RFKTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gYWRkU2VydmljZUludGVyZmFjZVRvRmF2b3JpdGVzKFN0cmluZyBzaU5hbWUsTm9kZSBzaU5vZGUpCi0gIHsKLSAgICBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBzaUVsZW1lbnQgPSAoU2VydmljZUludGVyZmFjZUVsZW1lbnQpc2lOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIHRNb2RlbEtleSA9IHNpRWxlbWVudC5nZXRUTW9kZWwoKS5nZXRUTW9kZWxLZXkoKTsKLSAgICBTdHJpbmcgaW5xdWlyeVVSTCA9IHJlZ0VsZW1lbnQuZ2V0SW5xdWlyeVVSTCgpOwotICAgIEhhc2h0YWJsZSB0YWJsZSA9IG5ldyBIYXNodGFibGUoKTsKLSAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUsc2lOYW1lKTsKLSAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0lOUVVJUllfQVBJLGlucXVpcnlVUkwpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfU0VSVklDRV9JTlRFUkZBQ0VfS0VZLHRNb2RlbEtleSk7Ci0gICAgcmV0dXJuIGFkZFRvRmF2b3JpdGVzKHRhYmxlLEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0ZPTERFUl9OT0RFKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGZhdm9yaXRlRXhpc3RzKCkKLSAgewotICAgIGludCBub2RlSWQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBOb2RlIG5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0Tm9kZShub2RlSWQpOwotICAgIFN0cmluZyBub2RlTmFtZSA9IG5vZGUuZ2V0Tm9kZU5hbWUoKTsKLSAgICBpZiAobm9kZSBpbnN0YW5jZW9mIFJlZ2lzdHJ5Tm9kZSkKLSAgICAgIHJldHVybiByZWdpc3RyeUV4aXN0cyhub2RlTmFtZSxub2RlKTsKLSAgICBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgQnVzaW5lc3NOb2RlKQotICAgICAgcmV0dXJuIGJ1c2luZXNzRXhpc3RzKG5vZGVOYW1lLG5vZGUpOwotICAgIGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBTZXJ2aWNlTm9kZSkKLSAgICAgIHJldHVybiBzZXJ2aWNlRXhpc3RzKG5vZGVOYW1lLG5vZGUpOwotICAgIGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBTZXJ2aWNlSW50ZXJmYWNlTm9kZSkKLSAgICAgIHJldHVybiBzZXJ2aWNlSW50ZXJmYWNlRXhpc3RzKG5vZGVOYW1lLG5vZGUpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgTm9kZSBub2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlkKTsKLSAgICBTdHJpbmcgbm9kZU5hbWUgPSBub2RlLmdldE5vZGVOYW1lKCk7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgYm9vbGVhbiBhZGRUb0Zhdm9yaXRlc1Jlc3VsdCA9IGZhbHNlOwotICAgIGlmIChub2RlIGluc3RhbmNlb2YgUmVnaXN0cnlOb2RlKQotICAgIHsKLSAgICAgIGFkZFRvRmF2b3JpdGVzUmVzdWx0ID0gYWRkUmVnaXN0cnlUb0Zhdm9yaXRlcyhub2RlTmFtZSxub2RlKTsKLSAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClub2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICBFbnVtZXJhdGlvbiBlID0gcmVnRWxlbWVudC5nZXRVc2VyRGVmaW5lZENhdGVnb3JpZXMoKTsKLSAgICAgIGlmIChlICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgICB7Ci0gICAgICAgICAgQ2F0ZWdvcnlNb2RlbCBjYXRlZ29yeU1vZGVsID0gKENhdGVnb3J5TW9kZWwpZS5uZXh0RWxlbWVudCgpOwotICAgICAgICAgIFRocm93YWJsZSBlcnJvckV4Y2VwdGlvbiA9IGNhdGVnb3J5TW9kZWwuZ2V0RXJyb3JFeGNlcHRpb24oKTsKLSAgICAgICAgICBpZiAoZXJyb3JFeGNlcHRpb24gIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmdbXSBhcmdzID0ge2NhdGVnb3J5TW9kZWwuZ2V0RGlzcGxheU5hbWUoKSxlcnJvckV4Y2VwdGlvbi5nZXRNZXNzYWdlKCl9OwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9TQVZJTkdfQ0FURUdPUllfREFUQSIsYXJncykpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgQnVzaW5lc3NOb2RlKQotICAgICAgYWRkVG9GYXZvcml0ZXNSZXN1bHQgPSBhZGRCdXNpbmVzc1RvRmF2b3JpdGVzKG5vZGVOYW1lLG5vZGUpOwotICAgIGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBTZXJ2aWNlTm9kZSkKLSAgICAgIGFkZFRvRmF2b3JpdGVzUmVzdWx0ID0gYWRkU2VydmljZVRvRmF2b3JpdGVzKG5vZGVOYW1lLG5vZGUpOwotICAgIGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBTZXJ2aWNlSW50ZXJmYWNlTm9kZSkKLSAgICAgIGFkZFRvRmF2b3JpdGVzUmVzdWx0ID0gYWRkU2VydmljZUludGVyZmFjZVRvRmF2b3JpdGVzKG5vZGVOYW1lLG5vZGUpOwotICAgIGlmIChhZGRUb0Zhdm9yaXRlc1Jlc3VsdCkKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19GQVZPUklURV9BRERFRCIsbm9kZU5hbWUpKTsKLSAgICBlbHNlCi0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0ZBVk9SSVRFX05PVF9BRERFRCIsbm9kZU5hbWUpKTsKLSAgICByZXR1cm4gYWRkVG9GYXZvcml0ZXNSZXN1bHQ7ICAgICAgCi0gIH0KLSAgCi0gIHByb3RlY3RlZCBib29sZWFuIGFkZFRvRmF2b3JpdGVzKEhhc2h0YWJsZSB0YWJsZSwgU3RyaW5nIHJlbCkKLSAgewotICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBmYXZOb2RlTWFuYWdlciA9IGZhdlBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgVHJlZUVsZW1lbnQgZmF2Um9vdEVsZW1lbnQgPSBmYXZOb2RlTWFuYWdlci5nZXRSb290Tm9kZSgpLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgRW51bWVyYXRpb24gZSA9IGZhdlJvb3RFbGVtZW50LmdldEVsZW1lbnRzKHJlbCk7Ci0gICAgaWYgKCFlLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQgZmF2Rm9sZGVyRWxlbWVudCA9IChGYXZvcml0ZXNGb2xkZXJFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICByZXR1cm4gZmF2Rm9sZGVyRWxlbWVudC5hZGRGYXZvcml0ZSh0YWJsZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBmYXZvcml0ZUV4aXN0cyhIYXNodGFibGUgdGFibGUsIFN0cmluZyByZWwpCi0gIHsKLSAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgZmF2Tm9kZU1hbmFnZXIgPSBmYXZQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIFRyZWVFbGVtZW50IGZhdlJvb3RFbGVtZW50ID0gZmF2Tm9kZU1hbmFnZXIuZ2V0Um9vdE5vZGUoKS5nZXRUcmVlRWxlbWVudCgpOwotICAgIEVudW1lcmF0aW9uIGUgPSBmYXZSb290RWxlbWVudC5nZXRFbGVtZW50cyhyZWwpOwotICAgIGlmICghZS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGYXZvcml0ZXNGb2xkZXJFbGVtZW50IGZhdkZvbGRlckVsZW1lbnQgPSAoRmF2b3JpdGVzRm9sZGVyRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgcmV0dXJuIGZhdkZvbGRlckVsZW1lbnQuZmF2b3JpdGVFeGlzdHModGFibGUpOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9CdXNQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9CdXNQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4M2Q2ZjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQnVzUHVibGlzaFNlcnZpY2VBZHZhbmNlZEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuQnVzaW5lc3NFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci0KLXB1YmxpYyBjbGFzcyBCdXNQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uIGV4dGVuZHMgUHVibGlzaEFjdGlvbgotewotICBwcml2YXRlIFJlZ1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBY3Rpb24gcmVnUHVibGlzaFNlcnZpY2VBZHZhbmNlZEFjdGlvbl87Ci0gIHB1YmxpYyBCdXNQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHJlZ1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBY3Rpb25fID0gbmV3IFJlZ1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBY3Rpb24oY29udHJvbGxlcik7Ci0gICAgcHJvcGVydHlUYWJsZV8gPSByZWdQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uXy5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzT3RoZXJzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcixGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBOb2RlIGJ1c2luZXNzTm9kZSA9IGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpOwotICAgIEJ1c2luZXNzRWxlbWVudCBidXNpbmVzc0VsZW1lbnQgPSAoQnVzaW5lc3NFbGVtZW50KWJ1c2luZXNzTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIEJ1c2luZXNzRW50aXR5IGJ1c2luZXNzRW50aXR5ID0gYnVzaW5lc3NFbGVtZW50LmdldEJ1c2luZXNzRW50aXR5KCk7Ci0gICAgTGlzdEVsZW1lbnQgYnVzTGlzdEVsZW1lbnQgPSBuZXcgTGlzdEVsZW1lbnQoYnVzaW5lc3NFbnRpdHkpOwotICAgIFZlY3RvciBzZXJ2aWNlQnVzaW5lc3NDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgIHNlcnZpY2VCdXNpbmVzc0NvcHkuYWRkRWxlbWVudChidXNMaXN0RWxlbWVudCk7Ci0gICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1NfQ09QWSxzZXJ2aWNlQnVzaW5lc3NDb3B5KTsKLSAgICBib29sZWFuIHJlc3VsdCA9IHJlZ1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBY3Rpb25fLnByb2Nlc3NPdGhlcnMocGFyc2VyLGZvcm1Ub29sUEkpOwotICAgIGlmICghcHJvcGVydHlUYWJsZV8uY29udGFpbnNLZXkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfUFJPVklERVIpKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX1BST1ZJREVSLGJ1c2luZXNzRW50aXR5KTsKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIHJldHVybiByZWdQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uXy5ydW4oKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQnVzUHVibGlzaFNlcnZpY2VTaW1wbGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0J1c1B1Ymxpc2hTZXJ2aWNlU2ltcGxlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxYzcwODguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQnVzUHVibGlzaFNlcnZpY2VTaW1wbGVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkJ1c2luZXNzRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJ1c2luZXNzLkJ1c2luZXNzRW50aXR5OwotCi1wdWJsaWMgY2xhc3MgQnVzUHVibGlzaFNlcnZpY2VTaW1wbGVBY3Rpb24gZXh0ZW5kcyBQdWJsaXNoQWN0aW9uCi17Ci0gIHByaXZhdGUgUmVnUHVibGlzaFNlcnZpY2VTaW1wbGVBY3Rpb24gcmVnUHVibGlzaFNlcnZpY2VTaW1wbGVBY3Rpb25fOwotCi0gIHB1YmxpYyBCdXNQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICByZWdQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbl8gPSBuZXcgUmVnUHVibGlzaFNlcnZpY2VTaW1wbGVBY3Rpb24oY29udHJvbGxlcik7Ci0gICAgcHJvcGVydHlUYWJsZV8gPSByZWdQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbl8uZ2V0UHJvcGVydHlUYWJsZSgpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgTm9kZSBidXNpbmVzc05vZGUgPSBnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKTsKLSAgICBCdXNpbmVzc0VsZW1lbnQgYnVzaW5lc3NFbGVtZW50ID0gKEJ1c2luZXNzRWxlbWVudClidXNpbmVzc05vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBCdXNpbmVzc0VudGl0eSBidXNpbmVzc0VudGl0eSA9IGJ1c2luZXNzRWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpOwotICAgIExpc3RFbGVtZW50IGJ1c0xpc3RFbGVtZW50ID0gbmV3IExpc3RFbGVtZW50KGJ1c2luZXNzRW50aXR5KTsKLSAgICBWZWN0b3Igc2VydmljZUJ1c2luZXNzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICBzZXJ2aWNlQnVzaW5lc3NDb3B5LmFkZEVsZW1lbnQoYnVzTGlzdEVsZW1lbnQpOwotICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTU19DT1BZLHNlcnZpY2VCdXNpbmVzc0NvcHkpOyAKLSAgICBib29sZWFuIHJlc3VsdCA9IHJlZ1B1Ymxpc2hTZXJ2aWNlU2ltcGxlQWN0aW9uXy5wcm9jZXNzT3RoZXJzKHBhcnNlcixmb3JtVG9vbFBJKTsKLSAgICBpZiAoIXByb3BlcnR5VGFibGVfLmNvbnRhaW5zS2V5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfU0VSVklDRV9QUk9WSURFUikpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9TRVJWSUNFX1BST1ZJREVSLGJ1c2luZXNzRW50aXR5KTsKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIHJldHVybiByZWdQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbl8ucnVuKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0J1c2luZXNzR2V0U2VydmljZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0J1c2luZXNzR2V0U2VydmljZXNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE5NDU4YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9CdXNpbmVzc0dldFNlcnZpY2VzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkJ1c2luZXNzRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5CdXNpbmVzc05vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci0KLXB1YmxpYyBjbGFzcyBCdXNpbmVzc0dldFNlcnZpY2VzQWN0aW9uIGV4dGVuZHMgVURESU5vZGVBY3Rpb24KLXsKLSAgcHJpdmF0ZSBCdXNpbmVzc05vZGUgYnVzTm9kZV87Ci0gIHB1YmxpYyBCdXNpbmVzc0dldFNlcnZpY2VzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIGJ1c05vZGVfID0gbnVsbDsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9CdXNpbmVzc0dldFNlcnZpY2VzQWN0aW9uSlNQLmpzcD9ub2RlSWQ9Li4uCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJZCkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL0J1c2luZXNzR2V0U2VydmljZXNBY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpLmFwcGVuZCgnPScpLmFwcGVuZChub2RlSWQpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiB2YWxpZGF0ZUJ1c2luZXNzKCkKLSAgewotICAgIGludCBidXNOb2RlSWQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBidXNOb2RlXyA9IChCdXNpbmVzc05vZGUpbm9kZU1hbmFnZXJfLmdldE5vZGUoYnVzTm9kZUlkKTsKLSAgICBCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCA9IChCdXNpbmVzc0VsZW1lbnQpYnVzTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBSZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uIHZlcmlmeUFjdGlvbiA9IG5ldyBSZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IHZlcmlmeUFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9PVkVSUklERV9BRERfUVVFUllfTk9ERSxCb29sZWFuLlRSVUUpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVksYnVzRWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpLmdldEJ1c2luZXNzS2V5KCkpOwotICAgIGJvb2xlYW4gcmVzdWx0ID0gdmVyaWZ5QWN0aW9uLnJ1bigpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNULHByb3BlcnR5VGFibGUuZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgQnVzaW5lc3NFbnRpdHkgc3AgPSAoQnVzaW5lc3NFbnRpdHkpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCk7Ci0KLSAgICBSZWdGaW5kU2VydmljZXNBZHZhbmNlZEFjdGlvbiBhY3Rpb24gPSBuZXcgUmVnRmluZFNlcnZpY2VzQWR2YW5jZWRBY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk5PREVfTkFNRV9CVVNJTkVTU19TRVJWSUNFUyIsYnVzTm9kZV8uZ2V0Tm9kZU5hbWUoKSkpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX1BST1ZJREVSLHNwKTsgICAgCi0gICAgCi0gICAgTGlzdEVsZW1lbnQgYnVzaW5lc3NMaXN0RWxlbWVudCA9IG5ldyBMaXN0RWxlbWVudChzcCk7Ci0gICAgYnVzaW5lc3NMaXN0RWxlbWVudC5zZXRUYXJnZXRWaWV3VG9vbEluZm8oYnVzTm9kZV8uZ2V0Tm9kZUlkKCksYnVzTm9kZV8uZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLGJ1c05vZGVfLmdldFZpZXdJZCgpKTsKLSAgICBWZWN0b3IgYnVzaW5lc3NMaXN0VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIGJ1c2luZXNzTGlzdFZlY3Rvci5hZGRFbGVtZW50KGJ1c2luZXNzTGlzdEVsZW1lbnQpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTUyxidXNpbmVzc0xpc3RWZWN0b3IpOwotICAgIAotICAgIAotICAgIHJldHVybiBhY3Rpb24ucnVuKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yRm9sZGVyTm9kZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQ2xlYXJOYXZpZ2F0b3JGb2xkZXJOb2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYmViODcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQ2xlYXJOYXZpZ2F0b3JGb2xkZXJOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotCi1wdWJsaWMgY2xhc3MgQ2xlYXJOYXZpZ2F0b3JGb2xkZXJOb2RlQWN0aW9uIGV4dGVuZHMgQ2xlYXJOYXZpZ2F0b3JOb2RlQWN0aW9uCi17Ci0gIHB1YmxpYyBDbGVhck5hdmlnYXRvckZvbGRlck5vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICAvLyB1ZGRpL2FjdGlvbnMvQ2xlYXJOYXZpZ2F0b3JGb2xkZXJOb2RlQWN0aW9uLmpzcD9ub2RlSWQ9Li4uCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJZCkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yRm9sZGVyTm9kZUFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCkuYXBwZW5kKCc9JykuYXBwZW5kKG5vZGVJZCk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgaWYgKCFpc1N0YWxlTm9kZShub2RlSWQpKQotICAgIHsKLSAgICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJZCk7Ci0gICAgICBUcmVlRWxlbWVudCBlbGVtZW50ID0gbm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgZWxlbWVudC5kaXNjb25uZWN0UmVsKGVsZW1lbnQuZ2V0UHJvcGVydHlBc1N0cmluZyhNb2RlbENvbnN0YW50cy5SRUxfQ0hJTERSRU4pKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9DbGVhck5hdmlnYXRvck5vZGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yTm9kZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWY2M2U0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yTm9kZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkNsZWFyTm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLQotcHVibGljIGNsYXNzIENsZWFyTmF2aWdhdG9yTm9kZUFjdGlvbiBleHRlbmRzIENsZWFyTm9kZUFjdGlvbgotewotICBwdWJsaWMgQ2xlYXJOYXZpZ2F0b3JOb2RlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCkpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuTk9ERUlELFN0cmluZy52YWx1ZU9mKGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TmF2aWdhdG9yTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZUlkKCkpKTsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9DbGVhck5hdmlnYXRvck5vZGVBY3Rpb24uanNwP25vZGVJZD0uLi4KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ1ZGRpL2FjdGlvbnMvQ2xlYXJOYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFZhcigpCi0gIHsKLSAgICByZXR1cm4gIm5hdmlnYXRvckNvbnRlbnQiOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuICJ1ZGRpL25hdmlnYXRvcl9jb250ZW50LmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJWYXIoKQotICB7Ci0gICAgcmV0dXJuICJwcm9wZXJ0aWVzQ29udGFpbmVyIjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKQotICB7Ci0gICAgcmV0dXJuICJ1ZGRpL3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuICJzdGF0dXNDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuICJ1ZGRpL3N0YXR1c19jb250ZW50LmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yTm9kZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yTm9kZXNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkyZTU2NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9DbGVhck5hdmlnYXRvck5vZGVzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLQotcHVibGljIGNsYXNzIENsZWFyTmF2aWdhdG9yTm9kZXNBY3Rpb24gZXh0ZW5kcyBVRERJUHJvcGVydGllc0Zvcm1BY3Rpb24KLXsKLSAgcHVibGljIENsZWFyTmF2aWdhdG9yTm9kZXNBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmdbXSBzZWxlY3RlZE5vZGVJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIGlmIChzZWxlY3RlZE5vZGVJZHMgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlNFTEVDVEVEX05PREVJRFMsc2VsZWN0ZWROb2RlSWRzKTsKLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNFTEVDVEVEX05PREVJRFMpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgU3RyaW5nW10gc2VsZWN0ZWROb2RlSWRzID0gKFN0cmluZ1tdKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlNFTEVDVEVEX05PREVJRFMpOwotICAgIGlmIChzZWxlY3RlZE5vZGVJZHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBDbGVhck5hdmlnYXRvck5vZGVBY3Rpb24gYWN0aW9uID0gbmV3IENsZWFyTmF2aWdhdG9yTm9kZUFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxzZWxlY3RlZE5vZGVJZHMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCxzZWxlY3RlZE5vZGVJZHNbaV0pOwotICAgICAgICBhY3Rpb24ucnVuKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9Db21tb25QdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9Db21tb25QdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NDAzOTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQ29tbW9uUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkJ1c2luZXNzRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLk11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlJlZ2lzdHJ5Tm9kZTsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5CdXNpbmVzc0luZm87Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5SZWdpc3RlcmVkSW5mbzsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIENvbW1vblB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24gZXh0ZW5kcyBVRERJUHJvcGVydGllc0Zvcm1BY3Rpb24KLXsKLQotICBwcm90ZWN0ZWQgUmVnaXN0cnlOb2RlIHJlZ2lzdHJ5Tm9kZV87Ci0gIHByb3RlY3RlZCBib29sZWFuIGlzTG9nZ2VkSW5fOwotCi0gIHB1YmxpYyBDb21tb25QdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotCi0gICAgcmVnaXN0cnlOb2RlXyA9IGdldFJlZ2lzdHJ5Tm9kZSgpOwotICAgIGlmIChyZWdpc3RyeU5vZGVfICE9IG51bGwpCi0gICAgICBpc0xvZ2dlZEluXyA9ICgoUmVnaXN0cnlFbGVtZW50KXJlZ2lzdHJ5Tm9kZV8uZ2V0VHJlZUVsZW1lbnQoKSkuaXNMb2dnZWRJbigpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgc3luY2hyb25pemVVRERJT2JqZWN0VGFibGUoKSB7Ci0gICAgU3RyaW5nW10gc2VsZWN0ZWRCdXNJZHMgPSAoU3RyaW5nW10pcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfU0VMRUNURURfQlVTX0lEKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldE5hdmlnYXRvck1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgICBTdHJpbmcgc3ViUXVlcnlLZXkgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSA9ICgoTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UpZm9ybVRvb2wpLmdldEZvcm1Ub29sUHJvcGVydGllcyhzdWJRdWVyeUtleSk7Ci0gICAgVmVjdG9yIGJ1c2luZXNzVmVjdG9yID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQUREX1BVQkxJU0hFUl9BU1NFUlRJT05TKTsKLSAgICBMaXN0TWFuYWdlciBidXNpbmVzc0NvcHkgPSAoTGlzdE1hbmFnZXIpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FERF9QVUJMSVNIRVJfQVNTRVJUSU9OU19DT1BZKTsKLSAgICBpZiAoc2VsZWN0ZWRCdXNJZHMgPT0gbnVsbCB8fCBzZWxlY3RlZEJ1c0lkcy5sZW5ndGggPD0gMCkgewotICAgICAgYnVzaW5lc3NWZWN0b3IucmVtb3ZlQWxsRWxlbWVudHMoKTsKLSAgICAgIGJ1c2luZXNzQ29weS5jbGVhcigpOwotICAgIH0KLSAgICBFbnVtZXJhdGlvbiBlID0gYnVzaW5lc3NDb3B5LmdldExpc3RFbGVtZW50cygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICBib29sZWFuIGlzSWRGb3VuZCA9IGZhbHNlOwotICAgICAgTGlzdEVsZW1lbnQgbGUgPSAoTGlzdEVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgaW50IGxpc3RFbGVtZW50Vmlld0lkID0gbGUuZ2V0Vmlld0lkKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlbGVjdGVkQnVzSWRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGlmIChsaXN0RWxlbWVudFZpZXdJZCA9PSBJbnRlZ2VyLnBhcnNlSW50KHNlbGVjdGVkQnVzSWRzW2ldKSkgewotICAgICAgICAgIGlzSWRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmICghaXNJZEZvdW5kKQotICAgICAgICBidXNpbmVzc1ZlY3Rvci5yZW1vdmUobGUpOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGlzQnVzaW5lc3NPd25lZChCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCkgewotICAgIGJvb2xlYW4gaXNCdXNpbmVzc093bmVkID0gZmFsc2U7Ci0gICAgU3RyaW5nIGlzQnVzaW5lc3NPd25lZFN0cmluZyA9IGJ1c0VsZW1lbnQuZ2V0UHJvcGVydHlBc1N0cmluZyhVRERJTW9kZWxDb25zdGFudHMuSVNfQlVTSU5FU1NfT1dORUQpOwotICAgIGlmIChpc0J1c2luZXNzT3duZWRTdHJpbmcgIT0gbnVsbCkgewotICAgICAgaXNCdXNpbmVzc093bmVkID0gQm9vbGVhbi52YWx1ZU9mKGlzQnVzaW5lc3NPd25lZFN0cmluZykuYm9vbGVhblZhbHVlKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGlzTG9nZ2VkSW5fKSB7Ci0gICAgICB0cnkgewotICAgICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnaXN0cnlOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICBVRERJUHJveHkgcHJveHkgPSByZWdFbGVtZW50LmdldFByb3h5KCk7Ci0gICAgICAgIFJlZ2lzdGVyZWRJbmZvIHJpID0gcHJveHkuZ2V0X3JlZ2lzdGVyZWRJbmZvKHJlZ0VsZW1lbnQuZ2V0QXV0aEluZm9TdHJpbmcoKSk7Ci0gICAgICAgIFZlY3RvciBiZVZlY3RvciA9IHJpLmdldEJ1c2luZXNzSW5mb3MoKS5nZXRCdXNpbmVzc0luZm9WZWN0b3IoKTsKLSAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IGJlVmVjdG9yLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICAgIHsgCi0gICAgICAgICAgQnVzaW5lc3NJbmZvIGJpID0gKEJ1c2luZXNzSW5mbylpdC5uZXh0KCk7Ci0gICAgICAgICAgaWYgKGJpLmdldEJ1c2luZXNzS2V5KCkuZXF1YWxzKGJ1c0VsZW1lbnQuZ2V0QnVzaW5lc3NFbnRpdHkoKS5nZXRCdXNpbmVzc0tleSgpKSkKLSAgICAgICAgICB7ICAKLSAgICAgICAgICAgIGlzQnVzaW5lc3NPd25lZCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnVzRWxlbWVudC5zZXRQcm9wZXJ0eUFzU3RyaW5nKFVERElNb2RlbENvbnN0YW50cy5JU19CVVNJTkVTU19PV05FRCwgU3RyaW5nLnZhbHVlT2YoaXNCdXNpbmVzc093bmVkKSk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9Ci0gICAgfQotICAgIHJldHVybiBpc0J1c2luZXNzT3duZWQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0NvbXBsZXRlUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQ29tcGxldGVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxODRiNGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvQ29tcGxldGVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5CdXNpbmVzc0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlB1Ymxpc2hlckFzc2VydGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5Db21wbGV0aW9uU3RhdHVzOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuRGlzcG9zaXRpb25SZXBvcnQ7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5SZXN1bHQ7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgQ29tcGxldGVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uIGV4dGVuZHMgQ29tbW9uUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbgotewotICBwdWJsaWMgQ29tcGxldGVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gcHJvY2Vzc1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIGlmIChyZWdpc3RyeU5vZGVfID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBGb3JtVG9vbCBmb3JtVG9vbCA9IGdldFNlbGVjdGVkRm9ybVRvb2woKTsKLQotICAgIC8vIGlkcyBmcm9tIHVkZGlPYmplY3RzX3RhYmxlCi0gICAgU3RyaW5nW10gc2VsZWN0ZWRCdXNJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfU0VMRUNURURfQlVTX0lEKTsKLSAgICBpZiAoc2VsZWN0ZWRCdXNJZHMgIT0gbnVsbCAmJiBzZWxlY3RlZEJ1c0lkcy5sZW5ndGggPiAwKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfU0VMRUNURURfQlVTX0lELCBzZWxlY3RlZEJ1c0lkcyk7Ci0gICAgLy8gU3luY2hyb25pemUgY2xpZW50IHZpZXcgYW5kIHNlcnZlciBtb2RlbCAodWRkaU9iamVjdF90YWJsZS5qc3ApCi0gICAgc3luY2hyb25pemVVRERJT2JqZWN0VGFibGUoKTsKLQotICAgIC8vIGlmIG5vdCB5ZXQgbG9nZ2VkIGluLCB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVycyBuZWVkZWQgdG8gbG9nIGluCi0gICAgaWYgKCFpc0xvZ2dlZEluXykgewotICAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICAgU3RyaW5nIHVzZXJJRCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgICAgU3RyaW5nIHBhc3N3b3JkID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEKTsKLQotICAgICAgaWYgKHB1Ymxpc2hVUkwgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwscHVibGlzaFVSTCk7Ci0gICAgICAgIGZvcm1Ub29sLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwscHVibGlzaFVSTCk7Ci0gICAgICB9Ci0gIAotICAgICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcocHVibGlzaFVSTCkpCi0gICAgICB7Ci0gICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGZvcm1Ub29sLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1BVQkxJU0hfVVJMIikpOwotICAgICAgfQotCi0gICAgICBpZiAodXNlcklEICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySUQpOwotICAgICAgICBmb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySUQpOwotICAgICAgfQotICAKLSAgICAgIGlmICghVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHVzZXJJRCkpCi0gICAgICB7Ci0gICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGZvcm1Ub29sLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9VU0VSSUQiKSk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChwYXNzd29yZCAhPSBudWxsKQotICAgICAgewotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCxwYXNzd29yZCk7Ci0gICAgICAgIGZvcm1Ub29sLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQscGFzc3dvcmQpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIGlkcyBmcm9tIHB1Ymxpc2hlciBhc3NlcnRpb24gdGFibGUKLSAgICBTdHJpbmdbXSBwdWJBc3NlcnRpb25zVmlld0lkcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19WSUVXSUQpOwotICAgIGlmIChwdWJBc3NlcnRpb25zVmlld0lkcyA9PSBudWxsIHx8IHB1YkFzc2VydGlvbnNWaWV3SWRzLmxlbmd0aCA9PSAwKQotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICBlbHNlCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19WSUVXSUQsIHB1YkFzc2VydGlvbnNWaWV3SWRzKTsKLQotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpZiAocmVnaXN0cnlOb2RlXyA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ2lzdHJ5RWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnaXN0cnlOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLQotICAgIC8vIGlmIG5vdCB5ZXQgbG9nZ2VkIGluLCBsb2cgaW4gZmlyc3QKLSAgICBpZiAoIWlzTG9nZ2VkSW5fKSB7Ci0gICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICAgU3RyaW5nIHVzZXJJRCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotCi0gICAgICB0cnkgewotICAgICAgICByZWdpc3RyeUVsZW1lbnQucGVyZm9ybUxvZ2luKHB1Ymxpc2hVUkwsIHVzZXJJRCwgcGFzc3dvcmQpOwotICAgICAgfQotICAgICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiB0ZSkgewotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlRyYW5zcG9ydEV4Y2VwdGlvbiIpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh0ZS5nZXRNZXNzYWdlKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiB1ZGRpZSkgewotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaWUudG9TdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gbWUpIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJNYWxmb3JtZWRVUkxFeGNlcHRpb24iKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UobWUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfSAgICAgIAotICAgIH0KLQotICAgIFVERElQcm94eSBwcm94eSA9IHJlZ2lzdHJ5RWxlbWVudC5nZXRQcm94eSgpOwotICAgIHJlZ2lzdHJ5RWxlbWVudC5nZXRVc2VySWQoKTsKLSAgICByZWdpc3RyeUVsZW1lbnQuZ2V0Q3JlZCgpOwotICAgIEJ1c2luZXNzRWxlbWVudCBidXNFbGVtZW50ID0gKEJ1c2luZXNzRWxlbWVudClzZWxlY3RlZEVsZW1lbnQ7Ci0gICAgTGlzdE1hbmFnZXIgcHViQXNzZXJ0aW9ucyA9IGJ1c0VsZW1lbnQuZ2V0UHVibGlzaGVyQXNzZXJ0aW9ucygpOwotCi0gICAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIG93bmVkIGJ1c2luZXNzCi0gICAgLy8gaWYgbm90LCB0aGUgQWRkUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkCi0gICAgaWYgKCFpc0J1c2luZXNzT3duZWQoYnVzRWxlbWVudCkpIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT1RfT1dORURfQlVTSU5FU1MiKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgU3RyaW5nW10gcHViQXNzZXJ0aW9uVmlld0lkcyA9IChTdHJpbmdbXSlwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19WSUVXSUQpOwotICAgICAgVmVjdG9yIHB1YkFzc2VydGlvblZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLQotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwdWJBc3NlcnRpb25WaWV3SWRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGludCB2aWV3SUQgPSBJbnRlZ2VyLnBhcnNlSW50KHB1YkFzc2VydGlvblZpZXdJZHNbaV0pOwotICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IHB1YkFzc2VydGlvbnMuZ2V0RWxlbWVudFdpdGhWaWV3SWQodmlld0lEKTsKLSAgICAgICAgUHVibGlzaGVyQXNzZXJ0aW9uRWxlbWVudCBwdWJBc3NlcnRpb25FbGVtZW50ID0gKFB1Ymxpc2hlckFzc2VydGlvbkVsZW1lbnQpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIGlmICghKHB1YkFzc2VydGlvbkVsZW1lbnQuZ2V0U3RhdHVzKCkuZXF1YWxzKENvbXBsZXRpb25TdGF0dXMuQ09NUExFVEUpKSkKLSAgICAgICAgICBwdWJBc3NlcnRpb25WZWN0b3IuYWRkKHB1YkFzc2VydGlvbkVsZW1lbnQuZ2V0UHVibGlzaGVyQXNzZXJ0aW9uKCkpOwotICAgICAgfQotCi0gICAgICBpZiAocHViQXNzZXJ0aW9uVmVjdG9yLnNpemUoKSA8PSAwKSB7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fSU5DT01QTEVURV9BU1NFUlRJT05fU0VMRUNURUQiKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQotICAgICAgRGlzcG9zaXRpb25SZXBvcnQgcmVwb3J0ID0gcHJveHkuYWRkX3B1Ymxpc2hlckFzc2VydGlvbnMocmVnaXN0cnlFbGVtZW50LmdldEF1dGhJbmZvU3RyaW5nKCksIHB1YkFzc2VydGlvblZlY3Rvcik7Ci0gICAgICAvL3JlcG9ydCBzdGF0dXMKLQkgIFZlY3RvciByZXBvcnRFcnJJbmZvID0gcmVwb3J0LmdldFJlc3VsdFZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByZXBvcnRFcnJJbmZvLnNpemUoKTsgaisrKSB7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCgoUmVzdWx0KSByZXBvcnRFcnJJbmZvLmdldChqKSkuZ2V0RXJySW5mbygpLmdldFRleHQoKSk7Ci0gICAgICB9Ci0KLSAgICAgIFNob3dQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uIHNob3dQQUFjdGlvbiA9IG5ldyBTaG93UHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IHNob3dQQUFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICBPYmplY3QgaWRzID0gcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfU0VMRUNURURfQlVTX0lEKTsKLSAgICAgIGlmIChpZHMgIT0gbnVsbCkKLSAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19TRUxFQ1RFRF9CVVNfSUQsIGlkcyk7Ci0gICAgICBzaG93UEFBY3Rpb24ucnVuKCk7Ci0KLSAgICAgIHJldHVybiByZXBvcnQuc3VjY2VzcygpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiB1ZGRpZSkgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgICAgRGlzcG9zaXRpb25SZXBvcnQgcmVwb3J0ID0gdWRkaWUuZ2V0RGlzcG9zaXRpb25SZXBvcnQoKTsKLQkgIFZlY3RvciByZXBvcnRFcnJJbmZvID0gcmVwb3J0LmdldFJlc3VsdFZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByZXBvcnRFcnJJbmZvLnNpemUoKTsgaisrKSB7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCgoUmVzdWx0KSByZXBvcnRFcnJJbmZvLmdldChqKSkuZ2V0RXJySW5mbygpLmdldFRleHQoKSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiRXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9GaW5kQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9GaW5kQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzdmOGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvRmluZEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlF1ZXJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUXVlcnlQYXJlbnRFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuUXVlcnlOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlJlZ2lzdHJ5Tm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5TdWJRdWVyeVRyYW5zZmVyVGFyZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBGaW5kQWN0aW9uIGV4dGVuZHMgVURESVByb3BlcnRpZXNGb3JtQWN0aW9uCi17Ci0gIHByb3RlY3RlZCBRdWVyeUVsZW1lbnQgcXVlcnlFbGVtZW50XzsKLSAgcHJvdGVjdGVkIFN0cmluZyBzdWJRdWVyeUtleV87Ci0gIHByb3RlY3RlZCBib29sZWFuIGlzU3ViUXVlcnlHZXRfOwotICBwcm90ZWN0ZWQgU3RyaW5nIG5ld1N1YlF1ZXJ5XzsKLSAgcHJvdGVjdGVkIFN0cmluZyBuZXdTdWJRdWVyeUl0ZW1fOwotICBwcm90ZWN0ZWQgYm9vbGVhbiBzdWJRdWVyeUluaXRpYXRlZF87Ci0gIHByb3RlY3RlZCBSZWdpc3RyeU5vZGUgcmVnTm9kZV87Ci0gIHByaXZhdGUgYm9vbGVhbiBpc1JlZnJlc2hBY3Rpb25fOwotCi0gIHB1YmxpYyBGaW5kQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHF1ZXJ5RWxlbWVudF8gPSBudWxsOwotICAgIHN1YlF1ZXJ5S2V5XyA9IG51bGw7Ci0gICAgaXNTdWJRdWVyeUdldF8gPSBmYWxzZTsKLSAgICBzdWJRdWVyeUluaXRpYXRlZF8gPSBmYWxzZTsKLSAgICByZWdOb2RlXyA9IGdldFJlZ2lzdHJ5Tm9kZSgpOwotICAgIGlzUmVmcmVzaEFjdGlvbl8gPSBmYWxzZTsKLSAgfQotCi0gIHByb3RlY3RlZCBhYnN0cmFjdCBib29sZWFuIHByb2Nlc3NPdGhlcnMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyLEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gcHJvY2Vzc1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIC8vIFNldHVwIGZvciBNdWx0aXBhcnRGb3JtRGF0YVBhcnNlclRyYW5zZm9ybWVyCi0gICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5NVUxUSVBBUlRfRk9STV9EQVRBX1BBUlNFUiwgcGFyc2VyKTsKLQotICAgIG5ld1N1YlF1ZXJ5XyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5ORVdfU1VCUVVFUllfSU5JVElBVEVEKTsKLSAgICBTdHJpbmcgaXNTdWJRdWVyeUdldFN0cmluZyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9HRVQpOwotICAgIG5ld1N1YlF1ZXJ5SXRlbV8gPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX1FVRVJZX0lURU0pOwotICAgIHN1YlF1ZXJ5S2V5XyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgIFN0cmluZyBxdWVyeU5hbWUgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSk7Ci0KLSAgICAvLyBWYWxpZGF0ZSB0aGUgZGF0YS4KLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLQotICAgIEZvcm1Ub29sIGZvcm1Ub29sID0gZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpOwotICAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5Xyk7Ci0gICAgZm9ybVRvb2xQSS5jbGVhckVycm9ycygpOwotCi0gICAgaWYgKG5ld1N1YlF1ZXJ5XyAhPSBudWxsICYmIG5ld1N1YlF1ZXJ5Xy5sZW5ndGgoKSA+IDApCi0gICAgICBzdWJRdWVyeUluaXRpYXRlZF8gPSB0cnVlOwotICAgIGVsc2UKLSAgICAgIHN1YlF1ZXJ5SW5pdGlhdGVkXyA9IGZhbHNlOwotICAgICAgCi0gICAgaWYgKGlzU3ViUXVlcnlHZXRTdHJpbmcgIT0gbnVsbCkKLSAgICAgIGlzU3ViUXVlcnlHZXRfID0gQm9vbGVhbi52YWx1ZU9mKGlzU3ViUXVlcnlHZXRTdHJpbmcpLmJvb2xlYW5WYWx1ZSgpOwotCi0gICAgaWYgKHF1ZXJ5TmFtZSAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSxxdWVyeU5hbWUpOwotCi0gICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcocXVlcnlOYW1lKSAmJiAhc3ViUXVlcnlJbml0aWF0ZWRfKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1FVRVJZX05BTUUiKSk7Ci0gICAgfQotCi0gICAgaWYgKCFwcm9jZXNzT3RoZXJzKHBhcnNlcixmb3JtVG9vbFBJKSAmJiAhc3ViUXVlcnlJbml0aWF0ZWRfKQotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgIAotICAgIGZvciAoaW50IGk9MDtpPHJlbW92ZWRQcm9wZXJ0aWVzXy5zaXplKCk7aSsrKQotICAgICAgZm9ybVRvb2xQSS5yZW1vdmVQcm9wZXJ0eShyZW1vdmVkUHJvcGVydGllc18uZWxlbWVudEF0KGkpKTsKLSAgICBmb3JtVG9vbFBJLnVwZGF0ZVByb3BlcnR5VGFibGUocHJvcGVydHlUYWJsZV8pOwotICAgICAgCi0gICAgLy8gUHJvY2VzcyBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbi4gSWYgdmFsaWQsIHRoZXNlIHNob3VsZCBiZSBzZXQgaW4gdGhlIGZvcm1Ub29sIChub3QgdGhlIGZvcm1Ub29sUEkpLgotICAgIFN0cmluZyBvd25lZENoZWNrZWQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfT1dORUQpOwotICAgIFN0cmluZyBwdWJsaXNoVVJMID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICBTdHJpbmcgdXNlcklkID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgU3RyaW5nIHBhc3N3b3JkID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEKTsKLSAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLQotICAgIGJvb2xlYW4gdmFsaWRhdGVBdXRoZW50aWNhdGlvbiA9IChvd25lZENoZWNrZWQgIT0gbnVsbCkgJiYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkgJiYgIW92ZXJyaWRlQXV0aGVudGljYXRpb25WYWxpZGF0aW9uKCk7Ci0KLSAgICBpZiAocHVibGlzaFVSTCAhPSBudWxsKQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMLHB1Ymxpc2hVUkwpOwotICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICB9ICAgICAgCi0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiB2YWxpZGF0ZUF1dGhlbnRpY2F0aW9uICYmICFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcocHVibGlzaFVSTCkpCi0gICAgewotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgIGZvcm1Ub29sLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9QVUJMSVNIX1VSTCIpKTsKLSAgICB9Ci0KLSAgICBpZiAodXNlcklkICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklELHVzZXJJZCk7Ci0gICAgICBmb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySWQpOwotICAgIH0KLQotICAgIGlmICghc3ViUXVlcnlJbml0aWF0ZWRfICYmIHZhbGlkYXRlQXV0aGVudGljYXRpb24gJiYgIVZhbGlkYXRvci52YWxpZGF0ZVN0cmluZyh1c2VySWQpKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbC5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1VTRVJJRCIpKTsKLSAgICB9Ci0KLSAgICBpZiAocGFzc3dvcmQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCxwYXNzd29yZCk7Ci0gICAgICBmb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JELHBhc3N3b3JkKTsKLSAgICB9ICAgICAgICAKLSAgICAgIAotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIG92ZXJyaWRlQXV0aGVudGljYXRpb25WYWxpZGF0aW9uKCkKLSAgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNTdWJRdWVyeUluaXRpYXRlZCgpCi0gIHsKLSAgICByZXR1cm4gc3ViUXVlcnlJbml0aWF0ZWRfOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc1N1YlF1ZXJ5R2V0KCkKLSAgewotICAgIHJldHVybiBpc1N1YlF1ZXJ5R2V0XzsKLSAgfSAgICAKLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN1YlF1ZXJ5S2V5KCkKLSAgewotICAgIHJldHVybiBzdWJRdWVyeUtleV87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldE5ld1N1YlF1ZXJ5KCkKLSAgewotICAgIHJldHVybiBuZXdTdWJRdWVyeV87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldE5ld1N1YlF1ZXJ5SXRlbSgpCi0gIHsKLSAgICByZXR1cm4gbmV3U3ViUXVlcnlJdGVtXzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0UmVmcmVzaEFjdGlvbihib29sZWFuIGlzUmVmcmVzaEFjdGlvbikKLSAgewotICAgIGlzUmVmcmVzaEFjdGlvbl8gPSBpc1JlZnJlc2hBY3Rpb247Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzUmVmcmVzaEFjdGlvbigpCi0gIHsKLSAgICByZXR1cm4gaXNSZWZyZXNoQWN0aW9uXzsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGFkZFF1ZXJ5Tm9kZSgpCi0gIHsKLSAgICAvLyBJZiB0aGUgcXVlcnlFbGVtZW50IGFscmVhZHkgZXhpc3RzLCByZW1vdmUgaXQgZmlyc3QuCi0gICAgU3RyaW5nIHF1ZXJ5TmFtZSA9IHF1ZXJ5RWxlbWVudF8uZ2V0TmFtZSgpOwotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIFF1ZXJ5UGFyZW50RWxlbWVudCBxdWVyeVBhcmVudEVsZW1lbnQgPSByZWdFbGVtZW50LmdldFF1ZXJ5UGFyZW50RWxlbWVudCgpOwotICAgIEVudW1lcmF0aW9uIGUgPSBxdWVyeVBhcmVudEVsZW1lbnQuZ2V0UXVlcmllcygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFF1ZXJ5RWxlbWVudCBxZSA9IChRdWVyeUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgaWYgKHFlLmdldE5hbWUoKS5lcXVhbHMocXVlcnlOYW1lKSkKLSAgICAgIHsKLSAgICAgICAgU3ViUXVlcnlUcmFuc2ZlclRhcmdldCBzdWJRdWVyeVRyYW5zZmVyVGFyZ2V0ID0gKFN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQpcWUuZ2V0UHJvcGVydHlBc09iamVjdChVRERJTW9kZWxDb25zdGFudHMuU1VCUVVFUllfVFJBTlNGRVJfVEFSR0VUKTsKLSAgICAgICAgaWYgKHN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQgIT0gbnVsbCAmJiAocWUuZ2V0UXVlcnlUeXBlKCkgPT0gcXVlcnlFbGVtZW50Xy5nZXRRdWVyeVR5cGUoKSkpCi0gICAgICAgICAgcXVlcnlFbGVtZW50Xy5zZXRQcm9wZXJ0eUFzT2JqZWN0KFVERElNb2RlbENvbnN0YW50cy5TVUJRVUVSWV9UUkFOU0ZFUl9UQVJHRVQsc3ViUXVlcnlUcmFuc2ZlclRhcmdldCk7Ci0gICAgICAgIHFlLmRpc2Nvbm5lY3RBbGwoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICghaXNSZWZyZXNoQWN0aW9uXykKLSAgICB7Ci0gICAgICAvLyBXZSBjYW4gbWFrZSBzYWZlIGFzc3VtcHRpb25zIGFib3V0IHRoZSBub2RlIHRoYXQgaXMgY3VycmVudGx5IHNlbGVjdGVkLgotICAgICAgaWYgKHN1YlF1ZXJ5S2V5XyAhPSBudWxsICYmIHN1YlF1ZXJ5S2V5Xy5sZW5ndGgoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBwYXJlbnRRdWVyeUtleTsKLSAgICAgICAgaW50IGxhc3RTZXBhcmF0b3JQb3MgPSBzdWJRdWVyeUtleV8ubGFzdEluZGV4T2YoJzonKTsKLSAgICAgICAgaWYgKGxhc3RTZXBhcmF0b3JQb3MgPT0gLTEpCi0gICAgICAgICAgcGFyZW50UXVlcnlLZXkgPSAiIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHBhcmVudFF1ZXJ5S2V5ID0gc3ViUXVlcnlLZXlfLnN1YnN0cmluZygwLGxhc3RTZXBhcmF0b3JQb3MpOwotICAgICAgICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgcGFyZW50Rm9ybVRvb2xQSSA9ICgoTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UpZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMocGFyZW50UXVlcnlLZXkpOwotICAgICAgICBPYmplY3QgcXVlcnlJdGVtID0gcGFyZW50Rm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0pOwotICAgICAgICBPYmplY3QgcXVlcnlTdHlsZUJ1cyA9IHBhcmVudEZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTKTsKLSAgICAgICAgT2JqZWN0IHF1ZXJ5U3R5bGVTZXIgPSBwYXJlbnRGb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRVMpOwotICAgICAgICBPYmplY3QgcXVlcnlTdHlsZVNlckludCA9IHBhcmVudEZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMpOwotICAgICAgICBIYXNodGFibGUgcGFyZW50UXVlcnlEYXRhID0gbmV3IEhhc2h0YWJsZSgpOwotICAgICAgICBpZiAocXVlcnlJdGVtICE9IG51bGwpCi0gICAgICAgICAgcGFyZW50UXVlcnlEYXRhLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0sIHF1ZXJ5SXRlbSk7Ci0gICAgICAgIGlmIChxdWVyeVN0eWxlQnVzICE9IG51bGwpCi0gICAgICAgICAgcGFyZW50UXVlcnlEYXRhLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0JVU0lORVNTRVMsIHF1ZXJ5U3R5bGVCdXMpOwotICAgICAgICBpZiAocXVlcnlTdHlsZVNlciAhPSBudWxsKQotICAgICAgICAgIHBhcmVudFF1ZXJ5RGF0YS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFUywgcXVlcnlTdHlsZVNlcik7Ci0gICAgICAgIGlmIChxdWVyeVN0eWxlU2VySW50ICE9IG51bGwpCi0gICAgICAgICAgcGFyZW50UXVlcnlEYXRhLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VfSU5URVJGQUNFUywgcXVlcnlTdHlsZVNlckludCk7Ci0gICAgICAgIHF1ZXJ5RWxlbWVudF8uc2V0UHJvcGVydHlBc09iamVjdChVRERJTW9kZWxDb25zdGFudHMuU1VCUVVFUllfVFJBTlNGRVJfVEFSR0VULG5ldyBTdWJRdWVyeVRyYW5zZmVyVGFyZ2V0KGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpLHN1YlF1ZXJ5S2V5XyxwYXJlbnRRdWVyeURhdGEpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcXVlcnlQYXJlbnRFbGVtZW50LmNvbm5lY3QocXVlcnlFbGVtZW50XyxVRERJTW9kZWxDb25zdGFudHMuUkVMX1FVRVJJRVMsTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICBRdWVyeU5vZGUgcXVlcnlOb2RlID0gKFF1ZXJ5Tm9kZSkocmVnTm9kZV8uZ2V0Q2hpbGROb2RlKHF1ZXJ5UGFyZW50RWxlbWVudCkuZ2V0Q2hpbGROb2RlKHF1ZXJ5RWxlbWVudF8pKTsKLSAgICBpbnQgbmV3U2VsZWN0ZWROb2RlSWQ7Ci0gICAgLy8gSWYgdGhlcmUgaXMgb25seSAxIHJlc3VsdCwgc2VsZWN0IHRoZSByZXN1bHQuIE90aGVyd2lzZSwgc2VsZWN0IHRoZSBxdWVyeSBub2RlIHRvIHByZXNlbnQgYSBzdW1tYXJ5LgotICAgIGlmIChxdWVyeU5vZGUuZ2V0Q2hpbGROb2RlcygpLnNpemUoKSA9PSAxICYmIChzdWJRdWVyeUtleV8gPT0gbnVsbCB8fCBzdWJRdWVyeUtleV8ubGVuZ3RoKCkgPT0gMCkpCi0gICAgICBuZXdTZWxlY3RlZE5vZGVJZCA9ICgoTm9kZSkocXVlcnlOb2RlLmdldENoaWxkTm9kZXMoKS5lbGVtZW50QXQoMCkpKS5nZXROb2RlSWQoKTsKLSAgICBlbHNlCi0gICAgICBuZXdTZWxlY3RlZE5vZGVJZCA9IHF1ZXJ5Tm9kZS5nZXROb2RlSWQoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHJlZ05vZGVfLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgbm9kZU1hbmFnZXIuc2V0U2VsZWN0ZWROb2RlSWQobmV3U2VsZWN0ZWROb2RlSWQpOwotICAgIHF1ZXJ5Tm9kZS5zZXRGaW5kVG9vbFByb3BlcnRpZXModGhpcyk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUb29sTWFuYWdlciB0b29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKTsKLSAgICBUb29sIHNlbGVjdGVkVG9vbCA9IHRvb2xNYW5hZ2VyLmdldFNlbGVjdGVkVG9vbCgpOwotICAgIGFkZFRvSGlzdG9yeShBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfVURESSxzZWxlY3RlZFRvb2wuZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYodHJ1ZSkpOwotICB9Ci0gIAotICBwdWJsaWMgSVRyYW5zZm9ybWVyW10gZ2V0VHJhbnNmb3JtZXJzKCkKLSAgewotICAgIElUcmFuc2Zvcm1lcltdIHBhcmVudFRyYW5zZm9ybWVycyA9IHN1cGVyLmdldFRyYW5zZm9ybWVycygpOwotICAgIElUcmFuc2Zvcm1lcltdIHRyYW5zZm9ybWVycyA9IG5ldyBJVHJhbnNmb3JtZXJbcGFyZW50VHJhbnNmb3JtZXJzLmxlbmd0aCArIDFdOwotICAgIFN5c3RlbS5hcnJheWNvcHkocGFyZW50VHJhbnNmb3JtZXJzLCAwLCB0cmFuc2Zvcm1lcnMsIDAsIHBhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgpOwotICAgIHRyYW5zZm9ybWVyc1t0cmFuc2Zvcm1lcnMubGVuZ3RoIC0gMV0gPSBuZXcgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXJUcmFuc2Zvcm1lcihjb250cm9sbGVyXyk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybWVyczsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvTG9naW5BZHZhbmNlZEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvTG9naW5BZHZhbmNlZEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDdlMGFiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0xvZ2luQWR2YW5jZWRBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlCi0gKiB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLAotICogYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMzY0NDkgYnJ1bnNzZW5AdXMuaWJtLmNvbSAtIFZpbmNlIEJydW5zc2VuCi0gKiAyMDA2MDQyNyAgIDEzNjQ0OSBjbGJ1c2hAdXMuaWJtLmNvbSAtIENocmlzdG9waGVyIEJ1c2ggIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgamF2YS5ybWkuQWxyZWFkeUJvdW5kRXhjZXB0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuUmVnaXN0cnlOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLQotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlczsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5CdXNpbmVzc0luZm87Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5CdXNpbmVzc0luZm9zOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuUmVnaXN0ZXJlZEluZm87Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5UTW9kZWxJbmZvOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuVE1vZGVsSW5mb3M7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgTG9naW5BZHZhbmNlZEFjdGlvbiBleHRlbmRzIFB1Ymxpc2hBY3Rpb24gewotICAgcHVibGljIExvZ2luQWR2YW5jZWRBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0sIFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTKSk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXwotICAgICAgICAgICAgLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0JVU0lORVNTRVMsIFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQURWQU5DRUQpKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9TRUFSQ0hfU0VULCBTdHJpbmcKLSAgICAgICAgICAgIC52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfTUFYX1NFQVJDSF9TRVQpKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9SRVNVTFRTLCBTdHJpbmcKLSAgICAgICAgICAgIC52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfTUFYX1JFU1VMVFMpKTsKLSAgIH0KLQotICAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJKQotICAgICAgICAgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIHsKLSAgICAgIFN0cmluZyBvd25lZENoZWNrZWQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfT1dORUQpOwotCi0gICAgICAvLyBWYWxpZGF0ZSB0aGUgZGF0YS4KLSAgICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotICAgICAgaWYgKG93bmVkQ2hlY2tlZCAhPSBudWxsKQotICAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfT1dORUQsIG93bmVkQ2hlY2tlZCk7Ci0gICAgICBlbHNlCi0gICAgICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX09XTkVEKTsKLQotICAgICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICAgfQotICAgCi0gICBwcml2YXRlIGJvb2xlYW4gYXR0ZW1wdGluZ0RvdWJsZUxvZ2luKCl7Ci0JICAgU3RyaW5nIHVzZXJJZCA9IChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0JICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0JICAgTm9kZSByb290Tm9kZSA9IHJlZ05vZGVfLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Um9vdE5vZGUoKTsKLSAgICAgICBWZWN0b3IgYWxsTm9kZXMgPSByb290Tm9kZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICAgCi0gICAgICAgZm9yKGludCBrID0gMDsgayA8IGFsbE5vZGVzLnNpemUoKTsgaysrKXsKLSAgICAgIAkgTm9kZSBuID0gKE5vZGUpYWxsTm9kZXMuZ2V0KGspOwotICAgICAgCSBpZiAobiBpbnN0YW5jZW9mIFJlZ2lzdHJ5Tm9kZSl7Ci0gICAgICAJCSBSZWdpc3RyeUVsZW1lbnQgbXlFbGVtZW50ID0gKChSZWdpc3RyeUVsZW1lbnQpbi5nZXRUcmVlRWxlbWVudCgpKTsKLSAgICAgIAkJIGlmIChuLmdldE5vZGVJZCgpICE9IHJlZ05vZGVfLmdldE5vZGVJZCgpICYmIHB1Ymxpc2hVUkwuZXF1YWxzKG15RWxlbWVudC5nZXRQdWJsaXNoVVJMKCkpKQotICAgICAgCQkJIGlmKHVzZXJJZC5lcXVhbHMobXlFbGVtZW50LmdldFVzZXJJZCgpKSkKLSAgICAgIAkJCQkgcmV0dXJuIHRydWU7Ci0gICAgICAJIH0KLSAgICAgICB9Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgCi0gICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKSB7Ci0gICAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIrKysrKyBUcnlpbmcgdG8gbG9naW4gKysrKysiKTsKLSAgICAgIHRyeSB7Ci0gICAgICAgICBib29sZWFuIHNob3VsZEFkZFF1ZXJ5Tm9kZSA9IChwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9PVkVSUklERV9BRERfUVVFUllfTk9ERSkgPT0gbnVsbCk7Ci0gICAgICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgICAgIFN0cmluZyB1c2VySWQgPSAoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotICAgICAgICAgaW50IG1heFJlc3VsdHMgPSAzMDA7Ci0gICAgICAgICAKLSAgICAgICAgIC8vIFRoZSBhY3Rpb24gY2FuIGJlIHJ1biB1bmRlciB0aGUgY29udGV4dCBvZiBlaXRoZXIgYSByZWdpc3RyeSBvciBhCi0gICAgICAgICAvLyBxdWVyeSBub2RlLgotICAgICAgICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KSByZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICAgCi0gICAgICAgICAgICAgICAgIAotICAgICAgICAgaWYoYXR0ZW1wdGluZ0RvdWJsZUxvZ2luKCkpCi0gICAgICAgIAkgdGhyb3cgbmV3IEFscmVhZHlCb3VuZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fTk9fTVVMVElQTEVfTE9HSU4iKSk7IAotICAgICAgICAgCi0gICAgICAgICBpZiAoIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgICAgICAgICAgcmVnRWxlbWVudC5wZXJmb3JtTG9naW4ocHVibGlzaFVSTCwgdXNlcklkLCBwYXNzd29yZCk7Ci0KLSAgICAgICAgIFVERElQcm94eSBwcm94eSA9IHJlZ0VsZW1lbnQuZ2V0UHJveHkoKTsKLQotICAgICAgICAgQnVzaW5lc3NJbmZvcyBidXNJbmZvcyA9IG51bGw7Ci0gICAgICAgICBUTW9kZWxJbmZvcyB0bUluZm9zID0gbnVsbDsKLQotICAgICAgICAgUmVnaXN0ZXJlZEluZm8gcmkgPSBwcm94eS5nZXRfcmVnaXN0ZXJlZEluZm8ocmVnRWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpKTsKLSAgICAgICAgIGJ1c0luZm9zID0gcmkuZ2V0QnVzaW5lc3NJbmZvcygpOwotICAgICAgICAgdG1JbmZvcyA9IHJpLmdldFRNb2RlbEluZm9zKCk7Ci0KLSAgICAgICAgIGludCBmaW5hbE51bWJlck9mQnVzaW5lc3NFbnRpdGllcyA9IE1hdGgubWluKG1heFJlc3VsdHMsIGJ1c0luZm9zLnNpemUoKSk7Ci0gICAgICAgICBWZWN0b3IgYnVzaW5lc3NLZXlzID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaW5hbE51bWJlck9mQnVzaW5lc3NFbnRpdGllczsgaSsrKSB7Ci0gICAgICAgICAgICBCdXNpbmVzc0luZm8gYnVzSW5mbyA9IChCdXNpbmVzc0luZm8pIGJ1c0luZm9zLmdldChpKTsKLSAgICAgICAgICAgIGJ1c2luZXNzS2V5cy5hZGRFbGVtZW50KGJ1c0luZm8uZ2V0QnVzaW5lc3NLZXkoKSk7Ci0gICAgICAgICB9Ci0KLSAgICAgICAgIGlmIChmaW5hbE51bWJlck9mQnVzaW5lc3NFbnRpdGllcyA+IDApIHsKLSAgICAgICAgICAgIGlmIChzaG91bGRBZGRRdWVyeU5vZGUpIHsKLSAgICAgICAgICAgICAgIFZlY3RvciBiZVZlY3RvciA9IHByb3h5LmdldF9idXNpbmVzc0RldGFpbChidXNpbmVzc0tleXMpLmdldEJ1c2luZXNzRW50aXR5VmVjdG9yKCk7Ci0gICAgICAgICAgICAgICBCdXNpbmVzc0VudGl0eSBiZSA9IG51bGw7Ci0gICAgICAgICAgICAgICBCdXNpbmVzc1NlcnZpY2VzIGJzID0gbnVsbDsKLSAgICAgICAgICAgICAgIGludCBzaXplID0gYmVWZWN0b3Iuc2l6ZSgpOwotICAgICAgICAgICAgICAgaWYgKHNpemUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgYmUgPSAoQnVzaW5lc3NFbnRpdHkpIGJlVmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgICAgICAgICAgICAgIGFkZFB1Ymxpc2hlZEl0ZW1Ob2RlKGJlLCByZWdFbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgIGJzID0gYmUuZ2V0QnVzaW5lc3NTZXJ2aWNlcygpOwotICAgICAgICAgICAgICAgICAgICAgaWYgKGJzICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvciB2U2VydmljZXMgPSBicy5nZXRCdXNpbmVzc1NlcnZpY2VWZWN0b3IoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2aWNlcyA9IHZTZXJ2aWNlcy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHNlcnZpY2VzOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFB1Ymxpc2hlZEl0ZW1Ob2RlKGJzLmdldChqKSwgcmVnRWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBtZXNzYWdlUXVldWUKLSAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19CVVNJTkVTU0VTX0ZPVU5EIiwgU3RyaW5nLnZhbHVlT2Yoc2l6ZSkpKTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLQotICAgICAgICAgaW50IGZpbmFsTnVtYmVyT2ZUTW9kZWxzID0gTWF0aC5taW4obWF4UmVzdWx0cywgdG1JbmZvcy5zaXplKCkpOwotICAgICAgICAgVmVjdG9yIHRNb2RlbEtleXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbmFsTnVtYmVyT2ZUTW9kZWxzOyBpKyspIHsKLSAgICAgICAgICAgIFRNb2RlbEluZm8gdG1JbmZvID0gKFRNb2RlbEluZm8pIHRtSW5mb3MuZ2V0KGkpOwotICAgICAgICAgICAgdE1vZGVsS2V5cy5hZGRFbGVtZW50KHRtSW5mby5nZXRUTW9kZWxLZXkoKSk7Ci0gICAgICAgICB9Ci0KLSAgICAgICAgIGlmIChmaW5hbE51bWJlck9mVE1vZGVscyA+IDApIHsKLSAgICAgICAgICAgIGlmIChzaG91bGRBZGRRdWVyeU5vZGUpIHsKLSAgICAgICAgICAgICAgIFZlY3RvciBmaW5hbFRNb2RlbFZlY3RvciA9IHByb3h5LmdldF90TW9kZWxEZXRhaWwodE1vZGVsS2V5cykuZ2V0VE1vZGVsVmVjdG9yKCk7Ci0KLSAgICAgICAgICAgICAgIGludCBzaXplID0gZmluYWxUTW9kZWxWZWN0b3Iuc2l6ZSgpOwotICAgICAgICAgICAgICAgaWYgKHNpemUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICBUTW9kZWwgdG0gPSBudWxsOwotICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgIHRtID0gKFRNb2RlbCkgZmluYWxUTW9kZWxWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICAgICAgICAgICAgICAgYWRkUHVibGlzaGVkSXRlbU5vZGUodG0sIHJlZ0VsZW1lbnQpOyAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1NFUlZJQ0VfSU5URVJGQUNFU19GT1VORCIsIFN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlT2Yoc2l6ZSkpKTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLQotICAgICAgICAgaW50IGlkID0gMTsKLSAgICAgICAgIFJlZ2lzdHJ5Tm9kZSByZWdOb2RlID0gZ2V0UmVnaXN0cnlOb2RlKCk7Ci0KLSAgICAgICAgIC8vIHdlIGFyZSBsb2dnZWQgaW4gc28gY2hhbmdlIHRoZSBsb2dpblRvb2wgdG8gYWN0IGFzIGEgbG9nb3V0VG9vbDsKLSAgICAgICAgIHJlZ05vZGUuZ2V0TG9naW5Ub29sKCkuc2V0QWx0VGV4dCh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0xPR09VVCIpKTsKLSAgICAgICAgIHJlZ05vZGUuZ2V0TG9naW5Ub29sKCkuc2V0VG9Mb2dvdXRMaW5rKCk7Ci0gICAgICAgICBTdHJpbmcgcmVnaXN0cnlOYW1lID0gcmVnRWxlbWVudC5nZXROYW1lKCk7Ci0gICAgICAgICBTdHJpbmdbXSBzID0gbmV3IFN0cmluZ1syXTsKLSAgICAgICAgIHNbMF0gPSByZWdpc3RyeU5hbWU7Ci0gICAgICAgICBzWzFdID0gdXNlcklkOwotICAgICAgICAgcmVnRWxlbWVudC5zZXROYW1lKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19MT0dHRURfSU5fTk9ERSIsIHMpKTsKLQotICAgICAgICAgaWYgKGZpbmFsTnVtYmVyT2ZCdXNpbmVzc0VudGl0aWVzID4gMCkgewotICAgICAgICAgICAgTm9kZSBwYmVOb2RlID0gcmVnTm9kZS5nZXRDaGlsZE5vZGUocmVnRWxlbWVudC5nZXRQdWJsaXNoZWRCdXNpbmVzc2VzRWxlbWVudCgpKTsKLSAgICAgICAgICAgIGlkID0gcGJlTm9kZS5nZXROb2RlSWQoKTsKLSAgICAgICAgIH0gZWxzZSBpZiAoZmluYWxOdW1iZXJPZlRNb2RlbHMgPiAwKSB7Ci0gICAgICAgICAgICBOb2RlIHBzaU5vZGUgPSByZWdOb2RlLmdldENoaWxkTm9kZShyZWdFbGVtZW50LmdldFB1Ymxpc2hlZFNlcnZpY2VJbnRlcmZhY2VzRWxlbWVudCgpKTsKLSAgICAgICAgICAgIGlkID0gcHNpTm9kZS5nZXROb2RlSWQoKTsKLSAgICAgICAgIH0gCi0gICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIk5vZGUgaWQgPSAiICsgaWQpOwotICAgICAgICAgdWRkaVBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuc2V0U2VsZWN0ZWROb2RlSWQoaWQpOwotICAgICAgICAgdWRkaVBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkubWFrZVNlbGVjdGVkTm9kZVZpc2libGUoKTsKLQotICAgICAgICAgaWYgKChmaW5hbE51bWJlck9mQnVzaW5lc3NFbnRpdGllcyA8IDEpICYmIChmaW5hbE51bWJlck9mVE1vZGVscyA8IDEpKQotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX05PX0JVU0lORVNTRVNfT1JfU0VSVklDRV9JTlRFUkZBQ0VTX0ZPVU5EIikpOwotCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0gY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJUcmFuc3BvcnRFeGNlcHRpb24iKTsKLSAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIH0gY2F0Y2ggKFVERElFeGNlcHRpb24gZSkgewotICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICAgIH0gY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJNYWxmb3JtZWRVUkxFeGNlcHRpb24iKTsKLSAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIH0gY2F0Y2ggKEFscmVhZHlCb3VuZEV4Y2VwdGlvbiBlKSB7Ci0gICAgCSBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAJIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJBbHJlYWR5Qm91bmRFeGNlcHRpb24iKTsKLSAgICAJIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0xvZ291dEFkdmFuY2VkQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9Mb2dvdXRBZHZhbmNlZEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzZkZjM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL0xvZ291dEFkdmFuY2VkQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDI3ICAgMTM2NDQ5IGJydW5zc2VuQHVzLmlibS5jb20gLSBWaW5jZSBCcnVuc3NlbiAgCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci0KLXB1YmxpYyBjbGFzcyBMb2dvdXRBZHZhbmNlZEFjdGlvbiBleHRlbmRzIFB1Ymxpc2hBY3Rpb24KLXsKLSAgcHVibGljIExvZ291dEFkdmFuY2VkQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHJlZ05vZGVfLmdldExvZ2luVG9vbCgpLnNldFRvUmVnaXN0cnlMaW5rKCk7ICAgIAotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gVmFsaWRhdGUgdGhlIGRhdGEuCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIFRoZSBhY3Rpb24gY2FuIGJlIHJ1biB1bmRlciB0aGUgY29udGV4dCBvZiBlaXRoZXIgYSByZWdpc3RyeSBvciBhIHF1ZXJ5IG5vZGUuCi0gICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIGlmIChyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkgewotICAgICAgICByZWdFbGVtZW50LnBlcmZvcm1Mb2dvdXQoKTsKLSAgICAgICAgcmVnRWxlbWVudC5yZW1vdmUoKTsKLSAgICAgICAgcmVnTm9kZV8uZ2V0Tm9kZU1hbmFnZXIoKS5zZXRTZWxlY3RlZE5vZGVJZCgwKTsgIAotICAgICAgfQotICAgICAgCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlRyYW5zcG9ydEV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUudG9TdHJpbmcoKSk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvTWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9NYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdhODZmMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9NYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogIDIwMDcwNDE5ICAgMTgyODY0IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5CdXNpbmVzc0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5NdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5SZWdpc3RyeU5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcudWRkaTRqLlVERElFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai5jbGllbnQuVURESVByb3h5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLkJ1c2luZXNzU2VydmljZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlczsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci0KLXB1YmxpYyBjbGFzcyBNYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNBY3Rpb24gZXh0ZW5kcyBVRERJUHJvcGVydGllc0Zvcm1BY3Rpb24KLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBzdWJRdWVyeUtleV87Ci0gIHByb3RlY3RlZCBib29sZWFuIGlzU3ViUXVlcnlHZXRfOwotICBwcm90ZWN0ZWQgU3RyaW5nIG5ld1N1YlF1ZXJ5XzsKLSAgcHJvdGVjdGVkIFN0cmluZyBuZXdTdWJRdWVyeUl0ZW1fOwotICBwcm90ZWN0ZWQgYm9vbGVhbiBzdWJRdWVyeUluaXRpYXRlZF87Ci0gIHByb3RlY3RlZCBSZWdpc3RyeU5vZGUgcmVnTm9kZV87Ci0KLSAgcHVibGljIE1hbmFnZVJlZmVyZW5jZWRTZXJ2aWNlc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBzdWJRdWVyeUtleV8gPSBudWxsOwotICAgIGlzU3ViUXVlcnlHZXRfID0gZmFsc2U7Ci0gICAgc3ViUXVlcnlJbml0aWF0ZWRfID0gZmFsc2U7Ci0gICAgcmVnTm9kZV8gPSBnZXRSZWdpc3RyeU5vZGUoKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBuZXdTdWJRdWVyeV8gPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX0lOSVRJQVRFRCk7Ci0gICAgU3RyaW5nIGlzU3ViUXVlcnlHZXRTdHJpbmcgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfR0VUKTsKLSAgICBuZXdTdWJRdWVyeUl0ZW1fID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLk5FV19TVUJRVUVSWV9RVUVSWV9JVEVNKTsKLSAgICBzdWJRdWVyeUtleV8gPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgICBTdHJpbmdbXSByZWZlcmVuY2VkU2VydmljZXNDaGVja2JveGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlJFRkVSRU5DRURfU0VSVklDRV9TRUxFQ1RfU1RBVEUpOwotICAgIFN0cmluZ1tdIHNlcnZpY2VOb2RlSWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLk5PREVJRF9TRVJWSUNFKTsKLSAgICBTdHJpbmcgb3BlcmF0aW9uID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLk1BTkFHRV9SRUZFUkVOQ0VEX1NFUlZJQ0VTX09QRVJBVElPTik7Ci0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgIFN0cmluZyB1c2VySWQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotCi0gICAgLy8gVmFsaWRhdGUgdGhlIGRhdGEuCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0KLSAgICBGb3JtVG9vbCBmb3JtVG9vbCA9IGdldFNlbGVjdGVkRm9ybVRvb2woKTsKLSAgICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSA9ICgoTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UpZm9ybVRvb2wpLmdldEZvcm1Ub29sUHJvcGVydGllcyhzdWJRdWVyeUtleV8pOwotICAgIGZvcm1Ub29sUEkuY2xlYXJFcnJvcnMoKTsKLQotICAgIGlmIChuZXdTdWJRdWVyeV8gIT0gbnVsbCAmJiBuZXdTdWJRdWVyeV8ubGVuZ3RoKCkgPiAwKQotICAgICAgc3ViUXVlcnlJbml0aWF0ZWRfID0gdHJ1ZTsKLSAgICBlbHNlCi0gICAgICBzdWJRdWVyeUluaXRpYXRlZF8gPSBmYWxzZTsKLQotICAgIGlmIChpc1N1YlF1ZXJ5R2V0U3RyaW5nICE9IG51bGwpCi0gICAgICBpc1N1YlF1ZXJ5R2V0XyA9IEJvb2xlYW4udmFsdWVPZihpc1N1YlF1ZXJ5R2V0U3RyaW5nKS5ib29sZWFuVmFsdWUoKTsKLQotICAgIGlmIChvcGVyYXRpb24gIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLk1BTkFHRV9SRUZFUkVOQ0VEX1NFUlZJQ0VTX09QRVJBVElPTixvcGVyYXRpb24pOwotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuTUFOQUdFX1JFRkVSRU5DRURfU0VSVklDRVNfT1BFUkFUSU9OKTsKLQotICAgIGlmIChyZWZlcmVuY2VkU2VydmljZXNDaGVja2JveGVzICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5SRUZFUkVOQ0VEX1NFUlZJQ0VfU0VMRUNUX1NUQVRFLHJlZmVyZW5jZWRTZXJ2aWNlc0NoZWNrYm94ZXMpOwotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUkVGRVJFTkNFRF9TRVJWSUNFX1NFTEVDVF9TVEFURSk7Ci0KLSAgICBpZiAoc2VydmljZU5vZGVJZHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3Igc2VydmljZXMgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TRVJWSUNFUyk7Ci0gICAgICBpZiAoc2VydmljZXMgPT0gbnVsbCkKLSAgICAgICAgc2VydmljZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBIYXNodGFibGUgcmVzdWx0SGFzaCA9IG5ldyBIYXNodGFibGUoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPHNlcnZpY2VOb2RlSWRzLmxlbmd0aDtpKyspCi0gICAgICAgIHJlc3VsdEhhc2gucHV0KHNlcnZpY2VOb2RlSWRzW2ldLEJvb2xlYW4uVFJVRSk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlcy5zaXplKCk7aSsrKQotICAgICAgewotICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClzZXJ2aWNlcy5lbGVtZW50QXQoaSk7Ci0gICAgICAgIGlmIChyZXN1bHRIYXNoLmdldChTdHJpbmcudmFsdWVPZihsaXN0RWxlbWVudC5nZXRUYXJnZXROb2RlSWQoKSkpID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBzZXJ2aWNlcy5yZW1vdmVFbGVtZW50QXQoaSk7Ci0gICAgICAgICAgaS0tOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TRVJWSUNFUyxzZXJ2aWNlcyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0VSVklDRVMpOwotCi0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgaWYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgICB7Ci0gICAgICBpZiAocHVibGlzaFVSTCAhPSBudWxsKQotICAgICAgewotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICAgIH0KLQotICAgICAgaWYgKCFzdWJRdWVyeUluaXRpYXRlZF8gJiYgIVZhbGlkYXRvci52YWxpZGF0ZVN0cmluZyhwdWJsaXNoVVJMKSkKLSAgICAgIHsKLSAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgZm9ybVRvb2wuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfUFVCTElTSF9VUkwiKSk7Ci0gICAgICB9Ci0KLSAgICAgIGlmICh1c2VySWQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklELHVzZXJJZCk7Ci0gICAgICAgIGZvcm1Ub29sLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklELHVzZXJJZCk7Ci0gICAgICB9Ci0KLSAgICAgIGlmICghc3ViUXVlcnlJbml0aWF0ZWRfICYmICFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcodXNlcklkKSkKLSAgICAgIHsKLSAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgZm9ybVRvb2wuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1VTRVJJRCIpKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHBhc3N3b3JkICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JELHBhc3N3b3JkKTsKLSAgICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCxwYXNzd29yZCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZm9yIChpbnQgaT0wO2k8cmVtb3ZlZFByb3BlcnRpZXNfLnNpemUoKTtpKyspCi0gICAgICBmb3JtVG9vbFBJLnJlbW92ZVByb3BlcnR5KHJlbW92ZWRQcm9wZXJ0aWVzXy5lbGVtZW50QXQoaSkpOwotICAgIGZvcm1Ub29sUEkudXBkYXRlUHJvcGVydHlUYWJsZShwcm9wZXJ0eVRhYmxlXyk7Ci0KLSAgICByZXR1cm4gaW5wdXRzVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgU3RyaW5nIG9wZXJhdGlvblN0cmluZyA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuTUFOQUdFX1JFRkVSRU5DRURfU0VSVklDRVNfT1BFUkFUSU9OKTsKLSAgICBpbnQgb3BlcmF0aW9uID0gSW50ZWdlci5wYXJzZUludChvcGVyYXRpb25TdHJpbmcpOwotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIEJ1c2luZXNzRWxlbWVudCBidXNFbGVtZW50ID0gKEJ1c2luZXNzRWxlbWVudCkoZ2V0U2VsZWN0ZWROYXZpZ2F0b3JOb2RlKCkuZ2V0VHJlZUVsZW1lbnQoKSk7Ci0gICAgRm9ybVRvb2wgZm9ybVRvb2wgPSBnZXRTZWxlY3RlZEZvcm1Ub29sKCk7Ci0gICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlfKTsKLSAgICBWZWN0b3IgcmVmZXJlbmNlZFNlcnZpY2VzID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfUkVGRVJFTkNFRF9TRVJWSUNFUyk7Ci0gICAgYm9vbGVhbiBvcGVyYXRpb25SZXN1bHQgPSB0cnVlOwotICAgIHRyeQotICAgIHsKLSAgICAgIFN0cmluZyBwdWJsaXNoVVJMID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgICAgU3RyaW5nIHBhc3N3b3JkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0gICAgICBVRERJUHJveHkgcHJveHkgPSByZWdFbGVtZW50LmdldFByb3h5KCk7Ci0gICAgICBCdXNpbmVzc0VudGl0eSBjdXJyZW50U1AgPSBidXNFbGVtZW50LmdldEJ1c2luZXNzRW50aXR5KCk7Ci0gICAgICBCdXNpbmVzc0VudGl0eSBzcCA9IChCdXNpbmVzc0VudGl0eSlwcm94eS5nZXRfYnVzaW5lc3NEZXRhaWwoY3VycmVudFNQLmdldEJ1c2luZXNzS2V5KCkpLmdldEJ1c2luZXNzRW50aXR5VmVjdG9yKCkuZ2V0KDApOwotICAgICAgCi0gICAgICBpZiAoIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgICAgICByZWdFbGVtZW50LnBlcmZvcm1Mb2dpbihwdWJsaXNoVVJMLHVzZXJJZCxwYXNzd29yZCk7Ci0gICAgICAgIAotICAgICAgSGFzaHRhYmxlIHNlcnZpY2VzSGFzaCA9IG5ldyBIYXNodGFibGUoKTsKLSAgICAgIFZlY3RvciBiYWNrdXBCdXNTZXJ2aWNlVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgc3dpdGNoIChvcGVyYXRpb24pCi0gICAgICB7Ci0gICAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5NQU5BR0VfUkVGRVJFTkNFRF9TRVJWSUNFU19PUEVSQVRJT05fQUREOgotICAgICAgICAgIFZlY3RvciBzZXJ2aWNlcyA9IChWZWN0b3IpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0VSVklDRVMpOyAgICAgICAgICAKLSAgICAgICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlcy5zaXplKCk7aSsrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIExpc3RFbGVtZW50IHNlcnZpY2VMaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClzZXJ2aWNlcy5lbGVtZW50QXQoaSk7Ci0gICAgICAgICAgICBCdXNpbmVzc1NlcnZpY2UgYnMgPSAoQnVzaW5lc3NTZXJ2aWNlKXNlcnZpY2VMaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgICAgIHNlcnZpY2VzSGFzaC5wdXQoYnMuZ2V0U2VydmljZUtleSgpLGJzKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgICAgLy8gU2F2ZSB0aGUgY3VycmVudCBsaXN0IG9mIEJ1c2luZXNzU2VydmljZXMgZm9yIHJvbGxiYWNrIG9wZXJhdGlvbnMuCi0gICAgICAgICAgYmFja3VwQW5kVXBkYXRlQnVzaW5lc3NTZXJ2aWNlcyhiYWNrdXBCdXNTZXJ2aWNlVmVjdG9yLHNwLHNlcnZpY2VzSGFzaCx0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgVmVjdG9yIGJlVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgICAgYmVWZWN0b3IuYWRkKHNwKTsKLSAgICAgICAgICAgIHNwID0gKEJ1c2luZXNzRW50aXR5KXByb3h5LnNhdmVfYnVzaW5lc3MocmVnRWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpLCBiZVZlY3RvcikuZ2V0QnVzaW5lc3NFbnRpdHlWZWN0b3IoKS5nZXQoMCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlcy5zaXplKCk7aSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBMaXN0RWxlbWVudCBzZXJ2aWNlRWxlbWVudCA9IChMaXN0RWxlbWVudClzZXJ2aWNlcy5lbGVtZW50QXQoaSk7Ci0gICAgICAgICAgICAgIEJ1c2luZXNzU2VydmljZSBicyA9IChCdXNpbmVzc1NlcnZpY2Upc2VydmljZUVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgICAgICAgIFN0cmluZyBic05hbWUgPSBicy5nZXREZWZhdWx0TmFtZVN0cmluZygpOwotICAgICAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fU0VSVklDRV9SRUZFUkVOQ0VEIixic05hbWUpKTsKLSAgICAgICAgICAgICAgc2VydmljZXMucmVtb3ZlRWxlbWVudEF0KGkpOwotICAgICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoIChUcmFuc3BvcnRFeGNlcHRpb24gZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSb2xsIGJhY2sgYW5kIHJlc3RvcmUgdGhlIG9sZCBsaXN0IG9mIHNlcnZpY2VzLgotICAgICAgICAgICAgcm9sbGJhY2tCdXNpbmVzc1NlcnZpY2VzKHNwLGJhY2t1cEJ1c1NlcnZpY2VWZWN0b3Isc2VydmljZXMsdWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiTVNHX0VSUk9SX1NFUlZJQ0VfTk9UX1JFRkVSRU5DRUQiKTsKLSAgICAgICAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24odWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiVHJhbnNwb3J0RXhjZXB0aW9uIixlKTsKLSAgICAgICAgICAgIG9wZXJhdGlvblJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJvbGwgYmFjayBhbmQgcmVzdG9yZSB0aGUgb2xkIGxpc3Qgb2Ygc2VydmljZXMuCi0gICAgICAgICAgICByb2xsYmFja0J1c2luZXNzU2VydmljZXMoc3AsYmFja3VwQnVzU2VydmljZVZlY3RvcixzZXJ2aWNlcyx1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJNU0dfRVJST1JfU0VSVklDRV9OT1RfUkVGRVJFTkNFRCIpOwotICAgICAgICAgICAgaWYoVURESUV4Y2VwdGlvbkhhbmRsZXIucmVxdWlyZXNSZXNldChlKSkKLSAgICAgICAgCQlyZWdFbGVtZW50LnNldERlZmF1bHRzKCk7Ci0gICAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0Q29udHJvbGxlcigpLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25SZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NFUlZJQ0VTLHNlcnZpY2VzKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLk1BTkFHRV9SRUZFUkVOQ0VEX1NFUlZJQ0VTX09QRVJBVElPTl9SRU1PVkU6Ci0gICAgICAgICAgU3RyaW5nW10gcmVmZXJlbmNlZFNlcnZpY2VzQ2hlY2tib3hlcyA9IChTdHJpbmdbXSlwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5SRUZFUkVOQ0VEX1NFUlZJQ0VfU0VMRUNUX1NUQVRFKTsKLSAgICAgICAgICBWZWN0b3Igc2VsZWN0ZWRSZWZlcmVuY2VkU2VydmljZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICBmb3IgKGludCBpPTA7aTxyZWZlcmVuY2VkU2VydmljZXNDaGVja2JveGVzLmxlbmd0aDtpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgYm9vbGVhbiBpc0NoZWNrZWQgPSBCb29sZWFuLnZhbHVlT2YocmVmZXJlbmNlZFNlcnZpY2VzQ2hlY2tib3hlc1tpXSkuYm9vbGVhblZhbHVlKCk7Ci0gICAgICAgICAgICBpZiAoaXNDaGVja2VkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBMaXN0RWxlbWVudCByZWZlcmVuY2VkU2VydmljZUxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KXJlZmVyZW5jZWRTZXJ2aWNlcy5lbGVtZW50QXQoaSk7Ci0gICAgICAgICAgICAgIEJ1c2luZXNzU2VydmljZSBicyA9IChCdXNpbmVzc1NlcnZpY2UpcmVmZXJlbmNlZFNlcnZpY2VMaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgICAgICAgc2VydmljZXNIYXNoLnB1dChicy5nZXRTZXJ2aWNlS2V5KCksYnMpOwotICAgICAgICAgICAgICBzZWxlY3RlZFJlZmVyZW5jZWRTZXJ2aWNlVmVjdG9yLmFkZEVsZW1lbnQoYnMpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gICAgICAgICAgCi0gICAgICAgICAgCi0gICAgICAgICAgLy8gU2F2ZSB0aGUgY3VycmVudCBsaXN0IG9mIGJ1c2luZXNzIHNlcnZpY2VzIGZvciByb2xsYmFjayBvcGVyYXRpb25zLgotICAgICAgICAgIGJhY2t1cEFuZFVwZGF0ZUJ1c2luZXNzU2VydmljZXMoYmFja3VwQnVzU2VydmljZVZlY3RvcixzcCxzZXJ2aWNlc0hhc2gsZmFsc2UpOwotICAgICAgICAgIAotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFZlY3RvciBiZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICAgIGJlVmVjdG9yLmFkZChzcCk7Ci0gICAgICAgICAgICBzcCA9IChCdXNpbmVzc0VudGl0eSlwcm94eS5zYXZlX2J1c2luZXNzKHJlZ0VsZW1lbnQuZ2V0QXV0aEluZm9TdHJpbmcoKSwgYmVWZWN0b3IpLmdldEJ1c2luZXNzRW50aXR5VmVjdG9yKCkuZ2V0KDApOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wO2k8c2VsZWN0ZWRSZWZlcmVuY2VkU2VydmljZVZlY3Rvci5zaXplKCk7aSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBCdXNpbmVzc1NlcnZpY2UgYnMgPSAoQnVzaW5lc3NTZXJ2aWNlKXNlbGVjdGVkUmVmZXJlbmNlZFNlcnZpY2VWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICAgICAgICBTdHJpbmcgYnNOYW1lID0gYnMuZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKTsKLSAgICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1NFUlZJQ0VfUkVGRVJFTkNFX1JFTU9WRUQiLGJzTmFtZSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gUm9sbCBiYWNrIGFuZCByZXN0b3JlIHRoZSBvbGQgbGlzdCBvZiBzZXJ2aWNlcy4KLSAgICAgICAgICAgIHJvbGxiYWNrQnVzaW5lc3NTZXJ2aWNlcyhzcCxiYWNrdXBCdXNTZXJ2aWNlVmVjdG9yLHNlbGVjdGVkUmVmZXJlbmNlZFNlcnZpY2VWZWN0b3IsdWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiTVNHX0VSUk9SX1JFRkVSRU5DRV9OT1RfUkVNT1ZFRCIpOwotICAgICAgICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJUcmFuc3BvcnRFeGNlcHRpb24iLGUpOwotICAgICAgICAgICAgb3BlcmF0aW9uUmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gUm9sbCBiYWNrIGFuZCByZXN0b3JlIHRoZSBvbGQgbGlzdCBvZiBzZXJ2aWNlcy4KLSAgICAgICAgICAgIHJvbGxiYWNrQnVzaW5lc3NTZXJ2aWNlcyhzcCxiYWNrdXBCdXNTZXJ2aWNlVmVjdG9yLHNlbGVjdGVkUmVmZXJlbmNlZFNlcnZpY2VWZWN0b3IsdWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiTVNHX0VSUk9SX1JFRkVSRU5DRV9OT1RfUkVNT1ZFRCIpOwotICAgICAgICAgICAgaWYoVURESUV4Y2VwdGlvbkhhbmRsZXIucmVxdWlyZXNSZXNldChlKSkKLSAgICAgICAgICAgIAlyZWdFbGVtZW50LnNldERlZmF1bHRzKCk7Ci0gICAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0Q29udHJvbGxlcigpLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25SZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcmVmZXJlbmNlZCBzZXJ2aWNlcyBhcmUgcmVmcmVzaGVkIHdoZW4gdGhlIGZvcm0gcmVsb2Fkcy4KLSAgICAgIGZvcm1Ub29sUEkucmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9SRUZFUkVOQ0VEX1NFUlZJQ0VTKTsKLSAgICAgIGJ1c0VsZW1lbnQuc2V0QnVzaW5lc3NFbnRpdHkoc3ApOwotICAgICAgcmV0dXJuIG9wZXJhdGlvblJlc3VsdDsKLSAgICB9Ci0gICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24odWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiVHJhbnNwb3J0RXhjZXB0aW9uIixlKTsKLSAgICAgIG9wZXJhdGlvblJlc3VsdCA9IGZhbHNlOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAJaWYoVURESUV4Y2VwdGlvbkhhbmRsZXIucmVxdWlyZXNSZXNldChlKSkKLSAgICAJCXJlZ0VsZW1lbnQuc2V0RGVmYXVsdHMoKTsKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldENvbnRyb2xsZXIoKS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICAJb3BlcmF0aW9uUmVzdWx0ID0gZmFsc2U7Ci0gICAgfQotICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBoYW5kbGVVbmV4cGVjdGVkRXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZSxtZXNzYWdlUXVldWUsIk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIsZSk7Ci0gICAgICBvcGVyYXRpb25SZXN1bHQgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIG9wZXJhdGlvblJlc3VsdDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzU3ViUXVlcnlJbml0aWF0ZWQoKQotICB7Ci0gICAgcmV0dXJuIHN1YlF1ZXJ5SW5pdGlhdGVkXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzU3ViUXVlcnlHZXQoKQotICB7Ci0gICAgcmV0dXJuIGlzU3ViUXVlcnlHZXRfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTdWJRdWVyeUtleSgpCi0gIHsKLSAgICByZXR1cm4gc3ViUXVlcnlLZXlfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXROZXdTdWJRdWVyeSgpCi0gIHsKLSAgICByZXR1cm4gbmV3U3ViUXVlcnlfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXROZXdTdWJRdWVyeUl0ZW0oKQotICB7Ci0gICAgcmV0dXJuIG5ld1N1YlF1ZXJ5SXRlbV87Ci0gIH0KLSAgCi0gIC8vIEJhY2t1cCB0aGUgYnVzaW5lc3Mgc2VydmljZXMgYW5kIHJlbW92ZSB0aG9zZSBpbiBzZXJ2aWNlSGFzaCBmcm9tIHRoZSBjdXJyZW50IGxpc3QuIFJldHVybiB0aGUgdXBkYXRlZCBsaXN0IG9mIGJ1c2luZXNzIHNlcnZpY2VzCi0gIHByaXZhdGUgZmluYWwgdm9pZCBiYWNrdXBBbmRVcGRhdGVCdXNpbmVzc1NlcnZpY2VzKFZlY3RvciBiYWNrdXBCdXNTZXJ2aWNlVmVjdG9yLEJ1c2luZXNzRW50aXR5IGJlLEhhc2h0YWJsZSBzZXJ2aWNlc0hhc2gsYm9vbGVhbiBpc0FkZCkKLSAgewotICAgIC8vIFNhdmUgdGhlIGN1cnJlbnQgbGlzdCBvZiBidXNpbmVzcyBzZXJ2aWNlcyBmb3Igcm9sbGJhY2sgb3BlcmF0aW9ucy4KLSAgICBCdXNpbmVzc1NlcnZpY2VzIGN1cnJlbnRCdXNTZXJ2aWNlcyA9IGJlLmdldEJ1c2luZXNzU2VydmljZXMoKTsKLSAgICBpZiAoY3VycmVudEJ1c1NlcnZpY2VzID09IG51bGwpCi0gICAgICBjdXJyZW50QnVzU2VydmljZXMgPSBuZXcgQnVzaW5lc3NTZXJ2aWNlcygpOwotICAgIFZlY3RvciBjdXJyZW50QnVzU2VydmljZVZlY3RvciA9IGN1cnJlbnRCdXNTZXJ2aWNlcy5nZXRCdXNpbmVzc1NlcnZpY2VWZWN0b3IoKTsKLSAgICBmb3IgKGludCBpPTA7aTxjdXJyZW50QnVzU2VydmljZVZlY3Rvci5zaXplKCk7aSsrKQotICAgIHsKLSAgICAgIEJ1c2luZXNzU2VydmljZSBjdXJyZW50QnVzU2VydmljZSA9IChCdXNpbmVzc1NlcnZpY2UpY3VycmVudEJ1c1NlcnZpY2VWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgYmFja3VwQnVzU2VydmljZVZlY3Rvci5hZGRFbGVtZW50KGN1cnJlbnRCdXNTZXJ2aWNlKTsKLSAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ1c2luZXNzIHNlcnZpY2UgaXMgYSBtZW1iZXIgb2YgdGhlIGxpc3QgdG8gYmUgcmVtb3ZlZC9hZGRlZCwgcmVtb3ZlIGl0IG5vdy4KLSAgICAgIGlmIChzZXJ2aWNlc0hhc2guZ2V0KGN1cnJlbnRCdXNTZXJ2aWNlLmdldFNlcnZpY2VLZXkoKSkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgY3VycmVudEJ1c1NlcnZpY2VWZWN0b3IucmVtb3ZlRWxlbWVudEF0KGkpOwotICAgICAgICBpLS07Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChpc0FkZCkKLSAgICB7Ci0gICAgICBFbnVtZXJhdGlvbiBlID0gc2VydmljZXNIYXNoLmVsZW1lbnRzKCk7Ci0gICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgICAgY3VycmVudEJ1c1NlcnZpY2VWZWN0b3IuYWRkRWxlbWVudCgoQnVzaW5lc3NTZXJ2aWNlKWUubmV4dEVsZW1lbnQoKSk7Ci0gICAgfQotICAgIGJlLnNldEJ1c2luZXNzU2VydmljZXMoY3VycmVudEJ1c1NlcnZpY2VzKTsKLSAgfQotICAKLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIHJvbGxiYWNrQnVzaW5lc3NTZXJ2aWNlcyhCdXNpbmVzc0VudGl0eSBiZSxWZWN0b3IgYmFja3VwQnVzU2VydmljZVZlY3RvcixWZWN0b3Igb3BlcmF0ZWRTZXJ2aWNlcyxQZXJzcGVjdGl2ZSBwZXJzcGVjdGl2ZSxNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlLFN0cmluZyBlcnJvck1lc3NhZ2VLZXkpCi0gIHsKLSAgICAvLyBSb2xsIGJhY2sgYW5kIHJlc3RvcmUgdGhlIG9sZCBsaXN0IG9mIHNlcnZpY2VzLgotICAgIGJlLmdldEJ1c2luZXNzU2VydmljZXMoKS5zZXRCdXNpbmVzc1NlcnZpY2VWZWN0b3IoYmFja3VwQnVzU2VydmljZVZlY3Rvcik7Ci0gICAgZm9yIChpbnQgaT0wO2k8b3BlcmF0ZWRTZXJ2aWNlcy5zaXplKCk7aSsrKQotICAgIHsKLSAgICAgIExpc3RFbGVtZW50IHNlcnZpY2VMaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClvcGVyYXRlZFNlcnZpY2VzLmVsZW1lbnRBdChpKTsKLSAgICAgIEJ1c2luZXNzU2VydmljZSBicyA9IChCdXNpbmVzc1NlcnZpY2Upc2VydmljZUxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgU3RyaW5nIGJzTmFtZSA9IGJzLmdldERlZmF1bHROYW1lU3RyaW5nKCk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShwZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKGVycm9yTWVzc2FnZUtleSxic05hbWUpKTsKLSAgICB9ICAgIAotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9PcGVuQ2F0ZWdvcnlCcm93c2VyQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9PcGVuQ2F0ZWdvcnlCcm93c2VyQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkY2Y4NGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvT3BlbkNhdGVnb3J5QnJvd3NlckFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotCi1wdWJsaWMgY2xhc3MgT3BlbkNhdGVnb3J5QnJvd3NlckFjdGlvbiBleHRlbmRzIEFjdGlvbgotewotICBwdWJsaWMgT3BlbkNhdGVnb3J5QnJvd3NlckFjdGlvbigpCi0gIHsKLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIHZvaWQgYWRkU2Vzc2lvbkFuZFRNb2RlbEtleShTdHJpbmdCdWZmZXIgcmVzdWx0LFN0cmluZyBzZXNzaW9uSWQsU3RyaW5nIGNhdGVnb3J5VE1vZGVsS2V5KQotICB7Ci0gICAgcmVzdWx0LmFwcGVuZChBY3Rpb25JbnB1dHMuU0VTU0lPTklEKS5hcHBlbmQoJz0nKS5hcHBlbmQoc2Vzc2lvbklkKS5hcHBlbmQoJyYnKS5hcHBlbmQoVURESUFjdGlvbklucHV0cy5DQVRFR09SWV9UTU9ERUxfS0VZKS5hcHBlbmQoJz0nKS5hcHBlbmQoY2F0ZWdvcnlUTW9kZWxLZXkpOwotICB9Ci0gIAotICAvLyB1ZGRpL2NhdGVnb3J5X2Jyb3dzZXIuanNwP3Nlc3Npb25JZD0uLi4mY2F0ZWdvcnlUTW9kZWxLZXk9Li4uCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmsoU3RyaW5nIHNlc3Npb25JZCxTdHJpbmcgY2F0ZWdvcnlUTW9kZWxLZXkpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoInVkZGkvY2F0ZWdvcnlfYnJvd3Nlci5qc3A/Iik7Ci0gICAgYWRkU2Vzc2lvbkFuZFRNb2RlbEtleShhY3Rpb25MaW5rLHNlc3Npb25JZCxjYXRlZ29yeVRNb2RlbEtleSk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0Q2F0ZWdvcnlDb250ZW50UGFnZShTdHJpbmcgc2Vzc2lvbklkLFN0cmluZyBjYXRlZ29yeVRNb2RlbEtleSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9jYXRlZ29yeV9jb250ZW50LmpzcD8iKTsKLSAgICBhZGRTZXNzaW9uQW5kVE1vZGVsS2V5KGFjdGlvbkxpbmssc2Vzc2lvbklkLGNhdGVnb3J5VE1vZGVsS2V5KTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRXaWxkQ2FyZEFjdGlvbkxpbmsoU3RyaW5nIHNlc3Npb25JZCkKLSAgewotICAgIHJldHVybiBnZXRBY3Rpb25MaW5rKHNlc3Npb25JZCwiJSIpOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBwb3B1bGF0ZVByb3BlcnR5VGFibGUoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvT3BlblJlZ2lzdHJ5QWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9PcGVuUmVnaXN0cnlBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI4OGM3ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9PcGVuUmVnaXN0cnlBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI1MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwOTEyICAgMTQxNzk2IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkNhdGVnb3J5TW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuVURESU1haW5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElNYWluTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuVE1vZGVsRGV0YWlsOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuVE1vZGVsSW5mbzsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlRNb2RlbEluZm9zOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuVE1vZGVsTGlzdDsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkNhdGVnb3J5QmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5LZXllZFJlZmVyZW5jZTsKLQotcHVibGljIGNsYXNzIE9wZW5SZWdpc3RyeUFjdGlvbiBleHRlbmRzIFVERElQcm9wZXJ0aWVzRm9ybUFjdGlvbgotewotICBwdWJsaWMgT3BlblJlZ2lzdHJ5QWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIC8vIFNlbGVjdCBVRERJIE1haW4uCi0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHJlZ2lzdHJ5TmFtZSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5SRUdJU1RSWV9OQU1FKTsKLSAgICBTdHJpbmcgaW5xdWlyeVVSTCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5JTlFVSVJZX1VSTCk7Ci0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUFVCTElTSF9VUkwpOwotICAgIFN0cmluZyB1c2VybmFtZSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5VRERJX1VTRVJOQU1FKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuVURESV9QQVNTV09SRCk7Ci0gICAgU3RyaW5nIGNoZWNrVXNlckRlZmluZWRDYXRlZ29yaWVzQ2hlY2tlZCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5DSEVDS19VU0VSX0RFRklORURfQ0FURUdPUklFUyk7Ci0gICAgU3RyaW5nIGNhdGVnb3JpZXNEaXJlY3RvcnkgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuQ0FURUdPUklFU19ESVJFQ1RPUlkpOwotCi0gICAgLy8gVmFsaWRhdGUgdGhlIGRhdGEuCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgRm9ybVRvb2wgZm9ybVRvb2wgPSBnZXRTZWxlY3RlZEZvcm1Ub29sKCk7Ci0gICAgaWYgKHJlZ2lzdHJ5TmFtZSAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUkVHSVNUUllfTkFNRSxyZWdpc3RyeU5hbWUpOwotCi0gICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcocmVnaXN0cnlOYW1lKSkKLSAgICB7Ci0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgZm9ybVRvb2wuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUkVHSVNUUllfTkFNRSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfUkVHSVNUUllfTkFNRSIpKTsKLSAgICB9Ci0KLSAgICBpZiAoaW5xdWlyeVVSTCAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuSU5RVUlSWV9VUkwsaW5xdWlyeVVSTCk7Ci0gICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVVUkwoaW5xdWlyeVVSTCkpCi0gICAgewotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgIGZvcm1Ub29sLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLklOUVVJUllfVVJMKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9JTlFVSVJZX1VSTCIpKTsKLSAgICB9Ci0KLSAgICBpZiAocHVibGlzaFVSTCAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSF9VUkwsIHB1Ymxpc2hVUkwpOwotICAgIAotICAgIGlmICh1c2VybmFtZSAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuVURESV9VU0VSTkFNRSwgdXNlcm5hbWUpOwotCi0gICAgaWYgKHBhc3N3b3JkICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5VRERJX1BBU1NXT1JELCBwYXNzd29yZCk7Ci0KLSAgICBpZiAoY2hlY2tVc2VyRGVmaW5lZENhdGVnb3JpZXNDaGVja2VkICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5DSEVDS19VU0VSX0RFRklORURfQ0FURUdPUklFUyxjaGVja1VzZXJEZWZpbmVkQ2F0ZWdvcmllc0NoZWNrZWQpOwotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuQ0hFQ0tfVVNFUl9ERUZJTkVEX0NBVEVHT1JJRVMpOwotICAgICAgCi0gICAgaWYgKGNhdGVnb3JpZXNEaXJlY3RvcnkgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JJRVNfRElSRUNUT1JZLGNhdGVnb3JpZXNEaXJlY3RvcnkpOwotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuQ0FURUdPUklFU19ESVJFQ1RPUlkpOwotCi0gICAgZm9ybVRvb2wudXBkYXRlUHJvcGVydHlUYWJsZShwcm9wZXJ0eVRhYmxlXyk7Ci0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgZ2F0aGVyV1NVc2VyRGVmaW5lZENhdGVnb3JpZXMoVURESVByb3h5IHByb3h5LEhhc2h0YWJsZSBjYXRlZ29yeU1vZGVscykKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIENhdGVnb3J5QmFnIGNhdGVnb3J5QmFnID0gbmV3IENhdGVnb3J5QmFnKCk7Ci0gICAgICBjYXRlZ29yeUJhZy5hZGQobmV3IEtleWVkUmVmZXJlbmNlKCIiLCJjYXRlZ29yaXphdGlvbiIsVE1vZGVsLlRZUEVTX1RNT0RFTF9LRVkpKTsKLSAgICAgIFRNb2RlbExpc3QgdE1vZGVsTGlzdCA9IHByb3h5LmZpbmRfdE1vZGVsKCIlIixjYXRlZ29yeUJhZyxudWxsLG51bGwsMTAwKTsKLSAgICAgIFRNb2RlbEluZm9zIHRNb2RlbEluZm9zID0gdE1vZGVsTGlzdC5nZXRUTW9kZWxJbmZvcygpOwotICAgICAgVmVjdG9yIHRNb2RlbEtleVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPHRNb2RlbEluZm9zLnNpemUoKTtpKyspCi0gICAgICB7Ci0gICAgICAgIFRNb2RlbEluZm8gdE1vZGVsSW5mbyA9IHRNb2RlbEluZm9zLmdldChpKTsKLSAgICAgICAgdE1vZGVsS2V5VmVjdG9yLmFkZEVsZW1lbnQodE1vZGVsSW5mby5nZXRUTW9kZWxLZXkoKSk7Ci0gICAgICB9Ci0gICAgICBUTW9kZWxEZXRhaWwgdE1vZGVsRGV0YWlsID0gcHJveHkuZ2V0X3RNb2RlbERldGFpbCh0TW9kZWxLZXlWZWN0b3IpOwotICAgICAgVmVjdG9yIHRNb2RlbFZlY3RvciA9IHRNb2RlbERldGFpbC5nZXRUTW9kZWxWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPHRNb2RlbFZlY3Rvci5zaXplKCk7aSsrKQotICAgICAgewotICAgICAgICBUTW9kZWwgdE1vZGVsID0gKFRNb2RlbCl0TW9kZWxWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICBib29sZWFuIGNoZWNrZWQgPSBmYWxzZTsKLSAgICAgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gbnVsbDsKLSAgICAgICAgU3RyaW5nIGNhdGVnb3J5S2V5ID0gbnVsbDsKLSAgICAgICAgY2F0ZWdvcnlCYWcgPSB0TW9kZWwuZ2V0Q2F0ZWdvcnlCYWcoKTsKLSAgICAgICAgZm9yIChpbnQgaj0wO2o8Y2F0ZWdvcnlCYWcuc2l6ZSgpO2orKykKLSAgICAgICAgewotICAgICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gY2F0ZWdvcnlCYWcuZ2V0KGopOwotICAgICAgICAgIFN0cmluZyBrclRNb2RlbEtleSA9IGtyLmdldFRNb2RlbEtleSgpOwotICAgICAgICAgIGlmIChrclRNb2RlbEtleS5lcXVhbHNJZ25vcmVDYXNlKFRNb2RlbC5HRU5FUkFMX0tFWVdPUkRTX1RNT0RFTF9LRVkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBrcktleU5hbWUgPSBrci5nZXRLZXlOYW1lKCk7Ci0gICAgICAgICAgICBpZiAoa3JLZXlOYW1lLmVxdWFscygidXJuOngtaWJtOnVkZGk6Y3VzdG9tVGF4b25vbXk6a2V5IikpCi0gICAgICAgICAgICAgIGNhdGVnb3J5S2V5ID0ga3IuZ2V0S2V5VmFsdWUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGtyS2V5TmFtZS5lcXVhbHMoInVybjp4LWlibTp1ZGRpOmN1c3RvbVRheG9ub215OmRpc3BsYXlOYW1lIikpCi0gICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0ga3IuZ2V0S2V5VmFsdWUoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoa3JUTW9kZWxLZXkuZXF1YWxzSWdub3JlQ2FzZShUTW9kZWwuVFlQRVNfVE1PREVMX0tFWSkpCi0gICAgICAgICAgICBjaGVja2VkID0ga3IuZ2V0S2V5VmFsdWUoKS5lcXVhbHMoImNoZWNrZWQiKTsgICAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICBpZiAoY2F0ZWdvcnlLZXkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChkaXNwbGF5TmFtZSA9PSBudWxsKQotICAgICAgICAgICAgZGlzcGxheU5hbWUgPSB0TW9kZWwuZ2V0TmFtZVN0cmluZygpOwotICAgICAgICAgIENhdGVnb3J5TW9kZWwgY2F0ZWdvcnlNb2RlbCA9IG5ldyBDYXRlZ29yeU1vZGVsKCk7Ci0gICAgICAgICAgY2F0ZWdvcnlNb2RlbC5zZXRDYXRlZ29yeUtleShjYXRlZ29yeUtleSk7Ci0gICAgICAgICAgY2F0ZWdvcnlNb2RlbC5lbmFibGVDaGVja2VkKGNoZWNrZWQpOwotICAgICAgICAgIGNhdGVnb3J5TW9kZWwuc2V0RGlzcGxheU5hbWUoZGlzcGxheU5hbWUpOwotICAgICAgICAgIFN0cmluZyB0TW9kZWxLZXkgPSB0TW9kZWwuZ2V0VE1vZGVsS2V5KCk7Ci0gICAgICAgICAgY2F0ZWdvcnlNb2RlbC5zZXRUTW9kZWxLZXkodE1vZGVsS2V5KTsKLSAgICAgICAgICBjYXRlZ29yeU1vZGVscy5wdXQodE1vZGVsS2V5LGNhdGVnb3J5TW9kZWwpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIFN0cmluZyByZWdpc3RyeU5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlJFR0lTVFJZX05BTUUpOwotICAgICAgU3RyaW5nIGlucXVpcnlVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLklOUVVJUllfVVJMKTsKLSAgICAgIFN0cmluZyBwdWJsaXNoVVJMID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5QVUJMSVNIX1VSTCk7Ci0gICAgICBTdHJpbmcgcmVnaXN0cmF0aW9uVVJMID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5SRUdJU1RSQVRJT05fVVJMKTsKLSAgICAgIFN0cmluZyB1c2VybmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuVURESV9VU0VSTkFNRSk7Ci0gICAgICBTdHJpbmcgcGFzc3dvcmQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlVERElfUEFTU1dPUkQpOwotICAgICAgYm9vbGVhbiBjaGVja0ZvclVzZXJEZWZpbmVkQ2F0ZWdvcmllc0NoZWNrZWQgPSAocHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuQ0hFQ0tfVVNFUl9ERUZJTkVEX0NBVEVHT1JJRVMpICE9IG51bGwpOwotICAgICAgU3RyaW5nIGNhdGVnb3JpZXNEaXJlY3RvcnkgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JJRVNfRElSRUNUT1JZKTsKLQotICAgICAgU3RyaW5nIHJlY29nbml6ZWRQdWJsaXNoVVJMID0gdWRkaVBlcnNwZWN0aXZlLmdldEtub3duUmVnaXN0cnlQdWJsaXNoVVJMKGlucXVpcnlVUkwpOwotICAgICAgU3RyaW5nIHJlY29nbml6ZWRSZWdpc3RyYXRpb25VUkwgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0S25vd25SZWdpc3RyeVJlZ2lzdHJhdGlvblVSTChpbnF1aXJ5VVJMKTsKLSAgICAgIAotICAgICAgaWYgKHB1Ymxpc2hVUkwgPT0gbnVsbCkKLSAgICAgICAgcHVibGlzaFVSTCA9IHJlY29nbml6ZWRQdWJsaXNoVVJMOwotICAgICAgaWYgKHJlZ2lzdHJhdGlvblVSTCA9PSBudWxsKQotICAgICAgICByZWdpc3RyYXRpb25VUkwgPSByZWNvZ25pemVkUmVnaXN0cmF0aW9uVVJMOwotICAgICAgICAKLSAgICAgIFVERElNYWluTm9kZSB1ZGRpTWFpbk5vZGUgPSAoVURESU1haW5Ob2RlKShjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCkuZ2V0Um9vdE5vZGUoKSk7Ci0gICAgICBVRERJTWFpbkVsZW1lbnQgdWRkaU1haW5FbGVtZW50ID0gKFVERElNYWluRWxlbWVudCl1ZGRpTWFpbk5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIFByb3BlcnRpZXMgcHJvcHMgPSBuZXcgUHJvcGVydGllcygpOwotICAgICAgcHJvcHMucHV0KEFjdGlvbklucHV0cy5UUkFOU1BPUlRfQ0xBU1NfTkFNRSwgQWN0aW9uSW5wdXRzLlRSQVNQT1JUX0NMQVNTKTsKLSAgICAgIFVERElQcm94eSBwcm94eSA9IG5ldyBVRERJUHJveHkocHJvcHMpOwotICAgICAgcHJveHkuc2V0SW5xdWlyeVVSTChuZXcgVVJMKGlucXVpcnlVUkwpKTsKLSAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdpc3RyeUVsZW1lbnQgPSBuZXcgUmVnaXN0cnlFbGVtZW50KHByb3h5LGlucXVpcnlVUkwscmVnaXN0cnlOYW1lLHVkZGlNYWluRWxlbWVudC5nZXRNb2RlbCgpKTsKLSAgICAgIC8vIFNldCByZWdpc3RyeSBlbGVtZW50J3MgcHVibGlzaCBVUkwgYW5kIHJlZ2lzdHJhdGlvbiBVUkwgcHJvdmlkZWQgYnkgZXh0ZXJuYWwgY2FsbGVycyAoZS5nLiBmYXZvcml0ZXMpLgotICAgICAgaWYgKHB1Ymxpc2hVUkwgIT0gbnVsbCkKLSAgICAgICAgcmVnaXN0cnlFbGVtZW50LnNldENhY2hlZFB1Ymxpc2hVUkwocHVibGlzaFVSTCk7Ci0gICAgICBpZiAocmVnaXN0cmF0aW9uVVJMICE9IG51bGwpCi0gICAgICAgIHJlZ2lzdHJ5RWxlbWVudC5zZXRSZWdpc3RyYXRpb25VUkwocmVnaXN0cmF0aW9uVVJMKTsKLSAgICAgIGlmICh1c2VybmFtZSAhPSBudWxsKQotICAgICAgCXJlZ2lzdHJ5RWxlbWVudC5zZXRVc2VySWQodXNlcm5hbWUpOwotICAgICAgaWYgKHBhc3N3b3JkICE9IG51bGwpCi0gICAgICAJcmVnaXN0cnlFbGVtZW50LnNldENyZWQocGFzc3dvcmQpOwotICAgICAgcmVnaXN0cnlFbGVtZW50LnNldENoZWNrRm9yVXNlckRlZmluZWRDYXRlZ29yaWVzKGNoZWNrRm9yVXNlckRlZmluZWRDYXRlZ29yaWVzQ2hlY2tlZCk7Ci0gICAgICBpZiAoY2hlY2tGb3JVc2VyRGVmaW5lZENhdGVnb3JpZXNDaGVja2VkKQotICAgICAgewotICAgICAgICBIYXNodGFibGUgY2F0ZWdvcnlNb2RlbHMgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICAgIGdhdGhlcldTVXNlckRlZmluZWRDYXRlZ29yaWVzKHByb3h5LGNhdGVnb3J5TW9kZWxzKTsKLSAgICAgICAgaWYgKGNhdGVnb3J5TW9kZWxzLnNpemUoKSA+IDApCi0gICAgICAgICAgcmVnaXN0cnlFbGVtZW50LnNldFVzZXJEZWZpbmVkQ2F0ZWdvcmllcyhjYXRlZ29yeU1vZGVscyk7Ci0gICAgICB9Ci0gICAgICByZWdpc3RyeUVsZW1lbnQuc2V0Q2F0ZWdvcmllc0RpcmVjdG9yeShjYXRlZ29yaWVzRGlyZWN0b3J5KTsKLSAgICAgIHVkZGlNYWluRWxlbWVudC5jb25uZWN0KHJlZ2lzdHJ5RWxlbWVudCxVRERJTW9kZWxDb25zdGFudHMuUkVMX1JFR0lTVFJJRVMsTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gdWRkaU1haW5Ob2RlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgICBpbnQgbmV3UmVnaXN0cnlOb2RlSWQgPSB1ZGRpTWFpbk5vZGUuZ2V0Q2hpbGROb2RlKHJlZ2lzdHJ5RWxlbWVudCkuZ2V0Tm9kZUlkKCk7Ci0gICAgICAvLyBTZWxlY3QgdGhlIG5ldyByZWdpc3RyeSBub2RlIGFuZCBhZGQgdGhlIHNlbGVjdCBhY3Rpb24gdG8gdGhlIGhpc3RvcnkuCi0gICAgICBub2RlTWFuYWdlci5zZXRTZWxlY3RlZE5vZGVJZChuZXdSZWdpc3RyeU5vZGVJZCk7Ci0gICAgICBOb2RlIHJlZ2lzdHJ5Tm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgICAgVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIgPSByZWdpc3RyeU5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCk7Ci0gICAgICBhZGRUb0hpc3RvcnkoQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1VEREksdG9vbE1hbmFnZXIuZ2V0U2VsZWN0ZWRUb29sKCkuZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYodHJ1ZSkpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1JFR0lTVFJZX09QRU5FRCIsbmV3IFN0cmluZ1tde3JlZ2lzdHJ5TmFtZSxpbnF1aXJ5VVJMfSkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJNYWxmb3JtZWRVUkxFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIEZvcm1Ub29sIGZvcm1Ub29sID0gZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpOwotICAgICAgZm9ybVRvb2wuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuSU5RVUlSWV9VUkwpOwotICAgIH0KLSAgICAvKgotICAgIGNhdGNoIChGb3JtSW5wdXRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgICovCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9QdWJsaXNoQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9QdWJsaXNoQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMjliNjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUHVibGlzaEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkJ1c2luZXNzRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUHVibGlzaGVkSXRlbXNFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlSW50ZXJmYWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5NdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5SZWdpc3RyeU5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJ1c2luZXNzLkJ1c2luZXNzRW50aXR5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuc2VydmljZS5CdXNpbmVzc1NlcnZpY2U7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgUHVibGlzaEFjdGlvbiBleHRlbmRzIFVERElQcm9wZXJ0aWVzRm9ybUFjdGlvbgotewotICBwcm90ZWN0ZWQgU3RyaW5nIHN1YlF1ZXJ5S2V5XzsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gc3ViUXVlcnlJbml0aWF0ZWRfOwotICBwcm90ZWN0ZWQgU3RyaW5nIG5ld1N1YlF1ZXJ5XzsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNTdWJRdWVyeUdldF87Ci0gIHByb3RlY3RlZCBTdHJpbmcgbmV3U3ViUXVlcnlJdGVtXzsKLSAgcHJvdGVjdGVkIFJlZ2lzdHJ5Tm9kZSByZWdOb2RlXzsKLQotICBwdWJsaWMgUHVibGlzaEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBzdWJRdWVyeUtleV8gPSBudWxsOwotICAgIGlzU3ViUXVlcnlHZXRfID0gZmFsc2U7Ci0gICAgc3ViUXVlcnlJbml0aWF0ZWRfID0gZmFsc2U7Ci0gICAgcmVnTm9kZV8gPSBnZXRSZWdpc3RyeU5vZGUoKTsKLSAgfQotCi0gIHByb3RlY3RlZCBhYnN0cmFjdCBib29sZWFuIHByb2Nlc3NPdGhlcnMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyLEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gcHJvY2Vzc1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIC8vIFNldHVwIGZvciBNdWx0aXBhcnRGb3JtRGF0YVBhcnNlclRyYW5zZm9ybWVyCi0gICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5NVUxUSVBBUlRfRk9STV9EQVRBX1BBUlNFUiwgcGFyc2VyKTsKLSAKLSAgICBuZXdTdWJRdWVyeV8gPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX0lOSVRJQVRFRCk7Ci0gICAgU3RyaW5nIGlzU3ViUXVlcnlHZXRTdHJpbmcgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfR0VUKTsKLSAgICBuZXdTdWJRdWVyeUl0ZW1fID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLk5FV19TVUJRVUVSWV9RVUVSWV9JVEVNKTsKLSAgICBzdWJRdWVyeUtleV8gPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLQotICAgIC8vIFZhbGlkYXRlIHRoZSBkYXRhLgotICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIEZvcm1Ub29sIGZvcm1Ub29sID0gZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpOwotICAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5Xyk7Ci0gICAgZm9ybVRvb2xQSS5jbGVhckVycm9ycygpOwotCi0gICAgaWYgKG5ld1N1YlF1ZXJ5XyAhPSBudWxsICYmIG5ld1N1YlF1ZXJ5Xy5sZW5ndGgoKSA+IDApCi0gICAgICBzdWJRdWVyeUluaXRpYXRlZF8gPSB0cnVlOwotICAgIGVsc2UKLSAgICAgIHN1YlF1ZXJ5SW5pdGlhdGVkXyA9IGZhbHNlOwotCi0gICAgaWYgKGlzU3ViUXVlcnlHZXRTdHJpbmcgIT0gbnVsbCkKLSAgICAgIGlzU3ViUXVlcnlHZXRfID0gQm9vbGVhbi52YWx1ZU9mKGlzU3ViUXVlcnlHZXRTdHJpbmcpLmJvb2xlYW5WYWx1ZSgpOwotCi0gICAgaWYgKCFwcm9jZXNzT3RoZXJzKHBhcnNlcixmb3JtVG9vbFBJKSAmJiAhc3ViUXVlcnlJbml0aWF0ZWRfKQotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLQotICAgIGZvciAoaW50IGk9MDtpPHJlbW92ZWRQcm9wZXJ0aWVzXy5zaXplKCk7aSsrKQotICAgICAgZm9ybVRvb2xQSS5yZW1vdmVQcm9wZXJ0eShyZW1vdmVkUHJvcGVydGllc18uZWxlbWVudEF0KGkpKTsKLSAgICBmb3JtVG9vbFBJLnVwZGF0ZVByb3BlcnR5VGFibGUocHJvcGVydHlUYWJsZV8pOwotCi0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgIFN0cmluZyB1c2VySWQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotCi0gICAgYm9vbGVhbiB2YWxpZGF0ZUF1dGhlbnRpY2F0aW9uID0gIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpOwotCi0gICAgaWYgKHB1Ymxpc2hVUkwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICAgIGZvcm1Ub29sLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwscHVibGlzaFVSTCk7Ci0gICAgfQotCi0gICAgaWYgKCFzdWJRdWVyeUluaXRpYXRlZF8gJiYgdmFsaWRhdGVBdXRoZW50aWNhdGlvbiAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHB1Ymxpc2hVUkwpKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbC5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfUFVCTElTSF9VUkwiKSk7Ci0gICAgfQotCi0gICAgaWYgKHVzZXJJZCAhPSBudWxsKQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySWQpOwotICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQsdXNlcklkKTsKLSAgICB9Ci0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiB2YWxpZGF0ZUF1dGhlbnRpY2F0aW9uICYmICFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcodXNlcklkKSkKLSAgICB7Ci0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgZm9ybVRvb2wuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9VU0VSSUQiKSk7Ci0gICAgfQotCi0gICAgaWYgKHBhc3N3b3JkICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQscGFzc3dvcmQpOwotICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCxwYXNzd29yZCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgYWRkUHVibGlzaGVkSXRlbU5vZGUoQnVzaW5lc3NFbnRpdHkgYmUsUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQpCi0gIHsKLSAgICBCdXNpbmVzc0VsZW1lbnQgYmVFbGVtZW50ID0gbmV3IEJ1c2luZXNzRWxlbWVudChiZSxyZWdFbGVtZW50LmdldE1vZGVsKCkpOwotICAgIFB1Ymxpc2hlZEl0ZW1zRWxlbWVudCBwdWJsaXNoZWRCdXNpbmVzc2VzRWxlbWVudCA9IHJlZ0VsZW1lbnQuZ2V0UHVibGlzaGVkQnVzaW5lc3Nlc0VsZW1lbnQoKTsKLSAgICBFbnVtZXJhdGlvbiBlID0gcHVibGlzaGVkQnVzaW5lc3Nlc0VsZW1lbnQuZ2V0SXRlbXMoKTsKLSAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICBCdXNpbmVzc0VsZW1lbnQgZWxlbWVudCA9IChCdXNpbmVzc0VsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgQnVzaW5lc3NFbnRpdHkgZWxlbWVudEJFID0gZWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpOwotICAgICAgaWYgKGVsZW1lbnRCRS5nZXRCdXNpbmVzc0tleSgpLmVxdWFscyhiZS5nZXRCdXNpbmVzc0tleSgpKSkKLSAgICAgIHsKLSAgICAgICAgZWxlbWVudC5kaXNjb25uZWN0QWxsKCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICBjb25uZWN0RWxlbWVudHMocHVibGlzaGVkQnVzaW5lc3Nlc0VsZW1lbnQsYmVFbGVtZW50KTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGFkZFB1Ymxpc2hlZEl0ZW1Ob2RlKEJ1c2luZXNzU2VydmljZSBicyxSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCkKLSAgewotICAgIFNlcnZpY2VFbGVtZW50IHNFbGVtZW50ID0gbmV3IFNlcnZpY2VFbGVtZW50KGJzLHJlZ0VsZW1lbnQuZ2V0TW9kZWwoKSk7Ci0gICAgUHVibGlzaGVkSXRlbXNFbGVtZW50IHB1Ymxpc2hlZFNlcnZpY2VzRWxlbWVudCA9IHJlZ0VsZW1lbnQuZ2V0UHVibGlzaGVkU2VydmljZXNFbGVtZW50KCk7Ci0gICAgRW51bWVyYXRpb24gZSA9IHB1Ymxpc2hlZFNlcnZpY2VzRWxlbWVudC5nZXRJdGVtcygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFNlcnZpY2VFbGVtZW50IGVsZW1lbnQgPSAoU2VydmljZUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgQnVzaW5lc3NTZXJ2aWNlIGVsZW1lbnRCUyA9IGVsZW1lbnQuZ2V0QnVzaW5lc3NTZXJ2aWNlKCk7Ci0gICAgICBpZiAoZWxlbWVudEJTLmdldFNlcnZpY2VLZXkoKS5lcXVhbHMoYnMuZ2V0U2VydmljZUtleSgpKSkKLSAgICAgIHsKLSAgICAgICAgZWxlbWVudC5kaXNjb25uZWN0QWxsKCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICBjb25uZWN0RWxlbWVudHMocHVibGlzaGVkU2VydmljZXNFbGVtZW50LHNFbGVtZW50KTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGFkZFB1Ymxpc2hlZEl0ZW1Ob2RlKFRNb2RlbCB0TW9kZWwsUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQpCi0gIHsKLSAgICBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBzaUVsZW1lbnQgPSBuZXcgU2VydmljZUludGVyZmFjZUVsZW1lbnQodE1vZGVsLHJlZ0VsZW1lbnQuZ2V0TW9kZWwoKSk7Ci0gICAgUHVibGlzaGVkSXRlbXNFbGVtZW50IHB1Ymxpc2hlZFNlcnZpY2VJbnRlcmZhY2VzRWxlbWVudCA9IHJlZ0VsZW1lbnQuZ2V0UHVibGlzaGVkU2VydmljZUludGVyZmFjZXNFbGVtZW50KCk7Ci0gICAgRW51bWVyYXRpb24gZSA9IHB1Ymxpc2hlZFNlcnZpY2VJbnRlcmZhY2VzRWxlbWVudC5nZXRJdGVtcygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IGVsZW1lbnQgPSAoU2VydmljZUludGVyZmFjZUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgVE1vZGVsIGVsZW1lbnRUTW9kZWwgPSBlbGVtZW50LmdldFRNb2RlbCgpOwotICAgICAgaWYgKHRNb2RlbC5nZXRUTW9kZWxLZXkoKS5lcXVhbHMoZWxlbWVudFRNb2RlbC5nZXRUTW9kZWxLZXkoKSkpCi0gICAgICB7Ci0gICAgICAgIGVsZW1lbnQuZGlzY29ubmVjdEFsbCgpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgY29ubmVjdEVsZW1lbnRzKHB1Ymxpc2hlZFNlcnZpY2VJbnRlcmZhY2VzRWxlbWVudCxzaUVsZW1lbnQpOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNvbm5lY3RFbGVtZW50cyhQdWJsaXNoZWRJdGVtc0VsZW1lbnQgcHVibGlzaGVkSXRlbXNFbGVtZW50LFRyZWVFbGVtZW50IGl0ZW1FbGVtZW50KQotICB7Ci0gICAgcHVibGlzaGVkSXRlbXNFbGVtZW50LmNvbm5lY3QoaXRlbUVsZW1lbnQsVURESU1vZGVsQ29uc3RhbnRzLlJFTF9QVUJMSVNIRURfSVRFTVMsTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICBpbnQgbmV3Tm9kZUlkID0gcmVnTm9kZV8uZ2V0Q2hpbGROb2RlKHB1Ymxpc2hlZEl0ZW1zRWxlbWVudCkuZ2V0Q2hpbGROb2RlKGl0ZW1FbGVtZW50KS5nZXROb2RlSWQoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHJlZ05vZGVfLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgbm9kZU1hbmFnZXIuc2V0U2VsZWN0ZWROb2RlSWQobmV3Tm9kZUlkKTsKLSAgICBOb2RlIG5ld05vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUb29sTWFuYWdlciB0b29sTWFuYWdlciA9IG5ld05vZGUuZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICBUb29sIHNlbGVjdGVkVG9vbCA9IHRvb2xNYW5hZ2VyLmdldFNlbGVjdGVkVG9vbCgpOwotICAgIGFkZFRvSGlzdG9yeShBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfVURESSxzZWxlY3RlZFRvb2wuZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYodHJ1ZSkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNTdWJRdWVyeUluaXRpYXRlZCgpCi0gIHsKLSAgICByZXR1cm4gc3ViUXVlcnlJbml0aWF0ZWRfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNTdWJRdWVyeUdldCgpCi0gIHsKLSAgICByZXR1cm4gaXNTdWJRdWVyeUdldF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN1YlF1ZXJ5S2V5KCkKLSAgewotICAgIHJldHVybiBzdWJRdWVyeUtleV87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldE5ld1N1YlF1ZXJ5KCkKLSAgewotICAgIHJldHVybiBuZXdTdWJRdWVyeV87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldE5ld1N1YlF1ZXJ5SXRlbSgpCi0gIHsKLSAgICByZXR1cm4gbmV3U3ViUXVlcnlJdGVtXzsKLSAgfQotICAKLSAgcHVibGljIElUcmFuc2Zvcm1lcltdIGdldFRyYW5zZm9ybWVycygpCi0gIHsKLSAgICBJVHJhbnNmb3JtZXJbXSBwYXJlbnRUcmFuc2Zvcm1lcnMgPSBzdXBlci5nZXRUcmFuc2Zvcm1lcnMoKTsKLSAgICBJVHJhbnNmb3JtZXJbXSB0cmFuc2Zvcm1lcnMgPSBuZXcgSVRyYW5zZm9ybWVyW3BhcmVudFRyYW5zZm9ybWVycy5sZW5ndGggKyAxXTsKLSAgICBTeXN0ZW0uYXJyYXljb3B5KHBhcmVudFRyYW5zZm9ybWVycywgMCwgdHJhbnNmb3JtZXJzLCAwLCBwYXJlbnRUcmFuc2Zvcm1lcnMubGVuZ3RoKTsKLSAgICB0cmFuc2Zvcm1lcnNbdHJhbnNmb3JtZXJzLmxlbmd0aCAtIDFdID0gbmV3IE11bHRpcGFydEZvcm1EYXRhUGFyc2VyVHJhbnNmb3JtZXIoY29udHJvbGxlcl8pOwotICAgIHJldHVybiB0cmFuc2Zvcm1lcnM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZnJlc2hVRERJTm9kZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVmcmVzaFVERElOb2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMWFkYTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVmcmVzaFVERElOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLk1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLkFkZFJlZ2lzdHJ5VG9VRERJUGVyc3BlY3RpdmVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuQnVzaW5lc3NFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlSW50ZXJmYWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5CdXNpbmVzc05vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuUHVibGlzaGVkSXRlbXNOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlF1ZXJ5Tm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5RdWVyeVBhcmVudE5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuUmVnaXN0cnlOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlNlcnZpY2VJbnRlcmZhY2VOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlNlcnZpY2VOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJ1c2luZXNzLkJ1c2luZXNzRW50aXR5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuc2VydmljZS5CdXNpbmVzc1NlcnZpY2U7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotCi1wdWJsaWMgY2xhc3MgUmVmcmVzaFVERElOb2RlQWN0aW9uIGV4dGVuZHMgVURESU5vZGVBY3Rpb24KLXsKLSAgcHJpdmF0ZSBWZWN0b3Igc3RhbGVOb2Rlc187Ci0gIHB1YmxpYyBSZWZyZXNoVURESU5vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsU3RyaW5nLnZhbHVlT2YoY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlSWQoKSkpOwotICAgIHN0YWxlTm9kZXNfID0gbmV3IFZlY3RvcigpOwotICB9Ci0KLSAgLy8gdWRkaS9hY3Rpb25zL1JlZnJlc2hVRERJTm9kZUFjdGlvbkpTUC5qc3A/bm9kZUlkPS4uLgotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSWQpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoInVkZGkvYWN0aW9ucy9SZWZyZXNoVURESU5vZGVBY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpLmFwcGVuZCgnPScpLmFwcGVuZChub2RlSWQpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiB2ZXJpZnlOb2RlRGF0YSgpCi0gIHsKLSAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgTm9kZSBub2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlkKTsKLSAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEJ1c2luZXNzTm9kZSkKLSAgICAgIHJldHVybiByZWZyZXNoQnVzaW5lc3NFbGVtZW50KChCdXNpbmVzc05vZGUpbm9kZSk7Ci0gICAgZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIFNlcnZpY2VOb2RlKQotICAgICAgcmV0dXJuIHJlZnJlc2hTZXJ2aWNlRWxlbWVudCgoU2VydmljZU5vZGUpbm9kZSk7Ci0gICAgZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIFNlcnZpY2VJbnRlcmZhY2VOb2RlKQotICAgICAgcmV0dXJuIHJlZnJlc2hTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCgoU2VydmljZUludGVyZmFjZU5vZGUpbm9kZSk7Ci0gICAgZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIFF1ZXJ5Tm9kZSkKLSAgICB7Ci0gICAgICAvLyBOb3RoaW5nIHRvIHZlcmlmeQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UgaWYgKG5vZGUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBSZWdpc3RyeU5vZGUKLSAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgUmVnaXN0cnlOb2RlKQotICAgICAgICByZWZyZXNoUmVnaXN0cnlFbGVtZW50KChSZWdpc3RyeU5vZGUpbm9kZSk7Ci0gICAgICAgIAotICAgICAgLy8gRm9sZGVyTm9kZXMKLSAgICAgIFZlY3RvciBjaGlsZE5vZGVzID0gbm9kZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICBWZWN0b3IgcmVmcmVzaEFjdGlvbnMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxjaGlsZE5vZGVzLnNpemUoKTtpKyspCi0gICAgICB7Ci0gICAgICAgIE5vZGUgY2hpbGROb2RlID0gKE5vZGUpY2hpbGROb2Rlcy5lbGVtZW50QXQoaSk7Ci0gICAgICAgIFJlZnJlc2hVRERJTm9kZUFjdGlvbiBhY3Rpb24gPSBuZXcgUmVmcmVzaFVERElOb2RlQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAgICAgYWN0aW9uLnNldFN0YWxlTm9kZXMoc3RhbGVOb2Rlc18pOwotICAgICAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgIFN0cmluZyBjaGlsZE5vZGVJZFN0cmluZyA9IFN0cmluZy52YWx1ZU9mKGNoaWxkTm9kZS5nZXROb2RlSWQoKSk7Ci0gICAgICAgIHByb3BlcnR5VGFibGUucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsY2hpbGROb2RlSWRTdHJpbmcpOwotICAgICAgICBpZiAoIWFjdGlvbi52ZXJpZnlOb2RlRGF0YSgpKQotICAgICAgICAgIHN0YWxlTm9kZXNfLmFkZEVsZW1lbnQoY2hpbGROb2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHJlZnJlc2hBY3Rpb25zLmFkZEVsZW1lbnQoYWN0aW9uKTsKLSAgICAgIH0KLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLkxBVEVTVF9PQkpFQ1QscmVmcmVzaEFjdGlvbnMpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIAotICBwcml2YXRlIGZpbmFsIHZvaWQgcmVmcmVzaFJlZ2lzdHJ5RWxlbWVudChSZWdpc3RyeU5vZGUgcmVnTm9kZSkKLSAgewotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgSGFzaHRhYmxlIHVzZXJEZWZpbmVkQ2F0ZWdvcmllcyA9IG51bGw7Ci0gICAgaWYgKHJlZ0VsZW1lbnQuZ2V0Q2hlY2tGb3JVc2VyRGVmaW5lZENhdGVnb3JpZXMoKSkKLSAgICB7Ci0gICAgICB1c2VyRGVmaW5lZENhdGVnb3JpZXMgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICBPcGVuUmVnaXN0cnlBY3Rpb24gb3BlblJlZ0FjdGlvbiA9IG5ldyBPcGVuUmVnaXN0cnlBY3Rpb24oY29udHJvbGxlcl8pOwotICAgICAgb3BlblJlZ0FjdGlvbi5nYXRoZXJXU1VzZXJEZWZpbmVkQ2F0ZWdvcmllcyhyZWdFbGVtZW50LmdldFByb3h5KCksdXNlckRlZmluZWRDYXRlZ29yaWVzKTsKLSAgICAgIGlmICghdXNlckRlZmluZWRDYXRlZ29yaWVzLmtleXMoKS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHsKLSAgICAgICAgdXNlckRlZmluZWRDYXRlZ29yaWVzID0gbnVsbDsKLSAgICAgICAgcmVnTm9kZS5zZXRJbWFnZVBhdGgoUmVnaXN0cnlOb2RlLklNQUdFX1BBVEhfU1RBTkRBUkQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBTdHJpbmcgY2F0ZWdvcmllc0RpcmVjdG9yeSA9IHJlZ0VsZW1lbnQuZ2V0Q2F0ZWdvcmllc0RpcmVjdG9yeSgpOwotICAgICAgICBBZGRSZWdpc3RyeVRvVURESVBlcnNwZWN0aXZlQWN0aW9uIGFkZEFjdGlvbiA9IG5ldyBBZGRSZWdpc3RyeVRvVURESVBlcnNwZWN0aXZlQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAgICAgaWYgKGNhdGVnb3JpZXNEaXJlY3RvcnkgIT0gbnVsbCkKLSAgICAgICAgICBhZGRBY3Rpb24ubGlua0NhdGVnb3J5TW9kZWxzV2l0aFNhdmVkRGF0YSh1c2VyRGVmaW5lZENhdGVnb3JpZXMuZWxlbWVudHMoKSxjYXRlZ29yaWVzRGlyZWN0b3J5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGFkZEFjdGlvbi5saW5rQ2F0ZWdvcnlNb2RlbHNXaXRoU2F2ZWREYXRhKHJlZ0VsZW1lbnQuZ2V0TmFtZSgpLHVzZXJEZWZpbmVkQ2F0ZWdvcmllcy5lbGVtZW50cygpKTsKLSAgICAgICAgcmVnTm9kZS5zZXRJbWFnZVBhdGgoUmVnaXN0cnlOb2RlLklNQUdFX1BBVEhfV0lUSF9VU0VSX0RFRklORURfQ0FURUdPUklFUyk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJlZ0VsZW1lbnQuc2V0VXNlckRlZmluZWRDYXRlZ29yaWVzKHVzZXJEZWZpbmVkQ2F0ZWdvcmllcyk7Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gcmVmcmVzaEJ1c2luZXNzRWxlbWVudChCdXNpbmVzc05vZGUgYnVzTm9kZSkKLSAgewotICAgIEJ1c2luZXNzRWxlbWVudCBidXNFbGVtZW50ID0gKEJ1c2luZXNzRWxlbWVudClidXNOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIHV1aWRLZXkgPSBidXNFbGVtZW50LmdldEJ1c2luZXNzRW50aXR5KCkuZ2V0QnVzaW5lc3NLZXkoKTsKLSAgICBSZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uIHZlcmlmeUFjdGlvbiA9IG5ldyBSZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IHZlcmlmeUFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSx1dWlkS2V5KTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlJFRlJFU0hfTk9ERSxidXNOb2RlKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX09WRVJSSURFX0FERF9RVUVSWV9OT0RFLEJvb2xlYW4uVFJVRSk7Ci0gICAgYm9vbGVhbiB2ZXJpZnlSZXN1bHQgPSB2ZXJpZnlBY3Rpb24ucnVuKCk7Ci0gICAgaWYgKHZlcmlmeVJlc3VsdCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLkxBVEVTVF9PQkpFQ1QsbmV3IEJ1c2luZXNzRWxlbWVudCgoQnVzaW5lc3NFbnRpdHkpcHJvcGVydHlUYWJsZS5nZXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNUKSxidXNFbGVtZW50LmdldE1vZGVsKCkpKTsKLSAgICByZXR1cm4gdmVyaWZ5UmVzdWx0OwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHJlZnJlc2hTZXJ2aWNlRWxlbWVudChTZXJ2aWNlTm9kZSBzZXJ2aWNlTm9kZSkKLSAgewotICAgIFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFNlcnZpY2VFbGVtZW50KXNlcnZpY2VOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIHV1aWRLZXkgPSBzZXJ2aWNlRWxlbWVudC5nZXRCdXNpbmVzc1NlcnZpY2UoKS5nZXRTZXJ2aWNlS2V5KCk7Ci0gICAgUmVnRmluZFNlcnZpY2VVVUlEQWN0aW9uIHZlcmlmeUFjdGlvbiA9IG5ldyBSZWdGaW5kU2VydmljZVVVSURBY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gdmVyaWZ5QWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9LRVksdXVpZEtleSk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5SRUZSRVNIX05PREUsc2VydmljZU5vZGUpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfT1ZFUlJJREVfQUREX1FVRVJZX05PREUsQm9vbGVhbi5UUlVFKTsKLSAgICBib29sZWFuIHZlcmlmeVJlc3VsdCA9IHZlcmlmeUFjdGlvbi5ydW4oKTsKLSAgICBpZiAodmVyaWZ5UmVzdWx0KQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCxuZXcgU2VydmljZUVsZW1lbnQoKEJ1c2luZXNzU2VydmljZSlwcm9wZXJ0eVRhYmxlLmdldChVRERJQWN0aW9uSW5wdXRzLkxBVEVTVF9PQkpFQ1QpLHNlcnZpY2VFbGVtZW50LmdldE1vZGVsKCkpKTsKLSAgICByZXR1cm4gdmVyaWZ5UmVzdWx0OwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHJlZnJlc2hTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudChTZXJ2aWNlSW50ZXJmYWNlTm9kZSBzaU5vZGUpCi0gIHsKLSAgICBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBzaUVsZW1lbnQgPSAoU2VydmljZUludGVyZmFjZUVsZW1lbnQpc2lOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIHV1aWRLZXkgPSBzaUVsZW1lbnQuZ2V0VE1vZGVsKCkuZ2V0VE1vZGVsS2V5KCk7Ci0gICAgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VVVUlEQWN0aW9uIHZlcmlmeUFjdGlvbiA9IG5ldyBSZWdGaW5kU2VydmljZUludGVyZmFjZVVVSURBY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gdmVyaWZ5QWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZLHV1aWRLZXkpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUkVGUkVTSF9OT0RFLHNpTm9kZSk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9PVkVSUklERV9BRERfUVVFUllfTk9ERSxCb29sZWFuLlRSVUUpOwotICAgIGJvb2xlYW4gdmVyaWZ5UmVzdWx0ID0gdmVyaWZ5QWN0aW9uLnJ1bigpOwotICAgIGlmICh2ZXJpZnlSZXN1bHQpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNULG5ldyBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCgoVE1vZGVsKXByb3BlcnR5VGFibGUuZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCksc2lFbGVtZW50LmdldE1vZGVsKCkpKTsKLSAgICByZXR1cm4gdmVyaWZ5UmVzdWx0OwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgY29ubmVjdEVsZW1lbnRzKE5vZGUgcGFyZW50Tm9kZSxUcmVlRWxlbWVudCBuZXdFbGVtZW50KQotICB7Ci0gICAgVHJlZUVsZW1lbnQgcGFyZW50RWxlbWVudCA9IHBhcmVudE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBTdHJpbmcgcmVsID0gbnVsbDsKLSAgICBpZiAocGFyZW50Tm9kZSBpbnN0YW5jZW9mIFB1Ymxpc2hlZEl0ZW1zTm9kZSkKLSAgICAgIHJlbCA9IFVERElNb2RlbENvbnN0YW50cy5SRUxfUFVCTElTSEVEX0lURU1TOwotICAgIGVsc2UgaWYgKHBhcmVudE5vZGUgaW5zdGFuY2VvZiBRdWVyeU5vZGUpCi0gICAgICByZWwgPSBVRERJTW9kZWxDb25zdGFudHMuUkVMX1FVRVJZX1JFU1VMVFM7Ci0gICAgZWxzZSBpZiAocGFyZW50Tm9kZSBpbnN0YW5jZW9mIFF1ZXJ5UGFyZW50Tm9kZSkKLSAgICAgIHJlbCA9IFVERElNb2RlbENvbnN0YW50cy5SRUxfUVVFUklFUzsKLSAgICBwYXJlbnRFbGVtZW50LmNvbm5lY3QobmV3RWxlbWVudCxyZWwsTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICBOb2RlIG5ld05vZGUgPSBwYXJlbnROb2RlLmdldENoaWxkTm9kZShuZXdFbGVtZW50KTsKLSAgICBpbnQgbmV3Tm9kZUlkID0gbmV3Tm9kZS5nZXROb2RlSWQoKTsKLSAgICBub2RlTWFuYWdlcl8uc2V0U2VsZWN0ZWROb2RlSWQobmV3Tm9kZUlkKTsKLSAgICBUb29sTWFuYWdlciB0b29sTWFuYWdlciA9IG5ld05vZGUuZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICBUb29sIHNlbGVjdGVkVG9vbCA9IHRvb2xNYW5hZ2VyLmdldFNlbGVjdGVkVG9vbCgpOwotICAgIGFkZFRvSGlzdG9yeShBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfVURESSxzZWxlY3RlZFRvb2wuZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYodHJ1ZSkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgaWYgKCFpc1N0YWxlTm9kZShub2RlSWQpKQotICAgIHsKLSAgICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJZCk7Ci0gICAgICBPYmplY3QgbGF0ZXN0T2JqZWN0ID0gcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCk7Ci0gICAgICBpZiAobGF0ZXN0T2JqZWN0ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGlmIChsYXRlc3RPYmplY3QgaW5zdGFuY2VvZiBWZWN0b3IpCi0gICAgICAgIHsKLSAgICAgICAgICBWZWN0b3IgcmVmcmVzaEFjdGlvbnMgPSAoVmVjdG9yKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLkxBVEVTVF9PQkpFQ1QpOwotICAgICAgICAgIGZvciAoaW50IGk9MDtpPHJlZnJlc2hBY3Rpb25zLnNpemUoKTtpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgUmVmcmVzaFVERElOb2RlQWN0aW9uIHJlZnJlc2hBY3Rpb24gPSAoUmVmcmVzaFVERElOb2RlQWN0aW9uKXJlZnJlc2hBY3Rpb25zLmVsZW1lbnRBdChpKTsKLSAgICAgICAgICAgIHJlZnJlc2hBY3Rpb24ucnVuKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIG5vZGVNYW5hZ2VyXy5zZXRTZWxlY3RlZE5vZGVJZChub2RlSWQpOyAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgVHJlZUVsZW1lbnQgb2xkRWxlbWVudCA9IG5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgICBvbGRFbGVtZW50LmRpc2Nvbm5lY3RBbGwoKTsKLSAgICAgICAgICBjb25uZWN0RWxlbWVudHMobm9kZS5nZXRQYXJlbnQoKSwoVHJlZUVsZW1lbnQpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIFF1ZXJ5Tm9kZXMKLSAgICAgICAgUXVlcnlOb2RlIHF1ZXJ5Tm9kZSA9IChRdWVyeU5vZGUpbm9kZTsKLSAgICAgICAgRmluZEFjdGlvbiBmaW5kQWN0aW9uID0gcXVlcnlOb2RlLmdldEZpbmRBY3Rpb24oKTsKLSAgICAgICAgZmluZEFjdGlvbi5zZXRSZWZyZXNoQWN0aW9uKHRydWUpOwotICAgICAgICBpZiAoIWZpbmRBY3Rpb24ucnVuKCkpCi0gICAgICAgICAgcXVlcnlOb2RlLnJlbW92ZUNoaWxkTm9kZXModHJ1ZSk7Ci0gICAgICAgIGZpbmRBY3Rpb24uc2V0UmVmcmVzaEFjdGlvbihmYWxzZSk7Ci0gICAgICB9Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fTk9ERV9SRUZSRVNIRUQiLG5vZGUuZ2V0Tm9kZU5hbWUoKSkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFZlY3RvciBnZXRTdGFsZU5vZGVzKCkKLSAgewotICAgIHJldHVybiBzdGFsZU5vZGVzXzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0U3RhbGVOb2RlcyhWZWN0b3Igc3RhbGVOb2RlcykKLSAgewotICAgIHN0YWxlTm9kZXNfID0gc3RhbGVOb2RlczsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVmcmVzaFVERElOb2Rlc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVmcmVzaFVERElOb2Rlc0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTNjYWRjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZnJlc2hVRERJTm9kZXNBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotCi1wdWJsaWMgY2xhc3MgUmVmcmVzaFVERElOb2Rlc0FjdGlvbiBleHRlbmRzIFVERElQcm9wZXJ0aWVzRm9ybUFjdGlvbgotewotICBwcml2YXRlIFZlY3RvciBzdGFsZU5vZGVzXzsKLQotICBwdWJsaWMgUmVmcmVzaFVERElOb2Rlc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBzdGFsZU5vZGVzXyA9IG5ldyBWZWN0b3IoKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmdbXSBzZWxlY3RlZE5vZGVJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIC8vIFRoZSBjbGllbnQgSmF2YXNjcmlwdCBlbmZvcmNlcyB0aGUgcnVsZSB0aGF0IGF0IGxlYXN0IG9uZSBpdGVtIHdhcyBzZWxlY3RlZCBiZWZvcmUgdGhlIGZvcm0gY2FuIGJlIHN1Ym1pdHRlZC4KLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5TRUxFQ1RFRF9OT0RFSURTLHNlbGVjdGVkTm9kZUlkcyk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgaW50IGNvbGxlY3Rvck5vZGVJZCA9IGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpLmdldE5vZGVJZCgpOwotICAgIFN0cmluZ1tdIHNlbGVjdGVkTm9kZUlkcyA9IChTdHJpbmdbXSlwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5TRUxFQ1RFRF9OT0RFSURTKTsKLSAgICBSZWZyZXNoVURESU5vZGVBY3Rpb24gYWN0aW9uID0gbmV3IFJlZnJlc2hVRERJTm9kZUFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgSGFzaHRhYmxlIHByb3BlcnR5VGFibGUgPSBhY3Rpb24uZ2V0UHJvcGVydHlUYWJsZSgpOwotICAgIGZvciAoaW50IGk9MDtpPHNlbGVjdGVkTm9kZUlkcy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGUucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsc2VsZWN0ZWROb2RlSWRzW2ldKTsKLSAgICAgIGlmIChhY3Rpb24udmVyaWZ5Tm9kZURhdGEoKSkKLSAgICAgICAgYWN0aW9uLnJ1bigpOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludChzZWxlY3RlZE5vZGVJZHNbaV0pOwotICAgICAgICBzdGFsZU5vZGVzXy5hZGRFbGVtZW50KG5hdmlnYXRvck1hbmFnZXIuZ2V0Tm9kZShub2RlSWQpKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT0RFX0RBVEFfVkFMSURBVElPTl9GQUlMRUQiLG5hdmlnYXRvck1hbmFnZXIuZ2V0Tm9kZShub2RlSWQpLmdldE5vZGVOYW1lKCkpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgbmF2aWdhdG9yTWFuYWdlci5zZXRTZWxlY3RlZE5vZGVJZChjb2xsZWN0b3JOb2RlSWQpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFZlY3RvciBnZXRTdGFsZU5vZGVzKCkKLSAgewotICAgIHJldHVybiBzdGFsZU5vZGVzXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzVVVJREFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzVVVJREFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTMxNzI4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ0ZpbmRCdXNpbmVzc1VVSURBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Gb3JtSW5wdXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5RdWVyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci0KLXB1YmxpYyBjbGFzcyBSZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uIGV4dGVuZHMgRmluZEFjdGlvbgotewotICBwdWJsaWMgUmVnRmluZEJ1c2luZXNzVVVJREFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTKSk7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQlVTSU5FU1NFUyxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1VVSUQpKTsgICAgCi0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzT3RoZXJzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcixGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgdXVpZEtleSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0tFWSk7Ci0KLSAgICAvLyBWYWxpZGF0ZSB0aGUgZGF0YS4KLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICAKLSAgICBpZiAodXVpZEtleSAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVksdXVpZEtleSk7Ci0gICAgICAKLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHV1aWRLZXkpKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfQlVTSU5FU1NfS0VZKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9VVUlEX0tFWSIpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIGJvb2xlYW4gc2hvdWxkQWRkUXVlcnlOb2RlID0gKHByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX09WRVJSSURFX0FERF9RVUVSWV9OT0RFKSA9PSBudWxsKTsgICAgICAKLSAgICAgIFN0cmluZyB1dWlkS2V5ID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSk7Ci0gICAgICAKLSAgICAgIC8vIFRoZSBhY3Rpb24gY2FuIGJlIHJ1biB1bmRlciB0aGUgY29udGV4dCBvZiBlaXRoZXIgYSByZWdpc3RyeSBvciBhIHF1ZXJ5IG5vZGUgb3IgZXZlbiBVRERJTWFpbk5vZGUuCi0gICAgICBpZiAocmVnTm9kZV8gPT0gbnVsbCkKLSAgICAgICAgcmVnTm9kZV8gPSBnZXRSZWdpc3RyeU5vZGUoKE5vZGUpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUkVGUkVTSF9OT0RFKSk7Ci0gICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIFVERElQcm94eSBwcm94eSA9IHJlZ0VsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICAgIEJ1c2luZXNzRW50aXR5W10gYmVMaXN0ID0gbmV3IEJ1c2luZXNzRW50aXR5WzFdOwotICAgICAgVmVjdG9yIGJlVmVjdG9yID0gcHJveHkuZ2V0X2J1c2luZXNzRGV0YWlsKHV1aWRLZXkpLmdldEJ1c2luZXNzRW50aXR5VmVjdG9yKCk7Ci0gICAgICBpZiAoYmVWZWN0b3Iuc2l6ZSgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgYmVWZWN0b3IudG9BcnJheShiZUxpc3QpOwotICAgICAgICBpZiAoc2hvdWxkQWRkUXVlcnlOb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIHF1ZXJ5TmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSk7Ci0gICAgICAgICAgcXVlcnlFbGVtZW50XyA9IG5ldyBRdWVyeUVsZW1lbnQoYmVMaXN0LHF1ZXJ5TmFtZSxyZWdFbGVtZW50LmdldE1vZGVsKCkpOwotICAgICAgICAgIGFkZFF1ZXJ5Tm9kZSgpOwotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19CVVNJTkVTU0VTX0ZPVU5EIixTdHJpbmcudmFsdWVPZihiZUxpc3QubGVuZ3RoKSkpOwotICAgICAgICB9Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLkxBVEVTVF9PQkpFQ1QsYmVMaXN0WzBdKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHRocm93IG5ldyBGb3JtSW5wdXRFeGNlcHRpb24odWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT19CVVNJTkVTU0VTX0ZPVU5EIikpOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVHJhbnNwb3J0RXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEZvcm1JbnB1dEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kQnVzaW5lc3Nlc0FkdmFuY2VkQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kQnVzaW5lc3Nlc0FkdmFuY2VkQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxYTU3NTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzZXNBZHZhbmNlZEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Gb3JtSW5wdXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlF1ZXJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLk5hbWU7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5CdXNpbmVzc0luZm87Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5CdXNpbmVzc0luZm9zOwotaW1wb3J0IG9yZy51ZGRpNGoudHJhbnNwb3J0LlRyYW5zcG9ydEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuQ2F0ZWdvcnlCYWc7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkRpc2NvdmVyeVVSTDsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuRGlzY292ZXJ5VVJMczsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuRmluZFF1YWxpZmllcjsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuRmluZFF1YWxpZmllcnM7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLklkZW50aWZpZXJCYWc7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLktleWVkUmVmZXJlbmNlOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5UTW9kZWxCYWc7Ci0KLXB1YmxpYyBjbGFzcyBSZWdGaW5kQnVzaW5lc3Nlc0FkdmFuY2VkQWN0aW9uIGV4dGVuZHMgRmluZEFjdGlvbgotewotICBwdWJsaWMgUmVnRmluZEJ1c2luZXNzZXNBZHZhbmNlZEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTKSk7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQlVTSU5FU1NFUyxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0FEVkFOQ0VEKSk7ICAgIAotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9TRUFSQ0hfU0VULFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfTUFYX1NFQVJDSF9TRVQpKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19NQVhfUkVTVUxUUyxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX01BWF9SRVNVTFRTKSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzT3RoZXJzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcixGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgb3duZWRDaGVja2VkID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX09XTkVEKTsKLSAgICBTdHJpbmdbXSBsYW5ndWFnZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRV9MQU5HVUFHRSk7Ci0gICAgU3RyaW5nW10gbmFtZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRSk7Ci0gICAgU3RyaW5nW10gaWRUeXBlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX1RZUEUpOwotICAgIFN0cmluZ1tdIGlkS2V5TmFtZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfSURFTlRJRklFUl9LRVlfTkFNRSk7Ci0gICAgU3RyaW5nW10gaWRLZXlWYWx1ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfSURFTlRJRklFUl9LRVlfVkFMVUUpOwotICAgIFN0cmluZ1tdIGNhdFR5cGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX1RZUEUpOwotICAgIFN0cmluZ1tdIGNhdEtleU5hbWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9OQU1FKTsKLSAgICBTdHJpbmdbXSBjYXRLZXlWYWx1ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfS0VZX1ZBTFVFKTsKLSAgICBTdHJpbmdbXSBzaU5vZGVJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuTk9ERUlEX1NFUlZJQ0VfSU5URVJGQUNFKTsKLSAgICBTdHJpbmdbXSBkaXNjb3ZlcnlVUkxWYWx1ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfRElTQ09WRVJZVVJMKTsKLSAgICBTdHJpbmdbXSBmaW5kUXVhbGlmaWVyVmFsdWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0ZJTkRRVUFMSUZJRVIpOwotICAgIFN0cmluZyBtYXhTZWFyY2hTZXQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTUFYX1NFQVJDSF9TRVQpOwotICAgIFN0cmluZyBtYXhSZXN1bHRzID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX01BWF9SRVNVTFRTKTsKLQotICAgIC8vIFZhbGlkYXRlIHRoZSBkYXRhLgotICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpOwotICAgIGdldFJlZ2lzdHJ5Tm9kZSgpOwotICAgIHJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0KLSAgICBpZiAob3duZWRDaGVja2VkICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19PV05FRCxvd25lZENoZWNrZWQpOwotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfT1dORUQpOwotCi0gICAgaWYgKGxhbmd1YWdlcyAhPSBudWxsICYmIG5hbWVzICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIG5hbWVWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxuYW1lcy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBOYW1lIHVkZGk0ak5hbWU7Ci0gICAgICAgIGlmIChsYW5ndWFnZXNbaV0ubGVuZ3RoKCkgPiAwKQotICAgICAgICAgIHVkZGk0ak5hbWUgPSBuZXcgTmFtZShuYW1lc1tpXSxsYW5ndWFnZXNbaV0pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgdWRkaTRqTmFtZSA9IG5ldyBOYW1lKG5hbWVzW2ldKTsKLSAgICAgICAgbmFtZVZlY3Rvci5hZGRFbGVtZW50KHVkZGk0ak5hbWUpOwotICAgICAgfQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTkFNRVMsbmFtZVZlY3Rvcik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTkFNRVMpOwotCi0gICAgaWYgKGlkVHlwZXMgIT0gbnVsbCAmJiBpZEtleU5hbWVzICE9IG51bGwgJiYgaWRLZXlWYWx1ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJZGVudGlmaWVyQmFnIGlkQmFnID0gbmV3IElkZW50aWZpZXJCYWcoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGlkS2V5TmFtZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSBuZXcgS2V5ZWRSZWZlcmVuY2UoaWRLZXlOYW1lc1tpXSxpZEtleVZhbHVlc1tpXSxpZFR5cGVzW2ldKTsKLSAgICAgICAgaWRCYWcuYWRkKGtyKTsKLSAgICAgIH0KLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0lERU5USUZJRVJTLGlkQmFnKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19JREVOVElGSUVSUyk7Ci0KLSAgICBpZiAoY2F0VHlwZXMgIT0gbnVsbCAmJiBjYXRLZXlOYW1lcyAhPSBudWxsICYmIGNhdEtleVZhbHVlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIENhdGVnb3J5QmFnIGNhdEJhZyA9IG5ldyBDYXRlZ29yeUJhZygpOwotICAgICAgZm9yIChpbnQgaT0wO2k8Y2F0VHlwZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSBuZXcgS2V5ZWRSZWZlcmVuY2UoY2F0S2V5TmFtZXNbaV0sY2F0S2V5VmFsdWVzW2ldLGNhdFR5cGVzW2ldKTsKLSAgICAgICAgY2F0QmFnLmFkZChrcik7Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19DQVRFR09SSUVTLGNhdEJhZyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfQ0FURUdPUklFUyk7Ci0KLSAgICBpZiAoc2lOb2RlSWRzICE9IG51bGwpCi0gICAgewotICAgICAgLy8gQWx0aG91Z2ggd2UgYWxyZWFkeSBoYXZlIHRoZSAic3VibWl0dGVkIiBkYXRhLCBkZWxldGlvbnMgb2NjdXIgb24gdGhlIGNsaWVudCBzaWRlIGFuZCB0aHVzIHRoZSBuZWVkIHRvIHRyYWNrIHRoaXMgdXNpbmcgaGlkZGVuIGZvcm0gZWxlbWVudHMuCi0gICAgICBWZWN0b3IgYnVzU2VydmljZUludGVyZmFjZXMgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19TRVJWSUNFX0lOVEVSRkFDRVMpOwotICAgICAgaWYgKGJ1c1NlcnZpY2VJbnRlcmZhY2VzID09IG51bGwpCi0gICAgICAgIGJ1c1NlcnZpY2VJbnRlcmZhY2VzID0gbmV3IFZlY3RvcigpOwotICAgICAgZWxzZQotICAgICAgICBidXNTZXJ2aWNlSW50ZXJmYWNlcy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgVmVjdG9yIGJ1c1NlcnZpY2VJbnRlcmZhY2VzQ29weSA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX1NFUlZJQ0VfSU5URVJGQUNFU19DT1BZKTsKLSAgICAgIFZlY3RvciB0TW9kZWxLZXlTdHJpbmdWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBIYXNodGFibGUgcmVzdWx0SGFzaCA9IG5ldyBIYXNodGFibGUoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPHNpTm9kZUlkcy5sZW5ndGg7aSsrKQotICAgICAgICByZXN1bHRIYXNoLnB1dChzaU5vZGVJZHNbaV0sQm9vbGVhbi5UUlVFKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGJ1c1NlcnZpY2VJbnRlcmZhY2VzQ29weS5zaXplKCk7aSsrKQotICAgICAgewotICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClidXNTZXJ2aWNlSW50ZXJmYWNlc0NvcHkuZWxlbWVudEF0KGkpOwotICAgICAgICBpZiAocmVzdWx0SGFzaC5nZXQoU3RyaW5nLnZhbHVlT2YobGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Tm9kZUlkKCkpKSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgYnVzU2VydmljZUludGVyZmFjZXMuYWRkRWxlbWVudChsaXN0RWxlbWVudCk7Ci0gICAgICAgICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgICAgdE1vZGVsS2V5U3RyaW5nVmVjdG9yLmFkZEVsZW1lbnQodE1vZGVsLmdldFRNb2RlbEtleSgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgVE1vZGVsQmFnIHRNb2RlbEJhZyA9IG5ldyBUTW9kZWxCYWcodE1vZGVsS2V5U3RyaW5nVmVjdG9yKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX1NFUlZJQ0VfSU5URVJGQUNFUyxidXNTZXJ2aWNlSW50ZXJmYWNlcyk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19UTU9ERUxCQUcsdE1vZGVsQmFnKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfU0VSVklDRV9JTlRFUkZBQ0VTKTsKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfVE1PREVMQkFHKTsKLSAgICB9Ci0KLSAgICBpZiAoZGlzY292ZXJ5VVJMVmFsdWVzICE9IG51bGwpCi0gICAgewotICAgICAgRGlzY292ZXJ5VVJMcyBkaXNjb3ZlcnlVUkxzID0gbmV3IERpc2NvdmVyeVVSTHMoKTsKLSAgICAgIFZlY3RvciBkaXNjb3ZlcnlVUkxWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxkaXNjb3ZlcnlVUkxWYWx1ZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgRGlzY292ZXJ5VVJMIGRpc2NvdmVyeVVSTCA9IG5ldyBEaXNjb3ZlcnlVUkwoZGlzY292ZXJ5VVJMVmFsdWVzW2ldLCIiKTsKLSAgICAgICAgZGlzY292ZXJ5VVJMVmVjdG9yLmFkZEVsZW1lbnQoZGlzY292ZXJ5VVJMKTsKLSAgICAgIH0KLSAgICAgIGRpc2NvdmVyeVVSTHMuc2V0RGlzY292ZXJ5VVJMVmVjdG9yKGRpc2NvdmVyeVVSTFZlY3Rvcik7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ESVNDT1ZFUllVUkxTLGRpc2NvdmVyeVVSTHMpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RJU0NPVkVSWVVSTFMpOwotCi0gICAgaWYgKGZpbmRRdWFsaWZpZXJWYWx1ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBGaW5kUXVhbGlmaWVycyBmaW5kUXVhbGlmaWVycyA9IG5ldyBGaW5kUXVhbGlmaWVycygpOwotICAgICAgVmVjdG9yIGZpbmRRdWFsaWZpZXJWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxmaW5kUXVhbGlmaWVyVmFsdWVzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIEZpbmRRdWFsaWZpZXIgZmluZFF1YWxpZmllciA9IG5ldyBGaW5kUXVhbGlmaWVyKGZpbmRRdWFsaWZpZXJWYWx1ZXNbaV0pOwotICAgICAgICBmaW5kUXVhbGlmaWVyVmVjdG9yLmFkZEVsZW1lbnQoZmluZFF1YWxpZmllcik7Ci0gICAgICB9Ci0gICAgICBmaW5kUXVhbGlmaWVycy5zZXRGaW5kUXVhbGlmaWVyVmVjdG9yKGZpbmRRdWFsaWZpZXJWZWN0b3IpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRklORFFVQUxJRklFUlMsZmluZFF1YWxpZmllcnMpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0ZJTkRRVUFMSUZJRVJTKTsKLQotICAgIGlmIChtYXhTZWFyY2hTZXQgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9TRUFSQ0hfU0VULG1heFNlYXJjaFNldCk7Ci0gICAgaWYgKCFzdWJRdWVyeUluaXRpYXRlZF8gJiYgIVZhbGlkYXRvci52YWxpZGF0ZUludGVnZXIobWF4U2VhcmNoU2V0KSkKLSAgICB7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9TRUFSQ0hfU0VUKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9NQVhfU0VBUkNIX1NFVCIpKTsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKG1heFJlc3VsdHMgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9SRVNVTFRTLG1heFJlc3VsdHMpOwotICAgIGlmICghc3ViUXVlcnlJbml0aWF0ZWRfICYmICFWYWxpZGF0b3IudmFsaWRhdGVJbnRlZ2VyKG1heFJlc3VsdHMpKQotICAgIHsKLSAgICAgIGZvcm1Ub29sUEkuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTUFYX1JFU1VMVFMpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX01BWF9SRVNVTFRTIikpOwotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHJpdmF0ZSBEaXNjb3ZlcnlVUkxzIGR1cERpc2NvdmVyeVVSTHMoRGlzY292ZXJ5VVJMcyBkaXNjb3ZlcnlVUkxzLCBTdHJpbmcgdXNlVHlwZSwgU3RyaW5nIGR1cFVzZVR5cGUpIHsKLSAgICBpZiAoZGlzY292ZXJ5VVJMcyA9PSBudWxsKQotICAgICAgcmV0dXJuIGRpc2NvdmVyeVVSTHM7Ci0gICAgVmVjdG9yIGRpc2NvdmVyeVVSTFZlY3RvciA9IGRpc2NvdmVyeVVSTHMuZ2V0RGlzY292ZXJ5VVJMVmVjdG9yKCk7Ci0gICAgaWYgKGRpc2NvdmVyeVVSTFZlY3RvciA9PSBudWxsKQotICAgICAgcmV0dXJuIGRpc2NvdmVyeVVSTHM7Ci0gICAgVmVjdG9yIG5ld0Rpc2NvdmVyeVVSTFZlY3RvciA9IG5ldyBWZWN0b3IoZGlzY292ZXJ5VVJMVmVjdG9yKTsKLSAgICBFbnVtZXJhdGlvbiBlID0gZGlzY292ZXJ5VVJMVmVjdG9yLmVsZW1lbnRzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgIERpc2NvdmVyeVVSTCBkaXNjb3ZlcnlVUkwgPSAoRGlzY292ZXJ5VVJMKWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIGlmIChkaXNjb3ZlcnlVUkwuZ2V0VXNlVHlwZSgpLmVxdWFscyh1c2VUeXBlKSkgewotICAgICAgICBuZXdEaXNjb3ZlcnlVUkxWZWN0b3IuYWRkKG5ldyBEaXNjb3ZlcnlVUkwoZGlzY292ZXJ5VVJMLmdldFRleHQoKSwgZHVwVXNlVHlwZSkpOwotICAgICAgfQotICAgIH0KLSAgICBEaXNjb3ZlcnlVUkxzIG5ld0Rpc2NvdmVyeVVSTHMgPSBuZXcgRGlzY292ZXJ5VVJMcygpOwotICAgIG5ld0Rpc2NvdmVyeVVSTHMuc2V0RGlzY292ZXJ5VVJMVmVjdG9yKG5ld0Rpc2NvdmVyeVVSTFZlY3Rvcik7Ci0gICAgcmV0dXJuIG5ld0Rpc2NvdmVyeVVSTHM7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgYm9vbGVhbiBzaG91bGRBZGRRdWVyeU5vZGUgPSAocHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfT1ZFUlJJREVfQUREX1FVRVJZX05PREUpID09IG51bGwpOyAgICAgIAotICAgICAgRmluZFF1YWxpZmllcnMgZmluZFF1YWxpZmllcnMgPSAoRmluZFF1YWxpZmllcnMpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRklORFFVQUxJRklFUlMpOwotICAgICAgVmVjdG9yIG5hbWVWZWN0b3IgPSAoVmVjdG9yKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX05BTUVTKTsKLSAgICAgIERpc2NvdmVyeVVSTHMgZGlzY292ZXJ5VVJMcyA9IChEaXNjb3ZlcnlVUkxzKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RJU0NPVkVSWVVSTFMpOwotICAgICAgSWRlbnRpZmllckJhZyBpZGVudGlmaWVyQmFnID0gKElkZW50aWZpZXJCYWcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfSURFTlRJRklFUlMpOwotICAgICAgQ2F0ZWdvcnlCYWcgY2F0ZWdvcnlCYWcgPSAoQ2F0ZWdvcnlCYWcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfQ0FURUdPUklFUyk7Ci0gICAgICBUTW9kZWxCYWcgdE1vZGVsQmFnID0gKFRNb2RlbEJhZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19UTU9ERUxCQUcpOwotICAgICAgYm9vbGVhbiBvd25lZCA9IChwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19PV05FRCkgIT0gbnVsbCk7Ci0gICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICAgU3RyaW5nIHVzZXJJZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotICAgICAgaW50IG1heFNlYXJjaFNldCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19NQVhfU0VBUkNIX1NFVCkpOwotICAgICAgaW50IG1heFJlc3VsdHMgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTUFYX1JFU1VMVFMpKTsKLQotICAgICAgLy8gVGhlIGFjdGlvbiBjYW4gYmUgcnVuIHVuZGVyIHRoZSBjb250ZXh0IG9mIGVpdGhlciBhIHJlZ2lzdHJ5IG9yIGEgcXVlcnkgbm9kZS4KLSAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgaWYgKG93bmVkICYmICFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgICAgICAgcmVnRWxlbWVudC5wZXJmb3JtTG9naW4ocHVibGlzaFVSTCx1c2VySWQscGFzc3dvcmQpOwotCi0gICAgICBVRERJUHJveHkgcHJveHkgPSByZWdFbGVtZW50LmdldFByb3h5KCk7Ci0KLSAgICAgIEJ1c2luZXNzSW5mb3MgYnVzSW5mb3MgPSBudWxsOwotICAgICAgaWYgKG93bmVkKQotICAgICAgICBidXNJbmZvcyA9IHByb3h5LmdldF9yZWdpc3RlcmVkSW5mbyhyZWdFbGVtZW50LmdldEF1dGhJbmZvU3RyaW5nKCkpLmdldEJ1c2luZXNzSW5mb3MoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgYnVzSW5mb3MgPSBwcm94eS5maW5kX2J1c2luZXNzKG5hbWVWZWN0b3IsIGR1cERpc2NvdmVyeVVSTHMoZGlzY292ZXJ5VVJMcywiIixVRERJQWN0aW9uSW5wdXRzLkRJU0NPVkVSWV9VUkxfVFlQRSksIGlkZW50aWZpZXJCYWcsIGNhdGVnb3J5QmFnLCB0TW9kZWxCYWcsIGZpbmRRdWFsaWZpZXJzLCBtYXhTZWFyY2hTZXQpLmdldEJ1c2luZXNzSW5mb3MoKTsKLSAgICAgIAotICAgICAgaW50IGZpbmFsTnVtYmVyT2ZCdXNpbmVzc0VudGl0aWVzID0gTWF0aC5taW4obWF4UmVzdWx0cywgYnVzSW5mb3Muc2l6ZSgpKTsKLSAgICAgIFZlY3RvciBidXNpbmVzc0tleXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbmFsTnVtYmVyT2ZCdXNpbmVzc0VudGl0aWVzOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEJ1c2luZXNzSW5mbyBidXNJbmZvID0gKEJ1c2luZXNzSW5mbylidXNJbmZvcy5nZXQoaSk7Ci0gICAgICAgIGJ1c2luZXNzS2V5cy5hZGRFbGVtZW50KGJ1c0luZm8uZ2V0QnVzaW5lc3NLZXkoKSk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChmaW5hbE51bWJlck9mQnVzaW5lc3NFbnRpdGllcyA+IDApCi0gICAgICB7Ci0gICAgICAgIGlmIChzaG91bGRBZGRRdWVyeU5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICBWZWN0b3IgYmVWZWN0b3IgPSBwcm94eS5nZXRfYnVzaW5lc3NEZXRhaWwoYnVzaW5lc3NLZXlzKS5nZXRCdXNpbmVzc0VudGl0eVZlY3RvcigpOwotICAgICAgICAgIEJ1c2luZXNzRW50aXR5W10gYmVMaXN0ID0gbmV3IEJ1c2luZXNzRW50aXR5W2JlVmVjdG9yLnNpemUoKV07Ci0gICAgICAgICAgYmVWZWN0b3IudG9BcnJheShiZUxpc3QpOwotICAgICAgICAgIFN0cmluZyBxdWVyeU5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUpOwotICAgICAgICAgIHF1ZXJ5RWxlbWVudF8gPSBuZXcgUXVlcnlFbGVtZW50KGJlTGlzdCxxdWVyeU5hbWUscmVnRWxlbWVudC5nZXRNb2RlbCgpKTsKLSAgICAgICAgICBhZGRRdWVyeU5vZGUoKTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fQlVTSU5FU1NFU19GT1VORCIsU3RyaW5nLnZhbHVlT2YoYmVMaXN0Lmxlbmd0aCkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgdGhyb3cgbmV3IEZvcm1JbnB1dEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX0JVU0lORVNTRVNfRk9VTkQiKSk7Ci0gICAgfQotICAgIGNhdGNoIChUcmFuc3BvcnRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJUcmFuc3BvcnRFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFVERElFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJVRERJRXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBjYXRjaCAoRm9ybUlucHV0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiTWFsZm9ybWVkVVJMRXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzZXNTaW1wbGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ0ZpbmRCdXNpbmVzc2VzU2ltcGxlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMzA0Y2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzZXNTaW1wbGVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Gb3JtSW5wdXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5RdWVyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLk5hbWU7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLkJ1c2luZXNzSW5mbzsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLkJ1c2luZXNzSW5mb3M7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgUmVnRmluZEJ1c2luZXNzZXNTaW1wbGVBY3Rpb24gZXh0ZW5kcyBGaW5kQWN0aW9uCi17Ci0gIHB1YmxpYyBSZWdGaW5kQnVzaW5lc3Nlc1NpbXBsZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTKSk7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQlVTSU5FU1NFUyxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NJTVBMRSkpOyAgICAKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIHByb2Nlc3NPdGhlcnMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyLEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBuYW1lID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FKTsKLQotICAgIC8vIFZhbGlkYXRlIHRoZSBkYXRhLgotICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FLG5hbWUpOwotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBUaGlzIHNob3VsZG4ndCBvY2N1ci4KLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBib29sZWFuIHNob3VsZEFkZFF1ZXJ5Tm9kZSA9IChwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9PVkVSUklERV9BRERfUVVFUllfTk9ERSkgPT0gbnVsbCk7Ci0gICAgICBTdHJpbmcgbmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX0JVU0lORVNTX05BTUUpOwotICAgICAgVmVjdG9yIG5hbWVWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBuYW1lVmVjdG9yLmFkZEVsZW1lbnQobmV3IE5hbWUobmFtZSkpOwotCi0gICAgICAvLyBUaGUgYWN0aW9uIGNhbiBiZSBydW4gdW5kZXIgdGhlIGNvbnRleHQgb2YgZWl0aGVyIGEgcmVnaXN0cnkgb3IgYSBxdWVyeSBub2RlLgotICAgICAgZ2V0U2VsZWN0ZWROYXZpZ2F0b3JOb2RlKCk7Ci0gICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIFVERElQcm94eSBwcm94eSA9IHJlZ0VsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICAgIAotICAgICAgQnVzaW5lc3NJbmZvcyBidXNJbmZvcyA9IHByb3h5LmZpbmRfYnVzaW5lc3MobmFtZVZlY3RvciwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgVURESUFjdGlvbklucHV0cy5RVUVSWV9NQVhfU0VBUkNIX1NFVCkuZ2V0QnVzaW5lc3NJbmZvcygpOwotICAgICAgaW50IGZpbmFsTnVtYmVyT2ZCdXNpbmVzc0VudGl0aWVzID0gTWF0aC5taW4oVURESUFjdGlvbklucHV0cy5RVUVSWV9NQVhfUkVTVUxUUywgYnVzSW5mb3Muc2l6ZSgpKTsKLSAgICAgIFZlY3RvciBidXNpbmVzc0tleXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbmFsTnVtYmVyT2ZCdXNpbmVzc0VudGl0aWVzOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEJ1c2luZXNzSW5mbyBidXNJbmZvID0gYnVzSW5mb3MuZ2V0KGkpOwotICAgICAgICBidXNpbmVzc0tleXMuYWRkRWxlbWVudChidXNJbmZvLmdldEJ1c2luZXNzS2V5KCkpOwotICAgICAgfQotCi0gICAgICBpZiAoZmluYWxOdW1iZXJPZkJ1c2luZXNzRW50aXRpZXMgPiAwKQotICAgICAgewotICAgICAgICBpZiAoc2hvdWxkQWRkUXVlcnlOb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgVmVjdG9yIGJlVmVjdG9yID0gcHJveHkuZ2V0X2J1c2luZXNzRGV0YWlsKGJ1c2luZXNzS2V5cykuZ2V0QnVzaW5lc3NFbnRpdHlWZWN0b3IoKTsKLSAgICAgICAgICBCdXNpbmVzc0VudGl0eVtdIGJlTGlzdCA9IG5ldyBCdXNpbmVzc0VudGl0eVtiZVZlY3Rvci5zaXplKCldOwotICAgICAgICAgIGJlVmVjdG9yLnRvQXJyYXkoYmVMaXN0KTsKLSAgICAgICAgICBTdHJpbmcgcXVlcnlOYW1lID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FKTsKLSAgICAgICAgICBxdWVyeUVsZW1lbnRfID0gbmV3IFF1ZXJ5RWxlbWVudChiZUxpc3QscXVlcnlOYW1lLHJlZ0VsZW1lbnQuZ2V0TW9kZWwoKSk7Ci0gICAgICAgICAgYWRkUXVlcnlOb2RlKCk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX0JVU0lORVNTRVNfRk9VTkQiLFN0cmluZy52YWx1ZU9mKGJlTGlzdC5sZW5ndGgpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHRocm93IG5ldyBGb3JtSW5wdXRFeGNlcHRpb24odWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT19CVVNJTkVTU0VTX0ZPVU5EIikpOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVHJhbnNwb3J0RXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEZvcm1JbnB1dEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZUludGVyZmFjZVVVSURBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlVVVJREFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjViZDQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlVVVJREFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkZvcm1JbnB1dEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlF1ZXJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5UTW9kZWxEZXRhaWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VVVUlEQWN0aW9uIGV4dGVuZHMgRmluZEFjdGlvbgotewotICBwdWJsaWMgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VVVUlEQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0sU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUykpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VfSU5URVJGQUNFUyxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1VVSUQpKTsgICAgCi0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzT3RoZXJzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcixGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgdXVpZEtleSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0tFWSk7Ci0gICAgLy8gVmFsaWRhdGUgdGhlIGRhdGEuCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0KLSAgICBpZiAodXVpZEtleSAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9TRVJWSUNFX0lOVEVSRkFDRV9LRVksdXVpZEtleSk7Ci0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHV1aWRLZXkpKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9VVUlEX0tFWSIpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIGJvb2xlYW4gc2hvdWxkQWRkUXVlcnlOb2RlID0gKHByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX09WRVJSSURFX0FERF9RVUVSWV9OT0RFKSA9PSBudWxsKTsgICAgICAKLSAgICAgIFN0cmluZyB1dWlkS2V5ID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfSU5URVJGQUNFX0tFWSk7Ci0KLSAgICAgIC8vIFRoZSBhY3Rpb24gY2FuIGJlIHJ1biB1bmRlciB0aGUgY29udGV4dCBvZiBlaXRoZXIgYSByZWdpc3RyeSBvciBhIHF1ZXJ5IG5vZGUgb3IgZXZlbiBVRERJTWFpbk5vZGUuCi0gICAgICBpZiAocmVnTm9kZV8gPT0gbnVsbCkKLSAgICAgICAgcmVnTm9kZV8gPSBnZXRSZWdpc3RyeU5vZGUoKE5vZGUpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUkVGUkVTSF9OT0RFKSk7Ci0gICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIFVERElQcm94eSBwcm94eSA9IHJlZ0VsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICAgIFRNb2RlbERldGFpbCB0TW9kZWxEZXRhaWwgPSBwcm94eS5nZXRfdE1vZGVsRGV0YWlsKHV1aWRLZXkpOwotICAgICAgVmVjdG9yIHRNb2RlbFZlY3RvciA9IHRNb2RlbERldGFpbC5nZXRUTW9kZWxWZWN0b3IoKTsKLSAgICAgIGlmICh0TW9kZWxWZWN0b3Iuc2l6ZSgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpdE1vZGVsVmVjdG9yLmVsZW1lbnRBdCgwKTsKLSAgICAgICAgaWYgKHNob3VsZEFkZFF1ZXJ5Tm9kZSkKLSAgICAgICAgewotICAgICAgICAgIFRNb2RlbFtdIHRNb2RlbEFycmF5ID0gbmV3IFRNb2RlbFsxXTsKLSAgICAgICAgICB0TW9kZWxBcnJheVswXSA9IHRNb2RlbDsKLSAgICAgICAgICBTdHJpbmcgcXVlcnlOYW1lID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FKTsKLSAgICAgICAgICBxdWVyeUVsZW1lbnRfID0gbmV3IFF1ZXJ5RWxlbWVudCh0TW9kZWxBcnJheSxxdWVyeU5hbWUscmVnRWxlbWVudC5nZXRNb2RlbCgpKTsKLSAgICAgICAgICBhZGRRdWVyeU5vZGUoKTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fU0VSVklDRV9JTlRFUkZBQ0VTX0ZPVU5EIixTdHJpbmcudmFsdWVPZih0TW9kZWxBcnJheS5sZW5ndGgpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCx0TW9kZWwpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgdGhyb3cgbmV3IEZvcm1JbnB1dEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX1NFUlZJQ0VfSU5URVJGQUNFU19GT1VORCIpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFVERElFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0Q29udHJvbGxlcigpLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUudG9TdHJpbmcoKSk7Ci0gICAgfQotICAgIGNhdGNoIChUcmFuc3BvcnRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBoYW5kbGVVbmV4cGVjdGVkRXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZSxtZXNzYWdlUXVldWUsIlRyYW5zcG9ydEV4Y2VwdGlvbiIsZSk7Ci0gICAgfQotICAgIGNhdGNoIChGb3JtSW5wdXRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MWZkODQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkZvcm1JbnB1dEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUXVlcnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcudWRkaTRqLlVERElFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai5jbGllbnQuVURESVByb3h5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYmluZGluZy5CaW5kaW5nVGVtcGxhdGU7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5iaW5kaW5nLkJpbmRpbmdUZW1wbGF0ZXM7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5iaW5kaW5nLlRNb2RlbEluc3RhbmNlRGV0YWlsczsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJpbmRpbmcuVE1vZGVsSW5zdGFuY2VJbmZvOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuc2VydmljZS5CdXNpbmVzc1NlcnZpY2U7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuRGlzcG9zaXRpb25SZXBvcnQ7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5SZWdpc3RlcmVkSW5mbzsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlJlc3VsdDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlRNb2RlbERldGFpbDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlRNb2RlbEluZm87Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5UTW9kZWxJbmZvczsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlRNb2RlbExpc3Q7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5DYXRlZ29yeUJhZzsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuRmluZFF1YWxpZmllcjsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuRmluZFF1YWxpZmllcnM7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLklkZW50aWZpZXJCYWc7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLktleWVkUmVmZXJlbmNlOwotCi1wdWJsaWMgY2xhc3MgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRBY3Rpb24gZXh0ZW5kcyBGaW5kQWN0aW9uCi17Ci0gIHB1YmxpYyBSZWdGaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMpKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMsU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9BRFZBTkNFRCkpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX01BWF9TRUFSQ0hfU0VULFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfTUFYX1NFQVJDSF9TRVQpKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9NQVhfUkVTVUxUUyxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX01BWF9SRVNVTFRTKSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzT3RoZXJzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcixGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgdXNlU2VydmljZUNoZWNrZWQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfVVNFX1NFUlZJQ0UpOwotICAgIFN0cmluZ1tdIHNlcnZpY2VOb2RlSWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLk5PREVJRF9TRVJWSUNFKTsKLSAgICBTdHJpbmcgb3duZWRDaGVja2VkID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX09XTkVEKTsKLSAgICBTdHJpbmcgbmFtZSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FKTsKLSAgICBTdHJpbmdbXSBpZFR5cGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0lERU5USUZJRVJfVFlQRSk7Ci0gICAgU3RyaW5nW10gaWRLZXlOYW1lcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX0tFWV9OQU1FKTsKLSAgICBTdHJpbmdbXSBpZEtleVZhbHVlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX0tFWV9WQUxVRSk7Ci0gICAgU3RyaW5nW10gY2F0VHlwZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfVFlQRSk7Ci0gICAgU3RyaW5nW10gY2F0S2V5TmFtZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfS0VZX05BTUUpOwotICAgIFN0cmluZ1tdIGNhdEtleVZhbHVlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9LRVlfVkFMVUUpOwotICAgIFN0cmluZ1tdIGZpbmRRdWFsaWZpZXJWYWx1ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfRklORFFVQUxJRklFUik7Ci0gICAgU3RyaW5nIG1heFNlYXJjaFNldCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9NQVhfU0VBUkNIX1NFVCk7Ci0gICAgU3RyaW5nIG1heFJlc3VsdHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTUFYX1JFU1VMVFMpOwotCi0gICAgLy8gVmFsaWRhdGUgdGhlIGRhdGEuCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLQotICAgIGlmICh1c2VTZXJ2aWNlQ2hlY2tlZCAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfVVNFX1NFUlZJQ0UsdXNlU2VydmljZUNoZWNrZWQpOwotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfVVNFX1NFUlZJQ0UpOwotICAgIAotICAgIGlmIChzZXJ2aWNlTm9kZUlkcyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIEFsdGhvdWdoIHdlIGFscmVhZHkgaGF2ZSB0aGUgInN1Ym1pdHRlZCIgZGF0YSwgZGVsZXRpb25zIG9jY3VyIG9uIHRoZSBjbGllbnQgc2lkZSBhbmQgdGh1cyB0aGUgbmVlZCB0byB0cmFjayB0aGlzIHVzaW5nIGhpZGRlbiBmb3JtIGVsZW1lbnRzLgotICAgICAgVmVjdG9yIHNpU2VydmljZSA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0UpOwotICAgICAgaWYgKHNpU2VydmljZSA9PSBudWxsKQotICAgICAgICBzaVNlcnZpY2UgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBlbHNlCi0gICAgICAgIHNpU2VydmljZS5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgVmVjdG9yIHNpU2VydmljZUNvcHkgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9TRVJWSUNFX0NPUFkpOwotICAgICAgLy8gVGhlIGJyb3dzZXIgd2lsbCBlbmZvcmNlIHRoZSBydWxlIG9mIGhhdmluZyBvbmx5IG9uZSBzZXJ2aWNlIGluIHRoaXMgbGlzdC4KLSAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KXNpU2VydmljZUNvcHkuZWxlbWVudEF0KDApOwotICAgICAgc2lTZXJ2aWNlLmFkZEVsZW1lbnQobGlzdEVsZW1lbnQpOwotICAgICAgQnVzaW5lc3NTZXJ2aWNlIGJzID0gKEJ1c2luZXNzU2VydmljZSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0Usc2lTZXJ2aWNlKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0JVU0lORVNTX1NFUlZJQ0UsYnMpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9TRVJWSUNFKTsKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfQlVTSU5FU1NfU0VSVklDRSk7Ci0gICAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiB1c2VTZXJ2aWNlQ2hlY2tlZCAhPSBudWxsKQotICAgICAgewotICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0UpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfU0VSVklDRSIpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKG93bmVkQ2hlY2tlZCAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfT1dORUQsb3duZWRDaGVja2VkKTsKLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX09XTkVEKTsKLQotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FLG5hbWUpOwotCi0gICAgaWYgKGlkVHlwZXMgIT0gbnVsbCAmJiBpZEtleU5hbWVzICE9IG51bGwgJiYgaWRLZXlWYWx1ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJZGVudGlmaWVyQmFnIGlkQmFnID0gbmV3IElkZW50aWZpZXJCYWcoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGlkS2V5TmFtZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSBuZXcgS2V5ZWRSZWZlcmVuY2UoaWRLZXlOYW1lc1tpXSxpZEtleVZhbHVlc1tpXSxpZFR5cGVzW2ldKTsKLSAgICAgICAgaWRCYWcuYWRkKGtyKTsKLSAgICAgIH0KLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0lERU5USUZJRVJTLGlkQmFnKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9JREVOVElGSUVSUyk7Ci0KLSAgICBpZiAoY2F0VHlwZXMgIT0gbnVsbCAmJiBjYXRLZXlOYW1lcyAhPSBudWxsICYmIGNhdEtleVZhbHVlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIENhdGVnb3J5QmFnIGNhdEJhZyA9IG5ldyBDYXRlZ29yeUJhZygpOwotICAgICAgZm9yIChpbnQgaT0wO2k8Y2F0VHlwZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSBuZXcgS2V5ZWRSZWZlcmVuY2UoY2F0S2V5TmFtZXNbaV0sY2F0S2V5VmFsdWVzW2ldLGNhdFR5cGVzW2ldKTsKLSAgICAgICAgY2F0QmFnLmFkZChrcik7Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9DQVRFR09SSUVTLGNhdEJhZyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfQ0FURUdPUklFUyk7Ci0KLSAgICBpZiAoZmluZFF1YWxpZmllclZhbHVlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIEZpbmRRdWFsaWZpZXJzIGZpbmRRdWFsaWZpZXJzID0gbmV3IEZpbmRRdWFsaWZpZXJzKCk7Ci0gICAgICBWZWN0b3IgZmluZFF1YWxpZmllclZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGZpbmRRdWFsaWZpZXJWYWx1ZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgRmluZFF1YWxpZmllciBmaW5kUXVhbGlmaWVyID0gbmV3IEZpbmRRdWFsaWZpZXIoZmluZFF1YWxpZmllclZhbHVlc1tpXSk7Ci0gICAgICAgIGZpbmRRdWFsaWZpZXJWZWN0b3IuYWRkRWxlbWVudChmaW5kUXVhbGlmaWVyKTsKLSAgICAgIH0KLSAgICAgIGZpbmRRdWFsaWZpZXJzLnNldEZpbmRRdWFsaWZpZXJWZWN0b3IoZmluZFF1YWxpZmllclZlY3Rvcik7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9GSU5EUVVBTElGSUVSUyxmaW5kUXVhbGlmaWVycyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfRklORFFVQUxJRklFUlMpOwotCi0gICAgaWYgKG1heFNlYXJjaFNldCAhPSBudWxsKQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX01BWF9TRUFSQ0hfU0VULG1heFNlYXJjaFNldCk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9NQVhfU0VBUkNIX1NFVCxtYXhTZWFyY2hTZXQpOwotICAgIH0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlSW50ZWdlcihtYXhTZWFyY2hTZXQpKQotICAgIHsKLSAgICAgIGZvcm1Ub29sUEkuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTUFYX1NFQVJDSF9TRVQpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX01BWF9TRUFSQ0hfU0VUIikpOwotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobWF4UmVzdWx0cyAhPSBudWxsKQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX01BWF9SRVNVTFRTLG1heFJlc3VsdHMpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTUFYX1JFU1VMVFMsbWF4UmVzdWx0cyk7Ci0gICAgfQotICAgIGlmICghc3ViUXVlcnlJbml0aWF0ZWRfICYmICFWYWxpZGF0b3IudmFsaWRhdGVJbnRlZ2VyKG1heFJlc3VsdHMpKQotICAgIHsKLSAgICAgIGZvcm1Ub29sUEkuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTUFYX1JFU1VMVFMpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX01BWF9SRVNVTFRTIikpOwotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBvdmVycmlkZUF1dGhlbnRpY2F0aW9uVmFsaWRhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gKHByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1VTRV9TRVJWSUNFKSAhPSBudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBib29sZWFuIHNob3VsZEFkZFF1ZXJ5Tm9kZSA9IChwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9PVkVSUklERV9BRERfUVVFUllfTk9ERSkgPT0gbnVsbCk7ICAgICAgCi0gICAgICBib29sZWFuIHVzZVNlcnZpY2UgPSAocHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfVVNFX1NFUlZJQ0UpICE9IG51bGwpOwotICAgICAgQnVzaW5lc3NTZXJ2aWNlIGJzID0gKEJ1c2luZXNzU2VydmljZSlwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9CVVNJTkVTU19TRVJWSUNFKTsKLSAgICAgIFN0cmluZyBuYW1lID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FKTsKLSAgICAgIEZpbmRRdWFsaWZpZXJzIGZpbmRRdWFsaWZpZXJzID0gKEZpbmRRdWFsaWZpZXJzKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0ZJTkRRVUFMSUZJRVJTKTsKLSAgICAgIElkZW50aWZpZXJCYWcgaWRlbnRpZmllckJhZyA9IChJZGVudGlmaWVyQmFnKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0lERU5USUZJRVJTKTsKLSAgICAgIENhdGVnb3J5QmFnIGNhdGVnb3J5QmFnID0gKENhdGVnb3J5QmFnKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0NBVEVHT1JJRVMpOwotICAgICAgYm9vbGVhbiBvd25lZCA9IChwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9PV05FRCkgIT0gbnVsbCk7Ci0gICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICAgU3RyaW5nIHVzZXJJZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotICAgICAgaW50IG1heFNlYXJjaFNldCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9NQVhfU0VBUkNIX1NFVCkpOwotICAgICAgaW50IG1heFJlc3VsdHMgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTUFYX1JFU1VMVFMpKTsKLQotICAgICAgLy8gVGhlIGFjdGlvbiBjYW4gYmUgcnVuIHVuZGVyIHRoZSBjb250ZXh0IG9mIGVpdGhlciBhIHJlZ2lzdHJ5IG9yIGEgcXVlcnkgbm9kZS4KLSAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgVURESVByb3h5IHByb3h5ID0gcmVnRWxlbWVudC5nZXRQcm94eSgpOwotICAgICAgVmVjdG9yIHRNb2RlbEtleVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIAotICAgICAgaWYgKG93bmVkKQotICAgICAgewotICAgICAgICBpZiAoIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgICAgICAgIHJlZ0VsZW1lbnQucGVyZm9ybUxvZ2luKHB1Ymxpc2hVUkwsdXNlcklkLHBhc3N3b3JkKTsKLSAgICAgICAgdE1vZGVsS2V5VmVjdG9yID0gZmluZEFsbE93bmVkVE1vZGVscyhwcm94eSwgcmVnRWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpLCBtYXhSZXN1bHRzKTsKLSAgICAgIH0KLSAgICAgIGlmICh1c2VTZXJ2aWNlKQotICAgICAgewotICAgICAgICBCaW5kaW5nVGVtcGxhdGVzIGJpbmRpbmdUZW1wbGF0ZXMgPSBicy5nZXRCaW5kaW5nVGVtcGxhdGVzKCk7Ci0gICAgICAgIGJvb2xlYW4gZW5kU2VhcmNoID0gZmFsc2U7Ci0gICAgICAgIGlmIChiaW5kaW5nVGVtcGxhdGVzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBmb3IgKGludCBpPTA7aTxiaW5kaW5nVGVtcGxhdGVzLnNpemUoKTtpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgQmluZGluZ1RlbXBsYXRlIGJ0ID0gYmluZGluZ1RlbXBsYXRlcy5nZXQoaSk7Ci0gICAgICAgICAgICBUTW9kZWxJbnN0YW5jZURldGFpbHMgdE1vZGVsSW5zdGFuY2VEZXRhaWxzID0gYnQuZ2V0VE1vZGVsSW5zdGFuY2VEZXRhaWxzKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBqPTA7ajx0TW9kZWxJbnN0YW5jZURldGFpbHMuc2l6ZSgpO2orKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgVE1vZGVsSW5zdGFuY2VJbmZvIHRNb2RlbEluc3RhbmNlSW5mbyA9IHRNb2RlbEluc3RhbmNlRGV0YWlscy5nZXQoaik7Ci0gICAgICAgICAgICAgIGlmICh0TW9kZWxLZXlWZWN0b3Iuc2l6ZSgpIDwgbWF4UmVzdWx0cykKLSAgICAgICAgICAgICAgICB0TW9kZWxLZXlWZWN0b3IuYWRkRWxlbWVudCh0TW9kZWxJbnN0YW5jZUluZm8uZ2V0VE1vZGVsS2V5KCkpOwotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlbmRTZWFyY2ggPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZW5kU2VhcmNoKQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsgIAotICAgICAgICBUTW9kZWxMaXN0IHRNb2RlbExpc3QgPSBwcm94eS5maW5kX3RNb2RlbChuYW1lLGNhdGVnb3J5QmFnLGlkZW50aWZpZXJCYWcsZmluZFF1YWxpZmllcnMsbWF4U2VhcmNoU2V0KTsKLSAgICAgICAgVE1vZGVsSW5mb3MgdE1vZGVsSW5mb3MgPSB0TW9kZWxMaXN0LmdldFRNb2RlbEluZm9zKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPHRNb2RlbEluZm9zLnNpemUoKTtpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBUTW9kZWxJbmZvIHRNb2RlbEluZm8gPSB0TW9kZWxJbmZvcy5nZXQoaSk7Ci0gICAgICAgICAgaWYgKHRNb2RlbEtleVZlY3Rvci5zaXplKCkgPCBtYXhSZXN1bHRzKQotICAgICAgICAgICAgdE1vZGVsS2V5VmVjdG9yLmFkZEVsZW1lbnQodE1vZGVsSW5mby5nZXRUTW9kZWxLZXkoKSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgICAgaW50IGZpbmFsTnVtYmVyT2ZUTW9kZWxLZXlzID0gdE1vZGVsS2V5VmVjdG9yLnNpemUoKTsKLSAgICAgIGlmIChmaW5hbE51bWJlck9mVE1vZGVsS2V5cyA+IDApCi0gICAgICB7Ci0gICAgICAgIGlmIChzaG91bGRBZGRRdWVyeU5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICBWZWN0b3IgZmluYWxUTW9kZWxWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgICAgaW50IGN1cnJlbnRJbmRleCA9IDA7Ci0gICAgICAgICAgaW50IHdpbmRvd1NpemUgPSBmaW5hbE51bWJlck9mVE1vZGVsS2V5czsKLSAgICAgICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgdE1vZGVsS2V5VmVjdG9yLnNpemUoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgc3ViTGlzdFRvSW5kZXggPSBNYXRoLm1pbihjdXJyZW50SW5kZXgrd2luZG93U2l6ZSx0TW9kZWxLZXlWZWN0b3Iuc2l6ZSgpKTsKLSAgICAgICAgICAgIHRyeQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBUTW9kZWxEZXRhaWwgdE1vZGVsRGV0YWlsID0gcHJveHkuZ2V0X3RNb2RlbERldGFpbChuZXcgVmVjdG9yKHRNb2RlbEtleVZlY3Rvci5zdWJMaXN0KGN1cnJlbnRJbmRleCxzdWJMaXN0VG9JbmRleCkpKTsKLSAgICAgICAgICAgICAgVmVjdG9yIHRNb2RlbFZlY3RvciA9IHRNb2RlbERldGFpbC5nZXRUTW9kZWxWZWN0b3IoKTsKLSAgICAgICAgICAgICAgZm9yIChpbnQgaT0wO2k8dE1vZGVsVmVjdG9yLnNpemUoKTtpKyspCi0gICAgICAgICAgICAgICAgZmluYWxUTW9kZWxWZWN0b3IuYWRkRWxlbWVudCh0TW9kZWxWZWN0b3IuZWxlbWVudEF0KGkpKTsKLSAgICAgICAgICAgICAgaWYgKHRNb2RlbERldGFpbC5nZXRUcnVuY2F0ZWRCb29sZWFuKCkpCi0gICAgICAgICAgICAgICAgd2luZG93U2l6ZSA9IHRNb2RlbFZlY3Rvci5zaXplKCk7Ci0gICAgICAgICAgICAgIGN1cnJlbnRJbmRleCArPSB3aW5kb3dTaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2F0Y2ggKFVERElFeGNlcHRpb24gZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgRGlzcG9zaXRpb25SZXBvcnQgZHIgPSBlLmdldERpc3Bvc2l0aW9uUmVwb3J0KCk7Ci0gICAgICAgICAgICAgIGlmICgoKFJlc3VsdCkgZHIuZ2V0UmVzdWx0VmVjdG9yKCkuZ2V0KDApKS5nZXRFcnJJbmZvKCkuZ2V0RXJyQ29kZSgpID09IERpc3Bvc2l0aW9uUmVwb3J0LkVfaW52YWxpZEtleVBhc3NlZCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFN0cmluZyBlcnJJbmZvVGV4dCA9ICgoUmVzdWx0KSBkci5nZXRSZXN1bHRWZWN0b3IoKS5nZXQoMCkpLmdldEVyckluZm8oKS5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaT1jdXJyZW50SW5kZXg7aTxzdWJMaXN0VG9JbmRleDtpKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgU3RyaW5nIHRNb2RlbEtleSA9IChTdHJpbmcpdE1vZGVsS2V5VmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgICAgICAgICAgIGlmIChlcnJJbmZvVGV4dC5pbmRleE9mKHRNb2RlbEtleSkgIT0gLTEgfHwgZXJySW5mb1RleHQuaW5kZXhPZih0TW9kZWxLZXkudG9VcHBlckNhc2UoKSkgIT0gLTEgfHwgZXJySW5mb1RleHQuaW5kZXhPZih0TW9kZWxLZXkudG9Mb3dlckNhc2UoKSkgIT0gLTEpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRNb2RlbEtleVZlY3Rvci5yZW1vdmVFbGVtZW50QXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChUcmFuc3BvcnRFeGNlcHRpb24gZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgICAgaW50IGZpbmFsTnVtYmVyT2ZUTW9kZWxzID0gZmluYWxUTW9kZWxWZWN0b3Iuc2l6ZSgpOwotICAgICAgICAgIGlmIChmaW5hbE51bWJlck9mVE1vZGVscyA+IDApCi0gICAgICAgICAgewotICAgICAgICAgICAgVE1vZGVsW10gdE1vZGVsQXJyYXkgPSBuZXcgVE1vZGVsW2ZpbmFsTnVtYmVyT2ZUTW9kZWxzXTsKLSAgICAgICAgICAgIGZpbmFsVE1vZGVsVmVjdG9yLnRvQXJyYXkodE1vZGVsQXJyYXkpOwotICAgICAgICAgICAgU3RyaW5nIHF1ZXJ5TmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSk7Ci0gICAgICAgICAgICBxdWVyeUVsZW1lbnRfID0gbmV3IFF1ZXJ5RWxlbWVudCh0TW9kZWxBcnJheSxxdWVyeU5hbWUscmVnRWxlbWVudC5nZXRNb2RlbCgpKTsKLSAgICAgICAgICAgIGFkZFF1ZXJ5Tm9kZSgpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1NFUlZJQ0VfSU5URVJGQUNFU19GT1VORCIsU3RyaW5nLnZhbHVlT2YodE1vZGVsQXJyYXkubGVuZ3RoKSkpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybUlucHV0RXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fU0VSVklDRV9JTlRFUkZBQ0VTX0ZPVU5EIikpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICB0aHJvdyBuZXcgRm9ybUlucHV0RXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fU0VSVklDRV9JTlRFUkZBQ0VTX0ZPVU5EIikpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRDb250cm9sbGVyKCkuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24odWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiVHJhbnNwb3J0RXhjZXB0aW9uIixlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24odWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiTWFsZm9ybWVkVVJMRXhjZXB0aW9uIixlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEZvcm1JbnB1dEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICAvLyBDb3BpZWQgZGlyZWN0bHkgZnJvbSBVRERJV1NETFByb3h5J3MgZmluZEFsbFNlcnZpY2VJbnRlcmZhY2VzKCkgbWV0aG9kIHdpdGggbWlub3IgbW9kaWZpY2F0aW9ucy4gVGhlIGhhcmRjb2RlZCBzdHJpbmdzIHNob3VsZCBOT1QgYmUgdHJhbnNsYXRlZC4KLSAgcHJpdmF0ZSBmaW5hbCBWZWN0b3IgZmluZEFsbE93bmVkVE1vZGVscyhVRERJUHJveHkgcHJveHksIFN0cmluZyBhdXRoSW5mb1N0cmluZywgaW50IG1heFJlc3VsdHMpIHRocm93cyBVRERJRXhjZXB0aW9uLCBUcmFuc3BvcnRFeGNlcHRpb24KLSAgewotICAgIFJlZ2lzdGVyZWRJbmZvIHJlZ2lzdGVyZWRJbmZvID0gbnVsbDsKLQotICAgIC8vIEdldCB0aGUgY29tcGxldGUgbGlzdCBvZiBvd25lZCAocmVnaXN0ZXJlZCkgaW5mby4KLSAgICAvLyAoQSBSZWdpc3RlcmVkSW5mbyBjb25zaXN0cyBvZiBCdXNpbmVzc0luZm9zIGFuZCBUTW9kZWxJbmZvcy4KLSAgICAvLyBCdXNpbmVzc0luZm9zIGFsc28gY29udGFpbiBTZXJ2aWNlSW5mb3MuKQotICAgIHJlZ2lzdGVyZWRJbmZvID0gcHJveHkuZ2V0X3JlZ2lzdGVyZWRJbmZvKGF1dGhJbmZvU3RyaW5nKTsKLQotICAgIC8vQ3JlYXRlIGEgVmVjdG9yIHRvIGFkZCB0aGUgVE1vZGVsS2V5cyBmcm9tIHRoZSByZWdpc3RlcmVkSW5mby4KLSAgICBWZWN0b3IgdE1vZGVsS2V5TGlzdCA9IG5ldyBWZWN0b3IoKTsKLQotICAgIC8vR2V0IHRoZSBUTW9kZWxJbmZvcyBmcm9tIHRoZSByZWdpc3RlcmVkSW5mby4KLSAgICBUTW9kZWxJbmZvcyB0TW9kZWxJbmZvcyA9IHJlZ2lzdGVyZWRJbmZvLmdldFRNb2RlbEluZm9zKCk7Ci0KLSAgICAvL0dldCBhbGwgdGhlIFRNb2RlbEtleXMgZnJvbSB3aXRoaW4gdGhlIFRNb2RlbEluZm9zCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0TW9kZWxJbmZvcy5zaXplKCk7IGkrKykKLSAgICB7Ci0gICAgICBUTW9kZWxJbmZvIHRNb2RlbEluZm8gPSB0TW9kZWxJbmZvcy5nZXQoaSk7Ci0gICAgICBpZiAodE1vZGVsS2V5TGlzdC5zaXplKCkgPCBtYXhSZXN1bHRzKQotICAgICAgICB0TW9kZWxLZXlMaXN0LmFkZEVsZW1lbnQodE1vZGVsSW5mby5nZXRUTW9kZWxLZXkoKSk7Ci0gICAgICBlbHNlCi0gICAgICAgIGJyZWFrOwotICAgIH0gICAgCi0gICAgcmV0dXJuIHRNb2RlbEtleUxpc3Q7Ci0gIH0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzU2ltcGxlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZUludGVyZmFjZXNTaW1wbGVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhiZmVkNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZUludGVyZmFjZXNTaW1wbGVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Gb3JtSW5wdXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5RdWVyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5UTW9kZWxEZXRhaWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5UTW9kZWxJbmZvOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuVE1vZGVsSW5mb3M7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5UTW9kZWxMaXN0OwotaW1wb3J0IG9yZy51ZGRpNGoudHJhbnNwb3J0LlRyYW5zcG9ydEV4Y2VwdGlvbjsKLQotcHVibGljIGNsYXNzIFJlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NpbXBsZUFjdGlvbiBleHRlbmRzIEZpbmRBY3Rpb24KLXsKLSAgcHVibGljIFJlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NpbXBsZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMpKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMsU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUpKTsgICAgCi0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzT3RoZXJzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcixGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgbmFtZSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSk7Ci0KLSAgICAvLyBWYWxpZGF0ZSB0aGUgZGF0YS4KLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSxuYW1lKTsKLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgb2NjdXIuCi0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gaW5wdXRzVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgYm9vbGVhbiBzaG91bGRBZGRRdWVyeU5vZGUgPSAocHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfT1ZFUlJJREVfQUREX1FVRVJZX05PREUpID09IG51bGwpOyAgICAgIAotICAgICAgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FKTsKLSAgICAgIC8vIFRoZSBhY3Rpb24gY2FuIGJlIHJ1biB1bmRlciB0aGUgY29udGV4dCBvZiBlaXRoZXIgYSByZWdpc3RyeSBvciBhIHF1ZXJ5IG5vZGUuCi0gICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIFVERElQcm94eSBwcm94eSA9IHJlZ0VsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICAgIFRNb2RlbExpc3QgdE1vZGVsTGlzdCA9IHByb3h5LmZpbmRfdE1vZGVsKG5hbWUsbnVsbCxudWxsLG51bGwsVURESUFjdGlvbklucHV0cy5RVUVSWV9NQVhfU0VBUkNIX1NFVCk7Ci0gICAgICBUTW9kZWxJbmZvcyB0TW9kZWxJbmZvcyA9IHRNb2RlbExpc3QuZ2V0VE1vZGVsSW5mb3MoKTsKLSAgICAgIFZlY3RvciB0TW9kZWxLZXlWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAKLSAgICAgIGZvciAoaW50IGk9MDtpPHRNb2RlbEluZm9zLnNpemUoKTtpKyspCi0gICAgICB7Ci0gICAgICAgIFRNb2RlbEluZm8gdE1vZGVsSW5mbyA9IHRNb2RlbEluZm9zLmdldChpKTsKLSAgICAgICAgaWYgKHRNb2RlbEtleVZlY3Rvci5zaXplKCkgPCBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX01BWF9SRVNVTFRTKQotICAgICAgICAgIHRNb2RlbEtleVZlY3Rvci5hZGRFbGVtZW50KHRNb2RlbEluZm8uZ2V0VE1vZGVsS2V5KCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIGlmICh0TW9kZWxLZXlWZWN0b3Iuc2l6ZSgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgaWYgKHNob3VsZEFkZFF1ZXJ5Tm9kZSkKLSAgICAgICAgewotICAgICAgICAgIFRNb2RlbERldGFpbCB0TW9kZWxEZXRhaWwgPSBwcm94eS5nZXRfdE1vZGVsRGV0YWlsKHRNb2RlbEtleVZlY3Rvcik7Ci0gICAgICAgICAgVmVjdG9yIHRNb2RlbFZlY3RvciA9IHRNb2RlbERldGFpbC5nZXRUTW9kZWxWZWN0b3IoKTsKLSAgICAgICAgICBUTW9kZWxbXSB0TW9kZWxBcnJheSA9IG5ldyBUTW9kZWxbdE1vZGVsVmVjdG9yLnNpemUoKV07Ci0gICAgICAgICAgdE1vZGVsVmVjdG9yLnRvQXJyYXkodE1vZGVsQXJyYXkpOwotICAgICAgICAgIFN0cmluZyBxdWVyeU5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUpOwotICAgICAgICAgIHF1ZXJ5RWxlbWVudF8gPSBuZXcgUXVlcnlFbGVtZW50KHRNb2RlbEFycmF5LHF1ZXJ5TmFtZSxyZWdFbGVtZW50LmdldE1vZGVsKCkpOwotICAgICAgICAgIGFkZFF1ZXJ5Tm9kZSgpOwotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19TRVJWSUNFX0lOVEVSRkFDRVNfRk9VTkQiLFN0cmluZy52YWx1ZU9mKHRNb2RlbEFycmF5Lmxlbmd0aCkpKTsgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICB0aHJvdyBuZXcgRm9ybUlucHV0RXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fU0VSVklDRV9JTlRFUkZBQ0VTX0ZPVU5EIikpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRDb250cm9sbGVyKCkuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24odWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiVHJhbnNwb3J0RXhjZXB0aW9uIixlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEZvcm1JbnB1dEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZVVVSURBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlVVVJREFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWVhNWQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlVVVJREFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkZvcm1JbnB1dEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlF1ZXJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuU2VydmljZURldGFpbDsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci0KLXB1YmxpYyBjbGFzcyBSZWdGaW5kU2VydmljZVVVSURBY3Rpb24gZXh0ZW5kcyBGaW5kQWN0aW9uCi17Ci0gIHB1YmxpYyBSZWdGaW5kU2VydmljZVVVSURBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTSxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVMpKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFUyxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1VVSUQpKTsgICAgCi0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzT3RoZXJzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcixGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgdXVpZEtleSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0tFWSk7Ci0KLSAgICAvLyBWYWxpZGF0ZSB0aGUgZGF0YS4KLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLQotICAgIGlmICh1dWlkS2V5ICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfS0VZLHV1aWRLZXkpOwotCi0gICAgaWYgKCFzdWJRdWVyeUluaXRpYXRlZF8gJiYgIVZhbGlkYXRvci52YWxpZGF0ZVN0cmluZyh1dWlkS2V5KSkKLSAgICB7Ci0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgZm9ybVRvb2xQSS5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfS0VZKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9VVUlEX0tFWSIpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIGJvb2xlYW4gc2hvdWxkQWRkUXVlcnlOb2RlID0gKHByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX09WRVJSSURFX0FERF9RVUVSWV9OT0RFKSA9PSBudWxsKTsKLSAgICAgIFN0cmluZyB1dWlkS2V5ID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfS0VZKTsKLQotICAgICAgLy8gVGhlIGFjdGlvbiBjYW4gYmUgcnVuIHVuZGVyIHRoZSBjb250ZXh0IG9mIGVpdGhlciBhIHJlZ2lzdHJ5IG9yIGEgcXVlcnkgbm9kZSBvciBldmVuIFVERElNYWluTm9kZS4KLSAgICAgIGlmIChyZWdOb2RlXyA9PSBudWxsKQotICAgICAgICByZWdOb2RlXyA9IGdldFJlZ2lzdHJ5Tm9kZSgoTm9kZSlwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5SRUZSRVNIX05PREUpKTsKLSAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgVURESVByb3h5IHByb3h5ID0gcmVnRWxlbWVudC5nZXRQcm94eSgpOwotICAgICAgQnVzaW5lc3NTZXJ2aWNlW10gYnNBcnJheSA9IG5ldyBCdXNpbmVzc1NlcnZpY2VbMV07Ci0gICAgICBTZXJ2aWNlRGV0YWlsIHNlcnZpY2VEZXRhaWwgPSBwcm94eS5nZXRfc2VydmljZURldGFpbCh1dWlkS2V5KTsKLSAgICAgIFZlY3RvciBic1ZlY3RvciA9IHNlcnZpY2VEZXRhaWwuZ2V0QnVzaW5lc3NTZXJ2aWNlVmVjdG9yKCk7Ci0gICAgICBpZiAoYnNWZWN0b3Iuc2l6ZSgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgYnNWZWN0b3IudG9BcnJheShic0FycmF5KTsKLSAgICAgICAgaWYgKHNob3VsZEFkZFF1ZXJ5Tm9kZSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBxdWVyeU5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUpOwotICAgICAgICAgIHF1ZXJ5RWxlbWVudF8gPSBuZXcgUXVlcnlFbGVtZW50KGJzQXJyYXkscXVlcnlOYW1lLHJlZ0VsZW1lbnQuZ2V0TW9kZWwoKSk7Ci0gICAgICAgICAgYWRkUXVlcnlOb2RlKCk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1NFUlZJQ0VTX0ZPVU5EIixTdHJpbmcudmFsdWVPZihic0FycmF5Lmxlbmd0aCkpKTsKLSAgICAgICAgfQotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNULGJzQXJyYXlbMF0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgdGhyb3cgbmV3IEZvcm1JbnB1dEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX1NFUlZJQ0VTX0ZPVU5EIikpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRDb250cm9sbGVyKCkuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24odWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiVHJhbnNwb3J0RXhjZXB0aW9uIixlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEZvcm1JbnB1dEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZXNBZHZhbmNlZEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VzQWR2YW5jZWRBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI2ZDJjNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZXNBZHZhbmNlZEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Gb3JtSW5wdXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlF1ZXJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLk5hbWU7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLkJ1c2luZXNzSW5mbzsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLkJ1c2luZXNzSW5mb3M7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5EaXNwb3NpdGlvblJlcG9ydDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlJlZ2lzdGVyZWRJbmZvOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuUmVzdWx0OwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuU2VydmljZURldGFpbDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlNlcnZpY2VJbmZvOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuU2VydmljZUluZm9zOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuU2VydmljZUxpc3Q7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5DYXRlZ29yeUJhZzsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuRmluZFF1YWxpZmllcjsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuRmluZFF1YWxpZmllcnM7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLktleWVkUmVmZXJlbmNlOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5UTW9kZWxCYWc7Ci0KLXB1YmxpYyBjbGFzcyBSZWdGaW5kU2VydmljZXNBZHZhbmNlZEFjdGlvbiBleHRlbmRzIEZpbmRBY3Rpb24KLXsKLSAgcHVibGljIFJlZ0ZpbmRTZXJ2aWNlc0FkdmFuY2VkQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0sU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTKSk7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRVMsU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9BRFZBTkNFRCkpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTUFYX1NFQVJDSF9TRVQsU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9NQVhfU0VBUkNIX1NFVCkpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTUFYX1JFU1VMVFMsU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9NQVhfUkVTVUxUUykpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIG93bmVkQ2hlY2tlZCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9PV05FRCk7Ci0gICAgU3RyaW5nW10gYnVzTm9kZUlkcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5OT0RFSURfQlVTSU5FU1MpOwotICAgIFN0cmluZ1tdIGxhbmd1YWdlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FX0xBTkdVQUdFKTsKLSAgICBTdHJpbmdbXSBuYW1lcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FKTsKLSAgICBTdHJpbmdbXSBjYXRUeXBlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9UWVBFKTsKLSAgICBTdHJpbmdbXSBjYXRLZXlOYW1lcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9LRVlfTkFNRSk7Ci0gICAgU3RyaW5nW10gY2F0S2V5VmFsdWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9WQUxVRSk7Ci0gICAgU3RyaW5nW10gc2lOb2RlSWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLk5PREVJRF9TRVJWSUNFX0lOVEVSRkFDRSk7Ci0gICAgU3RyaW5nW10gZmluZFF1YWxpZmllclZhbHVlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9GSU5EUVVBTElGSUVSKTsKLSAgICBTdHJpbmcgbWF4U2VhcmNoU2V0ID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX01BWF9TRUFSQ0hfU0VUKTsKLSAgICBTdHJpbmcgbWF4UmVzdWx0cyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9NQVhfUkVTVUxUUyk7Ci0KLSAgICAvLyBWYWxpZGF0ZSB0aGUgZGF0YS4KLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICByZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotCi0gICAgaWYgKG93bmVkQ2hlY2tlZCAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9PV05FRCxvd25lZENoZWNrZWQpOwotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9PV05FRCk7Ci0KLSAgICBpZiAoYnVzTm9kZUlkcyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIEFsdGhvdWdoIHdlIGFscmVhZHkgaGF2ZSB0aGUgInN1Ym1pdHRlZCIgZGF0YSwgZGVsZXRpb25zIG9jY3VyIG9uIHRoZSBjbGllbnQgc2lkZSBhbmQgdGh1cyB0aGUgbmVlZCB0byB0cmFjayB0aGlzIHVzaW5nIGhpZGRlbiBmb3JtIGVsZW1lbnRzLgotICAgICAgVmVjdG9yIHNlcnZpY2VCdXNpbmVzcyA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1MpOwotICAgICAgaWYgKHNlcnZpY2VCdXNpbmVzcyA9PSBudWxsKQotICAgICAgICBzZXJ2aWNlQnVzaW5lc3MgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBlbHNlCi0gICAgICAgIHNlcnZpY2VCdXNpbmVzcy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgVmVjdG9yIHNlcnZpY2VCdXNpbmVzc0NvcHkgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0JVU0lORVNTX0NPUFkpOwotICAgICAgLy8gVGhlIGJyb3dzZXIgd2lsbCBlbmZvcmNlIHRoZSBydWxlIG9mIGhhdmluZyBvbmx5IG9uZSBidXNpbmVzcyBpbiB0aGlzIGxpc3QuCi0gICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClzZXJ2aWNlQnVzaW5lc3NDb3B5LmVsZW1lbnRBdCgwKTsKLSAgICAgIHNlcnZpY2VCdXNpbmVzcy5hZGRFbGVtZW50KGxpc3RFbGVtZW50KTsKLSAgICAgIEJ1c2luZXNzRW50aXR5IHNwID0gKEJ1c2luZXNzRW50aXR5KWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTUyxzZXJ2aWNlQnVzaW5lc3MpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX1BST1ZJREVSLHNwKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTUyk7Ci0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9QUk9WSURFUik7Ci0gICAgfQotCi0gICAgaWYgKGxhbmd1YWdlcyAhPSBudWxsICYmIG5hbWVzICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIG5hbWVWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxuYW1lcy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBOYW1lIHVkZGk0ak5hbWU7Ci0gICAgICAgIGlmIChsYW5ndWFnZXNbaV0ubGVuZ3RoKCkgPiAwKQotICAgICAgICAgIHVkZGk0ak5hbWUgPSBuZXcgTmFtZShuYW1lc1tpXSxsYW5ndWFnZXNbaV0pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgdWRkaTRqTmFtZSA9IG5ldyBOYW1lKG5hbWVzW2ldKTsKLSAgICAgICAgbmFtZVZlY3Rvci5hZGRFbGVtZW50KHVkZGk0ak5hbWUpOwotICAgICAgfQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9OQU1FUyxuYW1lVmVjdG9yKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTKTsKLQotICAgIGlmIChjYXRUeXBlcyAhPSBudWxsICYmIGNhdEtleU5hbWVzICE9IG51bGwgJiYgY2F0S2V5VmFsdWVzICE9IG51bGwpCi0gICAgewotICAgICAgQ2F0ZWdvcnlCYWcgY2F0QmFnID0gbmV3IENhdGVnb3J5QmFnKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxjYXRUeXBlcy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IG5ldyBLZXllZFJlZmVyZW5jZShjYXRLZXlOYW1lc1tpXSxjYXRLZXlWYWx1ZXNbaV0sY2F0VHlwZXNbaV0pOwotICAgICAgICBjYXRCYWcuYWRkKGtyKTsKLSAgICAgIH0KLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQ0FURUdPUklFUyxjYXRCYWcpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQ0FURUdPUklFUyk7Ci0KLSAgICBpZiAoc2lOb2RlSWRzICE9IG51bGwpCi0gICAgewotICAgICAgLy8gQWx0aG91Z2ggd2UgYWxyZWFkeSBoYXZlIHRoZSAic3VibWl0dGVkIiBkYXRhLCBkZWxldGlvbnMgb2NjdXIgb24gdGhlIGNsaWVudCBzaWRlIGFuZCB0aHVzIHRoZSBuZWVkIHRvIHRyYWNrIHRoaXMgdXNpbmcgaGlkZGVuIGZvcm0gZWxlbWVudHMuCi0gICAgICBWZWN0b3Igc2VydmljZVNlcnZpY2VJbnRlcmZhY2VzID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVMpOwotICAgICAgaWYgKHNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlcyA9PSBudWxsKQotICAgICAgICBzZXJ2aWNlU2VydmljZUludGVyZmFjZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBlbHNlCi0gICAgICAgIHNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlcy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgVmVjdG9yIHNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlc0NvcHkgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFU19DT1BZKTsKLSAgICAgIFZlY3RvciB0TW9kZWxLZXlTdHJpbmdWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBIYXNodGFibGUgcmVzdWx0SGFzaCA9IG5ldyBIYXNodGFibGUoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPHNpTm9kZUlkcy5sZW5ndGg7aSsrKQotICAgICAgICByZXN1bHRIYXNoLnB1dChzaU5vZGVJZHNbaV0sQm9vbGVhbi5UUlVFKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPHNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlc0NvcHkuc2l6ZSgpO2krKykKLSAgICAgIHsKLSAgICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpc2VydmljZVNlcnZpY2VJbnRlcmZhY2VzQ29weS5lbGVtZW50QXQoaSk7Ci0gICAgICAgIGlmIChyZXN1bHRIYXNoLmdldChTdHJpbmcudmFsdWVPZihsaXN0RWxlbWVudC5nZXRUYXJnZXROb2RlSWQoKSkpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBzZXJ2aWNlU2VydmljZUludGVyZmFjZXMuYWRkRWxlbWVudChsaXN0RWxlbWVudCk7Ci0gICAgICAgICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgICAgdE1vZGVsS2V5U3RyaW5nVmVjdG9yLmFkZEVsZW1lbnQodE1vZGVsLmdldFRNb2RlbEtleSgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgVE1vZGVsQmFnIHRNb2RlbEJhZyA9IG5ldyBUTW9kZWxCYWcodE1vZGVsS2V5U3RyaW5nVmVjdG9yKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTLHNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlcyk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1RNT0RFTEJBRyx0TW9kZWxCYWcpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFUyk7Ci0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfVE1PREVMQkFHKTsKLSAgICB9Ci0KLSAgICBpZiAoZmluZFF1YWxpZmllclZhbHVlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIEZpbmRRdWFsaWZpZXJzIGZpbmRRdWFsaWZpZXJzID0gbmV3IEZpbmRRdWFsaWZpZXJzKCk7Ci0gICAgICBWZWN0b3IgZmluZFF1YWxpZmllclZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGZpbmRRdWFsaWZpZXJWYWx1ZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgRmluZFF1YWxpZmllciBmaW5kUXVhbGlmaWVyID0gbmV3IEZpbmRRdWFsaWZpZXIoZmluZFF1YWxpZmllclZhbHVlc1tpXSk7Ci0gICAgICAgIGZpbmRRdWFsaWZpZXJWZWN0b3IuYWRkRWxlbWVudChmaW5kUXVhbGlmaWVyKTsKLSAgICAgIH0KLSAgICAgIGZpbmRRdWFsaWZpZXJzLnNldEZpbmRRdWFsaWZpZXJWZWN0b3IoZmluZFF1YWxpZmllclZlY3Rvcik7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0ZJTkRRVUFMSUZJRVJTLGZpbmRRdWFsaWZpZXJzKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0ZJTkRRVUFMSUZJRVJTKTsKLQotICAgIGlmIChtYXhTZWFyY2hTZXQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9NQVhfU0VBUkNIX1NFVCxtYXhTZWFyY2hTZXQpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9NQVhfU0VBUkNIX1NFVCxtYXhTZWFyY2hTZXQpOwotICAgIH0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlSW50ZWdlcihtYXhTZWFyY2hTZXQpKQotICAgIHsKLSAgICAgIGZvcm1Ub29sUEkuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9NQVhfU0VBUkNIX1NFVCk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfTUFYX1NFQVJDSF9TRVQiKSk7Ci0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChtYXhSZXN1bHRzICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTUFYX1JFU1VMVFMsbWF4UmVzdWx0cyk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX01BWF9SRVNVTFRTLG1heFJlc3VsdHMpOwotICAgIH0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlSW50ZWdlcihtYXhSZXN1bHRzKSkKLSAgICB7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTUFYX1JFU1VMVFMpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX01BWF9SRVNVTFRTIikpOwotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIGJvb2xlYW4gc2hvdWxkQWRkUXVlcnlOb2RlID0gKHByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX09WRVJSSURFX0FERF9RVUVSWV9OT0RFKSA9PSBudWxsKTsgICAgICAKLSAgICAgIEZpbmRRdWFsaWZpZXJzIGZpbmRRdWFsaWZpZXJzID0gKEZpbmRRdWFsaWZpZXJzKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfRklORFFVQUxJRklFUlMpOwotICAgICAgQnVzaW5lc3NFbnRpdHkgc3AgPSAoQnVzaW5lc3NFbnRpdHkpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX1BST1ZJREVSKTsKLSAgICAgIFZlY3RvciBuYW1lVmVjdG9yID0gKFZlY3Rvcilwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTKTsKLSAgICAgIENhdGVnb3J5QmFnIGNhdGVnb3J5QmFnID0gKENhdGVnb3J5QmFnKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQ0FURUdPUklFUyk7Ci0gICAgICBUTW9kZWxCYWcgdE1vZGVsQmFnID0gKFRNb2RlbEJhZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1RNT0RFTEJBRyk7Ci0gICAgICBib29sZWFuIG93bmVkID0gKHByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfT1dORUQpICE9IG51bGwpOwotICAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgIFN0cmluZyB1c2VySWQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgICBTdHJpbmcgcGFzc3dvcmQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEKTsKLSAgICAgIGludCBtYXhTZWFyY2hTZXQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9NQVhfU0VBUkNIX1NFVCkpOwotICAgICAgaW50IG1heFJlc3VsdHMgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9NQVhfUkVTVUxUUykpOwotCi0gICAgICAvLyBUaGUgYWN0aW9uIGNhbiBiZSBydW4gdW5kZXIgdGhlIGNvbnRleHQgb2YgZWl0aGVyIGEgcmVnaXN0cnkgb3IgYSBxdWVyeSBub2RlLgotICAgICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICBpZiAob3duZWQgJiYgIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgICAgICByZWdFbGVtZW50LnBlcmZvcm1Mb2dpbihwdWJsaXNoVVJMLHVzZXJJZCxwYXNzd29yZCk7Ci0gICAgICAgIAotICAgICAgVURESVByb3h5IHByb3h5ID0gcmVnRWxlbWVudC5nZXRQcm94eSgpOwotICAgICAgU3RyaW5nIGJ1c2luZXNzS2V5OwotICAgICAgaWYgKHNwICE9IG51bGwpCi0gICAgICAgIGJ1c2luZXNzS2V5ID0gc3AuZ2V0QnVzaW5lc3NLZXkoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgYnVzaW5lc3NLZXkgPSAiIjsKLQotICAgICAgaW50IGZpbmFsTnVtYmVyT2ZTZXJ2aWNlS2V5czsKLSAgICAgIFZlY3RvciBzZXJ2aWNlS2V5VmVjdG9yOwotICAgICAgaWYgKG93bmVkKQotICAgICAgewotICAgICAgICBzZXJ2aWNlS2V5VmVjdG9yID0gZmluZEFsbE93bmVkU2VydmljZXMocHJveHkscmVnRWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpLGJ1c2luZXNzS2V5LG1heFJlc3VsdHMpOwotICAgICAgICBmaW5hbE51bWJlck9mU2VydmljZUtleXMgPSBzZXJ2aWNlS2V5VmVjdG9yLnNpemUoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgU2VydmljZUxpc3Qgc2VydmljZUxpc3QgPSBwcm94eS5maW5kX3NlcnZpY2UoYnVzaW5lc3NLZXksbmFtZVZlY3RvcixjYXRlZ29yeUJhZyx0TW9kZWxCYWcsZmluZFF1YWxpZmllcnMsbWF4U2VhcmNoU2V0KTsKLSAgICAgICAgU2VydmljZUluZm9zIHNJbmZvcyA9IHNlcnZpY2VMaXN0LmdldFNlcnZpY2VJbmZvcygpOwotICAgICAgICBmaW5hbE51bWJlck9mU2VydmljZUtleXMgPSBNYXRoLm1pbihtYXhSZXN1bHRzLHNJbmZvcy5zaXplKCkpOwotICAgICAgICBzZXJ2aWNlS2V5VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgICBmb3IgKGludCBpPTA7aTxmaW5hbE51bWJlck9mU2VydmljZUtleXM7aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgU2VydmljZUluZm8gc0luZm8gPSBzSW5mb3MuZ2V0KGkpOwotICAgICAgICAgIHNlcnZpY2VLZXlWZWN0b3IuYWRkRWxlbWVudChzSW5mby5nZXRTZXJ2aWNlS2V5KCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIGlmIChmaW5hbE51bWJlck9mU2VydmljZUtleXMgPiAwKQotICAgICAgeyAgICAgIAotICAgICAgICBpZiAoc2hvdWxkQWRkUXVlcnlOb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgVmVjdG9yIGZpbmFsQnVzU2VydmljZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICBpbnQgY3VycmVudEluZGV4ID0gMDsKLSAgICAgICAgICBpbnQgd2luZG93U2l6ZSA9IGZpbmFsTnVtYmVyT2ZTZXJ2aWNlS2V5czsKLSAgICAgICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgc2VydmljZUtleVZlY3Rvci5zaXplKCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgaW50IHN1Ykxpc3RUb0luZGV4ID0gTWF0aC5taW4oY3VycmVudEluZGV4K3dpbmRvd1NpemUsc2VydmljZUtleVZlY3Rvci5zaXplKCkpOwotICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFNlcnZpY2VEZXRhaWwgc2VydmljZURldGFpbCA9IHByb3h5LmdldF9zZXJ2aWNlRGV0YWlsKG5ldyBWZWN0b3Ioc2VydmljZUtleVZlY3Rvci5zdWJMaXN0KGN1cnJlbnRJbmRleCxzdWJMaXN0VG9JbmRleCkpKTsKLSAgICAgICAgICAgICAgVmVjdG9yIGJ1c1NlcnZpY2VWZWN0b3IgPSBzZXJ2aWNlRGV0YWlsLmdldEJ1c2luZXNzU2VydmljZVZlY3RvcigpOwotICAgICAgICAgICAgICBmb3IgKGludCBpPTA7aTxidXNTZXJ2aWNlVmVjdG9yLnNpemUoKTtpKyspCi0gICAgICAgICAgICAgICAgZmluYWxCdXNTZXJ2aWNlVmVjdG9yLmFkZEVsZW1lbnQoYnVzU2VydmljZVZlY3Rvci5lbGVtZW50QXQoaSkpOwotICAgICAgICAgICAgICBpZiAoc2VydmljZURldGFpbC5nZXRUcnVuY2F0ZWRCb29sZWFuKCkpCi0gICAgICAgICAgICAgICAgd2luZG93U2l6ZSA9IGJ1c1NlcnZpY2VWZWN0b3Iuc2l6ZSgpOwotICAgICAgICAgICAgICBjdXJyZW50SW5kZXggKz0gd2luZG93U2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIERpc3Bvc2l0aW9uUmVwb3J0IGRyID0gZS5nZXREaXNwb3NpdGlvblJlcG9ydCgpOwotICAgICAgICAgICAgICBpZiAoKChSZXN1bHQpIGRyLmdldFJlc3VsdFZlY3RvcigpLmdldCgwKSkuZ2V0RXJySW5mbygpLmdldEVyckNvZGUoKSA9PSBEaXNwb3NpdGlvblJlcG9ydC5FX2ludmFsaWRLZXlQYXNzZWQpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgZXJySW5mb1RleHQgPSAoKFJlc3VsdCkgZHIuZ2V0UmVzdWx0VmVjdG9yKCkuZ2V0KDApKS5nZXRFcnJJbmZvKCkuZ2V0VGV4dCgpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGk9Y3VycmVudEluZGV4O2k8c3ViTGlzdFRvSW5kZXg7aSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIFN0cmluZyBzZXJ2aWNlS2V5ID0gKFN0cmluZylzZXJ2aWNlS2V5VmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgICAgICAgICAgIGlmIChlcnJJbmZvVGV4dC5pbmRleE9mKHNlcnZpY2VLZXkpICE9IC0xIHx8IGVyckluZm9UZXh0LmluZGV4T2Yoc2VydmljZUtleS50b1VwcGVyQ2FzZSgpKSAhPSAtMSB8fCBlcnJJbmZvVGV4dC5pbmRleE9mKHNlcnZpY2VLZXkudG9Mb3dlckNhc2UoKSkgIT0gLTEpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VLZXlWZWN0b3IucmVtb3ZlRWxlbWVudEF0KGkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICB9ICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIGludCBmaW5hbE51bWJlck9mQnVzaW5lc3NTZXJ2aWNlcyA9IGZpbmFsQnVzU2VydmljZVZlY3Rvci5zaXplKCk7Ci0gICAgICAgICAgaWYgKGZpbmFsTnVtYmVyT2ZCdXNpbmVzc1NlcnZpY2VzID4gMCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBCdXNpbmVzc1NlcnZpY2VbXSBic0FycmF5ID0gbmV3IEJ1c2luZXNzU2VydmljZVtmaW5hbE51bWJlck9mQnVzaW5lc3NTZXJ2aWNlc107Ci0gICAgICAgICAgICBmaW5hbEJ1c1NlcnZpY2VWZWN0b3IudG9BcnJheShic0FycmF5KTsKLSAgICAgICAgICAgIFN0cmluZyBxdWVyeU5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUpOwotICAgICAgICAgICAgcXVlcnlFbGVtZW50XyA9IG5ldyBRdWVyeUVsZW1lbnQoYnNBcnJheSxxdWVyeU5hbWUscmVnRWxlbWVudC5nZXRNb2RlbCgpKTsKLSAgICAgICAgICAgIGFkZFF1ZXJ5Tm9kZSgpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1NFUlZJQ0VTX0ZPVU5EIixTdHJpbmcudmFsdWVPZihic0FycmF5Lmxlbmd0aCkpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1JbnB1dEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX1NFUlZJQ0VTX0ZPVU5EIikpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICB0aHJvdyBuZXcgRm9ybUlucHV0RXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fU0VSVklDRVNfRk9VTkQiKSk7Ci0gICAgfSAgIAotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldENvbnRyb2xsZXIoKS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJVRERJRXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJUcmFuc3BvcnRFeGNlcHRpb24iLGUpOwotICAgIH0gCi0gICAgY2F0Y2ggKEZvcm1JbnB1dEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24odWRkaVBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiTWFsZm9ybWVkVVJMRXhjZXB0aW9uIixlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICAvLyBDb3BpZWQgZGlyZWN0bHkgZnJvbSBVRERJV1NETFByb3h5J3MgZmluZEFsbE93bmVkU2VydmljZXMoKSBtZXRob2Qgd2l0aCBtaW5vciBtb2RpZmljYXRpb25zLiBUaGUgaGFyZGNvZGVkIHN0cmluZ3Mgc2hvdWxkIE5PVCBiZSB0cmFuc2xhdGVkLgotICBwcml2YXRlIGZpbmFsIFZlY3RvciBmaW5kQWxsT3duZWRTZXJ2aWNlcyhVRERJUHJveHkgcHJveHksU3RyaW5nIGF1dGhJbmZvU3RyaW5nLFN0cmluZyBidXNpbmVzc0tleSxpbnQgbWF4UmVzdWx0cykgdGhyb3dzIFVERElFeGNlcHRpb24sIFRyYW5zcG9ydEV4Y2VwdGlvbgotICB7Ci0gICAgUmVnaXN0ZXJlZEluZm8gcmVnaXN0ZXJlZEluZm8gPSBudWxsOwotCi0gICAgLy8gR2V0IHRoZSBjb21wbGV0ZSBsaXN0IG9mIG93bmVkIChyZWdpc3RlcmVkKSBpbmZvLgotICAgIC8vIChBIFJlZ2lzdGVyZWRJbmZvIGNvbnNpc3RzIG9mIEJ1c2luZXNzSW5mb3MgYW5kIFRNb2RlbEluZm9zLgotICAgIC8vIEJ1c2luZXNzSW5mb3MgYWxzbyBjb250YWluIFNlcnZpY2VJbmZvcy4pCi0gICAgcmVnaXN0ZXJlZEluZm8gPSBwcm94eS5nZXRfcmVnaXN0ZXJlZEluZm8oYXV0aEluZm9TdHJpbmcpOwotCi0gICAgLy9DcmVhdGUgYSB2ZWN0b3IgdG8gYWRkIHRoZSBzZXJ2aWNlS2V5cyBmcm9tIHRoZSByZWdpc3RlcmVkSW5mbyB0by4KLSAgICBWZWN0b3Igc2VydmljZUtleUxpc3QgPSBuZXcgVmVjdG9yKCk7Ci0KLSAgICAvL0dldCB0aGUgYnVzaW5lc3NJbmZvcyBmcm9tIHRoZSByZWdpc3RlcmVkSW5mby4KLSAgICBCdXNpbmVzc0luZm9zIGJ1c2luZXNzSW5mb3MgPSByZWdpc3RlcmVkSW5mby5nZXRCdXNpbmVzc0luZm9zKCk7Ci0KLSAgICAvL0dldCBhbGwgdGhlIHNlcnZpY2VLZXlzIGZyb20gdGhlIHNlcnZpY2VJbmZvcyB3aXRoaW4gdGhlIGJ1c2luZXNzSW5mb3MsCi0gICAgLy9hbmQgYWRkIHRoZW0gdG8gdGhlIHNlcnZpY2VLZXlMaXN0LgotICAgIGJvb2xlYW4gZW5kU2VhcmNoID0gZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXNpbmVzc0luZm9zLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgIEJ1c2luZXNzSW5mbyBidXNpbmVzc0luZm8gPSBidXNpbmVzc0luZm9zLmdldChpKTsKLSAgICAgIFN0cmluZyBjdXJyZW50QnVzaW5lc3NLZXkgPSBidXNpbmVzc0luZm8uZ2V0QnVzaW5lc3NLZXkoKTsKLSAgICAgIGlmIChidXNpbmVzc0tleS5sZW5ndGgoKSA+IDAgJiYgY3VycmVudEJ1c2luZXNzS2V5LmVxdWFscyhidXNpbmVzc0tleSkpCi0gICAgICAgIGVuZFNlYXJjaCA9IHRydWU7Ci0gICAgICBTZXJ2aWNlSW5mb3Mgc2VydmljZUluZm9zID0gYnVzaW5lc3NJbmZvLmdldFNlcnZpY2VJbmZvcygpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzZXJ2aWNlSW5mb3Muc2l6ZSgpOyBqKyspCi0gICAgICB7Ci0gICAgICAgIFNlcnZpY2VJbmZvIHNlcnZpY2VJbmZvID0gc2VydmljZUluZm9zLmdldChqKTsKLSAgICAgICAgaWYgKHNlcnZpY2VJbmZvLmdldEJ1c2luZXNzS2V5KCkuZXF1YWxzKGN1cnJlbnRCdXNpbmVzc0tleSkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoc2VydmljZUtleUxpc3Quc2l6ZSgpIDwgbWF4UmVzdWx0cykKLSAgICAgICAgICAgIHNlcnZpY2VLZXlMaXN0LmFkZChzZXJ2aWNlSW5mby5nZXRTZXJ2aWNlS2V5KCkpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBlbmRTZWFyY2ggPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpZiAoZW5kU2VhcmNoKQotICAgICAgICBicmVhazsKLSAgICB9ICAgIAotICAgIHJldHVybiBzZXJ2aWNlS2V5TGlzdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VzU2ltcGxlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZXNTaW1wbGVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg1NzU0MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZXNTaW1wbGVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Gb3JtSW5wdXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5RdWVyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLk5hbWU7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLkJ1c2luZXNzU2VydmljZTsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlNlcnZpY2VEZXRhaWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5TZXJ2aWNlSW5mbzsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlNlcnZpY2VJbmZvczsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlNlcnZpY2VMaXN0OwotaW1wb3J0IG9yZy51ZGRpNGoudHJhbnNwb3J0LlRyYW5zcG9ydEV4Y2VwdGlvbjsKLQotcHVibGljIGNsYXNzIFJlZ0ZpbmRTZXJ2aWNlc1NpbXBsZUFjdGlvbiBleHRlbmRzIEZpbmRBY3Rpb24KLXsKLSAgcHVibGljIFJlZ0ZpbmRTZXJ2aWNlc1NpbXBsZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUykpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0lNUExFKSk7ICAgIAotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIG5hbWUgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfTkFNRSk7Ci0KLSAgICAvLyBWYWxpZGF0ZSB0aGUgZGF0YS4KLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLQotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9OQU1FLG5hbWUpOwotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBUaGlzIHNob3VsZG4ndCBvY2N1ci4KLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBib29sZWFuIHNob3VsZEFkZFF1ZXJ5Tm9kZSA9IChwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9PVkVSUklERV9BRERfUVVFUllfTk9ERSkgPT0gbnVsbCk7Ci0gICAgICBTdHJpbmcgbmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfTkFNRSk7Ci0gICAgICBWZWN0b3IgbmFtZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIG5hbWVWZWN0b3IuYWRkRWxlbWVudChuZXcgTmFtZShuYW1lKSk7Ci0KLSAgICAgIC8vIFRoZSBhY3Rpb24gY2FuIGJlIHJ1biB1bmRlciB0aGUgY29udGV4dCBvZiBlaXRoZXIgYSByZWdpc3RyeSBvciBhIHF1ZXJ5IG5vZGUuCi0gICAgICBnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKTsKLSAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgVURESVByb3h5IHByb3h5ID0gcmVnRWxlbWVudC5nZXRQcm94eSgpOwotICAgICAgU2VydmljZUxpc3Qgc2VydmljZUxpc3QgPSBwcm94eS5maW5kX3NlcnZpY2UoIiIsbmFtZVZlY3RvcixudWxsLG51bGwsbnVsbCxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX01BWF9TRUFSQ0hfU0VUKTsKLSAgICAgIAotICAgICAgU2VydmljZUluZm9zIHNJbmZvcyA9IHNlcnZpY2VMaXN0LmdldFNlcnZpY2VJbmZvcygpOwotICAgICAgaW50IGZpbmFsTnVtYmVyT2ZCdXNpbmVzc1NlcnZpY2VzID0gTWF0aC5taW4oVURESUFjdGlvbklucHV0cy5RVUVSWV9NQVhfUkVTVUxUUyxzSW5mb3Muc2l6ZSgpKTsKLSAgICAgIFZlY3RvciBzZXJ2aWNlS2V5VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaT0wO2k8ZmluYWxOdW1iZXJPZkJ1c2luZXNzU2VydmljZXM7aSsrKQotICAgICAgewotICAgICAgICBTZXJ2aWNlSW5mbyBzSW5mbyA9IHNJbmZvcy5nZXQoaSk7Ci0gICAgICAgIHNlcnZpY2VLZXlWZWN0b3IuYWRkRWxlbWVudChzSW5mby5nZXRTZXJ2aWNlS2V5KCkpOwotICAgICAgfQotICAgICAgICAKLSAgICAgIGlmIChmaW5hbE51bWJlck9mQnVzaW5lc3NTZXJ2aWNlcyA+IDApCi0gICAgICB7Ci0gICAgICAgIGlmIChzaG91bGRBZGRRdWVyeU5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICBTZXJ2aWNlRGV0YWlsIHNlcnZpY2VEZXRhaWwgPSBwcm94eS5nZXRfc2VydmljZURldGFpbChzZXJ2aWNlS2V5VmVjdG9yKTsKLSAgICAgICAgICBWZWN0b3IgYnVzaW5lc3NTZXJ2aWNlVmVjdG9yID0gc2VydmljZURldGFpbC5nZXRCdXNpbmVzc1NlcnZpY2VWZWN0b3IoKTsKLSAgICAgICAgICBTdHJpbmcgcXVlcnlOYW1lID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FKTsKLSAgICAgICAgICBCdXNpbmVzc1NlcnZpY2VbXSBic0FycmF5ID0gbmV3IEJ1c2luZXNzU2VydmljZVtmaW5hbE51bWJlck9mQnVzaW5lc3NTZXJ2aWNlc107Ci0gICAgICAgICAgYnVzaW5lc3NTZXJ2aWNlVmVjdG9yLnRvQXJyYXkoYnNBcnJheSk7Ci0gICAgICAgICAgcXVlcnlFbGVtZW50XyA9IG5ldyBRdWVyeUVsZW1lbnQoYnNBcnJheSxxdWVyeU5hbWUscmVnRWxlbWVudC5nZXRNb2RlbCgpKTsKLSAgICAgICAgICBhZGRRdWVyeU5vZGUoKTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fU0VSVklDRVNfRk9VTkQiLFN0cmluZy52YWx1ZU9mKGJzQXJyYXkubGVuZ3RoKSkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICB0aHJvdyBuZXcgRm9ybUlucHV0RXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fU0VSVklDRVNfRk9VTkQiKSk7Ci0gICAgfQotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldENvbnRyb2xsZXIoKS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJVRERJRXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJUcmFuc3BvcnRFeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICBjYXRjaCAoRm9ybUlucHV0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoQnVzaW5lc3NBZHZhbmNlZEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzQwY2NkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcudWRkaTRqLlVERElFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai5jbGllbnQuVURESVByb3h5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5OYW1lOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5DYXRlZ29yeUJhZzsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuRGlzY292ZXJ5VVJMOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5EaXNjb3ZlcnlVUkxzOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5JZGVudGlmaWVyQmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5LZXllZFJlZmVyZW5jZTsKLQotcHVibGljIGNsYXNzIFJlZ1B1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkQWN0aW9uIGV4dGVuZHMgUHVibGlzaEFjdGlvbgotewotICBwdWJsaWMgUmVnUHVibGlzaEJ1c2luZXNzQWR2YW5jZWRBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTSxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUykpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0JVU0lORVNTRVMsU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9BRFZBTkNFRCkpOyAgICAKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIHByb2Nlc3NPdGhlcnMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyLEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIFN0cmluZ1tdIG5hbWVMYW5ndWFnZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRV9MQU5HVUFHRSk7Ci0gICAgU3RyaW5nW10gbmFtZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRSk7Ci0gICAgU3RyaW5nW10gZGVzY3JpcHRpb25MYW5ndWFnZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT05fTEFOR1VBR0UpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9ucyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9ERVNDUklQVElPTik7Ci0gICAgU3RyaW5nW10gaWRUeXBlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX1RZUEUpOwotICAgIFN0cmluZ1tdIGlkS2V5TmFtZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfSURFTlRJRklFUl9LRVlfTkFNRSk7Ci0gICAgU3RyaW5nW10gaWRLZXlWYWx1ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfSURFTlRJRklFUl9LRVlfVkFMVUUpOwotICAgIFN0cmluZ1tdIGNhdFR5cGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX1RZUEUpOwotICAgIFN0cmluZ1tdIGNhdEtleU5hbWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9OQU1FKTsKLSAgICBTdHJpbmdbXSBjYXRLZXlWYWx1ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfS0VZX1ZBTFVFKTsKLSAgICBTdHJpbmdbXSBkaXNjb3ZlcnlVUkxWYWx1ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfRElTQ09WRVJZVVJMKTsKLQotICAgIC8vIFZhbGlkYXRlIHRoZSBkYXRhLgotICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotCi0gICAgSGFzaHRhYmxlIGxhbmd1YWdlSGFzaCA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBpZiAobmFtZUxhbmd1YWdlcyAhPSBudWxsICYmIG5hbWVzICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIG5hbWVWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAvLyBVRERJJ3Mgc2F2ZSBBUEkgKEFwcGVuZGl4IEMgb2YgdGhlIFVEREkgVjIgUHJvZ3JhbW1lcnMgQVBJIFNwZWNpZmljYXRpb24pIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAvLyAxKSBPbmx5IHRoZSBmaXJzdCByb3cgY2FuIGhhdmUgYSBibGFuayBsYW5ndWFnZS4KLSAgICAgIC8vIDIpIE9ubHkgMSBuYW1lIHBlciBsYW5ndWFnZS4KLSAgICAgIFN0cmluZ1tdIHBhcmFtZXRlcnMgPSBuZXcgU3RyaW5nWzJdOwotICAgICAgcGFyYW1ldGVyc1swXSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPG5hbWVzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIHBhcmFtZXRlcnNbMV0gPSBTdHJpbmcudmFsdWVPZihpKzEpOwotICAgICAgICBOYW1lIHVkZGk0ak5hbWU7Ci0gICAgICAgIGlmIChuYW1lTGFuZ3VhZ2VzW2ldLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICB1ZGRpNGpOYW1lID0gbmV3IE5hbWUobmFtZXNbaV0sbmFtZUxhbmd1YWdlc1tpXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHVkZGk0ak5hbWUgPSBuZXcgTmFtZShuYW1lc1tpXSk7Ci0gICAgICAgICAgaWYgKGkgIT0gMCAmJiAhc3ViUXVlcnlJbml0aWF0ZWRfKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3JtVG9vbFBJLmZsYWdSb3dFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX05BTUVTLGkpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfQkxBTktfTEFOR1VBR0UiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhbmd1YWdlSGFzaC5nZXQobmFtZUxhbmd1YWdlc1tpXSkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyxpKTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1JPV19EVVBMSUNBVEVfTEFOR1VBR0UiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgbGFuZ3VhZ2VIYXNoLnB1dChuYW1lTGFuZ3VhZ2VzW2ldLEJvb2xlYW4uVFJVRSk7Ci0gICAgICAgIGlmIChuYW1lc1tpXS50cmltKCkubGVuZ3RoKCkgPCAxKQotICAgICAgICB7Ci0gICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICBmb3JtVG9vbFBJLmZsYWdSb3dFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX05BTUVTLGkpOwotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfUk9XX0lOVkFMSURfVEVYVCIscGFyYW1ldGVycykpOwotICAgICAgICB9Ci0gICAgICAgIG5hbWVWZWN0b3IuYWRkRWxlbWVudCh1ZGRpNGpOYW1lKTsKLSAgICAgIH0KLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX05BTUVTLG5hbWVWZWN0b3IpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyk7Ci0gICAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXykKLSAgICAgIHsKLSAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgZm9ybVRvb2xQSS5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fTkFNRVMiKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0aW9uTGFuZ3VhZ2VzICE9IG51bGwgJiYgZGVzY3JpcHRpb25zICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIGRlc2NyaXB0aW9uVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgU3RyaW5nW10gcGFyYW1ldGVycyA9IG5ldyBTdHJpbmdbMl07Ci0gICAgICBwYXJhbWV0ZXJzWzBdID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfREVTQ1JJUFRJT04iKTsKLSAgICAgIGxhbmd1YWdlSGFzaC5jbGVhcigpOwotICAgICAgZm9yIChpbnQgaT0wO2k8ZGVzY3JpcHRpb25zLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIHBhcmFtZXRlcnNbMV0gPSBTdHJpbmcudmFsdWVPZihpKzEpOwotICAgICAgICBEZXNjcmlwdGlvbiB1ZGRpNGpEZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKGRlc2NyaXB0aW9uTGFuZ3VhZ2VzW2ldLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICB1ZGRpNGpEZXNjcmlwdGlvbiA9IG5ldyBEZXNjcmlwdGlvbihkZXNjcmlwdGlvbnNbaV0sZGVzY3JpcHRpb25MYW5ndWFnZXNbaV0pOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICB1ZGRpNGpEZXNjcmlwdGlvbiA9IG5ldyBEZXNjcmlwdGlvbihkZXNjcmlwdGlvbnNbaV0pOwotICAgICAgICAgIGlmIChpICE9IDAgJiYgIXN1YlF1ZXJ5SW5pdGlhdGVkXykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1JPV19CTEFOS19MQU5HVUFHRSIscGFyYW1ldGVycykpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobGFuZ3VhZ2VIYXNoLmdldChkZXNjcmlwdGlvbkxhbmd1YWdlc1tpXSkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfRFVQTElDQVRFX0xBTkdVQUdFIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGxhbmd1YWdlSGFzaC5wdXQoZGVzY3JpcHRpb25MYW5ndWFnZXNbaV0sQm9vbGVhbi5UUlVFKTsKLSAgICAgICAgaWYgKGRlc2NyaXB0aW9uc1tpXS50cmltKCkubGVuZ3RoKCkgPCAxKQotICAgICAgICB7Ci0gICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICBmb3JtVG9vbFBJLmZsYWdSb3dFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RFU0NSSVBUSU9OUyxpKTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1JPV19JTlZBTElEX1RFWFQiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgfQotICAgICAgICBkZXNjcmlwdGlvblZlY3Rvci5hZGRFbGVtZW50KHVkZGk0akRlc2NyaXB0aW9uKTsKLSAgICAgIH0KLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RFU0NSSVBUSU9OUyxkZXNjcmlwdGlvblZlY3Rvcik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfREVTQ1JJUFRJT05TKTsKLQotICAgIGlmIChpZFR5cGVzICE9IG51bGwgJiYgaWRLZXlOYW1lcyAhPSBudWxsICYmIGlkS2V5VmFsdWVzICE9IG51bGwpCi0gICAgewotICAgICAgSWRlbnRpZmllckJhZyBpZEJhZyA9IG5ldyBJZGVudGlmaWVyQmFnKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxpZEtleU5hbWVzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gbmV3IEtleWVkUmVmZXJlbmNlKGlkS2V5TmFtZXNbaV0saWRLZXlWYWx1ZXNbaV0saWRUeXBlc1tpXSk7Ci0gICAgICAgIGlkQmFnLmFkZChrcik7Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19JREVOVElGSUVSUyxpZEJhZyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfSURFTlRJRklFUlMpOwotCi0gICAgaWYgKGNhdFR5cGVzICE9IG51bGwgJiYgY2F0S2V5TmFtZXMgIT0gbnVsbCAmJiBjYXRLZXlWYWx1ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBDYXRlZ29yeUJhZyBjYXRCYWcgPSBuZXcgQ2F0ZWdvcnlCYWcoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGNhdFR5cGVzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gbmV3IEtleWVkUmVmZXJlbmNlKGNhdEtleU5hbWVzW2ldLGNhdEtleVZhbHVlc1tpXSxjYXRUeXBlc1tpXSk7Ci0gICAgICAgIGNhdEJhZy5hZGQoa3IpOwotICAgICAgfQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfQ0FURUdPUklFUyxjYXRCYWcpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0NBVEVHT1JJRVMpOwotICAgICAgCi0gICAgaWYgKGRpc2NvdmVyeVVSTFZhbHVlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIERpc2NvdmVyeVVSTHMgZGlzY292ZXJ5VVJMcyA9IG5ldyBEaXNjb3ZlcnlVUkxzKCk7Ci0gICAgICBTdHJpbmdbXSBwYXJhbWV0ZXJzID0gbmV3IFN0cmluZ1syXTsKLSAgICAgIHBhcmFtZXRlcnNbMF0gPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ESVNDT1ZFUllVUkwiKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGRpc2NvdmVyeVVSTFZhbHVlcy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBwYXJhbWV0ZXJzWzFdID0gU3RyaW5nLnZhbHVlT2YoaSsxKTsKLSAgICAgICAgaWYgKCFzdWJRdWVyeUluaXRpYXRlZF8gJiYgIVZhbGlkYXRvci52YWxpZGF0ZVVSTChkaXNjb3ZlcnlVUkxWYWx1ZXNbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICBmb3JtVG9vbFBJLmZsYWdSb3dFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RJU0NPVkVSWVVSTFMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfSU5WQUxJRF9URVhUIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZGlzY292ZXJ5VVJMcy5hZGQobmV3IERpc2NvdmVyeVVSTChkaXNjb3ZlcnlVUkxWYWx1ZXNbaV0sIiIpKTsKLSAgICAgIH0KLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RJU0NPVkVSWVVSTFMsZGlzY292ZXJ5VVJMcyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRElTQ09WRVJZVVJMUyk7ICAgICAgCi0KLSAgICByZXR1cm4gaW5wdXRzVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgIFN0cmluZyB1c2VySWQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgICBTdHJpbmcgcGFzc3dvcmQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEKTsKLSAgICAgIFZlY3RvciBuYW1lVmVjdG9yID0gKFZlY3Rvcilwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyk7Ci0gICAgICBWZWN0b3IgZGVzY3JpcHRpb25WZWN0b3IgPSAoVmVjdG9yKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RFU0NSSVBUSU9OUyk7Ci0gICAgICBJZGVudGlmaWVyQmFnIGlkZW50aWZpZXJCYWcgPSAoSWRlbnRpZmllckJhZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19JREVOVElGSUVSUyk7Ci0gICAgICBDYXRlZ29yeUJhZyBjYXRlZ29yeUJhZyA9IChDYXRlZ29yeUJhZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19DQVRFR09SSUVTKTsKLSAgICAgIERpc2NvdmVyeVVSTHMgZGlzY292ZXJ5VVJMcyA9IChEaXNjb3ZlcnlVUkxzKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RJU0NPVkVSWVVSTFMpOwotCi0gICAgICAvLyBUaGUgYWN0aW9uIGNhbiBiZSBydW4gdW5kZXIgdGhlIGNvbnRleHQgb2YgZWl0aGVyIGEgcmVnaXN0cnkgb3IgYSBxdWVyeSBub2RlLgotICAgICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICBpZiAoIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgICAgICByZWdFbGVtZW50LnBlcmZvcm1Mb2dpbihwdWJsaXNoVVJMLHVzZXJJZCxwYXNzd29yZCk7Ci0gICAgICBVRERJUHJveHkgcHJveHkgPSByZWdFbGVtZW50LmdldFByb3h5KCk7Ci0KLSAgICAgIEJ1c2luZXNzRW50aXR5IGJlID0gbmV3IEJ1c2luZXNzRW50aXR5KCk7Ci0gICAgICBiZS5zZXRCdXNpbmVzc0tleSgiIik7Ci0gICAgICBiZS5zZXROYW1lVmVjdG9yKG5hbWVWZWN0b3IpOwotICAgICAgYmUuc2V0RGVzY3JpcHRpb25WZWN0b3IoZGVzY3JpcHRpb25WZWN0b3IpOwotICAgICAgYmUuc2V0SWRlbnRpZmllckJhZyhpZGVudGlmaWVyQmFnKTsKLSAgICAgIGJlLnNldENhdGVnb3J5QmFnKGNhdGVnb3J5QmFnKTsKLSAgICAgIGJlLnNldERpc2NvdmVyeVVSTHMoZGlzY292ZXJ5VVJMcyk7Ci0gICAgICBWZWN0b3IgYmVWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBiZVZlY3Rvci5hZGQoYmUpOwotCi0gICAgICBiZSA9IChCdXNpbmVzc0VudGl0eSlwcm94eS5zYXZlX2J1c2luZXNzKHJlZ0VsZW1lbnQuZ2V0QXV0aEluZm9TdHJpbmcoKSwgYmVWZWN0b3IpLmdldEJ1c2luZXNzRW50aXR5VmVjdG9yKCkuZ2V0KDApOwotICAgICAgYWRkUHVibGlzaGVkSXRlbU5vZGUoYmUscmVnRWxlbWVudCk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fQlVTSU5FU1NfUFVCTElTSEVEIixiZS5nZXREZWZhdWx0TmFtZVN0cmluZygpKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlRyYW5zcG9ydEV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUudG9TdHJpbmcoKSk7Ci0gICAgfQotICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJNYWxmb3JtZWRVUkxFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoQnVzaW5lc3NTaW1wbGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hCdXNpbmVzc1NpbXBsZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjE5OWI3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hCdXNpbmVzc1NpbXBsZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5OYW1lOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgUmVnUHVibGlzaEJ1c2luZXNzU2ltcGxlQWN0aW9uIGV4dGVuZHMgUHVibGlzaEFjdGlvbgotewotICBwdWJsaWMgUmVnUHVibGlzaEJ1c2luZXNzU2ltcGxlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0sU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMpKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0lNUExFKSk7ICAgIAotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIG5hbWUgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX0JVU0lORVNTX05BTUUpOwotICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfQlVTSU5FU1NfREVTQ1JJUFRJT04pOwotCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0KLSAgICBpZiAobmFtZSAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX0JVU0lORVNTX05BTUUsbmFtZSk7Ci0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKG5hbWUpKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9OQU1FIikpOwotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdGlvbiAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX0JVU0lORVNTX0RFU0NSSVBUSU9OLGRlc2NyaXB0aW9uKTsKLQotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBTdHJpbmcgcHVibGlzaFVSTCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgIFN0cmluZyB1c2VySWQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgU3RyaW5nIHBhc3N3b3JkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0gICAgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FKTsKLSAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19ERVNDUklQVElPTik7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgVURESVByb3h5IHByb3h5ID0gcmVnRWxlbWVudC5nZXRQcm94eSgpOwotICAgICAgaWYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgICAgICAgcmVnRWxlbWVudC5wZXJmb3JtTG9naW4ocHVibGlzaFVSTCx1c2VySWQscGFzc3dvcmQpOwotCi0gICAgICBCdXNpbmVzc0VudGl0eSBiZSA9IG5ldyBCdXNpbmVzc0VudGl0eSgpOwotICAgICAgYmUuc2V0QnVzaW5lc3NLZXkoIiIpOwotICAgICAgYmUuc2V0RGVmYXVsdE5hbWUobmV3IE5hbWUobmFtZSkpOwotICAgICAgYmUuc2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKGRlc2NyaXB0aW9uKTsKLSAgICAgIFZlY3RvciBiZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGJlVmVjdG9yLmFkZChiZSk7Ci0KLSAgICAgIGJlID0gKEJ1c2luZXNzRW50aXR5KXByb3h5LnNhdmVfYnVzaW5lc3MocmVnRWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpLCBiZVZlY3RvcikuZ2V0QnVzaW5lc3NFbnRpdHlWZWN0b3IoKS5nZXQoMCk7Ci0gICAgICBhZGRQdWJsaXNoZWRJdGVtTm9kZShiZSxyZWdFbGVtZW50KTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19CVVNJTkVTU19QVUJMSVNIRUQiLGJlLmdldERlZmF1bHROYW1lU3RyaW5nKCkpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVHJhbnNwb3J0RXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQyNDFmNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDE5IDE4Mjg2NCAgIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkudXRpbC5VZGRpNGpIZWxwZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5EZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLk5hbWU7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkNhdGVnb3J5QmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5LZXllZFJlZmVyZW5jZTsKLQotcHVibGljIGNsYXNzIFJlZ1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBY3Rpb24gZXh0ZW5kcyBQdWJsaXNoQWN0aW9uCi17Ci0gIHB1YmxpYyBSZWdQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0sU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTKSk7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRVMsU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9BRFZBTkNFRCkpOyAgICAKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIHByb2Nlc3NPdGhlcnMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyLEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBidXNOb2RlSWRzID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLk5PREVJRF9CVVNJTkVTUyk7Ci0gICAgU3RyaW5nW10gc2VySW50SWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLk5PREVJRF9TRVJWSUNFX0lOVEVSRkFDRSk7Ci0gICAgU3RyaW5nIHdzZGxVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCk7Ci0gICAgU3RyaW5nW10gbmFtZUxhbmd1YWdlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FX0xBTkdVQUdFKTsKLSAgICBTdHJpbmdbXSBuYW1lcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FKTsgICAgCi0gICAgU3RyaW5nW10gZGVzY3JpcHRpb25MYW5ndWFnZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT05fTEFOR1VBR0UpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9ucyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9ERVNDUklQVElPTik7Ci0gICAgU3RyaW5nW10gY2F0VHlwZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfVFlQRSk7Ci0gICAgU3RyaW5nW10gY2F0S2V5TmFtZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfS0VZX05BTUUpOwotICAgIFN0cmluZ1tdIGNhdEtleVZhbHVlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9LRVlfVkFMVUUpOwotCi0gICAgLy8gVmFsaWRhdGUgdGhlIGRhdGEuCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0KLSAgICBpZiAoYnVzTm9kZUlkcyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciBzZXJ2aWNlQnVzaW5lc3MgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0JVU0lORVNTKTsKLSAgICAgIGlmIChzZXJ2aWNlQnVzaW5lc3MgPT0gbnVsbCkKLSAgICAgICAgc2VydmljZUJ1c2luZXNzID0gbmV3IFZlY3RvcigpOwotICAgICAgZWxzZQotICAgICAgICBzZXJ2aWNlQnVzaW5lc3MucmVtb3ZlQWxsRWxlbWVudHMoKTsKLSAgICAgIFZlY3RvciBzZXJ2aWNlQnVzaW5lc3NDb3B5ID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTU19DT1BZKTsKLSAgICAgIC8vIFRoZSBicm93c2VyIHdpbGwgZW5mb3JjZSB0aGUgcnVsZSBvZiBoYXZpbmcgb25seSBvbmUgYnVzaW5lc3MgaW4gdGhpcyBsaXN0LgotICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpc2VydmljZUJ1c2luZXNzQ29weS5lbGVtZW50QXQoMCk7Ci0gICAgICBzZXJ2aWNlQnVzaW5lc3MuYWRkRWxlbWVudChsaXN0RWxlbWVudCk7Ci0gICAgICBCdXNpbmVzc0VudGl0eSBzcCA9IChCdXNpbmVzc0VudGl0eSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1Msc2VydmljZUJ1c2luZXNzKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9QUk9WSURFUixzcCk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSxzcC5nZXRCdXNpbmVzc0tleSgpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTUyk7Ci0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9QUk9WSURFUik7Ci0gICAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXykKLSAgICAgIHsKLSAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgZm9ybVRvb2xQSS5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0JVU0lORVNTKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX0JVU0lORVNTIikpOwotICAgICAgfSAgICAgIAotICAgIH0KLSAgICAKLSAgICBpZiAoc2VySW50SWRzICE9IG51bGwgJiYgc2VySW50SWRzLmxlbmd0aCA+IDApCi0gICAgewotICAgICAgVmVjdG9yIHNlcnZpY2VJbnRlcmZhY2VzID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVMpOwotICAgICAgaWYgKHNlcnZpY2VJbnRlcmZhY2VzID09IG51bGwpCi0gICAgICAgIHNlcnZpY2VJbnRlcmZhY2VzID0gbmV3IFZlY3RvcigpOwotICAgICAgZWxzZQotICAgICAgICBzZXJ2aWNlSW50ZXJmYWNlcy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgVmVjdG9yIHNlcnZpY2VJbnRlcmZhY2VzQ29weSA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTX0NPUFkpOwotICAgICAgVmVjdG9yIHRtb2RlbHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gc2VydmljZUludGVyZmFjZXNDb3B5Lml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWl0Lm5leHQoKTsKLSAgICAgICAgaW50IHRhcmdldE5vZGVJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldE5vZGVJZCgpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlckludElkcy5sZW5ndGg7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0YXJnZXROb2RlSWQgPT0gSW50ZWdlci5wYXJzZUludChzZXJJbnRJZHNbaV0pKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBzZXJ2aWNlSW50ZXJmYWNlcy5hZGQobGlzdEVsZW1lbnQpOwotICAgICAgICAgICAgICB0bW9kZWxzLmFkZChsaXN0RWxlbWVudC5nZXRPYmplY3QoKSk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFUywgc2VydmljZUludGVyZmFjZXMpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9UTU9ERUwsIHRtb2RlbHMpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFUyk7Ci0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfVE1PREVMKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHdzZGxVUkwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMLHdzZGxVUkwpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCx3c2RsVVJMKTsKLSAgICB9Ci0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHdzZGxVUkwpKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfV1NETF9VUkwpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1dTRExfVVJMIikpOwotICAgIH0KLQotICAgIEhhc2h0YWJsZSBsYW5ndWFnZUhhc2ggPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgaWYgKG5hbWVMYW5ndWFnZXMgIT0gbnVsbCAmJiBuYW1lcyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciBuYW1lVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgLy8gVURESSdzIHNhdmUgQVBJIChBcHBlbmRpeCBDIG9mIHRoZSBVRERJIFYyIFByb2dyYW1tZXJzIEFQSSBTcGVjaWZpY2F0aW9uKSByZXF1aXJlcyB0aGUgZm9sbG93aW5nOgotICAgICAgLy8gMSkgT25seSB0aGUgZmlyc3Qgcm93IGNhbiBoYXZlIGEgYmxhbmsgbGFuZ3VhZ2UuCi0gICAgICAvLyAyKSBPbmx5IDEgbmFtZSBwZXIgbGFuZ3VhZ2UuCi0gICAgICBTdHJpbmdbXSBwYXJhbWV0ZXJzID0gbmV3IFN0cmluZ1syXTsKLSAgICAgIHBhcmFtZXRlcnNbMF0gPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FIik7Ci0gICAgICBmb3IgKGludCBpPTA7aTxuYW1lcy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBwYXJhbWV0ZXJzWzFdID0gU3RyaW5nLnZhbHVlT2YoaSsxKTsKLSAgICAgICAgTmFtZSB1ZGRpNGpOYW1lOwotICAgICAgICBpZiAobmFtZUxhbmd1YWdlc1tpXS5sZW5ndGgoKSA+IDApCi0gICAgICAgICAgdWRkaTRqTmFtZSA9IG5ldyBOYW1lKG5hbWVzW2ldLG5hbWVMYW5ndWFnZXNbaV0pOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICB1ZGRpNGpOYW1lID0gbmV3IE5hbWUobmFtZXNbaV0pOwotICAgICAgICAgIGlmIChpICE9IDAgJiYgIXN1YlF1ZXJ5SW5pdGlhdGVkXykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTLGkpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfQkxBTktfTEFOR1VBR0UiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhbmd1YWdlSGFzaC5nZXQobmFtZUxhbmd1YWdlc1tpXSkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTLGkpOwotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfUk9XX0RVUExJQ0FURV9MQU5HVUFHRSIscGFyYW1ldGVycykpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBsYW5ndWFnZUhhc2gucHV0KG5hbWVMYW5ndWFnZXNbaV0sQm9vbGVhbi5UUlVFKTsKLSAgICAgICAgaWYgKG5hbWVzW2ldLnRyaW0oKS5sZW5ndGgoKSA8IDEpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9OQU1FUyxpKTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1JPV19JTlZBTElEX1RFWFQiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgfQotICAgICAgICBuYW1lVmVjdG9yLmFkZEVsZW1lbnQodWRkaTRqTmFtZSk7Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTLG5hbWVWZWN0b3IpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTKTsKLSAgICAgIGlmICghc3ViUXVlcnlJbml0aWF0ZWRfKQotICAgICAgewotICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTkFNRVMpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX05BTUVTIikpOwotICAgICAgfQotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdGlvbkxhbmd1YWdlcyAhPSBudWxsICYmIGRlc2NyaXB0aW9ucyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciBkZXNjcmlwdGlvblZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIFN0cmluZ1tdIHBhcmFtZXRlcnMgPSBuZXcgU3RyaW5nWzJdOwotICAgICAgcGFyYW1ldGVyc1swXSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OIik7Ci0gICAgICBsYW5ndWFnZUhhc2guY2xlYXIoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGRlc2NyaXB0aW9ucy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBwYXJhbWV0ZXJzWzFdID0gU3RyaW5nLnZhbHVlT2YoaSsxKTsKLSAgICAgICAgRGVzY3JpcHRpb24gdWRkaTRqRGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChkZXNjcmlwdGlvbkxhbmd1YWdlc1tpXS5sZW5ndGgoKSA+IDApCi0gICAgICAgICAgdWRkaTRqRGVzY3JpcHRpb24gPSBuZXcgRGVzY3JpcHRpb24oZGVzY3JpcHRpb25zW2ldLGRlc2NyaXB0aW9uTGFuZ3VhZ2VzW2ldKTsKLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgdWRkaTRqRGVzY3JpcHRpb24gPSBuZXcgRGVzY3JpcHRpb24oZGVzY3JpcHRpb25zW2ldKTsKLSAgICAgICAgICBpZiAoaSAhPSAwICYmICFzdWJRdWVyeUluaXRpYXRlZF8pCi0gICAgICAgICAgewotICAgICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1JPV19CTEFOS19MQU5HVUFHRSIscGFyYW1ldGVycykpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobGFuZ3VhZ2VIYXNoLmdldChkZXNjcmlwdGlvbkxhbmd1YWdlc1tpXSkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0RFU0NSSVBUSU9OUyxpKTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1JPV19EVVBMSUNBVEVfTEFOR1VBR0UiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgbGFuZ3VhZ2VIYXNoLnB1dChkZXNjcmlwdGlvbkxhbmd1YWdlc1tpXSxCb29sZWFuLlRSVUUpOwotICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2ldLnRyaW0oKS5sZW5ndGgoKSA8IDEpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfSU5WQUxJRF9URVhUIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZGVzY3JpcHRpb25WZWN0b3IuYWRkRWxlbWVudCh1ZGRpNGpEZXNjcmlwdGlvbik7Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0RFU0NSSVBUSU9OUyxkZXNjcmlwdGlvblZlY3Rvcik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMpOwotCi0gICAgaWYgKGNhdFR5cGVzICE9IG51bGwgJiYgY2F0S2V5TmFtZXMgIT0gbnVsbCAmJiBjYXRLZXlWYWx1ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBDYXRlZ29yeUJhZyBjYXRCYWcgPSBuZXcgQ2F0ZWdvcnlCYWcoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGNhdFR5cGVzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gbmV3IEtleWVkUmVmZXJlbmNlKGNhdEtleU5hbWVzW2ldLGNhdEtleVZhbHVlc1tpXSxjYXRUeXBlc1tpXSk7Ci0gICAgICAgIGNhdEJhZy5hZGQoa3IpOwotICAgICAgfQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9DQVRFR09SSUVTLGNhdEJhZyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9DQVRFR09SSUVTKTsKLQotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICAgU3RyaW5nIHVzZXJJZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotICAgICAgQnVzaW5lc3NFbnRpdHkgYmUgPSAoQnVzaW5lc3NFbnRpdHkpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX1BST1ZJREVSKTsKLSAgICAgIFN0cmluZyBidXNpbmVzc0tleSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVkpOwotICAgICAgVmVjdG9yIHRNb2RlbFZlY3RvciA9IChWZWN0b3IpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9UTU9ERUwpOwotICAgICAgU3RyaW5nIHdzZGxVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfV1NETF9VUkwpOwotICAgICAgVmVjdG9yIG5hbWVWZWN0b3IgPSAoVmVjdG9yKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTkFNRVMpOwotICAgICAgVmVjdG9yIGRlc2NyaXB0aW9uVmVjdG9yID0gKFZlY3Rvcilwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0RFU0NSSVBUSU9OUyk7Ci0gICAgICBDYXRlZ29yeUJhZyBjYXRlZ29yeUJhZyA9IChDYXRlZ29yeUJhZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0NBVEVHT1JJRVMpOwotCi0gICAgICAvLyBUaGUgYWN0aW9uIGNhbiBiZSBydW4gdW5kZXIgdGhlIGNvbnRleHQgb2YgZWl0aGVyIGEgcmVnaXN0cnkgb3IgYSBxdWVyeSBub2RlLgotICAgICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICBpZiAoIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgICAgICByZWdFbGVtZW50LnBlcmZvcm1Mb2dpbihwdWJsaXNoVVJMLHVzZXJJZCxwYXNzd29yZCk7Ci0gICAgICBVRERJUHJveHkgcHJveHkgPSByZWdFbGVtZW50LmdldFByb3h5KCk7Ci0KLSAgICAgIFVkZGk0akhlbHBlciB1ZGRpNGpIZWxwZXIgPSBuZXcgVWRkaTRqSGVscGVyKCk7Ci0gICAgICBEZWZpbml0aW9uIGRlZiA9IHVkZGk0akhlbHBlci5nZXRXU0RMRGVmaW5pdGlvbih3c2RsVVJMKTsKLQotICAgICAgQnVzaW5lc3NTZXJ2aWNlIGJzOwotICAgICAgaWYgKHRNb2RlbFZlY3RvciAhPSBudWxsICYmIHRNb2RlbFZlY3Rvci5zaXplKCkgPiAwKQotICAgICAgICBicyA9IHVkZGk0akhlbHBlci5uZXdCdXNpbmVzc1NlcnZpY2Uod3NkbFVSTCwgZGVmLCAoVE1vZGVsW10pdE1vZGVsVmVjdG9yLnRvQXJyYXkobmV3IFRNb2RlbFswXSkpOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBSZWdQdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUFjdGlvbiByZWdQdWJsaXNoU0lBY3Rpb24gPSBuZXcgUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBY3Rpb24oY29udHJvbGxlcl8pOwotICAgICAgICBpbnQgY3VycmVudE5vZGVJZCA9IGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpLmdldE5vZGVJZCgpOwotICAgICAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHJlZ05vZGVfLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgICAgIFRNb2RlbFtdIHRNb2RlbHMgPSBudWxsOwotICAgICAgICBpZiAodWRkaTRqSGVscGVyLmlzTW9ub2xpdGhpY1dTREwoZGVmKSkKLSAgICAgICAgewotICAgICAgICAgIHRNb2RlbHMgPSBuZXcgVE1vZGVsWzFdOwotICAgICAgICAgIHRNb2RlbHNbMF0gPSB1ZGRpNGpIZWxwZXIubmV3VE1vZGVsKHdzZGxVUkwsIGRlZik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nW10gaW1wb3J0cyA9IHVkZGk0akhlbHBlci5nZXRJbXBvcnRzKGRlZiwgd3NkbFVSTCk7Ci0gICAgICAgICAgdE1vZGVscyA9IG5ldyBUTW9kZWxbaW1wb3J0cy5sZW5ndGhdOwotICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdE1vZGVscy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIHRNb2RlbHNbaV0gPSB1ZGRpNGpIZWxwZXIubmV3VE1vZGVsKGltcG9ydHNbaV0pOwotICAgICAgICB9Ci0gICAgICAgIEhhc2h0YWJsZSB0TW9kZWxzVGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICAgIGlmICh0TW9kZWxzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBmb3IgKGludCBpPTA7aTx0TW9kZWxzLmxlbmd0aDtpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHJlZ1B1Ymxpc2hTSUFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUodWRkaTRqSGVscGVyLmdldFdTREwodE1vZGVsc1tpXSksIHRNb2RlbHNbaV0pOwotICAgICAgICAgICAgaWYgKGlucHV0c1ZhbGlkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZWdQdWJsaXNoU0lBY3Rpb24ucnVuKCk7Ci0gICAgICAgICAgICAgIE9iamVjdCBzYXZlZFRNb2RlbCA9IHJlZ1B1Ymxpc2hTSUFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCkuZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfT1VUUFVUX1NBVkVEX1RNT0RFTCk7Ci0gICAgICAgICAgICAgIGlmIChzYXZlZFRNb2RlbCAhPSBudWxsKQotICAgICAgICAgICAgICAgIHRNb2RlbHNUYWJsZS5wdXQoKChUTW9kZWwpc2F2ZWRUTW9kZWwpLmdldE5hbWVTdHJpbmcoKSwgc2F2ZWRUTW9kZWwpOwotICAgICAgICAgICAgICAvLyBSZXNlbGVjdCB0aGUgY3VycmVudCBub2RlLgotICAgICAgICAgICAgICBub2RlTWFuYWdlci5zZXRTZWxlY3RlZE5vZGVJZChjdXJyZW50Tm9kZUlkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnMgPSB1ZGRpNGpIZWxwZXIubmV3QnVzaW5lc3NTZXJ2aWNlKHdzZGxVUkwsIGRlZiwgdE1vZGVsc1RhYmxlKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgaWYgKGJlICE9IG51bGwpCi0gICAgICAgIGJzLnNldEJ1c2luZXNzS2V5KGJlLmdldEJ1c2luZXNzS2V5KCkpOwotICAgICAgZWxzZSBpZiAoYnVzaW5lc3NLZXkgIT0gbnVsbCkKLSAgICAgICAgYnMuc2V0QnVzaW5lc3NLZXkoYnVzaW5lc3NLZXkpOwotICAgICAgYnMuc2V0TmFtZVZlY3RvcihuYW1lVmVjdG9yKTsKLSAgICAgIGJzLnNldERlc2NyaXB0aW9uVmVjdG9yKGRlc2NyaXB0aW9uVmVjdG9yKTsKLSAgICAgIGJzLnNldENhdGVnb3J5QmFnKGNhdGVnb3J5QmFnKTsKLSAgICAgIFZlY3RvciBic1ZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGJzVmVjdG9yLmFkZChicyk7Ci0gICAgICByZWdFbGVtZW50LmhhbmRsZVByZUludm9jYXRpb24oYnMpOwotICAgICAgYnMgPSAoQnVzaW5lc3NTZXJ2aWNlKXByb3h5LnNhdmVfc2VydmljZShyZWdFbGVtZW50LmdldEF1dGhJbmZvU3RyaW5nKCksIGJzVmVjdG9yKS5nZXRCdXNpbmVzc1NlcnZpY2VWZWN0b3IoKS5nZXQoMCk7Ci0gICAgICBhZGRQdWJsaXNoZWRJdGVtTm9kZShicyxyZWdFbGVtZW50KTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19TRVJWSUNFX1BVQkxJU0hFRCIsYnMuZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKSkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiV1NETEV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVHJhbnNwb3J0RXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgewotICAgIAlpZihVRERJRXhjZXB0aW9uSGFuZGxlci5yZXF1aXJlc1Jlc2V0KGUpKXsKLSAgICAJCVJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIAkJcmVnRWxlbWVudC5zZXREZWZhdWx0cygpOwotICAgIAl9Ci0gICAgCW1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiTWFsZm9ybWVkVVJMRXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7ICAgICAgCi0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDFmNWM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MTkgMTgyODY0ICAgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS51dGlsLlVkZGk0akhlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLkRlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkNhdGVnb3J5QmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5JZGVudGlmaWVyQmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5LZXllZFJlZmVyZW5jZTsKLQotcHVibGljIGNsYXNzIFJlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRBY3Rpb24gZXh0ZW5kcyBQdWJsaXNoQWN0aW9uCi17Ci0gIHB1YmxpYyBSZWdQdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0sU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUykpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VfSU5URVJGQUNFUyxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0FEVkFOQ0VEKSk7ICAgIAotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHdzZGxVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCk7Ci0gICAgU3RyaW5nIG5hbWUgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSk7Ci0gICAgU3RyaW5nW10gZGVzY3JpcHRpb25MYW5ndWFnZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT05fTEFOR1VBR0UpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9ucyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9ERVNDUklQVElPTik7Ci0gICAgU3RyaW5nW10gaWRUeXBlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX1RZUEUpOwotICAgIFN0cmluZ1tdIGlkS2V5TmFtZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfSURFTlRJRklFUl9LRVlfTkFNRSk7Ci0gICAgU3RyaW5nW10gaWRLZXlWYWx1ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfSURFTlRJRklFUl9LRVlfVkFMVUUpOwotICAgIFN0cmluZ1tdIGNhdFR5cGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX1RZUEUpOwotICAgIFN0cmluZ1tdIGNhdEtleU5hbWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9OQU1FKTsKLSAgICBTdHJpbmdbXSBjYXRLZXlWYWx1ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfS0VZX1ZBTFVFKTsKLQotICAgIC8vIFZhbGlkYXRlIHRoZSBkYXRhLgotICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotCi0gICAgSGFzaHRhYmxlIGxhbmd1YWdlSGFzaCA9IG5ldyBIYXNodGFibGUoKTsKLQotICAgIGlmICh3c2RsVVJMICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9XU0RMX1VSTCx3c2RsVVJMKTsKLQotICAgIGlmICghc3ViUXVlcnlJbml0aWF0ZWRfICYmICFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcod3NkbFVSTCkpCi0gICAgewotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgIGZvcm1Ub29sUEkuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfV1NETF9VUkwpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1dTRExfVVJMIikpOwotICAgIH0KLQotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FLG5hbWUpOwotCi0gICAgaWYgKCFzdWJRdWVyeUluaXRpYXRlZF8gJiYgIVZhbGlkYXRvci52YWxpZGF0ZVN0cmluZyhuYW1lKSkKLSAgICB7Ci0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgZm9ybVRvb2xQSS5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9OQU1FIikpOwotICAgIH0KLQotICAgIGlmIChkZXNjcmlwdGlvbkxhbmd1YWdlcyAhPSBudWxsICYmIGRlc2NyaXB0aW9ucyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciBkZXNjcmlwdGlvblZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIFN0cmluZ1tdIHBhcmFtZXRlcnMgPSBuZXcgU3RyaW5nWzJdOwotICAgICAgcGFyYW1ldGVyc1swXSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OIik7Ci0gICAgICBsYW5ndWFnZUhhc2guY2xlYXIoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGRlc2NyaXB0aW9ucy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBwYXJhbWV0ZXJzWzFdID0gU3RyaW5nLnZhbHVlT2YoaSsxKTsKLSAgICAgICAgRGVzY3JpcHRpb24gdWRkaTRqRGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChkZXNjcmlwdGlvbkxhbmd1YWdlc1tpXS5sZW5ndGgoKSA+IDApCi0gICAgICAgICAgdWRkaTRqRGVzY3JpcHRpb24gPSBuZXcgRGVzY3JpcHRpb24oZGVzY3JpcHRpb25zW2ldLGRlc2NyaXB0aW9uTGFuZ3VhZ2VzW2ldKTsKLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgdWRkaTRqRGVzY3JpcHRpb24gPSBuZXcgRGVzY3JpcHRpb24oZGVzY3JpcHRpb25zW2ldKTsKLSAgICAgICAgICBpZiAoaSAhPSAwICYmICFzdWJRdWVyeUluaXRpYXRlZF8pCi0gICAgICAgICAgewotICAgICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT05TLGkpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfQkxBTktfTEFOR1VBR0UiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhbmd1YWdlSGFzaC5nZXQoZGVzY3JpcHRpb25MYW5ndWFnZXNbaV0pICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT05TLGkpOwotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfUk9XX0RVUExJQ0FURV9MQU5HVUFHRSIscGFyYW1ldGVycykpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBsYW5ndWFnZUhhc2gucHV0KGRlc2NyaXB0aW9uTGFuZ3VhZ2VzW2ldLEJvb2xlYW4uVFJVRSk7Ci0gICAgICAgIGlmIChkZXNjcmlwdGlvbnNbaV0udHJpbSgpLmxlbmd0aCgpIDwgMSkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfSU5WQUxJRF9URVhUIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZGVzY3JpcHRpb25WZWN0b3IuYWRkRWxlbWVudCh1ZGRpNGpEZXNjcmlwdGlvbik7Ci0gICAgICB9Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTlMsZGVzY3JpcHRpb25WZWN0b3IpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0RFU0NSSVBUSU9OUyk7Ci0KLSAgICBpZiAoaWRUeXBlcyAhPSBudWxsICYmIGlkS2V5TmFtZXMgIT0gbnVsbCAmJiBpZEtleVZhbHVlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIElkZW50aWZpZXJCYWcgaWRCYWcgPSBuZXcgSWRlbnRpZmllckJhZygpOwotICAgICAgZm9yIChpbnQgaT0wO2k8aWRLZXlOYW1lcy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IG5ldyBLZXllZFJlZmVyZW5jZShpZEtleU5hbWVzW2ldLGlkS2V5VmFsdWVzW2ldLGlkVHlwZXNbaV0pOwotICAgICAgICBpZEJhZy5hZGQoa3IpOwotICAgICAgfQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfSURFTlRJRklFUlMsaWRCYWcpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0lERU5USUZJRVJTKTsKLQotICAgIGlmIChjYXRUeXBlcyAhPSBudWxsICYmIGNhdEtleU5hbWVzICE9IG51bGwgJiYgY2F0S2V5VmFsdWVzICE9IG51bGwpCi0gICAgewotICAgICAgQ2F0ZWdvcnlCYWcgY2F0QmFnID0gbmV3IENhdGVnb3J5QmFnKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxjYXRUeXBlcy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IG5ldyBLZXllZFJlZmVyZW5jZShjYXRLZXlOYW1lc1tpXSxjYXRLZXlWYWx1ZXNbaV0sY2F0VHlwZXNbaV0pOwotICAgICAgICBjYXRCYWcuYWRkKGtyKTsKLSAgICAgIH0KLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0NBVEVHT1JJRVMsY2F0QmFnKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9DQVRFR09SSUVTKTsKLQotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICAgU3RyaW5nIHVzZXJJZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotICAgICAgU3RyaW5nIHdzZGxVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMKTsKLSAgICAgIFN0cmluZyBuYW1lID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FKTsKLSAgICAgIFZlY3RvciBkZXNjcmlwdGlvblZlY3RvciA9IChWZWN0b3IpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT05TKTsKLSAgICAgIElkZW50aWZpZXJCYWcgaWRlbnRpZmllckJhZyA9IChJZGVudGlmaWVyQmFnKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0lERU5USUZJRVJTKTsKLSAgICAgIENhdGVnb3J5QmFnIGNhdGVnb3J5QmFnID0gKENhdGVnb3J5QmFnKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0NBVEVHT1JJRVMpOwotCi0gICAgICAvLyBUaGUgYWN0aW9uIGNhbiBiZSBydW4gdW5kZXIgdGhlIGNvbnRleHQgb2YgZWl0aGVyIGEgcmVnaXN0cnkgb3IgYSBxdWVyeSBub2RlLgotICAgICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICBpZiAoIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgICAgICByZWdFbGVtZW50LnBlcmZvcm1Mb2dpbihwdWJsaXNoVVJMLHVzZXJJZCxwYXNzd29yZCk7Ci0gICAgICBVRERJUHJveHkgcHJveHkgPSByZWdFbGVtZW50LmdldFByb3h5KCk7Ci0KLSAgICAgIFRNb2RlbCB0TW9kZWwgPSAobmV3IFVkZGk0akhlbHBlcigpKS5uZXdUTW9kZWwod3NkbFVSTCk7Ci0gICAgICB0TW9kZWwuc2V0TmFtZShuYW1lKTsKLSAgICAgIHRNb2RlbC5zZXREZXNjcmlwdGlvblZlY3RvcihkZXNjcmlwdGlvblZlY3Rvcik7Ci0gICAgICB0TW9kZWwuc2V0SWRlbnRpZmllckJhZyhpZGVudGlmaWVyQmFnKTsKLSAgICAgIAotICAgICAgLy8gVGhlIGNhdGVnb3J5IGJhZyBtYXkgY29udGFpbiB3c2RsU3BlYy4KLSAgICAgIENhdGVnb3J5QmFnIGRlZmF1bHRDYXRlZ29yeUJhZyA9IHRNb2RlbC5nZXRDYXRlZ29yeUJhZygpOwotICAgICAgVmVjdG9yIGRlZmF1bHRLZXllZFJlZmVyZW5jZVZlY3RvciA9IG51bGw7Ci0gICAgICBpZiAoZGVmYXVsdENhdGVnb3J5QmFnICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGlmIChjYXRlZ29yeUJhZyA9PSBudWxsKQotICAgICAgICAgIGNhdGVnb3J5QmFnID0gZGVmYXVsdENhdGVnb3J5QmFnOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBkZWZhdWx0S2V5ZWRSZWZlcmVuY2VWZWN0b3IgPSBkZWZhdWx0Q2F0ZWdvcnlCYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKTsKLSAgICAgICAgICBmb3IgKGludCBpPTA7aTxkZWZhdWx0S2V5ZWRSZWZlcmVuY2VWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlkZWZhdWx0S2V5ZWRSZWZlcmVuY2VWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICAgICAgaWYgKGNhdGVnb3J5QmFnICE9IG51bGwpCi0gICAgICAgICAgICAgIGNhdGVnb3J5QmFnLmFkZChrcik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICB0TW9kZWwuc2V0Q2F0ZWdvcnlCYWcoY2F0ZWdvcnlCYWcpOwotCi0gICAgICBWZWN0b3IgdE1vZGVsVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgdE1vZGVsVmVjdG9yLmFkZCh0TW9kZWwpOwotICAgICAgdE1vZGVsID0gKFRNb2RlbClwcm94eS5zYXZlX3RNb2RlbChyZWdFbGVtZW50LmdldEF1dGhJbmZvU3RyaW5nKCksIHRNb2RlbFZlY3RvcikuZ2V0VE1vZGVsVmVjdG9yKCkuZ2V0KDApOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfT1VUUFVUX1NBVkVEX1RNT0RFTCwgdE1vZGVsKTsKLSAgICAgIGFkZFB1Ymxpc2hlZEl0ZW1Ob2RlKHRNb2RlbCxyZWdFbGVtZW50KTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19TRVJWSUNFX0lOVEVSRkFDRV9QVUJMSVNIRUQiLHRNb2RlbC5nZXROYW1lU3RyaW5nKCkpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXRjaCAoV1NETEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIldTRExFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlRyYW5zcG9ydEV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAJaWYoVURESUV4Y2VwdGlvbkhhbmRsZXIucmVxdWlyZXNSZXNldChlKSl7Ci0gICAgCQlSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAJCXJlZ0VsZW1lbnQuc2V0RGVmYXVsdHMoKTsKLSAgICAJfQotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3ZmZlNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxOSAxODI4NjQgICBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS51dGlsLlVkZGk0akhlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBY3Rpb24gZXh0ZW5kcyBQdWJsaXNoQWN0aW9uCi17Ci0gIHB1YmxpYyBSZWdQdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMpKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMsU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUpKTsgICAgCi0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzT3RoZXJzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcixGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgd3NkbFVSTCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMKTsKLSAgICBTdHJpbmcgbmFtZSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSk7Ci0gICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTik7Ci0KLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLQotICAgIGlmICh3c2RsVVJMICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfV1NETF9VUkwsd3NkbFVSTCk7Ci0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHdzZGxVUkwpKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9XU0RMX1VSTCk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfV1NETF9VUkwiKSk7Ci0gICAgfQotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FLG5hbWUpOwotCi0gICAgaWYgKCFzdWJRdWVyeUluaXRpYXRlZF8gJiYgIVZhbGlkYXRvci52YWxpZGF0ZVN0cmluZyhuYW1lKSkKLSAgICB7Ci0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgZm9ybVRvb2xQSS5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfTkFNRSIpKTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3JpcHRpb24gIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTixkZXNjcmlwdGlvbik7Ci0KLSAgICByZXR1cm4gaW5wdXRzVmFsaWQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHBvcHVsYXRlUHJvcGVydHlUYWJsZShTdHJpbmcgd3NkbFVSTCwgVE1vZGVsIHRNb2RlbCkKLSAgewotICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotICAgIFN0cmluZyBuYW1lID0gdE1vZGVsLmdldE5hbWVTdHJpbmcoKTsKLSAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSB0TW9kZWwuZ2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKCk7Ci0gICAgaWYgKHdzZGxVUkwgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9XU0RMX1VSTCx3c2RsVVJMKTsKLSAgICBlbHNlCi0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgIAotICAgIGlmIChuYW1lICE9IG51bGwpIAotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUsbmFtZSk7Ci0gICAgZWxzZQotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAoZGVzY3JpcHRpb24gIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTixkZXNjcmlwdGlvbik7Ci0gICAgZWxzZQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfSU5URVJGQUNFX0RFU0NSSVBUSU9OLCIiKTsKLSAgICByZXR1cm4gaW5wdXRzVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotICAgIFN0cmluZyB3c2RsVVJMID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfV1NETF9VUkwpOwotICAgIFN0cmluZyBuYW1lID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSk7Ci0gICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT04pOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIFVERElQcm94eSBwcm94eSA9IHJlZ0VsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICAgIGlmICghcmVnRWxlbWVudC5pc0xvZ2dlZEluKCkpCi0gICAgICAgIHJlZ0VsZW1lbnQucGVyZm9ybUxvZ2luKHB1Ymxpc2hVUkwsdXNlcklkLHBhc3N3b3JkKTsKLQotICAgICAgVE1vZGVsIHRNb2RlbCA9IChuZXcgVWRkaTRqSGVscGVyKCkpLm5ld1RNb2RlbCh3c2RsVVJMKTsKLSAgICAgIHRNb2RlbC5zZXROYW1lKG5hbWUpOwotICAgICAgdE1vZGVsLnNldERlZmF1bHREZXNjcmlwdGlvblN0cmluZyhkZXNjcmlwdGlvbik7Ci0KLSAgICAgIFZlY3RvciB0TW9kZWxWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICB0TW9kZWxWZWN0b3IuYWRkKHRNb2RlbCk7Ci0gICAgICB0TW9kZWwgPSAoVE1vZGVsKXByb3h5LnNhdmVfdE1vZGVsKHJlZ0VsZW1lbnQuZ2V0QXV0aEluZm9TdHJpbmcoKSwgdE1vZGVsVmVjdG9yKS5nZXRUTW9kZWxWZWN0b3IoKS5nZXQoMCk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9PVVRQVVRfU0FWRURfVE1PREVMLCB0TW9kZWwpOwotICAgICAgYWRkUHVibGlzaGVkSXRlbU5vZGUodE1vZGVsLHJlZ0VsZW1lbnQpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1NFUlZJQ0VfSU5URVJGQUNFX1BVQkxJU0hFRCIsdE1vZGVsLmdldE5hbWVTdHJpbmcoKSkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIldTRExFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJUcmFuc3BvcnRFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFVERElFeGNlcHRpb24gZSkKLSAgICB7ICAgCi0gICAgCWlmKFVERElFeGNlcHRpb25IYW5kbGVyLnJlcXVpcmVzUmVzZXQoZSkpCi0gICAgCQlyZWdFbGVtZW50LnNldERlZmF1bHRzKCk7Ci0gICAgCW1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVnUHVibGlzaFNlcnZpY2VTaW1wbGVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFjNjYwOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxOSAxODI4NjQgICBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkudXRpbC5VZGRpNGpIZWxwZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5OYW1lOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLkJ1c2luZXNzU2VydmljZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgUmVnUHVibGlzaFNlcnZpY2VTaW1wbGVBY3Rpb24gZXh0ZW5kcyBQdWJsaXNoQWN0aW9uCi17Ci0gIHB1YmxpYyBSZWdQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUykpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0lNUExFKSk7ICAgIAotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7ICAgIAotICAgIFN0cmluZyBidXNOb2RlSWRzID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLk5PREVJRF9CVVNJTkVTUyk7Ci0gICAgU3RyaW5nIHdzZGxVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCk7Ci0gICAgU3RyaW5nIG5hbWUgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfTkFNRSk7Ci0gICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0RFU0NSSVBUSU9OKTsKLQotICAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotCi0gICAgaWYgKGJ1c05vZGVJZHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3Igc2VydmljZUJ1c2luZXNzID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfQlVTSU5FU1MpOwotICAgICAgaWYgKHNlcnZpY2VCdXNpbmVzcyA9PSBudWxsKQotICAgICAgICBzZXJ2aWNlQnVzaW5lc3MgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBlbHNlCi0gICAgICAgIHNlcnZpY2VCdXNpbmVzcy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgVmVjdG9yIHNlcnZpY2VCdXNpbmVzc0NvcHkgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTU19DT1BZKTsKLSAgICAgIC8vIFRoZSBicm93c2VyIHdpbGwgZW5mb3JjZSB0aGUgcnVsZSBvZiBoYXZpbmcgb25seSBvbmUgYnVzaW5lc3MgaW4gdGhpcyBsaXN0LgotICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpc2VydmljZUJ1c2luZXNzQ29weS5lbGVtZW50QXQoMCk7Ci0gICAgICBzZXJ2aWNlQnVzaW5lc3MuYWRkRWxlbWVudChsaXN0RWxlbWVudCk7Ci0gICAgICBCdXNpbmVzc0VudGl0eSBiZSA9IChCdXNpbmVzc0VudGl0eSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0JVU0lORVNTLHNlcnZpY2VCdXNpbmVzcyk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9TRVJWSUNFX1BST1ZJREVSLGJlKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfQlVTSU5FU1NfS0VZLGJlLmdldEJ1c2luZXNzS2V5KCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTUyk7Ci0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX1NFUlZJQ0VfUFJPVklERVIpOwotICAgICAgaWYgKCFzdWJRdWVyeUluaXRpYXRlZF8pCi0gICAgICB7Ci0gICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGZvcm1Ub29sUEkuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfQlVTSU5FU1MpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfQlVTSU5FU1MiKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdzZGxVUkwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMLHdzZGxVUkwpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfV1NETF9VUkwsd3NkbFVSTCk7Ci0gICAgfQotCi0gICAgaWYgKCFzdWJRdWVyeUluaXRpYXRlZF8gJiYgIVZhbGlkYXRvci52YWxpZGF0ZVN0cmluZyh3c2RsVVJMKSkKLSAgICB7Ci0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgZm9ybVRvb2xQSS5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9XU0RMX1VSTCk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfV1NETF9VUkwiKSk7Ci0gICAgfQotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX05BTUUsbmFtZSk7Ci0KLSAgICBpZiAoIXN1YlF1ZXJ5SW5pdGlhdGVkXyAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKG5hbWUpKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX05BTUUpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX05BTUUiKSk7Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyaXB0aW9uICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9ERVNDUklQVElPTixkZXNjcmlwdGlvbik7Ci0KLSAgICByZXR1cm4gaW5wdXRzVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotICAgIEJ1c2luZXNzRW50aXR5IGJlID0gKEJ1c2luZXNzRW50aXR5KXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX1NFUlZJQ0VfUFJPVklERVIpOwotICAgIFN0cmluZyBidXNpbmVzc0tleSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVkpOwotICAgIFN0cmluZyB3c2RsVVJMID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9XU0RMX1VSTCk7Ci0gICAgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX05BTUUpOwotICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfREVTQ1JJUFRJT04pOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIFVERElQcm94eSBwcm94eSA9IHJlZ0VsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICAgIGlmICghcmVnRWxlbWVudC5pc0xvZ2dlZEluKCkpCi0gICAgICAgIHJlZ0VsZW1lbnQucGVyZm9ybUxvZ2luKHB1Ymxpc2hVUkwsdXNlcklkLHBhc3N3b3JkKTsKLSAgICAgIAotICAgICAgVWRkaTRqSGVscGVyIHVkZGk0akhlbHBlciA9IG5ldyBVZGRpNGpIZWxwZXIoKTsKLSAgICAgIERlZmluaXRpb24gZGVmID0gdWRkaTRqSGVscGVyLmdldFdTRExEZWZpbml0aW9uKHdzZGxVUkwpOwotICAgICAgUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBY3Rpb24gcmVnUHVibGlzaFNJQWN0aW9uID0gbmV3IFJlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlU2ltcGxlQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAgIGludCBjdXJyZW50Tm9kZUlkID0gZ2V0U2VsZWN0ZWROYXZpZ2F0b3JOb2RlKCkuZ2V0Tm9kZUlkKCk7Ci0gICAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHJlZ05vZGVfLmdldE5vZGVNYW5hZ2VyKCk7Ci0KLSAgICAgIEhhc2h0YWJsZSB0TW9kZWxzVGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICBUTW9kZWxbXSB0TW9kZWxzID0gbnVsbDsKLSAgICAgIGlmICh1ZGRpNGpIZWxwZXIuaXNNb25vbGl0aGljV1NETChkZWYpKQotICAgICAgewotICAgICAgICB0TW9kZWxzID0gbmV3IFRNb2RlbFsxXTsKLSAgICAgICAgdE1vZGVsc1swXSA9IHVkZGk0akhlbHBlci5uZXdUTW9kZWwod3NkbFVSTCwgZGVmKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nW10gaW1wb3J0cyA9IHVkZGk0akhlbHBlci5nZXRJbXBvcnRzKGRlZiwgd3NkbFVSTCk7Ci0gICAgICAgIHRNb2RlbHMgPSBuZXcgVE1vZGVsW2ltcG9ydHMubGVuZ3RoXTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0TW9kZWxzLmxlbmd0aDsgaSsrKQotICAgICAgICAgIHRNb2RlbHNbaV0gPSB1ZGRpNGpIZWxwZXIubmV3VE1vZGVsKGltcG9ydHNbaV0pOwotICAgICAgfQotCi0gICAgICBpZiAodE1vZGVscyAhPSBudWxsKQotICAgICAgewotICAgICAgICBmb3IgKGludCBpPTA7aTx0TW9kZWxzLmxlbmd0aDtpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gcmVnUHVibGlzaFNJQWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZSh1ZGRpNGpIZWxwZXIuZ2V0V1NETCh0TW9kZWxzW2ldKSwgdE1vZGVsc1tpXSk7Ci0gICAgICAgICAgaWYgKGlucHV0c1ZhbGlkKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlZ1B1Ymxpc2hTSUFjdGlvbi5ydW4oKTsKLSAgICAgICAgICAgIE9iamVjdCBzYXZlZFRNb2RlbCA9IHJlZ1B1Ymxpc2hTSUFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCkuZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfT1VUUFVUX1NBVkVEX1RNT0RFTCk7Ci0gICAgICAgICAgICBpZiAoc2F2ZWRUTW9kZWwgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdE1vZGVsc1RhYmxlLnB1dCgoKFRNb2RlbClzYXZlZFRNb2RlbCkuZ2V0TmFtZVN0cmluZygpLCBzYXZlZFRNb2RlbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBSZXNlbGVjdCB0aGUgY3VycmVudCBub2RlLgotICAgICAgICAgICAgbm9kZU1hbmFnZXIuc2V0U2VsZWN0ZWROb2RlSWQoY3VycmVudE5vZGVJZCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIEJ1c2luZXNzU2VydmljZSBicyA9IHVkZGk0akhlbHBlci5uZXdCdXNpbmVzc1NlcnZpY2Uod3NkbFVSTCwgZGVmLCB0TW9kZWxzVGFibGUpOwotICAgICAgaWYgKGJlICE9IG51bGwpCi0gICAgICAgIGJzLnNldEJ1c2luZXNzS2V5KGJlLmdldEJ1c2luZXNzS2V5KCkpOwotICAgICAgZWxzZSBpZiAoYnVzaW5lc3NLZXkgIT0gbnVsbCkKLSAgICAgICAgYnMuc2V0QnVzaW5lc3NLZXkoYnVzaW5lc3NLZXkpOwotICAgICAgYnMuc2V0RGVmYXVsdE5hbWUobmV3IE5hbWUobmFtZSkpOwotICAgICAgYnMuc2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKGRlc2NyaXB0aW9uKTsKLSAgICAgIFZlY3RvciBic1ZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGJzVmVjdG9yLmFkZChicyk7Ci0gICAgICByZWdFbGVtZW50LmhhbmRsZVByZUludm9jYXRpb24oYnMpOwotICAgICAgYnMgPSAoQnVzaW5lc3NTZXJ2aWNlKXByb3h5LnNhdmVfc2VydmljZShyZWdFbGVtZW50LmdldEF1dGhJbmZvU3RyaW5nKCksIGJzVmVjdG9yKS5nZXRCdXNpbmVzc1NlcnZpY2VWZWN0b3IoKS5nZXQoMCk7Ci0gICAgICBhZGRQdWJsaXNoZWRJdGVtTm9kZShicyxyZWdFbGVtZW50KTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19TRVJWSUNFX1BVQkxJU0hFRCIsYnMuZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKSkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiV1NETEV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVHJhbnNwb3J0RXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIGUpCi0gICAgewotICAgIAlpZihVRERJRXhjZXB0aW9uSGFuZGxlci5yZXF1aXJlc1Jlc2V0KGUpKQotICAgIAkJcmVnRWxlbWVudC5zZXREZWZhdWx0cygpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZW1vdmVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZW1vdmVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmZWM0OTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVtb3ZlUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuQnVzaW5lc3NFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5QdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcudWRkaTRqLlVERElFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai5jbGllbnQuVURESVByb3h5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYXNzZXJ0aW9uLlB1Ymxpc2hlckFzc2VydGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLkNvbXBsZXRpb25TdGF0dXM7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5EaXNwb3NpdGlvblJlcG9ydDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlJlc3VsdDsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci0KLXB1YmxpYyBjbGFzcyBSZW1vdmVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uIGV4dGVuZHMgQ29tbW9uUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbgotewotICBwdWJsaWMgUmVtb3ZlUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBpZiAocmVnaXN0cnlOb2RlXyA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgRm9ybVRvb2wgZm9ybVRvb2wgPSBnZXRTZWxlY3RlZEZvcm1Ub29sKCk7Ci0KLSAgICAvLyBpZHMgZnJvbSB1ZGRpT2JqZWN0c190YWJsZQotICAgIFN0cmluZ1tdIHNlbGVjdGVkQnVzSWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hFUl9BU1NFUlRJT05TX1NFTEVDVEVEX0JVU19JRCk7Ci0gICAgaWYgKHNlbGVjdGVkQnVzSWRzICE9IG51bGwgJiYgc2VsZWN0ZWRCdXNJZHMubGVuZ3RoID4gMCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hFUl9BU1NFUlRJT05TX1NFTEVDVEVEX0JVU19JRCwgc2VsZWN0ZWRCdXNJZHMpOwotICAgIC8vIFN5bmNocm9uaXplIGNsaWVudCB2aWV3IGFuZCBzZXJ2ZXIgbW9kZWwgKHVkZGlPYmplY3RfdGFibGUuanNwKQotICAgIHN5bmNocm9uaXplVURESU9iamVjdFRhYmxlKCk7Ci0KLSAgICAvLyBpZiBub3QgeWV0IGxvZ2dlZCBpbiwgdmFsaWRhdGUgdGhlIHBhcmFtZXRlcnMgbmVlZGVkIHRvIGxvZyBpbgotICAgIGlmICghaXNMb2dnZWRJbl8pIHsKLSAgICAgIFN0cmluZyBwdWJsaXNoVVJMID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgIFN0cmluZyB1c2VySUQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgIFN0cmluZyBwYXNzd29yZCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0KLSAgICAgIGlmIChwdWJsaXNoVVJMICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMLHB1Ymxpc2hVUkwpOwotICAgICAgICBmb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMLHB1Ymxpc2hVUkwpOwotICAgICAgfQotICAKLSAgICAgIGlmICghVmFsaWRhdG9yLnZhbGlkYXRlVVJMKHB1Ymxpc2hVUkwpKQotICAgICAgewotICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICBmb3JtVG9vbC5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9QVUJMSVNIX1VSTCIpKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHVzZXJJRCE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySUQpOwotICAgICAgICBmb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySUQpOwotICAgICAgfQotICAKLSAgICAgIGlmICghVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHVzZXJJRCkpCi0gICAgICB7Ci0gICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGZvcm1Ub29sLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9VU0VSSUQiKSk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChwYXNzd29yZCAhPSBudWxsKQotICAgICAgewotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCxwYXNzd29yZCk7Ci0gICAgICAgIGZvcm1Ub29sLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQscGFzc3dvcmQpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIGlkcyBmcm9tIHB1Ymxpc2hlciBhc3NlcnRpb24gdGFibGUKLSAgICBTdHJpbmdbXSBwdWJBc3NlcnRpb25zVmlld0lkcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19WSUVXSUQpOwotICAgIGlmIChwdWJBc3NlcnRpb25zVmlld0lkcyA9PSBudWxsIHx8IHB1YkFzc2VydGlvbnNWaWV3SWRzLmxlbmd0aCA9PSAwKQotICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICBlbHNlCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19WSUVXSUQsIHB1YkFzc2VydGlvbnNWaWV3SWRzKTsKLQotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpZiAocmVnaXN0cnlOb2RlXyA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ2lzdHJ5RWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnaXN0cnlOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLQotICAgIGlmICghKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEJ1c2luZXNzRWxlbWVudCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBpZiBub3QgeWV0IGxvZ2dlZCBpbiwgbG9nIGluIGZpcnN0Ci0gICAgaWYgKCFpc0xvZ2dlZEluXykgewotICAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgIFN0cmluZyB1c2VySUQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgICBTdHJpbmcgcGFzc3dvcmQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEKTsKLQotICAgICAgdHJ5IHsKLSAgICAgICAgcmVnaXN0cnlFbGVtZW50LnBlcmZvcm1Mb2dpbihwdWJsaXNoVVJMLCB1c2VySUQsIHBhc3N3b3JkKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChUcmFuc3BvcnRFeGNlcHRpb24gdGUpIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJUcmFuc3BvcnRFeGNlcHRpb24iKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgY2F0Y2ggKFVERElFeGNlcHRpb24gdWRkaWUpIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJVRERJRXhjZXB0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGllLnRvU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG1lKSB7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiTWFsZm9ybWVkVVJMRXhjZXB0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKG1lLmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0gICAgICAKLSAgICB9Ci0KLSAgICBVRERJUHJveHkgcHJveHkgPSByZWdpc3RyeUVsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICByZWdpc3RyeUVsZW1lbnQuZ2V0VXNlcklkKCk7Ci0gICAgcmVnaXN0cnlFbGVtZW50LmdldENyZWQoKTsKLSAgICBCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCA9IChCdXNpbmVzc0VsZW1lbnQpc2VsZWN0ZWRFbGVtZW50OwotICAgIExpc3RNYW5hZ2VyIHB1YkFzc2VydGlvbnMgPSBidXNFbGVtZW50LmdldFB1Ymxpc2hlckFzc2VydGlvbnMoKTsKLQotICAgIC8vIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSBvd25lZCBidXNpbmVzcwotICAgIC8vIGlmIG5vdCwgdGhlIEFkZFB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24gY2Fubm90IGJlIHBlcmZvcm1lZAotICAgIGlmICghaXNCdXNpbmVzc093bmVkKGJ1c0VsZW1lbnQpKSB7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9UX09XTkVEX0JVU0lORVNTIikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgIFN0cmluZ1tdIHB1YkFzc2VydGlvblZpZXdJZHMgPSAoU3RyaW5nW10pcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfVklFV0lEKTsKLSAgICAgIFZlY3RvciBwdWJBc3NlcnRpb25WZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBib29sZWFuIHJlZnJlc2hSZXF1aXJlZCA9IGZhbHNlOwotCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHB1YkFzc2VydGlvblZpZXdJZHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaW50IHZpZXdJRCA9IEludGVnZXIucGFyc2VJbnQocHViQXNzZXJ0aW9uVmlld0lkc1tpXSk7Ci0gICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gcHViQXNzZXJ0aW9ucy5nZXRFbGVtZW50V2l0aFZpZXdJZCh2aWV3SUQpOwotICAgICAgICBQdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50IHB1YkFzc2VydGlvbkVsZW1lbnQgPSAoUHVibGlzaGVyQXNzZXJ0aW9uRWxlbWVudClsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgUHVibGlzaGVyQXNzZXJ0aW9uIHB1YkFzc2VydGlvbiA9IHB1YkFzc2VydGlvbkVsZW1lbnQuZ2V0UHVibGlzaGVyQXNzZXJ0aW9uKCk7Ci0gICAgICAgIHB1YkFzc2VydGlvblZlY3Rvci5hZGQocHViQXNzZXJ0aW9uKTsKLSAgICAgICAgaWYgKHB1YkFzc2VydGlvbkVsZW1lbnQuZ2V0U3RhdHVzKCkuZXF1YWxzKENvbXBsZXRpb25TdGF0dXMuQ09NUExFVEUpKQotICAgICAgICAgIHJlZnJlc2hSZXF1aXJlZCA9IHRydWU7Ci0gICAgICB9Ci0KLSAgICAgIERpc3Bvc2l0aW9uUmVwb3J0IHJlcG9ydCA9IHByb3h5LmRlbGV0ZV9wdWJsaXNoZXJBc3NlcnRpb25zKHJlZ2lzdHJ5RWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpLCBwdWJBc3NlcnRpb25WZWN0b3IpOwotICAgICAgLy9yZXBvcnQgc3RhdHVzCi0JICBWZWN0b3IgcmVwb3J0RXJySW5mbyA9IHJlcG9ydC5nZXRSZXN1bHRWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwb3J0RXJySW5mby5zaXplKCk7IGkrKykgewotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgoKFJlc3VsdCkgcmVwb3J0RXJySW5mby5nZXQoaSkpLmdldEVyckluZm8oKS5nZXRUZXh0KCkpOwotICAgICAgfQotCi0gICAgICAvLyByZWZyZXNoIGlzIHJlcXVpcmVkLCByZWZyZXNoIHRoZSB3aG9sZSBwdWJsaXNoZXIgYXNzZXJ0aW9uIHRhYmxlCi0gICAgICBpZiAocmVmcmVzaFJlcXVpcmVkKSB7Ci0gICAgICAgIFNob3dQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uIHNob3dQQUFjdGlvbiA9IG5ldyBTaG93UHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gc2hvd1BBQWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICAgICAgT2JqZWN0IGlkcyA9IHByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hFUl9BU1NFUlRJT05TX1NFTEVDVEVEX0JVU19JRCk7Ci0gICAgICAgIGlmIChpZHMgIT0gbnVsbCkKLSAgICAgICAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hFUl9BU1NFUlRJT05TX1NFTEVDVEVEX0JVU19JRCwgaWRzKTsKLSAgICAgICAgc2hvd1BBQWN0aW9uLnJ1bigpOwotICAgICAgfQotICAgICAgLy8gcmVmcmVzaCBpcyBub3QgcmVxdWlyZWQsIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgcHVibGlzaGVyIGFzc2VydGlvbiBlbGVtZW50cwotICAgICAgZWxzZSB7Ci0gICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgcHViQXNzZXJ0aW9uVmlld0lkcy5sZW5ndGg7IGsrKykgewotICAgICAgICAgIHB1YkFzc2VydGlvbnMucmVtb3ZlRWxlbWVudFdpdGhWaWV3SWQoSW50ZWdlci5wYXJzZUludChwdWJBc3NlcnRpb25WaWV3SWRzW2tdKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHJlcG9ydC5zdWNjZXNzKCk7Ci0gICAgfQotICAgIGNhdGNoIChVRERJRXhjZXB0aW9uIHVkZGllKSB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJVRERJRXhjZXB0aW9uIik7Ci0gICAgICBEaXNwb3NpdGlvblJlcG9ydCByZXBvcnQgPSB1ZGRpZS5nZXREaXNwb3NpdGlvblJlcG9ydCgpOwotCSAgVmVjdG9yIHJlcG9ydEVyckluZm8gPSByZXBvcnQuZ2V0UmVzdWx0VmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcG9ydEVyckluZm8uc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoKChSZXN1bHQpIHJlcG9ydEVyckluZm8uZ2V0KGkpKS5nZXRFcnJJbmZvKCkuZ2V0VGV4dCgpKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJFeGNlcHRpb24iKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1JlbW92ZVN1YlF1ZXJ5SXRlbUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVtb3ZlU3ViUXVlcnlJdGVtQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODRlMjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvUmVtb3ZlU3ViUXVlcnlJdGVtQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotCi1wdWJsaWMgY2xhc3MgUmVtb3ZlU3ViUXVlcnlJdGVtQWN0aW9uIGV4dGVuZHMgQWN0aW9uCi17Ci0gIHByaXZhdGUgQ29udHJvbGxlciBjb250cm9sbGVyXzsKLSAgCi0gIHB1YmxpYyBSZW1vdmVTdWJRdWVyeUl0ZW1BY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgICBjb250cm9sbGVyXyA9IGNvbnRyb2xsZXI7Ci0gIH0KLSAgCi0gIC8vIHVkZGkvYWN0aW9ucy9SZW1vdmVTdWJRdWVyeUl0ZW1BY3Rpb25KU1AuanNwP3N1YlF1ZXJ5S2V5PS4uLiZzdWJRdWVyeUxpc3RLZXk9Li4uJnN1YlF1ZXJ5TGlzdEl0ZW1JZD0uLi4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGluayhTdHJpbmcgc3ViUXVlcnlLZXksU3RyaW5nIHN1YlF1ZXJ5TGlzdEtleSxpbnQgc3ViUXVlcnlMaXN0SXRlbUlkKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ1ZGRpL2FjdGlvbnMvUmVtb3ZlU3ViUXVlcnlJdGVtQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSkuYXBwZW5kKCc9JykuYXBwZW5kKHN1YlF1ZXJ5S2V5KTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0xJU1RfS0VZKS5hcHBlbmQoJz0nKS5hcHBlbmQoc3ViUXVlcnlMaXN0S2V5KTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0xJU1RfSVRFTUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQoc3ViUXVlcnlMaXN0SXRlbUlkKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBwb3B1bGF0ZVByb3BlcnR5VGFibGUoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICBTdHJpbmcgc3ViUXVlcnlLZXkgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSk7Ci0gICAgU3RyaW5nIHN1YlF1ZXJ5TGlzdEtleSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfTElTVF9LRVkpOwotICAgIFN0cmluZyBzdWJRdWVyeUxpc3RJdGVtSWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0xJU1RfSVRFTUlEKTsKLSAgICAKLSAgICBpZiAoc3ViUXVlcnlLZXkgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSxzdWJRdWVyeUtleSk7Ci0gICAgICAKLSAgICBpZiAoc3ViUXVlcnlMaXN0S2V5ICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9MSVNUX0tFWSxzdWJRdWVyeUxpc3RLZXkpOwotICAgICAgCi0gICAgaWYgKHN1YlF1ZXJ5TGlzdEl0ZW1JZCAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfTElTVF9JVEVNSUQsc3ViUXVlcnlMaXN0SXRlbUlkKTsKLSAgICAgIAotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9MSVNUX0tFWSk7Ci0gICAgaW50IHN1YlF1ZXJ5TGlzdEl0ZW1JZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9MSVNUX0lURU1JRCkpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgICBOb2RlIGN1cnJlbnROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoY3VycmVudE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCkpOwotICAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKSk7Ci0gICAgVmVjdG9yIGxpc3QgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9MSVNUX0tFWSkpOwotICAgIGxpc3QucmVtb3ZlRWxlbWVudEF0KHN1YlF1ZXJ5TGlzdEl0ZW1JZCk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1Jlc2l6ZVVERElGcmFtZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1Jlc2l6ZVVERElGcmFtZXNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVkZTM4Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9SZXNpemVVRERJRnJhbWVzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlJlc2l6ZUZyYW1lc0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUZyYW1lTmFtZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotCi1wdWJsaWMgY2xhc3MgUmVzaXplVURESUZyYW1lc0FjdGlvbiBleHRlbmRzIFJlc2l6ZUZyYW1lc0FjdGlvbgotewotICBwdWJsaWMgUmVzaXplVURESUZyYW1lc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIpOwotICAgIGlmIChwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMgIT0gbnVsbCAmJiBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5ULHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSLGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIC8vIFNhdmUgdGhlIGN1cnJlbnQgZnJhbWVzZXQgc2l6ZXMuCi0gICAgU3RyaW5nIGZyYW1lTmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5GUkFNRV9OQU1FKTsKLSAgICBTdHJpbmcgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSKTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgCi0gICAgLy8gU2V0IHRoZSBuZXcgZnJhbWVzZXQgc2l6ZXMuCi0gICAgaWYgKGZyYW1lTmFtZS5lcXVhbHMoVURESUZyYW1lTmFtZXMuTkFWSUdBVE9SX0NPTlRBSU5FUikpCi0gICAgewotICAgICAgdWRkaVBlcnNwZWN0aXZlLnNldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICB1ZGRpUGVyc3BlY3RpdmUuc2V0U2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgaWYgKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scy5zdGFydHNXaXRoKCIxMDAlIikpCi0gICAgICB7Ci0gICAgICAgIC8vIFJlc3RvcmUuCi0gICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHModWRkaVBlcnNwZWN0aXZlLmdldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBNYXhpbWl6ZS4KLSAgICAgICAgdWRkaVBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoIjEwMCUsMCUiKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoZnJhbWVOYW1lLmVxdWFscyhVRERJRnJhbWVOYW1lcy5QUk9QRVJUSUVTX0NPTlRBSU5FUikpCi0gICAgewotICAgICAgaWYgKGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3Muc3RhcnRzV2l0aCgiMTAwJSIpKQotICAgICAgewotICAgICAgICBpZiAocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBSZXN0b3JlLgotICAgICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHModWRkaVBlcnNwZWN0aXZlLmdldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkpOwotICAgICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKHVkZGlQZXJzcGVjdGl2ZS5nZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy8gTWF4aW1pemUuCi0gICAgICAgICAgdWRkaVBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgdWRkaVBlcnNwZWN0aXZlLnNldFNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgICAgICB1ZGRpUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gTWF4aW1pemUuCi0gICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCIxMDAlLDAlIik7Ci0gICAgICAgIGlmICghcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICAgIHsKLSAgICAgICAgICB1ZGRpUGVyc3BlY3RpdmUuc2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKTsKLSAgICAgICAgICB1ZGRpUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoZnJhbWVOYW1lLmVxdWFscyhVRERJRnJhbWVOYW1lcy5TVEFUVVNfQ09OVEFJTkVSKSkKLSAgICB7Ci0gICAgICBpZiAoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cy5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgewotICAgICAgICBpZiAocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBSZXN0b3JlLgotICAgICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHModWRkaVBlcnNwZWN0aXZlLmdldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkpOwotICAgICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKHVkZGlQZXJzcGVjdGl2ZS5nZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy8gTWF4aW1pemUuCi0gICAgICAgICAgdWRkaVBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgdWRkaVBlcnNwZWN0aXZlLnNldFNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgICAgICB1ZGRpUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gTWF4aW1pemUuCi0gICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAgIHVkZGlQZXJzcGVjdGl2ZS5zZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCIwJSwxMDAlIik7Ci0gICAgICAgIGlmICghcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICAgIHsKLSAgICAgICAgICB1ZGRpUGVyc3BlY3RpdmUuc2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKTsKLSAgICAgICAgICB1ZGRpUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1NlbGVjdENhdGVnb3J5Tm9kZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VsZWN0Q2F0ZWdvcnlOb2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMTY1ZjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VsZWN0Q2F0ZWdvcnlOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuU2VsZWN0Tm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLQotcHVibGljIGNsYXNzIFNlbGVjdENhdGVnb3J5Tm9kZUFjdGlvbiBleHRlbmRzIFNlbGVjdE5vZGVBY3Rpb24KLXsKLSAgcHVibGljIFNlbGVjdENhdGVnb3J5Tm9kZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyLGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0Q2F0ZWdvcnlNYW5hZ2VyKCkpOwotICB9Ci0KLSAgLy8gdWRkaS9hY3Rpb25zL1NlbGVjdENhdGVnb3J5Tm9kZUFjdGlvbi5qc3A/c2Vzc2lvbklkPS4uLiZub2RlSWQ9Li4uCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoU3RyaW5nIHNlc3Npb25JZCxpbnQgbm9kZUlkKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ1ZGRpL2FjdGlvbnMvU2VsZWN0Q2F0ZWdvcnlOb2RlQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuU0VTU0lPTklEKS5hcHBlbmQoJz0nKS5hcHBlbmQoc2Vzc2lvbklkKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgewotICAgIC8vIERvIG5vdCBhZGQgdGhpcyBhY3Rpb24gdG8gdGhlIGhpc3RvcnkuCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgcGVyZm9ybUJhc2VBY3Rpb24obm9kZUlkKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuICJjYXRlZ29yeUJyb3dzZXJXaW5kb3dDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGludCBnZXRQZXJzcGVjdGl2ZUlkKCkKLSAgewotICAgIHJldHVybiBBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfVURESTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VsZWN0RmluZFRvb2xBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1NlbGVjdEZpbmRUb29sQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZTQ3NzQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VsZWN0RmluZFRvb2xBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci0KLXB1YmxpYyBjbGFzcyBTZWxlY3RGaW5kVG9vbEFjdGlvbiBleHRlbmRzIFNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uCi17Ci0gIHByb3RlY3RlZCBTdHJpbmcgc3ViUXVlcnlLZXlfOwotICBwcm90ZWN0ZWQgYm9vbGVhbiB0b29sTGlua0NoYW5nZWRfOwotCi0gIHB1YmxpYyBTZWxlY3RGaW5kVG9vbEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBzdWJRdWVyeUtleV8gPSBudWxsOwotICAgIHRvb2xMaW5rQ2hhbmdlZF8gPSBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NMaW5rUGFyYW1ldGVycyhIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ID0gc3VwZXIucHJvY2Vzc0xpbmtQYXJhbWV0ZXJzKHJlcXVlc3QpOwotICAgIHN1YlF1ZXJ5S2V5XyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLy8gL3VkZGkvYWN0aW9ucy9TZWxlY3RGaW5kVG9vbEFjdGlvbi5qc3A/bm9kZUlkPS4uLiZ0b29sSWQ9Li4uPCZ2aWV3SWQ9Li4uJnZpZXdUb29sSWQ9Li4uPiZzdWJRdWVyeUtleT0uLi48JmlzSGlzdG9yeT0xPgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSWQsaW50IHRvb2xJZCxpbnQgdmlld0lkLGludCB2aWV3VG9vbElkLFN0cmluZyBzdWJRdWVyeUtleSxib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoInVkZGkvYWN0aW9ucy9TZWxlY3RGaW5kVG9vbEFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCkuYXBwZW5kKCc9JykuYXBwZW5kKG5vZGVJZCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLlRPT0xJRCkuYXBwZW5kKCc9JykuYXBwZW5kKHRvb2xJZCk7Ci0gICAgaWYgKHZpZXdJZCAhPSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpCi0gICAgewotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdJRCkuYXBwZW5kKCc9JykuYXBwZW5kKHZpZXdJZCk7Ci0gICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV1RPT0xJRCkuYXBwZW5kKCc9JykuYXBwZW5kKHZpZXdUb29sSWQpOwotICAgIH0KLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSkuYXBwZW5kKCc9JykuYXBwZW5kKHN1YlF1ZXJ5S2V5KTsKLQotICAgIGlmIChmb3JIaXN0b3J5KQotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLklTSElTVE9SWSkuYXBwZW5kKCI9MSIpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgaWYgKCFzdXBlci5ydW4oKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlXy5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0gICAgU3RyaW5nIGN1cnJlbnRTdWJRdWVyeUtleSA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgIGlmIChzdWJRdWVyeUtleV8gIT0gbnVsbCAmJiAhc3ViUXVlcnlLZXlfLmVxdWFscyhjdXJyZW50U3ViUXVlcnlLZXkpKQotICAgIHsKLSAgICAgIHRvb2xMaW5rQ2hhbmdlZF8gPSB0cnVlOwotICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVksc3ViUXVlcnlLZXlfKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc1ZpZXdTZWxlY3Rpb24oKQotICB7Ci0gICAgcmV0dXJuIHRvb2xMaW5rQ2hhbmdlZF87Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgewotICAgIGludCBub2RlSWQgPSBzZWxlY3RlZE5vZGVfLmdldE5vZGVJZCgpOwotICAgIGludCB0b29sSWQgPSBzZWxlY3RlZFRvb2xfLmdldFRvb2xJZCgpOwotICAgIGludCB2aWV3SWQgPSBzZWxlY3RlZE5vZGVfLmdldFZpZXdJZCgpOwotICAgIGludCB2aWV3VG9vbElkID0gc2VsZWN0ZWROb2RlXy5nZXRWaWV3VG9vbElkKCk7Ci0gICAgcmV0dXJuIGdldEFjdGlvbkxpbmsobm9kZUlkLHRvb2xJZCx2aWV3SWQsdmlld1Rvb2xJZCxzdWJRdWVyeUtleV8sdHJ1ZSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1NlbGVjdE5hdmlnYXRvck5vZGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1NlbGVjdE5hdmlnYXRvck5vZGVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNiZWUzOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9TZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuU2VsZWN0Tm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLlRvb2xUeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBTZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uIGV4dGVuZHMgU2VsZWN0Tm9kZUFjdGlvbgotewotICBwdWJsaWMgU2VsZWN0TmF2aWdhdG9yTm9kZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyLGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TmF2aWdhdG9yTWFuYWdlcigpKTsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9TZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uLmpzcD9ub2RlSWQ9Li4uPCZpc0hpc3Rvcnk9MT4KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkLGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL1NlbGVjdE5hdmlnYXRvck5vZGVBY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpLmFwcGVuZCgnPScpLmFwcGVuZChub2RlSWQpOwotICAgIGlmIChmb3JIaXN0b3J5KQotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLklTSElTVE9SWSkuYXBwZW5kKCI9MSIpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgewotICAgIFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyID0gc2VsZWN0ZWROb2RlXy5nZXRUb29sTWFuYWdlcigpOwotICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gdG9vbE1hbmFnZXIuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgaW50IG5vZGVJZCA9IHNlbGVjdGVkTm9kZV8uZ2V0Tm9kZUlkKCk7Ci0gICAgc2VsZWN0ZWRUb29sLmdldFRvb2xJZCgpOwotICAgIHNlbGVjdGVkTm9kZV8uZ2V0Vmlld0lkKCk7Ci0gICAgc2VsZWN0ZWROb2RlXy5nZXRWaWV3VG9vbElkKCk7Ci0gICAgaWYgKHNlbGVjdGVkVG9vbC5nZXRUb29sVHlwZSgpICE9IFRvb2xUeXBlcy5BQ1RJT04pCi0gICAgICByZXR1cm4gc2VsZWN0ZWRUb29sLmdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKHRydWUpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBnZXRBY3Rpb25MaW5rKG5vZGVJZCx0cnVlKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuICJuYXZpZ2F0b3JDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAidWRkaS9uYXZpZ2F0b3JfY29udGVudC5qc3AiOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkKLSAgewotICAgIHJldHVybiAicHJvcGVydGllc0NvbnRhaW5lciI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkKLSAgewotICAgIHJldHVybiAidWRkaS9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgaW50IGdldFBlcnNwZWN0aXZlSWQoKQotICB7Ci0gICAgcmV0dXJuIEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9VRERJOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg2ZTE1Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5TZWxlY3ROb2RlVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLQotcHVibGljIGNsYXNzIFNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uIGV4dGVuZHMgU2VsZWN0Tm9kZVRvb2xBY3Rpb24KLXsKLSAgcHVibGljIFNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsIGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TmF2aWdhdG9yTWFuYWdlcigpKTsKLSAgfQotCi0gIC8vIC91ZGRpL2FjdGlvbnMvU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb24uanNwP25vZGVJZD0uLi4mdG9vbElkPS4uLjwmdmlld0lkPS4uLiZ2aWV3VG9vbElkPS4uLj48JmlzSGlzdG9yeT0xPgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSWQsaW50IHRvb2xJZCxpbnQgdmlld0lkLGludCB2aWV3VG9vbElkLGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL1NlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuVE9PTElEKS5hcHBlbmQoJz0nKS5hcHBlbmQodG9vbElkKTsKLSAgICBpZiAodmlld0lkICE9IEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCkKLSAgICB7Ci0gICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV0lEKS5hcHBlbmQoJz0nKS5hcHBlbmQodmlld0lkKTsKLSAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJykuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXVE9PTElEKS5hcHBlbmQoJz0nKS5hcHBlbmQodmlld1Rvb2xJZCk7Ci0gICAgfQotICAgIGlmIChmb3JIaXN0b3J5KQotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLklTSElTVE9SWSkuYXBwZW5kKCI9MSIpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgewotICAgIGludCBub2RlSWQgPSBzZWxlY3RlZE5vZGVfLmdldE5vZGVJZCgpOwotICAgIGludCB0b29sSWQgPSBzZWxlY3RlZFRvb2xfLmdldFRvb2xJZCgpOwotICAgIGludCB2aWV3SWQgPSBzZWxlY3RlZE5vZGVfLmdldFZpZXdJZCgpOwotICAgIGludCB2aWV3VG9vbElkID0gc2VsZWN0ZWROb2RlXy5nZXRWaWV3VG9vbElkKCk7Ci0gICAgcmV0dXJuIGdldEFjdGlvbkxpbmsobm9kZUlkLHRvb2xJZCx2aWV3SWQsdmlld1Rvb2xJZCx0cnVlKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuICJuYXZpZ2F0b3JDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAidWRkaS9uYXZpZ2F0b3JfY29udGVudC5qc3AiOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkKLSAgewotICAgIHJldHVybiAicHJvcGVydGllc0NvbnRhaW5lciI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkKLSAgewotICAgIHJldHVybiAidWRkaS9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGVudFZhcigpCi0gIHsKLSAgICByZXR1cm4gInByb3BlcnRpZXNDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAidWRkaS9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIjsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGludCBnZXRQZXJzcGVjdGl2ZUlkKCkKLSAgewotICAgIHJldHVybiBBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfVURESTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VsZWN0U3ViUXVlcnlJdGVtQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9TZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdiYjViZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9TZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5WaWV3VG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5NdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJ1c2luZXNzLkJ1c2luZXNzRW50aXR5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuc2VydmljZS5CdXNpbmVzc1NlcnZpY2U7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotCi1wdWJsaWMgY2xhc3MgU2VsZWN0U3ViUXVlcnlJdGVtQWN0aW9uIGV4dGVuZHMgU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb24KLXsKLSAgcHJpdmF0ZSBib29sZWFuIHJlcXVpcmVzVHJlZVZpZXdSZWZyZXNoXzsKLSAgcHJpdmF0ZSBib29sZWFuIHJlcXVpcmVzVmlld1NlbGVjdGlvbl87Ci0gIHByaXZhdGUgYm9vbGVhbiBuZXdVVUlEUXVlcnlDcmVhdGVkXzsKLSAgcHJpdmF0ZSBTdHJpbmcgaXRlbU5hbWVfOwotICBwdWJsaWMgU2VsZWN0U3ViUXVlcnlJdGVtQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHJlcXVpcmVzVHJlZVZpZXdSZWZyZXNoXyA9IGZhbHNlOwotICAgIHJlcXVpcmVzVmlld1NlbGVjdGlvbl8gPSBmYWxzZTsKLSAgICBuZXdVVUlEUXVlcnlDcmVhdGVkXyA9IGZhbHNlOwotICAgIGl0ZW1OYW1lXyA9IG51bGw7Ci0gIH0KLQotICAvLyAvdWRkaS9hY3Rpb25zL1NlbGVjdFN1YlF1ZXJ5SXRlbUFjdGlvbi5qc3A/bm9kZUlkPS4uLiZ0b29sSWQ9Li4uPCZ2aWV3SWQ9Li4uPiZzdWJRdWVyeUtleT0uLi4mc3ViUXVlcnlMaXN0S2V5PS4uLiZzdWJRdWVyeUxpc3RJdGVtSWQ9Li4uJnF1ZXJ5SXRlbT0uLi48JmlzSGlzdG9yeT0xPgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSWQsaW50IHRvb2xJZCxpbnQgdmlld0lkLFN0cmluZyBzdWJRdWVyeUtleSxTdHJpbmcgc3ViUXVlcnlMaXN0S2V5LGludCBzdWJRdWVyeUxpc3RJdGVtSWQsaW50IHF1ZXJ5SXRlbSxib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoInVkZGkvYWN0aW9ucy9TZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpLmFwcGVuZCgnPScpLmFwcGVuZChub2RlSWQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJykuYXBwZW5kKEFjdGlvbklucHV0cy5UT09MSUQpLmFwcGVuZCgnPScpLmFwcGVuZCh0b29sSWQpOwotICAgIGlmICh2aWV3SWQgIT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKQotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdJRCkuYXBwZW5kKCc9JykuYXBwZW5kKHZpZXdJZCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpLmFwcGVuZCgnPScpLmFwcGVuZChzdWJRdWVyeUtleSk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9MSVNUX0tFWSkuYXBwZW5kKCc9JykuYXBwZW5kKHN1YlF1ZXJ5TGlzdEtleSk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9MSVNUX0lURU1JRCkuYXBwZW5kKCc9JykuYXBwZW5kKHN1YlF1ZXJ5TGlzdEl0ZW1JZCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNKS5hcHBlbmQoJz0nKS5hcHBlbmQocXVlcnlJdGVtKTsKLQotICAgIGlmIChmb3JIaXN0b3J5KQotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLklTSElTVE9SWSkuYXBwZW5kKCI9MSIpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzTGlua1BhcmFtZXRlcnMoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICBib29sZWFuIHJlc3VsdCA9IHN1cGVyLnByb2Nlc3NMaW5rUGFyYW1ldGVycyhyZXF1ZXN0KTsKLSAgICBTdHJpbmcgc3ViUXVlcnlLZXkgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSk7Ci0gICAgU3RyaW5nIHN1YlF1ZXJ5TGlzdEtleSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfTElTVF9LRVkpOwotICAgIFN0cmluZyBzdWJRdWVyeUxpc3RJdGVtSWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0xJU1RfSVRFTUlEKTsKLSAgICBTdHJpbmcgcXVlcnlJdGVtU3RyaW5nID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNKTsKLQotICAgIGlmIChzdWJRdWVyeUtleSAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZLHN1YlF1ZXJ5S2V5KTsKLQotICAgIGlmIChzdWJRdWVyeUxpc3RLZXkgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0xJU1RfS0VZLHN1YlF1ZXJ5TGlzdEtleSk7Ci0KLSAgICBpZiAoc3ViUXVlcnlMaXN0SXRlbUlkICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9MSVNUX0lURU1JRCxzdWJRdWVyeUxpc3RJdGVtSWQpOwotCi0gICAgaWYgKHF1ZXJ5SXRlbVN0cmluZyAhPSBudWxsKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTSxxdWVyeUl0ZW1TdHJpbmcpOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gZmluZEJ5VVVJRCgpCi0gIHsKLSAgICBOb2RlIGN1cnJlbnROb2RlID0gbm9kZU1hbmFnZXJfLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIEZvcm1Ub29sIGZvcm1Ub29sID0gKEZvcm1Ub29sKShjdXJyZW50Tm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0gICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpKTsKLSAgICBWZWN0b3IgbGlzdCA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eSgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0xJU1RfS0VZKSk7Ci0gICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpbGlzdC5lbGVtZW50QXQoSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0xJU1RfSVRFTUlEKSkpOwotICAgIGludCBxdWVyeUl0ZW0gPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTSkpOwotICAgIEZpbmRBY3Rpb24gZmluZEFjdGlvbiA9IG51bGw7Ci0gICAgU3RyaW5nIHV1aWRLZXkgPSBudWxsOwotICAgIFN0cmluZyB1dWlkS2V5VmFsdWUgPSBudWxsOwotICAgIHN3aXRjaCAocXVlcnlJdGVtKQotICAgIHsKLSAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVM6Ci0gICAgICAgIGZpbmRBY3Rpb24gPSBuZXcgUmVnRmluZEJ1c2luZXNzVVVJREFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgICAgIHV1aWRLZXkgPSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfQlVTSU5FU1NfS0VZOwotICAgICAgICBCdXNpbmVzc0VudGl0eSBzcCA9IChCdXNpbmVzc0VudGl0eSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgdXVpZEtleVZhbHVlID0gc3AuZ2V0QnVzaW5lc3NLZXkoKTsKLSAgICAgICAgaXRlbU5hbWVfID0gc3AuZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUzoKLSAgICAgICAgZmluZEFjdGlvbiA9IG5ldyBSZWdGaW5kU2VydmljZVVVSURBY3Rpb24oY29udHJvbGxlcl8pOwotICAgICAgICB1dWlkS2V5ID0gVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfS0VZOwotICAgICAgICBCdXNpbmVzc1NlcnZpY2UgYnMgPSAoQnVzaW5lc3NTZXJ2aWNlKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgICB1dWlkS2V5VmFsdWUgPSBicy5nZXRTZXJ2aWNlS2V5KCk7Ci0gICAgICAgIGl0ZW1OYW1lXyA9IGJzLmdldERlZmF1bHROYW1lU3RyaW5nKCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTOgotICAgICAgZGVmYXVsdDoKLSAgICAgICAgZmluZEFjdGlvbiA9IG5ldyBSZWdGaW5kU2VydmljZUludGVyZmFjZVVVSURBY3Rpb24oY29udHJvbGxlcl8pOwotICAgICAgICB1dWlkS2V5ID0gVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfSU5URVJGQUNFX0tFWTsKLSAgICAgICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIHV1aWRLZXlWYWx1ZSA9IHRNb2RlbC5nZXRUTW9kZWxLZXkoKTsKLSAgICAgICAgaXRlbU5hbWVfID0gdE1vZGVsLmdldE5hbWVTdHJpbmcoKTsKLSAgICB9Ci0gICAgSGFzaHRhYmxlIHByb3BlcnR5VGFibGUgPSBmaW5kQWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUsdXVpZEtleVZhbHVlKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dCh1dWlkS2V5LHV1aWRLZXlWYWx1ZSk7Ci0gICAgYm9vbGVhbiByZXN1bHQgPSBmaW5kQWN0aW9uLnJ1bigpOwotICAgIGlmIChyZXN1bHQpCi0gICAgewotICAgICAgTm9kZSBpdGVtTm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgIGludCBub2RlSWQgPSBpdGVtTm9kZS5nZXROb2RlSWQoKTsKLSAgICAgIGludCB0b29sSWQgPSBpdGVtTm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCk7Ci0gICAgICBpbnQgdmlld0lkID0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUOwotICAgICAgaW50IHZpZXdUb29sSWQgPSBBY3Rpb25JbnB1dHMuVklFV1RPT0xJRF9ERUZBVUxUOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsU3RyaW5nLnZhbHVlT2Yobm9kZUlkKSk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLlRPT0xJRCxTdHJpbmcudmFsdWVPZih0b29sSWQpKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuVklFV0lELFN0cmluZy52YWx1ZU9mKHZpZXdJZCkpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5WSUVXVE9PTElELFN0cmluZy52YWx1ZU9mKHZpZXdUb29sSWQpKTsKLSAgICAgIHN1cGVyLnJ1bigpOwotICAgICAgcmVxdWlyZXNUcmVlVmlld1JlZnJlc2hfID0gdHJ1ZTsKLSAgICAgIHJlcXVpcmVzVmlld1NlbGVjdGlvbl8gPSB0cnVlOwotICAgICAgbmV3VVVJRFF1ZXJ5Q3JlYXRlZF8gPSB0cnVlOwotICAgICAgbGlzdEVsZW1lbnQuc2V0VGFyZ2V0Vmlld1Rvb2xJbmZvKG5vZGVJZCx0b29sSWQsdmlld0lkKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gVGhlIGl0ZW0gaXMgbm8gbG9uZ2VyIGluIHRoZSByZWdpc3RyeS4KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEl0ZW1OYW1lKCkKLSAgewotICAgIHJldHVybiBpdGVtTmFtZV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICAvLyBHaXZlbiB0aGUgbm9kZUlkLCB0b29sSWQgYW5kIHZpZXdJZCwgY2hlY2sgaWYgdGhlIG5vZGUgb3IgdmlldyBpcyBzdGFsZS4KLSAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgaW50IHRvb2xJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLlRPT0xJRCkpOwotICAgIGludCB2aWV3SWQgPSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQ7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgdmlld0lkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVklFV0lEKSk7Ci0gICAgfQotICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgfQotICAgIGludCB2aWV3VG9vbElkID0gMDsKLSAgICBpZiAoIWlzU3RhbGVOb2RlKG5vZGVJZCkpCi0gICAgewotICAgICAgLy8gRW51c3JlIHRoZSBub2RlIGlzIHZpc2libGUuCi0gICAgICByZXF1aXJlc1RyZWVWaWV3UmVmcmVzaF8gPSBtYWtlTm9kZVZpc2libGUobm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlkKSk7Ci0KLSAgICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJZCk7Ci0gICAgICBpZiAodmlld0lkICE9IEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCkKLSAgICAgIHsKLSAgICAgICAgVmlld1Rvb2wgdmlld1Rvb2wgPSAoVmlld1Rvb2wpKG5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRUb29sKHRvb2xJZCkpOwotICAgICAgICBUb29sTWFuYWdlciBlbGVtZW50VG9vbE1hbmFnZXIgPSB2aWV3VG9vbC5nZXRUb29sTWFuYWdlcih2aWV3SWQpOwotICAgICAgICBpZiAoZWxlbWVudFRvb2xNYW5hZ2VyICE9IG51bGwpCi0gICAgICAgICAgdmlld1Rvb2xJZCA9IGVsZW1lbnRUb29sTWFuYWdlci5nZXRTZWxlY3RlZFRvb2xJZCgpOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBTdGFsZSB2aWV3Ci0gICAgICAgICAgcmV0dXJuIGZpbmRCeVVVSUQoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5WSUVXVE9PTElELFN0cmluZy52YWx1ZU9mKHZpZXdUb29sSWQpKTsKLSAgICAgIHJldHVybiBzdXBlci5ydW4oKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIFN0YWxlIG5vZGUKLSAgICAgIHJldHVybiBmaW5kQnlVVUlEKCk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpCi0gIHsKLSAgICBpbnQgbm9kZUlkID0gc2VsZWN0ZWROb2RlXy5nZXROb2RlSWQoKTsKLSAgICBpbnQgdG9vbElkID0gc2VsZWN0ZWRUb29sXy5nZXRUb29sSWQoKTsKLSAgICBpbnQgdmlld0lkID0gc2VsZWN0ZWROb2RlXy5nZXRWaWV3SWQoKTsKLSAgICBpbnQgdmlld1Rvb2xJZCA9IHNlbGVjdGVkTm9kZV8uZ2V0Vmlld1Rvb2xJZCgpOwotICAgIHJldHVybiBTZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGVJZCx0b29sSWQsdmlld0lkLHZpZXdUb29sSWQsdHJ1ZSk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc1RyZWVWaWV3UmVmcmVzaCgpCi0gIHsKLSAgICByZXR1cm4gc3VwZXIucmVxdWlyZXNUcmVlVmlld1JlZnJlc2goKXxyZXF1aXJlc1RyZWVWaWV3UmVmcmVzaF87Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc1ZpZXdTZWxlY3Rpb24oKQotICB7Ci0gICAgcmV0dXJuIHN1cGVyLnJlcXVpcmVzVmlld1NlbGVjdGlvbigpfHJlcXVpcmVzVmlld1NlbGVjdGlvbl87Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc1N0YXR1c1VwZGF0ZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3VVVJRFF1ZXJ5Q3JlYXRlZF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuICJzdGF0dXNDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuICJ1ZGRpL3N0YXR1c19jb250ZW50LmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1NlcnZpY2VHZXRCdXNpbmVzc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VydmljZUdldEJ1c2luZXNzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OTUzMDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VydmljZUdldEJ1c2luZXNzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Ob2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5TZXJ2aWNlTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLkJ1c2luZXNzU2VydmljZTsKLQotcHVibGljIGNsYXNzIFNlcnZpY2VHZXRCdXNpbmVzc0FjdGlvbiBleHRlbmRzIE5vZGVBY3Rpb24KLXsKLSAgcHJpdmF0ZSBTZXJ2aWNlTm9kZSBzZXJ2aWNlTm9kZV87Ci0gIHB1YmxpYyBTZXJ2aWNlR2V0QnVzaW5lc3NBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcixjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldE5hdmlnYXRvck1hbmFnZXIoKSk7Ci0gICAgc2VydmljZU5vZGVfID0gbnVsbDsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9TZXJ2aWNlR2V0QnVzaW5lc3NBY3Rpb25KU1AuanNwP25vZGVJZD0uLi4KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ1ZGRpL2FjdGlvbnMvU2VydmljZUdldEJ1c2luZXNzQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gdmFsaWRhdGVTZXJ2aWNlKCkKLSAgewotICAgIGludCBzZXJ2aWNlTm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgc2VydmljZU5vZGVfID0gKFNlcnZpY2VOb2RlKW5vZGVNYW5hZ2VyXy5nZXROb2RlKHNlcnZpY2VOb2RlSWQpOwotICAgIFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFNlcnZpY2VFbGVtZW50KXNlcnZpY2VOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIFJlZ0ZpbmRTZXJ2aWNlVVVJREFjdGlvbiB2ZXJpZnlBY3Rpb24gPSBuZXcgUmVnRmluZFNlcnZpY2VVVUlEQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IHZlcmlmeUFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9PVkVSUklERV9BRERfUVVFUllfTk9ERSxCb29sZWFuLlRSVUUpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9TRVJWSUNFX0tFWSxzZXJ2aWNlRWxlbWVudC5nZXRCdXNpbmVzc1NlcnZpY2UoKS5nZXRTZXJ2aWNlS2V5KCkpOwotICAgIGJvb2xlYW4gcmVzdWx0ID0gdmVyaWZ5QWN0aW9uLnJ1bigpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNULHByb3BlcnR5VGFibGUuZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBCdXNpbmVzc1NlcnZpY2UgYnMgPSAoQnVzaW5lc3NTZXJ2aWNlKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLkxBVEVTVF9PQkpFQ1QpOwotCi0gICAgUmVnRmluZEJ1c2luZXNzVVVJREFjdGlvbiBhY3Rpb24gPSBuZXcgUmVnRmluZEJ1c2luZXNzVVVJREFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgSGFzaHRhYmxlIHByb3BlcnR5VGFibGUgPSBhY3Rpb24uZ2V0UHJvcGVydHlUYWJsZSgpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTk9ERV9OQU1FX1NFUlZJQ0VfQlVTSU5FU1MiLHNlcnZpY2VOb2RlXy5nZXROb2RlTmFtZSgpKSk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSxicy5nZXRCdXNpbmVzc0tleSgpKTsKLQotICAgIHJldHVybiBhY3Rpb24ucnVuKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1NlcnZpY2VHZXRTZXJ2aWNlSW50ZXJmYWNlc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VydmljZUdldFNlcnZpY2VJbnRlcmZhY2VzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNmVmMWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VydmljZUdldFNlcnZpY2VJbnRlcmZhY2VzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlNlcnZpY2VOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotCi1wdWJsaWMgY2xhc3MgU2VydmljZUdldFNlcnZpY2VJbnRlcmZhY2VzQWN0aW9uIGV4dGVuZHMgVURESU5vZGVBY3Rpb24KLXsKLSAgcHJpdmF0ZSBTZXJ2aWNlTm9kZSBzZXJ2aWNlTm9kZV87Ci0gIHB1YmxpYyBTZXJ2aWNlR2V0U2VydmljZUludGVyZmFjZXNBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgc2VydmljZU5vZGVfID0gbnVsbDsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9TZXJ2aWNlR2V0U2VydmljZUludGVyZmFjZXNBY3Rpb25KU1AuanNwP25vZGVJZD0uLi4KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ1ZGRpL2FjdGlvbnMvU2VydmljZUdldFNlcnZpY2VJbnRlcmZhY2VzQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gdmFsaWRhdGVTZXJ2aWNlKCkKLSAgewotICAgIGludCBzZXJ2aWNlTm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgc2VydmljZU5vZGVfID0gKFNlcnZpY2VOb2RlKW5vZGVNYW5hZ2VyXy5nZXROb2RlKHNlcnZpY2VOb2RlSWQpOwotICAgIFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFNlcnZpY2VFbGVtZW50KXNlcnZpY2VOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIFJlZ0ZpbmRTZXJ2aWNlVVVJREFjdGlvbiB2ZXJpZnlBY3Rpb24gPSBuZXcgUmVnRmluZFNlcnZpY2VVVUlEQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IHZlcmlmeUFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9PVkVSUklERV9BRERfUVVFUllfTk9ERSxCb29sZWFuLlRSVUUpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9TRVJWSUNFX0tFWSxzZXJ2aWNlRWxlbWVudC5nZXRCdXNpbmVzc1NlcnZpY2UoKS5nZXRTZXJ2aWNlS2V5KCkpOwotICAgIGJvb2xlYW4gcmVzdWx0ID0gdmVyaWZ5QWN0aW9uLnJ1bigpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNULHByb3BlcnR5VGFibGUuZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgQnVzaW5lc3NTZXJ2aWNlIGJzID0gKEJ1c2luZXNzU2VydmljZSlwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNUKTsKLSAgICBSZWdGaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZEFjdGlvbiBhY3Rpb24gPSBuZXcgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRBY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk5PREVfTkFNRV9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFUyIsc2VydmljZU5vZGVfLmdldE5vZGVOYW1lKCkpKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1VTRV9TRVJWSUNFLEJvb2xlYW4uVFJVRSk7Ci0gICAgTGlzdEVsZW1lbnQgc2VydmljZUxpc3RFbGVtZW50ID0gbmV3IExpc3RFbGVtZW50KGJzKTsKLSAgICBzZXJ2aWNlTGlzdEVsZW1lbnQuc2V0VGFyZ2V0Vmlld1Rvb2xJbmZvKHNlcnZpY2VOb2RlXy5nZXROb2RlSWQoKSxzZXJ2aWNlTm9kZV8uZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLHNlcnZpY2VOb2RlXy5nZXRWaWV3SWQoKSk7Ci0gICAgVmVjdG9yIHNlcnZpY2VMaXN0VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIHNlcnZpY2VMaXN0VmVjdG9yLmFkZEVsZW1lbnQoc2VydmljZUxpc3RFbGVtZW50KTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0Usc2VydmljZUxpc3RWZWN0b3IpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfQlVTSU5FU1NfU0VSVklDRSxicyk7Ci0gICAgcmV0dXJuIGFjdGlvbi5ydW4oKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VydmljZUludGVyZmFjZUdldEJ1c2luZXNzZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1NlcnZpY2VJbnRlcmZhY2VHZXRCdXNpbmVzc2VzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4M2I3MjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VydmljZUludGVyZmFjZUdldEJ1c2luZXNzZXNBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuU2VydmljZUludGVyZmFjZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU2VydmljZUludGVyZmFjZU5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuVE1vZGVsQmFnOwotCi1wdWJsaWMgY2xhc3MgU2VydmljZUludGVyZmFjZUdldEJ1c2luZXNzZXNBY3Rpb24gZXh0ZW5kcyBVRERJTm9kZUFjdGlvbgotewotICBwcml2YXRlIFNlcnZpY2VJbnRlcmZhY2VOb2RlIHNpTm9kZV87Ci0gIHB1YmxpYyBTZXJ2aWNlSW50ZXJmYWNlR2V0QnVzaW5lc3Nlc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBzaU5vZGVfID0gbnVsbDsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9TZXJ2aWNlSW50ZXJmYWNHZXRCdXNpbmVzc2VzQWN0aW9uSlNQLmpzcD9ub2RlSWQ9Li4uCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJZCkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL1NlcnZpY2VJbnRlcmZhY2VHZXRCdXNpbmVzc2VzQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gdmFsaWRhdGVTZXJ2aWNlSW50ZXJmYWNlKCkKLSAgewotICAgIGludCBzaU5vZGVJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIHNpTm9kZV8gPSAoU2VydmljZUludGVyZmFjZU5vZGUpbm9kZU1hbmFnZXJfLmdldE5vZGUoc2lOb2RlSWQpOwotICAgIFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IHNpRWxlbWVudCA9IChTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudClzaU5vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VVVUlEQWN0aW9uIHZlcmlmeUFjdGlvbiA9IG5ldyBSZWdGaW5kU2VydmljZUludGVyZmFjZVVVSURBY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gdmVyaWZ5QWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX09WRVJSSURFX0FERF9RVUVSWV9OT0RFLEJvb2xlYW4uVFJVRSk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfSU5URVJGQUNFX0tFWSxzaUVsZW1lbnQuZ2V0VE1vZGVsKCkuZ2V0VE1vZGVsS2V5KCkpOwotICAgIGJvb2xlYW4gcmVzdWx0ID0gdmVyaWZ5QWN0aW9uLnJ1bigpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNULHByb3BlcnR5VGFibGUuZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCk7Ci0KLSAgICBSZWdGaW5kQnVzaW5lc3Nlc0FkdmFuY2VkQWN0aW9uIGFjdGlvbiA9IG5ldyBSZWdGaW5kQnVzaW5lc3Nlc0FkdmFuY2VkQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FLHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJOT0RFX05BTUVfU0lfQlVTSU5FU1NFUyIsc2lOb2RlXy5nZXROb2RlTmFtZSgpKSk7Ci0gICAgCi0gICAgTGlzdEVsZW1lbnQgc2lMaXN0RWxlbWVudCA9IG5ldyBMaXN0RWxlbWVudCh0TW9kZWwpOwotICAgIHNpTGlzdEVsZW1lbnQuc2V0VGFyZ2V0Vmlld1Rvb2xJbmZvKHNpTm9kZV8uZ2V0Tm9kZUlkKCksc2lOb2RlXy5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCksc2lOb2RlXy5nZXRWaWV3SWQoKSk7Ci0gICAgVmVjdG9yIHNpTGlzdFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICBzaUxpc3RWZWN0b3IuYWRkRWxlbWVudChzaUxpc3RFbGVtZW50KTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX1NFUlZJQ0VfSU5URVJGQUNFUyxzaUxpc3RWZWN0b3IpOwotICAgIAotICAgIFZlY3RvciB0TW9kZWxLZXlTdHJpbmdWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgdE1vZGVsS2V5U3RyaW5nVmVjdG9yLmFkZEVsZW1lbnQodE1vZGVsLmdldFRNb2RlbEtleSgpKTsKLSAgICBUTW9kZWxCYWcgdE1vZGVsQmFnID0gbmV3IFRNb2RlbEJhZyh0TW9kZWxLZXlTdHJpbmdWZWN0b3IpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfVE1PREVMQkFHLHRNb2RlbEJhZyk7Ci0gICAgCi0gICAgcmV0dXJuIGFjdGlvbi5ydW4oKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2VydmljZUludGVyZmFjZUdldFNlcnZpY2VzQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9TZXJ2aWNlSW50ZXJmYWNlR2V0U2VydmljZXNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUzYTQ3OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9TZXJ2aWNlSW50ZXJmYWNlR2V0U2VydmljZXNBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuU2VydmljZUludGVyZmFjZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU2VydmljZUludGVyZmFjZU5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuVE1vZGVsQmFnOwotCi1wdWJsaWMgY2xhc3MgU2VydmljZUludGVyZmFjZUdldFNlcnZpY2VzQWN0aW9uIGV4dGVuZHMgVURESU5vZGVBY3Rpb24KLXsKLSAgcHJpdmF0ZSBTZXJ2aWNlSW50ZXJmYWNlTm9kZSBzaU5vZGVfOwotICBwdWJsaWMgU2VydmljZUludGVyZmFjZUdldFNlcnZpY2VzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHNpTm9kZV8gPSBudWxsOwotICB9Ci0KLSAgLy8gdWRkaS9hY3Rpb25zL1NlcnZpY2VJbnRlcmZhY0dldFNlcnZpY2VzQWN0aW9uSlNQLmpzcD9ub2RlSWQ9Li4uCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJZCkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL1NlcnZpY2VJbnRlcmZhY2VHZXRTZXJ2aWNlc0FjdGlvbkpTUC5qc3A/Iik7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCkuYXBwZW5kKCc9JykuYXBwZW5kKG5vZGVJZCk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHZhbGlkYXRlU2VydmljZUludGVyZmFjZSgpCi0gIHsKLSAgICBpbnQgc2lOb2RlSWQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBzaU5vZGVfID0gKFNlcnZpY2VJbnRlcmZhY2VOb2RlKW5vZGVNYW5hZ2VyXy5nZXROb2RlKHNpTm9kZUlkKTsKLSAgICBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBzaUVsZW1lbnQgPSAoU2VydmljZUludGVyZmFjZUVsZW1lbnQpc2lOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIFJlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlVVVJREFjdGlvbiB2ZXJpZnlBY3Rpb24gPSBuZXcgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VVVUlEQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IHZlcmlmeUFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9PVkVSUklERV9BRERfUVVFUllfTk9ERSxCb29sZWFuLlRSVUUpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9TRVJWSUNFX0lOVEVSRkFDRV9LRVksc2lFbGVtZW50LmdldFRNb2RlbCgpLmdldFRNb2RlbEtleSgpKTsKLSAgICBib29sZWFuIHJlc3VsdCA9IHZlcmlmeUFjdGlvbi5ydW4oKTsKLSAgICBpZiAocmVzdWx0KQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCxwcm9wZXJ0eVRhYmxlLmdldChVRERJQWN0aW9uSW5wdXRzLkxBVEVTVF9PQkpFQ1QpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0gICAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGlua0Zvckhpc3RvcnkoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIFRNb2RlbCB0TW9kZWwgPSAoVE1vZGVsKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLkxBVEVTVF9PQkpFQ1QpOwotCi0gICAgUmVnRmluZFNlcnZpY2VzQWR2YW5jZWRBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ0ZpbmRTZXJ2aWNlc0FkdmFuY2VkQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FLHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJOT0RFX05BTUVfU0lfU0VSVklDRVMiLHNpTm9kZV8uZ2V0Tm9kZU5hbWUoKSkpOwotICAgIAotICAgIExpc3RFbGVtZW50IHNpTGlzdEVsZW1lbnQgPSBuZXcgTGlzdEVsZW1lbnQodE1vZGVsKTsKLSAgICBzaUxpc3RFbGVtZW50LnNldFRhcmdldFZpZXdUb29sSW5mbyhzaU5vZGVfLmdldE5vZGVJZCgpLHNpTm9kZV8uZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLHNpTm9kZV8uZ2V0Vmlld0lkKCkpOwotICAgIFZlY3RvciBzaUxpc3RWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgc2lMaXN0VmVjdG9yLmFkZEVsZW1lbnQoc2lMaXN0RWxlbWVudCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFUyxzaUxpc3RWZWN0b3IpOwotICAgIAotICAgIFZlY3RvciB0TW9kZWxLZXlTdHJpbmdWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgdE1vZGVsS2V5U3RyaW5nVmVjdG9yLmFkZEVsZW1lbnQodE1vZGVsLmdldFRNb2RlbEtleSgpKTsKLSAgICBUTW9kZWxCYWcgdE1vZGVsQmFnID0gbmV3IFRNb2RlbEJhZyh0TW9kZWxLZXlTdHJpbmdWZWN0b3IpOwotICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9UTU9ERUxCQUcsdE1vZGVsQmFnKTsKLSAgICAKLSAgICByZXR1cm4gYWN0aW9uLnJ1bigpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9TaG93UHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU2hvd1B1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFiODY0My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9TaG93UHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDI1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuQnVzaW5lc3NFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5QdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcudWRkaTRqLlVERElFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai5jbGllbnQuVURESVByb3h5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5Bc3NlcnRpb25TdGF0dXNJdGVtOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuQXNzZXJ0aW9uU3RhdHVzUmVwb3J0OwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuQ29tcGxldGlvblN0YXR1czsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLkRpc3Bvc2l0aW9uUmVwb3J0OwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuUmVsYXRlZEJ1c2luZXNzSW5mbzsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlJlbGF0ZWRCdXNpbmVzc2VzTGlzdDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlJlc3VsdDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlNoYXJlZFJlbGF0aW9uc2hpcHM7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5GaW5kUXVhbGlmaWVyczsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuS2V5ZWRSZWZlcmVuY2U7Ci0KLXB1YmxpYyBjbGFzcyBTaG93UHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbiBleHRlbmRzIENvbW1vblB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24KLXsKLQotICBwcm90ZWN0ZWQgU3RyaW5nIHN1YlF1ZXJ5S2V5XzsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNTdWJRdWVyeUdldF87Ci0gIHByb3RlY3RlZCBib29sZWFuIHN1YlF1ZXJ5SW5pdGlhdGVkXzsKLSAgcHJvdGVjdGVkIFN0cmluZyBuZXdTdWJRdWVyeV87Ci0gIHByb3RlY3RlZCBTdHJpbmcgbmV3U3ViUXVlcnlJdGVtXzsKLQotICBwdWJsaWMgU2hvd1B1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0KLSAgICBzdWJRdWVyeUtleV8gPSBudWxsOwotICAgIGlzU3ViUXVlcnlHZXRfID0gZmFsc2U7Ci0gICAgc3ViUXVlcnlJbml0aWF0ZWRfID0gZmFsc2U7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgaWYgKHJlZ2lzdHJ5Tm9kZV8gPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIGlkcyBmcm9tIHVkZGlPYmplY3RzX3RhYmxlCi0gICAgU3RyaW5nW10gc2VsZWN0ZWRCdXNJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfU0VMRUNURURfQlVTX0lEKTsKLSAgICBpZiAoc2VsZWN0ZWRCdXNJZHMgIT0gbnVsbCAmJiBzZWxlY3RlZEJ1c0lkcy5sZW5ndGggPiAwKQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfU0VMRUNURURfQlVTX0lELCBzZWxlY3RlZEJ1c0lkcyk7Ci0KLSAgICBuZXdTdWJRdWVyeV8gPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX0lOSVRJQVRFRCk7Ci0gICAgU3RyaW5nIGlzU3ViUXVlcnlHZXRTdHJpbmcgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfR0VUKTsKLSAgICBuZXdTdWJRdWVyeUl0ZW1fID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLk5FV19TVUJRVUVSWV9RVUVSWV9JVEVNKTsKLSAgICBzdWJRdWVyeUtleV8gPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLQotICAgIC8vIFZhbGlkYXRlIHRoZSBkYXRhLgotICAgIGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIEZvcm1Ub29sIGZvcm1Ub29sID0gZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpOwotICAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5Xyk7Ci0gICAgZm9ybVRvb2xQSS5jbGVhckVycm9ycygpOwotCi0gICAgaWYgKG5ld1N1YlF1ZXJ5XyAhPSBudWxsICYmIG5ld1N1YlF1ZXJ5Xy5sZW5ndGgoKSA+IDApCi0gICAgICBzdWJRdWVyeUluaXRpYXRlZF8gPSB0cnVlOwotICAgIGVsc2UKLSAgICAgIHN1YlF1ZXJ5SW5pdGlhdGVkXyA9IGZhbHNlOwotCi0gICAgaWYgKGlzU3ViUXVlcnlHZXRTdHJpbmcgIT0gbnVsbCkKLSAgICAgIGlzU3ViUXVlcnlHZXRfID0gQm9vbGVhbi52YWx1ZU9mKGlzU3ViUXVlcnlHZXRTdHJpbmcpLmJvb2xlYW5WYWx1ZSgpOwotCi0gICAgLy8gaWYgbm90IHlldCBsb2dnZWQgaW4sIHZhbGlkYXRlIHRoZSBwYXJhbWV0ZXJzIG5lZWRlZCB0byBsb2cgaW4KLSAgICAvLyBOT1RFOiBUaGlzIGFjdGlvbiBkb2VzIE5PVCByZXF1aXJlIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbi4KLSAgICBpZiAoIWlzTG9nZ2VkSW5fKSB7Ci0gICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICBTdHJpbmcgdXNlcklEID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgICBTdHJpbmcgcGFzc3dvcmQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotCi0gICAgICBpZiAocHVibGlzaFVSTCAhPSBudWxsKQotICAgICAgewotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHVzZXJJRCAhPSBudWxsKQotICAgICAgewotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQsdXNlcklEKTsKLSAgICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQsdXNlcklEKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHBhc3N3b3JkICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JELHBhc3N3b3JkKTsKLSAgICAgICAgZm9ybVRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCxwYXNzd29yZCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc1N1YlF1ZXJ5SW5pdGlhdGVkKCkKLSAgewotICAgIHJldHVybiBzdWJRdWVyeUluaXRpYXRlZF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc1N1YlF1ZXJ5R2V0KCkKLSAgewotICAgIHJldHVybiBpc1N1YlF1ZXJ5R2V0XzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3ViUXVlcnlLZXkoKQotICB7Ci0gICAgcmV0dXJuIHN1YlF1ZXJ5S2V5XzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0TmV3U3ViUXVlcnkoKQotICB7Ci0gICAgcmV0dXJuIG5ld1N1YlF1ZXJ5XzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0TmV3U3ViUXVlcnlJdGVtKCkKLSAgewotICAgIHJldHVybiBuZXdTdWJRdWVyeUl0ZW1fOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIC8vIFN5bmNocm9uaXplIGNsaWVudCB2aWV3IGFuZCBzZXJ2ZXIgbW9kZWwgKHVkZGlPYmplY3RfdGFibGUuanNwKQotICAgIHN5bmNocm9uaXplVURESU9iamVjdFRhYmxlKCk7Ci0KLSAgICBpZiAocmVnaXN0cnlOb2RlXyA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ2lzdHJ5RWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnaXN0cnlOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLQotICAgIGlmICghKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEJ1c2luZXNzRWxlbWVudCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBpZiBub3QgeWV0IGxvZ2dlZCBpbiwgbG9nIGluIGZpcnN0Ci0gICAgaWYgKCFpc0xvZ2dlZEluXykgewotICAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgIFN0cmluZyB1c2VySUQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgICBTdHJpbmcgcGFzc3dvcmQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEKTsKLQotICAgICAgdHJ5IHsKLSAgICAgICAgaWYgKFZhbGlkYXRvci52YWxpZGF0ZVVSTChwdWJsaXNoVVJMKSAmJgotICAgICAgICAgICAgVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHVzZXJJRCkgJiYKLSAgICAgICAgICAgIHBhc3N3b3JkICE9IG51bGwpIHsKLSAgICAgICAgICByZWdpc3RyeUVsZW1lbnQucGVyZm9ybUxvZ2luKHB1Ymxpc2hVUkwsIHVzZXJJRCwgcGFzc3dvcmQpOwotICAgICAgICAgIGlzTG9nZ2VkSW5fID0gcmVnaXN0cnlFbGVtZW50LmlzTG9nZ2VkSW4oKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiB0ZSkgewotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlRyYW5zcG9ydEV4Y2VwdGlvbiIpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh0ZS5nZXRNZXNzYWdlKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiB1ZGRpZSkgewotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaWUudG9TdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gbWUpIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJNYWxmb3JtZWRVUkxFeGNlcHRpb24iKTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UobWUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfSAgICAgIAotICAgIH0KLQotICAgIC8vIHNob3cgYWxsIGFzc2VydGlvbiBpZmYgaXMgbG9nZ2VkIGluIGFuZCBidXNpbmVzcyBpcyBvd25lZAotICAgIC8vIGVsc2Ugc2hvdyBvbmx5IGNvbXBsZXRlZCBvbmVzCi0gICAgQnVzaW5lc3NFbGVtZW50IGJ1c0VsZW1lbnQgPSAoQnVzaW5lc3NFbGVtZW50KXNlbGVjdGVkRWxlbWVudDsKLSAgICBpZiAoaXNMb2dnZWRJbl8gJiYgaXNCdXNpbmVzc093bmVkKGJ1c0VsZW1lbnQpKQotICAgICAgcmV0dXJuIHNob3dQdWJsaXNoZXJBc3NlcnRpb25zRm9yT3duZWRCdXMoYnVzRWxlbWVudCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHNob3dQdWJsaXNoZXJBc3NlcnRpb25zRm9yTm9uT3duZWRCdXMoYnVzRWxlbWVudCk7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gc2hvd1B1Ymxpc2hlckFzc2VydGlvbnNGb3JPd25lZEJ1cyhCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCkgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotCi0gICAgLy8gdHJ5IHRvIGdldCBhIGxpc3Qgb2YgYWxsIHB1Ymxpc2hlciBhc3NlcnRpb24gYmFzZWQgb24gdGhlIGN1cnJlbnQgcmVnaXN0cnkncyBhdXRoVG9rZW4KLSAgICBMaXN0TWFuYWdlciBsaXN0TWFuYWdlciA9IG5ldyBMaXN0TWFuYWdlcigpOwotICAgIEZvcm1Ub29sIGZvcm1Ub29sID0gZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpOwotICAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5Xyk7Ci0gICAgZm9ybVRvb2xQSS5yZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0VYSVNUSU5HX1BVQkxJU0hFUl9BU1NFUlRJT05TKTsKLSAgICBWZWN0b3IgcXVlcnlJbnB1dFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICBSZWdpc3RyeUVsZW1lbnQgcmVnaXN0cnlFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdpc3RyeU5vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgcmVnaXN0cnlFbGVtZW50LmdldFVzZXJJZCgpOwotICAgIHJlZ2lzdHJ5RWxlbWVudC5nZXRDcmVkKCk7Ci0KLSAgICAvLyBzaG93IGFsbCBwdWJsaXNoZXIgYXNzZXJ0aW9ucwotICAgIFVERElQcm94eSBwcm94eSA9ICgoUmVnaXN0cnlFbGVtZW50KXJlZ2lzdHJ5Tm9kZV8uZ2V0VHJlZUVsZW1lbnQoKSkuZ2V0UHJveHkoKTsKLSAgICBBc3NlcnRpb25TdGF0dXNSZXBvcnQgYXNzZXJ0aW9uUmVwb3J0OwotICAgIHRyeSB7Ci0gICAgICBhc3NlcnRpb25SZXBvcnQgPSBwcm94eS5nZXRfYXNzZXJ0aW9uU3RhdHVzUmVwb3J0KHJlZ2lzdHJ5RWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpLCAoQ29tcGxldGlvblN0YXR1cyludWxsKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFVERElFeGNlcHRpb24gdWRkaWUpIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAgIERpc3Bvc2l0aW9uUmVwb3J0IHJlcG9ydCA9IHVkZGllLmdldERpc3Bvc2l0aW9uUmVwb3J0KCk7Ci0JICBWZWN0b3IgcmVwb3J0RXJySW5mbyA9IHJlcG9ydC5nZXRSZXN1bHRWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwb3J0RXJySW5mby5zaXplKCk7IGkrKykgewotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgoKFJlc3VsdCkgcmVwb3J0RXJySW5mby5nZXQoaSkpLmdldEVyckluZm8oKS5nZXRUZXh0KCkpOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGNvbnRyb2xsZXJfLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIkV4Y2VwdGlvbiIpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBWZWN0b3IgYXNzZXJ0aW9uVmVjdG9yID0gYXNzZXJ0aW9uUmVwb3J0LmdldEFzc2VydGlvblN0YXR1c0l0ZW1WZWN0b3IoKTsKLSAgICBWZWN0b3Igb3RoZXJCdXNpbmVzc0tleXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgVmVjdG9yIHB1YkFzc2VydGlvbkVsZW1lbnRzID0gbmV3IFZlY3RvcigpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhc3NlcnRpb25WZWN0b3Iuc2l6ZSgpOyBpKyspIHsKLSAgICAgIEFzc2VydGlvblN0YXR1c0l0ZW0gYXNzZXJ0aW9uSXRlbSA9IChBc3NlcnRpb25TdGF0dXNJdGVtKWFzc2VydGlvblZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAvLyBkZXRlcm1pbmUgdGhlIGZyb20vdG8gYnVzaW5lc3Mga2V5cwotICAgICAgU3RyaW5nIGZyb21LZXkgPSBhc3NlcnRpb25JdGVtLmdldEZyb21LZXkoKS5nZXRUZXh0KCk7Ci0gICAgICBTdHJpbmcgdG9LZXkgPSBhc3NlcnRpb25JdGVtLmdldFRvS2V5KCkuZ2V0VGV4dCgpOwotICAgICAgU3RyaW5nIG93bmluZ0J1c2luZXNzS2V5ID0gYnVzRWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpLmdldEJ1c2luZXNzS2V5KCk7Ci0gICAgICAvLyBpZ25vcmUgdGhpcyBhc3NlcnRpb24gaWYgbmVpdGhlciB0aGUgZnJvbSBrZXkgbm9yIHRoZSB0byBrZXkgZXF1YWxzIHRvIHRoaXMgYnVzaW5lc3MncyBrZXkKLSAgICAgIGlmICghb3duaW5nQnVzaW5lc3NLZXkuZXF1YWxzKGZyb21LZXkpICYmICFvd25pbmdCdXNpbmVzc0tleS5lcXVhbHModG9LZXkpKQotICAgICAgICBjb250aW51ZTsKLSAgICAgIFN0cmluZyBvdGhlckJ1c2luZXNzS2V5ID0gKChvd25pbmdCdXNpbmVzc0tleS5lcXVhbHMoZnJvbUtleSkpID8gdG9LZXkgOiBmcm9tS2V5KTsKLSAgICAgIC8vIHJldHJpZXZlIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgIm90aGVyIGJ1c2luZXNzIgotICAgICAgb3RoZXJCdXNpbmVzc0tleXMuYWRkKG90aGVyQnVzaW5lc3NLZXkpOwotCi0gICAgICAvLyByZXRyaWV2ZSB0aGUgc3RhdHVzIG9mIHRoZSBwdWJsaXNoZXIgYXNzZXJ0aW9uCi0gICAgICBTdHJpbmcgc3RhdHVzID0gYXNzZXJ0aW9uSXRlbS5nZXRDb21wbGV0aW9uU3RhdHVzKCkuZ2V0VGV4dCgpOwotICAgICAgS2V5ZWRSZWZlcmVuY2Uga2V5ZWRSZWYgPSBhc3NlcnRpb25JdGVtLmdldEtleWVkUmVmZXJlbmNlKCk7Ci0gICAgICBQdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50IHB1YkFzc2VydGlvbkVsZW1lbnQgPSBuZXcgUHVibGlzaGVyQXNzZXJ0aW9uRWxlbWVudCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21LZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmluZ0J1c2luZXNzS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZWRSZWYpOwotICAgICAgcHViQXNzZXJ0aW9uRWxlbWVudHMuYWRkKHB1YkFzc2VydGlvbkVsZW1lbnQpOwotICAgIH0KLSAgICBpZiAob3RoZXJCdXNpbmVzc0tleXMuc2l6ZSgpID4gMCkgewotICAgICAgVmVjdG9yIGJ1c0VudGl0aWVzOwotICAgICAgdHJ5IHsKLSAgICAgICAgYnVzRW50aXRpZXMgPSBwcm94eS5nZXRfYnVzaW5lc3NEZXRhaWwob3RoZXJCdXNpbmVzc0tleXMpLmdldEJ1c2luZXNzRW50aXR5VmVjdG9yKCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgIGJ1c0VudGl0aWVzID0gbmV3IFZlY3RvcigpOwotICAgICAgICBpZiAob3RoZXJCdXNpbmVzc0tleXMuc2l6ZSgpID4gMSkgewotICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgb3RoZXJCdXNpbmVzc0tleXMuc2l6ZSgpOyBqKyspIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgIGJ1c0VudGl0aWVzLmFkZChwcm94eS5nZXRfYnVzaW5lc3NEZXRhaWwoKFN0cmluZylvdGhlckJ1c2luZXNzS2V5cy5nZXQoaikpLmdldEJ1c2luZXNzRW50aXR5VmVjdG9yKCkuZ2V0KDApKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgIHB1YkFzc2VydGlvbkVsZW1lbnRzLnJlbW92ZShqKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIHB1YkFzc2VydGlvbkVsZW1lbnRzLnJlbW92ZSgwKTsKLSAgICAgIH0KLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgYnVzRW50aXRpZXMuc2l6ZSgpOyBqKyspIHsKLSAgICAgICAgQnVzaW5lc3NFbnRpdHkgYmUgPSAoQnVzaW5lc3NFbnRpdHkpYnVzRW50aXRpZXMuZ2V0KGopOwotICAgICAgICBQdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50IHB1YkFzc2VydGlvbkVsZW1lbnQgPSAoUHVibGlzaGVyQXNzZXJ0aW9uRWxlbWVudClwdWJBc3NlcnRpb25FbGVtZW50cy5nZXQoaik7Ci0gICAgICAgIExpc3RFbGVtZW50IGxlID0gbmV3IExpc3RFbGVtZW50KGJlKTsKLSAgICAgICAgcXVlcnlJbnB1dFZlY3Rvci5hZGQobGUpOwotICAgICAgICBpbnQgc3ViUXVlcnlJdGVtSWQgPSBxdWVyeUlucHV0VmVjdG9yLmluZGV4T2YobGUpOwotICAgICAgICBwdWJBc3NlcnRpb25FbGVtZW50LnNldFNlcnZpY2VQcm92aWRlcihsZSk7Ci0gICAgICAgIHB1YkFzc2VydGlvbkVsZW1lbnQuc2V0U3ViUXVlcnlJdGVtSWQoc3ViUXVlcnlJdGVtSWQpOwotICAgICAgICBsaXN0TWFuYWdlci5hZGQobmV3IExpc3RFbGVtZW50KHB1YkFzc2VydGlvbkVsZW1lbnQpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgYnVzRWxlbWVudC5zZXRQdWJsaXNoZXJBc3NlcnRpb25zKGxpc3RNYW5hZ2VyKTsKLSAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfRVhJU1RJTkdfUFVCTElTSEVSX0FTU0VSVElPTlMsIHF1ZXJ5SW5wdXRWZWN0b3IpOwotICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19QVUJMSVNIRVJfQVNTRVJUSU9OU19SRUZSRVNIRUQiKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gc2hvd1B1Ymxpc2hlckFzc2VydGlvbnNGb3JOb25Pd25lZEJ1cyhCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCkgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotCi0gICAgLy8gdHJ5IHRvIGdldCBhIGxpc3Qgb2YgcHVibGlzaGVyIGFzc2VydGlvbnMgYmFzZWQgb24gdGhlIGJ1c2luZXNzIGtleQotICAgIExpc3RNYW5hZ2VyIGxpc3RNYW5hZ2VyID0gbmV3IExpc3RNYW5hZ2VyKCk7Ci0gICAgRm9ybVRvb2wgZm9ybVRvb2wgPSBnZXRTZWxlY3RlZEZvcm1Ub29sKCk7Ci0gICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlfKTsKLSAgICBmb3JtVG9vbFBJLnJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfRVhJU1RJTkdfUFVCTElTSEVSX0FTU0VSVElPTlMpOwotICAgIFZlY3RvciBxdWVyeUlucHV0VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIFVERElQcm94eSBwcm94eSA9ICgoUmVnaXN0cnlFbGVtZW50KXJlZ2lzdHJ5Tm9kZV8uZ2V0VHJlZUVsZW1lbnQoKSkuZ2V0UHJveHkoKTsKLSAgICBSZWxhdGVkQnVzaW5lc3Nlc0xpc3QgcmVsYXRlZEJ1c0xpc3Q7Ci0gICAgdHJ5IHsKLSAgICAgIHJlbGF0ZWRCdXNMaXN0ID0gcHJveHkuZmluZF9yZWxhdGVkQnVzaW5lc3NlcyhidXNFbGVtZW50LmdldEJ1c2luZXNzRW50aXR5KCkuZ2V0QnVzaW5lc3NLZXkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChLZXllZFJlZmVyZW5jZSludWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZpbmRRdWFsaWZpZXJzKW51bGwpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiB1ZGRpZSkgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgICAgRGlzcG9zaXRpb25SZXBvcnQgcmVwb3J0ID0gdWRkaWUuZ2V0RGlzcG9zaXRpb25SZXBvcnQoKTsKLQkgIFZlY3RvciByZXBvcnRFcnJJbmZvID0gcmVwb3J0LmdldFJlc3VsdFZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBvcnRFcnJJbmZvLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCgoUmVzdWx0KSByZXBvcnRFcnJJbmZvLmdldChpKSkuZ2V0RXJySW5mbygpLmdldFRleHQoKSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiRXhjZXB0aW9uIik7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFZlY3RvciByZWxhdGVkQnVzVmVjdG9yID0gcmVsYXRlZEJ1c0xpc3QuZ2V0UmVsYXRlZEJ1c2luZXNzSW5mb3MoKS5nZXRSZWxhdGVkQnVzaW5lc3NJbmZvVmVjdG9yKCk7Ci0gICAgVmVjdG9yIG90aGVyQnVzaW5lc3NLZXlzID0gbmV3IFZlY3RvcigpOwotICAgIFZlY3RvciBwdWJBc3NlcnRpb25FbGVtZW50cyA9IG5ldyBWZWN0b3IoKTsKLSAgICBmb3IgKGludCBpICA9IDA7IGkgPCByZWxhdGVkQnVzVmVjdG9yLnNpemUoKTsgaSsrKSB7Ci0gICAgICBSZWxhdGVkQnVzaW5lc3NJbmZvIHJlbGF0ZWRCdXNJbmZvID0gKFJlbGF0ZWRCdXNpbmVzc0luZm8pcmVsYXRlZEJ1c1ZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAvLyBkZXRlcm1pbmUgdGhlIGZyb20vdG8gYnVzaW5lc3Mga2V5cwotICAgICAgU3RyaW5nIGZyb21LZXk7Ci0gICAgICBTdHJpbmcgdG9LZXk7Ci0gICAgICBTdHJpbmcgb3duaW5nQnVzaW5lc3NLZXk7Ci0gICAgICBpZiAocmVsYXRlZEJ1c0luZm8uZ2V0RGVmYXVsdFNoYXJlZFJlbGF0aW9uc2hpcHMoKS5nZXREaXJlY3Rpb24oKS5lcXVhbHMoU2hhcmVkUmVsYXRpb25zaGlwcy5ESVJFQ1RJT05fRlJPTUtFWSkpIHsKLSAgICAgICAgZnJvbUtleSA9IGJ1c0VsZW1lbnQuZ2V0QnVzaW5lc3NFbnRpdHkoKS5nZXRCdXNpbmVzc0tleSgpOwotICAgICAgICB0b0tleSA9IHJlbGF0ZWRCdXNJbmZvLmdldEJ1c2luZXNzS2V5KCk7Ci0gICAgICAgIG93bmluZ0J1c2luZXNzS2V5ID0gZnJvbUtleTsKLSAgICAgICAgb3RoZXJCdXNpbmVzc0tleXMuYWRkKHRvS2V5KTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBmcm9tS2V5ID0gcmVsYXRlZEJ1c0luZm8uZ2V0QnVzaW5lc3NLZXkoKTsKLSAgICAgICAgdG9LZXkgPSBidXNFbGVtZW50LmdldEJ1c2luZXNzRW50aXR5KCkuZ2V0QnVzaW5lc3NLZXkoKTsKLSAgICAgICAgb3duaW5nQnVzaW5lc3NLZXkgPSB0b0tleTsKLSAgICAgICAgb3RoZXJCdXNpbmVzc0tleXMuYWRkKGZyb21LZXkpOwotICAgICAgfQotCi0gICAgICBWZWN0b3Iga2V5ZWRSZWZWZWN0b3IgPSByZWxhdGVkQnVzSW5mby5nZXREZWZhdWx0U2hhcmVkUmVsYXRpb25zaGlwcygpLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCk7Ci0gICAgICBQdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50W10gcHViQXNzZXJ0aW9uRWxlbWVudEFycmF5ID0gbmV3IFB1Ymxpc2hlckFzc2VydGlvbkVsZW1lbnRba2V5ZWRSZWZWZWN0b3Iuc2l6ZSgpXTsKLSAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwga2V5ZWRSZWZWZWN0b3Iuc2l6ZSgpOyBrKyspIHsKLSAgICAgICAgLy8gcmV0cmlldmUgdGhlIHN0YXR1cyBvZiB0aGUgcHVibGlzaGVyIGFzc2VydGlvbgotICAgICAgICBTdHJpbmcgc3RhdHVzID0gQ29tcGxldGlvblN0YXR1cy5DT01QTEVURTsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga2V5ZWRSZWYgPSAoS2V5ZWRSZWZlcmVuY2Upa2V5ZWRSZWZWZWN0b3IuZWxlbWVudEF0KGspOwotICAgICAgICBQdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50IHB1YkFzc2VydGlvbkVsZW1lbnQgPSBuZXcgUHVibGlzaGVyQXNzZXJ0aW9uRWxlbWVudCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9LZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmluZ0J1c2luZXNzS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXllZFJlZik7Ci0gICAgICAgIHB1YkFzc2VydGlvbkVsZW1lbnRBcnJheVtrXSA9IHB1YkFzc2VydGlvbkVsZW1lbnQ7Ci0gICAgICB9Ci0gICAgICBwdWJBc3NlcnRpb25FbGVtZW50cy5hZGQocHViQXNzZXJ0aW9uRWxlbWVudEFycmF5KTsKLSAgICB9Ci0gICAgaWYgKG90aGVyQnVzaW5lc3NLZXlzLnNpemUoKSA+IDApIHsKLSAgICAgIFZlY3RvciBidXNFbnRpdGllczsKLSAgICAgIHRyeSB7Ci0gICAgICAgIGJ1c0VudGl0aWVzID0gcHJveHkuZ2V0X2J1c2luZXNzRGV0YWlsKG90aGVyQnVzaW5lc3NLZXlzKS5nZXRCdXNpbmVzc0VudGl0eVZlY3RvcigpOwotICAgICAgfQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewotICAgICAgICBidXNFbnRpdGllcyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgaWYgKG90aGVyQnVzaW5lc3NLZXlzLnNpemUoKSA+IDEpIHsKLSAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG90aGVyQnVzaW5lc3NLZXlzLnNpemUoKTsgaisrKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICBidXNFbnRpdGllcy5hZGQocHJveHkuZ2V0X2J1c2luZXNzRGV0YWlsKChTdHJpbmcpb3RoZXJCdXNpbmVzc0tleXMuZ2V0KGopKS5nZXRCdXNpbmVzc0VudGl0eVZlY3RvcigpLmdldCgwKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICBwdWJBc3NlcnRpb25FbGVtZW50cy5yZW1vdmUoaik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBwdWJBc3NlcnRpb25FbGVtZW50cy5yZW1vdmUoMCk7Ci0gICAgICB9Ci0gICAgICBmb3IgKGludCBqICA9IDA7IGogPCBidXNFbnRpdGllcy5zaXplKCk7IGorKykgewotICAgICAgICBCdXNpbmVzc0VudGl0eSBiZSA9IChCdXNpbmVzc0VudGl0eSlidXNFbnRpdGllcy5nZXQoaik7Ci0gICAgICAgIExpc3RFbGVtZW50IGxlID0gbmV3IExpc3RFbGVtZW50KGJlKTsKLSAgICAgICAgcXVlcnlJbnB1dFZlY3Rvci5hZGQobGUpOwotICAgICAgICBpbnQgc3ViUXVlcnlJdGVtSWQgPSBxdWVyeUlucHV0VmVjdG9yLmluZGV4T2YobGUpOwotICAgICAgICBQdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50W10gcHViQXNzZXJ0aW9uRWxlbWVudEFycmF5ID0gKFB1Ymxpc2hlckFzc2VydGlvbkVsZW1lbnRbXSlwdWJBc3NlcnRpb25FbGVtZW50cy5nZXQoaik7Ci0gICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgcHViQXNzZXJ0aW9uRWxlbWVudEFycmF5Lmxlbmd0aDsgaysrKSB7Ci0gICAgICAgICAgcHViQXNzZXJ0aW9uRWxlbWVudEFycmF5W2tdLnNldFNlcnZpY2VQcm92aWRlcihsZSk7Ci0gICAgICAgICAgcHViQXNzZXJ0aW9uRWxlbWVudEFycmF5W2tdLnNldFN1YlF1ZXJ5SXRlbUlkKHN1YlF1ZXJ5SXRlbUlkKTsKLSAgICAgICAgICBsaXN0TWFuYWdlci5hZGQobmV3IExpc3RFbGVtZW50KHB1YkFzc2VydGlvbkVsZW1lbnRBcnJheVtrXSkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGJ1c0VsZW1lbnQuc2V0UHVibGlzaGVyQXNzZXJ0aW9ucyhsaXN0TWFuYWdlcik7Ci0gICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0VYSVNUSU5HX1BVQkxJU0hFUl9BU1NFUlRJT05TLCBxdWVyeUlucHV0VmVjdG9yKTsKLSAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fUFVCTElTSEVSX0FTU0VSVElPTlNfUkVGUkVTSEVEIikpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21VRERJQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21VRERJQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MDE5YjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvU3dpdGNoUGVyc3BlY3RpdmVGcm9tVURESUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlNob3dQZXJzcGVjdGl2ZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBTd2l0Y2hQZXJzcGVjdGl2ZUZyb21VRERJQWN0aW9uIGV4dGVuZHMgU2hvd1BlcnNwZWN0aXZlQWN0aW9uCi17Ci0gIHB1YmxpYyBTd2l0Y2hQZXJzcGVjdGl2ZUZyb21VRERJQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIpOwotICAgIGlmIChwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMgIT0gbnVsbCAmJiBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5ULHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSLGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFN0cmluZyBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLkZSQU1FU0VUX0NPTFNfUEVSU1BFQ1RJVkVfQ09OVEVOVCk7Ci0gICAgU3RyaW5nIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIpOwotICAgIAotICAgIC8vIFNhdmUgdGhlIGZyYW1lc2V0IHNpemVzIGlmZiBubyBmcmFtZSBpcyBtYXhpbWl6ZWQuCi0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIGlmICghcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLnN0YXJ0c1dpdGgoIjEwMCUiKSAmJiAhcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICB1ZGRpUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAKLSAgICBpZiAoIWFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3Muc3RhcnRzV2l0aCgiMTAwJSIpICYmICFhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICB1ZGRpUGVyc3BlY3RpdmUuc2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgIAotICAgIHJldHVybiBzdXBlci5ydW4oKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0Rm9ybUFjdGlvbkxpbmsoaW50IHRhcmdldFBlcnNwZWN0aXZlSWQsYm9vbGVhbiBmb3JIaXN0b3J5KQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGZvcm1MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL1N3aXRjaFBlcnNwZWN0aXZlRnJvbVVERElBY3Rpb25KU1AuanNwPyIpOwotICAgIGZvcm1MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkUpLmFwcGVuZCgnPScpLmFwcGVuZCh0YXJnZXRQZXJzcGVjdGl2ZUlkKTsKLSAgICBpZiAoZm9ySGlzdG9yeSkKLSAgICAgIGZvcm1MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuSVNISVNUT1JZKS5hcHBlbmQoIj0xIik7Ci0gICAgcmV0dXJuIGZvcm1MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1RvZ2dsZUNhdGVnb3J5Tm9kZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVG9nZ2xlQ2F0ZWdvcnlOb2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxM2QzNjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVG9nZ2xlQ2F0ZWdvcnlOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuVG9nZ2xlTm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci0KLXB1YmxpYyBjbGFzcyBUb2dnbGVDYXRlZ29yeU5vZGVBY3Rpb24gZXh0ZW5kcyBUb2dnbGVOb2RlQWN0aW9uCi17Ci0gIHB1YmxpYyBUb2dnbGVDYXRlZ29yeU5vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcixjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldENhdGVnb3J5TWFuYWdlcigpKTsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9Ub2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uLmpzcD9zSWQ9Li4uJm5vZGVJZD0uLi4mb3Blbj0uLi4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGluayhTdHJpbmcgc2Vzc2lvbklkLGludCBub2RlSWQsYm9vbGVhbiBvcGVuKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ1ZGRpL2FjdGlvbnMvVG9nZ2xlQ2F0ZWdvcnlOb2RlQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuU0VTU0lPTklEKS5hcHBlbmQoJz0nKS5hcHBlbmQoc2Vzc2lvbklkKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuT1BFTikuYXBwZW5kKCc9JykuYXBwZW5kKG9wZW4/QWN0aW9uSW5wdXRzLk9QRU5fTk9ERTpBY3Rpb25JbnB1dHMuQ0xPU0VfTk9ERSk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgcGVyZm9ybUJhc2VBY3Rpb24obm9kZUlkKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGlua0Zvckhpc3RvcnkoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRyZWVDb250ZW50VmFyKCkKLSAgewotICAgIHJldHVybiAiY2F0ZWdvcnlCcm93c2VyV2luZG93Q29udGVudCI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRyZWVDb250ZW50UGFnZSgpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgcmV0dXJuIE9wZW5DYXRlZ29yeUJyb3dzZXJBY3Rpb24uZ2V0Q2F0ZWdvcnlDb250ZW50UGFnZShjb250cm9sbGVyXy5nZXRTZXNzaW9uSWQoKSx1ZGRpUGVyc3BlY3RpdmUuZ2V0Q2F0ZWdvcnlUTW9kZWxLZXkoKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRyZWVDb250YWluZXJQYWdlKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICByZXR1cm4gT3BlbkNhdGVnb3J5QnJvd3NlckFjdGlvbi5nZXRBY3Rpb25MaW5rKGNvbnRyb2xsZXJfLmdldFNlc3Npb25JZCgpLHVkZGlQZXJzcGVjdGl2ZS5nZXRDYXRlZ29yeVRNb2RlbEtleSgpKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclZhcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0UGVyc3BlY3RpdmVJZCgpCi0gIHsKLSAgICByZXR1cm4gQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1VEREk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1RvZ2dsZU5hdmlnYXRvck5vZGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1RvZ2dsZU5hdmlnYXRvck5vZGVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY2ZDU2NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9Ub2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuVG9nZ2xlTm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLlRvb2xUeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBUb2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uIGV4dGVuZHMgVG9nZ2xlTm9kZUFjdGlvbgotewotICBwdWJsaWMgVG9nZ2xlTmF2aWdhdG9yTm9kZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyLGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TmF2aWdhdG9yTWFuYWdlcigpKTsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9Ub2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uLmpzcD9ub2RlSWQ9Li4uJm9wZW49Li4uCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJZCxib29sZWFuIG9wZW4pCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoInVkZGkvYWN0aW9ucy9Ub2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuT1BFTikuYXBwZW5kKCc9JykuYXBwZW5kKG9wZW4/QWN0aW9uSW5wdXRzLk9QRU5fTk9ERTpBY3Rpb25JbnB1dHMuQ0xPU0VfTk9ERSk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IHRvIHNlbGVjdCB0aGUgdG9nZ2xlZCBub2RlIHdoZW4sIGF0IHRoZSB0aW1lIG9mCi0gIC8vIHRoZSBjb2xsYXBzZSBldmVudCwgYSBkZXNjZW5kYW50IG5vZGUgd2FzIHNlbGVjdGVkLgotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgewotICAgIFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyID0gdG9nZ2xlZE5vZGVfLmdldFRvb2xNYW5hZ2VyKCk7Ci0gICAgVG9vbCBzZWxlY3RlZFRvb2wgPSB0b29sTWFuYWdlci5nZXRTZWxlY3RlZFRvb2woKTsKLSAgICBpbnQgbm9kZUlkID0gdG9nZ2xlZE5vZGVfLmdldE5vZGVJZCgpOwotICAgIGludCB0b29sSWQgPSBzZWxlY3RlZFRvb2wuZ2V0VG9vbElkKCk7Ci0gICAgaW50IHZpZXdJZCA9IHRvZ2dsZWROb2RlXy5nZXRWaWV3SWQoKTsKLSAgICBpbnQgdmlld1Rvb2xJZCA9IHRvZ2dsZWROb2RlXy5nZXRWaWV3VG9vbElkKCk7Ci0gICAgaWYgKHNlbGVjdGVkVG9vbC5nZXRUb29sVHlwZSgpICE9IFRvb2xUeXBlcy5BQ1RJT04pCi0gICAgICByZXR1cm4gU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQsdG9vbElkLHZpZXdJZCx2aWV3VG9vbElkLHRydWUpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBTZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkLHRydWUpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFZhcigpCi0gIHsKLSAgICByZXR1cm4gIm5hdmlnYXRvckNvbnRlbnQiOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuICJ1ZGRpL25hdmlnYXRvcl9jb250ZW50LmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJWYXIoKQotICB7Ci0gICAgcmV0dXJuICJwcm9wZXJ0aWVzQ29udGFpbmVyIjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKQotICB7Ci0gICAgcmV0dXJuICJ1ZGRpL3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCI7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0UGVyc3BlY3RpdmVJZCgpCi0gIHsKLSAgICByZXR1cm4gQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1VEREk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1RyYW5zZmVyU3ViUXVlcnlSZXN1bHRzQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9UcmFuc2ZlclN1YlF1ZXJ5UmVzdWx0c0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTYyOTMxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1RyYW5zZmVyU3ViUXVlcnlSZXN1bHRzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESU1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5CdXNpbmVzc0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlSW50ZXJmYWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5NdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5TdWJRdWVyeVRyYW5zZmVyVGFyZ2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLQotcHVibGljIGNsYXNzIFRyYW5zZmVyU3ViUXVlcnlSZXN1bHRzQWN0aW9uIGV4dGVuZHMgVURESVByb3BlcnRpZXNGb3JtQWN0aW9uCi17Ci0gIHByaXZhdGUgTm9kZSB0YXJnZXROb2RlXzsKLSAgcHVibGljIFRyYW5zZmVyU3ViUXVlcnlSZXN1bHRzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIHRhcmdldE5vZGVfID0gbnVsbDsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmdbXSBzZWxlY3RlZE5vZGVJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIC8vIFRoZSBjbGllbnQgSmF2YXNjcmlwdCBlbmZvcmNlcyB0aGUgcnVsZSB0aGF0IGF0IGxlYXN0IG9uZSBpdGVtIHdhcyBzZWxlY3RlZCBiZWZvcmUgdGhlIGZvcm0gY2FuIGJlIHN1Ym1pdHRlZC4KLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5TRUxFQ1RFRF9OT0RFSURTLHNlbGVjdGVkTm9kZUlkcyk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9yUmV0dXJuKCkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL1RyYW5zZmVyU3ViUXVlcnlSZXN1bHRzQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChVRERJQWN0aW9uSW5wdXRzLlNIT1dfUkVTVUxUU19UQVJHRVQpLmFwcGVuZCgiPTEiKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgZW5hYmxlU2hvd1Jlc3VsdHNUYXJnZXQoKQotICB7Ci0gICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSB0YXJnZXQgbGluayBvbiB0aGUgcXVlcnkgcmVzdWx0cyBwYWdlLiBJbnNlcnQgYSB6ZXJvIGVsZW1lbnQKLSAgICAvLyBhcnJheSBzbyB0aGF0IG5vIHJlc3VsdHMgYXJlIHRyYW5zZmVycmVkIGJ1dCB0aGUganVtcCBiYWNrIHRvIHRoZSBjb3JyZWN0IHF1ZXJ5IGFuZCBpdHMgaW5mbyBvY2N1cnMuCi0gICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuU0VMRUNURURfTk9ERUlEUyxuZXcgU3RyaW5nWzBdKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICAvLyBUcmFuc2ZlciB0aGUgcmVzdWx0cyBpbiB0aGlzIFF1ZXJ5IG5vZGUgaW50byB0aGUgcHJvcGVydHkgZXhwZWN0ZWQgYnkgdGhlIG9yaWdpbmF0aW5nIG5vZGUuCi0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLQotICAgIFN0cmluZ1tdIHNlbGVjdGVkTm9kZUlkcyA9IChTdHJpbmdbXSlwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5TRUxFQ1RFRF9OT0RFSURTKTsKLSAgICBOb2RlIGN1cnJlbnROb2RlID0gZ2V0U2VsZWN0ZWROYXZpZ2F0b3JOb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIFN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQgdGFyZ2V0ID0gKFN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQpKGN1cnJlbnRFbGVtZW50LmdldFByb3BlcnR5QXNPYmplY3QoVURESU1vZGVsQ29uc3RhbnRzLlNVQlFVRVJZX1RSQU5TRkVSX1RBUkdFVCkpOwotICAgIFN0cmluZyBzdWJRdWVyeUtleSA9IHRhcmdldC5nZXRTdWJRdWVyeUtleSgpOwotICAgIFN0cmluZyB0YXJnZXRRdWVyeUtleTsKLQotICAgIGludCBsYXN0U2VwYXJhdG9yUG9zID0gc3ViUXVlcnlLZXkubGFzdEluZGV4T2YoJzonKTsKLSAgICBpZiAobGFzdFNlcGFyYXRvclBvcyA9PSAtMSkKLSAgICAgIHRhcmdldFF1ZXJ5S2V5ID0gIiI7Ci0gICAgZWxzZQotICAgICAgdGFyZ2V0UXVlcnlLZXkgPSBzdWJRdWVyeUtleS5zdWJzdHJpbmcoMCxsYXN0U2VwYXJhdG9yUG9zKTsKLQotICAgIFN0cmluZyB0YXJnZXRQcm9wZXJ0eSA9IHN1YlF1ZXJ5S2V5LnN1YnN0cmluZyhsYXN0U2VwYXJhdG9yUG9zKzEsc3ViUXVlcnlLZXkubGVuZ3RoKCkpOwotICAgIEZvcm1Ub29sIHRhcmdldEZvcm1Ub29sID0gdGFyZ2V0LmdldFRhcmdldEZvcm1Ub29sKCk7Ci0gICAgKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSl0YXJnZXRGb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5KTsKLSAgICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgdGFyZ2V0UXVlcnlGb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSl0YXJnZXRGb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHRhcmdldFF1ZXJ5S2V5KTsKLSAgICBWZWN0b3IgdGFyZ2V0TGlzdCA9IChWZWN0b3IpdGFyZ2V0UXVlcnlGb3JtVG9vbFBJLmdldFByb3BlcnR5KHRhcmdldFByb3BlcnR5KTsKLSAgICBpZiAodGFyZ2V0TGlzdCA9PSBudWxsKQotICAgICAgdGFyZ2V0TGlzdCA9IG5ldyBWZWN0b3IoKTsKLQotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gY3VycmVudE5vZGUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBmb3IgKGludCBpPTA7aTxzZWxlY3RlZE5vZGVJZHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpbnQgc2VsZWN0ZWROb2RlSWQgPSBJbnRlZ2VyLnBhcnNlSW50KHNlbGVjdGVkTm9kZUlkc1tpXSk7Ci0gICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUoc2VsZWN0ZWROb2RlSWQpOwotICAgICAgVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIE9iamVjdCBvYmplY3Q7Ci0gICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBCdXNpbmVzc0VsZW1lbnQpCi0gICAgICAgIG9iamVjdCA9ICgoQnVzaW5lc3NFbGVtZW50KXRyZWVFbGVtZW50KS5nZXRCdXNpbmVzc0VudGl0eSgpOwotICAgICAgZWxzZSBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBTZXJ2aWNlRWxlbWVudCkKLSAgICAgICAgb2JqZWN0ID0gKChTZXJ2aWNlRWxlbWVudCl0cmVlRWxlbWVudCkuZ2V0QnVzaW5lc3NTZXJ2aWNlKCk7Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIFNlcnZpY2UgaW50ZXJmYWNlCi0gICAgICAgIG9iamVjdCA9ICgoU2VydmljZUludGVyZmFjZUVsZW1lbnQpdHJlZUVsZW1lbnQpLmdldFRNb2RlbCgpOwotICAgICAgfQotICAgICAgTGlzdEVsZW1lbnQgdGFyZ2V0TGlzdEVsZW1lbnQgPSBuZXcgTGlzdEVsZW1lbnQob2JqZWN0KTsKLSAgICAgIHRhcmdldExpc3RFbGVtZW50LnNldFRhcmdldFZpZXdUb29sSW5mbyhzZWxlY3RlZE5vZGVJZCxzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSk7Ci0gICAgICBpZiAodGFyZ2V0UHJvcGVydHkuZXF1YWxzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfQlVTSU5FU1MpIHx8IHRhcmdldFByb3BlcnR5LmVxdWFscyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1MpIHx8IHRhcmdldFByb3BlcnR5LmVxdWFscyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0UpKQotICAgICAgewotICAgICAgICAvLyBDbGVhciB0aGUgbWFuYWdlciBzbyBhIHJlcGxhY2VtZW50IG9jY3Vycy4KLSAgICAgICAgdGFyZ2V0TGlzdC5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgfQotICAgICAgdGFyZ2V0TGlzdC5hZGRFbGVtZW50KHRhcmdldExpc3RFbGVtZW50KTsKLSAgICB9Ci0gICAgdGFyZ2V0UXVlcnlGb3JtVG9vbFBJLnNldFByb3BlcnR5KHRhcmdldFByb3BlcnR5LHRhcmdldExpc3QpOwotICAgIEhhc2h0YWJsZSBzYXZlZFBhcmVudFF1ZXJ5UHJvcGVydGllcyA9IHRhcmdldC5nZXRQYXJlbnRRdWVyeURhdGEoKTsKLSAgICBFbnVtZXJhdGlvbiBlID0gc2F2ZWRQYXJlbnRRdWVyeVByb3BlcnRpZXMua2V5cygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIHRhcmdldFF1ZXJ5Rm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShrZXksc2F2ZWRQYXJlbnRRdWVyeVByb3BlcnRpZXMuZ2V0KGtleSkpOwotICAgIH0KLQotICAgIC8vIFNlbGVjdCB0aGUgbm9kZSBhbmQgdGhlIGRhdGFzdHJ1Y3R1cmUgd2hpY2ggaXMgdGhlIHRhcmdldCBvZiB0aGUgc3VicXVlcnkuCi0gICAgaW50IHRhcmdldE5vZGVJZCA9IHRhcmdldC5nZXROb2RlSWQoKTsKLSAgICBpbnQgdGFyZ2V0VG9vbElkID0gdGFyZ2V0LmdldFRvb2xJZCgpOwotICAgIGludCB0YXJnZXRWaWV3SWQgPSB0YXJnZXQuZ2V0Vmlld0lkKCk7Ci0gICAgaW50IHRhcmdldFZpZXdUb29sSWQgPSB0YXJnZXQuZ2V0Vmlld1Rvb2xJZCgpOwotICAgIG5vZGVNYW5hZ2VyLnNldFNlbGVjdGVkTm9kZUlkKHRhcmdldE5vZGVJZCk7Ci0gICAgdGFyZ2V0Tm9kZV8gPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICB0YXJnZXROb2RlXy5nZXRUb29sTWFuYWdlcigpLnNldFNlbGVjdGVkVG9vbElkKHRhcmdldFRvb2xJZCk7Ci0gICAgdGFyZ2V0Tm9kZV8uc2V0Vmlld0lkKHRhcmdldFZpZXdJZCk7Ci0gICAgaWYgKHRhcmdldFZpZXdJZCAhPSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpCi0gICAgICB0YXJnZXROb2RlXy5nZXRWaWV3VG9vbE1hbmFnZXIoKS5zZXRTZWxlY3RlZFRvb2xJZCh0YXJnZXRWaWV3VG9vbElkKTsKLSAgICB0YXJnZXRGb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSx0YXJnZXRRdWVyeUtleSk7Ci0gICAgYWRkVG9IaXN0b3J5KEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9VRERJLFNlbGVjdEZpbmRUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsodGFyZ2V0Tm9kZUlkLHRhcmdldFRvb2xJZCx0YXJnZXRWaWV3SWQsdGFyZ2V0Vmlld1Rvb2xJZCx0YXJnZXRRdWVyeUtleSx0cnVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgTm9kZSBnZXRUYXJnZXROb2RlKCkKLSAgewotICAgIHJldHVybiB0YXJnZXROb2RlXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVHJhbnNmZXJUb0FkZENhdGVnb3J5RGF0YUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVHJhbnNmZXJUb0FkZENhdGVnb3J5RGF0YUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWI1MDgzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1RyYW5zZmVyVG9BZGRDYXRlZ29yeURhdGFBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLQotcHVibGljIGNsYXNzIFRyYW5zZmVyVG9BZGRDYXRlZ29yeURhdGFBY3Rpb24gZXh0ZW5kcyBBY3Rpb24KLXsKLSAgcHVibGljIFRyYW5zZmVyVG9BZGRDYXRlZ29yeURhdGFBY3Rpb24oKQotICB7Ci0gIH0KLQotICAvLyB1ZGRpL2FjdGlvbnMvVHJhbnNmZXJUb0FkZENhdGVnb3J5RGF0YUFjdGlvbkpTUC5qc3A/c2Vzc2lvbklkPS4uLiZjYXRlZ29yeVRNb2RlbEtleT0uLi4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGluayhTdHJpbmcgc2Vzc2lvbklkLFN0cmluZyBjYXRlZ29yeVRNb2RlbEtleSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL1RyYW5zZmVyVG9BZGRDYXRlZ29yeURhdGFBY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpLmFwcGVuZCgnPScpLmFwcGVuZChzZXNzaW9uSWQpLmFwcGVuZCgnJicpLmFwcGVuZChVRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JZX1RNT0RFTF9LRVkpLmFwcGVuZCgnPScpLmFwcGVuZChjYXRlZ29yeVRNb2RlbEtleSk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcG9wdWxhdGVQcm9wZXJ0eVRhYmxlKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KQotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VERElBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVURESUFkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5OWU4MWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVURESUFkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLldTRExFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuTGlua0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkudXRpbC5VZGRpNGpIZWxwZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5PcGVuV1NETEFjdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotCi1wdWJsaWMgY2xhc3MgVURESUFkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uIGV4dGVuZHMgTGlua0FjdGlvbgotewotICBwdWJsaWMgVURESUFkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkLGludCB0b29sSWQsaW50IHZpZXdJZCxpbnQgdmlld1Rvb2xJZCkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9hY3Rpb25zL1VERElBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChub2RlSWQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlRPT0xJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCh0b29sSWQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCh2aWV3SWQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdUT09MSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodmlld1Rvb2xJZCk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NMaW5rUGFyYW1ldGVycyhIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKLSAgewotICAgIFN0cmluZyBub2RlSWRTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICAvLyBQZXJmb3JtIGRhdGEgdmFsaWRhdGlvbi4KLSAgICB0cnkKLSAgICB7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KG5vZGVJZFN0cmluZyk7Ci0gICAgfQotICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBWYWxpZGF0aW9uIGZhaWxlZCEKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsbm9kZUlkU3RyaW5nKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUobm9kZUlkKTsKLSAgICBUcmVlRWxlbWVudCBlbGVtZW50ID0gbm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgU2VydmljZUVsZW1lbnQpCi0gICAgewotICAgICAgU2VydmljZUVsZW1lbnQgc2VydmljZUVsZW1lbnQgPSAoU2VydmljZUVsZW1lbnQpZWxlbWVudDsKLSAgICAgIEJ1c2luZXNzU2VydmljZSBicyA9IHNlcnZpY2VFbGVtZW50LmdldEJ1c2luZXNzU2VydmljZSgpOwotICAgICAgVWRkaTRqSGVscGVyIHVkZGk0akhlbHBlciA9IG5ldyBVZGRpNGpIZWxwZXIoKTsKLSAgICAgIFN0cmluZyB3c2RsVVJMID0gdWRkaTRqSGVscGVyLmdldFdTREwoYnMsIHNlcnZpY2VFbGVtZW50LmdldFJlZ2lzdHJ5RWxlbWVudCgpLmdldFByb3h5KCkpOwotICAgICAgaWYgKHdzZGxVUkwgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBEZWZpbml0aW9uIGRlZiA9IHVkZGk0akhlbHBlci5nZXRXU0RMRGVmaW5pdGlvbih3c2RsVVJMKTsKLSAgICAgICAgICBGaWxlIHRlbXBGaWxlID0gRmlsZS5jcmVhdGVUZW1wRmlsZSgidGVtcCIsIi53c2RsIik7Ci0gICAgICAgICAgVURESUltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb24gYWN0aW9uID0gbmV3IFVERElJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAgICAgICBhY3Rpb24ud3JpdGVXU0RMRGVmaW5pdGlvbihuZXcgRmlsZU91dHB1dFN0cmVhbSh0ZW1wRmlsZSksZGVmKTsKLSAgICAgICAgICB3c2RsVVJMID0gdGVtcEZpbGUudG9VUkwoKS50b1N0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICB3c2RsVVJMID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICB3c2RsVVJMID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICAgIHdzZGxVUkwgPSBudWxsOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAgIAotICAgICAgaWYgKHdzZGxVUkwgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgT3BlbldTRExBY3Rpb24gb3BlbldTRExBY3Rpb24gPSBuZXcgT3BlbldTRExBY3Rpb24oY29udHJvbGxlcl8pOwotICAgICAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IG9wZW5XU0RMQWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMLHdzZGxVUkwpOwotICAgICAgICBib29sZWFuIGFjdGlvblJlc3VsdCA9IG9wZW5XU0RMQWN0aW9uLnJ1bigpOwotICAgICAgICBpZiAoYWN0aW9uUmVzdWx0KSB7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1dTRExfQURERURfVE9fV1NETF9QRVJTUEVDVElWRSIsd3NkbFVSTCkpOwotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfV1NETF9OT1RfQURERURfVE9fV1NETF9QRVJTUEVDVElWRSIpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VERElFeGNlcHRpb25IYW5kbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VRERJRXhjZXB0aW9uSGFuZGxlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmZhODQyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VERElFeGNlcHRpb25IYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDE5IDE4Mjg2NCAgIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLkRpc3Bvc2l0aW9uUmVwb3J0OwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuUmVzdWx0OwotCi1wdWJsaWMgY2xhc3MgVURESUV4Y2VwdGlvbkhhbmRsZXIgewotCi0JcHVibGljIHN0YXRpYyBib29sZWFuIHJlcXVpcmVzUmVzZXQoVURESUV4Y2VwdGlvbiBlKXsKLQkJCi0gICAgCURpc3Bvc2l0aW9uUmVwb3J0IGRwID0gZS5nZXREaXNwb3NpdGlvblJlcG9ydCgpOwotICAgIAlWZWN0b3IgcnYgPSBkcC5nZXRSZXN1bHRWZWN0b3IoKTsKLSAgICAJZm9yKGludCBpID0gMDtpIDwgcnYuc2l6ZSgpO2krKyl7Ci0gICAgCQlSZXN1bHQgcmVzdWx0ID0gKFJlc3VsdClydi5nZXQoaSk7Ci0gICAgCQlpZihyZXN1bHQuZ2V0RXJybm8oKS5lcXVhbHMoIjEwMTQwIikpCi0gICAgCQkJIHJldHVybiB0cnVlOwotICAgIAl9Ci0gICAgCXJldHVybiBmYWxzZTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVURESUltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJmZGQ2NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLldTRExGaWxlTmFtZUhlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuU2VydmljZUludGVyZmFjZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkudXRpbC5VZGRpNGpIZWxwZXI7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLkJ1c2luZXNzU2VydmljZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci0KLXB1YmxpYyBjbGFzcyBVRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbiBleHRlbmRzIEltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbgotewotICBwcml2YXRlIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyXzsKLSAgcHJpdmF0ZSBEZWZpbml0aW9uIGRlZl87Ci0gIHByaXZhdGUgU3RyaW5nIGRlZmF1bHRXU0RMRmlsZU5hbWVfOwotCi0gIHB1YmxpYyBVRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBub2RlTWFuYWdlcl8gPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgICBkZWZfID0gbnVsbDsKLSAgICBkZWZhdWx0V1NETEZpbGVOYW1lXyA9ICJ0ZW1wLndzZGwiOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkLGludCB0b29sSWQsaW50IHZpZXdJZCxpbnQgdmlld1Rvb2xJZCkKLSAgewotICAgIHJldHVybiBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQsdG9vbElkLHZpZXdJZCx2aWV3VG9vbElkLCJ1ZGRpL2FjdGlvbnMvVURESUltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb25KU1AuanNwIik7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiB3cml0ZShPdXRwdXRTdHJlYW0gb3MpCi0gIHsKLSAgICByZXR1cm4gd3JpdGVXU0RMRGVmaW5pdGlvbihvcyxkZWZfKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0RGVmYXVsdEZpbGVOYW1lKCkKLSAgewotICAgIHJldHVybiBkZWZhdWx0V1NETEZpbGVOYW1lXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgaW50IG5vZGVJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJZCk7Ci0gICAgVWRkaTRqSGVscGVyIHVkZGk0akhlbHBlciA9IG5ldyBVZGRpNGpIZWxwZXIoKTsKLSAgICBTdHJpbmcgd3NkbFVybCA9IG51bGw7Ci0gICAgaWYgKG5vZGUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBUcmVlRWxlbWVudCBlbGVtZW50ID0gbm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBTZXJ2aWNlRWxlbWVudCkKLSAgICAgIHsKLSAgICAgICAgU2VydmljZUVsZW1lbnQgc2VydmljZUVsZW1lbnQgPSAoU2VydmljZUVsZW1lbnQpZWxlbWVudDsKLSAgICAgICAgQnVzaW5lc3NTZXJ2aWNlIGJzID0gc2VydmljZUVsZW1lbnQuZ2V0QnVzaW5lc3NTZXJ2aWNlKCk7Ci0gICAgICAgIHdzZGxVcmwgPSB1ZGRpNGpIZWxwZXIuZ2V0V1NETChicywgc2VydmljZUVsZW1lbnQuZ2V0UmVnaXN0cnlFbGVtZW50KCkuZ2V0UHJveHkoKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgU2VydmljZUludGVyZmFjZUVsZW1lbnQpCi0gICAgICB7Ci0gICAgICAgIFRNb2RlbCB0TW9kZWwgPSAoKFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50KWVsZW1lbnQpLmdldFRNb2RlbCgpOwotICAgICAgICB3c2RsVXJsID0gdWRkaTRqSGVscGVyLmdldFdTREwodE1vZGVsKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHdzZGxVcmwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgZGVmXyA9IHVkZGk0akhlbHBlci5nZXRXU0RMRGVmaW5pdGlvbih3c2RsVXJsKTsKLSAgICAgICAgaWYgKGRlZl8gIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyB3c2RsUGF0aG5hbWU7Ci0gICAgICAgICAgaW50IGluZGV4ID0gd3NkbFVybC5pbmRleE9mKCcvJyk7Ci0gICAgICAgICAgaWYgKGluZGV4ICE9IC0xKQotICAgICAgICAgICAgd3NkbFBhdGhuYW1lID0gd3NkbFVybC5zdWJzdHJpbmcoaW5kZXgrMSwgd3NkbFVybC5sZW5ndGgoKSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgd3NkbFBhdGhuYW1lID0gd3NkbFVybDsKLSAgICAgICAgICBkZWZhdWx0V1NETEZpbGVOYW1lXyA9IFdTRExGaWxlTmFtZUhlbHBlci5nZXRXU0RMRmlsZU5hbWUod3NkbFBhdGhuYW1lKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlcl8uZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1JFVFJJRVZJTkdfV1NETF9ET0MiKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFZhcigpCi0gIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFZhcigpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTdGF0dXNDb250ZW50UGFnZSgpCi0gIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFBhZ2UoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVURESUltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVURESUltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjgyM2Q5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5JbXBvcnRUb1dvcmtiZW5jaEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIFVERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb24gZXh0ZW5kcyBJbXBvcnRUb1dvcmtiZW5jaEFjdGlvbgotewotICBwdWJsaWMgVURESUltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBGb3JtVG9vbCBnZXRTZWxlY3RlZEZvcm1Ub29sKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICByZXR1cm4gKEZvcm1Ub29sKXVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCkuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gIH0KLQotICAgIHB1YmxpYyBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24gbmV3SW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uKCkgewotICAgICAgICBVRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbiBhY3Rpb24gPSBuZXcgVURESUltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb24oY29udHJvbGxlcl8pOwotICAgICAgICBIYXNodGFibGUgdGFibGUgPSBhY3Rpb24uZ2V0UHJvcGVydHlUYWJsZSgpOwotCi0gICAgICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotCi0gICAgICAgIHRhYmxlLnB1dChBY3Rpb25JbnB1dHMuTk9ERUlELCBTdHJpbmcudmFsdWVPZihzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCkpKTsKLQotICAgICAgICByZXR1cm4gYWN0aW9uOwotICAgIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRQYWdlKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VERElMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VRERJTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDk1Mjg0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VERElMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuU2VydmljZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlNlcnZpY2VJbnRlcmZhY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS51dGlsLlVkZGk0akhlbHBlcjsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLQotcHVibGljIGNsYXNzIFVERElMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uIGV4dGVuZHMgTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbgotewotICBwdWJsaWMgVURESUxhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgRm9ybVRvb2wgZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgcmV0dXJuIChGb3JtVG9vbCl1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgICBOb2RlIG5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUcmVlRWxlbWVudCBlbGVtZW50ID0gbm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIFVkZGk0akhlbHBlciB1ZGRpNGpIZWxwZXIgPSBuZXcgVWRkaTRqSGVscGVyKCk7Ci0gICAgU3RyaW5nIHdzZGxVcmwgPSBudWxsOwotICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgU2VydmljZUVsZW1lbnQpCi0gICAgewotICAgICAgU2VydmljZUVsZW1lbnQgc2VydmljZUVsZW1lbnQgPSAoU2VydmljZUVsZW1lbnQpZWxlbWVudDsKLSAgICAgIEJ1c2luZXNzU2VydmljZSBicyA9IHNlcnZpY2VFbGVtZW50LmdldEJ1c2luZXNzU2VydmljZSgpOwotICAgICAgd3NkbFVybCA9IHVkZGk0akhlbHBlci5nZXRXU0RMKGJzLCBzZXJ2aWNlRWxlbWVudC5nZXRSZWdpc3RyeUVsZW1lbnQoKS5nZXRQcm94eSgpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50KQotICAgIHsKLSAgICAgIFRNb2RlbCB0TW9kZWwgPSAoKFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50KWVsZW1lbnQpLmdldFRNb2RlbCgpOwotICAgICAgd3NkbFVybCA9IHVkZGk0akhlbHBlci5nZXRXU0RMKHRNb2RlbCk7Ci0gICAgfQotCi0gICAgdHJ5Ci0gICAgewotICAgICAgaWYgKHdzZGxVcmwgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgRGVmaW5pdGlvbiBkZWYgPSB1ZGRpNGpIZWxwZXIuZ2V0V1NETERlZmluaXRpb24od3NkbFVybCk7Ci0gICAgICAgIEZpbGUgdGVtcEZpbGUgPSBGaWxlLmNyZWF0ZVRlbXBGaWxlKCJ0ZW1wIiwiLndzZGwiKTsKLSAgICAgICAgVURESUltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb24gYWN0aW9uID0gbmV3IFVERElJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAgICAgYWN0aW9uLndyaXRlV1NETERlZmluaXRpb24obmV3IEZpbGVPdXRwdXRTdHJlYW0odGVtcEZpbGUpLGRlZik7Ci0gICAgICAgIHdzZGxVcmwgPSB0ZW1wRmlsZS50b1VSTCgpLnRvU3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiBsYXVuY2hXaXphcmQod3NkbFVybCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShjb250cm9sbGVyXy5nZXRNZXNzYWdlKCJNU0dfRVJST1JfUkVUUklFVklOR19XU0RMX0RPQyIpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTdGF0dXNDb250ZW50VmFyKCkKLSAgewotICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKS5nZXRTdGF0dXNDb250ZW50VmFyKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKS5nZXRTdGF0dXNDb250ZW50UGFnZSgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VRERJTm9kZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVURESU5vZGVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1ODkyYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VRERJTm9kZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLk5vZGVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuUmVnaXN0cnlOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElNYWluTm9kZTsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFVERElOb2RlQWN0aW9uIGV4dGVuZHMgTm9kZUFjdGlvbgotewotICBwcm90ZWN0ZWQgUmVnaXN0cnlOb2RlIHJlZ05vZGVfOwotICBwdWJsaWMgVURESU5vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcixjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldE5hdmlnYXRvck1hbmFnZXIoKSk7Ci0gICAgcmVnTm9kZV8gPSBnZXRSZWdpc3RyeU5vZGUoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBOb2RlIGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpCi0gIHsKLSAgICBOb2RlIHNlbGVjdGVkTmF2aWdhdG9yTm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICByZXR1cm4gc2VsZWN0ZWROYXZpZ2F0b3JOb2RlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFJlZ2lzdHJ5Tm9kZSBnZXRSZWdpc3RyeU5vZGUoKQotICB7Ci0gICAgVURESU1haW5Ob2RlIHVkZGlNYWluTm9kZSA9IChVRERJTWFpbk5vZGUpbm9kZU1hbmFnZXJfLmdldFJvb3ROb2RlKCk7Ci0gICAgcmV0dXJuIHVkZGlNYWluTm9kZS5nZXRSZWdpc3RyeU5vZGUoZ2V0U2VsZWN0ZWROYXZpZ2F0b3JOb2RlKCkpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VRERJUHJvcGVydGllc0Zvcm1BY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VERElQcm9wZXJ0aWVzRm9ybUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTgwMWRmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VERElQcm9wZXJ0aWVzRm9ybUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkZvcm1BY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5SZWdpc3RyeU5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESU1haW5Ob2RlOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgVURESVByb3BlcnRpZXNGb3JtQWN0aW9uIGV4dGVuZHMgRm9ybUFjdGlvbgotewotICBwcm90ZWN0ZWQgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlcl87Ci0gIHB1YmxpYyBVRERJUHJvcGVydGllc0Zvcm1BY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgbmF2aWdhdG9yTWFuYWdlcl8gPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBOb2RlIGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpCi0gIHsKLSAgICByZXR1cm4gbmF2aWdhdG9yTWFuYWdlcl8uZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgRm9ybVRvb2wgZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpCi0gIHsKLSAgICByZXR1cm4gKEZvcm1Ub29sKShnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgUmVnaXN0cnlOb2RlIGdldFJlZ2lzdHJ5Tm9kZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0UmVnaXN0cnlOb2RlKGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBSZWdpc3RyeU5vZGUgZ2V0UmVnaXN0cnlOb2RlKE5vZGUgcmVnaXN0cnlDaGlsZE5vZGUpCi0gIHsKLSAgICBVRERJTWFpbk5vZGUgdWRkaU1haW5Ob2RlID0gKFVERElNYWluTm9kZSluYXZpZ2F0b3JNYW5hZ2VyXy5nZXRSb290Tm9kZSgpOwotICAgIHJldHVybiB1ZGRpTWFpbk5vZGUuZ2V0UmVnaXN0cnlOb2RlKHJlZ2lzdHJ5Q2hpbGROb2RlKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVW5wdWJsaXNoQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VbnB1Ymxpc2hBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRjMzdkMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VbnB1Ymxpc2hBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MTkgMTgyODY0ICAgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9uczsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuQnVzaW5lc3NFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlSW50ZXJmYWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5SZWdpc3RyeU5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcudWRkaTRqLlVERElFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai5jbGllbnQuVURESVByb3h5OwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuRGlzcG9zaXRpb25SZXBvcnQ7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgVW5wdWJsaXNoQWN0aW9uIGV4dGVuZHMgVURESVByb3BlcnRpZXNGb3JtQWN0aW9uCi17Ci0gIHByb3RlY3RlZCBSZWdpc3RyeU5vZGUgcmVnaXN0cnlOb2RlXzsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNMb2dnZWRJbl87Ci0KLSAgcHVibGljIFVucHVibGlzaEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICByZWdpc3RyeU5vZGVfID0gZ2V0UmVnaXN0cnlOb2RlKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ2lzdHJ5Tm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBGb3JtVG9vbCBmb3JtVG9vbCA9IGdldFNlbGVjdGVkRm9ybVRvb2woKTsKLQotICAgIC8vIGlmIG5vdCB5ZXQgbG9nZ2VkIGluLCB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVycyBuZWVkZWQgdG8gbG9nIGluCi0gICAgaWYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICBTdHJpbmcgdXNlcklkID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgICBTdHJpbmcgcGFzc3dvcmQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotCi0gICAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgICAgIGlmIChwdWJsaXNoVVJMICE9IG51bGwpCi0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMLCBwdWJsaXNoVVJMKTsKLSAgICAgICAgCi0gICAgICBpZiAoIVZhbGlkYXRvci52YWxpZGF0ZVVSTChwdWJsaXNoVVJMKSkKLSAgICAgIHsKLSAgICAgICAgZm9ybVRvb2wuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfUFVCTElTSF9VUkwiKSk7Ci0gICAgICB9Ci0KLSAgICAgIGlmICh1c2VySWQgIT0gbnVsbCkKLSAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklELHVzZXJJZCk7Ci0gICAgICAgIAotICAgICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcodXNlcklkKSkKLSAgICAgIHsKLSAgICAgICAgZm9ybVRvb2wuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1VTRVJJRCIpKTsKLSAgICAgIH0KLQotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQsIHBhc3N3b3JkKTsKLSAgICAgIAotICAgICAgZm9ybVRvb2wudXBkYXRlUHJvcGVydHlUYWJsZShwcm9wZXJ0eVRhYmxlXyk7Ci0KLSAgICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLQotCVJlZ2lzdHJ5RWxlbWVudCByZWdpc3RyeUVsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ2lzdHJ5Tm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAoIXJlZ2lzdHJ5RWxlbWVudC5pc0xvZ2dlZEluKCkpCi0gICAgICB7Ci0gICAgICAgIC8vIGlmIG5vdCB5ZXQgbG9nZ2VkIGluLCBsb2cgaW4gZmlyc3QKLSAgICAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgICAgU3RyaW5nIHVzZXJJZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0gICAgICAgIAotICAgICAgICByZWdpc3RyeUVsZW1lbnQucGVyZm9ybUxvZ2luKHB1Ymxpc2hVUkwsdXNlcklkLHBhc3N3b3JkKTsKLSAgICAgIH0KLQotICAgICAgU3RyaW5nIHNlbGVjdGVkRWxlbWVudEtleSA9IHNlbGVjdGVkRWxlbWVudC5nZXRLZXkoKTsKLSAgICAgIFN0cmluZyB1bnB1Ymxpc2hUeXBlTWVzc2FnZUtleSA9IG51bGw7Ci0gICAgICBVRERJUHJveHkgcHJveHkgPSByZWdpc3RyeUVsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICAgIFN0cmluZyBhdXRoSW5mbyA9IHJlZ2lzdHJ5RWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpOwotICAgICAgRGlzcG9zaXRpb25SZXBvcnQgZHIgPSBudWxsOwotICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEJ1c2luZXNzRWxlbWVudCkKLSAgICAgIHsKLSAgICAgICAgdW5wdWJsaXNoVHlwZU1lc3NhZ2VLZXkgPSAiTVNHX0lORk9fQlVTSU5FU1NfVU5QVUJMSVNIRUQiOwotICAgICAgICBkciA9IHByb3h5LmRlbGV0ZV9idXNpbmVzcyhhdXRoSW5mbyxzZWxlY3RlZEVsZW1lbnRLZXkpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgU2VydmljZUVsZW1lbnQpCi0gICAgICB7Ci0gICAgICAgIHVucHVibGlzaFR5cGVNZXNzYWdlS2V5ID0gIk1TR19JTkZPX1NFUlZJQ0VfVU5QVUJMSVNIRUQiOwotICAgICAgICBkciA9IHByb3h5LmRlbGV0ZV9zZXJ2aWNlKGF1dGhJbmZvLHNlbGVjdGVkRWxlbWVudEtleSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCkKLSAgICAgIHsKLSAgICAgICAgdW5wdWJsaXNoVHlwZU1lc3NhZ2VLZXkgPSAiTVNHX0lORk9fU0VSVklDRV9JTlRFUkZBQ0VfVU5QVUJMSVNIRUQiOwotICAgICAgICBkciA9IHByb3h5LmRlbGV0ZV90TW9kZWwoYXV0aEluZm8sc2VsZWN0ZWRFbGVtZW50S2V5KTsKLSAgICAgIH0KLSAgICAgIGlmICghZHIuc3VjY2VzcygpKQotICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKGRyLnRvU3RyaW5nKCkpOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBzZWxlY3RlZEVsZW1lbnQuZGlzY29ubmVjdEFsbCgpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSh1bnB1Ymxpc2hUeXBlTWVzc2FnZUtleSxzZWxlY3RlZEVsZW1lbnQuZ2V0TmFtZSgpKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJUcmFuc3BvcnRFeGNlcHRpb24iLGUpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAJaWYoVURESUV4Y2VwdGlvbkhhbmRsZXIucmVxdWlyZXNSZXNldChlKSkKLSAgICAJCXJlZ2lzdHJ5RWxlbWVudC5zZXREZWZhdWx0cygpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0Q29udHJvbGxlcigpLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLnRvU3RyaW5nKCkpOwotICAgIAlyZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBoYW5kbGVVbmV4cGVjdGVkRXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZSxtZXNzYWdlUXVldWUsIk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIsZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBoYW5kbGVVbmV4cGVjdGVkRXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZSwgbWVzc2FnZVF1ZXVlLCAiRXhjZXB0aW9uIiwgZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VcGRhdGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VwZGF0ZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmU0NjZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VwZGF0ZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLk1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkJ1c2luZXNzRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuU2VydmljZUludGVyZmFjZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuUHVibGlzaGVkSXRlbXNOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlJlZ2lzdHJ5Tm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLkJ1c2luZXNzU2VydmljZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBVcGRhdGVBY3Rpb24gZXh0ZW5kcyBVRERJUHJvcGVydGllc0Zvcm1BY3Rpb24KLXsKLSAgcHJvdGVjdGVkIFJlZ2lzdHJ5Tm9kZSByZWdOb2RlXzsKLSAgcHJpdmF0ZSBib29sZWFuIHJlcXVpcmVzQXV0aGVudGljYXRpb25fOwotICBwdWJsaWMgVXBkYXRlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcixib29sZWFuIHJlcXVpcmVzQXV0aGVudGljYXRpb24pCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICByZWdOb2RlXyA9IGdldFJlZ2lzdHJ5Tm9kZSgpOwotICAgIHJlcXVpcmVzQXV0aGVudGljYXRpb25fID0gcmVxdWlyZXNBdXRoZW50aWNhdGlvbjsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGFic3RyYWN0IGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLSAgCi0gIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBTZXR1cCBmb3IgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXJUcmFuc2Zvcm1lcgotICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuTVVMVElQQVJUX0ZPUk1fREFUQV9QQVJTRVIsIHBhcnNlcik7Ci0KLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBGb3JtVG9vbCBmb3JtVG9vbCA9IGdldFNlbGVjdGVkRm9ybVRvb2woKTsKLSAgICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSA9IGZvcm1Ub29sOwotICAgIGZvcm1Ub29sUEkuY2xlYXJFcnJvcnMoKTsKLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gcHJvY2Vzc090aGVycyhwYXJzZXIsZm9ybVRvb2xQSSk7Ci0gICAgZm9yIChpbnQgaT0wO2k8cmVtb3ZlZFByb3BlcnRpZXNfLnNpemUoKTtpKyspCi0gICAgICBmb3JtVG9vbFBJLnJlbW92ZVByb3BlcnR5KHJlbW92ZWRQcm9wZXJ0aWVzXy5lbGVtZW50QXQoaSkpOwotICAgIGZvcm1Ub29sUEkudXBkYXRlUHJvcGVydHlUYWJsZShwcm9wZXJ0eVRhYmxlXyk7Ci0gICAgCi0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgIFN0cmluZyB1c2VySWQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgIAotICAgIGJvb2xlYW4gdmFsaWRhdGVBdXRoZW50aWNhdGlvbiA9ICFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSAmIHJlcXVpcmVzQXV0aGVudGljYXRpb25fOwotICAgIAotICAgIGlmIChwdWJsaXNoVVJMICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwscHVibGlzaFVSTCk7Ci0gICAgICBmb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMLHB1Ymxpc2hVUkwpOwotICAgIH0KLSAgICAKLSAgICBpZiAodmFsaWRhdGVBdXRoZW50aWNhdGlvbiAmJiAhVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHB1Ymxpc2hVUkwpKQotICAgIHsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbC5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfUFVCTElTSF9VUkwiKSk7Ci0gICAgfQotICAgIAotICAgIGlmICh1c2VySWQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQsdXNlcklkKTsKLSAgICAgIGZvcm1Ub29sLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklELHVzZXJJZCk7Ci0gICAgfQotICAgIAotICAgIGlmICh2YWxpZGF0ZUF1dGhlbnRpY2F0aW9uICYmICFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcodXNlcklkKSkKLSAgICB7Ci0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgZm9ybVRvb2wuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9VU0VSSUQiKSk7Ci0gICAgfQotICAgIAotICAgIGlmIChwYXNzd29yZCAhPSBudWxsKQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JELHBhc3N3b3JkKTsKLSAgICAgIGZvcm1Ub29sLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQscGFzc3dvcmQpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gaW5wdXRzVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiByZWZyZXNoRnJvbVJlZ2lzdHJ5KCk7Ci0gIAotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCByZWZyZXNoTm9kZShCdXNpbmVzc0VudGl0eSBiZSkKLSAgewotICAgIE5vZGUgbm9kZSA9IGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpOwotICAgIE5vZGUgcGFyZW50Tm9kZSA9IG5vZGUuZ2V0UGFyZW50KCk7Ci0gICAgVHJlZUVsZW1lbnQgZWxlbWVudCA9IG5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBlbGVtZW50LmRpc2Nvbm5lY3RBbGwoKTsKLSAgICBCdXNpbmVzc0VsZW1lbnQgbmV3QnVzaW5lc3NFbGVtZW50ID0gbmV3IEJ1c2luZXNzRWxlbWVudChiZSxyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpLmdldE1vZGVsKCkpOwotICAgIGNvbm5lY3RFbGVtZW50cyhwYXJlbnROb2RlLG5ld0J1c2luZXNzRWxlbWVudCk7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIHJlZnJlc2hOb2RlKEJ1c2luZXNzU2VydmljZSBicykKLSAgewotICAgIE5vZGUgbm9kZSA9IGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpOwotICAgIE5vZGUgcGFyZW50Tm9kZSA9IG5vZGUuZ2V0UGFyZW50KCk7Ci0gICAgVHJlZUVsZW1lbnQgZWxlbWVudCA9IG5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBlbGVtZW50LmRpc2Nvbm5lY3RBbGwoKTsKLSAgICBTZXJ2aWNlRWxlbWVudCBuZXdTZXJ2aWNlRWxlbWVudCA9IG5ldyBTZXJ2aWNlRWxlbWVudChicyxyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpLmdldE1vZGVsKCkpOwotICAgIGNvbm5lY3RFbGVtZW50cyhwYXJlbnROb2RlLG5ld1NlcnZpY2VFbGVtZW50KTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgcmVmcmVzaE5vZGUoVE1vZGVsIHRNb2RlbCkKLSAgewotICAgIE5vZGUgbm9kZSA9IGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpOwotICAgIE5vZGUgcGFyZW50Tm9kZSA9IG5vZGUuZ2V0UGFyZW50KCk7Ci0gICAgVHJlZUVsZW1lbnQgZWxlbWVudCA9IG5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBlbGVtZW50LmRpc2Nvbm5lY3RBbGwoKTsKLSAgICBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBuZXdTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCA9IG5ldyBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCh0TW9kZWwscmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKS5nZXRNb2RlbCgpKTsKLSAgICBjb25uZWN0RWxlbWVudHMocGFyZW50Tm9kZSxuZXdTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgZmluYWwgdm9pZCBjb25uZWN0RWxlbWVudHMoTm9kZSBwYXJlbnROb2RlLFRyZWVFbGVtZW50IG5ld0VsZW1lbnQpCi0gIHsKLSAgICBUcmVlRWxlbWVudCBwYXJlbnRFbGVtZW50ID0gcGFyZW50Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIFN0cmluZyByZWwgPSBudWxsOwotICAgIGlmIChwYXJlbnROb2RlIGluc3RhbmNlb2YgUHVibGlzaGVkSXRlbXNOb2RlKQotICAgICAgcmVsID0gVURESU1vZGVsQ29uc3RhbnRzLlJFTF9QVUJMSVNIRURfSVRFTVM7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIFF1ZXJ5Tm9kZQotICAgICAgcmVsID0gVURESU1vZGVsQ29uc3RhbnRzLlJFTF9RVUVSWV9SRVNVTFRTOwotICAgIH0KLSAgICBwYXJlbnRFbGVtZW50LmNvbm5lY3QobmV3RWxlbWVudCxyZWwsTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICBOb2RlIG5ld05vZGUgPSBwYXJlbnROb2RlLmdldENoaWxkTm9kZShuZXdFbGVtZW50KTsKLSAgICBpbnQgbmV3Tm9kZUlkID0gbmV3Tm9kZS5nZXROb2RlSWQoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHBhcmVudE5vZGUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBub2RlTWFuYWdlci5zZXRTZWxlY3RlZE5vZGVJZChuZXdOb2RlSWQpOwotICAgIFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyID0gbmV3Tm9kZS5nZXRUb29sTWFuYWdlcigpOwotICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gdG9vbE1hbmFnZXIuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgYWRkVG9IaXN0b3J5KEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9VRERJLHNlbGVjdGVkVG9vbC5nZXRTZWxlY3RUb29sQWN0aW9uSHJlZih0cnVlKSk7Ci0gIH0KLSAgICAKLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgcmVpbmRleExpc3RFbGVtZW50VmVjdG9yKFZlY3RvciB2KQotICB7Ci0gICAgZm9yIChpbnQgaT0wO2k8di5zaXplKCk7aSsrKQotICAgIHsKLSAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KXYuZWxlbWVudEF0KGkpOwotICAgICAgbGlzdEVsZW1lbnQuc2V0Vmlld0lkKGkpOwotICAgICAgLy8gdGFyZ2V0Vmlld0lkIGRldGVybWluZXMgd2hldGhlciBvciBub3QgYSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIGxpc3QgZWxlbWVudCByZW1haW5zIGluIGVkaXQgc3RhdGUuCi0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgSVRyYW5zZm9ybWVyW10gZ2V0VHJhbnNmb3JtZXJzKCkKLSAgewotICAgIElUcmFuc2Zvcm1lcltdIHBhcmVudFRyYW5zZm9ybWVycyA9IHN1cGVyLmdldFRyYW5zZm9ybWVycygpOwotICAgIElUcmFuc2Zvcm1lcltdIHRyYW5zZm9ybWVycyA9IG5ldyBJVHJhbnNmb3JtZXJbcGFyZW50VHJhbnNmb3JtZXJzLmxlbmd0aCArIDFdOwotICAgIFN5c3RlbS5hcnJheWNvcHkocGFyZW50VHJhbnNmb3JtZXJzLCAwLCB0cmFuc2Zvcm1lcnMsIDAsIHBhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgpOwotICAgIHRyYW5zZm9ybWVyc1t0cmFuc2Zvcm1lcnMubGVuZ3RoIC0gMV0gPSBuZXcgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXJUcmFuc2Zvcm1lcihjb250cm9sbGVyXyk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybWVyczsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVXBkYXRlQnVzaW5lc3NBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VwZGF0ZUJ1c2luZXNzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNTFkMDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVXBkYXRlQnVzaW5lc3NBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQxNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDE5IDE4Mjg2NCAgIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5VRERJUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5EZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLk5hbWU7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkNhdGVnb3J5QmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5EaXNjb3ZlcnlVUkw7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkRpc2NvdmVyeVVSTHM7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLklkZW50aWZpZXJCYWc7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLktleWVkUmVmZXJlbmNlOwotCi1wdWJsaWMgY2xhc3MgVXBkYXRlQnVzaW5lc3NBY3Rpb24gZXh0ZW5kcyBVcGRhdGVBY3Rpb24KLXsKLSAgcHJpdmF0ZSBib29sZWFuIGlzVXBkYXRlXzsKLSAgcHVibGljIFVwZGF0ZUJ1c2luZXNzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsdHJ1ZSk7Ci0gICAgaXNVcGRhdGVfID0gdHJ1ZTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHV1aWRLZXkgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVkpOwotICAgIFN0cmluZ1tdIGRpc2NvdmVyeVVSTE1vZGlmaWVkU3RhdGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLkRJU0NPVkVSWVVSTF9NT0RJRklFRCk7Ci0gICAgU3RyaW5nW10gZGlzY292ZXJ5VVJMVmlld0lkcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5ESVNDT1ZFUllVUkxfVklFV0lEKTsKLSAgICBTdHJpbmdbXSBkaXNjb3ZlcnlVUkxzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RJU0NPVkVSWVVSTCk7Ci0gICAgU3RyaW5nW10gbmFtZU1vZGlmaWVkU3RhdGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLk5BTUVfTU9ESUZJRUQpOwotICAgIFN0cmluZ1tdIG5hbWVWaWV3SWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLk5BTUVfVklFV0lEKTsKLSAgICBTdHJpbmdbXSBuYW1lTGFuZ3VhZ2VzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX05BTUVfTEFOR1VBR0UpOwotICAgIFN0cmluZ1tdIG5hbWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX05BTUUpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9uTW9kaWZpZWRTdGF0ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuREVTQ1JJUFRJT05fTU9ESUZJRUQpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9uVmlld0lkcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5ERVNDUklQVElPTl9WSUVXSUQpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9uTGFuZ3VhZ2VzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RFU0NSSVBUSU9OX0xBTkdVQUdFKTsKLSAgICBTdHJpbmdbXSBkZXNjcmlwdGlvbnMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT04pOwotICAgIFN0cmluZ1tdIGlkTW9kaWZpZWRTdGF0ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuSURFTlRJRklFUl9NT0RJRklFRCk7Ci0gICAgU3RyaW5nW10gaWRWaWV3SWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLklERU5USUZJRVJfVklFV0lEKTsKLSAgICBTdHJpbmdbXSBpZFR5cGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0lERU5USUZJRVJfVFlQRSk7Ci0gICAgU3RyaW5nW10gaWRLZXlOYW1lcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX0tFWV9OQU1FKTsKLSAgICBTdHJpbmdbXSBpZEtleVZhbHVlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX0tFWV9WQUxVRSk7Ci0gICAgU3RyaW5nW10gY2F0TW9kaWZpZWRTdGF0ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuQ0FURUdPUllfTU9ESUZJRUQpOwotICAgIFN0cmluZ1tdIGNhdFZpZXdJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuQ0FURUdPUllfVklFV0lEKTsKLSAgICBTdHJpbmdbXSBjYXRUeXBlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9UWVBFKTsKLSAgICBTdHJpbmdbXSBjYXRLZXlOYW1lcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9LRVlfTkFNRSk7Ci0gICAgU3RyaW5nW10gY2F0S2V5VmFsdWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9WQUxVRSk7Ci0gICAgCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgCi0gICAgaWYgKHV1aWRLZXkgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfQlVTSU5FU1NfS0VZLHV1aWRLZXkpOwotICAgIAotICAgIAotICAgIGlmIChkaXNjb3ZlcnlVUkxNb2RpZmllZFN0YXRlcyAhPSBudWxsICYmIGRpc2NvdmVyeVVSTFZpZXdJZHMgIT0gbnVsbCAmJiBkaXNjb3ZlcnlVUkxzICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIG9sZERpc2NvdmVyeVVSTExpc3RFbGVtZW50VmVjdG9yID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRElTQ09WRVJZVVJMUyk7Ci0gICAgICBWZWN0b3IgbmV3RGlzY292ZXJ5VVJMTGlzdEVsZW1lbnRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBTdHJpbmdbXSBwYXJhbWV0ZXJzID0gbmV3IFN0cmluZ1syXTsKLSAgICAgIHBhcmFtZXRlcnNbMF0gPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ESVNDT1ZFUllVUkwiKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGRpc2NvdmVyeVVSTHMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgcGFyYW1ldGVyc1sxXSA9IFN0cmluZy52YWx1ZU9mKGkrMSk7Ci0gICAgICAgIERpc2NvdmVyeVVSTCBkaXNjb3ZlcnlVUkwgPSBuZXcgRGlzY292ZXJ5VVJMKGRpc2NvdmVyeVVSTHNbaV0sIiIpOwotICAgICAgICBpZiAoIVZhbGlkYXRvci52YWxpZGF0ZVVSTChkaXNjb3ZlcnlVUkxzW2ldKSkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ESVNDT1ZFUllVUkxTLGkpOwotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfUk9XX0lOVkFMSURfVEVYVCIscGFyYW1ldGVycykpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpbnQgZGlzY292ZXJ5VVJMVmlld0lkID0gSW50ZWdlci5wYXJzZUludChkaXNjb3ZlcnlVUkxWaWV3SWRzW2ldKTsKLSAgICAgICAgYm9vbGVhbiBpc01vZGlmaWVkID0gQm9vbGVhbi52YWx1ZU9mKGRpc2NvdmVyeVVSTE1vZGlmaWVkU3RhdGVzW2ldKS5ib29sZWFuVmFsdWUoKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChkaXNjb3ZlcnlVUkxWaWV3SWQgPT0gLTEgfHwgaXNNb2RpZmllZCkKLSAgICAgICAgICBuZXdEaXNjb3ZlcnlVUkxMaXN0RWxlbWVudFZlY3Rvci5hZGRFbGVtZW50KG5ldyBMaXN0RWxlbWVudChkaXNjb3ZlcnlVUkwpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIG5ld0Rpc2NvdmVyeVVSTExpc3RFbGVtZW50VmVjdG9yLmFkZEVsZW1lbnQob2xkRGlzY292ZXJ5VVJMTGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGRpc2NvdmVyeVVSTFZpZXdJZCkpOyAgICAgCi0gICAgICB9Ci0gICAgICByZWluZGV4TGlzdEVsZW1lbnRWZWN0b3IobmV3RGlzY292ZXJ5VVJMTGlzdEVsZW1lbnRWZWN0b3IpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRElTQ09WRVJZVVJMUyxuZXdEaXNjb3ZlcnlVUkxMaXN0RWxlbWVudFZlY3Rvcik7ICAgICAgIAotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RJU0NPVkVSWVVSTFMpOwotICAgIAotICAgIEhhc2h0YWJsZSBsYW5ndWFnZUhhc2ggPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgaWYgKG5hbWVNb2RpZmllZFN0YXRlcyAhPSBudWxsICYmIG5hbWVWaWV3SWRzICE9IG51bGwgJiYgbmFtZUxhbmd1YWdlcyAhPSBudWxsICYmIG5hbWVzICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIG9sZE5hbWVMaXN0RWxlbWVudFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX05BTUVTKTsKLSAgICAgIFZlY3RvciBuZXdOYW1lTGlzdEVsZW1lbnRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAvLyBVRERJJ3Mgc2F2ZSBBUEkgKEFwcGVuZGl4IEMgb2YgdGhlIFVEREkgVjIgUHJvZ3JhbW1lcnMgQVBJIFNwZWNpZmljYXRpb24pIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAvLyAxKSBPbmx5IHRoZSBmaXJzdCByb3cgY2FuIGhhdmUgYSBibGFuayBsYW5ndWFnZS4KLSAgICAgIC8vIDIpIE9ubHkgMSBuYW1lIHBlciBsYW5ndWFnZS4KLSAgICAgIFN0cmluZ1tdIHBhcmFtZXRlcnMgPSBuZXcgU3RyaW5nWzJdOwotICAgICAgcGFyYW1ldGVyc1swXSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPG5hbWVzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIHBhcmFtZXRlcnNbMV0gPSBTdHJpbmcudmFsdWVPZihpKzEpOwotICAgICAgICBOYW1lIHVkZGk0ak5hbWU7Ci0gICAgICAgIGlmIChuYW1lTGFuZ3VhZ2VzW2ldLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICB1ZGRpNGpOYW1lID0gbmV3IE5hbWUobmFtZXNbaV0sbmFtZUxhbmd1YWdlc1tpXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHVkZGk0ak5hbWUgPSBuZXcgTmFtZShuYW1lc1tpXSk7Ci0gICAgICAgICAgaWYgKGkgIT0gMCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyxpKTsKLSAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfUk9XX0JMQU5LX0xBTkdVQUdFIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChsYW5ndWFnZUhhc2guZ2V0KG5hbWVMYW5ndWFnZXNbaV0pICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTkFNRVMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfRFVQTElDQVRFX0xBTkdVQUdFIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGxhbmd1YWdlSGFzaC5wdXQobmFtZUxhbmd1YWdlc1tpXSxCb29sZWFuLlRSVUUpOwotICAgICAgICBpZiAoIVZhbGlkYXRvci52YWxpZGF0ZVN0cmluZyhuYW1lc1tpXSkpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTkFNRVMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfSU5WQUxJRF9URVhUIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGludCBuYW1lVmlld0lkID0gSW50ZWdlci5wYXJzZUludChuYW1lVmlld0lkc1tpXSk7Ci0gICAgICAgIGJvb2xlYW4gaXNNb2RpZmllZCA9IEJvb2xlYW4udmFsdWVPZihuYW1lTW9kaWZpZWRTdGF0ZXNbaV0pLmJvb2xlYW5WYWx1ZSgpOwotICAgICAgCi0gICAgICAgIGlmIChuYW1lVmlld0lkID09IC0xIHx8IGlzTW9kaWZpZWQpCi0gICAgICAgICAgbmV3TmFtZUxpc3RFbGVtZW50VmVjdG9yLmFkZEVsZW1lbnQobmV3IExpc3RFbGVtZW50KHVkZGk0ak5hbWUpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIG5ld05hbWVMaXN0RWxlbWVudFZlY3Rvci5hZGRFbGVtZW50KG9sZE5hbWVMaXN0RWxlbWVudFZlY3Rvci5lbGVtZW50QXQobmFtZVZpZXdJZCkpOwotICAgICAgfQotICAgICAgcmVpbmRleExpc3RFbGVtZW50VmVjdG9yKG5ld05hbWVMaXN0RWxlbWVudFZlY3Rvcik7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyxuZXdOYW1lTGlzdEVsZW1lbnRWZWN0b3IpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyk7Ci0gICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgZm9ybVRvb2xQSS5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyk7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX05BTUVTIikpOwotICAgIH0KLSAgICAKLSAgICBpZiAoZGVzY3JpcHRpb25Nb2RpZmllZFN0YXRlcyAhPSBudWxsICYmIGRlc2NyaXB0aW9uVmlld0lkcyAhPSBudWxsICYmIGRlc2NyaXB0aW9uTGFuZ3VhZ2VzICE9IG51bGwgJiYgZGVzY3JpcHRpb25zICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIG9sZERlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMpOwotICAgICAgVmVjdG9yIG5ld0Rlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBTdHJpbmdbXSBwYXJhbWV0ZXJzID0gbmV3IFN0cmluZ1syXTsKLSAgICAgIHBhcmFtZXRlcnNbMF0gPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ERVNDUklQVElPTiIpOwotICAgICAgbGFuZ3VhZ2VIYXNoLmNsZWFyKCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTxkZXNjcmlwdGlvbnMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgcGFyYW1ldGVyc1sxXSA9IFN0cmluZy52YWx1ZU9mKGkrMSk7Ci0gICAgICAgIERlc2NyaXB0aW9uIHVkZGk0akRlc2NyaXB0aW9uOwotICAgICAgICBpZiAoZGVzY3JpcHRpb25MYW5ndWFnZXNbaV0ubGVuZ3RoKCkgPiAwKQotICAgICAgICAgIHVkZGk0akRlc2NyaXB0aW9uID0gbmV3IERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uc1tpXSxkZXNjcmlwdGlvbkxhbmd1YWdlc1tpXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHVkZGk0akRlc2NyaXB0aW9uID0gbmV3IERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uc1tpXSk7Ci0gICAgICAgICAgaWYgKGkgIT0gMCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1JPV19CTEFOS19MQU5HVUFHRSIscGFyYW1ldGVycykpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobGFuZ3VhZ2VIYXNoLmdldChkZXNjcmlwdGlvbkxhbmd1YWdlc1tpXSkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfRFVQTElDQVRFX0xBTkdVQUdFIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGxhbmd1YWdlSGFzaC5wdXQoZGVzY3JpcHRpb25MYW5ndWFnZXNbaV0sQm9vbGVhbi5UUlVFKTsKLSAgICAgICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcoZGVzY3JpcHRpb25zW2ldKSkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfSU5WQUxJRF9URVhUIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGludCBkZXNjcmlwdGlvblZpZXdJZCA9IEludGVnZXIucGFyc2VJbnQoZGVzY3JpcHRpb25WaWV3SWRzW2ldKTsKLSAgICAgICAgYm9vbGVhbiBpc01vZGlmaWVkID0gQm9vbGVhbi52YWx1ZU9mKGRlc2NyaXB0aW9uTW9kaWZpZWRTdGF0ZXNbaV0pLmJvb2xlYW5WYWx1ZSgpOwotICAgICAgCi0gICAgICAgIGlmIChkZXNjcmlwdGlvblZpZXdJZCA9PSAtMSB8fCBpc01vZGlmaWVkKQotICAgICAgICAgIG5ld0Rlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChuZXcgTGlzdEVsZW1lbnQodWRkaTRqRGVzY3JpcHRpb24pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIG5ld0Rlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChvbGREZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yLmVsZW1lbnRBdChkZXNjcmlwdGlvblZpZXdJZCkpOwotICAgICAgfQotICAgICAgcmVpbmRleExpc3RFbGVtZW50VmVjdG9yKG5ld0Rlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfREVTQ1JJUFRJT05TLG5ld0Rlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IpOyAgICAgIAotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RFU0NSSVBUSU9OUyk7Ci0gICAgICAKLSAgICBpZiAoaWRNb2RpZmllZFN0YXRlcyAhPSBudWxsICYmIGlkVmlld0lkcyAhPSBudWxsICYmIGlkVHlwZXMgIT0gbnVsbCAmJiBpZEtleU5hbWVzICE9IG51bGwgJiYgaWRLZXlWYWx1ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3Igb2xkSWRMaXN0RWxlbWVudFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0lERU5USUZJRVJTKTsKLSAgICAgIFZlY3RvciBuZXdJZExpc3RFbGVtZW50VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaT0wO2k8aWRLZXlOYW1lcy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IG5ldyBLZXllZFJlZmVyZW5jZShpZEtleU5hbWVzW2ldLGlkS2V5VmFsdWVzW2ldLGlkVHlwZXNbaV0pOwotICAgICAgICBpbnQgaWRWaWV3SWQgPSBJbnRlZ2VyLnBhcnNlSW50KGlkVmlld0lkc1tpXSk7Ci0gICAgICAgIGJvb2xlYW4gaXNNb2RpZmllZCA9IEJvb2xlYW4udmFsdWVPZihpZE1vZGlmaWVkU3RhdGVzW2ldKS5ib29sZWFuVmFsdWUoKTsKLSAgICAgICAgaWYgKGlkVmlld0lkID09IC0xIHx8IGlzTW9kaWZpZWQpCi0gICAgICAgICAgbmV3SWRMaXN0RWxlbWVudFZlY3Rvci5hZGRFbGVtZW50KG5ldyBMaXN0RWxlbWVudChrcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgbmV3SWRMaXN0RWxlbWVudFZlY3Rvci5hZGRFbGVtZW50KG9sZElkTGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGlkVmlld0lkKSk7Ci0gICAgICB9Ci0gICAgICByZWluZGV4TGlzdEVsZW1lbnRWZWN0b3IobmV3SWRMaXN0RWxlbWVudFZlY3Rvcik7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19JREVOVElGSUVSUyxuZXdJZExpc3RFbGVtZW50VmVjdG9yKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19JREVOVElGSUVSUyk7Ci0gICAgICAKLSAgICBpZiAoY2F0TW9kaWZpZWRTdGF0ZXMgIT0gbnVsbCAmJiBjYXRWaWV3SWRzICE9IG51bGwgJiYgY2F0VHlwZXMgIT0gbnVsbCAmJiBjYXRLZXlOYW1lcyAhPSBudWxsICYmIGNhdEtleVZhbHVlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciBvbGRDYXRMaXN0RWxlbWVudFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0NBVEVHT1JJRVMpOwotICAgICAgVmVjdG9yIG5ld0NhdExpc3RFbGVtZW50VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaT0wO2k8Y2F0VHlwZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSBuZXcgS2V5ZWRSZWZlcmVuY2UoY2F0S2V5TmFtZXNbaV0sY2F0S2V5VmFsdWVzW2ldLGNhdFR5cGVzW2ldKTsKLSAgICAgICAgaW50IGNhdFZpZXdJZCA9IEludGVnZXIucGFyc2VJbnQoY2F0Vmlld0lkc1tpXSk7Ci0gICAgICAgIGJvb2xlYW4gaXNNb2RpZmllZCA9IEJvb2xlYW4udmFsdWVPZihjYXRNb2RpZmllZFN0YXRlc1tpXSkuYm9vbGVhblZhbHVlKCk7Ci0gICAgICAgIGlmIChjYXRWaWV3SWQgPT0gLTEgfHwgaXNNb2RpZmllZCkKLSAgICAgICAgICBuZXdDYXRMaXN0RWxlbWVudFZlY3Rvci5hZGRFbGVtZW50KG5ldyBMaXN0RWxlbWVudChrcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgbmV3Q2F0TGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChvbGRDYXRMaXN0RWxlbWVudFZlY3Rvci5lbGVtZW50QXQoY2F0Vmlld0lkKSk7Ci0gICAgICB9Ci0gICAgICByZWluZGV4TGlzdEVsZW1lbnRWZWN0b3IobmV3Q2F0TGlzdEVsZW1lbnRWZWN0b3IpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfQ0FURUdPUklFUyxuZXdDYXRMaXN0RWxlbWVudFZlY3Rvcik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfQ0FURUdPUklFUyk7ICAgICAgICAgICAgCi0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcmVmcmVzaEZyb21SZWdpc3RyeSgpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIFN0cmluZyB1dWlkS2V5ID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSk7Ci0gICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIFVERElQcm94eSBwcm94eSA9IHJlZ0VsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICAgIFZlY3RvciBiZVZlY3RvciA9IHByb3h5LmdldF9idXNpbmVzc0RldGFpbCh1dWlkS2V5KS5nZXRCdXNpbmVzc0VudGl0eVZlY3RvcigpOwotICAgICAgQnVzaW5lc3NFbnRpdHkgYmU7Ci0gICAgICBpZiAoYmVWZWN0b3Iuc2l6ZSgpID4gMCkKLSAgICAgICAgYmUgPSAoQnVzaW5lc3NFbnRpdHkpYmVWZWN0b3IuZ2V0KDApOwotICAgICAgZWxzZQotICAgICAgICBiZSA9IG51bGw7Ci0gICAgICBpZiAoYmUgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX09CSkVDVCxiZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gRmVlZGJhY2sgdmlhIEphdmFzY3JpcHQgcG9wdXBzLgotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIEZlZWRiYWNrIHZpYSBKYXZhc2NyaXB0IHBvcHVwcy4KLSAgICB9Ci0gICAgaXNVcGRhdGVfID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gICAgCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBCdXNpbmVzc0VudGl0eSBiZSA9IChCdXNpbmVzc0VudGl0eSlwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNUKTsKLSAgICAgIFN0cmluZyBwdWJsaXNoVVJMID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgICAgU3RyaW5nIHBhc3N3b3JkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0gICAgICBWZWN0b3IgZGlzY292ZXJ5VVJMTGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RJU0NPVkVSWVVSTFMpOwotICAgICAgVmVjdG9yIG5hbWVMaXN0RWxlbWVudFZlY3RvciA9IChWZWN0b3IpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTkFNRVMpOwotICAgICAgVmVjdG9yIGRlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RFU0NSSVBUSU9OUyk7Ci0gICAgICBWZWN0b3IgaWRMaXN0RWxlbWVudFZlY3RvciA9IChWZWN0b3IpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfSURFTlRJRklFUlMpOwotICAgICAgVmVjdG9yIGNhdExpc3RFbGVtZW50VmVjdG9yID0gKFZlY3Rvcilwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19DQVRFR09SSUVTKTsKLSAgICAgIAotICAgICAgVmVjdG9yIGRpc2NvdmVyeVVSTFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGlmIChkaXNjb3ZlcnlVUkxMaXN0RWxlbWVudFZlY3RvciAhPSBudWxsKQotICAgICAgewotICAgICAgICBmb3IgKGludCBpPTA7aTxkaXNjb3ZlcnlVUkxMaXN0RWxlbWVudFZlY3Rvci5zaXplKCk7aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpZGlzY292ZXJ5VVJMTGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICAgIERpc2NvdmVyeVVSTCBkaXNjb3ZlcnlVUkwgPSAoRGlzY292ZXJ5VVJMKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgICAgIGRpc2NvdmVyeVVSTFZlY3Rvci5hZGRFbGVtZW50KGRpc2NvdmVyeVVSTCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgICAgCi0gICAgICBWZWN0b3IgbmFtZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPG5hbWVMaXN0RWxlbWVudFZlY3Rvci5zaXplKCk7aSsrKQotICAgICAgewotICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudCluYW1lTGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICBOYW1lIG5hbWUgPSAoTmFtZSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgbmFtZVZlY3Rvci5hZGRFbGVtZW50KG5hbWUpOwotICAgICAgfQotICAgICAgCi0gICAgICBWZWN0b3IgZGVzY3JpcHRpb25WZWN0b3IgPSBudWxsOwotICAgICAgaWYgKGRlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZGVzY3JpcHRpb25WZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPGRlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgICAgewotICAgICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWRlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICAgIERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gKERlc2NyaXB0aW9uKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgICAgIGRlc2NyaXB0aW9uVmVjdG9yLmFkZEVsZW1lbnQoZGVzY3JpcHRpb24pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIElkZW50aWZpZXJCYWcgaWRCYWcgPSBudWxsOwotICAgICAgaWYgKGlkTGlzdEVsZW1lbnRWZWN0b3IgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaWRCYWcgPSBuZXcgSWRlbnRpZmllckJhZygpOwotICAgICAgICBmb3IgKGludCBpPTA7aTxpZExpc3RFbGVtZW50VmVjdG9yLnNpemUoKTtpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClpZExpc3RFbGVtZW50VmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgICBpZEJhZy5hZGQoa3IpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIENhdGVnb3J5QmFnIGNhdEJhZyA9IG51bGw7Ci0gICAgICBpZiAoY2F0TGlzdEVsZW1lbnRWZWN0b3IgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgY2F0QmFnID0gbmV3IENhdGVnb3J5QmFnKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPGNhdExpc3RFbGVtZW50VmVjdG9yLnNpemUoKTtpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudCljYXRMaXN0RWxlbWVudFZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSAoS2V5ZWRSZWZlcmVuY2UpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgICAgY2F0QmFnLmFkZChrcik7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKGRpc2NvdmVyeVVSTFZlY3Rvci5zaXplKCkgPiAwKQotICAgICAgICBiZS5zZXREaXNjb3ZlcnlVUkxzKG5ldyBEaXNjb3ZlcnlVUkxzKGRpc2NvdmVyeVVSTFZlY3RvcikpOwotICAgICAgZWxzZQotICAgICAgICBiZS5zZXREaXNjb3ZlcnlVUkxzKG51bGwpOwotICAgICAgYmUuc2V0TmFtZVZlY3RvcihuYW1lVmVjdG9yKTsKLSAgICAgIGJlLnNldERlc2NyaXB0aW9uVmVjdG9yKGRlc2NyaXB0aW9uVmVjdG9yKTsKLSAgICAgIGJlLnNldElkZW50aWZpZXJCYWcoaWRCYWcpOwotICAgICAgYmUuc2V0Q2F0ZWdvcnlCYWcoY2F0QmFnKTsKLSAgICAgIAotICAgICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICBpZiAoIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgICAgICByZWdFbGVtZW50LnBlcmZvcm1Mb2dpbihwdWJsaXNoVVJMLHVzZXJJZCxwYXNzd29yZCk7Ci0gICAgICBVRERJUHJveHkgcHJveHkgPSByZWdFbGVtZW50LmdldFByb3h5KCk7Ci0gICAgICBWZWN0b3IgYmVWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBiZVZlY3Rvci5hZGQoYmUpOwotICAgICAgYmUgPSAoQnVzaW5lc3NFbnRpdHkpcHJveHkuc2F2ZV9idXNpbmVzcyhyZWdFbGVtZW50LmdldEF1dGhJbmZvU3RyaW5nKCksIGJlVmVjdG9yKS5nZXRCdXNpbmVzc0VudGl0eVZlY3RvcigpLmdldCgwKTsKLSAgICAgIHJlZnJlc2hOb2RlKGJlKTsKLSAgICAgIGlmIChpc1VwZGF0ZV8pICAgICAgCi0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19CVVNJTkVTU19VUERBVEVEIixiZS5nZXREZWZhdWx0TmFtZVN0cmluZygpKSk7Ci0gICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19CVVNJTkVTU19QVUJMSVNIRUQiLGJlLmdldERlZmF1bHROYW1lU3RyaW5nKCkpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJUcmFuc3BvcnRFeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAJaWYoVURESUV4Y2VwdGlvbkhhbmRsZXIucmVxdWlyZXNSZXNldChlKSl7Ci0gICAgCQlSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAJCXJlZ0VsZW1lbnQuc2V0RGVmYXVsdHMoKTsKLSAgICAJfQkKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldENvbnRyb2xsZXIoKS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoIlVERElFeGNlcHRpb24iKTsKLSAgICAJbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAJaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJNYWxmb3JtZWRVUkxFeGNlcHRpb24iLGUpOwotICAgIH0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VcGRhdGVSZWdpc3RyeUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2FjdGlvbnMvVXBkYXRlUmVnaXN0cnlBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY2ZjE3My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VcGRhdGVSZWdpc3RyeUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKLWltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5DYXRlZ29yeU1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESVBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLQotcHVibGljIGNsYXNzIFVwZGF0ZVJlZ2lzdHJ5QWN0aW9uIGV4dGVuZHMgVXBkYXRlQWN0aW9uCi17Ci0gIHB1YmxpYyBVcGRhdGVSZWdpc3RyeUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyLGZhbHNlKTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIG5hbWVNb2RpZmllZFN0YXRlID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLk5BTUVfTU9ESUZJRUQpOwotICAgIFN0cmluZyBuYW1lID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1JFR0lTVFJZX05BTUUpOwotICAgIFN0cmluZ1tdIHVzZXJEZWZpbmVkQ2F0ZWdvcnlUTW9kZWxLZXlzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JZX1RNT0RFTF9LRVkpOwotICAgIFN0cmluZ1tdIHVzZXJEZWZpbmVkQ2F0ZWdvcnlEYXRhID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JZX0ZJTEVOQU1FKTsKLSAgICAKLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICAKLSAgICBpZiAobmFtZU1vZGlmaWVkU3RhdGUgIT0gbnVsbCAmJiBuYW1lICE9IG51bGwpCi0gICAgewotICAgICAgYm9vbGVhbiBpc01vZGlmaWVkID0gQm9vbGVhbi52YWx1ZU9mKG5hbWVNb2RpZmllZFN0YXRlKS5ib29sZWFuVmFsdWUoKTsKLSAgICAgIFN0cmluZyBuZXdOYW1lOwotICAgICAgaWYgKGlzTW9kaWZpZWQpCi0gICAgICAgIG5ld05hbWUgPSBuYW1lOwotICAgICAgZWxzZQotICAgICAgICBuZXdOYW1lID0gKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUkVHSVNUUllfTkFNRSk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9SRUdJU1RSWV9OQU1FLG5ld05hbWUpOwotICAgICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcobmFtZSkpCi0gICAgICB7Ci0gICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGZvcm1Ub29sUEkuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUkVHSVNUUllfTkFNRSk7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9OQU1FIikpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1JFR0lTVFJZX05BTUUpOwotICAgIAotICAgIGlmICh1c2VyRGVmaW5lZENhdGVnb3J5VE1vZGVsS2V5cyAhPSBudWxsICYmIHVzZXJEZWZpbmVkQ2F0ZWdvcnlEYXRhICE9IG51bGwpCi0gICAgewotICAgICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGVfLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICBmb3IgKGludCBpPTA7aTx1c2VyRGVmaW5lZENhdGVnb3J5VE1vZGVsS2V5cy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBDYXRlZ29yeU1vZGVsIHVzZXJEZWZpbmVkQ2F0ZWdvcnkgPSByZWdFbGVtZW50LmdldFVzZXJEZWZpbmVkQ2F0ZWdvcnkodXNlckRlZmluZWRDYXRlZ29yeVRNb2RlbEtleXNbaV0pOwotLy8gICAgICBUT0RPOiBNb3ZlIFVERElQcmVmZXJlbmNlQ29udGV4dCBkb3duIHRvIG9yZy5lY2xpcHNlLndzdC53cyAKLS8vICAgICAgVURESVByZWZlcmVuY2VDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0VURESVByZWZlcmVuY2VDb250ZXh0KCk7ICAgICAgICAKLS8vICAgICAgdXNlckRlZmluZWRDYXRlZ29yeS5zZXRDb2x1bW5EZWxpbWl0ZXIoY29udGV4dC5nZXRVZGRpQ2F0RGF0YUNvbHVtbkRlbGltaXRlcigpKTsKLS8vICAgICAgdXNlckRlZmluZWRDYXRlZ29yeS5zZXRTdHJpbmdEZWxpbWl0ZXIoY29udGV4dC5nZXRVZGRpQ2F0RGF0YVN0cmluZ0RlbGltaXRlcigpKTsKLSAgICAgICAgdXNlckRlZmluZWRDYXRlZ29yeS5zZXRDb2x1bW5EZWxpbWl0ZXIoIiMiKTsKLSAgICAgICAgdXNlckRlZmluZWRDYXRlZ29yeS5zZXRTdHJpbmdEZWxpbWl0ZXIoIlwiIik7Ci0gICAgICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9IHVzZXJEZWZpbmVkQ2F0ZWdvcnkuZ2V0RGlzcGxheU5hbWUoKTsKLSAgICAgICAgaWYgKHVzZXJEZWZpbmVkQ2F0ZWdvcnlEYXRhW2ldID09IG51bGwgfHwgdXNlckRlZmluZWRDYXRlZ29yeURhdGFbaV0ubGVuZ3RoKCkgPCAxKQotICAgICAgICB7Ci0gICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfVVNFUl9ERUZJTkVEX0NBVEVHT1JZX0RBVEFfRklMRSIsZGlzcGxheU5hbWUpKTsKLSAgICAgICAgICBmb3JtVG9vbFBJLmZsYWdSb3dFcnJvcihVRERJQWN0aW9uSW5wdXRzLlVTRVJfREVGSU5FRF9DQVRFR09SSUVTLHVzZXJEZWZpbmVkQ2F0ZWdvcnlUTW9kZWxLZXlzW2ldKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBieXRlIHJjID0gdXNlckRlZmluZWRDYXRlZ29yeS5sb2FkRGF0YShuZXcgQnVmZmVyZWRSZWFkZXIobmV3IFN0cmluZ1JlYWRlcih1c2VyRGVmaW5lZENhdGVnb3J5RGF0YVtpXSkpKTsKLSAgICAgICAgICBzd2l0Y2ggKHJjKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgQ2F0ZWdvcnlNb2RlbC5PUEVSQVRJT05fU1VDQ0VTU0ZVTDoKLSAgICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1VTRVJfREVGSU5FRF9DQVRFR09SWV9EQVRBX0xPQURFRCIsZGlzcGxheU5hbWUpKTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENhdGVnb3J5TW9kZWwuRVJST1JfRklMRToKLSAgICAgICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgUGFyc2VFeGNlcHRpb24gcGUgPSAoUGFyc2VFeGNlcHRpb24pdXNlckRlZmluZWRDYXRlZ29yeS5nZXRFcnJvckV4Y2VwdGlvbigpOwotICAgICAgICAgICAgICBTdHJpbmdbXSBhcmdzMSA9IHtTdHJpbmcudmFsdWVPZihwZS5nZXRFcnJvck9mZnNldCgpKSxkaXNwbGF5TmFtZSxwZS5nZXRNZXNzYWdlKCksdXNlckRlZmluZWRDYXRlZ29yeS5nZXRDYXRlZ29yeUtleSgpfTsKLSAgICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1VTRVJfREVGSU5FRF9DQVRFR09SWV9EQVRBX0ZJTEVfRk9STUFUIixhcmdzMSkpOwotICAgICAgICAgICAgICBmb3JtVG9vbFBJLmZsYWdSb3dFcnJvcihVRERJQWN0aW9uSW5wdXRzLlVTRVJfREVGSU5FRF9DQVRFR09SSUVTLHVzZXJEZWZpbmVkQ2F0ZWdvcnlUTW9kZWxLZXlzW2ldKTsKLSAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgQ2F0ZWdvcnlNb2RlbC5FUlJPUl9DQVRFR09SWV9LRVk6Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgICBTdHJpbmdbXSBhcmdzMiA9IHtkaXNwbGF5TmFtZSx1c2VyRGVmaW5lZENhdGVnb3J5LmdldEVycm9yRXhjZXB0aW9uKCkuZ2V0TWVzc2FnZSgpLHVzZXJEZWZpbmVkQ2F0ZWdvcnkuZ2V0Q2F0ZWdvcnlLZXkoKX07Ci0gICAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfSU5WQUxJRF9VU0VSX0RFRklORURfQ0FURUdPUllfREFUQV9GSUxFX0tFWSIsYXJnczIpKTsKLSAgICAgICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5VU0VSX0RFRklORURfQ0FURUdPUklFUyx1c2VyRGVmaW5lZENhdGVnb3J5VE1vZGVsS2V5c1tpXSk7ICAgICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGlucHV0c1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcmVmcmVzaEZyb21SZWdpc3RyeSgpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIFN0cmluZyBuYW1lID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9SRUdJU1RSWV9OQU1FKTsKLSAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICByZWdFbGVtZW50LnNldE5hbWUobmFtZSk7Ci0gICAgcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKS5zZXROYW1lKG5hbWUpOwotICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19SRUdJU1RSWV9VUERBVEVEIixuYW1lKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VwZGF0ZVNlcnZpY2VBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VwZGF0ZVNlcnZpY2VBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFhYmZiNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VcGRhdGVTZXJ2aWNlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDE5IDE4Mjg2NCAgIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlJlZ1B1Ymxpc2hUb29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS51dGlsLlVkZGk0akhlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLkRlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuTmFtZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJ1c2luZXNzLkJ1c2luZXNzRW50aXR5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuc2VydmljZS5CdXNpbmVzc1NlcnZpY2U7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuU2VydmljZURldGFpbDsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkNhdGVnb3J5QmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5LZXllZFJlZmVyZW5jZTsKLQotcHVibGljIGNsYXNzIFVwZGF0ZVNlcnZpY2VBY3Rpb24gZXh0ZW5kcyBVcGRhdGVBY3Rpb24KLXsKLSAgcHJpdmF0ZSBib29sZWFuIGlzVXBkYXRlXzsKLSAgcHVibGljIFVwZGF0ZVNlcnZpY2VBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcix0cnVlKTsKLSAgICBpc1VwZGF0ZV8gPSB0cnVlOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHV1aWRCdXNpbmVzc0tleSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSk7Ci0gICAgU3RyaW5nIHV1aWRTZXJ2aWNlS2V5ID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9LRVkpOwotICAgIFN0cmluZyB3c2RsVVJMTW9kaWZpZWRTdGF0ZSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5XU0RMX1VSTF9NT0RJRklFRCk7Ci0gICAgU3RyaW5nIHdzZGxVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCk7Ci0gICAgU3RyaW5nW10gbmFtZU1vZGlmaWVkU3RhdGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLk5BTUVfTU9ESUZJRUQpOwotICAgIFN0cmluZ1tdIG5hbWVWaWV3SWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLk5BTUVfVklFV0lEKTsKLSAgICBTdHJpbmdbXSBuYW1lTGFuZ3VhZ2VzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX05BTUVfTEFOR1VBR0UpOwotICAgIFN0cmluZ1tdIG5hbWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX05BTUUpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9uTW9kaWZpZWRTdGF0ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuREVTQ1JJUFRJT05fTU9ESUZJRUQpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9uVmlld0lkcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5ERVNDUklQVElPTl9WSUVXSUQpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9uTGFuZ3VhZ2VzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RFU0NSSVBUSU9OX0xBTkdVQUdFKTsKLSAgICBTdHJpbmdbXSBkZXNjcmlwdGlvbnMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT04pOwotICAgIFN0cmluZ1tdIGNhdE1vZGlmaWVkU3RhdGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JZX01PRElGSUVEKTsKLSAgICBTdHJpbmdbXSBjYXRWaWV3SWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JZX1ZJRVdJRCk7Ci0gICAgU3RyaW5nW10gY2F0VHlwZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfVFlQRSk7Ci0gICAgU3RyaW5nW10gY2F0S2V5TmFtZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfS0VZX05BTUUpOwotICAgIFN0cmluZ1tdIGNhdEtleVZhbHVlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9LRVlfVkFMVUUpOwotCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0KLSAgICBpZiAodXVpZEJ1c2luZXNzS2V5ICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSx1dWlkQnVzaW5lc3NLZXkpOwotCi0gICAgaWYgKHV1aWRTZXJ2aWNlS2V5ICE9IG51bGwpCi0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfS0VZLHV1aWRTZXJ2aWNlS2V5KTsKLQotICAgIGlmICh3c2RsVVJMTW9kaWZpZWRTdGF0ZSAhPSBudWxsICYmIHdzZGxVUkwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMaXN0RWxlbWVudCB3c2RsVVJMTGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfV1NETF9VUkwpOwotICAgICAgYm9vbGVhbiBpc01vZGlmaWVkID0gQm9vbGVhbi52YWx1ZU9mKHdzZGxVUkxNb2RpZmllZFN0YXRlKS5ib29sZWFuVmFsdWUoKTsKLSAgICAgIGlmIChpc01vZGlmaWVkKQotICAgICAgICB3c2RsVVJMTGlzdEVsZW1lbnQgPSBuZXcgTGlzdEVsZW1lbnQod3NkbFVSTCk7Ci0gICAgICBlbHNlCi0gICAgICAgIHdzZGxVUkwgPSAoU3RyaW5nKXdzZGxVUkxMaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfV1NETF9VUkwsd3NkbFVSTExpc3RFbGVtZW50KTsKLSAgICAgIGlmICghVmFsaWRhdG9yLnZhbGlkYXRlVVJMKHdzZGxVUkwpKQotICAgICAgewotICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfV1NETF9VUkwpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfV1NETF9VUkwiKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCk7Ci0KLSAgICBIYXNodGFibGUgbGFuZ3VhZ2VIYXNoID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGlmIChuYW1lTW9kaWZpZWRTdGF0ZXMgIT0gbnVsbCAmJiBuYW1lVmlld0lkcyAhPSBudWxsICYmIG5hbWVMYW5ndWFnZXMgIT0gbnVsbCAmJiBuYW1lcyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciBvbGROYW1lTGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTKTsKLSAgICAgIFZlY3RvciBuZXdOYW1lTGlzdEVsZW1lbnRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAvLyBVRERJJ3Mgc2F2ZSBBUEkgKEFwcGVuZGl4IEMgb2YgdGhlIFVEREkgVjIgUHJvZ3JhbW1lcnMgQVBJIFNwZWNpZmljYXRpb24pIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAvLyAxKSBPbmx5IHRoZSBmaXJzdCByb3cgY2FuIGhhdmUgYSBibGFuayBsYW5ndWFnZS4KLSAgICAgIC8vIDIpIE9ubHkgMSBuYW1lIHBlciBsYW5ndWFnZS4KLSAgICAgIFN0cmluZ1tdIHBhcmFtZXRlcnMgPSBuZXcgU3RyaW5nWzJdOwotICAgICAgcGFyYW1ldGVyc1swXSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPG5hbWVzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIHBhcmFtZXRlcnNbMV0gPSBTdHJpbmcudmFsdWVPZihpKzEpOwotICAgICAgICBOYW1lIHVkZGk0ak5hbWU7Ci0gICAgICAgIGlmIChuYW1lTGFuZ3VhZ2VzW2ldLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICB1ZGRpNGpOYW1lID0gbmV3IE5hbWUobmFtZXNbaV0sbmFtZUxhbmd1YWdlc1tpXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHVkZGk0ak5hbWUgPSBuZXcgTmFtZShuYW1lc1tpXSk7Ci0gICAgICAgICAgaWYgKGkgIT0gMCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTLGkpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfQkxBTktfTEFOR1VBR0UiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhbmd1YWdlSGFzaC5nZXQobmFtZUxhbmd1YWdlc1tpXSkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTLGkpOwotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfUk9XX0RVUExJQ0FURV9MQU5HVUFHRSIscGFyYW1ldGVycykpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBsYW5ndWFnZUhhc2gucHV0KG5hbWVMYW5ndWFnZXNbaV0sQm9vbGVhbi5UUlVFKTsKLSAgICAgICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcobmFtZXNbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICBmb3JtVG9vbFBJLmZsYWdSb3dFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTkFNRVMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfSU5WQUxJRF9URVhUIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgbmFtZVZpZXdJZCA9IEludGVnZXIucGFyc2VJbnQobmFtZVZpZXdJZHNbaV0pOwotICAgICAgICBib29sZWFuIGlzTW9kaWZpZWQgPSBCb29sZWFuLnZhbHVlT2YobmFtZU1vZGlmaWVkU3RhdGVzW2ldKS5ib29sZWFuVmFsdWUoKTsKLQotICAgICAgICBpZiAobmFtZVZpZXdJZCA9PSAtMSB8fCBpc01vZGlmaWVkKQotICAgICAgICAgIG5ld05hbWVMaXN0RWxlbWVudFZlY3Rvci5hZGRFbGVtZW50KG5ldyBMaXN0RWxlbWVudCh1ZGRpNGpOYW1lKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBuZXdOYW1lTGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChvbGROYW1lTGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KG5hbWVWaWV3SWQpKTsKLSAgICAgIH0KLSAgICAgIHJlaW5kZXhMaXN0RWxlbWVudFZlY3RvcihuZXdOYW1lTGlzdEVsZW1lbnRWZWN0b3IpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9OQU1FUyxuZXdOYW1lTGlzdEVsZW1lbnRWZWN0b3IpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTKTsKLSAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTkFNRVMpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT19OQU1FUyIpKTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3JpcHRpb25Nb2RpZmllZFN0YXRlcyAhPSBudWxsICYmIGRlc2NyaXB0aW9uVmlld0lkcyAhPSBudWxsICYmIGRlc2NyaXB0aW9uTGFuZ3VhZ2VzICE9IG51bGwgJiYgZGVzY3JpcHRpb25zICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIG9sZERlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0RFU0NSSVBUSU9OUyk7Ci0gICAgICBWZWN0b3IgbmV3RGVzY3JpcHRpb25MaXN0RWxlbWVudFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIFN0cmluZ1tdIHBhcmFtZXRlcnMgPSBuZXcgU3RyaW5nWzJdOwotICAgICAgcGFyYW1ldGVyc1swXSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OIik7Ci0gICAgICBsYW5ndWFnZUhhc2guY2xlYXIoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGRlc2NyaXB0aW9ucy5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBwYXJhbWV0ZXJzWzFdID0gU3RyaW5nLnZhbHVlT2YoaSsxKTsKLSAgICAgICAgRGVzY3JpcHRpb24gdWRkaTRqRGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChkZXNjcmlwdGlvbkxhbmd1YWdlc1tpXS5sZW5ndGgoKSA+IDApCi0gICAgICAgICAgdWRkaTRqRGVzY3JpcHRpb24gPSBuZXcgRGVzY3JpcHRpb24oZGVzY3JpcHRpb25zW2ldLGRlc2NyaXB0aW9uTGFuZ3VhZ2VzW2ldKTsKLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgdWRkaTRqRGVzY3JpcHRpb24gPSBuZXcgRGVzY3JpcHRpb24oZGVzY3JpcHRpb25zW2ldKTsKLSAgICAgICAgICBpZiAoaSAhPSAwKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3JtVG9vbFBJLmZsYWdSb3dFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfREVTQ1JJUFRJT05TLGkpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfQkxBTktfTEFOR1VBR0UiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhbmd1YWdlSGFzaC5nZXQoZGVzY3JpcHRpb25MYW5ndWFnZXNbaV0pICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfRFVQTElDQVRFX0xBTkdVQUdFIixwYXJhbWV0ZXJzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGxhbmd1YWdlSGFzaC5wdXQoZGVzY3JpcHRpb25MYW5ndWFnZXNbaV0sQm9vbGVhbi5UUlVFKTsKLSAgICAgICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcoZGVzY3JpcHRpb25zW2ldKSkKLSAgICAgICAgewotICAgICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgZm9ybVRvb2xQSS5mbGFnUm93RXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0RFU0NSSVBUSU9OUyxpKTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1JPV19JTlZBTElEX1RFWFQiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBkZXNjcmlwdGlvblZpZXdJZCA9IEludGVnZXIucGFyc2VJbnQoZGVzY3JpcHRpb25WaWV3SWRzW2ldKTsKLSAgICAgICAgYm9vbGVhbiBpc01vZGlmaWVkID0gQm9vbGVhbi52YWx1ZU9mKGRlc2NyaXB0aW9uTW9kaWZpZWRTdGF0ZXNbaV0pLmJvb2xlYW5WYWx1ZSgpOwotCi0gICAgICAgIGlmIChkZXNjcmlwdGlvblZpZXdJZCA9PSAtMSB8fCBpc01vZGlmaWVkKQotICAgICAgICAgIG5ld0Rlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChuZXcgTGlzdEVsZW1lbnQodWRkaTRqRGVzY3JpcHRpb24pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIG5ld0Rlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChvbGREZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yLmVsZW1lbnRBdChkZXNjcmlwdGlvblZpZXdJZCkpOwotICAgICAgfQotICAgICAgcmVpbmRleExpc3RFbGVtZW50VmVjdG9yKG5ld0Rlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMsbmV3RGVzY3JpcHRpb25MaXN0RWxlbWVudFZlY3Rvcik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMpOwotCi0gICAgaWYgKGNhdE1vZGlmaWVkU3RhdGVzICE9IG51bGwgJiYgY2F0Vmlld0lkcyAhPSBudWxsICYmIGNhdFR5cGVzICE9IG51bGwgJiYgY2F0S2V5TmFtZXMgIT0gbnVsbCAmJiBjYXRLZXlWYWx1ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3Igb2xkQ2F0TGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0NBVEVHT1JJRVMpOwotICAgICAgVmVjdG9yIG5ld0NhdExpc3RFbGVtZW50VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaT0wO2k8Y2F0VHlwZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSBuZXcgS2V5ZWRSZWZlcmVuY2UoY2F0S2V5TmFtZXNbaV0sY2F0S2V5VmFsdWVzW2ldLGNhdFR5cGVzW2ldKTsKLSAgICAgICAgaW50IGNhdFZpZXdJZCA9IEludGVnZXIucGFyc2VJbnQoY2F0Vmlld0lkc1tpXSk7Ci0gICAgICAgIGJvb2xlYW4gaXNNb2RpZmllZCA9IEJvb2xlYW4udmFsdWVPZihjYXRNb2RpZmllZFN0YXRlc1tpXSkuYm9vbGVhblZhbHVlKCk7Ci0gICAgICAgIGlmIChjYXRWaWV3SWQgPT0gLTEgfHwgaXNNb2RpZmllZCkKLSAgICAgICAgICBuZXdDYXRMaXN0RWxlbWVudFZlY3Rvci5hZGRFbGVtZW50KG5ldyBMaXN0RWxlbWVudChrcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgbmV3Q2F0TGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChvbGRDYXRMaXN0RWxlbWVudFZlY3Rvci5lbGVtZW50QXQoY2F0Vmlld0lkKSk7Ci0gICAgICB9Ci0gICAgICByZWluZGV4TGlzdEVsZW1lbnRWZWN0b3IobmV3Q2F0TGlzdEVsZW1lbnRWZWN0b3IpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9DQVRFR09SSUVTLG5ld0NhdExpc3RFbGVtZW50VmVjdG9yKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0NBVEVHT1JJRVMpOwotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJlZnJlc2hCdXNpbmVzc0Zyb21SZWdpc3RyeSgpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIFN0cmluZyB1dWlkQnVzaW5lc3NLZXkgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfQlVTSU5FU1NfS0VZKTsKLSAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgVURESVByb3h5IHByb3h5ID0gcmVnRWxlbWVudC5nZXRQcm94eSgpOwotICAgICAgVmVjdG9yIGJlVmVjdG9yID0gcHJveHkuZ2V0X2J1c2luZXNzRGV0YWlsKHV1aWRCdXNpbmVzc0tleSkuZ2V0QnVzaW5lc3NFbnRpdHlWZWN0b3IoKTsKLSAgICAgIEJ1c2luZXNzRW50aXR5IGJlOwotICAgICAgaWYgKGJlVmVjdG9yLnNpemUoKSA+IDApCi0gICAgICAgIGJlID0gKEJ1c2luZXNzRW50aXR5KWJlVmVjdG9yLmdldCgwKTsKLSAgICAgIGVsc2UKLSAgICAgICAgYmUgPSBudWxsOwotICAgICAgaWYgKGJlICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLkxBVEVTVF9CVVNJTkVTUyxiZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gRmVlZGJhY2sgdmlhIEphdmFzY3JpcHQgcG9wdXBzLgotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIEZlZWRiYWNrIHZpYSBKYXZhc2NyaXB0IHBvcHVwcy4KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgYm9vbGVhbiByZWZyZXNoRnJvbVJlZ2lzdHJ5KCkKLSAgewotICAgIGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIFN0cmluZyB1dWlkU2VydmljZUtleSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9TRVJWSUNFX0tFWSk7Ci0gICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIFVERElQcm94eSBwcm94eSA9IHJlZ0VsZW1lbnQuZ2V0UHJveHkoKTsKLSAgICAgIFNlcnZpY2VEZXRhaWwgc2VydmljZURldGFpbCA9IHByb3h5LmdldF9zZXJ2aWNlRGV0YWlsKHV1aWRTZXJ2aWNlS2V5KTsKLSAgICAgIFZlY3RvciBidXNpbmVzc1NlcnZpY2VWZWN0b3IgPSBzZXJ2aWNlRGV0YWlsLmdldEJ1c2luZXNzU2VydmljZVZlY3RvcigpOwotICAgICAgaWYgKGJ1c2luZXNzU2VydmljZVZlY3Rvci5zaXplKCkgPiAwKQotICAgICAgewotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNULGJ1c2luZXNzU2VydmljZVZlY3Rvci5lbGVtZW50QXQoMCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKFVERElFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBGZWVkYmFjayB2aWEgSmF2YXNjcmlwdCBwb3B1cHMuCi0gICAgfQotICAgIGNhdGNoIChUcmFuc3BvcnRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBGZWVkYmFjayB2aWEgSmF2YXNjcmlwdCBwb3B1cHMuCi0gICAgfQotICAgIGlzVXBkYXRlXyA9IGZhbHNlOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFJlZ1B1Ymxpc2hUb29sIHNldHVwUmVnUHVibGlzaFRvb2woKQotICB7Ci0gICAgLy8gUHJlcGFyZSBmb3IgcmUtcHVibGlzaGluZyBhIG5vdy1zdGFsZSBzZXJ2aWNlIHdob3NlIGJ1c2luZXNzIGhhcyBhbHNvIGJlZW4gZWxpbWluYXRlZC4KLSAgICBSZWdQdWJsaXNoVG9vbCByZWdQdWJsaXNoVG9vbCA9IHJlZ05vZGVfLmdldFJlZ1B1Ymxpc2hUb29sKCk7Ci0gICAgcmVnUHVibGlzaFRvb2wuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVksIiIpOwotICAgIHJlZ1B1Ymxpc2hUb29sLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTSxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVMpKTsKLSAgICByZWdQdWJsaXNoVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQURWQU5DRUQpKTsKLSAgICAKLSAgICByZWdQdWJsaXNoVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfV1NETF9VUkwscHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCkpOwotICAgIAotICAgIFZlY3RvciBuYW1lTGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTkFNRVMpOwotICAgIFZlY3RvciBkZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yID0gKFZlY3Rvcilwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0RFU0NSSVBUSU9OUyk7Ci0gICAgVmVjdG9yIGNhdExpc3RFbGVtZW50VmVjdG9yID0gKFZlY3Rvcilwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0NBVEVHT1JJRVMpOwotICAgIAotICAgIFZlY3RvciBuYW1lVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIGZvciAoaW50IGk9MDtpPG5hbWVMaXN0RWxlbWVudFZlY3Rvci5zaXplKCk7aSsrKQotICAgIHsKLSAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KW5hbWVMaXN0RWxlbWVudFZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICBOYW1lIG5hbWUgPSAoTmFtZSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgIG5hbWVWZWN0b3IuYWRkRWxlbWVudChuYW1lKTsKLSAgICB9Ci0gICAgCi0gICAgVmVjdG9yIGRlc2NyaXB0aW9uVmVjdG9yID0gbnVsbDsKLSAgICBpZiAoZGVzY3JpcHRpb25MaXN0RWxlbWVudFZlY3RvciAhPSBudWxsKQotICAgIHsKLSAgICAgIGRlc2NyaXB0aW9uVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaT0wO2k8ZGVzY3JpcHRpb25MaXN0RWxlbWVudFZlY3Rvci5zaXplKCk7aSsrKQotICAgICAgewotICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClkZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgRGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSAoRGVzY3JpcHRpb24pbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uVmVjdG9yLmFkZEVsZW1lbnQoZGVzY3JpcHRpb24pOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgICByZWdQdWJsaXNoVG9vbC5yZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfREVTQ1JJUFRJT05TKTsKLSAgICAKLSAgICBDYXRlZ29yeUJhZyBjYXRCYWcgPSBudWxsOwotICAgIGlmIChjYXRMaXN0RWxlbWVudFZlY3RvciAhPSBudWxsKQotICAgIHsKLSAgICAgIGNhdEJhZyA9IG5ldyBDYXRlZ29yeUJhZygpOwotICAgICAgZm9yIChpbnQgaT0wO2k8Y2F0TGlzdEVsZW1lbnRWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgIHsKLSAgICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpY2F0TGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgY2F0QmFnLmFkZChrcik7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlZ1B1Ymxpc2hUb29sLnJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9DQVRFR09SSUVTKTsKLSAgICAKLSAgICByZWdQdWJsaXNoVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTkFNRVMsbmFtZVZlY3Rvcik7Ci0gICAgaWYgKGRlc2NyaXB0aW9uVmVjdG9yICE9IG51bGwpCi0gICAgICByZWdQdWJsaXNoVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfREVTQ1JJUFRJT05TLGRlc2NyaXB0aW9uVmVjdG9yKTsKLSAgICBpZiAoY2F0QmFnICE9IG51bGwpCi0gICAgICByZWdQdWJsaXNoVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQ0FURUdPUklFUyxjYXRCYWcpOwotICAgIHJldHVybiByZWdQdWJsaXNoVG9vbDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsgICAgCi0gICAgdHJ5Ci0gICAgewotICAgICAgQnVzaW5lc3NFbnRpdHkgYmUgPSAoQnVzaW5lc3NFbnRpdHkpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuTEFURVNUX0JVU0lORVNTKTsKLSAgICAgIFN0cmluZyBwdWJsaXNoVVJMID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgICAgU3RyaW5nIHBhc3N3b3JkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0gICAgICBTdHJpbmcgdXVpZFNlcnZpY2VLZXkgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9LRVkpOwotICAgICAgTGlzdEVsZW1lbnQgd3NkbFVSTExpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfV1NETF9VUkwpOwotICAgICAgVmVjdG9yIG5hbWVMaXN0RWxlbWVudFZlY3RvciA9IChWZWN0b3IpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9OQU1FUyk7Ci0gICAgICBWZWN0b3IgZGVzY3JpcHRpb25MaXN0RWxlbWVudFZlY3RvciA9IChWZWN0b3IpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMpOwotICAgICAgVmVjdG9yIGNhdExpc3RFbGVtZW50VmVjdG9yID0gKFZlY3Rvcilwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0NBVEVHT1JJRVMpOwotCi0gICAgICBTdHJpbmcgd3NkbFVSTCA9IChTdHJpbmcpd3NkbFVSTExpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgICAgICAgCi0gICAgICBWZWN0b3IgbmFtZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPG5hbWVMaXN0RWxlbWVudFZlY3Rvci5zaXplKCk7aSsrKQotICAgICAgewotICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudCluYW1lTGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICBOYW1lIG5hbWUgPSAoTmFtZSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgbmFtZVZlY3Rvci5hZGRFbGVtZW50KG5hbWUpOwotICAgICAgfQotCi0gICAgICBWZWN0b3IgZGVzY3JpcHRpb25WZWN0b3IgPSBudWxsOwotICAgICAgaWYgKGRlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZGVzY3JpcHRpb25WZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPGRlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgICAgewotICAgICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWRlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICAgIERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gKERlc2NyaXB0aW9uKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgICAgIGRlc2NyaXB0aW9uVmVjdG9yLmFkZEVsZW1lbnQoZGVzY3JpcHRpb24pOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIENhdGVnb3J5QmFnIGNhdEJhZyA9IG51bGw7Ci0gICAgICBpZiAoY2F0TGlzdEVsZW1lbnRWZWN0b3IgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgY2F0QmFnID0gbmV3IENhdGVnb3J5QmFnKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPGNhdExpc3RFbGVtZW50VmVjdG9yLnNpemUoKTtpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudCljYXRMaXN0RWxlbWVudFZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSAoS2V5ZWRSZWZlcmVuY2UpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgICAgY2F0QmFnLmFkZChrcik7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgICAgIAlyZWdFbGVtZW50LnBlcmZvcm1Mb2dpbihwdWJsaXNoVVJMLHVzZXJJZCxwYXNzd29yZCk7Ci0gICAgICBVRERJUHJveHkgcHJveHkgPSByZWdFbGVtZW50LmdldFByb3h5KCk7Ci0KLSAgICAgIC8vIE5vdGU6IFRoZSBKU1Agd2lsbCBwcmV2ZW50IHRoaXMgcm91dGluZSBmcm9tIGV4ZWN1dGluZyBpZiBiZSBpcyBudWxsLgotICAgICAgVWRkaTRqSGVscGVyIHVkZGk0akhlbHBlciA9IG5ldyBVZGRpNGpIZWxwZXIoKTsKLSAgICAgIERlZmluaXRpb24gZGVmID0gdWRkaTRqSGVscGVyLmdldFdTRExEZWZpbml0aW9uKHdzZGxVUkwpOwotICAgICAgCi0gICAgICAvLyBQdWJsaXNoL3VwZGF0ZSB0aGUgc2VydmljZSBpbnRlcmZhY2VzIGZpcnN0LgotICAgICAgUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBY3Rpb24gcmVnUHVibGlzaFNJQWN0aW9uID0gbmV3IFJlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlU2ltcGxlQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAgIGludCBjdXJyZW50Tm9kZUlkID0gZ2V0U2VsZWN0ZWROYXZpZ2F0b3JOb2RlKCkuZ2V0Tm9kZUlkKCk7Ci0gICAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHJlZ05vZGVfLmdldE5vZGVNYW5hZ2VyKCk7Ci0KLSAgICAgIEhhc2h0YWJsZSB0TW9kZWxzVGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgICBUTW9kZWxbXSB0TW9kZWxzID0gbnVsbDsKLSAgICAgIGlmICh1ZGRpNGpIZWxwZXIuaXNNb25vbGl0aGljV1NETChkZWYpKQotICAgICAgewotICAgICAgCXRNb2RlbHMgPSBuZXcgVE1vZGVsWzFdOwotICAgICAgCXRNb2RlbHNbMF0gPSB1ZGRpNGpIZWxwZXIubmV3VE1vZGVsKHdzZGxVUkwsIGRlZik7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAJU3RyaW5nW10gaW1wb3J0cyA9IHVkZGk0akhlbHBlci5nZXRJbXBvcnRzKGRlZiwgd3NkbFVSTCk7Ci0gICAgICAJdE1vZGVscyA9IG5ldyBUTW9kZWxbaW1wb3J0cy5sZW5ndGhdOwotICAgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgdE1vZGVscy5sZW5ndGg7IGkrKykKLSAgICAgIAkgIHRNb2RlbHNbaV0gPSB1ZGRpNGpIZWxwZXIubmV3VE1vZGVsKGltcG9ydHNbaV0pOwotICAgICAgfQotICAgICAgCi0gICAgICBpZiAodE1vZGVscyAhPSBudWxsKQotICAgICAgewotICAgICAgCWZvciAoaW50IGk9MDtpPHRNb2RlbHMubGVuZ3RoO2krKykKLSAgICAgIAl7Ci0gICAgICAJICBib29sZWFuIGlucHV0c1ZhbGlkID0gcmVnUHVibGlzaFNJQWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZSh1ZGRpNGpIZWxwZXIuZ2V0V1NETCh0TW9kZWxzW2ldKSwgdE1vZGVsc1tpXSk7Ci0gICAgICAJICBpZiAoaW5wdXRzVmFsaWQpCi0gICAgICAJICB7Ci0gICAgICAJICAgIHJlZ1B1Ymxpc2hTSUFjdGlvbi5ydW4oKTsKLSAgICAgIAkgICAgT2JqZWN0IHNhdmVkVE1vZGVsID0gcmVnUHVibGlzaFNJQWN0aW9uLmdldFByb3BlcnR5VGFibGUoKS5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9PVVRQVVRfU0FWRURfVE1PREVMKTsKLSAgICAgIAkgICAgaWYgKHNhdmVkVE1vZGVsICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAJICAgICAgdE1vZGVsc1RhYmxlLnB1dCgoKFRNb2RlbClzYXZlZFRNb2RlbCkuZ2V0TmFtZVN0cmluZygpLCBzYXZlZFRNb2RlbCk7Ci0gICAgICAJICAgIH0KLSAgICAgICAgICAgIC8vIFJlc2VsZWN0IHRoZSBjdXJyZW50IG5vZGUuCi0gICAgICAJICAgIG5vZGVNYW5hZ2VyLnNldFNlbGVjdGVkTm9kZUlkKGN1cnJlbnROb2RlSWQpOwotICAgICAgICAgIH0KLSAgICAgIAl9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIEJ1c2luZXNzU2VydmljZSBidXNTZXJ2aWNlID0gdWRkaTRqSGVscGVyLm5ld0J1c2luZXNzU2VydmljZSh3c2RsVVJMLCBkZWYsIHRNb2RlbHNUYWJsZSk7Ci0gICAgICBpZiAoaXNVcGRhdGVfKQotICAgICAgICBidXNTZXJ2aWNlLnNldFNlcnZpY2VLZXkodXVpZFNlcnZpY2VLZXkpOwotICAgICAgYnVzU2VydmljZS5zZXRCdXNpbmVzc0tleShiZS5nZXRCdXNpbmVzc0tleSgpKTsKLSAgICAgIGJ1c1NlcnZpY2Uuc2V0TmFtZVZlY3RvcihuYW1lVmVjdG9yKTsKLSAgICAgIGJ1c1NlcnZpY2Uuc2V0RGVzY3JpcHRpb25WZWN0b3IoZGVzY3JpcHRpb25WZWN0b3IpOwotICAgICAgYnVzU2VydmljZS5zZXRDYXRlZ29yeUJhZyhjYXRCYWcpOwotICAgICAgcmVnRWxlbWVudC5oYW5kbGVQcmVJbnZvY2F0aW9uKGJ1c1NlcnZpY2UpOyAgICAgIAotICAgICAgVmVjdG9yIGJzVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgYnNWZWN0b3IuYWRkKGJ1c1NlcnZpY2UpOwotICAgICAgYnVzU2VydmljZSA9IChCdXNpbmVzc1NlcnZpY2UpcHJveHkuc2F2ZV9zZXJ2aWNlKHJlZ0VsZW1lbnQuZ2V0QXV0aEluZm9TdHJpbmcoKSwgYnNWZWN0b3IpLmdldEJ1c2luZXNzU2VydmljZVZlY3RvcigpLmdldCgwKTsKLSAgICAgIHJlZnJlc2hOb2RlKGJ1c1NlcnZpY2UpOwotICAgICAgaWYgKGlzVXBkYXRlXykKLSAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1NFUlZJQ0VfVVBEQVRFRCIsYnVzU2VydmljZS5nZXREZWZhdWx0TmFtZVN0cmluZygpKSk7Ci0gICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19TRVJWSUNFX1BVQkxJU0hFRCIsYnVzU2VydmljZS5nZXREZWZhdWx0TmFtZVN0cmluZygpKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgY2F0Y2ggKFdTRExFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBoYW5kbGVVbmV4cGVjdGVkRXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZSxtZXNzYWdlUXVldWUsIldTRExFeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJUcmFuc3BvcnRFeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAJaWYoVURESUV4Y2VwdGlvbkhhbmRsZXIucmVxdWlyZXNSZXNldChlKSkKLSAgICAJCXJlZ0VsZW1lbnQuc2V0RGVmYXVsdHMoKTsKLSAgICAgCW1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRDb250cm9sbGVyKCkuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VORVhQRUNURUQiKSk7Ci0gICAgCW1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKCJVRERJRXhjZXB0aW9uIik7Ci0gICAgCW1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGUudG9TdHJpbmcoKSk7Ci0gICAgfQotICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBoYW5kbGVVbmV4cGVjdGVkRXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZSxtZXNzYWdlUXVldWUsIk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIsZSk7Ci0gICAgfSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VwZGF0ZVNlcnZpY2VJbnRlcmZhY2VBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9hY3Rpb25zL1VwZGF0ZVNlcnZpY2VJbnRlcmZhY2VBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg0NTZiMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvYWN0aW9ucy9VcGRhdGVTZXJ2aWNlSW50ZXJmYWNlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDE5IDE4Mjg2NCAgIGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlVERElQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS51dGlsLlVkZGk0akhlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5VRERJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLkRlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlRNb2RlbERldGFpbDsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkNhdGVnb3J5QmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5JZGVudGlmaWVyQmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5LZXllZFJlZmVyZW5jZTsKLQotcHVibGljIGNsYXNzIFVwZGF0ZVNlcnZpY2VJbnRlcmZhY2VBY3Rpb24gZXh0ZW5kcyBVcGRhdGVBY3Rpb24KLXsKLSAgcHJpdmF0ZSBib29sZWFuIGlzVXBkYXRlXzsKLSAgcHVibGljIFVwZGF0ZVNlcnZpY2VJbnRlcmZhY2VBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcix0cnVlKTsKLSAgICBpc1VwZGF0ZV8gPSB0cnVlOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzT3RoZXJzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcixGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgdXVpZEtleSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfSU5URVJGQUNFX0tFWSk7Ci0gICAgU3RyaW5nIHdzZGxVUkxNb2RpZmllZFN0YXRlID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLldTRExfVVJMX01PRElGSUVEKTsKLSAgICBTdHJpbmcgd3NkbFVSTCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9XU0RMX1VSTCk7Ci0gICAgU3RyaW5nIG5hbWVNb2RpZmllZFN0YXRlID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLk5BTUVfTU9ESUZJRUQpOwotICAgIFN0cmluZyBuYW1lID0gcGFyc2VyLmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9uTW9kaWZpZWRTdGF0ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuREVTQ1JJUFRJT05fTU9ESUZJRUQpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9uVmlld0lkcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5ERVNDUklQVElPTl9WSUVXSUQpOwotICAgIFN0cmluZ1tdIGRlc2NyaXB0aW9uTGFuZ3VhZ2VzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RFU0NSSVBUSU9OX0xBTkdVQUdFKTsKLSAgICBTdHJpbmdbXSBkZXNjcmlwdGlvbnMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT04pOwotICAgIFN0cmluZ1tdIGlkTW9kaWZpZWRTdGF0ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuSURFTlRJRklFUl9NT0RJRklFRCk7Ci0gICAgU3RyaW5nW10gaWRWaWV3SWRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLklERU5USUZJRVJfVklFV0lEKTsKLSAgICBTdHJpbmdbXSBpZFR5cGVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0lERU5USUZJRVJfVFlQRSk7Ci0gICAgU3RyaW5nW10gaWRLZXlOYW1lcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX0tFWV9OQU1FKTsKLSAgICBTdHJpbmdbXSBpZEtleVZhbHVlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX0tFWV9WQUxVRSk7Ci0gICAgU3RyaW5nW10gY2F0TW9kaWZpZWRTdGF0ZXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuQ0FURUdPUllfTU9ESUZJRUQpOwotICAgIFN0cmluZ1tdIGNhdFZpZXdJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKFVERElBY3Rpb25JbnB1dHMuQ0FURUdPUllfVklFV0lEKTsKLSAgICBTdHJpbmdbXSBjYXRUeXBlcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9UWVBFKTsKLSAgICBTdHJpbmdbXSBjYXRLZXlOYW1lcyA9IHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9LRVlfTkFNRSk7Ci0gICAgU3RyaW5nW10gY2F0S2V5VmFsdWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9WQUxVRSk7Ci0gICAgCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IHRydWU7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgCi0gICAgaWYgKHV1aWRLZXkgIT0gbnVsbCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZLHV1aWRLZXkpOwotICAgIAotICAgIGlmICh3c2RsVVJMTW9kaWZpZWRTdGF0ZSAhPSBudWxsICYmIHdzZGxVUkwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMaXN0RWxlbWVudCB3c2RsVVJMTGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMKTsgICAgICAKLSAgICAgIGJvb2xlYW4gaXNNb2RpZmllZCA9IEJvb2xlYW4udmFsdWVPZih3c2RsVVJMTW9kaWZpZWRTdGF0ZSkuYm9vbGVhblZhbHVlKCk7Ci0gICAgICBpZiAoaXNNb2RpZmllZCkKLSAgICAgICAgd3NkbFVSTExpc3RFbGVtZW50ID0gbmV3IExpc3RFbGVtZW50KHdzZGxVUkwpOwotICAgICAgZWxzZQotICAgICAgICB3c2RsVVJMID0gKFN0cmluZyl3c2RsVVJMTGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9XU0RMX1VSTCx3c2RsVVJMTGlzdEVsZW1lbnQpOwotICAgICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVVUkwod3NkbFVSTCkpCi0gICAgICB7Ci0gICAgICAgIGlucHV0c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGZvcm1Ub29sUEkuZmxhZ0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfV1NETF9VUkwpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfV1NETF9VUkwiKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfV1NETF9VUkwpOwotICAgIAotICAgIGlmIChuYW1lTW9kaWZpZWRTdGF0ZSAhPSBudWxsICYmIG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMaXN0RWxlbWVudCBuYW1lTGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUpOwotICAgICAgYm9vbGVhbiBpc01vZGlmaWVkID0gQm9vbGVhbi52YWx1ZU9mKG5hbWVNb2RpZmllZFN0YXRlKS5ib29sZWFuVmFsdWUoKTsKLSAgICAgIGlmIChpc01vZGlmaWVkKQotICAgICAgICBuYW1lTGlzdEVsZW1lbnQgPSBuZXcgTGlzdEVsZW1lbnQobmFtZSk7Ci0gICAgICBlbHNlCi0gICAgICAgIG5hbWUgPSAoU3RyaW5nKW5hbWVMaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUsbmFtZUxpc3RFbGVtZW50KTsKLSAgICAgIGlmICghVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKG5hbWUpKQotICAgICAgewotICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICBmb3JtVG9vbFBJLmZsYWdFcnJvcihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUpOwotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0lOVkFMSURfTkFNRSIpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FKTsKLSAgICAgIAotICAgIEhhc2h0YWJsZSBsYW5ndWFnZUhhc2ggPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgaWYgKGRlc2NyaXB0aW9uTW9kaWZpZWRTdGF0ZXMgIT0gbnVsbCAmJiBkZXNjcmlwdGlvblZpZXdJZHMgIT0gbnVsbCAmJiBkZXNjcmlwdGlvbkxhbmd1YWdlcyAhPSBudWxsICYmIGRlc2NyaXB0aW9ucyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciBvbGREZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT05TKTsKLSAgICAgIFZlY3RvciBuZXdEZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgU3RyaW5nW10gcGFyYW1ldGVycyA9IG5ldyBTdHJpbmdbMl07Ci0gICAgICBwYXJhbWV0ZXJzWzBdID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfREVTQ1JJUFRJT04iKTsKLSAgICAgIGxhbmd1YWdlSGFzaC5jbGVhcigpOwotICAgICAgZm9yIChpbnQgaT0wO2k8ZGVzY3JpcHRpb25zLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIHBhcmFtZXRlcnNbMV0gPSBTdHJpbmcudmFsdWVPZihpKzEpOwotICAgICAgICBEZXNjcmlwdGlvbiB1ZGRpNGpEZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKGRlc2NyaXB0aW9uTGFuZ3VhZ2VzW2ldLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICB1ZGRpNGpEZXNjcmlwdGlvbiA9IG5ldyBEZXNjcmlwdGlvbihkZXNjcmlwdGlvbnNbaV0sZGVzY3JpcHRpb25MYW5ndWFnZXNbaV0pOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICB1ZGRpNGpEZXNjcmlwdGlvbiA9IG5ldyBEZXNjcmlwdGlvbihkZXNjcmlwdGlvbnNbaV0pOwotICAgICAgICAgIGlmIChpICE9IDApCi0gICAgICAgICAgewotICAgICAgICAgICAgaW5wdXRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT05TLGkpOwotICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9ST1dfQkxBTktfTEFOR1VBR0UiLHBhcmFtZXRlcnMpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhbmd1YWdlSGFzaC5nZXQoZGVzY3JpcHRpb25MYW5ndWFnZXNbaV0pICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT05TLGkpOwotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfUk9XX0RVUExJQ0FURV9MQU5HVUFHRSIscGFyYW1ldGVycykpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBsYW5ndWFnZUhhc2gucHV0KGRlc2NyaXB0aW9uTGFuZ3VhZ2VzW2ldLEJvb2xlYW4uVFJVRSk7Ci0gICAgICAgIGlmICghVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKGRlc2NyaXB0aW9uc1tpXSkpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnB1dHNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIGZvcm1Ub29sUEkuZmxhZ1Jvd0Vycm9yKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT05TLGkpOwotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfUk9XX0lOVkFMSURfVEVYVCIscGFyYW1ldGVycykpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpbnQgZGVzY3JpcHRpb25WaWV3SWQgPSBJbnRlZ2VyLnBhcnNlSW50KGRlc2NyaXB0aW9uVmlld0lkc1tpXSk7Ci0gICAgICAgIGJvb2xlYW4gaXNNb2RpZmllZCA9IEJvb2xlYW4udmFsdWVPZihkZXNjcmlwdGlvbk1vZGlmaWVkU3RhdGVzW2ldKS5ib29sZWFuVmFsdWUoKTsKLSAgICAgIAotICAgICAgICBpZiAoZGVzY3JpcHRpb25WaWV3SWQgPT0gLTEgfHwgaXNNb2RpZmllZCkKLSAgICAgICAgICBuZXdEZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yLmFkZEVsZW1lbnQobmV3IExpc3RFbGVtZW50KHVkZGk0akRlc2NyaXB0aW9uKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBuZXdEZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yLmFkZEVsZW1lbnQob2xkRGVzY3JpcHRpb25MaXN0RWxlbWVudFZlY3Rvci5lbGVtZW50QXQoZGVzY3JpcHRpb25WaWV3SWQpKTsKLSAgICAgIH0KLSAgICAgIHJlaW5kZXhMaXN0RWxlbWVudFZlY3RvcihuZXdEZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0RFU0NSSVBUSU9OUyxuZXdEZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yKTsgICAgICAKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlUHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTlMpOwotICAgICAgCi0gICAgaWYgKGlkTW9kaWZpZWRTdGF0ZXMgIT0gbnVsbCAmJiBpZFZpZXdJZHMgIT0gbnVsbCAmJiBpZFR5cGVzICE9IG51bGwgJiYgaWRLZXlOYW1lcyAhPSBudWxsICYmIGlkS2V5VmFsdWVzICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIG9sZElkTGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9JREVOVElGSUVSUyk7Ci0gICAgICBWZWN0b3IgbmV3SWRMaXN0RWxlbWVudFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGlkS2V5TmFtZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSBuZXcgS2V5ZWRSZWZlcmVuY2UoaWRLZXlOYW1lc1tpXSxpZEtleVZhbHVlc1tpXSxpZFR5cGVzW2ldKTsKLSAgICAgICAgaW50IGlkVmlld0lkID0gSW50ZWdlci5wYXJzZUludChpZFZpZXdJZHNbaV0pOwotICAgICAgICBib29sZWFuIGlzTW9kaWZpZWQgPSBCb29sZWFuLnZhbHVlT2YoaWRNb2RpZmllZFN0YXRlc1tpXSkuYm9vbGVhblZhbHVlKCk7Ci0gICAgICAgIGlmIChpZFZpZXdJZCA9PSAtMSB8fCBpc01vZGlmaWVkKQotICAgICAgICAgIG5ld0lkTGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChuZXcgTGlzdEVsZW1lbnQoa3IpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIG5ld0lkTGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChvbGRJZExpc3RFbGVtZW50VmVjdG9yLmVsZW1lbnRBdChpZFZpZXdJZCkpOwotICAgICAgfQotICAgICAgcmVpbmRleExpc3RFbGVtZW50VmVjdG9yKG5ld0lkTGlzdEVsZW1lbnRWZWN0b3IpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfSURFTlRJRklFUlMsbmV3SWRMaXN0RWxlbWVudFZlY3Rvcik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlbW92ZVByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfSURFTlRJRklFUlMpOwotICAgICAgCi0gICAgaWYgKGNhdE1vZGlmaWVkU3RhdGVzICE9IG51bGwgJiYgY2F0Vmlld0lkcyAhPSBudWxsICYmIGNhdFR5cGVzICE9IG51bGwgJiYgY2F0S2V5TmFtZXMgIT0gbnVsbCAmJiBjYXRLZXlWYWx1ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3Igb2xkQ2F0TGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9DQVRFR09SSUVTKTsKLSAgICAgIFZlY3RvciBuZXdDYXRMaXN0RWxlbWVudFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGNhdFR5cGVzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gbmV3IEtleWVkUmVmZXJlbmNlKGNhdEtleU5hbWVzW2ldLGNhdEtleVZhbHVlc1tpXSxjYXRUeXBlc1tpXSk7Ci0gICAgICAgIGludCBjYXRWaWV3SWQgPSBJbnRlZ2VyLnBhcnNlSW50KGNhdFZpZXdJZHNbaV0pOwotICAgICAgICBib29sZWFuIGlzTW9kaWZpZWQgPSBCb29sZWFuLnZhbHVlT2YoY2F0TW9kaWZpZWRTdGF0ZXNbaV0pLmJvb2xlYW5WYWx1ZSgpOwotICAgICAgICBpZiAoY2F0Vmlld0lkID09IC0xIHx8IGlzTW9kaWZpZWQpCi0gICAgICAgICAgbmV3Q2F0TGlzdEVsZW1lbnRWZWN0b3IuYWRkRWxlbWVudChuZXcgTGlzdEVsZW1lbnQoa3IpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIG5ld0NhdExpc3RFbGVtZW50VmVjdG9yLmFkZEVsZW1lbnQob2xkQ2F0TGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGNhdFZpZXdJZCkpOwotICAgICAgfQotICAgICAgcmVpbmRleExpc3RFbGVtZW50VmVjdG9yKG5ld0NhdExpc3RFbGVtZW50VmVjdG9yKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0NBVEVHT1JJRVMsbmV3Q2F0TGlzdEVsZW1lbnRWZWN0b3IpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZW1vdmVQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0NBVEVHT1JJRVMpOyAgICAgICAgICAgIAotICAgIHJldHVybiBpbnB1dHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJlZnJlc2hGcm9tUmVnaXN0cnkoKQotICB7Ci0gICAgY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgU3RyaW5nIHV1aWRLZXkgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZKTsKLSAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgVURESVByb3h5IHByb3h5ID0gcmVnRWxlbWVudC5nZXRQcm94eSgpOwotICAgICAgVE1vZGVsRGV0YWlsIHRNb2RlbERldGFpbCA9IHByb3h5LmdldF90TW9kZWxEZXRhaWwodXVpZEtleSk7Ci0gICAgICBWZWN0b3IgdE1vZGVsVmVjdG9yID0gdE1vZGVsRGV0YWlsLmdldFRNb2RlbFZlY3RvcigpOwotICAgICAgaWYgKHRNb2RlbFZlY3Rvci5zaXplKCkgPiAwKQotICAgICAgewotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoVURESUFjdGlvbklucHV0cy5MQVRFU1RfT0JKRUNULHRNb2RlbFZlY3Rvci5lbGVtZW50QXQoMCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKFVERElFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBGZWVkYmFjayB2aWEgSmF2YXNjcmlwdCBwb3B1cHMuCi0gICAgfQotICAgIGNhdGNoIChUcmFuc3BvcnRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBGZWVkYmFjayB2aWEgSmF2YXNjcmlwdCBwb3B1cHMuCi0gICAgfQotICAgIGlzVXBkYXRlXyA9IGZhbHNlOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAgIAotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgU3RyaW5nIHV1aWRLZXkgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZKTsgICAgICAKLSAgICAgIFN0cmluZyBwdWJsaXNoVVJMID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICAgICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgICAgU3RyaW5nIHBhc3N3b3JkID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0gICAgICBMaXN0RWxlbWVudCB3c2RsVVJMTGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfV1NETF9VUkwpOwotICAgICAgTGlzdEVsZW1lbnQgbmFtZUxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUpOwotICAgICAgVmVjdG9yIGRlc2NyaXB0aW9uTGlzdEVsZW1lbnRWZWN0b3IgPSAoVmVjdG9yKXByb3BlcnR5VGFibGVfLmdldChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0RFU0NSSVBUSU9OUyk7Ci0gICAgICBWZWN0b3IgaWRMaXN0RWxlbWVudFZlY3RvciA9IChWZWN0b3IpcHJvcGVydHlUYWJsZV8uZ2V0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfSURFTlRJRklFUlMpOwotICAgICAgVmVjdG9yIGNhdExpc3RFbGVtZW50VmVjdG9yID0gKFZlY3Rvcilwcm9wZXJ0eVRhYmxlXy5nZXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9DQVRFR09SSUVTKTsKLSAgICAgIAotICAgICAgU3RyaW5nIHdzZGxVUkwgPSAoU3RyaW5nKXdzZGxVUkxMaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgIAotICAgICAgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKW5hbWVMaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgIAotICAgICAgVmVjdG9yIGRlc2NyaXB0aW9uVmVjdG9yID0gbnVsbDsKLSAgICAgIGlmIChkZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGRlc2NyaXB0aW9uVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgICBmb3IgKGludCBpPTA7aTxkZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yLnNpemUoKTtpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClkZXNjcmlwdGlvbkxpc3RFbGVtZW50VmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgICBEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiA9IChEZXNjcmlwdGlvbilsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICAgICBkZXNjcmlwdGlvblZlY3Rvci5hZGRFbGVtZW50KGRlc2NyaXB0aW9uKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICBJZGVudGlmaWVyQmFnIGlkQmFnID0gbnVsbDsKLSAgICAgIGlmIChpZExpc3RFbGVtZW50VmVjdG9yICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGlkQmFnID0gbmV3IElkZW50aWZpZXJCYWcoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wO2k8aWRMaXN0RWxlbWVudFZlY3Rvci5zaXplKCk7aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpaWRMaXN0RWxlbWVudFZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSAoS2V5ZWRSZWZlcmVuY2UpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgICAgaWRCYWcuYWRkKGtyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICBDYXRlZ29yeUJhZyBjYXRCYWcgPSBudWxsOwotICAgICAgaWYgKGNhdExpc3RFbGVtZW50VmVjdG9yICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGNhdEJhZyA9IG5ldyBDYXRlZ29yeUJhZygpOwotICAgICAgICBmb3IgKGludCBpPTA7aTxjYXRMaXN0RWxlbWVudFZlY3Rvci5zaXplKCk7aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpY2F0TGlzdEVsZW1lbnRWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gKEtleWVkUmVmZXJlbmNlKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgICAgIGNhdEJhZy5hZGQoa3IpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIFRNb2RlbCB0TW9kZWwgPSAobmV3IFVkZGk0akhlbHBlcigpKS5uZXdUTW9kZWwod3NkbFVSTCk7Ci0gICAgICBpZiAoaXNVcGRhdGVfKQotICAgICAgICB0TW9kZWwuc2V0VE1vZGVsS2V5KHV1aWRLZXkpOwotICAgICAgdE1vZGVsLnNldE5hbWUobmFtZSk7ICAgICAgCi0gICAgICB0TW9kZWwuc2V0RGVzY3JpcHRpb25WZWN0b3IoZGVzY3JpcHRpb25WZWN0b3IpOwotICAgICAgdE1vZGVsLnNldElkZW50aWZpZXJCYWcoaWRCYWcpOwotICAgICAgdE1vZGVsLnNldENhdGVnb3J5QmFnKGNhdEJhZyk7Ci0gICAgICAKLSAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlXy5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgaWYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgICAgICAgcmVnRWxlbWVudC5wZXJmb3JtTG9naW4ocHVibGlzaFVSTCx1c2VySWQscGFzc3dvcmQpOwotICAgICAgVURESVByb3h5IHByb3h5ID0gcmVnRWxlbWVudC5nZXRQcm94eSgpOwotICAgICAgVmVjdG9yIHRNb2RlbFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIHRNb2RlbFZlY3Rvci5hZGQodE1vZGVsKTsKLSAgICAgIHRNb2RlbCA9IChUTW9kZWwpcHJveHkuc2F2ZV90TW9kZWwocmVnRWxlbWVudC5nZXRBdXRoSW5mb1N0cmluZygpLCB0TW9kZWxWZWN0b3IpLmdldFRNb2RlbFZlY3RvcigpLmdldCgwKTsKLSAgICAgIHJlZnJlc2hOb2RlKHRNb2RlbCk7Ci0gICAgICBpZiAoaXNVcGRhdGVfKSAgICAgIAotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fU0VSVklDRV9JTlRFUkZBQ0VfVVBEQVRFRCIsdE1vZGVsLmdldE5hbWVTdHJpbmcoKSkpOwotICAgICAgZWxzZQotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fU0VSVklDRV9JTlRFUkZBQ0VfUFVCTElTSEVEIix0TW9kZWwuZ2V0TmFtZVN0cmluZygpKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgY2F0Y2ggKFdTRExFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBoYW5kbGVVbmV4cGVjdGVkRXhjZXB0aW9uKHVkZGlQZXJzcGVjdGl2ZSxtZXNzYWdlUXVldWUsIldTRExFeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICBjYXRjaCAoVHJhbnNwb3J0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJUcmFuc3BvcnRFeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICBjYXRjaCAoVURESUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAJaWYoVURESUV4Y2VwdGlvbkhhbmRsZXIucmVxdWlyZXNSZXNldChlKSl7Ci0gICAgCQlSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZV8uZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAJCXJlZ0VsZW1lbnQuc2V0RGVmYXVsdHMoKTsKLSAgICAJfQotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0Q29udHJvbGxlcigpLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9VTkVYUEVDVEVEIikpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgiVURESUV4Y2VwdGlvbiIpOwotICAgIAltZXNzYWdlUXVldWUuYWRkTWVzc2FnZShlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih1ZGRpUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJNYWxmb3JtZWRVUkxFeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9jb25zdGFudHMvVURESUFjdGlvbklucHV0cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2NvbnN0YW50cy9VRERJQWN0aW9uSW5wdXRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0N2IyYjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2NvbnN0YW50cy9VRERJQWN0aW9uSW5wdXRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIFVERElBY3Rpb25JbnB1dHMKLXsKLSAgLy8gT3BlblJlZ2lzdHJ5QWN0aW9uCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFR0lTVFJZX05BTUUgPSAicmVnaXN0cnlOYW1lIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5RVUlSWV9VUkwgPSAiaW5xdWlyeVVSTCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBVQkxJU0hfVVJMID0gInB1Ymxpc2hVUkwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUdJU1RSQVRJT05fVVJMID0gInJlZ2lzdHJhdGlvblVSTCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENIRUNLX1VTRVJfREVGSU5FRF9DQVRFR09SSUVTID0gImNoZWNrVXNlckRlZmluZWRDYXRlZ29yaWVzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVURESV9VU0VSTkFNRSA9ICJ1ZGRpVXNlcm5hbWUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVRERJX1BBU1NXT1JEID0gInVkZGlQYXNzd29yZCI7Ci0KLSAgLy8gRml4ZWQgYW5kIHVzZXItZGVmaW5lZCBjYXRlZ29yaWVzCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENBVEVHT1JJRVNfRElSRUNUT1JZID0gImNhdGVnb3JpZXNEaXJlY3RvcnkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDQVRFR09SWV9UTU9ERUxfS0VZID0gImNhdGVnb3J5VE1vZGVsS2V5IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0FURUdPUllfRklMRU5BTUUgPSAiY2F0ZWdvcnlGaWxlTmFtZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVTRVJfREVGSU5FRF9DQVRFR09SSUVTID0gInVzZXJEZWZpbmVkQ2F0ZWdvcmllcyI7Ci0KLSAgLy8gRGlzY292ZXJ5IFVSTCB1c2UgdHlwZQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBESVNDT1ZFUllfVVJMX1RZUEUgPSAiYnVzaW5lc3NFbnRpdHkiOwotCi0gIC8vIFJlc3VsdHMgKE5PREVJRCkKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTk9ERUlEX1NFUlZJQ0VfSU5URVJGQUNFID0gIm5vZGVJZF9TZXJ2aWNlSW50ZXJmYWNlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTk9ERUlEX1NFUlZJQ0UgPSAibm9kZUlkX1NlcnZpY2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOT0RFSURfQlVTSU5FU1MgPSAibm9kZUlkX0J1c2luZXNzIjsKLQotICAvLyBSZWdGaW5kLi5BY3Rpb25zL1JlZ1B1Ymxpc2guLkFjdGlvbnMKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfT1ZFUlJJREVfQUREX1FVRVJZX05PREUgPSAib3ZlcnJpZGVBZGRRdWVyeU5vZGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9OQU1FID0gInF1ZXJ5TmFtZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lURU0gPSAicXVlcnlJdGVtIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUVVFUllfSVRFTV9RVUVSSUVTID0gLTE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFVRVJZX0lURU1fQlVTSU5FU1NFUyA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFVRVJZX0lURU1fU0VSVklDRVMgPSAxOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBRVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyA9IDI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFVRVJZX1NUWUxFX1NJTVBMRSA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFVRVJZX1NUWUxFX0FEVkFOQ0VEID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUVVFUllfU1RZTEVfVVVJRCA9IDI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX09XTkVEID0gImFkdmFuY2VkT3duZWQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCA9ICJhZHZhbmNlZFB1Ymxpc2hVUkwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQgPSAiYWR2YW5jZWRVc2VySWQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCA9ICJhZHZhbmNlZFBhc3N3b3JkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRV9MQU5HVUFHRSA9ICJhZHZhbmNlZE5hbWVMYW5ndWFnZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX05BTUUgPSAiYWR2YW5jZWROYW1lIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfSURFTlRJRklFUl9UWVBFID0gImFkdmFuY2VkSWRlbnRpZmllclR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX0tFWV9OQU1FID0gImFkdmFuY2VkSWRlbnRpZmllcktleU5hbWUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX0tFWV9WQUxVRSA9ICJhZHZhbmNlZElkZW50aWZpZXJLZXlWYWx1ZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX1RZUEUgPSAiYWR2YW5jZWRDYXRlZ29yeVR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9LRVlfTkFNRSA9ICJhZHZhbmNlZENhdGVnb3J5S2V5TmFtZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9WQUxVRSA9ICJhZHZhbmNlZENhdGVnb3J5S2V5VmFsdWUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9ESVNDT1ZFUllVUkwgPSAiYWR2YW5jZWREaXNjb3ZlcnlVUkwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9GSU5EUVVBTElGSUVSID0gImFkdmFuY2VkRmluZFF1YWxpZmllciI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NPUlRfQllfTkFNRSA9ICJhZHZhbmNlZFNvcnRCeU5hbWUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TT1JUX0JZX0RBVEUgPSAiYWR2YW5jZWRTb3J0QnlEYXRlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfTUFYX1NFQVJDSF9TRVQgPSAiYWR2YW5jZWRNYXhTZWFyY2hTZXQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBRVUVSWV9NQVhfU0VBUkNIX1NFVCA9IDEwMDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfTUFYX1JFU1VMVFMgPSAiYWR2YW5jZWRNYXhSZXN1bHRzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUVVFUllfTUFYX1JFU1VMVFMgPSAxMDsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9TVFlMRV9CVVNJTkVTU0VTID0gInF1ZXJ5U3R5bGVCdXNpbmVzc2VzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfU0lNUExFX0JVU0lORVNTX05BTUUgPSAic2ltcGxlQnVzaW5lc3NOYW1lIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfT1dORUQgPSAiYWR2YW5jZWRCdXNpbmVzc093bmVkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTkFNRVMgPSAiYWR2YW5jZWRCdXNpbmVzc05hbWVzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfSURFTlRJRklFUlMgPSAiYWR2YW5jZWRCdXNpbmVzc0lkZW50aWZpZXJzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfQ0FURUdPUklFUyA9ICJhZHZhbmNlZEJ1c2luZXNzQ2F0ZWdvcmllcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RJU0NPVkVSWVVSTFMgPSAiYWR2YW5jZWRCdXNpbmVzc0Rpc2NvdmVyeVVSTHMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19TRVJWSUNFX0lOVEVSRkFDRVMgPSAiYWR2YW5jZWRCdXNpbmVzc1NlcnZpY2VJbnRlcmZhY2VzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfU0VSVklDRV9JTlRFUkZBQ0VTX0NPUFkgPSAiYWR2YW5jZWRCdXNpbmVzc1NlcnZpY2VJbnRlcmZhY2VzQ29weSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX1RNT0RFTEJBRyA9ICJhZHZhbmNlZEJ1c2luZXNzVE1vZGVsQmFnIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRklORFFVQUxJRklFUlMgPSAiYWR2YW5jZWRCdXNpbmVzc0ZpbmRRdWFsaWZpZXJzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTUFYX1NFQVJDSF9TRVQgPSAiYWR2YW5jZWRCdXNpbmVzc01heFNlYXJjaFNldCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9SRVNVTFRTID0gImFkdmFuY2VkQnVzaW5lc3NNYXhSZXN1bHRzIjsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9TVFlMRV9TRVJWSUNFUyA9ICJxdWVyeVN0eWxlU2VydmljZXMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9OQU1FID0gInNpbXBsZVNlcnZpY2VOYW1lIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9PV05FRCA9ICJhZHZhbmNlZFNlcnZpY2VPd25lZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1MgPSAiYWR2YW5jZWRTZXJ2aWNlQnVzaW5lc3MiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0JVU0lORVNTX0NPUFkgPSAiYWR2YW5jZWRTZXJ2aWNlQnVzaW5lc3NDb3B5IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX1BST1ZJREVSID0gImFkdmFuY2VkU2VydmljZVNlcnZpY2VQcm92aWRlciI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTkFNRVMgPSAiYWR2YW5jZWRTZXJ2aWNlTmFtZXMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0NBVEVHT1JJRVMgPSAiYWR2YW5jZWRTZXJ2aWNlQ2F0ZWdvcmllcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTID0gImFkdmFuY2VkU2VydmljZVNlcnZpY2VJbnRlcmZhY2VzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVNfQ09QWSA9ICJhZHZhbmNlZFNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlc0NvcHkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1RNT0RFTCA9ICJhZHZhbmNlZFNlcnZpY2VUTW9kZWwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1RNT0RFTEJBRyA9ICJhZHZhbmNlZFNlcnZpY2VUTW9kZWxCYWciOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0ZJTkRRVUFMSUZJRVJTID0gImFkdmFuY2VkU2VydmljZUZpbmRRdWFsaWZpZXJzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9NQVhfU0VBUkNIX1NFVCA9ICJhZHZhbmNlZFNlcnZpY2VNYXhTZWFyY2hTZXQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX01BWF9SRVNVTFRTID0gImFkdmFuY2VkU2VydmljZU1heFJlc3VsdHMiOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX1NUWUxFX1NFUlZJQ0VfSU5URVJGQUNFUyA9ICJxdWVyeVN0eWxlU2VydmljZUludGVyZmFjZXMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSA9ICJzaW1wbGVTZXJ2aWNlSW50ZXJmYWNlTmFtZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1VTRV9TRVJWSUNFID0gImFkdmFuY2VkVXNlU2VydmljZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0UgPSAiYWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlU2VydmljZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0VfQ09QWSA9ICJhZHZhbmNlZFNlcnZpY2VJbnRlcmZhY2VTZXJ2aWNlQ29weSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0JVU0lORVNTX1NFUlZJQ0UgPSAiYWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlQnVzaW5lc3NTZXJ2aWNlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfT1dORUQgPSAiYWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlT3duZWQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FID0gImFkdmFuY2VkU2VydmljZUludGVyZmFjZU5hbWUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9JREVOVElGSUVSUyA9ICJhZHZhbmNlZFNlcnZpY2VJbnRlcmZhY2VJZGVudGlmaWVycyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0NBVEVHT1JJRVMgPSAiYWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlQ2F0ZWdvcmllcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0ZJTkRRVUFMSUZJRVJTID0gImFkdmFuY2VkU2VydmljZUludGVyZmFjZUZpbmRRdWFsaWZpZXJzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTUFYX1NFQVJDSF9TRVQgPSAiYWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlTWF4U2VhcmNoU2V0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTUFYX1JFU1VMVFMgPSAiYWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlTWF4UmVzdWx0cyI7Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9SRUdJU1RSWV9OQU1FID0gImFkdmFuY2VkUmVnaXN0cnlOYW1lIjsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9VVUlEX0tFWSA9ICJ1dWlkS2V5IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVkgPSAidXVpZEJ1c2luZXNzS2V5IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfVVVJRF9TRVJWSUNFX0tFWSA9ICJ1dWlkU2VydmljZUtleSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZID0gInV1aWRTZXJ2aWNlSW50ZXJmYWNlS2V5IjsKLSAgCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX09VVFBVVF9TQVZFRF9UTU9ERUwgPSAic2F2ZWRUTW9kZWwiOwotCi0gIC8vIFN1YiBRdWVyaWVzOgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVUJRVUVSSUVTX1BST1BFUlRJRVMgPSAic3ViUXVlcmllc1Byb3BlcnRpZXMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVUJRVUVSWV9LRVkgPSAic3ViUXVlcnlLZXkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBORVdfU1VCUVVFUllfSU5JVElBVEVEID0gIm5ld1N1YlF1ZXJ5SW5pdGlhdGVkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkVXX1NVQlFVRVJZX1FVRVJZX0lURU0gPSAibmV3U3ViUXVlcnlRdWVyeUl0ZW0iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRUxFQ1RFRF9OT0RFSURTID0gInNlbGVjdGVkTm9kZUlkcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNVQlFVRVJZX0xJU1RfS0VZID0gInN1YlF1ZXJ5TGlzdEtleSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNVQlFVRVJZX0xJU1RfSVRFTUlEID0gInN1YlF1ZXJ5TGlzdEl0ZW1JZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNIT1dfUkVTVUxUU19UQVJHRVQgPSAic2hvd1Jlc3VsdHNUYXJnZXQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVUJRVUVSWV9HRVQgPSAic3ViUXVlcnlHZXQiOwotCi0gIC8vIFJlZ1B1Ymxpc2guLkFjdGlvbnMgKHNvbWUgY29uc3RhbnRzIGZyb20gdGhlIFJlZ0ZpbmQuLi5BY3Rpb25zIHdpbGwgYmUgcmV1c2VkLgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9TSU1QTEVfQlVTSU5FU1NfREVTQ1JJUFRJT04gPSAic2ltcGxlQnVzaW5lc3NEZXNjcmlwdGlvbiI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT05fTEFOR1VBR0UgPSAiYWR2YW5jZWREZXNjcmlwdGlvbkxhbmd1YWdlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT04gPSAiYWR2YW5jZWREZXNjcmlwdGlvbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RFU0NSSVBUSU9OUyA9ICJhZHZhbmNlZEJ1c2luZXNzRGVzY3JpcHRpb25zIjsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9XU0RMX1VSTCA9ICJ3c2RsVVJMIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMID0gInNpbXBsZVNlcnZpY2VJbnRlcmZhY2VXU0RMVVJMIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfSU5URVJGQUNFX0RFU0NSSVBUSU9OID0gInNpbXBsZVNlcnZpY2VJbnRlcmZhY2VEZXNjcmlwdGlvbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMID0gImFkdmFuY2VkU2VydmljZUludGVyZmFjZVdTRExVUkwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTlMgPSAiYWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlRGVzY3JpcHRpb25zIjsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTUyA9ICJzaW1wbGVTZXJ2aWNlQnVzaW5lc3MiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTU19DT1BZID0gInNpbXBsZVNlcnZpY2VCdXNpbmVzc0NvcHkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9TRVJWSUNFX1BST1ZJREVSID0gInNpbXBsZVNlcnZpY2VTZXJ2aWNlUHJvdmlkZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9XU0RMX1VSTCA9ICJzaW1wbGVTZXJ2aWNlV1NETFVSTCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0RFU0NSSVBUSU9OID0gInNpbXBsZVNlcnZpY2VEZXNjcmlwdGlvbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfV1NETF9VUkwgPSAiYWR2YW5jZWRTZXJ2aWNlV1NETFVSTCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfREVTQ1JJUFRJT05TID0gImFkdmFuY2VkU2VydmljZURlc2NyaXB0aW9ucyI7Ci0KLSAgLy8gV1NETCBCcm93c2VyCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST0pFQ1QgPSAicHJvamVjdCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfVFlQRSA9ICJ3c2RsVHlwZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdTRExfVFlQRV9TRVJWSUNFX0lOVEVSRkFDRSA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdTRExfVFlQRV9TRVJWSUNFID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfV0VCUFJPSkVDVF9XU0RMX1VSTCA9ICJ3ZWJQcm9qZWN0V1NETFVSTCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX0ZBVk9SSVRFX1dTRExfVVJMID0gImZhdm9yaXRlV1NETFVSTCI7Ci0KLSAgLy8gRGV0YWlscwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMQVRFU1RfT0JKRUNUID0gImxhdGVzdE9iamVjdCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERJU0NPVkVSWVVSTF9NT0RJRklFRCA9ICJkaXNjb3ZlcnlVUkxNb2RpZmllZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERJU0NPVkVSWVVSTF9WSUVXSUQgPSAiZGlzY292ZXJ5VVJMVmlld0lkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9NT0RJRklFRCA9ICJuYW1lTW9kaWZpZWQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FX1ZJRVdJRCA9ICJidXNpbmVzc1ZpZXdJZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFU0NSSVBUSU9OX01PRElGSUVEID0gImRlc2NyaXB0aW9uTW9kaWZpZWQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERVNDUklQVElPTl9WSUVXSUQgPSAiZGVzY3JpcHRpb25WaWV3SWQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJREVOVElGSUVSX01PRElGSUVEID0gImlkZW50aWZpZXJNb2RpZmllZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElERU5USUZJRVJfVklFV0lEID0gImlkZW50aWZpZXJWaWV3SWQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDQVRFR09SWV9NT0RJRklFRCA9ICJjYXRlZ29yeU1vZGlmaWVkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0FURUdPUllfVklFV0lEID0gImNhdGVnb3J5Vmlld0lkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NETF9VUkxfTU9ESUZJRUQgPSAid3NkbFVSTE1vZGlmaWVkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFVCTElTSF9BQ1RJT04gPSAicHVibGlzaEFjdGlvbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExBVEVTVF9CVVNJTkVTUyA9ICJsYXRlc3RCdXNpbmVzcyI7Ci0KLSAgLy8gUmVmcmVzaCBhY3Rpb24KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVGUkVTSF9OT0RFID0gInJlZnJlc2hOb2RlIjsKLQotICAvLyBNYW5hZ2UgUHVibGlzaGVyQXNzZXJ0aW9ucwotICAvLyAiVG8iIG1lYW5zIGZyb20gYW5vdGhlciBidXNpbmVzcyB0byBteSBvd25pbmcgYnVzaW5lc3MKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElSRUNUSU9OX1RPID0gMDsKLSAgLy8gIkZyb20iIG1lYW5zIGZyb20gbXkgb3duaW5nIGJ1c2luZXNzIHRvIGFub3RoZXIgYnVzaW5lc3MKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElSRUNUSU9OX0ZST00gPSAxOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQVUJMSVNIRVJfQVNTRVJUSU9OU19WSUVXSUQgPSAicHVibGlzaGVyQXNzZXJ0aW9uc1ZpZXdJZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBVQkxJU0hFUl9BU1NFUlRJT05TX1NFTEVDVEVEX0JVU19JRCA9ICJwdWJsaXNoZXJBc3NlcnRpb25zU2VsZWN0ZWRCdXNJRCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBVQkxJU0hFUl9BU1NFUlRJT05TX0RJUkVDVElPTiA9ICJwdWJsaXNoZXJBc3NlcnRpb25zRGlyZWN0aW9uIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQUREX1BVQkxJU0hFUl9BU1NFUlRJT05TID0gInF1ZXJ5SW5wdXRBZGRQdWJsaXNoZXJBc3NlcnRpb25zIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfQUREX1BVQkxJU0hFUl9BU1NFUlRJT05TX0NPUFkgPSAicXVlcnlJbnB1dEFkZFB1Ymxpc2hlckFzc2VydGlvbnNDb3B5IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfSU5QVVRfRVhJU1RJTkdfUFVCTElTSEVSX0FTU0VSVElPTlMgPSAicXVlcnlJbnB1dEV4aXN0aW5nUHVibGlzaGVyQXNzZXJ0aW9ucyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBVQkxJU0hFUl9BU1NFUlRJT05TX1RZUEUgPSAicHVibGlzaGVyQXNzZXJ0aW9uc1R5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQVUJMSVNIRVJfQVNTRVJUSU9OU19UWVBFX1BBUkVOVF9DSElMRCA9ICJwYXJlbnQtY2hpbGQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQVUJMSVNIRVJfQVNTRVJUSU9OU19UWVBFX1BFRVJfVE9fUEVFUiA9ICJwZWVyLXBlZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQVUJMSVNIRVJfQVNTRVJUSU9OU19UWVBFX0lERU5USVRZID0gImlkZW50aXR5IjsKLQotICAvLyBNYW5hZ2UgUmVmZXJlbmNlZCBTZXJ2aWNlcwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9JTlBVVF9SRUZFUkVOQ0VEX1NFUlZJQ0VTID0gInJlZmVyZW5jZWRTZXJ2aWNlcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX0lOUFVUX1NFUlZJQ0VTID0gInNlcnZpY2VzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUFOQUdFX1JFRkVSRU5DRURfU0VSVklDRVNfT1BFUkFUSU9OID0gIm1hbmFnZWRSZWZlcmVuY2VkU2VydmljZXNPcGVyYXRpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQU5BR0VfUkVGRVJFTkNFRF9TRVJWSUNFU19PUEVSQVRJT05fQUREID0gMDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFOQUdFX1JFRkVSRU5DRURfU0VSVklDRVNfT1BFUkFUSU9OX1JFTU9WRSA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFRkVSRU5DRURfU0VSVklDRV9TRUxFQ1RfU1RBVEUgPSAicmVmZXJlbmNlZFNlcnZpY2VTZWxlY3RTdGF0ZSI7Ci0gIAotICAvLyBSZXNpemVVRERJRnJhbWVBY3Rpb24KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5UID0gImZyYW1lc2V0Q29sc1BlcnNwZWN0aXZlQ29udGVudCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIgPSAiZnJhbWVzZXRSb3dzQWN0aW9uc0NvbnRhaW5lciI7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvY29uc3RhbnRzL1VERElGcmFtZU5hbWVzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvY29uc3RhbnRzL1VERElGcmFtZU5hbWVzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZDBiNGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2NvbnN0YW50cy9VRERJRnJhbWVOYW1lcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzOwotCi1wdWJsaWMgY2xhc3MgVURESUZyYW1lTmFtZXMKLXsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTkFWSUdBVE9SX0NPTlRBSU5FUiA9ICJ1ZGRpX25hdmlnYXRvcl9jb250YWluZXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBOQVZJR0FUT1JfVE9PTEJBUiA9ICJ1ZGRpX25hdmlnYXRvcl90b29sYmFyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTkFWSUdBVE9SX0NPTlRFTlQgPSAidWRkaV9uYXZpZ2F0b3JfY29udGVudCI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIEFDVElPTlNfQ09OVEFJTkVSID0gInVkZGlfYWN0aW9uc19jb250YWluZXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QRVJUSUVTX0NPTlRBSU5FUiA9ICJ1ZGRpX3Byb3BlcnRpZXNfY29udGFpbmVyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUEVSVElFU19UT09MQkFSID0gInVkZGlfcHJvcGVydGllc190b29sYmFyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJPUEVSVElFU19DT05URU5UID0gInVkZGlfcHJvcGVydGllc19jb250ZW50IjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgU1RBVFVTX0NPTlRBSU5FUiA9ICJ1ZGRpX3N0YXR1c19jb250YWluZXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBTVEFUVVNfVE9PTEJBUiA9ICJ1ZGRpX3N0YXR1c190b29sYmFyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgU1RBVFVTX0NPTlRFTlQgPSAidWRkaV9zdGF0dXNfY29udGVudCI7Ci0KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgQ0FURUdPUklFU19XT1JLQVJFQSA9ICJjYXRlZ29yaWVzX3dvcmthcmVhIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgQ0FURUdPUklFU19UT09MQkFSID0gImNhdGVnb3JpZXNfdG9vbGJhciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIENBVEVHT1JJRVNfQ09OVEVOVCA9ICJjYXRlZ29yaWVzX2NvbnRlbnQiOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2NvbnN0YW50cy9VRERJTW9kZWxDb25zdGFudHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9jb25zdGFudHMvVURESU1vZGVsQ29uc3RhbnRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2M5YTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2NvbnN0YW50cy9VRERJTW9kZWxDb25zdGFudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIFVERElNb2RlbENvbnN0YW50cwotewotICAvLyBSZWdpc3RyaWVzIHVuZGVyIFVERElNYWluLgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUxfUkVHSVNUUklFUyA9ICJyZWdpc3RyaWVzIjsKLQotICAvLyBFeGVjdXRlZCBRdWVyaWVzIGZvbGRlciB1bmRlciBhIHJlZ2lzdHJ5LgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUxfUVVFUklFU19QQVJFTlQgPSAicXVlcmllc1BhcmVudCI7Ci0KLSAgLy8gUHVibGlzaGVkIEJ1c2luZXNzZXMgZm9sZGVyIHVuZGVyIGEgcmVnaXN0cnkuCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFTF9QVUJMSVNIRURfQlVTSU5FU1NFU19QQVJFTlQgPSAicHVibGlzaGVkQnVzaW5lc3Nlc1BhcmVudCI7Ci0KLSAgLy8gUHVibGlzaGVkIFNlcnZpY2VzIGZvbGRlciB1bmRlciBhIHJlZ2lzdHJ5LgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUxfUFVCTElTSEVEX1NFUlZJQ0VTX1BBUkVOVCA9ICJwdWJsaXNoZWRTZXJ2aWNlc1BhcmVudCI7Ci0KLSAgLy8gUHVibGlzaGVkIFNlcnZpY2UgaW50ZXJmYWNlcyBmb2xkZXIgdW5kZXIgYSByZWdpc3RyeS4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVMX1BVQkxJU0hFRF9TRVJWSUNFX0lOVEVSRkFDRVNfUEFSRU5UID0gInB1Ymxpc2hlZFNlcnZpY2VJbnRlcmZhY2VzUGFyZW50IjsKLQotICAvLyBRdWVyaWVzIHVuZGVyIHRoZSBRdWVyaWVzIGZvbGRlci4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVMX1FVRVJJRVMgPSAicXVlcmllcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElOSVRJQUxfUkVTVUxUUyA9ICJpbml0aWFsUmVzdWx0cyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX1RZUEUgPSAicXVlcnlUeXBlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1VCUVVFUllfVFJBTlNGRVJfVEFSR0VUID0gInN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQiOwotCi0gIC8vIE9iamVjdHMgdW5kZXIgYSBRdWVyeSBub2RlLgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUxfUVVFUllfUkVTVUxUUyA9ICJxdWVyeVJlc3VsdHMiOwotCi0gIC8vIENhdGVnb3JpZXMKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVMX1NVQkNBVEVHT1JJRVMgPSAic3ViQ2F0ZWdvcmllcyI7Ci0KLSAgLy8gUHVibGlzaGVkIGl0ZW1zIGluc2lkZSB0aGUgUHVibGlzaGVkIGl0ZW1zIGZvbGRlci4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVMX1BVQkxJU0hFRF9JVEVNUyA9ICJwdWJsaXNoZWRJdGVtcyI7Ci0KLSAgLy8gQnVzaW5lc3NlcwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJU19CVVNJTkVTU19PV05FRCA9ICJpc0J1c2luZXNzT3duZWQiOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9BYnN0cmFjdFVERElFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL0Fic3RyYWN0VURESUVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNiNWQwMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL0Fic3RyYWN0VURESUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLk1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFVERElFbGVtZW50IGV4dGVuZHMgVHJlZUVsZW1lbnQKLXsKLSAgcHVibGljIEFic3RyYWN0VURESUVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsKQotICB7Ci0gICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFRyZWVFbGVtZW50IGdldFBhcmVudEVsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIGdldFBhcmVudEVsZW1lbnQodGhpcyk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgVHJlZUVsZW1lbnQgZ2V0UGFyZW50RWxlbWVudChUcmVlRWxlbWVudCBjaGlsZCkKLSAgewotICAgIEVudW1lcmF0aW9uIGUgPSBjaGlsZC5nZXRFbGVtZW50cyhNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgIGlmIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgcmV0dXJuIChUcmVlRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgUmVnaXN0cnlFbGVtZW50IGdldFJlZ2lzdHJ5RWxlbWVudCgpCi0gIHsKLSAgICBpZiAodGhpcyBpbnN0YW5jZW9mIFJlZ2lzdHJ5RWxlbWVudCkKLSAgICAgIHJldHVybiAoUmVnaXN0cnlFbGVtZW50KXRoaXM7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFRyZWVFbGVtZW50IGNoaWxkRWxlbWVudCA9IHRoaXM7Ci0gICAgICBUcmVlRWxlbWVudCBwYXJlbnRFbGVtZW50ID0gZ2V0UGFyZW50RWxlbWVudChjaGlsZEVsZW1lbnQpOwotICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQgIT0gbnVsbCAmJiBwYXJlbnRFbGVtZW50ICE9IGNoaWxkRWxlbWVudCkKLSAgICAgIHsKLSAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBSZWdpc3RyeUVsZW1lbnQpCi0gICAgICAgICAgcmV0dXJuIChSZWdpc3RyeUVsZW1lbnQpcGFyZW50RWxlbWVudDsKLSAgICAgICAgY2hpbGRFbGVtZW50ID0gcGFyZW50RWxlbWVudDsKLSAgICAgICAgcGFyZW50RWxlbWVudCA9IGdldFBhcmVudEVsZW1lbnQoY2hpbGRFbGVtZW50KTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9CdXNpbmVzc0VsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvQnVzaW5lc3NFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZTYxM2QuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9CdXNpbmVzc0VsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdE1hbmFnZXI7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLQotcHVibGljIGNsYXNzIEJ1c2luZXNzRWxlbWVudCBleHRlbmRzIEFic3RyYWN0VURESUVsZW1lbnQKLXsKLSAgcHJpdmF0ZSBCdXNpbmVzc0VudGl0eSBiZV87Ci0gIHByaXZhdGUgTGlzdE1hbmFnZXIgcHVibGlzaGVyQXNzZXJ0aW9uc187Ci0gIAotICBwdWJsaWMgQnVzaW5lc3NFbGVtZW50KEJ1c2luZXNzRW50aXR5IGJlLE1vZGVsIG1vZGVsKQotICB7Ci0gICAgc3VwZXIoYmUuZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKSxtb2RlbCk7Ci0gICAgYmVfID0gYmU7Ci0gICAgc2V0S2V5KGJlXy5nZXRCdXNpbmVzc0tleSgpKTsKLSAgICBwdWJsaXNoZXJBc3NlcnRpb25zXyA9IG51bGw7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgQnVzaW5lc3NFbnRpdHkgZ2V0QnVzaW5lc3NFbnRpdHkoKQotICB7Ci0gICAgcmV0dXJuIGJlXzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0QnVzaW5lc3NFbnRpdHkoQnVzaW5lc3NFbnRpdHkgYmUpCi0gIHsKLSAgICBiZV8gPSBiZTsKLSAgICBzZXRLZXkoYmVfLmdldEJ1c2luZXNzS2V5KCkpOwotICB9Ci0KLSAgcHVibGljIExpc3RNYW5hZ2VyIGdldFB1Ymxpc2hlckFzc2VydGlvbnMoKQotICB7Ci0gICAgcmV0dXJuIHB1Ymxpc2hlckFzc2VydGlvbnNfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0UHVibGlzaGVyQXNzZXJ0aW9ucyhMaXN0TWFuYWdlciBsaXN0TWFuYWdlcikKLSAgewotICAgIHB1Ymxpc2hlckFzc2VydGlvbnNfID0gbGlzdE1hbmFnZXI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvQ2F0ZWdvcnlFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL0NhdGVnb3J5RWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDdmM2ExLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvQ2F0ZWdvcnlFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuS2V5ZWRSZWZlcmVuY2U7Ci0KLXB1YmxpYyBjbGFzcyBDYXRlZ29yeUVsZW1lbnQgZXh0ZW5kcyBBYnN0cmFjdFVERElFbGVtZW50Ci17Ci0gIHByaXZhdGUgS2V5ZWRSZWZlcmVuY2UgY2F0ZWdvcnlfOwotCi0gIHB1YmxpYyBDYXRlZ29yeUVsZW1lbnQoU3RyaW5nIG5hbWUsS2V5ZWRSZWZlcmVuY2UgY2F0ZWdvcnksTW9kZWwgbW9kZWwpCi0gIHsKLSAgICBzdXBlcihuYW1lLG1vZGVsKTsKLSAgICBjYXRlZ29yeV8gPSBjYXRlZ29yeTsKLSAgICBzYXZlQ2F0ZWdvcnlQcm9wZXJ0aWVzKCk7Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIHZvaWQgc2F2ZUNhdGVnb3J5UHJvcGVydGllcygpCi0gIHsKLSAgICBpZiAoY2F0ZWdvcnlfICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGtleU5hbWUgPSBjYXRlZ29yeV8uZ2V0S2V5TmFtZSgpOwotICAgICAgaWYgKGtleU5hbWUgIT0gbnVsbCkKLSAgICAgICAgc2V0TmFtZShrZXlOYW1lKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgS2V5ZWRSZWZlcmVuY2UgZ2V0Q2F0ZWdvcnkoKQotICB7Ci0gICAgcmV0dXJuIGNhdGVnb3J5XzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0TmFtZUZvclRyZWUoKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIG5hbWVGb3JUcmVlID0gbmV3IFN0cmluZ0J1ZmZlcigiWyIpOwotICAgIG5hbWVGb3JUcmVlLmFwcGVuZChjYXRlZ29yeV8uZ2V0S2V5VmFsdWUoKSkuYXBwZW5kKCJdICIpLmFwcGVuZChjYXRlZ29yeV8uZ2V0S2V5TmFtZSgpKTsKLSAgICByZXR1cm4gbmFtZUZvclRyZWUudG9TdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHVwZGF0ZUNhdGVnb3J5KFN0cmluZyBrZXlOYW1lLFN0cmluZyBrZXlWYWx1ZSxTdHJpbmcgdE1vZGVsS2V5KQotICB7Ci0gICAgY2F0ZWdvcnlfLnNldEtleU5hbWUoa2V5TmFtZSk7Ci0gICAgY2F0ZWdvcnlfLnNldEtleVZhbHVlKGtleVZhbHVlKTsKLSAgICBjYXRlZ29yeV8uc2V0VE1vZGVsS2V5KHRNb2RlbEtleSk7Ci0gICAgc2F2ZUNhdGVnb3J5UHJvcGVydGllcygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL0NhdGVnb3J5TW9kZWwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvQ2F0ZWdvcnlNb2RlbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjk2NjU2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvQ2F0ZWdvcnlNb2RlbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTY5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWw7Ci0KLWltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkJhc2ljTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5IVE1MVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5DYXRlZ29yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215OwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5LZXllZFJlZmVyZW5jZTsKLQotcHVibGljIGNsYXNzIENhdGVnb3J5TW9kZWwgZXh0ZW5kcyBCYXNpY01vZGVsCi17Ci0gIHByaXZhdGUgU2VydmxldENvbnRleHQgYXBwbGljYXRpb25fOwotICBwcml2YXRlIFN0cmluZyBkZWZhdWx0RGF0YUZpbGVfOwotICBwcml2YXRlIEhhc2h0YWJsZSBjYXRlZ29yeUVsZW1lbnRzXzsKLSAgcHJpdmF0ZSBTdHJpbmcgY29sdW1uRGVsaW1pdGVyXzsKLSAgcHJpdmF0ZSBTdHJpbmcgc3RyaW5nRGVsaW1pdGVyXzsKLSAgcHJpdmF0ZSBTdHJpbmcgY2F0ZWdvcnlLZXlfOwotICBwcml2YXRlIGJvb2xlYW4gY2hlY2tlZF87Ci0gIHByaXZhdGUgU3RyaW5nIGRpc3BsYXlOYW1lXzsKLSAgcHJpdmF0ZSBTdHJpbmcgdE1vZGVsS2V5XzsKLSAgcHJpdmF0ZSBUaHJvd2FibGUgZXJyb3JFeGNlcHRpb25fOwotICAKLSAgLy8gUmV0dXJuIGNvZGVzIGZvciBsb2FkaW5nIGFuZCBzYXZpbmcgY2F0ZWdvcnkgZGF0YS4KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIE9QRVJBVElPTl9TVUNDRVNTRlVMID0gMHgwMDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIEVSUk9SX0ZJTEUgPSAweDAxOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgRVJST1JfU0VDVVJJVFkgPSAweDAyOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgRVJST1JfRU5DT0RJTkcgPSAweDAzOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgRVJST1JfSU8gPSAweDA0OwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgRVJST1JfQ0FURUdPUllfS0VZID0gMHgwNTsKLSAgCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIGRlZmF1bHRDb2x1bW5EZWxpbWl0ZXJfID0gIiMiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBkZWZhdWx0U3RyaW5nRGVsaW1pdGVyXyA9ICJcIiI7Ci0gIAotICBwdWJsaWMgQ2F0ZWdvcnlNb2RlbCgpCi0gIHsKLSAgICBzdXBlcigiY2F0ZWdvcmllcyIpOwotICAgIGFwcGxpY2F0aW9uXyA9IG51bGw7Ci0JZGVmYXVsdERhdGFGaWxlXyA9IG51bGw7Ci0gICAgY29sdW1uRGVsaW1pdGVyXyA9IGRlZmF1bHRDb2x1bW5EZWxpbWl0ZXJfOwotICAgIHN0cmluZ0RlbGltaXRlcl8gPSBkZWZhdWx0U3RyaW5nRGVsaW1pdGVyXzsKLSAgICBjYXRlZ29yeUVsZW1lbnRzXyA9IG51bGw7Ci0gICAgY2F0ZWdvcnlLZXlfID0gbnVsbDsKLSAgICBjaGVja2VkXyA9IHRydWU7Ci0gICAgZGlzcGxheU5hbWVfID0gbnVsbDsKLSAgICB0TW9kZWxLZXlfID0gbnVsbDsKLSAgICBlcnJvckV4Y2VwdGlvbl8gPSBudWxsOwotICB9Ci0gIAotICAvKioKLSAgICogQ2F0ZWdvcnlNb2RlbHMgbG9hZCB0aGVpciBkYXRhIGZyb20gdGhlIGZpbGUgbmFtZWQgdmlhIHRoZQotICAgKiB7QGxpbmsgI3NldERlZmF1bHREYXRhRmlsZShTdHJpbmcpfSBtZXRob2QuIFRoZSBkYXRhIGZpbGUKLSAgICogbmFtZSBpcyBpbnRlcnByZXR0ZWQgYXMgZWl0aGVyIGEgcGh5c2ljYWwgcGF0aG5hbWUgb3IgYQotICAgKiBjb250ZXh0LXJvb3QgcmVsYXRpdmUgcGF0aG5hbWUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCi0gICAqIHNlcnZsZXQgY29udGV4dCBvciAiYXBwbGljYXRpb24iIGlzIG51bGwgKGRlZmF1bHQpIG9yIG5vdC4KLSAgICogQHBhcmFtIGFwcGxpY2F0aW9uIFRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LCBudWxsIGJ5IGRlZmF1bHQuCi0gICAqIFZhbHVlIGNhbiBiZSB0aGUgU2VydmxldENvbnRleHQgb2YgdGhlIFdTRXhwbG9yZXIgb3IgbnVsbC4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldFNlcnZsZXRDb250ZXh0KFNlcnZsZXRDb250ZXh0IGFwcGxpY2F0aW9uKQotICB7Ci0JYXBwbGljYXRpb25fID0gYXBwbGljYXRpb247Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldERlZmF1bHREYXRhRmlsZShTdHJpbmcgZGVmYXVsdERhdGFGaWxlKQotICB7Ci0gICAgZGVmYXVsdERhdGFGaWxlXyA9IGRlZmF1bHREYXRhRmlsZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldENhdGVnb3J5S2V5KFN0cmluZyBjYXRlZ29yeUtleSkKLSAgewotICAgIGNhdGVnb3J5S2V5XyA9IGNhdGVnb3J5S2V5OwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldENhdGVnb3J5S2V5KCkKLSAgewotICAgIHJldHVybiBjYXRlZ29yeUtleV87Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldENvbHVtbkRlbGltaXRlcihTdHJpbmcgY29sdW1uRGVsaW1pdGVyKQotICB7Ci0gICAgY29sdW1uRGVsaW1pdGVyXyA9IGNvbHVtbkRlbGltaXRlcjsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRDb2x1bW5EZWxpbWl0ZXIoKQotICB7Ci0gICAgcmV0dXJuIGNvbHVtbkRlbGltaXRlcl87Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldFN0cmluZ0RlbGltaXRlcihTdHJpbmcgc3RyaW5nRGVsaW1pdGVyKQotICB7Ci0gICAgc3RyaW5nRGVsaW1pdGVyXyA9IHN0cmluZ0RlbGltaXRlcjsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTdHJpbmdEZWxpbWl0ZXIoKQotICB7Ci0gICAgcmV0dXJuIHN0cmluZ0RlbGltaXRlcl87Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGVuYWJsZUNoZWNrZWQoYm9vbGVhbiBpc0NoZWNrZWQpCi0gIHsKLSAgICBjaGVja2VkXyA9IGlzQ2hlY2tlZDsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNDaGVja2VkKCkKLSAgewotICAgIHJldHVybiBjaGVja2VkXzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0RGlzcGxheU5hbWUoU3RyaW5nIGRpc3BsYXlOYW1lKQotICB7Ci0gICAgZGlzcGxheU5hbWVfID0gZGlzcGxheU5hbWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0RGlzcGxheU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGRpc3BsYXlOYW1lXzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0VE1vZGVsS2V5KFN0cmluZyB0TW9kZWxLZXkpCi0gIHsKLSAgICB0TW9kZWxLZXlfID0gdE1vZGVsS2V5OwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRNb2RlbEtleSgpCi0gIHsKLSAgICByZXR1cm4gdE1vZGVsS2V5XzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNEYXRhTG9hZGVkKCkKLSAgewotICAgIHJldHVybiAoY2F0ZWdvcnlFbGVtZW50c18gIT0gbnVsbCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBUaHJvd2FibGUgZ2V0RXJyb3JFeGNlcHRpb24oKQotICB7Ci0gICAgcmV0dXJuIGVycm9yRXhjZXB0aW9uXzsKLSAgfQotICAKLSAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGlzRW5jbG9zZWRJblF1b3RlcyhTdHJpbmcgc3RyaW5nKQotICB7Ci0gICAgcmV0dXJuIHN0cmluZy5zdGFydHNXaXRoKCJcIiIpICYmIHN0cmluZy5lbmRzV2l0aCgiXCIiKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGxvYWRGcm9tVGF4b25vbXkoVGF4b25vbXkgdGF4b25vbXkpCi0gIHsKLSAgICBTdHJpbmcgbmFtZSA9IHRheG9ub215LmdldE5hbWUoKTsKLSAgICBDYXRlZ29yeUVsZW1lbnQgcm9vdCA9IG5ldyBDYXRlZ29yeUVsZW1lbnQobmFtZSxudWxsLHRoaXMpOwotICAgIHNldFJvb3RFbGVtZW50KHJvb3QpOwotICAgIGNhdGVnb3J5RWxlbWVudHNfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGZvciAoSXRlcmF0b3IgaXQgPSB0YXhvbm9teS5nZXRDYXRlZ29yeSgpLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgewotICAgICAgYWRkQ2F0ZWdvcnkocm9vdCwgKENhdGVnb3J5KWl0Lm5leHQoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGFkZENhdGVnb3J5KENhdGVnb3J5RWxlbWVudCBwYXJlbnQsIENhdGVnb3J5IGNhdGVnb3J5KQotICB7Ci0gICAgU3RyaW5nIGtleU5hbWUgPSBjYXRlZ29yeS5nZXROYW1lKCk7Ci0gICAgU3RyaW5nIGtleVZhbHVlID0gY2F0ZWdvcnkuZ2V0Q29kZSgpOwotICAgIENhdGVnb3J5RWxlbWVudCBjaGlsZCA9IG5ldyBDYXRlZ29yeUVsZW1lbnQoa2V5TmFtZSxuZXcgS2V5ZWRSZWZlcmVuY2Uoa2V5TmFtZSxrZXlWYWx1ZSx0TW9kZWxLZXlfKSx0aGlzKTsKLSAgICBwYXJlbnQuY29ubmVjdChjaGlsZCxVRERJTW9kZWxDb25zdGFudHMuUkVMX1NVQkNBVEVHT1JJRVMsTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICBjYXRlZ29yeUVsZW1lbnRzXy5wdXQoa2V5VmFsdWUsIGNoaWxkKTsgICAKLSAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gY2F0ZWdvcnkuZ2V0Q2F0ZWdvcnkoKS5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIGFkZENhdGVnb3J5KGNoaWxkLCAoQ2F0ZWdvcnkpaXQubmV4dCgpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYnl0ZSBsb2FkRnJvbURlZmF1bHREYXRhRmlsZSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAoZGVmYXVsdERhdGFGaWxlXyA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgRmlsZU5vdEZvdW5kRXhjZXB0aW9uKCk7Ci0JICBCdWZmZXJlZFJlYWRlciBiciA9IG51bGw7Ci0JICBpZiAoYXBwbGljYXRpb25fID09IG51bGwpCi0JCWJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihuZXcgRmlsZUlucHV0U3RyZWFtKGRlZmF1bHREYXRhRmlsZV8pLEhUTUxVdGlscy5VVEY4X0VOQ09ESU5HKSk7Ci0JICBlbHNlCi0JICAgIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihhcHBsaWNhdGlvbl8uZ2V0UmVzb3VyY2VBc1N0cmVhbShkZWZhdWx0RGF0YUZpbGVfKSxIVE1MVXRpbHMuVVRGOF9FTkNPRElORykpOwotICAgICAgcmV0dXJuIGxvYWREYXRhKGJyKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGVycm9yRXhjZXB0aW9uXyA9IGU7Ci0gICAgICByZXR1cm4gRVJST1JfRklMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZXJyb3JFeGNlcHRpb25fID0gZTsKLSAgICAgIHJldHVybiBFUlJPUl9TRUNVUklUWTsKLSAgICB9Ci0gICAgY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlcnJvckV4Y2VwdGlvbl8gPSBlOwotICAgICAgcmV0dXJuIEVSUk9SX0VOQ09ESU5HOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJ5dGUgbG9hZEZyb21EZWxpbWl0ZXJGaWxlKCkKLSAgewotICAgIC8vIEdldCB0aGUgYXNzb2NpYXRlZCAucHJvcGVydGllcyBmaWxlIGFuZCBzZXQgdGhlIGRlbGltaXRlcnMuIFRoZSBkZWZhdWx0RGF0YUZpbGVfIGlzIHNldCB0byB0aGUgZGVsaW1pdGVyIGZpbGUgaW4gdGhpcyBjYXNlLgotICAgIC8vIFRoZSBwcm9wZXJ0aWVzIGZpbGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBrZXlzOgotICAgIC8vIHdzYWQuZGF0YUZpbGUgLSBsb2NhdGlvbiBvZiB0aGUgY2F0ZWdvcnkgZGF0YSBmaWxlLgotICAgIC8vIHdzYWQuY2hlY2tlZCAtIHdoZXRoZXIgb3Igbm90IHRoZSBjYXRlZ29yeSBpcyBjaGVja2VkLgotICAgIC8vIHdzYWQubmFtZSAtIHRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIGNhdGVnb3J5LgotICAgIC8vIGNvbHVtbi5kZWxpbWl0ZXIgLSB0aGUgZGVsaW1pdGVyIGNoYXJhY3RlciB1c2VkIGZvciBzZXBhcmF0aW5nIGNvbHVtbnMuCi0gICAgLy8gc3RyaW5nLmRlbGltaXRlciAtIHRoZSBkZWxpbWl0ZXIgY2hhcmFjdGVyIHVzZWQgdG8gZW5jYXBzdWxhdGUgZGF0YSBzdWNoIHRoYXQgY29sdW1uIGRlbGltaXRlciBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkIGFzIGRhdGEuCi0gICAgdHJ5Ci0gICAgewotICAgICAgUHJvcGVydGllcyBwID0gbmV3IFByb3BlcnRpZXMoKTsKLSAgICAgIElucHV0U3RyZWFtIGZpbiA9IG51bGw7Ci0JICBpZiAoYXBwbGljYXRpb25fID09IG51bGwpCi0JICAgIGZpbiA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZGVmYXVsdERhdGFGaWxlXyk7Ci0JICBlbHNlCi0JCWZpbiA9IGFwcGxpY2F0aW9uXy5nZXRSZXNvdXJjZUFzU3RyZWFtKGRlZmF1bHREYXRhRmlsZV8pOwotICAgICAgcC5sb2FkKGZpbik7Ci0gICAgICBmaW4uY2xvc2UoKTsKLSAgICAgIGNvbHVtbkRlbGltaXRlcl8gPSBwLmdldFByb3BlcnR5KCJjb2x1bW4uZGVsaW1pdGVyIik7Ci0gICAgICBzdHJpbmdEZWxpbWl0ZXJfID0gcC5nZXRQcm9wZXJ0eSgic3RyaW5nLmRlbGltaXRlciIpOwotICAgICAgZGVmYXVsdERhdGFGaWxlXyA9IHAuZ2V0UHJvcGVydHkoIndzYWQuZGF0YUZpbGUiKTsKLSAgICAgIHJldHVybiBsb2FkRnJvbURlZmF1bHREYXRhRmlsZSgpOwotICAgIH0KLSAgICBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZXJyb3JFeGNlcHRpb25fID0gZTsKLSAgICAgIHJldHVybiBFUlJPUl9GSUxFOwotICAgIH0KLSAgICBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlcnJvckV4Y2VwdGlvbl8gPSBlOwotICAgICAgcmV0dXJuIEVSUk9SX1NFQ1VSSVRZOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlcnJvckV4Y2VwdGlvbl8gPSBlOwotICAgICAgcmV0dXJuIEVSUk9SX0lPOwotICAgIH0gICAgICAgIAotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgYnl0ZSBsb2FkRGF0YShCdWZmZXJlZFJlYWRlciBicikKLSAgewotICAgIGVycm9yRXhjZXB0aW9uXyA9IG51bGw7Ci0gICAgQ2F0ZWdvcnlFbGVtZW50IHJvb3RFbGVtZW50ID0gbnVsbDsKLSAgICBjYXRlZ29yeUVsZW1lbnRzXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBieXRlIHJldHVybkNvZGUgPSBPUEVSQVRJT05fU1VDQ0VTU0ZVTDsKLSAgICBTdHJpbmcgbGluZSA9IG51bGw7Ci0gICAgaW50IGxpbmVOdW1iZXIgPSAwOwotICAgIHRyeQotICAgIHsKLSAgICAgIGNoYXIgY29sdW1uRGVsaW1pdGVyQ2hhciA9IGNvbHVtbkRlbGltaXRlcl8uY2hhckF0KDApOwotICAgICAgY2hhciBzdHJpbmdEZWxpbWl0ZXJDaGFyID0gc3RyaW5nRGVsaW1pdGVyXy5jaGFyQXQoMCk7Ci0gICAgICBWZWN0b3IgdmFsdWVzID0gbmV3IFZlY3RvcigpOwotICAgICAgd2hpbGUoKGxpbmUgPSBici5yZWFkTGluZSgpKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBsaW5lTnVtYmVyKys7Ci0gICAgICAgIC8vIElnbm9yZSBibGFuayBsaW5lcy4KLSAgICAgICAgaWYgKGxpbmUudHJpbSgpLmxlbmd0aCgpID09IDApCi0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGludCBpbmRleCA9IDA7Ci0gICAgICAgIGludCBsZW5ndGggPSBsaW5lLmxlbmd0aCgpOwotICAgICAgICBib29sZWFuIGluU3RyaW5nRGVsaW1pdGVycyA9IGZhbHNlOwotICAgICAgICB2YWx1ZXMucmVtb3ZlQWxsRWxlbWVudHMoKTsKLSAgICAgICAgU3RyaW5nQnVmZmVyIGN1cnJlbnRUb2tlbiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKQotICAgICAgICB7Ci0gICAgICAgICAgY2hhciBjdXJyZW50Q2hhciA9IGxpbmUuY2hhckF0KGluZGV4KTsKLSAgICAgICAgICBpZiAoaW5TdHJpbmdEZWxpbWl0ZXJzKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIEluIHF1b3RlIHNvIGlnbm9yaW5nIGRlbGltaXRlcnMKLSAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhciA9PSBzdHJpbmdEZWxpbWl0ZXJDaGFyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggLSAxKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gY3VycmVudENoYXIgY291bGQgYmUgYSBjbG9zaW5nIHN0cmluZyBkZWxpbWl0ZXIgb3IgZXNjYXBlCi0gICAgICAgICAgICAgICAgLy8gTmVlZCB0byBsb29rIGFoZWFkIHRvIGJlIHN1cmUuLi4KLSAgICAgICAgICAgICAgICBjaGFyIGZvbGxvd2luZ0NoYXIgPSBsaW5lLmNoYXJBdChpbmRleCArIDEpOwotICAgICAgICAgICAgICAgIGlmIChmb2xsb3dpbmdDaGFyID09IHN0cmluZ0RlbGltaXRlckNoYXIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgYW4gZXNjYXBlZCBxdW90ZQotICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuLmFwcGVuZChzdHJpbmdEZWxpbWl0ZXJDaGFyKTsKLSAgICAgICAgICAgICAgICAgIC8vIGp1bXAgZm9yd2FyZCB0d28gY2hhcmFjdGVycy4KLSAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAvLyBUaGVyZSB3YXMgYSBjbG9zaW5nIHN0cmluZyBkZWxpbWl0ZXIuLi5qdW1wIGZvcndhcmQgdG8gdGhlIG5leHQgZGVsaW1pdGVyCi0gICAgICAgICAgICAgICAgICBpblN0cmluZ0RlbGltaXRlcnMgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgIC8vbG9vayBmb3IgdGhlIG5leHQgY29sdW1uIGRlbGltaXRlciBjaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgIGludCBuZXh0RGVsaW1pdGVyID0gbGluZS5pbmRleE9mKGNvbHVtbkRlbGltaXRlckNoYXIsIGluZGV4KTsKLSAgICAgICAgICAgICAgICAgIGlmIChuZXh0RGVsaW1pdGVyID09IC0xKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSB3ZXJlIG5vIG1vcmUgZGVsaW1pdGVycyBzbyBicmVhayBvdXQgb2YgdGhlIGxvb3AKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlcy5hZGRFbGVtZW50KGN1cnJlbnRUb2tlbi50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgLy92YWx1ZXNbdG9rZW5Db3VudCsrXSA9IGN1cnJlbnRUb2tlbi50b1N0cmluZygpOwotICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4uc2V0TGVuZ3RoKDApOwotICAgICAgICAgICAgICAgICAgICBpblN0cmluZ0RlbGltaXRlcnMgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBuZXh0RGVsaW1pdGVyICsgMTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGFzdCBjaGFyYWN0ZXIgYW5kIGl0J3MgYSBjbG9zaW5nIHN0cmluZyBkZWxpbWl0ZXIuCi0gICAgICAgICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgICAgICAgICBpblN0cmluZ0RlbGltaXRlcnMgPSBmYWxzZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjdXJyZW50VG9rZW4uYXBwZW5kKGN1cnJlbnRDaGFyKTsKLSAgICAgICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXIgPT0gY29sdW1uRGVsaW1pdGVyQ2hhcikKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGVyZSB3YXMgYSBkZWxpbWl0ZXIgb3V0c2lkZSBvZiBxdW90ZXMKLSAgICAgICAgICAgIHZhbHVlcy5hZGRFbGVtZW50KGN1cnJlbnRUb2tlbi50b1N0cmluZygpKTsKLSAgICAgICAgICAgIC8vdmFsdWVzW3Rva2VuQ291bnQrK10gPSBjdXJyZW50VG9rZW4udG9TdHJpbmcoKTsKLSAgICAgICAgICAgIGN1cnJlbnRUb2tlbi5zZXRMZW5ndGgoMCk7Ci0gICAgICAgICAgICBpbmRleCsrOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhciA9PSBzdHJpbmdEZWxpbWl0ZXJDaGFyKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIEEgcXVvdGUgYXBwZWFyaW5nIG91dHNpZGUgb2YgcXVvdGVzIG11c3QgYmUgYSBvcGVuaW5nIHF1b3RlCi0gICAgICAgICAgICBpblN0cmluZ0RlbGltaXRlcnMgPSB0cnVlOwotICAgICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgbm9ybWFsIGNoYXIgb3V0c2lkZSBvZiBxdW90ZXMKLSAgICAgICAgICAgIGN1cnJlbnRUb2tlbi5hcHBlbmQoY3VycmVudENoYXIpOwotICAgICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRXhwZWN0IHRva2VuIGNvdW50IHRvIGJlIHZhbHVlcy5sZW5ndGggLSAxIGF0IHRoaXMgcG9pbnQgaWYgZXZlcnl0aGluZyBpcyBvawotICAgICAgICBpZiAoaW5TdHJpbmdEZWxpbWl0ZXJzKQotICAgICAgICB7Ci0gICAgICAgICAgYnIuY2xvc2UoKTsKLSAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24obGluZSxsaW5lTnVtYmVyKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gQWRkIHRoZSBmaW5hbCB0b2tlbi4KLSAgICAgICAgdmFsdWVzLmFkZEVsZW1lbnQoY3VycmVudFRva2VuLnRvU3RyaW5nKCkpOwotCi0gICAgICAgIC8vIDMgY29sdW1ucyBmb3JtYXQuIEZyb20gbGVmdCB0byByaWdodCwgdGhlc2UgYXJlOgotICAgICAgICAvLyAxKSBjYXRlZ29yeSdzIGtleSB2YWx1ZQotICAgICAgICAvLyAyKSBjYXRlZ29yeSdzIGtleSBuYW1lCi0gICAgICAgIC8vIDMpIGNhdGVnb3J5J3MgcGFyZW50IGtleSB2YWx1ZQotICAgICAgICAvLyBDb252ZXJ0IHRvIDQgY29sdW1ucyBmb3JtYXQuCi0gICAgICAgIGlmICh2YWx1ZXMuc2l6ZSgpID09IDMpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoY2F0ZWdvcnlLZXlfICE9IG51bGwpCi0gICAgICAgICAgICB2YWx1ZXMuaW5zZXJ0RWxlbWVudEF0KGNhdGVnb3J5S2V5XywgMCk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsdWVzLmluc2VydEVsZW1lbnRBdCh0TW9kZWxLZXlfLCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDQgY29sdW1ucyBmb3JtYXQuIEZyb20gbGVmdCB0byByaWdodCwgdGhlc2UgYXJlOgotICAgICAgICAvLyAxKSB0eXBlIG9mIGNhdGVnb3J5IChjYXRlZ29yeUtleSkKLSAgICAgICAgLy8gMikgY2F0ZWdvcnkncyBrZXkgdmFsdWUKLSAgICAgICAgLy8gMykgY2F0ZWdvcnkncyBrZXkgbmFtZQotICAgICAgICAvLyA0KSBjYXRlZ29yeSdzIHBhcmVudCBrZXkgdmFsdWUKLSAgICAgICAgaWYgKHZhbHVlcy5zaXplKCkgPT0gNCkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBjYXRlZ29yeUtleSA9IChTdHJpbmcpdmFsdWVzLmVsZW1lbnRBdCgwKTsKLSAgICAgICAgICBpZiAoY2F0ZWdvcnlLZXlfID09IG51bGwpCi0gICAgICAgICAgICBjYXRlZ29yeUtleV8gPSBjYXRlZ29yeUtleTsKLSAgICAgICAgICBlbHNlIGlmICghY2F0ZWdvcnlLZXlfLmVxdWFscyhjYXRlZ29yeUtleSkpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKGNhdGVnb3J5S2V5KTsKLSAgICAgICAgICBTdHJpbmcga2V5VmFsdWUgPSAoU3RyaW5nKXZhbHVlcy5lbGVtZW50QXQoMSk7Ci0gICAgICAgICAgU3RyaW5nIGtleU5hbWUgPSAoU3RyaW5nKXZhbHVlcy5lbGVtZW50QXQoMik7Ci0gICAgICAgICAgU3RyaW5nIHBhcmVudEtleVZhbHVlID0gKFN0cmluZyl2YWx1ZXMuZWxlbWVudEF0KDMpOwotICAgICAgICAgIGlmIChyb290RWxlbWVudCA9PSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJvb3RFbGVtZW50ID0gbmV3IENhdGVnb3J5RWxlbWVudChkaXNwbGF5TmFtZV8sbnVsbCx0aGlzKTsKLSAgICAgICAgICAgIHNldFJvb3RFbGVtZW50KHJvb3RFbGVtZW50KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGlzRW5jbG9zZWRJblF1b3RlcyhrZXlOYW1lKSkKLSAgICAgICAgICAgIGtleU5hbWUgPSBrZXlOYW1lLnN1YnN0cmluZygxLGtleU5hbWUubGVuZ3RoKCktMSk7Ci0gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIENhdGVnb3J5RWxlbWVudCBhbHJlYWR5IGV4aXN0cy4gSWYgaXQgZG9lcywgcmVmcmVzaCB0aGUgQ2F0ZWdvcnkuCi0gICAgICAgICAgQ2F0ZWdvcnlFbGVtZW50IGNhdGVnb3J5RWxlbWVudCA9IChDYXRlZ29yeUVsZW1lbnQpY2F0ZWdvcnlFbGVtZW50c18uZ2V0KGtleVZhbHVlKTsKLSAgICAgICAgICBpZiAoY2F0ZWdvcnlFbGVtZW50ICE9IG51bGwpCi0gICAgICAgICAgICBjYXRlZ29yeUVsZW1lbnQudXBkYXRlQ2F0ZWdvcnkoa2V5TmFtZSxrZXlWYWx1ZSx0TW9kZWxLZXlfKTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYXRlZ29yeUVsZW1lbnQgPSBuZXcgQ2F0ZWdvcnlFbGVtZW50KGtleU5hbWUsbmV3IEtleWVkUmVmZXJlbmNlKGtleU5hbWUsa2V5VmFsdWUsdE1vZGVsS2V5XyksdGhpcyk7Ci0gICAgICAgICAgRWxlbWVudCBwYXJlbnRFbGVtZW50OwotICAgICAgICAgIGlmIChwYXJlbnRLZXlWYWx1ZS5lcXVhbHMoa2V5VmFsdWUpKQotICAgICAgICAgICAgcGFyZW50RWxlbWVudCA9IHJvb3RFbGVtZW50OwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSAoRWxlbWVudCljYXRlZ29yeUVsZW1lbnRzXy5nZXQocGFyZW50S2V5VmFsdWUpOwotICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50ID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgcGFyZW50RWxlbWVudCA9IG5ldyBDYXRlZ29yeUVsZW1lbnQoInRlbXAiLG5ldyBLZXllZFJlZmVyZW5jZSgiIixwYXJlbnRLZXlWYWx1ZSx0TW9kZWxLZXlfKSx0aGlzKTsKLSAgICAgICAgICAgIGNhdGVnb3J5RWxlbWVudHNfLnB1dChwYXJlbnRLZXlWYWx1ZSxwYXJlbnRFbGVtZW50KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFyZW50RWxlbWVudC5jb25uZWN0KGNhdGVnb3J5RWxlbWVudCxVRERJTW9kZWxDb25zdGFudHMuUkVMX1NVQkNBVEVHT1JJRVMsTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICAgICAgICBjYXRlZ29yeUVsZW1lbnRzXy5wdXQoa2V5VmFsdWUsY2F0ZWdvcnlFbGVtZW50KTsgICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgYnIuY2xvc2UoKTsKLSAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24obGluZSxsaW5lTnVtYmVyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgYnIuY2xvc2UoKTsKLSAgICAgIHJldHVybiByZXR1cm5Db2RlOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlcnJvckV4Y2VwdGlvbl8gPSBlOwotICAgICAgcmV0dXJuQ29kZSA9IEVSUk9SX0lPOwotICAgIH0KLSAgICBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlcnJvckV4Y2VwdGlvbl8gPSBlOwotICAgICAgcmV0dXJuQ29kZSA9IEVSUk9SX0ZJTEU7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlcnJvckV4Y2VwdGlvbl8gPSBlOwotICAgICAgcmV0dXJuQ29kZSA9IEVSUk9SX0NBVEVHT1JZX0tFWTsKLSAgICB9Ci0gICAgY2F0ZWdvcnlFbGVtZW50c18gPSBudWxsOwotICAgIHJldHVybiByZXR1cm5Db2RlOwotICB9Ci0gIAotICBwcml2YXRlIGZpbmFsIHZvaWQgc2F2ZURhdGEoUHJpbnRXcml0ZXIgcHcsQ2F0ZWdvcnlFbGVtZW50IGNhdGVnb3J5RWxlbWVudCxDYXRlZ29yeUVsZW1lbnQgcGFyZW50RWxlbWVudCxib29sZWFuIGlzRmlyc3QpCi0gIHsKLSAgICAvLyBGaWxlIGZvcm1hdDoKLSAgICAvLyA8Y2F0ZWdvcnlLZXk+IzxrZXlWYWx1ZT4jPGtleU5hbWU+IzxwYXJlbnRLZXlWYWx1ZT4KLSAgICBLZXllZFJlZmVyZW5jZSBrciA9IGNhdGVnb3J5RWxlbWVudC5nZXRDYXRlZ29yeSgpOwotICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgbm90IHRoZSByb290IGVsZW1lbnQuCi0gICAgaWYgKGtyICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGtleU5hbWUgPSBrci5nZXRLZXlOYW1lKCk7Ci0gICAgICBTdHJpbmcga2V5VmFsdWUgPSBrci5nZXRLZXlWYWx1ZSgpOwotICAgICAgU3RyaW5nIHBhcmVudEtleVZhbHVlOwotICAgICAgaWYgKHBhcmVudEVsZW1lbnQgPT0gbnVsbCkKLSAgICAgICAgcGFyZW50S2V5VmFsdWUgPSBrZXlWYWx1ZTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2UgcGFyZW50S3IgPSBwYXJlbnRFbGVtZW50LmdldENhdGVnb3J5KCk7Ci0gICAgICAgIC8vIENoZWNrIGlmIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3QgZWxlbWVudC4KLSAgICAgICAgaWYgKHBhcmVudEtyID09IG51bGwpCi0gICAgICAgICAgcGFyZW50S2V5VmFsdWUgPSBrZXlWYWx1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHBhcmVudEtleVZhbHVlID0gcGFyZW50S3IuZ2V0S2V5VmFsdWUoKTsKLSAgICAgIH0KLSAgICAgIGlmICghaXNGaXJzdCkKLSAgICAgICAgcHcucHJpbnRsbigpOwotICAgICAgZWxzZQotICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7Ci0gICAgICBwdy5wcmludChtYW5nbGUoY2F0ZWdvcnlLZXlfKSk7Ci0gICAgICBwdy5wcmludChjb2x1bW5EZWxpbWl0ZXJfKTsKLSAgICAgIHB3LnByaW50KG1hbmdsZShrZXlWYWx1ZSkpOwotICAgICAgcHcucHJpbnQoY29sdW1uRGVsaW1pdGVyXyk7Ci0gICAgICBwdy5wcmludChtYW5nbGUoa2V5TmFtZSkpOwotICAgICAgcHcucHJpbnQoY29sdW1uRGVsaW1pdGVyXyk7Ci0gICAgICBwdy5wcmludChtYW5nbGUocGFyZW50S2V5VmFsdWUpKTsKLSAgICB9Ci0gICAgRW51bWVyYXRpb24gZSA9IGNhdGVnb3J5RWxlbWVudC5nZXRFbGVtZW50cyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1NVQkNBVEVHT1JJRVMpOwotICAgIGlmIChlICE9IG51bGwpCi0gICAgewotICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICAgIHNhdmVEYXRhKHB3LChDYXRlZ29yeUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpLGNhdGVnb3J5RWxlbWVudCxpc0ZpcnN0KTsKLSAgICB9Ci0gIH0KLSAgCi0gIC8vIE1hbmdsZSBhbiBpbnB1dCBzdHJpbmcgaWYgaXQgY29udGFpbnMgZGVmYXVsdCBjb2x1bW4gZGVsaW1pdGVyIGNoYXJhY3RlcnMgYnkgc3Vycm91bmRpbmcgaXQgd2l0aCB0aGUgc3RyaW5nIGRlbGltaXRlcnMuCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIG1hbmdsZShTdHJpbmcgaW5wdXQpCi0gIHsKLSAgICBpZiAoaW5wdXQgIT0gbnVsbCAmJiBpbnB1dC5pbmRleE9mKGNvbHVtbkRlbGltaXRlcl8pICE9IC0xKQotICAgIHsKLSAgICAgIFN0cmluZ0J1ZmZlciBzID0gbmV3IFN0cmluZ0J1ZmZlcihpbnB1dCk7Ci0gICAgICBzLmluc2VydCgwLHN0cmluZ0RlbGltaXRlcl8pLmFwcGVuZChzdHJpbmdEZWxpbWl0ZXJfKTsKLSAgICAgIHJldHVybiBzLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBpbnB1dDsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJ5dGUgc2F2ZURhdGEoU3RyaW5nIGZpbGVOYW1lKQotICB7Ci0gICAgLy8gVGhlIGZpbGVOYW1lIHNob3VsZCBhbHJlYWR5IGJlIFVSTEVuY29kZWQuCi0gICAgYnl0ZSByZXR1cm5Db2RlID0gT1BFUkFUSU9OX1NVQ0NFU1NGVUw7Ci0gICAgZXJyb3JFeGNlcHRpb25fID0gbnVsbDsKLSAgICBpZiAoaXNEYXRhTG9hZGVkKCkpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIobmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZU5hbWUpLEhUTUxVdGlscy5VVEY4X0VOQ09ESU5HKSx0cnVlKTsKLSAgICAgICAgQ2F0ZWdvcnlFbGVtZW50IHJvb3RFbGVtZW50ID0gKENhdGVnb3J5RWxlbWVudClnZXRSb290RWxlbWVudCgpOwotICAgICAgICBzYXZlRGF0YShwdyxyb290RWxlbWVudCxudWxsLHRydWUpOwotICAgICAgICBwdy5mbHVzaCgpOwotICAgICAgICBwdy5jbG9zZSgpOwotICAgICAgICAvLyBTYXZlIHRoZSBwcm9wZXJ0aWVzIGZpbGUuCi0gICAgICAgIFByb3BlcnRpZXMgcCA9IG5ldyBQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIHAuc2V0UHJvcGVydHkoIndzYWQuZGF0YUZpbGUiLGZpbGVOYW1lKTsKLSAgICAgICAgcC5zZXRQcm9wZXJ0eSgid3NhZC5jaGVja2VkIixTdHJpbmcudmFsdWVPZihjaGVja2VkXykpOwotICAgICAgICBwLnNldFByb3BlcnR5KCJ3c2FkLm5hbWUiLGRpc3BsYXlOYW1lXyk7Ci0gICAgICAgIHAuc2V0UHJvcGVydHkoImNvbHVtbi5kZWxpbWl0ZXIiLGNvbHVtbkRlbGltaXRlcl8pOwotICAgICAgICBwLnNldFByb3BlcnR5KCJzdHJpbmcuZGVsaW1pdGVyIixzdHJpbmdEZWxpbWl0ZXJfKTsKLSAgICAgICAgU3RyaW5nQnVmZmVyIHByb3BlcnRpZXNGaWxlTmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoZmlsZU5hbWUuc3Vic3RyaW5nKDAsZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSkpOwotICAgICAgICBwcm9wZXJ0aWVzRmlsZU5hbWUuYXBwZW5kKCIucHJvcGVydGllcyIpOwotICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvdXQgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShwcm9wZXJ0aWVzRmlsZU5hbWUudG9TdHJpbmcoKSk7Ci0gICAgICAgIHAuc3RvcmUoZm91dCxudWxsKTsKLSAgICAgICAgZm91dC5jbG9zZSgpOwotICAgICAgfQotICAgICAgY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICBlcnJvckV4Y2VwdGlvbl8gPSBlOwotICAgICAgICByZXR1cm5Db2RlID0gRVJST1JfRklMRTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICBlcnJvckV4Y2VwdGlvbl8gPSBlOwotICAgICAgICByZXR1cm5Db2RlID0gRVJST1JfU0VDVVJJVFk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICBlcnJvckV4Y2VwdGlvbl8gPSBlOwotICAgICAgICByZXR1cm5Db2RlID0gRVJST1JfRU5DT0RJTkc7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgZXJyb3JFeGNlcHRpb25fID0gZTsKLSAgICAgICAgcmV0dXJuQ29kZSA9IEVSUk9SX0lPOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmV0dXJuQ29kZTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICByZXR1cm4gZGlzcGxheU5hbWVfOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL1B1Ymxpc2hlZEl0ZW1zRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9QdWJsaXNoZWRJdGVtc0VsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI3NWVmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL1B1Ymxpc2hlZEl0ZW1zRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElNb2RlbENvbnN0YW50czsKLQotcHVibGljIGNsYXNzIFB1Ymxpc2hlZEl0ZW1zRWxlbWVudCBleHRlbmRzIEFic3RyYWN0VURESUVsZW1lbnQKLXsKLSAgcHVibGljIFB1Ymxpc2hlZEl0ZW1zRWxlbWVudChpbnQgdHlwZSxTdHJpbmcgbmFtZSxNb2RlbCBtb2RlbCkKLSAgewotICAgIHN1cGVyKG5hbWUsbW9kZWwpOwotICAgIHNldFByb3BlcnR5QXNTdHJpbmcoTW9kZWxDb25zdGFudHMuUkVMX0NISUxEUkVOLFVERElNb2RlbENvbnN0YW50cy5SRUxfUFVCTElTSEVEX0lURU1TKTsKLSAgICBzZXRQcm9wZXJ0eUFzU3RyaW5nKFVERElNb2RlbENvbnN0YW50cy5RVUVSWV9UWVBFLFN0cmluZy52YWx1ZU9mKHR5cGUpKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gSW50ZWdlci5wYXJzZUludChnZXRQcm9wZXJ0eUFzU3RyaW5nKFVERElNb2RlbENvbnN0YW50cy5RVUVSWV9UWVBFKSk7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0SXRlbXMoKQotICB7Ci0gICAgcmV0dXJuIGdldEVsZW1lbnRzKFVERElNb2RlbENvbnN0YW50cy5SRUxfUFVCTElTSEVEX0lURU1TKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9QdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL1B1Ymxpc2hlckFzc2VydGlvbkVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIzMmM4My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL1B1Ymxpc2hlckFzc2VydGlvbkVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYXNzZXJ0aW9uLlB1Ymxpc2hlckFzc2VydGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuS2V5ZWRSZWZlcmVuY2U7Ci0KLXB1YmxpYyBjbGFzcyBQdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50IHsKLQotICAvLyBvd25pbmdCdXNpbmVzc0tleV8gaXMgdGhlIGtleSBvZiB0aGUgYnVzaW5lc3MgZWxlbWVudCB0aGF0IG93bnMgdGhpcwotICAvLyBwdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50Ci0gIHByaXZhdGUgU3RyaW5nIGZyb21LZXlfOwotICBwcml2YXRlIFN0cmluZyB0b0tleV87Ci0gIHByaXZhdGUgU3RyaW5nIG93bmluZ0J1c2luZXNzS2V5XzsKLQotICAvLyB0aGUgb3RoZXIgYnVzaW5lc3MgdGhhdCB0aGUgY29udGFpbmluZyBidXNpbmVzcyBpcyBhc3NlcnRlZCBmcm9tIG9yIHRvCi0gIHByaXZhdGUgTGlzdEVsZW1lbnQgc3BfOwotICBwcml2YXRlIGludCBzdWJRdWVyeUl0ZW1JZF87Ci0KLSAgLy8gc3RhdHVzIG9mIHRoaXMgcHVibGlzaGVyQXNzZXJ0aW9uCi0gIHByaXZhdGUgU3RyaW5nIHN0YXR1c187Ci0gIHByaXZhdGUgS2V5ZWRSZWZlcmVuY2Uga2V5ZWRSZWZlcmVuY2VfOwotCi0gIHB1YmxpYyBQdWJsaXNoZXJBc3NlcnRpb25FbGVtZW50KFN0cmluZyBmcm9tS2V5LCBTdHJpbmcgdG9LZXksIFN0cmluZyBvd25pbmdCdXNpbmVzc0tleSwgTGlzdEVsZW1lbnQgc3AsIGludCBzdWJRdWVyeUl0ZW1JZCwgU3RyaW5nIHN0YXR1cywgS2V5ZWRSZWZlcmVuY2Uga2V5ZWRSZWYpIHsKLSAgICBmcm9tS2V5XyA9IGZyb21LZXk7Ci0gICAgdG9LZXlfID0gdG9LZXk7Ci0gICAgb3duaW5nQnVzaW5lc3NLZXlfID0gb3duaW5nQnVzaW5lc3NLZXk7Ci0gICAgc3BfID0gc3A7Ci0gICAgc3ViUXVlcnlJdGVtSWRfID0gc3ViUXVlcnlJdGVtSWQ7Ci0gICAgc3RhdHVzXyA9IHN0YXR1czsKLSAgICBrZXllZFJlZmVyZW5jZV8gPSBrZXllZFJlZjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEZyb21LZXkoU3RyaW5nIGZyb21LZXkpIHsKLSAgICBmcm9tS2V5XyA9IGZyb21LZXk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEZyb21LZXkoKSB7Ci0gICAgcmV0dXJuIGZyb21LZXlfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VG9LZXkoU3RyaW5nIHRvS2V5KSB7Ci0gICAgdG9LZXlfID0gdG9LZXk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFRvS2V5KCkgewotICAgIHJldHVybiB0b0tleV87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRPd25pbmdCdXNpbmVzc0tleShTdHJpbmcga2V5KSB7Ci0gICAgb3duaW5nQnVzaW5lc3NLZXlfID0ga2V5OwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRPd25pbmdCdXNpbmVzc0tleSgpIHsKLSAgICByZXR1cm4gb3duaW5nQnVzaW5lc3NLZXlfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVByb3ZpZGVyKExpc3RFbGVtZW50IHNwKSB7Ci0gICAgc3BfID0gc3A7Ci0gIH0KLQotICBwdWJsaWMgTGlzdEVsZW1lbnQgZ2V0U2VydmljZVByb3ZpZGVyKCkgewotICAgIHJldHVybiBzcF87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRTdWJRdWVyeUl0ZW1JZChpbnQgaWQpIHsKLSAgICBzdWJRdWVyeUl0ZW1JZF8gPSBpZDsKLSAgfQotCi0gIHB1YmxpYyBpbnQgZ2V0U3ViUXVlcnlJdGVtSWQoKSB7Ci0gICAgcmV0dXJuIHN1YlF1ZXJ5SXRlbUlkXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFN0YXR1cyhTdHJpbmcgc3RhdHVzKSB7Ci0gICAgc3RhdHVzXyA9IHN0YXR1czsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RhdHVzKCkgewotICAgIHJldHVybiBzdGF0dXNfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0S2V5ZWRSZWYoS2V5ZWRSZWZlcmVuY2Uga2V5ZWRSZWYpIHsKLSAgICBrZXllZFJlZmVyZW5jZV8gPSBrZXllZFJlZjsKLSAgfQotCi0gIHB1YmxpYyBLZXllZFJlZmVyZW5jZSBnZXRLZXllZFJlZigpIHsKLSAgICByZXR1cm4ga2V5ZWRSZWZlcmVuY2VfOwotICB9Ci0KLSAgcHVibGljIFB1Ymxpc2hlckFzc2VydGlvbiBnZXRQdWJsaXNoZXJBc3NlcnRpb24oKSB7Ci0gICAgaWYgKGZyb21LZXlfID09IG51bGwgfHwKLSAgICAgICAgdG9LZXlfID09IG51bGwgfHwKLSAgICAgICAga2V5ZWRSZWZlcmVuY2VfID09IG51bGwpIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIFB1Ymxpc2hlckFzc2VydGlvbiBwdWJBc3NlcnRpb24gPSBuZXcgUHVibGlzaGVyQXNzZXJ0aW9uKGZyb21LZXlfLCB0b0tleV8sIGtleWVkUmVmZXJlbmNlXyk7Ci0gICAgcmV0dXJuIHB1YkFzc2VydGlvbjsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL1F1ZXJ5RWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9RdWVyeUVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ2ZGU5MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL1F1ZXJ5RWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLk1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLQotcHVibGljIGNsYXNzIFF1ZXJ5RWxlbWVudCBleHRlbmRzIEFic3RyYWN0VURESUVsZW1lbnQKLXsKLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGluaXRRdWVyeVByb3BlcnRpZXMoaW50IGl0ZW1UeXBlLE9iamVjdFtdIHJlc3VsdHMpCi0gIHsKLSAgICBWZWN0b3IgcmVzdWx0c1ZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICBmb3IgKGludCBpPTA7aTxyZXN1bHRzLmxlbmd0aDtpKyspCi0gICAgICByZXN1bHRzVmVjdG9yLmFkZEVsZW1lbnQocmVzdWx0c1tpXSk7Ci0gICAgc2V0UHJvcGVydHlBc1N0cmluZyhNb2RlbENvbnN0YW50cy5SRUxfQ0hJTERSRU4sVURESU1vZGVsQ29uc3RhbnRzLlJFTF9RVUVSWV9SRVNVTFRTKTsKLSAgICBzZXRQcm9wZXJ0eUFzT2JqZWN0KFVERElNb2RlbENvbnN0YW50cy5JTklUSUFMX1JFU1VMVFMscmVzdWx0c1ZlY3Rvcik7Ci0gICAgc2V0UHJvcGVydHlBc1N0cmluZyhVRERJTW9kZWxDb25zdGFudHMuUVVFUllfVFlQRSxTdHJpbmcudmFsdWVPZihpdGVtVHlwZSkpOwotICB9Ci0gIAotICBwdWJsaWMgUXVlcnlFbGVtZW50KEJ1c2luZXNzRW50aXR5W10gc3BMaXN0LFN0cmluZyBuYW1lLE1vZGVsIG1vZGVsKQotICB7Ci0gICAgc3VwZXIobmFtZSxtb2RlbCk7Ci0gICAgaW5pdFF1ZXJ5UHJvcGVydGllcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyxzcExpc3QpOwotICB9Ci0KLSAgcHVibGljIFF1ZXJ5RWxlbWVudChCdXNpbmVzc1NlcnZpY2VbXSBic0xpc3QsU3RyaW5nIG5hbWUsTW9kZWwgbW9kZWwpCi0gIHsKLSAgICBzdXBlcihuYW1lLG1vZGVsKTsKLSAgICBpbml0UXVlcnlQcm9wZXJ0aWVzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyxic0xpc3QpOwotICB9Ci0KLSAgcHVibGljIFF1ZXJ5RWxlbWVudChUTW9kZWxbXSB0TW9kZWxMaXN0LFN0cmluZyBuYW1lLE1vZGVsIG1vZGVsKQotICB7Ci0gICAgc3VwZXIobmFtZSxtb2RlbCk7Ci0gICAgaW5pdFF1ZXJ5UHJvcGVydGllcyhVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTLHRNb2RlbExpc3QpOwotICB9Ci0KLSAgcHVibGljIGludCBnZXRRdWVyeVR5cGUoKQotICB7Ci0gICAgcmV0dXJuIEludGVnZXIucGFyc2VJbnQoZ2V0UHJvcGVydHlBc1N0cmluZyhVRERJTW9kZWxDb25zdGFudHMuUVVFUllfVFlQRSkpOwotICB9Ci0KLSAgcHVibGljIFF1ZXJ5UGFyZW50RWxlbWVudCBnZXRRdWVyeVBhcmVudEVsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIChRdWVyeVBhcmVudEVsZW1lbnQpZ2V0UGFyZW50RWxlbWVudCgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL1F1ZXJ5UGFyZW50RWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9RdWVyeVBhcmVudEVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI2ZjM3ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL1F1ZXJ5UGFyZW50RWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElNb2RlbENvbnN0YW50czsKLQotcHVibGljIGNsYXNzIFF1ZXJ5UGFyZW50RWxlbWVudCBleHRlbmRzIEFic3RyYWN0VURESUVsZW1lbnQKLXsKLSAgcHVibGljIFF1ZXJ5UGFyZW50RWxlbWVudChTdHJpbmcgbmFtZSxNb2RlbCBtb2RlbCkKLSAgewotICAgIHN1cGVyKG5hbWUsbW9kZWwpOwotICAgIHNldFByb3BlcnR5QXNTdHJpbmcoTW9kZWxDb25zdGFudHMuUkVMX0NISUxEUkVOLFVERElNb2RlbENvbnN0YW50cy5SRUxfUVVFUklFUyk7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0UXVlcmllcygpCi0gIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHMoVURESU1vZGVsQ29uc3RhbnRzLlJFTF9RVUVSSUVTKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9SZWdpc3RyeUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvUmVnaXN0cnlFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMDlmMmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9SZWdpc3RyeUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDI3ICAgMTM2NDQ5IGJydW5zc2VuQHVzLmlibS5jb20gLSBWaW5jZSBCcnVuc3NlbiAgCi0gKiAyMDA2MDkxMiAgIDE0MTc5NiBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA3MDQxOSAgIDE4Mjg2NCBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5OZXRVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuSVJlZ2lzdHJ5TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuUmVnaXN0cnlTZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeS5VRERJUmVnaXN0cnlTZXJ2aWNlOwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5EZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuQXV0aFRva2VuOwotaW1wb3J0IG9yZy51ZGRpNGoudHJhbnNwb3J0LlRyYW5zcG9ydEV4Y2VwdGlvbjsKLQotcHVibGljIGNsYXNzIFJlZ2lzdHJ5RWxlbWVudCBleHRlbmRzIEFic3RyYWN0VURESUVsZW1lbnQKLXsKLSAgcHJpdmF0ZSBmaW5hbCBsb25nIEFVVEhfSU5GT19USU1FT1VUID0gMzAwMDAwMDsKLSAgcHJpdmF0ZSBVRERJUHJveHkgcHJveHlfOwotICBwcml2YXRlIGxvbmcgYXV0aFRva2VuVGltZXN0YW1wXzsKLSAgcHJpdmF0ZSBBdXRoVG9rZW4gYXV0aFRva2VuXzsKLSAgcHJpdmF0ZSBTdHJpbmcgaWRfOwotICBwcml2YXRlIFN0cmluZyBwYXNzd29yZF87Ci0gIHByaXZhdGUgU3RyaW5nIGlucXVpcnlVUkxfOwotICBwcml2YXRlIFN0cmluZyBwdWJsaXNoVVJMXzsKLSAgcHJpdmF0ZSBTdHJpbmcgY2FjaGVkUHVibGlzaFVSTF87Ci0gIHByaXZhdGUgU3RyaW5nIHJlZ2lzdHJhdGlvblVSTF87Ci0gIHByaXZhdGUgSGFzaHRhYmxlIHVzZXJEZWZpbmVkQ2F0ZWdvcmllc187Ci0gIHByaXZhdGUgYm9vbGVhbiBjaGVja0ZvclVzZXJEZWZpbmVkQ2F0ZWdvcmllc187Ci0gIHByaXZhdGUgU3RyaW5nIGNhdGVnb3JpZXNEaXJlY3RvcnlfOwotCi0gIHB1YmxpYyBSZWdpc3RyeUVsZW1lbnQoVURESVByb3h5IHByb3h5LCBTdHJpbmcgaW5xdWlyeVVSTCwgU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsKQotICB7Ci0gICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICAgIHByb3h5XyA9IHByb3h5OwotICAgIGlucXVpcnlVUkxfID0gaW5xdWlyeVVSTDsKLSAgICBwdWJsaXNoVVJMXyA9IG51bGw7Ci0gICAgYXV0aFRva2VuVGltZXN0YW1wXyA9IC0xOwotICAgIGF1dGhUb2tlbl8gPSBudWxsOwotICAgIGlkXyA9IG51bGw7Ci0gICAgcGFzc3dvcmRfID0gbnVsbDsKLSAgICBjYWNoZWRQdWJsaXNoVVJMXyA9IG51bGw7Ci0gICAgcmVnaXN0cmF0aW9uVVJMXyA9IG51bGw7Ci0gICAgdXNlckRlZmluZWRDYXRlZ29yaWVzXyA9IG51bGw7Ci0gICAgY2hlY2tGb3JVc2VyRGVmaW5lZENhdGVnb3JpZXNfID0gZmFsc2U7Ci0gICAgY2F0ZWdvcmllc0RpcmVjdG9yeV8gPSBudWxsOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFVERElQcm94eSBnZXRQcm94eSgpCi0gIHsKLSAgICByZXR1cm4gcHJveHlfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RGVmYXVsdHMoKQotICB7Ci0JICAKLQkgIGF1dGhUb2tlblRpbWVzdGFtcF8gPSAtMTsKLQkgIGF1dGhUb2tlbl8gPSBudWxsOwotCSAgY2FjaGVkUHVibGlzaFVSTF8gPSBudWxsOyAKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRJbnF1aXJ5VVJMKCkKLSAgewotICAgIHJldHVybiBpbnF1aXJ5VVJMXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBRdWVyeVBhcmVudEVsZW1lbnQgZ2V0UXVlcnlQYXJlbnRFbGVtZW50KCkKLSAgewotICAgIHJldHVybiAoUXVlcnlQYXJlbnRFbGVtZW50KSAoZ2V0RWxlbWVudHMoVURESU1vZGVsQ29uc3RhbnRzLlJFTF9RVUVSSUVTX1BBUkVOVCkubmV4dEVsZW1lbnQoKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgUHVibGlzaGVkSXRlbXNFbGVtZW50IGdldFB1Ymxpc2hlZEJ1c2luZXNzZXNFbGVtZW50KCkKLSAgewotICAgIHJldHVybiAoUHVibGlzaGVkSXRlbXNFbGVtZW50KSAoZ2V0RWxlbWVudHMoVURESU1vZGVsQ29uc3RhbnRzLlJFTF9QVUJMSVNIRURfQlVTSU5FU1NFU19QQVJFTlQpLm5leHRFbGVtZW50KCkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFB1Ymxpc2hlZEl0ZW1zRWxlbWVudCBnZXRQdWJsaXNoZWRTZXJ2aWNlc0VsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIChQdWJsaXNoZWRJdGVtc0VsZW1lbnQpIChnZXRFbGVtZW50cyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1BVQkxJU0hFRF9TRVJWSUNFU19QQVJFTlQpLm5leHRFbGVtZW50KCkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFB1Ymxpc2hlZEl0ZW1zRWxlbWVudCBnZXRQdWJsaXNoZWRTZXJ2aWNlSW50ZXJmYWNlc0VsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIChQdWJsaXNoZWRJdGVtc0VsZW1lbnQpIChnZXRFbGVtZW50cyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1BVQkxJU0hFRF9TRVJWSUNFX0lOVEVSRkFDRVNfUEFSRU5UKS5uZXh0RWxlbWVudCgpKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHBlcmZvcm1Mb2dpbihTdHJpbmcgcHVibGlzaFVSTCwgU3RyaW5nIHVzZXJJZCwgU3RyaW5nIHBhc3N3b3JkKSB0aHJvd3MgVHJhbnNwb3J0RXhjZXB0aW9uLCBVRERJRXhjZXB0aW9uLCBNYWxmb3JtZWRVUkxFeGNlcHRpb24KLSAgewotICAgIHB1Ymxpc2hVUkxfID0gcHVibGlzaFVSTDsKLSAgICBwcm94eV8uc2V0UHVibGlzaFVSTChOZXRVdGlscy5jcmVhdGVVUkwocHVibGlzaFVSTCkpOwotICAgIGF1dGhUb2tlbl8gPSBwcm94eV8uZ2V0X2F1dGhUb2tlbih1c2VySWQsIHBhc3N3b3JkKTsKLSAgICBhdXRoVG9rZW5UaW1lc3RhbXBfID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7Ci0gICAgaWRfID0gdXNlcklkOwotICAgIHBhc3N3b3JkXyA9IHBhc3N3b3JkOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgcGVyZm9ybUxvZ291dCgpIHRocm93cyBUcmFuc3BvcnRFeGNlcHRpb24sIFVERElFeGNlcHRpb24KLSAgewotICAgIHByb3h5Xy5kaXNjYXJkX2F1dGhUb2tlbihhdXRoVG9rZW5fLmdldEF1dGhJbmZvU3RyaW5nKCkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRBdXRoSW5mb1N0cmluZygpCi0gIHsKLSAgICBpZiAoIWlzTG9nZ2VkSW4oKSkKLSAgICAgIHJldHVybiBudWxsOwotICAgIGlmICgoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBhdXRoVG9rZW5UaW1lc3RhbXBfKSA+IEFVVEhfSU5GT19USU1FT1VUKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBhdXRoVG9rZW5fID0gcHJveHlfLmdldF9hdXRoVG9rZW4oaWRfLCBwYXNzd29yZF8pOwotICAgICAgICBhdXRoVG9rZW5UaW1lc3RhbXBfID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBhdXRoVG9rZW5fLmdldEF1dGhJbmZvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc0xvZ2dlZEluKCkKLSAgewotICAgIHJldHVybiBhdXRoVG9rZW5fICE9IG51bGw7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRDYWNoZWRQdWJsaXNoVVJMKFN0cmluZyBwdWJsaXNoVVJMKQotICB7Ci0gICAgY2FjaGVkUHVibGlzaFVSTF8gPSBwdWJsaXNoVVJMOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQdWJsaXNoVVJMKCkKLSAgewotICAgIGlmIChpc0xvZ2dlZEluKCkgJiYgcHVibGlzaFVSTF8gIT0gbnVsbCkKLSAgICAgIHJldHVybiBwdWJsaXNoVVJMXzsKLSAgICByZXR1cm4gY2FjaGVkUHVibGlzaFVSTF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRSZWdpc3RyYXRpb25VUkwoU3RyaW5nIHJlZ2lzdHJhdGlvblVSTCkKLSAgewotICAgIHJlZ2lzdHJhdGlvblVSTF8gPSByZWdpc3RyYXRpb25VUkw7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFJlZ2lzdHJhdGlvblVSTCgpCi0gIHsKLSAgICByZXR1cm4gcmVnaXN0cmF0aW9uVVJMXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VXNlcklkKCkKLSAgewotICAgIHJldHVybiBpZF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRVc2VySWQoU3RyaW5nIHVzZXJJZCkKLSAgewotICAgIGlkXyA9IHVzZXJJZDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0Q3JlZCgpCi0gIHsKLSAgICByZXR1cm4gcGFzc3dvcmRfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0Q3JlZChTdHJpbmcgY3JlZCkKLSAgewotICAgIHBhc3N3b3JkXyA9IGNyZWQ7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRVc2VyRGVmaW5lZENhdGVnb3JpZXMoSGFzaHRhYmxlIHVzZXJEZWZpbmVkQ2F0ZWdvcmllcykKLSAgewotICAgIHVzZXJEZWZpbmVkQ2F0ZWdvcmllc18gPSB1c2VyRGVmaW5lZENhdGVnb3JpZXM7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgRW51bWVyYXRpb24gZ2V0VXNlckRlZmluZWRDYXRlZ29yaWVzKCkKLSAgewotICAgIGlmICh1c2VyRGVmaW5lZENhdGVnb3JpZXNfICE9IG51bGwpCi0gICAgICByZXR1cm4gdXNlckRlZmluZWRDYXRlZ29yaWVzXy5lbGVtZW50cygpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIENhdGVnb3J5TW9kZWwgZ2V0VXNlckRlZmluZWRDYXRlZ29yeShTdHJpbmcgdE1vZGVsS2V5KQotICB7Ci0gICAgcmV0dXJuIChDYXRlZ29yeU1vZGVsKSB1c2VyRGVmaW5lZENhdGVnb3JpZXNfLmdldCh0TW9kZWxLZXkpOwotICB9Ci0KLSAgLy8gU3BlY2lhbCBoYW5kbGVyIHRvIGJlIGludm9rZWQgYmVmb3JlIHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSByZWdpc3RyeS4KLSAgcHVibGljIGZpbmFsIHZvaWQgaGFuZGxlUHJlSW52b2NhdGlvbihCdXNpbmVzc1NlcnZpY2UgYnVzU2VydmljZSkKLSAgewotICAgIC8vIEZvciBYTWV0aG9kcywgYnVzaW5lc3Mgc2VydmljZXMgbXVzdCBjb250YWluIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm06Ci0gICAgLy8gSU1QTEVNRU5UQVRJT046IGlibXdzCi0gICAgaWYgKGdldElucXVpcnlVUkwoKS5lcXVhbHMoImh0dHA6Ly91ZGRpLnhtZXRob2RzLm5ldC9pbnF1aXJlIikpCi0gICAgewotICAgICAgVmVjdG9yIGRlc2NyaXB0aW9uVmVjdG9yID0gYnVzU2VydmljZS5nZXREZXNjcmlwdGlvblZlY3RvcigpOwotICAgICAgaWYgKGRlc2NyaXB0aW9uVmVjdG9yID09IG51bGwpCi0gICAgICAgIGRlc2NyaXB0aW9uVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgYm9vbGVhbiBjb250YWluc0ltcGxlbWVudGF0aW9uRGVzY3JpcHRpb24gPSBmYWxzZTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVzY3JpcHRpb25WZWN0b3Iuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gKERlc2NyaXB0aW9uKSBkZXNjcmlwdGlvblZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAgIGlmIChkZXNjcmlwdGlvbi5nZXRUZXh0KCkuc3RhcnRzV2l0aCgiSU1QTEVNRU5UQVRJT046ICIpKQotICAgICAgICB7Ci0gICAgICAgICAgY29udGFpbnNJbXBsZW1lbnRhdGlvbkRlc2NyaXB0aW9uID0gdHJ1ZTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKCFjb250YWluc0ltcGxlbWVudGF0aW9uRGVzY3JpcHRpb24pCi0gICAgICB7Ci0gICAgICAgIGRlc2NyaXB0aW9uVmVjdG9yLmFkZEVsZW1lbnQobmV3IERlc2NyaXB0aW9uKCJJTVBMRU1FTlRBVElPTjogaWJtd3MiKSk7Ci0gICAgICAgIGJ1c1NlcnZpY2Uuc2V0RGVzY3JpcHRpb25WZWN0b3IoZGVzY3JpcHRpb25WZWN0b3IpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldENoZWNrRm9yVXNlckRlZmluZWRDYXRlZ29yaWVzKGJvb2xlYW4gY2hlY2tGb3JVc2VyRGVmaW5lZENhdGVnb3JpZXMpCi0gIHsKLSAgICBjaGVja0ZvclVzZXJEZWZpbmVkQ2F0ZWdvcmllc18gPSBjaGVja0ZvclVzZXJEZWZpbmVkQ2F0ZWdvcmllczsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGdldENoZWNrRm9yVXNlckRlZmluZWRDYXRlZ29yaWVzKCkKLSAgewotICAgIHJldHVybiBjaGVja0ZvclVzZXJEZWZpbmVkQ2F0ZWdvcmllc187Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRDYXRlZ29yaWVzRGlyZWN0b3J5KFN0cmluZyBkaXJlY3RvcnkpCi0gIHsKLSAgICBjYXRlZ29yaWVzRGlyZWN0b3J5XyA9IGRpcmVjdG9yeTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0Q2F0ZWdvcmllc0RpcmVjdG9yeSgpCi0gIHsKLSAgICByZXR1cm4gY2F0ZWdvcmllc0RpcmVjdG9yeV87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZWZyZXNoTWV0YSgpewotCSAgICAKLQkgIFJlZ2lzdHJ5U2VydmljZSByZWdTZXJ2aWNlID0gUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk7Ci0JICBJUmVnaXN0cnlNYW5hZ2VyIHJlZ01hbmFnZXIgPSByZWdTZXJ2aWNlLmdldERlZmF1bHRSZWdpc3RyeU1hbmFnZXIoKTsKLQkgIAotCSAgCi0JICB0cnkKLQkgIHsKLSAgICAJICByZWdNYW5hZ2VyLnJlZnJlc2hNYW5hZ2VyKCk7Ci0JCSAgU3RyaW5nW10gcmVnVVJJcyA9IHJlZ01hbmFnZXIuZ2V0UmVnaXN0cnlVUklzKCk7Ci0JCSAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWdVUklzLmxlbmd0aDsgaSsrKQotCQkgIHsKLQkJCSAgUmVnaXN0cnkgcmVnID0gcmVnTWFuYWdlci5sb2FkUmVnaXN0cnkocmVnVVJJc1tpXSk7Ci0JCQkgIGlmIChyZWcgaW5zdGFuY2VvZiBVRERJUmVnaXN0cnkpCi0JCQkgIHsKLQkJCQkgIFVERElSZWdpc3RyeSB1ZGRpUmVnID0gKFVERElSZWdpc3RyeSlyZWc7Ci0JCQkJICBpZih1ZGRpUmVnLmdldERpc2NvdmVyeVVSTCgpLmVxdWFscyhnZXRJbnF1aXJ5VVJMKCkpKXsKLQkJCQkJICAKLQkJCQkJICAKLQkJCQkJIAotCQkJCQkgIFRheG9ub215W10gdGF4b25vbWllcyA9IHJlZ01hbmFnZXIubG9hZFRheG9ub21pZXMoVURESVJlZ2lzdHJ5U2VydmljZS5pbnN0YW5jZSgpLmdldFRheG9ub215VVJJcyh1ZGRpUmVnKSk7Ci0JCQkJCSAgaWYgKHRheG9ub21pZXMgIT0gbnVsbCkKLQkJCQkgICAgICAgIHsKLQkJCQkgICAgICAgICAgSGFzaHRhYmxlIHRheG9ub215VGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0JCQkJICAgICAgICAgIGZvciAoaW50IGo9MDsgajx0YXhvbm9taWVzLmxlbmd0aDsgaisrKQotCQkJCSAgICAgICAgICB7Ci0JCQkJICAgICAgICAgICAgVGF4b25vbXkgdGF4b25vbXkgPSB0YXhvbm9taWVzW2pdOwotCQkJCSAgICAgICAgICAgIFN0cmluZyBuYW1lID0gdGF4b25vbXkuZ2V0TmFtZSgpOwotCQkJCSAgICAgICAgICAgIFN0cmluZyB0bW9kZWxLZXkgPSB0YXhvbm9teS5nZXRUbW9kZWxLZXkoKTsKLQkJCQkgICAgICAgICAgICBDYXRlZ29yeU1vZGVsIGNhdE1vZGVsID0gbmV3IENhdGVnb3J5TW9kZWwoKTsKLQkJCQkgICAgICAgICAgICBjYXRNb2RlbC5zZXREaXNwbGF5TmFtZShuYW1lKTsKLQkJCQkgICAgICAgICAgICBjYXRNb2RlbC5zZXRDYXRlZ29yeUtleShuYW1lKTsKLQkJCQkgICAgICAgICAgICBjYXRNb2RlbC5zZXRUTW9kZWxLZXkodG1vZGVsS2V5KTsKLQkJCQkgICAgICAgICAgICBjYXRNb2RlbC5sb2FkRnJvbVRheG9ub215KHRheG9ub215KTsKLQkJCQkgICAgICAgICAgICB0YXhvbm9teVRhYmxlLnB1dCh0bW9kZWxLZXksIGNhdE1vZGVsKTsKLQkJCQkgICAgICAgICAgfQotCQkJCSAgICAgICAgICAKLQkJCQkgICAgICAgICAgc2V0VXNlckRlZmluZWRDYXRlZ29yaWVzKHRheG9ub215VGFibGUpOwotCQkJCSAgICAgICAgfSAgIAotCQkJCSAgfQotCQkgIAotCQkJICB9Ci0JICAKLQkJICB9Ci0JICB9Y2F0Y2ggKENvcmVFeGNlcHRpb24gY2UpCi0JICB7Ci0JCSAgLy8gVE9ETzogQmV0dGVyIGVycm9yIHJlcG9ydGluZwotCQkgIGNlLnByaW50U3RhY2tUcmFjZSgpOwotCSAgfSAgCi0gIH0KLQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvU2VydmljZUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvU2VydmljZUVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYzN2NiYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvZGF0YW1vZGVsL1NlcnZpY2VFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotCi1wdWJsaWMgY2xhc3MgU2VydmljZUVsZW1lbnQgZXh0ZW5kcyBBYnN0cmFjdFVERElFbGVtZW50Ci17Ci0gIHByaXZhdGUgQnVzaW5lc3NTZXJ2aWNlIGJzXzsKLSAgCi0gIHB1YmxpYyBTZXJ2aWNlRWxlbWVudChCdXNpbmVzc1NlcnZpY2UgYnMsTW9kZWwgbW9kZWwpCi0gIHsKLSAgICBzdXBlcihicy5nZXREZWZhdWx0TmFtZVN0cmluZygpLG1vZGVsKTsKLSAgICBzZXRLZXkoYnMuZ2V0U2VydmljZUtleSgpKTsKLSAgICBic18gPSBiczsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIEJ1c2luZXNzU2VydmljZSBnZXRCdXNpbmVzc1NlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIGJzXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9TZXJ2aWNlSW50ZXJmYWNlRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9TZXJ2aWNlSW50ZXJmYWNlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzJkODgxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvU2VydmljZUludGVyZmFjZUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLQotcHVibGljIGNsYXNzIFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IGV4dGVuZHMgQWJzdHJhY3RVRERJRWxlbWVudAotewotICBwcml2YXRlIFRNb2RlbCB0TW9kZWxfOwotICAgIAotICBwdWJsaWMgU2VydmljZUludGVyZmFjZUVsZW1lbnQoVE1vZGVsIHRNb2RlbCxNb2RlbCBtb2RlbCkKLSAgewotICAgIHN1cGVyKHRNb2RlbC5nZXROYW1lU3RyaW5nKCksbW9kZWwpOwotICAgIHRNb2RlbF8gPSB0TW9kZWw7Ci0gICAgc2V0S2V5KHRNb2RlbC5nZXRUTW9kZWxLZXkoKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgVE1vZGVsIGdldFRNb2RlbCgpCi0gIHsKLSAgICByZXR1cm4gdE1vZGVsXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9VRERJTWFpbkVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9kYXRhbW9kZWwvVURESU1haW5FbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzNzEyMDAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL2RhdGFtb2RlbC9VRERJTWFpbkVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgVURESU1haW5FbGVtZW50IGV4dGVuZHMgVHJlZUVsZW1lbnQKLXsKLSAgcHJpdmF0ZSBIYXNodGFibGUgcmVnaXN0cnlOYW1lc187Ci0KLSAgcHVibGljIFVERElNYWluRWxlbWVudChTdHJpbmcgbmFtZSxNb2RlbCBtb2RlbCkKLSAgewotICAgIHN1cGVyKG5hbWUsbW9kZWwpOwotICAgIHJlZ2lzdHJ5TmFtZXNfID0gbmV3IEhhc2h0YWJsZSgpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gY29udGFpbnNSZWdpc3RyeU5hbWUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICByZXR1cm4gKHJlZ2lzdHJ5TmFtZXNfLmdldChuYW1lKSAhPSBudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGFkZFJlZ2lzdHJ5TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIHJlZ2lzdHJ5TmFtZXNfLnB1dChuYW1lLEJvb2xlYW4uVFJVRSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCByZW1vdmVSZWdpc3RyeU5hbWUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICByZWdpc3RyeU5hbWVzXy5yZW1vdmUobmFtZSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBjbGVhclJlZ2lzdHJ5TmFtZXMoKQotICB7Ci0gICAgcmVnaXN0cnlOYW1lc18uY2xlYXIoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL0FkZFRvRmF2b3JpdGVzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL0FkZFRvRmF2b3JpdGVzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODUzYTQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9BZGRUb0Zhdm9yaXRlc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkFjdGlvblRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuQWRkVG9GYXZvcml0ZXNBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIEFkZFRvRmF2b3JpdGVzVG9vbCBleHRlbmRzIEFjdGlvblRvb2wgewotICAgIHB1YmxpYyBBZGRUb0Zhdm9yaXRlc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZmF2b3JpdGVzX2VuYWJsZWQuZ2lmIiwgImltYWdlcy9mYXZvcml0ZXNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIEFkZFRvRmF2b3JpdGVzQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9CdXNQdWJsaXNoU2VydmljZVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9CdXNQdWJsaXNoU2VydmljZVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU3OTEwMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvQnVzUHVibGlzaFNlcnZpY2VUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RGaW5kVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgQnVzUHVibGlzaFNlcnZpY2VUb29sIGV4dGVuZHMgRm9ybVRvb2wgaW1wbGVtZW50cyBNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZQotewotICBwcml2YXRlIFJlZ0ZpbmRUb29sIHJlZ0ZpbmRUb29sXzsKLQotICBwdWJsaWMgQnVzUHVibGlzaFNlcnZpY2VUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBhbHQpCi0gIHsKLSAgICBzdXBlcih0b29sTWFuYWdlciwidWRkaS9pbWFnZXMvcHVibGlzaF9zZXJ2aWNlX2VuYWJsZWQuZ2lmIiwidWRkaS9pbWFnZXMvcHVibGlzaF9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZiIsYWx0KTsKLSAgICByZWdGaW5kVG9vbF8gPSBuZXcgUmVnRmluZFRvb2wobmV3IFRvb2xNYW5hZ2VyKHRvb2xNYW5hZ2VyLmdldE5vZGUoKSksICIiKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXREZWZhdWx0UHJvcGVydGllcygpCi0gIHsKLSAgICB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Q29udHJvbGxlcigpLmdldFVERElQZXJzcGVjdGl2ZSgpOwotCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVksIiIpOwotCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUykpOwotICAgIFN0cmluZyBzaW1wbGVTdHlsZVN0cmluZyA9IFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0lNUExFKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTLHNpbXBsZVN0eWxlU3RyaW5nKTsKLQotICAgIC8vIFJlZ1B1Ymxpc2hTZXJ2aWNlU2ltcGxlQWN0aW9uIGlucHV0cwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfV1NETF9VUkwsIiIpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfTkFNRSwiIik7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9ERVNDUklQVElPTiwiIik7Ci0KLSAgICAvLyBSZWdQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uIGlucHV0cwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCwiIik7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBhZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMoUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQpCi0gIHsKLSAgICBTdHJpbmcgcHVibGlzaFVSTCA9IHJlZ0VsZW1lbnQuZ2V0UHVibGlzaFVSTCgpOwotICAgIFN0cmluZyB1c2VySWQgPSByZWdFbGVtZW50LmdldFVzZXJJZCgpOwotICAgIFN0cmluZyBwYXNzd29yZCA9IHJlZ0VsZW1lbnQuZ2V0Q3JlZCgpOwotCi0gICAgaWYgKHB1Ymxpc2hVUkwgPT0gbnVsbCkKLSAgICAgIHB1Ymxpc2hVUkwgPSAiIjsKLSAgICBpZiAodXNlcklkID09IG51bGwpCi0gICAgICB1c2VySWQgPSAiIjsKLSAgICBpZiAocGFzc3dvcmQgPT0gbnVsbCkKLSAgICAgIHBhc3N3b3JkID0gIiI7Ci0KLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMLHB1Ymxpc2hVUkwpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklELHVzZXJJZCk7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCxwYXNzd29yZCk7Ci0gICAgcmVnRmluZFRvb2xfLmFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhyZWdFbGVtZW50KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKE9iamVjdCBzdWJRdWVyeUtleU9iamVjdCkKLSAgewotICAgIC8vIEVtcHR5L05vbi1leGlzdGVudCBzdWJxdWVyeWtleSBpbXBsaWVzIHB1Ymxpc2ggZm9ybS4gQWxsIGVsc2UgaW1wbGllcyBxdWVyeSBmb3JtLgotICAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpc3ViUXVlcnlLZXlPYmplY3Q7Ci0gICAgaWYgKHN1YlF1ZXJ5S2V5ID09IG51bGwgfHwgc3ViUXVlcnlLZXkubGVuZ3RoKCkgPCAxKQotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHJlZ0ZpbmRUb29sXy5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlPYmplY3QpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgIHJldHVybiBTZWxlY3RGaW5kVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGUuZ2V0Tm9kZUlkKCksdG9vbElkXyxub2RlLmdldFZpZXdJZCgpLG5vZGUuZ2V0Vmlld1Rvb2xJZCgpLHN1YlF1ZXJ5S2V5LGZvckhpc3RvcnkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpCi0gIHsKLSAgICBPYmplY3Qgc3ViUXVlcnlLZXlPYmplY3QgPSBnZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSk7Ci0gICAgU3RyaW5nIHN1YlF1ZXJ5S2V5ID0gbnVsbDsKLSAgICBpZiAoc3ViUXVlcnlLZXlPYmplY3QgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBnZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJJRVNfUFJPUEVSVElFUyk7Ci0gICAgICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2Ugc3ViUXVlcnlQcm9wZXJ0aWVzID0gZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5T2JqZWN0KTsKLSAgICAgIE9iamVjdCBzdWJRdWVyeUdldE9iamVjdCA9IHN1YlF1ZXJ5UHJvcGVydGllcy5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0dFVCk7Ci0gICAgICBpZiAoc3ViUXVlcnlHZXRPYmplY3QgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgYm9vbGVhbiBpc1N1YlF1ZXJ5R2V0ID0gKChCb29sZWFuKXN1YlF1ZXJ5R2V0T2JqZWN0KS5ib29sZWFuVmFsdWUoKTsKLSAgICAgICAgaWYgKGlzU3ViUXVlcnlHZXQpCi0gICAgICAgICAgcmV0dXJuICJ1ZGRpL2Zvcm1zL0dldEZvcm0uanNwIjsKLSAgICAgIH0KLSAgICAgIHN1YlF1ZXJ5S2V5ID0gKFN0cmluZylzdWJRdWVyeUtleU9iamVjdDsKLSAgICB9Ci0gICAgICAKLSAgICBpZiAoc3ViUXVlcnlLZXkgPT0gbnVsbCB8fCBzdWJRdWVyeUtleS5sZW5ndGgoKSA8IDEpCi0gICAgICByZXR1cm4gInVkZGkvZm9ybXMvQnVzUHVibGlzaFNlcnZpY2VGb3JtLmpzcCI7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHJlZ0ZpbmRUb29sXy5nZXRGb3JtTGluaygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvQnVzaW5lc3NEZXRhaWxzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL0J1c2luZXNzRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQxZjYzYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvQnVzaW5lc3NEZXRhaWxzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlByb3h5TG9hZFBhZ2VBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5CdXNpbmVzc0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuQ2F0ZWdvcnlCYWc7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkRpc2NvdmVyeVVSTHM7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLklkZW50aWZpZXJCYWc7Ci0KLXB1YmxpYyBjbGFzcyBCdXNpbmVzc0RldGFpbHNUb29sIGV4dGVuZHMgRGV0YWlsc1Rvb2wKLXsKLSAgcHVibGljIEJ1c2luZXNzRGV0YWlsc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsU3RyaW5nIGFsdCkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLGFsdCxQcm94eUxvYWRQYWdlQWN0aW9uLmdldEFjdGlvbkxpbmsoInVkZGkvZm9ybXMvQnVzaW5lc3NEZXRhaWxzRm9ybS5qc3AiKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBpbml0RGVmYXVsdFByb3BlcnRpZXMoKQotICB7Ci0gICAgY2xlYXJQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgQnVzaW5lc3NFbGVtZW50IGJ1c0VsZW1lbnQgPSAoQnVzaW5lc3NFbGVtZW50KSh0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldFRyZWVFbGVtZW50KCkpOwotICAgIEJ1c2luZXNzRW50aXR5IGJlID0gYnVzRWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpOwotCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSxiZS5nZXRCdXNpbmVzc0tleSgpKTsKLQotICAgIFZlY3RvciBuYW1lVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIGNvcHlJbmRleFZlY3RvcihiZS5nZXROYW1lVmVjdG9yKCksbmFtZVZlY3Rvcik7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyxuYW1lVmVjdG9yKTsKLQotICAgIFZlY3RvciBkZXNjcmlwdGlvblZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICBjb3B5SW5kZXhWZWN0b3IoYmUuZ2V0RGVzY3JpcHRpb25WZWN0b3IoKSxkZXNjcmlwdGlvblZlY3Rvcik7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMsZGVzY3JpcHRpb25WZWN0b3IpOwotCi0gICAgSWRlbnRpZmllckJhZyBpZEJhZyA9IGJlLmdldElkZW50aWZpZXJCYWcoKTsKLSAgICBpZiAoaWRCYWcgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3IgaWRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBjb3B5SW5kZXhWZWN0b3IoaWRCYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKSxpZFZlY3Rvcik7Ci0gICAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0lERU5USUZJRVJTLGlkVmVjdG9yKTsKLSAgICB9Ci0KLSAgICBDYXRlZ29yeUJhZyBjYXRCYWcgPSBiZS5nZXRDYXRlZ29yeUJhZygpOwotICAgIGlmIChjYXRCYWcgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3IgY2F0VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgY29weUluZGV4VmVjdG9yKGNhdEJhZy5nZXRLZXllZFJlZmVyZW5jZVZlY3RvcigpLGNhdFZlY3Rvcik7Ci0gICAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0NBVEVHT1JJRVMsY2F0VmVjdG9yKTsKLSAgICB9Ci0KLSAgICBEaXNjb3ZlcnlVUkxzIGRpc2NvdmVyeVVSTHMgPSBiZS5nZXREaXNjb3ZlcnlVUkxzKCk7Ci0gICAgaWYgKGRpc2NvdmVyeVVSTHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3IgZGlzY292ZXJ5VVJMVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgY29weUluZGV4VmVjdG9yKGRpc2NvdmVyeVVSTHMuZ2V0RGlzY292ZXJ5VVJMVmVjdG9yKCksZGlzY292ZXJ5VVJMVmVjdG9yKTsKLSAgICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRElTQ09WRVJZVVJMUyxkaXNjb3ZlcnlVUkxWZWN0b3IpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL0J1c2luZXNzTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL0J1c2luZXNzTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTZiYWU4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9CdXNpbmVzc05vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5CdXNpbmVzc0dldFNlcnZpY2VzQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBCdXNpbmVzc05vZGUgZXh0ZW5kcyBVRERJTmF2aWdhdG9yTm9kZQotewotICBwcml2YXRlIERldGFpbHNUb29sIGRldGFpbHNUb29sXzsKLSAgcHJpdmF0ZSBCdXNQdWJsaXNoU2VydmljZVRvb2wgcHVibGlzaFNlcnZpY2VUb29sXzsKLSAgcHJpdmF0ZSBNYW5hZ2VQdWJsaXNoZXJBc3NlcnRpb25zVG9vbCBtYW5hZ2VQdWJsaXNoZXJBc3NlcnRpb25zVG9vbF87Ci0gIHByaXZhdGUgTWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzVG9vbCBtYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNUb29sXzsKLSAgcHJpdmF0ZSBVbnB1Ymxpc2hUb29sIHVucHVibGlzaFRvb2xfOwotCi0gIHB1YmxpYyBCdXNpbmVzc05vZGUoVHJlZUVsZW1lbnQgZWxlbWVudCxOb2RlTWFuYWdlciBub2RlTWFuYWdlcixpbnQgbm9kZURlcHRoKQotICB7Ci0gICAgc3VwZXIoZWxlbWVudCxub2RlTWFuYWdlcixub2RlRGVwdGgsInVkZGkvaW1hZ2VzL2J1c2luZXNzX2hpZ2hsaWdodGVkLmdpZiIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgaW5pdFRvb2xzKCkKLSAgewotICAgIENvbnRyb2xsZXIgY29udHJvbGxlciA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCk7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgZGV0YWlsc1Rvb2xfID0gbmV3IEJ1c2luZXNzRGV0YWlsc1Rvb2wodG9vbE1hbmFnZXJfLHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfQlVTSU5FU1NfREVUQUlMUyIpKTsKLSAgICBuZXcgR2V0U2VydmljZXNUb29sKHRvb2xNYW5hZ2VyXyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0dFVF9TRVJWSUNFUyIpLEJ1c2luZXNzR2V0U2VydmljZXNBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWRfKSk7ICAgIAotICAgIHB1Ymxpc2hTZXJ2aWNlVG9vbF8gPSBuZXcgQnVzUHVibGlzaFNlcnZpY2VUb29sKHRvb2xNYW5hZ2VyXyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1BVQkxJU0hfU0VSVklDRSIpKTsKLSAgICBtYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNUb29sXyA9IG5ldyBNYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNUb29sKHRvb2xNYW5hZ2VyXyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX01BTkFHRV9SRUZFUkVOQ0VEX1NFUlZJQ0VTIikpOwotICAgIG1hbmFnZVB1Ymxpc2hlckFzc2VydGlvbnNUb29sXyA9IG5ldyBNYW5hZ2VQdWJsaXNoZXJBc3NlcnRpb25zVG9vbCh0b29sTWFuYWdlcl8sdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9NQU5BR0VfUFVCTElTSEVSX0FTU0VSVElPTlMiKSk7Ci0gICAgbmV3IEFkZFRvRmF2b3JpdGVzVG9vbCh0b29sTWFuYWdlcl8sIHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfQUREX1RPX0ZBVk9SSVRFUyIpKTsKLSAgICB1bnB1Ymxpc2hUb29sXyA9IG5ldyBVbnB1Ymxpc2hUb29sKHRvb2xNYW5hZ2VyXywidWRkaS9pbWFnZXMvdW5wdWJsaXNoX2J1c19lbmFibGVkLmdpZiIsInVkZGkvaW1hZ2VzL3VucHVibGlzaF9idXNfaGlnaGxpZ2h0ZWQuZ2lmIix1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1VOUFVCTElTSF9CVVNJTkVTUyIpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCkKLSAgewotICAgIGRldGFpbHNUb29sXy5hZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMocmVnRWxlbWVudCk7Ci0gICAgcHVibGlzaFNlcnZpY2VUb29sXy5hZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMocmVnRWxlbWVudCk7Ci0gICAgbWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzVG9vbF8uYWRkQXV0aGVudGljYXRpb25Qcm9wZXJ0aWVzKHJlZ0VsZW1lbnQpOwotICAgIG1hbmFnZVB1Ymxpc2hlckFzc2VydGlvbnNUb29sXy5hZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMocmVnRWxlbWVudCk7Ci0gICAgdW5wdWJsaXNoVG9vbF8uYWRkQXV0aGVudGljYXRpb25Qcm9wZXJ0aWVzKHJlZ0VsZW1lbnQpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvQ2F0ZWdvcnlOb2RlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvQ2F0ZWdvcnlOb2RlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjN2ZlY2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL0NhdGVnb3J5Tm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RDYXRlZ29yeU5vZGVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5Ub2dnbGVDYXRlZ29yeU5vZGVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElGcmFtZU5hbWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkNhdGVnb3J5RWxlbWVudDsKLQotcHVibGljIGNsYXNzIENhdGVnb3J5Tm9kZSBleHRlbmRzIE5vZGUKLXsKLSAgcHVibGljIENhdGVnb3J5Tm9kZShUcmVlRWxlbWVudCBlbGVtZW50LE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLGludCBub2RlRGVwdGgpCi0gIHsKLSAgICBzdXBlcihlbGVtZW50LG5vZGVNYW5hZ2VyLG5vZGVEZXB0aCwidWRkaS9pbWFnZXMvY2F0ZWdvcnkuZ2lmIik7Ci0gICAgc2V0VmlzaWJpbGl0eU9mQ2hpbGRyZW4oZmFsc2UpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgY3JlYXRlQ2hpbGRyZW4oKQotICB7Ci0gICAgRW51bWVyYXRpb24gY2hpbGRyZW4gPSBlbGVtZW50Xy5nZXRFbGVtZW50cyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1NVQkNBVEVHT1JJRVMpOwotICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKQotICAgIHsKLSAgICAgIHdoaWxlIChjaGlsZHJlbi5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHsKLSAgICAgICAgQ2F0ZWdvcnlFbGVtZW50IGNhdGVnb3J5RWxlbWVudCA9IChDYXRlZ29yeUVsZW1lbnQpY2hpbGRyZW4ubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgQ2F0ZWdvcnlOb2RlIGNhdGVnb3J5Tm9kZSA9IG5ldyBDYXRlZ29yeU5vZGUoY2F0ZWdvcnlFbGVtZW50LG5vZGVNYW5hZ2VyXyxub2RlRGVwdGhfKzEpOwotICAgICAgICBhZGRDaGlsZChjYXRlZ29yeU5vZGUpOwotICAgICAgICBjYXRlZ29yeU5vZGUuY3JlYXRlQ2hpbGRyZW4oKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldE5vZGVOYW1lKCkKLSAgewotICAgIENhdGVnb3J5RWxlbWVudCBjYXRlZ29yeUVsZW1lbnQgPSAoQ2F0ZWdvcnlFbGVtZW50KWVsZW1lbnRfOwotICAgIHJldHVybiBjYXRlZ29yeUVsZW1lbnQuZ2V0TmFtZUZvclRyZWUoKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgZ2V0VG9nZ2xlTm9kZUFjdGlvbkhyZWYoKQotICB7Ci0gICAgcmV0dXJuIFRvZ2dsZUNhdGVnb3J5Tm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKGdldE5vZGVNYW5hZ2VyKCkuZ2V0Q29udHJvbGxlcigpLmdldFNlc3Npb25JZCgpLG5vZGVJZF8saXNPcGVuXyk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIGdldExpbmtBY3Rpb25IcmVmKCkKLSAgewotICAgIHJldHVybiBTZWxlY3RDYXRlZ29yeU5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhnZXROb2RlTWFuYWdlcigpLmdldENvbnRyb2xsZXIoKS5nZXRTZXNzaW9uSWQoKSxub2RlSWRfKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgZ2V0VG9nZ2xlTm9kZUFjdGlvblRhcmdldCgpCi0gIHsKLSAgICByZXR1cm4gVURESUZyYW1lTmFtZXMuQ0FURUdPUklFU19XT1JLQVJFQTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgZ2V0TGlua0FjdGlvblRhcmdldCgpCi0gIHsKLSAgICByZXR1cm4gVURESUZyYW1lTmFtZXMuQ0FURUdPUklFU19XT1JLQVJFQTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXRUb29scygpCi0gIHsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL0RldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFkNmM1Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvRGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgRGV0YWlsc1Rvb2wgZXh0ZW5kcyBGb3JtVG9vbAotewotICBwcml2YXRlIFN0cmluZyBmb3JtTGlua187Ci0KLSAgcHVibGljIERldGFpbHNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBhbHQsU3RyaW5nIGZvcm1MaW5rKQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsImltYWdlcy9kZXRhaWxzX2VuYWJsZWQuZ2lmIiwiaW1hZ2VzL2RldGFpbHNfaGlnaGxpZ2h0ZWQuZ2lmIixhbHQpOwotICAgIGZvcm1MaW5rXyA9IGZvcm1MaW5rOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKCkKLSAgewotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGUuZ2V0Tm9kZUlkKCksdG9vbElkXyxub2RlLmdldFZpZXdJZCgpLG5vZGUuZ2V0Vmlld1Rvb2xJZCgpLGZvckhpc3RvcnkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpCi0gIHsKLSAgICByZXR1cm4gZm9ybUxpbmtfOwotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgY29weUluZGV4VmVjdG9yKFZlY3RvciBzb3VyY2UsVmVjdG9yIGRlc3RpbmF0aW9uKQotICB7Ci0gICAgZGVzdGluYXRpb24ucmVtb3ZlQWxsRWxlbWVudHMoKTsKLSAgICBmb3IgKGludCBpPTA7aTxzb3VyY2Uuc2l6ZSgpO2krKykKLSAgICB7Ci0gICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IG5ldyBMaXN0RWxlbWVudChzb3VyY2UuZWxlbWVudEF0KGkpKTsKLSAgICAgIGxpc3RFbGVtZW50LnNldFZpZXdJZChpKTsKLSAgICAgIC8vIFRoZSBuZXh0IGl0ZW0gaW5kaWNhdGVzIHRoYXQgdGhpcyBlbGVtZW50IGlzIHRvIGJlIGluIG5vbi1lZGl0IHN0YXRlLgotICAgICAgbGlzdEVsZW1lbnQuc2V0VGFyZ2V0Vmlld1Rvb2xJbmZvKC0xLC0xLGkpOwotICAgICAgZGVzdGluYXRpb24uYWRkRWxlbWVudChsaXN0RWxlbWVudCk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHZvaWQgYWRkQXV0aGVudGljYXRpb25Qcm9wZXJ0aWVzKFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50KQotICB7Ci0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSByZWdFbGVtZW50LmdldFB1Ymxpc2hVUkwoKTsKLSAgICBTdHJpbmcgdXNlcklkID0gcmVnRWxlbWVudC5nZXRVc2VySWQoKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQgPSByZWdFbGVtZW50LmdldENyZWQoKTsKLQotICAgIGlmIChwdWJsaXNoVVJMID09IG51bGwpCi0gICAgICBwdWJsaXNoVVJMID0gIiI7Ci0gICAgaWYgKHVzZXJJZCA9PSBudWxsKQotICAgICAgdXNlcklkID0gIiI7Ci0gICAgaWYgKHBhc3N3b3JkID09IG51bGwpCi0gICAgICBwYXNzd29yZCA9ICIiOwotCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySWQpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQscGFzc3dvcmQpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvR2V0QnVzaW5lc3Nlc1Rvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9HZXRCdXNpbmVzc2VzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDg5MTE1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9HZXRCdXNpbmVzc2VzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQWN0aW9uVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIEdldEJ1c2luZXNzZXNUb29sIGV4dGVuZHMgQWN0aW9uVG9vbAotewotICBwcml2YXRlIFN0cmluZyBhY3Rpb25MaW5rXzsKLSAgcHVibGljIEdldEJ1c2luZXNzZXNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBlbmFibGVkSW1hZ2VQYXRoLFN0cmluZyBoaWdobGlnaHRlZEltYWdlUGF0aCxTdHJpbmcgYWx0LFN0cmluZyBhY3Rpb25MaW5rKQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsZW5hYmxlZEltYWdlUGF0aCxoaWdobGlnaHRlZEltYWdlUGF0aCxhbHQpOwotICAgIGFjdGlvbkxpbmtfID0gYWN0aW9uTGluazsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KQotICB7Ci0gICAgTm9kZSBub2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICByZXR1cm4gU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlLmdldE5vZGVJZCgpLHRvb2xJZF8sbm9kZS5nZXRWaWV3SWQoKSxub2RlLmdldFZpZXdUb29sSWQoKSxmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpCi0gIHsKLSAgICByZXR1cm4gYWN0aW9uTGlua187Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9HZXRTZXJ2aWNlSW50ZXJmYWNlc1Rvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9HZXRTZXJ2aWNlSW50ZXJmYWNlc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjcxZjQ4YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvR2V0U2VydmljZUludGVyZmFjZXNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgR2V0U2VydmljZUludGVyZmFjZXNUb29sIGV4dGVuZHMgQWN0aW9uVG9vbAotewotICBwcml2YXRlIFN0cmluZyBhY3Rpb25MaW5rXzsKLSAgcHVibGljIEdldFNlcnZpY2VJbnRlcmZhY2VzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlcixTdHJpbmcgYWx0LFN0cmluZyBhY3Rpb25MaW5rKQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsInVkZGkvaW1hZ2VzL3NlcnZpY2VfaW50ZXJmYWNlc19jbG9zZWRfZW5hYmxlZC5naWYiLCJ1ZGRpL2ltYWdlcy9zZXJ2aWNlX2ludGVyZmFjZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiIsYWx0KTsKLSAgICBhY3Rpb25MaW5rXyA9IGFjdGlvbkxpbms7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIE5vZGUgbm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgcmV0dXJuIFNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZS5nZXROb2RlSWQoKSx0b29sSWRfLG5vZGUuZ2V0Vmlld0lkKCksbm9kZS5nZXRWaWV3VG9vbElkKCksZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKQotICB7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmtfOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvR2V0U2VydmljZXNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvR2V0U2VydmljZXNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNTY4NjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL0dldFNlcnZpY2VzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQWN0aW9uVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIEdldFNlcnZpY2VzVG9vbCBleHRlbmRzIEFjdGlvblRvb2wKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgYWN0aW9uTGlua187Ci0gIHB1YmxpYyBHZXRTZXJ2aWNlc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsU3RyaW5nIGFsdCxTdHJpbmcgYWN0aW9uTGluaykKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCJ1ZGRpL2ltYWdlcy9zZXJ2aWNlc19jbG9zZWRfZW5hYmxlZC5naWYiLCJ1ZGRpL2ltYWdlcy9zZXJ2aWNlc19jbG9zZWRfaGlnaGxpZ2h0ZWQuZ2lmIixhbHQpOwotICAgIGFjdGlvbkxpbmtfID0gYWN0aW9uTGluazsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KQotICB7Ci0gICAgTm9kZSBub2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICByZXR1cm4gU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlLmdldE5vZGVJZCgpLHRvb2xJZF8sbm9kZS5nZXRWaWV3SWQoKSxub2RlLmdldFZpZXdUb29sSWQoKSxmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpCi0gIHsKLSAgICByZXR1cm4gYWN0aW9uTGlua187Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9JdGVtc1N1bW1hcnlUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvSXRlbXNTdW1tYXJ5VG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODA3YjhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9JdGVtc1N1bW1hcnlUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlByb3h5TG9hZFBhZ2VBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlVSTFV0aWxzOwotCi1wdWJsaWMgY2xhc3MgSXRlbXNTdW1tYXJ5VG9vbCBleHRlbmRzIEZvcm1Ub29sCi17Ci0gIHByaXZhdGUgU3RyaW5nIGZvcm1MaW5rXzsKLQotICBwdWJsaWMgSXRlbXNTdW1tYXJ5VG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlcixTdHJpbmcgZW5hYmxlZEltYWdlLFN0cmluZyBoaWdobGlnaHRlZEltYWdlLFN0cmluZyBhbHQsaW50IHF1ZXJ5SXRlbSkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLGVuYWJsZWRJbWFnZSxoaWdobGlnaHRlZEltYWdlLGFsdCk7Ci0gICAgU3RyaW5nQnVmZmVyIGZvcm1MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9mb3Jtcy9JdGVtc1N1bW1hcnlGb3JtLmpzcD8iKTsKLSAgICBmb3JtTGluay5hcHBlbmQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNKS5hcHBlbmQoJz0nKS5hcHBlbmQocXVlcnlJdGVtKTsKLQlTdHJpbmcgZW5jb2RlZEZvcm1MaW5rID0gVVJMVXRpbHMuZW5jb2RlKGZvcm1MaW5rLnRvU3RyaW5nKCkpOwotICAgIGZvcm1MaW5rXyA9IFByb3h5TG9hZFBhZ2VBY3Rpb24uZ2V0QWN0aW9uTGluayhlbmNvZGVkRm9ybUxpbmspOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKCkKLSAgewotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGUuZ2V0Tm9kZUlkKCksdG9vbElkXyxub2RlLmdldFZpZXdJZCgpLG5vZGUuZ2V0Vmlld1Rvb2xJZCgpLGZvckhpc3RvcnkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpCi0gIHsKLSAgICByZXR1cm4gZm9ybUxpbmtfOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvTG9naW5Ub29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvTG9naW5Ub29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNmIyNTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL0xvZ2luVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyNyAgIDEzNjQ0OSBicnVuc3NlbkB1cy5pYm0uY29tIC0gVmluY2UgQnJ1bnNzZW4gIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIExvZ2luVG9vbCBleHRlbmRzIEZvcm1Ub29sCi17Ci0gIHByaXZhdGUgQ29udHJvbGxlciBjb250cm9sbGVyXzsKLSAgcHJpdmF0ZSBTdHJpbmcgZm9ybUxpbmsgPSAidWRkaS9mb3Jtcy9Mb2dpblVkZGlGb3JtLmpzcCI7Ci0gIAotICBwdWJsaWMgTG9naW5Ub29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsInVkZGkvaW1hZ2VzL29wZW5fcmVnaXN0cnlfZW5hYmxlZC5naWYiLCJ1ZGRpL2ltYWdlcy9vcGVuX3JlZ2lzdHJ5X2hpZ2hsaWdodGVkLmdpZiIsYWx0KTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXREZWZhdWx0UHJvcGVydGllcygpCi0gIHsKLSAgICBjb250cm9sbGVyXyA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRDb250cm9sbGVyKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIE5vZGUgbm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgcmV0dXJuIFNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZS5nZXROb2RlSWQoKSx0b29sSWRfLG5vZGUuZ2V0Vmlld0lkKCksbm9kZS5nZXRWaWV3VG9vbElkKCksZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkKLSAgewotICAgIHJldHVybiBmb3JtTGluazsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0VG9Mb2dvdXRMaW5rKCkgCi0gIHsKLSAgCWZvcm1MaW5rID0gInVkZGkvYWN0aW9ucy9Mb2dvdXRBZHZhbmNlZEFjdGlvbkpTUC5qc3AiOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRUb1JlZ2lzdHJ5TGluaygpIAotICB7Ci0gIAlmb3JtTGluayA9ICIiOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgRW51bWVyYXRpb24gZ2V0RmF2b3JpdGVSZWdpc3RyeUVsZW1lbnRzKCkKLSAgewotICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBmYXZvcml0ZXNOb2RlTWFuYWdlciA9IGZhdlBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgVHJlZUVsZW1lbnQgZmF2b3JpdGVzTWFpbkVsZW1lbnQgPSBmYXZvcml0ZXNOb2RlTWFuYWdlci5nZXRSb290Tm9kZSgpLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgVHJlZUVsZW1lbnQgZmF2b3JpdGVSZWdpc3RyaWVzRWxlbWVudCA9IChUcmVlRWxlbWVudCkoZmF2b3JpdGVzTWFpbkVsZW1lbnQuZ2V0RWxlbWVudHMoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfUkVHSVNUUllfRk9MREVSX05PREUpLm5leHRFbGVtZW50KCkpOwotICAgIHJldHVybiBmYXZvcml0ZVJlZ2lzdHJpZXNFbGVtZW50LmdldEVsZW1lbnRzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1JFR0lTVFJZX05PREUpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvTWFuYWdlUHVibGlzaGVyQXNzZXJ0aW9uc1Rvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9NYW5hZ2VQdWJsaXNoZXJBc3NlcnRpb25zVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDU3ZDFlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9NYW5hZ2VQdWJsaXNoZXJBc3NlcnRpb25zVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuUHJveHlMb2FkUGFnZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RGaW5kVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgTWFuYWdlUHVibGlzaGVyQXNzZXJ0aW9uc1Rvb2wgZXh0ZW5kcyBGb3JtVG9vbCBpbXBsZW1lbnRzIE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlCi17Ci0gIFRvb2xNYW5hZ2VyIGludmlzaWJsZVRvb2xNYW5hZ2VyXzsKLSAgcHJpdmF0ZSBSZWdGaW5kVG9vbCByZWdGaW5kVG9vbF87Ci0KLSAgcHVibGljIE1hbmFnZVB1Ymxpc2hlckFzc2VydGlvbnNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsICJ1ZGRpL2ltYWdlcy9wdWJsaXNoZXJfYXNzZXJ0aW9uc19lbmFibGVkLmdpZiIsICJ1ZGRpL2ltYWdlcy9wdWJsaXNoZXJfYXNzZXJ0aW9uc19oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIGludmlzaWJsZVRvb2xNYW5hZ2VyXyA9IG5ldyBUb29sTWFuYWdlcih0b29sTWFuYWdlci5nZXROb2RlKCkpOwotICAgIHJlZ0ZpbmRUb29sXyA9IG5ldyBSZWdGaW5kVG9vbChpbnZpc2libGVUb29sTWFuYWdlcl8sIiIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKCkKLSAgewotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZLCIiKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0sU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMpKTsKLSAgICBTdHJpbmcgc2ltcGxlU3R5bGVTdHJpbmcgPSBTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NJTVBMRSk7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTLHNpbXBsZVN0eWxlU3RyaW5nKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTLHNpbXBsZVN0eWxlU3RyaW5nKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VfSU5URVJGQUNFUyxzaW1wbGVTdHlsZVN0cmluZyk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGdldEZvcm1Ub29sUHJvcGVydGllcyhPYmplY3Qgc3ViUXVlcnlLZXlPYmplY3QpCi0gIHsKLSAgICAvLyBFbXB0eS9Ob24tZXhpc3RlbnQgc3VicXVlcnlrZXkgaW1wbGllcyBwdWJsaXNoIGZvcm0uIEFsbCBlbHNlIGltcGxpZXMgcXVlcnkgZm9ybS4KLSAgICBTdHJpbmcgc3ViUXVlcnlLZXkgPSAoU3RyaW5nKXN1YlF1ZXJ5S2V5T2JqZWN0OwotICAgIGlmIChzdWJRdWVyeUtleSA9PSBudWxsIHx8IHN1YlF1ZXJ5S2V5Lmxlbmd0aCgpIDwgMSkKLSAgICAgIHJldHVybiB0aGlzOwotICAgIGVsc2UKLSAgICAgIHJldHVybiByZWdGaW5kVG9vbF8uZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5T2JqZWN0KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KQotICB7Ci0gICAgTm9kZSBub2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICBTdHJpbmcgc3ViUXVlcnlLZXkgPSAoU3RyaW5nKWdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgICByZXR1cm4gU2VsZWN0RmluZFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlLmdldE5vZGVJZCgpLHRvb2xJZF8sbm9kZS5nZXRWaWV3SWQoKSxub2RlLmdldFZpZXdUb29sSWQoKSxzdWJRdWVyeUtleSxmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCkKLSAgewotICAgIFN0cmluZyBwdWJsaXNoVVJMID0gcmVnRWxlbWVudC5nZXRQdWJsaXNoVVJMKCk7Ci0gICAgU3RyaW5nIHVzZXJJZCA9IHJlZ0VsZW1lbnQuZ2V0VXNlcklkKCk7Ci0gICAgU3RyaW5nIHBhc3N3b3JkID0gcmVnRWxlbWVudC5nZXRDcmVkKCk7Ci0KLSAgICBpZiAocHVibGlzaFVSTCA9PSBudWxsKQotICAgICAgcHVibGlzaFVSTCA9ICIiOwotICAgIGlmICh1c2VySWQgPT0gbnVsbCkKLSAgICAgIHVzZXJJZCA9ICIiOwotICAgIGlmIChwYXNzd29yZCA9PSBudWxsKQotICAgICAgcGFzc3dvcmQgPSAiIjsKLQotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwscHVibGlzaFVSTCk7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQsdXNlcklkKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JELHBhc3N3b3JkKTsKLSAgICByZWdGaW5kVG9vbF8uYWRkQXV0aGVudGljYXRpb25Qcm9wZXJ0aWVzKHJlZ0VsZW1lbnQpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpCi0gIHsKLSAgICBPYmplY3Qgc3ViUXVlcnlLZXlPYmplY3QgPSBnZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSk7Ci0gICAgU3RyaW5nIHN1YlF1ZXJ5S2V5ID0gbnVsbDsKLSAgICBpZiAoc3ViUXVlcnlLZXlPYmplY3QgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBnZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJJRVNfUFJPUEVSVElFUyk7Ci0gICAgICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2Ugc3ViUXVlcnlQcm9wZXJ0aWVzID0gZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5T2JqZWN0KTsKLSAgICAgIE9iamVjdCBzdWJRdWVyeUdldE9iamVjdCA9IHN1YlF1ZXJ5UHJvcGVydGllcy5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0dFVCk7Ci0gICAgICBpZiAoc3ViUXVlcnlHZXRPYmplY3QgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgYm9vbGVhbiBpc1N1YlF1ZXJ5R2V0ID0gKChCb29sZWFuKXN1YlF1ZXJ5R2V0T2JqZWN0KS5ib29sZWFuVmFsdWUoKTsKLSAgICAgICAgaWYgKGlzU3ViUXVlcnlHZXQpCi0gICAgICAgICAgcmV0dXJuICJ1ZGRpL2Zvcm1zL0dldEZvcm0uanNwIjsKLSAgICAgIH0KLSAgICAgIHN1YlF1ZXJ5S2V5ID0gKFN0cmluZylzdWJRdWVyeUtleU9iamVjdDsKLSAgICB9Ci0KLSAgICBpZiAoc3ViUXVlcnlLZXkgPT0gbnVsbCB8fCBzdWJRdWVyeUtleS5sZW5ndGgoKSA8IDEpCi0gICAgICByZXR1cm4gUHJveHlMb2FkUGFnZUFjdGlvbi5nZXRBY3Rpb25MaW5rKCJ1ZGRpL2Zvcm1zL01hbmFnZVB1Ymxpc2hlckFzc2VydGlvbnNGb3JtLmpzcCIpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiByZWdGaW5kVG9vbF8uZ2V0Rm9ybUxpbmsoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL01hbmFnZVJlZmVyZW5jZWRTZXJ2aWNlc1Rvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9NYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNzg5ZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL01hbmFnZVJlZmVyZW5jZWRTZXJ2aWNlc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlNlbGVjdEZpbmRUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBNYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNUb29sIGV4dGVuZHMgRm9ybVRvb2wgaW1wbGVtZW50cyBNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZQotewotICBUb29sTWFuYWdlciBpbnZpc2libGVUb29sTWFuYWdlcl87Ci0gIHByaXZhdGUgUmVnRmluZFRvb2wgcmVnRmluZFRvb2xfOwotCi0gIHB1YmxpYyBNYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsICJ1ZGRpL2ltYWdlcy9yZWZlcmVuY2VkX3NlcnZpY2VzX2VuYWJsZWQuZ2lmIiwgInVkZGkvaW1hZ2VzL3JlZmVyZW5jZWRfc2VydmljZXNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICBpbnZpc2libGVUb29sTWFuYWdlcl8gPSBuZXcgVG9vbE1hbmFnZXIodG9vbE1hbmFnZXIuZ2V0Tm9kZSgpKTsKLSAgICByZWdGaW5kVG9vbF8gPSBuZXcgUmVnRmluZFRvb2woaW52aXNpYmxlVG9vbE1hbmFnZXJfLCIiKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXREZWZhdWx0UHJvcGVydGllcygpCi0gIHsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSwiIik7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUykpOwotICAgIFN0cmluZyBzaW1wbGVTdHlsZVN0cmluZyA9IFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0lNUExFKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0JVU0lORVNTRVMsc2ltcGxlU3R5bGVTdHJpbmcpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRVMsc2ltcGxlU3R5bGVTdHJpbmcpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRV9JTlRFUkZBQ0VTLHNpbXBsZVN0eWxlU3RyaW5nKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKE9iamVjdCBzdWJRdWVyeUtleU9iamVjdCkKLSAgewotICAgIC8vIEVtcHR5L05vbi1leGlzdGVudCBzdWJxdWVyeWtleSBpbXBsaWVzIHB1Ymxpc2ggZm9ybS4gQWxsIGVsc2UgaW1wbGllcyBxdWVyeSBmb3JtLgotICAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpc3ViUXVlcnlLZXlPYmplY3Q7Ci0gICAgaWYgKHN1YlF1ZXJ5S2V5ID09IG51bGwgfHwgc3ViUXVlcnlLZXkubGVuZ3RoKCkgPCAxKQotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHJlZ0ZpbmRUb29sXy5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlPYmplY3QpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgIHJldHVybiBTZWxlY3RGaW5kVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGUuZ2V0Tm9kZUlkKCksdG9vbElkXyxub2RlLmdldFZpZXdJZCgpLG5vZGUuZ2V0Vmlld1Rvb2xJZCgpLHN1YlF1ZXJ5S2V5LGZvckhpc3RvcnkpOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBhZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMoUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQpCi0gIHsKLSAgICBTdHJpbmcgcHVibGlzaFVSTCA9IHJlZ0VsZW1lbnQuZ2V0UHVibGlzaFVSTCgpOwotICAgIFN0cmluZyB1c2VySWQgPSByZWdFbGVtZW50LmdldFVzZXJJZCgpOwotICAgIFN0cmluZyBwYXNzd29yZCA9IHJlZ0VsZW1lbnQuZ2V0Q3JlZCgpOwotICAgIAotICAgIGlmIChwdWJsaXNoVVJMID09IG51bGwpCi0gICAgICBwdWJsaXNoVVJMID0gIiI7Ci0gICAgaWYgKHVzZXJJZCA9PSBudWxsKQotICAgICAgdXNlcklkID0gIiI7Ci0gICAgaWYgKHBhc3N3b3JkID09IG51bGwpCi0gICAgICBwYXNzd29yZCA9ICIiOwotICAgICAgCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySWQpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQscGFzc3dvcmQpOwotICAgIHJlZ0ZpbmRUb29sXy5hZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMocmVnRWxlbWVudCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkKLSAgewotICAgIE9iamVjdCBzdWJRdWVyeUtleU9iamVjdCA9IGdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgICBTdHJpbmcgc3ViUXVlcnlLZXkgPSBudWxsOwotICAgIGlmIChzdWJRdWVyeUtleU9iamVjdCAhPSBudWxsKQotICAgIHsKLSAgICAgIGdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUklFU19QUk9QRVJUSUVTKTsKLSAgICAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBzdWJRdWVyeVByb3BlcnRpZXMgPSBnZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlPYmplY3QpOwotICAgICAgT2JqZWN0IHN1YlF1ZXJ5R2V0T2JqZWN0ID0gc3ViUXVlcnlQcm9wZXJ0aWVzLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfR0VUKTsKLSAgICAgIGlmIChzdWJRdWVyeUdldE9iamVjdCAhPSBudWxsKQotICAgICAgewotICAgICAgICBib29sZWFuIGlzU3ViUXVlcnlHZXQgPSAoKEJvb2xlYW4pc3ViUXVlcnlHZXRPYmplY3QpLmJvb2xlYW5WYWx1ZSgpOwotICAgICAgICBpZiAoaXNTdWJRdWVyeUdldCkKLSAgICAgICAgICByZXR1cm4gInVkZGkvZm9ybXMvR2V0Rm9ybS5qc3AiOwotICAgICAgfQotICAgICAgc3ViUXVlcnlLZXkgPSAoU3RyaW5nKXN1YlF1ZXJ5S2V5T2JqZWN0OwotICAgIH0KLQotICAgIGlmIChzdWJRdWVyeUtleSA9PSBudWxsIHx8IHN1YlF1ZXJ5S2V5Lmxlbmd0aCgpIDwgMSkKLSAgICAgIHJldHVybiAidWRkaS9mb3Jtcy9NYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNGb3JtLmpzcCI7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHJlZ0ZpbmRUb29sXy5nZXRGb3JtTGluaygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9NdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTBjODg3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9NdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotCi1wdWJsaWMgYWJzdHJhY3QgaW50ZXJmYWNlIE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlCi17Ci0gIHB1YmxpYyBhYnN0cmFjdCBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKE9iamVjdCBrZXkpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL09wZW5SZWdpc3RyeVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9PcGVuUmVnaXN0cnlUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMDFjYjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL09wZW5SZWdpc3RyeVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyNCAgIDEyMjc1MiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwODA1MTMgICAyMzEzNTEgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy5GYXZvcml0ZXNNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci0KLXB1YmxpYyBjbGFzcyBPcGVuUmVnaXN0cnlUb29sIGV4dGVuZHMgRm9ybVRvb2wKLXsKLSAgcHJpdmF0ZSBDb250cm9sbGVyIGNvbnRyb2xsZXJfOwotICAKLSAgcHVibGljIE9wZW5SZWdpc3RyeVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsU3RyaW5nIGFsdCkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCJ1ZGRpL2ltYWdlcy9vcGVuX3JlZ2lzdHJ5X2VuYWJsZWQuZ2lmIiwidWRkaS9pbWFnZXMvb3Blbl9yZWdpc3RyeV9oaWdobGlnaHRlZC5naWYiLGFsdCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBpbml0RGVmYXVsdFByb3BlcnRpZXMoKQotICB7Ci0gICAgY29udHJvbGxlcl8gPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Q29udHJvbGxlcigpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIAotICAgIGlmKHVkZGlQZXJzcGVjdGl2ZS5nZXREZWZhdWx0VURESVJlZ2lzdHJ5KCkgIT0gbnVsbCl7Ci0gICAgCXNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUkVHSVNUUllfTkFNRSx1ZGRpUGVyc3BlY3RpdmUuZ2V0RGVmYXVsdFVERElSZWdpc3RyeSgpLmdldE5hbWUoKSk7Ci0gICAgCXNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuSU5RVUlSWV9VUkwsdWRkaVBlcnNwZWN0aXZlLmdldERlZmF1bHRVRERJUmVnaXN0cnkoKS5nZXRJbnF1aXJ5VVJMKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KQotICB7Ci0gICAgTm9kZSBub2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICByZXR1cm4gU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlLmdldE5vZGVJZCgpLHRvb2xJZF8sbm9kZS5nZXRWaWV3SWQoKSxub2RlLmdldFZpZXdUb29sSWQoKSxmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKQotICB7Ci0gICAgcmV0dXJuICJ1ZGRpL2Zvcm1zL09wZW5SZWdpc3RyeUZvcm0uanNwIjsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIEVudW1lcmF0aW9uIGdldEZhdm9yaXRlUmVnaXN0cnlFbGVtZW50cygpCi0gIHsKLSAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgZmF2b3JpdGVzTm9kZU1hbmFnZXIgPSBmYXZQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIFRyZWVFbGVtZW50IGZhdm9yaXRlc01haW5FbGVtZW50ID0gZmF2b3JpdGVzTm9kZU1hbmFnZXIuZ2V0Um9vdE5vZGUoKS5nZXRUcmVlRWxlbWVudCgpOwotICAgIFRyZWVFbGVtZW50IGZhdm9yaXRlUmVnaXN0cmllc0VsZW1lbnQgPSAoVHJlZUVsZW1lbnQpKGZhdm9yaXRlc01haW5FbGVtZW50LmdldEVsZW1lbnRzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1JFR0lTVFJZX0ZPTERFUl9OT0RFKS5uZXh0RWxlbWVudCgpKTsKLSAgICByZXR1cm4gZmF2b3JpdGVSZWdpc3RyaWVzRWxlbWVudC5nZXRFbGVtZW50cyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9SRUdJU1RSWV9OT0RFKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1B1Ymxpc2hlZEl0ZW1zTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1B1Ymxpc2hlZEl0ZW1zTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTkwNGVkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9QdWJsaXNoZWRJdGVtc05vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxBZGRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbFJlbW92ZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlB1Ymxpc2hlZEl0ZW1zRWxlbWVudDsKLQotcHVibGljIGNsYXNzIFB1Ymxpc2hlZEl0ZW1zTm9kZSBleHRlbmRzIFVERElOYXZpZ2F0b3JGb2xkZXJOb2RlCi17Ci0gIHB1YmxpYyBQdWJsaXNoZWRJdGVtc05vZGUoVHJlZUVsZW1lbnQgZWxlbWVudCxOb2RlTWFuYWdlciBub2RlTWFuYWdlcixpbnQgbm9kZURlcHRoKQotICB7Ci0gICAgc3VwZXIoZWxlbWVudCxub2RlTWFuYWdlcixub2RlRGVwdGgpOwotICAgIGVsZW1lbnQuYWRkTGlzdGVuZXIobmV3IEVsZW1lbnRBZGFwdGVyKCkKLSAgICB7Ci0gICAgICBwdWJsaWMgdm9pZCByZWxBZGRlZChSZWxBZGRFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHJlbCA9IGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpOwotICAgICAgICBpZiAocmVsLmVxdWFscyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1BVQkxJU0hFRF9JVEVNUykpCi0gICAgICAgIHsKLSAgICAgICAgICBUcmVlRWxlbWVudCB0cmVlRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRQYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgICAgY3JlYXRlQ2hpbGROb2RlKHRyZWVFbGVtZW50KTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBwdWJsaWMgdm9pZCByZWxSZW1vdmVkKFJlbFJlbW92ZUV2ZW50IGV2ZW50KQotICAgICAgewotICAgICAgICBUcmVlRWxlbWVudCB0cmVlRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIGlmIChldmVudC5nZXRJbkJvdW5kUmVsTmFtZSgpLmVxdWFscyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1BVQkxJU0hFRF9JVEVNUykpCi0gICAgICAgICAgdHJlZUVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0SW5ib3VuZEVsZW1lbnQoKTsKLSAgICAgICAgZWxzZSBpZiAoZXZlbnQuZ2V0T3V0Qm91bmRSZWxOYW1lKCkuZXF1YWxzKFVERElNb2RlbENvbnN0YW50cy5SRUxfUFVCTElTSEVEX0lURU1TKSkKLSAgICAgICAgICB0cmVlRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRPdXRCb3VuZEVsZW1lbnQoKTsKLQotICAgICAgICBpZiAodHJlZUVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgICByZW1vdmVDaGlsZE5vZGUodHJlZUVsZW1lbnQpOwotICAgICAgfQotICAgIH0pOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNyZWF0ZUNoaWxkTm9kZShUcmVlRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgUHVibGlzaGVkSXRlbXNFbGVtZW50IHB1Ymxpc2hlZEl0ZW1zRWxlbWVudCA9IChQdWJsaXNoZWRJdGVtc0VsZW1lbnQpZWxlbWVudF87Ci0gICAgTm9kZSBjaGlsZE5vZGUgPSBudWxsOwotICAgIHN3aXRjaCAocHVibGlzaGVkSXRlbXNFbGVtZW50LmdldFR5cGUoKSkKLSAgICB7Ci0gICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTOgotICAgICAgICBjaGlsZE5vZGUgPSBuZXcgQnVzaW5lc3NOb2RlKGVsZW1lbnQsbm9kZU1hbmFnZXJfLG5vZGVEZXB0aF8rMSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVM6Ci0gICAgICAgIGNoaWxkTm9kZSA9IG5ldyBTZXJ2aWNlTm9kZShlbGVtZW50LG5vZGVNYW5hZ2VyXyxub2RlRGVwdGhfKzEpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUzoKLSAgICAgICAgY2hpbGROb2RlID0gbmV3IFNlcnZpY2VJbnRlcmZhY2VOb2RlKGVsZW1lbnQsbm9kZU1hbmFnZXJfLG5vZGVEZXB0aF8rMSk7Ci0gICAgfQotICAgIGlmIChjaGlsZE5vZGUgIT0gbnVsbCkKLSAgICAgIGFkZENoaWxkKGNoaWxkTm9kZSk7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXRUb29scygpCi0gIHsKLSAgICBQdWJsaXNoZWRJdGVtc0VsZW1lbnQgcHVibGlzaGVkSXRlbXNFbGVtZW50ID0gKFB1Ymxpc2hlZEl0ZW1zRWxlbWVudCllbGVtZW50XzsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBpbnQgcHVibGlzaGVkSXRlbXNUeXBlID0gcHVibGlzaGVkSXRlbXNFbGVtZW50LmdldFR5cGUoKTsKLSAgICBzd2l0Y2ggKHB1Ymxpc2hlZEl0ZW1zVHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTOgotICAgICAgICBuZXcgSXRlbXNTdW1tYXJ5VG9vbCh0b29sTWFuYWdlcl8sInVkZGkvaW1hZ2VzL2J1c2luZXNzZXNfY2xvc2VkX2VuYWJsZWQuZ2lmIiwidWRkaS9pbWFnZXMvYnVzaW5lc3Nlc19jbG9zZWRfaGlnaGxpZ2h0ZWQuZ2lmIix1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1NVTU1BUllfQlVTSU5FU1NFUyIpLHB1Ymxpc2hlZEl0ZW1zVHlwZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVM6Ci0gICAgICAgIG5ldyBJdGVtc1N1bW1hcnlUb29sKHRvb2xNYW5hZ2VyXywidWRkaS9pbWFnZXMvc2VydmljZXNfY2xvc2VkX2VuYWJsZWQuZ2lmIiwidWRkaS9pbWFnZXMvc2VydmljZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiIsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9TVU1NQVJZX1NFUlZJQ0VTIikscHVibGlzaGVkSXRlbXNUeXBlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVM6Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBuZXcgSXRlbXNTdW1tYXJ5VG9vbCh0b29sTWFuYWdlcl8sInVkZGkvaW1hZ2VzL3NlcnZpY2VfaW50ZXJmYWNlc19jbG9zZWRfZW5hYmxlZC5naWYiLCJ1ZGRpL2ltYWdlcy9zZXJ2aWNlX2ludGVyZmFjZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiIsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9TVU1NQVJZX1NFUlZJQ0VfSU5URVJGQUNFUyIpLHB1Ymxpc2hlZEl0ZW1zVHlwZSk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldE9wZW5JbWFnZVBhdGgoKQotICB7Ci0gICAgUHVibGlzaGVkSXRlbXNFbGVtZW50IHB1Ymxpc2hlZEl0ZW1zRWxlbWVudCA9IChQdWJsaXNoZWRJdGVtc0VsZW1lbnQpZWxlbWVudF87Ci0gICAgaW50IHB1Ymxpc2hlZEl0ZW1zVHlwZSA9IHB1Ymxpc2hlZEl0ZW1zRWxlbWVudC5nZXRUeXBlKCk7Ci0gICAgc3dpdGNoIChwdWJsaXNoZWRJdGVtc1R5cGUpCi0gICAgewotICAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUzoKLSAgICAgICAgcmV0dXJuICJ1ZGRpL2ltYWdlcy9idXNpbmVzc2VzX29wZW5faGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTOgotICAgICAgICByZXR1cm4gInVkZGkvaW1hZ2VzL3NlcnZpY2VzX29wZW5faGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUzoKLSAgICAgICAgcmV0dXJuICJ1ZGRpL2ltYWdlcy9zZXJ2aWNlX2ludGVyZmFjZXNfb3Blbl9oaWdobGlnaHRlZC5naWYiOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZ2V0T3BlbkltYWdlUGF0aCgpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldENsb3NlZEltYWdlUGF0aCgpCi0gIHsKLSAgICBQdWJsaXNoZWRJdGVtc0VsZW1lbnQgcHVibGlzaGVkSXRlbXNFbGVtZW50ID0gKFB1Ymxpc2hlZEl0ZW1zRWxlbWVudCllbGVtZW50XzsKLSAgICBpbnQgcHVibGlzaGVkSXRlbXNUeXBlID0gcHVibGlzaGVkSXRlbXNFbGVtZW50LmdldFR5cGUoKTsKLSAgICBzd2l0Y2ggKHB1Ymxpc2hlZEl0ZW1zVHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTOgotICAgICAgICByZXR1cm4gInVkZGkvaW1hZ2VzL2J1c2luZXNzZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUzoKLSAgICAgICAgcmV0dXJuICJ1ZGRpL2ltYWdlcy9zZXJ2aWNlc19jbG9zZWRfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUzoKLSAgICAgICAgcmV0dXJuICJ1ZGRpL2ltYWdlcy9zZXJ2aWNlX2ludGVyZmFjZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5nZXRDbG9zZWRJbWFnZVBhdGgoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1F1ZXJ5Tm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1F1ZXJ5Tm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDJiOGNlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9RdWVyeU5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5FbGVtZW50QWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbEFkZEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsUmVtb3ZlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5GaW5kQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLkJ1c2luZXNzRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5TZXJ2aWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuU2VydmljZUludGVyZmFjZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuQnVzaW5lc3NTZXJ2aWNlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLQotcHVibGljIGNsYXNzIFF1ZXJ5Tm9kZSBleHRlbmRzIFVERElOYXZpZ2F0b3JOb2RlCi17Ci0gIHByaXZhdGUgRm9ybVRvb2wgcmVnRmluZFRvb2xfOwotICBwcml2YXRlIEZpbmRBY3Rpb24gZmluZEFjdGlvbl87Ci0gIHB1YmxpYyBRdWVyeU5vZGUoVHJlZUVsZW1lbnQgZWxlbWVudCxOb2RlTWFuYWdlciBub2RlTWFuYWdlcixpbnQgbm9kZURlcHRoKQotICB7Ci0gICAgc3VwZXIoZWxlbWVudCxub2RlTWFuYWdlcixub2RlRGVwdGgsInVkZGkvaW1hZ2VzL3F1ZXJ5LmdpZiIpOwotICAgIGVsZW1lbnQuYWRkTGlzdGVuZXIobmV3IEVsZW1lbnRBZGFwdGVyKCkKLSAgICB7Ci0gICAgICBwdWJsaWMgdm9pZCByZWxBZGRlZChSZWxBZGRFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHJlbCA9IGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpOwotICAgICAgICBpZiAocmVsLmVxdWFscyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1FVRVJZX1JFU1VMVFMpKQotICAgICAgICB7Ci0gICAgICAgICAgVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0UGFyZW50RWxlbWVudCgpOwotICAgICAgICAgIGNyZWF0ZUNoaWxkTm9kZSh0cmVlRWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgcmVsUmVtb3ZlZChSZWxSZW1vdmVFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgICAgVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICBpZiAoZXZlbnQuZ2V0SW5Cb3VuZFJlbE5hbWUoKS5lcXVhbHMoVURESU1vZGVsQ29uc3RhbnRzLlJFTF9RVUVSWV9SRVNVTFRTKSkKLSAgICAgICAgICB0cmVlRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRJbmJvdW5kRWxlbWVudCgpOwotICAgICAgICBlbHNlIGlmIChldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKS5lcXVhbHMoVURESU1vZGVsQ29uc3RhbnRzLlJFTF9RVUVSWV9SRVNVTFRTKSkKLSAgICAgICAgICB0cmVlRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRPdXRCb3VuZEVsZW1lbnQoKTsKLQotICAgICAgICBpZiAodHJlZUVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgICByZW1vdmVDaGlsZE5vZGUodHJlZUVsZW1lbnQpOwotICAgICAgfQotICAgIH0pOwotICAgIGNyZWF0ZUNoaWxkcmVuKCk7Ci0gICAgc2V0VmlzaWJpbGl0eU9mQ2hpbGRyZW4oZmFsc2UpOwotICAgIGZpbmRBY3Rpb25fID0gbnVsbDsKLSAgfQotCi0gIHByaXZhdGUgZmluYWwgdm9pZCBjcmVhdGVDaGlsZHJlbigpCi0gIHsKLSAgICBWZWN0b3IgaW5pdGlhbFJlc3VsdHMgPSAoVmVjdG9yKWVsZW1lbnRfLmdldFByb3BlcnR5QXNPYmplY3QoVURESU1vZGVsQ29uc3RhbnRzLklOSVRJQUxfUkVTVUxUUyk7Ci0gICAgZm9yIChpbnQgaT0wO2k8aW5pdGlhbFJlc3VsdHMuc2l6ZSgpO2krKykKLSAgICB7Ci0gICAgICBPYmplY3Qgb2JqZWN0ID0gaW5pdGlhbFJlc3VsdHMuZWxlbWVudEF0KGkpOwotICAgICAgVHJlZUVsZW1lbnQgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBCdXNpbmVzc0VudGl0eSkKLSAgICAgICAgY2hpbGRFbGVtZW50ID0gbmV3IEJ1c2luZXNzRWxlbWVudCgoQnVzaW5lc3NFbnRpdHkpb2JqZWN0LGVsZW1lbnRfLmdldE1vZGVsKCkpOwotICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgQnVzaW5lc3NTZXJ2aWNlKQotICAgICAgICBjaGlsZEVsZW1lbnQgPSBuZXcgU2VydmljZUVsZW1lbnQoKEJ1c2luZXNzU2VydmljZSlvYmplY3QsZWxlbWVudF8uZ2V0TW9kZWwoKSk7Ci0gICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBUTW9kZWwpCi0gICAgICAgIGNoaWxkRWxlbWVudCA9IG5ldyBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCgoVE1vZGVsKW9iamVjdCxlbGVtZW50Xy5nZXRNb2RlbCgpKTsKLSAgICAgIGlmIChjaGlsZEVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgZWxlbWVudF8uY29ubmVjdChjaGlsZEVsZW1lbnQsVURESU1vZGVsQ29uc3RhbnRzLlJFTF9RVUVSWV9SRVNVTFRTLE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNyZWF0ZUNoaWxkTm9kZShUcmVlRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgTm9kZSBjaGlsZE5vZGUgPSBudWxsOwotICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgQnVzaW5lc3NFbGVtZW50KQotICAgICAgY2hpbGROb2RlID0gbmV3IEJ1c2luZXNzTm9kZShlbGVtZW50LG5vZGVNYW5hZ2VyXyxub2RlRGVwdGhfKzEpOwotICAgIGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBTZXJ2aWNlRWxlbWVudCkKLSAgICAgIGNoaWxkTm9kZSA9IG5ldyBTZXJ2aWNlTm9kZShlbGVtZW50LG5vZGVNYW5hZ2VyXyxub2RlRGVwdGhfKzEpOwotICAgIGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCkKLSAgICAgIGNoaWxkTm9kZSA9IG5ldyBTZXJ2aWNlSW50ZXJmYWNlTm9kZShlbGVtZW50LG5vZGVNYW5hZ2VyXyxub2RlRGVwdGhfKzEpOwotICAgIGlmIChjaGlsZE5vZGUgIT0gbnVsbCkKLSAgICAgIGFkZENoaWxkKGNoaWxkTm9kZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBpbml0VG9vbHMoKQotICB7Ci0gICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICBuZXcgUmVzdWx0c1Rvb2wodG9vbE1hbmFnZXJfLGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1JFU1VMVFMiKSk7Ci0gICAgcmVnRmluZFRvb2xfID0gbmV3IFJlZ0ZpbmRUb29sKHRvb2xNYW5hZ2VyXyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZJTkQiKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRGaW5kVG9vbFByb3BlcnRpZXMoRmluZEFjdGlvbiBmaW5kQWN0aW9uKQotICB7Ci0gICAgZmluZEFjdGlvbl8gPSBmaW5kQWN0aW9uOwotICAgIHJlZ0ZpbmRUb29sXy51cGRhdGVQcm9wZXJ0eVRhYmxlKGZpbmRBY3Rpb24uZ2V0UHJvcGVydHlUYWJsZSgpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCkKLSAgewotICAgICgoUmVnRmluZFRvb2wpcmVnRmluZFRvb2xfKS5hZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMocmVnRWxlbWVudCk7Ci0gICAgVmVjdG9yIGNoaWxkTm9kZXMgPSBnZXRDaGlsZE5vZGVzKCk7Ci0gICAgZm9yIChpbnQgaT0wO2k8Y2hpbGROb2Rlcy5zaXplKCk7aSsrKQotICAgIHsKLSAgICAgIFVERElOYXZpZ2F0b3JOb2RlIG5hdmlnYXRvck5vZGUgPSAoVURESU5hdmlnYXRvck5vZGUpY2hpbGROb2Rlcy5lbGVtZW50QXQoaSk7Ci0gICAgICBuYXZpZ2F0b3JOb2RlLmFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhyZWdFbGVtZW50KTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgRmluZEFjdGlvbiBnZXRGaW5kQWN0aW9uKCkKLSAgewotICAgIHJldHVybiBmaW5kQWN0aW9uXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1F1ZXJ5UGFyZW50Tm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1F1ZXJ5UGFyZW50Tm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2Y0MmQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9RdWVyeVBhcmVudE5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5FbGVtZW50QWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbEFkZEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsUmVtb3ZlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUXVlcnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBRdWVyeVBhcmVudE5vZGUgZXh0ZW5kcyBVRERJTmF2aWdhdG9yRm9sZGVyTm9kZQotewotICBwdWJsaWMgUXVlcnlQYXJlbnROb2RlKFRyZWVFbGVtZW50IGVsZW1lbnQsTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsaW50IG5vZGVEZXB0aCkKLSAgewotICAgIHN1cGVyKGVsZW1lbnQsbm9kZU1hbmFnZXIsbm9kZURlcHRoKTsKLSAgICBlbGVtZW50LmFkZExpc3RlbmVyKG5ldyBFbGVtZW50QWRhcHRlcigpCi0gICAgewotICAgICAgcHVibGljIHZvaWQgcmVsQWRkZWQoUmVsQWRkRXZlbnQgZXZlbnQpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyByZWwgPSBldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKTsKLSAgICAgICAgaWYgKHJlbC5lcXVhbHMoVURESU1vZGVsQ29uc3RhbnRzLlJFTF9RVUVSSUVTKSkKLSAgICAgICAgewotICAgICAgICAgIFF1ZXJ5RWxlbWVudCBxdWVyeUVsZW1lbnQgPSAoUXVlcnlFbGVtZW50KWV2ZW50LmdldFBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICBjcmVhdGVDaGlsZE5vZGUocXVlcnlFbGVtZW50KTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBwdWJsaWMgdm9pZCByZWxSZW1vdmVkKFJlbFJlbW92ZUV2ZW50IGV2ZW50KQotICAgICAgewotICAgICAgICBRdWVyeUVsZW1lbnQgcXVlcnlFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgaWYgKGV2ZW50LmdldEluQm91bmRSZWxOYW1lKCkuZXF1YWxzKFVERElNb2RlbENvbnN0YW50cy5SRUxfUVVFUklFUykpCi0gICAgICAgICAgcXVlcnlFbGVtZW50ID0gKFF1ZXJ5RWxlbWVudClldmVudC5nZXRJbmJvdW5kRWxlbWVudCgpOwotICAgICAgICBlbHNlIGlmIChldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKS5lcXVhbHMoVURESU1vZGVsQ29uc3RhbnRzLlJFTF9RVUVSSUVTKSkKLSAgICAgICAgICBxdWVyeUVsZW1lbnQgPSAoUXVlcnlFbGVtZW50KWV2ZW50LmdldE91dEJvdW5kRWxlbWVudCgpOwotCi0gICAgICAgIGlmIChxdWVyeUVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgICByZW1vdmVDaGlsZE5vZGUocXVlcnlFbGVtZW50KTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfQotCi0gIHByaXZhdGUgZmluYWwgdm9pZCBjcmVhdGVDaGlsZE5vZGUoUXVlcnlFbGVtZW50IGVsZW1lbnQpCi0gIHsKLSAgICBRdWVyeU5vZGUgcXVlcnlOb2RlID0gbmV3IFF1ZXJ5Tm9kZShlbGVtZW50LG5vZGVNYW5hZ2VyXyxub2RlRGVwdGhfKzEpOwotICAgIC8vIEFkZCByZWdpc3RyeSBhdXRoZW50aWNhdGlvbiBwcm9wZXJ0aWVzLgotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudCkoZ2V0UGFyZW50KCkuZ2V0VHJlZUVsZW1lbnQoKSk7Ci0gICAgcXVlcnlOb2RlLmFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhyZWdFbGVtZW50KTsKLSAgICBhZGRDaGlsZChxdWVyeU5vZGUpOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBpbml0VG9vbHMoKQotICB7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCkuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgbmV3IEl0ZW1zU3VtbWFyeVRvb2wodG9vbE1hbmFnZXJfLCJ1ZGRpL2ltYWdlcy9xdWVyaWVzX2Nsb3NlZF9lbmFibGVkLmdpZiIsInVkZGkvaW1hZ2VzL3F1ZXJpZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiIsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9TVU1NQVJZX1FVRVJJRVMiKSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fUVVFUklFUyk7Ci0gICAgbmV3IEl0ZW1zU3VtbWFyeVRvb2wodG9vbE1hbmFnZXJfLCJ1ZGRpL2ltYWdlcy9idXNpbmVzc2VzX2Nsb3NlZF9lbmFibGVkLmdpZiIsInVkZGkvaW1hZ2VzL2J1c2luZXNzZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiIsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9TVU1NQVJZX0JVU0lORVNTRVMiKSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyk7Ci0gICAgbmV3IEl0ZW1zU3VtbWFyeVRvb2wodG9vbE1hbmFnZXJfLCJ1ZGRpL2ltYWdlcy9zZXJ2aWNlc19jbG9zZWRfZW5hYmxlZC5naWYiLCJ1ZGRpL2ltYWdlcy9zZXJ2aWNlc19jbG9zZWRfaGlnaGxpZ2h0ZWQuZ2lmIix1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1NVTU1BUllfU0VSVklDRVMiKSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVMpOwotICAgIG5ldyBJdGVtc1N1bW1hcnlUb29sKHRvb2xNYW5hZ2VyXywidWRkaS9pbWFnZXMvc2VydmljZV9pbnRlcmZhY2VzX2Nsb3NlZF9lbmFibGVkLmdpZiIsInVkZGkvaW1hZ2VzL3NlcnZpY2VfaW50ZXJmYWNlc19jbG9zZWRfaGlnaGxpZ2h0ZWQuZ2lmIix1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1NVTU1BUllfU0VSVklDRV9JTlRFUkZBQ0VTIiksVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0T3BlbkltYWdlUGF0aCgpCi0gIHsKLSAgICByZXR1cm4gInVkZGkvaW1hZ2VzL3F1ZXJpZXNfb3Blbl9oaWdobGlnaHRlZC5naWYiOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldENsb3NlZEltYWdlUGF0aCgpCi0gIHsKLSAgICByZXR1cm4gInVkZGkvaW1hZ2VzL3F1ZXJpZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9SZWZyZXNoVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1JlZnJlc2hUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyOGExYmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1JlZnJlc2hUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlJlZnJlc2hVRERJTm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgUmVmcmVzaFRvb2wgZXh0ZW5kcyBBY3Rpb25Ub29sCi17Ci0gIHB1YmxpYyBSZWZyZXNoVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlcixTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsImltYWdlcy9yZWZyZXNoX2VuYWJsZWQuZ2lmIiwiaW1hZ2VzL3JlZnJlc2hfaGlnaGxpZ2h0ZWQuZ2lmIixhbHQpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGUuZ2V0Tm9kZUlkKCksdG9vbElkXyxub2RlLmdldFZpZXdJZCgpLG5vZGUuZ2V0Vmlld1Rvb2xJZCgpLGZvckhpc3RvcnkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKCkKLSAgewotICAgIHJldHVybiBSZWZyZXNoVURESU5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayh0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldE5vZGVJZCgpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1JlZ0ZpbmRUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvUmVnRmluZFRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA0NTE2OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvUmVnRmluZFRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbFByb3BlcnRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RGaW5kVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgUmVnRmluZFRvb2wgZXh0ZW5kcyBGb3JtVG9vbCBpbXBsZW1lbnRzIE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlCi17Ci0gIHB1YmxpYyBSZWdGaW5kVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlcixTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsInVkZGkvaW1hZ2VzL2ZpbmRfZW5hYmxlZC5naWYiLCJ1ZGRpL2ltYWdlcy9maW5kX2hpZ2hsaWdodGVkLmdpZiIsYWx0KTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXREZWZhdWx0UHJvcGVydGllcygpCi0gIHsKLSAgICBpbml0RGVmYXVsdFByb3BlcnRpZXModGhpcyk7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVksIiIpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUklFU19QUk9QRVJUSUVTLG5ldyBIYXNodGFibGUoKSk7Ci0gICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRDb250cm9sbGVyKCkuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FLHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJERUZBVUxUX1FVRVJZX05BTUUiKSk7Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJKQotICB7Ci0gICAgdG9vbE1hbmFnZXJfLmdldE5vZGUoKS5nZXROb2RlTWFuYWdlcigpLmdldENvbnRyb2xsZXIoKS5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLQotICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTKSk7Ci0gICAgU3RyaW5nIHNpbXBsZVN0eWxlU3RyaW5nID0gU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUpOwotICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTLHNpbXBsZVN0eWxlU3RyaW5nKTsKLSAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRVMsc2ltcGxlU3R5bGVTdHJpbmcpOwotICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMsc2ltcGxlU3R5bGVTdHJpbmcpOwotCi0gICAgU3RyaW5nIG1heFNlYXJjaFNldCA9IFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfTUFYX1NFQVJDSF9TRVQpOwotICAgIFN0cmluZyBtYXhSZXN1bHRzID0gU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9NQVhfUkVTVUxUUyk7Ci0KLSAgICAvLyBSZWdGaW5kQnVzaW5lc3Nlc1NpbXBsZUFjdGlvbiBpbnB1dHMKLSAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX0JVU0lORVNTX05BTUUsIiIpOwotCi0gICAgLy8gUmVnRmluZEJ1c2luZXNzZXNBZHZhbmNlZEFjdGlvbiBpbnB1dHMKLSAgICAvLyBUaGUgYXV0aGVudGljYXRpb24gaW5wdXRzIG11c3QgYmUgYWRkZWQgbGF0ZXIgYXMgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJlZm9yZSB3ZSBjYW4gZ2V0IGEgdmFsaWQgaGFuZGxlCi0gICAgLy8gdG8gdGhlIFJlZ2lzdHJ5RWxlbWVudCBpbiB0aGUgY2FzZSBvZiBhIHF1ZXJ5IG5vZGUuCi0gICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9TRUFSQ0hfU0VULG1heFNlYXJjaFNldCk7Ci0gICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9SRVNVTFRTLG1heFJlc3VsdHMpOwotCi0gICAgLy8gUmVnRmluZFNlcnZpY2VzU2ltcGxlQWN0aW9uIGlucHV0cwotICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9OQU1FLCIiKTsKLQotICAgIC8vIFJlZ0ZpbmRTZXJ2aWNlc0FkdmFuY2VkQWN0aW9uIGlucHV0cwotICAgIC8vIFRoZSBhdXRoZW50aWNhdGlvbiBpbnB1dHMgbXVzdCBiZSBhZGRlZCBsYXRlciBhcyB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgYmVmb3JlIHdlIGNhbiBnZXQgYSB2YWxpZCBoYW5kbGUKLSAgICAvLyB0byB0aGUgUmVnaXN0cnlFbGVtZW50IGluIHRoZSBjYXNlIG9mIGEgcXVlcnkgbm9kZS4KLSAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9NQVhfU0VBUkNIX1NFVCxtYXhTZWFyY2hTZXQpOwotICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX01BWF9SRVNVTFRTLG1heFJlc3VsdHMpOwotCi0gICAgLy8gUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzU2ltcGxlQWN0aW9uIGlucHV0cwotICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSwiIik7Ci0KLSAgICAvLyBSZWdGaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZEFjdGlvbiBpbnB1dHMKLSAgICAvLyBUaGUgYXV0aGVudGljYXRpb24gaW5wdXRzIG11c3QgYmUgYWRkZWQgbGF0ZXIgYXMgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJlZm9yZSB3ZSBjYW4gZ2V0IGEgdmFsaWQgaGFuZGxlCi0gICAgLy8gdG8gdGhlIFJlZ2lzdHJ5RWxlbWVudCBpbiB0aGUgY2FzZSBvZiBhIHF1ZXJ5IG5vZGUuCi0gICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUsIiIpOwotICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9NQVhfU0VBUkNIX1NFVCxtYXhTZWFyY2hTZXQpOwotICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9NQVhfUkVTVUxUUyxtYXhSZXN1bHRzKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCkKLSAgewotICAgIFN0cmluZyBwdWJsaXNoVVJMID0gcmVnRWxlbWVudC5nZXRQdWJsaXNoVVJMKCk7Ci0gICAgU3RyaW5nIHVzZXJJZCA9IHJlZ0VsZW1lbnQuZ2V0VXNlcklkKCk7Ci0gICAgU3RyaW5nIHBhc3N3b3JkID0gcmVnRWxlbWVudC5nZXRDcmVkKCk7Ci0KLSAgICBpZiAocHVibGlzaFVSTCA9PSBudWxsKQotICAgICAgcHVibGlzaFVSTCA9ICIiOwotICAgIGlmICh1c2VySWQgPT0gbnVsbCkKLSAgICAgIHVzZXJJZCA9ICIiOwotICAgIGlmIChwYXNzd29yZCA9PSBudWxsKQotICAgICAgcGFzc3dvcmQgPSAiIjsKLQotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwscHVibGlzaFVSTCk7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQsdXNlcklkKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JELHBhc3N3b3JkKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKE9iamVjdCBzdWJRdWVyeUtleU9iamVjdCkKLSAgewotICAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpc3ViUXVlcnlLZXlPYmplY3Q7Ci0gICAgaWYgKHN1YlF1ZXJ5S2V5ID09IG51bGwgfHwgc3ViUXVlcnlLZXkubGVuZ3RoKCkgPCAxKQotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgSGFzaHRhYmxlIHN1YlF1ZXJpZXNQcm9wZXJ0aWVzID0gKEhhc2h0YWJsZSlnZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJJRVNfUFJPUEVSVElFUyk7Ci0gICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIHN1YlF1ZXJ5UHJvcGVydGllcyA9IChGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2Upc3ViUXVlcmllc1Byb3BlcnRpZXMuZ2V0KHN1YlF1ZXJ5S2V5KTsKLSAgICBpZiAoc3ViUXVlcnlQcm9wZXJ0aWVzID09IG51bGwpCi0gICAgewotICAgICAgc3ViUXVlcnlQcm9wZXJ0aWVzID0gbmV3IEZvcm1Ub29sUHJvcGVydGllcygpOwotICAgICAgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKHN1YlF1ZXJ5UHJvcGVydGllcyk7Ci0gICAgICBzdWJRdWVyaWVzUHJvcGVydGllcy5wdXQoc3ViUXVlcnlLZXksc3ViUXVlcnlQcm9wZXJ0aWVzKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1YlF1ZXJ5UHJvcGVydGllczsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KQotICB7Ci0gICAgTm9kZSBub2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICBTdHJpbmcgc3ViUXVlcnlLZXkgPSAoU3RyaW5nKWdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgICByZXR1cm4gU2VsZWN0RmluZFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlLmdldE5vZGVJZCgpLHRvb2xJZF8sbm9kZS5nZXRWaWV3SWQoKSxub2RlLmdldFZpZXdUb29sSWQoKSxzdWJRdWVyeUtleSxmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKQotICB7Ci0gICAgT2JqZWN0IHN1YlF1ZXJ5S2V5T2JqZWN0ID0gZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgIGlmIChzdWJRdWVyeUtleU9iamVjdCAhPSBudWxsKQotICAgIHsKLSAgICAgIGdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUklFU19QUk9QRVJUSUVTKTsKLSAgICAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBzdWJRdWVyeVByb3BlcnRpZXMgPSBnZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlPYmplY3QpOwotICAgICAgT2JqZWN0IHN1YlF1ZXJ5R2V0T2JqZWN0ID0gc3ViUXVlcnlQcm9wZXJ0aWVzLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfR0VUKTsKLSAgICAgIGlmIChzdWJRdWVyeUdldE9iamVjdCAhPSBudWxsKQotICAgICAgewotICAgICAgICBib29sZWFuIGlzU3ViUXVlcnlHZXQgPSAoKEJvb2xlYW4pc3ViUXVlcnlHZXRPYmplY3QpLmJvb2xlYW5WYWx1ZSgpOwotICAgICAgICBpZiAoaXNTdWJRdWVyeUdldCkKLSAgICAgICAgICByZXR1cm4gInVkZGkvZm9ybXMvR2V0Rm9ybS5qc3AiOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gInVkZGkvZm9ybXMvUmVnRmluZEZvcm0uanNwIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1JlZ1B1Ymxpc2hUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvUmVnUHVibGlzaFRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFiMmU3Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvUmVnUHVibGlzaFRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlNlbGVjdEZpbmRUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBSZWdQdWJsaXNoVG9vbCBleHRlbmRzIEZvcm1Ub29sIGltcGxlbWVudHMgTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UKLXsKLSAgVG9vbE1hbmFnZXIgaW52aXNpYmxlVG9vbE1hbmFnZXJfOwotICBwcml2YXRlIFJlZ0ZpbmRUb29sIHJlZ0ZpbmRUb29sXzsKLSAgcHVibGljIFJlZ1B1Ymxpc2hUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBhbHQpCi0gIHsKLSAgICBzdXBlcih0b29sTWFuYWdlciwidWRkaS9pbWFnZXMvcHVibGlzaF9lbmFibGVkLmdpZiIsInVkZGkvaW1hZ2VzL3B1Ymxpc2hfaGlnaGxpZ2h0ZWQuZ2lmIixhbHQpOwotICAgIGludmlzaWJsZVRvb2xNYW5hZ2VyXyA9IG5ldyBUb29sTWFuYWdlcih0b29sTWFuYWdlci5nZXROb2RlKCkpOwotICAgIHJlZ0ZpbmRUb29sXyA9IG5ldyBSZWdGaW5kVG9vbChpbnZpc2libGVUb29sTWFuYWdlcl8sIiIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKCkKLSAgewotICAgIHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRDb250cm9sbGVyKCkuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0KLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSwiIik7Ci0KLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0sU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMpKTsKLSAgICBTdHJpbmcgc2ltcGxlU3R5bGVTdHJpbmcgPSBTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NJTVBMRSk7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTLHNpbXBsZVN0eWxlU3RyaW5nKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTLHNpbXBsZVN0eWxlU3RyaW5nKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VfSU5URVJGQUNFUyxzaW1wbGVTdHlsZVN0cmluZyk7Ci0KLSAgICAvLyBSZWdQdWJsaXNoQnVzaW5lc3NTaW1wbGVBY3Rpb24gaW5wdXRzCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfQlVTSU5FU1NfTkFNRSwiIik7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfQlVTSU5FU1NfREVTQ1JJUFRJT04sIiIpOwotCi0gICAgLy8gUmVnUHVibGlzaFNlcnZpY2VTaW1wbGVBY3Rpb24gaW5wdXRzCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9XU0RMX1VSTCwiIik7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9OQU1FLCIiKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0RFU0NSSVBUSU9OLCIiKTsKLQotICAgIC8vIFJlZ1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBY3Rpb24gaW5wdXRzCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1dTRExfVVJMLCIiKTsKLQotICAgIC8vIFJlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlU2ltcGxlQWN0aW9uIGlucHV0cwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMLCIiKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FLCIiKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTiwiIik7Ci0KLSAgICAvLyBSZWdQdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkQWN0aW9uIGlucHV0cwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfV1NETF9VUkwsIiIpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSwiIik7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBhZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMoUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQpCi0gIHsKLSAgICBTdHJpbmcgcHVibGlzaFVSTCA9IHJlZ0VsZW1lbnQuZ2V0UHVibGlzaFVSTCgpOwotICAgIFN0cmluZyB1c2VySWQgPSByZWdFbGVtZW50LmdldFVzZXJJZCgpOwotICAgIFN0cmluZyBwYXNzd29yZCA9IHJlZ0VsZW1lbnQuZ2V0Q3JlZCgpOwotCi0gICAgaWYgKHB1Ymxpc2hVUkwgPT0gbnVsbCkKLSAgICAgIHB1Ymxpc2hVUkwgPSAiIjsKLSAgICBpZiAodXNlcklkID09IG51bGwpCi0gICAgICB1c2VySWQgPSAiIjsKLSAgICBpZiAocGFzc3dvcmQgPT0gbnVsbCkKLSAgICAgIHBhc3N3b3JkID0gIiI7Ci0KLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMLHB1Ymxpc2hVUkwpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklELHVzZXJJZCk7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCxwYXNzd29yZCk7Ci0gICAgcmVnRmluZFRvb2xfLmFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhyZWdFbGVtZW50KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKE9iamVjdCBzdWJRdWVyeUtleU9iamVjdCkKLSAgewotICAgIC8vIEVtcHR5L05vbi1leGlzdGVudCBzdWJxdWVyeWtleSBpbXBsaWVzIHB1Ymxpc2ggZm9ybS4gQWxsIGVsc2UgaW1wbGllcyBxdWVyeSBmb3JtLgotICAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpc3ViUXVlcnlLZXlPYmplY3Q7Ci0gICAgaWYgKHN1YlF1ZXJ5S2V5ID09IG51bGwgfHwgc3ViUXVlcnlLZXkubGVuZ3RoKCkgPCAxKQotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHJlZ0ZpbmRUb29sXy5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlPYmplY3QpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgIHJldHVybiBTZWxlY3RGaW5kVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGUuZ2V0Tm9kZUlkKCksdG9vbElkXyxub2RlLmdldFZpZXdJZCgpLG5vZGUuZ2V0Vmlld1Rvb2xJZCgpLHN1YlF1ZXJ5S2V5LGZvckhpc3RvcnkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpCi0gIHsKLSAgICBPYmplY3Qgc3ViUXVlcnlLZXlPYmplY3QgPSBnZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSk7Ci0gICAgU3RyaW5nIHN1YlF1ZXJ5S2V5ID0gbnVsbDsKLSAgICBpZiAoc3ViUXVlcnlLZXlPYmplY3QgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBnZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJJRVNfUFJPUEVSVElFUyk7Ci0gICAgICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2Ugc3ViUXVlcnlQcm9wZXJ0aWVzID0gZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5T2JqZWN0KTsKLSAgICAgIE9iamVjdCBzdWJRdWVyeUdldE9iamVjdCA9IHN1YlF1ZXJ5UHJvcGVydGllcy5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0dFVCk7Ci0gICAgICBpZiAoc3ViUXVlcnlHZXRPYmplY3QgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgYm9vbGVhbiBpc1N1YlF1ZXJ5R2V0ID0gKChCb29sZWFuKXN1YlF1ZXJ5R2V0T2JqZWN0KS5ib29sZWFuVmFsdWUoKTsKLSAgICAgICAgaWYgKGlzU3ViUXVlcnlHZXQpCi0gICAgICAgICAgcmV0dXJuICJ1ZGRpL2Zvcm1zL0dldEZvcm0uanNwIjsKLSAgICAgIH0KLSAgICAgIHN1YlF1ZXJ5S2V5ID0gKFN0cmluZylzdWJRdWVyeUtleU9iamVjdDsKLSAgICB9Ci0gICAgICAKLSAgICBpZiAoc3ViUXVlcnlLZXkgPT0gbnVsbCB8fCBzdWJRdWVyeUtleS5sZW5ndGgoKSA8IDEpCi0gICAgICByZXR1cm4gInVkZGkvZm9ybXMvUmVnUHVibGlzaEZvcm0uanNwIjsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gcmVnRmluZFRvb2xfLmdldEZvcm1MaW5rKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9SZWdpc3RyeURldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvUmVnaXN0cnlEZXRhaWxzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDk3NThlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9SZWdpc3RyeURldGFpbHNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlByb3h5TG9hZFBhZ2VBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBSZWdpc3RyeURldGFpbHNUb29sIGV4dGVuZHMgRGV0YWlsc1Rvb2wKLXsKLSAgcHVibGljIFJlZ2lzdHJ5RGV0YWlsc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsU3RyaW5nIGFsdCkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLGFsdCxQcm94eUxvYWRQYWdlQWN0aW9uLmdldEFjdGlvbkxpbmsoInVkZGkvZm9ybXMvUmVnRGV0YWlsc0Zvcm0uanNwIikpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKCkKLSAgewotICAgIGNsZWFyUHJvcGVydHlUYWJsZSgpOwotICAgIHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRDb250cm9sbGVyKCk7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KSh0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldFRyZWVFbGVtZW50KCkpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUkVHSVNUUllfTkFNRSxyZWdFbGVtZW50LmdldE5hbWUoKSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9SZWdpc3RyeU5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9SZWdpc3RyeU5vZGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI4Nzg0My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvUmVnaXN0cnlOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyNyAgIDEzNjQ0OSBicnVuc3NlbkB1cy5pYm0uY29tIC0gVmluY2UgQnJ1bnNzZW4gIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxBZGRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbFJlbW92ZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUHVibGlzaGVkSXRlbXNFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5RdWVyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlF1ZXJ5UGFyZW50RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgUmVnaXN0cnlOb2RlIGV4dGVuZHMgVURESU5hdmlnYXRvck5vZGUKLXsKLSAgcHJpdmF0ZSBSZWdpc3RyeURldGFpbHNUb29sIHJlZ0RldGFpbHNUb29sXzsKLSAgcHJpdmF0ZSBSZWdQdWJsaXNoVG9vbCByZWdQdWJsaXNoVG9vbF87Ci0gIHByaXZhdGUgTG9naW5Ub29sIGxvZ2luVG9vbF87Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJTUFHRV9QQVRIX1NUQU5EQVJEID0gInVkZGkvaW1hZ2VzL3JlZ2lzdHJ5LmdpZiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElNQUdFX1BBVEhfV0lUSF9VU0VSX0RFRklORURfQ0FURUdPUklFUyA9ICJ1ZGRpL2ltYWdlcy9yZWdzdHJ5Y2F0X29iai5naWYiOwotICAKLSAgcHVibGljIFJlZ2lzdHJ5Tm9kZShUcmVlRWxlbWVudCBlbGVtZW50LE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLGludCBub2RlRGVwdGgsU3RyaW5nIGltYWdlUGF0aCkKLSAgewotICAgIHN1cGVyKGVsZW1lbnQsbm9kZU1hbmFnZXIsbm9kZURlcHRoLGltYWdlUGF0aCk7Ci0gICAgZWxlbWVudC5hZGRMaXN0ZW5lcihuZXcgRWxlbWVudEFkYXB0ZXIoKQotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIHJlbEFkZGVkKFJlbEFkZEV2ZW50IGV2ZW50KQotICAgICAgewotICAgICAgICBTdHJpbmcgcmVsID0gZXZlbnQuZ2V0T3V0Qm91bmRSZWxOYW1lKCk7Ci0gICAgICAgIGlmIChyZWwuZXF1YWxzKFVERElNb2RlbENvbnN0YW50cy5SRUxfUVVFUklFU19QQVJFTlQpKQotICAgICAgICB7Ci0gICAgICAgICAgUXVlcnlQYXJlbnRFbGVtZW50IHF1ZXJ5UGFyZW50RWxlbWVudCA9IChRdWVyeVBhcmVudEVsZW1lbnQpZXZlbnQuZ2V0UGFyZW50RWxlbWVudCgpOwotICAgICAgICAgIGNyZWF0ZUNoaWxkTm9kZShxdWVyeVBhcmVudEVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzUHVibGlzaGVkSXRlbXNSZWwocmVsKSkKLSAgICAgICAgewotICAgICAgICAgIFB1Ymxpc2hlZEl0ZW1zRWxlbWVudCBwdWJsaXNoZWRJdGVtc0VsZW1lbnQgPSAoUHVibGlzaGVkSXRlbXNFbGVtZW50KWV2ZW50LmdldFBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICBjcmVhdGVDaGlsZE5vZGUocHVibGlzaGVkSXRlbXNFbGVtZW50KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcHVibGljIHZvaWQgcmVsUmVtb3ZlZChSZWxSZW1vdmVFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgICAgVHJlZUVsZW1lbnQgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgU3RyaW5nIGluQm91bmRSZWxOYW1lID0gZXZlbnQuZ2V0SW5Cb3VuZFJlbE5hbWUoKTsKLSAgICAgICAgU3RyaW5nIG91dEJvdW5kUmVsTmFtZSA9IGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpOwotICAgICAgICBpZiAoaW5Cb3VuZFJlbE5hbWUuZXF1YWxzKFVERElNb2RlbENvbnN0YW50cy5SRUxfUVVFUklFU19QQVJFTlQpIHx8IGlzUHVibGlzaGVkSXRlbXNSZWwoaW5Cb3VuZFJlbE5hbWUpKQotICAgICAgICAgIGNoaWxkRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRJbmJvdW5kRWxlbWVudCgpOwotICAgICAgICBlbHNlIGlmIChvdXRCb3VuZFJlbE5hbWUuZXF1YWxzKFVERElNb2RlbENvbnN0YW50cy5SRUxfUVVFUklFU19QQVJFTlQpIHx8IGlzUHVibGlzaGVkSXRlbXNSZWwob3V0Qm91bmRSZWxOYW1lKSkKLSAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0T3V0Qm91bmRFbGVtZW50KCk7Ci0KLSAgICAgICAgaWYgKGNoaWxkRWxlbWVudCAhPSBudWxsKQotICAgICAgICAgIHJlbW92ZUNoaWxkTm9kZShjaGlsZEVsZW1lbnQpOwotICAgICAgfQotICAgIH0pOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIGVsZW1lbnQuY29ubmVjdChuZXcgUXVlcnlQYXJlbnRFbGVtZW50KHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJOT0RFX05BTUVfUVVFUklFU19GT0xERVIiKSxlbGVtZW50Xy5nZXRNb2RlbCgpKSxVRERJTW9kZWxDb25zdGFudHMuUkVMX1FVRVJJRVNfUEFSRU5ULE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgZWxlbWVudC5jb25uZWN0KG5ldyBQdWJsaXNoZWRJdGVtc0VsZW1lbnQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk5PREVfTkFNRV9QVUJMSVNIRURfQlVTSU5FU1NFU19GT0xERVIiKSxlbGVtZW50Xy5nZXRNb2RlbCgpKSxVRERJTW9kZWxDb25zdGFudHMuUkVMX1BVQkxJU0hFRF9CVVNJTkVTU0VTX1BBUkVOVCxNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgIGVsZW1lbnQuY29ubmVjdChuZXcgUHVibGlzaGVkSXRlbXNFbGVtZW50KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTk9ERV9OQU1FX1BVQkxJU0hFRF9TRVJWSUNFU19GT0xERVIiKSxlbGVtZW50Xy5nZXRNb2RlbCgpKSxVRERJTW9kZWxDb25zdGFudHMuUkVMX1BVQkxJU0hFRF9TRVJWSUNFU19QQVJFTlQsTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLSAgICBlbGVtZW50LmNvbm5lY3QobmV3IFB1Ymxpc2hlZEl0ZW1zRWxlbWVudChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTLHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJOT0RFX05BTUVfUFVCTElTSEVEX1NFUlZJQ0VfSU5URVJGQUNFU19GT0xERVIiKSxlbGVtZW50Xy5nZXRNb2RlbCgpKSxVRERJTW9kZWxDb25zdGFudHMuUkVMX1BVQkxJU0hFRF9TRVJWSUNFX0lOVEVSRkFDRVNfUEFSRU5ULE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgc2V0VmlzaWJpbGl0eU9mQ2hpbGRyZW4oZmFsc2UpOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGlzUHVibGlzaGVkSXRlbXNSZWwoU3RyaW5nIHJlbCkKLSAgewotICAgIHJldHVybiByZWwuZXF1YWxzKFVERElNb2RlbENvbnN0YW50cy5SRUxfUFVCTElTSEVEX0JVU0lORVNTRVNfUEFSRU5UKSB8fCByZWwuZXF1YWxzKFVERElNb2RlbENvbnN0YW50cy5SRUxfUFVCTElTSEVEX1NFUlZJQ0VTX1BBUkVOVCkgfHwgcmVsLmVxdWFscyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1BVQkxJU0hFRF9TRVJWSUNFX0lOVEVSRkFDRVNfUEFSRU5UKTsKLSAgfQotCi0gIHByaXZhdGUgZmluYWwgdm9pZCBjcmVhdGVDaGlsZE5vZGUoUXVlcnlQYXJlbnRFbGVtZW50IHF1ZXJ5UGFyZW50RWxlbWVudCkKLSAgewotICAgIFF1ZXJ5UGFyZW50Tm9kZSBxdWVyeVBhcmVudE5vZGUgPSBuZXcgUXVlcnlQYXJlbnROb2RlKHF1ZXJ5UGFyZW50RWxlbWVudCxub2RlTWFuYWdlcl8sbm9kZURlcHRoXysxKTsKLSAgICBhZGRDaGlsZChxdWVyeVBhcmVudE5vZGUpOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNyZWF0ZUNoaWxkTm9kZShQdWJsaXNoZWRJdGVtc0VsZW1lbnQgcHVibGlzaGVkSXRlbXNFbGVtZW50KQotICB7Ci0gICAgUHVibGlzaGVkSXRlbXNOb2RlIHB1Ymxpc2hlZEl0ZW1zTm9kZSA9IG5ldyBQdWJsaXNoZWRJdGVtc05vZGUocHVibGlzaGVkSXRlbXNFbGVtZW50LG5vZGVNYW5hZ2VyXyxub2RlRGVwdGhfKzEpOwotICAgIGFkZENoaWxkKHB1Ymxpc2hlZEl0ZW1zTm9kZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBpbml0VG9vbHMoKQotICB7Ci0gICAgbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKTsKLSAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICByZWdEZXRhaWxzVG9vbF8gPSBuZXcgUmVnaXN0cnlEZXRhaWxzVG9vbCh0b29sTWFuYWdlcl8gLHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfUkVHSVNUUllfREVUQUlMUyIpKTsKLSAgICBSZWdGaW5kVG9vbCByZWdGaW5kVG9vbCA9IG5ldyBSZWdGaW5kVG9vbCh0b29sTWFuYWdlcl8sdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9GSU5EIikpOwotICAgIHJlZ1B1Ymxpc2hUb29sXyA9IG5ldyBSZWdQdWJsaXNoVG9vbCh0b29sTWFuYWdlcl8sdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9QVUJMSVNIIikpOwotICAgIGxvZ2luVG9vbF8gPSBuZXcgTG9naW5Ub29sKHRvb2xNYW5hZ2VyXywgdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MT0dJTiIpKTsKLSAgICBuZXcgQWRkVG9GYXZvcml0ZXNUb29sKHRvb2xNYW5hZ2VyXyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0FERF9UT19GQVZPUklURVMiKSk7Ci0gICAgcmVnRmluZFRvb2wuYWRkQXV0aGVudGljYXRpb25Qcm9wZXJ0aWVzKChSZWdpc3RyeUVsZW1lbnQpZWxlbWVudF8pOwotICAgIHJlZ1B1Ymxpc2hUb29sXy5hZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMoKFJlZ2lzdHJ5RWxlbWVudCllbGVtZW50Xyk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBSZWdpc3RyeURldGFpbHNUb29sIGdldFJlZ0RldGFpbHNUb29sKCkKLSAgewotICAgIHJldHVybiByZWdEZXRhaWxzVG9vbF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgUmVnUHVibGlzaFRvb2wgZ2V0UmVnUHVibGlzaFRvb2woKQotICB7Ci0gICAgcmV0dXJuIHJlZ1B1Ymxpc2hUb29sXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBMb2dpblRvb2wgZ2V0TG9naW5Ub29sKCkKLSAgewotICAgIHJldHVybiBsb2dpblRvb2xfOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGFkZERpc2NvdmVyZWROb2RlcyhWZWN0b3IgYWxsTm9kZXMsTm9kZSBxdWVyeVBhcmVudE5vZGUsaW50IHF1ZXJ5VHlwZSkKLSAgewotICAgIFZlY3RvciBxdWVyeU5vZGVzID0gcXVlcnlQYXJlbnROb2RlLmdldENoaWxkTm9kZXMoKTsKLSAgICBmb3IgKGludCBpPTA7aTxxdWVyeU5vZGVzLnNpemUoKTtpKyspCi0gICAgewotICAgICAgUXVlcnlOb2RlIHF1ZXJ5Tm9kZSA9IChRdWVyeU5vZGUpcXVlcnlOb2Rlcy5lbGVtZW50QXQoaSk7Ci0gICAgICBRdWVyeUVsZW1lbnQgcXVlcnlFbGVtZW50ID0gKFF1ZXJ5RWxlbWVudClxdWVyeU5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIGlmIChxdWVyeVR5cGUgPT0gVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1FVRVJJRVMpCi0gICAgICAgIGFsbE5vZGVzLmFkZEVsZW1lbnQocXVlcnlOb2RlKTsKLSAgICAgIGVsc2UgaWYgKHF1ZXJ5RWxlbWVudC5nZXRRdWVyeVR5cGUoKSA9PSBxdWVyeVR5cGUpCi0gICAgICB7Ci0gICAgICAgIFZlY3RvciBkaXNjb3ZlcmVkTm9kZXMgPSBxdWVyeU5vZGUuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgICBmb3IgKGludCBqPTA7ajxkaXNjb3ZlcmVkTm9kZXMuc2l6ZSgpO2orKykKLSAgICAgICAgICBhbGxOb2Rlcy5hZGRFbGVtZW50KGRpc2NvdmVyZWROb2Rlcy5lbGVtZW50QXQoaikpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgZmluYWwgdm9pZCBhZGRQdWJsaXNoZWROb2RlcyhWZWN0b3IgYWxsTm9kZXMsTm9kZSBwdWJsaXNoZWRJdGVtc05vZGUpCi0gIHsKLSAgICBWZWN0b3IgaXRlbU5vZGVzID0gcHVibGlzaGVkSXRlbXNOb2RlLmdldENoaWxkTm9kZXMoKTsKLSAgICBmb3IgKGludCBpPTA7aTxpdGVtTm9kZXMuc2l6ZSgpO2krKykKLSAgICAgIGFsbE5vZGVzLmFkZEVsZW1lbnQoaXRlbU5vZGVzLmVsZW1lbnRBdChpKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBnZXRBbGxCdXNpbmVzc05vZGVzKFZlY3RvciBhbGxCdXNpbmVzc05vZGVzKQotICB7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWVsZW1lbnRfOwotICAgIE5vZGUgcXVlcnlQYXJlbnROb2RlID0gZ2V0Q2hpbGROb2RlKHJlZ0VsZW1lbnQuZ2V0UXVlcnlQYXJlbnRFbGVtZW50KCkpOwotICAgIE5vZGUgcHVibGlzaGVkQnVzaW5lc3Nlc05vZGUgPSBnZXRDaGlsZE5vZGUocmVnRWxlbWVudC5nZXRQdWJsaXNoZWRCdXNpbmVzc2VzRWxlbWVudCgpKTsKLSAgICBhZGREaXNjb3ZlcmVkTm9kZXMoYWxsQnVzaW5lc3NOb2RlcyxxdWVyeVBhcmVudE5vZGUsVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMpOwotICAgIGFkZFB1Ymxpc2hlZE5vZGVzKGFsbEJ1c2luZXNzTm9kZXMscHVibGlzaGVkQnVzaW5lc3Nlc05vZGUpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgZ2V0QWxsU2VydmljZU5vZGVzKFZlY3RvciBhbGxTZXJ2aWNlc05vZGVzKQotICB7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWVsZW1lbnRfOwotICAgIE5vZGUgcXVlcnlQYXJlbnROb2RlID0gZ2V0Q2hpbGROb2RlKHJlZ0VsZW1lbnQuZ2V0UXVlcnlQYXJlbnRFbGVtZW50KCkpOwotICAgIE5vZGUgcHVibGlzaGVkU2VydmljZXNOb2RlID0gZ2V0Q2hpbGROb2RlKHJlZ0VsZW1lbnQuZ2V0UHVibGlzaGVkU2VydmljZXNFbGVtZW50KCkpOwotICAgIGFkZERpc2NvdmVyZWROb2RlcyhhbGxTZXJ2aWNlc05vZGVzLHF1ZXJ5UGFyZW50Tm9kZSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVMpOwotICAgIGFkZFB1Ymxpc2hlZE5vZGVzKGFsbFNlcnZpY2VzTm9kZXMscHVibGlzaGVkU2VydmljZXNOb2RlKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGdldEFsbFNlcnZpY2VJbnRlcmZhY2VOb2RlcyhWZWN0b3IgYWxsU2VydmljZUludGVyZmFjZU5vZGVzKQotICB7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWVsZW1lbnRfOwotICAgIE5vZGUgcXVlcnlQYXJlbnROb2RlID0gZ2V0Q2hpbGROb2RlKHJlZ0VsZW1lbnQuZ2V0UXVlcnlQYXJlbnRFbGVtZW50KCkpOwotICAgIE5vZGUgcHVibGlzaGVkU2VydmljZUludGVyZmFjZXNOb2RlID0gZ2V0Q2hpbGROb2RlKHJlZ0VsZW1lbnQuZ2V0UHVibGlzaGVkU2VydmljZUludGVyZmFjZXNFbGVtZW50KCkpOwotICAgIGFkZERpc2NvdmVyZWROb2RlcyhhbGxTZXJ2aWNlSW50ZXJmYWNlTm9kZXMscXVlcnlQYXJlbnROb2RlLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMpOwotICAgIGFkZFB1Ymxpc2hlZE5vZGVzKGFsbFNlcnZpY2VJbnRlcmZhY2VOb2RlcyxwdWJsaXNoZWRTZXJ2aWNlSW50ZXJmYWNlc05vZGUpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgZ2V0UHVibGlzaGVkQnVzaW5lc3NOb2RlcyhWZWN0b3IgcHVibGlzaGVkQnVzaW5lc3NOb2RlcykKLSAgewotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudCllbGVtZW50XzsKLSAgICBOb2RlIHB1Ymxpc2hlZEJ1c2luZXNzZXNOb2RlID0gZ2V0Q2hpbGROb2RlKHJlZ0VsZW1lbnQuZ2V0UHVibGlzaGVkQnVzaW5lc3Nlc0VsZW1lbnQoKSk7Ci0gICAgYWRkUHVibGlzaGVkTm9kZXMocHVibGlzaGVkQnVzaW5lc3NOb2RlcyxwdWJsaXNoZWRCdXNpbmVzc2VzTm9kZSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBnZXRQdWJsaXNoZWRTZXJ2aWNlTm9kZXMoVmVjdG9yIHB1Ymxpc2hlZFNlcnZpY2VOb2RlcykKLSAgewotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudCllbGVtZW50XzsKLSAgICBOb2RlIHB1Ymxpc2hlZFNlcnZpY2VzTm9kZSA9IGdldENoaWxkTm9kZShyZWdFbGVtZW50LmdldFB1Ymxpc2hlZFNlcnZpY2VzRWxlbWVudCgpKTsKLSAgICBhZGRQdWJsaXNoZWROb2RlcyhwdWJsaXNoZWRTZXJ2aWNlTm9kZXMscHVibGlzaGVkU2VydmljZXNOb2RlKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGdldFB1Ymxpc2hlZFNlcnZpY2VJbnRlcmZhY2VOb2RlcyhWZWN0b3IgcHVibGlzaGVkU2VydmljZUludGVyZmFjZU5vZGVzKQotICB7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWVsZW1lbnRfOwotICAgIE5vZGUgcHVibGlzaGVkU2VydmljZUludGVyZmFjZXNOb2RlID0gZ2V0Q2hpbGROb2RlKHJlZ0VsZW1lbnQuZ2V0UHVibGlzaGVkU2VydmljZUludGVyZmFjZXNFbGVtZW50KCkpOwotICAgIGFkZFB1Ymxpc2hlZE5vZGVzKHB1Ymxpc2hlZFNlcnZpY2VJbnRlcmZhY2VOb2RlcyxwdWJsaXNoZWRTZXJ2aWNlSW50ZXJmYWNlc05vZGUpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgZ2V0RGlzY292ZXJlZE5vZGVzKFZlY3RvciBkaXNjb3ZlcmVkTm9kZXMsaW50IHF1ZXJ5SXRlbSkKLSAgewotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudCllbGVtZW50XzsKLSAgICBOb2RlIHF1ZXJ5UGFyZW50Tm9kZSA9IGdldENoaWxkTm9kZShyZWdFbGVtZW50LmdldFF1ZXJ5UGFyZW50RWxlbWVudCgpKTsKLSAgICBhZGREaXNjb3ZlcmVkTm9kZXMoZGlzY292ZXJlZE5vZGVzLHF1ZXJ5UGFyZW50Tm9kZSxxdWVyeUl0ZW0pOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGhhc1F1ZXJ5UmVzdWx0cyhOb2RlIHF1ZXJ5UGFyZW50Tm9kZSxpbnQgcXVlcnlUeXBlKQotICB7Ci0gICAgVmVjdG9yIHF1ZXJpZXMgPSBxdWVyeVBhcmVudE5vZGUuZ2V0Q2hpbGROb2RlcygpOwotICAgIGZvciAoaW50IGk9MDtpPHF1ZXJpZXMuc2l6ZSgpO2krKykKLSAgICB7Ci0gICAgICBRdWVyeU5vZGUgcXVlcnlOb2RlID0gKFF1ZXJ5Tm9kZSlxdWVyaWVzLmVsZW1lbnRBdChpKTsKLSAgICAgIGlmIChxdWVyeU5vZGUuZ2V0Q2hpbGROb2RlcygpLnNpemUoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIFF1ZXJ5RWxlbWVudCBxdWVyeUVsZW1lbnQgPSAoUXVlcnlFbGVtZW50KXF1ZXJ5Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICBpZiAocXVlcnlFbGVtZW50LmdldFF1ZXJ5VHlwZSgpID09IHF1ZXJ5VHlwZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gaGFzQnVzaW5lc3MoKQotICB7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWVsZW1lbnRfOwotICAgIE5vZGUgcHVibGlzaGVkQnVzaW5lc3Nlc05vZGUgPSBnZXRDaGlsZE5vZGUocmVnRWxlbWVudC5nZXRQdWJsaXNoZWRCdXNpbmVzc2VzRWxlbWVudCgpKTsKLSAgICBpZiAocHVibGlzaGVkQnVzaW5lc3Nlc05vZGUuZ2V0Q2hpbGROb2RlcygpLnNpemUoKSA+IDApCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gaGFzUXVlcnlSZXN1bHRzKGdldENoaWxkTm9kZShyZWdFbGVtZW50LmdldFF1ZXJ5UGFyZW50RWxlbWVudCgpKSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBoYXNTZXJ2aWNlKCkKLSAgewotICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudCllbGVtZW50XzsKLSAgICBOb2RlIHB1Ymxpc2hlZFNlcnZpY2VzTm9kZSA9IGdldENoaWxkTm9kZShyZWdFbGVtZW50LmdldFB1Ymxpc2hlZFNlcnZpY2VzRWxlbWVudCgpKTsKLSAgICBpZiAocHVibGlzaGVkU2VydmljZXNOb2RlLmdldENoaWxkTm9kZXMoKS5zaXplKCkgPiAwKQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGhhc1F1ZXJ5UmVzdWx0cyhnZXRDaGlsZE5vZGUocmVnRWxlbWVudC5nZXRRdWVyeVBhcmVudEVsZW1lbnQoKSksVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIGhhc1NlcnZpY2VJbnRlcmZhY2UoKQotICB7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWVsZW1lbnRfOwotICAgIE5vZGUgcHVibGlzaGVkU2VydmljZUludGVyZmFjZXNOb2RlID0gZ2V0Q2hpbGROb2RlKHJlZ0VsZW1lbnQuZ2V0UHVibGlzaGVkU2VydmljZUludGVyZmFjZXNFbGVtZW50KCkpOwotICAgIGlmIChwdWJsaXNoZWRTZXJ2aWNlSW50ZXJmYWNlc05vZGUuZ2V0Q2hpbGROb2RlcygpLnNpemUoKSA+IDApCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gaGFzUXVlcnlSZXN1bHRzKGdldENoaWxkTm9kZShyZWdFbGVtZW50LmdldFF1ZXJ5UGFyZW50RWxlbWVudCgpKSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1Jlc3VsdHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvUmVzdWx0c1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI1N2Y2Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvUmVzdWx0c1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuUHJveHlMb2FkUGFnZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBSZXN1bHRzVG9vbCBleHRlbmRzIEZvcm1Ub29sCi17Ci0gIHByaXZhdGUgU3RyaW5nIGZvcm1MaW5rXzsKLQotICBwdWJsaWMgUmVzdWx0c1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsU3RyaW5nIGFsdCkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCJpbWFnZXMvZGV0YWlsc19lbmFibGVkLmdpZiIsImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiIsYWx0KTsKLSAgICBmb3JtTGlua18gPSBQcm94eUxvYWRQYWdlQWN0aW9uLmdldEFjdGlvbkxpbmsoInVkZGkvZm9ybXMvUmVzdWx0c0Zvcm0uanNwIik7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBpbml0RGVmYXVsdFByb3BlcnRpZXMoKQotICB7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIE5vZGUgbm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgcmV0dXJuIFNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZS5nZXROb2RlSWQoKSx0b29sSWRfLG5vZGUuZ2V0Vmlld0lkKCksbm9kZS5nZXRWaWV3VG9vbElkKCksZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkKLSAgewotICAgIHJldHVybiBmb3JtTGlua187Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9Sb290Q2F0ZWdvcnlOb2RlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvUm9vdENhdGVnb3J5Tm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjFjMGNlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9Sb290Q2F0ZWdvcnlOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESU1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5DYXRlZ29yeUVsZW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBSb290Q2F0ZWdvcnlOb2RlIGV4dGVuZHMgTm9kZQotewotICBwdWJsaWMgUm9vdENhdGVnb3J5Tm9kZShUcmVlRWxlbWVudCBlbGVtZW50LE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyKQotICB7Ci0gICAgc3VwZXIoZWxlbWVudCxub2RlTWFuYWdlciwxLCJpbWFnZXMvcm9vdF9tYWluLmdpZiIpOwotICAgIHNldFZpc2liaWxpdHlPZkNoaWxkcmVuKHRydWUpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgY3JlYXRlQ2hpbGRyZW4oKQotICB7Ci0gICAgRW51bWVyYXRpb24gY2hpbGRyZW4gPSBlbGVtZW50Xy5nZXRFbGVtZW50cyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1NVQkNBVEVHT1JJRVMpOwotICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKQotICAgIHsKLSAgICAgIHdoaWxlIChjaGlsZHJlbi5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHsKLSAgICAgICAgQ2F0ZWdvcnlFbGVtZW50IGNhdGVnb3J5RWxlbWVudCA9IChDYXRlZ29yeUVsZW1lbnQpY2hpbGRyZW4ubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgQ2F0ZWdvcnlOb2RlIGNhdGVnb3J5Tm9kZSA9IG5ldyBDYXRlZ29yeU5vZGUoY2F0ZWdvcnlFbGVtZW50LG5vZGVNYW5hZ2VyXyxub2RlRGVwdGhfKzEpOwotICAgICAgICBhZGRDaGlsZChjYXRlZ29yeU5vZGUpOwotICAgICAgICBjYXRlZ29yeU5vZGUuY3JlYXRlQ2hpbGRyZW4oKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvLyBSb290IG5vZGU6IG5vIG5lZWQgZm9yIHRvZ2dsZSBhY3Rpb24uCi0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgZ2V0VG9nZ2xlTm9kZUFjdGlvbkhyZWYoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIC8vIFRleHQgb25seSBub2RlLgotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIGdldExpbmtBY3Rpb25IcmVmKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBpbml0VG9vbHMoKQotICB7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9TZXJ2aWNlRGV0YWlsc1Rvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9TZXJ2aWNlRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUwNmJkZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvU2VydmljZURldGFpbHNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuUHJveHlMb2FkUGFnZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuU2VydmljZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLkJ1c2luZXNzU2VydmljZTsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuQ2F0ZWdvcnlCYWc7Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlRGV0YWlsc1Rvb2wgZXh0ZW5kcyBEZXRhaWxzVG9vbAotewotICBwdWJsaWMgU2VydmljZURldGFpbHNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBhbHQpCi0gIHsKLSAgICBzdXBlcih0b29sTWFuYWdlcixhbHQsUHJveHlMb2FkUGFnZUFjdGlvbi5nZXRBY3Rpb25MaW5rKCJ1ZGRpL2Zvcm1zL1NlcnZpY2VEZXRhaWxzRm9ybS5qc3AiKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBpbml0RGVmYXVsdFByb3BlcnRpZXMoKQotICB7Ci0gICAgY2xlYXJQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgdG9vbE1hbmFnZXJfLmdldE5vZGUoKS5nZXROb2RlTWFuYWdlcigpLmdldENvbnRyb2xsZXIoKTsKLSAgICBTZXJ2aWNlRWxlbWVudCBzZXJ2aWNlRWxlbWVudCA9IChTZXJ2aWNlRWxlbWVudCkodG9vbE1hbmFnZXJfLmdldE5vZGUoKS5nZXRUcmVlRWxlbWVudCgpKTsKLSAgICBCdXNpbmVzc1NlcnZpY2UgYnVzU2VydmljZSA9IHNlcnZpY2VFbGVtZW50LmdldEJ1c2luZXNzU2VydmljZSgpOwotCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfS0VZLGJ1c1NlcnZpY2UuZ2V0U2VydmljZUtleSgpKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfQlVTSU5FU1NfS0VZLGJ1c1NlcnZpY2UuZ2V0QnVzaW5lc3NLZXkoKSk7Ci0KLSAgICBWZWN0b3IgbmFtZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICBjb3B5SW5kZXhWZWN0b3IoYnVzU2VydmljZS5nZXROYW1lVmVjdG9yKCksbmFtZVZlY3Rvcik7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTLG5hbWVWZWN0b3IpOwotCi0gICAgVmVjdG9yIGRlc2NyaXB0aW9uVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIGNvcHlJbmRleFZlY3RvcihidXNTZXJ2aWNlLmdldERlc2NyaXB0aW9uVmVjdG9yKCksZGVzY3JpcHRpb25WZWN0b3IpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMsZGVzY3JpcHRpb25WZWN0b3IpOwotCi0gICAgQ2F0ZWdvcnlCYWcgY2F0QmFnID0gYnVzU2VydmljZS5nZXRDYXRlZ29yeUJhZygpOwotICAgIGlmIChjYXRCYWcgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3IgY2F0VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgY29weUluZGV4VmVjdG9yKGNhdEJhZy5nZXRLZXllZFJlZmVyZW5jZVZlY3RvcigpLGNhdFZlY3Rvcik7Ci0gICAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQ0FURUdPUklFUyxjYXRWZWN0b3IpOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIHZvaWQgYWRkQXV0aGVudGljYXRpb25Qcm9wZXJ0aWVzKFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50KQotICB7Ci0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSByZWdFbGVtZW50LmdldFB1Ymxpc2hVUkwoKTsKLSAgICBTdHJpbmcgdXNlcklkID0gcmVnRWxlbWVudC5nZXRVc2VySWQoKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQgPSByZWdFbGVtZW50LmdldENyZWQoKTsKLQotICAgIGlmIChwdWJsaXNoVVJMID09IG51bGwpCi0gICAgICBwdWJsaXNoVVJMID0gIiI7Ci0gICAgaWYgKHVzZXJJZCA9PSBudWxsKQotICAgICAgdXNlcklkID0gIiI7Ci0gICAgaWYgKHBhc3N3b3JkID09IG51bGwpCi0gICAgICBwYXNzd29yZCA9ICIiOwotCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySWQpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQscGFzc3dvcmQpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvU2VydmljZUludGVyZmFjZURldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvU2VydmljZUludGVyZmFjZURldGFpbHNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Yzk4NDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1NlcnZpY2VJbnRlcmZhY2VEZXRhaWxzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlByb3h5TG9hZFBhZ2VBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuU2VydmljZUludGVyZmFjZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5DYXRlZ29yeUJhZzsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuSWRlbnRpZmllckJhZzsKLQotcHVibGljIGNsYXNzIFNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzVG9vbCBleHRlbmRzIERldGFpbHNUb29sCi17Ci0gIHB1YmxpYyBTZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsU3RyaW5nIGFsdCkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLGFsdCxQcm94eUxvYWRQYWdlQWN0aW9uLmdldEFjdGlvbkxpbmsoInVkZGkvZm9ybXMvU2VydmljZUludGVyZmFjZURldGFpbHNGb3JtLmpzcCIpKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIGluaXREZWZhdWx0UHJvcGVydGllcygpCi0gIHsKLSAgICBjbGVhclByb3BlcnR5VGFibGUoKTsKLSAgICB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Q29udHJvbGxlcigpOwotICAgIFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IHNpRWxlbWVudCA9IChTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCkodG9vbE1hbmFnZXJfLmdldE5vZGUoKS5nZXRUcmVlRWxlbWVudCgpKTsKLSAgICBUTW9kZWwgdE1vZGVsID0gc2lFbGVtZW50LmdldFRNb2RlbCgpOwotCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfSU5URVJGQUNFX0tFWSx0TW9kZWwuZ2V0VE1vZGVsS2V5KCkpOwotICAgIExpc3RFbGVtZW50IG5hbWVMaXN0RWxlbWVudCA9IG5ldyBMaXN0RWxlbWVudCh0TW9kZWwuZ2V0TmFtZVN0cmluZygpKTsKLSAgICBuYW1lTGlzdEVsZW1lbnQuc2V0VGFyZ2V0Vmlld1Rvb2xJbmZvKC0xLC0xLDApOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSxuYW1lTGlzdEVsZW1lbnQpOwotCi0gICAgVmVjdG9yIGRlc2NyaXB0aW9uVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIGNvcHlJbmRleFZlY3Rvcih0TW9kZWwuZ2V0RGVzY3JpcHRpb25WZWN0b3IoKSxkZXNjcmlwdGlvblZlY3Rvcik7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTlMsZGVzY3JpcHRpb25WZWN0b3IpOwotCi0gICAgSWRlbnRpZmllckJhZyBpZEJhZyA9IHRNb2RlbC5nZXRJZGVudGlmaWVyQmFnKCk7Ci0gICAgaWYgKGlkQmFnICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIGlkVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgY29weUluZGV4VmVjdG9yKGlkQmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCksaWRWZWN0b3IpOwotICAgICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9JREVOVElGSUVSUyxpZFZlY3Rvcik7Ci0gICAgfQotCi0gICAgQ2F0ZWdvcnlCYWcgY2F0QmFnID0gdE1vZGVsLmdldENhdGVnb3J5QmFnKCk7Ci0gICAgaWYgKGNhdEJhZyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciBjYXRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBjb3B5SW5kZXhWZWN0b3IoY2F0QmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCksY2F0VmVjdG9yKTsKLSAgICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfQ0FURUdPUklFUyxjYXRWZWN0b3IpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCkKLSAgewotICAgIFN0cmluZyBwdWJsaXNoVVJMID0gcmVnRWxlbWVudC5nZXRQdWJsaXNoVVJMKCk7Ci0gICAgU3RyaW5nIHVzZXJJZCA9IHJlZ0VsZW1lbnQuZ2V0VXNlcklkKCk7Ci0gICAgU3RyaW5nIHBhc3N3b3JkID0gcmVnRWxlbWVudC5nZXRDcmVkKCk7Ci0KLSAgICBpZiAocHVibGlzaFVSTCA9PSBudWxsKQotICAgICAgcHVibGlzaFVSTCA9ICIiOwotICAgIGlmICh1c2VySWQgPT0gbnVsbCkKLSAgICAgIHVzZXJJZCA9ICIiOwotICAgIGlmIChwYXNzd29yZCA9PSBudWxsKQotICAgICAgcGFzc3dvcmQgPSAiIjsKLQotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwscHVibGlzaFVSTCk7Ci0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQsdXNlcklkKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JELHBhc3N3b3JkKTsKLSAgfSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvU2VydmljZUludGVyZmFjZU5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9TZXJ2aWNlSW50ZXJmYWNlTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODkzOGY4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9TZXJ2aWNlSW50ZXJmYWNlTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuU2VydmljZUludGVyZmFjZUdldEJ1c2luZXNzZXNBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZXJ2aWNlSW50ZXJmYWNlR2V0U2VydmljZXNBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLQotcHVibGljIGNsYXNzIFNlcnZpY2VJbnRlcmZhY2VOb2RlIGV4dGVuZHMgVURESU5hdmlnYXRvck5vZGUKLXsKLSAgcHJpdmF0ZSBEZXRhaWxzVG9vbCBkZXRhaWxzVG9vbF87Ci0gIHByaXZhdGUgVW5wdWJsaXNoVG9vbCB1bnB1Ymxpc2hUb29sXzsKLSAgcHVibGljIFNlcnZpY2VJbnRlcmZhY2VOb2RlKFRyZWVFbGVtZW50IGVsZW1lbnQsTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsaW50IG5vZGVEZXB0aCkKLSAgewotICAgIHN1cGVyKGVsZW1lbnQsbm9kZU1hbmFnZXIsbm9kZURlcHRoLCJ1ZGRpL2ltYWdlcy9zZXJ2aWNlX2ludGVyZmFjZV9oaWdobGlnaHRlZC5naWYiKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXRUb29scygpCi0gIHsKLSAgICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIGRldGFpbHNUb29sXyA9IG5ldyBTZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc1Rvb2wodG9vbE1hbmFnZXJfLHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfU0VSVklDRV9JTlRFUkZBQ0VfREVUQUlMUyIpKTsKLSAgICBuZXcgR2V0U2VydmljZXNUb29sKHRvb2xNYW5hZ2VyXyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0dFVF9TRVJWSUNFUyIpLFNlcnZpY2VJbnRlcmZhY2VHZXRTZXJ2aWNlc0FjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGVJZF8pKTsKLSAgICBuZXcgR2V0QnVzaW5lc3Nlc1Rvb2wodG9vbE1hbmFnZXJfLCJ1ZGRpL2ltYWdlcy9idXNpbmVzc2VzX2Nsb3NlZF9lbmFibGVkLmdpZiIsInVkZGkvaW1hZ2VzL2J1c2luZXNzZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiIsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9HRVRfQlVTSU5FU1NFUyIpLFNlcnZpY2VJbnRlcmZhY2VHZXRCdXNpbmVzc2VzQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkXykpOwotICAgIG5ldyBVRERJSW1wb3J0V1NETFRvV29ya2JlbmNoVG9vbCh0b29sTWFuYWdlcl8sY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfSU1QT1JUX1dTRExfVE9fV09SS0JFTkNIIikpOwotICAgIG5ldyBVRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbVRvb2wodG9vbE1hbmFnZXJfLGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1dTRExfSU1QT1JUX1RPX0ZTIikpOwotICAgIG5ldyBVRERJTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wodG9vbE1hbmFnZXJfLGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0xBVU5DSF9XRUJfU0VSVklDRV9XSVpBUkQiKSk7Ci0gICAgbmV3IEFkZFRvRmF2b3JpdGVzVG9vbCh0b29sTWFuYWdlcl8sIHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfQUREX1RPX0ZBVk9SSVRFUyIpKTsKLSAgICB1bnB1Ymxpc2hUb29sXyA9IG5ldyBVbnB1Ymxpc2hUb29sKHRvb2xNYW5hZ2VyXywidWRkaS9pbWFnZXMvdW5wdWJsaXNoX3NlcnZpY2VfaW50ZXJmYWNlX2VuYWJsZWQuZ2lmIiwidWRkaS9pbWFnZXMvdW5wdWJsaXNoX3NlcnZpY2VfaW50ZXJmYWNlX2hpZ2hsaWdodGVkLmdpZiIsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9VTlBVQkxJU0hfU0VSVklDRV9JTlRFUkZBQ0UiKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCkKLSAgewotICAgIGRldGFpbHNUb29sXy5hZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMocmVnRWxlbWVudCk7Ci0gICAgdW5wdWJsaXNoVG9vbF8uYWRkQXV0aGVudGljYXRpb25Qcm9wZXJ0aWVzKHJlZ0VsZW1lbnQpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFdTRExVUkxGcm9tRGV0YWlsc1Rvb2woKQotICB7Ci0gICAgTGlzdEVsZW1lbnQgd3NkbFVSTExpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWRldGFpbHNUb29sXy5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMKTsKLSAgICBpZiAod3NkbFVSTExpc3RFbGVtZW50ICE9IG51bGwpCi0gICAgICByZXR1cm4gKFN0cmluZyl3c2RsVVJMTGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuICJ0ZW1wLndzZGwiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvU2VydmljZU5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9TZXJ2aWNlTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmVhYzVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9TZXJ2aWNlTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuU2VydmljZUdldEJ1c2luZXNzQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuU2VydmljZUdldFNlcnZpY2VJbnRlcmZhY2VzQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5SZWdpc3RyeUVsZW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlTm9kZSBleHRlbmRzIFVERElOYXZpZ2F0b3JOb2RlCi17Ci0gIHByaXZhdGUgRGV0YWlsc1Rvb2wgZGV0YWlsc1Rvb2xfOwotICBwcml2YXRlIFVucHVibGlzaFRvb2wgdW5wdWJsaXNoVG9vbF87Ci0gIHB1YmxpYyBTZXJ2aWNlTm9kZShUcmVlRWxlbWVudCBlbGVtZW50LE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLGludCBub2RlRGVwdGgpCi0gIHsKLSAgICBzdXBlcihlbGVtZW50LG5vZGVNYW5hZ2VyLG5vZGVEZXB0aCwidWRkaS9pbWFnZXMvc2VydmljZV9oaWdobGlnaHRlZC5naWYiKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXRUb29scygpCi0gIHsKLSAgICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIGRldGFpbHNUb29sXyA9IG5ldyBTZXJ2aWNlRGV0YWlsc1Rvb2wodG9vbE1hbmFnZXJfLHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfU0VSVklDRV9ERVRBSUxTIikpOwotICAgIG5ldyBHZXRCdXNpbmVzc2VzVG9vbCh0b29sTWFuYWdlcl8sInVkZGkvaW1hZ2VzL2J1c2luZXNzX2VuYWJsZWQuZ2lmIiwidWRkaS9pbWFnZXMvYnVzaW5lc3NfaGlnaGxpZ2h0ZWQuZ2lmIix1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0dFVF9CVVNJTkVTUyIpLFNlcnZpY2VHZXRCdXNpbmVzc0FjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGVJZF8pKTsKLSAgICBuZXcgR2V0U2VydmljZUludGVyZmFjZXNUb29sKHRvb2xNYW5hZ2VyXyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0dFVF9TRVJWSUNFX0lOVEVSRkFDRVMiKSxTZXJ2aWNlR2V0U2VydmljZUludGVyZmFjZXNBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWRfKSk7Ci0gICAgbmV3IFVERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hUb29sKHRvb2xNYW5hZ2VyXyxjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9JTVBPUlRfV1NETF9UT19XT1JLQkVOQ0giKSk7Ci0gICAgbmV3IFVERElJbXBvcnRXU0RMVG9GaWxlU3lzdGVtVG9vbCh0b29sTWFuYWdlcl8sY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfV1NETF9JTVBPUlRfVE9fRlMiKSk7Ci0gICAgbmV3IFVERElMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbCh0b29sTWFuYWdlcl8sY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfTEFVTkNIX1dFQl9TRVJWSUNFX1dJWkFSRCIpKTsKLSAgICBuZXcgVURESUFkZFRvV1NETFBlcnNwZWN0aXZlVG9vbCh0b29sTWFuYWdlcl8sdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9BRERfVE9fV1NETF9QRVJTUEVDVElWRSIpKTsKLSAgICBuZXcgQWRkVG9GYXZvcml0ZXNUb29sKHRvb2xNYW5hZ2VyXyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0FERF9UT19GQVZPUklURVMiKSk7Ci0gICAgdW5wdWJsaXNoVG9vbF8gPSBuZXcgVW5wdWJsaXNoVG9vbCh0b29sTWFuYWdlcl8sInVkZGkvaW1hZ2VzL3VucHVibGlzaF9zZXJ2aWNlX2VuYWJsZWQuZ2lmIiwidWRkaS9pbWFnZXMvdW5wdWJsaXNoX3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmIix1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1VOUFVCTElTSF9TRVJWSUNFIikpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBhZGRBdXRoZW50aWNhdGlvblByb3BlcnRpZXMoUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQpCi0gIHsKLSAgICBkZXRhaWxzVG9vbF8uYWRkQXV0aGVudGljYXRpb25Qcm9wZXJ0aWVzKHJlZ0VsZW1lbnQpOwotICAgIHVucHVibGlzaFRvb2xfLmFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhyZWdFbGVtZW50KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V1NETFVSTEZyb21EZXRhaWxzVG9vbCgpCi0gIHsKLSAgICBMaXN0RWxlbWVudCB3c2RsVVJMTGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpZGV0YWlsc1Rvb2xfLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCk7Ci0gICAgaWYgKHdzZGxVUkxMaXN0RWxlbWVudCAhPSBudWxsKQotICAgICAgcmV0dXJuIChTdHJpbmcpd3NkbFVSTExpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAidGVtcC53c2RsIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1N1YlF1ZXJ5S2V5UHJvcGVydHkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9TdWJRdWVyeUtleVByb3BlcnR5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYTdkZDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1N1YlF1ZXJ5S2V5UHJvcGVydHkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1wdWJsaWMgY2xhc3MgU3ViUXVlcnlLZXlQcm9wZXJ0eQotewotICBwcml2YXRlIFN0cmluZyBzdWJRdWVyeUtleV87Ci0KLSAgcHVibGljIFN1YlF1ZXJ5S2V5UHJvcGVydHkoKQotICB7Ci0gICAgc3ViUXVlcnlLZXlfID0gIiI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRTdWJRdWVyeUtleShTdHJpbmcgc3ViUXVlcnlLZXkpCi0gIHsKLSAgICBzdWJRdWVyeUtleV8gPSBzdWJRdWVyeUtleTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3ViUXVlcnlLZXkoKQotICB7Ci0gICAgcmV0dXJuIHN1YlF1ZXJ5S2V5XzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1N1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9TdWJRdWVyeVRyYW5zZmVyVGFyZ2V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxOWU2MTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1N1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVmlld1Rvb2w7Ci0KLXB1YmxpYyBjbGFzcyBTdWJRdWVyeVRyYW5zZmVyVGFyZ2V0Ci17Ci0gIHByaXZhdGUgaW50IG5vZGVJZF87Ci0gIHByaXZhdGUgaW50IHRvb2xJZF87Ci0gIHByaXZhdGUgaW50IHZpZXdJZF87Ci0gIHByaXZhdGUgaW50IHZpZXdUb29sSWRfOwotICBwcml2YXRlIFN0cmluZyBzdWJRdWVyeUtleV87Ci0gIHByaXZhdGUgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXJfOwotICBIYXNodGFibGUgcGFyZW50UXVlcnlEYXRhXzsKLQotICBwdWJsaWMgU3ViUXVlcnlUcmFuc2ZlclRhcmdldChOb2RlIG5vZGUsU3RyaW5nIHN1YlF1ZXJ5S2V5LEhhc2h0YWJsZSBwYXJlbnRRdWVyeURhdGEpCi0gIHsKLSAgICBub2RlSWRfID0gbm9kZS5nZXROb2RlSWQoKTsKLSAgICB0b29sSWRfID0gbm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCk7Ci0gICAgdmlld0lkXyA9IG5vZGUuZ2V0Vmlld0lkKCk7Ci0gICAgdmlld1Rvb2xJZF8gPSBub2RlLmdldFZpZXdUb29sSWQoKTsKLSAgICBzdWJRdWVyeUtleV8gPSBzdWJRdWVyeUtleTsKLSAgICBub2RlTWFuYWdlcl8gPSBub2RlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgcGFyZW50UXVlcnlEYXRhXyA9IHBhcmVudFF1ZXJ5RGF0YTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0Tm9kZUlkKCkKLSAgewotICAgIHJldHVybiBub2RlSWRfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGludCBnZXRUb29sSWQoKQotICB7Ci0gICAgcmV0dXJuIHRvb2xJZF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgaW50IGdldFZpZXdJZCgpCi0gIHsKLSAgICByZXR1cm4gdmlld0lkXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0Vmlld1Rvb2xJZCgpCi0gIHsKLSAgICByZXR1cm4gdmlld1Rvb2xJZF87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN1YlF1ZXJ5S2V5KCkKLSAgewotICAgIHJldHVybiBzdWJRdWVyeUtleV87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgRm9ybVRvb2wgZ2V0VGFyZ2V0Rm9ybVRvb2woKQotICB7Ci0gICAgTm9kZSBub2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlkXyk7Ci0gICAgaWYgKG5vZGUgPT0gbnVsbCkKLSAgICAgIHJldHVybiBudWxsOwotCi0gICAgVG9vbCB0b29sID0gbm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFRvb2wodG9vbElkXyk7Ci0KLSAgICBpZiAodmlld0lkXyAhPSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpCi0gICAgewotICAgICAgVmlld1Rvb2wgdmlld1Rvb2wgPSAoVmlld1Rvb2wpdG9vbDsKLSAgICAgIFRvb2xNYW5hZ2VyIHZpZXdUb29sTWFuYWdlciA9IHZpZXdUb29sLmdldFRvb2xNYW5hZ2VyKHZpZXdJZF8pOwotICAgICAgaWYgKHZpZXdUb29sTWFuYWdlciAhPSBudWxsKQotICAgICAgICB0b29sID0gdmlld1Rvb2xNYW5hZ2VyLmdldFRvb2wodmlld1Rvb2xJZF8pOwotICAgICAgZWxzZQotICAgICAgICB0b29sID0gbnVsbDsKLSAgICB9Ci0gICAgcmV0dXJuIChGb3JtVG9vbCl0b29sOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgSGFzaHRhYmxlIGdldFBhcmVudFF1ZXJ5RGF0YSgpCi0gIHsKLSAgICByZXR1cm4gcGFyZW50UXVlcnlEYXRhXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1VERElBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9VRERJQWRkVG9XU0RMUGVyc3BlY3RpdmVUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ZTJiNmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1VERElBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkFkZFRvV1NETFBlcnNwZWN0aXZlVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlVERElBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbjsKLQotcHVibGljIGNsYXNzIFVERElBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wgZXh0ZW5kcyBBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wgewotICBwdWJsaWMgVURESUFkZFRvV1NETFBlcnNwZWN0aXZlVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLGFsdCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICByZXR1cm4gU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBVRERJQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9VRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9VRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q4NWEwMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVURESUltcG9ydFdTRExUb0ZpbGVTeXN0ZW1Ub29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5JbXBvcnRUb0ZpbGVTeXN0ZW1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuVURESUltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBVRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbVRvb2wgZXh0ZW5kcyBJbXBvcnRUb0ZpbGVTeXN0ZW1Ub29sCi17Ci0gIHB1YmxpYyBVRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsU3RyaW5nIGFsdCkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLGFsdCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIE5vZGUgbm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgcmV0dXJuIFNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZS5nZXROb2RlSWQoKSx0b29sSWRfLG5vZGUuZ2V0Vmlld0lkKCksbm9kZS5nZXRWaWV3VG9vbElkKCksZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmsoKQotICB7Ci0gICAgTm9kZSBub2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICByZXR1cm4gVURESUltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlLmdldE5vZGVJZCgpLHRvb2xJZF8sbm9kZS5nZXRWaWV3SWQoKSxub2RlLmdldFZpZXdUb29sSWQoKSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9VRERJSW1wb3J0V1NETFRvV29ya2JlbmNoVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1VERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YzM2MjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1VERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5JbXBvcnRUb1dvcmtiZW5jaFRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBVRERJSW1wb3J0V1NETFRvV29ya2JlbmNoVG9vbCBleHRlbmRzIEltcG9ydFRvV29ya2JlbmNoVG9vbAotewotICBwdWJsaWMgVURESUltcG9ydFdTRExUb1dvcmtiZW5jaFRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsU3RyaW5nIGFsdCkKLSAgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLGFsdCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIE5vZGUgbm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgcmV0dXJuIFNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZS5nZXROb2RlSWQoKSx0b29sSWRfLG5vZGUuZ2V0Vmlld0lkKCksbm9kZS5nZXRWaWV3VG9vbElkKCksZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEZvcm1MaW5rKCkKLSAgewotICAgIHJldHVybiAidWRkaS9mb3Jtcy9VRERJSW1wb3J0V1NETFRvV29ya2JlbmNoRm9ybS5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVURESUxhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVURESUxhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkN2UzNmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1VERElMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBVRERJTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wgZXh0ZW5kcyBMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbAotewotICBwdWJsaWMgVURESUxhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBhbHQpCi0gIHsKLSAgICBzdXBlcih0b29sTWFuYWdlcixhbHQpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGUuZ2V0Tm9kZUlkKCksdG9vbElkXyxub2RlLmdldFZpZXdJZCgpLG5vZGUuZ2V0Vmlld1Rvb2xJZCgpLGZvckhpc3RvcnkpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRGb3JtTGluaygpCi0gIHsKLSAgICByZXR1cm4gInVkZGkvZm9ybXMvVURESUxhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9VRERJTWFpbk5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9VRERJTWFpbk5vZGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM5MDAwZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVURESU1haW5Ob2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5FbGVtZW50QWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbEFkZEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsUmVtb3ZlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5VRERJTWFpbkVsZW1lbnQ7Ci0KLS8vIFJvb3Qgbm9kZSBmb3IgdGhlIFVEREkgTmF2aWdhdG9yIFRyZWUgVmlldwotcHVibGljIGNsYXNzIFVERElNYWluTm9kZSBleHRlbmRzIFVERElOYXZpZ2F0b3JOb2RlCi17Ci0gIHB1YmxpYyBVRERJTWFpbk5vZGUoVHJlZUVsZW1lbnQgZWxlbWVudCxOb2RlTWFuYWdlciBub2RlTWFuYWdlcikKLSAgewotICAgIHN1cGVyKGVsZW1lbnQsbm9kZU1hbmFnZXIsMSwiaW1hZ2VzL3Jvb3RfbWFpbi5naWYiKTsKLSAgICBlbGVtZW50LmFkZExpc3RlbmVyKG5ldyBFbGVtZW50QWRhcHRlcigpCi0gICAgewotICAgICAgcHVibGljIHZvaWQgcmVsQWRkZWQoUmVsQWRkRXZlbnQgZXZlbnQpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyByZWwgPSBldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKTsKLSAgICAgICAgaWYgKHJlbC5lcXVhbHMoVURESU1vZGVsQ29uc3RhbnRzLlJFTF9SRUdJU1RSSUVTKSkKLSAgICAgICAgewotICAgICAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdpc3RyeUVsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWV2ZW50LmdldFBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICBVRERJTWFpbkVsZW1lbnQgdWRkaU1haW5FbGVtZW50ID0gKFVERElNYWluRWxlbWVudCllbGVtZW50XzsKLSAgICAgICAgICB1ZGRpTWFpbkVsZW1lbnQuYWRkUmVnaXN0cnlOYW1lKHJlZ2lzdHJ5RWxlbWVudC5nZXROYW1lKCkpOwotICAgICAgICAgIGNyZWF0ZUNoaWxkTm9kZShyZWdpc3RyeUVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyB2b2lkIHJlbFJlbW92ZWQoUmVsUmVtb3ZlRXZlbnQgZXZlbnQpCi0gICAgICB7Ci0gICAgICAgIFJlZ2lzdHJ5RWxlbWVudCBjaGlsZEVsZW1lbnQgPSBudWxsOwotICAgICAgICBpZiAoZXZlbnQuZ2V0SW5Cb3VuZFJlbE5hbWUoKS5lcXVhbHMoVURESU1vZGVsQ29uc3RhbnRzLlJFTF9SRUdJU1RSSUVTKSkKLSAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWV2ZW50LmdldEluYm91bmRFbGVtZW50KCk7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpLmVxdWFscyhVRERJTW9kZWxDb25zdGFudHMuUkVMX1JFR0lTVFJJRVMpKQotICAgICAgICAgIGNoaWxkRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpZXZlbnQuZ2V0T3V0Qm91bmRFbGVtZW50KCk7Ci0KLSAgICAgICAgaWYgKGNoaWxkRWxlbWVudCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgVURESU1haW5FbGVtZW50IHVkZGlNYWluRWxlbWVudCA9IChVRERJTWFpbkVsZW1lbnQpZWxlbWVudF87Ci0gICAgICAgICAgdWRkaU1haW5FbGVtZW50LnJlbW92ZVJlZ2lzdHJ5TmFtZShjaGlsZEVsZW1lbnQuZ2V0TmFtZSgpKTsKLSAgICAgICAgICByZW1vdmVDaGlsZE5vZGUoY2hpbGRFbGVtZW50KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNyZWF0ZUNoaWxkTm9kZShUcmVlRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KWVsZW1lbnQ7Ci0gICAgRW51bWVyYXRpb24gdXNlckRlZmluZWRDYXRlZ29yaWVzID0gcmVnRWxlbWVudC5nZXRVc2VyRGVmaW5lZENhdGVnb3JpZXMoKTsKLSAgICBTdHJpbmcgaW1hZ2VQYXRoOwotICAgIGlmICh1c2VyRGVmaW5lZENhdGVnb3JpZXMgIT0gbnVsbCAmJiB1c2VyRGVmaW5lZENhdGVnb3JpZXMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICBpbWFnZVBhdGggPSBSZWdpc3RyeU5vZGUuSU1BR0VfUEFUSF9XSVRIX1VTRVJfREVGSU5FRF9DQVRFR09SSUVTOwotICAgIGVsc2UKLSAgICAgIGltYWdlUGF0aCA9IFJlZ2lzdHJ5Tm9kZS5JTUFHRV9QQVRIX1NUQU5EQVJEOwotICAgIAotICAgIFJlZ2lzdHJ5Tm9kZSByZWdOb2RlID0gbmV3IFJlZ2lzdHJ5Tm9kZShlbGVtZW50LG5vZGVNYW5hZ2VyXyxub2RlRGVwdGhfKzEsaW1hZ2VQYXRoKTsKLSAgICBhZGRDaGlsZChyZWdOb2RlKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXRUb29scygpCi0gIHsKLSAgICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpOwotICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgIG5ldyBPcGVuUmVnaXN0cnlUb29sKHRvb2xNYW5hZ2VyXyx1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX09QRU5fUkVHSVNUUlkiKSk7Ci0gIH0KLSAgCi0gIC8vIEdpdmVuIGEgbm9kZSB1bmRlciBhIHBhcnRpY3VsYXIgcmVnaXN0cnkgbm9kZSwgb2J0YWluIHRoZSByZWdpc3RyeSBub2RlLgotICBwdWJsaWMgZmluYWwgUmVnaXN0cnlOb2RlIGdldFJlZ2lzdHJ5Tm9kZShOb2RlIGN1cnJlbnROb2RlKQotICB7Ci0gICAgUmVnaXN0cnlOb2RlIHJlZ05vZGUgPSBudWxsOwotICAgIGlmIChjdXJyZW50Tm9kZSBpbnN0YW5jZW9mIFJlZ2lzdHJ5Tm9kZSkKLSAgICB7Ci0gICAgICByZWdOb2RlID0gKFJlZ2lzdHJ5Tm9kZSljdXJyZW50Tm9kZTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoY3VycmVudE5vZGUgaW5zdGFuY2VvZiBRdWVyeU5vZGUpCi0gICAgewotICAgICAgLy8gUXVlcnkgLT4gUXVlcnkgZm9sZGVyIC0+IFJlZ2lzdHJ5Ci0gICAgICByZWdOb2RlID0gKFJlZ2lzdHJ5Tm9kZSkoY3VycmVudE5vZGUuZ2V0UGFyZW50KCkuZ2V0UGFyZW50KCkpOwotICAgIH0KLSAgICBlbHNlIGlmIChjdXJyZW50Tm9kZSBpbnN0YW5jZW9mIFF1ZXJ5UGFyZW50Tm9kZSB8fCBjdXJyZW50Tm9kZSBpbnN0YW5jZW9mIFB1Ymxpc2hlZEl0ZW1zTm9kZSkKLSAgICB7Ci0gICAgICAvLyBRdWVyeSBmb2xkZXIgLT4gUmVnaXN0cnkKLSAgICAgIHJlZ05vZGUgPSAoUmVnaXN0cnlOb2RlKShjdXJyZW50Tm9kZS5nZXRQYXJlbnQoKSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGN1cnJlbnROb2RlIGluc3RhbmNlb2YgQnVzaW5lc3NOb2RlIHx8IGN1cnJlbnROb2RlIGluc3RhbmNlb2YgU2VydmljZU5vZGUgfHwgY3VycmVudE5vZGUgaW5zdGFuY2VvZiBTZXJ2aWNlSW50ZXJmYWNlTm9kZSkKLSAgICB7Ci0gICAgICAvLyBpdGVtTm9kZSAtPiBQdWJsaXNoZWQgSXRlbXMgZm9sZGVyIC0+IFJlZ2lzdHJ5Ci0gICAgICAvLyBPUjoKLSAgICAgIC8vIGl0ZW1Ob2RlIC0+IFF1ZXJ5Tm9kZSAtPiBRdWVyeSBmb2xkZXIgLT4gUmVnaXN0cnkKLSAgICAgIE5vZGUgcGFyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmdldFBhcmVudCgpOwotICAgICAgaWYgKHBhcmVudE5vZGUgaW5zdGFuY2VvZiBRdWVyeU5vZGUpCi0gICAgICAgIHJlZ05vZGUgPSAoUmVnaXN0cnlOb2RlKShwYXJlbnROb2RlLmdldFBhcmVudCgpLmdldFBhcmVudCgpKTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmVnTm9kZSA9IChSZWdpc3RyeU5vZGUpcGFyZW50Tm9kZS5nZXRQYXJlbnQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlZ05vZGU7ICAgIAotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVURESU5hdmlnYXRvckZvbGRlck5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9VRERJTmF2aWdhdG9yRm9sZGVyTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2M4Y2QzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS9wZXJzcGVjdGl2ZS9VRERJTmF2aWdhdG9yRm9sZGVyTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb2xkZXJOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlNlbGVjdE5hdmlnYXRvck5vZGVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5Ub2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgVURESU5hdmlnYXRvckZvbGRlck5vZGUgZXh0ZW5kcyBGb2xkZXJOb2RlCi17Ci0gIHB1YmxpYyBVRERJTmF2aWdhdG9yRm9sZGVyTm9kZShUcmVlRWxlbWVudCBlbGVtZW50LE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLGludCBub2RlRGVwdGgpCi0gIHsKLSAgICBzdXBlcihlbGVtZW50LG5vZGVNYW5hZ2VyLG5vZGVEZXB0aCk7Ci0gIH0KLQotICAvLyB1ZGRpL2FjdGlvbnMvVG9nZ2xlTmF2aWdhdG9yTm9kZUFjdGlvbi5qc3A/bm9kZUlkPS4uLgotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRvZ2dsZU5vZGVBY3Rpb25IcmVmKCkKLSAgewotICAgIHJldHVybiBUb2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkXyxpc09wZW5fKTsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9TZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uLmpzcD9ub2RlSWQ9Li4uCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0TGlua0FjdGlvbkhyZWYoKQotICB7Ci0gICAgcmV0dXJuIFNlbGVjdE5hdmlnYXRvck5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWRfLGZhbHNlKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1VERElOYXZpZ2F0b3JOb2RlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVURESU5hdmlnYXRvck5vZGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRlMDcyOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVURESU5hdmlnYXRvck5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuVG9nZ2xlTmF2aWdhdG9yTm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgVURESU5hdmlnYXRvck5vZGUgZXh0ZW5kcyBOb2RlCi17Ci0gIHB1YmxpYyBVRERJTmF2aWdhdG9yTm9kZShUcmVlRWxlbWVudCBlbGVtZW50LE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLGludCBub2RlRGVwdGgsU3RyaW5nIGltYWdlUGF0aCkKLSAgewotICAgIHN1cGVyKGVsZW1lbnQsbm9kZU1hbmFnZXIsbm9kZURlcHRoLGltYWdlUGF0aCk7Ci0gIH0KLQotICAvLyB1ZGRpL2FjdGlvbnMvVG9nZ2xlTmF2aWdhdG9yTm9kZUFjdGlvbi5qc3A/bm9kZUlkPS4uLgotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRvZ2dsZU5vZGVBY3Rpb25IcmVmKCkKLSAgewotICAgIHJldHVybiBUb2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkXyxpc09wZW5fKTsKLSAgfQotCi0gIC8vIHVkZGkvYWN0aW9ucy9TZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uLmpzcD9ub2RlSWQ9Li4uCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0TGlua0FjdGlvbkhyZWYoKQotICB7Ci0gICAgcmV0dXJuIFNlbGVjdE5hdmlnYXRvck5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWRfLGZhbHNlKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGFkZEF1dGhlbnRpY2F0aW9uUHJvcGVydGllcyhSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCkKLSAgewotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVURESVBlcnNwZWN0aXZlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVURESVBlcnNwZWN0aXZlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3Y2JkYjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1VERElQZXJzcGVjdGl2ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDk5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyNCAgIDEyMjc1MiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuQmFzaWNNb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5mYXZvcml0ZXMuRmF2b3JpdGVzUmVnaXN0cnlUeXBlRGVmYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5BZGRSZWdpc3RyeVRvVURESVBlcnNwZWN0aXZlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc01haW5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuT3BlblJlZ2lzdHJ5QWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuUmVnRmluZFNlcnZpY2VVVUlEQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuU3dpdGNoUGVyc3BlY3RpdmVGcm9tVURESUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuVURESUFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuQ2F0ZWdvcnlNb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5VRERJTWFpbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVVJMVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzLklGYXZvcml0ZXNVRERJUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotCi1wdWJsaWMgY2xhc3MgVURESVBlcnNwZWN0aXZlIGV4dGVuZHMgUGVyc3BlY3RpdmUKLXsKLSAgcHJpdmF0ZSBIYXNodGFibGUga25vd25SZWdpc3RyaWVzXzsKLSAgcHJpdmF0ZSBJRmF2b3JpdGVzVURESVJlZ2lzdHJ5IGRlZmF1bHRVRERJUmVnaXN0cnlfOwotICBwcml2YXRlIE1vZGVsIG5hdmlnYXRvck1vZGVsXzsKLSAgcHJpdmF0ZSBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyXzsKLSAgcHJpdmF0ZSBpbnQgd3NkbFR5cGVfOwotICBwcml2YXRlIEhhc2h0YWJsZSBjYXRlZ29yeU1hbmFnZXJzXzsKLSAgU3RyaW5nIGNhdGVnb3J5VE1vZGVsS2V5XzsKLSAgCi0gIC8vIFdpbmRvdyBzaXplcwotICBwcml2YXRlIFN0cmluZyBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfOwotICBwcml2YXRlIFN0cmluZyBzYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc187Ci0gIHByaXZhdGUgU3RyaW5nIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotICBwcml2YXRlIFN0cmluZyBzYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotCi0gIHB1YmxpYyBVRERJUGVyc3BlY3RpdmUoQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoInVkZGkiLGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgaW5pdFBlcnNwZWN0aXZlKFNlcnZsZXRDb250ZXh0IGFwcGxpY2F0aW9uKQotICB7Ci0gICAgU3RyaW5nIGRlZmF1bHRGYXZvcml0ZXMgPSBjb250cm9sbGVyXy5nZXREZWZhdWx0RmF2b3JpdGVzTG9jYXRpb24oKTsKLQlGYXZvcml0ZXNSZWdpc3RyeVR5cGVEZWZhdWx0IGZhdlJlZ1R5cGVEZWZhdWx0ID0gbmV3IEZhdm9yaXRlc1JlZ2lzdHJ5VHlwZURlZmF1bHQoZGVmYXVsdEZhdm9yaXRlcyk7Ci0gICAgSUZhdm9yaXRlc1VERElSZWdpc3RyeVtdIGZhdlJlZ2lzdHJpZXNEZWZhdWx0ID0gZmF2UmVnVHlwZURlZmF1bHQuZ2V0RmF2b3JpdGVzVURESVJlZ2lzdHJpZXMoKTsKLSAgICBrbm93blJlZ2lzdHJpZXNfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGZvciAoaW50IGk9MDtpPGZhdlJlZ2lzdHJpZXNEZWZhdWx0Lmxlbmd0aDtpKyspCi0gICAgewotICAgICAga25vd25SZWdpc3RyaWVzXy5wdXQoZmF2UmVnaXN0cmllc0RlZmF1bHRbaV0uZ2V0SW5xdWlyeVVSTCgpLGZhdlJlZ2lzdHJpZXNEZWZhdWx0W2ldKTsKLSAgICB9Ci0gICAgaWYgKGZhdlJlZ2lzdHJpZXNEZWZhdWx0Lmxlbmd0aCA+IDApCi0gICAgICBkZWZhdWx0VURESVJlZ2lzdHJ5XyA9IGZhdlJlZ2lzdHJpZXNEZWZhdWx0WzBdOwotICAgIAotICAgIG5hdmlnYXRvck1vZGVsXyA9IG5ldyBCYXNpY01vZGVsKCJ1ZGRpTW9kZWwiKTsKLSAgICBVRERJTWFpbkVsZW1lbnQgdWRkaU1haW5FbGVtZW50ID0gbmV3IFVERElNYWluRWxlbWVudChnZXRNZXNzYWdlKCJOT0RFX05BTUVfVURESV9NQUlOIiksbmF2aWdhdG9yTW9kZWxfKTsKLSAgICBuYXZpZ2F0b3JNb2RlbF8uc2V0Um9vdEVsZW1lbnQodWRkaU1haW5FbGVtZW50KTsKLSAgICBuYXZpZ2F0b3JNYW5hZ2VyXyA9IG5ldyBOb2RlTWFuYWdlcihjb250cm9sbGVyXyk7Ci0gICAgVURESU1haW5Ob2RlIHVkZGlNYWluTm9kZSA9IG5ldyBVRERJTWFpbk5vZGUodWRkaU1haW5FbGVtZW50LG5hdmlnYXRvck1hbmFnZXJfKTsKLSAgICBuYXZpZ2F0b3JNYW5hZ2VyXy5zZXRSb290Tm9kZSh1ZGRpTWFpbk5vZGUpOwotCi0gICAgd3NkbFR5cGVfID0gVURESUFjdGlvbklucHV0cy5XU0RMX1RZUEVfU0VSVklDRV9JTlRFUkZBQ0U7Ci0gICAgY2F0ZWdvcnlNYW5hZ2Vyc18gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgCi0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBjYXRlZ29yeSBtb2RlbHMuCi0gICAgaWYgKGFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZSgiY29tbW9uQ2F0ZWdvcnlNb2RlbHMiKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHN5bmNocm9uaXplZCAoYXBwbGljYXRpb24pCi0gICAgICB7Ci0gICAgICAgIGlmIChhcHBsaWNhdGlvbi5nZXRBdHRyaWJ1dGUoImNvbW1vbkNhdGVnb3J5TW9kZWxzIikgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIEhhc2h0YWJsZSBjb21tb25DYXRlZ29yeU1vZGVscyA9IG5ldyBIYXNodGFibGUoKTsKLQkJICAKLSAgICAgICAgICBDYXRlZ29yeU1vZGVsIG5haWNzTW9kZWwgPSBuZXcgQ2F0ZWdvcnlNb2RlbCgpOwotICAgICAgICAgIG5haWNzTW9kZWwuc2V0U2VydmxldENvbnRleHQoYXBwbGljYXRpb24pOwotICAgICAgICAgIG5haWNzTW9kZWwuc2V0RGVmYXVsdERhdGFGaWxlKCIvdWRkaS9kYXRhL25haWNzLWRhdGEudHh0Iik7Ci0gICAgICAgICAgbmFpY3NNb2RlbC5zZXREaXNwbGF5TmFtZShnZXRNZXNzYWdlKCJGT1JNX09QVElPTl9DQVRFR09SWV9OQUlDUyIpKTsKLSAgICAgICAgICBuYWljc01vZGVsLnNldFRNb2RlbEtleShUTW9kZWwuTkFJQ1NfVE1PREVMX0tFWSk7Ci0gICAgICAgICAgY29tbW9uQ2F0ZWdvcnlNb2RlbHMucHV0KFRNb2RlbC5OQUlDU19UTU9ERUxfS0VZLG5haWNzTW9kZWwpOwotICAgICAgICAgIAotICAgICAgICAgIENhdGVnb3J5TW9kZWwgdW5zcHNjTW9kZWwgPSBuZXcgQ2F0ZWdvcnlNb2RlbCgpOwotCQkgIHVuc3BzY01vZGVsLnNldFNlcnZsZXRDb250ZXh0KGFwcGxpY2F0aW9uKTsKLSAgICAgICAgICB1bnNwc2NNb2RlbC5zZXREZWZhdWx0RGF0YUZpbGUoIi91ZGRpL2RhdGEvdW5zcHNjLWRhdGEudHh0Iik7Ci0gICAgICAgICAgdW5zcHNjTW9kZWwuc2V0RGlzcGxheU5hbWUoZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fQ0FURUdPUllfVU5TUFNDXzczIikpOwotICAgICAgICAgIHVuc3BzY01vZGVsLnNldFRNb2RlbEtleShUTW9kZWwuVU5TUFNDXzczX1RNT0RFTF9LRVkpOwotICAgICAgICAgIGNvbW1vbkNhdGVnb3J5TW9kZWxzLnB1dChUTW9kZWwuVU5TUFNDXzczX1RNT0RFTF9LRVksdW5zcHNjTW9kZWwpOwotICAgICAgICAgIAotICAgICAgICAgIENhdGVnb3J5TW9kZWwgZ2VvTW9kZWwgPSBuZXcgQ2F0ZWdvcnlNb2RlbCgpOwotCQkgIGdlb01vZGVsLnNldFNlcnZsZXRDb250ZXh0KGFwcGxpY2F0aW9uKTsKLSAgICAgICAgICBnZW9Nb2RlbC5zZXREZWZhdWx0RGF0YUZpbGUoIi91ZGRpL2RhdGEvZ2VvLWRhdGEudHh0Iik7Ci0gICAgICAgICAgZ2VvTW9kZWwuc2V0RGlzcGxheU5hbWUoZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fQ0FURUdPUllfR0VPIikpOwotICAgICAgICAgIGdlb01vZGVsLnNldFRNb2RlbEtleShUTW9kZWwuSVNPX0NIX1RNT0RFTF9LRVkpOwotICAgICAgICAgIGNvbW1vbkNhdGVnb3J5TW9kZWxzLnB1dChUTW9kZWwuSVNPX0NIX1RNT0RFTF9LRVksZ2VvTW9kZWwpOwotICAgICAgICAgIAotICAgICAgICAgIGFwcGxpY2F0aW9uLnNldEF0dHJpYnV0ZSgiY29tbW9uQ2F0ZWdvcnlNb2RlbHMiLGNvbW1vbkNhdGVnb3J5TW9kZWxzKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBjYXRlZ29yeVRNb2RlbEtleV8gPSBudWxsOwotICAgIAotICAgIC8vIFN0YXJ0aW5nIGZyYW1lc2V0IHNpemVzLgotICAgIGlmICghRGlyVXRpbHMuaXNSVEwoKSkKLSAgICAgIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc18gPSAiMzAlLCoiOwotICAgIGVsc2UKLSAgICAgIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc18gPSAiKiwzMCUiOwotICAgIHNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9IHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc187Ci0gICAgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c18gPSAiNzUlLCoiOwotICAgIHNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c18gPSBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzXzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIEhhc2h0YWJsZSBnZXRLbm93blJlZ2lzdHJpZXMoKQotICB7Ci0gICAgLy8gV2UgbXVzdCBhbHdheXMgcXVlcnkgdGhlIGZhdm9yaXRlcyB0byBzZWUgaWYgYWRkaXRpb25hbCByZWdpc3RyaWVzIHdlcmUgYWRkZWQgb3ZlciB0aW1lLiBUaGlzIHByb3BlcnR5IGNhbm5vdCBiZSBjYWNoZWQuCi0gICAgRmF2b3JpdGVzTWFpbkVsZW1lbnQgZmF2TWFpbkVsZW1lbnQgPSAoRmF2b3JpdGVzTWFpbkVsZW1lbnQpKGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRSb290Tm9kZSgpLmdldFRyZWVFbGVtZW50KCkpOwotICAgIEZhdm9yaXRlc1VERElSZWdpc3RyeUZvbGRlckVsZW1lbnQgZmF2UmVnRm9sZGVyRWxlbWVudCA9IGZhdk1haW5FbGVtZW50LmdldEZhdm9yaXRlc1VERElSZWdpc3RyeUZvbGRlckVsZW1lbnQoKTsKLSAgICBFbnVtZXJhdGlvbiBlID0gZmF2UmVnRm9sZGVyRWxlbWVudC5nZXRBbGxGYXZvcml0ZXMoKTsKLSAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICBGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50IGZhdlJlZ0VsZW1lbnQgPSAoRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgICBTdHJpbmcgaW5xdWlyeVVSTCA9IGZhdlJlZ0VsZW1lbnQuZ2V0SW5xdWlyeVVSTCgpOwotICAgICAgaWYgKGtub3duUmVnaXN0cmllc18uZ2V0KGlucXVpcnlVUkwpID09IG51bGwpCi0gICAgICAgIGtub3duUmVnaXN0cmllc18ucHV0KGlucXVpcnlVUkwsZmF2UmVnRWxlbWVudC5nZXRJRmF2b3JpdGVzVURESVJlZ2lzdHJ5SW50ZXJmYWNlKCkpOwotICAgIH0KLSAgICByZXR1cm4ga25vd25SZWdpc3RyaWVzXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0S25vd25SZWdpc3RyeVB1Ymxpc2hVUkwoU3RyaW5nIGlucXVpcnlVUkwpCi0gIHsKLSAgICBJRmF2b3JpdGVzVURESVJlZ2lzdHJ5IGtub3duUmVnaXN0cnkgPSAoSUZhdm9yaXRlc1VERElSZWdpc3RyeSlnZXRLbm93blJlZ2lzdHJpZXMoKS5nZXQoaW5xdWlyeVVSTCk7Ci0gICAgaWYgKGtub3duUmVnaXN0cnkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IGtub3duUmVnaXN0cnkuZ2V0UHVibGlzaFVSTCgpOwotICAgICAgaWYgKFZhbGlkYXRvci52YWxpZGF0ZVVSTChwdWJsaXNoVVJMKSkKLSAgICAgICAgcmV0dXJuIHB1Ymxpc2hVUkw7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRLbm93blJlZ2lzdHJ5UmVnaXN0cmF0aW9uVVJMKFN0cmluZyBpbnF1aXJ5VVJMKQotICB7Ci0gICAgSUZhdm9yaXRlc1VERElSZWdpc3RyeSBrbm93blJlZ2lzdHJ5ID0gKElGYXZvcml0ZXNVRERJUmVnaXN0cnkpZ2V0S25vd25SZWdpc3RyaWVzKCkuZ2V0KGlucXVpcnlVUkwpOwotICAgIGlmIChrbm93blJlZ2lzdHJ5ICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIHJlZ2lzdHJhdGlvblVSTCA9IGtub3duUmVnaXN0cnkuZ2V0UmVnaXN0cmF0aW9uVVJMKCk7Ci0gICAgICBpZiAoVmFsaWRhdG9yLnZhbGlkYXRlVVJMKHJlZ2lzdHJhdGlvblVSTCkpCi0gICAgICAgIHJldHVybiByZWdpc3RyYXRpb25VUkw7Ci0gICAgfQotICAgIHJldHVybiBudWxsOyAgICAKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBJRmF2b3JpdGVzVURESVJlZ2lzdHJ5IGdldERlZmF1bHRVRERJUmVnaXN0cnkoKQotICB7Ci0gICAgcmV0dXJuIGRlZmF1bHRVRERJUmVnaXN0cnlfOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBwcmVsb2FkVURESVJlZ2lzdHJpZXMoU3RyaW5nW10gaW5xdWlyeVVSTHMsIFN0cmluZ1tdIHB1Ymxpc2hVUkxzKQotICB7Ci0gICAgaWYgKGlucXVpcnlVUkxzICE9IG51bGwpCi0gICAgewotICAgICAgSGFzaHRhYmxlIGtub3duUmVnaXN0cmllcyA9IGdldEtub3duUmVnaXN0cmllcygpOwotICAgICAgU3RyaW5nQnVmZmVyIGRpcmVjdG9yeUJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5xdWlyeVVSTHMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0JCVN0cmluZyBpbnF1aXJ5VVJMID0gVVJMVXRpbHMuZGVjb2RlKGlucXVpcnlVUkxzW2ldKTsKLSAgICAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSBudWxsOwotICAgICAgICBTdHJpbmcgcmVnTmFtZSA9IG51bGw7Ci0gICAgICAgIFN0cmluZyByZWdpc3RyYXRpb25VUkwgPSBudWxsOwotICAgICAgICAvLyBjb250aW51ZSB0byB0aGUgbmV4dCByZWdpc3RyeSBpZiBpbnF1aXJ5VVJMIGRvZXMgbm90IGV4aXN0Ci0gICAgICAgIGlmICghVmFsaWRhdG9yLnZhbGlkYXRlVVJMKGlucXVpcnlVUkwpKQotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBwb3B1bGF0ZSBhbmQgcnVuIGFuIE9wZW5SZWdpc3RyeUFjdGlvbgotICAgICAgICBPcGVuUmVnaXN0cnlBY3Rpb24gYWN0aW9uID0gbmV3IE9wZW5SZWdpc3RyeUFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICAgICAgSUZhdm9yaXRlc1VERElSZWdpc3RyeSBrbm93blJlZ2lzdHJ5ID0gKElGYXZvcml0ZXNVRERJUmVnaXN0cnkpa25vd25SZWdpc3RyaWVzLmdldChpbnF1aXJ5VVJMKTsKLSAgICAgICAgYm9vbGVhbiBjaGVja0ZvclVzZXJEZWZpbmVkQ2F0ZWdvcmllcyA9IGZhbHNlOwotICAgICAgICBGaWxlIGRpcmVjdG9yeUZpbGUgPSBudWxsOwotICAgICAgICBpZiAoa25vd25SZWdpc3RyeSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgcHVibGlzaFVSTCA9IGtub3duUmVnaXN0cnkuZ2V0UHVibGlzaFVSTCgpOwotICAgICAgICAgIHJlZ05hbWUgPSBrbm93blJlZ2lzdHJ5LmdldE5hbWUoKTsKLSAgICAgICAgICByZWdpc3RyYXRpb25VUkwgPSBrbm93blJlZ2lzdHJ5LmdldFJlZ2lzdHJhdGlvblVSTCgpOwotICAgICAgICAgIGRpcmVjdG9yeUJ1ZmZlci5zZXRMZW5ndGgoMCk7Ci0gICAgICAgICAgRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudC5mb3JtQ2F0ZWdvcmllc0RpcmVjdG9yeShkaXJlY3RvcnlCdWZmZXIsY29udHJvbGxlcl8uZ2V0U2VydmxldEVuZ2luZVN0YXRlTG9jYXRpb24oKSxyZWdOYW1lKTsKLSAgICAgICAgICBkaXJlY3RvcnlGaWxlID0gbmV3IEZpbGUoZGlyZWN0b3J5QnVmZmVyLnRvU3RyaW5nKCkpOwotICAgICAgICAgIGlmIChkaXJlY3RvcnlGaWxlLmV4aXN0cygpICYmIGRpcmVjdG9yeUZpbGUubGlzdEZpbGVzKCkubGVuZ3RoID4gMCkKLSAgICAgICAgICAgIGNoZWNrRm9yVXNlckRlZmluZWRDYXRlZ29yaWVzID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVnTmFtZSA9PSBudWxsKQotICAgICAgICAgIHJlZ05hbWUgPSBpbnF1aXJ5VVJMOwotICAgICAgICBpZiAocHVibGlzaFVSTCA9PSBudWxsICYmIHB1Ymxpc2hVUkxzICE9IG51bGwgJiYgaSA8IHB1Ymxpc2hVUkxzLmxlbmd0aCAmJiBwdWJsaXNoVVJMc1tpXSAhPSBudWxsKSB7Ci0gICAgICAgICAgcHVibGlzaFVSTCA9IFVSTFV0aWxzLmRlY29kZShwdWJsaXNoVVJMc1tpXSk7Ci0gICAgICAgIH0gIAotICAgICAgICAvLyBwb3B1bGF0ZSB0aGUgYWN0aW9uCi0gICAgICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuSU5RVUlSWV9VUkwsIGlucXVpcnlVUkwpOwotICAgICAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlJFR0lTVFJZX05BTUUsIHJlZ05hbWUpOwotICAgICAgICBpZiAoVmFsaWRhdG9yLnZhbGlkYXRlVVJMKHB1Ymxpc2hVUkwpKQotICAgICAgICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUFVCTElTSF9VUkwsIHB1Ymxpc2hVUkwpOwotICAgICAgICBpZiAoVmFsaWRhdG9yLnZhbGlkYXRlVVJMKHJlZ2lzdHJhdGlvblVSTCkpCi0gICAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5SRUdJU1RSQVRJT05fVVJMLCByZWdpc3RyYXRpb25VUkwpOwotICAgICAgICAgIAotICAgICAgICAvLyBDaGVjayBpZiBwcml2YXRlIHJlZ2lzdHJ5IGNhdGVnb3J5IGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhpcyByZWdpc3RyeS4KLSAgICAgICAgZGlyZWN0b3J5QnVmZmVyLnNldExlbmd0aCgwKTsKLSAgICAgICAgU3RyaW5nIGVuY29kZWRJbnF1aXJ5VVJMID0gVVJMVXRpbHMuZW5jb2RlKGlucXVpcnlVUkwpOwotICAgICAgICBkaXJlY3RvcnlCdWZmZXIuYXBwZW5kKGNvbnRyb2xsZXJfLmdldFNlcnZsZXRFbmdpbmVTdGF0ZUxvY2F0aW9uKCkpLmFwcGVuZChlbmNvZGVkSW5xdWlyeVVSTCkuYXBwZW5kKCIucHJvcGVydGllcyIpOwotICAgICAgICBkaXJlY3RvcnlGaWxlID0gbmV3IEZpbGUoZGlyZWN0b3J5QnVmZmVyLnRvU3RyaW5nKCkpOwotICAgICAgICBpZiAoZGlyZWN0b3J5RmlsZS5leGlzdHMoKSkKLSAgICAgICAgewotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFByb3BlcnRpZXMgcCA9IG5ldyBQcm9wZXJ0aWVzKCk7Ci0gICAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gZmluID0gbmV3IEZpbGVJbnB1dFN0cmVhbShkaXJlY3RvcnlGaWxlKTsKLSAgICAgICAgICAgIHAubG9hZChmaW4pOwotICAgICAgICAgICAgZmluLmNsb3NlKCk7Ci0gICAgICAgICAgICBkaXJlY3RvcnlGaWxlLmRlbGV0ZSgpOwotICAgICAgICAgICAgU3RyaW5nIGRhdGFEaXJlY3RvcnkgPSBwLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuQ0FURUdPUklFU19ESVJFQ1RPUlkpOwotICAgICAgICAgICAgaWYgKGRhdGFEaXJlY3RvcnkgIT0gbnVsbCkKLSAgICAgICAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5DQVRFR09SSUVTX0RJUkVDVE9SWSxkYXRhRGlyZWN0b3J5KTsKLSAgICAgICAgICAgIGNoZWNrRm9yVXNlckRlZmluZWRDYXRlZ29yaWVzID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgY2hlY2tGb3JVc2VyRGVmaW5lZENhdGVnb3JpZXMgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY2hlY2tGb3JVc2VyRGVmaW5lZENhdGVnb3JpZXMpCi0gICAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5DSEVDS19VU0VSX0RFRklORURfQ0FURUdPUklFUyxCb29sZWFuLlRSVUUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcHJvcGVydHlUYWJsZS5yZW1vdmUoVURESUFjdGlvbklucHV0cy5DSEVDS19VU0VSX0RFRklORURfQ0FURUdPUklFUyk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgIC8vIHJ1biB0aGUgYWN0aW9uCi0gICAgICAgIGFjdGlvbi5ydW4oKTsKLSAgICAgICAgCi0gICAgICAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudCkobmF2aWdhdG9yTWFuYWdlcl8uZ2V0U2VsZWN0ZWROb2RlKCkuZ2V0VHJlZUVsZW1lbnQoKSk7Ci0gICAgICAgIEVudW1lcmF0aW9uIHVzZXJEZWZpbmVkQ2F0ZWdvcmllcyA9IHJlZ0VsZW1lbnQuZ2V0VXNlckRlZmluZWRDYXRlZ29yaWVzKCk7Ci0gICAgICAgIGlmICh1c2VyRGVmaW5lZENhdGVnb3JpZXMgIT0gbnVsbCAmJiB1c2VyRGVmaW5lZENhdGVnb3JpZXMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBBZGRSZWdpc3RyeVRvVURESVBlcnNwZWN0aXZlQWN0aW9uIGFjdGlvbjIgPSBuZXcgQWRkUmVnaXN0cnlUb1VERElQZXJzcGVjdGl2ZUFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgICAgICAgU3RyaW5nIGNhdGVnb3JpZXNEaXJlY3RvcnkgPSByZWdFbGVtZW50LmdldENhdGVnb3JpZXNEaXJlY3RvcnkoKTsKLSAgICAgICAgICBpZiAoY2F0ZWdvcmllc0RpcmVjdG9yeSAhPSBudWxsKQotICAgICAgICAgICAgYWN0aW9uMi5saW5rQ2F0ZWdvcnlNb2RlbHNXaXRoU2F2ZWREYXRhKHVzZXJEZWZpbmVkQ2F0ZWdvcmllcyxjYXRlZ29yaWVzRGlyZWN0b3J5KTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBhY3Rpb24yLmxpbmtDYXRlZ29yeU1vZGVsc1dpdGhTYXZlZERhdGEocmVnRWxlbWVudC5nZXROYW1lKCksdXNlckRlZmluZWRDYXRlZ29yaWVzKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKGlucXVpcnlVUkxzLmxlbmd0aCA+IDApCi0gICAgICAgIGNvbnRyb2xsZXJfLnNldEN1cnJlbnRQZXJzcGVjdGl2ZShBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfVURESSk7Ci0gICAgfQotICB9Ci0gIAotICAvLyBQcmVjb25kaXRpb25zOiAKLSAgLy8gc2VydmljZU5hbWVzIGFuZCBzZXJ2aWNlS2V5cyBoYXZlIGxlbmd0aCA+PSAxLgotICAvLyByZWdOb2RlICE9IG51bGwKLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIHByZWxvYWRTZXJ2aWNlc0ZvclJlZ2lzdHJ5KFJlZ2lzdHJ5Tm9kZSByZWdOb2RlLFN0cmluZ1tdIHNlcnZpY2VOYW1lcyxTdHJpbmdbXSBzZXJ2aWNlS2V5cykKLSAgewotICAgIGludCByZWdOb2RlSWQgPSByZWdOb2RlLmdldE5vZGVJZCgpOwotICAgIGZvciAoaW50IGk9MDtpPHNlcnZpY2VLZXlzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgbmF2aWdhdG9yTWFuYWdlcl8uc2V0U2VsZWN0ZWROb2RlSWQocmVnTm9kZUlkKTsKLSAgICAgIFJlZ0ZpbmRTZXJ2aWNlVVVJREFjdGlvbiBhY3Rpb24gPSBuZXcgUmVnRmluZFNlcnZpY2VVVUlEQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSxzZXJ2aWNlTmFtZXNbaV0pOwotICAgICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfS0VZLHNlcnZpY2VLZXlzW2ldKTsKLSAgICAgIGFjdGlvbi5ydW4oKTsKLSAgICAgIG5hdmlnYXRvck1hbmFnZXJfLm1ha2VTZWxlY3RlZE5vZGVWaXNpYmxlKCk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBwcmVsb2FkU2VydmljZXMoU3RyaW5nW10gaW5xdWlyeVVSTHMsU3RyaW5nW10gc2VydmljZU5hbWVzLFN0cmluZ1tdIHNlcnZpY2VLZXlzKQotICB7Ci0gICAgLy8gVGhlIGFsZ29yaXRobSB3aWxsIHNlYXJjaCBmb3IgZWFjaCBzZXJ2aWNlIGtleSBpbiBlYWNoIGlucXVpcnkgVVJMLgotICAgIGlmIChzZXJ2aWNlS2V5cyAhPSBudWxsICYmIHNlcnZpY2VOYW1lcyAhPSBudWxsICYmIHNlcnZpY2VOYW1lcy5sZW5ndGggPT0gc2VydmljZUtleXMubGVuZ3RoKQotICAgIHsKLSAgICAgIGZvciAoaW50IGk9MDtpPHNlcnZpY2VLZXlzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIGlmIChpbnF1aXJ5VVJMcyAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gRWxpbWluYXRlIGR1cGxpY2F0ZSBpbnF1aXJ5IFVSTHMuCi0gICAgICAgICAgSGFzaHRhYmxlIGlucXVpcnlVUkxzSGFzaCA9IG5ldyBIYXNodGFibGUoKTsKLSAgICAgICAgICBmb3IgKGludCBqPTA7ajxpbnF1aXJ5VVJMcy5sZW5ndGg7aisrKQotICAgICAgICAgICAgaW5xdWlyeVVSTHNIYXNoLnB1dChpbnF1aXJ5VVJMc1tqXSxCb29sZWFuLlRSVUUpOwotICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIGF2YWlsYWJsZSByZWdpc3RyaWVzIGFuZCB1c2UgdGhlbSBpZiBwb3NzaWJsZS4KLSAgICAgICAgICBOb2RlIHVkZGlNYWluTm9kZSA9IG5hdmlnYXRvck1hbmFnZXJfLmdldFJvb3ROb2RlKCk7Ci0gICAgICAgICAgVmVjdG9yIHJlZ2lzdHJ5Tm9kZXMgPSB1ZGRpTWFpbk5vZGUuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgICAgIGZvciAoaW50IGs9MDtrPHJlZ2lzdHJ5Tm9kZXMuc2l6ZSgpO2srKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBSZWdpc3RyeU5vZGUgcmVnTm9kZSA9IChSZWdpc3RyeU5vZGUpcmVnaXN0cnlOb2Rlcy5lbGVtZW50QXQoayk7Ci0gICAgICAgICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICAgICAgU3RyaW5nIGV4aXN0aW5nUmVnaXN0cnlJbnF1aXJ5VVJMID0gcmVnRWxlbWVudC5nZXRJbnF1aXJ5VVJMKCk7Ci0gICAgICAgICAgICBpZiAoaW5xdWlyeVVSTHNIYXNoLmdldChleGlzdGluZ1JlZ2lzdHJ5SW5xdWlyeVVSTCkgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcHJlbG9hZFNlcnZpY2VzRm9yUmVnaXN0cnkocmVnTm9kZSxzZXJ2aWNlTmFtZXMsc2VydmljZUtleXMpOwotICAgICAgICAgICAgICBpbnF1aXJ5VVJMc0hhc2gucmVtb3ZlKGV4aXN0aW5nUmVnaXN0cnlJbnF1aXJ5VVJMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgRW51bWVyYXRpb24gaW5xdWlyeVVSTHNFbnVtID0gaW5xdWlyeVVSTHNIYXNoLmtleXMoKTsKLSAgICAgICAgICB3aGlsZSAoaW5xdWlyeVVSTHNFbnVtLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBpbnF1aXJ5VVJMID0gKFN0cmluZylpbnF1aXJ5VVJMc0VudW0ubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgICAgIHByZWxvYWRVRERJUmVnaXN0cmllcyhuZXcgU3RyaW5nW10ge2lucXVpcnlVUkx9LG51bGwpOwotICAgICAgICAgICAgUmVnaXN0cnlOb2RlIHJlZ05vZGUgPSAoUmVnaXN0cnlOb2RlKW5hdmlnYXRvck1hbmFnZXJfLmdldFNlbGVjdGVkTm9kZSgpOwotICAgICAgICAgICAgcHJlbG9hZFNlcnZpY2VzRm9yUmVnaXN0cnkocmVnTm9kZSxzZXJ2aWNlTmFtZXMsc2VydmljZUtleXMpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldENhdGVnb3J5VE1vZGVsS2V5KFN0cmluZyBjYXRlZ29yeVRNb2RlbEtleSkKLSAgewotICAgIGNhdGVnb3J5VE1vZGVsS2V5XyA9IGNhdGVnb3J5VE1vZGVsS2V5OwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldENhdGVnb3J5VE1vZGVsS2V5KCkKLSAgewotICAgIHJldHVybiBjYXRlZ29yeVRNb2RlbEtleV87Ci0gIH0KLSAgCi0gIHByaXZhdGUgZmluYWwgdm9pZCBpbml0Q2F0ZWdvcnlCcm93c2VyKENhdGVnb3J5TW9kZWwgY2F0ZWdvcnlNb2RlbCxOb2RlTWFuYWdlciBub2RlTWFuYWdlcikKLSAgewotICAgIFRyZWVFbGVtZW50IGNhdGVnb3J5Um9vdEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpY2F0ZWdvcnlNb2RlbC5nZXRSb290RWxlbWVudCgpOwotICAgIFJvb3RDYXRlZ29yeU5vZGUgcm9vdENhdGVnb3J5Tm9kZSA9IG5ldyBSb290Q2F0ZWdvcnlOb2RlKGNhdGVnb3J5Um9vdEVsZW1lbnQsbm9kZU1hbmFnZXIpOwotICAgIG5vZGVNYW5hZ2VyLnNldFJvb3ROb2RlKHJvb3RDYXRlZ29yeU5vZGUpOwotICAgIHJvb3RDYXRlZ29yeU5vZGUuY3JlYXRlQ2hpbGRyZW4oKTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIE5vZGVNYW5hZ2VyIGdldENhdGVnb3J5TWFuYWdlcigpCi0gIHsKLSAgICByZXR1cm4gKE5vZGVNYW5hZ2VyKWNhdGVnb3J5TWFuYWdlcnNfLmdldChjYXRlZ29yeVRNb2RlbEtleV8pOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgTm9kZU1hbmFnZXIgZ2V0Q2F0ZWdvcnlNYW5hZ2VyKENhdGVnb3J5TW9kZWwgY2F0ZWdvcnlNb2RlbCkKLSAgewotICAgIFN0cmluZyB0TW9kZWxLZXkgPSBjYXRlZ29yeU1vZGVsLmdldFRNb2RlbEtleSgpOwotICAgIE5vZGVNYW5hZ2VyIGNhdGVnb3J5TWFuYWdlciA9IChOb2RlTWFuYWdlciljYXRlZ29yeU1hbmFnZXJzXy5nZXQodE1vZGVsS2V5KTsKLSAgICBpZiAoY2F0ZWdvcnlNYW5hZ2VyID09IG51bGwpCi0gICAgewotICAgICAgY2F0ZWdvcnlNYW5hZ2VyID0gbmV3IE5vZGVNYW5hZ2VyKGNvbnRyb2xsZXJfKTsKLSAgICAgIGluaXRDYXRlZ29yeUJyb3dzZXIoY2F0ZWdvcnlNb2RlbCxjYXRlZ29yeU1hbmFnZXIpOwotICAgICAgY2F0ZWdvcnlNYW5hZ2Vyc18ucHV0KHRNb2RlbEtleSxjYXRlZ29yeU1hbmFnZXIpOyAgICAgIAotICAgIH0KLSAgICByZXR1cm4gY2F0ZWdvcnlNYW5hZ2VyOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIE5vZGVNYW5hZ2VyIGdldE5hdmlnYXRvck1hbmFnZXIoKQotICB7Ci0gICAgcmV0dXJuIG5hdmlnYXRvck1hbmFnZXJfOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgTm9kZU1hbmFnZXIgZ2V0Tm9kZU1hbmFnZXIoKQotICB7Ci0gICAgcmV0dXJuIGdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldFdTRExUeXBlKGludCB3c2RsVHlwZSkKLSAgewotICAgIHdzZGxUeXBlXyA9IHdzZGxUeXBlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGludCBnZXRXU0RMVHlwZSgpCi0gIHsKLSAgICByZXR1cm4gd3NkbFR5cGVfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQZXJzcGVjdGl2ZUNvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAidWRkaS91ZGRpX3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0UGVyc3BlY3RpdmVJZCgpCi0gIHsKLSAgICByZXR1cm4gQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1VEREk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0RnJhbWVzZXRzRmlsZSgpCi0gIHsKLSAgICByZXR1cm4gInVkZGkvc2NyaXB0cy91ZGRpZnJhbWVzZXRzLmpzcCI7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvY2Vzc0ZyYW1lc2V0c0Zvcm0oKQotICB7Ci0gICAgcmV0dXJuICJ1ZGRpL2Zvcm1zL1Byb2Nlc3NVRERJRnJhbWVzZXRzRm9ybS5qc3AiOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQYW5lc0ZpbGUoKQotICB7Ci0gICAgcmV0dXJuICJ1ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCI7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuICJuYXZpZ2F0b3JDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAidWRkaS9uYXZpZ2F0b3JfY29udGVudC5qc3AiOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkKLSAgewotICAgIHJldHVybiAicHJvcGVydGllc0NvbnRhaW5lciI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkKLSAgewotICAgIHJldHVybiAidWRkaS9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTdGF0dXNDb250ZW50VmFyKCkKLSAgewotICAgIHJldHVybiAic3RhdHVzQ29udGVudCI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAidWRkaS9zdGF0dXNfY29udGVudC5qc3AiOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFNhdmVQZXJzcGVjdGl2ZUFjdGlvbkxpbmsoKQotICB7Ci0gICAgLy9yZXR1cm4gU2F2ZVVERElQZXJzcGVjdGl2ZUFjdGlvbi5nZXRBY3Rpb25MaW5rKCk7Ci0gICAgcmV0dXJuICIiOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpCi0gIHsKLSAgICByZXR1cm4gcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXzsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKFN0cmluZyBjb2xzKQotICB7Ci0gICAgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9IGNvbHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKFN0cmluZyBjb2xzKQotICB7Ci0gICAgc2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfID0gY29sczsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpCi0gIHsKLSAgICByZXR1cm4gc2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKQotICB7Ci0gICAgcmV0dXJuIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKFN0cmluZyByb3dzKQotICB7Ci0gICAgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c18gPSByb3dzOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoU3RyaW5nIHJvd3MpCi0gIHsKLSAgICBzYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfID0gcm93czsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKQotICB7Ci0gICAgcmV0dXJuIHNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c187Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3dpdGNoUGVyc3BlY3RpdmVGb3JtQWN0aW9uTGluayhpbnQgdGFyZ2V0UGVyc3BlY3RpdmVJZCxib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICByZXR1cm4gU3dpdGNoUGVyc3BlY3RpdmVGcm9tVURESUFjdGlvbi5nZXRGb3JtQWN0aW9uTGluayh0YXJnZXRQZXJzcGVjdGl2ZUlkLGZvckhpc3RvcnkpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVW5wdWJsaXNoVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91ZGRpL3BlcnNwZWN0aXZlL1VucHVibGlzaFRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcyMjc2Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvcGVyc3BlY3RpdmUvVW5wdWJsaXNoVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLQotcHVibGljIGNsYXNzIFVucHVibGlzaFRvb2wgZXh0ZW5kcyBGb3JtVG9vbAotewotICBwdWJsaWMgVW5wdWJsaXNoVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGVuYWJsZUltYWdlLCBTdHJpbmcgaGlnaGxpZ2h0SW1hZ2UsIFN0cmluZyBhbHQpCi0gIHsKLSAgICBzdXBlcih0b29sTWFuYWdlciwgZW5hYmxlSW1hZ2UsIGhpZ2hsaWdodEltYWdlLCBhbHQpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGUuZ2V0Tm9kZUlkKCksdG9vbElkXyxub2RlLmdldFZpZXdJZCgpLG5vZGUuZ2V0Vmlld1Rvb2xJZCgpLGZvckhpc3RvcnkpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgYWRkQXV0aGVudGljYXRpb25Qcm9wZXJ0aWVzKFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50KQotICB7Ci0gICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSByZWdFbGVtZW50LmdldFB1Ymxpc2hVUkwoKTsKLSAgICBTdHJpbmcgdXNlcklkID0gcmVnRWxlbWVudC5nZXRVc2VySWQoKTsKLSAgICBTdHJpbmcgcGFzc3dvcmQgPSByZWdFbGVtZW50LmdldENyZWQoKTsKLQotICAgIGlmIChwdWJsaXNoVVJMID09IG51bGwpCi0gICAgICBwdWJsaXNoVVJMID0gIiI7Ci0gICAgaWYgKHVzZXJJZCA9PSBudWxsKQotICAgICAgdXNlcklkID0gIiI7Ci0gICAgaWYgKHBhc3N3b3JkID09IG51bGwpCi0gICAgICBwYXNzd29yZCA9ICIiOwotCi0gICAgc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCxwdWJsaXNoVVJMKTsKLSAgICBzZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCx1c2VySWQpOwotICAgIHNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQscGFzc3dvcmQpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpCi0gIHsKLSAgICByZXR1cm4gInVkZGkvZm9ybXMvVW5wdWJsaXNoRm9ybS5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3VkZGkvdXRpbC9VZGRpNGpIZWxwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS91dGlsL1VkZGk0akhlbHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTdiMmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdWRkaS91dGlsL1VkZGk0akhlbHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MTAwNCAgIDE0ODA1MiBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkudXRpbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLldTRExFeGNlcHRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZGlzY292ZXJ5LldlYlNlcnZpY2VzUGFyc2VyRXh0OwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5PdmVydmlld0RvYzsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLk92ZXJ2aWV3VVJMOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYmluZGluZy5BY2Nlc3NQb2ludDsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJpbmRpbmcuQmluZGluZ1RlbXBsYXRlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYmluZGluZy5CaW5kaW5nVGVtcGxhdGVzOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYmluZGluZy5JbnN0YW5jZURldGFpbHM7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5iaW5kaW5nLlRNb2RlbEluc3RhbmNlRGV0YWlsczsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJpbmRpbmcuVE1vZGVsSW5zdGFuY2VJbmZvOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuc2VydmljZS5CdXNpbmVzc1NlcnZpY2U7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuVE1vZGVsRGV0YWlsOwotaW1wb3J0IG9yZy51ZGRpNGoudHJhbnNwb3J0LlRyYW5zcG9ydEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuQ2F0ZWdvcnlCYWc7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLktleWVkUmVmZXJlbmNlOwotaW1wb3J0IG9yZy53M2MuZG9tLkNoYXJhY3RlckRhdGE7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotCi1wdWJsaWMgY2xhc3MgVWRkaTRqSGVscGVyCi17Ci0gIHB1YmxpYyBmaW5hbCBLZXllZFJlZmVyZW5jZSBnZXRXU0RMS2V5ZWRSZWZlcmVuY2UoKQotICB7Ci0gICAgS2V5ZWRSZWZlcmVuY2Uga2V5UmVmID0gbmV3IEtleWVkUmVmZXJlbmNlKCJ0eXBlcyIsICJ3c2RsU3BlYyIpOwotICAgIGtleVJlZi5zZXRUTW9kZWxLZXkoIlVVSUQ6QzFBQ0YyNkQtOTY3Mi00NDA0LTlENzAtMzlCNzU2RTYyQUI0Iik7Ci0gICAgcmV0dXJuIGtleVJlZjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBUTW9kZWwgbmV3VE1vZGVsKFN0cmluZyB3c2RsVXJsKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIG5ld1RNb2RlbCh3c2RsVXJsLCBnZXRXU0RMRGVmaW5pdGlvbih3c2RsVXJsKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgVE1vZGVsIG5ld1RNb2RlbChTdHJpbmcgd3NkbFVybCwgRGVmaW5pdGlvbiBkZWYpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBUTW9kZWwgdE1vZGVsID0gbmV3IFRNb2RlbCgpOwotICAgIHRNb2RlbC5zZXRUTW9kZWxLZXkoIiIpOwotICAgIHRNb2RlbC5zZXROYW1lKGRlZi5nZXRUYXJnZXROYW1lc3BhY2UoKSk7Ci0gICAgdE1vZGVsLnNldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygiIik7Ci0gICAgT3ZlcnZpZXdEb2Mgb3ZlcnZpZXdEb2MgPSBuZXcgT3ZlcnZpZXdEb2MoKTsKLSAgICBvdmVydmlld0RvYy5zZXRPdmVydmlld1VSTCh3c2RsVXJsKTsKLSAgICB0TW9kZWwuc2V0T3ZlcnZpZXdEb2Mob3ZlcnZpZXdEb2MpOwotICAgIENhdGVnb3J5QmFnIGNhdEJhZyA9IG5ldyBDYXRlZ29yeUJhZygpOwotICAgIFZlY3RvciBrZXlSZWZWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAga2V5UmVmVmVjdG9yLmFkZChnZXRXU0RMS2V5ZWRSZWZlcmVuY2UoKSk7Ci0gICAgY2F0QmFnLnNldEtleWVkUmVmZXJlbmNlVmVjdG9yKGtleVJlZlZlY3Rvcik7Ci0gICAgdE1vZGVsLnNldENhdGVnb3J5QmFnKGNhdEJhZyk7Ci0gICAgcmV0dXJuIHRNb2RlbDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBCdXNpbmVzc1NlcnZpY2UgbmV3QnVzaW5lc3NTZXJ2aWNlKFN0cmluZyB3c2RsVXJsLCBIYXNodGFibGUgdE1vZGVsc1RhYmxlKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIG5ld0J1c2luZXNzU2VydmljZSh3c2RsVXJsLCBnZXRXU0RMRGVmaW5pdGlvbih3c2RsVXJsKSwgdE1vZGVsc1RhYmxlKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBCdXNpbmVzc1NlcnZpY2UgbmV3QnVzaW5lc3NTZXJ2aWNlKFN0cmluZyB3c2RsVXJsLCBEZWZpbml0aW9uIGRlZiwgSGFzaHRhYmxlIHRNb2RlbHNUYWJsZSkgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIEJ1c2luZXNzU2VydmljZSBicyA9IG5ldyBCdXNpbmVzc1NlcnZpY2UoKTsKLSAgICBicy5zZXRTZXJ2aWNlS2V5KCIiKTsKLSAgICBCaW5kaW5nVGVtcGxhdGVzIGJpbmRpbmdUZW1wbGF0ZXMgPSBuZXcgQmluZGluZ1RlbXBsYXRlcygpOwotICAgIFZlY3RvciBiaW5kaW5nVGVtcGxhdGVWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgU2VydmljZVtdIHNlcnZpY2VzID0gKFNlcnZpY2VbXSlkZWYuZ2V0U2VydmljZXMoKS52YWx1ZXMoKS50b0FycmF5KG5ldyBTZXJ2aWNlWzBdKTsKLSAgICBpZiAoc2VydmljZXMubGVuZ3RoID4gMCkKLSAgICB7Ci0gICAgICBQb3J0W10gcG9ydHMgPSAoUG9ydFtdKXNlcnZpY2VzWzBdLmdldFBvcnRzKCkudmFsdWVzKCkudG9BcnJheShuZXcgUG9ydFswXSk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBvcnRzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBUTW9kZWxJbnN0YW5jZURldGFpbHMgdE1vZGVsRGV0YWlscyA9IG5ldyBUTW9kZWxJbnN0YW5jZURldGFpbHMoKTsKLSAgICAgICAgVmVjdG9yIHRNb2RlbEluZm9WZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgIFRNb2RlbCB0TW9kZWwgPSAoVE1vZGVsKXRNb2RlbHNUYWJsZS5nZXQocG9ydHNbaV0uZ2V0QmluZGluZygpLmdldFBvcnRUeXBlKCkuZ2V0UU5hbWUoKS5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgICAgIHRNb2RlbEluZm9WZWN0b3IuYWRkKGNyZWF0ZVRNb2RlbEluc3RhbmNlSW5mbyh3c2RsVXJsLCBwb3J0c1tpXSwgdE1vZGVsLmdldFRNb2RlbEtleSgpKSk7Ci0gICAgICAgIHRNb2RlbERldGFpbHMuc2V0VE1vZGVsSW5zdGFuY2VJbmZvVmVjdG9yKHRNb2RlbEluZm9WZWN0b3IpOwotICAgICAgICBCaW5kaW5nVGVtcGxhdGUgYmluZGluZ1RlbXBsYXRlID0gbmV3IEJpbmRpbmdUZW1wbGF0ZSgpOwotICAgICAgICBiaW5kaW5nVGVtcGxhdGUuc2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKGNyZWF0ZURlc2NyaXB0aW9uKHBvcnRzW2ldKSk7Ci0gICAgICAgIGJpbmRpbmdUZW1wbGF0ZS5zZXRBY2Nlc3NQb2ludChjcmVhdGVBY2Nlc3NQb2ludChwb3J0c1tpXSkpOwotICAgICAgICBiaW5kaW5nVGVtcGxhdGUuc2V0VE1vZGVsSW5zdGFuY2VEZXRhaWxzKHRNb2RlbERldGFpbHMpOwotICAgICAgICBiaW5kaW5nVGVtcGxhdGUuc2V0QmluZGluZ0tleSgiIik7Ci0gICAgICAgIGJpbmRpbmdUZW1wbGF0ZVZlY3Rvci5hZGQoYmluZGluZ1RlbXBsYXRlKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgYmluZGluZ1RlbXBsYXRlcy5zZXRCaW5kaW5nVGVtcGxhdGVWZWN0b3IoYmluZGluZ1RlbXBsYXRlVmVjdG9yKTsKLSAgICBicy5zZXRCaW5kaW5nVGVtcGxhdGVzKGJpbmRpbmdUZW1wbGF0ZXMpOwotICAgIHJldHVybiBiczsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIEJ1c2luZXNzU2VydmljZSBuZXdCdXNpbmVzc1NlcnZpY2UoU3RyaW5nIHdzZGxVcmwsIERlZmluaXRpb24gZGVmLCBUTW9kZWxbXSB0TW9kZWxzKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgQnVzaW5lc3NTZXJ2aWNlIGJzID0gbmV3IEJ1c2luZXNzU2VydmljZSgpOwotICAgIGJzLnNldFNlcnZpY2VLZXkoIiIpOwotICAgIEJpbmRpbmdUZW1wbGF0ZXMgYmluZGluZ1RlbXBsYXRlcyA9IG5ldyBCaW5kaW5nVGVtcGxhdGVzKCk7Ci0gICAgVmVjdG9yIGJpbmRpbmdUZW1wbGF0ZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICBTZXJ2aWNlW10gc2VydmljZXMgPSAoU2VydmljZVtdKWRlZi5nZXRTZXJ2aWNlcygpLnZhbHVlcygpLnRvQXJyYXkobmV3IFNlcnZpY2VbMF0pOwotICAgIGlmIChzZXJ2aWNlcy5sZW5ndGggPiAwKQotICAgIHsKLSAgICAgIFBvcnRbXSBwb3J0cyA9IChQb3J0W10pc2VydmljZXNbMF0uZ2V0UG9ydHMoKS52YWx1ZXMoKS50b0FycmF5KG5ldyBQb3J0WzBdKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9ydHMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdE1vZGVscy5sZW5ndGg7IGorKykKLSAgICAgICAgewotICAgICAgICAgIFRNb2RlbEluc3RhbmNlRGV0YWlscyB0TW9kZWxEZXRhaWxzID0gbmV3IFRNb2RlbEluc3RhbmNlRGV0YWlscygpOwotICAgICAgICAgIFZlY3RvciB0TW9kZWxJbmZvVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgIHRNb2RlbEluZm9WZWN0b3IuYWRkKGNyZWF0ZVRNb2RlbEluc3RhbmNlSW5mbyh3c2RsVXJsLCBwb3J0c1tpXSwgdE1vZGVsc1tqXS5nZXRUTW9kZWxLZXkoKSkpOwotICAgICAgICAgIHRNb2RlbERldGFpbHMuc2V0VE1vZGVsSW5zdGFuY2VJbmZvVmVjdG9yKHRNb2RlbEluZm9WZWN0b3IpOwotICAgICAgICAgIEJpbmRpbmdUZW1wbGF0ZSBiaW5kaW5nVGVtcGxhdGUgPSBuZXcgQmluZGluZ1RlbXBsYXRlKCk7Ci0gICAgICAgICAgYmluZGluZ1RlbXBsYXRlLnNldERlZmF1bHREZXNjcmlwdGlvblN0cmluZyhjcmVhdGVEZXNjcmlwdGlvbihwb3J0c1tpXSkpOwotICAgICAgICAgIGJpbmRpbmdUZW1wbGF0ZS5zZXRBY2Nlc3NQb2ludChjcmVhdGVBY2Nlc3NQb2ludChwb3J0c1tpXSkpOwotICAgICAgICAgIGJpbmRpbmdUZW1wbGF0ZS5zZXRUTW9kZWxJbnN0YW5jZURldGFpbHModE1vZGVsRGV0YWlscyk7Ci0gICAgICAgICAgYmluZGluZ1RlbXBsYXRlLnNldEJpbmRpbmdLZXkoIiIpOwotICAgICAgICAgIGJpbmRpbmdUZW1wbGF0ZVZlY3Rvci5hZGQoYmluZGluZ1RlbXBsYXRlKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBiaW5kaW5nVGVtcGxhdGVzLnNldEJpbmRpbmdUZW1wbGF0ZVZlY3RvcihiaW5kaW5nVGVtcGxhdGVWZWN0b3IpOwotICAgIGJzLnNldEJpbmRpbmdUZW1wbGF0ZXMoYmluZGluZ1RlbXBsYXRlcyk7Ci0gICAgcmV0dXJuIGJzOwotICB9Ci0KLSAgcHVibGljIERlZmluaXRpb24gZ2V0V1NETERlZmluaXRpb24oU3RyaW5nIHdzZGxVcmwpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBXZWJTZXJ2aWNlc1BhcnNlckV4dCBwYXJzZXIgPSBuZXcgV2ViU2VydmljZXNQYXJzZXJFeHQoKTsKLSAgICAgIFN0cmluZyBwcm94eVNldCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiaHR0cC5wcm94eVNldCIpOwotICAgICAgaWYgKHByb3h5U2V0ICE9IG51bGwgJiYgcHJveHlTZXQuZXF1YWxzKCJ0cnVlIikpCi0gICAgICB7Ci0gICAgICAgIHBhcnNlci5zZXRIVFRQQmFzaWNBdXRoVXNlcm5hbWUoU3lzdGVtLmdldFByb3BlcnR5KCJodHRwLnByb3h5VXNlck5hbWUiKSk7Ci0gICAgICAgIHBhcnNlci5zZXRIVFRQQmFzaWNBdXRoUGFzc3dvcmQoU3lzdGVtLmdldFByb3BlcnR5KCJodHRwLnByb3h5UGFzc3dvcmQiKSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcGFyc2VyLmdldFdTRExEZWZpbml0aW9uVmVyYm9zZSh3c2RsVXJsKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0RMRXhjZXB0aW9uKFdTRExFeGNlcHRpb24uUEFSU0VSX0VSUk9SLCBlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgY3JlYXRlRGVzY3JpcHRpb24oUG9ydCBwb3J0KQotICB7Ci0gICAgU3RyaW5nIGRlc2MgPSBudWxsOwotICAgIEVsZW1lbnQgZSA9IHBvcnQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKTsKLSAgICBpZiAoZSAhPSBudWxsKQotICAgIHsKLSAgICAgIE5vZGUgbm9kZSA9IGUuZ2V0Rmlyc3RDaGlsZCgpOwotICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgd2hpbGUgKG5vZGUgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgc3dpdGNoIChub2RlLmdldE5vZGVUeXBlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RFOgotICAgICAgICAgIGNhc2UgTm9kZS5DREFUQV9TRUNUSU9OX05PREU6Ci0gICAgICAgICAgICBzYi5hcHBlbmQoKChDaGFyYWN0ZXJEYXRhKW5vZGUpLmdldERhdGEoKSk7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZGVzYyA9IHNiLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBkZXNjOwotICB9Ci0gIAotICBwcml2YXRlIGZpbmFsIFRNb2RlbEluc3RhbmNlSW5mbyBjcmVhdGVUTW9kZWxJbnN0YW5jZUluZm8oU3RyaW5nIHdzZGxVcmwsIFBvcnQgcG9ydCwgU3RyaW5nIHRNb2RlbEtleSkKLSAgewotICAgIEluc3RhbmNlRGV0YWlscyBkZXRhaWxzID0gbmV3IEluc3RhbmNlRGV0YWlscygpOwotICAgIE92ZXJ2aWV3RG9jIG92ZXJ2aWV3RG9jID0gbmV3IE92ZXJ2aWV3RG9jKCk7Ci0gICAgVE1vZGVsSW5zdGFuY2VJbmZvIHRNb2RlbEluZm8gPSBuZXcgVE1vZGVsSW5zdGFuY2VJbmZvKCk7Ci0gICAgU3RyaW5nQnVmZmVyIG92ZXJ2aWV3VVJMU3RyaW5nID0gbmV3IFN0cmluZ0J1ZmZlcih3c2RsVXJsKTsKLSAgICBTdHJpbmcgcG9ydE5hbWUgPSBwb3J0LmdldE5hbWUoKTsKLSAgICBpZiAocG9ydE5hbWUgIT0gbnVsbCkKLSAgICB7ICAKLSAgICAgIG92ZXJ2aWV3VVJMU3RyaW5nLmFwcGVuZCgiIyIpOwotICAgICAgb3ZlcnZpZXdVUkxTdHJpbmcuYXBwZW5kKHBvcnROYW1lKTsKLSAgICB9Ci0gICAgb3ZlcnZpZXdEb2Muc2V0T3ZlcnZpZXdVUkwobmV3IE92ZXJ2aWV3VVJMKG92ZXJ2aWV3VVJMU3RyaW5nLnRvU3RyaW5nKCkpKTsKLSAgICBkZXRhaWxzLnNldE92ZXJ2aWV3RG9jKG92ZXJ2aWV3RG9jKTsKLSAgICB0TW9kZWxJbmZvLnNldEluc3RhbmNlRGV0YWlscyhkZXRhaWxzKTsKLSAgICBpZiAodE1vZGVsS2V5ICE9IG51bGwpCi0gICAgICB0TW9kZWxJbmZvLnNldFRNb2RlbEtleSh0TW9kZWxLZXkpOwotICAgIHJldHVybiB0TW9kZWxJbmZvOwotICB9Ci0gIAotICBwcml2YXRlIGZpbmFsIEFjY2Vzc1BvaW50IGNyZWF0ZUFjY2Vzc1BvaW50KFBvcnQgcG9ydCkKLSAgewotICAgIEFjY2Vzc1BvaW50IGFjY2Vzc1BvaW50ID0gbnVsbDsKLSAgICBMaXN0IGxpc3QgPSBwb3J0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIGZvciAoaW50IGogPSAwOyBqIDwgbGlzdC5zaXplKCk7IGorKykKLSAgICAgewotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClsaXN0LmdldChqKTsKLSAgICAgIGlmIChleHRFbGVtZW50IGluc3RhbmNlb2YgU09BUEFkZHJlc3MpCi0gICAgICAgeyAgCi0gICAgICAgIFN0cmluZyBsb2NhdGlvblVSSSA9ICgoU09BUEFkZHJlc3MpZXh0RWxlbWVudCkuZ2V0TG9jYXRpb25VUkkoKTsKLSAgICAgICAgYWNjZXNzUG9pbnQgPSBuZXcgQWNjZXNzUG9pbnQobG9jYXRpb25VUkksIGdldFVSTFR5cGUobG9jYXRpb25VUkkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChleHRFbGVtZW50IGluc3RhbmNlb2YgSFRUUEFkZHJlc3MpCi0gICAgICAgewotICAgICAgICBTdHJpbmcgbG9jYXRpb25VUkkgPSAoKEhUVFBBZGRyZXNzKWV4dEVsZW1lbnQpLmdldExvY2F0aW9uVVJJKCk7Ci0gICAgICAgIGFjY2Vzc1BvaW50ID0gbmV3IEFjY2Vzc1BvaW50KGxvY2F0aW9uVVJJLCBnZXRVUkxUeXBlKGxvY2F0aW9uVVJJKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYWNjZXNzUG9pbnQ7Ci0gIH0KLSAgCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFVSTF9UWVBFX09USEVSID0gIm90aGVyIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVVJMX1RZUEVTID0gImh0dHAgaHR0cHMgbWFpbCBmdHAgZmF4IHBob25lIG90aGVyIjsKLSAgCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIGdldFVSTFR5cGUoU3RyaW5nIHVybCkKLSAgewotICAgIGludCBpID0gdXJsLmluZGV4T2YoIjoiKTsKLSAgICBTdHJpbmcgdHlwZTsKLSAgICBpZiAoaSA9PSAtMSkKLSAgICAgIHR5cGUgPSBVUkxfVFlQRV9PVEhFUjsKLSAgICBlbHNlCi0gICAgewotICAgICAgdHlwZSA9IHVybC5zdWJzdHJpbmcoMCwgaSk7Ci0gICAgICBpZiAodHlwZS5lcXVhbHMoIiIpIHx8IFVSTF9UWVBFUy5pbmRleE9mKHR5cGUpID09IC0xKQotICAgICAgICB0eXBlID0gVVJMX1RZUEVfT1RIRVI7Ci0gICAgfQotICAgIHJldHVybiB0eXBlOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBpc01vbm9saXRoaWNXU0RMKERlZmluaXRpb24gZGVmKQotICB7Ci0gICAgcmV0dXJuIGhhc01lc3NhZ2UoZGVmKSAmJiBoYXNQb3J0VHlwZShkZWYpICYmIGhhc0JpbmRpbmcoZGVmKSAmJiBoYXNTZXJ2aWNlKGRlZik7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGlzU2VydmljZUltcGxlbWVudChEZWZpbml0aW9uIGRlZikKLSAgewotICAgIHJldHVybiBoYXNJbXBvcnQoZGVmKSAmJiBoYXNTZXJ2aWNlKGRlZik7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGlzU2VydmljZUludGVyZmFjZShEZWZpbml0aW9uIGRlZikKLSAgewotICAgIHJldHVybiBoYXNNZXNzYWdlKGRlZikgJiYgaGFzUG9ydFR5cGUoZGVmKSAmJiBoYXNCaW5kaW5nKGRlZik7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGlzU2VydmljZUludGVyZmFjZVdpdGhCaW5kaW5nc09ubHkoRGVmaW5pdGlvbiBkZWYpCi0gIHsKLSAgICByZXR1cm4gIWhhc1NlcnZpY2UoZGVmKSAmJiBoYXNCaW5kaW5nKGRlZik7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gaGFzTWVzc2FnZShEZWZpbml0aW9uIGRlZikKLSAgewotICAgIGZvcihJdGVyYXRvciBpdCA9IGRlZi5nZXRNZXNzYWdlcygpLnZhbHVlcygpLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICBpZiAoISgoTWVzc2FnZSlpdC5uZXh0KCkpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHJpdmF0ZSBib29sZWFuIGhhc1BvcnRUeXBlKERlZmluaXRpb24gZGVmKQotICB7Ci0gICAgZm9yKEl0ZXJhdG9yIGl0ID0gZGVmLmdldFBvcnRUeXBlcygpLnZhbHVlcygpLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICBpZiAoISgoUG9ydFR5cGUpaXQubmV4dCgpKS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBoYXNCaW5kaW5nKERlZmluaXRpb24gZGVmKQotICB7Ci0gICAgZm9yKEl0ZXJhdG9yIGl0ID0gZGVmLmdldEJpbmRpbmdzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgIGlmICghKChCaW5kaW5nKWl0Lm5leHQoKSkuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gaGFzU2VydmljZShEZWZpbml0aW9uIGRlZikKLSAgewotICAgIHJldHVybiAhZGVmLmdldFNlcnZpY2VzKCkuaXNFbXB0eSgpOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIGhhc0ltcG9ydChEZWZpbml0aW9uIGRlZikKLSAgewotICAgIHJldHVybiAhZGVmLmdldEltcG9ydHMoKS5pc0VtcHR5KCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRJbXBvcnRzKERlZmluaXRpb24gZGVmLCBTdHJpbmcgd3NkbFVybCkKLSAgewotICAKLQkgIAotCU1hcCBpbXBvcnRzTWFwID0gZGVmLmdldEltcG9ydHMoKTsKLSAgICBDb2xsZWN0aW9uIHZhbHVlcyA9IGltcG9ydHNNYXAudmFsdWVzKCk7Ci0gICAgSXRlcmF0b3IgaXQgPSB2YWx1ZXMuaXRlcmF0b3IoKTsKLSAgICAKLSAgICBWZWN0b3IgaW1wb3J0c1ZlYyA9IG5ldyBWZWN0b3IoKTsgIAotICAgIGZvcihpbnQgaSA9MDtpdC5oYXNOZXh0KCk7aSsrKXsKLSAgICAJQXJyYXlMaXN0IGFMaXN0ID0gKEFycmF5TGlzdClpdC5uZXh0KCk7Ci0gICAgICAgIEl0ZXJhdG9yIGl0SW1wb3J0cyA9IGFMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgICAgIHdoaWxlKGl0SW1wb3J0cy5oYXNOZXh0KCkpewotICAgICAgICAJaW1wb3J0c1ZlYy5hZGQoaXRJbXBvcnRzLm5leHQoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgSW1wb3J0IGltcG9ydHNbXSA9IG5ldyBJbXBvcnRbaW1wb3J0c1ZlYy5zaXplKCldIDsKLSAgICBJdGVyYXRvciBpdFZlYyA9IGltcG9ydHNWZWMuaXRlcmF0b3IoKTsKLSAgICBmb3IoaW50IGogPSAwO2l0VmVjLmhhc05leHQoKTtqKyspewotICAgIAlpbXBvcnRzW2pdID0gKEltcG9ydClpdFZlYy5uZXh0KCk7Ci0gICAgfQotICAgIAotICAgIAotICAgIAotICAgIFN0cmluZ1tdIGltcG9ydFN0cmluZ3MgPSBuZXcgU3RyaW5nW2ltcG9ydHMubGVuZ3RoXTsKLSAgICBTdHJpbmcgczsKLSAgICBpZiAod3NkbFVybCAhPSBudWxsICYmIHdzZGxVcmwuaW5kZXhPZignLycpICE9IC0xKQotICAgICAgcyA9IHdzZGxVcmwuc3Vic3RyaW5nKDAsIHdzZGxVcmwubGFzdEluZGV4T2YoJy8nKSsxKTsKLSAgICBlbHNlCi0gICAgICBzID0gIiI7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbXBvcnRTdHJpbmdzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgIFN0cmluZyBsb2NhdGlvblVSSSA9IGltcG9ydHNbaV0uZ2V0TG9jYXRpb25VUkkoKTsKLSAgICAgIGlmIChsb2NhdGlvblVSSS5pbmRleE9mKCc6JykgIT0gLTEpCi0gICAgICAgIHNiLmFwcGVuZChsb2NhdGlvblVSSSk7Ci0gICAgICBlbHNlCi0gICAgICAgIHNiLmFwcGVuZChzKS5hcHBlbmQobG9jYXRpb25VUkkpOwotICAgICAgaW1wb3J0U3RyaW5nc1tpXSA9IHNiLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBpbXBvcnRTdHJpbmdzOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXU0RMKEJ1c2luZXNzU2VydmljZSBicywgVURESVByb3h5IHByb3h5KQotICB7Ci0gICAgVmVjdG9yIGJpbmRpbmdUZW1wbGF0ZVZlY3RvciA9IGJzLmdldEJpbmRpbmdUZW1wbGF0ZXMoKS5nZXRCaW5kaW5nVGVtcGxhdGVWZWN0b3IoKTsKLSAgICBpZiAoYmluZGluZ1RlbXBsYXRlVmVjdG9yLnNpemUoKSA+IDApCi0gICAgewotICAgICAgQmluZGluZ1RlbXBsYXRlIGJ0ID0gKEJpbmRpbmdUZW1wbGF0ZSliaW5kaW5nVGVtcGxhdGVWZWN0b3IuZ2V0KDApOwotICAgICAgVE1vZGVsSW5zdGFuY2VEZXRhaWxzIHRNb2RlbERldGFpbHMgPSBidC5nZXRUTW9kZWxJbnN0YW5jZURldGFpbHMoKTsKLSAgICAgIGlmICh0TW9kZWxEZXRhaWxzICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIFZlY3RvciB0TW9kZWxJbmZvVmVjdG9yID0gdE1vZGVsRGV0YWlscy5nZXRUTW9kZWxJbnN0YW5jZUluZm9WZWN0b3IoKTsKLSAgICAgICAgaWYgKHRNb2RlbEluZm9WZWN0b3Iuc2l6ZSgpID4gMCkKLSAgICAgICAgewotICAgICAgICAgIFRNb2RlbEluc3RhbmNlSW5mbyB0TW9kZWxJbmZvID0gKFRNb2RlbEluc3RhbmNlSW5mbyl0TW9kZWxJbmZvVmVjdG9yLmdldCgwKTsKLSAgICAgICAgICBJbnN0YW5jZURldGFpbHMgZGV0YWlscyA9IHRNb2RlbEluZm8uZ2V0SW5zdGFuY2VEZXRhaWxzKCk7Ci0gICAgICAgICAgaWYgKGRldGFpbHMgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBPdmVydmlld0RvYyBvdmVydmlld0RvYyA9IGRldGFpbHMuZ2V0T3ZlcnZpZXdEb2MoKTsKLSAgICAgICAgICAgIGlmIChvdmVydmlld0RvYyAhPSBudWxsKQotICAgICAgICAgICAgICByZXR1cm4gcGFyc2Uob3ZlcnZpZXdEb2MuZ2V0T3ZlcnZpZXdVUkxTdHJpbmcoKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHByb3h5ICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgIAlTdHJpbmcgdE1vZGVsS2V5ID0gdE1vZGVsSW5mby5nZXRUTW9kZWxLZXkoKTsKLSAgICAgICAgICAJaWYgKHRNb2RlbEtleSAhPSBudWxsKQotICAgICAgICAgIAl7Ci0gICAgICAgICAgCSAgdHJ5Ci0JCQkgIHsKLSAgICAgICAgICAJICAgIFRNb2RlbERldGFpbCB0ID0gcHJveHkuZ2V0X3RNb2RlbERldGFpbCh0TW9kZWxLZXkpOwotICAgICAgICAgIAkgICAgaWYgKHQgIT0gbnVsbCkKLSAgICAgICAgICAJICAgIHsKLSAgICAgICAgICAgICAgICAgIFZlY3RvciB0TW9kZWxWZWN0b3IgPSB0LmdldFRNb2RlbFZlY3RvcigpOwotICAgICAgICAgICAgICAgICAgaWYgKHRNb2RlbFZlY3RvciAhPSBudWxsICYmIHRNb2RlbFZlY3Rvci5zaXplKCkgPiAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V1NETCgoVE1vZGVsKXRNb2RlbFZlY3Rvci5nZXQoMCkpOwotICAgICAgICAgIAkgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgCSAgY2F0Y2ggKFVERElFeGNlcHRpb24gdWRkaWUpCi0JCQkgIHsKLSAgICAgICAgICAJICB9Ci0gICAgICAgICAgCSAgY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiB0ZSkKLQkJCSAgewotICAgICAgICAgIAkgIH0KLSAgICAgICAgICAJfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRXU0RMKFRNb2RlbCB0TW9kZWwpCi0gIHsKLSAgICBPdmVydmlld0RvYyBvdmVydmlld0RvYyA9IHRNb2RlbC5nZXRPdmVydmlld0RvYygpOwotICAgIGlmIChvdmVydmlld0RvYyAhPSBudWxsKQotICAgICAgcmV0dXJuIHBhcnNlKG92ZXJ2aWV3RG9jLmdldE92ZXJ2aWV3VVJMU3RyaW5nKCkpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBwYXJzZShTdHJpbmcgcykKLSAgewotICAgIGlmIChzICE9IG51bGwgJiYgcy5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgaW50IGluZGV4ID0gcy5pbmRleE9mKCcjJyk7Ci0gICAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICAgIHJldHVybiBzLnN1YnN0cmluZygwLCBpbmRleCk7Ci0gICAgfQotICAgIHJldHVybiBzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvQnJvd3NlckRldGVjdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91dGlsL0Jyb3dzZXJEZXRlY3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MyMDUwNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvQnJvd3NlckRldGVjdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzA1ICAgMTE3MDM0IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgU2VydmljZXMgRXhwbG9yZXIgc2hvdWxkIHN1cHBvcnQgU09BUCBIZWFkZXJzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbDsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci0KLS8qKgotICogSGVscGVyIGNsYXNzIHVzZWQgdG8gZGV0ZWN0IHRoZSB0eXBlIG9mIGJyb3dzZXIgdXNlZC4gCi0gKi8KLXB1YmxpYyBjbGFzcyBCcm93c2VyRGV0ZWN0IHsKLQkKLQkvKioKLQkgKiBEZXRlcm1pbmUgaWYgTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIGlzIHVzZWQuCi0JICogCi0JICogQHBhcmFtIHJlcXVlc3QgVGhlIEhUVFAgcmVxdWVzdC4KLQkgKiBAcmV0dXJuIFRydWUgaWYgdGhlIGNsaWVudCBpcyBhIE1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciB3ZWIgYnJvd3NlciwgZmFsc2Ugb3RoZXJ3aXNlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc01pY3Jvc29mdEludGVybmV0RXhwbG9yZXIoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpIHsKLQkJU3RyaW5nIHVzZXJBZ2VudCA9IHJlcXVlc3QuZ2V0SGVhZGVyKCJVc2VyLUFnZW50Iik7Ci0JCQotCQlpZiAodXNlckFnZW50ICE9IG51bGwgJiYgdXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigibXNpZSIpICE9IC0xKQotCQkJcmV0dXJuIHRydWU7Ci0JCQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91dGlsL0NoYXJBcnJheVdyYXBwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9DaGFyQXJyYXlXcmFwcGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZjA4NTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91dGlsL0NoYXJBcnJheVdyYXBwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsOwotCi1pbXBvcnQgamF2YS5pby5DaGFyQXJyYXlXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZVdyYXBwZXI7Ci0KLXB1YmxpYyBjbGFzcyBDaGFyQXJyYXlXcmFwcGVyIGV4dGVuZHMgSHR0cFNlcnZsZXRSZXNwb25zZVdyYXBwZXIKLXsKLQlwcml2YXRlIENoYXJBcnJheVdyaXRlciBjaGFyQXJyYXlXcml0ZXJfOwotCQotCXB1YmxpYyBDaGFyQXJyYXlXcmFwcGVyKEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UpCi0JewotCQlzdXBlcihyZXNwb25zZSk7Ci0JICBjaGFyQXJyYXlXcml0ZXJfID0gbmV3IENoYXJBcnJheVdyaXRlcigpOwotCX0KLQkKLQlwdWJsaWMgUHJpbnRXcml0ZXIgZ2V0V3JpdGVyKCkKLQl7Ci0JCXJldHVybiBuZXcgUHJpbnRXcml0ZXIoY2hhckFycmF5V3JpdGVyXyk7Ci0JfQotCQotCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotCXsKLQkJcmV0dXJuIGNoYXJBcnJheVdyaXRlcl8udG9TdHJpbmcoKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvRGlyVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9EaXJVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmE4YmM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9EaXJVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBEaXJVdGlscwotewotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNSVEwoKQotICB7Ci0gICAgcmV0dXJuICJydGwiLmVxdWFscyhnZXREaXIoKSk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXREaXIoKQotICB7Ci0gICAgU3RyaW5nIHJ0bCA9ICJydGwiOwotICAgIFN0cmluZyBsdHIgPSAibHRyIjsKLQotICAgIC8vIGZyb20gc3lzdGVtIHByb3BlcnR5Ci0gICAgU3RyaW5nIG9yaWVudGF0aW9uID0gU3lzdGVtLmdldFByb3BlcnR5KCJlY2xpcHNlLm9yaWVudGF0aW9uIik7IC8vJE5PTi1OTFMtMSQKLSAgICBpZiAocnRsLmVxdWFscyhvcmllbnRhdGlvbikpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHJldHVybiBydGw7Ci0gICAgZWxzZSBpZiAobHRyLmVxdWFscyhvcmllbnRhdGlvbikpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHJldHVybiBsdHI7Ci0KLSAgICAvLyBmcm9tIGNvbW1hbmQgbGluZQotICAgIFN0cmluZ1tdIGFyZ3MgPSBQbGF0Zm9ybS5nZXRDb21tYW5kTGluZUFyZ3MoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgaWYgKCItZGlyIi5lcXVhbHNJZ25vcmVDYXNlKGFyZ3NbaV0pKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIGlmICgoaSArIDEpIDwgYXJncy5sZW5ndGggJiYgInJ0bCIuZXF1YWxzSWdub3JlQ2FzZShhcmdzW2kgKyAxXSkpIC8vJE5PTi1OTFMtMSQKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBydGw7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGx0cjsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBDaGVjayBpZiB0aGUgdXNlciBwcm9wZXJ0eSBpcyBzZXQuIElmIG5vdCBkbyBub3QKLSAgICAvLyByZWx5IG9uIHRoZSB2bS4KLSAgICBpZiAoU3lzdGVtLmdldFByb3BlcnR5KCJvc2dpLm5sLnVzZXIiKSA9PSBudWxsKSAvLyROT04tTkxTLTEkCi0gICAgICByZXR1cm4gbHRyOwotCi0gICAgLy8gZ3Vlc3MgZnJvbSBkZWZhdWx0IGxvY2FsZQotICAgIFN0cmluZyBsb2NhbGUgPSBQbGF0Zm9ybS5nZXROTCgpOwotICAgIGlmIChsb2NhbGUgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBsb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIGlmIChsb2NhbGUuc3RhcnRzV2l0aCgiYXIiKSB8fCBsb2NhbGUuc3RhcnRzV2l0aCgiZmEiKSAvLyROT04tTkxTLTEkLy8kTk9OLU5MUy0yJAotICAgICAgICB8fCBsb2NhbGUuc3RhcnRzV2l0aCgiaGUiKSB8fCBsb2NhbGUuc3RhcnRzV2l0aCgiaXciKSAvLyROT04tTkxTLTEkLy8kTk9OLU5MUy0yJAotICAgICAgICB8fCBsb2NhbGUuc3RhcnRzV2l0aCgidXIiKSkgLy8kTk9OLU5MUy0xJAotICAgIHsKLSAgICAgIHJldHVybiBydGw7Ci0gICAgfQotICAgIHJldHVybiBsdHI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9IVE1MVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9IVE1MVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNmNmY3Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvSFRNTFV0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjIyICAgMTI3NDQzIGplc3BlckBzZWxza2FiZXQub3JnIC0gSmVzcGVyIFMgTW9sbGVyCi0gKiAyMDA4MDMyNCAgIDE4NjQ1NiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKLQotcHVibGljIGZpbmFsIGNsYXNzIEhUTUxVdGlscwotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVVEY4X0VOQ09ESU5HID0gIlVURi04IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTElORV9CUkVBSyA9ICI8YnI+IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTElORV9TRVBBUkFUT1IgPSBTeXN0ZW0uZ2V0UHJvcGVydGllcygpLmdldFByb3BlcnR5KCJsaW5lLnNlcGFyYXRvciIpOwotCi0gIC8qKgotICAqIEdldCB0aGUgSFRNTCB0YWcgZm9yIGFuIGltYWdlLgotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBIVE1MIHRhZyBmb3IgdGhpcyBpbWFnZS4KLSAgKiBAcGFyYW0gSHR0cFNlcnZsZXRSZXNwb25zZSBUbyBlbmNvZGUgdGhlIHNyYyBhdHRyaWJ1dGUuCi0gICogQHBhcmFtIFN0cmluZyBzcmMgYXR0cmlidXRlIGRlZmluaW5nIHRoZSBwYXRoIHRvIHRoZSBpbWFnZSBmaWxlLiBUaGlzIG11c3QgaW5jbHVkZSB0aGUgY29udGV4dCBwYXRoLgotICAqIEBwYXJhbSBTdHJpbmcgT3B0aW9uYWwgYWx0IHRleHQgdG8gYmUgZGlzcGxheWVkIHdpdGggdGhlIGltYWdlLiBTZXQgdGhpcyB0byBudWxsIHRvIGRpc2FibGUgdGhlIGF0dHJpYnV0ZS4KLSAgKiBAcGFyYW0gU3RyaW5nIE9wdGlvbmFsIHdpZHRoIG9mIHRoZSByZW5kZXJlZCBpbWFnZS4gU2V0IHRoaXMgdG8gbnVsbCB0byBkaXNhYmxlIHRoZSBhdHRyaWJ1dGUuCi0gICogQHBhcmFtIFN0cmluZyBPcHRpb25hbCBoZWlnaHQgb2YgdGhlIHJlbmRlcmVkIGltYWcuIFNldCB0aGlzIHRvIG51bGwgdG8gZGlzYWJsZSB0aGUgYXR0cmlidXRlLgotICAqIEBwYXJhbSBIYXNodGFibGUgT3B0aW9uYWwga2V5LXZhbHVlIHBhaXJzIG9mIGFkZGl0aW9uYWwgc3RyaW5ncyB0byBiZSBhZGRlZCBhcy1pcyB0byB0aGUgdGFnLiBTZXQgdGhpcyB0byBudWxsIHRvIGRpc2FibGUuCi0gICogQHJldHVybiBTdHJpbmcgVGhlIGltYWdlIHRhZy4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0SFRNTEltYWdlVGFnKEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UsU3RyaW5nIHNyYyxTdHJpbmcgYWx0LFN0cmluZyB3aWR0aCxTdHJpbmcgaGVpZ2h0LEhhc2h0YWJsZSBhZGRpdGlvbmFsQXR0cmlidXRlcykKLSAgewotICAgIFN0cmluZ0J1ZmZlciB0YWcgPSBuZXcgU3RyaW5nQnVmZmVyKCI8aW1nIHNyYz1cIiIpOwotICAgIHRhZy5hcHBlbmQocmVzcG9uc2UuZW5jb2RlVVJMKHNyYykpLmFwcGVuZCgnXCInKTsKLSAgICBpZiAoYWx0ID09IG51bGwpCi0gICAgCWFsdCA9ICIiOwotICAgIHRhZy5hcHBlbmQoIiBhbHQ9XCIiKS5hcHBlbmQoYWx0KS5hcHBlbmQoJ1wiJyk7Ci0gICAgdGFnLmFwcGVuZCgiIHRpdGxlPVwiIikuYXBwZW5kKGFsdCkuYXBwZW5kKCdcIicpOwotICAgIGlmICh3aWR0aCAhPSBudWxsKQotICAgICAgdGFnLmFwcGVuZCgiIHdpZHRoPSIpLmFwcGVuZCh3aWR0aCk7Ci0gICAgaWYgKGhlaWdodCAhPSBudWxsKQotICAgICAgdGFnLmFwcGVuZCgiIGhlaWdodD0iKS5hcHBlbmQoaGVpZ2h0KTsKLSAgICB0YWcuYXBwZW5kKCIgYm9yZGVyPTAiKTsKLSAgICBpZiAoYWRkaXRpb25hbEF0dHJpYnV0ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBFbnVtZXJhdGlvbiBrZXlzID0gYWRkaXRpb25hbEF0dHJpYnV0ZXMua2V5cygpOwotICAgICAgd2hpbGUgKGtleXMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKWtleXMubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgdGFnLmFwcGVuZCgnICcpLmFwcGVuZChrZXkpLmFwcGVuZCgiPVwiIikuYXBwZW5kKChTdHJpbmcpYWRkaXRpb25hbEF0dHJpYnV0ZXMuZ2V0KGtleSkpLmFwcGVuZCgnXCInKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgdGFnLmFwcGVuZCgnPicpOwotICAgIHJldHVybiB0YWcudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qKgotICAqIEdldCB0aGUgSFRNTCB0YWcgZm9yIHRoaXMgbGluay4gVGhlIGNvbXBsZXRlIHRhZyBjb25zaXN0cyBvZiB0aGUgb3BlbiB0YWcgPGE+IGZvbGxvd2VkIGJ5IGEgc3ViZWxlbWVudCBhbmQsIGZpbmFsbHksIGJ5IGFuIGVuZCB0YWcgPC9hPi4KLSAgKiBAcmV0dXJuIFN0cmluZyBUaGUgSFRNTCB0YWcgb2YgdGhlIGxpbmsuCi0gICogQHBhcmFtIEh0dHBTZXJ2bGV0UmVzcG9uc2UgVG8gZW5jb2RlIHRoZSBocmVmIGF0dHJpYnV0ZS4KLSAgKiBAcGFyYW0gU3RyaW5nIFRoZSBocmVmIGF0dHJpYnV0ZSBvZiB0aGUgbGluay4gVGhpcyBtdXN0IGluY2x1ZGUgdGhlIGNvbnRleHQgcGF0aC4KLSAgKiBAcGFyYW0gU3RyaW5nIHRhcmdldCBPcHRpb25hbCB0YXJnZXQgYXR0cmlidXRlIGZvciB0aGUgbGluay4gU2V0IHRoaXMgdG8gbnVsbCB0byBkaXNhYmxlIHRoZSBhdHRyaWJ1dGUuCi0gICogQHBhcmFtIFN0cmluZyBPcHRpb25hbCBuYW1lIGZvciB0aGUgbGluay4gU2V0IHRoaXMgdG8gbnVsbCB0byBkaXNhYmxlIHRoZSBhdHRyaWJ1dGUuCi0gICogQHBhcmFtIFN0cmluZyBUaGUgbGFiZWwgd2hpY2ggYWN0cyBhcyB0aGUgc3ViZWxlbWVudC4gaS5lLiA8YT5sYWJlbDwvYT4uCi0gICogQHBhcmFtIEhhc2h0YWJsZSBPcHRpb25hbCBrZXktdmFsdWUgcGFpcnMgb2YgYWRkaXRpb25hbCBzdHJpbmcgYXR0cmlidXRlcyB0byBiZSBhZGRlZCBhcy1pcyB0byB0aGUgb3BlbiB0YWcuIFNldCB0aGlzIHRvIG51bGwgdG8gZGlzYWJsZS4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0SFRNTExpbmtUYWcoSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSxTdHJpbmcgaHJlZixTdHJpbmcgdGFyZ2V0LFN0cmluZyBuYW1lLFN0cmluZyBsYWJlbCxIYXNodGFibGUgYWRkaXRpb25hbEF0dHJpYnV0ZXMpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgdGFnID0gbmV3IFN0cmluZ0J1ZmZlcigiPGEgaHJlZj1cIiIpOwotICAgIHRhZy5hcHBlbmQocmVzcG9uc2UuZW5jb2RlVVJMKGhyZWYpKS5hcHBlbmQoJ1wiJyk7Ci0gICAgaWYgKHRhcmdldCAhPSBudWxsKQotICAgICAgdGFnLmFwcGVuZCgiIHRhcmdldD1cIiIpLmFwcGVuZCh0YXJnZXQpLmFwcGVuZCgnXCInKTsKLSAgICBpZiAobmFtZSAhPSBudWxsKQotICAgICAgdGFnLmFwcGVuZCgiIG5hbWU9XCIiKS5hcHBlbmQobmFtZSkuYXBwZW5kKCdcIicpOwotICAgIGlmIChhZGRpdGlvbmFsQXR0cmlidXRlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIEVudW1lcmF0aW9uIGtleXMgPSBhZGRpdGlvbmFsQXR0cmlidXRlcy5rZXlzKCk7Ci0gICAgICB3aGlsZSAoa2V5cy5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGtleSA9IChTdHJpbmcpa2V5cy5uZXh0RWxlbWVudCgpOwotICAgICAgICB0YWcuYXBwZW5kKCcgJykuYXBwZW5kKGtleSkuYXBwZW5kKCI9XCIiKS5hcHBlbmQoKFN0cmluZylhZGRpdGlvbmFsQXR0cmlidXRlcy5nZXQoa2V5KSkuYXBwZW5kKCdcIicpOwotICAgICAgfQotICAgIH0KLSAgICB0YWcuYXBwZW5kKCc+Jyk7Ci0gICAgdGFnLmFwcGVuZChsYWJlbCk7Ci0gICAgdGFnLmFwcGVuZCgiPC9hPiIpOwotICAgIHJldHVybiB0YWcudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qKgotICAqIEdldCB0aGUgSFRNTCB0YWcgZm9yIGEgcmVkIGFzdGVyaXN0LgotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBIVE1MIHRhZyBmb3IgdGhlIHJlZCBhc3Rlcmlzay4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcmVkQXN0ZXJpc2soKQotICB7Ci0gICAgcmV0dXJuICI8Zm9udCBjb2xvcj1cIiNmZjAwMDBcIj4qPC9mb250PiI7Ci0gIH0KLQotICAvKioKLSAgKiBHZXQgdGhlIEphdmFzY3JpcHQgbWFuZ2xlZCB2ZXJzaW9uIG9mIGEgZ2l2ZW4gaW5wdXQgU3RyaW5nLgotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBKYXZhc2NyaXB0IG1hbmdsZWQgU3RyaW5nLgotICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBKU01hbmdsZShTdHJpbmcgaW5wdXQpCi0gIHsKLSAgICBpZiAoaW5wdXQgPT0gbnVsbCkKLSAgICAgIHJldHVybiAiIjsKLQotICAgIFN0cmluZ0J1ZmZlciBtYW5nbGVkT3V0cHV0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGZvciAoaW50IGk9MDtpPGlucHV0Lmxlbmd0aCgpO2krKykKLSAgICB7Ci0gICAgICBjaGFyIGMgPSBpbnB1dC5jaGFyQXQoaSk7Ci0gICAgICBzd2l0Y2ggKGMpCi0gICAgICB7Ci0gICAgICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgICBtYW5nbGVkT3V0cHV0LmFwcGVuZCgiXFxuIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1xyJzoKLSAgICAgICAgICBtYW5nbGVkT3V0cHV0LmFwcGVuZCgiXFxyIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgY2FzZSAnXCInOgotICAgICAgICBjYXNlICdcJyc6Ci0gICAgICAgICAgbWFuZ2xlZE91dHB1dC5hcHBlbmQoJ1xcJyk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgbWFuZ2xlZE91dHB1dC5hcHBlbmQoYyk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBtYW5nbGVkT3V0cHV0LnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTEVTU19USEFOID0gIjwiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTEVTU19USEFOX0hUTUxfRU5USVRZID0gIiZsdDsiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JFQVRFUl9USEFOID0gIj4iOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JFQVRFUl9USEFOX0hUTUxfRU5USVRZID0gIiZndDsiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1BBQ0UgPSAiICI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTUEFDRV9IVE1MX0VOVElUWSA9ICImbmJzcDsiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQU1QRVJTQU5EID0gIiYiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQU1QRVJTQU5EX0hUTUxfRU5USVRZID0gIiZhbXA7IjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFFVT1RBVElPTiA9ICJcIiI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBRVU9UQVRJT05fSFRNTF9FTlRJVFkgPSAiJnF1b3Q7IjsKLQotICAvKioKLSAgKiBSZXBsYWNlIHNwZWNpYWwgY2hhcmFjdGVycyB3aXRoIEhUTUwgZW50aXRpZXMgcmVwcmVzZW50aW5nIHRoZXNlIGNoYXJhY3RlcnMuCi0gICogTm90ZSB0aGF0IHRoaXMgd2lsbCBhbHNvIGNvbnZlcnQgbm9ybWFsIHNwYWNlcyBpbnRvIG5vbi1icmVha2luZyBzcGFjZXMsIHdoaWNoIG1heSBiZSBnb29kIGZvcgotICAqIHByZXNlbnRhdGlvbiBidXQgbm90IGZvciBlZGl0aW5nLgotICAqIAotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBjb252ZXJ0ZWQgU3RyaW5nLiBOb3RlOiBPcmRlciBpcyBpbXBvcnRhbnQgc28gdGhhdCBjb3JyZWN0ZWQgZW50aXR5IHJlZmVyZW5jZXMgYXJlIG5vdCByZS1tYW5nbGVkLgotICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXMoU3RyaW5nIHMpIHsKLSAgICBzID0gc3RyaW5nUmVwbGFjZShzLCBBTVBFUlNBTkQsIEFNUEVSU0FORF9IVE1MX0VOVElUWSk7Ci0gICAgcyA9IHN0cmluZ1JlcGxhY2UocywgTEVTU19USEFOLCBMRVNTX1RIQU5fSFRNTF9FTlRJVFkpOwotICAgIHMgPSBzdHJpbmdSZXBsYWNlKHMsIEdSRUFURVJfVEhBTiwgR1JFQVRFUl9USEFOX0hUTUxfRU5USVRZKTsKLSAgICBzID0gc3RyaW5nUmVwbGFjZShzLCBTUEFDRSwgU1BBQ0VfSFRNTF9FTlRJVFkpOwotICAgIHMgPSBzdHJpbmdSZXBsYWNlKHMsIFFVT1RBVElPTiwgUVVPVEFUSU9OX0hUTUxfRU5USVRZKTsKLSAgICByZXR1cm4gczsKLSAgfQotCi0gIC8qKgotICAgKiBSZXBsYWNlIHNwZWNpYWwgY2hhcmFjdGVycyB3aXRoIEhUTUwgZW50aXRpZXMgcmVwcmVzZW50aW5nIHRoZXNlIGNoYXJhY3RlcnMKLSAgICogQHJldHVybiBTdHJpbmcgVGhlIGNvbnZlcnRlZCBTdHJpbmcuIE5vdGU6IE9yZGVyIGlzIGltcG9ydGFudCBzbyB0aGF0IGNvcnJlY3RlZCBlbnRpdHkgcmVmZXJlbmNlcyBhcmUgbm90IHJlLW1hbmdsZWQuCi0gICAqLwotICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzU3RyaWN0KFN0cmluZyBzKSB7Ci0gICAgIHMgPSBzdHJpbmdSZXBsYWNlKHMsIEFNUEVSU0FORCwgQU1QRVJTQU5EX0hUTUxfRU5USVRZKTsKLSAgICAgcyA9IHN0cmluZ1JlcGxhY2UocywgTEVTU19USEFOLCBMRVNTX1RIQU5fSFRNTF9FTlRJVFkpOwotICAgICBzID0gc3RyaW5nUmVwbGFjZShzLCBHUkVBVEVSX1RIQU4sIEdSRUFURVJfVEhBTl9IVE1MX0VOVElUWSk7Ci0gICAgIHMgPSBzdHJpbmdSZXBsYWNlKHMsIFFVT1RBVElPTiwgUVVPVEFUSU9OX0hUTUxfRU5USVRZKTsKLSAgICAgcmV0dXJuIHM7Ci0gICB9Ci0KLSAgLyoqCi0gICogUmVwbGFjZSBIVE1MIGNoYXJhY3RlciBlbnRpdGllcyB3aXRoIHRoZWlyIGFzc29jaWF0ZWQgY2hhcmFjdGVycy4KLSAgKiBAcmV0dXJuIFN0cmluZyBUaGUgY29udmVydGVkIFN0cmluZy4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaHRtbEVudGl0aWVzVG9DaGFyYWN0ZXJzKFN0cmluZyBzKSB7Ci0gICAgcyA9IHN0cmluZ1JlcGxhY2UocywgTEVTU19USEFOX0hUTUxfRU5USVRZLCBMRVNTX1RIQU4pOwotICAgIHMgPSBzdHJpbmdSZXBsYWNlKHMsIEdSRUFURVJfVEhBTl9IVE1MX0VOVElUWSwgR1JFQVRFUl9USEFOKTsKLSAgICBzID0gc3RyaW5nUmVwbGFjZShzLCBTUEFDRV9IVE1MX0VOVElUWSwgU1BBQ0UpOwotICAgIHMgPSBzdHJpbmdSZXBsYWNlKHMsIEFNUEVSU0FORF9IVE1MX0VOVElUWSwgQU1QRVJTQU5EKTsKLSAgICBzID0gc3RyaW5nUmVwbGFjZShzLCBRVU9UQVRJT05fSFRNTF9FTlRJVFksIFFVT1RBVElPTik7Ci0gICAgcmV0dXJuIHM7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgc3RyaW5nUmVwbGFjZShTdHJpbmcgcywgU3RyaW5nIG9sZFN0cmluZywgU3RyaW5nIG5ld1N0cmluZykgewotICAgIFN0cmluZyBzQ29weSA9IHM7Ci0gICAgaW50IGZyb21JbmRleCA9IDA7Ci0gICAgaW50IG9sZFN0cmluZ0luZGV4ID0gc0NvcHkuaW5kZXhPZihvbGRTdHJpbmcsIGZyb21JbmRleCk7Ci0gICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIHdoaWxlIChvbGRTdHJpbmdJbmRleCAhPSAtMSkgewotICAgICAgc2Iuc2V0TGVuZ3RoKDApOwotICAgICAgc2IuYXBwZW5kKHNDb3B5LnN1YnN0cmluZygwLCBvbGRTdHJpbmdJbmRleCkpOwotICAgICAgc2IuYXBwZW5kKG5ld1N0cmluZyk7Ci0gICAgICBzYi5hcHBlbmQoc0NvcHkuc3Vic3RyaW5nKG9sZFN0cmluZ0luZGV4ICsgb2xkU3RyaW5nLmxlbmd0aCgpLCBzQ29weS5sZW5ndGgoKSkpOwotICAgICAgc0NvcHkgPSBzYi50b1N0cmluZygpOwotICAgICAgZnJvbUluZGV4ID0gb2xkU3RyaW5nSW5kZXggKyBuZXdTdHJpbmcubGVuZ3RoKCk7Ci0gICAgICBvbGRTdHJpbmdJbmRleCA9IHNDb3B5LmluZGV4T2Yob2xkU3RyaW5nLCBmcm9tSW5kZXgpOwotICAgIH0KLSAgICByZXR1cm4gc0NvcHk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91dGlsL011bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YjU5NTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91dGlsL011bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbDsKLQotcHVibGljIGZpbmFsIGNsYXNzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIGV4dGVuZHMgVGhyb3dhYmxlCi17Ci0gIC8qKgotCSAqIENvbW1lbnQgZm9yIDxjb2RlPnNlcmlhbFZlcnNpb25VSUQ8L2NvZGU+Ci0JICovCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMzI1Nzg0NTQ3MjIyNzExMDk2MUw7Ci0KLXB1YmxpYyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkKLSAgewotICAgIHN1cGVyKG1lc3NhZ2UpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9NdWx0aXBhcnRGb3JtRGF0YVBhcnNlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDhlZGZmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9NdWx0aXBhcnRGb3JtRGF0YVBhcnNlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbDsKLQotaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotCi1wdWJsaWMgZmluYWwgY2xhc3MgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIKLXsKLSAgcHJpdmF0ZSBIYXNodGFibGUgcGFyYW1UYWJsZV87Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05URU5UX1RZUEUgICAgICAgID0gIkNvbnRlbnQtVHlwZSI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfTVVMVElQQVJUICAgICAgICAgICA9ICJtdWx0aXBhcnQiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0JPVU5EQVJZICAgICAgICAgICAgPSAiYm91bmRhcnk9IjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05URU5UX0RJU1BPU0lUSU9OID0gIkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YSI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfTkFNRSAgICAgICAgICAgICAgICA9ICJuYW1lPVwiIjsKLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFBBUlNFUl9TVEFURV9JTklUSUFMICAgICAgICAgPSAwOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFBBUlNFUl9TVEFURV9CT1VOREFSWSAgICAgICAgPSAxOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFBBUlNFUl9TVEFURV9QQVJBTUVURVIgICAgICAgPSAyOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFBBUlNFUl9TVEFURV9CTEFOSyAgICAgICAgICAgPSAzOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFBBUlNFUl9TVEFURV9EQVRBICAgICAgICAgICAgPSA0OwotCi0gIHByaXZhdGUgc3RhdGljIFN0cmluZyBwYXJzZXJTdGF0ZXNbXSA9IHsiaW5pdGlhbCIsImJvdW5kYXJ5IiwicGFyYW1ldGVyIG5hbWUiLCJibGFuayBsaW5lIiwiZGF0YSJ9OwotCi0gIHB1YmxpYyBNdWx0aXBhcnRGb3JtRGF0YVBhcnNlcigpCi0gIHsKLSAgfQotICAKLSAgcHVibGljIE11bHRpcGFydEZvcm1EYXRhUGFyc2VyKEhhc2h0YWJsZSBwYXJhbWV0ZXJzKQotICB7Ci0gICAgcGFyYW1UYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IHBhcmFtZXRlcnMua2V5U2V0KCkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBPYmplY3Qga2V5ID0gaXQubmV4dCgpOwotICAgICAgT2JqZWN0IHZhbHVlID0gcGFyYW1ldGVycy5nZXQoa2V5KTsKLSAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExpc3QpCi0gICAgICB7Ci0gICAgICAgIExpc3QgbGlzdCA9IChMaXN0KXZhbHVlOwotICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0MiA9IGxpc3QuaXRlcmF0b3IoKTsgaXQyLmhhc05leHQoKTspCi0gICAgICAgICAgc2F2ZURhdGEoa2V5LnRvU3RyaW5nKCksIGl0Mi5uZXh0KCkudG9TdHJpbmcoKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmICh2YWx1ZS5nZXRDbGFzcygpLmlzQXJyYXkoKSkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0W10gYXJyYXkgPSAoT2JqZWN0W10pdmFsdWU7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspCi0gICAgICAgICAgc2F2ZURhdGEoa2V5LnRvU3RyaW5nKCksIGFycmF5W2ldLnRvU3RyaW5nKCkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBzYXZlRGF0YShrZXkudG9TdHJpbmcoKSwgdmFsdWUudG9TdHJpbmcoKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIGEgbXVsdGlwYXJ0L2Zvcm0tZGF0YSBlbmNvZGVkIHBvc3QgcmVxdWVzdCB3aXRoIGEgZ2l2ZW4gZW5jb2RpbmcuCi0gICAqIElmIHRoZSBlbmNvZGluZyBpcyBudWxsLCB1c2UgdGhlIHN5c3RlbSBkZWZhdWx0IGVuY29kaW5nLiB1dGYtOCBpcyBub3QgYQotICAgKiBiYWQgY2hvaWNlIGZvciB0aGUgZW5jb2RpbmcuCi0gICAqLwotICBwdWJsaWMgZmluYWwgdm9pZCBwYXJzZVJlcXVlc3QoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QsU3RyaW5nIGVuY29kaW5nKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIC8vIENvbnRlbnQtVHlwZSBoZWFkZXIgc2hvdWxkIGhhdmUgdGhlIGZvcm06Ci0gICAgLy8gbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9Li4uCi0gICAgLy8KLSAgICAvLyBSRkMyMDQ2IDUuMS4xIHBhZ2UgMTksIHBhcmFncmFwaCAyOgotICAgIC8vIFRoZSBDb250ZW50LVR5cGUgZmllbGQgZm9yIG11bHRpcGFydCBlbnRpdGllcyByZXF1aXJlcyBvbmUgcGFyYW1ldGVyLCAiYm91bmRhcnkiIChubyBxdW90ZXMpCi0gICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gcmVxdWVzdC5nZXRIZWFkZXIoSEVBREVSX0NPTlRFTlRfVFlQRSk7Ci0gICAgaWYgKGNvbnRlbnRUeXBlID09IG51bGwgfHwgIWNvbnRlbnRUeXBlLnN0YXJ0c1dpdGgoSEVBREVSX01VTFRJUEFSVCkgfHwgY29udGVudFR5cGUuaW5kZXhPZihIRUFERVJfQk9VTkRBUlkpID09IC0xKQotICAgICAgdGhyb3cgbmV3IE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uKCJDb250ZW50LVR5cGUgaXMgbm90IG11bHRpcGFydC9mb3JtLWRhdGEiKTsKLQotICAgIC8vIFJGQzIwNDYgNS4xLjEgcGFnZSAxOSwgcGFyYWdyYXBoIDQ6Ci0gICAgLy8gVGhlIGJvdW5kYXJ5IHZhbHVlIG1heSBiZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzLiBTdHJpcCB0aGVzZSBpZiB0aGV5IGFyZSBwcmVzZW50LgotICAgIFN0cmluZyBib3VuZGFyeSA9IGNvbnRlbnRUeXBlLnN1YnN0cmluZyhjb250ZW50VHlwZS5pbmRleE9mKEhFQURFUl9CT1VOREFSWSkrSEVBREVSX0JPVU5EQVJZLmxlbmd0aCgpLGNvbnRlbnRUeXBlLmxlbmd0aCgpKTsKLSAgICBpZiAoYm91bmRhcnkuY2hhckF0KDApID09ICdcIicgJiYgYm91bmRhcnkuY2hhckF0KGJvdW5kYXJ5Lmxlbmd0aCgpLTEpID09ICdcIicpCi0gICAgICBib3VuZGFyeSA9IGJvdW5kYXJ5LnN1YnN0cmluZygxLGJvdW5kYXJ5Lmxlbmd0aCgpLTEpOwotCi0gICAgLy8gUkZDMjA0NiA1LjEuMSBwYWdlIDE5LCBwYXJhZ3JhcGggMjoKLSAgICAvLyBUaGUgYm91bmRhcnkgZGVsaW1pdGVyIGxpbmUgaXMgdGhlbiBkZWZpbmVkIGFzIGEgbGluZSBjb25zaXN0aW5nIGVudGlyZWx5Ci0gICAgLy8gb2YgdHdvIGh5cGhlbiBjaGFyYWN0ZXJzLgotICAgIFN0cmluZyBkZWxpbWl0ZXIgPSAiLS0iK2JvdW5kYXJ5OwotCi0gICAgaWYgKHBhcmFtVGFibGVfID09IG51bGwpCi0gICAgICBwYXJhbVRhYmxlXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBlbHNlCi0gICAgICBwYXJhbVRhYmxlXy5jbGVhcigpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKHJlcXVlc3QuZ2V0SW5wdXRTdHJlYW0oKSxlbmNvZGluZykpOwotICAgICAgU3RyaW5nIGxpbmUgPSBudWxsOwotICAgICAgU3RyaW5nIHBhcmFtZXRlck5hbWUgPSBudWxsOwotICAgICAgU3RyaW5nQnVmZmVyIHBhcmFtZXRlclZhbHVlID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgYnl0ZSBjdXJyZW50UGFyc2VyU3RhdGUgPSBQQVJTRVJfU1RBVEVfSU5JVElBTDsKLSAgICAgIHdoaWxlICgobGluZSA9IGJyLnJlYWRMaW5lKCkpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIExpbmVzIGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIHNlcXVlbmNlLgotICAgICAgICAvLyAxKSBib3VuZGFyeSBpbmRpY2F0aW5nIHRoZSBzdGFydCBvZiBhIG5ldyBwYXJhbWV0ZXIgYW5kIGVuZCBvZiBhIGRhdGEgc2VnbWVudC4KLSAgICAgICAgLy8gMikgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSIuLi4iIC0gdGhlIG5hbWUgb2YgYSBuZXcgcGFyYW1ldGVyLgotICAgICAgICAvLyAzKSBhIGJsYW5rIGxpbmUKLSAgICAgICAgLy8gNCkgZGF0YQotICAgICAgICAvLwotICAgICAgICAvLyBGb3IgZWFjaCBwYXJhbWV0ZXIsIHRoZSBzZXF1ZW5jZSBpcyByZXBlYXRlZC4KLSAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChkZWxpbWl0ZXIpKQotICAgICAgICB7Ci0gICAgICAgICAgYnl0ZVtdIGV4cGVjdGVkUGFyc2VyU3RhdGVzID0ge1BBUlNFUl9TVEFURV9JTklUSUFMLFBBUlNFUl9TVEFURV9EQVRBfTsKLSAgICAgICAgICBpZiAoaXNWYWxpZFBhcnNlclN0YXRlKGN1cnJlbnRQYXJzZXJTdGF0ZSxleHBlY3RlZFBhcnNlclN0YXRlcykpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gU2F2ZSBhbnkgY3VycmVudCBkYXRhIGFuZCBwcmVwYXJlIGZvciBhIG5ldyBwYXJhbWV0ZXIgbmFtZS4KLSAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJOYW1lICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHNhdmVEYXRhKHBhcmFtZXRlck5hbWUscGFyYW1ldGVyVmFsdWUudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICAgIHBhcmFtZXRlck5hbWUgPSBudWxsOwotICAgICAgICAgICAgICBwYXJhbWV0ZXJWYWx1ZS5zZXRMZW5ndGgoMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjdXJyZW50UGFyc2VyU3RhdGUgPSBQQVJTRVJfU1RBVEVfQk9VTkRBUlk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93IG5ldyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbihnZXRQYXJzZXJFeGNlcHRpb25NZXNzYWdlKGN1cnJlbnRQYXJzZXJTdGF0ZSxleHBlY3RlZFBhcnNlclN0YXRlcykpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aChIRUFERVJfQ09OVEVOVF9ESVNQT1NJVElPTikpCi0gICAgICAgIHsKLSAgICAgICAgICBieXRlW10gZXhwZWN0ZWRQYXJzZXJTdGF0ZXMgPSB7UEFSU0VSX1NUQVRFX0JPVU5EQVJZfTsKLSAgICAgICAgICBpZiAoaXNWYWxpZFBhcnNlclN0YXRlKGN1cnJlbnRQYXJzZXJTdGF0ZSxleHBlY3RlZFBhcnNlclN0YXRlcykpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gT2J0YWluIHRoZSBwYXJhbWV0ZXIgbmFtZSB3aXRob3V0IHRoZSBzdXJyb3VuZGluZyBkb3VibGUgcXVvdGVzLiBBY2NvdW50cyBmb3IgUkZDIDE4NjcgdG9vLgotICAgICAgICAgICAgaW50IHBhcmFtZXRlck5hbWVTdGFydGluZ1Bvc2l0aW9uID0gbGluZS5pbmRleE9mKEhFQURFUl9OQU1FKStIRUFERVJfTkFNRS5sZW5ndGgoKTsKLSAgICAgICAgICAgIHBhcmFtZXRlck5hbWUgPSBsaW5lLnN1YnN0cmluZyhwYXJhbWV0ZXJOYW1lU3RhcnRpbmdQb3NpdGlvbiwrcGFyYW1ldGVyTmFtZVN0YXJ0aW5nUG9zaXRpb24rbGluZS5zdWJzdHJpbmcocGFyYW1ldGVyTmFtZVN0YXJ0aW5nUG9zaXRpb24pLmluZGV4T2YoJ1wiJykpOwotICAgICAgICAgICAgY3VycmVudFBhcnNlclN0YXRlID0gUEFSU0VSX1NUQVRFX1BBUkFNRVRFUjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY3VycmVudFBhcnNlclN0YXRlID09IFBBUlNFUl9TVEFURV9QQVJBTUVURVIpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBBIGJsYW5rIGxpbmUgc2hvdWxkIGZvbGxvdyB0aGUgUEFSQU1FVEVSLiBEaXNjYXJkIHRoZSBsaW5lIGFuZCBtb3ZlIG9uLgotICAgICAgICAgIGN1cnJlbnRQYXJzZXJTdGF0ZSA9IFBBUlNFUl9TVEFURV9CTEFOSzsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBFeHBlY3QgdGhlIGxpbmUgdG8gY29udGFpbiBkYXRhLgotICAgICAgICAgIGlmIChwYXJhbWV0ZXJWYWx1ZS5sZW5ndGgoKSA+IDApCi0gICAgICAgICAgICBwYXJhbWV0ZXJWYWx1ZS5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgcGFyYW1ldGVyVmFsdWUuYXBwZW5kKGxpbmUpOwotICAgICAgICAgIGN1cnJlbnRQYXJzZXJTdGF0ZSA9IFBBUlNFUl9TVEFURV9EQVRBOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24odC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgICAvL2R1bXBQYXJhbVRhYmxlKCk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgYSByZXF1ZXN0IHBhcmFtZXRlciBhcyBhIFN0cmluZywgb3IgbnVsbCBpZiB0aGUgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0LgotICAgKiBJZiB0aGUgcGFyYW1ldGVyIGhhcyBtdWx0aXBsZSB2YWx1ZXMsIG9ubHkgdGhlIGZpcnN0IHZhbHVlIGlzIHJldHVybmVkLiBVc2UgZ2V0UGFyYW1ldGVyVmFsdWVzKCkKLSAgICogZm9yIHBhcmFtZXRlcnMgd2l0aCBtdWx0aXBsZSB2YWx1ZXMuCi0gICAqLwotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFBhcmFtZXRlcihTdHJpbmcgcGFyYW1ldGVyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIGlmIChwYXJhbVRhYmxlXyA9PSBudWxsKQotICAgICAgdGhyb3cgbmV3IE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uKCJQYXJzZXIgY29udGFpbnMgbm8gcGFyc2VkIGRhdGEiKTsKLSAgICBWZWN0b3IgdmFsdWVzID0gKFZlY3RvcilwYXJhbVRhYmxlXy5nZXQocGFyYW1ldGVyKTsKLSAgICByZXR1cm4gKCh2YWx1ZXMgIT0gbnVsbCk/KChTdHJpbmcpdmFsdWVzLmVsZW1lbnRBdCgwKSk6bnVsbCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nW10gZ2V0UGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbWV0ZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgaWYgKHBhcmFtVGFibGVfID09IG51bGwpCi0gICAgICB0aHJvdyBuZXcgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24oIlBhcnNlciBjb250YWlucyBubyBwYXJzZWQgZGF0YSIpOwotICAgIFZlY3RvciB2YWx1ZXNWZWN0b3IgPSAoVmVjdG9yKXBhcmFtVGFibGVfLmdldChwYXJhbWV0ZXIpOwotICAgIGlmICh2YWx1ZXNWZWN0b3IgPT0gbnVsbCkKLSAgICAgIHJldHVybiBudWxsOwotICAgIFN0cmluZ1tdIHZhbHVlc0FycmF5ID0gbmV3IFN0cmluZ1t2YWx1ZXNWZWN0b3Iuc2l6ZSgpXTsKLSAgICBmb3IgKGludCBpPTA7aTx2YWx1ZXNBcnJheS5sZW5ndGg7aSsrKQotICAgICAgdmFsdWVzQXJyYXlbaV0gPSAoU3RyaW5nKXZhbHVlc1ZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgcmV0dXJuIHZhbHVlc0FycmF5OwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZ1tdIGdldFBhcmFtZXRlck5hbWVzKCkgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBpZiAocGFyYW1UYWJsZV8gPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbigiUGFyc2VyIGNvbnRhaW5zIG5vIHBhcnNlZCBkYXRhIik7Ci0KLSAgICBpbnQgc2l6ZSA9IHBhcmFtVGFibGVfLnNpemUoKTsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgU3RyaW5nW10gbmFtZXMgPSBuZXcgU3RyaW5nW3NpemVdOwotICAgIEVudW1lcmF0aW9uIGtleXMgPSBwYXJhbVRhYmxlXy5rZXlzKCk7Ci0gICAgZm9yIChpbnQgaT0wO2k8c2l6ZTtpKyspCi0gICAgICBuYW1lc1tpXSA9IChTdHJpbmcpa2V5cy5uZXh0RWxlbWVudCgpOwotICAgIHJldHVybiBuYW1lczsKLSAgfQotCi0gIHByaXZhdGUgZmluYWwgdm9pZCBzYXZlRGF0YShTdHJpbmcgcGFyYW1ldGVyTmFtZSxTdHJpbmcgcGFyYW1ldGVyVmFsdWUpCi0gIHsKLSAgICBWZWN0b3IgdmFsdWVzID0gKFZlY3RvcilwYXJhbVRhYmxlXy5nZXQocGFyYW1ldGVyTmFtZSk7Ci0gICAgaWYgKHZhbHVlcyA9PSBudWxsKQotICAgICAgdmFsdWVzID0gbmV3IFZlY3RvcigpOwotICAgIHZhbHVlcy5hZGRFbGVtZW50KHBhcmFtZXRlclZhbHVlKTsKLSAgICBwYXJhbVRhYmxlXy5wdXQocGFyYW1ldGVyTmFtZSx2YWx1ZXMpOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGlzVmFsaWRQYXJzZXJTdGF0ZShieXRlIGN1cnJlbnRTdGF0ZSxieXRlW10gZXhwZWN0ZWRTdGF0ZXMpCi0gIHsKLSAgICBib29sZWFuIHZhbGlkaXR5ID0gZmFsc2U7Ci0gICAgZm9yIChpbnQgaT0wO2k8ZXhwZWN0ZWRTdGF0ZXMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAoY3VycmVudFN0YXRlID09IGV4cGVjdGVkU3RhdGVzW2ldKQotICAgICAgewotICAgICAgICB2YWxpZGl0eSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdmFsaWRpdHk7Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIFN0cmluZyBnZXRQYXJzZXJFeGNlcHRpb25NZXNzYWdlKGJ5dGUgY3VycmVudFN0YXRlLGJ5dGVbXSBleHBlY3RlZFN0YXRlcykKLSAgewotICAgIFN0cmluZ0J1ZmZlciBtc2cgPSBuZXcgU3RyaW5nQnVmZmVyKCJQYXJzZXIgc3RhdGUgaW5jb25zaXN0ZW5jeSEiKTsKLSAgICBtc2cuYXBwZW5kKCdcbicpOwotICAgIG1zZy5hcHBlbmQoIkN1cnJlbnQgc3RhdGUgICAgOiAiKS5hcHBlbmQocGFyc2VyU3RhdGVzW2N1cnJlbnRTdGF0ZV0pLmFwcGVuZCgnXG4nKTsKLSAgICBtc2cuYXBwZW5kKCJFeHBlY3RlZCBzdGF0ZShzKTogIik7Ci0gICAgZm9yIChpbnQgaT0wO2k8ZXhwZWN0ZWRTdGF0ZXMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBtc2cuYXBwZW5kKHBhcnNlclN0YXRlc1tleHBlY3RlZFN0YXRlc1tpXV0pOwotICAgICAgaWYgKGkgIT0gZXhwZWN0ZWRTdGF0ZXMubGVuZ3RoLTEpCi0gICAgICAgIG1zZy5hcHBlbmQoIiwgIik7Ci0gICAgfQotICAgIG1zZy5hcHBlbmQoJ1xuJyk7Ci0gICAgcmV0dXJuIG1zZy50b1N0cmluZygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvUXVpY2tTb3J0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvUXVpY2tTb3J0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMThlZTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91dGlsL1F1aWNrU29ydC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjE3ICAgMTI3MTM4IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBjb20uaWJtLmljdS50ZXh0LkNvbGxhdG9yOwotCi1wdWJsaWMgY2xhc3MgUXVpY2tTb3J0Ci17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgdm9pZCBzb3J0KE9iamVjdFtdIGEsaW50IGxvLGludCBoaSkKLSAgewotICAgIE9iamVjdCB0bXA7Ci0gICAgaW50IGkgPSBsbzsKLSAgICBpbnQgaiA9IGhpOwotICAgIE9iamVjdCB4ID0gYVsobG8raGkpLzJdOwotICAgIENvbGxhdG9yIGNvbGxhdG9yID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoKTsKLQotICAgIGRvCi0gICAgewotICAgICAgd2hpbGUgKGNvbGxhdG9yLmNvbXBhcmUoYVtpXS50b1N0cmluZygpLHgudG9TdHJpbmcoKSkgPCAwKSBpKys7Ci0gICAgICB3aGlsZSAoY29sbGF0b3IuY29tcGFyZShhW2pdLnRvU3RyaW5nKCkseC50b1N0cmluZygpKSA+IDApIGotLTsKLSAgICAgIGlmIChpIDw9IGopCi0gICAgICB7Ci0gICAgICAgIHRtcCA9IGFbaV07Ci0gICAgICAgIGFbaV0gPSBhW2pdOwotICAgICAgICBhW2pdID0gdG1wOwotICAgICAgICBpKys7Ci0gICAgICAgIGotLTsKLSAgICAgIH0KLSAgICB9IHdoaWxlIChpIDw9IGopOwotCi0gICAgaWYgKGxvIDwgaikKLSAgICAgIHNvcnQoYSxsbyxqKTsKLSAgICBpZiAoaSA8IGhpKQotICAgICAgc29ydChhLGksaGkpOwotICB9Ci0KLSAgLyoKLSAgKiBUaGlzIG1ldGhvZCB3aWxsIHVzZSB0aGUgc2FtZSBhbGdvcml0aG0gYXMgYWJvdmUKLSAgKiB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBhbnkgbnVsbHMgd2lsbCBiZSBhdHRhY2hlZAotICAqIGF0IHRoZSBlbmQKLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIHNvcnQoVmVjdG9yIHYpCi0gIHsKLSAgICAvLyBkbyBub3Qgc29ydCBpZiB2ZWN0b3IgY29udGFpbnMgbGVzcyB0aGFuIDIgZWxlbWVudHMKLSAgICBpZiAodi5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0gIAotICAgIC8vIHB1bGxzIG91dCB0aGUgbnVsbHMKLSAgICBWZWN0b3IgbnVsbHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2LnNpemUoKTsgaSsrKSB7Ci0gICAgICBPYmplY3Qgb2JqID0gdi5lbGVtZW50QXQoaSk7Ci0gICAgICBpZiAob2JqID09IG51bGwgfHwgb2JqLnRvU3RyaW5nKCkgPT0gbnVsbCkgewotICAgICAgICBudWxscy5hZGQob2JqKTsKLSAgICAgICAgdi5yZW1vdmUoaSk7Ci0gICAgICAgIGktLTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBzb3J0IHRoZSBub3QgbnVsbCBvYmplY3RzCi0gICAgT2JqZWN0W10gb2JqcyA9IHYudG9BcnJheSgpOwotICAgIC8vIGRvIG5vdCBzb3J0IGlmIGFycmF5IGNvbnRhaW5zIGxlc3MgdGhhbiAyIG9iamVjdHMKLSAgICBpZiAob2Jqcy5sZW5ndGggPj0gMikKLSAgICAgICAgc29ydChvYmpzLCAwLCBvYmpzLmxlbmd0aC0xKTsKLQotICAgIC8vIHJlLWNvbnN0cnVjdCB0aGUgdmVjdG9yIGZyb20gdGhlIHNvcnRlZCBvYmplY3RzLCB0aGVuIHRoZSBudWxscwotICAgIHYuY2xlYXIoKTsKLSAgICBmb3IgKGludCBqID0gMDsgaiA8IG9ianMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgdi5hZGQob2Jqc1tqXSk7Ci0gICAgfQotICAgIHYuYWRkQWxsKG51bGxzKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91dGlsL1RyaW1GaWx0ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9UcmltRmlsdGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiODRmOWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91dGlsL1RyaW1GaWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0LkZpbHRlcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0LkZpbHRlckNoYWluOwotaW1wb3J0IGphdmF4LnNlcnZsZXQuRmlsdGVyQ29uZmlnOwotaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldFJlc3BvbnNlOwotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlOwotCi1wdWJsaWMgY2xhc3MgVHJpbUZpbHRlciBpbXBsZW1lbnRzIEZpbHRlcgotewotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBqYXZheC5zZXJ2bGV0LkZpbHRlciNpbml0KGphdmF4LnNlcnZsZXQuRmlsdGVyQ29uZmlnKQotICAgKi8KLSAgcHVibGljIHZvaWQgaW5pdChGaWx0ZXJDb25maWcgYXJnMCkgdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24KLSAgewotICAgIC8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKLQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGphdmF4LnNlcnZsZXQuRmlsdGVyI2RvRmlsdGVyKGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuU2VydmxldFJlc3BvbnNlLCBqYXZheC5zZXJ2bGV0LkZpbHRlckNoYWluKQotICAgKi8KLSAgcHVibGljIHZvaWQgZG9GaWx0ZXIoU2VydmxldFJlcXVlc3QgcmVxLCBTZXJ2bGV0UmVzcG9uc2UgcmVzcCwgRmlsdGVyQ2hhaW4gZmMpIHRocm93cyBJT0V4Y2VwdGlvbiwgU2VydmxldEV4Y2VwdGlvbgotICB7Ci0gICAgLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotICAgIENoYXJBcnJheVdyYXBwZXIgcmVzcG9uc2VXcmFwcGVyID0gbmV3IENoYXJBcnJheVdyYXBwZXIoKEh0dHBTZXJ2bGV0UmVzcG9uc2UpcmVzcCk7Ci0gICAgLy8gSGFjayBmb3IgVG9tY2F0IHBlcmZvcm1hbmNlIHByb2JsZW0gd2l0aCBmaWx0ZXJzLgotICAgIE91dHB1dFN0cmVhbVdyaXRlciBvc3cgPSBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKHJlc3AuZ2V0T3V0cHV0U3RyZWFtKCksSFRNTFV0aWxzLlVURjhfRU5DT0RJTkcpOwotICAgIGZjLmRvRmlsdGVyKHJlcSxyZXNwb25zZVdyYXBwZXIpOwotICAgIFN0cmluZyByZXNwb25zZVN0cmluZyA9IHJlc3BvbnNlV3JhcHBlci50b1N0cmluZygpOwotICAgIG9zdy53cml0ZShyZXNwb25zZVN0cmluZy50cmltKCkpOwotICAgIG9zdy5jbG9zZSgpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGphdmF4LnNlcnZsZXQuRmlsdGVyI2Rlc3Ryb3koKQotICAgKi8KLSAgcHVibGljIHZvaWQgZGVzdHJveSgpCi0gIHsKLSAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvVVJMVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9VUkxVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzVjNjQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9VUkxVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MTExOSAgIDI1NTM3NCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbDsKLQotaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkk7Ci1pbXBvcnQgamF2YS5uZXQuVVJMRGVjb2RlcjsKLWltcG9ydCBqYXZhLm5ldC5VUkxFbmNvZGVyOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgY29udGFpbnMgdXRpbGl0eSBtZXRob2RzIGZvciBtYW5hZ2luZyBVUkxzCi0gKiBhcyB1c2VkIGJ5IHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgV2ViIGFwcGxpY2F0aW9uLgotICogQGF1dGhvciBjYnJlYWxleUBjYS5pYm0uY29tCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBVUkxVdGlscwotewotCS8qKgotCSAqIE9iamVjdHMgb2YgdGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIGNvbnN0cnVjdGVkLgotCSAqLwotCXByaXZhdGUgVVJMVXRpbHMgKCkKLQl7Ci0JfQotCi0JLyoqCi0JICogVVRGLTgKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVVEY4ID0gIlVURi04IjsKLQotCS8qKgotCSAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rICNlbmNvZGUoU3RyaW5nLFN0cmluZyl9Ci0JICogd2l0aCBzZWNvbmQgcGFyYW1ldGVyIHNldCB0byB0aGUgIlVURi04IiBlbmNvZGluZy4KLQkgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIGVuY29kZS4KLQkgKiBAcmV0dXJuIFRoZSBlbmNvZGVkIHN0cmluZy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBlbmNvZGUoU3RyaW5nIHMpCi0JewotCQlyZXR1cm4gZW5jb2RlKHMsVVRGOCk7Ci0JfQotCQotCS8qKgotCSAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rIFVSTEVuY29kZXIjZW5jb2RlKFN0cmluZyxTdHJpbmcpfSwKLQkgKiBvbmx5IHRocm93cyBhbiB1bmNoZWNrZWQge0BsaW5rIFJ1bnRpbWVFeGNlcHRpb259IHdyYXBwZWQKLQkgKiBhcm91bmQgYW4ge0BsaW5rIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb259IGluc3RlYWQgb2YKLQkgKiBhbiB7QGxpbmsgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbn0uCi0JICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byBlbmNvZGUuCi0JICogQHBhcmFtIGVuYyBUaGUgZW5jb2RpbmcgdG8gdXNlLgotCSAqIEByZXR1cm4gVGhlIGVuY29kZWQgc3RyaW5nLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGVuY29kZShTdHJpbmcgcywgU3RyaW5nIGVuYykKLQl7Ci0JCXRyeQotCQl7Ci0JCQlyZXR1cm4gVVJMRW5jb2Rlci5lbmNvZGUocyxlbmMpOwotCQl9Ci0JCWNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGUpCi0JCXsKLQkJCS8vIFRPRE86IE1TR19CUk9LRU5fVk1fRE9FU19OT1RfU1VQUE9SVF9VVEYtOAotCQkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIiVNU0dfQlJPS0VOX1ZNX0RPRVNfTk9UX1NVUFBPUlRfVVRGLTgiLGUpOwotCQl9Ci0JfQotCQotCS8qKgotCSAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rICNkZWNvZGUoU3RyaW5nLFN0cmluZyl9Ci0JICogd2l0aCBzZWNvbmQgcGFyYW1ldGVyIHNldCB0byB0aGUgIlVURi04IiBlbmNvZGluZy4KLQkgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIGRlY29kZS4KLQkgKiBAcmV0dXJuIFRoZSBkZWNvZGVkIHN0cmluZy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBkZWNvZGUoU3RyaW5nIHMpCi0JewotCQlyZXR1cm4gZGVjb2RlKHMsVVRGOCk7Ci0JfQotCQotCS8qKgotCSAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rIFVSTEVuY29kZXIjZGVjb2RlKFN0cmluZyxTdHJpbmcpfSwKLQkgKiBvbmx5IHRocm93cyBhbiB1bmNoZWNrZWQge0BsaW5rIFJ1bnRpbWVFeGNlcHRpb259IHdyYXBwZWQKLQkgKiBhcm91bmQgYW4ge0BsaW5rIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb259IGluc3RlYWQgb2YKLQkgKiBhbiB7QGxpbmsgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbn0uCi0JICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byBkZWNvZGUuCi0JICogQHBhcmFtIGVuYyBUaGUgZW5jb2RpbmcgdG8gdXNlLgotCSAqIEByZXR1cm4gVGhlIGRlY29kZWQgc3RyaW5nLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGRlY29kZShTdHJpbmcgcywgU3RyaW5nIGVuYykKLQl7Ci0JCXRyeQotCQl7Ci0JCQlyZXR1cm4gVVJMRGVjb2Rlci5kZWNvZGUocyxlbmMpOwotCQl9Ci0JCWNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGUpCi0JCXsKLQkJCS8vIFRPRE86IE1TR19CUk9LRU5fVk1fRE9FU19OT1RfU1VQUE9SVF9VVEYtOAotCQkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIiVNU0dfQlJPS0VOX1ZNX0RPRVNfTk9UX1NVUFBPUlRfVVRGLTgiLGUpOwotCQl9Ci0JfQotCQotCS8qKgotCSAqIEVuY29kZXMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gYSBVUkwgc3RyaW5nLgotCSAqIEBwYXJhbSB1cmxTdHJpbmcgVGhlIFVSTCBzdHJpbmcgdG8gZW5jb2RlIAotCSAqIEByZXR1cm4gVGhlIFVSTCBhcyBhbiBlbmNvZGVkIHN0cmluZwotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGVuY29kZVVSTFN0cmluZyhTdHJpbmcgdXJsU3RyaW5nKSB7Ci0JCXRyeSB7IAotCQkJVVJJIHVyaSA9IG5ldyBVUkkodXJsU3RyaW5nKTsKLQkJCXJldHVybiB1cmkudG9BU0NJSVN0cmluZygpOwotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJLy9kbyBub3RoaW5nLCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcKLQkJfQotCQlyZXR1cm4gdXJsU3RyaW5nOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9WYWxpZGF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vdXRpbC9WYWxpZGF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYzOGVhMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA2MTIgICAxNDIyOTAgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWw7Ci0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0b3IKLXsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIHZhbGlkYXRlU3RyaW5nKFN0cmluZyBpbnB1dCkKLSAgewotICAgIHJldHVybiAoKGlucHV0ICE9IG51bGwpICYmIChpbnB1dC50cmltKCkubGVuZ3RoKCkgPiAwKSk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gdmFsaWRhdGVVUkwoU3RyaW5nIGlucHV0KQotICB7Ci0JICByZXR1cm4gKGlucHV0ICE9IG51bGwgJiYgaW5wdXQubWF0Y2hlcygiW2EtekEtWlxcK1xcLVxcLl0rKzouKiIpKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIHZhbGlkYXRlSW50ZWdlcihTdHJpbmcgaW5wdXQpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KGlucHV0KTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS91dGlsL1hNTFV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvWE1MVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJkNTYzOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3V0aWwvWE1MVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWw7Ci0KLWltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5PdXRwdXRLZXlzOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXI7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKLQotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBYTUxVdGlscwotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVVEY4X0VOQ09ESU5HID0gIlVURi04IjsgCi0JCi0gIC8qKgotICAgKiBTZXJpYWxpemUgYW4gWE1MIEVsZW1lbnQgaW50byBhIFN0cmluZy4KLSAgICogQHBhcmFtIGUgRWxlbWVudCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBAcGFyYW0gb21pdFhNTERlY2xhcmF0aW9uIGJvb2xlYW4gcmVwcmVzZW50aW5nIHdoZXRoZXIgb3Igbm90IHRvIG9taXQgdGhlIFhNTCBkZWNsYXJhdGlvbi4KLSAgICogQHJldHVybiBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFhNTCBkb2N1bWVudCBmcmFnbWVudC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHNlcmlhbGl6ZShFbGVtZW50IGUsYm9vbGVhbiBvbWl0WE1MRGVjbGFyYXRpb24pCi0gIHsKLSAgICBpZiAoZSAhPSBudWxsKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotCQlET01Tb3VyY2UgZG9tU291cmNlID0gbmV3IERPTVNvdXJjZShlKTsKLQkJVHJhbnNmb3JtZXIgc2VyaWFsaXplciA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld1RyYW5zZm9ybWVyKCk7Ci0JCXNlcmlhbGl6ZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5PTUlUX1hNTF9ERUNMQVJBVElPTiwgKChvbWl0WE1MRGVjbGFyYXRpb24pID8gInllcyIgOiAibm8iKSk7Ci0JCXNlcmlhbGl6ZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5JTkRFTlQsICJ5ZXMiKTsKLQkJc2VyaWFsaXplci5zZXRPdXRwdXRQcm9wZXJ0eShPdXRwdXRLZXlzLkVOQ09ESU5HLCBVVEY4X0VOQ09ESU5HKTsKLQkJc2VyaWFsaXplci5zZXRPdXRwdXRQcm9wZXJ0eSgie2h0dHA6Ly94bWwuYXBhY2hlLm9yZy94c2x0fWluZGVudC1hbW91bnQiLCAiMiIpOwotCQlCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKLQkJc2VyaWFsaXplci50cmFuc2Zvcm0oZG9tU291cmNlLCBuZXcJU3RyZWFtUmVzdWx0KGJhb3MpKTsKLQkJYmFvcy5jbG9zZSgpOwotCQlyZXR1cm4gbmV3IFN0cmluZyhiYW9zLnRvQnl0ZUFycmF5KCksIFVURjhfRU5DT0RJTkcpOwotICAgICAgfQotICAgICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgICAgewotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAgIAotICAvKioKLSAgICogU2VyaWFsaXplIGFuIFhNTCBFbGVtZW50IGludG8gYSBTdHJpbmcuCi0gICAqIEBwYXJhbSBkZiBEb2N1bWVudEZyYWdtZW50IHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIEBwYXJhbSBvbWl0WE1MRGVjbGFyYXRpb24gYm9vbGVhbiByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QgdG8gb21pdCB0aGUgWE1MIGRlY2xhcmF0aW9uLgotICAgKiBAcmV0dXJuIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIGRvY3VtZW50IGZyYWdtZW50LgotICAgKi8gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzZXJpYWxpemUoRG9jdW1lbnRGcmFnbWVudCBkZixib29sZWFuIG9taXRYTUxEZWNsYXJhdGlvbikKLSAgewotICAgIGlmIChkZiAhPSBudWxsKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotCQlET01Tb3VyY2UgZG9tU291cmNlID0gbmV3IERPTVNvdXJjZShkZik7Ci0JCVRyYW5zZm9ybWVyIHNlcmlhbGl6ZXIgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdUcmFuc2Zvcm1lcigpOwotCQlzZXJpYWxpemVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuT01JVF9YTUxfREVDTEFSQVRJT04sICgob21pdFhNTERlY2xhcmF0aW9uKSA/ICJ5ZXMiIDogIm5vIikpOwotCQlzZXJpYWxpemVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuSU5ERU5ULCAieWVzIik7Ci0JCXNlcmlhbGl6ZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5FTkNPRElORywgVVRGOF9FTkNPRElORyk7Ci0JCXNlcmlhbGl6ZXIuc2V0T3V0cHV0UHJvcGVydHkoIntodHRwOi8veG1sLmFwYWNoZS5vcmcveHNsdH1pbmRlbnQtYW1vdW50IiwgIjIiKTsKLQkJQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7Ci0JCXNlcmlhbGl6ZXIudHJhbnNmb3JtKGRvbVNvdXJjZSwgbmV3CVN0cmVhbVJlc3VsdChiYW9zKSk7Ci0JCWJhb3MuY2xvc2UoKTsKLQkJcmV0dXJuIG5ldyBTdHJpbmcoYmFvcy50b0J5dGVBcnJheSgpLCBVVEY4X0VOQ09ESU5HKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICAgIHsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgWE1MIERvY3VtZW50LgotICAgKiBAcGFyYW0gZG9jQnVpbGRlciBEb2N1bWVudEJ1aWxkZXIuIFNldHRpbmcgdGhpcyB0byBudWxsIHdpbGwgY3JlYXRlIGEgbmV3IERvY3VtZW50QnVpbGRlci4KLSAgICogQHJldHVybiBEb2N1bWVudAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBEb2N1bWVudCBjcmVhdGVOZXdEb2N1bWVudChEb2N1bWVudEJ1aWxkZXIgZG9jQnVpbGRlcikgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KLSAgewotICAgIGlmIChkb2NCdWlsZGVyID09IG51bGwpCi0gICAgewotICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotICAgICAgZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZShmYWxzZSk7Ci0gICAgICBmYWN0b3J5LnNldFZhbGlkYXRpbmcoZmFsc2UpOwotICAgICAgZG9jQnVpbGRlciA9IGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7Ci0gICAgfQotICAgIERvY3VtZW50IGRvYyA9IGRvY0J1aWxkZXIubmV3RG9jdW1lbnQoKTsKLSAgICByZXR1cm4gZG9jOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnZlcnQgdGhlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBFbGVtZW50IGludG8gYW4gRWxlbWVudAotICAgKiBAcGFyYW0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIEVsZW1lbnQuCi0gICAqIEByZXR1cm4gRWxlbWVudAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBFbGVtZW50IHN0cmluZ1RvRWxlbWVudChTdHJpbmcgcykgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiwgSU9FeGNlcHRpb24gewotICAgIHJldHVybiBzdHJpbmdUb0VsZW1lbnQocywgZmFsc2UpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnZlcnQgdGhlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBFbGVtZW50IGludG8gYW4gRWxlbWVudAotICAgKiBAcGFyYW0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIEVsZW1lbnQuCi0gICAqIEBwYXJhbSBib29sZWFuIHNldCB3aGV0aGVyIHRoZSByZXR1cm4gRWxlbWVudCBzaG91bGQgYmUgbmFtZXNwYWNlIGF3YXJlLgotICAgKiBAcmV0dXJuIEVsZW1lbnQKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgRWxlbWVudCBzdHJpbmdUb0VsZW1lbnQoU3RyaW5nIHMsIGJvb2xlYW4gbmFtZXNwYWNlQXdhcmUpIHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gYnl0ZUFycmF5VG9FbGVtZW50KHMuZ2V0Qnl0ZXMoVVRGOF9FTkNPRElORyksIG5hbWVzcGFjZUF3YXJlKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb252ZXJ0IHRoZSBieXRlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIGFuIEVsZW1lbnQgaW50byBhbiBFbGVtZW50Ci0gICAqIEBwYXJhbSBieXRlW10gcmVwcmVzZW50YXRpb24gb2YgYW4gRWxlbWVudC4KLSAgICogQHBhcmFtIGJvb2xlYW4gc2V0IHdoZXRoZXIgdGhlIHJldHVybiBFbGVtZW50IHNob3VsZCBiZSBuYW1lc3BhY2UgYXdhcmUuCi0gICAqIEByZXR1cm4gRWxlbWVudAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBFbGVtZW50IGJ5dGVBcnJheVRvRWxlbWVudChieXRlW10gYiwgYm9vbGVhbiBuYW1lc3BhY2VBd2FyZSkgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiwgSU9FeGNlcHRpb24KLSAgewotICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZG9jQnVpbGRlckZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7Ci0gICAgZG9jQnVpbGRlckZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUobmFtZXNwYWNlQXdhcmUpOwotICAgIGRvY0J1aWxkZXJGYWN0b3J5LnNldFZhbGlkYXRpbmcoZmFsc2UpOwotICAgIERvY3VtZW50QnVpbGRlciBkb2NCdWlsZGVyID0gZG9jQnVpbGRlckZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7Ci0gICAgRG9jdW1lbnQgZG9jID0gZG9jQnVpbGRlci5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYikpOwotICAgIHJldHVybiBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0NsZWFyV1NETEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvQ2xlYXJXU0RMQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ODE0YjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvQ2xlYXJXU0RMQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9uczsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuQ2xlYXJOb2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExNYWluTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5XU0RMTm9kZTsKLQotcHVibGljIGNsYXNzIENsZWFyV1NETEFjdGlvbiBleHRlbmRzIENsZWFyTm9kZUFjdGlvbiB7Ci0KLSAgcHVibGljIENsZWFyV1NETEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKLSAgICBzdXBlcihjb250cm9sbGVyLCBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCkpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlEKSB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ3c2RsL2FjdGlvbnMvQ2xlYXJXU0RMQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKG5vZGVJRCk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NMaW5rUGFyYW1ldGVycyhIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkgewotICAgIFN0cmluZyBub2RlSURTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICBpbnQgbm9kZUlEOwotICAgIHRyeSB7Ci0gICAgICBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRFN0cmluZyk7Ci0gICAgfQotICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmZlKSB7Ci0gICAgICBub2RlSUQgPSBub2RlTWFuYWdlcl8uZ2V0U2VsZWN0ZWROb2RlSWQoKTsKLSAgICB9Ci0gICAgYm9vbGVhbiBwYXJhbVZhbGlkID0gZmFsc2U7Ci0gICAgTm9kZSBub2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlEKTsKLSAgICBpZiAobm9kZSBpbnN0YW5jZW9mIFdTRExNYWluTm9kZSkKLSAgICAgIHBhcmFtVmFsaWQgPSB0cnVlOwotICAgIGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBXU0RMTm9kZSkKLSAgICAgIHBhcmFtVmFsaWQgPSB0cnVlOwotICAgIGVsc2UgewotICAgICAgd2hpbGUgKG5vZGUgIT0gbnVsbCAmJiAhKG5vZGUgaW5zdGFuY2VvZiBXU0RMTWFpbk5vZGUpKSB7Ci0gICAgICAgIG5vZGUgPSBub2RlLmdldFBhcmVudCgpOwotICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIFdTRExOb2RlKSB7Ci0gICAgICAgICAgbm9kZUlEID0gbm9kZS5nZXROb2RlSWQoKTsKLSAgICAgICAgICBwYXJhbVZhbGlkID0gdHJ1ZTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgU3RyaW5nLnZhbHVlT2Yobm9kZUlEKSk7Ci0gICAgcmV0dXJuIHBhcmFtVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKSB7Ci0gICAgaWYgKHN1cGVyLnJ1bigpKSB7Ci0gICAgICBub2RlTWFuYWdlcl8uc2V0U2VsZWN0ZWROb2RlSWQobm9kZU1hbmFnZXJfLmdldFJvb3ROb2RlKCkuZ2V0Tm9kZUlkKCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKSB7Ci0gICAgcmV0dXJuICJ3c2RsTmF2aWdhdG9yQ29udGVudCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFRyZWVDb250ZW50UGFnZSgpIHsKLSAgICByZXR1cm4gIndzZGwvd3NkbF9uYXZpZ2F0b3JfY29udGVudC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkgewotICAgIHJldHVybiAid3NkbFByb3BlcnRpZXNDb250YWluZXIiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpIHsKLSAgICByZXR1cm4gIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTdGF0dXNDb250ZW50VmFyKCkgewotICAgIHJldHVybiAid3NkbFN0YXR1c0NvbnRlbnQiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTdGF0dXNDb250ZW50UGFnZSgpIHsKLSAgICByZXR1cm4gIndzZGwvd3NkbF9zdGF0dXNfY29udGVudC5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9DcmVhdGVJbnN0YW5jZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvQ3JlYXRlSW5zdGFuY2VBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVhMDc3MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9DcmVhdGVJbnN0YW5jZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC5XU0RMT3BlcmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTRE1hcEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLkludm9rZVdTRExPcGVyYXRpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIENyZWF0ZUluc3RhbmNlQWN0aW9uIGV4dGVuZHMgV1NETFByb3BlcnRpZXNGb3JtQWN0aW9uCi17Ci0gIHB1YmxpYyBDcmVhdGVJbnN0YW5jZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBzdXBlci5wcm9jZXNzUGFyc2VkUmVzdWx0cyhwYXJzZXIpOwotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgSW52b2tlV1NETE9wZXJhdGlvblRvb2wgaW52b2tlV1NETE9wZXJhdGlvblRvb2wgPSAoSW52b2tlV1NETE9wZXJhdGlvblRvb2wpKHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0gICAgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgSXRlcmF0b3IgaXQgPSBvcGVyRWxlbWVudC5nZXRPcmRlcmVkQm9keVBhcnRzKCkuaXRlcmF0b3IoKTsKLSAgICBib29sZWFuIHJlc3VsdHNWYWxpZCA9IHRydWU7Ci0gICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBQYXJ0IHBhcnQgPSAoUGFydClpdC5uZXh0KCk7Ci0gICAgICBJWFNERnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50KHBhcnQpOwotICAgICAgaWYgKCFmcmFnLnByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMocGFyc2VyKSkKLSAgICAgICAgcmVzdWx0c1ZhbGlkID0gZmFsc2U7Ci0gICAgfQotICAgIFN0cmluZyBmcmFnbWVudElEID0gcGFyc2VyLmdldFBhcmFtZXRlcihGcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9JRCk7Ci0gICAgaWYgKGZyYWdtZW50SUQgIT0gbnVsbCAmJiBmcmFnbWVudElELmxlbmd0aCgpID4gMCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChGcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9JRCwgZnJhZ21lbnRJRCk7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnJlbW92ZShGcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9JRCk7Ci0gICAgICByZXN1bHRzVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgU3RyaW5nIG5hbWVBbmNob3JJRCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoRnJhZ21lbnRDb25zdGFudHMuTkFNRV9BTkNIT1JfSUQpOwotICAgIGludm9rZVdTRExPcGVyYXRpb25Ub29sLnNldEZyYWdtZW50TmFtZUFuY2hvcklEKG5hbWVBbmNob3JJRCk7Ci0gICAgcmV0dXJuIHJlc3VsdHNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBGb3JtVG9vbCBnZXRTZWxlY3RlZEZvcm1Ub29sKCkKLSAgewotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICByZXR1cm4gKEZvcm1Ub29sKXdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgU3RyaW5nIGZyYWdtZW50SUQgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChGcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9JRCk7Ci0gICAgaWYgKGZyYWdtZW50SUQgIT0gbnVsbCAmJiBmcmFnbWVudElELmxlbmd0aCgpID4gMCkKLSAgICB7Ci0gICAgICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgSVhTREZyYWdtZW50IGZyYWcgPSBvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ21lbnRJRCk7Ci0gICAgICBpZiAoKGZyYWcgaW5zdGFuY2VvZiBJWFNETWFwRnJhZ21lbnQpICYmICgoSVhTRE1hcEZyYWdtZW50KWZyYWcpLmNyZWF0ZUluc3RhbmNlKCkgIT0gbnVsbCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9JbnZva2VXU0RMSHR0cEdldE9wZXJhdGlvbkZvcm1BY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0ludm9rZVdTRExIdHRwR2V0T3BlcmF0aW9uRm9ybUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTc5ZjI4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0ludm9rZVdTRExIdHRwR2V0T3BlcmF0aW9uRm9ybUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMQ29ubmVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5OZXRVdGlsczsKLQotcHVibGljIGNsYXNzIEludm9rZVdTRExIdHRwR2V0T3BlcmF0aW9uRm9ybUFjdGlvbiBleHRlbmRzIEludm9rZVdTRExIdHRwT3BlcmF0aW9uRm9ybUFjdGlvbgotewotICBwdWJsaWMgSW52b2tlV1NETEh0dHBHZXRPcGVyYXRpb25Gb3JtQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0gICAgCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBTdHJpbmdCdWZmZXIgZW5kUG9pbnQgPSBuZXcgU3RyaW5nQnVmZmVyKGdldEVuZFBvaW50KCkpOwotICAgIGVuZFBvaW50LmFwcGVuZCgnPycpOwotICAgIGFkZFBhcmFtZXRlcnMoZW5kUG9pbnQpOwotICAgIFN0cmluZyBlbmRQb2ludFN0cmluZyA9IGVuZFBvaW50LnRvU3RyaW5nKCk7Ci0gICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBVUkxDb25uZWN0aW9uIGNvbm4gPSBOZXRVdGlscy5nZXRVUkxDb25uZWN0aW9uKGVuZFBvaW50U3RyaW5nKTsKLSAgICAgIGlmIChjb25uICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJlY29yZEh0dHBSZXNwb25zZShjb25uLG1lc3NhZ2VRdWV1ZSk7Ci0gICAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRPcGVyYXRpb25Ob2RlKGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpKTsKLSAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5BQkxFX1RPX0NPTk5FQ1QiLGVuZFBvaW50U3RyaW5nKSk7Ci0gICAgfQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24od3NkbFBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiSU9FeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9JbnZva2VXU0RMSHR0cE9wZXJhdGlvbkZvcm1BY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0ludm9rZVdTRExIdHRwT3BlcmF0aW9uRm9ybUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjQxODU0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0ludm9rZVdTRExIdHRwT3BlcmF0aW9uRm9ybUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7Ci1pbXBvcnQgamF2YS5uZXQuVVJMQ29ubmVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLldTRExBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExPcGVyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQudXRpbC5IVFRQVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5JbnZva2VXU0RMT3BlcmF0aW9uVG9vbDsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEludm9rZVdTRExIdHRwT3BlcmF0aW9uRm9ybUFjdGlvbiBleHRlbmRzIFdTRExQcm9wZXJ0aWVzRm9ybUFjdGlvbgotewotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09OVEVOVF9UWVBFX0NIQVJTRVRFUSA9ICJjaGFyc2V0PSI7Ci0gIAotICBwdWJsaWMgSW52b2tlV1NETEh0dHBPcGVyYXRpb25Gb3JtQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgc3VwZXIucHJvY2Vzc1BhcnNlZFJlc3VsdHMocGFyc2VyKTsKLSAgICBTdHJpbmcgZW5kUG9pbnQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFdTRExBY3Rpb25JbnB1dHMuRU5EX1BPSU5UKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpOwotICAgIEludm9rZVdTRExPcGVyYXRpb25Ub29sIGludm9rZVdTRExPcGVyYXRpb25Ub29sID0gKEludm9rZVdTRExPcGVyYXRpb25Ub29sKShzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCkpOwotICAgIGludm9rZVdTRExPcGVyYXRpb25Ub29sLnNldEVuZFBvaW50KGVuZFBvaW50KTsKLSAgICBXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudCkoc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCkpOwotICAgIHByb3BlcnR5VGFibGVfLnB1dChXU0RMQWN0aW9uSW5wdXRzLk9QRVJBVElPTl9FTEVNRU5ULG9wZXJFbGVtZW50KTsKLSAgICBJdGVyYXRvciBpdCA9IG9wZXJFbGVtZW50LmdldE9yZGVyZWRCb2R5UGFydHMoKS5pdGVyYXRvcigpOwotICAgIGJvb2xlYW4gcmVzdWx0c1ZhbGlkID0gdHJ1ZTsKLSAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICBQYXJ0IHBhcnQgPSAoUGFydClpdC5uZXh0KCk7Ci0gICAgICBJRnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50KHBhcnQpOwotICAgICAgaWYgKCFmcmFnLnByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMocGFyc2VyKSkKLSAgICAgICAgcmVzdWx0c1ZhbGlkID0gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHRzVmFsaWQ7Ci0gIH0gIAotICAKLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRFbmRQb2ludCgpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgZW5kUG9pbnQgPSBuZXcgU3RyaW5nQnVmZmVyKChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFdTRExBY3Rpb25JbnB1dHMuRU5EX1BPSU5UKSk7Ci0gICAgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpcHJvcGVydHlUYWJsZV8uZ2V0KFdTRExBY3Rpb25JbnB1dHMuT1BFUkFUSU9OX0VMRU1FTlQpOwotICAgIGlmIChlbmRQb2ludC5jaGFyQXQoZW5kUG9pbnQubGVuZ3RoKCktMSkgIT0gJy8nKQotICAgICAgZW5kUG9pbnQuYXBwZW5kKCcvJyk7Ci0gICAgZW5kUG9pbnQuYXBwZW5kKG9wZXJFbGVtZW50LmdldE5hbWUoKSk7Ci0gICAgcmV0dXJuIGVuZFBvaW50LnRvU3RyaW5nKCk7ICAgIAotICB9Ci0gIAotICBwcm90ZWN0ZWQgdm9pZCBhZGRQYXJhbWV0ZXJzKFN0cmluZ0J1ZmZlciBidWZmZXIpCi0gIHsKLSAgICBXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClwcm9wZXJ0eVRhYmxlXy5nZXQoV1NETEFjdGlvbklucHV0cy5PUEVSQVRJT05fRUxFTUVOVCk7Ci0gICAgSXRlcmF0b3IgaXQgPSBvcGVyRWxlbWVudC5nZXRPcmRlcmVkQm9keVBhcnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIFBhcnQgcGFydCA9IChQYXJ0KWl0Lm5leHQoKTsKLSAgICAgIElYU0RGcmFnbWVudCBmcmFnID0gb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnQocGFydCk7Ci0gICAgICBidWZmZXIuYXBwZW5kKEhUVFBVdGlsLmdlblVSTEVuY29kZWRQYXJhbWV0ZXJzKGZyYWcpKTsKLSAgICAgIGlmIChpdC5oYXNOZXh0KCkpCi0gICAgICAgIGJ1ZmZlci5hcHBlbmQoJyYnKTsKLSAgICB9Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCB2b2lkIHJlY29yZEh0dHBSZXNwb25zZShVUkxDb25uZWN0aW9uIGNvbm4sTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBCdWZmZXJlZFJlYWRlciBiciA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgSW5wdXRTdHJlYW1SZWFkZXIgaW4gPSBudWxsOwotICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gY29ubi5nZXRDb250ZW50VHlwZSgpOwotICAgICAgaWYgKGNvbnRlbnRUeXBlICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGludCBjaGFyc2V0RXFQb3MgPSBjb250ZW50VHlwZS5pbmRleE9mKENPTlRFTlRfVFlQRV9DSEFSU0VURVEpOwotICAgICAgICBpZiAoY2hhcnNldEVxUG9zICE9IC0xKQotICAgICAgICAgIGluID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKGNvbm4uZ2V0SW5wdXRTdHJlYW0oKSxjb250ZW50VHlwZS5zdWJzdHJpbmcoY2hhcnNldEVxUG9zK0NPTlRFTlRfVFlQRV9DSEFSU0VURVEubGVuZ3RoKCkpKTsKLSAgICAgIH0KLSAgICAgIGlmIChpbiA9PSBudWxsKQotICAgICAgICBpbiA9IG5ldyBJbnB1dFN0cmVhbVJlYWRlcihjb25uLmdldElucHV0U3RyZWFtKCkpOwotICAgICAgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIoaW4pOwotICAgICAgU3RyaW5nIHM7Ci0gICAgICB3aGlsZSAoKHMgPSBici5yZWFkTGluZSgpKSAhPSBudWxsKQotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShzKTsKLSAgICAgIGJyLmNsb3NlKCk7Ci0gICAgICBiciA9IG51bGw7Ci0gICAgfQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGlmIChiciAhPSBudWxsKQotICAgICAgICBici5jbG9zZSgpOwotICAgICAgdGhyb3cgZTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0ludm9rZVdTRExIdHRwUG9zdE9wZXJhdGlvbkZvcm1BY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0ludm9rZVdTRExIdHRwUG9zdE9wZXJhdGlvbkZvcm1BY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMTNmNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9JbnZva2VXU0RMSHR0cFBvc3RPcGVyYXRpb25Gb3JtQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEubmV0LlVSTENvbm5lY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5XU0RMUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuTmV0VXRpbHM7Ci0KLXB1YmxpYyBjbGFzcyBJbnZva2VXU0RMSHR0cFBvc3RPcGVyYXRpb25Gb3JtQWN0aW9uIGV4dGVuZHMgSW52b2tlV1NETEh0dHBPcGVyYXRpb25Gb3JtQWN0aW9uCi17Ci0KLSAgcHVibGljIEludm9rZVdTRExIdHRwUG9zdE9wZXJhdGlvbkZvcm1BY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKLSAgICBTdHJpbmcgZW5kUG9pbnRTdHJpbmcgPSBnZXRFbmRQb2ludCgpOwotICAgIFVSTENvbm5lY3Rpb24gY29ubiA9IE5ldFV0aWxzLmdldFVSTENvbm5lY3Rpb24oZW5kUG9pbnRTdHJpbmcpOwotICAgIGlmIChjb25uICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nQnVmZmVyIHBhcmFtZXRlcnMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICBhZGRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICAgICAgY29ubi5zZXREb091dHB1dCh0cnVlKTsKLSAgICAgIFByaW50V3JpdGVyIG91dCA9IG51bGw7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgb3V0ID0gbmV3IFByaW50V3JpdGVyKGNvbm4uZ2V0T3V0cHV0U3RyZWFtKCkpOwotICAgICAgICBvdXQucHJpbnQocGFyYW1ldGVycyk7Ci0gICAgICAgIG91dC5jbG9zZSgpOwotICAgICAgICBvdXQgPSBudWxsOwotICAgICAgICByZWNvcmRIdHRwUmVzcG9uc2UoY29ubixtZXNzYWdlUXVldWUpOwotICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0T3BlcmF0aW9uTm9kZShnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKSk7Ci0gICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih3c2RsUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJJT0V4Y2VwdGlvbiIsZSk7Ci0gICAgICB9Ci0gICAgICBmaW5hbGx5Ci0gICAgICB7Ci0gICAgICAgIGlmIChvdXQgIT0gbnVsbCkKLSAgICAgICAgICBvdXQuY2xvc2UoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih3c2RsUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJFeGNlcHRpb24iLG5ldyBJT0V4Y2VwdGlvbih3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1VOQUJMRV9UT19DT05ORUNUIixlbmRQb2ludFN0cmluZykpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9JbnZva2VXU0RMU09BUE9wZXJhdGlvbkFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvSW52b2tlV1NETFNPQVBPcGVyYXRpb25BY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRhZDNiOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9JbnZva2VXU0RMU09BUE9wZXJhdGlvbkFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMDUgICAxMTcwMzQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBzaG91bGQgc3VwcG9ydCBTT0FQIEhlYWRlcnMKLSAqIDIwMDcwNDEzICAgMTc2NDkzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0U6IE1ha2UgbWVzc2FnZS90cmFuc3BvcnQgc3RhY2sgcGx1Z2dhYmxlCi0gKiAyMDA3MDUxMCAgIDE4NjM3NSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQ29tcGlsZSBlcnJvcnMgaW4gd3N0LndzLmV4cGxvcmVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLkVuZHBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC5XU0RMQmluZGluZ0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExPcGVyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLkludm9rZVdTRExPcGVyYXRpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC51dGlsLlNPQVBNZXNzYWdlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5IVFRQVHJhbnNwb3J0RXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBNZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBUcmFuc3BvcnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LlRyYW5zcG9ydEV4Y2VwdGlvbjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEludm9rZVdTRExTT0FQT3BlcmF0aW9uQWN0aW9uIGV4dGVuZHMgV1NETFByb3BlcnRpZXNGb3JtQWN0aW9uCi17Ci0gIHB1YmxpYyBJbnZva2VXU0RMU09BUE9wZXJhdGlvbkFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBzdXBlci5wcm9jZXNzUGFyc2VkUmVzdWx0cyhwYXJzZXIpOwotICAgIFN0cmluZyBlbmRQb2ludCA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoV1NETEFjdGlvbklucHV0cy5FTkRfUE9JTlQpOwotICAgIEludm9rZVdTRExPcGVyYXRpb25Ub29sIGludm9rZVdTRExPcGVyYXRpb25Ub29sID0gKEludm9rZVdTRExPcGVyYXRpb25Ub29sKShnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0gICAgaW52b2tlV1NETE9wZXJhdGlvblRvb2wuc2V0RW5kUG9pbnQoZW5kUG9pbnQpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYW4gSVNPQVBNZXNzYWdlIHRvIHVzZSBmb3IgdGhlIGN1cnJlbnQgU09BUCBvcGVyYXRpb24gaW52b2NhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBvcGVyRWxlbWVudCBUaGUgb3BlcmF0aW9uIGVsZW1lbnQgZnJvbSB0aGUgV1NETCBtb2RlbC4KLSAgICogCi0gICAqIEByZXR1cm4gQW4gSVNPQVBNZXNzYWdlLCBvciBudWxsIGlmIGEgbWVzc2FnZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuCi0gICAqLwotICBwcm90ZWN0ZWQgSVNPQVBNZXNzYWdlIGdldFNPQVBSZXF1ZXN0TWVzc2FnZShXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCkgewotCSAgSVNPQVBUcmFuc3BvcnRQcm92aWRlciBwcm92aWRlciA9IG9wZXJFbGVtZW50LmdldFNPQVBUcmFuc3BvcnRQcm92aWRlcigpOwotCSAgaWYgKHByb3ZpZGVyID09IG51bGwpCi0JCSAgcmV0dXJuIG51bGw7CSAgCi0JICByZXR1cm4gcHJvdmlkZXIubmV3VHJhbnNwb3J0KCkubmV3TWVzc2FnZShvcGVyRWxlbWVudC5nZXRNZXNzYWdlQ29udGV4dCgpKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFBvcHVsYXRlIHRoZSBnaXZlbiBJU09BUE1lc3NhZ2UncyBoZWFkZXIgdXNpbmcgdGhlIGlucHV0cyBmcm9tIFdTRQotICAgKiAKLSAgICogQHBhcmFtIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlIEhhc2h0YWJsZSBjb250YWluaW5nIGEgbWFwIG9mIHRoZSBuYW1lc3BhY2UgVVJJcyB0byBwcmVmaXhlcy4KLSAgICogQHBhcmFtIG9wZXJFbGVtZW50IFdTRExPcGVyYXRpb25FbGVtZW50IGVuY2Fwc3VsYXRpbmcgdGhlIFdTREwgb3BlcmF0aW9uLgotICAgKiBAcGFyYW0gc29hcE1lc3NhZ2UgVGhlIElTT0FQTWVzc2FnZSB0byBwb3B1bGF0ZSAKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldEhlYWRlckNvbnRlbnQoSGFzaHRhYmxlIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlLCBXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCwgSVNPQVBNZXNzYWdlIHNvYXBNZXNzYWdlKQotICAgIHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIHsKLSAgICBTT0FQTWVzc2FnZVV0aWxzLnNldEhlYWRlckNvbnRlbnRGcm9tTW9kZWwoc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUsIG9wZXJFbGVtZW50LCBzb2FwTWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogUG9wdWxhdGUgdGhlIGdpdmVuIElTT0FQTWVzc2FnZSdzIGJvZHkgdXNpbmcgdGhlIGlucHV0cyBmcm9tIFdTRQotICAgKiAKLSAgICogQHBhcmFtIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlIEhhc2h0YWJsZSBjb250YWluaW5nIGEgbWFwIG9mIHRoZSBuYW1lc3BhY2UgVVJJcyB0byBwcmVmaXhlcy4KLSAgICogQHBhcmFtIG9wZXJFbGVtZW50IFdTRExPcGVyYXRpb25FbGVtZW50IGVuY2Fwc3VsYXRpbmcgdGhlIFdTREwgb3BlcmF0aW9uLgotICAgKiBAcGFyYW0gc29hcE1lc3NhZ2UgVGhlIElTT0FQTWVzc2FnZSB0byBwb3B1bGF0ZSAKLSAgICovICAKLSAgcHJvdGVjdGVkIHZvaWQgc2V0Qm9keUNvbnRlbnQoSGFzaHRhYmxlIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlLCBXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCwgSVNPQVBNZXNzYWdlIHNvYXBNZXNzYWdlKSAKLSAgICB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiB7Ci0JU09BUE1lc3NhZ2VVdGlscy5zZXRCb2R5Q29udGVudEZyb21Nb2RlbChzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSwgb3BlckVsZW1lbnQsIHNvYXBNZXNzYWdlKTsKLSAgfSAgICAgICAgCi0KLSAgcHVibGljIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFN0cmluZyBzb2FwQWRkcmVzc0xvY2F0aW9uID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoV1NETEFjdGlvbklucHV0cy5FTkRfUE9JTlQpOwotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KWdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgV1NETEJpbmRpbmdFbGVtZW50IGJpbmRpbmdFbGVtZW50ID0gKFdTRExCaW5kaW5nRWxlbWVudClvcGVyRWxlbWVudC5nZXRQYXJlbnRFbGVtZW50KCk7Ci0gICAgb3BlckVsZW1lbnQuc2V0UHJvcGVydHlBc09iamVjdChXU0RMQWN0aW9uSW5wdXRzLlNPQVBfUkVTUE9OU0VfQ0FDSEVELCBuZXcgQm9vbGVhbihmYWxzZSkpOwotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIEdlbmVyYXRlIHRoZSBTT0FQIGVudmVsb3BlIGFuZCBpdHMgY2hpbGRyZW4uIFdlIG5lZWQgdG8gY3JlYXRlIGEgRE9NIGVsZW1lbnQgdmVyc2lvbiB0byBkaXNwbGF5IGFuZCB0aGUgb2JqZWN0IHZlcnNpb24gdG8gZXhlY3V0ZS4KLSAgICAgIC8vIDxTT0FQLUVOVjpFbnZlbG9wZQotICAgICAgLy8gICAgeG1sbnM6U09BUC1FTlY9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIgotICAgICAgLy8gICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKLSAgICAgIC8vICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotICAgICAgLy8gLi4uCi0KLQkgIElTT0FQTWVzc2FnZSBzb2FwTWVzc2FnZSA9IGdldFNPQVBSZXF1ZXN0TWVzc2FnZShvcGVyRWxlbWVudCk7Ci0JICBpZiAoc29hcE1lc3NhZ2UgPT0gbnVsbCkKLQkJICB0aHJvdyBuZXcgVHJhbnNwb3J0RXhjZXB0aW9uKHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fU1VJVEFCTEVfVFJBTlNQT1JUIikpOwotCSAgCi0JICBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUgPSBuZXcgSGFzaHRhYmxlKHNvYXBNZXNzYWdlLmdldE5hbWVzcGFjZVRhYmxlKCkpOwkgIAotCSAgc2V0SGVhZGVyQ29udGVudChuYW1lc3BhY2VUYWJsZSwgb3BlckVsZW1lbnQsIHNvYXBNZXNzYWdlKTsKLQkgIHNldEJvZHlDb250ZW50KG5hbWVzcGFjZVRhYmxlLCBvcGVyRWxlbWVudCwgc29hcE1lc3NhZ2UpOyAgICAgIAotCSAgc29hcE1lc3NhZ2Uuc2V0TmFtZXNwYWNlVGFibGUobmFtZXNwYWNlVGFibGUpOwotCi0JICAvLyBzdG9yZSB0aGUgcmVxdWVzdAotCSAgb3BlckVsZW1lbnQuc2V0UHJvcGVydHlBc09iamVjdChXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT0FQX1JFUVVFU1QsIHNvYXBNZXNzYWdlKTsgIAotCSAgCi0JICAvLyBFeGVjdXRlIHRoZSBTT0FQIG9wZXJhdGlvbi4KLSAgICAgIGlmIChzb2FwQWRkcmVzc0xvY2F0aW9uICE9IG51bGwpCi0gICAgICB7ICAgIAkKLSAgICAJc29hcE1lc3NhZ2Uuc2V0UHJvcGVydHkoSVNPQVBNZXNzYWdlLlBST1BfU09BUF9BQ1RJT04sIG9wZXJFbGVtZW50LmdldFNvYXBBY3Rpb24oKSk7Ci0gICAgCVN0cmluZ1tdIGF1dGhQYXJhbXMgPSByZXRyaWV2ZUF1dGhQYXJhbXMoYmluZGluZ0VsZW1lbnQsIHNvYXBBZGRyZXNzTG9jYXRpb24pOwotICAgIAkKLSAgICAJLy8gaW52b2tlIQotICAgIAlJU09BUE1lc3NhZ2Ugc29hcFJlc3BvbnNlID0gb3BlckVsZW1lbnQuZ2V0U09BUFRyYW5zcG9ydFByb3ZpZGVyKCkubmV3VHJhbnNwb3J0KCkKLSAgICAJCS5zZW5kKHNvYXBBZGRyZXNzTG9jYXRpb24sIGF1dGhQYXJhbXNbMF0sIGF1dGhQYXJhbXNbMV0sIHNvYXBNZXNzYWdlKTsKLSAgICAJCi0gICAgCS8vIHN0b3JlIHRoZSByZXNwb25zZQotICAgIAlvcGVyRWxlbWVudC5zZXRQcm9wZXJ0eUFzT2JqZWN0KFdTRExNb2RlbENvbnN0YW50cy5QUk9QX1NPQVBfUkVTUE9OU0UsIHNvYXBSZXNwb25zZSk7Ci0gICAgCQotICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0T3BlcmF0aW9uTm9kZShnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5BQkxFX1RPX0NPTk5FQ1QiLHNvYXBBZGRyZXNzTG9jYXRpb24pKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEhUVFBUcmFuc3BvcnRFeGNlcHRpb24gZSkgewotICAgICAgdGhyb3dIVFRQVHJhbnNwb3J0RXhjZXB0aW9uKGJpbmRpbmdFbGVtZW50LCBzb2FwQWRkcmVzc0xvY2F0aW9uLCBlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICBUaHJvd2FibGUgdCA9IGU7Ci0gICAgICBpZiAoZSBpbnN0YW5jZW9mIFRyYW5zcG9ydEV4Y2VwdGlvbiAmJiBlLmdldENhdXNlKCkgIT0gbnVsbCkKLSAgICAJdCA9IGUuZ2V0Q2F1c2UoKTsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24od3NkbFBlcnNwZWN0aXZlLCBtZXNzYWdlUXVldWUsIHQuZ2V0Q2xhc3MoKS5nZXROYW1lKCksIHQpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCB0aHJvd0hUVFBUcmFuc3BvcnRFeGNlcHRpb24oV1NETEJpbmRpbmdFbGVtZW50IGJpbmRpbmdFbGVtZW50LCBTdHJpbmcgZW5kcG9pbnRTdHJpbmcsIEhUVFBUcmFuc3BvcnRFeGNlcHRpb24gaHR0cFRyYW5zcG9ydEV4Y2VwdGlvbikgdGhyb3dzIEhUVFBUcmFuc3BvcnRFeGNlcHRpb24KLSAgewotICAgIGlmIChodHRwVHJhbnNwb3J0RXhjZXB0aW9uLmdldFN0YXR1c0NvZGUoKSA9PSBIdHRwU2VydmxldFJlc3BvbnNlLlNDX1VOQVVUSE9SSVpFRCkKLSAgICB7Ci0gICAgICBFbmRwb2ludCBlbmRwb2ludCA9IGJpbmRpbmdFbGVtZW50LmdldEVuZHBvaW50KGVuZHBvaW50U3RyaW5nKTsKLSAgICAgIGlmIChlbmRwb2ludCAhPSBudWxsKQotICAgICAgewotICAgICAgICBlbmRwb2ludC5zZXRSZXF1aXJlSFRUUEJhc2ljQXV0aCh0cnVlKTsKLSAgICAgICAgZW5kcG9pbnQuc2V0SHR0cEJhc2ljQXV0aFVzZXJuYW1lKG51bGwpOwotICAgICAgICBlbmRwb2ludC5zZXRIdHRwQmFzaWNBdXRoUGFzc3dvcmQobnVsbCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHRocm93IGh0dHBUcmFuc3BvcnRFeGNlcHRpb247Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nW10gcmV0cmlldmVBdXRoUGFyYW1zKFdTRExCaW5kaW5nRWxlbWVudCBiaW5kaW5nRWxlbWVudCwgU3RyaW5nIGVuZHBvaW50U3RyaW5nKQotICB7Ci0JU3RyaW5nW10gYXV0aFBhcmFtcyA9IG5ldyBTdHJpbmdbXSB7IG51bGwsIG51bGwgfTsKLSAgICBFbmRwb2ludCBlbmRwb2ludCA9IGJpbmRpbmdFbGVtZW50LmdldEVuZHBvaW50KGVuZHBvaW50U3RyaW5nKTsKLSAgICBpZiAoZW5kcG9pbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZW5kcG9pbnQuaXNSZXF1aXJlSFRUUEJhc2ljQXV0aCgpKQotICAgICAgewotICAgICAgICBTdHJpbmcgaHR0cEJhc2ljQXV0aFVzZXJuYW1lID0gZW5kcG9pbnQuZ2V0SHR0cEJhc2ljQXV0aFVzZXJuYW1lKCk7Ci0gICAgICAgIFN0cmluZyBodHRwQmFzaWNBdXRoUGFzc3dvcmQgPSBlbmRwb2ludC5nZXRIdHRwQmFzaWNBdXRoUGFzc3dvcmQoKTsKLSAgICAgICAgaWYgKGh0dHBCYXNpY0F1dGhVc2VybmFtZSA9PSBudWxsIHx8IGh0dHBCYXNpY0F1dGhQYXNzd29yZCA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgaHR0cEJhc2ljQXV0aFVzZXJuYW1lID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoV1NETEFjdGlvbklucHV0cy5IVFRQX0JBU0lDX0FVVEhfVVNFUk5BTUUpOwotICAgICAgICAgIGh0dHBCYXNpY0F1dGhQYXNzd29yZCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFdTRExBY3Rpb25JbnB1dHMuSFRUUF9CQVNJQ19BVVRIX1BBU1NXT1JEKTsKLSAgICAgICAgICBlbmRwb2ludC5zZXRIdHRwQmFzaWNBdXRoVXNlcm5hbWUoaHR0cEJhc2ljQXV0aFVzZXJuYW1lKTsKLSAgICAgICAgICBlbmRwb2ludC5zZXRIdHRwQmFzaWNBdXRoUGFzc3dvcmQoaHR0cEJhc2ljQXV0aFBhc3N3b3JkKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaHR0cEJhc2ljQXV0aFVzZXJuYW1lICE9IG51bGwgJiYgaHR0cEJhc2ljQXV0aFBhc3N3b3JkICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBhdXRoUGFyYW1zWzBdID0gaHR0cEJhc2ljQXV0aFVzZXJuYW1lOwotICAgICAgICAgIGF1dGhQYXJhbXNbMV0gPSBodHRwQmFzaWNBdXRoUGFzc3dvcmQ7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGF1dGhQYXJhbXM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0ludm9rZVdTRExTT0FQT3BlcmF0aW9uRm9ybUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvSW52b2tlV1NETFNPQVBPcGVyYXRpb25Gb3JtQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2YmI2ZDAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvSW52b2tlV1NETFNPQVBPcGVyYXRpb25Gb3JtQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzA1ICAgMTE3MDM0IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgU2VydmljZXMgRXhwbG9yZXIgc2hvdWxkIHN1cHBvcnQgU09BUCBIZWFkZXJzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUudHJhbnNmb3JtZXIuSVRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC5XU0RMT3BlcmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuV1NETFBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnRyYW5zZm9ybWVyLkZyYWdtZW50VHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXI7Ci0KLXB1YmxpYyBjbGFzcyBJbnZva2VXU0RMU09BUE9wZXJhdGlvbkZvcm1BY3Rpb24gZXh0ZW5kcyBJbnZva2VXU0RMU09BUE9wZXJhdGlvbkFjdGlvbgotewotICBwdWJsaWMgSW52b2tlV1NETFNPQVBPcGVyYXRpb25Gb3JtQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIGJvb2xlYW4gcmVzdWx0c1ZhbGlkID0gdHJ1ZTsKLSAgICBzdXBlci5wcm9jZXNzUGFyc2VkUmVzdWx0cyhwYXJzZXIpOwotICAgIFN0cmluZyBzb3VyY2VDb250ZW50ID0gcGFyc2VyLmdldFBhcmFtZXRlcihGcmFnbWVudENvbnN0YW50cy5TT1VSQ0VfQ09OVEVOVCk7Ci0gICAgaWYgKHNvdXJjZUNvbnRlbnQgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgICAgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpIGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICAKLSAgICAgIC8vIHZhbGlkYXRlIGhlYWRlcnMKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb3BlckVsZW1lbnQuZ2V0U09BUEhlYWRlcnMoKS5pdGVyYXRvcigpOyAgICAgIAotCSAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgU09BUEhlYWRlciBzb2FwSGVhZGVyID0gKFNPQVBIZWFkZXIpIGl0Lm5leHQoKTsgICAgICAgIAotICAgICAgICBJRnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEhlYWRlckZyYWdtZW50KHNvYXBIZWFkZXIpOwotICAgICAgICBpZiAoIWZyYWcucHJvY2Vzc1BhcmFtZXRlclZhbHVlcyhwYXJzZXIpKQotICAgICAgICB7Ci0gICAgICAgICAgTWVzc2FnZSBtZXNzYWdlID0gc29hcEhlYWRlci5nZXRFTWVzc2FnZSgpOwotICAgICAgICAgIFBhcnQgcGFydCA9IHNvYXBIZWFkZXIuZ2V0RVBhcnQoKTsgICAgICAgIAkKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1ZBTElEQVRJTkdfUEFSQU1FVEVSIiwgbWVzc2FnZS5nZXRRTmFtZSgpICsgIiAiICsgcGFydC5nZXROYW1lKCkpKTsKLSAgICAgICAgICByZXN1bHRzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICAvLyB2YWxpZGF0ZSBib2R5Ci0gICAgICBpdCA9IG9wZXJFbGVtZW50LmdldE9yZGVyZWRCb2R5UGFydHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpIGl0Lm5leHQoKTsKLSAgICAgICAgSUZyYWdtZW50IGZyYWcgPSBvcGVyRWxlbWVudC5nZXRGcmFnbWVudChwYXJ0KTsKLSAgICAgICAgaWYgKCFmcmFnLnByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMocGFyc2VyKSkKLSAgICAgICAgewotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVkFMSURBVElOR19QQVJBTUVURVIiLCBwYXJ0LmdldE5hbWUoKSkpOwotICAgICAgICAgIHJlc3VsdHNWYWxpZCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHRzVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgSVRyYW5zZm9ybWVyW10gZ2V0VHJhbnNmb3JtZXJzKCkKLSAgewotICAgIElUcmFuc2Zvcm1lcltdIHBhcmVudFRyYW5zZm9ybWVycyA9IHN1cGVyLmdldFRyYW5zZm9ybWVycygpOwotICAgIElUcmFuc2Zvcm1lcltdIHRyYW5zZm9ybWVycyA9IG5ldyBJVHJhbnNmb3JtZXJbcGFyZW50VHJhbnNmb3JtZXJzLmxlbmd0aCArIDFdOwotICAgIFN5c3RlbS5hcnJheWNvcHkocGFyZW50VHJhbnNmb3JtZXJzLCAwLCB0cmFuc2Zvcm1lcnMsIDAsIHBhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgpOwotICAgIHRyYW5zZm9ybWVyc1t0cmFuc2Zvcm1lcnMubGVuZ3RoIC0gMV0gPSBuZXcgRnJhZ21lbnRUcmFuc2Zvcm1lcihjb250cm9sbGVyXyk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybWVyczsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0ludm9rZVdTRExTT0FQT3BlcmF0aW9uU291cmNlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9JbnZva2VXU0RMU09BUE9wZXJhdGlvblNvdXJjZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODY3MGE4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL0ludm9rZVdTRExTT0FQT3BlcmF0aW9uU291cmNlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDMwNSAgIDExNzAzNCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHNob3VsZCBzdXBwb3J0IFNPQVAgSGVhZGVycwotICogMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExPcGVyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBNZXNzYWdlOwotCi1wdWJsaWMgY2xhc3MgSW52b2tlV1NETFNPQVBPcGVyYXRpb25Tb3VyY2VBY3Rpb24gZXh0ZW5kcyBJbnZva2VXU0RMU09BUE9wZXJhdGlvbkFjdGlvbgotewotICBwcml2YXRlIGJvb2xlYW4gbmV3RmlsZVNlbGVjdGVkXzsKLSAgcHJpdmF0ZSBib29sZWFuIHNhdmVBc1NlbGVjdGVkXzsKLSAgcHJpdmF0ZSBib29sZWFuIGlzSGVhZGVyXzsKLSAgCi0gIHB1YmxpYyBJbnZva2VXU0RMU09BUE9wZXJhdGlvblNvdXJjZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICBuZXdGaWxlU2VsZWN0ZWRfID0gZmFsc2U7Ci0gICAgc2F2ZUFzU2VsZWN0ZWRfID0gZmFsc2U7Ci0gICAgaXNIZWFkZXJfID0gZmFsc2U7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgc3VwZXIucHJvY2Vzc1BhcnNlZFJlc3VsdHMocGFyc2VyKTsKLSAgICBXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKS5nZXRUcmVlRWxlbWVudCgpOwotICAgIG5ld0ZpbGVTZWxlY3RlZF8gPSBmYWxzZTsKLSAgICBzYXZlQXNTZWxlY3RlZF8gPSBmYWxzZTsKLSAgICBpc0hlYWRlcl8gPSBmYWxzZTsKLSAgICAvKiAgdHJ5IGFuZCBjYXRjaCBpcyBuZWVkZWQgaWYgd2UgYXJlIGRvaW5nIGZyYWdtZW50aXphdGlvbi4KLSAgICB0cnkKLSAgICB7Ci0gICAgKi8KLSAgICAgIFN0cmluZyBzdWJtaXNzaW9uQWN0aW9uID0gcGFyc2VyLmdldFBhcmFtZXRlcihXU0RMQWN0aW9uSW5wdXRzLlNVQk1JU1NJT05fQUNUSU9OKTsKLSAgICAgIFN0cmluZyBzb3VyY2VDb250ZW50cyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoRnJhZ21lbnRDb25zdGFudHMuU09VUkNFX0NPTlRFTlRfSEVBREVSKTsKLSAgICAgIGlmIChzb3VyY2VDb250ZW50cyAhPSBudWxsKQotICAgIAlvcGVyRWxlbWVudC5zZXRQcm9wZXJ0eUFzU3RyaW5nKFdTRExNb2RlbENvbnN0YW50cy5QUk9QX1NPVVJDRV9DT05URU5UX0hFQURFUixzb3VyY2VDb250ZW50cyk7ICAKLSAgICAgIHNvdXJjZUNvbnRlbnRzID0gcGFyc2VyLmdldFBhcmFtZXRlcihGcmFnbWVudENvbnN0YW50cy5TT1VSQ0VfQ09OVEVOVCk7Ci0gICAgICBpZiAoc291cmNlQ29udGVudHMgIT0gbnVsbCkKLSAgICAgICAgb3BlckVsZW1lbnQuc2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT1VSQ0VfQ09OVEVOVCxzb3VyY2VDb250ZW50cyk7Ci0gICAgICBpZiAoV1NETEFjdGlvbklucHV0cy5TVUJNSVNTSU9OX0FDVElPTl9CUk9XU0VfRklMRV9IRUFERVIuZXF1YWxzKHN1Ym1pc3Npb25BY3Rpb24pKQotICAgICAgewotICAgIAluZXdGaWxlU2VsZWN0ZWRfID0gdHJ1ZTsKLSAgICAgICAgU3RyaW5nIGZpbGVDb250ZW50cyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoV1NETEFjdGlvbklucHV0cy5TRUxFQ1RFRF9GSUxFX0hFQURFUik7Ci0gICAgICAgIGlmIChmaWxlQ29udGVudHMgIT0gbnVsbCkKLSAgICAgICAgICBvcGVyRWxlbWVudC5zZXRQcm9wZXJ0eUFzU3RyaW5nKFdTRExNb2RlbENvbnN0YW50cy5QUk9QX1NPVVJDRV9DT05URU5UX0hFQURFUixmaWxlQ29udGVudHMpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoV1NETEFjdGlvbklucHV0cy5TVUJNSVNTSU9OX0FDVElPTl9CUk9XU0VfRklMRS5lcXVhbHMoc3VibWlzc2lvbkFjdGlvbikpCi0gICAgICB7Ci0gICAgICAgIG5ld0ZpbGVTZWxlY3RlZF8gPSB0cnVlOwotICAgICAgICBTdHJpbmcgZmlsZUNvbnRlbnRzID0gcGFyc2VyLmdldFBhcmFtZXRlcihXU0RMQWN0aW9uSW5wdXRzLlNFTEVDVEVEX0ZJTEUpOwotICAgICAgICBpZiAoZmlsZUNvbnRlbnRzICE9IG51bGwpCi0gICAgICAgICAgb3BlckVsZW1lbnQuc2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT1VSQ0VfQ09OVEVOVCxmaWxlQ29udGVudHMpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoV1NETEFjdGlvbklucHV0cy5TVUJNSVNTSU9OX0FDVElPTl9TQVZFX0FTX0hFQURFUi5lcXVhbHMoc3VibWlzc2lvbkFjdGlvbikpCi0gICAgICB7Ci0gICAgCXNhdmVBc1NlbGVjdGVkXyA9IHRydWU7Ci0gICAgCWlzSGVhZGVyXyA9IHRydWU7Ci0gICAgCXJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoV1NETEFjdGlvbklucHV0cy5TVUJNSVNTSU9OX0FDVElPTl9TQVZFX0FTLmVxdWFscyhzdWJtaXNzaW9uQWN0aW9uKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2F2ZSBBcy4uLiBhY3Rpb24KLSAgICAgICAgc2F2ZUFzU2VsZWN0ZWRfID0gdHJ1ZTsgICAgICAKLSAgICAJcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIFN0cmluZ1tdIG5zRGVjbGFyYXRpb25zID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhGcmFnbWVudENvbnN0YW50cy5TT1VSQ0VfQ09OVEVOVF9OQU1FU1BBQ0UpOwotICAgICAgaWYgKG5zRGVjbGFyYXRpb25zICE9IG51bGwpCi0gICAgICAgIG9wZXJFbGVtZW50LnNldFByb3BlcnR5QXNPYmplY3QoV1NETE1vZGVsQ29uc3RhbnRzLlBST1BfU09VUkNFX0NPTlRFTlRfTkFNRVNQQUNFLG5zRGVjbGFyYXRpb25zKTsgICAgCQotCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICAvKgotICAgIH0gICAgICAgCi0gICAgY2F0Y2ggKFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBoYW5kbGVVbmV4cGVjdGVkRXhjZXB0aW9uKHdzZGxQZXJzcGVjdGl2ZSxtZXNzYWdlUXVldWUsIlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICBjYXRjaCAoU0FYRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih3c2RsUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJTQVhFeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24od3NkbFBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIsZSk7Ci0gICAgfQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFeGNlcHRpb24od3NkbFBlcnNwZWN0aXZlLG1lc3NhZ2VRdWV1ZSwiSU9FeGNlcHRpb24iLGUpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gICAgKi8KLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuSW52b2tlV1NETFNPQVBPcGVyYXRpb25BY3Rpb24jZ2V0U09BUFJlcXVlc3RNZXNzYWdlKG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC5XU0RMT3BlcmF0aW9uRWxlbWVudCkKLSAgICovCi0gIHByb3RlY3RlZCBJU09BUE1lc3NhZ2UgZ2V0U09BUFJlcXVlc3RNZXNzYWdlKFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50KSB7CSAgCi0JICByZXR1cm4gKElTT0FQTWVzc2FnZSkgb3BlckVsZW1lbnQuZ2V0UHJvcGVydHlBc09iamVjdChXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT0FQX1JFUVVFU1RfVE1QKTsKLSAgfSAKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5JbnZva2VXU0RMU09BUE9wZXJhdGlvbkFjdGlvbiNzZXRIZWFkZXJDb250ZW50KGphdmEudXRpbC5IYXNodGFibGUsIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC5XU0RMT3BlcmF0aW9uRWxlbWVudCwgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzZXRIZWFkZXJDb250ZW50KEhhc2h0YWJsZSBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSwgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQsIElTT0FQTWVzc2FnZSBzb2FwTWVzc2FnZSkgewkKLSAgIAlTdHJpbmcgaGVhZGVyQ29udGVudCA9IG9wZXJFbGVtZW50LmdldFByb3BlcnR5QXNTdHJpbmcoV1NETE1vZGVsQ29uc3RhbnRzLlBST1BfU09VUkNFX0NPTlRFTlRfSEVBREVSKTsKLSAgICBvcGVyRWxlbWVudC5nZXRTT0FQVHJhbnNwb3J0UHJvdmlkZXIoKS5uZXdUcmFuc3BvcnQoKS5uZXdEZXNlcmlhbGl6ZXIoKQotICAgIAkuZGVzZXJpYWxpemUoSVNPQVBNZXNzYWdlLkhFQURFUl9DT05URU5ULCBoZWFkZXJDb250ZW50LCBzb2FwTWVzc2FnZSk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLkludm9rZVdTRExTT0FQT3BlcmF0aW9uQWN0aW9uI3NldEJvZHlDb250ZW50KGphdmEudXRpbC5IYXNodGFibGUsIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC5XU0RMT3BlcmF0aW9uRWxlbWVudCwgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UpCi0gICAqLyAKLSAgcHJvdGVjdGVkIHZvaWQgc2V0Qm9keUNvbnRlbnQoSGFzaHRhYmxlIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlLCBXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCwgSVNPQVBNZXNzYWdlIHNvYXBNZXNzYWdlKSB7Ci0gICAgU3RyaW5nIGJvZHlDb250ZW50ID0gb3BlckVsZW1lbnQuZ2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT1VSQ0VfQ09OVEVOVCk7ICAgIAotICAgIG9wZXJFbGVtZW50LmdldFNPQVBUcmFuc3BvcnRQcm92aWRlcigpLm5ld1RyYW5zcG9ydCgpLm5ld0Rlc2VyaWFsaXplcigpCi0gICAgCS5kZXNlcmlhbGl6ZShJU09BUE1lc3NhZ2UuQk9EWV9DT05URU5ULCBib2R5Q29udGVudCwgc29hcE1lc3NhZ2UpOyAgICAgICAgCi0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiB3YXNOZXdGaWxlU2VsZWN0ZWQoKQotICB7Ci0gICAgcmV0dXJuIG5ld0ZpbGVTZWxlY3RlZF87Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHdhc1NhdmVBc1NlbGVjdGVkKCkKLSAgewotICAgIHJldHVybiBzYXZlQXNTZWxlY3RlZF87Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0RGVmYXVsdFNhdmVBc0ZpbGVOYW1lKCkKLSAgewotICAgIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KShnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKS5nZXRUcmVlRWxlbWVudCgpKTsKLSAgICByZXR1cm4gKG5ldyBTdHJpbmdCdWZmZXIob3BlckVsZW1lbnQuZ2V0T3BlcmF0aW9uKCkuZ2V0TmFtZSgpKSkuYXBwZW5kKCIudHh0IikudG9TdHJpbmcoKTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIHZvaWQgd3JpdGVTb3VyY2VDb250ZW50KE91dHB1dFN0cmVhbSBvcykKLSAgewotICAgIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KShnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKS5nZXRUcmVlRWxlbWVudCgpKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihvcyk7Ci0gICAgaWYgKGlzSGVhZGVyXykKLSAgICAgIHB3LnByaW50bG4ob3BlckVsZW1lbnQuZ2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT1VSQ0VfQ09OVEVOVF9IRUFERVIpKTsKLSAgICBlbHNlCi0gICAJICBwdy5wcmludGxuKG9wZXJFbGVtZW50LmdldFByb3BlcnR5QXNTdHJpbmcoV1NETE1vZGVsQ29uc3RhbnRzLlBST1BfU09VUkNFX0NPTlRFTlQpKTsKLSAgICBwdy5jbG9zZSgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9PcGVuV1NETEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvT3BlbldTRExBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0MjJlMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9PcGVuV1NETEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLk1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIE9wZW5XU0RMQWN0aW9uIGV4dGVuZHMgV1NETFByb3BlcnRpZXNGb3JtQWN0aW9uIHsKLQotICBwdWJsaWMgT3BlbldTRExBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbiB7Ci0gICAgU3RyaW5nIHdzZGxVcmwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCk7Ci0gICAgRm9ybVRvb2wgZm9ybVRvb2wgPSBnZXRTZWxlY3RlZEZvcm1Ub29sKCk7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCwgd3NkbFVybCk7Ci0gICAgZm9ybVRvb2wudXBkYXRlUHJvcGVydHlUYWJsZShwcm9wZXJ0eVRhYmxlXyk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKSB7Ci0gICAgU3RyaW5nIHdzZGxVcmwgPSAoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV1NETF9VUkwpOwotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSByb290Tm9kZSA9IG5vZGVNYW5hZ2VyLmdldFJvb3ROb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgcm9vdEVsZW1lbnQgPSByb290Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotCi0gICAgLy8gY3JlYXRlIGEgV1NETEVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBXU0RMCi0gICAgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQgPSBuZXcgV1NETEVsZW1lbnQod3NkbFVybCwgcm9vdEVsZW1lbnQuZ2V0TW9kZWwoKSwgd3NkbFVybCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gb3BlbiBXU0RMCi0gICAgICBWZWN0b3IgZXJyb3JNZXNzYWdlcyA9IHdzZGxFbGVtZW50LmxvYWRXU0RMKCk7Ci0gICAgICBpZiAoZXJyb3JNZXNzYWdlcy5zaXplKCkgPiAwKQotICAgICAgewotICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1hTRF9WQUxJREFUSU9OIikpOwotICAgICAgICBmb3IgKGludCBpPTA7aTxlcnJvck1lc3NhZ2VzLnNpemUoKTtpKyspCi0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoKFN0cmluZyllcnJvck1lc3NhZ2VzLmVsZW1lbnRBdChpKSk7Ci0gICAgICB9ICAgICAgICAgICAgCi0gICAgfQotICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2Uod3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9PUEVOX1dTREwiLHdzZGxVcmwpKTsgICAgICAgICAgCi0gICAgICBoYW5kbGVVbmV4cGVjdGVkRXhjZXB0aW9uKHdzZGxQZXJzcGVjdGl2ZSxtZXNzYWdlUXVldWUsIldTRExFeGNlcHRpb24iLGUpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByb290RWxlbWVudC5jb25uZWN0KHdzZGxFbGVtZW50LFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETCwgTW9kZWxDb25zdGFudHMuUkVMX09XTkVSKTsKLQotICAgIC8vIGJ1aWxkIHRoZSBkYXRhbW9kZWwgZm9yIHRoaXMgV1NETEVsZW1lbnQKLSAgICB3c2RsRWxlbWVudC5idWlsZE1vZGVsKCk7Ci0KLSAgICAvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gMSBzZXJ2aWNlIG5vZGUsIHNlbGVjdCB0aGUgV1NETCBub2RlLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gMSBiaW5kaW5nIG5vZGUsIHNlbGVjdCB0aGUgc2VydmljZSBub2RlLgotICAgIC8vIElmIHRoZXJlIGlzIGp1c3QgdGhlIG9uZSBzZXJ2aWNlIGFuZCBiaW5kaW5nIG5vZGUsIHNlbGVjdCB0aGUgYmluZGluZyBub2RlLgotICAgIC8vIHNlbGVjdCB0aGUgbmV3IFdTREwgbm9kZQotICAgIE5vZGUgd3NkbE5vZGUgPSByb290Tm9kZS5nZXRDaGlsZE5vZGUod3NkbEVsZW1lbnQpOwotICAgIFZlY3RvciBzZXJ2aWNlTm9kZXMgPSB3c2RsTm9kZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgaW50IG5ld1NlbGVjdGVkTm9kZUlkID0gd3NkbE5vZGUuZ2V0Tm9kZUlkKCk7Ci0gICAgaWYgKHNlcnZpY2VOb2Rlcy5zaXplKCkgPT0gMSkKLSAgICB7Ci0gICAgICBOb2RlIHNlcnZpY2VOb2RlID0gKE5vZGUpc2VydmljZU5vZGVzLmVsZW1lbnRBdCgwKTsKLSAgICAgIFZlY3RvciBiaW5kaW5nTm9kZXMgPSBzZXJ2aWNlTm9kZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICBpZiAoYmluZGluZ05vZGVzLnNpemUoKSA9PSAxKQotICAgICAgewotICAgICAgICBOb2RlIGJpbmRpbmdOb2RlID0gKE5vZGUpYmluZGluZ05vZGVzLmVsZW1lbnRBdCgwKTsKLSAgICAgICAgbmV3U2VsZWN0ZWROb2RlSWQgPSBiaW5kaW5nTm9kZS5nZXROb2RlSWQoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgbmV3U2VsZWN0ZWROb2RlSWQgPSBzZXJ2aWNlTm9kZS5nZXROb2RlSWQoKTsKLSAgICB9Ci0gICAgbm9kZU1hbmFnZXIuc2V0U2VsZWN0ZWROb2RlSWQobmV3U2VsZWN0ZWROb2RlSWQpOwotICAgIG5vZGVNYW5hZ2VyLm1ha2VOb2RlVmlzaWJsZShub2RlTWFuYWdlci5nZXROb2RlKG5ld1NlbGVjdGVkTm9kZUlkKSk7Ci0gICAgYWRkVG9IaXN0b3J5KEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9XU0RMLFNlbGVjdFdTRExQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5ld1NlbGVjdGVkTm9kZUlkLCAwLCBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQsIEFjdGlvbklucHV0cy5WSUVXVE9PTElEX0RFRkFVTFQsIHRydWUpKTsKLSAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fT1BFTl9XU0RMX1NVQ0NFU1NGVUwiLCB3c2RsVXJsKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL09wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9PcGVuWFNESW5mb0RpYWxvZ0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmRkODQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL09wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5BY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLldTRExBY3Rpb25JbnB1dHM7Ci0KLXB1YmxpYyBjbGFzcyBPcGVuWFNESW5mb0RpYWxvZ0FjdGlvbiBleHRlbmRzIEFjdGlvbgotewotICBwdWJsaWMgT3BlblhTREluZm9EaWFsb2dBY3Rpb24oKQotICB7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rKFN0cmluZyBzZXNzaW9uSWQsaW50IG5vZGVJZCxTdHJpbmcgZnJhZ0lkKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ3c2RsL2ZyYWdtZW50L1hTREluZm9EaWFsb2cuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpLmFwcGVuZCgnPScpLmFwcGVuZChzZXNzaW9uSWQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJykuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpLmFwcGVuZCgnPScpLmFwcGVuZChub2RlSWQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJykuYXBwZW5kKFdTRExBY3Rpb25JbnB1dHMuRlJBR01FTlRfSUQpLmFwcGVuZCgnPScpLmFwcGVuZChmcmFnSWQpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBwb3B1bGF0ZVByb3BlcnR5VGFibGUoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvUmVmcmVzaFdTRExBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1JlZnJlc2hXU0RMQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MjhkOGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvUmVmcmVzaFdTRExBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLldTRExFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuTGlua0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuV1NETE1haW5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIFJlZnJlc2hXU0RMQWN0aW9uIGV4dGVuZHMgTGlua0FjdGlvbiB7Ci0KLSAgcHVibGljIFJlZnJlc2hXU0RMQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlELCBpbnQgdG9vbElELCBpbnQgdmlld0lELCBpbnQgdmlld1Rvb2xJRCkgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigid3NkbC9hY3Rpb25zL1dTRExSZWZyZXNoQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKG5vZGVJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVE9PTElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHRvb2xJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV0lEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV1RPT0xJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCh2aWV3VG9vbElEKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc0xpbmtQYXJhbWV0ZXJzKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KSB7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBjb250cm9sbGVyXy5nZXRXU0RMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpOwotICAgIFN0cmluZyBub2RlSURTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICBpbnQgbm9kZUlEOwotICAgIHRyeSB7Ci0gICAgICBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRFN0cmluZyk7Ci0gICAgfQotICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmZlKSB7Ci0gICAgICBub2RlSUQgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGVJZCgpOwotICAgIH0KLSAgICBOb2RlIG5vZGUgPSBub2RlTWFuYWdlci5nZXROb2RlKG5vZGVJRCk7Ci0gICAgd2hpbGUgKG5vZGUgIT0gbnVsbCAmJiAhKG5vZGUgaW5zdGFuY2VvZiBXU0RMTWFpbk5vZGUpKSB7Ci0gICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIFdTRExOb2RlKSB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuTk9ERUlELCBTdHJpbmcudmFsdWVPZihub2RlLmdldE5vZGVJZCgpKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgbm9kZSA9IG5vZGUuZ2V0UGFyZW50KCk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpIHsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHdzZGxOb2RlID0gbm9kZU1hbmFnZXIuZ2V0Tm9kZShub2RlSUQpOwotICAgIFdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gKFdTRExFbGVtZW50KXdzZGxOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uQ29weSA9IHdzZGxFbGVtZW50LmdldERlZmluaXRpb24oKTsKLSAgICBWZWN0b3Igc2NoZW1hTGlzdENvcHkgPSB3c2RsRWxlbWVudC5nZXRTY2hlbWFMaXN0KCk7Ci0gICAgd3NkbEVsZW1lbnQuc2V0RGVmaW5pdGlvbihudWxsKTsKLSAgICB3c2RsRWxlbWVudC5zZXRTY2hlbWFMaXN0KG5ldyBWZWN0b3IoKSk7Ci0gICAgaW50IHNlbGVjdGVkTm9kZUlEID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCkuZ2V0Tm9kZUlkKCk7Ci0KLSAgICB0cnkgewotICAgICAgLy8gb3BlbiBXU0RMCi0gICAgICBWZWN0b3IgZXJyb3JNZXNzYWdlcyA9IHdzZGxFbGVtZW50LmxvYWRXU0RMKCk7Ci0gICAgICBpZiAoZXJyb3JNZXNzYWdlcy5zaXplKCkgPiAwKSB7Ci0gICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfWFNEX1ZBTElEQVRJT04iKSk7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPGVycm9yTWVzc2FnZXMuc2l6ZSgpO2krKykKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSgoU3RyaW5nKWVycm9yTWVzc2FnZXMuZWxlbWVudEF0KGkpKTsKLSAgICAgIH0gICAgICAgICAgICAKLSAgICB9Ci0gICAgY2F0Y2ggKFdTRExFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX09QRU5fV1NETCIsd3NkbEVsZW1lbnQuZ2V0V3NkbFVybCgpKSk7ICAgICAgICAgIAotICAgICAgaGFuZGxlVW5leHBlY3RlZEV4Y2VwdGlvbih3c2RsUGVyc3BlY3RpdmUsbWVzc2FnZVF1ZXVlLCJXU0RMRXhjZXB0aW9uIixlKTsKLSAgICAgIHdzZGxFbGVtZW50LnNldERlZmluaXRpb24oZGVmaW5pdGlvbkNvcHkpOwotICAgICAgd3NkbEVsZW1lbnQuc2V0U2NoZW1hTGlzdChzY2hlbWFMaXN0Q29weSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gYnVpbGQgdGhlIGRhdGFtb2RlbCBmb3IgdGhpcyBXU0RMRWxlbWVudAotICAgIHdzZGxFbGVtZW50LmJ1aWxkTW9kZWwoKTsKLQotICAgIC8vIFNlbGVjdCBhIG5ldyBub2RlIGlmIHRoZSBwcmV2aW91cyBzZWxlY3RlZCBub2RlIG5vIGxvbmdlciBleGlzdHMKLSAgICAvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gMSBzZXJ2aWNlIG5vZGUsIHNlbGVjdCB0aGUgV1NETCBub2RlLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gMSBiaW5kaW5nIG5vZGUsIHNlbGVjdCB0aGUgc2VydmljZSBub2RlLgotICAgIC8vIElmIHRoZXJlIGlzIGp1c3QgdGhlIG9uZSBzZXJ2aWNlIGFuZCBiaW5kaW5nIG5vZGUsIHNlbGVjdCB0aGUgYmluZGluZyBub2RlLgotICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUoc2VsZWN0ZWROb2RlSUQpOwotICAgIGlmIChub2RlID09IG51bGwpIHsKLSAgICAgIHNlbGVjdGVkTm9kZUlEID0gd3NkbE5vZGUuZ2V0Tm9kZUlkKCk7Ci0gICAgICBWZWN0b3Igc2VydmljZU5vZGVzID0gd3NkbE5vZGUuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgaWYgKHNlcnZpY2VOb2Rlcy5zaXplKCkgPT0gMSkKLSAgICAgIHsKLSAgICAgICAgTm9kZSBzZXJ2aWNlTm9kZSA9IChOb2RlKXNlcnZpY2VOb2Rlcy5lbGVtZW50QXQoMCk7Ci0gICAgICAgIFZlY3RvciBiaW5kaW5nTm9kZXMgPSBzZXJ2aWNlTm9kZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICAgIGlmIChiaW5kaW5nTm9kZXMuc2l6ZSgpID09IDEpCi0gICAgICAgIHsKLSAgICAgICAgICBOb2RlIGJpbmRpbmdOb2RlID0gKE5vZGUpYmluZGluZ05vZGVzLmVsZW1lbnRBdCgwKTsKLSAgICAgICAgICBzZWxlY3RlZE5vZGVJRCA9IGJpbmRpbmdOb2RlLmdldE5vZGVJZCgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBzZWxlY3RlZE5vZGVJRCA9IHNlcnZpY2VOb2RlLmdldE5vZGVJZCgpOwotICAgICAgfQotICAgICAgbm9kZU1hbmFnZXIuc2V0U2VsZWN0ZWROb2RlSWQoc2VsZWN0ZWROb2RlSUQpOwotICAgICAgbm9kZU1hbmFnZXIubWFrZU5vZGVWaXNpYmxlKG5vZGVNYW5hZ2VyLmdldE5vZGUoc2VsZWN0ZWROb2RlSUQpKTsKLSAgICB9Ci0gICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2Uod3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX1JFRlJFU0hfV1NETF9TVUNDRVNTRlVMIiwgd3NkbEVsZW1lbnQuZ2V0V3NkbFVybCgpKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1Jlc2l6ZVdTRExGcmFtZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1Jlc2l6ZVdTRExGcmFtZXNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjYTE1NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9SZXNpemVXU0RMRnJhbWVzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlJlc2l6ZUZyYW1lc0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuV1NETEFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuV1NETEZyYW1lTmFtZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuV1NETFBlcnNwZWN0aXZlOwotCi1wdWJsaWMgY2xhc3MgUmVzaXplV1NETEZyYW1lc0FjdGlvbiBleHRlbmRzIFJlc2l6ZUZyYW1lc0FjdGlvbgotewotICBwdWJsaWMgUmVzaXplV1NETEZyYW1lc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoV1NETEFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gcGFyc2VyLmdldFBhcmFtZXRlcihXU0RMQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIpOwotICAgIGlmIChwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMgIT0gbnVsbCAmJiBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFdTRExBY3Rpb25JbnB1dHMuRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5ULHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoV1NETEFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSLGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIC8vIFNhdmUgdGhlIGN1cnJlbnQgZnJhbWVzZXQgc2l6ZXMuCi0gICAgU3RyaW5nIGZyYW1lTmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5GUkFNRV9OQU1FKTsKLSAgICBTdHJpbmcgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoV1NETEFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoV1NETEFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSKTsKLSAgICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICAgCi0gICAgLy8gU2V0IHRoZSBuZXcgZnJhbWVzZXQgc2l6ZXMuCi0gICAgaWYgKGZyYW1lTmFtZS5lcXVhbHMoV1NETEZyYW1lTmFtZXMuV1NETF9OQVZJR0FUT1JfQ09OVEFJTkVSKSkKLSAgICB7Ci0gICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICBpZiAocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLnN0YXJ0c1dpdGgoIjEwMCUiKSkKLSAgICAgIHsKLSAgICAgICAgLy8gUmVzdG9yZS4KLSAgICAgICAgd3NkbFBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyh3c2RsUGVyc3BlY3RpdmUuZ2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIE1heGltaXplLgotICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKTsKLSAgICAgICAgd3NkbFBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygiMTAwJSwwJSIpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChmcmFtZU5hbWUuZXF1YWxzKFdTRExGcmFtZU5hbWVzLldTRExfUFJPUEVSVElFU19DT05UQUlORVIpKQotICAgIHsKLSAgICAgIGlmIChhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzLnN0YXJ0c1dpdGgoIjEwMCUiKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scy5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gUmVzdG9yZS4KLSAgICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHdzZGxQZXJzcGVjdGl2ZS5nZXRTYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpKTsKLSAgICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyh3c2RsUGVyc3BlY3RpdmUuZ2V0U2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIE1heGltaXplLgotICAgICAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRTYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyhwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMpOwotICAgICAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAgICAgd3NkbFBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygiMCUsMTAwJSIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIE1heGltaXplLgotICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0U2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygiMTAwJSwwJSIpOwotICAgICAgICBpZiAoIXBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scy5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgICB7Ci0gICAgICAgICAgd3NkbFBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgd3NkbFBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygiMCUsMTAwJSIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGZyYW1lTmFtZS5lcXVhbHMoV1NETEZyYW1lTmFtZXMuV1NETF9TVEFUVVNfQ09OVEFJTkVSKSkKLSAgICB7Ci0gICAgICBpZiAoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cy5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgewotICAgICAgICBpZiAocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBSZXN0b3JlLgotICAgICAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMod3NkbFBlcnNwZWN0aXZlLmdldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkpOwotICAgICAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKHdzZGxQZXJzcGVjdGl2ZS5nZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy8gTWF4aW1pemUuCi0gICAgICAgICAgd3NkbFBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgd3NkbFBlcnNwZWN0aXZlLnNldFNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gTWF4aW1pemUuCi0gICAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCIwJSwxMDAlIik7Ci0gICAgICAgIGlmICghcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICAgIHsKLSAgICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKTsKLSAgICAgICAgICB3c2RsUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1NlbGVjdFdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9TZWxlY3RXU0RMTmF2aWdhdG9yTm9kZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODc1ZjE1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1NlbGVjdFdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuU2VsZWN0Tm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLlRvb2xUeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBTZWxlY3RXU0RMTmF2aWdhdG9yTm9kZUFjdGlvbiBleHRlbmRzIFNlbGVjdE5vZGVBY3Rpb24KLXsKLQotICAgIHB1YmxpYyBTZWxlY3RXU0RMTmF2aWdhdG9yTm9kZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gICAgewotICAgICAgICBzdXBlcihjb250cm9sbGVyLGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlELCBib29sZWFuIGZvckhpc3RvcnkpCi0gICAgewotICAgICAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzZGwvYWN0aW9ucy9TZWxlY3RXU0RMTmF2aWdhdG9yTm9kZUFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpLmFwcGVuZCgnPScpLmFwcGVuZChub2RlSUQpOwotICAgICAgICBpZiAoZm9ySGlzdG9yeSkKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJykuYXBwZW5kKEFjdGlvbklucHV0cy5JU0hJU1RPUlkpLmFwcGVuZCgiPTEiKTsKLSAgICAgICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgICB7Ci0gICAgICBUb29sTWFuYWdlciB0b29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZV8uZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gdG9vbE1hbmFnZXIuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgICBpbnQgbm9kZUlkID0gc2VsZWN0ZWROb2RlXy5nZXROb2RlSWQoKTsKLSAgICAgIAotICAgICAgaWYgKHNlbGVjdGVkVG9vbC5nZXRUb29sVHlwZSgpICE9IFRvb2xUeXBlcy5BQ1RJT04pCi0gICAgICAgIHJldHVybiBzZWxlY3RlZFRvb2wuZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYodHJ1ZSk7Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBnZXRBY3Rpb25MaW5rKG5vZGVJZCx0cnVlKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRyZWVDb250ZW50VmFyKCkgewotICAgICAgICByZXR1cm4gIndzZGxOYXZpZ2F0b3JDb250ZW50IjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRyZWVDb250ZW50UGFnZSgpIHsKLSAgICAgICAgcmV0dXJuICJ3c2RsL3dzZGxfbmF2aWdhdG9yX2NvbnRlbnQuanNwIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJWYXIoKSB7Ci0gICAgICAgIHJldHVybiAid3NkbFByb3BlcnRpZXNDb250YWluZXIiOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKSB7Ci0gICAgICAgIHJldHVybiAid3NkbC93c2RsX3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCI7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0UGVyc3BlY3RpdmVJZCgpCi0gICAgewotICAgICAgcmV0dXJuIEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9XU0RMOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1NlbGVjdFdTRExQcm9wZXJ0aWVzVG9vbEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNTYwODkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlNlbGVjdE5vZGVUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotCi1wdWJsaWMgY2xhc3MgU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uIGV4dGVuZHMgU2VsZWN0Tm9kZVRvb2xBY3Rpb24KLXsKLQotICAgIHB1YmxpYyBTZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICAgIHsKLSAgICAgICAgc3VwZXIoY29udHJvbGxlciwgY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSUQsIGludCB0b29sSUQsIGludCB2aWV3SUQsIGludCB2aWV3VG9vbElELCBib29sZWFuIGtlZXBIaXN0b3J5KQotICAgIHsKLSAgICAgICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ3c2RsL2FjdGlvbnMvU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uSlNQLmpzcD8iKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKG5vZGVJRCk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5UT09MSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCh0b29sSUQpOwotICAgICAgICBpZiAodmlld0lEICE9IEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCkgewotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdJRCk7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdUT09MSUQpOwotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdUb29sSUQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChrZWVwSGlzdG9yeSkgewotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5JU0hJU1RPUlkpOwotICAgICAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoIj0xIik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgICB7Ci0gICAgICAgIGludCBub2RlSWQgPSBzZWxlY3RlZE5vZGVfLmdldE5vZGVJZCgpOwotICAgICAgICBpbnQgdG9vbElkID0gc2VsZWN0ZWRUb29sXy5nZXRUb29sSWQoKTsKLSAgICAgICAgaW50IHZpZXdJZCA9IHNlbGVjdGVkTm9kZV8uZ2V0Vmlld0lkKCk7Ci0gICAgICAgIGludCB2aWV3VG9vbElkID0gc2VsZWN0ZWROb2RlXy5nZXRWaWV3VG9vbElkKCk7Ci0gICAgICAgIHJldHVybiBnZXRBY3Rpb25MaW5rKG5vZGVJZCx0b29sSWQsdmlld0lkLHZpZXdUb29sSWQsdHJ1ZSk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFZhcigpIHsKLSAgICAgICAgcmV0dXJuICJ3c2RsTmF2aWdhdG9yQ29udGVudCI7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKSB7Ci0gICAgICAgIHJldHVybiAid3NkbC93c2RsX25hdmlnYXRvcl9jb250ZW50LmpzcCI7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkgewotICAgICAgICByZXR1cm4gIndzZGxQcm9wZXJ0aWVzQ29udGFpbmVyIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkgewotICAgICAgICByZXR1cm4gIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRlbnRWYXIoKSB7Ci0gICAgICAgIHJldHVybiAid3NkbFByb3BlcnRpZXNDb250ZW50IjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250ZW50UGFnZSgpIHsKLSAgICAgICAgcmV0dXJuICJ3c2RsL3dzZGxfcHJvcGVydGllc19jb250ZW50LmpzcCI7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0UGVyc3BlY3RpdmVJZCgpCi0gICAgewotICAgICAgcmV0dXJuIEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9XU0RMOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1N3aXRjaFBlcnNwZWN0aXZlRnJvbVdTRExBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1N3aXRjaFBlcnNwZWN0aXZlRnJvbVdTRExBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU1YmMzYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21XU0RMQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuU2hvd1BlcnNwZWN0aXZlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLQotcHVibGljIGZpbmFsIGNsYXNzIFN3aXRjaFBlcnNwZWN0aXZlRnJvbVdTRExBY3Rpb24gZXh0ZW5kcyBTaG93UGVyc3BlY3RpdmVBY3Rpb24KLXsKLSAgcHVibGljIFN3aXRjaFBlcnNwZWN0aXZlRnJvbVdTRExBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NQYXJzZWRSZXN1bHRzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzID0gcGFyc2VyLmdldFBhcmFtZXRlcihXU0RMQWN0aW9uSW5wdXRzLkZSQU1FU0VUX0NPTFNfUEVSU1BFQ1RJVkVfQ09OVEVOVCk7Ci0gICAgU3RyaW5nIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFdTRExBY3Rpb25JbnB1dHMuRlJBTUVTRVRfUk9XU19BQ1RJT05TX0NPTlRBSU5FUik7Ci0gICAgaWYgKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyAhPSBudWxsICYmIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoV1NETEFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQscGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKTsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChXU0RMQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIsYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgU3RyaW5nIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFdTRExBY3Rpb25JbnB1dHMuRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5UKTsKLSAgICBTdHJpbmcgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KFdTRExBY3Rpb25JbnB1dHMuRlJBTUVTRVRfUk9XU19BQ1RJT05TX0NPTlRBSU5FUik7Ci0gICAgCi0gICAgLy8gU2F2ZSB0aGUgZnJhbWVzZXQgc2l6ZXMgaWZmIG5vIGZyYW1lIGlzIG1heGltaXplZC4KLSAgICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICAgaWYgKCFwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMuc3RhcnRzV2l0aCgiMTAwJSIpICYmICFwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMuZW5kc1dpdGgoIjEwMCUiKSkKLSAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKTsKLSAgICAgIAotICAgIGlmICghYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cy5zdGFydHNXaXRoKCIxMDAlIikgJiYgIWFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MuZW5kc1dpdGgoIjEwMCUiKSkKLSAgICAgIHdzZGxQZXJzcGVjdGl2ZS5zZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgCi0gICAgcmV0dXJuIHN1cGVyLnJ1bigpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRGb3JtQWN0aW9uTGluayhpbnQgdGFyZ2V0UGVyc3BlY3RpdmVJZCxib29sZWFuIGZvckhpc3RvcnkpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgZm9ybUxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ3c2RsL2FjdGlvbnMvU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NETEFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgZm9ybUxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRSkuYXBwZW5kKCc9JykuYXBwZW5kKHRhcmdldFBlcnNwZWN0aXZlSWQpOwotICAgIGlmIChmb3JIaXN0b3J5KQotICAgICAgZm9ybUxpbmsuYXBwZW5kKCcmJykuYXBwZW5kKEFjdGlvbklucHV0cy5JU0hJU1RPUlkpLmFwcGVuZCgiPTEiKTsgICAgCi0gICAgcmV0dXJuIGZvcm1MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1N5bmNocm9uaXplRnJhZ21lbnRWaWV3c0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvU3luY2hyb25pemVGcmFnbWVudFZpZXdzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMzNlOTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvU3luY2hyb25pemVGcmFnbWVudFZpZXdzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDMwNSAgIDExNzAzNCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHNob3VsZCBzdXBwb3J0IFNPQVAgSGVhZGVycwotICogMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLldTRExNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuV1NETE9wZXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuU09BUEhlYWRlcldyYXBwZXJGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5JbnZva2VXU0RMT3BlcmF0aW9uVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC51dGlsLlNPQVBNZXNzYWdlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotcHVibGljIGNsYXNzIFN5bmNocm9uaXplRnJhZ21lbnRWaWV3c0FjdGlvbiBleHRlbmRzIFdTRExQcm9wZXJ0aWVzRm9ybUFjdGlvbgotewotICBwdWJsaWMgU3luY2hyb25pemVGcmFnbWVudFZpZXdzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIHN1cGVyLnByb2Nlc3NQYXJzZWRSZXN1bHRzKHBhcnNlcik7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBnZXRTZWxlY3RlZE5hdmlnYXRvck5vZGUoKTsKLSAgICBXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAKLSAgICBJbnZva2VXU0RMT3BlcmF0aW9uVG9vbCBpbnZva2VXU0RMT3BlcmF0aW9uVG9vbCA9IChJbnZva2VXU0RMT3BlcmF0aW9uVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgICBTdHJpbmcgdmlld0lEID0gcGFyc2VyLmdldFBhcmFtZXRlcihGcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9WSUVXX0lEKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoRnJhZ21lbnRDb25zdGFudHMuRlJBR01FTlRfVklFV19JRCwgdmlld0lEKTsKLSAgICBpZiAodmlld0lELmVxdWFscyhGcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9WSUVXX1NXSVRDSF9GT1JNX1RPX1NPVVJDRSkpCi0gICAgewotICAgICAgaW52b2tlV1NETE9wZXJhdGlvblRvb2wuc2V0RnJhZ21lbnRWaWV3SUQoRnJhZ21lbnRDb25zdGFudHMuRlJBR01FTlRfVklFV19TV0lUQ0hfRk9STV9UT19TT1VSQ0UpOwotICAgICAgb3BlckVsZW1lbnQuc2V0UHJvcGVydHlBc09iamVjdChXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT1VSQ0VfQ09OVEVOVF9OQU1FU1BBQ0UsIG51bGwpOwotICAgICAgCi0gICAgICByZXR1cm4gcHJvY2Vzc0Zvcm1WaWV3UGFyc2VkUmVzdWx0c0hlYWRlcihwYXJzZXIsIG9wZXJFbGVtZW50KSAmCQkvLyBuZWVkIHRvIHByb2Nlc3MgYm90aCBoZWFkZXIgYW5kIGJvZHkgCi0gICAgICAgICAgICAgcHJvY2Vzc0Zvcm1WaWV3UGFyc2VkUmVzdWx0cyhwYXJzZXIsIG9wZXJFbGVtZW50KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGludm9rZVdTRExPcGVyYXRpb25Ub29sLnNldEZyYWdtZW50Vmlld0lEKEZyYWdtZW50Q29uc3RhbnRzLkZSQUdNRU5UX1ZJRVdfU1dJVENIX1NPVVJDRV9UT19GT1JNKTsKLSAgICAgIFN0cmluZ1tdIG5zRGVjbGFyYXRpb25zID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhGcmFnbWVudENvbnN0YW50cy5TT1VSQ0VfQ09OVEVOVF9OQU1FU1BBQ0UpOyAgICAKLSAgICAgIGlmIChuc0RlY2xhcmF0aW9ucyAhPSBudWxsKQotICAgICAgICBvcGVyRWxlbWVudC5zZXRQcm9wZXJ0eUFzT2JqZWN0KFdTRExNb2RlbENvbnN0YW50cy5QUk9QX1NPVVJDRV9DT05URU5UX05BTUVTUEFDRSxuc0RlY2xhcmF0aW9ucyk7Ci0gICAgICAKLSAgICAgIElTT0FQTWVzc2FnZSBzb2FwTWVzc2FnZSA9IChJU09BUE1lc3NhZ2UpIG9wZXJFbGVtZW50LmdldFByb3BlcnR5QXNPYmplY3QoV1NETE1vZGVsQ29uc3RhbnRzLlBST1BfU09BUF9SRVFVRVNUX1RNUCk7Ci0gICAgICBib29sZWFuIHJjID0gcHJvY2Vzc1NvdXJjZVZpZXdQYXJzZWRSZXN1bHRzSGVhZGVyKHBhcnNlciwgb3BlckVsZW1lbnQsIHNvYXBNZXNzYWdlKSAmCS8vIG5lZWQgdG8gcHJvY2VzcyBib3RoIGhlYWRlciBhbmQgYm9keQotCQkgCQkgICBwcm9jZXNzU291cmNlVmlld1BhcnNlZFJlc3VsdHMocGFyc2VyLCBvcGVyRWxlbWVudCwgc29hcE1lc3NhZ2UpOyAKLSAgICAgIG9wZXJFbGVtZW50LnNldFByb3BlcnR5QXNPYmplY3QoV1NETE1vZGVsQ29uc3RhbnRzLlBST1BfU09BUF9SRVFVRVNUX1RNUCwgbnVsbCk7Ci0gICAgICAKLSAgICAgIHJldHVybiByYzsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc0Zvcm1WaWV3UGFyc2VkUmVzdWx0c0hlYWRlcihNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50KSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgeyAKLQlvcGVyRWxlbWVudC5zZXRQcm9wZXJ0eUFzT2JqZWN0KFdTRExNb2RlbENvbnN0YW50cy5QUk9QX1NPVVJDRV9DT05URU5UX0hFQURFUiwgbnVsbCk7CQotCWJvb2xlYW4gcmVzdWx0c1ZhbGlkID0gdHJ1ZTsKLQkgICAgCi0JSXRlcmF0b3IgaXQgPSBvcGVyRWxlbWVudC5nZXRTT0FQSGVhZGVycygpLml0ZXJhdG9yKCk7Ci0Jd2hpbGUgKGl0Lmhhc05leHQoKSkKLQl7Ci0JICBTT0FQSGVhZGVyIHNvYXBIZWFkZXIgPSAoU09BUEhlYWRlcikgaXQubmV4dCgpOyAgICAgICAgCi0JICBJWFNERnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEhlYWRlckZyYWdtZW50KHNvYXBIZWFkZXIpOwotCSAgaWYgKCFmcmFnLnByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMocGFyc2VyKSkKLSAgICAgICAgcmVzdWx0c1ZhbGlkID0gZmFsc2U7Ci0JfQotCWlmIChyZXN1bHRzVmFsaWQpCi0JICBvcGVyRWxlbWVudC5zZXRQcm9wZXJ0eUFzU3RyaW5nKFdTRExNb2RlbENvbnN0YW50cy5QUk9QX1NPVVJDRV9DT05URU5UX0hFQURFUixudWxsKTsKLSAgICByZXR1cm4gcmVzdWx0c1ZhbGlkOwotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc0Zvcm1WaWV3UGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50KSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIG9wZXJFbGVtZW50LnNldFByb3BlcnR5QXNPYmplY3QoV1NETE1vZGVsQ29uc3RhbnRzLlBST1BfU09VUkNFX0NPTlRFTlQsIG51bGwpOwotICAgIGJvb2xlYW4gcmVzdWx0c1ZhbGlkID0gdHJ1ZTsKLQkKLSAgICBJdGVyYXRvciBpdCA9IG9wZXJFbGVtZW50LmdldE9yZGVyZWRCb2R5UGFydHMoKS5pdGVyYXRvcigpOyAgICAKLSAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIFBhcnQgcGFydCA9IChQYXJ0KWl0Lm5leHQoKTsKLSAgICAgIElYU0RGcmFnbWVudCBmcmFnID0gb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnQocGFydCk7Ci0gICAgICBpZiAoIWZyYWcucHJvY2Vzc1BhcmFtZXRlclZhbHVlcyhwYXJzZXIpKQotICAgICAgICByZXN1bHRzVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKHJlc3VsdHNWYWxpZCkKLSAgICAgIG9wZXJFbGVtZW50LnNldFByb3BlcnR5QXNTdHJpbmcoV1NETE1vZGVsQ29uc3RhbnRzLlBST1BfU09VUkNFX0NPTlRFTlQsbnVsbCk7Ci0gICAgcmV0dXJuIHJlc3VsdHNWYWxpZDsKLSAgfQotICAKLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NTb3VyY2VWaWV3UGFyc2VkUmVzdWx0c0hlYWRlcihNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIsIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50LCBJU09BUE1lc3NhZ2Ugc29hcE1lc3NhZ2UpIAotICAJdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIHsKLQkgIAotICAgIFN0cmluZyBzb3VyY2VDb250ZW50ID0gcGFyc2VyLmdldFBhcmFtZXRlcihGcmFnbWVudENvbnN0YW50cy5TT1VSQ0VfQ09OVEVOVF9IRUFERVIpOwotICAgIGlmIChzb3VyY2VDb250ZW50ICE9IG51bGwpCi0gICAgICBvcGVyRWxlbWVudC5zZXRQcm9wZXJ0eUFzU3RyaW5nKFdTRExNb2RlbENvbnN0YW50cy5QUk9QX1NPVVJDRV9DT05URU5UX0hFQURFUiwgc291cmNlQ29udGVudCk7ICAgIAotICAgICAgICAgICAKLSAgICBJdGVyYXRvciBpdCA9IG9wZXJFbGVtZW50LmdldFNPQVBIZWFkZXJzKCkuaXRlcmF0b3IoKTsKLSAgICBpZiAoIWl0Lmhhc05leHQoKSkKLSAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIG9wZXJFbGVtZW50LmdldFNPQVBUcmFuc3BvcnRQcm92aWRlcigpLm5ld1RyYW5zcG9ydCgpLm5ld0Rlc2VyaWFsaXplcigpCi0gICAgICAJLmRlc2VyaWFsaXplKElTT0FQTWVzc2FnZS5IRUFERVJfQ09OVEVOVCwgc291cmNlQ29udGVudCwgc29hcE1lc3NhZ2UpOyAgCi0gICAgCQotICAgICAgRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzID0gc29hcE1lc3NhZ2UuZ2V0SGVhZGVyQ29udGVudCgpOwotICAgICAgTWFwIG5hbWVzcGFjZVRhYmxlID0gc29hcE1lc3NhZ2UuZ2V0TmFtZXNwYWNlVGFibGUoKTsKLSAgICAgIAotICAgICAgYm9vbGVhbiBzb3VyY2VFbGVtZW50c1ZhbGlkID0gdHJ1ZTsKLSAgICAgIGludCBzdGFydCA9IDA7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpICYmIHN0YXJ0IDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoKQotICAgICAgewotICAgICAgICBTT0FQSGVhZGVyIHNvYXBIZWFkZXIgPSAoU09BUEhlYWRlcilpdC5uZXh0KCk7Ci0gICAgICAgIFNPQVBIZWFkZXJXcmFwcGVyRnJhZ21lbnQgZnJhZyA9IChTT0FQSGVhZGVyV3JhcHBlckZyYWdtZW50KSBvcGVyRWxlbWVudC5nZXRIZWFkZXJGcmFnbWVudChzb2FwSGVhZGVyKTsKLSAgICAgICAgCi0gICAgICAgIGludCBwb3MgPSBTT0FQTWVzc2FnZVV0aWxzLmZpbmRGaXJzdE1hdGNoaW5nRWxlbWVudCgKLSAgICAgICAgCQlzb2FwSGVhZGVyLmdldEVQYXJ0KCksCi0JCQkJaW5zdGFuY2VEb2N1bWVudHMsCi0JCQkJbmFtZXNwYWNlVGFibGUsCi0JCQkJZnJhZy5nZXROYW1lKCksCi0JCQkJc3RhcnQpOwotCQkJCi0JCWlmIChwb3MgPT0gLTEpCi0JCQljb250aW51ZTsKLQkJCQotCQlFbGVtZW50IGVsZW1lbnQgPSBpbnN0YW5jZURvY3VtZW50c1twb3NdOwotCQlzdGFydCA9IHBvcyArIDE7CQkJCi0gICAgICAgIAotICAgICAgICBpZiAoIWZyYWcuc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnQoZWxlbWVudCwgbmFtZXNwYWNlVGFibGUpKQotICAgICAgICAgIHNvdXJjZUVsZW1lbnRzVmFsaWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBzb3VyY2VFbGVtZW50c1ZhbGlkOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gICAgCi0gIH0KLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzU291cmNlVmlld1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyLCBXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCwgSVNPQVBNZXNzYWdlIHNvYXBNZXNzYWdlKQotICAJdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIHsKLQkgIAotICAgIFN0cmluZyBzb3VyY2VDb250ZW50ID0gcGFyc2VyLmdldFBhcmFtZXRlcihGcmFnbWVudENvbnN0YW50cy5TT1VSQ0VfQ09OVEVOVCk7Ci0gICAgaWYgKHNvdXJjZUNvbnRlbnQgIT0gbnVsbCkKLSAgICAgIG9wZXJFbGVtZW50LnNldFByb3BlcnR5QXNTdHJpbmcoV1NETE1vZGVsQ29uc3RhbnRzLlBST1BfU09VUkNFX0NPTlRFTlQsIHNvdXJjZUNvbnRlbnQpOwotICAgIAotICAgIEl0ZXJhdG9yIGl0ID0gb3BlckVsZW1lbnQuZ2V0T3JkZXJlZEJvZHlQYXJ0cygpLml0ZXJhdG9yKCk7ICAgIAotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIG9wZXJFbGVtZW50LmdldFNPQVBUcmFuc3BvcnRQcm92aWRlcigpLm5ld1RyYW5zcG9ydCgpLm5ld0Rlc2VyaWFsaXplcigpCi0gICAgICAJLmRlc2VyaWFsaXplKElTT0FQTWVzc2FnZS5CT0RZX0NPTlRFTlQsIHNvdXJjZUNvbnRlbnQsIHNvYXBNZXNzYWdlKTsgICAgICAJCi0gICAgCQotICAgICAgRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzID0gc29hcE1lc3NhZ2UuZ2V0Qm9keUNvbnRlbnQoKTsKLSAgICAgIAotICAgICAgYm9vbGVhbiBzb3VyY2VFbGVtZW50c1ZhbGlkID0gdHJ1ZTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFBhcnQgcGFydCA9IChQYXJ0KWl0Lm5leHQoKTsKLSAgICAgICAgSVhTREZyYWdtZW50IGZyYWcgPSBvcGVyRWxlbWVudC5nZXRGcmFnbWVudChwYXJ0KTsKLSAgICAgICAgaWYgKCFmcmFnLnNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhpbnN0YW5jZURvY3VtZW50cykpCi0gICAgICAgICAgc291cmNlRWxlbWVudHNWYWxpZCA9IGZhbHNlOwotICAgICAgfQotICAgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzVmFsaWQ7Ci0gICAgfQotICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcnVuKCkgewotICAgIHJldHVybiB0cnVlOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvVG9nZ2xlV1NETE5hdmlnYXRvck5vZGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1RvZ2dsZVdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0OGNkOTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvVG9nZ2xlV1NETE5hdmlnYXRvck5vZGVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Ub2dnbGVOb2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuVG9vbFR5cGVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIFRvZ2dsZVdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uIGV4dGVuZHMgVG9nZ2xlTm9kZUFjdGlvbgotewotICBwdWJsaWMgVG9nZ2xlV1NETE5hdmlnYXRvck5vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcixjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCkpOwotICB9Ci0KLSAgLy8gdWRkaS9hY3Rpb25zL1RvZ2dsZU5hdmlnYXRvck5vZGVBY3Rpb24uanNwP25vZGVJZD0uLi4mb3Blbj0uLi4KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkLGJvb2xlYW4gb3BlbikKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigid3NkbC9hY3Rpb25zL1RvZ2dsZVdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuT1BFTikuYXBwZW5kKCc9JykuYXBwZW5kKG9wZW4/QWN0aW9uSW5wdXRzLk9QRU5fTk9ERTpBY3Rpb25JbnB1dHMuQ0xPU0VfTk9ERSk7Ci0gICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IHRvIHNlbGVjdCB0aGUgdG9nZ2xlZCBub2RlIHdoZW4sIGF0IHRoZSB0aW1lIG9mCi0gIC8vIHRoZSBjb2xsYXBzZSBldmVudCwgYSBkZXNjZW5kYW50IG5vZGUgd2FzIHNlbGVjdGVkLgotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgewotICAgIFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyID0gdG9nZ2xlZE5vZGVfLmdldFRvb2xNYW5hZ2VyKCk7Ci0gICAgVG9vbCBzZWxlY3RlZFRvb2wgPSB0b29sTWFuYWdlci5nZXRTZWxlY3RlZFRvb2woKTsKLSAgICBpbnQgbm9kZUlkID0gdG9nZ2xlZE5vZGVfLmdldE5vZGVJZCgpOwotICAgIGludCB0b29sSWQgPSBzZWxlY3RlZFRvb2wuZ2V0VG9vbElkKCk7Ci0gICAgaW50IHZpZXdJZCA9IHRvZ2dsZWROb2RlXy5nZXRWaWV3SWQoKTsKLSAgICBpbnQgdmlld1Rvb2xJZCA9IHRvZ2dsZWROb2RlXy5nZXRWaWV3VG9vbElkKCk7Ci0gICAgaWYgKHNlbGVjdGVkVG9vbC5nZXRUb29sVHlwZSgpICE9IFRvb2xUeXBlcy5BQ1RJT04pCi0gICAgICByZXR1cm4gU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkLHRvb2xJZCx2aWV3SWQsdmlld1Rvb2xJZCx0cnVlKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gU2VsZWN0V1NETE5hdmlnYXRvck5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQsdHJ1ZSk7Ci0gIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKQotICAgIHsKLSAgICAgIHJldHVybiAid3NkbE5hdmlnYXRvckNvbnRlbnQiOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkKLSAgICB7Ci0gICAgICByZXR1cm4gIndzZGwvd3NkbF9uYXZpZ2F0b3JfY29udGVudC5qc3AiOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclZhcigpCi0gICAgewotICAgICAgcmV0dXJuICJ3c2RsUHJvcGVydGllc0NvbnRhaW5lciI7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpCi0gICAgewotICAgICAgcmV0dXJuICJ3c2RsL3dzZGxfcHJvcGVydGllc19jb250YWluZXIuanNwIjsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGZpbmFsIGludCBnZXRQZXJzcGVjdGl2ZUlkKCkKLSAgICB7Ci0gICAgICByZXR1cm4gQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1dTREw7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvVXBkYXRlV1NETEJpbmRpbmdBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1VwZGF0ZVdTRExCaW5kaW5nQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZTY2NTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvVXBkYXRlV1NETEJpbmRpbmdBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLldTRExBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExCaW5kaW5nRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5JbnZva2VXU0RMT3BlcmF0aW9uVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5XU0RMQmluZGluZ05vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuV1NETFBlcnNwZWN0aXZlOwotCi1wdWJsaWMgY2xhc3MgVXBkYXRlV1NETEJpbmRpbmdBY3Rpb24gZXh0ZW5kcyBXU0RMUHJvcGVydGllc0Zvcm1BY3Rpb24KLXsKLSAgcHVibGljIFVwZGF0ZVdTRExCaW5kaW5nQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIFN0cmluZ1tdIG5vZGVJZHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIGlmIChub2RlSWRzID09IG51bGwpCi0gICAgICBub2RlSWRzID0gbmV3IFN0cmluZ1swXTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgbm9kZUlkcyk7Ci0gICAgU3RyaW5nW10gZW5kcG9pbnRzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhXU0RMQWN0aW9uSW5wdXRzLkVORF9QT0lOVCk7Ci0gICAgaWYgKGVuZHBvaW50cyA9PSBudWxsKQotICAgICAgZW5kcG9pbnRzID0gbmV3IFN0cmluZ1swXTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoV1NETEFjdGlvbklucHV0cy5FTkRfUE9JTlQsIGVuZHBvaW50cyk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgU3RyaW5nW10gbm9kZUlkcyA9IGdldFByb3BlcnR5QXNTdHJpbmdBcnJheShBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICBTdHJpbmdbXSBlbmRwb2ludHMgPSBnZXRQcm9wZXJ0eUFzU3RyaW5nQXJyYXkoV1NETEFjdGlvbklucHV0cy5FTkRfUE9JTlQpOwotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbm9kZUlkcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgTm9kZSBiaW5kaW5nTm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSWRzW2ldKSk7Ci0gICAgICAgIGlmIChiaW5kaW5nTm9kZSBpbnN0YW5jZW9mIFdTRExCaW5kaW5nTm9kZSkKLSAgICAgICAgewotICAgICAgICAgIFdTRExCaW5kaW5nRWxlbWVudCBiaW5kaW5nRWxlbWVudCA9IChXU0RMQmluZGluZ0VsZW1lbnQpYmluZGluZ05vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgICBTdHJpbmdbXSBlbmRwb2ludHNDb3B5ID0gZW5kcG9pbnRzOwotICAgICAgICAgIGJpbmRpbmdFbGVtZW50LnNldEVuZFBvaW50cyhlbmRwb2ludHNDb3B5KTsKLSAgICAgICAgICBpZiAoZW5kcG9pbnRzQ29weS5sZW5ndGggPD0gMCkKLSAgICAgICAgICAgIGVuZHBvaW50c0NvcHkgPSBiaW5kaW5nRWxlbWVudC5nZXRFbmRQb2ludHMoKTsKLSAgICAgICAgICBpZiAoZW5kcG9pbnRzQ29weS5sZW5ndGggPiAwKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFZlY3RvciBvcGVyYXRpb25Ob2RlcyA9IGJpbmRpbmdOb2RlLmdldENoaWxkTm9kZXMoKTsKLSAgICAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBvcGVyYXRpb25Ob2Rlcy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBOb2RlIG9wZXJhdGlvbk5vZGUgPSAoTm9kZSlpdC5uZXh0KCk7Ci0gICAgICAgICAgICAgIExpc3QgdG9vbHMgPSBvcGVyYXRpb25Ob2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFRvb2xzKCk7Ci0gICAgICAgICAgICAgIGZvciAoSXRlcmF0b3IgdG9vbHNJdGVyYXRvciA9IHRvb2xzLml0ZXJhdG9yKCk7IHRvb2xzSXRlcmF0b3IuaGFzTmV4dCgpOykKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFRvb2wgdG9vbCA9IChUb29sKXRvb2xzSXRlcmF0b3IubmV4dCgpOwotICAgICAgICAgICAgICAgIGlmICh0b29sIGluc3RhbmNlb2YgSW52b2tlV1NETE9wZXJhdGlvblRvb2wpCi0gICAgICAgICAgICAgICAgICAoKEludm9rZVdTRExPcGVyYXRpb25Ub29sKXRvb2wpLnNldEVuZFBvaW50KGVuZHBvaW50c0NvcHlbMF0pOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkKLSAgICAgIHsKLSAgICAgIH0KLSAgICB9Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fVVBEQVRFX1dTRExfQklORElOR19TVUNDRVNTRlVMIikpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9XU0RMQWRkVG9GYXZvcml0ZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1dTRExBZGRUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjJjYmFmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1dTRExBZGRUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuTGlua0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLkZhdm9yaXRlc0ZvbGRlckVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIFdTRExBZGRUb0Zhdm9yaXRlc0FjdGlvbiBleHRlbmRzIExpbmtBY3Rpb24gewotICBwdWJsaWMgV1NETEFkZFRvRmF2b3JpdGVzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc0xpbmtQYXJhbWV0ZXJzKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KSB7Ci0gICAgU3RyaW5nIG5vZGVJRCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIHRyeSB7Ci0gICAgICBJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRCk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgbm9kZUlEKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSUQpIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzZGwvYWN0aW9ucy9XU0RMQ2hlY2tGYXZvcml0ZUV4aXN0c0FjdGlvbkpTUC5qc3A/Iik7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChub2RlSUQpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBmYXZvcml0ZUV4aXN0cygpIHsKLSAgICBTdHJpbmcgd3NkbFVybCA9IGdldFdzZGxVcmwoKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfV1NETF9VUkwsIHdzZGxVcmwpOwotICAgIEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQgZmF2Rm9sZGVyRWxlbWVudCA9IGdldEZhdldTRExGb2xkZXJFbGVtZW50KCk7Ci0gICAgcmV0dXJuIGZhdkZvbGRlckVsZW1lbnQuZmF2b3JpdGVFeGlzdHModGFibGUpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcnVuKCkgewotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICBTdHJpbmcgd3NkbFVybCA9IGdldFdzZGxVcmwoKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfV1NETF9VUkwsIHdzZGxVcmwpOwotICAgIEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQgZmF2Rm9sZGVyRWxlbWVudCA9IGdldEZhdldTRExGb2xkZXJFbGVtZW50KCk7Ci0gICAgaWYgKGZhdkZvbGRlckVsZW1lbnQuYWRkRmF2b3JpdGUodGFibGUpKSB7Ci0gICAgICB3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fQUREX1RPX0ZBVk9SSVRFU19TVUNDRVNTRlVMIiwgd3NkbFVybCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2Uod3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9BRERfVE9fRkFWT1JJVEVTIiwgd3NkbFVybCkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIGdldFdzZGxVcmwoKSB7Ci0gICAgU3RyaW5nIG5vZGVJRCA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciB3c2RsTm9kZU1hbmFnZXIgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBXU0RMRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSAoV1NETEVsZW1lbnQpd3NkbE5vZGVNYW5hZ2VyLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQpKS5nZXRUcmVlRWxlbWVudCgpOwotICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnQuZ2V0V3NkbFVybCgpOwotICB9Ci0KLSAgcHJpdmF0ZSBGYXZvcml0ZXNGb2xkZXJFbGVtZW50IGdldEZhdldTRExGb2xkZXJFbGVtZW50KCkgewotICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBmYXZOb2RlTWFuYWdlciA9IGZhdlBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgVHJlZUVsZW1lbnQgZmF2Um9vdEVsZW1lbnQgPSBmYXZOb2RlTWFuYWdlci5nZXRSb290Tm9kZSgpLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgRW51bWVyYXRpb24gZSA9IGZhdlJvb3RFbGVtZW50LmdldEVsZW1lbnRzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX1NFUlZJQ0VfRk9MREVSX05PREUpOwotICAgIHJldHVybiAoRmF2b3JpdGVzRm9sZGVyRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1dTRExJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvYWN0aW9ucy9XU0RMSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjdjZTM4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1dTRExJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5XU0RMRmlsZU5hbWVIZWxwZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC5XU0RMRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5XU0RMUGVyc3BlY3RpdmU7Ci0KLXB1YmxpYyBjbGFzcyBXU0RMSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbiBleHRlbmRzIEltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbiB7Ci0gIHByaXZhdGUgRGVmaW5pdGlvbiBkZWZpbml0aW9uXzsKLSAgcHJpdmF0ZSBTdHJpbmcgZGVmYXVsdFdTRExGaWxlTmFtZV87Ci0KLSAgcHVibGljIFdTRExJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIGRlZmluaXRpb25fID0gbnVsbDsKLSAgICBkZWZhdWx0V1NETEZpbGVOYW1lXyA9ICJ0ZW1wLndzZGwiOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkLGludCB0b29sSWQsaW50IHZpZXdJZCxpbnQgdmlld1Rvb2xJZCkgewotICAgIHJldHVybiBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQsdG9vbElkLHZpZXdJZCx2aWV3VG9vbElkLCJ3c2RsL2FjdGlvbnMvV1NETEltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb25KU1AuanNwIik7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgYm9vbGVhbiB3cml0ZShPdXRwdXRTdHJlYW0gb3MpIHsKLSAgICByZXR1cm4gd3JpdGVXU0RMRGVmaW5pdGlvbihvcywgZGVmaW5pdGlvbl8pOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXREZWZhdWx0RmlsZU5hbWUoKSB7Ci0gICAgcmV0dXJuIGRlZmF1bHRXU0RMRmlsZU5hbWVfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkgewotICAgIGludCBub2RlSUQ7Ci0gICAgdHJ5IHsKLSAgICAgIG5vZGVJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIH0KLSAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgbm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUobm9kZUlEKTsKLSAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IChXU0RMRWxlbWVudClub2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgZGVmaW5pdGlvbl8gPSB3c2RsRWxlbWVudC5nZXREZWZpbml0aW9uKCk7Ci0gICAgZGVmYXVsdFdTRExGaWxlTmFtZV8gPSBXU0RMRmlsZU5hbWVIZWxwZXIuZ2V0V1NETEZpbGVOYW1lKHdzZGxFbGVtZW50LmdldFdzZGxVcmwoKSk7Ci0gICAgcmV0dXJuIChkZWZpbml0aW9uXyAhPSBudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFZhcigpIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFZhcigpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTdGF0dXNDb250ZW50UGFnZSgpIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFBhZ2UoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjUyYzQ2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1dTRExJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5JbXBvcnRUb1dvcmtiZW5jaEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIFdTRExJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb24gZXh0ZW5kcyBJbXBvcnRUb1dvcmtiZW5jaEFjdGlvbiB7Ci0gIHB1YmxpYyBXU0RMSW1wb3J0V1NETFRvV29ya2JlbmNoQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIEZvcm1Ub29sIGdldFNlbGVjdGVkRm9ybVRvb2woKSB7Ci0gICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgIHJldHVybiAoRm9ybVRvb2wpd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCkuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gIH0KLQotICBwdWJsaWMgSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uIG5ld0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbigpIHsKLSAgICBXU0RMSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbiBhY3Rpb24gPSBuZXcgV1NETEltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSB0YWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICB0YWJsZS5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgU3RyaW5nLnZhbHVlT2Yoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpKSk7Ci0gICAgcmV0dXJuIGFjdGlvbjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFZhcigpIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFZhcigpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTdGF0dXNDb250ZW50UGFnZSgpIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFBhZ2UoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1dTRExMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhOTVlZWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIFdTRExMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uIGV4dGVuZHMgTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbiB7Ci0KLSAgcHVibGljIFdTRExMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIEZvcm1Ub29sIGdldFNlbGVjdGVkRm9ybVRvb2woKSB7Ci0gICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgIHJldHVybiAoRm9ybVRvb2wpd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCkuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKSB7Ci0gICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBub2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgV1NETEVsZW1lbnQgZWxlbWVudCA9IChXU0RMRWxlbWVudClub2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgcmV0dXJuIGxhdW5jaFdpemFyZChlbGVtZW50LmdldFdzZGxVcmwoKSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKSB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldFdTRExQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKSB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldFdTRExQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRQYWdlKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9hY3Rpb25zL1dTRExQcm9wZXJ0aWVzRm9ybUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvV1NETFByb3BlcnRpZXNGb3JtQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ODA4MWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2FjdGlvbnMvV1NETFByb3BlcnRpZXNGb3JtQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkZvcm1BY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFdTRExQcm9wZXJ0aWVzRm9ybUFjdGlvbiBleHRlbmRzIEZvcm1BY3Rpb24KLXsKLSAgcHJvdGVjdGVkIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXJfOwotICBwdWJsaWMgV1NETFByb3BlcnRpZXNGb3JtQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIG5hdmlnYXRvck1hbmFnZXJfID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIFN0cmluZ1tdIGtleXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyTmFtZXMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgU3RyaW5nW10gdmFsdWVzID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhrZXlzW2ldKTsKLSAgICAgIGlmICh2YWx1ZXMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT0gMSkKLSAgICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoa2V5c1tpXSwgdmFsdWVzWzBdKTsKLSAgICAgICAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA+IDEpCi0gICAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KGtleXNbaV0sIHZhbHVlcyk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIE5vZGUgZ2V0U2VsZWN0ZWROYXZpZ2F0b3JOb2RlKCkKLSAgewotICAgIHJldHVybiBuYXZpZ2F0b3JNYW5hZ2VyXy5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgfQotCi0gIHB1YmxpYyBGb3JtVG9vbCBnZXRTZWxlY3RlZEZvcm1Ub29sKCkKLSAgewotICAgIHJldHVybiAoRm9ybVRvb2wpKGdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2NvbnN0YW50cy9CaW5kaW5nVHlwZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9jb25zdGFudHMvQmluZGluZ1R5cGVzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5ZGRhM2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2NvbnN0YW50cy9CaW5kaW5nVHlwZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIEJpbmRpbmdUeXBlcwotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTlNVUFBPUlRFRCA9IC0xOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTT0FQID0gMDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSFRUUF9HRVQgPSAxOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIVFRQX1BPU1QgPSAyOwotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSFRUUF9WRVJCX0dFVCA9ICJHRVQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIVFRQX1ZFUkJfUE9TVCA9ICJQT1NUIjsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9jb25zdGFudHMvRnJhZ21lbnRDb25zdGFudHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9jb25zdGFudHMvRnJhZ21lbnRDb25zdGFudHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAyYzIwYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvY29uc3RhbnRzL0ZyYWdtZW50Q29uc3RhbnRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzA1ICAgMTE3MDM0IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgU2VydmljZXMgRXhwbG9yZXIgc2hvdWxkIHN1cHBvcnQgU09BUCBIZWFkZXJzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzOwotCi1wdWJsaWMgY2xhc3MgRnJhZ21lbnRDb25zdGFudHMKLXsKLSAgLy8gWFNEIG1pbk9jY3VycyBhbmQgbWF4T2NjdXJzCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfTUlOX09DQ1VSUyA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfTUFYX09DQ1VSUyA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVOQk9VTkRFRCA9IC0xOwotCi0gIC8vIFdTREwgc3R5bGUKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RZTEVfRE9DVU1FTlQgPSAwOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVFlMRV9SUEMgPSAxOwotCi0gIC8vIFdTREwgRW5jb2Rpbmcgc3R5bGVzCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVOQ09ESU5HX0xJVEVSQUwgPSAwOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFTkNPRElOR19TT0FQID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRU5DT0RJTkdfVVJMID0gMjsgLy8gSFRUUCBHZXQvUG9zdAotCi0gIC8vIElEcyB1c2VkIGJ5IHRoZSBmcmFnbWVudCBtb2RlbAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJRF9TRVBFUkFUT1IgPSAiOjoiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJTlBVVF9JRCA9ICI6OmlucHV0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1VUUFVUX0lEID0gIjo6b3V0cHV0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFCTEVfSUQgPSAiOjp0YWJsZUlEIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRlJBR01FTlRfSUQgPSAiOjpmcmFnbWVudElEIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9BTkNIT1JfSUQgPSAiOjpuYW1lQW5jaG9ySUQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGUkFHTUVOVF9WSUVXX0lEID0gIjo6ZnJhZ21lbnRWaWV3SUQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBYU0RfQVRPTUlDX0VOVU1fSUQgPSAiOjp4c2RBdG9taWNFbnVtSUQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBYU0RfQUxMX0dST1VQX0lEID0gIjo6eHNkQWxsR3JvdXBJRCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlRfVE9LRU4gPSAiXiI7Ci0KLSAgLy8gRnJhZ21lbnQgdmlldyBJRHMKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRlJBR01FTlRfVklFV19TV0lUQ0hfRk9STV9UT19TT1VSQ0UgPSAiOjpmcmFnbWVudFZpZXdTd2l0Y2hGb3JtVG9Tb3VyY2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGUkFHTUVOVF9WSUVXX1NXSVRDSF9TT1VSQ0VfVE9fRk9STSA9ICI6OmZyYWdtZW50Vmlld1N3aXRjaFNvdXJjZVRvRm9ybSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNPVVJDRV9DT05URU5UX0hFQURFUiA9ICI6OnNvdXJjZUNvbnRlbnRIZWFkZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTT1VSQ0VfQ09OVEVOVCA9ICI6OnNvdXJjZUNvbnRlbnQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTT1VSQ0VfQ09OVEVOVF9OQU1FU1BBQ0UgPSAiOjpzb3VyY2VDb250ZW50TlMiOwotCi0gIC8vIEFjdGlvbiBpbnB1dCBjb25zdGFudHMKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9BTkNIT1IgPSAibmFtZUFuY2hvciI7Ci0KLSAgLy8gTmFtZXNwYWNlcyBjb250YW50cwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVUklfWFNEID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVJJX1NPQVAgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVUklfU09BUF9FTlYgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVUklfV1NETCA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVSSV9YU0kgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTT0FQX0VOQ19BUlJBWV9UWVBFID0gImFycmF5VHlwZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFhTSV9UWVBFID0gInR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRTkFNRV9QUkVGSVggPSAicSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFOQU1FX0xPQ0FMX05BTUVfQVJSQVlfVFlQRSA9ICJhcnJheVR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRTkFNRV9MT0NBTF9OQU1FX0FSUkFZID0gIkFycmF5IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09MT04gPSAiOiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFFOQU1FX0xPQ0FMX05BTUVfSEVBREVSID0gIkhlYWRlciI7ICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUU5BTUVfTE9DQUxfTkFNRV9CT0RZID0gIkJvZHkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBRTkFNRV9MT0NBTF9OQU1FX0ZBVUxUID0gIkZhdWx0IjsKLQotICAvLyBMaXN0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExJU1RfU0VQRVJBVE9SID0gIiAiOwotCi0gIC8vIFNPQVAtRU5DOkFycmF5Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExFRlRfU1FVQVJFX0JSQUNLRVQgPSAiWyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJJR0hUX1NRVUFSRV9CUkFDS0VUID0gIl0iOwotCi0gIC8vIFhTRERlZmF1bHRGcmFnbWVudAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBST09UX0VMRU1FTlRfU1RBUlRfVEFHID0gIjxyb290PiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJPT1RfRUxFTUVOVF9FTkRfVEFHID0gIjwvcm9vdD4iOwotCi0gIC8vIE5hbWVzcGFjZSBVUklzLgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfWE1MTlMgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfU09BUF9FTlYgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfU09BUF9FTkMgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfMTk5OV9TQ0hFTUFfWFNJID0gImh0dHA6Ly93d3cudzMub3JnLzE5OTkvWE1MU2NoZW1hLWluc3RhbmNlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfVVJJXzE5OTlfU0NIRU1BX1hTRCA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hNTFNjaGVtYSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV8yMDAwX1NDSEVNQV9YU0kgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8xMC9YTUxTY2hlbWEtaW5zdGFuY2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfMjAwMF9TQ0hFTUFfWFNEID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMTAvWE1MU2NoZW1hIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfVVJJXzIwMDFfU0NIRU1BX1hTSSA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV8yMDAxX1NDSEVNQV9YU0QgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfQ1VSUkVOVF9TQ0hFTUFfWFNJID0gTlNfVVJJXzIwMDFfU0NIRU1BX1hTSTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfVVJJX0NVUlJFTlRfU0NIRU1BX1hTRCA9IE5TX1VSSV8yMDAxX1NDSEVNQV9YU0Q7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV9YTUxfU09BUCA9ICJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfWE1MX1NPQVBfREVQTE9ZTUVOVCA9ICJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAvZGVwbG95bWVudCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV9MSVRFUkFMX1hNTCA9ICJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAvbGl0ZXJhbHhtbCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV9YTUlfRU5DID0gImh0dHA6Ly93d3cuaWJtLmNvbS9uYW1lc3BhY2VzL3htaSI7Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2NvbnN0YW50cy9XU0RMQWN0aW9uSW5wdXRzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvY29uc3RhbnRzL1dTRExBY3Rpb25JbnB1dHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM1NGI4ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvY29uc3RhbnRzL1dTRExBY3Rpb25JbnB1dHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMDUgICAxMTcwMzQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBzaG91bGQgc3VwcG9ydCBTT0FQIEhlYWRlcnMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHM7Ci0KLXB1YmxpYyBjbGFzcyBXU0RMQWN0aW9uSW5wdXRzCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZSQU1FU0VUX0NPTFNfUEVSU1BFQ1RJVkVfQ09OVEVOVCA9ICJmcmFtZXNldENvbHNQZXJzcGVjdGl2ZUNvbnRlbnQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSID0gImZyYW1lc2V0Um93c0FjdGlvbnNDb250YWluZXIiOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFU1NJT05fSUQgPSAic2Vzc2lvbklEIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRlJBR01FTlRfSUQgPSAiZnJhZ21lbnRJRCI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09BUF9FTlZFTE9QRV9UWVBFID0gInNvYXBFbnZlbG9wZVR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTT0FQX0VOVkVMT1BFX1RZUEVfUkVRVUVTVCA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNPQVBfRU5WRUxPUEVfVFlQRV9SRVNQT05TRSA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNPQVBfUkVTUE9OU0VfQ0FDSEVEID0gInNvYXBSZXNwb25zZUNhY2hlZCI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1VCTUlTU0lPTl9BQ1RJT04gPSAic3VibWlzc2lvbkFjdGlvbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNVQk1JU1NJT05fQUNUSU9OX0ZPUk0gPSAic3VibWlzc2lvbkFjdGlvbkZvcm0iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVUJNSVNTSU9OX0FDVElPTl9CUk9XU0VfRklMRV9IRUFERVIgPSAic3VibWlzc2lvbkFjdGlvbkJyb3dzZUZpbGVIZWFkZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVUJNSVNTSU9OX0FDVElPTl9CUk9XU0VfRklMRSA9ICJzdWJtaXNzaW9uQWN0aW9uQnJvd3NlRmlsZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNVQk1JU1NJT05fQUNUSU9OX1NBVkVfQVNfSEVBREVSID0gInN1Ym1pc3Npb25BY3Rpb25TYXZlQXNIZWFkZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVUJNSVNTSU9OX0FDVElPTl9TQVZFX0FTID0gInN1Ym1pc3Npb25BY3Rpb25TYXZlQXMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRUxFQ1RFRF9GSUxFX0hFQURFUiA9ICJzZWxlY3RlZEZpbGVIZWFkZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRUxFQ1RFRF9GSUxFID0gInNlbGVjdGVkRmlsZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9QRVJBVElPTl9FTEVNRU5UID0gIm9wZXJhdGlvbkVsZW1lbnQiOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVORF9QT0lOVCA9ICI6OmVuZFBvaW50IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSFRUUF9CQVNJQ19BVVRIX1VTRVJOQU1FID0gImh0dHBCYXNpY0F1dGhVc2VybmFtZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhUVFBfQkFTSUNfQVVUSF9QQVNTV09SRCA9ICJodHRwQmFzaWNBdXRoUGFzc3dvcmQiOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2NvbnN0YW50cy9XU0RMRnJhbWVOYW1lcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2NvbnN0YW50cy9XU0RMRnJhbWVOYW1lcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzk2MGM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9jb25zdGFudHMvV1NETEZyYW1lTmFtZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIFdTRExGcmFtZU5hbWVzCi17Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFdTRExfTkFWSUdBVE9SX0NPTlRBSU5FUiA9ICJ3c2RsX25hdmlnYXRvcl9jb250YWluZXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0RMX05BVklHQVRPUl9UT09MQkFSID0gIndzZGxfbmF2aWdhdG9yX3Rvb2xiYXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0RMX05BVklHQVRPUl9DT05URU5UID0gIndzZGxfbmF2aWdhdG9yX2NvbnRlbnQiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0RMX0FDVElPTlNfQ09OVEFJTkVSID0gIndzZGxfYWN0aW9uc19jb250YWluZXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0RMX1BST1BFUlRJRVNfQ09OVEFJTkVSID0gIndzZGxfcHJvcGVydGllc19jb250YWluZXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0RMX1BST1BFUlRJRVNfVE9PTEJBUiA9ICJ3c2RsX3Byb3BlcnRpZXNfdG9vbGJhciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFdTRExfUFJPUEVSVElFU19DT05URU5UID0gIndzZGxfcHJvcGVydGllc19jb250ZW50IjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NETF9TVEFUVVNfQ09OVEFJTkVSID0gIndzZGxfc3RhdHVzX2NvbnRhaW5lciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFdTRExfU1RBVFVTX1RPT0xCQVIgPSAid3NkbF9zdGF0dXNfdG9vbGJhciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFdTRExfU1RBVFVTX0NPTlRFTlQgPSAid3NkbF9zdGF0dXNfY29udGVudCI7Ci0KLSAgLy8gWFNEIEluZm8gRGlhbG9nCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFhTRF9JTkZPX1RPT0xCQVIgPSAieHNkX2luZm9fdG9vbGJhciI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFhTRF9JTkZPX0NPTlRFTlQgPSAieHNkX2luZm9fY29udGVudCI7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvY29uc3RhbnRzL1dTRExNb2RlbENvbnN0YW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2NvbnN0YW50cy9XU0RMTW9kZWxDb25zdGFudHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzliOWZiYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvY29uc3RhbnRzL1dTRExNb2RlbENvbnN0YW50cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDMwNSAgIDExNzAzNCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHNob3VsZCBzdXBwb3J0IFNPQVAgSGVhZGVycwotICogMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIFdTRExNb2RlbENvbnN0YW50cwotewotICAgIC8vIFJlbGF0aW9uCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVMX1dTREwgPSAicmVsV1NETCI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVMX1dTRExfU0VSVklDRSA9ICJyZWxXU0RMU2VydmljZSI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVMX1dTRExfQklORElORyA9ICJyZWxXU0RMQmluZGluZyI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVMX1dTRExfT1BFUkFUSU9OID0gInJlbFdTRExPcGVyYXRpb24iOwotCi0gICAgLy8gRG9jdW1lbnRhdGlvbgotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBST1BfRE9DVU1FTlRBVElPTiA9ICJwcm9wRG9jdW1lbnRhdGlvbiI7Ci0KLSAgICAvLyBTb3VyY2UgQ29udGVudAotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBST1BfU09VUkNFX0NPTlRFTlRfSEVBREVSID0gInByb3BTb3VyY2VDb250ZW50SGVhZGVyIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QX1NPVVJDRV9DT05URU5UID0gInByb3BTb3VyY2VDb250ZW50IjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QX1NPVVJDRV9DT05URU5UX05BTUVTUEFDRSA9ICJwcm9wU291cmNlQ29udGVudE5TIjsKLSAgICAKLSAgICAvLyBUcmFuc3BvcnQKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QX1NPQVBfUkVRVUVTVF9UTVAgPSAicHJvcFNPQVBSZXF1ZXN0VG1wIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QX1NPQVBfUkVRVUVTVCA9ICJwcm9wU09BUFJlcXVlc3QiOyAgICAKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQUk9QX1NPQVBfUkVTUE9OU0UgPSAicHJvcFNPQVBSZXNwb25zZSI7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZGF0YW1vZGVsL0VuZHBvaW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZGF0YW1vZGVsL0VuZHBvaW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZDdkMTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2RhdGFtb2RlbC9FbmRwb2ludC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbDsKLQotcHVibGljIGNsYXNzIEVuZHBvaW50Ci17Ci0gIHByaXZhdGUgU3RyaW5nIGVuZHBvaW50OwotICBwcml2YXRlIGJvb2xlYW4gcmVxdWlyZUhUVFBCYXNpY0F1dGg7Ci0gIHByaXZhdGUgU3RyaW5nIGh0dHBCYXNpY0F1dGhVc2VybmFtZTsKLSAgcHJpdmF0ZSBTdHJpbmcgaHR0cEJhc2ljQXV0aFBhc3N3b3JkOwotICAKLSAgcHVibGljIEVuZHBvaW50KCkKLSAgewotICAgIGVuZHBvaW50ID0gbnVsbDsKLSAgICByZXF1aXJlSFRUUEJhc2ljQXV0aCA9IGZhbHNlOwotICAgIGh0dHBCYXNpY0F1dGhVc2VybmFtZSA9IG51bGw7Ci0gICAgaHR0cEJhc2ljQXV0aFBhc3N3b3JkID0gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RW5kcG9pbnQoKQotICB7Ci0gICAgcmV0dXJuIGVuZHBvaW50OwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRFbmRwb2ludChTdHJpbmcgZW5kcG9pbnQpCi0gIHsKLSAgICB0aGlzLmVuZHBvaW50ID0gZW5kcG9pbnQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGlzUmVxdWlyZUhUVFBCYXNpY0F1dGgoKQotICB7Ci0gICAgcmV0dXJuIHJlcXVpcmVIVFRQQmFzaWNBdXRoOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRSZXF1aXJlSFRUUEJhc2ljQXV0aChib29sZWFuIHJlcXVpcmVIVFRQQmFzaWNBdXRoKQotICB7Ci0gICAgdGhpcy5yZXF1aXJlSFRUUEJhc2ljQXV0aCA9IHJlcXVpcmVIVFRQQmFzaWNBdXRoOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldEh0dHBCYXNpY0F1dGhVc2VybmFtZSgpCi0gIHsKLSAgICByZXR1cm4gaHR0cEJhc2ljQXV0aFVzZXJuYW1lOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRIdHRwQmFzaWNBdXRoVXNlcm5hbWUoU3RyaW5nIGh0dHBCYXNpY0F1dGhVc2VybmFtZSkKLSAgewotICAgIHRoaXMuaHR0cEJhc2ljQXV0aFVzZXJuYW1lID0gaHR0cEJhc2ljQXV0aFVzZXJuYW1lOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldEh0dHBCYXNpY0F1dGhQYXNzd29yZCgpCi0gIHsKLSAgICByZXR1cm4gaHR0cEJhc2ljQXV0aFBhc3N3b3JkOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRIdHRwQmFzaWNBdXRoUGFzc3dvcmQoU3RyaW5nIGh0dHBCYXNpY0F1dGhQYXNzd29yZCkKLSAgewotICAgIHRoaXMuaHR0cEJhc2ljQXV0aFBhc3N3b3JkID0gaHR0cEJhc2ljQXV0aFBhc3N3b3JkOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZGF0YW1vZGVsL1dTRExCaW5kaW5nRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2RhdGFtb2RlbC9XU0RMQmluZGluZ0VsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU5Nzg4OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZGF0YW1vZGVsL1dTRExCaW5kaW5nRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkJpbmRpbmdUeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuV1NETE1vZGVsQ29uc3RhbnRzOwotCi1wdWJsaWMgY2xhc3MgV1NETEJpbmRpbmdFbGVtZW50IGV4dGVuZHMgV1NETENvbW1vbkVsZW1lbnQKLXsKLSAgcHJpdmF0ZSBpbnQgYmluZGluZ1R5cGVfOwotICBwcml2YXRlIEJpbmRpbmcgYmluZGluZ187Ci0gIHByaXZhdGUgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgYmluZGluZ0V4dGVuc2liaWxpdHlFbGVtZW50XzsKLSAgcHJpdmF0ZSBWZWN0b3IgZW5kUG9pbnRzXzsKLQotICBwcml2YXRlIGZpbmFsIHZvaWQgc2V0QmluZGluZ0V4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgewotICAgIGJpbmRpbmdFeHRlbnNpYmlsaXR5RWxlbWVudF8gPSBudWxsOwotICAgIGJpbmRpbmdUeXBlXyA9IEJpbmRpbmdUeXBlcy5VTlNVUFBPUlRFRDsKLSAgICBMaXN0IGV4dGVuc2liaWxpdHlFbGVtZW50cyA9IGJpbmRpbmdfLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIGZvciAoSXRlcmF0b3IgaSA9IGV4dGVuc2liaWxpdHlFbGVtZW50cy5pdGVyYXRvcigpO2kuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWkubmV4dCgpOwotICAgICAgaWYgKGUgaW5zdGFuY2VvZiBIVFRQQmluZGluZykKLSAgICAgIHsKLSAgICAgICAgSFRUUEJpbmRpbmcgYmluZGluZyA9IChIVFRQQmluZGluZyllOwotICAgICAgICBTdHJpbmcgdmVyYiA9IGJpbmRpbmcuZ2V0VmVyYigpOwotICAgICAgICBpZiAoQmluZGluZ1R5cGVzLkhUVFBfVkVSQl9HRVQuZXF1YWxzKHZlcmIpKQotICAgICAgICAgIGJpbmRpbmdUeXBlXyA9IEJpbmRpbmdUeXBlcy5IVFRQX0dFVDsKLSAgICAgICAgZWxzZSBpZiAoQmluZGluZ1R5cGVzLkhUVFBfVkVSQl9QT1NULmVxdWFscyh2ZXJiKSkKLSAgICAgICAgICBiaW5kaW5nVHlwZV8gPSBCaW5kaW5nVHlwZXMuSFRUUF9QT1NUOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoZSBpbnN0YW5jZW9mIFNPQVBCaW5kaW5nKQotICAgICAgICBiaW5kaW5nVHlwZV8gPSBCaW5kaW5nVHlwZXMuU09BUDsKLSAgICAgIGlmIChiaW5kaW5nVHlwZV8gIT0gQmluZGluZ1R5cGVzLlVOU1VQUE9SVEVEKQotICAgICAgewotICAgICAgICBiaW5kaW5nRXh0ZW5zaWJpbGl0eUVsZW1lbnRfID0gZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgV1NETEJpbmRpbmdFbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICAgIHNldEJpbmRpbmcoYmluZGluZyk7Ci0gICAgZW5kUG9pbnRzXyA9IG5ldyBWZWN0b3IoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEJpbmRpbmcoQmluZGluZyBiaW5kaW5nKSB7Ci0gICAgYmluZGluZ18gPSBiaW5kaW5nOwotICAgIHNldERvY3VtZW50YXRpb24oYmluZGluZy5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBzZXRCaW5kaW5nRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgfQotCi0gIHB1YmxpYyBCaW5kaW5nIGdldEJpbmRpbmcoKSB7Ci0gICAgcmV0dXJuIGJpbmRpbmdfOwotICB9Ci0gIAotICBwdWJsaWMgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZ2V0QmluZGluZ0V4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgewotICAgIHJldHVybiBiaW5kaW5nRXh0ZW5zaWJpbGl0eUVsZW1lbnRfOwotICB9Ci0gIAotICBwdWJsaWMgaW50IGdldEJpbmRpbmdUeXBlKCkKLSAgewotICAgIHJldHVybiBiaW5kaW5nVHlwZV87Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgcmVzZXRFbmRQb2ludHMoKQotICB7Ci0gICAgV1NETFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFdTRExTZXJ2aWNlRWxlbWVudClnZXRQYXJlbnRFbGVtZW50KCk7Ci0gICAgU3RyaW5nIGZpeGVkRW5kcG9pbnRTdHJpbmcgPSBzZXJ2aWNlRWxlbWVudC5nZXRBZGRyZXNzTG9jYXRpb24oYmluZGluZ18pOwotICAgIEVuZHBvaW50IGZpeGVkRW5kcG9pbnQgPSBnZXRFbmRwb2ludChmaXhlZEVuZHBvaW50U3RyaW5nKTsKLSAgICBpZiAoZml4ZWRFbmRwb2ludCA9PSBudWxsKQotICAgIHsKLSAgICAgIGZpeGVkRW5kcG9pbnQgPSBuZXcgRW5kcG9pbnQoKTsKLSAgICAgIGZpeGVkRW5kcG9pbnQuc2V0RW5kcG9pbnQoZml4ZWRFbmRwb2ludFN0cmluZyk7Ci0gICAgfQotICAgIGVuZFBvaW50c18uY2xlYXIoKTsKLSAgICBlbmRQb2ludHNfLmFkZChmaXhlZEVuZHBvaW50KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRFbmRQb2ludHMoKQotICB7Ci0gICAgU3RyaW5nW10gZW5kUG9pbnRzID0gbmV3IFN0cmluZ1tlbmRQb2ludHNfLnNpemUoKV07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlbmRQb2ludHMubGVuZ3RoOyBpKyspCi0gICAgICBlbmRQb2ludHNbaV0gPSAoKEVuZHBvaW50KWVuZFBvaW50c18uZ2V0KGkpKS5nZXRFbmRwb2ludCgpOwotICAgIHJldHVybiBlbmRQb2ludHM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBFbmRwb2ludCBnZXRFbmRwb2ludChTdHJpbmcgZW5kcG9pbnRTdHJpbmcpCi0gIHsKLSAgICBpZiAoZW5kcG9pbnRTdHJpbmcgIT0gbnVsbCAmJiBlbmRwb2ludFN0cmluZy5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IGVuZFBvaW50c18uaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgIHsKLSAgICAgICAgRW5kcG9pbnQgZW5kcG9pbnQgPSAoRW5kcG9pbnQpaXQubmV4dCgpOwotICAgICAgICBpZiAoZW5kcG9pbnRTdHJpbmcuZXF1YWxzKGVuZHBvaW50LmdldEVuZHBvaW50KCkpKQotICAgICAgICAgIHJldHVybiBlbmRwb2ludDsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRFbmRQb2ludHMoU3RyaW5nW10gZW5kcG9pbnRzKQotICB7Ci0gICAgVmVjdG9yIGVuZHBvaW50VmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZW5kcG9pbnRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIEVuZHBvaW50IGVuZHBvaW50ID0gZ2V0RW5kcG9pbnQoZW5kcG9pbnRzW2ldKTsKLSAgICAgIGlmIChlbmRwb2ludCA9PSBudWxsKQotICAgICAgewotICAgICAgICBlbmRwb2ludCA9IG5ldyBFbmRwb2ludCgpOwotICAgICAgICBlbmRwb2ludC5zZXRFbmRwb2ludChlbmRwb2ludHNbaV0pOwotICAgICAgfQotICAgICAgZW5kcG9pbnRWZWN0b3IuYWRkKGVuZHBvaW50KTsKLSAgICB9Ci0gICAgcmVzZXRFbmRQb2ludHMoKTsKLSAgICBlbmRQb2ludHNfLmFkZEFsbChlbmRwb2ludFZlY3Rvcik7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRFbmRQb2ludChTdHJpbmcgZW5kcG9pbnRTdHJpbmcpCi0gIHsKLSAgICBpZiAoZW5kcG9pbnRTdHJpbmcgIT0gbnVsbCAmJiBlbmRwb2ludFN0cmluZy5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgRW5kcG9pbnQgZW5kcG9pbnQgPSBuZXcgRW5kcG9pbnQoKTsKLSAgICAgIGVuZHBvaW50LnNldEVuZHBvaW50KGVuZHBvaW50U3RyaW5nKTsKLSAgICAgIGVuZFBvaW50c18uYWRkKGVuZHBvaW50KTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmVFbmRQb2ludChTdHJpbmcgZW5kcG9pbnRTdHJpbmcpCi0gIHsKLSAgICBpZiAoZW5kcG9pbnRTdHJpbmcgIT0gbnVsbCAmJiBlbmRwb2ludFN0cmluZy5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgV1NETFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFdTRExTZXJ2aWNlRWxlbWVudClnZXRQYXJlbnRFbGVtZW50KCk7Ci0gICAgICBTdHJpbmcgZml4ZWRFbmRwb2ludFN0cmluZyA9IHNlcnZpY2VFbGVtZW50LmdldEFkZHJlc3NMb2NhdGlvbihiaW5kaW5nXyk7Ci0gICAgICBpZiAoZml4ZWRFbmRwb2ludFN0cmluZyA9PSBudWxsIHx8ICFmaXhlZEVuZHBvaW50U3RyaW5nLmVxdWFscyhlbmRwb2ludFN0cmluZykpCi0gICAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZW5kUG9pbnRzXy5zaXplKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIGlmIChlbmRwb2ludFN0cmluZy5lcXVhbHMoKChFbmRwb2ludCllbmRQb2ludHNfLmdldChpKSkuZ2V0RW5kcG9pbnQoKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgZW5kUG9pbnRzXy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBidWlsZE1vZGVsKCkgewotICAgIHJlc2V0RW5kUG9pbnRzKCk7Ci0gICAgaWYgKGJpbmRpbmdfICE9IG51bGwpIHsKLSAgICAgIFBvcnRUeXBlIHB0ID0gYmluZGluZ18uZ2V0UG9ydFR5cGUoKTsKLSAgICAgIGlmIChwdCAhPSBudWxsKSB7Ci0gICAgICAgIExpc3Qgb3BlcmF0aW9ucyA9IHB0LmdldE9wZXJhdGlvbnMoKTsKLSAgICAgICAgSGFzaE1hcCBvcGVyYXRpb25zTWFwID0gbmV3IEhhc2hNYXAoKTsKLSAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG9wZXJhdGlvbnMuaXRlcmF0b3IoKTtpdC5oYXNOZXh0KCk7KSB7Ci0gICAgICAgICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IChPcGVyYXRpb24paXQubmV4dCgpOwotICAgICAgICAgIG9wZXJhdGlvbnNNYXAucHV0KGNyZWF0ZU9wZXJhdGlvblVuaXF1ZU5hbWUob3BlcmF0aW9uKSwgb3BlcmF0aW9uKTsKLSAgICAgICAgfQotICAgICAgICBXU0RMT3BlcmF0aW9uRWxlbWVudFtdIHdzZGxPcGVyYXRpb25FbGVtZW50cyA9IG5ldyBXU0RMT3BlcmF0aW9uRWxlbWVudFtnZXROdW1iZXJPZkVsZW1lbnRzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9PUEVSQVRJT04pXTsKLSAgICAgICAgRW51bWVyYXRpb24gZSA9IGdldEVsZW1lbnRzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9PUEVSQVRJT04pOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdzZGxPcGVyYXRpb25FbGVtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgIHdzZGxPcGVyYXRpb25FbGVtZW50c1tpXSA9IChXU0RMT3BlcmF0aW9uRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3c2RsT3BlcmF0aW9uRWxlbWVudHMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICBTdHJpbmcgb3BlcmF0aW9uTmFtZSA9IGNyZWF0ZU9wZXJhdGlvblVuaXF1ZU5hbWUod3NkbE9wZXJhdGlvbkVsZW1lbnRzW2pdLmdldE9wZXJhdGlvbigpKTsKLSAgICAgICAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gKE9wZXJhdGlvbilvcGVyYXRpb25zTWFwLmdldChvcGVyYXRpb25OYW1lKTsKLSAgICAgICAgICBpZiAob3BlcmF0aW9uICE9IG51bGwpIHsKLSAgICAgICAgICAgIG9wZXJhdGlvbnNNYXAucmVtb3ZlKG9wZXJhdGlvbk5hbWUpOwotICAgICAgICAgICAgd3NkbE9wZXJhdGlvbkVsZW1lbnRzW2pdLnNldE9wZXJhdGlvbih0aGlzLCBvcGVyYXRpb24pOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBkaXNjb25uZWN0KHdzZGxPcGVyYXRpb25FbGVtZW50c1tqXSwgV1NETE1vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX09QRVJBVElPTik7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG9wZXJhdGlvbnNNYXAudmFsdWVzKCkuaXRlcmF0b3IoKTtpdC5oYXNOZXh0KCk7KSB7Ci0gICAgICAgICAgT3BlcmF0aW9uIG9wZXIgPSAoT3BlcmF0aW9uKWl0Lm5leHQoKTsKLSAgICAgICAgICBXU0RMT3BlcmF0aW9uRWxlbWVudCB3c2RsT3BlcmF0aW9uRWxlbWVudCA9IG5ldyBXU0RMT3BlcmF0aW9uRWxlbWVudChvcGVyLmdldE5hbWUoKSwgdGhpcywgb3Blcik7Ci0gICAgICAgICAgY29ubmVjdCh3c2RsT3BlcmF0aW9uRWxlbWVudCxXU0RMTW9kZWxDb25zdGFudHMuUkVMX1dTRExfT1BFUkFUSU9OLE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBjcmVhdGVPcGVyYXRpb25VbmlxdWVOYW1lKE9wZXJhdGlvbiBvcGVyYXRpb24pCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgbmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBuYW1lLmFwcGVuZChvcGVyYXRpb24uZ2V0TmFtZSgpKTsKLSAgICBJbnB1dCBpbnB1dE1zZyA9IG9wZXJhdGlvbi5nZXRJbnB1dCgpOwotICAgIGlmIChpbnB1dE1zZyAhPSBudWxsKQotICAgIHsKLSAgICAgIFFOYW1lIHFuYW1lID0gaW5wdXRNc2cuZ2V0TWVzc2FnZSgpLmdldFFOYW1lKCk7Ci0gICAgICBuYW1lLmFwcGVuZChxbmFtZS5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgICBuYW1lLmFwcGVuZCgiOiIpOwotICAgICAgbmFtZS5hcHBlbmQocW5hbWUuZ2V0TG9jYWxQYXJ0KCkpOwotICAgIH0KLSAgICBPdXRwdXQgb3V0cHV0TXNnID0gb3BlcmF0aW9uLmdldE91dHB1dCgpOwotICAgIGlmIChvdXRwdXRNc2cgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBRTmFtZSBxbmFtZSA9IG91dHB1dE1zZy5nZXRNZXNzYWdlKCkuZ2V0UU5hbWUoKTsKLSAgICAgIG5hbWUuYXBwZW5kKHFuYW1lLmdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICAgIG5hbWUuYXBwZW5kKCI6Iik7Ci0gICAgICBuYW1lLmFwcGVuZChxbmFtZS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgfQotICAgIHJldHVybiBuYW1lLnRvU3RyaW5nKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9kYXRhbW9kZWwvV1NETENvbW1vbkVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9kYXRhbW9kZWwvV1NETENvbW1vbkVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU4Y2EzYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZGF0YW1vZGVsL1dTRExDb21tb25FbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5YTUxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuV1NETE1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotcHVibGljIGNsYXNzIFdTRExDb21tb25FbGVtZW50IGV4dGVuZHMgVHJlZUVsZW1lbnQKLXsKLQotICBwdWJsaWMgV1NETENvbW1vbkVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsKSB7Ci0gICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFRyZWVFbGVtZW50IGdldFBhcmVudEVsZW1lbnQoKSB7Ci0gICAgICByZXR1cm4gKFRyZWVFbGVtZW50KWdldEVsZW1lbnRzKE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUikubmV4dEVsZW1lbnQoKTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgc2V0RG9jdW1lbnRhdGlvbihOb2RlIGRvY3VtZW50YXRpb25FbGVtZW50KQotICB7Ci0gICAgU3RyaW5nIGRvY3VtZW50YXRpb24gPSAiIjsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAoZG9jdW1lbnRhdGlvbkVsZW1lbnQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgRG9jdW1lbnQgZG9jID0gWE1MVXRpbHMuY3JlYXRlTmV3RG9jdW1lbnQobnVsbCk7Ci0gICAgICAgIERvY3VtZW50RnJhZ21lbnQgZGYgPSBkb2MuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICBOb2RlTGlzdCBkb2N1bWVudGF0aW9uTm9kZXMgPSBkb2N1bWVudGF0aW9uRWxlbWVudC5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPGRvY3VtZW50YXRpb25Ob2Rlcy5nZXRMZW5ndGgoKTtpKyspCi0gICAgICAgICAgZGYuYXBwZW5kQ2hpbGQoZG9jLmltcG9ydE5vZGUoZG9jdW1lbnRhdGlvbk5vZGVzLml0ZW0oaSksdHJ1ZSkpOwotICAgICAgICBkb2N1bWVudGF0aW9uID0gWE1MVXRpbHMuc2VyaWFsaXplKGRmLHRydWUpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICB9Ci0gICAgc2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9ET0NVTUVOVEFUSU9OLGRvY3VtZW50YXRpb24pOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZGF0YW1vZGVsL1dTRExFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZGF0YW1vZGVsL1dTRExFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MzU2MTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2RhdGFtb2RlbC9XU0RMRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDcxNyAgIDE0NjcwNyBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqIDIwMDcwMTI0ICAgMTY3NDg3IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgwMTE1ICAgMjE0OTU1IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqIDIwMDgxMTE5ICAgMjU1Mzc0IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgV1NFIGRvZXMgbm90IGhhbmRsZSB1dGYtOCBjaGFyYWN0ZXJzIGluIFVSTHMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWw7Ci0KLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkk7Ci1pbXBvcnQgamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3RJdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlU2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnVyaXJlc29sdmVyLmludGVybmFsLnV0aWwuVVJJRW5jb2RlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuY29tbW9uLkhUVFBVdGlsaXR5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5VUkxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuTmV0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuV2ViU2VydmljZXNQYXJzZXJFeHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0REaWFnbm9zdGljOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0REaWFnbm9zdGljU2V2ZXJpdHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hRGlyZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5pbXBsLlhTRFNjaGVtYUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC51dGlsLlhTRFJlc291cmNlRmFjdG9yeUltcGw7Ci0KLXB1YmxpYyBjbGFzcyBXU0RMRWxlbWVudCBleHRlbmRzIFdTRExDb21tb25FbGVtZW50Ci17Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgd3NkbFVybF87Ci0gIHByaXZhdGUgRGVmaW5pdGlvbiBkZWZpbml0aW9uXzsKLSAgcHJpdmF0ZSBWZWN0b3Igc2NoZW1hTGlzdF87Ci0gIHByaXZhdGUgVmVjdG9yIHNjaGVtYVVSSV87Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgVmVjdG9yIHczU2NoZW1hUU5hbWVMaXN0XzsKLSAgcHJpdmF0ZSBzdGF0aWMgVmVjdG9yIGNvbnN0YW50U2NoZW1hTGlzdF87Ci0gIAotICAvL0EgUmVzb3VyY2VTZXQgZm9yIGFsbCBzY2hlbWFzIGluIHRoaXMgV1NETAotICBwcml2YXRlIFJlc291cmNlU2V0IHJlc291cmNlU2V0OwotCi0gIHN0YXRpYwotICB7Ci0gICAgLy8gdzMgc2NoZW1hIFVSSSBsaXN0OgotICAgIC8vIGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hCi0gICAgLy8gaHR0cDovL3d3dy53My5vcmcvMjAwMC8xMC9YTUxTY2hlbWEKLSAgICAvLyBodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hNTFNjaGVtYQotICAgIHczU2NoZW1hUU5hbWVMaXN0XyA9IG5ldyBWZWN0b3IoKTsKLSAgICB3M1NjaGVtYVFOYW1lTGlzdF8uYWRkRWxlbWVudChuZXcgUU5hbWUoRnJhZ21lbnRDb25zdGFudHMuTlNfVVJJX0NVUlJFTlRfU0NIRU1BX1hTRCwic2NoZW1hIikpOwotICAgIHczU2NoZW1hUU5hbWVMaXN0Xy5hZGRFbGVtZW50KG5ldyBRTmFtZShGcmFnbWVudENvbnN0YW50cy5OU19VUklfMjAwMF9TQ0hFTUFfWFNELCJzY2hlbWEiKSk7Ci0gICAgdzNTY2hlbWFRTmFtZUxpc3RfLmFkZEVsZW1lbnQobmV3IFFOYW1lKEZyYWdtZW50Q29uc3RhbnRzLk5TX1VSSV8xOTk5X1NDSEVNQV9YU0QsInNjaGVtYSIpKTsKLQotICAgIC8vIENvbnN0YW50IHNjaGVtYSBVUkkgbGlzdDoKLSAgICAvLyBodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYQotICAgIC8vIGh0dHA6Ly93d3cudzMub3JnLzIwMDAvMTAvWE1MU2NoZW1hCi0gICAgLy8gaHR0cDovL3d3dy53My5vcmcvMTk5OS9YTUxTY2hlbWEKLSAgICAvLyBodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLwotICAgIC8vIGh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvCi0gICAgY29uc3RhbnRTY2hlbWFMaXN0XyA9IG5ldyBWZWN0b3IoKTsKLSAgICBjb25zdGFudFNjaGVtYUxpc3RfLmFkZEVsZW1lbnQoWFNEU2NoZW1hSW1wbC5nZXRTY2hlbWFGb3JTY2hlbWEoRnJhZ21lbnRDb25zdGFudHMuTlNfVVJJX0NVUlJFTlRfU0NIRU1BX1hTRCkpOwotICAgIGNvbnN0YW50U2NoZW1hTGlzdF8uYWRkRWxlbWVudChYU0RTY2hlbWFJbXBsLmdldFNjaGVtYUZvclNjaGVtYShGcmFnbWVudENvbnN0YW50cy5OU19VUklfMjAwMF9TQ0hFTUFfWFNEKSk7Ci0gICAgY29uc3RhbnRTY2hlbWFMaXN0Xy5hZGRFbGVtZW50KFhTRFNjaGVtYUltcGwuZ2V0U2NoZW1hRm9yU2NoZW1hKEZyYWdtZW50Q29uc3RhbnRzLk5TX1VSSV8xOTk5X1NDSEVNQV9YU0QpKTsKLSAgICBjb25zdGFudFNjaGVtYUxpc3RfLmFkZEVsZW1lbnQoWFNEU2NoZW1hSW1wbC5nZXRTY2hlbWFGb3JTY2hlbWEoRnJhZ21lbnRDb25zdGFudHMuTlNfVVJJX1NPQVBfRU5DKSk7Ci0gICAgY29uc3RhbnRTY2hlbWFMaXN0Xy5hZGRFbGVtZW50KFhTRFNjaGVtYUltcGwuZ2V0U2NoZW1hRm9yU2NoZW1hKEZyYWdtZW50Q29uc3RhbnRzLlVSSV9XU0RMKSk7Ci0gIH0KLQotICBwdWJsaWMgV1NETEVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBTdHJpbmcgd3NkbFVybCkKLSAgewotICAgIHN1cGVyKG5hbWUsIG1vZGVsKTsKLSAgICBzZXRXc2RsVXJsKHdzZGxVcmwpOwotICAgIGRlZmluaXRpb25fID0gbnVsbDsKLSAgICBzY2hlbWFMaXN0XyA9IG5ldyBWZWN0b3IoKTsKLQlzY2hlbWFVUklfID0gbmV3IFZlY3RvcigpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0V3NkbFVybChTdHJpbmcgd3NkbFVybCkgewotCSAgSFRUUFV0aWxpdHkgaHR0cCA9IG5ldyBIVFRQVXRpbGl0eSgpOwotCSAgd3NkbFVybF8gPSBodHRwLmhhbmRsZVJlZGlyZWN0KFVSTFV0aWxzLmVuY29kZVVSTFN0cmluZyh3c2RsVXJsKSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdzZGxVcmwoKSB7Ci0gICAgcmV0dXJuIHdzZGxVcmxfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U2NoZW1hTGlzdChWZWN0b3Igc2NoZW1hTGlzdCkKLSAgewotICAgIHNjaGVtYUxpc3RfID0gc2NoZW1hTGlzdDsKLSAgfQotCi0gIHB1YmxpYyBWZWN0b3IgZ2V0U2NoZW1hTGlzdCgpCi0gIHsKLSAgICByZXR1cm4gc2NoZW1hTGlzdF87Ci0gIH0KLSAgCi0gIHByaXZhdGUgZmluYWwgRGVmaW5pdGlvbiBsb2FkV1NETChTdHJpbmcgd3NkbFVSTCkgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIFdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlciA9IG5ldyBXZWJTZXJ2aWNlc1BhcnNlckV4dCgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIHJldHVybiBwYXJzZXIuZ2V0V1NETERlZmluaXRpb25WZXJib3NlKHdzZGxVUkwpOwotICAgIH0KLSAgICBjYXRjaCAoV1NETEV4Y2VwdGlvbiB3c2RsZSkKLSAgICB7Ci0gICAgICB0aHJvdyB3c2RsZTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0RMRXhjZXB0aW9uKFdTRExFeGNlcHRpb24uT1RIRVJfRVJST1IgLCB0LmdldE1lc3NhZ2UoKSwgdCk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFZlY3RvciBsb2FkV1NETCgpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLQkgIAotCS8vCVJlZ2lzdGVyIHRoZSBhcHByb3ByaWF0ZSByZXNvdXJjZSBmYWN0b3J5IHRvIGhhbmRsZSBhbGwgZmlsZSBleHRlbnRpb25zLgotCXJlc291cmNlU2V0ID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOwotCXJlc291cmNlU2V0LmdldFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5KCkuZ2V0RXh0ZW5zaW9uVG9GYWN0b3J5TWFwKCkucHV0KFJlc291cmNlLkZhY3RvcnkuUmVnaXN0cnkuREVGQVVMVF9FWFRFTlNJT04sbmV3IFhTRFJlc291cmNlRmFjdG9yeUltcGwoKSk7ICAgIAkJCi0JLy9SZWdpc3RlciB0aGUgcGFja2FnZSB0byBlbnN1cmUgaXQgaXMgYXZhaWxhYmxlIGR1cmluZyBsb2FkaW5nLgotCXJlc291cmNlU2V0LmdldFBhY2thZ2VSZWdpc3RyeSgpLnB1dChYU0RQYWNrYWdlLmVOU19VUkksWFNEUGFja2FnZS5lSU5TVEFOQ0UpOwkKLQkgIAotCSAgCi0gICAgVmVjdG9yIGVycm9yTWVzc2FnZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZGVmaW5pdGlvbl8gPSBsb2FkV1NETCh3c2RsVXJsXyk7Ci0gICAgCi0gICAgCi0gICAgaWYgKGRlZmluaXRpb25fICE9IG51bGwpCi0gICAgewotICAgICAgc2V0RG9jdW1lbnRhdGlvbihkZWZpbml0aW9uXy5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICAgIGdhdGhlclNjaGVtYXMoZGVmaW5pdGlvbl8sIHdzZGxVcmxfKTsKLSAgICAgIC8vIFZhbGlkYXRlIHRoZSBzY2hlbWFzLgotICAgICAgZm9yIChpbnQgaT0wO2k8c2NoZW1hTGlzdF8uc2l6ZSgpO2krKykKLSAgICAgIHsKLSAgICAgICAgWFNEU2NoZW1hIHhzZFNjaGVtYSA9IChYU0RTY2hlbWEpc2NoZW1hTGlzdF8uZWxlbWVudEF0KGkpOwotICAgICAgICB4c2RTY2hlbWEudmFsaWRhdGUoKTsKLSAgICAgICAgRUxpc3QgZXJyb3JzID0geHNkU2NoZW1hLmdldEFsbERpYWdub3N0aWNzKCk7Ci0gICAgICAgIGlmICghZXJyb3JzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIGZvciAoTGlzdEl0ZXJhdG9yIGxpID0gZXJyb3JzLmxpc3RJdGVyYXRvcigpO2xpLmhhc05leHQoKTspCi0gICAgICAgICAgewotICAgICAgICAgICAgWFNERGlhZ25vc3RpYyB4ZCA9IChYU0REaWFnbm9zdGljKWxpLm5leHQoKTsKLSAgICAgICAgICAgIFN0cmluZyBtc2cgPSB4ZC5nZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgICAvLyBkbyBub3QgcmVwb3J0IGxvdyBzZXZlcml0eSBkaWFnbm9zdGljcyBvciBlcnJvbmVvdXMgYXJyYXkgcmVmZXJlbmNlIGVycm9ycy4KLSAgICAgICAgICAgIGlmICh4ZC5nZXRTZXZlcml0eSgpLmdldFZhbHVlKCkgPT0gWFNERGlhZ25vc3RpY1NldmVyaXR5LkZBVEFMX0xJVEVSQUwuZ2V0VmFsdWUoKSB8fCAobXNnICE9IG51bGwgJiYgbXNnLmxlbmd0aCgpID4gMCAmJiBtc2cudG9Mb3dlckNhc2UoKS5pbmRleE9mKCIjYXJyYXkiKSAhPSAtMSkpCi0gICAgICAgICAgICAgIGxpLnJlbW92ZSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAobXNnICE9IG51bGwgJiYgbXNnLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzLmFkZEVsZW1lbnQoeGQuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgZm9yIChpbnQgaT0wO2k8Y29uc3RhbnRTY2hlbWFMaXN0Xy5zaXplKCk7aSsrKQotICAgICAgICBzY2hlbWFMaXN0Xy5hZGRFbGVtZW50KGNvbnN0YW50U2NoZW1hTGlzdF8uZWxlbWVudEF0KGkpKTsKLSAgICAgIAotCX0KLSAgICByZXR1cm4gZXJyb3JNZXNzYWdlczsKLSAgfQotCi0gIHByaXZhdGUgZmluYWwgdm9pZCBnYXRoZXJTY2hlbWFzKERlZmluaXRpb24gZGVmaW5pdGlvbiwgU3RyaW5nIGRlZmluaXRpb25VUkwpCi0gIHsKLSAgICBUeXBlcyB0eXBlcyA9IGRlZmluaXRpb24uZ2V0VHlwZXMoKTsKLSAgICBpZiAodHlwZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMaXN0IGV4dFR5cGVzID0gdHlwZXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICBpZiAoZXh0VHlwZXMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZm9yIChpbnQgaT0wO2k8ZXh0VHlwZXMuc2l6ZSgpO2krKykKLSAgICAgICAgewotICAgICAgICAgIFhTRFNjaGVtYSB4c2RTY2hlbWEgPSBudWxsOwotICAgICAgICAgIE9iamVjdCBvYmogPSBleHRUeXBlcy5nZXQoaSk7Ci0gICAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQgc2NoZW1hRWxlbWVudCA9IChVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQpb2JqOwotICAgICAgICAgICAgaWYgKGlzVzNTY2hlbWFFbGVtZW50VHlwZShzY2hlbWFFbGVtZW50LmdldEVsZW1lbnRUeXBlKCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICB4c2RTY2hlbWEgPSBYU0RTY2hlbWFJbXBsLmNyZWF0ZVNjaGVtYShzY2hlbWFFbGVtZW50LmdldEVsZW1lbnQoKSk7Ci0JCQkgIGlmKCFjaGVja1NjaGVtYVVSSShkZWZpbml0aW9uVVJMKSl7Ci0JCQkJICBzY2hlbWFMaXN0Xy5hZGRFbGVtZW50KHhzZFNjaGVtYSk7Ci0JCQkJICBnYXRoZXJTY2hlbWFEaXJlY3RpdmUoeHNkU2NoZW1hLCBkZWZpbml0aW9uVVJMKTsKLSAgICAgICAgICAgICAgfQotCQkJICAvL1dlIG5lZWQgdG8gYWRkIHRoZSBzY2hlbWEgdG8gYSBSZXNvdXJjZSBpbiBhIFJlc291cmNlIHNldCBmb3IgcHJvcGVyIHZhbGlkYXRpb24KLSAgICAgICAgCSAgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSSB1cmkgPSBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJLmNyZWF0ZVVSSShkZWZpbml0aW9uVVJMKTsgICAgCQkKLSAgICAgICAgCSAgUmVzb3VyY2UgcmVzb3VyY2UgPSByZXNvdXJjZVNldC5jcmVhdGVSZXNvdXJjZSh1cmkpOwotICAgICAgICAJICAvL0FkZCB0aGUgU2NoZW1hIHRvIHRoZSByZXNvdXJjZQotICAgICAgICAJICByZXNvdXJjZS5nZXRDb250ZW50cygpLmFkZCh4c2RTY2hlbWEpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gCQotICAgICAgICAgIGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgc2NoZW1hRWxlbWVudCA9IChYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwpb2JqOwotICAgICAgICAgICAgeHNkU2NoZW1hID0gc2NoZW1hRWxlbWVudC5nZXRTY2hlbWEoKTsKLSAgICAgICAgICAgIGlmKCFzY2hlbWFMaXN0Xy5jb250YWlucyh4c2RTY2hlbWEpKXsKLQkJCQlzY2hlbWFMaXN0Xy5hZGRFbGVtZW50KHhzZFNjaGVtYSk7Ci0JCQkJZ2F0aGVyU2NoZW1hRGlyZWN0aXZlKHhzZFNjaGVtYSwgZGVmaW5pdGlvblVSTCk7Ci0JCQl9Ci0JCSAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIE1hcCBpbXBvcnRzID0gZGVmaW5pdGlvbi5nZXRJbXBvcnRzKCk7Ci0gICAgaWYgKGltcG9ydHMgIT0gbnVsbCkKLSAgICAgIGdhdGhlckltcG9ydGVkU2NoZW1hcyhkZWZpbml0aW9uLGltcG9ydHMpOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGdhdGhlclNjaGVtYURpcmVjdGl2ZShYU0RTY2hlbWEgeHNkU2NoZW1hLCBTdHJpbmcgeHNkU2NoZW1hVVJMKQotICB7Ci0gICAgaWYgKHhzZFNjaGVtYSAhPSBudWxsKQotICAgIHsKLSAgICAgIEVMaXN0IHhzZFNjaGVtYUNvbnRlbnRzID0geHNkU2NoZW1hLmdldENvbnRlbnRzKCk7Ci0gICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0geHNkU2NoZW1hQ29udGVudHMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IGNvbnRlbnQgPSBpdC5uZXh0KCk7Ci0gICAgICAgIGlmIChjb250ZW50IGluc3RhbmNlb2YgWFNEU2NoZW1hRGlyZWN0aXZlKQotICAgICAgICB7Ci0gICAgICAgICAgWFNEU2NoZW1hRGlyZWN0aXZlIHhzZFNjaGVtYURpcmVjdGl2ZSA9IChYU0RTY2hlbWFEaXJlY3RpdmUpY29udGVudDsKLSAgICAgICAgICBTdHJpbmdCdWZmZXIgeHNkU2NoZW1hRGlyZWN0aXZlVVJMID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICAgIFN0cmluZyB4c2RTY2hlbWFEaXJlY3RpdmVMb2NhdGlvbiA9IHhzZFNjaGVtYURpcmVjdGl2ZS5nZXRTY2hlbWFMb2NhdGlvbigpOwotICAgICAgICAgIGlmICh4c2RTY2hlbWFEaXJlY3RpdmVMb2NhdGlvbiAhPSBudWxsICYmIHhzZFNjaGVtYURpcmVjdGl2ZUxvY2F0aW9uLmluZGV4T2YoJzonKSA9PSAtMSAmJiB4c2RTY2hlbWFVUkwgIT0gbnVsbCAmJiB4c2RTY2hlbWFVUkwuaW5kZXhPZignOicpICE9IC0xKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIHJlbGF0aXZlIFVSTAotICAgICAgICAgICAgaW50IGluZGV4ID0geHNkU2NoZW1hVVJMLmxhc3RJbmRleE9mKCcvJyk7Ci0gICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICAgICAgICAgIHhzZFNjaGVtYURpcmVjdGl2ZVVSTC5hcHBlbmQoeHNkU2NoZW1hVVJMLnN1YnN0cmluZygwLCBpbmRleCsxKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHhzZFNjaGVtYURpcmVjdGl2ZVVSTC5hcHBlbmQoeHNkU2NoZW1hVVJMKTsKLSAgICAgICAgICAgICAgeHNkU2NoZW1hRGlyZWN0aXZlVVJMLmFwcGVuZCgnLycpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICB4c2RTY2hlbWFEaXJlY3RpdmVVUkwuYXBwZW5kKHhzZFNjaGVtYURpcmVjdGl2ZUxvY2F0aW9uKTsKLQotICAgICAgICAgIC8vZW5jb2RlIHRoZSBVUkwgc28gdGhhdCBTY2hlbWFzIHdpdGggbm9uLUFTQ0lJIGZpbGVuYW1lcyBjYW4gYmUgcmVzb2x2ZWQKLSAgICAgICAgICBTdHJpbmcgeHNkU2NoZW1hRGlyZWN0aXZlVVJMU3RyaW5nID0gVVJMVXRpbHMuZW5jb2RlVVJMU3RyaW5nKHhzZFNjaGVtYURpcmVjdGl2ZVVSTC50b1N0cmluZygpKTsgICAgICAKLSAgICAgICAgICAvLyByZXNvbHZlIHNjaGVtYSBkaXJlY3RpdmUKLSAgICAgICAgICBYU0RTY2hlbWEgcmVzb2x2ZWRTY2hlbWEgPSB4c2RTY2hlbWFEaXJlY3RpdmUuZ2V0UmVzb2x2ZWRTY2hlbWEoKTsKLSAgICAgICAgICBpZiAocmVzb2x2ZWRTY2hlbWEgPT0gbnVsbCAmJiB4c2RTY2hlbWFEaXJlY3RpdmVVUkxTdHJpbmcubGVuZ3RoKCkgPiAwKQotICAgICAgICAgICAgcmVzb2x2ZWRTY2hlbWEgPSBnZXRTY2hlbWEoeHNkU2NoZW1hRGlyZWN0aXZlVVJMU3RyaW5nKTsKLSAgICAgICAgICBpZiAocmVzb2x2ZWRTY2hlbWEgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0JCQlpZighY2hlY2tTY2hlbWFVUkkoeHNkU2NoZW1hRGlyZWN0aXZlVVJMU3RyaW5nKSl7Ci0JCQkJc2NoZW1hTGlzdF8uYWRkRWxlbWVudChyZXNvbHZlZFNjaGVtYSk7Ci0JCQkJZ2F0aGVyU2NoZW1hRGlyZWN0aXZlKHJlc29sdmVkU2NoZW1hLCB4c2RTY2hlbWFEaXJlY3RpdmVVUkxTdHJpbmcpOwotICAgICAgCQl9Ci0gICAgICAJICB9Ci0gICAgICAgIH0KLQkgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gY2hlY2tTY2hlbWFVUkkoU3RyaW5nIHNjaGVtYVVSSSl7Ci0JICAJYm9vbGVhbiBmb3VuZCA9IGZhbHNlOwotCSAgCSAJCi0JCQotCQlzY2hlbWFVUkkgPSBub3JtYWxpemUoc2NoZW1hVVJJKTsgCi0JCWlmKHNjaGVtYVVSSS5lcXVhbHMobm9ybWFsaXplKHdzZGxVcmxfKSkpcmV0dXJuIGZhbHNlOwotCQlFbnVtZXJhdGlvbiBlID0gc2NoZW1hVVJJXy5lbGVtZW50cygpOwotCQl3aGlsZShlLmhhc01vcmVFbGVtZW50cygpKXsKLQkJCVN0cmluZyB1cmkgPSAoU3RyaW5nKWUubmV4dEVsZW1lbnQoKTsJCi0JCQlpZihzY2hlbWFVUkkuZXF1YWxzKHVyaSkpeyAKLQkJCQlmb3VuZCA9IHRydWU7Ci0JCQkJYnJlYWs7Ci0JCQl9CQotCQl9Ci0JCQotCSAgICBpZiAoIWZvdW5kKXsKLQkgICAgCXNjaGVtYVVSSV8uYWRkRWxlbWVudChzY2hlbWFVUkkpOwotCSAgICB9Ci0JICAgIHJldHVybiBmb3VuZDsKLQkgIAotCSAgfQotCSAgCi0gIHByaXZhdGUgU3RyaW5nIG5vcm1hbGl6ZShTdHJpbmcgdXJpICkKLSAgewotCSAgdHJ5IHsKLQkJICBTdHJpbmcgZW5jb2RlZFVSSSA9IFVSSUVuY29kZXIuZW5jb2RlKHVyaSwiVVRGLTgiKTsKLQkJICBVUkkgbm9ybWFsaXplZFVSSSA9IG5ldyBVUkkoZW5jb2RlZFVSSSk7Ci0JCSAgbm9ybWFsaXplZFVSSSA9IG5vcm1hbGl6ZWRVUkkubm9ybWFsaXplKCk7Ci0JCSAgcmV0dXJuIG5vcm1hbGl6ZWRVUkkudG9TdHJpbmcoKTsKLQkgIH0gY2F0Y2ggKFVSSVN5bnRheEV4Y2VwdGlvbiBlKSB7Ci0JCSAgcmV0dXJuIHVyaTsKLQkgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkgewotCQkgIHJldHVybiB1cmk7Ci0JICB9Ci0gIH0KLSAgCi0gIHByaXZhdGUgZmluYWwgYm9vbGVhbiBpc1czU2NoZW1hRWxlbWVudFR5cGUoUU5hbWUgcW5hbWUpCi0gIHsKLSAgICBmb3IgKGludCBpPTA7aTx3M1NjaGVtYVFOYW1lTGlzdF8uc2l6ZSgpO2krKykKLSAgICB7Ci0gICAgICBRTmFtZSB3M1NjaGVtYVFOYW1lID0gKFFOYW1lKXczU2NoZW1hUU5hbWVMaXN0Xy5lbGVtZW50QXQoaSk7Ci0gICAgICBpZiAodzNTY2hlbWFRTmFtZS5lcXVhbHMocW5hbWUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGdhdGhlckltcG9ydGVkU2NoZW1hcyhEZWZpbml0aW9uIGRlZmluaXRpb24sTWFwIGltcG9ydHMpCi0gIHsKLSAgICBmb3IgKEl0ZXJhdG9yIGl0ZXJhdG9yID0gaW1wb3J0cy5rZXlTZXQoKS5pdGVyYXRvcigpO2l0ZXJhdG9yLmhhc05leHQoKTspCi0gICAgewotICAgICAgTGlzdCBpbXBvcnRMaXN0ID0gKExpc3QpaW1wb3J0cy5nZXQoaXRlcmF0b3IubmV4dCgpKTsKLSAgICAgIGZvciAoaW50IGk9MDtpPGltcG9ydExpc3Quc2l6ZSgpO2krKykKLSAgICAgIHsKLSAgICAgICAgSW1wb3J0IGltcCA9IChJbXBvcnQpaW1wb3J0TGlzdC5nZXQoaSk7Ci0gICAgICAgIFN0cmluZ0J1ZmZlciBsb2NVUkkgPSBuZXcgU3RyaW5nQnVmZmVyKGltcC5nZXRMb2NhdGlvblVSSSgpKTsKLSAgICAgICAgaWYgKCFWYWxpZGF0b3IudmFsaWRhdGVVUkwobG9jVVJJLnRvU3RyaW5nKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIGJhc2UgPSBkZWZpbml0aW9uLmdldERvY3VtZW50QmFzZVVSSSgpOwotICAgICAgICAgIGxvY1VSSS5pbnNlcnQoMCxiYXNlLnN1YnN0cmluZygwLGJhc2UubGFzdEluZGV4T2YoJy8nKSsxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBEZWZpbml0aW9uIGltcG9ydERlZiA9IGxvYWRXU0RMKGxvY1VSSS50b1N0cmluZygpKTsKLSAgICAgICAgICBnYXRoZXJTY2hlbWFzKGltcG9ydERlZiwgbG9jVVJJLnRvU3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBNYXkgYmUgYW4gWFNEIGZpbGUuCi0gICAgICAgICAgZ2F0aGVyU2NoZW1hKGxvY1VSSS50b1N0cmluZygpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgZmluYWwgdm9pZCBnYXRoZXJTY2hlbWEoU3RyaW5nIGxvY1VSSSkKLSAgewotICAgIFhTRFNjaGVtYSB4c2RTY2hlbWEgPSBnZXRTY2hlbWEobG9jVVJJKTsKLSAgICBpZiAoeHNkU2NoZW1hICE9IG51bGwpCi0gICAgewotICAgICAgc2NoZW1hTGlzdF8uYWRkRWxlbWVudCh4c2RTY2hlbWEpOwotICAgICAgZ2F0aGVyU2NoZW1hRGlyZWN0aXZlKHhzZFNjaGVtYSwgbG9jVVJJKTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIFhTRFNjaGVtYSBnZXRTY2hlbWEoU3RyaW5nIGxvY1VSSSkKLSAgewotICAgIGxvY1VSSSA9IFVSTFV0aWxzLmVuY29kZVVSTFN0cmluZyhsb2NVUkkpOwotICAgIFhTRFNjaGVtYSB4c2RTY2hlbWEgPSBYU0RTY2hlbWFJbXBsLmdldFNjaGVtYUZvclNjaGVtYShsb2NVUkkpOwotICAgIGlmICh4c2RTY2hlbWEgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBYU0RQYXJzZXIgcCA9IG5ldyBYU0RQYXJzZXIoKTsKLSAgICAgIElucHV0U3RyZWFtIGlzID0gTmV0VXRpbHMuZ2V0VVJMSW5wdXRTdHJlYW0obG9jVVJJKTsKLSAgICAgIGlmIChpcyAhPSBudWxsKQotICAgICAgewotICAgICAgICBwLnBhcnNlKGlzKTsKLSAgICAgICAgeHNkU2NoZW1hID0gcC5nZXRTY2hlbWEoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHhzZFNjaGVtYTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldERlZmluaXRpb24oRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotICB7Ci0gICAgZGVmaW5pdGlvbl8gPSBkZWZpbml0aW9uOwotICB9Ci0KLSAgcHVibGljIERlZmluaXRpb24gZ2V0RGVmaW5pdGlvbigpCi0gIHsKLSAgICByZXR1cm4gZGVmaW5pdGlvbl87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBidWlsZE1vZGVsKCkgewotICAgIGlmIChkZWZpbml0aW9uXyAhPSBudWxsKSB7Ci0gICAgICBNYXAgc2VydmljZXMgPSBuZXcgSGFzaE1hcChkZWZpbml0aW9uXy5nZXRTZXJ2aWNlcygpKTsKLSAgICAgIFdTRExTZXJ2aWNlRWxlbWVudFtdIHdzZGxTZXJ2aWNlRWxlbWVudHMgPSBuZXcgV1NETFNlcnZpY2VFbGVtZW50W2dldE51bWJlck9mRWxlbWVudHMoV1NETE1vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX1NFUlZJQ0UpXTsKLSAgICAgIEVudW1lcmF0aW9uIGUgPSBnZXRFbGVtZW50cyhXU0RMTW9kZWxDb25zdGFudHMuUkVMX1dTRExfU0VSVklDRSk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdzZGxTZXJ2aWNlRWxlbWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgd3NkbFNlcnZpY2VFbGVtZW50c1tpXSA9IChXU0RMU2VydmljZUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgfQotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3c2RsU2VydmljZUVsZW1lbnRzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgIFFOYW1lIHFuYW1lID0gd3NkbFNlcnZpY2VFbGVtZW50c1tqXS5nZXRTZXJ2aWNlKCkuZ2V0UU5hbWUoKTsKLSAgICAgICAgU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2Upc2VydmljZXMuZ2V0KHFuYW1lKTsKLSAgICAgICAgaWYgKHNlcnZpY2UgIT0gbnVsbCkgewotICAgICAgICAgIHNlcnZpY2VzLnJlbW92ZShxbmFtZSk7Ci0gICAgICAgICAgd3NkbFNlcnZpY2VFbGVtZW50c1tqXS5zZXRTZXJ2aWNlKHNlcnZpY2UpOwotICAgICAgICAgIHdzZGxTZXJ2aWNlRWxlbWVudHNbal0uYnVpbGRNb2RlbCgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBkaXNjb25uZWN0KHdzZGxTZXJ2aWNlRWxlbWVudHNbal0sIFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9TRVJWSUNFKTsKLSAgICAgIH0KLSAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBzZXJ2aWNlcy52YWx1ZXMoKS5pdGVyYXRvcigpO2l0Lmhhc05leHQoKTspIHsKLSAgICAgICAgU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2UpaXQubmV4dCgpOwotICAgICAgICBXU0RMU2VydmljZUVsZW1lbnQgd3NkbFNlcnZpY2VFbGVtZW50ID0gbmV3IFdTRExTZXJ2aWNlRWxlbWVudChzZXJ2aWNlLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCksIGdldE1vZGVsKCksIHNlcnZpY2UpOwotICAgICAgICBjb25uZWN0KHdzZGxTZXJ2aWNlRWxlbWVudCxXU0RMTW9kZWxDb25zdGFudHMuUkVMX1dTRExfU0VSVklDRSxNb2RlbENvbnN0YW50cy5SRUxfT1dORVIpOwotICAgICAgICB3c2RsU2VydmljZUVsZW1lbnQuYnVpbGRNb2RlbCgpOwotICAgICAgfQotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2RhdGFtb2RlbC9XU0RMT3BlcmF0aW9uRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2RhdGFtb2RlbC9XU0RMT3BlcmF0aW9uRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjY1MTkwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9kYXRhbW9kZWwvV1NETE9wZXJhdGlvbkVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQxNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzA1ICAgMTE3MDM0IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgU2VydmljZXMgRXhwbG9yZXIgc2hvdWxkIHN1cHBvcnQgU09BUCBIZWFkZXJzCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICogMjAwNzEwMjQgICAyMDY1NTYgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICogMjAwODA5MDUgICAyNDYyNjUgbWFodXRjaEBjYS5pYm0uY29tICAtIE1hcmsgSHV0Y2hpbnNvbgotICogMjAwODA5MTEgICAyNDcwOTYga2F0aHlAY2EuaWJtLmNvbSAgLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRyYW5zcG9ydFByb3ZpZGVyUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkJpbmRpbmdUeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuU09BUEhlYWRlcldyYXBwZXJGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC54c2QuV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBUcmFuc3BvcnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0Lk1lc3NhZ2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb21wbGV4VHlwZURlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE5hbWVkQ29tcG9uZW50OwotCi1wdWJsaWMgY2xhc3MgV1NETE9wZXJhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXU0RMQ29tbW9uRWxlbWVudAotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPUEVSQVRJT05fVFlQRV9TT0FQID0gMDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1BFUkFUSU9OX1RZUEVfSFRUUF9HRVQgPSAxOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPUEVSQVRJT05fVFlQRV9IVFRQX1BPU1QgPSAyOwotCi0gIHByaXZhdGUgaW50IG9wZXJhdGlvblR5cGVfOwotICBwcml2YXRlIE9wZXJhdGlvbiBvcGVyYXRpb25fOwotICBwcml2YXRlIFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlciB3c2RsUGFydHNUb1hzZFR5cGVNYXBwZXJfOwotICBwcml2YXRlIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGZyYWdDb250cm9sbGVyXzsKLSAgcHJpdmF0ZSBib29sZWFuIGlzRG9jdW1lbnRTdHlsZV87Ci0gIHByaXZhdGUgYm9vbGVhbiBpc1VzZUxpdGVyYWxfOwotICBwcml2YXRlIFN0cmluZyBzb2FwQWN0aW9uXzsKLSAgcHJpdmF0ZSBTdHJpbmcgZW5jb2RpbmdTdHlsZV87Ci0gIHByaXZhdGUgU3RyaW5nIGVuY29kaW5nTmFtZXNwYWNlXzsKLQotICBwcml2YXRlIE1hcCBoZWFkZXJDYWNoZTsKLSAgCi0gIHByaXZhdGUgTWVzc2FnZUNvbnRleHQgbWVzc2FnZUNvbnRleHQgPSBudWxsOwotICBwcml2YXRlIElTT0FQVHJhbnNwb3J0UHJvdmlkZXIgc29hcFRyYW5zcG9ydFByb3ZpZGVyID0gbnVsbDsgIAotICAKLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIGdhdGhlclNvYXBJbmZvcm1hdGlvbihXU0RMQmluZGluZ0VsZW1lbnQgYmluZGluZ0VsZW1lbnQsU09BUEJpbmRpbmcgc29hcEJpbmRpbmcpCi0gIHsKLSAgICAvLyBJbml0aWFsaXplIGRlZmF1bHRzLgotICAgIGlzRG9jdW1lbnRTdHlsZV8gPSB0cnVlOwotICAgIHNvYXBBY3Rpb25fID0gIiI7Ci0gICAgaXNVc2VMaXRlcmFsXyA9IHRydWU7Ci0gICAgZW5jb2RpbmdTdHlsZV8gPSBudWxsOwotICAgIGVuY29kaW5nTmFtZXNwYWNlXyA9IG51bGw7Ci0KLSAgICBpZiAoc29hcEJpbmRpbmcgIT0gbnVsbCkKLSAgICAgIGlzRG9jdW1lbnRTdHlsZV8gPSAiZG9jdW1lbnQiLmVxdWFscyhzb2FwQmluZGluZy5nZXRTdHlsZSgpKTsKLSAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSBnZXRCaW5kaW5nT3BlcmF0aW9uKGJpbmRpbmdFbGVtZW50KTsKLSAgICBTT0FQT3BlcmF0aW9uIHNvYXBPcGVyYXRpb24gPSBudWxsOwotICAgIAotICAgIGZvciAoSXRlcmF0b3IgaSA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTtpLmhhc05leHQoKTspCi0gICAgewotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClpLm5leHQoKTsKLSAgICAgIGlmIChlIGluc3RhbmNlb2YgU09BUE9wZXJhdGlvbikKLSAgICAgIHsKLSAgICAgICAgc29hcE9wZXJhdGlvbiA9IChTT0FQT3BlcmF0aW9uKWU7Ci0gICAgICAgIHNvYXBBY3Rpb25fID0gc29hcE9wZXJhdGlvbi5nZXRTb2FwQWN0aW9uVVJJKCk7Ci0gICAgICAgIGlmKHNvYXBBY3Rpb25fID09IG51bGwpIHNvYXBBY3Rpb25fID0gIiI7Ci0gICAgICAgIAotICAgICAgICBTdHJpbmcgc3R5bGUgPSBzb2FwT3BlcmF0aW9uLmdldFN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZSAhPSBudWxsKQotICAgICAgICAgIGlzRG9jdW1lbnRTdHlsZV8gPSBzdHlsZS5lcXVhbHMoImRvY3VtZW50Iik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLQotICAgIEJpbmRpbmdJbnB1dCBiaW5kaW5nSW5wdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpOwotICAgIFNPQVBCb2R5IHNvYXBCb2R5ID0gbnVsbDsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSBiaW5kaW5nSW5wdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTtpLmhhc05leHQoKTspCi0gICAgewotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClpLm5leHQoKTsKLSAgICAgIGlmIChlIGluc3RhbmNlb2YgU09BUEJvZHkpCi0gICAgICB7Ci0gICAgICAgIHNvYXBCb2R5ID0gKFNPQVBCb2R5KWU7Ci0gICAgICAgIGlzVXNlTGl0ZXJhbF8gPSAibGl0ZXJhbCIuZXF1YWxzKHNvYXBCb2R5LmdldFVzZSgpKTsKLSAgICAgICAgaWYgKCFpc1VzZUxpdGVyYWxfKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gRW5jb2RlZC4KLSAgICAgICAgICBmb3IgKEl0ZXJhdG9yIGogPSBzb2FwQm9keS5nZXRFbmNvZGluZ1N0eWxlcygpLml0ZXJhdG9yKCk7ai5oYXNOZXh0KCk7KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGVuY29kaW5nU3R5bGVfID0gKFN0cmluZylqLm5leHQoKTsKLSAgICAgICAgICAgIGVuY29kaW5nTmFtZXNwYWNlXyA9IHNvYXBCb2R5LmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBXU0RMT3BlcmF0aW9uRWxlbWVudChTdHJpbmcgbmFtZSxXU0RMQmluZGluZ0VsZW1lbnQgYmluZGluZ0VsZW1lbnQsT3BlcmF0aW9uIG9wZXJhdGlvbikKLSAgewotICAgIHN1cGVyKG5hbWUsIGJpbmRpbmdFbGVtZW50LmdldE1vZGVsKCkpOwotICAgIC8vIFNldCB0aGUgZGVmYXVsdCBvcGVyYXRpb24gdHlwZSB0byBiZSBTT0FQLgotICAgIHNldE9wZXJhdGlvbihiaW5kaW5nRWxlbWVudCxvcGVyYXRpb24pOwotICB9Ci0KLSAgcHJpdmF0ZSBEZWZpbml0aW9uIGdldERlZmluaXRpb24oV1NETEJpbmRpbmdFbGVtZW50IGJpbmRpbmdFbGVtZW50KSB7Ci0JICBXU0RMU2VydmljZUVsZW1lbnQgc2VydmljZUVsZW1lbnQgPSAoV1NETFNlcnZpY2VFbGVtZW50KSBiaW5kaW5nRWxlbWVudC5nZXRQYXJlbnRFbGVtZW50KCk7Ci0gICAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IChXU0RMRWxlbWVudCkgc2VydmljZUVsZW1lbnQuZ2V0UGFyZW50RWxlbWVudCgpOwotICAgICAgcmV0dXJuIHdzZGxFbGVtZW50LmdldERlZmluaXRpb24oKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIHNldE1lc3NhZ2VDb250ZXh0KFdTRExCaW5kaW5nRWxlbWVudCBiaW5kaW5nRWxlbWVudCkgewotCSAgbWVzc2FnZUNvbnRleHQgPSBuZXcgTWVzc2FnZUNvbnRleHQoKTsKLQkgIG1lc3NhZ2VDb250ZXh0LnNldERlZmluaXRpb24oZ2V0RGVmaW5pdGlvbihiaW5kaW5nRWxlbWVudCkpOwotCSAgbWVzc2FnZUNvbnRleHQuc2V0QmluZGluZ09wZXJhdGlvbihnZXRCaW5kaW5nT3BlcmF0aW9uKGJpbmRpbmdFbGVtZW50KSk7Ci0JICBtZXNzYWdlQ29udGV4dC5zZXRCaW5kaW5nUHJvdG9jb2woYmluZGluZ0VsZW1lbnQuZ2V0QmluZGluZ0V4dGVuc2liaWxpdHlFbGVtZW50KCkpOwotCSAgbWVzc2FnZUNvbnRleHQuc2V0RG9jdW1lbnRTdHlsZShpc0RvY3VtZW50U3R5bGVfKTsKLSAgfQotICAKLSAgcHVibGljIE1lc3NhZ2VDb250ZXh0IGdldE1lc3NhZ2VDb250ZXh0KCkgewotCSAgcmV0dXJuIG1lc3NhZ2VDb250ZXh0OwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgc2V0U09BUFRyYW5zcG9ydFByb3ZpZGVyKFNPQVBCaW5kaW5nIHNvYXBCaW5kaW5nKSB7Ci0JICAJICAKLQkgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBzb2FwQmluZGluZy5nZXRFbGVtZW50VHlwZSgpLmdldE5hbWVzcGFjZVVSSSgpOwotCSAgU3RyaW5nIHRyYW5zcG9ydFVSSSA9IHNvYXBCaW5kaW5nLmdldFRyYW5zcG9ydFVSSSgpOwotCSAgCSAgCi0JICBzb2FwVHJhbnNwb3J0UHJvdmlkZXIgPSBUcmFuc3BvcnRQcm92aWRlclJlZ2lzdHJ5LmdldEluc3RhbmNlKCkKLQkgIAkuZ2V0U09BUFRyYW5zcG9ydFByb3ZpZGVyKG5hbWVzcGFjZVVSSSwgdHJhbnNwb3J0VVJJKTsKLSAgfQotICAKLSAgcHVibGljIElTT0FQVHJhbnNwb3J0UHJvdmlkZXIgZ2V0U09BUFRyYW5zcG9ydFByb3ZpZGVyKCkgewotCSAgcmV0dXJuIHNvYXBUcmFuc3BvcnRQcm92aWRlcjsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0T3BlcmF0aW9uKFdTRExCaW5kaW5nRWxlbWVudCBiaW5kaW5nRWxlbWVudCxPcGVyYXRpb24gb3BlcmF0aW9uKSB7Ci0gICAgb3BlcmF0aW9uXyA9IG9wZXJhdGlvbjsKLSAgICBzZXREb2N1bWVudGF0aW9uKG9wZXJhdGlvbi5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBmcmFnQ29udHJvbGxlcl8gPSBudWxsOwotICAgIHdzZGxQYXJ0c1RvWHNkVHlwZU1hcHBlcl8gPSBudWxsOwotICAgIG9wZXJhdGlvblR5cGVfID0gYmluZGluZ0VsZW1lbnQuZ2V0QmluZGluZ1R5cGUoKTsKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBiaW5kaW5nRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBiaW5kaW5nRWxlbWVudC5nZXRCaW5kaW5nRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICBzd2l0Y2ggKG9wZXJhdGlvblR5cGVfKQotICAgIHsKLSAgICAgIGNhc2UgQmluZGluZ1R5cGVzLlNPQVA6Ci0gICAgICAgIGdhdGhlclNvYXBJbmZvcm1hdGlvbihiaW5kaW5nRWxlbWVudCwoU09BUEJpbmRpbmcpYmluZGluZ0V4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICAgICAgc2V0TWVzc2FnZUNvbnRleHQoYmluZGluZ0VsZW1lbnQpOwotICAgICAgICBzZXRTT0FQVHJhbnNwb3J0UHJvdmlkZXIoKFNPQVBCaW5kaW5nKSBiaW5kaW5nRXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgICAgICBoZWFkZXJDYWNoZSA9IG5ldyBIYXNodGFibGUoKTsKLSAgICAgIGNhc2UgQmluZGluZ1R5cGVzLkhUVFBfR0VUOgotICAgICAgY2FzZSBCaW5kaW5nVHlwZXMuSFRUUF9QT1NUOgotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIE9wZXJhdGlvbiBnZXRPcGVyYXRpb24oKSB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbl87Ci0gIH0KLQotICBwdWJsaWMgQmluZGluZ09wZXJhdGlvbiBnZXRCaW5kaW5nT3BlcmF0aW9uKCkKLSAgewotICAgIHJldHVybiBnZXRCaW5kaW5nT3BlcmF0aW9uKChXU0RMQmluZGluZ0VsZW1lbnQpZ2V0UGFyZW50RWxlbWVudCgpKTsKLSAgfQotCi0gIHByaXZhdGUgQmluZGluZ09wZXJhdGlvbiBnZXRCaW5kaW5nT3BlcmF0aW9uKFdTRExCaW5kaW5nRWxlbWVudCBiaW5kaW5nRWxlbWVudCkKLSAgewotICAgIEJpbmRpbmcgYmluZGluZyA9IGJpbmRpbmdFbGVtZW50LmdldEJpbmRpbmcoKTsKLSAgICBTdHJpbmcgb3BlcmF0aW9uSW5wdXROYW1lID0gbnVsbDsKLSAgICBTdHJpbmcgb3BlcmF0aW9uT3V0cHV0TmFtZSA9IG51bGw7Ci0gICAgSW5wdXQgb3BlcmF0aW9uSW5wdXQgPSBvcGVyYXRpb25fLmdldElucHV0KCk7Ci0gICAgT3V0cHV0IG9wZXJhdGlvbk91dHB1dCA9IG9wZXJhdGlvbl8uZ2V0T3V0cHV0KCk7Ci0gICAgaWYgKG9wZXJhdGlvbklucHV0ICE9IG51bGwpCi0gICAgICBvcGVyYXRpb25JbnB1dE5hbWUgPSBvcGVyYXRpb25JbnB1dC5nZXROYW1lKCk7Ci0gICAgaWYgKG9wZXJhdGlvbk91dHB1dCAhPSBudWxsKQotICAgICAgb3BlcmF0aW9uT3V0cHV0TmFtZSA9IG9wZXJhdGlvbk91dHB1dC5nZXROYW1lKCk7Ci0gICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gYmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9uKG9wZXJhdGlvbl8uZ2V0TmFtZSgpLG9wZXJhdGlvbklucHV0TmFtZSxvcGVyYXRpb25PdXRwdXROYW1lKTsKLSAgICBpZiAoYmluZGluZ09wZXJhdGlvbiA9PSBudWxsKQotICAgICAgYmluZGluZ09wZXJhdGlvbiA9IGJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbihvcGVyYXRpb25fLmdldE5hbWUoKSxudWxsLG51bGwpOwotICAgIHJldHVybiBiaW5kaW5nT3BlcmF0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybiBhIGxpc3Qgb2YgaW5wdXQgaGVhZGVycy4KLSAgICogCi0gICAqIEByZXR1cm4gQSBMaXN0Ci0gICAqLwotICBwdWJsaWMgTGlzdCBnZXRTT0FQSGVhZGVycygpIHsKLQkgIHJldHVybiBnZXRTT0FQSGVhZGVycyh0cnVlKTsKLSAgfQotCSAgCi0gIC8qKgotICAgKiBSZXR1cm4gYSBsaXN0IG9mIGhlYWRlcnMuCi0gICAqIAotICAgKiBAcGFyYW0gaXNJbnB1dCBJZiB0cnVlLCByZXR1cm5zIHRoZSBpbnB1dCBoZWFkZXJzLiAgSWYgZmFsc2UsIHJldHVybnMgdGhlIG91dHB1dCBoZWFkZXJzLgotICAgKiBAcmV0dXJuIEEgTGlzdAotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0U09BUEhlYWRlcnMoYm9vbGVhbiBpc0lucHV0KSB7Ci0JICBMaXN0IGhlYWRlcnMgPSBuZXcgVmVjdG9yKCk7Ci0JCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSBnZXRCaW5kaW5nT3BlcmF0aW9uKCk7Ci0JICBMaXN0IGV4dGVuc2liaWxpdHlFbGVtZW50cyA9IGlzSW5wdXQgPwotCQkJYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSA6IAotCQkJYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7CSAgCSAgCi0JICAKLQkgIGZvciAoSXRlcmF0b3IgaXQgPSBleHRlbnNpYmlsaXR5RWxlbWVudHMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgewotCSAgICAgIAotCQkgIEV4dGVuc2liaWxpdHlFbGVtZW50IGUgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGl0Lm5leHQoKTsKLQkgICAgICAKLQkgICAgICBpZiAoZSBpbnN0YW5jZW9mIFNPQVBIZWFkZXIgJiYgIWhlYWRlcnMuY29udGFpbnMoZSkpCSAgICAJIAotICAgIAkJICBoZWFkZXJzLmFkZChlKTsKLQkgIH0gICAKLQkgIAotCSAgcmV0dXJuIGhlYWRlcnM7Ci0gIH0gIAotICAKLSAgcHVibGljIExpc3QgZ2V0T3JkZXJlZEJvZHlQYXJ0cygpCi0gIHsKLSAgICBMaXN0IHBhcnRzID0gbmV3IFZlY3RvcihvcGVyYXRpb25fLmdldElucHV0KCkuZ2V0TWVzc2FnZSgpLmdldE9yZGVyZWRQYXJ0cyhvcGVyYXRpb25fLmdldFBhcmFtZXRlck9yZGVyaW5nKCkpKTsKLSAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSBnZXRCaW5kaW5nT3BlcmF0aW9uKCk7Ci0gICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCk7Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IGJpbmRpbmdJbnB1dC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGUgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXQubmV4dCgpOwotICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTT0FQQm9keSkKLSAgICAgIHsKLSAgICAgICAgU09BUEJvZHkgc29hcEJvZHkgPSAoU09BUEJvZHkpZTsKLSAgICAgICAgTGlzdCBib2R5UGFydHMgPSBzb2FwQm9keS5nZXRQYXJ0cygpOwotICAgICAgICBpZiAoYm9keVBhcnRzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcnRzLnNpemUoKTsgaSsrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFBhcnQgcGFydCA9IChQYXJ0KXBhcnRzLmdldChpKTsKLSAgICAgICAgICAgIGlmICghYm9keVBhcnRzLmNvbnRhaW5zKHBhcnQpICYmICFib2R5UGFydHMuY29udGFpbnMocGFydC5nZXROYW1lKCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBwYXJ0cy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgIGktLTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBwYXJ0czsKLSAgfQotCi0gIHByaXZhdGUgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgZ2V0WFNEVG9GcmFnbWVudENvbnRyb2xsZXIoKSB7Ci0gICAgaWYgKGZyYWdDb250cm9sbGVyXyA9PSBudWxsKSB7Ci0gICAgICBmcmFnQ29udHJvbGxlcl8gPSBuZXcgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIoKTsKLSAgICAgIGZyYWdDb250cm9sbGVyXy5zZXRXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIod3NkbFBhcnRzVG9Yc2RUeXBlTWFwcGVyXyk7Ci0gICAgfQotICAgIHJldHVybiBmcmFnQ29udHJvbGxlcl87Ci0gIH0KLQotICBwcml2YXRlIFhTRE5hbWVkQ29tcG9uZW50IGdldFNjaGVtYShQYXJ0IHBhcnQsIFN0cmluZyBpZCkgewotICAgIGlmICh3c2RsUGFydHNUb1hzZFR5cGVNYXBwZXJfID09IG51bGwpIHsKLSAgICAgIHdzZGxQYXJ0c1RvWHNkVHlwZU1hcHBlcl8gPSBuZXcgV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyKCk7Ci0gICAgICBXU0RMQmluZGluZ0VsZW1lbnQgYmluZGluZ0VsZW1lbnQgPSAoV1NETEJpbmRpbmdFbGVtZW50KWdldFBhcmVudEVsZW1lbnQoKTsKLSAgICAgIFdTRExTZXJ2aWNlRWxlbWVudCBzZXJ2aWNlRWxlbWVudCA9IChXU0RMU2VydmljZUVsZW1lbnQpYmluZGluZ0VsZW1lbnQuZ2V0UGFyZW50RWxlbWVudCgpOwotICAgICAgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQgPSAoV1NETEVsZW1lbnQpc2VydmljZUVsZW1lbnQuZ2V0UGFyZW50RWxlbWVudCgpOwotICAgICAgd3NkbFBhcnRzVG9Yc2RUeXBlTWFwcGVyXy5hZGRTY2hlbWFzKHdzZGxFbGVtZW50LmdldFNjaGVtYUxpc3QoKSk7Ci0gICAgfQotICAgIHJldHVybiB3c2RsUGFydHNUb1hzZFR5cGVNYXBwZXJfLmdldFhTRFR5cGUocGFydCwgaWQpOwotICB9Ci0KLSAgcHVibGljIElYU0RGcmFnbWVudCBnZXRIZWFkZXJGcmFnbWVudChTT0FQSGVhZGVyIHNvYXBIZWFkZXIpIHsKLQlyZXR1cm4gZ2V0SGVhZGVyRnJhZ21lbnQoc29hcEhlYWRlciwgdHJ1ZSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJWFNERnJhZ21lbnQgZ2V0SGVhZGVyRnJhZ21lbnQoU09BUEhlYWRlciBzb2FwSGVhZGVyLCBib29sZWFuIGlzSW5wdXQpIHsKLQlTdHJpbmdCdWZmZXIgaWQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0JUGFydCBwYXJ0ID0gc29hcEhlYWRlci5nZXRFUGFydCgpOwotCWlmIChpc0lucHV0KQotCSAgaWQuYXBwZW5kKEZyYWdtZW50Q29uc3RhbnRzLklOUFVUX0lEKS5hcHBlbmQoc29hcEhlYWRlci5nZXRNZXNzYWdlKCkpLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5QQVJUX1RPS0VOKTsKLQllbHNlCi0JICBpZC5hcHBlbmQoRnJhZ21lbnRDb25zdGFudHMuT1VUUFVUX0lEKS5hcHBlbmQoc29hcEhlYWRlci5nZXRNZXNzYWdlKCkpLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5QQVJUX1RPS0VOKTsKLQkKLQlyZXR1cm4gZ2V0RnJhZ21lbnQocGFydCwgaWQsIHRydWUsIGlzSW5wdXQpOyAvLyBvbmx5IHdyYXAgaW5wdXQgaGVhZGVyIGZyYWdtZW50cwotICB9Ci0gIAotICBwdWJsaWMgSVhTREZyYWdtZW50IGdldEZyYWdtZW50KFBhcnQgcGFydCkgewotICAgIHJldHVybiBnZXRGcmFnbWVudChwYXJ0LCB0cnVlKTsKLSAgfQotCi0gIHB1YmxpYyBJWFNERnJhZ21lbnQgZ2V0RnJhZ21lbnQoUGFydCBwYXJ0LCBib29sZWFuIGlzSW5wdXQpIHsKLSAgICBTdHJpbmdCdWZmZXIgaWQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgaWYgKGlzSW5wdXQpCi0gICAgICBpZC5hcHBlbmQoRnJhZ21lbnRDb25zdGFudHMuSU5QVVRfSUQpOwotICAgIGVsc2UKLSAgICAgIGlkLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5PVVRQVVRfSUQpOwotCi0JcmV0dXJuIGdldEZyYWdtZW50KHBhcnQsIGlkLCBmYWxzZSwgZmFsc2UpOwotICB9Ci0gIAotICBwcml2YXRlIElYU0RGcmFnbWVudCBnZXRGcmFnbWVudChQYXJ0IHBhcnQsIFN0cmluZ0J1ZmZlciBpZCwgYm9vbGVhbiBpc0hlYWRlciwgYm9vbGVhbiB1c2VTT0FQSGVhZGVyV3JhcHBlcikgewotICAgIFN0cmluZyBwYXJ0TmFtZSA9IHBhcnQuZ2V0TmFtZSgpOwotICAgIGlkLmFwcGVuZChwYXJ0TmFtZSk7Ci0gICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnID0gbmV3IFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0gICAgY29uZmlnLnNldElzV1NETFBhcnQodHJ1ZSk7Ci0gICAgY29uZmlnLnNldFdTRExQYXJ0TmFtZShwYXJ0TmFtZSk7Ci0gICAgY29uZmlnLnNldFhTRENvbXBvbmVudChnZXRTY2hlbWEocGFydCwgaWQudG9TdHJpbmcoKSkpOwotICAgIGlmIChpc0RvY3VtZW50U3R5bGUoKSB8fCBpc0hlYWRlcikKLSAgICAgIGNvbmZpZy5zZXRTdHlsZShGcmFnbWVudENvbnN0YW50cy5TVFlMRV9ET0NVTUVOVCk7Ci0gICAgZWxzZQotICAgICAgY29uZmlnLnNldFN0eWxlKEZyYWdtZW50Q29uc3RhbnRzLlNUWUxFX1JQQyk7Ci0gICAgaWYgKG9wZXJhdGlvblR5cGVfID09IEJpbmRpbmdUeXBlcy5TT0FQKQotICAgIHsKLSAgICAgIGlmICghaXNVc2VMaXRlcmFsXykKLSAgICAgICAgY29uZmlnLnNldFBhcnRFbmNvZGluZyhGcmFnbWVudENvbnN0YW50cy5FTkNPRElOR19TT0FQKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgY29uZmlnLnNldFBhcnRFbmNvZGluZyhGcmFnbWVudENvbnN0YW50cy5FTkNPRElOR19VUkwpOwotCi0gICAgLy9idWcgMjQ2MjY1OiBmb3IgdXNhYmlsaXR5LCBpZiB0aGUgdHlwZSBpcyBhIHNvYXAgZW5jb2RlZCBzdHJpbmcgdGhlbiB3ZSBkbyBub3Qgd2FudCB0byBkaXNwbGF5IG9yIHNlbmQgdGhlIG9wdGlvbmFsICJpZCIgb3IgImhyZWYiIGF0dHJpYnV0ZXMKLSAgICBRTmFtZSB0eXBlTmFtZSA9IHBhcnQuZ2V0VHlwZU5hbWUoKTsKLSAgICBpZiAodHlwZU5hbWUgIT0gbnVsbCkgewotICAgIAlTdHJpbmcgbG9jYWxQYXJ0ID0gdHlwZU5hbWUuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgCVN0cmluZyBuYW1lc3BhY2VVUkkgPSB0eXBlTmFtZS5nZXROYW1lc3BhY2VVUkkoKTsKLQotICAgIAlpZiAoInN0cmluZyIuZXF1YWxzKGxvY2FsUGFydCkgJiYgImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIi5lcXVhbHMobmFtZXNwYWNlVVJJKSApIHsKLSAgICAJCWlmIChjb25maWcuZ2V0WFNEQ29tcG9uZW50KCkgaW5zdGFuY2VvZiBYU0RDb21wbGV4VHlwZURlZmluaXRpb24pIHsKLSAgICAJCQlYU0RDb21wbGV4VHlwZURlZmluaXRpb24geHNkID0gKFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbiljb25maWcuZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgCQkJeHNkLmdldEF0dHJpYnV0ZVVzZXMoKS5jbGVhcigpOwotICAgIAkJCXhzZC5nZXRBdHRyaWJ1dGVDb250ZW50cygpLmNsZWFyKCk7Ci0gICAgCQl9Ci0gICAgCX0KLSAgICB9Ci0gIAotICAgIElYU0RGcmFnbWVudCBmcmFnbWVudCA9IGdldFhTRFRvRnJhZ21lbnRDb250cm9sbGVyKCkuZ2V0RnJhZ21lbnQoY29uZmlnLCBpZC50b1N0cmluZygpLCBwYXJ0LmdldE5hbWUoKSk7Ci0gICAgIAotICAgIC8vIGxldCdzIHNlZSBpZiB0aGVyZSdzIGEgY29ycmVzcG9uZGluZyB3cmFwcGVyIGZvciB0aGlzIGZyYWdtZW50Ci0gICAgaWYgKHVzZVNPQVBIZWFkZXJXcmFwcGVyICYmICEoZnJhZ21lbnQgaW5zdGFuY2VvZiBTT0FQSGVhZGVyV3JhcHBlckZyYWdtZW50KSkgewotICAgIAlTT0FQSGVhZGVyV3JhcHBlckZyYWdtZW50IHdyYXBwZXIgPSAoU09BUEhlYWRlcldyYXBwZXJGcmFnbWVudCkgaGVhZGVyQ2FjaGUuZ2V0KGZyYWdtZW50LmdldElEKCkpOwotICAgIAkKLSAgICAJLy8gbm8gd3JhcHBlciwgbGV0J3Mgd3JhcCBpdAotICAgIAlpZiAod3JhcHBlciA9PSBudWxsKSB7Ci0gICAgCQl3cmFwcGVyID0gbmV3IFNPQVBIZWFkZXJXcmFwcGVyRnJhZ21lbnQoZnJhZ21lbnQpOyAgICAJCQotICAgIAkJaGVhZGVyQ2FjaGUucHV0KGZyYWdtZW50LmdldElEKCksIHdyYXBwZXIpOwotICAgIAkJCi0gICAgCQkvLyBhbHNvIHB1dCB0aGlzIHdyYXBwZXIgZnJhZ21lbnQgaW4gdGhlIG1hc3RlciBjYWNoZQotICAgIAkJZ2V0WFNEVG9GcmFnbWVudENvbnRyb2xsZXIoKS5hZGRUb0NhY2hlKHdyYXBwZXIuZ2V0SUQoKSwgd3JhcHBlcik7Ci0gICAgCX0KLSAgICAJCi0gICAgCXJldHVybiB3cmFwcGVyOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZnJhZ21lbnQ7Ci0gIH0KLQotICBwdWJsaWMgSVhTREZyYWdtZW50IGdldEZyYWdtZW50QnlJRChTdHJpbmcgaWQpIHsKLSAgICByZXR1cm4gZ2V0WFNEVG9GcmFnbWVudENvbnRyb2xsZXIoKS5nZXRDYWNoZWRGcmFnbWVudChpZCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmVBbGxGcmFnbWVudCgpIHsKLSAgICBnZXRYU0RUb0ZyYWdtZW50Q29udHJvbGxlcigpLmVtcHR5Q2FjaGUoKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzRG9jdW1lbnRTdHlsZSgpCi0gIHsKLSAgICByZXR1cm4gaXNEb2N1bWVudFN0eWxlXzsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U29hcEFjdGlvbigpCi0gIHsKLSAgICByZXR1cm4gc29hcEFjdGlvbl87Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBpc1VzZUxpdGVyYWwoKQotICB7Ci0gICAgcmV0dXJuIGlzVXNlTGl0ZXJhbF87Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEVuY29kaW5nU3R5bGUoKQotICB7Ci0gICAgcmV0dXJuIGVuY29kaW5nU3R5bGVfOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRFbmNvZGluZ05hbWVzcGFjZSgpCi0gIHsKLSAgICByZXR1cm4gZW5jb2RpbmdOYW1lc3BhY2VfOwotICB9Ci0KLSAgcHVibGljIGludCBnZXRPcGVyYXRpb25UeXBlKCkKLSAgewotICAgIHJldHVybiBvcGVyYXRpb25UeXBlXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2RhdGFtb2RlbC9XU0RMU2VydmljZUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9kYXRhbW9kZWwvV1NETFNlcnZpY2VFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiOWFkOGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2RhdGFtb2RlbC9XU0RMU2VydmljZUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLlBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQWRkcmVzczsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzczsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Nb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuV1NETE1vZGVsQ29uc3RhbnRzOwotCi1wdWJsaWMgY2xhc3MgV1NETFNlcnZpY2VFbGVtZW50IGV4dGVuZHMgV1NETENvbW1vbkVsZW1lbnQKLXsKLQotICBwcml2YXRlIFNlcnZpY2Ugc2VydmljZV87Ci0KLSAgcHVibGljIFdTRExTZXJ2aWNlRWxlbWVudChTdHJpbmcgbmFtZSwgTW9kZWwgbW9kZWwsIFNlcnZpY2Ugc2VydmljZSkKLSAgewotICAgIHN1cGVyKG5hbWUsIG1vZGVsKTsKLSAgICBzZXRTZXJ2aWNlKHNlcnZpY2UpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlKFNlcnZpY2Ugc2VydmljZSkgewotICAgIHNlcnZpY2VfID0gc2VydmljZTsKLSAgICBzZXREb2N1bWVudGF0aW9uKHNlcnZpY2UuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0gIH0KLQotICBwdWJsaWMgU2VydmljZSBnZXRTZXJ2aWNlKCkgewotICAgIHJldHVybiBzZXJ2aWNlXzsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRBZGRyZXNzTG9jYXRpb24oQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgTWFwIHBvcnRzID0gc2VydmljZV8uZ2V0UG9ydHMoKTsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSBwb3J0cy52YWx1ZXMoKS5pdGVyYXRvcigpO2kuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBQb3J0IHBvcnQgPSAoUG9ydClpLm5leHQoKTsKLSAgICAgIGlmIChwb3J0LmdldEJpbmRpbmcoKS5nZXRRTmFtZSgpLmVxdWFscyhiaW5kaW5nLmdldFFOYW1lKCkpKQotICAgICAgewotICAgICAgICBMaXN0IGV4dGVuc2liaWxpdHlFbGVtZW50cyA9IHBvcnQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICAgIGZvciAoSXRlcmF0b3IgaiA9IGV4dGVuc2liaWxpdHlFbGVtZW50cy5pdGVyYXRvcigpO2ouaGFzTmV4dCgpOykKLSAgICAgICAgewotICAgICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpai5uZXh0KCk7Ci0gICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBTT0FQQWRkcmVzcykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBTT0FQQWRkcmVzcyBzb2FwQWRkcmVzcyA9IChTT0FQQWRkcmVzcyllbGVtZW50OwotICAgICAgICAgICAgcmV0dXJuIHNvYXBBZGRyZXNzLmdldExvY2F0aW9uVVJJKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVFRQQWRkcmVzcykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBIVFRQQWRkcmVzcyBodHRwQWRkcmVzcyA9IChIVFRQQWRkcmVzcyllbGVtZW50OwotICAgICAgICAgICAgcmV0dXJuIGh0dHBBZGRyZXNzLmdldExvY2F0aW9uVVJJKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIHZvaWQgYnVpbGRNb2RlbCgpIHsKLSAgICBpZiAoc2VydmljZV8gIT0gbnVsbCkgewotICAgICAgTWFwIHBvcnRzID0gc2VydmljZV8uZ2V0UG9ydHMoKTsKLSAgICAgIE1hcCBiaW5kaW5ncyA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gcG9ydHMudmFsdWVzKCkuaXRlcmF0b3IoKTtpdC5oYXNOZXh0KCk7KSB7Ci0gICAgICAgIFBvcnQgcG9ydCA9IChQb3J0KWl0Lm5leHQoKTsKLSAgICAgICAgQmluZGluZyBiaW5kaW5nID0gcG9ydC5nZXRCaW5kaW5nKCk7Ci0gICAgICAgIGlmIChiaW5kaW5nLmdldFBvcnRUeXBlKCkgPT0gbnVsbCkKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGJpbmRpbmdzLnB1dChiaW5kaW5nLmdldFFOYW1lKCksIGJpbmRpbmcpOwotICAgICAgfQotICAgICAgV1NETEJpbmRpbmdFbGVtZW50W10gd3NkbEJpbmRpbmdFbGVtZW50cyA9IG5ldyBXU0RMQmluZGluZ0VsZW1lbnRbZ2V0TnVtYmVyT2ZFbGVtZW50cyhXU0RMTW9kZWxDb25zdGFudHMuUkVMX1dTRExfQklORElORyldOwotICAgICAgRW51bWVyYXRpb24gZSA9IGdldEVsZW1lbnRzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9CSU5ESU5HKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd3NkbEJpbmRpbmdFbGVtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgICB3c2RsQmluZGluZ0VsZW1lbnRzW2ldID0gKFdTRExCaW5kaW5nRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgICB9Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdzZGxCaW5kaW5nRWxlbWVudHMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgUU5hbWUgcW5hbWUgPSB3c2RsQmluZGluZ0VsZW1lbnRzW2pdLmdldEJpbmRpbmcoKS5nZXRRTmFtZSgpOwotICAgICAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZyliaW5kaW5ncy5nZXQocW5hbWUpOwotICAgICAgICBpZiAoYmluZGluZyAhPSBudWxsKSB7Ci0gICAgICAgICAgYmluZGluZ3MucmVtb3ZlKHFuYW1lKTsKLSAgICAgICAgICB3c2RsQmluZGluZ0VsZW1lbnRzW2pdLnNldEJpbmRpbmcoYmluZGluZyk7Ci0gICAgICAgICAgd3NkbEJpbmRpbmdFbGVtZW50c1tqXS5idWlsZE1vZGVsKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGRpc2Nvbm5lY3Qod3NkbEJpbmRpbmdFbGVtZW50c1tqXSwgV1NETE1vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX0JJTkRJTkcpOwotICAgICAgfQotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IGJpbmRpbmdzLnZhbHVlcygpLml0ZXJhdG9yKCk7aXQuaGFzTmV4dCgpOykgewotICAgICAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZylpdC5uZXh0KCk7Ci0gICAgICAgIFdTRExCaW5kaW5nRWxlbWVudCB3c2RsQmluZGluZ0VsZW1lbnQgPSBuZXcgV1NETEJpbmRpbmdFbGVtZW50KGJpbmRpbmcuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSwgZ2V0TW9kZWwoKSwgYmluZGluZyk7Ci0gICAgICAgIGNvbm5lY3Qod3NkbEJpbmRpbmdFbGVtZW50LFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9CSU5ESU5HLE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgICAgIHdzZGxCaW5kaW5nRWxlbWVudC5idWlsZE1vZGVsKCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSUZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkZTI4MGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50OwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLQotcHVibGljIGludGVyZmFjZSBJRnJhZ21lbnQgewotICBwdWJsaWMgdm9pZCBzZXRJRChTdHJpbmcgaWQpOwotICBwdWJsaWMgU3RyaW5nIGdldElEKCk7Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSk7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpOwotCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci0KLSAgcHVibGljIHZvaWQgc2V0UGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbUtleSwgU3RyaW5nW10gcGFyYW1zKTsKLSAgICBwdWJsaWMgdm9pZCBzZXRQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5LCBWZWN0b3IgcGFyYW1zKTsKLSAgcHVibGljIFN0cmluZ1tdIGdldFBhcmFtZXRlclZhbHVlcyhTdHJpbmcgcGFyYW1LZXkpOwotICBwdWJsaWMgU3RyaW5nIGdldFBhcmFtZXRlclZhbHVlKFN0cmluZyBwYXJhbUtleSwgaW50IHBhcmFtSW5kZXgpOwotCi0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlQWxsUGFyYW1ldGVyVmFsdWVzKCk7Ci0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlUGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbUtleSk7Ci0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlUGFyYW1ldGVyVmFsdWUoU3RyaW5nIHBhcmFtS2V5LCBpbnQgcGFyYW1JbmRleCk7Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJbmZvcm1hdGlvbkZyYWdtZW50KCk7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0V3JpdGVGcmFnbWVudCgpOwotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lTT0FQRW5jQXJyYXlGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lTT0FQRW5jQXJyYXlGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWZhNmRmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JU09BUEVuY0FycmF5RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudDsKLQotcHVibGljIGludGVyZmFjZSBJU09BUEVuY0FycmF5RnJhZ21lbnQgZXh0ZW5kcyBJWFNER3JvdXBTZXFGcmFnbWVudCB7Ci0gIHB1YmxpYyBTdHJpbmcgY3JlYXRlU09BUEVuY0FycmF5SW5zdGFuY2UoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JU09BUEVuY29kaW5nV3JhcHBlckZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVNPQVBFbmNvZGluZ1dyYXBwZXJGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODY1MGNlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JU09BUEVuY29kaW5nV3JhcHBlckZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi1wdWJsaWMgaW50ZXJmYWNlIElTT0FQRW5jb2RpbmdXcmFwcGVyRnJhZ21lbnQgZXh0ZW5kcyBJWFNERGVsZWdhdGlvbkZyYWdtZW50Ci17Ci0gIHB1YmxpYyB2b2lkIHNldFVSSVJlZmVyZW5jZXMoSGFzaHRhYmxlIHVyaVJlZmVyZW5jZXMpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lYU0RBdHRyaWJ1dGVGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lYU0RBdHRyaWJ1dGVGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGYyM2NlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNEQXR0cmlidXRlRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8qKgotKiA8Y29weXJpZ2h0PgotKgotKiBMaWNlbnNlZCBNYXRlcmlhbCAtIFByb3BlcnR5IG9mIElCTQotKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyIC0gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSogVVMgR292ZXJubWVudCBVc2VycyBSZXN0cmljdGVkIFJpZ2h0cyAtIFVzZSwgZHVwbGljYXRpb24gb3IgZGlzY2xvc3VyZQotKiByZXN0cmljdGVkIGJ5IEdTQSBBRFAgU2NoZWR1bGUgQ29udHJhY3Qgd2l0aCBJQk0gQ29ycC4KLSoKLSogPC9jb3B5cmlnaHQ+Ci0qCi0qIEZpbGUgcGx1Z2lucy9jb20uaWJtLmV0b29scy53ZWJzZXJ2aWNlLmV4cGxvcmVyL3dzZXhwbG9yZXIvc3JjL2NvbS9pYm0vZXRvb2xzL3dlYnNlcnZpY2UvZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9JWFNERWxlbWVudEZyYWdtZW50LmphdmEsIHdzYS5ldG9vbHMud3MuZXhwbG9yZXIsIGx1bmFyLTUuMS4yLCAyMDAzMTIzMWEgMQotKiBWZXJzaW9uIDEuMSAwMy8wMi8yOCAxNToyNjowNQotKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVhTREF0dHJpYnV0ZUZyYWdtZW50IGV4dGVuZHMgSVhTRERlbGVnYXRpb25GcmFnbWVudCB7Ci0gIAotICAKLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTRENvbXBsZXhGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lYU0RDb21wbGV4RnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYxZmZjMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTRENvbXBsZXhGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50OwotCi1wdWJsaWMgaW50ZXJmYWNlIElYU0RDb21wbGV4RnJhZ21lbnQgZXh0ZW5kcyBJWFNETWFwRnJhZ21lbnQgewotICBwdWJsaWMgU3RyaW5nIGNyZWF0ZUNvbXBsZXhJbnN0YW5jZSgpOwotICBwdWJsaWMgSVhTREF0dHJpYnV0ZUZyYWdtZW50W10gZ2V0QWxsQXR0cmlidXRlRnJhZ21lbnRzKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTRERlbGVnYXRpb25GcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lYU0REZWxlZ2F0aW9uRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM1NTM1NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTRERlbGVnYXRpb25GcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50OwotCi1wdWJsaWMgaW50ZXJmYWNlIElYU0REZWxlZ2F0aW9uRnJhZ21lbnQgZXh0ZW5kcyBJWFNERnJhZ21lbnQgewotICBwdWJsaWMgdm9pZCBzZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoSVhTREZyYWdtZW50IHhzZEZyYWdtZW50KTsKLSAgcHVibGljIElYU0RGcmFnbWVudCBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNERWxlbWVudEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTREVsZW1lbnRGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGNhZTdmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNERWxlbWVudEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVhTREVsZW1lbnRGcmFnbWVudCBleHRlbmRzIElYU0REZWxlZ2F0aW9uRnJhZ21lbnQgewotICBwdWJsaWMgc3RhdGljIFN0cmluZyBOSUwgPSAibmlsVmFsdWUiOyAgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE5JTF9WQUxVRSA9ICJuaWwiOyAKLSAgCi0gIHB1YmxpYyBpbnQgZ2V0TWluT2NjdXJzKCk7Ci0gIHB1YmxpYyBpbnQgZ2V0TWF4T2NjdXJzKCk7Ci0gIHB1YmxpYyBib29sZWFuIGlzTmlsbGFibGUoKTsKLSAgcHVibGljIFN0cmluZyBnZXROaWxJRCgpOwotICBwdWJsaWMgYm9vbGVhbiBpc05pbCgpOwotICAKLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTREZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTREZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YTU1NTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lYU0RGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50OwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotCi0KLXB1YmxpYyBpbnRlcmZhY2UgSVhTREZyYWdtZW50IGV4dGVuZHMgSUZyYWdtZW50IHsKLSAgcHVibGljIHZvaWQgc2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnKTsKLSAgcHVibGljIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0KLSAgcHVibGljIHZvaWQgc2V0WFNEVHlwZURlZmluaXRpb24oWFNEVHlwZURlZmluaXRpb24gdHlwZURlZik7Ci0gIHB1YmxpYyBYU0RUeXBlRGVmaW5pdGlvbiBnZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotICBwdWJsaWMgRWxlbWVudCBzZXRBdHRyaWJ1dGVzT25JbnN0YW5jZURvY3VtZW50cyhFbGVtZW50IGluc3RhbmNlRG9jdW1lbnQsU3RyaW5nIG5hbWUpOwotICBwdWJsaWMgYm9vbGVhbiBzZXRBdHRyaWJ1dGVQYXJhbXNGcm9tSW5zdGFuY2VEb2N1bWVudHMgKE5vZGUgYXR0cmlidXRlKTsKLSAgcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cyk7Ci0gIHB1YmxpYyBFbGVtZW50W10gZ2VuSW5zdGFuY2VEb2N1bWVudHNGcm9tUGFyYW1ldGVyVmFsdWVzKGJvb2xlYW4gZ2VuWFNJVHlwZSwgSGFzaHRhYmxlIG5hbWVzcGFjZVRhYmxlLCBEb2N1bWVudCBkb2MpOwotCi0gIHB1YmxpYyBTdHJpbmcgZ2VuSUQoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNER3JvdXBBbGxGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lYU0RHcm91cEFsbEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYWVlNTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lYU0RHcm91cEFsbEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVhTREdyb3VwQWxsRnJhZ21lbnQgZXh0ZW5kcyBJWFNER3JvdXBGcmFnbWVudCB7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0R3JvdXBBbGxJbnN0YW5jZSgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lYU0RHcm91cENob2ljZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTREdyb3VwQ2hvaWNlRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQxMDkyOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTREdyb3VwQ2hvaWNlRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RQYXJ0aWNsZTsKLQotcHVibGljIGludGVyZmFjZSBJWFNER3JvdXBDaG9pY2VGcmFnbWVudCBleHRlbmRzIElYU0RHcm91cEZyYWdtZW50IHsKLSAgcHVibGljIFhTRFBhcnRpY2xlW10gZ2V0Q2hvaWNlcygpOwotICBwdWJsaWMgU3RyaW5nIGNyZWF0ZUdyb3VwQ2hvaWNlSW5zdGFuY2UoaW50IGNob2ljZUluZGV4KTsKLSAgcHVibGljIGludCBnZXRDaG9pY2VJbmRleChTdHJpbmcgZ3JvdXBJRCk7Ci0gIHB1YmxpYyB2b2lkIHNldENob2ljZUluZGV4KFN0cmluZyBncm91cElELCBpbnQgY2hvaWNlSW5kZXgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L0lYU0RHcm91cEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTREdyb3VwRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ0NDgzOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTREdyb3VwRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RNb2RlbEdyb3VwOwotCi1wdWJsaWMgaW50ZXJmYWNlIElYU0RHcm91cEZyYWdtZW50IGV4dGVuZHMgSVhTRE1hcEZyYWdtZW50IHsKLSAgcHVibGljIHZvaWQgc2V0WFNETW9kZWxHcm91cChYU0RNb2RlbEdyb3VwIHhzZE1vZGVsR3JvdXApOwotICBwdWJsaWMgWFNETW9kZWxHcm91cCBnZXRYU0RNb2RlbEdyb3VwKCk7Ci0KLSAgcHVibGljIFN0cmluZ1tdIGdldEdyb3VwSURzKCk7Ci0gIHB1YmxpYyBTdHJpbmdbXSBnZXRHcm91cE1lbWJlcklEcyhTdHJpbmcgZ3JvdXBJRCk7Ci0gIHB1YmxpYyBJWFNERnJhZ21lbnRbXSBnZXRHcm91cE1lbWJlckZyYWdtZW50cyhTdHJpbmcgZ3JvdXBJRCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTREdyb3VwU2VxRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNER3JvdXBTZXFGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjU4ZmFhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNER3JvdXBTZXFGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50OwotCi1wdWJsaWMgaW50ZXJmYWNlIElYU0RHcm91cFNlcUZyYWdtZW50IGV4dGVuZHMgSVhTREdyb3VwRnJhZ21lbnQgewotICBwdWJsaWMgU3RyaW5nIGNyZWF0ZUdyb3VwU2VxSW5zdGFuY2UoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNETWFwRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNETWFwRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUxZTQwMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTRE1hcEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVhTRE1hcEZyYWdtZW50IGV4dGVuZHMgSVhTREZyYWdtZW50IHsKLSAgcHVibGljIHZvaWQgc2V0WFNEVG9GcmFnbWVudENvbnRyb2xsZXIoWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlcik7Ci0gIHB1YmxpYyBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBnZXRYU0RUb0ZyYWdtZW50Q29udHJvbGxlcigpOwotCi0gIHB1YmxpYyBTdHJpbmcgY3JlYXRlSW5zdGFuY2UoKTsKLQotICBwdWJsaWMgU3RyaW5nW10gZ2V0RnJhZ21lbnRzT3JkZXIoKTsKLSAgcHVibGljIElYU0RGcmFnbWVudCBnZXRGcmFnbWVudChTdHJpbmcgaWQpOwotICBwdWJsaWMgSVhTREZyYWdtZW50W10gZ2V0RnJhZ21lbnRzKFN0cmluZ1tdIGlkcyk7Ci0gIHB1YmxpYyBJWFNERnJhZ21lbnRbXSBnZXRBbGxGcmFnbWVudHMoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNEU2ltcGxlQXRvbWljRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNEU2ltcGxlQXRvbWljRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY1OGQ1ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTRFNpbXBsZUF0b21pY0ZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVhTRFNpbXBsZUF0b21pY0ZyYWdtZW50IGV4dGVuZHMgSVhTREZyYWdtZW50IHsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNEU2ltcGxlTGlzdEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTRFNpbXBsZUxpc3RGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWIzODA4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNEU2ltcGxlTGlzdEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVhTRFNpbXBsZUxpc3RGcmFnbWVudCBleHRlbmRzIElYU0RNYXBGcmFnbWVudCB7Ci0gIHB1YmxpYyBTdHJpbmcgY3JlYXRlTGlzdEluc3RhbmNlKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvSVhTRFNpbXBsZVVuaW9uRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNEU2ltcGxlVW5pb25GcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2RjYWQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9JWFNEU2ltcGxlVW5pb25GcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNpbXBsZVR5cGVEZWZpbml0aW9uOwotCi1wdWJsaWMgaW50ZXJmYWNlIElYU0RTaW1wbGVVbmlvbkZyYWdtZW50IGV4dGVuZHMgSVhTRE1hcEZyYWdtZW50IHsKLSAgcHVibGljIFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uW10gZ2V0TWVtYmVyVHlwZURlZmluaXRpb25zKCk7Ci0gIHB1YmxpYyBTdHJpbmcgY3JlYXRlVW5pb25JbnN0YW5jZShpbnQgbWVtYmVyVHlwZUluZGV4KTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RBdHRyaWJ1dGVVc2VUb0ZyYWdtZW50TWFwcGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNEQXR0cmlidXRlVXNlVG9GcmFnbWVudE1hcHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmUxMGVkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RBdHRyaWJ1dGVVc2VUb0ZyYWdtZW50TWFwcGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKioKLSogPGNvcHlyaWdodD4KLSoKLSogTGljZW5zZWQgTWF0ZXJpYWwgLSBQcm9wZXJ0eSBvZiBJQk0KLSogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0qIFVTIEdvdmVybm1lbnQgVXNlcnMgUmVzdHJpY3RlZCBSaWdodHMgLSBVc2UsIGR1cGxpY2F0aW9uIG9yIGRpc2Nsb3N1cmUKLSogcmVzdHJpY3RlZCBieSBHU0EgQURQIFNjaGVkdWxlIENvbnRyYWN0IHdpdGggSUJNIENvcnAuCi0qCi0qIDwvY29weXJpZ2h0PgotKgotKiBGaWxlIHBsdWdpbnMvY29tLmlibS5ldG9vbHMud2Vic2VydmljZS5leHBsb3Jlci93c2V4cGxvcmVyL3NyYy9jb20vaWJtL2V0b29scy93ZWJzZXJ2aWNlL2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERWxlbWVudERlY2xhcmF0aW9uVG9GcmFnbWVudE1hcHBlci5qYXZhLCB3c2EuZXRvb2xzLndzLmV4cGxvcmVyLCBsdW5hci01LjEuMiwgMjAwMzEyMzFhIDIKLSogVmVyc2lvbiAxLjIgMDMvMDYvMDUgMTQ6MTc6NDQKLSovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5YU0RBdHRyaWJ1dGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC54c2QuV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQXR0cmlidXRlVXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFR5cGVEZWZpbml0aW9uOwotCi1wdWJsaWMgY2xhc3MgWFNEQXR0cmlidXRlVXNlVG9GcmFnbWVudE1hcHBlciBleHRlbmRzIFhTRFRvRnJhZ21lbnRNYXBwZXIgewotICBwdWJsaWMgWFNEQXR0cmlidXRlVXNlVG9GcmFnbWVudE1hcHBlcihYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyLCBXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIgd3NkbFRvWFNETWFwcGVyKSB7Ci0gICAgc3VwZXIoY29udHJvbGxlciwgd3NkbFRvWFNETWFwcGVyKTsKLSAgfQotCi0gIHB1YmxpYyBJWFNERnJhZ21lbnQgZ2V0RnJhZ21lbnQoWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBTdHJpbmcgaWQsIFN0cmluZyBuYW1lKSB7Ci0gICAJWFNEQXR0cmlidXRlVXNlIGF0dHJpYnV0ZSA9IChYU0RBdHRyaWJ1dGVVc2UpY29uZmlnLmdldFhTRENvbXBvbmVudCgpOwotICAgIGlmIChhdHRyaWJ1dGUgIT0gbnVsbCAmJiBhdHRyaWJ1dGUuZ2V0QXR0cmlidXRlRGVjbGFyYXRpb24oKSAhPSBudWxsKSB7Ci0gICAJICBYU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbiByZXNvbHZlZEF0dHJpYnV0ZSA9IHJlc29sdmVYU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbihhdHRyaWJ1dGUuZ2V0QXR0cmlidXRlRGVjbGFyYXRpb24oKSk7Ci0gICAgICBYU0RUeXBlRGVmaW5pdGlvbiB0eXBlRGVmID0gZ2V0WFNEVHlwZURlZmluaXRpb24ocmVzb2x2ZWRBdHRyaWJ1dGUpOwotICAgICAgSVhTREF0dHJpYnV0ZUZyYWdtZW50IGF0dHJpYnV0ZUZyYWcgPSBuZXcgWFNEQXR0cmlidXRlRnJhZ21lbnQoaWQsIHJlc29sdmVkQXR0cmlidXRlLmdldE5hbWUoKSwgY29uZmlnKTsKLSAgICAgIGF0dHJpYnV0ZUZyYWcuc2V0WFNEVHlwZURlZmluaXRpb24odHlwZURlZik7Ci0gICAgICBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBhdHRyaWJ1dGVUeXBlQ29uZmlnID0gbmV3IFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0gICAgICBhdHRyaWJ1dGVUeXBlQ29uZmlnLnNldFhTRENvbXBvbmVudCh0eXBlRGVmKTsKLSAgICAgIGF0dHJpYnV0ZVR5cGVDb25maWcuc2V0U3R5bGUoY29uZmlnLmdldFN0eWxlKCkpOwotICAgICAgYXR0cmlidXRlVHlwZUNvbmZpZy5zZXRQYXJ0RW5jb2RpbmcoY29uZmlnLmdldFBhcnRFbmNvZGluZygpKTsKLSAgICAgIGF0dHJpYnV0ZVR5cGVDb25maWcuc2V0V1NETFBhcnROYW1lKGNvbmZpZy5nZXRXU0RMUGFydE5hbWUoKSk7Ci0gICAgICBJWFNERnJhZ21lbnQgeHNkRnJhZ21lbnQgPSBnZXRDb250cm9sbGVyKCkuZ2V0RnJhZ21lbnQoYXR0cmlidXRlVHlwZUNvbmZpZywgYXR0cmlidXRlRnJhZy5nZW5JRCgpLCByZXNvbHZlZEF0dHJpYnV0ZS5nZXROYW1lKCkpOwotICAgICAgYXR0cmlidXRlRnJhZy5zZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoeHNkRnJhZ21lbnQpOwotICAgICAgcmV0dXJuIGF0dHJpYnV0ZUZyYWc7Ci0gICAgfQotICAgIHJldHVybiBnZXRYU0REZWZhdWx0RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gIH0KLQotICBwcml2YXRlIFhTREF0dHJpYnV0ZURlY2xhcmF0aW9uIHJlc29sdmVYU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbihYU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbiBhdHRyaWJ1dGUpIHsKLSAgICAvLyBwb3J0IHRvIG9yZy5lY2xpcHNlLnhzZAotICAgIGlmIChhdHRyaWJ1dGUuZ2V0UmVzb2x2ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpICE9IG51bGwpCi0gICAgewotICAgICAgWFNEQXR0cmlidXRlRGVjbGFyYXRpb24gcmVzb2x2ZWRBdHRyaWJ1dGUgPSBhdHRyaWJ1dGUuZ2V0UmVzb2x2ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpOwotICAgICAgaWYgKCFpc0NvbXBvbmVudFJlc29sdmFibGUocmVzb2x2ZWRBdHRyaWJ1dGUpKQotICAgICAgewotICAgICAgICBYU0RDb21wb25lbnQgcmVzb2x2ZWRDb21wb25lbnQgPSBnZXRXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIoKS5yZXNvbHZlWFNETmFtZWRDb21wb25lbnQocmVzb2x2ZWRBdHRyaWJ1dGUpOwotICAgICAgICBpZiAocmVzb2x2ZWRDb21wb25lbnQgIT0gbnVsbCAmJiAocmVzb2x2ZWRDb21wb25lbnQgaW5zdGFuY2VvZiBYU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbikpCi0gICAgICAgICAgcmVzb2x2ZWRBdHRyaWJ1dGUgPSAoWFNEQXR0cmlidXRlRGVjbGFyYXRpb24pcmVzb2x2ZWRDb21wb25lbnQ7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzb2x2ZWRBdHRyaWJ1dGU7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBhdHRyaWJ1dGU7Ci0gIH0KLQotICBwcml2YXRlIFhTRFR5cGVEZWZpbml0aW9uIGdldFhTRFR5cGVEZWZpbml0aW9uKFhTREF0dHJpYnV0ZURlY2xhcmF0aW9uIGF0dHJpYnV0ZSkgewotICAgIC8vIHBvcnQgdG8gb3JnLmVjbGlwc2UueHNkCi0gICAgaWYgKGF0dHJpYnV0ZS5nZXRUeXBlRGVmaW5pdGlvbigpICE9IG51bGwpCi0gICAgICByZXR1cm4gYXR0cmlidXRlLmdldFR5cGVEZWZpbml0aW9uKCk7Ci0gICAgLy8gcG9ydCB0byBvcmcuZWNsaXBzZS54c2QKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUuZ2V0QW5vbnltb3VzVHlwZURlZmluaXRpb24oKSAhPSBudWxsKQotICAgICAgcmV0dXJuIGF0dHJpYnV0ZS5nZXRBbm9ueW1vdXNUeXBlRGVmaW5pdGlvbigpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhUeXBlVG9GcmFnbWVudE1hcHBlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhUeXBlVG9GcmFnbWVudE1hcHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDg5YTI4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4VHlwZVRvRnJhZ21lbnRNYXBwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNEQ29tcGxleEZpeEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNEQ29tcGxleFJhbmdlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5YU0RDb21wbGV4U2ltcGxlQ29udGVudEZpeEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNEQ29tcGxleFNpbXBsZUNvbnRlbnRSYW5nZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LnV0aWwuWFNEVHlwZURlZmluaXRpb25VdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnhzZC5XU0RMUGFydHNUb1hTRFR5cGVNYXBwZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRENvbXBsZXhUeXBlQ29udGVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb250ZW50VHlwZUNhdGVnb3J5OwotCi1wdWJsaWMgY2xhc3MgWFNEQ29tcGxleFR5cGVUb0ZyYWdtZW50TWFwcGVyIGV4dGVuZHMgWFNEVG9GcmFnbWVudE1hcHBlciB7Ci0gIHB1YmxpYyBYU0RDb21wbGV4VHlwZVRvRnJhZ21lbnRNYXBwZXIoWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlciwgV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyIHdzZGxUb1hTRE1hcHBlcikgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsIHdzZGxUb1hTRE1hcHBlcik7Ci0gIH0KLQotICBwdWJsaWMgSVhTREZyYWdtZW50IGdldEZyYWdtZW50KFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSkgewotICAgIFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbiBjb21wbGV4VHlwZSA9IChYU0RDb21wbGV4VHlwZURlZmluaXRpb24pY29uZmlnLmdldFhTRENvbXBvbmVudCgpOwotICAgIGludCBjYXRlZ29yeSA9IGNvbXBsZXhUeXBlLmdldENvbnRlbnRUeXBlQ2F0ZWdvcnkoKS5nZXRWYWx1ZSgpOwotICAgIGlmIChjb21wbGV4VHlwZSAhPSBudWxsICYmIGNvbXBsZXhUeXBlLmlzTWl4ZWQoKSkKLSAgICAgIHJldHVybiBnZXRYU0REZWZhdWx0RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gICAgWFNEQ29tcGxleFR5cGVDb250ZW50IGNvbXBsZXhUeXBlQ29udGVudCA9IFhTRFR5cGVEZWZpbml0aW9uVXRpbC5nZXRYU0RDb21wbGV4VHlwZUNvbnRlbnQoY29tcGxleFR5cGUpOwotICAgIGlmIChjb21wbGV4VHlwZUNvbnRlbnQgIT0gbnVsbCkKLSAgICAgIHJldHVybiBnZXRYU0RDb21wbGV4RnJhZ21lbnQoY2F0ZWdvcnksY29uZmlnLCBpZCwgbmFtZSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGdldFhTREVtcHR5RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gIH0KLQotICBwcml2YXRlIElYU0RGcmFnbWVudCBnZXRYU0RDb21wbGV4RnJhZ21lbnQoaW50IGNhdGVnb3J5LFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSkgewotICAgIGludCBtaW5PY2N1cnMgPSBjb25maWcuZ2V0TWluT2NjdXJzKCk7Ci0gICAgaW50IG1heE9jY3VycyA9IGNvbmZpZy5nZXRNYXhPY2N1cnMoKTsKLSAgICBpZiAobWluT2NjdXJzID09IG1heE9jY3VycykKLSAgICAgIGlmKGNhdGVnb3J5ID09IFhTRENvbnRlbnRUeXBlQ2F0ZWdvcnkuU0lNUExFKXsKLSAgICAgIAlyZXR1cm4gbmV3IFhTRENvbXBsZXhTaW1wbGVDb250ZW50Rml4RnJhZ21lbnQoaWQsIG5hbWUsIGNvbmZpZywgZ2V0Q29udHJvbGxlcigpKTsKLSAgICAgICAgCi0gICAgICB9Ci0gICAgICBlbHNlCQotICAgICAgCXJldHVybiBuZXcgWFNEQ29tcGxleEZpeEZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIGdldENvbnRyb2xsZXIoKSk7Ci0gICAgZWxzZSAKLSAgICAJaWYoY2F0ZWdvcnkgPT0gWFNEQ29udGVudFR5cGVDYXRlZ29yeS5TSU1QTEUpCi0gICAgCSAgcmV0dXJuIG5ldyBYU0RDb21wbGV4U2ltcGxlQ29udGVudFJhbmdlRnJhZ21lbnQoaWQsIG5hbWUsIGNvbmZpZywgZ2V0Q29udHJvbGxlcigpKTsKLSAgICAJZWxzZQotICAgICAgICAgIHJldHVybiBuZXcgWFNEQ29tcGxleFJhbmdlRnJhZ21lbnQoaWQsIG5hbWUsIGNvbmZpZywgZ2V0Q29udHJvbGxlcigpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L1hTREVsZW1lbnREZWNsYXJhdGlvblRvRnJhZ21lbnRNYXBwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RFbGVtZW50RGVjbGFyYXRpb25Ub0ZyYWdtZW50TWFwcGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmNGQ2YTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L1hTREVsZW1lbnREZWNsYXJhdGlvblRvRnJhZ21lbnRNYXBwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDA0ICAgMTgxMDY1IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0UgZG9lcyBub3QgaGFuZGxlIHR5cGVzIHJlZmVyZW5jZWQgYWNyb3NzIGlubGluZSBzY2hlbWFzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5YU0RFbGVtZW50RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwueHNkLldTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb25jcmV0ZUNvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RQYXJ0aWNsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb247Ci0KLQotcHVibGljIGNsYXNzIFhTREVsZW1lbnREZWNsYXJhdGlvblRvRnJhZ21lbnRNYXBwZXIgZXh0ZW5kcyBYU0RUb0ZyYWdtZW50TWFwcGVyIHsKLSAgcHVibGljIFhTREVsZW1lbnREZWNsYXJhdGlvblRvRnJhZ21lbnRNYXBwZXIoWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlciwgV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyIHdzZGxUb1hTRE1hcHBlcikgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsIHdzZGxUb1hTRE1hcHBlcik7Ci0gIH0KLQotICBwdWJsaWMgSVhTREZyYWdtZW50IGdldEZyYWdtZW50KFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSkgewotICAgIFhTREVsZW1lbnREZWNsYXJhdGlvbiBlbGVtZW50ID0gKFhTREVsZW1lbnREZWNsYXJhdGlvbiljb25maWcuZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkgewotICAgICAgWFNERWxlbWVudERlY2xhcmF0aW9uIHJlc29sdmVkRWxlbWVudCA9IHJlc29sdmVYU0RFbGVtZW50RGVjbGFyYXRpb24oZWxlbWVudCk7Ci0gICAgICBYU0RUeXBlRGVmaW5pdGlvbiB0eXBlRGVmID0gcmVzb2x2ZVhTRFR5cGVEZWZpbml0aW9uKGdldFhTRFR5cGVEZWZpbml0aW9uKHJlc29sdmVkRWxlbWVudCkpOwotICAgICAgaWYgKHR5cGVEZWYgIT0gbnVsbCkgewotICAgICAgICBpbnQgbWluT2NjdXJzID0gRnJhZ21lbnRDb25zdGFudHMuREVGQVVMVF9NSU5fT0NDVVJTOwotICAgICAgICBpbnQgbWF4T2NjdXJzID0gRnJhZ21lbnRDb25zdGFudHMuREVGQVVMVF9NQVhfT0NDVVJTOwotICAgICAgICBYU0RDb25jcmV0ZUNvbXBvbmVudCBjb25jcmV0ZUNvbXBvbmVudCA9IGVsZW1lbnQuZ2V0Q29udGFpbmVyKCk7Ci0gICAgICAgIGlmIChjb25jcmV0ZUNvbXBvbmVudCAhPSBudWxsICYmIGNvbmNyZXRlQ29tcG9uZW50IGluc3RhbmNlb2YgWFNEUGFydGljbGUpIHsKLSAgICAgICAgICBYU0RQYXJ0aWNsZSBwYXJ0aWNsZSA9IChYU0RQYXJ0aWNsZSljb25jcmV0ZUNvbXBvbmVudDsKLSAgICAgICAgICBpZiAocGFydGljbGUuaXNTZXRNaW5PY2N1cnMoKSkKLSAgICAgICAgICAgIG1pbk9jY3VycyA9IHBhcnRpY2xlLmdldE1pbk9jY3VycygpOwotICAgICAgICAgIGlmIChwYXJ0aWNsZS5pc1NldE1heE9jY3VycygpKQotICAgICAgICAgICAgbWF4T2NjdXJzID0gcGFydGljbGUuZ2V0TWF4T2NjdXJzKCk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uZmlnLnNldE1pbk9jY3VycyhtaW5PY2N1cnMpOwotICAgICAgICBjb25maWcuc2V0TWF4T2NjdXJzKG1heE9jY3Vycyk7Ci0gICAgICAgIElYU0RFbGVtZW50RnJhZ21lbnQgZWxlbWVudEZyYWcgPSBuZXcgWFNERWxlbWVudEZyYWdtZW50KGlkLCByZXNvbHZlZEVsZW1lbnQuZ2V0TmFtZSgpLCBjb25maWcpOwotICAgICAgICBlbGVtZW50RnJhZy5zZXRYU0RUeXBlRGVmaW5pdGlvbih0eXBlRGVmKTsKLSAgICAgICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gZWxlbWVudFR5cGVDb25maWcgPSBuZXcgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLSAgICAgICAgZWxlbWVudFR5cGVDb25maWcuc2V0WFNEQ29tcG9uZW50KHR5cGVEZWYpOwotICAgICAgICBlbGVtZW50VHlwZUNvbmZpZy5zZXRNaW5PY2N1cnMobWluT2NjdXJzKTsKLSAgICAgICAgZWxlbWVudFR5cGVDb25maWcuc2V0TWF4T2NjdXJzKG1heE9jY3Vycyk7Ci0gICAgICAgIGVsZW1lbnRUeXBlQ29uZmlnLnNldFN0eWxlKGNvbmZpZy5nZXRTdHlsZSgpKTsKLSAgICAgICAgZWxlbWVudFR5cGVDb25maWcuc2V0UGFydEVuY29kaW5nKGNvbmZpZy5nZXRQYXJ0RW5jb2RpbmcoKSk7Ci0gICAgICAgIGVsZW1lbnRUeXBlQ29uZmlnLnNldFdTRExQYXJ0TmFtZShjb25maWcuZ2V0V1NETFBhcnROYW1lKCkpOwotICAgICAgICBJWFNERnJhZ21lbnQgeHNkRnJhZ21lbnQgPSBnZXRDb250cm9sbGVyKCkuZ2V0RnJhZ21lbnQoZWxlbWVudFR5cGVDb25maWcsIGVsZW1lbnRGcmFnLmdlbklEKCksIHJlc29sdmVkRWxlbWVudC5nZXROYW1lKCkpOwotICAgICAgICBlbGVtZW50RnJhZy5zZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoeHNkRnJhZ21lbnQpOwotICAgICAgICByZXR1cm4gZWxlbWVudEZyYWc7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBnZXRYU0REZWZhdWx0RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gIH0KLQotICBwcml2YXRlIFhTREVsZW1lbnREZWNsYXJhdGlvbiByZXNvbHZlWFNERWxlbWVudERlY2xhcmF0aW9uKFhTREVsZW1lbnREZWNsYXJhdGlvbiBlbGVtZW50KSB7Ci0gICAgLy8gcG9ydCB0byBvcmcuZWNsaXBzZS54c2QKLSAgICBpZiAoZWxlbWVudC5nZXRSZXNvbHZlZEVsZW1lbnREZWNsYXJhdGlvbigpICE9IG51bGwpCi0gICAgewotICAgICAgWFNERWxlbWVudERlY2xhcmF0aW9uIHJlc29sdmVkRWxlbWVudCA9IGVsZW1lbnQuZ2V0UmVzb2x2ZWRFbGVtZW50RGVjbGFyYXRpb24oKTsKLSAgICAgIGlmICghaXNDb21wb25lbnRSZXNvbHZhYmxlKHJlc29sdmVkRWxlbWVudCkpCi0gICAgICB7Ci0gICAgICAgIFhTRENvbXBvbmVudCByZXNvbHZlZENvbXBvbmVudCA9IGdldFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcigpLnJlc29sdmVYU0ROYW1lZENvbXBvbmVudChyZXNvbHZlZEVsZW1lbnQpOwotICAgICAgICBpZiAocmVzb2x2ZWRDb21wb25lbnQgIT0gbnVsbCAmJiAocmVzb2x2ZWRDb21wb25lbnQgaW5zdGFuY2VvZiBYU0RFbGVtZW50RGVjbGFyYXRpb24pKQotICAgICAgICAgIHJlc29sdmVkRWxlbWVudCA9IChYU0RFbGVtZW50RGVjbGFyYXRpb24pcmVzb2x2ZWRDb21wb25lbnQ7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzb2x2ZWRFbGVtZW50OwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gZWxlbWVudDsKLSAgfQotICAKLSAgcHJpdmF0ZSBYU0RUeXBlRGVmaW5pdGlvbiByZXNvbHZlWFNEVHlwZURlZmluaXRpb24oWFNEVHlwZURlZmluaXRpb24gdHlwZURlZikgewotCSAgCi0JICBpZiAoIWlzQ29tcG9uZW50UmVzb2x2YWJsZSh0eXBlRGVmKSkgewotCQkgIFhTRENvbXBvbmVudCByZXNvbHZlZENvbXBvbmVudCA9IGdldFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcigpLnJlc29sdmVYU0ROYW1lZENvbXBvbmVudCh0eXBlRGVmKTsKLQkJICBpZiAocmVzb2x2ZWRDb21wb25lbnQgaW5zdGFuY2VvZiBYU0RUeXBlRGVmaW5pdGlvbikKLQkJCSAgcmV0dXJuIChYU0RUeXBlRGVmaW5pdGlvbikgcmVzb2x2ZWRDb21wb25lbnQ7Ci0JICB9Ci0JICAKLQkgIHJldHVybiB0eXBlRGVmOwotICB9Ci0KLSAgcHJpdmF0ZSBYU0RUeXBlRGVmaW5pdGlvbiBnZXRYU0RUeXBlRGVmaW5pdGlvbihYU0RFbGVtZW50RGVjbGFyYXRpb24gZWxlbWVudCkgewotICAgIC8vIHBvcnQgdG8gb3JnLmVjbGlwc2UueHNkCi0gICAgaWYgKGVsZW1lbnQuZ2V0VHlwZURlZmluaXRpb24oKSAhPSBudWxsKQotICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0VHlwZURlZmluaXRpb24oKTsKLSAgICAvLyBwb3J0IHRvIG9yZy5lY2xpcHNlLnhzZAotICAgIGVsc2UgaWYgKGVsZW1lbnQuZ2V0QW5vbnltb3VzVHlwZURlZmluaXRpb24oKSAhPSBudWxsKQotICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0QW5vbnltb3VzVHlwZURlZmluaXRpb24oKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RMaXRlcmFsWE1MRW5jb2RpbmdUb0ZyYWdtZW50TWFwcGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNETGl0ZXJhbFhNTEVuY29kaW5nVG9GcmFnbWVudE1hcHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDAyZDljLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RMaXRlcmFsWE1MRW5jb2RpbmdUb0ZyYWdtZW50TWFwcGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC54c2QuV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RBdHRyaWJ1dGVVc2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RFbGVtZW50RGVjbGFyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFBhcnRpY2xlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RQYXJ0aWNsZUNvbnRlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNpbXBsZVR5cGVEZWZpbml0aW9uOwotCi1wdWJsaWMgY2xhc3MgWFNETGl0ZXJhbFhNTEVuY29kaW5nVG9GcmFnbWVudE1hcHBlciBleHRlbmRzIFhTRFRvRnJhZ21lbnRNYXBwZXIgewotICBwcml2YXRlIFhTRFNpbXBsZVR5cGVUb0ZyYWdtZW50TWFwcGVyIHhzZFNpbXBsZU1hcHBlcl87Ci0gIHByaXZhdGUgWFNEQ29tcGxleFR5cGVUb0ZyYWdtZW50TWFwcGVyIHhzZENvbXBsZXhNYXBwZXJfOwotICBwcml2YXRlIFhTREVsZW1lbnREZWNsYXJhdGlvblRvRnJhZ21lbnRNYXBwZXIgeHNkRWxlbWVudE1hcHBlcl87Ci0gIHByaXZhdGUgWFNEQXR0cmlidXRlVXNlVG9GcmFnbWVudE1hcHBlciB4c2RBdHRyaWJ1dGVNYXBwZXJfOwotICBwcml2YXRlIFhTRFBhcnRpY2xlVG9GcmFnbWVudE1hcHBlciB4c2RQYXJ0aWNsZU1hcHBlcl87Ci0KLSAgcHVibGljIFhTRExpdGVyYWxYTUxFbmNvZGluZ1RvRnJhZ21lbnRNYXBwZXIoWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlciwgV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyIHdzZGxUb1hTRE1hcHBlcikgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsIHdzZGxUb1hTRE1hcHBlcik7Ci0gICAgeHNkU2ltcGxlTWFwcGVyXyA9IG51bGw7Ci0gICAgeHNkQ29tcGxleE1hcHBlcl8gPSBudWxsOwotICAgIHhzZEVsZW1lbnRNYXBwZXJfID0gbnVsbDsKLSAgICB4c2RBdHRyaWJ1dGVNYXBwZXJfID0gbnVsbDsKLSAgICB4c2RQYXJ0aWNsZU1hcHBlcl89IG51bGw7Ci0gIH0KLQotICBwcml2YXRlIFhTRFNpbXBsZVR5cGVUb0ZyYWdtZW50TWFwcGVyIGdldFhTRFNpbXBsZU1hcHBlcigpIHsKLSAgICBpZiAoeHNkU2ltcGxlTWFwcGVyXyA9PSBudWxsKQotICAgICAgeHNkU2ltcGxlTWFwcGVyXyA9IG5ldyBYU0RTaW1wbGVUeXBlVG9GcmFnbWVudE1hcHBlcihnZXRDb250cm9sbGVyKCksIGdldFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcigpKTsKLSAgICByZXR1cm4geHNkU2ltcGxlTWFwcGVyXzsKLSAgfQotCi0gIHByaXZhdGUgWFNEQ29tcGxleFR5cGVUb0ZyYWdtZW50TWFwcGVyIGdldFhTRENvbXBsZXhNYXBwZXIoKSB7Ci0gICAgaWYgKHhzZENvbXBsZXhNYXBwZXJfID09IG51bGwpCi0gICAgICB4c2RDb21wbGV4TWFwcGVyXyA9IG5ldyBYU0RDb21wbGV4VHlwZVRvRnJhZ21lbnRNYXBwZXIoZ2V0Q29udHJvbGxlcigpLCBnZXRXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIoKSk7Ci0gICAgcmV0dXJuIHhzZENvbXBsZXhNYXBwZXJfOwotICB9Ci0KLSAgcHJpdmF0ZSBYU0RFbGVtZW50RGVjbGFyYXRpb25Ub0ZyYWdtZW50TWFwcGVyIGdldFhTREVsZW1lbnRNYXBwZXIoKSB7Ci0gICAgaWYgKHhzZEVsZW1lbnRNYXBwZXJfID09IG51bGwpCi0gICAgICB4c2RFbGVtZW50TWFwcGVyXyA9IG5ldyBYU0RFbGVtZW50RGVjbGFyYXRpb25Ub0ZyYWdtZW50TWFwcGVyKGdldENvbnRyb2xsZXIoKSwgZ2V0V1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyKCkpOwotICAgIHJldHVybiB4c2RFbGVtZW50TWFwcGVyXzsKLSAgfQotCi0gIHByaXZhdGUgWFNEQXR0cmlidXRlVXNlVG9GcmFnbWVudE1hcHBlciBnZXRYU0RBdHRyaWJ1dGVNYXBwZXIoKSB7Ci0gICAgaWYgKHhzZEF0dHJpYnV0ZU1hcHBlcl8gPT0gbnVsbCkKLSAgICAgIHhzZEF0dHJpYnV0ZU1hcHBlcl8gPSBuZXcgWFNEQXR0cmlidXRlVXNlVG9GcmFnbWVudE1hcHBlcihnZXRDb250cm9sbGVyKCksIGdldFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcigpKTsKLSAgICByZXR1cm4geHNkQXR0cmlidXRlTWFwcGVyXzsKLSAgfQotICAKLSAgcHJpdmF0ZSBYU0RQYXJ0aWNsZVRvRnJhZ21lbnRNYXBwZXIgZ2V0WFNEUGFydGljbGVNYXBwZXIoKSB7Ci0gICAgaWYgKHhzZFBhcnRpY2xlTWFwcGVyXyA9PSBudWxsKQotICAgICAgeHNkUGFydGljbGVNYXBwZXJfID0gbmV3IFhTRFBhcnRpY2xlVG9GcmFnbWVudE1hcHBlcihnZXRDb250cm9sbGVyKCksIGdldFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcigpKTsKLSAgICByZXR1cm4geHNkUGFydGljbGVNYXBwZXJfOwotICB9Ci0KLSAgcHVibGljIElYU0RGcmFnbWVudCBnZXRGcmFnbWVudChYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFN0cmluZyBpZCwgU3RyaW5nIG5hbWUpIHsKLSAgICBjb25maWcgPSByZXNvbHZlWFNEQ29tcG9uZW50KGNvbmZpZyk7Ci0gICAgWFNEQ29tcG9uZW50IGNvbXBvbmVudCA9IGNvbmZpZy5nZXRYU0RDb21wb25lbnQoKTsKLSAgICBpZiAoIWlzQ29tcG9uZW50UmVzb2x2YWJsZShjb21wb25lbnQpKQotICAgICAgcmV0dXJuIGdldFhTRERlZmF1bHRGcmFnbWVudChjb25maWcsIGlkLCBuYW1lKTsKLSAgICBlbHNlIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBYU0RFbGVtZW50RGVjbGFyYXRpb24pCi0gICAgICByZXR1cm4gZ2V0WFNERWxlbWVudE1hcHBlcigpLmdldEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICAgIGVsc2UgaWYgKGNvbXBvbmVudCBpbnN0YW5jZW9mIFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uKQotICAgICAgcmV0dXJuIGdldFhTRFNpbXBsZU1hcHBlcigpLmdldEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICAgIGVsc2UgaWYgKGNvbXBvbmVudCBpbnN0YW5jZW9mIFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbikKLSAgICAgIHJldHVybiBnZXRYU0RDb21wbGV4TWFwcGVyKCkuZ2V0RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gICAgZWxzZSBpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgWFNEUGFydGljbGUpCi0gICAgICByZXR1cm4gZ2V0WFNEUGFydGljbGVNYXBwZXIoKS5nZXRGcmFnbWVudChjb25maWcsIGlkLCBuYW1lKTsKLSAgICBlbHNlIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBYU0RQYXJ0aWNsZUNvbnRlbnQpCi0gICAgICByZXR1cm4gZ2V0WFNEUGFydGljbGVNYXBwZXIoKS5nZXRGcmFnbWVudChjb25maWcsIGlkLCBuYW1lKTsKLSAgICBlbHNlIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBYU0RBdHRyaWJ1dGVVc2UpCi0gICAgICByZXR1cm4gZ2V0WFNEQXR0cmlidXRlTWFwcGVyKCkuZ2V0RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7CQotICAgIGVsc2UKLSAgICAgIHJldHVybiBnZXRYU0REZWZhdWx0RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RQYXJ0aWNsZVRvRnJhZ21lbnRNYXBwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RQYXJ0aWNsZVRvRnJhZ21lbnRNYXBwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRjNjc5NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNEUGFydGljbGVUb0ZyYWdtZW50TWFwcGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNER3JvdXBBbGxGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTREdyb3VwQ2hvaWNlRml4RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5YU0RHcm91cENob2ljZVJhbmdlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5YU0RHcm91cFNlcUZpeEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNER3JvdXBTZXFSYW5nZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnhzZC5XU0RMUGFydHNUb1hTRFR5cGVNYXBwZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRENvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcG9zaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29uY3JldGVDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE1vZGVsR3JvdXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE1vZGVsR3JvdXBEZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RQYXJ0aWNsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEUGFydGljbGVDb250ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RXaWxkY2FyZDsKLQotCi1wdWJsaWMgY2xhc3MgWFNEUGFydGljbGVUb0ZyYWdtZW50TWFwcGVyIGV4dGVuZHMgWFNEVG9GcmFnbWVudE1hcHBlciB7Ci0gIHB1YmxpYyBYU0RQYXJ0aWNsZVRvRnJhZ21lbnRNYXBwZXIoWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlciwgV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyIHdzZGxUb1hTRE1hcHBlcikgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsIHdzZGxUb1hTRE1hcHBlcik7Ci0gIH0KLQotICBwdWJsaWMgSVhTREZyYWdtZW50IGdldEZyYWdtZW50KFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSkgewotICAgIFhTRENvbXBvbmVudCBjb21wb25lbnQgPSBjb25maWcuZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgWFNEUGFydGljbGVDb250ZW50IHhzZFBhcnRpY2xlQ29udGVudDsKLSAgICBpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgWFNEUGFydGljbGUpCi0gICAgICB4c2RQYXJ0aWNsZUNvbnRlbnQgPSAoKFhTRFBhcnRpY2xlKWNvbXBvbmVudCkuZ2V0Q29udGVudCgpOwotICAgIGVsc2UgaWYgKGNvbXBvbmVudCBpbnN0YW5jZW9mIFhTRFBhcnRpY2xlQ29udGVudCkKLSAgICAgIHhzZFBhcnRpY2xlQ29udGVudCA9IChYU0RQYXJ0aWNsZUNvbnRlbnQpY29tcG9uZW50OwotICAgIGVsc2UKLSAgICAgIHhzZFBhcnRpY2xlQ29udGVudCA9IG51bGw7Ci0gICAgaWYgKHhzZFBhcnRpY2xlQ29udGVudCAhPSBudWxsKSB7Ci0gICAgICBpZiAoeHNkUGFydGljbGVDb250ZW50IGluc3RhbmNlb2YgWFNETW9kZWxHcm91cERlZmluaXRpb24pCi0gICAgICAgIHJldHVybiBnZXRYU0RNb2RlbEdyb3VwRGVmRnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSwgKFhTRE1vZGVsR3JvdXBEZWZpbml0aW9uKXhzZFBhcnRpY2xlQ29udGVudCk7Ci0gICAgICBlbHNlIGlmICh4c2RQYXJ0aWNsZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RNb2RlbEdyb3VwKQotICAgICAgICByZXR1cm4gZ2V0WFNETW9kZWxHcm91cEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUsIChYU0RNb2RlbEdyb3VwKXhzZFBhcnRpY2xlQ29udGVudCk7Ci0gICAgICBlbHNlIGlmICh4c2RQYXJ0aWNsZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RXaWxkY2FyZCkKLSAgICAgICAgcmV0dXJuIGdldFhTRFdpbGRjYXJkRnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSwgKFhTRFdpbGRjYXJkKXhzZFBhcnRpY2xlQ29udGVudCk7Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBnZXRYU0REZWZhdWx0RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBnZXRYU0REZWZhdWx0RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gIH0KLQotICBwcml2YXRlIElYU0RGcmFnbWVudCBnZXRYU0RNb2RlbEdyb3VwRGVmRnJhZ21lbnQoWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RNb2RlbEdyb3VwRGVmaW5pdGlvbiB4c2RNb2RlbEdyb3VwRGVmKSB7Ci0gICAgWFNETW9kZWxHcm91cERlZmluaXRpb24gcmVzb2x2ZWRYU0RNb2RlbEdyb3VwRGVmID0geHNkTW9kZWxHcm91cERlZjsKLSAgICBpZiAoeHNkTW9kZWxHcm91cERlZi5pc01vZGVsR3JvdXBEZWZpbml0aW9uUmVmZXJlbmNlKCkpCi0gICAgICByZXNvbHZlZFhTRE1vZGVsR3JvdXBEZWYgPSB4c2RNb2RlbEdyb3VwRGVmLmdldFJlc29sdmVkTW9kZWxHcm91cERlZmluaXRpb24oKTsKLSAgICBYU0RNb2RlbEdyb3VwIHhzZE1vZGVsR3JvdXAgPSByZXNvbHZlZFhTRE1vZGVsR3JvdXBEZWYuZ2V0TW9kZWxHcm91cCgpOwotICAgIGlmICh4c2RNb2RlbEdyb3VwID09IG51bGwpCi0gICAgICByZXR1cm4gZ2V0WFNERGVmYXVsdEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBnZXRYU0RNb2RlbEdyb3VwRnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSwgeHNkTW9kZWxHcm91cCk7Ci0gIH0KLQotICBwcml2YXRlIElYU0RGcmFnbWVudCBnZXRYU0RNb2RlbEdyb3VwRnJhZ21lbnQoWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RNb2RlbEdyb3VwIHhzZE1vZGVsR3JvdXApIHsKLSAgICBpbnQgbWluT2NjdXJzID0gRnJhZ21lbnRDb25zdGFudHMuREVGQVVMVF9NSU5fT0NDVVJTOwotICAgIGludCBtYXhPY2N1cnMgPSBGcmFnbWVudENvbnN0YW50cy5ERUZBVUxUX01BWF9PQ0NVUlM7Ci0gICAgWFNEQ29uY3JldGVDb21wb25lbnQgY29uY3JldGVDb21wb25lbnQgPSB4c2RNb2RlbEdyb3VwLmdldENvbnRhaW5lcigpOwotICAgIGlmIChjb25jcmV0ZUNvbXBvbmVudCAhPSBudWxsICYmIGNvbmNyZXRlQ29tcG9uZW50IGluc3RhbmNlb2YgWFNEUGFydGljbGUpIHsKLSAgICAgIFhTRFBhcnRpY2xlIHBhcnRpY2xlID0gKFhTRFBhcnRpY2xlKWNvbmNyZXRlQ29tcG9uZW50OwotICAgICAgaWYgKHBhcnRpY2xlLmlzU2V0TWluT2NjdXJzKCkpCi0gICAgICAgIG1pbk9jY3VycyA9IHBhcnRpY2xlLmdldE1pbk9jY3VycygpOwotICAgICAgaWYgKHBhcnRpY2xlLmlzU2V0TWF4T2NjdXJzKCkpCi0gICAgICAgIG1heE9jY3VycyA9IHBhcnRpY2xlLmdldE1heE9jY3VycygpOwotICAgIH0KLSAgICBjb25maWcuc2V0TWluT2NjdXJzKG1pbk9jY3Vycyk7Ci0gICAgY29uZmlnLnNldE1heE9jY3VycyhtYXhPY2N1cnMpOwotICAgIAotICAgIHN3aXRjaCAoeHNkTW9kZWxHcm91cC5nZXRDb21wb3NpdG9yKCkuZ2V0VmFsdWUoKSkgewotICAgICAgY2FzZSBYU0RDb21wb3NpdG9yLlNFUVVFTkNFOiAKLSAgICAgICAgaWYgKG1pbk9jY3VycyA9PSBtYXhPY2N1cnMpCi0gICAgICAgICAgcmV0dXJuIG5ldyBYU0RHcm91cFNlcUZpeEZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIGdldENvbnRyb2xsZXIoKSwgeHNkTW9kZWxHcm91cCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gbmV3IFhTREdyb3VwU2VxUmFuZ2VGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnLCBnZXRDb250cm9sbGVyKCksIHhzZE1vZGVsR3JvdXApOwotICAgICAgY2FzZSBYU0RDb21wb3NpdG9yLkNIT0lDRToKLSAgICAgICAgaWYgKG1pbk9jY3VycyA9PSBtYXhPY2N1cnMpCi0gICAgICAgICAgcmV0dXJuIG5ldyBYU0RHcm91cENob2ljZUZpeEZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIGdldENvbnRyb2xsZXIoKSwgeHNkTW9kZWxHcm91cCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gbmV3IFhTREdyb3VwQ2hvaWNlUmFuZ2VGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnLCBnZXRDb250cm9sbGVyKCksIHhzZE1vZGVsR3JvdXApOwotICAgICAgY2FzZSBYU0RDb21wb3NpdG9yLkFMTDoKLSAgICAgICAgcmV0dXJuIG5ldyBYU0RHcm91cEFsbEZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIGdldENvbnRyb2xsZXIoKSwgeHNkTW9kZWxHcm91cCk7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZ2V0WFNERGVmYXVsdEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgSVhTREZyYWdtZW50IGdldFhTRFdpbGRjYXJkRnJhZ21lbnQoWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RXaWxkY2FyZCB4c2RQYXJ0aWNsZUNvbnRlbnQpIHsKLSAgICByZXR1cm4gZ2V0WFNERGVmYXVsdEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNEU09BUEVuY29kaW5nVG9GcmFnbWVudE1hcHBlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L1hTRFNPQVBFbmNvZGluZ1RvRnJhZ21lbnRNYXBwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkxZDE5NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNEU09BUEVuY29kaW5nVG9GcmFnbWVudE1hcHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5TT0FQRW5jQXJyYXlGaXhGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlNPQVBFbmNBcnJheVJhbmdlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5TT0FQRW5jb2RpbmdXcmFwcGVyRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQudXRpbC5YU0RUeXBlRGVmaW5pdGlvblV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwueHNkLldTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQXR0cmlidXRlR3JvdXBDb250ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb21wbGV4VHlwZUNvbnRlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RNb2RlbEdyb3VwOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RQYXJ0aWNsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEUGFydGljbGVDb250ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgWFNEU09BUEVuY29kaW5nVG9GcmFnbWVudE1hcHBlciBleHRlbmRzIFhTRFRvRnJhZ21lbnRNYXBwZXIgewotICBwcml2YXRlIFhTRExpdGVyYWxYTUxFbmNvZGluZ1RvRnJhZ21lbnRNYXBwZXIgeHNkTGl0ZXJhbE1hcHBlcl87Ci0gIHByaXZhdGUgWFNEQ29tcGxleFR5cGVUb0ZyYWdtZW50TWFwcGVyIHhzZENvbXBsZXhNYXBwZXJfOwotCi0gIHB1YmxpYyBYU0RTT0FQRW5jb2RpbmdUb0ZyYWdtZW50TWFwcGVyKFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGNvbnRyb2xsZXIsIFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlciB3c2RsVG9YU0RNYXBwZXIpIHsKLSAgICBzdXBlcihjb250cm9sbGVyLCB3c2RsVG9YU0RNYXBwZXIpOwotICAgIHhzZExpdGVyYWxNYXBwZXJfID0gbnVsbDsKLSAgICB4c2RDb21wbGV4TWFwcGVyXyA9IG51bGw7Ci0gIH0KLQotICBwcml2YXRlIFhTRExpdGVyYWxYTUxFbmNvZGluZ1RvRnJhZ21lbnRNYXBwZXIgZ2V0WFNETGl0ZXJhbE1hcHBlcigpIHsKLSAgICBpZiAoeHNkTGl0ZXJhbE1hcHBlcl8gPT0gbnVsbCkKLSAgICAgIHhzZExpdGVyYWxNYXBwZXJfID0gbmV3IFhTRExpdGVyYWxYTUxFbmNvZGluZ1RvRnJhZ21lbnRNYXBwZXIoZ2V0Q29udHJvbGxlcigpLCBnZXRXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIoKSk7Ci0gICAgcmV0dXJuIHhzZExpdGVyYWxNYXBwZXJfOwotICB9Ci0KLSAgcHJpdmF0ZSBYU0RDb21wbGV4VHlwZVRvRnJhZ21lbnRNYXBwZXIgZ2V0WFNEQ29tcGxleE1hcHBlcigpIHsKLSAgICBpZiAoeHNkQ29tcGxleE1hcHBlcl8gPT0gbnVsbCkKLSAgICAgIHhzZENvbXBsZXhNYXBwZXJfID0gbmV3IFhTRENvbXBsZXhUeXBlVG9GcmFnbWVudE1hcHBlcihnZXRDb250cm9sbGVyKCksIGdldFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcigpKTsKLSAgICAgcmV0dXJuIHhzZENvbXBsZXhNYXBwZXJfOwotICB9Ci0KLSAgcHVibGljIElYU0RGcmFnbWVudCBnZXRGcmFnbWVudChYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFN0cmluZyBpZCwgU3RyaW5nIG5hbWUpIHsKLSAgICBpZiAoY29uZmlnLmdldElzV1NETFBhcnQoKSkgewotICAgICAgSVNPQVBFbmNvZGluZ1dyYXBwZXJGcmFnbWVudCB3cmFwcGVyRnJhZ21lbnQgPSBuZXcgU09BUEVuY29kaW5nV3JhcHBlckZyYWdtZW50KGlkLCBuYW1lLCBudWxsKTsKLSAgICAgIFN0cmluZyBkZWxlZ2F0aW9uRnJhZ0lkID0gd3JhcHBlckZyYWdtZW50LmdlbklEKCk7Ci0gICAgICBJWFNERnJhZ21lbnQgZGVsZWdhdGlvbkZyYWdtZW50ID0gZ2V0RnJhZ21lbnREZWxlZ2F0ZShjb25maWcsIGRlbGVnYXRpb25GcmFnSWQsIG5hbWUpOwotICAgICAgd3JhcHBlckZyYWdtZW50LnNldFhTRERlbGVnYXRpb25GcmFnbWVudChkZWxlZ2F0aW9uRnJhZ21lbnQpOwotICAgICAgZ2V0Q29udHJvbGxlcigpLmFkZFRvQ2FjaGUoZGVsZWdhdGlvbkZyYWdJZCwgZGVsZWdhdGlvbkZyYWdtZW50KTsKLSAgICAgIHJldHVybiB3cmFwcGVyRnJhZ21lbnQ7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBnZXRGcmFnbWVudERlbGVnYXRlKGNvbmZpZywgaWQsIG5hbWUpOwotICB9Ci0KLSAgcHVibGljIElYU0RGcmFnbWVudCBnZXRGcmFnbWVudERlbGVnYXRlKFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSkgewotICAgIGNvbmZpZyA9IHJlc29sdmVYU0RDb21wb25lbnQoY29uZmlnKTsKLSAgICBYU0RDb21wb25lbnQgY29tcG9uZW50ID0gY29uZmlnLmdldFhTRENvbXBvbmVudCgpOwotICAgIGlmICghaXNDb21wb25lbnRSZXNvbHZhYmxlKGNvbXBvbmVudCkpCi0gICAgICByZXR1cm4gZ2V0WFNERGVmYXVsdEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICAgIGVsc2UgaWYgKGNvbXBvbmVudCBpbnN0YW5jZW9mIFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbikgewotICAgICAgWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uIGNvbXBsZXhUeXBlID0gKFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbiljb21wb25lbnQ7Ci0gICAgICBpZiAoWFNEVHlwZURlZmluaXRpb25VdGlsLmlzU29hcEVuY0FycmF5KGNvbXBsZXhUeXBlKSkKLSAgICAgICAgcmV0dXJuIGdldFNPQVBFbmNBcnJheUZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUsIGNvbXBsZXhUeXBlKTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGdldFhTRENvbXBsZXhNYXBwZXIoKS5nZXRGcmFnbWVudChjb25maWcsIGlkLCBuYW1lKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGdldFhTRExpdGVyYWxNYXBwZXIoKS5nZXRGcmFnbWVudChjb25maWcsIGlkLCBuYW1lKTsKLSAgfQotCi0gIHByaXZhdGUgSVhTREZyYWdtZW50IGdldFNPQVBFbmNBcnJheUZyYWdtZW50KFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uIGNvbXBsZXhUeXBlKSB7Ci0gICAgRUxpc3QgeHNkQXR0ckNvbnRlbnRzID0gY29tcGxleFR5cGUuZ2V0QXR0cmlidXRlQ29udGVudHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHhzZEF0dHJDb250ZW50cy5zaXplKCk7IGkrKykgewotICAgICAgU3RyaW5nIHNvYXBFbmNBcnJheVR5cGVOYW1lc3BhY2VVUkkgPSBudWxsOwotICAgICAgU3RyaW5nIHNvYXBFbmNBcnJheVR5cGVMb2NhbE5hbWUgPSBudWxsOwotICAgICAgaW50IHNvYXBFbmNBcnJheURpbWVuc2lvbiA9IDA7Ci0gICAgICBYU0RBdHRyaWJ1dGVHcm91cENvbnRlbnQgeHNkQXR0ckNvbnRlbnQgPSAoWFNEQXR0cmlidXRlR3JvdXBDb250ZW50KXhzZEF0dHJDb250ZW50cy5nZXQoaSk7Ci0gICAgICBFbGVtZW50IGVsZW1lbnQgPSB4c2RBdHRyQ29udGVudC5nZXRFbGVtZW50KCk7Ci0gICAgICBTdHJpbmcgYXJyYXlUeXBlQXR0ciA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTlMoRnJhZ21lbnRDb25zdGFudHMuVVJJX1dTREwsIEZyYWdtZW50Q29uc3RhbnRzLlFOQU1FX0xPQ0FMX05BTUVfQVJSQVlfVFlQRSk7Ci0gICAgICBpZiAoYXJyYXlUeXBlQXR0ciAhPSBudWxsICYmIGFycmF5VHlwZUF0dHIubGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgIGludCBjb2xvbiA9IGFycmF5VHlwZUF0dHIuaW5kZXhPZihGcmFnbWVudENvbnN0YW50cy5DT0xPTik7Ci0gICAgICAgIFN0cmluZyBuc1ByZWZpeCA9IChjb2xvbiA+IDApID8gYXJyYXlUeXBlQXR0ci5zdWJzdHJpbmcoMCwgY29sb24pIDogbnVsbDsKLSAgICAgICAgc29hcEVuY0FycmF5VHlwZU5hbWVzcGFjZVVSSSA9IChTdHJpbmcpeHNkQXR0ckNvbnRlbnQuZ2V0U2NoZW1hKCkuZ2V0UU5hbWVQcmVmaXhUb05hbWVzcGFjZU1hcCgpLmdldChuc1ByZWZpeCk7Ci0gICAgICAgIGludCBkaW1lbnNpb25JbmRleCA9IGFycmF5VHlwZUF0dHIuaW5kZXhPZihGcmFnbWVudENvbnN0YW50cy5MRUZUX1NRVUFSRV9CUkFDS0VUKTsKLSAgICAgICAgc29hcEVuY0FycmF5VHlwZUxvY2FsTmFtZSA9IGFycmF5VHlwZUF0dHIuc3Vic3RyaW5nKGNvbG9uICsgMSwgZGltZW5zaW9uSW5kZXgpOwotICAgICAgICBTdHJpbmcgZGltZW5zaW9uU3RyaW5nID0gYXJyYXlUeXBlQXR0ci5zdWJzdHJpbmcoZGltZW5zaW9uSW5kZXgsIGFycmF5VHlwZUF0dHIubGVuZ3RoKCkpOwotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGRpbWVuc2lvblN0cmluZy5sZW5ndGgoKSAtIDE7IGorKykgewotICAgICAgICAgIGlmIChkaW1lbnNpb25TdHJpbmcuY2hhckF0KGopID09IEZyYWdtZW50Q29uc3RhbnRzLkxFRlRfU1FVQVJFX0JSQUNLRVQuY2hhckF0KDApICYmIGRpbWVuc2lvblN0cmluZy5jaGFyQXQoaiArIDEpID09IEZyYWdtZW50Q29uc3RhbnRzLlJJR0hUX1NRVUFSRV9CUkFDS0VULmNoYXJBdCgwKSkgewotICAgICAgICAgICAgc29hcEVuY0FycmF5RGltZW5zaW9uKys7Ci0gICAgICAgICAgICBqKys7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgc29hcEVuY0FycmF5RGltZW5zaW9uID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKHNvYXBFbmNBcnJheVR5cGVOYW1lc3BhY2VVUkkgIT0gbnVsbCAmJiBzb2FwRW5jQXJyYXlUeXBlTG9jYWxOYW1lICE9IG51bGwgJiYgc29hcEVuY0FycmF5RGltZW5zaW9uID09IDEpIHsKLSAgICAgICAgWFNEQ29tcG9uZW50IHNvYXBFbmNBcnJheVR5cGUgPSBnZXRXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIoKS5nZXRYU0RUeXBlRnJvbVNjaGVtYShzb2FwRW5jQXJyYXlUeXBlTmFtZXNwYWNlVVJJLCBzb2FwRW5jQXJyYXlUeXBlTG9jYWxOYW1lLCBmYWxzZSk7Ci0gICAgICAgIGlmIChzb2FwRW5jQXJyYXlUeXBlICE9IG51bGwgJiYgc29hcEVuY0FycmF5VHlwZSBpbnN0YW5jZW9mIFhTRFR5cGVEZWZpbml0aW9uKSB7Ci0gICAgICAgICAgWFNETW9kZWxHcm91cCBzZXF1ZW5jZSA9IG51bGw7Ci0gICAgICAgICAgWFNEQ29tcGxleFR5cGVDb250ZW50IGNvbXBsZXhUeXBlQ29udGVudCA9IFhTRFR5cGVEZWZpbml0aW9uVXRpbC5nZXRYU0RDb21wbGV4VHlwZUNvbnRlbnQoY29tcGxleFR5cGUpOwotICAgICAgICAgIGlmIChjb21wbGV4VHlwZUNvbnRlbnQgIT0gbnVsbCAmJiAoY29tcGxleFR5cGVDb250ZW50IGluc3RhbmNlb2YgWFNEUGFydGljbGUpKSB7Ci0gICAgICAgICAgICBYU0RQYXJ0aWNsZUNvbnRlbnQgeHNkUGFydGljbGVDb250ZW50ID0gKChYU0RQYXJ0aWNsZSljb21wbGV4VHlwZUNvbnRlbnQpLmdldENvbnRlbnQoKTsKLSAgICAgICAgICAgIGlmICh4c2RQYXJ0aWNsZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RNb2RlbEdyb3VwKQotICAgICAgICAgICAgICBzZXF1ZW5jZSA9IChYU0RNb2RlbEdyb3VwKXhzZFBhcnRpY2xlQ29udGVudDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgSVNPQVBFbmNBcnJheUZyYWdtZW50IGZyYWc7Ci0gICAgICAgICAgaWYgKGNvbmZpZy5nZXRNaW5PY2N1cnMoKSA9PSBjb25maWcuZ2V0TWF4T2NjdXJzKCkpCi0gICAgICAgICAgICBmcmFnID0gbmV3IFNPQVBFbmNBcnJheUZpeEZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIGdldENvbnRyb2xsZXIoKSwgc2VxdWVuY2UpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZyYWcgPSBuZXcgU09BUEVuY0FycmF5UmFuZ2VGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnLCBnZXRDb250cm9sbGVyKCksIHNlcXVlbmNlKTsKLSAgICAgICAgICBmcmFnLnNldFhTRFR5cGVEZWZpbml0aW9uKChYU0RUeXBlRGVmaW5pdGlvbilzb2FwRW5jQXJyYXlUeXBlKTsKLSAgICAgICAgICByZXR1cm4gZnJhZzsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZ2V0WFNEQ29tcGxleE1hcHBlcigpLmdldEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlVHlwZVRvRnJhZ21lbnRNYXBwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVUeXBlVG9GcmFnbWVudE1hcHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTk3ZjI0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVUeXBlVG9GcmFnbWVudE1hcHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5YU0RTaW1wbGVBdG9taWNEYXRlVGltZUZpeEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNEU2ltcGxlQXRvbWljRGF0ZVRpbWVSYW5nZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNEU2ltcGxlQXRvbWljRW51bUZpeEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNEU2ltcGxlQXRvbWljRW51bVJhbmdlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5YU0RTaW1wbGVBdG9taWNGaXhGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRFNpbXBsZUF0b21pY0ZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNEU2ltcGxlQXRvbWljUmFuZ2VGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRFNpbXBsZUxpc3RGaXhGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRFNpbXBsZUxpc3RSYW5nZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNEU2ltcGxlVW5pb25GaXhGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRFNpbXBsZVVuaW9uUmFuZ2VGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC51dGlsLk9wdGlvblZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC51dGlsLlhTRFR5cGVEZWZpbml0aW9uVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC54c2QuV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTaW1wbGVUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEVmFyaWV0eTsKLQotcHVibGljIGNsYXNzIFhTRFNpbXBsZVR5cGVUb0ZyYWdtZW50TWFwcGVyIGV4dGVuZHMgWFNEVG9GcmFnbWVudE1hcHBlciB7Ci0gIHB1YmxpYyBYU0RTaW1wbGVUeXBlVG9GcmFnbWVudE1hcHBlcihYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyLCBXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIgd3NkbFRvWFNETWFwcGVyKSB7Ci0gICAgc3VwZXIoY29udHJvbGxlciwgd3NkbFRvWFNETWFwcGVyKTsKLSAgfQotCi0gIHB1YmxpYyBJWFNERnJhZ21lbnQgZ2V0RnJhZ21lbnQoWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBTdHJpbmcgaWQsIFN0cmluZyBuYW1lKSB7Ci0gICAgWFNEU2ltcGxlVHlwZURlZmluaXRpb24gc2ltcGxlVHlwZSA9IChYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbiljb25maWcuZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgaWYgKHNpbXBsZVR5cGUgIT0gbnVsbCAmJiBzaW1wbGVUeXBlLmdldFZhcmlldHkoKSAhPSBudWxsKSB7Ci0gICAgICBzd2l0Y2ggKHNpbXBsZVR5cGUuZ2V0VmFyaWV0eSgpLmdldFZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBYU0RWYXJpZXR5LkFUT01JQzoKLSAgICAgICAgICByZXR1cm4gZ2V0WFNEU2ltcGxlQXRvbWljRnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gICAgICAgIGNhc2UgWFNEVmFyaWV0eS5MSVNUOgotICAgICAgICAgIHJldHVybiBnZXRYU0RTaW1wbGVMaXN0RnJhZ21lbnQoY29uZmlnLCBpZCwgbmFtZSk7Ci0gICAgICAgIGNhc2UgWFNEVmFyaWV0eS5VTklPTjoKLSAgICAgICAgICByZXR1cm4gZ2V0WFNEU2ltcGxlVW5pb25GcmFnbWVudChjb25maWcsIGlkLCBuYW1lKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICByZXR1cm4gZ2V0WFNERGVmYXVsdEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gZ2V0WFNERGVmYXVsdEZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICB9Ci0KLSAgcHJpdmF0ZSBJWFNERnJhZ21lbnQgZ2V0WFNEU2ltcGxlQXRvbWljRnJhZ21lbnQoWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBTdHJpbmcgaWQsIFN0cmluZyBuYW1lKSB7Ci0gICAgYm9vbGVhbiBpc0ZpeGVkID0gKChjb25maWcuZ2V0TWluT2NjdXJzKCkgPT0gY29uZmlnLmdldE1heE9jY3VycygpKSAmJiBjb25maWcuZ2V0TWF4T2NjdXJzKCkgIT0gRnJhZ21lbnRDb25zdGFudHMuVU5CT1VOREVEKTsKLSAgICBYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbiB4c2RTaW1wbGVUeXBlRGVmID0gKFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uKWNvbmZpZy5nZXRYU0RDb21wb25lbnQoKTsKLSAgICBYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbiB4c2RCYXNlU2ltcGxlVHlwZURlZiA9IChYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbilYU0RUeXBlRGVmaW5pdGlvblV0aWwucmVzb2x2ZVRvWFNEQnVpbHRJblR5cGVEZWZpbml0aW9uKHhzZFNpbXBsZVR5cGVEZWYpOwotICAgIFN0cmluZyBiYXNlU2ltcGxlVHlwZURlZk5TID0gbnVsbDsKLSAgICBTdHJpbmcgYmFzZVNpbXBsZVR5cGVEZWZOYW1lID0gbnVsbDsKLSAgICBpZiAoeHNkQmFzZVNpbXBsZVR5cGVEZWYgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBiYXNlU2ltcGxlVHlwZURlZk5TID0geHNkQmFzZVNpbXBsZVR5cGVEZWYuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0gICAgICBiYXNlU2ltcGxlVHlwZURlZk5hbWUgPSB4c2RCYXNlU2ltcGxlVHlwZURlZi5nZXROYW1lKCk7Ci0gICAgfQotICAgIGJvb2xlYW4gaXNFbnVtID0gaXNTaW1wbGVUeXBlRW51bWVyYXRpb24oeHNkU2ltcGxlVHlwZURlZik7Ci0gICAgaWYgKEZyYWdtZW50Q29uc3RhbnRzLlVSSV9YU0QuZXF1YWxzKGJhc2VTaW1wbGVUeXBlRGVmTlMpKQotICAgIHsKLSAgICAgIGlmIChiYXNlU2ltcGxlVHlwZURlZk5hbWUuZXF1YWxzKCJkYXRlIikpCi0gICAgICAgIHJldHVybiBnZXRYU0RTaW1wbGVEYXRlVGltZUZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIEFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0RBVEUseHNkU2ltcGxlVHlwZURlZixpc0VudW0saXNGaXhlZCk7Ci0gICAgICBlbHNlIGlmIChiYXNlU2ltcGxlVHlwZURlZk5hbWUuZXF1YWxzKCJkYXRlVGltZSIpKQotICAgICAgICByZXR1cm4gZ2V0WFNEU2ltcGxlRGF0ZVRpbWVGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnLCBBY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRV9EQVRFVElNRSx4c2RTaW1wbGVUeXBlRGVmLGlzRW51bSxpc0ZpeGVkKTsKLSAgICAgIGVsc2UgaWYgKGJhc2VTaW1wbGVUeXBlRGVmTmFtZS5lcXVhbHMoImdZZWFyTW9udGgiKSkKLSAgICAgICAgcmV0dXJuIGdldFhTRFNpbXBsZURhdGVUaW1lRnJhZ21lbnQoaWQsIG5hbWUsIGNvbmZpZywgQWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEVfR1lFQVJNT05USCx4c2RTaW1wbGVUeXBlRGVmLGlzRW51bSxpc0ZpeGVkKTsKLSAgICAgIGVsc2UgaWYgKGJhc2VTaW1wbGVUeXBlRGVmTmFtZS5lcXVhbHMoImdNb250aERheSIpKQotICAgICAgICByZXR1cm4gZ2V0WFNEU2ltcGxlRGF0ZVRpbWVGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnLCBBY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRV9HTU9OVEhEQVkseHNkU2ltcGxlVHlwZURlZixpc0VudW0saXNGaXhlZCk7Ci0gICAgICBlbHNlIGlmIChiYXNlU2ltcGxlVHlwZURlZk5hbWUuZXF1YWxzKCJnRGF5IikpCi0gICAgICAgIHJldHVybiBnZXRYU0RTaW1wbGVHRGF5RnJhZ21lbnQoaWQsIG5hbWUsIGNvbmZpZywgeHNkU2ltcGxlVHlwZURlZixpc0VudW0saXNGaXhlZCk7ICAgICAgICAKLSAgICAgIGVsc2UgaWYgKGJhc2VTaW1wbGVUeXBlRGVmTmFtZS5lcXVhbHMoImJvb2xlYW4iKSkKLSAgICAgICAgcmV0dXJuIGdldFhTRFNpbXBsZUJvb2xlYW5GcmFnbWVudChpZCwgbmFtZSwgY29uZmlnLCB4c2RTaW1wbGVUeXBlRGVmLGlzRW51bSxpc0ZpeGVkKTsKLSAgICB9Ci0KLSAgICBpZiAoaXNFbnVtKQotICAgIHsKLSAgICAgIGlmIChpc0ZpeGVkKQotICAgICAgICByZXR1cm4gbmV3IFhTRFNpbXBsZUF0b21pY0VudW1GaXhGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnLCB4c2RTaW1wbGVUeXBlRGVmLmdldEVudW1lcmF0aW9uRmFjZXRzKCkpOwotICAgICAgZWxzZQotICAgICAgICByZXR1cm4gbmV3IFhTRFNpbXBsZUF0b21pY0VudW1SYW5nZUZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIHhzZFNpbXBsZVR5cGVEZWYuZ2V0RW51bWVyYXRpb25GYWNldHMoKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpZiAoaXNGaXhlZCkKLSAgICAgICAgcmV0dXJuIG5ldyBYU0RTaW1wbGVBdG9taWNGaXhGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnKTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIG5ldyBYU0RTaW1wbGVBdG9taWNSYW5nZUZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgWFNEU2ltcGxlQXRvbWljRnJhZ21lbnQgZ2V0WFNEU2ltcGxlRGF0ZVRpbWVGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIGludCBjYWxlbmRhclR5cGUsWFNEU2ltcGxlVHlwZURlZmluaXRpb24geHNkRGF0ZVRpbWVUeXBlLGJvb2xlYW4gaXNFbnVtLGJvb2xlYW4gaXNGaXhlZCkKLSAgewotICAgIGlmIChpc0VudW0pCi0gICAgewotICAgICAgaWYgKGlzRml4ZWQpCi0gICAgICAgIHJldHVybiBuZXcgWFNEU2ltcGxlQXRvbWljRW51bUZpeEZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIHhzZERhdGVUaW1lVHlwZS5nZXRFbnVtZXJhdGlvbkZhY2V0cygpKTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIG5ldyBYU0RTaW1wbGVBdG9taWNFbnVtUmFuZ2VGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnLCB4c2REYXRlVGltZVR5cGUuZ2V0RW51bWVyYXRpb25GYWNldHMoKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpZiAoaXNGaXhlZCkKLSAgICAgICAgcmV0dXJuIG5ldyBYU0RTaW1wbGVBdG9taWNEYXRlVGltZUZpeEZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIGNhbGVuZGFyVHlwZSk7Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBuZXcgWFNEU2ltcGxlQXRvbWljRGF0ZVRpbWVSYW5nZUZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIGNhbGVuZGFyVHlwZSk7Ci0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIFhTRFNpbXBsZUF0b21pY0ZyYWdtZW50IGdldFhTRFNpbXBsZUdEYXlGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uIHhzZERhdGVUaW1lVHlwZSxib29sZWFuIGlzRW51bSxib29sZWFuIGlzRml4ZWQpCi0gIHsKLSAgICBpZiAoaXNFbnVtKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgT3B0aW9uVmVjdG9yIG9wdGlvblZlY3RvciA9IG5ldyBPcHRpb25WZWN0b3IoKTsKLSAgICBTdHJpbmdCdWZmZXIgdmFsdWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgZm9yIChpbnQgaT0xO2k8PTMxO2krKykKLSAgICB7Ci0gICAgICB2YWx1ZS5zZXRMZW5ndGgoMCk7Ci0gICAgICB2YWx1ZS5hcHBlbmQoIi0tLSIpOwotICAgICAgaWYgKGk8MTApCi0gICAgICAgIHZhbHVlLmFwcGVuZCgwKTsKLSAgICAgIHZhbHVlLmFwcGVuZChpKTsKLSAgICAgIG9wdGlvblZlY3Rvci5hZGRPcHRpb24oU3RyaW5nLnZhbHVlT2YoaSksdmFsdWUudG9TdHJpbmcoKSk7Ci0gICAgfQotICAgIGlmIChpc0ZpeGVkKQotICAgICAgcmV0dXJuIG5ldyBYU0RTaW1wbGVBdG9taWNFbnVtRml4RnJhZ21lbnQoaWQsIG5hbWUsIGNvbmZpZywgb3B0aW9uVmVjdG9yKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbmV3IFhTRFNpbXBsZUF0b21pY0VudW1SYW5nZUZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIG9wdGlvblZlY3Rvcik7Ci0gIH0KLQotICBwcml2YXRlIFhTRFNpbXBsZUF0b21pY0ZyYWdtZW50IGdldFhTRFNpbXBsZUJvb2xlYW5GcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uIHhzZEJvb2xlYW5UeXBlLGJvb2xlYW4gaXNFbnVtLGJvb2xlYW4gaXNGaXhlZCkKLSAgewotICAgIGlmIChpc0VudW0pCi0gICAgICByZXR1cm4gbnVsbDsKLSAgICBPcHRpb25WZWN0b3Igb3B0aW9uVmVjdG9yID0gbmV3IE9wdGlvblZlY3RvcigpOwotICAgIG9wdGlvblZlY3Rvci5hZGRPcHRpb24oInRydWUiLCJ0cnVlIik7Ci0gICAgb3B0aW9uVmVjdG9yLmFkZE9wdGlvbigiZmFsc2UiLCJmYWxzZSIpOwotICAgIGlmIChpc0ZpeGVkKQotICAgICAgcmV0dXJuIG5ldyBYU0RTaW1wbGVBdG9taWNFbnVtRml4RnJhZ21lbnQoaWQsIG5hbWUsIGNvbmZpZywgb3B0aW9uVmVjdG9yKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbmV3IFhTRFNpbXBsZUF0b21pY0VudW1SYW5nZUZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIG9wdGlvblZlY3Rvcik7Ci0gIH0KLQotICBwcml2YXRlIElYU0RGcmFnbWVudCBnZXRYU0RTaW1wbGVMaXN0RnJhZ21lbnQoWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBTdHJpbmcgaWQsIFN0cmluZyBuYW1lKSB7Ci0gICAgCi0gICAgYm9vbGVhbiBpc0ZpeGVkID0gKChjb25maWcuZ2V0TWluT2NjdXJzKCkgPT0gY29uZmlnLmdldE1heE9jY3VycygpKSAmJiBjb25maWcuZ2V0TWF4T2NjdXJzKCkgIT0gRnJhZ21lbnRDb25zdGFudHMuVU5CT1VOREVEKTsKLSAgICBpZiAoaXNGaXhlZCkKLSAgICAgIHJldHVybiBuZXcgWFNEU2ltcGxlTGlzdEZpeEZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIGdldENvbnRyb2xsZXIoKSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG5ldyBYU0RTaW1wbGVMaXN0UmFuZ2VGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnLCBnZXRDb250cm9sbGVyKCkpOwotICB9Ci0KLSAgcHJpdmF0ZSBJWFNERnJhZ21lbnQgZ2V0WFNEU2ltcGxlVW5pb25GcmFnbWVudChYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFN0cmluZyBpZCwgU3RyaW5nIG5hbWUpIHsKLSAgICAKLSAgICBib29sZWFuIGlzRml4ZWQgPSAoKGNvbmZpZy5nZXRNaW5PY2N1cnMoKSA9PSBjb25maWcuZ2V0TWF4T2NjdXJzKCkpICYmIGNvbmZpZy5nZXRNYXhPY2N1cnMoKSAhPSBGcmFnbWVudENvbnN0YW50cy5VTkJPVU5ERUQpOwotICAgIGlmIChpc0ZpeGVkKQotICAgICAgcmV0dXJuIG5ldyBYU0RTaW1wbGVVbmlvbkZpeEZyYWdtZW50KGlkLCBuYW1lLCBjb25maWcsIGdldENvbnRyb2xsZXIoKSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG5ldyBYU0RTaW1wbGVVbmlvblJhbmdlRnJhZ21lbnQoaWQsIG5hbWUsIGNvbmZpZywgZ2V0Q29udHJvbGxlcigpKTsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBpc1NpbXBsZVR5cGVFbnVtZXJhdGlvbihYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbiBzaW1wbGVUeXBlKSB7Ci0gICAgRUxpc3QgZSA9IHNpbXBsZVR5cGUuZ2V0RW51bWVyYXRpb25GYWNldHMoKTsKLSAgICByZXR1cm4gKGUgIT0gbnVsbCAmJiBlLnNpemUoKSA+IDApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzMyNTBkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb21wb25lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB7Ci0gIHByaXZhdGUgWFNEQ29tcG9uZW50IGNvbXBvbmVudF87Ci0gIHByaXZhdGUgaW50IG1pbk9jY3Vyc187Ci0gIHByaXZhdGUgaW50IG1heE9jY3Vyc187Ci0gIHByaXZhdGUgaW50IHN0eWxlXzsKLSAgcHJpdmF0ZSBpbnQgcGFydEVuY29kaW5nXzsKLSAgcHJpdmF0ZSBib29sZWFuIGlzV1NETFBhcnRfOwotICBwcml2YXRlIFN0cmluZyB3c2RsUGFydE5hbWVfOwotCi0gIHB1YmxpYyBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpIHsKLSAgICBjb21wb25lbnRfID0gbnVsbDsKLSAgICBtaW5PY2N1cnNfID0gRnJhZ21lbnRDb25zdGFudHMuREVGQVVMVF9NSU5fT0NDVVJTOwotICAgIG1heE9jY3Vyc18gPSBGcmFnbWVudENvbnN0YW50cy5ERUZBVUxUX01BWF9PQ0NVUlM7Ci0gICAgc3R5bGVfID0gRnJhZ21lbnRDb25zdGFudHMuU1RZTEVfRE9DVU1FTlQ7Ci0gICAgcGFydEVuY29kaW5nXyA9IEZyYWdtZW50Q29uc3RhbnRzLkVOQ09ESU5HX0xJVEVSQUw7Ci0gICAgaXNXU0RMUGFydF8gPSBmYWxzZTsKLSAgICB3c2RsUGFydE5hbWVfID0gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFhTRENvbXBvbmVudChYU0RDb21wb25lbnQgY29tcG9uZW50KSB7Ci0gICAgY29tcG9uZW50XyA9IGNvbXBvbmVudDsKLSAgfQotCi0gIHB1YmxpYyBYU0RDb21wb25lbnQgZ2V0WFNEQ29tcG9uZW50KCkgewotICAgIHJldHVybiBjb21wb25lbnRfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TWluT2NjdXJzKGludCBtaW5PY2N1cnMpIHsKLSAgICBtaW5PY2N1cnNfID0gbWluT2NjdXJzOwotICB9Ci0KLSAgcHVibGljIGludCBnZXRNaW5PY2N1cnMoKSB7Ci0gICAgcmV0dXJuIG1pbk9jY3Vyc187Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRNYXhPY2N1cnMoaW50IG1heE9jY3VycykgewotICAgIG1heE9jY3Vyc18gPSBtYXhPY2N1cnM7Ci0gIH0KLQotICBwdWJsaWMgaW50IGdldE1heE9jY3VycygpIHsKLSAgICByZXR1cm4gbWF4T2NjdXJzXzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0U3R5bGUoaW50IHN0eWxlKSB7Ci0gICAgc3R5bGVfID0gc3R5bGU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBpbnQgZ2V0U3R5bGUoKSB7Ci0gICAgcmV0dXJuIHN0eWxlXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFBhcnRFbmNvZGluZyhpbnQgcGFydEVuY29kaW5nKSB7Ci0gICAgcGFydEVuY29kaW5nXyA9IHBhcnRFbmNvZGluZzsKLSAgfQotCi0gIHB1YmxpYyBpbnQgZ2V0UGFydEVuY29kaW5nKCkgewotICAgIHJldHVybiBwYXJ0RW5jb2RpbmdfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0SXNXU0RMUGFydChib29sZWFuIGlzV1NETFBhcnQpIHsKLSAgICBpc1dTRExQYXJ0XyA9IGlzV1NETFBhcnQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRJc1dTRExQYXJ0KCkgewotICAgIHJldHVybiBpc1dTRExQYXJ0XzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0V1NETFBhcnROYW1lKFN0cmluZyB3c2RsUGFydE5hbWUpIHsKLSAgICB3c2RsUGFydE5hbWVfID0gd3NkbFBhcnROYW1lOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFdTRExQYXJ0TmFtZSgpIHsKLSAgICByZXR1cm4gd3NkbFBhcnROYW1lXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L1hTRFRvRnJhZ21lbnRDb250cm9sbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNEVG9GcmFnbWVudENvbnRyb2xsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBjNTdkNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNEVG9GcmFnbWVudENvbnRyb2xsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnhzZC5XU0RMUGFydHNUb1hTRFR5cGVNYXBwZXI7Ci0KLXB1YmxpYyBjbGFzcyBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciB7Ci0gIHByaXZhdGUgV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyIHdzZGxUb1hTRE1hcHBlcl87Ci0gIHByaXZhdGUgWFNETGl0ZXJhbFhNTEVuY29kaW5nVG9GcmFnbWVudE1hcHBlciB4c2RMaXRlcmFsTWFwcGVyXzsKLSAgcHJpdmF0ZSBYU0RTT0FQRW5jb2RpbmdUb0ZyYWdtZW50TWFwcGVyIHhzZFNvYXBNYXBwZXJfOwotICBwcml2YXRlIEhhc2h0YWJsZSB4c2RUb0ZyYWdtZW50Q2FjaGVfOwotCi0gIHB1YmxpYyBYU0RUb0ZyYWdtZW50Q29udHJvbGxlcigpIHsKLSAgICB3c2RsVG9YU0RNYXBwZXJfID0gbnVsbDsKLSAgICB4c2RMaXRlcmFsTWFwcGVyXyA9IG51bGw7Ci0gICAgeHNkU29hcE1hcHBlcl8gPSBudWxsOwotICAgIHhzZFRvRnJhZ21lbnRDYWNoZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIoV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyIHdzZGxUb1hTRE1hcHBlcikgewotICAgIHdzZGxUb1hTRE1hcHBlcl8gPSB3c2RsVG9YU0RNYXBwZXI7Ci0gIH0KLQotICBwdWJsaWMgV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyIGdldFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcigpIHsKLSAgICByZXR1cm4gd3NkbFRvWFNETWFwcGVyXzsKLSAgfQotCi0gIHByaXZhdGUgWFNETGl0ZXJhbFhNTEVuY29kaW5nVG9GcmFnbWVudE1hcHBlciBnZXRYU0RMaXRlcmFsTWFwcGVyKCkgewotICAgIGlmICh4c2RMaXRlcmFsTWFwcGVyXyA9PSBudWxsKQotICAgICAgeHNkTGl0ZXJhbE1hcHBlcl8gPSBuZXcgWFNETGl0ZXJhbFhNTEVuY29kaW5nVG9GcmFnbWVudE1hcHBlcih0aGlzLCB3c2RsVG9YU0RNYXBwZXJfKTsKLSAgICByZXR1cm4geHNkTGl0ZXJhbE1hcHBlcl87Ci0gIH0KLQotICBwcml2YXRlIFhTRFNPQVBFbmNvZGluZ1RvRnJhZ21lbnRNYXBwZXIgZ2V0WFNEU09BUE1hcHBlcigpIHsKLSAgICBpZiAoeHNkU29hcE1hcHBlcl8gPT0gbnVsbCkKLSAgICAgIHhzZFNvYXBNYXBwZXJfID0gbmV3IFhTRFNPQVBFbmNvZGluZ1RvRnJhZ21lbnRNYXBwZXIodGhpcywgd3NkbFRvWFNETWFwcGVyXyk7Ci0gICAgcmV0dXJuIHhzZFNvYXBNYXBwZXJfOwotICB9Ci0KLSAgcHVibGljIElYU0RGcmFnbWVudCBnZXRGcmFnbWVudChYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFN0cmluZyBpZCwgU3RyaW5nIG5hbWUpIHsKLSAgICBJWFNERnJhZ21lbnQgZnJhZyA9IGdldENhY2hlZEZyYWdtZW50KGlkKTsKLSAgICBpZiAoZnJhZyAhPSBudWxsKQotICAgICAgcmV0dXJuIGZyYWc7Ci0gICAgZnJhZyA9IGdldE5ld0ZyYWdtZW50KGNvbmZpZywgaWQsIG5hbWUpOwotICAgIGlmIChmcmFnICE9IG51bGwpCi0gICAgICBhZGRUb0NhY2hlKGlkLCBmcmFnKTsKLSAgICByZXR1cm4gZnJhZzsKLSAgfQotCi0gIHB1YmxpYyBJWFNERnJhZ21lbnQgZ2V0Q2FjaGVkRnJhZ21lbnQoU3RyaW5nIGlkKSB7Ci0gICAgcmV0dXJuIChJWFNERnJhZ21lbnQpeHNkVG9GcmFnbWVudENhY2hlXy5nZXQoaWQpOwotICB9Ci0KLSAgcHVibGljIElYU0RGcmFnbWVudCBnZXROZXdGcmFnbWVudChYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFN0cmluZyBpZCwgU3RyaW5nIG5hbWUpIHsKLSAgICBzd2l0Y2ggKGNvbmZpZy5nZXRQYXJ0RW5jb2RpbmcoKSkKLSAgICB7Ci0gICAgICBjYXNlIEZyYWdtZW50Q29uc3RhbnRzLkVOQ09ESU5HX1NPQVA6Ci0gICAgICAgIHJldHVybiBnZXRYU0RTT0FQTWFwcGVyKCkuZ2V0RnJhZ21lbnQoY29uZmlnLGlkLG5hbWUpOyAgICAgIAotICAgICAgY2FzZSBGcmFnbWVudENvbnN0YW50cy5FTkNPRElOR19MSVRFUkFMOgotICAgICAgY2FzZSBGcmFnbWVudENvbnN0YW50cy5FTkNPRElOR19VUkw6Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZ2V0WFNETGl0ZXJhbE1hcHBlcigpLmdldEZyYWdtZW50KGNvbmZpZyxpZCxuYW1lKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRUb0NhY2hlKFN0cmluZyBpZCwgSVhTREZyYWdtZW50IGZyYWcpIHsKLSAgICB4c2RUb0ZyYWdtZW50Q2FjaGVfLnB1dChpZCwgZnJhZyk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmVGcm9tQ2FjaGUoU3RyaW5nIGlkKSB7Ci0gICAgeHNkVG9GcmFnbWVudENhY2hlXy5yZW1vdmUoaWQpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZW1wdHlDYWNoZSgpIHsKLSAgICB4c2RUb0ZyYWdtZW50Q2FjaGVfLmNsZWFyKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RUb0ZyYWdtZW50TWFwcGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvWFNEVG9GcmFnbWVudE1hcHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzY0ZjZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9YU0RUb0ZyYWdtZW50TWFwcGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRERlZmF1bHRGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTREVtcHR5RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwueHNkLldTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0ROYW1lZENvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgWFNEVG9GcmFnbWVudE1hcHBlciB7Ci0gIHByaXZhdGUgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlcl87Ci0gIHByaXZhdGUgV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyIHdzZGxUb1hTRE1hcHBlcl87Ci0KLSAgcHVibGljIFhTRFRvRnJhZ21lbnRNYXBwZXIoWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlciwgV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyIHdzZGxUb1hTRE1hcHBlcikgewotICAgIGNvbnRyb2xsZXJfID0gY29udHJvbGxlcjsKLSAgICB3c2RsVG9YU0RNYXBwZXJfID0gd3NkbFRvWFNETWFwcGVyOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0Q29udHJvbGxlcihYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgY29udHJvbGxlcl8gPSBjb250cm9sbGVyOwotICB9Ci0KLSAgcHVibGljIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGdldENvbnRyb2xsZXIoKSB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0V1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyKFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlciB3c2RsVG9YU0RNYXBwZXIpIHsKLSAgICB3c2RsVG9YU0RNYXBwZXJfID0gd3NkbFRvWFNETWFwcGVyOwotICB9Ci0KLSAgcHVibGljIFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlciBnZXRXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIoKSB7Ci0gICAgcmV0dXJuIHdzZGxUb1hTRE1hcHBlcl87Ci0gIH0KLQotICBwcm90ZWN0ZWQgSVhTREZyYWdtZW50IGdldFhTRERlZmF1bHRGcmFnbWVudChYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFN0cmluZyBpZCwgU3RyaW5nIG5hbWUpIHsKLSAgICByZXR1cm4gbmV3IFhTRERlZmF1bHRGcmFnbWVudChpZCwgbmFtZSwgY29uZmlnKTsKLSAgfQotCi0gIHByb3RlY3RlZCBJWFNERnJhZ21lbnQgZ2V0WFNERW1wdHlGcmFnbWVudChYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFN0cmluZyBpZCwgU3RyaW5nIG5hbWUpIHsKLSAgICByZXR1cm4gbmV3IFhTREVtcHR5RnJhZ21lbnQoaWQsIG5hbWUsIGNvbmZpZyk7Ci0gIH0KLQotICBwdWJsaWMgYWJzdHJhY3QgSVhTREZyYWdtZW50IGdldEZyYWdtZW50KFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSk7Ci0KLSAgcHJvdGVjdGVkIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHJlc29sdmVYU0RDb21wb25lbnQoWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnKQotICB7Ci0gICAgWFNEQ29tcG9uZW50IGNvbXBvbmVudCA9IGNvbmZpZy5nZXRYU0RDb21wb25lbnQoKTsKLSAgICBpZiAoIWlzQ29tcG9uZW50UmVzb2x2YWJsZShjb21wb25lbnQpICYmIChjb21wb25lbnQgaW5zdGFuY2VvZiBYU0ROYW1lZENvbXBvbmVudCkpCi0gICAgewotICAgICAgWFNEQ29tcG9uZW50IHJlc29sdmVkQ29tcG9uZW50ID0gZ2V0V1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyKCkucmVzb2x2ZVhTRE5hbWVkQ29tcG9uZW50KChYU0ROYW1lZENvbXBvbmVudCljb21wb25lbnQpOwotICAgICAgaWYgKHJlc29sdmVkQ29tcG9uZW50ICE9IG51bGwpCi0gICAgICAgIGNvbmZpZy5zZXRYU0RDb21wb25lbnQocmVzb2x2ZWRDb21wb25lbnQpOwotICAgIH0KLSAgICByZXR1cm4gY29uZmlnOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNDb21wb25lbnRSZXNvbHZhYmxlKFhTRENvbXBvbmVudCBjb21wb25lbnQpCi0gIHsKLSAgICBpZiAoY29tcG9uZW50ID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgWFNEU2NoZW1hIHNjaGVtYSA9IGNvbXBvbmVudC5nZXRTY2hlbWEoKTsKLSAgICBpZiAoc2NoZW1hID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHNjaGVtYS5nZXRUYXJnZXROYW1lc3BhY2UoKSA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9GcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ1ZTMyOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9GcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JRnJhZ21lbnQ7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBGcmFnbWVudCBpbXBsZW1lbnRzIElGcmFnbWVudCB7Ci0gIHByaXZhdGUgU3RyaW5nIGlkXzsKLSAgcHJpdmF0ZSBTdHJpbmcgbmFtZV87Ci0gIHByaXZhdGUgSGFzaHRhYmxlIHBhcmFtc187Ci0KLSAgcHVibGljIEZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUpIHsKLSAgICBpZF8gPSBpZDsKLSAgICBuYW1lXyA9IG5hbWU7Ci0gICAgcGFyYW1zXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldElEKFN0cmluZyBpZCkgewotICAgIGlkXyA9IGlkOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJRCgpIHsKLSAgICByZXR1cm4gaWRfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewotICAgIG5hbWVfID0gbmFtZTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLSAgICByZXR1cm4gbmFtZV87Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzUGFyYW1ldGVyVmFsdWVzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIHsKLSAgICBTdHJpbmdbXSBwYXJhbXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKGdldElEKCkpOwotICAgIHNldFBhcmFtZXRlclZhbHVlcyhnZXRJRCgpLCBwYXJhbXMpOwotICAgIHJldHVybiB2YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0UGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbUtleSwgU3RyaW5nW10gcGFyYW1zKSB7Ci0gICAgaWYgKHBhcmFtcyA9PSBudWxsKQotICAgICAgcGFyYW1zXy5yZW1vdmUocGFyYW1LZXkpOwotICAgIGVsc2UKLSAgICAgIHBhcmFtc18ucHV0KHBhcmFtS2V5LCBwYXJhbXMpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0UGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbUtleSwgVmVjdG9yIHBhcmFtcykgewotICAgIGlmIChwYXJhbXMgPT0gbnVsbCkKLSAgICAgIHBhcmFtc18ucmVtb3ZlKHBhcmFtS2V5KTsKLSAgICBlbHNlIHsKLSAgICAgIFN0cmluZ1tdIHBhcmFtc0FycmF5ID0gbmV3IFN0cmluZ1twYXJhbXMuc2l6ZSgpXTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zQXJyYXkubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgcGFyYW1zQXJyYXlbaV0gPSBwYXJhbXMuZ2V0KGkpLnRvU3RyaW5nKCk7Ci0gICAgICB9Ci0gICAgICBzZXRQYXJhbWV0ZXJWYWx1ZXMocGFyYW1LZXksIHBhcmFtc0FycmF5KTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nW10gZ2V0UGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbUtleSkgewotICAgIHJldHVybiAoU3RyaW5nW10pcGFyYW1zXy5nZXQocGFyYW1LZXkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQYXJhbWV0ZXJWYWx1ZShTdHJpbmcgcGFyYW1LZXksIGludCBwYXJhbUluZGV4KSB7Ci0gICAgU3RyaW5nW10gcGFyYW1zID0gZ2V0UGFyYW1ldGVyVmFsdWVzKHBhcmFtS2V5KTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwgJiYgcGFyYW1JbmRleCA8IHBhcmFtcy5sZW5ndGgpCi0gICAgICByZXR1cm4gcGFyYW1zW3BhcmFtSW5kZXhdOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKSB7Ci0gICAgRW51bWVyYXRpb24gcGFyYW1LZXlzID0gcGFyYW1zXy5rZXlzKCk7Ci0gICAgd2hpbGUgKHBhcmFtS2V5cyAhPSBudWxsICYmIHBhcmFtS2V5cy5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgaWYgKCF2YWxpZGF0ZVBhcmFtZXRlclZhbHVlcygoU3RyaW5nKXBhcmFtS2V5cy5uZXh0RWxlbWVudCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlUGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbUtleSkgewotICAgIFN0cmluZ1tdIHBhcmFtcyA9IGdldFBhcmFtZXRlclZhbHVlcyhwYXJhbUtleSk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IHBhcmFtcyAhPSBudWxsICYmIGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHsKLSAgICAgIGlmICghdmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZShwYXJhbUtleSwgaSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvU09BUEVuY0FycmF5Rml4RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1NPQVBFbmNBcnJheUZpeEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MWZlODEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvU09BUEVuY0FycmF5Rml4RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE1vZGVsR3JvdXA7Ci0KLXB1YmxpYyBjbGFzcyBTT0FQRW5jQXJyYXlGaXhGcmFnbWVudCBleHRlbmRzIFNPQVBFbmNBcnJheUZyYWdtZW50IHsKLSAgcHVibGljIFNPQVBFbmNBcnJheUZpeEZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlciwgWFNETW9kZWxHcm91cCB4c2RNb2RlbEdyb3VwKSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgY29udHJvbGxlciwgeHNkTW9kZWxHcm91cCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0SW5mb0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1NPQVBFbmNBcnJheVJGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXcml0ZUZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvU09BUEVuY0FycmF5Rml4V0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1NPQVBFbmNBcnJheUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9TT0FQRW5jQXJyYXlGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjAzZGQyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1NPQVBFbmNBcnJheUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5GcmFnbWVudENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JU09BUEVuY0FycmF5RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RFbGVtZW50RGVjbGFyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE1vZGVsR3JvdXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFBhcnRpY2xlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RQYXJ0aWNsZUNvbnRlbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgU09BUEVuY0FycmF5RnJhZ21lbnQgZXh0ZW5kcyBYU0RHcm91cFNlcUZyYWdtZW50IGltcGxlbWVudHMgSVNPQVBFbmNBcnJheUZyYWdtZW50Ci17Ci0gIHB1YmxpYyBTT0FQRW5jQXJyYXlGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGNvbnRyb2xsZXIsIFhTRE1vZGVsR3JvdXAgeHNkTW9kZWxHcm91cCkKLSAgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcsIGNvbnRyb2xsZXIsIHhzZE1vZGVsR3JvdXApOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykKLSAgewotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50c0NvcHkgPSBnZXRJbnN0YW5jZURvY3VtZW50c0J5VGFnTmFtZShpbnN0YW5jZURvY3VtZW50cywgZ2V0TmFtZSgpKTsKLSAgICByZW1vdmVHcm91cElEcygpOwotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSBpbnRlcm5hbEVxdWFscyhpbnN0YW5jZURvY3VtZW50c0NvcHksIGluc3RhbmNlRG9jdW1lbnRzKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzQ29weS5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBJWFNERnJhZ21lbnQgc29hcEVuY0FycmF5VHlwZUZyYWcgPSAoZ2V0R3JvdXBNZW1iZXJGcmFnbWVudHMoY3JlYXRlU09BUEVuY0FycmF5SW5zdGFuY2UoKSkpWzBdOwotICAgICAgVmVjdG9yIGluc3RhbmNlc1ZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIE5vZGVMaXN0IG5sID0gaW5zdGFuY2VEb2N1bWVudHNDb3B5W2ldLmdldENoaWxkTm9kZXMoKTsKLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmwuZ2V0TGVuZ3RoKCk7IGorKykKLSAgICAgIHsKLSAgICAgICAgTm9kZSBub2RlID0gbmwuaXRlbShqKTsKLSAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KQotICAgICAgICAgIGluc3RhbmNlc1ZlY3Rvci5hZGQobm9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgICAgfQotICAgICAgRWxlbWVudFtdIGNoaWxkSW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtpbnN0YW5jZXNWZWN0b3Iuc2l6ZSgpXTsKLSAgICAgIGluc3RhbmNlc1ZlY3Rvci5jb3B5SW50byhjaGlsZEluc3RhbmNlRG9jdW1lbnRzKTsKLSAgICAgIGlmICghc29hcEVuY0FycmF5VHlwZUZyYWcuc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKHNldEVsZW1lbnRzVGFnTmFtZShjaGlsZEluc3RhbmNlRG9jdW1lbnRzLCBzb2FwRW5jQXJyYXlUeXBlRnJhZy5nZXROYW1lKCkpKSkKLSAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIEVsZW1lbnRbXSBnZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsIERvY3VtZW50IGRvYykKLSAgewotICAgIFN0cmluZ1tdIGdyb3VwSURzID0gZ2V0R3JvdXBJRHMoKTsKLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudCA9IG5ldyBFbGVtZW50W2dyb3VwSURzLmxlbmd0aF07Ci0gICAgU3RyaW5nQnVmZmVyIGF0dHJOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIFN0cmluZ0J1ZmZlciBhdHRyVmFsdWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0vLyAgICBTdHJpbmdCdWZmZXIgYXR0ckFycmF5VHlwZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0vLyAgICBTdHJpbmdCdWZmZXIgYXR0ckFycmF5VHlwZVZhbHVlID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudC5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpbnQgbnVtSW5zdGFuY2VzID0gMDsKLSAgICAgIGluc3RhbmNlRG9jdW1lbnRbaV0gPSBkb2MuY3JlYXRlRWxlbWVudChnZXRJbnN0YW5jZURvY3VtZW50VGFnTmFtZShuYW1lc3BhY2VUYWJsZSkpOwotICAgICAgSVhTREZyYWdtZW50IGZyYWdtZW50ID0gKGdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSURzW2ldKSlbMF07Ci0gICAgICBFbGVtZW50W10gZnJhZ21lbnRJbnN0YW5jZURvY3VtZW50cyA9IGZyYWdtZW50Lmdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyhnZW5YU0lUeXBlLCBuYW1lc3BhY2VUYWJsZSwgZG9jKTsKLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZnJhZ21lbnRJbnN0YW5jZURvY3VtZW50cy5sZW5ndGg7IGorKykKLSAgICAgIHsKLSAgICAgICAgaWYgKGZyYWdtZW50SW5zdGFuY2VEb2N1bWVudHNbal0gIT0gbnVsbCkKLSAgICAgICAgICBpbnN0YW5jZURvY3VtZW50W2ldLmFwcGVuZENoaWxkKGZyYWdtZW50SW5zdGFuY2VEb2N1bWVudHNbal0pOwotICAgICAgICBudW1JbnN0YW5jZXMrKzsKLSAgICAgIH0KLSAgICAgIFN0cmluZyBzb2FwVVJJID0gRnJhZ21lbnRDb25zdGFudHMuVVJJX1NPQVA7Ci0gICAgICBTdHJpbmcgc29hcFByZWZpeCA9IGdldFByZWZpeEZyb21OYW1lc3BhY2VVUkkoc29hcFVSSSwgbmFtZXNwYWNlVGFibGUpOwotICAgICAgU3RyaW5nIHNvYXBFbmNBcnJheVR5cGVVUkkgPSBnZXRYU0RUeXBlRGVmaW5pdGlvbigpLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgU3RyaW5nIHNvYXBFbmNBcnJheVR5cGVQcmVmaXggPSBnZXRQcmVmaXhGcm9tTmFtZXNwYWNlVVJJKHNvYXBFbmNBcnJheVR5cGVVUkksIG5hbWVzcGFjZVRhYmxlKTsKLSAgICAgIC8vIFNldCB0aGUgYXJyYXlUeXBlIGF0dHJpYnV0ZQotICAgICAgYXR0ck5hbWUuc2V0TGVuZ3RoKDApOwotICAgICAgYXR0ck5hbWUuc2V0TGVuZ3RoKDApOwotICAgICAgYXR0ck5hbWUuYXBwZW5kKHNvYXBQcmVmaXgpOwotICAgICAgYXR0ck5hbWUuYXBwZW5kKEZyYWdtZW50Q29uc3RhbnRzLkNPTE9OKTsKLSAgICAgIGF0dHJOYW1lLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5TT0FQX0VOQ19BUlJBWV9UWVBFKTsKLSAgICAgIGF0dHJWYWx1ZS5zZXRMZW5ndGgoMCk7Ci0gICAgICBhdHRyVmFsdWUuYXBwZW5kKHNvYXBFbmNBcnJheVR5cGVQcmVmaXgpOwotICAgICAgYXR0clZhbHVlLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5DT0xPTik7Ci0gICAgICBhdHRyVmFsdWUuYXBwZW5kKGdldFhTRFR5cGVEZWZpbml0aW9uKCkuZ2V0TmFtZSgpKTsKLSAgICAgIGF0dHJWYWx1ZS5hcHBlbmQoRnJhZ21lbnRDb25zdGFudHMuTEVGVF9TUVVBUkVfQlJBQ0tFVCk7Ci0gICAgICBhdHRyVmFsdWUuYXBwZW5kKG51bUluc3RhbmNlcyk7Ci0gICAgICBhdHRyVmFsdWUuYXBwZW5kKEZyYWdtZW50Q29uc3RhbnRzLlJJR0hUX1NRVUFSRV9CUkFDS0VUKTsKLSAgICAgIGluc3RhbmNlRG9jdW1lbnRbaV0uc2V0QXR0cmlidXRlKGF0dHJOYW1lLnRvU3RyaW5nKCksIGF0dHJWYWx1ZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgaWYgKGdlblhTSVR5cGUpCi0gICAgewotLy8JICBUT0RPOiBVc2VkIHRvIGNhbGwgdGhlIHBsdWdpbidzIGlnbm9yZVNjaGVtYUZvclNPQVBBcnJheXMoKW1ldGhvZC4KLQkgIGJvb2xlYW4gaWdub3JlU2NoZW1hRm9yU09BUEFycmF5cyA9IHRydWU7Ci0gICAgICBpZiAoaWdub3JlU2NoZW1hRm9yU09BUEFycmF5cykKLSAgICAgIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50Lmxlbmd0aDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIHhzaVVSSSA9IEZyYWdtZW50Q29uc3RhbnRzLlVSSV9YU0k7Ci0gICAgICAgICAgU3RyaW5nIHhzaVByZWZpeCA9IGdldFByZWZpeEZyb21OYW1lc3BhY2VVUkkoeHNpVVJJLCBuYW1lc3BhY2VUYWJsZSk7Ci0gICAgICAgICAgU3RyaW5nIHhzaVR5cGVVUkkgPSBGcmFnbWVudENvbnN0YW50cy5VUklfU09BUDsKLSAgICAgICAgICBTdHJpbmcgeHNpVHlwZVByZWZpeCA9IGdldFByZWZpeEZyb21OYW1lc3BhY2VVUkkoeHNpVHlwZVVSSSwgbmFtZXNwYWNlVGFibGUpOwotICAgICAgICAgIGF0dHJOYW1lLnNldExlbmd0aCgwKTsKLSAgICAgICAgICBhdHRyTmFtZS5hcHBlbmQoeHNpUHJlZml4KS5hcHBlbmQoRnJhZ21lbnRDb25zdGFudHMuQ09MT04pLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5YU0lfVFlQRSk7Ci0gICAgICAgICAgYXR0clZhbHVlLnNldExlbmd0aCgwKTsKLSAgICAgICAgICBhdHRyVmFsdWUuYXBwZW5kKHhzaVR5cGVQcmVmaXgpLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5DT0xPTik7Ci0gICAgICAgICAgYXR0clZhbHVlLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5RTkFNRV9MT0NBTF9OQU1FX0FSUkFZKTsKLSAgICAgICAgICBpbnN0YW5jZURvY3VtZW50W2ldLnNldEF0dHJpYnV0ZShhdHRyTmFtZS50b1N0cmluZygpLCBhdHRyVmFsdWUudG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGFkZFhTSVR5cGUoaW5zdGFuY2VEb2N1bWVudCwgbmFtZXNwYWNlVGFibGUpOwotICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2VEb2N1bWVudDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgY3JlYXRlU09BUEVuY0FycmF5SW5zdGFuY2UoKQotICB7Ci0gICAgaWYgKGdldFhTRFR5cGVEZWZpbml0aW9uKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgZ3JvdXBJRCA9IGdlbklEKCk7Ci0gICAgICBTdHJpbmdbXSBncm91cE1lbWJlcklEID0ge2dlbklEKCl9OwotICAgICAgaW50IG1pbk9jY3VycyA9IDA7Ci0gICAgICBpbnQgbWF4T2NjdXJzID0gRnJhZ21lbnRDb25zdGFudHMuVU5CT1VOREVEOwotICAgICAgWFNERWxlbWVudERlY2xhcmF0aW9uIGVsZW1lbnREZWNsID0gbnVsbDsKLSAgICAgIGlmIChnZXRYU0RNb2RlbEdyb3VwKCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgWFNEUGFydGljbGUgZ3JvdXBPd25lciA9IChYU0RQYXJ0aWNsZSlnZXRYU0RNb2RlbEdyb3VwKCkuZ2V0Q29udGFpbmVyKCk7Ci0gICAgICAgIGludCBncm91cE1pbiA9IGdyb3VwT3duZXIuZ2V0TWluT2NjdXJzKCk7Ci0gICAgICAgIGludCBncm91cE1heCA9IGdyb3VwT3duZXIuZ2V0TWF4T2NjdXJzKCk7Ci0gICAgICAgIGludCBlbGVtZW50TWluID0gMDsKLSAgICAgICAgaW50IGVsZW1lbnRNYXggPSBGcmFnbWVudENvbnN0YW50cy5VTkJPVU5ERUQ7Ci0gICAgICAgIEVMaXN0IHhzZFBhcnRpY2xlcyA9IGdldFhTRE1vZGVsR3JvdXAoKS5nZXRQYXJ0aWNsZXMoKTsKLSAgICAgICAgaWYgKHhzZFBhcnRpY2xlcy5zaXplKCkgPiAwKQotICAgICAgICB7Ci0gICAgICAgICAgWFNEUGFydGljbGVDb250ZW50IHhzZFBhcnRpY2xlQ29udGVudCA9ICgoWFNEUGFydGljbGUpeHNkUGFydGljbGVzLmdldCgwKSkuZ2V0Q29udGVudCgpOwotICAgICAgICAgIGlmICh4c2RQYXJ0aWNsZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RFbGVtZW50RGVjbGFyYXRpb24pCi0gICAgICAgICAgewotICAgICAgICAgICAgZWxlbWVudERlY2wgPSAoWFNERWxlbWVudERlY2xhcmF0aW9uKXhzZFBhcnRpY2xlQ29udGVudDsKLSAgICAgICAgICAgIFhTRFBhcnRpY2xlIGVsZW1lbnRPd25lciA9IChYU0RQYXJ0aWNsZSllbGVtZW50RGVjbC5nZXRDb250YWluZXIoKTsKLSAgICAgICAgICAgIGVsZW1lbnRNaW4gPSBlbGVtZW50T3duZXIuZ2V0TWluT2NjdXJzKCk7Ci0gICAgICAgICAgICBlbGVtZW50TWF4ID0gZWxlbWVudE93bmVyLmdldE1heE9jY3VycygpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoZ3JvdXBNaW4gPj0gMCAmJiBlbGVtZW50TWluID49IDApCi0gICAgICAgICAgbWluT2NjdXJzID0gZ3JvdXBNaW4gKiBlbGVtZW50TWluOwotICAgICAgICBpZiAoZ3JvdXBNYXggPj0gMCAmJiBncm91cE1heCAhPSBGcmFnbWVudENvbnN0YW50cy5VTkJPVU5ERUQgJiYgZWxlbWVudE1heCA+PSAwICYmIGVsZW1lbnRNYXggIT0gRnJhZ21lbnRDb25zdGFudHMuVU5CT1VOREVEKQotICAgICAgICAgIG1heE9jY3VycyA9IGdyb3VwTWF4ICogZWxlbWVudE1heDsKLSAgICAgIH0KLSAgICAgIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHRoaXNDb25maWcgPSBnZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICAgICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gbmV3IFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0gICAgICB4c2RDb25maWcuc2V0WFNEQ29tcG9uZW50KGdldFhTRFR5cGVEZWZpbml0aW9uKCkpOwotICAgICAgeHNkQ29uZmlnLnNldE1pbk9jY3VycyhtaW5PY2N1cnMpOwotICAgICAgeHNkQ29uZmlnLnNldE1heE9jY3VycyhtYXhPY2N1cnMpOwotICAgICAgeHNkQ29uZmlnLnNldFN0eWxlKHRoaXNDb25maWcuZ2V0U3R5bGUoKSk7Ci0gICAgICB4c2RDb25maWcuc2V0UGFydEVuY29kaW5nKHRoaXNDb25maWcuZ2V0UGFydEVuY29kaW5nKCkpOwotICAgICAgeHNkQ29uZmlnLnNldFdTRExQYXJ0TmFtZSh0aGlzQ29uZmlnLmdldFdTRExQYXJ0TmFtZSgpKTsKLSAgICAgIFN0cmluZyBuYW1lID0gKGVsZW1lbnREZWNsICE9IG51bGwpID8gZWxlbWVudERlY2wuZ2V0TmFtZSgpIDogZ2V0WFNEVHlwZURlZmluaXRpb24oKS5nZXROYW1lKCk7Ci0gICAgICBJWFNERnJhZ21lbnQgZnJhZyA9IGdldFhTRFRvRnJhZ21lbnRDb250cm9sbGVyKCkuZ2V0RnJhZ21lbnQoeHNkQ29uZmlnLCBncm91cE1lbWJlcklEWzBdLCBuYW1lKTsKLSAgICAgIGFkZEZyYWdtZW50KGdyb3VwTWVtYmVySURbMF0sIGZyYWcpOwotICAgICAgc2V0R3JvdXBNZW1iZXJJRHMoZ3JvdXBJRCwgZ3JvdXBNZW1iZXJJRCk7Ci0gICAgICByZXR1cm4gZ3JvdXBJRDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGNyZWF0ZUdyb3VwU2VxSW5zdGFuY2UoKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZVNPQVBFbmNBcnJheUluc3RhbmNlKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGNyZWF0ZUluc3RhbmNlKCkKLSAgewotICAgIHJldHVybiBjcmVhdGVTT0FQRW5jQXJyYXlJbnN0YW5jZSgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9TT0FQRW5jQXJyYXlSYW5nZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9TT0FQRW5jQXJyYXlSYW5nZUZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NTY3ZWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvU09BUEVuY0FycmF5UmFuZ2VGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNETW9kZWxHcm91cDsKLQotcHVibGljIGNsYXNzIFNPQVBFbmNBcnJheVJhbmdlRnJhZ21lbnQgZXh0ZW5kcyBTT0FQRW5jQXJyYXlGcmFnbWVudCB7Ci0gIHB1YmxpYyBTT0FQRW5jQXJyYXlSYW5nZUZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlciwgWFNETW9kZWxHcm91cCB4c2RNb2RlbEdyb3VwKSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgY29udHJvbGxlciwgeHNkTW9kZWxHcm91cCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0SW5mb0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1NPQVBFbmNBcnJheVJGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXcml0ZUZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvU09BUEVuY0FycmF5UmFuZ2VXRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvU09BUEVuY29kaW5nV3JhcHBlckZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9TT0FQRW5jb2RpbmdXcmFwcGVyRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ5M2UyNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9TT0FQRW5jb2RpbmdXcmFwcGVyRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JU09BUEVuY29kaW5nV3JhcHBlckZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLXB1YmxpYyBjbGFzcyBTT0FQRW5jb2RpbmdXcmFwcGVyRnJhZ21lbnQgZXh0ZW5kcyBYU0REZWxlZ2F0aW9uRnJhZ21lbnQgaW1wbGVtZW50cyBJU09BUEVuY29kaW5nV3JhcHBlckZyYWdtZW50Ci17Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJRCA9ICJpZCI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIUkVGID0gImhyZWYiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9VTkQgPSAiIyI7Ci0KLSAgcHJpdmF0ZSBIYXNodGFibGUgdXJpUmVmZXJlbmNlVGFibGVfOwotCi0gIHB1YmxpYyBTT0FQRW5jb2RpbmdXcmFwcGVyRnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnKQotICB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIG51bGwpOwotICAgIHVyaVJlZmVyZW5jZVRhYmxlXyA9IG51bGw7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbihYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcpCi0gIHsKLSAgICBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKS5zZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbihjb25maWcpOwotICB9Ci0KLSAgcHVibGljIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCkKLSAgewotICAgIHJldHVybiBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKS5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0WFNEVHlwZURlZmluaXRpb24oWFNEVHlwZURlZmluaXRpb24gdHlwZURlZikKLSAgewotICAgIGdldFhTRERlbGVnYXRpb25GcmFnbWVudCgpLnNldFhTRFR5cGVEZWZpbml0aW9uKHR5cGVEZWYpOwotICB9Ci0KLSAgcHVibGljIFhTRFR5cGVEZWZpbml0aW9uIGdldFhTRFR5cGVEZWZpbml0aW9uKCkKLSAgewotICAgIHJldHVybiBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKS5nZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykKLSAgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspCi0gICAgICBpbnN0YW5jZURvY3VtZW50c1tpXSA9IHJlc29sdmVVUklSZWZlcmVuY2VzKHVyaVJlZmVyZW5jZVRhYmxlXywgaW5zdGFuY2VEb2N1bWVudHNbaV0pOwotICAgIHJldHVybiBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKS5zZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoaW5zdGFuY2VEb2N1bWVudHMpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VVJJUmVmZXJlbmNlcyhIYXNodGFibGUgdXJpUmVmZXJlbmNlcykKLSAgewotICAgIHVyaVJlZmVyZW5jZVRhYmxlXyA9IHVyaVJlZmVyZW5jZXM7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIEhhc2h0YWJsZSBwYXJzZVVSSVJlZmVyZW5jZXMoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIG92ZXJ3cml0ZXMpCi0gIHsKLSAgICBIYXNodGFibGUgdXJpUmVmZXJlbmNlcyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBwYXJzZVVSSVJlZmVyZW5jZXModXJpUmVmZXJlbmNlcywgZWxlbWVudCwgb3ZlcndyaXRlcyk7Ci0gICAgcmV0dXJuIHVyaVJlZmVyZW5jZXM7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIHBhcnNlVVJJUmVmZXJlbmNlcyhIYXNodGFibGUgdXJpUmVmZXJlbmNlcywgRWxlbWVudCBlbGVtZW50LCBib29sZWFuIG92ZXJ3cml0ZXMpCi0gIHsKLSAgICBib29sZWFuIHJlc29sdmVkID0gdHJ1ZTsKLSAgICBpZiAoZWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIFVSSVJlZmVyZW5jZSByZWYgPSBudWxsOwotICAgICAgU3RyaW5nIGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoSUQpOwotICAgICAgcmVzb2x2ZWQgPSAhZWxlbWVudC5oYXNBdHRyaWJ1dGUoSFJFRik7Ci0gICAgICBpZiAoaWQgIT0gbnVsbCAmJiBpZC5sZW5ndGgoKSA+IDAgJiYgKG92ZXJ3cml0ZXMgfHwgIXVyaVJlZmVyZW5jZXMuY29udGFpbnMoaWQpKSkKLSAgICAgIHsKLSAgICAgICAgcmVmID0gbmV3IFVSSVJlZmVyZW5jZShlbGVtZW50LCB0cnVlKTsKLSAgICAgICAgdXJpUmVmZXJlbmNlcy5wdXQoaWQsIHJlZik7Ci0gICAgICB9Ci0gICAgICBOb2RlTGlzdCBubCA9IGVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBubC5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgewotICAgICAgICBOb2RlIG5vZGUgPSBubC5pdGVtKGkpOwotICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpCi0gICAgICAgICAgcmVzb2x2ZWQgPSBwYXJzZVVSSVJlZmVyZW5jZXModXJpUmVmZXJlbmNlcywgKEVsZW1lbnQpbm9kZSwgb3ZlcndyaXRlcykgJiYgcmVzb2x2ZWQ7Ci0gICAgICB9Ci0gICAgICBpZiAocmVmICE9IG51bGwpCi0gICAgICAgIHJlZi5zZXRSZXNvbHZlZChyZXNvbHZlZCk7Ci0gICAgfQotICAgIHJldHVybiByZXNvbHZlZDsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgRWxlbWVudCByZXNvbHZlVVJJUmVmZXJlbmNlcyhIYXNodGFibGUgdXJpUmVmZXJlbmNlcywgRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaWYgKHVyaVJlZmVyZW5jZXMgIT0gbnVsbCAmJiAhdXJpUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICByZXR1cm4gcmVzb2x2ZVVSSVJlZmVyZW5jZXModXJpUmVmZXJlbmNlcywgZWxlbWVudC5nZXRPd25lckRvY3VtZW50KCksIGVsZW1lbnQsIG5ldyBWZWN0b3IoKSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBFbGVtZW50IHJlc29sdmVVUklSZWZlcmVuY2VzKEhhc2h0YWJsZSB1cmlSZWZlcmVuY2VzLCBEb2N1bWVudCBkb2MsIEVsZW1lbnQgZWxlbWVudCwgVmVjdG9yIHVzZWRJZHMpCi0gIHsKLSAgICBTdHJpbmcgaHJlZiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKEhSRUYpOwotICAgIEVsZW1lbnQgcmVzb2x2ZWRFbGVtZW50ID0gZWxlbWVudDsKLSAgICBib29sZWFuIHJlc29sdmVkID0gZmFsc2U7Ci0gICAgaWYgKGhyZWYgIT0gbnVsbCAmJiBocmVmLmxlbmd0aCgpID4gMCkKLSAgICB7Ci0gICAgICBVUklSZWZlcmVuY2UgcmVmID0gbnVsbDsKLSAgICAgIGlmIChocmVmLmluZGV4T2YoUE9VTkQpICE9IC0xKQotICAgICAgICBocmVmID0gaHJlZi5zdWJzdHJpbmcoMSwgaHJlZi5sZW5ndGgoKSk7Ci0gICAgICBpZiAoIXVzZWRJZHMuY29udGFpbnMoaHJlZikpCi0gICAgICB7Ci0gICAgICAgIHJlZiA9IChVUklSZWZlcmVuY2UpdXJpUmVmZXJlbmNlcy5nZXQoaHJlZik7Ci0gICAgICAgIGlmIChyZWYgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHVzZWRJZHMuYWRkKGhyZWYpOwotICAgICAgICAgIEVsZW1lbnQgZWxlbWVudFJlZiA9IHJlZi5nZXRSZWZFbGVtZW50KCk7Ci0gICAgICAgICAgcmVzb2x2ZWQgPSByZWYuZ2V0UmVzb2x2ZWQoKTsKLSAgICAgICAgICByZXNvbHZlZEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudChlbGVtZW50LmdldFRhZ05hbWUoKSk7Ci0gICAgICAgICAgTm9kZUxpc3QgbmwgPSBlbGVtZW50UmVmLmdldENoaWxkTm9kZXMoKTsKLSAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5sLmdldExlbmd0aCgpOyBpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgTm9kZSBub2RlID0gbmwuaXRlbShpKTsKLSAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpCi0gICAgICAgICAgICAgIHJlc29sdmVkRWxlbWVudC5hcHBlbmRDaGlsZChkb2MuaW1wb3J0Tm9kZShub2RlLCB0cnVlKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICghcmVzb2x2ZWQpCi0gICAgewotICAgICAgTm9kZUxpc3QgbmwgPSByZXNvbHZlZEVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBubC5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgewotICAgICAgICBOb2RlIG5vZGUgPSBubC5pdGVtKGkpOwotICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICBFbGVtZW50IGNoaWxkID0gcmVzb2x2ZVVSSVJlZmVyZW5jZXModXJpUmVmZXJlbmNlcywgcmVzb2x2ZWRFbGVtZW50LmdldE93bmVyRG9jdW1lbnQoKSwgKEVsZW1lbnQpbm9kZSwgdXNlZElkcyk7Ci0JCSAgaWYgKGNoaWxkICE9IG5vZGUpCi0gICAgICAgICAgICByZXNvbHZlZEVsZW1lbnQucmVwbGFjZUNoaWxkKGNoaWxkLCBub2RlKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBpZiAoaHJlZiAhPSBudWxsKQotICAgICAgdXNlZElkcy5yZW1vdmUoaHJlZik7Ci0gICAgcmV0dXJuIHJlc29sdmVkRWxlbWVudDsKLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIGNsYXNzIFVSSVJlZmVyZW5jZQotICB7Ci0gICAgcHJpdmF0ZSBFbGVtZW50IHJlZl87Ci0gICAgcHJpdmF0ZSBib29sZWFuIHJlc29sdmVkXzsKLQotICAgIHB1YmxpYyBVUklSZWZlcmVuY2UoRWxlbWVudCByZWYsIGJvb2xlYW4gcmVzb2x2ZWQpCi0gICAgewotICAgICAgcmVmXyA9IHJlZjsKLSAgICAgIHJlc29sdmVkXyA9IHJlc29sdmVkOwotICAgIH0KLQotICAgIHB1YmxpYyBFbGVtZW50IGdldFJlZkVsZW1lbnQoKQotICAgIHsKLSAgICAgIHJldHVybiByZWZfOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJlZkVsZW1lbnQoRWxlbWVudCByZWYpCi0gICAgewotICAgICAgcmVmXyA9IHJlZjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBnZXRSZXNvbHZlZCgpCi0gICAgewotICAgICAgcmV0dXJuIHJlc29sdmVkXzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSZXNvbHZlZChib29sZWFuIHJlc29sdmVkKQotICAgIHsKLSAgICAgIHJlc29sdmVkXyA9IHJlc29sdmVkOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvU09BUEhlYWRlcldyYXBwZXJGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvU09BUEhlYWRlcldyYXBwZXJGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDBlYTVkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1NPQVBIZWFkZXJXcmFwcGVyRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMDUgICAxMTcwMzQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBzaG91bGQgc3VwcG9ydCBTT0FQIEhlYWRlcnMKLSAqIDIwMDcwNDEzICAgMTc2NDkzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0U6IE1ha2UgbWVzc2FnZS90cmFuc3BvcnQgc3RhY2sgcGx1Z2dhYmxlCi0gKiAyMDA4MTExNCAgIDI1NDY3MiBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBqYXZhLm5ldC5VUkk7Ci1pbXBvcnQgamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RGcmFnbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0vKioKLSAqIEEgU09BUCBoZWFkZXIgZnJhZ21lbnQsIHdoaWNoIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIGZyYWdtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgU09BUCBoZWFkZXIgY29udGVudC4gIAotICovCi1wdWJsaWMgY2xhc3MgU09BUEhlYWRlcldyYXBwZXJGcmFnbWVudCBleHRlbmRzIFhTRERlbGVnYXRpb25GcmFnbWVudCB7Ci0JCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1VU1RfVU5ERVJTVEFORCA9ICJtdXN0VW5kZXJzdGFuZCI7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVE9SICAgICAgICAgICA9ICJhY3RvciI7Ci0JCi0JcHJpdmF0ZSBib29sZWFuIG11c3RVbmRlcnN0YW5kID0gZmFsc2U7CSAKLQlwcml2YXRlIFN0cmluZyAgYWN0b3IgICAgICAgICAgPSAiIjsKLQlwcml2YXRlIGJvb2xlYW4gdmFsaWRBY3RvciAgICAgPSB0cnVlOwotCQotCS8qKgotCSAqIENvbnN0cnVjdG9yLgotCSAqIAotCSAqIEBwYXJhbSBmcmFnbWVudCBUaGUgZnJhZ21lbnQgdGhhdCB0aGlzIFNPQVAgaGVhZGVyIGZyYWdtZW50IHdyYXBzIGFyb3VuZC4KLQkgKi8KLQlwdWJsaWMgU09BUEhlYWRlcldyYXBwZXJGcmFnbWVudChJWFNERnJhZ21lbnQgZnJhZ21lbnQpIHsKLQkJc3VwZXIoZnJhZ21lbnQuZ2VuSUQoKSwgZnJhZ21lbnQuZ2V0TmFtZSgpLCBudWxsKTsJICAgIAotCQlzZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoZnJhZ21lbnQpOwotCX0KLQkKLQkvKgotCSAqIFJldHJpZXZlcyB0aGUgZmlyc3QgZWxlbWVudCBmcm9tIGEgc3RyaW5nIGFycmF5LgotCSAqLwotCXByaXZhdGUgU3RyaW5nIGdldEZpcnN0RWxlbWVudChTdHJpbmdbXSBzdHJpbmdBcnJheSkgewotCQlpZiAoc3RyaW5nQXJyYXkgPT0gbnVsbCB8fCBzdHJpbmdBcnJheS5sZW5ndGggPT0gMCkKLQkJCXJldHVybiBudWxsOwotCQlyZXR1cm4gc3RyaW5nQXJyYXlbMF07CQkgCi0JfQotCQotCS8qCi0JICogUmV0cmlldmVzIHRoZSBmaXJzdCBlbGVtZW50IGZyb20gYSB2ZWN0b3IuCi0JICovCi0JcHJpdmF0ZSBTdHJpbmcgZ2V0Rmlyc3RFbGVtZW50KFZlY3RvciB2ZWN0b3IpIHsKLQkJaWYgKHZlY3RvciA9PSBudWxsIHx8IHZlY3Rvci5pc0VtcHR5KCkpCi0JCQlyZXR1cm4gbnVsbDsKLQkJIAotCQlPYmplY3Qgb2JqID0gdmVjdG9yLmZpcnN0RWxlbWVudCgpOwotCQlpZiAoIShvYmogaW5zdGFuY2VvZiBTdHJpbmcpKQotCQkJcmV0dXJuIG51bGw7Ci0JCSAKLQkJcmV0dXJuIChTdHJpbmcpIG9iajsKLQl9Ci0JCi0JLyoKLQkgKiBTZXRzIHRoZSBtdXN0VW5kZXJzdGFuZCB2YWx1ZS4gQW55IG5vbi1lbXB0eSBzdHJpbmcgKGV4Y2VwdCAiMCIpCi0JICogdHJhbnNsYXRlcyB0byBhIG11c3RVbmRlcnN0YW5kIHZhbHVlIG9mIHRydWUuCi0JICovCi0JcHJpdmF0ZSB2b2lkIHNldE11c3RVbmRlcnN0YW5kKFN0cmluZyBwYXJhbSkgewotCQltdXN0VW5kZXJzdGFuZCA9IChwYXJhbSAhPSBudWxsICYmICFwYXJhbS5lcXVhbHMoIjAiKSk7Ci0JfQotCQotCS8qCi0JICogU2V0cyB0aGUgYWN0b3IgdmFsdWUuICBBbHNvIHNldHMgdGhlIGZsYWcgZm9yIHZhbGlkQWN0b3IuCi0JICovCi0JcHJpdmF0ZSB2b2lkIHNldEFjdG9yKFN0cmluZyBwYXJhbSkgewotCQlpZiAocGFyYW0gPT0gbnVsbCB8fCBwYXJhbS5sZW5ndGgoKSA9PSAwKQotCQkJYWN0b3IgPSAiIjsKLQkJZWxzZSB7Ci0JCQlhY3RvciA9IHBhcmFtOwotCQkJdHJ5IHsKLQkJCQluZXcgVVJJKGFjdG9yKTsKLQkJCX0KLQkJCWNhdGNoIChVUklTeW50YXhFeGNlcHRpb24gZSkgewotCQkJCXZhbGlkQWN0b3IgPSBmYWxzZTsKLQkJCQlyZXR1cm47Ci0JCQl9Ci0JCX0JCSAKLQkJIAotCQl2YWxpZEFjdG9yID0gdHJ1ZTsKLQl9CSAKLQkKLSAgICAvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRERlbGVnYXRpb25GcmFnbWVudCNwcm9jZXNzUGFyYW1ldGVyVmFsdWVzKG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyKQotCSAqLwotCXB1YmxpYyBib29sZWFuIHByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24gewotCQotCQlzZXRNdXN0VW5kZXJzdGFuZChwYXJzZXIuZ2V0UGFyYW1ldGVyKGdldE11c3RVbmRlcnN0YW5kSUQoKSkpOwotCSAgICBzZXRBY3RvcihwYXJzZXIuZ2V0UGFyYW1ldGVyKGdldEFjdG9ySUQoKSkpOwotCi0JCS8vIG11c3RVbmRlcnN0YW5kIGlzIGVpdGhlciBzZXQgb3IgdW5zZXQsIG5vIGZ1cnRoZXIgdmFsaWRhdGlvbiBuZWNlc3NhcnkKLQkJLy8gb25seSBuZWVkIHRvIHZhbGlkYXRlIGFjdG9yIFVSSQotCQlyZXR1cm4gc3VwZXIucHJvY2Vzc1BhcmFtZXRlclZhbHVlcyhwYXJzZXIpICYmIHZhbGlkYXRlQWN0b3IoKTsJCQkgCQkgCi0JfQotCQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRERlbGVnYXRpb25GcmFnbWVudCNzZXRQYXJhbWV0ZXJWYWx1ZXMoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZ1tdKQotCSAqLwotCXB1YmxpYyB2b2lkIHNldFBhcmFtZXRlclZhbHVlcyhTdHJpbmcgcGFyYW1LZXksIFN0cmluZ1tdIHBhcmFtcykgewotCQlpZiAoZ2V0TXVzdFVuZGVyc3RhbmRJRCgpLmVxdWFscyhwYXJhbUtleSkpCi0JCQlzZXRNdXN0VW5kZXJzdGFuZChnZXRGaXJzdEVsZW1lbnQocGFyYW1zKSk7Ci0JCWVsc2UgaWYgKGdldEFjdG9ySUQoKS5lcXVhbHMocGFyYW1LZXkpKQotCQkJc2V0QWN0b3IoZ2V0Rmlyc3RFbGVtZW50KHBhcmFtcykpOwotCQllbHNlCi0JCQlzdXBlci5zZXRQYXJhbWV0ZXJWYWx1ZXMocGFyYW1LZXksIHBhcmFtcyk7CQkgCi0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNERGVsZWdhdGlvbkZyYWdtZW50I3NldFBhcmFtZXRlclZhbHVlcyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuVmVjdG9yKQotCSAqLwotCXB1YmxpYyB2b2lkIHNldFBhcmFtZXRlclZhbHVlcyhTdHJpbmcgcGFyYW1LZXksIFZlY3RvciBwYXJhbXMpIHsKLQkJaWYgKGdldE11c3RVbmRlcnN0YW5kSUQoKS5lcXVhbHMocGFyYW1LZXkpKQotCQkJc2V0TXVzdFVuZGVyc3RhbmQoZ2V0Rmlyc3RFbGVtZW50KHBhcmFtcykpOwotCQllbHNlIGlmIChnZXRBY3RvcklEKCkuZXF1YWxzKHBhcmFtS2V5KSkKLQkJCXNldEFjdG9yKGdldEZpcnN0RWxlbWVudChwYXJhbXMpKTsKLQkJZWxzZQotCQkJc3VwZXIuc2V0UGFyYW1ldGVyVmFsdWVzKHBhcmFtS2V5LCBwYXJhbXMpOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRERlbGVnYXRpb25GcmFnbWVudCNnZXRQYXJhbWV0ZXJWYWx1ZXMoamF2YS5sYW5nLlN0cmluZykKLQkgKi8KLQlwdWJsaWMgU3RyaW5nW10gZ2V0UGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbUtleSkgewotCQlpZiAoZ2V0TXVzdFVuZGVyc3RhbmRJRCgpLmVxdWFscyhwYXJhbUtleSkpCi0JCQlyZXR1cm4gbmV3IFN0cmluZ1tdIHsgbXVzdFVuZGVyc3RhbmQgPyAiMSIgOiAiMCIgfTsKLQkJZWxzZSBpZiAoZ2V0QWN0b3JJRCgpLmVxdWFscyhwYXJhbUtleSkpCi0JCQlyZXR1cm4gbmV3IFN0cmluZ1tdIHsgYWN0b3IgfTsKLQkJZWxzZQotCQkJcmV0dXJuIHN1cGVyLmdldFBhcmFtZXRlclZhbHVlcyhwYXJhbUtleSk7CQkgCi0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNERGVsZWdhdGlvbkZyYWdtZW50I2dldFBhcmFtZXRlclZhbHVlKGphdmEubGFuZy5TdHJpbmcsIGludCkKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFBhcmFtZXRlclZhbHVlKFN0cmluZyBwYXJhbUtleSwgaW50IHBhcmFtSW5kZXgpIHsKLQkJcmV0dXJuIGdldFBhcmFtZXRlclZhbHVlcyhwYXJhbUtleSlbcGFyYW1JbmRleF07Ci0JfQkgCi0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC5YU0REZWxlZ2F0aW9uRnJhZ21lbnQjdmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKQotCSAqLwotCXB1YmxpYyBib29sZWFuIHZhbGlkYXRlQWxsUGFyYW1ldGVyVmFsdWVzKCkgewotCQlyZXR1cm4gc3VwZXIudmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKSAmJiB2YWxpZGF0ZUFjdG9yKCk7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNERGVsZWdhdGlvbkZyYWdtZW50I3ZhbGlkYXRlUGFyYW1ldGVyVmFsdWVzKGphdmEubGFuZy5TdHJpbmcpCi0JICovCi0JcHVibGljIGJvb2xlYW4gdmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5KSB7Ci0JCWlmIChnZXRNdXN0VW5kZXJzdGFuZElEKCkuZXF1YWxzKHBhcmFtS2V5KSkKLQkJCXJldHVybiB0cnVlOwotCQllbHNlIGlmIChnZXRBY3RvcklEKCkuZXF1YWxzKHBhcmFtS2V5KSkKLQkJCXJldHVybiB2YWxpZGF0ZUFjdG9yKCk7Ci0JCWVsc2UKLQkJCXJldHVybiBzdXBlci52YWxpZGF0ZVBhcmFtZXRlclZhbHVlcyhwYXJhbUtleSk7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuWFNERGVsZWdhdGlvbkZyYWdtZW50I3ZhbGlkYXRlUGFyYW1ldGVyVmFsdWUoamF2YS5sYW5nLlN0cmluZywgaW50KQotCSAqLwotCXB1YmxpYyBib29sZWFuIHZhbGlkYXRlUGFyYW1ldGVyVmFsdWUoU3RyaW5nIHBhcmFtS2V5LCBpbnQgcGFyYW1JbmRleCkgewotCQlpZiAoZ2V0TXVzdFVuZGVyc3RhbmRJRCgpLmVxdWFscyhwYXJhbUtleSkpCi0JCQlyZXR1cm4gdHJ1ZTsKLQkJZWxzZSBpZiAoZ2V0QWN0b3JJRCgpLmVxdWFscyhwYXJhbUtleSkpCi0JCQlyZXR1cm4gdmFsaWRhdGVBY3RvcigpOwotCQllbHNlCi0JCQlyZXR1cm4gc3VwZXIudmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZShwYXJhbUtleSwgcGFyYW1JbmRleCk7Ci0JfQotCQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlcyBmb3IgdGhpcyBTT0FQIGhlYWRlciBnaXZlbiBhbiBpbnN0YW5jZSBkb2N1bWVudCBhbmQgYSBuYW1lc3BhY2UgdGFibGUuCi0JICogCi0JICogQHBhcmFtIGluc3RhbmNlRG9jdW1lbnQgVGhlIGluc3RhbmNlIGRvY3VtZW50LgotCSAqIEBwYXJhbSBuYW1lc3BhY2VUYWJsZSBUaGUgbmFtZXNwYWNlIHRhYmxlLgotCSAqIAotCSAqIEByZXR1cm4gVHJ1ZSBpZiBhbGwgdmFsdWVzIGV4dHJhY3RlZCBmcm9tIHRoZSBpbnN0YW5jZSBkb2N1bWVudCBhcmUgdmFsaWQuCi0JICovCi0JcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnQoRWxlbWVudCBpbnN0YW5jZURvY3VtZW50LCBNYXAgbmFtZXNwYWNlVGFibGUpIHsKLQotCQlib29sZWFuIHZhbGlkID0gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKG5ldyBFbGVtZW50W10geyBpbnN0YW5jZURvY3VtZW50IH0pOwkJCi0JCSAKLQkJU3RyaW5nIHByZWZpeCA9IG5hbWVzcGFjZVRhYmxlLmdldChGcmFnbWVudENvbnN0YW50cy5OU19VUklfU09BUF9FTlYpICsgRnJhZ21lbnRDb25zdGFudHMuQ09MT047Ci0JCSAKLQkJU3RyaW5nIG11c3RVbmRlcnN0YW5kVmFsdWUgPSBpbnN0YW5jZURvY3VtZW50LmdldEF0dHJpYnV0ZShwcmVmaXggKyBNVVNUX1VOREVSU1RBTkQpOwotCQlpZiAoIiIuZXF1YWxzKG11c3RVbmRlcnN0YW5kVmFsdWUpKQotCQkJbXVzdFVuZGVyc3RhbmQgPSBmYWxzZTsKLQkJZWxzZSBpZiAoIjAiLmVxdWFscyhtdXN0VW5kZXJzdGFuZFZhbHVlKSB8fCAiMSIuZXF1YWxzKG11c3RVbmRlcnN0YW5kVmFsdWUpKQotCQkJc2V0TXVzdFVuZGVyc3RhbmQobXVzdFVuZGVyc3RhbmRWYWx1ZSk7Ci0JCWVsc2UKLQkJCXZhbGlkID0gZmFsc2U7Ci0JCSAKLQkJc2V0QWN0b3IoaW5zdGFuY2VEb2N1bWVudC5nZXRBdHRyaWJ1dGUocHJlZml4ICsgQUNUT1IpKTsKLQkJIAotCQlyZXR1cm4gdmFsaWQgJiYgdmFsaWRhdGVBY3RvcigpOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRERlbGVnYXRpb25GcmFnbWVudCNnZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoYm9vbGVhbiwgamF2YS51dGlsLkhhc2h0YWJsZSwgb3JnLnczYy5kb20uRG9jdW1lbnQpCi0JICovCi0JcHVibGljIEVsZW1lbnRbXSBnZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsIERvY3VtZW50IGRvYykgewotCQlFbGVtZW50W10gZWxlbWVudHMgPSBzdXBlci5nZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoZ2VuWFNJVHlwZSwgbmFtZXNwYWNlVGFibGUsIGRvYyk7Ci0JCSAKLQkJaWYgKGVsZW1lbnRzLmxlbmd0aCA9PSAwKQotCQkJcmV0dXJuIGVsZW1lbnRzOwotCQkgCi0JCVN0cmluZyBwcmVmaXggPSBnZXRQcmVmaXhGcm9tTmFtZXNwYWNlVVJJKEZyYWdtZW50Q29uc3RhbnRzLk5TX1VSSV9TT0FQX0VOViwgbmFtZXNwYWNlVGFibGUpICsgRnJhZ21lbnRDb25zdGFudHMuQ09MT047Ci0JCSAKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewkJCSAJCQkgCQkJCSAKLQotCQkJaWYgKG11c3RVbmRlcnN0YW5kKXsKLQkJCQllbGVtZW50c1tpXS5zZXRBdHRyaWJ1dGVOUyhGcmFnbWVudENvbnN0YW50cy5OU19VUklfU09BUF9FTlYsIHByZWZpeCArIE1VU1RfVU5ERVJTVEFORCwgIjEiKTsKLQkJCX0KLQkJCWlmIChhY3Rvci5sZW5ndGgoKSA+IDApewotCQkJCWVsZW1lbnRzW2ldLnNldEF0dHJpYnV0ZU5TKEZyYWdtZW50Q29uc3RhbnRzLk5TX1VSSV9TT0FQX0VOVixwcmVmaXggKyBBQ1RPUiwgYWN0b3IpOwotCQkJfQotCQl9Ci0JCSAKLQkJcmV0dXJuIGVsZW1lbnRzOwotCX0KLQkgCi0JLyoqCi0JICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBnZXR0aW5nIGZvciB0aGUgbXVzdFVuZGVyc3RhbmQgdmFsdWUKLQkgKiBAcmV0dXJuIFRoZSBtdXN0VW5kZXJzdGFuZCB2YWx1ZSwgdHJ1ZSBpZiBtdXN0VW5kZXJzdGFuZD0iMSIsIGZhbHNlIG90aGVyd2lzZS4KLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBpc011c3RVbmRlcnN0YW5kKCkgewotCQlyZXR1cm4gbXVzdFVuZGVyc3RhbmQ7Ci0JfQotCSAKLQkvKioKLQkgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGdldHRpbmcgdGhlIGFjdG9yIHZhbHVlCi0JICogQHJldHVybiBUaGUgYWN0b3IgdmFsdWUKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldEFjdG9yKCkgewotCQlyZXR1cm4gYWN0b3I7Ci0JfQotCQotCS8qKgotCSAqIERldGVybWluZXMgaWYgdGhlIGFjdG9yIHZhbHVlIGlzIGEgdmFsaWQgVVJJLgotCSAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgYWN0b3IgdmFsdWUgaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS4KLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZUFjdG9yKCkgewkJIAotCQlyZXR1cm4gdmFsaWRBY3RvcjsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgSUQgb2YgdGhlIG11c3RVbmRlcnN0YW5kIGlucHV0IGVsZW1lbnQKLQkgKiBAcmV0dXJuIFRoZSBJRCBvZiB0aGUgbXVzdFVuZGVyc3RhbmQgaW5wdXQgZWxlbWVudAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0TXVzdFVuZGVyc3RhbmRJRCgpIHsKLQkJcmV0dXJuIGdldElEKCkgKyBGcmFnbWVudENvbnN0YW50cy5JRF9TRVBFUkFUT1IgKyBNVVNUX1VOREVSU1RBTkQ7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIElEIG9mIHRoZSBhY3RvciBpbnB1dCBlbGVtZW50Ci0JICogQHJldHVybiBUaGUgSUQgb2YgdGhlIGFjdG9yIGlucHV0IGVsZW1lbnQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldEFjdG9ySUQoKSB7Ci0JCXJldHVybiBnZXRJRCgpICsgRnJhZ21lbnRDb25zdGFudHMuSURfU0VQRVJBVE9SICsgQUNUT1I7Ci0JfQotCSAKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlhTRERlbGVnYXRpb25GcmFnbWVudCNnZXRXcml0ZUZyYWdtZW50KCkKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0JCXJldHVybiAiL3dzZGwvZnJhZ21lbnQvU09BUEhlYWRlcldyYXBwZXJXRnJhZ21lbnRKU1AuanNwIjsKLQl9CQkgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RBdHRyaWJ1dGVGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEQXR0cmlidXRlRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU1MzlhMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RBdHRyaWJ1dGVGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIAotICogTGljZW5zZWQgTWF0ZXJpYWwgLSBQcm9wZXJ0eSBvZiBJQk0gKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiAtIEFsbCBSaWdodHMKLSAqIFJlc2VydmVkLiBVUyBHb3Zlcm5tZW50IFVzZXJzIFJlc3RyaWN0ZWQgUmlnaHRzIC0gVXNlLCBkdXBsaWNhdGlvbiBvcgotICogZGlzY2xvc3VyZSByZXN0cmljdGVkIGJ5IEdTQSBBRFAgU2NoZWR1bGUgQ29udHJhY3Qgd2l0aCBJQk0gQ29ycC4KLSAqIAotICogPC9jb3B5cmlnaHQ+Ci0gKiAKLSAqIEZpbGUKLSAqIHBsdWdpbnMvY29tLmlibS5ldG9vbHMud2Vic2VydmljZS5leHBsb3Jlci93c2V4cGxvcmVyL3NyYy9jb20vaWJtL2V0b29scy93ZWJzZXJ2aWNlL2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvSW1wbC9YU0RFbGVtZW50RnJhZ21lbnQuamF2YSwKLSAqIHdzYS5ldG9vbHMud3MuZXhwbG9yZXIsIGx1bmFyLTUuMS4yLCAyMDAzMTIzMWEgNSBWZXJzaW9uIDEuNSAwMy8wOS8yNAotICogMTQ6MzA6MzgKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RBdHRyaWJ1dGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTREF0dHJpYnV0ZURlY2xhcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RBdHRyaWJ1dGVVc2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTREZvcm07Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi1wdWJsaWMgY2xhc3MgWFNEQXR0cmlidXRlRnJhZ21lbnQgZXh0ZW5kcyBYU0REZWxlZ2F0aW9uRnJhZ21lbnQgaW1wbGVtZW50cyBJWFNEQXR0cmlidXRlRnJhZ21lbnQKLXsKLSAgIAotICAKLSAgcHVibGljIFhTREF0dHJpYnV0ZUZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZykKLSAgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcpOwotICAgIAotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc1BhcmFtZXRlclZhbHVlcyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgSVhTREZyYWdtZW50IGF0dHJpYnV0ZVR5cGVGcmFnbWVudCA9IGdldFhTRERlbGVnYXRpb25GcmFnbWVudCgpOwotICAgIAkKLSAgICBpZiAoIWF0dHJpYnV0ZVR5cGVGcmFnbWVudC5wcm9jZXNzUGFyYW1ldGVyVmFsdWVzKHBhcnNlcikpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlQWxsUGFyYW1ldGVyVmFsdWVzKCkKLSAgewotICAgIElYU0RGcmFnbWVudCBhdHRyaWJ1dGVUeXBlRnJhZ21lbnQgPSBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKTsKLSAgICBpZiAoIWF0dHJpYnV0ZVR5cGVGcmFnbWVudC52YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5KQotICB7Ci0gICAgU3RyaW5nW10gcGFyYW1zID0gZ2V0UGFyYW1ldGVyVmFsdWVzKHBhcmFtS2V5KTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKS52YWxpZGF0ZVBhcmFtZXRlclZhbHVlcyhwYXJhbUtleSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZVBhcmFtZXRlclZhbHVlKFN0cmluZyBwYXJhbUtleSwgaW50IHBhcmFtSW5kZXgpCi0gIHsKLSAgICBpZiAoIWdldFhTRERlbGVnYXRpb25GcmFnbWVudCgpLnZhbGlkYXRlUGFyYW1ldGVyVmFsdWUocGFyYW1LZXksIHBhcmFtSW5kZXgpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnKQotICB7Ci0gICAgc3VwZXIuc2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oY29uZmlnKTsKLSAgICAKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMpCi0gIHsKLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHNDb3B5ID0gaW5zdGFuY2VEb2N1bWVudHM7Ci0gICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnID0gZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLSAgICBTdHJpbmcgd3NkbFBhcnROYW1lID0gY29uZmlnLmdldFdTRExQYXJ0TmFtZSgpOwotICAgIE5vZGVMaXN0IG5sID0gaW5zdGFuY2VEb2N1bWVudHNDb3B5WzBdLmdldENoaWxkTm9kZXMoKTsKLSAgICAgCi0gICAgCi0gICAgCi0gICAgaWYgKGNvbmZpZy5nZXRJc1dTRExQYXJ0KCkgJiYgY29uZmlnLmdldFN0eWxlKCkgPT0gRnJhZ21lbnRDb25zdGFudHMuU1RZTEVfUlBDICYmIHdzZGxQYXJ0TmFtZSAhPSBudWxsICYmIHdzZGxQYXJ0TmFtZS5sZW5ndGgoKSA+IDAgJiYgaW5zdGFuY2VEb2N1bWVudHNDb3B5Lmxlbmd0aCA9PSAxICYmIHdzZGxQYXJ0TmFtZS5lcXVhbHMoaW5zdGFuY2VEb2N1bWVudHNDb3B5WzBdLmdldFRhZ05hbWUoKSkpCi0gICAgewotICAgICAgVmVjdG9yIGNoaWxkRWxlbWVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5sLmdldExlbmd0aCgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIE5vZGUgbm9kZSA9IG5sLml0ZW0oaSk7Ci0gICAgICAgIGlmIChub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpewotICAgICAgICAgIGNoaWxkRWxlbWVudHMuYWRkKG5vZGUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpbnN0YW5jZURvY3VtZW50c0NvcHkgPSAoRWxlbWVudFtdKWNoaWxkRWxlbWVudHMudG9BcnJheShuZXcgRWxlbWVudFswXSk7Ci0gICAgfQotICAgIElYU0RGcmFnbWVudCBhdHRyaWJ1dGVUeXBlRnJhZ21lbnQgPSBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKTsKLSAgICBpbnN0YW5jZURvY3VtZW50c0NvcHkgPSBnZXRJbnN0YW5jZURvY3VtZW50c0J5VGFnTmFtZShpbnN0YW5jZURvY3VtZW50c0NvcHksIGdldE5hbWUoKSk7Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZVR5cGVGcmFnbWVudC5zZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoc2V0RWxlbWVudHNUYWdOYW1lKGluc3RhbmNlRG9jdW1lbnRzQ29weSwgYXR0cmlidXRlVHlwZUZyYWdtZW50LmdldE5hbWUoKSkpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNJbnN0YW5jZU5hbWVzcGFjZVF1YWxpZmllZCgpCi0gIHsKLSAgICBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcgPSBnZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICAgIGlmIChjb25maWcuZ2V0UGFydEVuY29kaW5nKCkgPT0gRnJhZ21lbnRDb25zdGFudHMuRU5DT0RJTkdfTElURVJBTCkKLSAgICB7Ci0gICAgICBYU0RBdHRyaWJ1dGVVc2UgeHNkQXR0cmlidXRlVXNlID0gKFhTREF0dHJpYnV0ZVVzZSljb25maWcuZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgICBYU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbiB4c2RBdHRyaWJ1dGUgPSAoWFNEQXR0cmlidXRlRGVjbGFyYXRpb24peHNkQXR0cmlidXRlVXNlLmdldEF0dHJpYnV0ZURlY2xhcmF0aW9uKCk7Ci0gICAgICBpZiAoeHNkQXR0cmlidXRlLmlzR2xvYmFsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoeHNkQXR0cmlidXRlLmlzU2V0Rm9ybSgpKQotICAgICAgICAgIHJldHVybiAoeHNkQXR0cmlidXRlLmdldEZvcm0oKS5nZXRWYWx1ZSgpID09IFhTREZvcm0uUVVBTElGSUVEKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHJldHVybiAoeHNkQXR0cmlidXRlLmdldFNjaGVtYSgpLmdldEF0dHJpYnV0ZUZvcm1EZWZhdWx0KCkuZ2V0VmFsdWUoKSA9PSBYU0RGb3JtLlFVQUxJRklFRCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0SW5zdGFuY2VEb2N1bWVudFRhZ05hbWUoSGFzaHRhYmxlIG5hbWVzcGFjZVRhYmxlKQotICB7Ci0gICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnID0gZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLSAgICBYU0RBdHRyaWJ1dGVVc2UgeHNkQXR0cmlidXRlVXNlID0gKFhTREF0dHJpYnV0ZVVzZSljb25maWcuZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgWFNEQXR0cmlidXRlRGVjbGFyYXRpb24geHNkQXR0cmlidXRlID0geHNkQXR0cmlidXRlVXNlLmdldEF0dHJpYnV0ZURlY2xhcmF0aW9uKCk7Ci0gICAgCi0gICAgU3RyaW5nQnVmZmVyIHRhZ05hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgaWYgKGlzSW5zdGFuY2VOYW1lc3BhY2VRdWFsaWZpZWQoKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgbnNVUkkgPSBudWxsOwotICAgICAgLy8gcG9ydCB0byBvcmcuZWNsaXBzZS54c2QKLSAgICAgIGlmICh4c2RBdHRyaWJ1dGUuZ2V0UmVzb2x2ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpICE9IG51bGwpCi0gICAgICAgIG5zVVJJID0geHNkQXR0cmlidXRlLmdldFJlc29sdmVkQXR0cmlidXRlRGVjbGFyYXRpb24oKS5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgbnNVUkkgPSB4c2RBdHRyaWJ1dGUuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0gICAgICBpZiAobnNVUkkgIT0gbnVsbCAmJiBuc1VSSS5sZW5ndGgoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBwcmVmaXggPSBnZXRQcmVmaXhGcm9tTmFtZXNwYWNlVVJJKG5zVVJJLCBuYW1lc3BhY2VUYWJsZSk7Ci0gICAgICAgIHRhZ05hbWUuYXBwZW5kKHByZWZpeCk7Ci0gICAgICAgIHRhZ05hbWUuYXBwZW5kKEZyYWdtZW50Q29uc3RhbnRzLkNPTE9OKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgU3RyaW5nIHhzZEF0dHJpYnV0ZU5hbWUgPSB4c2RBdHRyaWJ1dGUuZ2V0TmFtZSgpOwotICAgIGlmICh4c2RBdHRyaWJ1dGVOYW1lID09IG51bGwgfHwgeHNkQXR0cmlidXRlTmFtZS5sZW5ndGgoKSA8PSAwKQotICAgIHsKLSAgICAgIC8vIHBvcnQgdG8gb3JnLmVjbGlwc2UueHNkCi0gICAgICBpZiAoeHNkQXR0cmlidXRlLmdldFJlc29sdmVkQXR0cmlidXRlRGVjbGFyYXRpb24oKSAhPSBudWxsKQotICAgICAgCXhzZEF0dHJpYnV0ZU5hbWUgPSB4c2RBdHRyaWJ1dGUuZ2V0UmVzb2x2ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpLmdldE5hbWUoKTsKLSAgICAgIGVsc2UKLSAgICAgIAl4c2RBdHRyaWJ1dGVOYW1lID0gZ2V0TmFtZSgpOwotICAgIH0KLSAgICB0YWdOYW1lLmFwcGVuZCh4c2RBdHRyaWJ1dGVOYW1lKTsKLSAgICByZXR1cm4gdGFnTmFtZS50b1N0cmluZygpOwotICB9Ci0KLSAgCi0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5mb3JtYXRpb25GcmFnbWVudCgpCi0gIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZEZyYWdtZW50KCkKLSAgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNERGVsZWdhdGVGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXcml0ZUZyYWdtZW50KCkKLSAgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNERGVsZWdhdGVGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRENvbXBsZXhGaXhGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEQ29tcGxleEZpeEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyY2Y1ZDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEQ29tcGxleEZpeEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotCi1wdWJsaWMgY2xhc3MgWFNEQ29tcGxleEZpeEZyYWdtZW50IGV4dGVuZHMgWFNEQ29tcGxleEZyYWdtZW50IHsKLSAgcHVibGljIFhTRENvbXBsZXhGaXhGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnLCBjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5mb3JtYXRpb25GcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZEZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleFJGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXcml0ZUZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleEZpeFdGcmFnbWVudEpTUC5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RDb21wbGV4RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRENvbXBsZXhGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWZhY2I3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRENvbXBsZXhGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzM4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMDUgICAxMTcwMzQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBzaG91bGQgc3VwcG9ydCBTT0FQIEhlYWRlcnMKLSAqIDIwMDcwNTE2ICAgMTg1NTk2IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgU2VydmljZXMgRXhwbG9yZXIgbWlzaW50ZXJwcmV0cyByZXNwb25zZSBtZXNzYWdlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREF0dHJpYnV0ZUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RDb21wbGV4RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LnV0aWwuWFNEVHlwZURlZmluaXRpb25VdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RBdHRyaWJ1dGVHcm91cERlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTREF0dHJpYnV0ZVVzZTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcGxleEZpbmFsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb21wbGV4VHlwZUNvbnRlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNETW9kZWxHcm91cDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNETW9kZWxHcm91cERlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE5hbWVkQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RQYXJ0aWNsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEUGFydGljbGVDb250ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgWFNEQ29tcGxleEZyYWdtZW50IGV4dGVuZHMgWFNETWFwRnJhZ21lbnQgaW1wbGVtZW50cyBJWFNEQ29tcGxleEZyYWdtZW50Ci17Ci0gIHB1YmxpYyBYU0RDb21wbGV4RnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBzZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzKQotICB7Ci0gICAgRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzQ29weSA9IGdldEluc3RhbmNlRG9jdW1lbnRzQnlUYWdOYW1lKGluc3RhbmNlRG9jdW1lbnRzLCBnZXROYW1lKCkpOwotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSBpbnRlcm5hbEVxdWFscyhpbnN0YW5jZURvY3VtZW50c0NvcHksIGluc3RhbmNlRG9jdW1lbnRzKTsKLSAgICBYU0RDb21wbGV4VHlwZURlZmluaXRpb24gY29tcGxleFR5cGUgPSAoWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uKWdldFhTRFR5cGVEZWZpbml0aW9uKCk7Ci0gICAgWFNEQ29tcGxleFR5cGVDb250ZW50IGNvbXBsZXhUeXBlQ29udGVudCA9IFhTRFR5cGVEZWZpbml0aW9uVXRpbC5nZXRYU0RDb21wbGV4VHlwZUNvbnRlbnQoY29tcGxleFR5cGUpOwotICAgIGlmIChjb21wbGV4VHlwZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RUeXBlRGVmaW5pdGlvbikKLSAgICAgIHNldFBhcmFtc0ZvclhTRFR5cGVEZWYoaW5zdGFuY2VEb2N1bWVudHNDb3B5KTsKLSAgICBlbHNlCi0gICAgICBzZXRQYXJhbXNGb3JYU0RQYXJ0aWNsZShpbnN0YW5jZURvY3VtZW50c0NvcHkpOyAKLSAgICByZXR1cm4gc2V0UGFyYW1zRm9yQXR0cmlidXRlcyhpbnN0YW5jZURvY3VtZW50c0NvcHkpICYmIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIHNldFBhcmFtc0ZvckF0dHJpYnV0ZXMoRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzKXsKLSAgCWJvb2xlYW4gcGFyYW1zVmFsaWQgPSB0cnVlOwotICAJCi0gIAlTdHJpbmdbXSBmcmFnbWVudHNPcmRlciA9IGdldEZyYWdtZW50c09yZGVyKCk7Ci0gIAlJWFNEQXR0cmlidXRlRnJhZ21lbnRbXSBhdHRyaWJ1dGVGcmFnbWVudHMgPSBnZXRBbGxBdHRyaWJ1dGVGcmFnbWVudHMoKTsKLSAgCWZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspewotICAJICAKLSAgCSAgaWYgKGkgPj0gZnJhZ21lbnRzT3JkZXIubGVuZ3RoKSBicmVhazsKLSAgCSAgU3RyaW5nIGZyYWdtZW50SUQgPSBmcmFnbWVudHNPcmRlcltpXTsKLQotICAJICBmb3IgKGludCBrID0gMDsgayA8IGF0dHJpYnV0ZUZyYWdtZW50cy5sZW5ndGg7IGsrKyl7Ci0gIAkJaWYoYXR0cmlidXRlRnJhZ21lbnRzW2tdLmdldElEKCkuc3RhcnRzV2l0aChmcmFnbWVudElEKSl7Ci0gIAkJICBOYW1lZE5vZGVNYXAgbm9kZU1hcCA9IGluc3RhbmNlRG9jdW1lbnRzW2ldLmdldEF0dHJpYnV0ZXMoKTsKLSAgCSAgCSAgU3RyaW5nIG5hbWUgPSAoKFhTREF0dHJpYnV0ZVVzZSlhdHRyaWJ1dGVGcmFnbWVudHNba10uZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKS5nZXRYU0RDb21wb25lbnQoKSkuZ2V0QXR0cmlidXRlRGVjbGFyYXRpb24oKS5nZXROYW1lKCk7Ci0gIAkgICAgICBwYXJhbXNWYWxpZCA9IGF0dHJpYnV0ZUZyYWdtZW50c1trXS5nZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKS5zZXRBdHRyaWJ1dGVQYXJhbXNGcm9tSW5zdGFuY2VEb2N1bWVudHMobm9kZU1hcC5nZXROYW1lZEl0ZW0obmFtZSkpOwotICAJCX0KLSAgICAgIH0KLSAgCX0KLSAgICByZXR1cm4gcGFyYW1zVmFsaWQ7Ci0gIH0KLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBzZXRQYXJhbXNGb3JYU0RUeXBlRGVmKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykKLSAgewotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSB0cnVlOwotICAgIHJlbW92ZUFsbEZyYWdtZW50cygpOwotICAgIHJlbW92ZUFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIElYU0RGcmFnbWVudCBjaGlsZEZyYWcgPSBnZXRGcmFnbWVudChjcmVhdGVJbnN0YW5jZSgpKTsKLSAgICAgIEVsZW1lbnRbXSBjaGlsZEluc3RhbmNlRG9jdW1lbnRzID0gbmV3IEVsZW1lbnRbMV07Ci0gICAgICBjaGlsZEluc3RhbmNlRG9jdW1lbnRzWzBdID0gaW5zdGFuY2VEb2N1bWVudHNbaV07Ci0gICAgICBpZiAoIWNoaWxkRnJhZy5zZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoc2V0RWxlbWVudHNUYWdOYW1lKGNoaWxkSW5zdGFuY2VEb2N1bWVudHMsIGNoaWxkRnJhZy5nZXROYW1lKCkpKSkKLSAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIHNldFBhcmFtc0ZvclhTRFBhcnRpY2xlKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykKLSAgewotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSB0cnVlOwotICAgIHJlbW92ZUFsbEZyYWdtZW50cygpOwotICAgIHJlbW92ZUFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIElYU0RGcmFnbWVudCBjaGlsZEZyYWcgPSBnZXRGcmFnbWVudChjcmVhdGVJbnN0YW5jZSgpKTsKLSAgICAgIFZlY3RvciBpbnN0YW5jZXNWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBOb2RlTGlzdCBubCA9IGluc3RhbmNlRG9jdW1lbnRzW2ldLmdldENoaWxkTm9kZXMoKTsKLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmwuZ2V0TGVuZ3RoKCk7IGorKykKLSAgICAgIHsKLSAgICAgICAgTm9kZSBub2RlID0gbmwuaXRlbShqKTsKLSAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KQotICAgICAgICAgIGluc3RhbmNlc1ZlY3Rvci5hZGQobm9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgICAgfQotICAgICAgRWxlbWVudFtdIGNoaWxkSW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtpbnN0YW5jZXNWZWN0b3Iuc2l6ZSgpXTsKLSAgICAgIGluc3RhbmNlc1ZlY3Rvci5jb3B5SW50byhjaGlsZEluc3RhbmNlRG9jdW1lbnRzKTsKLSAgICAgIGlmICghY2hpbGRGcmFnLnNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhjaGlsZEluc3RhbmNlRG9jdW1lbnRzKSkKLSAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIEVsZW1lbnRbXSBnZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsIERvY3VtZW50IGRvYykKLSAgewotICAgIFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbiBjb21wbGV4VHlwZSA9IChYU0RDb21wbGV4VHlwZURlZmluaXRpb24pZ2V0WFNEVHlwZURlZmluaXRpb24oKTsKLSAgICBYU0RDb21wbGV4VHlwZUNvbnRlbnQgY29tcGxleFR5cGVDb250ZW50ID0gWFNEVHlwZURlZmluaXRpb25VdGlsLmdldFhTRENvbXBsZXhUeXBlQ29udGVudChjb21wbGV4VHlwZSk7Ci0gICAgRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzOwotICAgIFN0cmluZyB0YWdOYW1lID0gZ2V0SW5zdGFuY2VEb2N1bWVudFRhZ05hbWUobmFtZXNwYWNlVGFibGUpOwotICAgIGlmIChjb21wbGV4VHlwZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RUeXBlRGVmaW5pdGlvbikKLSAgICAgIGluc3RhbmNlRG9jdW1lbnRzID0gZ2VuSW5zdGFuY2VzRm9yWFNEVHlwZURlZihnZW5YU0lUeXBlLCBuYW1lc3BhY2VUYWJsZSwgdGFnTmFtZSwgZG9jKTsKLSAgICBlbHNlCi0gICAgICBpbnN0YW5jZURvY3VtZW50cyA9IGdlbkluc3RhbmNlc0ZvclhTRFBhcnRpY2xlKGdlblhTSVR5cGUsIG5hbWVzcGFjZVRhYmxlLCB0YWdOYW1lLCBkb2MpOwotICAgICAgaWYoZ2VuWFNJVHlwZSkgYWRkWFNJVHlwZShpbnN0YW5jZURvY3VtZW50cywgbmFtZXNwYWNlVGFibGUpOwotICAgICAgaW5zdGFuY2VEb2N1bWVudHMgPSBhZGRBdHRyaWJ1dGVzKGluc3RhbmNlRG9jdW1lbnRzKTsKLQlyZXR1cm4gaW5zdGFuY2VEb2N1bWVudHM7Ci0gIH0KLQotICBwcml2YXRlIEVsZW1lbnRbXSBhZGRBdHRyaWJ1dGVzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cyl7Ci0gIAkKLQlTdHJpbmdbXSBmcmFnbWVudHNPcmRlciA9IGdldEZyYWdtZW50c09yZGVyKCk7Ci0gIAlJWFNEQXR0cmlidXRlRnJhZ21lbnRbXSBhdHRyaWJ1dGVGcmFnbWVudHMgPSBnZXRBbGxBdHRyaWJ1dGVGcmFnbWVudHMoKTsKLSAgCWZvciAoaW50IGkgPSAwO2k8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDtpKyspewotCi0gIAkgIGlmIChpID49IGZyYWdtZW50c09yZGVyLmxlbmd0aCkgYnJlYWs7Ci0gICAJICBTdHJpbmcgZnJhZ21lbnRJRCA9IGZyYWdtZW50c09yZGVyW2ldOwotICAJCQotICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBhdHRyaWJ1dGVGcmFnbWVudHMubGVuZ3RoOyBrKyspewotICAgIAlpZihhdHRyaWJ1dGVGcmFnbWVudHNba10uZ2V0SUQoKS5zdGFydHNXaXRoKGZyYWdtZW50SUQpKXsKLSAgICAJICBTdHJpbmcgbmFtZSA9ICgoWFNEQXR0cmlidXRlVXNlKWF0dHJpYnV0ZUZyYWdtZW50c1trXS5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpLmdldFhTRENvbXBvbmVudCgpKS5nZXRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpLmdldE5hbWUoKTsKLSAgICAJICBhdHRyaWJ1dGVGcmFnbWVudHNba10uZ2V0WFNERGVsZWdhdGlvbkZyYWdtZW50KCkuc2V0QXR0cmlidXRlc09uSW5zdGFuY2VEb2N1bWVudHMoaW5zdGFuY2VEb2N1bWVudHNbaV0sbmFtZSk7Ci0gICAgCX0KLSAgICAgIH0KLSAgIAl9Ci0gICAJcmV0dXJuIGluc3RhbmNlRG9jdW1lbnRzOwotICB9Ci0gIAotICBwcml2YXRlIEVsZW1lbnRbXSBnZW5JbnN0YW5jZXNGb3JYU0RUeXBlRGVmKGJvb2xlYW4gZ2VuWFNJVHlwZSwgSGFzaHRhYmxlIG5hbWVzcGFjZVRhYmxlLCBTdHJpbmcgdGFnTmFtZSwgRG9jdW1lbnQgZG9jKQotICB7Ci0gICAgSVhTREZyYWdtZW50W10gZnJhZ21lbnRzID0gZ2V0QWxsRnJhZ21lbnRzKCk7Ci0gICAgVmVjdG9yIGluc3RhbmNlRG9jdW1lbnRzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYWdtZW50cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBFbGVtZW50W10gZnJhZ21lbnRJbnN0YW5jZXMgPSBmcmFnbWVudHNbaV0uZ2VuSW5zdGFuY2VEb2N1bWVudHNGcm9tUGFyYW1ldGVyVmFsdWVzKGdlblhTSVR5cGUsIG5hbWVzcGFjZVRhYmxlLCBkb2MpOwotICAgICAgaWYgKGZyYWdtZW50SW5zdGFuY2VzLmxlbmd0aCA+IDApCi0gICAgICAgIGluc3RhbmNlRG9jdW1lbnRzQ29weS5hZGQoZnJhZ21lbnRJbnN0YW5jZXNbMF0pOwotICAgIH0KLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtpbnN0YW5jZURvY3VtZW50c0NvcHkuc2l6ZSgpXTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGluc3RhbmNlRG9jdW1lbnRzW2ldID0gKEVsZW1lbnQpaW5zdGFuY2VEb2N1bWVudHNDb3B5LmdldChpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNldEVsZW1lbnRzVGFnTmFtZShpbnN0YW5jZURvY3VtZW50cywgdGFnTmFtZSk7Ci0gIH0KLQotICBwcml2YXRlIEVsZW1lbnRbXSBnZW5JbnN0YW5jZXNGb3JYU0RQYXJ0aWNsZShib29sZWFuIGdlblhTSVR5cGUsIEhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSwgU3RyaW5nIHRhZ05hbWUsIERvY3VtZW50IGRvYykKLSAgewotICAgIElYU0RGcmFnbWVudFtdIGNoaWxkRnJhZ3MgPSBnZXRBbGxGcmFnbWVudHMoKTsKLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtjaGlsZEZyYWdzLmxlbmd0aF07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBFbGVtZW50W10gY2hpbGRJbnN0YW5jZXMgPSBjaGlsZEZyYWdzW2ldLmdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyhnZW5YU0lUeXBlLCBuYW1lc3BhY2VUYWJsZSwgZG9jKTsKLSAgICAgIEVsZW1lbnQgaW5zdGFuY2VEb2N1bWVudCA9IGRvYy5jcmVhdGVFbGVtZW50KHRhZ05hbWUpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjaGlsZEluc3RhbmNlcy5sZW5ndGg7IGorKykKLSAgICAgIHsKLSAgICAgICAgaWYgKGNoaWxkSW5zdGFuY2VzW2pdICE9IG51bGwpCi0gICAgICAgICAgaW5zdGFuY2VEb2N1bWVudC5hcHBlbmRDaGlsZChjaGlsZEluc3RhbmNlc1tqXSk7Ci0gICAgICB9Ci0gICAgICBpbnN0YW5jZURvY3VtZW50c1tpXSA9IGluc3RhbmNlRG9jdW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiBpbnN0YW5jZURvY3VtZW50czsKLSAgfQotCi0gIHByaXZhdGUgWFNETW9kZWxHcm91cCBnZXRYU0RNb2RlbEdyb3VwKFhTRFBhcnRpY2xlIHhzZFBhcnRpY2xlKQotICB7Ci0gICAgaWYgKHhzZFBhcnRpY2xlICE9IG51bGwpCi0gICAgewotICAgICAgWFNEUGFydGljbGVDb250ZW50IHhzZFBhcnRpY2xlQ29udGVudCA9IHhzZFBhcnRpY2xlLmdldENvbnRlbnQoKTsKLSAgICAgIGlmICh4c2RQYXJ0aWNsZUNvbnRlbnQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaWYgKHhzZFBhcnRpY2xlQ29udGVudCBpbnN0YW5jZW9mIFhTRE1vZGVsR3JvdXBEZWZpbml0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgWFNETW9kZWxHcm91cERlZmluaXRpb24geHNkTW9kZWxHcm91cERlZiA9IChYU0RNb2RlbEdyb3VwRGVmaW5pdGlvbil4c2RQYXJ0aWNsZUNvbnRlbnQ7Ci0gICAgICAgICAgaWYgKHhzZE1vZGVsR3JvdXBEZWYuaXNNb2RlbEdyb3VwRGVmaW5pdGlvblJlZmVyZW5jZSgpKQotICAgICAgICAgICAgeHNkTW9kZWxHcm91cERlZiA9IHhzZE1vZGVsR3JvdXBEZWYuZ2V0UmVzb2x2ZWRNb2RlbEdyb3VwRGVmaW5pdGlvbigpOwotICAgICAgICAgIHJldHVybiB4c2RNb2RlbEdyb3VwRGVmLmdldE1vZGVsR3JvdXAoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh4c2RQYXJ0aWNsZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RNb2RlbEdyb3VwKQotICAgICAgICAgIHJldHVybiAoWFNETW9kZWxHcm91cCl4c2RQYXJ0aWNsZUNvbnRlbnQ7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHJpdmF0ZSBMaXN0IGdldEluaGVyaXRlZFBhcnRpY2xlcyhYU0RDb21wbGV4VHlwZURlZmluaXRpb24gY29tcGxleFR5cGUpCi0gIHsKLSAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICBpZiAoY29tcGxleFR5cGUuZ2V0RGVyaXZhdGlvbk1ldGhvZCgpLmdldFZhbHVlKCkgPT0gWFNEQ29tcGxleEZpbmFsLkVYVEVOU0lPTikKLSAgICB7Ci0gICAgICBYU0RUeXBlRGVmaW5pdGlvbiBleHRUeXBlID0gY29tcGxleFR5cGUuZ2V0QmFzZVR5cGUoKTsKLSAgICAgIGlmIChleHRUeXBlICE9IG51bGwgJiYgIShleHRUeXBlIGluc3RhbmNlb2YgWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG5hbWVzcGFjZSA9IGV4dFR5cGUuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0gICAgICAgIFN0cmluZyBsb2NhbG5hbWUgPSBleHRUeXBlLmdldE5hbWUoKTsKLSAgICAgICAgaWYgKG5hbWVzcGFjZSAhPSBudWxsICYmIGxvY2FsbmFtZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgWFNETmFtZWRDb21wb25lbnQgeHNkTmFtZWRDb21wID0gZ2V0WFNEVG9GcmFnbWVudENvbnRyb2xsZXIoKS5nZXRXU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIoKS5nZXRYU0RUeXBlRnJvbVNjaGVtYShuYW1lc3BhY2UsIGxvY2FsbmFtZSwgZmFsc2UpOwotICAgICAgICAgIGlmICh4c2ROYW1lZENvbXAgaW5zdGFuY2VvZiBYU0RDb21wbGV4VHlwZURlZmluaXRpb24pCi0gICAgICAgICAgewotICAgICAgICAgICAgZXh0VHlwZSA9IChYU0RDb21wbGV4VHlwZURlZmluaXRpb24peHNkTmFtZWRDb21wOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKGV4dFR5cGUgIT0gbnVsbCAmJiBleHRUeXBlICE9IGNvbXBsZXhUeXBlICYmIGV4dFR5cGUgaW5zdGFuY2VvZiBYU0RDb21wbGV4VHlwZURlZmluaXRpb24pCi0gICAgICB7Ci0gICAgICAgIFhTRENvbXBsZXhUeXBlQ29udGVudCBleHRUeXBlQ29udGVudCA9IFhTRFR5cGVEZWZpbml0aW9uVXRpbC5nZXRYU0RDb21wbGV4VHlwZUNvbnRlbnQoKFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbilleHRUeXBlKTsKLSAgICAgICAgaWYgKGV4dFR5cGVDb250ZW50IGluc3RhbmNlb2YgWFNEUGFydGljbGUpCi0gICAgICAgIHsKLSAgICAgICAgICBYU0RNb2RlbEdyb3VwIHhzZE1vZGVsR3JvdXAgPSBnZXRYU0RNb2RlbEdyb3VwKChYU0RQYXJ0aWNsZSlleHRUeXBlQ29udGVudCk7Ci0gICAgICAgICAgaWYgKHhzZE1vZGVsR3JvdXAgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB2LmFkZEFsbChnZXRJbmhlcml0ZWRQYXJ0aWNsZXMoKFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbilleHRUeXBlKSk7Ci0gICAgICAgICAgICB2LmFkZEFsbCh4c2RNb2RlbEdyb3VwLmdldFBhcnRpY2xlcygpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgZ2F0aGVySW5oZXJpdGVkUGFydGljbGVzKFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbiBjb21wbGV4VHlwZSkKLSAgewotICAgIGlmIChjb21wbGV4VHlwZS5nZXREZXJpdmF0aW9uTWV0aG9kKCkuZ2V0VmFsdWUoKSA9PSBYU0RDb21wbGV4RmluYWwuRVhURU5TSU9OKQotICAgIHsKLSAgICAgIFhTRENvbXBsZXhUeXBlQ29udGVudCBjb21wbGV4VHlwZUNvbnRlbnQgPSBYU0RUeXBlRGVmaW5pdGlvblV0aWwuZ2V0WFNEQ29tcGxleFR5cGVDb250ZW50KGNvbXBsZXhUeXBlKTsKLSAgICAgIGlmIChjb21wbGV4VHlwZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RQYXJ0aWNsZSkKLSAgICAgIHsKLSAgICAgICAgWFNETW9kZWxHcm91cCB4c2RNb2RlbEdyb3VwID0gZ2V0WFNETW9kZWxHcm91cCgoWFNEUGFydGljbGUpY29tcGxleFR5cGVDb250ZW50KTsKLSAgICAgICAgaWYgKHhzZE1vZGVsR3JvdXAgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIExpc3QgaW5oZXJpdGVkUGFydGljbGVzID0gZ2V0SW5oZXJpdGVkUGFydGljbGVzKGNvbXBsZXhUeXBlKTsKLSAgICAgICAgICBMaXN0IHBhcnRpY2xlcyA9IHhzZE1vZGVsR3JvdXAuZ2V0UGFydGljbGVzKCk7Ci0gICAgICAgICAgcGFydGljbGVzLmFkZEFsbCgwLCBpbmhlcml0ZWRQYXJ0aWNsZXMpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgCi0gIAotICBwdWJsaWMgSVhTREF0dHJpYnV0ZUZyYWdtZW50W10gZ2V0QWxsQXR0cmlidXRlRnJhZ21lbnRzKCkKLSAgewotICAJcmV0dXJuIHN1cGVyLmdldEFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwkJCi0gIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBjcmVhdGVBdHRyaWJ1dGVGcmFnbWVudHMoU3RyaW5nIGNvbXBsZXhDaGlsZElEKQotICB7Ci0gIAlYU0RDb21wbGV4VHlwZURlZmluaXRpb24gY29tcGxleFR5cGUgPSAoWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uKWdldFhTRFR5cGVEZWZpbml0aW9uKCk7Ci0gIAlFTGlzdCBhdENvbnRlbnRMaXN0ID0gY29tcGxleFR5cGUuZ2V0QXR0cmlidXRlQ29udGVudHMoKTsKLSAgCUl0ZXJhdG9yIGl0ZXJhdG9yID0gYXRDb250ZW50TGlzdC5pdGVyYXRvcigpOwotICAJd2hpbGUoaXRlcmF0b3IuaGFzTmV4dCgpKXsKLSAgCSAgT2JqZWN0IG9iamVjdCA9IChPYmplY3QpaXRlcmF0b3IubmV4dCgpOwotICAJICBpZihvYmplY3QgaW5zdGFuY2VvZiBYU0RBdHRyaWJ1dGVHcm91cERlZmluaXRpb24pewotICAJCVhTREF0dHJpYnV0ZUdyb3VwRGVmaW5pdGlvbiB4c2RBR0QgPSAoWFNEQXR0cmlidXRlR3JvdXBEZWZpbml0aW9uKW9iamVjdDsKLSAgCQlYU0RBdHRyaWJ1dGVHcm91cERlZmluaXRpb24gcmVzb2x2ZWQgPSB4c2RBR0QuZ2V0UmVzb2x2ZWRBdHRyaWJ1dGVHcm91cERlZmluaXRpb24oKTsKLSAgCQlFTGlzdCBhTGlzdCA9IHJlc29sdmVkLmdldENvbnRlbnRzKCk7Ci0gIAkJSXRlcmF0b3IgaXRlcmF0b3IyID0gYUxpc3QuaXRlcmF0b3IoKTsKLSAgCQl3aGlsZShpdGVyYXRvcjIuaGFzTmV4dCgpKXsKLSAgCQkJY3JlYXRlQXR0cmlidXRlSGVscGVyKChYU0RBdHRyaWJ1dGVVc2UpaXRlcmF0b3IyLm5leHQoKSxjb21wbGV4Q2hpbGRJRCk7Ci0gIAkJfQotICAJICB9Ci0gIAkgIGVsc2V7Ci0gIAkgICAgWFNEQXR0cmlidXRlVXNlIGF0dFVzZSA9ICAoWFNEQXR0cmlidXRlVXNlKW9iamVjdDsKLSAgCSAgICBjcmVhdGVBdHRyaWJ1dGVIZWxwZXIoYXR0VXNlLGNvbXBsZXhDaGlsZElEKTsKLSAgCSAgfQotICAJICAKLSAgCX0KLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGNyZWF0ZUF0dHJpYnV0ZUhlbHBlcihYU0RBdHRyaWJ1dGVVc2UgYXR0VXNlLFN0cmluZyBjb21wbGV4Q2hpbGRJRCl7Ci0JICBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB0aGlzQ29uZmlnID0gZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLSAgICAgIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IG5ldyBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICAgICAgeHNkQ29uZmlnLnNldFhTRENvbXBvbmVudChhdHRVc2UpOwotICAgICAgeHNkQ29uZmlnLnNldFN0eWxlKHRoaXNDb25maWcuZ2V0U3R5bGUoKSk7Ci0gICAgICB4c2RDb25maWcuc2V0UGFydEVuY29kaW5nKHRoaXNDb25maWcuZ2V0UGFydEVuY29kaW5nKCkpOwotICAgICAgeHNkQ29uZmlnLnNldFdTRExQYXJ0TmFtZSh0aGlzQ29uZmlnLmdldFdTRExQYXJ0TmFtZSgpKTsKLSAgICAgIFN0cmluZyBuZXdJRCA9IGdlbklEKCk7Ci0gICAgICBhZGRBdHRyaWJ1dGVGcmFnbWVudChjb21wbGV4Q2hpbGRJRCArIG5ld0lELCBnZXRYU0RUb0ZyYWdtZW50Q29udHJvbGxlcigpLmdldEZyYWdtZW50KHhzZENvbmZpZyxjb21wbGV4Q2hpbGRJRCArIG5ld0lELCBjb21wbGV4Q2hpbGRJRCArIG5ld0lEKSk7Ci0gIAkgIAotICB9Ci0gIAotICAKLSAgcHVibGljIFN0cmluZyBjcmVhdGVDb21wbGV4SW5zdGFuY2UoKQotICB7Ci0gICAgWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uIGNvbXBsZXhUeXBlID0gKFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbilnZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotICAgIGdhdGhlckluaGVyaXRlZFBhcnRpY2xlcyhjb21wbGV4VHlwZSk7Ci0gICAgWFNEQ29tcGxleFR5cGVDb250ZW50IGNvbXBsZXhUeXBlQ29udGVudCA9IFhTRFR5cGVEZWZpbml0aW9uVXRpbC5nZXRYU0RDb21wbGV4VHlwZUNvbnRlbnQoY29tcGxleFR5cGUpOwotICAgIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHRoaXNDb25maWcgPSBnZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICAgIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IG5ldyBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICAgIHhzZENvbmZpZy5zZXRYU0RDb21wb25lbnQoY29tcGxleFR5cGVDb250ZW50KTsKLSAgICB4c2RDb25maWcuc2V0U3R5bGUodGhpc0NvbmZpZy5nZXRTdHlsZSgpKTsKLSAgICB4c2RDb25maWcuc2V0UGFydEVuY29kaW5nKHRoaXNDb25maWcuZ2V0UGFydEVuY29kaW5nKCkpOwotICAgIHhzZENvbmZpZy5zZXRXU0RMUGFydE5hbWUodGhpc0NvbmZpZy5nZXRXU0RMUGFydE5hbWUoKSk7Ci0gICAgU3RyaW5nIG5ld0lEID0gZ2VuSUQoKTsKLSAgICBhZGRGcmFnbWVudChuZXdJRCwgZ2V0WFNEVG9GcmFnbWVudENvbnRyb2xsZXIoKS5nZXRGcmFnbWVudCh4c2RDb25maWcsIG5ld0lELCBnZXROYW1lKCkpKTsKLSAgICBjcmVhdGVBdHRyaWJ1dGVGcmFnbWVudHMobmV3SUQpOwotICAgIHJldHVybiBuZXdJRDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgY3JlYXRlSW5zdGFuY2UoKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNvbXBsZXhJbnN0YW5jZSgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RDb21wbGV4UmFuZ2VGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEQ29tcGxleFJhbmdlRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY5YmQ4ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RDb21wbGV4UmFuZ2VGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29udHJvbGxlcjsKLQotcHVibGljIGNsYXNzIFhTRENvbXBsZXhSYW5nZUZyYWdtZW50IGV4dGVuZHMgWFNEQ29tcGxleEZyYWdtZW50IHsKLSAgcHVibGljIFhTRENvbXBsZXhSYW5nZUZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcsIGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJbmZvcm1hdGlvbkZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdEluZm9GcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRSZWFkRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4UkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4UmFuZ2VXRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEQ29tcGxleFNpbXBsZUNvbnRlbnRGaXhGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEQ29tcGxleFNpbXBsZUNvbnRlbnRGaXhGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzVhMzMyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRENvbXBsZXhTaW1wbGVDb250ZW50Rml4RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0vKioKLSogPGNvcHlyaWdodD4KLSoKLSogTGljZW5zZWQgTWF0ZXJpYWwgLSBQcm9wZXJ0eSBvZiBJQk0KLSogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0qIFVTIEdvdmVybm1lbnQgVXNlcnMgUmVzdHJpY3RlZCBSaWdodHMgLSBVc2UsIGR1cGxpY2F0aW9uIG9yIGRpc2Nsb3N1cmUKLSogcmVzdHJpY3RlZCBieSBHU0EgQURQIFNjaGVkdWxlIENvbnRyYWN0IHdpdGggSUJNIENvcnAuCi0qCi0qIDwvY29weXJpZ2h0PgotKgotKiBGaWxlIHBsdWdpbnMvY29tLmlibS5ldG9vbHMud2Vic2VydmljZS5leHBsb3Jlci93c2V4cGxvcmVyL3NyYy9jb20vaWJtL2V0b29scy93ZWJzZXJ2aWNlL2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvSW1wbC9YU0RDb21wbGV4Rml4RnJhZ21lbnQuamF2YSwgd3NhLmV0b29scy53cy5leHBsb3JlciwgbHVuYXItNS4xLjIgMQotKiBWZXJzaW9uIDEuMSAwMy8wMi8yOCAxNToyNToxNQotKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RBdHRyaWJ1dGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQudXRpbC5YU0RUeXBlRGVmaW5pdGlvblV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTREF0dHJpYnV0ZVVzZTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcGxleFR5cGVDb250ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb21wbGV4VHlwZURlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFR5cGVEZWZpbml0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLXB1YmxpYyBjbGFzcyBYU0RDb21wbGV4U2ltcGxlQ29udGVudEZpeEZyYWdtZW50IGV4dGVuZHMgWFNEQ29tcGxleEZyYWdtZW50IHsKLSAgcHVibGljIFhTRENvbXBsZXhTaW1wbGVDb250ZW50Rml4RnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgY29udHJvbGxlcik7Ci0gIH0KLQotICAKLSAgCi0gIAotICAKLSAgcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykgewotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50c0NvcHkgPSBnZXRJbnN0YW5jZURvY3VtZW50c0J5VGFnTmFtZShpbnN0YW5jZURvY3VtZW50cywgZ2V0TmFtZSgpKTsKLSAgICBib29sZWFuIHBhcmFtc1ZhbGlkID0gaW50ZXJuYWxFcXVhbHMoaW5zdGFuY2VEb2N1bWVudHNDb3B5LCBpbnN0YW5jZURvY3VtZW50cyk7Ci0gICAgWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uIGNvbXBsZXhUeXBlID0gKFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbilnZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotICAgIFhTRENvbXBsZXhUeXBlQ29udGVudCBjb21wbGV4VHlwZUNvbnRlbnQgPSBYU0RUeXBlRGVmaW5pdGlvblV0aWwuZ2V0WFNEQ29tcGxleFR5cGVDb250ZW50KGNvbXBsZXhUeXBlKTsKLSAgICBpZiAoY29tcGxleFR5cGVDb250ZW50IGluc3RhbmNlb2YgWFNEVHlwZURlZmluaXRpb24pCi0gICAgICByZXR1cm4gc2V0UGFyYW1zRm9yWFNEVHlwZURlZihpbnN0YW5jZURvY3VtZW50c0NvcHkpICYmIHBhcmFtc1ZhbGlkOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBzZXRQYXJhbXNGb3JYU0RQYXJ0aWNsZShpbnN0YW5jZURvY3VtZW50c0NvcHkpICYmIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIHNldFBhcmFtc0ZvckF0dHJpYnV0ZXMoRWxlbWVudCBpbnN0YW5jZURvY3VtZW50LElYU0RGcmFnbWVudCBmcmFnKXsKLSAgCWJvb2xlYW4gcGFyYW1zVmFsaWQgPSB0cnVlOwotICAJCi0gIAlJWFNEQXR0cmlidXRlRnJhZ21lbnRbXSBhdHRyaWJ1dGVGcmFnbWVudHMgPSBnZXRBbGxBdHRyaWJ1dGVGcmFnbWVudHMoKTsKLSAgCWZvciAoaW50IGkgPSAwOyBpIDwgYXR0cmlidXRlRnJhZ21lbnRzLmxlbmd0aDsgaSsrKXsKLSAgCSAgaWYoYXR0cmlidXRlRnJhZ21lbnRzW2ldLmdldElEKCkuc3RhcnRzV2l0aChmcmFnLmdldElEKCkpKXsgIAotICAJICAJICBOYW1lZE5vZGVNYXAgbm9kZU1hcCA9IGluc3RhbmNlRG9jdW1lbnQuZ2V0QXR0cmlidXRlcygpOwkKLSAgCSAgICAgIFN0cmluZyBuYW1lID0gKChYU0RBdHRyaWJ1dGVVc2UpYXR0cmlidXRlRnJhZ21lbnRzW2ldLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCkuZ2V0WFNEQ29tcG9uZW50KCkpLmdldEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkuZ2V0TmFtZSgpOwotICAJICAgICAgcGFyYW1zVmFsaWQgPSBhdHRyaWJ1dGVGcmFnbWVudHNbaV0uZ2V0WFNERGVsZWdhdGlvbkZyYWdtZW50KCkuc2V0QXR0cmlidXRlUGFyYW1zRnJvbUluc3RhbmNlRG9jdW1lbnRzKG5vZGVNYXAuZ2V0TmFtZWRJdGVtKG5hbWUpKTsJCi0gICAgICB9Ci0gIAl9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gc2V0UGFyYW1zRm9yWFNEVHlwZURlZihFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMpCi0gIHsKLSAgICBib29sZWFuIHBhcmFtc1ZhbGlkID0gdHJ1ZTsKLSAgICByZW1vdmVBbGxGcmFnbWVudHMoKTsKLSAgICByZW1vdmVBbGxBdHRyaWJ1dGVGcmFnbWVudHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBJWFNERnJhZ21lbnQgY2hpbGRGcmFnID0gZ2V0RnJhZ21lbnQoY3JlYXRlSW5zdGFuY2UoKSk7Ci0gICAgICBFbGVtZW50W10gY2hpbGRJbnN0YW5jZURvY3VtZW50cyA9IG5ldyBFbGVtZW50WzFdOwotICAgICAgY2hpbGRJbnN0YW5jZURvY3VtZW50c1swXSA9IGluc3RhbmNlRG9jdW1lbnRzW2ldOwotICAgICAgaWYgKCFjaGlsZEZyYWcuc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKHNldEVsZW1lbnRzVGFnTmFtZShjaGlsZEluc3RhbmNlRG9jdW1lbnRzLCBjaGlsZEZyYWcuZ2V0TmFtZSgpKSkpCi0gICAgICAgIHBhcmFtc1ZhbGlkID0gZmFsc2U7Ci0gICAgICBzZXRQYXJhbXNGb3JBdHRyaWJ1dGVzKGNoaWxkSW5zdGFuY2VEb2N1bWVudHNbMF0sY2hpbGRGcmFnKTsKLSAgICB9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIHNldFBhcmFtc0ZvclhTRFBhcnRpY2xlKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykgewotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSB0cnVlOwotICAgIHJlbW92ZUFsbEZyYWdtZW50cygpOwotICAgIHJlbW92ZUFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIElYU0RGcmFnbWVudCBjaGlsZEZyYWcgPSBnZXRGcmFnbWVudChjcmVhdGVJbnN0YW5jZSgpKTsKLSAgICAgIFZlY3RvciBpbnN0YW5jZXNWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAKLSAgICAgIE5vZGVMaXN0IG5sID0gaW5zdGFuY2VEb2N1bWVudHNbaV0uZ2V0Q2hpbGROb2RlcygpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBubC5nZXRMZW5ndGgoKTsgaisrKSB7Ci0gICAgICAgIE5vZGUgbm9kZSA9IG5sLml0ZW0oaik7Ci0gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgRWxlbWVudCkKLSAgICAgICAgICBpbnN0YW5jZXNWZWN0b3IuYWRkKG5vZGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIEVsZW1lbnRbXSBjaGlsZEluc3RhbmNlRG9jdW1lbnRzID0gbmV3IEVsZW1lbnRbaW5zdGFuY2VzVmVjdG9yLnNpemUoKV07Ci0gICAgICBpbnN0YW5jZXNWZWN0b3IuY29weUludG8oY2hpbGRJbnN0YW5jZURvY3VtZW50cyk7Ci0gICAgICBpZiAoIWNoaWxkRnJhZy5zZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoY2hpbGRJbnN0YW5jZURvY3VtZW50cykpCi0gICAgICAgIHBhcmFtc1ZhbGlkID0gZmFsc2U7Ci0gICAgICBzZXRQYXJhbXNGb3JBdHRyaWJ1dGVzKGNoaWxkSW5zdGFuY2VEb2N1bWVudHNbaV0sY2hpbGRGcmFnKTsKLSAgICAKLSAgICB9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIEVsZW1lbnRbXSBnZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsRG9jdW1lbnQgZG9jKSB7Ci0gICAgWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uIGNvbXBsZXhUeXBlID0gKFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbilnZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotICAgIFhTRENvbXBsZXhUeXBlQ29udGVudCBjb21wbGV4VHlwZUNvbnRlbnQgPSBYU0RUeXBlRGVmaW5pdGlvblV0aWwuZ2V0WFNEQ29tcGxleFR5cGVDb250ZW50KGNvbXBsZXhUeXBlKTsKLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHM7Ci0gICAgU3RyaW5nIHRhZ05hbWUgPSBnZXRJbnN0YW5jZURvY3VtZW50VGFnTmFtZShuYW1lc3BhY2VUYWJsZSk7Ci0gICAgaWYgKGNvbXBsZXhUeXBlQ29udGVudCBpbnN0YW5jZW9mIFhTRFR5cGVEZWZpbml0aW9uKQotICAgICAgaW5zdGFuY2VEb2N1bWVudHMgPSBnZW5JbnN0YW5jZXNGb3JYU0RUeXBlRGVmKGdlblhTSVR5cGUsIG5hbWVzcGFjZVRhYmxlLCB0YWdOYW1lLGRvYyk7Ci0gICAgZWxzZQotICAgICAgaW5zdGFuY2VEb2N1bWVudHMgPSBnZW5JbnN0YW5jZXNGb3JYU0RQYXJ0aWNsZShnZW5YU0lUeXBlLCBuYW1lc3BhY2VUYWJsZSwgdGFnTmFtZSxkb2MpOwotICAgICAgaWYoZ2VuWFNJVHlwZSkgYWRkWFNJVHlwZShpbnN0YW5jZURvY3VtZW50cywgbmFtZXNwYWNlVGFibGUpOwotICAJcmV0dXJuIGluc3RhbmNlRG9jdW1lbnRzOwotICB9Ci0KLSAgcHJpdmF0ZSBFbGVtZW50IGFkZEF0dHJpYnV0ZXMoRWxlbWVudCBpbnN0YW5jZURvY3VtZW50LCBJWFNERnJhZ21lbnQgZnJhZ21lbnQsIEhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSApewotICAJCi0gIAlJWFNEQXR0cmlidXRlRnJhZ21lbnRbXSBhdHRyaWJ1dGVGcmFnbWVudHMgPSBnZXRBbGxBdHRyaWJ1dGVGcmFnbWVudHMoKTsKLSAgICBmb3IgKGludCBrID0gMDsgayA8IGF0dHJpYnV0ZUZyYWdtZW50cy5sZW5ndGg7IGsrKyl7Ci0gICAgICBpZihhdHRyaWJ1dGVGcmFnbWVudHNba10uZ2V0SUQoKS5zdGFydHNXaXRoKGZyYWdtZW50LmdldElEKCkpKXsKLSAgICAgICAgU3RyaW5nIG5hbWUgPSAoKFhTREF0dHJpYnV0ZVVzZSlhdHRyaWJ1dGVGcmFnbWVudHNba10uZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKS5nZXRYU0RDb21wb25lbnQoKSkuZ2V0QXR0cmlidXRlRGVjbGFyYXRpb24oKS5nZXROYW1lKCk7Ci0gICAgICAgIGF0dHJpYnV0ZUZyYWdtZW50c1trXS5nZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKS5zZXRBdHRyaWJ1dGVzT25JbnN0YW5jZURvY3VtZW50cyhpbnN0YW5jZURvY3VtZW50LG5hbWUpOwkKLSAgICAgIH0KLSAgICB9Ci0gICAJCi0gICAJcmV0dXJuIGluc3RhbmNlRG9jdW1lbnQ7Ci0gIH0KLSAgCi0gIHByaXZhdGUgRWxlbWVudFtdIGdlbkluc3RhbmNlc0ZvclhTRFR5cGVEZWYoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsIFN0cmluZyB0YWdOYW1lLERvY3VtZW50IGRvYykKLSAgewotICAgIElYU0RGcmFnbWVudFtdIGZyYWdtZW50cyA9IGdldEFsbEZyYWdtZW50cygpOwotICAgIFZlY3RvciBpbnN0YW5jZURvY3VtZW50c0NvcHkgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFnbWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIEVsZW1lbnRbXSBmcmFnbWVudEluc3RhbmNlcyA9IGZyYWdtZW50c1tpXS5nZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoZ2VuWFNJVHlwZSwgbmFtZXNwYWNlVGFibGUsZG9jKTsKLSAgICAgIGlmIChmcmFnbWVudEluc3RhbmNlcy5sZW5ndGggPiAwKXsKLSAgICAgIAlmcmFnbWVudEluc3RhbmNlc1swXSA9IGFkZEF0dHJpYnV0ZXMoZnJhZ21lbnRJbnN0YW5jZXNbMF0sZnJhZ21lbnRzW2ldLG5hbWVzcGFjZVRhYmxlKTsKLSAgICAgICAgaW5zdGFuY2VEb2N1bWVudHNDb3B5LmFkZChmcmFnbWVudEluc3RhbmNlc1swXSk7Ci0gICAgICB9Ci0gICAgfQotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cyA9IG5ldyBFbGVtZW50W2luc3RhbmNlRG9jdW1lbnRzQ29weS5zaXplKCldOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIGluc3RhbmNlRG9jdW1lbnRzW2ldID0gKEVsZW1lbnQpaW5zdGFuY2VEb2N1bWVudHNDb3B5LmdldChpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNldEVsZW1lbnRzVGFnTmFtZShpbnN0YW5jZURvY3VtZW50cywgdGFnTmFtZSk7Ci0gIH0KLQotICBwcml2YXRlIEVsZW1lbnRbXSBnZW5JbnN0YW5jZXNGb3JYU0RQYXJ0aWNsZShib29sZWFuIGdlblhTSVR5cGUsIEhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSwgU3RyaW5nIHRhZ05hbWUsRG9jdW1lbnQgZG9jKSB7Ci0gICAgSVhTREZyYWdtZW50W10gY2hpbGRGcmFncyA9IGdldEFsbEZyYWdtZW50cygpOwotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cyA9IG5ldyBFbGVtZW50W2NoaWxkRnJhZ3MubGVuZ3RoXTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIEVsZW1lbnRbXSBjaGlsZEluc3RhbmNlcyA9IGNoaWxkRnJhZ3NbaV0uZ2VuSW5zdGFuY2VEb2N1bWVudHNGcm9tUGFyYW1ldGVyVmFsdWVzKGdlblhTSVR5cGUsIG5hbWVzcGFjZVRhYmxlLGRvYyk7Ci0gICAgICAgIAotICAgICAgICBFbGVtZW50IGluc3RhbmNlRG9jdW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsKLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjaGlsZEluc3RhbmNlcy5sZW5ndGg7IGorKykgewotICAgICAgICAgIGlmIChjaGlsZEluc3RhbmNlc1tqXSAhPSBudWxsKXsKLSAgICAgICAgICAJYWRkQXR0cmlidXRlcyhjaGlsZEluc3RhbmNlc1tqXSxjaGlsZEZyYWdzW2ldLG5hbWVzcGFjZVRhYmxlKTsgCi0gICAgICAgICAgCWluc3RhbmNlRG9jdW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmltcG9ydE5vZGUoY2hpbGRJbnN0YW5jZXNbal0sIHRydWUpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaW5zdGFuY2VEb2N1bWVudHNbaV0gPSBpbnN0YW5jZURvY3VtZW50OwotICAgICAgfQotICAgIHJldHVybiBpbnN0YW5jZURvY3VtZW50czsKLSAgfQotCi0gIAotICBwdWJsaWMgU3RyaW5nIGdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0SW5mb0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhTaW1wbGVDb250ZW50UkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4U2ltcGxlQ29udGVudEZpeFdGcmFnbWVudEpTUC5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RDb21wbGV4U2ltcGxlQ29udGVudFJhbmdlRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRENvbXBsZXhTaW1wbGVDb250ZW50UmFuZ2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDliYjg5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRENvbXBsZXhTaW1wbGVDb250ZW50UmFuZ2VGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLS8qKgotKiA8Y29weXJpZ2h0PgotKgotKiBMaWNlbnNlZCBNYXRlcmlhbCAtIFByb3BlcnR5IG9mIElCTQotKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyIC0gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSogVVMgR292ZXJubWVudCBVc2VycyBSZXN0cmljdGVkIFJpZ2h0cyAtIFVzZSwgZHVwbGljYXRpb24gb3IgZGlzY2xvc3VyZQotKiByZXN0cmljdGVkIGJ5IEdTQSBBRFAgU2NoZWR1bGUgQ29udHJhY3Qgd2l0aCBJQk0gQ29ycC4KLSoKLSogPC9jb3B5cmlnaHQ+Ci0qCi0qIEZpbGUgcGx1Z2lucy9jb20uaWJtLmV0b29scy53ZWJzZXJ2aWNlLmV4cGxvcmVyL3dzZXhwbG9yZXIvc3JjL2NvbS9pYm0vZXRvb2xzL3dlYnNlcnZpY2UvZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9JbXBsL1hTRENvbXBsZXhSYW5nZUZyYWdtZW50LmphdmEsIHdzYS5ldG9vbHMud3MuZXhwbG9yZXIsIGx1bmFyLTUuMS4yIDEKLSogVmVyc2lvbiAxLjEgMDMvMDIvMjggMTU6MjU6MTgKLSovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNEQXR0cmlidXRlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LnV0aWwuWFNEVHlwZURlZmluaXRpb25VdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RBdHRyaWJ1dGVVc2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRENvbXBsZXhUeXBlQ29udGVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi1wdWJsaWMgY2xhc3MgWFNEQ29tcGxleFNpbXBsZUNvbnRlbnRSYW5nZUZyYWdtZW50IGV4dGVuZHMgWFNEQ29tcGxleFNpbXBsZUNvbnRlbnRGaXhGcmFnbWVudCB7Ci0gIHB1YmxpYyBYU0RDb21wbGV4U2ltcGxlQ29udGVudFJhbmdlRnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBzZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzKSB7Ci0gICAgRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzQ29weSA9IGdldEluc3RhbmNlRG9jdW1lbnRzQnlUYWdOYW1lKGluc3RhbmNlRG9jdW1lbnRzLCBnZXROYW1lKCkpOwotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSBpbnRlcm5hbEVxdWFscyhpbnN0YW5jZURvY3VtZW50c0NvcHksIGluc3RhbmNlRG9jdW1lbnRzKTsKLSAgICBYU0RDb21wbGV4VHlwZURlZmluaXRpb24gY29tcGxleFR5cGUgPSAoWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uKWdldFhTRFR5cGVEZWZpbml0aW9uKCk7Ci0gICAgWFNEQ29tcGxleFR5cGVDb250ZW50IGNvbXBsZXhUeXBlQ29udGVudCA9IFhTRFR5cGVEZWZpbml0aW9uVXRpbC5nZXRYU0RDb21wbGV4VHlwZUNvbnRlbnQoY29tcGxleFR5cGUpOwotICAgIGlmIChjb21wbGV4VHlwZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RUeXBlRGVmaW5pdGlvbikKLSAgICAgIHJldHVybiBzZXRQYXJhbXNGb3JYU0RUeXBlRGVmKGluc3RhbmNlRG9jdW1lbnRzQ29weSkgJiYgcGFyYW1zVmFsaWQ7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHNldFBhcmFtc0ZvclhTRFBhcnRpY2xlKGluc3RhbmNlRG9jdW1lbnRzQ29weSkgJiYgcGFyYW1zVmFsaWQ7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gc2V0UGFyYW1zRm9yQXR0cmlidXRlcyhFbGVtZW50IGluc3RhbmNlRG9jdW1lbnQsSVhTREZyYWdtZW50IGZyYWcpewotICAJYm9vbGVhbiBwYXJhbXNWYWxpZCA9IHRydWU7Ci0gIAkKLSAgCUlYU0RBdHRyaWJ1dGVGcmFnbWVudFtdIGF0dHJpYnV0ZUZyYWdtZW50cyA9IGdldEFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwotICAJZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVGcmFnbWVudHMubGVuZ3RoOyBpKyspewotICAJICBpZihhdHRyaWJ1dGVGcmFnbWVudHNbaV0uZ2V0SUQoKS5zdGFydHNXaXRoKGZyYWcuZ2V0SUQoKSkpeyAgCi0gIAkgIAkgIE5hbWVkTm9kZU1hcCBub2RlTWFwID0gaW5zdGFuY2VEb2N1bWVudC5nZXRBdHRyaWJ1dGVzKCk7CQotICAJICAgICAgU3RyaW5nIG5hbWUgPSAoKFhTREF0dHJpYnV0ZVVzZSlhdHRyaWJ1dGVGcmFnbWVudHNbaV0uZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKS5nZXRYU0RDb21wb25lbnQoKSkuZ2V0QXR0cmlidXRlRGVjbGFyYXRpb24oKS5nZXROYW1lKCk7Ci0gIAkgICAgICBwYXJhbXNWYWxpZCA9IGF0dHJpYnV0ZUZyYWdtZW50c1tpXS5nZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKS5zZXRBdHRyaWJ1dGVQYXJhbXNGcm9tSW5zdGFuY2VEb2N1bWVudHMobm9kZU1hcC5nZXROYW1lZEl0ZW0obmFtZSkpOwkKLSAgICAgIH0KLSAgCX0KLSAgICByZXR1cm4gcGFyYW1zVmFsaWQ7Ci0gIH0KLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBzZXRQYXJhbXNGb3JYU0RUeXBlRGVmKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykKLSAgewotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSB0cnVlOwotICAgIHJlbW92ZUFsbEZyYWdtZW50cygpOwotICAgIHJlbW92ZUFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIElYU0RGcmFnbWVudCBjaGlsZEZyYWcgPSBnZXRGcmFnbWVudChjcmVhdGVJbnN0YW5jZSgpKTsKLSAgICAgIEVsZW1lbnRbXSBjaGlsZEluc3RhbmNlRG9jdW1lbnRzID0gbmV3IEVsZW1lbnRbMV07Ci0gICAgICBjaGlsZEluc3RhbmNlRG9jdW1lbnRzWzBdID0gaW5zdGFuY2VEb2N1bWVudHNbaV07Ci0gICAgICBpZiAoIWNoaWxkRnJhZy5zZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoc2V0RWxlbWVudHNUYWdOYW1lKGNoaWxkSW5zdGFuY2VEb2N1bWVudHMsIGNoaWxkRnJhZy5nZXROYW1lKCkpKSkKLSAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICAgIHNldFBhcmFtc0ZvckF0dHJpYnV0ZXMoY2hpbGRJbnN0YW5jZURvY3VtZW50c1swXSxjaGlsZEZyYWcpOwotICAgIH0KLSAgICByZXR1cm4gcGFyYW1zVmFsaWQ7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gc2V0UGFyYW1zRm9yWFNEUGFydGljbGUoRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzKSB7Ci0gICAgYm9vbGVhbiBwYXJhbXNWYWxpZCA9IHRydWU7Ci0gICAgcmVtb3ZlQWxsRnJhZ21lbnRzKCk7Ci0gICAgcmVtb3ZlQWxsQXR0cmlidXRlRnJhZ21lbnRzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgSVhTREZyYWdtZW50IGNoaWxkRnJhZyA9IGdldEZyYWdtZW50KGNyZWF0ZUluc3RhbmNlKCkpOwotICAgICAgVmVjdG9yIGluc3RhbmNlc1ZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIAotICAgICAgTm9kZUxpc3QgbmwgPSBpbnN0YW5jZURvY3VtZW50c1tpXS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IG5sLmdldExlbmd0aCgpOyBqKyspIHsKLSAgICAgICAgTm9kZSBub2RlID0gbmwuaXRlbShqKTsKLSAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KQotICAgICAgICAgIGluc3RhbmNlc1ZlY3Rvci5hZGQobm9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgICAgfQotICAgICAgRWxlbWVudFtdIGNoaWxkSW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtpbnN0YW5jZXNWZWN0b3Iuc2l6ZSgpXTsKLSAgICAgIGluc3RhbmNlc1ZlY3Rvci5jb3B5SW50byhjaGlsZEluc3RhbmNlRG9jdW1lbnRzKTsKLSAgICAgIGlmICghY2hpbGRGcmFnLnNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhjaGlsZEluc3RhbmNlRG9jdW1lbnRzKSkKLSAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICAgIHNldFBhcmFtc0ZvckF0dHJpYnV0ZXMoY2hpbGRJbnN0YW5jZURvY3VtZW50c1tpXSxjaGlsZEZyYWcpOwotICAgIAotICAgIH0KLSAgICByZXR1cm4gcGFyYW1zVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudFtdIGdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyhib29sZWFuIGdlblhTSVR5cGUsIEhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSxEb2N1bWVudCBkb2MpIHsKLSAgICBYU0RDb21wbGV4VHlwZURlZmluaXRpb24gY29tcGxleFR5cGUgPSAoWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uKWdldFhTRFR5cGVEZWZpbml0aW9uKCk7Ci0gICAgWFNEQ29tcGxleFR5cGVDb250ZW50IGNvbXBsZXhUeXBlQ29udGVudCA9IFhTRFR5cGVEZWZpbml0aW9uVXRpbC5nZXRYU0RDb21wbGV4VHlwZUNvbnRlbnQoY29tcGxleFR5cGUpOwotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50czsKLSAgICBTdHJpbmcgdGFnTmFtZSA9IGdldEluc3RhbmNlRG9jdW1lbnRUYWdOYW1lKG5hbWVzcGFjZVRhYmxlKTsKLSAgICBpZiAoY29tcGxleFR5cGVDb250ZW50IGluc3RhbmNlb2YgWFNEVHlwZURlZmluaXRpb24pCi0gICAgICBpbnN0YW5jZURvY3VtZW50cyA9IGdlbkluc3RhbmNlc0ZvclhTRFR5cGVEZWYoZ2VuWFNJVHlwZSwgbmFtZXNwYWNlVGFibGUsIHRhZ05hbWUsIGRvYyk7Ci0gICAgZWxzZQotICAgICAgaW5zdGFuY2VEb2N1bWVudHMgPSBnZW5JbnN0YW5jZXNGb3JYU0RQYXJ0aWNsZShnZW5YU0lUeXBlLCBuYW1lc3BhY2VUYWJsZSwgdGFnTmFtZSwgZG9jKTsKLSAgICAgIGlmKGdlblhTSVR5cGUpIGFkZFhTSVR5cGUoaW5zdGFuY2VEb2N1bWVudHMsIG5hbWVzcGFjZVRhYmxlKTsKLSAgCXJldHVybiBpbnN0YW5jZURvY3VtZW50czsKLSAgfQotCi0gIHByaXZhdGUgRWxlbWVudCBhZGRBdHRyaWJ1dGVzKEVsZW1lbnQgaW5zdGFuY2VEb2N1bWVudCwgSVhTREZyYWdtZW50IGZyYWdtZW50LCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUgKXsKLSAgCQotICAJSVhTREF0dHJpYnV0ZUZyYWdtZW50W10gYXR0cmlidXRlRnJhZ21lbnRzID0gZ2V0QWxsQXR0cmlidXRlRnJhZ21lbnRzKCk7Ci0gICAgZm9yIChpbnQgayA9IDA7IGsgPCBhdHRyaWJ1dGVGcmFnbWVudHMubGVuZ3RoOyBrKyspewotICAgICAgaWYoYXR0cmlidXRlRnJhZ21lbnRzW2tdLmdldElEKCkuc3RhcnRzV2l0aChmcmFnbWVudC5nZXRJRCgpKSl7Ci0gICAgICAgIFN0cmluZyBuYW1lID0gKChYU0RBdHRyaWJ1dGVVc2UpYXR0cmlidXRlRnJhZ21lbnRzW2tdLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCkuZ2V0WFNEQ29tcG9uZW50KCkpLmdldEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkuZ2V0TmFtZSgpOwotICAgICAgICBhdHRyaWJ1dGVGcmFnbWVudHNba10uZ2V0WFNERGVsZWdhdGlvbkZyYWdtZW50KCkuc2V0QXR0cmlidXRlc09uSW5zdGFuY2VEb2N1bWVudHMoaW5zdGFuY2VEb2N1bWVudCxuYW1lKTsJCi0gICAgICB9Ci0gICAgfQotICAgCQotICAgCXJldHVybiBpbnN0YW5jZURvY3VtZW50OwotICB9Ci0gIAotICBwcml2YXRlIEVsZW1lbnRbXSBnZW5JbnN0YW5jZXNGb3JYU0RUeXBlRGVmKGJvb2xlYW4gZ2VuWFNJVHlwZSwgSGFzaHRhYmxlIG5hbWVzcGFjZVRhYmxlLCBTdHJpbmcgdGFnTmFtZSxEb2N1bWVudCBkb2MpCi0gIHsKLSAgICBJWFNERnJhZ21lbnRbXSBmcmFnbWVudHMgPSBnZXRBbGxGcmFnbWVudHMoKTsKLSAgICBWZWN0b3IgaW5zdGFuY2VEb2N1bWVudHNDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhZ21lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBFbGVtZW50W10gZnJhZ21lbnRJbnN0YW5jZXMgPSBmcmFnbWVudHNbaV0uZ2VuSW5zdGFuY2VEb2N1bWVudHNGcm9tUGFyYW1ldGVyVmFsdWVzKGdlblhTSVR5cGUsIG5hbWVzcGFjZVRhYmxlLGRvYyk7Ci0gICAgICBpZiAoZnJhZ21lbnRJbnN0YW5jZXMubGVuZ3RoID4gMCl7Ci0gICAgICAJZnJhZ21lbnRJbnN0YW5jZXNbMF0gPSBhZGRBdHRyaWJ1dGVzKGZyYWdtZW50SW5zdGFuY2VzWzBdLGZyYWdtZW50c1tpXSxuYW1lc3BhY2VUYWJsZSk7Ci0gICAgICAgIGluc3RhbmNlRG9jdW1lbnRzQ29weS5hZGQoZnJhZ21lbnRJbnN0YW5jZXNbMF0pOwotICAgICAgfQotICAgIH0KLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtpbnN0YW5jZURvY3VtZW50c0NvcHkuc2l6ZSgpXTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBpbnN0YW5jZURvY3VtZW50c1tpXSA9IChFbGVtZW50KWluc3RhbmNlRG9jdW1lbnRzQ29weS5nZXQoaSk7Ci0gICAgfQotICAgIHJldHVybiBzZXRFbGVtZW50c1RhZ05hbWUoaW5zdGFuY2VEb2N1bWVudHMsIHRhZ05hbWUpOwotICB9Ci0KLSAgcHJpdmF0ZSBFbGVtZW50W10gZ2VuSW5zdGFuY2VzRm9yWFNEUGFydGljbGUoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsIFN0cmluZyB0YWdOYW1lLERvY3VtZW50IGRvYykgewotICAgIElYU0RGcmFnbWVudFtdIGNoaWxkRnJhZ3MgPSBnZXRBbGxGcmFnbWVudHMoKTsKLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtjaGlsZEZyYWdzLmxlbmd0aF07Ci0gICAgCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIEVsZW1lbnRbXSBjaGlsZEluc3RhbmNlcyA9IGNoaWxkRnJhZ3NbaV0uZ2VuSW5zdGFuY2VEb2N1bWVudHNGcm9tUGFyYW1ldGVyVmFsdWVzKGdlblhTSVR5cGUsIG5hbWVzcGFjZVRhYmxlLCBkb2MpOwotICAgICAgICAKLSAgICAgICAgRWxlbWVudCBpbnN0YW5jZURvY3VtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY2hpbGRJbnN0YW5jZXMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICBpZiAoY2hpbGRJbnN0YW5jZXNbal0gIT0gbnVsbCl7Ci0gICAgICAgICAgCWFkZEF0dHJpYnV0ZXMoY2hpbGRJbnN0YW5jZXNbal0sY2hpbGRGcmFnc1tpXSxuYW1lc3BhY2VUYWJsZSk7IAotICAgICAgICAgIAlpbnN0YW5jZURvY3VtZW50LmFwcGVuZENoaWxkKGRvYy5pbXBvcnROb2RlKGNoaWxkSW5zdGFuY2VzW2pdLCB0cnVlKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGluc3RhbmNlRG9jdW1lbnRzW2ldID0gaW5zdGFuY2VEb2N1bWVudDsKLSAgICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2VEb2N1bWVudHM7Ci0gIH0KLQotICAKLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5mb3JtYXRpb25GcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZEZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleFNpbXBsZUNvbnRlbnRSRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3JpdGVGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhTaW1wbGVDb250ZW50UmFuZ2VXRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNERGVmYXVsdEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0REZWZhdWx0RnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU5YmQwYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0REZWZhdWx0RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5YTUxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi1wdWJsaWMgY2xhc3MgWFNERGVmYXVsdEZyYWdtZW50IGV4dGVuZHMgWFNERnJhZ21lbnQgewotICBwdWJsaWMgWFNERGVmYXVsdEZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZykgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc1BhcmFtZXRlclZhbHVlcyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbiB7Ci0gICAgU3RyaW5nW10gcGFyYW0gPSBuZXcgU3RyaW5nWzFdOwotICAgIHBhcmFtWzBdID0gcGFyc2VyLmdldFBhcmFtZXRlcihnZXRJRCgpKTsKLSAgICBzZXRQYXJhbWV0ZXJWYWx1ZXMoZ2V0SUQoKSwgcGFyYW0pOwotICAgIHJldHVybiBpc0VsZW1lbnQoYWRkUm9vdEVsZW1lbnQocGFyYW1bMF0pKTsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIGFkZFJvb3RFbGVtZW50KFN0cmluZyBlbGVtZW50KSB7Ci0gICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIHNiLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5ST09UX0VMRU1FTlRfU1RBUlRfVEFHKTsKLSAgICBzYi5hcHBlbmQoZWxlbWVudCk7Ci0gICAgc2IuYXBwZW5kKEZyYWdtZW50Q29uc3RhbnRzLlJPT1RfRUxFTUVOVF9FTkRfVEFHKTsKLSAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBpc0VsZW1lbnQoU3RyaW5nIGVsZW1lbnRTdHJpbmcpIHsKLSAgICB0cnkgewotICAgICAgcmV0dXJuIChYTUxVdGlscy5zdHJpbmdUb0VsZW1lbnQoZWxlbWVudFN0cmluZykgIT0gbnVsbCk7Ci0gICAgfQotICAgIGNhdGNoIChUaHJvd2FibGUgdCkgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlQWxsUGFyYW1ldGVyVmFsdWVzKCkgewotICAgIFN0cmluZyBwYXJhbSA9IGdldFBhcmFtZXRlclZhbHVlKGdldElEKCksIDApOwotICAgIHJldHVybiAocGFyYW0gPT0gbnVsbCB8fCBpc0VsZW1lbnQoYWRkUm9vdEVsZW1lbnQocGFyYW0pKSk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZVBhcmFtZXRlclZhbHVlcyhTdHJpbmcgcGFyYW1LZXkpIHsKLSAgICBTdHJpbmcgcGFyYW0gPSBnZXRQYXJhbWV0ZXJWYWx1ZShnZXRJRCgpLCAwKTsKLSAgICByZXR1cm4gKHBhcmFtID09IG51bGwgfHwgaXNFbGVtZW50KGFkZFJvb3RFbGVtZW50KHBhcmFtKSkpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZShTdHJpbmcgcGFyYW1LZXksIGludCBwYXJhbUluZGV4KSB7Ci0gICAgU3RyaW5nIHBhcmFtID0gZ2V0UGFyYW1ldGVyVmFsdWUoZ2V0SUQoKSwgMCk7Ci0gICAgcmV0dXJuIChwYXJhbSA9PSBudWxsIHx8IGlzRWxlbWVudChhZGRSb290RWxlbWVudChwYXJhbSkpKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMpIHsKLSAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgYm9vbGVhbiBwYXJhbVZhbGlkID0gdHJ1ZTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBTdHJpbmcgaW5zdGFuY2VTdHJpbmcgPSBYTUxVdGlscy5zZXJpYWxpemUoaW5zdGFuY2VEb2N1bWVudHNbaV0sIHRydWUpOwotICAgICAgaWYgKGluc3RhbmNlU3RyaW5nICE9IG51bGwgJiYgaW5zdGFuY2VTdHJpbmcubGVuZ3RoKCkgPiAwKQotICAgICAgICBzYi5hcHBlbmQoaW5zdGFuY2VTdHJpbmcpOwotICAgICAgZWxzZQotICAgICAgICBwYXJhbVZhbGlkID0gZmFsc2U7Ci0gICAgfQotICAgIFN0cmluZ1tdIHBhcmFtID0ge3NiLnRvU3RyaW5nKCl9OwotICAgIHNldFBhcmFtZXRlclZhbHVlcyhnZXRJRCgpLCBwYXJhbSk7Ci0gICAgcmV0dXJuIHBhcmFtVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudFtdIGdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyhib29sZWFuIGdlblhTSVR5cGUsIEhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSwgRG9jdW1lbnQgZG9jKSB7Ci0gICAgU3RyaW5nIHBhcmFtID0gZ2V0UGFyYW1ldGVyVmFsdWUoZ2V0SUQoKSwgMCk7Ci0gICAgaWYgKHBhcmFtID09IG51bGwpCi0gICAgICByZXR1cm4gbmV3IEVsZW1lbnRbMF07Ci0gICAgRWxlbWVudCByb290OwotICAgIHRyeSB7Ci0gICAgICByb290ID0gKEVsZW1lbnQpZG9jLmltcG9ydE5vZGUoWE1MVXRpbHMuc3RyaW5nVG9FbGVtZW50KGFkZFJvb3RFbGVtZW50KHBhcmFtKSksIHRydWUpOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpIHsKLSAgICAgIHJldHVybiBuZXcgRWxlbWVudFswXTsKLSAgICB9Ci0gICAgTm9kZUxpc3QgbmwgPSByb290LmdldENoaWxkTm9kZXMoKTsKLSAgICBWZWN0b3IgaW5zdGFuY2VEb2N1bWVudFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG5sLmdldExlbmd0aCgpOyBpKyspIHsKLSAgICAgIE5vZGUgbm9kZSA9IG5sLml0ZW0oaSk7Ci0gICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpCi0gICAgICAgIGluc3RhbmNlRG9jdW1lbnRWZWN0b3IuYWRkKG5vZGUpOwotICAgIH0KLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtpbnN0YW5jZURvY3VtZW50VmVjdG9yLnNpemUoKV07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgaW5zdGFuY2VEb2N1bWVudHNbaV0gPSAoRWxlbWVudClpbnN0YW5jZURvY3VtZW50VmVjdG9yLmdldChpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGluc3RhbmNlRG9jdW1lbnRzOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJbmZvcm1hdGlvbkZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdEluZm9GcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRSZWFkRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0UkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0V0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRERlbGVnYXRpb25GcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNERGVsZWdhdGlvbkZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNjMyYTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNERGVsZWdhdGlvbkZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTRERlbGVnYXRpb25GcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotcHVibGljIGNsYXNzIFhTRERlbGVnYXRpb25GcmFnbWVudCBleHRlbmRzIFhTREZyYWdtZW50IGltcGxlbWVudHMgSVhTRERlbGVnYXRpb25GcmFnbWVudAotewotICBwcml2YXRlIElYU0RGcmFnbWVudCB4c2RGcmFnbWVudF87Ci0KLSAgcHVibGljIFhTRERlbGVnYXRpb25GcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcpCi0gIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnKTsKLSAgICB4c2RGcmFnbWVudF8gPSBudWxsOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewotICAgIHN1cGVyLnNldE5hbWUobmFtZSk7Ci0gICAgaWYgKHhzZEZyYWdtZW50XyAhPSBudWxsKQotICAgICAgeHNkRnJhZ21lbnRfLnNldE5hbWUobmFtZSk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzUGFyYW1ldGVyVmFsdWVzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4geHNkRnJhZ21lbnRfLnByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMocGFyc2VyKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFBhcmFtZXRlclZhbHVlcyhTdHJpbmcgcGFyYW1LZXksIFN0cmluZ1tdIHBhcmFtcykKLSAgewotICAgIHhzZEZyYWdtZW50Xy5zZXRQYXJhbWV0ZXJWYWx1ZXMocGFyYW1LZXksIHBhcmFtcyk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5LCBWZWN0b3IgcGFyYW1zKQotICB7Ci0gICAgeHNkRnJhZ21lbnRfLnNldFBhcmFtZXRlclZhbHVlcyhwYXJhbUtleSwgcGFyYW1zKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5KQotICB7Ci0gICAgcmV0dXJuIHhzZEZyYWdtZW50Xy5nZXRQYXJhbWV0ZXJWYWx1ZXMocGFyYW1LZXkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQYXJhbWV0ZXJWYWx1ZShTdHJpbmcgcGFyYW1LZXksIGludCBwYXJhbUluZGV4KQotICB7Ci0gICAgcmV0dXJuIHhzZEZyYWdtZW50Xy5nZXRQYXJhbWV0ZXJWYWx1ZShwYXJhbUtleSwgcGFyYW1JbmRleCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpCi0gIHsKLSAgICByZXR1cm4geHNkRnJhZ21lbnRfLnZhbGlkYXRlQWxsUGFyYW1ldGVyVmFsdWVzKCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZVBhcmFtZXRlclZhbHVlcyhTdHJpbmcgcGFyYW1LZXkpCi0gIHsKLSAgICByZXR1cm4geHNkRnJhZ21lbnRfLnZhbGlkYXRlUGFyYW1ldGVyVmFsdWVzKHBhcmFtS2V5KTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlUGFyYW1ldGVyVmFsdWUoU3RyaW5nIHBhcmFtS2V5LCBpbnQgcGFyYW1JbmRleCkKLSAgewotICAgIHJldHVybiB4c2RGcmFnbWVudF8udmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZShwYXJhbUtleSwgcGFyYW1JbmRleCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBzZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzKQotICB7Ci0gICAgcmV0dXJuIHhzZEZyYWdtZW50Xy5zZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoaW5zdGFuY2VEb2N1bWVudHMpOwotICB9Ci0KLSAgcHVibGljIEVsZW1lbnRbXSBnZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsIERvY3VtZW50IGRvYykKLSAgewotICAgIHJldHVybiB4c2RGcmFnbWVudF8uZ2VuSW5zdGFuY2VEb2N1bWVudHNGcm9tUGFyYW1ldGVyVmFsdWVzKGdlblhTSVR5cGUsIG5hbWVzcGFjZVRhYmxlLCBkb2MpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJbmZvcm1hdGlvbkZyYWdtZW50KCkKLSAgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdEluZm9GcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRSZWFkRnJhZ21lbnQoKQotICB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWxlZ2F0aW9uUkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKQotICB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWxlZ2F0aW9uV0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoSVhTREZyYWdtZW50IHhzZEZyYWdtZW50KQotICB7Ci0gICAgeHNkRnJhZ21lbnRfID0geHNkRnJhZ21lbnQ7Ci0gIH0KLQotICBwdWJsaWMgSVhTREZyYWdtZW50IGdldFhTRERlbGVnYXRpb25GcmFnbWVudCgpCi0gIHsKLSAgICByZXR1cm4geHNkRnJhZ21lbnRfOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RFbGVtZW50RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTREVsZW1lbnRGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDdhNTZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTREVsZW1lbnRGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjk3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDExOSAgIDEyMzUzOSBqZXNwZXJAc2Vsc2thYmV0Lm9yZyAtIEplc3BlciBN+GxsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5GcmFnbWVudENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERWxlbWVudEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RGb3JtOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotcHVibGljIGNsYXNzIFhTREVsZW1lbnRGcmFnbWVudCBleHRlbmRzIFhTRERlbGVnYXRpb25GcmFnbWVudCBpbXBsZW1lbnRzIElYU0RFbGVtZW50RnJhZ21lbnQKLXsKLSAgcHJpdmF0ZSBpbnQgbWluT2NjdXJzXzsKLSAgcHJpdmF0ZSBpbnQgbWF4T2NjdXJzXzsKLSAgcHJpdmF0ZSBib29sZWFuIGlzTmlsXzsKLSAKLSAgCi0gIHB1YmxpYyBYU0RFbGVtZW50RnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnKQotICB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZyk7Ci0gICAgaWYgKGNvbmZpZyAhPSBudWxsKQotICAgIHsKLSAgICAgIG1pbk9jY3Vyc18gPSBjb25maWcuZ2V0TWluT2NjdXJzKCk7Ci0gICAgICBtYXhPY2N1cnNfID0gY29uZmlnLmdldE1heE9jY3VycygpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgbWluT2NjdXJzXyA9IEZyYWdtZW50Q29uc3RhbnRzLkRFRkFVTFRfTUlOX09DQ1VSUzsKLSAgICAgIG1heE9jY3Vyc18gPSBGcmFnbWVudENvbnN0YW50cy5ERUZBVUxUX01BWF9PQ0NVUlM7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc1BhcmFtZXRlclZhbHVlcyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgSVhTREZyYWdtZW50IGVsZW1lbnRUeXBlRnJhZ21lbnQgPSBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKTsKLSAgICBzZXRJc05pbChwYXJzZXIpOwotICAgIGlmKGlzTmlsXylyZXR1cm4gdHJ1ZTsKLSAgICAJCi0gICAgaWYgKCFlbGVtZW50VHlwZUZyYWdtZW50LnByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMocGFyc2VyKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmdbXSBwYXJhbXMgPSBnZXRQYXJhbWV0ZXJWYWx1ZXMoZWxlbWVudFR5cGVGcmFnbWVudC5nZXRJRCgpKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwgJiYgIXdpdGhpblJhbmdlKHBhcmFtcy5sZW5ndGgpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gc2V0SXNOaWwoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBuaWwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKGdldE5pbElEKCkpOwotICAgIGlmKG5pbCAhPSBudWxsKSBpc05pbF8gPSB0cnVlOwotICAgIGVsc2UgaXNOaWxfID0gZmFsc2U7Ci0gICAgcmV0dXJuIGlzTmlsXzsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKQotICB7Ci0gICAgSVhTREZyYWdtZW50IGVsZW1lbnRUeXBlRnJhZ21lbnQgPSBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKTsKLSAgICBTdHJpbmdbXSBwYXJhbXMgPSBnZXRQYXJhbWV0ZXJWYWx1ZXMoZWxlbWVudFR5cGVGcmFnbWVudC5nZXRJRCgpKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwgJiYgIXdpdGhpblJhbmdlKHBhcmFtcy5sZW5ndGgpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZWxlbWVudFR5cGVGcmFnbWVudC52YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5KQotICB7Ci0gICAgU3RyaW5nW10gcGFyYW1zID0gZ2V0UGFyYW1ldGVyVmFsdWVzKHBhcmFtS2V5KTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwgJiYgIXdpdGhpblJhbmdlKHBhcmFtcy5sZW5ndGgpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZ2V0WFNERGVsZWdhdGlvbkZyYWdtZW50KCkudmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZXMocGFyYW1LZXkpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZShTdHJpbmcgcGFyYW1LZXksIGludCBwYXJhbUluZGV4KQotICB7Ci0gICAgaWYgKCF3aXRoaW5SYW5nZShwYXJhbUluZGV4ICsgMSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgWFNERWxlbWVudERlY2xhcmF0aW9uIHhzZEVsZW1lbnQgPSAoWFNERWxlbWVudERlY2xhcmF0aW9uKWdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCkuZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgU3RyaW5nIHBhcmFtID0gZ2V0UGFyYW1ldGVyVmFsdWUocGFyYW1LZXksIHBhcmFtSW5kZXgpOwotICAgIGlmIChwYXJhbSAhPSBudWxsICYmIHBhcmFtLmxlbmd0aCgpIDw9IDAgJiYgIXhzZEVsZW1lbnQuaXNOaWxsYWJsZSgpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZ2V0WFNERGVsZWdhdGlvbkZyYWdtZW50KCkudmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZShwYXJhbUtleSwgcGFyYW1JbmRleCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbihYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcpCi0gIHsKLSAgICBzdXBlci5zZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbihjb25maWcpOwotICAgIG1pbk9jY3Vyc18gPSBjb25maWcuZ2V0TWluT2NjdXJzKCk7Ci0gICAgbWF4T2NjdXJzXyA9IGNvbmZpZy5nZXRNYXhPY2N1cnMoKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMpCi0gIHsKLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHNDb3B5ID0gaW5zdGFuY2VEb2N1bWVudHM7Ci0gICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnID0gZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLSAgICBTdHJpbmcgd3NkbFBhcnROYW1lID0gY29uZmlnLmdldFdTRExQYXJ0TmFtZSgpOwotICAgIE5vZGVMaXN0IG5sID0gaW5zdGFuY2VEb2N1bWVudHNDb3B5WzBdLmdldENoaWxkTm9kZXMoKTsKLSAgICAKLSAgICBpZihpbnN0YW5jZURvY3VtZW50c0NvcHlbMF0uaGFzQXR0cmlidXRlKFhTSV9OSUxfQVRUUklCVVRFKSl7Ci0gICAgICBTdHJpbmcgbmlsID0gaW5zdGFuY2VEb2N1bWVudHNDb3B5WzBdLmdldEF0dHJpYnV0ZShYU0lfTklMX0FUVFJJQlVURSk7Ci0gICAgICBpZihuaWwuZXF1YWxzKFRSVUUpKSBpc05pbF8gPSB0cnVlOyAKLSAgICB9ICAKLSAgICAKLSAgICAKLSAgICBpZiAoY29uZmlnLmdldElzV1NETFBhcnQoKSAmJiBjb25maWcuZ2V0U3R5bGUoKSA9PSBGcmFnbWVudENvbnN0YW50cy5TVFlMRV9SUEMgJiYgd3NkbFBhcnROYW1lICE9IG51bGwgJiYgd3NkbFBhcnROYW1lLmxlbmd0aCgpID4gMCAmJiBpbnN0YW5jZURvY3VtZW50c0NvcHkubGVuZ3RoID09IDEgJiYgd3NkbFBhcnROYW1lLmVxdWFscyhpbnN0YW5jZURvY3VtZW50c0NvcHlbMF0uZ2V0VGFnTmFtZSgpKSkKLSAgICB7Ci0gICAgICBWZWN0b3IgY2hpbGRFbGVtZW50cyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmwuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgTm9kZSBub2RlID0gbmwuaXRlbShpKTsKLSAgICAgICAgaWYgKG5vZGUuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgICBjaGlsZEVsZW1lbnRzLmFkZChub2RlKTsKLSAgICAgIH0KLSAgICAgIGluc3RhbmNlRG9jdW1lbnRzQ29weSA9IChFbGVtZW50W10pY2hpbGRFbGVtZW50cy50b0FycmF5KG5ldyBFbGVtZW50WzBdKTsKLSAgICB9Ci0gICAgSVhTREZyYWdtZW50IGVsZW1lbnRUeXBlRnJhZ21lbnQgPSBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKTsKLSAgICBpbnN0YW5jZURvY3VtZW50c0NvcHkgPSBnZXRJbnN0YW5jZURvY3VtZW50c0J5VGFnTmFtZShpbnN0YW5jZURvY3VtZW50c0NvcHksIGdldE5hbWUoKSk7Ci0gICAgcmV0dXJuIGVsZW1lbnRUeXBlRnJhZ21lbnQuc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKHNldEVsZW1lbnRzVGFnTmFtZShpbnN0YW5jZURvY3VtZW50c0NvcHksIGVsZW1lbnRUeXBlRnJhZ21lbnQuZ2V0TmFtZSgpKSk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBYU0lfTklMX0FUVFJJQlVURSA9ICJ4c2k6bmlsIjsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgVFJVRSA9ICJ0cnVlIjsKLSAgcHVibGljIEVsZW1lbnRbXSBnZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsIERvY3VtZW50IGRvYykKLSAgewotICAJCi0gIAlFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBnZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKS5nZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoZ2VuWFNJVHlwZSwgbmFtZXNwYWNlVGFibGUsIGRvYyk7Ci0gICAgaWYoaXNOaWxfKXsgCi0gICAgICBmb3IoaW50IGo9MDtqIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoO2orKyl7ICAKLSAgICAgIAlpbnN0YW5jZURvY3VtZW50c1tqXS5zZXRBdHRyaWJ1dGUoWFNJX05JTF9BVFRSSUJVVEUsVFJVRSk7Ci0gICAgICAJTm9kZUxpc3Qgbm9kZUxpc3QgPSBpbnN0YW5jZURvY3VtZW50c1tqXS5nZXRDaGlsZE5vZGVzKCk7IAotICAgICAgICBpbnQgbGVuZ3RoID0gbm9kZUxpc3QuZ2V0TGVuZ3RoKCk7Ci0gICAgICAgIGZvcihpbnQgaSA9MDtpIDwgbGVuZ3RoO2krKyl7Ci0gICAgICAgICAgaW5zdGFuY2VEb2N1bWVudHNbal0ucmVtb3ZlQ2hpbGQobm9kZUxpc3QuaXRlbSgwKSk7Ci0gICAgICAgIH0KLSAgICAgIH0gIAotICAgIH0KLSAgICBpbnN0YW5jZURvY3VtZW50cyA9IHNldEVsZW1lbnRzVGFnTmFtZShpbnN0YW5jZURvY3VtZW50cywgZ2V0SW5zdGFuY2VEb2N1bWVudFRhZ05hbWUobmFtZXNwYWNlVGFibGUpKTsKLSAgICBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcgPSBnZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICAgIFN0cmluZyB3c2RsUGFydE5hbWUgPSBjb25maWcuZ2V0V1NETFBhcnROYW1lKCk7Ci0gICAgaWYgKGNvbmZpZy5nZXRJc1dTRExQYXJ0KCkgJiYgY29uZmlnLmdldFN0eWxlKCkgPT0gRnJhZ21lbnRDb25zdGFudHMuU1RZTEVfUlBDICYmIHdzZGxQYXJ0TmFtZSAhPSBudWxsICYmIHdzZGxQYXJ0TmFtZS5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzQ29weSA9IGluc3RhbmNlRG9jdW1lbnRzOwotICAgICAgaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFsxXTsKLSAgICAgIGluc3RhbmNlRG9jdW1lbnRzWzBdID0gZG9jLmNyZWF0ZUVsZW1lbnQod3NkbFBhcnROYW1lKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHNDb3B5Lmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBpZiAoaW5zdGFuY2VEb2N1bWVudHNDb3B5W2ldICE9IG51bGwpCi0gICAgICAgICAgaW5zdGFuY2VEb2N1bWVudHNbMF0uYXBwZW5kQ2hpbGQoaW5zdGFuY2VEb2N1bWVudHNDb3B5W2ldKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGluc3RhbmNlRG9jdW1lbnRzOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNJbnN0YW5jZU5hbWVzcGFjZVF1YWxpZmllZCgpCi0gIHsKLSAgICBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcgPSBnZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICAgIGlmIChjb25maWcuZ2V0UGFydEVuY29kaW5nKCkgPT0gRnJhZ21lbnRDb25zdGFudHMuRU5DT0RJTkdfTElURVJBTCkKLSAgICB7Ci0gICAgICBYU0RFbGVtZW50RGVjbGFyYXRpb24geHNkRWxlbWVudCA9IChYU0RFbGVtZW50RGVjbGFyYXRpb24pY29uZmlnLmdldFhTRENvbXBvbmVudCgpOwotICAgICAgLy8gVHJ5IHRvIHJlc29sdmUgdGhlIGVsZW1lbnQsIHNpbmNlIGFuIGVsZW1lbnQgd2l0aCBhIHJlZiBjYW4gbmV2ZXIgYmUgZ2xvYmFsCi0gICAgICBpZiAoeHNkRWxlbWVudC5nZXRSZXNvbHZlZEVsZW1lbnREZWNsYXJhdGlvbigpICE9IG51bGwpCi0gICAgICAgIHhzZEVsZW1lbnQgPSB4c2RFbGVtZW50LmdldFJlc29sdmVkRWxlbWVudERlY2xhcmF0aW9uKCk7Ci0gICAgICAKLSAgICAgIGlmICh4c2RFbGVtZW50LmlzR2xvYmFsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoeHNkRWxlbWVudC5pc1NldEZvcm0oKSkKLSAgICAgICAgICByZXR1cm4gKHhzZEVsZW1lbnQuZ2V0Rm9ybSgpLmdldFZhbHVlKCkgPT0gWFNERm9ybS5RVUFMSUZJRUQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcmV0dXJuICh4c2RFbGVtZW50LmdldFNjaGVtYSgpLmdldEVsZW1lbnRGb3JtRGVmYXVsdCgpLmdldFZhbHVlKCkgPT0gWFNERm9ybS5RVUFMSUZJRUQpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEluc3RhbmNlRG9jdW1lbnRUYWdOYW1lKEhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSkKLSAgewotICAgIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZyA9IGdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0gICAgWFNERWxlbWVudERlY2xhcmF0aW9uIHhzZEVsZW1lbnQgPSAoWFNERWxlbWVudERlY2xhcmF0aW9uKWNvbmZpZy5nZXRYU0RDb21wb25lbnQoKTsKLSAgICBTdHJpbmdCdWZmZXIgdGFnTmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBpZiAoaXNJbnN0YW5jZU5hbWVzcGFjZVF1YWxpZmllZCgpKQotICAgIHsKLSAgICAgIFN0cmluZyBuc1VSSSA9IG51bGw7Ci0gICAgICAvLyBwb3J0IHRvIG9yZy5lY2xpcHNlLnhzZAotICAgICAgaWYgKHhzZEVsZW1lbnQuZ2V0UmVzb2x2ZWRFbGVtZW50RGVjbGFyYXRpb24oKSAhPSBudWxsKQotICAgICAgICBuc1VSSSA9IHhzZEVsZW1lbnQuZ2V0UmVzb2x2ZWRFbGVtZW50RGVjbGFyYXRpb24oKS5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgbnNVUkkgPSB4c2RFbGVtZW50LmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgaWYgKG5zVVJJICE9IG51bGwgJiYgbnNVUkkubGVuZ3RoKCkgPiAwKQotICAgICAgewotICAgICAgICBTdHJpbmcgcHJlZml4ID0gZ2V0UHJlZml4RnJvbU5hbWVzcGFjZVVSSShuc1VSSSwgbmFtZXNwYWNlVGFibGUpOwotICAgICAgICB0YWdOYW1lLmFwcGVuZChwcmVmaXgpOwotICAgICAgICB0YWdOYW1lLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5DT0xPTik7Ci0gICAgICB9Ci0gICAgfQotICAgIFN0cmluZyB4c2RFbGVtZW50TmFtZSA9IHhzZEVsZW1lbnQuZ2V0TmFtZSgpOwotICAgIGlmICh4c2RFbGVtZW50TmFtZSA9PSBudWxsIHx8IHhzZEVsZW1lbnROYW1lLmxlbmd0aCgpIDw9IDApCi0gICAgewotICAgICAgLy8gcG9ydCB0byBvcmcuZWNsaXBzZS54c2QKLSAgICAgIGlmICh4c2RFbGVtZW50LmdldFJlc29sdmVkRWxlbWVudERlY2xhcmF0aW9uKCkgIT0gbnVsbCkKLSAgICAgICAgeHNkRWxlbWVudE5hbWUgPSB4c2RFbGVtZW50LmdldFJlc29sdmVkRWxlbWVudERlY2xhcmF0aW9uKCkuZ2V0TmFtZSgpOwotICAgICAgZWxzZQotICAgICAgICB4c2RFbGVtZW50TmFtZSA9IGdldE5hbWUoKTsKLSAgICB9Ci0gICAgdGFnTmFtZS5hcHBlbmQoeHNkRWxlbWVudE5hbWUpOwotICAgIHJldHVybiB0YWdOYW1lLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gd2l0aGluUmFuZ2UoaW50IHNpemUpCi0gIHsKLSAgICBpZiAoc2l6ZSA8IG1pbk9jY3Vyc18pCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1heE9jY3Vyc18gIT0gRnJhZ21lbnRDb25zdGFudHMuVU5CT1VOREVEICYmIHNpemUgPiBtYXhPY2N1cnNfKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TWluT2NjdXJzKGludCBtaW5PY2N1cnMpCi0gIHsKLSAgICBtaW5PY2N1cnNfID0gbWluT2NjdXJzOwotICB9Ci0KLSAgcHVibGljIGludCBnZXRNaW5PY2N1cnMoKQotICB7Ci0gICAgcmV0dXJuIG1pbk9jY3Vyc187Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRNYXhPY2N1cnMoaW50IG1heE9jY3VycykKLSAgewotICAgIG1heE9jY3Vyc18gPSBtYXhPY2N1cnM7Ci0gIH0KLQotICBwdWJsaWMgaW50IGdldE1heE9jY3VycygpCi0gIHsKLSAgICByZXR1cm4gbWF4T2NjdXJzXzsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gaXNOaWxsYWJsZSgpCi0gIHsKLSAgCWlmKGdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCkuZ2V0WFNEQ29tcG9uZW50KCkuZ2V0RWxlbWVudCgpLmdldEF0dHJpYnV0ZSgibmlsbGFibGUiKS5lcXVhbHMoInRydWUiKSkKLSAgCSAgcmV0dXJuIHRydWU7Ci0gIAlyZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBib29sZWFuIGlzTmlsKCkKLSAgewotICAJcmV0dXJuIGlzTmlsXzsKLSAgfQotICAKLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmlsSUQoKQotICB7Ci0gIAlyZXR1cm4gZ2V0SUQoKSArIElYU0RFbGVtZW50RnJhZ21lbnQuTklMOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJbmZvcm1hdGlvbkZyYWdtZW50KCkKLSAgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdEluZm9GcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRSZWFkRnJhZ21lbnQoKQotICB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RFbGVtZW50UkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKQotICB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RFbGVtZW50V0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNERW1wdHlGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNERW1wdHlGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTIyNThkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTREVtcHR5RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotcHVibGljIGNsYXNzIFhTREVtcHR5RnJhZ21lbnQgZXh0ZW5kcyBYU0RGcmFnbWVudCB7Ci0gIHByaXZhdGUgaW50IG9jY3VyYW5jZV87Ci0KLSAgcHVibGljIFhTREVtcHR5RnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnKSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZyk7Ci0gICAgb2NjdXJhbmNlXyA9IDA7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzUGFyYW1ldGVyVmFsdWVzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIHsKLSAgICBTdHJpbmcgb2NjdXJhbmNlID0gcGFyc2VyLmdldFBhcmFtZXRlcihnZXRJRCgpKTsKLSAgICB0cnkgewotICAgICAgb2NjdXJhbmNlXyA9IEludGVnZXIucGFyc2VJbnQob2NjdXJhbmNlKTsKLSAgICAgIHJldHVybiB2YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpIHsKLSAgICAgIG9jY3VyYW5jZV8gPSAtMTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5LCBTdHJpbmdbXSBwYXJhbXMpIHsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFBhcmFtZXRlclZhbHVlcyhTdHJpbmcgcGFyYW1LZXksIFZlY3RvciBwYXJhbXMpIHsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5KSB7Ci0gICAgaWYgKG9jY3VyYW5jZV8gPCAwKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgZWxzZSB7Ci0gICAgICBTdHJpbmdbXSBwYXJhbXMgPSBuZXcgU3RyaW5nW29jY3VyYW5jZV9dOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgcGFyYW1zW2ldID0gIiI7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcGFyYW1zOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UGFyYW1ldGVyVmFsdWUoU3RyaW5nIHBhcmFtS2V5LCBpbnQgcGFyYW1JbmRleCkgewotICAgIGlmIChwYXJhbUluZGV4ID49IDAgJiYgcGFyYW1JbmRleCA8IG9jY3VyYW5jZV8pCi0gICAgICByZXR1cm4gIiI7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpIHsKLSAgICBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBnZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICAgIGludCBtaW4gPSB4c2RDb25maWcuZ2V0TWluT2NjdXJzKCk7Ci0gICAgaW50IG1heCA9IHhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKTsKLSAgICByZXR1cm4gKG9jY3VyYW5jZV8gPj0gMCAmJiBvY2N1cmFuY2VfID49IG1pbiAmJiAobWF4ID09IEZyYWdtZW50Q29uc3RhbnRzLlVOQk9VTkRFRCB8fCBvY2N1cmFuY2VfIDw9IG1heCkpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5KSB7Ci0gICAgcmV0dXJuIHZhbGlkYXRlQWxsUGFyYW1ldGVyVmFsdWVzKCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZVBhcmFtZXRlclZhbHVlKFN0cmluZyBwYXJhbUtleSwgaW50IHBhcmFtSW5kZXgpIHsKLSAgICByZXR1cm4gdmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMpIHsKLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHNDb3B5ID0gZ2V0SW5zdGFuY2VEb2N1bWVudHNCeVRhZ05hbWUoaW5zdGFuY2VEb2N1bWVudHMsIGdldE5hbWUoKSk7Ci0gICAgYm9vbGVhbiBwYXJhbXNWYWxpZCA9IHRydWU7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50c0NvcHkubGVuZ3RoOyBpKyspIHsKLSAgICAgIE5vZGVMaXN0IG5vZGVMaXN0ID0gaW5zdGFuY2VEb2N1bWVudHNDb3B5W2ldLmdldENoaWxkTm9kZXMoKTsKLSAgICAgIGlmIChub2RlTGlzdC5nZXRMZW5ndGgoKSA+IDEpCi0gICAgICAgIHBhcmFtc1ZhbGlkID0gZmFsc2U7Ci0gICAgICBlbHNlIGlmIChub2RlTGlzdC5nZXRMZW5ndGgoKSAhPSAwKSB7Ci0gICAgICAgIE5vZGUgbm9kZSA9IG5vZGVMaXN0Lml0ZW0oMCk7Ci0gICAgICAgIGlmIChub2RlLmdldE5vZGVUeXBlKCkgIT0gTm9kZS5URVhUX05PREUgfHwgIWlzV2hpdGVzcGFjZShub2RlLmdldE5vZGVWYWx1ZSgpKSkKLSAgICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgICBvY2N1cmFuY2VfID0gaW5zdGFuY2VEb2N1bWVudHNDb3B5Lmxlbmd0aDsKLSAgICByZXR1cm4gcGFyYW1zVmFsaWQgJiYgdmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKTsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBpc1doaXRlc3BhY2UoU3RyaW5nIHMpIHsKLSAgICBjaGFyW10gY2hhcnMgPSBzLnRvQ2hhckFycmF5KCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewotICAgICAgaWYgKCFDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGNoYXJzW2ldKSB8fCAhQ2hhcmFjdGVyLmlzU3BhY2VDaGFyKGNoYXJzW2ldKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5mb3JtYXRpb25GcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3JpdGVGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTREVtcHR5V0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTREVtcHR5UkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTREZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjE4YTk5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTREZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDEzICAgMTc2NDkzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0U6IE1ha2UgbWVzc2FnZS90cmFuc3BvcnQgc3RhY2sgcGx1Z2dhYmxlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb21wb25lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTREZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE5hbWVkQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWE7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFR5cGVEZWZpbml0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXA7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFhTREZyYWdtZW50IGV4dGVuZHMgRnJhZ21lbnQgaW1wbGVtZW50cyBJWFNERnJhZ21lbnQKLXsKLSAgcHJpdmF0ZSBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWdfOwotICBwcml2YXRlIFhTRFR5cGVEZWZpbml0aW9uIHR5cGVEZWZfOwotICBwcml2YXRlIGludCBzZWVkXzsKLQotICBwdWJsaWMgWFNERnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnKQotICB7Ci0gICAgc3VwZXIoaWQsIG5hbWUpOwotICAgIGNvbmZpZ18gPSBjb25maWc7Ci0gICAgaWYgKGNvbmZpZ18gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBYU0RDb21wb25lbnQgY29tcG9uZW50ID0gY29uZmlnLmdldFhTRENvbXBvbmVudCgpOwotICAgICAgaWYgKGNvbXBvbmVudCBpbnN0YW5jZW9mIFhTRFR5cGVEZWZpbml0aW9uKQotICAgICAgICB0eXBlRGVmXyA9IChYU0RUeXBlRGVmaW5pdGlvbiljb21wb25lbnQ7Ci0gICAgICBlbHNlCi0gICAgICAgIHR5cGVEZWZfID0gbnVsbDsKLSAgICB9Ci0gICAgc2VlZF8gPSAwOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnKQotICB7Ci0gICAgY29uZmlnXyA9IGNvbmZpZzsKLSAgICBpZiAoY29uZmlnXyAhPSBudWxsKQotICAgIHsKLSAgICAgIFhTRENvbXBvbmVudCBjb21wb25lbnQgPSBjb25maWcuZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgICBpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgWFNEVHlwZURlZmluaXRpb24pCi0gICAgICAgIHNldFhTRFR5cGVEZWZpbml0aW9uKChYU0RUeXBlRGVmaW5pdGlvbiljb21wb25lbnQpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBnZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gY29uZmlnXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFhTRFR5cGVEZWZpbml0aW9uKFhTRFR5cGVEZWZpbml0aW9uIHR5cGVEZWYpCi0gIHsKLSAgICB0eXBlRGVmXyA9IHR5cGVEZWY7Ci0gIH0KLQotICBwdWJsaWMgWFNEVHlwZURlZmluaXRpb24gZ2V0WFNEVHlwZURlZmluaXRpb24oKQotICB7Ci0gICAgcmV0dXJuIHR5cGVEZWZfOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykKLSAgewotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50c0NvcHkgPSBnZXRJbnN0YW5jZURvY3VtZW50c0J5VGFnTmFtZShpbnN0YW5jZURvY3VtZW50cywgZ2V0TmFtZSgpKTsKLSAgICBTdHJpbmdbXSBwYXJhbXMgPSBuZXcgU3RyaW5nW2luc3RhbmNlRG9jdW1lbnRzQ29weS5sZW5ndGhdOwotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSBpbnRlcm5hbEVxdWFscyhpbnN0YW5jZURvY3VtZW50c0NvcHksIGluc3RhbmNlRG9jdW1lbnRzKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzQ29weS5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBwYXJhbXNbaV0gPSAiIjsKLSAgICAgIE5vZGVMaXN0IG5vZGVMaXN0ID0gaW5zdGFuY2VEb2N1bWVudHNDb3B5W2ldLmdldENoaWxkTm9kZXMoKTsKLSAgICAgIGlmIChub2RlTGlzdC5nZXRMZW5ndGgoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIE5vZGUgbm9kZSA9IG5vZGVMaXN0Lml0ZW0oMCk7Ci0gICAgICAgIGlmIChub2RlTGlzdC5nZXRMZW5ndGgoKSA+IDEpCi0gICAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKG5vZGUuZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLlRFWFRfTk9ERSkKLSAgICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcGFyYW1zW2ldID0gbm9kZS5nZXROb2RlVmFsdWUoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgc2V0UGFyYW1ldGVyVmFsdWVzKGdldElEKCksIHBhcmFtcyk7Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkICYmIHZhbGlkYXRlQWxsUGFyYW1ldGVyVmFsdWVzKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgRWxlbWVudFtdIGdldEluc3RhbmNlRG9jdW1lbnRzQnlUYWdOYW1lKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cywgU3RyaW5nIHRhZ05hbWUpCi0gIHsKLSAgICBpZiAoaW5zdGFuY2VEb2N1bWVudHMgPT0gbnVsbCkKLSAgICAgIHJldHVybiBuZXcgRWxlbWVudFswXTsKLSAgICBWZWN0b3IgaW5zdGFuY2VzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChpbnN0YW5jZURvY3VtZW50c1tpXSA9PSBudWxsKQotICAgICAgICBjb250aW51ZTsKLSAgICAgIFN0cmluZyBpbnN0YW5jZVRhZ05hbWUgPSB0cmltUHJlZml4KGluc3RhbmNlRG9jdW1lbnRzW2ldLmdldFRhZ05hbWUoKSk7Ci0gICAgICBpZiAoaW5zdGFuY2VUYWdOYW1lLmVxdWFscyh0YWdOYW1lKSkKLSAgICAgICAgaW5zdGFuY2VzQ29weS5hZGQoaW5zdGFuY2VEb2N1bWVudHNbaV0pOwotICAgIH0KLSAgICBFbGVtZW50W10gaW5zdGFuY2VzID0gbmV3IEVsZW1lbnRbaW5zdGFuY2VzQ29weS5zaXplKCldOwotICAgIGluc3RhbmNlc0NvcHkuY29weUludG8oaW5zdGFuY2VzKTsKLSAgICByZXR1cm4gaW5zdGFuY2VzOwotICB9Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyB0cmltUHJlZml4KFN0cmluZyBzKQotICB7Ci0gICAgU3RyaW5nIHNDb3B5ID0gbmV3IFN0cmluZyhzKTsKLSAgICBpbnQgY29sb25JbmRleCA9IHNDb3B5LmluZGV4T2YoRnJhZ21lbnRDb25zdGFudHMuQ09MT04pOwotICAgIGlmIChjb2xvbkluZGV4ICE9IC0xICYmIGNvbG9uSW5kZXggKyAxIDwgc0NvcHkubGVuZ3RoKCkgJiYgISgoU3RyaW5nLnZhbHVlT2Yoc0NvcHkuY2hhckF0KGNvbG9uSW5kZXggKyAxKSkpLmVxdWFscyhGcmFnbWVudENvbnN0YW50cy5DT0xPTikpKQotICAgICAgc0NvcHkgPSBzQ29weS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEsIHNDb3B5Lmxlbmd0aCgpKTsKLSAgICByZXR1cm4gc0NvcHk7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudFtdIGdlbkluc3RhbmNlRG9jdW1lbnRzRm9yTmlsKGJvb2xlYW4gZ2VuWFNJVHlwZSwgSGFzaHRhYmxlIG5hbWVzcGFjZVRhYmxlLERvY3VtZW50IGRvYyl7Ci0gIAlFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFsxXTsKLSAgICBTdHJpbmcgdGFnTmFtZSA9IGdldEluc3RhbmNlRG9jdW1lbnRUYWdOYW1lKG5hbWVzcGFjZVRhYmxlKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgRWxlbWVudCBpbnN0YW5jZURvY3VtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7Ci0gICAgICAgIGluc3RhbmNlRG9jdW1lbnRzW2ldID0gaW5zdGFuY2VEb2N1bWVudDsKLSAgICAgIH0KLSAgICByZXR1cm4gKGdlblhTSVR5cGUgPyBhZGRYU0lUeXBlKGluc3RhbmNlRG9jdW1lbnRzLCBuYW1lc3BhY2VUYWJsZSkgOiBpbnN0YW5jZURvY3VtZW50cyk7Ci0gIAkKLSAgfQotICAKLSAgcHVibGljIEVsZW1lbnRbXSBnZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsRG9jdW1lbnQgZG9jKSB7Ci0gICAgU3RyaW5nW10gcGFyYW1zID0gZ2V0UGFyYW1ldGVyVmFsdWVzKGdldElEKCkpOwotICAgIGlmIChwYXJhbXMgPT0gbnVsbCkKLSAgICAgIHJldHVybiBuZXcgRWxlbWVudFswXTsKLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtwYXJhbXMubGVuZ3RoXTsKLSAgICBTdHJpbmcgdGFnTmFtZSA9IGdldEluc3RhbmNlRG9jdW1lbnRUYWdOYW1lKG5hbWVzcGFjZVRhYmxlKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIEVsZW1lbnQgaW5zdGFuY2VEb2N1bWVudCA9IGRvYy5jcmVhdGVFbGVtZW50KHRhZ05hbWUpOwotICAgICAgTm9kZSB0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZShwYXJhbXNbaV0pOwotICAgICAgaW5zdGFuY2VEb2N1bWVudC5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICBpbnN0YW5jZURvY3VtZW50c1tpXSA9IGluc3RhbmNlRG9jdW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiAoZ2VuWFNJVHlwZSA/IGFkZFhTSVR5cGUoaW5zdGFuY2VEb2N1bWVudHMsIG5hbWVzcGFjZVRhYmxlKSA6IGluc3RhbmNlRG9jdW1lbnRzKTsKLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50IHNldEF0dHJpYnV0ZXNPbkluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnQgaW5zdGFuY2VEb2N1bWVudCxTdHJpbmcgYXR0TmFtZSl7Ci0gIAlTdHJpbmdbXSBwYXJhbXMgPSBnZXRQYXJhbWV0ZXJWYWx1ZXMoZ2V0SUQoKSk7Ci0gICAgaWYgKHBhcmFtcyA9PSBudWxsKQotICAgICAgcmV0dXJuIGluc3RhbmNlRG9jdW1lbnQ7Ci0gICAgaWYgKGlzQXR0cmlidXRlSW5zdGFuY2VOYW1lc3BhY2VRdWFsaWZpZWQoKSl7Ci0gICAgICBpbnN0YW5jZURvY3VtZW50LnNldEF0dHJpYnV0ZU5TKGNvbmZpZ18uZ2V0WFNEQ29tcG9uZW50KCkuZ2V0U2NoZW1hKCkuZ2V0VGFyZ2V0TmFtZXNwYWNlKCksYXR0TmFtZSxwYXJhbXNbMF0pOwotICAgICAgCi0gICAgfQotICAgIGVsc2UgaW5zdGFuY2VEb2N1bWVudC5zZXRBdHRyaWJ1dGUoYXR0TmFtZSxwYXJhbXNbMF0pOwotICAgIAotICAgIHJldHVybiBpbnN0YW5jZURvY3VtZW50OwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBzZXRBdHRyaWJ1dGVQYXJhbXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoTm9kZSBhdHRyaWJ1dGUpewotICAJU3RyaW5nW10gcGFyYW1zID0gbmV3IFN0cmluZ1sxXTsKLSAgCXBhcmFtc1swXSA9IGF0dHJpYnV0ZS5nZXROb2RlVmFsdWUoKTsgCi0gIAlzZXRQYXJhbWV0ZXJWYWx1ZXMoZ2V0SUQoKSwgcGFyYW1zKTsKLSAgICByZXR1cm4gdmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZW5JRCgpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgbmV3SUQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgbmV3SUQuYXBwZW5kKGdldElEKCkpOwotICAgIG5ld0lELmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5JRF9TRVBFUkFUT1IpOwotICAgIG5ld0lELmFwcGVuZChzZWVkXysrKTsKLSAgICByZXR1cm4gbmV3SUQudG9TdHJpbmcoKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGlzSW5zdGFuY2VOYW1lc3BhY2VRdWFsaWZpZWQoKQotICB7Ci0gICAgWFNEU2NoZW1hIHhzZFNjaGVtYSA9IGNvbmZpZ18uZ2V0WFNEQ29tcG9uZW50KCkuZ2V0U2NoZW1hKCk7Ci0gICAgcmV0dXJuICghY29uZmlnXy5nZXRJc1dTRExQYXJ0KCkgJiYgY29uZmlnXy5nZXRQYXJ0RW5jb2RpbmcoKSA9PSBGcmFnbWVudENvbnN0YW50cy5FTkNPRElOR19MSVRFUkFMICYmIHhzZFNjaGVtYS5nZXRFbGVtZW50Rm9ybURlZmF1bHQoKS5nZXRWYWx1ZSgpID09IFhTREZvcm0uUVVBTElGSUVEKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGlzQXR0cmlidXRlSW5zdGFuY2VOYW1lc3BhY2VRdWFsaWZpZWQoKSB7Ci0gIAlYU0RTY2hlbWEgeHNkU2NoZW1hID0gY29uZmlnXy5nZXRYU0RDb21wb25lbnQoKS5nZXRTY2hlbWEoKTsKLSAgICAKLSAgICByZXR1cm4gKCFjb25maWdfLmdldElzV1NETFBhcnQoKSAmJgotICAgICAgICAgICAgICAgIGNvbmZpZ18uZ2V0UGFydEVuY29kaW5nKCkgPT0gRnJhZ21lbnRDb25zdGFudHMuRU5DT0RJTkdfTElURVJBTCAmJgotICAgICAgICAgICAgICAgIHhzZFNjaGVtYS5nZXRBdHRyaWJ1dGVGb3JtRGVmYXVsdCgpLmdldFZhbHVlKCkgPT0gWFNERm9ybS5RVUFMSUZJRUQpOwotCi0gIH0KLQotIAotICAKLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRJbnN0YW5jZURvY3VtZW50VGFnTmFtZShIYXNodGFibGUgbmFtZXNwYWNlVGFibGUpIHsKLSAgICBTdHJpbmdCdWZmZXIgdGFnTmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBpZiAoaXNJbnN0YW5jZU5hbWVzcGFjZVF1YWxpZmllZCgpKQotICAgIHsKLSAgICAgIFN0cmluZyBuc1VSSSA9IGNvbmZpZ18uZ2V0WFNEQ29tcG9uZW50KCkuZ2V0U2NoZW1hKCkuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0gICAgICBTdHJpbmcgcHJlZml4ID0gZ2V0UHJlZml4RnJvbU5hbWVzcGFjZVVSSShuc1VSSSwgbmFtZXNwYWNlVGFibGUpOwotICAgICAgdGFnTmFtZS5hcHBlbmQocHJlZml4KTsKLSAgICAgIHRhZ05hbWUuYXBwZW5kKEZyYWdtZW50Q29uc3RhbnRzLkNPTE9OKTsKLSAgICB9Ci0gICAgdGFnTmFtZS5hcHBlbmQoZ2V0TmFtZSgpKTsKLSAgICByZXR1cm4gdGFnTmFtZS50b1N0cmluZygpOwotICB9Ci0KLSAgcHJvdGVjdGVkIEVsZW1lbnRbXSBhZGRYU0lUeXBlKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cywgSGFzaHRhYmxlIG5hbWVzcGFjZVRhYmxlKQotICB7Ci0gICAgWFNEQ29tcG9uZW50IHhzZENvbXBvbmVudCA9IGNvbmZpZ18uZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgaWYgKGluc3RhbmNlRG9jdW1lbnRzICE9IG51bGwgJiYgKHhzZENvbXBvbmVudCBpbnN0YW5jZW9mIFhTRE5hbWVkQ29tcG9uZW50KSkKLSAgICB7Ci0gICAgICBTdHJpbmcgeHNkQ29tcG9uZW50TmFtZSA9ICgoWFNETmFtZWRDb21wb25lbnQpeHNkQ29tcG9uZW50KS5nZXROYW1lKCk7Ci0gICAgICBpZiAoeHNkQ29tcG9uZW50TmFtZSAhPSBudWxsICYmIHhzZENvbXBvbmVudE5hbWUubGVuZ3RoKCkgPiAwKQotICAgICAgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGluc3RhbmNlRG9jdW1lbnRzW2ldID09IG51bGwpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICBTdHJpbmcgeHNpVVJJID0gRnJhZ21lbnRDb25zdGFudHMuVVJJX1hTSTsKLSAgICAgICAgICBTdHJpbmcgeHNpUHJlZml4ID0gZ2V0UHJlZml4RnJvbU5hbWVzcGFjZVVSSSh4c2lVUkksIG5hbWVzcGFjZVRhYmxlKTsKLSAgICAgICAgICBTdHJpbmcgeHNpVHlwZVVSSSA9IHhzZENvbXBvbmVudC5nZXRTY2hlbWEoKS5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLSAgICAgICAgICBTdHJpbmcgeHNpVHlwZVByZWZpeCA9IGdldFByZWZpeEZyb21OYW1lc3BhY2VVUkkoeHNpVHlwZVVSSSwgbmFtZXNwYWNlVGFibGUpOwotICAgICAgICAgIDsKLSAgICAgICAgICBTdHJpbmdCdWZmZXIgYXR0ck5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgICAgYXR0ck5hbWUuYXBwZW5kKHhzaVByZWZpeCk7Ci0gICAgICAgICAgYXR0ck5hbWUuYXBwZW5kKEZyYWdtZW50Q29uc3RhbnRzLkNPTE9OKTsKLSAgICAgICAgICBhdHRyTmFtZS5hcHBlbmQoRnJhZ21lbnRDb25zdGFudHMuWFNJX1RZUEUpOwotICAgICAgICAgIFN0cmluZ0J1ZmZlciBhdHRyVmFsdWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgICAgYXR0clZhbHVlLmFwcGVuZCh4c2lUeXBlUHJlZml4KTsKLSAgICAgICAgICBhdHRyVmFsdWUuYXBwZW5kKEZyYWdtZW50Q29uc3RhbnRzLkNPTE9OKTsKLSAgICAgICAgICBhdHRyVmFsdWUuYXBwZW5kKHhzZENvbXBvbmVudE5hbWUpOwotICAgICAgICAgIGluc3RhbmNlRG9jdW1lbnRzW2ldLnNldEF0dHJpYnV0ZShhdHRyTmFtZS50b1N0cmluZygpLCBhdHRyVmFsdWUudG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGluc3RhbmNlRG9jdW1lbnRzOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKQotICB7Ci0gICAgaWYgKCFzdXBlci52YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZ1tdIHBhcmFtcyA9IGdldFBhcmFtZXRlclZhbHVlcyhnZXRJRCgpKTsKLSAgICBpbnQgbGVuZ3RoID0gKHBhcmFtcyAhPSBudWxsKSA/IHBhcmFtcy5sZW5ndGggOiAwOwotICAgIGludCBtaW4gPSBjb25maWdfLmdldE1pbk9jY3VycygpOwotICAgIGludCBtYXggPSBjb25maWdfLmdldE1heE9jY3VycygpOwotICAgIHJldHVybiAobGVuZ3RoID49IG1pbiAmJiAobWF4ID09IEZyYWdtZW50Q29uc3RhbnRzLlVOQk9VTkRFRCB8fCBsZW5ndGggPD0gbWF4KSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGdldFByZWZpeEZyb21OYW1lc3BhY2VVUkkoU3RyaW5nIG5zVVJJLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUpCi0gIHsKLSAgICBTdHJpbmcgcHJlZml4ID0gKFN0cmluZyluYW1lc3BhY2VUYWJsZS5nZXQobnNVUkkpOwotICAgIGludCBpID0gMDsKLSAgICB3aGlsZSAocHJlZml4ID09IG51bGwgfHwgcHJlZml4Lmxlbmd0aCgpIDw9IDApCi0gICAgewotICAgICAgU3RyaW5nQnVmZmVyIHByZWZpeENvcHkgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICBwcmVmaXhDb3B5LmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5RTkFNRV9QUkVGSVgpOwotICAgICAgcHJlZml4Q29weS5hcHBlbmQoU3RyaW5nLnZhbHVlT2YoaSkpOwotICAgICAgaSsrOwotICAgICAgaWYgKCFuYW1lc3BhY2VUYWJsZS5jb250YWlucyhwcmVmaXhDb3B5LnRvU3RyaW5nKCkpKQotICAgICAgewotICAgICAgICBuYW1lc3BhY2VUYWJsZS5wdXQobnNVUkksIHByZWZpeENvcHkudG9TdHJpbmcoKSk7Ci0gICAgICAgIHByZWZpeCA9IHByZWZpeENvcHkudG9TdHJpbmcoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHByZWZpeDsKLSAgfQotCi0gIHByb3RlY3RlZCBFbGVtZW50IHNldEVsZW1lbnRUYWdOYW1lKEVsZW1lbnQgZSwgU3RyaW5nIHRhZ05hbWUpCi0gIHsKLSAgICBpZiAoIWUuZ2V0VGFnTmFtZSgpLmVxdWFscyh0YWdOYW1lKSkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgRG9jdW1lbnQgZG9jID0gZS5nZXRPd25lckRvY3VtZW50KCk7Ci0gICAgICAgIE5vZGVMaXN0IGNoaWxkcmVuID0gZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICAgIE5hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzID0gZS5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIEVsZW1lbnQgZUNvcHkgPSBkb2MuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgTm9kZSBjaGlsZCA9IGNoaWxkcmVuLml0ZW0oaSk7Ci0gICAgICAgICAgaWYgKGNoaWxkICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAJICBlQ29weS5hcHBlbmRDaGlsZChjaGlsZC5jbG9uZU5vZGUodHJ1ZSkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGF0dHJpYnV0ZXMuZ2V0TGVuZ3RoKCk7IGorKykKLSAgICAgICAgewotICAgICAgICAgIE5vZGUgYXR0ciA9IGF0dHJpYnV0ZXMuaXRlbShqKTsKLSAgICAgICAgICBpZiAoYXR0ciAhPSBudWxsICYmIChhdHRyIGluc3RhbmNlb2YgQXR0cikpCi0gICAgICAgICAgewotICAgICAgICAgICAgQXR0ciBhdHRyaWJ1dGUgPSAoQXR0cilhdHRyOwotICAgICAgICAgICAgZUNvcHkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5nZXROYW1lKCksIGF0dHJpYnV0ZS5nZXRWYWx1ZSgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGVDb3B5OwotICAgICAgfQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlOwotICB9Ci0KLSAgcHJvdGVjdGVkIEVsZW1lbnRbXSBzZXRFbGVtZW50c1RhZ05hbWUoRWxlbWVudFtdIGUsIFN0cmluZyB0YWdOYW1lKQotICB7Ci0gICAgRWxlbWVudFtdIGVDb3B5ID0gbmV3IEVsZW1lbnRbZS5sZW5ndGhdOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZUNvcHkubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgZUNvcHlbaV0gPSBzZXRFbGVtZW50VGFnTmFtZShlW2ldLCB0YWdOYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVDb3B5OwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaW50ZXJuYWxFcXVhbHMoRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzQ29weSwgRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzKQotICB7Ci0gICAgaWYgKCFjb25maWdfLmdldElzV1NETFBhcnQoKSkKLSAgICB7Ci0gICAgICBpbnQgbGVuZ3RoID0gKGluc3RhbmNlRG9jdW1lbnRzICE9IG51bGwpID8gaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoIDogMDsKLSAgICAgIGludCBsZW5ndGhDb3B5ID0gKGluc3RhbmNlRG9jdW1lbnRzQ29weSAhPSBudWxsKSA/IGluc3RhbmNlRG9jdW1lbnRzQ29weS5sZW5ndGggOiAwOwotICAgICAgcmV0dXJuIChsZW5ndGggPT0gbGVuZ3RoQ29weSk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cEFsbEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cEFsbEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZGQ4OTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNER3JvdXBBbGxGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREdyb3VwQWxsRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE1vZGVsR3JvdXA7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotcHVibGljIGNsYXNzIFhTREdyb3VwQWxsRnJhZ21lbnQgZXh0ZW5kcyBYU0RHcm91cEZyYWdtZW50IGltcGxlbWVudHMgSVhTREdyb3VwQWxsRnJhZ21lbnQgewotICBwcml2YXRlIFN0cmluZyBncm91cElEXzsKLQotICBwdWJsaWMgWFNER3JvdXBBbGxGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGNvbnRyb2xsZXIsIFhTRE1vZGVsR3JvdXAgeHNkTW9kZWxHcm91cCkgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcsIGNvbnRyb2xsZXIsIHhzZE1vZGVsR3JvdXApOwotICAgIGdyb3VwSURfID0gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24gewotICAgIFN0cmluZyBncm91cElEID0gcGFyc2VyLmdldFBhcmFtZXRlcihnZXRJRCgpKTsKLSAgICBpZiAoZ3JvdXBJRF8gIT0gbnVsbCAmJiBncm91cElEICE9IG51bGwgJiYgZ3JvdXBJRF8uZXF1YWxzKGdyb3VwSUQpKSB7Ci0gICAgICBzZXRHcm91cE1lbWJlcklEc09yZGVyaW5nKHBhcnNlci5nZXRQYXJhbWV0ZXJWYWx1ZXMoZ3JvdXBJRF8pKTsKLSAgICAgIGJvb2xlYW4gdmFsdWVzVmFsaWQgPSB0cnVlOwotICAgICAgSVhTREZyYWdtZW50W10gZ3JvdXBNZW1iZXJGcmFnbWVudHMgPSBnZXRHcm91cE1lbWJlckZyYWdtZW50cyhncm91cElEXyk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGdyb3VwTWVtYmVyRnJhZ21lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGlmIChncm91cE1lbWJlckZyYWdtZW50c1tpXSAhPSBudWxsICYmICFncm91cE1lbWJlckZyYWdtZW50c1tpXS5wcm9jZXNzUGFyYW1ldGVyVmFsdWVzKHBhcnNlcikpCi0gICAgICAgICAgdmFsdWVzVmFsaWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB2YWx1ZXNWYWxpZDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBncm91cElEXyA9IG51bGw7Ci0gICAgICByZW1vdmVHcm91cElEcygpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykgewotICAgIHJlbW92ZUdyb3VwSURzKCk7Ci0gICAgYm9vbGVhbiBwYXJhbXNWYWxpZCA9IHRydWU7Ci0gICAgaWYgKGluc3RhbmNlRG9jdW1lbnRzICE9IG51bGwgJiYgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoID4gMCkgewotICAgICAgZ3JvdXBJRF8gPSBjcmVhdGVJbnN0YW5jZSgpOwotICAgICAgSVhTREZyYWdtZW50W10gZ3JvdXBNZW1iZXJGcmFncyA9IGdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSURfKTsKLSAgICAgIFN0cmluZ1tdIGdyb3VwTWVtYmVySURzT3JkZXIgPSBuZXcgU3RyaW5nW2dyb3VwTWVtYmVyRnJhZ3MubGVuZ3RoXTsKLSAgICAgIGludCBvcmRlckluZGV4ID0gMDsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgYm9vbGVhbiBwYXJhbXNBc3NpZ25lZCA9IGZhbHNlOwotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGdyb3VwTWVtYmVyRnJhZ3MubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICBpZiAoZ3JvdXBNZW1iZXJGcmFnc1tqXSAhPSBudWxsICYmIGdyb3VwTWVtYmVyRnJhZ3Nbal0uZ2V0TmFtZSgpLmVxdWFscyh0cmltUHJlZml4KGluc3RhbmNlRG9jdW1lbnRzW2ldLmdldFRhZ05hbWUoKSkpKSB7Ci0gICAgICAgICAgICBFbGVtZW50W10gY2hpbGRJbnN0YW5jZSA9IHtpbnN0YW5jZURvY3VtZW50c1tpXX07Ci0gICAgICAgICAgICBpZiAoIWdyb3VwTWVtYmVyRnJhZ3Nbal0uc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKGNoaWxkSW5zdGFuY2UpKQotICAgICAgICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgZ3JvdXBNZW1iZXJJRHNPcmRlcltvcmRlckluZGV4XSA9IGdyb3VwTWVtYmVyRnJhZ3Nbal0uZ2V0SUQoKTsKLSAgICAgICAgICAgIG9yZGVySW5kZXgrKzsKLSAgICAgICAgICAgIHBhcmFtc0Fzc2lnbmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGdyb3VwTWVtYmVyRnJhZ3Nbal0gPSBudWxsOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghcGFyYW1zQXNzaWduZWQpCi0gICAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgZ3JvdXBNZW1iZXJGcmFncy5sZW5ndGg7IGsrKykgewotICAgICAgICBpZiAoZ3JvdXBNZW1iZXJGcmFnc1trXSAhPSBudWxsKSB7Ci0gICAgICAgICAgZ3JvdXBNZW1iZXJJRHNPcmRlcltvcmRlckluZGV4XSA9IGdyb3VwTWVtYmVyRnJhZ3Nba10uZ2V0SUQoKTsKLSAgICAgICAgICBvcmRlckluZGV4Kys7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHNldEdyb3VwTWVtYmVySURzT3JkZXJpbmcoZ3JvdXBNZW1iZXJJRHNPcmRlcik7Ci0gICAgfQotICAgIHJldHVybiBwYXJhbXNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0R3JvdXBBbGxJbnN0YW5jZSgpIHsKLSAgICBpZiAoZ3JvdXBJRF8gPT0gbnVsbCkKLSAgICAgIGdyb3VwSURfID0gY3JlYXRlR3JvdXBJbnN0YW5jZSgpOwotICAgIHJldHVybiBncm91cElEXzsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgY3JlYXRlSW5zdGFuY2UoKSB7Ci0gICAgcmV0dXJuIGdldEdyb3VwQWxsSW5zdGFuY2UoKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHNldEdyb3VwTWVtYmVySURzT3JkZXJpbmcoU3RyaW5nW10gZ3JvdXBNZW1iZXJJRHMpIHsKLSAgICBpZiAoZ3JvdXBNZW1iZXJJRHMgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmdbXSBleGlzdGluZ0dyb3VwTWVtYmVySURzID0gZ2V0R3JvdXBNZW1iZXJJRHMoZ3JvdXBJRF8pOwotICAgIGlmIChleGlzdGluZ0dyb3VwTWVtYmVySURzLmxlbmd0aCAhPSBncm91cE1lbWJlcklEcy5sZW5ndGgpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgVmVjdG9yIGV4aXN0aW5nR3JvdXBNZW1iZXJJRHNWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleGlzdGluZ0dyb3VwTWVtYmVySURzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBleGlzdGluZ0dyb3VwTWVtYmVySURzVmVjdG9yLmFkZChleGlzdGluZ0dyb3VwTWVtYmVySURzW2ldKTsKLSAgICB9Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBncm91cE1lbWJlcklEcy5sZW5ndGg7IGorKykgewotICAgICAgaWYgKCFleGlzdGluZ0dyb3VwTWVtYmVySURzVmVjdG9yLnJlbW92ZShncm91cE1lbWJlcklEc1tqXSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKHNldEZyYWdtZW50c09yZGVyKGdyb3VwTWVtYmVySURzKSkgewotICAgICAgc2V0R3JvdXBNZW1iZXJJRHMoZ3JvdXBJRF8sIGdyb3VwTWVtYmVySURzKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBtb3ZlVXBHcm91cE1lbWJlcklEKFN0cmluZyBncm91cE1lbWJlcklEKSB7Ci0gICAgU3RyaW5nW10gZ3JvdXBNZW1iZXJJRHMgPSBnZXRHcm91cE1lbWJlcklEcyhncm91cElEXyk7Ci0gICAgaWYgKGdyb3VwTWVtYmVySUQuZXF1YWxzKGdyb3VwTWVtYmVySURzWzBdKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKGludCBpID0gMTsgaSA8IGdyb3VwTWVtYmVySURzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBpZiAoZ3JvdXBNZW1iZXJJRC5lcXVhbHMoZ3JvdXBNZW1iZXJJRHNbaV0pKSB7Ci0gICAgICAgIGdyb3VwTWVtYmVySURzW2ldID0gZ3JvdXBNZW1iZXJJRHNbaSAtIDFdOwotICAgICAgICBncm91cE1lbWJlcklEc1tpIC0gMV0gPSBncm91cE1lbWJlcklEOwotICAgICAgICBpZiAoc2V0RnJhZ21lbnRzT3JkZXIoZ3JvdXBNZW1iZXJJRHMpKSB7Ci0gICAgICAgICAgc2V0R3JvdXBNZW1iZXJJRHMoZ3JvdXBJRF8sIGdyb3VwTWVtYmVySURzKTsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBtb3ZlRG93bkdyb3VwTWVtYmVySUQoU3RyaW5nIGdyb3VwTWVtYmVySUQpIHsKLSAgICBTdHJpbmdbXSBncm91cE1lbWJlcklEcyA9IGdldEdyb3VwTWVtYmVySURzKGdyb3VwSURfKTsKLSAgICBpZiAoZ3JvdXBNZW1iZXJJRC5lcXVhbHMoZ3JvdXBNZW1iZXJJRHNbZ3JvdXBNZW1iZXJJRHMubGVuZ3RoIC0gMV0pKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ3JvdXBNZW1iZXJJRHMubGVuZ3RoIC0gMTsgaSsrKSB7Ci0gICAgICBpZiAoZ3JvdXBNZW1iZXJJRC5lcXVhbHMoZ3JvdXBNZW1iZXJJRHNbaV0pKSB7Ci0gICAgICAgIGdyb3VwTWVtYmVySURzW2ldID0gZ3JvdXBNZW1iZXJJRHNbaSArIDFdOwotICAgICAgICBncm91cE1lbWJlcklEc1tpICsgMV0gPSBncm91cE1lbWJlcklEOwotICAgICAgICBpZiAoc2V0RnJhZ21lbnRzT3JkZXIoZ3JvdXBNZW1iZXJJRHMpKSB7Ci0gICAgICAgICAgc2V0R3JvdXBNZW1iZXJJRHMoZ3JvdXBJRF8sIGdyb3VwTWVtYmVySURzKTsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0SW5mb0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTREdyb3VwUkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RHcm91cEFsbFdGcmFnbWVudEpTUC5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cENob2ljZUZpeEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cENob2ljZUZpeEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMjRlMzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNER3JvdXBDaG9pY2VGaXhGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNETW9kZWxHcm91cDsKLQotcHVibGljIGNsYXNzIFhTREdyb3VwQ2hvaWNlRml4RnJhZ21lbnQgZXh0ZW5kcyBYU0RHcm91cENob2ljZUZyYWdtZW50IHsKLSAgcHVibGljIFhTREdyb3VwQ2hvaWNlRml4RnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyLCBYU0RNb2RlbEdyb3VwIHhzZE1vZGVsR3JvdXApIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnLCBjb250cm9sbGVyLCB4c2RNb2RlbEdyb3VwKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5mb3JtYXRpb25GcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZEZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNER3JvdXBDaG9pY2VSRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3JpdGVGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTREdyb3VwQ2hvaWNlRml4V0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTREdyb3VwQ2hvaWNlRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTREdyb3VwQ2hvaWNlRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNhZGYwOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cENob2ljZUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5GcmFnbWVudENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREdyb3VwQ2hvaWNlRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE1vZGVsR3JvdXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFBhcnRpY2xlOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBYU0RHcm91cENob2ljZUZyYWdtZW50IGV4dGVuZHMgWFNER3JvdXBGcmFnbWVudCBpbXBsZW1lbnRzIElYU0RHcm91cENob2ljZUZyYWdtZW50IHsKLSAgcHJpdmF0ZSBYU0RQYXJ0aWNsZVtdIGNob2ljZXNfOwotICBwcml2YXRlIEhhc2h0YWJsZSBjaG9pY2VJbmRleGVzXzsKLQotICBwdWJsaWMgWFNER3JvdXBDaG9pY2VGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGNvbnRyb2xsZXIsIFhTRE1vZGVsR3JvdXAgeHNkTW9kZWxHcm91cCkgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcsIGNvbnRyb2xsZXIsIHhzZE1vZGVsR3JvdXApOwotICAgIGNob2ljZXNfID0gbnVsbDsKLSAgICBjaG9pY2VJbmRleGVzXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24gewotICAgIHN1cGVyLnByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMocGFyc2VyKTsKLSAgICBTdHJpbmdbXSBncm91cElEcyA9IGdldEdyb3VwSURzKCk7Ci0gICAgY2hvaWNlSW5kZXhlc18uY2xlYXIoKTsKLSAgICBib29sZWFuIHBhcmFtc1ZhbGlkID0gdHJ1ZTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGdyb3VwSURzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBTdHJpbmcgc2VsZWN0ZWRDaG9pY2VGcmFnSUQgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKGdyb3VwSURzW2ldKTsKLSAgICAgIGludCBjaG9pY2VJbmRleCA9IDA7Ci0gICAgICBJWFNERnJhZ21lbnRbXSBjaG9pY2VGcmFncyA9IGdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSURzW2ldKTsKLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY2hvaWNlRnJhZ3MubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgaWYgKGNob2ljZUZyYWdzW2pdLmdldElEKCkuZXF1YWxzKHNlbGVjdGVkQ2hvaWNlRnJhZ0lEKSkgewotICAgICAgICAgIGNob2ljZUluZGV4ID0gajsKLSAgICAgICAgICBwYXJhbXNWYWxpZCA9IChwYXJhbXNWYWxpZCAmJiBjaG9pY2VGcmFnc1tqXS52YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgc2V0Q2hvaWNlSW5kZXgoZ3JvdXBJRHNbaV0sIGNob2ljZUluZGV4KTsKLSAgICB9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykgewotICAgIHJlbW92ZUdyb3VwSURzKCk7Ci0gICAgY2hvaWNlSW5kZXhlc18uY2xlYXIoKTsKLSAgICBib29sZWFuIHBhcmFtc1ZhbGlkID0gdHJ1ZTsKLSAgICBpZiAoaW5zdGFuY2VEb2N1bWVudHMgIT0gbnVsbCkgewotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgICBTdHJpbmcgZ3JvdXBJRCA9IGNyZWF0ZUdyb3VwQ2hvaWNlSW5zdGFuY2UoMCk7Ci0gICAgICAgIElYU0RGcmFnbWVudFtdIGNob2ljZUZyYWdzID0gZ2V0R3JvdXBNZW1iZXJGcmFnbWVudHMoZ3JvdXBJRCk7Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY2hvaWNlRnJhZ3MubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICBpZiAoY2hvaWNlRnJhZ3Nbal0uZ2V0TmFtZSgpLmVxdWFscyh0cmltUHJlZml4KGluc3RhbmNlRG9jdW1lbnRzW2ldLmdldFRhZ05hbWUoKSkpKSB7Ci0gICAgICAgICAgICBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBjaG9pY2VGcmFnc1tqXS5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotICAgICAgICAgICAgRWxlbWVudFtdIGNoaWxkSW5zdGFuY2VzID0gZ2V0SW5zdGFuY2VEb2N1bWVudFBhcnRpdGlvbihpbnN0YW5jZURvY3VtZW50cywgaSwgeHNkQ29uZmlnLmdldE1pbk9jY3VycygpLCB4c2RDb25maWcuZ2V0TWF4T2NjdXJzKCkpOwotICAgICAgICAgICAgaWYgKCFjaG9pY2VGcmFnc1tqXS5zZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMoY2hpbGRJbnN0YW5jZXMpKQotICAgICAgICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgc2V0Q2hvaWNlSW5kZXgoZ3JvdXBJRCwgaik7Ci0gICAgICAgICAgICBpZiAoY2hpbGRJbnN0YW5jZXMubGVuZ3RoID4gMCkKLSAgICAgICAgICAgICAgaSA9IGkgKyBjaGlsZEluc3RhbmNlcy5sZW5ndGggLSAxOyAvLyBtaW51cyAxIGJlY2F1c2UgdGhlcmUncyBhbiBpKysgaW4gdGhlIG91dGVyIGZvciBsb29wCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHJpdmF0ZSBFbGVtZW50W10gZ2V0SW5zdGFuY2VEb2N1bWVudFBhcnRpdGlvbihFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMsIGludCBzdGFydCwgaW50IG1pblNpemUsIGludCBtYXhTaXplKSB7Ci0gICAgU3RyaW5nIHRhZ05hbWUgPSBpbnN0YW5jZURvY3VtZW50c1tzdGFydF0uZ2V0VGFnTmFtZSgpOwotICAgIGludCBzaXplID0gMTsKLSAgICBmb3IgKGludCBpID0gc3RhcnQgKyAxOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIGlmIChpbnN0YW5jZURvY3VtZW50c1tpXS5nZXRUYWdOYW1lKCkuZXF1YWxzKHRhZ05hbWUpKQotICAgICAgICBzaXplKys7Ci0gICAgICBlbHNlCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAobWF4U2l6ZSAhPSBGcmFnbWVudENvbnN0YW50cy5VTkJPVU5ERUQgJiYgc2l6ZSA+IG1heFNpemUpIHsKLSAgICAgIHNpemUgPSBzaXplIC0gbWluU2l6ZTsKLSAgICAgIGlmIChzaXplID4gbWF4U2l6ZSkKLSAgICAgICAgc2l6ZSA9IG1heFNpemU7Ci0gICAgfQotICAgIEVsZW1lbnRbXSBzdWJzZXQgPSBuZXcgRWxlbWVudFtzaXplXTsKLSAgICBmb3IgKGludCBqID0gMDsgaiA8IHN1YnNldC5sZW5ndGg7IGorKykgewotICAgICAgc3Vic2V0W2pdID0gaW5zdGFuY2VEb2N1bWVudHNbc3RhcnQgKyBqXTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1YnNldDsKLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50W10gZ2VuSW5zdGFuY2VEb2N1bWVudHNGcm9tUGFyYW1ldGVyVmFsdWVzKGJvb2xlYW4gZ2VuWFNJVHlwZSwgSGFzaHRhYmxlIG5hbWVzcGFjZVRhYmxlLCBEb2N1bWVudCBkb2MpIHsKLSAgICBWZWN0b3IgaW5zdGFuY2VEb2N1bWVudHNDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgIFN0cmluZ1tdIGdyb3VwSURzID0gZ2V0R3JvdXBJRHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGdyb3VwSURzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBJWFNERnJhZ21lbnRbXSBjaG9pY2VGcmFncyA9IGdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSURzW2ldKTsKLSAgICAgIGludCBjaG9pY2VJbmRleCA9IGdldENob2ljZUluZGV4KGdyb3VwSURzW2ldKTsKLSAgICAgIEVsZW1lbnRbXSBjaG9pY2VGcmFnSW5zdGFuY2VzID0gY2hvaWNlRnJhZ3NbY2hvaWNlSW5kZXhdLmdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyhnZW5YU0lUeXBlLCBuYW1lc3BhY2VUYWJsZSwgZG9jKTsKLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY2hvaWNlRnJhZ0luc3RhbmNlcy5sZW5ndGg7IGorKykgewotICAgICAgICBpbnN0YW5jZURvY3VtZW50c0NvcHkuYWRkKGNob2ljZUZyYWdJbnN0YW5jZXNbal0pOwotICAgICAgfQotICAgIH0KLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFtpbnN0YW5jZURvY3VtZW50c0NvcHkuc2l6ZSgpXTsKLSAgICBpbnN0YW5jZURvY3VtZW50c0NvcHkuY29weUludG8oaW5zdGFuY2VEb2N1bWVudHMpOwotICAgIHJldHVybiBpbnN0YW5jZURvY3VtZW50czsKLSAgfQotCi0gIHB1YmxpYyBYU0RQYXJ0aWNsZVtdIGdldENob2ljZXMoKSB7Ci0gICAgaWYgKGNob2ljZXNfID09IG51bGwpIHsKLSAgICAgIEVMaXN0IHBhcnRpY2xlcyA9IGdldFhTRE1vZGVsR3JvdXAoKS5nZXRQYXJ0aWNsZXMoKTsKLSAgICAgIGNob2ljZXNfID0gbmV3IFhTRFBhcnRpY2xlW3BhcnRpY2xlcy5zaXplKCldOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaG9pY2VzXy5sZW5ndGg7IGkrKykgewotICAgICAgICBjaG9pY2VzX1tpXSA9IChYU0RQYXJ0aWNsZSlwYXJ0aWNsZXMuZ2V0KGkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gY2hvaWNlc187Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGNyZWF0ZUdyb3VwQ2hvaWNlSW5zdGFuY2UoaW50IGNob2ljZUluZGV4KSB7Ci0gICAgZ2V0Q2hvaWNlcygpOwotICAgIGlmIChjaG9pY2VJbmRleCA8IDAgfHwgY2hvaWNlSW5kZXggPiBjaG9pY2VzXy5sZW5ndGggLSAxKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgU3RyaW5nIGdyb3VwSUQgPSBjcmVhdGVHcm91cEluc3RhbmNlKCk7Ci0gICAgc2V0Q2hvaWNlSW5kZXgoZ3JvdXBJRCwgY2hvaWNlSW5kZXgpOwotICAgIHJldHVybiBncm91cElEOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBjcmVhdGVJbnN0YW5jZSgpIHsKLSAgICByZXR1cm4gY3JlYXRlR3JvdXBDaG9pY2VJbnN0YW5jZSgwKTsKLSAgfQotCi0gIHB1YmxpYyBpbnQgZ2V0Q2hvaWNlSW5kZXgoU3RyaW5nIGdyb3VwSUQpIHsKLSAgICBJbnRlZ2VyIGluZGV4ID0gKEludGVnZXIpY2hvaWNlSW5kZXhlc18uZ2V0KGdyb3VwSUQpOwotICAgIGlmIChpbmRleCAhPSBudWxsKQotICAgICAgcmV0dXJuIGluZGV4LmludFZhbHVlKCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRDaG9pY2VJbmRleChTdHJpbmcgZ3JvdXBJRCwgaW50IGNob2ljZUluZGV4KSB7Ci0gICAgY2hvaWNlSW5kZXhlc18ucHV0KGdyb3VwSUQsIG5ldyBJbnRlZ2VyKGNob2ljZUluZGV4KSk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpCi0gIHsKLSAgICBTdHJpbmdbXSBncm91cElEcyA9IGdldEdyb3VwSURzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBncm91cElEcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpbnQgc2VsZWN0aW9uSW5kZXggPSBnZXRDaG9pY2VJbmRleChncm91cElEc1tpXSk7Ci0gICAgICBpZiAoIWdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSURzW2ldKVtzZWxlY3Rpb25JbmRleF0udmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNER3JvdXBDaG9pY2VSYW5nZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cENob2ljZVJhbmdlRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQwZTE0ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cENob2ljZVJhbmdlRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE1vZGVsR3JvdXA7Ci0KLXB1YmxpYyBjbGFzcyBYU0RHcm91cENob2ljZVJhbmdlRnJhZ21lbnQgZXh0ZW5kcyBYU0RHcm91cENob2ljZUZyYWdtZW50IHsKLSAgcHVibGljIFhTREdyb3VwQ2hvaWNlUmFuZ2VGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGNvbnRyb2xsZXIsIFhTRE1vZGVsR3JvdXAgeHNkTW9kZWxHcm91cCkgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcsIGNvbnRyb2xsZXIsIHhzZE1vZGVsR3JvdXApOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJbmZvcm1hdGlvbkZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdEluZm9GcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRSZWFkRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RHcm91cENob2ljZVJGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXcml0ZUZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNER3JvdXBDaG9pY2VSYW5nZVdGcmFnbWVudEpTUC5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkYTQxMzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNER3JvdXBGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjY1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5GcmFnbWVudENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREdyb3VwRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRENvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNETW9kZWxHcm91cDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEUGFydGljbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFBhcnRpY2xlQ29udGVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEV2lsZGNhcmQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFhTREdyb3VwRnJhZ21lbnQgZXh0ZW5kcyBYU0RNYXBGcmFnbWVudCBpbXBsZW1lbnRzIElYU0RHcm91cEZyYWdtZW50IHsKLSAgcHJpdmF0ZSBYU0RNb2RlbEdyb3VwIHhzZE1vZGVsR3JvdXBfOwotICBwcml2YXRlIFZlY3RvciBncm91cElEc09yZGVyXzsKLSAgcHJpdmF0ZSBIYXNodGFibGUgZ3JvdXBJRHNfOwotICAKLSAgcHVibGljIFhTREdyb3VwRnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyLCBYU0RNb2RlbEdyb3VwIHhzZE1vZGVsR3JvdXApIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnLCBjb250cm9sbGVyKTsKLSAgICB4c2RNb2RlbEdyb3VwXyA9IHhzZE1vZGVsR3JvdXA7Ci0gICAgZ3JvdXBJRHNPcmRlcl8gPSBuZXcgVmVjdG9yKCk7Ci0gICAgZ3JvdXBJRHNfID0gbmV3IEhhc2h0YWJsZSgpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc1BhcmFtZXRlclZhbHVlcyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbiB7Ci0gICAgYm9vbGVhbiB2YWx1ZXNWYWxpZCA9IHRydWU7Ci0gICAgU3RyaW5nW10gcGFyYW1zID0gcGFyc2VyLmdldFBhcmFtZXRlclZhbHVlcyhnZXRJRCgpKTsKLSAgICBWZWN0b3IgZnJhZ3MgPSBuZXcgVmVjdG9yKCk7Ci0gICAgVmVjdG9yIGdyb3VwSURzT3JkZXJDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgIEhhc2h0YWJsZSBncm91cElEc0NvcHkgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IHBhcmFtcyAhPSBudWxsICYmIGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHsKLSAgICAgIGlmIChwYXJhbXNbaV0gIT0gbnVsbCkgewotICAgICAgICBncm91cElEc09yZGVyQ29weS5hZGQocGFyYW1zW2ldKTsKLSAgICAgICAgZ3JvdXBJRHNDb3B5LnB1dChwYXJhbXNbaV0sIGdldEdyb3VwTWVtYmVySURzKHBhcmFtc1tpXSkpOwotICAgICAgICBJWFNERnJhZ21lbnRbXSBncm91cE1lbWJlckZyYWdtZW50cyA9IGdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKHBhcmFtc1tpXSk7Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZ3JvdXBNZW1iZXJGcmFnbWVudHMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICBpZiAoZ3JvdXBNZW1iZXJGcmFnbWVudHNbal0gIT0gbnVsbCkgewotICAgICAgICAgICAgZnJhZ3MuYWRkKGdyb3VwTWVtYmVyRnJhZ21lbnRzW2pdKTsKLSAgICAgICAgICAgIGlmICghZ3JvdXBNZW1iZXJGcmFnbWVudHNbal0ucHJvY2Vzc1BhcmFtZXRlclZhbHVlcyhwYXJzZXIpKQotICAgICAgICAgICAgICB2YWx1ZXNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBncm91cElEc09yZGVyXyA9IGdyb3VwSURzT3JkZXJDb3B5OwotICAgIGdyb3VwSURzXyA9IGdyb3VwSURzQ29weTsKLSAgICByZW1vdmVBbGxGcmFnbWVudHMoKTsKLSAgICBhZGRGcmFnbWVudHMoZnJhZ3MpOwotICAgIHJldHVybiB2YWx1ZXNWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMpIHsKLSAgICByZW1vdmVHcm91cElEcygpOwotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSB0cnVlOwotICAgIFN0cmluZyBwcmV2R3JvdXBJRCA9IG51bGw7Ci0gICAgU3RyaW5nIGN1cnJHcm91cElEID0gbnVsbDsKLSAgICBpbnQgZ3JvdXBNZW1iZXJJbmRleCA9IDA7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50cy5sZW5ndGg7ICkgewotICAgICAgaWYgKGN1cnJHcm91cElEID09IG51bGwpIHsKLSAgICAgICAgU3RyaW5nIG5ld0dyb3VwSUQgPSBjcmVhdGVJbnN0YW5jZSgpOwotICAgICAgICBwcmV2R3JvdXBJRCA9IGN1cnJHcm91cElEOwotICAgICAgICBjdXJyR3JvdXBJRCA9IG5ld0dyb3VwSUQ7Ci0gICAgICB9Ci0gICAgICBFbGVtZW50W10gaW5zdGFuY2VQYXJ0aXRpb24gPSBudWxsOwotICAgICAgaW50IGogPSBncm91cE1lbWJlckluZGV4OwotICAgICAgYm9vbGVhbiBwYXJhbXNBc3NpZ25lZCA9IGZhbHNlOwotICAgICAgaW50IHdpbGRjYXJkRnJhZ0luZGV4ID0gLTE7Ci0gICAgICBkbyB7Ci0gICAgICAgIElYU0RGcmFnbWVudFtdIGdyb3VwTWVtYmVyRnJhZ3MgPSBnZXRHcm91cE1lbWJlckZyYWdtZW50cyhjdXJyR3JvdXBJRCk7Ci0gICAgICAgIFhTRENvbXBvbmVudCB4c2RDb21wb25lbnQgPSBncm91cE1lbWJlckZyYWdzW2pdLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCkuZ2V0WFNEQ29tcG9uZW50KCk7Ci0gICAgICAgIGlmICh4c2RDb21wb25lbnQgaW5zdGFuY2VvZiBYU0RXaWxkY2FyZCkgewotICAgICAgICAgIGlmICh3aWxkY2FyZEZyYWdJbmRleCA8IDApCi0gICAgICAgICAgICB3aWxkY2FyZEZyYWdJbmRleCA9IGo7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZ3JvdXBNZW1iZXJGcmFnc1tqXS5nZXROYW1lKCkuZXF1YWxzKHRyaW1QcmVmaXgoaW5zdGFuY2VEb2N1bWVudHNbaV0uZ2V0VGFnTmFtZSgpKSkpIHsKLSAgICAgICAgICBpbnN0YW5jZVBhcnRpdGlvbiA9IGdldEluc3RhbmNlRG9jdW1lbnRQYXJ0aXRpb24oaW5zdGFuY2VEb2N1bWVudHMsIGksIGdyb3VwTWVtYmVyRnJhZ3Nbal0uZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKS5nZXRNYXhPY2N1cnMoKSk7Ci0gICAgICAgICAgaWYgKCFncm91cE1lbWJlckZyYWdzW2pdLnNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhpbnN0YW5jZVBhcnRpdGlvbikpCi0gICAgICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgIHBhcmFtc0Fzc2lnbmVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGdyb3VwTWVtYmVyRnJhZ3Nbal0gaW5zdGFuY2VvZiBYU0RHcm91cEZyYWdtZW50KSB7Ci0gICAgICAgIAlncm91cE1lbWJlckZyYWdzW2pdLnNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhpbnN0YW5jZURvY3VtZW50cyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChqID09IGdyb3VwTWVtYmVyRnJhZ3MubGVuZ3RoIC0gMSkgewotICAgICAgICAgIGogPSAwOwotICAgICAgICAgIFN0cmluZyBuZXdHcm91cElEOwotICAgICAgICAgIGlmICghcGFyYW1zQXNzaWduZWQpCi0gICAgICAgICAgICBuZXdHcm91cElEID0gY3JlYXRlSW5zdGFuY2UoKTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXdHcm91cElEID0gbnVsbDsKLSAgICAgICAgICBwcmV2R3JvdXBJRCA9IGN1cnJHcm91cElEOwotICAgICAgICAgIGN1cnJHcm91cElEID0gbmV3R3JvdXBJRDsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgaisrOwotICAgICAgfSB3aGlsZSAoIXBhcmFtc0Fzc2lnbmVkICYmIGogIT0gZ3JvdXBNZW1iZXJJbmRleCk7Ci0gICAgICBncm91cE1lbWJlckluZGV4ID0gajsKLSAgICAgIGlmICghcGFyYW1zQXNzaWduZWQpIHsKLSAgICAgICAgaW5zdGFuY2VQYXJ0aXRpb24gPSBnZXRJbnN0YW5jZURvY3VtZW50UGFydGl0aW9uKGluc3RhbmNlRG9jdW1lbnRzLCBpLCBGcmFnbWVudENvbnN0YW50cy5VTkJPVU5ERUQpOwotICAgICAgICBpZiAod2lsZGNhcmRGcmFnSW5kZXggPj0gMCkgewotICAgICAgICAgIGlmICh3aWxkY2FyZEZyYWdJbmRleCA+PSBncm91cE1lbWJlckluZGV4KSB7Ci0gICAgICAgICAgICByZW1vdmVHcm91cElEKGN1cnJHcm91cElEKTsKLSAgICAgICAgICAgIGN1cnJHcm91cElEID0gcHJldkdyb3VwSUQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIGdyb3VwTWVtYmVySW5kZXggPSB3aWxkY2FyZEZyYWdJbmRleDsKLSAgICAgICAgICBJWFNERnJhZ21lbnRbXSBncm91cE1lbWJlckZyYWdzID0gZ2V0R3JvdXBNZW1iZXJGcmFnbWVudHMoY3Vyckdyb3VwSUQpOwotICAgICAgICAgIGlmICghZ3JvdXBNZW1iZXJGcmFnc1t3aWxkY2FyZEZyYWdJbmRleF0uc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKGluc3RhbmNlUGFydGl0aW9uKSkKLSAgICAgICAgICAgIHBhcmFtc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgcGFyYW1zQXNzaWduZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJHcm91cElEICE9IG51bGwgJiYgKHByZXZHcm91cElEID09IG51bGwgfHwgIWN1cnJHcm91cElELmVxdWFscyhwcmV2R3JvdXBJRCkpKSB7Ci0gICAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICByZW1vdmVHcm91cElEKGN1cnJHcm91cElEKTsKLSAgICAgICAgICBjdXJyR3JvdXBJRCA9IHByZXZHcm91cElEOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpID0gaSArIGluc3RhbmNlUGFydGl0aW9uLmxlbmd0aDsKLSAgICB9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHJpdmF0ZSBFbGVtZW50W10gZ2V0SW5zdGFuY2VEb2N1bWVudFBhcnRpdGlvbihFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMsIGludCBzdGFydCwgaW50IG1heFNpemUpIHsKLSAgICBTdHJpbmcgdGFnTmFtZSA9IGluc3RhbmNlRG9jdW1lbnRzW3N0YXJ0XS5nZXRUYWdOYW1lKCk7Ci0gICAgaW50IHNpemUgPSAxOwotICAgIGZvciAoaW50IGkgPSBzdGFydCArIDE7IGkgPCBpbnN0YW5jZURvY3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgaWYgKG1heFNpemUgIT0gRnJhZ21lbnRDb25zdGFudHMuVU5CT1VOREVEICYmIHNpemUgPj0gbWF4U2l6ZSkKLSAgICAgICAgYnJlYWs7Ci0gICAgICBlbHNlIGlmIChpbnN0YW5jZURvY3VtZW50c1tpXS5nZXRUYWdOYW1lKCkuZXF1YWxzKHRhZ05hbWUpKQotICAgICAgICBzaXplKys7Ci0gICAgICBlbHNlCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBFbGVtZW50W10gc3Vic2V0ID0gbmV3IEVsZW1lbnRbc2l6ZV07Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBzdWJzZXQubGVuZ3RoOyBqKyspIHsKLSAgICAgIHN1YnNldFtqXSA9IGluc3RhbmNlRG9jdW1lbnRzW3N0YXJ0ICsgal07Ci0gICAgfQotICAgIHJldHVybiBzdWJzZXQ7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudFtdIGdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyhib29sZWFuIGdlblhTSVR5cGUsIEhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSwgRG9jdW1lbnQgZG9jKSB7Ci0gICAgSVhTREZyYWdtZW50W10gZ3JvdXBNZW1iZXJGcmFnbWVudHMgPSBnZXRBbGxGcmFnbWVudHMoKTsKLSAgICBWZWN0b3IgaW5zdGFuY2VEb2N1bWVudHNDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ3JvdXBNZW1iZXJGcmFnbWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIEVsZW1lbnRbXSBmcmFnbWVudEluc3RhbmNlcyA9IGdyb3VwTWVtYmVyRnJhZ21lbnRzW2ldLmdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyhnZW5YU0lUeXBlLCBuYW1lc3BhY2VUYWJsZSwgZG9jKTsKLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZnJhZ21lbnRJbnN0YW5jZXMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgaW5zdGFuY2VEb2N1bWVudHNDb3B5LmFkZChmcmFnbWVudEluc3RhbmNlc1tqXSk7Ci0gICAgICB9Ci0gICAgfQotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cyA9IG5ldyBFbGVtZW50W2luc3RhbmNlRG9jdW1lbnRzQ29weS5zaXplKCldOwotICAgIGZvciAoaW50IGsgPSAwOyBrIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBrKyspIHsKLSAgICAgIGluc3RhbmNlRG9jdW1lbnRzW2tdID0gKEVsZW1lbnQpaW5zdGFuY2VEb2N1bWVudHNDb3B5LmdldChrKTsKLSAgICB9Ci0gICAgcmV0dXJuIGluc3RhbmNlRG9jdW1lbnRzOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0WFNETW9kZWxHcm91cChYU0RNb2RlbEdyb3VwIHhzZE1vZGVsR3JvdXApIHsKLSAgICB4c2RNb2RlbEdyb3VwXyA9IHhzZE1vZGVsR3JvdXA7Ci0gIH0KLQotICBwdWJsaWMgWFNETW9kZWxHcm91cCBnZXRYU0RNb2RlbEdyb3VwKCkgewotICAgIHJldHVybiB4c2RNb2RlbEdyb3VwXzsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRHcm91cElEcygpIHsKLSAgICBTdHJpbmdbXSBncm91cElEcyA9IG5ldyBTdHJpbmdbZ3JvdXBJRHNPcmRlcl8uc2l6ZSgpXTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGdyb3VwSURzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBncm91cElEc1tpXSA9IChTdHJpbmcpZ3JvdXBJRHNPcmRlcl8uZ2V0KGkpOwotICAgIH0KLSAgICByZXR1cm4gZ3JvdXBJRHM7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmVHcm91cElEcygpIHsKLSAgICByZW1vdmVBbGxGcmFnbWVudHMoKTsKLSAgICBncm91cElEc09yZGVyXy5jbGVhcigpOwotICAgIGdyb3VwSURzXy5jbGVhcigpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcmVtb3ZlR3JvdXBJRChTdHJpbmcgZ3JvdXBJRCkgewotICAgIFN0cmluZ1tdIG1lbWJlckZyYWdJRHMgPSBnZXRHcm91cE1lbWJlcklEcyhncm91cElEKTsKLSAgICByZW1vdmVGcmFnbWVudHMobWVtYmVyRnJhZ0lEcyk7Ci0gICAgZ3JvdXBJRHNPcmRlcl8ucmVtb3ZlKGdyb3VwSUQpOwotICAgIGdyb3VwSURzXy5yZW1vdmUoZ3JvdXBJRCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBzZXRHcm91cE1lbWJlcklEcyhTdHJpbmcgZ3JvdXBJRCwgU3RyaW5nW10gZ3JvdXBNZW1iZXJJRHMpIHsKLSAgICBpZiAoZ3JvdXBJRCAhPSBudWxsKSB7Ci0gICAgICBpZiAoIWdyb3VwSURzT3JkZXJfLmNvbnRhaW5zKGdyb3VwSUQpKQotICAgICAgICBncm91cElEc09yZGVyXy5hZGQoZ3JvdXBJRCk7Ci0gICAgICBpZiAoZ3JvdXBNZW1iZXJJRHMgIT0gbnVsbCkKLSAgICAgICAgZ3JvdXBJRHNfLnB1dChncm91cElELCBncm91cE1lbWJlcklEcyk7Ci0gICAgICBlbHNlCi0gICAgICAgIGdyb3VwSURzXy5wdXQoZ3JvdXBJRCwgbmV3IFN0cmluZ1swXSk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgc2V0R3JvdXBNZW1iZXJGcmFnbWVudHMoU3RyaW5nIGdyb3VwSUQsIElYU0RGcmFnbWVudFtdIGdyb3VwTWVtYmVyRnJhZ21lbnRzKSB7Ci0gICAgYWRkRnJhZ21lbnRzKGdyb3VwTWVtYmVyRnJhZ21lbnRzKTsKLSAgICBTdHJpbmdbXSBpZHMgPSBuZXcgU3RyaW5nW2dyb3VwTWVtYmVyRnJhZ21lbnRzLmxlbmd0aF07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIGlkc1tpXSA9IGdyb3VwTWVtYmVyRnJhZ21lbnRzW2ldLmdldElEKCk7Ci0gICAgfQotICAgIHNldEdyb3VwTWVtYmVySURzKGdyb3VwSUQsIGlkcyk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nW10gZ2V0R3JvdXBNZW1iZXJJRHMoU3RyaW5nIGdyb3VwSUQpIHsKLSAgICBpZiAoZ3JvdXBJRCAhPSBudWxsKSB7Ci0gICAgICBTdHJpbmdbXSBncm91cE1lbWJlcklEcyA9IChTdHJpbmdbXSlncm91cElEc18uZ2V0KGdyb3VwSUQpOwotICAgICAgaWYgKGdyb3VwTWVtYmVySURzICE9IG51bGwpCi0gICAgICAgIHJldHVybiBncm91cE1lbWJlcklEczsKLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBTdHJpbmdbMF07Ci0gIH0KLQotICBwdWJsaWMgSVhTREZyYWdtZW50W10gZ2V0R3JvdXBNZW1iZXJGcmFnbWVudHMoU3RyaW5nIGdyb3VwSUQpIHsKLSAgICBTdHJpbmdbXSBncm91cE1lbWJlcklEcyA9IGdldEdyb3VwTWVtYmVySURzKGdyb3VwSUQpOwotICAgIElYU0RGcmFnbWVudFtdIGdyb3VwTWVtYmVyRnJhZ21lbnRzID0gbmV3IElYU0RGcmFnbWVudFtncm91cE1lbWJlcklEcy5sZW5ndGhdOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ3JvdXBNZW1iZXJGcmFnbWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIGdyb3VwTWVtYmVyRnJhZ21lbnRzW2ldID0gZ2V0RnJhZ21lbnQoZ3JvdXBNZW1iZXJJRHNbaV0pOwotICAgIH0KLSAgICByZXR1cm4gZ3JvdXBNZW1iZXJGcmFnbWVudHM7Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGNyZWF0ZUdyb3VwSW5zdGFuY2UoKSB7Ci0gICAgU3RyaW5nIGdyb3VwSUQgPSBnZW5JRCgpOwotICAgIEVMaXN0IHBhcnRpY2xlcyA9IGdldFhTRE1vZGVsR3JvdXAoKS5nZXRQYXJ0aWNsZXMoKTsKLSAgICBTdHJpbmdbXSBncm91cE1lbWJlcklEcyA9IG5ldyBTdHJpbmdbcGFydGljbGVzLnNpemUoKV07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJ0aWNsZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgIFhTRFBhcnRpY2xlIHhzZFBhcnRpY2xlID0gKFhTRFBhcnRpY2xlKXBhcnRpY2xlcy5nZXQoaSk7Ci0gICAgICBYU0RQYXJ0aWNsZUNvbnRlbnQgeHNkUGFydGljbGVDb250ZW50ID0geHNkUGFydGljbGUuZ2V0Q29udGVudCgpOwotICAgICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gdGhpc0NvbmZpZyA9IGdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0gICAgICBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBuZXcgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLSAgICAgIGlmICh4c2RQYXJ0aWNsZUNvbnRlbnQgaW5zdGFuY2VvZiBYU0RDb21wb25lbnQpCi0gICAgICAgIHhzZENvbmZpZy5zZXRYU0RDb21wb25lbnQoKFhTRENvbXBvbmVudCl4c2RQYXJ0aWNsZUNvbnRlbnQpOwotICAgICAgZWxzZQotICAgICAgICB4c2RDb25maWcuc2V0WFNEQ29tcG9uZW50KG51bGwpOwotICAgICAgeHNkQ29uZmlnLnNldFN0eWxlKHRoaXNDb25maWcuZ2V0U3R5bGUoKSk7Ci0gICAgICB4c2RDb25maWcuc2V0UGFydEVuY29kaW5nKHRoaXNDb25maWcuZ2V0UGFydEVuY29kaW5nKCkpOwotICAgICAgeHNkQ29uZmlnLnNldFdTRExQYXJ0TmFtZSh0aGlzQ29uZmlnLmdldFdTRExQYXJ0TmFtZSgpKTsKLSAgICAgIGdyb3VwTWVtYmVySURzW2ldID0gZ2VuSUQoKTsKLSAgICAgIGFkZEZyYWdtZW50KGdyb3VwTWVtYmVySURzW2ldLCBnZXRYU0RUb0ZyYWdtZW50Q29udHJvbGxlcigpLmdldEZyYWdtZW50KHhzZENvbmZpZywgZ3JvdXBNZW1iZXJJRHNbaV0sIGdyb3VwTWVtYmVySURzW2ldKSk7Ci0gICAgfQotICAgIHNldEdyb3VwTWVtYmVySURzKGdyb3VwSUQsIGdyb3VwTWVtYmVySURzKTsKLSAgICByZXR1cm4gZ3JvdXBJRDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNER3JvdXBTZXFGaXhGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNER3JvdXBTZXFGaXhGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjA3OTg0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTREdyb3VwU2VxRml4RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE1vZGVsR3JvdXA7Ci0KLXB1YmxpYyBjbGFzcyBYU0RHcm91cFNlcUZpeEZyYWdtZW50IGV4dGVuZHMgWFNER3JvdXBTZXFGcmFnbWVudCB7Ci0gIHB1YmxpYyBYU0RHcm91cFNlcUZpeEZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlciwgWFNETW9kZWxHcm91cCB4c2RNb2RlbEdyb3VwKSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgY29udHJvbGxlciwgeHNkTW9kZWxHcm91cCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0SW5mb0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTREdyb3VwUkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RHcm91cFNlcUZpeFdGcmFnbWVudEpTUC5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cFNlcUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RHcm91cFNlcUZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OWI2NjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNER3JvdXBTZXFGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNER3JvdXBTZXFGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNETW9kZWxHcm91cDsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFhTREdyb3VwU2VxRnJhZ21lbnQgZXh0ZW5kcyBYU0RHcm91cEZyYWdtZW50IGltcGxlbWVudHMgSVhTREdyb3VwU2VxRnJhZ21lbnQgewotICBwdWJsaWMgWFNER3JvdXBTZXFGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGNvbnRyb2xsZXIsIFhTRE1vZGVsR3JvdXAgeHNkTW9kZWxHcm91cCkgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcsIGNvbnRyb2xsZXIsIHhzZE1vZGVsR3JvdXApOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBjcmVhdGVHcm91cFNlcUluc3RhbmNlKCkgewotICAgIHJldHVybiBjcmVhdGVHcm91cEluc3RhbmNlKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGNyZWF0ZUluc3RhbmNlKCkgewotICAgIHJldHVybiBjcmVhdGVHcm91cFNlcUluc3RhbmNlKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTREdyb3VwU2VxUmFuZ2VGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNER3JvdXBTZXFSYW5nZUZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMmQ5NzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNER3JvdXBTZXFSYW5nZUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RNb2RlbEdyb3VwOwotCi1wdWJsaWMgY2xhc3MgWFNER3JvdXBTZXFSYW5nZUZyYWdtZW50IGV4dGVuZHMgWFNER3JvdXBTZXFGcmFnbWVudCB7Ci0gIHB1YmxpYyBYU0RHcm91cFNlcVJhbmdlRnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyLCBYU0RNb2RlbEdyb3VwIHhzZE1vZGVsR3JvdXApIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnLCBjb250cm9sbGVyLCB4c2RNb2RlbEdyb3VwKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5mb3JtYXRpb25GcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZEZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNER3JvdXBSRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3JpdGVGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTREdyb3VwU2VxUmFuZ2VXRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNETWFwRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRE1hcEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljM2EwOGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNETWFwRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RBdHRyaWJ1dGVGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNERnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTRE1hcEZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgWFNETWFwRnJhZ21lbnQgZXh0ZW5kcyBYU0RGcmFnbWVudCBpbXBsZW1lbnRzIElYU0RNYXBGcmFnbWVudCB7Ci0gIHByaXZhdGUgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlcl87Ci0gIHByaXZhdGUgVmVjdG9yIGZyYWdtZW50c09yZGVyXzsKLSAgcHJpdmF0ZSBIYXNodGFibGUgZnJhZ21lbnRzXzsKLSAgcHJpdmF0ZSBIYXNodGFibGUgYXR0cmlidXRlRnJhZ21lbnRzXzsKLQotICBwdWJsaWMgWFNETWFwRnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZyk7Ci0gICAgY29udHJvbGxlcl8gPSBjb250cm9sbGVyOwotICAgIGZyYWdtZW50c09yZGVyXyA9IG5ldyBWZWN0b3IoKTsKLSAgICBmcmFnbWVudHNfID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGF0dHJpYnV0ZUZyYWdtZW50c18gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzUGFyYW1ldGVyVmFsdWVzKE11bHRpcGFydEZvcm1EYXRhUGFyc2VyIHBhcnNlcikgdGhyb3dzIE11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uIHsKLSAgICBib29sZWFuIHZhbHVlc1ZhbGlkID0gdHJ1ZTsKLSAgICBTdHJpbmdbXSBwYXJhbXMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyVmFsdWVzKGdldElEKCkpOwotICAgIFZlY3RvciBmcmFncyA9IG5ldyBWZWN0b3IoKTsKLSAgICBWZWN0b3IgYXR0ZnJhZ3MgPSBuZXcgVmVjdG9yKCk7Ci0gICAgaWYgKHBhcmFtcyAhPSBudWxsKSB7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykgewotICAgICAgICBpZiAocGFyYW1zW2ldICE9IG51bGwpIHsKLSAgICAgICAgICBJWFNERnJhZ21lbnQgZnJhZyA9IGdldEZyYWdtZW50KHBhcmFtc1tpXSk7Ci0gICAgICAgICAgaWYgKGZyYWcgIT0gbnVsbCkgewotICAgICAgICAgICAgZnJhZ3MuYWRkKGZyYWcpOwotICAgICAgICAgICAgaWYgKCFmcmFnLnByb2Nlc3NQYXJhbWV0ZXJWYWx1ZXMocGFyc2VyKSkKLSAgICAgICAgICAgICAgdmFsdWVzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgCUlYU0RBdHRyaWJ1dGVGcmFnbWVudCBhZnJhZyA9IGdldEF0dHJpYnV0ZUZyYWdtZW50KHBhcmFtc1tpXSk7Ci0gICAgICAgICAgCWlmIChhZnJhZyAhPSBudWxsKSB7Ci0gICAgICAgICAgCSAgYXR0ZnJhZ3MuYWRkKGFmcmFnKTsKLSAgICAgICAgICAgICAgaWYgKCFhZnJhZy5wcm9jZXNzUGFyYW1ldGVyVmFsdWVzKHBhcnNlcikpCi0gICAgICAgICAgICAgICAgIHZhbHVlc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9ICAKLSAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgICAgCQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJlbW92ZUFsbEZyYWdtZW50cygpOwotICAgIHJlbW92ZUFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwotICAgIGFkZEF0dHJpYnV0ZUZyYWdtZW50cyhhdHRmcmFncyk7Ci0gICAgYWRkRnJhZ21lbnRzKGZyYWdzKTsKLSAgICByZXR1cm4gdmFsdWVzVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIHBhcmFtS2V5LCBTdHJpbmdbXSBwYXJhbXMpIHsKLSAgICBJWFNERnJhZ21lbnQgZnJhZyA9IGdldEZyYWdtZW50KHBhcmFtS2V5KTsKLSAgICBpZiAoZnJhZyAhPSBudWxsKQotICAgICAgZnJhZy5zZXRQYXJhbWV0ZXJWYWx1ZXMocGFyYW1LZXksIHBhcmFtcyk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nW10gZ2V0UGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbUtleSkgewotICAgIElYU0RGcmFnbWVudCBmcmFnID0gZ2V0RnJhZ21lbnQocGFyYW1LZXkpOwotICAgIHJldHVybiAoZnJhZyAhPSBudWxsKSA/IGZyYWcuZ2V0UGFyYW1ldGVyVmFsdWVzKHBhcmFtS2V5KSA6IG51bGw7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpIHsKLSAgICBJWFNERnJhZ21lbnRbXSBmcmFnbWVudHMgPSBnZXRBbGxGcmFnbWVudHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYWdtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgaWYgKCFmcmFnbWVudHNbaV0udmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlUGFyYW1ldGVyVmFsdWVzKFN0cmluZyBwYXJhbUtleSkgewotICAgIElYU0RGcmFnbWVudCBmcmFnID0gZ2V0RnJhZ21lbnQocGFyYW1LZXkpOwotICAgIHJldHVybiAoZnJhZyAhPSBudWxsKSA/IGZyYWcudmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZXMocGFyYW1LZXkpIDogdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlUGFyYW1ldGVyVmFsdWUoU3RyaW5nIHBhcmFtS2V5LCBpbnQgcGFyYW1JbmRleCkgewotICAgIElYU0RGcmFnbWVudCBmcmFnID0gZ2V0RnJhZ21lbnQocGFyYW1LZXkpOwotICAgIHJldHVybiAoZnJhZyAhPSBudWxsKSA/IGZyYWcudmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZShwYXJhbUtleSwgcGFyYW1JbmRleCkgOiB0cnVlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0WFNEVG9GcmFnbWVudENvbnRyb2xsZXIoWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgIGNvbnRyb2xsZXJfID0gY29udHJvbGxlcjsKLSAgfQotCi0gIHB1YmxpYyBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBnZXRYU0RUb0ZyYWdtZW50Q29udHJvbGxlcigpIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl87Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBhZGRGcmFnbWVudChTdHJpbmcgaWQsIElYU0RGcmFnbWVudCBmcmFnKSB7Ci0gICAgYWRkRnJhZ21lbnQoaWQsIGZyYWcsIHRydWUpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgYWRkRnJhZ21lbnRzKFN0cmluZ1tdIGlkLCBJWFNERnJhZ21lbnRbXSBmcmFncykgewotICAgIGFkZEZyYWdtZW50cyhpZCwgZnJhZ3MsIHRydWUpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgYWRkRnJhZ21lbnQoSVhTREZyYWdtZW50IGZyYWcpIHsKLSAgICBhZGRGcmFnbWVudChmcmFnLCB0cnVlKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGFkZEZyYWdtZW50cyhJWFNERnJhZ21lbnRbXSBmcmFncykgewotICAgIGFkZEZyYWdtZW50cyhmcmFncywgdHJ1ZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBhZGRGcmFnbWVudHMoVmVjdG9yIGZyYWdzKSB7Ci0gICAgYWRkRnJhZ21lbnRzKGZyYWdzLCB0cnVlKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGFkZEZyYWdtZW50KFN0cmluZyBpZCwgSVhTREZyYWdtZW50IGZyYWcsIGJvb2xlYW4gYWRkVG9Db250cm9sbGVyKSB7Ci0gICAgZnJhZ21lbnRzT3JkZXJfLmFkZChpZCk7Ci0gICAgZnJhZ21lbnRzXy5wdXQoaWQsIGZyYWcpOwotICAgIGNvbnRyb2xsZXJfLmFkZFRvQ2FjaGUoaWQsIGZyYWcpOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgdm9pZCBhZGRBdHRyaWJ1dGVGcmFnbWVudChTdHJpbmcgaWQsIElYU0RGcmFnbWVudCBmcmFnKSB7Ci0gICAgYXR0cmlidXRlRnJhZ21lbnRzXy5wdXQoaWQsIGZyYWcpOwotICAgIGNvbnRyb2xsZXJfLmFkZFRvQ2FjaGUoaWQsIGZyYWcpOwotICB9Ci0gIAotICBwdWJsaWMgSVhTREF0dHJpYnV0ZUZyYWdtZW50W10gZ2V0QWxsQXR0cmlidXRlRnJhZ21lbnRzKCkgewotICAgIElYU0RBdHRyaWJ1dGVGcmFnbWVudFtdIGZyYWdtZW50cyA9IG5ldyBYU0RBdHRyaWJ1dGVGcmFnbWVudFthdHRyaWJ1dGVGcmFnbWVudHNfLnNpemUoKV07Ci0gICAgSXRlcmF0b3IgaXQgPSBhdHRyaWJ1dGVGcmFnbWVudHNfLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgaW50IGkgPSAwOwotICAgIHdoaWxlKGl0Lmhhc05leHQoKSl7Ci0gICAgICBmcmFnbWVudHNbaV0gPSAoSVhTREF0dHJpYnV0ZUZyYWdtZW50KWl0Lm5leHQoKTsKLSAgICAgIGkrKzsgCi0gICAgfQotICAgIHJldHVybiBmcmFnbWVudHM7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCB2b2lkIGFkZEZyYWdtZW50cyhTdHJpbmdbXSBpZCwgSVhTREZyYWdtZW50W10gZnJhZ3MsIGJvb2xlYW4gYWRkVG9Db250cm9sbGVyKSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpZC5sZW5ndGggJiYgaSA8IGZyYWdzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBhZGRGcmFnbWVudChpZFtpXSwgZnJhZ3NbaV0sIGFkZFRvQ29udHJvbGxlcik7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgYWRkRnJhZ21lbnQoSVhTREZyYWdtZW50IGZyYWcsIGJvb2xlYW4gYWRkVG9Db250cm9sbGVyKSB7Ci0gICAgYWRkRnJhZ21lbnQoZnJhZy5nZXRJRCgpLCBmcmFnLCBhZGRUb0NvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgYWRkRnJhZ21lbnRzKElYU0RGcmFnbWVudFtdIGZyYWdzLCBib29sZWFuIGFkZFRvQ29udHJvbGxlcikgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhZ3MubGVuZ3RoOyBpKyspIHsKLSAgICAgIGFkZEZyYWdtZW50KGZyYWdzW2ldLmdldElEKCksIGZyYWdzW2ldLCBhZGRUb0NvbnRyb2xsZXIpOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGFkZEZyYWdtZW50cyhWZWN0b3IgZnJhZ3MsIGJvb2xlYW4gYWRkVG9Db250cm9sbGVyKSB7Ci0gICAgSXRlcmF0b3IgaXQgPSBmcmFncy5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgIE9iamVjdCBvYmogPSBpdC5uZXh0KCk7Ci0gICAgICBpZiAob2JqIGluc3RhbmNlb2YgSVhTREZyYWdtZW50KSB7Ci0gICAgICAgIElYU0RGcmFnbWVudCBmcmFnID0gKElYU0RGcmFnbWVudClvYmo7Ci0gICAgICAgIGFkZEZyYWdtZW50KGZyYWcuZ2V0SUQoKSwgZnJhZywgYWRkVG9Db250cm9sbGVyKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBhZGRBdHRyaWJ1dGVGcmFnbWVudHMoVmVjdG9yIGZyYWdzKSB7Ci0gICAgSXRlcmF0b3IgaXQgPSBmcmFncy5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgIE9iamVjdCBvYmogPSBpdC5uZXh0KCk7Ci0gICAgICBpZiAob2JqIGluc3RhbmNlb2YgSVhTREF0dHJpYnV0ZUZyYWdtZW50KSB7Ci0gICAgICAgIElYU0RBdHRyaWJ1dGVGcmFnbWVudCBmcmFnID0gKElYU0RBdHRyaWJ1dGVGcmFnbWVudClvYmo7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUZyYWdtZW50KGZyYWcuZ2V0SUQoKSwgZnJhZyk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nW10gZ2V0RnJhZ21lbnRzT3JkZXIoKSB7Ci0gICAgU3RyaW5nW10gZnJhZ21lbnRzT3JkZXIgPSBuZXcgU3RyaW5nW2ZyYWdtZW50c09yZGVyXy5zaXplKCldOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhZ21lbnRzT3JkZXIubGVuZ3RoOyBpKyspIHsKLSAgICAgIGZyYWdtZW50c09yZGVyW2ldID0gKFN0cmluZylmcmFnbWVudHNPcmRlcl8uZ2V0KGkpOwotICAgIH0KLSAgICByZXR1cm4gZnJhZ21lbnRzT3JkZXI7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBzZXRGcmFnbWVudHNPcmRlcihTdHJpbmdbXSBmcmFnbWVudHNPcmRlcikgewotICAgIGlmIChmcmFnbWVudHNPcmRlci5sZW5ndGggIT0gZnJhZ21lbnRzT3JkZXJfLnNpemUoKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBWZWN0b3IgZnJhZ21lbnRzT3JkZXJDb3B5ID0gbmV3IFZlY3RvcihmcmFnbWVudHNPcmRlcl8pOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhZ21lbnRzT3JkZXIubGVuZ3RoOyBpKyspIHsKLSAgICAgIGlmICghZnJhZ21lbnRzT3JkZXJDb3B5LnJlbW92ZShmcmFnbWVudHNPcmRlcltpXSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgZnJhZ21lbnRzT3JkZXJfLmNsZWFyKCk7Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBmcmFnbWVudHNPcmRlci5sZW5ndGg7IGorKykgewotICAgICAgZnJhZ21lbnRzT3JkZXJfLmFkZChmcmFnbWVudHNPcmRlcltqXSk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIElYU0RBdHRyaWJ1dGVGcmFnbWVudCBnZXRBdHRyaWJ1dGVGcmFnbWVudChTdHJpbmcgaWQpIHsKLSAgICByZXR1cm4gKElYU0RBdHRyaWJ1dGVGcmFnbWVudClhdHRyaWJ1dGVGcmFnbWVudHNfLmdldChpZCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJWFNERnJhZ21lbnQgZ2V0RnJhZ21lbnQoU3RyaW5nIGlkKSB7Ci0gICAgcmV0dXJuIChJWFNERnJhZ21lbnQpZnJhZ21lbnRzXy5nZXQoaWQpOwotICB9Ci0KLSAgcHVibGljIElYU0RGcmFnbWVudFtdIGdldEZyYWdtZW50cyhTdHJpbmdbXSBpZHMpIHsKLSAgICBJWFNERnJhZ21lbnRbXSBmcmFncyA9IG5ldyBJWFNERnJhZ21lbnRbaWRzLmxlbmd0aF07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFncy5sZW5ndGg7IGkrKykgewotICAgICAgZnJhZ3NbaV0gPSBnZXRGcmFnbWVudChpZHNbaV0pOwotICAgIH0KLSAgICByZXR1cm4gZnJhZ3M7Ci0gIH0KLQotICBwdWJsaWMgSVhTREZyYWdtZW50W10gZ2V0QWxsRnJhZ21lbnRzKCkgewotICAgIElYU0RGcmFnbWVudFtdIGZyYWdtZW50cyA9IG5ldyBJWFNERnJhZ21lbnRbZnJhZ21lbnRzT3JkZXJfLnNpemUoKV07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFnbWVudHNPcmRlcl8uc2l6ZSgpOyBpKyspIHsKLSAgICAgIGZyYWdtZW50c1tpXSA9IGdldEZyYWdtZW50KChTdHJpbmcpZnJhZ21lbnRzT3JkZXJfLmdldChpKSk7Ci0gICAgfQotICAgIHJldHVybiBmcmFnbWVudHM7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmVGcmFnbWVudChTdHJpbmcgaWQpIHsKLSAgICByZW1vdmVGcmFnbWVudChpZCwgdHJ1ZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmVGcmFnbWVudHMoU3RyaW5nW10gaWRzKSB7Ci0gICAgcmVtb3ZlRnJhZ21lbnRzKGlkcywgdHJ1ZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmVBbGxGcmFnbWVudHMoKSB7Ci0gICAgcmVtb3ZlQWxsRnJhZ21lbnRzKHRydWUpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcmVtb3ZlRnJhZ21lbnQoU3RyaW5nIGlkLCBib29sZWFuIHJlbW92ZUZyb21Db250cm9sbGVyKSB7Ci0gICAgZnJhZ21lbnRzT3JkZXJfLnJlbW92ZShpZCk7Ci0gICAgZnJhZ21lbnRzXy5yZW1vdmUoaWQpOwotICAgIGlmIChyZW1vdmVGcm9tQ29udHJvbGxlcikKLSAgICAgIGNvbnRyb2xsZXJfLnJlbW92ZUZyb21DYWNoZShpZCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmVGcmFnbWVudHMoU3RyaW5nW10gaWRzLCBib29sZWFuIHJlbW92ZUZyb21Db250cm9sbGVyKSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIHJlbW92ZUZyYWdtZW50KGlkc1tpXSwgcmVtb3ZlRnJvbUNvbnRyb2xsZXIpOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHJlbW92ZUFsbEZyYWdtZW50cyhib29sZWFuIHJlbW92ZUZyb21Db250cm9sbGVyKSB7Ci0gICAgaWYgKHJlbW92ZUZyb21Db250cm9sbGVyKQotICAgIHsKLSAgICAgIEVudW1lcmF0aW9uIGlkcyA9IGZyYWdtZW50c18ua2V5cygpOwotICAgICAgd2hpbGUgKGlkcy5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGlkID0gKFN0cmluZylpZHMubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgY29udHJvbGxlcl8ucmVtb3ZlRnJvbUNhY2hlKGlkKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZnJhZ21lbnRzT3JkZXJfLmNsZWFyKCk7Ci0gICAgZnJhZ21lbnRzXy5jbGVhcigpOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmVBbGxBdHRyaWJ1dGVGcmFnbWVudHMoKSB7Ci0gICAgICBFbnVtZXJhdGlvbiBpZHMgPSBhdHRyaWJ1dGVGcmFnbWVudHNfLmtleXMoKTsKLSAgICAgIHdoaWxlIChpZHMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBpZCA9IChTdHJpbmcpaWRzLm5leHRFbGVtZW50KCk7Ci0gICAgICAgIGNvbnRyb2xsZXJfLnJlbW92ZUZyb21DYWNoZShpZCk7Ci0gICAgICB9Ci0gICAgCi0gICAgICBhdHRyaWJ1dGVGcmFnbWVudHNfLmNsZWFyKCk7Ci0gIH0KLSAgCi0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljRGF0ZVRpbWVGaXhGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljRGF0ZVRpbWVGaXhGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTc5YzZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0RhdGVUaW1lRml4RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci0KLXB1YmxpYyBjbGFzcyBYU0RTaW1wbGVBdG9taWNEYXRlVGltZUZpeEZyYWdtZW50IGV4dGVuZHMgWFNEU2ltcGxlQXRvbWljRml4RnJhZ21lbnQgewotICBwcml2YXRlIGludCBjYWxlbmRhclR5cGVfOwotICBwdWJsaWMgWFNEU2ltcGxlQXRvbWljRGF0ZVRpbWVGaXhGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIGludCBjYWxlbmRhclR5cGUpIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnKTsKLSAgICBjYWxlbmRhclR5cGVfID0gY2FsZW5kYXJUeXBlOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgU3RyaW5nQnVmZmVyIGZyYWdtZW50TGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIi93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUF0b21pY0RhdGVUaW1lRml4V0ZyYWdtZW50SlNQLmpzcD8iKTsKLSAgICBmcmFnbWVudExpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFKS5hcHBlbmQoJz0nKS5hcHBlbmQoY2FsZW5kYXJUeXBlXyk7Ci0gICAgcmV0dXJuIGZyYWdtZW50TGluay50b1N0cmluZygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RTaW1wbGVBdG9taWNEYXRlVGltZVJhbmdlRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0RhdGVUaW1lUmFuZ2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2NlMjJkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0RhdGVUaW1lUmFuZ2VGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLQotcHVibGljIGNsYXNzIFhTRFNpbXBsZUF0b21pY0RhdGVUaW1lUmFuZ2VGcmFnbWVudCBleHRlbmRzIFhTRFNpbXBsZUF0b21pY1JhbmdlRnJhZ21lbnQgewotICBwcml2YXRlIGludCBjYWxlbmRhclR5cGVfOwotICBwdWJsaWMgWFNEU2ltcGxlQXRvbWljRGF0ZVRpbWVSYW5nZUZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgaW50IGNhbGVuZGFyVHlwZSkgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcpOwotICAgIGNhbGVuZGFyVHlwZV8gPSBjYWxlbmRhclR5cGU7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgU3RyaW5nQnVmZmVyIGZyYWdtZW50TGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIi93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUF0b21pY0RhdGVUaW1lUmFuZ2VXRnJhZ21lbnRKU1AuanNwPyIpOwotICAgIGZyYWdtZW50TGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEUpLmFwcGVuZCgnPScpLmFwcGVuZChjYWxlbmRhclR5cGVfKTsKLSAgICByZXR1cm4gZnJhZ21lbnRMaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0VudW1GaXhGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljRW51bUZpeEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYTNlOTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljRW51bUZpeEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC51dGlsLk9wdGlvblZlY3RvcjsKLQotcHVibGljIGNsYXNzIFhTRFNpbXBsZUF0b21pY0VudW1GaXhGcmFnbWVudCBleHRlbmRzIFhTRFNpbXBsZUF0b21pY0VudW1GcmFnbWVudCB7Ci0gIHB1YmxpYyBYU0RTaW1wbGVBdG9taWNFbnVtRml4RnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBFTGlzdCBlbGlzdCkgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcsIGVsaXN0KTsKLSAgfQotICAKLSAgcHVibGljIFhTRFNpbXBsZUF0b21pY0VudW1GaXhGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIE9wdGlvblZlY3RvciB2KQotICB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgdik7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZEZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljUkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNFbnVtRml4V0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0VudW1GcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljRW51bUZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZTllOGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljRW51bUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC51dGlsLk9wdGlvblZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNERW51bWVyYXRpb25GYWNldDsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFhTRFNpbXBsZUF0b21pY0VudW1GcmFnbWVudCBleHRlbmRzIFhTRFNpbXBsZUF0b21pY0ZyYWdtZW50IHsKLSAgcHJpdmF0ZSBPcHRpb25WZWN0b3Igb3B0aW9uVmVjdG9yXzsKLSAgcHVibGljIFhTRFNpbXBsZUF0b21pY0VudW1GcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIEVMaXN0IGVsaXN0KSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZyk7Ci0gICAgb3B0aW9uVmVjdG9yXyA9IG5ldyBPcHRpb25WZWN0b3IoKTsKLSAgICBmb3IgKGludCBpPTA7aTxlbGlzdC5zaXplKCk7aSsrKQotICAgIHsKLSAgICAgIFN0cmluZyBlbnVtVmFsdWUgPSAoKFhTREVudW1lcmF0aW9uRmFjZXQpZWxpc3QuZ2V0KGkpKS5nZXRMZXhpY2FsVmFsdWUoKTsKLSAgICAgIG9wdGlvblZlY3Rvcl8uYWRkT3B0aW9uKGVudW1WYWx1ZSxlbnVtVmFsdWUpOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIFhTRFNpbXBsZUF0b21pY0VudW1GcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIE9wdGlvblZlY3RvciB2KQotICB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZyk7Ci0gICAgb3B0aW9uVmVjdG9yXyA9IG5ldyBPcHRpb25WZWN0b3IoKTsKLSAgICBmb3IgKGludCBpPTA7aTx2LnNpemUoKTtpKyspCi0gICAgICBvcHRpb25WZWN0b3JfLmFkZE9wdGlvbih2LmdldERpc3BsYXlWYWx1ZShpKSx2LmdldFZhbHVlKGkpKTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIE9wdGlvblZlY3RvciBnZXRPcHRpb25WZWN0b3IoKQotICB7Ci0gICAgcmV0dXJuIG9wdGlvblZlY3Rvcl87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0VudW1SYW5nZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RTaW1wbGVBdG9taWNFbnVtUmFuZ2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGU1OGYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0VudW1SYW5nZUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC51dGlsLk9wdGlvblZlY3RvcjsKLQotcHVibGljIGNsYXNzIFhTRFNpbXBsZUF0b21pY0VudW1SYW5nZUZyYWdtZW50IGV4dGVuZHMgWFNEU2ltcGxlQXRvbWljRW51bUZyYWdtZW50IHsKLSAgcHVibGljIFhTRFNpbXBsZUF0b21pY0VudW1SYW5nZUZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgRUxpc3QgZWxpc3QpIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnLCBlbGlzdCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBYU0RTaW1wbGVBdG9taWNFbnVtUmFuZ2VGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIE9wdGlvblZlY3RvciB2KQotICB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgdik7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZEZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljUkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNFbnVtUmFuZ2VXRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljRml4RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0ZpeEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyODU2OGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljRml4RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci0KLXB1YmxpYyBjbGFzcyBYU0RTaW1wbGVBdG9taWNGaXhGcmFnbWVudCBleHRlbmRzIFhTRFNpbXBsZUF0b21pY0ZyYWdtZW50IHsKLSAgcHVibGljIFhTRFNpbXBsZUF0b21pY0ZpeEZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZykgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJbmZvcm1hdGlvbkZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljSW5mb0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUF0b21pY1JGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXcml0ZUZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljRml4V0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0ZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RTaW1wbGVBdG9taWNGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWE0MTBmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY0ZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RTaW1wbGVBdG9taWNGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2ltcGxlVHlwZURlZmluaXRpb247Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBYU0RTaW1wbGVBdG9taWNGcmFnbWVudCBleHRlbmRzIFhTREZyYWdtZW50IGltcGxlbWVudHMgSVhTRFNpbXBsZUF0b21pY0ZyYWdtZW50IHsKLSAgcHVibGljIFhTRFNpbXBsZUF0b21pY0ZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZykgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZShTdHJpbmcgcGFyYW1LZXksIGludCBwYXJhbUluZGV4KSB7Ci0gICAgU3RyaW5nIHBhcmFtID0gZ2V0UGFyYW1ldGVyVmFsdWUocGFyYW1LZXksIHBhcmFtSW5kZXgpOwotICAgIGlmIChwYXJhbSAhPSBudWxsICYmICEoKFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uKWdldFhTRFR5cGVEZWZpbml0aW9uKCkpLmlzVmFsaWRMaXRlcmFsKHBhcmFtKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljUmFuZ2VGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlQXRvbWljUmFuZ2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTc1ODAyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUF0b21pY1JhbmdlRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci0KLXB1YmxpYyBjbGFzcyBYU0RTaW1wbGVBdG9taWNSYW5nZUZyYWdtZW50IGV4dGVuZHMgWFNEU2ltcGxlQXRvbWljRnJhZ21lbnQgewotICBwdWJsaWMgWFNEU2ltcGxlQXRvbWljUmFuZ2VGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcpIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5mb3JtYXRpb25GcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUF0b21pY0luZm9GcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRSZWFkRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNSRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3JpdGVGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUF0b21pY1JhbmdlV0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUxpc3RGaXhGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlTGlzdEZpeEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMzM2NmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlTGlzdEZpeEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotCi1wdWJsaWMgY2xhc3MgWFNEU2ltcGxlTGlzdEZpeEZyYWdtZW50IGV4dGVuZHMgWFNEU2ltcGxlTGlzdEZyYWdtZW50IHsKLSAgcHVibGljIFhTRFNpbXBsZUxpc3RGaXhGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnLCBjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5mb3JtYXRpb25GcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZEZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlTGlzdFJGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXcml0ZUZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlTGlzdEZpeFdGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUxpc3RGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlTGlzdEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YzY2NjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlTGlzdEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjE3ICAgMTI3MTM4IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RTaW1wbGVMaXN0RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuWFNEVG9GcmFnbWVudENvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRExlbmd0aEZhY2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RNYXhMZW5ndGhGYWNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNETWluTGVuZ3RoRmFjZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNpbXBsZVR5cGVEZWZpbml0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLWltcG9ydCBjb20uaWJtLmljdS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFhTRFNpbXBsZUxpc3RGcmFnbWVudCBleHRlbmRzIFhTRE1hcEZyYWdtZW50IGltcGxlbWVudHMgSVhTRFNpbXBsZUxpc3RGcmFnbWVudAotewotICBwdWJsaWMgWFNEU2ltcGxlTGlzdEZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcsIGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyLnNldE5hbWUobmFtZSk7Ci0gICAgSVhTREZyYWdtZW50W10gZnJhZ21lbnRzID0gZ2V0QWxsRnJhZ21lbnRzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFnbWVudHMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgZnJhZ21lbnRzW2ldLnNldE5hbWUobmFtZSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykKLSAgewotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50c0NvcHkgPSBnZXRJbnN0YW5jZURvY3VtZW50c0J5VGFnTmFtZShpbnN0YW5jZURvY3VtZW50cywgZ2V0TmFtZSgpKTsKLSAgICBTdHJpbmdbXSBwYXJhbXMgPSBuZXcgU3RyaW5nW2luc3RhbmNlRG9jdW1lbnRzQ29weS5sZW5ndGhdOwotICAgIGJvb2xlYW4gcGFyYW1zVmFsaWQgPSBpbnRlcm5hbEVxdWFscyhpbnN0YW5jZURvY3VtZW50c0NvcHksIGluc3RhbmNlRG9jdW1lbnRzKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzQ29weS5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBwYXJhbXNbaV0gPSAiIjsKLSAgICAgIE5vZGVMaXN0IG5vZGVMaXN0ID0gaW5zdGFuY2VEb2N1bWVudHNDb3B5W2ldLmdldENoaWxkTm9kZXMoKTsKLSAgICAgIGlmIChub2RlTGlzdC5nZXRMZW5ndGgoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIE5vZGUgbm9kZSA9IG5vZGVMaXN0Lml0ZW0oMCk7Ci0gICAgICAgIGlmIChub2RlTGlzdC5nZXRMZW5ndGgoKSA+IDEpCi0gICAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKG5vZGUuZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLlRFWFRfTk9ERSkKLSAgICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcGFyYW1zW2ldID0gbm9kZS5nZXROb2RlVmFsdWUoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgcGFyYW1zVmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmVtb3ZlQWxsRnJhZ21lbnRzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgSVhTREZyYWdtZW50IGNoaWxkRnJhZyA9IGdldEZyYWdtZW50KGNyZWF0ZUxpc3RJbnN0YW5jZSgpKTsKLSAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIocGFyYW1zW2ldLnRyaW0oKSk7Ci0gICAgICBTdHJpbmdbXSBjaGlsZFBhcmFtcyA9IG5ldyBTdHJpbmdbc3QuY291bnRUb2tlbnMoKV07Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNoaWxkUGFyYW1zLmxlbmd0aDsgaisrKQotICAgICAgewotICAgICAgICBjaGlsZFBhcmFtc1tqXSA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgfQotICAgICAgY2hpbGRGcmFnLnNldFBhcmFtZXRlclZhbHVlcyhjaGlsZEZyYWcuZ2V0SUQoKSwgY2hpbGRQYXJhbXMpOwotICAgICAgcGFyYW1zVmFsaWQgPSBwYXJhbXNWYWxpZCAmJiBjaGlsZEZyYWcudmFsaWRhdGVBbGxQYXJhbWV0ZXJWYWx1ZXMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHBhcmFtc1ZhbGlkOwotICB9Ci0KLSAgcHVibGljIEVsZW1lbnRbXSBnZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoYm9vbGVhbiBnZW5YU0lUeXBlLCBIYXNodGFibGUgbmFtZXNwYWNlVGFibGUsIERvY3VtZW50IGRvYykKLSAgewotICAgIElYU0RGcmFnbWVudFtdIGZyYWdtZW50cyA9IGdldEFsbEZyYWdtZW50cygpOwotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cyA9IG5ldyBFbGVtZW50W2ZyYWdtZW50cy5sZW5ndGhdOwotICAgIFN0cmluZyB0YWdOYW1lID0gZ2V0SW5zdGFuY2VEb2N1bWVudFRhZ05hbWUobmFtZXNwYWNlVGFibGUpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhZ21lbnRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIEVsZW1lbnQgaW5zdGFuY2VEb2N1bWVudCA9IGRvYy5jcmVhdGVFbGVtZW50KHRhZ05hbWUpOwotICAgICAgU3RyaW5nQnVmZmVyIGxpc3RWYWx1ZSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgIFN0cmluZ1tdIHBhcmFtcyA9IGZyYWdtZW50c1tpXS5nZXRQYXJhbWV0ZXJWYWx1ZXMoZnJhZ21lbnRzW2ldLmdldElEKCkpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IHBhcmFtcyAhPSBudWxsICYmIGogPCBwYXJhbXMubGVuZ3RoOyBqKyspCi0gICAgICB7Ci0gICAgICAgIGlmIChqICE9IDApCi0gICAgICAgICAgbGlzdFZhbHVlLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5MSVNUX1NFUEVSQVRPUik7Ci0gICAgICAgIGxpc3RWYWx1ZS5hcHBlbmQocGFyYW1zW2pdKTsKLSAgICAgIH0KLSAgICAgIE5vZGUgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUobGlzdFZhbHVlLnRvU3RyaW5nKCkpOwotICAgICAgaW5zdGFuY2VEb2N1bWVudC5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICBpbnN0YW5jZURvY3VtZW50c1tpXSA9IGluc3RhbmNlRG9jdW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiAoZ2VuWFNJVHlwZSA/IGFkZFhTSVR5cGUoaW5zdGFuY2VEb2N1bWVudHMsIG5hbWVzcGFjZVRhYmxlKSA6IGluc3RhbmNlRG9jdW1lbnRzKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgY3JlYXRlTGlzdEluc3RhbmNlKCkKLSAgewotICAgIFN0cmluZyBuZXdJRCA9IGdlbklEKCk7Ci0gICAgWFNEU2ltcGxlVHlwZURlZmluaXRpb24gc2ltcGxlVHlwZSA9IChYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbilnZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotICAgIGludCBtaW4gPSAwOwotICAgIGludCBtYXggPSBGcmFnbWVudENvbnN0YW50cy5VTkJPVU5ERUQ7Ci0gICAgWFNETGVuZ3RoRmFjZXQgeHNkTGVuZ3RoRmFjZXQgPSBzaW1wbGVUeXBlLmdldExlbmd0aEZhY2V0KCk7Ci0gICAgLy8gcG9ydCB0byBvcmcuZWNsaXBzZS54c2QKLSAgICBpZiAoeHNkTGVuZ3RoRmFjZXQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBtaW4gPSB4c2RMZW5ndGhGYWNldC5nZXRWYWx1ZSgpOwotICAgICAgbWF4ID0geHNkTGVuZ3RoRmFjZXQuZ2V0VmFsdWUoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFhTRE1pbkxlbmd0aEZhY2V0IHhzZE1pbkxlbmd0aEZhY2V0ID0gc2ltcGxlVHlwZS5nZXRNaW5MZW5ndGhGYWNldCgpOwotICAgICAgWFNETWF4TGVuZ3RoRmFjZXQgeHNkTWF4TGVuZ3RoRmFjZXQgPSBzaW1wbGVUeXBlLmdldE1heExlbmd0aEZhY2V0KCk7Ci0gICAgICAvLyBwb3J0IHRvIG9yZy5lY2xpcHNlLnhzZAotICAgICAgaWYgKHhzZE1pbkxlbmd0aEZhY2V0ICE9IG51bGwpCi0gICAgICAgIG1pbiA9IHhzZE1pbkxlbmd0aEZhY2V0LmdldFZhbHVlKCk7Ci0gICAgICBpZiAoeHNkTWF4TGVuZ3RoRmFjZXQgIT0gbnVsbCkKLSAgICAgICAgbWF4ID0geHNkTWF4TGVuZ3RoRmFjZXQuZ2V0VmFsdWUoKTsKLSAgICB9Ci0gICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gdGhpc0NvbmZpZyA9IGdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0gICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gbmV3IFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0gICAgeHNkQ29uZmlnLnNldFhTRENvbXBvbmVudChzaW1wbGVUeXBlLmdldEl0ZW1UeXBlRGVmaW5pdGlvbigpKTsKLSAgICB4c2RDb25maWcuc2V0U3R5bGUodGhpc0NvbmZpZy5nZXRTdHlsZSgpKTsKLSAgICB4c2RDb25maWcuc2V0UGFydEVuY29kaW5nKHRoaXNDb25maWcuZ2V0UGFydEVuY29kaW5nKCkpOwotICAgIHhzZENvbmZpZy5zZXRXU0RMUGFydE5hbWUodGhpc0NvbmZpZy5nZXRXU0RMUGFydE5hbWUoKSk7Ci0gICAgeHNkQ29uZmlnLnNldE1pbk9jY3VycyhtaW4pOwotICAgIHhzZENvbmZpZy5zZXRNYXhPY2N1cnMobWF4KTsKLSAgICBJWFNERnJhZ21lbnQgZnJhZyA9IGdldFhTRFRvRnJhZ21lbnRDb250cm9sbGVyKCkuZ2V0RnJhZ21lbnQoeHNkQ29uZmlnLCBuZXdJRCwgZ2V0TmFtZSgpKTsKLSAgICBmcmFnLnNldElEKG5ld0lEKTsKLSAgICBmcmFnLnNldE5hbWUoZ2V0TmFtZSgpKTsKLSAgICBhZGRGcmFnbWVudChuZXdJRCwgZnJhZyk7Ci0gICAgcmV0dXJuIG5ld0lEOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBjcmVhdGVJbnN0YW5jZSgpCi0gIHsKLSAgICByZXR1cm4gY3JlYXRlTGlzdEluc3RhbmNlKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUxpc3RSYW5nZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RTaW1wbGVMaXN0UmFuZ2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTg1ODRmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZUxpc3RSYW5nZUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotCi1wdWJsaWMgY2xhc3MgWFNEU2ltcGxlTGlzdFJhbmdlRnJhZ21lbnQgZXh0ZW5kcyBYU0RTaW1wbGVMaXN0RnJhZ21lbnQgewotICBwdWJsaWMgWFNEU2ltcGxlTGlzdFJhbmdlRnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0SW5mb0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUxpc3RSRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3JpdGVGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUxpc3RSYW5nZVdGcmFnbWVudEpTUC5qc3AiOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZVVuaW9uRml4RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZVVuaW9uRml4RnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMyYzkzYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RTaW1wbGVVbmlvbkZpeEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotCi1wdWJsaWMgY2xhc3MgWFNEU2ltcGxlVW5pb25GaXhGcmFnbWVudCBleHRlbmRzIFhTRFNpbXBsZVVuaW9uRnJhZ21lbnQgewotICBwdWJsaWMgWFNEU2ltcGxlVW5pb25GaXhGcmFnbWVudChTdHJpbmcgaWQsIFN0cmluZyBuYW1lLCBYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiBjb25maWcsIFhTRFRvRnJhZ21lbnRDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKLSAgICBzdXBlcihpZCwgbmFtZSwgY29uZmlnLCBjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5mb3JtYXRpb25GcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZEZyYWdtZW50KCkgewotICAgIHJldHVybiAiL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlVW5pb25SRnJhZ21lbnRKU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V3JpdGVGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZVVuaW9uRml4V0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZVVuaW9uRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZVVuaW9uRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZmYzgxNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvaW1wbC9YU0RTaW1wbGVVbmlvbkZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RTaW1wbGVVbmlvbkZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTaW1wbGVUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgWFNEU2ltcGxlVW5pb25GcmFnbWVudCBleHRlbmRzIFhTRE1hcEZyYWdtZW50IGltcGxlbWVudHMgSVhTRFNpbXBsZVVuaW9uRnJhZ21lbnQgewotICBwcml2YXRlIFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uW10gbWVtYmVyVHlwZXNfOwotCi0gIHB1YmxpYyBYU0RTaW1wbGVVbmlvbkZyYWdtZW50KFN0cmluZyBpZCwgU3RyaW5nIG5hbWUsIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIGNvbmZpZywgWFNEVG9GcmFnbWVudENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgIHN1cGVyKGlkLCBuYW1lLCBjb25maWcsIGNvbnRyb2xsZXIpOwotICAgIG1lbWJlclR5cGVzXyA9IG51bGw7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7Ci0gICAgc3VwZXIuc2V0TmFtZShuYW1lKTsKLSAgICBJWFNERnJhZ21lbnRbXSBmcmFnbWVudHMgPSBnZXRBbGxGcmFnbWVudHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYWdtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgZnJhZ21lbnRzW2ldLnNldE5hbWUobmFtZSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gc2V0UGFyYW1ldGVyVmFsdWVzRnJvbUluc3RhbmNlRG9jdW1lbnRzKEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cykgewotICAgIEVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50c0NvcHkgPSBnZXRJbnN0YW5jZURvY3VtZW50c0J5VGFnTmFtZShpbnN0YW5jZURvY3VtZW50cywgZ2V0TmFtZSgpKTsKLSAgICBpbnQgbnVtVHlwZXMgPSBnZXRNZW1iZXJUeXBlRGVmaW5pdGlvbnMoKS5sZW5ndGg7Ci0gICAgYm9vbGVhbiBwYXJhbXNWYWxpZCA9IGludGVybmFsRXF1YWxzKGluc3RhbmNlRG9jdW1lbnRzQ29weSwgaW5zdGFuY2VEb2N1bWVudHMpOwotICAgIFZlY3RvciBtZW1iZXJGcmFnbWVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50c0NvcHkubGVuZ3RoOyBpKyspIHsKLSAgICAgIElYU0RGcmFnbWVudCBjb21wYXRpYmxlRnJhZyA9IG51bGw7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bVR5cGVzOyBqKyspIHsKLSAgICAgICAgSVhTREZyYWdtZW50IG1lbWJlckZyYWcgPSBnZXRGcmFnbWVudChjcmVhdGVVbmlvbkluc3RhbmNlKGopKTsKLSAgICAgICAgRWxlbWVudFtdIG1lbWJlckluc3RhbmNlRG9jdW1lbnQgPSBuZXcgRWxlbWVudFsxXTsKLSAgICAgICAgbWVtYmVySW5zdGFuY2VEb2N1bWVudFswXSA9IHNldEVsZW1lbnRUYWdOYW1lKGluc3RhbmNlRG9jdW1lbnRzQ29weVtpXSwgbWVtYmVyRnJhZy5nZXROYW1lKCkpOwotICAgICAgICBpZiAobWVtYmVyRnJhZy5zZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMobWVtYmVySW5zdGFuY2VEb2N1bWVudCkpIHsKLSAgICAgICAgICBpZiAobWVtYmVyRnJhZy52YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpKSB7Ci0gICAgICAgICAgICBjb21wYXRpYmxlRnJhZyA9IG1lbWJlckZyYWc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoY29tcGF0aWJsZUZyYWcgPT0gbnVsbCkKLSAgICAgICAgICAgIGNvbXBhdGlibGVGcmFnID0gbWVtYmVyRnJhZzsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKGNvbXBhdGlibGVGcmFnICE9IG51bGwpCi0gICAgICAgIG1lbWJlckZyYWdtZW50cy5hZGQoY29tcGF0aWJsZUZyYWcpOwotICAgICAgZWxzZQotICAgICAgICBwYXJhbXNWYWxpZCA9IGZhbHNlOwotICAgIH0KLSAgICByZW1vdmVBbGxGcmFnbWVudHMoKTsKLSAgICBhZGRGcmFnbWVudHMobWVtYmVyRnJhZ21lbnRzKTsKLSAgICByZXR1cm4gcGFyYW1zVmFsaWQ7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudFtdIGdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyhib29sZWFuIGdlblhTSVR5cGUsIEhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSwgRG9jdW1lbnQgZG9jKSB7Ci0gICAgSVhTREZyYWdtZW50W10gZnJhZ21lbnRzID0gZ2V0QWxsRnJhZ21lbnRzKCk7Ci0gICAgVmVjdG9yIGluc3RhbmNlRG9jdW1lbnRzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYWdtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgRWxlbWVudFtdIGZyYWdtZW50SW5zdGFuY2VzID0gZnJhZ21lbnRzW2ldLmdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyhnZW5YU0lUeXBlLCBuYW1lc3BhY2VUYWJsZSwgZG9jKTsKLSAgICAgIGlmIChmcmFnbWVudEluc3RhbmNlcy5sZW5ndGggPiAwKQotICAgICAgICBpbnN0YW5jZURvY3VtZW50c0NvcHkuYWRkKGZyYWdtZW50SW5zdGFuY2VzWzBdKTsKLSAgICB9Ci0gICAgRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzID0gbmV3IEVsZW1lbnRbaW5zdGFuY2VEb2N1bWVudHNDb3B5LnNpemUoKV07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgaW5zdGFuY2VEb2N1bWVudHNbaV0gPSAoRWxlbWVudClpbnN0YW5jZURvY3VtZW50c0NvcHkuZ2V0KGkpOwotICAgIH0KLSAgICByZXR1cm4gc2V0RWxlbWVudHNUYWdOYW1lKGluc3RhbmNlRG9jdW1lbnRzLCBnZXRJbnN0YW5jZURvY3VtZW50VGFnTmFtZShuYW1lc3BhY2VUYWJsZSkpOwotICB9Ci0KLSAgcHVibGljIFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uW10gZ2V0TWVtYmVyVHlwZURlZmluaXRpb25zKCkgewotICAgIGlmIChtZW1iZXJUeXBlc18gPT0gbnVsbCkgewotICAgICAgRUxpc3QgbWVtYmVyVHlwZXMgPSAoKFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uKWdldFhTRFR5cGVEZWZpbml0aW9uKCkpLmdldE1lbWJlclR5cGVEZWZpbml0aW9ucygpOwotICAgICAgbWVtYmVyVHlwZXNfID0gbmV3IFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uW21lbWJlclR5cGVzLnNpemUoKV07Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1lbWJlclR5cGVzXy5sZW5ndGg7IGkrKykgewotICAgICAgICBtZW1iZXJUeXBlc19baV0gPSAoWFNEU2ltcGxlVHlwZURlZmluaXRpb24pbWVtYmVyVHlwZXMuZ2V0KGkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbWVtYmVyVHlwZXNfOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBjcmVhdGVVbmlvbkluc3RhbmNlKGludCBtZW1iZXJUeXBlSW5kZXgpIHsKLSAgICBnZXRNZW1iZXJUeXBlRGVmaW5pdGlvbnMoKTsKLSAgICBpZiAobWVtYmVyVHlwZUluZGV4IDwgMCB8fCBtZW1iZXJUeXBlSW5kZXggPiBtZW1iZXJUeXBlc18ubGVuZ3RoIC0gMSkKLSAgICAgIHJldHVybiBudWxsOwotICAgIFN0cmluZyBuZXdJRCA9IGdlbklEKCk7Ci0gICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gdGhpc0NvbmZpZyA9IGdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0gICAgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gbmV3IFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0gICAgeHNkQ29uZmlnLnNldFhTRENvbXBvbmVudChtZW1iZXJUeXBlc19bbWVtYmVyVHlwZUluZGV4XSk7Ci0gICAgeHNkQ29uZmlnLnNldFN0eWxlKHRoaXNDb25maWcuZ2V0U3R5bGUoKSk7Ci0gICAgeHNkQ29uZmlnLnNldFBhcnRFbmNvZGluZyh0aGlzQ29uZmlnLmdldFBhcnRFbmNvZGluZygpKTsKLSAgICB4c2RDb25maWcuc2V0V1NETFBhcnROYW1lKHRoaXNDb25maWcuZ2V0V1NETFBhcnROYW1lKCkpOwotICAgIElYU0RGcmFnbWVudCBmcmFnID0gZ2V0WFNEVG9GcmFnbWVudENvbnRyb2xsZXIoKS5nZXRGcmFnbWVudCh4c2RDb25maWcsIG5ld0lELCBnZXROYW1lKCkpOwotICAgIGZyYWcuc2V0SUQobmV3SUQpOwotICAgIGZyYWcuc2V0TmFtZShnZXROYW1lKCkpOwotICAgIGFkZEZyYWdtZW50KG5ld0lELCBmcmFnKTsKLSAgICByZXR1cm4gbmV3SUQ7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGNyZWF0ZUluc3RhbmNlKCkgewotICAgIHJldHVybiBjcmVhdGVVbmlvbkluc3RhbmNlKDApOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC9pbXBsL1hTRFNpbXBsZVVuaW9uUmFuZ2VGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlVW5pb25SYW5nZUZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkODRiNmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L2ltcGwvWFNEU2ltcGxlVW5pb25SYW5nZUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LlhTRFRvRnJhZ21lbnRDb250cm9sbGVyOwotCi1wdWJsaWMgY2xhc3MgWFNEU2ltcGxlVW5pb25SYW5nZUZyYWdtZW50IGV4dGVuZHMgWFNEU2ltcGxlVW5pb25GcmFnbWVudCB7Ci0gIHB1YmxpYyBYU0RTaW1wbGVVbmlvblJhbmdlRnJhZ21lbnQoU3RyaW5nIGlkLCBTdHJpbmcgbmFtZSwgWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24gY29uZmlnLCBYU0RUb0ZyYWdtZW50Q29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgc3VwZXIoaWQsIG5hbWUsIGNvbmZpZywgY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0SW5mb0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlYWRGcmFnbWVudCgpIHsKLSAgICByZXR1cm4gIi93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZVVuaW9uUkZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdyaXRlRnJhZ21lbnQoKSB7Ci0gICAgcmV0dXJuICIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVVbmlvblJhbmdlV0ZyYWdtZW50SlNQLmpzcCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC91dGlsL0hUVFBVdGlsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvdXRpbC9IVFRQVXRpbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTY1YzhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC91dGlsL0hUVFBVdGlsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LnV0aWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS5heGlzLkNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5VUkxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5YTUxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuSVhTREZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RTaW1wbGVBdG9taWNGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5JWFNEU2ltcGxlTGlzdEZyYWdtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBIVFRQVXRpbAotewotICBwcml2YXRlIEhUVFBVdGlsKCkKLSAgewotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2VuVVJMRW5jb2RlZFBhcmFtZXRlcnMoSVhTREZyYWdtZW50IGZyYWdtZW50KQotICB7Ci0gICAgaWYgKGZyYWdtZW50IGluc3RhbmNlb2YgSVhTRFNpbXBsZUxpc3RGcmFnbWVudCkKLSAgICAgIHJldHVybiBnZW5VUkxFbmNvZGVkUGFyYW1zRnJvbUxpc3RGcmFnbWVudCgoSVhTRFNpbXBsZUxpc3RGcmFnbWVudClmcmFnbWVudCk7Ci0gICAgZWxzZSBpZiAoZnJhZ21lbnQgaW5zdGFuY2VvZiBJWFNEU2ltcGxlQXRvbWljRnJhZ21lbnQpCi0gICAgICByZXR1cm4gZ2VuVVJMRW5jb2RlZFBhcmFtc0Zyb21BdG9taWNGcmFnbWVudCgoSVhTRFNpbXBsZUF0b21pY0ZyYWdtZW50KWZyYWdtZW50KTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gZ2VuVVJMRW5jb2RlZFhNTFBhcmFtZXRlcnMoZnJhZ21lbnQpOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdlblVSTEVuY29kZWRQYXJhbXNGcm9tQXRvbWljRnJhZ21lbnQoSVhTRFNpbXBsZUF0b21pY0ZyYWdtZW50IGZyYWdtZW50KQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIHVybEVuY29kZWRQYXJhbSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBTdHJpbmdbXSBwYXJhbXMgPSBmcmFnbWVudC5nZXRQYXJhbWV0ZXJWYWx1ZXMoZnJhZ21lbnQuZ2V0SUQoKSk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgdXJsRW5jb2RlZFBhcmFtLmFwcGVuZChVUkxVdGlscy5lbmNvZGUoZnJhZ21lbnQuZ2V0TmFtZSgpKSk7Ci0gICAgICB1cmxFbmNvZGVkUGFyYW0uYXBwZW5kKCI9Iik7Ci0gICAgICB1cmxFbmNvZGVkUGFyYW0uYXBwZW5kKFVSTFV0aWxzLmVuY29kZShwYXJhbXNbaV0pKTsKLSAgICAgIGlmIChpIDwgcGFyYW1zLmxlbmd0aCAtIDEpCi0gICAgICAgIHVybEVuY29kZWRQYXJhbS5hcHBlbmQoIiYiKTsKLSAgICB9Ci0gICAgcmV0dXJuIHVybEVuY29kZWRQYXJhbS50b1N0cmluZygpOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdlblVSTEVuY29kZWRQYXJhbXNGcm9tTGlzdEZyYWdtZW50KElYU0RTaW1wbGVMaXN0RnJhZ21lbnQgZnJhZ21lbnQpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgdXJsRW5jb2RlZFBhcmFtID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIElYU0RGcmFnbWVudFtdIGNoaWxkRnJhZ3MgPSBmcmFnbWVudC5nZXRBbGxGcmFnbWVudHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkRnJhZ3MubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgdXJsRW5jb2RlZFBhcmFtLmFwcGVuZChVUkxVdGlscy5lbmNvZGUoZnJhZ21lbnQuZ2V0TmFtZSgpKSk7Ci0gICAgICB1cmxFbmNvZGVkUGFyYW0uYXBwZW5kKCI9Iik7Ci0gICAgICBTdHJpbmdbXSBwYXJhbXMgPSBjaGlsZEZyYWdzW2ldLmdldFBhcmFtZXRlclZhbHVlcyhjaGlsZEZyYWdzW2ldLmdldElEKCkpOwotICAgICAgU3RyaW5nQnVmZmVyIHBhcmFtQnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwYXJhbXMubGVuZ3RoOyBqKyspCi0gICAgICB7Ci0gICAgICAgIHBhcmFtQnVmZmVyLmFwcGVuZChwYXJhbXNbal0pOwotICAgICAgICBpZiAoaiA8IHBhcmFtcy5sZW5ndGggLSAxKQotICAgICAgICAgIHBhcmFtQnVmZmVyLmFwcGVuZChGcmFnbWVudENvbnN0YW50cy5MSVNUX1NFUEVSQVRPUik7Ci0gICAgICB9Ci0gICAgICB1cmxFbmNvZGVkUGFyYW0uYXBwZW5kKFVSTFV0aWxzLmVuY29kZShwYXJhbUJ1ZmZlci50b1N0cmluZygpKSk7Ci0gICAgICBpZiAoaSA8IGNoaWxkRnJhZ3MubGVuZ3RoIC0gMSkKLSAgICAgICAgdXJsRW5jb2RlZFBhcmFtLmFwcGVuZCgiJiIpOwotICAgIH0KLSAgICByZXR1cm4gdXJsRW5jb2RlZFBhcmFtLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2VuVVJMRW5jb2RlZFhNTFBhcmFtZXRlcnMoSVhTREZyYWdtZW50IGZyYWdtZW50KQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIHVybEVuY29kZWRQYXJhbSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBIYXNodGFibGUgc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUucHV0KENvbnN0YW50cy5VUklfU09BUDExX0VOViwgQ29uc3RhbnRzLk5TX1BSRUZJWF9TT0FQX0VOVik7Ci0gICAgc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUucHV0KENvbnN0YW50cy5VUklfMjAwMV9TQ0hFTUFfWFNJLCBDb25zdGFudHMuTlNfUFJFRklYX1NDSEVNQV9YU0kpOwotICAgIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlLnB1dChDb25zdGFudHMuVVJJXzIwMDFfU0NIRU1BX1hTRCwgQ29uc3RhbnRzLk5TX1BSRUZJWF9TQ0hFTUFfWFNEKTsKLSAgICBFbGVtZW50W10gaW5zdGFuY2VEb2N1bWVudHMgPSBuZXcgRWxlbWVudFswXTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpbnN0YW5jZURvY3VtZW50cyA9IGZyYWdtZW50Lmdlbkluc3RhbmNlRG9jdW1lbnRzRnJvbVBhcmFtZXRlclZhbHVlcyh0cnVlLCBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSwgWE1MVXRpbHMuY3JlYXRlTmV3RG9jdW1lbnQobnVsbCkpOwotICAgIH0KLSAgICBjYXRjaCAoUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBwY2UpCi0gICAgewotICAgIH0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIHVybEVuY29kZWRQYXJhbS5hcHBlbmQoVVJMVXRpbHMuZW5jb2RlKGZyYWdtZW50LmdldE5hbWUoKSkpOwotICAgICAgdXJsRW5jb2RlZFBhcmFtLmFwcGVuZCgiPSIpOwotICAgICAgdXJsRW5jb2RlZFBhcmFtLmFwcGVuZChVUkxVdGlscy5lbmNvZGUoWE1MVXRpbHMuc2VyaWFsaXplKGluc3RhbmNlRG9jdW1lbnRzW2ldLCB0cnVlKSkpOwotICAgICAgaWYgKGkgPCBpbnN0YW5jZURvY3VtZW50cy5sZW5ndGggLSAxKQotICAgICAgICB1cmxFbmNvZGVkUGFyYW0uYXBwZW5kKCImIik7Ci0gICAgfQotICAgIHJldHVybiB1cmxFbmNvZGVkUGFyYW0udG9TdHJpbmcoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL2ZyYWdtZW50L3V0aWwvT3B0aW9uVmVjdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvdXRpbC9PcHRpb25WZWN0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdhZTViMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvdXRpbC9PcHRpb25WZWN0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotcHVibGljIGNsYXNzIE9wdGlvblZlY3RvcgotewotICBwcml2YXRlIFZlY3RvciBvcHRpb25zXzsKLSAgCi0gIHB1YmxpYyBPcHRpb25WZWN0b3IoKQotICB7Ci0gICAgb3B0aW9uc18gPSBuZXcgVmVjdG9yKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGFkZE9wdGlvbihTdHJpbmcgZGlzcGxheVZhbHVlLFN0cmluZyB2YWx1ZSkKLSAgewotICAgIG9wdGlvbnNfLmFkZEVsZW1lbnQobmV3IE9wdGlvbihkaXNwbGF5VmFsdWUsdmFsdWUpKTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXREaXNwbGF5VmFsdWUoaW50IHBvc2l0aW9uKQotICB7Ci0gICAgT3B0aW9uIG9wdGlvbiA9IChPcHRpb24pb3B0aW9uc18uZWxlbWVudEF0KHBvc2l0aW9uKTsKLSAgICByZXR1cm4gb3B0aW9uLmdldERpc3BsYXlWYWx1ZSgpOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFZhbHVlKGludCBwb3NpdGlvbikKLSAgewotICAgIE9wdGlvbiBvcHRpb24gPSAoT3B0aW9uKW9wdGlvbnNfLmVsZW1lbnRBdChwb3NpdGlvbik7Ci0gICAgcmV0dXJuIG9wdGlvbi5nZXRWYWx1ZSgpOwotICB9Ci0gIAotICBwdWJsaWMgaW50IHNpemUoKQotICB7Ci0gICAgcmV0dXJuIG9wdGlvbnNfLnNpemUoKTsKLSAgfQotICAKLSAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBPcHRpb24KLSAgewotICAgIHByaXZhdGUgU3RyaW5nIGRpc3BsYXlWYWx1ZV87Ci0gICAgcHJpdmF0ZSBTdHJpbmcgdmFsdWVfOwotICAgIHB1YmxpYyBPcHRpb24oU3RyaW5nIGRpc3BsYXlWYWx1ZSxTdHJpbmcgdmFsdWUpCi0gICAgewotICAgICAgZGlzcGxheVZhbHVlXyA9IGRpc3BsYXlWYWx1ZTsKLSAgICAgIHZhbHVlXyA9IHZhbHVlOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldERpc3BsYXlWYWx1ZSgpCi0gICAgewotICAgICAgcmV0dXJuIGRpc3BsYXlWYWx1ZV87Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VmFsdWUoKQotICAgIHsKLSAgICAgIHJldHVybiB2YWx1ZV87Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvZnJhZ21lbnQvdXRpbC9YU0RUeXBlRGVmaW5pdGlvblV0aWwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC91dGlsL1hTRFR5cGVEZWZpbml0aW9uVXRpbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzU5ZTE5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9mcmFnbWVudC91dGlsL1hTRFR5cGVEZWZpbml0aW9uVXRpbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC51dGlsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLkZyYWdtZW50Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb21wbGV4VHlwZUNvbnRlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb247Ci0KLXB1YmxpYyBjbGFzcyBYU0RUeXBlRGVmaW5pdGlvblV0aWwgewotICBwcml2YXRlIFhTRFR5cGVEZWZpbml0aW9uVXRpbCgpIHsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1hTREJ1aWx0SW5UeXBlRGVmaW5pdGlvbihYU0RUeXBlRGVmaW5pdGlvbiB0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgbnMgPSB0eXBlLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgIHJldHVybiAobnMgIT0gbnVsbCAmJiBucy5lcXVhbHMoRnJhZ21lbnRDb25zdGFudHMuVVJJX1hTRCkpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNSb290VHlwZURlZmluaXRpb24oWFNEVHlwZURlZmluaXRpb24gdHlwZSkgewotICAgIGlmICh0eXBlID09IG51bGwpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBYU0RUeXBlRGVmaW5pdGlvbiBiYXNlVHlwZSA9IHR5cGUuZ2V0QmFzZVR5cGUoKTsKLSAgICBpZiAoYmFzZVR5cGUgPT0gbnVsbCkKLSAgICAgIHJldHVybiB0cnVlOwotICAgIFN0cmluZyB0eXBlTlMgPSB0eXBlLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgIFN0cmluZyBiYXNlVHlwZU5TID0gYmFzZVR5cGUuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0gICAgU3RyaW5nIHR5cGVOYW1lID0gdHlwZS5nZXROYW1lKCk7Ci0gICAgU3RyaW5nIGJhc2VUeXBlTmFtZSA9IGJhc2VUeXBlLmdldE5hbWUoKTsKLSAgICBib29sZWFuIHNhbWVOUzsKLSAgICBib29sZWFuIHNhbWVOYW1lOwotICAgIGlmICh0eXBlTlMgPT0gbnVsbCAmJiBiYXNlVHlwZU5TID09IG51bGwpCi0gICAgICBzYW1lTlMgPSB0cnVlOwotICAgIGVsc2UgaWYgKHR5cGVOUyAhPSBudWxsICYmIGJhc2VUeXBlTlMgIT0gbnVsbCAmJiB0eXBlTlMuZXF1YWxzKGJhc2VUeXBlTlMpKQotICAgICAgc2FtZU5TID0gdHJ1ZTsKLSAgICBlbHNlCi0gICAgICBzYW1lTlMgPSBmYWxzZTsKLSAgICBpZiAodHlwZU5hbWUgPT0gbnVsbCAmJiBiYXNlVHlwZU5hbWUgPT0gbnVsbCkKLSAgICAgIHNhbWVOYW1lID0gdHJ1ZTsKLSAgICBlbHNlIGlmICh0eXBlTmFtZSAhPSBudWxsICYmIGJhc2VUeXBlTmFtZSAhPSBudWxsICYmIHR5cGVOYW1lLmVxdWFscyhiYXNlVHlwZU5hbWUpKQotICAgICAgc2FtZU5hbWUgPSB0cnVlOwotICAgIGVsc2UKLSAgICAgIHNhbWVOYW1lID0gZmFsc2U7Ci0gICAgcmV0dXJuIChzYW1lTlMgJiYgc2FtZU5hbWUpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIFhTRFR5cGVEZWZpbml0aW9uIHJlc29sdmVUb1hTREJ1aWx0SW5UeXBlRGVmaW5pdGlvbihYU0RUeXBlRGVmaW5pdGlvbiB0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0gbnVsbCkKLSAgICAgIHJldHVybiBudWxsOwotICAgIFhTRFR5cGVEZWZpbml0aW9uIGN1cnJUeXBlID0gdHlwZTsKLSAgICB3aGlsZSAoIWlzWFNEQnVpbHRJblR5cGVEZWZpbml0aW9uKGN1cnJUeXBlKSkgewotICAgICAgaWYgKGlzUm9vdFR5cGVEZWZpbml0aW9uKGN1cnJUeXBlKSkKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICBjdXJyVHlwZSA9IGN1cnJUeXBlLmdldEJhc2VUeXBlKCk7Ci0gICAgfQotICAgIHJldHVybiBjdXJyVHlwZTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1NvYXBFbmNBcnJheShYU0RUeXBlRGVmaW5pdGlvbiB0eXBlKSB7Ci0gICAgWFNEVHlwZURlZmluaXRpb24gY3VyclR5cGUgPSB0eXBlOwotICAgIGlmIChjdXJyVHlwZSAhPSBudWxsKQotICAgIHdoaWxlKGN1cnJUeXBlICE9IG51bGwpIHsKLSAgICAgIFN0cmluZyBucyA9IGN1cnJUeXBlLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgU3RyaW5nIG5hbWUgPSBjdXJyVHlwZS5nZXROYW1lKCk7Ci0gICAgICBpZiAoRnJhZ21lbnRDb25zdGFudHMuVVJJX1NPQVAuZXF1YWxzKG5zKSAmJiBGcmFnbWVudENvbnN0YW50cy5RTkFNRV9MT0NBTF9OQU1FX0FSUkFZLmVxdWFscyhuYW1lKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmIChpc1Jvb3RUeXBlRGVmaW5pdGlvbihjdXJyVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGVsc2UKLSAgICAgICAgY3VyclR5cGUgPSBjdXJyVHlwZS5nZXRCYXNlVHlwZSgpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgY29tcGxleCB0eXBlIGNvbnRlbnQgZ2l2ZW4gYSBjb21wbGV4IHR5cGUuCi0gICAqIElmIGNvbXBsZXhUeXBlIGlzIGEgdXNlciBkZWZpbmVkIHR5cGU6Ci0gICAqICAgVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIHVzZXIgZGVmaW5lZCBjb21wbGV4IGNvbnRlbnQgb2YgdGhpcyB0eXBlIG9yIHRoZSBjb250ZW50IG9mIHRoZSBleHRlbmRlZAotICAgKiAgIG9yIGRlcml2ZWQgdHlwZSBpZmYgdGhlIGV4dGVuZGVkIG9yIGRlcml2ZWQgdHlwZSBpcyBub3QgYSBidWlsdC1pbiBYU0QgdHlwZSAoZm9yIGV4YW1wbGUsIHhzZDphbnlUeXBlKS4KLSAgICogSWYgY29tcGxleFR5cGUgaXMgYSBidWlsdC1pbiBYU0QgdHlwZToKLSAgICogICBJdCB3aWxsIHJldHVybiB0aGUgY29tcGxleCBjb250ZW50IG9mIHRoaXMgYnVpbHQtaW4gWFNEIGNvbXBsZXggdHlwZS4gIEl0IHdpbGwgbm90IHJldHVybiB0aGUKLSAgICogICBjb21wbGV4IGNvbnRlbnQgb2YgaXRzIGV4dGVuZGVkIG9yIGRlcml2ZWQgdHlwZS4KLSAgICogQHBhcmFtIGNvbXBsZXhUeXBlIFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbiBjb21wbGV4IHR5cGUuCi0gICAqIEByZXR1cm4gWFNEQ29tcGxleFR5cGVDb250ZW50IFhTRENvbXBsZXhUeXBlQ29udGVudCB0aGUgcmVzb2x2ZWQgY29tcGxleCB0eXBlIGNvbnRlbnQuCi0gICoqLwotICBwdWJsaWMgc3RhdGljIFhTRENvbXBsZXhUeXBlQ29udGVudCBnZXRYU0RDb21wbGV4VHlwZUNvbnRlbnQoWFNEQ29tcGxleFR5cGVEZWZpbml0aW9uIGNvbXBsZXhUeXBlKQotICB7Ci0gICAgaWYgKCFpc1hTREJ1aWx0SW5UeXBlRGVmaW5pdGlvbihjb21wbGV4VHlwZSkpCi0gICAgewotICAgICAgWFNEVHlwZURlZmluaXRpb24gdHlwZSA9IGNvbXBsZXhUeXBlOwotICAgICAgd2hpbGUgKCFpc1hTREJ1aWx0SW5UeXBlRGVmaW5pdGlvbih0eXBlKSAmJiAodHlwZSBpbnN0YW5jZW9mIFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbikpCi0gICAgICB7Ci0gICAgICAgIFhTRENvbXBsZXhUeXBlQ29udGVudCBjb21wbGV4VHlwZUNvbnRlbnQgPSAoKFhTRENvbXBsZXhUeXBlRGVmaW5pdGlvbil0eXBlKS5nZXRDb250ZW50KCk7Ci0gICAgICAgIGlmIChjb21wbGV4VHlwZUNvbnRlbnQgIT0gbnVsbCkKLSAgICAgICAgICByZXR1cm4gY29tcGxleFR5cGVDb250ZW50OwotICAgICAgICBpZiAoaXNSb290VHlwZURlZmluaXRpb24odHlwZSkpCi0gICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHR5cGUgPSB0eXBlLmdldEJhc2VUeXBlKCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGNvbXBsZXhUeXBlLmdldENvbnRlbnQoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL0RldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBmMzhlZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvRGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLlNlbGVjdFdTRExQcm9wZXJ0aWVzVG9vbEFjdGlvbjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIERldGFpbHNUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotCi0gIHB1YmxpYyBTdHJpbmcgZm9ybUxpbmtfOwotCi0gIHB1YmxpYyBEZXRhaWxzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCwgU3RyaW5nIGZvcm1MaW5rKSB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZGV0YWlsc19lbmFibGVkLmdpZiIsICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIGZvcm1MaW5rXyA9IGZvcm1MaW5rOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKCkgewotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgcmV0dXJuIFNlbGVjdFdTRExQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgcmV0dXJuIGZvcm1MaW5rXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL0ludm9rZVdTRExPcGVyYXRpb25Ub29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvSW52b2tlV1NETE9wZXJhdGlvblRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y5NDY5OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvSW52b2tlV1NETE9wZXJhdGlvblRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLlNlbGVjdFdTRExQcm9wZXJ0aWVzVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExPcGVyYXRpb25FbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgSW52b2tlV1NETE9wZXJhdGlvblRvb2wgZXh0ZW5kcyBGb3JtVG9vbCB7Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZnJhZ21lbnRWaWV3SURfOwotICBwcml2YXRlIFN0cmluZyBmcmFnbWVudE5hbWVBbmNob3JJRF87Ci0gIHByaXZhdGUgU3RyaW5nIGVuZFBvaW50XzsKLQotICBwdWJsaWMgSW52b2tlV1NETE9wZXJhdGlvblRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICBzdXBlcih0b29sTWFuYWdlciwgIndzZGwvaW1hZ2VzL2ludm9rZV93c2RsX29wZXJhdGlvbl9lbmFibGVkLmdpZiIsICJ3c2RsL2ltYWdlcy9pbnZva2Vfd3NkbF9vcGVyYXRpb25faGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICBmcmFnbWVudFZpZXdJRF8gPSBGcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9WSUVXX1NXSVRDSF9TT1VSQ0VfVE9fRk9STTsKLSAgICBmcmFnbWVudE5hbWVBbmNob3JJRF8gPSBudWxsOwotICAgIGVuZFBvaW50XyA9IG51bGw7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBpbml0RGVmYXVsdFByb3BlcnRpZXMoKSB7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICByZXR1cm4gU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtTGluaygpIHsKLSAgICBTdHJpbmdCdWZmZXIgZm9ybUxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgZm9ybUxpbmsuYXBwZW5kKCJ3c2RsL2Zvcm1zL0ludm9rZVdTRExPcGVyYXRpb25Gb3JtLmpzcCIpOwotICAgIFN0cmluZyBuYW1lQW5jaG9ySUQgPSBnZXRGcmFnbWVudE5hbWVBbmNob3JJRCgpOwotICAgIGlmIChuYW1lQW5jaG9ySUQgIT0gbnVsbCAmJiBuYW1lQW5jaG9ySUQubGVuZ3RoKCkgPiAwKSB7Ci0gICAgICBmb3JtTGluay5hcHBlbmQoIiMiKTsKLSAgICAgIGZvcm1MaW5rLmFwcGVuZChuYW1lQW5jaG9ySUQpOwotICAgICAgc2V0RnJhZ21lbnROYW1lQW5jaG9ySUQobnVsbCk7Ci0gICAgfQotICAgIHJldHVybiBmb3JtTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGb3JtQWN0aW9uTGluayhpbnQgb3BlcmF0aW9uVHlwZSxTdHJpbmcgZnJhZ21lbnRWaWV3SUQpCi0gIHsKLSAgICBzd2l0Y2ggKG9wZXJhdGlvblR5cGUpCi0gICAgewotICAgICAgY2FzZSBXU0RMT3BlcmF0aW9uRWxlbWVudC5PUEVSQVRJT05fVFlQRV9TT0FQOgotICAgICAgICBpZiAoZnJhZ21lbnRWaWV3SUQuZXF1YWxzKEZyYWdtZW50Q29uc3RhbnRzLkZSQUdNRU5UX1ZJRVdfU1dJVENIX0ZPUk1fVE9fU09VUkNFKSkKLSAgICAgICAgICByZXR1cm4gIndzZGwvYWN0aW9ucy9JbnZva2VXU0RMU09BUE9wZXJhdGlvblNvdXJjZUFjdGlvbkpTUC5qc3AiOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcmV0dXJuICJ3c2RsL2FjdGlvbnMvSW52b2tlV1NETFNPQVBPcGVyYXRpb25Gb3JtQWN0aW9uSlNQLmpzcCI7Ci0gICAgICBjYXNlIFdTRExPcGVyYXRpb25FbGVtZW50Lk9QRVJBVElPTl9UWVBFX0hUVFBfR0VUOgotICAgICAgICByZXR1cm4gIndzZGwvYWN0aW9ucy9JbnZva2VXU0RMSHR0cEdldE9wZXJhdGlvbkZvcm1BY3Rpb25KU1AuanNwIjsKLSAgICAgIGNhc2UgV1NETE9wZXJhdGlvbkVsZW1lbnQuT1BFUkFUSU9OX1RZUEVfSFRUUF9QT1NUOgotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJ3c2RsL2FjdGlvbnMvSW52b2tlV1NETEh0dHBQb3N0T3BlcmF0aW9uRm9ybUFjdGlvbkpTUC5qc3AiOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RnJhZ21lbnRWaWV3SUQoKSB7Ci0gICAgcmV0dXJuIGZyYWdtZW50Vmlld0lEXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEZyYWdtZW50Vmlld0lEKFN0cmluZyBmcmFnbWVudFZpZXdJRCkgewotICAgIGZyYWdtZW50Vmlld0lEXyA9IGZyYWdtZW50Vmlld0lEOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRGcmFnbWVudE5hbWVBbmNob3JJRCgpIHsKLSAgICByZXR1cm4gZnJhZ21lbnROYW1lQW5jaG9ySURfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RnJhZ21lbnROYW1lQW5jaG9ySUQoU3RyaW5nIGZyYWdtZW50TmFtZUFuY2hvcklEKSB7Ci0gICAgZnJhZ21lbnROYW1lQW5jaG9ySURfID0gZnJhZ21lbnROYW1lQW5jaG9ySUQ7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEVuZFBvaW50KCkKLSAgewotICAgIHJldHVybiBlbmRQb2ludF87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRFbmRQb2ludChTdHJpbmcgZW5kUG9pbnQpCi0gIHsKLSAgICBlbmRQb2ludF8gPSBlbmRQb2ludDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL09wZW5XU0RMVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL09wZW5XU0RMVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjhjMWZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9PcGVuV1NETFRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLlNlbGVjdFdTRExQcm9wZXJ0aWVzVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIE9wZW5XU0RMVG9vbCBleHRlbmRzIEZvcm1Ub29sIHsKLQotICAgIHB1YmxpYyBPcGVuV1NETFRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJ3c2RsL2ltYWdlcy9vcGVuX3dzZGxfZW5hYmxlZC5naWYiLCAid3NkbC9pbWFnZXMvb3Blbl93c2RsX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTRExQcm9wZXJ0aWVzVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gIndzZGwvZm9ybXMvT3BlbldTRExGb3JtLmpzcCI7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvU09BUE1lc3NhZ2VRdWV1ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1NPQVBNZXNzYWdlUXVldWUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmMGFmYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvU09BUE1lc3NhZ2VRdWV1ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWU7Ci0KLXB1YmxpYyBjbGFzcyBTT0FQTWVzc2FnZVF1ZXVlIGV4dGVuZHMgTWVzc2FnZVF1ZXVlCi17Ci0gIHByaXZhdGUgVmVjdG9yIGNhY2hlZE1lc3NhZ2VMaXN0XzsKLQotICBwdWJsaWMgU09BUE1lc3NhZ2VRdWV1ZSgpCi0gIHsKLSAgICBzdXBlcigpOwotICAgIGNhY2hlZE1lc3NhZ2VMaXN0XyA9IG5ldyBWZWN0b3IoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGNsZWFyKCkKLSAgewotICAgIGNhY2hlZE1lc3NhZ2VMaXN0Xy5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgIG1lc3NhZ2VMaXN0Xy5yZW1vdmVBbGxFbGVtZW50cygpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlc0Zyb21MaXN0KCkKLSAgewotICAgIGlmIChtZXNzYWdlTGlzdF8uc2l6ZSgpID09IDApCi0gICAgICBjb3B5TWVzc2FnZXMoY2FjaGVkTWVzc2FnZUxpc3RfLG1lc3NhZ2VMaXN0Xyk7Ci0gICAgZWxzZQotICAgICAgY29weU1lc3NhZ2VzKG1lc3NhZ2VMaXN0XyxjYWNoZWRNZXNzYWdlTGlzdF8pOwotICAgIHJldHVybiBzdXBlci5nZXRNZXNzYWdlc0Zyb21MaXN0KCk7Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIHZvaWQgY29weU1lc3NhZ2VzKFZlY3RvciBzb3VyY2VMaXN0LFZlY3RvciBkZXN0TGlzdCkKLSAgewotICAgIGZvciAoaW50IGk9MDtpPHNvdXJjZUxpc3Quc2l6ZSgpO2krKykKLSAgICAgIGRlc3RMaXN0LmFkZEVsZW1lbnQoc291cmNlTGlzdC5lbGVtZW50QXQoaSkpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETEFkZFRvRmF2b3JpdGVzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExBZGRUb0Zhdm9yaXRlc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U5YjAwMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETEFkZFRvRmF2b3JpdGVzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQWN0aW9uVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5TZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5XU0RMQWRkVG9GYXZvcml0ZXNBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBXU0RMQWRkVG9GYXZvcml0ZXNUb29sIGV4dGVuZHMgQWN0aW9uVG9vbCB7Ci0gIHB1YmxpYyBXU0RMQWRkVG9GYXZvcml0ZXNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZmF2b3JpdGVzX2VuYWJsZWQuZ2lmIiwgImltYWdlcy9mYXZvcml0ZXNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBXU0RMQWRkVG9GYXZvcml0ZXNBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCkpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETEJpbmRpbmdEZXRhaWxzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExCaW5kaW5nRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkwNDc5Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETEJpbmRpbmdEZXRhaWxzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBXU0RMQmluZGluZ0RldGFpbHNUb29sIGV4dGVuZHMgRGV0YWlsc1Rvb2wgewotCi0gIHB1YmxpYyBXU0RMQmluZGluZ0RldGFpbHNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsIGFsdCwgIndzZGwvZm9ybXMvV1NETEJpbmRpbmdEZXRhaWxzRm9ybS5qc3AiKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExCaW5kaW5nTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExCaW5kaW5nTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmZjMDkzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9XU0RMQmluZGluZ05vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5FbGVtZW50QWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbEFkZEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsUmVtb3ZlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLldTRExNb2RlbENvbnN0YW50czsKLQotLy8gV1NETCBiaW5kaW5nIG5vZGUgZm9yIHRoZSBXU0RMIE5hdmlnYXRvciBUcmVlIFZpZXcKLXB1YmxpYyBjbGFzcyBXU0RMQmluZGluZ05vZGUgZXh0ZW5kcyBXU0RMTmF2aWdhdG9yTm9kZQotewotICBwdWJsaWMgV1NETEJpbmRpbmdOb2RlKFRyZWVFbGVtZW50IGVsZW1lbnQsTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsaW50IG5vZGVEZXB0aCkKLSAgewotICAgIHN1cGVyKGVsZW1lbnQsbm9kZU1hbmFnZXIsbm9kZURlcHRoLCJ3c2RsL2ltYWdlcy93c2RsX2JpbmRpbmdfbm9kZS5naWYiKTsKLSAgICBlbGVtZW50LmFkZExpc3RlbmVyKG5ldyBFbGVtZW50QWRhcHRlcigpCi0gICAgewotICAgICAgcHVibGljIHZvaWQgcmVsQWRkZWQoUmVsQWRkRXZlbnQgZXZlbnQpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyByZWwgPSBldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKTsKLSAgICAgICAgaWYgKHJlbC5lcXVhbHMoV1NETE1vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX09QRVJBVElPTikpIHsKLSAgICAgICAgICBXU0RMT3BlcmF0aW9uTm9kZSB3c2RsT3BlcmF0aW9uTm9kZSA9IG5ldyBXU0RMT3BlcmF0aW9uTm9kZSgoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0UGFyZW50RWxlbWVudCgpLCBub2RlTWFuYWdlcl8sIG5vZGVEZXB0aF8gKyAxKTsKLSAgICAgICAgICBhZGRDaGlsZCh3c2RsT3BlcmF0aW9uTm9kZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgcmVsUmVtb3ZlZChSZWxSZW1vdmVFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgICAgVHJlZUVsZW1lbnQgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgaWYgKGV2ZW50LmdldEluQm91bmRSZWxOYW1lKCkuZXF1YWxzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9PUEVSQVRJT04pKSB7Ci0gICAgICAgICAgY2hpbGRFbGVtZW50ID0gKFRyZWVFbGVtZW50KWV2ZW50LmdldEluYm91bmRFbGVtZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpLmVxdWFscyhXU0RMTW9kZWxDb25zdGFudHMuUkVMX1dTRExfT1BFUkFUSU9OKSkgewotICAgICAgICAgIGNoaWxkRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRPdXRCb3VuZEVsZW1lbnQoKTsKLSAgICAgICAgfQotICAgICAgICByZW1vdmVDaGlsZE5vZGUoY2hpbGRFbGVtZW50KTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICBzZXRWaXNpYmlsaXR5T2ZDaGlsZHJlbihmYWxzZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBpbml0VG9vbHMoKQotICB7Ci0gICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKTsKLSAgICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICBuZXcgV1NETEJpbmRpbmdEZXRhaWxzVG9vbCh0b29sTWFuYWdlcl8sIHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfV1NETF9CSU5ESU5HX0RFVEFJTFMiKSk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExEZXRhaWxzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExEZXRhaWxzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWE4MTAwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9XU0RMRGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgV1NETERldGFpbHNUb29sIGV4dGVuZHMgRGV0YWlsc1Rvb2wgewotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPUk1fVklFV19JRCA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNPVVJDRV9WSUVXX0lEID0gMTsKLQotICBwcml2YXRlIGludCB2aWV3SWRfOwotCi0gIHB1YmxpYyBXU0RMRGV0YWlsc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICBzdXBlcih0b29sTWFuYWdlciwgYWx0LCAid3NkbC9mb3Jtcy9XU0RMRGV0YWlsc0Zvcm0uanNwIik7Ci0gICAgdmlld0lkXyA9IEZPUk1fVklFV19JRDsKLSAgfQotCi0gIHB1YmxpYyBpbnQgZ2V0Vmlld0lkKCkgewotICAgIHJldHVybiB2aWV3SWRfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0Vmlld0lkKGludCB2aWV3SWQpIHsKLSAgICBpZiAodmlld0lkID09IEZPUk1fVklFV19JRCB8fCB2aWV3SWQgPT0gU09VUkNFX1ZJRVdfSUQpCi0gICAgICB2aWV3SWRfID0gdmlld0lkOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdG9nZ2xlVmlld0lkKCkgewotICAgIGlmICh2aWV3SWRfID09IEZPUk1fVklFV19JRCkKLSAgICAgIHZpZXdJZF8gPSBTT1VSQ0VfVklFV19JRDsKLSAgICBlbHNlCi0gICAgICB2aWV3SWRfID0gRk9STV9WSUVXX0lEOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETEltcG9ydFdTRExUb0ZpbGVTeXN0ZW1Ub29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETEltcG9ydFdTRExUb0ZpbGVTeXN0ZW1Ub29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMzdkOTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExJbXBvcnRXU0RMVG9GaWxlU3lzdGVtVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuSW1wb3J0VG9GaWxlU3lzdGVtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5TZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5XU0RMSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbjsKLQotcHVibGljIGNsYXNzIFdTRExJbXBvcnRXU0RMVG9GaWxlU3lzdGVtVG9vbCBleHRlbmRzIEltcG9ydFRvRmlsZVN5c3RlbVRvb2wgewotICBwdWJsaWMgV1NETEltcG9ydFdTRExUb0ZpbGVTeXN0ZW1Ub29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBhbHQpIHsKLSAgICBzdXBlcih0b29sTWFuYWdlcixhbHQpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlLmdldE5vZGVJZCgpLHRvb2xJZF8sbm9kZS5nZXRWaWV3SWQoKSxub2RlLmdldFZpZXdUb29sSWQoKSxmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBXU0RMSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGUuZ2V0Tm9kZUlkKCksdG9vbElkXyxub2RlLmdldFZpZXdJZCgpLG5vZGUuZ2V0Vmlld1Rvb2xJZCgpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExJbXBvcnRXU0RMVG9Xb3JrYmVuY2hUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaFRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM4NTI0MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaFRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkltcG9ydFRvV29ya2JlbmNoVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5TZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBXU0RMSW1wb3J0V1NETFRvV29ya2JlbmNoVG9vbCBleHRlbmRzIEltcG9ydFRvV29ya2JlbmNoVG9vbCB7Ci0gIHB1YmxpYyBXU0RMSW1wb3J0V1NETFRvV29ya2JlbmNoVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlcixTdHJpbmcgYWx0KSB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsYWx0KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgTm9kZSBub2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICByZXR1cm4gU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZS5nZXROb2RlSWQoKSx0b29sSWRfLG5vZGUuZ2V0Vmlld0lkKCksbm9kZS5nZXRWaWV3VG9vbElkKCksZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgIHJldHVybiAid3NkbC9mb3Jtcy9XU0RMSW1wb3J0V1NETFRvV29ya2JlbmNoRm9ybS5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmM2UzYmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sIGV4dGVuZHMgTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wgewotICBwdWJsaWMgV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLFN0cmluZyBhbHQpIHsKLSAgICBzdXBlcih0b29sTWFuYWdlcixhbHQpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICBOb2RlIG5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlLmdldE5vZGVJZCgpLHRvb2xJZF8sbm9kZS5nZXRWaWV3SWQoKSxub2RlLmdldFZpZXdUb29sSWQoKSxmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgcmV0dXJuICJ3c2RsL2Zvcm1zL1dTRExMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkRm9ybS5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETE1haW5Ob2RlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETE1haW5Ob2RlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NzczZjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExNYWluTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnRBZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsQWRkRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxSZW1vdmVFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuV1NETE1vZGVsQ29uc3RhbnRzOwotCi0vLyBSb290IG5vZGUgZm9yIHRoZSBXU0RMIE5hdmlnYXRvciBUcmVlIFZpZXcKLXB1YmxpYyBjbGFzcyBXU0RMTWFpbk5vZGUgZXh0ZW5kcyBXU0RMTmF2aWdhdG9yTm9kZQotewotICBwdWJsaWMgV1NETE1haW5Ob2RlKFRyZWVFbGVtZW50IGVsZW1lbnQsTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIpCi0gIHsKLSAgICBzdXBlcihlbGVtZW50LG5vZGVNYW5hZ2VyLDEsImltYWdlcy9yb290X21haW4uZ2lmIik7Ci0gICAgZWxlbWVudC5hZGRMaXN0ZW5lcihuZXcgRWxlbWVudEFkYXB0ZXIoKQotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIHJlbEFkZGVkKFJlbEFkZEV2ZW50IGV2ZW50KQotICAgICAgewotICAgICAgICBTdHJpbmcgcmVsID0gZXZlbnQuZ2V0T3V0Qm91bmRSZWxOYW1lKCk7Ci0gICAgICAgIGlmIChyZWwuZXF1YWxzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETCkpIHsKLSAgICAgICAgICBXU0RMTm9kZSB3c2RsTm9kZSA9IG5ldyBXU0RMTm9kZSgoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0UGFyZW50RWxlbWVudCgpLCBub2RlTWFuYWdlcl8sIG5vZGVEZXB0aF8gKyAxKTsKLSAgICAgICAgICBhZGRDaGlsZCh3c2RsTm9kZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgcmVsUmVtb3ZlZChSZWxSZW1vdmVFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgICAgVHJlZUVsZW1lbnQgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgaWYgKGV2ZW50LmdldEluQm91bmRSZWxOYW1lKCkuZXF1YWxzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETCkpIHsKLSAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0SW5ib3VuZEVsZW1lbnQoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXZlbnQuZ2V0T3V0Qm91bmRSZWxOYW1lKCkuZXF1YWxzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETCkpIHsKLSAgICAgICAgICBjaGlsZEVsZW1lbnQgPSAoVHJlZUVsZW1lbnQpZXZlbnQuZ2V0T3V0Qm91bmRFbGVtZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVtb3ZlQ2hpbGROb2RlKGNoaWxkRWxlbWVudCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBpbml0VG9vbHMoKQotICB7Ci0gICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKTsKLSAgICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgICBuZXcgT3BlbldTRExUb29sKHRvb2xNYW5hZ2VyXywgd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9PUEVOX1dTREwiKSk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExOYXZpZ2F0b3JOb2RlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETE5hdmlnYXRvck5vZGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI3NTgwZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETE5hdmlnYXRvck5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5TZWxlY3RXU0RMTmF2aWdhdG9yTm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLlRvZ2dsZVdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgV1NETE5hdmlnYXRvck5vZGUgZXh0ZW5kcyBOb2RlCi17Ci0gIHB1YmxpYyBXU0RMTmF2aWdhdG9yTm9kZShUcmVlRWxlbWVudCBlbGVtZW50LE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLGludCBub2RlRGVwdGgsU3RyaW5nIGltYWdlUGF0aCkKLSAgewotICAgIHN1cGVyKGVsZW1lbnQsbm9kZU1hbmFnZXIsbm9kZURlcHRoLGltYWdlUGF0aCk7Ci0gIH0KLQotICAvLyB3c2RsL2FjdGlvbnMvVG9nZ2xlV1NETE5hdmlnYXRvck5vZGVBY3Rpb24uanNwP25vZGVJZD0uLi4KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUb2dnbGVOb2RlQWN0aW9uSHJlZigpCi0gIHsKLSAgICByZXR1cm4gVG9nZ2xlV1NETE5hdmlnYXRvck5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWRfLGlzT3Blbl8pOwotICB9Ci0KLSAgLy8gd3NkbC9hY3Rpb25zL1NlbGVjdFdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uLmpzcD9ub2RlSWQ9Li4uCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0TGlua0FjdGlvbkhyZWYoKQotICB7Ci0gICAgcmV0dXJuIFNlbGVjdFdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkXyxmYWxzZSk7Ci0gIH0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETE5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9XU0RMTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjEyNzRjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9XU0RMTm9kZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLkVsZW1lbnRBZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsQWRkRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxSZW1vdmVFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuV1NETE1vZGVsQ29uc3RhbnRzOwotCi0vLyBXU0RMIG5vZGUgZm9yIHRoZSBXU0RMIE5hdmlnYXRvciBUcmVlIFZpZXcKLXB1YmxpYyBjbGFzcyBXU0RMTm9kZSBleHRlbmRzIFdTRExOYXZpZ2F0b3JOb2RlCi17Ci0gIHB1YmxpYyBXU0RMTm9kZShUcmVlRWxlbWVudCBlbGVtZW50LE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLGludCBub2RlRGVwdGgpCi0gIHsKLSAgICBzdXBlcihlbGVtZW50LG5vZGVNYW5hZ2VyLG5vZGVEZXB0aCwiaW1hZ2VzL3dzZGwuZ2lmIik7Ci0gICAgZWxlbWVudC5hZGRMaXN0ZW5lcihuZXcgRWxlbWVudEFkYXB0ZXIoKQotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIHJlbEFkZGVkKFJlbEFkZEV2ZW50IGV2ZW50KQotICAgICAgewotICAgICAgICBTdHJpbmcgcmVsID0gZXZlbnQuZ2V0T3V0Qm91bmRSZWxOYW1lKCk7Ci0gICAgICAgIGlmIChyZWwuZXF1YWxzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9TRVJWSUNFKSkgewotICAgICAgICAgIFdTRExTZXJ2aWNlTm9kZSB3c2RsU2VydmljZU5vZGUgPSBuZXcgV1NETFNlcnZpY2VOb2RlKChUcmVlRWxlbWVudClldmVudC5nZXRQYXJlbnRFbGVtZW50KCksIG5vZGVNYW5hZ2VyXywgbm9kZURlcHRoXyArIDEpOwotICAgICAgICAgIGFkZENoaWxkKHdzZGxTZXJ2aWNlTm9kZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgcmVsUmVtb3ZlZChSZWxSZW1vdmVFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgICAgVHJlZUVsZW1lbnQgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgaWYgKGV2ZW50LmdldEluQm91bmRSZWxOYW1lKCkuZXF1YWxzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9TRVJWSUNFKSkgewotICAgICAgICAgIGNoaWxkRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRJbmJvdW5kRWxlbWVudCgpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKS5lcXVhbHMoV1NETE1vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX1NFUlZJQ0UpKSB7Ci0gICAgICAgICAgY2hpbGRFbGVtZW50ID0gKFRyZWVFbGVtZW50KWV2ZW50LmdldE91dEJvdW5kRWxlbWVudCgpOwotICAgICAgICB9Ci0gICAgICAgIHJlbW92ZUNoaWxkTm9kZShjaGlsZEVsZW1lbnQpOwotICAgICAgfQotICAgIH0pOwotICAgIHNldFZpc2liaWxpdHlPZkNoaWxkcmVuKGZhbHNlKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXRUb29scygpCi0gIHsKLSAgICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpOwotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgIG5ldyBXU0RMRGV0YWlsc1Rvb2wodG9vbE1hbmFnZXJfLCB3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1dTRExfREVUQUlMUyIpKTsKLSAgICBuZXcgV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaFRvb2wodG9vbE1hbmFnZXJfLCBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9JTVBPUlRfV1NETF9UT19XT1JLQkVOQ0giKSk7Ci0gICAgbmV3IFdTRExJbXBvcnRXU0RMVG9GaWxlU3lzdGVtVG9vbCh0b29sTWFuYWdlcl8sIGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1dTRExfSU1QT1JUX1RPX0ZTIikpOwotICAgIG5ldyBXU0RMTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wodG9vbE1hbmFnZXJfLCBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9MQVVOQ0hfV0VCX1NFUlZJQ0VfV0laQVJEIikpOwotICAgIG5ldyBXU0RMQWRkVG9GYXZvcml0ZXNUb29sKHRvb2xNYW5hZ2VyXywgd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9BRERfV1NETF9UT19GQVZPUklURVMiKSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9XU0RMT3BlcmF0aW9uTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExPcGVyYXRpb25Ob2RlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjOGUzYzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExPcGVyYXRpb25Ob2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxBZGRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbFJlbW92ZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotCi0vLyBXU0RMIG9wZXJhdGlvbiBub2RlIGZvciB0aGUgV1NETCBOYXZpZ2F0b3IgVHJlZSBWaWV3Ci1wdWJsaWMgY2xhc3MgV1NETE9wZXJhdGlvbk5vZGUgZXh0ZW5kcyBXU0RMTmF2aWdhdG9yTm9kZQotewotICBwdWJsaWMgV1NETE9wZXJhdGlvbk5vZGUoVHJlZUVsZW1lbnQgZWxlbWVudCxOb2RlTWFuYWdlciBub2RlTWFuYWdlcixpbnQgbm9kZURlcHRoKQotICB7Ci0gICAgc3VwZXIoZWxlbWVudCxub2RlTWFuYWdlcixub2RlRGVwdGgsIndzZGwvaW1hZ2VzL3dzZGxfb3BlcmF0aW9uX25vZGUuZ2lmIik7Ci0gICAgZWxlbWVudC5hZGRMaXN0ZW5lcihuZXcgRWxlbWVudEFkYXB0ZXIoKQotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIHJlbEFkZGVkKFJlbEFkZEV2ZW50IGV2ZW50KQotICAgICAgewotICAgICAgfQotCi0gICAgICBwdWJsaWMgdm9pZCByZWxSZW1vdmVkKFJlbFJlbW92ZUV2ZW50IGV2ZW50KQotICAgICAgewotICAgICAgfQotICAgIH0pOwotICB9Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgaW5pdFRvb2xzKCkKLSAgewotICAgIENvbnRyb2xsZXIgY29udHJvbGxlciA9IG5vZGVNYW5hZ2VyXy5nZXRDb250cm9sbGVyKCk7Ci0gICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICAgbmV3IEludm9rZVdTRExPcGVyYXRpb25Ub29sKHRvb2xNYW5hZ2VyXywgd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9JTlZPS0VfV1NETF9PUEVSQVRJT04iKSk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExQZXJzcGVjdGl2ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExQZXJzcGVjdGl2ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjFiZDg1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9XU0RMUGVyc3BlY3RpdmUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM3MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldENvbnRleHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVjb3JlUGFja2FnZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLmltcGwuUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuQmFzaWNNb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVVJMVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5PcGVuV1NETEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLlN3aXRjaFBlcnNwZWN0aXZlRnJvbVdTRExBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5VcGRhdGVXU0RMQmluZGluZ0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuQmluZGluZ1R5cGVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC5XU0RMQmluZGluZ0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExTZXJ2aWNlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuaW1wbC5YU0RQYWNrYWdlSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5YU0RSZXNvdXJjZUZhY3RvcnlJbXBsOwotCi1wdWJsaWMgY2xhc3MgV1NETFBlcnNwZWN0aXZlIGV4dGVuZHMgUGVyc3BlY3RpdmUKLXsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFVTX0NPTlRFTlRfREVGQVVMVCA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRVU19DT05URU5UX1JFU1VMVF9GT1JNID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFVTX0NPTlRFTlRfUkVTVUxUX1NPVVJDRSA9IDI7Ci0KLSAgcHJpdmF0ZSBCYXNpY01vZGVsIG1vZGVsXzsKLSAgcHJpdmF0ZSBOb2RlTWFuYWdlciBub2RlTWFuYWdlcl87Ci0gIHByaXZhdGUgU3RyaW5nIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc187Ci0gIHByaXZhdGUgU3RyaW5nIHNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXzsKLSAgcHJpdmF0ZSBTdHJpbmcgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c187Ci0gIHByaXZhdGUgU3RyaW5nIHNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c187Ci0gIHByaXZhdGUgaW50IHN0YXR1c0NvbnRlbnRUeXBlXzsKLQotICBwcml2YXRlIFNPQVBNZXNzYWdlUXVldWUgc29hcFJlcXVlc3RRdWV1ZV87Ci0gIHByaXZhdGUgU09BUE1lc3NhZ2VRdWV1ZSBzb2FwUmVzcG9uc2VRdWV1ZV87Ci0gIHByaXZhdGUgTm9kZSBvcGVyYXRpb25Ob2RlXzsKLQotICBzdGF0aWMKLSAgewotICAgIC8vIEluaXRpYWxpemUgdGhlIFhTRCBzdWJzeXN0ZW0uCi0gICAgKG5ldyBSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeUltcGwoKSkuZ2V0RXh0ZW5zaW9uVG9GYWN0b3J5TWFwKCkucHV0KCJ4c2QiLG5ldyBYU0RSZXNvdXJjZUZhY3RvcnlJbXBsKCkpOwotICAgIC8vIHBvcnQgdG8gb3JnLmVjbGlwc2UueHNkCi0gICAgLy8gSW5pdC5pbml0KCk7Ci0gICAgRWNvcmVQYWNrYWdlSW1wbC5pbml0KCk7Ci0gICAgWFNEUGFja2FnZUltcGwuaW5pdCgpOwotICB9Ci0KLSAgcHVibGljIFdTRExQZXJzcGVjdGl2ZShDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcigid3NkbCIsY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBpbml0UGVyc3BlY3RpdmUoU2VydmxldENvbnRleHQgYXBwbGljYXRpb24pCi0gIHsKLSAgICBtb2RlbF8gPSBuZXcgQmFzaWNNb2RlbCgid3NkbE1vZGVsIik7Ci0gICAgVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoZ2V0TWVzc2FnZSgiTk9ERV9OQU1FX1dTRExfTUFJTiIpLCBtb2RlbF8pOwotICAgIG1vZGVsXy5zZXRSb290RWxlbWVudCh0cmVlRWxlbWVudCk7Ci0gICAgbm9kZU1hbmFnZXJfID0gbmV3IE5vZGVNYW5hZ2VyKGNvbnRyb2xsZXJfKTsKLSAgICBXU0RMTWFpbk5vZGUgd3NkbE1haW5Ob2RlID0gbmV3IFdTRExNYWluTm9kZSh0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXJfKTsKLSAgICBub2RlTWFuYWdlcl8uc2V0Um9vdE5vZGUod3NkbE1haW5Ob2RlKTsKLQotICAgIC8vIFN0YXJ0aW5nIGZyYW1lc2V0IHNpemVzLgotICAgIGlmICghRGlyVXRpbHMuaXNSVEwoKSkKLSAgICAgIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc18gPSAiMzAlLCoiOwotICAgIGVsc2UKLSAgICAgIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc18gPSAiKiwzMCUiOwotICAgIHNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9IHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc187Ci0gICAgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c18gPSAiNzUlLCoiOwotICAgIHNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c18gPSBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzXzsKLQotICAgIC8vIE1lc3NhZ2Ugc3RhdHVzIHBhbmUKLSAgICBzdGF0dXNDb250ZW50VHlwZV8gPSBTVEFUVVNfQ09OVEVOVF9ERUZBVUxUOwotICAgIHNvYXBSZXF1ZXN0UXVldWVfID0gbmV3IFNPQVBNZXNzYWdlUXVldWUoKTsKLSAgICBzb2FwUmVzcG9uc2VRdWV1ZV8gPSBuZXcgU09BUE1lc3NhZ2VRdWV1ZSgpOwotICAgIG9wZXJhdGlvbk5vZGVfID0gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHByZWxvYWRXU0RMKFN0cmluZ1tdIHdzZGxVUkxzKSB7Ci0gICAgaWYgKHdzZGxVUkxzICE9IG51bGwpIHsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd3NkbFVSTHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgT3BlbldTRExBY3Rpb24gb3BlbldTRExBY3Rpb24gPSBuZXcgT3BlbldTRExBY3Rpb24oY29udHJvbGxlcl8pOwotICAgICAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IG9wZW5XU0RMQWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICAgICAgU3RyaW5nIGRlY29kZWRXU0RMVVJMID0gVVJMVXRpbHMuZGVjb2RlKHdzZGxVUkxzW2ldKTsKLSAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMLCBkZWNvZGVkV1NETFVSTCk7Ci0gICAgICAgIG9wZW5XU0RMQWN0aW9uLnJ1bigpOwotICAgICAgfQotICAgICAgaWYgKHdzZGxVUkxzLmxlbmd0aCA+IDApCi0gICAgICAgIGNvbnRyb2xsZXJfLnNldEN1cnJlbnRQZXJzcGVjdGl2ZShBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfV1NETCk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBwcmVsb2FkRW5kcG9pbnRzKFN0cmluZ1tdIHdzZGxVUkxzLCBTdHJpbmdbXSBlbmRwb2ludHMpCi0gIHsKLSAgICBpZiAod3NkbFVSTHMgIT0gbnVsbCAmJiB3c2RsVVJMcy5sZW5ndGggPiAwICYmIGVuZHBvaW50cyAhPSBudWxsICYmIGVuZHBvaW50cy5sZW5ndGggPiAwKQotICAgIHsKLSAgICAgIFN0cmluZyB3c2RsVVJMID0gd3NkbFVSTHNbMF07Ci0gICAgICBWZWN0b3Igd3NkbE5vZGVzID0gbm9kZU1hbmFnZXJfLmdldFJvb3ROb2RlKCkuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgZm9yIChJdGVyYXRvciB3c2RsTm9kZXNJdGVyYXRvciA9IHdzZGxOb2Rlcy5pdGVyYXRvcigpOyB3c2RsTm9kZXNJdGVyYXRvci5oYXNOZXh0KCk7KQotICAgICAgewotICAgICAgICBOb2RlIHdzZGxOb2RlID0gKE5vZGUpd3NkbE5vZGVzSXRlcmF0b3IubmV4dCgpOwotICAgICAgICBpZiAod3NkbE5vZGUuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMod3NkbFVSTCkpCi0gICAgICAgIHsKLSAgICAgICAgICBWZWN0b3Igc2VydmljZU5vZGVzID0gd3NkbE5vZGUuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgICAgIGZvciAoSXRlcmF0b3Igc2VydmljZU5vZGVzSXRlcmF0b3IgPSBzZXJ2aWNlTm9kZXMuaXRlcmF0b3IoKTsgc2VydmljZU5vZGVzSXRlcmF0b3IuaGFzTmV4dCgpOykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBOb2RlIHNlcnZpY2VOb2RlID0gKE5vZGUpc2VydmljZU5vZGVzSXRlcmF0b3IubmV4dCgpOwotICAgICAgICAgICAgVmVjdG9yIGJpbmRpbmdOb2RlcyA9IHNlcnZpY2VOb2RlLmdldENoaWxkTm9kZXMoKTsKLSAgICAgICAgICAgIFN0cmluZ1tdIG5vZGVJZHMgPSBuZXcgU3RyaW5nW2JpbmRpbmdOb2Rlcy5zaXplKCldOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICBub2RlSWRzW2ldID0gU3RyaW5nLnZhbHVlT2YoKChOb2RlKWJpbmRpbmdOb2Rlcy5nZXQoaSkpLmdldE5vZGVJZCgpKTsKLSAgICAgICAgICAgIFVwZGF0ZVdTRExCaW5kaW5nQWN0aW9uIGFjdGlvbiA9IG5ldyBVcGRhdGVXU0RMQmluZGluZ0FjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgICAgICAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IG5ldyBIYXNodGFibGUoKTsKLSAgICAgICAgICAgIHByb3BlcnR5VGFibGUucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsIG5vZGVJZHMpOwotICAgICAgICAgICAgcHJvcGVydHlUYWJsZS5wdXQoV1NETEFjdGlvbklucHV0cy5FTkRfUE9JTlQsIGVuZHBvaW50cyk7Ci0gICAgICAgICAgICBhY3Rpb24uc2V0UHJvcGVydHlUYWJsZShwcm9wZXJ0eVRhYmxlKTsKLSAgICAgICAgICAgIGFjdGlvbi5leGVjdXRlKGZhbHNlKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgdm9pZCBwcmVzZWxlY3RTZXJ2aWNlT3JCaW5kaW5nKFN0cmluZ1tdIHdzZGxVUkxzLFN0cmluZ1tdIHNlcnZpY2VRTmFtZVN0cmluZ3MsU3RyaW5nW10gYmluZGluZ05hbWVTdHJpbmdzKQotICB7Ci0gICAgaWYgKHdzZGxVUkxzICE9IG51bGwgJiYgd3NkbFVSTHMubGVuZ3RoID4gMCkKLSAgICB7Ci0gICAgICBTdHJpbmcgd3NkbFVSTCA9IHdzZGxVUkxzWzBdOwotICAgICAgaWYgKHNlcnZpY2VRTmFtZVN0cmluZ3MgIT0gbnVsbCAmJiBzZXJ2aWNlUU5hbWVTdHJpbmdzLmxlbmd0aCA+IDApCi0gICAgICAgIHByZXNlbGVjdFNlcnZpY2Uod3NkbFVSTCxzZXJ2aWNlUU5hbWVTdHJpbmdzWzBdKTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaWYgKGJpbmRpbmdOYW1lU3RyaW5ncyAhPSBudWxsICYmIGJpbmRpbmdOYW1lU3RyaW5ncy5sZW5ndGggPiAwKQotICAgICAgICAgIHByZXNlbGVjdEJpbmRpbmcod3NkbFVSTCxiaW5kaW5nTmFtZVN0cmluZ3NbMF0pOwotICAgICAgfQotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSBmaW5hbCB2b2lkIHByZXNlbGVjdFNlcnZpY2UoU3RyaW5nIHdzZGxVUkwsU3RyaW5nIHNlcnZpY2VRTmFtZVN0cmluZykKLSAgewotICAgIFZlY3RvciB3c2RsTm9kZXMgPSBub2RlTWFuYWdlcl8uZ2V0Um9vdE5vZGUoKS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgZm9yIChpbnQgaT0wO2k8d3NkbE5vZGVzLnNpemUoKTtpKyspCi0gICAgewotICAgICAgTm9kZSB3c2RsTm9kZSA9IChOb2RlKXdzZGxOb2Rlcy5lbGVtZW50QXQoaSk7Ci0gICAgICBpZiAod3NkbE5vZGUuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMod3NkbFVSTCkpCi0gICAgICB7Ci0gICAgICAgIFZlY3RvciBzZXJ2aWNlTm9kZXMgPSB3c2RsTm9kZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICAgIGZvciAoaW50IGo9MDtqPHNlcnZpY2VOb2Rlcy5zaXplKCk7aisrKQotICAgICAgICB7Ci0gICAgICAgICAgTm9kZSBzZXJ2aWNlTm9kZSA9IChOb2RlKXNlcnZpY2VOb2Rlcy5lbGVtZW50QXQoaik7Ci0gICAgICAgICAgV1NETFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFdTRExTZXJ2aWNlRWxlbWVudClzZXJ2aWNlTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICAgIFNlcnZpY2Ugc2VydmljZSA9IHNlcnZpY2VFbGVtZW50LmdldFNlcnZpY2UoKTsKLSAgICAgICAgICBpZiAoc2VydmljZS5nZXRRTmFtZSgpLnRvU3RyaW5nKCkuZXF1YWxzKHNlcnZpY2VRTmFtZVN0cmluZykpCi0gICAgICAgICAgewotICAgICAgICAgICAgbm9kZU1hbmFnZXJfLnNldFNlbGVjdGVkTm9kZUlkKHNlcnZpY2VOb2RlLmdldE5vZGVJZCgpKTsKLSAgICAgICAgICAgIG5vZGVNYW5hZ2VyXy5tYWtlU2VsZWN0ZWROb2RlVmlzaWJsZSgpOwotICAgICAgICAgICAgY29udHJvbGxlcl8uc2V0Q3VycmVudFBlcnNwZWN0aXZlKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9XU0RMKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgCi0gIHByaXZhdGUgZmluYWwgdm9pZCBwcmVzZWxlY3RCaW5kaW5nKFN0cmluZyB3c2RsVVJMLFN0cmluZyBiaW5kaW5nTmFtZVN0cmluZykKLSAgewotICAgIFZlY3RvciB3c2RsTm9kZXMgPSBub2RlTWFuYWdlcl8uZ2V0Um9vdE5vZGUoKS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgZm9yIChpbnQgaT0wO2k8d3NkbE5vZGVzLnNpemUoKTtpKyspCi0gICAgewotICAgICAgTm9kZSB3c2RsTm9kZSA9IChOb2RlKXdzZGxOb2Rlcy5lbGVtZW50QXQoaSk7Ci0gICAgICBpZiAod3NkbE5vZGUuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMod3NkbFVSTCkpCi0gICAgICB7Ci0gICAgICAgIFZlY3RvciBzZXJ2aWNlTm9kZXMgPSB3c2RsTm9kZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICAgIGZvciAoaW50IGo9MDtqPHNlcnZpY2VOb2Rlcy5zaXplKCk7aisrKQotICAgICAgICB7Ci0gICAgICAgICAgTm9kZSBzZXJ2aWNlTm9kZSA9IChOb2RlKXNlcnZpY2VOb2Rlcy5lbGVtZW50QXQoaik7Ci0gICAgICAgICAgVmVjdG9yIGJpbmRpbmdOb2RlcyA9IHNlcnZpY2VOb2RlLmdldENoaWxkTm9kZXMoKTsKLSAgICAgICAgICBmb3IgKGludCBrPTA7azxiaW5kaW5nTm9kZXMuc2l6ZSgpO2srKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBOb2RlIGJpbmRpbmdOb2RlID0gKE5vZGUpYmluZGluZ05vZGVzLmVsZW1lbnRBdChrKTsKLSAgICAgICAgICAgIFdTRExCaW5kaW5nRWxlbWVudCBiaW5kaW5nRWxlbWVudCA9IChXU0RMQmluZGluZ0VsZW1lbnQpYmluZGluZ05vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChiaW5kaW5nRWxlbWVudC5nZXRCaW5kaW5nKCkuZ2V0UU5hbWUoKS50b1N0cmluZygpLmVxdWFscyhiaW5kaW5nTmFtZVN0cmluZykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG5vZGVNYW5hZ2VyXy5zZXRTZWxlY3RlZE5vZGVJZChiaW5kaW5nTm9kZS5nZXROb2RlSWQoKSk7Ci0gICAgICAgICAgICAgIG5vZGVNYW5hZ2VyXy5tYWtlU2VsZWN0ZWROb2RlVmlzaWJsZSgpOwotICAgICAgICAgICAgICBjb250cm9sbGVyXy5zZXRDdXJyZW50UGVyc3BlY3RpdmUoQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1dTREwpOwotICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9ICAgICAgICAgIAotICAgICAgfQotICAgIH0gICAgCi0gIH0KLQotICBwdWJsaWMgTm9kZU1hbmFnZXIgZ2V0Tm9kZU1hbmFnZXIoKQotICB7Ci0gICAgcmV0dXJuIG5vZGVNYW5hZ2VyXzsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UGVyc3BlY3RpdmVDb250ZW50UGFnZSgpCi0gIHsKLSAgICByZXR1cm4gIndzZGwvd3NkbF9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgaW50IGdldFBlcnNwZWN0aXZlSWQoKQotICB7Ci0gICAgcmV0dXJuIEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9XU0RMOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQYW5lc0ZpbGUoKQotICB7Ci0gICAgcmV0dXJuICJ3c2RsL3NjcmlwdHMvd3NkbHBhbmVzLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEZyYW1lc2V0c0ZpbGUoKQotICB7Ci0gICAgcmV0dXJuICJ3c2RsL3NjcmlwdHMvd3NkbGZyYW1lc2V0cy5qc3AiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQcm9jZXNzRnJhbWVzZXRzRm9ybSgpCi0gIHsKLSAgICByZXR1cm4gIndzZGwvZm9ybXMvUHJvY2Vzc1dTRExGcmFtZXNldHNGb3JtLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFRyZWVDb250ZW50VmFyKCkKLSAgewotICAgIHJldHVybiAid3NkbE5hdmlnYXRvckNvbnRlbnQiOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuICJ3c2RsL3dzZGxfbmF2aWdhdG9yX2NvbnRlbnQuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclZhcigpCi0gIHsKLSAgICByZXR1cm4gIndzZGxQcm9wZXJ0aWVzQ29udGFpbmVyIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKQotICB7Ci0gICAgcmV0dXJuICJ3c2RsL3dzZGxfcHJvcGVydGllc19jb250YWluZXIuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFZhcigpCi0gIHsKLSAgICByZXR1cm4gIndzZGxTdGF0dXNDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuICJ3c2RsL3dzZGxfc3RhdHVzX2NvbnRlbnQuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkKLSAgewotICAgIHJldHVybiBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKFN0cmluZyBjb2xzKQotICB7Ci0gICAgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9IGNvbHM7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRTYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyhTdHJpbmcgY29scykKLSAgewotICAgIHNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9IGNvbHM7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkKLSAgewotICAgIHJldHVybiBzYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc187Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKQotICB7Ci0gICAgcmV0dXJuIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIHZvaWQgc2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhTdHJpbmcgcm93cykKLSAgewotICAgIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfID0gcm93czsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldFNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhTdHJpbmcgcm93cykKLSAgewotICAgIHNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c18gPSByb3dzOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKQotICB7Ci0gICAgcmV0dXJuIHNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c187Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN3aXRjaFBlcnNwZWN0aXZlRm9ybUFjdGlvbkxpbmsoaW50IHRhcmdldFBlcnNwZWN0aXZlSWQsYm9vbGVhbiBmb3JIaXN0b3J5KQotICB7Ci0gICAgcmV0dXJuIFN3aXRjaFBlcnNwZWN0aXZlRnJvbVdTRExBY3Rpb24uZ2V0Rm9ybUFjdGlvbkxpbmsodGFyZ2V0UGVyc3BlY3RpdmVJZCxmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBpbnQgZ2V0U3RhdHVzQ29udGVudFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHN0YXR1c0NvbnRlbnRUeXBlXzsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCB2b2lkIHNldFN0YXR1c0NvbnRlbnRUeXBlKGludCBzdGF0dXNDb250ZW50VHlwZSkKLSAgewotICAgIHN0YXR1c0NvbnRlbnRUeXBlXyA9IHN0YXR1c0NvbnRlbnRUeXBlOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFNPQVBNZXNzYWdlUXVldWUgZ2V0U09BUFJlcXVlc3RRdWV1ZSgpCi0gIHsKLSAgICByZXR1cm4gc29hcFJlcXVlc3RRdWV1ZV87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU09BUE1lc3NhZ2VRdWV1ZSBnZXRTT0FQUmVzcG9uc2VRdWV1ZSgpCi0gIHsKLSAgICByZXR1cm4gc29hcFJlc3BvbnNlUXVldWVfOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIE5vZGUgZ2V0T3BlcmF0aW9uTm9kZSgpCi0gIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTm9kZV87Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgdm9pZCBzZXRPcGVyYXRpb25Ob2RlKE5vZGUgb3BlcmF0aW9uTm9kZSkKLSAgewotICAgIG9wZXJhdGlvbk5vZGVfID0gb3BlcmF0aW9uTm9kZTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U09BUEVudmVsb3BlWE1MTGluayhpbnQgc29hcEVudmVsb3BlVHlwZSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBsaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigid3NkbC9zb2FwX2VudmVsb3BlX3htbC5qc3A/Iik7Ci0gICAgbGluay5hcHBlbmQoV1NETEFjdGlvbklucHV0cy5TT0FQX0VOVkVMT1BFX1RZUEUpLmFwcGVuZCgnPScpLmFwcGVuZChzb2FwRW52ZWxvcGVUeXBlKTsKLSAgICByZXR1cm4gbGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRCaW5kaW5nVHlwZVN0cmluZyhpbnQgYmluZGluZ1R5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGJpbmRpbmdUeXBlKQotICAgIHsKLSAgICAgIGNhc2UgQmluZGluZ1R5cGVzLlNPQVA6Ci0gICAgICAgIHJldHVybiBnZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0JJTkRJTkdfVFlQRV9TT0FQIik7Ci0gICAgICBjYXNlIEJpbmRpbmdUeXBlcy5IVFRQX0dFVDoKLSAgICAgICAgcmV0dXJuIGdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQklORElOR19UWVBFX0hUVFBfR0VUIik7Ci0gICAgICBjYXNlIEJpbmRpbmdUeXBlcy5IVFRQX1BPU1Q6Ci0gICAgICAgIHJldHVybiBnZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0JJTkRJTkdfVFlQRV9IVFRQX1BPU1QiKTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBnZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0JJTkRJTkdfVFlQRV9VTlNVUFBPUlRFRCIpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExTZXJ2aWNlRGV0YWlsc1Rvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9XU0RMU2VydmljZURldGFpbHNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMWZlZjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3BlcnNwZWN0aXZlL1dTRExTZXJ2aWNlRGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotCi1wdWJsaWMgY2xhc3MgV1NETFNlcnZpY2VEZXRhaWxzVG9vbCBleHRlbmRzIERldGFpbHNUb29sIHsKLQotICBwdWJsaWMgV1NETFNlcnZpY2VEZXRhaWxzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCBhbHQsICJ3c2RsL2Zvcm1zL1dTRExTZXJ2aWNlRGV0YWlsc0Zvcm0uanNwIik7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9XU0RMU2VydmljZU5vZGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC9wZXJzcGVjdGl2ZS9XU0RMU2VydmljZU5vZGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU2MjMwMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvcGVyc3BlY3RpdmUvV1NETFNlcnZpY2VOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuRWxlbWVudEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5SZWxBZGRFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbFJlbW92ZUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMTW9kZWxDb25zdGFudHM7Ci0KLS8vIFdTREwgc2VydmljZSBub2RlIGZvciB0aGUgV1NETCBOYXZpZ2F0b3IgVHJlZSBWaWV3Ci1wdWJsaWMgY2xhc3MgV1NETFNlcnZpY2VOb2RlIGV4dGVuZHMgV1NETE5hdmlnYXRvck5vZGUKLXsKLSAgcHVibGljIFdTRExTZXJ2aWNlTm9kZShUcmVlRWxlbWVudCBlbGVtZW50LE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLGludCBub2RlRGVwdGgpCi0gIHsKLSAgICBzdXBlcihlbGVtZW50LG5vZGVNYW5hZ2VyLG5vZGVEZXB0aCwid3NkbC9pbWFnZXMvd3NkbF9zZXJ2aWNlX25vZGUuZ2lmIik7Ci0gICAgZWxlbWVudC5hZGRMaXN0ZW5lcihuZXcgRWxlbWVudEFkYXB0ZXIoKQotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIHJlbEFkZGVkKFJlbEFkZEV2ZW50IGV2ZW50KQotICAgICAgewotICAgICAgICBTdHJpbmcgcmVsID0gZXZlbnQuZ2V0T3V0Qm91bmRSZWxOYW1lKCk7Ci0gICAgICAgIGlmIChyZWwuZXF1YWxzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9CSU5ESU5HKSkgewotICAgICAgICAgIFdTRExCaW5kaW5nTm9kZSB3c2RsQmluZGluZ05vZGUgPSBuZXcgV1NETEJpbmRpbmdOb2RlKChUcmVlRWxlbWVudClldmVudC5nZXRQYXJlbnRFbGVtZW50KCksIG5vZGVNYW5hZ2VyXywgbm9kZURlcHRoXyArIDEpOwotICAgICAgICAgIGFkZENoaWxkKHdzZGxCaW5kaW5nTm9kZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgcHVibGljIHZvaWQgcmVsUmVtb3ZlZChSZWxSZW1vdmVFdmVudCBldmVudCkKLSAgICAgIHsKLSAgICAgICAgVHJlZUVsZW1lbnQgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgaWYgKGV2ZW50LmdldEluQm91bmRSZWxOYW1lKCkuZXF1YWxzKFdTRExNb2RlbENvbnN0YW50cy5SRUxfV1NETF9CSU5ESU5HKSkgewotICAgICAgICAgIGNoaWxkRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRJbmJvdW5kRWxlbWVudCgpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChldmVudC5nZXRPdXRCb3VuZFJlbE5hbWUoKS5lcXVhbHMoV1NETE1vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX0JJTkRJTkcpKSB7Ci0gICAgICAgICAgY2hpbGRFbGVtZW50ID0gKFRyZWVFbGVtZW50KWV2ZW50LmdldE91dEJvdW5kRWxlbWVudCgpOwotICAgICAgICB9Ci0gICAgICAgIHJlbW92ZUNoaWxkTm9kZShjaGlsZEVsZW1lbnQpOwotICAgICAgfQotICAgIH0pOwotICAgIHNldFZpc2liaWxpdHlPZkNoaWxkcmVuKGZhbHNlKTsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCB2b2lkIGluaXRUb29scygpCi0gIHsKLSAgICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpOwotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgIG5ldyBXU0RMU2VydmljZURldGFpbHNUb29sKHRvb2xNYW5hZ2VyXywgd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9XU0RMX1NFUlZJQ0VfREVUQUlMUyIpKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNmb3JtZXIvRnJhZ21lbnRUcmFuc2Zvcm1lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3RyYW5zZm9ybWVyL0ZyYWdtZW50VHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNkZTY5OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNmb3JtZXIvRnJhZ21lbnRUcmFuc2Zvcm1lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnRyYW5zZm9ybWVyOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5YTUxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExPcGVyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RGcmFnbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLXB1YmxpYyBjbGFzcyBGcmFnbWVudFRyYW5zZm9ybWVyIGltcGxlbWVudHMgSVRyYW5zZm9ybWVyCi17Ci0gIHByb3RlY3RlZCBDb250cm9sbGVyIGNvbnRyb2xsZXI7Ci0KLSAgcHVibGljIEZyYWdtZW50VHJhbnNmb3JtZXIoQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgfQotCi0gIHB1YmxpYyBIYXNodGFibGUgbm9ybWFsaXplKEhhc2h0YWJsZSBwcm9wZXJ0aWVzKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIHNiLmFwcGVuZCgiPHJvb3Q+Iik7Ci0gICAgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgSXRlcmF0b3IgaXQgPSBvcGVyRWxlbWVudC5nZXRPcmRlcmVkQm9keVBhcnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIFBhcnQgcGFydCA9IChQYXJ0KWl0Lm5leHQoKTsKLSAgICAgIElYU0RGcmFnbWVudCBmcmFnID0gKElYU0RGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudChwYXJ0KTsKLSAgICAgIEVsZW1lbnRbXSBlbGVtZW50cyA9IG5ldyBFbGVtZW50WzBdOwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGVsZW1lbnRzID0gZnJhZy5nZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoIW9wZXJFbGVtZW50LmlzVXNlTGl0ZXJhbCgpLCBuZXcgSGFzaHRhYmxlKCksIFhNTFV0aWxzLmNyZWF0ZU5ld0RvY3VtZW50KG51bGwpKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIHBjZSkKLSAgICAgIHsKLSAgICAgIH0KLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspCi0gICAgICAgIHNiLmFwcGVuZChYTUxVdGlscy5zZXJpYWxpemUoZWxlbWVudHNbaV0sIHRydWUpKTsKLSAgICB9Ci0gICAgc2IuYXBwZW5kKCI8L3Jvb3Q+Iik7Ci0gICAgcHJvcGVydGllcy5wdXQoRnJhZ21lbnRDb25zdGFudHMuU09VUkNFX0NPTlRFTlQsIHNiLnRvU3RyaW5nKCkpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzOwotICB9Ci0KLSAgcHVibGljIEhhc2h0YWJsZSBkZU5vcm1hbGl6ZShIYXNodGFibGUgcHJvcGVydGllcykKLSAgewotICAgIFN0cmluZyBzb3VyY2UgPSAoU3RyaW5nKSBwcm9wZXJ0aWVzLmdldChGcmFnbWVudENvbnN0YW50cy5TT1VSQ0VfQ09OVEVOVCk7Ci0gICAgaWYgKHNvdXJjZSAhPSBudWxsKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBFbGVtZW50IHJvb3QgPSBYTUxVdGlscy5zdHJpbmdUb0VsZW1lbnQoc291cmNlKTsKLSAgICAgICAgaWYgKHJvb3QgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIE5vZGVMaXN0IGNoaWxkTm9kZXMgPSByb290LmdldENoaWxkTm9kZXMoKTsKLSAgICAgICAgICBWZWN0b3IgY2hpbGRyZW5WZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmdldExlbmd0aCgpOyBpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgTm9kZSBjaGlsZCA9IGNoaWxkTm9kZXMuaXRlbShpKTsKLSAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEVsZW1lbnQpCi0gICAgICAgICAgICAgIGNoaWxkcmVuVmVjdG9yLmFkZChjaGlsZCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIEVsZW1lbnRbXSBjaGlsZHJlbiA9IChFbGVtZW50W10pY2hpbGRyZW5WZWN0b3IudG9BcnJheShuZXcgRWxlbWVudFswXSk7Ci0gICAgICAgICAgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpIGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKS5nZXRUcmVlRWxlbWVudCgpOwotICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gb3BlckVsZW1lbnQuZ2V0T3JkZXJlZEJvZHlQYXJ0cygpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBQYXJ0IHBhcnQgPSAoUGFydClpdC5uZXh0KCk7Ci0gICAgICAgICAgICBJWFNERnJhZ21lbnQgZnJhZyA9IChJWFNERnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnQocGFydCk7Ci0gICAgICAgICAgICBmcmFnLnNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhjaGlsZHJlbik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBwcm9wZXJ0aWVzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNwb3J0L0NodW5rZWRJbnB1dFN0cmVhbS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3RyYW5zcG9ydC9DaHVua2VkSW5wdXRTdHJlYW0uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVhMjhhMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNwb3J0L0NodW5rZWRJbnB1dFN0cmVhbS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnRyYW5zcG9ydDsKLQotaW1wb3J0IGphdmEuaW8uRmlsdGVySW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotCi1wdWJsaWMgY2xhc3MgQ2h1bmtlZElucHV0U3RyZWFtIGV4dGVuZHMgRmlsdGVySW5wdXRTdHJlYW0KLXsKLSAgcHJvdGVjdGVkIGxvbmcgY2h1bmtTaXplID0gMGw7Ci0gIHByb3RlY3RlZCB2b2xhdGlsZSBib29sZWFuIGNsb3NlZCA9IGZhbHNlOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgbWF4Q2hhckxvbmcgPSAoTG9uZy50b0hleFN0cmluZyhMb25nLk1BWF9WQUxVRSkpLnRvU3RyaW5nKCkubGVuZ3RoKCk7Ci0KLSAgcHJpdmF0ZSBDaHVua2VkSW5wdXRTdHJlYW0oKQotICB7Ci0gICAgc3VwZXIobnVsbCk7Ci0gIH0KLQotICBwdWJsaWMgQ2h1bmtlZElucHV0U3RyZWFtKElucHV0U3RyZWFtIGlzKQotICB7Ci0gICAgc3VwZXIoaXMpOwotICB9Ci0KLSAgcHVibGljIGludCByZWFkKCkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBieXRlW10gZCA9IG5ldyBieXRlWzFdOwotICAgIGludCByYyA9IHJlYWQoZCwgMCwgMSk7Ci0gICAgcmV0dXJuIHJjID4gMCA/IChkWzBdICYgMHhGRikgOiByYzsKLSAgfQotCi0gIHB1YmxpYyBpbnQgcmVhZChieXRlW10gYikgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gcmVhZChiLCAwLCBiLmxlbmd0aCk7Ci0gIH0KLQotICBwdWJsaWMgc3luY2hyb25pemVkIGludCByZWFkKGJ5dGVbXSBiLCBpbnQgb2ZmLCBpbnQgbGVuKSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIGlmIChjbG9zZWQpCi0gICAgICByZXR1cm4gLTE7Ci0KLSAgICBpbnQgdG90YWxyZWFkID0gMDsKLSAgICBpbnQgYnl0ZXNyZWFkID0gMDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBkbwotICAgICAgewotICAgICAgICBpZiAoY2h1bmtTaXplIDwgMUwpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoMGwgPT0gZ2V0Q2h1bmtlZCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0b3RhbHJlYWQgPT0gMCkKLSAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICByZXR1cm4gdG90YWxyZWFkOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBieXRlc3JlYWQgPSBpbi5yZWFkKGIsIG9mZiArIHRvdGFscmVhZCwgTWF0aC5taW4obGVuIC0gdG90YWxyZWFkLCAoaW50KSBNYXRoLm1pbihjaHVua1NpemUsIEludGVnZXIuTUFYX1ZBTFVFKSkpOwotICAgICAgICBpZiAoYnl0ZXNyZWFkID4gMCkKLSAgICAgICAgewotICAgICAgICAgIHRvdGFscmVhZCArPSBieXRlc3JlYWQ7Ci0gICAgICAgICAgY2h1bmtTaXplIC09IGJ5dGVzcmVhZDsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgd2hpbGUgKGxlbiAtIHRvdGFscmVhZCA+IDAgJiYgYnl0ZXNyZWFkID4gLTEpOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBjbG9zZWQgPSB0cnVlOwotICAgICAgdGhyb3cgZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRvdGFscmVhZDsKLSAgfQotCi0gIHB1YmxpYyBsb25nIHNraXAoZmluYWwgbG9uZyBuKSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIGlmIChjbG9zZWQpCi0gICAgICByZXR1cm4gMDsKLSAgICBsb25nIHNraXBwZWQgPSAwbDsKLSAgICBieXRlW10gYiA9IG5ldyBieXRlWzEwMjRdOwotICAgIGludCBicmVhZCA9IC0xOwotICAgIGRvCi0gICAgewotICAgICAgYnJlYWQgPSByZWFkKGIsIDAsIGIubGVuZ3RoKTsKLSAgICAgIGlmIChicmVhZCA+IDApCi0gICAgICAgIHNraXBwZWQgKz0gYnJlYWQ7Ci0gICAgfQotICAgIHdoaWxlIChicmVhZCAhPSAtMSAmJiBza2lwcGVkIDwgbik7Ci0gICAgcmV0dXJuIHNraXBwZWQ7Ci0gIH0KLQotICBwdWJsaWMgaW50IGF2YWlsYWJsZSgpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgaWYgKGNsb3NlZCkKLSAgICAgIHJldHVybiAwOwotICAgIGludCByYyA9IChpbnQpIE1hdGgubWluKGNodW5rU2l6ZSwgSW50ZWdlci5NQVhfVkFMVUUpOwotICAgIHJldHVybiBNYXRoLm1pbihyYywgaW4uYXZhaWxhYmxlKCkpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGxvbmcgZ2V0Q2h1bmtlZCgpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgLy9TdHJpbmdCdWZmZXIgYnVmPSBuZXcgU3RyaW5nQnVmZmVyKDEwMjQpOwotICAgIGJ5dGVbXSBidWYgPSBuZXcgYnl0ZVttYXhDaGFyTG9uZyArIDJdOwotICAgIGludCBidWZzeiA9IDA7Ci0gICAgY2h1bmtTaXplID0gLTFMOwotICAgIGludCBjID0gLTE7Ci0gICAgZG8KLSAgICB7Ci0gICAgICBjID0gaW4ucmVhZCgpOwotICAgICAgaWYgKGMgPiAtMSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGMgIT0gJ1xyJyAmJiBjICE9ICdcbicgJiYgYyAhPSAnICcgJiYgYyAhPSAnXHQnKQotICAgICAgICB7Ci0gICAgICAgICAgYnVmW2J1ZnN6KytdID0gKChieXRlKSBjKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoYyA+IC0xICYmIChjICE9ICdcbicgfHwgYnVmc3ogPT0gMCkgJiYgYnVmc3ogPCBidWYubGVuZ3RoKTsKLSAgICBpZiAoYyA8IDApCi0gICAgewotICAgICAgY2xvc2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgU3RyaW5nIHNidWYgPSBuZXcgU3RyaW5nKGJ1ZiwgMCwgYnVmc3opOwotICAgIGlmIChidWZzeiA+IG1heENoYXJMb25nKQotICAgIHsKLSAgICAgIGNsb3NlZCA9IHRydWU7Ci0gICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkNodW5rZWQgaW5wdXQgc3RyZWFtIGZhaWxlZCB0byByZWNlaXZlIHZhbGlkIGNodW5rIHNpemU6IiArIHNidWYpOwotICAgIH0KLSAgICB0cnkKLSAgICB7Ci0gICAgICBjaHVua1NpemUgPSBMb25nLnBhcnNlTG9uZyhzYnVmLCAxNik7Ci0gICAgfQotICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmUpCi0gICAgewotICAgICAgY2xvc2VkID0gdHJ1ZTsKLSAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiJyIgKyBzYnVmICsgIicgIiArIG5lLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIGlmIChjaHVua1NpemUgPCAxTCkKLSAgICAgIGNsb3NlZCA9IHRydWU7Ci0gICAgaWYgKGNodW5rU2l6ZSAhPSAwTCAmJiBjIDwgMCkKLSAgICB7Ci0gICAgICAvL0lmIGNodW5rIHNpemUgaXMgemVybyB0cnkgYW5kIGJlIHRvbGVyYW50IHRoYXQgdGhlcmUgbWF5YmUgbm8gY3Igb3IgbGYKLSAgICAgIC8vIGF0IHRoZSBlbmQuCi0gICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkhUVFAgQ2h1bmtlZCBzdHJlYW0gY2xvc2VkIGluIG1pZGRsZSBvZiBjaHVuay4iKTsKLSAgICB9Ci0gICAgaWYgKGNodW5rU2l6ZSA8IDBMKQotICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJIVFRQIENodW5rIHNpemUgcmVjZWl2ZWQgIiArIGNodW5rU2l6ZSArICIgaXMgbGVzcyB0aGFuIHplcm8uIik7Ci0gICAgcmV0dXJuIGNodW5rU2l6ZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBzeW5jaHJvbml6ZWQgKHRoaXMpCi0gICAgewotICAgICAgaWYgKGNsb3NlZCkKLSAgICAgICAgcmV0dXJuOwotICAgICAgY2xvc2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgYnl0ZVtdIGIgPSBuZXcgYnl0ZVsxMDI0XTsKLSAgICBpbnQgYnJlYWQgPSAtMTsKLSAgICBkbwotICAgIHsKLSAgICAgIGJyZWFkID0gcmVhZChiLCAwLCBiLmxlbmd0aCk7Ci0gICAgfQotICAgIHdoaWxlIChicmVhZCAhPSAtMSk7Ci0gIH0KLQotICAvKgotICAgKiBwdWJsaWMgdm9pZCBtYXJrKGludCByZWFkbGltaXQpCi0gICAqIHsKLSAgICogfQotICAgKi8KLQotICBwdWJsaWMgdm9pZCByZXNldCgpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJEb24ndCBzdXBwb3J0IG1hcmtlZCBzdHJlYW1zIik7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBtYXJrU3VwcG9ydGVkKCkKLSAgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3RyYW5zcG9ydC9IVFRQUmVzcG9uc2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC90cmFuc3BvcnQvSFRUUFJlc3BvbnNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZmUwY2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3RyYW5zcG9ydC9IVFRQUmVzcG9uc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC50cmFuc3BvcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLXB1YmxpYyBjbGFzcyBIVFRQUmVzcG9uc2UKLXsKLSAgcHJpdmF0ZSBib29sZWFuIHN0YXR1c1NldDsKLSAgcHJpdmF0ZSBpbnQgc3RhdHVzQ29kZTsKLSAgcHJpdmF0ZSBTdHJpbmcgc3RhdHVzTWVzc2FnZTsKLSAgcHJpdmF0ZSBIYXNodGFibGUgaGVhZGVyczsKLSAgcHJpdmF0ZSBieXRlW10gcGF5bG9hZDsKLQotICBwdWJsaWMgSFRUUFJlc3BvbnNlKCkKLSAgewotICAgIHJlc2V0KCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZXNldCgpCi0gIHsKLSAgICBzdGF0dXNTZXQgPSBmYWxzZTsKLSAgICBzdGF0dXNDb2RlID0gLTE7Ci0gICAgc3RhdHVzTWVzc2FnZSA9IG51bGw7Ci0gICAgaWYgKGhlYWRlcnMgIT0gbnVsbCkKLSAgICAgIGhlYWRlcnMuY2xlYXIoKTsKLSAgICBlbHNlCi0gICAgICBoZWFkZXJzID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHBheWxvYWQgPSBuZXcgYnl0ZVswXTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzU3RhdHVzU2V0KCkKLSAgewotICAgIHJldHVybiBzdGF0dXNTZXQ7Ci0gIH0KLQotICBwdWJsaWMgaW50IGdldFN0YXR1c0NvZGUoKQotICB7Ci0gICAgcmV0dXJuIHN0YXR1c0NvZGU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQotICB7Ci0gICAgc3RhdHVzU2V0ID0gdHJ1ZTsKLSAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTdGF0dXNNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiBzdGF0dXNNZXNzYWdlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U3RhdHVzTWVzc2FnZShTdHJpbmcgc3RhdHVzTWVzc2FnZSkKLSAgewotICAgIHRoaXMuc3RhdHVzTWVzc2FnZSA9IHN0YXR1c01lc3NhZ2U7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRIZWFkZXIoU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgaGVhZGVycy5wdXQoa2V5LCB2YWx1ZSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEhlYWRlcihTdHJpbmcga2V5KQotICB7Ci0gICAgcmV0dXJuIChTdHJpbmcpIGhlYWRlcnMuZ2V0KGtleSk7Ci0gIH0KLQotICBwdWJsaWMgTWFwIGdldEhlYWRlcnMoKQotICB7Ci0gICAgcmV0dXJuIGhlYWRlcnM7Ci0gIH0KLQotICBwdWJsaWMgYnl0ZVtdIGdldFBheWxvYWQoKQotICB7Ci0gICAgcmV0dXJuIHBheWxvYWQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQYXlsb2FkKGJ5dGVbXSBwYXlsb2FkKQotICB7Ci0gICAgdGhpcy5wYXlsb2FkID0gcGF5bG9hZDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3RyYW5zcG9ydC9IVFRQVHJhbnNwb3J0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNwb3J0L0hUVFBUcmFuc3BvcnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4M2E0Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNwb3J0L0hUVFBUcmFuc3BvcnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMTMxICAgMTI1Nzc3IGplc3BlckBzZWxza2FiZXQub3JnIC0gSmVzcGVyIFMgTW9sbGVyCi0gKiAyMDA2MDIyMiAgIDExODAxOSBhbmR5emhhaUBjYS5pYm0uY29tIC0gQW5keSBaaGFpCi0gKiAyMDA2MDIyMiAgIDEyODU2NCBqZXNwZXJAc2Vsc2thYmV0Lm9yZyAtIEplc3BlciBTIE1vbGxlcgotICogMjAwNjA4MjMgICAgOTkwMzQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRSBzdXBwb3J0IGZvciBiYXNpYy1hdXRoZW50aWNhdGluZyBmaXJld2FsbHMKLSAqIDIwMDcwNDEzICAgMTc2NDkzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0U6IE1ha2UgbWVzc2FnZS90cmFuc3BvcnQgc3RhY2sgcGx1Z2dhYmxlCi0gKiAyMDA4MDcyOCAgIDI0MjA5MSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViIHNlcnZpY2VzIGV4cGxvcmVyIGluc2VydHMgc3B1cmlvdXMgQ1JMRiBpbiBhIGxvbmcgYXV0aGVudGljYXRpb24gaGVhZGVyCi0gKiAyMDA4MDkwOCAgIDEyMTEyMCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24sIENsYXNzIHN1bi5taXNjLkJBU0U2NEVuY29kZXIgaXMgbWlzc2luZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnRyYW5zcG9ydDsKLQotaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5Tb2NrZXQ7Ci1pbXBvcnQgamF2YS5uZXQuU29ja2V0VGltZW91dEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3Rvcnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5YTUxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LkhUVFBUcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29kZWMuYmluYXJ5LkJhc2U2NDsKLQotcHVibGljIGNsYXNzIEhUVFBUcmFuc3BvcnQKLXsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU1lTX1BST1BfSFRUUFNfUFJPWFlfSE9TVCA9ICJodHRwcy5wcm94eUhvc3QiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBTWVNfUFJPUF9IVFRQU19QUk9YWV9QT1JUID0gImh0dHBzLnByb3h5UG9ydCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFNZU19QUk9QX0hUVFBTX05PTl9QUk9YWV9IT1NUUyA9ICJodHRwcy5ub25Qcm94eUhvc3RzIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU1lTX1BST1BfSFRUUF9QUk9YWV9IT1NUID0gImh0dHAucHJveHlIb3N0IjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU1lTX1BST1BfSFRUUF9QUk9YWV9QT1JUID0gImh0dHAucHJveHlQb3J0IjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU1lTX1BST1BfSFRUUF9QUk9YWV9VU0VSX05BTUUgPSAiaHR0cC5wcm94eVVzZXJOYW1lIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU1lTX1BST1BfSFRUUF9QUk9YWV9QQVNTV09SRCA9ICJodHRwLnByb3h5UGFzc3dvcmQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBTWVNfUFJPUF9IVFRQX05PTl9QUk9YWV9IT1NUUyA9ICJodHRwLm5vblByb3h5SG9zdHMiOwotICAKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSFRUUF9NRVRIT0QgPSAiUE9TVCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhUVFBfQ09OTkVDVCA9ICJDT05ORUNUIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSFRUUF9WRVJTSU9OXzFfMCA9ICJIVFRQLzEuMCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhUVFBfVkVSU0lPTiA9ICJIVFRQLzEuMSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhUVFBfSEVBREVSX1NPQVBfQUNUSU9OID0gIlNPQVBBY3Rpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIVFRQX0hFQURFUl9BVVRIID0gIkF1dGhvcml6YXRpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIVFRQX0hFQURFUl9XV1dfQVVUSCA9ICJXV1ctQXV0aGVudGljYXRlIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSFRUUF9IRUFERVJfUFJPWFlfQVVUSCA9ICJQcm94eS1hdXRob3JpemF0aW9uIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSFRUUF9IRUFERVJfQ09PS0lFID0gIkNvb2tpZSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhUVFBfSEVBREVSX0NPT0tJRTIgPSAiQ29va2llMiI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhUVFBfSEVBREVSX0hPU1QgPSAiSG9zdCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhUVFBfSEVBREVSX0NPTlRFTlRfVFlQRSA9ICJDb250ZW50LVR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIVFRQX0hFQURFUl9DT05URU5UX0xFTkdUSCA9ICJDb250ZW50LUxlbmd0aCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhUVFBfSEVBREVSX0FDQ0VQVCA9ICJBY2NlcHQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBIVFRQX0hFQURFUl9VU0VSX0FHRU5UID0gIlVzZXItQWdlbnQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBIVFRQX0hFQURFUl9DQUNIRV9DT05UUk9MID0gIkNhY2hlLUNvbnRyb2wiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBIVFRQX0hFQURFUl9QUkFHTUEgPSAiUHJhZ21hIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSFRUUF9IRUFERVJfVFJBTlNGRVJfRU5DT0RFSU5HID0gIlRyYW5zZmVyLUVuY29kaW5nIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSFRUUF9IRUFERVJfQ09OTkVDVElPTiA9ICJDb25uZWN0aW9uIjsKLSAgCi0gIHByaXZhdGUgZmluYWwgaW50IEhUVFBfQ09ERV9DT05USU5VRSA9IDEwMDsKLSAgcHJpdmF0ZSBmaW5hbCBpbnQgSFRUUF9DT0RFX09LID0gMjAwOwotICBwcml2YXRlIGZpbmFsIGludCBIVFRQX0NPREVfRVhDRVBUSU9OID0gMzAwOwotCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIElCTV9XRUJfU0VSVklDRVNfRVhQTE9SRVIgPSAiSUJNIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFRFWFRfWE1MID0gInRleHQveG1sIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgQ09OVEVOVF9UWVBFX1ZBTFVFID0gInRleHQveG1sOyBjaGFyc2V0PXV0Zi04IjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgQUNDRVBUX1ZBTFVFID0gImFwcGxpY2F0aW9uL3NvYXAreG1sLCBhcHBsaWNhdGlvbi9kaW1lLCBtdWx0aXBhcnQvcmVsYXRlZCwgdGV4dC8qIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFTSUMgPSAiQmFzaWMiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBOT19DQUNIRSA9ICJuby1jYWNoZSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIENIVU5LRUQgPSAiY2h1bmtlZCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIENMT1NFID0gImNsb3NlIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSFRUUFMgPSAiaHR0cHMiOwotICBwcml2YXRlIGZpbmFsIGNoYXIgUVVPVEUgPSAnXCInOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGNoYXIgQ09MT04gPSAnOic7Ci0gIHByaXZhdGUgZmluYWwgY2hhciBTUEFDRSA9ICcgJzsKLSAgcHJpdmF0ZSBmaW5hbCBjaGFyIFRBQiA9ICdcdCc7Ci0gIHByaXZhdGUgZmluYWwgY2hhciBSID0gJ1xyJzsKLSAgcHJpdmF0ZSBmaW5hbCBjaGFyIE4gPSAnXG4nOwotICBwcml2YXRlIGZpbmFsIGNoYXIgUk9PVCA9ICcvJzsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgTkVXX0xJTkUgPSAiXHJcbiI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEVNUFRZX1NUUklORyA9ICIiOwotCi0gIHByaXZhdGUgZmluYWwgaW50IERFRkFVTFRfSFRUUF9QT1JUID0gODA7Ci0gIHByaXZhdGUgZmluYWwgaW50IERFRkFVTFRfSFRUUFNfUE9SVCA9IDQ0MzsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgREVGQVVMVF9TT0FQX0VOQ09ESU5HID0gIlVURi04IjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgREVGQVVMVF9IVFRQX0hFQURFUl9FTkNPRElORyA9ICJpc28tODg1OS0xIjsKLSAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIERFRkFVTFRfQ0FTRV9TRU5TSVRJVkVfRk9SX0hPU1RfTkFNRSA9IGZhbHNlOwotCi0gIHByaXZhdGUgU3RyaW5nIGh0dHBCYXNpY0F1dGhVc2VybmFtZTsKLSAgcHJpdmF0ZSBTdHJpbmcgaHR0cEJhc2ljQXV0aFBhc3N3b3JkOwotICBwcml2YXRlIGJvb2xlYW4gbWFpbnRhaW5TZXNzaW9uID0gZmFsc2U7Ci0gIHByaXZhdGUgU3RyaW5nIGNvb2tpZTsKLSAgcHJpdmF0ZSBTdHJpbmcgY29va2llMjsKLSAgcHJpdmF0ZSBIVFRQUmVzcG9uc2UgaHR0cFJlc3BvbnNlOwotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SHR0cEJhc2ljQXV0aFVzZXJuYW1lKCkKLSAgewotICAgIHJldHVybiBodHRwQmFzaWNBdXRoVXNlcm5hbWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEh0dHBCYXNpY0F1dGhVc2VybmFtZShTdHJpbmcgaHR0cEJhc2ljQXV0aFVzZXJuYW1lKQotICB7Ci0gICAgdGhpcy5odHRwQmFzaWNBdXRoVXNlcm5hbWUgPSBodHRwQmFzaWNBdXRoVXNlcm5hbWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SHR0cEJhc2ljQXV0aFBhc3N3b3JkKCkKLSAgewotICAgIHJldHVybiBodHRwQmFzaWNBdXRoUGFzc3dvcmQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEh0dHBCYXNpY0F1dGhQYXNzd29yZChTdHJpbmcgaHR0cEJhc2ljQXV0aFBhc3N3b3JkKQotICB7Ci0gICAgdGhpcy5odHRwQmFzaWNBdXRoUGFzc3dvcmQgPSBodHRwQmFzaWNBdXRoUGFzc3dvcmQ7Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBnZXRNZXRob2QoVVJMIHVybCkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoSFRUUF9NRVRIT0QpOwotICAgIHNiLmFwcGVuZChTUEFDRSk7Ci0gICAgU3RyaW5nIHByb3RvY29sID0gdXJsLmdldFByb3RvY29sKCk7Ci0gICAgU3RyaW5nIGh0dHBQcm94eUhvc3QgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoU1lTX1BST1BfSFRUUF9QUk9YWV9IT1NUKTsKLSAgICBTdHJpbmcgaHR0cHNQcm94eUhvc3QgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoU1lTX1BST1BfSFRUUFNfUFJPWFlfSE9TVCk7Ci0gICAgaWYgKHByb3RvY29sLmVxdWFsc0lnbm9yZUNhc2UoImh0dHAiKSAmJiBodHRwUHJveHlIb3N0ICE9IG51bGwgJiYgaHR0cFByb3h5SG9zdC5sZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgc2IuYXBwZW5kKHVybC50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAocHJvdG9jb2wuZXF1YWxzSWdub3JlQ2FzZSgiaHR0cHMiKSAmJiBodHRwc1Byb3h5SG9zdCAhPSBudWxsICYmIGh0dHBzUHJveHlIb3N0Lmxlbmd0aCgpID4gMCkKLSAgICB7Ci0gICAgICBzYi5hcHBlbmQodXJsLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgU3RyaW5nIGZpbGUgPSB1cmwuZ2V0RmlsZSgpOwotICAgICAgaWYgKGZpbGUgIT0gbnVsbCAmJiBmaWxlLmxlbmd0aCgpID4gMCkKLSAgICAgICAgc2IuYXBwZW5kKGZpbGUpOwotICAgICAgZWxzZQotICAgICAgICBzYi5hcHBlbmQoUk9PVCk7Ci0gICAgfQotICAgIHNiLmFwcGVuZChTUEFDRSk7Ci0gICAgc2IuYXBwZW5kKEhUVFBfVkVSU0lPTik7Ci0gICAgc2IuYXBwZW5kKE5FV19MSU5FKTsKLSAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIGdldEhvc3QoVVJMIHVybCkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoSFRUUF9IRUFERVJfSE9TVCk7Ci0gICAgc2IuYXBwZW5kKENPTE9OKTsKLSAgICBzYi5hcHBlbmQoU1BBQ0UpOwotICAgIHNiLmFwcGVuZCh1cmwuZ2V0SG9zdCgpKTsKLSAgICBzYi5hcHBlbmQoQ09MT04pOwotICAgIGludCBwb3J0ID0gdXJsLmdldFBvcnQoKTsKLSAgICBpZiAocG9ydCA+IDApCi0gICAgICBzYi5hcHBlbmQoU3RyaW5nLnZhbHVlT2YocG9ydCkpOwotICAgIGVsc2UgaWYgKHVybC5nZXRQcm90b2NvbCgpLmVxdWFsc0lnbm9yZUNhc2UoSFRUUFMpKQotICAgICAgc2IuYXBwZW5kKERFRkFVTFRfSFRUUFNfUE9SVCk7Ci0gICAgZWxzZQotICAgICAgc2IuYXBwZW5kKERFRkFVTFRfSFRUUF9QT1JUKTsKLSAgICBzYi5hcHBlbmQoTkVXX0xJTkUpOwotICAgIHJldHVybiBzYi50b1N0cmluZygpOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRDb250ZW50VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0SFRUUEhlYWRlcihIVFRQX0hFQURFUl9DT05URU5UX1RZUEUsIENPTlRFTlRfVFlQRV9WQUxVRSk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldENvbnRlbnRMZW5ndGgoYnl0ZVtdIHBheWxvYWRBc0J5dGVzKQotICB7Ci0gICAgcmV0dXJuIGdldEhUVFBIZWFkZXIoSFRUUF9IRUFERVJfQ09OVEVOVF9MRU5HVEgsIFN0cmluZy52YWx1ZU9mKHBheWxvYWRBc0J5dGVzLmxlbmd0aCkpOwotICB9Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0U09BUEFjdGlvbihTdHJpbmcgc29hcEFjdGlvbikKLSAgewotICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoSFRUUF9IRUFERVJfU09BUF9BQ1RJT04pOwotICAgIHNiLmFwcGVuZChDT0xPTik7Ci0gICAgc2IuYXBwZW5kKFNQQUNFKTsKLSAgICBzYi5hcHBlbmQoUVVPVEUpOwotICAgIGlmIChzb2FwQWN0aW9uICE9IG51bGwpCi0gICAgICBzYi5hcHBlbmQoc29hcEFjdGlvbik7Ci0gICAgc2IuYXBwZW5kKFFVT1RFKTsKLSAgICBzYi5hcHBlbmQoTkVXX0xJTkUpOwotICAgIHJldHVybiBzYi50b1N0cmluZygpOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRDb29raWUoKQotICB7Ci0gICAgaWYgKG1haW50YWluU2Vzc2lvbikKLSAgICAgIHJldHVybiBnZXRIVFRQSGVhZGVyKEhUVFBfSEVBREVSX0NPT0tJRSwgY29va2llKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gRU1QVFlfU1RSSU5HOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRDb29raWUyKCkKLSAgewotICAgIGlmIChtYWludGFpblNlc3Npb24pCi0gICAgICByZXR1cm4gZ2V0SFRUUEhlYWRlcihIVFRQX0hFQURFUl9DT09LSUUyLCBjb29raWUyKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gRU1QVFlfU1RSSU5HOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBzdHJpcE5ld0xpbmUoU3RyaW5nIGlucHV0KSB7Ci0JICByZXR1cm4gaW5wdXQucmVwbGFjZUFsbChTeXN0ZW0uZ2V0UHJvcGVydHkoImxpbmUuc2VwYXJhdG9yIiksICIiKTsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0V1dXQXV0aGVudGljYXRpb24oKQotICB7Ci0gICAgaWYgKGh0dHBCYXNpY0F1dGhVc2VybmFtZSAhPSBudWxsICYmIGh0dHBCYXNpY0F1dGhQYXNzd29yZCAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoaHR0cEJhc2ljQXV0aFVzZXJuYW1lKTsKLSAgICAgIHNiLmFwcGVuZChDT0xPTik7Ci0gICAgICBzYi5hcHBlbmQoaHR0cEJhc2ljQXV0aFBhc3N3b3JkKTsKLSAgICAgIEJhc2U2NCBlbmNvZGVyID0gbmV3IEJhc2U2NCgpOwotICAgICAgU3RyaW5nIGVuY29kZWRVc2VyTmFtZVBhc3N3b3JkID0gbmV3IFN0cmluZyhlbmNvZGVyLmVuY29kZShzYi50b1N0cmluZygpLmdldEJ5dGVzKCkpKTsKLSAgICAgIHNiLnNldExlbmd0aCgwKTsKLSAgICAgIHNiLmFwcGVuZChIVFRQX0hFQURFUl9BVVRIKTsKLSAgICAgIHNiLmFwcGVuZChDT0xPTik7Ci0gICAgICBzYi5hcHBlbmQoU1BBQ0UpOwotICAgICAgc2IuYXBwZW5kKEJBU0lDKTsKLSAgICAgIHNiLmFwcGVuZChTUEFDRSk7Ci0gICAgICBzYi5hcHBlbmQoc3RyaXBOZXdMaW5lKGVuY29kZWRVc2VyTmFtZVBhc3N3b3JkKSk7Ci0gICAgICBzYi5hcHBlbmQoTkVXX0xJTkUpOwotICAgICAgcmV0dXJuIHNiLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBFTVBUWV9TVFJJTkc7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldFByb3h5QXV0aGVudGljYXRpb24oKQotICB7Ci0gICAgU3RyaW5nIHByb3h5VXNlck5hbWUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoU1lTX1BST1BfSFRUUF9QUk9YWV9VU0VSX05BTUUpOwotICAgIFN0cmluZyBwcm94eVBhc3N3b3JkID0gU3lzdGVtLmdldFByb3BlcnR5KFNZU19QUk9QX0hUVFBfUFJPWFlfUEFTU1dPUkQpOwotICAgIGlmIChwcm94eVVzZXJOYW1lICE9IG51bGwgJiYgcHJveHlQYXNzd29yZCAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIocHJveHlVc2VyTmFtZSk7Ci0gICAgICBzYi5hcHBlbmQoQ09MT04pOwotICAgICAgc2IuYXBwZW5kKHByb3h5UGFzc3dvcmQpOwotICAgICAgQmFzZTY0IGVuY29kZXIgPSBuZXcgQmFzZTY0KCk7Ci0gICAgICBTdHJpbmcgZW5jb2RlZFVzZXJOYW1lUGFzc3dvcmQgPSBuZXcgU3RyaW5nKGVuY29kZXIuZW5jb2RlKHNiLnRvU3RyaW5nKCkuZ2V0Qnl0ZXMoKSkpOwotICAgICAgc2Iuc2V0TGVuZ3RoKDApOwotICAgICAgc2IuYXBwZW5kKEhUVFBfSEVBREVSX1BST1hZX0FVVEgpOwotICAgICAgc2IuYXBwZW5kKENPTE9OKTsKLSAgICAgIHNiLmFwcGVuZChTUEFDRSk7Ci0gICAgICBzYi5hcHBlbmQoQkFTSUMpOwotICAgICAgc2IuYXBwZW5kKFNQQUNFKTsKLSAgICAgIHNiLmFwcGVuZChzdHJpcE5ld0xpbmUoZW5jb2RlZFVzZXJOYW1lUGFzc3dvcmQpKTsKLSAgICAgIHNiLmFwcGVuZChORVdfTElORSk7Ci0gICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIEVNUFRZX1NUUklORzsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0QWNjZXB0KCkKLSAgewotICAgIHJldHVybiBnZXRIVFRQSGVhZGVyKEhUVFBfSEVBREVSX0FDQ0VQVCwgQUNDRVBUX1ZBTFVFKTsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0VXNlckFnZW50KCkKLSAgewotICAgIHJldHVybiBnZXRIVFRQSGVhZGVyKEhUVFBfSEVBREVSX1VTRVJfQUdFTlQsIElCTV9XRUJfU0VSVklDRVNfRVhQTE9SRVIpOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRDYWNoZUNvbnRyb2woKQotICB7Ci0gICAgcmV0dXJuIGdldEhUVFBIZWFkZXIoSFRUUF9IRUFERVJfQ0FDSEVfQ09OVFJPTCwgTk9fQ0FDSEUpOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRQcmFnbWEoKQotICB7Ci0gICAgcmV0dXJuIGdldEhUVFBIZWFkZXIoSFRUUF9IRUFERVJfUFJBR01BLCBOT19DQUNIRSk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldENvbm5lY3Rpb24oKQotICB7Ci0gICAgcmV0dXJuIGdldEhUVFBIZWFkZXIoSFRUUF9IRUFERVJfQ09OTkVDVElPTiwgQ0xPU0UpOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRIVFRQSGVhZGVyKFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGlmICh2YWx1ZSAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoa2V5KTsKLSAgICAgIHNiLmFwcGVuZChDT0xPTik7Ci0gICAgICBzYi5hcHBlbmQoU1BBQ0UpOwotICAgICAgc2IuYXBwZW5kKHZhbHVlKTsKLSAgICAgIHNiLmFwcGVuZChORVdfTElORSk7Ci0gICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIEVNUFRZX1NUUklORzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNlbmQoVVJMIHVybCwgU3RyaW5nIHNvYXBBY3Rpb24sIFN0cmluZyBwYXlsb2FkKSB0aHJvd3MgVW5rbm93bkhvc3RFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0gIHsKLSAgICBieXRlW10gcGF5bG9hZEFzVVRGOCA9IHBheWxvYWQuZ2V0Qnl0ZXMoREVGQVVMVF9TT0FQX0VOQ09ESU5HKTsKLSAgICAgICAKLSAgICBTdHJpbmdCdWZmZXIgaHR0cEhlYWRlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBodHRwSGVhZGVyLmFwcGVuZChnZXRNZXRob2QodXJsKSk7Ci0gICAgaHR0cEhlYWRlci5hcHBlbmQoZ2V0SG9zdCh1cmwpKTsKLSAgICBodHRwSGVhZGVyLmFwcGVuZChnZXRDb250ZW50VHlwZSgpKTsKLSAgICBodHRwSGVhZGVyLmFwcGVuZChnZXRDb250ZW50TGVuZ3RoKHBheWxvYWRBc1VURjgpKTsKLSAgICBodHRwSGVhZGVyLmFwcGVuZChnZXRBY2NlcHQoKSk7Ci0gICAgaHR0cEhlYWRlci5hcHBlbmQoZ2V0VXNlckFnZW50KCkpOwotICAgIGh0dHBIZWFkZXIuYXBwZW5kKGdldENhY2hlQ29udHJvbCgpKTsKLSAgICBodHRwSGVhZGVyLmFwcGVuZChnZXRQcmFnbWEoKSk7Ci0gICAgaHR0cEhlYWRlci5hcHBlbmQoZ2V0U09BUEFjdGlvbihzb2FwQWN0aW9uKSk7Ci0gICAgaHR0cEhlYWRlci5hcHBlbmQoZ2V0V1dXQXV0aGVudGljYXRpb24oKSk7Ci0gICAgaHR0cEhlYWRlci5hcHBlbmQoZ2V0UHJveHlBdXRoZW50aWNhdGlvbigpKTsKLSAgICBodHRwSGVhZGVyLmFwcGVuZChnZXRDb29raWUoKSk7Ci0gICAgaHR0cEhlYWRlci5hcHBlbmQoZ2V0Q29va2llMigpKTsKLSAgICBodHRwSGVhZGVyLmFwcGVuZChnZXRDb25uZWN0aW9uKCkpOwotICAgIGh0dHBIZWFkZXIuYXBwZW5kKE5FV19MSU5FKTsgLy8gbmV3IGxpbmUgYmV0d2VlbiB0aGUgSFRUUCBoZWFkZXIgYW5kIHRoZSBwYXlsb2FkCi0gICAgU29ja2V0IHNvY2tldCA9IGJ1aWxkU29ja2V0KHVybCk7Ci0gICAgSW5wdXRTdHJlYW0gaXMgPSBzb2NrZXQuZ2V0SW5wdXRTdHJlYW0oKTsKLSAgICBPdXRwdXRTdHJlYW0gb3MgPSBzb2NrZXQuZ2V0T3V0cHV0U3RyZWFtKCk7Ci0gICAgb3Mud3JpdGUoaHR0cEhlYWRlci50b1N0cmluZygpLmdldEJ5dGVzKERFRkFVTFRfSFRUUF9IRUFERVJfRU5DT0RJTkcpKTsKLSAgICBvcy53cml0ZShwYXlsb2FkQXNVVEY4KTsKLSAgICBvcy5mbHVzaCgpOwotICAgIGh0dHBSZXNwb25zZSA9IG5ldyBIVFRQUmVzcG9uc2UoKTsKLSAgICByZWFkSFRUUFJlc3BvbnNlSGVhZGVyKGlzLCBodHRwUmVzcG9uc2UpOwotICAgIGludCBjb2RlID0gaHR0cFJlc3BvbnNlLmdldFN0YXR1c0NvZGUoKTsKLSAgICBpZiAoY29kZSA9PSBIVFRQX0NPREVfQ09OVElOVUUpCi0gICAgewotICAgICAgaHR0cFJlc3BvbnNlLnJlc2V0KCk7Ci0gICAgICByZWFkSFRUUFJlc3BvbnNlSGVhZGVyKGlzLCBodHRwUmVzcG9uc2UpOwotICAgIH0KLSAgICByZWFkSFRUUFJlc3BvbnNlUGF5bG9hZChpcywgaHR0cFJlc3BvbnNlKTsKLSAgICBvcy5jbG9zZSgpOwotICAgIGlzLmNsb3NlKCk7Ci0gICAgc29ja2V0LmNsb3NlKCk7Ci0gICAgY29kZSA9IGh0dHBSZXNwb25zZS5nZXRTdGF0dXNDb2RlKCk7Ci0gICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gaHR0cFJlc3BvbnNlLmdldEhlYWRlcihIVFRQX0hFQURFUl9DT05URU5UX1RZUEUudG9Mb3dlckNhc2UoKSk7Ci0gICAgaWYgKGNvZGUgPj0gSFRUUF9DT0RFX0VYQ0VQVElPTiAmJiAoY29udGVudFR5cGUgPT0gbnVsbCB8fCBjb250ZW50VHlwZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoVEVYVF9YTUwudG9Mb3dlckNhc2UoKSkgPT0gLTEpKQotICAgICAgdGhyb3cgbmV3IEhUVFBUcmFuc3BvcnRFeGNlcHRpb24oY29kZSwgaHR0cFJlc3BvbnNlLmdldFN0YXR1c01lc3NhZ2UoKSwgaHR0cFJlc3BvbnNlLmdldEhlYWRlcnMoKSk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgcmVhZEhUVFBSZXNwb25zZUhlYWRlcihJbnB1dFN0cmVhbSBpcywgSFRUUFJlc3BvbnNlIHJlc3ApIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgYnl0ZSBiID0gMDsKLSAgICBpbnQgbGVuID0gMDsKLSAgICBpbnQgY29sb25JbmRleCA9IC0xOwotICAgIFN0cmluZyBrZXk7Ci0gICAgU3RyaW5nIHZhbHVlOwotICAgIGJvb2xlYW4gcmVhZFRvb011Y2ggPSBmYWxzZTsKLSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvczsKLSAgICBmb3IgKGJhb3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKDQwOTYpOzspCi0gICAgewotICAgICAgaWYgKCFyZWFkVG9vTXVjaCkKLSAgICAgICAgYiA9IChieXRlKWlzLnJlYWQoKTsKLSAgICAgIGlmIChiID09IC0xKQotICAgICAgICBicmVhazsKLSAgICAgIHJlYWRUb29NdWNoID0gZmFsc2U7Ci0gICAgICBpZiAoKGIgIT0gUikgJiYgKGIgIT0gTikpCi0gICAgICB7Ci0gICAgICAgIGlmICgoYiA9PSBDT0xPTikgJiYgKGNvbG9uSW5kZXggPT0gLTEpKQotICAgICAgICAgIGNvbG9uSW5kZXggPSBsZW47Ci0gICAgICAgIGxlbisrOwotICAgICAgICBiYW9zLndyaXRlKGIpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoYiA9PSBSKQotICAgICAgICBjb250aW51ZTsKLSAgICAgIGVsc2UgLy8gYiA9PSBOCi0gICAgICB7Ci0gICAgICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgYiA9IChieXRlKWlzLnJlYWQoKTsKLSAgICAgICAgcmVhZFRvb011Y2ggPSB0cnVlOwotICAgICAgICAvLyBBIHNwYWNlIG9yIHRhYiBhdCB0aGUgYmVnaW5pbmcgb2YgYSBsaW5lIG1lYW5zIHRoZSBoZWFkZXIgY29udGludWVzLgotICAgICAgICBpZiAoKGIgPT0gU1BBQ0UpIHx8IChiID09IFRBQikpCi0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGJhb3MuY2xvc2UoKTsKLSAgICAgICAgYnl0ZVtdIGJBcnJheSA9IGJhb3MudG9CeXRlQXJyYXkoKTsKLSAgICAgICAgYmFvcy5yZXNldCgpOwotICAgICAgICBpZiAoY29sb25JbmRleCAhPSAtMSkKLSAgICAgICAgewotICAgICAgICAgIGtleSA9IG5ldyBTdHJpbmcoYkFycmF5LCAwLCBjb2xvbkluZGV4LCBERUZBVUxUX0hUVFBfSEVBREVSX0VOQ09ESU5HKTsKLSAgICAgICAgICB2YWx1ZSA9IG5ldyBTdHJpbmcoYkFycmF5LCBjb2xvbkluZGV4ICsgMSwgbGVuIC0gMSAtIGNvbG9uSW5kZXgsIERFRkFVTFRfSFRUUF9IRUFERVJfRU5DT0RJTkcpOwotICAgICAgICAgIGNvbG9uSW5kZXggPSAtMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBrZXkgPSBuZXcgU3RyaW5nKGJBcnJheSwgMCwgbGVuLCBERUZBVUxUX0hUVFBfSEVBREVSX0VOQ09ESU5HKTsKLSAgICAgICAgICB2YWx1ZSA9IEVNUFRZX1NUUklORzsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXJlc3AuaXNTdGF0dXNTZXQoKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIFJlYWRlciBzdGF0dXMgY29kZQotICAgICAgICAgIGludCBzdGFydCA9IGtleS5pbmRleE9mKFNQQUNFKSArIDE7Ci0gICAgICAgICAgU3RyaW5nIHMgPSBrZXkuc3Vic3RyaW5nKHN0YXJ0KS50cmltKCk7Ci0gICAgICAgICAgaW50IGVuZCA9IHMuaW5kZXhPZihTUEFDRSk7Ci0gICAgICAgICAgaWYgKGVuZCAhPSAtMSkKLSAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZygwLCBlbmQpOwotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3Auc2V0U3RhdHVzQ29kZShJbnRlZ2VyLnBhcnNlSW50KHMpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBuZmUpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmVzcC5zZXRTdGF0dXNDb2RlKC0xKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmVzcC5zZXRTdGF0dXNNZXNzYWdlKGtleS5zdWJzdHJpbmcoc3RhcnQgKyBlbmQgKyAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIHJlc3AuYWRkSGVhZGVyKGtleS50b0xvd2VyQ2FzZSgpLnRyaW0oKSwgdmFsdWUudHJpbSgpKTsKLSAgICAgICAgbGVuID0gMDsKLSAgICAgIH0KLSAgICB9Ci0gICAgYmFvcy5jbG9zZSgpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHJlYWRIVFRQUmVzcG9uc2VQYXlsb2FkKElucHV0U3RyZWFtIGlzLCBIVFRQUmVzcG9uc2UgcmVzcCkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBieXRlIGIgPSAoYnl0ZSlpcy5yZWFkKCk7Ci0gICAgICB3aGlsZSAoYiAhPSAtMSkKLSAgICAgIHsKLSAgICAgICAgYmFvcy53cml0ZShiKTsKLSAgICAgICAgYiA9IChieXRlKWlzLnJlYWQoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKFNvY2tldFRpbWVvdXRFeGNlcHRpb24gc3RlKQotICAgIHsKLSAgICB9Ci0gICAgYmFvcy5jbG9zZSgpOwotICAgIHJlc3Auc2V0UGF5bG9hZChiYW9zLnRvQnl0ZUFycmF5KCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlY2VpdmVzIHRoZSBieXRlcyBmcm9tIHRoZSBsYXN0IHdlYiBzZXJ2aWNlIGludm9jYXRpb24uICBUaGlzIGlzIHVzZWQgYnkgV1NFJ3MgZGVmYXVsdAotICAgKiBTT0FQIHRyYW5zcG9ydC4KLSAgICogCi0gICAqIEByZXR1cm4gQSBieXRlIGFycmF5LgotICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCi0gICAqLwotICBieXRlW10gcmVjZWl2ZUJ5dGVzKCkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBpZiAoaHR0cFJlc3BvbnNlICE9IG51bGwpCi0gICAgewotICAgICAgICBieXRlW10gcGF5bG9hZCA9IGh0dHBSZXNwb25zZS5nZXRQYXlsb2FkKCk7Ci0gICAgICAgIGlmIChDSFVOS0VELmVxdWFsc0lnbm9yZUNhc2UoaHR0cFJlc3BvbnNlLmdldEhlYWRlcihIVFRQX0hFQURFUl9UUkFOU0ZFUl9FTkNPREVJTkcudG9Mb3dlckNhc2UoKSkpKQotICAgICAgICB7Ci0gICAgICAgICAgQnl0ZUFycmF5SW5wdXRTdHJlYW0gYmFpcyA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShwYXlsb2FkKTsKLSAgICAgICAgICBDaHVua2VkSW5wdXRTdHJlYW0gY2lzID0gbmV3IENodW5rZWRJbnB1dFN0cmVhbShiYWlzKTsKLSAgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKLSAgICAgICAgICBieXRlIGI7Ci0gICAgICAgICAgd2hpbGUgKChiID0gKGJ5dGUpY2lzLnJlYWQoKSkgIT0gLTEpCi0gICAgICAgICAgICBiYW9zLndyaXRlKGIpOwotICAgICAgICAgIGJhb3MuY2xvc2UoKTsKLSAgICAgICAgICBjaXMuY2xvc2UoKTsKLSAgICAgICAgICBiYWlzLmNsb3NlKCk7Ci0gICAgICAgICAgcmV0dXJuIGJhb3MudG9CeXRlQXJyYXkoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gcGF5bG9hZDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgYWZ0ZXIgV1NFIHN3dGljaGVzIHRvIHVzaW5nIGEgcGx1Z2dhYmxlIHRyYW5zcG9ydCB2aWEgZW5oYW5jZW1lbnQgMTc2NDkzLgotICAgKiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoaXMgbWV0aG9kIGlzIHJlZmFjdG9yZWQgdG8gdGhlIHJlY2VpdmVCeXRlcygpIG1ldGhvZC4gCi0gICAqIAotICAgKiBAZGVwcmVjYXRlZAotICAgKi8KLSAgcHVibGljIEJ1ZmZlcmVkUmVhZGVyIHJlY2VpdmUoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgYnl0ZVtdIHBheWxvYWQgPSByZWNlaXZlQnl0ZXMoKTsKLSAgICAgIGlmIChwYXlsb2FkICE9IG51bGwpIHsKLSAgICAJRWxlbWVudCBzb2FwRW52ZWxvcGUgPSBYTUxVdGlscy5ieXRlQXJyYXlUb0VsZW1lbnQocGF5bG9hZCwgZmFsc2UpOwotICAgICAgICAvLyByZW1vdmUgWE1MIG5hbWVzcGFjZSBkZWNsYXJhdGlvbgotICAgICAgICBpZiAoc29hcEVudmVsb3BlICE9IG51bGwpCi0gICAgICAgICAgcmV0dXJuIG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKFhNTFV0aWxzLnNlcmlhbGl6ZShzb2FwRW52ZWxvcGUsIHRydWUpLmdldEJ5dGVzKERFRkFVTFRfU09BUF9FTkNPRElORykpLCBERUZBVUxUX1NPQVBfRU5DT0RJTkcpKTsgCi0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICB7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIEhhc2h0YWJsZSBnZXRIZWFkZXJzKCkKLSAgewotICAgIEhhc2h0YWJsZSBoZWFkZXJzID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGlmIChodHRwUmVzcG9uc2UgIT0gbnVsbCkKLSAgICAgIGhlYWRlcnMucHV0QWxsKGh0dHBSZXNwb25zZS5nZXRIZWFkZXJzKCkpOwotICAgIHJldHVybiBoZWFkZXJzOwotICB9Ci0KLSAgLyoqCi0gICAqIEJ1aWxkcyB0aGUgZmlyc3QgbGluZSBvZiBhIGNvbm5lY3Rpb24gcmVxdWVzdCB0byB0aGUgcHJveHkgc2VydmVyCi0gICAqIAotICAgKiBAcGFyYW0gdXJsIFRoZSBVUkwgdGhhdCB3ZSB3YW50IHRvIHVsdGltYXRlbHkgY29ubmVjdCB0by4KLSAgICogQHJldHVybiBBIHN0cmluZyBvZiB0aGUgZm9ybSAiQ09OTkVDVCAmbHQ7aG9zdG5hbWUmZ3Q7OiZsdDtwb3J0Jmd0OyBIVFRQLzEuMCIuCi0gICAqLwotICBwcml2YXRlIFN0cmluZ0J1ZmZlciBnZXRDb25uZWN0TWV0aG9kKFVSTCB1cmwpIHsKLQkKLQkgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoSFRUUF9DT05ORUNUKTsKLQkgIHNiLmFwcGVuZChTUEFDRSk7CSAgCi0JICBzYi5hcHBlbmQodXJsLmdldEhvc3QoKSk7Ci0JICBzYi5hcHBlbmQoQ09MT04pOwotCSAgc2IuYXBwZW5kKHVybC5nZXRQb3J0KCkpOwotCSAgc2IuYXBwZW5kKFNQQUNFKTsKLQkgIHNiLmFwcGVuZChIVFRQX1ZFUlNJT05fMV8wKTsKLQkgIHNiLmFwcGVuZChORVdfTElORSk7Ci0JICByZXR1cm4gc2I7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDb25zdHJ1Y3QgYSBzb2NrZXQgdG8gdGhlIHByb3h5IHNlcnZlciB3aGljaCBiZSB1c2VkIHRvIHR1bm5lbCB0aHJvdWdoLgotICAgKiAKLSAgICogQHBhcmFtIHVybCBUaGUgVVJMIHRoYXQgd2Ugd2FudCB0byB1bHRpbWF0ZWx5IGNvbm5lY3QgdG8uCi0gICAqIEBwYXJhbSBwcm94eUhvc3QgVGhlIHByb3h5IGhvc3QuCi0gICAqIEBwYXJhbSBwcm94eVBvcnQgVGhlIHByb3h5IHBvcnQuCi0gICAqIEByZXR1cm4gQSBjb25uZWN0ZWQgc29ja2V0IHRvIHRoZSBwcm94eSBzZXJ2ZXIuIAotICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIAotICAgKi8KLSAgcHJpdmF0ZSBTb2NrZXQgYnVpbGRUdW5uZWxTb2NrZXQoVVJMIHVybCwgU3RyaW5nIHByb3h5SG9zdCwgaW50IHByb3h5UG9ydCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKLQotCSAgU3RyaW5nQnVmZmVyIGh0dHBIZWFkZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0JICBodHRwSGVhZGVyLmFwcGVuZChnZXRDb25uZWN0TWV0aG9kKHVybCkpOwotCSAgaHR0cEhlYWRlci5hcHBlbmQoZ2V0UHJveHlBdXRoZW50aWNhdGlvbigpKTsgICAgICAgCi0JICBodHRwSGVhZGVyLmFwcGVuZChORVdfTElORSk7Ci0gICAgCi0JICBTb2NrZXQgdHVubmVsID0gbmV3IFNvY2tldChwcm94eUhvc3QsIHByb3h5UG9ydCk7Ci0gICAgCi0JICBJbnB1dFN0cmVhbSAgaXMgPSB0dW5uZWwuZ2V0SW5wdXRTdHJlYW0oKTsKLQkgIE91dHB1dFN0cmVhbSBvcyA9IHR1bm5lbC5nZXRPdXRwdXRTdHJlYW0oKTsKLSAgICAKLQkgIG9zLndyaXRlKGh0dHBIZWFkZXIudG9TdHJpbmcoKS5nZXRCeXRlcyhERUZBVUxUX0hUVFBfSEVBREVSX0VOQ09ESU5HKSk7ICAgICAgICAKLQkgIG9zLmZsdXNoKCk7Ci0gICAgCi0JICBIVFRQUmVzcG9uc2UgaHR0cFJlc3BvbnNlID0gbmV3IEhUVFBSZXNwb25zZSgpOwotCSAgcmVhZEhUVFBSZXNwb25zZUhlYWRlcihpcywgaHR0cFJlc3BvbnNlKTsKLSAgICAKLQkgIGludCBjb2RlID0gaHR0cFJlc3BvbnNlLmdldFN0YXR1c0NvZGUoKTsKLQotCSAgLy8gZW5zdXJlIHdlIGFyZSBzdWNjZXNzZnVsbHkgY29ubmVjdGVkIHRvIHRoZSBwcm94eQotCSAgaWYgKGNvZGUgIT0gSFRUUF9DT0RFX09LKQotCQkgIHRocm93IG5ldyBIVFRQVHJhbnNwb3J0RXhjZXB0aW9uKGNvZGUsIGh0dHBSZXNwb25zZS5nZXRTdGF0dXNNZXNzYWdlKCksIGh0dHBSZXNwb25zZS5nZXRIZWFkZXJzKCkpOwotCSAgCi0JICByZXR1cm4gdHVubmVsOwotICB9Ci0gIAotICBwcml2YXRlIFNvY2tldCBidWlsZFNvY2tldChVUkwgdXJsKSB0aHJvd3MgVW5rbm93bkhvc3RFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0gIHsKLSAgICBTb2NrZXQgcyA9IG51bGw7Ci0gICAgU3RyaW5nIGhvc3QgPSB1cmwuZ2V0SG9zdCgpOwotICAgIGludCBwb3J0ID0gdXJsLmdldFBvcnQoKTsKLSAgICBTdHJpbmcgcHJveHlIb3N0ID0gU3lzdGVtLmdldFByb3BlcnR5KFNZU19QUk9QX0hUVFBfUFJPWFlfSE9TVCk7Ci0gICAgaW50IHByb3h5UG9ydCA9IEludGVnZXIuZ2V0SW50ZWdlcihTWVNfUFJPUF9IVFRQX1BST1hZX1BPUlQsIERFRkFVTFRfSFRUUF9QT1JUKS5pbnRWYWx1ZSgpOwotICAgIAotICAgIFN0cmluZyBub25Qcm94eUhvc3RzID0gU3lzdGVtLmdldFByb3BlcnR5KFNZU19QUk9QX0hUVFBfTk9OX1BST1hZX0hPU1RTKTsKLQotICAgIC8vICBTdHJpbmcgcHJveHlVc2VyTmFtZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eShTWVNfUFJPUF9IVFRQX1BST1hZX1VTRVJfTkFNRSk7Ci0gICAgLy8gIFN0cmluZyBwcm94eVBhc3N3b3JkID0gU3lzdGVtLmdldFByb3BlcnR5KFNZU19QUk9QX0hUVFBfUFJPWFlfUEFTU1dPUkQpOwotICAgIGlmICh1cmwuZ2V0UHJvdG9jb2woKS5lcXVhbHNJZ25vcmVDYXNlKEhUVFBTKSkKLSAgICB7Ci0gICAgICBwcm94eUhvc3QgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoU1lTX1BST1BfSFRUUFNfUFJPWFlfSE9TVCk7Ci0gICAgICBwcm94eVBvcnQgPSBJbnRlZ2VyLmdldEludGVnZXIoU1lTX1BST1BfSFRUUFNfUFJPWFlfUE9SVCwgREVGQVVMVF9IVFRQU19QT1JUKS5pbnRWYWx1ZSgpOwotICAgICAgbm9uUHJveHlIb3N0cyA9IFN5c3RlbS5nZXRQcm9wZXJ0eShTWVNfUFJPUF9IVFRQU19OT05fUFJPWFlfSE9TVFMpOwotCi0gICAgICBpZiAocHJveHlIb3N0ICE9IG51bGwgJiYgcHJveHlIb3N0Lmxlbmd0aCgpID4gMCAmJiAhaXNIb3N0SW5Ob25Qcm94eUhvc3RzKGhvc3QsIG5vblByb3h5SG9zdHMsIERFRkFVTFRfQ0FTRV9TRU5TSVRJVkVfRk9SX0hPU1RfTkFNRSkpCi0gICAgICB7Ci0gICAgICAgIC8vIFNTTCB3aXRoIHByb3h5IHNlcnZlcgotICAgICAgICBTb2NrZXQgdHVubmVsID0gYnVpbGRUdW5uZWxTb2NrZXQodXJsLCBwcm94eUhvc3QsIHByb3h5UG9ydCk7ICAgICAgIAotICAgICAgICBzID0gKChTU0xTb2NrZXRGYWN0b3J5KSBTU0xTb2NrZXRGYWN0b3J5LmdldERlZmF1bHQoKSkuY3JlYXRlU29ja2V0KHR1bm5lbCwgaG9zdCwgcG9ydCwgdHJ1ZSk7ICAgIAkgIAotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBzID0gU1NMU29ja2V0RmFjdG9yeS5nZXREZWZhdWx0KCkuY3JlYXRlU29ja2V0KGhvc3QsIChwb3J0ID4gMCA/IHBvcnQgOiBERUZBVUxUX0hUVFBTX1BPUlQpKTsKLSAgICAgIC8vIFJlbW92aW5nIGRlcGVuZGVuY3kgb24gc29hcC5qYXIKLSAgICAgIC8vICBzID0gU1NMVXRpbHMuYnVpbGRTU0xTb2NrZXQoaG9zdCwgKHBvcnQgPiAwID8gcG9ydCA6IERFRkFVTFRfSFRUUFNfUE9SVCksIHByb3h5SG9zdCwgcHJveHlQb3J0KTsKLSAgICAgIC8vIFRPRE86Ci0gICAgICAvLyBCdWlsZCBhbiBTU0wgc29ja2V0IHRoYXQgc3VwcG9ydHMgcHJveHlVc2VyIGFuZCBwcm94eVBhc3N3b3JkLAotICAgICAgLy8gYXMgZGVtb25zdHJhdGVkIGluIHRoZSBmb2xsb3dpbmcgKG9yaWdpbmFsKSBsaW5lIG9mIGNvZGU6Ci0gICAgICAvLyAgcyA9IFNTTFV0aWxzLmJ1aWxkU1NMU29ja2V0KGhvc3QsIChwb3J0ID4gMCA/IHBvcnQgOiBERUZBVUxUX0hUVFBTX1BPUlQpLCBwcm94eUhvc3QsIHByb3h5UG9ydCwgcHJveHlVc2VyTmFtZSwgcHJveHlQYXNzd29yZCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHByb3h5SG9zdCAhPSBudWxsICYmIHByb3h5SG9zdC5sZW5ndGgoKSA+IDAgJiYgIWlzSG9zdEluTm9uUHJveHlIb3N0cyhob3N0LCBub25Qcm94eUhvc3RzLCBERUZBVUxUX0NBU0VfU0VOU0lUSVZFX0ZPUl9IT1NUX05BTUUpKQotICAgICAgcyA9IG5ldyBTb2NrZXQocHJveHlIb3N0LCBwcm94eVBvcnQpOwotICAgIGVsc2UKLSAgICAgIHMgPSBuZXcgU29ja2V0KGhvc3QsIChwb3J0ID4gMCA/IHBvcnQgOiBERUZBVUxUX0hUVFBfUE9SVCkpOwotICAgIHJldHVybiBzOwotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gaXNIb3N0SW5Ob25Qcm94eUhvc3RzKFN0cmluZyBob3N0LCBTdHJpbmcgbm9uUHJveHlIb3N0cywgYm9vbGVhbiBjYXNlU2Vuc2l0aXZlKQotICB7Ci0gIAlpZiAoY2FzZVNlbnNpdGl2ZSkgcmV0dXJuIGhvc3QubWF0Y2hlcyhjcmVhdGVQYXR0ZXJuRnJvbVN0cmluZyhub25Qcm94eUhvc3RzKSk7Ci0gIAllbHNlIHJldHVybiBob3N0LnRvTG93ZXJDYXNlKCkubWF0Y2hlcyhjcmVhdGVQYXR0ZXJuRnJvbVN0cmluZyhub25Qcm94eUhvc3RzLnRvTG93ZXJDYXNlKCkpKTsgIAotICB9Ci0gIAotICAvKgotICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgdmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZvciBhIAotICAgKiBub3JtYWwgamF2YSBTdHJpbmcgdXNlZCBpbiB0aGUgcHJveHkgbWVjaGFuaXNtLiAKLSAgICogRm9yIGV4YW1wbGUsIHRoZSBodHRwLm5vblByb3h5SG9zdHMgY29udGFpbnMgZm9sbG93aW5nIFN0cmluZzogCi0gICAqICIxOTIuMTY4LjIuKnxsb2NhbGhvc3R8Ki5pYm0uY29tIiAuIEl0IHdvdWxkIGJlIAotICAgKiB0cmFuc2Zvcm1lZCBpbnRvOiAiMTkyXC4xNjhcLjJcLlx3Knxsb2NhbGhvc3R8XHcqXC5pYm1cLmNvbSIKLSAgICogVGh1cywgZm9sbG93aW5nIGhvc3Qgc3RyaW5nIHdvdWxkIG1hdGNoIGFib3ZlIHBhdHRlcm46Ci0gICAqIDE5Mi4xNjguMi41IDE5Mi4xNjguMi4gMTkyLjE2OC4yLjY2NiAxOTIuMTY4LjIudwotICAgKiBsb2NhbGhvc3QKLSAgICogdG9yb2xhYi5pYm0uY29tIC5pYm0uY29tIDEyMy5pYm0uY29tCi0gICAqIAotICAgKiBUd28gdHJhbnNmb3JtYXRpb25zIGFyZSBkb25lOgotICAgKiAxLiByZXBsYWNlIGFsbCAiLiIgaW50byAiXC4iIEFzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiwgJy4nIHJlcHJlc2VudHMgCi0gICAqICAgIGFueSBjaGFyYXRlci4gICJcLicgcmVwcmVzZW50cyB0aGUgcmVhbCBjaGFyYWN0ZXIgJy4nCi0gICAqIDIuIEluIG9yZGVyIHRvIGdldCB0aGUgcmVhbCBtZWFuaW5nIG9mICIqIiB1c2VkIGluIHByb3BlcnR5IAotICAgKiAgICBodHRwLm5vblByb3h5SG9zdHMsICJcdyoiIGlzIHVzZWQgdG8gcmVwbGFjZSAiKiIKLSAgICogICAgIlx3IiByZXByZXNlbnQgYSB3b3JkIGNoYXJhY3RlcjogW2EtekEtWl8wLTldCi0gICAqICAgIAotICAgKiBSZXN0cmljdGlvbjoKLSAgICogVGhlIHZhbGlkaXR5IG9mIGFkZHJlc3MgaXMgbm90IGNoZWNrZWQuIAotICAgKiAoMTkyLjE2OC4yLjU1NSBhbmQgMTkyLjE2OC4yLmNvbSBhcmUgT0spCi0gICAqIAotICAgKiBUT0RPIGNoZWNrIHdoZXRoZXIgKiBvY2N1cnMgaW4gYWRkcmVzcyBvciBob3N0bmFtZS4KLSAgICogaWYgaXQgb2NjdXVzIGluIGFkZHJlc3MgcmVwcmVzZW50YXRpb24sIHJlcGxhY2UgIioiIHdpdGggIlxkKiIKLSAgICogYW5kIGNoZWNrOiB2YWx1ZSA8IDI1NiA/Ci0gICAqLwotICBwcml2YXRlIFN0cmluZyBjcmVhdGVQYXR0ZXJuRnJvbVN0cmluZyhTdHJpbmcgc3RyKSAKLSAgewotICAgIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMgZm9sbG93aW5nIG1vcmUgdW5kZXJzdGFuZGFibGUgd2F5OgotCSAqIHJldHVybiBzdHIucmVwbGFjZSgiLiIsICJcXC4iKS5yZXBsYWNlKCIqIiwgIlxcdyoiKTsKLQkgKiBCdXQsIHJlcGxhY2UoQ2hhclNlcXVlbmNlIHRhcmdldCwgQ2hhclNlcXVlbmNlIHJlcGxhY2VtZW50KSBjYW4gb25seSBiZSAKLQkgKiBzdXBwb3J0ZWQgYWZ0ZXIgajJzZSAxLjUsIG9uIHRoZSBvdGhlciBoYW5kLCAKLQkgKiByZXBsYWNlQWxsKFN0cmluZyByZWdleCwgU3RyaW5nIHJlcGxhY2VtZW50KSBjYW4gYmUgc3VwcG9ydGVkIGJlZm9yZSAKLQkgKiBqMnNlIDEuNS4KLQkgKi8KLSAgICByZXR1cm4gc3RyID09IG51bGwgPyBudWxsIDogc3RyLnJlcGxhY2VBbGwoIlxcLiIsICJcXC4iKS5yZXBsYWNlQWxsKCJcXCoiLCAiXFx3KiIpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNwb3J0L1NPQVBNZXNzYWdlUHJvY2Vzc29yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNwb3J0L1NPQVBNZXNzYWdlUHJvY2Vzc29yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MzIxMTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3RyYW5zcG9ydC9TT0FQTWVzc2FnZVByb2Nlc3Nvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDk5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICogMjAwODEwMjAgICAyNTEyNjkgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBXU0UgU2VuZHMgV3JvbmcgTmFtZXNwYWNlIGZvciBjaGlsZCBlbGVtZW50cyBvZiB0aGUgU09BUCBib2R5Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwudHJhbnNwb3J0OwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmF4aXMuQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlhNTFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnV0aWwuU29hcEhlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LklEZXNlcmlhbGl6ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU2VyaWFsaXplcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0Lk1lc3NhZ2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuVHJhbnNwb3J0RXhjZXB0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXA7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci0KLS8qKgotICogVGhpcyBjbGFzcyBwcm92aWRlcyBpbXBsZW1lbnRhdGlvbiBmb3IgV1NFIGRlZmF1bHQgU09BUCB0cmFuc3BvcnQncyBJU2VyaWFsaXplciBhbmQgSURlc2VyaWFsaXplci4KLSAqLwotcHVibGljIGNsYXNzIFNPQVBNZXNzYWdlUHJvY2Vzc29yIGltcGxlbWVudHMgSVNlcmlhbGl6ZXIsIElEZXNlcmlhbGl6ZXIgewotCQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBMSVRFUkFMID0gImxpdGVyYWwiOwotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1NPQVBfRU5DT0RJTkcgPSAiVVRGLTgiOwkKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTElORV9TRVBBUkFUT1IgPSBTeXN0ZW0uZ2V0UHJvcGVydGllcygpLmdldFByb3BlcnR5KCJsaW5lLnNlcGFyYXRvciIpOwotCQotCS8qCi0JICogQ29uc3RydWN0b3IuCi0JICovCi0JU09BUE1lc3NhZ2VQcm9jZXNzb3IoKSB7fQotCQotCS8qCi0JICogSm9pbiB0aGUgZW5jb2RpbmdTdHlsZXMgaW50byBhIHNwYWNlIHNlcGFyYXRlZCBzdHJpbmcKLQkgKi8KLQlwcml2YXRlIFN0cmluZyBqb2luRW5jb2RpbmdTdHlsZXMoTGlzdCBsaXN0KSB7Ci0JCQotCQlpZiAobGlzdC5pc0VtcHR5KCkpCi0JCQlyZXR1cm4gbnVsbDsKLQkJCi0JCVN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLQkJCi0JCUl0ZXJhdG9yIGl0ZXIgPSBsaXN0Lml0ZXJhdG9yKCk7Ci0JCXdoaWxlIChpdGVyLmhhc05leHQoKSkKLQkJCXNiLmFwcGVuZCgiICIpLmFwcGVuZChpdGVyLm5leHQoKSk7Ci0JCQotCQlyZXR1cm4gc2Iuc3Vic3RyaW5nKDEpLnRvU3RyaW5nKCk7Ci0JfQotCQotCS8qCi0JICogUmV0cmlldmVzIHRoZSBlbmNvZGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBiaW5kaW5nIGZvciB0aGUgc2VsZWN0ZWQgb3BlcmF0aW9uLgotCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmx5IGZvciBSUEMgc3R5bGUgYmluZGluZ3MuICBUd28gcGllY2VzIG9mIGluZm9ybWF0aW9uIGFyZSByZXR1cm5lZDogIAotCSAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGVuY29kaW5nIG5hbWVzcGFjZSBpbiBlbGVtZW50IFswXSAKLQkgKiBJZiB0aGUgdXNlIGlzIGVuY29kZWQgdGhlbiB0aGUgZW5jb2Rpbmcgc3R5bGUocykgaXMgcmV0dXJuZWQgaW4gZWxlbWVudCBbMV0uICBJZiB0aGUgdXNlIGlzIGxpdGVyYWwsIAotCSAqIHRoZW4gZWxlbWVudFsxXSBpcyByZXR1cm5lZCBudWxsLgotCSAqLwotCXByaXZhdGUgU3RyaW5nW10gZ2V0RW5jb2RpbmdJbmZvKE1lc3NhZ2VDb250ZXh0IGNvbnRleHQpIHsKLQkJCi0JCVN0cmluZ1tdIGluZm8gPSBuZXcgU3RyaW5nW10geyBudWxsLCBudWxsIH07Ci0JCQotCQlJdGVyYXRvciBpdGVyID0gY29udGV4dC5nZXRCaW5kaW5nT3BlcmF0aW9uKCkuZ2V0QmluZGluZ0lucHV0KCkKLQkJCS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotCQkJCQotCQkvLyBsb29rIGZvciB0aGUgc29hcGJpbmQ6Ym9keSBleHRlbnNpbGliaXR5IGVsZW1lbnQKLQkJd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7Ci0JCQlFeHRlbnNpYmlsaXR5RWxlbWVudCBlID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBpdGVyLm5leHQoKTsJCQkKLQkJCWlmICghKGUgaW5zdGFuY2VvZiBTT0FQQm9keSkpCi0JCQkJY29udGludWU7Ci0JCQkKLQkJCVNPQVBCb2R5IHNvYXBCb2R5ID0gKFNPQVBCb2R5KSBlOwotCQkJCi0JCQlpbmZvWzBdID0gc29hcEJvZHkuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0JCQkvLyB1c2U9ImVuY29kZWQiCi0JCQlpZiAoIUxJVEVSQUwuZXF1YWxzKHNvYXBCb2R5LmdldFVzZSgpKSkgewotCQkJCWluZm9bMV0gPSBqb2luRW5jb2RpbmdTdHlsZXMoc29hcEJvZHkuZ2V0RW5jb2RpbmdTdHlsZXMoKSk7Ci0JCQl9Ci0JCQkJCQotCQkJYnJlYWs7Ci0JCX0KLQkJCi0JCS8vIG5hbWVzcGFjZSBub3Qgc3BlY2lmaWVkIG9uIHRoZSBzb2FwYmluZDpib2R5IGVsZW1lbnQsIHVzZSB0aGUgZGVmaW5pdGlvbidzCi0JCWlmIChpbmZvWzBdID09IG51bGwpCi0JCQlpbmZvWzBdID0gY29udGV4dC5nZXREZWZpbml0aW9uKCkuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0JCQotCQlyZXR1cm4gaW5mbzsKLQl9Ci0JCi0JLyoKLSAgICAgKiBXUy1JOiBJbiBhIHJwYy1saXRlcmFsIFNPQVAgYmluZGluZywgdGhlIHNlcmlhbGl6ZWQgY2hpbGQgZWxlbWVudCBvZiB0aGUgCi0gICAgICogc29hcDpCb2R5IGVsZW1lbnQgY29uc2lzdHMgb2YgYSB3cmFwcGVyIGVsZW1lbnQsIHdob3NlIG5hbWVzcGFjZSBpcyB0aGUgdmFsdWUgCi0gICAgICogb2YgdGhlIG5hbWVzcGFjZSBhdHRyaWJ1dGUgb2YgdGhlIHNvYXBiaW5kOmJvZHkgZWxlbWVudCBhbmQgd2hvc2UgbG9jYWwgbmFtZSBpcyAKLSAgICAgKiBlaXRoZXIgdGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiBvciB0aGUgbmFtZSBvZiB0aGUgb3BlcmF0aW9uIHN1ZmZpeGVkIAotICAgICAqIHdpdGggIlJlc3BvbnNlIi4gVGhlIG5hbWVzcGFjZSBhdHRyaWJ1dGUgaXMgcmVxdWlyZWQsIGFzIG9wcG9zZWQgdG8gYmVpbmcgCi0gICAgICogb3B0aW9uYWwsIHRvIGVuc3VyZSB0aGF0IHRoZSBjaGlsZHJlbiBvZiB0aGUgc29hcDpCb2R5IGVsZW1lbnQgYXJlIG5hbWVzcGFjZS0KLSAgICAgKiBxdWFsaWZpZWQuCi0gICAgICovCi0JcHJpdmF0ZSBFbGVtZW50IGNyZWF0ZVJQQ1dyYXBwZXIoRG9jdW1lbnQgZG9jdW1lbnQsIE1lc3NhZ2VDb250ZXh0IGNvbnRleHQsIEhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSkgewotCQkKLQkJU3RyaW5nIGVuY29kaW5nTmFtZXNwYWNlVVJJID0gZ2V0RW5jb2RpbmdJbmZvKGNvbnRleHQpWzBdOwotCQkKLQkJcmV0dXJuIFNvYXBIZWxwZXIuY3JlYXRlUlBDV3JhcHBlckVsZW1lbnQoCi0JCQkJZG9jdW1lbnQsIAotCQkJCW5hbWVzcGFjZVRhYmxlLCAKLQkJCQllbmNvZGluZ05hbWVzcGFjZVVSSSwgCi0JCQkJY29udGV4dC5nZXRCaW5kaW5nT3BlcmF0aW9uKCkuZ2V0T3BlcmF0aW9uKCkuZ2V0TmFtZSgpLAotCQkJCW51bGwpOwotCX0KLQkKLQkvKgotCSAqIEluaXRpYWxpemVzIHRoZSBjb250ZW50cyBvZiBuZXcgSVNPQVBNZXNzYWdlLgotCSAqLwotCXZvaWQgaW5pdE1lc3NhZ2UoSVNPQVBNZXNzYWdlIG1lc3NhZ2UpIHRocm93cyBUcmFuc3BvcnRFeGNlcHRpb24gewotCQotCQl0cnkgewotCQkJRG9jdW1lbnQgZG9jdW1lbnQgPSBYTUxVdGlscy5jcmVhdGVOZXdEb2N1bWVudChudWxsKTsKLQkJCQotCQkJSGFzaHRhYmxlIG5hbWVzcGFjZVRhYmxlID0gbmV3IEhhc2h0YWJsZSgpOwotCQkJU29hcEhlbHBlci5hZGREZWZhdWx0U29hcEVudmVsb3BlTmFtZXNwYWNlcyhuYW1lc3BhY2VUYWJsZSk7Ci0JCQkKLQkJCW1lc3NhZ2Uuc2V0RW52ZWxvcGUoU29hcEhlbHBlci5jcmVhdGVTb2FwRW52ZWxvcGVFbGVtZW50KGRvY3VtZW50LCBuYW1lc3BhY2VUYWJsZSkpOwotCQkJbWVzc2FnZS5zZXRIZWFkZXIoU29hcEhlbHBlci5jcmVhdGVTb2FwSGVhZGVyRWxlbWVudChkb2N1bWVudCkpOwotCQkJCi0JCQlFbGVtZW50IGJvZHkgPSBTb2FwSGVscGVyLmNyZWF0ZVNvYXBCb2R5RWxlbWVudChkb2N1bWVudCk7Ci0JCQlpZiAoIW1lc3NhZ2UuZ2V0TWVzc2FnZUNvbnRleHQoKS5pc0RvY3VtZW50U3R5bGUoKSkgewotCQkJCUVsZW1lbnQgcnBjV3JhcHBlciA9IGNyZWF0ZVJQQ1dyYXBwZXIoZG9jdW1lbnQsIG1lc3NhZ2UuZ2V0TWVzc2FnZUNvbnRleHQoKSwgbmFtZXNwYWNlVGFibGUpOwotCQkJCWJvZHkuYXBwZW5kQ2hpbGQocnBjV3JhcHBlcik7Ci0JCQl9CQkJCi0JCQltZXNzYWdlLnNldEJvZHkoYm9keSk7CQkJCi0JCQkKLQkJCW1lc3NhZ2Uuc2V0TmFtZXNwYWNlVGFibGUobmFtZXNwYWNlVGFibGUpOwotCQl9Ci0JCWNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIGUpIHsKLQkJCXRocm93IG5ldyBUcmFuc3BvcnRFeGNlcHRpb24oZSk7Ci0JCX0JCQotCX0KLQkKLQkvKgotCSAqIFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4gbG9jYWwgbmFtZSBmcm9tIHRoZSBzb2FwIGVudmVsb3BlIG5hbWVzcGFjZQotCSAqIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIG9uIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBuYW1lc3BhY2UgYXdhcmUsIGJ1dCB3ZSBoYXZlIHRvIGdpdmUKLQkgKiBpdCBhIG5hbWVzcGFjZSB0YWJsZSB0byBsb29rIHVwIHByZWZpeGVzLgotCSAqLwotCXByaXZhdGUgRWxlbWVudCBnZXRTT0FQRWxlbWVudChFbGVtZW50IHJvb3QsIFN0cmluZyBsb2NhbE5hbWUsIE1hcCBuYW1lc3BhY2VUYWJsZSkgewotCQlTdHJpbmcgcHJlZml4ID0gKFN0cmluZykgbmFtZXNwYWNlVGFibGUuZ2V0KENvbnN0YW50cy5VUklfU09BUDExX0VOVik7Ci0JCWlmIChwcmVmaXggPT0gbnVsbCkKLQkJCXJldHVybiBudWxsOwotCQkKLQkJTm9kZUxpc3QgbGlzdCA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUocHJlZml4ICsgIjoiICsgbG9jYWxOYW1lKTsKLQkJaWYgKGxpc3QuZ2V0TGVuZ3RoKCkgPT0gMCkKLQkJCXJldHVybiBudWxsOwotCQkKLQkJcmV0dXJuIChFbGVtZW50KSBsaXN0Lml0ZW0oMCk7Ci0JfQotCQotCS8qCi0JICogUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBsb2NhbCBuYW1lIGZyb20gdGhlIHNvYXAgZW52ZWxvcGUgbmFtZXNwYWNlLgotCSAqIFRoaXMgdmVyc2lvbiBhc3N1bWUgdGhlIGVsZW1lbnRzIGFyZSBuYW1lc3BhY2UgYXdhcmUuCi0JICovCi0JcHJpdmF0ZSBFbGVtZW50IGdldFNPQVBFbGVtZW50TlMoRWxlbWVudCByb290LCBTdHJpbmcgbG9jYWxOYW1lKSB7Ci0JCU5vZGVMaXN0IGxpc3QgPSByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoQ29uc3RhbnRzLlVSSV9TT0FQMTFfRU5WLCBsb2NhbE5hbWUpOwotCQlpZiAobGlzdC5nZXRMZW5ndGgoKSA9PSAwKQotCQkJcmV0dXJuIG51bGw7CQkKLQkKLQkJcmV0dXJuIChFbGVtZW50KSBsaXN0Lml0ZW0oMCk7Ci0JfQotCQotCS8qCi0JICogQ29udmVydCBhIE5vZGVMaXN0IHRvIGEgdmVjdG9yIG9mIGVsZW1lbnRzLCBub2RlcyB3aGljaCBhcmUgbm90IGVsZW1lbnRzIGFyZSBza2lwcGVkLgotCSAqLwotCXByaXZhdGUgVmVjdG9yIHRvRWxlbWVudFZlY3RvcihOb2RlTGlzdCBub2RlcykgewotCQkKLQkJVmVjdG9yIHZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLQkJCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgbm9kZXMuZ2V0TGVuZ3RoKCk7IGkrKykgewotCQkJTm9kZSBub2RlID0gbm9kZXMuaXRlbShpKTsKLQkJCWlmIChub2RlIGluc3RhbmNlb2YgRWxlbWVudCkKLQkJICAgIAl2ZWN0b3IuYWRkKG5vZGUpOwkJICAgIAotCQl9Ci0JCQotCQlyZXR1cm4gdmVjdG9yOwkKLQl9Ci0JCi0JLyoKLQkgKiBDb252ZXJ0IGEgTm9kZUxpc3QgdG8gYW4gYXJyYXkgb2YgZWxlbWVudHMsIG5vZGVzIHdoaWNoIGFyZSBub3QgZWxlbWVudHMgYXJlIHNraXBwZWQuCi0JICovCi0JcHJpdmF0ZSBFbGVtZW50W10gdG9FbGVtZW50QXJyYXkoTm9kZUxpc3Qgbm9kZXMpIHsKLQkJVmVjdG9yIHZlY3RvciA9IHRvRWxlbWVudFZlY3Rvcihub2Rlcyk7Ci0JCUVsZW1lbnRbXSBlbGVtZW50cyA9IG5ldyBFbGVtZW50W3ZlY3Rvci5zaXplKCldOwotCQl2ZWN0b3IuY29weUludG8oZWxlbWVudHMpOwotCQlyZXR1cm4gZWxlbWVudHM7Ci0JfQotCQotCS8vIFNlcmlhbGl6ZSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8JCi0JCi0JLyoKLQkgKiBhZGRzIHRoZSBlbmNvZGluZyBzdHlsZSBhdHRyaWJ1dGUgdG8gdGhlIGVhY2ggZWxlbWVudCBpbiB0aGUgZ2l2ZW4gYXJyYXkuCi0JICogbm9vcCBpZiBlbmNvZGluZ1N0eWxlIGlzIG51bGwKLQkgKi8KLQlwcml2YXRlIHZvaWQgYWRkRW5jb2RpbmdTdHlsZShFbGVtZW50W10gZWxlbWVudHMsIFN0cmluZyBlbmNvZGluZ1N0eWxlKSB7Ci0JCQkJCi0JCS8vIGVuY29kaW5nU3R5bGUgaXMgbm9uLW51bGwgb25seSBpZiB1c2U9ImVuY29kZWQiCi0JCWlmIChlbGVtZW50cyA9PSBudWxsIHx8IGVuY29kaW5nU3R5bGUgPT0gbnVsbCkKLQkJCXJldHVybjsKLQkJCi0JCWZvciAoaW50IGk9MDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0JICAgICAgICBpZiAoZWxlbWVudHNbaV0gPT0gbnVsbCkKLQkgICAgICAgIAljb250aW51ZTsKLQkgICAgCWVsZW1lbnRzW2ldLnNldEF0dHJpYnV0ZSgKLQkgICAgCQkJQ29uc3RhbnRzLk5TX1BSRUZJWF9TT0FQX0VOViArICI6IiArIENvbnN0YW50cy5BVFRSX0VOQ09ESU5HX1NUWUxFLCBlbmNvZGluZ1N0eWxlKTsJCQkKLQkJfQotCX0KLQkKLQkvKgotCSAqIFNlcmlhbGl6ZSBhbiBhcnJheSBvZiBlbGVtZW50cwotCSAqLwotCXByaXZhdGUgU3RyaW5nIHNlcmlhbGl6ZUVsZW1lbnRzKEVsZW1lbnRbXSBlbGVtZW50cykgewotCQotCQlTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCQkKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewotCQkJCQkKLQkJCVN0cmluZyBzZXJpYWxpemVkRnJhZ21lbnQgPSBYTUxVdGlscy5zZXJpYWxpemUoZWxlbWVudHNbaV0sIHRydWUpOwotCQkJaWYgKHNlcmlhbGl6ZWRGcmFnbWVudCA9PSBudWxsKSB7Ci0JCQkJLy8gT24gU29tZSBKUkUncyAoU3VuIGphdmEgNSkgZWxlbWVudHMgd2l0aCBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgeHNpCi0JCQkJLy8gcHJlZml4IGRvIG5vdCBzZXJpYWxpemUgcHJvcGVybHkgYmVjYXVzZSB0aGUgbmFtZXNwYWNlIGNhbiBub3QKLQkJCQkvLyBiZSBmb3VuZCBzbyB0aGUgc3RyaW5nIHJldHVybmVkIGNvbWVzIGJhY2sgYXMgbnVsbC4gVG8gd29ya2Fyb3VuZAotCQkJCS8vIHRoaXMgcHJvYmxlbSB0cnkgYWRkaW5nIGluIHRoZSBuYW1lc3BhY2UgZGVjbGFyYXRpb24gYXR0cmlidXRlCi0JCQkJLy8gYW5kIHJldHJ5IHRoZSBzZXJpYWxpemF0aW9uIChidWcgMTQ0ODI0KQkJCSAKLQkJCQllbGVtZW50c1tpXS5zZXRBdHRyaWJ1dGUoInhtbG5zOnhzaSIsIENvbnN0YW50cy5VUklfMjAwMV9TQ0hFTUFfWFNJKTsKLQkJCQlzZXJpYWxpemVkRnJhZ21lbnQgPSBYTUxVdGlscy5zZXJpYWxpemUoZWxlbWVudHNbaV0sIHRydWUpOwotCQkJfQotCQkJCi0JCQlidWZmZXIuYXBwZW5kKHNlcmlhbGl6ZWRGcmFnbWVudCk7Ci0JCQlidWZmZXIuYXBwZW5kKExJTkVfU0VQQVJBVE9SKTsKLQkJfQotCQkKLQkJcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOwotCX0KLQotCS8qCi0JICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gbWVzc2FnZSBpcyBhIHJlcXVlc3QgbWVzc2FnZSB1c2luZyBSUEMgc3R5bGUKLQkgKi8KLQlwcml2YXRlIGJvb2xlYW4gaXNSUENSZXF1ZXN0KElTT0FQTWVzc2FnZSBtZXNzYWdlKSB7Ci0JCXJldHVybiAKLQkJCSFtZXNzYWdlLmdldE1lc3NhZ2VDb250ZXh0KCkuaXNEb2N1bWVudFN0eWxlKCkgJiYJCQkJCQkJLy8gcnBjIHN0eWxlCi0JCQkhQm9vbGVhbi5UUlVFLmVxdWFscyhtZXNzYWdlLmdldFByb3BlcnR5KFNPQVBUcmFuc3BvcnQuUFJPUF9SRUFEX09OTFkpKTsJLy8gbm90IHJlYWQtb25seQotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LklTZXJpYWxpemVyI3NlcmlhbGl6ZShpbnQsIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBNZXNzYWdlKQotCSAqLwotCXB1YmxpYyBTdHJpbmcgc2VyaWFsaXplKGludCBwYXJ0LCBJU09BUE1lc3NhZ2UgbWVzc2FnZSkgdGhyb3dzIFRyYW5zcG9ydEV4Y2VwdGlvbiB7Ci0KLQkJc3dpdGNoIChwYXJ0KSB7Ci0JCQljYXNlIElTT0FQTWVzc2FnZS5FTlZFTE9QRToKLQkJCQlFbGVtZW50IGVudmVsb3BlID0gbWVzc2FnZS5nZXRFbnZlbG9wZSh0cnVlKTsKLQkJCQkKLQkJCQlpZiAoaXNSUENSZXF1ZXN0KG1lc3NhZ2UpKSB7CQkJCQkKLQkJCQkJRWxlbWVudCBib2R5ID0gZ2V0U09BUEVsZW1lbnROUyhlbnZlbG9wZSwgQ29uc3RhbnRzLkVMRU1fQk9EWSk7Ci0JCQkJCWlmIChib2R5ID09IG51bGwpCi0JCQkJCQlib2R5ID0gZ2V0U09BUEVsZW1lbnQoZW52ZWxvcGUsIENvbnN0YW50cy5FTEVNX0JPRFksIG1lc3NhZ2UuZ2V0TmFtZXNwYWNlVGFibGUoKSk7Ci0JCQkJCQotCQkJCQlpZiAoYm9keSAhPSBudWxsKSB7Ci0JCQkJCQlFbGVtZW50W10gYm9keUNvbnRlbnQgPSB0b0VsZW1lbnRBcnJheShib2R5LmdldEZpcnN0Q2hpbGQoKS5nZXRDaGlsZE5vZGVzKCkpOwotCQkJCQkJYWRkRW5jb2RpbmdTdHlsZShib2R5Q29udGVudCwgZ2V0RW5jb2RpbmdJbmZvKG1lc3NhZ2UuZ2V0TWVzc2FnZUNvbnRleHQoKSlbMV0pOwotCQkJCQl9Ci0JCQkJfQotCQkJCQotCQkJCVN0cmluZyB4bWwgPSBYTUxVdGlscy5zZXJpYWxpemUoZW52ZWxvcGUsIHRydWUpOwotCQkJCWlmICh4bWwgPT0gbnVsbCkKLQkJCQkJeG1sID0gbmV3IFN0cmluZygoYnl0ZVtdKSBtZXNzYWdlLmdldFByb3BlcnR5KFNPQVBUcmFuc3BvcnQuUFJPUF9SQVdfQllURVMpKTsKLQkJCQkKLQkJCQlyZXR1cm4geG1sOwotCQkJCQotCQkJY2FzZSBJU09BUE1lc3NhZ2UuSEVBREVSX0NPTlRFTlQ6Ci0JCQkJcmV0dXJuIHNlcmlhbGl6ZUVsZW1lbnRzKG1lc3NhZ2UuZ2V0SGVhZGVyQ29udGVudCgpKTsKLQkJCQkKLQkJCWNhc2UgSVNPQVBNZXNzYWdlLkJPRFlfQ09OVEVOVDoJCQkJCi0JCQkJRWxlbWVudFtdIGJvZHlDb250ZW50ID0gbWVzc2FnZS5nZXRCb2R5Q29udGVudCgpOwotCQkJCQotCQkJCWlmIChpc1JQQ1JlcXVlc3QobWVzc2FnZSkpCi0JCQkJCWFkZEVuY29kaW5nU3R5bGUoYm9keUNvbnRlbnQsIGdldEVuY29kaW5nSW5mbyhtZXNzYWdlLmdldE1lc3NhZ2VDb250ZXh0KCkpWzFdKTsKLQkJCQkKLQkJCQlyZXR1cm4gc2VyaWFsaXplRWxlbWVudHMoYm9keUNvbnRlbnQpOwotCQl9Ci0JCQotCQlyZXR1cm4gIiI7Ci0JfQotCQotCS8vIERlc2VyaWFsaXplIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8JCQotCQkKLQkvKgotCSAqIFJldHJpZXZlIHRoZSBzb2FwIGhlYWRlciBmcm9tIHRoZSBlbnZlbG9wZSBhbmQgcG9wdWxhdGUgdGhlIGdpdmVuIG1lc3NhZ2UKLQkgKi8KLQlwcml2YXRlIHZvaWQgcHJvY2Vzc0hlYWRlcihFbGVtZW50IGVudmVsb3BlLCBJU09BUE1lc3NhZ2UgbWVzc2FnZSkgewotCQkKLQkJRWxlbWVudCBoZWFkZXIgPSBnZXRTT0FQRWxlbWVudE5TKGVudmVsb3BlLCBDb25zdGFudHMuRUxFTV9IRUFERVIpOwotCQlpZiAoaGVhZGVyID09IG51bGwpCi0JCQlyZXR1cm47Ci0JCQotCQltZXNzYWdlLnNldEhlYWRlcihoZWFkZXIpOwotCQltZXNzYWdlLnNldEhlYWRlckNvbnRlbnQodG9FbGVtZW50QXJyYXkoaGVhZGVyLmdldENoaWxkTm9kZXMoKSkpOwotCX0KLQkKLQkvKgotCSAqIEhBQ0sgLSBUaGUgcm9vdCBlbGVtZW50IHRhZyBuYW1lIG9mIHRoZSBpbnN0YW5jZSBkb2N1bWVudAotCSAqIGlzIGFtYmlndW91cy4gIEl0IGxhbmRzIG9uIGEgdmVyeSBncmV5IGFyZWEgYmV0d2VlbiB0aGUgU09BUAotCSAqIHNwZWMgYW5kIHRoZSBXU0RMIHNwZWMuICBUaGUgdHdvIHNwZWNzIGRvIG5vdCBleHBsaWNpdGx5IGRlZmluZQotCSAqIHRoYXQgdGhlIHJvb3QgZWxlbWVudCB0YWcgbmFtZSBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIHRoZQotCSAqIFdTREwgcGFydC4gIFRoZSBoYWNrIGlzIHRvIHRyZWF0IGVsZW1lbnRzIHdpdGggZGlmZmVyZW50IHRhZyBuYW1lcwotCSAqIGFzIGluc3RhbmNlcyBvZiB0aGUgV1NETCBwYXJ0LgotCSAqLwotCXByaXZhdGUgRWxlbWVudFtdIGZpeFNPQVBSZXNwb25zZShOb2RlTGlzdCBpbnN0YW5jZUxpc3QsIE1lc3NhZ2VDb250ZXh0IGNvbnRleHQpIHsKLQkJCi0JCVZlY3RvciBpbnN0YW5jZVZlY3RvciA9IHRvRWxlbWVudFZlY3RvcihpbnN0YW5jZUxpc3QpOwkJCi0JCUVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cyA9IG5ldyBFbGVtZW50W2luc3RhbmNlVmVjdG9yLnNpemUoKV07Ci0JCQotCQlPcGVyYXRpb24gb3BlciA9IGNvbnRleHQuZ2V0QmluZGluZ09wZXJhdGlvbigpLmdldE9wZXJhdGlvbigpOwkJCi0JCU1hcCBwYXJ0c01hcCA9IG9wZXIuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpLmdldFBhcnRzKCk7Ci0JCQotCQlpZiAocGFydHNNYXAuc2l6ZSgpID09IDEpIHsKLQkJCUl0ZXJhdG9yIGl0ID0gcGFydHNNYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKLQkJCVBhcnQgcGFydCA9IChQYXJ0KSBpdC5uZXh0KCk7Ci0JCQkKLQkJCVN0cmluZyBmcmFnTmFtZTsKLQkJCWlmIChwYXJ0LmdldEVsZW1lbnROYW1lKCkgIT0gbnVsbCkKLQkJCQlmcmFnTmFtZSA9IHBhcnQuZ2V0RWxlbWVudE5hbWUoKS5nZXRMb2NhbFBhcnQoKTsKLQkJCWVsc2UKLQkJCQlmcmFnTmFtZSA9IHBhcnQuZ2V0TmFtZSgpOwotCQkgICAgCi0JCSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlVmVjdG9yLnNpemUoKTsgaSsrKSB7Ci0JCSAgICAJRWxlbWVudCBlbGVtZW50ID0gKEVsZW1lbnQpIGluc3RhbmNlVmVjdG9yLmdldChpKTsKLQkJICAgIAkKLQkJICAgIAlpZiAoIWVsZW1lbnQuZ2V0VGFnTmFtZSgpLmVxdWFscyhmcmFnTmFtZSkpIHsKLQkJICAgIAkJRG9jdW1lbnQgZG9jID0gZWxlbWVudC5nZXRPd25lckRvY3VtZW50KCk7Ci0JCSAgICAJCU5vZGVMaXN0IGNoaWxkcmVuID0gZWxlbWVudC5nZXRDaGlsZE5vZGVzKCk7Ci0JCSAgICAJCU5hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVzKCk7Ci0JCSAgICAJCWVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudChmcmFnTmFtZSk7Ci0JCSAgICAJCQotCQkgICAgCQlmb3IgKGludCBqID0gMDsgaiA8IGNoaWxkcmVuLmdldExlbmd0aCgpOyBqKyspIHsKLQkJICAgIAkJCWlmIChjaGlsZHJlbi5pdGVtKGopICE9IG51bGwpIHsKLQkJICAgIAkJCQllbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkcmVuLml0ZW0oaikpOwotCQkJCSAgICAgICAgICAgIC8vIFdoZW4geW91IGFwcGVuZCBhIG5vZGUgZnJvbSBvbmUgZWxlbWVudCB0byBhbm90aGVyLAotCQkJCSAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBlbGVtZW50IHdpbGwgbG9zZSBpdHMgcmVmZXJlbmNlIHRvIHRoaXMgbm9kZSwKLQkJCQkgICAgICAgICAgICAvLyB0aGVyZWZvcmUsIHRoZSBzaXplIG9mIHRoZSBub2RlIGxpc3Qgd2lsbCBkZWNyZWFzZSBieSAxLgotCQkJCSAgICAgICAgICAgIGotLTsKLQkJICAgIAkJCX0KLQkJICAgIAkJfQotCQkgICAgCQkKLQkJICAgIAkJZm9yIChpbnQgaiA9IDA7IGogPCBhdHRyaWJ1dGVzLmdldExlbmd0aCgpOyBqKyspIHsKLQkJICAgIAkJCU9iamVjdCBhdHRyID0gYXR0cmlidXRlcy5pdGVtKGopOwotCQkgICAgCQkJaWYgKGF0dHIgIT0gbnVsbCAmJiAoYXR0ciBpbnN0YW5jZW9mIEF0dHIpKSB7Ci0JCSAgICAJCQkJQXR0ciBhdHRyaWJ1dGUgPSAoQXR0cilhdHRyOwotCQkgICAgCQkJCWVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5nZXROYW1lKCksIGF0dHJpYnV0ZS5nZXRWYWx1ZSgpKTsKLQkJICAgIAkJCX0KLQkJICAgIAkJfQotCQkgICAgCX0KLQkJICAgIAlpbnN0YW5jZURvY3VtZW50c1tpXSA9IGVsZW1lbnQ7Ci0JCSAgICB9Ci0JCX0KLQkJZWxzZQotCQkJaW5zdGFuY2VWZWN0b3IuY29weUludG8oaW5zdGFuY2VEb2N1bWVudHMpOwotCQkKLQkJcmV0dXJuIGluc3RhbmNlRG9jdW1lbnRzOwotCX0KLQkKLQkvKgotCSAqIFJldHJpZXZlIHRoZSBzb2FwIGhlYWRlciBmcm9tIHRoZSBlbnZlbG9wZSBhbmQgcG9wdWxhdGUgdGhlIGdpdmVuIG1lc3NhZ2UKLQkgKi8KLQlwcml2YXRlIHZvaWQgcHJvY2Vzc0JvZHkoRWxlbWVudCBlbnZlbG9wZSwgSVNPQVBNZXNzYWdlIG1lc3NhZ2UpIHsKLQkJCi0JCUVsZW1lbnQgYm9keSA9IGdldFNPQVBFbGVtZW50TlMoZW52ZWxvcGUsIENvbnN0YW50cy5FTEVNX0JPRFkpOwotCQlpZiAoYm9keSA9PSBudWxsKQotCQkJcmV0dXJuOwkJCQkKLQkJCi0JCW1lc3NhZ2Uuc2V0Qm9keShib2R5KTsKLQkJCi0JCS8vIGNoZWNrIGZvciBzb2FwIGZhdWx0Ci0JCUVsZW1lbnQgZmF1bHQgPSBnZXRTT0FQRWxlbWVudE5TKGJvZHksIENvbnN0YW50cy5FTEVNX0ZBVUxUKTsKLQkgICAgaWYgKGZhdWx0ICE9IG51bGwpIHsKLQkgICAgCW1lc3NhZ2Uuc2V0RmF1bHQoZmF1bHQpOwotCSAgICAJcmV0dXJuOwotCSAgICB9Ci0JICAgICAgICAJICAgICAgICAKLQkgICAgTm9kZUxpc3QgaW5zdGFuY2VMaXN0OwotCSAgICAKLQkgICAgaWYgKG1lc3NhZ2UuZ2V0TWVzc2FnZUNvbnRleHQoKS5pc0RvY3VtZW50U3R5bGUoKSkKLQkgICAgCWluc3RhbmNlTGlzdCA9IGJvZHkuZ2V0Q2hpbGROb2RlcygpOwotCSAgICBlbHNlIHsKLQkgICAgICAgIE5vZGVMaXN0IHJwY1dyYXBwZXIgPSBib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoIioiLCAKLQkgICAgICAgIAkJbWVzc2FnZS5nZXRNZXNzYWdlQ29udGV4dCgpLmdldEJpbmRpbmdPcGVyYXRpb24oKS5nZXRPcGVyYXRpb24oKS5nZXRPdXRwdXQoKS5nZXRNZXNzYWdlKCkuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSk7Ci0KLQkgICAgICAgIC8qCi0JICAgICAgICAqIEhBQ0sgLSBTb21lIG9mIHRoZSB3ZWIgc2VydmljZXMgb3V0IG9uIHRoZSBpbnRlcm5ldCBkbyBub3QKLQkgICAgICAgICogc2V0IHRoZWlyIFJQQyB3cmFwcGVyIHByb3Blcmx5LiAgSXQgc2hvdWxkIGJlIHNldCB0byB0aGUgb3V0cHV0Ci0JICAgICAgICAqIG1lc3NhZ2UgbmFtZSBvZiB0aGUgc2VsZWN0ZWQgb3BlcmF0aW9uLiAgVGhlIGhhY2sgaXMgdG8KLQkgICAgICAgICogYXNzdW1lIHRoZSBmaXJzdCBlbGVtZW50IGluc2lkZSB0aGUgYm9keSBlbGVtZW50IGlzIHRoZQotCSAgICAgICAgKiBSUEMgd3JhcHBlci4KLQkgICAgICAgICovCi0JICAgICAgICBpZiAocnBjV3JhcHBlci5nZXRMZW5ndGgoKSA8PSAwKQotCSAgICAgICAgCXJwY1dyYXBwZXIgPSBib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoIioiLCAiKiIpOwotCi0JICAgICAgICBpZiAocnBjV3JhcHBlci5nZXRMZW5ndGgoKSA+IDApCi0JICAgICAgICAJaW5zdGFuY2VMaXN0ID0gcnBjV3JhcHBlci5pdGVtKDApLmdldENoaWxkTm9kZXMoKTsKLQkgICAgICAgIGVsc2UKLQkgICAgICAgIAlyZXR1cm47Ci0JICAgIH0KLQkgICAgCi0JICAgIG1lc3NhZ2Uuc2V0Qm9keUNvbnRlbnQoZml4U09BUFJlc3BvbnNlKGluc3RhbmNlTGlzdCwgbWVzc2FnZS5nZXRNZXNzYWdlQ29udGV4dCgpKSk7Ci0JfQotCQotCS8qCi0JICogRGVzZXJpYWxpemUgdGhlIGJ5dGUgYXJyYXkgaW50byB0aGUgZ2l2ZW4gc29hcCBtZXNzYWdlLiAgVGhlIHBhcnQgcGFyYW1ldGVycyB0ZWxscwotCSAqIHRoZSBtZXRob2Qgd2hldGhlciB0aGUgaW5wdXQgaXMgdGhlIHdob2xlIGVudmVsb3Agb3IganVzdCB0aGUgY29udGVudHMgb2YgdGhlCi0JICogaGVhZGVyIG9yIGJvZHkuIAotCSAqLwotCXZvaWQgZGVzZXJpYWxpemUoaW50IHBhcnQsIGJ5dGVbXSB4bWwsIElTT0FQTWVzc2FnZSBtZXNzYWdlKSB0aHJvd3MJCQotCQlQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLAotCQlTQVhFeGNlcHRpb24sCi0JCUlPRXhjZXB0aW9uIHsKLQkJCi0JCUVsZW1lbnQgcm9vdCA9IFhNTFV0aWxzLmJ5dGVBcnJheVRvRWxlbWVudCh4bWwsIHRydWUpOwkJCi0JCQotCQlzd2l0Y2ggKHBhcnQpIHsKLQkJCWNhc2UgSVNPQVBNZXNzYWdlLkVOVkVMT1BFOgkJCQkgCi0JCQkJbWVzc2FnZS5zZXRFbnZlbG9wZShyb290KTsKLQkJCQlwcm9jZXNzSGVhZGVyKHJvb3QsIG1lc3NhZ2UpOwotCQkJCXByb2Nlc3NCb2R5KHJvb3QsIG1lc3NhZ2UpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBJU09BUE1lc3NhZ2UuSEVBREVSX0NPTlRFTlQ6Ci0JCQkJbWVzc2FnZS5zZXRIZWFkZXJDb250ZW50KHRvRWxlbWVudEFycmF5KHJvb3QuZ2V0Q2hpbGROb2RlcygpKSk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIElTT0FQTWVzc2FnZS5CT0RZX0NPTlRFTlQ6Ci0JCQkJbWVzc2FnZS5zZXRCb2R5Q29udGVudCh0b0VsZW1lbnRBcnJheShyb290LmdldENoaWxkTm9kZXMoKSkpOwotCQkJCWJyZWFrOwotCQl9Ci0JfQotCQotCS8qCi0JICogVGFjayBvbiBhIHJvb3QgZWxlbWVudCB0aGUgc3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBzZXJpZXMgb2YgZWxlbWVudHMuCi0JICogVGhpcyBpcyBuZWVkZWQgdG8gZGVzZXJpYWxpemUgdGhlIHN0cmluZy4KLQkgKi8KLQlwcml2YXRlIFN0cmluZyBhZGRSb290RWxlbWVudChTdHJpbmcgeG1sLCBNYXAgbmFtZXNwYWNlVGFibGUpIHsKLQkJU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCSAgICBzYi5hcHBlbmQoIjxyb290Iik7Ci0JICAgIAotCSAgICBJdGVyYXRvciBpdGVyID0gbmFtZXNwYWNlVGFibGUua2V5U2V0KCkuaXRlcmF0b3IoKTsKLQkgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7Ci0JICAgIAlPYmplY3QgdXJpID0gaXRlci5uZXh0KCk7Ci0JICAgIAlPYmplY3QgcHJlZml4ID0gbmFtZXNwYWNlVGFibGUuZ2V0KHVyaSk7Ci0JICAgIAlzYi5hcHBlbmQoIiAiKS5hcHBlbmQoInhtbG5zOiIpLmFwcGVuZChwcmVmaXgpLmFwcGVuZCgiPVwiIikuYXBwZW5kKHVyaSkuYXBwZW5kKCJcIiIpOwotCSAgICB9CSAgICAKLQkgICAgCi0JICAgIHNiLmFwcGVuZCgiPiIpLmFwcGVuZCh4bWwpLmFwcGVuZCgiPC9yb290PiIpOwotCSAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JRGVzZXJpYWxpemVyI2Rlc2VyaWFsaXplKGludCwgamF2YS5sYW5nLlN0cmluZywgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UpCi0JICovCi0JcHVibGljIHZvaWQgZGVzZXJpYWxpemUoaW50IHBhcnQsIFN0cmluZyB4bWwsIElTT0FQTWVzc2FnZSBtZXNzYWdlKSB0aHJvd3MgVHJhbnNwb3J0RXhjZXB0aW9uIHsKLQkJCi0JCWlmIChwYXJ0ICE9IElTT0FQTWVzc2FnZS5FTlZFTE9QRSkKLQkJCXhtbCA9IGFkZFJvb3RFbGVtZW50KHhtbCwgbWVzc2FnZS5nZXROYW1lc3BhY2VUYWJsZSgpKTsKLQkJCi0JCXRyeSB7Ci0JCQlkZXNlcmlhbGl6ZShwYXJ0LCB4bWwuZ2V0Qnl0ZXMoREVGQVVMVF9TT0FQX0VOQ09ESU5HKSwgbWVzc2FnZSk7Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQl0aHJvdyBuZXcgVHJhbnNwb3J0RXhjZXB0aW9uKGUpOwotCQl9Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3RyYW5zcG9ydC9TT0FQVHJhbnNwb3J0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNwb3J0L1NPQVBUcmFuc3BvcnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE0OTJiNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdHJhbnNwb3J0L1NPQVBUcmFuc3BvcnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC50cmFuc3BvcnQ7Ci0KLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmF4aXMuQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbHVnaW4uRXhwbG9yZXJQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JRGVzZXJpYWxpemVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBNZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBUcmFuc3BvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU2VyaWFsaXplcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0Lk1lc3NhZ2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuU09BUE1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3ZlcnkuTmV0VXRpbHM7Ci0KLS8qKgotICogV1NFJ3MgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBJU09BUFRyYW5zcG9ydAotICovCi1wdWJsaWMgY2xhc3MgU09BUFRyYW5zcG9ydCBpbXBsZW1lbnRzIElTT0FQVHJhbnNwb3J0IHsKLQotCXN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUF9SRUFEX09OTFkgPSAicHJvcF9yZWFkX29ubHkiOwotCXN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUF9SQVdfQllURVMgPSAicHJvcF9yYXdfYnl0ZXMiOwotCQotCS8qCi0JICogQ29uc3RydWN0b3IuCi0JICovCi0JU09BUFRyYW5zcG9ydCgpIHt9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LklTT0FQVHJhbnNwb3J0I25ld1NlcmlhbGl6ZXIoKQotCSAqLwotCXB1YmxpYyBJU2VyaWFsaXplciBuZXdTZXJpYWxpemVyKCkgewkJCi0JCXJldHVybiBuZXcgU09BUE1lc3NhZ2VQcm9jZXNzb3IoKTsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUFRyYW5zcG9ydCNuZXdEZXNlcmlhbGl6ZXIoKQotCSAqLwotCXB1YmxpYyBJRGVzZXJpYWxpemVyIG5ld0Rlc2VyaWFsaXplcigpIHsKLQkJcmV0dXJuIG5ldyBTT0FQTWVzc2FnZVByb2Nlc3NvcigpOwotCX0KLQotCS8qCi0JICogQ2hlY2sgaWYgdGhlIGJpbmRpbmcgaXMgc3VwcG9ydGVkCi0JICovCi0JcHJpdmF0ZSB2b2lkIGNoZWNrQmluZGluZyhFeHRlbnNpYmlsaXR5RWxlbWVudCBiaW5kaW5nKSB0aHJvd3MgVHJhbnNwb3J0RXhjZXB0aW9uIHsKLQkJCi0JCVN0cmluZyBiaW5kaW5nVVJJID0gYmluZGluZy5nZXRFbGVtZW50VHlwZSgpLmdldE5hbWVzcGFjZVVSSSgpOwotCQkKLQkJLy8gbG9va2luZyBmb3IgU09BUCAxLjEgYmluZGluZwotCQlpZiAoIShiaW5kaW5nIGluc3RhbmNlb2YgU09BUEJpbmRpbmcpIHx8Ci0JCQkhQ29uc3RhbnRzLlVSSV9XU0RMMTFfU09BUC5lcXVhbHMoYmluZGluZ1VSSSkpCi0JCQl0aHJvdyBuZXcgVHJhbnNwb3J0RXhjZXB0aW9uKEV4cGxvcmVyUGx1Z2luLmdldE1lc3NhZ2UoIiVNU0dfRVJST1JfVU5TVVBQT1JURURfQklORElORyIsIG5ldyBTdHJpbmdbXSB7IGJpbmRpbmdVUkkgfSkpOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LklTT0FQVHJhbnNwb3J0I25ld01lc3NhZ2Uob3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5NZXNzYWdlQ29udGV4dCkKLQkgKi8KLQlwdWJsaWMgSVNPQVBNZXNzYWdlIG5ld01lc3NhZ2UoTWVzc2FnZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIFRyYW5zcG9ydEV4Y2VwdGlvbiB7Ci0JCQotCQljaGVja0JpbmRpbmcoY29udGV4dC5nZXRCaW5kaW5nUHJvdG9jb2woKSk7Ci0JCQotCQlTT0FQTWVzc2FnZVByb2Nlc3NvciBwcm9jZXNzb3IgPSBuZXcgU09BUE1lc3NhZ2VQcm9jZXNzb3IoKTsKLQkJSVNPQVBNZXNzYWdlIG1lc3NhZ2UgPSBuZXcgU09BUE1lc3NhZ2UoY29udGV4dCwgcHJvY2Vzc29yKTsKLQkJcHJvY2Vzc29yLmluaXRNZXNzYWdlKG1lc3NhZ2UpOwkJCQotCQlyZXR1cm4gbWVzc2FnZTsJCQkJCi0JfQotCQotCS8qCi0JICogQ2hlY2sgaWYgdGhlIG1lc3NhZ2UgdXNlcyBhIGJpbmRpbmcgYW5kIHRyYW5zcG9ydCB0aGF0IHdlIHN1cHBvcnQuCi0JICovCi0JcHJpdmF0ZSB2b2lkIGNoZWNrTWVzc2FnZShJU09BUE1lc3NhZ2UgbWVzc2FnZSkgdGhyb3dzIFRyYW5zcG9ydEV4Y2VwdGlvbiB7Ci0JCQotCQlFeHRlbnNpYmlsaXR5RWxlbWVudCBiaW5kaW5nID0gbWVzc2FnZS5nZXRNZXNzYWdlQ29udGV4dCgpLmdldEJpbmRpbmdQcm90b2NvbCgpOyAKLQkJY2hlY2tCaW5kaW5nKGJpbmRpbmcpOwotCQkKLQkJU09BUEJpbmRpbmcgc29hcEJpbmRpbmcgPSAoU09BUEJpbmRpbmcpIGJpbmRpbmc7IAotCQkJCi0JCWlmICghQ29uc3RhbnRzLlVSSV9TT0FQMTFfSFRUUC5lcXVhbHMoc29hcEJpbmRpbmcuZ2V0VHJhbnNwb3J0VVJJKCkpKQotCQkJdGhyb3cgbmV3IFRyYW5zcG9ydEV4Y2VwdGlvbihFeHBsb3JlclBsdWdpbi5nZXRNZXNzYWdlKCIlTVNHX0VSUk9SX1VOU1VQUE9SVEVEX1RSQU5TUE9SVCIsIG5ldyBTdHJpbmdbXSB7IHNvYXBCaW5kaW5nLmdldFRyYW5zcG9ydFVSSSgpIH0pKTsKLQl9Ci0JCQotCS8qCi0JICogQ3JlYXRlIGFuIEhUVFBUcmFuc3BvcnQgZm9yIGludGVybmFsIHVzZS4KLQkgKi8KLQlwcml2YXRlIEhUVFBUcmFuc3BvcnQgY3JlYXRlSW50ZXJuYWxUcmFuc3BvcnQoU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgcGFzc3dvcmQpIHsKLQotCQlIVFRQVHJhbnNwb3J0IGludGVybmFsVHJhbnNwb3J0ID0gbmV3IEhUVFBUcmFuc3BvcnQoKTsKLQkJICAgIAotCQlpZiAodXNlcm5hbWUgIT0gbnVsbCAmJiBwYXNzd29yZCAhPSBudWxsKSB7Ci0JCQlpbnRlcm5hbFRyYW5zcG9ydC5zZXRIdHRwQmFzaWNBdXRoVXNlcm5hbWUodXNlcm5hbWUpOwotCQkJaW50ZXJuYWxUcmFuc3BvcnQuc2V0SHR0cEJhc2ljQXV0aFBhc3N3b3JkKHBhc3N3b3JkKTsKLQkJfQotCQkKLQkJcmV0dXJuIGludGVybmFsVHJhbnNwb3J0OwotCX0JCi0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUFRyYW5zcG9ydCNzZW5kKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBNZXNzYWdlKQotCSAqLwotCXB1YmxpYyBJU09BUE1lc3NhZ2Ugc2VuZChTdHJpbmcgdXJsLCBTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBwYXNzd29yZCwgSVNPQVBNZXNzYWdlIG1lc3NhZ2UpIHRocm93cyBUcmFuc3BvcnRFeGNlcHRpb24gewotCQkKLQkJY2hlY2tNZXNzYWdlKG1lc3NhZ2UpOwkJCQotCQkJCQkJCQkKLQkJdHJ5IHsKLQkJCUhUVFBUcmFuc3BvcnQgaW50ZXJuYWxUcmFuc3BvcnQgPSBjcmVhdGVJbnRlcm5hbFRyYW5zcG9ydCh1c2VybmFtZSwgcGFzc3dvcmQpOwotCQkJaW50ZXJuYWxUcmFuc3BvcnQuc2VuZChOZXRVdGlscy5jcmVhdGVVUkwodXJsKSwgKFN0cmluZykgbWVzc2FnZS5nZXRQcm9wZXJ0eShJU09BUE1lc3NhZ2UuUFJPUF9TT0FQX0FDVElPTiksIG1lc3NhZ2UudG9YTUwoKSk7Ci0JCQkKLQkJCVNPQVBNZXNzYWdlUHJvY2Vzc29yIHByb2Nlc3NvciA9IG5ldyBTT0FQTWVzc2FnZVByb2Nlc3NvcigpOwotCQkJSVNPQVBNZXNzYWdlIHJlcGx5ID0gbmV3IFNPQVBNZXNzYWdlKG1lc3NhZ2UuZ2V0TWVzc2FnZUNvbnRleHQoKSwgcHJvY2Vzc29yKTsKLQkJCXJlcGx5LnNldFByb3BlcnR5KFBST1BfUkVBRF9PTkxZLCBCb29sZWFuLlRSVUUpOwotCQkJCi0JCQlieXRlW10gcmF3Qnl0ZXMgPSBpbnRlcm5hbFRyYW5zcG9ydC5yZWNlaXZlQnl0ZXMoKTsKLQkJCQotCQkJdHJ5IHsgCi0JCQkJcHJvY2Vzc29yLmRlc2VyaWFsaXplKElTT0FQTWVzc2FnZS5FTlZFTE9QRSwgcmF3Qnl0ZXMsIHJlcGx5KTsKLQkJCX0KLQkJCWNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJCS8vIGlmIGVycm9yIG9jY3VycyBkdXJpbmcgZGVzZXJpYWxpemF0aW9uLCB3ZSB3YW50IHRvIHNhdmUgYSBjb3B5IG9mIHRoZSBhY3R1YWwgcmF3IGJ5dGVzCi0JCQkJcmVwbHkuc2V0UHJvcGVydHkoUFJPUF9SQVdfQllURVMsIHJhd0J5dGVzKTsKLQkJCX0KLQkJCQkJCi0JCQlyZXR1cm4gcmVwbHk7Ci0JCX0KLQkJY2F0Y2ggKFRyYW5zcG9ydEV4Y2VwdGlvbiBlKSB7Ci0JCQl0aHJvdyBlOwotCSAgICB9Ci0JICAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotCSAgICAJdGhyb3cgbmV3IFRyYW5zcG9ydEV4Y2VwdGlvbihlKTsKLQkgICAgfQkJCQotCX0JCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3RyYW5zcG9ydC9TT0FQVHJhbnNwb3J0UHJvdmlkZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC90cmFuc3BvcnQvU09BUFRyYW5zcG9ydFByb3ZpZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3M2M1MjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3RyYW5zcG9ydC9TT0FQVHJhbnNwb3J0UHJvdmlkZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnRyYW5zcG9ydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBUcmFuc3BvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUFRyYW5zcG9ydFByb3ZpZGVyOwotCi0vKioKLSAqIFdTRSdzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIElTT0FQVHJhbnNwb3J0UHJvdmlkZXIuCi0gKi8KLXB1YmxpYyBjbGFzcyBTT0FQVHJhbnNwb3J0UHJvdmlkZXIgaW1wbGVtZW50cyBJU09BUFRyYW5zcG9ydFByb3ZpZGVyIHsJCi0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUFRyYW5zcG9ydFByb3ZpZGVyI25ld1RyYW5zcG9ydCgpCi0JICovCi0JcHVibGljIElTT0FQVHJhbnNwb3J0IG5ld1RyYW5zcG9ydCgpIHsKLQkJcmV0dXJuIG5ldyBTT0FQVHJhbnNwb3J0KCk7CQkKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdXRpbC9TT0FQTWVzc2FnZVV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdXRpbC9TT0FQTWVzc2FnZVV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNGVkN2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3V0aWwvU09BUE1lc3NhZ2VVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICogMjAwNzA1MTAgICAxODYzNzUgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIENvbXBpbGUgZXJyb3JzIGluIHdzdC53cy5leHBsb3JlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnV0aWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExPcGVyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LklYU0RGcmFnbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LklTT0FQTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBvcmcudzNjLmRvbS5BdHRyOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaGFzIHNvbWUgY29tbW9uIHJvdXRpbmVzIHVzZWQgYnkgdGhlIFdlYiBTZXJ2aWNlcyBleHBsb3JlciB0byB3b3JrIHdpdGggSVNPQVBNZXNzYWdlcy4KLSAqLwotcHVibGljIGNsYXNzIFNPQVBNZXNzYWdlVXRpbHMgewotCQotCS8qKgotCSAqIERlY29kZXMgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyB0aGF0IGhhdmUgYmVlbiBlbmNvZGVkIGJ5IFdTRSBpbnRvIHRoZSBvcGVyYXRpb24gZWxlbWVudCBvZiB0aGUgV1NETCBtb2RlbC4KLQkgKiBUaGUgZGVjb2RlZCBkZWNsYXJhdGlvbnMgd2lsbCBiZSBhZGRlZCB0byB0aGUgZ2l2ZW4gbmFtZXNwYWNlIHRhYmxlLgotCSAqICAKLQkgKiBAcGFyYW0gc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUgVGhlIG5hbWVzcGFjZSB0YWJsZSB0byBwb3B1bGF0ZS4KLQkgKiBAcGFyYW0gb3BlckVsZW1lbnQgVGhlIG9wZXJhdGlvbiBlbGVtZW50IHdpdGggdGhlIGVuY29kZWQgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucy4KLQkgKiBAcmV0dXJuIFRydWUgaWYgbmV3IG5hbWVzcGFjZSBkZWNsYXJhdGlvbnMgYXJlIGZvdW5kIGFuZCBhZGRlZCB0byB0aGUgbmFtZXNwYWNlIHRhYmxlLCBmYWxzZSBvdGhlcndpc2UuCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGRlY29kZU5hbWVzcGFjZVRhYmxlKEhhc2h0YWJsZSBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSwgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQpIHsKLQkJCQotCQlib29sZWFuIHVwZGF0ZWQgPSBmYWxzZTsKLQotCQlTdHJpbmdbXSBuc0RlY2xhcmF0aW9ucyA9IChTdHJpbmdbXSkgb3BlckVsZW1lbnQuZ2V0UHJvcGVydHlBc09iamVjdChXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT1VSQ0VfQ09OVEVOVF9OQU1FU1BBQ0UpOwotCQlpZiAobnNEZWNsYXJhdGlvbnMgPT0gbnVsbCkKLQkJCXJldHVybiBmYWxzZTsKLQotCQkvLyBlYWNoIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBpcyBkZWNvZGVkIGludG8gMiBwYXJ0czogdGhlIHByZWZpeCAKLQkJLy8gaW4gZWxlbWVudCBbMF0gYW5kIHRoZSBuYW1lc3BhY2UgdXJpIGluIGVsZW1lbnQgWzFdLgotCQlmb3IgKGludCBpID0gMDsgaSA8IG5zRGVjbGFyYXRpb25zLmxlbmd0aDsgaSsrKSB7Ci0JCQlTdHJpbmdbXSBwcmVmaXhfbnMgPSBTb2FwSGVscGVyLmRlY29kZU5hbWVzcGFjZURlY2xhcmF0aW9uKG5zRGVjbGFyYXRpb25zW2ldKTsKLQkJCQotCQkJLy8gY2hlY2sgaWYgdGhlIG5hbWVzcGFjZSB1cmkgaXMgYWxyZWFkeSBhIGtleSBpbiB0aGUgbmFtZXNwYWNlIHRhYmxlCi0JCQkvLyBpZiBpdCBpcywgZG9uJ3QgYWRkIGl0Ci0JCQlpZiAoIXNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlLmNvbnRhaW5zS2V5KHByZWZpeF9uc1sxXSkpIHsKLQkJCSAgICBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZS5wdXQocHJlZml4X25zWzFdLCBwcmVmaXhfbnNbMF0pOwotCQkJICAgIHVwZGF0ZWQgPSB0cnVlOwotCQkJfQotCQl9Ci0JCQotCQlyZXR1cm4gdXBkYXRlZDsKLQl9Ci0KLQkvKioKLQkgKiBQb3B1bGF0ZSB0aGUgaGVhZGVyIGNvbnRlbnQgb2YgdGhlIGdpdmVuIElTT0FQTWVzc2FnZSB1c2luZyB0aGUgdmFsdWVzIGZyb20gV1NFJ3MgZnJhZ21lbnQgbW9kZWwKLQkgKiAKLQkgKiBAcGFyYW0gc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUgQSBuYW1lc3BhY2UgdGFibGUgdG8gdXNlIGR1cmluZyB0aGlzIG9wZXJhdGlvbi4KLQkgKiBAcGFyYW0gb3BlckVsZW1lbnQgQWNjZXNzIFdTRSdzIGZyYWdtZW50cyB2aWEgdGhpcyBvcGVyYXRpb24gZWxlbWVudC4gCi0JICogQHBhcmFtIHNvYXBNZXNzYWdlIFRoZSBJU09BUE1lc3NhZ2UgdG8gcG9wdWxhdGUuCi0JICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIHNldEhlYWRlckNvbnRlbnRGcm9tTW9kZWwoSGFzaHRhYmxlIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlLCBXU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCwgSVNPQVBNZXNzYWdlIHNvYXBNZXNzYWdlKQotCQl0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiB7Ci0JICAgIAotCQlWZWN0b3IgaGVhZGVyRW50cmllcyA9IG5ldyBWZWN0b3IoKTsKLQkgICAgCi0JICAgIEl0ZXJhdG9yIGl0ID0gb3BlckVsZW1lbnQuZ2V0U09BUEhlYWRlcnMoKS5pdGVyYXRvcigpOwotCSAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0JICAgIAlTT0FQSGVhZGVyIHNvYXBIZWFkZXIgPSAoU09BUEhlYWRlcikgaXQubmV4dCgpOwotCSAgICAJYm9vbGVhbiBpc1VzZUxpdGVyYWwgPSAibGl0ZXJhbCIuZXF1YWxzKHNvYXBIZWFkZXIuZ2V0VXNlKCkpOyAgICAgICAgICAgCi0JICAgIAlJWFNERnJhZ21lbnQgZnJhZyA9IChJWFNERnJhZ21lbnQpIG9wZXJFbGVtZW50LmdldEhlYWRlckZyYWdtZW50KHNvYXBIZWFkZXIpOwotCSAgICAJRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzID0gZnJhZy5nZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoCi0JICAgIAkJCSFpc1VzZUxpdGVyYWwsIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlLCBzb2FwTWVzc2FnZS5nZXRFbnZlbG9wZShmYWxzZSkuZ2V0T3duZXJEb2N1bWVudCgpKTsKLQkgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLQkgICAgCQlpZiAoaW5zdGFuY2VEb2N1bWVudHNbaV0gPT0gbnVsbCkKLQkgICAgCQkJY29udGludWU7Ci0JICAgIAkJaGVhZGVyRW50cmllcy5hZGRFbGVtZW50KGluc3RhbmNlRG9jdW1lbnRzW2ldKTsKLQkgICAgCX0KLQkgICAgfQotCi0JICAgIEVsZW1lbnRbXSBoZWFkZXJDb250ZW50ID0gbmV3IEVsZW1lbnRbaGVhZGVyRW50cmllcy5zaXplKCldOwotCSAgICBoZWFkZXJFbnRyaWVzLmNvcHlJbnRvKGhlYWRlckNvbnRlbnQpOwotCSAgICAKLQkgICAgc29hcE1lc3NhZ2Uuc2V0SGVhZGVyQ29udGVudChoZWFkZXJDb250ZW50KTsKLQl9Ci0KLQkvKioKLQkgKiBQb3B1bGF0ZSB0aGUgYm9keSBjb250ZW50IG9mIHRoZSBnaXZlbiBJU09BUE1lc3NhZ2UgdXNpbmcgdGhlIHZhbHVlcyBmcm9tIFdTRSdzIGZyYWdtZW50IG1vZGVsCi0JICogCi0JICogQHBhcmFtIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlIEEgbmFtZXNwYWNlIHRhYmxlIHRvIHVzZSBkdXJpbmcgdGhpcyBvcGVyYXRpb24uCi0JICogQHBhcmFtIG9wZXJFbGVtZW50IEFjY2VzcyBXU0UncyBmcmFnbWVudHMgdmlhIHRoaXMgb3BlcmF0aW9uIGVsZW1lbnQuIAotCSAqIEBwYXJhbSBzb2FwTWVzc2FnZSBUaGUgSVNPQVBNZXNzYWdlIHRvIHBvcHVsYXRlLgotCSAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgotCSAqLwotCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRCb2R5Q29udGVudEZyb21Nb2RlbChIYXNodGFibGUgc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUsIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50LCBJU09BUE1lc3NhZ2Ugc29hcE1lc3NhZ2UpCi0JCXRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIHsKLQkJCi0JICAgIFZlY3RvciBib2R5RW50cmllcyA9IG5ldyBWZWN0b3IoKTsKLQkgICAgYm9vbGVhbiBpc1VzZUxpdGVyYWwgPSBvcGVyRWxlbWVudC5pc1VzZUxpdGVyYWwoKTsKLQotCSAgICBJdGVyYXRvciBpdCA9IG9wZXJFbGVtZW50LmdldE9yZGVyZWRCb2R5UGFydHMoKS5pdGVyYXRvcigpOwotCSAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0JICAgIAlQYXJ0IHBhcnQgPSAoUGFydClpdC5uZXh0KCk7Ci0JICAgIAlJWFNERnJhZ21lbnQgZnJhZyA9IChJWFNERnJhZ21lbnQpIG9wZXJFbGVtZW50LmdldEZyYWdtZW50KHBhcnQpOwotCSAgICAJRWxlbWVudFtdIGluc3RhbmNlRG9jdW1lbnRzID0gZnJhZy5nZW5JbnN0YW5jZURvY3VtZW50c0Zyb21QYXJhbWV0ZXJWYWx1ZXMoCi0JICAgIAkJCSAhaXNVc2VMaXRlcmFsLCBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSwgc29hcE1lc3NhZ2UuZ2V0RW52ZWxvcGUoZmFsc2UpLmdldE93bmVyRG9jdW1lbnQoKSk7Ci0JICAgIAlmb3IgKGludCBpID0gMDsgaSA8IGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0JICAgIAkJaWYgKGluc3RhbmNlRG9jdW1lbnRzW2ldID09IG51bGwpCi0JICAgIAkJCWNvbnRpbnVlOwotCSAgICAJCWJvZHlFbnRyaWVzLmFkZEVsZW1lbnQoaW5zdGFuY2VEb2N1bWVudHNbaV0pOwotCSAgICAJfQotCSAgICB9Ci0KLQkgICAgRWxlbWVudFtdIGJvZHlDb250ZW50ID0gbmV3IEVsZW1lbnRbYm9keUVudHJpZXMuc2l6ZSgpXTsKLQkgICAgYm9keUVudHJpZXMuY29weUludG8oYm9keUNvbnRlbnQpOwotCSAgICAKLQkgICAgc29hcE1lc3NhZ2Uuc2V0Qm9keUNvbnRlbnQoYm9keUNvbnRlbnQpOwotCX0KLQkKLQkvKgotCSAqIElmIHRoZSBhdHRyaWJ1dGUgaXMgYSBuYW1lc3BhY2UgZGVjbGFyYXRpb24sIHRoZSBuYW1lc3BhY2UgcHJlZml4IGlzIHJldHVybmVkLgotCSAqIE90aGVyd2lzZSBudWxsIGlzIHJldHVybmVkLgotCSAqLwotCXByaXZhdGUgc3RhdGljIFN0cmluZyBnZXROU1ByZWZpeChBdHRyIGF0dHJpYnV0ZSkgewotCQlTdHJpbmcgbmFtZSA9IGF0dHJpYnV0ZS5nZXROYW1lKCk7Ci0JCWlmIChuYW1lLnN0YXJ0c1dpdGgoInhtbG5zOiIpKQotCQkJcmV0dXJuIG5hbWUuc3Vic3RyaW5nKDYpOwotCQlyZXR1cm4gbnVsbDsKLQl9Ci0JCi0JLyoKLQkgKiBsb29rdXAgdGhlIHByZWZpeCBvZiB0aGUgbmFtZXNwYWNlVVJJLCBhc3N1bWluZyB0aGF0IGl0IGlzIGRlY2xhcmVkIG9uIHRoZSBlbGVtZW50IGl0c2VsZgotCSAqLwotCXByaXZhdGUgc3RhdGljIFN0cmluZyBsb29rdXBQcmVmaXgoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgbmFtZXNwYWNlVVJJKSB7Ci0JCQotCQlOYW1lZE5vZGVNYXAgYXR0cmlidXRlcyA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlcygpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMuZ2V0TGVuZ3RoKCk7IGkrKykgewotCQkJQXR0ciBhdHRyaWJ1dGUgPSAoQXR0cikgYXR0cmlidXRlcy5pdGVtKGkpOwotCQkJU3RyaW5nIHByZWZpeCA9IGdldE5TUHJlZml4KGF0dHJpYnV0ZSk7Ci0JCQlpZiAocHJlZml4ICE9IG51bGwgJiYgYXR0cmlidXRlLmdldFZhbHVlKCkuZXF1YWxzKG5hbWVzcGFjZVVSSSkpCi0JCQkJcmV0dXJuIHByZWZpeDsKLQkJfQkJCi0JCQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0JCi0JLyoqCi0JICogR2l2ZW4gYW4gYXJyYXkgb2YgZWxlbWVudHMsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IG1hdGNoZXMKLQkgKiB0aGUgZ2l2ZW4gUGFydC4gIEEgbWF0Y2ggaXMgZGV0ZXJtaW5lZCBieSBjb21wYXJpbmcgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lcyBvZiB0aGUgUGFydCBhbmQgRWxlbWVudHMuCi0JICogCi0JICogQHBhcmFtIHBhcnQgVGhlIFBhcnQgCi0JICogQHBhcmFtIGVsZW1lbnRzIFRoZSBhcnJheSBvZiBFbGVtZW50cwotCSAqIEBwYXJhbSBuYW1lc3BhY2VUYWJsZSBBIG5hbWVzcGFjZSB0YWJsZSBmb3IgbG9va2luZyB1cCBuYW1lc3BhY2UgcHJlZml4ZXMuCi0JICogQHBhcmFtIGZyYWdOYW1lIE5hbWUgb2YgdGhlIFBhcnQncyBmcmFnbWVudCAoZXNzZW50aWFsbHkgdGhlIFBhcnQncyBsb2NhbCBuYW1lKS4KLQkgKiBAcGFyYW0gc3RhcnQgVGhlIGluZGV4IHRvIGJlZ2luIHRoZSBzZWFyY2guCi0JICogQHJldHVybiBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQsIG9yIC0xIGlmIG5vIG1hdGNoIGlzIGZvdW5kLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgaW50IGZpbmRGaXJzdE1hdGNoaW5nRWxlbWVudChQYXJ0IHBhcnQsIEVsZW1lbnRbXSBlbGVtZW50cywgTWFwIG5hbWVzcGFjZVRhYmxlLCBTdHJpbmcgZnJhZ05hbWUsIGludCBzdGFydCkgewotCQkKLQkJU3RyaW5nIG5hbWVzcGFjZVVSSSA9IG51bGw7Ci0JCVN0cmluZyBwcmVmaXggPSBudWxsOwotCQkKLQkJLy8gdHJ5IHRvIGdldCB0aGUgcHJlZml4Ci0JCWlmIChwYXJ0LmdldEVsZW1lbnROYW1lKCkgIT0gbnVsbCkgewotCQkJbmFtZXNwYWNlVVJJID0gcGFydC5nZXRFbGVtZW50TmFtZSgpLmdldE5hbWVzcGFjZVVSSSgpOwotCQkJcHJlZml4ID0gKFN0cmluZykgbmFtZXNwYWNlVGFibGUuZ2V0KG5hbWVzcGFjZVVSSSk7CQkJCQkKLQkJfQotCQkKLQkJZm9yIChpbnQgaSA9IHN0YXJ0OyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsJCQkKLQkJCUVsZW1lbnQgZWxlbWVudCA9IGVsZW1lbnRzW2ldOwotCQkJU3RyaW5nIG5hbWUgPSBlbGVtZW50LmdldFRhZ05hbWUoKTsKLQkJCQotCQkJLy8gdHJ5IHRvIGdldCBwcmVmaXggYWdhaW4sIHRoZSBuYW1lc3BhY2UgZGVjbGFyYXRpb24gY2FuIGJlIGRpcmVjdGx5IG9uIHRoZSBlbGVtZW50Ci0JCQlpZiAocHJlZml4ID09IG51bGwgJiYgbmFtZXNwYWNlVVJJICE9IG51bGwgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCi0JCQkJcHJlZml4ID0gbG9va3VwUHJlZml4KGVsZW1lbnQsIG5hbWVzcGFjZVVSSSk7Ci0JCQkKLQkJCWlmIChwcmVmaXggPT0gbnVsbCAmJiBuYW1lLmVxdWFscyhmcmFnTmFtZSkpCi0JCQkJcmV0dXJuIGk7Ci0JCQllbHNlIGlmIChwcmVmaXggIT0gbnVsbCAmJiBuYW1lLmVxdWFscyhwcmVmaXggKyAiOiIgKyBmcmFnTmFtZSkpCi0JCQkJcmV0dXJuIGk7Ci0JCX0KLQkJCQkKLQkJcmV0dXJuIC0xOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC91dGlsL1NvYXBIZWxwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC91dGlsL1NvYXBIZWxwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRkODY3MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzZGwvdXRpbC9Tb2FwSGVscGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzA1ICAgMTE3MDM0IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgU2VydmljZXMgRXhwbG9yZXIgc2hvdWxkIHN1cHBvcnQgU09BUCBIZWFkZXJzCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICogMjAwOTAxMTkgICAyNjEzOTcgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS5heGlzLkNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5VUkxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgU29hcEhlbHBlcgotewotICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgZGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZXNfID0gbnVsbDsKLSAgCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIHZvaWQgaW5pdERlZmF1bHRTb2FwRW52ZWxvcGVOYW1lc3BhY2VzKCkKLSAgewotICAgIGRlZmF1bHRTb2FwRW52ZWxvcGVOYW1lc3BhY2VzXyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBkZWZhdWx0U29hcEVudmVsb3BlTmFtZXNwYWNlc18ucHV0KENvbnN0YW50cy5VUklfU09BUDExX0VOVixDb25zdGFudHMuTlNfUFJFRklYX1NPQVBfRU5WKTsKLSAgICBkZWZhdWx0U29hcEVudmVsb3BlTmFtZXNwYWNlc18ucHV0KENvbnN0YW50cy5VUklfMjAwMV9TQ0hFTUFfWFNJLENvbnN0YW50cy5OU19QUkVGSVhfU0NIRU1BX1hTSSk7Ci0gICAgZGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZXNfLnB1dChDb25zdGFudHMuVVJJXzIwMDFfU0NIRU1BX1hTRCxDb25zdGFudHMuTlNfUFJFRklYX1NDSEVNQV9YU0QpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgYWRkRGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZXMoSGFzaHRhYmxlIHNvYXBFbnZlbG9wZU5hbWVzcGFjZXMpCi0gIHsKLSAgICBpZiAoZGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZXNfID09IG51bGwpCi0gICAgICBpbml0RGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZXMoKTsKLSAgICBFbnVtZXJhdGlvbiBkZWZhdWx0U29hcEVudmVsb3BlTmFtZXNwYWNlVVJJcyA9IGRlZmF1bHRTb2FwRW52ZWxvcGVOYW1lc3BhY2VzXy5rZXlzKCk7Ci0gICAgd2hpbGUgKGRlZmF1bHRTb2FwRW52ZWxvcGVOYW1lc3BhY2VVUklzLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFN0cmluZyBkZWZhdWx0U29hcEVudmVsb3BlTmFtZXNwYWNlVVJJID0gKFN0cmluZylkZWZhdWx0U29hcEVudmVsb3BlTmFtZXNwYWNlVVJJcy5uZXh0RWxlbWVudCgpOwotICAgICAgc29hcEVudmVsb3BlTmFtZXNwYWNlcy5wdXQoZGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZVVSSSwoU3RyaW5nKWRlZmF1bHRTb2FwRW52ZWxvcGVOYW1lc3BhY2VzXy5nZXQoZGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZVVSSSkpOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIGlzRGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZShTdHJpbmcgbmFtZXNwYWNlVVJJLFN0cmluZyBuYW1lc3BhY2VQcmVmaXgpCi0gIHsKLSAgICBpZiAoZGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZXNfID09IG51bGwpCi0gICAgICBpbml0RGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZXMoKTsKLSAgICBpZiAoZGVmYXVsdFNvYXBFbnZlbG9wZU5hbWVzcGFjZXNfLmdldChuYW1lc3BhY2VVUkkpICE9IG51bGwpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gIAotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBFbGVtZW50IGNyZWF0ZVNvYXBFbnZlbG9wZUVsZW1lbnQoRG9jdW1lbnQgZG9jLEhhc2h0YWJsZSBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSkKLSAgewotCUVsZW1lbnQgc29hcEVudmVsb3BlRWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoQ29uc3RhbnRzLlVSSV9TT0FQMTFfRU5WLCBDb25zdGFudHMuTlNfUFJFRklYX1NPQVBfRU5WICsgIjpFbnZlbG9wZSIpOwotICAgIEVudW1lcmF0aW9uIGUgPSBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZS5rZXlzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgU3RyaW5nIHNvYXBFbnZlbG9wZU5hbWVzcGFjZVVSSSA9IChTdHJpbmcpZS5uZXh0RWxlbWVudCgpOwotICAgICAgU3RyaW5nQnVmZmVyIHNvYXBFbnZlbG9wZU5hbWVzcGFjZUF0dHIgPSBuZXcgU3RyaW5nQnVmZmVyKCJ4bWxuczoiKTsKLSAgICAgIHNvYXBFbnZlbG9wZU5hbWVzcGFjZUF0dHIuYXBwZW5kKChTdHJpbmcpc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUuZ2V0KHNvYXBFbnZlbG9wZU5hbWVzcGFjZVVSSSkpOwotICAgICAgc29hcEVudmVsb3BlRWxlbWVudC5zZXRBdHRyaWJ1dGUoc29hcEVudmVsb3BlTmFtZXNwYWNlQXR0ci50b1N0cmluZygpLHNvYXBFbnZlbG9wZU5hbWVzcGFjZVVSSSk7ICAgICAgCi0gICAgfSAgICAKLSAgICByZXR1cm4gc29hcEVudmVsb3BlRWxlbWVudDsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBFbGVtZW50IGNyZWF0ZVNvYXBIZWFkZXJFbGVtZW50KERvY3VtZW50IGRvYykKLSAgewotICAgIHJldHVybiBkb2MuY3JlYXRlRWxlbWVudCgic29hcGVudjpIZWFkZXIiKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBFbGVtZW50IGNyZWF0ZVNvYXBCb2R5RWxlbWVudChEb2N1bWVudCBkb2MpCi0gIHsKLSAgICByZXR1cm4gZG9jLmNyZWF0ZUVsZW1lbnQoInNvYXBlbnY6Qm9keSIpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIEVsZW1lbnQgY3JlYXRlUlBDV3JhcHBlckVsZW1lbnQoRG9jdW1lbnQgZG9jLEhhc2h0YWJsZSBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSxTdHJpbmcgZW5jb2RpbmdOYW1lc3BhY2VVUkksU3RyaW5nIG9wZXJhdGlvbk5hbWUsIFN0cmluZyBlbmNvZGluZ1N0eWxlKQotICB7Ci0gICAgaW50IG5zSWQgPSAwOwotICAgIFN0cmluZ0J1ZmZlciB3cmFwcGVyRWxlbWVudE5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgU3RyaW5nIGVuY29kaW5nTmFtZXNwYWNlUHJlZml4ID0gKFN0cmluZylzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZS5nZXQoZW5jb2RpbmdOYW1lc3BhY2VVUkkpOwotICAgIGlmIChlbmNvZGluZ05hbWVzcGFjZVByZWZpeCAhPSBudWxsKQotICAgICAgd3JhcHBlckVsZW1lbnROYW1lLmFwcGVuZChlbmNvZGluZ05hbWVzcGFjZVByZWZpeCk7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIExvb3AgdW50aWwgd2UgZ2VuZXJhdGUgYSB1bmlxdWUgcHJlZml4LgotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgd3JhcHBlckVsZW1lbnROYW1lLnNldExlbmd0aCgwKTsKLSAgICAgICAgd3JhcHBlckVsZW1lbnROYW1lLmFwcGVuZCgibnMiKS5hcHBlbmQobnNJZCk7Ci0gICAgICAgIGlmICghc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUuY29udGFpbnNWYWx1ZSh3cmFwcGVyRWxlbWVudE5hbWUudG9TdHJpbmcoKSkpCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5zSWQrKzsKLSAgICAgIH0gd2hpbGUgKHRydWUpOwotICAgICAgCi0gICAgICAvLyBuZWVkIHRvIGVuc3VyZSB3aGF0ZXZlciBwcmVmaXggd2UgY2hvb3NlIGlzIGFkZGVkIHRvIHRoZSBuYW1lc3BhY2UgdGFibGUKLSAgICAgIC8vIHNvIHRoYXQgaXQgd2lsbCBub3QgYmUgcmV1c2VkIGxhdGVkIG9uCi0gICAgICBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZS5wdXQoZW5jb2RpbmdOYW1lc3BhY2VVUkksIHdyYXBwZXJFbGVtZW50TmFtZS50b1N0cmluZygpKTsKLSAgICB9ICAgIAotICAgIFN0cmluZyB3cmFwcGVyRWxlbWVudE5hbWVQcmVmaXggPSB3cmFwcGVyRWxlbWVudE5hbWUudG9TdHJpbmcoKTsKLSAgICB3cmFwcGVyRWxlbWVudE5hbWUuYXBwZW5kKCc6JykuYXBwZW5kKG9wZXJhdGlvbk5hbWUpOwotICAgIEVsZW1lbnQgd3JhcHBlckVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCh3cmFwcGVyRWxlbWVudE5hbWUudG9TdHJpbmcoKSk7Ci0gICAgU3RyaW5nQnVmZmVyIG5hbWVzcGFjZUF0dHJOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigieG1sbnM6Iik7Ci0gICAgbmFtZXNwYWNlQXR0ck5hbWUuYXBwZW5kKHdyYXBwZXJFbGVtZW50TmFtZVByZWZpeCk7Ci0gICAgd3JhcHBlckVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWVzcGFjZUF0dHJOYW1lLnRvU3RyaW5nKCksZW5jb2RpbmdOYW1lc3BhY2VVUkkpOwotICAgIGlmIChlbmNvZGluZ1N0eWxlICE9IG51bGwpCi0gICAgICB3cmFwcGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoInNvYXBlbnY6ZW5jb2RpbmdTdHlsZSIsZW5jb2RpbmdTdHlsZSk7Ci0gICAgcmV0dXJuIHdyYXBwZXJFbGVtZW50OwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZW5jb2RlTmFtZXNwYWNlRGVjbGFyYXRpb24oU3RyaW5nIHByZWZpeCwgU3RyaW5nIHVyaSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICBzYi5hcHBlbmQocHJlZml4KTsKLSAgICBzYi5hcHBlbmQoIiAiKTsKLSAgICBzYi5hcHBlbmQodXJpKTsKLSAgICBTdHJpbmcgcmVzdWx0ID0gVVJMVXRpbHMuZW5jb2RlKHNiLnRvU3RyaW5nKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZ1tdIGRlY29kZU5hbWVzcGFjZURlY2xhcmF0aW9uKFN0cmluZyBzKQotICB7Ci0gICAgU3RyaW5nIHNDb3B5ID0gVVJMVXRpbHMuZGVjb2RlKHMpOwotICAgIGludCBpbmRleCA9IHNDb3B5LmluZGV4T2YoIiAiKTsKLSAgICBTdHJpbmdbXSBuc0RlY2wgPSBuZXcgU3RyaW5nWzJdOwotICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICB7Ci0gICAgICBuc0RlY2xbMF0gPSBzQ29weS5zdWJzdHJpbmcoMCwgaW5kZXgpOwotICAgICAgbnNEZWNsWzFdID0gc0NvcHkuc3Vic3RyaW5nKGluZGV4KzEsIHNDb3B5Lmxlbmd0aCgpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIG5zRGVjbFswXSA9IG51bGw7Ci0gICAgICBuc0RlY2xbMV0gPSBzQ29weTsKLSAgICB9Ci0gICAgcmV0dXJuIG5zRGVjbDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3hzZC9XU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NkbC94c2QvV1NETFBhcnRzVG9YU0RUeXBlTWFwcGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOWRjNDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2RsL3hzZC9XU0RMUGFydHNUb1hTRFR5cGVNYXBwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwueHNkOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RFbGVtZW50RGVjbGFyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRE1vZGVsR3JvdXBEZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0ROYW1lZENvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbjsKLQotcHVibGljIGNsYXNzIFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcgotewotICBwcml2YXRlIGZpbmFsIGNoYXIgUE9VTkQgPSAnIyc7Ci0gIHByaXZhdGUgVmVjdG9yIHhzZFNjaGVtYUxpc3RfOwotICBwcml2YXRlIEhhc2h0YWJsZSBwYXJ0VG9YU0RDYWNoZV87Ci0KLSAgcHVibGljIFdTRExQYXJ0c1RvWFNEVHlwZU1hcHBlcigpIHsKLSAgICB4c2RTY2hlbWFMaXN0XyA9IG5ldyBWZWN0b3IoKTsKLSAgICBwYXJ0VG9YU0RDYWNoZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRTY2hlbWFzKFZlY3RvciBzY2hlbWFMaXN0KSB7Ci0gICAgZm9yIChpbnQgaT0wO2k8c2NoZW1hTGlzdC5zaXplKCk7aSsrKSB7Ci0gICAgICBPYmplY3Qgc2NoZW1hID0gc2NoZW1hTGlzdC5lbGVtZW50QXQoaSk7Ci0gICAgICBpZiAoc2NoZW1hICE9IG51bGwpCi0gICAgICAgIHhzZFNjaGVtYUxpc3RfLmFkZEVsZW1lbnQoc2NoZW1hKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgWFNETmFtZWRDb21wb25lbnQgZ2V0WFNEVHlwZShQYXJ0IHBhcnQsIFN0cmluZyBpZCkgewotICAgIFhTRE5hbWVkQ29tcG9uZW50IGNvbXBvbmVudCA9IGdldFhTRFR5cGVGcm9tQ2FjaGUoaWQpOwotICAgIGlmIChjb21wb25lbnQgIT0gbnVsbCkKLSAgICAgIHJldHVybiBjb21wb25lbnQ7Ci0gICAgY29tcG9uZW50ID0gZ2V0WFNEVHlwZUZyb21TY2hlbWEocGFydCk7Ci0gICAgaWYgKGNvbXBvbmVudCAhPSBudWxsKQotICAgICAgYWRkVG9DYWNoZShpZCwgY29tcG9uZW50KTsKLSAgICByZXR1cm4gY29tcG9uZW50OwotICB9Ci0KLSAgcHVibGljIFhTRE5hbWVkQ29tcG9uZW50IGdldFhTRFR5cGVGcm9tQ2FjaGUoU3RyaW5nIGlkKSB7Ci0gICAgcmV0dXJuIChYU0ROYW1lZENvbXBvbmVudClwYXJ0VG9YU0RDYWNoZV8uZ2V0KGlkKTsKLSAgfQotCi0gIHB1YmxpYyBYU0ROYW1lZENvbXBvbmVudCBnZXRYU0RUeXBlRnJvbVNjaGVtYShQYXJ0IHBhcnQpIHsKLSAgICBib29sZWFuIGlzRWxlbWVudERlY2xhcmF0aW9uID0gKHBhcnQuZ2V0VHlwZU5hbWUoKSA9PSBudWxsKTsKLSAgICBRTmFtZSBxTmFtZSA9IGlzRWxlbWVudERlY2xhcmF0aW9uID8gcGFydC5nZXRFbGVtZW50TmFtZSgpIDogcGFydC5nZXRUeXBlTmFtZSgpOwotICAgIHJldHVybiBnZXRYU0RUeXBlRnJvbVNjaGVtYShxTmFtZS5nZXROYW1lc3BhY2VVUkkoKSwgcU5hbWUuZ2V0TG9jYWxQYXJ0KCksIGlzRWxlbWVudERlY2xhcmF0aW9uKTsKLSAgfQotCi0gIHB1YmxpYyBYU0ROYW1lZENvbXBvbmVudCBnZXRYU0RUeXBlRnJvbVNjaGVtYShTdHJpbmcgbmFtZXNwYWNlVVJJLCBTdHJpbmcgbG9jYWxOYW1lLCBib29sZWFuIGlzRWxlbWVudERlY2xhcmF0aW9uKSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB4c2RTY2hlbWFMaXN0Xy5zaXplKCk7IGkrKykgewotICAgICAgWFNEU2NoZW1hIHhzZFNjaGVtYSA9IChYU0RTY2hlbWEpeHNkU2NoZW1hTGlzdF8uZWxlbWVudEF0KGkpOwotICAgICAgVmVjdG9yIGNvbXBvbmVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBpZiAoaXNFbGVtZW50RGVjbGFyYXRpb24pCi0gICAgICAgIGNvbXBvbmVudHMuYWRkQWxsKHhzZFNjaGVtYS5nZXRFbGVtZW50RGVjbGFyYXRpb25zKCkpOwotICAgICAgZWxzZQotICAgICAgICBjb21wb25lbnRzLmFkZEFsbCh4c2RTY2hlbWEuZ2V0VHlwZURlZmluaXRpb25zKCkpOwotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IGNvbXBvbmVudHMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOyApIHsKLSAgICAgICAgWFNETmFtZWRDb21wb25lbnQgY29tcG9uZW50ICA9IChYU0ROYW1lZENvbXBvbmVudClpdC5uZXh0KCk7Ci0gICAgICAgIFN0cmluZyBjb21wTlNVUkkgPSBjb21wb25lbnQuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0gICAgICAgIFN0cmluZyBjb21wTG9jYWxuYW1lID0gY29tcG9uZW50LmdldE5hbWUoKTsKLSAgICAgICAgaWYgKGNvbXBOU1VSSSAhPSBudWxsICYmIGNvbXBMb2NhbG5hbWUgIT0gbnVsbCAmJiBjb21wTlNVUkkuZXF1YWxzKG5hbWVzcGFjZVVSSSkgJiYgY29tcExvY2FsbmFtZS5lcXVhbHMobG9jYWxOYW1lKSkKLSAgICAgICAgICByZXR1cm4gY29tcG9uZW50OwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBYU0ROYW1lZENvbXBvbmVudCByZXNvbHZlWFNETmFtZWRDb21wb25lbnQoWFNETmFtZWRDb21wb25lbnQgY29tcG9uZW50KQotICB7Ci0gICAgaWYgKGNvbXBvbmVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyB1cmkgPSBjb21wb25lbnQuZ2V0VVJJKCk7Ci0gICAgICBTdHJpbmcgcW5hbWUgPSBjb21wb25lbnQuZ2V0UU5hbWUoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeHNkU2NoZW1hTGlzdF8uc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIFhTRFNjaGVtYSB4c2RTY2hlbWEgPSAoWFNEU2NoZW1hKXhzZFNjaGVtYUxpc3RfLmVsZW1lbnRBdChpKTsKLSAgICAgICAgaWYgKHhzZFNjaGVtYSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIHRhcmdldE5TID0geHNkU2NoZW1hLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgICAgIGlmICh0YXJnZXROUyAhPSBudWxsICYmIHRhcmdldE5TLmVxdWFscyh0cmltUU5hbWUodXJpLCBxbmFtZSkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFhTRE5hbWVkQ29tcG9uZW50IHJlc29sdmVkQ29tcG9uZW50ID0gbnVsbDsKLSAgICAgICAgICAgIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBYU0RUeXBlRGVmaW5pdGlvbikKLSAgICAgICAgICAgICAgcmVzb2x2ZWRDb21wb25lbnQgPSB4c2RTY2hlbWEucmVzb2x2ZVR5cGVEZWZpbml0aW9uKHFuYW1lKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBvbmVudCBpbnN0YW5jZW9mIFhTREVsZW1lbnREZWNsYXJhdGlvbikKLSAgICAgICAgICAgICAgcmVzb2x2ZWRDb21wb25lbnQgPSB4c2RTY2hlbWEucmVzb2x2ZUVsZW1lbnREZWNsYXJhdGlvbihxbmFtZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBYU0RNb2RlbEdyb3VwRGVmaW5pdGlvbikKLSAgICAgICAgICAgICAgcmVzb2x2ZWRDb21wb25lbnQgPSB4c2RTY2hlbWEucmVzb2x2ZU1vZGVsR3JvdXBEZWZpbml0aW9uKHFuYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0NvbXBvbmVudFJlc29sdmFibGUocmVzb2x2ZWRDb21wb25lbnQpKQotICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRDb21wb25lbnQ7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgdHJpbVFOYW1lKFN0cmluZyB1cmksIFN0cmluZyBxbmFtZSkKLSAgewotICAgIGludCBpbmRleCA9IHVyaS5pbmRleE9mKHFuYW1lKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgewotICAgICAgU3RyaW5nIG5zID0gdXJpLnN1YnN0cmluZygwLCBpbmRleCk7Ci0gICAgICBpZiAobnMuY2hhckF0KGluZGV4LTEpID09IFBPVU5EKQotICAgICAgICByZXR1cm4gbnMuc3Vic3RyaW5nKDAsIGluZGV4LTEpOwotICAgICAgZWxzZQotICAgICAgICByZXR1cm4gbnM7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiB1cmk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgYWRkVG9DYWNoZShTdHJpbmcgaWQsIFhTRE5hbWVkQ29tcG9uZW50IGNvbXBvbmVudCkgewotICAgIHBhcnRUb1hTRENhY2hlXy5wdXQoaWQsY29tcG9uZW50KTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGlzQ29tcG9uZW50UmVzb2x2YWJsZShYU0RDb21wb25lbnQgY29tcG9uZW50KQotICB7Ci0gICAgaWYgKGNvbXBvbmVudCA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFhTRFNjaGVtYSBzY2hlbWEgPSBjb21wb25lbnQuZ2V0U2NoZW1hKCk7Ci0gICAgaWYgKHNjaGVtYSA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzY2hlbWEuZ2V0VGFyZ2V0TmFtZXNwYWNlKCkgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkQnVzaW5lc3NUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkQnVzaW5lc3NUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjZkNmY4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL0FkZEJ1c2luZXNzVG9GYXZvcml0ZXNBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy5GYXZvcml0ZXNNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuV3NpbE1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC5Xc2lsRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnRyYW5zZm9ybWVyLldTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXI7Ci0KLXB1YmxpYyBjbGFzcyBBZGRCdXNpbmVzc1RvRmF2b3JpdGVzQWN0aW9uIGV4dGVuZHMgQWRkVG9GYXZvcml0ZXNBY3Rpb24KLXsKLSAgcHVibGljIEFkZEJ1c2luZXNzVG9GYXZvcml0ZXNBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBmYXZvcml0ZUV4aXN0cygpCi0gIHsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIGludCB2aWV3SUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVklFV0lEKSk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0Tm9kZShub2RlSUQpOwotICAgIFdzaWxFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IChXc2lsRWxlbWVudCkgc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgT2JqZWN0IG9iaiA9IHNlbGVjdGVkRWxlbWVudC5nZXRBbGxVRERJTGlua3MoKS5nZXRFbGVtZW50V2l0aFZpZXdJZCh2aWV3SUQpLmdldE9iamVjdCgpOwotICAgIFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50ID0gKFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50KSBvYmo7Ci0gICAgU3RyaW5nIGJ1c2luZXNzTmFtZSA9IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50LmdldE5hbWUoKTsKLSAgICBTdHJpbmcgaW5xdWlyeUFQSSA9IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50LmdldFVERElMaW5rSW5xdWlyeUFQSSgpOwotICAgIFN0cmluZyBidXNpbmVzc0tleSA9IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50LmdldFVERElMaW5rQnVzaW5lc3NLZXkoKTsKLSAgICBpZiAoYnVzaW5lc3NOYW1lID09IG51bGwpCi0gICAgICBidXNpbmVzc05hbWUgPSBidXNpbmVzc0tleTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9CVVNJTkVTU19OQU1FLCBidXNpbmVzc05hbWUpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfQlVTSU5FU1NfSU5RVUlSWV9BUEksIGlucXVpcnlBUEkpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfQlVTSU5FU1NfS0VZLCBidXNpbmVzc0tleSk7Ci0gICAgcmV0dXJuIGZhdm9yaXRlRXhpc3RzKHRhYmxlLCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfVURESV9CVVNJTkVTU19GT0xERVJfTk9ERSk7Ci0gIH0KLQotICBwdWJsaWMgSVRyYW5zZm9ybWVyW10gZ2V0VHJhbnNmb3JtZXJzKCkKLSAgewotICAgIElUcmFuc2Zvcm1lcltdIHBhcmVudFRyYW5zZm9ybWVycyA9IHN1cGVyLmdldFRyYW5zZm9ybWVycygpOwotICAgIElUcmFuc2Zvcm1lcltdIHRyYW5zZm9ybWVycyA9IG5ldyBJVHJhbnNmb3JtZXJbcGFyZW50VHJhbnNmb3JtZXJzLmxlbmd0aCsxXTsKLSAgICBTeXN0ZW0uYXJyYXljb3B5KHBhcmVudFRyYW5zZm9ybWVycywgMCwgdHJhbnNmb3JtZXJzLCAwLCBwYXJlbnRUcmFuc2Zvcm1lcnMubGVuZ3RoKTsKLSAgICB0cmFuc2Zvcm1lcnNbdHJhbnNmb3JtZXJzLmxlbmd0aC0xXSA9IG5ldyBXU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyKGNvbnRyb2xsZXJfLCBXc2lsTW9kZWxDb25zdGFudHMuTElTVF9NQU5BR0VSX1VERElfTElOS1MsIEFjdGlvbklucHV0cy5WSUVXSUQsIFdTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXIuVURESV9CVVNJTkVTUyk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybWVyczsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIGludCBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgaW50IHZpZXdJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5WSUVXSUQpKTsKLSAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0Tm9kZShub2RlSUQpOwotICAgIFdzaWxFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IChXc2lsRWxlbWVudCkgc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgT2JqZWN0IG9iaiA9IHNlbGVjdGVkRWxlbWVudC5nZXRBbGxVRERJTGlua3MoKS5nZXRFbGVtZW50V2l0aFZpZXdJZCh2aWV3SUQpLmdldE9iamVjdCgpOwotICAgIFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50ID0gKFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50KSBvYmo7Ci0gICAgU3RyaW5nIGJ1c2luZXNzTmFtZSA9IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50LmdldE5hbWUoKTsKLSAgICBTdHJpbmcgaW5xdWlyeUFQSSA9IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50LmdldFVERElMaW5rSW5xdWlyeUFQSSgpOwotICAgIFN0cmluZyBidXNpbmVzc0tleSA9IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50LmdldFVERElMaW5rQnVzaW5lc3NLZXkoKTsKLSAgICBpZiAoYnVzaW5lc3NOYW1lID09IG51bGwpCi0gICAgICBidXNpbmVzc05hbWUgPSBidXNpbmVzc0tleTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9CVVNJTkVTU19OQU1FLCBidXNpbmVzc05hbWUpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfQlVTSU5FU1NfSU5RVUlSWV9BUEksIGlucXVpcnlBUEkpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfQlVTSU5FU1NfS0VZLCBidXNpbmVzc0tleSk7Ci0gICAgaWYgKGlzTXVsdGlwbGVMaW5rQWN0aW9uKCkgJiYgZmF2b3JpdGVFeGlzdHModGFibGUsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX0JVU0lORVNTX0ZPTERFUl9OT0RFKSkKLSAgICB7Ci0gICAgICB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0ZBVk9SSVRFU19BTFJFQURZX0VYSVNUUyIsIGJ1c2luZXNzTmFtZSkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoYWRkVG9GYXZvcml0ZXModGFibGUsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX0JVU0lORVNTX0ZPTERFUl9OT0RFKSkKLSAgICB7Ci0gICAgICB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fQUREX1RPX0ZBVk9SSVRFU19TVUNDRVNTRlVMIiwgYnVzaW5lc3NOYW1lKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfQUREX1RPX0ZBVk9SSVRFUyIsIGJ1c2luZXNzTmFtZSkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODU1MTI1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL0FkZEJ1c2luZXNzVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lci5JVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5SZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy5VRERJQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy5Xc2lsTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC5Xc2lsVWRkaUJ1c2luZXNzRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5XU0lMUGVyc3BlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwudHJhbnNmb3JtZXIuV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lcjsKLQotcHVibGljIGNsYXNzIEFkZEJ1c2luZXNzVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24gZXh0ZW5kcyBBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbgotewotICBwdWJsaWMgQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBJVHJhbnNmb3JtZXJbXSBnZXRUcmFuc2Zvcm1lcnMoKQotICB7Ci0gICAgSVRyYW5zZm9ybWVyW10gcGFyZW50VHJhbnNmb3JtZXJzID0gc3VwZXIuZ2V0VHJhbnNmb3JtZXJzKCk7Ci0gICAgSVRyYW5zZm9ybWVyW10gdHJhbnNmb3JtZXJzID0gbmV3IElUcmFuc2Zvcm1lcltwYXJlbnRUcmFuc2Zvcm1lcnMubGVuZ3RoKzFdOwotICAgIFN5c3RlbS5hcnJheWNvcHkocGFyZW50VHJhbnNmb3JtZXJzLCAwLCB0cmFuc2Zvcm1lcnMsIDAsIHBhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgpOwotICAgIHRyYW5zZm9ybWVyc1t0cmFuc2Zvcm1lcnMubGVuZ3RoLTFdID0gbmV3IFdTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXIoY29udHJvbGxlcl8sIFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfVURESV9MSU5LUywgQWN0aW9uSW5wdXRzLlZJRVdJRCwgV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lci5VRERJX0JVU0lORVNTKTsKLSAgICByZXR1cm4gdHJhbnNmb3JtZXJzOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZXhlY3V0ZVNpbmdsZUxpbmtBY3Rpb24oKQotICB7Ci0gICAgaW50IG5vZGVJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBpbnQgdmlld0lEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLlZJRVdJRCkpOwotICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHdzaWxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUobm9kZUlEKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBTdHJpbmcgaW5xdWlyeVVSTCA9IG51bGw7Ci0gICAgU3RyaW5nIGJ1c2luZXNzS2V5ID0gbnVsbDsKLSAgICBTdHJpbmcgYnVzaW5lc3NOYW1lID0gbnVsbDsKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQpCi0gICAgewotICAgICAgTGlzdEVsZW1lbnQgbGUgPSAoKFdzaWxFbGVtZW50KSBzZWxlY3RlZEVsZW1lbnQpLmdldEFsbFVERElMaW5rcygpLmdldEVsZW1lbnRXaXRoVmlld0lkKHZpZXdJRCk7Ci0gICAgICBXc2lsVWRkaUJ1c2luZXNzRWxlbWVudCB3c2lsVWRkaUJ1c2luZXNzRWxlbWVudCA9IChXc2lsVWRkaUJ1c2luZXNzRWxlbWVudCkgbGUuZ2V0T2JqZWN0KCk7Ci0gICAgICBpbnF1aXJ5VVJMID0gd3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQuZ2V0VURESUxpbmtJbnF1aXJ5QVBJKCk7Ci0gICAgICBidXNpbmVzc0tleSA9IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50LmdldFVERElMaW5rQnVzaW5lc3NLZXkoKTsKLSAgICAgIGJ1c2luZXNzTmFtZSA9IHdzaWxVZGRpQnVzaW5lc3NFbGVtZW50LmdldE5hbWUoKTsKLSAgICAgIGlmIChidXNpbmVzc05hbWUgPT0gbnVsbCkKLSAgICAgICAgYnVzaW5lc3NOYW1lID0gYnVzaW5lc3NLZXk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyByZXR1cm4gZmFsc2UgaWYgdW5hYmxlIHRvIGZpbmQgb3IgY3JlYXRlIGEgcmVnaXN0cnkgbm9kZS9lbGVtZW50IGluIHRoZQotICAgIC8vIFVEREkgcGVyc3BlY3RpdmUKLSAgICBpZiAoIWNyZWF0ZVJlZ2lzdHJ5SW5VRERJUGVyc3BlY3RpdmUoaW5xdWlyeVVSTCwgbnVsbCwgaW5xdWlyeVVSTCkpCi0gICAgewotICAgICAgd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2Uod3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9BRERfVE9fVURESV9QRVJTUEVDVElWRSIsIGJ1c2luZXNzTmFtZSkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBwcmVwYXJlIHRoZSBhY3Rpb24KLSAgICBSZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uIGFjdGlvbiA9IG5ldyBSZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAvLyBwb3B1bGF0ZSBwcm9wZXJ0eSB0YWJsZQotICAgIEhhc2h0YWJsZSBwcm9wZXJ0eVRhYmxlID0gYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfQlVTSU5FU1NfS0VZLCBidXNpbmVzc0tleSk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FLCBidXNpbmVzc05hbWUpOwotICAgIC8vIHJ1biB0aGUgYWN0aW9uCi0gICAgaWYgKCFhY3Rpb24ucnVuKCkpCi0gICAgewotICAgICAgd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2Uod3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9CVVNJTkVTU19OT1RfRk9VTkQiLCBidXNpbmVzc05hbWUpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19BRERfVE9fVURESV9QRVJTUEVDVElWRV9TVUNDRVNTRlVMIiwgYnVzaW5lc3NOYW1lKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL0FkZFNlcnZpY2VUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkU2VydmljZVRvRmF2b3JpdGVzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmZTVmMmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkU2VydmljZVRvRmF2b3JpdGVzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lci5JVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuRmF2b3JpdGVzTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuV3NpbEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxVZGRpU2VydmljZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnRyYW5zZm9ybWVyLldTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXI7Ci0KLXB1YmxpYyBjbGFzcyBBZGRTZXJ2aWNlVG9GYXZvcml0ZXNBY3Rpb24gZXh0ZW5kcyBBZGRUb0Zhdm9yaXRlc0FjdGlvbgotewotICBwdWJsaWMgQWRkU2VydmljZVRvRmF2b3JpdGVzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZmF2b3JpdGVFeGlzdHMoKQotICB7Ci0gICAgaW50IG5vZGVJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBpbnQgdmlld0lEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLlZJRVdJRCkpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlEKTsKLSAgICBXc2lsRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSAoV3NpbEVsZW1lbnQpIHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIE9iamVjdCBvYmogPSBzZWxlY3RlZEVsZW1lbnQuZ2V0QWxsVURESVNlcnZpY2VzKCkuZ2V0RWxlbWVudFdpdGhWaWV3SWQodmlld0lEKS5nZXRPYmplY3QoKTsKLSAgICBXc2lsVWRkaVNlcnZpY2VFbGVtZW50IHdzaWxVZGRpU2VydmljZUVsZW1lbnQgPSAoV3NpbFVkZGlTZXJ2aWNlRWxlbWVudCkgb2JqOwotICAgIFN0cmluZyBzZXJ2aWNlTmFtZSA9IHdzaWxVZGRpU2VydmljZUVsZW1lbnQuZ2V0TmFtZSgpOwotICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gd3NpbFVkZGlTZXJ2aWNlRWxlbWVudC5nZXRVRERJU2VydmljZUlucXVpcnlBUEkoKTsKLSAgICBTdHJpbmcgc2VydmljZUtleSA9IHdzaWxVZGRpU2VydmljZUVsZW1lbnQuZ2V0VURESVNlcnZpY2VLZXkoKTsKLSAgICBpZiAoc2VydmljZU5hbWUgPT0gbnVsbCkKLSAgICAgIHNlcnZpY2VOYW1lID0gc2VydmljZUtleTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9TRVJWSUNFX05BTUUsIHNlcnZpY2VOYW1lKTsKLSAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfSU5RVUlSWV9BUEksIGlucXVpcnlBUEkpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfU0VSVklDRV9LRVksIHNlcnZpY2VLZXkpOwotICAgIHJldHVybiBmYXZvcml0ZUV4aXN0cyh0YWJsZSwgRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9GT0xERVJfTk9ERSk7Ci0gIH0KLQotICBwdWJsaWMgSVRyYW5zZm9ybWVyW10gZ2V0VHJhbnNmb3JtZXJzKCkKLSAgewotICAgIElUcmFuc2Zvcm1lcltdIHBhcmVudFRyYW5zZm9ybWVycyA9IHN1cGVyLmdldFRyYW5zZm9ybWVycygpOwotICAgIElUcmFuc2Zvcm1lcltdIHRyYW5zZm9ybWVycyA9IG5ldyBJVHJhbnNmb3JtZXJbcGFyZW50VHJhbnNmb3JtZXJzLmxlbmd0aCsxXTsKLSAgICBTeXN0ZW0uYXJyYXljb3B5KHBhcmVudFRyYW5zZm9ybWVycywgMCwgdHJhbnNmb3JtZXJzLCAwLCBwYXJlbnRUcmFuc2Zvcm1lcnMubGVuZ3RoKTsKLSAgICB0cmFuc2Zvcm1lcnNbdHJhbnNmb3JtZXJzLmxlbmd0aC0xXSA9IG5ldyBXU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyKGNvbnRyb2xsZXJfLCBXc2lsTW9kZWxDb25zdGFudHMuTElTVF9NQU5BR0VSX1VERElfU0VSVklDRVMsIEFjdGlvbklucHV0cy5WSUVXSUQsIFdTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXIuVURESV9TRVJWSUNFKTsKLSAgICByZXR1cm4gdHJhbnNmb3JtZXJzOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZXhlY3V0ZVNpbmdsZUxpbmtBY3Rpb24oKQotICB7Ci0gICAgaW50IG5vZGVJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBpbnQgdmlld0lEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLlZJRVdJRCkpOwotICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJRCk7Ci0gICAgV3NpbEVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gKFdzaWxFbGVtZW50KSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBPYmplY3Qgb2JqID0gc2VsZWN0ZWRFbGVtZW50LmdldEFsbFVERElTZXJ2aWNlcygpLmdldEVsZW1lbnRXaXRoVmlld0lkKHZpZXdJRCkuZ2V0T2JqZWN0KCk7Ci0gICAgV3NpbFVkZGlTZXJ2aWNlRWxlbWVudCB3c2lsVWRkaVNlcnZpY2VFbGVtZW50ID0gKFdzaWxVZGRpU2VydmljZUVsZW1lbnQpIG9iajsKLSAgICBTdHJpbmcgc2VydmljZU5hbWUgPSB3c2lsVWRkaVNlcnZpY2VFbGVtZW50LmdldE5hbWUoKTsKLSAgICBTdHJpbmcgaW5xdWlyeUFQSSA9IHdzaWxVZGRpU2VydmljZUVsZW1lbnQuZ2V0VURESVNlcnZpY2VJbnF1aXJ5QVBJKCk7Ci0gICAgU3RyaW5nIHNlcnZpY2VLZXkgPSB3c2lsVWRkaVNlcnZpY2VFbGVtZW50LmdldFVERElTZXJ2aWNlS2V5KCk7Ci0gICAgaWYgKHNlcnZpY2VOYW1lID09IG51bGwpCi0gICAgICBzZXJ2aWNlTmFtZSA9IHNlcnZpY2VLZXk7Ci0gICAgSGFzaHRhYmxlIHRhYmxlID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1VERElfU0VSVklDRV9OQU1FLCBzZXJ2aWNlTmFtZSk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfVURESV9TRVJWSUNFX0lOUVVJUllfQVBJLCBpbnF1aXJ5QVBJKTsKLSAgICB0YWJsZS5wdXQoRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUFJPUF9VRERJX1NFUlZJQ0VfS0VZLCBzZXJ2aWNlS2V5KTsKLSAgICBpZiAoaXNNdWx0aXBsZUxpbmtBY3Rpb24oKSAmJiBmYXZvcml0ZUV4aXN0cyh0YWJsZSwgRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1VERElfU0VSVklDRV9GT0xERVJfTk9ERSkpCi0gICAgewotICAgICAgd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2Uod3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9GQVZPUklURVNfQUxSRUFEWV9FWElTVFMiLCBzZXJ2aWNlTmFtZSkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoYWRkVG9GYXZvcml0ZXModGFibGUsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9VRERJX1NFUlZJQ0VfRk9MREVSX05PREUpKQotICAgIHsKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19BRERfVE9fRkFWT1JJVEVTX1NVQ0NFU1NGVUwiLCBzZXJ2aWNlTmFtZSkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0FERF9UT19GQVZPUklURVMiLCBzZXJ2aWNlTmFtZSkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkU2VydmljZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9BZGRTZXJ2aWNlVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI4NmRjOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9BZGRTZXJ2aWNlVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lci5JVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5SZWdGaW5kU2VydmljZVVVSURBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuV3NpbEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxVZGRpU2VydmljZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnRyYW5zZm9ybWVyLldTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXI7Ci0KLXB1YmxpYyBjbGFzcyBBZGRTZXJ2aWNlVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24gZXh0ZW5kcyBBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbgotewotICBwdWJsaWMgQWRkU2VydmljZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIElUcmFuc2Zvcm1lcltdIGdldFRyYW5zZm9ybWVycygpCi0gIHsKLSAgICBJVHJhbnNmb3JtZXJbXSBwYXJlbnRUcmFuc2Zvcm1lcnMgPSBzdXBlci5nZXRUcmFuc2Zvcm1lcnMoKTsKLSAgICBJVHJhbnNmb3JtZXJbXSB0cmFuc2Zvcm1lcnMgPSBuZXcgSVRyYW5zZm9ybWVyW3BhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgrMV07Ci0gICAgU3lzdGVtLmFycmF5Y29weShwYXJlbnRUcmFuc2Zvcm1lcnMsIDAsIHRyYW5zZm9ybWVycywgMCwgcGFyZW50VHJhbnNmb3JtZXJzLmxlbmd0aCk7Ci0gICAgdHJhbnNmb3JtZXJzW3RyYW5zZm9ybWVycy5sZW5ndGgtMV0gPSBuZXcgV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lcihjb250cm9sbGVyXywgV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9VRERJX1NFUlZJQ0VTLCBBY3Rpb25JbnB1dHMuVklFV0lELCBXU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyLlVERElfU0VSVklDRSk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybWVyczsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIGludCBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgaW50IHZpZXdJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5WSUVXSUQpKTsKLSAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2lsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKG5vZGVJRCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIGlucXVpcnlVUkwgPSBudWxsOwotICAgIFN0cmluZyBzZXJ2aWNlS2V5ID0gbnVsbDsKLSAgICBTdHJpbmcgc2VydmljZU5hbWUgPSBudWxsOwotICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBXc2lsRWxlbWVudCkKLSAgICB7Ci0gICAgICBMaXN0RWxlbWVudCBsZSA9ICgoV3NpbEVsZW1lbnQpIHNlbGVjdGVkRWxlbWVudCkuZ2V0QWxsVURESVNlcnZpY2VzKCkuZ2V0RWxlbWVudFdpdGhWaWV3SWQodmlld0lEKTsKLSAgICAgIFdzaWxVZGRpU2VydmljZUVsZW1lbnQgd3NpbFVkZGlTZXJ2aWNlRWxlbWVudCA9IChXc2lsVWRkaVNlcnZpY2VFbGVtZW50KSBsZS5nZXRPYmplY3QoKTsKLSAgICAgIGlucXVpcnlVUkwgPSB3c2lsVWRkaVNlcnZpY2VFbGVtZW50LmdldFVERElTZXJ2aWNlSW5xdWlyeUFQSSgpOwotICAgICAgc2VydmljZUtleSA9IHdzaWxVZGRpU2VydmljZUVsZW1lbnQuZ2V0VURESVNlcnZpY2VLZXkoKTsKLSAgICAgIHNlcnZpY2VOYW1lID0gd3NpbFVkZGlTZXJ2aWNlRWxlbWVudC5nZXROYW1lKCk7Ci0gICAgICBpZiAoc2VydmljZU5hbWUgPT0gbnVsbCkKLSAgICAgICAgc2VydmljZU5hbWUgPSBzZXJ2aWNlS2V5OwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gcmV0dXJuIGZhbHNlIGlmIHVuYWJsZSB0byBmaW5kIG9yIGNyZWF0ZSBhIHJlZ2lzdHJ5IG5vZGUvZWxlbWVudCBpbiB0aGUKLSAgICAvLyBVRERJIHBlcnNwZWN0aXZlCi0gICAgaWYgKCFjcmVhdGVSZWdpc3RyeUluVURESVBlcnNwZWN0aXZlKGlucXVpcnlVUkwsIG51bGwsIGlucXVpcnlVUkwpKQotICAgIHsKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfQUREX1RPX1VERElfUEVSU1BFQ1RJVkUiLCBzZXJ2aWNlTmFtZSkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAvLyBwcmVwYXJlIHRoZSBhY3Rpb24KLSAgICBSZWdGaW5kU2VydmljZVVVSURBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ0ZpbmRTZXJ2aWNlVVVJREFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgLy8gcG9wdWxhdGUgcHJvcGVydHkgdGFibGUKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfS0VZLCBzZXJ2aWNlS2V5KTsKLSAgICBwcm9wZXJ0eVRhYmxlLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUsIHNlcnZpY2VOYW1lKTsKLSAgICAvLyBydW4gdGhlIGFjdGlvbgotICAgIGlmICghYWN0aW9uLnJ1bigpKQotICAgIHsKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfU0VSVklDRV9OT1RfRk9VTkQiLCBzZXJ2aWNlTmFtZSkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2Uod3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX0FERF9UT19VRERJX1BFUlNQRUNUSVZFX1NVQ0NFU1NGVUwiLCBzZXJ2aWNlTmFtZSkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9BZGRUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkVG9GYXZvcml0ZXNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ4YjI5NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9BZGRUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuRmF2b3JpdGVzRm9sZGVyRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5MaXN0VURESUJ1c2luZXNzVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5MaXN0VURESVNlcnZpY2VzVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5MaXN0V1NETFNlcnZpY2VzVG9vbDsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEFkZFRvRmF2b3JpdGVzQWN0aW9uIGV4dGVuZHMgTXVsdGlwbGVMaW5rQWN0aW9uIHsKLSAgICBwcm90ZWN0ZWQgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXJfOwotCi0gICAgcHVibGljIEFkZFRvRmF2b3JpdGVzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgICB7Ci0gICAgICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgICAgICBub2RlTWFuYWdlcl8gPSBjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlELCBpbnQgdG9vbElELCBpbnQgdmlld0lELCBpbnQgdmlld1Rvb2xJRCkKLSAgICB7Ci0gICAgICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigid3NpbC9hY3Rpb25zL1dzaWxDaGVja0Zhdm9yaXRlRXhpc3RzQWN0aW9uSlNQLmpzcD8iKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKG5vZGVJRCk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5UT09MSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCh0b29sSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV0lEKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQodmlld0lEKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdUT09MSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCh2aWV3VG9vbElEKTsKLSAgICAgICAgcmV0dXJuIGFjdGlvbkxpbmsudG9TdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRCYXNlQWN0aW9uTGluaygpIHsKLSAgICAgICAgcmV0dXJuICJ3c2lsL2FjdGlvbnMvV3NpbENoZWNrRmF2b3JpdGVFeGlzdHNBY3Rpb25KU1AuanNwIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIEFkZFRvRmF2b3JpdGVzQWN0aW9uIG5ld0FjdGlvbihIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgQ29udHJvbGxlciBjb250cm9sbGVyKSB7Ci0gICAgICBTdHJpbmcgbm9kZUlEID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gbm9kZU1hbmFnZXIuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRCkpLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgICBpZiAoc2VsZWN0ZWRUb29sIGluc3RhbmNlb2YgTGlzdFdTRExTZXJ2aWNlc1Rvb2wpCi0gICAgICAgIHJldHVybiBuZXcgQWRkV1NETFNlcnZpY2VUb0Zhdm9yaXRlc0FjdGlvbihjb250cm9sbGVyKTsKLSAgICAgIGVsc2UgaWYgKHNlbGVjdGVkVG9vbCBpbnN0YW5jZW9mIExpc3RVRERJU2VydmljZXNUb29sKQotICAgICAgICByZXR1cm4gbmV3IEFkZFNlcnZpY2VUb0Zhdm9yaXRlc0FjdGlvbihjb250cm9sbGVyKTsKLSAgICAgIGVsc2UgaWYgKHNlbGVjdGVkVG9vbCBpbnN0YW5jZW9mIExpc3RVRERJQnVzaW5lc3NUb29sKQotICAgICAgICByZXR1cm4gbmV3IEFkZEJ1c2luZXNzVG9GYXZvcml0ZXNBY3Rpb24oY29udHJvbGxlcik7Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBuZXcgQWRkV1NJTFRvRmF2b3JpdGVzQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBib29sZWFuIGFkZFRvRmF2b3JpdGVzKEhhc2h0YWJsZSB0YWJsZSwgU3RyaW5nIHJlbCkgewotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgICAgIE5vZGVNYW5hZ2VyIGZhdk5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgICAgVHJlZUVsZW1lbnQgZmF2Um9vdEVsZW1lbnQgPSBmYXZOb2RlTWFuYWdlci5nZXRSb290Tm9kZSgpLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICAgIEVudW1lcmF0aW9uIGUgPSBmYXZSb290RWxlbWVudC5nZXRFbGVtZW50cyhyZWwpOwotICAgICAgICBpZiAoIWUuaGFzTW9yZUVsZW1lbnRzKCkpIHJldHVybiBmYWxzZTsKLSAgICAgICAgRmF2b3JpdGVzRm9sZGVyRWxlbWVudCBmYXZGb2xkZXJFbGVtZW50ID0gKEZhdm9yaXRlc0ZvbGRlckVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgICByZXR1cm4gZmF2Rm9sZGVyRWxlbWVudC5hZGRGYXZvcml0ZSh0YWJsZSk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIGJvb2xlYW4gZmF2b3JpdGVFeGlzdHMoSGFzaHRhYmxlIHRhYmxlLCBTdHJpbmcgcmVsKSB7Ci0gICAgICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgTm9kZU1hbmFnZXIgZmF2Tm9kZU1hbmFnZXIgPSBmYXZQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgICAgICBUcmVlRWxlbWVudCBmYXZSb290RWxlbWVudCA9IGZhdk5vZGVNYW5hZ2VyLmdldFJvb3ROb2RlKCkuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgRW51bWVyYXRpb24gZSA9IGZhdlJvb3RFbGVtZW50LmdldEVsZW1lbnRzKHJlbCk7Ci0gICAgICAgIGlmICghZS5oYXNNb3JlRWxlbWVudHMoKSkgcmV0dXJuIGZhbHNlOwotICAgICAgICBGYXZvcml0ZXNGb2xkZXJFbGVtZW50IGZhdkZvbGRlckVsZW1lbnQgPSAoRmF2b3JpdGVzRm9sZGVyRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgICAgIHJldHVybiBmYXZGb2xkZXJFbGVtZW50LmZhdm9yaXRlRXhpc3RzKHRhYmxlKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBmYXZvcml0ZUV4aXN0cygpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL0FkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMDE3MTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5PcGVuUmVnaXN0cnlBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLlVERElBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5SZWdpc3RyeU5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuVURESU1haW5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5MaXN0VURESUJ1c2luZXNzVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5MaXN0VURESVNlcnZpY2VzVG9vbDsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEFkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uIGV4dGVuZHMgTXVsdGlwbGVMaW5rQWN0aW9uCi17Ci0gIHB1YmxpYyBBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgaW50IHRvb2xJRCwgaW50IHZpZXdJRCwgaW50IHZpZXdUb29sSUQpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzaWwvYWN0aW9ucy9Xc2lsQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQobm9kZUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5UT09MSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodG9vbElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodmlld0lEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXVE9PTElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdUb29sSUQpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRCYXNlQWN0aW9uTGluaygpCi0gIHsKLSAgICByZXR1cm4gIndzaWwvYWN0aW9ucy9Xc2lsQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgQWN0aW9uIG5ld0FjdGlvbihIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgU3RyaW5nIG5vZGVJRCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpOwotICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gbm9kZU1hbmFnZXIuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRCkpLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgaWYgKHNlbGVjdGVkVG9vbCBpbnN0YW5jZW9mIExpc3RVRERJU2VydmljZXNUb29sKQotICAgICAgcmV0dXJuIG5ldyBBZGRTZXJ2aWNlVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24oY29udHJvbGxlcik7Ci0gICAgZWxzZSBpZiAoc2VsZWN0ZWRUb29sIGluc3RhbmNlb2YgTGlzdFVERElCdXNpbmVzc1Rvb2wpCi0gICAgICByZXR1cm4gbmV3IEFkZEJ1c2luZXNzVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24oY29udHJvbGxlcik7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG5ldyBOdWxsQWN0aW9uKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBjcmVhdGVSZWdpc3RyeUluVURESVBlcnNwZWN0aXZlKFN0cmluZyBpbnF1aXJ5QVBJLCBTdHJpbmcgcHVibGlzaEFQSSwgU3RyaW5nIHJlZ2lzdHJ5TmFtZSkKLSAgewotICAgIFZlY3RvciByZWdpc3RyeU5vZGVzID0gZ2V0UmVnaXN0cnlOb2Rlc0J5SW5xdWlyeVVSTChpbnF1aXJ5QVBJKTsKLSAgICBpZiAocmVnaXN0cnlOb2RlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIEFsd2F5cyBhdHRlbXB0IHRvIHVzZSBhbiBleGlzdGluZyByZWdpc3RyeS4KLSAgICAgIE5vZGUgcmVnaXN0cnlOb2RlID0gKE5vZGUpIHJlZ2lzdHJ5Tm9kZXMuZWxlbWVudEF0KDApOwotICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSByZWdpc3RyeU5vZGUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgIG5vZGVNYW5hZ2VyLnNldFNlbGVjdGVkTm9kZUlkKHJlZ2lzdHJ5Tm9kZS5nZXROb2RlSWQoKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgLy8gb3BlbiB0aGUgcmVnaXN0cnkgaWYgaXQgaXMgbm90IGFscmVhZHkgb3BlbmVkIGluIHRoZSBVRERJIHBlcnNwZWN0aXZlCi0gICAgT3BlblJlZ2lzdHJ5QWN0aW9uIG9wZW5SZWdBY3Rpb24gPSBuZXcgT3BlblJlZ2lzdHJ5QWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAvLyBwb3B1bGF0ZSB0aGUgcHJvcGVydHkgdGFibGUKLSAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IG9wZW5SZWdBY3Rpb24uZ2V0UHJvcGVydHlUYWJsZSgpOwotICAgIGlmIChWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcocmVnaXN0cnlOYW1lKSkKLSAgICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuUkVHSVNUUllfTkFNRSwgcmVnaXN0cnlOYW1lKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKFZhbGlkYXRvci52YWxpZGF0ZVVSTChpbnF1aXJ5QVBJKSkKLSAgICAgIHByb3BlcnR5VGFibGUucHV0KFVERElBY3Rpb25JbnB1dHMuSU5RVUlSWV9VUkwsIGlucXVpcnlBUEkpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBydW4gdGhlIGFjdGlvbgotICAgIGlmICghb3BlblJlZ0FjdGlvbi5ydW4oKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHByb3RlY3RlZCBWZWN0b3IgZ2V0UmVnaXN0cnlOb2Rlc0J5SW5xdWlyeVVSTChTdHJpbmcgaW5xdWlyeVVSTCkKLSAgewotICAgIFZlY3RvciByZWdpc3RyeU5vZGVzID0gbnVsbDsKLSAgICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gY29udHJvbGxlcl8uZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgIFVERElNYWluTm9kZSB1ZGRpTWFpbk5vZGUgPSAoVURESU1haW5Ob2RlKSAobmF2aWdhdG9yTWFuYWdlci5nZXRSb290Tm9kZSgpKTsKLSAgICBWZWN0b3IgY2hpbGROb2RlcyA9IHVkZGlNYWluTm9kZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgIE5vZGUgY2hpbGROb2RlID0gKE5vZGUpIGNoaWxkTm9kZXMuZWxlbWVudEF0KGkpOwotICAgICAgaWYgKGNoaWxkTm9kZSBpbnN0YW5jZW9mIFJlZ2lzdHJ5Tm9kZSkKLSAgICAgIHsKLSAgICAgICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KSBjaGlsZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKHJlZ0VsZW1lbnQuZ2V0SW5xdWlyeVVSTCgpLmVxdWFscyhpbnF1aXJ5VVJMKSkKLSAgICAgICAgewotICAgICAgICAgIGlmIChyZWdpc3RyeU5vZGVzID09IG51bGwpCi0gICAgICAgICAgICByZWdpc3RyeU5vZGVzID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgIHJlZ2lzdHJ5Tm9kZXMuYWRkRWxlbWVudChjaGlsZE5vZGUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZWdpc3RyeU5vZGVzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9BZGRXU0RMU2VydmljZVRvRmF2b3JpdGVzQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9BZGRXU0RMU2VydmljZVRvRmF2b3JpdGVzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZDFjOGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQWRkV1NETFNlcnZpY2VUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUudHJhbnNmb3JtZXIuSVRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy5Xc2lsTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC5Xc2lsV3NkbFNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC50cmFuc2Zvcm1lci5XU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyOwotCi1wdWJsaWMgY2xhc3MgQWRkV1NETFNlcnZpY2VUb0Zhdm9yaXRlc0FjdGlvbiBleHRlbmRzIEFkZFRvRmF2b3JpdGVzQWN0aW9uCi17Ci0gIHB1YmxpYyBBZGRXU0RMU2VydmljZVRvRmF2b3JpdGVzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZmF2b3JpdGVFeGlzdHMoKQotICB7Ci0gICAgU3RyaW5nIHdzZGxVUkwgPSBnZXRXc2RsVXJsKCk7Ci0gICAgSGFzaHRhYmxlIHRhYmxlID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1dTRExfVVJMLCB3c2RsVVJMKTsKLSAgICByZXR1cm4gZmF2b3JpdGVFeGlzdHModGFibGUsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX1NFUlZJQ0VfRk9MREVSX05PREUpOwotICB9Ci0KLSAgcHVibGljIElUcmFuc2Zvcm1lcltdIGdldFRyYW5zZm9ybWVycygpCi0gIHsKLSAgICBJVHJhbnNmb3JtZXJbXSBwYXJlbnRUcmFuc2Zvcm1lcnMgPSBzdXBlci5nZXRUcmFuc2Zvcm1lcnMoKTsKLSAgICBJVHJhbnNmb3JtZXJbXSB0cmFuc2Zvcm1lcnMgPSBuZXcgSVRyYW5zZm9ybWVyW3BhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgrMV07Ci0gICAgU3lzdGVtLmFycmF5Y29weShwYXJlbnRUcmFuc2Zvcm1lcnMsIDAsIHRyYW5zZm9ybWVycywgMCwgcGFyZW50VHJhbnNmb3JtZXJzLmxlbmd0aCk7Ci0gICAgdHJhbnNmb3JtZXJzW3RyYW5zZm9ybWVycy5sZW5ndGgtMV0gPSBuZXcgV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lcihjb250cm9sbGVyXywgV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9XU0RMX1NFUlZJQ0VTLCBBY3Rpb25JbnB1dHMuVklFV0lELCBXU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyLldTRExfU0VSVklDRSk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybWVyczsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICBTdHJpbmcgd3NkbFVSTCA9IGdldFdzZGxVcmwoKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfV1NETF9VUkwsIHdzZGxVUkwpOwotICAgIGlmIChpc011bHRpcGxlTGlua0FjdGlvbigpICYmIGZhdm9yaXRlRXhpc3RzKHRhYmxlLCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NETF9TRVJWSUNFX0ZPTERFUl9OT0RFKSkKLSAgICB7Ci0gICAgICB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0ZBVk9SSVRFU19BTFJFQURZX0VYSVNUUyIsIHdzZGxVUkwpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGFkZFRvRmF2b3JpdGVzKHRhYmxlLCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NETF9TRVJWSUNFX0ZPTERFUl9OT0RFKSkKLSAgICB7Ci0gICAgICB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fQUREX1RPX0ZBVk9SSVRFU19TVUNDRVNTRlVMIiwgd3NkbFVSTCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0FERF9UT19GQVZPUklURVMiLCB3c2RsVVJMKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0V3NkbFVybCgpCi0gIHsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIGludCB2aWV3SUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVklFV0lEKSk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0Tm9kZShub2RlSUQpOwotICAgIFdzaWxFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IChXc2lsRWxlbWVudCkgc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgV3NpbFdzZGxTZXJ2aWNlRWxlbWVudCB3c2lsV3NkbFNlcnZpY2VFbGVtZW50OwotICAgIE9iamVjdCBvYmogPSBzZWxlY3RlZEVsZW1lbnQuZ2V0QWxsV1NETFNlcnZpY2VzKCkuZ2V0RWxlbWVudFdpdGhWaWV3SWQodmlld0lEKS5nZXRPYmplY3QoKTsKLSAgICB3c2lsV3NkbFNlcnZpY2VFbGVtZW50ID0gKFdzaWxXc2RsU2VydmljZUVsZW1lbnQpIG9iajsKLSAgICByZXR1cm4gd3NpbFdzZGxTZXJ2aWNlRWxlbWVudC5nZXRXU0RMU2VydmljZVVSTCgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9BZGRXU0lMVG9GYXZvcml0ZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL0FkZFdTSUxUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTkxNDJlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL0FkZFdTSUxUb0Zhdm9yaXRlc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc01vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC5Xc2lsRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5XU0lMUGVyc3BlY3RpdmU7Ci0KLXB1YmxpYyBjbGFzcyBBZGRXU0lMVG9GYXZvcml0ZXNBY3Rpb24gZXh0ZW5kcyBBZGRUb0Zhdm9yaXRlc0FjdGlvbgotewotICBwdWJsaWMgQWRkV1NJTFRvRmF2b3JpdGVzQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZmF2b3JpdGVFeGlzdHMoKQotICB7Ci0gICAgU3RyaW5nIHdzaWxVUkwgPSBnZXRXc2lsVXJsKCk7Ci0gICAgSGFzaHRhYmxlIHRhYmxlID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIHRhYmxlLnB1dChGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5QUk9QX1dTSUxfVVJMLCB3c2lsVVJMKTsKLSAgICByZXR1cm4gZmF2b3JpdGVFeGlzdHModGFibGUsIEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9XU0lMX0ZPTERFUl9OT0RFKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICBTdHJpbmcgd3NpbFVSTCA9IGdldFdzaWxVcmwoKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgdGFibGUucHV0KEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlBST1BfV1NJTF9VUkwsIHdzaWxVUkwpOwotICAgIGlmIChpc011bHRpcGxlTGlua0FjdGlvbigpICYmIGZhdm9yaXRlRXhpc3RzKHRhYmxlLCBGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NJTF9GT0xERVJfTk9ERSkpCi0gICAgewotICAgICAgd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2Uod3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9GQVZPUklURVNfQUxSRUFEWV9FWElTVFMiLCB3c2lsVVJMKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChhZGRUb0Zhdm9yaXRlcyh0YWJsZSwgRmF2b3JpdGVzTW9kZWxDb25zdGFudHMuUkVMX1dTSUxfRk9MREVSX05PREUpKQotICAgIHsKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19BRERfVE9fRkFWT1JJVEVTX1NVQ0NFU1NGVUwiLCB3c2lsVVJMKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfQUREX1RPX0ZBVk9SSVRFUyIsIHdzaWxVUkwpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBnZXRXc2lsVXJsKCkKLSAgewotICAgIGludCBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0Tm9kZShub2RlSUQpOwotICAgIFdzaWxFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IChXc2lsRWxlbWVudCkgc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgcmV0dXJuIHNlbGVjdGVkRWxlbWVudC5nZXRXc2lsVXJsKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL0NsZWFyV1NJTEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQ2xlYXJXU0lMQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYWZhMzguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvQ2xlYXJXU0lMQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkNsZWFyTm9kZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLQotcHVibGljIGNsYXNzIENsZWFyV1NJTEFjdGlvbiBleHRlbmRzIENsZWFyTm9kZUFjdGlvbiB7Ci0KLSAgICBwdWJsaWMgQ2xlYXJXU0lMQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgICB7Ci0gICAgICAgIHN1cGVyKGNvbnRyb2xsZXIsIGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKSk7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuTk9ERUlELCBTdHJpbmcudmFsdWVPZihjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlSWQoKSkpOwotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCkKLSAgICB7Ci0gICAgICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigid3NpbC9hY3Rpb25zL0NsZWFyV1NJTEFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChub2RlSUQpOwotICAgICAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKSB7Ci0gICAgICAgIHJldHVybiAid3NpbE5hdmlnYXRvckNvbnRlbnQiOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkgewotICAgICAgICByZXR1cm4gIndzaWwvd3NpbF9uYXZpZ2F0b3JfY29udGVudC5qc3AiOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclZhcigpIHsKLSAgICAgICAgcmV0dXJuICJ3c2lsUHJvcGVydGllc0NvbnRhaW5lciI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpIHsKLSAgICAgICAgcmV0dXJuICJ3c2lsL3dzaWxfcHJvcGVydGllc19jb250YWluZXIuanNwIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKSB7Ci0gICAgICAgIHJldHVybiAid3NpbFN0YXR1c0NvbnRlbnQiOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKSB7Ci0gICAgICAgIHJldHVybiAid3NpbC93c2lsX3N0YXR1c19jb250ZW50LmpzcCI7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9JbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9JbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYzBkYzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5XU0RMRmlsZU5hbWVIZWxwZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS51dGlsLlVkZGk0akhlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuV3NpbEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxVZGRpU2VydmljZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxXc2RsU2VydmljZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuTGlzdFVERElTZXJ2aWNlc1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuTGlzdFdTRExTZXJ2aWNlc1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLQotcHVibGljIGNsYXNzIEltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb24gZXh0ZW5kcyBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24KLXsKLSAgcHJpdmF0ZSBEZWZpbml0aW9uIGRlZl87Ci0gIHByaXZhdGUgU3RyaW5nIHdzZGxGaWxlTmFtZV87Ci0gIHByaXZhdGUgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXJfOwotCi0gIHB1YmxpYyBJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICAgIG5vZGVNYW5hZ2VyXyA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJZCwgaW50IHRvb2xJZCwgaW50IHZpZXdJZCwgaW50IHZpZXdUb29sSWQpCi0gIHsKLSAgICByZXR1cm4gSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkLCB0b29sSWQsIHZpZXdJZCwgdmlld1Rvb2xJZCwgIndzaWwvYWN0aW9ucy9JbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uSlNQLmpzcCIpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gd3JpdGUoT3V0cHV0U3RyZWFtIG9zKQotICB7Ci0gICAgaWYgKGRlZl8gIT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gd3JpdGVXU0RMRGVmaW5pdGlvbihvcywgZGVmXyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXREZWZhdWx0RmlsZU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHdzZGxGaWxlTmFtZV87Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gZ2V0V1NETEZyb21VUkwoKQotICB7Ci0gICAgaW50IG5vZGVJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIGludCB2aWV3SUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5WSUVXSUQpKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJRCk7Ci0gICAgV3NpbEVsZW1lbnQgd3NpbEVsZW1lbnQgPSAoV3NpbEVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgTGlzdE1hbmFnZXIgd3NpbFNlcnZpY2VzID0gd3NpbEVsZW1lbnQuZ2V0QWxsV1NETFNlcnZpY2VzKCk7Ci0gICAgTGlzdEVsZW1lbnQgbGUgPSB3c2lsU2VydmljZXMuZ2V0RWxlbWVudFdpdGhWaWV3SWQodmlld0lEKTsKLSAgICBXc2lsV3NkbFNlcnZpY2VFbGVtZW50IHNlcnZpY2UgPSAoV3NpbFdzZGxTZXJ2aWNlRWxlbWVudClsZS5nZXRPYmplY3QoKTsKLSAgICBTdHJpbmcgd3NkbFVSTCA9IHNlcnZpY2UuZ2V0V1NETFNlcnZpY2VVUkwoKTsKLSAgICB3c2RsRmlsZU5hbWVfID0gV1NETEZpbGVOYW1lSGVscGVyLmdldFdTRExGaWxlTmFtZSh3c2RsVVJMKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBkZWZfID0gKG5ldyBVZGRpNGpIZWxwZXIoKSkuZ2V0V1NETERlZmluaXRpb24od3NkbFVSTCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgICB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZShlLmdldE1lc3NhZ2UoKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIGdldFdTRExGcm9tVURESVJlZ2lzdHJ5KCkKLSAgewotICAgIGludCBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBpbnQgdmlld0lEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVklFV0lEKSk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0Tm9kZShub2RlSUQpOwotICAgIFdzaWxFbGVtZW50IHdzaWxFbGVtZW50ID0gKFdzaWxFbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIExpc3RNYW5hZ2VyIHdzaWxTZXJ2aWNlcyA9IHdzaWxFbGVtZW50LmdldEFsbFVERElTZXJ2aWNlcygpOwotICAgIExpc3RFbGVtZW50IGxlID0gd3NpbFNlcnZpY2VzLmdldEVsZW1lbnRXaXRoVmlld0lkKHZpZXdJRCk7Ci0gICAgV3NpbFVkZGlTZXJ2aWNlRWxlbWVudCBzZXJ2aWNlID0gKFdzaWxVZGRpU2VydmljZUVsZW1lbnQpbGUuZ2V0T2JqZWN0KCk7Ci0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIHdzZGxGaWxlTmFtZV8gPSBzZXJ2aWNlLmdldE5hbWUoKSArICIud3NkbCI7Ci0gICAgVWRkaTRqSGVscGVyIHVkZGk0akhlbHBlciA9IG5ldyBVZGRpNGpIZWxwZXIoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBVRERJUHJveHkgcHJveHkgPSBudWxsOwotICAgICAgU3RyaW5nIGlucXVpcnlVUkwgPSBzZXJ2aWNlLmdldFVERElTZXJ2aWNlSW5xdWlyeUFQSSgpOwotICAgICAgaWYgKGlucXVpcnlVUkwgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcHJveHkgPSBuZXcgVURESVByb3h5KCk7Ci0gICAgICAgIHByb3h5LnNldElucXVpcnlVUkwoaW5xdWlyeVVSTCk7Ci0gICAgICB9Ci0gICAgICBkZWZfID0gdWRkaTRqSGVscGVyLmdldFdTRExEZWZpbml0aW9uKHVkZGk0akhlbHBlci5nZXRXU0RMKHNlcnZpY2UuZ2V0U2VydmljZURlZmluaXRpb24oKSwgcHJveHkpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIHRoZSB3c2RsIHJlcHJlc2VudGluZyB0aGlzIHNlcnZpY2UgaXMgdW5yZWFjaGFibGUgdGhyb3VnaCB0aGUgVURESQotICAgICAgLy8gcmVnaXN0cnkuIFdlIHdpbGwgdHJ5IHVzaW5nIHRoZSBkaXNjb3ZlcnkgVVJMIGluc3RlYWQuCi0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgZGVmXyA9IHVkZGk0akhlbHBlci5nZXRXU0RMRGVmaW5pdGlvbihzZXJ2aWNlLmdldFVERElTZXJ2aWNlRGlzY292ZXJ5VVJMKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZTIpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgICAvLyBpZiB0aGUgZGlzY292ZXJ5VVJMIGFsc28gZmFpbHMsIHJldHVybiBhbiBlcnJvcgotICAgICAgd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmFkZE1lc3NhZ2UoZS5nZXRNZXNzYWdlKCkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0Tm9kZShub2RlSUQpOwotICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgaWYgKHNlbGVjdGVkVG9vbCBpbnN0YW5jZW9mIExpc3RXU0RMU2VydmljZXNUb29sKQotICAgICAgcmV0dXJuIGdldFdTRExGcm9tVVJMKCk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0ZWRUb29sIGluc3RhbmNlb2YgTGlzdFVERElTZXJ2aWNlc1Rvb2wpCi0gICAgICByZXR1cm4gZ2V0V1NETEZyb21VRERJUmVnaXN0cnkoKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRQYWdlKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL0ltcG9ydFdTSUxUb0ZpbGVTeXN0ZW1BY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL0ltcG9ydFdTSUxUb0ZpbGVTeXN0ZW1BY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE3NWJjYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9JbXBvcnRXU0lMVG9GaWxlU3lzdGVtQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLldTSUxEb2N1bWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5JbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxFbGVtZW50OwotCi1wdWJsaWMgY2xhc3MgSW1wb3J0V1NJTFRvRmlsZVN5c3RlbUFjdGlvbiBleHRlbmRzIEltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbiB7Ci0gICAgcHJpdmF0ZSBXU0lMRG9jdW1lbnQgd3NpbERvY187Ci0gICAgcHJpdmF0ZSBXc2lsRWxlbWVudCB3c2lsRWxlbWVudF87Ci0gICAgcHJpdmF0ZSBOb2RlTWFuYWdlciBub2RlTWFuYWdlcl87Ci0KLSAgICBwdWJsaWMgSW1wb3J0V1NJTFRvRmlsZVN5c3RlbUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKLSAgICAgICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgICAgIG5vZGVNYW5hZ2VyXyA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSWQsaW50IHRvb2xJZCxpbnQgdmlld0lkLGludCB2aWV3VG9vbElkKQotICAgIHsKLSAgICAgIHJldHVybiBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQsdG9vbElkLHZpZXdJZCx2aWV3VG9vbElkLCJ3c2lsL2FjdGlvbnMvSW1wb3J0V1NJTFRvRmlsZVN5c3RlbUFjdGlvbkpTUC5qc3AiKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiB3cml0ZShPdXRwdXRTdHJlYW0gb3MpIHsKLSAgICAgICAgaWYgKHdzaWxEb2NfICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiB3cml0ZVdTSUxEb2N1bWVudChvcywgd3NpbERvY18pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXREZWZhdWx0RmlsZU5hbWUoKSB7Ci0gICAgICAgIFN0cmluZyB3c2lsRmlsZU5hbWUgPSB3c2lsRWxlbWVudF8uZ2V0V3NpbFVybCgpOwotICAgICAgICByZXR1cm4gd3NpbEZpbGVOYW1lLnN1YnN0cmluZyh3c2lsRmlsZU5hbWUubGFzdEluZGV4T2YoJy8nKSArIDEsIHdzaWxGaWxlTmFtZS5sZW5ndGgoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gcnVuKCkgewotICAgICAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0KLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlcl8uZ2V0Tm9kZShub2RlSUQpOwotICAgICAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50KSB7Ci0gICAgICAgICAgICB3c2lsRWxlbWVudF8gPSAoV3NpbEVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50OwotICAgICAgICAgICAgd3NpbERvY18gPSAoKFdzaWxFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0V1NJTERvY3VtZW50KCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFZhcigpCi0gICAgewotICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCkKLSAgICB7Ci0gICAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFBhZ2UoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9NdWx0aXBsZUxpbmtBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL011bHRpcGxlTGlua0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjRjNDlhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL011bHRpcGxlTGlua0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zOwotCi1pbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5MaW5rQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy5Xc2lsQWN0aW9uSW5wdXRzOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgTXVsdGlwbGVMaW5rQWN0aW9uIGV4dGVuZHMgTGlua0FjdGlvbgotewotICBwdWJsaWMgTXVsdGlwbGVMaW5rQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc0xpbmtQYXJhbWV0ZXJzKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KQotICB7Ci0gICAgU3RyaW5nIGlzTXVsdGlwbGVMaW5rQWN0aW9uID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoV3NpbEFjdGlvbklucHV0cy5NVUxUSVBMRV9MSU5LX0FDVElPTik7Ci0gICAgaWYgKGlzTXVsdGlwbGVMaW5rQWN0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFdzaWxBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04sIGlzTXVsdGlwbGVMaW5rQWN0aW9uKTsKLSAgICAgIHJldHVybiBwcm9jZXNzTXVsdGlwbGVMaW5rQWN0aW9uUGFyYW1ldGVycyhyZXF1ZXN0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnJlbW92ZShXc2lsQWN0aW9uSW5wdXRzLk1VTFRJUExFX0xJTktfQUNUSU9OKTsKLSAgICAgIFN0cmluZyBub2RlSURTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICAgIFN0cmluZyB0b29sSURTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuVE9PTElEKTsKLSAgICAgIFN0cmluZyB2aWV3SURTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuVklFV0lEKTsKLSAgICAgIFN0cmluZyB2aWV3VG9vbElEU3RyaW5nID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlZJRVdUT09MSUQpOwotICAgICAgaWYgKG5vZGVJRFN0cmluZyAhPSBudWxsKQotICAgICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgbm9kZUlEU3RyaW5nKTsKLSAgICAgIGlmICh0b29sSURTdHJpbmcgIT0gbnVsbCkKLSAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5UT09MSUQsIHRvb2xJRFN0cmluZyk7Ci0gICAgICBpZiAodmlld0lEU3RyaW5nICE9IG51bGwpCi0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuVklFV0lELCB2aWV3SURTdHJpbmcpOwotICAgICAgaWYgKHZpZXdUb29sSURTdHJpbmcgIT0gbnVsbCkKLSAgICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5WSUVXVE9PTElELCB2aWV3VG9vbElEU3RyaW5nKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNdWx0aXBsZUxpbmtBY3Rpb25QYXJhbWV0ZXJzKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KQotICB7Ci0gICAgU3RyaW5nIG5vZGVJRCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIFN0cmluZ1tdIHZpZXdJRHMgPSByZXF1ZXN0LmdldFBhcmFtZXRlclZhbHVlcyhBY3Rpb25JbnB1dHMuVklFV0lEKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgbm9kZUlEKTsKLSAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoQWN0aW9uSW5wdXRzLlZJRVdJRCwgdmlld0lEcyk7Ci0gICAgaWYgKHZpZXdJRHMubGVuZ3RoID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBib29sZWFuIGlzTXVsdGlwbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIHJldHVybiBwcm9wZXJ0eVRhYmxlXy5jb250YWluc0tleShXc2lsQWN0aW9uSW5wdXRzLk1VTFRJUExFX0xJTktfQUNUSU9OKTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIFN0cmluZ1tdIGdldFZpZXdJZHMoKQotICB7Ci0gICAgT2JqZWN0IG9iamVjdCA9IHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVklFV0lEKTsKLSAgICBpZiAob2JqZWN0ID09IG51bGwpCi0gICAgICByZXR1cm4gbmV3IFN0cmluZ1swXTsKLSAgICBlbHNlIGlmIChvYmplY3QuZ2V0Q2xhc3MoKS5pc0FycmF5KCkpCi0gICAgICByZXR1cm4gKFN0cmluZ1tdKW9iamVjdDsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbmV3IFN0cmluZ1tdIHsoU3RyaW5nKW9iamVjdH07Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBydW4oKQotICB7Ci0gICAgcmV0dXJuIChpc011bHRpcGxlTGlua0FjdGlvbigpKSA/IGV4ZWN1dGVNdWx0aXBsZUxpbmtBY3Rpb24oKSA6IGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBleGVjdXRlTXVsdGlwbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0gICAgU3RyaW5nW10gdmlld0lkcyA9IGdldFZpZXdJZHMoKTsKLSAgICBpZiAodmlld0lkcyAhPSBudWxsICYmIHZpZXdJZHMubGVuZ3RoID4gMCkKLSAgICB7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZpZXdJZHMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIHByb3BlcnR5VGFibGVfLnB1dChBY3Rpb25JbnB1dHMuVklFV0lELCB2aWV3SWRzW2ldKTsKLSAgICAgICAgaWYgKGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCkpCi0gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KEFjdGlvbklucHV0cy5WSUVXSUQsIHZpZXdJZHMpOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYWJzdHJhY3QgYm9vbGVhbiBleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvTnVsbEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvTnVsbEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGNmNTY0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL051bGxBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkFjdGlvbjsKLQotcHVibGljIGNsYXNzIE51bGxBY3Rpb24gZXh0ZW5kcyBBY3Rpb24KLXsKLSAgcHVibGljIE51bGxBY3Rpb24oKQotICB7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBwb3B1bGF0ZVByb3BlcnR5VGFibGUoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvT3BlbldTSUxBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL09wZW5XU0lMQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNWJkMWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvT3BlbldTSUxBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwODExMTkgICAyNTUzNzQgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBXU0UgZG9lcyBub3QgaGFuZGxlIHV0Zi04IGNoYXJhY3RlcnMgaW4gVVJMcwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLldTSUxEb2N1bWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Gb3JtQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlVSTFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy5Xc2lsQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy5Xc2lsTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5XZWJTZXJ2aWNlc1BhcnNlckV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZUVudGl0eTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci0KLXB1YmxpYyBjbGFzcyBPcGVuV1NJTEFjdGlvbiBleHRlbmRzIEZvcm1BY3Rpb24KLXsKLQotICBwdWJsaWMgT3BlbldTSUxBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzUGFyc2VkUmVzdWx0cyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHdzaWxVUkwgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFdzaWxBY3Rpb25JbnB1dHMuV1NJTF9VUkwpOwotICAgIFN0cmluZyBpbnNwZWN0aW9uVHlwZSA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoV3NpbEFjdGlvbklucHV0cy5XU0lMX0lOU1BFQ1RJT05fVFlQRSk7Ci0gICAgRm9ybVRvb2wgZm9ybVRvb2wgPSBnZXRTZWxlY3RlZEZvcm1Ub29sKCk7Ci0gICAgcHJvcGVydHlUYWJsZV8ucHV0KFdzaWxBY3Rpb25JbnB1dHMuV1NJTF9VUkwsIHdzaWxVUkwpOwotICAgIGlmIChpbnNwZWN0aW9uVHlwZSAhPSBudWxsICYmIGluc3BlY3Rpb25UeXBlLmxlbmd0aCgpID4gMCkKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChXc2lsQWN0aW9uSW5wdXRzLldTSUxfSU5TUEVDVElPTl9UWVBFLCBpbnNwZWN0aW9uVHlwZSk7Ci0gICAgZm9ybVRvb2wudXBkYXRlUHJvcGVydHlUYWJsZShwcm9wZXJ0eVRhYmxlXyk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgRm9ybVRvb2wgZ2V0U2VsZWN0ZWRGb3JtVG9vbCgpCi0gIHsKLSAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgcmV0dXJuIChGb3JtVG9vbCl3c2lsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIFN0cmluZyB3c2lsVVJMID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoV3NpbEFjdGlvbklucHV0cy5XU0lMX1VSTCk7Ci0gICAgd3NpbFVSTCA9IFVSTFV0aWxzLmVuY29kZVVSTFN0cmluZyh3c2lsVVJMKTsgICAgCi0gICAgaW50IGluc3BlY3Rpb25UeXBlID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKXByb3BlcnR5VGFibGVfLmdldChXc2lsQWN0aW9uSW5wdXRzLldTSUxfSU5TUEVDVElPTl9UWVBFKSk7Ci0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtc2dRdWV1ZSA9IHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzaWxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgcm9vdE5vZGUgPSBub2RlTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgIFRyZWVFbGVtZW50IHJvb3QgPSByb290Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIFdzaWxFbGVtZW50IHdzaWxFbGVtZW50ID0gZ2V0T3BlbmVkV1NJTChyb290LCB3c2lsVVJMKTsKLSAgICBpZiAod3NpbEVsZW1lbnQgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBXZWJTZXJ2aWNlc1BhcnNlckV4dCBwYXJzZXIgPSBuZXcgV2ViU2VydmljZXNQYXJzZXJFeHQod3NpbFVSTCk7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgcGFyc2VyLnBhcnNlKFdlYlNlcnZpY2VzUGFyc2VyLlBBUlNFX05PTkUpOwotICAgICAgICBXZWJTZXJ2aWNlRW50aXR5IHdzRW50aXR5ID0gcGFyc2VyLmdldFdlYlNlcnZpY2VFbnRpdHlCeVVSSSh3c2lsVVJMKTsKLSAgICAgICAgaW50IHR5cGUgPSB3c0VudGl0eS5nZXRUeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IFdlYlNlcnZpY2VFbnRpdHkuVFlQRV9IVE1MKQotICAgICAgICAgIHJldHVybiBvcGVuSFRNTCh3c0VudGl0eS5nZXRDaGlsZHJlbigpLCBpbnNwZWN0aW9uVHlwZSk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gV2ViU2VydmljZUVudGl0eS5UWVBFX1dTSUwpCi0gICAgICAgICAgcmV0dXJuIG9wZW5XU0lMKHdzaWxVUkwsIHBhcnNlci5nZXRXU0lMRG9jdW1lbnQod3NpbFVSTCksIGluc3BlY3Rpb25UeXBlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIG1zZ1F1ZXVlLmFkZE1lc3NhZ2Uod3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1dTSUxfVVJMIiwgd3NpbFVSTCkpOwotICAgICAgfQotICAgICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgICAgewotICAgICAgICBtc2dRdWV1ZS5hZGRNZXNzYWdlKHQuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHByZXNlbGVjdFdTSUxOb2RlKG5vZGVNYW5hZ2VyLCByb290Tm9kZS5nZXRDaGlsZE5vZGUod3NpbEVsZW1lbnQpLmdldE5vZGVJZCgpLCBpbnNwZWN0aW9uVHlwZSk7Ci0gICAgICBtc2dRdWV1ZS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfV1NJTF9BTFJFQURZX09QRU5FRCIsIHdzaWxVUkwpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBvcGVuSFRNTChMaXN0IHdzaWxzLCBpbnQgaW5zcGVjdGlvblR5cGUpCi0gIHsKLSAgICBpbnQgbm9kZUlkID0gLTE7Ci0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtc2dRdWV1ZSA9IHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzaWxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgcm9vdE5vZGUgPSBub2RlTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgIFRyZWVFbGVtZW50IHJvb3QgPSByb290Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIGZvciAoSXRlcmF0b3IgaXQgPSB3c2lscy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIFdlYlNlcnZpY2VFbnRpdHkgd3NpbEVudGl0eSA9IChXZWJTZXJ2aWNlRW50aXR5KWl0Lm5leHQoKTsKLSAgICAgIFN0cmluZyB3c2lsVVJMID0gd3NpbEVudGl0eS5nZXRVUkkoKTsKLSAgICAgIFdzaWxFbGVtZW50IHdzaWxFbGVtZW50ID0gZ2V0T3BlbmVkV1NJTChyb290LCB3c2lsVVJMKTsKLSAgICAgIGlmICh3c2lsRWxlbWVudCA9PSBudWxsKQotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIFdTSUxEb2N1bWVudCB3c2lsRG9jID0gV1NJTERvY3VtZW50Lm5ld0luc3RhbmNlKCk7Ci0gICAgICAgICAgd3NpbERvYy5yZWFkKHdzaWxVUkwpOwotICAgICAgICAgIHdzaWxFbGVtZW50ID0gbmV3IFdzaWxFbGVtZW50KHdzaWxVUkwsIHJvb3QuZ2V0TW9kZWwoKSwgd3NpbERvYywgd3NpbFVSTCk7Ci0gICAgICAgICAgcm9vdC5jb25uZWN0KHdzaWxFbGVtZW50LCBXc2lsTW9kZWxDb25zdGFudHMuUkVMX1dTSUwsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgICAgICAgbm9kZUlkID0gcm9vdE5vZGUuZ2V0Q2hpbGROb2RlKHdzaWxFbGVtZW50KS5nZXROb2RlSWQoKTsKLSAgICAgICAgICBtc2dRdWV1ZS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19PUEVOX1dTSUxfU1VDQ0VTU0ZVTCIsIHdzaWxVUkwpKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICAgIHsKLSAgICAgICAgICBtc2dRdWV1ZS5hZGRNZXNzYWdlKHQuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBtc2dRdWV1ZS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfV1NJTF9BTFJFQURZX09QRU5FRCIsIHdzaWxVUkwpKTsKLSAgICAgICAgbm9kZUlkID0gcm9vdE5vZGUuZ2V0Q2hpbGROb2RlKHdzaWxFbGVtZW50KS5nZXROb2RlSWQoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG5vZGVJZCAhPSAtMSkKLSAgICB7Ci0gICAgICBwcmVzZWxlY3RXU0lMTm9kZShub2RlTWFuYWdlciwgbm9kZUlkLCBpbnNwZWN0aW9uVHlwZSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIG9wZW5XU0lMKFN0cmluZyB3c2lsVVJMLCBXU0lMRG9jdW1lbnQgd3NpbERvYywgaW50IGluc3BlY3Rpb25UeXBlKQotICB7Ci0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtc2dRdWV1ZSA9IHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzaWxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgcm9vdE5vZGUgPSBub2RlTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgIFRyZWVFbGVtZW50IHJvb3QgPSByb290Tm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIFdzaWxFbGVtZW50IHdzaWxFbGVtZW50ID0gbmV3IFdzaWxFbGVtZW50KHdzaWxVUkwsIHJvb3QuZ2V0TW9kZWwoKSwgd3NpbERvYywgd3NpbFVSTCk7Ci0gICAgcm9vdC5jb25uZWN0KHdzaWxFbGVtZW50LCBXc2lsTW9kZWxDb25zdGFudHMuUkVMX1dTSUwsIE1vZGVsQ29uc3RhbnRzLlJFTF9PV05FUik7Ci0gICAgaW50IG5vZGVJZCA9IHJvb3ROb2RlLmdldENoaWxkTm9kZSh3c2lsRWxlbWVudCkuZ2V0Tm9kZUlkKCk7Ci0gICAgbXNnUXVldWUuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fT1BFTl9XU0lMX1NVQ0NFU1NGVUwiLCB3c2lsVVJMKSk7Ci0gICAgcHJlc2VsZWN0V1NJTE5vZGUobm9kZU1hbmFnZXIsIG5vZGVJZCwgaW5zcGVjdGlvblR5cGUpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHByZXNlbGVjdFdTSUxOb2RlKE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLCBpbnQgbm9kZUlkLCBpbnQgaW5zcGVjdGlvblR5cGUpCi0gIHsKLSAgICBub2RlTWFuYWdlci5zZXRTZWxlY3RlZE5vZGVJZChub2RlSWQpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0Tm9kZShub2RlSWQpOwotICAgIHNlbGVjdGVkTm9kZS5zZXRWaWV3SWQoQWN0aW9uSW5wdXRzLlZJRVdUT09MSURfREVGQVVMVCk7Ci0gICAgVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICB0b29sTWFuYWdlci5zZXRTZWxlY3RlZFRvb2xJZChpbnNwZWN0aW9uVHlwZSk7Ci0gICAgYWRkVG9IaXN0b3J5KEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9XU0lMLCBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGVJZCwgaW5zcGVjdGlvblR5cGUsIEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCwgQWN0aW9uSW5wdXRzLlZJRVdUT09MSURfREVGQVVMVCwgdHJ1ZSkpOyAgICAgICAgCi0gIH0KLQotICBwcml2YXRlIFdzaWxFbGVtZW50IGdldE9wZW5lZFdTSUwoVHJlZUVsZW1lbnQgcm9vdCwgU3RyaW5nIHdzaWxVUkwpCi0gIHsKLSAgICBFbnVtZXJhdGlvbiBlID0gcm9vdC5nZXRFbGVtZW50cyhXc2lsTW9kZWxDb25zdGFudHMuUkVMX1dTSUwpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFdzaWxFbGVtZW50IHdzaWxFbGVtZW50ID0gKFdzaWxFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIGlmICh3c2lsRWxlbWVudC5nZXRXc2lsVXJsKCkuZXF1YWxzKHdzaWxVUkwpKQotICAgICAgICByZXR1cm4gd3NpbEVsZW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9PcGVuV1NJTExpbmtBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL09wZW5XU0lMTGlua0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGRiNmViLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL09wZW5XU0lMTGlua0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuV3NpbEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxXc2lsTGlua0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnRyYW5zZm9ybWVyLldTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXI7Ci0KLXB1YmxpYyBjbGFzcyBPcGVuV1NJTExpbmtBY3Rpb24gZXh0ZW5kcyBNdWx0aXBsZUxpbmtBY3Rpb24KLXsKLSAgcHVibGljIE9wZW5XU0lMTGlua0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgaW50IHRvb2xJRCwgaW50IHZpZXdJRCwgaW50IHZpZXdUb29sSUQpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzaWwvYWN0aW9ucy9PcGVuV1NJTExpbmtBY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQobm9kZUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5UT09MSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodG9vbElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodmlld0lEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXVE9PTElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdUb29sSUQpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRCYXNlQWN0aW9uTGluaygpCi0gIHsKLSAgICByZXR1cm4gIndzaWwvYWN0aW9ucy9PcGVuV1NJTExpbmtBY3Rpb25KU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBJVHJhbnNmb3JtZXJbXSBnZXRUcmFuc2Zvcm1lcnMoKQotICB7Ci0gICAgSVRyYW5zZm9ybWVyW10gcGFyZW50VHJhbnNmb3JtZXJzID0gc3VwZXIuZ2V0VHJhbnNmb3JtZXJzKCk7Ci0gICAgSVRyYW5zZm9ybWVyW10gdHJhbnNmb3JtZXJzID0gbmV3IElUcmFuc2Zvcm1lcltwYXJlbnRUcmFuc2Zvcm1lcnMubGVuZ3RoKzFdOwotICAgIFN5c3RlbS5hcnJheWNvcHkocGFyZW50VHJhbnNmb3JtZXJzLCAwLCB0cmFuc2Zvcm1lcnMsIDAsIHBhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgpOwotICAgIHRyYW5zZm9ybWVyc1t0cmFuc2Zvcm1lcnMubGVuZ3RoLTFdID0gbmV3IFdTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXIoY29udHJvbGxlcl8sIFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfV1NJTF9MSU5LUywgQWN0aW9uSW5wdXRzLlZJRVdJRCwgV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lci5XU0lMX0xJTkspOwotICAgIHJldHVybiB0cmFuc2Zvcm1lcnM7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpCi0gIHsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIGludCB2aWV3SUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVklFV0lEKSk7Ci0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXROb2RlKG5vZGVJRCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgaWYgKCEoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIExpc3RFbGVtZW50IGxlID0gKChXc2lsRWxlbWVudCkgc2VsZWN0ZWRFbGVtZW50KS5nZXRBbGxXU0lMTGlua3MoKS5nZXRFbGVtZW50V2l0aFZpZXdJZCh2aWV3SUQpOwotICAgIFdzaWxXc2lsTGlua0VsZW1lbnQgbGluayA9IChXc2lsV3NpbExpbmtFbGVtZW50KSBsZS5nZXRPYmplY3QoKTsKLSAgICBTdHJpbmcgd3NpbFVSTCA9IGxpbmsuZ2V0V1NJTExpbmtMb2NhdGlvbigpOwotICAgIC8vIHBvcHVsYXRlIGFuZCBydW4gdGhlIE9wZW5XU0lMQWN0aW9uCi0gICAgT3BlbldTSUxBY3Rpb24gYWN0aW9uID0gbmV3IE9wZW5XU0lMQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICBIYXNodGFibGUgdGFibGUgPSBhY3Rpb24uZ2V0UHJvcGVydHlUYWJsZSgpOwotICAgIHRhYmxlLnB1dChXc2lsQWN0aW9uSW5wdXRzLldTSUxfVVJMLCB3c2lsVVJMKTsKLSAgICB0YWJsZS5wdXQoV3NpbEFjdGlvbklucHV0cy5XU0lMX0lOU1BFQ1RJT05fVFlQRSwgU3RyaW5nLnZhbHVlT2YoV3NpbEFjdGlvbklucHV0cy5XU0lMX0RFVEFJTFMpKTsKLSAgICByZXR1cm4gYWN0aW9uLnJ1bigpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9SZWZyZXNoQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9SZWZyZXNoQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNjBlYTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvUmVmcmVzaEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuTGlzdFVERElCdXNpbmVzc1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuTGlzdFVERElTZXJ2aWNlc1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV3NpbE5vZGU7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBSZWZyZXNoQWN0aW9uIGV4dGVuZHMgTXVsdGlwbGVMaW5rQWN0aW9uCi17Ci0gIHByb3RlY3RlZCBOb2RlTWFuYWdlciBub2RlTWFuYWdlcl87Ci0KLSAgcHVibGljIFJlZnJlc2hBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgbm9kZU1hbmFnZXJfID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBBY3Rpb24gbmV3QWN0aW9uKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LCBDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBTdHJpbmcgbm9kZUlEU3RyaW5nID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci0gICAgU3RyaW5nIHZpZXdJRFN0cmluZyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgIGludCBub2RlSUQ7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludChub2RlSURTdHJpbmcpOwotICAgIH0KLSAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkKLSAgICB7Ci0gICAgICBub2RlSUQgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGVJZCgpOwotICAgIH0KLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKG5vZGVJRCk7Ci0gICAgaWYgKHNlbGVjdGVkTm9kZSA9PSBudWxsIHx8ICEoc2VsZWN0ZWROb2RlIGluc3RhbmNlb2YgV3NpbE5vZGUpKQotICAgICAgcmV0dXJuIG5ldyBOdWxsQWN0aW9uKCk7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgICBSZWZyZXNoQWN0aW9uIGFjdGlvbjsKLSAgICAgIGlmICh2aWV3SURTdHJpbmcgPT0gbnVsbCkKLSAgICAgICAgYWN0aW9uID0gbmV3IFJlZnJlc2hXU0lMQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgICAgZWxzZSBpZiAoc2VsZWN0ZWRUb29sIGluc3RhbmNlb2YgTGlzdFVERElTZXJ2aWNlc1Rvb2wpCi0gICAgICAgIGFjdGlvbiA9IG5ldyBSZWZyZXNoVURESVNlcnZpY2VBY3Rpb24oY29udHJvbGxlcik7Ci0gICAgICBlbHNlIGlmIChzZWxlY3RlZFRvb2wgaW5zdGFuY2VvZiBMaXN0VURESUJ1c2luZXNzVG9vbCkKLSAgICAgICAgYWN0aW9uID0gbmV3IFJlZnJlc2hVRERJQnVzaW5lc3NBY3Rpb24oY29udHJvbGxlcik7Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBuZXcgTnVsbEFjdGlvbigpOwotICAgICAgYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKS5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgU3RyaW5nLnZhbHVlT2Yobm9kZUlEKSk7Ci0gICAgICByZXR1cm4gYWN0aW9uOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgaW50IHRvb2xJRCwgaW50IHZpZXdJRCwgaW50IHZpZXdUb29sSUQpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzaWwvYWN0aW9ucy9SZWZyZXNoQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKG5vZGVJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVE9PTElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHRvb2xJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV0lEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVklFV1RPT0xJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCh2aWV3VG9vbElEKTsKLSAgICByZXR1cm4gYWN0aW9uTGluay50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QmFzZUFjdGlvbkxpbmsoKQotICB7Ci0gICAgcmV0dXJuICJ3c2lsL2FjdGlvbnMvUmVmcmVzaEFjdGlvbkpTUC5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9SZWZyZXNoVURESUJ1c2luZXNzQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9SZWZyZXNoVURESUJ1c2luZXNzQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkOGUzZTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvUmVmcmVzaFVERElCdXNpbmVzc0FjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLkxpc3RNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS50cmFuc2Zvcm1lci5JVHJhbnNmb3JtZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk1lc3NhZ2VRdWV1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuV3NpbE1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC5Xc2lsRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnRyYW5zZm9ybWVyLldTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXI7Ci0KLXB1YmxpYyBjbGFzcyBSZWZyZXNoVURESUJ1c2luZXNzQWN0aW9uIGV4dGVuZHMgUmVmcmVzaEFjdGlvbgotewotICBwdWJsaWMgUmVmcmVzaFVERElCdXNpbmVzc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBJVHJhbnNmb3JtZXJbXSBnZXRUcmFuc2Zvcm1lcnMoKQotICB7Ci0gICAgSVRyYW5zZm9ybWVyW10gcGFyZW50VHJhbnNmb3JtZXJzID0gc3VwZXIuZ2V0VHJhbnNmb3JtZXJzKCk7Ci0gICAgSVRyYW5zZm9ybWVyW10gdHJhbnNmb3JtZXJzID0gbmV3IElUcmFuc2Zvcm1lcltwYXJlbnRUcmFuc2Zvcm1lcnMubGVuZ3RoKzFdOwotICAgIFN5c3RlbS5hcnJheWNvcHkocGFyZW50VHJhbnNmb3JtZXJzLCAwLCB0cmFuc2Zvcm1lcnMsIDAsIHBhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgpOwotICAgIHRyYW5zZm9ybWVyc1t0cmFuc2Zvcm1lcnMubGVuZ3RoLTFdID0gbmV3IFdTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXIoY29udHJvbGxlcl8sIFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfVURESV9MSU5LUywgQWN0aW9uSW5wdXRzLlZJRVdJRCwgV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lci5VRERJX0JVU0lORVNTKTsKLSAgICByZXR1cm4gdHJhbnNmb3JtZXJzOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIHJldHVybiBleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gZXhlY3V0ZU11bHRpcGxlTGlua0FjdGlvbigpCi0gIHsKLSAgICByZXR1cm4gZXhlY3V0ZVNpbmdsZUxpbmtBY3Rpb24oKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ID0gdHJ1ZTsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlEKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlIG1lc3NhZ2VRdWV1ZSA9IHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKTsKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQpCi0gICAgewotICAgICAgV3NpbEVsZW1lbnQgd3NpbEVsZW1lbnQgPSAoV3NpbEVsZW1lbnQpIHNlbGVjdGVkRWxlbWVudDsKLSAgICAgIExpc3RNYW5hZ2VyIGxtID0gd3NpbEVsZW1lbnQuZ2V0QWxsVURESUxpbmtzKCk7Ci0gICAgICBWZWN0b3IgdWRkaUJ1c2luZXNzRWxlbWVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBTdHJpbmdbXSB2aWV3SURzID0gZ2V0Vmlld0lkcygpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2aWV3SURzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBpbnQgdmlld0lEID0gSW50ZWdlci5wYXJzZUludCh2aWV3SURzW2ldKTsKLSAgICAgICAgV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQgdWRkaUJ1c2luZXNzRWxlbWVudCA9IChXc2lsVWRkaUJ1c2luZXNzRWxlbWVudCkgbG0uZ2V0RWxlbWVudFdpdGhWaWV3SWQodmlld0lEKS5nZXRPYmplY3QoKTsKLSAgICAgICAgdWRkaUJ1c2luZXNzRWxlbWVudHMuYWRkKHVkZGlCdXNpbmVzc0VsZW1lbnQpOwotICAgICAgfQotICAgICAgd3NpbEVsZW1lbnQucmVmcmVzaFNlcnZpY2VQcm92aWRlcnNGcm9tUmVnaXN0cnkodWRkaUJ1c2luZXNzRWxlbWVudHMpOwotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHVkZGlCdXNpbmVzc0VsZW1lbnRzLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50IHVkZGlCdXNpbmVzc0VsZW1lbnQgPSAoV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQpIGl0Lm5leHQoKTsKLSAgICAgICAgU3RyaW5nIG5hbWUgPSB1ZGRpQnVzaW5lc3NFbGVtZW50LmdldE5hbWUoKTsKLSAgICAgICAgaWYgKG5hbWUgPT0gbnVsbCB8fCBuYW1lLmxlbmd0aCgpIDw9IDApCi0gICAgICAgICAgbmFtZSA9IHVkZGlCdXNpbmVzc0VsZW1lbnQuZ2V0VURESUxpbmtCdXNpbmVzc0tleSgpOwotICAgICAgICBpZiAodWRkaUJ1c2luZXNzRWxlbWVudC5nZXRTZXJ2aWNlUHJvdmlkZXIoKSAhPSBudWxsKQotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19SRUZSRVNIX1NVQ0NFU1NGVUwiLCBuYW1lKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfQlVTSU5FU1NfTk9UX0ZPVU5EIiwgbmFtZSkpOwotICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1JlZnJlc2hVRERJU2VydmljZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvUmVmcmVzaFVERElTZXJ2aWNlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2Mzc3YWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvUmVmcmVzaFVERElTZXJ2aWNlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLklUcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTWVzc2FnZVF1ZXVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy5Xc2lsTW9kZWxDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC5Xc2lsVWRkaVNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC50cmFuc2Zvcm1lci5XU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyOwotCi1wdWJsaWMgY2xhc3MgUmVmcmVzaFVERElTZXJ2aWNlQWN0aW9uIGV4dGVuZHMgUmVmcmVzaEFjdGlvbgotewotICBwdWJsaWMgUmVmcmVzaFVERElTZXJ2aWNlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIElUcmFuc2Zvcm1lcltdIGdldFRyYW5zZm9ybWVycygpCi0gIHsKLSAgICBJVHJhbnNmb3JtZXJbXSBwYXJlbnRUcmFuc2Zvcm1lcnMgPSBzdXBlci5nZXRUcmFuc2Zvcm1lcnMoKTsKLSAgICBJVHJhbnNmb3JtZXJbXSB0cmFuc2Zvcm1lcnMgPSBuZXcgSVRyYW5zZm9ybWVyW3BhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgrMV07Ci0gICAgU3lzdGVtLmFycmF5Y29weShwYXJlbnRUcmFuc2Zvcm1lcnMsIDAsIHRyYW5zZm9ybWVycywgMCwgcGFyZW50VHJhbnNmb3JtZXJzLmxlbmd0aCk7Ci0gICAgdHJhbnNmb3JtZXJzW3RyYW5zZm9ybWVycy5sZW5ndGgtMV0gPSBuZXcgV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lcihjb250cm9sbGVyXywgV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9VRERJX1NFUlZJQ0VTLCBBY3Rpb25JbnB1dHMuVklFV0lELCBXU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyLlVERElfU0VSVklDRSk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybWVyczsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJ1bigpCi0gIHsKLSAgICByZXR1cm4gZXhlY3V0ZVNpbmdsZUxpbmtBY3Rpb24oKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGV4ZWN1dGVNdWx0aXBsZUxpbmtBY3Rpb24oKQotICB7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTaW5nbGVMaW5rQWN0aW9uKCk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpCi0gIHsKLSAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7Ci0gICAgaW50IG5vZGVJRCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyXy5nZXROb2RlKG5vZGVJRCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50KQotICAgIHsKLSAgICAgIFdzaWxFbGVtZW50IHdzaWxFbGVtZW50ID0gKFdzaWxFbGVtZW50KSBzZWxlY3RlZEVsZW1lbnQ7Ci0gICAgICBMaXN0TWFuYWdlciBsbSA9IHdzaWxFbGVtZW50LmdldEFsbFVERElTZXJ2aWNlcygpOwotICAgICAgVmVjdG9yIHVkZGlTZXJ2aWNlRWxlbWVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBTdHJpbmdbXSB2aWV3SURzID0gZ2V0Vmlld0lkcygpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2aWV3SURzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBpbnQgdmlld0lEID0gSW50ZWdlci5wYXJzZUludCh2aWV3SURzW2ldKTsKLSAgICAgICAgV3NpbFVkZGlTZXJ2aWNlRWxlbWVudCB1ZGRpU2VydmljZUVsZW1lbnQgPSAoV3NpbFVkZGlTZXJ2aWNlRWxlbWVudCkgbG0uZ2V0RWxlbWVudFdpdGhWaWV3SWQodmlld0lEKS5nZXRPYmplY3QoKTsKLSAgICAgICAgdWRkaVNlcnZpY2VFbGVtZW50cy5hZGQodWRkaVNlcnZpY2VFbGVtZW50KTsKLSAgICAgIH0KLSAgICAgIHdzaWxFbGVtZW50LnJlZnJlc2hTZXJ2aWNlRGVmaW5pdGlvbnNGcm9tUmVnaXN0cnkodWRkaVNlcnZpY2VFbGVtZW50cyk7Ci0gICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gdWRkaVNlcnZpY2VFbGVtZW50cy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgICAgewotICAgICAgICBXc2lsVWRkaVNlcnZpY2VFbGVtZW50IHVkZGlTZXJ2aWNlRWxlbWVudCA9IChXc2lsVWRkaVNlcnZpY2VFbGVtZW50KSBpdC5uZXh0KCk7Ci0gICAgICAgIFN0cmluZyBuYW1lID0gdWRkaVNlcnZpY2VFbGVtZW50LmdldE5hbWUoKTsKLSAgICAgICAgaWYgKG5hbWUgPT0gbnVsbCB8fCBuYW1lLmxlbmd0aCgpIDw9IDApCi0gICAgICAgICAgbmFtZSA9IHVkZGlTZXJ2aWNlRWxlbWVudC5nZXRVRERJU2VydmljZUtleSgpOwotICAgICAgICBpZiAodWRkaVNlcnZpY2VFbGVtZW50LmdldFNlcnZpY2VEZWZpbml0aW9uKCkgIT0gbnVsbCkKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fUkVGUkVTSF9TVUNDRVNTRlVMIiwgbmFtZSkpOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1NFUlZJQ0VfTk9UX0ZPVU5EIiwgbmFtZSkpOwotICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1JlZnJlc2hXU0lMQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9SZWZyZXNoV1NJTEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTExYmQ4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1JlZnJlc2hXU0lMQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIFJlZnJlc2hXU0lMQWN0aW9uIGV4dGVuZHMgUmVmcmVzaEFjdGlvbgotewotICBwdWJsaWMgUmVmcmVzaFdTSUxBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlcik7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpCi0gIHsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXJfLmdldE5vZGUobm9kZUlEKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50KQotICAgIHsKLSAgICAgIFN0cmluZyB3c2lsVVJMID0gKChXc2lsRWxlbWVudCkgc2VsZWN0ZWRFbGVtZW50KS5nZXRXc2lsVXJsKCk7Ci0gICAgICBpZiAoKChXc2lsRWxlbWVudCkgc2VsZWN0ZWRFbGVtZW50KS5yZWZyZXNoKCkpCi0gICAgICB7Ci0gICAgICAgIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19SRUZSRVNIX1NVQ0NFU1NGVUwiLCB3c2lsVVJMKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1dTSUxfTk9UX0ZPVU5EIiwgd3NpbFVSTCkpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1Jlc2l6ZVdTSUxGcmFtZXNBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1Jlc2l6ZVdTSUxGcmFtZXNBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUwZGJmOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9SZXNpemVXU0lMRnJhbWVzQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlJlc2l6ZUZyYW1lc0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5NdWx0aXBhcnRGb3JtRGF0YVBhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuV3NpbEFjdGlvbklucHV0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuV3NpbEZyYW1lTmFtZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotCi1wdWJsaWMgY2xhc3MgUmVzaXplV1NJTEZyYW1lc0FjdGlvbiBleHRlbmRzIFJlc2l6ZUZyYW1lc0FjdGlvbgotewotICBwdWJsaWMgUmVzaXplV1NJTEZyYW1lc0FjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc090aGVycyhNdWx0aXBhcnRGb3JtRGF0YVBhcnNlciBwYXJzZXIpIHRocm93cyBNdWx0aXBhcnRGb3JtRGF0YUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoV3NpbEFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gcGFyc2VyLmdldFBhcmFtZXRlcihXc2lsQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIpOwotICAgIGlmIChwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMgIT0gbnVsbCAmJiBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFdzaWxBY3Rpb25JbnB1dHMuRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5ULHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICBwcm9wZXJ0eVRhYmxlXy5wdXQoV3NpbEFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSLGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGZpbmFsIGJvb2xlYW4gcnVuKCkKLSAgewotICAgIC8vIFNhdmUgdGhlIGN1cnJlbnQgZnJhbWVzZXQgc2l6ZXMuCi0gICAgU3RyaW5nIGZyYW1lTmFtZSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZV8uZ2V0KEFjdGlvbklucHV0cy5GUkFNRV9OQU1FKTsKLSAgICBTdHJpbmcgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoV3NpbEFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoV3NpbEFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSKTsKLSAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgCi0gICAgLy8gU2V0IHRoZSBuZXcgZnJhbWVzZXQgc2l6ZXMuCi0gICAgaWYgKGZyYW1lTmFtZS5lcXVhbHMoV3NpbEZyYW1lTmFtZXMuV1NJTF9OQVZJR0FUT1JfQ09OVEFJTkVSKSkKLSAgICB7Ci0gICAgICB3c2lsUGVyc3BlY3RpdmUuc2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICBpZiAocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLnN0YXJ0c1dpdGgoIjEwMCUiKSkKLSAgICAgIHsKLSAgICAgICAgLy8gUmVzdG9yZS4KLSAgICAgICAgd3NpbFBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyh3c2lsUGVyc3BlY3RpdmUuZ2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIE1heGltaXplLgotICAgICAgICB3c2lsUGVyc3BlY3RpdmUuc2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKTsKLSAgICAgICAgd3NpbFBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygiMTAwJSwwJSIpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChmcmFtZU5hbWUuZXF1YWxzKFdzaWxGcmFtZU5hbWVzLldTSUxfUFJPUEVSVElFU19DT05UQUlORVIpKQotICAgIHsKLSAgICAgIGlmIChhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzLnN0YXJ0c1dpdGgoIjEwMCUiKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scy5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gUmVzdG9yZS4KLSAgICAgICAgICB3c2lsUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHdzaWxQZXJzcGVjdGl2ZS5nZXRTYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpKTsKLSAgICAgICAgICB3c2lsUGVyc3BlY3RpdmUuc2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyh3c2lsUGVyc3BlY3RpdmUuZ2V0U2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIE1heGltaXplLgotICAgICAgICAgIHdzaWxQZXJzcGVjdGl2ZS5zZXRTYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyhwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMpOwotICAgICAgICAgIHdzaWxQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAgICAgd3NpbFBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygiMCUsMTAwJSIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIE1heGltaXplLgotICAgICAgICB3c2lsUGVyc3BlY3RpdmUuc2V0U2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MpOwotICAgICAgICB3c2lsUGVyc3BlY3RpdmUuc2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygiMTAwJSwwJSIpOwotICAgICAgICBpZiAoIXBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scy5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgICB7Ci0gICAgICAgICAgd3NpbFBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgd3NpbFBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygiMCUsMTAwJSIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGZyYW1lTmFtZS5lcXVhbHMoV3NpbEZyYW1lTmFtZXMuV1NJTF9TVEFUVVNfQ09OVEFJTkVSKSkKLSAgICB7Ci0gICAgICBpZiAoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cy5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgewotICAgICAgICBpZiAocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBSZXN0b3JlLgotICAgICAgICAgIHdzaWxQZXJzcGVjdGl2ZS5zZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMod3NpbFBlcnNwZWN0aXZlLmdldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkpOwotICAgICAgICAgIHdzaWxQZXJzcGVjdGl2ZS5zZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKHdzaWxQZXJzcGVjdGl2ZS5nZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy8gTWF4aW1pemUuCi0gICAgICAgICAgd3NpbFBlcnNwZWN0aXZlLnNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyk7Ci0gICAgICAgICAgd3NpbFBlcnNwZWN0aXZlLnNldFNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyhhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgICAgICB3c2lsUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gTWF4aW1pemUuCi0gICAgICAgIHdzaWxQZXJzcGVjdGl2ZS5zZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAgIHdzaWxQZXJzcGVjdGl2ZS5zZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCIwJSwxMDAlIik7Ci0gICAgICAgIGlmICghcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICAgIHsKLSAgICAgICAgICB3c2lsUGVyc3BlY3RpdmUuc2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKTsKLSAgICAgICAgICB3c2lsUGVyc3BlY3RpdmUuc2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCIwJSwxMDAlIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1NlbGVjdFdTSUxOb2RlQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9TZWxlY3RXU0lMTm9kZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODg1ODg2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1NlbGVjdFdTSUxOb2RlQWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlNlbGVjdE5vZGVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5Ub29sVHlwZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2w7Ci0KLXB1YmxpYyBjbGFzcyBTZWxlY3RXU0lMTm9kZUFjdGlvbiBleHRlbmRzIFNlbGVjdE5vZGVBY3Rpb24KLXsKLSAgICBwdWJsaWMgU2VsZWN0V1NJTE5vZGVBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICAgIHsKLSAgICAgICAgc3VwZXIoY29udHJvbGxlciwgY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKGludCBub2RlSUQsIGJvb2xlYW4ga2VlcEhpc3RvcnkpCi0gICAgewotICAgICAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzaWwvYWN0aW9ucy9TZWxlY3RXU0lMTm9kZUFjdGlvbkpTUC5qc3A/Iik7Ci0gICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChub2RlSUQpOwotICAgICAgICBpZiAoa2VlcEhpc3RvcnkpIHsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCcmJyk7Ci0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuSVNISVNUT1JZKTsKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKCI9MSIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpCi0gICAgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IGdldFNlbGVjdGVkTm9kZSgpOwotICAgICAgICBUb29sIHNlbGVjdGVkVG9vbCA9IHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpOwotICAgICAgICBpZiAoc2VsZWN0ZWRUb29sLmdldFRvb2xUeXBlKCkgIT0gVG9vbFR5cGVzLkFDVElPTikKLSAgICAgICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWRUb29sLmdldFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIHRydWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRydWUpOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRWYXIoKSB7Ci0gICAgICAgIHJldHVybiAid3NpbE5hdmlnYXRvckNvbnRlbnQiOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkgewotICAgICAgICByZXR1cm4gIndzaWwvd3NpbF9uYXZpZ2F0b3JfY29udGVudC5qc3AiOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRhaW5lclZhcigpIHsKLSAgICAgICAgcmV0dXJuICJ3c2lsUHJvcGVydGllc0NvbnRhaW5lciI7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpIHsKLSAgICAgICAgcmV0dXJuICJ3c2lsL3dzaWxfcHJvcGVydGllc19jb250YWluZXIuanNwIjsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGZpbmFsIGludCBnZXRQZXJzcGVjdGl2ZUlkKCkKLSAgICB7Ci0gICAgICByZXR1cm4gQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1dTSUw7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvU2VsZWN0V1NJTFRvb2xBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1NlbGVjdFdTSUxUb29sQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NzgyNmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvU2VsZWN0V1NJTFRvb2xBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlNlbGVjdE5vZGVUb29sQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuVG9vbFR5cGVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUudHJhbnNmb3JtZXIuSVRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5WaWV3VG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC50cmFuc2Zvcm1lci5XU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyOwotCi1wdWJsaWMgY2xhc3MgU2VsZWN0V1NJTFRvb2xBY3Rpb24gZXh0ZW5kcyBTZWxlY3ROb2RlVG9vbEFjdGlvbgotewotICBwdWJsaWMgU2VsZWN0V1NJTFRvb2xBY3Rpb24oQ29udHJvbGxlciBjb250cm9sbGVyKQotICB7Ci0gICAgc3VwZXIoY29udHJvbGxlciwgY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpKTsKLSAgfQotCi0gIHB1YmxpYyBJVHJhbnNmb3JtZXJbXSBnZXRUcmFuc2Zvcm1lcnMoKQotICB7Ci0gICAgSVRyYW5zZm9ybWVyW10gcGFyZW50VHJhbnNmb3JtZXJzID0gc3VwZXIuZ2V0VHJhbnNmb3JtZXJzKCk7Ci0gICAgSVRyYW5zZm9ybWVyW10gdHJhbnNmb3JtZXJzID0gbmV3IElUcmFuc2Zvcm1lcltwYXJlbnRUcmFuc2Zvcm1lcnMubGVuZ3RoICsgMV07Ci0gICAgU3lzdGVtLmFycmF5Y29weShwYXJlbnRUcmFuc2Zvcm1lcnMsIDAsIHRyYW5zZm9ybWVycywgMCwgcGFyZW50VHJhbnNmb3JtZXJzLmxlbmd0aCk7Ci0gICAgdHJhbnNmb3JtZXJzW3RyYW5zZm9ybWVycy5sZW5ndGggLSAxXSA9IG5ldyBXU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyKGNvbnRyb2xsZXJfKTsKLSAgICByZXR1cm4gdHJhbnNmb3JtZXJzOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlELCBpbnQgdG9vbElELCBpbnQgdmlld0lELCBpbnQgdmlld1Rvb2xJRCwgYm9vbGVhbiBrZWVwSGlzdG9yeSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBhY3Rpb25MaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigid3NpbC9hY3Rpb25zL1NlbGVjdFdTSUxUb29sQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKG5vZGVJRCk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVE9PTElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHRvb2xJRCk7Ci0gICAgaWYgKHZpZXdJRCAhPSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpCi0gICAgewotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdJRCk7Ci0gICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlZJRVdUT09MSUQpOwotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdUb29sSUQpOwotICAgIH0KLSAgICBpZiAoa2VlcEhpc3RvcnkpCi0gICAgewotICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5JU0hJU1RPUlkpOwotICAgICAgYWN0aW9uTGluay5hcHBlbmQoIj0xIik7Ci0gICAgfQotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEFjdGlvbkxpbmtGb3JIaXN0b3J5KCkKLSAgewotICAgIGJvb2xlYW4ga2VlcEhpc3RvcnkgPSBmYWxzZTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IGdldFNlbGVjdGVkTm9kZSgpOwotICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgaW50IHRvb2xUeXBlID0gZ2V0U2VsZWN0ZWRUb29sKCkuZ2V0VG9vbFR5cGUoKTsKLSAgICBpZiAodG9vbFR5cGUgPT0gVG9vbFR5cGVzLkZPUk0pCi0gICAgICBrZWVwSGlzdG9yeSA9IHRydWU7Ci0gICAgZWxzZSBpZiAodG9vbFR5cGUgPT0gVG9vbFR5cGVzLlZJRVcpCi0gICAgewotICAgICAgaW50IHZpZXdJRCA9IHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKTsKLSAgICAgIGlmICh2aWV3SUQgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKQotICAgICAgICBrZWVwSGlzdG9yeSA9IHRydWU7Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGlmICgoKFZpZXdUb29sKSBzZWxlY3RlZFRvb2wpLmdldFRvb2xNYW5hZ2VyKHZpZXdJRCkuZ2V0VG9vbChzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpKS5nZXRUb29sVHlwZSgpICE9IFRvb2xUeXBlcy5BQ1RJT04pCi0gICAgICAgICAga2VlcEhpc3RvcnkgPSB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICBpZiAoa2VlcEhpc3RvcnkpCi0gICAgewotICAgICAgcmV0dXJuIGdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZFRvb2wuZ2V0VG9vbElkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgdHJ1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFZhcigpCi0gIHsKLSAgICByZXR1cm4gIndzaWxOYXZpZ2F0b3JDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0VHJlZUNvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAid3NpbC93c2lsX25hdmlnYXRvcl9jb250ZW50LmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJWYXIoKQotICB7Ci0gICAgcmV0dXJuICJ3c2lsUHJvcGVydGllc0NvbnRhaW5lciI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkKLSAgewotICAgIHJldHVybiAid3NpbC93c2lsX3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCI7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250ZW50VmFyKCkKLSAgewotICAgIHJldHVybiAid3NpbFByb3BlcnRpZXNDb250ZW50IjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0UHJvcGVydGllc0NvbnRlbnRQYWdlKCkKLSAgewotICAgIHJldHVybiAid3NpbC93c2lsX3Byb3BlcnRpZXNfY29udGVudC5qc3AiOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIGludCBnZXRQZXJzcGVjdGl2ZUlkKCkKLSAgewotICAgIHJldHVybiBBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfV1NJTDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NJTEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NJTEFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmIzMDk4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1N3aXRjaFBlcnNwZWN0aXZlRnJvbVdTSUxBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5TaG93UGVyc3BlY3RpdmVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxBY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotCi1wdWJsaWMgZmluYWwgY2xhc3MgU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NJTEFjdGlvbiBleHRlbmRzIFNob3dQZXJzcGVjdGl2ZUFjdGlvbgotewotICBwdWJsaWMgU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NJTEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotICAKLSAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc1BhcnNlZFJlc3VsdHMoTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyKSB0aHJvd3MgTXVsdGlwYXJ0Rm9ybURhdGFFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMgPSBwYXJzZXIuZ2V0UGFyYW1ldGVyKFdzaWxBY3Rpb25JbnB1dHMuRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5UKTsKLSAgICBTdHJpbmcgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoV3NpbEFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSKTsKLSAgICBpZiAocGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzICE9IG51bGwgJiYgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyAhPSBudWxsKQotICAgIHsKLSAgICAgIHByb3BlcnR5VGFibGVfLnB1dChXc2lsQWN0aW9uSW5wdXRzLkZSQU1FU0VUX0NPTFNfUEVSU1BFQ1RJVkVfQ09OVEVOVCxwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMpOwotICAgICAgcHJvcGVydHlUYWJsZV8ucHV0KFdzaWxBY3Rpb25JbnB1dHMuRlJBTUVTRVRfUk9XU19BQ1RJT05TX0NPTlRBSU5FUixhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBmaW5hbCBib29sZWFuIHJ1bigpCi0gIHsKLSAgICBTdHJpbmcgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoV3NpbEFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQpOwotICAgIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlXy5nZXQoV3NpbEFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSKTsKLSAgICAKLSAgICAvLyBTYXZlIHRoZSBmcmFtZXNldCBzaXplcyBpZmYgbm8gZnJhbWUgaXMgbWF4aW1pemVkLgotICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICBpZiAoIXBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scy5zdGFydHNXaXRoKCIxMDAlIikgJiYgIXBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scy5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgd3NpbFBlcnNwZWN0aXZlLnNldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scyhwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMpOwotICAgICAgCi0gICAgaWYgKCFhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzLnN0YXJ0c1dpdGgoIjEwMCUiKSAmJiAhYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cy5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgd3NpbFBlcnNwZWN0aXZlLnNldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cyk7Ci0gICAgICAKLSAgICByZXR1cm4gc3VwZXIucnVuKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldEZvcm1BY3Rpb25MaW5rKGludCB0YXJnZXRQZXJzcGVjdGl2ZUlkLGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBmb3JtTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzaWwvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21XU0lMQWN0aW9uSlNQLmpzcD8iKTsKLSAgICBmb3JtTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFKS5hcHBlbmQoJz0nKS5hcHBlbmQodGFyZ2V0UGVyc3BlY3RpdmVJZCk7Ci0gICAgaWYgKGZvckhpc3RvcnkpCi0gICAgICBmb3JtTGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLklTSElTVE9SWSkuYXBwZW5kKCI9MSIpOwotICAgIHJldHVybiBmb3JtTGluay50b1N0cmluZygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9XU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9XU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiOWRlMzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvV1NJTEltcG9ydFdTSUxUb1dvcmtiZW5jaEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkltcG9ydFRvV29ya2JlbmNoQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotCi1wdWJsaWMgY2xhc3MgV1NJTEltcG9ydFdTSUxUb1dvcmtiZW5jaEFjdGlvbiBleHRlbmRzIEltcG9ydFRvV29ya2JlbmNoQWN0aW9uCi17Ci0gIHB1YmxpYyBXU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIpOwotICB9Ci0KLSAgcHVibGljIEZvcm1Ub29sIGdldFNlbGVjdGVkRm9ybVRvb2woKQotICB7Ci0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIHJldHVybiAoRm9ybVRvb2wpd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCkuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKTsKLSAgfQotCi0gIHB1YmxpYyBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24gbmV3SW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uKCkKLSAgewotICAgIEltcG9ydFdTSUxUb0ZpbGVTeXN0ZW1BY3Rpb24gYWN0aW9uID0gbmV3IEltcG9ydFdTSUxUb0ZpbGVTeXN0ZW1BY3Rpb24oY29udHJvbGxlcl8pOwotICAgIEhhc2h0YWJsZSB0YWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICB0YWJsZS5wdXQoQWN0aW9uSW5wdXRzLk5PREVJRCwgU3RyaW5nLnZhbHVlT2Yoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpKSk7Ci0gICAgcmV0dXJuIGFjdGlvbjsKLSAgfQotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFZhcigpCi0gIHsKLSAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFZhcigpOwotICB9Ci0gICAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldFN0YXR1c0NvbnRlbnRQYWdlKCk7Ci0gIH0gICAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9Xc2lsQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1dzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWFkNDg5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1dzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUudHJhbnNmb3JtZXIuSVRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuT3BlbldTRExBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuV3NpbEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxXc2RsU2VydmljZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnRyYW5zZm9ybWVyLldTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXI7Ci0KLXB1YmxpYyBjbGFzcyBXc2lsQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb24gZXh0ZW5kcyBNdWx0aXBsZUxpbmtBY3Rpb24KLXsKLSAgcHVibGljIFdzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoaW50IG5vZGVJRCwgaW50IHRvb2xJRCwgaW50IHZpZXdJRCwgaW50IHZpZXdUb29sSUQpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYWN0aW9uTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzaWwvYWN0aW9ucy9Xc2lsQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwPyIpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQobm9kZUlEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5UT09MSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodG9vbElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXSUQpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKCc9Jyk7Ci0gICAgYWN0aW9uTGluay5hcHBlbmQodmlld0lEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnJicpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5WSUVXVE9PTElEKTsKLSAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgIGFjdGlvbkxpbmsuYXBwZW5kKHZpZXdUb29sSUQpOwotICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRCYXNlQWN0aW9uTGluaygpCi0gIHsKLSAgICByZXR1cm4gIndzaWwvYWN0aW9ucy9Xc2lsQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwIjsKLSAgfQotCi0gIHB1YmxpYyBJVHJhbnNmb3JtZXJbXSBnZXRUcmFuc2Zvcm1lcnMoKQotICB7Ci0gICAgSVRyYW5zZm9ybWVyW10gcGFyZW50VHJhbnNmb3JtZXJzID0gc3VwZXIuZ2V0VHJhbnNmb3JtZXJzKCk7Ci0gICAgSVRyYW5zZm9ybWVyW10gdHJhbnNmb3JtZXJzID0gbmV3IElUcmFuc2Zvcm1lcltwYXJlbnRUcmFuc2Zvcm1lcnMubGVuZ3RoKzFdOwotICAgIFN5c3RlbS5hcnJheWNvcHkocGFyZW50VHJhbnNmb3JtZXJzLCAwLCB0cmFuc2Zvcm1lcnMsIDAsIHBhcmVudFRyYW5zZm9ybWVycy5sZW5ndGgpOwotICAgIHRyYW5zZm9ybWVyc1t0cmFuc2Zvcm1lcnMubGVuZ3RoLTFdID0gbmV3IFdTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXIoY29udHJvbGxlcl8sIFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfV1NETF9TRVJWSUNFUywgQWN0aW9uSW5wdXRzLlZJRVdJRCwgV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lci5XU0RMX1NFUlZJQ0UpOwotICAgIHJldHVybiB0cmFuc2Zvcm1lcnM7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBleGVjdXRlU2luZ2xlTGlua0FjdGlvbigpCi0gIHsKLSAgICBpbnQgbm9kZUlEID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKSBwcm9wZXJ0eVRhYmxlXy5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIGludCB2aWV3SUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnR5VGFibGVfLmdldChBY3Rpb25JbnB1dHMuVklFV0lEKSk7Ci0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShub2RlSUQpOwotICAgIFdzaWxFbGVtZW50IHdzaWxFbGVtZW50ID0gKFdzaWxFbGVtZW50KSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBXc2lsV3NkbFNlcnZpY2VFbGVtZW50IHdzaWxXc2RsU2VydmljZUVsZW1lbnQgPSAoV3NpbFdzZGxTZXJ2aWNlRWxlbWVudCkgd3NpbEVsZW1lbnQuZ2V0QWxsV1NETFNlcnZpY2VzKCkuZ2V0RWxlbWVudFdpdGhWaWV3SWQodmlld0lEKS5nZXRPYmplY3QoKTsKLSAgICBTdHJpbmcgd3NkbFVybCA9IHdzaWxXc2RsU2VydmljZUVsZW1lbnQuZ2V0V1NETFNlcnZpY2VVUkwoKTsKLSAgICBPcGVuV1NETEFjdGlvbiBvcGVuV1NETEFjdGlvbiA9IG5ldyBPcGVuV1NETEFjdGlvbihjb250cm9sbGVyXyk7Ci0gICAgSGFzaHRhYmxlIHByb3BlcnR5VGFibGUgPSBvcGVuV1NETEFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgcHJvcGVydHlUYWJsZS5wdXQoQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMLCB3c2RsVXJsKTsKLSAgICBib29sZWFuIGFjdGlvblJlc3VsdCA9IG9wZW5XU0RMQWN0aW9uLnJ1bigpOwotICAgIGlmIChhY3Rpb25SZXN1bHQpCi0gICAgICB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuYWRkTWVzc2FnZSh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fQUREX1dTRExfVE9fV1NETF9QRVJTUEVDVElWRV9TVUNDRVNTRlVMIiwgd3NkbFVybCkpOwotICAgIGVsc2UKLSAgICAgIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlUXVldWUoKS5hZGRNZXNzYWdlKHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfQUREX1dTRExfVE9fV1NETF9QRVJTUEVDVElWRSIsIHdzZGxVcmwpKTsKLSAgICByZXR1cm4gYWN0aW9uUmVzdWx0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9Xc2lsSW1wb3J0V1NETFRvV29ya2JlbmNoQWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9Xc2lsSW1wb3J0V1NETFRvV29ya2JlbmNoQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxZWFmOTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvV3NpbEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkltcG9ydFRvV29ya2JlbmNoQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlOwotCi1wdWJsaWMgY2xhc3MgV3NpbEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbiBleHRlbmRzIEltcG9ydFRvV29ya2JlbmNoQWN0aW9uIHsKLSAgICBwdWJsaWMgV3NpbEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbihDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKLSAgICAgICAgc3VwZXIoY29udHJvbGxlcik7Ci0gICAgfQotCi0gICAgcHVibGljIEZvcm1Ub29sIGdldFNlbGVjdGVkRm9ybVRvb2woKSB7Ci0gICAgICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgcmV0dXJuIChGb3JtVG9vbCl3c2lsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpOwotICAgIH0KLQotICAgIHB1YmxpYyBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24gbmV3SW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uKCkgewotICAgICAgICBJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uIGFjdGlvbiA9IG5ldyBJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uKGNvbnRyb2xsZXJfKTsKLSAgICAgICAgSGFzaHRhYmxlIHRhYmxlID0gYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKTsKLQotICAgICAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0KLSAgICAgICAgdGFibGUucHV0KEFjdGlvbklucHV0cy5OT0RFSUQsIFN0cmluZy52YWx1ZU9mKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSkpOwotICAgICAgICB0YWJsZS5wdXQoQWN0aW9uSW5wdXRzLlRPT0xJRCwgU3RyaW5nLnZhbHVlT2Yoc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSkpOwotICAgICAgICB0YWJsZS5wdXQoQWN0aW9uSW5wdXRzLlZJRVdJRCwgU3RyaW5nLnZhbHVlT2Yoc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpKSk7Ci0KLSAgICAgICAgcmV0dXJuIGFjdGlvbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRWYXIoKQotICAgIHsKLSAgICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXRTdGF0dXNDb250ZW50VmFyKCk7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFBhZ2UoKQotICAgIHsKLSAgICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXRTdGF0dXNDb250ZW50UGFnZSgpOwotICAgIH0gICAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9Xc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvV3NpbExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VhMWE3My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvYWN0aW9ucy9Xc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLkxhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLldzaWxFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC5Xc2lsVWRkaVNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC5Xc2lsV3NkbFNlcnZpY2VFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLkxpc3RVRERJU2VydmljZXNUb29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLkxpc3RXU0RMU2VydmljZXNUb29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZTsKLQotcHVibGljIGNsYXNzIFdzaWxMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uIGV4dGVuZHMgTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbiB7Ci0gICAgcHVibGljIFdzaWxMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgICAgICBzdXBlcihjb250cm9sbGVyKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24gbmV3QWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgICAgICByZXR1cm4gbmV3IFdzaWxMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgIH0KLQotICAgIHB1YmxpYyBGb3JtVG9vbCBnZXRTZWxlY3RlZEZvcm1Ub29sKCkgewotICAgICAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgICAgIHJldHVybiAoRm9ybVRvb2wpd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCkuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBydW4oKSB7Ci0gICAgICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB3c2lsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgICAgIGludCB2aWV3SUQgPSBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCk7Ci0KLSAgICAgICAgTGlzdEVsZW1lbnQgbGUgPSBudWxsOwotICAgICAgICBTdHJpbmcgdXJsID0gbnVsbDsKLSAgICAgICAgaWYgKHNlbGVjdGVkVG9vbCBpbnN0YW5jZW9mIExpc3RXU0RMU2VydmljZXNUb29sKSB7Ci0gICAgICAgICAgICBsZSA9ICgoV3NpbEVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50KS5nZXRBbGxXU0RMU2VydmljZXMoKS5nZXRFbGVtZW50V2l0aFZpZXdJZCh2aWV3SUQpOwotICAgICAgICAgICAgdXJsID0gKChXc2lsV3NkbFNlcnZpY2VFbGVtZW50KWxlLmdldE9iamVjdCgpKS5nZXRXU0RMU2VydmljZVVSTCgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHNlbGVjdGVkVG9vbCBpbnN0YW5jZW9mIExpc3RVRERJU2VydmljZXNUb29sKSB7Ci0gICAgICAgICAgICBsZSA9ICgoV3NpbEVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50KS5nZXRBbGxVRERJU2VydmljZXMoKS5nZXRFbGVtZW50V2l0aFZpZXdJZCh2aWV3SUQpOwotICAgICAgICAgICAgdXJsID0gKChXc2lsVWRkaVNlcnZpY2VFbGVtZW50KWxlLmdldE9iamVjdCgpKS5nZXRXc2RsVXJsKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gbGF1bmNoV2l6YXJkKHVybCk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTdGF0dXNDb250ZW50VmFyKCkKLSAgICB7Ci0gICAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFZhcigpOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFN0YXR1c0NvbnRlbnRQYWdlKCkKLSAgICB7Ci0gICAgICByZXR1cm4gY29udHJvbGxlcl8uZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0U3RhdHVzQ29udGVudFBhZ2UoKTsKLSAgICB9ICAgIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvV3NpbFRvZ2dsZU5vZGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9hY3Rpb25zL1dzaWxUb2dnbGVOb2RlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNGQ5MjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2FjdGlvbnMvV3NpbFRvZ2dsZU5vZGVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Ub2dnbGVOb2RlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuVG9vbFR5cGVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLQotcHVibGljIGNsYXNzIFdzaWxUb2dnbGVOb2RlQWN0aW9uIGV4dGVuZHMgVG9nZ2xlTm9kZUFjdGlvbiB7Ci0gICAgcHVibGljIFdzaWxUb2dnbGVOb2RlQWN0aW9uKENvbnRyb2xsZXIgY29udHJvbGxlcikgewotICAgICAgICBzdXBlcihjb250cm9sbGVyLCBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QWN0aW9uTGluayhpbnQgbm9kZUlkLCBib29sZWFuIG9wZW4pIHsKLSAgICAgICAgU3RyaW5nQnVmZmVyIGFjdGlvbkxpbmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJ3c2lsL2FjdGlvbnMvV3NpbFRvZ2dsZU5vZGVBY3Rpb25KU1AuanNwPyIpOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJz0nKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQobm9kZUlkKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoJyYnKTsKLSAgICAgICAgYWN0aW9uTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLk9QRU4pOwotICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZCgnPScpOwotICAgICAgICBpZiAob3BlbikKLSAgICAgICAgICAgIGFjdGlvbkxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5PUEVOX05PREUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhY3Rpb25MaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuQ0xPU0VfTk9ERSk7Ci0gICAgICAgIHJldHVybiBhY3Rpb25MaW5rLnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRBY3Rpb25MaW5rRm9ySGlzdG9yeSgpIHsKLSAgICAgICAgVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIgPSB0b2dnbGVkTm9kZV8uZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICAgICAgVG9vbCBzZWxlY3RlZFRvb2wgPSB0b29sTWFuYWdlci5nZXRTZWxlY3RlZFRvb2woKTsKLSAgICAgICAgaW50IG5vZGVJZCA9IHRvZ2dsZWROb2RlXy5nZXROb2RlSWQoKTsKLSAgICAgICAgaW50IHRvb2xJZCA9IHNlbGVjdGVkVG9vbC5nZXRUb29sSWQoKTsKLSAgICAgICAgaW50IHZpZXdJZCA9IHRvZ2dsZWROb2RlXy5nZXRWaWV3SWQoKTsKLSAgICAgICAgaW50IHZpZXdUb29sSWQgPSB0b2dnbGVkTm9kZV8uZ2V0Vmlld1Rvb2xJZCgpOwotICAgICAgICBpZiAoc2VsZWN0ZWRUb29sLmdldFRvb2xUeXBlKCkgIT0gVG9vbFR5cGVzLkFDVElPTikKLSAgICAgICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGVJZCwgdG9vbElkLCB2aWV3SWQsIHZpZXdUb29sSWQsIHRydWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gU2VsZWN0V1NJTE5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQsIHRydWUpOwotICAgIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFRyZWVDb250ZW50VmFyKCkKLSAgewotICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXRUcmVlQ29udGVudFZhcigpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXJfLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldFRyZWVDb250ZW50UGFnZSgpOwotICB9Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkKLSAgewotICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkKLSAgewotICAgIHJldHVybiBjb250cm9sbGVyXy5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpOwotICB9Ci0gIAotICBwdWJsaWMgZmluYWwgaW50IGdldFBlcnNwZWN0aXZlSWQoKQotICB7Ci0gICAgcmV0dXJuIEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9XU0lMOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvY29uc3RhbnRzL1dzaWxBY3Rpb25JbnB1dHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9jb25zdGFudHMvV3NpbEFjdGlvbklucHV0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjU5OTE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9jb25zdGFudHMvV3NpbEFjdGlvbklucHV0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzOwotCi1wdWJsaWMgY2xhc3MgV3NpbEFjdGlvbklucHV0cwotewotICAgIC8vIG9wZW4gV1NJTCBmb3JtCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NJTF9VUkwgPSAid3NpbFVSTCI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NJTF9JTlNQRUNUSU9OX1RZUEUgPSAid3NpbEluc3BlY3Rpb25UeXBlIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBXU0lMX0RFVEFJTFMgPSAwOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdTRExfU0VSVklDRVMgPSAxOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFVERElfU0VSVklDRVMgPSAyOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFVERElfQlVTSU5FU1NFUyA9IDM7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgV1NJTF9MSU5LUyA9IDQ7Ci0KLSAgICAvLyBtYXNzIGFjdGlvbgotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE1VTFRJUExFX0xJTktfQUNUSU9OID0gIm11bHRpcGxlTGlua0FjdGlvbiI7Ci0KLSAgICAvLyByZXNpemUgV1NJTCBmcmFtZXMgYWN0aW9uCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5UID0gImZyYW1lc2V0Q29sc1BlcnNwZWN0aXZlQ29udGVudCI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgRlJBTUVTRVRfUk9XU19BQ1RJT05TX0NPTlRBSU5FUiA9ICJmcmFtZXNldFJvd3NBY3Rpb25zQ29udGFpbmVyIjsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9jb25zdGFudHMvV3NpbEZyYW1lTmFtZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9jb25zdGFudHMvV3NpbEZyYW1lTmFtZXMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzczNWEyMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvY29uc3RhbnRzL1dzaWxGcmFtZU5hbWVzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHM7Ci0KLXB1YmxpYyBjbGFzcyBXc2lsRnJhbWVOYW1lcwotewotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0lMX05BVklHQVRPUl9DT05UQUlORVIgPSAid3NpbF9uYXZpZ2F0b3JfY29udGFpbmVyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NJTF9OQVZJR0FUT1JfVE9PTEJBUiA9ICJ3c2lsX25hdmlnYXRvcl90b29sYmFyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NJTF9OQVZJR0FUT1JfQ09OVEVOVCA9ICJ3c2lsX25hdmlnYXRvcl9jb250ZW50IjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NJTF9BQ1RJT05TX0NPTlRBSU5FUiA9ICJ3c2lsX2FjdGlvbnNfY29udGFpbmVyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NJTF9QUk9QRVJUSUVTX0NPTlRBSU5FUiA9ICJ3c2lsX3Byb3BlcnRpZXNfY29udGFpbmVyIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NJTF9QUk9QRVJUSUVTX1RPT0xCQVIgPSAid3NpbF9wcm9wZXJ0aWVzX3Rvb2xiYXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0lMX1BST1BFUlRJRVNfQ09OVEVOVCA9ICJ3c2lsX3Byb3BlcnRpZXNfY29udGVudCI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFdTSUxfU1RBVFVTX0NPTlRBSU5FUiA9ICJ3c2lsX3N0YXR1c19jb250YWluZXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0lMX1NUQVRVU19UT09MQkFSID0gIndzaWxfc3RhdHVzX3Rvb2xiYXIiOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBXU0lMX1NUQVRVU19DT05URU5UID0gIndzaWxfc3RhdHVzX2NvbnRlbnQiOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2NvbnN0YW50cy9Xc2lsTW9kZWxDb25zdGFudHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9jb25zdGFudHMvV3NpbE1vZGVsQ29uc3RhbnRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYThmYTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2NvbnN0YW50cy9Xc2lsTW9kZWxDb25zdGFudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50czsKLQotcHVibGljIGNsYXNzIFdzaWxNb2RlbENvbnN0YW50cwotewotICAgIC8vIFJlbGF0aW9uCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVMX1dTSUwgPSAicmVsV1NJTCI7Ci0KLSAgICAvLyBMaXN0IE1hbmFnZXJzIGZvciBXc2lsRWxlbWVudAotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIExJU1RfTUFOQUdFUl9XU0RMX1NFUlZJQ0VTID0gIndzZGxTZXJ2aWNlcyI7Ci0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTElTVF9NQU5BR0VSX1VERElfU0VSVklDRVMgPSAidWRkaVNlcnZpY2VzIjsKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBMSVNUX01BTkFHRVJfVURESV9MSU5LUyA9ICJ1ZGRpTGlua3MiOwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIExJU1RfTUFOQUdFUl9XU0lMX0xJTktTID0gIndzaWxMaW5rcyI7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvZGF0YW1vZGVsL1dzaWxDb21tb25FbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvZGF0YW1vZGVsL1dzaWxDb21tb25FbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZTAxYWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2RhdGFtb2RlbC9Xc2lsQ29tbW9uRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuQmFzaWNFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci0KLXB1YmxpYyBjbGFzcyBXc2lsQ29tbW9uRWxlbWVudCBleHRlbmRzIEJhc2ljRWxlbWVudAotewotICBwcml2YXRlIFN0cmluZyBiYXNlV3NpbFVSTDsKLSAgcHJpdmF0ZSBTdHJpbmcgcmVsYXRpdmVVUklCYXNlOwotCi0gIHB1YmxpYyBXc2lsQ29tbW9uRWxlbWVudChTdHJpbmcgbmFtZSwgTW9kZWwgbW9kZWwpCi0gIHsKLSAgICBzdXBlcihuYW1lLCBtb2RlbCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZVdzaWxVUkwoKQotICB7Ci0gICAgcmV0dXJuIGJhc2VXc2lsVVJMOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRCYXNlV3NpbFVSTChTdHJpbmcgYmFzZVdzaWxVUkwpCi0gIHsKLSAgICB0aGlzLmJhc2VXc2lsVVJMID0gYmFzZVdzaWxVUkw7Ci0gIH0KLSAgCi0gIHByaXZhdGUgZmluYWwgY2hhciBGV0RfU0xBU0ggPSAnLyc7Ci0gIHByaXZhdGUgZmluYWwgY2hhciBCV0RfU0xBU0ggPSAnXFwnOwotICBwcml2YXRlIGZpbmFsIGNoYXIgUFJPVE9DT0xfSU5ESUNBVE9SID0gJzonOwotICAKLSAgcHVibGljIFN0cmluZyBtYWtlQWJzb2x1dGUoU3RyaW5nIHVyaSkKLSAgewotICAgIGlmIChiYXNlV3NpbFVSTCAhPSBudWxsICYmIHVyaSAhPSBudWxsICYmIHVyaS5pbmRleE9mKFBST1RPQ09MX0lORElDQVRPUikgPT0gLTEpCi0gICAgewotICAgICAgaWYgKHJlbGF0aXZlVVJJQmFzZSA9PSBudWxsKQotICAgICAgewotICAgICAgICByZWxhdGl2ZVVSSUJhc2UgPSBiYXNlV3NpbFVSTC5yZXBsYWNlKEJXRF9TTEFTSCwgRldEX1NMQVNIKTsKLSAgICAgICAgaW50IGluZGV4ID0gcmVsYXRpdmVVUklCYXNlLmxhc3RJbmRleE9mKEZXRF9TTEFTSCk7Ci0gICAgICAgIHJlbGF0aXZlVVJJQmFzZSA9IGJhc2VXc2lsVVJMLnN1YnN0cmluZygwLCBpbmRleCArIDEpOwotICAgICAgfQotICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcihyZWxhdGl2ZVVSSUJhc2UpOwotICAgICAgc2IuYXBwZW5kKHVyaSk7Ci0gICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHVyaTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2RhdGFtb2RlbC9Xc2lsRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2RhdGFtb2RlbC9Xc2lsRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzQ3NjEzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9kYXRhbW9kZWwvV3NpbEVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ2MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuUHJvcGVydGllczsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5BYnN0cmFjdDsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkluc3BlY3Rpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkxpbms7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLldTSUxEb2N1bWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5MaXN0TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuV3NpbE1vZGVsQ29uc3RhbnRzOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJ1c2luZXNzLkJ1c2luZXNzRW50aXR5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuc2VydmljZS5CdXNpbmVzc1NlcnZpY2U7Ci0KLS8qKgotICogVGhlIGRhdGEgbW9kZWwgZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgYSBXU0lMIGRvY3VtZW50Ci0gKi8KLXB1YmxpYyBjbGFzcyBXc2lsRWxlbWVudCBleHRlbmRzIFRyZWVFbGVtZW50Ci17Ci0gIHByaXZhdGUgV1NJTERvY3VtZW50IHdzaWxEb2NfOwotICBwcml2YXRlIFN0cmluZyB0aGlzV3NpbFVybF87Ci0gIC8qKiAqKioqKioqKioqKioqKioqKiogTmFtZXNwYWNlICoqKioqKioqKiogKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVTUEFDRV9XU0RMID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVTUEFDRV9VRERJX1YxID0gInVybjp1ZGRpLW9yZzphcGkiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRVNQQUNFX1VERElfVjIgPSAidXJuOnVkZGktb3JnOmFwaV92MiI7Ci0gIC8vcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVTUEFDRV9VRERJX0JJTkRJTkcgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwMS8xMC9pbnNwZWN0aW9uL3VkZGkvIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVTUEFDRV9XU0lMX0lOU1BFQ1RJT04gPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwMS8xMC9pbnNwZWN0aW9uLyI7Ci0gIC8qKiAqKioqKioqKioqKioqKioqKiogUmVscyAqKioqKioqKioqKioqKioqICovCi0gIC8vIFJlbGF0aW9uIGZvciBhIFdTSUwgZG91Y21lbnQgYW5kIGl0cyBsaW5rIG5vZGVzCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFTF9XU0lMX0xJTksgPSAid3NpbCBsaW5rIG5vZGVzIjsKLQotICBwdWJsaWMgV3NpbEVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBXU0lMRG9jdW1lbnQgd3NpbERvY3VtZW50LCBTdHJpbmcgd3NpbFVSTCkKLSAgewotICAgIHN1cGVyKG5hbWUsIG1vZGVsKTsKLSAgICB3c2lsRG9jXyA9IHdzaWxEb2N1bWVudDsKLSAgICB0aGlzV3NpbFVybF8gPSB3c2lsVVJMOwotICAgIExpc3RNYW5hZ2VyIHdzZGxTZXJ2aWNlc18gPSBudWxsOwotICAgIExpc3RNYW5hZ2VyIHVkZGlTZXJ2aWNlc18gPSBudWxsOwotICAgIExpc3RNYW5hZ2VyIHdzaWxMaW5rc18gPSBudWxsOwotICAgIExpc3RNYW5hZ2VyIHVkZGlMaW5rc18gPSBudWxsOwotICAgIHNldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9XU0RMX1NFUlZJQ0VTLCB3c2RsU2VydmljZXNfKTsKLSAgICBzZXRQcm9wZXJ0eUFzT2JqZWN0KFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfVURESV9TRVJWSUNFUywgdWRkaVNlcnZpY2VzXyk7Ci0gICAgc2V0UHJvcGVydHlBc09iamVjdChXc2lsTW9kZWxDb25zdGFudHMuTElTVF9NQU5BR0VSX1VERElfTElOS1MsIHdzaWxMaW5rc18pOwotICAgIHNldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9XU0lMX0xJTktTLCB1ZGRpTGlua3NfKTsKLSAgfQotCi0gIC8qCi0gICAqIFJlZnJlc2ggdGhlIFdTSUwgZG9jdW1lbnQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHJlZnJlc2goKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgV1NJTERvY3VtZW50IG5ld1dTSUxEb2MgPSBXU0lMRG9jdW1lbnQubmV3SW5zdGFuY2UoKTsKLSAgICAgIG5ld1dTSUxEb2MucmVhZChnZXRXc2lsVXJsKCkpOwotICAgICAgd3NpbERvY18gPSBuZXdXU0lMRG9jOwotICAgICAgTGlzdE1hbmFnZXIgd3NkbFNlcnZpY2VzXyA9IG51bGw7Ci0gICAgICBMaXN0TWFuYWdlciB1ZGRpU2VydmljZXNfID0gbnVsbDsKLSAgICAgIExpc3RNYW5hZ2VyIHdzaWxMaW5rc18gPSBudWxsOwotICAgICAgTGlzdE1hbmFnZXIgdWRkaUxpbmtzXyA9IG51bGw7Ci0gICAgICBzZXRQcm9wZXJ0eUFzT2JqZWN0KFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfV1NETF9TRVJWSUNFUywgd3NkbFNlcnZpY2VzXyk7Ci0gICAgICBzZXRQcm9wZXJ0eUFzT2JqZWN0KFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfVURESV9TRVJWSUNFUywgdWRkaVNlcnZpY2VzXyk7Ci0gICAgICBzZXRQcm9wZXJ0eUFzT2JqZWN0KFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfVURESV9MSU5LUywgd3NpbExpbmtzXyk7Ci0gICAgICBzZXRQcm9wZXJ0eUFzT2JqZWN0KFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfV1NJTF9MSU5LUywgdWRkaUxpbmtzXyk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiBSZXR1cm5zIHRoZSBXU0lMJ3MgVVJMCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFdzaWxVcmwoKQotICB7Ci0gICAgcmV0dXJuIHRoaXNXc2lsVXJsXzsKLSAgfQotCi0gIC8qCi0gICAqIFJldHVybnMgdGhlIFdTSUwgZG9jdW1lbnQKLSAgICovCi0gIHB1YmxpYyBXU0lMRG9jdW1lbnQgZ2V0V1NJTERvY3VtZW50KCkKLSAgewotICAgIHJldHVybiB3c2lsRG9jXzsKLSAgfQotCi0gIC8qCi0gICAqIFJldHVybnMgYWxsIGFic3RyYWN0IGxhbmd1YWdlcwotICAgKi8KLSAgcHVibGljIFZlY3RvciBnZXRXU0lMQWJzdHJhY3RMYW5ncygpCi0gIHsKLSAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICBBYnN0cmFjdFtdIGFic3RyYWN0cyA9IHdzaWxEb2NfLmdldEluc3BlY3Rpb24oKS5nZXRBYnN0cmFjdHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFic3RyYWN0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICB2LmFkZChhYnN0cmFjdHNbaV0uZ2V0TGFuZygpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci0gIH0KLQotICAvKgotICAgKiBSZXR1cm5zIGFsbCBhYnN0cmFjdHMKLSAgICovCi0gIHB1YmxpYyBWZWN0b3IgZ2V0V1NJTEFic3RyYWN0cygpCi0gIHsKLSAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICBBYnN0cmFjdFtdIGFic3RyYWN0cyA9IHdzaWxEb2NfLmdldEluc3BlY3Rpb24oKS5nZXRBYnN0cmFjdHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFic3RyYWN0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICB2LmFkZChhYnN0cmFjdHNbaV0uZ2V0VGV4dCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci0gIH0KLQotICBwdWJsaWMgTGlzdE1hbmFnZXIgZ2V0QWxsV1NETFNlcnZpY2VzKCkKLSAgewotICAgIExpc3RNYW5hZ2VyIHdzZGxTZXJ2aWNlc18gPSAoTGlzdE1hbmFnZXIpIGdldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9XU0RMX1NFUlZJQ0VTKTsKLSAgICBpZiAod3NkbFNlcnZpY2VzXyA9PSBudWxsKQotICAgIHsKLSAgICAgIGluaXRBbGxXU0RMU2VydmljZXMoKTsKLSAgICAgIHdzZGxTZXJ2aWNlc18gPSAoTGlzdE1hbmFnZXIpIGdldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9XU0RMX1NFUlZJQ0VTKTsKLSAgICB9Ci0gICAgcmV0dXJuIHdzZGxTZXJ2aWNlc187Ci0gIH0KLQotICBwdWJsaWMgTGlzdE1hbmFnZXIgZ2V0QWxsVURESVNlcnZpY2VzKCkKLSAgewotICAgIExpc3RNYW5hZ2VyIHVkZGlTZXJ2aWNlc18gPSAoTGlzdE1hbmFnZXIpIGdldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9VRERJX1NFUlZJQ0VTKTsKLSAgICBpZiAodWRkaVNlcnZpY2VzXyA9PSBudWxsKQotICAgIHsKLSAgICAgIGluaXRBbGxVRERJU2VydmljZXMoKTsKLSAgICAgIHVkZGlTZXJ2aWNlc18gPSAoTGlzdE1hbmFnZXIpIGdldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9VRERJX1NFUlZJQ0VTKTsKLSAgICB9Ci0gICAgcmV0dXJuIHVkZGlTZXJ2aWNlc187Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaW5pdEFsbFdTRExTZXJ2aWNlcygpCi0gIHsKLSAgICBMaXN0TWFuYWdlciB3c2RsU2VydmljZXNfID0gbmV3IExpc3RNYW5hZ2VyKCk7Ci0gICAgSW5zcGVjdGlvbiBpbnNwZWN0aW9uID0gd3NpbERvY18uZ2V0SW5zcGVjdGlvbigpOwotICAgIFNlcnZpY2VbXSBzZXJ2aWNlTGlzdCA9IGluc3BlY3Rpb24uZ2V0U2VydmljZXMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZpY2VMaXN0Lmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIC8vIHNraXAgYW55IHNlcnZpY2Ugd2l0aG91dCBhIHdzZGwgbmFtZXNwYWNlCi0gICAgICAvLyBhbmQgaW52YWxpZCBkZXNjcmlwdGlvbnMKLSAgICAgIERlc2NyaXB0aW9uW10gZGVzY0xpc3QgPSBzZXJ2aWNlTGlzdFtpXS5nZXREZXNjcmlwdGlvbnMoKTsKLSAgICAgIGlmIChkZXNjTGlzdC5sZW5ndGggPCAxKQotICAgICAgICBjb250aW51ZTsKLSAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBkZXNjTGlzdFswXS5nZXRSZWZlcmVuY2VkTmFtZXNwYWNlKCk7Ci0gICAgICBpZiAobmFtZXNwYWNlID09IG51bGwpCi0gICAgICAgIGNvbnRpbnVlOwotICAgICAgZWxzZSBpZiAobmFtZXNwYWNlLmVxdWFscyhOQU1FU1BBQ0VfV1NETCkpCi0gICAgICB7Ci0gICAgICAgIFdzaWxXc2RsU2VydmljZUVsZW1lbnQgd3NkbFNlcnZpY2VFbGVtZW50ID0gbmV3IFdzaWxXc2RsU2VydmljZUVsZW1lbnQobmFtZXNwYWNlLCBnZXRNb2RlbCgpLCBzZXJ2aWNlTGlzdFtpXSk7Ci0gICAgICAgIHdzZGxTZXJ2aWNlRWxlbWVudC5zZXRCYXNlV3NpbFVSTChnZXRXc2lsVXJsKCkpOwotICAgICAgICBpZiAod3NkbFNlcnZpY2VFbGVtZW50LnZhbGlkYXRlV1NETFNlcnZpY2UoKSkKLSAgICAgICAgewotICAgICAgICAgIHdzZGxTZXJ2aWNlRWxlbWVudC5zZXROYW1lKHdzZGxTZXJ2aWNlRWxlbWVudC5nZXRXU0RMU2VydmljZVVSTCgpKTsKLSAgICAgICAgICB3c2RsU2VydmljZXNfLmFkZChuZXcgTGlzdEVsZW1lbnQod3NkbFNlcnZpY2VFbGVtZW50KSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgc2V0UHJvcGVydHlBc09iamVjdChXc2lsTW9kZWxDb25zdGFudHMuTElTVF9NQU5BR0VSX1dTRExfU0VSVklDRVMsIHdzZGxTZXJ2aWNlc18pOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGluaXRBbGxVRERJU2VydmljZXMoKQotICB7Ci0gICAgTGlzdE1hbmFnZXIgdWRkaVNlcnZpY2VzXyA9IG5ldyBMaXN0TWFuYWdlcigpOwotICAgIEluc3BlY3Rpb24gaW5zcGVjdGlvbiA9IHdzaWxEb2NfLmdldEluc3BlY3Rpb24oKTsKLSAgICBTZXJ2aWNlW10gc2VydmljZUxpc3QgPSBpbnNwZWN0aW9uLmdldFNlcnZpY2VzKCk7Ci0gICAgVmVjdG9yIHVkZGlTZXJ2aWNlRWxlbWVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2aWNlTGlzdC5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICAvLyBza2lwIGFueSBzZXJ2aWNlIHdpdGhvdXQgYSB3c2RsIG5hbWVzcGFjZQotICAgICAgLy8gYW5kIGludmFsaWQgZGVzY3JpcHRpb25zCi0gICAgICBEZXNjcmlwdGlvbltdIGRlc2NMaXN0ID0gc2VydmljZUxpc3RbaV0uZ2V0RGVzY3JpcHRpb25zKCk7Ci0gICAgICBpZiAoZGVzY0xpc3QubGVuZ3RoIDwgMSkKLSAgICAgICAgY29udGludWU7Ci0gICAgICBTdHJpbmcgbmFtZXNwYWNlID0gZGVzY0xpc3RbMF0uZ2V0UmVmZXJlbmNlZE5hbWVzcGFjZSgpOwotICAgICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsKQotICAgICAgICBjb250aW51ZTsKLSAgICAgIGVsc2UgaWYgKChuYW1lc3BhY2UuZXF1YWxzKE5BTUVTUEFDRV9VRERJX1YxKSB8fCBuYW1lc3BhY2UuZXF1YWxzKE5BTUVTUEFDRV9VRERJX1YyKSkpCi0gICAgICB7Ci0gICAgICAgIFdzaWxVZGRpU2VydmljZUVsZW1lbnQgdWRkaVNlcnZpY2VFbGVtZW50ID0gbmV3IFdzaWxVZGRpU2VydmljZUVsZW1lbnQobmFtZXNwYWNlLCBnZXRNb2RlbCgpLCBzZXJ2aWNlTGlzdFtpXSk7Ci0gICAgICAgIHVkZGlTZXJ2aWNlRWxlbWVudC5zZXRCYXNlV3NpbFVSTChnZXRXc2lsVXJsKCkpOwotICAgICAgICBpZiAodWRkaVNlcnZpY2VFbGVtZW50LnZhbGlkYXRlVURESVNlcnZpY2UoKSkKLSAgICAgICAgewotICAgICAgICAgIHVkZGlTZXJ2aWNlRWxlbWVudC5zZXROYW1lKHVkZGlTZXJ2aWNlRWxlbWVudC5nZXROYW1lKCkpOwotICAgICAgICAgIHVkZGlTZXJ2aWNlRWxlbWVudHMuYWRkKHVkZGlTZXJ2aWNlRWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmVmcmVzaFNlcnZpY2VEZWZpbml0aW9uc0Zyb21SZWdpc3RyeSh1ZGRpU2VydmljZUVsZW1lbnRzKTsKLSAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gdWRkaVNlcnZpY2VFbGVtZW50cy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIHVkZGlTZXJ2aWNlc18uYWRkKG5ldyBMaXN0RWxlbWVudChpdC5uZXh0KCkpKTsKLSAgICB9Ci0gICAgc2V0UHJvcGVydHlBc09iamVjdChXc2lsTW9kZWxDb25zdGFudHMuTElTVF9NQU5BR0VSX1VERElfU0VSVklDRVMsIHVkZGlTZXJ2aWNlc18pOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVmcmVzaFNlcnZpY2VEZWZpbml0aW9uc0Zyb21SZWdpc3RyeShWZWN0b3IgdWRkaVNlcnZpY2VFbGVtZW50cykKLSAgewotICAgIEhhc2hNYXAgaW5xdWlyeUFQSVRvU2VydmljZXMgPSBuZXcgSGFzaE1hcCgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdWRkaVNlcnZpY2VFbGVtZW50cy5zaXplKCk7IGkrKykKLSAgICB7Ci0gICAgICBXc2lsVWRkaVNlcnZpY2VFbGVtZW50IHVkZGlTZXJ2aWNlRWxlbWVudCA9IChXc2lsVWRkaVNlcnZpY2VFbGVtZW50KSB1ZGRpU2VydmljZUVsZW1lbnRzLmdldChpKTsKLSAgICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gdWRkaVNlcnZpY2VFbGVtZW50LmdldFVERElTZXJ2aWNlSW5xdWlyeUFQSSgpOwotICAgICAgaWYgKFZhbGlkYXRvci52YWxpZGF0ZVVSTChpbnF1aXJ5QVBJKSkKLSAgICAgIHsKLSAgICAgICAgVmVjdG9yIHNlcnZpY2VzID0gKFZlY3RvcikgaW5xdWlyeUFQSVRvU2VydmljZXMuZ2V0KGlucXVpcnlBUEkpOwotICAgICAgICBpZiAoc2VydmljZXMgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHNlcnZpY2VzID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgIGlucXVpcnlBUElUb1NlcnZpY2VzLnB1dChpbnF1aXJ5QVBJLCBzZXJ2aWNlcyk7Ci0gICAgICAgIH0KLSAgICAgICAgc2VydmljZXMuYWRkKHVkZGlTZXJ2aWNlRWxlbWVudCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHVkZGlTZXJ2aWNlRWxlbWVudC5zZXRTZXJ2aWNlRGVmaW5pdGlvbihudWxsKTsKLSAgICB9Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IGlucXVpcnlBUElUb1NlcnZpY2VzLmtleVNldCgpLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgewotICAgICAgU3RyaW5nIGlucXVpcnlBUEkgPSAoU3RyaW5nKSBpdC5uZXh0KCk7Ci0gICAgICBWZWN0b3Igc2VydmljZXMgPSAoVmVjdG9yKSBpbnF1aXJ5QVBJVG9TZXJ2aWNlcy5nZXQoaW5xdWlyeUFQSSk7Ci0gICAgICBVRERJUHJveHkgcHJveHk7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgUHJvcGVydGllcyBwcm9wcyA9IG5ldyBQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIHByb3BzLnB1dChBY3Rpb25JbnB1dHMuVFJBTlNQT1JUX0NMQVNTX05BTUUsIEFjdGlvbklucHV0cy5UUkFTUE9SVF9DTEFTUyk7Ci0gICAgICAgIHByb3h5ID0gbmV3IFVERElQcm94eShwcm9wcyk7Ci0gICAgICAgIHByb3h5LnNldElucXVpcnlVUkwobmV3IFVSTChpbnF1aXJ5QVBJKSk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICB7Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2VydmljZXMuc2l6ZSgpOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICBXc2lsVWRkaVNlcnZpY2VFbGVtZW50IHVkZGlTZXJ2aWNlRWxlbWVudCA9IChXc2lsVWRkaVNlcnZpY2VFbGVtZW50KSBzZXJ2aWNlcy5nZXQoaik7Ci0gICAgICAgICAgdWRkaVNlcnZpY2VFbGVtZW50LnNldFNlcnZpY2VEZWZpbml0aW9uKG51bGwpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgICAgVmVjdG9yIHNlcnZpY2VLZXlzID0gbmV3IFZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzZXJ2aWNlcy5zaXplKCk7IGorKykKLSAgICAgIHsKLSAgICAgICAgc2VydmljZUtleXMuYWRkKCgoV3NpbFVkZGlTZXJ2aWNlRWxlbWVudCkgc2VydmljZXMuZ2V0KGopKS5nZXRVRERJU2VydmljZUtleSgpKTsKLSAgICAgIH0KLSAgICAgIFZlY3RvciBidXNpbmVzc1NlcnZpY2VzOwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGJ1c2luZXNzU2VydmljZXMgPSBwcm94eS5nZXRfc2VydmljZURldGFpbChzZXJ2aWNlS2V5cykuZ2V0QnVzaW5lc3NTZXJ2aWNlVmVjdG9yKCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQotICAgICAgewotICAgICAgICBidXNpbmVzc1NlcnZpY2VzID0gbmV3IFZlY3RvcigpOwotICAgICAgICBpZiAoc2VydmljZUtleXMuc2l6ZSgpID4gMSkKLSAgICAgICAgewotICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgc2VydmljZUtleXMuc2l6ZSgpOyBrKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGJ1c2luZXNzU2VydmljZXMuYWRkKChCdXNpbmVzc1NlcnZpY2UpIHByb3h5LmdldF9zZXJ2aWNlRGV0YWlsKChTdHJpbmcpIHNlcnZpY2VLZXlzLmdldChrKSkuZ2V0QnVzaW5lc3NTZXJ2aWNlVmVjdG9yKCkuZ2V0KDApKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXhjZXB0aW9uKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBidXNpbmVzc1NlcnZpY2VzLmFkZChudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGJ1c2luZXNzU2VydmljZXMuYWRkKG51bGwpOwotICAgICAgfQotICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBzZXJ2aWNlcy5zaXplKCk7IGsrKykKLSAgICAgIHsKLSAgICAgICAgQnVzaW5lc3NTZXJ2aWNlIGJzID0gKEJ1c2luZXNzU2VydmljZSkgYnVzaW5lc3NTZXJ2aWNlcy5nZXQoayk7Ci0gICAgICAgIFdzaWxVZGRpU2VydmljZUVsZW1lbnQgdWRkaVNlcnZpY2VFbGVtZW50ID0gKFdzaWxVZGRpU2VydmljZUVsZW1lbnQpIHNlcnZpY2VzLmdldChrKTsKLSAgICAgICAgdWRkaVNlcnZpY2VFbGVtZW50LnNldFNlcnZpY2VEZWZpbml0aW9uKGJzKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgTGlzdE1hbmFnZXIgZ2V0QWxsV1NJTExpbmtzKCkKLSAgewotICAgIExpc3RNYW5hZ2VyIHdzaWxMaW5rc18gPSAoTGlzdE1hbmFnZXIpIGdldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9XU0lMX0xJTktTKTsKLSAgICBpZiAod3NpbExpbmtzXyA9PSBudWxsKQotICAgIHsKLSAgICAgIGluaXRBbGxXU0lMTGlua3MoKTsKLSAgICAgIHdzaWxMaW5rc18gPSAoTGlzdE1hbmFnZXIpIGdldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9XU0lMX0xJTktTKTsKLSAgICB9Ci0gICAgcmV0dXJuIHdzaWxMaW5rc187Ci0gIH0KLQotICBwdWJsaWMgTGlzdE1hbmFnZXIgZ2V0QWxsVURESUxpbmtzKCkKLSAgewotICAgIExpc3RNYW5hZ2VyIHVkZGlMaW5rc18gPSAoTGlzdE1hbmFnZXIpIGdldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9VRERJX0xJTktTKTsKLSAgICBpZiAodWRkaUxpbmtzXyA9PSBudWxsKQotICAgIHsKLSAgICAgIGluaXRBbGxVRERJTGlua3MoKTsKLSAgICAgIHVkZGlMaW5rc18gPSAoTGlzdE1hbmFnZXIpIGdldFByb3BlcnR5QXNPYmplY3QoV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9VRERJX0xJTktTKTsKLSAgICB9Ci0gICAgcmV0dXJuIHVkZGlMaW5rc187Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaW5pdEFsbFVERElMaW5rcygpCi0gIHsKLSAgICBMaXN0TWFuYWdlciB1ZGRpTGlua3NfID0gbmV3IExpc3RNYW5hZ2VyKCk7Ci0gICAgSW5zcGVjdGlvbiBpbnNwZWN0aW9uID0gd3NpbERvY18uZ2V0SW5zcGVjdGlvbigpOwotICAgIExpbmtbXSBsaW5rTGlzdCA9IGluc3BlY3Rpb24uZ2V0TGlua3MoKTsKLSAgICBWZWN0b3IgdWRkaUJ1c2luZXNzRWxlbWVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW5rTGlzdC5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICAvLyBwcm9jZXNzIGFueSBsaW5rcyB3aXRoIFVEREkgbmFtZXNwYWNlCi0gICAgICBTdHJpbmcgbmFtZXNwYWNlID0gbGlua0xpc3RbaV0uZ2V0UmVmZXJlbmNlZE5hbWVzcGFjZSgpOwotICAgICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsKQotICAgICAgICBjb250aW51ZTsKLSAgICAgIGVsc2UgaWYgKChuYW1lc3BhY2UuZXF1YWxzKE5BTUVTUEFDRV9VRERJX1YxKSB8fCBuYW1lc3BhY2UuZXF1YWxzKE5BTUVTUEFDRV9VRERJX1YyKSkpCi0gICAgICB7Ci0gICAgICAgIFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50IHVkZGlCdXNpbmVzc0VsZW1lbnQgPSBuZXcgV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQobmFtZXNwYWNlLCBnZXRNb2RlbCgpLCBsaW5rTGlzdFtpXSk7Ci0gICAgICAgIHVkZGlCdXNpbmVzc0VsZW1lbnQuc2V0QmFzZVdzaWxVUkwoZ2V0V3NpbFVybCgpKTsKLSAgICAgICAgaWYgKHVkZGlCdXNpbmVzc0VsZW1lbnQudmFsaWRhdGVVRERJTGluaygpKQotICAgICAgICB7Ci0gICAgICAgICAgdWRkaUJ1c2luZXNzRWxlbWVudC5zZXROYW1lKHVkZGlCdXNpbmVzc0VsZW1lbnQuZ2V0TmFtZSgpKTsKLSAgICAgICAgICB1ZGRpQnVzaW5lc3NFbGVtZW50cy5hZGQodWRkaUJ1c2luZXNzRWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmVmcmVzaFNlcnZpY2VQcm92aWRlcnNGcm9tUmVnaXN0cnkodWRkaUJ1c2luZXNzRWxlbWVudHMpOwotICAgIGZvciAoSXRlcmF0b3IgaXQgPSB1ZGRpQnVzaW5lc3NFbGVtZW50cy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIHVkZGlMaW5rc18uYWRkKG5ldyBMaXN0RWxlbWVudChpdC5uZXh0KCkpKTsKLSAgICB9Ci0gICAgc2V0UHJvcGVydHlBc09iamVjdChXc2lsTW9kZWxDb25zdGFudHMuTElTVF9NQU5BR0VSX1VERElfTElOS1MsIHVkZGlMaW5rc18pOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVmcmVzaFNlcnZpY2VQcm92aWRlcnNGcm9tUmVnaXN0cnkoVmVjdG9yIHVkZGlCdXNpbmVzc0VsZW1lbnRzKQotICB7Ci0gICAgSGFzaE1hcCBpbnF1aXJ5QVBJVG9CdXNpbmVzc2VzID0gbmV3IEhhc2hNYXAoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHVkZGlCdXNpbmVzc0VsZW1lbnRzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgIFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50IHVkZGlCdXNpbmVzc0VsZW1lbnQgPSAoV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQpIHVkZGlCdXNpbmVzc0VsZW1lbnRzLmdldChpKTsKLSAgICAgIFN0cmluZyBpbnF1aXJ5QVBJID0gdWRkaUJ1c2luZXNzRWxlbWVudC5nZXRVRERJTGlua0lucXVpcnlBUEkoKTsKLSAgICAgIGlmIChWYWxpZGF0b3IudmFsaWRhdGVVUkwoaW5xdWlyeUFQSSkpCi0gICAgICB7Ci0gICAgICAgIFZlY3RvciBidXNpbmVzc2VzID0gKFZlY3RvcikgaW5xdWlyeUFQSVRvQnVzaW5lc3Nlcy5nZXQoaW5xdWlyeUFQSSk7Ci0gICAgICAgIGlmIChidXNpbmVzc2VzID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBidXNpbmVzc2VzID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgIGlucXVpcnlBUElUb0J1c2luZXNzZXMucHV0KGlucXVpcnlBUEksIGJ1c2luZXNzZXMpOwotICAgICAgICB9Ci0gICAgICAgIGJ1c2luZXNzZXMuYWRkKHVkZGlCdXNpbmVzc0VsZW1lbnQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICB1ZGRpQnVzaW5lc3NFbGVtZW50LnNldFNlcnZpY2VQcm92aWRlcihudWxsKTsKLSAgICB9Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IGlucXVpcnlBUElUb0J1c2luZXNzZXMua2V5U2V0KCkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBTdHJpbmcgaW5xdWlyeUFQSSA9IChTdHJpbmcpIGl0Lm5leHQoKTsKLSAgICAgIFZlY3RvciBidXNpbmVzc2VzID0gKFZlY3RvcikgaW5xdWlyeUFQSVRvQnVzaW5lc3Nlcy5nZXQoaW5xdWlyeUFQSSk7Ci0gICAgICBVRERJUHJveHkgcHJveHk7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgUHJvcGVydGllcyBwcm9wcyA9IG5ldyBQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIHByb3BzLnB1dChBY3Rpb25JbnB1dHMuVFJBTlNQT1JUX0NMQVNTX05BTUUsIEFjdGlvbklucHV0cy5UUkFTUE9SVF9DTEFTUyk7Ci0gICAgICAgIHByb3h5ID0gbmV3IFVERElQcm94eShwcm9wcyk7Ci0gICAgICAgIHByb3h5LnNldElucXVpcnlVUkwobmV3IFVSTChpbnF1aXJ5QVBJKSk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgYnVzaW5lc3Nlcy5zaXplKCk7IGorKykKLSAgICAgICAgewotICAgICAgICAgIFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50IHVkZGlCdXNpbmVzc0VsZW1lbnQgPSAoV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQpIGJ1c2luZXNzZXMuZ2V0KGopOwotICAgICAgICAgIHVkZGlCdXNpbmVzc0VsZW1lbnQuc2V0U2VydmljZVByb3ZpZGVyKG51bGwpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgICAgVmVjdG9yIGJ1c2luZXNzS2V5cyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgYnVzaW5lc3Nlcy5zaXplKCk7IGorKykKLSAgICAgIHsKLSAgICAgICAgYnVzaW5lc3NLZXlzLmFkZCgoKFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50KSBidXNpbmVzc2VzLmdldChqKSkuZ2V0VURESUxpbmtCdXNpbmVzc0tleSgpKTsKLSAgICAgIH0KLSAgICAgIFZlY3RvciBidXNpbmVzc0VudGl0aWVzOwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGJ1c2luZXNzRW50aXRpZXMgPSBwcm94eS5nZXRfYnVzaW5lc3NEZXRhaWwoYnVzaW5lc3NLZXlzKS5nZXRCdXNpbmVzc0VudGl0eVZlY3RvcigpOwotICAgICAgfQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKLSAgICAgIHsKLSAgICAgICAgYnVzaW5lc3NFbnRpdGllcyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgaWYgKGJ1c2luZXNzS2V5cy5zaXplKCkgPiAxKQotICAgICAgICB7Ci0gICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBidXNpbmVzc0tleXMuc2l6ZSgpOyBrKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGJ1c2luZXNzRW50aXRpZXMuYWRkKChCdXNpbmVzc0VudGl0eSkgcHJveHkuZ2V0X2J1c2luZXNzRGV0YWlsKChTdHJpbmcpIGJ1c2luZXNzS2V5cy5nZXQoaykpLmdldEJ1c2luZXNzRW50aXR5VmVjdG9yKCkuZ2V0KDApKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXhjZXB0aW9uKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBidXNpbmVzc0VudGl0aWVzLmFkZChudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGJ1c2luZXNzRW50aXRpZXMuYWRkKG51bGwpOwotICAgICAgfQotICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBidXNpbmVzc2VzLnNpemUoKTsgaysrKQotICAgICAgewotICAgICAgICBCdXNpbmVzc0VudGl0eSBiZSA9IChCdXNpbmVzc0VudGl0eSkgYnVzaW5lc3NFbnRpdGllcy5nZXQoayk7Ci0gICAgICAgIFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50IHVkZGlCdXNpbmVzc0VsZW1lbnQgPSAoV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQpIGJ1c2luZXNzZXMuZ2V0KGspOwotICAgICAgICB1ZGRpQnVzaW5lc3NFbGVtZW50LnNldFNlcnZpY2VQcm92aWRlcihiZSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGluaXRBbGxXU0lMTGlua3MoKQotICB7Ci0gICAgTGlzdE1hbmFnZXIgd3NpbExpbmtzXyA9IG5ldyBMaXN0TWFuYWdlcigpOwotICAgIEluc3BlY3Rpb24gaW5zcGVjdGlvbiA9IHdzaWxEb2NfLmdldEluc3BlY3Rpb24oKTsKLSAgICBMaW5rW10gbGlua0xpc3QgPSBpbnNwZWN0aW9uLmdldExpbmtzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW5rTGlzdC5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICAvLyBwcm9jZXNzIGFueSBsaW5rcyB3aXRoIFVEREkgbmFtZXNwYWNlCi0gICAgICBTdHJpbmcgbmFtZXNwYWNlID0gbGlua0xpc3RbaV0uZ2V0UmVmZXJlbmNlZE5hbWVzcGFjZSgpOwotICAgICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsKQotICAgICAgICBjb250aW51ZTsKLSAgICAgIGVsc2UgaWYgKG5hbWVzcGFjZS5lcXVhbHMoTkFNRVNQQUNFX1dTSUxfSU5TUEVDVElPTikpCi0gICAgICB7Ci0gICAgICAgIFdzaWxXc2lsTGlua0VsZW1lbnQgd3NpbExpbmtFbGVtZW50ID0gbmV3IFdzaWxXc2lsTGlua0VsZW1lbnQobmFtZXNwYWNlLCBnZXRNb2RlbCgpLCBsaW5rTGlzdFtpXSk7Ci0gICAgICAgIHdzaWxMaW5rRWxlbWVudC5zZXRCYXNlV3NpbFVSTChnZXRXc2lsVXJsKCkpOwotICAgICAgICBpZiAod3NpbExpbmtFbGVtZW50LnZhbGlkYXRlV1NJTExpbmsoKSkKLSAgICAgICAgewotICAgICAgICAgIHdzaWxMaW5rRWxlbWVudC5zZXROYW1lKHdzaWxMaW5rRWxlbWVudC5nZXRXU0lMTGlua0xvY2F0aW9uKCkpOwotICAgICAgICAgIHdzaWxMaW5rc18uYWRkKG5ldyBMaXN0RWxlbWVudCh3c2lsTGlua0VsZW1lbnQpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBzZXRQcm9wZXJ0eUFzT2JqZWN0KFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfV1NJTF9MSU5LUywgd3NpbExpbmtzXyk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9kYXRhbW9kZWwvV3NpbExpbmtFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvZGF0YW1vZGVsL1dzaWxMaW5rRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmI1OTRlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9kYXRhbW9kZWwvV3NpbExpbmtFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuQWJzdHJhY3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkxpbms7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLQotLyoqCi0qIFRoZSBkYXRhIG1vZGVsIGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIAotKiBhIFdTSUwgTGluawotKi8KLXB1YmxpYyBjbGFzcyBXc2lsTGlua0VsZW1lbnQgZXh0ZW5kcyBXc2lsQ29tbW9uRWxlbWVudAotewotICBwcm90ZWN0ZWQgTGluayBsaW5rXzsKLQotICBwdWJsaWMgV3NpbExpbmtFbGVtZW50KFN0cmluZyBuYW1lLCBNb2RlbCBtb2RlbCwgTGluayBsaW5rKQotICB7Ci0gICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICAgIGxpbmtfID0gbGluazsKLSAgfQotCi0gIHB1YmxpYyBWZWN0b3IgZ2V0TGlua0Fic3RyYWN0TGFuZ3MoKQotICB7Ci0gICAgVmVjdG9yIHYgPSBuZXcgVmVjdG9yKCk7Ci0gICAgQWJzdHJhY3RbXSBhYnN0cmFjdHMgPSBsaW5rXy5nZXRBYnN0cmFjdHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFic3RyYWN0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICB2LmFkZChhYnN0cmFjdHNbaV0uZ2V0TGFuZygpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci0gIH0KLQotICBwdWJsaWMgVmVjdG9yIGdldExpbmtBYnN0cmFjdHMoKQotICB7Ci0gICAgVmVjdG9yIHYgPSBuZXcgVmVjdG9yKCk7Ci0gICAgQWJzdHJhY3RbXSBhYnN0cmFjdHMgPSBsaW5rXy5nZXRBYnN0cmFjdHMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFic3RyYWN0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICB2LmFkZChhYnN0cmFjdHNbaV0uZ2V0VGV4dCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9kYXRhbW9kZWwvV3NpbFNlcnZpY2VFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvZGF0YW1vZGVsL1dzaWxTZXJ2aWNlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODkzNWQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9kYXRhbW9kZWwvV3NpbFNlcnZpY2VFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuQWJzdHJhY3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2VOYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci0KLS8qKgotKiBUaGUgZGF0YSBtb2RlbCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyAKLSogYSBXU0lMIFNlcnZpY2UKLSovCi1wdWJsaWMgY2xhc3MgV3NpbFNlcnZpY2VFbGVtZW50IGV4dGVuZHMgV3NpbENvbW1vbkVsZW1lbnQKLXsKLSAgICBwcm90ZWN0ZWQgU2VydmljZSBzZXJ2aWNlXzsKLQotICAgIHB1YmxpYyBXc2lsU2VydmljZUVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBTZXJ2aWNlIHNlcnZpY2UpIHsKLSAgICAgICAgc3VwZXIobmFtZSwgbW9kZWwpOwotICAgICAgICBzZXJ2aWNlXyA9IHNlcnZpY2U7Ci0gICAgfQotCi0gICAgcHVibGljIFZlY3RvciBnZXRTZXJ2aWNlTmFtZUxhbmdzKCkgewotICAgICAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgU2VydmljZU5hbWVbXSBzZXJ2aWNlTmFtZXMgPSBzZXJ2aWNlXy5nZXRTZXJ2aWNlTmFtZXMoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2aWNlTmFtZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHYuYWRkKHNlcnZpY2VOYW1lc1tpXS5nZXRMYW5nKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KLQotICAgIHB1YmxpYyBWZWN0b3IgZ2V0U2VydmljZU5hbWVzKCkgewotICAgICAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgU2VydmljZU5hbWVbXSBzZXJ2aWNlTmFtZXMgPSBzZXJ2aWNlXy5nZXRTZXJ2aWNlTmFtZXMoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2aWNlTmFtZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHYuYWRkKHNlcnZpY2VOYW1lc1tpXS5nZXRUZXh0KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KLQotICAgIHB1YmxpYyBWZWN0b3IgZ2V0U2VydmljZUFic3RyYWN0TGFuZ3MoKSB7Ci0gICAgICAgIFZlY3RvciB2ID0gbmV3IFZlY3RvcigpOwotICAgICAgICBBYnN0cmFjdFtdIGFic3RyYWN0cyA9IHNlcnZpY2VfLmdldEFic3RyYWN0cygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFic3RyYWN0cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdi5hZGQoYWJzdHJhY3RzW2ldLmdldExhbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgfQotCi0gICAgcHVibGljIFZlY3RvciBnZXRTZXJ2aWNlQWJzdHJhY3RzKCkgewotICAgICAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgQWJzdHJhY3RbXSBhYnN0cmFjdHMgPSBzZXJ2aWNlXy5nZXRBYnN0cmFjdHMoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnN0cmFjdHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHYuYWRkKGFic3RyYWN0c1tpXS5nZXRUZXh0KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9kYXRhbW9kZWwvV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9kYXRhbW9kZWwvV3NpbFVkZGlCdXNpbmVzc0VsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNlNTAwMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvZGF0YW1vZGVsL1dzaWxVZGRpQnVzaW5lc3NFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWw7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuTGluazsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLkV4dGVuc2lvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLmV4dGVuc2lvbi51ZGRpLkJ1c2luZXNzRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5WYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy5CdXNpbmVzc0VudGl0eTsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuRGlzY292ZXJ5VVJMOwotCi0vKioKLSogVGhlIGRhdGEgbW9kZWwgZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgCi0qIGEgVURESSBzZXJ2aWNlIGluIGEgV1NJTCBkb2N1bWVudAotKi8KLXB1YmxpYyBjbGFzcyBXc2lsVWRkaUJ1c2luZXNzRWxlbWVudCBleHRlbmRzIFdzaWxMaW5rRWxlbWVudAotewotICAgIHByaXZhdGUgQnVzaW5lc3NFbnRpdHkgYnVzRW50aXR5XzsKLQotICAgIHB1YmxpYyBXc2lsVWRkaUJ1c2luZXNzRWxlbWVudChTdHJpbmcgbmFtZSwgTW9kZWwgbW9kZWwsIExpbmsgbGluaykgewotICAgICAgICBzdXBlcihuYW1lLCBtb2RlbCwgbGluayk7Ci0gICAgICAgIGJ1c0VudGl0eV8gPSBudWxsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VQcm92aWRlcihCdXNpbmVzc0VudGl0eSBiZSkgewotICAgICAgYnVzRW50aXR5XyA9IGJlOwotICAgIH0KLQotICAgIHB1YmxpYyBCdXNpbmVzc0VudGl0eSBnZXRTZXJ2aWNlUHJvdmlkZXIoKSB7Ci0gICAgICAgIHJldHVybiBidXNFbnRpdHlfOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLSAgICAgICAgcmV0dXJuIChidXNFbnRpdHlfICA9PSBudWxsKSA/IG51bGwgOiBidXNFbnRpdHlfLmdldERlZmF1bHROYW1lU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIChidXNFbnRpdHlfID09IG51bGwpID8gbnVsbCA6IGJ1c0VudGl0eV8uZ2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRVRERJTGlua0lucXVpcnlBUEkoKSB7Ci0gICAgICAgIEJ1c2luZXNzRGVzY3JpcHRpb24gYmQgPSBnZXRWYWxpZFVERElCdXNpbmVzc0Rlc2NyaXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiAoYmQgPT0gbnVsbCkgPyBudWxsIDogYmQuZ2V0TG9jYXRpb24oKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFVERElMaW5rQnVzaW5lc3NLZXkoKSB7Ci0gICAgICAgIEJ1c2luZXNzRGVzY3JpcHRpb24gYmQgPSBnZXRWYWxpZFVERElCdXNpbmVzc0Rlc2NyaXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiAoYmQgPT0gbnVsbCkgPyBudWxsIDogYmQuZ2V0QnVzaW5lc3NLZXkoKS5nZXRUZXh0KCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRVRERJTGlua0Rpc2NvdmVyeVVSTCgpIHsKLSAgICAgICAgQnVzaW5lc3NEZXNjcmlwdGlvbiBiZCA9IGdldFZhbGlkVURESUJ1c2luZXNzRGVzY3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGJkID09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBEaXNjb3ZlcnlVUkwgZGlzY292ZXJ5VVJMID0gYmQuZ2V0RGlzY292ZXJ5VVJMKCk7Ci0gICAgICAgICAgICByZXR1cm4gKGRpc2NvdmVyeVVSTCA9PSBudWxsKSA/IG51bGwgOiBkaXNjb3ZlcnlVUkwuZ2V0VGV4dCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVVRERJTGluaygpIHsKLSAgICAgICAgQnVzaW5lc3NEZXNjcmlwdGlvbiBiZCA9IGdldFZhbGlkVURESUJ1c2luZXNzRGVzY3JpcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIChiZCAhPSBudWxsKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIEJ1c2luZXNzRGVzY3JpcHRpb24gZ2V0VmFsaWRVRERJQnVzaW5lc3NEZXNjcmlwdGlvbigpIHsKLSAgICAgICAgRXh0ZW5zaW9uRWxlbWVudCBleHRFbGVtZW50ID0gbGlua18uZ2V0RXh0ZW5zaW9uRWxlbWVudCgpOwotICAgICAgICAvLyBUaGUgZXh0ZW5zaW9uIGVsZW1lbnQgb2YgYSBVRERJIGxpbmsKLSAgICAgICAgLy8gbXVzdCBiZSBhIEJ1c2luZXNzRGVzY3JpcHRpb24gZWxlbWVudAotICAgICAgICBpZiAoIShleHRFbGVtZW50IGluc3RhbmNlb2YgQnVzaW5lc3NEZXNjcmlwdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgLy8gQSB2YWxpZCBCdXNpbmVzc0Rlc2NyaXB0aW9uIG11c3QgaGF2ZSBhbiBpbnF1aXJ5IEFQSQotICAgICAgICBTdHJpbmcgaW5xdWlyeUFQSSA9ICgoQnVzaW5lc3NEZXNjcmlwdGlvbilleHRFbGVtZW50KS5nZXRMb2NhdGlvbigpOwotICAgICAgICBpZiAoIVZhbGlkYXRvci52YWxpZGF0ZVVSTChpbnF1aXJ5QVBJKSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAvLyBBIHZhbGlkIEJ1c2luZXNzRGVzY3JpcHRpb24gbXVzdCBoYXZlIGEgYnVzaW5lc3Mga2V5Ci0gICAgICAgIFN0cmluZyBidXNpbmVzc0tleSA9ICgoQnVzaW5lc3NEZXNjcmlwdGlvbilleHRFbGVtZW50KS5nZXRCdXNpbmVzc0tleSgpLmdldFRleHQoKTsKLSAgICAgICAgaWYgKGJ1c2luZXNzS2V5ID09IG51bGwgfHwgYnVzaW5lc3NLZXkubGVuZ3RoKCkgPD0gMCkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICByZXR1cm4gKEJ1c2luZXNzRGVzY3JpcHRpb24pZXh0RWxlbWVudDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gZ2V0TmFtZSgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9kYXRhbW9kZWwvV3NpbFVkZGlTZXJ2aWNlRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2RhdGFtb2RlbC9Xc2lsVWRkaVNlcnZpY2VFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MThkYzkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2RhdGFtb2RlbC9Xc2lsVWRkaVNlcnZpY2VFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsOwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkRlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5leHRlbnNpb24uRXh0ZW5zaW9uRWxlbWVudDsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLnVkZGkuU2VydmljZURlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkudXRpbC5VZGRpNGpIZWxwZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVmFsaWRhdG9yOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuc2VydmljZS5CdXNpbmVzc1NlcnZpY2U7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkRpc2NvdmVyeVVSTDsKLQotLyoqCi0qIFRoZSBkYXRhIG1vZGVsIGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIAotKiBhIFVEREkgc2VydmljZSBpbiBhIFdTSUwgZG9jdW1lbnQKLSovCi1wdWJsaWMgY2xhc3MgV3NpbFVkZGlTZXJ2aWNlRWxlbWVudCBleHRlbmRzIFdzaWxTZXJ2aWNlRWxlbWVudAotewotICAgIHByaXZhdGUgQnVzaW5lc3NTZXJ2aWNlIGJ1c1NlcnZpY2VfOwotCi0gICAgcHVibGljIFdzaWxVZGRpU2VydmljZUVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBTZXJ2aWNlIHNlcnZpY2UpIHsKLSAgICAgICAgc3VwZXIobmFtZSwgbW9kZWwsIHNlcnZpY2UpOwotICAgICAgICBidXNTZXJ2aWNlXyA9IG51bGw7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2VydmljZURlZmluaXRpb24oQnVzaW5lc3NTZXJ2aWNlIGJ1c1NlcnZpY2UpIHsKLSAgICAgICAgYnVzU2VydmljZV8gPSBidXNTZXJ2aWNlOwotICAgIH0KLQotICAgIHB1YmxpYyBCdXNpbmVzc1NlcnZpY2UgZ2V0U2VydmljZURlZmluaXRpb24oKSB7Ci0gICAgICAgIHJldHVybiBidXNTZXJ2aWNlXzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiAoYnVzU2VydmljZV8gPT0gbnVsbCkgPyBudWxsIDogYnVzU2VydmljZV8uZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uKCkgewotICAgICAgICByZXR1cm4gKGJ1c1NlcnZpY2VfID09IG51bGwpID8gbnVsbCA6IGJ1c1NlcnZpY2VfLmdldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0VURESVNlcnZpY2VJbnF1aXJ5QVBJKCkgewotICAgICAgICBTZXJ2aWNlRGVzY3JpcHRpb24gc2QgPSBnZXRWYWxpZFVERElTZXJ2aWNlRGVzY3JpcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIChzZCA9PSBudWxsKSA/IG51bGwgOiBzZC5nZXRMb2NhdGlvbigpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0VURESVNlcnZpY2VLZXkoKSB7Ci0gICAgICAgIFNlcnZpY2VEZXNjcmlwdGlvbiBzZCA9IGdldFZhbGlkVURESVNlcnZpY2VEZXNjcmlwdGlvbigpOwotICAgICAgICByZXR1cm4gKHNkID09IG51bGwpID8gbnVsbCA6IHNkLmdldFNlcnZpY2VLZXkoKS5nZXRUZXh0KCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRVRERJU2VydmljZURpc2NvdmVyeVVSTCgpIHsKLSAgICAgICAgU2VydmljZURlc2NyaXB0aW9uIHNkID0gZ2V0VmFsaWRVRERJU2VydmljZURlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGlmIChzZCA9PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgRGlzY292ZXJ5VVJMIGRpc2NvdmVyeVVSTCA9IHNkLmdldERpc2NvdmVyeVVSTCgpOwotICAgICAgICAgICAgcmV0dXJuIChkaXNjb3ZlcnlVUkwgPT0gbnVsbCkgPyBudWxsIDogZGlzY292ZXJ5VVJMLmdldFRleHQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgU2VydmljZURlc2NyaXB0aW9uIGdldFZhbGlkVURESVNlcnZpY2VEZXNjcmlwdGlvbigpIHsKLSAgICAgICAgRGVzY3JpcHRpb25bXSBkZXNjTGlzdCA9IHNlcnZpY2VfLmdldERlc2NyaXB0aW9ucygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlc2NMaXN0Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBFeHRlbnNpb25FbGVtZW50IGV4dEVsZW1lbnQgPSBkZXNjTGlzdFtpXS5nZXRFeHRlbnNpb25FbGVtZW50KCk7Ci0gICAgICAgICAgICAvLyBUaGUgZXh0ZW5zaW9uIGVsZW1lbnQgb2YgYSBVRERJIHNlcnZpY2UgZGVzY3JpcHRpb24KLSAgICAgICAgICAgIC8vIG11c3QgYmUgYSBTZXJ2aWNlRGVzY3JpcHRpb24gZWxlbWVudAotICAgICAgICAgICAgaWYgKCEoZXh0RWxlbWVudCBpbnN0YW5jZW9mIFNlcnZpY2VEZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAvLyBBIHZhbGlkIFNlcnZpY2VEZXNjcmlwdGlvbiBtdXN0IGhhdmUgYW4gaW5xdWlyeSBBUEkKLSAgICAgICAgICAgIGlmICghVmFsaWRhdG9yLnZhbGlkYXRlVVJMKCgoU2VydmljZURlc2NyaXB0aW9uKWV4dEVsZW1lbnQpLmdldExvY2F0aW9uKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgLy8gQSB2YWxpZCBTZXJ2aWNlRGVzY3JpcHRpb24gbXVzdCBoYXZlIGEgc2VydmljZSBrZXkKLSAgICAgICAgICAgIFN0cmluZyBzZXJ2aWNlS2V5ID0gKChTZXJ2aWNlRGVzY3JpcHRpb24pZXh0RWxlbWVudCkuZ2V0U2VydmljZUtleSgpLmdldFRleHQoKTsKLSAgICAgICAgICAgIGlmIChzZXJ2aWNlS2V5ID09IG51bGwgfHwgc2VydmljZUtleS5sZW5ndGgoKSA8PSAwKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmV0dXJuIChTZXJ2aWNlRGVzY3JpcHRpb24pZXh0RWxlbWVudDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZVVERElTZXJ2aWNlKCkgewotICAgICAgICBTZXJ2aWNlRGVzY3JpcHRpb24gc2QgPSBnZXRWYWxpZFVERElTZXJ2aWNlRGVzY3JpcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIChzZCAhPSBudWxsKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFdzZGxVcmwoKSB7Ci0gICAgICAgIHJldHVybiAobmV3IFVkZGk0akhlbHBlcigpKS5nZXRXU0RMKGdldFNlcnZpY2VEZWZpbml0aW9uKCksIG51bGwpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiBnZXROYW1lKCk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2RhdGFtb2RlbC9Xc2lsV3NkbFNlcnZpY2VFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvZGF0YW1vZGVsL1dzaWxXc2RsU2VydmljZUVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNiYWQzMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvZGF0YW1vZGVsL1dzaWxXc2RsU2VydmljZUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5EZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuU2VydmljZTsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLkV4dGVuc2lvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLmV4dGVuc2lvbi53c2RsLkltcGxlbWVudGVkQmluZGluZzsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLndzZGwuUmVmZXJlbmNlOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5leHRlbnNpb24ud3NkbC5SZWZlcmVuY2VkU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLk1vZGVsOwotCi0vKioKLSogVGhlIGRhdGEgbW9kZWwgZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgCi0qIGEgV1NETCBzZXJ2aWNlIGluIGEgV1NJTCBkb2N1bWVudAotKi8KLXB1YmxpYyBjbGFzcyBXc2lsV3NkbFNlcnZpY2VFbGVtZW50IGV4dGVuZHMgV3NpbFNlcnZpY2VFbGVtZW50Ci17Ci0gICAgcHVibGljIFdzaWxXc2RsU2VydmljZUVsZW1lbnQoU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsLCBTZXJ2aWNlIHNlcnZpY2UpIHsKLSAgICAgICAgc3VwZXIobmFtZSwgbW9kZWwsIHNlcnZpY2UpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0V1NETFNlcnZpY2VVUkwoKSB7Ci0gICAgICAgIERlc2NyaXB0aW9uIGRlc2MgPSBnZXRWYWxpZFdTRExEZXNjcmlwdGlvbigpOwotICAgICAgICByZXR1cm4gKGRlc2MgPT0gbnVsbCkgPyBudWxsIDogbWFrZUFic29sdXRlKGRlc2MuZ2V0TG9jYXRpb24oKSk7Ci0gICAgfQotCi0gICAgcHVibGljIFZlY3RvciBnZXRXU0RMQmluZGluZygpIHsKLSAgICAgICAgVmVjdG9yIHYgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgIERlc2NyaXB0aW9uW10gZGVzY0xpc3QgPSBzZXJ2aWNlXy5nZXREZXNjcmlwdGlvbnMoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZXNjTGlzdC5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgRXh0ZW5zaW9uRWxlbWVudCBleHRFbGVtZW50ID0gZGVzY0xpc3RbaV0uZ2V0RXh0ZW5zaW9uRWxlbWVudCgpOwotICAgICAgICAgICAgaWYgKGV4dEVsZW1lbnQgIT0gbnVsbCAmJiBleHRFbGVtZW50IGluc3RhbmNlb2YgUmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICAgICAgUmVmZXJlbmNlZFNlcnZpY2UgcmVmU2VydmljZSA9ICgoUmVmZXJlbmNlKWV4dEVsZW1lbnQpLmdldFJlZmVyZW5jZWRTZXJ2aWNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlZlNlcnZpY2UgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICB2LmFkZChyZWZTZXJ2aWNlLmdldFJlZmVyZW5jZWRTZXJ2aWNlTmFtZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgSW1wbGVtZW50ZWRCaW5kaW5nW10gaW1wbEJpbmRpbmdMaXN0ID0gKChSZWZlcmVuY2UpZXh0RWxlbWVudCkuZ2V0SW1wbGVtZW50ZWRCaW5kaW5ncygpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaW1wbEJpbmRpbmdMaXN0Lmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHYuYWRkKGltcGxCaW5kaW5nTGlzdFtqXS5nZXRCaW5kaW5nTmFtZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgfQotICAgIAotICAgIHByaXZhdGUgRGVzY3JpcHRpb24gZ2V0VmFsaWRXU0RMRGVzY3JpcHRpb24oKSB7Ci0gICAgICAgIERlc2NyaXB0aW9uW10gZGVzY0xpc3QgPSBzZXJ2aWNlXy5nZXREZXNjcmlwdGlvbnMoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZXNjTGlzdC5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgLy8gc2tpcCB0aGlzIGRlc2NyaXB0aW9uIGlmIHRoZSBsb2NhdGlvaW4gYXR0cmlidXRlIGlzIGEgbWFsZm9ybWVkIFVSTAotICAgICAgICAgICAgU3RyaW5nIGxvY2F0aW9uID0gZGVzY0xpc3RbaV0uZ2V0TG9jYXRpb24oKTsKLSAgICAgICAgICAgIGlmIChsb2NhdGlvbiA9PSBudWxsIHx8IGxvY2F0aW9uLmxlbmd0aCgpIDw9IDApCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAvLyBza2lwIHRoaXMgZGVzY3JpcHRpb24gaWYgdGhlIGV4dGVuc2lvbiBlbGVtZW50IGluZGljYXRlcwotICAgICAgICAgICAgLy8gdGhhdCB0aGUgZGVzY3JpcHRpb24ncyBsb2NhdGlvbiBjb250YWlucyBvbmx5IHRoZSB3c2RsIGJpbmRpbmcKLSAgICAgICAgICAgIEV4dGVuc2lvbkVsZW1lbnQgZXh0RWxlbWVudCA9IGRlc2NMaXN0W2ldLmdldEV4dGVuc2lvbkVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChleHRFbGVtZW50ICE9IG51bGwgJiYgZXh0RWxlbWVudCBpbnN0YW5jZW9mIFJlZmVyZW5jZSkgewotICAgICAgICAgICAgICAgIEJvb2xlYW4gZW5kcG9pbnRQcmVzZW50ID0gKChSZWZlcmVuY2UpZXh0RWxlbWVudCkuZ2V0RW5kcG9pbnRQcmVzZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVuZHBvaW50UHJlc2VudCAhPSBudWxsICYmIGVuZHBvaW50UHJlc2VudC5ib29sZWFuVmFsdWUoKSA9PSBmYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBhIHZhbGlkIGRlc2NyaXB0aW9uIGlzIGZvdW5kCi0gICAgICAgICAgICByZXR1cm4gZGVzY0xpc3RbaV07Ci0gICAgICAgIH0KLSAgICAgICAgLy8gbm8gdmFsaWQgZGVzY3JpcHRpb24gaXMgZm91bmQgZm9yIHRoaXMgc2VydmljZQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZVdTRExTZXJ2aWNlKCkgewotICAgICAgICBEZXNjcmlwdGlvbiBkZXNjID0gZ2V0VmFsaWRXU0RMRGVzY3JpcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIChkZXNjICE9IG51bGwpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiBnZXRXU0RMU2VydmljZVVSTCgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9kYXRhbW9kZWwvV3NpbFdzaWxMaW5rRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2RhdGFtb2RlbC9Xc2lsV3NpbExpbmtFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NGE1NzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL2RhdGFtb2RlbC9Xc2lsV3NpbExpbmtFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsOwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkxpbms7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5Nb2RlbDsKLQotLyoqCi0qIFRoZSBkYXRhIG1vZGVsIGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIAotKiBhIFdTSUwgbGluayBpbiBhIFdTSUwgZG9jdW1lbnQKLSovCi1wdWJsaWMgY2xhc3MgV3NpbFdzaWxMaW5rRWxlbWVudCBleHRlbmRzIFdzaWxMaW5rRWxlbWVudAotewotICBwdWJsaWMgV3NpbFdzaWxMaW5rRWxlbWVudChTdHJpbmcgbmFtZSwgTW9kZWwgbW9kZWwsIExpbmsgbGluaykKLSAgewotICAgIHN1cGVyKG5hbWUsIG1vZGVsLCBsaW5rKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V1NJTExpbmtMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gbWFrZUFic29sdXRlKGxpbmtfLmdldExvY2F0aW9uKCkpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGVXU0lMTGluaygpCi0gIHsKLSAgICByZXR1cm4gKGxpbmtfLmdldExvY2F0aW9uKCkgIT0gbnVsbCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIHJldHVybiBnZXRXU0lMTGlua0xvY2F0aW9uKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9BZGRCdXNpbmVzc1RvRmF2b3JpdGVzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0FkZEJ1c2luZXNzVG9GYXZvcml0ZXNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YjUzMjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0FkZEJ1c2luZXNzVG9GYXZvcml0ZXNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLkFkZFRvRmF2b3JpdGVzQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBBZGRCdXNpbmVzc1RvRmF2b3JpdGVzVG9vbCBleHRlbmRzIEFjdGlvblRvb2wgewotICAgIHB1YmxpYyBBZGRCdXNpbmVzc1RvRmF2b3JpdGVzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgImltYWdlcy9mYXZvcml0ZXNfZW5hYmxlZC5naWYiLCAiaW1hZ2VzL2Zhdm9yaXRlc19oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8sIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gQWRkVG9GYXZvcml0ZXNBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgdG9vbElkXyk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0FkZEJ1c2luZXNzVG9VRERJUGVyc3BlY3RpdmVUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRmMmQ1OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkFjdGlvblRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZVRvb2wgZXh0ZW5kcyBBY3Rpb25Ub29sIHsKLSAgICBwdWJsaWMgQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJ3c2lsL2ltYWdlcy9hZGRfdG9fVURESV9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZiIsICJ3c2lsL2ltYWdlcy9hZGRfdG9fVURESV9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8sIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gQWRkQnVzaW5lc3NUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9BZGRTZXJ2aWNlVG9GYXZvcml0ZXNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvQWRkU2VydmljZVRvRmF2b3JpdGVzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTllM2U1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9BZGRTZXJ2aWNlVG9GYXZvcml0ZXNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLkFkZFRvRmF2b3JpdGVzQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBBZGRTZXJ2aWNlVG9GYXZvcml0ZXNUb29sIGV4dGVuZHMgQWN0aW9uVG9vbCB7Ci0gICAgcHVibGljIEFkZFNlcnZpY2VUb0Zhdm9yaXRlc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZmF2b3JpdGVzX2VuYWJsZWQuZ2lmIiwgImltYWdlcy9mYXZvcml0ZXNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIEFkZFRvRmF2b3JpdGVzQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8pOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0FkZFNlcnZpY2VUb1VERElQZXJzcGVjdGl2ZVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9BZGRTZXJ2aWNlVG9VRERJUGVyc3BlY3RpdmVUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5OGJlYjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0FkZFNlcnZpY2VUb1VERElQZXJzcGVjdGl2ZVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkFjdGlvblRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQWRkU2VydmljZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBBZGRTZXJ2aWNlVG9VRERJUGVyc3BlY3RpdmVUb29sIGV4dGVuZHMgQWN0aW9uVG9vbCB7Ci0gICAgcHVibGljIEFkZFNlcnZpY2VUb1VERElQZXJzcGVjdGl2ZVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJ3c2lsL2ltYWdlcy9hZGRfdG9fVURESV9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZiIsICJ3c2lsL2ltYWdlcy9hZGRfdG9fVURESV9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8sIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gQWRkU2VydmljZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8pOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0FkZFdTRExTZXJ2aWNlVG9GYXZvcml0ZXNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvQWRkV1NETFNlcnZpY2VUb0Zhdm9yaXRlc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlkMGE0Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvQWRkV1NETFNlcnZpY2VUb0Zhdm9yaXRlc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkFjdGlvblRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQWRkVG9GYXZvcml0ZXNBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIEFkZFdTRExTZXJ2aWNlVG9GYXZvcml0ZXNUb29sIGV4dGVuZHMgQWN0aW9uVG9vbCB7Ci0gICAgcHVibGljIEFkZFdTRExTZXJ2aWNlVG9GYXZvcml0ZXNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAiaW1hZ2VzL2Zhdm9yaXRlc19lbmFibGVkLmdpZiIsICJpbWFnZXMvZmF2b3JpdGVzX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0V1NJTFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgdG9vbElkXywgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKCkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBBZGRUb0Zhdm9yaXRlc0FjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9BZGRXU0lMVG9GYXZvcml0ZXNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvQWRkV1NJTFRvRmF2b3JpdGVzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTgwYWQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9BZGRXU0lMVG9GYXZvcml0ZXNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLkFkZFRvRmF2b3JpdGVzQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBBZGRXU0lMVG9GYXZvcml0ZXNUb29sIGV4dGVuZHMgQWN0aW9uVG9vbCB7Ci0gICAgcHVibGljIEFkZFdTSUxUb0Zhdm9yaXRlc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZmF2b3JpdGVzX2VuYWJsZWQuZ2lmIiwgImltYWdlcy9mYXZvcml0ZXNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIEFkZFRvRmF2b3JpdGVzQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQsIEFjdGlvbklucHV0cy5WSUVXVE9PTElEX0RFRkFVTFQpOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0NsZWFyV1NJTFRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9DbGVhcldTSUxUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNTgwZmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0NsZWFyV1NJTFRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkFjdGlvblRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQ2xlYXJXU0lMQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBDbGVhcldTSUxUb29sIGV4dGVuZHMgQWN0aW9uVG9vbCB7Ci0gICAgcHVibGljIENsZWFyV1NJTFRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiLCAiaW1hZ2VzL2NsZWFyX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0V1NJTFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKCkgewotICAgICAgICByZXR1cm4gQ2xlYXJXU0lMQWN0aW9uLmdldEFjdGlvbkxpbmsodG9vbE1hbmFnZXJfLmdldE5vZGUoKS5nZXROb2RlSWQoKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0ltcG9ydFdTRExUb0ZpbGVTeXN0ZW1Ub29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvSW1wb3J0V1NETFRvRmlsZVN5c3RlbVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZmMzg2Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvSW1wb3J0V1NETFRvRmlsZVN5c3RlbVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkltcG9ydFRvRmlsZVN5c3RlbVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgSW1wb3J0V1NETFRvRmlsZVN5c3RlbVRvb2wgZXh0ZW5kcyBJbXBvcnRUb0ZpbGVTeXN0ZW1Ub29sIHsKLSAgICBwdWJsaWMgSW1wb3J0V1NETFRvRmlsZVN5c3RlbVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0V1NJTFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgdG9vbElkXywgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKCkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8pOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0ltcG9ydFdTSUxUb0ZpbGVTeXN0ZW1Ub29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvSW1wb3J0V1NJTFRvRmlsZVN5c3RlbVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjYTJkMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvSW1wb3J0V1NJTFRvRmlsZVN5c3RlbVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkltcG9ydFRvRmlsZVN5c3RlbVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuSW1wb3J0V1NJTFRvRmlsZVN5c3RlbUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgSW1wb3J0V1NJTFRvRmlsZVN5c3RlbVRvb2wgZXh0ZW5kcyBJbXBvcnRUb0ZpbGVTeXN0ZW1Ub29sIHsKLSAgICBwdWJsaWMgSW1wb3J0V1NJTFRvRmlsZVN5c3RlbVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0V1NJTFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRBY3Rpb25MaW5rKCkgewotICAgICAgICByZXR1cm4gSW1wb3J0V1NJTFRvRmlsZVN5c3RlbUFjdGlvbi5nZXRBY3Rpb25MaW5rKHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCwgQWN0aW9uSW5wdXRzLlZJRVdUT09MSURfREVGQVVMVCk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvTGlzdFVERElCdXNpbmVzc1Rvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9MaXN0VURESUJ1c2luZXNzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmVlNTZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9MaXN0VURESUJ1c2luZXNzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Qcm94eUxvYWRQYWdlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVmlld1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIExpc3RVRERJQnVzaW5lc3NUb29sIGV4dGVuZHMgVmlld1Rvb2wgewotICAgIHB1YmxpYyBMaXN0VURESUJ1c2luZXNzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgIndzaWwvaW1hZ2VzL2xpc3RfYnVzaW5lc3NfZW5hYmxlZC5naWYiLCAid3NpbC9pbWFnZXMvbGlzdF9idXNpbmVzc19oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIGFkZFNldERlZmF1bHRWaWV3VG9vbChUb29sTWFuYWdlciB2aWV3VG9vbE1hbmFnZXIsIGludCBpbmRleCkgewotICAgICAgICBuZXcgV3NpbFNldERlZmF1bHRWaWV3VG9vbCh2aWV3VG9vbE1hbmFnZXIsICB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Q29udHJvbGxlcigpLmdldE1lc3NhZ2UoIkFMVF9CQUNLX1RPX1RPUCIpKTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBhZGRUb29scyhUb29sTWFuYWdlciB2aWV3VG9vbE1hbmFnZXIsIGludCBpbmRleCkgewotICAgICAgICBuZXcgVWRkaUJ1c2luZXNzRGV0YWlsc1Rvb2wodmlld1Rvb2xNYW5hZ2VyLCB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Q29udHJvbGxlcigpLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldE1lc3NhZ2UoIkFMVF9VRERJX0xJTktfREVUQUlMUyIpKTsKLSAgICAgICAgbmV3IEFkZEJ1c2luZXNzVG9VRERJUGVyc3BlY3RpdmVUb29sKHZpZXdUb29sTWFuYWdlciwgdG9vbE1hbmFnZXJfLmdldE5vZGUoKS5nZXROb2RlTWFuYWdlcigpLmdldENvbnRyb2xsZXIoKS5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlKCJBTFRfQUREX0JVU0lORVNTX1RPX1VERElfUEVSU1BFQ1RJVkUiKSk7Ci0gICAgICAgIG5ldyBBZGRCdXNpbmVzc1RvRmF2b3JpdGVzVG9vbCh2aWV3VG9vbE1hbmFnZXIsIHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRDb250cm9sbGVyKCkuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZSgiQUxUX0FERF9VRERJX0JVU0lORVNTX1RPX0ZBVk9SSVRFUyIpKTsKLSAgICAgICAgbmV3IFJlZnJlc2hVRERJQnVzaW5lc3NUb29sKHZpZXdUb29sTWFuYWdlciwgdG9vbE1hbmFnZXJfLmdldE5vZGUoKS5nZXROb2RlTWFuYWdlcigpLmdldENvbnRyb2xsZXIoKS5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlKCJBTFRfUkVGUkVTSF9VRERJX0JVU0lORVNTIikpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgICAgIHJldHVybiBQcm94eUxvYWRQYWdlQWN0aW9uLmdldEFjdGlvbkxpbmsoIndzaWwvdmlld3MvVWRkaUJ1c2luZXNzVmlldy5qc3AiKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvTGlzdFVERElTZXJ2aWNlc1Rvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9MaXN0VURESVNlcnZpY2VzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmIwNjk1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9MaXN0VURESVNlcnZpY2VzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5Qcm94eUxvYWRQYWdlQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVmlld1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIExpc3RVRERJU2VydmljZXNUb29sIGV4dGVuZHMgVmlld1Rvb2wgewotICAgIHB1YmxpYyBMaXN0VURESVNlcnZpY2VzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgIndzaWwvaW1hZ2VzL2xpc3RfVURESV9zZXJ2aWNlX2VuYWJsZWQuZ2lmIiwgIndzaWwvaW1hZ2VzL2xpc3RfVURESV9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0V1NJTFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgYWRkU2V0RGVmYXVsdFZpZXdUb29sKFRvb2xNYW5hZ2VyIHZpZXdUb29sTWFuYWdlciwgaW50IGluZGV4KSB7Ci0gICAgICAgIG5ldyBXc2lsU2V0RGVmYXVsdFZpZXdUb29sKHZpZXdUb29sTWFuYWdlciwgIHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRDb250cm9sbGVyKCkuZ2V0TWVzc2FnZSgiQUxUX0JBQ0tfVE9fVE9QIikpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIGFkZFRvb2xzKFRvb2xNYW5hZ2VyIHZpZXdUb29sTWFuYWdlciwgaW50IGluZGV4KSB7Ci0gICAgICAgIENvbnRyb2xsZXIgY29udHJvbGxlciA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRDb250cm9sbGVyKCk7Ci0gICAgICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgICAgICBuZXcgVWRkaVNlcnZpY2VEZXRhaWxzVG9vbCh2aWV3VG9vbE1hbmFnZXIsIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfV1NJTF9TRVJWSUNFX0RFVEFJTFMiKSk7Ci0gICAgICAgIG5ldyBXc2lsSW1wb3J0V1NETFRvV29ya2JlbmNoVG9vbCh2aWV3VG9vbE1hbmFnZXIsIGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0lNUE9SVF9XU0RMX1RPX1dPUktCRU5DSCIpKTsKLSAgICAgICAgbmV3IEltcG9ydFdTRExUb0ZpbGVTeXN0ZW1Ub29sKHZpZXdUb29sTWFuYWdlciwgY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfV1NETF9JTVBPUlRfVE9fRlMiKSk7Ci0gICAgICAgIG5ldyBXc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wodmlld1Rvb2xNYW5hZ2VyLCBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9MQVVOQ0hfV0VCX1NFUlZJQ0VfV0laQVJEIikpOwotICAgICAgICBuZXcgQWRkU2VydmljZVRvVURESVBlcnNwZWN0aXZlVG9vbCh2aWV3VG9vbE1hbmFnZXIsIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfQUREX1NFUlZJQ0VfVE9fVURESV9QRVJTUEVDVElWRSIpKTsKLSAgICAgICAgbmV3IEFkZFNlcnZpY2VUb0Zhdm9yaXRlc1Rvb2wodmlld1Rvb2xNYW5hZ2VyLCB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0FERF9TRVJWSUNFX1RPX0ZBVk9SSVRFUyIpKTsKLSAgICAgICAgbmV3IFJlZnJlc2hVRERJU2VydmljZVRvb2wodmlld1Rvb2xNYW5hZ2VyLCB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1JFRlJFU0hfVURESV9TRVJWSUNFIikpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgICAgIHJldHVybiBQcm94eUxvYWRQYWdlQWN0aW9uLmdldEFjdGlvbkxpbmsoIndzaWwvdmlld3MvVWRkaVNlcnZpY2VzVmlldy5qc3AiKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9MaXN0V1NETFNlcnZpY2VzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0xpc3RXU0RMU2VydmljZXNUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YjllZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0xpc3RXU0RMU2VydmljZXNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVmlld1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIExpc3RXU0RMU2VydmljZXNUb29sIGV4dGVuZHMgVmlld1Rvb2wgewotICAgIHB1YmxpYyBMaXN0V1NETFNlcnZpY2VzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgIndzaWwvaW1hZ2VzL2xpc3RfV1NETF9zZXJ2aWNlX2VuYWJsZWQuZ2lmIiwgIndzaWwvaW1hZ2VzL2xpc3RfV1NETF9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTZWxlY3RUb29sQWN0aW9uSHJlZihib29sZWFuIGZvckhpc3RvcnkpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gU2VsZWN0V1NJTFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgYWRkU2V0RGVmYXVsdFZpZXdUb29sKFRvb2xNYW5hZ2VyIHZpZXdUb29sTWFuYWdlciwgaW50IGluZGV4KSB7Ci0gICAgICAgIG5ldyBXc2lsU2V0RGVmYXVsdFZpZXdUb29sKHZpZXdUb29sTWFuYWdlciwgIHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRDb250cm9sbGVyKCkuZ2V0TWVzc2FnZSgiQUxUX0JBQ0tfVE9fVE9QIikpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIGFkZFRvb2xzKFRvb2xNYW5hZ2VyIHZpZXdUb29sTWFuYWdlciwgaW50IGluZGV4KSB7Ci0gICAgICAgIENvbnRyb2xsZXIgY29udHJvbGxlciA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRDb250cm9sbGVyKCk7Ci0gICAgICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgICAgICBuZXcgV3NkbFNlcnZpY2VEZXRhaWxzVG9vbCh2aWV3VG9vbE1hbmFnZXIsIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfV1NJTF9TRVJWSUNFX0RFVEFJTFMiKSk7Ci0gICAgICAgIG5ldyBXc2lsSW1wb3J0V1NETFRvV29ya2JlbmNoVG9vbCh2aWV3VG9vbE1hbmFnZXIsIGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0lNUE9SVF9XU0RMX1RPX1dPUktCRU5DSCIpKTsKLSAgICAgICAgbmV3IEltcG9ydFdTRExUb0ZpbGVTeXN0ZW1Ub29sKHZpZXdUb29sTWFuYWdlciwgY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfV1NETF9JTVBPUlRfVE9fRlMiKSk7Ci0gICAgICAgIG5ldyBXc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wodmlld1Rvb2xNYW5hZ2VyLCBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9MQVVOQ0hfV0VCX1NFUlZJQ0VfV0laQVJEIikpOwotICAgICAgICBuZXcgV3NpbEFkZFRvV1NETFBlcnNwZWN0aXZlVG9vbCh2aWV3VG9vbE1hbmFnZXIsIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfQUREX1dTRExfVE9fV1NETF9QRVJTUEVDVElWRSIpKTsKLSAgICAgICAgbmV3IEFkZFdTRExTZXJ2aWNlVG9GYXZvcml0ZXNUb29sKHZpZXdUb29sTWFuYWdlciwgd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9BRERfV1NETF9TRVJWSUNFX1RPX0ZBVk9SSVRFUyIpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gIndzaWwvdmlld3MvV3NkbFNlcnZpY2VzVmlldy5qc3AiOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9MaXN0V1NJTExpbmtzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0xpc3RXU0lMTGlua3NUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0NWI4MmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL0xpc3RXU0lMTGlua3NUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVmlld1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIExpc3RXU0lMTGlua3NUb29sIGV4dGVuZHMgVmlld1Rvb2wgewotICAgIHB1YmxpYyBMaXN0V1NJTExpbmtzVG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgIndzaWwvaW1hZ2VzL2xpc3RfV1NJTF9lbmFibGVkLmdpZiIsICJ3c2lsL2ltYWdlcy9saXN0X1dTSUxfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgdG9vbElkXywgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xJZCgpLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgdm9pZCBhZGRTZXREZWZhdWx0Vmlld1Rvb2woVG9vbE1hbmFnZXIgdmlld1Rvb2xNYW5hZ2VyLCBpbnQgaW5kZXgpIHsKLSAgICAgICAgbmV3IFdzaWxTZXREZWZhdWx0Vmlld1Rvb2wodmlld1Rvb2xNYW5hZ2VyLCAgdG9vbE1hbmFnZXJfLmdldE5vZGUoKS5nZXROb2RlTWFuYWdlcigpLmdldENvbnRyb2xsZXIoKS5nZXRNZXNzYWdlKCJBTFRfQkFDS19UT19UT1AiKSk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgYWRkVG9vbHMoVG9vbE1hbmFnZXIgdmlld1Rvb2xNYW5hZ2VyLCBpbnQgaW5kZXgpIHsKLSAgICAgICAgbmV3IFdzaWxMaW5rRGV0YWlsc1Rvb2wodmlld1Rvb2xNYW5hZ2VyLCB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Q29udHJvbGxlcigpLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldE1lc3NhZ2UoIkFMVF9XU0lMX0xJTktfREVUQUlMUyIpKTsKLSAgICAgICAgbmV3IE9wZW5XU0lMTGlua1Rvb2wodmlld1Rvb2xNYW5hZ2VyLCB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Q29udHJvbGxlcigpLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldE1lc3NhZ2UoIkFMVF9PUEVOX1dTSUxfTElOSyIpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gIndzaWwvdmlld3MvV3NpbExpbmtzVmlldy5qc3AiOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9PcGVuV1NJTExpbmtUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvT3BlbldTSUxMaW5rVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTUxY2VlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9PcGVuV1NJTExpbmtUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLk9wZW5XU0lMTGlua0FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgT3BlbldTSUxMaW5rVG9vbCBleHRlbmRzIEFjdGlvblRvb2wgewotICAgIHB1YmxpYyBPcGVuV1NJTExpbmtUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAid3NpbC9pbWFnZXMvb3Blbl93c2lsX2VuYWJsZWQuZ2lmIiwgIndzaWwvaW1hZ2VzL29wZW5fd3NpbF9oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8sIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gT3BlbldTSUxMaW5rQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8pOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL09wZW5XU0lMVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL09wZW5XU0lMVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTkxYTQ3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9PcGVuV1NJTFRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgT3BlbldTSUxUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotICAgIHB1YmxpYyBPcGVuV1NJTFRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJ3c2lsL2ltYWdlcy9vcGVuX3dzaWxfZW5hYmxlZC5naWYiLCAid3NpbC9pbWFnZXMvb3Blbl93c2lsX2hpZ2hsaWdodGVkLmdpZiIsIGFsdCk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgaW5pdERlZmF1bHRQcm9wZXJ0aWVzKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgICAgIHJldHVybiAid3NpbC9mb3Jtcy9PcGVuV1NJTEZvcm0uanNwIjsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9SZWZyZXNoVURESUJ1c2luZXNzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1JlZnJlc2hVRERJQnVzaW5lc3NUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZjczYjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1JlZnJlc2hVRERJQnVzaW5lc3NUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlJlZnJlc2hBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIFJlZnJlc2hVRERJQnVzaW5lc3NUb29sIGV4dGVuZHMgQWN0aW9uVG9vbCB7Ci0gICAgcHVibGljIFJlZnJlc2hVRERJQnVzaW5lc3NUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAiaW1hZ2VzL3JlZnJlc2hfZW5hYmxlZC5naWYiLCAiaW1hZ2VzL3JlZnJlc2hfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFJlZnJlc2hBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgdG9vbElkXyk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvUmVmcmVzaFVERElTZXJ2aWNlVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1JlZnJlc2hVRERJU2VydmljZVRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhjODJhNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvUmVmcmVzaFVERElTZXJ2aWNlVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQWN0aW9uVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5SZWZyZXNoQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBSZWZyZXNoVURESVNlcnZpY2VUb29sIGV4dGVuZHMgQWN0aW9uVG9vbCB7Ci0gICAgcHVibGljIFJlZnJlc2hVRERJU2VydmljZVRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvcmVmcmVzaF9lbmFibGVkLmdpZiIsICJpbWFnZXMvcmVmcmVzaF9oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8sIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gUmVmcmVzaEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9SZWZyZXNoV1NJTFRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9SZWZyZXNoV1NJTFRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNlOGE1MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvUmVmcmVzaFdTSUxUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5BY3Rpb25Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlJlZnJlc2hBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIFJlZnJlc2hXU0lMVG9vbCBleHRlbmRzIEFjdGlvblRvb2wgewotICAgIHB1YmxpYyBSZWZyZXNoV1NJTFRvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvcmVmcmVzaF9lbmFibGVkLmdpZiIsICJpbWFnZXMvcmVmcmVzaF9oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICAgICAgcmV0dXJuIFJlZnJlc2hBY3Rpb24uZ2V0QWN0aW9uTGluayh0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpLmdldE5vZGVJZCgpLCB0b29sSWRfLCBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQsIEFjdGlvbklucHV0cy5WSUVXVE9PTElEX0RFRkFVTFQpOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1VkZGlCdXNpbmVzc0RldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvVWRkaUJ1c2luZXNzRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY0NjExYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvVWRkaUJ1c2luZXNzRGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgVWRkaUJ1c2luZXNzRGV0YWlsc1Rvb2wgZXh0ZW5kcyBGb3JtVG9vbCB7Ci0gICAgcHVibGljIFVkZGlCdXNpbmVzc0RldGFpbHNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAiaW1hZ2VzL2RldGFpbHNfZW5hYmxlZC5naWYiLCAiaW1hZ2VzL2RldGFpbHNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gIndzaWwvZm9ybXMvVWRkaUJ1c2luZXNzRGV0YWlsc1BhZ2UuanNwIjsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9VZGRpU2VydmljZURldGFpbHNUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvVWRkaVNlcnZpY2VEZXRhaWxzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDQwMDMyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9VZGRpU2VydmljZURldGFpbHNUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Gb3JtVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIFVkZGlTZXJ2aWNlRGV0YWlsc1Rvb2wgZXh0ZW5kcyBGb3JtVG9vbCB7Ci0gICAgcHVibGljIFVkZGlTZXJ2aWNlRGV0YWlsc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZGV0YWlsc19lbmFibGVkLmdpZiIsICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8sIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgICAgIHJldHVybiAid3NpbC9mb3Jtcy9VZGRpU2VydmljZURldGFpbHNQYWdlLmpzcCI7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV1NJTEltcG9ydFdTSUxUb1dvcmtiZW5jaFRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9XU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTc3ZDBjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9XU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuSW1wb3J0VG9Xb3JrYmVuY2hUb29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgV1NJTEltcG9ydFdTSUxUb1dvcmtiZW5jaFRvb2wgZXh0ZW5kcyBJbXBvcnRUb1dvcmtiZW5jaFRvb2wKLXsKLSAgcHVibGljIFdTSUxJbXBvcnRXU0lMVG9Xb3JrYmVuY2hUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KQotICB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsIGFsdCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkKLSAgewotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICByZXR1cm4gU2VsZWN0V1NJTFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHRvb2xJZF8sIHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKSwgZm9ySGlzdG9yeSk7Ci0gIH0KLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEZvcm1MaW5rKCkKLSAgewotICAgIHJldHVybiAid3NpbC9mb3Jtcy9XU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoRm9ybS5qc3AiOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV1NJTFBlcnNwZWN0aXZlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV1NJTFBlcnNwZWN0aXZlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MzIxYWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dTSUxQZXJzcGVjdGl2ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDUwNiAgIDIwMjk0NSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBBbGxvdyBXU0UgdG8gYmUgbGF1bmNoZWQgZnJvbSBhIFdTSUwgZmlsZS4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLQotaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5CYXNpY01vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5QZXJzcGVjdGl2ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLk9wZW5XU0lMQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NJTEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuV3NpbEFjdGlvbklucHV0czsKLQotcHVibGljIGNsYXNzIFdTSUxQZXJzcGVjdGl2ZSBleHRlbmRzIFBlcnNwZWN0aXZlCi17Ci0gICAgcHJpdmF0ZSBCYXNpY01vZGVsIG1vZGVsXzsKLSAgICBwcml2YXRlIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyXzsKLSAgICBwcml2YXRlIFN0cmluZyBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfOwotICAgIHByaXZhdGUgU3RyaW5nIHNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXzsKLSAgICBwcml2YXRlIFN0cmluZyBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzXzsKLSAgICBwcml2YXRlIFN0cmluZyBzYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotCi0gICAgcHVibGljIFdTSUxQZXJzcGVjdGl2ZShDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gICAgewotICAgICAgICBzdXBlcigid3NpbCIsY29udHJvbGxlcik7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIHZvaWQgaW5pdFBlcnNwZWN0aXZlKFNlcnZsZXRDb250ZXh0IGFwcGxpY2F0aW9uKQotICAgIHsKLSAgICAgICAgbW9kZWxfID0gbmV3IEJhc2ljTW9kZWwoIldzaWxNb2RlbCIpOwotICAgICAgICBUcmVlRWxlbWVudCB0cmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChnZXRNZXNzYWdlKCJXU0lMX01BSU5fTk9ERSIpLCBtb2RlbF8pOwotICAgICAgICBtb2RlbF8uc2V0Um9vdEVsZW1lbnQodHJlZUVsZW1lbnQpOwotICAgICAgICBub2RlTWFuYWdlcl8gPSBuZXcgTm9kZU1hbmFnZXIoY29udHJvbGxlcl8pOwotICAgICAgICBXc2lsTWFpbk5vZGUgd3NpbE1haW5Ob2RlID0gbmV3IFdzaWxNYWluTm9kZSh0cmVlRWxlbWVudCwgbm9kZU1hbmFnZXJfKTsKLSAgICAgICAgbm9kZU1hbmFnZXJfLnNldFJvb3ROb2RlKHdzaWxNYWluTm9kZSk7Ci0KLSAgICAgICAgLy8gU3RhcnRpbmcgZnJhbWVzZXQgc2l6ZXMuCi0gICAgICAgIGlmICghRGlyVXRpbHMuaXNSVEwoKSkKLSAgICAgICAgICBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfID0gIjMwJSwqIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc18gPSAiKiwzMCUiOwotICAgICAgICBzYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc18gPSBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfOwotICAgICAgICBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzXyA9ICI3NSUsKiI7Ci0gICAgICAgIHNhdmVkQWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93c18gPSBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzXzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZmluYWwgdm9pZCBwcmVsb2FkV1NJTCggU3RyaW5nW10gd3NpbFVSTCApCi0gICAgewotICAgICAgaWYoIHdzaWxVUkwgIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCB3c2lsVVJMLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgICAgIHsKLSAgICAgICAgICBPcGVuV1NJTEFjdGlvbiBhY3Rpb24gPSBuZXcgT3BlbldTSUxBY3Rpb24oY29udHJvbGxlcl8pOwotICAgICAgICAgIEhhc2h0YWJsZSB0YWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgICAgdGFibGUucHV0KFdzaWxBY3Rpb25JbnB1dHMuV1NJTF9VUkwsIHdzaWxVUkxbaW5kZXhdICk7Ci0gICAgICAgICAgdGFibGUucHV0KFdzaWxBY3Rpb25JbnB1dHMuV1NJTF9JTlNQRUNUSU9OX1RZUEUsIFN0cmluZy52YWx1ZU9mKFdzaWxBY3Rpb25JbnB1dHMuV1NJTF9ERVRBSUxTKSk7Ci0gICAgICAgICAgYWN0aW9uLnJ1bigpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiggd3NpbFVSTC5sZW5ndGggPjAgKQotICAgICAgICB7Ci0gICAgICAgICAgY29udHJvbGxlcl8uc2V0Q3VycmVudFBlcnNwZWN0aXZlKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9XU0lMKTsgICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHVibGljIE5vZGVNYW5hZ2VyIGdldE5vZGVNYW5hZ2VyKCkgewotICAgICAgICByZXR1cm4gbm9kZU1hbmFnZXJfOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGVyc3BlY3RpdmVDb250ZW50UGFnZSgpCi0gICAgewotICAgICAgICByZXR1cm4gIndzaWwvd3NpbF9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcCI7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRQZXJzcGVjdGl2ZUlkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfV1NJTDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFBhbmVzRmlsZSgpIHsKLSAgICAgICAgcmV0dXJuICJ3c2lsL3NjcmlwdHMvd3NpbFBhbmVzLmpzcCI7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBTdHJpbmcgZ2V0RnJhbWVzZXRzRmlsZSgpCi0gICAgewotICAgICAgcmV0dXJuICJ3c2lsL3NjcmlwdHMvd3NpbGZyYW1lc2V0cy5qc3AiOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgU3RyaW5nIGdldFByb2Nlc3NGcmFtZXNldHNGb3JtKCkKLSAgICB7Ci0gICAgICByZXR1cm4gIndzaWwvZm9ybXMvUHJvY2Vzc1dTSUxGcmFtZXNldHNGb3JtLmpzcCI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRUcmVlQ29udGVudFZhcigpIHsKLSAgICAgICAgcmV0dXJuICJ3c2lsTmF2aWdhdG9yQ29udGVudCI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRUcmVlQ29udGVudFBhZ2UoKSB7Ci0gICAgICAgIHJldHVybiAid3NpbC93c2lsX25hdmlnYXRvcl9jb250ZW50LmpzcCI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCkgewotICAgICAgICByZXR1cm4gIndzaWxQcm9wZXJ0aWVzQ29udGFpbmVyIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkgewotICAgICAgICByZXR1cm4gIndzaWwvd3NpbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3RhdHVzQ29udGVudFZhcigpIHsKLSAgICAgICAgcmV0dXJuICJ3c2lsU3RhdHVzQ29udGVudCI7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRTdGF0dXNDb250ZW50UGFnZSgpIHsKLSAgICAgICAgcmV0dXJuICJ3c2lsL3dzaWxfc3RhdHVzX2NvbnRlbnQuanNwIjsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKQotICAgIHsKLSAgICAgIHJldHVybiBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHNfOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoU3RyaW5nIGNvbHMpCi0gICAgewotICAgICAgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9IGNvbHM7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U2F2ZWRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKQotICAgIHsKLSAgICAgIHJldHVybiBzYXZlZFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29sc187Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldFNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKFN0cmluZyBjb2xzKQotICAgIHsKLSAgICAgIHNhdmVkUGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzXyA9IGNvbHM7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpCi0gICAgewotICAgICAgcmV0dXJuIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKFN0cmluZyByb3dzKQotICAgIHsKLSAgICAgIGFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfID0gcm93czsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKQotICAgIHsKLSAgICAgIHJldHVybiBzYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3NfOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRTYXZlZEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoU3RyaW5nIHJvd3MpCi0gICAgewotICAgICAgc2F2ZWRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzXyA9IHJvd3M7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0U3dpdGNoUGVyc3BlY3RpdmVGb3JtQWN0aW9uTGluayhpbnQgdGFyZ2V0UGVyc3BlY3RpdmVJZCxib29sZWFuIGZvckhpc3RvcnkpCi0gICAgewotICAgICAgcmV0dXJuIFN3aXRjaFBlcnNwZWN0aXZlRnJvbVdTSUxBY3Rpb24uZ2V0Rm9ybUFjdGlvbkxpbmsodGFyZ2V0UGVyc3BlY3RpdmVJZCxmb3JIaXN0b3J5KTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV3NkbFNlcnZpY2VEZXRhaWxzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzZGxTZXJ2aWNlRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM1OTIyYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV3NkbFNlcnZpY2VEZXRhaWxzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBXc2RsU2VydmljZURldGFpbHNUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotICAgIHB1YmxpYyBXc2RsU2VydmljZURldGFpbHNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAiaW1hZ2VzL2RldGFpbHNfZW5hYmxlZC5naWYiLCAiaW1hZ2VzL2RldGFpbHNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gIndzaWwvZm9ybXMvV3NkbFNlcnZpY2VEZXRhaWxzUGFnZS5qc3AiOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9Xc2lsQWRkVG9XU0RMUGVyc3BlY3RpdmVUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYTBmZGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkFkZFRvV1NETFBlcnNwZWN0aXZlVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLldzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbjsKLQotcHVibGljIGNsYXNzIFdzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wgZXh0ZW5kcyBBZGRUb1dTRExQZXJzcGVjdGl2ZVRvb2wgewotCi0gIHB1YmxpYyBXc2lsQWRkVG9XU0RMUGVyc3BlY3RpdmVUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgc3VwZXIodG9vbE1hbmFnZXIsYWx0KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB0b29sTWFuYWdlcl8uZ2V0Tm9kZSgpOwotICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfLCBmb3JIaXN0b3J5KTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uTGluaygpIHsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgcmV0dXJuIFdzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxEZXRhaWxzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxEZXRhaWxzVG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzRkNDA5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9Xc2lsRGV0YWlsc1Rvb2wuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ub29sTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgV3NpbERldGFpbHNUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotICAgIHB1YmxpYyBXc2lsRGV0YWlsc1Rvb2woVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIsIFN0cmluZyBhbHQpIHsKLSAgICAgICAgc3VwZXIodG9vbE1hbmFnZXIsICJpbWFnZXMvZGV0YWlsc19lbmFibGVkLmdpZiIsICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCB0b29sSWRfLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbElkKCksIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybUxpbmsoKSB7Ci0gICAgICAgIHJldHVybiAid3NpbC9mb3Jtcy9Xc2lsRGV0YWlsc1BhZ2UuanNwIjsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9Xc2lsSW1wb3J0V1NETFRvV29ya2JlbmNoVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxJbXBvcnRXU0RMVG9Xb3JrYmVuY2hUb29sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMWVkYTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxJbXBvcnRXU0RMVG9Xb3JrYmVuY2hUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5JbXBvcnRUb1dvcmtiZW5jaFRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBXc2lsSW1wb3J0V1NETFRvV29ya2JlbmNoVG9vbCBleHRlbmRzIEltcG9ydFRvV29ya2JlbmNoVG9vbCB7Ci0gICAgcHVibGljIFdzaWxJbXBvcnRXU0RMVG9Xb3JrYmVuY2hUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8sIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0Rm9ybUxpbmsoKQotICAgIHsKLSAgICAgIHJldHVybiAid3NpbC9mb3Jtcy9Xc2lsSW1wb3J0V1NETFRvV29ya2JlbmNoRm9ybS5qc3AiOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9Xc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9Xc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZFRvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM1ZDc1ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV3NpbExhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbjsKLQotcHVibGljIGNsYXNzIFdzaWxMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkVG9vbCBleHRlbmRzIExhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sIHsKLSAgICBwdWJsaWMgV3NpbExhdW5jaFdlYlNlcnZpY2VXaXphcmRUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCBhbHQpOwotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VsZWN0VG9vbEFjdGlvbkhyZWYoYm9vbGVhbiBmb3JIaXN0b3J5KSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCksIHRvb2xJZF8sIGZvckhpc3RvcnkpOwotICAgIH0KLQotICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0Rm9ybUxpbmsoKQotICAgIHsKLSAgICAgIHJldHVybiAid3NpbC9mb3Jtcy9Xc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZEZvcm0uanNwIjsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV3NpbExpbmtEZXRhaWxzVG9vbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxMaW5rRGV0YWlsc1Rvb2wuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3ODE5Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV3NpbExpbmtEZXRhaWxzVG9vbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuRm9ybVRvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBXc2lsTGlua0RldGFpbHNUb29sIGV4dGVuZHMgRm9ybVRvb2wgewotICAgIHB1YmxpYyBXc2lsTGlua0RldGFpbHNUb29sKFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyLCBTdHJpbmcgYWx0KSB7Ci0gICAgICAgIHN1cGVyKHRvb2xNYW5hZ2VyLCAiaW1hZ2VzL2RldGFpbHNfZW5hYmxlZC5naWYiLCAiaW1hZ2VzL2RldGFpbHNfaGlnaGxpZ2h0ZWQuZ2lmIiwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpLCB0b29sSWRfLCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZvcm1MaW5rKCkgewotICAgICAgICByZXR1cm4gIndzaWwvZm9ybXMvV3NpbExpbmtEZXRhaWxzUGFnZS5qc3AiOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxNYWluTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxNYWluTm9kZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTdkNWM4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9Xc2lsTWFpbk5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbC5FbGVtZW50QWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsLlJlbEFkZEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWwuUmVsUmVtb3ZlRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxNb2RlbENvbnN0YW50czsKLQotcHVibGljIGNsYXNzIFdzaWxNYWluTm9kZSBleHRlbmRzIFdzaWxOYXZpZ2F0b3JOb2RlIHsKLQotICAgIHB1YmxpYyBXc2lsTWFpbk5vZGUoVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQsIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyKSB7Ci0gICAgICAgIHN1cGVyKHRyZWVFbGVtZW50LCBub2RlTWFuYWdlciwgMSwgImltYWdlcy9yb290X21haW4uZ2lmIik7Ci0gICAgICAgIHRyZWVFbGVtZW50LmFkZExpc3RlbmVyKG5ldyBFbGVtZW50QWRhcHRlcigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbEFkZGVkKFJlbEFkZEV2ZW50IGV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJlbCA9IGV2ZW50LmdldE91dEJvdW5kUmVsTmFtZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWwuZXF1YWxzKFdzaWxNb2RlbENvbnN0YW50cy5SRUxfV1NJTCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3NpbE5vZGUgd3NpbE5vZGUgPSBuZXcgV3NpbE5vZGUoKFRyZWVFbGVtZW50KWV2ZW50LmdldFBhcmVudEVsZW1lbnQoKSwgbm9kZU1hbmFnZXJfLCBub2RlRGVwdGhfICsgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENoaWxkKHdzaWxOb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbFJlbW92ZWQoUmVsUmVtb3ZlRXZlbnQgZXZlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmVlRWxlbWVudCBjaGlsZEVsZW1lbnQgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5nZXRJbkJvdW5kUmVsTmFtZSgpLmVxdWFscyhXc2lsTW9kZWxDb25zdGFudHMuUkVMX1dTSUwpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRWxlbWVudCA9IChUcmVlRWxlbWVudClldmVudC5nZXRJbmJvdW5kRWxlbWVudCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZ2V0T3V0Qm91bmRSZWxOYW1lKCkuZXF1YWxzKFdzaWxNb2RlbENvbnN0YW50cy5SRUxfV1NJTCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRFbGVtZW50ID0gKFRyZWVFbGVtZW50KWV2ZW50LmdldE91dEJvdW5kRWxlbWVudCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDaGlsZE5vZGUoY2hpbGRFbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgaW5pdFRvb2xzKCkgewotICAgICAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gbm9kZU1hbmFnZXJfLmdldENvbnRyb2xsZXIoKS5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgbmV3IE9wZW5XU0lMVG9vbCh0b29sTWFuYWdlcl8sIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfT1BFTl9XU0lMIikpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9Xc2lsTmF2aWdhdG9yTm9kZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxOYXZpZ2F0b3JOb2RlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YzM0ZDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxOYXZpZ2F0b3JOb2RlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTE5vZGVBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5Xc2lsVG9nZ2xlTm9kZUFjdGlvbjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFdzaWxOYXZpZ2F0b3JOb2RlIGV4dGVuZHMgTm9kZSB7Ci0KLSAgICBwdWJsaWMgV3NpbE5hdmlnYXRvck5vZGUoVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQsIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyLCBpbnQgbm9kZURlcHRoLCBTdHJpbmcgaW1hZ2VQYXRoKSB7Ci0gICAgICAgIHN1cGVyKHRyZWVFbGVtZW50LCBub2RlTWFuYWdlciwgbm9kZURlcHRoLCBpbWFnZVBhdGgpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0VG9nZ2xlTm9kZUFjdGlvbkhyZWYoKSB7Ci0gICAgICAgIHJldHVybiBXc2lsVG9nZ2xlTm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKG5vZGVJZF8saXNPcGVuXyk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIFN0cmluZyBnZXRMaW5rQWN0aW9uSHJlZigpIHsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkXywgZmFsc2UpOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3BlcnNwZWN0aXZlL1dzaWxOb2RlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV3NpbE5vZGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY2NDU5ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV3NpbE5vZGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZU1hbmFnZXI7Ci0KLXB1YmxpYyBjbGFzcyBXc2lsTm9kZSBleHRlbmRzIFdzaWxOYXZpZ2F0b3JOb2RlIHsKLQotICAgIHB1YmxpYyBXc2lsTm9kZShUcmVlRWxlbWVudCB0cmVlRWxlbWVudCwgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIsIGludCBub2RlRGVwdGgpIHsKLSAgICAgICAgc3VwZXIodHJlZUVsZW1lbnQsIG5vZGVNYW5hZ2VyLCBub2RlRGVwdGgsICJ3c2lsL2ltYWdlcy93c2lsX25vZGUuZ2lmIik7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgaW5pdFRvb2xzKCkgewotICAgICAgICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSBub2RlTWFuYWdlcl8uZ2V0Q29udHJvbGxlcigpOwotICAgICAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgbmV3IFdzaWxEZXRhaWxzVG9vbCh0b29sTWFuYWdlcl8sIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfV1NJTF9ERVRBSUxTIikpOwotICAgICAgICBuZXcgTGlzdFdTRExTZXJ2aWNlc1Rvb2wodG9vbE1hbmFnZXJfLCB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0xJU1RfV1NETF9TRVJWSUNFUyIpKTsKLSAgICAgICAgbmV3IExpc3RVRERJU2VydmljZXNUb29sKHRvb2xNYW5hZ2VyXywgd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MSVNUX1VERElfU0VSVklDRVMiKSk7Ci0gICAgICAgIG5ldyBMaXN0VURESUJ1c2luZXNzVG9vbCh0b29sTWFuYWdlcl8sIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTElTVF9VRERJX0xJTktTIikpOwotICAgICAgICBuZXcgTGlzdFdTSUxMaW5rc1Rvb2wodG9vbE1hbmFnZXJfLCB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0xJU1RfV1NJTF9MSU5LUyIpKTsKLSAgICAgICAgbmV3IFdTSUxJbXBvcnRXU0lMVG9Xb3JrYmVuY2hUb29sKHRvb2xNYW5hZ2VyXywgd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFUTF9JTVBPUlRfV1NJTF9UT19XT1JLQkVOQ0giKSk7Ci0gICAgICAgIG5ldyBJbXBvcnRXU0lMVG9GaWxlU3lzdGVtVG9vbCh0b29sTWFuYWdlcl8sIGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1dTSUxfSU1QT1JUX1RPX0ZTIikpOwotICAgICAgICBuZXcgQWRkV1NJTFRvRmF2b3JpdGVzVG9vbCh0b29sTWFuYWdlcl8sIHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfQUREX1dTSUxfVE9fRkFWT1JJVEVTIikpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9Xc2lsU2V0RGVmYXVsdFZpZXdUb29sLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvcGVyc3BlY3RpdmUvV3NpbFNldERlZmF1bHRWaWV3VG9vbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2MxMTMwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGxhdGZvcm0vd3NpbC9wZXJzcGVjdGl2ZS9Xc2lsU2V0RGVmYXVsdFZpZXdUb29sLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuQWN0aW9uSW5wdXRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZXREZWZhdWx0Vmlld1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlRvb2xNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb247Ci0KLXB1YmxpYyBjbGFzcyBXc2lsU2V0RGVmYXVsdFZpZXdUb29sIGV4dGVuZHMgU2V0RGVmYXVsdFZpZXdUb29sIHsKLSAgICBwdWJsaWMgV3NpbFNldERlZmF1bHRWaWV3VG9vbChUb29sTWFuYWdlciB0b29sTWFuYWdlciwgU3RyaW5nIGFsdCkgewotICAgICAgICBzdXBlcih0b29sTWFuYWdlciwgYWx0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdFRvb2xBY3Rpb25IcmVmKGJvb2xlYW4gZm9ySGlzdG9yeSkgewotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IHRvb2xNYW5hZ2VyXy5nZXROb2RlKCk7Ci0gICAgICAgIHJldHVybiBTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxULCBBY3Rpb25JbnB1dHMuVklFV1RPT0xJRF9ERUZBVUxULCBmb3JIaXN0b3J5KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbkxpbmsoKSB7Ci0gICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gdG9vbE1hbmFnZXJfLmdldE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQsIEFjdGlvbklucHV0cy5WSUVXVE9PTElEX0RFRkFVTFQsIGZhbHNlKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvdHJhbnNmb3JtZXIvV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbGF0Zm9ybS93c2lsL3RyYW5zZm9ybWVyL1dTSUxWaWV3U2VsZWN0aW9uVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI1ZmEyZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BsYXRmb3JtL3dzaWwvdHJhbnNmb3JtZXIvV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC50cmFuc2Zvcm1lcjsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLnRyYW5zZm9ybWVyLlZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuVG9vbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxNb2RlbENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuV3NpbEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuTGlzdFVERElCdXNpbmVzc1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuTGlzdFVERElTZXJ2aWNlc1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuTGlzdFdTRExTZXJ2aWNlc1Rvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuTGlzdFdTSUxMaW5rc1Rvb2w7Ci0KLXB1YmxpYyBjbGFzcyBXU0lMVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyIGV4dGVuZHMgVmlld1NlbGVjdGlvblRyYW5zZm9ybWVyCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBOT05FID0gMDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIFdTRExfU0VSVklDRSA9IDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBVRERJX1NFUlZJQ0UgPSAyOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgVURESV9CVVNJTkVTUyA9IDM7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBXU0lMX0xJTksgPSA0OwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgRlJPTV9UT09MSUQgPSA1OwotICBwcml2YXRlIGJ5dGUgdHlwZTsKLQotICBwdWJsaWMgV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lcihDb250cm9sbGVyIGNvbnRyb2xsZXIpCi0gIHsKLSAgICB0aGlzKGNvbnRyb2xsZXIsICIiLCBBY3Rpb25JbnB1dHMuVklFV0lELCBGUk9NX1RPT0xJRCk7Ci0gIH0KLQotICBwdWJsaWMgV1NJTFZpZXdTZWxlY3Rpb25UcmFuc2Zvcm1lcihDb250cm9sbGVyIGNvbnRyb2xsZXIsIFN0cmluZyBsaXN0TWFuYWdlcktleSwgU3RyaW5nIHZpZXdLZXksIGJ5dGUgdHlwZSkKLSAgewotICAgIHN1cGVyKGNvbnRyb2xsZXIsIGxpc3RNYW5hZ2VyS2V5LCB2aWV3S2V5KTsKLSAgICB0aGlzLnR5cGUgPSB0eXBlOwotICB9Ci0KLSAgcHVibGljIEhhc2h0YWJsZSBub3JtYWxpemUoSGFzaHRhYmxlIHByb3BlcnRpZXMpCi0gIHsKLSAgICBpZiAodHlwZSA9PSBGUk9NX1RPT0xJRCkKLSAgICB7Ci0gICAgICBOb2RlIGN1cnJOb2RlID0gY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpOwotICAgICAgaWYgKGN1cnJOb2RlICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgaW50IHRvb2xJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykgcHJvcGVydGllcy5nZXQoQWN0aW9uSW5wdXRzLlRPT0xJRCkpOwotICAgICAgICAgIFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyID0gY3Vyck5vZGUuZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICAgICAgICBUb29sIHRvb2wgPSB0b29sTWFuYWdlci5nZXRUb29sKHRvb2xJZCk7Ci0gICAgICAgICAgaWYgKHRvb2wgaW5zdGFuY2VvZiBMaXN0V1NETFNlcnZpY2VzVG9vbCkKLSAgICAgICAgICAgIGxpc3RNYW5hZ2VyS2V5ID0gV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9XU0RMX1NFUlZJQ0VTOwotICAgICAgICAgIGVsc2UgaWYgKHRvb2wgaW5zdGFuY2VvZiBMaXN0VURESVNlcnZpY2VzVG9vbCkKLSAgICAgICAgICAgIGxpc3RNYW5hZ2VyS2V5ID0gV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9VRERJX1NFUlZJQ0VTOwotICAgICAgICAgIGVsc2UgaWYgKHRvb2wgaW5zdGFuY2VvZiBMaXN0VURESUJ1c2luZXNzVG9vbCkKLSAgICAgICAgICAgIGxpc3RNYW5hZ2VyS2V5ID0gV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9VRERJX0xJTktTOwotICAgICAgICAgIGVsc2UgaWYgKHRvb2wgaW5zdGFuY2VvZiBMaXN0V1NJTExpbmtzVG9vbCkKLSAgICAgICAgICAgIGxpc3RNYW5hZ2VyS2V5ID0gV3NpbE1vZGVsQ29uc3RhbnRzLkxJU1RfTUFOQUdFUl9XU0lMX0xJTktTOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmZlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLm5vcm1hbGl6ZShwcm9wZXJ0aWVzKTsKLSAgfQotCi0gIHB1YmxpYyBIYXNodGFibGUgZGVOb3JtYWxpemUoSGFzaHRhYmxlIHByb3BlcnRpZXMpCi0gIHsKLSAgICBOb2RlIGN1cnJOb2RlID0gY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIGlmIChjdXJyTm9kZSAhPSBudWxsKQotICAgIHsKLSAgICAgIFRyZWVFbGVtZW50IGN1cnJFbGVtZW50ID0gY3Vyck5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgIGlmIChjdXJyRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50KQotICAgICAgewotICAgICAgICBXc2lsRWxlbWVudCB3c2lsRWxlbWVudCA9IChXc2lsRWxlbWVudCkgY3VyckVsZW1lbnQ7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgV1NETF9TRVJWSUNFIDoKLSAgICAgICAgICAgIHdzaWxFbGVtZW50LmdldEFsbFdTRExTZXJ2aWNlcygpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBVRERJX1NFUlZJQ0UgOgotICAgICAgICAgICAgd3NpbEVsZW1lbnQuZ2V0QWxsVURESVNlcnZpY2VzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFVERElfQlVTSU5FU1MgOgotICAgICAgICAgICAgd3NpbEVsZW1lbnQuZ2V0QWxsVURESUxpbmtzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFdTSUxfTElOSyA6Ci0gICAgICAgICAgICB3c2lsRWxlbWVudC5nZXRBbGxXU0lMTGlua3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRlJPTV9UT09MSUQgOgotICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGludCB0b29sSWQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpIHByb3BlcnRpZXMuZ2V0KEFjdGlvbklucHV0cy5UT09MSUQpKTsKLSAgICAgICAgICAgICAgVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXIgPSBjdXJyTm9kZS5nZXRUb29sTWFuYWdlcigpOwotICAgICAgICAgICAgICBUb29sIHRvb2wgPSB0b29sTWFuYWdlci5nZXRUb29sKHRvb2xJZCk7Ci0gICAgICAgICAgICAgIGlmICh0b29sIGluc3RhbmNlb2YgTGlzdFdTRExTZXJ2aWNlc1Rvb2wpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsaXN0TWFuYWdlcktleSA9IFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfV1NETF9TRVJWSUNFUzsKLSAgICAgICAgICAgICAgICB3c2lsRWxlbWVudC5nZXRBbGxXU0RMU2VydmljZXMoKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIGlmICh0b29sIGluc3RhbmNlb2YgTGlzdFVERElTZXJ2aWNlc1Rvb2wpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsaXN0TWFuYWdlcktleSA9IFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfVURESV9TRVJWSUNFUzsKLSAgICAgICAgICAgICAgICB3c2lsRWxlbWVudC5nZXRBbGxVRERJU2VydmljZXMoKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIGlmICh0b29sIGluc3RhbmNlb2YgTGlzdFVERElCdXNpbmVzc1Rvb2wpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsaXN0TWFuYWdlcktleSA9IFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfVURESV9MSU5LUzsKLSAgICAgICAgICAgICAgICB3c2lsRWxlbWVudC5nZXRBbGxVRERJTGlua3MoKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIGlmICh0b29sIGluc3RhbmNlb2YgTGlzdFdTSUxMaW5rc1Rvb2wpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsaXN0TWFuYWdlcktleSA9IFdzaWxNb2RlbENvbnN0YW50cy5MSVNUX01BTkFHRVJfV1NJTF9MSU5LUzsKLSAgICAgICAgICAgICAgICB3c2lsRWxlbWVudC5nZXRBbGxXU0lMTGlua3MoKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBuZmUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0IDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5kZU5vcm1hbGl6ZShwcm9wZXJ0aWVzKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbHVnaW4vRXhwbG9yZXJQbHVnaW4uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcGx1Z2luL0V4cGxvcmVyUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3YzNlNmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wbHVnaW4vRXhwbG9yZXJQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsdWdpbjsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLkxhdW5jaFdpemFyZFRhc2s7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLmZhdm9yaXRlcy5GYXZvcml0ZXNSZWdpc3RyeVR5cGVEZWZhdWx0OwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwotCi0KLS8qKgotICogVGhpcyBpcyB0aGUgcGx1Z2luIGNsYXNzIGZvciB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLgotICovCi1wdWJsaWMgY2xhc3MgRXhwbG9yZXJQbHVnaW4gZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luCi17Ci0gIC8qKgotICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGVzY3JpcHRvciBvZiB0aGlzIHBsdWdpbiBpbiBwbHVnaW4ueG1sLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSUQgPSAib3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0hBUlNFVCA9ICJVVEYtOCI7Ci0gIAotICAvKioKLSAgICogVGhlIHJlZmVyZW5jZSB0byB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgcGx1Z2luLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgRXhwbG9yZXJQbHVnaW4gaW5zdGFuY2VfOwotICBwcml2YXRlIEJ1bmRsZUNvbnRleHQgY29udGV4dDsKLSAgLyoqCi0gICAqIENvbnN0cnVjdHMgYSBydW50aW1lIHBsdWdpbiBvYmplY3QgZm9yIHRoaXMgcGx1Z2luLiBUaGUgInBsdWdpbiIgZWxlbWVudAotICAgKiBpbiBwbHVnaW4ueG1sIHNob3VsZCBpbmNsdWRlIHRoZSBhdHRyaWJ1dGUgY2xhc3MgPQotICAgKiAib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsdWdpbi5FeHBsb3JlclBsdWdpbiIuCi0gICAqIAotICAgKiBAcGFyYW0gZGVzY3JpcHRvcgotICAgKiAgICAgICAgICAgIFRoZSBkZXNjcmlwdG9yIG9mIHRoaXMgcGx1Z2luLgotICAgKi8KLSAgcHVibGljIEV4cGxvcmVyUGx1Z2luKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgaW5zdGFuY2VfID0gdGhpczsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4uIEVxdWl2YWxlbnQgdG8gY2FsbGluZwotICAgKiAoRXhwbG9yZXJQbHVnaW4pUGxhdGZvcm0uZ2V0UGx1Z2luKCJvcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIiKTsKLSAgICogCi0gICAqIEByZXR1cm4gVGhlIEV4cGxvcmVyUGx1Z2luIHNpbmdsZXRvbi4KLSAgICovCi0gIHN0YXRpYyBwdWJsaWMgRXhwbG9yZXJQbHVnaW4gZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgcmV0dXJuIGluc3RhbmNlXzsKLSAgfQotCi0gIC8qKgotICAgKiBDYWxsZWQgb25jZSBieSB0aGUgcGxhdGZvcm0gd2hlbiB0aGlzIHBsdWdpbiBpcyBmaXJzdCBsb2FkZWQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGJ1bmRsZSkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgc3VwZXIuc3RhcnQoYnVuZGxlKTsKLSAgICAvLyBpbml0IHRoZSBzaGVsbCBvZiBMYXVuY2hXaXphcmRUYXNrCi0gICAgdGhpcy5jb250ZXh0ID0gYnVuZGxlOwotICAgIExhdW5jaFdpemFyZFRhc2suZ2V0SW5zdGFuY2UoKTsKLSAgfQotCi0gIC8qKgotICAgKiBDYWxsZWQgb25jZSBieSB0aGUgcGxhdGZvcm0gd2hlbiB0aGlzIHBsdWdpbiBpcyB1bmxvYWRlZC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBidW5kbGUpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIHN1cGVyLnN0b3AoYnVuZGxlKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXNzYWdlIHN0cmluZyBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBrZXkgZnJvbSB0aGUKLSAgICogcGx1Z2luLnByb3BlcnRpZXMgZmlsZSBmb3IgdGhlIGFwcHJvcHJpYXRlIGxvY2FsZS4KLSAgICogCi0gICAqIEBwYXJhbSBrZXkKLSAgICogICAgICAgICAgICBUaGUgbWVzc2FnZSBrZXkgc3RyaW5nIHByZWZpeGVkIGJ5IGEgIiUiIHN5bWJvbC4gVGhhdCBpcywgdGhlCi0gICAqICAgICAgICAgICAgc3RyaW5nIHBhc3NlZCBpbiBtdXN0IGJlIG9mIHRoZSBmb3JtICIlS0VZIiB3aGVyZSB0aGUKLSAgICogICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyBmaWxlIGNvbnRhaW5zIGEgbGluZSBvZiB0aGUgZm9ybTogIktFWSA9Ci0gICAqICAgICAgICAgICAgdmFsdWUiLgotICAgKiBAcmV0dXJuIFRoZSBsb2NhbGUtc3BlY2lmaWMgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldE1lc3NhZ2UoU3RyaW5nIGtleSkKLSAgewotICAgIHJldHVybiBQbGF0Zm9ybS5nZXRSZXNvdXJjZVN0cmluZyhpbnN0YW5jZV8uZ2V0QnVuZGxlKCksIGtleSk7IAotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1lc3NhZ2Ugc3RyaW5nIGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIGtleSBmcm9tIHRoZQotICAgKiBwbHVnaW4ucHJvcGVydGllcyBmaWxlIGZvciB0aGUgYXBwcm9wcmlhdGUgbG9jYWxlLiBTdWJzdGl0dXRpb24gc2VxdWVuY2VzCi0gICAqIGluIHRoZSBtZXNzYWdlIHN0cmluZyBhcmUgcmVwbGFjZWQgYnkgdGhlIGdpdmVuIGFycmF5IG9mIHN1YnN0aXR1dGlvbgotICAgKiBvYmplY3RzICh3aGljaCBhcmUgbW9zdCBmcmVxdWVudGx5IHN0cmluZ3MpLiBTZWUgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQKLSAgICogZm9yIGZ1cnRoZXIgZGV0YWlscyBvbiBzdWJzdGl0dXRpb24uCi0gICAqIAotICAgKiBAcGFyYW0ga2V5Ci0gICAqICAgICAgICAgICAgVGhlIG1lc3NhZ2Uga2V5IHN0cmluZyBwcmVmaXhlZCBieSBhICIlIiBzeW1ib2wuIFRoYXQgaXMsIHRoZQotICAgKiAgICAgICAgICAgIHN0cmluZyBwYXNzZWQgaW4gbXVzdCBiZSBvZiB0aGUgZm9ybSAiJUtFWSIgd2hlcmUgdGhlCi0gICAqICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMgZmlsZSBjb250YWlucyBhIGxpbmUgb2YgdGhlIGZvcm06ICJLRVkgPQotICAgKiAgICAgICAgICAgIHZhbHVlIi4KLSAgICogQHBhcmFtIGFyZ3MKLSAgICogICAgICAgICAgICBUaGUgc3Vic3RpdHV0aW9uIHZhbHVlcyBmb3IgdGhlIG1lc3NhZ2UgYXMgcmVxdWlyZWQgYnkgdGhlCi0gICAqICAgICAgICAgICAgbWVzc2FnZSBpbiBwbHVnaW4ucHJvcGVydGllcyBhbmQgYnkgdGhlIHJ1bGVzIG9mIGNsYXNzCi0gICAqICAgICAgICAgICAgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQuCi0gICAqIEByZXR1cm4gVGhlIGxvY2FsZS1zcGVjaWZpYyBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWVzc2FnZShTdHJpbmcga2V5LCBPYmplY3RbXSBhcmdzKQotICB7Ci0gICAgcmV0dXJuIE1lc3NhZ2VGb3JtYXQuZm9ybWF0KGdldE1lc3NhZ2Uoa2V5KSwgYXJncyk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyBhbiBpbWFnZSBkZXNjcmlwdG9yIGZvciB0aGUgbmFtZWQgcmVzb3VyY2UgYXMgcmVsYXRpdmUgdG8gdGhlCi0gICAqIHBsdWdpbiBpbnN0YWxsIGxvY2F0aW9uLgotICAgKiAKLSAgICogQHJldHVybiBBbiBpbWFnZSBkZXNjcmlwdG9yLCBwb3NzaWJseSBudWxsLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBJbWFnZURlc2NyaXB0b3IgZ2V0SW1hZ2VEZXNjcmlwdG9yKFN0cmluZyBuYW1lKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgVVJMIGluc3RhbGxVUkwgPSBpbnN0YW5jZV8uZ2V0QnVuZGxlKCkuZ2V0RW50cnkoIi8iKTsKLSAgICAgIFVSTCBpbWFnZVVSTCA9IG5ldyBVUkwoaW5zdGFsbFVSTCwgbmFtZSk7Ci0gICAgICByZXR1cm4gSW1hZ2VEZXNjcmlwdG9yLmNyZWF0ZUZyb21VUkwoaW1hZ2VVUkwpOwotICAgIH0KLSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFNlZSBJUGx1Z2luSGVscGVyLgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TXNnTG9nZ2VyQ29uZmlnKEhhc2h0YWJsZSBtc2dMb2dnZXJDb25maWcpCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiBTZWUgSVBsdWdpbkhlbHBlci4KLSAgICovCi0gIHB1YmxpYyBIYXNodGFibGUgZ2V0TXNnTG9nZ2VyQ29uZmlnKFBsdWdpbiBwbHVnaW4pCi0gIHsKLSAgICByZXR1cm4gbmV3IEhhc2h0YWJsZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFNlZSBJUGx1Z2luSGVscGVyLgotICAgKi8KLSAgcHVibGljIEhhc2h0YWJsZSBnZXRNc2dMb2dnZXJDb25maWcoKQotICB7Ci0gICAgcmV0dXJuIGdldE1zZ0xvZ2dlckNvbmZpZyh0aGlzKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UGx1Z2luU3RhdGVMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gUGxhdGZvcm0uZ2V0UGx1Z2luU3RhdGVMb2NhdGlvbih0aGlzKS5hZGRUcmFpbGluZ1NlcGFyYXRvcigpLnRvT1NTdHJpbmcoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uKCkKLSAgewotCS8vIFRPRE86IGdldFBsdWdpbkluc3RhbGxMb2NhdGlvbiBjYW4gcmV0dXJuIG51bGwgYW5kIGNhdXNlIHRyb3VibGUgZm9yIHRoZSBXU0UncyBmYXZvdXJpdGVzIG1lY2hhbmlzbS4gODkxMDEgc2hvdWxkIGNvcnJlY3QgdGhpcy4KLQlyZXR1cm4gZ2V0UGx1Z2luSW5zdGFsbExvY2F0aW9uKCkrRmF2b3JpdGVzUmVnaXN0cnlUeXBlRGVmYXVsdC5GQVZPUklURVNfREVGQVVMVDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRQbHVnaW5JbnN0YWxsTG9jYXRpb24oKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgcmV0dXJuIFBsYXRmb3JtLnJlc29sdmUoaW5zdGFuY2VfLmdldEJ1bmRsZSgpLmdldEVudHJ5KCIvIikpLmdldEZpbGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBCdW5kbGVDb250ZXh0IGdldEJ1bmRsZUNvbnRleHQoKSB7Ci0JCXJldHVybiBnZXRJbnN0YW5jZSgpLmNvbnRleHQ7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci9wb3B1cC9Qb3B1cFRlc3RXU0RMLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BvcHVwL1BvcHVwVGVzdFdTREwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc5NzNlYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BvcHVwL1BvcHVwVGVzdFdTREwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA2MDYgICAxMDUwNjkgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKiAyMDA2MDgwMyAgIDE1Mjc5MCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqIDIwMDcwMzI3ICAgMTcyMzM5IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDEyMyAgIDIxNjM3MiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwOTAxMjIgICAyNTc2MTggbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uLCBBZGQgTWVjaGFuaXNtIGZvciBBZG9wdGVycyB0byBtYXAgU2VydmljZXMgdG8gV1NETCBVUkxzCi0gKiAyMDA5MDMxMCAgIDI0MjQ0MCB5ZW5sdUBjYS5pYm0uY29tIC0gWWVuIEx1LCBQbHVnZ2FibGUgSUZpbGUgdG8gVVJJIENvbnZlcnRlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wb3B1cDsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5hY3Rpb24uQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmFjdGlvbi5JQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklBY3Rpb25EZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuY29udmVydGVyLklJRmlsZTJVcmlDb252ZXJ0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLkxhdW5jaE9wdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuTGF1bmNoT3B0aW9uczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuV1NFeHBsb3JlckxhdW5jaGVyQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGx1Z2luLkV4cGxvcmVyUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb25pdG9yLkdldE1vbml0b3JDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS51dGlscy5BZGFwdGVyVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzZmluZGVyLldTRExVUkxTdHJpbmdXcmFwcGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5TZXJ2aWNlSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGw7Ci0KLXB1YmxpYyBjbGFzcyBQb3B1cFRlc3RXU0RMIGV4dGVuZHMgQWN0aW9uIGltcGxlbWVudHMgSUFjdGlvbkRlbGVnYXRlCi17Ci0gIHByb3RlY3RlZCBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24gPSBudWxsOwotCQotICBwdWJsaWMgUG9wdXBUZXN0V1NETCgpCi0gIHsKLSAgICBzdXBlcihFeHBsb3JlclBsdWdpbi5nZXRNZXNzYWdlKCIlUE9QVVBfVEVTVF9XU0RMIikpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcnVuKCkKLSAgewotCVN0cmluZyBzdGF0ZUxvY2F0aW9uID0gRXhwbG9yZXJQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRQbHVnaW5TdGF0ZUxvY2F0aW9uKCk7Ci0JU3RyaW5nIGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbiA9IEV4cGxvcmVyUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0RGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uKCk7Ci0gIAlXU0V4cGxvcmVyTGF1bmNoZXJDb21tYW5kIGNvbW1hbmQgPSBuZXcgV1NFeHBsb3JlckxhdW5jaGVyQ29tbWFuZCgpOwotICAgIGNvbW1hbmQuc2V0Rm9yY2VMYXVuY2hPdXRzaWRlSURFKGZhbHNlKTsKLSAgICBWZWN0b3IgbGF1bmNoT3B0aW9ucyA9IG5ldyBWZWN0b3IoKTsKLSAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHNlbGVjdGlvbi5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgICAgewotICAgICAgICBTdHJpbmcgd3NkbFVSTCA9IG51bGw7Ci0gICAgICAgIE9iamVjdCBvYmplY3QgPSBpdC5uZXh0KCk7Ci0gICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBJUmVzb3VyY2UpCi0gICAgICAgIHsKLSAgICAgIAkgIEZpbGUgd3NkbEZpbGUgPSAoKElSZXNvdXJjZSlvYmplY3QpLmdldExvY2F0aW9uKCkudG9GaWxlKCk7ICAgICAgICAJCQotICAgIAkgIHRyeQotICAgIAkgIHsgICAgICAgICAgICAJICAgICAgICAgIAkJCi0gICAgCQl3c2RsVVJMID0gd3NkbEZpbGUudG9VUkwoKS50b1N0cmluZygpOwotICAgIAkgIH0KLSAgICAJICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11cmxlKQotICAgIAkgIHsKLSAgICAJCXdzZGxVUkwgPSB3c2RsRmlsZS50b1N0cmluZygpOwotICAgIAkgIH0KLSAgICAJICBpZiAob2JqZWN0IGluc3RhbmNlb2YgSUZpbGUpCi0gICAgCQl3c2RsVVJMID0gZ2V0Q29udmVydGVkVVJJRnJvbUlGaWxlKChJRmlsZSlvYmplY3Qsd3NkbFVSTCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoUGxhdGZvcm0uZ2V0QWRhcHRlck1hbmFnZXIoKS5oYXNBZGFwdGVyKG9iamVjdCwgV1NETFVSTFN0cmluZ1dyYXBwZXIuY2xhc3MuZ2V0TmFtZSgpKSkgewotICAgICAgICAJT2JqZWN0IGFkYXB0ZWRPYmplY3QgPSBQbGF0Zm9ybS5nZXRBZGFwdGVyTWFuYWdlcigpLmxvYWRBZGFwdGVyKG9iamVjdCwgV1NETFVSTFN0cmluZ1dyYXBwZXIuY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgCVdTRExVUkxTdHJpbmdXcmFwcGVyIHdyYXBwZXIgPSAoV1NETFVSTFN0cmluZ1dyYXBwZXIpYWRhcHRlZE9iamVjdDsKLSAgICAgICAgCXdzZGxVUkwgPXdyYXBwZXIuZ2V0V1NETFVSTFN0cmluZygpOyAgCQkKLSAgICAgICAgfSAgICAgICAgCi0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFNlcnZpY2VJbXBsKQotICAgICAgICB7Ci0gICAgICAgIAlTZXJ2aWNlSW1wbCBzZXJ2aWNlSW1wbCA9IChTZXJ2aWNlSW1wbClvYmplY3Q7ICAgICAgICAgIAotICAgICAgICAJRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gc2VydmljZUltcGwuZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOyAgICAgICAgCi0gICAgICAgIAl3c2RsVVJMID0gZ2V0Q29udmVydGVkVVJJRnJvbVVSSShkZWZpbml0aW9uLmdldExvY2F0aW9uKCkpOwotICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFdTRExSZXNvdXJjZUltcGwpCi0gICAgICAgIHsKLSAgICAgICAgCVdTRExSZXNvdXJjZUltcGwgV1NETFJJbXBsID0gKFdTRExSZXNvdXJjZUltcGwpb2JqZWN0OwotICAgICAgICAJRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gV1NETFJJbXBsLmdldERlZmluaXRpb24oKTsKLSAgICAgICAgCXdzZGxVUkwgPSBnZXRDb252ZXJ0ZWRVUklGcm9tVVJJKGRlZmluaXRpb24uZ2V0TG9jYXRpb24oKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nKSB7Ci0gICAgICAgIAl3c2RsVVJMID0gKFN0cmluZykgb2JqZWN0OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAJLy8gT2JqZWN0IGlzIG5vdCBhbnkgdHlwZXMgd2UgcmVjb2duaXplZCwgd3NkbFVSTCBpcyBzdGlsbCBudWxsLgotICAgICAgICAgIAkvLyBUcnkgbG9va2luZyB1cCBhbiBhZGFwdGVyIGZvciB0aGUgb2JqZWN0LgotICAgICAgICAJLy8gSWYgZm91bmQsIHVwZGF0ZSB3c2RsVVJMIGNvbnRhaW5zIHRoZSBhZGFwdGVkIFdTREwgc3RyaW5nLiAgCi0gICAgICAgIAkvLyBJZiBub3QgZm91bmQsIHdzZGxVUkwgd291bGQgc3RpbGwgYmUgbnVsbC4KLSAgICAgICAgCXdzZGxVUkwgPSBBZGFwdGVyVXRpbHMuZ2V0QWRhcHRlZFdTREwob2JqZWN0KTsKLSAgICAgICAgfQotICAgICAgIGlmICh3c2RsVVJMICE9IG51bGwpCi0gICAgICAgICBhZGRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMsIHdzZGxVUkwsIHN0YXRlTG9jYXRpb24sIGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbik7ICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgY29tbWFuZC5zZXRMYXVuY2hPcHRpb25zKChMYXVuY2hPcHRpb25bXSlsYXVuY2hPcHRpb25zLnRvQXJyYXkobmV3IExhdW5jaE9wdGlvblswXSkpOwotICAgIGNvbW1hbmQuZXhlY3V0ZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBhbmQgYWRkIHRoZSBXRUJfU0VSVklDRV9FTkRQT0lOVCwgV1NETF9VUkwsIFNUQVRFX0xPQ0FUSUlPTiBhbmQgCi0gICAqIERFRkFVTFRfRkFWT1JJVEVTX0xPQ0FUSU9OIExhdW5jaE9wdGlvbnMgdG8gdGhlIGxhdW5jaE9wdGlvbnMgdmVjdG9yCi0gICAqIAotICAgKiBAcGFyYW0gbGF1bmNoT3B0aW9ucyAtIHZlY3RvciBvZiBsYXVuY2hPcHRpb25zIHRvIGFkZCB0bwotICAgKiBAcGFyYW0gd3NkbFVSTAotICAgKiBAcGFyYW0gc3RhdGVMb2NhdGlvbgotICAgKiBAcGFyYW0gZGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBhZGRMYXVuY2hPcHRpb25zKFZlY3RvciBsYXVuY2hPcHRpb25zLCBTdHJpbmcgd3NkbFVSTCwgU3RyaW5nIHN0YXRlTG9jYXRpb24sIFN0cmluZyBkZWZhdWx0RmF2b3JpdGVzTG9jYXRpb24pCi0gIHsKLQkgIEdldE1vbml0b3JDb21tYW5kIGdldE1vbml0b3JDbWQgPSBuZXcgR2V0TW9uaXRvckNvbW1hbmQoKTsKLSAgICAgIGdldE1vbml0b3JDbWQuc2V0TW9uaXRvclNlcnZpY2UodHJ1ZSk7Ci0gICAgICBnZXRNb25pdG9yQ21kLnNldENyZWF0ZShmYWxzZSk7Ci0gICAgICBnZXRNb25pdG9yQ21kLnNldFdlYlNlcnZpY2VzUGFyc2VyKG5ldyBXZWJTZXJ2aWNlc1BhcnNlcigpKTsKLSAgICAgIGdldE1vbml0b3JDbWQuc2V0V3NkbFVSSSh3c2RsVVJMKTsKLSAgICAgIGdldE1vbml0b3JDbWQuZXhlY3V0ZShudWxsLCBudWxsKTsKLSAgICAgIExpc3QgZW5kcG9pbnRzID0gZ2V0TW9uaXRvckNtZC5nZXRFbmRwb2ludHMoKTsKLSAgICAgIGZvciAoSXRlcmF0b3IgZW5kcG9pbnRzSXQgPSBlbmRwb2ludHMuaXRlcmF0b3IoKTsgZW5kcG9pbnRzSXQuaGFzTmV4dCgpOykKLSAgICAgIHsKLSAgICAJICBsYXVuY2hPcHRpb25zLmFkZChuZXcgTGF1bmNoT3B0aW9uKExhdW5jaE9wdGlvbnMuV0VCX1NFUlZJQ0VfRU5EUE9JTlQsIChTdHJpbmcpZW5kcG9pbnRzSXQubmV4dCgpKSk7Ci0gICAgICB9Ci0gICAgICBsYXVuY2hPcHRpb25zLmFkZChuZXcgTGF1bmNoT3B0aW9uKExhdW5jaE9wdGlvbnMuV1NETF9VUkwsIHdzZGxVUkwpKTsKLQkgIGxhdW5jaE9wdGlvbnMuYWRkKG5ldyBMYXVuY2hPcHRpb24oTGF1bmNoT3B0aW9ucy5TVEFURV9MT0NBVElPTixzdGF0ZUxvY2F0aW9uKSk7Ci0JICBsYXVuY2hPcHRpb25zLmFkZChuZXcgTGF1bmNoT3B0aW9uKExhdW5jaE9wdGlvbnMuREVGQVVMVF9GQVZPUklURVNfTE9DQVRJT04sZGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHJ1bihJQWN0aW9uIGFjdGlvbikKLSAgewotICAgIHJ1bigpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChJQWN0aW9uIGFjdGlvbiwgSVNlbGVjdGlvbiBzZWxlY3Rpb24pCi0gIHsKLQkgIGlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikKLQkJICB0aGlzLnNlbGVjdGlvbiA9IChJU3RydWN0dXJlZFNlbGVjdGlvbikgc2VsZWN0aW9uOwotCSAgZWxzZQotCQkgIHRoaXMuc2VsZWN0aW9uID0gbnVsbDsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0Q29udmVydGVkVVJJRnJvbUlGaWxlKElGaWxlIGZpbGUsU3RyaW5nIGRlZmF1bHRVUkkpCi0gIHsKLQlTdHJpbmcgY29udmVydGVkTG9jYXRpb24gPSBudWxsOwotCWJvb2xlYW4gYWxsb3dCYXNlQ29udmVyc2lvbk9uRmFpbHVyZSA9IHRydWU7Ci0JaWYgKGZpbGUgIT0gbnVsbCAmJiBmaWxlLmV4aXN0cygpKQotCXsJCi0JICBJSUZpbGUyVXJpQ29udmVydGVyIGNvbnZlcnRlciA9IFdTUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0SUZpbGUyVXJpQ29udmVydGVyKCk7Ci0JICBpZiAoY29udmVydGVyICE9IG51bGwpCi0JICB7Ci0JCWNvbnZlcnRlZExvY2F0aW9uID0gY29udmVydGVyLmNvbnZlcnQoZmlsZSk7Ci0JCWFsbG93QmFzZUNvbnZlcnNpb25PbkZhaWx1cmUgPSBjb252ZXJ0ZXIuYWxsb3dCYXNlQ29udmVyc2lvbk9uRmFpbHVyZSgpOwotCSAgfQotCX0KLQlpZiAoY29udmVydGVkTG9jYXRpb24gPT0gbnVsbCAmJiBhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlKQotCSAgcmV0dXJuIGRlZmF1bHRVUkk7Ci0JcmV0dXJuIGNvbnZlcnRlZExvY2F0aW9uOwotICB9ICAKLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldENvbnZlcnRlZFVSSUZyb21VUkkoU3RyaW5nIG9yaWdpbmFsVVJJKQotICB7Ci0JSUZpbGUgZmlsZSA9IG51bGw7Ci0gICAgaWYgKG9yaWdpbmFsVVJJICE9IG51bGwpCi0JewotCSAgU3RyaW5nIHBsYXRmb3JtUmVzb3VyY2UgPSAicGxhdGZvcm06L3Jlc291cmNlIjsKLQkgIGlmIChvcmlnaW5hbFVSSS5zdGFydHNXaXRoKHBsYXRmb3JtUmVzb3VyY2UpKQotCSAgICBmaWxlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRGaWxlKG5ldyBQYXRoKG9yaWdpbmFsVVJJLnN1YnN0cmluZyhwbGF0Zm9ybVJlc291cmNlLmxlbmd0aCgpKSkpOwotCSAgZWxzZSBpZiAob3JpZ2luYWxVUkkuc3RhcnRzV2l0aCgiZmlsZToiKSkKLQkgIHsKLQkJU3RyaW5nIGZpbGVQYXRoID0gY29udmVydFRvUmVsYXRpdmUob3JpZ2luYWxVUkkpOwotCQlmaWxlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRGaWxlKG5ldyBQYXRoKGZpbGVQYXRoKSk7Ci0JICB9Ci0JfQotICAgIHJldHVybiBnZXRDb252ZXJ0ZWRVUklGcm9tSUZpbGUoZmlsZSxvcmlnaW5hbFVSSSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGNvbnZlcnRUb1JlbGF0aXZlKFN0cmluZyB1cmkpCi0gIHsKLSAgCS8vcmVtb3ZlIGZpbGU6Ci0JU3RyaW5nIGZpbGUgPSAiZmlsZTovIjsKLQlTdHJpbmcgZmlsZUwgPSAiZmlsZToiOwotICAJU3RyaW5nIHJvb3QgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldExvY2F0aW9uKCkudG9TdHJpbmcoKTsKLSAgICByb290ID0gZmlsZSArIHJvb3Q7Ci0gIAlTdHJpbmcgcm9vdEwgPSBmaWxlTCArIHJvb3Q7Ci0gICAgaWYodXJpLnN0YXJ0c1dpdGgocm9vdCkgfHwgdXJpLnN0YXJ0c1dpdGgocm9vdEwpKXsKLSAgICAgIHJldHVybiB1cmkuc3Vic3RyaW5nKHJvb3QubGVuZ3RoKCkpOyAgCQotICAgIH0KLSAgICByZXR1cm4gdXJpOwotICB9ICAKLSAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3BvcHVwL1BvcHVwVGVzdFdTSUwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcG9wdXAvUG9wdXBUZXN0V1NJTC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDhhMzE5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvcG9wdXAvUG9wdXBUZXN0V1NJTC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwNTA2ICAgMjAyOTQ1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEFsbG93IFdTRSB0byBsYXVuY2ggb24gV1NJTCBmaWxlLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wb3B1cDsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5MYXVuY2hPcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLkxhdW5jaE9wdGlvbnM7Ci0KLXB1YmxpYyBjbGFzcyBQb3B1cFRlc3RXU0lMIGV4dGVuZHMgUG9wdXBUZXN0V1NETAotewotICBwcm90ZWN0ZWQgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uID0gbnVsbDsKLQkKLSAgcHVibGljIFBvcHVwVGVzdFdTSUwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0KLSAgcHJvdGVjdGVkIHZvaWQgYWRkTGF1bmNoT3B0aW9ucyhWZWN0b3IgbGF1bmNoT3B0aW9ucywgU3RyaW5nIHdzZGxVUkwsIFN0cmluZyBzdGF0ZUxvY2F0aW9uLCBTdHJpbmcgZGVmYXVsdEZhdm9yaXRlc0xvY2F0aW9uKQotICB7Ci0gICAgbGF1bmNoT3B0aW9ucy5hZGQobmV3IExhdW5jaE9wdGlvbihMYXVuY2hPcHRpb25zLldTSUxfVVJMLCB3c2RsVVJMKSk7Ci0JICBsYXVuY2hPcHRpb25zLmFkZChuZXcgTGF1bmNoT3B0aW9uKExhdW5jaE9wdGlvbnMuU1RBVEVfTE9DQVRJT04sc3RhdGVMb2NhdGlvbikpOwotCSAgbGF1bmNoT3B0aW9ucy5hZGQobmV3IExhdW5jaE9wdGlvbihMYXVuY2hPcHRpb25zLkRFRkFVTFRfRkFWT1JJVEVTX0xPQ0FUSU9OLGRlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbikpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9IVFRQVHJhbnNwb3J0RXhjZXB0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9IVFRQVHJhbnNwb3J0RXhjZXB0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MjRjMzUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci90cmFuc3BvcnQvSFRUUFRyYW5zcG9ydEV4Y2VwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDEzICAgMTc2NDkzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0U6IE1ha2UgbWVzc2FnZS90cmFuc3BvcnQgc3RhY2sgcGx1Z2dhYmxlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydDsKLQotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLS8qKgotICogQSB0eXBlIG9mIFRyYW5zcG9ydEV4Y2VwdGlvbiB0aGF0IGNhbiBiZSB0aHJvd24gd2hlbiB0aGUgdHJhbnNwb3J0IHByb3RvY29sCi0gKiBpcyBIVFRQLiAgVGhlIHN0YXR1cyBjb2RlIG9mIHRoZSBIVFRQIHJlc3BvbnNlIGlzIGNhcHR1cmVkIGluIHRoaXMKLSAqIGV4Y2VwdGlvbiBhbmQgcGFzc2VkIHVwIHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuCi0gKi8KLXB1YmxpYyBjbGFzcyBIVFRQVHJhbnNwb3J0RXhjZXB0aW9uIGV4dGVuZHMgVHJhbnNwb3J0RXhjZXB0aW9uIHsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDgyNzcxODA3MzE3OTg4NTg4NzdMOwotCQotCXByaXZhdGUgaW50IHN0YXR1c0NvZGU7Ci0JcHJpdmF0ZSBNYXAgaGVhZGVyczsKLQkKLQkvKioKLQkgKiBDb25zdHJ1Y3Rvci4KLQkgKiAKLQkgKiBAcGFyYW0gc3RhdHVzQ29kZSBUaGUgSFRUUCBzdGF0dXMgY29kZS4KLQkgKiBAcGFyYW0gbWVzc2FnZSBBIG1lc3NhZ2UgYWJvdXQgdGhlIHByb2JsZW0gdGhhdCBvY2N1cnJlZC4KLQkgKiBAcGFyYW0gaGVhZGVycyBBIG1hcCBvZiB0aGUgSFRUUCBoZWFkZXJzLgotCSAqLwotCXB1YmxpYyBIVFRQVHJhbnNwb3J0RXhjZXB0aW9uKGludCBzdGF0dXNDb2RlLCBTdHJpbmcgbWVzc2FnZSwgTWFwIGhlYWRlcnMpIHsKLQkJc3VwZXIobWVzc2FnZSk7Ci0JCXRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7Ci0JCXRoaXMuaGVhZGVycyA9IGhlYWRlcnM7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIEhUVFAgc3RhdHVzIGNvZGUgdXNlZCB0byBjcmVhdGUgdGhpcyBleGNlcHRpb24uCi0JICogCi0JICogQHJldHVybiBUaGUgSFRUUCBzdGF0dXMgY29kZS4KLQkgKi8KLQlwdWJsaWMgaW50IGdldFN0YXR1c0NvZGUoKSB7Ci0JCXJldHVybiBzdGF0dXNDb2RlOwotCX0KLQkKLQkvKioKLQkgKiBSZXRyaWV2ZSB0aGUgSFRUUCBoZWFkZXIgZm9yIHRoZSBnaXZlbiBrZXkKLQkgKiAKLQkgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdmFsdWUuCi0JICogQHJldHVybiBUaGUgSFRUUCBoZWFkZXIgdmFsdWUgZm9yIGtleSwgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBzdWNoIGhlYWRlci4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldEhlYWRlcihTdHJpbmcga2V5KSB7Ci0JICAgIE9iamVjdCB2YWx1ZSA9IGhlYWRlcnMuZ2V0KGtleSk7Ci0JICAgIGlmICh2YWx1ZSAhPSBudWxsKQotCSAgICAJcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7Ci0JICAgIGVsc2UKLQkgICAgCXJldHVybiBudWxsOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvdHJhbnNwb3J0L0lEZXNlcmlhbGl6ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvdHJhbnNwb3J0L0lEZXNlcmlhbGl6ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ4YTIwYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9JRGVzZXJpYWxpemVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0OwotCi0vKioKLSAqIFRoZSBJRGVzZXJpYWxpemVyIGlzIHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgYW4gWE1MIHN0cmluZyBhbmQgZGVzZXJpYWxpemluZyBpdAotICogaW50byB2YWx1ZXMgdG8gcG9wdWxhdGUgYW4gSVNPQVBNZXNzYWdlLgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElEZXNlcmlhbGl6ZXIgewotCQotCS8qKgotCSAqIERlc2VyaWFsaXplIHRoZSBYTUwgc3RyaW5nIGludG8gdGhlIElTT0FQTWVzc2FnZS4gIFRoZSBwYXJ0IHBhcmFtZXRlciB0ZWxscyB0aGUgbWV0aG9kCi0JICogd2hpY2ggcGFydCBvZiB0aGUgbWVzc2FnZSAodGhlIGVudmVsb3BlIG9yIHRoZSBjb250ZW50cyBvZiB0aGUgaGVhZGVyIG9yIGJvZHkpIHRoZSBYTUwKLQkgKiBzdHJpbmcgcmVwcmVzZW50cy4gIE5vdGUgdGhhdCAiY29udGVudHMiIHJlZmVycyB0byB0aGUgbGlzdCBvZiBlbGVtZW50cyBpbnNpZGUgdGhlIGhlYWRlcgotCSAqIG9yIGJvZHksIGFuZCBub3QgdGhlIGhlYWRlciBvciBib2R5IGVsZW1lbnQgaXRzZWxmLgotCSAqIAotCSAqIEBwYXJhbSBwYXJ0IE9uZSBvZiB7QGxpbmsgSVNPQVBNZXNzYWdlI0VOVkVMT1BFfSwge0BsaW5rIElTT0FQTWVzc2FnZSNIRUFERVJfQ09OVEVOVH0sIG9yCi0JICoge0BsaW5rIElTT0FQTWVzc2FnZSNCT0RZX0NPTlRFTlR9LgotCSAqIEBwYXJhbSB4bWwgVGhlIFhNTCBzdHJpbmcgdG8gZGVzZXJpYWxpemUuCi0JICogQHBhcmFtIG1lc3NhZ2UgVGhlIElTT0FQTWVzc2FnZSB0byBkZXNlcmlhbGl6ZSBpbnRvLgotCSAqIEB0aHJvd3MgVHJhbnNwb3J0RXhjZXB0aW9uCi0JICovCi0JcHVibGljIHZvaWQgZGVzZXJpYWxpemUoaW50IHBhcnQsIFN0cmluZyB4bWwsIElTT0FQTWVzc2FnZSBtZXNzYWdlKSB0aHJvd3MgVHJhbnNwb3J0RXhjZXB0aW9uOwkJCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9JU09BUE1lc3NhZ2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvdHJhbnNwb3J0L0lTT0FQTWVzc2FnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2QwYWQ2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvdHJhbnNwb3J0L0lTT0FQTWVzc2FnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotLyoqCi0gKiBUaGUgSVNPQVBNZXNzYWdlIHJlcHJlc2VudHMgYSBTT0FQIG1lc3NhZ2UgaW4gYSB3ZWIgc2VydmljZSBpbnZvY2F0aW9uIG1hZGUgYnkgdGhlCi0gKiBXZWIgU2VydmljZXMgRXhwbG9yZXIncyB0cmFuc3BvcnQgc3RhY2suCi0gKiA8YnIvPgotICogPGJyLz4KLSAqIFRoZSBzZXR0ZXJzIG9mIElTT0FQTWVzc2FnZSBhcmUgY2FsbGVkIGJ5IFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB0byBwb3B1bGF0ZSB0aGUKLSAqIG1lc3NhZ2UgYmVmb3JlIHNlbmRpbmcuICBXU0UgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgYWxsIG1lc3NhZ2UgZWxlbWVudHMgaXQgc2V0cwotICogd2lsbCBoYXZlIHRoZSBzYW1lIG93bmVyIGRvY3VtZW50LgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElTT0FQTWVzc2FnZSB7Ci0KLQkvKioKLQkgKiBJU09BUE1lc3NhZ2UgZGVmaW5lcyB0aGlzIHByb3BlcnR5IGZvciBzdG9yaW5nIHRoZSBTT0FQIGFjdGlvbiB2YWx1ZSBpbgotCSAqIGEgd2ViIHNlcnZpY2UgaW52b2NhdGlvbi4gIFRoaXMgcHJvcGVydHkgd2lsbCBiZSBzZXQgYnkgV2ViIFNlcnZpY2VzIEV4cGxvcmVyCi0JICogcHJpb3IgdG8gcGFzc2luZyB0aGUgbWVzc2FnZSB0byB7QGxpbmsgSVNPQVBUcmFuc3BvcnQjc2VuZChTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBJU09BUE1lc3NhZ2UpfQotCSAqLwotCVN0cmluZyBQUk9QX1NPQVBfQUNUSU9OID0gInByb3Bfc29hcF9hY3Rpb24iOwotCQotCS8qKgotCSAqIFRoaXMgdmFsdWUgaXMgdXNlZCB3aGVuIHNlcmlhbGl6aW5nIGFuZCBkZXNlcmlhbGl6aW5nIGEgbWVzc2FnZS4gIEl0IGluZGljYXRlcyB0aGUgb3BlcmF0aW9uCi0JICogaXMgd29ya2luZyB3aXRoIHRoZSBlbnRpcmUgU09BUCBlbnZlbG9wZSBlbGVtZW50LiAKLQkgKi8KLQlpbnQgRU5WRUxPUEUgPSAwOwotCQotCS8qKgotCSAqIFRoaXMgdmFsdWUgaXMgdXNlZCB3aGVuIHNlcmlhbGl6aW5nIGFuZCBkZXNlcmlhbGl6aW5nIGEgbWVzc2FnZS4gIEl0IGluZGljYXRlcyB0aGUgb3BlcmF0aW9uCi0JICogaXMgd29ya2luZyB3aXRoIHRoZSBlbGVtZW50cyBpbnNpZGUgdGhlIFNPQVAgaGVhZGVyIGVsZW1lbnQuCi0JICovCi0JaW50IEhFQURFUl9DT05URU5UID0gMTsKLQkKLQkvKioKLQkgKiBUaGlzIHZhbHVlIGlzIHVzZWQgd2hlbiBzZXJpYWxpemluZyBhbmQgZGVzZXJpYWxpemluZyBhIG1lc3NhZ2UuICBJdCBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbgotCSAqIGlzIHdvcmtpbmcgd2l0aCB0aGUgZWxlbWVudHMgaW5zaWRlIHRoZSBTT0FQIGJvZHkgZWxlbWVudC4KLQkgKi8KLQlpbnQgQk9EWV9DT05URU5UID0gMjsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIE1lc3NhZ2VDb250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1lc3NhZ2UuICBUaGUgTWVzc2FnZUNvbnRleHQgaXMgY3JlYXRlZAotCSAqIGJ5IHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgYW5kIHBhc3NlZCB0byB0aGUgdHJhbnNwb3J0IHN0YWNrIGR1cmluZyBtZXNzYWdlIGNyZWF0aW9uLiAgCi0JICogSW1wbGVtZW50ZXJzIG9mIElTT0FQTWVzc2FnZSBzaG91bGQgc3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIE1lc3NhZ2VDb250ZXh0LgotCSAqIAotCSAqIEByZXR1cm4gVGhlIE1lc3NhZ2VDb250ZXh0IGVuY2FzdWxhdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd2ViIHNlcnZpY2Ugb3BlcmF0aW9uLiAKLQkgKiBAc2VlIElTT0FQVHJhbnNwb3J0I25ld01lc3NhZ2UoTWVzc2FnZUNvbnRleHQpCi0JICovCi0JcHVibGljIE1lc3NhZ2VDb250ZXh0IGdldE1lc3NhZ2VDb250ZXh0KCk7Ci0KLQkvKioKLQkgKiBTZXRzIGEgcHJvcGVydHkgaW4gdGhpcyBJU09BUE1lc3NhZ2UuCi0JICogCi0JICogQHBhcmFtIGtleSBUaGUga2V5IChuYW1lKSBvZiB0aGUgcHJvcGVydHkKLQkgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRQcm9wZXJ0eShTdHJpbmcga2V5LCBPYmplY3QgdmFsdWUpOwotCi0JLyoqCi0JICogUmV0cmlldmVzIGEgcHJvcGVydHkgZnJvbSB0aGlzIElTT0FQTWVzc2FnZS4KLQkgKiAKLQkgKiBAcGFyYW0ga2V5IFRoZSBrZXkgKG5hbWUpIG9mIHRoZSBwcm9wZXJ0eSB0byByZXRyaWV2ZS4KLQkgKiBAcmV0dXJuIFRoZSB2YWx1ZSBhc3NvaWNhdGVkIHdpdGggdGhlIGdpdmVuIGtleSwgb3IgbnVsbCBpZiB0aGVyZSdzIG5vIHN1Y2ggcHJvcGVydHkuCi0JICovCi0JcHVibGljIE9iamVjdCBnZXRQcm9wZXJ0eShTdHJpbmcga2V5KTsKLQotCS8qKgotCSAqIFRoZSBuYW1lc3BhY2UgdGFibGUgaG9sZHMgdGhlIG5hbWVzcGFjZSBkZWNsYXJhaW9ucyB0aGF0IGFyZSBvbiB0aGUgZW52ZWxvcGUgZWxlbWVudAotCSAqIG9mIHRoZSBTT0FQIG1lc3NhZ2UuICBUaGUgdGFibGUncyBrZXlzIGFyZSB0aGUgbmFtZXNwYWNlIFVSSXMgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZQotCSAqIGFzc29jaWF0ZWQgbmFtZXNwYWNlIHByZWZpeGVzLgotCSAqIDxici8+Ci0JICogPGJyLz4KLQkgKiBUaGUgZWZmZWN0IG9mIGNhbGxpbmcgdGhpcyBtZXRob2QgaXMgdGhhdCB0aGUgZGVjbGFyYXRpb25zIGluIHRoZSBuYW1lc3BhY2UgdGFibGUKLQkgKiBhcmd1bWVudCBzaG91bGQgYWRkIHRvIG9yIHJlcGxhY2UgdGhlIGRlY2xhcmF0aW9ucyBvbiB0aGUgZW52ZWxvcGUuICBUaGlzIEFQSSBkb2VzCi0JICogbm90IHNwZWNpZnkgd2hhdCBoYXBwZW5zIHRvIGV4aXN0aW5nIGRlY2xhcmF0aW9ucyBvbiB0aGUgZW52ZWxvcGUgd2hpY2ggYXJlIG5vdAotCSAqIGluIHRoZSBuYW1lc3BhY2UgdGFibGUgcGFzc2VkIGluLgotCSAqIAotCSAqIEBwYXJhbSBuYW1lc3BhY2VUYWJsZSBUaGUgbmFtZXNwYWNlIHRhYmxlCi0JICovCi0JcHVibGljIHZvaWQgc2V0TmFtZXNwYWNlVGFibGUoTWFwIG5hbWVzcGFjZVRhYmxlKTsKLQotCS8qKgotCSAqIFJldHVybnMgYSB0YWJsZSBvZiB0aGUgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyB0aGF0IGFyZSBvbiB0aGUgZW52ZWxvcGUgZWxlbWVudCBvZiB0aGUKLQkgKiBTT0FQIG1lc3NhZ2UuICBUaGUgdGFibGUncyBrZXlzIGFyZSB0aGUgbmFtZXNwYWNlIFVSSXMgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZQotCSAqIGFzc29jaWF0ZWQgbmFtZXNwYWNlIHByZWZpeGVzLgotCSAqIDxici8+Ci0JICogPGJyLz4KLQkgKiBUaGUgbmFtZXNwYWNlIHRhYmxlIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kIG1heSBiZSBtb2RpZmllZCBieSB0aGUgV2ViIFNlcnZpY2VzCi0JICogRXhwbG9yZXIgYW5kIGxhdGVyIHVwZGF0ZWQgYmFjayB0byB0aGUgbWVzc2FnZSB2aWEgdGhlIHNldE5hbWVzYXBjZVRhYmxlKCkgbWV0aG9kLgotCSAqIAotCSAqIEByZXR1cm4gQSB0YWJsZSBvZiBuYW1lc3BhY2UgVVJJcyB0byBwcmVmaXhlcyBvbiB0aGUgU09BUCBlbnZlbG9wZS4KLQkgKi8KLQlwdWJsaWMgTWFwIGdldE5hbWVzcGFjZVRhYmxlKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBlbnZlbG9wZSBlbGVtZW50IG9mIHRoaXMgbWVzc2FnZS4KLQkgKiAKLQkgKiBAcGFyYW0gZW52ZWxvcGUgVGhlIGVudmVsb3BlIGVsZW1lbnQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0RW52ZWxvcGUoRWxlbWVudCBlbnZlbG9wZSk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBlbnZlbG9wZSBlbGVtZW50IG9mIHRoaXMgbWVzc2FnZS4gIFRoZSBkZWVwIHBhcmFtZXRlciBkaWN0YXRlcyB3aGV0aGVyCi0JICogdGhlIG1ldGhvZCByZXR1cm5zIHRoZSB3aG9sZSBlbnZlbG9wZSB3aXRoIGFsbCBpdHMgZGVzY2VuZGFudHMgb3IganVzdCB0aGUgZW52ZWxvcGUgCi0JICogZWxlbWVudCBpdHNlbGYuCi0JICogCi0JICogQHBhcmFtIGRlZXAgSWYgdHJ1ZSwgdGhlIGVudmVsb3BlIGFuZCBpdHMgZGVzY2VuZGFudHMgYXJlIHJldHVybmVkLCBvdGhlcndpc2Ugb25seQotCSAqIHRoZSBlbnZlbG9wZSBlbGVtZW50IGl0c2VsZiBpcyByZXR1cm5lZC4KLQkgKiBAcmV0dXJuIEFuIGVsZW1lbnQuCi0JICovCi0JcHVibGljIEVsZW1lbnQgZ2V0RW52ZWxvcGUoYm9vbGVhbiBkZWVwKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIGhlYWRlciBlbGVtZW50IG9mIHRoaXMgbWVzc2FnZS4KLQkgKiAKLQkgKiBAcGFyYW0gaGVhZGVyIFRoZSBoZWFkZXIgZWxlbWVudC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRIZWFkZXIoRWxlbWVudCBoZWFkZXIpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgaGVhZGVyIGVsZW1lbnQgb2YgdGhpcyBtZXNzYWdlLiAgVGhlIGRlZXAgcGFyYW1ldGVyIGRpY3RhdGVzIHdoZXRoZXIKLQkgKiB0aGUgbWV0aG9kIHJldHVybnMgdGhlIHdob2xlIGhlYWRlciB3aXRoIGFsbCBpdHMgZGVzY2VuZGFudHMgb3IganVzdCB0aGUgaGVhZGVyIAotCSAqIGVsZW1lbnQgaXRzZWxmLgotCSAqIAotCSAqIEBwYXJhbSBkZWVwIElmIHRydWUsIHRoZSBoZWFkZXIgYW5kIGl0cyBkZXNjZW5kYW50cyBhcmUgcmV0dXJuZWQsIG90aGVyd2lzZSBvbmx5Ci0JICogdGhlIGhlYWRlciBlbGVtZW50IGl0c2VsZiBpcyByZXR1cm5lZC4KLQkgKiBAcmV0dXJuIEFuIGVsZW1lbnQuCi0JICovCi0JcHVibGljIEVsZW1lbnQgZ2V0SGVhZGVyKGJvb2xlYW4gZGVlcCk7Ci0KLQkvKioKLQkgKiBTZXRzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHRoYXQgZ29lcyBpbnRvIHRoZSBtZXNzYWdlJ3MgaGVhZGVyLgotCSAqIAotCSAqIEBwYXJhbSBoZWFkZXJDb250ZW50IEFuIGFycmF5IG9mIGVsZW1lbnRzLgotCSAqLwotCXB1YmxpYyB2b2lkIHNldEhlYWRlckNvbnRlbnQoRWxlbWVudFtdIGhlYWRlckNvbnRlbnQpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgYXJyYXkgb2YgZWxlbWVudHMgdGhhdCBhcmUgaW5zaWRlIHRoZSBtZXNzYWdlJ3MgaGVhZGVyLgotCSAqIAotCSAqIEByZXR1cm4gQW4gYXJyYXkgb2YgZWxlbWVudHMuCi0JICovCi0JcHVibGljIEVsZW1lbnRbXSBnZXRIZWFkZXJDb250ZW50KCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBib2R5IGVsZW1lbnQgb2YgdGhpcyBtZXNzYWdlLiAgRm9yIGFuIFJQQyBzdHlsZSBtZXNzYWdlLCB0aGUgZmlyc3QgY2hpbGQKLQkgKiBlbGVtZW50IG9mIHRoZSBib2R5IHNob3VsZCBiZSB0aGUgUlBDIHdyYXBwZXIgZWxlbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gYm9keSBUaGUgYm9keSBlbGVtZW50LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldEJvZHkoRWxlbWVudCBib2R5KTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGJvZHkgb2YgdGhpcyBtZXNzYWdlLiAgVGhlIGRlZXAgcGFyYW1ldGVyIGRpY3RhdGVzIHdoZXRoZXIKLQkgKiB0aGUgbWV0aG9kIHJldHVybnMgdGhlIHdob2xlIGJvZHkgd2l0aCBhbGwgaXRzIGRlc2NlbmRhbnRzIGVsZW1lbnRzIG9yIGp1c3QgdGhlCi0JICogYm9keS4gIEZvciBhbiBSUEMgc3R5bGUgbWVzc2FnZSwgdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQgb2YgdGhlIAotCSAqIGJvZHkgc2hvdWxkIGJlIHRoZSBSUEMgd3JhcHBlciBlbGVtZW50LCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiB0aGUgZGVlcAotCSAqIHBhcmFtZXRlci4KLQkgKiAKLQkgKiBAcGFyYW0gZGVlcCBJZiB0cnVlLCB0aGUgYm9keSBhbmQgaXRzIGRlc2NlbmRhbnRzIGFyZSByZXR1cm5lZCwgb3RoZXJ3aXNlIG9ubHkKLQkgKiB0aGUgYm9keSAoYW5kIHRoZSBSUEMgd3JhcHBlciBlbGVtZW50IGlmIHRoZSBtZXNzYWdlIGlzIFJQQyBzdHlsZSkgaXMgcmV0dXJuZWQuCi0JICogQHJldHVybiBBbiBlbGVtZW50LgotCSAqLwkKLQlwdWJsaWMgRWxlbWVudCBnZXRCb2R5KGJvb2xlYW4gZGVlcCk7Ci0KLQkvKioKLQkgKiBTZXRzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHRoYXQgZ29lcyBpbnRvIHRoZSBtZXNzYWdlJ3MgYm9keS4gIEZvciBhbiBSUEMgc3R5bGUKLQkgKiBtZXNzYWdlLCB0aGUgYm9keSBjb250ZW50cyBhcmUgdGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgUlBDIHdyYXBwZXIgZWxlbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gYm9keUNvbnRlbnQgQW4gYXJyYXkgb2YgZWxlbWVudHMuCi0JICovCi0JcHVibGljIHZvaWQgc2V0Qm9keUNvbnRlbnQoRWxlbWVudFtdIGJvZHlDb250ZW50KTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGFycmF5IG9mIGVsZW1lbnRzIHRoYXQgYXJlIGluc2lkZSB0aGUgbWVzc2FnZSdzIGJvZHkuICBGb3IgYW4gUlBDIHN0eWxlCi0JICogbWVzc2FnZSwgdGhlIGJvZHkgY29udGVudHMgYXJlIHRoZSBlbGVtZW50cyBpbnNpZGUgdGhlIFJQQyB3cmFwcGVyIGVsZW1lbnQuCi0JICogCi0JICogQHJldHVybiBBbiBhcnJheSBvZiBlbGVtZW50cy4KLQkgKi8KLQlwdWJsaWMgRWxlbWVudFtdIGdldEJvZHlDb250ZW50KCk7Ci0KLQkvKioKLQkgKiBTZXQgdGhlIGZhdWx0IGVsZW1lbnQgZm9yIHRoaXMgbWVzc2FnZSwgaWYgYW55LgotCSAqIAotCSAqIEBwYXJhbSBmYXVsdCBBIGZhdWx0IGVsZW1lbnQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0RmF1bHQoRWxlbWVudCBmYXVsdCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBmYXVsdCBlbGVtZW50LCBpZiBhbnkuCi0JICogCi0JICogQHJldHVybiBUaGUgZmF1bHQgZWxlbWVudCBvciBudWxsIGlmIG5vIGZhdWx0IGhhcyBvY2N1cnJlZC4KLQkgKi8KLQlwdWJsaWMgRWxlbWVudCBnZXRGYXVsdCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgWE1MIHNlcmlhbGl6ZWQgZm9ybSBvZiB0aGlzIElTT0FQTWVzc2FnZS4KLQkgKiAKLQkgKiBAcmV0dXJuIEFuIFhNTCBzdHJpbmcuCi0JICogQHNlZSBJU2VyaWFsaXplcgotCSAqIEB0aHJvd3MgVHJhbnNwb3J0RXhjZXB0aW9uIAotCSAqLwotCXB1YmxpYyBTdHJpbmcgdG9YTUwoKSB0aHJvd3MgVHJhbnNwb3J0RXhjZXB0aW9uOwotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9JU09BUFRyYW5zcG9ydC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci90cmFuc3BvcnQvSVNPQVBUcmFuc3BvcnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QyYTNmOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9JU09BUFRyYW5zcG9ydC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDEzICAgMTc2NDkzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0U6IE1ha2UgbWVzc2FnZS90cmFuc3BvcnQgc3RhY2sgcGx1Z2dhYmxlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydDsKLQotLyoqCi0gKiBUaGUgSVNPQVBUcmFuc3BvcnQgaXMgdGhlIGNvcmUgcGllY2Ugb2YgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB0cmFuc3BvcnQgc3RhY2suCi0gKiBJdCBpcyByZXNwb25zaWJsZSBmb3IgaW52b2tpbmcgdGhlIHdlYiBzZXJ2aWNlIGFuZCBpdCBhbHNvIGFjdHMgYXMgdGhlIGZhY3RvcnkgZm9yCi0gKiBjcmVhdGluZyBJU2VyaWFsaWVyLCBJRGVzZXJpYWxpemVyLCBhbmQgSVNPQVBNZXNzYWdlIGluc3RhbmNlcyB3aGljaCBtYWtlIHVwIHRoZQotICogcmVzdCBvZiB0aGUgV1NFIHRyYW5zcG9ydC4KLSAqLwotcHVibGljIGludGVyZmFjZSBJU09BUFRyYW5zcG9ydCB7CQkKLQotCS8qKgotCSAqIEZhY3RvcnkgbWV0aG9kIGZvciBJU2VyaWFsaXplci4KLQkgKiAKLQkgKiBAcmV0dXJuIEFuIGluc3RhbmNlIG9mIElTZXJpYWxpemVyLgotCSAqLwotCXB1YmxpYyBJU2VyaWFsaXplciBuZXdTZXJpYWxpemVyKCk7Ci0JCi0JLyoqCi0JICogRmFjdG9yeSBtZXRob2QgZm9yIElEZXNlcmlhbGl6ZXIuCi0JICogCi0JICogQHJldHVybiBBbiBpbnN0YW5jZSBvZiBJRGVzZXJpYWxpemVyLgotCSAqLwotCXB1YmxpYyBJRGVzZXJpYWxpemVyIG5ld0Rlc2VyaWFsaXplcigpOwotCQotCS8qKgotCSAqIEZhY3RvcnkgbWV0aG9kIGZvciBJU09BUE1lc3NhZ2UuCi0JICogCi0JICogQHBhcmFtIGNvbnRleHQgTWVzc2FnZUNvbnRleHQgZW5jYXBzdWxhdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd2ViIHNlcnZpY2Ugb3BlcmF0aW9uLgotCSAqIEByZXR1cm4gQW4gaW5zdGFuY2Ugb2YgSVNPQVBNZXNzYWdlLgotCSAqIEB0aHJvd3MgVHJhbnNwb3J0RXhjZXB0aW9uCi0JICovCi0JcHVibGljIElTT0FQTWVzc2FnZSBuZXdNZXNzYWdlKE1lc3NhZ2VDb250ZXh0IGNvbnRleHQpIHRocm93cyBUcmFuc3BvcnRFeGNlcHRpb247Ci0JCi0JLyoqCi0JICogSW52b2tlcyB0aGUgd2ViIHNlcnZpY2Ugb3BlcmF0aW9uIGJ5IHNlbmRpbmcgdGhlIFNPQVAgbWVzc2FnZSwgdGhlbiBwYXJzaW5nIHRoZSByZXN1bHRzCi0JICogaW50byBhIHJlc3BvbnNlIElTT0FQTWVzc2FnZS4KLQkgKiAKLQkgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuCi0JICogQHBhcmFtIHVzZXJuYW1lIFVzZXJuYW1lIHRvIHVzZSBmb3IgYmFzaWMgYXV0aCBwcm90ZWN0ZWQgZW5kcG9pbnRzLiAgU2V0IHRvIG51bGwgaWYgbm90IHJlcXVpcmVkLiAgCi0JICogQHBhcmFtIHBhc3N3b3JkIFBhc3N3b3JkIHRvIHVzZSBmb3IgYmFzaWMgYXV0aCBwcm90ZWN0ZWQgZW5kcG9pbnRzLiAgU2V0IHRvIG51bGwgaWYgbm90IHJlcXVpcmVkLgotCSAqIEBwYXJhbSBtZXNzYWdlIFRoZSBTT0FQIHJlcXVlc3QgbWVzc2FnZS4KLQkgKiBAcmV0dXJuIEFuIElTT0FQTWVzYWdlIHJlcHJlc2VudGluZyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgd2ViIHNlcnZpY2UgaW52b2NhdGlvbi4KLQkgKiBAdGhyb3dzIFRyYW5zcG9ydEV4Y2VwdGlvbgotCSAqLwotCXB1YmxpYyBJU09BUE1lc3NhZ2Ugc2VuZChTdHJpbmcgdXJsLCBTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBwYXNzd29yZCwgSVNPQVBNZXNzYWdlIG1lc3NhZ2UpIHRocm93cyBUcmFuc3BvcnRFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9JU09BUFRyYW5zcG9ydFByb3ZpZGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9JU09BUFRyYW5zcG9ydFByb3ZpZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZTNkYzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci90cmFuc3BvcnQvSVNPQVBUcmFuc3BvcnRQcm92aWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDEzICAgMTc2NDkzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0U6IE1ha2UgbWVzc2FnZS90cmFuc3BvcnQgc3RhY2sgcGx1Z2dhYmxlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydDsKLQotLyoqCi0gKiBJU09BUFRyYW5zcG9ydFByb3ZpZGVyIGlzIGEgZmFjdG9yeSBmb3IgY3JlYXRpbmcgSVNPQVBUcmFuc3BvcnQgb2JqZWN0cy4KLSAqIEFueW9uZSB3aG8gd2lzaGVzIHRvIGV4dGVuZCB0aGUgb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyLndzZVRyYW5zcG9ydFByb3ZpZGVyCi0gKiBleHRlbnNpb24tcG9pbnQgbXVzdCBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIGludGVyZmFjZS4gCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVNPQVBUcmFuc3BvcnRQcm92aWRlciB7Ci0KLQkvKioKLQkgKiBNZXRob2QgZm9yIG9idGFpbmluZyBhIG5ldyBJU09BUFRyYW5zcG9ydCBmcm9tIHRoaXMgcHJvdmlkZXIuCi0JICogVGhpcyBtZXRob2Qgc2hvdWxkIG5ldmVyIHJldHVybiBudWxsLgotCSAqIAotCSAqIEByZXR1cm4gQSBuZXcgSVNPQVBUcmFuc3BvcnQgb2JqZWN0LgotCSAqLwotCXB1YmxpYyBJU09BUFRyYW5zcG9ydCBuZXdUcmFuc3BvcnQoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvdHJhbnNwb3J0L0lTZXJpYWxpemVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9JU2VyaWFsaXplci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGI2OWZiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvdHJhbnNwb3J0L0lTZXJpYWxpemVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0OwotCi0vKioKLSAqIFRoZSBJU2VyaWFsaXplciBpcyByZXNwb25zaWJsZSBmb3IgdGFraW5nIGFuIElTT0FQTWVzc2FnZSBhbmQgc2VyaWFsaXppbmcgaXQKLSAqIGludG8gYW4gWE1MIHN0cmluZy4KLSAqLwotcHVibGljIGludGVyZmFjZSBJU2VyaWFsaXplciB7Ci0KLQkvKioKLQkgKiBTZXJpYWxpemUgdGhlIElTT0FQTWVzc2FnZSBpbnRvIGFuIFhNTCBzdHJpbmcuICBUaGUgcGFydCBwYXJhbWV0ZXIgdGVsbHMgdGhlIG1ldGhvZAotCSAqIHdoaWNoIHBhcnQgb2YgdGhlIG1lc3NhZ2UgKHRoZSBlbnZlbG9wZSBvciB0aGUgY29udGVudHMgb2YgdGhlIGhlYWRlciBvciBib2R5KSB0bwotCSAqIHNlcmlhbGl6ZS4gIE5vdGUgdGhhdCAiY29udGVudHMiIHJlZmVycyB0byB0aGUgbGlzdCBvZiBlbGVtZW50cyBpbnNpZGUgdGhlIGhlYWRlcgotCSAqIG9yIGJvZHksIGFuZCBub3QgdGhlIGhlYWRlciBvciBib2R5IGVsZW1lbnQgaXRzZWxmLgotCSAqIAotCSAqIEBwYXJhbSBwYXJ0IE9uZSBvZiB7QGxpbmsgSVNPQVBNZXNzYWdlI0VOVkVMT1BFfSwge0BsaW5rIElTT0FQTWVzc2FnZSNIRUFERVJfQ09OVEVOVH0sIG9yCi0JICoge0BsaW5rIElTT0FQTWVzc2FnZSNCT0RZX0NPTlRFTlR9LgotCSAqIEBwYXJhbSBtZXNzYWdlIFRoZSBJU09BUE1lc3NhZ2UgdG8gc2VyaWFsaXplLgotCSAqIEByZXR1cm4gQW4gWE1MIHN0cmluZy4gCi0JICogQHRocm93cyBUcmFuc3BvcnRFeGNlcHRpb24KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIHNlcmlhbGl6ZShpbnQgcGFydCwgSVNPQVBNZXNzYWdlIG1lc3NhZ2UpIHRocm93cyBUcmFuc3BvcnRFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9NZXNzYWdlQ29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci90cmFuc3BvcnQvTWVzc2FnZUNvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UzMjdjYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9NZXNzYWdlQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQ7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotLyoqCi0gKiBBIE1lc3NhZ2VDb250ZXh0IG9iamVjdCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWVzc2FnZSB0aGF0IGlzIHRvIGJlCi0gKiBzZW50IG9uIGEgd2ViIHNlcnZpY2UgaW52b2NhdGlvbi4gIFRoaXMgaW5mb3JtYXRpb24gaXMgcGFzc2VkIHRvIHRoZQotICogSVNPQVBUcmFuc3BvcnQgc28gdGhhdCBpdCBjYW4gY29uc3RydWN0IGFuIGFwcHJvcHJpYXRlIElTT0FQTWVzc2FnZSB0bwotICogaGFuZGxlIHRoZSBpbnZvY2F0aW9uLgotICovCi1wdWJsaWMgY2xhc3MgTWVzc2FnZUNvbnRleHQgewotCQotCXByaXZhdGUgRGVmaW5pdGlvbiBkZWZpbml0aW9uOwotCXByaXZhdGUgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgYmluZGluZ1Byb3RvY29sOwotCXByaXZhdGUgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uOwkKLQlwcml2YXRlIGJvb2xlYW4gZG9jdW1lbnRTdHlsZTsJCQkKLQkKLQkvKioKLQkgKiBTZXRzIGEgcmVmZXJlbmNlIHRvIHRoZSBXU0RMIGRlZmluaXRpb24uCi0JICogCi0JICogQHBhcmFtIGRlZmluaXRpb24gVGhlIFdTREwgZGVmaW5pdGlvbi4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXREZWZpbml0aW9uKERlZmluaXRpb24gZGVmaW5pdGlvbikgewotCQl0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBXU0RMIGRlZmluaXRpb24uCi0JICogCi0JICogQHJldHVybiBUaGUgV1NETCBkZWZpbml0aW9uLgotCSAqLwotCXB1YmxpYyBEZWZpbml0aW9uIGdldERlZmluaXRpb24oKSB7Ci0JCXJldHVybiBkZWZpbml0aW9uOwotCX0KLQkKLQkvKioKLQkgKiBTZXRzIGEgcmVmZXJlbmNlIHRvIHRoZSBiaW5kaW5nIGV4dGVuc2liaWxpdHkgZWxlbWVudCBpbiB0aGUgV1NETCBkb2N1bWVudC4KLQkgKiBGb3IgYSB3ZWIgc2VydmljZSB0aGF0IHVzZXMgdGhlIFNPQVAgcHJvdG9jb2wsIHRoaXMgd2lsbCBiZSBhbiBpbnN0YW5jZSBvZgotCSAqIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nCi0JICogCi0JICogQHBhcmFtIGJpbmRpbmdQcm90b2NvbCBUaGUgYmluZGluZyBleHRlbnNpYmlsaXR5IGVsZW1lbnQuCi0JICovCi0JcHVibGljIHZvaWQgc2V0QmluZGluZ1Byb3RvY29sKEV4dGVuc2liaWxpdHlFbGVtZW50IGJpbmRpbmdQcm90b2NvbCkgewotCQl0aGlzLmJpbmRpbmdQcm90b2NvbCA9IGJpbmRpbmdQcm90b2NvbDsJCQotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBiaW5kaW5nIGV4dGVuc2liaWxpdHkgZWxlbWVudC4KLQkgKiAKLQkgKiBAcmV0dXJuIFRoZSBiaW5kaW5nIGV4dGVuc2liaWxpdHkgZWxlbWVudC4KLQkgKi8KLQlwdWJsaWMgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZ2V0QmluZGluZ1Byb3RvY29sKCkgewotCQlyZXR1cm4gYmluZGluZ1Byb3RvY29sOwotCX0KLQkKLQkvKioKLQkgKiBTZXRzIGEgcmVmZXJlbmNlIHRvIHRoZSBiaW5kaW5nIG9wZXJhdGlvbiBlbGVtZW50IGluIHRoZSBXU0RMIGRvY3VtZW50LgotCSAqIAotCSAqIEBwYXJhbSBiaW5kaW5nT3BlcmF0aW9uIFRoZSBiaW5kaW5nIG9wZXJhdGlvbiBlbGVtZW50LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldEJpbmRpbmdPcGVyYXRpb24oQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uKSB7Ci0JCXRoaXMuYmluZGluZ09wZXJhdGlvbiA9IGJpbmRpbmdPcGVyYXRpb247Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIGJpbmRpbmcgb3BlcmF0aW9uIGVsZW1lbnQuCi0JICogCi0JICogQHJldHVybiBUaGUgYmluZGluZyBvcGVyYXRpb24gZWxlbWVudC4KLQkgKi8KLQlwdWJsaWMgQmluZGluZ09wZXJhdGlvbiBnZXRCaW5kaW5nT3BlcmF0aW9uKCkgewotCQlyZXR1cm4gYmluZGluZ09wZXJhdGlvbjsKLQl9CQkKLQkJCi0JLyoqCi0JICogU2V0cyB0aGUgZmxhZyBvbiB3aGV0aGVyIHRoZSBtZXNzYWdlIGNyZWF0ZWQgZnJvbSB0aGlzIE1lc3NhZ2VDb250ZXh0Ci0JICogaXMgZG9jdW1lbnQgc3R5bGUgb3Igbm90LgotCSAqIAotCSAqIEBwYXJhbSBkb2N1bWVudFN0eWxlIFRydWUgZm9yIGRvY3VtZW50IHN0eWxlLCBmYWxzZSBvdGhlcndpc2UuCi0JICovCi0JcHVibGljIHZvaWQgc2V0RG9jdW1lbnRTdHlsZShib29sZWFuIGRvY3VtZW50U3R5bGUpIHsKLQkJdGhpcy5kb2N1bWVudFN0eWxlID0gZG9jdW1lbnRTdHlsZTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgZG9jdW1lbnQgc3R5bGUgcHJvcGVydHkuCi0JICogCi0JICogQHJldHVybiBUaGUgZG9jdW1lbnQgc3R5bGUgcHJvcGVydHkuCi0JICovCi0JcHVibGljIGJvb2xlYW4gaXNEb2N1bWVudFN0eWxlKCkgewotCQlyZXR1cm4gZG9jdW1lbnRTdHlsZTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9TT0FQTWVzc2FnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHBsb3Jlci90cmFuc3BvcnQvU09BUE1lc3NhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlhNDFmNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9TT0FQTWVzc2FnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi0vKioKLSAqIFRoaXMgaXMgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBJU09BUE1lc3NhZ2UgaW50ZXJmYWNlIHRoYXQgZXh0ZW5kZXJzIG9mIHRoZSBXZWIKLSAqIFNlcnZpY2VzIEV4cGxvcmVyIHRyYW5zcG9ydCBjYW4gdXNlIGlmIHRoZXkgZG8gbm90IHdpc2ggdG8gaW1wbGVtZW50IHRoZWlyIG93biBtZXNzYWdlLiAgCi0gKiBUaGlzIGNsYXNzIGlzICBpbXBsZW1lbnRlZCBhcyBhIGNvbGxlY3Rpb24gb2YgbG9vc2UgcGllY2VzIG9mIHRoZSBTT0FQIG1lc3NhZ2UsIGFuZCBlYWNoIAotICogcGllY2UgbXVzdCBiZSBzZXQgaW5kaXZpZHVhbGx5IChmb3IgZXhhbXBsZSwgc2V0dGluZyB0aGUgZW52ZWxvcGUgZWxlbWVudCB3aWxsIG5vdCAKLSAqIGF1dG9tYXRpY2FsbHkgcG9wdWxhdGUgdGhlIGhlYWRlciBvciBib2R5IGVsZW1lbnRzKS4KLSAqIDxici8+Ci0gKiA8YnIvPgotICogVGhpcyBjbGFzcyBkb2VzIG5vdCBrbm93IGhvdyB0byBzZXJpYWxpemUgaXRzZWxmLiAgSXQgZGVwZW5kcyBvbiBhbiBJU2VyaWFsaXplciBwcm92aWRlZCBieQotICogdGhlIHRyYW5zcG9ydCBleHRlbmRlci4gCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBTT0FQTWVzc2FnZSBpbXBsZW1lbnRzIElTT0FQTWVzc2FnZSB7Ci0JCi0JcHJpdmF0ZSBNZXNzYWdlQ29udGV4dCBjb250ZXh0OwotCXByaXZhdGUgSVNlcmlhbGl6ZXIgc2VyaWFsaXplcjsKLQkJCi0JcHJpdmF0ZSBNYXAgcHJvcGVydGllcyA9IG5ldyBIYXNodGFibGUoKTsJCi0JCi0JcHJpdmF0ZSBFbGVtZW50IGVudmVsb3BlID0gbnVsbDsKLQkKLQlwcml2YXRlIEVsZW1lbnQgaGVhZGVyID0gbnVsbDsKLQlwcml2YXRlIEVsZW1lbnRbXSBoZWFkZXJDb250ZW50ID0gbnVsbDsKLQkKLQlwcml2YXRlIEVsZW1lbnQgYm9keSA9IG51bGw7Ci0JcHJpdmF0ZSBFbGVtZW50W10gYm9keUNvbnRlbnQgPSBudWxsOwkKLQkJCi0JcHJpdmF0ZSBFbGVtZW50IGZhdWx0ID0gbnVsbDsKLQkJCi0JcHJpdmF0ZSBTdHJpbmcgeG1sID0gbnVsbDsKLQkKLQkvKioKLQkgKiBDb25zdHJ1Y3Rvci4KLQkgKiAKLQkgKiBAcGFyYW0gY29udGV4dCBUaGUgTWVzc2FnZUNvbnRleHQuCi0JICogQHBhcmFtIHNlcmlhbGl6ZXIgQW4gSVNlcmlhbGl6ZXIgdG8gdXNlIHRvIHNlcmlhbGl6ZSB0aGlzIG1lc3NhZ2UuCi0JICovCi0JcHVibGljIFNPQVBNZXNzYWdlKE1lc3NhZ2VDb250ZXh0IGNvbnRleHQsIElTZXJpYWxpemVyIHNlcmlhbGl6ZXIpIHsKLQkJdGhpcy5jb250ZXh0ID0gY29udGV4dDsKLQkJdGhpcy5zZXJpYWxpemVyID0gc2VyaWFsaXplcjsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UjZ2V0TWVzc2FnZUNvbnRleHQoKQotCSAqLwotCXB1YmxpYyBNZXNzYWdlQ29udGV4dCBnZXRNZXNzYWdlQ29udGV4dCgpIHsKLQkJcmV0dXJuIGNvbnRleHQ7Ci0JfQotCQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LklTT0FQTWVzc2FnZSNzZXRQcm9wZXJ0eShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KQotCSAqLwotCXB1YmxpYyB2b2lkIHNldFByb3BlcnR5KFN0cmluZyBrZXksIE9iamVjdCB2YWx1ZSkgewotCQlwcm9wZXJ0aWVzLnB1dChrZXksIHZhbHVlKTsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UjZ2V0UHJvcGVydHkoamF2YS5sYW5nLlN0cmluZykKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGdldFByb3BlcnR5KFN0cmluZyBrZXkpIHsKLQkJcmV0dXJuIHByb3BlcnRpZXMuZ2V0KGtleSk7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBNZXNzYWdlI3NldE5hbWVzcGFjZVRhYmxlKGphdmEudXRpbC5NYXApCi0JICovCi0JcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNldE5hbWVzcGFjZVRhYmxlKE1hcCBuYW1lc3BhY2VUYWJsZSkgewotCQlpZiAobmFtZXNwYWNlVGFibGUgPT0gbnVsbCB8fCBlbnZlbG9wZSA9PSBudWxsKQotCQkJcmV0dXJuOwotCQotCQlJdGVyYXRvciBpdGVyID0gbmFtZXNwYWNlVGFibGUuZW50cnlTZXQoKS5pdGVyYXRvcigpOwotCQkKLQkJd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7Ci0JCQlNYXAuRW50cnkgZW50cnkgPSAoTWFwLkVudHJ5KSBpdGVyLm5leHQoKTsKLQkJCVN0cmluZyBuYW1lID0gInhtbG5zOiIgKyBlbnRyeS5nZXRWYWx1ZSgpOwkJCQotCQkJZW52ZWxvcGUuc2V0QXR0cmlidXRlKG5hbWUsIGVudHJ5LmdldEtleSgpLnRvU3RyaW5nKCkpOwkJCQotCQl9Ci0JCQotCQl4bWwgPSBudWxsOwotCX0KLQkKLQkvKgotCSAqIElmIHRoZSBhdHRyaWJ1dGUgaXMgYSBuYW1lc3BhY2UgZGVjbGFyYXRpb24sIHRoZSBuYW1lc3BhY2UgcHJlZml4IGlzIHJldHVybmVkLgotCSAqIE90aGVyd2lzZSBudWxsIGlzIHJldHVybmVkLgotCSAqLwotCXByaXZhdGUgU3RyaW5nIGdldE5TUHJlZml4KEF0dHIgYXR0cmlidXRlKSB7Ci0JCVN0cmluZyBuYW1lID0gYXR0cmlidXRlLmdldE5hbWUoKTsKLQkJaWYgKG5hbWUuc3RhcnRzV2l0aCgieG1sbnM6IikpCi0JCQlyZXR1cm4gbmFtZS5zdWJzdHJpbmcoNik7Ci0JCXJldHVybiBudWxsOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LklTT0FQTWVzc2FnZSNnZXROYW1lc3BhY2VUYWJsZSgpCi0JICovCi0JcHVibGljIE1hcCBnZXROYW1lc3BhY2VUYWJsZSgpIHsKLQkJCi0JCUhhc2h0YWJsZSBuYW1lc3BhY2VUYWJsZSA9IG5ldyBIYXNodGFibGUoKTsKLQkJCi0JCWlmIChlbnZlbG9wZSAhPSBudWxsKSB7Ci0JCQlOYW1lZE5vZGVNYXAgYXR0cmlidXRlcyA9IGVudmVsb3BlLmdldEF0dHJpYnV0ZXMoKTsKLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5nZXRMZW5ndGgoKTsgaSsrKSB7Ci0JCQkJQXR0ciBhdHRyaWJ1dGUgPSAoQXR0cikgYXR0cmlidXRlcy5pdGVtKGkpOwotCQkJCVN0cmluZyBwcmVmaXggPSBnZXROU1ByZWZpeChhdHRyaWJ1dGUpOwotCQkJCWlmIChwcmVmaXggIT0gbnVsbCkKLQkJCQkJbmFtZXNwYWNlVGFibGUucHV0KGF0dHJpYnV0ZS5nZXRWYWx1ZSgpLCBwcmVmaXgpOwotCQkJfQkJCQotCQl9CQkKLQkJCi0JCXJldHVybiBuYW1lc3BhY2VUYWJsZTsKLQl9Ci0JCi0JLyoKLQkgKiBBcHBlbmRzIGEgY2hpbGQgbm9kZSB0byBhIHBhcmVudCBub2RlLCB0YWtlcyBjYXJlIG9mIGltcG9ydGluZwotCSAqIHRoZSBjaGlsZCBub2RlIGlmIG5lY2Nlc3NhcnkuCi0JICovCi0JcHJpdmF0ZSB2b2lkIGFwcGVuZE5vZGUoTm9kZSBwYXJlbnQsIE5vZGUgY2hpbGQpIHsKLQkJaWYgKHBhcmVudCA9PSBudWxsIHx8IGNoaWxkID09IG51bGwpCi0JCQlyZXR1cm47Ci0JCQotCQlEb2N1bWVudCBvd25lciA9IHBhcmVudC5nZXRPd25lckRvY3VtZW50KCk7Ci0JCQotCQlpZiAoIW93bmVyLmVxdWFscyhjaGlsZC5nZXRPd25lckRvY3VtZW50KCkpKQotCQkJY2hpbGQgPSBvd25lci5pbXBvcnROb2RlKGNoaWxkLCB0cnVlKTsKLQkJCi0JCXBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7Ci0JfQotCQotCS8qCi0JICogQWRkcyBhbiBhcnJheSBvZiBlbGVtZW50cyB0byB0aGUgcGFyZW50IGVsZW1lbnQgYXMgY2hpbGQgZWxlbWVudHMuCi0JICovCi0JcHJpdmF0ZSB2b2lkIGFwcGVuZENoaWxkcmVuKEVsZW1lbnQgcGFyZW50LCBFbGVtZW50W10gY2hpbGRyZW4pIHsKLQkJaWYgKHBhcmVudCA9PSBudWxsIHx8IGNoaWxkcmVuID09IG51bGwpCi0JCQlyZXR1cm47Ci0JCQotCQlmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0JCQlpZiAoY2hpbGRyZW5baV0gPT0gbnVsbCkKLQkJCQljb250aW51ZTsKLQkJCWFwcGVuZE5vZGUocGFyZW50LCBjaGlsZHJlbltpXSk7Ci0JCX0KLQl9CQkKLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LklTT0FQTWVzc2FnZSNzZXRFbnZlbG9wZShvcmcudzNjLmRvbS5FbGVtZW50KQotCSAqLwotCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXRFbnZlbG9wZShFbGVtZW50IGVudmVsb3BlKSB7Ci0JCWlmIChlbnZlbG9wZSA9PSBudWxsKQotCQkJdGhpcy5lbnZlbG9wZSA9IGVudmVsb3BlOwotCQllbHNlCi0JCQl0aGlzLmVudmVsb3BlID0gKEVsZW1lbnQpIGVudmVsb3BlLmNsb25lTm9kZShmYWxzZSk7Ci0JCQkJCQotCQl4bWwgPSBudWxsOwotCX0KLQkJCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UjZ2V0RW52ZWxvcGUoYm9vbGVhbikKLQkgKi8KLQlwdWJsaWMgRWxlbWVudCBnZXRFbnZlbG9wZShib29sZWFuIGRlZXApIHsKLQkJaWYgKCFkZWVwKQotCQkJcmV0dXJuIGVudmVsb3BlOwotCQkKLQkJc3luY2hyb25pemVkICh0aGlzKSB7Ci0JCQlpZiAoZW52ZWxvcGUgPT0gbnVsbCkKLQkJCQlyZXR1cm4gbnVsbDsKLQkJCQotCQkJRWxlbWVudCBjbG9uZWRFbnZlbG9wZSA9IChFbGVtZW50KSBlbnZlbG9wZS5jbG9uZU5vZGUoZmFsc2UpOwotCQkJCi0JCQlpZiAoaGVhZGVyQ29udGVudCAhPSBudWxsICYmIGhlYWRlckNvbnRlbnQubGVuZ3RoID4gMCkKLQkJCQlhcHBlbmROb2RlKGNsb25lZEVudmVsb3BlLCBnZXRIZWFkZXIodHJ1ZSkpOwotCQkJCQotCQkJYXBwZW5kTm9kZShjbG9uZWRFbnZlbG9wZSwgZ2V0Qm9keSh0cnVlKSk7Ci0JCQkKLQkJCXJldHVybiBjbG9uZWRFbnZlbG9wZTsJCi0JCX0KLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2Ujc2V0SGVhZGVyKG9yZy53M2MuZG9tLkVsZW1lbnQpCi0JICovCi0JcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNldEhlYWRlcihFbGVtZW50IGhlYWRlcikgewotCQlpZiAoaGVhZGVyID09IG51bGwpCi0JCQl0aGlzLmhlYWRlciA9IG51bGw7CQkJCi0JCWVsc2UKLQkJCXRoaXMuaGVhZGVyID0gKEVsZW1lbnQpIGhlYWRlci5jbG9uZU5vZGUoZmFsc2UpOwotCi0JCXhtbCA9IG51bGw7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuSVNPQVBNZXNzYWdlI2dldEhlYWRlcihib29sZWFuKQotCSAqLwotCXB1YmxpYyBFbGVtZW50IGdldEhlYWRlcihib29sZWFuIGRlZXApIHsKLQkJaWYgKCFkZWVwKQotCQkJcmV0dXJuIGhlYWRlcjsKLQkJCi0JCXN5bmNocm9uaXplZCAodGhpcykgewotCQkJaWYgKGhlYWRlciA9PSBudWxsKQotCQkJCXJldHVybiBudWxsOwotCQkJCi0JCQlFbGVtZW50IGNsb25lZEhlYWRlciA9IChFbGVtZW50KSBoZWFkZXIuY2xvbmVOb2RlKGZhbHNlKTsKLQkJCWFwcGVuZENoaWxkcmVuKGNsb25lZEhlYWRlciwgaGVhZGVyQ29udGVudCk7CQkJCQotCQkJcmV0dXJuIGNsb25lZEhlYWRlcjsKLQkJfQkJCQkKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2Ujc2V0SGVhZGVyQ29udGVudChvcmcudzNjLmRvbS5FbGVtZW50W10pCi0JICovCi0JcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNldEhlYWRlckNvbnRlbnQoRWxlbWVudFtdIGhlYWRlckNvbnRlbnQpIHsKLQkJdGhpcy5oZWFkZXJDb250ZW50ID0gaGVhZGVyQ29udGVudDsKLQkJeG1sID0gbnVsbDsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UjZ2V0SGVhZGVyQ29udGVudCgpCi0JICovCi0JcHVibGljIEVsZW1lbnRbXSBnZXRIZWFkZXJDb250ZW50KCkgewotCQlyZXR1cm4gaGVhZGVyQ29udGVudDsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2Ujc2V0Qm9keShvcmcudzNjLmRvbS5FbGVtZW50KQotCSAqLwotCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXRCb2R5KEVsZW1lbnQgYm9keSkgewkJCi0JCWlmIChib2R5ID09IG51bGwpCi0JCQl0aGlzLmJvZHkgPSBudWxsOwotCQllbHNlIHsKLQkJCXRoaXMuYm9keSA9IChFbGVtZW50KSBib2R5LmNsb25lTm9kZShmYWxzZSk7Ci0JCQkKLQkJCWlmICghY29udGV4dC5pc0RvY3VtZW50U3R5bGUoKSAmJiBmYXVsdCA9PSBudWxsKSB7Ci0JCQkJTm9kZUxpc3QgY2hpbGRFbGVtZW50cyA9IGJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKLQkJCQlpZiAoY2hpbGRFbGVtZW50cy5nZXRMZW5ndGgoKSA+IDApCi0JCQkJCXRoaXMuYm9keS5hcHBlbmRDaGlsZChjaGlsZEVsZW1lbnRzLml0ZW0oMCkuY2xvbmVOb2RlKGZhbHNlKSk7Ci0JCQl9Ci0JCX0JCQotCQl4bWwgPSBudWxsOwotCX0KLQkJCQkJCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UjZ2V0Qm9keShib29sZWFuKQotCSAqLwotCXB1YmxpYyBFbGVtZW50IGdldEJvZHkoYm9vbGVhbiBkZWVwKSB7Ci0JCWlmICghZGVlcCkKLQkJCXJldHVybiBib2R5OwotCQkKLQkJc3luY2hyb25pemVkICh0aGlzKSB7Ci0JCQlpZiAoYm9keSA9PSBudWxsKQotCQkJCXJldHVybiBudWxsOwotCQkKLQkJCS8vIGNvcHkgdGhlIHJwYyB3cmFwcGVyIGVsZW1lbnQgYXMgd2VsbCwgaWYgYW55Ci0JCQlFbGVtZW50IGNsb25lZEJvZHkgPSAoRWxlbWVudCkgYm9keS5jbG9uZU5vZGUodHJ1ZSk7CQkKLQkJCQotCQkJaWYgKGZhdWx0ICE9IG51bGwpCi0JCQkJYXBwZW5kTm9kZShjbG9uZWRCb2R5LCBmYXVsdCk7Ci0JCQllbHNlIHsKLQkJCQlFbGVtZW50IHRhcmdldCA9IGNsb25lZEJvZHk7Ci0JCQkJCi0JCQkJLy8gY2hlY2sgZm9yIHJwYyB3cmFwcGVyCi0JCQkJaWYgKGNsb25lZEJvZHkuZ2V0Rmlyc3RDaGlsZCgpICE9IG51bGwpCi0JCQkJCXRhcmdldCA9IChFbGVtZW50KSBjbG9uZWRCb2R5LmdldEZpcnN0Q2hpbGQoKTsKLQkJCQkKLQkJCQlhcHBlbmRDaGlsZHJlbih0YXJnZXQsIGJvZHlDb250ZW50KTsKLQkJCX0KLQkJCQkKLQkJCXJldHVybiBjbG9uZWRCb2R5OwkJCi0JCX0KLQl9Ci0JCQkJCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2Ujc2V0Qm9keUNvbnRlbnQob3JnLnczYy5kb20uRWxlbWVudFtdKQotCSAqLwotCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXRCb2R5Q29udGVudChFbGVtZW50W10gYm9keUNvbnRlbnQpIHsKLQkJdGhpcy5ib2R5Q29udGVudCA9IGJvZHlDb250ZW50OwotCQlpZiAoYm9keUNvbnRlbnQgIT0gbnVsbCkKLQkJCWZhdWx0ID0gbnVsbDsKLQkJeG1sID0gbnVsbDsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UjZ2V0Qm9keUNvbnRlbnQoKQotCSAqLwotCXB1YmxpYyBFbGVtZW50W10gZ2V0Qm9keUNvbnRlbnQoKSB7Ci0JCXJldHVybiBib2R5Q29udGVudDsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2Ujc2V0RmF1bHQob3JnLnczYy5kb20uRWxlbWVudCkKLQkgKi8KLQlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0RmF1bHQoRWxlbWVudCBmYXVsdCkgewotCQl0aGlzLmZhdWx0ID0gZmF1bHQ7Ci0JCWlmIChmYXVsdCAhPSBudWxsKSB7Ci0JCQlpZiAoYm9keSAhPSBudWxsICYmIGJvZHkuZ2V0Rmlyc3RDaGlsZCgpICE9IG51bGwpCi0JCQkJYm9keS5yZW1vdmVDaGlsZChib2R5LmdldEZpcnN0Q2hpbGQoKSk7Ci0JCQlib2R5Q29udGVudCA9IG51bGw7Ci0JCX0KLQkJeG1sID0gbnVsbDsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydC5JU09BUE1lc3NhZ2UjZ2V0RmF1bHQoKQotCSAqLwotCXB1YmxpYyBFbGVtZW50IGdldEZhdWx0KCkgewotCQlyZXR1cm4gZmF1bHQ7Ci0JfQotCQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LklTT0FQTWVzc2FnZSN0b1hNTCgpCi0JICovCi0JcHVibGljIHN5bmNocm9uaXplZCBTdHJpbmcgdG9YTUwoKSB0aHJvd3MgVHJhbnNwb3J0RXhjZXB0aW9uIHsKLQkJaWYgKHhtbCA9PSBudWxsKQotCQkJeG1sID0gc2VyaWFsaXplci5zZXJpYWxpemUoRU5WRUxPUEUsIHRoaXMpOwotCQlyZXR1cm4geG1sOwkJCi0JfQkJCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4cGxvcmVyL3RyYW5zcG9ydC9UcmFuc3BvcnRFeGNlcHRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvdHJhbnNwb3J0L1RyYW5zcG9ydEV4Y2VwdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyY2FjMmZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXhwbG9yZXIvdHJhbnNwb3J0L1RyYW5zcG9ydEV4Y2VwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNDEzICAgMTc2NDkzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0U6IE1ha2UgbWVzc2FnZS90cmFuc3BvcnQgc3RhY2sgcGx1Z2dhYmxlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnRyYW5zcG9ydDsKLQotLyoqCi0gKiBBbiBnZW5lcmFsIHB1cnBvc2UgZXhjZXB0aW9uIHRvIGluZGljYXRlIGEgcHJvYmxlbSBoYXMgb2NjdXJyZWQgd2hlbgotICogaW52b2tpbmcgYSB3ZWIgc2VydmljZS4KLSAqLwotcHVibGljIGNsYXNzIFRyYW5zcG9ydEV4Y2VwdGlvbiBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24gewotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTE1MDIyNDcyMzA3MjYwMjE0MDNMOwotCi0JLyoqCi0JICogQ29uc3RydWN0b3IuCi0JICogCi0JICogQHBhcmFtIG1lc3NhZ2UgQSBtZXNzYWdlIGFib3V0IHRoZSBwcm9ibGVtIHRoYXQgb2NjdXJyZWQuCi0JICovCi0JcHVibGljIFRyYW5zcG9ydEV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkgewotCQlzdXBlcihtZXNzYWdlKTsKLQl9Ci0JCi0JLyoqCi0JICogQ29uc3RydWN0b3IgdGhhdCBhY2NlcHRzIGEgbWVzc2FnZSBhbmQgYSBjYXVzZS4KLQkgKiAKLQkgKiBAcGFyYW0gbWVzc2FnZSBBIG1lc3NhZ2UgYWJvdXQgdGhlIHByb2JsZW0gdGhhdCBvY2N1cnJlZC4KLQkgKiBAcGFyYW0gY2F1c2UgVGhlIGNhdXNlIGZvciB0aGlzIGV4Y2VwdGlvbi4KLQkgKi8KLQlwdWJsaWMgVHJhbnNwb3J0RXhjZXB0aW9uKFN0cmluZyBtZXNzYWdlLCBUaHJvd2FibGUgY2F1c2UpIHsKLQkJc3VwZXIobWVzc2FnZSwgY2F1c2UpOwotCX0KLQkKLQkvKioKLQkgKiBDb25zdHJ1Y3RvciB0aGF0IGFjY2VwdHMgYSBjYXVzZS4KLQkgKiAKLQkgKiBAcGFyYW0gY2F1c2UgVGhlIGNhdXNlIGZvciB0aGlzIGV4Y2VwdGlvbi4KLQkgKi8KLQlwdWJsaWMgVHJhbnNwb3J0RXhjZXB0aW9uKFRocm93YWJsZSBjYXVzZSkgewotCQlzdXBlcihjYXVzZSk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci1wcm9wZXJ0aWVzL2V4cGxvcmVyLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyLXByb3BlcnRpZXMvZXhwbG9yZXIucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ5MmM2Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyLXByb3BlcnRpZXMvZXhwbG9yZXIucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE4OCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLVRJVExFX1dTRVhQTE9SRVI9V2ViIFNlcnZpY2VzIEV4cGxvcmVyCi0KLSMgVHJlZSBOb2RlcwotQUxUX09QRU49T3BlbgotQUxUX0NMT1NFPUNsb3NlCi0KLSMgUGVyc3BlY3RpdmUgVG9vbGJhcgotQUxUX0JBQ0s9QmFjawotQUxUX0ZPUldBUkQ9Rm9yd2FyZAotQUxUX0FDVElPTl9FTkdJTkU9QWN0aW9uIFJlY29yZGVyCi1BTFRfVURESV9QRVJTUEVDVElWRT1VRERJIFBhZ2UKLUFMVF9XU0lMX1BFUlNQRUNUSVZFPVdTSUwgUGFnZQotQUxUX1dTRExfUEVSU1BFQ1RJVkU9V1NETCBQYWdlCi1BTFRfRkFWT1JJVEVTX1BFUlNQRUNUSVZFPUZhdm9yaXRlcwotCi0jIFRvb2xiYXJzCi1BTFRfRE9VQkxFX0NMSUNLX1RPX01BWElNSVpFPURvdWJsZSBDbGljayB0byBNYXhpbWl6ZQotQUxUX0RPVUJMRV9DTElDS19UT19SRVNUT1JFPURvdWJsZSBDbGljayB0byBSZXN0b3JlCi0KLSMgU2V0RGVmYXVsdFZpZXdUb29sCi1BTFRfQkFDS19UT19UT1A9QmFjayB0byB0b3AKLQotIyBDb21tb24gQWN0aW9ucwotQUxUX1JFRlJFU0g9UmVmcmVzaAotQUxUX0NMRUFSPUNsZWFyCi1BTFRfUkVTVUxUUz1SZXN1bHRzCi0KLSMgQ29tbW9uIExhYmVscwotQUxUX05BVklHQVRPUj1OYXZpZ2F0b3IKLUFMVF9BQ1RJT05TPUFjdGlvbnMKLUFMVF9TVEFUVVM9U3RhdHVzCi1BTFRfT1RIRVJfQUNUSU9OUz1PdGhlciBBY3Rpb25zCi1GT1JNX0JVVFRPTl9HTz0mbmJzcDsmbmJzcDtHbyZuYnNwOyZuYnNwOwotRk9STV9CVVRUT05fUkVTRVQ9UmVzZXQKLUZPUk1fQlVUVE9OX0NBTkNFTD1DYW5jZWwKLUZPUk1fTEFCRUxfQUNUSU9OUz1BY3Rpb25zCi1GT1JNX0xBQkVMX0FDVElPTlNfTk9ORT1Ob25lCi0KLSMgUGxhY2Vob2xkZXIgZm9yIGJsYW5rIHRhYmxlIGVudHJpZXMKLVRBQkxFX0JMQU5LX1BMQUNFSE9MREVSPS0tCi0KLSMgQ29tbW9uIEZvcm0gQ29udHJvbCBUaXRsZXMKLUZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWD1TZWxlY3QgYWxsCi1GT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1JPV19DSEVDS19CT1g9U2VsZWN0IHJvdwotCi0jIENvbW1vbiBNZXNzYWdlcwotTVNHX0VSUk9SX1VORVhQRUNURUQ9SVdBQjAxMzVFIEFuIHVuZXhwZWN0ZWQgZXJyb3IgaGFzIG9jY3VycmVkLgotTVNHX0VSUk9SX05PX0FDVElPTl9TRUxFQ1RFRD1JV0FCMDEyNEUgU2VsZWN0IGFuIGFjdGlvbi4KLU1TR19FUlJPUl9OT19OT0RFX1NFTEVDVEVEPUlXQUIwMTI1RSBTZWxlY3QgYSBub2RlLgotTVNHX1NVQk1JVF9JTl9QUk9HUkVTUz1QbGVhc2Ugd2FpdC4gVGhlIG9wZXJhdGlvbiBpcyBzdGlsbCBpbiBwcm9ncmVzcy4KLU1TR19MT0FEX0lOX1BST0dSRVNTPVBsZWFzZSB3YWl0IHdoaWxlIHRoZSBmb3JtIGxvYWRzLi4uCi0KLSNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uCi1BTFRfTEFVTkNIX1dFQl9TRVJWSUNFX1dJWkFSRD1MYXVuY2ggV2ViIFNlcnZpY2UgV2l6YXJkCi1GT1JNX0xBQkVMX0NIT09TRV9XSVpBUkQ9U2VsZWN0IGEgd2l6YXJkIHRvIGxhdW5jaDoKLUZPUk1fUkFESU9fV0VCX1NFUlZJQ0VfQ0xJRU5UX1dJWkFSRD1XZWIgU2VydmljZSBDbGllbnQKLUZPUk1fUkFESU9fV0VCX1NFUlZJQ0VfU0tFTEVUT05fV0laQVJEPVdlYiBTZXJ2aWNlIFNrZWxldG9uCi1NU0dfRVJST1JfV0laQVJEX0FMUkVBRFlfUlVOTklORz1JV0FCMDEyNkUgQSBXZWIgc2VydmljZSB3aXphcmQgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4gIEZpbmlzaCB3aXRoIHRoZSBleGlzdGluZyB3aXphcmQgYmVmb3JlIGxhdW5jaGluZyBhIG5ldyBvbmUuCi1NU0dfRVJST1JfV1NETF9VUkxfSVNfVU5SRUFDSEFCTEU9SVdBQjAxMjdFIFRoZSBXU0RMIGRvY3VtZW50IGlzIHVucmVhY2hhYmxlLgotCi0jIEltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbgotQUxUX1dTSUxfSU1QT1JUX1RPX0ZTPUltcG9ydCBXU0lMIFRvIEZpbGUgU3lzdGVtCi1BTFRfV1NETF9JTVBPUlRfVE9fRlM9SW1wb3J0IFdTREwgVG8gRmlsZSBTeXN0ZW0KLU1TR19FUlJPUl9SRVRSSUVWSU5HX1dTRExfRE9DPUlXQUIwMTI4RSBVbmFibGUgdG8gcmV0cmlldmUgV1NETCBkb2N1bWVudC4KLU1TR19FUlJPUl9SRVRSSUVWSU5HX1dTSUxfRE9DPUlXQUIwMTI5RSBVbmFibGUgdG8gcmV0cmlldmUgV1NJTCBkb2N1bWVudC4KLU1TR19JTVBPUlRfV1NETF9TVUNDRVNTRlVMPVdTREwgZG9jdW1lbnQgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkLgotTVNHX0lNUE9SVF9XU0lMX1NVQ0NFU1NGVUw9V1NJTCBkb2N1bWVudCBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQuCi0KLSMgSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24KLUFMVF9JTVBPUlRfV1NETF9UT19XT1JLQkVOQ0g9SW1wb3J0IFdTREwgVG8gd29ya2JlbmNoCi1GT1JNX0xBQkVMX0lNUE9SVF9UT19XT1JLQkVOQ0hfREVTQz1TZWxlY3QgYSB3b3JrYmVuY2ggcHJvamVjdCB0byBzYXZlIHRoZSBXU0RMIGZpbGUgaW50by4gWW91IG1heSBhbHNvIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlLgotV0VCX1BST0pFQ1RfTkFNRT1XZWIgcHJvamVjdDoKLVdPUktCRU5DSF9QUk9KRUNUX05BTUU9V29ya2JlbmNoIHByb2plY3Q6Ci1MQUJFTF9JTVBPUlRfV1NETD1JbXBvcnQgV1NETCBkb2N1bWVudAotTEFCRUxfSU1QT1JUX1RPX1dTSUw9SW1wb3J0IGFzIGEgc2VydmljZSByZWZlcmVuY2UgdG8gYSBXU0lMIGRvY3VtZW50Ci1JTVBPUlRFRF9XU0RMX0ZJTEVfTkFNRT1XU0RMIGZpbGUgbmFtZToKLVdTSUxfRklMRV9OQU1FPVdTSUwgZmlsZSBuYW1lOgotTVNHX0VSUk9SX0ZJTEVfT1ZFUldSSVRFX0RJU0FCTEVEPUNhbm5vdCBjcmVhdGUgdGhlIGZpbGUgIiUyIiByZWxhdGl2ZSB0byB0aGUgcGF0aCAiJTEiIGJlY2F1c2UgYXV0b21hdGljIGZpbGUgb3ZlcndyaXRpbmcgaGFzIG5vdCBiZWVuIGVuYWJsZWQuIERvIHlvdSB3YW50IHRvIGVuYWJsZSBpdCBmb3IgdGhpcyBmaWxlPwotTVNHX0VSUk9SX0lOVkFMSURfV09SS0JFTkNIX1BST0pFQ1Q9SVdBQjAxMzBFIFNlbGVjdCBhIHdvcmtiZW5jaCBwcm9qZWN0LgotTVNHX0VSUk9SX0lOVkFMSURfV1NETF9GSUxFX05BTUU9SVdBQjAxMzFFIEludmFsaWQgZmlsZSBuYW1lLgotTVNHX0VSUk9SX0lOVkFMSURfV1NJTF9GSUxFX05BTUU9SVdBQjA0NzBFIEludmFsaWQgV1NJTCBmaWxlIG5hbWUuCi1NU0dfRVJST1JfTk9fSU1QT1JUX09QVElPTl9TRUxFQ1RFRD1JV0FCMDQ3MUUgTm8gaW1wb3J0IG9wdGlvbiBpcyBzZWxlY3RlZC4gIFBsZWFzZSBjaG9vc2UgYXQgbGVhc3Qgb25lIGltcG9ydCBvcHRpb24uCi1NU0dfRVJST1JfV1JJVElOR19URU1QX0ZJTEVfVE9fRlM9SVdBQjAxMzJFIFVuYWJsZSB0byB3cml0ZSB0ZW1wb3JhcnkgZmlsZS4KLU1TR19JTkZPX0lNUE9SVF9UT19XT1JLQkVOQ0hfU1VDQ0VTU0ZVTD1JV0FCMDMxNEkgJTEgd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCB0byB0aGUgd29ya2JlbmNoLgotTVNHX0lORk9fSU1QT1JUX1NFUlZJQ0VfUkVGX1RPX1dTSUxfU1VDQ0VTU0ZVTD1JV0FCMDQ3MkkgU2VydmljZSByZWZlcmVuY2Ugd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCB0byAlMS4KLQotIyBDaGVja1dvcmtiZW5jaEZpbGVSZWFkT25seUFjdGlvbgotTVNHX0VSUk9SX0ZJTEVfQ0hFQ0tPVVRfRElTQUJMRUQ9Q2Fubm90IGNyZWF0ZSB0aGUgZmlsZSAiJTIiIHJlbGF0aXZlIHRvIHRoZSBwYXRoICIlMSIgYmVjYXVzZSBhdXRvbWF0aWMgZmlsZSBjaGVjayBvdXQgaGFzIG5vdCBiZWVuIGVuYWJsZWQuIERvIHlvdSB3YW50IHRvIGVuYWJsZSBpdCBmb3IgdGhpcyBmaWxlPwotCi0jIENsZWFyTm9kZUFjdGlvbgotTVNHX0lORk9fTk9ERV9DTEVBUkVEPUlXQUIwMTMzSSAlMSBjbGVhcmVkLgotCi0jIFRhYmxlIHR3aXN0ZWVzCi1BTFRfVFdJU1RfT1BFTkVEPUhpZGUKLUFMVF9UV0lTVF9DTE9TRUQ9RXhwYW5kCi0KLSMgV1NETCBCcm93c2VyCi1GT1JNX0xJTktfQlJPV1NFPUJyb3dzZS4uLgotVElUTEVfV1NETF9CUk9XU0VSPVdTREwgQnJvd3NlciAtICUxCi1GT1JNX0xBQkVMX1dTRExfU09VUkNFPVNlbGVjdCBhIFdTREwgc291cmNlOgotRk9STV9MQUJFTF9XU0RMX0NBVEVHT1JZPUNhdGVnb3J5Ci1GT1JNX0xBQkVMX1dTRExfQWxsPUFsbAotRk9STV9MQUJFTF9XU0RMX1NPVVJDRV9XRUJQUk9KRUNUUz1Xb3Jrc3BhY2UgUHJvamVjdHMKLUZPUk1fTEFCRUxfV1NETF9TT1VSQ0VfRkFWT1JJVEVTPUZhdm9yaXRlcwotRk9STV9MQUJFTF9XRUJfUFJPSkVDVD1Xb3Jrc3BhY2UgUHJvamVjdAotRk9STV9MQUJFTF9XU0RMX1VSTD1XU0RMIFVSTAotRk9STV9CVVRUT05fUkVGUkVTSD1SZWZyZXNoCi1BTFRfV1NETF9CUk9XU0VSPVdTREwgQnJvd3NlcgotV1NETF9UWVBFX1NFUlZJQ0VfSU5URVJGQUNFUz1TZXJ2aWNlIEludGVyZmFjZXMKLVdTRExfVFlQRV9TRVJWSUNFUz1TZXJ2aWNlcwotCi0jIENhbGVuZGFyIEJyb3dzZXIKLVRJVExFX0NBTEVOREFSX0JST1dTRVI9Q2FsZW5kYXIgQnJvd3NlcgotIyAyIGNoYXJhY3RlciBhYmJyZXZpYXRpb25zIGZvciBkYXlzIG9mIHRoZSB3ZWVrLgotRk9STV9MQUJFTF9TSF9TVU5EQVk9U3UKLUZPUk1fTEFCRUxfU0hfTU9OREFZPU1vCi1GT1JNX0xBQkVMX1NIX1RVRVNEQVk9VHUKLUZPUk1fTEFCRUxfU0hfV0VETkVTREFZPVdlCi1GT1JNX0xBQkVMX1NIX1RIVVJTREFZPVRoCi1GT1JNX0xBQkVMX1NIX0ZSSURBWT1GcgotRk9STV9MQUJFTF9TSF9TQVRVUkRBWT1TYQotIyBNb250aHMgb2YgdGhlIHllYXIKLUZPUk1fTEFCRUxfTU9OVEg9TW9udGg6Ci1GT1JNX0xBQkVMX0pBTlVBUlk9SmFudWFyeQotRk9STV9MQUJFTF9GRUJSVUFSWT1GZWJydWFyeQotRk9STV9MQUJFTF9NQVJDSD1NYXJjaAotRk9STV9MQUJFTF9BUFJJTD1BcHJpbAotRk9STV9MQUJFTF9NQVk9TWF5Ci1GT1JNX0xBQkVMX0pVTkU9SnVuZQotRk9STV9MQUJFTF9KVUxZPUp1bHkKLUZPUk1fTEFCRUxfQVVHVVNUPUF1Z3VzdAotRk9STV9MQUJFTF9TRVBURU1CRVI9U2VwdGVtYmVyCi1GT1JNX0xBQkVMX09DVE9CRVI9T2N0b2JlcgotRk9STV9MQUJFTF9OT1ZFTUJFUj1Ob3ZlbWJlcgotRk9STV9MQUJFTF9ERUNFTUJFUj1EZWNlbWJlcgotRk9STV9MQUJFTF9ZRUFSPVllYXI6Ci1GT1JNX0xBQkVMX1RJTUU9VGltZToKLUZPUk1fTElOS19UT0RBWT1Ub2RheQotRk9STV9MSU5LX1BSRVZJT1VTX1lFQVI9PDwKLUZPUk1fTElOS19QUkVWSU9VU19NT05USD08Ci1GT1JNX0xJTktfTkVYVF9NT05USD0+Ci1GT1JNX0xJTktfTkVYVF9ZRUFSPT4+Ci1BTFRfUFJFVklPVVNfWUVBUj1QcmV2aW91cyBZZWFyCi1BTFRfUFJFVklPVVNfTU9OVEg9UHJldmlvdXMgTW9udGgKLUFMVF9ORVhUX01PTlRIPU5leHQgTW9udGgKLUFMVF9ORVhUX1lFQVI9TmV4dCBZZWFyCi1BTFRfVE9EQVk9VG9kYXkKLUFMVF9DQUxFTkRBUl9CUk9XU0VSPUNhbGVuZGFyIEJyb3dzZXIKLU1TR19FUlJPUl9JTlZBTElEX1RJTUVfRk9STUFUPUlXQUIwMzY4RSBUaW1lIHdhcyBub3QgZm9ybWF0dGVkIGFzIEhIOk1NOlNTWy5TU1NdLiBEbyB5b3Ugd2lzaCB0byB1c2UgdGhlIGN1cnJlbnQgdGltZSBpbnN0ZWFkPwotCi0jIEFjdGlvbiBlbmdpbmUKLVRJVExFX0FDVElPTl9SRUNPUkRFUj1BY3Rpb24gUmVjb3JkZXIKLUZPUk1fTEFCRUxfTU9ERT1Nb2RlOgotRk9STV9MQUJFTF9NT0RFX1BMQVk9UGxheQotRk9STV9MQUJFTF9NT0RFX1NUT1A9U3RvcAotRk9STV9MQUJFTF9NT0RFX1JFQ09SRD1SZWNvcmQKLUZPUk1fTEFCRUxfU0FWRT1TYXZlCi1GT1JNX0xBQkVMX1BMQVlfRklMRT1QbGF5IGZpbGU6Ci1NU0dfRVJST1JfSU5WQUxJRF9QTEFZX0ZJTEU9SVdBQjAzNjJFIEVudGVyIGEgcGxheSBmaWxlLgotCi0jIEZyYW1lIHRpdGxlcwotRlJBTUVfVElUTEVfUEVSU1BFQ1RJVkVfV09SS0FSRUE9V2ViIFNlcnZpY2VzIEV4cGxvcmVyIEludGVybmFsIFdvcmsgQXJlYQotRlJBTUVfVElUTEVfUEVSU1BFQ1RJVkVfVE9PTEJBUj1XZWIgU2VydmljZXMgRXhwbG9yZXIgVG9vbGJhcgotRlJBTUVfVElUTEVfUEVSU1BFQ1RJVkVfQ09OVEVOVD1XZWIgU2VydmljZXMgRXhwbG9yZXIgUGFnZSBDb250ZW50Ci1GUkFNRV9USVRMRV9XU0RMX1RPT0xCQVI9V1NETCBCcm93c2VyIFRvb2xiYXIKLUZSQU1FX1RJVExFX1dTRExfQ09OVEVOVD1XU0RMIEJyb3dzZXIgQ29udGVudAotCi0jIEZvcm0gdGl0bGVzCi1GT1JNX1RJVExFX1BBR0VfTE9BREVSPVBhZ2UgTG9hZGVyCi1GT1JNX1RJVExFX1BBR0VfQ09OVEVOVD1Mb2FkZWQgUGFnZSBDb250ZW50Ci1GT1JNX1RJVExFX0xBVU5DSF9XRUJTRVJWSUNFX1dJWkFSRD1MYXVuY2ggV2ViIFNlcnZpY2UgV2l6YXJkIEZvcm0KLUZPUk1fVElUTEVfSU1QT1JUX1RPX1dPUktCRU5DSD1JbXBvcnQgdG8gV29ya2JlbmNoIEZvcm0KLQotIyBTZXNzaW9uVGltZWRPdXQgbWVzc2FnZQotTVNHX0VSUk9SX1NFU1NJT05fVElNRURfT1VUPVRoaXMgc2Vzc2lvbiBvZiBXZWIgU2VydmljZSBFeHBsb3JlciBoYXMgdGltZWQgb3V0IGFmdGVyIDMwIG1pbnV0ZXMgb2YgaW5hY3Rpdml0eSB0byBmcmVlIHVwIG1lbW9yeSByZXNvdXJjZXMuCi1NU0dfRVJST1JfUkVTVEFSVF9TRVNTSU9OPVJlbGF1bmNoIHRoZSBXZWIgU2VydmljZSBFeHBsb3JlciB0byB0ZXN0IHlvdXIgV2ViIHNlcnZpY2UuCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXItcHJvcGVydGllcy9mYXZvcml0ZXMucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXItcHJvcGVydGllcy9mYXZvcml0ZXMucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM5ODhmNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyLXByb3BlcnRpZXMvZmF2b3JpdGVzLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi10aXRsZT1GYXZvcml0ZXMKLQotIyBOYXZpZ2F0b3IKLUZBVk9SSVRFU19NQUlOX05PREU9RmF2b3JpdGVzIE1haW4KLUZBVk9SSVRFU19XU0lMX0ZPTERFUl9OT0RFPUZhdm9yaXRlIFdTSUxzCi1GQVZPUklURVNfV1NETF9TRVJWSUNFX0ZPTERFUl9OT0RFPUZhdm9yaXRlIFdTREwgU2VydmljZXMKLUZBVk9SSVRFU19VRERJX1NFUlZJQ0VfRk9MREVSX05PREU9RmF2b3JpdGUgVURESSBTZXJ2aWNlcwotRkFWT1JJVEVTX1VERElfQlVTSU5FU1NFU19GT0xERVJfTk9ERT1GYXZvcml0ZSBVRERJIEJ1c2luZXNzZXMKLUZBVk9SSVRFU19VRERJX1NFUlZJQ0VfSU5URVJGQUNFU19GT0xERVJfTk9ERT1GYXZvcml0ZSBVRERJIFNlcnZpY2UgSW50ZXJmYWNlcwotRkFWT1JJVEVTX1VERElfUkVHSVNUUklFU19GT0xERVJfTk9ERT1GYXZvcml0ZSBVRERJIFJlZ2lzdHJpZXMKLUZBVk9SSVRFU19VU0VSX0RFRl9VRERJX1JFR0lTVFJJRVNfRk9MREVSX05PREU9RmF2b3JpdGUgVXNlciBEZWZpbmVkIFVEREkgUmVnaXN0cmllcwotCi0jIEZvcm0KLUZPUk1fTEFCRUxfRkFWT1JJVEVfV1NJTD1GYXZvcml0ZSBXU0lMcwotRk9STV9MQUJFTF9GQVZPUklURV9XU0RMPUZhdm9yaXRlIFdTRExzCi1GT1JNX0xBQkVMX0ZBVk9SSVRFX1VERElfUkVHSVNUUlk9RmF2b3JpdGUgVURESSBSZWdpc3RyaWVzCi1GT1JNX0xBQkVMX0ZBVk9SSVRFX1VTRVJfREVGX1VERElfUkVHSVNUUlk9RmF2b3JpdGUgVXNlciBEZWZpbmVkIFVEREkgUmVnaXN0cmllcwotRk9STV9MQUJFTF9GQVZPUklURV9VRERJX1NFUlZJQ0U9RmF2b3JpdGUgVURESSBTZXJ2aWNlcwotRk9STV9MQUJFTF9GQVZPUklURV9VRERJX0JVU0lORVNTPUZhdm9yaXRlIFVEREkgQnVzaW5lc3MgRW50aXRpZXMKLUZPUk1fTEFCRUxfRkFWT1JJVEVfVURESV9TRVJWSUNFX0lOVEVSRkFDRT1GYXZvcml0ZSBVRERJIFNlcnZpY2UgSW50ZXJmYWNlcwotRk9STV9MQUJFTF9SRU1PVkU9UmVtb3ZlCi1GT1JNX0xBQkVMX0lNUE9SVF9UT19XU0lMX1BFUlNQRUNUSVZFPUFkZCBUbyBXU0lMIFBhZ2UKLUZPUk1fTEFCRUxfSU1QT1JUX1RPX1VERElfUEVSU1BFQ1RJVkU9QWRkIFRvIFVEREkgUGFnZQotRk9STV9MQUJFTF9JTVBPUlRfVE9fV1NETF9QRVJTUEVDVElWRT1BZGQgVG8gV1NETCBQYWdlCi1GT1JNX0xBQkVMX1VSTD1VUkwKLUZPUk1fTEFCRUxfSVRFTV9OVU1CRVI9SXRlbSAjCi1GT1JNX0xBQkVMX1VERElfVkVSU0lPTj1VRERJIFZlcnNpb24KLUZPUk1fTEFCRUxfTkFNRT1OYW1lCi1GT1JNX0xBQkVMX0RFU0M9RGVzY3JpcHRpb24KLUZPUk1fTEFCRUxfREVGQVVMVF9MT0dJTj1EZWZhdWx0IExvZ2luCi1GT1JNX0xBQkVMX0RFRkFVTFRfUEFTU1dPUkQ9RGVmYXVsdCBQYXNzd29yZAotRk9STV9MQUJFTF9JTlFVSVJZX1VSTD1JbnF1aXJ5IFVSTAotRk9STV9MQUJFTF9QVUJMSVNIX1VSTD1QdWJsaXNoIFVSTAotRk9STV9MQUJFTF9TRUNVUkVfSU5RVUlSWV9VUkw9U2VjdXJlIElucXVpcnkgVVJMCi1GT1JNX0xBQkVMX1NFQ1VSRV9QVUJMSVNIX1VSTD1TZWN1cmUgUHVibGlzaCBVUkwKLUZPUk1fTEFCRUxfVEFYT05PTVk9VGF4b25vbXkKLUZPUk1fTEFCRUxfTEFOR1VBR0U9TGFuZ3VhZ2UKLUZPUk1fTEFCRUxfUkVHSVNUUllfTkFNRT1SZWdpc3RyeSBOYW1lCi1GT1JNX0xBQkVMX0JVU0lORVNTX05BTUU9QnVzaW5lc3MgTmFtZQotRk9STV9MQUJFTF9CVVNJTkVTU19LRVk9QnVzaW5lc3MgS2V5Ci1GT1JNX0xBQkVMX1NFUlZJQ0VfTkFNRT1TZXJ2aWNlIE5hbWUKLUZPUk1fTEFCRUxfU0VSVklDRV9LRVk9U2VydmljZSBLZXkKLUZPUk1fTEFCRUxfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRT1TZXJ2aWNlIEludGVyZmFjZSBOYW1lCi1GT1JNX0xBQkVMX1NFUlZJQ0VfSU5URVJGQUNFX0tFWT1TZXJ2aWNlIEludGVyZmFjZSBLZXkKLUZPUk1fTEFCRUxfUkVHSVNUUllfVVJMPTxhIGhyZWY9IiUxIiB0YXJnZXQ9Il9ibGFuayI+Q2xpY2sgaGVyZTwvYT4gdG8gb2J0YWluIGEgdXNlciBJRCBhbmQgcGFzc3dvcmQgZm9yIHRoaXMgcmVnaXN0cnkuCi1GT1JNX0xBQkVMX1VTRVJfREVGSU5FRF9DQVRFR09SWV9EQVRBX0ZJTEVTPURhdGEgZmlsZXMgZm9yIFVzZXIgRGVmaW5lZCBDYXRlZ29yaWVzCi1NU0dfRVJST1JfTk9USElOR19TRUxFQ1RFRD1JV0FCMDMxNUUgU2VsZWN0IGF0IGxlYXN0IG9uZSBpdGVtLgotCi0jIExpc3RGYXZvcml0ZVdTSUxBY3Rpb24KLUFMVF9MSVNUX0ZBVk9SSVRFX1dTSUw9TGlzdCBGYXZvcml0ZSBXU0lMcwotRk9STV9MQUJFTF9MSVNUX0ZBVk9SSVRFX1dTSUxfREVTQz1TZWxlY3QgYSBzZXQgb2YgZmF2b3JpdGUgV1NJTCBsaW5rcyBhbmQgcHJlc3MgPHN0cm9uZz5BZGQgdG8gV1NJTCBQYWdlPC9zdHJvbmc+IHRvIG9wZW4gdGhlbSBpbiB0aGUgV1NJTCBuYXZpZ2F0b3IuIFByZXNzIDxzdHJvbmc+UmVtb3ZlPC9zdHJvbmc+IHRvIHJlbW92ZSB0aGUgc2VsZWN0aW9ucy4KLQotIyBMaXN0RmF2b3JpdGVXU0RMU2VydmljZUFjdGlvbgotQUxUX0xJU1RfRkFWT1JJVEVfV1NETF9TRVJWSUNFPUxpc3QgRmF2b3JpdGUgV1NETCBTZXJ2aWNlcwotRk9STV9MQUJFTF9MSVNUX0ZBVk9SSVRFX1dTRExfU0VSVklDRV9ERVNDPVNlbGVjdCBhIHNldCBvZiBmYXZvcml0ZSBXU0RMIHNlcnZpY2VzIGFuZCBwcmVzcyA8c3Ryb25nPlJlbW92ZTwvc3Ryb25nPiB0byByZW1vdmUgdGhlbS4KLQotIyBMaXN0RmF2b3JpdGVVRERJU2VydmljZUFjdGlvbgotQUxUX0xJU1RfRkFWT1JJVEVfVURESV9TRVJWSUNFPUxpc3QgRmF2b3JpdGUgVURESSBTZXJ2aWNlcwotRk9STV9MQUJFTF9MSVNUX0ZBVk9SSVRFX1VERElfU0VSVklDRV9ERVNDPVNlbGVjdCBhIHNldCBvZiBmYXZvcml0ZSBVRERJIHNlcnZpY2VzIGFuZCBwcmVzcyA8c3Ryb25nPkFkZCB0byBVRERJIFBhZ2U8L3N0cm9uZz4gdG8gb3BlbiB0aGVtIGluIHRoZSBVRERJIG5hdmlnYXRvci4gUHJlc3MgPHN0cm9uZz5SZW1vdmU8L3N0cm9uZz4gdG8gcmVtb3ZlIHRoZSBzZWxlY3Rpb25zLgotCi0jIExpc3RGYXZvcml0ZVVERElCdXNpbmVzc0FjdGlvbgotQUxUX0xJU1RfRkFWT1JJVEVfVURESV9CVVNJTkVTUz1MaXN0IEZhdm9yaXRlIFVEREkgQnVzaW5lc3NlcwotRk9STV9MQUJFTF9MSVNUX0ZBVk9SSVRFX1VERElfQlVTSU5FU1NfREVTQz1TZWxlY3QgYSBzZXQgb2YgZmF2b3JpdGUgVURESSBidXNpbmVzc2VzIGFuZCBwcmVzcyA8c3Ryb25nPkFkZCB0byBVRERJIFBhZ2U8L3N0cm9uZz4gdG8gb3BlbiB0aGVtIGluIHRoZSBVRERJIG5hdmlnYXRvci4gUHJlc3MgPHN0cm9uZz5SZW1vdmU8L3N0cm9uZz4gdG8gcmVtb3ZlIHRoZSBzZWxlY3Rpb25zLgotCi0jIExpc3RGYXZvcml0ZVVERElSZWdpc3RyeUFjdGlvbgotQUxUX0xJU1RfRkFWT1JJVEVfVURESV9SRUdJU1RSWT1MaXN0IEZhdm9yaXRlIFVEREkgUmVnaXN0cmllcwotRk9STV9MQUJFTF9MSVNUX0ZBVk9SSVRFX1VERElfUkVHSVNUUllfREVTQz1TZWxlY3QgYSBzZXQgb2YgZmF2b3JpdGUgVURESSByZWdpc3RyaWVzIGFuZCBwcmVzcyA8c3Ryb25nPkFkZCB0byBVRERJIFBhZ2U8L3N0cm9uZz4gdG8gb3BlbiB0aGVtIGluIHRoZSBVRERJIG5hdmlnYXRvci4gUHJlc3MgPHN0cm9uZz5SZW1vdmU8L3N0cm9uZz4gdG8gcmVtb3ZlIHRoZSBzZWxlY3Rpb25zLgotCi0jIExpc3RGYXZvcml0ZVVzZXJEZWZVRERJUmVnaXN0cnlBY3Rpb24KLUFMVF9MSVNUX0ZBVk9SSVRFX1VTRVJfREVGX1VERElfUkVHSVNUUlk9TGlzdCBGYXZvcml0ZSBVc2VyIERlZmluZWQgVURESSBSZWdpc3RyaWVzCi1GT1JNX0xBQkVMX0xJU1RfRkFWT1JJVEVfVVNFUl9ERUZfVURESV9SRUdJU1RSWV9ERVNDPVNlbGVjdCBhIHNldCBvZiBmYXZvcml0ZSBVRERJIHJlZ2lzdHJpZXMgYW5kIHByZXNzIDxzdHJvbmc+QWRkIHRvIFVEREkgUGFnZTwvc3Ryb25nPiB0byBvcGVuIHRoZW0gaW4gdGhlIFVEREkgbmF2aWdhdG9yLgotCi0jIExpc3RGYXZvcml0ZVVERElTZXJ2aWNlSW50ZXJmYWNlQWN0aW9uCi1BTFRfTElTVF9GQVZPUklURV9VRERJX1NFUlZJQ0VfSU5URVJGQUNFPUxpc3QgRmF2b3JpdGUgVURESSBTZXJ2aWNlIEludGVyZmFjZXMKLUZPUk1fTEFCRUxfTElTVF9GQVZPUklURV9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0RFU0M9U2VsZWN0IGEgc2V0IG9mIGZhdm9yaXRlIFVEREkgc2VydmljZSBpbnRlcmZhY2VzIGFuZCBwcmVzcyA8c3Ryb25nPkFkZCB0byBVRERJIFBhZ2U8L3N0cm9uZz4gdG8gb3BlbiB0aGVtIGluIHRoZSBVRERJIG5hdmlnYXRvci4gUHJlc3MgPHN0cm9uZz5SZW1vdmU8L3N0cm9uZz4gdG8gcmVtb3ZlIHRoZSBzZWxlY3Rpb25zLgotCi0jIEZhdm9yaXRlc1dTSUxEZXRhaWxzQWN0aW9uCi1BTFRfRkFWT1JJVEVTX1dTSUxfREVUQUlMUz1GYXZvcml0ZSBXU0lMIERldGFpbHMKLQotIyBGYXZvcml0ZXNXU0RMRGV0YWlsc0FjdGlvbgotQUxUX0ZBVk9SSVRFU19XU0RMX0RFVEFJTFM9RmF2b3JpdGUgV1NETCBEZXRhaWxzCi0KLSMgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RGV0YWlsc0FjdGlvbgotQUxUX0ZBVk9SSVRFU19VRERJX1JFR0lTVFJZX0RFVEFJTFM9RmF2b3JpdGUgVURESSBSZWdpc3RyeSBEZXRhaWxzCi0KLSMgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeURldGFpbHNBY3Rpb24KLUFMVF9GQVZPUklURVNfVVNFUl9ERUZfVURESV9SRUdJU1RSWV9ERVRBSUxTPUZhdm9yaXRlIFVzZXIgRGVmaW5lZCBVRERJIFJlZ2lzdHJ5IERldGFpbHMKLQotIyBGYXZvcml0ZXNVRERJQnVzaW5lc3NEZXRhaWxzQWN0aW9uCi1BTFRfRkFWT1JJVEVTX1VERElfQlVTSU5FU1NfREVUQUlMUz1GYXZvcml0ZSBVRERJIEJ1c2luZXNzIERldGFpbHMKLQotIyBGYXZvcml0ZXNVRERJU2VydmljZURldGFpbHNBY3Rpb24KLUFMVF9GQVZPUklURVNfVURESV9TRVJWSUNFX0RFVEFJTFM9RmF2b3JpdGUgVURESSBTZXJ2aWNlIERldGFpbHMKLQotIyBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZURldGFpbHNBY3Rpb24KLUFMVF9GQVZPUklURVNfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9ERVRBSUxTPUZhdm9yaXRlIFVEREkgU2VydmljZSBJbnRlcmZhY2UgRGV0YWlscwotCi0jIEFkZFdTSUxUb1dTSUxQZXJzcGVjdGl2ZUFjdGlvbgotQUxUX0FERF9XU0lMX1RPX1dTSUxfUEVSU1BFQ1RJVkU9QWRkIHRvIFdTSUwgUGFnZQotTVNHX0VSUk9SX1dTSUxfQUxSRUFEWV9PUEVORUQ9SVdBQjAzMTZFICUxIGlzIGFscmVhZHkgb3BlbmVkIGluIFdTSUwgUGFnZS4KLU1TR19JTkZPX0FERF9XU0lMX1RPX1dTSUxfUEVSU1BFQ1RJVkVfU1VDQ0VTU0ZVTD1JV0FCMDMxN0kgJTEgaXMgYWRkZWQgdG8gV1NJTCBQYWdlLgotTVNHX0VSUk9SX0FERF9XU0lMX1RPX1dTSUxfUEVSU1BFQ1RJVkU9SVdBQjAzMThFIFdTSUwgJTEgY291bGQgbm90IGJlIGxvYWRlZC4KLQotIyBBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbgotQUxUX0FERF9UT19VRERJX1BFUlNQRUNUSVZFPUFkZCB0byBVRERJIFBhZ2UKLU1TR19FUlJPUl9BRERfVE9fVURESV9QRVJTUEVDVElWRT1JV0FCMDMyMEUgJTEgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSByZWdpc3RyeS4KLU1TR19JTkZPX0FERF9UT19VRERJX1BFUlNQRUNUSVZFX1NVQ0NFU1NGVUw9SVdBQjAzMjFJICUxIGlzIGFkZGVkIHRvIFVEREkgUGFnZS4KLQotIyBGYXZvcml0ZXNBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbgotQUxUX0FERF9XU0RMX1RPX1dTRExfUEVSU1BFQ1RJVkU9QWRkIHRvIFdTREwgUGFnZQotTVNHX0lORk9fQUREX1dTRExfVE9fV1NETF9QRVJTUEVDVElWRV9TVUNDRVNTRlVMPUlXQUIwMzY5SSAlMSBpcyBhZGRlZCB0byBXU0RMIFBhZ2UuCi1NU0dfRVJST1JfQUREX1dTRExfVE9fV1NETF9QRVJTUEVDVElWRT1JV0FCMDM3MEUgV1NETCAlMSBjb3VsZCBub3QgYmUgbG9hZGVkLgotCi0jIFJlbW92ZUZhdm9yaXRlQWN0aW9uCi1BTFRfUkVNT1ZFX0ZBVk9SSVRFPVJlbW92ZSBGYXZvcml0ZQotTVNHX0NPTkZJUk1fUkVNT1ZFX05PREU9JTEgaXMgbm8gbG9uZ2VyIHJlc29sdmFibGUuICBEbyB5b3Ugd2lzaCB0byBjbGVhciBpdD8KLQotIyBGYXZvcml0ZXNSZXN0b3JlRGVmYXVsdEZhdm9yaXRlc0FjdGlvbgotQUxUX1JFU1RPUkVfREVGQVVMVF9GQVZPUklURVM9UmVzdG9yZSBEZWZhdWx0IEZhdm9yaXRlcwotTVNHX0NPTkZJUk1fUkVTVE9SRV9ERUZBVUxUX0ZBVk9SSVRFUz1UaGlzIG9wZXJhdGlvbiB3aWxsIG92ZXJ3cml0ZSB0aGUgY3VycmVudCBmYXZvcml0ZXMuICBEbyB5b3Ugd2lzaCB0byBjb250aW51ZT8KLU1TR19FUlJPUl9PUEVOX0ZBVk9SSVRFU19CQUNLVVA9SVdBQjAxMzRFIFVuYWJsZSB0byBsb2FkIHRoZSBkZWZhdWx0IGZhdm9yaXRlcy4KLU1TR19JTkZPX0ZBVk9SSVRFU19SRVNUT1JFRF9UT19ERUZBVUxUPUlXQUIwMzIySSBEZWZhdWx0IEZhdm9yaXRlcyBhcmUgcmVzdG9yZWQuCi1NU0dfRVJST1JfU0FWRV9GQVZPUklURVNfV1NJTD1JV0FCMDE4NkUgVW5hYmxlIHRvIHNhdmUgZmF2b3JpdGVzIHRvICUxLgotCi0jIEZyYW1lIHRpdGxlcwotRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRBSU5FUj1OYXZpZ2F0b3IgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9OQVZJR0FUT1JfVE9PTEJBUj1OYXZpZ2F0b3IgVG9vbGJhcgotRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRFTlQ9TmF2aWdhdG9yIENvbnRlbnQKLUZSQU1FX1RJVExFX0FDVElPTlNfQ09OVEFJTkVSPUFjdGlvbnMgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9QUk9QRVJUSUVTX0NPTlRBSU5FUj1Qcm9wZXJ0aWVzIENvbnRhaW5lcgotRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05URU5UPVByb3BlcnRpZXMgQ29udGVudAotRlJBTUVfVElUTEVfUFJPUEVSVElFU19UT09MQkFSPVByb3BlcnRpZXMgVG9vbGJhcgotRlJBTUVfVElUTEVfU1RBVFVTX0NPTlRBSU5FUj1TdGF0dXMgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9TVEFUVVNfQ09OVEVOVD1TdGF0dXMgQ29udGVudAotRlJBTUVfVElUTEVfU1RBVFVTX1RPT0xCQVI9U3RhdHVzIFRvb2xiYXIKLQotIyBGb3JtIHRpdGxlcwotRk9STV9USVRMRV9VRERJX0JVU0lORVNTX0RFVEFJTFM9VURESSBCdXNpbmVzcyBEZXRhaWxzIEZvcm0KLUZPUk1fVElUTEVfVURESV9SRUdJU1RSWV9ERVRBSUxTPVVEREkgUmVnaXN0cnkgRGV0YWlscyBGb3JtCi1GT1JNX1RJVExFX1VTRVJfREVGX1VERElfUkVHSVNUUllfREVUQUlMUz1Vc2VyIERlZmluZWQgVURESSBSZWdpc3RyeSBEZXRhaWxzIEZvcm0KLUZPUk1fVElUTEVfVURESV9TRVJWSUNFX0RFVEFJTFM9VURESSBTZXJ2aWNlIERldGFpbHMgRm9ybQotRk9STV9USVRMRV9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0RFVEFJTFM9VURESSBTZXJ2aWNlIEludGVyZmFjZSBEZXRhaWxzIEZvcm0KLUZPUk1fVElUTEVfV1NETF9ERVRBSUxTPVdTREwgRGV0YWlscyBGb3JtCi1GT1JNX1RJVExFX1dTSUxfREVUQUlMUz1XU0lMIERldGFpbHMgRm9ybQotCi0jIFZpZXcgdGl0bGVzCi1WSUVXX1RJVExFX1VERElfQlVTSU5FU1NfTElTVD1VRERJIEJ1c2luZXNzZXMgTGlzdCBWaWV3Ci1WSUVXX1RJVExFX1VERElfUkVHSVNUUllfTElTVD1VRERJIFJlZ2lzdHJpZXMgTGlzdCBWaWV3Ci1WSUVXX1RJVExFX1VTRVJfREVGX1VERElfUkVHSVNUUllfTElTVD1Vc2VyIERlZmluZWQgVURESSBSZWdpc3RyaWVzIExpc3QgVmlldwotVklFV19USVRMRV9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0xJU1Q9VURESSBTZXJ2aWNlIEludGVyZmFjZXMgTGlzdCBWaWV3Ci1WSUVXX1RJVExFX1VERElfU0VSVklDRV9MSVNUPVVEREkgU2VydmljZXMgTGlzdCBWaWV3Ci1WSUVXX1RJVExFX1dTRExfU0VSVklDRV9MSVNUPVdTREwgU2VydmljZXMgTGlzdCBWaWV3Ci1WSUVXX1RJVExFX1dTSUxfTElTVD1XU0lMIExpbmtzIExpc3QgVmlldwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci1wcm9wZXJ0aWVzL3VkZGkucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXItcHJvcGVydGllcy91ZGRpLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5M2E2MTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci1wcm9wZXJ0aWVzL3VkZGkucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDQ5NiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLXRpdGxlPVVEREkKLQotIyBOb2RlcwotTk9ERV9OQU1FX1VERElfTUFJTj1VRERJIE1haW4KLU5PREVfTkFNRV9RVUVSSUVTX0ZPTERFUj1FeGVjdXRlZCBRdWVyaWVzCi1OT0RFX05BTUVfUFVCTElTSEVEX0JVU0lORVNTRVNfRk9MREVSPVB1Ymxpc2hlZCBCdXNpbmVzc2VzCi1OT0RFX05BTUVfUFVCTElTSEVEX1NFUlZJQ0VTX0ZPTERFUj1QdWJsaXNoZWQgU2VydmljZXMKLU5PREVfTkFNRV9QVUJMSVNIRURfU0VSVklDRV9JTlRFUkZBQ0VTX0ZPTERFUj1QdWJsaXNoZWQgU2VydmljZSBJbnRlcmZhY2VzCi0KLSMgT3BlblJlZ2lzdHJ5QWN0aW9uCi1BTFRfT1BFTl9SRUdJU1RSWT1PcGVuIFJlZ2lzdHJ5Ci1GT1JNX0xBQkVMX09QRU5fUkVHSVNUUllfREVTQz1TcGVjaWZ5IHRoZSBuYW1lIGFuZCBpbnF1aXJ5IFVSTCBvZiB0aGUgcmVnaXN0cnkgdG8gYmUgb3BlbmVkLiBTZWxlY3RpbmcgYSBmYXZvcml0ZSByZWdpc3RyeSB3aWxsIGF1dG9tYXRpY2FsbHkgZmlsbCBpbiB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24uIFByZXNzIDxzdHJvbmc+R288L3N0cm9uZz4gdG8gb3BlbiB0aGUgcmVnaXN0cnkuCi1GT1JNX0xBQkVMX0ZBVk9SSVRFX1JFR0lTVFJZPUZhdm9yaXRlIFJlZ2lzdHJ5Ci1GT1JNX0xBQkVMX1JFR0lTVFJZX05BTUU9UmVnaXN0cnkgTmFtZQotRk9STV9MQUJFTF9JTlFVSVJZX1VSTD1JbnF1aXJ5IFVSTAotTVNHX0VSUk9SX0lOVkFMSURfUkVHSVNUUllfTkFNRT1JV0FCMDEzNkUgRW50ZXIgYSB2YWxpZCByZWdpc3RyeSBuYW1lLgotTVNHX0VSUk9SX0lOVkFMSURfSU5RVUlSWV9VUkw9SVdBQjAxMzhFIEVudGVyIGEgdmFsaWQgaW5xdWlyeSBVUkwuCi1NU0dfSU5GT19SRUdJU1RSWV9PUEVORUQ9SVdBQjAxMzlJIFRoZSByZWdpc3RyeSBuYW1lZCAlMSBsb2NhdGVkIGF0ICUyIHdhcyBvcGVuZWQgc3VjY2Vzc2Z1bGx5LgotCi0jIFVzZXItZGVmaW5lZCBDYXRlZ29yaWVzCi1GT1JNX0xBQkVMX0FERF9DQVRFR09SWV9EQVRBPTxhIGhyZWY9IiUxIj5DbGljayBoZXJlPC9hPiB0byBsb2FkIHRoaXMgY2F0ZWdvcnkncyBkYXRhLgotRk9STV9DT05UUk9MX1RJVExFX0NBVEVHT1JZX0ZJTEU9Q2F0ZWdvcnkgZGF0YSBmaWxlIG5hbWUKLU1TR19JTkZPX05PX1VTRVJfREVGSU5FRF9DQVRFR09SSUVTX0ZPVU5EPUlXQUIwMzcxSSBObyB1c2VyIGRlZmluZWQgY2F0ZWdvcmllcyBkZXRlY3RlZC4KLU1TR19JTkZPX05PX0NBVEVHT1JZX0RBVEE9SVdBQjAzNzJJIENhdGVnb3J5IGRhdGEgZm9yICUxIGlzIG5vdCBhdmFpbGFibGUgb3IgaXMgaW52YWxpZC4KLU1TR19JTkZPX1VTRVJfREVGSU5FRF9DQVRFR09SWV9EQVRBX0xPQURFRD1JV0FCMDM3M0kgRGF0YSBmb3IgdXNlciBkZWZpbmVkIGNhdGVnb3J5ICUxIHdhcyBzdWNjZXNzZnVsbHkgbG9hZGVkLgotTVNHX0VSUk9SX0lOVkFMSURfVVNFUl9ERUZJTkVEX0NBVEVHT1JZX0RBVEFfRklMRV9LRVk9SVdBQjAzNzRFIEludmFsaWQgZGF0YSBmaWxlIGZvciB1c2VyIGRlZmluZWQgY2F0ZWdvcnkgJTEuIEEgY2F0ZWdvcnkga2V5ICclMicgd2FzIGZvdW5kIGJ1dCAnJTMnIHdhcyBleHBlY3RlZC4KLU1TR19FUlJPUl9JTlZBTElEX1VTRVJfREVGSU5FRF9DQVRFR09SWV9EQVRBX0ZJTEVfRk9STUFUPUlXQUIwNDczRSBVbmtub3duIGZvcm1hdCBpbiBsaW5lOiAlMSBvZiB0aGUgZGF0YSBmaWxlIGZvciB1c2VyIGRlZmluZWQgY2F0ZWdvcnkgJTIuIFRoZSBsaW5lIGlzOiAiJTMiCi1NU0dfRVJST1JfSU5WQUxJRF9VU0VSX0RFRklORURfQ0FURUdPUllfREFUQV9GSUxFPUlXQUIwMzc1RSBJbnZhbGlkIGRhdGEgZmlsZSBmb3IgdXNlciBkZWZpbmVkIGNhdGVnb3J5ICUxLgotTVNHX0VSUk9SX1NBVklOR19DQVRFR09SWV9EQVRBPUlXQUIwNDc0RSBBbiBlcnJvciBvY2N1cmVkIHdoaWxlIHNhdmluZyBkYXRhIGZvciBjYXRlZ29yeSAlMS4gRXhjZXB0aW9uIHRleHQ6ICUyCi0KLSMgVURESSBDYXRlZ29yeSBCcm93c2VyCi1USVRMRV9DQVRFR09SWV9CUk9XU0VSPUNhdGVnb3J5IEJyb3dzZXIKLUFMVF9DQVRFR09SSUVTPUNhdGVnb3JpZXMKLQotIyBEZXRhaWxzCi1BTFRfUkVHSVNUUllfREVUQUlMUz1SZWdpc3RyeSBEZXRhaWxzCi1BTFRfQlVTSU5FU1NfREVUQUlMUz1CdXNpbmVzcyBEZXRhaWxzCi1BTFRfU0VSVklDRV9ERVRBSUxTPVNlcnZpY2UgRGV0YWlscwotQUxUX1NFUlZJQ0VfSU5URVJGQUNFX0RFVEFJTFM9U2VydmljZSBJbnRlcmZhY2UgRGV0YWlscwotRk9STV9MQUJFTF9ERVRBSUxTX0VESVRBQkxFPURldGFpbHMgZm9yIDxzdHJvbmc+JTE8L3N0cm9uZz4gYXJlIHNob3duIGJlbG93LiBTb21lIGl0ZW1zIG1heSBiZSBhZGRlZCwgcmVtb3ZlZCwgb3IgY2hhbmdlZC4gQXV0aGVudGljYXRpb24gbWF5IGJlIHJlcXVpcmVkIGZvciBjaGFuZ2VzLiBPdGhlciBhY3Rpb25zIGFyZSBsaXN0ZWQgYXQgdGhlIGJvdHRvbSBvZiB0aGlzIHBhZ2UuCi0KLSMgR2V0Ci1BTFRfR0VUPUdldAotCi0jIENvbW1vbiBGb3JtIENvbnRyb2wgVGl0bGUKLUZPUk1fQ09OVFJPTF9USVRMRV9OQU1FX1RFWFRfVkFMVUU9TmFtZSB2YWx1ZQotRk9STV9DT05UUk9MX1RJVExFX0RFU0NSSVBUSU9OX1RFWFRfVkFMVUU9RGVzY3JpcHRpb24gdmFsdWUKLUZPUk1fQ09OVFJPTF9USVRMRV9DQVRFR09SWV9LRVlfTkFNRT1DYXRlZ29yeSBrZXkgbmFtZQotRk9STV9DT05UUk9MX1RJVExFX0NBVEVHT1JZX0tFWV9WQUxVRT1DYXRlZ29yeSBrZXkgdmFsdWUKLUZPUk1fQ09OVFJPTF9USVRMRV9JREVOVElGSUVSX0tFWV9OQU1FPUlkZW50aWZpZXIga2V5IG5hbWUKLUZPUk1fQ09OVFJPTF9USVRMRV9JREVOVElGSUVSX0tFWV9WQUxVRT1JZGVudGlmaWVyIGtleSB2YWx1ZQotRk9STV9DT05UUk9MX1RJVExFX0RJU0NPVkVSWV9VUkw9RGlzY292ZXJ5IFVSTAotRk9STV9DT05UUk9MX1RJVExFX0lOUFVUX1RFWFRfVkFMVUU9VURESSByZWdpc3RyeSBuYW1lCi0KLSMgRmluZCBhY3Rpb25zCi1BTFRfRklORD1GaW5kCi1BTFRfU1VCUVVFUlk9RmluZCAlMSBTdWJxdWVyeQotRk9STV9MQUJFTF9RVUVSWV9OQU1FPU5hbWUgb2YgdGhpcyBxdWVyeQotREVGQVVMVF9RVUVSWV9OQU1FPXF1ZXJ5IHJlc3VsdHMKLURFRkFVTFRfU1VCUVVFUllfTkFNRT0lMSAtICUyIHN1YnF1ZXJ5Ci1GT1JNX0xBQkVMX1NFQVJDSF9GT1I9U2VhcmNoIGZvcgotRk9STV9PUFRJT05fQlVTSU5FU1NFUz1CdXNpbmVzc2VzCi1GT1JNX09QVElPTl9TRVJWSUNFUz1TZXJ2aWNlcwotRk9STV9PUFRJT05fU0VSVklDRV9JTlRFUkZBQ0VTPVNlcnZpY2UgSW50ZXJmYWNlcwotRk9STV9MQUJFTF9TRUFSQ0hfVFlQRT1UeXBlIG9mIHNlYXJjaAotRk9STV9SQURJT19TSU1QTEU9U2ltcGxlCi1GT1JNX1JBRElPX0FEVkFOQ0VEPUFkdmFuY2VkCi1GT1JNX1JBRElPX1VVSUQ9VVVJRAotRk9STV9MQUJFTF9GSU5EX0JVU0lORVNTRVNfU0lNUExFX0RFU0M9RW50ZXIgdGhlIHBhcnRpYWwgb3IgY29tcGxldGUgbmFtZSBvZiBhIGJ1c2luZXNzIHRvIHNlYXJjaCBmb3IuIFRoZSAnJScgc3ltYm9sIGNhbiBiZSB1c2VkIGFzIGEgd2lsZGNhcmQgdGhhdCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIuIFByZXNzIDxzdHJvbmc+R288L3N0cm9uZz4gdG8gZXhlY3V0ZSB0aGUgc2VhcmNoLgotRk9STV9MQUJFTF9GSU5EX0FEVkFOQ0VEX0RFU0M9RW50ZXIgdmFsdWVzIGZvciBvbmUgb3IgbW9yZSBvZiB0aGUgcGFyYW1ldGVycyBsaXN0ZWQgYmVsb3cuIFRoZSAnJScgc3ltYm9sIGNhbiBiZSB1c2VkIGFzIGEgd2lsZGNhcmQgdGhhdCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgaW4gdGhlIE5hbWUgZmllbGQgb2YgdGhlIE5hbWVzIHRhYmxlLiBBdXRoZW50aWNhdGlvbiBtYXkgYmUgcmVxdWlyZWQuIFByZXNzIDxzdHJvbmc+R288L3N0cm9uZz4gdG8gZXhlY3V0ZSB0aGUgc2VhcmNoLgotRk9STV9MQUJFTF9GSU5EX0JVU0lORVNTX1VVSURfREVTQz1FbnRlciB0aGUgVVVJRCBvZiB0aGUgYnVzaW5lc3MgdG8gc2VhcmNoIGZvci4gUHJlc3MgPHN0cm9uZz5Hbzwvc3Ryb25nPiB0byBleGVjdXRlIHRoZSBzZWFyY2guCi1GT1JNX0xBQkVMX05BTUVTPU5hbWVzCi1GT1JNX0xJTktfQUREPUFkZAotRk9STV9MSU5LX0dFVD1HZXQKLUZPUk1fTElOS19GSU5EPUZpbmQKLUZPUk1fTElOS19SRU1PVkU9UmVtb3ZlCi1GT1JNX0xBQkVMX09XTkVEPU93bmVkCi1GT1JNX0xBQkVMX1BVQkxJU0hfVVJMPVB1Ymxpc2ggVVJMCi1GT1JNX0xBQkVMX1VTRVJJRD1Vc2VyIElECi1GT1JNX0xBQkVMX1BBU1NXT1JEPVBhc3N3b3JkCi1GT1JNX0xBQkVMX0xBTkdVQUdFPUxhbmd1YWdlCi1GT1JNX0xBQkVMX05BTUU9TmFtZQotRk9STV9MQUJFTF9ERVNDUklQVElPTj1EZXNjcmlwdGlvbgotRk9STV9PUFRJT05fTEFOR1VBR0VfRU49RW5nbGlzaAotRk9STV9PUFRJT05fTEFOR1VBR0VfQUE9QWZhcgotRk9STV9PUFRJT05fTEFOR1VBR0VfQUI9QWJraGF6aWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9BRj1BZnJpa2FhbnMKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0FNPUFtaGFyaWMKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0FSPUFyYWJpYwotRk9STV9PUFRJT05fTEFOR1VBR0VfQVM9QXNzYW1lc2UKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0FZPUF5bWFyYQotRk9STV9PUFRJT05fTEFOR1VBR0VfQVo9QXplcmJhaWphbmkKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0JBPUJhc2hraXIKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0JFPUJ5ZWxvcnVzc2lhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfQkc9QnVsZ2FyaWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9CSD1CaWhhcmkKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0JJPUJpc2xhbWEKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0JOPUJlbmdhbGk7IEJhbmdsYQotRk9STV9PUFRJT05fTEFOR1VBR0VfQk89VGliZXRhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfQlI9QnJldG9uCi1GT1JNX09QVElPTl9MQU5HVUFHRV9DQT1DYXRhbGFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9DTz1Db3JzaWNhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfQ1o9Q3plY2gKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0NZPVdlbHNoCi1GT1JNX09QVElPTl9MQU5HVUFHRV9EQT1EYW5pc2gKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0RFPUdlcm1hbgotRk9STV9PUFRJT05fTEFOR1VBR0VfRFo9Qmh1dGFuaQotRk9STV9PUFRJT05fTEFOR1VBR0VfRUw9R3JlZWsKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0VPPUVzcGVyYW50bwotRk9STV9PUFRJT05fTEFOR1VBR0VfRVM9U3BhbmlzaAotRk9STV9PUFRJT05fTEFOR1VBR0VfRVQ9RXN0b25pYW4KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0VVPUJhc3F1ZQotRk9STV9PUFRJT05fTEFOR1VBR0VfRkE9UGVyc2lhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfRkk9RmlubmlzaAotRk9STV9PUFRJT05fTEFOR1VBR0VfRko9RmlqaQotRk9STV9PUFRJT05fTEFOR1VBR0VfRk89RmFlcm9lc2UKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0ZSPUZyZW5jaAotRk9STV9PUFRJT05fTEFOR1VBR0VfRlk9RnJpc2lhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfR0E9SXJpc2gKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0dEPVNjb3RzIEdhZWxpYwotRk9STV9PUFRJT05fTEFOR1VBR0VfR0w9R2FsaWNpYW4KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0dOPUd1YXJhbmkKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0dVPUd1amFyYXRpCi1GT1JNX09QVElPTl9MQU5HVUFHRV9IQT1IYXVzYQotRk9STV9PUFRJT05fTEFOR1VBR0VfSEk9SGluZGkKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0hSPUNyb2F0aWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9IVT1IdW5nYXJpYW4KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0hZPUFybWVuaWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9JQT1JbnRlcmxpbmd1YQotRk9STV9PUFRJT05fTEFOR1VBR0VfSUU9SW50ZXJsaW5ndWUKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0lLPUludXBpYWsKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0lOPUluZG9uZXNpYW4KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0lTPUljZWxhbmRpYwotRk9STV9PUFRJT05fTEFOR1VBR0VfSVQ9SXRhbGlhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfSVc9SGVicmV3Ci1GT1JNX09QVElPTl9MQU5HVUFHRV9KQT1KYXBhbmVzZQotRk9STV9PUFRJT05fTEFOR1VBR0VfSkk9WWlkZGlzaAotRk9STV9PUFRJT05fTEFOR1VBR0VfSlc9SmF2YW5lc2UKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0tBPUdlb3JnaWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9LSz1LYXpha2gKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0tMPUdyZWVubGFuZGljCi1GT1JNX09QVElPTl9MQU5HVUFHRV9LTT1DYW1ib2RpYW4KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0tOPUthbm5hZGEKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0tPPUtvcmVhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfS1M9S2FzaG1pcmkKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0tVPUt1cmRpc2gKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0tZPUtpcmdoaXoKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX0xBPUxhdGluCi1GT1JNX09QVElPTl9MQU5HVUFHRV9MTj1MaW5nYWxhCi1GT1JNX09QVElPTl9MQU5HVUFHRV9MTz1MYW90aGlhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfTFQ9TGl0aHVhbmlhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfTFY9TGF0dmlhbiwgTGV0dGlzaAotRk9STV9PUFRJT05fTEFOR1VBR0VfTUc9TWFsYWdhc3kKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX01JPU1hb3JpCi1GT1JNX09QVElPTl9MQU5HVUFHRV9NSz1NYWNlZG9uaWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9NTD1NYWxheWFsYW0KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX01OPU1vbmdvbGlhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfTU89TW9sZGF2aWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9NUj1NYXJhdGhpCi1GT1JNX09QVElPTl9MQU5HVUFHRV9NUz1NYWxheQotRk9STV9PUFRJT05fTEFOR1VBR0VfTVQ9TWFsdGVzZQotRk9STV9PUFRJT05fTEFOR1VBR0VfTVk9QnVybWVzZQotRk9STV9PUFRJT05fTEFOR1VBR0VfTkE9TmF1cnUKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX05FPU5lcGFsaQotRk9STV9PUFRJT05fTEFOR1VBR0VfTkw9RHV0Y2gKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX05PPU5vcndlZ2lhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfT0M9T2NjaXRhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfT009KEFmYW4pIE9yb21vCi1GT1JNX09QVElPTl9MQU5HVUFHRV9PUj1Pcml5YQotRk9STV9PUFRJT05fTEFOR1VBR0VfUEE9UHVuamFiaQotRk9STV9PUFRJT05fTEFOR1VBR0VfUEw9UG9saXNoCi1GT1JNX09QVElPTl9MQU5HVUFHRV9QUz1QYXNodG8sIFB1c2h0bwotRk9STV9PUFRJT05fTEFOR1VBR0VfUFQ9UG9ydHVndWVzZQotRk9STV9PUFRJT05fTEFOR1VBR0VfUVU9UXVlY2h1YQotRk9STV9PUFRJT05fTEFOR1VBR0VfUk09UmhhZXRvLVJvbWFuY2UKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1JOPUtpcnVuZGkKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1JPPVJvbWFuaWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9SVT1SdXNzaWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9SVz1LaW55YXJ3YW5kYQotRk9STV9PUFRJT05fTEFOR1VBR0VfU0E9U2Fuc2tyaXQKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1NEPVNpbmRoaQotRk9STV9PUFRJT05fTEFOR1VBR0VfU0c9U2FuZ3JvCi1GT1JNX09QVElPTl9MQU5HVUFHRV9TSD1TZXJiby1Dcm9hdGlhbgotRk9STV9PUFRJT05fTEFOR1VBR0VfU0k9U2luZ2hhbGVzZQotRk9STV9PUFRJT05fTEFOR1VBR0VfU0s9U2xvdmFrCi1GT1JNX09QVElPTl9MQU5HVUFHRV9TTD1TbG92ZW5pYW4KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1NNPVNhbW9hbgotRk9STV9PUFRJT05fTEFOR1VBR0VfU049U2hvbmEKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1NPPVNvbWFsaQotRk9STV9PUFRJT05fTEFOR1VBR0VfU1E9QWxiYW5pYW4KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1NSPVNlcmJpYW4KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1NTPVNpc3dhdGkKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1NUPVNlc290aG8KLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1NVPVN1bmRhbmVzZQotRk9STV9PUFRJT05fTEFOR1VBR0VfU1Y9U3dlZGlzaAotRk9STV9PUFRJT05fTEFOR1VBR0VfU1c9U3dhaGlsaQotRk9STV9PUFRJT05fTEFOR1VBR0VfVEE9VGFtaWwKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1RFPVRlZ3VsdQotRk9STV9PUFRJT05fTEFOR1VBR0VfVEc9VGFqaWsKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1RIPVRoYWkKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1RJPVRpZ3JpbnlhCi1GT1JNX09QVElPTl9MQU5HVUFHRV9USz1UdXJrbWVuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9UTD1UYWdhbG9nCi1GT1JNX09QVElPTl9MQU5HVUFHRV9UTj1TZXRzd2FuYQotRk9STV9PUFRJT05fTEFOR1VBR0VfVE89VG9uZ2EKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1RSPVR1cmtpc2gKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1RTPVRzb25nYQotRk9STV9PUFRJT05fTEFOR1VBR0VfVFQ9VGF0YXIKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1RXPVR3aQotRk9STV9PUFRJT05fTEFOR1VBR0VfVUs9VWtyYWluaWFuCi1GT1JNX09QVElPTl9MQU5HVUFHRV9VUj1VcmR1Ci1GT1JNX09QVElPTl9MQU5HVUFHRV9VWj1VemJlawotRk9STV9PUFRJT05fTEFOR1VBR0VfVkk9VmlldG5hbWVzZQotRk9STV9PUFRJT05fTEFOR1VBR0VfVk89Vm9sYXB1awotRk9STV9PUFRJT05fTEFOR1VBR0VfV089V29sb2YKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1hIPVhob3NhCi1GT1JNX09QVElPTl9MQU5HVUFHRV9ZTz1Zb3J1YmEKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1pIPUNoaW5lc2UKLUZPUk1fT1BUSU9OX0xBTkdVQUdFX1pVPVp1bHUKLUZPUk1fTEFCRUxfRVhBQ1RfTkFNRV9NQVRDSD1FeGFjdCBtYXRjaAotRk9STV9MQUJFTF9DQVNFX1NFTlNJVElWRV9NQVRDSD1DYXNlIHNlbnNpdGl2ZQotRk9STV9MQUJFTF9TT1VOREVYPVNvdW5kIGFsaWtlCi1GT1JNX0xBQkVMX0lERU5USUZJRVJTPUlkZW50aWZpZXJzCi1GT1JNX0xBQkVMX0lERU5USUZJRVJfVFlQRT1UeXBlCi0KLSMgRG8gbm90IHRyYW5zbGF0ZSB0aGUgdHdvIGl0ZW1zIGJlbG93LgotRk9STV9PUFRJT05fSURFTlRJRklFUl9EVU5TPUQtVS1OLVMKLUZPUk1fT1BUSU9OX0lERU5USUZJRVJfVEhPTUFTX1JFR0lTVFJZPVRob21hcyBSZWdpc3RyeQotCi1GT1JNX0xBQkVMX0tFWV9OQU1FPUtleSBuYW1lCi1GT1JNX0xBQkVMX0tFWV9WQUxVRT1LZXkgdmFsdWUKLUZPUk1fTEFCRUxfQ0FURUdPUklFUz1DYXRlZ29yaWVzCi1GT1JNX0xBQkVMX0NBVEVHT1JZX1RZUEU9VHlwZQotRk9STV9PUFRJT05fQ0FURUdPUllfTkFJQ1M9TkFJQ1MKLUZPUk1fT1BUSU9OX0NBVEVHT1JZX1VOU1BTQ183Mz1VTlNQU0MgNy4zCi1GT1JNX09QVElPTl9DQVRFR09SWV9HRU89R0VPCi1GT1JNX0xBQkVMX0JVU0lORVNTX0NBVEVHT1JJRVM9Q29tcGFyZSB3aXRoOgotRk9STV9PUFRJT05fQlVTSU5FU1NFU19PTkxZPUJ1c2luZXNzZXMgb25seQotRk9STV9PUFRJT05fU0VSVklDRVNfT05MWT1TZXJ2aWNlcyBvbmx5Ci1GT1JNX09QVElPTl9CT1RIPUJ1c2luZXNzZXMgYW5kIFNlcnZpY2VzCi1GT1JNX0xBQkVMX0RJU0NPVkVSWVVSTFM9RGlzY292ZXJ5IFVSTHMKLUZPUk1fTEFCRUxfRElTQ09WRVJZVVJMPURpc2NvdmVyeSBVUkwKLUZPUk1fTEFCRUxfRklORFFVQUxJRklFUlM9RmluZCBRdWFsaWZpZXJzCi1GT1JNX0xBQkVMX0NPTUJJTkVfS0VZUz1Db21iaW5lIGtleXM6Ci1GT1JNX09QVElPTl9BTkRBTExLRVlTPUFuZAotRk9STV9PUFRJT05fT1JBTExLRVlTPU9yCi1GT1JNX09QVElPTl9PUkxJS0VLRVlTPU9yIExpa2UKLUZPUk1fTEFCRUxfU09SVF9CWV9OQU1FPVNvcnQgYnkgbmFtZToKLUZPUk1fUkFESU9fU09SVF9BU0M9QXNjZW5kaW5nCi1GT1JNX1JBRElPX1NPUlRfREVTQz1EZXNjZW5kaW5nCi1GT1JNX0xBQkVMX1NPUlRfQllfREFURT1Tb3J0IGJ5IGRhdGU6Ci1GT1JNX0xBQkVMX01BWF9TRUFSQ0hfU0VUPU1heGltdW0gc2l6ZSBvZiBzZWFyY2ggc2V0OgotRk9STV9MQUJFTF9NQVhfUkVTVUxUUz1NYXhpbXVtIG51bWJlciBvZiByZXN1bHRzOgotRk9STV9MQUJFTF9GSU5EX1NFUlZJQ0VTX1NJTVBMRV9ERVNDPUVudGVyIHRoZSBwYXJ0aWFsIG9yIGNvbXBsZXRlIG5hbWUgb2YgYSBzZXJ2aWNlIHRvIHNlYXJjaCBmb3IuIFRoZSAnJScgc3ltYm9sIGNhbiBiZSB1c2VkIGFzIGEgd2lsZGNhcmQgdGhhdCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIuIFByZXNzIDxzdHJvbmc+R288L3N0cm9uZz4gdG8gZXhlY3V0ZSB0aGUgc2VhcmNoLgotRk9STV9MQUJFTF9GSU5EX1NFUlZJQ0VfVVVJRF9ERVNDPUVudGVyIHRoZSBVVUlEIG9mIHRoZSBzZXJ2aWNlIHRvIHNlYXJjaCBmb3IuIFByZXNzIDxzdHJvbmc+R288L3N0cm9uZz4gdG8gZXhlY3V0ZSB0aGUgc2VhcmNoLgotRk9STV9MQUJFTF9GSU5EX1NFUlZJQ0VfSU5URVJGQUNFU19TSU1QTEVfREVTQz1FbnRlciB0aGUgcGFydGlhbCBvciBjb21wbGV0ZSBuYW1lIG9mIGEgc2VydmljZSBpbnRlcmZhY2UgdG8gc2VhcmNoIGZvci4gVGhlICclJyBzeW1ib2wgY2FuIGJlIHVzZWQgYXMgYSB3aWxkY2FyZCB0aGF0IG1hdGNoZXMgYW55IGNoYXJhY3Rlci4gUHJlc3MgPHN0cm9uZz5Hbzwvc3Ryb25nPiB0byBleGVjdXRlIHRoZSBzZWFyY2guCi1GT1JNX0xBQkVMX0ZJTkRfU0VSVklDRV9JTlRFUkZBQ0VfVVVJRF9ERVNDPUVudGVyIHRoZSBVVUlEIG9mIHRoZSBzZXJ2aWNlIGludGVyZmFjZSB0byBzZWFyY2ggZm9yLiBQcmVzcyA8c3Ryb25nPkdvPC9zdHJvbmc+IHRvIGV4ZWN1dGUgdGhlIHNlYXJjaC4KLUZPUk1fTEFCRUxfU0VSVklDRV9JTlRFUkZBQ0VTPVNlcnZpY2UgSW50ZXJmYWNlcwotRk9STV9MQUJFTF9VVUlEX0tFWT1VVUlEIEtleToKLUZPUk1fTEFCRUxfVVNFX1NFUlZJQ0U9VXNlIHNlcnZpY2UKLUZPUk1fTEFCRUxfU0VSVklDRT1TZXJ2aWNlCi1GT1JNX0xBQkVMX0JVU0lORVNTPUJ1c2luZXNzCi1GT1JNX0xBQkVMX1BVQkxJU0hfQVNTRVJUSU9OUz1QdWJsaXNoZXIgQXNzZXJ0aW9ucwotRk9STV9MQUJFTF9ESVJFQ1RJT049RGlyZWN0aW9uCi1GT1JNX0xBQkVMX0ZST01fS0VZPUZyb20gS2V5Ci1GT1JNX0xBQkVMX1RPX0tFWT1UbyBLZXkKLUZPUk1fTEFCRUxfU1RBVFVTPVN0YXR1cwotRk9STV9MQUJFTF9BU1NFUlRJT05fVFlQRT1Bc3NlcnRpb24gVHlwZQotRk9STV9PUFRJT05fQVNTRVJUSU9OX1RZUEVfUEFSRU5UX0NISUxEPVBhcmVudC1DaGlsZAotRk9STV9PUFRJT05fQVNTRVJUSU9OX1RZUEVfUEVFUl9UT19QRUVSPVBlZXItUGVlcgotRk9STV9PUFRJT05fQVNTRVJUSU9OX1RZUEVfSURFTlRJVFk9SWRlbnRpdHkKLUZPUk1fTEFCRUxfQVNTRVJUSU9OX0RJUkVUSU9OX0RFU0M9RGlyZWN0aW9uIDxzdHJvbmc+RnJvbTwvc3Ryb25nPiB3aWxsIGNyZWF0ZSBhIHB1Ymxpc2hlciBhc3NlcnRpb24gZnJvbSB0aGlzIGJ1c2luZXNzIHRvIHRoZSBidXNpbmVzc2VzIGFib3ZlLiAgRGlyZWN0aW9uIDxzdHJvbmc+VG88L3N0cm9uZz4gd2lsbCBjcmVhdGUgYSBwdWJsaXNoZXIgYXNzZXJ0aW9uIGZyb20gdGhlIGFib3ZlIGJ1c2luZXNzZXMgdG8gdGhpcyBidXNpbmVzcy4KLUZPUk1fT1BUSU9OX0FTU0VSVElPTl9ESVJFQ1RJT05fRlJPTT0tLS0+Ci1GT1JNX09QVElPTl9BU1NFUlRJT05fRElSRUNUSU9OX1RPPTwtLS0KLUZPUk1fTEFCRUxfVEhJU19CVVNJTkVTUz1UaGlzCi1NU0dfRVJST1JfSU5WQUxJRF9RVUVSWV9OQU1FPUlXQUIwMTQwRSBFbnRlciBhIHZhbGlkIG5hbWUgZm9yIHRoZSBxdWVyeS4KLU1TR19FUlJPUl9JTlZBTElEX05BTUVTPUlXQUIwMTQxRSBFbnRlciBhIHNlcmllcyBvZiB2YWxpZCBuYW1lcy4KLU1TR19FUlJPUl9JTlZBTElEX1BVQkxJU0hfVVJMPUlXQUIwMTQyRSBFbnRlciBhIHZhbGlkIHB1Ymxpc2ggVVJMLgotTVNHX0VSUk9SX0lOVkFMSURfVVNFUklEPUlXQUIwMTQzRSBFbnRlciBhIHZhbGlkIHVzZXIgSUQuCi1NU0dfRVJST1JfSU5WQUxJRF9NQVhfU0VBUkNIX1NFVD1JV0FCMDE0NUUgRW50ZXIgYSB2YWxpZCBzaXplIGZvciB0aGUgbWF4aW11bSBzZWFyY2ggc2V0LgotTVNHX0VSUk9SX0lOVkFMSURfTUFYX1JFU1VMVFM9SVdBQjAxNDZFIEVudGVyIGEgdmFsaWQgc2l6ZSBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMuCi1NU0dfSU5GT19CVVNJTkVTU0VTX0ZPVU5EPUlXQUIwMTQ3SSBOdW1iZXIgb2YgYnVzaW5lc3NlcyBmb3VuZDogJTEKLU1TR19FUlJPUl9OT19CVVNJTkVTU0VTX0ZPVU5EPUlXQUIwMTQ4RSBObyBidXNpbmVzc2VzIGZvdW5kLgotTVNHX0lORk9fU0VSVklDRVNfRk9VTkQ9SVdBQjAxNDlJIE51bWJlciBvZiBzZXJ2aWNlcyBmb3VuZDogJTEKLU1TR19FUlJPUl9OT19TRVJWSUNFU19GT1VORD1JV0FCMDE1MEUgTm8gc2VydmljZXMgZm91bmQuCi1NU0dfRVJST1JfU0lOR0xFX0lURU09SVdBQjAxNTFFIFNlbGVjdCBqdXN0IG9uZSBpdGVtLgotTVNHX1FVRVNUSU9OX0lURU1fUkVQTEFDRU1FTlQ9VGhlIHNlbGVjdGlvbiB3aWxsIHJlcGxhY2UgYW4gaXRlbSBhbHJlYWR5IGluIHRoZSB0YXJnZXQuIERvIHlvdSB3aXNoIHRvIHByb2NlZWQ/Ci1NU0dfSU5GT19TRVJWSUNFX0lOVEVSRkFDRVNfRk9VTkQ9SVdBQjAxNTJJIE51bWJlciBvZiBzZXJ2aWNlIGludGVyZmFjZXMgZm91bmQ6ICUxCi1NU0dfRVJST1JfTk9fU0VSVklDRV9JTlRFUkZBQ0VTX0ZPVU5EPUlXQUIwMTUzRSBObyBzZXJ2aWNlIGludGVyZmFjZXMgZm91bmQuCi1NU0dfRVJST1JfTk9USElOR19TRUxFQ1RFRD1JV0FCMDE1NEUgU2VsZWN0IGF0IGxlYXN0IG9uZSBpdGVtLgotTVNHX0VSUk9SX0lOVkFMSURfVVVJRF9LRVk9SVdBQjAxNTVFIEVudGVyIGEgdmFsaWQgVVVJRCBrZXkuCi1NU0dfRVJST1JfUVVFUllfTkFNRV9DT05GTElDVD1JV0FCMDE1NkUgVGhlIHN1YnF1ZXJ5J3MgcXVlcnkgbmFtZSBjYW5ub3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmF0b3IuCi1NU0dfRVJST1JfTk9fSVRFTVNfVE9fR0VUPUlXQUIwMTU3RSBObyBpdGVtcyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgaGF2ZSBiZWVuIHB1Ymxpc2hlZCBvciBkaXNjb3ZlcmVkIHlldC4KLU1TR19JTkZPX05PX0JVU0lORVNTRVNfT1JfU0VSVklDRV9JTlRFUkZBQ0VTX0ZPVU5EPUlXQUIwMTYySSBObyBCdXNpbmVzc2VzLCBTZXJ2aWNlcyBvciBTZXJ2aWNlIEludGVyZmFjZXMgZm91bmQuCi0KLSMgUmVzdWx0cwotQUxUX1FVRVJZX1JFU1VMVFM9UXVlcnkgUmVzdWx0cwotRk9STV9MQUJFTF9TVUJRVUVSWT1UaGUgcmVzdWx0cyBtYXkgYmUgdXNlZCBhcyBpbnB1dHMgb2YgYW5vdGhlciBvcGVyYXRpb24uIENsaWNrIHRoZSA8c3Ryb25nPnRhcmdldDwvc3Ryb25nPiBsaW5rIGF0IHRoZSB0b3AgdG8gc2VlIHRoZSBvcGVyYXRpb24uIFNlbGVjdGVkIHJlc3VsdHMgY2FuIGJlIHVzZWQgaW4gdGhlIG9wZXJhdGlvbiBieSBjbGlja2luZyB0aGUgPHN0cm9uZz5UcmFuc2Zlcjwvc3Ryb25nPiBidXR0b24uCi1GT1JNX0xBQkVMX1FVRVJZPVNlbGVjdCBhIHJlc3VsdCB0byBzZWUgbW9yZSBkZXRhaWxzIG9yIHNlbGVjdCBhIHNldCBvZiByZXN1bHRzIGFuZCBjbGljayBhIGJ1dHRvbiB0byBwZXJmb3JtIGFuIG9wZXJhdGlvbi4KLUZPUk1fTElOS19UQVJHRVQ9dGFyZ2V0Ci1GT1JNX0JVVFRPTl9UUkFOU0ZFUj1UcmFuc2ZlcgotRk9STV9CVVRUT05fUkVGUkVTSD1SZWZyZXNoCi1GT1JNX0JVVFRPTl9BRERfVE9fRkFWT1JJVEVTPUFkZCB0byBmYXZvcml0ZXMKLUZPUk1fQlVUVE9OX1VOUFVCTElTSD1VbnB1Ymxpc2gKLUZPUk1fQlVUVE9OX0NMRUFSPUNsZWFyCi0KLSMgUHVibGlzaCBhY3Rpb25zCi1BTFRfUFVCTElTSD1QdWJsaXNoCi1GT1JNX0xBQkVMX1BVQkxJU0g9UHVibGlzaDoKLUZPUk1fT1BUSU9OX0JVU0lORVNTPUJ1c2luZXNzCi1GT1JNX09QVElPTl9TRVJWSUNFPVNlcnZpY2UKLUZPUk1fT1BUSU9OX1NFUlZJQ0VfSU5URVJGQUNFPVNlcnZpY2UgSW50ZXJmYWNlCi1GT1JNX0xBQkVMX1BVQkxJU0hfQlVTSU5FU1NfU0lNUExFX0RFU0M9RW50ZXIgYSBuYW1lIGFuZCBhbiBvcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGJ1c2luZXNzIHRvIGJlIHB1Ymxpc2hlZC4gQXV0aGVudGljYXRpb24gbWF5IGJlIHJlcXVpcmVkLgotRk9STV9MQUJFTF9QVUJMSVNIX0JVU0lORVNTX0FEVkFOQ0VEX0RFU0M9UHJvdmlkZSBhIG5hbWUgZm9yIHRoZSBidXNpbmVzcyB0byBiZSBwdWJsaXNoZWQuIE90aGVyIHBhcmFtZXRlcnMgbWF5IGFsc28gYmUgc3BlY2lmaWVkLiBBdXRoZW50aWNhdGlvbiBtYXkgYmUgcmVxdWlyZWQuCi1GT1JNX0xBQkVMX1BVQkxJU0hfU0VSVklDRV9TSU1QTEVfREVTQz1HZXQgb3IgZmluZCBhIGJ1c2luZXNzIGFuZCB0aGVuIHByb3ZpZGUgdGhlIFdTREwgVVJMLCBuYW1lIGFuZCBhbiBvcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIHNlcnZpY2UgdG8gYmUgcHVibGlzaGVkLiBBdXRoZW50aWNhdGlvbiBtYXkgYmUgcmVxdWlyZWQuCi1GT1JNX0xBQkVMX1BVQkxJU0hfU0VSVklDRV9BRFZBTkNFRF9ERVNDPUdldCBvciBmaW5kIGEgYnVzaW5lc3MgYW5kIHRoZW4gcHJvdmlkZSB0aGUgV1NETCBVUkwgYW5kIGEgbmFtZSBmb3IgdGhlIHNlcnZpY2UgdG8gYmUgcHVibGlzaGVkLiBPdGhlciBwYXJhbWV0ZXJzIG1heSBhbHNvIGJlIHNwZWNpZmllZC4gQXV0aGVudGljYXRpb24gbWF5IGJlIHJlcXVpcmVkLgotRk9STV9MQUJFTF9CVVNJTkVTU19QVUJMSVNIX1NFUlZJQ0VfU0lNUExFX0RFU0M9UHJvdmlkZSB0aGUgV1NETCBVUkwsIG5hbWUgYW5kIGFuIG9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgc2VydmljZSB0byBiZSBwdWJsaXNoZWQuIEF1dGhlbnRpY2F0aW9uIG1heSBiZSByZXF1aXJlZC4KLUZPUk1fTEFCRUxfQlVTSU5FU1NfUFVCTElTSF9TRVJWSUNFX0FEVkFOQ0VEX0RFU0M9UHJvdmlkZSB0aGUgV1NETCBVUkwgYW5kIGEgbmFtZSBmb3IgdGhlIHNlcnZpY2UgdG8gYmUgcHVibGlzaGVkLiBPdGhlciBwYXJhbWV0ZXJzIG1heSBhbHNvIGJlIHNwZWNpZmllZC4gQXV0aGVudGljYXRpb24gbWF5IGJlIHJlcXVpcmVkLgotRk9STV9MQUJFTF9QVUJMSVNIX1NFUlZJQ0VfSU5URVJGQUNFX1NJTVBMRV9ERVNDPUVudGVyIGEgV1NETCBVUkwsIG5hbWUgYW5kIGFuIG9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgc2VydmljZSBpbnRlcmZhY2UgdG8gYmUgcHVibGlzaGVkLiBBdXRoZW50aWNhdGlvbiBtYXkgYmUgcmVxdWlyZWQuCi1GT1JNX0xBQkVMX1BVQkxJU0hfU0VSVklDRV9JTlRFUkZBQ0VfQURWQU5DRURfREVTQz1Qcm92aWRlIHRoZSBXU0RMIFVSTCBhbmQgbmFtZSBmb3IgdGhlIHNlcnZpY2UgaW50ZXJmYWNlIHRvIGJlIHB1Ymxpc2hlZC4gT3RoZXIgcGFyYW1ldGVycyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQuIEF1dGhlbnRpY2F0aW9uIG1heSBiZSByZXF1aXJlZC4KLUZPUk1fTEFCRUxfUFVCTElTSF9GT1JNPVB1YmxpY2F0aW9uIGZvcm1hdAotRk9STV9MQUJFTF9ERVNDUklQVElPTj1EZXNjcmlwdGlvbgotRk9STV9MQUJFTF9ERVNDUklQVElPTlM9RGVzY3JpcHRpb25zCi1NU0dfSU5GT19CVVNJTkVTU19QVUJMSVNIRUQ9SVdBQjAxNThJIEJ1c2luZXNzICUxIHdhcyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLgotTVNHX0lORk9fU0VSVklDRV9QVUJMSVNIRUQ9SVdBQjAxNTlJIFNlcnZpY2UgJTEgd2FzIHN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQuCi1NU0dfSU5GT19TRVJWSUNFX0lOVEVSRkFDRV9QVUJMSVNIRUQ9SVdBQjAxNjBJIFNlcnZpY2UgaW50ZXJmYWNlICUxIHdhcyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLgotTVNHX0VSUk9SX0lOVkFMSURfTkFNRT1JV0FCMDE2MUUgRW50ZXIgYSB2YWxpZCBuYW1lLgotTVNHX0VSUk9SX1JPV19CTEFOS19MQU5HVUFHRT1JV0FCMDI1MEUgU2VsZWN0IGEgbm9uLWJsYW5rIGxhbmd1YWdlIGZvciB0aGUgJTEgaW4gcm93ICUyLiBPbmx5IHRoZSBmaXJzdCByb3cgY2FuIGhhdmUgYSBibGFuayBsYW5ndWFnZS4KLU1TR19FUlJPUl9ST1dfRFVQTElDQVRFX0xBTkdVQUdFPUlXQUIwMjUxRSBDaGFuZ2UgdGhlIGxhbmd1YWdlIGZvciB0aGUgJTEgaW4gcm93ICUyLiBUaGUgY3VycmVudCBvbmUgaXMgYWxyZWFkeSBpbiB1c2UuCi1NU0dfRVJST1JfUk9XX0lOVkFMSURfVEVYVD1JV0FCMDI1MkUgRW50ZXIgYSB2YWxpZCAlMSBpbiByb3cgJTIKLU1TR19FUlJPUl9JTlZBTElEX1dTRExfVVJMPUlXQUIwMjUzRSBFbnRlciBhIHZhbGlkIFdTREwgVVJMLgotTVNHX0VSUk9SX05PX05BTUVTPUlXQUIwMjU0RSBBZGQgYXQgbGVhc3Qgb25lIG5hbWUuCi1NU0dfRVJST1JfSU5WQUxJRF9TRVJWSUNFPUlXQUIwMjU1RSBQcm92aWRlIGEgdmFsaWQgc2VydmljZS4KLU1TR19FUlJPUl9JTlZBTElEX0JVU0lORVNTPUlXQUIwMjU2RSBQcm92aWRlIGEgdmFsaWQgYnVzaW5lc3MuCi0KLSMgQnVzaW5lc3MgUHVibGlzaCBTZXJ2aWNlIGFjdGlvbgotQUxUX1BVQkxJU0hfU0VSVklDRT1QdWJsaXNoIFNlcnZpY2UKLQotIyBMb2dpbiBhY3Rpb25zCi1BTFRfTE9HSU49TG9naW4KLUFMVF9MT0dPVVQ9TG9nb3V0Ci1NU0dfSU5GT19OT19NVUxUSVBMRV9MT0dJTj1NdWx0aXBsZSBsb2dpbnMgd2l0aCBzYW1lIElEIG5vdCBhbGxvd2VkCi1NU0dfSU5GT19MT0dHRURfSU5fTk9ERT0lMSAtIGxvZ2dlZCBpbiBhcyAlMgotCi0jIFdTREwgQnJvd3NlcgotVElUTEVfV1NETF9CUk9XU0VSPVdTREwgQnJvd3NlciAtICUxCi1GT1JNX0xBQkVMX1dTRExfU09VUkNFPVNlbGVjdCBhIFdTREwgc291cmNlOgotRk9STV9MQUJFTF9XU0RMX1NPVVJDRV9XRUJQUk9KRUNUUz1XZWIgUHJvamVjdHMKLUZPUk1fTEFCRUxfV1NETF9TT1VSQ0VfRkFWT1JJVEVTPUZhdm9yaXRlcwotRk9STV9MQUJFTF9XRUJfUFJPSkVDVD1XZWIgUHJvamVjdAotRk9STV9MQUJFTF9XU0RMX1VSTD1XU0RMIFVSTAotQUxUX1dTRExfQlJPV1NFUj1XU0RMIEJyb3dzZXIKLQotIyBEZXRhaWxzCi1GT1JNX0xJTktfRURJVD1FZGl0Ci1GT1JNX0xJTktfQ0FOQ0VMPUNhbmNlbAotRk9STV9MQUJFTF9CVVNJTkVTU19LRVk9QnVzaW5lc3MgS2V5Ci1GT1JNX0xBQkVMX1NFUlZJQ0VfS0VZPVNlcnZpY2UgS2V5Ci1GT1JNX0xBQkVMX1NFUlZJQ0VfSU5URVJGQUNFX0tFWT1UTW9kZWwgS2V5Ci1GT1JNX0xBQkVMX1VTRVJfREVGSU5FRF9DQVRFR09SSUVTPVVzZXIgRGVmaW5lZCBDYXRlZ29yaWVzCi1GT1JNX0xBQkVMX0NIRUNLRUQ9Q2hlY2tlZAotRk9STV9MQUJFTF9GSUxFPUZpbGUKLU1TR19RVUVTVElPTl9QVUJMSVNIX0lURU09VGhlIGl0ZW0gY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSByZWdpc3RyeS4gRG8geW91IHdpc2ggdG8gcHVibGlzaCBpdD8KLU1TR19RVUVTVElPTl9TRVJWSUNFX1BVQkxJU0hfQlVTSU5FU1M9VGhlIHNlcnZpY2UgYW5kIGl0cyBidXNpbmVzcyBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LiBQcm9jZWVkIHRvIHB1Ymxpc2g/Ci1NU0dfSU5GT19CVVNJTkVTU19VUERBVEVEPUlXQUIwMjU3SSBCdXNpbmVzcyAlMSB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuCi1NU0dfSU5GT19TRVJWSUNFX1VQREFURUQ9SVdBQjAyNThJIFNlcnZpY2UgJTEgd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLgotTVNHX0lORk9fU0VSVklDRV9JTlRFUkZBQ0VfVVBEQVRFRD1JV0FCMDI1OUkgU2VydmljZSBJbnRlcmZhY2UgJTEgd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLgotTVNHX0lORk9fUkVHSVNUUllfVVBEQVRFRD1JV0FCMDMyM0kgUmVnaXN0cnkgJTEgd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLgotCi0jIFVucHVibGlzaEFjdGlvbgotQUxUX1VOUFVCTElTSF9CVVNJTkVTUz1VbnB1Ymxpc2ggQnVzaW5lc3MKLUFMVF9VTlBVQkxJU0hfU0VSVklDRT1VbnB1Ymxpc2ggU2VydmljZQotQUxUX1VOUFVCTElTSF9TRVJWSUNFX0lOVEVSRkFDRT1VbnB1Ymxpc2ggU2VydmljZSBJbnRlcmZhY2UKLUZPUk1fTEFCRUxfVU5QVUJMSVNIX0RFU0M9UHJlc3MgPHN0cm9uZz5Hbzwvc3Ryb25nPiB0byB1bnB1Ymxpc2ggdGhpcyBvYmplY3QuIEF1dGhlbnRpY2F0aW9uIG1heSBiZSByZXF1aXJlZC4KLU1TR19JTkZPX0JVU0lORVNTX1VOUFVCTElTSEVEPUlXQUIwMjYwSSBCdXNpbmVzcyAlMSB3YXMgc3VjY2Vzc2Z1bGx5IHVucHVibGlzaGVkLgotTVNHX0lORk9fU0VSVklDRV9VTlBVQkxJU0hFRD1JV0FCMDI2MUkgU2VydmljZSAlMSB3YXMgc3VjY2Vzc2Z1bGx5IHVucHVibGlzaGVkLgotTVNHX0lORk9fU0VSVklDRV9JTlRFUkZBQ0VfVU5QVUJMSVNIRUQ9SVdBQjAyNjJJIFNlcnZpY2UgSW50ZXJmYWNlICUxIHdhcyBzdWNjZXNzZnVsbHkgdW5wdWJsaXNoZWQuCi0KLSMgQWRkIHRvIFdTREwgUGVyc3BlY3RpdmUKLUFMVF9BRERfVE9fV1NETF9QRVJTUEVDVElWRT1BZGQgVG8gV1NETCBQYWdlCi1NU0dfSU5GT19XU0RMX0FEREVEX1RPX1dTRExfUEVSU1BFQ1RJVkU9SVdBQjAzNzZJICUxIHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gV1NETCBwYWdlLgotTVNHX0VSUk9SX1dTRExfTk9UX0FEREVEX1RPX1dTRExfUEVSU1BFQ1RJVkU9SVdBQjAzNzdFICUxIGNvdWxkIG5vdCBiZSBhZGRlZCB0byBXU0RMIHBhZ2UuCi0KLSMgQWRkIHRvIEZhdm9yaXRlcwotQUxUX0FERF9UT19GQVZPUklURVM9QWRkIFRvIEZhdm9yaXRlcwotTVNHX0lORk9fRkFWT1JJVEVfQURERUQ9SVdBQjAyNjNJICUxIHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gZmF2b3JpdGVzLgotTVNHX0VSUk9SX0ZBVk9SSVRFX05PVF9BRERFRD1JV0FCMDI2NEUgJTEgY291bGQgbm90IGJlIGFkZGVkIHRvIGZhdm9yaXRlcy4KLU1TR19FUlJPUl9GQVZPUklURV9BTFJFQURZX0VYSVNUUz1JV0FCMDMyNEUgJTEgYWxyZWFkeSBleGlzdHMgaW4gZmF2b3J0aWVzLgotTVNHX1FVRVNUSU9OX09WRVJXUklURV9GQVZPUklURVM9RmF2b3JpdGUgYWxyZWFkeSBleGlzdHMuICBEbyB5b3Ugd2lzaCB0byBvdmVyd3JpdGU/Ci0KLSMgUmVmcmVzaAotTVNHX0lORk9fTk9ERV9SRUZSRVNIRUQ9SVdBQjAyNjVJICUxIHJlZnJlc2hlZC4KLU1TR19RVUVTVElPTl9SRU1PVkVfTk9ERT0lMSBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LiBEbyB5b3Ugd2lzaCB0byBjbGVhciBpdD8KLQotIyBNYW5hZ2VSZWZlcmVuY2VkU2VydmljZXMKLUFMVF9NQU5BR0VfUkVGRVJFTkNFRF9TRVJWSUNFUz1NYW5hZ2UgUmVmZXJlbmNlZCBTZXJ2aWNlcwotRk9STV9MQUJFTF9NQU5BR0VfUkVGRVJFTkNFRF9TRVJWSUNFU19ERVNDPUFkZCBkaXNjb3ZlcmVkIG9yIHB1Ymxpc2hlZCBzZXJ2aWNlcyB0byB0aGUgbGlzdCBvZiByZWZlcmVuY2VkIHNlcnZpY2VzIGJ5IGNsaWNraW5nIHRoZSA8c3Ryb25nPkFkZCBTZXJ2aWNlczwvc3Ryb25nPiBidXR0b24uIFJlbW92ZSBzZWxlY3RlZCByZWZlcmVuY2VzIGJ5IGNsaWNraW5nIHRoZSA8c3Ryb25nPlJlbW92ZSBSZWZlcmVuY2VzPC9zdHJvbmc+IGJ1dHRvbi4gQXV0aGVudGljYXRpb24gbWF5IGJlIHJlcXVpcmVkIGZvciBjaGFuZ2VzLgotRk9STV9MQUJFTF9SRUZFUkVOQ0VEX1NFUlZJQ0VTPVJlZmVyZW5jZWQgU2VydmljZXMKLUZPUk1fQlVUVE9OX0FERF9TRVJWSUNFUz1BZGQgU2VydmljZXMKLUZPUk1fQlVUVE9OX1JFTU9WRV9SRUZFUkVOQ0VTPVJlbW92ZSBSZWZlcmVuY2VzCi1NU0dfRVJST1JfTk9fUkVGRVJFTkNFX1NFTEVDVEVEPUlXQUIwMjY2RSBTZWxlY3QgYXQgbGVhc3Qgb25lIHJlZmVyZW5jZWQgc2VydmljZSBiZWZvcmUgcHJvY2VlZGluZy4KLU1TR19FUlJPUl9OT19TRVJWSUNFUz1JV0FCMDI2N0UgR2V0IG9yIGZpbmQgYXQgbGVhc3Qgb25lIHNlcnZpY2UgYmVmb3JlIHByb2NlZWRpbmcuCi1NU0dfRVJST1JfU0VSVklDRV9OT1RfUkVGRVJFTkNFRD1JV0FCMDI2OEUgU2VydmljZSAlMSBjb3VsZCBub3QgYmUgcmVmZXJlbmNlZC4KLU1TR19FUlJPUl9SRUZFUkVOQ0VfTk9UX1JFTU9WRUQ9SVdBQjAyNjlFIFNlcnZpY2UgcmVmZXJlbmNlICUxIGNvdWxkIG5vdCBiZSByZW1vdmVkLgotTVNHX0lORk9fU0VSVklDRV9SRUZFUkVOQ0VEPUlXQUIwMjcwSSBTZXJ2aWNlICUxIHdhcyBzdWNjZXNzZnVsbHkgcmVmZXJlbmNlZC4KLU1TR19JTkZPX1NFUlZJQ0VfUkVGRVJFTkNFX1JFTU9WRUQ9SVdBQjAyNzFJIFNlcnZpY2UgcmVmZXJlbmNlICUxIHdhcyBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4KLQotIyBNYW5hZ2VQdWJsaXNoZXJBc3NlcnRpb25zCi1BTFRfTUFOQUdFX1BVQkxJU0hFUl9BU1NFUlRJT05TPU1hbmFnZSBQdWJsaXNoZXIgQXNzZXJ0aW9ucwotRk9STV9MQUJFTF9NQU5BR0VfUFVCTElTSEVSX0FTU0VSVElPTlNfREVTQz1BZGQgZGlzY292ZXJlZCBvciBwdWJsaXNoZWQgYnVzaW5lc3NlcyB0byB0aGUgbGlzdCBvZiBwdWJsaXNoZXIgYXNzZXJ0aW9ucyBieSBjbGlja2luZyA8c3Ryb25nPkFkZCBBc3NlcnRpb25zPC9zdHJvbmc+LiBSZW1vdmUgc2VsZWN0ZWQgYXNzZXJ0aW9ucyBieSBjbGlja2luZyA8c3Ryb25nPlJlbW92ZSBBc3NlcnRpb25zPC9zdHJvbmc+LiBDb21wbGV0ZSBzZWxlY3RlZCBhc3NlcnRpb25zIGJ5IGNsaWNraW5nIDxzdHJvbmc+Q29tcGxldGUgQXNzZXJ0aW9uczwvc3Ryb25nPi4gQ2xpY2sgPHN0cm9uZz5SZWZyZXNoIEFzc2VydGlvbnM8L3N0cm9uZz4gdG8gcmVmcmVzaCB0aGUgbGlzdCBvZiBhc3NlcnRpb25zLgotRk9STV9MQUJFTF9JTkNPTVBMRVRFX0FTU0VSVElPTlNfVklTSUJJTElUWV9ERVNDPVBsZWFzZSBub3RlIHRoYXQgaW5jb21wbGV0ZSBwdWJsaXNoZXIgYXNzZXJ0aW9ucyBhcmUgdmlzaWJsZSBvbmx5IHRvIHRoZSBvd25lciBvZiB0aGUgYnVzaW5lc3MuCi1GT1JNX0xBQkVMX0JVU0lORVNTRVM9QnVzaW5lc3NlcwotRk9STV9CVVRUT05fU0hPV19BTExfUFVCTElTSEVSX0FTU0VSVElPTlM9UmVmcmVzaCBBc3NlcnRpb25zCi1GT1JNX0JVVFRPTl9DT01QTEVURV9QVUJMSVNIRVJfQVNTRVJUSU9OUz1Db21wbGV0ZSBBc3NlcnRpb25zCi1GT1JNX0JVVFRPTl9BRERfUFVCTElTSEVSX0FTU0VSVElPTlM9QWRkIEFzc2VydGlvbnMKLUZPUk1fQlVUVE9OX1JFTU9WRV9QVUJMSVNIRVJfQVNTRVJUSU9OUz1SZW1vdmUgQXNzZXJ0aW9ucwotTVNHX0lORk9fUFVCTElTSEVSX0FTU0VSVElPTlNfUkVGUkVTSEVEPUlXQUIwMzI1SSBQdWJsaXNoZXIgQXNzZXJ0aW9ucyBhcmUgcmVmcmVzaGVkLgotTVNHX0VSUk9SX05PX0lOQ09NUExFVEVfQVNTRVJUSU9OX1NFTEVDVEVEPUlXQUIwMzI2RSBTZWxlY3QgYXQgbGVhc3Qgb25lIGluY29tcGxldGUgcHVibGlzaGVyIGFzc2VydGlvbi4KLU1TR19FUlJPUl9OT1RfT1dORURfQlVTSU5FU1M9SVdBQjAzMjdFIFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gYSBidXNpbmVzcyBvd25lZCBieSBhbm90aGVyIHBhcnR5LgotCi0jIEdldEJ1c2luZXNzZXMKLUFMVF9HRVRfQlVTSU5FU1M9R2V0IEJ1c2luZXNzCi1BTFRfR0VUX0JVU0lORVNTRVM9R2V0IEJ1c2luZXNzZXMKLU5PREVfTkFNRV9TRVJWSUNFX0JVU0lORVNTPUJ1c2luZXNzIGZvciBzZXJ2aWNlICUxCi1OT0RFX05BTUVfU0lfQlVTSU5FU1NFUz1CdXNpbmVzc2VzIGZvciBzZXJ2aWNlIGludGVyZmFjZSAlMQotTVNHX1FVRVNUSU9OX1JFTU9WRV9TRVJWSUNFX05PREU9VGhlIHNlcnZpY2UgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSByZWdpc3RyeS4gRG8geW91IHdpc2ggdG8gcmVtb3ZlIHRoaXMgbm9kZT8KLQotIyBHZXRTZXJ2aWNlSW50ZXJmYWNlcwotQUxUX0dFVF9TRVJWSUNFX0lOVEVSRkFDRVM9R2V0IFNlcnZpY2UgSW50ZXJmYWNlcwotTk9ERV9OQU1FX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTPVNlcnZpY2UgaW50ZXJmYWNlcyBmb3Igc2VydmljZSAlMQotTVNHX1FVRVNUSU9OX0dFVF9TSV9SRU1PVkVfU0VSVklDRV9OT0RFPVRoZSBzZXJ2aWNlIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgcmVnaXN0cnkuIERvIHlvdSB3aXNoIHRvIHJlbW92ZSB0aGlzIG5vZGU/Ci0KLSMgR2V0U2VydmljZXMKLUFMVF9HRVRfU0VSVklDRVM9R2V0IFNlcnZpY2VzCi1OT0RFX05BTUVfU0lfU0VSVklDRVM9U2VydmljZXMgZm9yIHNlcnZpY2UgaW50ZXJmYWNlICUxCi1OT0RFX05BTUVfQlVTSU5FU1NfU0VSVklDRVM9U2VydmljZXMgZm9yIGJ1c2luZXNzICUxCi1NU0dfUVVFU1RJT05fUkVNT1ZFX1NJX05PREU9VGhlIHNlcnZpY2UgaW50ZXJmYWNlIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgcmVnaXN0cnkuIERvIHlvdSB3aXNoIHRvIHJlbW92ZSB0aGlzIG5vZGU/Ci1NU0dfUVVFU1RJT05fUkVNT1ZFX0JVU0lORVNTX05PREU9VGhlIGJ1c2luZXNzIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgcmVnaXN0cnkuIERvIHlvdSB3aXNoIHRvIHJlbW92ZSB0aGlzIG5vZGU/Ci0KLSMgUmVmcmVzaFVERElOb2Rlc0FjdGlvbgotTVNHX0VSUk9SX05PREVfREFUQV9WQUxJREFUSU9OX0ZBSUxFRD1JV0FCMDI3MkUgJTEgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSByZWdpc3RyeS4KLQotIyBTdW1tYXJpZXMKLUFMVF9TVU1NQVJZX1FVRVJJRVM9U3VtbWFyeSBvZiBRdWVyaWVzCi1BTFRfU1VNTUFSWV9CVVNJTkVTU0VTPVN1bW1hcnkgb2YgQnVzaW5lc3NlcwotQUxUX1NVTU1BUllfU0VSVklDRVM9U3VtbWFyeSBvZiBTZXJ2aWNlcwotQUxUX1NVTU1BUllfU0VSVklDRV9JTlRFUkZBQ0VTPVN1bW1hcnkgb2YgU2VydmljZSBJbnRlcmZhY2VzCi1GT1JNX0xBQkVMX1FVRVJJRVM9UXVlcmllcwotCi0jIFNlbGVjdFN1YlF1ZXJ5SXRlbUFjdGlvbgotTVNHX1FVRVNUSU9OX0lURU1fVkFMSURBVElPTl9GQUlMRUQ9JTEgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSByZWdpc3RyeS4gRG8geW91IHdpc2ggdG8gcmVtb3ZlIGl0PwotCi0jIEZyYW1lIHRpdGxlcwotRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRBSU5FUj1OYXZpZ2F0b3IgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9OQVZJR0FUT1JfVE9PTEJBUj1OYXZpZ2F0b3IgVG9vbGJhcgotRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRFTlQ9TmF2aWdhdG9yIENvbnRlbnQKLUZSQU1FX1RJVExFX0FDVElPTlNfQ09OVEFJTkVSPUFjdGlvbnMgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9QUk9QRVJUSUVTX0NPTlRBSU5FUj1Qcm9wZXJ0aWVzIENvbnRhaW5lcgotRlJBTUVfVElUTEVfUFJPUEVSVElFU19UT09MQkFSPVByb3BlcnRpZXMgVG9vbGJhcgotRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05URU5UPVByb3BlcnRpZXMgQ29udGVudAotRlJBTUVfVElUTEVfU1RBVFVTX0NPTlRBSU5FUj1TdGF0dXMgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9TVEFUVVNfVE9PTEJBUj1TdGF0dXMgVG9vbGJhcgotRlJBTUVfVElUTEVfU1RBVFVTX0NPTlRFTlQ9U3RhdHVzIENvbnRlbnQKLUZSQU1FX1RJVExFX1VERElfUEVSU1BFQ1RJVkVfQ09OVEVOVD1VRERJIFBhZ2UgQ29udGVudAotRlJBTUVfVElUTEVfQ0FURUdPUklFU19XT1JLQVJFQT1DYXRlZ29yaWVzIFdvcmsgQXJlYQotRlJBTUVfVElUTEVfQ0FURUdPUklFU19UT09MQkFSPUNhdGVnb3JpZXMgVG9vbGJhcgotRlJBTUVfVElUTEVfQ0FURUdPUklFU19DT05URU5UPUNhdGVnb3JpZXMgQ29udGVudAotRlJBTUVfVElUTEVfV1NETF9UT09MQkFSPVdTREwgQnJvd3NlciBUb29sYmFyCi1GUkFNRV9USVRMRV9XU0RMX0NPTlRFTlQ9V1NETCBCcm93c2VyIENvbnRlbnQKLQotIyBGb3JtIHRpdGxlcwotRk9STV9USVRMRV9CVVNJTkVTU19ERVRBSUxTPUJ1c2luZXNzIERldGFpbHMgRm9ybQotRk9STV9USVRMRV9CVVNJTkVTU19QVUJMSVNIX1NFUlZJQ0U9QnVzaW5lc3MgUHVibGlzaCBTZXJ2aWNlIEZvcm0KLUZPUk1fVElUTEVfR0VUX0ZPUk09U2VsZWN0IGZyb20gRGlzY292ZXJlZCBhbmQgUHVibGlzaGVkIE9iamVjdHMgRm9ybQotRk9STV9USVRMRV9JVEVNU19TVU1NQVJZPVN1bW1hcnkgb2YgSXRlbXMgRm9ybQotRk9STV9USVRMRV9NQU5BR0VfUFVCTElTSEVSX0FTU0VSVElPTlM9TWFuYWdlIFB1Ymxpc2hlciBBc3NlcnRpb25zIEZvcm0KLUZPUk1fVElUTEVfTUFOQUdFX1JFRkVSRU5DRURfU0VSVklDRVM9TWFuYWdlIFJlZmVyZW5jZWQgU2VydmljZXMgRm9ybQotRk9STV9USVRMRV9PUEVOX1JFR0lTVFJZPU9wZW4gUmVnaXN0cnkgRm9ybQotRk9STV9USVRMRV9SRUdJU1RSWV9ERVRBSUxTPVJlZ2lzdHJ5IERldGFpbHMgRm9ybQotRk9STV9USVRMRV9SRUdJU1RSWV9QVUJMSVNIPVJlZ2lzdHJ5IFB1Ymxpc2ggRm9ybQotRk9STV9USVRMRV9SRUdJU1RSWV9GSU5EPVJlZ2lzdHJ5IEZpbmQgRm9ybQotRk9STV9USVRMRV9SRVNVTFRTPVJlc3VsdHMgRm9ybQotRk9STV9USVRMRV9TRVJWSUNFX0RFVEFJTFM9U2VydmljZSBEZXRhaWxzIEZvcm0KLUZPUk1fVElUTEVfU0VSVklDRV9JTlRFUkZBQ0VfREVUQUlMUz1TZXJ2aWNlIEludGVyZmFjZSBEZXRhaWxzIEZvcm0KLUZPUk1fVElUTEVfVU5QVUJMSVNIPVVucHVibGlzaCBGb3JtCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyLXByb3BlcnRpZXMvd3NkbC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci1wcm9wZXJ0aWVzL3dzZGwucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEyMTM5Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyLXByb3BlcnRpZXMvd3NkbC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotIyAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotIyAyMDA3MDUwNyAgIDE4NTYwMCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFIHN0YXR1cyBwYW5lJ3MgImhlYWRlciIgdHdpc3RpZSBzaG91bGQgbm90IGFwcGVhciBmb3IgcmVzcG9uc2VzIHdpdGhvdXQgaGVhZGVycwotIyAyMDA4MDgyNSAgIDE1ODM2NiBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotdGl0bGU9V1NETAotCi0jIE5vZGVzCi1OT0RFX05BTUVfV1NETF9NQUlOPVdTREwgTWFpbgotCi0jIEZyYW1lIHRpdGxlcwotRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRBSU5FUj1OYXZpZ2F0b3IgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9OQVZJR0FUT1JfVE9PTEJBUj1OYXZpZ2F0b3IgVG9vbGJhcgotRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRFTlQ9TmF2aWdhdG9yIENvbnRlbnQKLUZSQU1FX1RJVExFX0FDVElPTlNfQ09OVEFJTkVSPUFjdGlvbnMgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9QUk9QRVJUSUVTX0NPTlRBSU5FUj1Qcm9wZXJ0aWVzIENvbnRhaW5lcgotRlJBTUVfVElUTEVfUFJPUEVSVElFU19UT09MQkFSPVByb3BlcnRpZXMgVG9vbGJhcgotRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05URU5UPVByb3BlcnRpZXMgQ29udGVudAotRlJBTUVfVElUTEVfU1RBVFVTX0NPTlRBSU5FUj1TdGF0dXMgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9TVEFUVVNfVE9PTEJBUj1TdGF0dXMgVG9vbGJhcgotRlJBTUVfVElUTEVfU1RBVFVTX0NPTlRFTlQ9U3RhdHVzIENvbnRlbnQKLUZSQU1FX1RJVExFX1dTRExfUEVSU1BFQ1RJVkVfQ09OVEVOVD1XU0RMIFBhZ2UgQ29udGVudAotRlJBTUVfVElUTEVfWFNEX0lORk9STUFUSU9OX1RPT0xCQVI9WFNEIEluZm9ybWF0aW9uIERpYWxvZyBUb29sYmFyCi1GUkFNRV9USVRMRV9YU0RfSU5GT1JNQVRJT05fQ09OVEVOVD1YU0QgSW5mb3JtYXRpb24gRGlhbG9nIENvbnRlbnQKLQotIyBPcGVuV1NETEFjdGlvbgotQUxUX09QRU5fV1NETD1PcGVuIFdTREwKLU1TR19FUlJPUl9JTlZBTElEX1dTRExfVVJMPUlXQUIwMzc4RSBFbnRlciBhIHZhbGlkIFdTREwgVVJMLgotTVNHX0VSUk9SX09QRU5fV1NETD1JV0FCMDM3OUUgVW5hYmxlIHRvIG9wZW4gJTEuCi1NU0dfRVJST1JfWFNEX1ZBTElEQVRJT049SVdBQjAzODBFIEVycm9ycyB3ZXJlIGVuY291bnRlcmVkIHdoaWxlIHZhbGlkYXRpbmcgWE1MIHNjaGVtYXMuCi1NU0dfSU5GT19PUEVOX1dTRExfU1VDQ0VTU0ZVTD1JV0FCMDM4MUkgJTEgd2FzIHN1Y2Nlc3NmdWxseSBvcGVuZWQuCi0KLSMgV1NETCBFbGVtZW50IGRldGFpbHMKLUFMVF9XU0RMX0RFVEFJTFM9V1NETCBEZXRhaWxzCi1GT1JNX0xBQkVMX1dTRExfREVUQUlMU19ERVNDPVNob3duIGJlbG93IGFyZSB0aGUgZGV0YWlscyBmb3IgdGhpcyBXU0RMIGRvY3VtZW50LiBDbGljayBvbiBhIHNlcnZpY2Ugb3IgYmluZGluZyB0byBzZWUgaXRzIGRldGFpbHMuCi0KLSMgV1NETCBTZXJ2aWNlIEVsZW1lbnQgZGV0YWlscwotQUxUX1dTRExfU0VSVklDRV9ERVRBSUxTPVdTREwgU2VydmljZSBEZXRhaWxzCi1GT1JNX0xBQkVMX1NFUlZJQ0VfREVUQUlMU19ERVNDPVNob3duIGJlbG93IGFyZSB0aGUgZGV0YWlscyBmb3IgdGhpcyAmbHQ7c2VydmljZSZndDsgZWxlbWVudC4gQ2xpY2sgb24gYSBiaW5kaW5nIHRvIHNlZSBpdHMgb3BlcmF0aW9ucy4KLQotQUxUX05JTD1uaWw/Ci0KLSMgV1NETCBCaW5kaW5nIEVsZW1lbnQgZGV0YWlscwotQUxUX1dTRExfQklORElOR19ERVRBSUxTPVdTREwgQmluZGluZyBEZXRhaWxzCi1GT1JNX0xBQkVMX0JJTkRJTkdfREVUQUlMU19ERVNDPVNob3duIGJlbG93IGFyZSB0aGUgZGV0YWlscyBmb3IgdGhpcyA8c3Ryb25nPiUxPC9zdHJvbmc+ICAmbHQ7YmluZGluZyZndDsgZWxlbWVudC4gQ2xpY2sgb24gYW4gb3BlcmF0aW9uIHRvIGZpbGwgaW4gaXRzIHBhcmFtZXRlcnMgYW5kIGludm9rZSBpdCBvciBzcGVjaWZ5IGFkZGl0aW9uYWwgZW5kcG9pbnRzLgotCi0jIEludm9rZVdTRExPcGVyYXRpb25BY3Rpb24KLUFMVF9JTlZPS0VfV1NETF9PUEVSQVRJT049SW52b2tlIGEgV1NETCBPcGVyYXRpb24KLU1TR19FUlJPUl9VTkFCTEVfVE9fQ09OTkVDVD1JV0FCMDM4MkUgVW5hYmxlIHRvIGNvbm5lY3QgdG8gJTEKLU1TR19FUlJPUl9WQUxJREFUSU5HX1BBUkFNRVRFUj1JV0FCMDM4M0UgRXJyb3IgdmFsaWRhdGluZyAlMQotCi0jIFdTRExBZGRUb0Zhdm9yaXRlc0FjdGlvbgotQUxUX0FERF9XU0RMX1RPX0ZBVk9SSVRFUz1BZGQgV1NETCBUbyBGYXZvcml0ZXMKLU1TR19FUlJPUl9GQVZPUklURVNfQUxSRUFEWV9FWElTVFM9SVdBQjAzODRFICUxIGFscmVhZHkgZXhpc3RzIGluIGZhdm9yaXRlcy4KLU1TR19FUlJPUl9BRERfVE9fRkFWT1JJVEVTPUlXQUIwMzg1RSBVbmFibGUgdG8gYWRkICUxIHRvIGZhdm9yaXRlcy4KLU1TR19JTkZPX0FERF9UT19GQVZPUklURVNfU1VDQ0VTU0ZVTD1JV0FCMDM4NkkgJTEgaXMgYWRkZWQgdG8gZmF2b3JpdGVzLgotTVNHX1FVRVNUSU9OX09WRVJXUklURV9GQVZPUklURVM9RmF2b3JpdGUgYWxyZWFkeSBleGlzdHMuICBEbyB5b3Ugd2lzaCB0byBvdmVyd3JpdGU/Ci0KLSMgUmVmcmVzaFdTRExBY3Rpb24KLU1TR19JTkZPX1JFRlJFU0hfV1NETF9TVUNDRVNTRlVMPUlXQUIwMzg3SSAlMSBpcyByZWZyZXNoZWQuCi1NU0dfUVVFU1RJT05fUkVNT1ZFX1dTRExfTk9ERT0lMSBpcyBubyBsb25nZXIgcmVzb2x2YWJsZS4gIERvIHlvdSB3aXNoIHRvIGNsZWFyIGl0PwotCi0jIFVwZGF0ZVdTRExCaW5kaW5nQWN0aW9uCi1NU0dfSU5GT19VUERBVEVfV1NETF9CSU5ESU5HX1NVQ0NFU1NGVUw9SVdBQjAzODhJIEVuZHBvaW50cyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLgotCi0jIEZvcm0gdGl0bGVzCi1GT1JNX1RJVExFX09QRU5fV1NETD1PcGVuIFdTREwgRm9ybQotRk9STV9USVRMRV9XU0RMX0RFVEFJTFM9V1NETCBEZXRhaWxzIEZvcm0KLUZPUk1fVElUTEVfV1NETF9TRVJWSUNFX0RFVEFJTFM9V1NETCBTZXJ2aWNlIERldGFpbHMgRm9ybQotRk9STV9USVRMRV9XU0RMX0JJTkRJTkdfREVUQUlMUz1XU0RMIEJpbmRpbmcgRGV0YWlscyBGb3JtCi1GT1JNX1RJVExFX0lOVk9LRV9XU0RMX09QRVJBVElPTj1XU0RMIE9wZXJhdGlvbiBGb3JtCi0KLSMgRm9ybSBMYWJlbHMKLUZPUk1fTEFCRUxfT1BFTl9XU0RMX0RFU0M9RW50ZXIgdGhlIFVSTCBvZiBhIFdTREwgZG9jdW1lbnQgYW5kIGNsaWNrIDxzdHJvbmc+R288L3N0cm9uZz4gdG8gZXhwbG9yZS4KLUZPUk1fTEFCRUxfU0VSVklDRVM9U2VydmljZXMKLUZPUk1fTEFCRUxfQklORElOR1M9QmluZGluZ3MKLUZPUk1fTEFCRUxfT1BFUkFUSU9OUz1PcGVyYXRpb25zCi1GT1JNX0xBQkVMX0JJTkRJTkdfVFlQRT1UeXBlCi1GT1JNX0xBQkVMX0JJTkRJTkdfVFlQRV9VTlNVUFBPUlRFRD1VbnN1cHBvcnRlZAotRk9STV9MQUJFTF9CSU5ESU5HX1RZUEVfU09BUD1TT0FQCi1GT1JNX0xBQkVMX0JJTkRJTkdfVFlQRV9IVFRQX0dFVD1IVFRQIEdFVAotRk9STV9MQUJFTF9CSU5ESU5HX1RZUEVfSFRUUF9QT1NUPUhUVFAgUE9TVAotRk9STV9MQUJFTF9OQU1FPU5hbWUKLUZPUk1fTEFCRUxfRE9DVU1FTlRBVElPTj1Eb2N1bWVudGF0aW9uCi1GT1JNX0xBQkVMX0VORFBPSU5UPUVuZHBvaW50Ci1GT1JNX0xBQkVMX0lOVk9LRV9XU0RMX09QRVJBVElPTl9ERVNDPUVudGVyIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgV1NETCBvcGVyYXRpb24gIiUxIiBhbmQgY2xpY2sgPHN0cm9uZz5HbzwvU3Ryb25nPiB0byBpbnZva2UuCi1GT1JNX0xBQkVMX0lOVk9LRV9XU0RMX09QRVJBVElPTl9ERVNDX05PX0lOUFVUPVRoZXJlIGFyZSBubyBpbnB1dCBwYXJhbWV0ZXJzIGZvciB0aGUgV1NETCBvcGVyYXRpb24gIiUxIi4gQ2xpY2sgPHN0cm9uZz5HbzwvU3Ryb25nPiB0byBpbnZva2UuCi1GT1JNX0xJTktfQUREPUFkZAotRk9STV9MSU5LX1JFTU9WRT1SZW1vdmUKLUZPUk1fTEFCRUxfVkFMVUVTPVZhbHVlcwotRk9STV9MQUJFTF9FTkFCTEVfRElTQUJMRV9HUk9VUD1FbmFibGUvRGlzYWJsZSBncm91cAotRk9STV9MQUJFTF9VTklPTl9UWVBFPVVuaW9uIHR5cGVzCi1GT1JNX0xBQkVMX0xBTkdVQUdFPUxhbmd1YWdlCi1GT1JNX0xBQkVMX1hTRF9BUFBMSUNBVElPTl9JTkZPUk1BVElPTj1BcHBsaWNhdGlvbiBJbmZvcm1hdGlvbgotRk9STV9MQUJFTF9YU0RfRE9DVU1FTlRBVElPTj1Eb2N1bWVudGF0aW9uCi1GT1JNX0xBQkVMX1NPQVBfUkVRVUVTVF9FTlZFTE9QRT1TT0FQIFJlcXVlc3QgRW52ZWxvcGU6Ci1GT1JNX0xBQkVMX1NPQVBfUkVTUE9OU0VfRU5WRUxPUEU9U09BUCBSZXNwb25zZSBFbnZlbG9wZToKLUZPUk1fTEFCRUxfR1JPVVBfQUxMX09SREVSSU5HX01PVkVfVVA9TW92ZSBlbGVtZW50IHVwCi1GT1JNX0xBQkVMX0dST1VQX0FMTF9PUkRFUklOR19NT1ZFX0RPV049TW92ZSBlbGVtZW50IGRvd24KLUZPUk1fTEFCRUxfQkFTRV9UWVBFPUJhc2UgdHlwZQotRk9STV9MQUJFTF9VTkJPVU5ERUQ9VW5ib3VuZGVkCi1GT1JNX0xBQkVMX0xFTkdUSD1MZW5ndGgKLUZPUk1fTEFCRUxfTEVOR1RIX1ZBTFVFPVslMS4uJTJdCi1GT1JNX0xBQkVMX1BBVFRFUk49UGF0dGVybgotRk9STV9MQUJFTF9XSElURVNQQUNFPVdoaXRlc3BhY2UKLUZPUk1fTEFCRUxfUkFOR0VfT0ZfVkFMVUVTPVJhbmdlIG9mIHZhbHVlcwotRk9STV9MQUJFTF9NSU5fRVhDTFVTSVZFPSglMS4uCi1GT1JNX0xBQkVMX01JTl9JTkNMVVNJVkU9WyUxLi4KLUZPUk1fTEFCRUxfTUFYX0VYQ0xVU0lWRT0lMSkKLUZPUk1fTEFCRUxfTUFYX0lOQ0xVU0lWRT0lMV0KLUZPUk1fTEFCRUxfVE9UQUxfRElHSVRTPVRvdGFsIGRpZ2l0cwotRk9STV9MQUJFTF9GUkFDVElPTl9ESUdJVFM9RnJhY3Rpb24gZGlnaXRzCi1GT1JNX0xBQkVMX09DQ1VSQU5DRT1PY2N1cmFuY2Ugb2YKLUZPUk1fTEFCRUxfVU5JT05fTUVNQkVSUz1VbmlvbiBNZW1iZXJzCi1GT1JNX0xBQkVMX0xJU1RfSVRFTVM9TGlzdCBpdGVtcwotRk9STV9MQUJFTF9FTEVNRU5UUz1FbGVtZW50cwotRk9STV9MQUJFTF9TT0FQX0VOQ19BUlJBWVM9U09BUCBBcnJheXMKLUZPUk1fTEFCRUxfQ09OVEVOVD1Db250ZW50Ci1GT1JNX0xBQkVMX0FUT01JQ19OQU1FX1RZUEU9JTEgKCUyKToKLUZPUk1fTEFCRUxfTlVMTD1udWxsCi1GT1JNX0xBQkVMX0dST1VQX05VTUJFUj1Hcm91cCAlMQotRk9STV9MQUJFTF9DSE9JQ0VTPUNob2ljZXMKLUZPUk1fTEFCRUxfTk9USElOR19UT19ESVNQTEFZX0lOX0ZPUk1fVklFVz1UaGVyZSBpcyBub3RoaW5nIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZm9ybSB2aWV3LiAgUGxlYXNlIHN3aXRjaCB0byB0aGUgc291cmNlIHZpZXcgZm9yIHRoZSBTT0FQIHJlcXVlc3QgYW5kIHJlc3BvbnNlLgotRk9STV9MQUJFTF9TT0FQX1JFU1BPTlNFX0ZBSUxFRF9WQUxJREFUSU9OX0lOX0ZPUk1fVklFVz1UaGUgU09BUCByZXNwb25zZSBmYWlsZWQgc2NoZW1hIHZhbGlkYXRpb24uICBQbGVhc2Ugc3dpdGNoIHRvIHRoZSBzb3VyY2UgdmlldyBmb3IgdGhlIFNPQVAgcmVzcG9uc2UgaW4gWE1MIGZvcm1hdC4KLUZPUk1fTEFCRUxfQ0FOTk9UX0RJU1BMQVlfSEVBREVSX0lOX0ZPUk1fVklFVz1UaGUgY29udGVudCBvZiB0aGUgaGVhZGVyIGNhbm5vdCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGZvcm0gdmlldy4gIFBsZWFzZSBzd2l0Y2ggdG8gdGhlIHNvdXJjZSB2aWV3IHRvIGV4YW1pbmUgdGhlIHJhdyBjb250ZW50LgotRk9STV9MQUJFTF9DQU5OT1RfRElTUExBWV9CT0RZX0lOX0ZPUk1fVklFVz1UaGUgY29udGVudCBvZiB0aGUgYm9keSBjYW5ub3QgYmUgZGlzcGxheWVkIGluIHRoZSBmb3JtIHZpZXcuICBQbGVhc2Ugc3dpdGNoIHRvIHRoZSBzb3VyY2UgdmlldyB0byBleGFtaW5lIHRoZSByYXcgY29udGVudC4KLUZPUk1fTEFCRUxfQk9EWV9JU19FTVBUWT1UaGUgYm9keSBpcyBlbXB0eS4KLUZPUk1fTEFCRUxfRU5EX1BPSU5UUz1FbmRwb2ludHMKLUZPUk1fTEFCRUxfSEVBREVSPUhlYWRlcgotRk9STV9MQUJFTF9CT0RZPUJvZHkKLUZPUk1fTEFCRUxfTVVTVFVOREVSU1RBTkQ9bXVzdFVuZGVyc3RhbmQKLUZPUk1fTEFCRUxfQUNUT1I9YWN0b3IKLQotIyBTb3VyY2UvRm9ybSB2aWV3cwotRk9STV9MSU5LX0ZPUk09Rm9ybQotQUxUX1NXSVRDSF9UT19GT1JNX1ZJRVc9U3dpdGNoIHRvIGZvcm0gdmlldwotRk9STV9MSU5LX1NPVVJDRT1Tb3VyY2UKLUFMVF9TV0lUQ0hfVE9fU09VUkNFX1ZJRVc9U3dpdGNoIHRvIHNvdXJjZSB2aWV3Ci1GT1JNX0xBQkVMX0ZSQUdNRU5UX1NPQVBfVklFV19DT05URU5UPVNvYXAgQm9keToKLUJVVFRPTl9MQUJFTF9MT0FEPUxvYWQKLUJVVFRPTl9MQUJFTF9TQVZFX0FTPVNhdmUgQXMuLi4KLU1TR19RVUVTVElPTl9TWU5DX1ZJRVdTPUZvcm1hdCBvZiB0aGUgc291cmNlIGNvbnRlbnQgbWF5IGJlIGFsdGVyZWQgYXMgYSByZXN1bHQgb2Ygc3dpdGNoaW5nIHRvIHRoZSBmb3JtIHZpZXcuICBEbyB5b3Ugd2lzaCB0byBwcm9jZXNzPwotTVNHX1FVRVNUSU9OX1NZTkNfVklFV1NfREVTUElURV9JTlZBTElEX1NPVVJDRV9DT05URU5UPUNvbnRlbnQgb2YgdGhlIHNvdXJjZSB2aWV3IGZhaWxlZCBzY2hlbWEgdmFsaWRhdGlvbi4gIFN5bmNocm9uaXplIGFueXdheXM/ICAoQ29udGVudCBvZiB0aGUgc291cmNlIHZpZXcgbWF5IGJlIG1vZGlmaWVkKQotCi0jIEZvcm0gY29udHJvbCB0aXRsZXMKLUZPUk1fQ09OVFJPTF9USVRMRV9FTkFCTEVfRElTQUJMRV9HUk9VUD1FbmFibGUvRGlzYWJsZSBncm91cAotRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9FTEVNRU5UX0lOX0dST1VQPVNlbGVjdCBlbGVtZW50IGluIGdyb3VwCi1GT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1VOSU9OX1RZUEU9U2VsZWN0IHVuaW9uIHR5cGUKLUZPUk1fQ09OVFJPTF9USVRMRV9TT0FQX0ZJTEU9U09BUCBkYXRhIGZpbGUKLQotIyBYU0QgSW5mb3JtYXRpb24gRGlhbG9nCi1USVRMRV9YU0RfSU5GT1JNQVRJT05fRElBTE9HPVhTRCBJbmZvcm1hdGlvbiBEaWFsb2cKLQotIyBFcnJvciBtZXNzYWdlcwotTVNHX0VSUk9SX05PVEhJTkdfU0VMRUNURUQ9SVdBQjAzODlFIFNlbGVjdCBhdCBsZWFzdCBvbmUgaXRlbS4KLU1TR19FUlJPUl9NQVhfT0NDVVJTX1ZJT0xBVElPTj1JV0FCMDM5MEUgTWF4aW11bSBvY2N1cmFuY2UgaXMgcmVhY2hlZC4KLU1TR19FUlJPUl9NSU5fT0NDVVJTX1ZJT0xBVElPTj1JV0FCMDM5MUUgTWluaW11bSBvY2N1cmFuY2UgaXMgcmVhY2hlZC4KLU1TR19FUlJPUl9DQU5OT1RfTU9WRV9GSVJTVF9FTEVNRU5UX1VQPUlXQUIwMzkyRSBTZWxlY3RlZCBlbGVtZW50IGlzIGFscmVhZHkgdGhlIGZpcnN0IGluIHRoZSBncm91cC4KLU1TR19FUlJPUl9DQU5OT1RfTU9WRV9MQVNUX0VMRU1FTlRfRE9XTj1JV0FCMDM5M0UgU2VsZWN0ZWQgZWxlbWVudCBpcyBhbHJlYWR5IHRoZSBsYXN0IGluIHRoZSBncm91cC4KLQotIyBTT0FQIHRyYW5zcG9ydCBtZXNzYWdlcwotTVNHX0VSUk9SX05PX1NVSVRBQkxFX1RSQU5TUE9SVD1GYWlsZWQgdG8gaW52b2tlIG9wZXJhdGlvbiwgYSBzdWl0YWJsZSB0cmFuc3BvcnQgZXh0ZW5zaW9uIHdhcyBub3QgZm91bmQuCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyLXByb3BlcnRpZXMvd3NpbC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci1wcm9wZXJ0aWVzL3dzaWwucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc5OGZkNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyLXByb3BlcnRpZXMvd3NpbC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotdGl0bGU9V1NJTAotCi0jIE5hdmlnYXRvcgotV1NJTF9NQUlOX05PREU9V1NJTCBNYWluCi0KLSMgRm9ybXMKLUZPUk1fTEFCRUxfVVJMPVVSTAotRk9STV9MQUJFTF9JVEVNX05VTUJFUj1JdGVtICMKLUZPUk1fTEFCRUxfVURESV9CVVNJTkVTU19OQU1FPVVEREkgQnVzaW5lc3MgTmFtZQotRk9STV9MQUJFTF9VRERJX1NFUlZJQ0VfTkFNRT1VRERJIFNlcnZpY2UgTmFtZQotRk9STV9MQUJFTF9MQU5HVUFHRT1MYW5ndWFnZQotRk9STV9MQUJFTF9BQlNUUkFDVD1BYnN0cmFjdAotRk9STV9MQUJFTF9OQU1FPU5hbWUKLUZPUk1fTEFCRUxfV1NETF9CSU5ESU5HUz1XU0RMIEJpbmRpbmdzCi1GT1JNX0xBQkVMX05BTUVTUEFDRV9VUkk9TmFtZXNwYWNlIFVSSQotRk9STV9MQUJFTF9MT0NBTF9OQU1FPUxvY2FsIE5hbWUKLUZPUk1fTEFCRUxfSU5RVUlSWV9BUEk9SW5xdWlyeSBBUEkKLUZPUk1fTEFCRUxfU0VSVklDRV9LRVk9U2VydmljZSBLZXkKLUZPUk1fTEFCRUxfQlVTSU5FU1NfS0VZPUJ1c2luZXNzIEtleQotRk9STV9MQUJFTF9ESVNDT1ZFUllfVVJMPURpc2NvdmVyeSBVUkwKLUZPUk1fTEFCRUxfV1NJTD1XU0lMIERldGFpbHMKLUZPUk1fTEFCRUxfV1NJTF9MSU5LUz1XU0lMIExpbmtzCi1GT1JNX0xBQkVMX1dTRExfU0VSVklDRT1XU0RMIFNlcnZpY2VzCi1GT1JNX0xBQkVMX1VERElfU0VSVklDRT1VRERJIFNlcnZpY2VzCi1GT1JNX0xBQkVMX1VERElfQlVTSU5FU1M9VURESSBCdXNpbmVzc2VzCi1GT1JNX0xBQkVMX0FERF9UT19OQVZJR0FUT1I9QWRkIFRvIE5hdmlnYXRvcgotRk9STV9MQUJFTF9BRERfVE9fRkFWT1JJVEVTPUFkZCBUbyBGYXZvcml0ZXMKLUZPUk1fTEFCRUxfQUREX1RPX1VERElfUEVSU1BFQ1RJVkU9QWRkIFRvIFVEREkgUGFnZQotRk9STV9MQUJFTF9BRERfVE9fV1NETF9QRVJTUEVDVElWRT1BZGQgVG8gV1NETCBQYWdlCi1GT1JNX0xBQkVMX1JFRlJFU0g9UmVmcmVzaAotRk9STV9MQUJFTF9OQT1OL0EKLUZPUk1fTEFCRUxfVU5BVkFJTEFCTEVfVURESV9TRVJWSUNFPVNlcnZpY2UgVW5hdmFpbGFibGU6Ci1GT1JNX0xBQkVMX1VOQVZBSUxBQkxFX1VERElfQlVTSU5FU1M9QnVzaW5lc3MgVW5hdmFpbGFibGU6Ci1GT1JNX0xBQkVMX0NIT09TRV9XU0lMX0lOU1BFQ1RJT05fVFlQRT1DaG9vc2UgdGhlIHR5cGUgb2Ygb2JqZWN0cyB0byBpbnNwZWN0OgotTVNHX0VSUk9SX05PVEhJTkdfU0VMRUNURUQ9SVdBQjAzMjhFIFNlbGVjdCBhdCBsZWFzdCBvbmUgaXRlbS4KLQotIyBPcGVuV1NJTEFjdGlvbgotQUxUX09QRU5fV1NJTD1PcGVuIFdTSUwKLUZPUk1fTEFCRUxfT1BFTl9XU0lMX0RFU0M9RW50ZXIgdGhlIFVSTCBvZiBhIFdTSUwgZG9jdW1lbnQgb3IgYSBIVE1MIGRvY3VtZW50IGFuZCBjbGljayA8c3Ryb25nPkdvPC9zdHJvbmc+IHRvIG9wZW4gaW5zcGVjdC4KLVdTSUxfVVJMPVVSTCB0byBkb2N1bWVudDoKLU1TR19FUlJPUl9JTlZBTElEX1dTSUxfVVJMPUlXQUIwMzk0RSAlMSBpcyBub3QgYSB2YWxpZCBXU0lMIFVSTCBvciBIVE1MIFVSTC4KLU1TR19FUlJPUl9XU0lMX0FMUkVBRFlfT1BFTkVEPUlXQUIwMzI5RSAlMSBpcyBhbHJlYWR5IG9wZW5lZCBpbiB0aGUgbmF2aWdhdG9yLgotTVNHX0lORk9fT1BFTl9XU0lMX1NVQ0NFU1NGVUw9SVdBQjAzMzBJICUxIHdhcyBzdWNjZXNzZnVsbHkgb3BlbmVkLgotCi0jIE9wZW5XU0lMTGlua0FjdGlvbgotQUxUX09QRU5fV1NJTF9MSU5LPU9wZW4gV1NJTCBMaW5rCi1NU0dfRVJST1JfV1NJTF9MSU5LX0FMUkVBRFlfT1BFTkVEPUlXQUIwMzMxRSAlMSBpcyBhbHJlYWR5IG9wZW5lZCBpbiB0aGUgbmF2aWdhdG9yCi1NU0dfSU5GT19PUEVOX1dTSUxfTElOS19TVUNDRVNTRlVMPUlXQUIwMzMySSAlMSB3YXMgc3VjY2Vzc2Z1bGx5IG9wZW5lZC4KLQotIyBXc2lsRGV0YWlsc0FjdGlvbgotQUxUX1dTSUxfREVUQUlMUz1XU0lMIERldGFpbHMKLQotIyBXc2lsU2VydmljZURldGFpbHNBY3Rpb24KLUFMVF9XU0lMX1NFUlZJQ0VfREVUQUlMUz1XU0lMIFNlcnZpY2UgRGV0YWlscwotCi0jIFVkZGlMaW5rRGV0YWlsc0FjdGlvbgotQUxUX1VERElfTElOS19ERVRBSUxTPVVEREkgQnVzaW5lc3MgRGV0YWlscwotCi0jIFdzaWxMaW5rRGV0YWlsc0FjdGlvbgotQUxUX1dTSUxfTElOS19ERVRBSUxTPVdTSUwgTGluayBEZXRhaWxzCi0KLSMgTGlzdFdTRExTZXJ2aWNlc0FjdGlvbgotQUxUX0xJU1RfV1NETF9TRVJWSUNFUz1MaXN0IEFsbCBXU0RMIFNlcnZpY2VzCi1GT1JNX0xBQkVMX0xJU1RfV1NETF9TRVJWSUNFU19ERVNDPVNlbGVjdCBhIHNldCBvZiBXU0RMIHNlcnZpY2VzIGFuZCBjbGljayA8c3Ryb25nPkFkZCB0byBGYXZvcml0ZXM8L3N0cm9uZz4gdG8gYWRkIHRoZXNlIHRvIHRoZSBsaXN0IG9mIGZhdm9yaXRlcy4KLQotIyBMaXN0VURESVNlcnZpY2VzQWN0aW9uCi1BTFRfTElTVF9VRERJX1NFUlZJQ0VTPUxpc3QgQWxsIFVEREkgU2VydmljZXMKLUZPUk1fTEFCRUxfTElTVF9VRERJX1NFUlZJQ0VTX0RFU0M9U2VsZWN0IGEgc2V0IG9mIFVEREkgc2VydmljZXMgYW5kIGNsaWNrIDxzdHJvbmc+QWRkIHRvIEZhdm9yaXRlczwvc3Ryb25nPiB0byBhZGQgdGhlc2UgdG8gdGhlIGxpc3Qgb2YgZmF2b3JpdGVzLiBDbGljayA8c3Ryb25nPkFkZCB0byBVRERJIFBhZ2U8L3N0cm9uZz4gdG8gYWRkIHRoZSBzZWxlY3Rpb25zIHRvIHRoZSBVRERJIFBhZ2UuIENsaWNrIDxzdHJvbmc+UmVmcmVzaDwvc3Ryb25nPiB0byByZWZyZXNoIHRoZSBzZWxlY3Rpb25zLgotCi0jIExpc3RVRERJQnVzaW5lc3Nlc0FjdGlvbgotQUxUX0xJU1RfVURESV9MSU5LUz1MaXN0IEFsbCBVRERJIEJ1c2luZXNzZXMKLUZPUk1fTEFCRUxfTElTVF9VRERJX0JVU0lORVNTRVNfREVTQz1TZWxlY3QgYSBzZXQgb2YgVURESSBidXNpbmVzc2VzIGFuZCBjbGljayA8c3Ryb25nPkFkZCB0byBGYXZvcml0ZXM8L3N0cm9uZz4gdG8gYWRkIHRoZXNlIHRvIHRoZSBsaXN0IG9mIGZhdm9yaXRlcy4gQ2xpY2sgPHN0cm9uZz5BZGQgdG8gVURESSBQYWdlPC9zdHJvbmc+IHRvIGFkZCB0aGVzZSB0byB0aGUgVURESSBQYWdlLiBDbGljayA8c3Ryb25nPlJlZnJlc2g8L3N0cm9uZz4gdG8gcmVmcmVzaCB0aGUgc2VsZWN0aW9ucy4KLQotIyBMaXN0V1NJTExpbmtzQWN0aW9uCi1BTFRfTElTVF9XU0lMX0xJTktTPUxpc3QgQWxsIFdTSUwgTGlua3MKLUZPUk1fTEFCRUxfTElTVF9XU0lMX0xJTktTPVNlbGVjdCBhIHNldCBvZiBXU0lMIGxpbmtzIGFuZCBwcmVzcyA8c3Ryb25nPkFkZCB0byBOYXZpZ2F0b3I8L3N0cm9uZz4gdG8gb3BlbiB0aGVtIGluIHRoZSBuYXZpZ2F0b3IuCi0KLSMgQ2xlYXJXU0lMQWN0aW9uCi1BTFRfQ0xFQVJfV1NJTD1DbGVhciBXU0lMCi0KLSMgUmVmcmVzaEFjdGlvbgotQUxUX1JFRlJFU0hfV1NJTD1SZWZyZXNoIFdTSUwKLUFMVF9SRUZSRVNIX1VERElfQlVTSU5FU1M9UmVmcmVzaCBVRERJIEJ1c2luZXNzCi1BTFRfUkVGUkVTSF9VRERJX1NFUlZJQ0U9UmVmcmVzaCBVRERJIFNlcnZpY2UKLU1TR19FUlJPUl9XU0lMX05PVF9GT1VORD1JV0FCMDMzM0UgV1NJTCAlMSBjb3VsZCBub3QgYmUgbG9hZGVkLgotTVNHX0VSUk9SX0JVU0lORVNTX05PVF9GT1VORD1JV0FCMDMzNEUgQnVzaW5lc3MgJTEgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSByZWdpc3RyeS4KLU1TR19FUlJPUl9TRVJWSUNFX05PVF9GT1VORD1JV0FCMDMzNUUgU2VydmljZSAlMSBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LgotTVNHX0lORk9fUkVGUkVTSF9TVUNDRVNTRlVMPUlXQUIwMzM2SSAlMSBpcyByZWZyZXNoZWQuCi1NU0dfQ09ORklSTV9SRU1PVkVfTk9ERT0lMSBpcyBubyBsb25nZXIgcmVzb2x2YWJsZS4gIERvIHlvdSB3aXNoIHRvIGNsZWFyIGl0PwotCi0jIEFkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uCi1BTFRfQUREX0JVU0lORVNTX1RPX1VERElfUEVSU1BFQ1RJVkU9QWRkIEJ1c2luZXNzIFRvIFVEREkgUGFnZQotQUxUX0FERF9TRVJWSUNFX1RPX1VERElfUEVSU1BFQ1RJVkU9QWRkIFNlcnZpY2UgVG8gVURESSBQYWdlCi1NU0dfSU5GT19BRERfVE9fVURESV9QRVJTUEVDVElWRV9TVUNDRVNTRlVMPUlXQUIwMzM3SSAlMSBpcyBhZGRlZCB0byBVRERJIFBhZ2UuCi1NU0dfRVJST1JfQUREX1RPX1VERElfUEVSU1BFQ1RJVkU9SVdBQjAzMzhFIFVuYWJsZSB0byBhZGQgJTEgdG8gVURESSBQYWdlLgotTVNHX0VSUk9SX0JVU0lORVNTX05PVF9GT1VORD1JV0FCMDMzOUUgQnVzaW5lc3MgJTEgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSByZWdpc3RyeS4KLU1TR19FUlJPUl9TRVJWSUNFX05PVF9GT1VORD1JV0FCMDM0MEUgU2VydmljZSAlMSBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LgotCi0jIFdzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbgotQUxUX0FERF9XU0RMX1RPX1dTRExfUEVSU1BFQ1RJVkU9QWRkIFdTREwgVG8gV1NETCBQYWdlCi1NU0dfSU5GT19BRERfV1NETF9UT19XU0RMX1BFUlNQRUNUSVZFX1NVQ0NFU1NGVUw9SVdBQjAzOTVJICUxIGlzIGFkZGVkIHRvIFdTREwgUGFnZS4KLU1TR19FUlJPUl9BRERfV1NETF9UT19XU0RMX1BFUlNQRUNUSVZFPUlXQUIwMzk2RSAlMSBjb3VsZCBub3QgYmUgbG9hZGVkLgotCi0jIEFkZFdTSUxUb0Zhdm9yaXRlc0FjdGlvbgotQUxUX0FERF9XU0lMX1RPX0ZBVk9SSVRFUz1BZGQgV1NJTCBUbyBGYXZvcml0ZXMKLU1TR19FUlJPUl9BRERfVE9fRkFWT1JJVEVTPUlXQUIwMzQxRSBVbmFibGUgdG8gYWRkICUxIHRvIGZhdm9yaXRlcy4KLU1TR19FUlJPUl9GQVZPUklURVNfQUxSRUFEWV9FWElTVFM9SVdBQjAzNDJFICUxIGFscmVhZHkgZXhpc3RzIGluIGZhdm9yaXRlcy4KLU1TR19JTkZPX0FERF9UT19GQVZPUklURVNfU1VDQ0VTU0ZVTD1JV0FCMDM0M0kgJTEgaXMgYWRkZWQgdG8gZmF2b3JpdGVzLgotTVNHX1FVRVNUSU9OX09WRVJXUklURV9GQVZPUklURVM9RmF2b3JpdGUgYWxyZWFkeSBleGlzdHMuICBEbyB5b3Ugd2lzaCB0byBvdmVyd3JpdGU/Ci0KLSMgQWRkV1NETFNlcnZpY2VUb0Zhdm9yaXRlc0FjdGlvbgotQUxUX0FERF9XU0RMX1NFUlZJQ0VfVE9fRkFWT1JJVEVTPUFkZCBXU0RMIFRvIEZhdm9yaXRlcwotCi0jIEFkZEJ1c2luZXNzVG9GYXZvcml0ZXNBY3Rpb24KLUFMVF9BRERfVURESV9CVVNJTkVTU19UT19GQVZPUklURVM9QWRkIFVEREkgQnVzaW5lc3MgVG8gRmF2b3JpdGVzCi0KLSMgQWRkU2VydmljZVRvRmF2b3JpdGVzQWN0aW9uCi1BTFRfQUREX1NFUlZJQ0VfVE9fRkFWT1JJVEVTPUFkZCBVRERJIFNlcnZpY2UgVG8gRmF2b3JpdGVzCi0KLSMgV1NJTEltcG9ydFdTSUxUb1dvcmtiZW5jaAotQVRMX0lNUE9SVF9XU0lMX1RPX1dPUktCRU5DSD1JbXBvcnQgV1NJTCBUbyBXb3JrYmVuY2gKLUZPUk1fTEFCRUxfSU1QT1JUX1dTSUxfVE9fV09SS0JFTkNIX0RFU0M9U2VsZWN0IGEgd29ya2JlbmNoIHByb2plY3QgdG8gc2F2ZSB0aGUgV1NJTCBmaWxlIGludG8uIFlvdSBtYXkgYWxzbyBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIFdTSUwgZmlsZS4KLQotIyBJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24KLUFMVF9XU0lMX0lNUE9SVF9UT19GUz1JbXBvcnQgV1NJTCBUbyBGaWxlIFN5c3RlbQotQUxUX1dTRExfSU1QT1JUX1RPX0ZTPUltcG9ydCBXU0RMIFRvIEZpbGUgU3lzdGVtCi0KLSMgRnJhbWUgdGl0bGVzCi1GUkFNRV9USVRMRV9OQVZJR0FUT1JfQ09OVEFJTkVSPU5hdmlnYXRvciBDb250YWluZXIKLUZSQU1FX1RJVExFX05BVklHQVRPUl9UT09MQkFSPU5hdmlnYXRvciBUb29sYmFyCi1GUkFNRV9USVRMRV9OQVZJR0FUT1JfQ09OVEVOVD1OYXZpZ2F0b3IgQ29udGVudAotRlJBTUVfVElUTEVfQUNUSU9OU19DT05UQUlORVI9QWN0aW9ucyBDb250YWluZXIKLUZSQU1FX1RJVExFX1BST1BFUlRJRVNfQ09OVEFJTkVSPVByb3BlcnRpZXMgQ29udGFpbmVyCi1GUkFNRV9USVRMRV9QUk9QRVJUSUVTX0NPTlRFTlQ9UHJvcGVydGllcyBDb250ZW50Ci1GUkFNRV9USVRMRV9QUk9QRVJUSUVTX1RPT0xCQVI9UHJvcGVydGllcyBUb29sYmFyCi1GUkFNRV9USVRMRV9TVEFUVVNfQ09OVEFJTkVSPVN0YXR1cyBDb250YWluZXIKLUZSQU1FX1RJVExFX1NUQVRVU19DT05URU5UPVN0YXR1cyBDb250ZW50Ci1GUkFNRV9USVRMRV9TVEFUVVNfVE9PTEJBUj1TdGF0dXMgVG9vbGJhcgotCi0jIEZvcm0gdGl0bGVzCi1GT1JNX1RJVExFX09QRU5fV1NJTD1PcGVuIFdTSUwgRm9ybQotRk9STV9USVRMRV9VRERJX0JVU0lORVNTX0RFVEFJTFM9VURESSBCdXNpbmVzcyBEZXRhaWxzIEZvcm0KLUZPUk1fVElUTEVfVURESV9TRVJWSUNFX0RFVEFJTFM9VURESSBTZXJ2aWNlIERldGFpbHMgRm9ybQotRk9STV9USVRMRV9XU0RMX1NFUlZJQ0VfREVUQUlMUz1XU0RMIFNlcnZpY2UgRGV0YWlscyBGb3JtCi1GT1JNX1RJVExFX1dTSUxfREVUQUlMUz1XU0lMIERldGFpbHMgRm9ybQotRk9STV9USVRMRV9XU0lMX0xJTktfREVUQUlMUz1XU0lMIExpbmsgRGV0YWlscyBGb3JtCi0KLSMgVmlldyB0aXRsZXMKLVZJRVdfVElUTEVfVURESV9CVVNJTkVTU0VTPVVEREkgQnVzaW5lc3NlcyBWaWV3Ci1WSUVXX1RJVExFX1VERElfU0VSVklDRVM9VURESSBTZXJ2aWNlcyBWaWV3Ci1WSUVXX1RJVExFX1dTRExfU0VSVklDRVM9V1NETCBTZXJ2aWNlcyBWaWV3Ci1WSUVXX1RJVExFX1dTSUxfTElOS1M9V1NJTCBMaW5rcyBWaWV3CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy9hY3Rpb25zLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy9hY3Rpb25zLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvYWN0aW9ucy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL2Zhdm9yaXRlcy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvZmF2b3JpdGVzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvZmF2b3JpdGVzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvZmF2b3JpdGVzL2FjdGlvbnMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL2Zhdm9yaXRlcy9hY3Rpb25zLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvZmF2b3JpdGVzL2FjdGlvbnMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy9mYXZvcml0ZXMvZm9ybXMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL2Zhdm9yaXRlcy9mb3Jtcy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL2Zhdm9yaXRlcy9mb3Jtcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL2Zhdm9yaXRlcy9zY3JpcHRzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy9mYXZvcml0ZXMvc2NyaXB0cy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL2Zhdm9yaXRlcy9zY3JpcHRzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvZmF2b3JpdGVzL3ZpZXdzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy9mYXZvcml0ZXMvdmlld3MvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy9mYXZvcml0ZXMvdmlld3MvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy9mb3Jtcy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvZm9ybXMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy9mb3Jtcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3NjcmlwdHMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3NjcmlwdHMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy9zY3JpcHRzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvdWRkaS8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvdWRkaS8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3VkZGkvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy91ZGRpL2FjdGlvbnMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3VkZGkvYWN0aW9ucy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3VkZGkvYWN0aW9ucy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3VkZGkvZm9ybXMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3VkZGkvZm9ybXMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy91ZGRpL2Zvcm1zLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvdWRkaS9zY3JpcHRzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy91ZGRpL3NjcmlwdHMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy91ZGRpL3NjcmlwdHMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2RsLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2RsLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NkbC8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3dzZGwvYWN0aW9ucy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NkbC9hY3Rpb25zLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NkbC9hY3Rpb25zLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NkbC9mb3Jtcy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NkbC9mb3Jtcy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3dzZGwvZm9ybXMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2RsL2ZyYWdtZW50Ly5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2RsL2ZyYWdtZW50Ly5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NkbC9mcmFnbWVudC8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3dzZGwvc2NyaXB0cy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NkbC9zY3JpcHRzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NkbC9zY3JpcHRzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NpbC8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NpbC8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3dzaWwvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2lsL2FjdGlvbnMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3dzaWwvYWN0aW9ucy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3dzaWwvYWN0aW9ucy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3dzaWwvZm9ybXMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9jbGFzc2VzL3dzaWwvZm9ybXMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2lsL2Zvcm1zLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NpbC9zY3JpcHRzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2lsL3NjcmlwdHMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2lsL3NjcmlwdHMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2lsL3ZpZXdzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvY2xhc3Nlcy93c2lsL3ZpZXdzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9XRUItSU5GL2NsYXNzZXMvd3NpbC92aWV3cy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9saWIvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvV0VCLUlORi9saWIvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBiNTgyOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL1dFQi1JTkYvbGliLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamFyCi13c2V4cGxvcmVyc3JjLnppcApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25lbmdpbmUuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25lbmdpbmUuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTBiMDQ0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9uZW5naW5lLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkFjdGlvbklucHV0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS5BY3Rpb25FbmdpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUuQWN0aW9uRGF0YVBhcnNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS5kYXRhLlNjZW5hcmlvRGVzY3JpcHRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS5kYXRhLlRyYW5zYWN0aW9uRGVzY3JpcHRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS5kYXRhLkFjdGlvbkRlc2NyaXB0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlhNTFV0aWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5IVE1MVXRpbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLk11bHRpcGFydEZvcm1EYXRhUGFyc2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuTGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLkl0ZXJhdG9yIiAlPgotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotU3RyaW5nIG1vZGUgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuQUNUSU9OX0VOR0lORV9NT0RFKTsKLVN0cmluZyBzY2VuYXJpbyA9IG51bGw7Ci10cnkKLXsKLSAgTXVsdGlwYXJ0Rm9ybURhdGFQYXJzZXIgcGFyc2VyID0gbmV3IE11bHRpcGFydEZvcm1EYXRhUGFyc2VyKCk7Ci0gIHBhcnNlci5wYXJzZVJlcXVlc3QocmVxdWVzdCwgSFRNTFV0aWxzLlVURjhfRU5DT0RJTkcpOwotICBzY2VuYXJpbyA9IHBhcnNlci5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLkFDVElPTl9FTkdJTkVfU0NFTkFSSU8pOwotfQotY2F0Y2ggKFRocm93YWJsZSB0KQotewotfQotQWN0aW9uRW5naW5lIGFjdGlvbkVuZ2luZSA9IGNvbnRyb2xsZXIuZ2V0QWN0aW9uRW5naW5lKCk7Ci1pZiAobW9kZSAhPSBudWxsKQotewotICBhY3Rpb25FbmdpbmUuc2V0TW9kZShBY3Rpb25FbmdpbmUuTU9ERV9ESVNBQkxFRCk7Ci0gIHRyeQotICB7Ci0gICAgYWN0aW9uRW5naW5lLnNldE1vZGUoQnl0ZS5wYXJzZUJ5dGUobW9kZSkpOwotICB9Ci0gIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmZlKQotICB7Ci0gIH0KLX0KLWlmIChzY2VuYXJpbyAhPSBudWxsICYmIHNjZW5hcmlvLmxlbmd0aCgpID4gMCkKLXsKLSAgU2NlbmFyaW9EZXNjcmlwdG9yIHNjZW5hcmlvRGVzY3JpcHRvciA9IG51bGw7Ci0gIHRyeQotICB7Ci0gICAgQWN0aW9uRGF0YVBhcnNlciBwYXJzZXIgPSBuZXcgQWN0aW9uRGF0YVBhcnNlcigpOwotICAgIHNjZW5hcmlvRGVzY3JpcHRvciA9IHBhcnNlci5wYXJzZVNjZW5hcmlvKFhNTFV0aWxzLnN0cmluZ1RvRWxlbWVudChzY2VuYXJpbykpOwotICAgIGFjdGlvbkVuZ2luZS5leGVjdXRlU2NlbmFyaW8oc2NlbmFyaW9EZXNjcmlwdG9yKTsKLSAgfQotICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gIHsKLSAgfQotICBpZiAoc2NlbmFyaW9EZXNjcmlwdG9yICE9IG51bGwpCi0gIHsKLSAgICBUcmFuc2FjdGlvbkRlc2NyaXB0b3JbXSB0cmFuc2FjdGlvbkRlc2NyaXB0b3JzID0gc2NlbmFyaW9EZXNjcmlwdG9yLmdldFRyYW5zYWN0aW9uRGVzY3JpcHRvcnMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRyYW5zYWN0aW9uRGVzY3JpcHRvcnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgQWN0aW9uRGVzY3JpcHRvcltdIGFjdGlvbkRlc2NyaXB0b3JzID0gdHJhbnNhY3Rpb25EZXNjcmlwdG9yc1tpXS5nZXRBY3Rpb25EZXNjcmlwdG9ycygpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBhY3Rpb25EZXNjcmlwdG9ycy5sZW5ndGg7IGorKykKLSAgICAgIHsKLSAgICAgICAgJT4KLSAgICAgICAgPCEtLQotICAgICAgICA8JT1hY3Rpb25EZXNjcmlwdG9yc1tqXS5nZXRJZCgpJT4KLSAgICAgICAgPCU9YWN0aW9uRGVzY3JpcHRvcnNbal0uZ2V0U3RhdHVzSWQoKSU+Ci0gICAgICAgIDwlCi0gICAgICAgIExpc3Qgc3RhdHVzID0gYWN0aW9uRGVzY3JpcHRvcnNbal0uZ2V0U3RhdHVzKCk7Ci0gICAgICAgIGlmIChzdGF0dXMgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBzdGF0dXMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAlPgotICAgICAgICAgICAgPCU9aXQubmV4dCgpLnRvU3RyaW5nKCklPgotICAgICAgICAgICAgPCUKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgJT4KLSAgICAgICAgLS0+Ci0gICAgICAgIDwlCi0gICAgICB9Ci0gICAgfQotICB9Ci19Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25lbmdpbmVfY29udGFpbmVyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9uZW5naW5lX2NvbnRhaW5lci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYmNhNmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25lbmdpbmVfY29udGFpbmVyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmVuZ2luZS5BY3Rpb25FbmdpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubmV0LioiICU+Ci08JQotU3RyaW5nIHNlc3Npb25JZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpOwotSHR0cFNlc3Npb24gY3VycmVudFNlc3Npb24gPSAoSHR0cFNlc3Npb24pYXBwbGljYXRpb24uZ2V0QXR0cmlidXRlKHNlc3Npb25JZCk7Ci1Db250cm9sbGVyIGNvbnRyb2xsZXIgPSAoQ29udHJvbGxlciljdXJyZW50U2Vzc2lvbi5nZXRBdHRyaWJ1dGUoImNvbnRyb2xsZXIiKTsKLUFjdGlvbkVuZ2luZSBhY3Rpb25FbmdpbmUgPSBjb250cm9sbGVyLmdldEFjdGlvbkVuZ2luZSgpOwotU3RyaW5nIG1vZGVTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuQUNUSU9OX0VOR0lORV9NT0RFKTsKLWlmIChtb2RlU3RyaW5nICE9IG51bGwgJiYgbW9kZVN0cmluZy5sZW5ndGgoKSA+IDApCi17Ci0gIHRyeQotICB7Ci0gICAgYnl0ZSBtb2RlID0gQnl0ZS5wYXJzZUJ5dGUobW9kZVN0cmluZyk7Ci0gICAgYWN0aW9uRW5naW5lLnNldE1vZGUobW9kZSk7Ci0gIH0KLSAgY2F0Y2ggKFRocm93YWJsZSB0KQotICB7Ci0gIH0KLX0KLVN0cmluZyBwbGF5RmlsZUlkID0gInBsYXlGaWxlSWQiOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJUSVRMRV9BQ1RJT05fUkVDT1JERVIiKSU+PC90aXRsZT4KLSAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgZnVuY3Rpb24gc2V0TW9kZShtb2RlKQotICAgIHsKLSAgICAgIDwlCi0gICAgICBTdHJpbmdCdWZmZXIgZm9ybUFjdGlvbiA9IG5ldyBTdHJpbmdCdWZmZXIocmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJhY3Rpb25lbmdpbmVfY29udGFpbmVyLmpzcD8iKSkpOwotICAgICAgZm9ybUFjdGlvbi5hcHBlbmQoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCk7Ci0gICAgICBmb3JtQWN0aW9uLmFwcGVuZCgiPSIpOwotICAgICAgZm9ybUFjdGlvbi5hcHBlbmQoc2Vzc2lvbklkKTsKLSAgICAgIGZvcm1BY3Rpb24uYXBwZW5kKCImIik7Ci0gICAgICBmb3JtQWN0aW9uLmFwcGVuZChBY3Rpb25JbnB1dHMuQUNUSU9OX0VOR0lORV9NT0RFKTsKLSAgICAgIGZvcm1BY3Rpb24uYXBwZW5kKCI9Iik7Ci0gICAgICAlPgotICAgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5mb3Jtc1swXTsKLSAgICAgIGZvcm0uYWN0aW9uID0gJzwlPWZvcm1BY3Rpb24udG9TdHJpbmcoKSU+JyArIG1vZGU7Ci0gICAgICBmb3JtLnRhcmdldCA9ICJfc2VsZiI7Ci0gICAgICBmb3JtLnN1Ym1pdCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBsYXkoKQotICAgIHsKLSAgICAgIHZhciBwbGF5RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCI8JT1wbGF5RmlsZUlkJT4iKTsKLSAgICAgIGlmIChwbGF5RmlsZS52YWx1ZSAhPSBudWxsICYmIHBsYXlGaWxlLnZhbHVlLmxlbmd0aCA+IDApCi0gICAgICB7Ci0gICAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQuZm9ybXNbMF07Ci0gICAgICAgIGZvcm0uYWN0aW9uID0gJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NleHBsb3Jlci5qc3AiKSklPic7Ci0gICAgICAgIGZvcm0udGFyZ2V0ID0gIjwlPUZyYW1lTmFtZXMuV0lORE9XX05BTUVfV1NFWFBMT1JFUl9KU1AlPiI7Ci0gICAgICAgIGZvcm0uZW5jdHlwZSA9ICJtdWx0aXBhcnQvZm9ybS1kYXRhIjsKLSAgICAgICAgLy8gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLSAgICAgICAgZm9ybS5lbmNvZGluZyA9ICJtdWx0aXBhcnQvZm9ybS1kYXRhIjsKLSAgICAgICAgZm9ybS5zdWJtaXQoKTsKLSAgICAgICAgc2V0TW9kZSgnPCU9QWN0aW9uRW5naW5lLk1PREVfUExBWSU+Jyk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIGFsZXJ0KCc8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1BMQVlfRklMRSIpJT4nKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzYXZlKCkKLSAgICB7Ci0gICAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmZvcm1zWzBdOwotICAgICAgZm9ybS5hY3Rpb24gPSAnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJhY3Rpb25zL1NhdmVBY3Rpb25FbmdpbmVTY2VuYXJpby5qc3AiKSklPic7Ci0gICAgICBmb3JtLnRhcmdldCA9ICJfc2VsZiI7Ci0gICAgICBmb3JtLnN1Ym1pdCgpOwotICAgIH0KLSAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotICA8Zm9ybSBtZXRob2Q9InBvc3QiPgotICAgIDwlCi0gICAgU3RyaW5nIGxhYmVsTW9kZVBsYXkgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTU9ERV9QTEFZIik7Ci0gICAgU3RyaW5nIGxhYmVsTW9kZVN0b3AgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTU9ERV9TVE9QIik7Ci0gICAgU3RyaW5nIGxhYmVsTW9kZVJlY29yZCA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9NT0RFX1JFQ09SRCIpOwotICAgIFN0cmluZyBsYWJlbFNhdmUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0FWRSIpOwotICAgIGJ5dGUgbW9kZSA9IGFjdGlvbkVuZ2luZS5nZXRNb2RlKCk7Ci0gICAgU3RyaW5nIGltZ1BsYXkgPSAobW9kZSA9PSBBY3Rpb25FbmdpbmUuTU9ERV9QTEFZKSA/ICJpbWFnZXMvZWxjbDE2L2FjdGlvbmVuZ2luZV9wbGF5LmdpZiIgOiAiaW1hZ2VzL2RsY2wxNi9hY3Rpb25lbmdpbmVfcGxheS5naWYiOwotICAgIFN0cmluZyBpbWdTdG9wID0gKG1vZGUgPT0gQWN0aW9uRW5naW5lLk1PREVfU1RPUCkgPyAiaW1hZ2VzL2VsY2wxNi9hY3Rpb25lbmdpbmVfc3RvcC5naWYiIDogImltYWdlcy9kbGNsMTYvYWN0aW9uZW5naW5lX3N0b3AuZ2lmIjsKLSAgICBTdHJpbmcgaW1nUmVjb3JkID0gKG1vZGUgPT0gQWN0aW9uRW5naW5lLk1PREVfUkVDT1JEKSA/ICJpbWFnZXMvZWxjbDE2L2FjdGlvbmVuZ2luZV9yZWNvcmQuZ2lmIiA6ICJpbWFnZXMvZGxjbDE2L2FjdGlvbmVuZ2luZV9yZWNvcmQuZ2lmIjsKLSAgICBTdHJpbmcgaW1nU2F2ZSA9ICJpbWFnZXMvZGxjbDE2L2FjdGlvbmVuZ2luZV9zYXZlLmdpZiI7Ci0gICAgJT4KLSAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0zPgotICAgICAgPHRyPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ibGFiZWxzIiBub3dyYXA+Ci0gICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpwbGF5KCkiPgotICAgICAgICAgICAgPGltZyBjbGFzcz0ibm9ybWFsIiBib3JkZXI9MCBhbHQ9IjwlPWxhYmVsTW9kZVBsYXklPiIgdGl0bGU9IjwlPWxhYmVsTW9kZVBsYXklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoaW1nUGxheSkpJT4iPgotICAgICAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX01PREVfUExBWSIpJT4KLSAgICAgICAgICA8L2E+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiIGNsYXNzPSJsYWJlbHMiIG5vd3JhcD4KLSAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnNldE1vZGUoJzwlPVN0cmluZy52YWx1ZU9mKEFjdGlvbkVuZ2luZS5NT0RFX1NUT1ApJT4nKSI+Ci0gICAgICAgICAgICA8aW1nIGNsYXNzPSJub3JtYWwiIGJvcmRlcj0wIGFsdD0iPCU9bGFiZWxNb2RlU3RvcCU+IiB0aXRsZT0iPCU9bGFiZWxNb2RlU3RvcCU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChpbWdTdG9wKSklPiI+Ci0gICAgICAgICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTU9ERV9TVE9QIiklPgotICAgICAgICAgIDwvYT4KLSAgICAgICAgPC90ZD4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCIgY2xhc3M9ImxhYmVscyIgbm93cmFwPgotICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6c2V0TW9kZSgnPCU9U3RyaW5nLnZhbHVlT2YoQWN0aW9uRW5naW5lLk1PREVfUkVDT1JEKSU+JykiPgotICAgICAgICAgICAgPGltZyBjbGFzcz0ibm9ybWFsIiBib3JkZXI9MCBhbHQ9IjwlPWxhYmVsTW9kZVJlY29yZCU+IiB0aXRsZT0iPCU9bGFiZWxNb2RlUmVjb3JkJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGltZ1JlY29yZCkpJT4iPgotICAgICAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX01PREVfUkVDT1JEIiklPgotICAgICAgICAgIDwvYT4KLSAgICAgICAgPC90ZD4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCIgY2xhc3M9ImxhYmVscyIgbm93cmFwPgotICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6c2F2ZSgpIj4KLSAgICAgICAgICAgIDxpbWcgY2xhc3M9Im5vcm1hbCIgYm9yZGVyPTAgYWx0PSI8JT1sYWJlbFNhdmUlPiIgdGl0bGU9IjwlPWxhYmVsU2F2ZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChpbWdTYXZlKSklPiI+Ci0gICAgICAgICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0FWRSIpJT4KLSAgICAgICAgICA8L2E+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gICAgPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9Mz4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIHZhbGlnbj0iY2VudGVyIiBhbGlnbj0ibGVmdCIgY2xhc3M9ImxhYmVscyIgbm93cmFwPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9QTEFZX0ZJTEUiKSU+PC90ZD4KLSAgICAgICAgPHRkIHZhbGlnbj0iY2VudGVyIiBhbGlnbj0ibGVmdCIgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIGlkPSI8JT1wbGF5RmlsZUlkJT4iIG5hbWU9IjwlPUFjdGlvbklucHV0cy5BQ1RJT05fRU5HSU5FX1NDRU5BUklPJT4iPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICA8L2Zvcm0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9DaGVja1dvcmtiZW5jaEZpbGVSZWFkT25seUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvQ2hlY2tXb3JrYmVuY2hGaWxlUmVhZE9ubHlBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mzg0ZmMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9DaGVja1dvcmtiZW5jaEZpbGVSZWFkT25seUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwlCi0gICBTdHJpbmdCdWZmZXIgcGFuZXNGaWxlID0gbmV3IFN0cmluZ0J1ZmZlcigiLyIpOwotICAgcGFuZXNGaWxlLmFwcGVuZChjb250cm9sbGVyLmdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpLmdldFBhbmVzRmlsZSgpKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iPCU9cGFuZXNGaWxlLnRvU3RyaW5nKCklPiIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLTwlCi0gICBJbXBvcnRUb1dvcmtiZW5jaEFjdGlvbiBhY3Rpb24gPSAoSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24pc2Vzc2lvbi5nZXRBdHRyaWJ1dGUoQWN0aW9uSW5wdXRzLklNUE9SVF9BQ1RJT04pOwotICAgaWYgKGFjdGlvbi5pc1RhcmdldEZpbGVSZXNvdXJjZVJlYWRPbmx5KCkpCi0gICB7Ci0lPgotICB2YXIgcHJvY2VlZCA9IHRydWU7Ci08JSAgIAotICAgICBpZiAoIWFjdGlvbi5pc0NoZWNrb3V0RmlsZXNFbmFibGVkKCkpCi0gICAgIHsKLSU+Ci0gIHByb2NlZWQgPSBjb25maXJtKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoYWN0aW9uLmdldFdlYlNlcnZpY2VQbHVnaW5GaWxlTWVzc2FnZSgiTVNHX0VSUk9SX0ZJTEVfQ0hFQ0tPVVRfRElTQUJMRUQiKSklPiIpOwotPCUgICAgIAotICAgICB9Ci0lPgotICBpZiAocHJvY2VlZCkKLSAgICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChWYWxpZGF0ZUVkaXRBY3Rpb24uZ2V0QWN0aW9uTGluaygpKSklPiI7Ci08JSAgICAgCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0lPgotICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChXcml0ZVdTRExUb1dvcmtiZW5jaEFjdGlvbi5nZXRBY3Rpb25MaW5rKCkpKSU+IjsKLTwlCi0gICB9Ci0lPiAgICAgCi08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4gICAKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9DbGVhck5vZGVBY3Rpb24uaW5jIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL0NsZWFyTm9kZUFjdGlvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NjQ4OWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL0NsZWFyTm9kZUFjdGlvbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlCi0gICBQZXJzcGVjdGl2ZSBjdXJyZW50UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPCUKLSAgIFN0cmluZ0J1ZmZlciBwYW5lc0ZpbGUgPSBuZXcgU3RyaW5nQnVmZmVyKCIvIik7Ci0gICBwYW5lc0ZpbGUuYXBwZW5kKGN1cnJlbnRQZXJzcGVjdGl2ZS5nZXRQYW5lc0ZpbGUoKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9IjwlPXBhbmVzRmlsZS50b1N0cmluZygpJT4iIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGlmIChpc01pY3Jvc29mdEludGVybmV0RXhwbG9yZXIoKSkKLSAgeyAgICAKLTwlCi0gICBTdHJpbmcgdHJlZUNvbnRlbnRWYXIgPSBhY3Rpb24uZ2V0VHJlZUNvbnRlbnRWYXIoKTsKLSAgIGlmICh0cmVlQ29udGVudFZhciAhPSBudWxsKQotICAgewotJT4KLSAgICA8JT10cmVlQ29udGVudFZhciU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0VHJlZUNvbnRlbnRQYWdlKCkpKSU+IjsKLTwlCi0gICB9Ci0gICBTdHJpbmcgcHJvcGVydGllc0NvbnRhaW5lclZhciA9IGFjdGlvbi5nZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCk7Ci0gICBpZiAocHJvcGVydGllc0NvbnRhaW5lclZhciAhPSBudWxsKQotICAgewotJT4KLSAgICA8JT1wcm9wZXJ0aWVzQ29udGFpbmVyVmFyJT4ubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGFjdGlvbi5nZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpKSklPiI7Ci08JSAgIAotICAgfQotICAgU3RyaW5nIHN0YXR1c0NvbnRlbnRWYXIgPSBhY3Rpb24uZ2V0U3RhdHVzQ29udGVudFZhcigpOwotICAgaWYgKHN0YXR1c0NvbnRlbnRWYXIgIT0gbnVsbCkKLSAgIHsKLSU+Ci0gICAgPCU9c3RhdHVzQ29udGVudFZhciU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0U3RhdHVzQ29udGVudFBhZ2UoKSkpJT4iOwotPCUKLSAgIH0KLSU+Ci0gIH0KLSAgZWxzZQotICAgIHBlcnNwZWN0aXZlQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoY3VycmVudFBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudFBhZ2UoKSkpJT4iOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvQ2xlYXJWaWV3RWxlbWVudEFjdGlvbi5pbmMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvQ2xlYXJWaWV3RWxlbWVudEFjdGlvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlM2NiNTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL0NsZWFyVmlld0VsZW1lbnRBY3Rpb24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JQotICAgUGVyc3BlY3RpdmUgY3VycmVudFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwlCi0gICBTdHJpbmdCdWZmZXIgcGFuZXNGaWxlID0gbmV3IFN0cmluZ0J1ZmZlcigiLyIpOwotICAgcGFuZXNGaWxlLmFwcGVuZChjdXJyZW50UGVyc3BlY3RpdmUuZ2V0UGFuZXNGaWxlKCkpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSI8JT1wYW5lc0ZpbGUudG9TdHJpbmcoKSU+IiBmbHVzaD0idHJ1ZSIvPgotPGhlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci08JQotICAgU3RyaW5nIHByb3BlcnRpZXNDb250YWluZXJWYXIgPSBhY3Rpb24uZ2V0UHJvcGVydGllc0NvbnRhaW5lclZhcigpOwotICAgaWYgKHByb3BlcnRpZXNDb250YWluZXJWYXIgIT0gbnVsbCkKLSAgIHsKLSU+Ci0gIDwlPXByb3BlcnRpZXNDb250YWluZXJWYXIlPi5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkpKSU+IjsKLTwlCi0gICB9Ci0gICBTdHJpbmcgc3RhdHVzQ29udGVudFZhciA9IGFjdGlvbi5nZXRTdGF0dXNDb250ZW50VmFyKCk7Ci0gICBpZiAoc3RhdHVzQ29udGVudFZhciAhPSBudWxsKQotICAgewotJT4KLSAgPCU9c3RhdHVzQ29udGVudFZhciU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0U3RhdHVzQ29udGVudFBhZ2UoKSkpJT4iOwotPCUKLSAgIH0KLSU+Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9JbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uaW5jIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ZmI3ZTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgIC8vIHJ1biB0aGUgYWN0aW9uCi0gICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5ydW4oKTsKLSAgIGJvb2xlYW4gd3JpdHRlbiA9IGZhbHNlOwotCi0gICBpZiAoYWN0aW9uUmVzdWx0KQotICAgewotICAgICAvLyB3cml0ZSB0byBmaWxlIHN5c3RlbQotICAgICByZXNwb25zZS5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7Ci0gICAgIHJlc3BvbnNlLnNldEhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIsImF0dGFjaG1lbnQ7ZmlsZW5hbWU9IithY3Rpb24uZ2V0RGVmYXVsdEZpbGVOYW1lKCkpOwotICAgICBhY3Rpb24ud3JpdGUocmVzcG9uc2UuZ2V0T3V0cHV0U3RyZWFtKCkpOwotICAgICB3cml0dGVuID0gdHJ1ZTsKLSAgIH0KLQotICAgaWYgKCF3cml0dGVuKQotICAgewotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwlCi0gICAgICBTdHJpbmdCdWZmZXIgcGFuZXNGaWxlID0gbmV3IFN0cmluZ0J1ZmZlcigiLyIpOwotICAgICAgcGFuZXNGaWxlLmFwcGVuZChjb250cm9sbGVyLmdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpLmdldFBhbmVzRmlsZSgpKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iPCU9cGFuZXNGaWxlLnRvU3RyaW5nKCklPiIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgICAgaWYgKGFjdGlvbi5nZXRTdGF0dXNDb250ZW50VmFyKCkgIT0gbnVsbCkKLSAgICAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgPCU9YWN0aW9uLmdldFN0YXR1c0NvbnRlbnRWYXIoKSU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0U3RhdHVzQ29udGVudFBhZ2UoKSkpJT4iOwotPC9zY3JpcHQ+Ci08JQotICAgICAgfQotJT4gICAgICAKLTwvYm9keT4KLTwvaHRtbD4KLTwlCi0gICB9Ci0lPiAgCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24uaW5jIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL0ltcG9ydFRvV29ya2JlbmNoQWN0aW9uLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzNWNkZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08JQotICAgU3RyaW5nQnVmZmVyIHBhbmVzRmlsZSA9IG5ldyBTdHJpbmdCdWZmZXIoIi8iKTsKLSAgIHBhbmVzRmlsZS5hcHBlbmQoY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXRQYW5lc0ZpbGUoKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9IjwlPXBhbmVzRmlsZS50b1N0cmluZygpJT4iIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci08JQotICAgLy9Mb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotICAgaWYgKCFpbnB1dHNWYWxpZCkKLSAgIHsKLSAgICAgU3RyaW5nIHN0YXR1c0NvbnRlbnRWYXIgPSBhY3Rpb24uZ2V0U3RhdHVzQ29udGVudFZhcigpOwotICAgICBpZiAoc3RhdHVzQ29udGVudFZhciAhPSBudWxsKQotICAgICB7Ci0lPgotICA8JT1zdGF0dXNDb250ZW50VmFyJT4ubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGFjdGlvbi5nZXRTdGF0dXNDb250ZW50UGFnZSgpKSklPiI7Ci08JQotICAgICB9Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgIHNlc3Npb24uc2V0QXR0cmlidXRlKEFjdGlvbklucHV0cy5JTVBPUlRfQUNUSU9OLGFjdGlvbik7ICAgCi0gICAgIGlmIChhY3Rpb24uZmlsZUV4aXN0cygpKQotICAgICB7Ci0lPgotICB2YXIgcHJvY2VlZCA9IHRydWU7Ci08JSAgICAgICAgCi0gICAgICAgaWYgKCFhY3Rpb24uaXNPdmVyd3JpdGVGaWxlc0VuYWJsZWQoKSkKLSAgICAgICB7Ci0lPgotICBwcm9jZWVkID0gY29uZmlybSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGFjdGlvbi5nZXRXZWJTZXJ2aWNlUGx1Z2luRmlsZU1lc3NhZ2UoIk1TR19FUlJPUl9GSUxFX09WRVJXUklURV9ESVNBQkxFRCIpKSU+Iik7Ci08JQotICAgICAgIH0KLSU+Ci0gIGlmIChwcm9jZWVkKQotICAgIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KENoZWNrV29ya2JlbmNoRmlsZVJlYWRPbmx5QWN0aW9uLmdldEFjdGlvbkxpbmsoKSkpJT4iOwotPCUKLSAgICAgfQotICAgICBlbHNlCi0gICAgIHsKLSU+Ci0gIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFdyaXRlV1NETFRvV29ya2JlbmNoQWN0aW9uLmdldEFjdGlvbkxpbmsoKSkpJT4iOwotPCUKLSAgICAgfQotICAgfQotJT4KLTwvc2NyaXB0PiAgIAotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL0xhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24uaW5jIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL0xhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWZiMGRjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCUKLSAgIC8vTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5ydW4oKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08JQotICAgU3RyaW5nQnVmZmVyIHBhbmVzRmlsZSA9IG5ldyBTdHJpbmdCdWZmZXIoIi8iKTsKLSAgIHBhbmVzRmlsZS5hcHBlbmQoY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXRQYW5lc0ZpbGUoKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9IjwlPXBhbmVzRmlsZS50b1N0cmluZygpJT4iIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIGlmICghYWN0aW9uUmVzdWx0KQotICAgewotICAgICBTdHJpbmcgc3RhdHVzQ29udGVudFZhciA9IGFjdGlvbi5nZXRTdGF0dXNDb250ZW50VmFyKCk7Ci0gICAgIGlmIChzdGF0dXNDb250ZW50VmFyICE9IG51bGwpCi0gICAgIHsKLSU+ICAgIAotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIDwlPXN0YXR1c0NvbnRlbnRWYXIlPi5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFN0YXR1c0NvbnRlbnRQYWdlKCkpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgICAgfQotICAgfQotJT4gICAKLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9SZXRyaWV2ZUhpc3RvcnlBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1JldHJpZXZlSGlzdG9yeUFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYmQyYmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1JldHJpZXZlSGlzdG9yeUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgUmV0cmlldmVIaXN0b3J5QWN0aW9uIGFjdGlvbiA9IG5ldyBSZXRyaWV2ZUhpc3RvcnlBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5ydW4oKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBVVEYtOCI+Ci0gIDxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9wYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci08JQotICAgQnJlYWRDcnVtYiBiID0gYWN0aW9uLmdldEJyZWFkQ3J1bWIoKTsKLSAgIGlmIChiICE9IG51bGwpCi0gICB7Ci0gICAgIGludCBicmVhZENydW1iUGVyc3BlY3RpdmVJZCA9IGIuZ2V0UGVyc3BlY3RpdmVJZCgpOwotICAgICBpZiAoYnJlYWRDcnVtYlBlcnNwZWN0aXZlSWQgIT0gY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKS5nZXRQZXJzcGVjdGl2ZUlkKCkpCi0gICAgIHsKLSAgICAgICAvLyBTd2l0Y2ggdGhlIHBlcnNwZWN0aXZlLgotJT4KLSAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2hvd1BlcnNwZWN0aXZlQWN0aW9uLmdldEFjdGlvbkxpbmsoYnJlYWRDcnVtYlBlcnNwZWN0aXZlSWQsdHJ1ZSkpKSU+IjsKLTwlCi0gICAgIH0KLSAgICAgZWxzZQotICAgICB7Ci0gICAgICAgLy8gSnVtcCB0byB0aGUgcGFnZSByZXRyaWV2ZWQgZnJvbSBoaXN0b3J5LgotJT4KLSAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGIuZ2V0VVJMKCkpKSU+IjsKLTwlCi0gICAgIH0KLSAgIH0KLSU+Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9TYXZlQWN0aW9uRW5naW5lU2NlbmFyaW8uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1NhdmVBY3Rpb25FbmdpbmVTY2VuYXJpby5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMGI5ZDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1NhdmVBY3Rpb25FbmdpbmVTY2VuYXJpby5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUuZGF0YS5TY2VuYXJpb0Rlc2NyaXB0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5lbmdpbmUuQWN0aW9uRGF0YVBhcnNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuWE1MVXRpbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEuaW8uUHJpbnRXcml0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy53M2MuZG9tLkVsZW1lbnQiJT4KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLXJlc3BvbnNlLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKLXJlc3BvbnNlLnNldEhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIsImF0dGFjaG1lbnQ7ZmlsZW5hbWU9c2NlbmFyaW8ueG1sIik7Ci1TY2VuYXJpb0Rlc2NyaXB0b3Igc2NlbmFyaW9EZXNjcmlwdG9yID0gY29udHJvbGxlci5nZXRBY3Rpb25FbmdpbmUoKS5nZXRTY2VuYXJpbygpOwotQWN0aW9uRGF0YVBhcnNlciBwYXJzZXIgPSBuZXcgQWN0aW9uRGF0YVBhcnNlcigpOwotRWxlbWVudCBzY2VuYXJpbyA9IHBhcnNlci50b0VsZW1lbnQoc2NlbmFyaW9EZXNjcmlwdG9yKTsKLWlmIChzY2VuYXJpbyAhPSBudWxsKQotewotICB0cnkKLSAgewotICAgIFN0cmluZyBzY2VuYXJpb1N0cmluZyA9IFhNTFV0aWxzLnNlcmlhbGl6ZShzY2VuYXJpbywgZmFsc2UpOwotICAgIGlmIChzY2VuYXJpb1N0cmluZyAhPSBudWxsKQotICAgIHsKLSAgICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHJlc3BvbnNlLmdldE91dHB1dFN0cmVhbSgpKTsKLSAgICAgIHB3LnByaW50bG4oc2NlbmFyaW9TdHJpbmcpOwotICAgICAgcHcuY2xvc2UoKTsKLSAgICB9Ci0gIH0KLSAgY2F0Y2ggKFRocm93YWJsZSB0KQotICB7Ci0gIH0KLX0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvU2VsZWN0Tm9kZUFjdGlvbi5pbmMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvU2VsZWN0Tm9kZUFjdGlvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkZDExN2UuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1NlbGVjdE5vZGVBY3Rpb24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCUKLSAgIFBlcnNwZWN0aXZlIGN1cnJlbnRQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0Q3VycmVudFBlcnNwZWN0aXZlKCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgVVRGLTgiPgotPCUKLSAgIFN0cmluZ0J1ZmZlciBwYW5lc0ZpbGUgPSBuZXcgU3RyaW5nQnVmZmVyKCIvIik7Ci0gICBwYW5lc0ZpbGUuYXBwZW5kKGN1cnJlbnRQZXJzcGVjdGl2ZS5nZXRQYW5lc0ZpbGUoKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9IjwlPXBhbmVzRmlsZS50b1N0cmluZygpJT4iIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIGlmICghYWN0aW9uUmVzdWx0KQotICAgewotICAgICBpZiAoYWN0aW9uLmlzU3RhbGVCcmVhZENydW1iKCkpCi0gICAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgLy8gUmVydW4gdGhlIGhpc3RvcnkgYWN0aW9uIHRvIGdldCB0aGUgbmV4dCBhdmFpbGFibGUgaXRlbS4KLSAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldE5leHRIaXN0b3J5QWN0aW9uTGluaygpKSklPiI7Ci08L3NjcmlwdD4KLTwlCi0gICAgIH0KLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgU3RyaW5nIHRyZWVDb250ZW50VmFyID0gYWN0aW9uLmdldFRyZWVDb250ZW50VmFyKCk7Ci0gICAgIFN0cmluZyBwcm9wZXJ0aWVzQ29udGFpbmVyVmFyID0gYWN0aW9uLmdldFByb3BlcnRpZXNDb250YWluZXJWYXIoKTsKLSAgICAgaWYgKGFjdGlvbi5yZXF1aXJlc1RyZWVWaWV3UmVmcmVzaCgpKQotICAgICB7Ci0gICAgICAgaWYgKHRyZWVDb250ZW50VmFyICE9IG51bGwpCi0gICAgICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBpZiAoaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKCkpCi0gIHsKLSAgICAvLyBVcGRhdGUgdGhlIHRyZWV2aWV3LgotICAgIDwlPXRyZWVDb250ZW50VmFyJT4ubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGFjdGlvbi5nZXRUcmVlQ29udGVudFBhZ2UoKSkpJT4iOwotICB9Ci0gIGVsc2UKLSAgICBwZXJzcGVjdGl2ZUNvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGN1cnJlbnRQZXJzcGVjdGl2ZS5nZXRQZXJzcGVjdGl2ZUNvbnRlbnRQYWdlKCkpKSU+IjsgIAotPC9zY3JpcHQ+Ci08JQotICAgICAgIH0KLSAgICAgICBpZiAocHJvcGVydGllc0NvbnRhaW5lclZhciAhPSBudWxsKQotICAgICAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgaWYgKGlzTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcigpKQotICAgIDwlPXByb3BlcnRpZXNDb250YWluZXJWYXIlPi5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgICAgICB9Ci0gICAgIH0KLSAgICAgZWxzZQotICAgICB7Ci0gICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBhY3Rpb24uZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgICBOb2RlIHByZXZpb3VzU2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0UHJldmlvdXNTZWxlY3RlZE5vZGUoKTsKLSAgICAgICBpbnQgc2VsZWN0ZWROb2RlSWQgPSBzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCk7Ci0gICAgICAgaWYgKHRyZWVDb250ZW50VmFyICE9IG51bGwpCi0gICAgICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAvLyBVcGRhdGUgdGhlIHBlcnNwZWN0aXZlLgotPCUKLSAgICAgICAgIGlmIChwcmV2aW91c1NlbGVjdGVkTm9kZSAhPSBudWxsICYmIHByZXZpb3VzU2VsZWN0ZWROb2RlLmlzVmlzaWJsZSgpKQotICAgICAgICAgewotJT4KLSAgPCU9dHJlZUNvbnRlbnRWYXIlPi5hbHRlckltYWdlKCc8JT1wcmV2aW91c1NlbGVjdGVkTm9kZS5nZXRBbmNob3JOYW1lKCklPicsJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChwcmV2aW91c1NlbGVjdGVkTm9kZS5nZXRDbG9zZWRJbWFnZVBhdGgoKSkpJT4nKTsKLTwlCi0gICAgICAgICB9Ci0gICAgICAgICBTdHJpbmcgc2VsZWN0ZWROb2RlQW5jaG9yTmFtZSA9IHNlbGVjdGVkTm9kZS5nZXRBbmNob3JOYW1lKCk7Ci0lPgotICA8JT10cmVlQ29udGVudFZhciU+LnNlbGVjdE5vZGUoJzwlPXNlbGVjdGVkTm9kZUFuY2hvck5hbWUlPicsJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChzZWxlY3RlZE5vZGUuZ2V0T3BlbkltYWdlUGF0aCgpKSklPicpOwotICA8JT10cmVlQ29udGVudFZhciU+LmxvY2F0aW9uLmhhc2ggPSAnIzwlPXNlbGVjdGVkTm9kZUFuY2hvck5hbWUlPic7Ci08JQotICAgICAgIH0KLSAgICAgICBpZiAocHJvcGVydGllc0NvbnRhaW5lclZhciAhPSBudWxsKQotICAgICAgIHsKLSU+Ci0gIDwlPXByb3BlcnRpZXNDb250YWluZXJWYXIlPi5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkpKSU+IjsKLTwlCi0gICAgICAgfQotJT4KLTwvc2NyaXB0PgotPCUKLSAgICAgfQotICAgfQotJT4KLTwvYm9keT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvU2VsZWN0Tm9kZVRvb2xBY3Rpb24uaW5jIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1NlbGVjdE5vZGVUb29sQWN0aW9uLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVmMTllMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvU2VsZWN0Tm9kZVRvb2xBY3Rpb24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCUKLSAgIFBlcnNwZWN0aXZlIGN1cnJlbnRQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0Q3VycmVudFBlcnNwZWN0aXZlKCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgVVRGLTgiPgotPCUKLSAgIFN0cmluZ0J1ZmZlciBwYW5lc0ZpbGUgPSBuZXcgU3RyaW5nQnVmZmVyKCIvIik7Ci0gICBwYW5lc0ZpbGUuYXBwZW5kKGN1cnJlbnRQZXJzcGVjdGl2ZS5nZXRQYW5lc0ZpbGUoKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9IjwlPXBhbmVzRmlsZS50b1N0cmluZygpJT4iIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIGlmICghYWN0aW9uUmVzdWx0KQotICAgewotICAgICBpZiAoYWN0aW9uLmlzU3RhbGVCcmVhZENydW1iKCkpCi0gICAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgLy8gUmVydW4gdGhlIGhpc3RvcnkgYWN0aW9uIHRvIGdldCB0aGUgbmV4dCBhdmFpbGFibGUgaXRlbS4KLSAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldE5leHRIaXN0b3J5QWN0aW9uTGluaygpKSklPiI7Ci08L3NjcmlwdD4KLTwlCi0gICAgIH0KLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgaWYgKGFjdGlvbi5yZXF1aXJlc1N0YXR1c1VwZGF0ZSgpKQotICAgICB7Ci0gICAgICAgU3RyaW5nIHN0YXR1c0NvbnRlbnRWYXIgPSBhY3Rpb24uZ2V0U3RhdHVzQ29udGVudFZhcigpOwotICAgICAgIGlmIChzdGF0dXNDb250ZW50VmFyICE9IG51bGwpCi0gICAgICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAvLyBVcGRhdGUgdGhlIHN0YXR1cyBjb250ZW50IHdpdGggYW55IG1lc3NhZ2VzIGFyaXNpbmcgZnJvbSB0aGlzIGFjdGlvbi4KLSAgPCU9c3RhdHVzQ29udGVudFZhciU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0U3RhdHVzQ29udGVudFBhZ2UoKSkpJT4iOwotPC9zY3JpcHQ+ICAKLTwlICAgIAotICAgICAgIH0KLSAgICAgfSAKLSAgICAgICAgCi0gICAgIFN0cmluZyB0cmVlQ29udGVudFZhciA9IGFjdGlvbi5nZXRUcmVlQ29udGVudFZhcigpOwotICAgICBTdHJpbmcgcHJvcGVydGllc0NvbnRhaW5lclZhciA9IGFjdGlvbi5nZXRQcm9wZXJ0aWVzQ29udGFpbmVyVmFyKCk7Ci0gICAgIGlmIChhY3Rpb24ucmVxdWlyZXNUcmVlVmlld1JlZnJlc2goKSkKLSAgICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotPCUKLSAgICAgICBpZiAodHJlZUNvbnRlbnRWYXIgIT0gbnVsbCkKLSAgICAgICB7Ci0lPgotICBpZiAoaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKCkpCi0gIHsKLSAgICAvLyBSZWxvYWQgdGhlIG5hdmlnYXRvciB0cmVlIHZpZXcgdG8gc2hvdyB0aGUgc3RydWN0dXJhbCBjaGFuZ2UuCi0gICAgPCU9dHJlZUNvbnRlbnRWYXIlPi5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFRyZWVDb250ZW50UGFnZSgpKSklPiI7Ci0gIH0KLSAgZWxzZQotICB7Ci0gICAgcGVyc3BlY3RpdmVDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChjdXJyZW50UGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50UGFnZSgpKSklPiI7Ci0gIH0KLTwlCi0gICAgICAgfQotICAgICAgIGlmIChwcm9wZXJ0aWVzQ29udGFpbmVyVmFyICE9IG51bGwpCi0gICAgICAgewotJT4KLSAgaWYgKGlzTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcigpKQotICAgIDwlPXByb3BlcnRpZXNDb250YWluZXJWYXIlPi5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkpKSU+IjsKLTwlCi0gICAgICAgfQotJT4KLTwvc2NyaXB0PgotPCUKLSAgICAgfQotICAgICBlbHNlIGlmIChhY3Rpb24ucmVxdWlyZXNOb2RlU2VsZWN0aW9uKCkpCi0gICAgIHsKLSAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IGFjdGlvbi5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXROb2RlTWFuYWdlcigpOwotICAgICAgIE5vZGUgcHJldmlvdXNTZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRQcmV2aW91c1NlbGVjdGVkTm9kZSgpOwotICAgICAgIGludCBzZWxlY3RlZE5vZGVJZCA9IHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKTsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLTwlCi0gICAgICAgaWYgKHRyZWVDb250ZW50VmFyICE9IG51bGwpCi0gICAgICAgewotJT4KLSAgLy8gVXBkYXRlIHRoZSBuYXZpZ2F0b3IgdHJlZSB0byBzaG93IHRoZSBzZWxlY3Rpb24uCi08JQotICAgICAgICAgaWYgKHByZXZpb3VzU2VsZWN0ZWROb2RlICE9IG51bGwpCi0gICAgICAgICB7Ci0lPgotICA8JT10cmVlQ29udGVudFZhciU+LmFsdGVySW1hZ2UoJzwlPXByZXZpb3VzU2VsZWN0ZWROb2RlLmdldEFuY2hvck5hbWUoKSU+JywnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHByZXZpb3VzU2VsZWN0ZWROb2RlLmdldENsb3NlZEltYWdlUGF0aCgpKSklPicpOwotPCUKLSAgICAgICAgIH0KLSAgICAgICAgIFN0cmluZyBzZWxlY3RlZE5vZGVBbmNob3JOYW1lID0gc2VsZWN0ZWROb2RlLmdldEFuY2hvck5hbWUoKTsKLSU+Ci0gIDwlPXRyZWVDb250ZW50VmFyJT4uc2VsZWN0Tm9kZSgnPCU9c2VsZWN0ZWROb2RlQW5jaG9yTmFtZSU+JywnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHNlbGVjdGVkTm9kZS5nZXRPcGVuSW1hZ2VQYXRoKCkpKSU+Jyk7Ci0gIDwlPXRyZWVDb250ZW50VmFyJT4ubG9jYXRpb24uaGFzaCA9ICcjPCU9c2VsZWN0ZWROb2RlQW5jaG9yTmFtZSU+JzsKLTwlCi0gICAgICAgfQotICAgICAgIGlmIChwcm9wZXJ0aWVzQ29udGFpbmVyVmFyICE9IG51bGwpCi0gICAgICAgewotJT4KLSAgPCU9cHJvcGVydGllc0NvbnRhaW5lclZhciU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0UHJvcGVydGllc0NvbnRhaW5lclBhZ2UoKSkpJT4iOwotPCUKLSAgICAgICB9Ci0lPgotPC9zY3JpcHQ+Ci08JQotICAgICB9Ci0gICAgIGVsc2UgaWYgKGFjdGlvbi5yZXF1aXJlc1ZpZXdTZWxlY3Rpb24oKSkKLSAgICAgewotICAgICAgIGlmIChwcm9wZXJ0aWVzQ29udGFpbmVyVmFyICE9IG51bGwpCi0gICAgICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAvLyBVcGRhdGUgdGhlIHByb3BlcnRpZXMgY29udGFpbmVyIHRvIHNob3cgdGhlIHZpZXcuCi0gIDwlPXByb3BlcnRpZXNDb250YWluZXJWYXIlPi5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFByb3BlcnRpZXNDb250YWluZXJQYWdlKCkpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgICAgICB9Ci0gICAgIH0KLSAgICAgZWxzZQotICAgICB7Ci0gICAgICAgU3RyaW5nIHByb3BlcnRpZXNDb250ZW50VmFyID0gYWN0aW9uLmdldFByb3BlcnRpZXNDb250ZW50VmFyKCk7Ci0gICAgICAgVG9vbCB0b29sID0gYWN0aW9uLmdldFNlbGVjdGVkVmlld1Rvb2woKTsKLSAgICAgICBpZiAodG9vbCA9PSBudWxsKQotICAgICAgICAgdG9vbCA9IGFjdGlvbi5nZXRTZWxlY3RlZFRvb2woKTsKLSAgICAgICBpZiAodG9vbC5nZXRUb29sVHlwZSgpICE9IFRvb2xUeXBlcy5BQ1RJT04pCi0gICAgICAgewotICAgICAgICAgaWYgKHByb3BlcnRpZXNDb250ZW50VmFyICE9IG51bGwpCi0gICAgICAgICB7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIC8vIFVwZGF0ZSB0aGUgcHJvcGVydGllcyBjb250ZW50IHdpdGggdGhlIHRvb2wncyBmb3JtLgotICA8JT1wcm9wZXJ0aWVzQ29udGVudFZhciU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh0b29sLmdldEZvcm1MaW5rKCkpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgICAgICAgIH0KLSAgICAgICB9Ci0gICAgICAgZWxzZQotICAgICAgIHsKLSAgICAgICAgIGlmICghYWN0aW9uLmlzSGlzdG9yeUFjdGlvbigpKQotICAgICAgICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAvLyBSdW4gdGhlIHRvb2wncyBhY3Rpb24gb25seSBpZiBpdCBpcyBub3QgZnJvbSB0aGUgaGlzdG9yeS4KLSAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQodG9vbC5nZXRBY3Rpb25MaW5rKCkpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgaWYgKHByb3BlcnRpZXNDb250ZW50VmFyICE9IG51bGwpCi0gICAgICAgICAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgPCU9cHJvcGVydGllc0NvbnRlbnRWYXIlPi5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFByb3BlcnRpZXNDb250ZW50UGFnZSgpKSklPiI7Ci08L3NjcmlwdD4KLTwlCi0gICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLSU+Ci08L2JvZHk+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1Nlc3Npb25UaW1lZE91dC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvU2Vzc2lvblRpbWVkT3V0LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVmOGVlMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvU2Vzc2lvblRpbWVkT3V0LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0LDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiAlPgotICA8anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTCgiL3dzZXhwbG9yZXIvY3NzL3RyZWV2aWV3LmNzcyIpJT4iPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIi93c2V4cGxvcmVyL2Nzcy93aW5kb3dzLmNzcyIpJT4iPgotPC9oZWFkPgotPGJvZHk+Ci08Y2VudGVyPgotPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfRVJST1JfU0VTU0lPTl9USU1FRF9PVVQiKSU+Ci08YnI+Ci08JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9SRVNUQVJUX1NFU1NJT04iKSU+Ci08L2NlbnRlcj4KLTxicj4KLTwvYm9keT4KLTwvaHRtbD4gICAKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9TaG93UGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1Nob3dQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNzFkNDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1Nob3dQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgUGVyc3BlY3RpdmUgY3VycmVudFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRDdXJyZW50UGVyc3BlY3RpdmUoKTsKLSAgIFN0cmluZ0J1ZmZlciBmcmFtZXNldHNGaWxlID0gbmV3IFN0cmluZ0J1ZmZlcigiLyIpOwotICAgZnJhbWVzZXRzRmlsZS5hcHBlbmQoY3VycmVudFBlcnNwZWN0aXZlLmdldEZyYW1lc2V0c0ZpbGUoKSk7Ci0gICAKLSAgIFN0cmluZ0J1ZmZlciBmcmFtZXNldHNGb3JtID0gbmV3IFN0cmluZ0J1ZmZlcigiLyIpOwotICAgZnJhbWVzZXRzRm9ybS5hcHBlbmQoY3VycmVudFBlcnNwZWN0aXZlLmdldFByb2Nlc3NGcmFtZXNldHNGb3JtKCkpOwotICAgCi0gICBpbnQgdGFyZ2V0UGVyc3BlY3RpdmVJZDsKLSAgIGJvb2xlYW4gaXNIaXN0b3J5OwotICAgdHJ5Ci0gICB7Ci0gICAgIHRhcmdldFBlcnNwZWN0aXZlSWQgPSBJbnRlZ2VyLnBhcnNlSW50KHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRSkpOwotICAgICBpc0hpc3RvcnkgPSAoIjEiLmVxdWFscyhyZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuSVNISVNUT1JZKSkpOwotICAgfQotICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKQotICAgewotICAgICB0YXJnZXRQZXJzcGVjdGl2ZUlkID0gQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1VEREk7Ci0gICAgIGlzSGlzdG9yeSA9IGZhbHNlOwotICAgfQotICAgCi0gICBpZiAoY29udHJvbGxlci5pc1BlcnNwZWN0aXZlQ29udGVudEJsYW5rKCkpCi0gICB7Ci0gICAgIGNvbnRyb2xsZXIuZW5hYmxlUGVyc3BlY3RpdmVDb250ZW50QmxhbmsoZmFsc2UpOwotICAgICBjb250cm9sbGVyLmFkZFRvSGlzdG9yeShjdXJyZW50UGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVJZCgpLFNob3dQZXJzcGVjdGl2ZUFjdGlvbi5nZXRBY3Rpb25MaW5rKHRhcmdldFBlcnNwZWN0aXZlSWQsdHJ1ZSkpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9zd2l0Y2hwZXJzcGVjdGl2ZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgfQotICAgZWxzZQotICAgewotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9ZnJhbWVzZXRzRmlsZS50b1N0cmluZygpJT4iIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPGpzcDp1c2VCZWFuIGlkPSJmb3JtQWN0aW9uIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIGZvcm1BY3Rpb24uYXBwZW5kKGN1cnJlbnRQZXJzcGVjdGl2ZS5nZXRTd2l0Y2hQZXJzcGVjdGl2ZUZvcm1BY3Rpb25MaW5rKHRhcmdldFBlcnNwZWN0aXZlSWQsaXNIaXN0b3J5KSk7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUZyYW1lTmFtZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOmluY2x1ZGUgcGFnZT0iPCU9ZnJhbWVzZXRzRm9ybS50b1N0cmluZygpJT4iIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgcHJvY2Vzc0ZyYW1lc2V0U2l6ZXMoZG9jdW1lbnQuZm9ybXNbMF0pOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci08JQotICAgfQotJT4gICAKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9Ub2dnbGVOb2RlQWN0aW9uLmluYyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9Ub2dnbGVOb2RlQWN0aW9uLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDczMTliYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvVG9nZ2xlTm9kZUFjdGlvbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlCi0gICBQZXJzcGVjdGl2ZSBjdXJyZW50UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IFVURi04Ij4KLTwlCi0gICBTdHJpbmdCdWZmZXIgcGFuZXNGaWxlID0gbmV3IFN0cmluZ0J1ZmZlcigiLyIpOwotICAgcGFuZXNGaWxlLmFwcGVuZChjdXJyZW50UGVyc3BlY3RpdmUuZ2V0UGFuZXNGaWxlKCkpOwotJT4gICAgIAotPGpzcDppbmNsdWRlIHBhZ2U9IjwlPXBhbmVzRmlsZS50b1N0cmluZygpJT4iIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+ICAKLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgaWYgKCFhY3Rpb25SZXN1bHQpCi0gICB7Ci0gICAgIGlmIChhY3Rpb24uaXNTdGFsZUJyZWFkQ3J1bWIoKSkKLSAgICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAvLyBSZXJ1biB0aGUgaGlzdG9yeSBhY3Rpb24gdG8gZ2V0IHRoZSBuZXh0IGF2YWlsYWJsZSBpdGVtLgotICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0TmV4dEhpc3RvcnlBY3Rpb25MaW5rKCkpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgICAgfQotICAgfQotICAgZWxzZQotICAgewotICAgICBTdHJpbmcgdHJlZUNvbnRlbnRWYXIgPSBhY3Rpb24uZ2V0VHJlZUNvbnRlbnRWYXIoKTsKLSAgICAgaWYgKHRyZWVDb250ZW50VmFyICE9IG51bGwpCi0gICAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgaWYgKGlzTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcigpKQotICB7Ci0gICAgLy8gVXBkYXRlIHRoZSBwZXJzcGVjdGl2ZS4KLSAgICA8JT10cmVlQ29udGVudFZhciU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0VHJlZUNvbnRlbnRQYWdlKCkpKSU+IjsKLSAgfQotICBlbHNlCi0gICAgcGVyc3BlY3RpdmVDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChjdXJyZW50UGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50UGFnZSgpKSklPiI7Ci08L3NjcmlwdD4KLTwlCi0gICAgIH0KLSAgICAgaWYgKGFjdGlvbi5yZXF1aXJlc05vZGVTZWxlY3Rpb24oKSkKLSAgICAgewotICAgICAgIFN0cmluZyBwcm9wZXJ0aWVzQ29udGFpbmVyVmFyID0gYWN0aW9uLmdldFByb3BlcnRpZXNDb250YWluZXJWYXIoKTsKLSAgICAgICBpZiAocHJvcGVydGllc0NvbnRhaW5lclZhciAhPSBudWxsKQotICAgICAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgaWYgKGlzTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcigpKQotICB7Ci0gICAgLy8gVXBkYXRlIHRoZSBwcm9wZXJ0aWVzIGNvbnRhaW5lci4KLSAgICA8JT1wcm9wZXJ0aWVzQ29udGFpbmVyVmFyJT4ubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGFjdGlvbi5nZXRQcm9wZXJ0aWVzQ29udGFpbmVyUGFnZSgpKSklPiI7Ci0gIH0KLTwvc2NyaXB0PgotPCUKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLSU+Ci08L2JvZHk+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9hY3Rpb25zL1ZhbGlkYXRlRWRpdEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvVmFsaWRhdGVFZGl0QWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBiMDRmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvVmFsaWRhdGVFZGl0QWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPCUKLSAgIFN0cmluZ0J1ZmZlciBwYW5lc0ZpbGUgPSBuZXcgU3RyaW5nQnVmZmVyKCIvIik7Ci0gICBwYW5lc0ZpbGUuYXBwZW5kKGNvbnRyb2xsZXIuZ2V0Q3VycmVudFBlcnNwZWN0aXZlKCkuZ2V0UGFuZXNGaWxlKCkpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSI8JT1wYW5lc0ZpbGUudG9TdHJpbmcoKSU+IiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICBJbXBvcnRUb1dvcmtiZW5jaEFjdGlvbiBhY3Rpb24gPSAoSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24pc2Vzc2lvbi5nZXRBdHRyaWJ1dGUoQWN0aW9uSW5wdXRzLklNUE9SVF9BQ1RJT04pOwotICAgYm9vbGVhbiByZXN1bHQgPSBhY3Rpb24udmFsaWRhdGVFZGl0KCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGlmICg8JT1yZXN1bHQlPikKLSAgICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChXcml0ZVdTRExUb1dvcmtiZW5jaEFjdGlvbi5nZXRBY3Rpb25MaW5rKCkpKSU+IjsKLSAgZWxzZQotICB7Ci08JSAgCi0gICBTdHJpbmcgc3RhdHVzQ29udGVudFZhciA9IGFjdGlvbi5nZXRTdGF0dXNDb250ZW50VmFyKCk7Ci0gICBpZiAoc3RhdHVzQ29udGVudFZhciAhPSBudWxsKQotICAgewotJT4gICAgCi0gICAgPCU9c3RhdHVzQ29udGVudFZhciU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0U3RhdHVzQ29udGVudFBhZ2UoKSkpJT4iOwotPCUKLSAgIH0KLSU+Ci0gIH0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPiAKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9Xcml0ZVdTRExUb1dvcmtiZW5jaEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2FjdGlvbnMvV3JpdGVXU0RMVG9Xb3JrYmVuY2hBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzI5YTJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvYWN0aW9ucy9Xcml0ZVdTRExUb1dvcmtiZW5jaEFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwlCi0gICBTdHJpbmdCdWZmZXIgcGFuZXNGaWxlID0gbmV3IFN0cmluZ0J1ZmZlcigiLyIpOwotICAgcGFuZXNGaWxlLmFwcGVuZChjb250cm9sbGVyLmdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpLmdldFBhbmVzRmlsZSgpKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iPCU9cGFuZXNGaWxlLnRvU3RyaW5nKCklPiIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24gYWN0aW9uID0gKEltcG9ydFRvV29ya2JlbmNoQWN0aW9uKXNlc3Npb24uZ2V0QXR0cmlidXRlKEFjdGlvbklucHV0cy5JTVBPUlRfQUNUSU9OKTsKLSAgIGFjdGlvbi5ydW4oKTsKLSAgIFN0cmluZyBzdGF0dXNDb250ZW50VmFyID0gYWN0aW9uLmdldFN0YXR1c0NvbnRlbnRWYXIoKTsKLSAgIGlmIChzdGF0dXNDb250ZW50VmFyICE9IG51bGwpCi0gICB7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIDwlPXN0YXR1c0NvbnRlbnRWYXIlPi5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFN0YXR1c0NvbnRlbnRQYWdlKCkpKSU+IjsKLTwvc2NyaXB0PiAgCi08JQotICAgfQotJT4KLTwvYm9keT4KLTwvaHRtbD4gCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2NhbGVuZGFyX2Jyb3dzZXIuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jYWxlbmRhcl9icm93c2VyLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIwYzNhMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2NhbGVuZGFyX2Jyb3dzZXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubmV0LioiICU+Ci0KLTwlCi0gICBTdHJpbmcgc2Vzc2lvbklkID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCk7Ci0gICBIdHRwU2Vzc2lvbiBjdXJyZW50U2Vzc2lvbiA9IChIdHRwU2Vzc2lvbilhcHBsaWNhdGlvbi5nZXRBdHRyaWJ1dGUoc2Vzc2lvbklkKTsKLSAgIENvbnRyb2xsZXIgY29udHJvbGxlciA9IChDb250cm9sbGVyKWN1cnJlbnRTZXNzaW9uLmdldEF0dHJpYnV0ZSgiY29udHJvbGxlciIpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+Ci0gICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJUSVRMRV9DQUxFTkRBUl9CUk9XU0VSIiklPgotICA8L3RpdGxlPgotPC9oZWFkPgotPGZyYW1lc2V0IHJvd3M9IjMzLCoiIGJvcmRlcj0wIGJnY29sb3I9IiNFQ0U5RDgiPgotPCUKLSAgIFN0cmluZ0J1ZmZlciBsaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigiY2FsZW5kYXJfdG9vbGJhci5qc3A/Iik7Ci0gICBsaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuU0VTU0lPTklEKS5hcHBlbmQoJz0nKS5hcHBlbmQoc2Vzc2lvbklkKTsKLSU+ICAgCi0gIDxmcmFtZSBuYW1lPSI8JT1GcmFtZU5hbWVzLkNBTEVOREFSX1RPT0xCQVIlPiIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfQ0FMRU5EQVJfVE9PTEJBUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGxpbmsudG9TdHJpbmcoKSkpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLTwlCi0gICBsaW5rLnNldExlbmd0aCgwKTsKLSAgIGxpbmsuYXBwZW5kKCJjYWxlbmRhcl9jb250ZW50LmpzcD8iKTsKLSAgIGxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpLmFwcGVuZCgnPScpLmFwcGVuZChzZXNzaW9uSWQpOwotICAgbGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEUpLmFwcGVuZCgnPScpLmFwcGVuZChyZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRSkpOwotJT4gICAgIAotICA8ZnJhbWUgbmFtZT0iPCU9RnJhbWVOYW1lcy5DQUxFTkRBUl9DT05URU5UJT4iIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX0NBTEVOREFSX0NPTlRFTlQiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChsaW5rLnRvU3RyaW5nKCkpKSU+IiBub3Jlc2l6ZSBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0wIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+Ci08L2ZyYW1lc2V0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jYWxlbmRhcl9jb250ZW50LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvY2FsZW5kYXJfY29udGVudC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ZTQ2ZTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jYWxlbmRhcl9jb250ZW50LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDYyNyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPCUKLSAgIFN0cmluZyBzZXNzaW9uSWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuU0VTU0lPTklEKTsKLSAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSWQpOwotICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpY3VycmVudFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci0gICBpbnQgY2FsZW5kYXJUeXBlID0gSW50ZWdlci5wYXJzZUludChyZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRSkpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgotICA8dGl0bGU+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9DQUxFTkRBUl9DT05URU5UIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL2NhbGVuZGFyLmNzcyIpKSU+Ij4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdmFyIGRheXMgPSBuZXcgQXJyYXkoIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0hfU1VOREFZIikpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1NIX01PTkRBWSIpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TSF9UVUVTREFZIikpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1NIX1dFRE5FU0RBWSIpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TSF9USFVSU0RBWSIpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TSF9GUklEQVkiKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0hfU0FUVVJEQVkiKSklPiIpOwotICB2YXIgbW9udGhzID0gbmV3IEFycmF5KCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0pBTlVBUlkiKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRkVCUlVBUlkiKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTUFSQ0giKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQVBSSUwiKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTUFZIikpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0pVTkUiKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfSlVMWSIpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9BVUdVU1QiKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0VQVEVNQkVSIikpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX09DVE9CRVIiKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTk9WRU1CRVIiKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfREVDRU1CRVIiKSklPiIpOwotICB2YXIgZW5nTW9udGhzID0gbmV3IEFycmF5KCJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciIpOwotICB2YXIgY3VycmVudERhdGU7Ci0gIHZhciBjYWxlbmRhckJvZHlTZXQgPSBmYWxzZTsKLSAgdmFyIGNhbGVuZGFyQm9keTsKLSAgdmFyIHNhdmVkWWVhclRleHRWYWx1ZSA9ICIiOwotCi08JQotICAgLy8gUmVndWxhciBleHByZXNzaW9ucwotICAgLy8gdGltZSAgICAgICAtIEhIOk1NOlNTWy5TU1NdCi0gICAvLyB5ZWFyICAgICAgIC0gWSoKLSAgIC8vIGRhdGUgICAgICAgLSBZWVlZKy1NTS1ERAotICAgLy8gZGF0ZVRpbWUgICAtIFlZWVkrLU1NLUREVEhIOk1NOlNTWy5TU1NdWgotICAgLy8gZ1llYXJNb250aCAtIFlZWVkrLU1NIAotICAgLy8gZ0RheSAgICAgICAtIC0tLURECi0gICAvLyBnTW9udGhEYXkgIC0gLS1NTS1ERAotJT4KLSAgdmFyIHRpbWVSZWdFeHAgPSAvXihcZHsyfSk6KFxkezJ9KTooXGR7Mn0pKFwuXGR7M30pPyQvOwotICB2YXIgeWVhclJlZ0V4cCA9IC9eKFxkKikkLzsKLSAgdmFyIGRhdGVSZWdFeHAgPSAvXihcZHs0LH0pLShcZHsyfSktKFxkezJ9KSQvOwotICB2YXIgZGF0ZVRpbWVSZWdFeHAgPSAvXihcZHs0LH0pLShcZHsyfSktKFxkezJ9KVQoXGR7Mn0pOihcZHsyfSk6KFxkezJ9KShcLlxkezN9KT9aJC87Ci0gIHZhciBnWWVhck1vbnRoUmVnRXhwID0gL14oXGR7NCx9KS0oXGR7Mn0pJC87Ci0gIHZhciBnRGF5UmVnRXhwID0gL14tezN9KFxkezJ9KSQvOwotICB2YXIgZ01vbnRoRGF5UmVnRXhwID0gL14tezJ9KFxkezJ9KS0oXGR7Mn0pJC87Ci0KLSAgZnVuY3Rpb24gdmFsaWRhdGVZZWFyU3RyaW5nKHllYXJTdHJpbmcpCi0gIHsKLSAgICByZXR1cm4geWVhclJlZ0V4cC50ZXN0KHllYXJTdHJpbmcpOwotICB9Ci0KLSAgZnVuY3Rpb24gZ2V0VGltZVBhcmFtZXRlcnModGltZVN0cmluZykKLSAgewotICAgIHJldHVybiB0aW1lUmVnRXhwLmV4ZWModGltZVN0cmluZyk7Ci0gIH0KLQotICBmdW5jdGlvbiBnZXREYXRlUGFyYW1ldGVycyhkYXRlU3RyaW5nKQotICB7Ci0gICAgcmV0dXJuIGRhdGVSZWdFeHAuZXhlYyhkYXRlU3RyaW5nKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGdldERhdGVUaW1lUGFyYW1ldGVycyhkYXRlVGltZVN0cmluZykKLSAgewotICAgIHJldHVybiBkYXRlVGltZVJlZ0V4cC5leGVjKGRhdGVUaW1lU3RyaW5nKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gZ2V0R1llYXJNb250aFBhcmFtZXRlcnMoZ1llYXJNb250aFN0cmluZykKLSAgewotICAgIHJldHVybiBnWWVhck1vbnRoUmVnRXhwLmV4ZWMoZ1llYXJNb250aFN0cmluZyk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGdldEdEYXlQYXJhbWV0ZXJzKGdEYXlTdHJpbmcpCi0gIHsKLSAgICByZXR1cm4gZ0RheVJlZ0V4cC5leGVjKGdEYXlTdHJpbmcpOwotICB9Ci0gIAotICBmdW5jdGlvbiBnZXRHTW9udGhEYXlQYXJhbWV0ZXJzKGdNb250aERheVN0cmluZykKLSAgewotICAgIHJldHVybiBnTW9udGhEYXlSZWdFeHAuZXhlYyhnTW9udGhEYXlTdHJpbmcpOwotICB9Ci0gIAotPCUKLSAgIC8vIEhIOk1NOlNTWy5TU1NdCi0lPgotICBmdW5jdGlvbiBzZXJpYWxpemVUaW1lKGhvdXJzLG1pbnV0ZXMsc2Vjb25kcyxtaWxsaXNlY29uZHMpCi0gIHsKLSAgICB2YXIgdGltZVN0cmluZyA9ICIiOwotICAgIGlmIChob3VycyA8IDEwKQotICAgICAgdGltZVN0cmluZyArPSAiMCI7Ci0gICAgdGltZVN0cmluZyArPSBob3VycyArICI6IjsKLSAgICBpZiAobWludXRlcyA8IDEwKQotICAgICAgdGltZVN0cmluZyArPSAiMCI7Ci0gICAgdGltZVN0cmluZyArPSBtaW51dGVzICsgIjoiOwotICAgIGlmIChzZWNvbmRzIDwgMTApCi0gICAgICB0aW1lU3RyaW5nICs9ICIwIjsKLSAgICB0aW1lU3RyaW5nICs9IHNlY29uZHM7Ci0gICAgaWYgKG1pbGxpc2Vjb25kcyA+IDApCi0gICAgewotICAgICAgdGltZVN0cmluZyArPSAiLiI7Ci0gICAgICBpZiAobWlsbGlzZWNvbmRzIDwgMTAwKQotICAgICAgewotICAgICAgICBpZiAobWlsbGlzZWNvbmRzIDwgMTApCi0gICAgICAgICAgdGltZVN0cmluZyArPSAiMDAiOwotICAgICAgICBlbHNlCi0gICAgICAgICAgdGltZVN0cmluZyArPSAiMCI7Ci0gICAgICB9Ci0gICAgICB0aW1lU3RyaW5nICs9IG1pbGxpc2Vjb25kczsKLSAgICB9Ci0gICAgcmV0dXJuIHRpbWVTdHJpbmc7Ci0gIH0KLQotPCUKLSAgIC8vIFlZWVkrLU1NCi0lPiAgIAotICBmdW5jdGlvbiBzZXJpYWxpemVHWWVhck1vbnRoKGZ1bGxZZWFyLG1vbnRoKQotICB7Ci0gICAgdmFyIGdZZWFyTW9udGhTdHJpbmcgPSAiIjsKLSAgICBpZiAoZnVsbFllYXIgPCAxMDAwKQotICAgIHsKLSAgICAgIGlmIChmdWxsWWVhciA8IDEwMCkKLSAgICAgIHsKLSAgICAgICAgaWYgKGZ1bGxZZWFyIDwgMTApCi0gICAgICAgICAgZ1llYXJNb250aFN0cmluZyArPSAiMDAwIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGdZZWFyTW9udGhTdHJpbmcgKz0gIjAwIjsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgZ1llYXJNb250aFN0cmluZyArPSAiMCI7Ci0gICAgfQotICAgIGdZZWFyTW9udGhTdHJpbmcgKz0gZnVsbFllYXIrIi0iOwotICAgIGlmIChtb250aCA8IDEwKQotICAgICAgZ1llYXJNb250aFN0cmluZyArPSAiMCI7Ci0gICAgZ1llYXJNb250aFN0cmluZyArPSBtb250aDsKLSAgICByZXR1cm4gZ1llYXJNb250aFN0cmluZzsgICAgCi0gIH0KLSAgCi08JQotICAgLy8gWVlZWSstTU0tREQKLSU+Ci0gIGZ1bmN0aW9uIHNlcmlhbGl6ZURhdGUoZnVsbFllYXIsbW9udGgsZGF0ZSkKLSAgewotICAgIHZhciBkYXRlU3RyaW5nID0gc2VyaWFsaXplR1llYXJNb250aChmdWxsWWVhcixtb250aCkgKyAiLSI7Ci0gICAgaWYgKGRhdGUgPCAxMCkKLSAgICAgIGRhdGVTdHJpbmcgKz0gIjAiOwotICAgIGRhdGVTdHJpbmcgKz0gZGF0ZTsKLSAgICByZXR1cm4gZGF0ZVN0cmluZzsKLSAgfQotICAKLSAgZnVuY3Rpb24gc2VyaWFsaXplR0RheShkYXRlKQotICB7Ci0gICAgdmFyIGdEYXlTdHJpbmcgPSAiLS0tIjsKLSAgICBpZiAoZGF0ZSA8IDEwKQotICAgICAgZ0RheVN0cmluZyArPSAiMCI7Ci0gICAgZ0RheVN0cmluZyArPSBkYXRlOwotICAgIHJldHVybiBnRGF5U3RyaW5nOwotICB9Ci0gIAotICBmdW5jdGlvbiBzZXJpYWxpemVHTW9udGhEYXkobW9udGgsZGF0ZSkKLSAgewotICAgIHZhciBnTW9udGhEYXlTdHJpbmcgPSAiLS0iOwotICAgIGlmIChtb250aCA8IDEwKQotICAgICAgZ01vbnRoRGF5U3RyaW5nICs9ICIwIjsKLSAgICBnTW9udGhEYXlTdHJpbmcgKz0gbW9udGgrIi0iOwotICAgIGlmIChkYXRlIDwgMTApCi0gICAgICBnTW9udGhEYXlTdHJpbmcgKz0gIjAiOwotICAgIGdNb250aERheVN0cmluZyArPSBkYXRlOwotICAgIHJldHVybiBnTW9udGhEYXlTdHJpbmc7Ci0gIH0gICAgCi0KLSAgZnVuY3Rpb24gc2V0RGF0ZVVzaW5nR0RheVBhcmFtZXRlcnMoZ0RheVBhcmFtZXRlcnMsZGF0ZU9iaikKLSAgewotICAgIGlmIChnRGF5UGFyYW1ldGVycyAhPSBudWxsKQotICAgICAgZGF0ZU9iai5zZXREYXRlKGdEYXlQYXJhbWV0ZXJzWzFdKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gc2V0RGF0ZVVzaW5nR01vbnRoRGF5UGFyYW1ldGVycyhnTW9udGhEYXlQYXJhbWV0ZXJzLGRhdGVPYmopCi0gIHsKLSAgICBpZiAoZ01vbnRoRGF5UGFyYW1ldGVycyAhPSBudWxsKQotICAgIHsKLSAgICAgIGRhdGVPYmouc2V0TW9udGgoZ01vbnRoRGF5UGFyYW1ldGVyc1sxXS0xKTsKLSAgICAgIGRhdGVPYmouc2V0RGF0ZShnTW9udGhEYXlQYXJhbWV0ZXJzWzJdKTsKLSAgICB9Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIHNldERhdGVVc2luZ0dZZWFyTW9udGhQYXJhbWV0ZXJzKGdZZWFyTW9udGhQYXJhbWV0ZXJzLGRhdGVPYmopCi0gIHsKLSAgICBpZiAoZ1llYXJNb250aFBhcmFtZXRlcnMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBkYXRlT2JqLnNldEZ1bGxZZWFyKGdZZWFyTW9udGhQYXJhbWV0ZXJzWzFdKTsKLSAgICAgIGRhdGVPYmouc2V0TW9udGgoZ1llYXJNb250aFBhcmFtZXRlcnNbMl0tMSk7Ci0gICAgfQotICB9Ci0gIAotICBmdW5jdGlvbiBzZXREYXRlVXNpbmdEYXRlUGFyYW1ldGVycyhkYXRlUGFyYW1ldGVycyxkYXRlT2JqKQotICB7Ci0gICAgaWYgKGRhdGVQYXJhbWV0ZXJzICE9IG51bGwpCi0gICAgewotICAgICAgc2V0RGF0ZVVzaW5nR1llYXJNb250aFBhcmFtZXRlcnMoZGF0ZVBhcmFtZXRlcnMsZGF0ZU9iaik7Ci0gICAgICBkYXRlT2JqLnNldERhdGUoZGF0ZVBhcmFtZXRlcnNbM10pOwotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIHNldERhdGVVc2luZ0RhdGVUaW1lUGFyYW1ldGVycyhkYXRlVGltZVBhcmFtZXRlcnMsZGF0ZU9iaikKLSAgewotICAgIGlmIChkYXRlVGltZVBhcmFtZXRlcnMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBzZXREYXRlVXNpbmdEYXRlUGFyYW1ldGVycyhkYXRlVGltZVBhcmFtZXRlcnMsZGF0ZU9iaik7Ci0gICAgICBkYXRlT2JqLnNldFVUQ0hvdXJzKGRhdGVUaW1lUGFyYW1ldGVyc1s0XSk7Ci0gICAgICBkYXRlT2JqLnNldFVUQ01pbnV0ZXMoZGF0ZVRpbWVQYXJhbWV0ZXJzWzVdKTsKLSAgICAgIGRhdGVPYmouc2V0VVRDU2Vjb25kcyhkYXRlVGltZVBhcmFtZXRlcnNbNl0pOwotICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IGRhdGVUaW1lUGFyYW1ldGVyc1s3XTsKLSAgICAgIGlmIChtaWxsaXNlY29uZHMubGVuZ3RoID4gMCkKLTwlCi0gICAvLyBFbGltaW5hdGUgdGhlIGRlY2ltYWwgcG9pbnQKLSU+Ci0gICAgICAgIGRhdGVPYmouc2V0VVRDTWlsbGlzZWNvbmRzKG1pbGxpc2Vjb25kcy5zdWJzdHIoMSkpOwotICAgICAgZWxzZQotICAgICAgICBkYXRlT2JqLnNldFVUQ01pbGxpc2Vjb25kcygwKTsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBzZXREYXRlVXNpbmdUaW1lUGFyYW1ldGVycyh0aW1lUGFyYW1ldGVycyxkYXRlT2JqKQotICB7Ci0gICAgaWYgKHRpbWVQYXJhbWV0ZXJzICE9IG51bGwpCi0gICAgewotICAgICAgZGF0ZU9iai5zZXRIb3Vycyh0aW1lUGFyYW1ldGVyc1sxXSk7Ci0gICAgICBkYXRlT2JqLnNldE1pbnV0ZXModGltZVBhcmFtZXRlcnNbMl0pOwotICAgICAgZGF0ZU9iai5zZXRTZWNvbmRzKHRpbWVQYXJhbWV0ZXJzWzNdKTsKLSAgICAgIHZhciBtaWxsaXNlY29uZHMgPSB0aW1lUGFyYW1ldGVyc1s0XTsKLSAgICAgIGlmIChtaWxsaXNlY29uZHMubGVuZ3RoID4gMCkKLTwlCi0gICAvLyBFbGltaW5hdGUgdGhlIGRlY2ltYWwgcG9pbnQKLSU+Ci0gICAgICAgIGRhdGVPYmouc2V0TWlsbGlzZWNvbmRzKG1pbGxpc2Vjb25kcy5zdWJzdHIoMSkpOwotICAgICAgZWxzZQotICAgICAgICBkYXRlT2JqLnNldE1pbGxpc2Vjb25kcygwKTsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBpbml0KCkKLSAgewotICAgIHZhciBkID0gbmV3IERhdGUoKTsKLTwlCi0gICBzd2l0Y2ggKGNhbGVuZGFyVHlwZSkKLSAgIHsKLSAgICAgY2FzZSBBY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRV9EQVRFOgotJT4KLSAgICBzZXREYXRlVXNpbmdEYXRlUGFyYW1ldGVycyhnZXREYXRlUGFyYW1ldGVycyh0b3Aub3BlbmVyLmNhbGVuZGFyVGFyZ2V0LnZhbHVlKSxkKTsKLTwlCi0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgQWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEVfREFURVRJTUU6Ci0lPgotICAgIHNldERhdGVVc2luZ0RhdGVUaW1lUGFyYW1ldGVycyhnZXREYXRlVGltZVBhcmFtZXRlcnModG9wLm9wZW5lci5jYWxlbmRhclRhcmdldC52YWx1ZSksZCk7Ci08JQotICAgICAgIGJyZWFrOwotICAgICBjYXNlIEFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0dZRUFSTU9OVEg6Ci0lPgotICAgIHNldERhdGVVc2luZ0dZZWFyTW9udGhQYXJhbWV0ZXJzKGdldEdZZWFyTW9udGhQYXJhbWV0ZXJzKHRvcC5vcGVuZXIuY2FsZW5kYXJUYXJnZXQudmFsdWUpLGQpOwotPCUgICAgIAotICAgICBjYXNlIEFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0dEQVk6Ci0lPgotICAgIHNldERhdGVVc2luZ0dEYXlQYXJhbWV0ZXJzKGdldEdEYXlQYXJhbWV0ZXJzKHRvcC5vcGVuZXIuY2FsZW5kYXJUYXJnZXQudmFsdWUpLGQpOwotPCUgICAKLSAgICAgY2FzZSBBY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRV9HTU9OVEhEQVk6Ci0lPgotICAgIHNldERhdGVVc2luZ0dNb250aERheVBhcmFtZXRlcnMoZ2V0R01vbnRoRGF5UGFyYW1ldGVycyh0b3Aub3BlbmVyLmNhbGVuZGFyVGFyZ2V0LnZhbHVlKSxkKTsKLTwlICAgICAgIAotICAgICBkZWZhdWx0OgotICAgICAgIGJyZWFrOwotICAgfQotJT4KLSAgICBnZW5lcmF0ZUNhbGVuZGFyKGQpOwotICAgIHZhciBtb250aFNlbGVjdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vbnRoU2VsZWN0b3IiKTsKLSAgICBmb3IgKHZhciBpPTA7aTxtb250aHMubGVuZ3RoO2krKykKLSAgICAgIG1vbnRoU2VsZWN0b3Iub3B0aW9uc1tpXSA9IG5ldyBPcHRpb24obW9udGhzW2ldLGkpOwotICAgIGdlbmVyYXRlQ2FsZW5kYXIoZCk7Ci0gIH0KLQotICBmdW5jdGlvbiBpbml0Q2FsZW5kYXJIZWFkZXIodGFibGUpCi0gIHsKLSAgICBjYWxlbmRhckJvZHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUQk9EWSIpOwotICAgIHZhciBoZWFkZXJSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIGZvciAodmFyIGk9MDtpPGRheXMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKLSAgICAgIGhlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkYXlzW2ldKSk7Ci0gICAgICBoZWFkZXIuY2xhc3NOYW1lPSJoZWFkZXJjb2xvciI7Ci0gICAgICBoZWFkZXJSb3cuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKLSAgICB9Ci0gICAgY2FsZW5kYXJCb2R5LmFwcGVuZENoaWxkKGhlYWRlclJvdyk7Ci0gICAgdGFibGUuYXBwZW5kQ2hpbGQoY2FsZW5kYXJCb2R5KTsKLSAgICBjYWxlbmRhckJvZHlTZXQgPSB0cnVlOwotICB9Ci0KLSAgZnVuY3Rpb24gZ2VuZXJhdGVDYWxlbmRhcihkYXRlKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbGVuZGFyIik7Ci0gICAgdmFyIGRhdGVEYXRlID0gZGF0ZS5nZXREYXRlKCk7Ci0gICAgdmFyIGRhdGVNb250aCA9IGRhdGUuZ2V0TW9udGgoKTsKLSAgICB2YXIgZGF0ZUZ1bGxZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpOwotICAgIHZhciBkYXRlSXRlcmF0b3IgPSBuZXcgRGF0ZSgpOwotICAgIGRhdGVJdGVyYXRvci5zZXRUaW1lKERhdGUucGFyc2UoZW5nTW9udGhzW2RhdGVNb250aF0rIiAxLCAiK2RhdGVGdWxsWWVhcikpOwotICAgIHZhciBzdGFydGluZ0RhdGUgPSBkYXRlSXRlcmF0b3IuZ2V0RGF0ZSgpOyAvLyAxLDIsMy4uLgotICAgIHZhciBzdGFydGluZ0RheSA9IGRhdGVJdGVyYXRvci5nZXREYXkoKTsgLy8gU3VuLE1vbixUdWVzLi4uCi0gICAgY2xlYXJDYWxlbmRhcigpOwotICAgIGZvciAodmFyIHJvd3M9MDtyb3dzPDY7cm93cysrKQotICAgIHsKLSAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgICAgZm9yICh2YXIgY29sdW1ucz0wO2NvbHVtbnM8ZGF5cy5sZW5ndGg7Y29sdW1ucysrKQotICAgICAgewotICAgICAgICB2YXIgY29sdW1uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgdmFyIGRhdGVJdGVyYXRvckRhdGUgPSBkYXRlSXRlcmF0b3IuZ2V0RGF0ZSgpOwotICAgICAgICB2YXIgZGF0ZUl0ZXJhdG9yTW9udGggPSBkYXRlSXRlcmF0b3IuZ2V0TW9udGgoKTsKLSAgICAgICAgdmFyIGRhdGVJdGVyYXRvckZ1bGxZZWFyID0gZGF0ZUl0ZXJhdG9yLmdldEZ1bGxZZWFyKCk7Ci0gICAgICAgIGNvbHVtbi53aWR0aCA9IDI0OwotICAgICAgICBjb2x1bW4uaGVpZ2h0ID0gMjQ7Ci0gICAgICAgIGNvbHVtbi5hbGlnbiA9ICJjZW50ZXIiOwotICAgICAgICBjb2x1bW4udmFsaWduID0gImNlbnRlciI7Ci0gICAgICAgIGNvbHVtbi5jbGFzc05hbWUgPSAiY2FsZW5kYXJ0YWJsZWNlbGxzIjsKLSAgICAgICAgaWYgKChkYXRlSXRlcmF0b3JEYXRlID09IHN0YXJ0aW5nRGF0ZSAmJiBjb2x1bW5zIDwgc3RhcnRpbmdEYXkpIHx8IChkYXRlSXRlcmF0b3JNb250aCAhPSBkYXRlTW9udGgpKQotICAgICAgICAgIGNvbHVtbi5pbm5lckhUTUwgPSAiJm5ic3A7IjsKLSAgICAgICAgZWxzZSBpZiAoZGF0ZUl0ZXJhdG9yTW9udGggPT0gZGF0ZU1vbnRoKQotICAgICAgICB7Ci0gICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgICAgICAgc3dpdGNoICg8JT1jYWxlbmRhclR5cGUlPikKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIDwlPUFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0RBVEUlPjoKLSAgICAgICAgICAgICAgbGluay5ocmVmID0gImphdmFzY3JpcHQ6dHJhbnNmZXJEYXRlKCIrZGF0ZUl0ZXJhdG9yRGF0ZSsiKSI7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA8JT1BY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRV9EQVRFVElNRSU+OgotICAgICAgICAgICAgICBsaW5rLmhyZWYgPSAiamF2YXNjcmlwdDp0cmFuc2ZlckRhdGVUaW1lKCIrZGF0ZUl0ZXJhdG9yRGF0ZSsiKSI7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA8JT1BY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRV9HWUVBUk1PTlRIJT46Ci0gICAgICAgICAgICAgIGxpbmsuaHJlZiA9ICJqYXZhc2NyaXB0OnRyYW5zZmVyR1llYXJNb250aCgpIjsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDwlPUFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0dEQVklPjoKLSAgICAgICAgICAgICAgbGluay5ocmVmID0gImphdmFzY3JpcHQ6dHJhbnNmZXJHRGF5KCIrZGF0ZUl0ZXJhdG9yRGF0ZSsiKSI7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA8JT1BY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRV9HTU9OVEhEQVklPjoKLSAgICAgICAgICAgICAgbGluay5ocmVmID0gImphdmFzY3JpcHQ6dHJhbnNmZXJHTW9udGhEYXkoIitkYXRlSXRlcmF0b3JEYXRlKyIpIjsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGF0ZUl0ZXJhdG9yRGF0ZSkpOwotICAgICAgICAgIGNvbHVtbi5hcHBlbmRDaGlsZChsaW5rKTsKLSAgICAgICAgICBpZiAoZGF0ZUl0ZXJhdG9yRGF0ZSA9PSBkYXRlRGF0ZSAmJiBkYXRlSXRlcmF0b3JGdWxsWWVhciA9PSBkYXRlRnVsbFllYXIpCi0gICAgICAgICAgICBjb2x1bW4uY2xhc3NOYW1lID0gInRvZGF5dGFibGVjZWxsIjsKLSAgICAgICAgICBkYXRlSXRlcmF0b3JEYXRlKys7Ci0gICAgICAgICAgZGF0ZUl0ZXJhdG9yLnNldFRpbWUoRGF0ZS5wYXJzZShlbmdNb250aHNbZGF0ZUl0ZXJhdG9yTW9udGhdKyIgIitkYXRlSXRlcmF0b3JEYXRlKyIsICIrZGF0ZUl0ZXJhdG9yLmdldEZ1bGxZZWFyKCkpKTsKLSAgICAgICAgfQotICAgICAgICByb3cuYXBwZW5kQ2hpbGQoY29sdW1uKTsKLSAgICAgIH0KLSAgICAgIGNhbGVuZGFyQm9keS5hcHBlbmRDaGlsZChyb3cpOwotICAgIH0KLSAgICB2YXIgbW9udGhTZWxlY3RvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb250aFNlbGVjdG9yIik7Ci0gICAgZm9yICh2YXIgaT0wO2k8bW9udGhTZWxlY3Rvci5vcHRpb25zLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgaWYgKG1vbnRoU2VsZWN0b3Iub3B0aW9uc1tpXS52YWx1ZSA9PSBkYXRlTW9udGgpCi0gICAgICB7Ci0gICAgICAgIG1vbnRoU2VsZWN0b3Iuc2VsZWN0ZWRJbmRleCA9IGk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICB2YXIgeWVhclRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgieWVhclRleHQiKTsKLSAgICB5ZWFyVGV4dC52YWx1ZSA9IGRhdGVGdWxsWWVhcjsKLSAgICBzYXZlZFllYXJUZXh0VmFsdWUgPSB5ZWFyVGV4dC52YWx1ZTsKLTwlCi0gICBpZiAoY2FsZW5kYXJUeXBlID09IEFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0RBVEVUSU1FKQotICAgewotJT4KLSAgICB2YXIgdGltZVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGltZVRleHQiKTsKLSAgICB0aW1lVGV4dC52YWx1ZSA9IHNlcmlhbGl6ZVRpbWUoZGF0ZS5nZXRIb3VycygpLGRhdGUuZ2V0TWludXRlcygpLGRhdGUuZ2V0U2Vjb25kcygpLGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpOwotPCUKLSAgIH0KLSU+Ci0gICAgY3VycmVudERhdGUgPSBkYXRlOwotICB9Ci0KLSAgZnVuY3Rpb24gY2xlYXJDYWxlbmRhcigpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FsZW5kYXIiKTsKLSAgICBpZiAoIWNhbGVuZGFyQm9keVNldCkKLSAgICAgIGluaXRDYWxlbmRhckhlYWRlcih0YWJsZSk7Ci0gICAgZm9yICh2YXIgaT0xO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHRhYmxlLmRlbGV0ZVJvdyhpKTsKLSAgICAgIGktLTsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiB1cGRhdGVDYWxlbmRhcihuZXdNb250aCxuZXdGdWxsWWVhcikKLSAgewotICAgIHZhciBkID0gbmV3IERhdGUoKTsKLSAgICBpZiAobmV3TW9udGggPiBtb250aHMubGVuZ3RoKQotICAgIHsKLSAgICAgIG5ld0Z1bGxZZWFyKys7Ci0gICAgICBuZXdNb250aCA9IDA7Ci0gICAgfQotICAgIGVsc2UgaWYgKG5ld01vbnRoIDwgMCkKLSAgICB7Ci0gICAgICBuZXdGdWxsWWVhci0tOwotICAgICAgbmV3TW9udGggPSBtb250aHMubGVuZ3RoLTE7Ci0gICAgfQotICAgIGQuc2V0TW9udGgobmV3TW9udGgpOwotICAgIGQuc2V0RnVsbFllYXIobmV3RnVsbFllYXIpOwotPCUKLSAgIGlmIChjYWxlbmRhclR5cGUgPT0gQWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEVfREFURVRJTUUpCi0gICB7Ci0lPgotICAgIHNldERhdGVVc2luZ1RpbWVQYXJhbWV0ZXJzKGdldFRpbWVQYXJhbWV0ZXJzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aW1lVGV4dCIpLnZhbHVlKSxkKTsKLTwlCi0gICB9Ci0lPgotICAgIGdlbmVyYXRlQ2FsZW5kYXIoZCk7Ci0gIH0KLQotICBmdW5jdGlvbiBqdW1wVG9QcmV2aW91c1llYXIoKQotICB7Ci0gICAgdXBkYXRlQ2FsZW5kYXIoY3VycmVudERhdGUuZ2V0TW9udGgoKSxjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLTEpCi0gIH0KLQotICBmdW5jdGlvbiBqdW1wVG9QcmV2aW91c01vbnRoKCkKLSAgewotICAgIHVwZGF0ZUNhbGVuZGFyKGN1cnJlbnREYXRlLmdldE1vbnRoKCktMSxjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGp1bXBUb05leHRNb250aCgpCi0gIHsKLSAgICB1cGRhdGVDYWxlbmRhcihjdXJyZW50RGF0ZS5nZXRNb250aCgpKzEsY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSk7Ci0gIH0KLQotICBmdW5jdGlvbiBqdW1wVG9OZXh0WWVhcigpCi0gIHsKLSAgICB1cGRhdGVDYWxlbmRhcihjdXJyZW50RGF0ZS5nZXRNb250aCgpLGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCkrMSk7Ci0gIH0KLQotICBmdW5jdGlvbiBqdW1wVG9Ub2RheSgpCi0gIHsKLSAgICBnZW5lcmF0ZUNhbGVuZGFyKG5ldyBEYXRlKCkpOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0TmV3RGF0ZSgpCi0gIHsKLSAgICB2YXIgbW9udGhTZWxlY3RvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb250aFNlbGVjdG9yIik7Ci0gICAgdmFyIG5ld01vbnRoID0gbW9udGhTZWxlY3Rvci5vcHRpb25zW21vbnRoU2VsZWN0b3Iuc2VsZWN0ZWRJbmRleF0udmFsdWU7Ci0gICAgdmFyIG5ld0Z1bGxZZWFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInllYXJUZXh0IikudmFsdWU7Ci08JQotICAgLy8gWVlZWSsKLSU+Ci0gICAgdmFyIGQgPSBuZXcgRGF0ZSgpOwotICAgIGlmICh2YWxpZGF0ZVllYXJTdHJpbmcobmV3RnVsbFllYXIpKQotICAgIHsKLSAgICAgIC8vIFRoZSB5ZWFyIHN0cmluZyBjb250YWlucyBvbmx5IGRpZ2l0cyBhbmQgaXMgaGVuY2UgYSB2YWxpZCB5ZWFyLgotICAgICAgZC5zZXRGdWxsWWVhcihuZXdGdWxsWWVhcik7Ci0gICAgICBkLnNldE1vbnRoKG5ld01vbnRoKTsKLSAgICB9Ci0gICAgZ2VuZXJhdGVDYWxlbmRhcihkKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGhhbmRsZVllYXJUZXh0S2V5VXBFdmVudCgpCi0gIHsKLSAgICB2YXIgY3VycmVudFllYXJUZXh0VmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgieWVhclRleHQiKS52YWx1ZTsKLSAgICBpZiAoY3VycmVudFllYXJUZXh0VmFsdWUgPT0gc2F2ZWRZZWFyVGV4dFZhbHVlKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHNldE5ld0RhdGUoKTsKLSAgfQotCi08JQotICAgLy8gWVlZWSstTU0tREQKLSU+Ci0gIGZ1bmN0aW9uIHRyYW5zZmVyRGF0ZShkYXRlKQotICB7Ci0gICAgdmFyIGZ1bGxZZWFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInllYXJUZXh0IikudmFsdWU7Ci0gICAgdmFyIG1vbnRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vbnRoU2VsZWN0b3IiKS5zZWxlY3RlZEluZGV4KzE7Ci0gICAgdG9wLm9wZW5lci5jYWxlbmRhclRhcmdldC52YWx1ZSA9IHNlcmlhbGl6ZURhdGUoZnVsbFllYXIsbW9udGgsZGF0ZSk7Ci0gICAgdG9wLm9wZW5lci5jbG9zZUNhbGVuZGFyQnJvd3NlcigpOwotICB9Ci0KLTwlCi0gICAvLyBZWVlZKy1NTS1ERFRISDpNTTpTU1suU1NTXVoKLSU+Ci0gIGZ1bmN0aW9uIHRyYW5zZmVyRGF0ZVRpbWUoZGF0ZSkKLSAgewotICAgIHZhciBmdWxsWWVhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ5ZWFyVGV4dCIpLnZhbHVlOwotICAgIHZhciBtb250aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb250aFNlbGVjdG9yIikuc2VsZWN0ZWRJbmRleCsxOwotICAgIHZhciBzZXJpYWxpemVkRGF0ZSA9IHNlcmlhbGl6ZURhdGUoZnVsbFllYXIsbW9udGgsZGF0ZSk7Ci0gICAgdmFyIGQgPSBuZXcgRGF0ZSgpOwotICAgIHNldERhdGVVc2luZ0RhdGVQYXJhbWV0ZXJzKGdldERhdGVQYXJhbWV0ZXJzKHNlcmlhbGl6ZWREYXRlKSxkKTsKLSAgICB2YXIgdGltZVZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRpbWVUZXh0IikudmFsdWU7Ci0gICAgdmFyIHRpbWVQYXJhbWV0ZXJzID0gZ2V0VGltZVBhcmFtZXRlcnModGltZVZhbHVlKTsKLSAgICBpZiAodGltZVBhcmFtZXRlcnMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoIWNvbmZpcm0oIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9JTlZBTElEX1RJTUVfRk9STUFUIikpJT4iKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBlbHNlCi0gICAgICBzZXREYXRlVXNpbmdUaW1lUGFyYW1ldGVycyh0aW1lUGFyYW1ldGVycyxkKTsKLSAgICB0b3Aub3BlbmVyLmNhbGVuZGFyVGFyZ2V0LnZhbHVlID0gc2VyaWFsaXplZERhdGUgKyAiVCIgKyBzZXJpYWxpemVUaW1lKGQuZ2V0VVRDSG91cnMoKSxkLmdldFVUQ01pbnV0ZXMoKSxkLmdldFVUQ1NlY29uZHMoKSxkLmdldFVUQ01pbGxpc2Vjb25kcygpKSArICJaIjsKLSAgICB0b3Aub3BlbmVyLmNsb3NlQ2FsZW5kYXJCcm93c2VyKCk7Ci0gIH0KLSAgCi08JQotICAgLy8gWVlZWSstTU0KLSU+Ci0gIGZ1bmN0aW9uIHRyYW5zZmVyR1llYXJNb250aCgpCi0gIHsKLSAgICB2YXIgZnVsbFllYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgieWVhclRleHQiKS52YWx1ZTsKLSAgICB2YXIgbW9udGggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9udGhTZWxlY3RvciIpLnNlbGVjdGVkSW5kZXgrMTsKLSAgICB2YXIgc2VyaWFsaXplZEdZZWFyTW9udGggPSBzZXJpYWxpemVHWWVhck1vbnRoKGZ1bGxZZWFyLG1vbnRoKTsKLSAgICB2YXIgZCA9IG5ldyBEYXRlKCk7Ci0gICAgc2V0RGF0ZVVzaW5nR1llYXJNb250aFBhcmFtZXRlcnMoZ2V0R1llYXJNb250aFBhcmFtZXRlcnMoc2VyaWFsaXplZEdZZWFyTW9udGgpLGQpOwotICAgIHRvcC5vcGVuZXIuY2FsZW5kYXJUYXJnZXQudmFsdWUgPSBzZXJpYWxpemVkR1llYXJNb250aDsKLSAgICB0b3Aub3BlbmVyLmNsb3NlQ2FsZW5kYXJCcm93c2VyKCk7Ci0gIH0gICAgIAotICAKLTwlCi0gICAvLyAtLS1ERAotJT4KLSAgZnVuY3Rpb24gdHJhbnNmZXJHRGF5KGRhdGUpICAgICAKLSAgewotICAgIHRvcC5vcGVuZXIuY2FsZW5kYXJUYXJnZXQudmFsdWUgPSBzZXJpYWxpemVHRGF5KGRhdGUpOwotICAgIHRvcC5vcGVuZXIuY2xvc2VDYWxlbmRhckJyb3dzZXIoKTsKLSAgfQotPCUKLSAgIC8vIC0tTU0tREQKLSU+ICAKLSAgZnVuY3Rpb24gdHJhbnNmZXJHTW9udGhEYXkoZGF0ZSkKLSAgewotICAgIHZhciBtb250aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb250aFNlbGVjdG9yIikuc2VsZWN0ZWRJbmRleCsxOwotICAgIHRvcC5vcGVuZXIuY2FsZW5kYXJUYXJnZXQudmFsdWUgPSBzZXJpYWxpemVHTW9udGhEYXkobW9udGgsZGF0ZSk7Ci0gICAgdG9wLm9wZW5lci5jbG9zZUNhbGVuZGFyQnJvd3NlcigpOwotICB9Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci0gIDxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICAgIDx0YWJsZSBib3JkZXI9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj4KLSAgICAgICAgICA8dGFibGU+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im1vbnRoU2VsZWN0b3IiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9NT05USCIpJT48L2xhYmVsPgotICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSI+Jm5ic3A7PC90ZD4KLSAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ieWVhclRleHQiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ZRUFSIiklPjwvbGFiZWw+Ci0gICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iY2VudGVyIj4KLSAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJtb250aFNlbGVjdG9yIiBvbkNoYW5nZT0ic2V0TmV3RGF0ZSgpIiBjbGFzcz0ic2VsZWN0bGlzdCI+Ci0gICAgICAgICAgICAgICAgPC9zZWxlY3Q+Ci0gICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIj4mbmJzcDs8L3RkPgotICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0iY2VudGVyIj4KLSAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9InllYXJUZXh0IiBzaXplPTYgb25rZXl1cD0iaGFuZGxlWWVhclRleHRLZXlVcEV2ZW50KCkiIGNsYXNzPSJ0YWJsZXRleHRlbnRlciI+Ci0gICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgICAgPHRyPgotICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPgotICAgICAgICAgIDx0YWJsZSBpZD0iY2FsZW5kYXIiIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MyBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotPCUKLSAgIGlmIChjYWxlbmRhclR5cGUgPT0gQWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEVfREFURVRJTUUpCi0gICB7Ci0lPgotICAgICAgPHRyPgotICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPgotICAgICAgICAgIDx0YWJsZSBib3JkZXI9MD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249ImNlbnRlciIgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICAgIDxsYWJlbCBmb3I9InRpbWVUZXh0Ij48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVElNRSIpJT48L2xhYmVsPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249ImNlbnRlciIgd2lkdGg9IjgwJSI+Ci0gICAgICAgICAgICAgIDxpbnB1dCBpZD0idGltZVRleHQiIHR5cGU9InRleHQiIGNsYXNzPSJ0YWJsZXRleHRlbnRlciIgc2l6ZT0xMiBtYXhsZW5ndGg9MTI+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci08JQotICAgfQotJT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj4KLSAgICAgICAgICA8dGFibGUgYm9yZGVyPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0Omp1bXBUb1ByZXZpb3VzWWVhcigpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfUFJFVklPVVNfWUVBUiIpJT4iPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1BSRVZJT1VTX1lFQVIiKSU+PC9hPgotICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpqdW1wVG9QcmV2aW91c01vbnRoKCkiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9QUkVWSU9VU19NT05USCIpJT4iPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1BSRVZJT1VTX01PTlRIIiklPjwvYT4KLSAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6anVtcFRvVG9kYXkoKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RPREFZIiklPiI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xJTktfVE9EQVkiKSU+PC9hPgotICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpqdW1wVG9OZXh0TW9udGgoKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX05FWFRfTU9OVEgiKSU+Ij48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTElOS19ORVhUX01PTlRIIiklPjwvYT4KLSAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6anVtcFRvTmV4dFllYXIoKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX05FWFRfWUVBUiIpJT4iPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX05FWFRfWUVBUiIpJT48L2E+Ci0gICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGluaXQoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jYWxlbmRhcl90b29sYmFyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvY2FsZW5kYXJfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZjkxMTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jYWxlbmRhcl90b29sYmFyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08JQotICAgU3RyaW5nIHNlc3Npb25JZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpOwotICAgSHR0cFNlc3Npb24gY3VycmVudFNlc3Npb24gPSAoSHR0cFNlc3Npb24pYXBwbGljYXRpb24uZ2V0QXR0cmlidXRlKHNlc3Npb25JZCk7Ci0gICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSAoQ29udHJvbGxlciljdXJyZW50U2Vzc2lvbi5nZXRBdHRyaWJ1dGUoImNvbnRyb2xsZXIiKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfQ0FMRU5EQVJfVE9PTEJBUiIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90b29sYmFyLmNzcyIpKSU+Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgb25VbmxvYWQ9InRvcC5vcGVuZXIuY2FsZW5kYXJCcm93c2VyQ2xvc2VkPXRydWUiIGNsYXNzPSJ0b29sYmFyYm9keW1hcmdpbiI+Ci08ZGl2IGlkPSJ0b29sYmFyYm9yZGVyIj4KLSAgPGRpdiBpZD0idG9vbGJhciI+Ci0gICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBoZWlnaHQ9MjUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2FsZW5kYXIuZ2lmIikpJT4iIGFsdD0iIiB3aWR0aD0xNiBoZWlnaHQ9MTY+PC90ZD4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCIgd2lkdGg9IioiIGhlaWdodD0yNSBub3dyYXAgY2xhc3M9InRleHQiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0NBTEVOREFSX0JST1dTRVIiKSU+PC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPC9kaXY+Ci08L2Rpdj4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICB0b3Aub3BlbmVyLmNhbGVuZGFyQnJvd3NlckNsb3NlZCA9IGZhbHNlOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Nzcy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jc3MvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Nzcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvY3NzL2NhbGVuZGFyLmNzcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvY3NzL2NhbGVuZGFyLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgzODgwNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Nzcy9jYWxlbmRhci5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLS5jYWxlbmRhcnRhYmxlY2VsbHMgeyBib3JkZXItbGVmdDoxcHggc29saWQgI0I4QjRBMzsgYm9yZGVyLXJpZ2h0OjBweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItdG9wOjBweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjQjhCNEEzOyBmb250OiBpY29uOyBmb250LXNpemU6IDExcHg7IHRleHQtYWxpZ246Y2VudGVyfQotLnRvZGF5dGFibGVjZWxsIHsgYmFja2dyb3VuZC1jb2xvcjp5ZWxsb3c7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItcmlnaHQ6MHB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci10b3A6MHB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNCOEI0QTM7IGZvbnQ6IGljb247IGZvbnQtc2l6ZTogMTFweDsgdGV4dC1hbGlnbjpjZW50ZXJ9CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Nzcy90b29sYmFyLmNzcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvY3NzL3Rvb2xiYXIuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODVlYTEyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvY3NzL3Rvb2xiYXIuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotI3Rvb2xiYXIgeyB3aWR0aDoxMDAlOyBoZWlnaHQ6MjVweDsgYmFja2dyb3VuZDojRUNFOUQ4OyBib3JkZXItY29sb3I6d2hpdGU7ICBib3JkZXItc3R5bGU6c29saWQ7ICBib3JkZXItd2lkdGg6MSAxIDEgMXB4OyBib3JkZXItYm90dG9tLWNvbG9yOiM4NDgyODQ7IGJvcmRlci1yaWdodC1jb2xvcjojODQ4Mjg0OyBtYXJnaW46MCAwIDAgMHB4O30KLSN0b29sYmFyYm9yZGVyIHsgaGVpZ2h0OjI2cHg7IHdpZHRoOjEwMCU7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLXdpZHRoOjEgMCAwIDFweDsgYm9yZGVyLWNvbG9yOiM4NDgyODQ7IH0KLQotLyogaWZyYW1lIFNwYWNpbmcgQ29udG9sICovCi0udG9vbGJhcmJvZHltYXJnaW4geyBtYXJnaW46IDUgNSAwIDU7IGJhY2tncm91bmQ6ICNFQ0U5RDg7IH0KLQotLyogVG9vbGJhciBTdHlsZXMgKi8KLS50ZXh0IHtmb250LXNpemU6MTJweDsgZm9udDogaWNvbjt9Ci1hOmxpbmsge2NvbG9yOiBibGFjazt9Ci0KLS8qIEpTIFJvbGxvdmVyIFN0eWxlICovCi1JTUcgeyBib3JkZXItd2lkdGg6MnB4OyBib3JkZXItc3R5bGU6c29saWQ7fQotLm5vcm1hbCB7IGJvcmRlci1jb2xvciA6ICNFQ0U5RDg7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20tY29sb3IgOiNFQ0U5RDg7IGJvcmRlci1yaWdodC1jb2xvciA6I0VDRTlEODt9Ci0uaG92ZXIgeyBib3JkZXItY29sb3IgOiB3aGl0ZTsgYm9yZGVyLXN0eWxlOiBzb2xpZDsgYm9yZGVyLXdpZHRoOjFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsgYm9yZGVyLWJvdHRvbS1jb2xvciA6IzhDOEU4QzsgYm9yZGVyLXJpZ2h0LWNvbG9yIDojOEM4RThDOyB9Ci0uZG93biB7IGJvcmRlci1jb2xvciA6ICM4QzhFOEM7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20tY29sb3I6d2hpdGU7IGJvcmRlci1yaWdodC1jb2xvcjp3aGl0ZTt9Ci0KLS8qIEdsb2JhbFRvb2xiYXIgKi8KLS5ndG9vbGJhcmJvZHltYXJnaW4ge21hcmdpbiA6IDAgMSAzIDA7IGJhY2tncm91bmQ6ICNFQ0U5RDh9Ci0jZ2xvYmFsdG9vbGJhcntoZWlnaHQ6MTAwJTsgYmFja2dyb3VuZDogI0VDRTlEODsgYm9yZGVyLWNvbG9yIDogd2hpdGU7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20tY29sb3IgOmJsYWNrOyBib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LWNvbG9yIDojODQ4Mjg0O30KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jc3MvdHJlZXZpZXcuY3NzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jc3MvdHJlZXZpZXcuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTFlNmE1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvY3NzL3RyZWV2aWV3LmNzcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotYSB7dGV4dC1kZWNvcmF0aW9uOiBub25lO30KLWE6aG92ZXIge3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO30KLXRkIHtmb250OiBpY29uOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiBCbGFjazt9Ci0udW5zZWxlY3RlZFRleHRBbmNob3Ige2NvbG9yOmJsdWU7IGJhY2tncm91bmQtY29sb3I6ZG9jdW1lbnQuYmFja2dyb3VuZENvbG9yfQotLnNlbGVjdGVkVGV4dEFuY2hvciB7Y29sb3I6d2hpdGU7IGJhY2tncm91bmQtY29sb3I6bmF2eX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvY3NzL3dpbmRvd3MuY3NzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jc3Mvd2luZG93cy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZGI0MDAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9jc3Mvd2luZG93cy5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0jY29udGVudGJvcmRlciB7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjODQ4Mjg0OyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICM4NDgyODQ7IGJvcmRlci10b3A6MHB4IHNvbGlkICM4NDgyODQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICM4NDgyODQ7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyBiYWNrZ3JvdW5kOndoaXRlOyBvdmVyZmxvdzphdXRvOyBwYWRkaW5nLWxlZnQ6MTBweDsgcGFkZGluZy1yaWdodDowOyBwYWRkaW5nLXRvcDoxMDsgcGFkZGluZy1ib3R0b206MTB9Ci0jdHJlZWNvbnRlbnRib3JkZXIgeyBib3JkZXItbGVmdDoxcHggc29saWQgIzg0ODI4NDsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjODQ4Mjg0OyBib3JkZXItdG9wOjBweCBzb2xpZCAjODQ4Mjg0OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjODQ4Mjg0OyBoZWlnaHQ6MTAwJTsgd2lkdGg6MTAwJTsgYmFja2dyb3VuZDp3aGl0ZTsgb3ZlcmZsb3c6YXV0bzsgcGFkZGluZy10b3A6NXB4fQotCi0vKiBpZnJhbWUgU3BhY2luZyBDb250b2wgKi8KLS5jb250ZW50Ym9keW1hcmdpbiB7IG1hcmdpbjogMCA1IDEyIDU7IGJhY2tncm91bmQ6I0VDRTlEODsgfQotCi0vKiBEb2N1bWVudCBTdHlsZXMgICovCi0ubGFiZWxzIHsgZm9udDogaWNvbjsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjpibGFjazsgZm9udC13ZWlnaHQ6IG5vcm1hbDt9Ci0KLS8qIGZpZWxkc2V0K2xlZ2VuZCBTdHlsZXMgKi8KLS5rZXlsaW5lZmllbGRzZXQgeyBib3JkZXItY29sb3I6IzgwODBGRjsgYm9yZGVyLXdpZHRoOjFweDsgYm9yZGVyLXN0eWxlOnNvbGlkOyB9Ci0uaGVhZGVyZmllbGRzZXQgeyAtbW96LWJvcmRlci1yYWRpdXM6IDdwdDsgcGFkZGluZzogM3B4OyBib3JkZXI6MXB4IHNvbGlkICNDMEMwQzA7IH0KLQotLyogdGFibGUgU3R5bGVzICovCi0udGFibGVib3JkZXIge2JvcmRlci1sZWZ0OjBweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci10b3A6MXB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci1ib3R0b206MHB4IHNvbGlkICNCOEI0QTM7IH0KLS50YWJsZWNlbGxzIHsgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci1yaWdodDowcHggc29saWQgI0I4QjRBMzsgYm9yZGVyLXRvcDowcHggc29saWQgI0I4QjRBMzsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI0I4QjRBMzsgZm9udDogaWNvbjsgZm9udC1zaXplOiAxMXB4OyB0ZXh0LWFsaWduOmxlZnR9Ci0uY2hlY2tib3hjZWxscyB7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItcmlnaHQ6MHB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci10b3A6MHB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNCOEI0QTM7IGZvbnQ6IGljb247IGZvbnQtc2l6ZTogMTFweDsgYmFja2dyb3VuZC1jb2xvcjogI0VDRTlEOH0KLXRoLmhlYWRlcmNvbG9yIHsgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci1yaWdodDowcHggc29saWQgI0I4QjRBMzsgYm9yZGVyLXRvcDowcHggc29saWQgI0I4QjRBMzsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI0I4QjRBMzsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250OiBpY29uOyBmb250LXNpemU6IDExcHg7IGJhY2tncm91bmQtY29sb3I6IzQ5NzdCNDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1hbGlnbjpjZW50ZXJ9Ci10aC5zaW5nbGVoZWFkZXJjb2xvciB7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItcmlnaHQ6MHB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci10b3A6MHB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNCOEI0QTM7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udDogaWNvbjsgZm9udC1zaXplOiAxMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiM0OTc3QjQ7IGNvbG9yOiNGRkZGRkY7IHRleHQtYWxpZ246bGVmdH0KLS5maXJzdGNvbHVtbmVycmFudHJvd2NvbG9yIHsgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJlZDsgYm9yZGVyLXJpZ2h0OjBweCBzb2xpZCAjQjdCNEEzOyBib3JkZXItdG9wOjFweCBzb2xpZCByZWQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHJlZDsgZm9udDogaWNvbjsgZm9udC1zaXplOiAxMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNFNkVBRDg7IHRleHQtYWxpZ246bGVmdH0KLS5taWRkbGVlcnJhbnRyb3djb2xvciB7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjQjdCNEEzOyBib3JkZXItcmlnaHQ6MHB4IHNvbGlkICNCN0I0QTM7IGJvcmRlci10b3A6MXB4IHNvbGlkIHJlZDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgcmVkOyBmb250OiBpY29uOyBmb250LXNpemU6IDExcHg7IGJhY2tncm91bmQtY29sb3I6I0U2RUFEODsgdGV4dC1hbGlnbjpsZWZ0fQotLmxhc3Rjb2x1bW5lcnJhbnRyb3djb2xvciB7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjQjdCNEEzOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJlZDsgYm9yZGVyLXRvcDoxcHggc29saWQgcmVkOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCByZWQ7IGZvbnQ6IGljb247IGZvbnQtc2l6ZTogMTFweDsgYmFja2dyb3VuZC1jb2xvcjojRTZFQUQ4OyB0ZXh0LWFsaWduOmxlZnR9Ci0ucm93Y29sb3IgeyBib3JkZXItbGVmdDoxcHggc29saWQgI0I4QjRBMzsgYm9yZGVyLXJpZ2h0OjBweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItdG9wOjBweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjQjhCNEEzOyBmb250OiBpY29uOyBmb250LXNpemU6IDExcHg7IGJhY2tncm91bmQtY29sb3I6I0U2RUFEODsgdGV4dC1hbGlnbjpsZWZ0fQotCi0vKiBGb3JtIGVsZW1lbnRzIGFuZCBzdGF0dXMgY29udGVudHMgKi8KLXRkIHsgZm9udDogaWNvbjsgZm9udC1zaXplOiAxMnB4OyB9Ci10aCB7IGZvbnQ6IGljb247IGZvbnQtc2l6ZTogMTJweDsgfQotaW5wdXQgeyBmb250OiBpY29uOyBmb250LXNpemU6IDEycHg7IH0KLS5zZWxlY3RsaXN0IHtmb250OiBpY29uOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiBCbGFjazsgYm9yZGVyLXN0eWxlOnNvbGlkOyBib3JkZXItd2lkdGggOiAxcHg7ICBib3JkZXItY29sb3I6I0M3QzVCMjt9Ci1zZWxlY3QgeyBmb250OiBpY29uOyBmb250LXNpemU6IDEycHg7IH0KLXByZSB7IGZvbnQ6IGljb247IGZvbnQtc2l6ZTogMTJweDsgfQotLnNtdGV4dGVudGVyIHtmb250OiBpY29uOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiBCbGFjazsgYm9yZGVyLXN0eWxlOnNvbGlkOyBib3JkZXItd2lkdGggOiAxcHg7IGJvcmRlci1jb2xvcjogI0M3QzVCMjsgd2lkdGg6MTAlOyB9Ci0udGV4dGVudGVyIHtmb250OiBpY29uOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiBCbGFjazsgYm9yZGVyLXN0eWxlOnNvbGlkOyBib3JkZXItd2lkdGggOiAxcHg7IGJvcmRlci1jb2xvcjogI0M3QzVCMjsgd2lkdGg6OTAlOyB9Ci0udGFibGV0ZXh0ZW50ZXIge2ZvbnQ6IGljb247IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IEJsYWNrOyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci13aWR0aCA6IDFweDsgYm9yZGVyLWNvbG9yOiAjQzdDNUIyOyB3aWR0aDoxMDAlOyB9Ci0udGFibGVmaWxlYnJvd3NlIHt3aWR0aDoxMDAlOyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci13aWR0aDoxcHg7IGZvbnQtc2l6ZTogMTRweDsgYm9yZGVyLWNvbG9yOiAjQzdDNUIyOyBmb250OiBpY29uOyB9Ci1pbnB1dC5idXR0b24ge2ZvbnQ6IGljb247IGZvbnQtc2l6ZTogMTFweDsgYm9yZGVyLXdpZHRoIDogMXB4OyBib3JkZXItc3R5bGU6b3V0c2V0OyBoZWlnaHQ6MjJweDt9Ci1pbnB1dC5yYWRpbyB7Zm9udDogaWNvbjsgZm9udC1zaXplOiAxMXB4O30KLWltZy50d2lzdCB7Ym9yZGVyLXdpZHRoOjAgMCAwIDBweDsgaGVpZ2h0OjEwcHg7IHdpZHRoOjExcHg7fQotCi0vKiBGcmFnbWVudCBTdHlsZXMgKi8KLS5maXhmcmFndGFibGUge3dpZHRoOjk1JTsgYm9yZGVyOjBweCBub25lOyB9Ci0uaW5uZXJmaXhmcmFndGFibGUge3dpZHRoOjEwMCU7IGJvcmRlcjowcHggbm9uZTsgfQotLnJhbmdlZnJhZ3RhYmxlIHt3aWR0aDo5NSU7IGJvcmRlci1sZWZ0OjBweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci10b3A6MXB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci1ib3R0b206MHB4IHNvbGlkICNCOEI0QTM7fQotLmlubmVycmFuZ2VmcmFndGFibGUge3dpZHRoOjEwMCU7IGJvcmRlci1sZWZ0OjBweCBzb2xpZCAjQjhCNEEzOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci10b3A6MXB4IHNvbGlkICNCOEI0QTM7IGJvcmRlci1ib3R0b206MHB4IHNvbGlkICNCOEI0QTM7fQotLnRleHRhcmVhZW50ZXIge2ZvbnQ6IGljb247IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IEJsYWNrOyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci13aWR0aCA6IDFweDsgYm9yZGVyLWNvbG9yOiAjQzdDNUIyOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTUwcHg7IH0KLS5iaWd0ZXh0YXJlYWVudGVyIHtmb250OiBpY29uOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiBCbGFjazsgYm9yZGVyLXN0eWxlOnNvbGlkOyBib3JkZXItd2lkdGggOiAxcHg7IGJvcmRlci1jb2xvcjogI0M3QzVCMjsgd2lkdGg6MTAwJTsgaGVpZ2h0OjMwMHB4OyB9Ci0uZnJhZ2FyZWEgeyBwYWRkaW5nLWxlZnQ6IDNweDsgcGFkZGluZy1ib3R0b206IDVweDsgfQotCi1pZnJhbWUge2JvcmRlci13aWR0aDogMnB4OyBib3JkZXItc3R5bGU6IGluc2V0OyB9CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9BZGRXU0lMVG9XU0lMUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9BZGRXU0lMVG9XU0lMUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTEwZTNmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvQWRkV1NJTFRvV1NJTFBlcnNwZWN0aXZlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5BZGRXU0lMVG9XU0lMUGVyc3BlY3RpdmVBY3Rpb24iJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNQYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gIEFkZFdTSUxUb1dTSUxQZXJzcGVjdGl2ZUFjdGlvbiBhY3Rpb24gPSBuZXcgQWRkV1NJTFRvV1NJTFBlcnNwZWN0aXZlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0gIGlmIChhY3Rpb25SZXN1bHQpIHsKLSU+Ci0gICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChTaG93UGVyc3BlY3RpdmVBY3Rpb24uZ2V0QWN0aW9uTGluayhBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfV1NJTCxmYWxzZSkpKSU+IjsKLSAgICA8L3NjcmlwdD4KLTwlCi0gIH0KLSAgZWxzZSB7Ci0gICAgaWYgKHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEZhdm9yaXRlc0FjdGlvbklucHV0cy5NVUxUSVBMRV9MSU5LX0FDVElPTikgPT0gbnVsbCkgewotJT4KLSAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL2FjdGlvbnMvUmVtb3ZlRmF2b3JpdGVzQ29uZmlybUpTUC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgIH0KLSAgICBlbHNlIHsKLSU+Ci0gICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgZmF2UHJvcGVydGllc0NvbnRhaW5lci5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfcHJvcGVydGllc19jb250YWluZXIuanNwIikpJT4iOwotICAgICAgICBmYXZTdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiZmF2b3JpdGVzL2Zhdl9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICA8L3NjcmlwdD4KLTwlCi0gICAgfQotICB9Ci0lPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0FkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjZWVkMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0FkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5BZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbiIlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9wYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc1BhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24gYWN0aW9uID0gQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24ubmV3QWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0gIGlmIChhY3Rpb25SZXN1bHQpIHsKLSAgICBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpLmdldE5hdmlnYXRvck1hbmFnZXIoKS5tYWtlU2VsZWN0ZWROb2RlVmlzaWJsZSgpOwotJT4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNob3dQZXJzcGVjdGl2ZUFjdGlvbi5nZXRBY3Rpb25MaW5rKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9VRERJLGZhbHNlKSkpJT4iOwotICAgIDwvc2NyaXB0PgotPCUKLSAgfQotICBlbHNlIHsKLSAgICBpZiAocmVxdWVzdC5nZXRQYXJhbWV0ZXIoRmF2b3JpdGVzQWN0aW9uSW5wdXRzLk1VTFRJUExFX0xJTktfQUNUSU9OKSA9PSBudWxsKSB7Ci0lPgotICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvYWN0aW9ucy9SZW1vdmVGYXZvcml0ZXNDb25maXJtSlNQLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICAgfQotICAgIGVsc2UgewotJT4KLSAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICBmYXZQcm9wZXJ0aWVzQ29udGFpbmVyLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiZmF2b3JpdGVzL2Zhdl9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiKSklPiI7Ci0gICAgICAgIGZhdlN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJmYXZvcml0ZXMvZmF2X3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLSAgICAgIDwvc2NyaXB0PgotPCUKLSAgICB9Ci0gIH0KLSU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0FkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI5OGVjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLkZhdm9yaXRlc0FjdGlvbklucHV0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5BY3Rpb25JbnB1dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLlNob3dQZXJzcGVjdGl2ZUFjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLkZhdm9yaXRlc0FkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uIiU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotCi08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNQYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi1GYXZvcml0ZXNBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbiBhY3Rpb24gPSBuZXcgRmF2b3JpdGVzQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb24oY29udHJvbGxlcik7Ci0KLS8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLS8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi1pZiAoYWN0aW9uUmVzdWx0KSB7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNob3dQZXJzcGVjdGl2ZUFjdGlvbi5nZXRBY3Rpb25MaW5rKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9XU0RMLGZhbHNlKSkpJT4iOwotPC9zY3JpcHQ+Ci08JQotfQotZWxzZSB7Ci0gIGlmIChyZXF1ZXN0LmdldFBhcmFtZXRlcihGYXZvcml0ZXNBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04pID09IG51bGwpIHsKLSU+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvYWN0aW9ucy9SZW1vdmVGYXZvcml0ZXNDb25maXJtSlNQLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gIH0KLSAgZWxzZSB7Ci0lPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgZmF2UHJvcGVydGllc0NvbnRhaW5lci5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfcHJvcGVydGllc19jb250YWluZXIuanNwIikpJT4iOwotICAgICAgZmF2U3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgIDwvc2NyaXB0PgotPCUKLSAgfQotfQotJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzSW1wb3J0VG9GaWxlU3lzdGVtQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU5OTQyMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5pby4qIiAlPgotCi0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICBGYXZvcml0ZXNJbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24gYWN0aW9uID0gbmV3IEZhdm9yaXRlc0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbihjb250cm9sbGVyKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9JbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uaW5jIiAlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNJbXBvcnRUb1dvcmtiZW5jaEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0ltcG9ydFRvV29ya2JlbmNoQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE5MzViNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0ltcG9ydFRvV29ya2JlbmNoQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBGYXZvcml0ZXNJbXBvcnRUb1dvcmtiZW5jaEFjdGlvbiBhY3Rpb24gPSBuZXcgRmF2b3JpdGVzSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24oY29udHJvbGxlcik7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24uaW5jIiAlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMDMzYjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgRmF2b3JpdGVzTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbiBhY3Rpb24gPSBuZXcgRmF2b3JpdGVzTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbihjb250cm9sbGVyKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzVG9nZ2xlTm9kZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc1RvZ2dsZU5vZGVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZThkMTU2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvRmF2b3JpdGVzVG9nZ2xlTm9kZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIEZhdm9yaXRlc1RvZ2dsZU5vZGVBY3Rpb24gYWN0aW9uID0gbmV3IEZhdm9yaXRlc1RvZ2dsZU5vZGVBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKCk7Ci0KLSAgIC8vIERldGVybWluZSBpZiB0aGUgYWN0aW9uIHdhcyBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LgotICAgYm9vbGVhbiBpc0FkZGVkVG9IaXN0b3J5ID0gYWN0aW9uLmlzQWRkZWRUb0hpc3RvcnkoKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9Ub2dnbGVOb2RlQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvUmVtb3ZlRmF2b3JpdGVzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvUmVtb3ZlRmF2b3JpdGVzQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZhMWIyYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1JlbW92ZUZhdm9yaXRlc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLlJlbW92ZUZhdm9yaXRlc0FjdGlvbiIlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzUGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICAgUmVtb3ZlRmF2b3JpdGVzQWN0aW9uIGFjdGlvbiA9IG5ldyBSZW1vdmVGYXZvcml0ZXNBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9DbGVhck5vZGVBY3Rpb24uaW5jIiAlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9SZW1vdmVGYXZvcml0ZXNDb25maXJtSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvUmVtb3ZlRmF2b3JpdGVzQ29uZmlybUpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1OTcwZjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9SZW1vdmVGYXZvcml0ZXNDb25maXJtSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuUmVtb3ZlRmF2b3JpdGVzQWN0aW9uIiU+Ci0KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzUGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKGNvbmZpcm0oIjwlPWNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlKCJNU0dfQ09ORklSTV9SRU1PVkVfTk9ERSIsIGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldE5vZGVOYW1lKCkpJT4iKSkgewotICAgICAgICAgICAgPCUKLSAgICAgICAgICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgICAgICAgICAlPgotICAgICAgICAgICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQsIEFjdGlvbklucHV0cy5WSUVXVE9PTElEX0RFRkFVTFQpKSklPiI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmYXZQcm9wZXJ0aWVzQ29udGFpbmVyLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiZmF2b3JpdGVzL2Zhdl9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiKSklPiI7Ci0gICAgICAgICAgICBmYXZTdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiZmF2b3JpdGVzL2Zhdl9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvUmVzaXplRmF2b3JpdGVzRnJhbWVzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvUmVzaXplRmF2b3JpdGVzRnJhbWVzQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAzZDM0Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1Jlc2l6ZUZhdm9yaXRlc0ZyYW1lc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgLy8gQ3JlYXRlIHRoZSBhY3Rpb24uCi0gICBSZXNpemVGYXZvcml0ZXNGcmFtZXNBY3Rpb24gYWN0aW9uID0gbmV3IFJlc2l6ZUZhdm9yaXRlc0ZyYW1lc0FjdGlvbihjb250cm9sbGVyKTsKLSAgIAotICAgLy8gUG9wdWxhdGUgdGhlIGFjdGlvbiB3aXRoIHRoZSByZXF1ZXN0IHByb3BlcnRpZXMuCi0gICBib29sZWFuIHJlc3VsdCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc2ZyYW1lc2V0cy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIGlmIChyZXN1bHQpCi0gICB7Ci0gICAgIGFjdGlvbi5leGVjdXRlKGZhbHNlKTsKLSAgICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGlmIChpc01pY3Jvc29mdEludGVybmV0RXhwbG9yZXIoKSkKLSAgewotICAgIHZhciBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldCA9IGdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0KCk7Ci0gICAgdmFyIGFjdGlvbnNDb250YWluZXJGcmFtZXNldCA9IGdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldCgpOwotICAgIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0LnNldEF0dHJpYnV0ZSgiY29scyIsIjwlPWZhdlBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpJT4iKTsKLSAgICBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXQuc2V0QXR0cmlidXRlKCJyb3dzIiwiPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpJT4iKTsKLSAgfQotICBlbHNlCi0gICAgcGVyc3BlY3RpdmVDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiZmF2b3JpdGVzL2Zhdl9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcCIpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgIH0KLSU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvUmVzdG9yZURlZmF1bHRGYXZvcml0ZXNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGI5ZTcyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvUmVzdG9yZURlZmF1bHRGYXZvcml0ZXNBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLkZhdm9yaXRlc1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzQWN0aW9uIiU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL3BhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzUGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICAgRmF2b3JpdGVzUmVzdG9yZURlZmF1bHRGYXZvcml0ZXNBY3Rpb24gYWN0aW9uID0gbmV3IEZhdm9yaXRlc1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKCk7Ci0KLSAgICBpZiAoYWN0aW9uUmVzdWx0KSB7Ci0lPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICBwZXJzcGVjdGl2ZUNvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJmYXZvcml0ZXMvZmF2X3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwIikpJT4iOwotICAgIDwvc2NyaXB0PgotPCUKLSAgICB9Ci0gICAgZWxzZSB7Ci0lPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICBmYXZTdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiZmF2b3JpdGVzL2Zhdl9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgPC9zY3JpcHQ+Ci08JQotICAgIH0KLSU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzQ29uZmlybUpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1Jlc3RvcmVEZWZhdWx0RmF2b3JpdGVzQ29uZmlybUpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZWIxMjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9SZXN0b3JlRGVmYXVsdEZhdm9yaXRlc0NvbmZpcm1KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9wYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci0gICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgIGlmIChjb25maXJtKCI8JT1jb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZSgiTVNHX0NPTkZJUk1fUkVTVE9SRV9ERUZBVUxUX0ZBVk9SSVRFUyIpJT4iKSkKLSAgICAgICAgICAgIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJmYXZvcml0ZXMvYWN0aW9ucy9SZXN0b3JlRGVmYXVsdEZhdm9yaXRlc0FjdGlvbkpTUC5qc3AiKSklPiI7Ci0gICAgPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc05vZGVBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9TZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU1NmUwNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc05vZGVBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi1TZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uIGFjdGlvbiA9IG5ldyBTZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLS8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0vLyBEZXRlcm1pbmUgaWYgdGhlIGFjdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4KLWJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSA9IGFjdGlvbi5pc0FkZGVkVG9IaXN0b3J5KCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvU2VsZWN0Tm9kZUFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFiN2QyMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc1Rvb2xBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy5TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi1TZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uIGFjdGlvbiA9IG5ldyBTZWxlY3RGYXZvcml0ZXNUb29sQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLS8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0vLyBEZXRlcm1pbmUgaWYgdGhlIGFjdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4KLWJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSA9IGFjdGlvbi5pc0FkZGVkVG9IaXN0b3J5KCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvU2VsZWN0Tm9kZVRvb2xBY3Rpb24uaW5jIiAlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvYWN0aW9ucy9TZWxlY3RGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlOb2RlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmMTE5OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1NlbGVjdEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlOb2RlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuU2VsZWN0RmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeU5vZGVBY3Rpb24iICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLS8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLVNlbGVjdEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlOb2RlQWN0aW9uIGFjdGlvbiA9IG5ldyBTZWxlY3RGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Tm9kZUFjdGlvbihjb250cm9sbGVyKTsKLQotLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi1hY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0vLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLWJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLQotLy9tYWtlIHN1cmUgdG8gcmVmcmVzaCBub2RlIHZpZXcKLWFjdGlvbi5zZXRUcmVlUmVmcmVzaE5lZWRlZCgpOwotCi0KLS8vIERldGVybWluZSBpZiB0aGUgYWN0aW9uIHdhcyBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LgotYm9vbGVhbiBpc0FkZGVkVG9IaXN0b3J5ID0gYWN0aW9uLmlzQWRkZWRUb0hpc3RvcnkoKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9TZWxlY3ROb2RlQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvU3dpdGNoUGVyc3BlY3RpdmVGcm9tRmF2b3JpdGVzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2FjdGlvbnMvU3dpdGNoUGVyc3BlY3RpdmVGcm9tRmF2b3JpdGVzQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJhMGNkZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9hY3Rpb25zL1N3aXRjaFBlcnNwZWN0aXZlRnJvbUZhdm9yaXRlc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24KLVN3aXRjaFBlcnNwZWN0aXZlRnJvbUZhdm9yaXRlc0FjdGlvbiBhY3Rpb24gPSBuZXcgU3dpdGNoUGVyc3BlY3RpdmVGcm9tRmF2b3JpdGVzQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLS8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0vLyBEZXRlcm1pbmUgaWYgdGhlIGFjdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4KLWJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSA9IGFjdGlvbi5pc0FkZGVkVG9IaXN0b3J5KCk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL3N3aXRjaHBlcnNwZWN0aXZlLmpzcCIgZmx1c2g9InRydWUiLz4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9hY3Rpb25zX2NvbnRhaW5lci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfYWN0aW9uc19jb250YWluZXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzc5YWJjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9hY3Rpb25zX2NvbnRhaW5lci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX0FDVElPTlNfQ09OVEFJTkVSIiklPjwvdGl0bGU+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgcm93cz0iPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpJT4iIGJnY29sb3I9IiNFQ0U5RDgiPgotICA8ZnJhbWUgbmFtZT0iPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5QUk9QRVJUSUVTX0NPTlRBSU5FUiU+IiB0aXRsZT0iPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05UQUlORVIiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiZmF2b3JpdGVzL2Zhdl9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiKSklPiIgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MSBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotICA8ZnJhbWUgbmFtZT0iPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5TVEFUVVNfQ09OVEFJTkVSJT4iIHRpdGxlPSI8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfQ09OVEFJTkVSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfc3RhdHVzX2NvbnRhaW5lci5qc3AiKSklPiIgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MSBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPC9mcmFtZXNldD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9uYXZpZ2F0b3JfY29udGFpbmVyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9uYXZpZ2F0b3JfY29udGFpbmVyLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcwZTJhYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfbmF2aWdhdG9yX2NvbnRhaW5lci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KLTwvaGVhZD4KLTxmcmFtZXNldCByb3dzPSIzMywqIiBib3JkZXI9MCBiZ2NvbG9yPSIjRUNFOUQ4Ij4KLSAgPGZyYW1lIG5hbWU9IjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuTkFWSUdBVE9SX1RPT0xCQVIlPiIgdGl0bGU9IjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX05BVklHQVRPUl9UT09MQkFSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfbmF2aWdhdG9yX3Rvb2xiYXIuanNwIikpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLSAgPGZyYW1lIG5hbWU9IjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuTkFWSUdBVE9SX0NPTlRFTlQlPiIgdGl0bGU9IjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX05BVklHQVRPUl9DT05URU5UIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfbmF2aWdhdG9yX2NvbnRlbnQuanNwIikpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfbmF2aWdhdG9yX2NvbnRlbnQuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X25hdmlnYXRvcl9jb250ZW50LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I4ZmMwMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfbmF2aWdhdG9yX2NvbnRlbnQuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRFTlQiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3MvdHJlZXZpZXcuY3NzIikpJT4iPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLSAgPC9zY3JpcHQ+Ci0gIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL3RyZWV2aWV3LmpzIikpJT4iPgotICA8L3NjcmlwdD4KLTwvaGVhZD4KLTwlCi0gICAgU3RyaW5nIHNlbGVjdGVkQW5jaG9yTmFtZSA9ICIiOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBpbnQgZm9jdXNlZE5vZGVJZCA9IG5vZGVNYW5hZ2VyLmdldEZvY3VzZWROb2RlSWQoKTsKLSAgICBTdHJpbmcgZm9jdXNlZEFuY2hvck5hbWUgPSBTdHJpbmcudmFsdWVPZihmb2N1c2VkTm9kZUlkKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIGlmIChzZWxlY3RlZE5vZGUgIT0gbnVsbCkgewotICAgICAgICBzZWxlY3RlZEFuY2hvck5hbWUgPSBzZWxlY3RlZE5vZGUuZ2V0QW5jaG9yTmFtZSgpOwotICAgICAgICBpZiAoZm9jdXNlZE5vZGVJZCA9PSBzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCkpCi0gICAgICAgICAgICBmb2N1c2VkQW5jaG9yTmFtZSA9IHNlbGVjdGVkQW5jaG9yTmFtZTsKLSAgICB9Ci0lPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBvbkxvYWQ9InNlbGYubG9jYXRpb24uaGFzaD0nIzwlPWZvY3VzZWRBbmNob3JOYW1lJT4nO3NldFNlbGVjdGVkQW5jaG9yTmFtZSgnPCU9c2VsZWN0ZWRBbmNob3JOYW1lJT4nKSIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9InRyZWVjb250ZW50Ym9yZGVyIj4KLSAgICA8JT1ub2RlTWFuYWdlci5yZW5kZXJUcmVlVmlldyhyZXNwb25zZSklPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfbmF2aWdhdG9yX3Rvb2xiYXIuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X25hdmlnYXRvcl90b29sYmFyLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUxMjE5Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfbmF2aWdhdG9yX3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX05BVklHQVRPUl9UT09MQkFSIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3Rvb2xiYXIuY3NzIikpJT4iPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNmcmFtZXNldHMuanNwIiBmbHVzaD0idHJ1ZSIvPiAgCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy90b29sYmFyLmpzIikpJT4iPgotPC9zY3JpcHQ+ICAKLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9InRvb2xiYXJib2R5bWFyZ2luIj4KLTxkaXYgaWQ9InRvb2xiYXJib3JkZXIiPgotICA8ZGl2IGlkPSJ0b29sYmFyIiBvbmRibGNsaWNrPSJwcm9jZXNzRnJhbWVzZXRTaXplcyhkb2N1bWVudC5mb3Jtc1swXSkiPgotPGpzcDp1c2VCZWFuIGlkPSJmb3JtQWN0aW9uIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgZm9ybUFjdGlvbi5hcHBlbmQoImZhdm9yaXRlcy9hY3Rpb25zL1Jlc2l6ZUZhdm9yaXRlc0ZyYW1lc0FjdGlvbkpTUC5qc3AiKTsKLSU+ICAKLTwvanNwOnVzZUJlYW4+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1GcmFtZU5hbWUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICAgZm9ybUZyYW1lTmFtZS5hcHBlbmQoRmF2b3JpdGVzRnJhbWVOYW1lcy5OQVZJR0FUT1JfQ09OVEFJTkVSKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvZm9ybXMvUHJvY2Vzc0Zhdm9yaXRlc0ZyYW1lc2V0c0Zvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PTI1IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL25hdmlnYXRvci5naWYiKSklPiIgYWx0PSIiIHdpZHRoPTE2IGhlaWdodD0xNj48L3RkPgotPCUKLSAgIFN0cmluZyBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gbnVsbDsKLSAgIGlmIChmYXZQZXJzcGVjdGl2ZS5nZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKS5zdGFydHNXaXRoKCIxMDAlIikpCi0gICAgIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9ET1VCTEVfQ0xJQ0tfVE9fUkVTVE9SRSIpOwotICAgZWxzZQotICAgICBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX01BWElNSVpFIik7Ci0lPiAgICAgICAgCi0gICAgICAgIDx0ZCBpZD0iZG91YmxlY2xpY2tjb2x1bW4iIHRpdGxlPSI8JT1kb3VibGVDbGlja0NvbHVtblRpdGxlJT4iIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iKiIgaGVpZ2h0PTI1IG5vd3JhcCBjbGFzcz0idGV4dCI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfTkFWSUdBVE9SIiklPjwvdGQ+Ci08JQotICAgU3RyaW5nIGFsdFJlc3RvcmUgPSBmYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfUkVTVE9SRV9ERUZBVUxUX0ZBVk9SSVRFUyIpOwotICAgU3RyaW5nIGFsdFJlbW92ZSA9IGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9SRU1PVkVfRkFWT1JJVEUiKTsKLSU+ICAgCi0gICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgd2lkdGg9MjUgaGVpZ2h0PTI1PjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiZmF2b3JpdGVzL2FjdGlvbnMvUmVzdG9yZURlZmF1bHRGYXZvcml0ZXNDb25maXJtSlNQLmpzcCIpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3JlZnJlc2hfZW5hYmxlZC5naWYiKSklPiIgd2lkdGg9MTYgaGVpZ2h0PTE2IG9uTW91c2VPdmVyPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3JlZnJlc2hfaGlnaGxpZ2h0ZWQuZ2lmIikpJT4nO21vdXNlb3Zlcih0aGlzKSIgb25Nb3VzZU91dD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9yZWZyZXNoX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNlb3V0KHRoaXMpIiBvbk1vdXNlRG93bj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9yZWZyZXNoX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZWRvd24odGhpcykiIG9uTW91c2VVcD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9yZWZyZXNoX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNldXAodGhpcykiIGFsdD0iPCU9YWx0UmVzdG9yZSU+IiB0aXRsZT0iPCU9YWx0UmVzdG9yZSU+Ij48L2E+PC90ZD4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJmYXZvcml0ZXMvYWN0aW9ucy9SZW1vdmVGYXZvcml0ZXNBY3Rpb25KU1AuanNwIikpJT4iIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPiIgd2lkdGg9MTYgaGVpZ2h0PTE2IG9uTW91c2VPdmVyPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZW92ZXIodGhpcykiIG9uTW91c2VPdXQ9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPic7bW91c2VvdXQodGhpcykiIG9uTW91c2VEb3duPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZWRvd24odGhpcykiIG9uTW91c2VVcD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9lbmFibGVkLmdpZiIpKSU+Jzttb3VzZXVwKHRoaXMpIiBhbHQ9IjwlPWFsdFJlbW92ZSU+IiB0aXRsZT0iPCU9YWx0UmVtb3ZlJT4iPjwvYT48L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICA8L2Rpdj4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDkxYzhhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUEVSU1BFQ1RJVkVfQ09OVEVOVCIpJT48L3RpdGxlPgotPC9oZWFkPgotPGZyYW1lc2V0IGNvbHM9IjwlPWZhdlBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpJT4iIGJnY29sb3I9I0VDRTlEOD4KLSAgPCUKLSAgaWYgKG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmlzUlRMKCkpCi0gIHsKLSAgJT4KLSAgPGZyYW1lIG5hbWU9IjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuQUNUSU9OU19DT05UQUlORVIlPiIgdGl0bGU9IjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX0FDVElPTlNfQ09OVEFJTkVSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfYWN0aW9uc19jb250YWluZXIuanNwIikpJT4iIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTAgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MT4KLSAgPGZyYW1lIG5hbWU9IjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuTkFWSUdBVE9SX0NPTlRBSU5FUiU+IiB0aXRsZT0iPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJmYXZvcml0ZXMvZmF2X25hdmlnYXRvcl9jb250YWluZXIuanNwIikpJT4iIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTAgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MT4KLSAgPCUKLSAgfQotICBlbHNlCi0gIHsKLSAgJT4KLSAgPGZyYW1lIG5hbWU9IjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuTkFWSUdBVE9SX0NPTlRBSU5FUiU+IiB0aXRsZT0iPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJmYXZvcml0ZXMvZmF2X25hdmlnYXRvcl9jb250YWluZXIuanNwIikpJT4iIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTAgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MT4KLSAgPGZyYW1lIG5hbWU9IjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuQUNUSU9OU19DT05UQUlORVIlPiIgdGl0bGU9IjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX0FDVElPTlNfQ09OVEFJTkVSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfYWN0aW9uc19jb250YWluZXIuanNwIikpJT4iIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTAgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MT4KLSAgPCUKLSAgfQotICAlPgotPC9mcmFtZXNldD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfcHJvcGVydGllc19jb250YWluZXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWE2MTI1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BST1BFUlRJRVNfQ09OVEFJTkVSIiklPjwvdGl0bGU+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgcm93cz0iMzMsKiIgYm9yZGVyPTAgYmdjb2xvcj0iI0VDRTlEOCI+Ci0gIDxmcmFtZSBuYW1lPSI8JT1GYXZvcml0ZXNGcmFtZU5hbWVzLlBST1BFUlRJRVNfVE9PTEJBUiU+IiB0aXRsZT0iPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19UT09MQkFSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfcHJvcGVydGllc190b29sYmFyLmpzcCIpKSU+IiBub3Jlc2l6ZSBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0wIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+Ci0gIDxmcmFtZSBuYW1lPSI8JT1GYXZvcml0ZXNGcmFtZU5hbWVzLlBST1BFUlRJRVNfQ09OVEVOVCU+IiB0aXRsZT0iPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05URU5UIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImZhdm9yaXRlcy9mYXZfcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IiBub3Jlc2l6ZSBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0wIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+Ci08L2ZyYW1lc2V0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X3Byb3BlcnRpZXNfY29udGVudC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfcHJvcGVydGllc19jb250ZW50LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5NTZhNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfcHJvcGVydGllc19jb250ZW50LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05URU5UIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci08JQotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIGlmIChzZWxlY3RlZE5vZGUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAgIFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyOwotICAgICAgICBpZiAoc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpID09IEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCkKLSAgICAgICAgICAgIHRvb2xNYW5hZ2VyID0gc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRvb2xNYW5hZ2VyID0gc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sTWFuYWdlcigpOwotICAgICAgICBUb29sIHNlbGVjdGVkVG9vbCA9IHRvb2xNYW5hZ2VyLmdldFNlbGVjdGVkVG9vbCgpOwotICAgICAgICBpZiAoc2VsZWN0ZWRUb29sICE9IG51bGwgJiYgc2VsZWN0ZWRUb29sLmdldFRvb2xUeXBlKCkgIT0gVG9vbFR5cGVzLkFDVElPTikgewotICAgICAgICAlPgotICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIGxvY2F0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoc2VsZWN0ZWRUb29sLmdldEZvcm1MaW5rKCkpKSU+IjsKLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICU+Ci08dGFibGU+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT19BQ1RJT05fU0VMRUNURUQiKSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0gICAgICAgIDwlCi0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgJT4KLTx0YWJsZT4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgIDwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX05PREVfU0VMRUNURUQiKSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0gICAgPCUKLSAgICB9Ci0lPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfcHJvcGVydGllc190b29sYmFyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9wcm9wZXJ0aWVzX3Rvb2xiYXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmY0ZGI1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9wcm9wZXJ0aWVzX3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BST1BFUlRJRVNfVE9PTEJBUiIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90b29sYmFyLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzZnJhbWVzZXRzLmpzcCIgZmx1c2g9InRydWUiLz4gIAotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvdG9vbGJhci5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0idG9vbGJhcmJvZHltYXJnaW4iPgotPGRpdiBpZD0idG9vbGJhcmJvcmRlciI+Ci0gIDxkaXYgaWQ9InRvb2xiYXIiIG9uZGJsY2xpY2s9InByb2Nlc3NGcmFtZXNldFNpemVzKGRvY3VtZW50LmZvcm1zWzBdKSI+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1BY3Rpb24iIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICBmb3JtQWN0aW9uLmFwcGVuZCgiZmF2b3JpdGVzL2FjdGlvbnMvUmVzaXplRmF2b3JpdGVzRnJhbWVzQWN0aW9uSlNQLmpzcCIpOwotJT4gIAotPC9qc3A6dXNlQmVhbj4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUZyYW1lTmFtZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gICBmb3JtRnJhbWVOYW1lLmFwcGVuZChGYXZvcml0ZXNGcmFtZU5hbWVzLlBST1BFUlRJRVNfQ09OVEFJTkVSKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvZm9ybXMvUHJvY2Vzc0Zhdm9yaXRlc0ZyYW1lc2V0c0Zvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PTI1IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2FjdGlvbnMuZ2lmIikpJT4iIGFsdD0iIiB3aWR0aD0xNiBoZWlnaHQ9MTY+PC90ZD4KLTwlCi0gICBTdHJpbmcgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IG51bGw7Ci0gICBpZiAoZmF2UGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkuZW5kc1dpdGgoIjEwMCUiKSkKLSAgIHsKLSAgICAgaWYgKGZhdlBlcnNwZWN0aXZlLmdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKS5zdGFydHNXaXRoKCIxMDAlIikpCi0gICAgICAgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0RPVUJMRV9DTElDS19UT19SRVNUT1JFIik7Ci0gICB9Ci0gICBpZiAoZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9PSBudWxsKQotICAgICBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX01BWElNSVpFIik7Ci0lPiAgICAgICAgCi0gICAgICAgIDx0ZCBpZD0iZG91YmxlY2xpY2tjb2x1bW4iIHRpdGxlPSI8JT1kb3VibGVDbGlja0NvbHVtblRpdGxlJT4iIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iKiIgaGVpZ2h0PTI1IG5vd3JhcCBjbGFzcz0idGV4dCI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfQUNUSU9OUyIpJT48L3RkPgotPCUKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGZhdlBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBpZiAoc2VsZWN0ZWROb2RlICE9IG51bGwpIHsKLSAgICAgICAgVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXI7Ci0gICAgICAgIGlmIChzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKQotICAgICAgICAgICAgdG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xNYW5hZ2VyKCk7Ci0gICAgICAgIGZvcihpbnQgaT0wOyBpPHRvb2xNYW5hZ2VyLmdldE51bWJlck9mVG9vbHMoKTsgaSsrKSB7Ci0gICAgICAgICAgICBUb29sIHRvb2wgPSAoVG9vbCl0b29sTWFuYWdlci5nZXRUb29sKGkpOwotICAgICAgICAgICAgJT4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PCU9dG9vbC5yZW5kZXJUb29sKHJlc3BvbnNlLGNvbnRyb2xsZXIpJT48L3RkPgotICAgICAgICAgICAgPCUKLSAgICAgICAgfQotICAgIH0KLSU+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZGl2PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfc3RhdHVzX2NvbnRhaW5lci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mYXZfc3RhdHVzX2NvbnRhaW5lci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNWZjNTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X3N0YXR1c19jb250YWluZXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfQ09OVEFJTkVSIiklPjwvdGl0bGU+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgcm93cz0iMzMsKiIgYm9yZGVyPTAgYmdjb2xvcj0iI0VDRTlEOCI+Ci0gIDxmcmFtZSBuYW1lPSI8JT1GYXZvcml0ZXNGcmFtZU5hbWVzLlNUQVRVU19UT09MQkFSJT4iIHRpdGxlPSI8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfVE9PTEJBUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJmYXZvcml0ZXMvZmF2X3N0YXR1c190b29sYmFyLmpzcCIpKSU+IiBub3Jlc2l6ZSBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0wIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+Ci0gIDxmcmFtZSBuYW1lPSI8JT1GYXZvcml0ZXNGcmFtZU5hbWVzLlNUQVRVU19DT05URU5UJT4iIHRpdGxlPSI8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfQ09OVEVOVCIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJmYXZvcml0ZXMvZmF2X3N0YXR1c19jb250ZW50LmpzcCIpKSU+IiBub3Jlc2l6ZSBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0wIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+Ci08L2ZyYW1lc2V0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X3N0YXR1c19jb250ZW50LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9zdGF0dXNfY29udGVudC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YjU1YzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X3N0YXR1c19jb250ZW50LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDI3ICAgMTI3NDQzIGplc3BlckBzZWxza2FiZXQub3JnIC0gSmVzcGVyIFMgTW9sbGVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuKiwKLQlvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1NUQVRVU19DT05URU5UIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gIDx0YWJsZT4KLSAgICA8dHI+Ci0gICAgICA8dGQ+Ci0gICAgICAgIDxwcmU+Ci08JT1IVE1MVXRpbHMuY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzU3RyaWN0KGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpLmdldE1lc3NhZ2VzRnJvbUxpc3QoKSklPgotICAgICAgICA8L3ByZT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X3N0YXR1c190b29sYmFyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zhdl9zdGF0dXNfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNzQ4YjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZmF2X3N0YXR1c190b29sYmFyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfVE9PTEJBUiIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90b29sYmFyLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzZnJhbWVzZXRzLmpzcCIgZmx1c2g9InRydWUiLz4gIAotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvdG9vbGJhci5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0idG9vbGJhcmJvZHltYXJnaW4iPgotPGRpdiBpZD0idG9vbGJhcmJvcmRlciI+Ci0gIDxkaXYgaWQ9InRvb2xiYXIiIG9uZGJsY2xpY2s9InByb2Nlc3NGcmFtZXNldFNpemVzKGRvY3VtZW50LmZvcm1zWzBdKSI+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1BY3Rpb24iIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICBmb3JtQWN0aW9uLmFwcGVuZCgiZmF2b3JpdGVzL2FjdGlvbnMvUmVzaXplRmF2b3JpdGVzRnJhbWVzQWN0aW9uSlNQLmpzcCIpOwotJT4gIAotPC9qc3A6dXNlQmVhbj4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUZyYW1lTmFtZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gICBmb3JtRnJhbWVOYW1lLmFwcGVuZChGYXZvcml0ZXNGcmFtZU5hbWVzLlNUQVRVU19DT05UQUlORVIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zhdm9yaXRlcy9mb3Jtcy9Qcm9jZXNzRmF2b3JpdGVzRnJhbWVzZXRzRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBoZWlnaHQ9MjUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvc3RhdHVzLmdpZiIpKSU+IiBhbHQ9IiIgd2lkdGg9MTYgaGVpZ2h0PTE2PjwvdGQ+Ci08JQotICAgU3RyaW5nIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBudWxsOwotICAgaWYgKGZhdlBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpLmVuZHNXaXRoKCIxMDAlIikpCi0gICB7Ci0gICAgIGlmIChmYXZQZXJzcGVjdGl2ZS5nZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCkuZW5kc1dpdGgoIjEwMCUiKSkKLSAgICAgICBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX1JFU1RPUkUiKTsgICAgICAgCi0gICB9Ci0gICBpZiAoZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9PSBudWxsKQotICAgICBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX01BWElNSVpFIik7Ci0lPiAgICAgICAgCi0gICAgICAgIDx0ZCBpZD0iZG91YmxlY2xpY2tjb2x1bW4iIHRpdGxlPSI8JT1kb3VibGVDbGlja0NvbHVtblRpdGxlJT4iIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iKiIgaGVpZ2h0PTI1IG5vd3JhcCBjbGFzcz0idGV4dCI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfU1RBVFVTIiklPjwvdGQ+Ci08JQotICAgU3RyaW5nIGFsdENsZWFyID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfQ0xFQVIiKTsKLSU+ICAgICAgICAgICAKLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJmYXZvcml0ZXMvZmF2X3N0YXR1c19jb250ZW50LmpzcCIpKSU+IiB0YXJnZXQ9IjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuU1RBVFVTX0NPTlRFTlQlPiI+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIikpJT4iIHdpZHRoPTE2IGhlaWdodD0xNiBvbk1vdXNlT3Zlcj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2VvdmVyKHRoaXMpIiBvbk1vdXNlT3V0PSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNlb3V0KHRoaXMpIiBvbk1vdXNlRG93bj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2Vkb3duKHRoaXMpIiBvbk1vdXNlVXA9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPic7bW91c2V1cCh0aGlzKSIgYWx0PSI8JT1hbHRDbGVhciU+IiB0aXRsZT0iPCU9YWx0Q2xlYXIlPiI+PC9hPjwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZGl2PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc0ltcG9ydFRvV29ya2JlbmNoRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNJbXBvcnRUb1dvcmtiZW5jaEZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGI0MTg0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc0ltcG9ydFRvV29ya2JlbmNoRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1Qcm9wZXJ0aWVzIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdlBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgLy8gVGhlIHNlbGVjdGVkIG5vZGUgbXVzdCBiZSBhIEZhdm9yaXRlc1dTRExTZXJ2aWNlTm9kZS4KLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQgd3NkbEVsZW1lbnQgPSAoRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgZm9ybVByb3BlcnRpZXMucHV0KCJmb3JtQWN0aW9uTGluayIsImZhdm9yaXRlcy9hY3Rpb25zL0Zhdm9yaXRlc0ltcG9ydFRvV29ya2JlbmNoQWN0aW9uSlNQLmpzcCIpOwotICAgZm9ybVByb3BlcnRpZXMucHV0KCJ3c2RsVVJMIix3c2RsRWxlbWVudC5nZXRXc2RsVXJsKCkpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL0ltcG9ydFdTRExBbmRXU0lMVG9Xb3JrYmVuY2hGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc0xhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc0xhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkzMjNkZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUFjdGlvbkxpbmsiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICAgZm9ybUFjdGlvbkxpbmsuYXBwZW5kKCJmYXZvcml0ZXMvYWN0aW9ucy9GYXZvcml0ZXNMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uSlNQLmpzcCIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL0xhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1VERElCdXNpbmVzc0RldGFpbHNQYWdlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1VERElCdXNpbmVzc0RldGFpbHNQYWdlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwYjZkNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNVRERJQnVzaW5lc3NEZXRhaWxzUGFnZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS53c2lsLmV4dGVuc2lvbi51ZGRpLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICAgICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgICAgVG9vbE1hbmFnZXIgY3VycmVudFRvb2xNYW5hZ2VyID0gc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpOwotICAgICAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgIDx0aXRsZT48JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX1VERElfQlVTSU5FU1NfREVUQUlMUyIpJT48L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0KLSAgICA8JQotICAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiOwotICAgIFN0cmluZyB0aXRsZSA9IGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9GQVZPUklURVNfVURESV9CVVNJTkVTU19ERVRBSUxTIik7Ci0gICAgJT4KLSAgICA8JUAgaW5jbHVkZSBmaWxlID0gIi9mb3Jtcy9mb3JtaGVhZGVyLmluYyIgJT4KLSAgICA8JQotICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50KSB7Ci0gICAgICAgIEZhdm9yaXRlc1VERElCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCA9IChGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50KXNlbGVjdGVkRWxlbWVudDsKLSAgICAlPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9CVVNJTkVTU19OQU1FIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWJ1c0VsZW1lbnQuZ2V0TmFtZSgpJT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JTlFVSVJZX1VSTCIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICAgICAgICA8JT1idXNFbGVtZW50LmdldElucXVpcnlVUkwoKSU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGJyPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQlVTSU5FU1NfS0VZIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWJ1c0VsZW1lbnQuZ2V0QnVzaW5lc3NLZXkoKSU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci08anNwOnVzZUJlYW4gaWQ9ImN1cnJlbnRUb29sTWFuYWdlckhhc2giIGNsYXNzPSJqYXZhLnV0aWwuSGFzaHRhYmxlIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICBjdXJyZW50VG9vbE1hbmFnZXJIYXNoLnB1dChBY3Rpb25JbnB1dHMuQ1VSUkVOVF9UT09MX01BTkFHRVIsY3VycmVudFRvb2xNYW5hZ2VyKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9vdGhlckFjdGlvbnMuanNwIiBmbHVzaD0idHJ1ZSIvPiAgICAgICAgCi0KLSAgICA8JQotICAgIH0KLSAgICAlPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNVRERJUmVnaXN0cnlEZXRhaWxzUGFnZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNVRERJUmVnaXN0cnlEZXRhaWxzUGFnZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZDkzNGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzVURESVJlZ2lzdHJ5RGV0YWlsc1BhZ2UuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUud3NpbC5leHRlbnNpb24udWRkaS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmlvLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICAgICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgICAgVG9vbE1hbmFnZXIgY3VycmVudFRvb2xNYW5hZ2VyID0gc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpOwotICAgICAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgIDx0aXRsZT48JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX1VERElfUkVHSVNUUllfREVUQUlMUyIpJT48L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0KLSAgICA8JQotICAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiOwotICAgIFN0cmluZyB0aXRsZSA9IGZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9GQVZPUklURVNfVURESV9SRUdJU1RSWV9ERVRBSUxTIik7Ci0gICAgJT4KLSAgICA8JUAgaW5jbHVkZSBmaWxlID0gIi9mb3Jtcy9mb3JtaGVhZGVyLmluYyIgJT4KLSAgICA8JQotICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50KSB7Ci0gICAgICAgIEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50KXNlbGVjdGVkRWxlbWVudDsKLSAgICAgICAgU3RyaW5nIHJlZ2lzdHJ5TmFtZSA9IHJlZ0VsZW1lbnQuZ2V0TmFtZSgpOwotICAgICU+Ci0KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1JFR0lTVFJZX05BTUUiKSU+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9cmVnaXN0cnlOYW1lJT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JTlFVSVJZX1VSTCIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICAgICAgICA8JT1yZWdFbGVtZW50LmdldElucXVpcnlVUkwoKSU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci08JQotICAgICBTdHJpbmcgcHVibGlzaFVSTCA9IHJlZ0VsZW1lbnQuZ2V0UHVibGlzaFVSTCgpOwotICAgICBpZiAoVmFsaWRhdG9yLnZhbGlkYXRlVVJMKHB1Ymxpc2hVUkwpKQotICAgICB7Ci0lPgotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9QVUJMSVNIX1VSTCIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICAgICAgICA8JT1wdWJsaXNoVVJMJT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLTwlCi0gICAgIH0KLSAgIAotICAgICBTdHJpbmcgcmVnaXN0cnlVUkwgPSByZWdFbGVtZW50LmdldFJlZ2lzdHJhdGlvblVSTCgpOwotICAgICBpZiAoVmFsaWRhdG9yLnZhbGlkYXRlVVJMKHJlZ2lzdHJ5VVJMKSkKLSAgICAgewotJT4KLSAgICAgICAgICAgIDxicj4KLSAgICAgICAgICAgIDx0YWJsZT4KLSAgICAgICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1JFR0lTVFJZX1VSTCIscmVnaXN0cnlVUkwpJT4KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPC90YWJsZT4KLTwlCi0gICAgICB9Ci0gICAgICAKLSAgICAgIFN0cmluZ0J1ZmZlciBjYXRlZ29yeURpcmVjdG9yeSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgIEZhdm9yaXRlc1VERElSZWdpc3RyeUZvbGRlckVsZW1lbnQuZm9ybUNhdGVnb3JpZXNEaXJlY3RvcnkoY2F0ZWdvcnlEaXJlY3RvcnksY29udHJvbGxlci5nZXRTZXJ2bGV0RW5naW5lU3RhdGVMb2NhdGlvbigpLHJlZ2lzdHJ5TmFtZSk7Ci0gICAgICBGaWxlIGNhdGVnb3J5RGlyZWN0b3J5RmlsZSA9IG5ldyBGaWxlKGNhdGVnb3J5RGlyZWN0b3J5LnRvU3RyaW5nKCkpOwotICAgICAgU3RyaW5nW10gY2F0ZWdvcnlGaWxlcyA9IGNhdGVnb3J5RGlyZWN0b3J5RmlsZS5saXN0KCk7Ci0gICAgICBpZiAoY2F0ZWdvcnlGaWxlcyAhPSBudWxsKQotICAgICAgewotJT4KLTxicj4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgPHRyPgotICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VU0VSX0RFRklORURfQ0FURUdPUllfREFUQV9GSUxFUyIpJT4KLSAgICA8L3RoPgotICA8L3RyPgotPCUgICAgICAKLSAgICAgICAgZm9yIChpbnQgaT0wO2k8Y2F0ZWdvcnlGaWxlcy5sZW5ndGg7aSsrKQotICAgICAgICB7Ci0lPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgIDwlPWNhdGVnb3J5RmlsZXNbaV0lPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08JSAgICAgICAgCi0gICAgICAgIH0KLSU+Ci08L3RhYmxlPgotPCUgICAgICAgIAotICAgICAgfSAgICAgIAotJT4KLTxqc3A6dXNlQmVhbiBpZD0iY3VycmVudFRvb2xNYW5hZ2VySGFzaCIgY2xhc3M9ImphdmEudXRpbC5IYXNodGFibGUiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGN1cnJlbnRUb29sTWFuYWdlckhhc2gucHV0KEFjdGlvbklucHV0cy5DVVJSRU5UX1RPT0xfTUFOQUdFUixjdXJyZW50VG9vbE1hbmFnZXIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL290aGVyQWN0aW9ucy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JSAgICAgIAotICAgIH0KLSU+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1VERElTZXJ2aWNlRGV0YWlsc1BhZ2UuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzVURESVNlcnZpY2VEZXRhaWxzUGFnZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNDNjNTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzVURESVNlcnZpY2VEZXRhaWxzUGFnZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS53c2lsLmV4dGVuc2lvbi51ZGRpLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICAgICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2UGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICAgICAgVG9vbE1hbmFnZXIgY3VycmVudFRvb2xNYW5hZ2VyID0gc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpOwotICAgICAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgIDx0aXRsZT48JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX1VERElfU0VSVklDRV9ERVRBSUxTIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLQotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZBVk9SSVRFU19VRERJX1NFUlZJQ0VfREVUQUlMUyIpOwotICAgICU+Ci0gICAgPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50KSB7Ci0gICAgICAgIEZhdm9yaXRlc1VERElTZXJ2aWNlRWxlbWVudCBzZXJFbGVtZW50ID0gKEZhdm9yaXRlc1VERElTZXJ2aWNlRWxlbWVudClzZWxlY3RlZEVsZW1lbnQ7Ci0gICAgJT4KLQotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0VSVklDRV9OQU1FIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPXNlckVsZW1lbnQuZ2V0TmFtZSgpJT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JTlFVSVJZX1VSTCIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICAgICAgICA8JT1zZXJFbGVtZW50LmdldElucXVpcnlVUkwoKSU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGJyPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0VSVklDRV9LRVkiKSU+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9c2VyRWxlbWVudC5nZXRTZXJ2aWNlS2V5KCklPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotPGpzcDp1c2VCZWFuIGlkPSJjdXJyZW50VG9vbE1hbmFnZXJIYXNoIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgY3VycmVudFRvb2xNYW5hZ2VySGFzaC5wdXQoQWN0aW9uSW5wdXRzLkNVUlJFTlRfVE9PTF9NQU5BR0VSLGN1cnJlbnRUb29sTWFuYWdlcik7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvb3RoZXJBY3Rpb25zLmpzcCIgZmx1c2g9InRydWUiLz4gICAgICAgIAotCi0gICAgPCUKLSAgICB9Ci0gICAgJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzVURESVNlcnZpY2VJbnREZXRhaWxzUGFnZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNVRERJU2VydmljZUludERldGFpbHNQYWdlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY4NDIzZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNVRERJU2VydmljZUludERldGFpbHNQYWdlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLnVkZGkuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgICAgICBUb29sTWFuYWdlciBjdXJyZW50VG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCk7Ci0gICAgICAgIFRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfVURESV9TRVJWSUNFX0lOVEVSRkFDRV9ERVRBSUxTIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLQotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZBVk9SSVRFU19VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0RFVEFJTFMiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDwlCi0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCkgewotICAgICAgICBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUVsZW1lbnQgc2VySW50RWxlbWVudCA9IChGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50OwotICAgICU+Ci0KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUiKSU+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9c2VySW50RWxlbWVudC5nZXROYW1lKCklPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDxicj4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lOUVVJUllfVVJMIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPXNlckludEVsZW1lbnQuZ2V0SW5xdWlyeVVSTCgpJT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TRVJWSUNFX0lOVEVSRkFDRV9LRVkiKSU+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9c2VySW50RWxlbWVudC5nZXRTZXJ2aWNlSW50ZXJmYWNlS2V5KCklPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotPGpzcDp1c2VCZWFuIGlkPSJjdXJyZW50VG9vbE1hbmFnZXJIYXNoIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgY3VycmVudFRvb2xNYW5hZ2VySGFzaC5wdXQoQWN0aW9uSW5wdXRzLkNVUlJFTlRfVE9PTF9NQU5BR0VSLGN1cnJlbnRUb29sTWFuYWdlcik7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvb3RoZXJBY3Rpb25zLmpzcCIgZmx1c2g9InRydWUiLz4gICAgICAgIAotCi0gICAgPCUKLSAgICB9Ci0gICAgJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeURldGFpbHNQYWdlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlEZXRhaWxzUGFnZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MDhhMWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeURldGFpbHNQYWdlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMxMiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDkxMiAgIDE0MTc5NiBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS53c2lsLmV4dGVuc2lvbi51ZGRpLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEuaW8uKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5EZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVGF4b25vbWllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teSIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgICAgICBUb29sTWFuYWdlciBjdXJyZW50VG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCk7Ci0gICAgICAgIFRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfVVNFUl9ERUZfVURESV9SRUdJU1RSWV9ERVRBSUxTIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLQotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZBVk9SSVRFU19VU0VSX0RFRl9VRERJX1JFR0lTVFJZX0RFVEFJTFMiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDwlCi0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlFbGVtZW50KSB7Ci0gICAgICAgIEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50OwotICAgICAgICByZWdFbGVtZW50LnJlZnJlc2hNZXRhKCk7ICAgICAgCi0gICAgCi0gICAgICAgIFN0cmluZyB2ZXJzaW9uID0gcmVnRWxlbWVudC5nZXRWZXJzaW9uKCk7Ci0gICAgICAgIGlmICh2ZXJzaW9uICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgJT4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VERElfVkVSU0lPTiIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICAgICAgICA8JT12ZXJzaW9uJT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgICAlPgotCi0gICAgICAgIDwlCi0gICAgICAgIExpc3QgbmFtZXMgPSByZWdFbGVtZW50LmdldE5hbWVzKCk7Ci0gICAgICAgIGlmIChuYW1lcyAhPSBudWxsICYmICFuYW1lcy5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgJT4KLSAgICAgICAgPGJyPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgd2lkdGg9IjEiIG5vd3JhcD4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9MQU5HVUFHRSIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1JFR0lTVFJZX05BTUUiKSU+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8JQotICAgICAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG5hbWVzLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIE5hbWUgbmFtZSA9IChOYW1lKWl0Lm5leHQoKTsKLSAgICAgICAgICAgICAgU3RyaW5nIGxhbmcgPSBuYW1lLmdldExhbmcoKTsKLSAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+PCU9bGFuZyAhPSBudWxsID8gbGFuZyA6ICItLSIlPjwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj48JT1uYW1lLmdldFZhbHVlKCklPjwvdGQ+Ci0gICAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAlPgotICAgICAgICA8L3RhYmxlPgotICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICAgICU+Ci0KLSAgICAgICAgPCUKLSAgICAgICAgTGlzdCBkZXNjcyA9IHJlZ0VsZW1lbnQuZ2V0RGVzY3MoKTsKLSAgICAgICAgaWYgKGRlc2NzICE9IG51bGwgJiYgIWRlc2NzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAlPgotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiB3aWR0aD0iMSIgbm93cmFwPgotICAgICAgICAgICAgICAgICAgICA8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xBTkdVQUdFIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfREVTQyIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDwlCi0gICAgICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gZGVzY3MuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgRGVzY3JpcHRpb24gZGVzYyA9IChEZXNjcmlwdGlvbilpdC5uZXh0KCk7Ci0gICAgICAgICAgICAgIFN0cmluZyBsYW5nID0gZGVzYy5nZXRMYW5nKCk7Ci0gICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPjwlPWxhbmcgIT0gbnVsbCA/IGxhbmcgOiAiLS0iJT48L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+PCU9ZGVzYy5nZXRWYWx1ZSgpJT48L3RkPgotICAgICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgfQotICAgICAgICAgICAgJT4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgICAlPgotCi0gICAgICAgIDwlCi0gICAgICAgIFN0cmluZyBkZWZhdWx0TG9naW4gPSByZWdFbGVtZW50LmdldERlZmF1bHRMb2dpbigpOwotICAgICAgICBpZiAoZGVmYXVsdExvZ2luICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgJT4KLSAgICAgICAgPGJyPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfREVGQVVMVF9MT0dJTiIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICAgICAgICA8JT1kZWZhdWx0TG9naW4lPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICAgICU+Ci0KLSAgICAgICAgPCUKLSAgICAgICAgU3RyaW5nIGRlZmF1bHRQYXNzd29yZCA9IHJlZ0VsZW1lbnQuZ2V0RGVmYXVsdFBhc3N3b3JkKCk7Ci0gICAgICAgIGlmIChkZWZhdWx0UGFzc3dvcmQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAlPgotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ERUZBVUxUX1BBU1NXT1JEIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWRlZmF1bHRQYXNzd29yZCU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgICAgJT4KLQotICAgICAgICA8JQotICAgICAgICBTdHJpbmcgaW5xdWlyeVVSTCA9IHJlZ0VsZW1lbnQuZ2V0SW5xdWlyeVVSTCgpOwotICAgICAgICBpZiAoaW5xdWlyeVVSTCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICU+Ci0gICAgICAgIDxicj4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lOUVVJUllfVVJMIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWlucXVpcnlVUkwlPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICAgICU+Ci0KLSAgICAgPCUKLSAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSByZWdFbGVtZW50LmdldFB1Ymxpc2hVUkwoKTsKLSAgICAgaWYgKFZhbGlkYXRvci52YWxpZGF0ZVVSTChwdWJsaXNoVVJMKSkKLSAgICAgewotICAgICAlPgotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9QVUJMSVNIX1VSTCIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICAgICAgICA8JT1wdWJsaXNoVVJMJT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgPCUKLSAgICAgfQotCi0gICAgIFN0cmluZyBzZWN1cmVJbnF1aXJ5VVJMID0gcmVnRWxlbWVudC5nZXRTZWN1cmVJbnF1aXJ5VVJMKCk7Ci0gICAgIGlmIChWYWxpZGF0b3IudmFsaWRhdGVVUkwoc2VjdXJlSW5xdWlyeVVSTCkpCi0gICAgIHsKLSAgICAgJT4KLSAgICAgICAgPGJyPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0VDVVJFX0lOUVVJUllfVVJMIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPXNlY3VyZUlucXVpcnlVUkwlPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotICAgICA8JQotICAgICB9Ci0KLSAgICAgU3RyaW5nIHNlY3VyZVB1Ymxpc2hVUkwgPSByZWdFbGVtZW50LmdldFNlY3VyZVB1Ymxpc2hVUkwoKTsKLSAgICAgaWYgKFZhbGlkYXRvci52YWxpZGF0ZVVSTChzZWN1cmVQdWJsaXNoVVJMKSkKLSAgICAgewotICAgICAlPgotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TRUNVUkVfUFVCTElTSF9VUkwiKSU+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9c2VjdXJlUHVibGlzaFVSTCU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgIDwlCi0gICAgIH0KLSAgICAgJT4KLSAgICAgCi0gICAgIDwlCi0gICAgIFRheG9ub215W10gdGF4b25vbWllcyA9IHJlZ0VsZW1lbnQuZ2V0VGF4b25vbWllcygpOwotICAgICBpZiAodGF4b25vbWllcyAhPSBudWxsICYmIHRheG9ub21pZXMubGVuZ3RoID4gMCkKLSAgICAgewotICAgICAlPgotICAgICAgIDxicj4KLSAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICA8dHI+Ci0gICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgIDwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVEFYT05PTVkiKSU+Ci0gICAgICAgICAgIDwvdGg+Ci0gICAgICAgICA8L3RyPgotICAgICAgICAgPCUKLSAgICAgICAgIGZvciAoaW50IGk9MDsgaTx0YXhvbm9taWVzLmxlbmd0aDsgaSsrKQotICAgICAgICAgewotICAgICAgICAgICBUYXhvbm9teSB0YXhvbm9teSA9IHRheG9ub21pZXNbaV07Ci0gICAgICAgICAlPgotICAgICAgICAgPHRyPgotICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPjwlPXRheG9ub215LmdldE5hbWUoKSU+PC90ZD4KLSAgICAgICAgIDwvdHI+Ci0gICAgICAgICA8JQotICAgICAgICAgfQotICAgICAgICAgJT4KLSAgICAgICA8L3RhYmxlPgotICAgICAgIDwlCi0gICAgIH0KLSAgICAgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjdXJyZW50VG9vbE1hbmFnZXJIYXNoIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgY3VycmVudFRvb2xNYW5hZ2VySGFzaC5wdXQoQWN0aW9uSW5wdXRzLkNVUlJFTlRfVE9PTF9NQU5BR0VSLGN1cnJlbnRUb29sTWFuYWdlcik7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvb3RoZXJBY3Rpb25zLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlICAgICAgCi0gICAgfQotJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzV1NETERldGFpbHNQYWdlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1dTRExEZXRhaWxzUGFnZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0NDk1MzguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvRmF2b3JpdGVzV1NETERldGFpbHNQYWdlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5kYXRhbW9kZWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgICAgICBUb29sTWFuYWdlciBjdXJyZW50VG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCk7Ci0gICAgICAgIFRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfV1NETF9ERVRBSUxTIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLQotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZBVk9SSVRFU19XU0RMX0RFVEFJTFMiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDwlCi0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc1dTRExTZXJ2aWNlRWxlbWVudCkgewotICAgICAgICBGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQgd3NkbEVsZW1lbnQgPSAoRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50KXNlbGVjdGVkRWxlbWVudDsKLSAgICAlPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPCU9ZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VUkwiKSU+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9d3NkbEVsZW1lbnQuZ2V0V3NkbFVybCgpJT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLTxqc3A6dXNlQmVhbiBpZD0iY3VycmVudFRvb2xNYW5hZ2VySGFzaCIgY2xhc3M9ImphdmEudXRpbC5IYXNodGFibGUiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGN1cnJlbnRUb29sTWFuYWdlckhhc2gucHV0KEFjdGlvbklucHV0cy5DVVJSRU5UX1RPT0xfTUFOQUdFUixjdXJyZW50VG9vbE1hbmFnZXIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL290aGVyQWN0aW9ucy5qc3AiIGZsdXNoPSJ0cnVlIi8+ICAgICAgICAKLQotICAgIDwlCi0gICAgfQotICAgICU+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1dTSUxEZXRhaWxzUGFnZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9mb3Jtcy9GYXZvcml0ZXNXU0lMRGV0YWlsc1BhZ2UuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWUxYWQ3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL0Zhdm9yaXRlc1dTSUxEZXRhaWxzUGFnZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLndzaWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgICAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgICAgICBUb29sTWFuYWdlciBjdXJyZW50VG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCk7Ci0gICAgICAgIFRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfV1NJTF9ERVRBSUxTIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLQotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZmF2UGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZBVk9SSVRFU19XU0lMX0RFVEFJTFMiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDwlCi0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc1dTSUxFbGVtZW50KSB7Ci0gICAgICAgIEZhdm9yaXRlc1dTSUxFbGVtZW50IHdzaWxFbGVtZW50ID0gKEZhdm9yaXRlc1dTSUxFbGVtZW50KXNlbGVjdGVkRWxlbWVudDsKLSAgICAgICAgJT4KLQotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPWZhdlBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVVJMIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPXdzaWxFbGVtZW50LmdldFdzaWxVcmwoKSU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci08anNwOnVzZUJlYW4gaWQ9ImN1cnJlbnRUb29sTWFuYWdlckhhc2giIGNsYXNzPSJqYXZhLnV0aWwuSGFzaHRhYmxlIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICBjdXJyZW50VG9vbE1hbmFnZXJIYXNoLnB1dChBY3Rpb25JbnB1dHMuQ1VSUkVOVF9UT09MX01BTkFHRVIsY3VycmVudFRvb2xNYW5hZ2VyKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9vdGhlckFjdGlvbnMuanNwIiBmbHVzaD0idHJ1ZSIvPiAgICAgICAgCi0KLSAgICAgICAgPCUKLSAgICB9Ci0gICAgJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvUHJvY2Vzc0Zhdm9yaXRlc0ZyYW1lc2V0c0Zvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvZm9ybXMvUHJvY2Vzc0Zhdm9yaXRlc0ZyYW1lc2V0c0Zvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjlhNzFjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2Zvcm1zL1Byb2Nlc3NGYXZvcml0ZXNGcmFtZXNldHNGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPGpzcDp1c2VCZWFuIGlkPSJmb3JtQWN0aW9uIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUZyYW1lTmFtZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChmb3JtQWN0aW9uLnRvU3RyaW5nKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBzdHlsZT0ibWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MCI+Ci0gIDxpbnB1dCBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuRlJBTUVfTkFNRSU+IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSI8JT1mb3JtRnJhbWVOYW1lJT4iPgotICA8aW5wdXQgbmFtZT0iPCU9RmF2b3JpdGVzQWN0aW9uSW5wdXRzLkZSQU1FU0VUX0NPTFNfUEVSU1BFQ1RJVkVfQ09OVEVOVCU+IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSI8JT1mYXZQZXJzcGVjdGl2ZS5nZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKSU+Ij4KLSAgPGlucHV0IG5hbWU9IjwlPUZhdm9yaXRlc0FjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSJT4iIHR5cGU9ImhpZGRlbiIgdmFsdWU9IjwlPWZhdlBlcnNwZWN0aXZlLmdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKSU+Ij4KLTwvZm9ybT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2FkZF90b191ZGRpX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2FkZF90b191ZGRpX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjVkMTlhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9hZGRfdG9fdWRkaV9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9hZGRfdG9fdWRkaV9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvYWRkX3RvX3VkZGlfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWEzZGRjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9hZGRfdG9fdWRkaV9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvYWRkX3RvX3dzaWxfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvYWRkX3RvX3dzaWxfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NDE4NDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2FkZF90b193c2lsX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2FkZF90b193c2lsX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9hZGRfdG9fd3NpbF9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MmI4Y2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2FkZF90b193c2lsX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X1dTSUxfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9XU0lMX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmEwOTg0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X1dTSUxfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9XU0lMX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X1dTSUxfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGE0Y2ViLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X1dTSUxfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2xpc3RfYnVzaW5lc3NfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9idXNpbmVzc19lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQxZTM3YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9idXNpbmVzc19lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X2J1c2luZXNzX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X2J1c2luZXNzX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUxYjk3NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9idXNpbmVzc19oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9yZWdpc3RyeV9lbmFibGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X3JlZ2lzdHJ5X2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjJhYTE1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X3JlZ2lzdHJ5X2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2xpc3RfcmVnaXN0cnlfaGlnaGxpZ2h0ZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2xpc3RfcmVnaXN0cnlfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTFlY2I1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X3JlZ2lzdHJ5X2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X3NlcnZpY2VfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9zZXJ2aWNlX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzUxZGFmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X3NlcnZpY2VfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2UxMzM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2xpc3Rfc2VydmljZV9pbnRlcmZhY2VfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9zZXJ2aWNlX2ludGVyZmFjZV9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ2OTg2YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9zZXJ2aWNlX2ludGVyZmFjZV9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X3NlcnZpY2VfaW50ZXJmYWNlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy9saXN0X3NlcnZpY2VfaW50ZXJmYWNlX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE1MzEyMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF9zZXJ2aWNlX2ludGVyZmFjZV9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF93c2RsX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2xpc3Rfd3NkbF9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRjMDI4NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF93c2RsX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL2xpc3Rfd3NkbF9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF93c2RsX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI4YzhlYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvbGlzdF93c2RsX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy91ZGRpX2J1c2luZXNzX25vZGUuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3VkZGlfYnVzaW5lc3Nfbm9kZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZDZhNzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3VkZGlfYnVzaW5lc3Nfbm9kZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvdWRkaV9yZWdpc3RyeV9jYXRfbm9kZS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvdWRkaV9yZWdpc3RyeV9jYXRfbm9kZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZWMyODEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3VkZGlfcmVnaXN0cnlfY2F0X25vZGUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3VkZGlfcmVnaXN0cnlfbm9kZS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvdWRkaV9yZWdpc3RyeV9ub2RlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI0M2NhZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvdWRkaV9yZWdpc3RyeV9ub2RlLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy91ZGRpX3NlcnZpY2VfaW50ZXJmYWNlX25vZGUuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3VkZGlfc2VydmljZV9pbnRlcmZhY2Vfbm9kZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMzI1Y2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3VkZGlfc2VydmljZV9pbnRlcmZhY2Vfbm9kZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvdWRkaV9zZXJ2aWNlX25vZGUuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3VkZGlfc2VydmljZV9ub2RlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMwMjUyYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9pbWFnZXMvdWRkaV9zZXJ2aWNlX25vZGUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3dzZGxfc2VydmljZV9ub2RlLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy93c2RsX3NlcnZpY2Vfbm9kZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmYjg0NGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3dzZGxfc2VydmljZV9ub2RlLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL2ltYWdlcy93c2lsX25vZGUuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3dzaWxfbm9kZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNTkxNmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvaW1hZ2VzL3dzaWxfbm9kZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9zY3JpcHRzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9zY3JpcHRzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvc2NyaXB0cy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzRm9ybVN1Ym1pdC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc0Zvcm1TdWJtaXQuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTVmZTk3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzRm9ybVN1Ym1pdC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNUYWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBmdW5jdGlvbiBpc1NvbWV0aGluZ1NlbGVjdGVkKHRhYmxlQ29udGFpbmVySWQpIHsKLSAgICAgICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzOyBpPHRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciByb3dDaGVja2JveENlbGwgPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLml0ZW0oMCk7Ci0gICAgICAgICAgICB2YXIgcm93Q2hlY2tib3ggPSByb3dDaGVja2JveENlbGwuY2hpbGROb2Rlc1swXTsKLSAgICAgICAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGFsZXJ0KCI8JT1jb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PVEhJTkdfU0VMRUNURUQiKSU+Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQodGFibGVDb250YWluZXJJZCwgZm9ybSwgbG9jYXRpb24pIHsKLSAgICAgICAgaWYgKGlzU29tZXRoaW5nU2VsZWN0ZWQodGFibGVDb250YWluZXJJZCkpCi0gICAgICAgICAgICBzZXRMb2NhdGlvbkFuZFN1Ym1pdChmb3JtLCBsb2NhdGlvbik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc2V0TG9jYXRpb25BbmRTdWJtaXQoZm9ybSwgbG9jYXRpb24pIHsKLSAgICAgICAgaWYgKGhhbmRsZVN1Ym1pdChmb3JtKSkKLSAgICAgICAgewotICAgICAgICAgIGZvcm0uYWN0aW9uID0gbG9jYXRpb247Ci0gICAgICAgICAgZm9ybS5zdWJtaXQoKTsKLSAgICAgICAgfQotICAgIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNQYW5lcy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc1BhbmVzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NhNTg4ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc1BhbmVzLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9wYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdmFyIGZhdk5hdmlnYXRvckNvbnRhaW5lciA9IHBlcnNwZWN0aXZlQ29udGVudC5mcmFtZXNbIjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuTkFWSUdBVE9SX0NPTlRBSU5FUiU+Il07Ci0gIHZhciBmYXZOYXZpZ2F0b3JUb29sYmFyID0gZmF2TmF2aWdhdG9yQ29udGFpbmVyLmZyYW1lc1siPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5OQVZJR0FUT1JfVE9PTEJBUiU+Il07Ci0gIHZhciBmYXZOYXZpZ2F0b3JDb250ZW50ID0gZmF2TmF2aWdhdG9yQ29udGFpbmVyLmZyYW1lc1siPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5OQVZJR0FUT1JfQ09OVEVOVCU+Il07Ci0gIHZhciBmYXZBY3Rpb25zQ29udGFpbmVyID0gcGVyc3BlY3RpdmVDb250ZW50LmZyYW1lc1siPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5BQ1RJT05TX0NPTlRBSU5FUiU+Il07Ci0gIHZhciBmYXZQcm9wZXJ0aWVzQ29udGFpbmVyID0gZmF2QWN0aW9uc0NvbnRhaW5lci5mcmFtZXNbIjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuUFJPUEVSVElFU19DT05UQUlORVIlPiJdOwotICB2YXIgZmF2UHJvcGVydGllc1Rvb2xiYXIgPSBmYXZQcm9wZXJ0aWVzQ29udGFpbmVyLmZyYW1lc1siPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5QUk9QRVJUSUVTX1RPT0xCQVIlPiJdOwotICB2YXIgZmF2UHJvcGVydGllc0NvbnRlbnQgPSBmYXZQcm9wZXJ0aWVzQ29udGFpbmVyLmZyYW1lc1siPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5QUk9QRVJUSUVTX0NPTlRFTlQlPiJdOwotICB2YXIgZmF2U3RhdHVzQ29udGFpbmVyID0gZmF2QWN0aW9uc0NvbnRhaW5lci5mcmFtZXNbIjwlPUZhdm9yaXRlc0ZyYW1lTmFtZXMuU1RBVFVTX0NPTlRBSU5FUiU+Il07Ci0gIHZhciBmYXZTdGF0dXNUb29sYmFyID0gZmF2U3RhdHVzQ29udGFpbmVyLmZyYW1lc1siPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5TVEFUVVNfVE9PTEJBUiU+Il07Ci0gIHZhciBmYXZTdGF0dXNDb250ZW50ID0gZmF2U3RhdHVzQ29udGFpbmVyLmZyYW1lc1siPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5TVEFUVVNfQ09OVEVOVCU+Il07Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzVGFibGUuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNUYWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NmFkMmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNUYWJsZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy90YWJsZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0KLSAgICBmdW5jdGlvbiBmYXZIYW5kbGVDaGVja0FsbENsaWNrKHRhYmxlQ29udGFpbmVySWQsIGNoZWNrQWxsQ2hlY2tib3gpIHsKLSAgICAgICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzOyBpPHRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciByb3dDaGVja2JveENlbGwgPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLml0ZW0oMCk7Ci0gICAgICAgICAgICB2YXIgcm93Q2hlY2tib3ggPSByb3dDaGVja2JveENlbGwuY2hpbGROb2Rlc1swXTsKLSAgICAgICAgICAgIHJvd0NoZWNrYm94LmNoZWNrZWQgPSBjaGVja0FsbENoZWNrYm94LmNoZWNrZWQ7Ci0gICAgICAgICAgICBpZiAocm93Q2hlY2tib3guY2hlY2tlZCkgewotICAgICAgICAgICAgICAgIGhpZ2hsaWdodFJvdyh0YWJsZS5yb3dzW2ldLCJyb3djb2xvciIpOwotICAgICAgICAgICAgICAgIHJvd0NoZWNrYm94Lm5hbWUgPSAiPCU9RmF2b3JpdGVzQWN0aW9uSW5wdXRzLk1BU1NfQUNUSU9OX05PREVfSUQlPiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBoaWdobGlnaHRSb3codGFibGUucm93c1tpXSwidGFibGVjZWxscyIpOwotICAgICAgICAgICAgICAgIHJvd0NoZWNrYm94Lm5hbWUgPSAiIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHZhbGlkYXRlQ2hlY2tCb3hJbnB1dChjaGVja2JveCwgaXNDaGVja2VkKSB7Ci0gICAgICAgIGlmIChpc0NoZWNrZWQpIHsKLSAgICAgICAgICAgIGNoZWNrYm94Lm5hbWUgPSAiPCU9RmF2b3JpdGVzQWN0aW9uSW5wdXRzLk1BU1NfQUNUSU9OX05PREVfSUQlPiI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjaGVja2JveC5uYW1lID0gIiI7Ci0gICAgICAgIH0KLSAgICAgICAgaGFuZGxlUm93Q2hlY2tib3hDbGljaygpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHR3aXN0SW5pdCh0YWJsZUNvbnRhaW5lcklkLHR3aXN0SW1hZ2VOYW1lKSB7Ci0gICAgICAgIHZhciB0YWJsZUNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhYmxlQ29udGFpbmVySWQpOwotICAgICAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICAgICAgaWYgKHRhYmxlLnJvd3MubGVuZ3RoID4gbnVtYmVyT2ZIZWFkZXJSb3dzKSB7Ci0gICAgICAgICAgICB0YWJsZUNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgICAgICAgICAgdHdpc3QodGFibGVDb250YWluZXJJZCwgdHdpc3RJbWFnZU5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGFibGVDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgICAgICAgICAgdHdpc3QodGFibGVDb250YWluZXJJZCwgdHdpc3RJbWFnZU5hbWUpOwotICAgICAgICB9Ci0gICAgfQotCi08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzZnJhbWVzZXRzLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzZnJhbWVzZXRzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZiZTA5MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc2ZyYW1lc2V0cy5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIGdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldCgpCi0gIHsKLSAgICByZXR1cm4gcGVyc3BlY3RpdmVDb250ZW50LmZyYW1lc1siPCU9RmF2b3JpdGVzRnJhbWVOYW1lcy5BQ1RJT05TX0NPTlRBSU5FUiU+Il0uZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZyYW1lc2V0IikuaXRlbSgwKTsKLSAgfQotCi0gIGZ1bmN0aW9uIHByb2Nlc3NGcmFtZXNldFNpemVzKGZyYW1lc2V0U2l6ZXNGb3JtKQotICB7Ci0gICAgdG9nZ2xlRG91YmxlQ2xpY2tDb2x1bW5UaXRsZSgpOwotICAgIHZhciBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldCA9IGdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0KCk7Ci0gICAgdmFyIGFjdGlvbnNDb250YWluZXJGcmFtZXNldCA9IGdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldCgpOwotICAgIGZyYW1lc2V0U2l6ZXNGb3JtLjwlPUZhdm9yaXRlc0FjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQlPi52YWx1ZSA9IHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0LmNvbHM7Ci0gICAgZnJhbWVzZXRTaXplc0Zvcm0uPCU9RmF2b3JpdGVzQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIlPi52YWx1ZSA9IGFjdGlvbnNDb250YWluZXJGcmFtZXNldC5yb3dzOwotICAgIGZyYW1lc2V0U2l6ZXNGb3JtLnN1Ym1pdCgpOwotICB9Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy92aWV3cy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvdmlld3MvTGlzdEZhdm9yaXRlVURESUJ1c2luZXNzVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVVRERJQnVzaW5lc3NWaWV3LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdjYWRjNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVVRERJQnVzaW5lc3NWaWV3LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0iamF2YS51dGlsLkVudW1lcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLlZlY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlF1aWNrU29ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICBTdHJpbmcgZGl2RmF2b3JpdGVVRERJQnVzaW5lc3NUYWJsZSA9ICJkaXZGYXZvcml0ZVVERElCdXNpbmVzc1RhYmxlIjsKLSAgICBTdHJpbmcgeGRpdkZhdm9yaXRlVURESUJ1c2luZXNzVGFibGUgPSAieGRpdkZhdm9yaXRlVURESUJ1c2luZXNzVGFibGUiOwotCi0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2b3JpdGVzUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICA8dGl0bGU+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiVklFV19USVRMRV9VRERJX0JVU0lORVNTX0xJU1QiKSU+PC90aXRsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc0Zvcm1TdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzVGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci08JQotICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gIndzaWwvaW1hZ2VzL2xpc3RfYnVzaW5lc3NfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgIFN0cmluZyB0aXRsZSA9IGZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MSVNUX0ZBVk9SSVRFX1VERElfQlVTSU5FU1MiKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gIDx0YWJsZT4KLSAgICA8dHI+Ci0gICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgIDwlPWZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTElTVF9GQVZPUklURV9VRERJX0JVU0lORVNTX0RFU0MiKSU+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0gICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzVURESUJ1c2luZXNzRm9sZGVyRWxlbWVudCkgewotICAgICU+Ci0gICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1GYXZvcml0ZXNBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04lPiIgdmFsdWU9IjEiPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPWRpdkZhdm9yaXRlVURESUJ1c2luZXNzVGFibGUlPicsJzwlPXhkaXZGYXZvcml0ZVVERElCdXNpbmVzc1RhYmxlJT4nKSI+PGltZyBuYW1lPSI8JT14ZGl2RmF2b3JpdGVVRERJQnVzaW5lc3NUYWJsZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0ZBVk9SSVRFX1VERElfQlVTSU5FU1MiKSU+PC9zdHJvbmc+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8ZGl2IGlkPSI8JT1kaXZGYXZvcml0ZVVERElCdXNpbmVzc1RhYmxlJT4iPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImZhdkhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPWRpdkZhdm9yaXRlVURESUJ1c2luZXNzVGFibGUlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FIiklPjwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICBFbnVtZXJhdGlvbiBlID0gKChGYXZvcml0ZXNVRERJQnVzaW5lc3NGb2xkZXJFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0QWxsRmF2b3JpdGVzKCk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yIHNvcnRlZFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgICAgIAlzb3J0ZWRWZWN0b3IuYWRkKGUubmV4dEVsZW1lbnQoKSk7Ci0gICAgICAgICAgICAgCSAgfQotICAgICAgICAgICAgICAgIFF1aWNrU29ydC5zb3J0KHNvcnRlZFZlY3Rvcik7Ci0gICAgICAgICAgICAgICAgZSA9IHNvcnRlZFZlY3Rvci5lbGVtZW50cygpOwotICAgICAgICAgICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEZhdm9yaXRlc1VERElCdXNpbmVzc0VsZW1lbnQgZmF2VURESUJ1c2luZXNzRWxlbWVudCA9IChGYXZvcml0ZXNVRERJQnVzaW5lc3NFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giICBuYW1lPSI8JT1GYXZvcml0ZXNBY3Rpb25JbnB1dHMuTUFTU19BQ1RJT05fTk9ERV9JRCU+IiB2YWx1ZT0iPCU9c2VsZWN0ZWROb2RlLmdldENoaWxkTm9kZShmYXZVRERJQnVzaW5lc3NFbGVtZW50KS5nZXROb2RlSWQoKSU+IiBvbkNsaWNrPSJ2YWxpZGF0ZUNoZWNrQm94SW5wdXQodGhpcywgdGhpcy5jaGVja2VkKSIgIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfUk9XX0NIRUNLX0JPWCIpJT4iPjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiIG5vd3JhcD48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2VsZWN0RmF2b3JpdGVzTm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXRDaGlsZE5vZGUoZmF2VURESUJ1c2luZXNzRWxlbWVudCkuZ2V0Tm9kZUlkKCksIGZhbHNlKSkpJT4iIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij48JT1mYXZVRERJQnVzaW5lc3NFbGVtZW50LmdldE5hbWUoKSU+PC9hPjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgJT4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgdHdpc3RJbml0KCc8JT1kaXZGYXZvcml0ZVVERElCdXNpbmVzc1RhYmxlJT4nLCc8JT14ZGl2RmF2b3JpdGVVRERJQnVzaW5lc3NUYWJsZSU+Jyk7Ci0gICAgICAgIDwvc2NyaXB0PgotCi0gICAgICAgIDx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0yIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JTVBPUlRfVE9fVURESV9QRVJTUEVDVElWRSIpJT4iIG9uQ2xpY2s9InNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdCgnPCU9ZGl2RmF2b3JpdGVVRERJQnVzaW5lc3NUYWJsZSU+JywgdGhpcy5mb3JtLCAnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KEFkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+JykiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9SRU1PVkUiKSU+IiBvbkNsaWNrPSJzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQoJzwlPWRpdkZhdm9yaXRlVURESUJ1c2luZXNzVGFibGUlPicsIHRoaXMuZm9ybSwgJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChSZW1vdmVGYXZvcml0ZXNBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgPCUKLSAgICB9Ci0lPgotICAgIDwvZm9ybT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvdmlld3MvTGlzdEZhdm9yaXRlVURESVJlZ2lzdHJ5Vmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVVRERJUmVnaXN0cnlWaWV3LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk3ZWM2OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVVRERJUmVnaXN0cnlWaWV3LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0iamF2YS51dGlsLkVudW1lcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLlZlY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlF1aWNrU29ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICBTdHJpbmcgZGl2RmF2b3JpdGVVRERJUmVnaXN0cnlUYWJsZSA9ICJkaXZGYXZvcml0ZVVERElSZWdpc3RyeVRhYmxlIjsKLSAgICBTdHJpbmcgeGRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUgPSAieGRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUiOwotCi0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2b3JpdGVzUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICA8dGl0bGU+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiVklFV19USVRMRV9VRERJX1JFR0lTVFJZX0xJU1QiKSU+PC90aXRsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc0Zvcm1TdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzVGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPCUKLSAgICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAiZmF2b3JpdGVzL2ltYWdlcy9saXN0X3JlZ2lzdHJ5X2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0xJU1RfRkFWT1JJVEVfVURESV9SRUdJU1RSWSIpOwotICAgICU+Ci0gICAgPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPHRhYmxlPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9MSVNUX0ZBVk9SSVRFX1VERElfUkVHSVNUUllfREVTQyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4gICAgCi0gICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudCkgewotICAgICU+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPUZhdm9yaXRlc0FjdGlvbklucHV0cy5NVUxUSVBMRV9MSU5LX0FDVElPTiU+IiB2YWx1ZT0iMSI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9ZGl2RmF2b3JpdGVVRERJUmVnaXN0cnlUYWJsZSU+JywnPCU9eGRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUlPicpIj48aW1nIG5hbWU9IjwlPXhkaXZGYXZvcml0ZVVERElSZWdpc3RyeVRhYmxlJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RjbG9zZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfQ0xPU0VEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPjwlPWZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRkFWT1JJVEVfVURESV9SRUdJU1RSWSIpJT48L3N0cm9uZz4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDxkaXYgaWQ9IjwlPWRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUlPiI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iZmF2SGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9ZGl2RmF2b3JpdGVVRERJUmVnaXN0cnlUYWJsZSU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8JQotICAgICAgICAgICAgICAgIEVudW1lcmF0aW9uIGUgPSAoKEZhdm9yaXRlc1VERElSZWdpc3RyeUZvbGRlckVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50KS5nZXRBbGxGYXZvcml0ZXMoKTsKLSAgICAgICAgICAgICAgICBWZWN0b3Igc29ydGVkVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICAgICAgCXNvcnRlZFZlY3Rvci5hZGQoZS5uZXh0RWxlbWVudCgpKTsKLSAgICAgICAgICAgICAJICB9Ci0gICAgICAgICAgICAgICAgUXVpY2tTb3J0LnNvcnQoc29ydGVkVmVjdG9yKTsKLSAgICAgICAgICAgICAgICBlID0gc29ydGVkVmVjdG9yLmVsZW1lbnRzKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgRmF2b3JpdGVzVURESVJlZ2lzdHJ5RWxlbWVudCBmYXZVRERJUmVnaXN0cnlFbGVtZW50ID0gKEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgIG5hbWU9IjwlPUZhdm9yaXRlc0FjdGlvbklucHV0cy5NQVNTX0FDVElPTl9OT0RFX0lEJT4iIHZhbHVlPSI8JT1zZWxlY3RlZE5vZGUuZ2V0Q2hpbGROb2RlKGZhdlVERElSZWdpc3RyeUVsZW1lbnQpLmdldE5vZGVJZCgpJT4iIG9uQ2xpY2s9InZhbGlkYXRlQ2hlY2tCb3hJbnB1dCh0aGlzLCB0aGlzLmNoZWNrZWQpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1JPV19DSEVDS19CT1giKSU+Ij48L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIiBub3dyYXA+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNlbGVjdEZhdm9yaXRlc05vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Q2hpbGROb2RlKGZhdlVERElSZWdpc3RyeUVsZW1lbnQpLmdldE5vZGVJZCgpLCBmYWxzZSkpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PCU9ZmF2VURESVJlZ2lzdHJ5RWxlbWVudC5nZXROYW1lKCklPjwvYT48L3RkPgotICAgICAgICAgICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICU+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIHR3aXN0SW5pdCgnPCU9ZGl2RmF2b3JpdGVVRERJUmVnaXN0cnlUYWJsZSU+JywnPCU9eGRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUlPicpOwotICAgICAgICA8L3NjcmlwdD4KLQotICAgICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIG5vd3JhcD4KLSAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPWZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfSU1QT1JUX1RPX1VERElfUEVSU1BFQ1RJVkUiKSU+IiBvbkNsaWNrPSJzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQoJzwlPWRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUlPicsIHRoaXMuZm9ybSwgJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5nZXRCYXNlQWN0aW9uTGluaygpKSklPicpIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIG5vd3JhcD4KLSAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPWZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUkVNT1ZFIiklPiIgb25DbGljaz0ic2V0Rm9ybUxvY2F0aW9uQW5kU3VibWl0KCc8JT1kaXZGYXZvcml0ZVVERElSZWdpc3RyeVRhYmxlJT4nLCB0aGlzLmZvcm0sICc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+JykiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgIDwlCi0gICAgfQotJT4KLSAgICA8L2Zvcm0+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVVERElTZXJ2aWNlSW50ZXJmYWNlVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVVRERJU2VydmljZUludGVyZmFjZVZpZXcuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzNlYzE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVVERElTZXJ2aWNlSW50ZXJmYWNlVmlldy5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9ImphdmEudXRpbC5FbnVtZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC5WZWN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5RdWlja1NvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICAgU3RyaW5nIGRpdkZhdm9yaXRlVURESVNlcnZpY2VJbnRUYWJsZSA9ICJkaXZGYXZvcml0ZVVERElTZXJ2aWNlSW50VGFibGUiOwotICAgIFN0cmluZyB4ZGl2RmF2b3JpdGVVRERJU2VydmljZUludFRhYmxlID0gInhkaXZGYXZvcml0ZVVERElTZXJ2aWNlSW50VGFibGUiOwotCi0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2b3JpdGVzUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICA8dGl0bGU+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiVklFV19USVRMRV9VRERJX1NFUlZJQ0VfSU5URVJGQUNFX0xJU1QiKSU+PC90aXRsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc0Zvcm1TdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzVGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPCUKLSAgICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAiZmF2b3JpdGVzL2ltYWdlcy9saXN0X3NlcnZpY2VfaW50ZXJmYWNlX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0xJU1RfRkFWT1JJVEVfVURESV9TRVJWSUNFX0lOVEVSRkFDRSIpOwotICAgICU+Ci0gICAgPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPHRhYmxlPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9MSVNUX0ZBVk9SSVRFX1VERElfU0VSVklDRV9JTlRFUkZBQ0VfREVTQyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4gICAgCi0gICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VGb2xkZXJFbGVtZW50KSB7Ci0gICAgJT4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9RmF2b3JpdGVzQWN0aW9uSW5wdXRzLk1VTFRJUExFX0xJTktfQUNUSU9OJT4iIHZhbHVlPSIxIj4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT1kaXZGYXZvcml0ZVVERElTZXJ2aWNlSW50VGFibGUlPicsJzwlPXhkaXZGYXZvcml0ZVVERElTZXJ2aWNlSW50VGFibGUlPicpIj48aW1nIG5hbWU9IjwlPXhkaXZGYXZvcml0ZVVERElTZXJ2aWNlSW50VGFibGUlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9GQVZPUklURV9VRERJX1NFUlZJQ0VfSU5URVJGQUNFIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGRpdiBpZD0iPCU9ZGl2RmF2b3JpdGVVRERJU2VydmljZUludFRhYmxlJT4iPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImZhdkhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPWRpdkZhdm9yaXRlVURESVNlcnZpY2VJbnRUYWJsZSU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8JQotICAgICAgICAgICAgICAgIEVudW1lcmF0aW9uIGUgPSAoKEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlRm9sZGVyRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpLmdldEFsbEZhdm9yaXRlcygpOwotICAgICAgICAgICAgICAgIFZlY3RvciBzb3J0ZWRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAJc29ydGVkVmVjdG9yLmFkZChlLm5leHRFbGVtZW50KCkpOwotICAgICAgICAgICAgIAkgIH0KLSAgICAgICAgICAgICAgICBRdWlja1NvcnQuc29ydChzb3J0ZWRWZWN0b3IpOwotICAgICAgICAgICAgICAgIGUgPSBzb3J0ZWRWZWN0b3IuZWxlbWVudHMoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgICAgICAgICBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZUVsZW1lbnQgZmF2VURESVNlckludEVsZW1lbnQgPSAoRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giICBuYW1lPSI8JT1GYXZvcml0ZXNBY3Rpb25JbnB1dHMuTUFTU19BQ1RJT05fTk9ERV9JRCU+IiB2YWx1ZT0iPCU9c2VsZWN0ZWROb2RlLmdldENoaWxkTm9kZShmYXZVRERJU2VySW50RWxlbWVudCkuZ2V0Tm9kZUlkKCklPiIgb25DbGljaz0idmFsaWRhdGVDaGVja0JveElucHV0KHRoaXMsIHRoaXMuY2hlY2tlZCkiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfUk9XX0NIRUNLX0JPWCIpJT4iPjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiIG5vd3JhcD48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2VsZWN0RmF2b3JpdGVzTm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXRDaGlsZE5vZGUoZmF2VURESVNlckludEVsZW1lbnQpLmdldE5vZGVJZCgpLCBmYWxzZSkpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PCU9ZmF2VURESVNlckludEVsZW1lbnQuZ2V0TmFtZSgpJT48L2E+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAlPgotICAgICAgICA8L3RhYmxlPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgICAgICB0d2lzdEluaXQoJzwlPWRpdkZhdm9yaXRlVURESVNlcnZpY2VJbnRUYWJsZSU+JywnPCU9eGRpdkZhdm9yaXRlVURESVNlcnZpY2VJbnRUYWJsZSU+Jyk7Ci0gICAgICAgIDwvc2NyaXB0PgotCi0gICAgICAgIDx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0yIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JTVBPUlRfVE9fVURESV9QRVJTUEVDVElWRSIpJT4iIG9uQ2xpY2s9InNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdCgnPCU9ZGl2RmF2b3JpdGVVRERJU2VydmljZUludFRhYmxlJT4nLCB0aGlzLmZvcm0sICc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBub3dyYXA+Ci0gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1JFTU9WRSIpJT4iIG9uQ2xpY2s9InNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdCgnPCU9ZGl2RmF2b3JpdGVVRERJU2VydmljZUludFRhYmxlJT4nLCB0aGlzLmZvcm0sICc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+JykiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgIDwlCi0gICAgfQotJT4KLSAgICA8L2Zvcm0+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVVERElTZXJ2aWNlVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVVRERJU2VydmljZVZpZXcuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDA1NzVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVVERElTZXJ2aWNlVmlldy5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9ImphdmEudXRpbC5FbnVtZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC5WZWN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5RdWlja1NvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLkZhdm9yaXRlc1BlcnNwZWN0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICAgU3RyaW5nIGRpdkZhdm9yaXRlVURESVNlcnZpY2VUYWJsZSA9ICJkaXZGYXZvcml0ZVVERElTZXJ2aWNlVGFibGUiOwotICAgIFN0cmluZyB4ZGl2RmF2b3JpdGVVRERJU2VydmljZVRhYmxlID0gInhkaXZGYXZvcml0ZVVERElTZXJ2aWNlVGFibGUiOwotCi0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2b3JpdGVzUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICA8dGl0bGU+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiVklFV19USVRMRV9VRERJX1NFUlZJQ0VfTElTVCIpJT48L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzRm9ybVN1Ym1pdC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNUYWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8JQotICAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJ3c2lsL2ltYWdlcy9saXN0X1VERElfc2VydmljZV9oaWdobGlnaHRlZC5naWYiOwotICAgIFN0cmluZyB0aXRsZSA9IGZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MSVNUX0ZBVk9SSVRFX1VERElfU0VSVklDRSIpOwotICAgICU+Ci0gICAgPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPHRhYmxlPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9MSVNUX0ZBVk9SSVRFX1VERElfU0VSVklDRV9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPiAgICAKLSAgICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChSZW1vdmVGYXZvcml0ZXNBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7Ij4KLSAgICA8JQotICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBGYXZvcml0ZXNVRERJU2VydmljZUZvbGRlckVsZW1lbnQpIHsKLSAgICAlPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1GYXZvcml0ZXNBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04lPiIgdmFsdWU9IjEiPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPWRpdkZhdm9yaXRlVURESVNlcnZpY2VUYWJsZSU+JywnPCU9eGRpdkZhdm9yaXRlVURESVNlcnZpY2VUYWJsZSU+JykiPjxpbWcgbmFtZT0iPCU9eGRpdkZhdm9yaXRlVURESVNlcnZpY2VUYWJsZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0ZBVk9SSVRFX1VERElfU0VSVklDRSIpJT48L3N0cm9uZz4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDxkaXYgaWQ9IjwlPWRpdkZhdm9yaXRlVURESVNlcnZpY2VUYWJsZSU+Ij4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJmYXZIYW5kbGVDaGVja0FsbENsaWNrKCc8JT1kaXZGYXZvcml0ZVVERElTZXJ2aWNlVGFibGUlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FIiklPjwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICBFbnVtZXJhdGlvbiBlID0gKChGYXZvcml0ZXNVRERJU2VydmljZUZvbGRlckVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50KS5nZXRBbGxGYXZvcml0ZXMoKTsKLSAgICAgICAgICAgICAgICBWZWN0b3Igc29ydGVkVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICAgICAgCXNvcnRlZFZlY3Rvci5hZGQoZS5uZXh0RWxlbWVudCgpKTsKLSAgICAgICAgICAgICAJICB9Ci0gICAgICAgICAgICAgICAgUXVpY2tTb3J0LnNvcnQoc29ydGVkVmVjdG9yKTsKLSAgICAgICAgICAgICAgICBlID0gc29ydGVkVmVjdG9yLmVsZW1lbnRzKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgRmF2b3JpdGVzVURESVNlcnZpY2VFbGVtZW50IGZhdlVERElTZXJ2aWNlRWxlbWVudCA9IChGYXZvcml0ZXNVRERJU2VydmljZUVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgIG5hbWU9IjwlPUZhdm9yaXRlc0FjdGlvbklucHV0cy5NQVNTX0FDVElPTl9OT0RFX0lEJT4iIHZhbHVlPSI8JT1zZWxlY3RlZE5vZGUuZ2V0Q2hpbGROb2RlKGZhdlVERElTZXJ2aWNlRWxlbWVudCkuZ2V0Tm9kZUlkKCklPiIgb25DbGljaz0idmFsaWRhdGVDaGVja0JveElucHV0KHRoaXMsIHRoaXMuY2hlY2tlZCkiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfUk9XX0NIRUNLX0JPWCIpJT4iPjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiIG5vd3JhcD48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2VsZWN0RmF2b3JpdGVzTm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXRDaGlsZE5vZGUoZmF2VURESVNlcnZpY2VFbGVtZW50KS5nZXROb2RlSWQoKSwgZmFsc2UpKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjwlPWZhdlVERElTZXJ2aWNlRWxlbWVudC5nZXROYW1lKCklPjwvYT48L3RkPgotICAgICAgICAgICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICU+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIHR3aXN0SW5pdCgnPCU9ZGl2RmF2b3JpdGVVRERJU2VydmljZVRhYmxlJT4nLCc8JT14ZGl2RmF2b3JpdGVVRERJU2VydmljZVRhYmxlJT4nKTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0KLSAgICAgICAgPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTIgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBub3dyYXA+Ci0gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lNUE9SVF9UT19VRERJX1BFUlNQRUNUSVZFIiklPiIgb25DbGljaz0ic2V0Rm9ybUxvY2F0aW9uQW5kU3VibWl0KCc8JT1kaXZGYXZvcml0ZVVERElTZXJ2aWNlVGFibGUlPicsIHRoaXMuZm9ybSwgJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5nZXRCYXNlQWN0aW9uTGluaygpKSklPicpIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIG5vd3JhcD4KLSAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPWZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUkVNT1ZFIiklPiIgb25DbGljaz0ic2V0Rm9ybUxvY2F0aW9uQW5kU3VibWl0KCc8JT1kaXZGYXZvcml0ZVVERElTZXJ2aWNlVGFibGUlPicsIHRoaXMuZm9ybSwgJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChSZW1vdmVGYXZvcml0ZXNBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgPCUKLSAgICB9Ci0lPgotICAgIDwvZm9ybT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvdmlld3MvTGlzdEZhdm9yaXRlVXNlckRlZlVERElSZWdpc3RyeVZpZXcuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvdmlld3MvTGlzdEZhdm9yaXRlVXNlckRlZlVERElSZWdpc3RyeVZpZXcuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmQ4ZDgwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVVzZXJEZWZVRERJUmVnaXN0cnlWaWV3LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0iamF2YS51dGlsLkVudW1lcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLlZlY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlF1aWNrU29ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICBTdHJpbmcgZGl2RmF2b3JpdGVVRERJUmVnaXN0cnlUYWJsZSA9ICJkaXZGYXZvcml0ZVVERElSZWdpc3RyeVRhYmxlIjsKLSAgICBTdHJpbmcgeGRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUgPSAieGRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUiOwotCi0gICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2b3JpdGVzUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSBmYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICA8dGl0bGU+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiVklFV19USVRMRV9VU0VSX0RFRl9VRERJX1JFR0lTVFJZX0xJU1QiKSU+PC90aXRsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc0Zvcm1TdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzVGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPCUKLSAgICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAiZmF2b3JpdGVzL2ltYWdlcy9saXN0X3JlZ2lzdHJ5X2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0xJU1RfRkFWT1JJVEVfVVNFUl9ERUZfVURESV9SRUdJU1RSWSIpOwotICAgICU+Ci0gICAgPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPHRhYmxlPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9MSVNUX0ZBVk9SSVRFX1VTRVJfREVGX1VERElfUkVHSVNUUllfREVTQyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4gICAgCi0gICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzVXNlckRlZlVERElSZWdpc3RyeUZvbGRlckVsZW1lbnQpIHsKLSAgICAlPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1GYXZvcml0ZXNBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04lPiIgdmFsdWU9IjEiPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPWRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUlPicsJzwlPXhkaXZGYXZvcml0ZVVERElSZWdpc3RyeVRhYmxlJT4nKSI+PGltZyBuYW1lPSI8JT14ZGl2RmF2b3JpdGVVRERJUmVnaXN0cnlUYWJsZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0ZBVk9SSVRFX1VTRVJfREVGX1VERElfUkVHSVNUUlkiKSU+PC9zdHJvbmc+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8ZGl2IGlkPSI8JT1kaXZGYXZvcml0ZVVERElSZWdpc3RyeVRhYmxlJT4iPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImZhdkhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPWRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FIiklPjwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICBFbnVtZXJhdGlvbiBlID0gKChGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5Rm9sZGVyRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpLmdldEFsbEZhdm9yaXRlcygpOwotICAgICAgICAgICAgICAgIFZlY3RvciBzb3J0ZWRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAJc29ydGVkVmVjdG9yLmFkZChlLm5leHRFbGVtZW50KCkpOwotICAgICAgICAgICAgIAkgIH0KLSAgICAgICAgICAgICAgICBRdWlja1NvcnQuc29ydChzb3J0ZWRWZWN0b3IpOwotICAgICAgICAgICAgICAgIGUgPSBzb3J0ZWRWZWN0b3IuZWxlbWVudHMoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgICAgICAgICBGYXZvcml0ZXNVc2VyRGVmVURESVJlZ2lzdHJ5RWxlbWVudCBmYXZVRERJUmVnaXN0cnlFbGVtZW50ID0gKEZhdm9yaXRlc1VzZXJEZWZVRERJUmVnaXN0cnlFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giICBuYW1lPSI8JT1GYXZvcml0ZXNBY3Rpb25JbnB1dHMuTUFTU19BQ1RJT05fTk9ERV9JRCU+IiB2YWx1ZT0iPCU9c2VsZWN0ZWROb2RlLmdldENoaWxkTm9kZShmYXZVRERJUmVnaXN0cnlFbGVtZW50KS5nZXROb2RlSWQoKSU+IiBvbkNsaWNrPSJ2YWxpZGF0ZUNoZWNrQm94SW5wdXQodGhpcywgdGhpcy5jaGVja2VkKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9ST1dfQ0hFQ0tfQk9YIiklPiI+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyIgbm93cmFwPjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChTZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldENoaWxkTm9kZShmYXZVRERJUmVnaXN0cnlFbGVtZW50KS5nZXROb2RlSWQoKSwgZmFsc2UpKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjwlPWZhdlVERElSZWdpc3RyeUVsZW1lbnQuZ2V0TmFtZSgpJT48L2E+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAlPgotICAgICAgICA8L3RhYmxlPgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgICAgICB0d2lzdEluaXQoJzwlPWRpdkZhdm9yaXRlVURESVJlZ2lzdHJ5VGFibGUlPicsJzwlPXhkaXZGYXZvcml0ZVVERElSZWdpc3RyeVRhYmxlJT4nKTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0KLSAgICAgICAgPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTIgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBub3dyYXA+Ci0gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lNUE9SVF9UT19VRERJX1BFUlNQRUNUSVZFIiklPiIgb25DbGljaz0ic2V0Rm9ybUxvY2F0aW9uQW5kU3VibWl0KCc8JT1kaXZGYXZvcml0ZVVERElSZWdpc3RyeVRhYmxlJT4nLCB0aGlzLmZvcm0sICc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgPCUKLSAgICB9Ci0lPgotICAgIDwvZm9ybT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvdmlld3MvTGlzdEZhdm9yaXRlV1NETFNlcnZpY2VWaWV3LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVdTRExTZXJ2aWNlVmlldy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NmNjMWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mYXZvcml0ZXMvdmlld3MvTGlzdEZhdm9yaXRlV1NETFNlcnZpY2VWaWV3LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0iamF2YS51dGlsLkVudW1lcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLlZlY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlF1aWNrU29ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS5GYXZvcml0ZXNQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICBTdHJpbmcgZGl2RmF2b3JpdGVXU0RMVGFibGUgPSAiZGl2RmF2b3JpdGVXU0RMVGFibGUiOwotICAgIFN0cmluZyB4ZGl2RmF2b3JpdGVXU0RMVGFibGUgPSAieGRpdkZhdm9yaXRlV1NETFRhYmxlIjsKLQotICAgIEZhdm9yaXRlc1BlcnNwZWN0aXZlIGZhdm9yaXRlc1BlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRGYXZvcml0ZXNQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIFRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPWZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIlZJRVdfVElUTEVfV1NETF9TRVJWSUNFX0xJU1QiKSU+PC90aXRsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL2Zhdm9yaXRlcy9zY3JpcHRzL2Zhdm9yaXRlc0Zvcm1TdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzVGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPCUKLSAgICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAid3NpbC9pbWFnZXMvbGlzdF9XU0RMX3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgICBTdHJpbmcgdGl0bGUgPSBmYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTElTVF9GQVZPUklURV9XU0RMX1NFUlZJQ0UiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDx0YWJsZT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDwlPWZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTElTVF9GQVZPUklURV9XU0RMX1NFUlZJQ0VfREVTQyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4gICAgCi0gICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgRmF2b3JpdGVzV1NETFNlcnZpY2VGb2xkZXJFbGVtZW50KSB7Ci0gICAgJT4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9RmF2b3JpdGVzQWN0aW9uSW5wdXRzLk1VTFRJUExFX0xJTktfQUNUSU9OJT4iIHZhbHVlPSIxIj4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT1kaXZGYXZvcml0ZVdTRExUYWJsZSU+JywnPCU9eGRpdkZhdm9yaXRlV1NETFRhYmxlJT4nKSI+PGltZyBuYW1lPSI8JT14ZGl2RmF2b3JpdGVXU0RMVGFibGUlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9GQVZPUklURV9XU0RMIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGRpdiBpZD0iPCU9ZGl2RmF2b3JpdGVXU0RMVGFibGUlPiI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iZmF2SGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9ZGl2RmF2b3JpdGVXU0RMVGFibGUlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VUkwiKSU+PC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8JQotICAgICAgICAgICAgICAgIEVudW1lcmF0aW9uIGUgPSAoKEZhdm9yaXRlc1dTRExTZXJ2aWNlRm9sZGVyRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpLmdldEFsbEZhdm9yaXRlcygpOwotICAgICAgICAgICAgICAgIFZlY3RvciBzb3J0ZWRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAJc29ydGVkVmVjdG9yLmFkZChlLm5leHRFbGVtZW50KCkpOwotICAgICAgICAgICAgIAkgIH0KLSAgICAgICAgICAgICAgICBRdWlja1NvcnQuc29ydChzb3J0ZWRWZWN0b3IpOwotICAgICAgICAgICAgICAgIGUgPSBzb3J0ZWRWZWN0b3IuZWxlbWVudHMoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgICAgICAgICBGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQgZmF2V1NETFNlcnZpY2VFbGVtZW50ID0gKEZhdm9yaXRlc1dTRExTZXJ2aWNlRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiAgbmFtZT0iPCU9RmF2b3JpdGVzQWN0aW9uSW5wdXRzLk1BU1NfQUNUSU9OX05PREVfSUQlPiIgdmFsdWU9IjwlPXNlbGVjdGVkTm9kZS5nZXRDaGlsZE5vZGUoZmF2V1NETFNlcnZpY2VFbGVtZW50KS5nZXROb2RlSWQoKSU+IiBvbkNsaWNrPSJ2YWxpZGF0ZUNoZWNrQm94SW5wdXQodGhpcywgdGhpcy5jaGVja2VkKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9ST1dfQ0hFQ0tfQk9YIiklPiI+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyIgbm93cmFwPjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChTZWxlY3RGYXZvcml0ZXNOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldENoaWxkTm9kZShmYXZXU0RMU2VydmljZUVsZW1lbnQpLmdldE5vZGVJZCgpLCBmYWxzZSkpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PCU9ZmF2V1NETFNlcnZpY2VFbGVtZW50LmdldFdzZGxVcmwoKSU+PC9hPjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgJT4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgdHdpc3RJbml0KCc8JT1kaXZGYXZvcml0ZVdTRExUYWJsZSU+JywnPCU9eGRpdkZhdm9yaXRlV1NETFRhYmxlJT4nKTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0KLSAgICAgICAgPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTIgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBub3dyYXA+Ci0gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lNUE9SVF9UT19XU0RMX1BFUlNQRUNUSVZFIiklPiIgb25DbGljaz0ic2V0Rm9ybUxvY2F0aW9uQW5kU3VibWl0KCc8JT1kaXZGYXZvcml0ZVdTRExUYWJsZSU+JywgdGhpcy5mb3JtLCAnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KEZhdm9yaXRlc0FkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+JykiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9SRU1PVkUiKSU+IiBvbkNsaWNrPSJzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQoJzwlPWRpdkZhdm9yaXRlV1NETFRhYmxlJT4nLCB0aGlzLmZvcm0sICc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+JykiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgIDwlCi0gICAgfQotJT4KLSAgICA8L2Zvcm0+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVdTSUxWaWV3LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZmF2b3JpdGVzL3ZpZXdzL0xpc3RGYXZvcml0ZVdTSUxWaWV3LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExN2JlNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zhdm9yaXRlcy92aWV3cy9MaXN0RmF2b3JpdGVXU0lMVmlldy5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9ImphdmEudXRpbC5FbnVtZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC5WZWN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5RdWlja1NvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMucGVyc3BlY3RpdmUuRmF2b3JpdGVzUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLmRhdGFtb2RlbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICAgU3RyaW5nIGRpdkZhdm9yaXRlV1NJTFRhYmxlID0gImRpdkZhdm9yaXRlV1NJTFRhYmxlIjsKLSAgICBTdHJpbmcgeGRpdkZhdm9yaXRlV1NJTFRhYmxlID0gInhkaXZGYXZvcml0ZVdTSUxUYWJsZSI7Ci0KLSAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZvcml0ZXNQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgIDx0aXRsZT48JT1mYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJWSUVXX1RJVExFX1dTSUxfTElTVCIpJT48L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZmF2b3JpdGVzL3NjcmlwdHMvZmF2b3JpdGVzRm9ybVN1Ym1pdC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii9mYXZvcml0ZXMvc2NyaXB0cy9mYXZvcml0ZXNUYWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8JQotICAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJmYXZvcml0ZXMvaW1hZ2VzL2xpc3RfV1NJTF9oaWdobGlnaHRlZC5naWYiOwotICAgIFN0cmluZyB0aXRsZSA9IGZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MSVNUX0ZBVk9SSVRFX1dTSUwiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDx0YWJsZT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDwlPWZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTElTVF9GQVZPUklURV9XU0lMX0RFU0MiKSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+ICAgIAotICAgIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFJlbW92ZUZhdm9yaXRlc0FjdGlvbi5nZXRCYXNlQWN0aW9uTGluaygpKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPgotICAgIDwlCi0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEZhdm9yaXRlc1dTSUxGb2xkZXJFbGVtZW50KSB7Ci0gICAgJT4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9RmF2b3JpdGVzQWN0aW9uSW5wdXRzLk1VTFRJUExFX0xJTktfQUNUSU9OJT4iIHZhbHVlPSIxIj4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT1kaXZGYXZvcml0ZVdTSUxUYWJsZSU+JywnPCU9eGRpdkZhdm9yaXRlV1NJTFRhYmxlJT4nKSI+PGltZyBuYW1lPSI8JT14ZGl2RmF2b3JpdGVXU0lMVGFibGUlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9GQVZPUklURV9XU0lMIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGRpdiBpZD0iPCU9ZGl2RmF2b3JpdGVXU0lMVGFibGUlPiI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iZmF2SGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9ZGl2RmF2b3JpdGVXU0lMVGFibGUlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VUkwiKSU+PC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8JQotICAgICAgICAgICAgRmF2b3JpdGVzV1NJTEZvbGRlckVsZW1lbnQgZmF2V1NJTEZvbGRlckVsZW1lbnQgPSAoRmF2b3JpdGVzV1NJTEZvbGRlckVsZW1lbnQpc2VsZWN0ZWRFbGVtZW50OwotICAgICAgICAgICAgRW51bWVyYXRpb24gZSA9IGZhdldTSUxGb2xkZXJFbGVtZW50LmdldEFsbEZhdm9yaXRlcygpOwotICAgICAgICAgICAgVmVjdG9yIHNvcnRlZFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICAgICAgc29ydGVkVmVjdG9yLmFkZChlLm5leHRFbGVtZW50KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUXVpY2tTb3J0LnNvcnQoc29ydGVkVmVjdG9yKTsKLSAgICAgICAgICAgIGUgPSBzb3J0ZWRWZWN0b3IuZWxlbWVudHMoKTsKLSAgICAgICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICAgICAgRmF2b3JpdGVzV1NJTEVsZW1lbnQgZmF2V1NJTEVsZW1lbnQgPSAoRmF2b3JpdGVzV1NJTEVsZW1lbnQpZS5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgIG5hbWU9IjwlPUZhdm9yaXRlc0FjdGlvbklucHV0cy5NQVNTX0FDVElPTl9OT0RFX0lEJT4iIHZhbHVlPSI8JT1zZWxlY3RlZE5vZGUuZ2V0Q2hpbGROb2RlKGZhdldTSUxFbGVtZW50KS5nZXROb2RlSWQoKSU+IiBvbkNsaWNrPSJ2YWxpZGF0ZUNoZWNrQm94SW5wdXQodGhpcywgdGhpcy5jaGVja2VkKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9ST1dfQ0hFQ0tfQk9YIiklPiI+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIiBub3dyYXA+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNlbGVjdEZhdm9yaXRlc05vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Q2hpbGROb2RlKGZhdldTSUxFbGVtZW50KS5nZXROb2RlSWQoKSwgZmFsc2UpKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjwlPWZhdldTSUxFbGVtZW50LmdldFdzaWxVcmwoKSU+PC9hPjwvdGQ+Ci0gICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgfQotICAgICAgICAgICAgJT4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgdHdpc3RJbml0KCc8JT1kaXZGYXZvcml0ZVdTSUxUYWJsZSU+JywnPCU9eGRpdkZhdm9yaXRlV1NJTFRhYmxlJT4nKTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0KLQotICAgICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIG5vd3JhcD4KLSAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPWZhdm9yaXRlc1BlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfSU1QT1JUX1RPX1dTSUxfUEVSU1BFQ1RJVkUiKSU+IiBvbkNsaWNrPSJzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQoJzwlPWRpdkZhdm9yaXRlV1NJTFRhYmxlJT4nLCB0aGlzLmZvcm0sICc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoQWRkV1NJTFRvV1NJTFBlcnNwZWN0aXZlQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+JykiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9ZmF2b3JpdGVzUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9SRU1PVkUiKSU+IiBvbkNsaWNrPSJzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQoJzwlPWRpdkZhdm9yaXRlV1NJTFRhYmxlJT4nLCB0aGlzLmZvcm0sICc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+JykiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgIDwlCi0gICAgfQotICAgICU+Ci0gICAgPC9mb3JtPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mb3Jtcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvSW1wb3J0VG9Xb3JrYmVuY2hGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvSW1wb3J0VG9Xb3JrYmVuY2hGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJmNTRjNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zL0ltcG9ydFRvV29ya2JlbmNoRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybVByb3BlcnRpZXMiIGNsYXNzPSJqYXZhLnV0aWwuSGFzaHRhYmxlIiBzY29wZT0icmVxdWVzdCIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICA8dGl0bGU+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX0lNUE9SVF9UT19XT1JLQkVOQ0giKSU+PC90aXRsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3Jtc3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3JtdXRpbHMuanNwIiBmbHVzaD0idHJ1ZSIvPiAgICAKLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotCi0gICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoKFN0cmluZylmb3JtUHJvcGVydGllcy5nZXQoImZvcm1BY3Rpb25MaW5rIikpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuSU1QT1JUX0ZJTEUlPiIgdmFsdWU9IjwlPUFjdGlvbklucHV0cy5JTVBPUlRfRklMRSU+Ij4KLQotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9pbXBvcnRfdG9fd29ya2JlbmNoX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfSU1QT1JUX1dTRExfVE9fV09SS0JFTkNIIik7Ci0gICAgJT4KLSAgICA8JUAgaW5jbHVkZSBmaWxlID0gIi9mb3Jtcy9mb3JtaGVhZGVyLmluYyIgJT4KLSAgICA8dGFibGU+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfSU1QT1JUX1RPX1dPUktCRU5DSF9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICAgIDx0YWJsZT4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD00MCB2YWxpZ249ImNlbnRlciI+Ci0gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic2VsZWN0X3dvcmtiZW5jaF9wcm9qZWN0X25hbWUiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiV09SS0JFTkNIX1BST0pFQ1RfTkFNRSIpJT48L2xhYmVsPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9NDAgdmFsaWduPSJjZW50ZXIiIG5vd3JhcD4KLSAgICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgICAgIElXb3Jrc3BhY2VSb290IGlXb3Jrc3BhY2VSb290ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLSAgICAgICAgICAgICAgICBJUHJvamVjdFtdIHByb2plY3RzID0gaVdvcmtzcGFjZVJvb3QuZ2V0UHJvamVjdHMoKTsKLSAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9InNlbGVjdF93b3JrYmVuY2hfcHJvamVjdF9uYW1lIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuV09SS0JFTkNIX1BST0pFQ1RfTkFNRSU+IiBjbGFzcz0ic2VsZWN0bGlzdCI+Ci0gICAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHByb2plY3RzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RzW2ldLmlzT3BlbigpKSBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHByb2plY3ROYW1lID0gcHJvamVjdHNbaV0uZ2V0TmFtZSgpOwotICAgICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9cHJvamVjdE5hbWUlPiI+PCU9cHJvamVjdE5hbWUlPgotICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgIDwvc2VsZWN0PgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTEwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X2ltcG9ydGVkX2ZpbGVfbmFtZSI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJJTVBPUlRFRF9XU0RMX0ZJTEVfTkFNRSIpJT48L2xhYmVsPgotICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgaGVpZ2h0PTEwIHZhbGlnbj0iYm90dG9tIiB3aWR0aD0iNjAlIj4KLTwlCi0gICBTdHJpbmcgd3NkbEZpbGVOYW1lPSJ0ZW1wLndzZGwiOwotICAgU3RyaW5nIHdzZGxVUkwgPSAoU3RyaW5nKWZvcm1Qcm9wZXJ0aWVzLmdldCgid3NkbFVSTCIpOwotICAgaWYgKHdzZGxVUkwgIT0gbnVsbCAmJiB3c2RsVVJMLmVuZHNXaXRoKCIud3NkbCIpKQotICAgewotICAgICBpbnQgbGFzdFNlcGFyYXRvclBvcyA9IE1hdGgubWF4KHdzZGxVUkwubGFzdEluZGV4T2YoIi8iKSx3c2RsVVJMLmxhc3RJbmRleE9mKCJcXCIpKTsKLSAgICAgaWYgKGxhc3RTZXBhcmF0b3JQb3MgPiAwKQotICAgICAgIHdzZGxGaWxlTmFtZSA9IHdzZGxVUkwuc3Vic3RyaW5nKGxhc3RTZXBhcmF0b3JQb3MrMSx3c2RsVVJMLmxlbmd0aCgpKTsKLSAgIH0KLSU+ICAgCi0gICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X2ltcG9ydGVkX2ZpbGVfbmFtZSIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLklNUE9SVEVEX0ZJTEVfTkFNRSU+IiB2YWx1ZT0iPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllc1N0cmljdCh3c2RsRmlsZU5hbWUpJT4iIHNpemU9NTAgY2xhc3M9InRleHRlbnRlciI+Ci0gICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPiAgICAKLSAgICA8L2Zvcm0+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvSW1wb3J0V1NETEFuZFdTSUxUb1dvcmtiZW5jaEZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mb3Jtcy9JbXBvcnRXU0RMQW5kV1NJTFRvV29ya2JlbmNoRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMWE2NzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mb3Jtcy9JbXBvcnRXU0RMQW5kV1NJTFRvV29ya2JlbmNoRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxNjEgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybVByb3BlcnRpZXMiIGNsYXNzPSJqYXZhLnV0aWwuSGFzaHRhYmxlIiBzY29wZT0icmVxdWVzdCIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIHRvZ2dsZURpdkNvbnRhaW5lcihkaXZJZCkKLSAgewotICAgIHZhciBkaXZDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZJZCk7Ci0gICAgaWYgKGRpdkNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID09ICJub25lIikKLSAgICAgIGRpdkNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgZWxzZQotICAgICAgZGl2Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLTwvc2NyaXB0PgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfSU1QT1JUX1RPX1dPUktCRU5DSCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXV0aWxzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotCi0gIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KChTdHJpbmcpZm9ybVByb3BlcnRpZXMuZ2V0KCJmb3JtQWN0aW9uTGluayIpKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+Ci0KLSAgPCUKLSAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9pbXBvcnRfdG9fd29ya2JlbmNoX2hpZ2hsaWdodGVkLmdpZiI7Ci0gIFN0cmluZyB0aXRsZSA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0lNUE9SVF9XU0RMX1RPX1dPUktCRU5DSCIpOwotICAlPgotICA8JUAgaW5jbHVkZSBmaWxlID0gIi9mb3Jtcy9mb3JtaGVhZGVyLmluYyIgJT4KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAgIDx0ZD4KLSAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lNUE9SVF9UT19XT1JLQkVOQ0hfREVTQyIpJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9NDAgdmFsaWduPSJjZW50ZXIiPgotICAgICAgICA8bGFiZWwgZm9yPSJzZWxlY3Rfd29ya2JlbmNoX3Byb2plY3RfbmFtZSI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJXT1JLQkVOQ0hfUFJPSkVDVF9OQU1FIiklPjwvbGFiZWw+Ci0gICAgICA8L3RkPgotICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD00MCB2YWxpZ249ImNlbnRlciIgbm93cmFwPgotICAgICAgICA8JQotICAgICAgICBJV29ya3NwYWNlUm9vdCBpV29ya3NwYWNlUm9vdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCk7Ci0gICAgICAgIElQcm9qZWN0W10gcHJvamVjdHMgPSBpV29ya3NwYWNlUm9vdC5nZXRQcm9qZWN0cygpOwotICAgICAgICAlPgotICAgICAgICA8c2VsZWN0IGlkPSJzZWxlY3Rfd29ya2JlbmNoX3Byb2plY3RfbmFtZSIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLldPUktCRU5DSF9QUk9KRUNUX05BTUUlPiIgY2xhc3M9InNlbGVjdGxpc3QiPgotICAgICAgICA8JQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHByb2plY3RzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmICghcHJvamVjdHNbaV0uaXNPcGVuKCkpCi0gICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgU3RyaW5nIHByb2plY3ROYW1lID0gcHJvamVjdHNbaV0uZ2V0TmFtZSgpOwotICAgICAgICAlPgotICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT1wcm9qZWN0TmFtZSU+Ij48JT1wcm9qZWN0TmFtZSU+Ci0gICAgICAgIDwlCi0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkge30KLSAgICAgICAgfQotICAgICAgICAlPgotICAgICAgICA8L3NlbGVjdD4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLQotICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MTAgdmFsaWduPSJib3R0b20iPgotICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQgaWQ9ImlucHV0X2ltcG9ydF93c2RsIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuSU1QT1JUX0ZJTEUlPiIgdmFsdWU9IjwlPUFjdGlvbklucHV0cy5JTVBPUlRfRklMRSU+IiBvbkNsaWNrPSJ0b2dnbGVEaXZDb250YWluZXIoJ2Rpdl9pbXBvcnRfd3NkbCcpIj4KLSAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfaW1wb3J0X3dzZGwiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiTEFCRUxfSU1QT1JUX1dTREwiKSU+PC9sYWJlbD4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLSAgPGRpdiBpZD0iZGl2X2ltcG9ydF93c2RsIj4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQ+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfaW1wb3J0ZWRfd3NkbF9maWxlX25hbWUiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiSU1QT1JURURfV1NETF9GSUxFX05BTUUiKSU+PC9sYWJlbD4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBoZWlnaHQ9MTAgdmFsaWduPSJib3R0b20iIHdpZHRoPSI2MCUiPgotPCUKLSBTdHJpbmcgd3NkbEZpbGVOYW1lPSJ0ZW1wLndzZGwiOwotIFN0cmluZyB3c2RsVVJMID0gKFN0cmluZylmb3JtUHJvcGVydGllcy5nZXQoIndzZGxVUkwiKTsKLSBpZiAod3NkbFVSTCAhPSBudWxsICYmIHdzZGxVUkwuZW5kc1dpdGgoIi53c2RsIikpCi0gewotICAgaW50IGxhc3RTZXBhcmF0b3JQb3MgPSBNYXRoLm1heCh3c2RsVVJMLmxhc3RJbmRleE9mKCIvIiksd3NkbFVSTC5sYXN0SW5kZXhPZigiXFwiKSk7Ci0gICBpZiAobGFzdFNlcGFyYXRvclBvcyA+IDApCi0gICAgIHdzZGxGaWxlTmFtZSA9IHdzZGxVUkwuc3Vic3RyaW5nKGxhc3RTZXBhcmF0b3JQb3MrMSx3c2RsVVJMLmxlbmd0aCgpKTsKLSB9Ci0lPiAgIAotICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXRfaW1wb3J0ZWRfd3NkbF9maWxlX25hbWUiIG5hbWU9IjwlPUFjdGlvbklucHV0cy5JTVBPUlRFRF9GSUxFX05BTUUlPiIgdmFsdWU9IjwlPUhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXNTdHJpY3Qod3NkbEZpbGVOYW1lKSU+IiBzaXplPTUwIGNsYXNzPSJ0ZXh0ZW50ZXIiPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICA8L2Rpdj4KLQotICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MTAgdmFsaWduPSJib3R0b20iPiZuYnNwOzwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLQotICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuSU1QT1JURURfV1NETF9VUkwlPiIgdmFsdWU9IjwlPXdzZGxVUkwlPiI+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgPHRyPgotICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0xMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImlucHV0X2ltcG9ydF93c2lsIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuSU1QT1JUX1RPX1dTSUwlPiIgdmFsdWU9IjwlPUFjdGlvbklucHV0cy5JTVBPUlRfVE9fV1NJTCU+IiBvbkNsaWNrPSJ0b2dnbGVEaXZDb250YWluZXIoJ2Rpdl9pbXBvcnRfd3NpbCcpIj4KLSAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfaW1wb3J0X3dzaWwiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiTEFCRUxfSU1QT1JUX1RPX1dTSUwiKSU+PC9sYWJlbD4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLSAgPGRpdiBpZD0iZGl2X2ltcG9ydF93c2lsIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0xMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfaW1wb3J0ZWRfd3NpbF9maWxlX25hbWUiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiV1NJTF9GSUxFX05BTUUiKSU+PC9sYWJlbD4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBoZWlnaHQ9MTAgdmFsaWduPSJib3R0b20iIHdpZHRoPSI2MCUiPgotPCUKLSBTdHJpbmcgd3NpbEZpbGVOYW1lID0gKFN0cmluZylmb3JtUHJvcGVydGllcy5nZXQoIndzaWxGaWxlTmFtZSIpOwotIGlmICh3c2lsRmlsZU5hbWUgPT0gbnVsbCB8fCB3c2lsRmlsZU5hbWUubGVuZ3RoKCkgPD0gMCkKLSAgIHdzaWxGaWxlTmFtZSA9IHdzZGxGaWxlTmFtZS5zdWJzdHJpbmcoMCwgd3NkbEZpbGVOYW1lLmxlbmd0aCgpLTQpICsgIndzaWwiOwotJT4gICAKLSAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X2ltcG9ydGVkX3dzaWxfZmlsZV9uYW1lIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuV1NJTF9GSUxFX05BTUUlPiIgdmFsdWU9IjwlPUhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXNTdHJpY3Qod3NpbEZpbGVOYW1lKSU+IiBzaXplPTUwIGNsYXNzPSJ0ZXh0ZW50ZXIiPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICA8L2Rpdj4KLQotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPiAgICAKLSAgPC9mb3JtPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zL0xhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvTGF1bmNoV2ViU2VydmljZVdpemFyZEZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWYwNGU3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvTGF1bmNoV2ViU2VydmljZVdpemFyZEZvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkhUTUxVdGlscyIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1BY3Rpb25MaW5rIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX0xBVU5DSF9XRUJTRVJWSUNFX1dJWkFSRCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3Jtc3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3JtdXRpbHMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGZvcm1BY3Rpb25MaW5rLnRvU3RyaW5nKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KLQotPCUKLSAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJpbWFnZXMvbGF1bmNoX3dzd2l6YXJkX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICBTdHJpbmcgdGl0bGUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9MQVVOQ0hfV0VCX1NFUlZJQ0VfV0laQVJEIik7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPHRhYmxlPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQ0hPT1NFX1dJWkFSRCIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJyYWRpb193c19jbGllbnRfd2l6YXJkIiBjbGFzcz0icmFkaW8iIG5hbWU9IjwlPUFjdGlvbklucHV0cy5XRUJfU0VSVklDRV9XSVpBUkQlPiIgY2hlY2tlZD10cnVlIHZhbHVlPSI8JT1TdHJpbmcudmFsdWVPZihBY3Rpb25JbnB1dHMuV0VCX1NFUlZJQ0VfQ0xJRU5UX1dJWkFSRCklPiI+PGxhYmVsIGZvcj0icmFkaW9fd3NfY2xpZW50X3dpemFyZCI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX1JBRElPX1dFQl9TRVJWSUNFX0NMSUVOVF9XSVpBUkQiKSU+PC9sYWJlbD4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJyYWRpb193c19za2VsZXRvbl93aXphcmQiIGNsYXNzPSJyYWRpbyIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLldFQl9TRVJWSUNFX1dJWkFSRCU+IiB2YWx1ZT0iPCU9U3RyaW5nLnZhbHVlT2YoQWN0aW9uSW5wdXRzLldFQl9TRVJWSUNFX1NLRUxFVE9OX1dJWkFSRCklPiI+PGxhYmVsIGZvcj0icmFkaW9fd3Nfc2tlbGV0b25fd2l6YXJkIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fUkFESU9fV0VCX1NFUlZJQ0VfU0tFTEVUT05fV0laQVJEIiklPjwvbGFiZWw+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+ICAgIAotICA8L2Zvcm0+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvUHJveHlMb2FkQ29udGVudC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zL1Byb3h5TG9hZENvbnRlbnQuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDY2OTM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvUHJveHlMb2FkQ29udGVudC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPCUKLSAgIFN0cmluZyBzZXNzaW9uSWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuU0VTU0lPTklEKTsKLSAgIENvbnRyb2xsZXIgY29udHJvbGxlcjsKLSAgIFN0cmluZ0J1ZmZlciB0YXJnZXRDb250ZW50TGluayA9IG5ldyBTdHJpbmdCdWZmZXIocmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlRBUkdFVF9QQUdFKSk7Ci0gICBpZiAoc2Vzc2lvbklkICE9IG51bGwpCi0gICB7Ci0gICAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSWQpOwotICAgICBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpY3VycmVudFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci0gICAgIGlmICh0YXJnZXRDb250ZW50TGluay50b1N0cmluZygpLmluZGV4T2YoIj8iKSAhPSAtMSkKLSAgICAgICB0YXJnZXRDb250ZW50TGluay5hcHBlbmQoJyYnKTsKLSAgICAgZWxzZQotICAgICAgIHRhcmdldENvbnRlbnRMaW5rLmFwcGVuZCgnPycpOwotICAgICB0YXJnZXRDb250ZW50TGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCkuYXBwZW5kKCc9JykuYXBwZW5kKHNlc3Npb25JZCk7Ci0gICB9Ci0gICBlbHNlCi0gICAgIGNvbnRyb2xsZXIgPSAoQ29udHJvbGxlcilzZXNzaW9uLmdldEF0dHJpYnV0ZSgiY29udHJvbGxlciIpOwotICAgCi0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfUEFHRV9MT0FERVIiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gbG9hZENvbnRlbnQoKQotICB7Ci0gICAgdmFyIGZyYW1lc2V0ID0gcGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm94eVBhZ2UiKTsKLSAgICB2YXIgY29udGVudEZyYW1lID0gZnJhbWVzZXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZyYW1lIikuaXRlbSgxKTsKLSAgICBjb250ZW50RnJhbWUuc3JjID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh0YXJnZXRDb250ZW50TGluay50b1N0cmluZygpKSklPiI7ICAKLSAgfQotICAKLSAgZnVuY3Rpb24gaGFuZGxlQ29tcGxldGlvbigpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGFibGUiKS5pdGVtKDApOwotICAgIHZhciB0Qm9keSA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUQk9EWSIpLml0ZW0oMCk7Ci0gICAgdmFyIGRvbmVSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHZhciBkb25lQ29sdW1uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICBkb25lQ29sdW1uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQYWdlIGxvYWRlZC4iKSk7Ci0gICAgZG9uZVJvdy5hcHBlbmRDaGlsZChkb25lQ29sdW1uKTsKLSAgICB0Qm9keS5hcHBlbmRDaGlsZChkb25lUm93KTsgICAKLSAgfQotPC9zY3JpcHQ+ICAKLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLSAgPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPHRhYmxlPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfTE9BRF9JTl9QUk9HUkVTUyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgbG9hZENvbnRlbnQoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mb3Jtcy9Qcm94eUxvYWRQYWdlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvUHJveHlMb2FkUGFnZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MjQ2MmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mb3Jtcy9Qcm94eUxvYWRQYWdlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5VUkxVdGlscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubmV0LioiICU+Ci0KLTwlCi0gICBTdHJpbmcgc2Vzc2lvbklkID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCk7Ci0gICBDb250cm9sbGVyIGNvbnRyb2xsZXI7Ci0gICBTdHJpbmdCdWZmZXIgbG9hZENvbnRlbnRMaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigiZm9ybXMvUHJveHlMb2FkQ29udGVudC5qc3A/Iik7Ci0gICBpZiAoc2Vzc2lvbklkICE9IG51bGwpCi0gICB7Ci0gICAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSWQpOwotICAgICBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpY3VycmVudFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci0gICAgIGxvYWRDb250ZW50TGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCkuYXBwZW5kKCc9JykuYXBwZW5kKHNlc3Npb25JZCkuYXBwZW5kKCcmJyk7Ci0gICB9Ci0gICBlbHNlCi0gICAgIGNvbnRyb2xsZXIgPSAoQ29udHJvbGxlcilzZXNzaW9uLmdldEF0dHJpYnV0ZSgiY29udHJvbGxlciIpOwotICAgbG9hZENvbnRlbnRMaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuVEFSR0VUX1BBR0UpLmFwcGVuZCgnPScpLmFwcGVuZChVUkxVdGlscy5lbmNvZGUocmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlRBUkdFVF9QQUdFKSkpOwotJT4KLTxmcmFtZXNldCBpZD0icHJveHlQYWdlIiByb3dzPSIxMDAlLCoiIGJvcmRlcj0wPgotICA8ZnJhbWUgc3JjPSI8JT1jb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChsb2FkQ29udGVudExpbmsudG9TdHJpbmcoKSklPiIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9USVRMRV9QQUdFX0xPQURFUiIpJT4iIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTAgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBub3Jlc2l6ZT4KLSAgPGZyYW1lIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfUEFHRV9DT05URU5UIiklPiIgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MCBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0wIG5vcmVzaXplPgotPC9mcmFtZXNldD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvY29weXJpZ2h0LmluYyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvY29weXJpZ2h0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdmZGNlZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zL2NvcHlyaWdodC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mb3Jtcy9mb3JtaGVhZGVyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZlNWIyYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh0aXRsZUltYWdlUGF0aCkpJT4iIGFsdD0iIj4KLSAgICAgIDxzdHJvbmc+PCU9dGl0bGUlPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTIwPiA8aW1nIGhlaWdodD0yIHdpZHRoPSIxMDAlIiBhbGlnbj0idG9wIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIj4gPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zL290aGVyQWN0aW9ucy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2Zvcm1zL290aGVyQWN0aW9ucy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZTYxNTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mb3Jtcy9vdGhlckFjdGlvbnMuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci0KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImN1cnJlbnRUb29sTWFuYWdlckhhc2giIGNsYXNzPSJqYXZhLnV0aWwuSGFzaHRhYmxlIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFRvb2xNYW5hZ2VyIGN1cnJlbnRUb29sTWFuYWdlciA9IChUb29sTWFuYWdlciljdXJyZW50VG9vbE1hbmFnZXJIYXNoLmdldChBY3Rpb25JbnB1dHMuQ1VSUkVOVF9UT09MX01BTkFHRVIpOwotICAgaW50IG51bWJlck9mVG9vbHMgPSBjdXJyZW50VG9vbE1hbmFnZXIuZ2V0TnVtYmVyT2ZUb29scygpOwotICAgaWYgKG51bWJlck9mVG9vbHMgPiAxKQotICAgewotJT4KLTx0YWJsZT4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjA+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPHN0cm9uZz48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9PVEhFUl9BQ1RJT05TIiklPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTIwPiA8aW1nIGhlaWdodD0yIHdpZHRoPSIxMDAlIiBhbGlnbj0idG9wIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIj4gPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGU+Ci08JQotICAgICBmb3IgKGludCBpPTE7aTxudW1iZXJPZlRvb2xzO2krKykKLSAgICAgewotICAgICAgIFRvb2wgdCA9IGN1cnJlbnRUb29sTWFuYWdlci5nZXRUb29sKGkpOwotJT4KLSAgPHRyPgotICAgIDx0ZD48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQodC5nZXRTZWxlY3RUb29sQWN0aW9uSHJlZihmYWxzZSkpKSU+IiB0YXJnZXQ9IjwlPXQuZ2V0U2VsZWN0VG9vbEFjdGlvblRhcmdldCgpJT4iPjwlPXQuZ2V0QWx0VGV4dCgpJT48L2E+PC90ZD4KLSAgPC90cj4KLTwlCi0gICAgIH0KLSU+Ci08L3RhYmxlPgotPCUKLSAgIH0KLSU+ICAgICAgIApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGZlOGE4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvZm9ybXMvc2ltcGxlQ29tbW9uX3RhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQlVUVE9OX0dPIiklPiIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTMwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fUkVTRVQiKSU+IiBvbkNsaWNrPSJyZXNldEZvcm1JbnB1dHMoKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9hY3Rpb25zLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2FjdGlvbnMuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWFlZDdhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2FjdGlvbnMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvYWRkX3RvX3dzZGxfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9hZGRfdG9fd3NkbF9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVjZTU2MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9hZGRfdG9fd3NkbF9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2FkZF90b193c2RsX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2FkZF90b193c2RsX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVhZDY2Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9hZGRfdG9fd3NkbF9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9iYWNrX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvYmFja19lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZiNDE1MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9iYWNrX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvYmFja19oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9iYWNrX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZiNDE1MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9iYWNrX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2NhbGVuZGFyLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2NhbGVuZGFyLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUyODE3Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9jYWxlbmRhci5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9jbGVhcl9lbmFibGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmMxMGY5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvY2xlYXJfaGlnaGxpZ2h0ZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvY2xlYXJfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmMxMGY5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2NsZWFyX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2RldGFpbHNfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9kZXRhaWxzX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGEyYmEwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2RldGFpbHNfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2RldGFpbHNfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGEyYmEwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2RldGFpbHNfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZGxjbDE2Ly5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9kbGNsMTYvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9kbGNsMTYvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9kbGNsMTYvYWN0aW9uZW5naW5lX3BsYXkuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZGxjbDE2L2FjdGlvbmVuZ2luZV9wbGF5LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIxN2MxMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9kbGNsMTYvYWN0aW9uZW5naW5lX3BsYXkuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZGxjbDE2L2FjdGlvbmVuZ2luZV9yZWNvcmQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZGxjbDE2L2FjdGlvbmVuZ2luZV9yZWNvcmQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzAwNGY1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2RsY2wxNi9hY3Rpb25lbmdpbmVfcmVjb3JkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2RsY2wxNi9hY3Rpb25lbmdpbmVfc2F2ZS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9kbGNsMTYvYWN0aW9uZW5naW5lX3NhdmUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTAwNDhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2RsY2wxNi9hY3Rpb25lbmdpbmVfc2F2ZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9kbGNsMTYvYWN0aW9uZW5naW5lX3N0b3AuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZGxjbDE2L2FjdGlvbmVuZ2luZV9zdG9wLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FlZTlhYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9kbGNsMTYvYWN0aW9uZW5naW5lX3N0b3AuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZWxjbDE2Ly5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9lbGNsMTYvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9lbGNsMTYvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9lbGNsMTYvYWN0aW9uZW5naW5lX3BsYXkuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZWxjbDE2L2FjdGlvbmVuZ2luZV9wbGF5LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg4ZmI3Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9lbGNsMTYvYWN0aW9uZW5naW5lX3BsYXkuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZWxjbDE2L2FjdGlvbmVuZ2luZV9yZWNvcmQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZWxjbDE2L2FjdGlvbmVuZ2luZV9yZWNvcmQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmNjZmUyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2VsY2wxNi9hY3Rpb25lbmdpbmVfcmVjb3JkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2VsY2wxNi9hY3Rpb25lbmdpbmVfc2F2ZS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9lbGNsMTYvYWN0aW9uZW5naW5lX3NhdmUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmU3YjlkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2VsY2wxNi9hY3Rpb25lbmdpbmVfc2F2ZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9lbGNsMTYvYWN0aW9uZW5naW5lX3N0b3AuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZWxjbDE2L2FjdGlvbmVuZ2luZV9zdG9wLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRjMzY2ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9lbGNsMTYvYWN0aW9uZW5naW5lX3N0b3AuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZXZpZXcxNi8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZXZpZXcxNi8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2V2aWV3MTYvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9ldmlldzE2L2FjdGlvbmVuZ2luZS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9ldmlldzE2L2FjdGlvbmVuZ2luZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNjRiYzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZXZpZXcxNi9hY3Rpb25lbmdpbmUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZmF2b3JpdGVzX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZmF2b3JpdGVzX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTYyMjE4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2Zhdm9yaXRlc19lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2Zhdm9yaXRlc19oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9mYXZvcml0ZXNfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTYyMjE4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2Zhdm9yaXRlc19oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9mYXZvcml0ZXNfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9mYXZvcml0ZXNfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NjViODQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZmF2b3JpdGVzX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZmF2b3JpdGVzX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2Zhdm9yaXRlc19wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NjViODQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZmF2b3JpdGVzX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2ZvbGRlcl9jbG9zZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZm9sZGVyX2Nsb3NlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZTAyN2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZm9sZGVyX2Nsb3NlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9mb2xkZXJfb3Blbi5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9mb2xkZXJfb3Blbi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMzIyZTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZm9sZGVyX29wZW4uZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZm9yd2FyZF9lbmFibGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2ZvcndhcmRfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZjhjM2UuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZm9yd2FyZF9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2ZvcndhcmRfaGlnaGxpZ2h0ZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZm9yd2FyZF9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZjhjM2UuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvZm9yd2FyZF9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9pbXBvcnRfZnNfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9pbXBvcnRfZnNfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NmQzZTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvaW1wb3J0X2ZzX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvaW1wb3J0X2ZzX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2ltcG9ydF9mc19oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NmQzZTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvaW1wb3J0X2ZzX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2ltcG9ydF90b193b3JrYmVuY2hfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9pbXBvcnRfdG9fd29ya2JlbmNoX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzgwODVhZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9pbXBvcnRfdG9fd29ya2JlbmNoX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvaW1wb3J0X3RvX3dvcmtiZW5jaF9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9pbXBvcnRfdG9fd29ya2JlbmNoX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM4MDg1YWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvaW1wb3J0X3RvX3dvcmtiZW5jaF9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9rZXlsaW5lLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2tleWxpbmUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTgwNjllLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2tleWxpbmUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvbGF1bmNoX3dzd2l6YXJkX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvbGF1bmNoX3dzd2l6YXJkX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjA5N2Q1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2xhdW5jaF93c3dpemFyZF9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2xhdW5jaF93c3dpemFyZF9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9sYXVuY2hfd3N3aXphcmRfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjA5N2Q1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2xhdW5jaF93c3dpemFyZF9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9saW5lLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2xpbmUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODFlNWI3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2xpbmUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvbGluZV9sYXN0LmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2xpbmVfbGFzdC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMGVmODMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvbGluZV9sYXN0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2xpbmVfbm90bGFzdC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9saW5lX25vdGxhc3QuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjkyY2UyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL2xpbmVfbm90bGFzdC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9taW51c19sYXN0LmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL21pbnVzX2xhc3QuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWViYjczLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL21pbnVzX2xhc3QuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvbWludXNfbm90bGFzdC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9taW51c19ub3RsYXN0LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q2NDMxYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9taW51c19ub3RsYXN0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL25hdmlnYXRvci5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9uYXZpZ2F0b3IuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGMwNTY3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL25hdmlnYXRvci5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9wbHVzX2xhc3QuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvcGx1c19sYXN0LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTAwYzg5YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9wbHVzX2xhc3QuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvcGx1c19ub3RsYXN0LmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3BsdXNfbm90bGFzdC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1N2JkMTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvcGx1c19ub3RsYXN0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3JlZnJlc2hfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9yZWZyZXNoX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjkwNDI5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3JlZnJlc2hfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9yZWZyZXNoX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3JlZnJlc2hfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjkwNDI5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3JlZnJlc2hfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvcm9vdF9tYWluLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3Jvb3RfbWFpbi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3YWRlMDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvcm9vdF9tYWluLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3NwYWNlLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3NwYWNlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgxMTkxNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9zcGFjZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9zdGF0dXMuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvc3RhdHVzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRhMDAxZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy9zdGF0dXMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvdG9wX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvdG9wX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjViYzlkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3RvcF9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3RvcF9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy90b3BfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzE2NDc1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3RvcF9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy90d2lzdGNsb3NlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy90d2lzdGNsb3NlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2NDMzMWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvdHdpc3RjbG9zZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvdHdpc3RvcGVuZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvdHdpc3RvcGVuZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzJjNWYyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3VkZGlfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy91ZGRpX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ZjMGFmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3VkZGlfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy91ZGRpX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3VkZGlfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ZjMGFmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3VkZGlfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvd3NkbC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy93c2RsLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZiODQ0Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy93c2RsLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3dzZGxfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy93c2RsX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZThlZmM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3dzZGxfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2ltYWdlcy93c2RsX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3dzZGxfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZThlZmM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3dzZGxfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvd3NpbF9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3dzaWxfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYjM1YTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvd3NpbF9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvaW1hZ2VzL3dzaWxfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvd3NpbF9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYjM1YTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9pbWFnZXMvd3NpbF9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL2xhdW5jaF9vcHRpb25zX3JlZ2lzdHJ5LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvbGF1bmNoX29wdGlvbnNfcmVnaXN0cnkuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWMwNzgyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvbGF1bmNoX29wdGlvbnNfcmVnaXN0cnkuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MTUgICAxMjg2MDIgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLldTRXhwbG9yZXJDb250ZXh0LAotICBqYXZhLnV0aWwuRW51bWVyYXRpb24sCi0gIGphdmEudXRpbC5IYXNodGFibGUsCi0gIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLlVSTFV0aWxzIiAlPgotCi08JQotICByZXF1ZXN0LnNldENoYXJhY3RlckVuY29kaW5nKCJVVEYtOCIpOyAKLSAgU3RyaW5nIGtleSA9IG51bGw7Ci0gIEhhc2h0YWJsZSBvcHRpb25zID0gbmV3IEhhc2h0YWJsZSgpOwotICBFbnVtZXJhdGlvbiBwYXJhbU5hbWVzID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXJOYW1lcygpOwotICB3aGlsZSAocGFyYW1OYW1lcy5oYXNNb3JlRWxlbWVudHMoKSkKLSAgewotICAgIFN0cmluZyBwYXJhbU5hbWUgPSAoU3RyaW5nKXBhcmFtTmFtZXMubmV4dEVsZW1lbnQoKTsKLSAgICBTdHJpbmdbXSBwYXJhbVZhbHVlcyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyVmFsdWVzKHBhcmFtTmFtZSk7Ci0gICAgaWYgKHBhcmFtVmFsdWVzICE9IG51bGwgJiYgcGFyYW1WYWx1ZXMubGVuZ3RoID4gMCkKLSAgICB7Ci0gICAgICBpZiAoa2V5ID09IG51bGwgJiYgVVJMVXRpbHMuZGVjb2RlKHBhcmFtTmFtZSkuZXF1YWxzKFdTRXhwbG9yZXJDb250ZXh0LklEKSkKLSAgICAgICAga2V5ID0gcGFyYW1WYWx1ZXNbMF07Ci0gICAgICBlbHNlCi0gICAgICAgIG9wdGlvbnMucHV0KHBhcmFtTmFtZSwgcGFyYW1WYWx1ZXMpOwotICAgIH0KLSAgfQotICBpZiAoa2V5ICE9IG51bGwpCi0gIHsKLSAgICBMYXVuY2hPcHRpb25zTWFuYWdlciBtYW5hZ2VyID0gTGF1bmNoT3B0aW9uc01hbmFnZXIuZ2V0SW5zdGFuY2UoKTsKLSAgICBtYW5hZ2VyLm1hbmFnZShrZXksIG9wdGlvbnMsIGFwcGxpY2F0aW9uKTsKLSAgfQotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvcGVyc3BlY3RpdmVfY29udGVudC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMDc0MjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BFUlNQRUNUSVZFX0NPTlRFTlQiKSU+PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChTaG93UGVyc3BlY3RpdmVBY3Rpb24uZ2V0QWN0aW9uTGluayhjb250cm9sbGVyLmdldEN1cnJlbnRQZXJzcGVjdGl2ZSgpLmdldFBlcnNwZWN0aXZlSWQoKSxmYWxzZSkpKSU+IjsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9wZXJzcGVjdGl2ZV90b29sYmFyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvcGVyc3BlY3RpdmVfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZjlhNTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9wZXJzcGVjdGl2ZV90b29sYmFyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZW5naW5lLkFjdGlvbkVuZ2luZSIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotU3RyaW5nQnVmZmVyIGhyZWZBY3Rpb25FbmdpbmUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci1ocmVmQWN0aW9uRW5naW5lLmFwcGVuZChyZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImFjdGlvbmVuZ2luZV9jb250YWluZXIuanNwIikpKTsKLWhyZWZBY3Rpb25FbmdpbmUuYXBwZW5kKCI/Iik7Ci1ocmVmQWN0aW9uRW5naW5lLmFwcGVuZChBY3Rpb25JbnB1dHMuU0VTU0lPTklEKTsKLWhyZWZBY3Rpb25FbmdpbmUuYXBwZW5kKCI9Iik7Ci1ocmVmQWN0aW9uRW5naW5lLmFwcGVuZChzZXNzaW9uLmdldElkKCkpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9QRVJTUEVDVElWRV9UT09MQkFSIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3Rvb2xiYXIuY3NzIikpJT4iPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy90b29sYmFyLmpzIikpJT4iPgotICA8L3NjcmlwdD4KLSAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgZnVuY3Rpb24gb3BlbkFjdGlvbkVuZ2luZUNvbnRhaW5lcigpCi0gICAgewotICAgICAgdmFyIGxpbmsgPSAiPCU9aHJlZkFjdGlvbkVuZ2luZS50b1N0cmluZygpJT4iOwotICAgICAgdmFyIGFjdGlvbkVuZ2luZUNvbnRhaW5lciA9IHdpbmRvdy5vcGVuKGxpbmssImFjdGlvbkVuZ2luZUNvbnRhaW5lciIsImhlaWdodD0xMDAsd2lkdGg9MzUwLHN0YXR1cz15ZXMsc2Nyb2xsYmFycz15ZXMscmVzaXphYmxlPXllcyIpOwotICAgICAgaWYgKGFjdGlvbkVuZ2luZUNvbnRhaW5lci5mb2N1cykKLSAgICAgICAgYWN0aW9uRW5naW5lQ29udGFpbmVyLmZvY3VzKCk7Ci0gICAgfQotICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9Imd0b29sYmFyYm9keW1hcmdpbiI+Ci08ZGl2IGlkPSJnbG9iYWx0b29sYmFyIj4KLTx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGJvcmRlcj0wPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJ0ZXh0IiBub3dyYXAgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9MjU+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJUSVRMRV9XU0VYUExPUkVSIiklPjwvdGQ+Ci0gICAgPCUKLSAgICBTdHJpbmcgYWx0SGlzdG9yeUJhY2sgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9CQUNLIik7Ci0gICAgU3RyaW5nIGFsdEhpc3RvcnlGb3J3YXJkID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRk9SV0FSRCIpOwotICAgIFN0cmluZyBhbHRBY3Rpb25FbmdpbmUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9BQ1RJT05fRU5HSU5FIik7Ci0gICAgU3RyaW5nIGFsdFVEREkgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9VRERJX1BFUlNQRUNUSVZFIik7Ci0gICAgU3RyaW5nIGFsdFdTSUwgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9XU0lMX1BFUlNQRUNUSVZFIik7Ci0gICAgU3RyaW5nIGFsdFdTREwgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9XU0RMX1BFUlNQRUNUSVZFIik7Ci0gICAgU3RyaW5nIGFsdEZhdm9yaXRlcyA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0ZBVk9SSVRFU19QRVJTUEVDVElWRSIpOwotICAgICU+ICAgCi0gICAgPHRkIGNsYXNzPSJ0ZXh0IiBub3dyYXAgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTE2IGhlaWdodD0yNj48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmV0cmlldmVIaXN0b3J5QWN0aW9uLmdldEFjdGlvbkxpbmsoQWN0aW9uSW5wdXRzLkpVTVBfQkFDSykpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PGltZyBjbGFzcz0ibm9ybWFsIiBhbHQ9IjwlPWFsdEhpc3RvcnlCYWNrJT4iIHRpdGxlPSI8JT1hbHRIaXN0b3J5QmFjayU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2JhY2tfZW5hYmxlZC5naWYiKSklPiIgb25Nb3VzZU92ZXI9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvYmFja19oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2VvdmVyKHRoaXMpOyIgb25Nb3VzZU91dD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9iYWNrX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNlb3V0KHRoaXMpIiBvbk1vdXNlRG93bj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9iYWNrX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZWRvd24odGhpcykiIG9uTW91c2VVcD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9iYWNrX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNldXAodGhpcykiPjwvYT48L3RkPgotICAgIDx0ZCBjbGFzcz0idGV4dCIgbm93cmFwIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCIgaGVpZ2h0PTI1PjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChSZXRyaWV2ZUhpc3RvcnlBY3Rpb24uZ2V0QWN0aW9uTGluayhBY3Rpb25JbnB1dHMuSlVNUF9GT1JXQVJEKSkpJT4iIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij48aW1nIGNsYXNzPSJub3JtYWwiIGFsdD0iPCU9YWx0SGlzdG9yeUZvcndhcmQlPiIgdGl0bGU9IjwlPWFsdEhpc3RvcnlGb3J3YXJkJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvZm9yd2FyZF9lbmFibGVkLmdpZiIpKSU+IiBvbk1vdXNlT3Zlcj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9mb3J3YXJkX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZW92ZXIodGhpcyk7IiBvbk1vdXNlT3V0PSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2ZvcndhcmRfZW5hYmxlZC5naWYiKSklPic7bW91c2VvdXQodGhpcykiIG9uTW91c2VEb3duPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2ZvcndhcmRfaGlnaGxpZ2h0ZWQuZ2lmIikpJT4nO21vdXNlZG93bih0aGlzKSIgb25Nb3VzZVVwPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2ZvcndhcmRfZW5hYmxlZC5naWYiKSklPic7bW91c2V1cCh0aGlzKSI+PC9hPjwvdGQ+Ci0gICAgPCUKLSAgICBBY3Rpb25FbmdpbmUgYWN0aW9uRW5naW5lID0gY29udHJvbGxlci5nZXRBY3Rpb25FbmdpbmUoKTsKLSAgICBpZiAoYWN0aW9uRW5naW5lICE9IG51bGwgJiYgYWN0aW9uRW5naW5lLmdldE1vZGUoKSAhPSBBY3Rpb25FbmdpbmUuTU9ERV9ESVNBQkxFRCkKLSAgICB7Ci0gICAgJT4KLSAgICAgIDx0ZCBjbGFzcz0idGV4dCIgbm93cmFwIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCIgaGVpZ2h0PTI1PjxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlbkFjdGlvbkVuZ2luZUNvbnRhaW5lcigpIj48aW1nIGNsYXNzPSJub3JtYWwiIGFsdD0iPCU9YWx0QWN0aW9uRW5naW5lJT4iIHRpdGxlPSI8JT1hbHRBY3Rpb25FbmdpbmUlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9ldmlldzE2L2FjdGlvbmVuZ2luZS5naWYiKSklPiIgb25Nb3VzZU92ZXI9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvZXZpZXcxNi9hY3Rpb25lbmdpbmUuZ2lmIikpJT4nO21vdXNlb3Zlcih0aGlzKTsiIG9uTW91c2VPdXQ9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvZXZpZXcxNi9hY3Rpb25lbmdpbmUuZ2lmIikpJT4nO21vdXNlb3V0KHRoaXMpIiBvbk1vdXNlRG93bj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9ldmlldzE2L2FjdGlvbmVuZ2luZS5naWYiKSklPic7bW91c2Vkb3duKHRoaXMpIiBvbk1vdXNlVXA9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvZXZpZXcxNi9hY3Rpb25lbmdpbmUuZ2lmIikpJT4nO21vdXNldXAodGhpcykiPjwvYT48L3RkPgotICAgIDwlCi0gICAgfQotICAgICU+Ci0gICAgPHRkIGNsYXNzPSJ0ZXh0IiBub3dyYXAgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0IiBoZWlnaHQ9MjU+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNob3dQZXJzcGVjdGl2ZUFjdGlvbi5nZXRBY3Rpb25MaW5rKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9VRERJLGZhbHNlKSkpJT4iIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij48aW1nIGNsYXNzPSJub3JtYWwiIGFsdD0iPCU9YWx0VURESSU+IiB0aXRsZT0iPCU9YWx0VURESSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3VkZGlfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYiKSklPiIgb25Nb3VzZU92ZXI9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdWRkaV9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2VvdmVyKHRoaXMpOyIgb25Nb3VzZU91dD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy91ZGRpX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNlb3V0KHRoaXMpIiBvbk1vdXNlRG93bj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy91ZGRpX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZWRvd24odGhpcykiIG9uTW91c2VVcD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy91ZGRpX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNldXAodGhpcykiPjwvYT48L3RkPgotICAgIDx0ZCBjbGFzcz0idGV4dCIgbm93cmFwIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCIgaGVpZ2h0PTI1PjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChTaG93UGVyc3BlY3RpdmVBY3Rpb24uZ2V0QWN0aW9uTGluayhBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfV1NJTCxmYWxzZSkpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PGltZyBjbGFzcz0ibm9ybWFsIiBhbHQ9IjwlPWFsdFdTSUwlPiIgdGl0bGU9IjwlPWFsdFdTSUwlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy93c2lsX3BlcnNwZWN0aXZlX2VuYWJsZWQuZ2lmIikpJT4iIG9uTW91c2VPdmVyPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3dzaWxfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmIikpJT4nO21vdXNlb3Zlcih0aGlzKTsiIG9uTW91c2VPdXQ9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvd3NpbF9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZiIpKSU+Jzttb3VzZW91dCh0aGlzKSIgb25Nb3VzZURvd249InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvd3NpbF9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2Vkb3duKHRoaXMpIiBvbk1vdXNlVXA9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvd3NpbF9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZiIpKSU+Jzttb3VzZXVwKHRoaXMpIj48L2E+PC90ZD4KLSAgICA8dGQgY2xhc3M9InRleHQiIG5vd3JhcCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiIGhlaWdodD0yNT48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2hvd1BlcnNwZWN0aXZlQWN0aW9uLmdldEFjdGlvbkxpbmsoQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1dTREwsZmFsc2UpKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjxpbWcgY2xhc3M9Im5vcm1hbCIgYWx0PSI8JT1hbHRXU0RMJT4iIHRpdGxlPSI8JT1hbHRXU0RMJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvd3NkbF9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZiIpKSU+IiBvbk1vdXNlT3Zlcj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy93c2RsX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZW92ZXIodGhpcyk7IiBvbk1vdXNlT3V0PSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3dzZGxfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYiKSklPic7bW91c2VvdXQodGhpcykiIG9uTW91c2VEb3duPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3dzZGxfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmIikpJT4nO21vdXNlZG93bih0aGlzKSIgb25Nb3VzZVVwPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3dzZGxfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYiKSklPic7bW91c2V1cCh0aGlzKSI+PC9hPjwvdGQ+ICAgIAotICAgIDx0ZCBjbGFzcz0idGV4dCIgbm93cmFwIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCIgaGVpZ2h0PTI1PjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChTaG93UGVyc3BlY3RpdmVBY3Rpb24uZ2V0QWN0aW9uTGluayhBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfRkFWT1JJVEVTLGZhbHNlKSkpJT4iIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij48aW1nIGNsYXNzPSJub3JtYWwiIGFsdD0iPCU9YWx0RmF2b3JpdGVzJT4iIHRpdGxlPSI8JT1hbHRGYXZvcml0ZXMlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9mYXZvcml0ZXNfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYiKSklPiIgb25Nb3VzZU92ZXI9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvZmF2b3JpdGVzX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZW92ZXIodGhpcyk7IiBvbk1vdXNlT3V0PSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2Zhdm9yaXRlc19wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZiIpKSU+Jzttb3VzZW91dCh0aGlzKSIgb25Nb3VzZURvd249InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvZmF2b3JpdGVzX3BlcnNwZWN0aXZlX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZWRvd24odGhpcykiIG9uTW91c2VVcD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9mYXZvcml0ZXNfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYiKSklPic7bW91c2V1cCh0aGlzKSI+PC9hPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvc2NyaXB0cy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvc2NyaXB0cy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvc2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiODEzNTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotLy8gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0vLyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotLy8gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLS8vIAotLy8gQ29udHJpYnV0b3JzOgotLy8gICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotLy8KLQotZnVuY3Rpb24gaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKCkKLXsKLSAgcmV0dXJuIG5hdmlnYXRvci5hcHBOYW1lID09ICJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIiOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL2NhbGVuZGFyYnJvd3Nlci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvY2FsZW5kYXJicm93c2VyLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzliOWNhMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvY2FsZW5kYXJicm93c2VyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFN0cmluZyBzZXNzaW9uSWQgPSBzZXNzaW9uLmdldElkKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHZhciBjYWxlbmRhckJyb3dzZXI7Ci0gIHZhciBjYWxlbmRhckJyb3dzZXJDbG9zZWQgPSB0cnVlOwotICB2YXIgY2FsZW5kYXJUYXJnZXRSb3cgPSAtMTsKLSAgdmFyIGNhbGVuZGFyVGFyZ2V0OwotCi0gIGZ1bmN0aW9uIG9wZW5DYWxlbmRhckJyb3dzZXIodHlwZSxmb3JtQ29udGFpbmVySWQsZWxlbWVudE5hbWUsaW5kZXgpCi0gIHsKLSAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZvcm1Db250YWluZXJJZCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKS5pdGVtKDApOwotICAgIHZhciBlbGVtZW50cyA9IGZvcm0uZWxlbWVudHNbZWxlbWVudE5hbWVdOwotICAgIGlmIChpbmRleCA9PSAwICYmIGVsZW1lbnRzLmxlbmd0aCA9PSB1bmRlZmluZWQpCi08JQotICAgLy8gT25seSBvbmUgZWxlbWVudC4KLSU+Ci0gICAgICBjYWxlbmRhclRhcmdldCA9IGVsZW1lbnRzOwotICAgIGVsc2UKLSAgICB7Ci0gICAgICBjYWxlbmRhclRhcmdldFJvdyA9IGluZGV4OwotICAgICAgY2FsZW5kYXJUYXJnZXQgPSBlbGVtZW50cy5pdGVtKGluZGV4KTsKLSAgICB9Ci0gICAgdmFyIGxpbms7Ci0gICAgc3dpdGNoICh0eXBlKQotICAgIHsKLSAgICAgIGNhc2UgPCU9QWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEVfREFURSU+OgotICAgICAgICBsaW5rID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChPcGVuQ2FsZW5kYXJCcm93c2VyQWN0aW9uLmdldEFjdGlvbkxpbmtGb3JEYXRlKHNlc3Npb25JZCkpKSU+IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDwlPUFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0RBVEVUSU1FJT46Ci0gICAgICAgIGxpbmsgPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5DYWxlbmRhckJyb3dzZXJBY3Rpb24uZ2V0QWN0aW9uTGlua0ZvckRhdGVUaW1lKHNlc3Npb25JZCkpKSU+IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDwlPUFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFX0dZRUFSTU9OVEglPjoKLSAgICAgICAgbGluayA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoT3BlbkNhbGVuZGFyQnJvd3NlckFjdGlvbi5nZXRBY3Rpb25MaW5rRm9yR1llYXJNb250aChzZXNzaW9uSWQpKSklPiI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA8JT1BY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRV9HREFZJT46Ci0gICAgICAgIGxpbmsgPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5DYWxlbmRhckJyb3dzZXJBY3Rpb24uZ2V0QWN0aW9uTGlua0ZvckdEYXkoc2Vzc2lvbklkKSkpJT4iOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgPCU9QWN0aW9uSW5wdXRzLkNBTEVOREFSX1RZUEVfR01PTlRIREFZJT46Ci0gICAgICAgIGxpbmsgPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5DYWxlbmRhckJyb3dzZXJBY3Rpb24uZ2V0QWN0aW9uTGlua0ZvckdNb250aERheShzZXNzaW9uSWQpKSklPiI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYWxlbmRhckJyb3dzZXIgPSB3aW5kb3cub3BlbihsaW5rLCJjYWxlbmRhckJyb3dzZXIiLCJoZWlnaHQ9MzUwLHdpZHRoPTI2NCxzdGF0dXM9eWVzLHNjcm9sbGJhcnM9eWVzLHJlc2l6YWJsZT15ZXMiKTsKLSAgICBpZiAoY2FsZW5kYXJCcm93c2VyLmZvY3VzKQotICAgICAgY2FsZW5kYXJCcm93c2VyLmZvY3VzKCk7Ci0gIH0KLQotICBmdW5jdGlvbiBjbG9zZUNhbGVuZGFyQnJvd3NlcigpCi0gIHsKLSAgICBpZiAoIWNhbGVuZGFyQnJvd3NlckNsb3NlZCkKLSAgICAgIGNhbGVuZGFyQnJvd3Nlci5jbG9zZSgpOwotICB9Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvc2NyaXB0cy9mb3Jtc3VibWl0LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvc2NyaXB0cy9mb3Jtc3VibWl0LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IzYjRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvZm9ybXN1Ym1pdC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdmFyIHJlcXVlc3RTdWJtaXR0ZWQgPSBmYWxzZTsKLQotICBmdW5jdGlvbiBoYW5kbGVTdWJtaXQoZm9ybSkKLSAgewotICAgIGlmIChyZXF1ZXN0U3VibWl0dGVkKQotICAgIHsKLSAgICAgIGFsZXJ0KCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfU1VCTUlUX0lOX1BST0dSRVNTIikpJT4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmVxdWVzdFN1Ym1pdHRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBmdW5jdGlvbiByZXNldFN1Ym1pc3Npb24oKQotICB7Ci0gICAgcmVxdWVzdFN1Ym1pdHRlZCA9IGZhbHNlOwotICB9Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvc2NyaXB0cy9mb3JtdXRpbHMuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL2Zvcm11dGlscy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZWM4MDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL2Zvcm11dGlscy5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiICU+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICA8JS8vIFJlcXVpcmVzIGJyb3dzZXJkZXRlY3QuanMlPgotICBmdW5jdGlvbiBjcmVhdGVIaWRkZW5FbGVtZW50KGVsZW1lbnROYW1lLHZhbHVlKQotICB7Ci0gICAgdmFyIGhpZGRlbklucHV0OwotICAgIGlmIChlbGVtZW50TmFtZS5sZW5ndGggPiAwKQotICAgIHsKLSAgICAgIGlmIChpc01pY3Jvc29mdEludGVybmV0RXhwbG9yZXIoKSkKLSAgICAgICAgaGlkZGVuSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCI8aW5wdXQgbmFtZT0nIitlbGVtZW50TmFtZSsiJz4iKTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaGlkZGVuSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAgICBoaWRkZW5JbnB1dC5zZXRBdHRyaWJ1dGUoIm5hbWUiLGVsZW1lbnROYW1lKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgICAgaGlkZGVuSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgIGhpZGRlbklucHV0LnR5cGUgPSAiaGlkZGVuIjsKLSAgICBoaWRkZW5JbnB1dC52YWx1ZSA9IHZhbHVlOwotICAgIHJldHVybiBoaWRkZW5JbnB1dDsKLSAgfQotCi0gIGZ1bmN0aW9uIHJlc2V0Rm9ybUlucHV0cygpCi0gIHsKLSAgICBkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKTsKLSAgfQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvcGFuZXMuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3BhbmVzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE2OWMyYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvcGFuZXMuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHZhciBwZXJzcGVjdGl2ZVdvcmtBcmVhID0gdG9wLmZyYW1lc1siPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Il07Ci0gIHZhciBwZXJzcGVjdGl2ZVRvb2xiYXIgPSB0b3AuZnJhbWVzWyI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1RPT0xCQVIlPiJdOwotICB2YXIgcGVyc3BlY3RpdmVDb250ZW50ID0gdG9wLmZyYW1lc1siPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9DT05URU5UJT4iXTsKLQotICBmdW5jdGlvbiBnZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldCgpCi0gIHsKLSAgICByZXR1cm4gcGVyc3BlY3RpdmVDb250ZW50LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmcmFtZXNldCIpLml0ZW0oMCk7Ci0gIH0KLQotICBmdW5jdGlvbiB0b2dnbGVEb3VibGVDbGlja0NvbHVtblRpdGxlKCkKLSAgewotICAgIHZhciBkb3VibGVDbGlja0NvbHVtbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb3VibGVjbGlja2NvbHVtbiIpOwotICAgIGlmIChkb3VibGVDbGlja0NvbHVtbiA9PSBudWxsKQotICAgICAgcmV0dXJuOwotPCUKLSAgIFN0cmluZyBqc0FsdFJlc3RvcmUgPSBIVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX1JFU1RPUkUiKSk7Ci0lPgotICAgIGlmIChkb3VibGVDbGlja0NvbHVtbi50aXRsZSA9PSAiPCU9anNBbHRSZXN0b3JlJT4iKQotICAgICAgZG91YmxlQ2xpY2tDb2x1bW4udGl0bGUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0RPVUJMRV9DTElDS19UT19NQVhJTUlaRSIpKSU+IjsKLSAgICBlbHNlCi0gICAgICBkb3VibGVDbGlja0NvbHVtbi50aXRsZSA9ICI8JT1qc0FsdFJlc3RvcmUlPiI7Ci0gIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3Jlc3VtZXByb3h5bG9hZHBhZ2UuanMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvcmVzdW1lcHJveHlsb2FkcGFnZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVlMTU0OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvcmVzdW1lcHJveHlsb2FkcGFnZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0vLyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLS8vIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0vLyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotLy8gCi0vLyBDb250cmlidXRvcnM6Ci0vLyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0vLwotCi1mdW5jdGlvbiByZXN1bWVQcm94eUxvYWRQYWdlKCkKLXsKLSAgdmFyIHByb3h5UGFnZSA9IHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJveHlQYWdlIik7Ci0gIHByb3h5UGFnZS5zZXRBdHRyaWJ1dGUoInJvd3MiLCAiMCwxMDAlIik7Ci0gIHBhcmVudC5mcmFtZXNbMF0uaGFuZGxlQ29tcGxldGlvbigpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3N3aXRjaHBlcnNwZWN0aXZlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvc2NyaXB0cy9zd2l0Y2hwZXJzcGVjdGl2ZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhYWMxOTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3N3aXRjaHBlcnNwZWN0aXZlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotCi08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLQotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBwZXJzcGVjdGl2ZUNvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGNvbnRyb2xsZXIuZ2V0Q3VycmVudFBlcnNwZWN0aXZlKCkuZ2V0UGVyc3BlY3RpdmVDb250ZW50UGFnZSgpKSklPiI7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvc2NyaXB0cy90YWJsZXMuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3RhYmxlcy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YTI0ZWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3RhYmxlcy5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHZhciBudW1iZXJPZkhlYWRlclJvd3MgPSAxOwotICBmdW5jdGlvbiBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHJldHVybiBjb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRhYmxlIikuaXRlbSgwKTsKLSAgfQotCi0gIGZ1bmN0aW9uIHNldFNlbGVjdChzZWxlY3QsdmFsdWUpCi0gIHsKLSAgICBmb3IgKHZhciBpPTA7aTxzZWxlY3Qub3B0aW9ucy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIGlmIChzZWxlY3Qub3B0aW9uc1tpXS52YWx1ZSA9PSB2YWx1ZSkKLSAgICAgIHsKLSAgICAgICAgc2VsZWN0LnNlbGVjdGVkSW5kZXggPSBpOwotICAgICAgICByZXR1cm4gc2VsZWN0Lm9wdGlvbnNbaV0udGV4dDsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiByZW1vdmVTZWxlY3RlZFJvd3ModGFibGVDb250YWluZXJJZCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciByb3dDaGVja2JveCA9IHRhYmxlLnJvd3NbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKTsKLSAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgewotICAgICAgICB0YWJsZS5kZWxldGVSb3coaSk7Ci0gICAgICAgIGktLTsKLSAgICAgIH0KLSAgICB9Ci0gICAgdmFyIGNoZWNrQWxsQ2hlY2tib3hSb3cgPSB0YWJsZS5yb3dzWzBdOwotICAgIHZhciBjaGVja0FsbENoZWNrYm94ID0gY2hlY2tBbGxDaGVja2JveFJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgIGlmIChjaGVja0FsbENoZWNrYm94LmNoZWNrZWQpCi0gICAgICBjaGVja0FsbENoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTsKLSAgfQotCi0gIGZ1bmN0aW9uIGhhbmRsZVJvd0NoZWNrYm94Q2xpY2soZSkKLSAgewotICAgIHZhciBjaGVja2JveDsKLSAgICBpZiAoaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKCkpCi0gICAgICBjaGVja2JveCA9IGV2ZW50LnNyY0VsZW1lbnQ7Ci0gICAgZWxzZQotICAgICAgY2hlY2tib3ggPSBlLnRhcmdldDsKLSAgICB2YXIgY2VsbCA9IGNoZWNrYm94LnBhcmVudE5vZGU7Ci0gICAgdmFyIHJvdyA9IGNlbGwucGFyZW50Tm9kZTsKLSAgICBpZiAoY2hlY2tib3guY2hlY2tlZCkKLSAgICAgIGhpZ2hsaWdodFJvdyhyb3csInJvd2NvbG9yIik7Ci0gICAgZWxzZQotICAgICAgaGlnaGxpZ2h0Um93KHJvdywidGFibGVjZWxscyIpOwotCi0gICAgdmFyIHRib2R5ID0gcm93LnBhcmVudE5vZGU7Ci0gICAgdmFyIHRhYmxlID0gdGJvZHkucGFyZW50Tm9kZTsKLSAgICB2YXIgY2hlY2tBbGxDaGVja2JveCA9IHRhYmxlLnJvd3NbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKTsKLSAgICBpZiAoY2hlY2tBbGxDaGVja2JveC5jaGVja2VkKQotICAgICAgY2hlY2tBbGxDaGVja2JveC5jaGVja2VkID0gZmFsc2U7Ci0gIH0KLQotICBmdW5jdGlvbiBjcmVhdGVSb3dDaGVja2JveCgpCi0gIHsKLSAgICB2YXIgcm93Q2hlY2tib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgIHJvd0NoZWNrYm94LnNldEF0dHJpYnV0ZSgibmFtZSIscm93Q2hlY2tib3hOYW1lKTsKLSAgICByb3dDaGVja2JveC50eXBlID0gImNoZWNrYm94IjsKLSAgICByb3dDaGVja2JveC50aXRsZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1JPV19DSEVDS19CT1giKSklPiI7Ci0gICAgcm93Q2hlY2tib3gub25jbGljayA9IGhhbmRsZVJvd0NoZWNrYm94Q2xpY2s7Ci0gICAgcmV0dXJuIHJvd0NoZWNrYm94OwotICB9Ci0KLSAgZnVuY3Rpb24gaGFuZGxlQ2hlY2tBbGxDbGljayh0YWJsZUNvbnRhaW5lcklkLGNoZWNrQWxsQ2hlY2tib3gpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBmb3IgKHZhciBpPW51bWJlck9mSGVhZGVyUm93cztpPHRhYmxlLnJvd3MubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgcm93Q2hlY2tib3hDZWxsID0gdGFibGUucm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKS5pdGVtKDApOwotICAgICAgdmFyIHJvd0NoZWNrYm94ID0gcm93Q2hlY2tib3hDZWxsLmNoaWxkTm9kZXNbMF07Ci0gICAgICByb3dDaGVja2JveC5jaGVja2VkID0gY2hlY2tBbGxDaGVja2JveC5jaGVja2VkOwotICAgICAgaWYgKHJvd0NoZWNrYm94LmNoZWNrZWQpCi0gICAgICAgIGhpZ2hsaWdodFJvdyh0YWJsZS5yb3dzW2ldLCJyb3djb2xvciIpOwotICAgICAgZWxzZQotICAgICAgICBoaWdobGlnaHRSb3codGFibGUucm93c1tpXSwidGFibGVjZWxscyIpOwotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIGhpZ2hsaWdodFJvdyhyb3csY2xhc3NOYW1lKQotICB7Ci0gICAgdmFyIHJvd0NvbHVtbnMgPSByb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgZm9yICh2YXIgaT0xO2k8cm93Q29sdW1ucy5sZW5ndGg7aSsrKQotICAgICAgcm93Q29sdW1ucy5pdGVtKGkpLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKLSAgfQotCi0gIGZ1bmN0aW9uIGhpZ2hsaWdodEVycmFudFJvdyhyb3csY2xhc3NOYW1lKQotICB7Ci0gICAgdmFyIHJvd0NvbHVtbnMgPSByb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgdmFyIGNvbHVtbjAgPSByb3dDb2x1bW5zLml0ZW0oMCk7Ci0gICAgdmFyIGNvbHVtbjBDb250cm9sID0gY29sdW1uMC5jaGlsZE5vZGVzWzBdOwotICAgIHZhciBzdGFydDsKLSAgICBpZiAoY29sdW1uMENvbnRyb2wudHlwZSA9PSAiY2hlY2tib3giKQotICAgIHsKLSAgICAgIGNvbHVtbjBDb250cm9sLmNoZWNrZWQgPSB0cnVlOwotICAgICAgcm93Q29sdW1ucy5pdGVtKDEpLmNsYXNzTmFtZSA9ICJmaXJzdGNvbHVtbmVycmFudHJvd2NvbG9yIjsKLSAgICAgIHN0YXJ0ID0gMjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGNvbHVtbjAuY2xhc3NOYW1lID0gImZpcnN0Y29sdW1uZXJyYW50cm93Y29sb3IiOwotICAgICAgc3RhcnQgPSAxOwotICAgIH0KLSAgICByb3dDb2x1bW5zLml0ZW0ocm93Q29sdW1ucy5sZW5ndGgtMSkuY2xhc3NOYW1lID0gImxhc3Rjb2x1bW5lcnJhbnRyb3djb2xvciI7Ci0gICAgZm9yICh2YXIgaT1zdGFydDtpPHJvd0NvbHVtbnMubGVuZ3RoLTE7aSsrKQotICAgICAgcm93Q29sdW1ucy5pdGVtKGkpLmNsYXNzTmFtZSA9ICJtaWRkbGVlcnJhbnRyb3djb2xvciI7Ci0gIH0KLQotICBmdW5jdGlvbiB0d2lzdCh0YWJsZUNvbnRhaW5lcklkLHR3aXN0SW1hZ2VOYW1lKQotICB7Ci0gICAgdmFyIHRhYmxlQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHR3aXN0SW1hZ2UgPSBkb2N1bWVudC5pbWFnZXNbdHdpc3RJbWFnZU5hbWVdOwotICAgIGlmICh0YWJsZUNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID09ICJub25lIikKLSAgICB7Ci0gICAgICB0YWJsZUNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgICB0d2lzdEltYWdlLnNyYyA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdG9wZW5lZC5naWYiKSklPiI7Ci0gICAgICB0d2lzdEltYWdlLmFsdCA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfT1BFTkVEIikpJT4iOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgdGFibGVDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICAgIHR3aXN0SW1hZ2Uuc3JjID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IjsKLSAgICAgIHR3aXN0SW1hZ2UuYWx0ID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSklPiI7Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gdHdpc3RPcGVuKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVDb250YWluZXJJZCkuc3R5bGUuZGlzcGxheSA9PSAibm9uZSIpCi0gICAgICB0d2lzdCh0YWJsZUNvbnRhaW5lcklkLCJ4Iit0YWJsZUNvbnRhaW5lcklkKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGdldERlZmF1bHREaXNwbGF5U3RyaW5nKGlucHV0VmFsdWUpCi0gIHsKLSAgICBpZiAoaW5wdXRWYWx1ZSA9PSBudWxsIHx8IGlucHV0VmFsdWUubGVuZ3RoIDwgMSkKLSAgICAgIHJldHVybiAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiVEFCTEVfQkxBTktfUExBQ0VIT0xERVIiKSklPiI7Ci0gICAgcmV0dXJuIGlucHV0VmFsdWU7Ci0gIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3Rvb2xiYXIuanMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvdG9vbGJhci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFiMWIyZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvdG9vbGJhci5qcworKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0vLyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLS8vIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0vLyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotLy8gCi0vLyBDb250cmlidXRvcnM6Ci0vLyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0vLwotCi1mdW5jdGlvbiBtb3VzZW92ZXIoaW1nKQotewotICBpbWcuY2xhc3NOYW1lID0gImhvdmVyIjsKLX0KLQotZnVuY3Rpb24gbW91c2VvdXQoaW1nKQotewotICBpbWcuY2xhc3NOYW1lID0gIm5vcm1hbCI7Ci19Ci0KLWZ1bmN0aW9uIG1vdXNlZG93bihpbWcpCi17Ci0gIGltZy5jbGFzc05hbWUgPSAiZG93biI7Ci19Ci0KLWZ1bmN0aW9uIG1vdXNldXAoaW1nKQotewotICByZXR1cm4gbW91c2VvdXQoaW1nKTsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvdHJlZXZpZXcuanMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3NjcmlwdHMvdHJlZXZpZXcuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlODQzZmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3RyZWV2aWV3LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLS8vIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotLy8gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLS8vIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0vLyAKLS8vIENvbnRyaWJ1dG9yczoKLS8vICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLS8vCi0KLS8vIFJlcXVpcmVzIGJyb3dzZXJkZXRlY3QuanMKLQotdmFyIHNlbGVjdGVkQW5jaG9yTmFtZSA9ICIiOwotCi1mdW5jdGlvbiBzZXRTZWxlY3RlZEFuY2hvck5hbWUoYW5jaG9yTmFtZSkKLXsKLSAgc2VsZWN0ZWRBbmNob3JOYW1lID0gYW5jaG9yTmFtZTsKLX0KLQotZnVuY3Rpb24gc2VsZWN0Tm9kZShhbmNob3JOYW1lLG9wZW5JbWFnZVBhdGgpCi17Ci0gIHZhciBpc0lFID0gaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKCk7Ci0gIGlmIChzZWxlY3RlZEFuY2hvck5hbWUubGVuZ3RoID4gMCkKLSAgewotICAgIHZhciBzZWxlY3RlZEFuY2hvcjsKLSAgICBpZiAoaXNJRSkKLSAgICAgIHNlbGVjdGVkQW5jaG9yID0gZG9jdW1lbnQuYW5jaG9ycyhzZWxlY3RlZEFuY2hvck5hbWUpOwotICAgIGVsc2UKLSAgICAgIHNlbGVjdGVkQW5jaG9yID0gZG9jdW1lbnQuYW5jaG9yc1tzZWxlY3RlZEFuY2hvck5hbWVdOwotICAgIGlmIChzZWxlY3RlZEFuY2hvcikKLSAgICAgIHNlbGVjdGVkQW5jaG9yLmNsYXNzTmFtZSA9ICJ1bnNlbGVjdGVkVGV4dEFuY2hvciI7Ci0gIH0KLSAgaWYgKGFuY2hvck5hbWUuaW5kZXhPZigiLTEiKSA9PSAtMSkKLSAgewotICAgIGlmIChpc0lFKQotICAgICAgZG9jdW1lbnQuYW5jaG9ycyhhbmNob3JOYW1lKS5jbGFzc05hbWUgPSAic2VsZWN0ZWRUZXh0QW5jaG9yIjsKLSAgICBlbHNlCi0gICAgICBkb2N1bWVudC5hbmNob3JzW2FuY2hvck5hbWVdLmNsYXNzTmFtZSA9ICJzZWxlY3RlZFRleHRBbmNob3IiOwotICAgIHNldFNlbGVjdGVkQW5jaG9yTmFtZShhbmNob3JOYW1lKTsKLSAgICBhbHRlckltYWdlKGFuY2hvck5hbWUsb3BlbkltYWdlUGF0aCk7Ci0gIH0KLSAgZWxzZQotICAgIHNldFNlbGVjdGVkQW5jaG9yTmFtZSgiIik7Ci19Ci0KLWZ1bmN0aW9uIGFsdGVySW1hZ2UoaW1hZ2VOYW1lLGltYWdlUGF0aCkKLXsKLSAgZG9jdW1lbnQuaW1hZ2VzW2ltYWdlTmFtZV0uc3JjID0gaW1hZ2VQYXRoOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3dzZGxicm93c2VyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvc2NyaXB0cy93c2RsYnJvd3Nlci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNDVhN2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci9zY3JpcHRzL3dzZGxicm93c2VyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFN0cmluZyBzZXNzaW9uSWQgPSBzZXNzaW9uLmdldElkKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHZhciB3c2RsV2luZG93OwotICB2YXIgd3NkbFdpbmRvd0Nsb3NlZCA9IHRydWU7Ci0gIHZhciB0YXJnZXRXU0RMVVJMRWxlbWVudDsKLSAgZnVuY3Rpb24gb3BlbldTRExCcm93c2VyKGZvcm1Db250YWluZXJJZCx0eXBlKQotICB7Ci0gICAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmb3JtQ29udGFpbmVySWQpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIikuaXRlbSgwKTsKLSAgICB0YXJnZXRXU0RMVVJMRWxlbWVudCA9IGZvcm0uPCU9QWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMJT47Ci0gICAgdmFyIGxpbms7Ci0gICAgc3dpdGNoICh0eXBlKQotICAgIHsKLSAgICAgIGNhc2UgPCU9QWN0aW9uSW5wdXRzLldTRExfVFlQRV9TRVJWSUNFJT46Ci0gICAgICAgIGxpbmsgPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5XU0RMQnJvd3NlckFjdGlvbi5nZXRBY3Rpb25MaW5rRm9yU2VydmljZShzZXNzaW9uSWQpKSklPiI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA8JT1BY3Rpb25JbnB1dHMuV1NETF9UWVBFX1NFUlZJQ0VfSU5URVJGQUNFJT46Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBsaW5rID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChPcGVuV1NETEJyb3dzZXJBY3Rpb24uZ2V0QWN0aW9uTGlua0ZvclNlcnZpY2VJbnRlcmZhY2Uoc2Vzc2lvbklkKSkpJT4iOwotICAgIH0KLSAgICB3c2RsV2luZG93ID0gd2luZG93Lm9wZW4obGluaywid3NkbFdpbmRvdyIsImhlaWdodD0zMDAsd2lkdGg9NDUwLHN0YXR1cz15ZXMsc2Nyb2xsYmFycz15ZXMscmVzaXphYmxlPXllcyIpOwotICAgIGlmICh3c2RsV2luZG93LmZvY3VzKQotICAgICAgd3NkbFdpbmRvdy5mb2N1cygpOwotICB9Ci0KLSAgZnVuY3Rpb24gY2xvc2VXU0RMQnJvd3NlcigpCi0gIHsKLSAgICBpZiAoIXdzZGxXaW5kb3dDbG9zZWQpCi0gICAgICB3c2RsV2luZG93LmNsb3NlKCk7Ci0gIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0FkZEl0ZW1zVG9GYXZvcml0ZXNBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQWRkSXRlbXNUb0Zhdm9yaXRlc0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZTBmMzkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQWRkSXRlbXNUb0Zhdm9yaXRlc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBBZGRJdGVtc1RvRmF2b3JpdGVzQWN0aW9uIGFjdGlvbiA9IG5ldyBBZGRJdGVtc1RvRmF2b3JpdGVzQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBwcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLSAgc3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9BZGRQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0FkZFB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTlhNGZiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0FkZFB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgQWRkUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbiBhY3Rpb24gPSBuZXcgQWRkUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgaWYgKGlucHV0c1ZhbGlkKQotICAgewotICAgICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotICAgfQotJT4KLQotICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgIHByb3BlcnRpZXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICBzdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICA8L3NjcmlwdD4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQWRkVG9GYXZvcml0ZXNBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQWRkVG9GYXZvcml0ZXNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWY3YjRhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0FkZFRvRmF2b3JpdGVzQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLkFkZFRvRmF2b3JpdGVzQWN0aW9uIiU+Ci0KLQotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIEFkZFRvRmF2b3JpdGVzQWN0aW9uIGFjdGlvbiA9IG5ldyBBZGRUb0Zhdm9yaXRlc0FjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgcHJvcGVydGllc0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiI7Ci0gIHN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQnVzUHVibGlzaFNlcnZpY2VBZHZhbmNlZEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9CdXNQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M2ZjJmNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9CdXNQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uCi0gICBCdXNQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uIGFjdGlvbiA9IG5ldyBCdXNQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICBpZiAoIWFjdGlvbi5pc1N1YlF1ZXJ5SW5pdGlhdGVkKCkpCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwlCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9MYXVuY2hTdWJRdWVyeUFjdGlvbi5pbmMiICU+Ci08JQotICAgfQotJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0J1c1B1Ymxpc2hTZXJ2aWNlU2ltcGxlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0J1c1B1Ymxpc2hTZXJ2aWNlU2ltcGxlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg3ZWYwZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9CdXNQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIEJ1c1B1Ymxpc2hTZXJ2aWNlU2ltcGxlQWN0aW9uIGFjdGlvbiA9IG5ldyBCdXNQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9hY3Rpb25zL05ld05vZGVBY3Rpb24uaW5jIiAlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQnVzaW5lc3NHZXRTZXJ2aWNlc0FjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9CdXNpbmVzc0dldFNlcnZpY2VzQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VlNWQyNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9CdXNpbmVzc0dldFNlcnZpY2VzQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBCdXNpbmVzc0dldFNlcnZpY2VzQWN0aW9uIGFjdGlvbiA9IG5ldyBCdXNpbmVzc0dldFNlcnZpY2VzQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICBib29sZWFuIGJ1c2luZXNzRXhpc3RzID0gYWN0aW9uLnZhbGlkYXRlQnVzaW5lc3MoKTsKLQotICAgaWYgKCFidXNpbmVzc0V4aXN0cykKLSAgIHsKLSAgICAgaW50IG5vZGVJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykoYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKS5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpKTsKLSAgICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGlmIChjb25maXJtKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19RVUVTVElPTl9SRU1PVkVfQlVTSU5FU1NfTk9ERSIpKSU+IikpCi0gICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoQ2xlYXJOYXZpZ2F0b3JOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkKSkpJT4iOwotPC9zY3JpcHQ+Ci08JQotICAgfQotICAgZWxzZQotICAgewotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08JQotICAgfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0NoZWNrRmF2b3JpdGVFeGlzdHNBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQ2hlY2tGYXZvcml0ZUV4aXN0c0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZDFlNDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQ2hlY2tGYXZvcml0ZUV4aXN0c0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLkFkZFRvRmF2b3JpdGVzQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiU+Ci0KLQotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL0FkZFRvRmF2b3JpdGVzQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij4KLTwlCi1FbnVtZXJhdGlvbiBwYXJhbU5hbWVzID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXJOYW1lcygpOwotd2hpbGUgKHBhcmFtTmFtZXMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgU3RyaW5nIHBhcmFtTmFtZSA9IChTdHJpbmcpcGFyYW1OYW1lcy5uZXh0RWxlbWVudCgpOwotICBTdHJpbmdbXSBwYXJhbVZhbHVlcyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyVmFsdWVzKHBhcmFtTmFtZSk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1WYWx1ZXMubGVuZ3RoOyBpKyspIHsKLSU+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9cGFyYW1OYW1lJT4iIHZhbHVlPSI8JT1wYXJhbVZhbHVlc1tpXSU+Ij4KLTwlCi0gIH0KLX0KLSU+Ci08L2Zvcm0+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi1BZGRUb0Zhdm9yaXRlc0FjdGlvbiBhY3Rpb24gPSBuZXcgQWRkVG9GYXZvcml0ZXNBY3Rpb24oY29udHJvbGxlcik7Ci0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci1pZiAoYWN0aW9uLmZhdm9yaXRlRXhpc3RzKCkpIHsKLSU+Ci0gIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIGlmIChjb25maXJtKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlKCJNU0dfUVVFU1RJT05fT1ZFUldSSVRFX0ZBVk9SSVRFUyIpKSU+IikpCi0gICAgICBkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsKLSAgPC9zY3JpcHQ+Ci08JQotfQotZWxzZSB7Ci0lPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsKLSAgPC9zY3JpcHQ+Ci08JQotfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yTm9kZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9DbGVhck5hdmlnYXRvck5vZGVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWRlYzQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yTm9kZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgQ2xlYXJOYXZpZ2F0b3JOb2RlQWN0aW9uIGFjdGlvbjsKLSAgIGlmIChzZWxlY3RlZE5vZGUgaW5zdGFuY2VvZiBGb2xkZXJOb2RlKQotICAgICBhY3Rpb24gPSBuZXcgQ2xlYXJOYXZpZ2F0b3JGb2xkZXJOb2RlQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgZWxzZQotICAgICBhY3Rpb24gPSBuZXcgQ2xlYXJOYXZpZ2F0b3JOb2RlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBUaGUgYWN0aW9uIG1heSBiZSBleGVjdXRlZCBwcm9ncmFtbWVkIGxpbmsuCi0gICBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotICAgCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgIAotICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvQ2xlYXJOb2RlQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yTm9kZXNBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQ2xlYXJOYXZpZ2F0b3JOb2Rlc0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNzdjYTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQ2xlYXJOYXZpZ2F0b3JOb2Rlc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgQ2xlYXJOYXZpZ2F0b3JOb2Rlc0FjdGlvbiBhY3Rpb24gPSBuZXcgQ2xlYXJOYXZpZ2F0b3JOb2Rlc0FjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9hY3Rpb25zL05ld05vZGVBY3Rpb24uaW5jIiAlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQ29tcGxldGVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0NvbXBsZXRlUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMzE1NzUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvQ29tcGxldGVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIENvbXBsZXRlUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbiBhY3Rpb24gPSBuZXcgQ29tcGxldGVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICBpZiAoaW5wdXRzVmFsaWQpCi0gICB7Ci0gICAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKCk7Ci0gICB9Ci0lPgotCi0gICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgcHJvcGVydGllc0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgIHN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLSAgIDwvc2NyaXB0PgotCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9MYXVuY2hTdWJRdWVyeUFjdGlvbi5pbmMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9MYXVuY2hTdWJRdWVyeUFjdGlvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzYmZlZTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvTGF1bmNoU3ViUXVlcnlBY3Rpb24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JQotICAgU3RyaW5nIHN1YlF1ZXJ5S2V5ID0gYWN0aW9uLmdldFN1YlF1ZXJ5S2V5KCk7Ci0gICBTdHJpbmdCdWZmZXIgbmV3U3ViUXVlcnlLZXkgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICBpZiAoc3ViUXVlcnlLZXkgIT0gbnVsbCAmJiBzdWJRdWVyeUtleS5sZW5ndGgoKSA+IDApCi0gICAgIG5ld1N1YlF1ZXJ5S2V5LmFwcGVuZChhY3Rpb24uZ2V0U3ViUXVlcnlLZXkoKSkuYXBwZW5kKCc6Jyk7Ci0gICBuZXdTdWJRdWVyeUtleS5hcHBlbmQoYWN0aW9uLmdldE5ld1N1YlF1ZXJ5KCkpOwotICAgRm9ybVRvb2wgZm9ybVRvb2wgPSAoRm9ybVRvb2wpYWN0aW9uLmdldFNlbGVjdGVkRm9ybVRvb2woKTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBwYXJlbnRGb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5KTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBzdWJRdWVyeUZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMobmV3U3ViUXVlcnlLZXkudG9TdHJpbmcoKSk7Ci0gICBTdHJpbmcgbmV3U3ViUXVlcnlJdGVtU3RyaW5nID0gYWN0aW9uLmdldE5ld1N1YlF1ZXJ5SXRlbSgpOwotICAgc3ViUXVlcnlGb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTSxuZXdTdWJRdWVyeUl0ZW1TdHJpbmcpOwotICAgc3ViUXVlcnlGb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfR0VULG5ldyBCb29sZWFuKGFjdGlvbi5pc1N1YlF1ZXJ5R2V0KCkpKTsKLSAgIAotICAgLy8gQWx3YXlzIGluaXRpYWxpemUgdGhlIHF1ZXJ5IG5hbWUgc28gdGhlIHN1YnF1ZXJ5IG1ha2VzIHNlbnNlLgotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBTdHJpbmcgcGFyZW50UXVlcnlOYW1lID0gKFN0cmluZylwYXJlbnRGb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSk7Ci0gICBpZiAocGFyZW50UXVlcnlOYW1lID09IG51bGwpCi0gICAgIHBhcmVudFF1ZXJ5TmFtZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJERUZBVUxUX1FVRVJZX05BTUUiKTsKLSAgIGludCBuZXdTdWJRdWVyeUl0ZW0gPSBJbnRlZ2VyLnBhcnNlSW50KG5ld1N1YlF1ZXJ5SXRlbVN0cmluZyk7Ci0gICBTdHJpbmcgbmV3U3ViUXVlcnlJdGVtVHlwZVN0cmluZyA9IG51bGw7Ci0gICBzd2l0Y2ggKG5ld1N1YlF1ZXJ5SXRlbSkKLSAgIHsKLSAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUzoKLSAgICAgICBuZXdTdWJRdWVyeUl0ZW1UeXBlU3RyaW5nID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0JVU0lORVNTRVMiKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVM6Ci0gICAgICAgbmV3U3ViUXVlcnlJdGVtVHlwZVN0cmluZyA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9TRVJWSUNFUyIpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVM6Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgbmV3U3ViUXVlcnlJdGVtVHlwZVN0cmluZyA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9TRVJWSUNFX0lOVEVSRkFDRVMiKTsKLSAgIH0KLSAgIFN0cmluZ1tdIG1lc3NhZ2VQYXJhbWV0ZXJzID0ge3BhcmVudFF1ZXJ5TmFtZSxuZXdTdWJRdWVyeUl0ZW1UeXBlU3RyaW5nfTsKLSAgIHN1YlF1ZXJ5Rm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkRFRkFVTFRfU1VCUVVFUllfTkFNRSIsbWVzc2FnZVBhcmFtZXRlcnMpKTsKLSAgIAotICAgTm9kZSBub2RlID0gYWN0aW9uLmdldFNlbGVjdGVkTmF2aWdhdG9yTm9kZSgpOwotICAgaW50IG5vZGVJZCA9IG5vZGUuZ2V0Tm9kZUlkKCk7Ci0gICBpbnQgdG9vbElkID0gbm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCk7Ci0gICBpbnQgdmlld0lkID0gbm9kZS5nZXRWaWV3SWQoKTsKLSAgIGludCB2aWV3VG9vbElkID0gbm9kZS5nZXRWaWV3VG9vbElkKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNlbGVjdEZpbmRUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkLHRvb2xJZCx2aWV3SWQsdmlld1Rvb2xJZCxuZXdTdWJRdWVyeUtleS50b1N0cmluZygpLGZhbHNlKSkpJT4iOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9Mb2dpbkFkdmFuY2VkQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0xvZ2luQWR2YW5jZWRBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjMzYjRiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0xvZ2luQWR2YW5jZWRBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMzY0NDkgYnJ1bnNzZW5AdXMuaWJtLmNvbSAtIFZpbmNlIEJydW5zc2VuICAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keT4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBMb2dpbkFkdmFuY2VkQWN0aW9uIGFjdGlvbiA9IG5ldyBMb2dpbkFkdmFuY2VkQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICBpZiAoIWFjdGlvbi5pc1N1YlF1ZXJ5SW5pdGlhdGVkKCkpCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwlCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9MYXVuY2hTdWJRdWVyeUFjdGlvbi5pbmMiICU+Ci08JQotICAgfQotJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0xvZ291dEFkdmFuY2VkQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL0xvZ291dEFkdmFuY2VkQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTljZTdhOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9Mb2dvdXRBZHZhbmNlZEFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyNyAgIDEzNjQ0OSBicnVuc3NlbkB1cy5pYm0uY29tIC0gVmluY2UgQnJ1bnNzZW4gIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiIgJT4KLQotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5PgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIExvZ291dEFkdmFuY2VkQWN0aW9uIGFjdGlvbiA9IG5ldyBMb2dvdXRBZHZhbmNlZEFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsgLy9hY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL01hbmFnZVJlZmVyZW5jZWRTZXJ2aWNlc0FjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9NYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDA0MDczLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL01hbmFnZVJlZmVyZW5jZWRTZXJ2aWNlc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIE1hbmFnZVJlZmVyZW5jZWRTZXJ2aWNlc0FjdGlvbiBhY3Rpb24gPSBuZXcgTWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICBpZiAoIWlucHV0c1ZhbGlkKQotICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBwcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLSAgc3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci08JQotICAgfQotICAgZWxzZQotICAgewotICAgICBpZiAoIWFjdGlvbi5pc1N1YlF1ZXJ5SW5pdGlhdGVkKCkpCi0gICAgIHsKLSAgICAgICBhY3Rpb24uZXhlY3V0ZSgpOwotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBwcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLSAgc3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci08JQotICAgICB9Ci0gICAgIGVsc2UKLSAgICAgewotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTGF1bmNoU3ViUXVlcnlBY3Rpb24uaW5jIiAlPgotPCUKLSAgICAgfQotICAgfQotJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL05ld05vZGVBY3Rpb24uaW5jIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmOWU0ODAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlCi0gICBpZiAoIWlucHV0c1ZhbGlkKQotICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBwcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLSAgc3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci08JQotICAgfQotICAgZWxzZQotICAgewotICAgICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0gICAgIGlmIChhY3Rpb25SZXN1bHQpCi0gICAgIHsKLSAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2VsZWN0ZWQgbm9kZSBpcyB2aXNpYmxlLgotICAgICAgIGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TmF2aWdhdG9yTWFuYWdlcigpLm1ha2VTZWxlY3RlZE5vZGVWaXNpYmxlKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGlmIChpc01pY3Jvc29mdEludGVybmV0RXhwbG9yZXIoKSkKLSAgewotICAgIG5hdmlnYXRvckNvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL25hdmlnYXRvcl9jb250ZW50LmpzcCIpKSU+IjsKLSAgICBwcm9wZXJ0aWVzQ29udGFpbmVyLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiKSklPiI7Ci0gICAgc3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICB9Ci0gIGVsc2UKLSAgICBwZXJzcGVjdGl2ZUNvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3VkZGlfcGVyc3BlY3RpdmVfY29udGVudC5qc3AiKSklPiI7Ci08L3NjcmlwdD4KLTwlCi0gICAgIH0KLSAgICAgZWxzZQotICAgICB7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHByb3BlcnRpZXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICBzdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci08L3NjcmlwdD4KLTwlCi0gICAgIH0KLSAgIH0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9PcGVuUmVnaXN0cnlBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvT3BlblJlZ2lzdHJ5QWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZjNzQzYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9PcGVuUmVnaXN0cnlBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLQotICAgT3BlblJlZ2lzdHJ5QWN0aW9uIGFjdGlvbiA9IG5ldyBPcGVuUmVnaXN0cnlBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZnJlc2hVRERJTm9kZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWZyZXNoVURESU5vZGVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGNiY2VhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZnJlc2hVRERJTm9kZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXV0aWxzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBSZWZyZXNoVURESU5vZGVBY3Rpb24gYWN0aW9uID0gbmV3IFJlZnJlc2hVRERJTm9kZUFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gVGhlIGFjdGlvbiBtYXkgYmUgZXhlY3V0ZWQgdmlhIHByb2dyYW0gbGluay4KLSAgIGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0gICBib29sZWFuIGlzTm9kZURhdGFWYWxpZCA9IGFjdGlvbi52ZXJpZnlOb2RlRGF0YSgpOwotCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gdHJ1ZTsKLSAgIFN0cmluZyBvbkxvYWRBY3Rpb247Ci0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gcHJvY2Vzc0NsZWFyTm9kZXNGb3JtKCkKLSAgewotICAgIHZhciBjbGVhck5vZGVzRm9ybSA9IGRvY3VtZW50LmZvcm1zWzBdOwotICAgIHZhciBzdWJtaXRDbGVhck5vZGVzRm9ybSA9IGZhbHNlOwotPCUKLSAgICAgVmVjdG9yIHN0YWxlTm9kZXMgPSBhY3Rpb24uZ2V0U3RhbGVOb2RlcygpOwotICAgICBmb3IgKGludCBpPTA7aTxzdGFsZU5vZGVzLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBOb2RlIHN0YWxlTm9kZSA9IChOb2RlKXN0YWxlTm9kZXMuZWxlbWVudEF0KGkpOwotJT4KLSAgICBpZiAoY29uZmlybSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfUVVFU1RJT05fUkVNT1ZFX05PREUiLHN0YWxlTm9kZS5nZXROb2RlTmFtZSgpKSklPiIpKQotICAgIHsKLSAgICAgIGNsZWFyTm9kZXNGb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPUFjdGlvbklucHV0cy5OT0RFSUQlPiIsPCU9c3RhbGVOb2RlLmdldE5vZGVJZCgpJT4pKTsKLSAgICAgIHN1Ym1pdENsZWFyTm9kZXNGb3JtID0gdHJ1ZTsKLSAgICB9Ci08JQotICAgICB9Ci0lPgotICAgIGlmIChzdWJtaXRDbGVhck5vZGVzRm9ybSkKLSAgICAgIGNsZWFyTm9kZXNGb3JtLnN1Ym1pdCgpOwotICB9Ci08L3NjcmlwdD4gICAgCi08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9DbGVhck5hdmlnYXRvck5vZGVzQWN0aW9uSlNQLmpzcCIpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KLTwvZm9ybT4KLTwlCi0gICBpZiAoIWlzTm9kZURhdGFWYWxpZCkKLSAgIHsKLSAgICAgaW50IG5vZGVJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykoYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKS5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpKTsKLSAgICAgU3RyaW5nIG5vZGVOYW1lID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKS5nZXROb2RlKG5vZGVJZCkuZ2V0Tm9kZU5hbWUoKTsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgaWYgKGNvbmZpcm0oIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX1FVRVNUSU9OX1JFTU9WRV9OT0RFIixub2RlTmFtZSkpJT4iKSkKLSAgICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChDbGVhck5hdmlnYXRvck5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQpKSklPiI7Ci08L3NjcmlwdD4gICAgCi08JQotICAgfQotICAgZWxzZQotICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBwcm9jZXNzQ2xlYXJOb2Rlc0Zvcm0oKTsKLTwvc2NyaXB0PgotPCVAIGluY2x1ZGUgZmlsZSA9ICIvdWRkaS9hY3Rpb25zL05ld05vZGVBY3Rpb24uaW5jIiAlPgotPCUKLSAgIH0KLSU+ICAgCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWZyZXNoVURESU5vZGVzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZnJlc2hVRERJTm9kZXNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2VmMzY3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZnJlc2hVRERJTm9kZXNBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm11dGlscy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgUmVmcmVzaFVERElOb2Rlc0FjdGlvbiBhY3Rpb24gPSBuZXcgUmVmcmVzaFVERElOb2Rlc0FjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSAgIAotICAgLy8gUnVuIHRoZSBhY3Rpb24KLSAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gcHJvY2Vzc0NsZWFyTm9kZXNGb3JtKCkKLSAgewotICAgIHZhciBjbGVhck5vZGVzRm9ybSA9IGRvY3VtZW50LmZvcm1zWzBdOwotPCUKLSAgICAgVmVjdG9yIHN0YWxlTm9kZXMgPSBhY3Rpb24uZ2V0U3RhbGVOb2RlcygpOwotICAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8c3RhbGVOb2Rlcy5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgTm9kZSBzdGFsZU5vZGUgPSAoTm9kZSlzdGFsZU5vZGVzLmVsZW1lbnRBdChpKTsKLSU+Ci0gICAgaWYgKGNvbmZpcm0oIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX1FVRVNUSU9OX1JFTU9WRV9OT0RFIixzdGFsZU5vZGUuZ2V0Tm9kZU5hbWUoKSkpJT4iKSkKLSAgICAgIGNsZWFyTm9kZXNGb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPUFjdGlvbklucHV0cy5OT0RFSUQlPiIsPCU9c3RhbGVOb2RlLmdldE5vZGVJZCgpJT4pKTsKLTwlICAgIAotICAgICB9Ci0lPgotICAgIGNsZWFyTm9kZXNGb3JtLnN1Ym1pdCgpOwotICB9ICAgICAgICAgCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL0NsZWFyTmF2aWdhdG9yTm9kZXNBY3Rpb25KU1AuanNwIikpJT4iIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPgotPC9mb3JtPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHByb2Nlc3NDbGVhck5vZGVzRm9ybSgpOwotPC9zY3JpcHQ+ICAKLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ0ZpbmRCdXNpbmVzc1VVSURBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzVVVJREFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYmM5ODMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzVVVJREFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFJlZ0ZpbmRCdXNpbmVzc1VVSURBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ0ZpbmRCdXNpbmVzc1VVSURBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ0ZpbmRCdXNpbmVzc2VzQWR2YW5jZWRBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzZXNBZHZhbmNlZEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYjQzY2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzZXNBZHZhbmNlZEFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFJlZ0ZpbmRCdXNpbmVzc2VzQWR2YW5jZWRBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ0ZpbmRCdXNpbmVzc2VzQWR2YW5jZWRBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgIGlmICghYWN0aW9uLmlzU3ViUXVlcnlJbml0aWF0ZWQoKSkKLSAgIHsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9hY3Rpb25zL05ld05vZGVBY3Rpb24uaW5jIiAlPgotPCUKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9hY3Rpb25zL0xhdW5jaFN1YlF1ZXJ5QWN0aW9uLmluYyIgJT4KLTwlCi0gICB9Ci0lPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzZXNTaW1wbGVBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZEJ1c2luZXNzZXNTaW1wbGVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmJlMWY4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ0ZpbmRCdXNpbmVzc2VzU2ltcGxlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgUmVnRmluZEJ1c2luZXNzZXNTaW1wbGVBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ0ZpbmRCdXNpbmVzc2VzU2ltcGxlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZUludGVyZmFjZVVVSURBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VVVUlEQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ3Mjc0OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZUludGVyZmFjZVVVSURBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBSZWdGaW5kU2VydmljZUludGVyZmFjZVVVSURBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlVVVJREFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9hY3Rpb25zL05ld05vZGVBY3Rpb24uaW5jIiAlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGVkYzhmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICBpZiAoIWFjdGlvbi5pc1N1YlF1ZXJ5SW5pdGlhdGVkKCkpCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwlCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9MYXVuY2hTdWJRdWVyeUFjdGlvbi5pbmMiICU+Ci08JQotICAgfQotJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NpbXBsZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZUludGVyZmFjZXNTaW1wbGVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmZmMWJiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NpbXBsZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFJlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NpbXBsZUFjdGlvbiBhY3Rpb24gPSBuZXcgUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzU2ltcGxlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZVVVSURBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VVVUlEQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM2MzhkNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZVVVSURBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBSZWdGaW5kU2VydmljZVVVSURBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ0ZpbmRTZXJ2aWNlVVVJREFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9hY3Rpb25zL05ld05vZGVBY3Rpb24uaW5jIiAlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VzQWR2YW5jZWRBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VzQWR2YW5jZWRBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzA2MmMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlc0FkdmFuY2VkQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiIgJT4KLQotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgUmVnRmluZFNlcnZpY2VzQWR2YW5jZWRBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ0ZpbmRTZXJ2aWNlc0FkdmFuY2VkQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICBpZiAoIWFjdGlvbi5pc1N1YlF1ZXJ5SW5pdGlhdGVkKCkpCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwlCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9MYXVuY2hTdWJRdWVyeUFjdGlvbi5pbmMiICU+Ci08JQotICAgfQotJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlc1NpbXBsZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZXNTaW1wbGVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODFlNzVjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlc1NpbXBsZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFJlZ0ZpbmRTZXJ2aWNlc1NpbXBsZUFjdGlvbiBhY3Rpb24gPSBuZXcgUmVnRmluZFNlcnZpY2VzU2ltcGxlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoQnVzaW5lc3NBZHZhbmNlZEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoQnVzaW5lc3NBZHZhbmNlZEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlM2E0MGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnUHVibGlzaEJ1c2luZXNzQWR2YW5jZWRBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgUmVnUHVibGlzaEJ1c2luZXNzQWR2YW5jZWRBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ1B1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoQnVzaW5lc3NTaW1wbGVBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnUHVibGlzaEJ1c2luZXNzU2ltcGxlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAxMTllOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoQnVzaW5lc3NTaW1wbGVBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBSZWdQdWJsaXNoQnVzaW5lc3NTaW1wbGVBY3Rpb24gYWN0aW9uID0gbmV3IFJlZ1B1Ymxpc2hCdXNpbmVzc1NpbXBsZUFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9hY3Rpb25zL05ld05vZGVBY3Rpb24uaW5jIiAlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnUHVibGlzaFNlcnZpY2VBZHZhbmNlZEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI0N2UwOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZUFkdmFuY2VkQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgUmVnUHVibGlzaFNlcnZpY2VBZHZhbmNlZEFjdGlvbiBhY3Rpb24gPSBuZXcgUmVnUHVibGlzaFNlcnZpY2VBZHZhbmNlZEFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgaWYgKCFhY3Rpb24uaXNTdWJRdWVyeUluaXRpYXRlZCgpKQotICAgewotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08JQotICAgfQotICAgZWxzZQotICAgewotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTGF1bmNoU3ViUXVlcnlBY3Rpb24uaW5jIiAlPgotPCUKLSAgIH0KLSU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjdhYTkyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBSZWdQdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkQWN0aW9uIGFjdGlvbiA9IG5ldyBSZWdQdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzOTVmOGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBSZWdQdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUFjdGlvbiBhY3Rpb24gPSBuZXcgUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hTZXJ2aWNlU2ltcGxlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hTZXJ2aWNlU2ltcGxlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY0MzYwMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFJlZ1B1Ymxpc2hTZXJ2aWNlU2ltcGxlQWN0aW9uIGFjdGlvbiA9IG5ldyBSZWdQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgaWYgKCFhY3Rpb24uaXNTdWJRdWVyeUluaXRpYXRlZCgpKQotICAgewotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08JQotICAgfQotICAgZWxzZQotICAgewotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTGF1bmNoU3ViUXVlcnlBY3Rpb24uaW5jIiAlPgotPCUKLSAgIH0KLSU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZW1vdmVQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlbW92ZVB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmNiY2MyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlbW92ZVB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFJlbW92ZVB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24gYWN0aW9uID0gbmV3IFJlbW92ZVB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgIGlmIChpbnB1dHNWYWxpZCkKLSAgIHsKLSAgICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSAgIH0KLSU+Ci0KLSAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICBwcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLSAgICAgc3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgPC9zY3JpcHQ+Ci0KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlbW92ZVN1YlF1ZXJ5SXRlbUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZW1vdmVTdWJRdWVyeUl0ZW1BY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODI0YTkzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1JlbW92ZVN1YlF1ZXJ5SXRlbUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFJlbW92ZVN1YlF1ZXJ5SXRlbUFjdGlvbiBhY3Rpb24gPSBuZXcgUmVtb3ZlU3ViUXVlcnlJdGVtQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBwcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLSAgc3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9SZXNpemVVRERJRnJhbWVzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1Jlc2l6ZVVERElGcmFtZXNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTk4Mzc0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1Jlc2l6ZVVERElGcmFtZXNBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgLy8gQ3JlYXRlIHRoZSBhY3Rpb24uCi0gICBSZXNpemVVRERJRnJhbWVzQWN0aW9uIGFjdGlvbiA9IG5ldyBSZXNpemVVRERJRnJhbWVzQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgCi0gICAvLyBQb3B1bGF0ZSB0aGUgYWN0aW9uIHdpdGggdGhlIHJlcXVlc3QgcHJvcGVydGllcy4KLSAgIGJvb2xlYW4gcmVzdWx0ID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlmcmFtZXNldHMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICBpZiAocmVzdWx0KQotICAgewotICAgICBhY3Rpb24uZXhlY3V0ZShmYWxzZSk7Ci0gICAgIAotICAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgaWYgKGlzTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcigpKQotICB7Ci0gICAgdmFyIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0ID0gZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXQoKTsKLSAgICB2YXIgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0ID0gZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0KCk7Ci0gICAgcGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXQuc2V0QXR0cmlidXRlKCJjb2xzIiwiPCU9dWRkaVBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpJT4iKTsKLSAgICBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXQuc2V0QXR0cmlidXRlKCJyb3dzIiwiPCU9dWRkaVBlcnNwZWN0aXZlLmdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKSU+Iik7Ci0gIH0KLSAgZWxzZQotICAgIHBlcnNwZWN0aXZlQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvdWRkaV9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcCIpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgIH0KLSU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZWxlY3RDYXRlZ29yeU5vZGVBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvU2VsZWN0Q2F0ZWdvcnlOb2RlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNiYjE5My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZWxlY3RDYXRlZ29yeU5vZGVBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLnV0aWwuKiIgJT4KLQotPCUKLSAgIFN0cmluZyBzZXNzaW9uSWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuU0VTU0lPTklEKTsKLSAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSWQpOwotICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpY3VycmVudFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy9jYnBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBTZWxlY3RDYXRlZ29yeU5vZGVBY3Rpb24gYWN0aW9uID0gbmV3IFNlbGVjdENhdGVnb3J5Tm9kZUFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoZmFsc2UpOwotCi0gICBDYXRlZ29yeU5vZGUgc2VsZWN0ZWROb2RlID0gKENhdGVnb3J5Tm9kZSlhY3Rpb24uZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXROb2RlTWFuYWdlcigpOwotICAgTm9kZSBwcmV2aW91c1NlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFByZXZpb3VzU2VsZWN0ZWROb2RlKCk7Ci0gICBpbnQgc2VsZWN0ZWROb2RlSWQgPSBzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci08JQotICAgU3RyaW5nIHRyZWVDb250ZW50VmFyID0gYWN0aW9uLmdldFRyZWVDb250ZW50VmFyKCk7Ci0gICBpZiAocHJldmlvdXNTZWxlY3RlZE5vZGUgIT0gbnVsbCkKLSAgIHsKLSAgICAgaWYgKHRyZWVDb250ZW50VmFyICE9IG51bGwpCi0gICAgIHsKLSU+Ci0gIDwlPXRyZWVDb250ZW50VmFyJT4uYWx0ZXJJbWFnZSgnPCU9cHJldmlvdXNTZWxlY3RlZE5vZGUuZ2V0QW5jaG9yTmFtZSgpJT4nLCc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQocHJldmlvdXNTZWxlY3RlZE5vZGUuZ2V0Q2xvc2VkSW1hZ2VQYXRoKCkpKSU+Jyk7Ci08JQotICAgICB9Ci0gICB9Ci0gICBTdHJpbmcgc2VsZWN0ZWROb2RlQW5jaG9yTmFtZSA9IHNlbGVjdGVkTm9kZS5nZXRBbmNob3JOYW1lKCk7Ci0gICBpZiAodHJlZUNvbnRlbnRWYXIgIT0gbnVsbCkKLSAgIHsKLSU+ICAgICAKLSAgPCU9dHJlZUNvbnRlbnRWYXIlPi5zZWxlY3ROb2RlKCc8JT1zZWxlY3RlZE5vZGVBbmNob3JOYW1lJT4nLCc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoc2VsZWN0ZWROb2RlLmdldE9wZW5JbWFnZVBhdGgoKSkpJT4nKTsKLSAgPCU9dHJlZUNvbnRlbnRWYXIlPi5sb2NhdGlvbi5oYXNoID0gJyM8JT1zZWxlY3RlZE5vZGVBbmNob3JOYW1lJT4nOwotPCUgIAotICAgfQotICAgCi0gICBDYXRlZ29yeUVsZW1lbnQgY2F0ZWdvcnlFbGVtZW50ID0gKENhdGVnb3J5RWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgIEtleWVkUmVmZXJlbmNlIGtyID0gY2F0ZWdvcnlFbGVtZW50LmdldENhdGVnb3J5KCk7Ci0lPgotICBjYXRlZ29yeUJyb3dzZXJXaW5kb3cub3BlbmVyLnRhcmdldENhdGVnb3J5S2V5TmFtZUVsZW1lbnQudmFsdWUgPSAiPCU9a3IuZ2V0S2V5TmFtZSgpJT4iOwotICBjYXRlZ29yeUJyb3dzZXJXaW5kb3cub3BlbmVyLnRhcmdldENhdGVnb3J5S2V5VmFsdWVFbGVtZW50LnZhbHVlID0gIjwlPWtyLmdldEtleVZhbHVlKCklPiI7Ci0gIGNhdGVnb3J5QnJvd3NlcldpbmRvdy5vcGVuZXIuY2xvc2VDYXRlZ29yeUJyb3dzZXIoKTsKLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1NlbGVjdEZpbmRUb29sQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1NlbGVjdEZpbmRUb29sQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYzY2YxZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZWxlY3RGaW5kVG9vbEFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgU2VsZWN0RmluZFRvb2xBY3Rpb24gYWN0aW9uID0gbmV3IFNlbGVjdEZpbmRUb29sQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0gICAvLyBEZXRlcm1pbmUgaWYgdGhlIGFjdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4KLSAgIGJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSA9IGFjdGlvbi5pc0FkZGVkVG9IaXN0b3J5KCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvU2VsZWN0Tm9kZVRvb2xBY3Rpb24uaW5jIiAlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvU2VsZWN0TmF2aWdhdG9yTm9kZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNiN2QwZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBTZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uIGFjdGlvbiA9IG5ldyBTZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0gICAvLyBEZXRlcm1pbmUgaWYgdGhlIGFjdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4KLSAgIGJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSA9IGFjdGlvbi5pc0FkZGVkVG9IaXN0b3J5KCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvU2VsZWN0Tm9kZUFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NGE0MGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvU2VsZWN0UHJvcGVydGllc1Rvb2xBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLS8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLVNlbGVjdFByb3BlcnRpZXNUb29sQWN0aW9uIGFjdGlvbiA9IG5ldyBTZWxlY3RQcm9wZXJ0aWVzVG9vbEFjdGlvbihjb250cm9sbGVyKTsKLQotLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi1hY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0vLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLWJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLQotLy8gRGV0ZXJtaW5lIGlmIHRoZSBhY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuCi1ib29sZWFuIGlzQWRkZWRUb0hpc3RvcnkgPSBhY3Rpb24uaXNBZGRlZFRvSGlzdG9yeSgpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9hY3Rpb25zL1NlbGVjdE5vZGVUb29sQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1NlbGVjdFN1YlF1ZXJ5SXRlbUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzE2MzdiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1NlbGVjdFN1YlF1ZXJ5SXRlbUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIFNlbGVjdFN1YlF1ZXJ5SXRlbUFjdGlvbiBhY3Rpb24gPSBuZXcgU2VsZWN0U3ViUXVlcnlJdGVtQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZShmYWxzZSk7Ci0gICAKLSAgIGlmICghYWN0aW9uUmVzdWx0KQotICAgewotICAgICBIYXNodGFibGUgcHJvcGVydHlUYWJsZSA9IGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpcHJvcGVydHlUYWJsZS5nZXQoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgICBTdHJpbmcgc3ViUXVlcnlMaXN0S2V5ID0gKFN0cmluZylwcm9wZXJ0eVRhYmxlLmdldChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0xJU1RfS0VZKTsKLSAgICAgaW50IHN1YlF1ZXJ5TGlzdEl0ZW1JZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZylwcm9wZXJ0eVRhYmxlLmdldChVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0xJU1RfSVRFTUlEKSk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgVVRGLTgiPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL3BhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4gIAotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBpZiAoY29uZmlybSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfUVVFU1RJT05fSVRFTV9WQUxJREFUSU9OX0ZBSUxFRCIsYWN0aW9uLmdldEl0ZW1OYW1lKCkpKSU+IikpCi0gICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUmVtb3ZlU3ViUXVlcnlJdGVtQWN0aW9uLmdldEFjdGlvbkxpbmsoc3ViUXVlcnlLZXksc3ViUXVlcnlMaXN0S2V5LHN1YlF1ZXJ5TGlzdEl0ZW1JZCkpKSU+IjsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotPCUKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuCi0gICAgIGJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSA9IGFjdGlvbi5pc0FkZGVkVG9IaXN0b3J5KCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvU2VsZWN0Tm9kZVRvb2xBY3Rpb24uaW5jIiAlPgotPCUKLSAgIH0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZXJ2aWNlR2V0QnVzaW5lc3NBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvU2VydmljZUdldEJ1c2luZXNzQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM5ZTcxYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZXJ2aWNlR2V0QnVzaW5lc3NBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFNlcnZpY2VHZXRCdXNpbmVzc0FjdGlvbiBhY3Rpb24gPSBuZXcgU2VydmljZUdldEJ1c2luZXNzQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICBib29sZWFuIHNlcnZpY2VFeGlzdHMgPSBhY3Rpb24udmFsaWRhdGVTZXJ2aWNlKCk7Ci0KLSAgIGlmICghc2VydmljZUV4aXN0cykKLSAgIHsKLSAgICAgaW50IG5vZGVJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykoYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKS5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpKTsKLSAgICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGlmIChjb25maXJtKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19RVUVTVElPTl9SRU1PVkVfU0VSVklDRV9OT0RFIikpJT4iKSkKLSAgICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChDbGVhck5hdmlnYXRvck5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQpKSklPiI7Ci08L3NjcmlwdD4KLTwlCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwlCi0gICB9Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvU2VydmljZUdldFNlcnZpY2VJbnRlcmZhY2VzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1NlcnZpY2VHZXRTZXJ2aWNlSW50ZXJmYWNlc0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYjVmOTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvU2VydmljZUdldFNlcnZpY2VJbnRlcmZhY2VzQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBTZXJ2aWNlR2V0U2VydmljZUludGVyZmFjZXNBY3Rpb24gYWN0aW9uID0gbmV3IFNlcnZpY2VHZXRTZXJ2aWNlSW50ZXJmYWNlc0FjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgYm9vbGVhbiBzZXJ2aWNlRXhpc3RzID0gYWN0aW9uLnZhbGlkYXRlU2VydmljZSgpOwotCi0gICBpZiAoIXNlcnZpY2VFeGlzdHMpCi0gICB7Ci0gICAgIGludCBub2RlSWQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpKGFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCkuZ2V0KEFjdGlvbklucHV0cy5OT0RFSUQpKSk7Ci0gICAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBpZiAoY29uZmlybSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfUVVFU1RJT05fUkVNT1ZFX1NFUlZJQ0VfTk9ERSIpKSU+IikpCi0gICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoQ2xlYXJOYXZpZ2F0b3JOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkKSkpJT4iOwotPC9zY3JpcHQ+Ci08JQotICAgfQotICAgZWxzZQotICAgewotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08JQotICAgfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1NlcnZpY2VJbnRlcmZhY2VHZXRCdXNpbmVzc2VzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1NlcnZpY2VJbnRlcmZhY2VHZXRCdXNpbmVzc2VzQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTViMjg3OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TZXJ2aWNlSW50ZXJmYWNlR2V0QnVzaW5lc3Nlc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgU2VydmljZUludGVyZmFjZUdldEJ1c2luZXNzZXNBY3Rpb24gYWN0aW9uID0gbmV3IFNlcnZpY2VJbnRlcmZhY2VHZXRCdXNpbmVzc2VzQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICBib29sZWFuIHNpRXhpc3RzID0gYWN0aW9uLnZhbGlkYXRlU2VydmljZUludGVyZmFjZSgpOwotCi0gICBpZiAoIXNpRXhpc3RzKQotICAgewotICAgICBpbnQgbm9kZUlkID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKShhY3Rpb24uZ2V0UHJvcGVydHlUYWJsZSgpLmdldChBY3Rpb25JbnB1dHMuTk9ERUlEKSkpOwotICAgICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgaWYgKGNvbmZpcm0oIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX1FVRVNUSU9OX1JFTU9WRV9TSV9OT0RFIikpJT4iKSkKLSAgICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChDbGVhck5hdmlnYXRvck5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQpKSklPiI7Ci08L3NjcmlwdD4KLTwlCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwlCi0gICB9Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvU2VydmljZUludGVyZmFjZUdldFNlcnZpY2VzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1NlcnZpY2VJbnRlcmZhY2VHZXRTZXJ2aWNlc0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyOTY3YjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvU2VydmljZUludGVyZmFjZUdldFNlcnZpY2VzQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBTZXJ2aWNlSW50ZXJmYWNlR2V0U2VydmljZXNBY3Rpb24gYWN0aW9uID0gbmV3IFNlcnZpY2VJbnRlcmZhY2VHZXRTZXJ2aWNlc0FjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgYm9vbGVhbiBzaUV4aXN0cyA9IGFjdGlvbi52YWxpZGF0ZVNlcnZpY2VJbnRlcmZhY2UoKTsKLQotICAgaWYgKCFzaUV4aXN0cykKLSAgIHsKLSAgICAgaW50IG5vZGVJZCA9IEludGVnZXIucGFyc2VJbnQoKFN0cmluZykoYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKS5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpKTsKLSAgICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGlmIChjb25maXJtKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19RVUVTVElPTl9SRU1PVkVfU0lfTk9ERSIpKSU+IikpCi0gICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoQ2xlYXJOYXZpZ2F0b3JOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsobm9kZUlkKSkpJT4iOwotPC9zY3JpcHQ+Ci08JQotICAgfQotICAgZWxzZQotICAgewotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08JQotICAgfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1Nob3dQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1Nob3dQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA0MDVkMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9TaG93UHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFNob3dQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uIGFjdGlvbiA9IG5ldyBTaG93UHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgaWYgKCFhY3Rpb24uaXNTdWJRdWVyeUluaXRpYXRlZCgpKQotICAgewotICAgICBpZiAoaW5wdXRzVmFsaWQpCi0gICAgIHsKLSAgICAgICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgICAgICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKCk7Ci0gICAgIH0KLSU+Ci0gICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgcHJvcGVydGllc0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgIHN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLSAgIDwvc2NyaXB0PgotPCUKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9hY3Rpb25zL0xhdW5jaFN1YlF1ZXJ5QWN0aW9uLmluYyIgJT4KLTwlCi0gICB9Ci0lPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvU3dpdGNoUGVyc3BlY3RpdmVGcm9tVURESUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21VRERJQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNlMzc0Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21VRERJQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24KLVN3aXRjaFBlcnNwZWN0aXZlRnJvbVVERElBY3Rpb24gYWN0aW9uID0gbmV3IFN3aXRjaFBlcnNwZWN0aXZlRnJvbVVERElBY3Rpb24oY29udHJvbGxlcik7Ci0gICAKLS8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSAgIAotLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi1ib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKCk7Ci0gICAKLS8vIERldGVybWluZSBpZiB0aGUgYWN0aW9uIHdhcyBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LgotYm9vbGVhbiBpc0FkZGVkVG9IaXN0b3J5ID0gYWN0aW9uLmlzQWRkZWRUb0hpc3RvcnkoKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvc3dpdGNocGVyc3BlY3RpdmUuanNwIiBmbHVzaD0idHJ1ZSIvPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVG9nZ2xlQ2F0ZWdvcnlOb2RlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1RvZ2dsZUNhdGVnb3J5Tm9kZUFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhZTA0ZjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVG9nZ2xlQ2F0ZWdvcnlOb2RlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTwlCi0gICBTdHJpbmcgc2Vzc2lvbklkID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCk7Ci0gICBIdHRwU2Vzc2lvbiBjdXJyZW50U2Vzc2lvbiA9IChIdHRwU2Vzc2lvbilhcHBsaWNhdGlvbi5nZXRBdHRyaWJ1dGUoc2Vzc2lvbklkKTsKLSAgIENvbnRyb2xsZXIgY29udHJvbGxlciA9IChDb250cm9sbGVyKWN1cnJlbnRTZXNzaW9uLmdldEF0dHJpYnV0ZSgiY29udHJvbGxlciIpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvY2JwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgVG9nZ2xlQ2F0ZWdvcnlOb2RlQWN0aW9uIGFjdGlvbiA9IG5ldyBUb2dnbGVDYXRlZ29yeU5vZGVBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKGZhbHNlKTsKLQotICAgU3RyaW5nIHRyZWVDb250ZW50VmFyID0gYWN0aW9uLmdldFRyZWVDb250ZW50VmFyKCk7Ci0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLTwlCi0gICBpZiAodHJlZUNvbnRlbnRWYXIgIT0gbnVsbCkKLSAgIHsKLSU+Ci0gIGlmIChpc01pY3Jvc29mdEludGVybmV0RXhwbG9yZXIoKSkKLSAgICA8JT10cmVlQ29udGVudFZhciU+LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChhY3Rpb24uZ2V0VHJlZUNvbnRlbnRQYWdlKCkpKSU+IjsKLSAgZWxzZQotICAgIGNhdGVnb3J5QnJvd3NlcldpbmRvdy5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uLmdldFRyZWVDb250YWluZXJQYWdlKCkpKSU+IjsKLTwlCi0gICB9Ci0lPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVG9nZ2xlTmF2aWdhdG9yTm9kZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9Ub2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRlZTc0MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9Ub2dnbGVOYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotVG9nZ2xlTmF2aWdhdG9yTm9kZUFjdGlvbiBhY3Rpb24gPSBuZXcgVG9nZ2xlTmF2aWdhdG9yTm9kZUFjdGlvbihjb250cm9sbGVyKTsKLQotLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi1hY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0vLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLWJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLQotLy8gRGV0ZXJtaW5lIGlmIHRoZSBhY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuCi1ib29sZWFuIGlzQWRkZWRUb0hpc3RvcnkgPSBhY3Rpb24uaXNBZGRlZFRvSGlzdG9yeSgpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9hY3Rpb25zL1RvZ2dsZU5vZGVBY3Rpb24uaW5jIiAlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVHJhbnNmZXJTdWJRdWVyeVJlc3VsdHNBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVHJhbnNmZXJTdWJRdWVyeVJlc3VsdHNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDk4YzczLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1RyYW5zZmVyU3ViUXVlcnlSZXN1bHRzQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIFRyYW5zZmVyU3ViUXVlcnlSZXN1bHRzQWN0aW9uIGFjdGlvbiA9IG5ldyBUcmFuc2ZlclN1YlF1ZXJ5UmVzdWx0c0FjdGlvbihjb250cm9sbGVyKTsKLQotICAgaWYgKHJlcXVlc3QuZ2V0UGFyYW1ldGVyKFVERElBY3Rpb25JbnB1dHMuU0hPV19SRVNVTFRTX1RBUkdFVCkgIT0gbnVsbCkKLSAgICAgYWN0aW9uLmVuYWJsZVNob3dSZXN1bHRzVGFyZ2V0KCk7Ci0gICBlbHNlCi0gICAgIGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSAgIE5vZGUgdGFyZ2V0Tm9kZSA9IGFjdGlvbi5nZXRUYXJnZXROb2RlKCk7Ci0gICBTdHJpbmcgdGFyZ2V0Tm9kZUFuY2hvck5hbWUgPSB0YXJnZXROb2RlLmdldEFuY2hvck5hbWUoKTsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgbmF2aWdhdG9yQ29udGVudC5zZWxlY3ROb2RlKCc8JT10YXJnZXROb2RlQW5jaG9yTmFtZSU+JywnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHRhcmdldE5vZGUuZ2V0T3BlbkltYWdlUGF0aCgpKSklPicpOwotICBuYXZpZ2F0b3JDb250ZW50LmxvY2F0aW9uLmhhc2g9JyM8JT10YXJnZXROb2RlQW5jaG9yTmFtZSU+JzsKLSAgcHJvcGVydGllc0NvbnRhaW5lci5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvcHJvcGVydGllc19jb250YWluZXIuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9UcmFuc2ZlclRvQWRkQ2F0ZWdvcnlEYXRhQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1RyYW5zZmVyVG9BZGRDYXRlZ29yeURhdGFBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGRlZjBiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1RyYW5zZmVyVG9BZGRDYXRlZ29yeURhdGFBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci08JQotICAgU3RyaW5nIHNlc3Npb25JZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpOwotICAgU3RyaW5nIGNhdGVnb3J5VE1vZGVsS2V5ID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5DQVRFR09SWV9UTU9ERUxfS0VZKTsKLSAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSWQpOwotICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpY3VycmVudFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgVURESU1haW5Ob2RlIHVkZGlNYWluTm9kZSA9IChVRERJTWFpbk5vZGUpbmF2aWdhdG9yTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgUmVnaXN0cnlOb2RlIHJlZ05vZGUgPSB1ZGRpTWFpbk5vZGUuZ2V0UmVnaXN0cnlOb2RlKG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCkpOwotICAgUmVnaXN0cnlEZXRhaWxzVG9vbCByZWdEZXRhaWxzVG9vbCA9IHJlZ05vZGUuZ2V0UmVnRGV0YWlsc1Rvb2woKTsKLSAgIHJlZ0RldGFpbHNUb29sLmZsYWdSb3dFcnJvcihVRERJQWN0aW9uSW5wdXRzLlVTRVJfREVGSU5FRF9DQVRFR09SSUVTLGNhdGVnb3J5VE1vZGVsS2V5KTsKLSAgIHJlZ05vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuc2V0U2VsZWN0ZWRUb29sSWQocmVnRGV0YWlsc1Rvb2wuZ2V0VG9vbElkKCkpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2VsZWN0TmF2aWdhdG9yTm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKHJlZ05vZGUuZ2V0Tm9kZUlkKCksZmFsc2UpKSklPiI7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VERElBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VRERJQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjVjYmNjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VERElBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuU2hvd1BlcnNwZWN0aXZlQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLlVERElBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbiIlPgotCi0KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi1VRERJQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb24gYWN0aW9uID0gbmV3IFVERElBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbihjb250cm9sbGVyKTsKLQotLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi1ib29sZWFuIHBhcmFtVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi1pZiAocGFyYW1WYWxpZCkgewotICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotICBpZiAoYWN0aW9uUmVzdWx0KSB7Ci0lPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2hvd1BlcnNwZWN0aXZlQWN0aW9uLmdldEFjdGlvbkxpbmsoQWN0aW9uSW5wdXRzLlBFUlNQRUNUSVZFX1dTREwsZmFsc2UpKSklPiI7Ci0gICAgPC9zY3JpcHQ+Ci08JQotICB9Ci0gIGVsc2UgewotJT4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgIHByb3BlcnRpZXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgc3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgIDwvc2NyaXB0PgotPCUKLSAgfQotfQotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VERElJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VERElJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEwM2ZmNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VRERJSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEuaW8uKiIgJT4KLQotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgVURESUltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb24gYWN0aW9uID0gbmV3IFVERElJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uKGNvbnRyb2xsZXIpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9hY3Rpb25zL0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VRERJSW1wb3J0V1NETFRvV29ya2JlbmNoQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDU4MjBiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBVRERJSW1wb3J0V1NETFRvV29ya2JlbmNoQWN0aW9uIGFjdGlvbiA9IG5ldyBVRERJSW1wb3J0V1NETFRvV29ya2JlbmNoQWN0aW9uKGNvbnRyb2xsZXIpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9hY3Rpb25zL0ltcG9ydFRvV29ya2JlbmNoQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VERElMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VERElMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMzMWY2My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VRERJTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBVRERJTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbiBhY3Rpb24gPSBuZXcgVURESUxhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24oY29udHJvbGxlcik7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VbnB1Ymxpc2hBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVW5wdWJsaXNoQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM5ZWI0My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VbnB1Ymxpc2hBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgIFVucHVibGlzaEFjdGlvbiBhY3Rpb24gPSBuZXcgVW5wdWJsaXNoQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VwZGF0ZUFjdGlvbi5pbmMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVBY3Rpb24uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGY0MDJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VwZGF0ZUFjdGlvbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlCi0gICBpZiAoIWlucHV0c1ZhbGlkKQotICAgewotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBwcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLSAgc3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci08JQotICAgfQotICAgZWxzZQotICAgewotICAgICBib29sZWFuIHJlZnJlc2hSZXN1bHQgPSBhY3Rpb24ucmVmcmVzaEZyb21SZWdpc3RyeSgpOwotICAgICAKLSAgICAgaWYgKCFyZWZyZXNoUmVzdWx0KQotICAgICB7Ci0gICAgICAgc2Vzc2lvbi5zZXRBdHRyaWJ1dGUoVURESUFjdGlvbklucHV0cy5QVUJMSVNIX0FDVElPTixhY3Rpb24pOwotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBzdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gIGlmIChjb25maXJtKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19RVUVTVElPTl9QVUJMSVNIX0lURU0iKSklPiIpKQotICAgIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvVXBkYXRlTmV3UHVibGlzaEFjdGlvbkpTUC5qc3AiKSklPiI7Ci0gIGVsc2UKLSAgICBwcm9wZXJ0aWVzQ29udGVudC5yZXF1ZXN0U3VibWl0dGVkID0gZmFsc2U7Ci08L3NjcmlwdD4KLTwlCi0gICAgIH0KLSAgICAgZWxzZQotICAgICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwlCi0gICAgIH0KLSAgIH0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVCdXNpbmVzc0FjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVCdXNpbmVzc0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMGVhYjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVXBkYXRlQnVzaW5lc3NBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBVcGRhdGVCdXNpbmVzc0FjdGlvbiBhY3Rpb24gPSBuZXcgVXBkYXRlQnVzaW5lc3NBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9VcGRhdGVBY3Rpb24uaW5jIiAlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVXBkYXRlTmV3UHVibGlzaEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVOZXdQdWJsaXNoQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdhZWE1ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVOZXdQdWJsaXNoQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgVXBkYXRlQWN0aW9uIGFjdGlvbiA9IChVcGRhdGVBY3Rpb24pc2Vzc2lvbi5nZXRBdHRyaWJ1dGUoVURESUFjdGlvbklucHV0cy5QVUJMSVNIX0FDVElPTik7Ci0gICBzZXNzaW9uLnJlbW92ZUF0dHJpYnV0ZShVRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hfQUNUSU9OKTsKLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSB0cnVlOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvTmV3Tm9kZUFjdGlvbi5pbmMiICU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVSZWdpc3RyeUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVSZWdpc3RyeUFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYTc1M2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVXBkYXRlUmVnaXN0cnlBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBVcGRhdGVSZWdpc3RyeUFjdGlvbiBhY3Rpb24gPSBuZXcgVXBkYXRlUmVnaXN0cnlBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9VcGRhdGVBY3Rpb24uaW5jIiAlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVXBkYXRlU2VydmljZUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVTZXJ2aWNlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlkOTRmNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVTZXJ2aWNlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgVXBkYXRlU2VydmljZUFjdGlvbiBhY3Rpb24gPSBuZXcgVXBkYXRlU2VydmljZUFjdGlvbihjb250cm9sbGVyKTsKLQotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgaWYgKCFpbnB1dHNWYWxpZCkKLSAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgcHJvcGVydGllc0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiI7Ci0gIHN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgYm9vbGVhbiByZWZyZXNoU2VydmljZVJlc3VsdCA9IGFjdGlvbi5yZWZyZXNoRnJvbVJlZ2lzdHJ5KCk7Ci0gICAgIGJvb2xlYW4gcmVmcmVzaEJ1c2luZXNzUmVzdWx0ID0gYWN0aW9uLnJlZnJlc2hCdXNpbmVzc0Zyb21SZWdpc3RyeSgpOwotICAgICBpZiAoIXJlZnJlc2hTZXJ2aWNlUmVzdWx0KQotICAgICB7Ci0gICAgICAgc2Vzc2lvbi5zZXRBdHRyaWJ1dGUoVURESUFjdGlvbklucHV0cy5QVUJMSVNIX0FDVElPTixhY3Rpb24pOwotICAgICAgIGlmICghcmVmcmVzaEJ1c2luZXNzUmVzdWx0KQotICAgICAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgaWYgKGNvbmZpcm0oIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX1FVRVNUSU9OX1NFUlZJQ0VfUFVCTElTSF9CVVNJTkVTUyIpKSU+IikpCi0gICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9VcGRhdGVTZXJ2aWNlTmV3UHVibGlzaEJ1c2luZXNzQWN0aW9uSlNQLmpzcCIpKSU+IjsKLSAgZWxzZQotICAgIHByb3BlcnRpZXNDb250ZW50LnJlcXVlc3RTdWJtaXR0ZWQgPSBmYWxzZTsKLTwvc2NyaXB0PgotPCUKLSAgICAgICB9Ci0gICAgICAgZWxzZQotICAgICAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgaWYgKGNvbmZpcm0oIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX1FVRVNUSU9OX1BVQkxJU0hfSVRFTSIpKSU+IikpCi0gICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9VcGRhdGVOZXdQdWJsaXNoQWN0aW9uSlNQLmpzcCIpKSU+IjsKLSAgZWxzZQotICAgIHByb3BlcnRpZXNDb250ZW50LnJlcXVlc3RTdWJtaXR0ZWQgPSBmYWxzZTsKLTwvc2NyaXB0PgotPCUKLSAgICAgICB9Ci0gICAgIH0KLSAgICAgZWxzZQotICAgICB7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvYWN0aW9ucy9OZXdOb2RlQWN0aW9uLmluYyIgJT4KLTwlCi0gICAgIH0KLSAgIH0KLSU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvYWN0aW9ucy9VcGRhdGVTZXJ2aWNlSW50ZXJmYWNlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VwZGF0ZVNlcnZpY2VJbnRlcmZhY2VBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWE4ZjA0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VwZGF0ZVNlcnZpY2VJbnRlcmZhY2VBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICBVcGRhdGVTZXJ2aWNlSW50ZXJmYWNlQWN0aW9uIGFjdGlvbiA9IG5ldyBVcGRhdGVTZXJ2aWNlSW50ZXJmYWNlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2FjdGlvbnMvVXBkYXRlQWN0aW9uLmluYyIgJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zL1VwZGF0ZVNlcnZpY2VOZXdQdWJsaXNoQnVzaW5lc3NBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVXBkYXRlU2VydmljZU5ld1B1Ymxpc2hCdXNpbmVzc0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ZjZlZTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnMvVXBkYXRlU2VydmljZU5ld1B1Ymxpc2hCdXNpbmVzc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgIFVwZGF0ZVNlcnZpY2VBY3Rpb24gYWN0aW9uID0gKFVwZGF0ZVNlcnZpY2VBY3Rpb24pc2Vzc2lvbi5nZXRBdHRyaWJ1dGUoVURESUFjdGlvbklucHV0cy5QVUJMSVNIX0FDVElPTik7Ci0gICBzZXNzaW9uLnJlbW92ZUF0dHJpYnV0ZShVRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hfQUNUSU9OKTsKLQotICAgUmVnUHVibGlzaFRvb2wgcmVnUHVibGlzaFRvb2wgPSBhY3Rpb24uc2V0dXBSZWdQdWJsaXNoVG9vbCgpOwotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChyZWdQdWJsaXNoVG9vbC5nZXRTZWxlY3RUb29sQWN0aW9uSHJlZihmYWxzZSkpKSU+IjsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnNfY29udGFpbmVyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9hY3Rpb25zX2NvbnRhaW5lci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MWJhMTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2FjdGlvbnNfY29udGFpbmVyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfQUNUSU9OU19DT05UQUlORVIiKSU+PC90aXRsZT4KLTwvaGVhZD4KLTxmcmFtZXNldCByb3dzPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpJT4iIGJnY29sb3I9IiNFQ0U5RDgiPgotICA8ZnJhbWUgbmFtZT0iPCU9VURESUZyYW1lTmFtZXMuUFJPUEVSVElFU19DT05UQUlORVIlPiIgdGl0bGU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9QUk9QRVJUSUVTX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCIpKSU+IiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0xIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+Ci0gIDxmcmFtZSBuYW1lPSI8JT1VRERJRnJhbWVOYW1lcy5TVEFUVVNfQ09OVEFJTkVSJT4iIHRpdGxlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfU1RBVFVTX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3N0YXR1c19jb250YWluZXIuanNwIikpJT4iIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTEgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvY2F0ZWdvcnlfYnJvd3Nlci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvY2F0ZWdvcnlfYnJvd3Nlci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiOWU1MzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2NhdGVnb3J5X2Jyb3dzZXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTwlCi0gICBTdHJpbmcgc2Vzc2lvbklkID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCk7Ci0gICBTdHJpbmcgY2F0ZWdvcnlUTW9kZWxLZXkgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihVRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JZX1RNT0RFTF9LRVkpOwotICAgSHR0cFNlc3Npb24gY3VycmVudFNlc3Npb24gPSAoSHR0cFNlc3Npb24pYXBwbGljYXRpb24uZ2V0QXR0cmlidXRlKHNlc3Npb25JZCk7Ci0gICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSAoQ29udHJvbGxlciljdXJyZW50U2Vzc2lvbi5nZXRBdHRyaWJ1dGUoImNvbnRyb2xsZXIiKTsKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgdWRkaVBlcnNwZWN0aXZlLnNldENhdGVnb3J5VE1vZGVsS2V5KGNhdGVnb3J5VE1vZGVsS2V5KTsKLSAgIAotICAgU3RyaW5nQnVmZmVyIHRvb2xiYXJMaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigidWRkaS9jYXRlZ29yeV90b29sYmFyLmpzcD8iKTsKLSAgIHRvb2xiYXJMaW5rLmFwcGVuZChBY3Rpb25JbnB1dHMuU0VTU0lPTklEKS5hcHBlbmQoJz0nKS5hcHBlbmQoc2Vzc2lvbklkKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJUSVRMRV9DQVRFR09SWV9CUk9XU0VSIiklPjwvdGl0bGU+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgcm93cz0iMCwzMywqIiBib3JkZXI9MCBiZ2NvbG9yPSIjRUNFOUQ4Ij4KLSAgPGZyYW1lIG5hbWU9IjwlPVVERElGcmFtZU5hbWVzLkNBVEVHT1JJRVNfV09SS0FSRUElPiIgdGl0bGU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9DQVRFR09SSUVTX1dPUktBUkVBIiklPiIgZnJhbWVib3JkZXI9MCBub3Jlc2l6ZT4KLSAgPGZyYW1lIG5hbWU9IjwlPVVERElGcmFtZU5hbWVzLkNBVEVHT1JJRVNfVE9PTEJBUiU+IiB0aXRsZT0iPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX0NBVEVHT1JJRVNfVE9PTEJBUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHRvb2xiYXJMaW5rLnRvU3RyaW5nKCkpKSU+IiBub3Jlc2l6ZSBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0wIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+Ci0gIDxmcmFtZSBuYW1lPSI8JT1VRERJRnJhbWVOYW1lcy5DQVRFR09SSUVTX0NPTlRFTlQlPiIgdGl0bGU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9DQVRFR09SSUVTX0NPTlRFTlQiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChPcGVuQ2F0ZWdvcnlCcm93c2VyQWN0aW9uLmdldENhdGVnb3J5Q29udGVudFBhZ2Uoc2Vzc2lvbklkLGNhdGVnb3J5VE1vZGVsS2V5KSkpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvY2F0ZWdvcnlfY29udGVudC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvY2F0ZWdvcnlfY29udGVudC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MDAzZDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2NhdGVnb3J5X2NvbnRlbnQuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiIgJT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi08anNwOnVzZUJlYW4gaWQ9ImNvbW1vbkNhdGVnb3J5TW9kZWxzIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9ImFwcGxpY2F0aW9uIi8+Ci08JQotICAgU3RyaW5nIHNlc3Npb25JZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpOwotICAgU3RyaW5nIGNhdGVnb3J5VE1vZGVsS2V5ID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5DQVRFR09SWV9UTU9ERUxfS0VZKTsKLSAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSWQpOwotICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpY3VycmVudFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9DQVRFR09SSUVTX0NPTlRFTlQiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3MvdHJlZXZpZXcuY3NzIikpJT4iPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLSAgPC9zY3JpcHQ+Ci0gIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL3RyZWV2aWV3LmpzIikpJT4iPgotICA8L3NjcmlwdD4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiB0cmFuc2ZlclRvQWRkQ2F0ZWdvcnlEYXRhKCkKLSAgewotICAgIHRvcC5vcGVuZXIudG9wLmZyYW1lc1siPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Il0ubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFRyYW5zZmVyVG9BZGRDYXRlZ29yeURhdGFBY3Rpb24uZ2V0QWN0aW9uTGluayhzZXNzaW9uSWQsY2F0ZWdvcnlUTW9kZWxLZXkpKSklPiI7Ci0gIH0gIAotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08JSAgIAotICAgLy8gQ2hlY2sgaWYgdGhlIGNhdGVnb3J5IGlzIGEgY29tbW9uIGNhdGVnb3J5LgotICAgQ2F0ZWdvcnlNb2RlbCBjYXRlZ29yeU1vZGVsID0gKENhdGVnb3J5TW9kZWwpY29tbW9uQ2F0ZWdvcnlNb2RlbHMuZ2V0KGNhdGVnb3J5VE1vZGVsS2V5KTsKLSAgIGlmIChjYXRlZ29yeU1vZGVsID09IG51bGwpCi0gICB7Ci0gICAgIC8vIFRoZSBjYXRlZ29yeSBpcyB1c2VyLWRlZmluZWQuICAgICAKLSAgICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICAgIFVERElNYWluTm9kZSB1ZGRpTWFpbk5vZGUgPSAoVURESU1haW5Ob2RlKW5hdmlnYXRvck1hbmFnZXIuZ2V0Um9vdE5vZGUoKTsKLSAgICAgUmVnaXN0cnlOb2RlIHJlZ05vZGUgPSB1ZGRpTWFpbk5vZGUuZ2V0UmVnaXN0cnlOb2RlKG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCkpOwotICAgICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZS5nZXRUcmVlRWxlbWVudCgpOyAgIAotICAgICBjYXRlZ29yeU1vZGVsID0gKENhdGVnb3J5TW9kZWwpcmVnRWxlbWVudC5nZXRVc2VyRGVmaW5lZENhdGVnb3J5KGNhdGVnb3J5VE1vZGVsS2V5KTsKLSAgIH0KLSAgIGJ5dGUgcmMgPSBDYXRlZ29yeU1vZGVsLk9QRVJBVElPTl9TVUNDRVNTRlVMOwotICAgaWYgKCFjYXRlZ29yeU1vZGVsLmlzRGF0YUxvYWRlZCgpKQotICAgewotICAgICBzeW5jaHJvbml6ZWQoY2F0ZWdvcnlNb2RlbCkKLSAgICAgewotICAgICAgIGlmICghY2F0ZWdvcnlNb2RlbC5pc0RhdGFMb2FkZWQoKSkKLSAgICAgICAgIHJjID0gY2F0ZWdvcnlNb2RlbC5sb2FkRnJvbURlZmF1bHREYXRhRmlsZSgpOwotICAgICB9Ci0gICB9Ci0gICBpZiAocmMgIT0gQ2F0ZWdvcnlNb2RlbC5PUEVSQVRJT05fU1VDQ0VTU0ZVTCkKLSAgIHsKLSU+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAgIDx0ZD4KLSAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19JTkZPX05PX0NBVEVHT1JZX0RBVEEiLGNhdGVnb3J5TW9kZWwuZ2V0RGlzcGxheU5hbWUoKSklPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZCBoZWlnaHQ9MTAgdmFsaWduPSJib3R0b20iPiZuYnNwOzwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+Ci0gICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0FERF9DQVRFR09SWV9EQVRBIiwiamF2YXNjcmlwdDp0cmFuc2ZlclRvQWRkQ2F0ZWdvcnlEYXRhKCkiKSU+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08L2Rpdj4KLTwlICAgCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgIE5vZGVNYW5hZ2VyIGNhdGVnb3J5TWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRDYXRlZ29yeU1hbmFnZXIoY2F0ZWdvcnlNb2RlbCk7Ci0gICAgIFN0cmluZyBzZWxlY3RlZEFuY2hvck5hbWUgPSAiIjsKLSAgICAgaW50IGZvY3VzZWROb2RlSWQgPSBjYXRlZ29yeU1hbmFnZXIuZ2V0Rm9jdXNlZE5vZGVJZCgpOwotICAgICBTdHJpbmcgZm9jdXNlZEFuY2hvck5hbWUgPSBTdHJpbmcudmFsdWVPZihmb2N1c2VkTm9kZUlkKTsKLSAgICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBjYXRlZ29yeU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgIGlmIChzZWxlY3RlZE5vZGUgIT0gbnVsbCkKLSAgICAgewotICAgICAgIHNlbGVjdGVkQW5jaG9yTmFtZSA9IHNlbGVjdGVkTm9kZS5nZXRBbmNob3JOYW1lKCk7Ci0gICAgICAgaWYgKGZvY3VzZWROb2RlSWQgPT0gc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpKQotICAgICAgICAgZm9jdXNlZEFuY2hvck5hbWUgPSBzZWxlY3RlZEFuY2hvck5hbWU7Ci0gICAgIH0KLSU+Ci08ZGl2IGlkPSJ0cmVlY29udGVudGJvcmRlciI+Ci08JT1jYXRlZ29yeU1hbmFnZXIucmVuZGVyVHJlZVZpZXcocmVzcG9uc2UpJT4KLTwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHNlbGYubG9jYXRpb24uaGFzaD0iIzwlPWZvY3VzZWRBbmNob3JOYW1lJT4iCi0gIHNldFNlbGVjdGVkQW5jaG9yTmFtZSgiPCU9c2VsZWN0ZWRBbmNob3JOYW1lJT4iKTsKLTwvc2NyaXB0PgotPCUKLSAgIH0KLSU+ICAgCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvY2F0ZWdvcnlfdG9vbGJhci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvY2F0ZWdvcnlfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ZDhkNTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2NhdGVnb3J5X3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTwlCi0gICBTdHJpbmcgc2Vzc2lvbklkID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCk7Ci0gICBIdHRwU2Vzc2lvbiBjdXJyZW50U2Vzc2lvbiA9IChIdHRwU2Vzc2lvbilhcHBsaWNhdGlvbi5nZXRBdHRyaWJ1dGUoc2Vzc2lvbklkKTsKLSAgIENvbnRyb2xsZXIgY29udHJvbGxlciA9IChDb250cm9sbGVyKWN1cnJlbnRTZXNzaW9uLmdldEF0dHJpYnV0ZSgiY29udHJvbGxlciIpOwotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfQ0FURUdPUklFU19UT09MQkFSIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3Rvb2xiYXIuY3NzIikpJT4iPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0idG9vbGJhcmJvZHltYXJnaW4iIG9uVW5sb2FkPSJ0b3Aub3BlbmVyLmNhdGVnb3J5V2luZG93Q2xvc2VkPXRydWUiPgotPGRpdiBpZD0idG9vbGJhcmJvcmRlciI+Ci0gIDxkaXYgaWQ9InRvb2xiYXIiPgotICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PTI1IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9pbWFnZXMvY2F0ZWdvcnkuZ2lmIikpJT4iIGFsdD0iIiB3aWR0aD0xNiBoZWlnaHQ9MTY+PC90ZD4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCIgd2lkdGg9IioiIGhlaWdodD0yNSBub3dyYXAgY2xhc3M9InRleHQiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfQ0FURUdPUklFUyIpJT48L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICA8L2Rpdj4KLTwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHRvcC5vcGVuZXIuY2F0ZWdvcnlXaW5kb3dDbG9zZWQ9ZmFsc2U7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9kYXRhLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZGF0YS8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9kYXRhLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2RhdGEvZ2VvLWRhdGEudHh0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2RhdGEvZ2VvLWRhdGEudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTc4YWJkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9kYXRhL2dlby1kYXRhLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzODMgKzAsMCBAQAotZ2VvIy0tI1dvcmxkIy0tCi1nZW8jQUUjVW5pdGVkIEFyYWIgRW1pcmF0ZXMjLS0KLWdlbyNBRiNBZmdoYW5pc3RhbiMtLQotZ2VvI0FHI0FudGlndWEgQW5kIEJhcmJ1ZGEjLS0KLWdlbyNBSSNBbmd1aWxsYSMtLQotZ2VvI0FMI0FsYmFuaWEjLS0KLWdlbyNBTSNBcm1lbmlhIy0tCi1nZW8jQU4jTmV0aGVybGFuZHMgQW50aWxsZXMjLS0KLWdlbyNBTyNBbmdvbGEjLS0KLWdlbyNBUSNBbnRhcmN0aWNhIy0tCi1nZW8jQVIjQXJnZW50aW5hIy0tCi1nZW8jQVItQSNTYWx0YSNBUgotZ2VvI0FSLUIjQnVlbm9zIEFpcmVzI0FSCi1nZW8jQVItQyNEaXN0cml0byBGZWRlcmFsI0FSCi1nZW8jQVItRCNTYW4gTHVpcyNBUgotZ2VvI0FSLUUjRW50cmUgUmlvcyNBUgotZ2VvI0FSLUYjTGEgUmlvamEjQVIKLWdlbyNBUi1HI1NhbnRpYWdvIERlbCBFc3Rlcm8jQVIKLWdlbyNBUi1II0NoYWNvI0FSCi1nZW8jQVItSiNTYW4gSnVhbiNBUgotZ2VvI0FSLUsjQ2F0YW1hcmNhI0FSCi1nZW8jQVItTCNMYSBQYW1wYSNBUgotZ2VvI0FSLU0jTWVuZG96YSNBUgotZ2VvI0FSLU4jTWlzaW9uZXMjQVIKLWdlbyNBUi1QI0Zvcm1vc2EjQVIKLWdlbyNBUi1RI05ldXF1ZW4jQVIKLWdlbyNBUi1SI1JpbyBOZWdybyNBUgotZ2VvI0FSLVMjU2FudGEgRmUjQVIKLWdlbyNBUi1UI1R1Y3VtYW4jQVIKLWdlbyNBUi1VI0NodWJ1dCNBUgotZ2VvI0FSLVYjVGllcnJhIERlbCBGdWVnbyNBUgotZ2VvI0FSLVcjQ29ycmllbnRlcyNBUgotZ2VvI0FSLVgjQ29yZG9iYSNBUgotZ2VvI0FSLVkjSnVqdXkjQVIKLWdlbyNBUi1aI1NhbnRhIENydXojQVIKLWdlbyNBUyNBbWVyaWNhbiBTYW1vYSMtLQotZ2VvI0FUI0F1c3RyaWEjLS0KLWdlbyNBVSNBdXN0cmFsaWEjLS0KLWdlbyNBVS1DVCNBdXN0cmFsaWFuIENhcGl0YWwgVGVycml0b3J5I0FVCi1nZW8jQVUtTlMjTmV3IFNvdXRoIFdhbGVzI0FVCi1nZW8jQVUtTlQjTm9ydGhlcm4gVGVycml0b3J5I0FVCi1nZW8jQVUtUUwjUXVlZW5zbGFuZCNBVQotZ2VvI0FVLVNBI1NvdXRoIEF1c3RyYWxpYSNBVQotZ2VvI0FVLVRTI1Rhc21hbmlhI0FVCi1nZW8jQVUtVkkjVmljdG9yaWEjQVUKLWdlbyNBVS1XQSNXZXN0ZXJuIEF1c3RyYWxpYSNBVQotZ2VvI0FXI0FydWJhIy0tCi1nZW8jQVojQXplcmJhaWphbiMtLQotZ2VvI0JBI0Jvc25pYS1IZXJjZWdvdmluYSMtLQotZ2VvI0JCI0JhcmJhZG9zIy0tCi1nZW8jQkQjQmFuZ2xhZGVzaCMtLQotZ2VvI0JFI0JlbGdpdW0jLS0KLWdlbyNCRiNCdXJraW5hIEZhc28jLS0KLWdlbyNCRyNCdWxnYXJpYSMtLQotZ2VvI0JII0JhaHJhaW4jLS0KLWdlbyNCSSNCdXJ1bmRpIy0tCi1nZW8jQkojQmVuaW4jLS0KLWdlbyNCTSNCZXJtdWRhIy0tCi1nZW8jQk4jQnJ1bmVpIERhcnVzc2FsYW0jLS0KLWdlbyNCTyNCb2xpdmlhIy0tCi1nZW8jQlIjQnJhemlsIy0tCi1nZW8jQlItQUMjQWNyZSNCUgotZ2VvI0JSLUFMI0FsYWdvYXMjQlIKLWdlbyNCUi1BTSNBbWF6b25hcyNCUgotZ2VvI0JSLUFQI0FtYXBhI0JSCi1nZW8jQlItQkEjQmFoaWEjQlIKLWdlbyNCUi1DRSNDZWFyYSNCUgotZ2VvI0JSLURGI0Rpc3RyaXRvIEZlZGVyYWwjQlIKLWdlbyNCUi1FUyNFc3Bpcml0byBTYW50byNCUgotZ2VvI0JSLUdPI0dvaWFzI0JSCi1nZW8jQlItTUEjTWFyYW5oYW8jQlIKLWdlbyNCUi1NRyNNaW5hcyBHZXJhaXMjQlIKLWdlbyNCUi1NUyNNYXRvIEdyb3NzbyBEbyBTdWwjQlIKLWdlbyNCUi1NVCNNYXRvIEdyb3NzbyNCUgotZ2VvI0JSLVBBI1BhcmEjQlIKLWdlbyNCUi1QQiNQYXJhaWJhI0JSCi1nZW8jQlItUEUjUGVybmFtYnVjbyNCUgotZ2VvI0JSLVBJI1BpYXVpI0JSCi1nZW8jQlItUFIjUGFyYW5hI0JSCi1nZW8jQlItUkojUmlvIERlIEphbmVpcm8jQlIKLWdlbyNCUi1STiNSaW8gR3JhbmRlIERvIE5vcnRlI0JSCi1nZW8jQlItUk8jUm9uZG9uaWEjQlIKLWdlbyNCUi1SUiNSb3JhaW1hI0JSCi1nZW8jQlItUlMjUmlvIEdyYW5kZSBEbyBTdWwjQlIKLWdlbyNCUi1TQyNTYW50YSBDYXRhcmluYSNCUgotZ2VvI0JSLVNFI1NlcmdpcGUjQlIKLWdlbyNCUi1TUCNTYW8gUGF1bG8jQlIKLWdlbyNCUi1UTyNUb2NhbnRpbmEjQlIKLWdlbyNCUyNCYWhhbWFzIy0tCi1nZW8jQlQjQmh1dGFuIy0tCi1nZW8jQlUjQnVybWEgKFNlZSBNTSBNeWFubWFyKSMtLQotZ2VvI0JXI0JvdHN3YW5hIy0tCi1nZW8jQlkjQmVsYXJ1cyMtLQotZ2VvI0JZLUJSI0JyZXN0c2theWEgdm9ibGFzdHMnI0JZCi1nZW8jQlktSE8jSG9teWVsJ3NrYXlhIHZvYmxhc3RzJyNCWQotZ2VvI0JZLUhSI0hyb2R6ZW5za2F5YSB2b2JsYXN0cycjQlkKLWdlbyNCWS1NQSNNYWhpbHlvd3NrYXlhIHZvYmxhc3RzJyNCWQotZ2VvI0JZLU1JI01pbnNrYXlhIHZvYmxhc3RzJyNCWQotZ2VvI0JZLVZJI1ZpdHN5ZWJza2F5YSB2b2JsYXN0cycjQlkKLWdlbyNCWiNCZWxpemUjLS0KLWdlbyNDQSNDYW5hZGEjLS0KLWdlbyNDQS1BQiNBbGJlcnRhI0NBCi1nZW8jQ0EtQkMjQnJpdGlzaCBDb2x1bWJpYSNDQQotZ2VvI0NBLU1CI01hbml0b2JhI0NBCi1nZW8jQ0EtTkIjTmV3IEJydW5zd2ljayNDQQotZ2VvI0NBLU5GI05ld2ZvdW5kbGFuZCNDQQotZ2VvI0NBLU5TI05vdmEgU2NvdGlhI0NBCi1nZW8jQ0EtTlQjTm9ydGh3ZXN0IFRlcnJpdG9yaWVzI0NBCi1nZW8jQ0EtTlUjTnVuYXZ1dCNDQQotZ2VvI0NBLU9OI09udGFyaW8jQ0EKLWdlbyNDQS1QRSNQcmluY2UgRWR3YXJkIElzbGFuZCNDQQotZ2VvI0NBLVFDI1F1ZWJlYyNDQQotZ2VvI0NBLVNLI1Nhc2thdGNoZXdhbiNDQQotZ2VvI0NBLVlUI1l1a29uIFRlcnJpdG9yeSNDQQotZ2VvI0NDI0NvY29zIChLZWVsaW5nKSBJc2xhbmRzIy0tCi1nZW8jQ0QjIkNvbmdvLCBEZW1vY3JhdGljIFJlcHVibGljIG9mIiMtLQotZ2VvI0NGI0NlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYyMtLQotZ2VvI0NHI0NvbmdvIy0tCi1nZW8jQ0gjU3dpdHplcmxhbmQjLS0KLWdlbyNDSC1BRyNBYXJnYXUjQ0gKLWdlbyNDSC1BSSNBcHBlbnplbGwgSW5uZXItUmhvZGVuI0NICi1nZW8jQ0gtQVIjQXBwZW56ZWxsIEF1c3Nlci1SaG9kZW4jQ0gKLWdlbyNDSC1CRSNCZXJuI0NICi1nZW8jQ0gtQkwjQmFzZWwtTGFuZHNjaGFmdCNDSAotZ2VvI0NILUJTI0Jhc2VsLVN0YWR0I0NICi1nZW8jQ0gtRlIjRnJpYm91cmcjQ0gKLWdlbyNDSC1HRSNHZW7DqHZlI0NICi1nZW8jQ0gtR0wjR2xhcnVzI0NICi1nZW8jQ0gtR1IjR3JhdWLDvG5kZW4jQ0gKLWdlbyNDSC1KVSNKdXJhI0NICi1nZW8jQ0gtTFUjTHV6ZXJuI0NICi1nZW8jQ0gtTkUjTmV1Y2hhdGVsI0NICi1nZW8jQ0gtTlcjTmlkd2FsZGVuI0NICi1nZW8jQ0gtT1cjT2J3YWxkZW4jQ0gKLWdlbyNDSC1TRyNTdCBHYWxsZW4jQ0gKLWdlbyNDSC1TSCNTY2hhZmZoYXVzZW4jQ0gKLWdlbyNDSC1TTyNTb2xvdGh1cm4jQ0gKLWdlbyNDSC1TWiNTY2h3eXojQ0gKLWdlbyNDSC1URyNUaHVyZ2F1I0NICi1nZW8jQ0gtVEkjVGljaW5vI0NICi1nZW8jQ0gtVVIjVXJpI0NICi1nZW8jQ0gtVkQjVmF1ZCNDSAotZ2VvI0NILVZTI1ZhbGFpcyNDSAotZ2VvI0NILVpHI1p1ZyNDSAotZ2VvI0NILVpII1rDvHJpY2gjQ0gKLWdlbyNDSSNDb3RlIEQnSXZvaXJlIy0tCi1nZW8jQ0sjQ29vayBJc2xhbmRzIy0tCi1nZW8jQ0wjQ2hpbGUjLS0KLWdlbyNDTSNDYW1lcm9vbiMtLQotZ2VvI0NOI0NoaW5hIy0tCi1nZW8jQ04tMTEjQmVpamluZyNDTgotZ2VvI0NOLTEyI1RpYW5qaW4jQ04KLWdlbyNDTi0xMyNIZWJlaSNDTgotZ2VvI0NOLTE0I1NoYW54aSNDTgotZ2VvI0NOLTE1I05laSBNb25nb2wjQ04KLWdlbyNDTi0yMSNMaWFvbmluZyNDTgotZ2VvI0NOLTIyI0ppbGluI0NOCi1nZW8jQ04tMjMjSGVpbG9uZ2ppYW5nI0NOCi1nZW8jQ04tMzEjU2hhbmdoYWkjQ04KLWdlbyNDTi0zMiNKaWFuZ3N1I0NOCi1nZW8jQ04tMzMjWmhlamlhbmcjQ04KLWdlbyNDTi0zNCNBbmh1aSNDTgotZ2VvI0NOLTM1I0Z1amlhbiNDTgotZ2VvI0NOLTM2I0ppYW5neGkjQ04KLWdlbyNDTi0zNyNTaGFuZG9uZyNDTgotZ2VvI0NOLTQxI0hlbmFuI0NOCi1nZW8jQ04tNDIjSHViZWkjQ04KLWdlbyNDTi00MyNIdW5hbiNDTgotZ2VvI0NOLTQ0I0d1YW5nZG9uZyNDTgotZ2VvI0NOLTQ1I0d1YW5neGkjQ04KLWdlbyNDTi00NiNIYWluYW4jQ04KLWdlbyNDTi01MSNTaWNodWFuI0NOCi1nZW8jQ04tNTIjR3VpemhvdSNDTgotZ2VvI0NOLTUzI1l1bm5hbiNDTgotZ2VvI0NOLTU0I1hpemFuZyNDTgotZ2VvI0NOLTYxI1NoYWFueGkjQ04KLWdlbyNDTi02MiNHYW5zdSNDTgotZ2VvI0NOLTYzI1FpbmdoYWkjQ04KLWdlbyNDTi02NCNOaW5neGlhI0NOCi1nZW8jQ04tNjUjWGluamlhbmcjQ04KLWdlbyNDTi03MSNUYWl3YW4jQ04KLWdlbyNDTi05MSNYaWFuZ2dhbmcgKEhvbmcgS29uZykjQ04KLWdlbyNDTi05MiNBb21lbiAoTWFjYXUpI0NOCi1nZW8jQ08jQ29sb21iaWEjLS0KLWdlbyNDUiNDb3N0YSBSaWNhIy0tCi1nZW8jQ1MjRm9ybWVyIEN6ZWNob3Nsb3Zha2lhIy0tCi1nZW8jQ1UjQ3ViYSMtLQotZ2VvI0NWI0NhcGUgVmVyZGUjLS0KLWdlbyNDWCNDaHJpc3RtYXMgSXNsYW5kcyMtLQotZ2VvI0NZI0N5cHJ1cyMtLQotZ2VvI0NaI0N6ZWNoIFJlcHVibGljIy0tCi1nZW8jREUjIkdlcm1hbnksIEZlZGVyYWwgUmVwdWJsaWMgb2YiIy0tCi1nZW8jREUtQkUjQmVybGluI0RFCi1nZW8jREUtQlIjQnJhbmRlbmJ1cmcjREUKLWdlbyNERS1CVyNCYWRlbi1Xw7xydHRlbWJlcmcjREUKLWdlbyNERS1CWSNCYXllcm4jREUKLWdlbyNERS1IQiNCcmVtZW4gKEhhbnNlc3RhZHQpI0RFCi1nZW8jREUtSEUjSGVzc2VuI0RFCi1nZW8jREUtSEgjSGFtYnVyZyAoSGFuc2VzdGFkdCkjREUKLWdlbyNERS1NViNNZWNrbGVuYnVyZy1Wb3Jwb21tZXJuI0RFCi1nZW8jREUtTkkjTmllZGVyc2FjaHNlbiNERQotZ2VvI0RFLU5XI05vcmRyaGVpbi1XZXN0ZmFsZW4jREUKLWdlbyNERS1SUCNSaGVpbmxhbmQtUGZhbHojREUKLWdlbyNERS1TSCNTY2hsZXN3aWctSG9sc3RlaW4jREUKLWdlbyNERS1TTCNTYWFybGFuZCNERQotZ2VvI0RFLVNOI1NhY2hzZW4jREUKLWdlbyNERS1TVCNTYWNoc2VuLUFuaGFsdCNERQotZ2VvI0RFLVRII1Row7xyaW5nZW4jREUKLWdlbyNESiNEamlib3V0aSMtLQotZ2VvI0RLI0Rlbm1hcmsjLS0KLWdlbyNETSNEb21pbmljYSMtLQotZ2VvI0RPI0RvbWluaWNhbiBSZXB1YmxpYyMtLQotZ2VvI0RPLTAyI0F6dWEjRE8KLWdlbyNETy0wMyNCYWhvcnVjbyNETwotZ2VvI0RPLTA0I0JhcmFob25hI0RPCi1nZW8jRE8tMDUjRGFqYWLDs24jRE8KLWdlbyNETy0wNiNEdWFydGUjRE8KLWdlbyNETy0wOCNFbCBTZXlibyNETwotZ2VvI0RPLTA5I0VzcGFpbGxhdCNETwotZ2VvI0RPLTMwI0hhdG8gTWF5b3IjRE8KLWdlbyNETy0xMCNJbmRlcGVuZGVuY2lhI0RPCi1nZW8jRE8tMTEjTGEgQWx0YWdyYWNpYSNETwotZ2VvI0RPLTA3I0xhIEVzdHJlbGxldGEjRE8KLWdlbyNETy0xMiNMYSBSb21hbmEjRE8KLWdlbyNETy0xMyNMYSBWZWdhI0RPCi1nZW8jRE8tMTQjTWFyw61hIFRyaW5pZGFkIFPDoW5jaGV6I0RPCi1nZW8jRE8tMjgjTW9uc2Vub3IgTm91ZWwjRE8KLWdlbyNETy0xNSNNb250ZSBDcmlzdGkjRE8KLWdlbyNETy0yOSNNb250ZSBQbGF0YSNETwotZ2VvI0RPLTE2I1BlZGVybmFsZXMjRE8KLWdlbyNETy0xNyNQZXJhdmlhI0RPCi1nZW8jRE8tMTgjUHVlcnRvIFBsYXRhI0RPCi1nZW8jRE8tMTkjU29sY2VkbyNETwotZ2VvI0RPLTIwI1NhbWFuw6EjRE8KLWdlbyNETy0yMSNTYW4gQ3Jpc3TDs2JhbCNETwotZ2VvI0RPLTIyI1NhbiBKdWFuI0RPCi1nZW8jRE8tMjMjU2FuIFBlZHJvIGRlIE1hY29yw61zI0RPCi1nZW8jRE8tMjQjU8OhbmNoZXogUmFtw61yZXojRE8KLWdlbyNETy0yNSNTYW50aWFnbyNETwotZ2VvI0RPLTI2I1NhbnRpYWdvIFJvZHLDrWd1ZXojRE8KLWdlbyNETy0yNyNWYWx2ZXJkZSNETwotZ2VvI0RaI0FsZ2VyaWEjLS0KLWdlbyNFQyNFY3VhZG9yIy0tCi1nZW8jRUUjRXN0b25pYSMtLQotZ2VvI0VHI0VneXB0Iy0tCi1nZW8jRUgjV2VzdGVybiBTYWhhcmEjLS0KLWdlbyNFUiNFcml0cmVhIy0tCi1nZW8jRVItQU4jQW5zZWJhI0VSCi1nZW8jRVItRFUjRGVidWIjRVIKLWdlbyNFUi1ESyNEZWJ1YmF3aSBLZXlpaCBCYWhyaSBbRGVidWItS2VpaC1CYWhyaV0jRVIKLWdlbyNFUi1HQiNHYXNoLUJhcmthI0VSCi1nZW8jRVItTUEjTWFha2VsIFtNYWVrZWxdI0VSCi1nZW8jRVItU0sjU2VtZW5hd2kgS2V5aWggQmFocmkgW1NlbWllbi1LZWloLUJhaHJpXSNFUgotZ2VvI0VTI1NwYWluIy0tCi1nZW8jRVMtQU4jQW5kYWx1Y8OtYSNFUwotZ2VvI0VTLUFMI0FsbWVyw61hI0VTLUFOCi1nZW8jRVMtQ0EjQ8OhZGl6I0VTLUFOCi1nZW8jRVMtQ08jQ8OzcmRvYmEjRVMtQU4KLWdlbyNFUy1HUiNHcmFuYWRhI0VTLUFOCi1nZW8jRVMtSCNIdWVsdmEjRVMtQU4KLWdlbyNFUy1KI0phw6luI0VTLUFOCi1nZW8jRVMtTUEjTcOhbGFnYSNFUy1BTgotZ2VvI0VTLVNFI1NldmlsbGEjRVMtQU4KLWdlbyNFUy1BUiNBcmFnw7NuI0VTCi1nZW8jRVMtSFUjSHVlc2NhI0VTLUFSCi1nZW8jRVMtVEUjVGVydWVsI0VTLUFSCi1nZW8jRVMtWiNaYXJhZ296YSNFUy1BUgotZ2VvI0VTLU8jIkFzdHVyaWFzLCBQcmluY2lwYWRvIGRlIiNFUwotZ2VvI0VTLUNOI0NhbmFyaWFzI0VTCi1nZW8jRVMtR0MjTGFzIFBhbG1hcyNFUy1DTgotZ2VvI0VTLVRGI1NhbnRhIENydXogZGUgVGVuZXJpZmUjRVMtQ04KLWdlbyNFUy1TI0NhbnRhYnJpYSNFUwotZ2VvI0VTLUNNI0Nhc3RpbGxhLUxhIE1hbmNoYSNFUwotZ2VvI0VTLUFCI0FsYmFjZXRlI0VTLUNNCi1nZW8jRVMtQ1IjQ3VpZGFkIFJlYWwjRVMtQ00KLWdlbyNFUy1DVSNDdWVuY2EjRVMtQ00KLWdlbyNFUy1HVSNHdWFkYWxhamFyYSNFUy1DTQotZ2VvI0VTLVRPI1RvbGVkbyNFUy1DTQotZ2VvI0VTLUNMI0Nhc3RpbGxhIHkgTGXDs24jRVMKLWdlbyNFUy1BViPDgXZpbGEjRVMtQ0wKLWdlbyNFUy1CVSNCdXJnb3MjRVMtQ0wKLWdlbyNFUy1MRSNMZcOzbiNFUy1DTAotZ2VvI0VTLVAjUGFsZW5jaWEjRVMtQ0wKLWdlbyNFUy1TQSNTYWxhbWFuY2EjRVMtQ0wKLWdlbyNFUy1TRyNTZWdvdmlhI0VTLUNMCi1nZW8jRVMtU08jU29yaWEjRVMtQ0wKLWdlbyNFUy1WQSNWYWxsYWRvbGlkI0VTLUNMCi1nZW8jRVMtWkEjWmFtb3JhI0VTLUNMCi1nZW8jRVMtQ1QjQ2F0YWx1bmEjRVMKLWdlbyNFUy1CI0JhcmNlbG9uYSNFUy1DVAotZ2VvI0VTLUdFI0dpcm9uYSBbR2Vyb25hXSNFUy1DVAotZ2VvI0VTLUwjTGxlaWRhIFtMw6lydWRhXSNFUy1DVAotZ2VvI0VTLVQjVGFycmFnb25hI0VTLUNUCi1nZW8jRVMtRVgjRXh0cmVtYWR1cmEjRVMKLWdlbyNFUy1CQSNCYWRham96I0VTLUVYCi1nZW8jRVMtQ0MjQ8OhY2VyZXMjRVMtRVgKLWdlbyNFUy1HQSNHYWxpY2lhI0VTCi1nZW8jRVMtQyNMYSBDb3J1bmEjRVMtR0EKLWdlbyNFUy1MVSNMdWdvI0VTLUdBCi1nZW8jRVMtT1IjT3JlbnNlI0VTLUdBCi1nZW8jRVMtUE8jUG9udGV2ZWRyYSNFUy1HQQotZ2VvI0VTLVBNI0lzbGFzIEJhbGVhcmVzI0VTCi1nZW8jRVMtTE8jTGEgUmlvamEjRVMKLWdlbyNFUy1NIyJNYWRyaWQsIENvbXVuaWRhZCBkZSIjRVMKLWdlbyNFUy1NVSMiTXVyY2lhLCBSZWdpw7NuIGRlIiNFUwotZ2VvI0VTLU5BIyJOYXZhcnJhLCBDb211bmlkYWQgRm9yYWwgZGUiI0VTCi1nZW8jRVMtUFYjUGHDrXMgVmFzY2kjRVMKLWdlbyNFUy1WSSPDgWxhdmEjRVMtUFYKLWdlbyNFUy1TUyNHdWlww7p6Y29hI0VTLVBWCi1nZW8jRVMtQkkjVml6Y2F5YSNFUy1QVgotZ2VvI0VTLVZDIyJWYWxlbmNpYW5hLCBDb211bmlkYWQiI0VTCi1nZW8jRVMtQSNBbGljYW50ZSNFUy1WQwotZ2VvI0VTLUNTI0Nhc3RlbGzDs24jRVMtVkMKLWdlbyNFUy1WI1ZhbGVuY2lhI0VTLVZDCi1nZW8jRVMtQ0UjQ2V1dGEjRVMKLWdlbyNFUy1NTCNNZWxpbGxhI0VTCi1nZW8jRVQjRXRoaW9waWEjLS0KLWdlbyNGSSNGaW5sYW5kIy0tCi1nZW8jRkktQUwjQWh2ZW5hbm1hYW4gTWFha3VudGEgKEZpKSDDhWxhbmRzIEzDpG4gKFN2KSNGSQotZ2VvI0ZJLUVTI0V0ZWzDpC1TdW9tZW4gTMOkw6RuaSAoRmkpIFPDtmRyYSBGaW5sYW5kcyBMw6RuIChTdikjRkkKLWdlbyNGSS1JUyNJdMOkLVN1b21lbiBMw6TDpG5pIChGaSkgw5ZzdHJhIEZpbmxhbmRzIEzDpG4gKFN2KSNGSQotZ2VvI0ZJLUxMI0xhcGluIEzDpMOkbmkgKEZpKSBMYXBsYW5kcyBMw6RuIChTdikjRkkKLWdlbyNGSS1MUyNMw6Ruc2ktU3VvbWVuIEzDpMOkbmkgKEZpKSBWw6RzdHJhIEZpbmxhbmRzIEzDpG4gKFN2KSNGSQotZ2VvI0ZJLU9MI091bHVuIEzDpMOkbmkgKEZpKSBVbGXDpWJvcmdzIEzDpG4gKFN2KSNGSQotZ2VvI0ZKI0ZpamkjLS0KLWdlbyNGSyNGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykjLS0KLWdlbyNGTSNGZWRlcmF0ZWQgU3RhdGVzIE9mIE1pY3JvbmVzaWEjLS0KLWdlbyNGTyNGYWVyb2UgSXNsYW5kcyMtLQotZ2VvI0ZSI0ZyYW5jZSMtLQotZ2VvI0ZSLTAxI0FpbiNGUi1WCi1nZW8jRlItMDIjQWlzbmUjRlItUwotZ2VvI0ZSLTAzI0FsbGllciNGUi1DCi1nZW8jRlItMDQjQWxwZXMtRGUtSGF1dGUtUHJvdmVuY2UjRlItVQotZ2VvI0ZSLTA1I0hhdXRlcy1BbHBlcyNGUi1VCi1nZW8jRlItMDYjQWxwZXMtTWFyaXRpbWVzI0ZSLVUKLWdlbyNGUi0wNyNBcmTDqGNoZSNGUi1WCi1nZW8jRlItMDgjQXJkZW5uZXMjRlItRwotZ2VvI0ZSLTA5I0FyacOoZ2UjRlItTgotZ2VvI0ZSLTEwI0F1YmUjRlItRwotZ2VvI0ZSLTExI0F1ZGUjRlItSwotZ2VvI0ZSLTEyI0F2ZXlyb24jRlItTgotZ2VvI0ZSLTEzI0JvdWNoZXMtRHUtUmjDtG5lI0ZSLVUKLWdlbyNGUi0xNCNDYWx2YWRvcyNGUi1QCi1nZW8jRlItMTUjQ2FudGFsI0ZSLUMKLWdlbyNGUi0xNiNDaGFyZW50ZSNGUi1UCi1nZW8jRlItMTcjQ2hhcmVudGUtTWFyaXRpbWUjRlItVAotZ2VvI0ZSLTE4I0NoZXIjRlItRgotZ2VvI0ZSLTE5I0NvcnLDqHplI0ZSLUwKLWdlbyNGUi0yMSNDw7R0ZS1EJ09yI0ZSLUQKLWdlbyNGUi0yMiNDw7R0ZXMtRCdBcm1vciNGUi1FCi1nZW8jRlItMjMjQ3JldXNlI0ZSLUwKLWdlbyNGUi0yNCNEb3Jkb2duZSNGUi1CCi1nZW8jRlItMjUjRG91YnMjRlItSQotZ2VvI0ZSLTI2I0Ryw7RtZSNGUi1WCi1nZW8jRlItMjcjRXVyZSNGUi1RCi1nZW8jRlItMjgjRXVyZS1FdC1Mb2lyI0ZSLUYKLWdlbyNGUi0yOSNGaW5pc3TDqHJlI0ZSLUUKLWdlbyNGUi0yQSNDb3JzZS1EdS1TdWQjRlItSAotZ2VvI0ZSLTJCI0hhdXRlLUNvcnNlI0ZSLUgKLWdlbyNGUi0zMCNHYXJkI0ZSLUsKLWdlbyNGUi0zMSNIYXV0ZS1HYXJvbm5lI0ZSLU4KLWdlbyNGUi0zMiNHZXJzI0ZSLU4KLWdlbyNGUi0zMyNHaXJvbmRlI0ZSLUIKLWdlbyNGUi0zNCNIw6lyYXVsdCNGUi1LCi1nZW8jRlItMzUjSWxsZS1FdC1WaWxhaW5lI0ZSLUUKLWdlbyNGUi0zNiNJbmRyZSNGUi1GCi1nZW8jRlItMzcjSW5kcmUtRXQtTG9pcmUjRlItRgotZ2VvI0ZSLTM4I0lzw6hyZSNGUi1WCi1nZW8jRlItMzkjSnVyYSNGUi1JCi1nZW8jRlItNDAjTGFuZGVzI0ZSLUIKLWdlbyNGUi00MSNMb2lyLUV0LUNoZXIjRlItRgotZ2VvI0ZSLTQyI0xvaXJlI0ZSLVYKLWdlbyNGUi00MyNIYXV0ZS1Mb2lyZSNGUi1DCi1nZW8jRlItNDQjTG9pcmUtQXRsYW50aXF1ZSNGUi1SCi1nZW8jRlItNDUjTG9pcmV0I0ZSLUYKLWdlbyNGUi00NiNMb3QjRlItTgotZ2VvI0ZSLTQ3I0xvdC1FdC1HYXJvbm5lI0ZSLUIKLWdlbyNGUi00OCNMb3rDqHJlI0ZSLUsKLWdlbyNGUi00OSNNYWluZS1FdC1Mb2lyZSNGUi1SCi1nZW8jRlItNTAjTWFuY2hlI0ZSLVAKLWdlbyNGUi01MSNNYXJuZSNGUi1HCi1nZW8jRlItNTIjSGF1dGUtTWFybmUjRlItRwotZ2VvI0ZSLTUzI01heWVubmUjRlItUgotZ2VvI0ZSLTU0I01ldXJ0aGUtRXQtTW9zZWxsZSNGUi1NCi1nZW8jRlItNTUjTWV1c2UjRlItTQotZ2VvI0ZSLTU2I01vcmJpaGFuI0ZSLUUKLWdlbyNGUi01NyNNb3NlbGxlI0ZSLU0KLWdlbyNGUi01OCNOacOodnJlI0ZSLUQKLWdlbyNGUi01OSNOb3JkI0ZSLU8KLWdlbyNGUi02MCNPaXNlI0ZSLVMKLWdlbyNGUi02MSNPcm5lI0ZSLVAKLWdlbyNGUi02MiNQYXMtRGUtQ2FsYWlzI0ZSLU8KLWdlbyNGUi02MyNQdXktRGUtRMO0bWUjRlItQwotZ2VvI0ZSLTY0I1B5csOpbsOpZXMtQXRsYW50aXF1ZXMjRlItQgotZ2VvI0ZSLTY1I0hhdXRlcy1QeXLDqW7DqWVzI0ZSLU4KLWdlbyNGUi02NiNQeXLDqW7DqWVzLU9yaWVudGFsZXMjRlItSwotZ2VvI0ZSLTY3I0Jhcy1SaGluI0ZSLUEKLWdlbyNGUi02OCNIYXV0LVJoaW4jRlItQQotZ2VvI0ZSLTY5I1Jow7RuZSNGUi1WCi1nZW8jRlItNzAjSGF1dGUtU2HDtG5lI0ZSLUkKLWdlbyNGUi03MSNTYcO0bmUtRXQtTG9pcmUjRlItRAotZ2VvI0ZSLTcyI1NhcnRoZSNGUi1SCi1nZW8jRlItNzMjU2F2b2llI0ZSLVYKLWdlbyNGUi03NCNIYXV0ZS1TYXZvaWUjRlItVgotZ2VvI0ZSLTc1I1BhcmlzI0ZSLUoKLWdlbyNGUi03NiNTZWluZS1NYXJpdGltZSNGUi1RCi1nZW8jRlItNzcjU2VpbmUtRXQtTWFybmUjRlItSgotZ2VvI0ZSLTc4I1l2ZWxpbmVzI0ZSLUoKLWdlbyNGUi03OSNEZXV4LVPDqHZyZXMjRlItQgotZ2VvI0ZSLTgwI1NvbW1lI0ZSLVMKLWdlbyNGUi04MSNUYXJuI0ZSLU4KLWdlbyNGUi04MiNUYXJuLUV0LUdhcm9ubmUjRlItTgotZ2VvI0ZSLTgzI1ZhciNGUi1VCi1nZW8jRlItODQjVmF1Y2x1c2UjRlItVQotZ2VvI0ZSLTg1I1ZlbmTDqWUjRlItUgotZ2VvI0ZSLTg2I1ZpZW5uZSNGUi1UCi1nZW8jRlItODcjSGF1dGUtVmllbm5lI0ZSLUwKLWdlbyNGUi04OCNWb3NnZXMjRlItTQotZ2VvI0ZSLTg5I1lvbm5lI0ZSLUQKLWdlbyNGUi05MCNUZXJyaXRvaXJlIERlIEJlbGZvcnQjRlItSQotZ2VvI0ZSLTkxI0Vzc29ubmUjRlItSgotZ2VvI0ZSLTkyI0hhdXRzLURlLVNlaW5lI0ZSLUoKLWdlbyNGUi05MyNTZWluZS1TYWludC1EZW5pcyNGUi1KCi1nZW8jRlItOTQjVmFsLURlLU1hcm5lI0ZSLUoKLWdlbyNGUi05NSNWYWwtRCdPaXNlI0ZSLUoKLWdlbyNGUi1BI0Fsc2FjZSNGUgotZ2VvI0ZSLUIjQXF1aXRhaW5lI0ZSCi1nZW8jRlItQyNBdXZlcmduZSNGUgotZ2VvI0ZSLUQjQm91cmdvZ25lI0ZSCi1nZW8jRlItRSNCcmV0YWduZSNGUgotZ2VvI0ZSLUYjQ2VudHJlI0ZSCi1nZW8jRlItRyNDaGFtcGFnbmUtQXJkZW5uZSNGUgotZ2VvI0ZSLUgjQ29yc2UjRlIKLWdlbyNGUi1JI0ZyYW5jaGUtQ29tdMOpI0ZSCi1nZW8jRlItSiNJbGUtRGUtRnJhbmNlI0ZSCi1nZW8jRlItSyNMYW5ndWVkb2MtUm91c3NpbGxvbiNGUgotZ2VvI0ZSLUwjTGltb3VzaW4jRlIKLWdlbyNGUi1NI0xvcnJhaW5lI0ZSCi1nZW8jRlItTiNNaWRpLVB5csOpbsOpZXMjRlIKLWdlbyNGUi1PI05vcmQtUGFzLURlLUNhbGFpcyNGUgotZ2VvI0ZSLVAjQmFzc2UtTm9ybWFuZGllI0ZSCi1nZW8jRlItUSNIYXV0ZS1Ob3JtYW5kaWUjRlIKLWdlbyNGUi1SI1BheXMgRGUgTGEgTG9pcmUjRlIKLWdlbyNGUi1TI1BpY2FyZGllI0ZSCi1nZW8jRlItVCNQb2l0b3UtQ2hhcmVudGVzI0ZSCi1nZW8jRlItVSNQcm92ZW5jZS1BbHBlcy1Dw7R0ZSBEJ0F6dXIjRlIKLWdlbyNGUi1WI1Jow7RuZS1BbHBlcyNGUgotZ2VvI0dBI0dhYm9uIy0tCi1nZW8jR0IjVW5pdGVkIEtpbmdkb20jLS0KLWdlbyNHQi1BTlQjQW50cmltI0dCLU5JUgotZ2VvI0dCLUFSRCNBcmRzI0dCLU5JUgotZ2VvI0dCLUFSTSNBcm1hZ2gjR0ItTklSCi1nZW8jR0ItQVZOI0F2b24jR0ItRU5HCi1nZW8jR0ItQkRGI0JlZGZvcmRzaGlyZSNHQi1FTkcKLWdlbyNHQi1CRlMjQmVsZmFzdCNHQi1OSVIKLWdlbyNHQi1CS00jQnVja2luZ2hhbXNoaXJlI0dCLUVORwotZ2VvI0dCLUJMQSNCYWxseW1lbmEjR0ItTklSCi1nZW8jR0ItQkxZI0JhbGx5bW9uZXkjR0ItTklSCi1nZW8jR0ItQk5CI0JhbmJyaWRnZSNHQi1OSVIKLWdlbyNHQi1CT1IjQm9yZGVycyBSZWdpb24jR0ItU0NUCi1nZW8jR0ItQlJLI0JlcmtzaGlyZSNHQi1FTkcKLWdlbyNHQi1DQU0jQ2FtYnJpZGdlc2hpcmUjR0ItRU5HCi1nZW8jR0ItQ0VOI0NlbnRyYWwgUmVnaW9uI0dCLVNDVAotZ2VvI0dCLUNHViNDcmFpZ2F2b24jR0ItTklSCi1nZW8jR0ItQ0hBI0NoYW5uZWwgSXNsYW5kcyNHQgotZ2VvI0dCLUNIUyNDaGVzaGlyZSNHQi1FTkcKLWdlbyNHQi1DS0YjQ2Fycmlja2Zlcmd1cyNHQi1OSVIKLWdlbyNHQi1DS1QjQ29va3N0b3duI0dCLU5JUgotZ2VvI0dCLUNMUiNDb2xlcmFpbmUjR0ItTklSCi1nZW8jR0ItQ0xWI0NsZXZlbGFuZCNHQi1FTkcKLWdlbyNHQi1DTUEjQ3VtYnJpYSNHQi1FTkcKLWdlbyNHQi1DT04jQ29ybndhbGwjR0ItRU5HCi1nZW8jR0ItQ1NSI0Nhc3RsZXJlYWdoI0dCLU5JUgotZ2VvI0dCLUNXRCNDbHd5ZCNHQi1XTFMKLWdlbyNHQi1EQlkjRGVyYnlzaGlyZSNHQi1FTkcKLWdlbyNHQi1ERkQjRHlmZWQjR0ItV0xTCi1nZW8jR0ItREdOI0R1bmdhbm5vbiNHQi1OSVIKLWdlbyNHQi1ER1kjRHVtZnJpZXMgJiBHYWxsb3dheSBSZWdpb24jR0ItU0NUCi1nZW8jR0ItRE9SI0RvcnNldCNHQi1FTkcKLWdlbyNHQi1ET1cjRG93biNHQi1OSVIKLWdlbyNHQi1EUlkjRGVycnkjR0ItTklSCi1nZW8jR0ItRFVSI0R1cmhhbSNHQi1FTkcKLWdlbyNHQi1EVlYjRGV2b24jR0ItRU5HCi1nZW8jR0ItRU5HI0VuZ2xhbmQjR0IKLWdlbyNHQi1FU1MjRXNzZXgjR0ItRU5HCi1nZW8jR0ItRVNYI0Vhc3QgU3Vzc2V4I0dCLUVORwotZ2VvI0dCLUZFUiNGZXJtYW5hZ2gjR0ItTklSCi1nZW8jR0ItRklGI0ZpZmUgUmVnaW9uI0dCLVNDVAotZ2VvI0dCLUdMUyNHbG91Y2VzdGVyc2hpcmUjR0ItRU5HCi1nZW8jR0ItR01QI0dyYW1waWFuIFJlZ2lvbiNHQi1TQ1QKLWdlbyNHQi1HTlQjR3dlbnQjR0ItV0xTCi1nZW8jR0ItR1NZI0d1ZXJuc2V5I0dCLUNIQQotZ2VvI0dCLUdUTCNHcmVhdGVyIExvbmRvbiNHQi1FTkcKLWdlbyNHQi1HVE0jR3JlYXRlciBNYW5jaGVzdGVyI0dCLUVORwotZ2VvI0dCLUdXTiNHd3luZWRkI0dCLVdMUwotZ2VvI0dCLUhBTSNIYW1wc2hpcmUjR0ItRU5HCi1nZW8jR0ItSExEI0hpZ2hsYW5kIFJlZ2lvbiNHQi1TQ1QKLWdlbyNHQi1IUlQjSGVydGZvcmRzaGlyZSNHQi1FTkcKLWdlbyNHQi1IVU0jSHVtYmVyc2lkZSNHQi1FTkcKLWdlbyNHQi1IV1IjSGVyZWZvcmQgQW5kIFdvcmNlc3RlciNHQi1FTkcKLWdlbyNHQi1JT00jSXNsZSBPZiBNYW4jR0IKLWdlbyNHQi1JT1MjSXNsZXMgT2YgU2NpbGx5I0dCLUVORwotZ2VvI0dCLUlPVyNJc2xlIE9mIFdpZ2h0I0dCLUVORwotZ2VvI0dCLUpTWSNKZXJzZXkjR0ItQ0hBCi1nZW8jR0ItS0VOI0tlbnQjR0ItRU5HCi1nZW8jR0ItTEFOI0xhbmNhc2hpcmUjR0ItRU5HCi1nZW8jR0ItTEVDI0xlaWNlc3RlcnNoaXJlI0dCLUVORwotZ2VvI0dCLUxJTiNMaW5jb2xuc2hpcmUjR0ItRU5HCi1nZW8jR0ItTE1WI0xpbWF2YWR5I0dCLU5JUgotZ2VvI0dCLUxSTiNMYXJuZSNHQi1OSVIKLWdlbyNHQi1MU0IjTGlzYnVybiNHQi1OSVIKLWdlbyNHQi1MVE4jTG90aGlhbiBSZWdpb24jR0ItU0NUCi1nZW8jR0ItTUZUI01hZ2hlcmFmZWx0I0dCLU5JUgotZ2VvI0dCLU1HTSNNaWQgR2xhbW9yZ2FuI0dCLVdMUwotZ2VvI0dCLU1TWSNNZXJzZXlzaWRlI0dCLUVORwotZ2VvI0dCLU1ZTCNNb3lsZSNHQi1OSVIKLWdlbyNHQi1OQkwjTm9ydGh1bWJlcmxhbmQjR0ItRU5HCi1nZW8jR0ItTkROI05vcnRoIERvd24jR0ItTklSCi1nZW8jR0ItTkZLI05vcmZvbGsjR0ItRU5HCi1nZW8jR0ItTklSI05vcnRoZXJuIElyZWxhbmQjR0IKLWdlbyNHQi1OVEEjTmV3dG9uYWJiZXkjR0ItTklSCi1nZW8jR0ItTlRII05vcnRoYW1wdG9uc2hpcmUjR0ItRU5HCi1nZW8jR0ItTlRUI05vdHRpbmdoYW1zaGlyZSNHQi1FTkcKLWdlbyNHQi1OWUsjTm9ydGggWW9ya3NoaXJlI0dCLUVORwotZ2VvI0dCLU5ZTSNOZXdyeSBBbmQgTW91cm5lI0dCLU5JUgotZ2VvI0dCLU9NSCNPbWFnaCNHQi1OSVIKLWdlbyNHQi1PUksjT3JrbmV5I0dCLVNDVAotZ2VvI0dCLU9YRiNPeGZvcmRzaGlyZSNHQi1FTkcKLWdlbyNHQi1QT1cjUG93eXMjR0ItV0xTCi1nZW8jR0ItU0NUI1Njb3RsYW5kI0dCCi1nZW8jR0ItU0ZLI1N1ZmZvbGsjR0ItRU5HCi1nZW8jR0ItU0dNI1NvdXRoIEdsYW1vcmdhbiNHQi1XTFMKLWdlbyNHQi1TSFIjU2hyb3BzaGlyZSNHQi1FTkcKLWdlbyNHQi1TT00jU29tZXJzZXQjR0ItRU5HCi1nZW8jR0ItU1JZI1N1cnJleSNHQi1FTkcKLWdlbyNHQi1TVEIjU3RyYWJhbmUjR0ItTklSCi1nZW8jR0ItU1REI1N0cmF0aGNseWRlIFJlZ2lvbiNHQi1TQ1QKLWdlbyNHQi1TVFMjU3RhZmZvcmRzaGlyZSNHQi1FTkcKLWdlbyNHQi1TWUsjU291dGggWW9ya3NoaXJlI0dCLUVORwotZ2VvI0dCLVRBWSNUYXlzaWRlIFJlZ2lvbiNHQi1TQ1QKLWdlbyNHQi1UV1IjVHluZSBBbmQgV2VhciNHQi1FTkcKLWdlbyNHQi1XQVIjV2Fyd2lja3NoaXJlI0dCLUVORwotZ2VvI0dCLVdHTSNXZXN0IEdsYW1vcmdhbiNHQi1XTFMKLWdlbyNHQi1XSUwjV2lsdHNoaXJlI0dCLUVORwotZ2VvI0dCLVdJUyNXZXN0ZXJuIElzbGVzI0dCLVNDVAotZ2VvI0dCLVdMUyNXYWxlcyNHQgotZ2VvI0dCLVdNRCNXZXN0IE1pZGxhbmRzI0dCLUVORwotZ2VvI0dCLVdTWCNXZXN0IFN1c3NleCNHQi1FTkcKLWdlbyNHQi1XWUsjV2VzdCBZb3Jrc2hpcmUjR0ItRU5HCi1nZW8jR0ItWkVUI1NoZXRsYW5kIChaZXRsYW5kKSNHQi1TQ1QKLWdlbyNHRCNHcmVuYWRhIy0tCi1nZW8jR0UjR2VvcmdpYSMtLQotZ2VvI0dGI0ZyZW5jaCBHdWlhbmEjLS0KLWdlbyNHSCNHaGFuYSMtLQotZ2VvI0dJI0dpYnJhbHRhciMtLQotZ2VvI0dMI0dyZWVubGFuZCMtLQotZ2VvI0dNI0dhbWJpYSMtLQotZ2VvI0dOI0d1aW5lYSMtLQotZ2VvI0dQI0d1YWRlbG91cGUjLS0KLWdlbyNHUSNFcXVhdG9yaWFsIEd1aW5lYSMtLQotZ2VvI0dSI0dyZWVjZSMtLQotZ2VvI0dTI0dlb3JnaWEgJiBTYW5kd2ljaCBJc2xhbmRzIy0tCi1nZW8jR1QjR3VhdGVtYWxhIy0tCi1nZW8jR1UjR3VhbSMtLQotZ2VvI0dXI0d1aW5lYS1CaXNzYXUjLS0KLWdlbyNHWSNHdXlhbmEjLS0KLWdlbyNISyNIb25nIEtvbmcjLS0KLWdlbyNITiNIb25kdXJhcyMtLQotZ2VvI0hSI0Nyb2F0aWEjLS0KLWdlbyNIVCNIYWl0aSMtLQotZ2VvI0hVI0h1bmdhcnkjLS0KLWdlbyNJRCNJbmRvbmVzaWEjLS0KLWdlbyNJRSNJcmVsYW5kIy0tCi1nZW8jSUwjSXNyYWVsIy0tCi1nZW8jSU4jSW5kaWEjLS0KLWdlbyNJTyNJbmRpYW4gT2NlYW4gVGVycml0b3J5Iy0tCi1nZW8jSVEjSXJhcSMtLQotZ2VvI0lSIyJJcmFuLCBJc2xhbWljIFJlcHVibGljIG9mIiMtLQotZ2VvI0lTI0ljZWxhbmQjLS0KLWdlbyNJVCNJdGFseSMtLQotZ2VvI0lULTIxI1BpZW1vbnRlI0lUCi1nZW8jSVQtQUwjQWxlc3NhbmRyaWEjSVQtMjEKLWdlbyNJVC1BVCNBc3RpI0lULTIyCi1nZW8jSVQtQkkjQmllbGxhI0lULTIzCi1nZW8jSVQtQU8jQW9zdGEgQW9zdGUgKGZyKSNJVC0yMwotZ2VvI0lULUNOI0N1bmVvI0lULTI0Ci1nZW8jSVQtTk8jTm92YXJhI0lULTI1Ci1nZW8jSVQtQkcjQmVyZ2FtbyNJVC0yNQotZ2VvI0lULUJTI0JyZXNjaWEjSVQtMjUKLWdlbyNJVC1DTyNDb21vI0lULTI1Ci1nZW8jSVQtQ1IjQ3JlbW9uYSNJVC0yNQotZ2VvI0lULUxDI0xlY2NvI0lULTI1Ci1nZW8jSVQtTE8jTG9kaSNJVC0yNQotZ2VvI0lULU1OI01hbnRvdmEjSVQtMjUKLWdlbyNJVC1NSSNNaWxhbm8jSVQtMjUKLWdlbyNJVC1QViNQYXZpYSNJVC0yNQotZ2VvI0lULVNPI1NvbmRyaW8jSVQtMjUKLWdlbyNJVC1WQSNWYXJlc2UjSVQtMjUKLWdlbyNJVC1UTyNUb3Jpbm8jSVQtMjYKLWdlbyNJVC1WQiNWZXJiYW5vLUN1c2lvLU9zc29sYSNJVC0yNwotZ2VvI0lULVZDI1ZlcmNlbGxpI0lULTI4Ci1nZW8jSVQtMjMjVmFsbGUgZCdBb3N0YSNJVAotZ2VvI0lULTI1I0xvbWJhcmRpYSNJVAotZ2VvI0lULTMyI1RyZW50aW5vLUFsdG8gQWRpZ2UjSVQKLWdlbyNJVC1CWiNCb2x6YW5vIEJvemVuIChkZSkjSVQtMzIKLWdlbyNJVC1UTiNUcmVudG8jSVQtMzIKLWdlbyNJVC0zNCNWZW5ldG8jSVQKLWdlbyNJVC1CTCNCZWxsdW5vI0lULTM0Ci1nZW8jSVQtUEQjUGFkb3ZhI0lULTM0Ci1nZW8jSVQtUk8jUm92aWdvI0lULTM0Ci1nZW8jSVQtVFYjVHJldmlzbyNJVC0zNAotZ2VvI0lULVZFI1ZlbmV6aWEjSVQtMzQKLWdlbyNJVC1WUiNWZXJvbmEjSVQtMzQKLWdlbyNJVC1WSSNWaWNlbnphI0lULTM0Ci1nZW8jSVQtMzYjRnJpdWxpLVZlbmV6aWEgR2l1bGlhI0lUCi1nZW8jSVQtR08jR29yaXppYSNJVC0zNgotZ2VvI0lULVBOI1BvcmRlbm9uZSNJVC0zNgotZ2VvI0lULVRTI1RyaWVzdGUjSVQtMzYKLWdlbyNJVC1VRCNVZGluZSNJVC0zNgotZ2VvI0lULTQyI0xpZ3VyaWEjSVQKLWdlbyNJVC1HRSNHZW5vdmEjSVQtNDIKLWdlbyNJVC1JTSNJbXBlcmlhI0lULTQyCi1nZW8jSVQtU1AjTGEgU3BlemlhI0lULTQyCi1nZW8jSVQtU1YjU2F2b25hI0lULTQyCi1nZW8jSVQtNDUjRW1pbGlhLVJvbWFnbmEjSVQKLWdlbyNJVC1CTyNCb2xvZ25hI0lULTQ1Ci1nZW8jSVQtRkUjRmVycmFyYSNJVC00NQotZ2VvI0lULUZPI0ZvcmzDrCNJVC00NQotZ2VvI0lULU1PI01vZGVuYSNJVC00NQotZ2VvI0lULVBSI1Bhcm1hI0lULTQ1Ci1nZW8jSVQtUEMjUGlhY2VuemEjSVQtNDUKLWdlbyNJVC1SQSNSYXZlbm5hI0lULTQ1Ci1nZW8jSVQtUkUjUmVnZ2lvIEVtaWxpYSNJVC00NQotZ2VvI0lULVJOI1JpbWluaSNJVC00NQotZ2VvI0lULTUyI1Rvc2NhbmEjSVQKLWdlbyNJVC1BUiNBcmV6em8jSVQtNTIKLWdlbyNJVC1GSSNGaXJlbnplI0lULTUyCi1nZW8jSVQtR1IjR3Jvc3NldG8jSVQtNTIKLWdlbyNJVC1MSSNMaXZvcm5vI0lULTUyCi1nZW8jSVQtTFUjTHVjY2EjSVQtNTIKLWdlbyNJVC1NUyNNYXNzYS1DYXJyYXJhI0lULTUyCi1nZW8jSVQtUEkjUGlzYSNJVC01MgotZ2VvI0lULVBUI1Bpc3RvaWEjSVQtNTIKLWdlbyNJVC1QTyNQcmF0byNJVC01MgotZ2VvI0lULVNJI1NpZW5hI0lULTUyCi1nZW8jSVQtNTUjVW1icmlhI0lUCi1nZW8jSVQtUEcjUGVydWdpYSNJVC01NQotZ2VvI0lULVRSI1Rlcm5pI0lULTU1Ci1nZW8jSVQtNTcjTWFyY2hlI0lUCi1nZW8jSVQtQU4jQW5jb25hI0lULTU3Ci1nZW8jSVQtQVAjQXNjb2xpIFBpY2VubyNJVC01NwotZ2VvI0lULU1DI01hY2VyYXRhI0lULTU3Ci1nZW8jSVQtUFMjUGVzYXJvIGUgVXJiaW5vI0lULTU3Ci1nZW8jSVQtNjIjTGF6aW8jSVQKLWdlbyNJVC1GUiNGcm9zaW5vbmUjSVQtNjIKLWdlbyNJVC1MVCNMYXRpbmEjSVQtNjIKLWdlbyNJVC1SSSNSaWV0aSNJVC02MgotZ2VvI0lULVJNI1JvbWEjSVQtNjIKLWdlbyNJVC1WVCNWaXRlcmJvI0lULTYyCi1nZW8jSVQtNjUjQWJydXp6byNJVAotZ2VvI0lULUNII0NoaWV0aSNJVC02NQotZ2VvI0lULUFRI0wnQXF1aWxhI0lULTY1Ci1nZW8jSVQtUEUjUGVzY2FyYSNJVC02NQotZ2VvI0lULVRFI1RlcmFtbyNJVC02NQotZ2VvI0lULTY3I01vbGlzZSNJVAotZ2VvI0lULUNCI0NhbXBvYmFzc28jSVQtNjcKLWdlbyNJVC1JUyNJc2VybmlhI0lULTY3Ci1nZW8jSVQtNzIjQ2FtcGFuaWEjSVQKLWdlbyNJVC1CTiNCZW5ldmVudG8jSVQtNzIKLWdlbyNJVC1DRSNDYXNlcnRhI0lULTcyCi1nZW8jSVQtTkEjTmFwb2xpI0lULTcyCi1nZW8jSVQtU0EjU2FsZXJubyNJVC03MgotZ2VvI0lULUFWI0F2ZWxsaW5vI0lULTcyCi1nZW8jSVQtNzUjUHVnbGlhI0lUCi1nZW8jSVQtQkEjQmFyaSNJVC03NQotZ2VvI0lULUJSI0JyaW5kaXNpI0lULTc1Ci1nZW8jSVQtRkcjRm9nZ2lhI0lULTc1Ci1nZW8jSVQtTEUjTGVjY2UjSVQtNzUKLWdlbyNJVC1UQSNUYXJhbnRvI0lULTc1Ci1nZW8jSVQtNzcjQmFzaWxpY2F0YSNJVAotZ2VvI0lULU1UI01hdGVyYSNJVC03NwotZ2VvI0lULVBaI1BvdGVuemEjSVQtNzcKLWdlbyNJVC03OCNDYWxhYnJpYSNJVAotZ2VvI0lULUNaI0NhdGFuemFybyNJVC03OAotZ2VvI0lULUNTI0Nvc2VuemEjSVQtNzgKLWdlbyNJVC1LUiNDcm90b25lI0lULTc4Ci1nZW8jSVQtUkMjUmVnZ2lvIENhbGFicmlhI0lULTc4Ci1nZW8jSVQtVlYjVmlibyBWYWxlbnRpYSNJVC03OAotZ2VvI0lULTgyI1NpY2lsaWEjSVQKLWdlbyNJVC1BRyNBZ3JpZ2VudG8jSVQtODIKLWdlbyNJVC1DTCNDYWx0YW5pc3NldHRhI0lULTgyCi1nZW8jSVQtQ1QjQ2F0YW5pYSNJVC04MgotZ2VvI0lULUVOI0VubmEjSVQtODIKLWdlbyNJVC1NRSNNZXNzaW5hI0lULTgyCi1nZW8jSVQtUEEjUGFsZXJtbyNJVC04MgotZ2VvI0lULVJHI1JhZ3VzYSNJVC04MgotZ2VvI0lULVNSI1NpcmFjdXNhI0lULTgyCi1nZW8jSVQtVFAjVHJhcGFuaSNJVC04MgotZ2VvI0lULTg4I1NhcmRlZ25hI0lUCi1nZW8jSVQtQ0EjQ2FnbGlhcmkjSVQtODgKLWdlbyNJVC1OVSNOdW9ybyNJVC04OAotZ2VvI0lULU9SI09yaXN0YW5vI0lULTg4Ci1nZW8jSVQtU1MjU2Fzc2FyaSNJVC04OAotZ2VvI0pNI0phbWFpY2EjLS0KLWdlbyNKTyNKb3JkYW4jLS0KLWdlbyNKUCNKYXBhbiMtLQotZ2VvI0pQLTAxI0hva2thaWRvI0pQCi1nZW8jSlAtMDIjQW9tb3JpI0pQCi1nZW8jSlAtMDMjSXdhdGUjSlAKLWdlbyNKUC0wNCNNaXlhZ2kjSlAKLWdlbyNKUC0wNSNBa2l0YSNKUAotZ2VvI0pQLTA2I1lhbWFnYXRhI0pQCi1nZW8jSlAtMDcjSHVrdXNpbWEgKEZ1a3VzaGltYSkjSlAKLWdlbyNKUC0wOCNJYmFyYWtpI0pQCi1nZW8jSlAtMDkjVG90aWdpIChUb2NoaWdpKSNKUAotZ2VvI0pQLTEwI0d1bm1hI0pQCi1nZW8jSlAtMTEjU2FpdGFtYSNKUAotZ2VvI0pQLTEyI1RpYmEgKENoaWJhKSNKUAotZ2VvI0pQLTEzI1Rva3lvI0pQCi1nZW8jSlAtMTQjS2FuYWdhd2EjSlAKLWdlbyNKUC0xNSNOaWlnYXRhI0pQCi1nZW8jSlAtMTYjVG95YW1hI0pQCi1nZW8jSlAtMTcjSXNpa2F3YSAoSXNoaWthd2EpI0pQCi1nZW8jSlAtMTgjSHVrdWkgKEZ1a3VpKSNKUAotZ2VvI0pQLTE5I1lhbWFuYXNpIChZYW1hbmFzaGkpI0pQCi1nZW8jSlAtMjAjTmFnYW5vI0pQCi1nZW8jSlAtMjEjR2lodSAoR2lmdSkjSlAKLWdlbyNKUC0yMiNTaXp1b2thIChTaGl6dW9rYSkjSlAKLWdlbyNKUC0yMyNBaXRpIChBaWNoaSkjSlAKLWdlbyNKUC0yNCNNaWUjSlAKLWdlbyNKUC0yNSNTaWdhIChTaGlnYSkjSlAKLWdlbyNKUC0yNiNLeW90byNKUAotZ2VvI0pQLTI3I09zYWthI0pQCi1nZW8jSlAtMjgjSHlvZ28jSlAKLWdlbyNKUC0yOSNOYXJhI0pQCi1nZW8jSlAtMzAjV2FrYXlhbWEjSlAKLWdlbyNKUC0zMSNUb3R0b3JpI0pQCi1nZW8jSlAtMzIjU2ltYW5lIChTaGltYW5lKSNKUAotZ2VvI0pQLTMzI09rYXlhbWEjSlAKLWdlbyNKUC0zNCNIaXJvc2ltYSAoSGlyb3NoaW1hKSNKUAotZ2VvI0pQLTM1I1lhbWFndXRpIChZYW1hZ3VjaGkpI0pQCi1nZW8jSlAtMzYjVG9rdXNpbWEgKFRva3VzaGltYSkjSlAKLWdlbyNKUC0zNyNLYWdhd2EjSlAKLWdlbyNKUC0zOCNFaGltZSNKUAotZ2VvI0pQLTM5I0tvdGkgKEtvY2hpKSNKUAotZ2VvI0pQLTQwI0h1a3Vva2EgKEZ1a3Vva2EpI0pQCi1nZW8jSlAtNDEjU2FnYSNKUAotZ2VvI0pQLTQyI05hZ2FzYWtpI0pQCi1nZW8jSlAtNDMjS3VtYW1vdG8jSlAKLWdlbyNKUC00NCNPaXRhI0pQCi1nZW8jSlAtNDUjTWl5YXpha2kjSlAKLWdlbyNKUC00NiNLYWdvc2ltYSAoS2Fnb3NoaW1hKSNKUAotZ2VvI0pQLTQ3I09raW5hd2EjSlAKLWdlbyNLRSNLZW55YSMtLQotZ2VvI0tHI0t5cmd5enN0YW4jLS0KLWdlbyNLSCNDYW1ib2RpYSMtLQotZ2VvI0tJI0tpcmliYXRpIy0tCi1nZW8jS00jQ29tb3JvcyMtLQotZ2VvI0tOI1N0IEtpdHRzLU5ldmlzIy0tCi1nZW8jS1AjIktvcmVhLCBEZW0gUGVvcGxlJ3MgUmVwdWJsaWMiIy0tCi1nZW8jS1IjIktvcmVhLCBSZXB1YmxpYyBvZiIjLS0KLWdlbyNLUi0xMSNTZW91bCBUZXVnYnllb2xzaSNLUgotZ2VvI0tSLTI2I0J1c2FuIEd3YW5nJ3llb2dzaSNLUgotZ2VvI0tSLTI3I0RhZWd1IEd3YW5nJ3llb2dzaSNLUgotZ2VvI0tSLTMwI0RhZWplb24gR3dhbmcneWVvZ3NpI0tSCi1nZW8jS1ItMjkjR3dhbmdqdSBHd2FuZyd5ZW9nc2kjS1IKLWdlbyNLUi0yOCNJbmNoZW9uIEd3YW5nJ3llb2dzaSNLUgotZ2VvI0tSLTMxI1Vsc2FuIEd3YW5nJ3llb2dzaSNLUgotZ2VvI0tSLTQzI0NodW5nY2hlb25nYnVnZG8jS1IKLWdlbyNLUi00NCNDaHVuZ2NoZW9uZ25hbWRvI0tSCi1nZW8jS1ItNDIjR2FuZyd3ZW9uZG8jS1IKLWdlbyNLUi00MSNHeWVvbmdnaWRvI0tSCi1nZW8jS1ItNDcjR3llb25nc2FuZ2J1Z2RvI0tSCi1nZW8jS1ItNDgjR3llb25nc2FuZ25hbWRvI0tSCi1nZW8jS1ItNDkjSmVqdWRvI0tSCi1nZW8jS1ItNDUjSmVvbnJhYnVnZG8jS1IKLWdlbyNLUi00NiNKZW9ucmFuYW1kbyNLUgotZ2VvI0tXI0t1d2FpdCMtLQotZ2VvI0tZI0NheW1hbiBJc2xhbmRzIy0tCi1nZW8jS1ojS2F6YWtoc3RhbiMtLQotZ2VvI0xBI0xhbyBQZW9wbGUncyBEZW1vY3JhdGljIFJlcHVibGljIy0tCi1nZW8jTEIjTGViYW5vbiMtLQotZ2VvI0xDI1NhaW50IEx1Y2lhIy0tCi1nZW8jTEkjTGllY2h0ZW5zdGVpbiMtLQotZ2VvI0xLI1NyaSBMYW5rYSMtLQotZ2VvI0xSI0xpYmVyaWEjLS0KLWdlbyNMUyNMZXNvdGhvIy0tCi1nZW8jTFQjTGl0aHVhbmlhIy0tCi1nZW8jTFUjTHV4ZW1ib3VyZyMtLQotZ2VvI0xWI0xhdHZpYSMtLQotZ2VvI0xZI0x5YmlhbiBBcmFiIEphbWFoaXJpeWEjLS0KLWdlbyNNQSNNb3JvY2NvIy0tCi1nZW8jTUMjTW9uYWNvIy0tCi1nZW8jTUQjTW9sZG92YSMtLQotZ2VvI01HI01hZGFnYXNjYXIjLS0KLWdlbyNNSCNNYXJzaGFsbCBJc2xhbmRzIy0tCi1nZW8jTUsjRm9ybWVyIFl1Z29zbGF2IFJlcHVibGljIE9mIE1hY2Vkb25pYSMtLQotZ2VvI01MI01hbGkjLS0KLWdlbyNNTSNNeWFubWFyIChGb3JtZXIgQnVybWEpIy0tCi1nZW8jTU4jTW9uZ29saWEjLS0KLWdlbyNNTyNNYWNhdSMtLQotZ2VvI01QI05vcnRoZXJuIE1hcmlhbmFzIy0tCi1nZW8jTVEjTWFydGluaXF1ZSMtLQotZ2VvI01SI01hdXJpdGFuaWEjLS0KLWdlbyNNUyNNb250c2VycmF0Iy0tCi1nZW8jTVQjTWFsdGEjLS0KLWdlbyNNVSNNYXVyaXRpdXMjLS0KLWdlbyNNViNNYWxkaXZlcyMtLQotZ2VvI01XI01hbGF3aSMtLQotZ2VvI01YI01leGljbyMtLQotZ2VvI01YLUFHVSNBZ3Vhc2NhbGllbnRlcyNNWAotZ2VvI01YLUJDTiNCYWphIENhbGlmb3JuaWEjTVgKLWdlbyNNWC1CQ1MjQmFqYSBDYWxpZm9ybmlhIFN1ciNNWAotZ2VvI01YLUNBTSNDYW1wZWNoZSNNWAotZ2VvI01YLUNISCNDaGlodWFodWEjTVgKLWdlbyNNWC1DSFAjQ2hpYXBhcyNNWAotZ2VvI01YLUNPQSNDb2FodWlsYSNNWAotZ2VvI01YLUNPTCNDb2xpbWEjTVgKLWdlbyNNWC1ERiNEaXN0cml0byBGZWRlcmFsI01YCi1nZW8jTVgtRFVSI0R1cmFuZ28jTVgKLWdlbyNNWC1HUk8jR3VlcnJlcm8jTVgKLWdlbyNNWC1HVUEjR3VhbmFqdWF0byNNWAotZ2VvI01YLUhJRCNIaWRhbGdvI01YCi1nZW8jTVgtSkFMI0phbGlzY28jTVgKLWdlbyNNWC1NRVgjTWV4aWNvI01YCi1nZW8jTVgtTUlDI01pY2hvYWNhbiNNWAotZ2VvI01YLU1PUiNNb3JlbG9zI01YCi1nZW8jTVgtTkFZI05heWFyaXQjTVgKLWdlbyNNWC1OTEUjTnVldm8gTGVvbiNNWAotZ2VvI01YLU9BWCNPYXhhY2EjTVgKLWdlbyNNWC1QVUUjUHVlYmxhI01YCi1nZW8jTVgtUVVFI1F1ZXJldGFybyNNWAotZ2VvI01YLVJPTyNRdWludGFuYSBSb28jTVgKLWdlbyNNWC1TSU4jU2luYWxvYSNNWAotZ2VvI01YLVNMUCNTYW4gTHVpcyBQb3Rvc2kjTVgKLWdlbyNNWC1TT04jU29ub3JhI01YCi1nZW8jTVgtVEFCI1RhYmFzY28jTVgKLWdlbyNNWC1UQU0jVGFtYXVsaXBhcyNNWAotZ2VvI01YLVRMQSNUbGF4Y2FsYSNNWAotZ2VvI01YLVZFUiNWZXJhY3J1eiNNWAotZ2VvI01YLVlVQyNZdWNhdGFuI01YCi1nZW8jTVgtWkFDI1phY2F0ZWNhcyNNWAotZ2VvI01ZI01hbGF5c2lhIy0tCi1nZW8jTVojTW96YW1iaXF1ZSMtLQotZ2VvI05BI05hbWliaWEjLS0KLWdlbyNOQyNOZXcgQ2FsZWRvbmlhIy0tCi1nZW8jTkUjTmlnZXIjLS0KLWdlbyNORiNOb3Jmb2xrIElzbGFuZCMtLQotZ2VvI05HI05pZ2VyaWEjLS0KLWdlbyNORy1GQyNBYnVqYSBDYXBpdGFsIFRlcnJpdG9yeSNORwotZ2VvI05HLUFCI0FiaWEjTkcKLWdlbyNORy1BRCNBZGFtYXdhI05HCi1nZW8jTkctQUsjQWt3YSBJYm9tI05HCi1nZW8jTkctQU4jQW5hbWJyYSNORwotZ2VvI05HLUJBI0JhdWNoaSNORwotZ2VvI05HLUJZI0JheWVsc2EjTkcKLWdlbyNORy1CRSNCZW51ZSNORwotZ2VvI05HLUJPI0Jvcm5vI05HCi1nZW8jTkctQ1IjQ3Jvc3MgUml2ZXIjTkcKLWdlbyNORy1ERSNEZWx0YSNORwotZ2VvI05HLUVCI0Vib255aSNORwotZ2VvI05HLUVEI0VkbyNORwotZ2VvI05HLUVLI0VraXRpI05HCi1nZW8jTkctRU4jRW51Z3UjTkcKLWdlbyNORy1HTyNHb21iZSNORwotZ2VvI05HLUlNI0ltbyNORwotZ2VvI05HLUpJI0ppZ2F3YSNORwotZ2VvI05HLUtEI0thZHVuYSNORwotZ2VvI05HLUtOI0thbm8jTkcKLWdlbyNORy1LVCNLYXRzaW5hI05HCi1nZW8jTkctS0UjS2ViYmkjTkcKLWdlbyNORy1LTyNLb2dpI05HCi1nZW8jTkctS1cjS3dhcmEjTkcKLWdlbyNORy1MQSNMYWdvcyNORwotZ2VvI05HLU5BI05hc3NhcmF3YSNORwotZ2VvI05HLU5JI05pZ2VyI05HCi1nZW8jTkctT0cjT2d1biNORwotZ2VvI05HLU9OI09uZG8jTkcKLWdlbyNORy1PUyNPc3VuI05HCi1nZW8jTkctT1kjT3lvI05HCi1nZW8jTkctUEwjUGxhdGVhdSNORwotZ2VvI05HLVJJI1JpdmVycyNORwotZ2VvI05HLVNPI1Nva290byNORwotZ2VvI05HLVRBI1RhcmFiYSNORwotZ2VvI05HLVlPI1lvYmUjTkcKLWdlbyNORy1aQSNaYW1mYXJhI05HCi1nZW8jTkkjTmljYXJhZ3VhIy0tCi1nZW8jTkwjTmV0aGVybGFuZHMjLS0KLWdlbyNOTyNOb3J3YXkjLS0KLWdlbyNOTy0wMSPDmHN0Zm9sZCNOTwotZ2VvI05PLTAyI0FrZXJzaHVzI05PCi1nZW8jTk8tMDMjT3NsbyNOTwotZ2VvI05PLTA0I0hlZG1hcmsjTk8KLWdlbyNOTy0wNSNPcHBsYW5kI05PCi1nZW8jTk8tMDYjQnVza2VydWQjTk8KLWdlbyNOTy0wNyNWZXN0Zm9sZCNOTwotZ2VvI05PLTA4I1RlbGVtYXJrI05PCi1nZW8jTk8tMDkjQXVzdC1BZ2RlciNOTwotZ2VvI05PLTEwI1Zlc3QtQWdkZXIjTk8KLWdlbyNOTy0xMSNSb2dhbGFuZCNOTwotZ2VvI05PLTEyI05vcmRhbGFuZCNOTwotZ2VvI05PLTE0I1NvZ24gT2cgRmpvcmRhbmUjTk8KLWdlbyNOTy0xNSNNw7hyZSBPZyBSb21zZGFsI05PCi1nZW8jTk8tMTYjU8O4ci1UcsO4bmRlbGFnI05PCi1nZW8jTk8tMTcjTm9yZC1UcsO4bmRlbGFnI05PCi1nZW8jTk8tMTgjTm9yZGxhbmQjTk8KLWdlbyNOTy0xOSNUcm9tcyNOTwotZ2VvI05PLTIwI0Zpbm5tYXJrI05PCi1nZW8jTlAjTmVwYWwjLS0KLWdlbyNOUiNOYXVydSMtLQotZ2VvI05VI05pdWUjLS0KLWdlbyNOWiNOZXcgWmVhbGFuZCMtLQotZ2VvI05aLUFVSyNBdWNrbGFuZCNOWi1OCi1nZW8jTlotQk9QI0JheSBPZiBQbGVudHkjTlotTgotZ2VvI05aLUNBTiNDYW50ZXJidXJ5I05aLVMKLWdlbyNOWi1HSVMjR2lzYm9ybmUjTlotTgotZ2VvI05aLUhLQiNIYXdrZXMnUyBCYXkjTlotTgotZ2VvI05aLU1CSCNNYXJsYm9yb3VnaCNOWi1TCi1nZW8jTlotTVdUI01hbmF3YXR1LVdhbmdhbnVpI05aLU4KLWdlbyNOWi1OI05vcnRoIElzbGFuZCNOWgotZ2VvI05aLU5TTiNOZWxzb24jTlotUwotZ2VvI05aLU5UTCNOb3J0aGxhbmQjTlotTgotZ2VvI05aLU9UQSNPdGFnbyNOWi1TCi1nZW8jTlotUyNTb3V0aCBJc2xhbmQjTloKLWdlbyNOWi1TVEwjU291dGhsYW5kI05aLVMKLWdlbyNOWi1UQVMjVGFzbWFuI05aLVMKLWdlbyNOWi1US0kjVGFyYW5ha2kjTlotTgotZ2VvI05aLVdHTiNXZWxsaW5ndG9uI05aLU4KLWdlbyNOWi1XS08jV2Fpa2F0byNOWi1OCi1nZW8jTlotV1RDI1dlc3QgQ29hc3QjTlotUwotZ2VvI09NI09tYW4jLS0KLWdlbyNQQSNQYW5hbWEjLS0KLWdlbyNQRSNQZXJ1Iy0tCi1nZW8jUEYjRnJlbmNoIFBvbHluZXNpYSMtLQotZ2VvI1BHI1BhcHVhIE5ldyBHdWluZWEjLS0KLWdlbyNQSCNQaGlsaXBwaW5lcyMtLQotZ2VvI1BLI1Bha2lzdGFuIy0tCi1nZW8jUEwjUG9sYW5kIy0tCi1nZW8jUEwtRFMjRG9sbm/Fm2zEhXNraWUjUEwKLWdlbyNQTC1LUCNLdWphd3Nrby1wb21vcnNraWUjUEwKLWdlbyNQTC1MVSNMdWJlbHNraWUjUEwKLWdlbyNQTC1MQiNMdWJ1c2tpZSNQTAotZ2VvI1BMLUxEI8WBw7NkemtpZSNQTAotZ2VvI1BMLU1BI01hxYJvcG9sc2tpZSNQTAotZ2VvI1BMLU1aI01hem93aWVja2llI1BMCi1nZW8jUEwtT1AjT3BvbHNraWUjUEwKLWdlbyNQTC1QSyNQb2RrYXJwYWNraWUjUEwKLWdlbyNQTC1QRCNQb2RsYXNraWUjUEwKLWdlbyNQTC1QTSNQb21vcnNraWUjUEwKLWdlbyNQTC1TTCPFmmzEhXNraWUjUEwKLWdlbyNQTC1TSyPFmndpxJl0b2tyenlza2llI1BMCi1nZW8jUEwtV04jV2FybWnFhHNrby1tYXp1cnNraWUjUEwKLWdlbyNQTC1XUCNXaWVsa29wb2xza2llI1BMCi1nZW8jUEwtWlAjWmFjaG9kbmlvcG9tb3Jza2llI1BMCi1nZW8jUE0jU3QgUGllcnJlIEFuZCBNaXF1ZWxvbiMtLQotZ2VvI1BOI1BpdGNhaXJuIy0tCi1nZW8jUFIjUHVlcnRvIFJpY28jLS0KLWdlbyNQUyMiUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZCIjLS0KLWdlbyNQVCNQb3J0dWdhbCMtLQotZ2VvI1BXI1BhbGF1Iy0tCi1nZW8jUFkjUGFyYWd1YXkjLS0KLWdlbyNRQSNRYXRhciMtLQotZ2VvI1JFI1JldW5pb24jLS0KLWdlbyNSTyNSb21hbmlhIy0tCi1nZW8jUk8tQiNCdWN1cmXFn3RpI1JPCi1nZW8jUk8tQUIjQWxiYSNSTwotZ2VvI1JPLUFSI0FyYWQjUk8KLWdlbyNSTy1BRyNBcmdlxZ8jUk8KLWdlbyNSTy1CQyNCYWPEg3UjUk8KLWdlbyNSTy1CSCNCaWhvciNSTwotZ2VvI1JPLUJOI0Jpc3RyacWjYS1OxINzxIN1ZCNSTwotZ2VvI1JPLUJUI0JvdG/Fn2FuaSNSTwotZ2VvI1JPLUJWI0JyYcWfb3YjUk8KLWdlbyNSTy1CUiNCcsSDaWxhI1JPCi1nZW8jUk8tQlojQnV6xIN1I1JPCi1nZW8jUk8tQ1MjQ2FyYcWfLVNldmVyaW4jUk8KLWdlbyNSTy1DTCNDxINsxINyYcWfaSNSTwotZ2VvI1JPLUNKI0NsdWojUk8KLWdlbyNSTy1DVCNDb25zdGFuxaNhI1JPCi1nZW8jUk8tQ1YjQ292YXNuYSNSTwotZ2VvI1JPLURCI0TDom1ib3ZpxaNhI1JPCi1nZW8jUk8tREojRG9saiNSTwotZ2VvI1JPLUdMI0dhbGHFo2kjUk8KLWdlbyNSTy1HUiNHaXVyZ2l1I1JPCi1nZW8jUk8tR0ojR29yaiNSTwotZ2VvI1JPLUhSI0hhcmdoaXRhI1JPCi1nZW8jUk8tSEQjSHVuZWRvYXJhI1JPCi1nZW8jUk8tSUwjSWFsb21pxaNhI1JPCi1nZW8jUk8tSVMjSWHFn2kjUk8KLWdlbyNSTy1NTSNNYXJhbXVyZcWfI1JPCi1nZW8jUk8tTUgjTWVoZWRpbsWjaSNSTwotZ2VvI1JPLU1TI011cmXFnyNSTwotZ2VvI1JPLU5UI05lYW3FoyNSTwotZ2VvI1JPLU9UI09sdCNSTwotZ2VvI1JPLVBII1ByYWhvdmEjUk8KLWdlbyNSTy1TTSNTYXR1IE1hcmUjUk8KLWdlbyNSTy1TSiNTxINsYWojUk8KLWdlbyNSTy1TQiNTaWJpdSNSTwotZ2VvI1JPLVNWI1N1Y2VhdmEjUk8KLWdlbyNSTy1UUiNUZWxlb3JtYW4jUk8KLWdlbyNSTy1UTSNUaW1pxZ8jUk8KLWdlbyNSTy1UTCNUdWxjZWEjUk8KLWdlbyNSTy1WUyNWYXNsdWkjUk8KLWdlbyNSTy1WTCNWw6JsY2VhI1JPCi1nZW8jUk8tVk4jVnJhbmNlYSNSTwotZ2VvI1JVI1J1c3NpYW4gRmVkZXJhdGlvbiMtLQotZ2VvI1JVLUFEIyJBZHlnZWphLCBSZXNwdWJsaWthIiNSVQotZ2VvI1JVLUFMIyJBbHRhaiwgUmVzcHVibGlrYSIjUlUKLWdlbyNSVS1CQSMiQmHFoWtvcnRvc3RhbiwgUmVzcHVibGlrYSIjUlUKLWdlbyNSVS1CVSMiQnVyamF0aWphLCBSZXNwdWJsaWthIiNSVQotZ2VvI1JVLUNFI8SMZcSNZW5za2FqYSBSZXNwdWJsaWthI1JVCi1nZW8jUlUtQ1UjxIx1dmHFoXNrYWphIFJlc3B1Ymxpa2EjUlUKLWdlbyNSVS1EQSMiRGFnZXN0YW4sIFJlc3B1Ymxpa2EiI1JVCi1nZW8jUlUtSU4jSW5ndcWhc2thamEgUmVzcHVibGlrYSBbUmVzcHVibGlrYSBJbmd1xaFldGlqYV0jUlUKLWdlbyNSVS1LQiNLYWJhcmRpbm8tQmFsa2Fyc2thamEgUmVzcHVibGlrYSNSVQotZ2VvI1JVLUtMIyJLYWxteWtpamEsIFJlc3B1Ymxpa2EiI1JVCi1nZW8jUlUtS0MjS2FyYcSNYWpldm8txIxlcmtlc3NrYWphIFJlc3B1Ymxpa2EjUlUKLWdlbyNSVS1LUiMiS2FyZWxpamEsIFJlc3B1Ymxpa2EiI1JVCi1nZW8jUlUtS0sjIkhha2FzaWphLCBSZXNwdWJsaWthIiNSVQotZ2VvI1JVLUtPIyJLb21pLCBSZXNwdWJsaWthIiNSVQotZ2VvI1JVLU1FIyJNYXJpaiDDiGwsIFJlc3B1Ymxpa2EiI1JVCi1nZW8jUlUtTU8jIk1vcmRvdmlqYSwgUmVzcHVibGlrYSIjUlUKLWdlbyNSVS1TQSMiU2FoYSwgUmVzcHVibGlrYSBbSmFrdXRpamFdIiNSVQotZ2VvI1JVLVNFIyJTZXZlcm5hamEgT3NldGlqYSwgUmVzcHVibGlrYSBbQWxhbmlqYV0gW1Jlc3B1Ymxpa2EgU2V2ZXJuYWphIE9zZXRpamEtQWxhbmlqYV0iI1JVCi1nZW8jUlUtVEEjIlRhdGFyc3RhbiwgUmVzcHVibGlrYSIjUlUKLWdlbyNSVS1UWSMiVHl2YSwgUmVzcHVibGlrYSBbVHV2YV0iI1JVCi1nZW8jUlUtVUQjVWRtdXJ0c2thamEgUmVzcHVibGlrYSNSVQotZ2VvI1JVLUFMVCNBbHRhanNraWoga3JhaiNSVQotZ2VvI1JVLUtIQSNIYWJhcm92c2tpaiBrcmFqI1JVCi1nZW8jUlUtS0RBI0tyYXNub2RhcnNraWoga3JhaiNSVQotZ2VvI1JVLUtZQSNLcmFzbm9qYXJza2lqIGtyYWojUlUKLWdlbyNSVS1QUkkjUHJpbW9yc2tpaiBrcmFqI1JVCi1nZW8jUlUtU1RBI1N0YXZyb3BvbCdza2lqIGtyYWojUlUKLWdlbyNSVS1BTVUjQW11cnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1BUksjQXJoYW5nZWwnc2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLUFTVCNBc3RyYWhhbnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1CRUwjQmVsZ29yb2Rza2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtQlJZI0JyamFuc2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLUNIRSPEjGVsamFiaW5za2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtQ0hJI8SMaXRpbnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1JUksjSXJrdXRza2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtSVZBI0l2YW5vdnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1LR0QjS2FsaW5pbmdyYWRza2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtS0xVI0thbHXFvnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1LQU0jS2FtxI1hdHNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1LRU0jS2VtZXJvdnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1LSVIjS2lyb3Zza2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtS09TI0tvc3Ryb21za2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtS0dOI0t1cmdhbnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1LUlMjS3Vyc2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLUxFTiNMZW5pbmdyYWRza2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtTElQI0xpcGV0c2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLU1BRyNNYWdhZGFuc2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLU1PUyNNb3Nrb3Zza2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtTVVSI011cm1hbnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1OSVojTmnFvmVnb3JvZHNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1OR1IjTm92Z29yb2Rza2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtTlZTI05vdm9zaWJpcnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1PTVMjT21za2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtT1JFI09yZW5idXJnc2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLU9STCNPcmxvdnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1QTlojUGVuemVuc2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLVBFUiNQZXJtc2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLVBTSyNQc2tvdnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1ST1MjUm9zdG92c2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLVJZQSNSamF6YW5za2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtU0FLI1NhaGFsaW5za2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtU0FNI1NhbWFyc2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLVNBUiNTYXJhdG92c2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLVNNTyNTbW9sZW5za2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtU1ZFI1N2ZXJkbG92c2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLVRBTSNUYW1ib3Zza2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtVE9NI1RvbXNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1UVUwjVHVsJ3NrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1UVkUjVHZlcnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1UWVUjVGp1bWVuc2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLVVMWSNVbCdqYW5vdnNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1WTEEjVmxhZGltaXJza2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtVkdHI1ZvbGdvZ3JhZHNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1WTEcjVm9sb2dvZHNrYWphIG9ibGFzdCcjUlUKLWdlbyNSVS1WT1IjVm9yb25lxb5za2FqYSBvYmxhc3QnI1JVCi1nZW8jUlUtWUFSI0phcm9zbGF2c2thamEgb2JsYXN0JyNSVQotZ2VvI1JVLU1PVyNNb3NrdmEjUlUKLWdlbyNSVS1TUEUjU2Fua3QtUGV0ZXJidXJnI1JVCi1nZW8jUlUtWUVWI0V2cmVqc2thamEgYXZ0b25vbW5hamEgb2JsYXN0JyNSVQotZ2VvI1JVLUFHQiNBZ2luc2tpaiBCdXJqYXRza2lqIGF2dG9ub21ueWogb2tydWcjUlUKLWdlbyNSVS1DSFUjxIx1a290c2tpaiBhdnRvbm9tbnlqIG9rcnVnI1JVCi1nZW8jUlUtRVZFI8OIdmVua2lqc2tpaiBhdnRvbm9tbnlqIG9rcnVnI1JVCi1nZW8jUlUtS0hNI0hhbnR5LU1hbnNpanNraWogYXZ0b25vbW55aiBva3J1ZyNSVQotZ2VvI1JVLUtPUCNLb21pLVBlcm1qYXRza2lqIGF2dG9ub21ueWogb2tydWcjUlUKLWdlbyNSVS1LT1IjS29yamFrc2tpaiBhdnRvbm9tbnlqIG9rcnVnI1JVCi1nZW8jUlUtTkVOI05lbmV0c2tpaiBhdnRvbm9tbnlqIG9rcnVnI1JVCi1nZW8jUlUtVEFZI1Rham15cnNraWogKERvbGdhbm8tTmVuZXRza2lqKSBhdnRvbm9tbnlqIG9rcnVnI1JVCi1nZW8jUlUtVU9CI1VzdCctT3JkeW5za2lqIEJ1cmphdHNraWogYXZ0b25vbW55aiBva3J1ZyNSVQotZ2VvI1JVLVlBTiNKYW1hbG8tTmVuZXRza2lqIGF2dG9ub21ueWogb2tydWcjUlUKLWdlbyNSVyNSd2FuZGEjLS0KLWdlbyNTQSNTYXVkaSBBcmFiaWEjLS0KLWdlbyNTQiNTb2xvbW9uIElzbGFuZHMjLS0KLWdlbyNTQyNTZXljaGVsbGVzIy0tCi1nZW8jU0QjU3VkYW4jLS0KLWdlbyNTRSNTd2VkZW4jLS0KLWdlbyNTRS1BQiNTdG9ja2hvbG1zIEzDpG4jU0UKLWdlbyNTRS1BQyNWw6RzdGVyYm90dGVucyBMw6RuI1NFCi1nZW8jU0UtQkQjTm9ycmJvdHRlbnMgTMOkbiNTRQotZ2VvI1NFLUMjVXBwc2FsYSBMw6RuI1NFCi1nZW8jU0UtRCNTw7ZkZXJtYW5sYW5kcyBMw6RuI1NFCi1nZW8jU0UtRSPDlnN0ZXJnw7Z0bGFuZHMgTMOkbiNTRQotZ2VvI1NFLUYjSsO2bmvDtnBpbmdzIEzDpG4jU0UKLWdlbyNTRS1HI0tyb25vYm9yZ3MgTMOkbiNTRQotZ2VvI1NFLUgjS2FsbWFyIEzDpG4jU0UKLWdlbyNTRS1JI0dvdGxhbmRzIEzDpG4jU0UKLWdlbyNTRS1LI0JsZWtpbmdlIEzDpG4jU0UKLWdlbyNTRS1NI1Nrw6VuZSBMw6RuI1NFCi1nZW8jU0UtTiNIYWxsYW5kcyBMw6RuI1NFCi1nZW8jU0UtTyNWw6RzdHJhIEfDtnRhbGFuZHMgTMOkbiNTRQotZ2VvI1NFLVMjVsOkcm1sYW5kcyBMw6RuI1NFCi1nZW8jU0UtVCPDlnJlYnJvIEzDpG4jU0UKLWdlbyNTRS1VI1bDpHN0bWFubGFuZHMgTMOkbiNTRQotZ2VvI1NFLVcjRGFsYXJuZXMgTMOkbiNTRQotZ2VvI1NFLVgjR8OkdmxlYm9yZ3MgTMOkbiNTRQotZ2VvI1NFLVkjVsOkc3Rlcm5vcnJsYW5kcyBMw6RuI1NFCi1nZW8jU0UtWiNKw6RtdGxhbmRzIEzDpG4jU0UKLWdlbyNTRyNTaW5nYXBvcmUjLS0KLWdlbyNTSCNTdCBIZWxlbmEjLS0KLWdlbyNTSSNTbG92ZW5pYSMtLQotZ2VvI1NKI1N2YWxiYXJkIEFuZCBKYW4gTWF5ZW4jLS0KLWdlbyNTSyNTbG92YWtpYSMtLQotZ2VvI1NMI1NpZXJyYSBMZW9uZSMtLQotZ2VvI1NNI1NhbiBNYXJpbm8jLS0KLWdlbyNTTiNTZW5lZ2FsIy0tCi1nZW8jU08jU29tYWxpYSMtLQotZ2VvI1NSI1N1cmluYW1lIy0tCi1nZW8jU1QjU2FvIFRvbWUgQW5kIFByaW5jaXBlIy0tCi1nZW8jU1YjRWwgU2FsdmFkb3IjLS0KLWdlbyNTWSNTeXJpYW4gQXJhYiBSZXB1YmxpYyMtLQotZ2VvI1NaI1N3YXppbGFuZCMtLQotZ2VvI1RDI1R1cmtzIEFuZCBDYWljb3MgSXNsYW5kcyMtLQotZ2VvI1REI0NoYWQjLS0KLWdlbyNURiNGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMjLS0KLWdlbyNURyNUb2dvIy0tCi1nZW8jVEgjVGhhaWxhbmQjLS0KLWdlbyNUSiNUYWppa2lzdGFuIy0tCi1nZW8jVE0jVHVya21lbmlzdGFuIy0tCi1nZW8jVE4jVHVuaXNpYSMtLQotZ2VvI1RPI1RvbmdhIy0tCi1nZW8jVFAjRWFzdCBUaW1vciMtLQotZ2VvI1RSI1R1cmtleSMtLQotZ2VvI1RSLTAxI0FkYW5hI1RSCi1nZW8jVFItMDIjQWTEsXlhbWFuI1RSCi1nZW8jVFItMDMjQWZ5b24jVFIKLWdlbyNUUi0wNCNBxJ9yxLEjVFIKLWdlbyNUUi0wNSNBbWFzeWEjVFIKLWdlbyNUUi0wNiNBbmthcmEjVFIKLWdlbyNUUi0wNyNBbnRhbHlhI1RSCi1nZW8jVFItMDgjQXJ0dmluI1RSCi1nZW8jVFItMDkjQXlkxLFuI1RSCi1nZW8jVFItMTAjQmFsxLFrZXNpciNUUgotZ2VvI1RSLTExI0JpbGVjaWsjVFIKLWdlbyNUUi0xMiNCaW5nw7ZsI1RSCi1nZW8jVFItMTMjQml0bGlzI1RSCi1nZW8jVFItMTQjQm9sdSNUUgotZ2VvI1RSLTE1I0J1cmR1ciNUUgotZ2VvI1RSLTE2I0J1cnNhI1RSCi1nZW8jVFItMTcjw4dhbmFra2FsZSNUUgotZ2VvI1RSLTE4I8OHYW5rxLFyxLEjVFIKLWdlbyNUUi0xOSPDh29ydW0jVFIKLWdlbyNUUi0yMCNEZW5pemxpI1RSCi1nZW8jVFItMjEjRGl5YXJiYWvEsXIjVFIKLWdlbyNUUi0yMiNFZGlybmUjVFIKLWdlbyNUUi0yMyNFbGF6xLFnI1RSCi1nZW8jVFItMjQjRXJ6aW5jYW4jVFIKLWdlbyNUUi0yNSNFcnp1cnVtI1RSCi1nZW8jVFItMjYjRXNracWfZWhpciNUUgotZ2VvI1RSLTI3I0dhemlhbnRlcCNUUgotZ2VvI1RSLTI4I0dpcmVzdW4jVFIKLWdlbyNUUi0yOSNHw7xtw7zFn2hhbmUjVFIKLWdlbyNUUi0zMCNIYWtrw6JyaSNUUgotZ2VvI1RSLTMxI0hhdGF5I1RSCi1nZW8jVFItMzIjSXNwYXJ0YSNUUgotZ2VvI1RSLTMzI8Sww6dlbCNUUgotZ2VvI1RSLTM0I8Swc3RhbmJ1bCNUUgotZ2VvI1RSLTM1I8Swem1pciNUUgotZ2VvI1RSLTM2I0thcnMjVFIKLWdlbyNUUi0zNyNLYXN0YW1vbnUjVFIKLWdlbyNUUi0zOCNLYXlzZXJpI1RSCi1nZW8jVFItMzkjS8SxcmtsYXJlbGkjVFIKLWdlbyNUUi00MCNLxLFyxZ9laGlyI1RSCi1nZW8jVFItNDEjS29jYWVsaSNUUgotZ2VvI1RSLTQyI0tvbnlhI1RSCi1nZW8jVFItNDMjS8O8dGFoeWEjVFIKLWdlbyNUUi00NCNNYWxhdHlhI1RSCi1nZW8jVFItNDUjTWFuaXNhI1RSCi1nZW8jVFItNDYjS2FocmFtYW5tYXJhxZ8jVFIKLWdlbyNUUi00NyNNYXJkaW4jVFIKLWdlbyNUUi00OCNNdcSfbGEjVFIKLWdlbyNUUi00OSNNdcWfI1RSCi1nZW8jVFItNTAjTmV2xZ9laGlyI1RSCi1nZW8jVFItNTEjTmnEn2RlI1RSCi1nZW8jVFItNTIjT3JkdSNUUgotZ2VvI1RSLTUzI1JpemUjVFIKLWdlbyNUUi01NCNTYWthcnlhI1RSCi1nZW8jVFItNTUjU2Ftc3VuI1RSCi1nZW8jVFItNTYjU2lpcnQjVFIKLWdlbyNUUi01NyNTaW5vcCNUUgotZ2VvI1RSLTU4I1NpdmFzI1RSCi1nZW8jVFItNTkjVGVraXJkYcSfI1RSCi1nZW8jVFItNjAjVG9rYXQjVFIKLWdlbyNUUi02MSNUcmFiem9uI1RSCi1nZW8jVFItNjIjVHVuY2VsaSNUUgotZ2VvI1RSLTYzI8WeYW5sxLF1cmZhI1RSCi1nZW8jVFItNjQjVcWfYWsjVFIKLWdlbyNUUi02NSNWYW4jVFIKLWdlbyNUUi02NiNZb3pnYXQjVFIKLWdlbyNUUi02NyNab25ndWxkYWsjVFIKLWdlbyNUUi02OCNBa3NhcmF5I1RSCi1nZW8jVFItNjkjQmF5YnVydCNUUgotZ2VvI1RSLTcwI0thcmFtYW4jVFIKLWdlbyNUUi03MSNLxLFyxLFra2FsZSNUUgotZ2VvI1RSLTcyI0JhdG1hbiNUUgotZ2VvI1RSLTczI8WexLFybmFrI1RSCi1nZW8jVFItNzQjQmFydMSxbiNUUgotZ2VvI1RSLTc1I0FyZGFoYW4jVFIKLWdlbyNUUi03NiNJxJ9kxLFyI1RSCi1nZW8jVFItNzcjWWFsb3ZhI1RSCi1nZW8jVFItNzgjS2FyYWLDvGsjVFIKLWdlbyNUUi03OSNLaWxpcyNUUgotZ2VvI1RSLTgwI09zbWFuaXllI1RSCi1nZW8jVFQjVHJpbmlkYWQgQW5kIFRvYmFnbyMtLQotZ2VvI1RWI1R1dmFsdSMtLQotZ2VvI1RXIyJUYWl3YW4sIFByb3ZpbmNlIE9mIENoaW5hIiMtLQotZ2VvI1RaIyJUYW56YW5pYSwgVW5pdGVkIFJlcHVibGljIG9mIiMtLQotZ2VvI1VBI1VrcmFpbmUjLS0KLWdlbyNVRyNVZ2FuZGEjLS0KLWdlbyNVTSNVUyBNaW5vciBPdXRseWluZyBJc2xhbmRzIy0tCi1nZW8jVU0tNjcjSm9obnN0b24gQXRvbGwjVU0KLWdlbyNVTS03MSNNaWR3YXkgSXNsYW5kcyNVTQotZ2VvI1VNLTc2I05hdmFzc2EgSXNsYW5kI1VNCi1nZW8jVU0tNzkjV2FrZSBJc2xhbmQjVU0KLWdlbyNVTS04MSNCYWtlciBJc2xhbmQjVU0KLWdlbyNVTS04NCNIb3dsYW5kIElzbGFuZCNVTQotZ2VvI1VNLTg2I0phcnZpcyBJc2xhbmQjVU0KLWdlbyNVTS04OSNLaW5nbWFuIFJlZWYjVU0KLWdlbyNVTS05NSNQYWxteXJhIEF0b2xsI1VNCi1nZW8jVVMjVW5pdGVkIFN0YXRlcyMtLQotZ2VvI1VTLUFLI0FsYXNrYSNVUwotZ2VvI1VTLUFMI0FsYWJhbWEjVVMKLWdlbyNVUy1BUiNBcmthbnNhcyNVUwotZ2VvI1VTLUFTI0FtZXJpY2FuIFNhbW9hI1VTCi1nZW8jVVMtQVojQXJpem9uYSNVUwotZ2VvI1VTLUNBI0NhbGlmb3JuaWEjVVMKLWdlbyNVUy1DTyNDb2xvcmFkbyNVUwotZ2VvI1VTLUNUI0Nvbm5lY3RpY3V0I1VTCi1nZW8jVVMtREMjRGlzdHJpY3QgT2YgQ29sdW1iaWEjVVMKLWdlbyNVUy1ERSNEZWxhd2FyZSNVUwotZ2VvI1VTLUZMI0Zsb3JpZGEjVVMKLWdlbyNVUy1HQSNHZW9yZ2lhI1VTCi1nZW8jVVMtR1UjR3VhbSNVUwotZ2VvI1VTLUhJI0hhd2FpaSNVUwotZ2VvI1VTLUlBI0lvd2EjVVMKLWdlbyNVUy1JRCNJZGFobyNVUwotZ2VvI1VTLUlMI0lsbGlub2lzI1VTCi1nZW8jVVMtSU4jSW5kaWFuYSNVUwotZ2VvI1VTLUtTI0thbnNhcyNVUwotZ2VvI1VTLUtZI0tlbnR1Y2t5I1VTCi1nZW8jVVMtTEEjTG91aXNpYW5hI1VTCi1nZW8jVVMtTUEjTWFzc2FjaHVzZXR0cyNVUwotZ2VvI1VTLU1EI01hcnlsYW5kI1VTCi1nZW8jVVMtTUUjTWFpbmUjVVMKLWdlbyNVUy1NSSNNaWNoaWdhbiNVUwotZ2VvI1VTLU1OI01pbm5lc290YSNVUwotZ2VvI1VTLU1PI01pc3NvdXJpI1VTCi1nZW8jVVMtTVAjTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzI1VTCi1nZW8jVVMtTVMjTWlzc2lzc2lwcGkjVVMKLWdlbyNVUy1NVCNNb250YW5hI1VTCi1nZW8jVVMtTkMjTm9ydGggQ2Fyb2xpbmEjVVMKLWdlbyNVUy1ORCNOb3J0aCBEYWtvdGEjVVMKLWdlbyNVUy1ORSNOZWJyYXNrYSNVUwotZ2VvI1VTLU5II05ldyBIYW1wc2hpcmUjVVMKLWdlbyNVUy1OSiNOZXcgSmVyc2V5I1VTCi1nZW8jVVMtTk0jTmV3IE1leGljbyNVUwotZ2VvI1VTLU5WI05ldmFkYSNVUwotZ2VvI1VTLU5ZI05ldyBZb3JrI1VTCi1nZW8jVVMtT0gjT2hpbyNVUwotZ2VvI1VTLU9LI09rbGFob21hI1VTCi1nZW8jVVMtT1IjT3JlZ29uI1VTCi1nZW8jVVMtUEEjUGVubnN5bHZhbmlhI1VTCi1nZW8jVVMtUFIjUHVlcnRvIFJpY28jVVMKLWdlbyNVUy1SSSNSaG9kZSBJc2xhbmQjVVMKLWdlbyNVUy1TQyNTb3V0aCBDYXJvbGluYSNVUwotZ2VvI1VTLVNEI1NvdXRoIERha290YSNVUwotZ2VvI1VTLVROI1Rlbm5lc3NlZSNVUwotZ2VvI1VTLVRYI1RleGFzI1VTCi1nZW8jVVMtVU0jVS5TLiBNaW5vciBPdXRseWluZyBJc2xhbmRzI1VTCi1nZW8jVVMtVVQjVXRhaCNVUwotZ2VvI1VTLVZBI1ZpcmdpbmlhI1VTCi1nZW8jVVMtVkkjVmlyZ2luIElzbGFuZHMgT2YgVGhlIFUuUy4jVVMKLWdlbyNVUy1WVCNWZXJtb250I1VTCi1nZW8jVVMtV0EjV2FzaGluZ3RvbiNVUwotZ2VvI1VTLVdJI1dpc2NvbnNpbiNVUwotZ2VvI1VTLVdWI1dlc3QgVmlyZ2luaWEjVVMKLWdlbyNVUy1XWSNXeW9taW5nI1VTCi1nZW8jVVkjVXJ1Z3VheSMtLQotZ2VvI1VaI1V6YmVraXN0YW4jLS0KLWdlbyNWQSNWYXRpY2FuIENpdHkgU3RhdGUjLS0KLWdlbyNWQyNTdCBWaW5jZW50IEFuZCBHcmVuYWRpbmVzIy0tCi1nZW8jVkUjVmVuZXp1ZWxhIy0tCi1nZW8jVkcjIlZpcmdpbiBJc2xhbmRzLCBCcml0aXNoIiMtLQotZ2VvI1ZJI1VuaXRlZCBTdGF0ZXMgVmlyZ2luIElzbGFuZHMjLS0KLWdlbyNWTiNWaWV0IE5hbSMtLQotZ2VvI1ZOLTAxI0xhaSBDaGF1I1ZOCi1nZW8jVk4tMDIjTGFvIENhaSNWTgotZ2VvI1ZOLTAzI0hhIEdpYW5nI1ZOCi1nZW8jVk4tMDQjQ2FvIEJhbmcjVk4KLWdlbyNWTi0wNSNTb24gTGEjVk4KLWdlbyNWTi0wNiNZZW4gQmFpI1ZOCi1nZW8jVk4tMDcjVHV5ZW4gUXVhbmcjVk4KLWdlbyNWTi0wOSNMYW5nIFNvbiNWTgotZ2VvI1ZOLTEzI1F1YW5nIE5pbmgjVk4KLWdlbyNWTi0xNCNIb2EgQmluaCNWTgotZ2VvI1ZOLTE1I0hhIFRheSNWTgotZ2VvI1ZOLTE4I05pbmggQmluaCNWTgotZ2VvI1ZOLTIwI1RoYWkgQmluaCNWTgotZ2VvI1ZOLTIxI1RoYW5oIEhvYSNWTgotZ2VvI1ZOLTIyI05naGUgQW4jVk4KLWdlbyNWTi0yMyNIYSBUaW5oI1ZOCi1nZW8jVk4tMjQjUXVhbmcgQmluaCNWTgotZ2VvI1ZOLTI1I1F1YW5nIFRyaSNWTgotZ2VvI1ZOLTI2I1RodWEgVGhpZW4tSHVlI1ZOCi1nZW8jVk4tMjcjUXVhbmcgTmFtI1ZOCi1nZW8jVk4tMjgjS29uIFR1bSNWTgotZ2VvI1ZOLTI5I1F1YW5nIE5nYWkjVk4KLWdlbyNWTi0zMCNHaWEgTGFpI1ZOCi1nZW8jVk4tMzEjQmluaCBEaW5oI1ZOCi1nZW8jVk4tMzIjUGh1IFllbiNWTgotZ2VvI1ZOLTMzI0RhYyBMYWMjVk4KLWdlbyNWTi0zNCNLaGFuaCBIb2EjVk4KLWdlbyNWTi0zNSNMYW0gRG9uZyNWTgotZ2VvI1ZOLTM2I05pbmggVGh1YW4jVk4KLWdlbyNWTi0zNyNUYXkgTmluaCNWTgotZ2VvI1ZOLTM5I0RvbmcgTmFpI1ZOCi1nZW8jVk4tNDAjQmluaCBUaHVhbiNWTgotZ2VvI1ZOLTQxI0xvbmcgQW4jVk4KLWdlbyNWTi00MyNCYSBSaWEgLSBWdW5nIFRhdSNWTgotZ2VvI1ZOLTQ0I0FuIEdpYW5nI1ZOCi1nZW8jVk4tNDUjRG9uZyBUaGFwI1ZOCi1nZW8jVk4tNDYjVGllbiBHaWFuZyNWTgotZ2VvI1ZOLTQ3I0tpZW4gR2lhbmcjVk4KLWdlbyNWTi00OCNDYW4gVGhvI1ZOCi1nZW8jVk4tNDkjVmluaCBMb25nI1ZOCi1nZW8jVk4tNTAjQmVuIFRyZSNWTgotZ2VvI1ZOLTUxI1RyYSBWaW5oI1ZOCi1nZW8jVk4tNTIjU29jIFRyYW5nI1ZOCi1nZW8jVk4tNTMjQmFjIENhbiNWTgotZ2VvI1ZOLTU0I0JhYyBHaWFuZyNWTgotZ2VvI1ZOLTU1I0JhYyBMaWV1I1ZOCi1nZW8jVk4tNTYjQmFjIE5pbmgjVk4KLWdlbyNWTi01NyNCaW5oIER1b25nI1ZOCi1nZW8jVk4tNTgjQmluaCBQaHVvYyNWTgotZ2VvI1ZOLTU5I0NhIE1hdSNWTgotZ2VvI1ZOLTYwIyJEYSBOYW5nLCB0aGFuaCBwaG8iI1ZOCi1nZW8jVk4tNjEjSGFpIER1b25nI1ZOCi1nZW8jVk4tNjIjIkhhaSBQaG9uZywgdGhhbmggcGhvIiNWTgotZ2VvI1ZOLTYzI0hhIE5hbSNWTgotZ2VvI1ZOLTY0IyJIYSBOb2ksIHRodSBkbyIjVk4KLWdlbyNWTi02NSMiSG8gQ2hpIE1pbmgsIHRoYW5oIHBvIFtTYWkgR29uXSIjVk4KLWdlbyNWTi02NiNIdW5nIFllbiNWTgotZ2VvI1ZOLTY3I05hbSBEaW5oI1ZOCi1nZW8jVk4tNjgjUGh1IFRobyNWTgotZ2VvI1ZOLTY5I1RoYWkgTmd1eWVuI1ZOCi1nZW8jVk4tNzAjVmluaCBQaHVjI1ZOCi1nZW8jVlUjVmFudWF0dSMtLQotZ2VvI1dGI1dhbGxpcyBBbmQgRnV0dW5hIElzbGFuZHMjLS0KLWdlbyNXUyNTYW1vYSMtLQotZ2VvI1lFI1llbWVuIy0tCi1nZW8jWVQjTWF5b3R0ZSMtLQotZ2VvI1lVI1l1Z29zbGF2aWEgKEZlZCBSZXAgT2YpIy0tCi1nZW8jWVUtQ0cjQ3JuYSBHb3JhI1lVCi1nZW8jWVUtU1IjU3JiaWphI1lVCi1nZW8jWVUtS00jS29zb3ZvLU1ldG9oaWphI1lVLVNSCi1nZW8jWVUtVk8jVm9qdm9kaW5hI1lVLVNSCi1nZW8jWkEjU291dGggQWZyaWNhIy0tCi1nZW8jWk0jWmFtYmlhIy0tCi1nZW8jWlcjWmltYmFid2UjLS0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9kYXRhL25haWNzLWRhdGEudHh0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2RhdGEvbmFpY3MtZGF0YS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NmY5MDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2RhdGEvbmFpY3MtZGF0YS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxODE0ICswLDAgQEAKLW5haWNzIzExI0FncmljdWx0dXJlLCBGb3Jlc3RyeSwgRmlzaGluZyBhbmQgSHVudGluZyMxMQotbmFpY3MjMTExI0Nyb3AgUHJvZHVjdGlvbiMxMQotbmFpY3MjMTExMSNPaWxzZWVkIGFuZCBHcmFpbiBGYXJtaW5nIzExMQotbmFpY3MjMTExMTEjU295YmVhbiBGYXJtaW5nIzExMTEKLW5haWNzIzExMTEyI09pbHNlZWQgKGV4Y2VwdCBTb3liZWFuKSBGYXJtaW5nIzExMTEKLW5haWNzIzExMTEzI0RyeSBQZWEgYW5kIEJlYW4gRmFybWluZyMxMTExCi1uYWljcyMxMTExNCNXaGVhdCBGYXJtaW5nIzExMTEKLW5haWNzIzExMTE1I0Nvcm4gRmFybWluZyMxMTExCi1uYWljcyMxMTExNiNSaWNlIEZhcm1pbmcjMTExMQotbmFpY3MjMTExMTkjT3RoZXIgR3JhaW4gRmFybWluZyMxMTExCi1uYWljcyMxMTExOTEjT2lsc2VlZCBhbmQgR3JhaW4gQ29tYmluYXRpb24gRmFybWluZyMxMTExOQotbmFpY3MjMTExMTk5I0FsbCBPdGhlciBHcmFpbiBGYXJtaW5nIzExMTE5Ci1uYWljcyMxMTEyI1ZlZ2V0YWJsZSBhbmQgTWVsb24gRmFybWluZyMxMTEKLW5haWNzIzExMTIxI1ZlZ2V0YWJsZSBhbmQgTWVsb24gRmFybWluZyMxMTEyCi1uYWljcyMxMTEyMTEjUG90YXRvIEZhcm1pbmcjMTExMjEKLW5haWNzIzExMTIxOSNPdGhlciBWZWdldGFibGUgKGV4Y2VwdCBQb3RhdG8pIGFuZCBNZWxvbiBGYXJtaW5nIzExMTIxCi1uYWljcyMxMTEzI0ZydWl0IGFuZCBUcmVlIE51dCBGYXJtaW5nIzExMQotbmFpY3MjMTExMzEjT3JhbmdlIEdyb3ZlcyMxMTEzCi1uYWljcyMxMTEzMiNDaXRydXMgKGV4Y2VwdCBPcmFuZ2UpIEdyb3ZlcyMxMTEzCi1uYWljcyMxMTEzMyNOb25jaXRydXMgRnJ1aXQgYW5kIFRyZWUgTnV0IEZhcm1pbmcjMTExMwotbmFpY3MjMTExMzMxI0FwcGxlIE9yY2hhcmRzIzExMTMzCi1uYWljcyMxMTEzMzIjR3JhcGUgVmluZXlhcmRzIzExMTMzCi1uYWljcyMxMTEzMzMjU3RyYXdiZXJyeSBGYXJtaW5nIzExMTMzCi1uYWljcyMxMTEzMzQjQmVycnkgKGV4Y2VwdCBTdHJhd2JlcnJ5KSBGYXJtaW5nIzExMTMzCi1uYWljcyMxMTEzMzUjVHJlZSBOdXQgRmFybWluZyMxMTEzMwotbmFpY3MjMTExMzM2I0ZydWl0IGFuZCBUcmVlIE51dCBDb21iaW5hdGlvbiBGYXJtaW5nIzExMTMzCi1uYWljcyMxMTEzMzkjT3RoZXIgTm9uY2l0cnVzIEZydWl0IEZhcm1pbmcjMTExMzMKLW5haWNzIzExMTQjR3JlZW5ob3VzZSwgTnVyc2VyeSwgYW5kIEZsb3JpY3VsdHVyZSBQcm9kdWN0aW9uIzExMQotbmFpY3MjMTExNDEjRm9vZCBDcm9wcyBHcm93biBVbmRlciBDb3ZlciMxMTE0Ci1uYWljcyMxMTE0MTEjTXVzaHJvb20gUHJvZHVjdGlvbiMxMTE0MQotbmFpY3MjMTExNDE5I090aGVyIEZvb2QgQ3JvcHMgR3Jvd24gVW5kZXIgQ292ZXIjMTExNDEKLW5haWNzIzExMTQyI051cnNlcnkgYW5kIEZsb3JpY3VsdHVyZSBQcm9kdWN0aW9uIzExMTQKLW5haWNzIzExMTQyMSNOdXJzZXJ5IGFuZCBUcmVlIFByb2R1Y3Rpb24jMTExNDIKLW5haWNzIzExMTQyMiNGbG9yaWN1bHR1cmUgUHJvZHVjdGlvbiMxMTE0MgotbmFpY3MjMTExOSNPdGhlciBDcm9wIEZhcm1pbmcjMTExCi1uYWljcyMxMTE5MSNUb2JhY2NvIEZhcm1pbmcjMTExOQotbmFpY3MjMTExOTIjQ290dG9uIEZhcm1pbmcjMTExOQotbmFpY3MjMTExOTMjU3VnYXJjYW5lIEZhcm1pbmcjMTExOQotbmFpY3MjMTExOTQjSGF5IEZhcm1pbmcjMTExOQotbmFpY3MjMTExOTkjQWxsIE90aGVyIENyb3AgRmFybWluZyMxMTE5Ci1uYWljcyMxMTE5OTEjU3VnYXIgQmVldCBGYXJtaW5nIzExMTk5Ci1uYWljcyMxMTE5OTIjUGVhbnV0IEZhcm1pbmcjMTExOTkKLW5haWNzIzExMTk5OCNBbGwgT3RoZXIgTWlzY2VsbGFuZW91cyBDcm9wIEZhcm1pbmcjMTExOTkKLW5haWNzIzExMiNBbmltYWwgUHJvZHVjdGlvbiMxMQotbmFpY3MjMTEyMSNDYXR0bGUgUmFuY2hpbmcgYW5kIEZhcm1pbmcjMTEyCi1uYWljcyMxMTIxMSNCZWVmIENhdHRsZSBSYW5jaGluZyBhbmQgRmFybWluZywgaW5jbHVkaW5nIEZlZWRsb3RzIzExMjEKLW5haWNzIzExMjExMSNCZWVmIENhdHRsZSBSYW5jaGluZyBhbmQgRmFybWluZyMxMTIxMQotbmFpY3MjMTEyMTEyI0NhdHRsZSBGZWVkbG90cyMxMTIxMQotbmFpY3MjMTEyMTIjRGFpcnkgQ2F0dGxlIGFuZCBNaWxrIFByb2R1Y3Rpb24jMTEyMQotbmFpY3MjMTEyMTMjRHVhbCBQdXJwb3NlIENhdHRsZSBSYW5jaGluZyBhbmQgRmFybWluZyMxMTIxCi1uYWljcyMxMTIyI0hvZyBhbmQgUGlnIEZhcm1pbmcjMTEyCi1uYWljcyMxMTIyMSNIb2cgYW5kIFBpZyBGYXJtaW5nIzExMjIKLW5haWNzIzExMjMjUG91bHRyeSBhbmQgRWdnIFByb2R1Y3Rpb24jMTEyCi1uYWljcyMxMTIzMSNDaGlja2VuIEVnZyBQcm9kdWN0aW9uIzExMjMKLW5haWNzIzExMjMyI0Jyb2lsZXJzIGFuZCBPdGhlciBNZWF0IFR5cGUgQ2hpY2tlbiBQcm9kdWN0aW9uIzExMjMKLW5haWNzIzExMjMzI1R1cmtleSBQcm9kdWN0aW9uIzExMjMKLW5haWNzIzExMjM0I1BvdWx0cnkgSGF0Y2hlcmllcyMxMTIzCi1uYWljcyMxMTIzOSNPdGhlciBQb3VsdHJ5IFByb2R1Y3Rpb24jMTEyMwotbmFpY3MjMTEyNCNTaGVlcCBhbmQgR29hdCBGYXJtaW5nIzExMgotbmFpY3MjMTEyNDEjU2hlZXAgRmFybWluZyMxMTI0Ci1uYWljcyMxMTI0MiNHb2F0IEZhcm1pbmcjMTEyNAotbmFpY3MjMTEyNSNBbmltYWwgQXF1YWN1bHR1cmUjMTEyCi1uYWljcyMxMTI1MSNBbmltYWwgQXF1YWN1bHR1cmUjMTEyNQotbmFpY3MjMTEyNTExI0ZpbmZpc2ggRmFybWluZyBhbmQgRmlzaCBIYXRjaGVyaWVzIzExMjUxCi1uYWljcyMxMTI1MTIjU2hlbGxmaXNoIEZhcm1pbmcjMTEyNTEKLW5haWNzIzExMjUxOSNPdGhlciBBbmltYWwgQXF1YWN1bHR1cmUjMTEyNTEKLW5haWNzIzExMjkjT3RoZXIgQW5pbWFsIFByb2R1Y3Rpb24jMTEyCi1uYWljcyMxMTI5MSNBcGljdWx0dXJlIzExMjkKLW5haWNzIzExMjkyI0hvcnNlIGFuZCBPdGhlciBFcXVpbmUgUHJvZHVjdGlvbiMxMTI5Ci1uYWljcyMxMTI5MyNGdXItQmVhcmluZyBBbmltYWwgYW5kIFJhYmJpdCBQcm9kdWN0aW9uIzExMjkKLW5haWNzIzExMjk5I0FsbCBPdGhlciBBbmltYWwgUHJvZHVjdGlvbiMxMTI5Ci1uYWljcyMxMTMjRm9yZXN0cnkgYW5kIExvZ2dpbmcjMTEKLW5haWNzIzExMzEjVGltYmVyIFRyYWN0IE9wZXJhdGlvbnMjMTEzCi1uYWljcyMxMTMxMSNUaW1iZXIgVHJhY3QgT3BlcmF0aW9ucyMxMTMxCi1uYWljcyMxMTMyI0ZvcmVzdCBOdXJzZXJpZXMgYW5kIEdhdGhlcmluZyBvZiBGb3Jlc3QgUHJvZHVjdHMjMTEzCi1uYWljcyMxMTMyMSNGb3Jlc3QgTnVyc2VyaWVzIGFuZCBHYXRoZXJpbmcgb2YgRm9yZXN0IFByb2R1Y3RzIzExMzIKLW5haWNzIzExMzMjTG9nZ2luZyMxMTMKLW5haWNzIzExMzMxI0xvZ2dpbmcjMTEzMwotbmFpY3MjMTE0I0Zpc2hpbmcsIEh1bnRpbmcgYW5kIFRyYXBwaW5nIzExCi1uYWljcyMxMTQxI0Zpc2hpbmcjMTE0Ci1uYWljcyMxMTQxMSNGaXNoaW5nIzExNDEKLW5haWNzIzExNDExMSNGaW5maXNoIEZpc2hpbmcjMTE0MTEKLW5haWNzIzExNDExMiNTaGVsbGZpc2ggRmlzaGluZyMxMTQxMQotbmFpY3MjMTE0MTE5I090aGVyIE1hcmluZSBGaXNoaW5nIzExNDExCi1uYWljcyMxMTQyI0h1bnRpbmcgYW5kIFRyYXBwaW5nIzExNAotbmFpY3MjMTE0MjEjSHVudGluZyBhbmQgVHJhcHBpbmcjMTE0MgotbmFpY3MjMTE1I1N1cHBvcnQgQWN0aXZpdGllcyBmb3IgQWdyaWN1bHR1cmUgYW5kIEZvcmVzdHJ5IzExCi1uYWljcyMxMTUxI1N1cHBvcnQgQWN0aXZpdGllcyBmb3IgQ3JvcCBQcm9kdWN0aW9uIzExNQotbmFpY3MjMTE1MTEjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBDcm9wIFByb2R1Y3Rpb24jMTE1MQotbmFpY3MjMTE1MTExI0NvdHRvbiBHaW5uaW5nIzExNTExCi1uYWljcyMxMTUxMTIjU29pbCBQcmVwYXJhdGlvbiwgUGxhbnRpbmcsIGFuZCBDdWx0aXZhdGluZyMxMTUxMQotbmFpY3MjMTE1MTEzI0Nyb3AgSGFydmVzdGluZywgUHJpbWFyaWx5IGJ5IE1hY2hpbmUjMTE1MTEKLW5haWNzIzExNTExNCNQb3N0aGFydmVzdCBDcm9wIEFjdGl2aXRpZXMgKGV4Y2VwdCBDb3R0b24gR2lubmluZykjMTE1MTEKLW5haWNzIzExNTExNSNGYXJtIExhYm9yIENvbnRyYWN0b3JzIGFuZCBDcmV3IExlYWRlcnMjMTE1MTEKLW5haWNzIzExNTExNiNGYXJtIE1hbmFnZW1lbnQgU2VydmljZXMjMTE1MTEKLW5haWNzIzExNTIjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBBbmltYWwgUHJvZHVjdGlvbiMxMTUKLW5haWNzIzExNTIxI1N1cHBvcnQgQWN0aXZpdGllcyBmb3IgQW5pbWFsIFByb2R1Y3Rpb24jMTE1MgotbmFpY3MjMTE1MyNTdXBwb3J0IEFjdGl2aXRpZXMgZm9yIEZvcmVzdHJ5IzExNQotbmFpY3MjMTE1MzEjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBGb3Jlc3RyeSMxMTUzCi1uYWljcyMyMSNNaW5pbmcjMjEKLW5haWNzIzIxMSNPaWwgYW5kIEdhcyBFeHRyYWN0aW9uIzIxCi1uYWljcyMyMTExI09pbCBhbmQgR2FzIEV4dHJhY3Rpb24jMjExCi1uYWljcyMyMTExMSNPaWwgYW5kIEdhcyBFeHRyYWN0aW9uIzIxMTEKLW5haWNzIzIxMTExMSNDcnVkZSBQZXRyb2xldW0gYW5kIE5hdHVyYWwgR2FzIEV4dHJhY3Rpb24jMjExMTEKLW5haWNzIzIxMTExMiNOYXR1cmFsIEdhcyBMaXF1aWQgRXh0cmFjdGlvbiMyMTExMQotbmFpY3MjMjEyI01pbmluZyAoZXhjZXB0IE9pbCBhbmQgR2FzKSMyMQotbmFpY3MjMjEyMSNDb2FsIE1pbmluZyMyMTIKLW5haWNzIzIxMjExI0NvYWwgTWluaW5nIzIxMjEKLW5haWNzIzIxMjExMSNCaXR1bWlub3VzIENvYWwgYW5kIExpZ25pdGUgU3VyZmFjZSBNaW5pbmcjMjEyMTEKLW5haWNzIzIxMjExMiNCaXR1bWlub3VzIENvYWwgVW5kZXJncm91bmQgTWluaW5nIzIxMjExCi1uYWljcyMyMTIxMTMjQW50aHJhY2l0ZSBNaW5pbmcjMjEyMTEKLW5haWNzIzIxMjIjTWV0YWwgT3JlIE1pbmluZyMyMTIKLW5haWNzIzIxMjIxI0lyb24gT3JlIE1pbmluZyMyMTIyCi1uYWljcyMyMTIyMiNHb2xkIE9yZSBhbmQgU2lsdmVyIE9yZSBNaW5pbmcjMjEyMgotbmFpY3MjMjEyMjIxI0dvbGQgT3JlIE1pbmluZyMyMTIyMgotbmFpY3MjMjEyMjIyI1NpbHZlciBPcmUgTWluaW5nIzIxMjIyCi1uYWljcyMyMTIyMyNDb3BwZXIsIE5pY2tlbCwgTGVhZCwgYW5kIFppbmMgTWluaW5nIzIxMjIKLW5haWNzIzIxMjIzMSNMZWFkIE9yZSBhbmQgWmluYyBPcmUgTWluaW5nIzIxMjIzCi1uYWljcyMyMTIyMzQjQ29wcGVyIE9yZSBhbmQgTmlja2VsIE9yZSBNaW5pbmcjMjEyMjMKLW5haWNzIzIxMjI5I090aGVyIE1ldGFsIE9yZSBNaW5pbmcjMjEyMgotbmFpY3MjMjEyMjkxI1VyYW5pdW0tUmFkaXVtLVZhbmFkaXVtIE9yZSBNaW5pbmcjMjEyMjkKLW5haWNzIzIxMjI5OSNBbGwgT3RoZXIgTWV0YWwgT3JlIE1pbmluZyMyMTIyOQotbmFpY3MjMjEyMyNOb25tZXRhbGxpYyBNaW5lcmFsIE1pbmluZyBhbmQgUXVhcnJ5aW5nIzIxMgotbmFpY3MjMjEyMzEjU3RvbmUgTWluaW5nIGFuZCBRdWFycnlpbmcjMjEyMwotbmFpY3MjMjEyMzExI0RpbWVuc2lvbiBTdG9uZSBNaW5pbmcgYW5kIFF1YXJyeWluZyMyMTIzMQotbmFpY3MjMjEyMzEyI0NydXNoZWQgYW5kIEJyb2tlbiBMaW1lc3RvbmUgTWluaW5nIGFuZCBRdWFycnlpbmcjMjEyMzEKLW5haWNzIzIxMjMxMyNDcnVzaGVkIGFuZCBCcm9rZW4gR3Jhbml0ZSBNaW5pbmcgYW5kIFF1YXJyeWluZyMyMTIzMQotbmFpY3MjMjEyMzE5I090aGVyIENydXNoZWQgYW5kIEJyb2tlbiBTdG9uZSBNaW5pbmcgYW5kIFF1YXJyeWluZyMyMTIzMQotbmFpY3MjMjEyMzIjU2FuZCwgR3JhdmVsLCBDbGF5LCBhbmQgQ2VyYW1pYyBhbmQgUmVmcmFjdG9yeSBNaW5lcmFscyBNaW5pbmcgYW5kIFF1YXJyeWluZyMyMTIzCi1uYWljcyMyMTIzMjEjQ29uc3RydWN0aW9uIFNhbmQgYW5kIEdyYXZlbCBNaW5pbmcjMjEyMzIKLW5haWNzIzIxMjMyMiNJbmR1c3RyaWFsIFNhbmQgTWluaW5nIzIxMjMyCi1uYWljcyMyMTIzMjQjS2FvbGluIGFuZCBCYWxsIENsYXkgTWluaW5nIzIxMjMyCi1uYWljcyMyMTIzMjUjQ2xheSBhbmQgQ2VyYW1pYyBhbmQgUmVmcmFjdG9yeSBNaW5lcmFscyBNaW5pbmcjMjEyMzIKLW5haWNzIzIxMjM5I090aGVyIE5vbm1ldGFsbGljIE1pbmVyYWwgTWluaW5nIGFuZCBRdWFycnlpbmcjMjEyMwotbmFpY3MjMjEyMzkxI1BvdGFzaCwgU29kYSwgYW5kIEJvcmF0ZSBNaW5lcmFsIE1pbmluZyMyMTIzOQotbmFpY3MjMjEyMzkyI1Bob3NwaGF0ZSBSb2NrIE1pbmluZyMyMTIzOQotbmFpY3MjMjEyMzkzI090aGVyIENoZW1pY2FsIGFuZCBGZXJ0aWxpemVyIE1pbmVyYWwgTWluaW5nIzIxMjM5Ci1uYWljcyMyMTIzOTkjQWxsIE90aGVyIE5vbm1ldGFsbGljIE1pbmVyYWwgTWluaW5nIzIxMjM5Ci1uYWljcyMyMTMjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBNaW5pbmcjMjEKLW5haWNzIzIxMzEjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBNaW5pbmcjMjEzCi1uYWljcyMyMTMxMSNTdXBwb3J0IEFjdGl2aXRpZXMgZm9yIE1pbmluZyMyMTMxCi1uYWljcyMyMTMxMTEjRHJpbGxpbmcgT2lsIGFuZCBHYXMgV2VsbHMjMjEzMTEKLW5haWNzIzIxMzExMiNTdXBwb3J0IEFjdGl2aXRpZXMgZm9yIE9pbCBhbmQgR2FzIE9wZXJhdGlvbnMjMjEzMTEKLW5haWNzIzIxMzExMyNTdXBwb3J0IEFjdGl2aXRpZXMgZm9yIENvYWwgTWluaW5nIzIxMzExCi1uYWljcyMyMTMxMTQjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBNZXRhbCBNaW5pbmcjMjEzMTEKLW5haWNzIzIxMzExNSNTdXBwb3J0IEFjdGl2aXRpZXMgZm9yIE5vbm1ldGFsbGljIE1pbmVyYWxzIChleGNlcHQgRnVlbHMpIzIxMzExCi1uYWljcyMyMiNVdGlsaXRpZXMjMjIKLW5haWNzIzIyMSNVdGlsaXRpZXMjMjIKLW5haWNzIzIyMTEjRWxlY3RyaWMgUG93ZXIgR2VuZXJhdGlvbiwgVHJhbnNtaXNzaW9uIGFuZCBEaXN0cmlidXRpb24jMjIxCi1uYWljcyMyMjExMSNFbGVjdHJpYyBQb3dlciBHZW5lcmF0aW9uIzIyMTEKLW5haWNzIzIyMTExMSNIeWRyb2VsZWN0cmljIFBvd2VyIEdlbmVyYXRpb24jMjIxMTEKLW5haWNzIzIyMTExMiNGb3NzaWwgRnVlbCBFbGVjdHJpYyBQb3dlciBHZW5lcmF0aW9uIzIyMTExCi1uYWljcyMyMjExMTMjTnVjbGVhciBFbGVjdHJpYyBQb3dlciBHZW5lcmF0aW9uIzIyMTExCi1uYWljcyMyMjExMTkjT3RoZXIgRWxlY3RyaWMgUG93ZXIgR2VuZXJhdGlvbiMyMjExMQotbmFpY3MjMjIxMTIjRWxlY3RyaWMgUG93ZXIgVHJhbnNtaXNzaW9uLCBDb250cm9sLCBhbmQgRGlzdHJpYnV0aW9uIzIyMTEKLW5haWNzIzIyMTEyMSNFbGVjdHJpYyBCdWxrIFBvd2VyIFRyYW5zbWlzc2lvbiBhbmQgQ29udHJvbCMyMjExMgotbmFpY3MjMjIxMTIyI0VsZWN0cmljIFBvd2VyIERpc3RyaWJ1dGlvbiMyMjExMgotbmFpY3MjMjIxMiNOYXR1cmFsIEdhcyBEaXN0cmlidXRpb24jMjIxCi1uYWljcyMyMjEyMSNOYXR1cmFsIEdhcyBEaXN0cmlidXRpb24jMjIxMgotbmFpY3MjMjIxMyNXYXRlciwgU2V3YWdlIGFuZCBPdGhlciBTeXN0ZW1zIzIyMQotbmFpY3MjMjIxMzEjV2F0ZXIgU3VwcGx5IGFuZCBJcnJpZ2F0aW9uIFN5c3RlbXMjMjIxMwotbmFpY3MjMjIxMzIjU2V3YWdlIFRyZWF0bWVudCBGYWNpbGl0aWVzIzIyMTMKLW5haWNzIzIyMTMzI1N0ZWFtIGFuZCBBaXItQ29uZGl0aW9uaW5nIFN1cHBseSMyMjEzCi1uYWljcyMyMyNDb25zdHJ1Y3Rpb24jMjMKLW5haWNzIzIzMyNCdWlsZGluZywgRGV2ZWxvcGluZywgYW5kIEdlbmVyYWwgQ29udHJhY3RpbmcjMjMKLW5haWNzIzIzMzEjTGFuZCBTdWJkaXZpc2lvbiBhbmQgTGFuZCBEZXZlbG9wbWVudCMyMzMKLW5haWNzIzIzMzExI0xhbmQgU3ViZGl2aXNpb24gYW5kIExhbmQgRGV2ZWxvcG1lbnQjMjMzMQotbmFpY3MjMjMzMiNSZXNpZGVudGlhbCBCdWlsZGluZyBDb25zdHJ1Y3Rpb24jMjMzCi1uYWljcyMyMzMyMSNTaW5nbGUgRmFtaWx5IEhvdXNpbmcgQ29uc3RydWN0aW9uIzIzMzIKLW5haWNzIzIzMzIyI011bHRpZmFtaWx5IEhvdXNpbmcgQ29uc3RydWN0aW9uIzIzMzIKLW5haWNzIzIzMzMjTm9ucmVzaWRlbnRpYWwgQnVpbGRpbmcgQ29uc3RydWN0aW9uIzIzMwotbmFpY3MjMjMzMzEjTWFudWZhY3R1cmluZyBhbmQgSW5kdXN0cmlhbCBCdWlsZGluZyBDb25zdHJ1Y3Rpb24jMjMzMwotbmFpY3MjMjMzMzIjQ29tbWVyY2lhbCBhbmQgSW5zdGl0dXRpb25hbCBCdWlsZGluZyBDb25zdHJ1Y3Rpb24jMjMzMwotbmFpY3MjMjM0I0hlYXZ5IENvbnN0cnVjdGlvbiMyMwotbmFpY3MjMjM0MSNIaWdod2F5LCBTdHJlZXQsIEJyaWRnZSwgYW5kIFR1bm5lbCBDb25zdHJ1Y3Rpb24jMjM0Ci1uYWljcyMyMzQxMSNIaWdod2F5IGFuZCBTdHJlZXQgQ29uc3RydWN0aW9uIzIzNDEKLW5haWNzIzIzNDEyI0JyaWRnZSBhbmQgVHVubmVsIENvbnN0cnVjdGlvbiMyMzQxCi1uYWljcyMyMzQ5I090aGVyIEhlYXZ5IENvbnN0cnVjdGlvbiMyMzQKLW5haWNzIzIzNDkxI1dhdGVyLCBTZXdlciwgYW5kIFBpcGVsaW5lIENvbnN0cnVjdGlvbiMyMzQ5Ci1uYWljcyMyMzQ5MiNQb3dlciBhbmQgQ29tbXVuaWNhdGlvbiBUcmFuc21pc3Npb24gTGluZSBDb25zdHJ1Y3Rpb24jMjM0OQotbmFpY3MjMjM0OTMjSW5kdXN0cmlhbCBOb25idWlsZGluZyBTdHJ1Y3R1cmUgQ29uc3RydWN0aW9uIzIzNDkKLW5haWNzIzIzNDk5I0FsbCBPdGhlciBIZWF2eSBDb25zdHJ1Y3Rpb24jMjM0OQotbmFpY3MjMjM1I1NwZWNpYWwgVHJhZGUgQ29udHJhY3RvcnMjMjMKLW5haWNzIzIzNTEjUGx1bWJpbmcsIEhlYXRpbmcsIGFuZCBBaXItQ29uZGl0aW9uaW5nIENvbnRyYWN0b3JzIzIzNQotbmFpY3MjMjM1MTEjUGx1bWJpbmcsIEhlYXRpbmcsIGFuZCBBaXItQ29uZGl0aW9uaW5nIENvbnRyYWN0b3JzIzIzNTEKLW5haWNzIzIzNTIjUGFpbnRpbmcgYW5kIFdhbGwgQ292ZXJpbmcgQ29udHJhY3RvcnMjMjM1Ci1uYWljcyMyMzUyMSNQYWludGluZyBhbmQgV2FsbCBDb3ZlcmluZyBDb250cmFjdG9ycyMyMzUyCi1uYWljcyMyMzUzI0VsZWN0cmljYWwgQ29udHJhY3RvcnMjMjM1Ci1uYWljcyMyMzUzMSNFbGVjdHJpY2FsIENvbnRyYWN0b3JzIzIzNTMKLW5haWNzIzIzNTQjTWFzb25yeSwgRHJ5d2FsbCwgSW5zdWxhdGlvbiwgYW5kIFRpbGUgQ29udHJhY3RvcnMjMjM1Ci1uYWljcyMyMzU0MSNNYXNvbnJ5IGFuZCBTdG9uZSBDb250cmFjdG9ycyMyMzU0Ci1uYWljcyMyMzU0MiNEcnl3YWxsLCBQbGFzdGVyaW5nLCBBY291c3RpY2FsLCBhbmQgSW5zdWxhdGlvbiBDb250cmFjdG9ycyMyMzU0Ci1uYWljcyMyMzU0MyNUaWxlLCBNYXJibGUsIFRlcnJhenpvLCBhbmQgTW9zYWljIENvbnRyYWN0b3JzIzIzNTQKLW5haWNzIzIzNTUjQ2FycGVudHJ5IGFuZCBGbG9vciBDb250cmFjdG9ycyMyMzUKLW5haWNzIzIzNTUxI0NhcnBlbnRyeSBDb250cmFjdG9ycyMyMzU1Ci1uYWljcyMyMzU1MiNGbG9vciBMYXlpbmcgYW5kIE90aGVyIEZsb29yIENvbnRyYWN0b3JzIzIzNTUKLW5haWNzIzIzNTYjUm9vZmluZywgU2lkaW5nLCBhbmQgU2hlZXQgTWV0YWwgQ29udHJhY3RvcnMjMjM1Ci1uYWljcyMyMzU2MSNSb29maW5nLCBTaWRpbmcsIGFuZCBTaGVldCBNZXRhbCBDb250cmFjdG9ycyMyMzU2Ci1uYWljcyMyMzU3I0NvbmNyZXRlIENvbnRyYWN0b3JzIzIzNQotbmFpY3MjMjM1NzEjQ29uY3JldGUgQ29udHJhY3RvcnMjMjM1NwotbmFpY3MjMjM1OCNXYXRlciBXZWxsIERyaWxsaW5nIENvbnRyYWN0b3JzIzIzNQotbmFpY3MjMjM1ODEjV2F0ZXIgV2VsbCBEcmlsbGluZyBDb250cmFjdG9ycyMyMzU4Ci1uYWljcyMyMzU5I090aGVyIFNwZWNpYWwgVHJhZGUgQ29udHJhY3RvcnMjMjM1Ci1uYWljcyMyMzU5MSNTdHJ1Y3R1cmFsIFN0ZWVsIEVyZWN0aW9uIENvbnRyYWN0b3JzIzIzNTkKLW5haWNzIzIzNTkyI0dsYXNzIGFuZCBHbGF6aW5nIENvbnRyYWN0b3JzIzIzNTkKLW5haWNzIzIzNTkzI0V4Y2F2YXRpb24gQ29udHJhY3RvcnMjMjM1OQotbmFpY3MjMjM1OTQjV3JlY2tpbmcgYW5kIERlbW9saXRpb24gQ29udHJhY3RvcnMjMjM1OQotbmFpY3MjMjM1OTUjQnVpbGRpbmcgRXF1aXBtZW50IGFuZCBPdGhlciBNYWNoaW5lcnkgSW5zdGFsbGF0aW9uIENvbnRyYWN0b3JzIzIzNTkKLW5haWNzIzIzNTk5I0FsbCBPdGhlciBTcGVjaWFsIFRyYWRlIENvbnRyYWN0b3JzIzIzNTkKLW5haWNzIzMxI01hbnVmYWN0dXJpbmcjMzEKLW5haWNzIzMxMSNGb29kIE1hbnVmYWN0dXJpbmcjMzEKLW5haWNzIzMxMTEjQW5pbWFsIEZvb2QgTWFudWZhY3R1cmluZyMzMTEKLW5haWNzIzMxMTExI0FuaW1hbCBGb29kIE1hbnVmYWN0dXJpbmcjMzExMQotbmFpY3MjMzExMTExI0RvZyBhbmQgQ2F0IEZvb2QgTWFudWZhY3R1cmluZyMzMTExMQotbmFpY3MjMzExMTE5I090aGVyIEFuaW1hbCBGb29kIE1hbnVmYWN0dXJpbmcjMzExMTEKLW5haWNzIzMxMTIjR3JhaW4gYW5kIE9pbHNlZWQgTWlsbGluZyMzMTEKLW5haWNzIzMxMTIxI0Zsb3VyIE1pbGxpbmcgYW5kIE1hbHQgTWFudWZhY3R1cmluZyMzMTEyCi1uYWljcyMzMTEyMTEjRmxvdXIgTWlsbGluZyMzMTEyMQotbmFpY3MjMzExMjEyI1JpY2UgTWlsbGluZyMzMTEyMQotbmFpY3MjMzExMjEzI01hbHQgTWFudWZhY3R1cmluZyMzMTEyMQotbmFpY3MjMzExMjIjU3RhcmNoIGFuZCBWZWdldGFibGUgRmF0cyBhbmQgT2lscyBNYW51ZmFjdHVyaW5nIzMxMTIKLW5haWNzIzMxMTIyMSNXZXQgQ29ybiBNaWxsaW5nIzMxMTIyCi1uYWljcyMzMTEyMjIjU295YmVhbiBQcm9jZXNzaW5nIzMxMTIyCi1uYWljcyMzMTEyMjMjT3RoZXIgT2lsc2VlZCBQcm9jZXNzaW5nIzMxMTIyCi1uYWljcyMzMTEyMjUjRmF0cyBhbmQgT2lscyBSZWZpbmluZyBhbmQgQmxlbmRpbmcjMzExMjIKLW5haWNzIzMxMTIzI0JyZWFrZmFzdCBDZXJlYWwgTWFudWZhY3R1cmluZyMzMTEyCi1uYWljcyMzMTEzI1N1Z2FyIGFuZCBDb25mZWN0aW9uZXJ5IFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMTEKLW5haWNzIzMxMTMxI1N1Z2FyIE1hbnVmYWN0dXJpbmcjMzExMwotbmFpY3MjMzExMzExI1N1Z2FyY2FuZSBNaWxscyMzMTEzMQotbmFpY3MjMzExMzEyI0NhbmUgU3VnYXIgUmVmaW5pbmcjMzExMzEKLW5haWNzIzMxMTMxMyNCZWV0IFN1Z2FyIE1hbnVmYWN0dXJpbmcjMzExMzEKLW5haWNzIzMxMTMyI0Nob2NvbGF0ZSBhbmQgQ29uZmVjdGlvbmVyeSBNYW51ZmFjdHVyaW5nIGZyb20gQ2FjYW8gQmVhbnMjMzExMwotbmFpY3MjMzExMzMjQ29uZmVjdGlvbmVyeSBNYW51ZmFjdHVyaW5nIGZyb20gUHVyY2hhc2VkIENob2NvbGF0ZSMzMTEzCi1uYWljcyMzMTEzNCNOb25jaG9jb2xhdGUgQ29uZmVjdGlvbmVyeSBNYW51ZmFjdHVyaW5nIzMxMTMKLW5haWNzIzMxMTQjRnJ1aXQgYW5kIFZlZ2V0YWJsZSBQcmVzZXJ2aW5nIGFuZCBTcGVjaWFsdHkgRm9vZCBNYW51ZmFjdHVyaW5nIzMxMQotbmFpY3MjMzExNDEjRnJvemVuIEZvb2QgTWFudWZhY3R1cmluZyMzMTE0Ci1uYWljcyMzMTE0MTEjRnJvemVuIEZydWl0LCBKdWljZSwgYW5kIFZlZ2V0YWJsZSBNYW51ZmFjdHVyaW5nIzMxMTQxCi1uYWljcyMzMTE0MTIjRnJvemVuIFNwZWNpYWx0eSBGb29kIE1hbnVmYWN0dXJpbmcjMzExNDEKLW5haWNzIzMxMTQyI0ZydWl0IGFuZCBWZWdldGFibGUgQ2FubmluZywgUGlja2xpbmcsIGFuZCBEcnlpbmcjMzExNAotbmFpY3MjMzExNDIxI0ZydWl0IGFuZCBWZWdldGFibGUgQ2FubmluZyMzMTE0MgotbmFpY3MjMzExNDIyI1NwZWNpYWx0eSBDYW5uaW5nIzMxMTQyCi1uYWljcyMzMTE0MjMjRHJpZWQgYW5kIERlaHlkcmF0ZWQgRm9vZCBNYW51ZmFjdHVyaW5nIzMxMTQyCi1uYWljcyMzMTE1I0RhaXJ5IFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMTEKLW5haWNzIzMxMTUxI0RhaXJ5IFByb2R1Y3QgKGV4Y2VwdCBGcm96ZW4pIE1hbnVmYWN0dXJpbmcjMzExNQotbmFpY3MjMzExNTExI0ZsdWlkIE1pbGsgTWFudWZhY3R1cmluZyMzMTE1MQotbmFpY3MjMzExNTEyI0NyZWFtZXJ5IEJ1dHRlciBNYW51ZmFjdHVyaW5nIzMxMTUxCi1uYWljcyMzMTE1MTMjQ2hlZXNlIE1hbnVmYWN0dXJpbmcjMzExNTEKLW5haWNzIzMxMTUxNCNEcnksIENvbmRlbnNlZCwgYW5kIEV2YXBvcmF0ZWQgRGFpcnkgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMxMTUxCi1uYWljcyMzMTE1MiNJY2UgQ3JlYW0gYW5kIEZyb3plbiBEZXNzZXJ0IE1hbnVmYWN0dXJpbmcjMzExNQotbmFpY3MjMzExNiNBbmltYWwgU2xhdWdodGVyaW5nIGFuZCBQcm9jZXNzaW5nIzMxMQotbmFpY3MjMzExNjEjQW5pbWFsIFNsYXVnaHRlcmluZyBhbmQgUHJvY2Vzc2luZyMzMTE2Ci1uYWljcyMzMTE2MTEjQW5pbWFsIChleGNlcHQgUG91bHRyeSkgU2xhdWdodGVyaW5nIzMxMTYxCi1uYWljcyMzMTE2MTIjTWVhdCBQcm9jZXNzZWQgZnJvbSBDYXJjYXNzZXMjMzExNjEKLW5haWNzIzMxMTYxMyNSZW5kZXJpbmcgYW5kIE1lYXQgQnlwcm9kdWN0IFByb2Nlc3NpbmcjMzExNjEKLW5haWNzIzMxMTYxNSNQb3VsdHJ5IFByb2Nlc3NpbmcjMzExNjEKLW5haWNzIzMxMTcjU2VhZm9vZCBQcm9kdWN0IFByZXBhcmF0aW9uIGFuZCBQYWNrYWdpbmcjMzExCi1uYWljcyMzMTE3MSNTZWFmb29kIFByb2R1Y3QgUHJlcGFyYXRpb24gYW5kIFBhY2thZ2luZyMzMTE3Ci1uYWljcyMzMTE3MTEjU2VhZm9vZCBDYW5uaW5nIzMxMTcxCi1uYWljcyMzMTE3MTIjRnJlc2ggYW5kIEZyb3plbiBTZWFmb29kIFByb2Nlc3NpbmcjMzExNzEKLW5haWNzIzMxMTgjQmFrZXJpZXMgYW5kIFRvcnRpbGxhIE1hbnVmYWN0dXJpbmcjMzExCi1uYWljcyMzMTE4MSNCcmVhZCBhbmQgQmFrZXJ5IFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMTE4Ci1uYWljcyMzMTE4MTEjUmV0YWlsIEJha2VyaWVzIzMxMTgxCi1uYWljcyMzMTE4MTIjQ29tbWVyY2lhbCBCYWtlcmllcyMzMTE4MQotbmFpY3MjMzExODEzI0Zyb3plbiBDYWtlcywgUGllcywgYW5kIE90aGVyIFBhc3RyaWVzIE1hbnVmYWN0dXJpbmcjMzExODEKLW5haWNzIzMxMTgyI0Nvb2tpZSwgQ3JhY2tlciwgYW5kIFBhc3RhIE1hbnVmYWN0dXJpbmcjMzExOAotbmFpY3MjMzExODIxI0Nvb2tpZSBhbmQgQ3JhY2tlciBNYW51ZmFjdHVyaW5nIzMxMTgyCi1uYWljcyMzMTE4MjIjRmxvdXIgTWl4ZXMgYW5kIERvdWdoIE1hbnVmYWN0dXJpbmcgZnJvbSBQdXJjaGFzZWQgRmxvdXIjMzExODIKLW5haWNzIzMxMTgyMyNEcnkgUGFzdGEgTWFudWZhY3R1cmluZyMzMTE4MgotbmFpY3MjMzExODMjVG9ydGlsbGEgTWFudWZhY3R1cmluZyMzMTE4Ci1uYWljcyMzMTE5I090aGVyIEZvb2QgTWFudWZhY3R1cmluZyMzMTEKLW5haWNzIzMxMTkxI1NuYWNrIEZvb2QgTWFudWZhY3R1cmluZyMzMTE5Ci1uYWljcyMzMTE5MTEjUm9hc3RlZCBOdXRzIGFuZCBQZWFudXQgQnV0dGVyIE1hbnVmYWN0dXJpbmcjMzExOTEKLW5haWNzIzMxMTkxOSNPdGhlciBTbmFjayBGb29kIE1hbnVmYWN0dXJpbmcjMzExOTEKLW5haWNzIzMxMTkyI0NvZmZlZSBhbmQgVGVhIE1hbnVmYWN0dXJpbmcjMzExOQotbmFpY3MjMzExOTMjRmxhdm9yaW5nIFN5cnVwIGFuZCBDb25jZW50cmF0ZSBNYW51ZmFjdHVyaW5nIzMxMTkKLW5haWNzIzMxMTk0I1NlYXNvbmluZyBhbmQgRHJlc3NpbmcgTWFudWZhY3R1cmluZyMzMTE5Ci1uYWljcyMzMTE5NDEjTWF5b25uYWlzZSwgRHJlc3NpbmcsIGFuZCBPdGhlciBQcmVwYXJlZCBTYXVjZSBNYW51ZmFjdHVyaW5nIzMxMTk0Ci1uYWljcyMzMTE5NDIjU3BpY2UgYW5kIEV4dHJhY3QgTWFudWZhY3R1cmluZyMzMTE5NAotbmFpY3MjMzExOTkjQWxsIE90aGVyIEZvb2QgTWFudWZhY3R1cmluZyMzMTE5Ci1uYWljcyMzMTE5OTEjUGVyaXNoYWJsZSBQcmVwYXJlZCBGb29kIE1hbnVmYWN0dXJpbmcjMzExOTkKLW5haWNzIzMxMTk5OSNBbGwgT3RoZXIgTWlzY2VsbGFuZW91cyBGb29kIE1hbnVmYWN0dXJpbmcjMzExOTkKLW5haWNzIzMxMiNCZXZlcmFnZSBhbmQgVG9iYWNjbyBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzEKLW5haWNzIzMxMjEjQmV2ZXJhZ2UgTWFudWZhY3R1cmluZyMzMTIKLW5haWNzIzMxMjExI1NvZnQgRHJpbmsgYW5kIEljZSBNYW51ZmFjdHVyaW5nIzMxMjEKLW5haWNzIzMxMjExMSNTb2Z0IERyaW5rIE1hbnVmYWN0dXJpbmcjMzEyMTEKLW5haWNzIzMxMjExMiNCb3R0bGVkIFdhdGVyIE1hbnVmYWN0dXJpbmcjMzEyMTEKLW5haWNzIzMxMjExMyNJY2UgTWFudWZhY3R1cmluZyMzMTIxMQotbmFpY3MjMzEyMTIjQnJld2VyaWVzIzMxMjEKLW5haWNzIzMxMjEzI1dpbmVyaWVzIzMxMjEKLW5haWNzIzMxMjE0I0Rpc3RpbGxlcmllcyMzMTIxCi1uYWljcyMzMTIyI1RvYmFjY28gTWFudWZhY3R1cmluZyMzMTIKLW5haWNzIzMxMjIxI1RvYmFjY28gU3RlbW1pbmcgYW5kIFJlZHJ5aW5nIzMxMjIKLW5haWNzIzMxMjIyI1RvYmFjY28gUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMxMjIKLW5haWNzIzMxMjIyMSNDaWdhcmV0dGUgTWFudWZhY3R1cmluZyMzMTIyMgotbmFpY3MjMzEyMjI5I090aGVyIFRvYmFjY28gUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMxMjIyCi1uYWljcyMzMTMjVGV4dGlsZSBNaWxscyMzMQotbmFpY3MjMzEzMSNGaWJlciwgWWFybiwgYW5kIFRocmVhZCBNaWxscyMzMTMKLW5haWNzIzMxMzExI0ZpYmVyLCBZYXJuLCBhbmQgVGhyZWFkIE1pbGxzIzMxMzEKLW5haWNzIzMxMzExMSNZYXJuIFNwaW5uaW5nIE1pbGxzIzMxMzExCi1uYWljcyMzMTMxMTIjWWFybiBUZXh0dXJpemluZywgVGhyb3dpbmcsIGFuZCBUd2lzdGluZyBNaWxscyMzMTMxMQotbmFpY3MjMzEzMTEzI1RocmVhZCBNaWxscyMzMTMxMQotbmFpY3MjMzEzMiNGYWJyaWMgTWlsbHMjMzEzCi1uYWljcyMzMTMyMSNCcm9hZHdvdmVuIEZhYnJpYyBNaWxscyMzMTMyCi1uYWljcyMzMTMyMiNOYXJyb3cgRmFicmljIE1pbGxzIGFuZCBTY2hpZmZsaSBNYWNoaW5lIEVtYnJvaWRlcnkjMzEzMgotbmFpY3MjMzEzMjIxI05hcnJvdyBGYWJyaWMgTWlsbHMjMzEzMjIKLW5haWNzIzMxMzIyMiNTY2hpZmZsaSBNYWNoaW5lIEVtYnJvaWRlcnkjMzEzMjIKLW5haWNzIzMxMzIzI05vbndvdmVuIEZhYnJpYyBNaWxscyMzMTMyCi1uYWljcyMzMTMyNCNLbml0IEZhYnJpYyBNaWxscyMzMTMyCi1uYWljcyMzMTMyNDEjV2VmdCBLbml0IEZhYnJpYyBNaWxscyMzMTMyNAotbmFpY3MjMzEzMjQ5I090aGVyIEtuaXQgRmFicmljIGFuZCBMYWNlIE1pbGxzIzMxMzI0Ci1uYWljcyMzMTMzI1RleHRpbGUgYW5kIEZhYnJpYyBGaW5pc2hpbmcgYW5kIEZhYnJpYyBDb2F0aW5nIE1pbGxzIzMxMwotbmFpY3MjMzEzMzEjVGV4dGlsZSBhbmQgRmFicmljIEZpbmlzaGluZyBNaWxscyMzMTMzCi1uYWljcyMzMTMzMTEjQnJvYWR3b3ZlbiBGYWJyaWMgRmluaXNoaW5nIE1pbGxzIzMxMzMxCi1uYWljcyMzMTMzMTIjVGV4dGlsZSBhbmQgRmFicmljIEZpbmlzaGluZyAoZXhjZXB0IEJyb2Fkd292ZW4gRmFicmljKSBNaWxscyMzMTMzMQotbmFpY3MjMzEzMzIjRmFicmljIENvYXRpbmcgTWlsbHMjMzEzMwotbmFpY3MjMzE0I1RleHRpbGUgUHJvZHVjdCBNaWxscyMzMQotbmFpY3MjMzE0MSNUZXh0aWxlIEZ1cm5pc2hpbmdzIE1pbGxzIzMxNAotbmFpY3MjMzE0MTEjQ2FycGV0IGFuZCBSdWcgTWlsbHMjMzE0MQotbmFpY3MjMzE0MTIjQ3VydGFpbiBhbmQgTGluZW4gTWlsbHMjMzE0MQotbmFpY3MjMzE0MTIxI0N1cnRhaW4gYW5kIERyYXBlcnkgTWlsbHMjMzE0MTIKLW5haWNzIzMxNDEyOSNPdGhlciBIb3VzZWhvbGQgVGV4dGlsZSBQcm9kdWN0IE1pbGxzIzMxNDEyCi1uYWljcyMzMTQ5I090aGVyIFRleHRpbGUgUHJvZHVjdCBNaWxscyMzMTQKLW5haWNzIzMxNDkxI1RleHRpbGUgQmFnIGFuZCBDYW52YXMgTWlsbHMjMzE0OQotbmFpY3MjMzE0OTExI1RleHRpbGUgQmFnIE1pbGxzIzMxNDkxCi1uYWljcyMzMTQ5MTIjQ2FudmFzIGFuZCBSZWxhdGVkIFByb2R1Y3QgTWlsbHMjMzE0OTEKLW5haWNzIzMxNDk5I0FsbCBPdGhlciBUZXh0aWxlIFByb2R1Y3QgTWlsbHMjMzE0OQotbmFpY3MjMzE0OTkxI1JvcGUsIENvcmRhZ2UsIGFuZCBUd2luZSBNaWxscyMzMTQ5OQotbmFpY3MjMzE0OTkyI1RpcmUgQ29yZCBhbmQgVGlyZSBGYWJyaWMgTWlsbHMjMzE0OTkKLW5haWNzIzMxNDk5OSNBbGwgT3RoZXIgTWlzY2VsbGFuZW91cyBUZXh0aWxlIFByb2R1Y3QgTWlsbHMjMzE0OTkKLW5haWNzIzMxNSNBcHBhcmVsIE1hbnVmYWN0dXJpbmcjMzEKLW5haWNzIzMxNTEjQXBwYXJlbCBLbml0dGluZyBNaWxscyMzMTUKLW5haWNzIzMxNTExI0hvc2llcnkgYW5kIFNvY2sgTWlsbHMjMzE1MQotbmFpY3MjMzE1MTExI1NoZWVyIEhvc2llcnkgTWlsbHMjMzE1MTEKLW5haWNzIzMxNTExOSNPdGhlciBIb3NpZXJ5IGFuZCBTb2NrIE1pbGxzIzMxNTExCi1uYWljcyMzMTUxOSNPdGhlciBBcHBhcmVsIEtuaXR0aW5nIE1pbGxzIzMxNTEKLW5haWNzIzMxNTE5MSNPdXRlcndlYXIgS25pdHRpbmcgTWlsbHMjMzE1MTkKLW5haWNzIzMxNTE5MiNVbmRlcndlYXIgYW5kIE5pZ2h0d2VhciBLbml0dGluZyBNaWxscyMzMTUxOQotbmFpY3MjMzE1MiNDdXQgYW5kIFNldyBBcHBhcmVsIE1hbnVmYWN0dXJpbmcjMzE1Ci1uYWljcyMzMTUyMSNDdXQgYW5kIFNldyBBcHBhcmVsIENvbnRyYWN0b3JzIzMxNTIKLW5haWNzIzMxNTIxMSNNZW4ncyBhbmQgQm95cycgQ3V0IGFuZCBTZXcgQXBwYXJlbCBDb250cmFjdG9ycyMzMTUyMQotbmFpY3MjMzE1MjEyI1dvbWVuJ3MsIEdpcmxzJywgYW5kIEluZmFudHMnIEN1dCBhbmQgU2V3IEFwcGFyZWwgQ29udHJhY3RvcnMjMzE1MjEKLW5haWNzIzMxNTIyI01lbidzIGFuZCBCb3lzJyBDdXQgYW5kIFNldyBBcHBhcmVsIE1hbnVmYWN0dXJpbmcjMzE1MgotbmFpY3MjMzE1MjIxI01lbidzIGFuZCBCb3lzJyBDdXQgYW5kIFNldyBVbmRlcndlYXIgYW5kIE5pZ2h0d2VhciBNYW51ZmFjdHVyaW5nIzMxNTIyCi1uYWljcyMzMTUyMjIjTWVuJ3MgYW5kIEJveXMnIEN1dCBhbmQgU2V3IFN1aXQsIENvYXQsIGFuZCBPdmVyY29hdCBNYW51ZmFjdHVyaW5nIzMxNTIyCi1uYWljcyMzMTUyMjMjTWVuJ3MgYW5kIEJveXMnIEN1dCBhbmQgU2V3IFNoaXJ0IChleGNlcHQgV29yayBTaGlydCkgTWFudWZhY3R1cmluZyMzMTUyMgotbmFpY3MjMzE1MjI0I01lbidzIGFuZCBCb3lzJyBDdXQgYW5kIFNldyBUcm91c2VyLCBTbGFjaywgYW5kIEplYW4gTWFudWZhY3R1cmluZyMzMTUyMgotbmFpY3MjMzE1MjI1I01lbidzIGFuZCBCb3lzJyBDdXQgYW5kIFNldyBXb3JrIENsb3RoaW5nIE1hbnVmYWN0dXJpbmcjMzE1MjIKLW5haWNzIzMxNTIyOCNNZW4ncyBhbmQgQm95cycgQ3V0IGFuZCBTZXcgT3RoZXIgT3V0ZXJ3ZWFyIE1hbnVmYWN0dXJpbmcjMzE1MjIKLW5haWNzIzMxNTIzI1dvbWVuJ3MgYW5kIEdpcmxzJyBDdXQgYW5kIFNldyBBcHBhcmVsIE1hbnVmYWN0dXJpbmcjMzE1MgotbmFpY3MjMzE1MjMxI1dvbWVuJ3MgYW5kIEdpcmxzJyBDdXQgYW5kIFNldyBMaW5nZXJpZSwgTG91bmdld2VhciwgYW5kIE5pZ2h0d2VhciBNYW51ZmFjdHVyaW5nIzMxNTIzCi1uYWljcyMzMTUyMzIjV29tZW4ncyBhbmQgR2lybHMnIEN1dCBhbmQgU2V3IEJsb3VzZSBhbmQgU2hpcnQgTWFudWZhY3R1cmluZyMzMTUyMwotbmFpY3MjMzE1MjMzI1dvbWVuJ3MgYW5kIEdpcmxzJyBDdXQgYW5kIFNldyBEcmVzcyBNYW51ZmFjdHVyaW5nIzMxNTIzCi1uYWljcyMzMTUyMzQjV29tZW4ncyBhbmQgR2lybHMnIEN1dCBhbmQgU2V3IFN1aXQsIENvYXQsIFRhaWxvcmVkIEphY2tldCwgYW5kIFNraXJ0IE1hbnVmYWN0dXJpbmcjMzE1MjMKLW5haWNzIzMxNTIzOSNXb21lbidzIGFuZCBHaXJscycgQ3V0IGFuZCBTZXcgT3RoZXIgT3V0ZXJ3ZWFyIE1hbnVmYWN0dXJpbmcjMzE1MjMKLW5haWNzIzMxNTI5I090aGVyIEN1dCBhbmQgU2V3IEFwcGFyZWwgTWFudWZhY3R1cmluZyMzMTUyCi1uYWljcyMzMTUyOTEjSW5mYW50cycgQ3V0IGFuZCBTZXcgQXBwYXJlbCBNYW51ZmFjdHVyaW5nIzMxNTI5Ci1uYWljcyMzMTUyOTIjRnVyIGFuZCBMZWF0aGVyIEFwcGFyZWwgTWFudWZhY3R1cmluZyMzMTUyOQotbmFpY3MjMzE1Mjk5I0FsbCBPdGhlciBDdXQgYW5kIFNldyBBcHBhcmVsIE1hbnVmYWN0dXJpbmcjMzE1MjkKLW5haWNzIzMxNTkjQXBwYXJlbCBBY2Nlc3NvcmllcyBhbmQgT3RoZXIgQXBwYXJlbCBNYW51ZmFjdHVyaW5nIzMxNQotbmFpY3MjMzE1OTkjQXBwYXJlbCBBY2Nlc3NvcmllcyBhbmQgT3RoZXIgQXBwYXJlbCBNYW51ZmFjdHVyaW5nIzMxNTkKLW5haWNzIzMxNTk5MSNIYXQsIENhcCwgYW5kIE1pbGxpbmVyeSBNYW51ZmFjdHVyaW5nIzMxNTk5Ci1uYWljcyMzMTU5OTIjR2xvdmUgYW5kIE1pdHRlbiBNYW51ZmFjdHVyaW5nIzMxNTk5Ci1uYWljcyMzMTU5OTMjTWVuJ3MgYW5kIEJveXMnIE5lY2t3ZWFyIE1hbnVmYWN0dXJpbmcjMzE1OTkKLW5haWNzIzMxNTk5OSNPdGhlciBBcHBhcmVsIEFjY2Vzc29yaWVzIGFuZCBPdGhlciBBcHBhcmVsIE1hbnVmYWN0dXJpbmcjMzE1OTkKLW5haWNzIzMxNiNMZWF0aGVyIGFuZCBBbGxpZWQgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMxCi1uYWljcyMzMTYxI0xlYXRoZXIgYW5kIEhpZGUgVGFubmluZyBhbmQgRmluaXNoaW5nIzMxNgotbmFpY3MjMzE2MTEjTGVhdGhlciBhbmQgSGlkZSBUYW5uaW5nIGFuZCBGaW5pc2hpbmcjMzE2MQotbmFpY3MjMzE2MiNGb290d2VhciBNYW51ZmFjdHVyaW5nIzMxNgotbmFpY3MjMzE2MjEjRm9vdHdlYXIgTWFudWZhY3R1cmluZyMzMTYyCi1uYWljcyMzMTYyMTEjUnViYmVyIGFuZCBQbGFzdGljcyBGb290d2VhciBNYW51ZmFjdHVyaW5nIzMxNjIxCi1uYWljcyMzMTYyMTIjSG91c2UgU2xpcHBlciBNYW51ZmFjdHVyaW5nIzMxNjIxCi1uYWljcyMzMTYyMTMjTWVuJ3MgRm9vdHdlYXIgKGV4Y2VwdCBBdGhsZXRpYykgTWFudWZhY3R1cmluZyMzMTYyMQotbmFpY3MjMzE2MjE0I1dvbWVuJ3MgRm9vdHdlYXIgKGV4Y2VwdCBBdGhsZXRpYykgTWFudWZhY3R1cmluZyMzMTYyMQotbmFpY3MjMzE2MjE5I090aGVyIEZvb3R3ZWFyIE1hbnVmYWN0dXJpbmcjMzE2MjEKLW5haWNzIzMxNjkjT3RoZXIgTGVhdGhlciBhbmQgQWxsaWVkIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMTYKLW5haWNzIzMxNjk5I090aGVyIExlYXRoZXIgYW5kIEFsbGllZCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzE2OQotbmFpY3MjMzE2OTkxI0x1Z2dhZ2UgTWFudWZhY3R1cmluZyMzMTY5OQotbmFpY3MjMzE2OTkyI1dvbWVuJ3MgSGFuZGJhZyBhbmQgUHVyc2UgTWFudWZhY3R1cmluZyMzMTY5OQotbmFpY3MjMzE2OTkzI1BlcnNvbmFsIExlYXRoZXIgR29vZCAoZXhjZXB0IFdvbWVuJ3MgSGFuZGJhZyBhbmQgUHVyc2UpIE1hbnVmYWN0dXJpbmcjMzE2OTkKLW5haWNzIzMxNjk5OSNBbGwgT3RoZXIgTGVhdGhlciBHb29kIE1hbnVmYWN0dXJpbmcjMzE2OTkKLW5haWNzIzMyI01hbnVmYWN0dXJpbmcjMzIKLW5haWNzIzMyMSNXb29kIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMgotbmFpY3MjMzIxMSNTYXdtaWxscyBhbmQgV29vZCBQcmVzZXJ2YXRpb24jMzIxCi1uYWljcyMzMjExMSNTYXdtaWxscyBhbmQgV29vZCBQcmVzZXJ2YXRpb24jMzIxMQotbmFpY3MjMzIxMTEzI1Nhd21pbGxzIzMyMTExCi1uYWljcyMzMjExMTQjV29vZCBQcmVzZXJ2YXRpb24jMzIxMTEKLW5haWNzIzMyMTIjVmVuZWVyLCBQbHl3b29kLCBhbmQgRW5naW5lZXJlZCBXb29kIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjEKLW5haWNzIzMyMTIxI1ZlbmVlciwgUGx5d29vZCwgYW5kIEVuZ2luZWVyZWQgV29vZCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzIxMgotbmFpY3MjMzIxMjExI0hhcmR3b29kIFZlbmVlciBhbmQgUGx5d29vZCBNYW51ZmFjdHVyaW5nIzMyMTIxCi1uYWljcyMzMjEyMTIjU29mdHdvb2QgVmVuZWVyIGFuZCBQbHl3b29kIE1hbnVmYWN0dXJpbmcjMzIxMjEKLW5haWNzIzMyMTIxMyNFbmdpbmVlcmVkIFdvb2QgTWVtYmVyIChleGNlcHQgVHJ1c3MpIE1hbnVmYWN0dXJpbmcjMzIxMjEKLW5haWNzIzMyMTIxNCNUcnVzcyBNYW51ZmFjdHVyaW5nIzMyMTIxCi1uYWljcyMzMjEyMTkjUmVjb25zdGl0dXRlZCBXb29kIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjEyMQotbmFpY3MjMzIxOSNPdGhlciBXb29kIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjEKLW5haWNzIzMyMTkxI01pbGx3b3JrIzMyMTkKLW5haWNzIzMyMTkxMSNXb29kIFdpbmRvdyBhbmQgRG9vciBNYW51ZmFjdHVyaW5nIzMyMTkxCi1uYWljcyMzMjE5MTIjQ3V0IFN0b2NrLCBSZXNhd2luZyBMdW1iZXIsIGFuZCBQbGFuaW5nIzMyMTkxCi1uYWljcyMzMjE5MTgjT3RoZXIgTWlsbHdvcmsgKGluY2x1ZGluZyBGbG9vcmluZykjMzIxOTEKLW5haWNzIzMyMTkyI1dvb2QgQ29udGFpbmVyIGFuZCBQYWxsZXQgTWFudWZhY3R1cmluZyMzMjE5Ci1uYWljcyMzMjE5OSNBbGwgT3RoZXIgV29vZCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzIxOQotbmFpY3MjMzIxOTkxI01hbnVmYWN0dXJlZCBIb21lIChNb2JpbGUgSG9tZSkgTWFudWZhY3R1cmluZyMzMjE5OQotbmFpY3MjMzIxOTkyI1ByZWZhYnJpY2F0ZWQgV29vZCBCdWlsZGluZyBNYW51ZmFjdHVyaW5nIzMyMTk5Ci1uYWljcyMzMjE5OTkjQWxsIE90aGVyIE1pc2NlbGxhbmVvdXMgV29vZCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzIxOTkKLW5haWNzIzMyMiNQYXBlciBNYW51ZmFjdHVyaW5nIzMyCi1uYWljcyMzMjIxI1B1bHAsIFBhcGVyLCBhbmQgUGFwZXJib2FyZCBNaWxscyMzMjIKLW5haWNzIzMyMjExI1B1bHAgTWlsbHMjMzIyMQotbmFpY3MjMzIyMTIjUGFwZXIgTWlsbHMjMzIyMQotbmFpY3MjMzIyMTIxI1BhcGVyIChleGNlcHQgTmV3c3ByaW50KSBNaWxscyMzMjIxMgotbmFpY3MjMzIyMTIyI05ld3NwcmludCBNaWxscyMzMjIxMgotbmFpY3MjMzIyMTMjUGFwZXJib2FyZCBNaWxscyMzMjIxCi1uYWljcyMzMjIyI0NvbnZlcnRlZCBQYXBlciBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzIyCi1uYWljcyMzMjIyMSNQYXBlcmJvYXJkIENvbnRhaW5lciBNYW51ZmFjdHVyaW5nIzMyMjIKLW5haWNzIzMyMjIxMSNDb3JydWdhdGVkIGFuZCBTb2xpZCBGaWJlciBCb3ggTWFudWZhY3R1cmluZyMzMjIyMQotbmFpY3MjMzIyMjEyI0ZvbGRpbmcgUGFwZXJib2FyZCBCb3ggTWFudWZhY3R1cmluZyMzMjIyMQotbmFpY3MjMzIyMjEzI1NldHVwIFBhcGVyYm9hcmQgQm94IE1hbnVmYWN0dXJpbmcjMzIyMjEKLW5haWNzIzMyMjIxNCNGaWJlciBDYW4sIFR1YmUsIERydW0sIGFuZCBTaW1pbGFyIFByb2R1Y3RzIE1hbnVmYWN0dXJpbmcjMzIyMjEKLW5haWNzIzMyMjIxNSNOb25mb2xkaW5nIFNhbml0YXJ5IEZvb2QgQ29udGFpbmVyIE1hbnVmYWN0dXJpbmcjMzIyMjEKLW5haWNzIzMyMjIyI1BhcGVyIEJhZyBhbmQgQ29hdGVkIGFuZCBUcmVhdGVkIFBhcGVyIE1hbnVmYWN0dXJpbmcjMzIyMgotbmFpY3MjMzIyMjIxI0NvYXRlZCBhbmQgTGFtaW5hdGVkIFBhY2thZ2luZyBQYXBlciBhbmQgUGxhc3RpY3MgRmlsbSBNYW51ZmFjdHVyaW5nIzMyMjIyCi1uYWljcyMzMjIyMjIjQ29hdGVkIGFuZCBMYW1pbmF0ZWQgUGFwZXIgTWFudWZhY3R1cmluZyMzMjIyMgotbmFpY3MjMzIyMjIzI1BsYXN0aWNzLCBGb2lsLCBhbmQgQ29hdGVkIFBhcGVyIEJhZyBNYW51ZmFjdHVyaW5nIzMyMjIyCi1uYWljcyMzMjIyMjQjVW5jb2F0ZWQgUGFwZXIgYW5kIE11bHRpd2FsbCBCYWcgTWFudWZhY3R1cmluZyMzMjIyMgotbmFpY3MjMzIyMjI1I0xhbWluYXRlZCBBbHVtaW51bSBGb2lsIE1hbnVmYWN0dXJpbmcgZm9yIEZsZXhpYmxlIFBhY2thZ2luZyBVc2VzIzMyMjIyCi1uYWljcyMzMjIyMjYjU3VyZmFjZS1Db2F0ZWQgUGFwZXJib2FyZCBNYW51ZmFjdHVyaW5nIzMyMjIyCi1uYWljcyMzMjIyMyNTdGF0aW9uZXJ5IFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjIyCi1uYWljcyMzMjIyMzEjRGllLUN1dCBQYXBlciBhbmQgUGFwZXJib2FyZCBPZmZpY2UgU3VwcGxpZXMgTWFudWZhY3R1cmluZyMzMjIyMwotbmFpY3MjMzIyMjMyI0VudmVsb3BlIE1hbnVmYWN0dXJpbmcjMzIyMjMKLW5haWNzIzMyMjIzMyNTdGF0aW9uZXJ5LCBUYWJsZXQsIGFuZCBSZWxhdGVkIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjIyMwotbmFpY3MjMzIyMjkjT3RoZXIgQ29udmVydGVkIFBhcGVyIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjIyCi1uYWljcyMzMjIyOTEjU2FuaXRhcnkgUGFwZXIgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyMjI5Ci1uYWljcyMzMjIyOTkjQWxsIE90aGVyIENvbnZlcnRlZCBQYXBlciBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzIyMjkKLW5haWNzIzMyMyNQcmludGluZyBhbmQgUmVsYXRlZCBTdXBwb3J0IEFjdGl2aXRpZXMjMzIKLW5haWNzIzMyMzEjUHJpbnRpbmcgYW5kIFJlbGF0ZWQgU3VwcG9ydCBBY3Rpdml0aWVzIzMyMwotbmFpY3MjMzIzMTEjUHJpbnRpbmcjMzIzMQotbmFpY3MjMzIzMTEwI0NvbW1lcmNpYWwgTGl0aG9ncmFwaGljIFByaW50aW5nIzMyMzExCi1uYWljcyMzMjMxMTEjQ29tbWVyY2lhbCBHcmF2dXJlIFByaW50aW5nIzMyMzExCi1uYWljcyMzMjMxMTIjQ29tbWVyY2lhbCBGbGV4b2dyYXBoaWMgUHJpbnRpbmcjMzIzMTEKLW5haWNzIzMyMzExMyNDb21tZXJjaWFsIFNjcmVlbiBQcmludGluZyMzMjMxMQotbmFpY3MjMzIzMTE0I1F1aWNrIFByaW50aW5nIzMyMzExCi1uYWljcyMzMjMxMTUjRGlnaXRhbCBQcmludGluZyMzMjMxMQotbmFpY3MjMzIzMTE2I01hbmlmb2xkIEJ1c2luZXNzIEZvcm1zIFByaW50aW5nIzMyMzExCi1uYWljcyMzMjMxMTcjQm9va3MgUHJpbnRpbmcjMzIzMTEKLW5haWNzIzMyMzExOCNCbGFua2Jvb2ssIExvb3NlbGVhZiBCaW5kZXJzLCBhbmQgRGV2aWNlcyBNYW51ZmFjdHVyaW5nIzMyMzExCi1uYWljcyMzMjMxMTkjT3RoZXIgQ29tbWVyY2lhbCBQcmludGluZyMzMjMxMQotbmFpY3MjMzIzMTIjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBQcmludGluZyMzMjMxCi1uYWljcyMzMjMxMjEjVHJhZGViaW5kaW5nIGFuZCBSZWxhdGVkIFdvcmsjMzIzMTIKLW5haWNzIzMyMzEyMiNQcmVwcmVzcyBTZXJ2aWNlcyMzMjMxMgotbmFpY3MjMzI0I1BldHJvbGV1bSBhbmQgQ29hbCBQcm9kdWN0cyBNYW51ZmFjdHVyaW5nIzMyCi1uYWljcyMzMjQxI1BldHJvbGV1bSBhbmQgQ29hbCBQcm9kdWN0cyBNYW51ZmFjdHVyaW5nIzMyNAotbmFpY3MjMzI0MTEjUGV0cm9sZXVtIFJlZmluZXJpZXMjMzI0MQotbmFpY3MjMzI0MTIjQXNwaGFsdCBQYXZpbmcsIFJvb2ZpbmcsIGFuZCBTYXR1cmF0ZWQgTWF0ZXJpYWxzIE1hbnVmYWN0dXJpbmcjMzI0MQotbmFpY3MjMzI0MTIxI0FzcGhhbHQgUGF2aW5nIE1peHR1cmUgYW5kIEJsb2NrIE1hbnVmYWN0dXJpbmcjMzI0MTIKLW5haWNzIzMyNDEyMiNBc3BoYWx0IFNoaW5nbGUgYW5kIENvYXRpbmcgTWF0ZXJpYWxzIE1hbnVmYWN0dXJpbmcjMzI0MTIKLW5haWNzIzMyNDE5I090aGVyIFBldHJvbGV1bSBhbmQgQ29hbCBQcm9kdWN0cyBNYW51ZmFjdHVyaW5nIzMyNDEKLW5haWNzIzMyNDE5MSNQZXRyb2xldW0gTHVicmljYXRpbmcgT2lsIGFuZCBHcmVhc2UgTWFudWZhY3R1cmluZyMzMjQxOQotbmFpY3MjMzI0MTk5I0FsbCBPdGhlciBQZXRyb2xldW0gYW5kIENvYWwgUHJvZHVjdHMgTWFudWZhY3R1cmluZyMzMjQxOQotbmFpY3MjMzI1I0NoZW1pY2FsIE1hbnVmYWN0dXJpbmcjMzIKLW5haWNzIzMyNTEjQmFzaWMgQ2hlbWljYWwgTWFudWZhY3R1cmluZyMzMjUKLW5haWNzIzMyNTExI1BldHJvY2hlbWljYWwgTWFudWZhY3R1cmluZyMzMjUxCi1uYWljcyMzMjUxMiNJbmR1c3RyaWFsIEdhcyBNYW51ZmFjdHVyaW5nIzMyNTEKLW5haWNzIzMyNTEzI1N5bnRoZXRpYyBEeWUgYW5kIFBpZ21lbnQgTWFudWZhY3R1cmluZyMzMjUxCi1uYWljcyMzMjUxMzEjSW5vcmdhbmljIER5ZSBhbmQgUGlnbWVudCBNYW51ZmFjdHVyaW5nIzMyNTEzCi1uYWljcyMzMjUxMzIjU3ludGhldGljIE9yZ2FuaWMgRHllIGFuZCBQaWdtZW50IE1hbnVmYWN0dXJpbmcjMzI1MTMKLW5haWNzIzMyNTE4I090aGVyIEJhc2ljIElub3JnYW5pYyBDaGVtaWNhbCBNYW51ZmFjdHVyaW5nIzMyNTEKLW5haWNzIzMyNTE4MSNBbGthbGllcyBhbmQgQ2hsb3JpbmUgTWFudWZhY3R1cmluZyMzMjUxOAotbmFpY3MjMzI1MTgyI0NhcmJvbiBCbGFjayBNYW51ZmFjdHVyaW5nIzMyNTE4Ci1uYWljcyMzMjUxODgjQWxsIE90aGVyIEJhc2ljIElub3JnYW5pYyBDaGVtaWNhbCBNYW51ZmFjdHVyaW5nIzMyNTE4Ci1uYWljcyMzMjUxOSNPdGhlciBCYXNpYyBPcmdhbmljIENoZW1pY2FsIE1hbnVmYWN0dXJpbmcjMzI1MQotbmFpY3MjMzI1MTkxI0d1bSBhbmQgV29vZCBDaGVtaWNhbCBNYW51ZmFjdHVyaW5nIzMyNTE5Ci1uYWljcyMzMjUxOTIjQ3ljbGljIENydWRlIGFuZCBJbnRlcm1lZGlhdGUgTWFudWZhY3R1cmluZyMzMjUxOQotbmFpY3MjMzI1MTkzI0V0aHlsIEFsY29ob2wgTWFudWZhY3R1cmluZyMzMjUxOQotbmFpY3MjMzI1MTk5I0FsbCBPdGhlciBCYXNpYyBPcmdhbmljIENoZW1pY2FsIE1hbnVmYWN0dXJpbmcjMzI1MTkKLW5haWNzIzMyNTIjUmVzaW4sIFN5bnRoZXRpYyBSdWJiZXIsIGFuZCBBcnRpZmljaWFsIGFuZCBTeW50aGV0aWMgRmliZXJzIGFuZCBGaWxhbWVudHMgTWFudWZhY3R1cmluZyMzMjUKLW5haWNzIzMyNTIxI1Jlc2luIGFuZCBTeW50aGV0aWMgUnViYmVyIE1hbnVmYWN0dXJpbmcjMzI1MgotbmFpY3MjMzI1MjExI1BsYXN0aWNzIE1hdGVyaWFsIGFuZCBSZXNpbiBNYW51ZmFjdHVyaW5nIzMyNTIxCi1uYWljcyMzMjUyMTIjU3ludGhldGljIFJ1YmJlciBNYW51ZmFjdHVyaW5nIzMyNTIxCi1uYWljcyMzMjUyMiNBcnRpZmljaWFsIGFuZCBTeW50aGV0aWMgRmliZXJzIGFuZCBGaWxhbWVudHMgTWFudWZhY3R1cmluZyMzMjUyCi1uYWljcyMzMjUyMjEjQ2VsbHVsb3NpYyBPcmdhbmljIEZpYmVyIE1hbnVmYWN0dXJpbmcjMzI1MjIKLW5haWNzIzMyNTIyMiNOb25jZWxsdWxvc2ljIE9yZ2FuaWMgRmliZXIgTWFudWZhY3R1cmluZyMzMjUyMgotbmFpY3MjMzI1MyNQZXN0aWNpZGUsIEZlcnRpbGl6ZXIsIGFuZCBPdGhlciBBZ3JpY3VsdHVyYWwgQ2hlbWljYWwgTWFudWZhY3R1cmluZyMzMjUKLW5haWNzIzMyNTMxI0ZlcnRpbGl6ZXIgTWFudWZhY3R1cmluZyMzMjUzCi1uYWljcyMzMjUzMTEjTml0cm9nZW5vdXMgRmVydGlsaXplciBNYW51ZmFjdHVyaW5nIzMyNTMxCi1uYWljcyMzMjUzMTIjUGhvc3BoYXRpYyBGZXJ0aWxpemVyIE1hbnVmYWN0dXJpbmcjMzI1MzEKLW5haWNzIzMyNTMxNCNGZXJ0aWxpemVyIChNaXhpbmcgT25seSkgTWFudWZhY3R1cmluZyMzMjUzMQotbmFpY3MjMzI1MzIjUGVzdGljaWRlIGFuZCBPdGhlciBBZ3JpY3VsdHVyYWwgQ2hlbWljYWwgTWFudWZhY3R1cmluZyMzMjUzCi1uYWljcyMzMjU0I1BoYXJtYWNldXRpY2FsIGFuZCBNZWRpY2luZSBNYW51ZmFjdHVyaW5nIzMyNQotbmFpY3MjMzI1NDEjUGhhcm1hY2V1dGljYWwgYW5kIE1lZGljaW5lIE1hbnVmYWN0dXJpbmcjMzI1NAotbmFpY3MjMzI1NDExI01lZGljaW5hbCBhbmQgQm90YW5pY2FsIE1hbnVmYWN0dXJpbmcjMzI1NDEKLW5haWNzIzMyNTQxMiNQaGFybWFjZXV0aWNhbCBQcmVwYXJhdGlvbiBNYW51ZmFjdHVyaW5nIzMyNTQxCi1uYWljcyMzMjU0MTMjSW4tVml0cm8gRGlhZ25vc3RpYyBTdWJzdGFuY2UgTWFudWZhY3R1cmluZyMzMjU0MQotbmFpY3MjMzI1NDE0I0Jpb2xvZ2ljYWwgUHJvZHVjdCAoZXhjZXB0IERpYWdub3N0aWMpIE1hbnVmYWN0dXJpbmcjMzI1NDEKLW5haWNzIzMyNTUjUGFpbnQsIENvYXRpbmcsIGFuZCBBZGhlc2l2ZSBNYW51ZmFjdHVyaW5nIzMyNQotbmFpY3MjMzI1NTEjUGFpbnQgYW5kIENvYXRpbmcgTWFudWZhY3R1cmluZyMzMjU1Ci1uYWljcyMzMjU1MiNBZGhlc2l2ZSBNYW51ZmFjdHVyaW5nIzMyNTUKLW5haWNzIzMyNTYjU29hcCwgQ2xlYW5pbmcgQ29tcG91bmQsIGFuZCBUb2lsZXQgUHJlcGFyYXRpb24gTWFudWZhY3R1cmluZyMzMjUKLW5haWNzIzMyNTYxI1NvYXAgYW5kIENsZWFuaW5nIENvbXBvdW5kIE1hbnVmYWN0dXJpbmcjMzI1NgotbmFpY3MjMzI1NjExI1NvYXAgYW5kIE90aGVyIERldGVyZ2VudCBNYW51ZmFjdHVyaW5nIzMyNTYxCi1uYWljcyMzMjU2MTIjUG9saXNoIGFuZCBPdGhlciBTYW5pdGF0aW9uIEdvb2QgTWFudWZhY3R1cmluZyMzMjU2MQotbmFpY3MjMzI1NjEzI1N1cmZhY2UgQWN0aXZlIEFnZW50IE1hbnVmYWN0dXJpbmcjMzI1NjEKLW5haWNzIzMyNTYyI1RvaWxldCBQcmVwYXJhdGlvbiBNYW51ZmFjdHVyaW5nIzMyNTYKLW5haWNzIzMyNTkjT3RoZXIgQ2hlbWljYWwgUHJvZHVjdCBhbmQgUHJlcGFyYXRpb24gTWFudWZhY3R1cmluZyMzMjUKLW5haWNzIzMyNTkxI1ByaW50aW5nIEluayBNYW51ZmFjdHVyaW5nIzMyNTkKLW5haWNzIzMyNTkyI0V4cGxvc2l2ZXMgTWFudWZhY3R1cmluZyMzMjU5Ci1uYWljcyMzMjU5OSNBbGwgT3RoZXIgQ2hlbWljYWwgUHJvZHVjdCBhbmQgUHJlcGFyYXRpb24gTWFudWZhY3R1cmluZyMzMjU5Ci1uYWljcyMzMjU5OTEjQ3VzdG9tIENvbXBvdW5kaW5nIG9mIFB1cmNoYXNlZCBSZXNpbnMjMzI1OTkKLW5haWNzIzMyNTk5MiNQaG90b2dyYXBoaWMgRmlsbSwgUGFwZXIsIFBsYXRlLCBhbmQgQ2hlbWljYWwgTWFudWZhY3R1cmluZyMzMjU5OQotbmFpY3MjMzI1OTk4I0FsbCBPdGhlciBNaXNjZWxsYW5lb3VzIENoZW1pY2FsIFByb2R1Y3QgYW5kIFByZXBhcmF0aW9uIE1hbnVmYWN0dXJpbmcjMzI1OTkKLW5haWNzIzMyNiNQbGFzdGljcyBhbmQgUnViYmVyIFByb2R1Y3RzIE1hbnVmYWN0dXJpbmcjMzIKLW5haWNzIzMyNjEjUGxhc3RpY3MgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNgotbmFpY3MjMzI2MTEjVW5zdXBwb3J0ZWQgUGxhc3RpY3MgRmlsbSwgU2hlZXQsIGFuZCBCYWcgTWFudWZhY3R1cmluZyMzMjYxCi1uYWljcyMzMjYxMTEjVW5zdXBwb3J0ZWQgUGxhc3RpY3MgQmFnIE1hbnVmYWN0dXJpbmcjMzI2MTEKLW5haWNzIzMyNjExMiNVbnN1cHBvcnRlZCBQbGFzdGljcyBQYWNrYWdpbmcgRmlsbSBhbmQgU2hlZXQgTWFudWZhY3R1cmluZyMzMjYxMQotbmFpY3MjMzI2MTEzI1Vuc3VwcG9ydGVkIFBsYXN0aWNzIEZpbG0gYW5kIFNoZWV0IChleGNlcHQgUGFja2FnaW5nKSBNYW51ZmFjdHVyaW5nIzMyNjExCi1uYWljcyMzMjYxMiNQbGFzdGljcyBQaXBlLCBQaXBlIEZpdHRpbmcsIGFuZCBVbnN1cHBvcnRlZCBQcm9maWxlIFNoYXBlIE1hbnVmYWN0dXJpbmcjMzI2MQotbmFpY3MjMzI2MTIxI1Vuc3VwcG9ydGVkIFBsYXN0aWNzIFByb2ZpbGUgU2hhcGUgTWFudWZhY3R1cmluZyMzMjYxMgotbmFpY3MjMzI2MTIyI1BsYXN0aWNzIFBpcGUgYW5kIFBpcGUgRml0dGluZyBNYW51ZmFjdHVyaW5nIzMyNjEyCi1uYWljcyMzMjYxMyNMYW1pbmF0ZWQgUGxhc3RpY3MgUGxhdGUsIFNoZWV0LCBhbmQgU2hhcGUgTWFudWZhY3R1cmluZyMzMjYxCi1uYWljcyMzMjYxNCNQb2x5c3R5cmVuZSBGb2FtIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjYxCi1uYWljcyMzMjYxNSNVcmV0aGFuZSBhbmQgT3RoZXIgRm9hbSBQcm9kdWN0IChleGNlcHQgUG9seXN0eXJlbmUpIE1hbnVmYWN0dXJpbmcjMzI2MQotbmFpY3MjMzI2MTYjUGxhc3RpY3MgQm90dGxlIE1hbnVmYWN0dXJpbmcjMzI2MQotbmFpY3MjMzI2MTkjT3RoZXIgUGxhc3RpY3MgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNjEKLW5haWNzIzMyNjE5MSNQbGFzdGljcyBQbHVtYmluZyBGaXh0dXJlIE1hbnVmYWN0dXJpbmcjMzI2MTkKLW5haWNzIzMyNjE5MiNSZXNpbGllbnQgRmxvb3IgQ292ZXJpbmcgTWFudWZhY3R1cmluZyMzMjYxOQotbmFpY3MjMzI2MTk5I0FsbCBPdGhlciBQbGFzdGljcyBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzI2MTkKLW5haWNzIzMyNjIjUnViYmVyIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjYKLW5haWNzIzMyNjIxI1RpcmUgTWFudWZhY3R1cmluZyMzMjYyCi1uYWljcyMzMjYyMTEjVGlyZSBNYW51ZmFjdHVyaW5nIChleGNlcHQgUmV0cmVhZGluZykjMzI2MjEKLW5haWNzIzMyNjIxMiNUaXJlIFJldHJlYWRpbmcjMzI2MjEKLW5haWNzIzMyNjIyI1J1YmJlciBhbmQgUGxhc3RpY3MgSG9zZXMgYW5kIEJlbHRpbmcgTWFudWZhY3R1cmluZyMzMjYyCi1uYWljcyMzMjYyOSNPdGhlciBSdWJiZXIgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNjIKLW5haWNzIzMyNjI5MSNSdWJiZXIgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIGZvciBNZWNoYW5pY2FsIFVzZSMzMjYyOQotbmFpY3MjMzI2Mjk5I0FsbCBPdGhlciBSdWJiZXIgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNjI5Ci1uYWljcyMzMjcjTm9ubWV0YWxsaWMgTWluZXJhbCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzIKLW5haWNzIzMyNzEjQ2xheSBQcm9kdWN0IGFuZCBSZWZyYWN0b3J5IE1hbnVmYWN0dXJpbmcjMzI3Ci1uYWljcyMzMjcxMSNQb3R0ZXJ5LCBDZXJhbWljcywgYW5kIFBsdW1iaW5nIEZpeHR1cmUgTWFudWZhY3R1cmluZyMzMjcxCi1uYWljcyMzMjcxMTEjVml0cmVvdXMgQ2hpbmEgUGx1bWJpbmcgRml4dHVyZSBhbmQgQ2hpbmEgYW5kIEVhcnRoZW53YXJlIEJhdGhyb29tIEFjY2Vzc29yaWVzIE1hbnVmYWN0dXJpbmcjMzI3MTEKLW5haWNzIzMyNzExMiNWaXRyZW91cyBDaGluYSwgRmluZSBFYXJ0aGVud2FyZSwgYW5kIE90aGVyIFBvdHRlcnkgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNzExCi1uYWljcyMzMjcxMTMjUG9yY2VsYWluIEVsZWN0cmljYWwgU3VwcGx5IE1hbnVmYWN0dXJpbmcjMzI3MTEKLW5haWNzIzMyNzEyI0NsYXkgQnVpbGRpbmcgTWF0ZXJpYWwgYW5kIFJlZnJhY3RvcmllcyBNYW51ZmFjdHVyaW5nIzMyNzEKLW5haWNzIzMyNzEyMSNCcmljayBhbmQgU3RydWN0dXJhbCBDbGF5IFRpbGUgTWFudWZhY3R1cmluZyMzMjcxMgotbmFpY3MjMzI3MTIyI0NlcmFtaWMgV2FsbCBhbmQgRmxvb3IgVGlsZSBNYW51ZmFjdHVyaW5nIzMyNzEyCi1uYWljcyMzMjcxMjMjT3RoZXIgU3RydWN0dXJhbCBDbGF5IFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjcxMgotbmFpY3MjMzI3MTI0I0NsYXkgUmVmcmFjdG9yeSBNYW51ZmFjdHVyaW5nIzMyNzEyCi1uYWljcyMzMjcxMjUjTm9uY2xheSBSZWZyYWN0b3J5IE1hbnVmYWN0dXJpbmcjMzI3MTIKLW5haWNzIzMyNzIjR2xhc3MgYW5kIEdsYXNzIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjcKLW5haWNzIzMyNzIxI0dsYXNzIGFuZCBHbGFzcyBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzI3MgotbmFpY3MjMzI3MjExI0ZsYXQgR2xhc3MgTWFudWZhY3R1cmluZyMzMjcyMQotbmFpY3MjMzI3MjEyI090aGVyIFByZXNzZWQgYW5kIEJsb3duIEdsYXNzIGFuZCBHbGFzc3dhcmUgTWFudWZhY3R1cmluZyMzMjcyMQotbmFpY3MjMzI3MjEzI0dsYXNzIENvbnRhaW5lciBNYW51ZmFjdHVyaW5nIzMyNzIxCi1uYWljcyMzMjcyMTUjR2xhc3MgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIE1hZGUgb2YgUHVyY2hhc2VkIEdsYXNzIzMyNzIxCi1uYWljcyMzMjczI0NlbWVudCBhbmQgQ29uY3JldGUgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNwotbmFpY3MjMzI3MzEjQ2VtZW50IE1hbnVmYWN0dXJpbmcjMzI3MwotbmFpY3MjMzI3MzIjUmVhZHktTWl4IENvbmNyZXRlIE1hbnVmYWN0dXJpbmcjMzI3MwotbmFpY3MjMzI3MzMjQ29uY3JldGUgUGlwZSwgQnJpY2ssIGFuZCBCbG9jayBNYW51ZmFjdHVyaW5nIzMyNzMKLW5haWNzIzMyNzMzMSNDb25jcmV0ZSBCbG9jayBhbmQgQnJpY2sgTWFudWZhY3R1cmluZyMzMjczMwotbmFpY3MjMzI3MzMyI0NvbmNyZXRlIFBpcGUgTWFudWZhY3R1cmluZyMzMjczMwotbmFpY3MjMzI3MzkjT3RoZXIgQ29uY3JldGUgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNzMKLW5haWNzIzMyNzQjTGltZSBhbmQgR3lwc3VtIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjcKLW5haWNzIzMyNzQxI0xpbWUgTWFudWZhY3R1cmluZyMzMjc0Ci1uYWljcyMzMjc0MiNHeXBzdW0gUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNzQKLW5haWNzIzMyNzkjT3RoZXIgTm9ubWV0YWxsaWMgTWluZXJhbCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzI3Ci1uYWljcyMzMjc5MSNBYnJhc2l2ZSBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzI3OQotbmFpY3MjMzI3OTkjQWxsIE90aGVyIE5vbm1ldGFsbGljIE1pbmVyYWwgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNzkKLW5haWNzIzMyNzk5MSNDdXQgU3RvbmUgYW5kIFN0b25lIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMjc5OQotbmFpY3MjMzI3OTkyI0dyb3VuZCBvciBUcmVhdGVkIE1pbmVyYWwgYW5kIEVhcnRoIE1hbnVmYWN0dXJpbmcjMzI3OTkKLW5haWNzIzMyNzk5MyNNaW5lcmFsIFdvb2wgTWFudWZhY3R1cmluZyMzMjc5OQotbmFpY3MjMzI3OTk5I0FsbCBPdGhlciBNaXNjZWxsYW5lb3VzIE5vbm1ldGFsbGljIE1pbmVyYWwgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMyNzk5Ci1uYWljcyMzMyNNYW51ZmFjdHVyaW5nIzMzCi1uYWljcyMzMzEjUHJpbWFyeSBNZXRhbCBNYW51ZmFjdHVyaW5nIzMzCi1uYWljcyMzMzExI0lyb24gYW5kIFN0ZWVsIE1pbGxzIGFuZCBGZXJyb2FsbG95IE1hbnVmYWN0dXJpbmcjMzMxCi1uYWljcyMzMzExMSNJcm9uIGFuZCBTdGVlbCBNaWxscyBhbmQgRmVycm9hbGxveSBNYW51ZmFjdHVyaW5nIzMzMTEKLW5haWNzIzMzMTExMSNJcm9uIGFuZCBTdGVlbCBNaWxscyMzMzExMQotbmFpY3MjMzMxMTEyI0VsZWN0cm9tZXRhbGx1cmdpY2FsIEZlcnJvYWxsb3kgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMzMTExCi1uYWljcyMzMzEyI1N0ZWVsIFByb2R1Y3QgTWFudWZhY3R1cmluZyBmcm9tIFB1cmNoYXNlZCBTdGVlbCMzMzEKLW5haWNzIzMzMTIxI0lyb24gYW5kIFN0ZWVsIFBpcGUgYW5kIFR1YmUgTWFudWZhY3R1cmluZyBmcm9tIFB1cmNoYXNlZCBTdGVlbCMzMzEyCi1uYWljcyMzMzEyMiNSb2xsaW5nIGFuZCBEcmF3aW5nIG9mIFB1cmNoYXNlZCBTdGVlbCMzMzEyCi1uYWljcyMzMzEyMjEjUm9sbGVkIFN0ZWVsIFNoYXBlIE1hbnVmYWN0dXJpbmcjMzMxMjIKLW5haWNzIzMzMTIyMiNTdGVlbCBXaXJlIERyYXdpbmcjMzMxMjIKLW5haWNzIzMzMTMjQWx1bWluYSBhbmQgQWx1bWludW0gUHJvZHVjdGlvbiBhbmQgUHJvY2Vzc2luZyMzMzEKLW5haWNzIzMzMTMxI0FsdW1pbmEgYW5kIEFsdW1pbnVtIFByb2R1Y3Rpb24gYW5kIFByb2Nlc3NpbmcjMzMxMwotbmFpY3MjMzMxMzExI0FsdW1pbmEgUmVmaW5pbmcjMzMxMzEKLW5haWNzIzMzMTMxMiNQcmltYXJ5IEFsdW1pbnVtIFByb2R1Y3Rpb24jMzMxMzEKLW5haWNzIzMzMTMxNCNTZWNvbmRhcnkgU21lbHRpbmcgYW5kIEFsbG95aW5nIG9mIEFsdW1pbnVtIzMzMTMxCi1uYWljcyMzMzEzMTUjQWx1bWludW0gU2hlZXQsIFBsYXRlLCBhbmQgRm9pbCBNYW51ZmFjdHVyaW5nIzMzMTMxCi1uYWljcyMzMzEzMTYjQWx1bWludW0gRXh0cnVkZWQgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMzMTMxCi1uYWljcyMzMzEzMTkjT3RoZXIgQWx1bWludW0gUm9sbGluZyBhbmQgRHJhd2luZyMzMzEzMQotbmFpY3MjMzMxNCNOb25mZXJyb3VzIE1ldGFsIChleGNlcHQgQWx1bWludW0pIFByb2R1Y3Rpb24gYW5kIFByb2Nlc3NpbmcjMzMxCi1uYWljcyMzMzE0MSNOb25mZXJyb3VzIE1ldGFsIChleGNlcHQgQWx1bWludW0pIFNtZWx0aW5nIGFuZCBSZWZpbmluZyMzMzE0Ci1uYWljcyMzMzE0MTEjUHJpbWFyeSBTbWVsdGluZyBhbmQgUmVmaW5pbmcgb2YgQ29wcGVyIzMzMTQxCi1uYWljcyMzMzE0MTkjUHJpbWFyeSBTbWVsdGluZyBhbmQgUmVmaW5pbmcgb2YgTm9uZmVycm91cyBNZXRhbCAoZXhjZXB0IENvcHBlciBhbmQgQWx1bWludW0pIzMzMTQxCi1uYWljcyMzMzE0MiNDb3BwZXIgUm9sbGluZywgRHJhd2luZywgRXh0cnVkaW5nLCBhbmQgQWxsb3lpbmcjMzMxNAotbmFpY3MjMzMxNDIxI0NvcHBlciBSb2xsaW5nLCBEcmF3aW5nLCBhbmQgRXh0cnVkaW5nIzMzMTQyCi1uYWljcyMzMzE0MjIjQ29wcGVyIFdpcmUgKGV4Y2VwdCBNZWNoYW5pY2FsKSBEcmF3aW5nIzMzMTQyCi1uYWljcyMzMzE0MjMjU2Vjb25kYXJ5IFNtZWx0aW5nLCBSZWZpbmluZywgYW5kIEFsbG95aW5nIG9mIENvcHBlciMzMzE0MgotbmFpY3MjMzMxNDkjTm9uZmVycm91cyBNZXRhbCAoZXhjZXB0IENvcHBlciBhbmQgQWx1bWludW0pIFJvbGxpbmcsIERyYXdpbmcsIEV4dHJ1ZGluZywgYW5kIEFsbG95aW5nIzMzMTQKLW5haWNzIzMzMTQ5MSNOb25mZXJyb3VzIE1ldGFsIChleGNlcHQgQ29wcGVyIGFuZCBBbHVtaW51bSkgUm9sbGluZywgRHJhd2luZywgYW5kIEV4dHJ1ZGluZyMzMzE0OQotbmFpY3MjMzMxNDkyI1NlY29uZGFyeSBTbWVsdGluZywgUmVmaW5pbmcsIGFuZCBBbGxveWluZyBvZiBOb25mZXJyb3VzIE1ldGFsIChleGNlcHQgQ29wcGVyIGFuZCBBbHVtaW51bSkjMzMxNDkKLW5haWNzIzMzMTUjRm91bmRyaWVzIzMzMQotbmFpY3MjMzMxNTEjRmVycm91cyBNZXRhbCBGb3VuZHJpZXMjMzMxNQotbmFpY3MjMzMxNTExI0lyb24gRm91bmRyaWVzIzMzMTUxCi1uYWljcyMzMzE1MTIjU3RlZWwgSW52ZXN0bWVudCBGb3VuZHJpZXMjMzMxNTEKLW5haWNzIzMzMTUxMyNTdGVlbCBGb3VuZHJpZXMgKGV4Y2VwdCBJbnZlc3RtZW50KSMzMzE1MQotbmFpY3MjMzMxNTIjTm9uZmVycm91cyBNZXRhbCBGb3VuZHJpZXMjMzMxNQotbmFpY3MjMzMxNTIxI0FsdW1pbnVtIERpZS1DYXN0aW5nIEZvdW5kcmllcyMzMzE1MgotbmFpY3MjMzMxNTIyI05vbmZlcnJvdXMgKGV4Y2VwdCBBbHVtaW51bSkgRGllLUNhc3RpbmcgRm91bmRyaWVzIzMzMTUyCi1uYWljcyMzMzE1MjQjQWx1bWludW0gRm91bmRyaWVzIChleGNlcHQgRGllLUNhc3RpbmcpIzMzMTUyCi1uYWljcyMzMzE1MjUjQ29wcGVyIEZvdW5kcmllcyAoZXhjZXB0IERpZS1DYXN0aW5nKSMzMzE1MgotbmFpY3MjMzMxNTI4I090aGVyIE5vbmZlcnJvdXMgRm91bmRyaWVzIChleGNlcHQgRGllLUNhc3RpbmcpIzMzMTUyCi1uYWljcyMzMzIjRmFicmljYXRlZCBNZXRhbCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzMKLW5haWNzIzMzMjEjRm9yZ2luZyBhbmQgU3RhbXBpbmcjMzMyCi1uYWljcyMzMzIxMSNGb3JnaW5nIGFuZCBTdGFtcGluZyMzMzIxCi1uYWljcyMzMzIxMTEjSXJvbiBhbmQgU3RlZWwgRm9yZ2luZyMzMzIxMQotbmFpY3MjMzMyMTEyI05vbmZlcnJvdXMgRm9yZ2luZyMzMzIxMQotbmFpY3MjMzMyMTE0I0N1c3RvbSBSb2xsIEZvcm1pbmcjMzMyMTEKLW5haWNzIzMzMjExNSNDcm93biBhbmQgQ2xvc3VyZSBNYW51ZmFjdHVyaW5nIzMzMjExCi1uYWljcyMzMzIxMTYjTWV0YWwgU3RhbXBpbmcjMzMyMTEKLW5haWNzIzMzMjExNyNQb3dkZXIgTWV0YWxsdXJneSBQYXJ0IE1hbnVmYWN0dXJpbmcjMzMyMTEKLW5haWNzIzMzMjIjQ3V0bGVyeSBhbmQgSGFuZHRvb2wgTWFudWZhY3R1cmluZyMzMzIKLW5haWNzIzMzMjIxI0N1dGxlcnkgYW5kIEhhbmR0b29sIE1hbnVmYWN0dXJpbmcjMzMyMgotbmFpY3MjMzMyMjExI0N1dGxlcnkgYW5kIEZsYXR3YXJlIChleGNlcHQgUHJlY2lvdXMpIE1hbnVmYWN0dXJpbmcjMzMyMjEKLW5haWNzIzMzMjIxMiNIYW5kIGFuZCBFZGdlIFRvb2wgTWFudWZhY3R1cmluZyMzMzIyMQotbmFpY3MjMzMyMjEzI1NhdyBCbGFkZSBhbmQgSGFuZHNhdyBNYW51ZmFjdHVyaW5nIzMzMjIxCi1uYWljcyMzMzIyMTQjS2l0Y2hlbiBVdGVuc2lsLCBQb3QsIGFuZCBQYW4gTWFudWZhY3R1cmluZyMzMzIyMQotbmFpY3MjMzMyMyNBcmNoaXRlY3R1cmFsIGFuZCBTdHJ1Y3R1cmFsIE1ldGFscyBNYW51ZmFjdHVyaW5nIzMzMgotbmFpY3MjMzMyMzEjUGxhdGUgV29yayBhbmQgRmFicmljYXRlZCBTdHJ1Y3R1cmFsIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMzIzCi1uYWljcyMzMzIzMTEjUHJlZmFicmljYXRlZCBNZXRhbCBCdWlsZGluZyBhbmQgQ29tcG9uZW50IE1hbnVmYWN0dXJpbmcjMzMyMzEKLW5haWNzIzMzMjMxMiNGYWJyaWNhdGVkIFN0cnVjdHVyYWwgTWV0YWwgTWFudWZhY3R1cmluZyMzMzIzMQotbmFpY3MjMzMyMzEzI1BsYXRlIFdvcmsgTWFudWZhY3R1cmluZyMzMzIzMQotbmFpY3MjMzMyMzIjT3JuYW1lbnRhbCBhbmQgQXJjaGl0ZWN0dXJhbCBNZXRhbCBQcm9kdWN0cyBNYW51ZmFjdHVyaW5nIzMzMjMKLW5haWNzIzMzMjMyMSNNZXRhbCBXaW5kb3cgYW5kIERvb3IgTWFudWZhY3R1cmluZyMzMzIzMgotbmFpY3MjMzMyMzIyI1NoZWV0IE1ldGFsIFdvcmsgTWFudWZhY3R1cmluZyMzMzIzMgotbmFpY3MjMzMyMzIzI09ybmFtZW50YWwgYW5kIEFyY2hpdGVjdHVyYWwgTWV0YWwgV29yayBNYW51ZmFjdHVyaW5nIzMzMjMyCi1uYWljcyMzMzI0I0JvaWxlciwgVGFuaywgYW5kIFNoaXBwaW5nIENvbnRhaW5lciBNYW51ZmFjdHVyaW5nIzMzMgotbmFpY3MjMzMyNDEjUG93ZXIgQm9pbGVyIGFuZCBIZWF0IEV4Y2hhbmdlciBNYW51ZmFjdHVyaW5nIzMzMjQKLW5haWNzIzMzMjQyI01ldGFsIFRhbmsgKEhlYXZ5IEdhdWdlKSBNYW51ZmFjdHVyaW5nIzMzMjQKLW5haWNzIzMzMjQzI01ldGFsIENhbiwgQm94LCBhbmQgT3RoZXIgTWV0YWwgQ29udGFpbmVyIChMaWdodCBHYXVnZSkgTWFudWZhY3R1cmluZyMzMzI0Ci1uYWljcyMzMzI0MzEjTWV0YWwgQ2FuIE1hbnVmYWN0dXJpbmcjMzMyNDMKLW5haWNzIzMzMjQzOSNPdGhlciBNZXRhbCBDb250YWluZXIgTWFudWZhY3R1cmluZyMzMzI0MwotbmFpY3MjMzMyNSNIYXJkd2FyZSBNYW51ZmFjdHVyaW5nIzMzMgotbmFpY3MjMzMyNTEjSGFyZHdhcmUgTWFudWZhY3R1cmluZyMzMzI1Ci1uYWljcyMzMzI2I1NwcmluZyBhbmQgV2lyZSBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzMyCi1uYWljcyMzMzI2MSNTcHJpbmcgYW5kIFdpcmUgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMzMjYKLW5haWNzIzMzMjYxMSNTcHJpbmcgKEhlYXZ5IEdhdWdlKSBNYW51ZmFjdHVyaW5nIzMzMjYxCi1uYWljcyMzMzI2MTIjU3ByaW5nIChMaWdodCBHYXVnZSkgTWFudWZhY3R1cmluZyMzMzI2MQotbmFpY3MjMzMyNjE4I090aGVyIEZhYnJpY2F0ZWQgV2lyZSBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzMyNjEKLW5haWNzIzMzMjcjTWFjaGluZSBTaG9wczsgVHVybmVkIFByb2R1Y3Q7IGFuZCBTY3JldywgTnV0LCBhbmQgQm9sdCBNYW51ZmFjdHVyaW5nIzMzMgotbmFpY3MjMzMyNzEjTWFjaGluZSBTaG9wcyMzMzI3Ci1uYWljcyMzMzI3MiNUdXJuZWQgUHJvZHVjdCBhbmQgU2NyZXcsIE51dCwgYW5kIEJvbHQgTWFudWZhY3R1cmluZyMzMzI3Ci1uYWljcyMzMzI3MjEjUHJlY2lzaW9uIFR1cm5lZCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzMyNzIKLW5haWNzIzMzMjcyMiNCb2x0LCBOdXQsIFNjcmV3LCBSaXZldCwgYW5kIFdhc2hlciBNYW51ZmFjdHVyaW5nIzMzMjcyCi1uYWljcyMzMzI4I0NvYXRpbmcsIEVuZ3JhdmluZywgSGVhdCBUcmVhdGluZywgYW5kIEFsbGllZCBBY3Rpdml0aWVzIzMzMgotbmFpY3MjMzMyODEjQ29hdGluZywgRW5ncmF2aW5nLCBIZWF0IFRyZWF0aW5nLCBhbmQgQWxsaWVkIEFjdGl2aXRpZXMjMzMyOAotbmFpY3MjMzMyODExI01ldGFsIEhlYXQgVHJlYXRpbmcjMzMyODEKLW5haWNzIzMzMjgxMiNNZXRhbCBDb2F0aW5nLCBFbmdyYXZpbmcgKGV4Y2VwdCBKZXdlbHJ5IGFuZCBTaWx2ZXJ3YXJlKSwgYW5kIEFsbGllZCBTZXJ2aWNlcyB0byBNYW51ZmFjdHVyZXJzIzMzMjgxCi1uYWljcyMzMzI4MTMjRWxlY3Ryb3BsYXRpbmcsIFBsYXRpbmcsIFBvbGlzaGluZywgQW5vZGl6aW5nLCBhbmQgQ29sb3JpbmcjMzMyODEKLW5haWNzIzMzMjkjT3RoZXIgRmFicmljYXRlZCBNZXRhbCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzMyCi1uYWljcyMzMzI5MSNNZXRhbCBWYWx2ZSBNYW51ZmFjdHVyaW5nIzMzMjkKLW5haWNzIzMzMjkxMSNJbmR1c3RyaWFsIFZhbHZlIE1hbnVmYWN0dXJpbmcjMzMyOTEKLW5haWNzIzMzMjkxMiNGbHVpZCBQb3dlciBWYWx2ZSBhbmQgSG9zZSBGaXR0aW5nIE1hbnVmYWN0dXJpbmcjMzMyOTEKLW5haWNzIzMzMjkxMyNQbHVtYmluZyBGaXh0dXJlIEZpdHRpbmcgYW5kIFRyaW0gTWFudWZhY3R1cmluZyMzMzI5MQotbmFpY3MjMzMyOTE5I090aGVyIE1ldGFsIFZhbHZlIGFuZCBQaXBlIEZpdHRpbmcgTWFudWZhY3R1cmluZyMzMzI5MQotbmFpY3MjMzMyOTkjQWxsIE90aGVyIEZhYnJpY2F0ZWQgTWV0YWwgUHJvZHVjdCBNYW51ZmFjdHVyaW5nIzMzMjkKLW5haWNzIzMzMjk5MSNCYWxsIGFuZCBSb2xsZXIgQmVhcmluZyBNYW51ZmFjdHVyaW5nIzMzMjk5Ci1uYWljcyMzMzI5OTIjU21hbGwgQXJtcyBBbW11bml0aW9uIE1hbnVmYWN0dXJpbmcjMzMyOTkKLW5haWNzIzMzMjk5MyNBbW11bml0aW9uIChleGNlcHQgU21hbGwgQXJtcykgTWFudWZhY3R1cmluZyMzMzI5OQotbmFpY3MjMzMyOTk0I1NtYWxsIEFybXMgTWFudWZhY3R1cmluZyMzMzI5OQotbmFpY3MjMzMyOTk1I090aGVyIE9yZG5hbmNlIGFuZCBBY2Nlc3NvcmllcyBNYW51ZmFjdHVyaW5nIzMzMjk5Ci1uYWljcyMzMzI5OTYjRmFicmljYXRlZCBQaXBlIGFuZCBQaXBlIEZpdHRpbmcgTWFudWZhY3R1cmluZyMzMzI5OQotbmFpY3MjMzMyOTk3I0luZHVzdHJpYWwgUGF0dGVybiBNYW51ZmFjdHVyaW5nIzMzMjk5Ci1uYWljcyMzMzI5OTgjRW5hbWVsZWQgSXJvbiBhbmQgTWV0YWwgU2FuaXRhcnkgV2FyZSBNYW51ZmFjdHVyaW5nIzMzMjk5Ci1uYWljcyMzMzI5OTkjQWxsIE90aGVyIE1pc2NlbGxhbmVvdXMgRmFicmljYXRlZCBNZXRhbCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzMyOTkKLW5haWNzIzMzMyNNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMwotbmFpY3MjMzMzMSNBZ3JpY3VsdHVyZSwgQ29uc3RydWN0aW9uLCBhbmQgTWluaW5nIE1hY2hpbmVyeSBNYW51ZmFjdHVyaW5nIzMzMwotbmFpY3MjMzMzMTEjQWdyaWN1bHR1cmFsIEltcGxlbWVudCBNYW51ZmFjdHVyaW5nIzMzMzEKLW5haWNzIzMzMzExMSNGYXJtIE1hY2hpbmVyeSBhbmQgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzMzMTEKLW5haWNzIzMzMzExMiNMYXduIGFuZCBHYXJkZW4gVHJhY3RvciBhbmQgSG9tZSBMYXduIGFuZCBHYXJkZW4gRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzMzMTEKLW5haWNzIzMzMzEyI0NvbnN0cnVjdGlvbiBNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMzMxCi1uYWljcyMzMzMxMyNNaW5pbmcgYW5kIE9pbCBhbmQgR2FzIEZpZWxkIE1hY2hpbmVyeSBNYW51ZmFjdHVyaW5nIzMzMzEKLW5haWNzIzMzMzEzMSNNaW5pbmcgTWFjaGluZXJ5IGFuZCBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzMxMwotbmFpY3MjMzMzMTMyI09pbCBhbmQgR2FzIEZpZWxkIE1hY2hpbmVyeSBhbmQgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzMzMTMKLW5haWNzIzMzMzIjSW5kdXN0cmlhbCBNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMzMKLW5haWNzIzMzMzIxI1Nhd21pbGwgYW5kIFdvb2R3b3JraW5nIE1hY2hpbmVyeSBNYW51ZmFjdHVyaW5nIzMzMzIKLW5haWNzIzMzMzIyI1BsYXN0aWNzIGFuZCBSdWJiZXIgSW5kdXN0cnkgTWFjaGluZXJ5IE1hbnVmYWN0dXJpbmcjMzMzMgotbmFpY3MjMzMzMjkjT3RoZXIgSW5kdXN0cmlhbCBNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMzMyCi1uYWljcyMzMzMyOTEjUGFwZXIgSW5kdXN0cnkgTWFjaGluZXJ5IE1hbnVmYWN0dXJpbmcjMzMzMjkKLW5haWNzIzMzMzI5MiNUZXh0aWxlIE1hY2hpbmVyeSBNYW51ZmFjdHVyaW5nIzMzMzI5Ci1uYWljcyMzMzMyOTMjUHJpbnRpbmcgTWFjaGluZXJ5IGFuZCBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzMyOQotbmFpY3MjMzMzMjk0I0Zvb2QgUHJvZHVjdCBNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMzMyOQotbmFpY3MjMzMzMjk1I1NlbWljb25kdWN0b3IgTWFjaGluZXJ5IE1hbnVmYWN0dXJpbmcjMzMzMjkKLW5haWNzIzMzMzI5OCNBbGwgT3RoZXIgSW5kdXN0cmlhbCBNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMzMyOQotbmFpY3MjMzMzMyNDb21tZXJjaWFsIGFuZCBTZXJ2aWNlIEluZHVzdHJ5IE1hY2hpbmVyeSBNYW51ZmFjdHVyaW5nIzMzMwotbmFpY3MjMzMzMzEjQ29tbWVyY2lhbCBhbmQgU2VydmljZSBJbmR1c3RyeSBNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMzMzCi1uYWljcyMzMzMzMTEjQXV0b21hdGljIFZlbmRpbmcgTWFjaGluZSBNYW51ZmFjdHVyaW5nIzMzMzMxCi1uYWljcyMzMzMzMTIjQ29tbWVyY2lhbCBMYXVuZHJ5LCBEcnljbGVhbmluZywgYW5kIFByZXNzaW5nIE1hY2hpbmUgTWFudWZhY3R1cmluZyMzMzMzMQotbmFpY3MjMzMzMzEzI09mZmljZSBNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMzMzMQotbmFpY3MjMzMzMzE0I09wdGljYWwgSW5zdHJ1bWVudCBhbmQgTGVucyBNYW51ZmFjdHVyaW5nIzMzMzMxCi1uYWljcyMzMzMzMTUjUGhvdG9ncmFwaGljIGFuZCBQaG90b2NvcHlpbmcgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzMzMzEKLW5haWNzIzMzMzMxOSNPdGhlciBDb21tZXJjaWFsIGFuZCBTZXJ2aWNlIEluZHVzdHJ5IE1hY2hpbmVyeSBNYW51ZmFjdHVyaW5nIzMzMzMxCi1uYWljcyMzMzM0I1ZlbnRpbGF0aW9uLCBIZWF0aW5nLCBBaXItQ29uZGl0aW9uaW5nLCBhbmQgQ29tbWVyY2lhbCBSZWZyaWdlcmF0aW9uIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzMwotbmFpY3MjMzMzNDEjVmVudGlsYXRpb24sIEhlYXRpbmcsIEFpci1Db25kaXRpb25pbmcsIGFuZCBDb21tZXJjaWFsIFJlZnJpZ2VyYXRpb24gRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzMzNAotbmFpY3MjMzMzNDExI0FpciBQdXJpZmljYXRpb24gRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzMzNDEKLW5haWNzIzMzMzQxMiNJbmR1c3RyaWFsIGFuZCBDb21tZXJjaWFsIEZhbiBhbmQgQmxvd2VyIE1hbnVmYWN0dXJpbmcjMzMzNDEKLW5haWNzIzMzMzQxNCNIZWF0aW5nIEVxdWlwbWVudCAoZXhjZXB0IFdhcm0gQWlyIEZ1cm5hY2VzKSBNYW51ZmFjdHVyaW5nIzMzMzQxCi1uYWljcyMzMzM0MTUjQWlyLUNvbmRpdGlvbmluZyBhbmQgV2FybSBBaXIgSGVhdGluZyBFcXVpcG1lbnQgYW5kIENvbW1lcmNpYWwgYW5kIEluZHVzdHJpYWwgUmVmcmlnZXJhdGlvbiBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzM0MQotbmFpY3MjMzMzNSNNZXRhbHdvcmtpbmcgTWFjaGluZXJ5IE1hbnVmYWN0dXJpbmcjMzMzCi1uYWljcyMzMzM1MSNNZXRhbHdvcmtpbmcgTWFjaGluZXJ5IE1hbnVmYWN0dXJpbmcjMzMzNQotbmFpY3MjMzMzNTExI0luZHVzdHJpYWwgTW9sZCBNYW51ZmFjdHVyaW5nIzMzMzUxCi1uYWljcyMzMzM1MTIjTWFjaGluZSBUb29sIChNZXRhbCBDdXR0aW5nIFR5cGVzKSBNYW51ZmFjdHVyaW5nIzMzMzUxCi1uYWljcyMzMzM1MTMjTWFjaGluZSBUb29sIChNZXRhbCBGb3JtaW5nIFR5cGVzKSBNYW51ZmFjdHVyaW5nIzMzMzUxCi1uYWljcyMzMzM1MTQjU3BlY2lhbCBEaWUgYW5kIFRvb2wsIERpZSBTZXQsIEppZywgYW5kIEZpeHR1cmUgTWFudWZhY3R1cmluZyMzMzM1MQotbmFpY3MjMzMzNTE1I0N1dHRpbmcgVG9vbCBhbmQgTWFjaGluZSBUb29sIEFjY2Vzc29yeSBNYW51ZmFjdHVyaW5nIzMzMzUxCi1uYWljcyMzMzM1MTYjUm9sbGluZyBNaWxsIE1hY2hpbmVyeSBhbmQgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzMzNTEKLW5haWNzIzMzMzUxOCNPdGhlciBNZXRhbHdvcmtpbmcgTWFjaGluZXJ5IE1hbnVmYWN0dXJpbmcjMzMzNTEKLW5haWNzIzMzMzYjRW5naW5lLCBUdXJiaW5lLCBhbmQgUG93ZXIgVHJhbnNtaXNzaW9uIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzMwotbmFpY3MjMzMzNjEjRW5naW5lLCBUdXJiaW5lLCBhbmQgUG93ZXIgVHJhbnNtaXNzaW9uIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzMzYKLW5haWNzIzMzMzYxMSNUdXJiaW5lIGFuZCBUdXJiaW5lIEdlbmVyYXRvciBTZXQgVW5pdHMgTWFudWZhY3R1cmluZyMzMzM2MQotbmFpY3MjMzMzNjEyI1NwZWVkIENoYW5nZXIsIEluZHVzdHJpYWwgSGlnaC1TcGVlZCBEcml2ZSwgYW5kIEdlYXIgTWFudWZhY3R1cmluZyMzMzM2MQotbmFpY3MjMzMzNjEzI01lY2hhbmljYWwgUG93ZXIgVHJhbnNtaXNzaW9uIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzMzYxCi1uYWljcyMzMzM2MTgjT3RoZXIgRW5naW5lIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzMzYxCi1uYWljcyMzMzM5I090aGVyIEdlbmVyYWwgUHVycG9zZSBNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMzMKLW5haWNzIzMzMzkxI1B1bXAgYW5kIENvbXByZXNzb3IgTWFudWZhY3R1cmluZyMzMzM5Ci1uYWljcyMzMzM5MTEjUHVtcCBhbmQgUHVtcGluZyBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzM5MQotbmFpY3MjMzMzOTEyI0FpciBhbmQgR2FzIENvbXByZXNzb3IgTWFudWZhY3R1cmluZyMzMzM5MQotbmFpY3MjMzMzOTEzI01lYXN1cmluZyBhbmQgRGlzcGVuc2luZyBQdW1wIE1hbnVmYWN0dXJpbmcjMzMzOTEKLW5haWNzIzMzMzkyI01hdGVyaWFsIEhhbmRsaW5nIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzMzkKLW5haWNzIzMzMzkyMSNFbGV2YXRvciBhbmQgTW92aW5nIFN0YWlyd2F5IE1hbnVmYWN0dXJpbmcjMzMzOTIKLW5haWNzIzMzMzkyMiNDb252ZXlvciBhbmQgQ29udmV5aW5nIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzMzkyCi1uYWljcyMzMzM5MjMjT3ZlcmhlYWQgVHJhdmVsaW5nIENyYW5lLCBIb2lzdCwgYW5kIE1vbm9yYWlsIFN5c3RlbSBNYW51ZmFjdHVyaW5nIzMzMzkyCi1uYWljcyMzMzM5MjQjSW5kdXN0cmlhbCBUcnVjaywgVHJhY3RvciwgVHJhaWxlciwgYW5kIFN0YWNrZXIgTWFjaGluZXJ5IE1hbnVmYWN0dXJpbmcjMzMzOTIKLW5haWNzIzMzMzk5I0FsbCBPdGhlciBHZW5lcmFsIFB1cnBvc2UgTWFjaGluZXJ5IE1hbnVmYWN0dXJpbmcjMzMzOQotbmFpY3MjMzMzOTkxI1Bvd2VyLURyaXZlbiBIYW5kdG9vbCBNYW51ZmFjdHVyaW5nIzMzMzk5Ci1uYWljcyMzMzM5OTIjV2VsZGluZyBhbmQgU29sZGVyaW5nIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzMzk5Ci1uYWljcyMzMzM5OTMjUGFja2FnaW5nIE1hY2hpbmVyeSBNYW51ZmFjdHVyaW5nIzMzMzk5Ci1uYWljcyMzMzM5OTQjSW5kdXN0cmlhbCBQcm9jZXNzIEZ1cm5hY2UgYW5kIE92ZW4gTWFudWZhY3R1cmluZyMzMzM5OQotbmFpY3MjMzMzOTk1I0ZsdWlkIFBvd2VyIEN5bGluZGVyIGFuZCBBY3R1YXRvciBNYW51ZmFjdHVyaW5nIzMzMzk5Ci1uYWljcyMzMzM5OTYjRmx1aWQgUG93ZXIgUHVtcCBhbmQgTW90b3IgTWFudWZhY3R1cmluZyMzMzM5OQotbmFpY3MjMzMzOTk3I1NjYWxlIGFuZCBCYWxhbmNlIChleGNlcHQgTGFib3JhdG9yeSkgTWFudWZhY3R1cmluZyMzMzM5OQotbmFpY3MjMzMzOTk5I0FsbCBPdGhlciBNaXNjZWxsYW5lb3VzIEdlbmVyYWwgUHVycG9zZSBNYWNoaW5lcnkgTWFudWZhY3R1cmluZyMzMzM5OQotbmFpY3MjMzM0I0NvbXB1dGVyIGFuZCBFbGVjdHJvbmljIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMwotbmFpY3MjMzM0MSNDb21wdXRlciBhbmQgUGVyaXBoZXJhbCBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzQKLW5haWNzIzMzNDExI0NvbXB1dGVyIGFuZCBQZXJpcGhlcmFsIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzNDEKLW5haWNzIzMzNDExMSNFbGVjdHJvbmljIENvbXB1dGVyIE1hbnVmYWN0dXJpbmcjMzM0MTEKLW5haWNzIzMzNDExMiNDb21wdXRlciBTdG9yYWdlIERldmljZSBNYW51ZmFjdHVyaW5nIzMzNDExCi1uYWljcyMzMzQxMTMjQ29tcHV0ZXIgVGVybWluYWwgTWFudWZhY3R1cmluZyMzMzQxMQotbmFpY3MjMzM0MTE5I090aGVyIENvbXB1dGVyIFBlcmlwaGVyYWwgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzM0MTEKLW5haWNzIzMzNDIjQ29tbXVuaWNhdGlvbnMgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzM0Ci1uYWljcyMzMzQyMSNUZWxlcGhvbmUgQXBwYXJhdHVzIE1hbnVmYWN0dXJpbmcjMzM0MgotbmFpY3MjMzM0MjIjUmFkaW8gYW5kIFRlbGV2aXNpb24gQnJvYWRjYXN0aW5nIGFuZCBXaXJlbGVzcyBDb21tdW5pY2F0aW9ucyBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzQyCi1uYWljcyMzMzQyOSNPdGhlciBDb21tdW5pY2F0aW9ucyBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzQyCi1uYWljcyMzMzQzI0F1ZGlvIGFuZCBWaWRlbyBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzQKLW5haWNzIzMzNDMxI0F1ZGlvIGFuZCBWaWRlbyBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzQzCi1uYWljcyMzMzQ0I1NlbWljb25kdWN0b3IgYW5kIE90aGVyIEVsZWN0cm9uaWMgQ29tcG9uZW50IE1hbnVmYWN0dXJpbmcjMzM0Ci1uYWljcyMzMzQ0MSNTZW1pY29uZHVjdG9yIGFuZCBPdGhlciBFbGVjdHJvbmljIENvbXBvbmVudCBNYW51ZmFjdHVyaW5nIzMzNDQKLW5haWNzIzMzNDQxMSNFbGVjdHJvbiBUdWJlIE1hbnVmYWN0dXJpbmcjMzM0NDEKLW5haWNzIzMzNDQxMiNCYXJlIFByaW50ZWQgQ2lyY3VpdCBCb2FyZCBNYW51ZmFjdHVyaW5nIzMzNDQxCi1uYWljcyMzMzQ0MTMjU2VtaWNvbmR1Y3RvciBhbmQgUmVsYXRlZCBEZXZpY2UgTWFudWZhY3R1cmluZyMzMzQ0MQotbmFpY3MjMzM0NDE0I0VsZWN0cm9uaWMgQ2FwYWNpdG9yIE1hbnVmYWN0dXJpbmcjMzM0NDEKLW5haWNzIzMzNDQxNSNFbGVjdHJvbmljIFJlc2lzdG9yIE1hbnVmYWN0dXJpbmcjMzM0NDEKLW5haWNzIzMzNDQxNiNFbGVjdHJvbmljIENvaWwsIFRyYW5zZm9ybWVyLCBhbmQgT3RoZXIgSW5kdWN0b3IgTWFudWZhY3R1cmluZyMzMzQ0MQotbmFpY3MjMzM0NDE3I0VsZWN0cm9uaWMgQ29ubmVjdG9yIE1hbnVmYWN0dXJpbmcjMzM0NDEKLW5haWNzIzMzNDQxOCNQcmludGVkIENpcmN1aXQgQXNzZW1ibHkgKEVsZWN0cm9uaWMgQXNzZW1ibHkpIE1hbnVmYWN0dXJpbmcjMzM0NDEKLW5haWNzIzMzNDQxOSNPdGhlciBFbGVjdHJvbmljIENvbXBvbmVudCBNYW51ZmFjdHVyaW5nIzMzNDQxCi1uYWljcyMzMzQ1I05hdmlnYXRpb25hbCwgTWVhc3VyaW5nLCBFbGVjdHJvbWVkaWNhbCwgYW5kIENvbnRyb2wgSW5zdHJ1bWVudHMgTWFudWZhY3R1cmluZyMzMzQKLW5haWNzIzMzNDUxI05hdmlnYXRpb25hbCwgTWVhc3VyaW5nLCBFbGVjdHJvbWVkaWNhbCwgYW5kIENvbnRyb2wgSW5zdHJ1bWVudHMgTWFudWZhY3R1cmluZyMzMzQ1Ci1uYWljcyMzMzQ1MTAjRWxlY3Ryb21lZGljYWwgYW5kIEVsZWN0cm90aGVyYXBldXRpYyBBcHBhcmF0dXMgTWFudWZhY3R1cmluZyMzMzQ1MQotbmFpY3MjMzM0NTExI1NlYXJjaCwgRGV0ZWN0aW9uLCBOYXZpZ2F0aW9uLCBHdWlkYW5jZSwgQWVyb25hdXRpY2FsLCBhbmQgTmF1dGljYWwgU3lzdGVtIGFuZCBJbnN0cnVtZW50IE1hbnVmYWN0dXJpbmcjMzM0NTEKLW5haWNzIzMzNDUxMiNBdXRvbWF0aWMgRW52aXJvbm1lbnRhbCBDb250cm9sIE1hbnVmYWN0dXJpbmcgZm9yIFJlc2lkZW50aWFsLCBDb21tZXJjaWFsLCBhbmQgQXBwbGlhbmNlIFVzZSMzMzQ1MQotbmFpY3MjMzM0NTEzI0luc3RydW1lbnRzIGFuZCBSZWxhdGVkIFByb2R1Y3RzIE1hbnVmYWN0dXJpbmcgZm9yIE1lYXN1cmluZywgRGlzcGxheWluZywgYW5kIENvbnRyb2xsaW5nIEluZHVzdHJpYWwgUHJvY2VzcyBWYXJpYWJsZXMjMzM0NTEKLW5haWNzIzMzNDUxNCNUb3RhbGl6aW5nIEZsdWlkIE1ldGVyIGFuZCBDb3VudGluZyBEZXZpY2UgTWFudWZhY3R1cmluZyMzMzQ1MQotbmFpY3MjMzM0NTE1I0luc3RydW1lbnQgTWFudWZhY3R1cmluZyBmb3IgTWVhc3VyaW5nIGFuZCBUZXN0aW5nIEVsZWN0cmljaXR5IGFuZCBFbGVjdHJpY2FsIFNpZ25hbHMjMzM0NTEKLW5haWNzIzMzNDUxNiNBbmFseXRpY2FsIExhYm9yYXRvcnkgSW5zdHJ1bWVudCBNYW51ZmFjdHVyaW5nIzMzNDUxCi1uYWljcyMzMzQ1MTcjSXJyYWRpYXRpb24gQXBwYXJhdHVzIE1hbnVmYWN0dXJpbmcjMzM0NTEKLW5haWNzIzMzNDUxOCNXYXRjaCwgQ2xvY2ssIGFuZCBQYXJ0IE1hbnVmYWN0dXJpbmcjMzM0NTEKLW5haWNzIzMzNDUxOSNPdGhlciBNZWFzdXJpbmcgYW5kIENvbnRyb2xsaW5nIERldmljZSBNYW51ZmFjdHVyaW5nIzMzNDUxCi1uYWljcyMzMzQ2I01hbnVmYWN0dXJpbmcgYW5kIFJlcHJvZHVjaW5nIE1hZ25ldGljIGFuZCBPcHRpY2FsIE1lZGlhIzMzNAotbmFpY3MjMzM0NjEjTWFudWZhY3R1cmluZyBhbmQgUmVwcm9kdWNpbmcgTWFnbmV0aWMgYW5kIE9wdGljYWwgTWVkaWEjMzM0NgotbmFpY3MjMzM0NjExI1NvZnR3YXJlIFJlcHJvZHVjaW5nIzMzNDYxCi1uYWljcyMzMzQ2MTIjUHJlcmVjb3JkZWQgQ29tcGFjdCBEaXNjIChleGNlcHQgU29mdHdhcmUpLCBUYXBlLCBhbmQgUmVjb3JkIFJlcHJvZHVjaW5nIzMzNDYxCi1uYWljcyMzMzQ2MTMjTWFnbmV0aWMgYW5kIE9wdGljYWwgUmVjb3JkaW5nIE1lZGlhIE1hbnVmYWN0dXJpbmcjMzM0NjEKLW5haWNzIzMzNSNFbGVjdHJpY2FsIEVxdWlwbWVudCwgQXBwbGlhbmNlLCBhbmQgQ29tcG9uZW50IE1hbnVmYWN0dXJpbmcjMzMKLW5haWNzIzMzNTEjRWxlY3RyaWMgTGlnaHRpbmcgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzM1Ci1uYWljcyMzMzUxMSNFbGVjdHJpYyBMYW1wIEJ1bGIgYW5kIFBhcnQgTWFudWZhY3R1cmluZyMzMzUxCi1uYWljcyMzMzUxMiNMaWdodGluZyBGaXh0dXJlIE1hbnVmYWN0dXJpbmcjMzM1MQotbmFpY3MjMzM1MTIxI1Jlc2lkZW50aWFsIEVsZWN0cmljIExpZ2h0aW5nIEZpeHR1cmUgTWFudWZhY3R1cmluZyMzMzUxMgotbmFpY3MjMzM1MTIyI0NvbW1lcmNpYWwsIEluZHVzdHJpYWwsIGFuZCBJbnN0aXR1dGlvbmFsIEVsZWN0cmljIExpZ2h0aW5nIEZpeHR1cmUgTWFudWZhY3R1cmluZyMzMzUxMgotbmFpY3MjMzM1MTI5I090aGVyIExpZ2h0aW5nIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzNTEyCi1uYWljcyMzMzUyI0hvdXNlaG9sZCBBcHBsaWFuY2UgTWFudWZhY3R1cmluZyMzMzUKLW5haWNzIzMzNTIxI1NtYWxsIEVsZWN0cmljYWwgQXBwbGlhbmNlIE1hbnVmYWN0dXJpbmcjMzM1MgotbmFpY3MjMzM1MjExI0VsZWN0cmljIEhvdXNld2FyZXMgYW5kIEhvdXNlaG9sZCBGYW4gTWFudWZhY3R1cmluZyMzMzUyMQotbmFpY3MjMzM1MjEyI0hvdXNlaG9sZCBWYWN1dW0gQ2xlYW5lciBNYW51ZmFjdHVyaW5nIzMzNTIxCi1uYWljcyMzMzUyMiNNYWpvciBBcHBsaWFuY2UgTWFudWZhY3R1cmluZyMzMzUyCi1uYWljcyMzMzUyMjEjSG91c2Vob2xkIENvb2tpbmcgQXBwbGlhbmNlIE1hbnVmYWN0dXJpbmcjMzM1MjIKLW5haWNzIzMzNTIyMiNIb3VzZWhvbGQgUmVmcmlnZXJhdG9yIGFuZCBIb21lIEZyZWV6ZXIgTWFudWZhY3R1cmluZyMzMzUyMgotbmFpY3MjMzM1MjI0I0hvdXNlaG9sZCBMYXVuZHJ5IEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzNTIyCi1uYWljcyMzMzUyMjgjT3RoZXIgTWFqb3IgSG91c2Vob2xkIEFwcGxpYW5jZSBNYW51ZmFjdHVyaW5nIzMzNTIyCi1uYWljcyMzMzUzI0VsZWN0cmljYWwgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzM1Ci1uYWljcyMzMzUzMSNFbGVjdHJpY2FsIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzNTMKLW5haWNzIzMzNTMxMSNQb3dlciwgRGlzdHJpYnV0aW9uLCBhbmQgU3BlY2lhbHR5IFRyYW5zZm9ybWVyIE1hbnVmYWN0dXJpbmcjMzM1MzEKLW5haWNzIzMzNTMxMiNNb3RvciBhbmQgR2VuZXJhdG9yIE1hbnVmYWN0dXJpbmcjMzM1MzEKLW5haWNzIzMzNTMxMyNTd2l0Y2hnZWFyIGFuZCBTd2l0Y2hib2FyZCBBcHBhcmF0dXMgTWFudWZhY3R1cmluZyMzMzUzMQotbmFpY3MjMzM1MzE0I1JlbGF5IGFuZCBJbmR1c3RyaWFsIENvbnRyb2wgTWFudWZhY3R1cmluZyMzMzUzMQotbmFpY3MjMzM1OSNPdGhlciBFbGVjdHJpY2FsIEVxdWlwbWVudCBhbmQgQ29tcG9uZW50IE1hbnVmYWN0dXJpbmcjMzM1Ci1uYWljcyMzMzU5MSNCYXR0ZXJ5IE1hbnVmYWN0dXJpbmcjMzM1OQotbmFpY3MjMzM1OTExI1N0b3JhZ2UgQmF0dGVyeSBNYW51ZmFjdHVyaW5nIzMzNTkxCi1uYWljcyMzMzU5MTIjUHJpbWFyeSBCYXR0ZXJ5IE1hbnVmYWN0dXJpbmcjMzM1OTEKLW5haWNzIzMzNTkyI0NvbW11bmljYXRpb24gYW5kIEVuZXJneSBXaXJlIGFuZCBDYWJsZSBNYW51ZmFjdHVyaW5nIzMzNTkKLW5haWNzIzMzNTkyMSNGaWJlciBPcHRpYyBDYWJsZSBNYW51ZmFjdHVyaW5nIzMzNTkyCi1uYWljcyMzMzU5MjkjT3RoZXIgQ29tbXVuaWNhdGlvbiBhbmQgRW5lcmd5IFdpcmUgTWFudWZhY3R1cmluZyMzMzU5MgotbmFpY3MjMzM1OTMjV2lyaW5nIERldmljZSBNYW51ZmFjdHVyaW5nIzMzNTkKLW5haWNzIzMzNTkzMSNDdXJyZW50LUNhcnJ5aW5nIFdpcmluZyBEZXZpY2UgTWFudWZhY3R1cmluZyMzMzU5MwotbmFpY3MjMzM1OTMyI05vbmN1cnJlbnQtQ2FycnlpbmcgV2lyaW5nIERldmljZSBNYW51ZmFjdHVyaW5nIzMzNTkzCi1uYWljcyMzMzU5OSNBbGwgT3RoZXIgRWxlY3RyaWNhbCBFcXVpcG1lbnQgYW5kIENvbXBvbmVudCBNYW51ZmFjdHVyaW5nIzMzNTkKLW5haWNzIzMzNTk5MSNDYXJib24gYW5kIEdyYXBoaXRlIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMzU5OQotbmFpY3MjMzM1OTk5I0FsbCBPdGhlciBNaXNjZWxsYW5lb3VzIEVsZWN0cmljYWwgRXF1aXBtZW50IGFuZCBDb21wb25lbnQgTWFudWZhY3R1cmluZyMzMzU5OQotbmFpY3MjMzM2I1RyYW5zcG9ydGF0aW9uIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzCi1uYWljcyMzMzYxI01vdG9yIFZlaGljbGUgTWFudWZhY3R1cmluZyMzMzYKLW5haWNzIzMzNjExI0F1dG9tb2JpbGUgYW5kIExpZ2h0IER1dHkgTW90b3IgVmVoaWNsZSBNYW51ZmFjdHVyaW5nIzMzNjEKLW5haWNzIzMzNjExMSNBdXRvbW9iaWxlIE1hbnVmYWN0dXJpbmcjMzM2MTEKLW5haWNzIzMzNjExMiNMaWdodCBUcnVjayBhbmQgVXRpbGl0eSBWZWhpY2xlIE1hbnVmYWN0dXJpbmcjMzM2MTEKLW5haWNzIzMzNjEyI0hlYXZ5IER1dHkgVHJ1Y2sgTWFudWZhY3R1cmluZyMzMzYxCi1uYWljcyMzMzYyI01vdG9yIFZlaGljbGUgQm9keSBhbmQgVHJhaWxlciBNYW51ZmFjdHVyaW5nIzMzNgotbmFpY3MjMzM2MjEjTW90b3IgVmVoaWNsZSBCb2R5IGFuZCBUcmFpbGVyIE1hbnVmYWN0dXJpbmcjMzM2MgotbmFpY3MjMzM2MjExI01vdG9yIFZlaGljbGUgQm9keSBNYW51ZmFjdHVyaW5nIzMzNjIxCi1uYWljcyMzMzYyMTIjVHJ1Y2sgVHJhaWxlciBNYW51ZmFjdHVyaW5nIzMzNjIxCi1uYWljcyMzMzYyMTMjTW90b3IgSG9tZSBNYW51ZmFjdHVyaW5nIzMzNjIxCi1uYWljcyMzMzYyMTQjVHJhdmVsIFRyYWlsZXIgYW5kIENhbXBlciBNYW51ZmFjdHVyaW5nIzMzNjIxCi1uYWljcyMzMzYzI01vdG9yIFZlaGljbGUgUGFydHMgTWFudWZhY3R1cmluZyMzMzYKLW5haWNzIzMzNjMxI01vdG9yIFZlaGljbGUgR2Fzb2xpbmUgRW5naW5lIGFuZCBFbmdpbmUgUGFydHMgTWFudWZhY3R1cmluZyMzMzYzCi1uYWljcyMzMzYzMTEjQ2FyYnVyZXRvciwgUGlzdG9uLCBQaXN0b24gUmluZywgYW5kIFZhbHZlIE1hbnVmYWN0dXJpbmcjMzM2MzEKLW5haWNzIzMzNjMxMiNHYXNvbGluZSBFbmdpbmUgYW5kIEVuZ2luZSBQYXJ0cyBNYW51ZmFjdHVyaW5nIzMzNjMxCi1uYWljcyMzMzYzMiNNb3RvciBWZWhpY2xlIEVsZWN0cmljYWwgYW5kIEVsZWN0cm9uaWMgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzM2MwotbmFpY3MjMzM2MzIxI1ZlaGljdWxhciBMaWdodGluZyBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzYzMgotbmFpY3MjMzM2MzIyI090aGVyIE1vdG9yIFZlaGljbGUgRWxlY3RyaWNhbCBhbmQgRWxlY3Ryb25pYyBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzYzMgotbmFpY3MjMzM2MzMjTW90b3IgVmVoaWNsZSBTdGVlcmluZyBhbmQgU3VzcGVuc2lvbiBDb21wb25lbnRzIChleGNlcHQgU3ByaW5nKSBNYW51ZmFjdHVyaW5nIzMzNjMKLW5haWNzIzMzNjM0I01vdG9yIFZlaGljbGUgQnJha2UgU3lzdGVtIE1hbnVmYWN0dXJpbmcjMzM2MwotbmFpY3MjMzM2MzUjTW90b3IgVmVoaWNsZSBUcmFuc21pc3Npb24gYW5kIFBvd2VyIFRyYWluIFBhcnRzIE1hbnVmYWN0dXJpbmcjMzM2MwotbmFpY3MjMzM2MzYjTW90b3IgVmVoaWNsZSBTZWF0aW5nIGFuZCBJbnRlcmlvciBUcmltIE1hbnVmYWN0dXJpbmcjMzM2MwotbmFpY3MjMzM2MzcjTW90b3IgVmVoaWNsZSBNZXRhbCBTdGFtcGluZyMzMzYzCi1uYWljcyMzMzYzOSNPdGhlciBNb3RvciBWZWhpY2xlIFBhcnRzIE1hbnVmYWN0dXJpbmcjMzM2MwotbmFpY3MjMzM2MzkxI01vdG9yIFZlaGljbGUgQWlyLUNvbmRpdGlvbmluZyBNYW51ZmFjdHVyaW5nIzMzNjM5Ci1uYWljcyMzMzYzOTkjQWxsIE90aGVyIE1vdG9yIFZlaGljbGUgUGFydHMgTWFudWZhY3R1cmluZyMzMzYzOQotbmFpY3MjMzM2NCNBZXJvc3BhY2UgUHJvZHVjdCBhbmQgUGFydHMgTWFudWZhY3R1cmluZyMzMzYKLW5haWNzIzMzNjQxI0Flcm9zcGFjZSBQcm9kdWN0IGFuZCBQYXJ0cyBNYW51ZmFjdHVyaW5nIzMzNjQKLW5haWNzIzMzNjQxMSNBaXJjcmFmdCBNYW51ZmFjdHVyaW5nIzMzNjQxCi1uYWljcyMzMzY0MTIjQWlyY3JhZnQgRW5naW5lIGFuZCBFbmdpbmUgUGFydHMgTWFudWZhY3R1cmluZyMzMzY0MQotbmFpY3MjMzM2NDEzI090aGVyIEFpcmNyYWZ0IFBhcnRzIGFuZCBBdXhpbGlhcnkgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzM2NDEKLW5haWNzIzMzNjQxNCNHdWlkZWQgTWlzc2lsZSBhbmQgU3BhY2UgVmVoaWNsZSBNYW51ZmFjdHVyaW5nIzMzNjQxCi1uYWljcyMzMzY0MTUjR3VpZGVkIE1pc3NpbGUgYW5kIFNwYWNlIFZlaGljbGUgUHJvcHVsc2lvbiBVbml0IGFuZCBQcm9wdWxzaW9uIFVuaXQgUGFydHMgTWFudWZhY3R1cmluZyMzMzY0MQotbmFpY3MjMzM2NDE5I090aGVyIEd1aWRlZCBNaXNzaWxlIGFuZCBTcGFjZSBWZWhpY2xlIFBhcnRzIGFuZCBBdXhpbGlhcnkgRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzM2NDEKLW5haWNzIzMzNjUjUmFpbHJvYWQgUm9sbGluZyBTdG9jayBNYW51ZmFjdHVyaW5nIzMzNgotbmFpY3MjMzM2NTEjUmFpbHJvYWQgUm9sbGluZyBTdG9jayBNYW51ZmFjdHVyaW5nIzMzNjUKLW5haWNzIzMzNjYjU2hpcCBhbmQgQm9hdCBCdWlsZGluZyMzMzYKLW5haWNzIzMzNjYxI1NoaXAgYW5kIEJvYXQgQnVpbGRpbmcjMzM2NgotbmFpY3MjMzM2NjExI1NoaXAgQnVpbGRpbmcgYW5kIFJlcGFpcmluZyMzMzY2MQotbmFpY3MjMzM2NjEyI0JvYXQgQnVpbGRpbmcjMzM2NjEKLW5haWNzIzMzNjkjT3RoZXIgVHJhbnNwb3J0YXRpb24gRXF1aXBtZW50IE1hbnVmYWN0dXJpbmcjMzM2Ci1uYWljcyMzMzY5OSNPdGhlciBUcmFuc3BvcnRhdGlvbiBFcXVpcG1lbnQgTWFudWZhY3R1cmluZyMzMzY5Ci1uYWljcyMzMzY5OTEjTW90b3JjeWNsZSwgQmljeWNsZSwgYW5kIFBhcnRzIE1hbnVmYWN0dXJpbmcjMzM2OTkKLW5haWNzIzMzNjk5MiNNaWxpdGFyeSBBcm1vcmVkIFZlaGljbGUsIFRhbmssIGFuZCBUYW5rIENvbXBvbmVudCBNYW51ZmFjdHVyaW5nIzMzNjk5Ci1uYWljcyMzMzY5OTkjQWxsIE90aGVyIFRyYW5zcG9ydGF0aW9uIEVxdWlwbWVudCBNYW51ZmFjdHVyaW5nIzMzNjk5Ci1uYWljcyMzMzcjRnVybml0dXJlIGFuZCBSZWxhdGVkIFByb2R1Y3QgTWFudWZhY3R1cmluZyMzMwotbmFpY3MjMzM3MSNIb3VzZWhvbGQgYW5kIEluc3RpdHV0aW9uYWwgRnVybml0dXJlIGFuZCBLaXRjaGVuIENhYmluZXQgTWFudWZhY3R1cmluZyMzMzcKLW5haWNzIzMzNzExI1dvb2QgS2l0Y2hlbiBDYWJpbmV0IGFuZCBDb3VudGVydG9wIE1hbnVmYWN0dXJpbmcjMzM3MQotbmFpY3MjMzM3MTIjSG91c2Vob2xkIGFuZCBJbnN0aXR1dGlvbmFsIEZ1cm5pdHVyZSBNYW51ZmFjdHVyaW5nIzMzNzEKLW5haWNzIzMzNzEyMSNVcGhvbHN0ZXJlZCBIb3VzZWhvbGQgRnVybml0dXJlIE1hbnVmYWN0dXJpbmcjMzM3MTIKLW5haWNzIzMzNzEyMiNOb251cGhvbHN0ZXJlZCBXb29kIEhvdXNlaG9sZCBGdXJuaXR1cmUgTWFudWZhY3R1cmluZyMzMzcxMgotbmFpY3MjMzM3MTI0I01ldGFsIEhvdXNlaG9sZCBGdXJuaXR1cmUgTWFudWZhY3R1cmluZyMzMzcxMgotbmFpY3MjMzM3MTI1I0hvdXNlaG9sZCBGdXJuaXR1cmUgKGV4Y2VwdCBXb29kIGFuZCBNZXRhbCkgTWFudWZhY3R1cmluZyMzMzcxMgotbmFpY3MjMzM3MTI3I0luc3RpdHV0aW9uYWwgRnVybml0dXJlIE1hbnVmYWN0dXJpbmcjMzM3MTIKLW5haWNzIzMzNzEyOSNXb29kIFRlbGV2aXNpb24sIFJhZGlvLCBhbmQgU2V3aW5nIE1hY2hpbmUgQ2FiaW5ldCBNYW51ZmFjdHVyaW5nIzMzNzEyCi1uYWljcyMzMzcyI09mZmljZSBGdXJuaXR1cmUgKGluY2x1ZGluZyBGaXh0dXJlcykgTWFudWZhY3R1cmluZyMzMzcKLW5haWNzIzMzNzIxI09mZmljZSBGdXJuaXR1cmUgKGluY2x1ZGluZyBGaXh0dXJlcykgTWFudWZhY3R1cmluZyMzMzcyCi1uYWljcyMzMzcyMTEjV29vZCBPZmZpY2UgRnVybml0dXJlIE1hbnVmYWN0dXJpbmcjMzM3MjEKLW5haWNzIzMzNzIxMiNDdXN0b20gQXJjaGl0ZWN0dXJhbCBXb29kd29yayBhbmQgTWlsbHdvcmsgTWFudWZhY3R1cmluZyMzMzcyMQotbmFpY3MjMzM3MjE0I09mZmljZSBGdXJuaXR1cmUgKGV4Y2VwdCBXb29kKSBNYW51ZmFjdHVyaW5nIzMzNzIxCi1uYWljcyMzMzcyMTUjU2hvd2Nhc2UsIFBhcnRpdGlvbiwgU2hlbHZpbmcsIGFuZCBMb2NrZXIgTWFudWZhY3R1cmluZyMzMzcyMQotbmFpY3MjMzM3OSNPdGhlciBGdXJuaXR1cmUgUmVsYXRlZCBQcm9kdWN0IE1hbnVmYWN0dXJpbmcjMzM3Ci1uYWljcyMzMzc5MSNNYXR0cmVzcyBNYW51ZmFjdHVyaW5nIzMzNzkKLW5haWNzIzMzNzkyI0JsaW5kIGFuZCBTaGFkZSBNYW51ZmFjdHVyaW5nIzMzNzkKLW5haWNzIzMzOSNNaXNjZWxsYW5lb3VzIE1hbnVmYWN0dXJpbmcjMzMKLW5haWNzIzMzOTEjTWVkaWNhbCBFcXVpcG1lbnQgYW5kIFN1cHBsaWVzIE1hbnVmYWN0dXJpbmcjMzM5Ci1uYWljcyMzMzkxMSNNZWRpY2FsIEVxdWlwbWVudCBhbmQgU3VwcGxpZXMgTWFudWZhY3R1cmluZyMzMzkxCi1uYWljcyMzMzkxMTEjTGFib3JhdG9yeSBBcHBhcmF0dXMgYW5kIEZ1cm5pdHVyZSBNYW51ZmFjdHVyaW5nIzMzOTExCi1uYWljcyMzMzkxMTIjU3VyZ2ljYWwgYW5kIE1lZGljYWwgSW5zdHJ1bWVudCBNYW51ZmFjdHVyaW5nIzMzOTExCi1uYWljcyMzMzkxMTMjU3VyZ2ljYWwgQXBwbGlhbmNlIGFuZCBTdXBwbGllcyBNYW51ZmFjdHVyaW5nIzMzOTExCi1uYWljcyMzMzkxMTQjRGVudGFsIEVxdWlwbWVudCBhbmQgU3VwcGxpZXMgTWFudWZhY3R1cmluZyMzMzkxMQotbmFpY3MjMzM5MTE1I09waHRoYWxtaWMgR29vZHMgTWFudWZhY3R1cmluZyMzMzkxMQotbmFpY3MjMzM5MTE2I0RlbnRhbCBMYWJvcmF0b3JpZXMjMzM5MTEKLW5haWNzIzMzOTkjT3RoZXIgTWlzY2VsbGFuZW91cyBNYW51ZmFjdHVyaW5nIzMzOQotbmFpY3MjMzM5OTEjSmV3ZWxyeSBhbmQgU2lsdmVyd2FyZSBNYW51ZmFjdHVyaW5nIzMzOTkKLW5haWNzIzMzOTkxMSNKZXdlbHJ5IChleGNlcHQgQ29zdHVtZSkgTWFudWZhY3R1cmluZyMzMzk5MQotbmFpY3MjMzM5OTEyI1NpbHZlcndhcmUgYW5kIEhvbGxvd3dhcmUgTWFudWZhY3R1cmluZyMzMzk5MQotbmFpY3MjMzM5OTEzI0pld2VsZXJzJyBNYXRlcmlhbCBhbmQgTGFwaWRhcnkgV29yayBNYW51ZmFjdHVyaW5nIzMzOTkxCi1uYWljcyMzMzk5MTQjQ29zdHVtZSBKZXdlbHJ5IGFuZCBOb3ZlbHR5IE1hbnVmYWN0dXJpbmcjMzM5OTEKLW5haWNzIzMzOTkyI1Nwb3J0aW5nIGFuZCBBdGhsZXRpYyBHb29kcyBNYW51ZmFjdHVyaW5nIzMzOTkKLW5haWNzIzMzOTkzI0RvbGwsIFRveSwgYW5kIEdhbWUgTWFudWZhY3R1cmluZyMzMzk5Ci1uYWljcyMzMzk5MzEjRG9sbCBhbmQgU3R1ZmZlZCBUb3kgTWFudWZhY3R1cmluZyMzMzk5MwotbmFpY3MjMzM5OTMyI0dhbWUsIFRveSwgYW5kIENoaWxkcmVuJ3MgVmVoaWNsZSBNYW51ZmFjdHVyaW5nIzMzOTkzCi1uYWljcyMzMzk5NCNPZmZpY2UgU3VwcGxpZXMgKGV4Y2VwdCBQYXBlcikgTWFudWZhY3R1cmluZyMzMzk5Ci1uYWljcyMzMzk5NDEjUGVuIGFuZCBNZWNoYW5pY2FsIFBlbmNpbCBNYW51ZmFjdHVyaW5nIzMzOTk0Ci1uYWljcyMzMzk5NDIjTGVhZCBQZW5jaWwgYW5kIEFydCBHb29kIE1hbnVmYWN0dXJpbmcjMzM5OTQKLW5haWNzIzMzOTk0MyNNYXJraW5nIERldmljZSBNYW51ZmFjdHVyaW5nIzMzOTk0Ci1uYWljcyMzMzk5NDQjQ2FyYm9uIFBhcGVyIGFuZCBJbmtlZCBSaWJib24gTWFudWZhY3R1cmluZyMzMzk5NAotbmFpY3MjMzM5OTUjU2lnbiBNYW51ZmFjdHVyaW5nIzMzOTkKLW5haWNzIzMzOTk5I0FsbCBPdGhlciBNaXNjZWxsYW5lb3VzIE1hbnVmYWN0dXJpbmcjMzM5OQotbmFpY3MjMzM5OTkxI0dhc2tldCwgUGFja2luZywgYW5kIFNlYWxpbmcgRGV2aWNlIE1hbnVmYWN0dXJpbmcjMzM5OTkKLW5haWNzIzMzOTk5MiNNdXNpY2FsIEluc3RydW1lbnQgTWFudWZhY3R1cmluZyMzMzk5OQotbmFpY3MjMzM5OTkzI0Zhc3RlbmVyLCBCdXR0b24sIE5lZWRsZSwgYW5kIFBpbiBNYW51ZmFjdHVyaW5nIzMzOTk5Ci1uYWljcyMzMzk5OTQjQnJvb20sIEJydXNoLCBhbmQgTW9wIE1hbnVmYWN0dXJpbmcjMzM5OTkKLW5haWNzIzMzOTk5NSNCdXJpYWwgQ2Fza2V0IE1hbnVmYWN0dXJpbmcjMzM5OTkKLW5haWNzIzMzOTk5OSNBbGwgT3RoZXIgTWlzY2VsbGFuZW91cyBNYW51ZmFjdHVyaW5nIzMzOTk5Ci1uYWljcyM0MiNXaG9sZXNhbGUgVHJhZGUjNDIKLW5haWNzIzQyMSNXaG9sZXNhbGUgVHJhZGUsIER1cmFibGUgR29vZHMjNDIKLW5haWNzIzQyMTEjTW90b3IgVmVoaWNsZSBhbmQgTW90b3IgVmVoaWNsZSBQYXJ0cyBhbmQgU3VwcGxpZXMgV2hvbGVzYWxlcnMjNDIxCi1uYWljcyM0MjExMSNBdXRvbW9iaWxlIGFuZCBPdGhlciBNb3RvciBWZWhpY2xlIFdob2xlc2FsZXJzIzQyMTEKLW5haWNzIzQyMTEyI01vdG9yIFZlaGljbGUgU3VwcGxpZXMgYW5kIE5ldyBQYXJ0cyBXaG9sZXNhbGVycyM0MjExCi1uYWljcyM0MjExMyNUaXJlIGFuZCBUdWJlIFdob2xlc2FsZXJzIzQyMTEKLW5haWNzIzQyMTE0I01vdG9yIFZlaGljbGUgUGFydHMgKFVzZWQpIFdob2xlc2FsZXJzIzQyMTEKLW5haWNzIzQyMTIjRnVybml0dXJlIGFuZCBIb21lIEZ1cm5pc2hpbmcgV2hvbGVzYWxlcnMjNDIxCi1uYWljcyM0MjEyMSNGdXJuaXR1cmUgV2hvbGVzYWxlcnMjNDIxMgotbmFpY3MjNDIxMjIjSG9tZSBGdXJuaXNoaW5nIFdob2xlc2FsZXJzIzQyMTIKLW5haWNzIzQyMTMjTHVtYmVyIGFuZCBPdGhlciBDb25zdHJ1Y3Rpb24gTWF0ZXJpYWxzIFdob2xlc2FsZXJzIzQyMQotbmFpY3MjNDIxMzEjTHVtYmVyLCBQbHl3b29kLCBNaWxsd29yaywgYW5kIFdvb2QgUGFuZWwgV2hvbGVzYWxlcnMjNDIxMwotbmFpY3MjNDIxMzIjQnJpY2ssIFN0b25lLCBhbmQgUmVsYXRlZCBDb25zdHJ1Y3Rpb24gTWF0ZXJpYWwgV2hvbGVzYWxlcnMjNDIxMwotbmFpY3MjNDIxMzMjUm9vZmluZywgU2lkaW5nLCBhbmQgSW5zdWxhdGlvbiBNYXRlcmlhbCBXaG9sZXNhbGVycyM0MjEzCi1uYWljcyM0MjEzOSNPdGhlciBDb25zdHJ1Y3Rpb24gTWF0ZXJpYWwgV2hvbGVzYWxlcnMjNDIxMwotbmFpY3MjNDIxNCNQcm9mZXNzaW9uYWwgYW5kIENvbW1lcmNpYWwgRXF1aXBtZW50IGFuZCBTdXBwbGllcyBXaG9sZXNhbGVycyM0MjEKLW5haWNzIzQyMTQxI1Bob3RvZ3JhcGhpYyBFcXVpcG1lbnQgYW5kIFN1cHBsaWVzIFdob2xlc2FsZXJzIzQyMTQKLW5haWNzIzQyMTQyI09mZmljZSBFcXVpcG1lbnQgV2hvbGVzYWxlcnMjNDIxNAotbmFpY3MjNDIxNDMjQ29tcHV0ZXIgYW5kIENvbXB1dGVyIFBlcmlwaGVyYWwgRXF1aXBtZW50IGFuZCBTb2Z0d2FyZSBXaG9sZXNhbGVycyM0MjE0Ci1uYWljcyM0MjE0NCNPdGhlciBDb21tZXJjaWFsIEVxdWlwbWVudCBXaG9sZXNhbGVycyM0MjE0Ci1uYWljcyM0MjE0NSNNZWRpY2FsLCBEZW50YWwsIGFuZCBIb3NwaXRhbCBFcXVpcG1lbnQgYW5kIFN1cHBsaWVzIFdob2xlc2FsZXJzIzQyMTQKLW5haWNzIzQyMTQ2I09waHRoYWxtaWMgR29vZHMgV2hvbGVzYWxlcnMjNDIxNAotbmFpY3MjNDIxNDkjT3RoZXIgUHJvZmVzc2lvbmFsIEVxdWlwbWVudCBhbmQgU3VwcGxpZXMgV2hvbGVzYWxlcnMjNDIxNAotbmFpY3MjNDIxNSNNZXRhbCBhbmQgTWluZXJhbCAoZXhjZXB0IFBldHJvbGV1bSkgV2hvbGVzYWxlcnMjNDIxCi1uYWljcyM0MjE1MSNNZXRhbCBTZXJ2aWNlIENlbnRlcnMgYW5kIE9mZmljZXMjNDIxNQotbmFpY3MjNDIxNTIjQ29hbCBhbmQgT3RoZXIgTWluZXJhbCBhbmQgT3JlIFdob2xlc2FsZXJzIzQyMTUKLW5haWNzIzQyMTYjRWxlY3RyaWNhbCBHb29kcyBXaG9sZXNhbGVycyM0MjEKLW5haWNzIzQyMTYxI0VsZWN0cmljYWwgQXBwYXJhdHVzIGFuZCBFcXVpcG1lbnQsIFdpcmluZyBTdXBwbGllcywgYW5kIENvbnN0cnVjdGlvbiBNYXRlcmlhbCBXaG9sZXNhbGVycyM0MjE2Ci1uYWljcyM0MjE2MiNFbGVjdHJpY2FsIEFwcGxpYW5jZSwgVGVsZXZpc2lvbiwgYW5kIFJhZGlvIFNldCBXaG9sZXNhbGVycyM0MjE2Ci1uYWljcyM0MjE2OSNPdGhlciBFbGVjdHJvbmljIFBhcnRzIGFuZCBFcXVpcG1lbnQgV2hvbGVzYWxlcnMjNDIxNgotbmFpY3MjNDIxNyNIYXJkd2FyZSwgYW5kIFBsdW1iaW5nIGFuZCBIZWF0aW5nIEVxdWlwbWVudCBhbmQgU3VwcGxpZXMgV2hvbGVzYWxlcnMjNDIxCi1uYWljcyM0MjE3MSNIYXJkd2FyZSBXaG9sZXNhbGVycyM0MjE3Ci1uYWljcyM0MjE3MiNQbHVtYmluZyBhbmQgSGVhdGluZyBFcXVpcG1lbnQgYW5kIFN1cHBsaWVzIChIeWRyb25pY3MpIFdob2xlc2FsZXJzIzQyMTcKLW5haWNzIzQyMTczI1dhcm0gQWlyIEhlYXRpbmcgYW5kIEFpci1Db25kaXRpb25pbmcgRXF1aXBtZW50IGFuZCBTdXBwbGllcyBXaG9sZXNhbGVycyM0MjE3Ci1uYWljcyM0MjE3NCNSZWZyaWdlcmF0aW9uIEVxdWlwbWVudCBhbmQgU3VwcGxpZXMgV2hvbGVzYWxlcnMjNDIxNwotbmFpY3MjNDIxOCNNYWNoaW5lcnksIEVxdWlwbWVudCwgYW5kIFN1cHBsaWVzIFdob2xlc2FsZXJzIzQyMQotbmFpY3MjNDIxODEjQ29uc3RydWN0aW9uIGFuZCBNaW5pbmcgKGV4Y2VwdCBPaWwgV2VsbCkgTWFjaGluZXJ5IGFuZCBFcXVpcG1lbnQgV2hvbGVzYWxlcnMjNDIxOAotbmFpY3MjNDIxODIjRmFybSBhbmQgR2FyZGVuIE1hY2hpbmVyeSBhbmQgRXF1aXBtZW50IFdob2xlc2FsZXJzIzQyMTgKLW5haWNzIzQyMTgzI0luZHVzdHJpYWwgTWFjaGluZXJ5IGFuZCBFcXVpcG1lbnQgV2hvbGVzYWxlcnMjNDIxOAotbmFpY3MjNDIxODQjSW5kdXN0cmlhbCBTdXBwbGllcyBXaG9sZXNhbGVycyM0MjE4Ci1uYWljcyM0MjE4NSNTZXJ2aWNlIEVzdGFibGlzaG1lbnQgRXF1aXBtZW50IGFuZCBTdXBwbGllcyBXaG9sZXNhbGVycyM0MjE4Ci1uYWljcyM0MjE4NiNUcmFuc3BvcnRhdGlvbiBFcXVpcG1lbnQgYW5kIFN1cHBsaWVzIChleGNlcHQgTW90b3IgVmVoaWNsZSkgV2hvbGVzYWxlcnMjNDIxOAotbmFpY3MjNDIxOSNNaXNjZWxsYW5lb3VzIER1cmFibGUgR29vZHMgV2hvbGVzYWxlcnMjNDIxCi1uYWljcyM0MjE5MSNTcG9ydGluZyBhbmQgUmVjcmVhdGlvbmFsIEdvb2RzIGFuZCBTdXBwbGllcyBXaG9sZXNhbGVycyM0MjE5Ci1uYWljcyM0MjE5MiNUb3kgYW5kIEhvYmJ5IEdvb2RzIGFuZCBTdXBwbGllcyBXaG9sZXNhbGVycyM0MjE5Ci1uYWljcyM0MjE5MyNSZWN5Y2xhYmxlIE1hdGVyaWFsIFdob2xlc2FsZXJzIzQyMTkKLW5haWNzIzQyMTk0I0pld2VscnksIFdhdGNoLCBQcmVjaW91cyBTdG9uZSwgYW5kIFByZWNpb3VzIE1ldGFsIFdob2xlc2FsZXJzIzQyMTkKLW5haWNzIzQyMTk5I090aGVyIE1pc2NlbGxhbmVvdXMgRHVyYWJsZSBHb29kcyBXaG9sZXNhbGVycyM0MjE5Ci1uYWljcyM0MjIjV2hvbGVzYWxlIFRyYWRlLCBOb25kdXJhYmxlIEdvb2RzIzQyCi1uYWljcyM0MjIxI1BhcGVyIGFuZCBQYXBlciBQcm9kdWN0IFdob2xlc2FsZXJzIzQyMgotbmFpY3MjNDIyMTEjUHJpbnRpbmcgYW5kIFdyaXRpbmcgUGFwZXIgV2hvbGVzYWxlcnMjNDIyMQotbmFpY3MjNDIyMTIjU3RhdGlvbmVyeSBhbmQgT2ZmaWNlIFN1cHBsaWVzIFdob2xlc2FsZXJzIzQyMjEKLW5haWNzIzQyMjEzI0luZHVzdHJpYWwgYW5kIFBlcnNvbmFsIFNlcnZpY2UgUGFwZXIgV2hvbGVzYWxlcnMjNDIyMQotbmFpY3MjNDIyMiNEcnVncyBhbmQgRHJ1Z2dpc3RzJyBTdW5kcmllcyBXaG9sZXNhbGVycyM0MjIKLW5haWNzIzQyMjIxI0RydWdzIGFuZCBEcnVnZ2lzdHMnIFN1bmRyaWVzIFdob2xlc2FsZXJzIzQyMjIKLW5haWNzIzQyMjMjQXBwYXJlbCwgUGllY2UgR29vZHMsIGFuZCBOb3Rpb25zIFdob2xlc2FsZXJzIzQyMgotbmFpY3MjNDIyMzEjUGllY2UgR29vZHMsIE5vdGlvbnMsIGFuZCBPdGhlciBEcnkgR29vZHMgV2hvbGVzYWxlcnMjNDIyMwotbmFpY3MjNDIyMzIjTWVuJ3MgYW5kIEJveXMnIENsb3RoaW5nIGFuZCBGdXJuaXNoaW5ncyBXaG9sZXNhbGVycyM0MjIzCi1uYWljcyM0MjIzMyNXb21lbidzLCBDaGlsZHJlbidzLCBhbmQgSW5mYW50cycgQ2xvdGhpbmcgYW5kIEFjY2Vzc29yaWVzIFdob2xlc2FsZXJzIzQyMjMKLW5haWNzIzQyMjM0I0Zvb3R3ZWFyIFdob2xlc2FsZXJzIzQyMjMKLW5haWNzIzQyMjQjR3JvY2VyeSBhbmQgUmVsYXRlZCBQcm9kdWN0IFdob2xlc2FsZXJzIzQyMgotbmFpY3MjNDIyNDEjR2VuZXJhbCBMaW5lIEdyb2NlcnkgV2hvbGVzYWxlcnMjNDIyNAotbmFpY3MjNDIyNDIjUGFja2FnZWQgRnJvemVuIEZvb2QgV2hvbGVzYWxlcnMjNDIyNAotbmFpY3MjNDIyNDMjRGFpcnkgUHJvZHVjdCAoZXhjZXB0IERyaWVkIG9yIENhbm5lZCkgV2hvbGVzYWxlcnMjNDIyNAotbmFpY3MjNDIyNDQjUG91bHRyeSBhbmQgUG91bHRyeSBQcm9kdWN0IFdob2xlc2FsZXJzIzQyMjQKLW5haWNzIzQyMjQ1I0NvbmZlY3Rpb25lcnkgV2hvbGVzYWxlcnMjNDIyNAotbmFpY3MjNDIyNDYjRmlzaCBhbmQgU2VhZm9vZCBXaG9sZXNhbGVycyM0MjI0Ci1uYWljcyM0MjI0NyNNZWF0IGFuZCBNZWF0IFByb2R1Y3QgV2hvbGVzYWxlcnMjNDIyNAotbmFpY3MjNDIyNDgjRnJlc2ggRnJ1aXQgYW5kIFZlZ2V0YWJsZSBXaG9sZXNhbGVycyM0MjI0Ci1uYWljcyM0MjI0OSNPdGhlciBHcm9jZXJ5IGFuZCBSZWxhdGVkIFByb2R1Y3RzIFdob2xlc2FsZXJzIzQyMjQKLW5haWNzIzQyMjUjRmFybSBQcm9kdWN0IFJhdyBNYXRlcmlhbCBXaG9sZXNhbGVycyM0MjIKLW5haWNzIzQyMjUxI0dyYWluIGFuZCBGaWVsZCBCZWFuIFdob2xlc2FsZXJzIzQyMjUKLW5haWNzIzQyMjUyI0xpdmVzdG9jayBXaG9sZXNhbGVycyM0MjI1Ci1uYWljcyM0MjI1OSNPdGhlciBGYXJtIFByb2R1Y3QgUmF3IE1hdGVyaWFsIFdob2xlc2FsZXJzIzQyMjUKLW5haWNzIzQyMjYjQ2hlbWljYWwgYW5kIEFsbGllZCBQcm9kdWN0cyBXaG9sZXNhbGVycyM0MjIKLW5haWNzIzQyMjYxI1BsYXN0aWNzIE1hdGVyaWFscyBhbmQgQmFzaWMgRm9ybXMgYW5kIFNoYXBlcyBXaG9sZXNhbGVycyM0MjI2Ci1uYWljcyM0MjI2OSNPdGhlciBDaGVtaWNhbCBhbmQgQWxsaWVkIFByb2R1Y3RzIFdob2xlc2FsZXJzIzQyMjYKLW5haWNzIzQyMjcjUGV0cm9sZXVtIGFuZCBQZXRyb2xldW0gUHJvZHVjdHMgV2hvbGVzYWxlcnMjNDIyCi1uYWljcyM0MjI3MSNQZXRyb2xldW0gQnVsayBTdGF0aW9ucyBhbmQgVGVybWluYWxzIzQyMjcKLW5haWNzIzQyMjcyI1BldHJvbGV1bSBhbmQgUGV0cm9sZXVtIFByb2R1Y3RzIFdob2xlc2FsZXJzIChleGNlcHQgQnVsayBTdGF0aW9ucyBhbmQgVGVybWluYWxzKSM0MjI3Ci1uYWljcyM0MjI4I0JlZXIsIFdpbmUsIGFuZCBEaXN0aWxsZWQgQWxjb2hvbGljIEJldmVyYWdlIFdob2xlc2FsZXJzIzQyMgotbmFpY3MjNDIyODEjQmVlciBhbmQgQWxlIFdob2xlc2FsZXJzIzQyMjgKLW5haWNzIzQyMjgyI1dpbmUgYW5kIERpc3RpbGxlZCBBbGNvaG9saWMgQmV2ZXJhZ2UgV2hvbGVzYWxlcnMjNDIyOAotbmFpY3MjNDIyOSNNaXNjZWxsYW5lb3VzIE5vbmR1cmFibGUgR29vZHMgV2hvbGVzYWxlcnMjNDIyCi1uYWljcyM0MjI5MSNGYXJtIFN1cHBsaWVzIFdob2xlc2FsZXJzIzQyMjkKLW5haWNzIzQyMjkyI0Jvb2ssIFBlcmlvZGljYWwsIGFuZCBOZXdzcGFwZXIgV2hvbGVzYWxlcnMjNDIyOQotbmFpY3MjNDIyOTMjRmxvd2VyLCBOdXJzZXJ5IFN0b2NrLCBhbmQgRmxvcmlzdHMnIFN1cHBsaWVzIFdob2xlc2FsZXJzIzQyMjkKLW5haWNzIzQyMjk0I1RvYmFjY28gYW5kIFRvYmFjY28gUHJvZHVjdCBXaG9sZXNhbGVycyM0MjI5Ci1uYWljcyM0MjI5NSNQYWludCwgVmFybmlzaCwgYW5kIFN1cHBsaWVzIFdob2xlc2FsZXJzIzQyMjkKLW5haWNzIzQyMjk5I090aGVyIE1pc2NlbGxhbmVvdXMgTm9uZHVyYWJsZSBHb29kcyBXaG9sZXNhbGVycyM0MjI5Ci1uYWljcyM0NCNSZXRhaWwgVHJhZGUjNDQKLW5haWNzIzQ0MSNNb3RvciBWZWhpY2xlIGFuZCBQYXJ0cyBEZWFsZXJzIzQ0Ci1uYWljcyM0NDExI0F1dG9tb2JpbGUgRGVhbGVycyM0NDEKLW5haWNzIzQ0MTExI05ldyBDYXIgRGVhbGVycyM0NDExCi1uYWljcyM0NDExMiNVc2VkIENhciBEZWFsZXJzIzQ0MTEKLW5haWNzIzQ0MTIjT3RoZXIgTW90b3IgVmVoaWNsZSBEZWFsZXJzIzQ0MQotbmFpY3MjNDQxMjEjUmVjcmVhdGlvbmFsIFZlaGljbGUgRGVhbGVycyM0NDEyCi1uYWljcyM0NDEyMiNNb3RvcmN5Y2xlLCBCb2F0LCBhbmQgT3RoZXIgTW90b3IgVmVoaWNsZSBEZWFsZXJzIzQ0MTIKLW5haWNzIzQ0MTIyMSNNb3RvcmN5Y2xlIERlYWxlcnMjNDQxMjIKLW5haWNzIzQ0MTIyMiNCb2F0IERlYWxlcnMjNDQxMjIKLW5haWNzIzQ0MTIyOSNBbGwgT3RoZXIgTW90b3IgVmVoaWNsZSBEZWFsZXJzIzQ0MTIyCi1uYWljcyM0NDEzI0F1dG9tb3RpdmUgUGFydHMsIEFjY2Vzc29yaWVzLCBhbmQgVGlyZSBTdG9yZXMjNDQxCi1uYWljcyM0NDEzMSNBdXRvbW90aXZlIFBhcnRzIGFuZCBBY2Nlc3NvcmllcyBTdG9yZXMjNDQxMwotbmFpY3MjNDQxMzIjVGlyZSBEZWFsZXJzIzQ0MTMKLW5haWNzIzQ0MiNGdXJuaXR1cmUgYW5kIEhvbWUgRnVybmlzaGluZ3MgU3RvcmVzIzQ0Ci1uYWljcyM0NDIxI0Z1cm5pdHVyZSBTdG9yZXMjNDQyCi1uYWljcyM0NDIxMSNGdXJuaXR1cmUgU3RvcmVzIzQ0MjEKLW5haWNzIzQ0MjIjSG9tZSBGdXJuaXNoaW5ncyBTdG9yZXMjNDQyCi1uYWljcyM0NDIyMSNGbG9vciBDb3ZlcmluZyBTdG9yZXMjNDQyMgotbmFpY3MjNDQyMjkjT3RoZXIgSG9tZSBGdXJuaXNoaW5ncyBTdG9yZXMjNDQyMgotbmFpY3MjNDQyMjkxI1dpbmRvdyBUcmVhdG1lbnQgU3RvcmVzIzQ0MjI5Ci1uYWljcyM0NDIyOTkjQWxsIE90aGVyIEhvbWUgRnVybmlzaGluZ3MgU3RvcmVzIzQ0MjI5Ci1uYWljcyM0NDMjRWxlY3Ryb25pY3MgYW5kIEFwcGxpYW5jZSBTdG9yZXMjNDQKLW5haWNzIzQ0MzEjRWxlY3Ryb25pY3MgYW5kIEFwcGxpYW5jZSBTdG9yZXMjNDQzCi1uYWljcyM0NDMxMSNBcHBsaWFuY2UsIFRlbGV2aXNpb24sIGFuZCBPdGhlciBFbGVjdHJvbmljcyBTdG9yZXMjNDQzMQotbmFpY3MjNDQzMTExI0hvdXNlaG9sZCBBcHBsaWFuY2UgU3RvcmVzIzQ0MzExCi1uYWljcyM0NDMxMTIjUmFkaW8sIFRlbGV2aXNpb24sIGFuZCBPdGhlciBFbGVjdHJvbmljcyBTdG9yZXMjNDQzMTEKLW5haWNzIzQ0MzEyI0NvbXB1dGVyIGFuZCBTb2Z0d2FyZSBTdG9yZXMjNDQzMQotbmFpY3MjNDQzMTMjQ2FtZXJhIGFuZCBQaG90b2dyYXBoaWMgU3VwcGxpZXMgU3RvcmVzIzQ0MzEKLW5haWNzIzQ0NCNCdWlsZGluZyBNYXRlcmlhbCBhbmQgR2FyZGVuIEVxdWlwbWVudCBhbmQgU3VwcGxpZXMgRGVhbGVycyM0NAotbmFpY3MjNDQ0MSNCdWlsZGluZyBNYXRlcmlhbCBhbmQgU3VwcGxpZXMgRGVhbGVycyM0NDQKLW5haWNzIzQ0NDExI0hvbWUgQ2VudGVycyM0NDQxCi1uYWljcyM0NDQxMiNQYWludCBhbmQgV2FsbHBhcGVyIFN0b3JlcyM0NDQxCi1uYWljcyM0NDQxMyNIYXJkd2FyZSBTdG9yZXMjNDQ0MQotbmFpY3MjNDQ0MTkjT3RoZXIgQnVpbGRpbmcgTWF0ZXJpYWwgRGVhbGVycyM0NDQxCi1uYWljcyM0NDQyI0xhd24gYW5kIEdhcmRlbiBFcXVpcG1lbnQgYW5kIFN1cHBsaWVzIFN0b3JlcyM0NDQKLW5haWNzIzQ0NDIxI091dGRvb3IgUG93ZXIgRXF1aXBtZW50IFN0b3JlcyM0NDQyCi1uYWljcyM0NDQyMiNOdXJzZXJ5IGFuZCBHYXJkZW4gQ2VudGVycyM0NDQyCi1uYWljcyM0NDUjRm9vZCBhbmQgQmV2ZXJhZ2UgU3RvcmVzIzQ0Ci1uYWljcyM0NDUxI0dyb2NlcnkgU3RvcmVzIzQ0NQotbmFpY3MjNDQ1MTEjU3VwZXJtYXJrZXRzIGFuZCBPdGhlciBHcm9jZXJ5IChleGNlcHQgQ29udmVuaWVuY2UpIFN0b3JlcyM0NDUxCi1uYWljcyM0NDUxMiNDb252ZW5pZW5jZSBTdG9yZXMjNDQ1MQotbmFpY3MjNDQ1MiNTcGVjaWFsdHkgRm9vZCBTdG9yZXMjNDQ1Ci1uYWljcyM0NDUyMSNNZWF0IE1hcmtldHMjNDQ1MgotbmFpY3MjNDQ1MjIjRmlzaCBhbmQgU2VhZm9vZCBNYXJrZXRzIzQ0NTIKLW5haWNzIzQ0NTIzI0ZydWl0IGFuZCBWZWdldGFibGUgTWFya2V0cyM0NDUyCi1uYWljcyM0NDUyOSNPdGhlciBTcGVjaWFsdHkgRm9vZCBTdG9yZXMjNDQ1MgotbmFpY3MjNDQ1MjkxI0Jha2VkIEdvb2RzIFN0b3JlcyM0NDUyOQotbmFpY3MjNDQ1MjkyI0NvbmZlY3Rpb25lcnkgYW5kIE51dCBTdG9yZXMjNDQ1MjkKLW5haWNzIzQ0NTI5OSNBbGwgT3RoZXIgU3BlY2lhbHR5IEZvb2QgU3RvcmVzIzQ0NTI5Ci1uYWljcyM0NDUzI0JlZXIsIFdpbmUsIGFuZCBMaXF1b3IgU3RvcmVzIzQ0NQotbmFpY3MjNDQ1MzEjQmVlciwgV2luZSwgYW5kIExpcXVvciBTdG9yZXMjNDQ1MwotbmFpY3MjNDQ2I0hlYWx0aCBhbmQgUGVyc29uYWwgQ2FyZSBTdG9yZXMjNDQKLW5haWNzIzQ0NjEjSGVhbHRoIGFuZCBQZXJzb25hbCBDYXJlIFN0b3JlcyM0NDYKLW5haWNzIzQ0NjExI1BoYXJtYWNpZXMgYW5kIERydWcgU3RvcmVzIzQ0NjEKLW5haWNzIzQ0NjEyI0Nvc21ldGljcywgQmVhdXR5IFN1cHBsaWVzLCBhbmQgUGVyZnVtZSBTdG9yZXMjNDQ2MQotbmFpY3MjNDQ2MTMjT3B0aWNhbCBHb29kcyBTdG9yZXMjNDQ2MQotbmFpY3MjNDQ2MTkjT3RoZXIgSGVhbHRoIGFuZCBQZXJzb25hbCBDYXJlIFN0b3JlcyM0NDYxCi1uYWljcyM0NDYxOTEjRm9vZCAoSGVhbHRoKSBTdXBwbGVtZW50IFN0b3JlcyM0NDYxOQotbmFpY3MjNDQ2MTk5I0FsbCBPdGhlciBIZWFsdGggYW5kIFBlcnNvbmFsIENhcmUgU3RvcmVzIzQ0NjE5Ci1uYWljcyM0NDcjR2Fzb2xpbmUgU3RhdGlvbnMjNDQKLW5haWNzIzQ0NzEjR2Fzb2xpbmUgU3RhdGlvbnMjNDQ3Ci1uYWljcyM0NDcxMSNHYXNvbGluZSBTdGF0aW9ucyB3aXRoIENvbnZlbmllbmNlIFN0b3JlcyM0NDcxCi1uYWljcyM0NDcxOSNPdGhlciBHYXNvbGluZSBTdGF0aW9ucyM0NDcxCi1uYWljcyM0NDgjQ2xvdGhpbmcgYW5kIENsb3RoaW5nIEFjY2Vzc29yaWVzIFN0b3JlcyM0NAotbmFpY3MjNDQ4MSNDbG90aGluZyBTdG9yZXMjNDQ4Ci1uYWljcyM0NDgxMSNNZW4ncyBDbG90aGluZyBTdG9yZXMjNDQ4MQotbmFpY3MjNDQ4MTIjV29tZW4ncyBDbG90aGluZyBTdG9yZXMjNDQ4MQotbmFpY3MjNDQ4MTMjQ2hpbGRyZW4ncyBhbmQgSW5mYW50cycgQ2xvdGhpbmcgU3RvcmVzIzQ0ODEKLW5haWNzIzQ0ODE0I0ZhbWlseSBDbG90aGluZyBTdG9yZXMjNDQ4MQotbmFpY3MjNDQ4MTUjQ2xvdGhpbmcgQWNjZXNzb3JpZXMgU3RvcmVzIzQ0ODEKLW5haWNzIzQ0ODE5I090aGVyIENsb3RoaW5nIFN0b3JlcyM0NDgxCi1uYWljcyM0NDgyI1Nob2UgU3RvcmVzIzQ0OAotbmFpY3MjNDQ4MjEjU2hvZSBTdG9yZXMjNDQ4MgotbmFpY3MjNDQ4MyNKZXdlbHJ5LCBMdWdnYWdlLCBhbmQgTGVhdGhlciBHb29kcyBTdG9yZXMjNDQ4Ci1uYWljcyM0NDgzMSNKZXdlbHJ5IFN0b3JlcyM0NDgzCi1uYWljcyM0NDgzMiNMdWdnYWdlIGFuZCBMZWF0aGVyIEdvb2RzIFN0b3JlcyM0NDgzCi1uYWljcyM0NSNSZXRhaWwgVHJhZGUjNDUKLW5haWNzIzQ1MSNTcG9ydGluZyBHb29kcywgSG9iYnksIEJvb2ssIGFuZCBNdXNpYyBTdG9yZXMjNDUKLW5haWNzIzQ1MTEjU3BvcnRpbmcgR29vZHMsIEhvYmJ5LCBhbmQgTXVzaWNhbCBJbnN0cnVtZW50IFN0b3JlcyM0NTEKLW5haWNzIzQ1MTExI1Nwb3J0aW5nIEdvb2RzIFN0b3JlcyM0NTExCi1uYWljcyM0NTExMiNIb2JieSwgVG95LCBhbmQgR2FtZSBTdG9yZXMjNDUxMQotbmFpY3MjNDUxMTMjU2V3aW5nLCBOZWVkbGV3b3JrLCBhbmQgUGllY2UgR29vZHMgU3RvcmVzIzQ1MTEKLW5haWNzIzQ1MTE0I011c2ljYWwgSW5zdHJ1bWVudCBhbmQgU3VwcGxpZXMgU3RvcmVzIzQ1MTEKLW5haWNzIzQ1MTIjQm9vaywgUGVyaW9kaWNhbCwgYW5kIE11c2ljIFN0b3JlcyM0NTEKLW5haWNzIzQ1MTIxI0Jvb2sgU3RvcmVzIGFuZCBOZXdzIERlYWxlcnMjNDUxMgotbmFpY3MjNDUxMjExI0Jvb2sgU3RvcmVzIzQ1MTIxCi1uYWljcyM0NTEyMTIjTmV3cyBEZWFsZXJzIGFuZCBOZXdzc3RhbmRzIzQ1MTIxCi1uYWljcyM0NTEyMiNQcmVyZWNvcmRlZCBUYXBlLCBDb21wYWN0IERpc2MsIGFuZCBSZWNvcmQgU3RvcmVzIzQ1MTIKLW5haWNzIzQ1MiNHZW5lcmFsIE1lcmNoYW5kaXNlIFN0b3JlcyM0NQotbmFpY3MjNDUyMSNEZXBhcnRtZW50IFN0b3JlcyM0NTIKLW5haWNzIzQ1MjExI0RlcGFydG1lbnQgU3RvcmVzIzQ1MjEKLW5haWNzIzQ1MjkjT3RoZXIgR2VuZXJhbCBNZXJjaGFuZGlzZSBTdG9yZXMjNDUyCi1uYWljcyM0NTI5MSNXYXJlaG91c2UgQ2x1YnMgYW5kIFN1cGVyc3RvcmVzIzQ1MjkKLW5haWNzIzQ1Mjk5I0FsbCBPdGhlciBHZW5lcmFsIE1lcmNoYW5kaXNlIFN0b3JlcyM0NTI5Ci1uYWljcyM0NTMjTWlzY2VsbGFuZW91cyBTdG9yZSBSZXRhaWxlcnMjNDUKLW5haWNzIzQ1MzEjRmxvcmlzdHMjNDUzCi1uYWljcyM0NTMxMSNGbG9yaXN0cyM0NTMxCi1uYWljcyM0NTMyI09mZmljZSBTdXBwbGllcywgU3RhdGlvbmVyeSwgYW5kIEdpZnQgU3RvcmVzIzQ1MwotbmFpY3MjNDUzMjEjT2ZmaWNlIFN1cHBsaWVzIGFuZCBTdGF0aW9uZXJ5IFN0b3JlcyM0NTMyCi1uYWljcyM0NTMyMiNHaWZ0LCBOb3ZlbHR5LCBhbmQgU291dmVuaXIgU3RvcmVzIzQ1MzIKLW5haWNzIzQ1MzMjVXNlZCBNZXJjaGFuZGlzZSBTdG9yZXMjNDUzCi1uYWljcyM0NTMzMSNVc2VkIE1lcmNoYW5kaXNlIFN0b3JlcyM0NTMzCi1uYWljcyM0NTM5I090aGVyIE1pc2NlbGxhbmVvdXMgU3RvcmUgUmV0YWlsZXJzIzQ1MwotbmFpY3MjNDUzOTEjUGV0IGFuZCBQZXQgU3VwcGxpZXMgU3RvcmVzIzQ1MzkKLW5haWNzIzQ1MzkyI0FydCBEZWFsZXJzIzQ1MzkKLW5haWNzIzQ1MzkzI01hbnVmYWN0dXJlZCAoTW9iaWxlKSBIb21lIERlYWxlcnMjNDUzOQotbmFpY3MjNDUzOTkjQWxsIE90aGVyIE1pc2NlbGxhbmVvdXMgU3RvcmUgUmV0YWlsZXJzIzQ1MzkKLW5haWNzIzQ1Mzk5MSNUb2JhY2NvIFN0b3JlcyM0NTM5OQotbmFpY3MjNDUzOTk4I0FsbCBPdGhlciBNaXNjZWxsYW5lb3VzIFN0b3JlIFJldGFpbGVycyAoZXhjZXB0IFRvYmFjY28gU3RvcmVzKSM0NTM5OQotbmFpY3MjNDU0I05vbnN0b3JlIFJldGFpbGVycyM0NQotbmFpY3MjNDU0MSNFbGVjdHJvbmljIFNob3BwaW5nIGFuZCBNYWlsLU9yZGVyIEhvdXNlcyM0NTQKLW5haWNzIzQ1NDExI0VsZWN0cm9uaWMgU2hvcHBpbmcgYW5kIE1haWwtT3JkZXIgSG91c2VzIzQ1NDEKLW5haWNzIzQ1NDIjVmVuZGluZyBNYWNoaW5lIE9wZXJhdG9ycyM0NTQKLW5haWNzIzQ1NDIxI1ZlbmRpbmcgTWFjaGluZSBPcGVyYXRvcnMjNDU0MgotbmFpY3MjNDU0MyNEaXJlY3QgU2VsbGluZyBFc3RhYmxpc2htZW50cyM0NTQKLW5haWNzIzQ1NDMxI0Z1ZWwgRGVhbGVycyM0NTQzCi1uYWljcyM0NTQzMTEjSGVhdGluZyBPaWwgRGVhbGVycyM0NTQzMQotbmFpY3MjNDU0MzEyI0xpcXVlZmllZCBQZXRyb2xldW0gR2FzIChCb3R0bGVkIEdhcykgRGVhbGVycyM0NTQzMQotbmFpY3MjNDU0MzE5I090aGVyIEZ1ZWwgRGVhbGVycyM0NTQzMQotbmFpY3MjNDU0MzkjT3RoZXIgRGlyZWN0IFNlbGxpbmcgRXN0YWJsaXNobWVudHMjNDU0MwotbmFpY3MjNDgjVHJhbnNwb3J0YXRpb24gYW5kIFdhcmVob3VzaW5nIzQ4Ci1uYWljcyM0ODEjQWlyIFRyYW5zcG9ydGF0aW9uIzQ4Ci1uYWljcyM0ODExI1NjaGVkdWxlZCBBaXIgVHJhbnNwb3J0YXRpb24jNDgxCi1uYWljcyM0ODExMSNTY2hlZHVsZWQgQWlyIFRyYW5zcG9ydGF0aW9uIzQ4MTEKLW5haWNzIzQ4MTExMSNTY2hlZHVsZWQgUGFzc2VuZ2VyIEFpciBUcmFuc3BvcnRhdGlvbiM0ODExMQotbmFpY3MjNDgxMTEyI1NjaGVkdWxlZCBGcmVpZ2h0IEFpciBUcmFuc3BvcnRhdGlvbiM0ODExMQotbmFpY3MjNDgxMiNOb25zY2hlZHVsZWQgQWlyIFRyYW5zcG9ydGF0aW9uIzQ4MQotbmFpY3MjNDgxMjEjTm9uc2NoZWR1bGVkIEFpciBUcmFuc3BvcnRhdGlvbiM0ODEyCi1uYWljcyM0ODEyMTEjTm9uc2NoZWR1bGVkIENoYXJ0ZXJlZCBQYXNzZW5nZXIgQWlyIFRyYW5zcG9ydGF0aW9uIzQ4MTIxCi1uYWljcyM0ODEyMTIjTm9uc2NoZWR1bGVkIENoYXJ0ZXJlZCBGcmVpZ2h0IEFpciBUcmFuc3BvcnRhdGlvbiM0ODEyMQotbmFpY3MjNDgxMjE5I090aGVyIE5vbnNjaGVkdWxlZCBBaXIgVHJhbnNwb3J0YXRpb24jNDgxMjEKLW5haWNzIzQ4MiNSYWlsIFRyYW5zcG9ydGF0aW9uIzQ4Ci1uYWljcyM0ODIxI1JhaWwgVHJhbnNwb3J0YXRpb24jNDgyCi1uYWljcyM0ODIxMSNSYWlsIFRyYW5zcG9ydGF0aW9uIzQ4MjEKLW5haWNzIzQ4MjExMSNMaW5lLUhhdWwgUmFpbHJvYWRzIzQ4MjExCi1uYWljcyM0ODIxMTIjU2hvcnQgTGluZSBSYWlscm9hZHMjNDgyMTEKLW5haWNzIzQ4MyNXYXRlciBUcmFuc3BvcnRhdGlvbiM0OAotbmFpY3MjNDgzMSNEZWVwIFNlYSwgQ29hc3RhbCwgYW5kIEdyZWF0IExha2VzIFdhdGVyIFRyYW5zcG9ydGF0aW9uIzQ4MwotbmFpY3MjNDgzMTEjRGVlcCBTZWEsIENvYXN0YWwsIGFuZCBHcmVhdCBMYWtlcyBXYXRlciBUcmFuc3BvcnRhdGlvbiM0ODMxCi1uYWljcyM0ODMxMTEjRGVlcCBTZWEgRnJlaWdodCBUcmFuc3BvcnRhdGlvbiM0ODMxMQotbmFpY3MjNDgzMTEyI0RlZXAgU2VhIFBhc3NlbmdlciBUcmFuc3BvcnRhdGlvbiM0ODMxMQotbmFpY3MjNDgzMTEzI0NvYXN0YWwgYW5kIEdyZWF0IExha2VzIEZyZWlnaHQgVHJhbnNwb3J0YXRpb24jNDgzMTEKLW5haWNzIzQ4MzExNCNDb2FzdGFsIGFuZCBHcmVhdCBMYWtlcyBQYXNzZW5nZXIgVHJhbnNwb3J0YXRpb24jNDgzMTEKLW5haWNzIzQ4MzIjSW5sYW5kIFdhdGVyIFRyYW5zcG9ydGF0aW9uIzQ4MwotbmFpY3MjNDgzMjEjSW5sYW5kIFdhdGVyIFRyYW5zcG9ydGF0aW9uIzQ4MzIKLW5haWNzIzQ4MzIxMSNJbmxhbmQgV2F0ZXIgRnJlaWdodCBUcmFuc3BvcnRhdGlvbiM0ODMyMQotbmFpY3MjNDgzMjEyI0lubGFuZCBXYXRlciBQYXNzZW5nZXIgVHJhbnNwb3J0YXRpb24jNDgzMjEKLW5haWNzIzQ4NCNUcnVjayBUcmFuc3BvcnRhdGlvbiM0OAotbmFpY3MjNDg0MSNHZW5lcmFsIEZyZWlnaHQgVHJ1Y2tpbmcjNDg0Ci1uYWljcyM0ODQxMSNHZW5lcmFsIEZyZWlnaHQgVHJ1Y2tpbmcsIExvY2FsIzQ4NDEKLW5haWNzIzQ4NDEyI0dlbmVyYWwgRnJlaWdodCBUcnVja2luZywgTG9uZy1EaXN0YW5jZSM0ODQxCi1uYWljcyM0ODQxMjEjR2VuZXJhbCBGcmVpZ2h0IFRydWNraW5nLCBMb25nLURpc3RhbmNlLCBUcnVja2xvYWQjNDg0MTIKLW5haWNzIzQ4NDEyMiNHZW5lcmFsIEZyZWlnaHQgVHJ1Y2tpbmcsIExvbmctRGlzdGFuY2UsIExlc3MgVGhhbiBUcnVja2xvYWQjNDg0MTIKLW5haWNzIzQ4NDIjU3BlY2lhbGl6ZWQgRnJlaWdodCBUcnVja2luZyM0ODQKLW5haWNzIzQ4NDIxI1VzZWQgSG91c2Vob2xkIGFuZCBPZmZpY2UgR29vZHMgTW92aW5nIzQ4NDIKLW5haWNzIzQ4NDIyI1NwZWNpYWxpemVkIEZyZWlnaHQgKGV4Y2VwdCBVc2VkIEdvb2RzKSBUcnVja2luZywgTG9jYWwjNDg0MgotbmFpY3MjNDg0MjMjU3BlY2lhbGl6ZWQgRnJlaWdodCAoZXhjZXB0IFVzZWQgR29vZHMpIFRydWNraW5nLCBMb25nLURpc3RhbmNlIzQ4NDIKLW5haWNzIzQ4NSNUcmFuc2l0IGFuZCBHcm91bmQgUGFzc2VuZ2VyIFRyYW5zcG9ydGF0aW9uIzQ4Ci1uYWljcyM0ODUxI1VyYmFuIFRyYW5zaXQgU3lzdGVtcyM0ODUKLW5haWNzIzQ4NTExI1VyYmFuIFRyYW5zaXQgU3lzdGVtcyM0ODUxCi1uYWljcyM0ODUxMTEjTWl4ZWQgTW9kZSBUcmFuc2l0IFN5c3RlbXMjNDg1MTEKLW5haWNzIzQ4NTExMiNDb21tdXRlciBSYWlsIFN5c3RlbXMjNDg1MTEKLW5haWNzIzQ4NTExMyNCdXMgYW5kIE90aGVyIE1vdG9yIFZlaGljbGUgVHJhbnNpdCBTeXN0ZW1zIzQ4NTExCi1uYWljcyM0ODUxMTkjT3RoZXIgVXJiYW4gVHJhbnNpdCBTeXN0ZW1zIzQ4NTExCi1uYWljcyM0ODUyI0ludGVydXJiYW4gYW5kIFJ1cmFsIEJ1cyBUcmFuc3BvcnRhdGlvbiM0ODUKLW5haWNzIzQ4NTIxI0ludGVydXJiYW4gYW5kIFJ1cmFsIEJ1cyBUcmFuc3BvcnRhdGlvbiM0ODUyCi1uYWljcyM0ODUzI1RheGkgYW5kIExpbW91c2luZSBTZXJ2aWNlIzQ4NQotbmFpY3MjNDg1MzEjVGF4aSBTZXJ2aWNlIzQ4NTMKLW5haWNzIzQ4NTMyI0xpbW91c2luZSBTZXJ2aWNlIzQ4NTMKLW5haWNzIzQ4NTQjU2Nob29sIGFuZCBFbXBsb3llZSBCdXMgVHJhbnNwb3J0YXRpb24jNDg1Ci1uYWljcyM0ODU0MSNTY2hvb2wgYW5kIEVtcGxveWVlIEJ1cyBUcmFuc3BvcnRhdGlvbiM0ODU0Ci1uYWljcyM0ODU1I0NoYXJ0ZXIgQnVzIEluZHVzdHJ5IzQ4NQotbmFpY3MjNDg1NTEjQ2hhcnRlciBCdXMgSW5kdXN0cnkjNDg1NQotbmFpY3MjNDg1OSNPdGhlciBUcmFuc2l0IGFuZCBHcm91bmQgUGFzc2VuZ2VyIFRyYW5zcG9ydGF0aW9uIzQ4NQotbmFpY3MjNDg1OTkjT3RoZXIgVHJhbnNpdCBhbmQgR3JvdW5kIFBhc3NlbmdlciBUcmFuc3BvcnRhdGlvbiM0ODU5Ci1uYWljcyM0ODU5OTEjU3BlY2lhbCBOZWVkcyBUcmFuc3BvcnRhdGlvbiM0ODU5OQotbmFpY3MjNDg1OTk5I0FsbCBPdGhlciBUcmFuc2l0IGFuZCBHcm91bmQgUGFzc2VuZ2VyIFRyYW5zcG9ydGF0aW9uIzQ4NTk5Ci1uYWljcyM0ODYjUGlwZWxpbmUgVHJhbnNwb3J0YXRpb24jNDgKLW5haWNzIzQ4NjEjUGlwZWxpbmUgVHJhbnNwb3J0YXRpb24gb2YgQ3J1ZGUgT2lsIzQ4NgotbmFpY3MjNDg2MTEjUGlwZWxpbmUgVHJhbnNwb3J0YXRpb24gb2YgQ3J1ZGUgT2lsIzQ4NjEKLW5haWNzIzQ4NjIjUGlwZWxpbmUgVHJhbnNwb3J0YXRpb24gb2YgTmF0dXJhbCBHYXMjNDg2Ci1uYWljcyM0ODYyMSNQaXBlbGluZSBUcmFuc3BvcnRhdGlvbiBvZiBOYXR1cmFsIEdhcyM0ODYyCi1uYWljcyM0ODY5I090aGVyIFBpcGVsaW5lIFRyYW5zcG9ydGF0aW9uIzQ4NgotbmFpY3MjNDg2OTEjUGlwZWxpbmUgVHJhbnNwb3J0YXRpb24gb2YgUmVmaW5lZCBQZXRyb2xldW0gUHJvZHVjdHMjNDg2OQotbmFpY3MjNDg2OTkjQWxsIE90aGVyIFBpcGVsaW5lIFRyYW5zcG9ydGF0aW9uIzQ4NjkKLW5haWNzIzQ4NyNTY2VuaWMgYW5kIFNpZ2h0c2VlaW5nIFRyYW5zcG9ydGF0aW9uIzQ4Ci1uYWljcyM0ODcxI1NjZW5pYyBhbmQgU2lnaHRzZWVpbmcgVHJhbnNwb3J0YXRpb24sIExhbmQjNDg3Ci1uYWljcyM0ODcxMSNTY2VuaWMgYW5kIFNpZ2h0c2VlaW5nIFRyYW5zcG9ydGF0aW9uLCBMYW5kIzQ4NzEKLW5haWNzIzQ4NzIjU2NlbmljIGFuZCBTaWdodHNlZWluZyBUcmFuc3BvcnRhdGlvbiwgV2F0ZXIjNDg3Ci1uYWljcyM0ODcyMSNTY2VuaWMgYW5kIFNpZ2h0c2VlaW5nIFRyYW5zcG9ydGF0aW9uLCBXYXRlciM0ODcyCi1uYWljcyM0ODc5I1NjZW5pYyBhbmQgU2lnaHRzZWVpbmcgVHJhbnNwb3J0YXRpb24sIE90aGVyIzQ4NwotbmFpY3MjNDg3OTkjU2NlbmljIGFuZCBTaWdodHNlZWluZyBUcmFuc3BvcnRhdGlvbiwgT3RoZXIjNDg3OQotbmFpY3MjNDg4I1N1cHBvcnQgQWN0aXZpdGllcyBmb3IgVHJhbnNwb3J0YXRpb24jNDgKLW5haWNzIzQ4ODEjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBBaXIgVHJhbnNwb3J0YXRpb24jNDg4Ci1uYWljcyM0ODgxMSNBaXJwb3J0IE9wZXJhdGlvbnMjNDg4MQotbmFpY3MjNDg4MTExI0FpciBUcmFmZmljIENvbnRyb2wjNDg4MTEKLW5haWNzIzQ4ODExOSNPdGhlciBBaXJwb3J0IE9wZXJhdGlvbnMjNDg4MTEKLW5haWNzIzQ4ODE5I090aGVyIFN1cHBvcnQgQWN0aXZpdGllcyBmb3IgQWlyIFRyYW5zcG9ydGF0aW9uIzQ4ODEKLW5haWNzIzQ4ODIjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBSYWlsIFRyYW5zcG9ydGF0aW9uIzQ4OAotbmFpY3MjNDg4MjEjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBSYWlsIFRyYW5zcG9ydGF0aW9uIzQ4ODIKLW5haWNzIzQ4ODMjU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBXYXRlciBUcmFuc3BvcnRhdGlvbiM0ODgKLW5haWNzIzQ4ODMxI1BvcnQgYW5kIEhhcmJvciBPcGVyYXRpb25zIzQ4ODMKLW5haWNzIzQ4ODMyI01hcmluZSBDYXJnbyBIYW5kbGluZyM0ODgzCi1uYWljcyM0ODgzMyNOYXZpZ2F0aW9uYWwgU2VydmljZXMgdG8gU2hpcHBpbmcjNDg4MwotbmFpY3MjNDg4MzkjT3RoZXIgU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBXYXRlciBUcmFuc3BvcnRhdGlvbiM0ODgzCi1uYWljcyM0ODg0I1N1cHBvcnQgQWN0aXZpdGllcyBmb3IgUm9hZCBUcmFuc3BvcnRhdGlvbiM0ODgKLW5haWNzIzQ4ODQxI01vdG9yIFZlaGljbGUgVG93aW5nIzQ4ODQKLW5haWNzIzQ4ODQ5I090aGVyIFN1cHBvcnQgQWN0aXZpdGllcyBmb3IgUm9hZCBUcmFuc3BvcnRhdGlvbiM0ODg0Ci1uYWljcyM0ODg1I0ZyZWlnaHQgVHJhbnNwb3J0YXRpb24gQXJyYW5nZW1lbnQjNDg4Ci1uYWljcyM0ODg1MSNGcmVpZ2h0IFRyYW5zcG9ydGF0aW9uIEFycmFuZ2VtZW50IzQ4ODUKLW5haWNzIzQ4ODkjT3RoZXIgU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBUcmFuc3BvcnRhdGlvbiM0ODgKLW5haWNzIzQ4ODk5I090aGVyIFN1cHBvcnQgQWN0aXZpdGllcyBmb3IgVHJhbnNwb3J0YXRpb24jNDg4OQotbmFpY3MjNDg4OTkxI1BhY2tpbmcgYW5kIENyYXRpbmcjNDg4OTkKLW5haWNzIzQ4ODk5OSNBbGwgT3RoZXIgU3VwcG9ydCBBY3Rpdml0aWVzIGZvciBUcmFuc3BvcnRhdGlvbiM0ODg5OQotbmFpY3MjNDkjVHJhbnNwb3J0YXRpb24gYW5kIFdhcmVob3VzaW5nIzQ5Ci1uYWljcyM0OTEjUG9zdGFsIFNlcnZpY2UjNDkKLW5haWNzIzQ5MTEjUG9zdGFsIFNlcnZpY2UjNDkxCi1uYWljcyM0OTExMSNQb3N0YWwgU2VydmljZSM0OTExCi1uYWljcyM0OTIjQ291cmllcnMgYW5kIE1lc3NlbmdlcnMjNDkKLW5haWNzIzQ5MjEjQ291cmllcnMjNDkyCi1uYWljcyM0OTIxMSNDb3VyaWVycyM0OTIxCi1uYWljcyM0OTIyI0xvY2FsIE1lc3NlbmdlcnMgYW5kIExvY2FsIERlbGl2ZXJ5IzQ5MgotbmFpY3MjNDkyMjEjTG9jYWwgTWVzc2VuZ2VycyBhbmQgTG9jYWwgRGVsaXZlcnkjNDkyMgotbmFpY3MjNDkzI1dhcmVob3VzaW5nIGFuZCBTdG9yYWdlIzQ5Ci1uYWljcyM0OTMxI1dhcmVob3VzaW5nIGFuZCBTdG9yYWdlIzQ5MwotbmFpY3MjNDkzMTEjR2VuZXJhbCBXYXJlaG91c2luZyBhbmQgU3RvcmFnZSM0OTMxCi1uYWljcyM0OTMxMiNSZWZyaWdlcmF0ZWQgV2FyZWhvdXNpbmcgYW5kIFN0b3JhZ2UjNDkzMQotbmFpY3MjNDkzMTMjRmFybSBQcm9kdWN0IFdhcmVob3VzaW5nIGFuZCBTdG9yYWdlIzQ5MzEKLW5haWNzIzQ5MzE5I090aGVyIFdhcmVob3VzaW5nIGFuZCBTdG9yYWdlIzQ5MzEKLW5haWNzIzUxI0luZm9ybWF0aW9uIzUxCi1uYWljcyM1MTEjUHVibGlzaGluZyBJbmR1c3RyaWVzIzUxCi1uYWljcyM1MTExI05ld3NwYXBlciwgUGVyaW9kaWNhbCwgQm9vaywgYW5kIERhdGFiYXNlIFB1Ymxpc2hlcnMjNTExCi1uYWljcyM1MTExMSNOZXdzcGFwZXIgUHVibGlzaGVycyM1MTExCi1uYWljcyM1MTExMiNQZXJpb2RpY2FsIFB1Ymxpc2hlcnMjNTExMQotbmFpY3MjNTExMTMjQm9vayBQdWJsaXNoZXJzIzUxMTEKLW5haWNzIzUxMTE0I0RhdGFiYXNlIGFuZCBEaXJlY3RvcnkgUHVibGlzaGVycyM1MTExCi1uYWljcyM1MTExOSNPdGhlciBQdWJsaXNoZXJzIzUxMTEKLW5haWNzIzUxMTE5MSNHcmVldGluZyBDYXJkIFB1Ymxpc2hlcnMjNTExMTkKLW5haWNzIzUxMTE5OSNBbGwgT3RoZXIgUHVibGlzaGVycyM1MTExOQotbmFpY3MjNTExMiNTb2Z0d2FyZSBQdWJsaXNoZXJzIzUxMQotbmFpY3MjNTExMjEjU29mdHdhcmUgUHVibGlzaGVycyM1MTEyCi1uYWljcyM1MTIjTW90aW9uIFBpY3R1cmUgYW5kIFNvdW5kIFJlY29yZGluZyBJbmR1c3RyaWVzIzUxCi1uYWljcyM1MTIxI01vdGlvbiBQaWN0dXJlIGFuZCBWaWRlbyBJbmR1c3RyaWVzIzUxMgotbmFpY3MjNTEyMTEjTW90aW9uIFBpY3R1cmUgYW5kIFZpZGVvIFByb2R1Y3Rpb24jNTEyMQotbmFpY3MjNTEyMTIjTW90aW9uIFBpY3R1cmUgYW5kIFZpZGVvIERpc3RyaWJ1dGlvbiM1MTIxCi1uYWljcyM1MTIxMyNNb3Rpb24gUGljdHVyZSBhbmQgVmlkZW8gRXhoaWJpdGlvbiM1MTIxCi1uYWljcyM1MTIxMzEjTW90aW9uIFBpY3R1cmUgVGhlYXRlcnMgKGV4Y2VwdCBEcml2ZS1JbnMpIzUxMjEzCi1uYWljcyM1MTIxMzIjRHJpdmUtSW4gTW90aW9uIFBpY3R1cmUgVGhlYXRlcnMjNTEyMTMKLW5haWNzIzUxMjE5I1Bvc3Rwcm9kdWN0aW9uIFNlcnZpY2VzIGFuZCBPdGhlciBNb3Rpb24gUGljdHVyZSBhbmQgVmlkZW8gSW5kdXN0cmllcyM1MTIxCi1uYWljcyM1MTIxOTEjVGVsZXByb2R1Y3Rpb24gYW5kIE90aGVyIFBvc3Rwcm9kdWN0aW9uIFNlcnZpY2VzIzUxMjE5Ci1uYWljcyM1MTIxOTkjT3RoZXIgTW90aW9uIFBpY3R1cmUgYW5kIFZpZGVvIEluZHVzdHJpZXMjNTEyMTkKLW5haWNzIzUxMjIjU291bmQgUmVjb3JkaW5nIEluZHVzdHJpZXMjNTEyCi1uYWljcyM1MTIyMSNSZWNvcmQgUHJvZHVjdGlvbiM1MTIyCi1uYWljcyM1MTIyMiNJbnRlZ3JhdGVkIFJlY29yZCBQcm9kdWN0aW9uL0Rpc3RyaWJ1dGlvbiM1MTIyCi1uYWljcyM1MTIyMyNNdXNpYyBQdWJsaXNoZXJzIzUxMjIKLW5haWNzIzUxMjI0I1NvdW5kIFJlY29yZGluZyBTdHVkaW9zIzUxMjIKLW5haWNzIzUxMjI5I090aGVyIFNvdW5kIFJlY29yZGluZyBJbmR1c3RyaWVzIzUxMjIKLW5haWNzIzUxMyNCcm9hZGNhc3RpbmcgYW5kIFRlbGVjb21tdW5pY2F0aW9ucyM1MQotbmFpY3MjNTEzMSNSYWRpbyBhbmQgVGVsZXZpc2lvbiBCcm9hZGNhc3RpbmcjNTEzCi1uYWljcyM1MTMxMSNSYWRpbyBCcm9hZGNhc3RpbmcjNTEzMQotbmFpY3MjNTEzMTExI1JhZGlvIE5ldHdvcmtzIzUxMzExCi1uYWljcyM1MTMxMTIjUmFkaW8gU3RhdGlvbnMjNTEzMTEKLW5haWNzIzUxMzEyI1RlbGV2aXNpb24gQnJvYWRjYXN0aW5nIzUxMzEKLW5haWNzIzUxMzIjQ2FibGUgTmV0d29ya3MgYW5kIFByb2dyYW0gRGlzdHJpYnV0aW9uIzUxMwotbmFpY3MjNTEzMjEjQ2FibGUgTmV0d29ya3MjNTEzMgotbmFpY3MjNTEzMjIjQ2FibGUgYW5kIE90aGVyIFByb2dyYW0gRGlzdHJpYnV0aW9uIzUxMzIKLW5haWNzIzUxMzMjVGVsZWNvbW11bmljYXRpb25zIzUxMwotbmFpY3MjNTEzMzEjV2lyZWQgVGVsZWNvbW11bmljYXRpb25zIENhcnJpZXJzIzUxMzMKLW5haWNzIzUxMzMyI1dpcmVsZXNzIFRlbGVjb21tdW5pY2F0aW9ucyBDYXJyaWVycyAoZXhjZXB0IFNhdGVsbGl0ZSkjNTEzMwotbmFpY3MjNTEzMzIxI1BhZ2luZyM1MTMzMgotbmFpY3MjNTEzMzIyI0NlbGx1bGFyIGFuZCBPdGhlciBXaXJlbGVzcyBUZWxlY29tbXVuaWNhdGlvbnMjNTEzMzIKLW5haWNzIzUxMzMzI1RlbGVjb21tdW5pY2F0aW9ucyBSZXNlbGxlcnMjNTEzMwotbmFpY3MjNTEzMzQjU2F0ZWxsaXRlIFRlbGVjb21tdW5pY2F0aW9ucyM1MTMzCi1uYWljcyM1MTMzOSNPdGhlciBUZWxlY29tbXVuaWNhdGlvbnMjNTEzMwotbmFpY3MjNTE0I0luZm9ybWF0aW9uIFNlcnZpY2VzIGFuZCBEYXRhIFByb2Nlc3NpbmcgU2VydmljZXMjNTEKLW5haWNzIzUxNDEjSW5mb3JtYXRpb24gU2VydmljZXMjNTE0Ci1uYWljcyM1MTQxMSNOZXdzIFN5bmRpY2F0ZXMjNTE0MQotbmFpY3MjNTE0MTIjTGlicmFyaWVzIGFuZCBBcmNoaXZlcyM1MTQxCi1uYWljcyM1MTQxOSNPdGhlciBJbmZvcm1hdGlvbiBTZXJ2aWNlcyM1MTQxCi1uYWljcyM1MTQxOTEjT24tTGluZSBJbmZvcm1hdGlvbiBTZXJ2aWNlcyM1MTQxOQotbmFpY3MjNTE0MTk5I0FsbCBPdGhlciBJbmZvcm1hdGlvbiBTZXJ2aWNlcyM1MTQxOQotbmFpY3MjNTE0MiNEYXRhIFByb2Nlc3NpbmcgU2VydmljZXMjNTE0Ci1uYWljcyM1MTQyMSNEYXRhIFByb2Nlc3NpbmcgU2VydmljZXMjNTE0MgotbmFpY3MjNTIjRmluYW5jZSBhbmQgSW5zdXJhbmNlIzUyCi1uYWljcyM1MjEjTW9uZXRhcnkgQXV0aG9yaXRpZXMgLSBDZW50cmFsIEJhbmsjNTIKLW5haWNzIzUyMTEjTW9uZXRhcnkgQXV0aG9yaXRpZXMgLSBDZW50cmFsIEJhbmsjNTIxCi1uYWljcyM1MjExMSNNb25ldGFyeSBBdXRob3JpdGllcyAtIENlbnRyYWwgQmFuayM1MjExCi1uYWljcyM1MjIjQ3JlZGl0IEludGVybWVkaWF0aW9uIGFuZCBSZWxhdGVkIEFjdGl2aXRpZXMjNTIKLW5haWNzIzUyMjEjRGVwb3NpdG9yeSBDcmVkaXQgSW50ZXJtZWRpYXRpb24jNTIyCi1uYWljcyM1MjIxMSNDb21tZXJjaWFsIEJhbmtpbmcjNTIyMQotbmFpY3MjNTIyMTIjU2F2aW5ncyBJbnN0aXR1dGlvbnMjNTIyMQotbmFpY3MjNTIyMTMjQ3JlZGl0IFVuaW9ucyM1MjIxCi1uYWljcyM1MjIxOSNPdGhlciBEZXBvc2l0b3J5IENyZWRpdCBJbnRlcm1lZGlhdGlvbiM1MjIxCi1uYWljcyM1MjIyI05vbmRlcG9zaXRvcnkgQ3JlZGl0IEludGVybWVkaWF0aW9uIzUyMgotbmFpY3MjNTIyMjEjQ3JlZGl0IENhcmQgSXNzdWluZyM1MjIyCi1uYWljcyM1MjIyMiNTYWxlcyBGaW5hbmNpbmcjNTIyMgotbmFpY3MjNTIyMjkjT3RoZXIgTm9uZGVwb3NpdG9yeSBDcmVkaXQgSW50ZXJtZWRpYXRpb24jNTIyMgotbmFpY3MjNTIyMjkxI0NvbnN1bWVyIExlbmRpbmcjNTIyMjkKLW5haWNzIzUyMjI5MiNSZWFsIEVzdGF0ZSBDcmVkaXQjNTIyMjkKLW5haWNzIzUyMjI5MyNJbnRlcm5hdGlvbmFsIFRyYWRlIEZpbmFuY2luZyM1MjIyOQotbmFpY3MjNTIyMjk0I1NlY29uZGFyeSBNYXJrZXQgRmluYW5jaW5nIzUyMjI5Ci1uYWljcyM1MjIyOTgjQWxsIE90aGVyIE5vbmRlcG9zaXRvcnkgQ3JlZGl0IEludGVybWVkaWF0aW9uIzUyMjI5Ci1uYWljcyM1MjIzI0FjdGl2aXRpZXMgUmVsYXRlZCB0byBDcmVkaXQgSW50ZXJtZWRpYXRpb24jNTIyCi1uYWljcyM1MjIzMSNNb3J0Z2FnZSBhbmQgTm9ubW9ydGdhZ2UgTG9hbiBCcm9rZXJzIzUyMjMKLW5haWNzIzUyMjMyI0ZpbmFuY2lhbCBUcmFuc2FjdGlvbnMgUHJvY2Vzc2luZywgUmVzZXJ2ZSwgYW5kIENsZWFyaW5naG91c2UgQWN0aXZpdGllcyM1MjIzCi1uYWljcyM1MjIzOSNPdGhlciBBY3Rpdml0aWVzIFJlbGF0ZWQgdG8gQ3JlZGl0IEludGVybWVkaWF0aW9uIzUyMjMKLW5haWNzIzUyMyNTZWN1cml0aWVzLCBDb21tb2RpdHkgQ29udHJhY3RzLCBhbmQgT3RoZXIgRmluYW5jaWFsIEludmVzdG1lbnRzIGFuZCBSZWxhdGVkIEFjdGl2aXRpZXMjNTIKLW5haWNzIzUyMzEjU2VjdXJpdGllcyBhbmQgQ29tbW9kaXR5IENvbnRyYWN0cyBJbnRlcm1lZGlhdGlvbiBhbmQgQnJva2VyYWdlIzUyMwotbmFpY3MjNTIzMTEjSW52ZXN0bWVudCBCYW5raW5nIGFuZCBTZWN1cml0aWVzIERlYWxpbmcjNTIzMQotbmFpY3MjNTIzMTIjU2VjdXJpdGllcyBCcm9rZXJhZ2UjNTIzMQotbmFpY3MjNTIzMTMjQ29tbW9kaXR5IENvbnRyYWN0cyBEZWFsaW5nIzUyMzEKLW5haWNzIzUyMzE0I0NvbW1vZGl0eSBDb250cmFjdHMgQnJva2VyYWdlIzUyMzEKLW5haWNzIzUyMzIjU2VjdXJpdGllcyBhbmQgQ29tbW9kaXR5IEV4Y2hhbmdlcyM1MjMKLW5haWNzIzUyMzIxI1NlY3VyaXRpZXMgYW5kIENvbW1vZGl0eSBFeGNoYW5nZXMjNTIzMgotbmFpY3MjNTIzOSNPdGhlciBGaW5hbmNpYWwgSW52ZXN0bWVudCBBY3Rpdml0aWVzIzUyMwotbmFpY3MjNTIzOTEjTWlzY2VsbGFuZW91cyBJbnRlcm1lZGlhdGlvbiM1MjM5Ci1uYWljcyM1MjM5MiNQb3J0Zm9saW8gTWFuYWdlbWVudCM1MjM5Ci1uYWljcyM1MjM5MyNJbnZlc3RtZW50IEFkdmljZSM1MjM5Ci1uYWljcyM1MjM5OSNBbGwgT3RoZXIgRmluYW5jaWFsIEludmVzdG1lbnQgQWN0aXZpdGllcyM1MjM5Ci1uYWljcyM1MjM5OTEjVHJ1c3QsIEZpZHVjaWFyeSwgYW5kIEN1c3RvZHkgQWN0aXZpdGllcyM1MjM5OQotbmFpY3MjNTIzOTk5I01pc2NlbGxhbmVvdXMgRmluYW5jaWFsIEludmVzdG1lbnQgQWN0aXZpdGllcyM1MjM5OQotbmFpY3MjNTI0I0luc3VyYW5jZSBDYXJyaWVycyBhbmQgUmVsYXRlZCBBY3Rpdml0aWVzIzUyCi1uYWljcyM1MjQxI0luc3VyYW5jZSBDYXJyaWVycyM1MjQKLW5haWNzIzUyNDExI0RpcmVjdCBMaWZlLCBIZWFsdGgsIGFuZCBNZWRpY2FsIEluc3VyYW5jZSBDYXJyaWVycyM1MjQxCi1uYWljcyM1MjQxMTMjRGlyZWN0IExpZmUgSW5zdXJhbmNlIENhcnJpZXJzIzUyNDExCi1uYWljcyM1MjQxMTQjRGlyZWN0IEhlYWx0aCBhbmQgTWVkaWNhbCBJbnN1cmFuY2UgQ2FycmllcnMjNTI0MTEKLW5haWNzIzUyNDEyI0RpcmVjdCBJbnN1cmFuY2UgKGV4Y2VwdCBMaWZlLCBIZWFsdGgsIGFuZCBNZWRpY2FsKSBDYXJyaWVycyM1MjQxCi1uYWljcyM1MjQxMjYjRGlyZWN0IFByb3BlcnR5IGFuZCBDYXN1YWx0eSBJbnN1cmFuY2UgQ2FycmllcnMjNTI0MTIKLW5haWNzIzUyNDEyNyNEaXJlY3QgVGl0bGUgSW5zdXJhbmNlIENhcnJpZXJzIzUyNDEyCi1uYWljcyM1MjQxMjgjT3RoZXIgRGlyZWN0IEluc3VyYW5jZSAoZXhjZXB0IExpZmUsIEhlYWx0aCwgYW5kIE1lZGljYWwpIENhcnJpZXJzIzUyNDEyCi1uYWljcyM1MjQxMyNSZWluc3VyYW5jZSBDYXJyaWVycyM1MjQxCi1uYWljcyM1MjQyI0FnZW5jaWVzLCBCcm9rZXJhZ2VzLCBhbmQgT3RoZXIgSW5zdXJhbmNlIFJlbGF0ZWQgQWN0aXZpdGllcyM1MjQKLW5haWNzIzUyNDIxI0luc3VyYW5jZSBBZ2VuY2llcyBhbmQgQnJva2VyYWdlcyM1MjQyCi1uYWljcyM1MjQyOSNPdGhlciBJbnN1cmFuY2UgUmVsYXRlZCBBY3Rpdml0aWVzIzUyNDIKLW5haWNzIzUyNDI5MSNDbGFpbXMgQWRqdXN0aW5nIzUyNDI5Ci1uYWljcyM1MjQyOTIjVGhpcmQgUGFydHkgQWRtaW5pc3RyYXRpb24gb2YgSW5zdXJhbmNlIGFuZCBQZW5zaW9uIEZ1bmRzIzUyNDI5Ci1uYWljcyM1MjQyOTgjQWxsIE90aGVyIEluc3VyYW5jZSBSZWxhdGVkIEFjdGl2aXRpZXMjNTI0MjkKLW5haWNzIzUyNSNGdW5kcywgVHJ1c3RzLCBhbmQgT3RoZXIgRmluYW5jaWFsIFZlaGljbGVzIzUyCi1uYWljcyM1MjUxI0luc3VyYW5jZSBhbmQgRW1wbG95ZWUgQmVuZWZpdCBGdW5kcyM1MjUKLW5haWNzIzUyNTExI1BlbnNpb24gRnVuZHMjNTI1MQotbmFpY3MjNTI1MTIjSGVhbHRoIGFuZCBXZWxmYXJlIEZ1bmRzIzUyNTEKLW5haWNzIzUyNTE5I090aGVyIEluc3VyYW5jZSBGdW5kcyM1MjUxCi1uYWljcyM1MjU5I090aGVyIEludmVzdG1lbnQgUG9vbHMgYW5kIEZ1bmRzIzUyNQotbmFpY3MjNTI1OTEjT3Blbi1FbmQgSW52ZXN0bWVudCBGdW5kcyM1MjU5Ci1uYWljcyM1MjU5MiNUcnVzdHMsIEVzdGF0ZXMsIGFuZCBBZ2VuY3kgQWNjb3VudHMjNTI1OQotbmFpY3MjNTI1OTMjUmVhbCBFc3RhdGUgSW52ZXN0bWVudCBUcnVzdHMjNTI1OQotbmFpY3MjNTI1OTkjT3RoZXIgRmluYW5jaWFsIFZlaGljbGVzIzUyNTkKLW5haWNzIzUzI1JlYWwgRXN0YXRlIGFuZCBSZW50YWwgYW5kIExlYXNpbmcjNTMKLW5haWNzIzUzMSNSZWFsIEVzdGF0ZSM1MwotbmFpY3MjNTMxMSNMZXNzb3JzIG9mIFJlYWwgRXN0YXRlIzUzMQotbmFpY3MjNTMxMTEjTGVzc29ycyBvZiBSZXNpZGVudGlhbCBCdWlsZGluZ3MgYW5kIER3ZWxsaW5ncyM1MzExCi1uYWljcyM1MzExMiNMZXNzb3JzIG9mIE5vbnJlc2lkZW50aWFsIEJ1aWxkaW5ncyAoZXhjZXB0IE1pbml3YXJlaG91c2VzKSM1MzExCi1uYWljcyM1MzExMyNMZXNzb3JzIG9mIE1pbml3YXJlaG91c2VzIGFuZCBTZWxmLVN0b3JhZ2UgVW5pdHMjNTMxMQotbmFpY3MjNTMxMTkjTGVzc29ycyBvZiBPdGhlciBSZWFsIEVzdGF0ZSBQcm9wZXJ0eSM1MzExCi1uYWljcyM1MzEyI09mZmljZXMgb2YgUmVhbCBFc3RhdGUgQWdlbnRzIGFuZCBCcm9rZXJzIzUzMQotbmFpY3MjNTMxMjEjT2ZmaWNlcyBvZiBSZWFsIEVzdGF0ZSBBZ2VudHMgYW5kIEJyb2tlcnMjNTMxMgotbmFpY3MjNTMxMyNBY3Rpdml0aWVzIFJlbGF0ZWQgdG8gUmVhbCBFc3RhdGUjNTMxCi1uYWljcyM1MzEzMSNSZWFsIEVzdGF0ZSBQcm9wZXJ0eSBNYW5hZ2VycyM1MzEzCi1uYWljcyM1MzEzMTEjUmVzaWRlbnRpYWwgUHJvcGVydHkgTWFuYWdlcnMjNTMxMzEKLW5haWNzIzUzMTMxMiNOb25yZXNpZGVudGlhbCBQcm9wZXJ0eSBNYW5hZ2VycyM1MzEzMQotbmFpY3MjNTMxMzIjT2ZmaWNlcyBvZiBSZWFsIEVzdGF0ZSBBcHByYWlzZXJzIzUzMTMKLW5haWNzIzUzMTM5I090aGVyIEFjdGl2aXRpZXMgUmVsYXRlZCB0byBSZWFsIEVzdGF0ZSM1MzEzCi1uYWljcyM1MzIjUmVudGFsIGFuZCBMZWFzaW5nIFNlcnZpY2VzIzUzCi1uYWljcyM1MzIxI0F1dG9tb3RpdmUgRXF1aXBtZW50IFJlbnRhbCBhbmQgTGVhc2luZyM1MzIKLW5haWNzIzUzMjExI1Bhc3NlbmdlciBDYXIgUmVudGFsIGFuZCBMZWFzaW5nIzUzMjEKLW5haWNzIzUzMjExMSNQYXNzZW5nZXIgQ2FyIFJlbnRhbCM1MzIxMQotbmFpY3MjNTMyMTEyI1Bhc3NlbmdlciBDYXIgTGVhc2luZyM1MzIxMQotbmFpY3MjNTMyMTIjVHJ1Y2ssIFV0aWxpdHkgVHJhaWxlciwgYW5kIFJWIChSZWNyZWF0aW9uYWwgVmVoaWNsZSkgUmVudGFsIGFuZCBMZWFzaW5nIzUzMjEKLW5haWNzIzUzMjIjQ29uc3VtZXIgR29vZHMgUmVudGFsIzUzMgotbmFpY3MjNTMyMjEjQ29uc3VtZXIgRWxlY3Ryb25pY3MgYW5kIEFwcGxpYW5jZXMgUmVudGFsIzUzMjIKLW5haWNzIzUzMjIyI0Zvcm1hbCBXZWFyIGFuZCBDb3N0dW1lIFJlbnRhbCM1MzIyCi1uYWljcyM1MzIyMyNWaWRlbyBUYXBlIGFuZCBEaXNjIFJlbnRhbCM1MzIyCi1uYWljcyM1MzIyOSNPdGhlciBDb25zdW1lciBHb29kcyBSZW50YWwjNTMyMgotbmFpY3MjNTMyMjkxI0hvbWUgSGVhbHRoIEVxdWlwbWVudCBSZW50YWwjNTMyMjkKLW5haWNzIzUzMjI5MiNSZWNyZWF0aW9uYWwgR29vZHMgUmVudGFsIzUzMjI5Ci1uYWljcyM1MzIyOTkjQWxsIE90aGVyIENvbnN1bWVyIEdvb2RzIFJlbnRhbCM1MzIyOQotbmFpY3MjNTMyMyNHZW5lcmFsIFJlbnRhbCBDZW50ZXJzIzUzMgotbmFpY3MjNTMyMzEjR2VuZXJhbCBSZW50YWwgQ2VudGVycyM1MzIzCi1uYWljcyM1MzI0I0NvbW1lcmNpYWwgYW5kIEluZHVzdHJpYWwgTWFjaGluZXJ5IGFuZCBFcXVpcG1lbnQgUmVudGFsIGFuZCBMZWFzaW5nIzUzMgotbmFpY3MjNTMyNDEjQ29uc3RydWN0aW9uLCBUcmFuc3BvcnRhdGlvbiwgTWluaW5nLCBhbmQgRm9yZXN0cnkgTWFjaGluZXJ5IGFuZCBFcXVpcG1lbnQgUmVudGFsIGFuZCBMZWFzaW5nIzUzMjQKLW5haWNzIzUzMjQxMSNDb21tZXJjaWFsIEFpciwgUmFpbCwgYW5kIFdhdGVyIFRyYW5zcG9ydGF0aW9uIEVxdWlwbWVudCBSZW50YWwgYW5kIExlYXNpbmcjNTMyNDEKLW5haWNzIzUzMjQxMiNDb25zdHJ1Y3Rpb24sIE1pbmluZywgYW5kIEZvcmVzdHJ5IE1hY2hpbmVyeSBhbmQgRXF1aXBtZW50IFJlbnRhbCBhbmQgTGVhc2luZyM1MzI0MQotbmFpY3MjNTMyNDIjT2ZmaWNlIE1hY2hpbmVyeSBhbmQgRXF1aXBtZW50IFJlbnRhbCBhbmQgTGVhc2luZyM1MzI0Ci1uYWljcyM1MzI0OSNPdGhlciBDb21tZXJjaWFsIGFuZCBJbmR1c3RyaWFsIE1hY2hpbmVyeSBhbmQgRXF1aXBtZW50IFJlbnRhbCBhbmQgTGVhc2luZyM1MzI0Ci1uYWljcyM1MzMjTGVzc29ycyBvZiBOb25maW5hbmNpYWwgSW50YW5naWJsZSBBc3NldHMgKGV4Y2VwdCBDb3B5cmlnaHRlZCBXb3JrcykjNTMKLW5haWNzIzUzMzEjTGVzc29ycyBvZiBOb25maW5hbmNpYWwgSW50YW5naWJsZSBBc3NldHMgKGV4Y2VwdCBDb3B5cmlnaHRlZCBXb3JrcykjNTMzCi1uYWljcyM1MzMxMSNMZXNzb3JzIG9mIE5vbmZpbmFuY2lhbCBJbnRhbmdpYmxlIEFzc2V0cyAoZXhjZXB0IENvcHlyaWdodGVkIFdvcmtzKSM1MzMxCi1uYWljcyM1NCNQcm9mZXNzaW9uYWwsIFNjaWVudGlmaWMsIGFuZCBUZWNobmljYWwgU2VydmljZXMjNTQKLW5haWNzIzU0MSNQcm9mZXNzaW9uYWwsIFNjaWVudGlmaWMsIGFuZCBUZWNobmljYWwgU2VydmljZXMjNTQKLW5haWNzIzU0MTEjTGVnYWwgU2VydmljZXMjNTQxCi1uYWljcyM1NDExMSNPZmZpY2VzIG9mIExhd3llcnMjNTQxMQotbmFpY3MjNTQxMTIjT2ZmaWNlcyBvZiBOb3RhcmllcyM1NDExCi1uYWljcyM1NDExOSNPdGhlciBMZWdhbCBTZXJ2aWNlcyM1NDExCi1uYWljcyM1NDExOTEjVGl0bGUgQWJzdHJhY3QgYW5kIFNldHRsZW1lbnQgT2ZmaWNlcyM1NDExOQotbmFpY3MjNTQxMTk5I0FsbCBPdGhlciBMZWdhbCBTZXJ2aWNlcyM1NDExOQotbmFpY3MjNTQxMiNBY2NvdW50aW5nLCBUYXggUHJlcGFyYXRpb24sIEJvb2trZWVwaW5nLCBhbmQgUGF5cm9sbCBTZXJ2aWNlcyM1NDEKLW5haWNzIzU0MTIxI0FjY291bnRpbmcsIFRheCBQcmVwYXJhdGlvbiwgQm9va2tlZXBpbmcsIGFuZCBQYXlyb2xsIFNlcnZpY2VzIzU0MTIKLW5haWNzIzU0MTIxMSNPZmZpY2VzIG9mIENlcnRpZmllZCBQdWJsaWMgQWNjb3VudGFudHMjNTQxMjEKLW5haWNzIzU0MTIxMyNUYXggUHJlcGFyYXRpb24gU2VydmljZXMjNTQxMjEKLW5haWNzIzU0MTIxNCNQYXlyb2xsIFNlcnZpY2VzIzU0MTIxCi1uYWljcyM1NDEyMTkjT3RoZXIgQWNjb3VudGluZyBTZXJ2aWNlcyM1NDEyMQotbmFpY3MjNTQxMyNBcmNoaXRlY3R1cmFsLCBFbmdpbmVlcmluZywgYW5kIFJlbGF0ZWQgU2VydmljZXMjNTQxCi1uYWljcyM1NDEzMSNBcmNoaXRlY3R1cmFsIFNlcnZpY2VzIzU0MTMKLW5haWNzIzU0MTMyI0xhbmRzY2FwZSBBcmNoaXRlY3R1cmFsIFNlcnZpY2VzIzU0MTMKLW5haWNzIzU0MTMzI0VuZ2luZWVyaW5nIFNlcnZpY2VzIzU0MTMKLW5haWNzIzU0MTM0I0RyYWZ0aW5nIFNlcnZpY2VzIzU0MTMKLW5haWNzIzU0MTM1I0J1aWxkaW5nIEluc3BlY3Rpb24gU2VydmljZXMjNTQxMwotbmFpY3MjNTQxMzYjR2VvcGh5c2ljYWwgU3VydmV5aW5nIGFuZCBNYXBwaW5nIFNlcnZpY2VzIzU0MTMKLW5haWNzIzU0MTM3I1N1cnZleWluZyBhbmQgTWFwcGluZyAoZXhjZXB0IEdlb3BoeXNpY2FsKSBTZXJ2aWNlcyM1NDEzCi1uYWljcyM1NDEzOCNUZXN0aW5nIExhYm9yYXRvcmllcyM1NDEzCi1uYWljcyM1NDE0I1NwZWNpYWxpemVkIERlc2lnbiBTZXJ2aWNlcyM1NDEKLW5haWNzIzU0MTQxI0ludGVyaW9yIERlc2lnbiBTZXJ2aWNlcyM1NDE0Ci1uYWljcyM1NDE0MiNJbmR1c3RyaWFsIERlc2lnbiBTZXJ2aWNlcyM1NDE0Ci1uYWljcyM1NDE0MyNHcmFwaGljIERlc2lnbiBTZXJ2aWNlcyM1NDE0Ci1uYWljcyM1NDE0OSNPdGhlciBTcGVjaWFsaXplZCBEZXNpZ24gU2VydmljZXMjNTQxNAotbmFpY3MjNTQxNSNDb21wdXRlciBTeXN0ZW1zIERlc2lnbiBhbmQgUmVsYXRlZCBTZXJ2aWNlcyM1NDEKLW5haWNzIzU0MTUxI0NvbXB1dGVyIFN5c3RlbXMgRGVzaWduIGFuZCBSZWxhdGVkIFNlcnZpY2VzIzU0MTUKLW5haWNzIzU0MTUxMSNDdXN0b20gQ29tcHV0ZXIgUHJvZ3JhbW1pbmcgU2VydmljZXMjNTQxNTEKLW5haWNzIzU0MTUxMiNDb21wdXRlciBTeXN0ZW1zIERlc2lnbiBTZXJ2aWNlcyM1NDE1MQotbmFpY3MjNTQxNTEzI0NvbXB1dGVyIEZhY2lsaXRpZXMgTWFuYWdlbWVudCBTZXJ2aWNlcyM1NDE1MQotbmFpY3MjNTQxNTE5I090aGVyIENvbXB1dGVyIFJlbGF0ZWQgU2VydmljZXMjNTQxNTEKLW5haWNzIzU0MTYjTWFuYWdlbWVudCwgU2NpZW50aWZpYywgYW5kIFRlY2huaWNhbCBDb25zdWx0aW5nIFNlcnZpY2VzIzU0MQotbmFpY3MjNTQxNjEjTWFuYWdlbWVudCBDb25zdWx0aW5nIFNlcnZpY2VzIzU0MTYKLW5haWNzIzU0MTYxMSNBZG1pbmlzdHJhdGl2ZSBNYW5hZ2VtZW50IGFuZCBHZW5lcmFsIE1hbmFnZW1lbnQgQ29uc3VsdGluZyBTZXJ2aWNlcyM1NDE2MQotbmFpY3MjNTQxNjEyI0h1bWFuIFJlc291cmNlcyBhbmQgRXhlY3V0aXZlIFNlYXJjaCBDb25zdWx0aW5nIFNlcnZpY2VzIzU0MTYxCi1uYWljcyM1NDE2MTMjTWFya2V0aW5nIENvbnN1bHRpbmcgU2VydmljZXMjNTQxNjEKLW5haWNzIzU0MTYxNCNQcm9jZXNzLCBQaHlzaWNhbCBEaXN0cmlidXRpb24sIGFuZCBMb2dpc3RpY3MgQ29uc3VsdGluZyBTZXJ2aWNlcyM1NDE2MQotbmFpY3MjNTQxNjE4I090aGVyIE1hbmFnZW1lbnQgQ29uc3VsdGluZyBTZXJ2aWNlcyM1NDE2MQotbmFpY3MjNTQxNjIjRW52aXJvbm1lbnRhbCBDb25zdWx0aW5nIFNlcnZpY2VzIzU0MTYKLW5haWNzIzU0MTY5I090aGVyIFNjaWVudGlmaWMgYW5kIFRlY2huaWNhbCBDb25zdWx0aW5nIFNlcnZpY2VzIzU0MTYKLW5haWNzIzU0MTcjU2NpZW50aWZpYyBSZXNlYXJjaCBhbmQgRGV2ZWxvcG1lbnQgU2VydmljZXMjNTQxCi1uYWljcyM1NDE3MSNSZXNlYXJjaCBhbmQgRGV2ZWxvcG1lbnQgaW4gdGhlIFBoeXNpY2FsLCBFbmdpbmVlcmluZywgYW5kIExpZmUgU2NpZW5jZXMjNTQxNwotbmFpY3MjNTQxNzIjUmVzZWFyY2ggYW5kIERldmVsb3BtZW50IGluIHRoZSBTb2NpYWwgU2NpZW5jZXMgYW5kIEh1bWFuaXRpZXMjNTQxNwotbmFpY3MjNTQxOCNBZHZlcnRpc2luZyBhbmQgUmVsYXRlZCBTZXJ2aWNlcyM1NDEKLW5haWNzIzU0MTgxI0FkdmVydGlzaW5nIEFnZW5jaWVzIzU0MTgKLW5haWNzIzU0MTgyI1B1YmxpYyBSZWxhdGlvbnMgQWdlbmNpZXMjNTQxOAotbmFpY3MjNTQxODMjTWVkaWEgQnV5aW5nIEFnZW5jaWVzIzU0MTgKLW5haWNzIzU0MTg0I01lZGlhIFJlcHJlc2VudGF0aXZlcyM1NDE4Ci1uYWljcyM1NDE4NSNEaXNwbGF5IEFkdmVydGlzaW5nIzU0MTgKLW5haWNzIzU0MTg2I0RpcmVjdCBNYWlsIEFkdmVydGlzaW5nIzU0MTgKLW5haWNzIzU0MTg3I0FkdmVydGlzaW5nIE1hdGVyaWFsIERpc3RyaWJ1dGlvbiBTZXJ2aWNlcyM1NDE4Ci1uYWljcyM1NDE4OSNPdGhlciBTZXJ2aWNlcyBSZWxhdGVkIHRvIEFkdmVydGlzaW5nIzU0MTgKLW5haWNzIzU0MTkjT3RoZXIgUHJvZmVzc2lvbmFsLCBTY2llbnRpZmljLCBhbmQgVGVjaG5pY2FsIFNlcnZpY2VzIzU0MQotbmFpY3MjNTQxOTEjTWFya2V0aW5nIFJlc2VhcmNoIGFuZCBQdWJsaWMgT3BpbmlvbiBQb2xsaW5nIzU0MTkKLW5haWNzIzU0MTkyI1Bob3RvZ3JhcGhpYyBTZXJ2aWNlcyM1NDE5Ci1uYWljcyM1NDE5MjEjUGhvdG9ncmFwaHkgU3R1ZGlvcywgUG9ydHJhaXQjNTQxOTIKLW5haWNzIzU0MTkyMiNDb21tZXJjaWFsIFBob3RvZ3JhcGh5IzU0MTkyCi1uYWljcyM1NDE5MyNUcmFuc2xhdGlvbiBhbmQgSW50ZXJwcmV0YXRpb24gU2VydmljZXMjNTQxOQotbmFpY3MjNTQxOTQjVmV0ZXJpbmFyeSBTZXJ2aWNlcyM1NDE5Ci1uYWljcyM1NDE5OSNBbGwgT3RoZXIgUHJvZmVzc2lvbmFsLCBTY2llbnRpZmljLCBhbmQgVGVjaG5pY2FsIFNlcnZpY2VzIzU0MTkKLW5haWNzIzU1I01hbmFnZW1lbnQgb2YgQ29tcGFuaWVzIGFuZCBFbnRlcnByaXNlcyM1NQotbmFpY3MjNTUxI01hbmFnZW1lbnQgb2YgQ29tcGFuaWVzIGFuZCBFbnRlcnByaXNlcyM1NQotbmFpY3MjNTUxMSNNYW5hZ2VtZW50IG9mIENvbXBhbmllcyBhbmQgRW50ZXJwcmlzZXMjNTUxCi1uYWljcyM1NTExMSNNYW5hZ2VtZW50IG9mIENvbXBhbmllcyBhbmQgRW50ZXJwcmlzZXMjNTUxMQotbmFpY3MjNTUxMTExI09mZmljZXMgb2YgQmFuayBIb2xkaW5nIENvbXBhbmllcyM1NTExMQotbmFpY3MjNTUxMTEyI09mZmljZXMgb2YgT3RoZXIgSG9sZGluZyBDb21wYW5pZXMjNTUxMTEKLW5haWNzIzU1MTExNCNDb3Jwb3JhdGUsIFN1YnNpZGlhcnksIGFuZCBSZWdpb25hbCBNYW5hZ2luZyBPZmZpY2VzIzU1MTExCi1uYWljcyM1NiNBZG1pbmlzdHJhdGl2ZSBhbmQgU3VwcG9ydCBhbmQgV2FzdGUgTWFuYWdlbWVudCBhbmQgUmVtZWRpYXRpb24gU2VydmljZXMjNTYKLW5haWNzIzU2MSNBZG1pbmlzdHJhdGl2ZSBhbmQgU3VwcG9ydCBTZXJ2aWNlcyM1NgotbmFpY3MjNTYxMSNPZmZpY2UgQWRtaW5pc3RyYXRpdmUgU2VydmljZXMjNTYxCi1uYWljcyM1NjExMSNPZmZpY2UgQWRtaW5pc3RyYXRpdmUgU2VydmljZXMjNTYxMQotbmFpY3MjNTYxMiNGYWNpbGl0aWVzIFN1cHBvcnQgU2VydmljZXMjNTYxCi1uYWljcyM1NjEyMSNGYWNpbGl0aWVzIFN1cHBvcnQgU2VydmljZXMjNTYxMgotbmFpY3MjNTYxMyNFbXBsb3ltZW50IFNlcnZpY2VzIzU2MQotbmFpY3MjNTYxMzEjRW1wbG95bWVudCBQbGFjZW1lbnQgQWdlbmNpZXMjNTYxMwotbmFpY3MjNTYxMzIjVGVtcG9yYXJ5IEhlbHAgU2VydmljZXMjNTYxMwotbmFpY3MjNTYxMzMjRW1wbG95ZWUgTGVhc2luZyBTZXJ2aWNlcyM1NjEzCi1uYWljcyM1NjE0I0J1c2luZXNzIFN1cHBvcnQgU2VydmljZXMjNTYxCi1uYWljcyM1NjE0MSNEb2N1bWVudCBQcmVwYXJhdGlvbiBTZXJ2aWNlcyM1NjE0Ci1uYWljcyM1NjE0MiNUZWxlcGhvbmUgQ2FsbCBDZW50ZXJzIzU2MTQKLW5haWNzIzU2MTQyMSNUZWxlcGhvbmUgQW5zd2VyaW5nIFNlcnZpY2VzIzU2MTQyCi1uYWljcyM1NjE0MjIjVGVsZW1hcmtldGluZyBCdXJlYXVzIzU2MTQyCi1uYWljcyM1NjE0MyNCdXNpbmVzcyBTZXJ2aWNlIENlbnRlcnMjNTYxNAotbmFpY3MjNTYxNDMxI1ByaXZhdGUgTWFpbCBDZW50ZXJzIzU2MTQzCi1uYWljcyM1NjE0MzkjT3RoZXIgQnVzaW5lc3MgU2VydmljZSBDZW50ZXJzIChpbmNsdWRpbmcgQ29weSBTaG9wcykjNTYxNDMKLW5haWNzIzU2MTQ0I0NvbGxlY3Rpb24gQWdlbmNpZXMjNTYxNAotbmFpY3MjNTYxNDUjQ3JlZGl0IEJ1cmVhdXMjNTYxNAotbmFpY3MjNTYxNDkjT3RoZXIgQnVzaW5lc3MgU3VwcG9ydCBTZXJ2aWNlcyM1NjE0Ci1uYWljcyM1NjE0OTEjUmVwb3NzZXNzaW9uIFNlcnZpY2VzIzU2MTQ5Ci1uYWljcyM1NjE0OTIjQ291cnQgUmVwb3J0aW5nIGFuZCBTdGVub3R5cGUgU2VydmljZXMjNTYxNDkKLW5haWNzIzU2MTQ5OSNBbGwgT3RoZXIgQnVzaW5lc3MgU3VwcG9ydCBTZXJ2aWNlcyM1NjE0OQotbmFpY3MjNTYxNSNUcmF2ZWwgQXJyYW5nZW1lbnQgYW5kIFJlc2VydmF0aW9uIFNlcnZpY2VzIzU2MQotbmFpY3MjNTYxNTEjVHJhdmVsIEFnZW5jaWVzIzU2MTUKLW5haWNzIzU2MTUyI1RvdXIgT3BlcmF0b3JzIzU2MTUKLW5haWNzIzU2MTU5I090aGVyIFRyYXZlbCBBcnJhbmdlbWVudCBhbmQgUmVzZXJ2YXRpb24gU2VydmljZXMjNTYxNQotbmFpY3MjNTYxNTkxI0NvbnZlbnRpb24gYW5kIFZpc2l0b3JzIEJ1cmVhdXMjNTYxNTkKLW5haWNzIzU2MTU5OSNBbGwgT3RoZXIgVHJhdmVsIEFycmFuZ2VtZW50IGFuZCBSZXNlcnZhdGlvbiBTZXJ2aWNlcyM1NjE1OQotbmFpY3MjNTYxNiNJbnZlc3RpZ2F0aW9uIGFuZCBTZWN1cml0eSBTZXJ2aWNlcyM1NjEKLW5haWNzIzU2MTYxI0ludmVzdGlnYXRpb24sIEd1YXJkLCBhbmQgQXJtb3JlZCBDYXIgU2VydmljZXMjNTYxNgotbmFpY3MjNTYxNjExI0ludmVzdGlnYXRpb24gU2VydmljZXMjNTYxNjEKLW5haWNzIzU2MTYxMiNTZWN1cml0eSBHdWFyZHMgYW5kIFBhdHJvbCBTZXJ2aWNlcyM1NjE2MQotbmFpY3MjNTYxNjEzI0FybW9yZWQgQ2FyIFNlcnZpY2VzIzU2MTYxCi1uYWljcyM1NjE2MiNTZWN1cml0eSBTeXN0ZW1zIFNlcnZpY2VzIzU2MTYKLW5haWNzIzU2MTYyMSNTZWN1cml0eSBTeXN0ZW1zIFNlcnZpY2VzIChleGNlcHQgTG9ja3NtaXRocykjNTYxNjIKLW5haWNzIzU2MTYyMiNMb2Nrc21pdGhzIzU2MTYyCi1uYWljcyM1NjE3I1NlcnZpY2VzIHRvIEJ1aWxkaW5ncyBhbmQgRHdlbGxpbmdzIzU2MQotbmFpY3MjNTYxNzEjRXh0ZXJtaW5hdGluZyBhbmQgUGVzdCBDb250cm9sIFNlcnZpY2VzIzU2MTcKLW5haWNzIzU2MTcyI0phbml0b3JpYWwgU2VydmljZXMjNTYxNwotbmFpY3MjNTYxNzMjTGFuZHNjYXBpbmcgU2VydmljZXMjNTYxNwotbmFpY3MjNTYxNzQjQ2FycGV0IGFuZCBVcGhvbHN0ZXJ5IENsZWFuaW5nIFNlcnZpY2VzIzU2MTcKLW5haWNzIzU2MTc5I090aGVyIFNlcnZpY2VzIHRvIEJ1aWxkaW5ncyBhbmQgRHdlbGxpbmdzIzU2MTcKLW5haWNzIzU2MTkjT3RoZXIgU3VwcG9ydCBTZXJ2aWNlcyM1NjEKLW5haWNzIzU2MTkxI1BhY2thZ2luZyBhbmQgTGFiZWxpbmcgU2VydmljZXMjNTYxOQotbmFpY3MjNTYxOTIjQ29udmVudGlvbiBhbmQgVHJhZGUgU2hvdyBPcmdhbml6ZXJzIzU2MTkKLW5haWNzIzU2MTk5I0FsbCBPdGhlciBTdXBwb3J0IFNlcnZpY2VzIzU2MTkKLW5haWNzIzU2MiNXYXN0ZSBNYW5hZ2VtZW50IGFuZCBSZW1lZGlhdGlvbiBTZXJ2aWNlcyM1NgotbmFpY3MjNTYyMSNXYXN0ZSBDb2xsZWN0aW9uIzU2MgotbmFpY3MjNTYyMTEjV2FzdGUgQ29sbGVjdGlvbiM1NjIxCi1uYWljcyM1NjIxMTEjU29saWQgV2FzdGUgQ29sbGVjdGlvbiM1NjIxMQotbmFpY3MjNTYyMTEyI0hhemFyZG91cyBXYXN0ZSBDb2xsZWN0aW9uIzU2MjExCi1uYWljcyM1NjIxMTkjT3RoZXIgV2FzdGUgQ29sbGVjdGlvbiM1NjIxMQotbmFpY3MjNTYyMiNXYXN0ZSBUcmVhdG1lbnQgYW5kIERpc3Bvc2FsIzU2MgotbmFpY3MjNTYyMjEjV2FzdGUgVHJlYXRtZW50IGFuZCBEaXNwb3NhbCM1NjIyCi1uYWljcyM1NjIyMTEjSGF6YXJkb3VzIFdhc3RlIFRyZWF0bWVudCBhbmQgRGlzcG9zYWwjNTYyMjEKLW5haWNzIzU2MjIxMiNTb2xpZCBXYXN0ZSBMYW5kZmlsbCM1NjIyMQotbmFpY3MjNTYyMjEzI1NvbGlkIFdhc3RlIENvbWJ1c3RvcnMgYW5kIEluY2luZXJhdG9ycyM1NjIyMQotbmFpY3MjNTYyMjE5I090aGVyIE5vbmhhemFyZG91cyBXYXN0ZSBUcmVhdG1lbnQgYW5kIERpc3Bvc2FsIzU2MjIxCi1uYWljcyM1NjI5I1JlbWVkaWF0aW9uIGFuZCBPdGhlciBXYXN0ZSBNYW5hZ2VtZW50IFNlcnZpY2VzIzU2MgotbmFpY3MjNTYyOTEjUmVtZWRpYXRpb24gU2VydmljZXMjNTYyOQotbmFpY3MjNTYyOTIjTWF0ZXJpYWxzIFJlY292ZXJ5IEZhY2lsaXRpZXMjNTYyOQotbmFpY3MjNTYyOTkjQWxsIE90aGVyIFdhc3RlIE1hbmFnZW1lbnQgU2VydmljZXMjNTYyOQotbmFpY3MjNTYyOTkxI1NlcHRpYyBUYW5rIGFuZCBSZWxhdGVkIFNlcnZpY2VzIzU2Mjk5Ci1uYWljcyM1NjI5OTgjQWxsIE90aGVyIE1pc2NlbGxhbmVvdXMgV2FzdGUgTWFuYWdlbWVudCBTZXJ2aWNlcyM1NjI5OQotbmFpY3MjNjEjRWR1Y2F0aW9uYWwgU2VydmljZXMjNjEKLW5haWNzIzYxMSNFZHVjYXRpb25hbCBTZXJ2aWNlcyM2MQotbmFpY3MjNjExMSNFbGVtZW50YXJ5IGFuZCBTZWNvbmRhcnkgU2Nob29scyM2MTEKLW5haWNzIzYxMTExI0VsZW1lbnRhcnkgYW5kIFNlY29uZGFyeSBTY2hvb2xzIzYxMTEKLW5haWNzIzYxMTIjSnVuaW9yIENvbGxlZ2VzIzYxMQotbmFpY3MjNjExMjEjSnVuaW9yIENvbGxlZ2VzIzYxMTIKLW5haWNzIzYxMTMjQ29sbGVnZXMsIFVuaXZlcnNpdGllcywgYW5kIFByb2Zlc3Npb25hbCBTY2hvb2xzIzYxMQotbmFpY3MjNjExMzEjQ29sbGVnZXMsIFVuaXZlcnNpdGllcywgYW5kIFByb2Zlc3Npb25hbCBTY2hvb2xzIzYxMTMKLW5haWNzIzYxMTQjQnVzaW5lc3MgU2Nob29scyBhbmQgQ29tcHV0ZXIgYW5kIE1hbmFnZW1lbnQgVHJhaW5pbmcjNjExCi1uYWljcyM2MTE0MSNCdXNpbmVzcyBhbmQgU2VjcmV0YXJpYWwgU2Nob29scyM2MTE0Ci1uYWljcyM2MTE0MiNDb21wdXRlciBUcmFpbmluZyM2MTE0Ci1uYWljcyM2MTE0MyNQcm9mZXNzaW9uYWwgYW5kIE1hbmFnZW1lbnQgRGV2ZWxvcG1lbnQgVHJhaW5pbmcjNjExNAotbmFpY3MjNjExNSNUZWNobmljYWwgYW5kIFRyYWRlIFNjaG9vbHMjNjExCi1uYWljcyM2MTE1MSNUZWNobmljYWwgYW5kIFRyYWRlIFNjaG9vbHMjNjExNQotbmFpY3MjNjExNTExI0Nvc21ldG9sb2d5IGFuZCBCYXJiZXIgU2Nob29scyM2MTE1MQotbmFpY3MjNjExNTEyI0ZsaWdodCBUcmFpbmluZyM2MTE1MQotbmFpY3MjNjExNTEzI0FwcHJlbnRpY2VzaGlwIFRyYWluaW5nIzYxMTUxCi1uYWljcyM2MTE1MTkjT3RoZXIgVGVjaG5pY2FsIGFuZCBUcmFkZSBTY2hvb2xzIzYxMTUxCi1uYWljcyM2MTE2I090aGVyIFNjaG9vbHMgYW5kIEluc3RydWN0aW9uIzYxMQotbmFpY3MjNjExNjEjRmluZSBBcnRzIFNjaG9vbHMjNjExNgotbmFpY3MjNjExNjIjU3BvcnRzIGFuZCBSZWNyZWF0aW9uIEluc3RydWN0aW9uIzYxMTYKLW5haWNzIzYxMTYzI0xhbmd1YWdlIFNjaG9vbHMjNjExNgotbmFpY3MjNjExNjkjQWxsIE90aGVyIFNjaG9vbHMgYW5kIEluc3RydWN0aW9uIzYxMTYKLW5haWNzIzYxMTY5MSNFeGFtIFByZXBhcmF0aW9uIGFuZCBUdXRvcmluZyM2MTE2OQotbmFpY3MjNjExNjkyI0F1dG9tb2JpbGUgRHJpdmluZyBTY2hvb2xzIzYxMTY5Ci1uYWljcyM2MTE2OTkjQWxsIE90aGVyIE1pc2NlbGxhbmVvdXMgU2Nob29scyBhbmQgSW5zdHJ1Y3Rpb24jNjExNjkKLW5haWNzIzYxMTcjRWR1Y2F0aW9uYWwgU3VwcG9ydCBTZXJ2aWNlcyM2MTEKLW5haWNzIzYxMTcxI0VkdWNhdGlvbmFsIFN1cHBvcnQgU2VydmljZXMjNjExNwotbmFpY3MjNjIjSGVhbHRoIENhcmUgYW5kIFNvY2lhbCBBc3Npc3RhbmNlIzYyCi1uYWljcyM2MjEjQW1idWxhdG9yeSBIZWFsdGggQ2FyZSBTZXJ2aWNlcyM2MgotbmFpY3MjNjIxMSNPZmZpY2VzIG9mIFBoeXNpY2lhbnMjNjIxCi1uYWljcyM2MjExMSNPZmZpY2VzIG9mIFBoeXNpY2lhbnMjNjIxMQotbmFpY3MjNjIxMTExI09mZmljZXMgb2YgUGh5c2ljaWFucyAoZXhjZXB0IE1lbnRhbCBIZWFsdGggU3BlY2lhbGlzdHMpIzYyMTExCi1uYWljcyM2MjExMTIjT2ZmaWNlcyBvZiBQaHlzaWNpYW5zLCBNZW50YWwgSGVhbHRoIFNwZWNpYWxpc3RzIzYyMTExCi1uYWljcyM2MjEyI09mZmljZXMgb2YgRGVudGlzdHMjNjIxCi1uYWljcyM2MjEyMSNPZmZpY2VzIG9mIERlbnRpc3RzIzYyMTIKLW5haWNzIzYyMTMjT2ZmaWNlcyBvZiBPdGhlciBIZWFsdGggUHJhY3RpdGlvbmVycyM2MjEKLW5haWNzIzYyMTMxI09mZmljZXMgb2YgQ2hpcm9wcmFjdG9ycyM2MjEzCi1uYWljcyM2MjEzMiNPZmZpY2VzIG9mIE9wdG9tZXRyaXN0cyM2MjEzCi1uYWljcyM2MjEzMyNPZmZpY2VzIG9mIE1lbnRhbCBIZWFsdGggUHJhY3RpdGlvbmVycyAoZXhjZXB0IFBoeXNpY2lhbnMpIzYyMTMKLW5haWNzIzYyMTM0I09mZmljZXMgb2YgUGh5c2ljYWwsIE9jY3VwYXRpb25hbCBhbmQgU3BlZWNoIFRoZXJhcGlzdHMsIGFuZCBBdWRpb2xvZ2lzdHMjNjIxMwotbmFpY3MjNjIxMzkjT2ZmaWNlcyBvZiBBbGwgT3RoZXIgSGVhbHRoIFByYWN0aXRpb25lcnMjNjIxMwotbmFpY3MjNjIxMzkxI09mZmljZXMgb2YgUG9kaWF0cmlzdHMjNjIxMzkKLW5haWNzIzYyMTM5OSNPZmZpY2VzIG9mIEFsbCBPdGhlciBNaXNjZWxsYW5lb3VzIEhlYWx0aCBQcmFjdGl0aW9uZXJzIzYyMTM5Ci1uYWljcyM2MjE0I091dHBhdGllbnQgQ2FyZSBDZW50ZXJzIzYyMQotbmFpY3MjNjIxNDEjRmFtaWx5IFBsYW5uaW5nIENlbnRlcnMjNjIxNAotbmFpY3MjNjIxNDIjT3V0cGF0aWVudCBNZW50YWwgSGVhbHRoIGFuZCBTdWJzdGFuY2UgQWJ1c2UgQ2VudGVycyM2MjE0Ci1uYWljcyM2MjE0OSNPdGhlciBPdXRwYXRpZW50IENhcmUgQ2VudGVycyM2MjE0Ci1uYWljcyM2MjE0OTEjSE1PIE1lZGljYWwgQ2VudGVycyM2MjE0OQotbmFpY3MjNjIxNDkyI0tpZG5leSBEaWFseXNpcyBDZW50ZXJzIzYyMTQ5Ci1uYWljcyM2MjE0OTMjRnJlZXN0YW5kaW5nIEFtYnVsYXRvcnkgU3VyZ2ljYWwgYW5kIEVtZXJnZW5jeSBDZW50ZXJzIzYyMTQ5Ci1uYWljcyM2MjE0OTgjQWxsIE90aGVyIE91dHBhdGllbnQgQ2FyZSBDZW50ZXJzIzYyMTQ5Ci1uYWljcyM2MjE1I01lZGljYWwgYW5kIERpYWdub3N0aWMgTGFib3JhdG9yaWVzIzYyMQotbmFpY3MjNjIxNTEjTWVkaWNhbCBhbmQgRGlhZ25vc3RpYyBMYWJvcmF0b3JpZXMjNjIxNQotbmFpY3MjNjIxNTExI01lZGljYWwgTGFib3JhdG9yaWVzIzYyMTUxCi1uYWljcyM2MjE1MTIjRGlhZ25vc3RpYyBJbWFnaW5nIENlbnRlcnMjNjIxNTEKLW5haWNzIzYyMTYjSG9tZSBIZWFsdGggQ2FyZSBTZXJ2aWNlcyM2MjEKLW5haWNzIzYyMTYxI0hvbWUgSGVhbHRoIENhcmUgU2VydmljZXMjNjIxNgotbmFpY3MjNjIxOSNPdGhlciBBbWJ1bGF0b3J5IEhlYWx0aCBDYXJlIFNlcnZpY2VzIzYyMQotbmFpY3MjNjIxOTEjQW1idWxhbmNlIFNlcnZpY2VzIzYyMTkKLW5haWNzIzYyMTk5I0FsbCBPdGhlciBBbWJ1bGF0b3J5IEhlYWx0aCBDYXJlIFNlcnZpY2VzIzYyMTkKLW5haWNzIzYyMTk5MSNCbG9vZCBhbmQgT3JnYW4gQmFua3MjNjIxOTkKLW5haWNzIzYyMTk5OSNBbGwgT3RoZXIgTWlzY2VsbGFuZW91cyBBbWJ1bGF0b3J5IEhlYWx0aCBDYXJlIFNlcnZpY2VzIzYyMTk5Ci1uYWljcyM2MjIjSG9zcGl0YWxzIzYyCi1uYWljcyM2MjIxI0dlbmVyYWwgTWVkaWNhbCBhbmQgU3VyZ2ljYWwgSG9zcGl0YWxzIzYyMgotbmFpY3MjNjIyMTEjR2VuZXJhbCBNZWRpY2FsIGFuZCBTdXJnaWNhbCBIb3NwaXRhbHMjNjIyMQotbmFpY3MjNjIyMiNQc3ljaGlhdHJpYyBhbmQgU3Vic3RhbmNlIEFidXNlIEhvc3BpdGFscyM2MjIKLW5haWNzIzYyMjIxI1BzeWNoaWF0cmljIGFuZCBTdWJzdGFuY2UgQWJ1c2UgSG9zcGl0YWxzIzYyMjIKLW5haWNzIzYyMjMjU3BlY2lhbHR5IChleGNlcHQgUHN5Y2hpYXRyaWMgYW5kIFN1YnN0YW5jZSBBYnVzZSkgSG9zcGl0YWxzIzYyMgotbmFpY3MjNjIyMzEjU3BlY2lhbHR5IChleGNlcHQgUHN5Y2hpYXRyaWMgYW5kIFN1YnN0YW5jZSBBYnVzZSkgSG9zcGl0YWxzIzYyMjMKLW5haWNzIzYyMyNOdXJzaW5nIGFuZCBSZXNpZGVudGlhbCBDYXJlIEZhY2lsaXRpZXMjNjIKLW5haWNzIzYyMzEjTnVyc2luZyBDYXJlIEZhY2lsaXRpZXMjNjIzCi1uYWljcyM2MjMxMSNOdXJzaW5nIENhcmUgRmFjaWxpdGllcyM2MjMxCi1uYWljcyM2MjMyI1Jlc2lkZW50aWFsIE1lbnRhbCBSZXRhcmRhdGlvbiwgTWVudGFsIEhlYWx0aCBhbmQgU3Vic3RhbmNlIEFidXNlIEZhY2lsaXRpZXMjNjIzCi1uYWljcyM2MjMyMSNSZXNpZGVudGlhbCBNZW50YWwgUmV0YXJkYXRpb24gRmFjaWxpdGllcyM2MjMyCi1uYWljcyM2MjMyMiNSZXNpZGVudGlhbCBNZW50YWwgSGVhbHRoIGFuZCBTdWJzdGFuY2UgQWJ1c2UgRmFjaWxpdGllcyM2MjMyCi1uYWljcyM2MjMzI0NvbW11bml0eSBDYXJlIEZhY2lsaXRpZXMgZm9yIHRoZSBFbGRlcmx5IzYyMwotbmFpY3MjNjIzMzEjQ29tbXVuaXR5IENhcmUgRmFjaWxpdGllcyBmb3IgdGhlIEVsZGVybHkjNjIzMwotbmFpY3MjNjIzMzExI0NvbnRpbnVpbmcgQ2FyZSBSZXRpcmVtZW50IENvbW11bml0aWVzIzYyMzMxCi1uYWljcyM2MjMzMTIjSG9tZXMgZm9yIHRoZSBFbGRlcmx5IzYyMzMxCi1uYWljcyM2MjM5I090aGVyIFJlc2lkZW50aWFsIENhcmUgRmFjaWxpdGllcyM2MjMKLW5haWNzIzYyMzk5I090aGVyIFJlc2lkZW50aWFsIENhcmUgRmFjaWxpdGllcyM2MjM5Ci1uYWljcyM2MjQjU29jaWFsIEFzc2lzdGFuY2UjNjIKLW5haWNzIzYyNDEjSW5kaXZpZHVhbCBhbmQgRmFtaWx5IFNlcnZpY2VzIzYyNAotbmFpY3MjNjI0MTEjQ2hpbGQgYW5kIFlvdXRoIFNlcnZpY2VzIzYyNDEKLW5haWNzIzYyNDEyI1NlcnZpY2VzIGZvciB0aGUgRWxkZXJseSBhbmQgUGVyc29ucyB3aXRoIERpc2FiaWxpdGllcyM2MjQxCi1uYWljcyM2MjQxOSNPdGhlciBJbmRpdmlkdWFsIGFuZCBGYW1pbHkgU2VydmljZXMjNjI0MQotbmFpY3MjNjI0MiNDb21tdW5pdHkgRm9vZCBhbmQgSG91c2luZywgYW5kIEVtZXJnZW5jeSBhbmQgT3RoZXIgUmVsaWVmIFNlcnZpY2VzIzYyNAotbmFpY3MjNjI0MjEjQ29tbXVuaXR5IEZvb2QgU2VydmljZXMjNjI0MgotbmFpY3MjNjI0MjIjQ29tbXVuaXR5IEhvdXNpbmcgU2VydmljZXMjNjI0MgotbmFpY3MjNjI0MjIxI1RlbXBvcmFyeSBTaGVsdGVycyM2MjQyMgotbmFpY3MjNjI0MjI5I090aGVyIENvbW11bml0eSBIb3VzaW5nIFNlcnZpY2VzIzYyNDIyCi1uYWljcyM2MjQyMyNFbWVyZ2VuY3kgYW5kIE90aGVyIFJlbGllZiBTZXJ2aWNlcyM2MjQyCi1uYWljcyM2MjQzI1ZvY2F0aW9uYWwgUmVoYWJpbGl0YXRpb24gU2VydmljZXMjNjI0Ci1uYWljcyM2MjQzMSNWb2NhdGlvbmFsIFJlaGFiaWxpdGF0aW9uIFNlcnZpY2VzIzYyNDMKLW5haWNzIzYyNDQjQ2hpbGQgRGF5IENhcmUgU2VydmljZXMjNjI0Ci1uYWljcyM2MjQ0MSNDaGlsZCBEYXkgQ2FyZSBTZXJ2aWNlcyM2MjQ0Ci1uYWljcyM3MSNBcnRzLCBFbnRlcnRhaW5tZW50LCBhbmQgUmVjcmVhdGlvbiM3MQotbmFpY3MjNzExI1BlcmZvcm1pbmcgQXJ0cywgU3BlY3RhdG9yIFNwb3J0cywgYW5kIFJlbGF0ZWQgSW5kdXN0cmllcyM3MQotbmFpY3MjNzExMSNQZXJmb3JtaW5nIEFydHMgQ29tcGFuaWVzIzcxMQotbmFpY3MjNzExMTEjVGhlYXRlciBDb21wYW5pZXMgYW5kIERpbm5lciBUaGVhdGVycyM3MTExCi1uYWljcyM3MTExMiNEYW5jZSBDb21wYW5pZXMjNzExMQotbmFpY3MjNzExMTMjTXVzaWNhbCBHcm91cHMgYW5kIEFydGlzdHMjNzExMQotbmFpY3MjNzExMTkjT3RoZXIgUGVyZm9ybWluZyBBcnRzIENvbXBhbmllcyM3MTExCi1uYWljcyM3MTEyI1NwZWN0YXRvciBTcG9ydHMjNzExCi1uYWljcyM3MTEyMSNTcGVjdGF0b3IgU3BvcnRzIzcxMTIKLW5haWNzIzcxMTIxMSNTcG9ydHMgVGVhbXMgYW5kIENsdWJzIzcxMTIxCi1uYWljcyM3MTEyMTIjUmFjZXRyYWNrcyM3MTEyMQotbmFpY3MjNzExMjE5I090aGVyIFNwZWN0YXRvciBTcG9ydHMjNzExMjEKLW5haWNzIzcxMTMjUHJvbW90ZXJzIG9mIFBlcmZvcm1pbmcgQXJ0cywgU3BvcnRzLCBhbmQgU2ltaWxhciBFdmVudHMjNzExCi1uYWljcyM3MTEzMSNQcm9tb3RlcnMgb2YgUGVyZm9ybWluZyBBcnRzLCBTcG9ydHMsIGFuZCBTaW1pbGFyIEV2ZW50cyB3aXRoIEZhY2lsaXRpZXMjNzExMwotbmFpY3MjNzExMzIjUHJvbW90ZXJzIG9mIFBlcmZvcm1pbmcgQXJ0cywgU3BvcnRzLCBhbmQgU2ltaWxhciBFdmVudHMgd2l0aG91dCBGYWNpbGl0aWVzIzcxMTMKLW5haWNzIzcxMTQjQWdlbnRzIGFuZCBNYW5hZ2VycyBmb3IgQXJ0aXN0cywgQXRobGV0ZXMsIEVudGVydGFpbmVycywgYW5kIE90aGVyIFB1YmxpYyBGaWd1cmVzIzcxMQotbmFpY3MjNzExNDEjQWdlbnRzIGFuZCBNYW5hZ2VycyBmb3IgQXJ0aXN0cywgQXRobGV0ZXMsIEVudGVydGFpbmVycywgYW5kIE90aGVyIFB1YmxpYyBGaWd1cmVzIzcxMTQKLW5haWNzIzcxMTUjSW5kZXBlbmRlbnQgQXJ0aXN0cywgV3JpdGVycywgYW5kIFBlcmZvcm1lcnMjNzExCi1uYWljcyM3MTE1MSNJbmRlcGVuZGVudCBBcnRpc3RzLCBXcml0ZXJzLCBhbmQgUGVyZm9ybWVycyM3MTE1Ci1uYWljcyM3MTIjTXVzZXVtcywgSGlzdG9yaWNhbCBTaXRlcywgYW5kIFNpbWlsYXIgSW5zdGl0dXRpb25zIzcxCi1uYWljcyM3MTIxI011c2V1bXMsIEhpc3RvcmljYWwgU2l0ZXMsIGFuZCBTaW1pbGFyIEluc3RpdHV0aW9ucyM3MTIKLW5haWNzIzcxMjExI011c2V1bXMjNzEyMQotbmFpY3MjNzEyMTIjSGlzdG9yaWNhbCBTaXRlcyM3MTIxCi1uYWljcyM3MTIxMyNab29zIGFuZCBCb3RhbmljYWwgR2FyZGVucyM3MTIxCi1uYWljcyM3MTIxOSNOYXR1cmUgUGFya3MgYW5kIE90aGVyIFNpbWlsYXIgSW5zdGl0dXRpb25zIzcxMjEKLW5haWNzIzcxMyNBbXVzZW1lbnQsIEdhbWJsaW5nLCBhbmQgUmVjcmVhdGlvbiBJbmR1c3RyaWVzIzcxCi1uYWljcyM3MTMxI0FtdXNlbWVudCBQYXJrcyBhbmQgQXJjYWRlcyM3MTMKLW5haWNzIzcxMzExI0FtdXNlbWVudCBhbmQgVGhlbWUgUGFya3MjNzEzMQotbmFpY3MjNzEzMTIjQW11c2VtZW50IEFyY2FkZXMjNzEzMQotbmFpY3MjNzEzMiNHYW1ibGluZyBJbmR1c3RyaWVzIzcxMwotbmFpY3MjNzEzMjEjQ2FzaW5vcyAoZXhjZXB0IENhc2lubyBIb3RlbHMpIzcxMzIKLW5haWNzIzcxMzI5I090aGVyIEdhbWJsaW5nIEluZHVzdHJpZXMjNzEzMgotbmFpY3MjNzEzOSNPdGhlciBBbXVzZW1lbnQgYW5kIFJlY3JlYXRpb24gSW5kdXN0cmllcyM3MTMKLW5haWNzIzcxMzkxI0dvbGYgQ291cnNlcyBhbmQgQ291bnRyeSBDbHVicyM3MTM5Ci1uYWljcyM3MTM5MiNTa2lpbmcgRmFjaWxpdGllcyM3MTM5Ci1uYWljcyM3MTM5MyNNYXJpbmFzIzcxMzkKLW5haWNzIzcxMzk0I0ZpdG5lc3MgYW5kIFJlY3JlYXRpb25hbCBTcG9ydHMgQ2VudGVycyM3MTM5Ci1uYWljcyM3MTM5NSNCb3dsaW5nIENlbnRlcnMjNzEzOQotbmFpY3MjNzEzOTkjQWxsIE90aGVyIEFtdXNlbWVudCBhbmQgUmVjcmVhdGlvbiBJbmR1c3RyaWVzIzcxMzkKLW5haWNzIzcyI0FjY29tbW9kYXRpb24gYW5kIEZvb2QgU2VydmljZXMjNzIKLW5haWNzIzcyMSNBY2NvbW1vZGF0aW9uIzcyCi1uYWljcyM3MjExI1RyYXZlbGVyIEFjY29tbW9kYXRpb24jNzIxCi1uYWljcyM3MjExMSNIb3RlbHMgKGV4Y2VwdCBDYXNpbm8gSG90ZWxzKSBhbmQgTW90ZWxzIzcyMTEKLW5haWNzIzcyMTEyI0Nhc2lubyBIb3RlbHMjNzIxMQotbmFpY3MjNzIxMTkjT3RoZXIgVHJhdmVsZXIgQWNjb21tb2RhdGlvbiM3MjExCi1uYWljcyM3MjExOTEjQmVkLWFuZC1CcmVha2Zhc3QgSW5ucyM3MjExOQotbmFpY3MjNzIxMTk5I0FsbCBPdGhlciBUcmF2ZWxlciBBY2NvbW1vZGF0aW9uIzcyMTE5Ci1uYWljcyM3MjEyI1JWIChSZWNyZWF0aW9uYWwgVmVoaWNsZSkgUGFya3MgYW5kIFJlY3JlYXRpb25hbCBDYW1wcyM3MjEKLW5haWNzIzcyMTIxI1JWIChSZWNyZWF0aW9uYWwgVmVoaWNsZSkgUGFya3MgYW5kIFJlY3JlYXRpb25hbCBDYW1wcyM3MjEyCi1uYWljcyM3MjEyMTEjUlYgKFJlY3JlYXRpb25hbCBWZWhpY2xlKSBQYXJrcyBhbmQgQ2FtcGdyb3VuZHMjNzIxMjEKLW5haWNzIzcyMTIxNCNSZWNyZWF0aW9uYWwgYW5kIFZhY2F0aW9uIENhbXBzIChleGNlcHQgQ2FtcGdyb3VuZHMpIzcyMTIxCi1uYWljcyM3MjEzI1Jvb21pbmcgYW5kIEJvYXJkaW5nIEhvdXNlcyM3MjEKLW5haWNzIzcyMTMxI1Jvb21pbmcgYW5kIEJvYXJkaW5nIEhvdXNlcyM3MjEzCi1uYWljcyM3MjIjRm9vZCBTZXJ2aWNlcyBhbmQgRHJpbmtpbmcgUGxhY2VzIzcyCi1uYWljcyM3MjIxI0Z1bGwtU2VydmljZSBSZXN0YXVyYW50cyM3MjIKLW5haWNzIzcyMjExI0Z1bGwtU2VydmljZSBSZXN0YXVyYW50cyM3MjIxCi1uYWljcyM3MjIyI0xpbWl0ZWQtU2VydmljZSBFYXRpbmcgUGxhY2VzIzcyMgotbmFpY3MjNzIyMjEjTGltaXRlZC1TZXJ2aWNlIEVhdGluZyBQbGFjZXMjNzIyMgotbmFpY3MjNzIyMjExI0xpbWl0ZWQtU2VydmljZSBSZXN0YXVyYW50cyM3MjIyMQotbmFpY3MjNzIyMjEyI0NhZmV0ZXJpYXMjNzIyMjEKLW5haWNzIzcyMjIxMyNTbmFjayBhbmQgTm9uYWxjb2hvbGljIEJldmVyYWdlIEJhcnMjNzIyMjEKLW5haWNzIzcyMjMjU3BlY2lhbCBGb29kIFNlcnZpY2VzIzcyMgotbmFpY3MjNzIyMzEjRm9vZCBTZXJ2aWNlIENvbnRyYWN0b3JzIzcyMjMKLW5haWNzIzcyMjMyI0NhdGVyZXJzIzcyMjMKLW5haWNzIzcyMjMzI01vYmlsZSBGb29kIFNlcnZpY2VzIzcyMjMKLW5haWNzIzcyMjQjRHJpbmtpbmcgUGxhY2VzIChBbGNvaG9saWMgQmV2ZXJhZ2VzKSM3MjIKLW5haWNzIzcyMjQxI0RyaW5raW5nIFBsYWNlcyAoQWxjb2hvbGljIEJldmVyYWdlcykjNzIyNAotbmFpY3MjODEjT3RoZXIgU2VydmljZXMgKGV4Y2VwdCBQdWJsaWMgQWRtaW5pc3RyYXRpb24pIzgxCi1uYWljcyM4MTEjUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MQotbmFpY3MjODExMSNBdXRvbW90aXZlIFJlcGFpciBhbmQgTWFpbnRlbmFuY2UjODExCi1uYWljcyM4MTExMSNBdXRvbW90aXZlIE1lY2hhbmljYWwgYW5kIEVsZWN0cmljYWwgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTExCi1uYWljcyM4MTExMTEjR2VuZXJhbCBBdXRvbW90aXZlIFJlcGFpciM4MTExMQotbmFpY3MjODExMTEyI0F1dG9tb3RpdmUgRXhoYXVzdCBTeXN0ZW0gUmVwYWlyIzgxMTExCi1uYWljcyM4MTExMTMjQXV0b21vdGl2ZSBUcmFuc21pc3Npb24gUmVwYWlyIzgxMTExCi1uYWljcyM4MTExMTgjT3RoZXIgQXV0b21vdGl2ZSBNZWNoYW5pY2FsIGFuZCBFbGVjdHJpY2FsIFJlcGFpciBhbmQgTWFpbnRlbmFuY2UjODExMTEKLW5haWNzIzgxMTEyI0F1dG9tb3RpdmUgQm9keSwgUGFpbnQsIEludGVyaW9yLCBhbmQgR2xhc3MgUmVwYWlyIzgxMTEKLW5haWNzIzgxMTEyMSNBdXRvbW90aXZlIEJvZHksIFBhaW50LCBhbmQgSW50ZXJpb3IgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTExMgotbmFpY3MjODExMTIyI0F1dG9tb3RpdmUgR2xhc3MgUmVwbGFjZW1lbnQgU2hvcHMjODExMTIKLW5haWNzIzgxMTE5I090aGVyIEF1dG9tb3RpdmUgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTExCi1uYWljcyM4MTExOTEjQXV0b21vdGl2ZSBPaWwgQ2hhbmdlIGFuZCBMdWJyaWNhdGlvbiBTaG9wcyM4MTExOQotbmFpY3MjODExMTkyI0NhciBXYXNoZXMjODExMTkKLW5haWNzIzgxMTE5OCNBbGwgT3RoZXIgQXV0b21vdGl2ZSBSZXBhaXIgYW5kIE1haW50ZW5hbmNlIzgxMTE5Ci1uYWljcyM4MTEyI0VsZWN0cm9uaWMgYW5kIFByZWNpc2lvbiBFcXVpcG1lbnQgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTEKLW5haWNzIzgxMTIxI0VsZWN0cm9uaWMgYW5kIFByZWNpc2lvbiBFcXVpcG1lbnQgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTEyCi1uYWljcyM4MTEyMTEjQ29uc3VtZXIgRWxlY3Ryb25pY3MgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTEyMQotbmFpY3MjODExMjEyI0NvbXB1dGVyIGFuZCBPZmZpY2UgTWFjaGluZSBSZXBhaXIgYW5kIE1haW50ZW5hbmNlIzgxMTIxCi1uYWljcyM4MTEyMTMjQ29tbXVuaWNhdGlvbiBFcXVpcG1lbnQgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTEyMQotbmFpY3MjODExMjE5I090aGVyIEVsZWN0cm9uaWMgYW5kIFByZWNpc2lvbiBFcXVpcG1lbnQgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTEyMQotbmFpY3MjODExMyNDb21tZXJjaWFsIGFuZCBJbmR1c3RyaWFsIE1hY2hpbmVyeSBhbmQgRXF1aXBtZW50IChleGNlcHQgQXV0b21vdGl2ZSBhbmQgRWxlY3Ryb25pYykgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTEKLW5haWNzIzgxMTMxI0NvbW1lcmNpYWwgYW5kIEluZHVzdHJpYWwgTWFjaGluZXJ5IGFuZCBFcXVpcG1lbnQgKGV4Y2VwdCBBdXRvbW90aXZlIGFuZCBFbGVjdHJvbmljKSBSZXBhaXIgYW5kIE1haW50ZW5hbmNlIzgxMTMKLW5haWNzIzgxMTQjUGVyc29uYWwgYW5kIEhvdXNlaG9sZCBHb29kcyBSZXBhaXIgYW5kIE1haW50ZW5hbmNlIzgxMQotbmFpY3MjODExNDEjSG9tZSBhbmQgR2FyZGVuIEVxdWlwbWVudCBhbmQgQXBwbGlhbmNlIFJlcGFpciBhbmQgTWFpbnRlbmFuY2UjODExNAotbmFpY3MjODExNDExI0hvbWUgYW5kIEdhcmRlbiBFcXVpcG1lbnQgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTE0MQotbmFpY3MjODExNDEyI0FwcGxpYW5jZSBSZXBhaXIgYW5kIE1haW50ZW5hbmNlIzgxMTQxCi1uYWljcyM4MTE0MiNSZXVwaG9sc3RlcnkgYW5kIEZ1cm5pdHVyZSBSZXBhaXIjODExNAotbmFpY3MjODExNDMjRm9vdHdlYXIgYW5kIExlYXRoZXIgR29vZHMgUmVwYWlyIzgxMTQKLW5haWNzIzgxMTQ5I090aGVyIFBlcnNvbmFsIGFuZCBIb3VzZWhvbGQgR29vZHMgUmVwYWlyIGFuZCBNYWludGVuYW5jZSM4MTE0Ci1uYWljcyM4MTIjUGVyc29uYWwgYW5kIExhdW5kcnkgU2VydmljZXMjODEKLW5haWNzIzgxMjEjUGVyc29uYWwgQ2FyZSBTZXJ2aWNlcyM4MTIKLW5haWNzIzgxMjExI0hhaXIsIE5haWwsIGFuZCBTa2luIENhcmUgU2VydmljZXMjODEyMQotbmFpY3MjODEyMTExI0JhcmJlciBTaG9wcyM4MTIxMQotbmFpY3MjODEyMTEyI0JlYXV0eSBTYWxvbnMjODEyMTEKLW5haWNzIzgxMjExMyNOYWlsIFNhbG9ucyM4MTIxMQotbmFpY3MjODEyMTkjT3RoZXIgUGVyc29uYWwgQ2FyZSBTZXJ2aWNlcyM4MTIxCi1uYWljcyM4MTIxOTEjRGlldCBhbmQgV2VpZ2h0IFJlZHVjaW5nIENlbnRlcnMjODEyMTkKLW5haWNzIzgxMjE5OSNPdGhlciBQZXJzb25hbCBDYXJlIFNlcnZpY2VzIzgxMjE5Ci1uYWljcyM4MTIyI0RlYXRoIENhcmUgU2VydmljZXMjODEyCi1uYWljcyM4MTIyMSNGdW5lcmFsIEhvbWVzIGFuZCBGdW5lcmFsIFNlcnZpY2VzIzgxMjIKLW5haWNzIzgxMjIyI0NlbWV0ZXJpZXMgYW5kIENyZW1hdG9yaWVzIzgxMjIKLW5haWNzIzgxMjMjRHJ5Y2xlYW5pbmcgYW5kIExhdW5kcnkgU2VydmljZXMjODEyCi1uYWljcyM4MTIzMSNDb2luLU9wZXJhdGVkIExhdW5kcmllcyBhbmQgRHJ5Y2xlYW5lcnMjODEyMwotbmFpY3MjODEyMzIjRHJ5Y2xlYW5pbmcgYW5kIExhdW5kcnkgU2VydmljZXMgKGV4Y2VwdCBDb2luLU9wZXJhdGVkKSM4MTIzCi1uYWljcyM4MTIzMyNMaW5lbiBhbmQgVW5pZm9ybSBTdXBwbHkjODEyMwotbmFpY3MjODEyMzMxI0xpbmVuIFN1cHBseSM4MTIzMwotbmFpY3MjODEyMzMyI0luZHVzdHJpYWwgTGF1bmRlcmVycyM4MTIzMwotbmFpY3MjODEyOSNPdGhlciBQZXJzb25hbCBTZXJ2aWNlcyM4MTIKLW5haWNzIzgxMjkxI1BldCBDYXJlIChleGNlcHQgVmV0ZXJpbmFyeSkgU2VydmljZXMjODEyOQotbmFpY3MjODEyOTIjUGhvdG9maW5pc2hpbmcjODEyOQotbmFpY3MjODEyOTIxI1Bob3RvZmluaXNoaW5nIExhYm9yYXRvcmllcyAoZXhjZXB0IE9uZS1Ib3VyKSM4MTI5MgotbmFpY3MjODEyOTIyI09uZS1Ib3VyIFBob3RvZmluaXNoaW5nIzgxMjkyCi1uYWljcyM4MTI5MyNQYXJraW5nIExvdHMgYW5kIEdhcmFnZXMjODEyOQotbmFpY3MjODEyOTkjQWxsIE90aGVyIFBlcnNvbmFsIFNlcnZpY2VzIzgxMjkKLW5haWNzIzgxMyNSZWxpZ2lvdXMsIEdyYW50bWFraW5nLCBDaXZpYywgUHJvZmVzc2lvbmFsLCBhbmQgU2ltaWxhciBPcmdhbml6YXRpb25zIzgxCi1uYWljcyM4MTMxI1JlbGlnaW91cyBPcmdhbml6YXRpb25zIzgxMwotbmFpY3MjODEzMTEjUmVsaWdpb3VzIE9yZ2FuaXphdGlvbnMjODEzMQotbmFpY3MjODEzMiNHcmFudG1ha2luZyBhbmQgR2l2aW5nIFNlcnZpY2VzIzgxMwotbmFpY3MjODEzMjEjR3JhbnRtYWtpbmcgYW5kIEdpdmluZyBTZXJ2aWNlcyM4MTMyCi1uYWljcyM4MTMyMTEjR3JhbnRtYWtpbmcgRm91bmRhdGlvbnMjODEzMjEKLW5haWNzIzgxMzIxMiNWb2x1bnRhcnkgSGVhbHRoIE9yZ2FuaXphdGlvbnMjODEzMjEKLW5haWNzIzgxMzIxOSNPdGhlciBHcmFudG1ha2luZyBhbmQgR2l2aW5nIFNlcnZpY2VzIzgxMzIxCi1uYWljcyM4MTMzI1NvY2lhbCBBZHZvY2FjeSBPcmdhbml6YXRpb25zIzgxMwotbmFpY3MjODEzMzEjU29jaWFsIEFkdm9jYWN5IE9yZ2FuaXphdGlvbnMjODEzMwotbmFpY3MjODEzMzExI0h1bWFuIFJpZ2h0cyBPcmdhbml6YXRpb25zIzgxMzMxCi1uYWljcyM4MTMzMTIjRW52aXJvbm1lbnQsIENvbnNlcnZhdGlvbiBhbmQgV2lsZGxpZmUgT3JnYW5pemF0aW9ucyM4MTMzMQotbmFpY3MjODEzMzE5I090aGVyIFNvY2lhbCBBZHZvY2FjeSBPcmdhbml6YXRpb25zIzgxMzMxCi1uYWljcyM4MTM0I0NpdmljIGFuZCBTb2NpYWwgT3JnYW5pemF0aW9ucyM4MTMKLW5haWNzIzgxMzQxI0NpdmljIGFuZCBTb2NpYWwgT3JnYW5pemF0aW9ucyM4MTM0Ci1uYWljcyM4MTM5I0J1c2luZXNzLCBQcm9mZXNzaW9uYWwsIExhYm9yLCBQb2xpdGljYWwsIGFuZCBTaW1pbGFyIE9yZ2FuaXphdGlvbnMjODEzCi1uYWljcyM4MTM5MSNCdXNpbmVzcyBBc3NvY2lhdGlvbnMjODEzOQotbmFpY3MjODEzOTIjUHJvZmVzc2lvbmFsIE9yZ2FuaXphdGlvbnMjODEzOQotbmFpY3MjODEzOTMjTGFib3IgVW5pb25zIGFuZCBTaW1pbGFyIExhYm9yIE9yZ2FuaXphdGlvbnMjODEzOQotbmFpY3MjODEzOTQjUG9saXRpY2FsIE9yZ2FuaXphdGlvbnMjODEzOQotbmFpY3MjODEzOTkjT3RoZXIgU2ltaWxhciBPcmdhbml6YXRpb25zIChleGNlcHQgQnVzaW5lc3MsIFByb2Zlc3Npb25hbCwgTGFib3IsIGFuZCBQb2xpdGljYWwgT3JnYW5pemF0aW9ucykjODEzOQotbmFpY3MjODE0I1ByaXZhdGUgSG91c2Vob2xkcyM4MQotbmFpY3MjODE0MSNQcml2YXRlIEhvdXNlaG9sZHMjODE0Ci1uYWljcyM4MTQxMSNQcml2YXRlIEhvdXNlaG9sZHMjODE0MQotbmFpY3MjOTIjUHVibGljIEFkbWluaXN0cmF0aW9uIzkyCi1uYWljcyM5MjEjRXhlY3V0aXZlLCBMZWdpc2xhdGl2ZSwgYW5kIE90aGVyIEdlbmVyYWwgR292ZXJubWVudCBTdXBwb3J0IzkyCi1uYWljcyM5MjExI0V4ZWN1dGl2ZSwgTGVnaXNsYXRpdmUsIGFuZCBPdGhlciBHZW5lcmFsIEdvdmVybm1lbnQgU3VwcG9ydCM5MjEKLW5haWNzIzkyMTExI0V4ZWN1dGl2ZSBPZmZpY2VzIzkyMTEKLW5haWNzIzkyMTEyI0xlZ2lzbGF0aXZlIEJvZGllcyM5MjExCi1uYWljcyM5MjExMyNQdWJsaWMgRmluYW5jZSBBY3Rpdml0aWVzIzkyMTEKLW5haWNzIzkyMTE0I0V4ZWN1dGl2ZSBhbmQgTGVnaXNsYXRpdmUgT2ZmaWNlcywgQ29tYmluZWQjOTIxMQotbmFpY3MjOTIxMTUjQW1lcmljYW4gSW5kaWFuIGFuZCBBbGFza2EgTmF0aXZlIFRyaWJhbCBHb3Zlcm5tZW50cyM5MjExCi1uYWljcyM5MjExOSNPdGhlciBHZW5lcmFsIEdvdmVybm1lbnQgU3VwcG9ydCM5MjExCi1uYWljcyM5MjIjSnVzdGljZSwgUHVibGljIE9yZGVyLCBhbmQgU2FmZXR5IEFjdGl2aXRpZXMjOTIKLW5haWNzIzkyMjEjSnVzdGljZSwgUHVibGljIE9yZGVyLCBhbmQgU2FmZXR5IEFjdGl2aXRpZXMjOTIyCi1uYWljcyM5MjIxMSNDb3VydHMjOTIyMQotbmFpY3MjOTIyMTIjUG9saWNlIFByb3RlY3Rpb24jOTIyMQotbmFpY3MjOTIyMTMjTGVnYWwgQ291bnNlbCBhbmQgUHJvc2VjdXRpb24jOTIyMQotbmFpY3MjOTIyMTQjQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9ucyM5MjIxCi1uYWljcyM5MjIxNSNQYXJvbGUgT2ZmaWNlcyBhbmQgUHJvYmF0aW9uIE9mZmljZXMjOTIyMQotbmFpY3MjOTIyMTYjRmlyZSBQcm90ZWN0aW9uIzkyMjEKLW5haWNzIzkyMjE5I090aGVyIEp1c3RpY2UsIFB1YmxpYyBPcmRlciwgYW5kIFNhZmV0eSBBY3Rpdml0aWVzIzkyMjEKLW5haWNzIzkyMyNBZG1pbmlzdHJhdGlvbiBvZiBIdW1hbiBSZXNvdXJjZSBQcm9ncmFtcyM5MgotbmFpY3MjOTIzMSNBZG1pbmlzdHJhdGlvbiBvZiBIdW1hbiBSZXNvdXJjZSBQcm9ncmFtcyM5MjMKLW5haWNzIzkyMzExI0FkbWluaXN0cmF0aW9uIG9mIEVkdWNhdGlvbiBQcm9ncmFtcyM5MjMxCi1uYWljcyM5MjMxMiNBZG1pbmlzdHJhdGlvbiBvZiBQdWJsaWMgSGVhbHRoIFByb2dyYW1zIzkyMzEKLW5haWNzIzkyMzEzI0FkbWluaXN0cmF0aW9uIG9mIEh1bWFuIFJlc291cmNlIFByb2dyYW1zIChleGNlcHQgRWR1Y2F0aW9uLCBQdWJsaWMgSGVhbHRoLCBhbmQgVmV0ZXJhbnMnIEFmZmFpcnMgUHJvZ3JhbXMpIzkyMzEKLW5haWNzIzkyMzE0I0FkbWluaXN0cmF0aW9uIG9mIFZldGVyYW5zJyBBZmZhaXJzIzkyMzEKLW5haWNzIzkyNCNBZG1pbmlzdHJhdGlvbiBvZiBFbnZpcm9ubWVudGFsIFF1YWxpdHkgUHJvZ3JhbXMjOTIKLW5haWNzIzkyNDEjQWRtaW5pc3RyYXRpb24gb2YgRW52aXJvbm1lbnRhbCBRdWFsaXR5IFByb2dyYW1zIzkyNAotbmFpY3MjOTI0MTEjQWRtaW5pc3RyYXRpb24gb2YgQWlyIGFuZCBXYXRlciBSZXNvdXJjZSBhbmQgU29saWQgV2FzdGUgTWFuYWdlbWVudCBQcm9ncmFtcyM5MjQxCi1uYWljcyM5MjQxMiNBZG1pbmlzdHJhdGlvbiBvZiBDb25zZXJ2YXRpb24gUHJvZ3JhbXMjOTI0MQotbmFpY3MjOTI1I0FkbWluaXN0cmF0aW9uIG9mIEhvdXNpbmcgUHJvZ3JhbXMsIFVyYmFuIFBsYW5uaW5nLCBhbmQgQ29tbXVuaXR5IERldmVsb3BtZW50IzkyCi1uYWljcyM5MjUxI0FkbWluaXN0cmF0aW9uIG9mIEhvdXNpbmcgUHJvZ3JhbXMsIFVyYmFuIFBsYW5uaW5nLCBhbmQgQ29tbXVuaXR5IERldmVsb3BtZW50IzkyNQotbmFpY3MjOTI1MTEjQWRtaW5pc3RyYXRpb24gb2YgSG91c2luZyBQcm9ncmFtcyM5MjUxCi1uYWljcyM5MjUxMiNBZG1pbmlzdHJhdGlvbiBvZiBVcmJhbiBQbGFubmluZyBhbmQgQ29tbXVuaXR5IGFuZCBSdXJhbCBEZXZlbG9wbWVudCM5MjUxCi1uYWljcyM5MjYjQWRtaW5pc3RyYXRpb24gb2YgRWNvbm9taWMgUHJvZ3JhbXMjOTIKLW5haWNzIzkyNjEjQWRtaW5pc3RyYXRpb24gb2YgRWNvbm9taWMgUHJvZ3JhbXMjOTI2Ci1uYWljcyM5MjYxMSNBZG1pbmlzdHJhdGlvbiBvZiBHZW5lcmFsIEVjb25vbWljIFByb2dyYW1zIzkyNjEKLW5haWNzIzkyNjEyI1JlZ3VsYXRpb24gYW5kIEFkbWluaXN0cmF0aW9uIG9mIFRyYW5zcG9ydGF0aW9uIFByb2dyYW1zIzkyNjEKLW5haWNzIzkyNjEzI1JlZ3VsYXRpb24gYW5kIEFkbWluaXN0cmF0aW9uIG9mIENvbW11bmljYXRpb25zLCBFbGVjdHJpYywgR2FzLCBhbmQgT3RoZXIgVXRpbGl0aWVzIzkyNjEKLW5haWNzIzkyNjE0I1JlZ3VsYXRpb24gb2YgQWdyaWN1bHR1cmFsIE1hcmtldGluZyBhbmQgQ29tbW9kaXRpZXMjOTI2MQotbmFpY3MjOTI2MTUjUmVndWxhdGlvbiwgTGljZW5zaW5nLCBhbmQgSW5zcGVjdGlvbiBvZiBNaXNjZWxsYW5lb3VzIENvbW1lcmNpYWwgU2VjdG9ycyM5MjYxCi1uYWljcyM5MjcjU3BhY2UgUmVzZWFyY2ggYW5kIFRlY2hub2xvZ3kjOTIKLW5haWNzIzkyNzEjU3BhY2UgUmVzZWFyY2ggYW5kIFRlY2hub2xvZ3kjOTI3Ci1uYWljcyM5MjcxMSNTcGFjZSBSZXNlYXJjaCBhbmQgVGVjaG5vbG9neSM5MjcxCi1uYWljcyM5MjgjTmF0aW9uYWwgU2VjdXJpdHkgYW5kIEludGVybmF0aW9uYWwgQWZmYWlycyM5MgotbmFpY3MjOTI4MSNOYXRpb25hbCBTZWN1cml0eSBhbmQgSW50ZXJuYXRpb25hbCBBZmZhaXJzIzkyOAotbmFpY3MjOTI4MTEjTmF0aW9uYWwgU2VjdXJpdHkjOTI4MQotbmFpY3MjOTI4MTIjSW50ZXJuYXRpb25hbCBBZmZhaXJzIzkyODEKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9kYXRhL3Vuc3BzYy1kYXRhLnR4dCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9kYXRhL3Vuc3BzYy1kYXRhLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc4MzUxNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZGF0YS91bnNwc2MtZGF0YS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNzA1NCArMCwwIEBACi11bnNwc2M3IzEwLjAwLjAwLjAwLjAwI0xpdmUgUGxhbnQgYW5kIEFuaW1hbCBNYXRlcmlhbCBhbmQgQWNjZXNzb3JpZXMgYW5kIFN1cHBsaWVzIzEwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEwLjEwLjAwLjAwLjAwI0xpdmUgYW5pbWFscyMxMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMC4xMC4xNS4wMC4wMCNMaXZlc3RvY2sjMTAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTUuMDEuMDAjQ2F0cyMxMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMC4xNS4wMi4wMCNEb2dzIzEwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE1LjA0LjAwI01pbmsjMTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTUuMDUuMDAjUmF0cyMxMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMC4xNS4wNi4wMCNIb3JzZXMjMTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTUuMDcuMDAjU2hlZXAjMTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTUuMDguMDAjR29hdHMjMTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTUuMDkuMDAjQXNzZXMjMTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTUuMTAuMDAjTWljZSMxMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMC4xNS4xMS4wMCNTd2luZSMxMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMC4xNS4xMi4wMCNSYWJiaXRzIzEwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE1LjEzLjAwI0d1aW5lYSBwaWdzIzEwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE1LjE0LjAwI1ByaW1hdGVzIzEwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE1LjE1LjAwI0FybWFkaWxsb3MjMTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTUuMTYuMDAjQ2F0dGxlIzEwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE1LjE3LjAwI0NhbWVscyMxMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMC4xNi4wMC4wMCNCaXJkcyBhbmQgZm93bCMxMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMC4xMC4xNi4wMS4wMCNMaXZlIGNoaWNrZW5zIzEwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE2LjAyLjAwI0xpdmUgZHVja3MjMTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTYuMDMuMDAjTGl2ZSB0dXJrZXlzIzEwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE2LjA0LjAwI0xpdmUgZ2Vlc2UjMTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTYuMDUuMDAjTGl2ZSBwaGVhc2FudHMjMTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTcuMDAuMDAjTGl2ZSBmaXNoIzEwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzEwLjEwLjE3LjAxLjAwI0xpdmUgc2FsbW9uIzEwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE3LjAyLjAwI0xpdmUgdHJvdXQjMTAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTcuMDMuMDAjTGl2ZSB0YWxhcGlhIzEwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE3LjA0LjAwI0xpdmUgY2FycCMxMC4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMC4xMC4xNy4wNS4wMCNMaXZlIGVlbHMjMTAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTguMDAuMDAjU2hlbGxmaXNoIGFuZCBhcXVhdGljIGludmVydGVicmF0ZXMjMTAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTguMDEuMDAjTGl2ZSBzaHJpbXAjMTAuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTguMDIuMDAjTGl2ZSBjbGFtcyMxMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMC4xMC4xOC4wMy4wMCNMaXZlIG11c3NlbHMjMTAuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTguMDQuMDAjTGl2ZSBveXN0ZXJzIzEwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE4LjA1LjAwI0xpdmUgY3JhYnMjMTAuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTguMDYuMDAjTGl2ZSBhYmFsb25lIzEwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE4LjA3LjAwI0xpdmUgb2N0b3BpIzEwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE4LjA4LjAwI0xpdmUgc3F1aWQjMTAuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTkuMDAuMDAjSW5zZWN0cyMxMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMC4xMC4xOS4wMS4wMCNCdXR0ZXJmbGllcyMxMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMxMC4xMC4xOS4wMi4wMCNCZWV0bGVzIzEwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzEwLjEwLjE5LjAzLjAwI0JlZXMjMTAuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMTkuMDQuMDAjU2lsa3dvcm1zIzEwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzEwLjEwLjIwLjAwLjAwI1dpbGQgYW5pbWFscyMxMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMC4xMC4yMC4wMS4wMCNFbGVwaGFudHMjMTAuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTAuMTAuMjAuMDIuMDAjTGl2ZSBmb3hlcyMxMC4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMC4xMS4wMC4wMC4wMCNEb21lc3RpYyBwZXQgcHJvZHVjdHMjMTAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTEuMTEuMDAuMDAjUGV0IGZvb2QgYm93bHMgb3IgZXF1aXBtZW50IzEwLjExLjAwLjAwLjAwCi11bnNwc2M3IzEwLjExLjEyLjAwLjAwI01lZGljYXRlZCBwZXQgdHJlYXRtZW50cyMxMC4xMS4wMC4wMC4wMAotdW5zcHNjNyMxMC4xMS4xMy4wMC4wMCNEb21lc3RpYyBwZXQgdHJlYXRtZW50cyBhbmQgYWNjZXNzb3JpZXMgYW5kIGVxdWlwbWVudCMxMC4xMS4wMC4wMC4wMAotdW5zcHNjNyMxMC4xMS4xMy4wMS4wMCNQZXQgdG95cyMxMC4xMS4xMy4wMC4wMAotdW5zcHNjNyMxMC4xMS4xMy4wMi4wMCNQZXQgZ3Jvb21pbmcgcHJvZHVjdHMjMTAuMTEuMTMuMDAuMDAKLXVuc3BzYzcjMTAuMTEuMTMuMDMuMDAjUGV0IGxpdHRlciBvciBlcXVpcG1lbnQgZm9yIHBldCB3YXN0ZSBtYW5hZ2VtZW50IzEwLjExLjEzLjAwLjAwCi11bnNwc2M3IzEwLjExLjEzLjA0LjAwI1BldCBmb29kIGJvd2xzIG9yIGVxdWlwbWVudCMxMC4xMS4xMy4wMC4wMAotdW5zcHNjNyMxMC4xMS4xMy4wNS4wMCNNZWRpY2F0ZWQgcGV0IHRyZWF0bWVudHMjMTAuMTEuMTMuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMDAuMDAuMDAjQW5pbWFsIGZlZWQjMTAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMTUuMDAuMDAjTGl2ZXN0b2NrIGZlZWQjMTAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMTUuMDEuMDAjUHVyZSB3aGVhdCBicmFuIzEwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzEwLjEyLjE1LjAyLjAwI0ZlZWQgb2F0cyMxMC4xMi4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMi4xNS4wMy4wMCNGZWVkIGNvcm4jMTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMTUuMDQuMDAjRmVlZCBzb3JnaHVtIzEwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzEwLjEyLjE1LjA1LjAwI0hheSMxMC4xMi4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMi4xNS4wNi4wMCNPaWwgY2FrZSMxMC4xMi4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMi4xNi4wMC4wMCNCaXJkIGFuZCBmb3dsIGZvb2QjMTAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMTYuMDEuMDAjTGl2ZSBmb29kIGZvciBiaXJkcyMxMC4xMi4xNi4wMC4wMAotdW5zcHNjNyMxMC4xMi4xNi4wMi4wMCNCaXJkIHNlZWQjMTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMTYuMDMuMDAjQmlyZCB0cmVhdHMgb3Igc25hY2tzIzEwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzEwLjEyLjE2LjA0LjAwI1BvdWx0cnkgZm9vZCMxMC4xMi4xNi4wMC4wMAotdW5zcHNjNyMxMC4xMi4xNy4wMC4wMCNGaXNoIGZvb2QjMTAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMTcuMDEuMDAjRnJlc2ggb3IgZnJvemVuIGJyaW5lIzEwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzEwLjEyLjE3LjAyLjAwI0Zpc2ggZm9vZCBwZWxsZXRzIzEwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzEwLjEyLjE3LjAzLjAwI0Zpc2ggZm9vZCBmbGFrZXMjMTAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMTguMDAuMDAjRG9nIGFuZCBjYXQgZm9vZCMxMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMxMC4xMi4xOC4wMS4wMCNEcnkgZm9vZCBmb3IgZG9ncyMxMC4xMi4xOC4wMC4wMAotdW5zcHNjNyMxMC4xMi4xOC4wMi4wMCNNb2lzdCBmb29kIGZvciBkb2dzIzEwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzEwLjEyLjE4LjAzLjAwI01pbGsgZm9yIGRvZ3Mgb3IgY2F0cyMxMC4xMi4xOC4wMC4wMAotdW5zcHNjNyMxMC4xMi4xOC4wNC4wMCNEcnkgZm9vZCBmb3IgY2F0cyMxMC4xMi4xOC4wMC4wMAotdW5zcHNjNyMxMC4xMi4xOC4wNS4wMCNNb2lzdCBmb29kIGZvciBjYXRzIzEwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzEwLjEyLjE4LjA2LjAwI1RyZWF0cyBvciBzbmFja3MgZm9yIGNhdHMgb3IgZG9ncyMxMC4xMi4xOC4wMC4wMAotdW5zcHNjNyMxMC4xMi4xOS4wMC4wMCNSb2RlbnQgZm9vZCMxMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMxMC4xMi4xOS4wMS4wMCNQZWxsZXRpemVkIGZvb2QgZm9yIHJvZGVudHMjMTAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMjAuMDAuMDAjUmVwdGlsZSBmb29kIzEwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzEwLjEyLjIwLjAxLjAwI1BlbGxldGl6ZWQgZm9vZCBmb3IgcmVwdGlsZXMjMTAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMjAuMDIuMDAjTW9pc3QgZm9vZCBmb3IgcmVwdGlsZXMjMTAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjMTAuMTIuMjAuMDMuMDAjTGl2ZSBmb29kIGZvciByZXB0aWxlcyMxMC4xMi4yMC4wMC4wMAotdW5zcHNjNyMxMC4xMy4wMC4wMC4wMCNBbmltYWwgY29udGFpbm1lbnQgYW5kIGhhYml0YXRzIzEwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEwLjEzLjE1LjAwLjAwI0FuaW1hbCBzaGVsdGVycyMxMC4xMy4wMC4wMC4wMAotdW5zcHNjNyMxMC4xMy4xNS4wNi4wMCNMaXZlc3RvY2sgc3RhYmxlcyMxMC4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMy4xNS4wNy4wMCNEb21lc3RpY2l6ZWQgcGV0IGhvdXNlcyMxMC4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMy4xNS4wOC4wMCNQZXQgYmVkcyMxMC4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMC4xMy4xNi4wMC4wMCNBbmltYWwgY29udGFpbm1lbnQjMTAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTMuMTYuMDEuMDAjQ2FnZXMjMTAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTMuMTYuMDIuMDAjS2VubmVscyMxMC4xMy4xNi4wMC4wMAotdW5zcHNjNyMxMC4xMy4xNi4wMy4wMCNBbmltYWwgY2FycnlpbmcgY2FzZXMjMTAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTMuMTYuMDQuMDAjRG9nIHJ1bnMjMTAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTMuMTcuMDAuMDAjQW5pbWFsIGhhYml0YXRzIzEwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzEwLjEzLjE3LjAxLjAwI1RlcnJhcml1bXMjMTAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTMuMTcuMDIuMDAjQXF1YXJpdW1zIzEwLjEzLjE3LjAwLjAwCi11bnNwc2M3IzEwLjE0LjAwLjAwLjAwI1NhZGRsZXJ5IGFuZCBoYXJuZXNzIGdvb2RzIzEwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEwLjE0LjE1LjAwLjAwI1NhZGRsZXJ5IzEwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzEwLjE0LjE1LjAxLjAwI1NhZGRsZXMjMTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTQuMTUuMDIuMDAjV2hpcHMjMTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTQuMTYuMDAuMDAjSGFybmVzcyBnb29kcyMxMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNC4xNi4wMS4wMCNCcmlkbGVzIzEwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE0LjE2LjAyLjAwI1lva2VzIzEwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE0LjE2LjAzLjAwI0hvcnNlIGJpdHMjMTAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTQuMTYuMDQuMDAjUmVpbnMjMTAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTQuMTYuMDUuMDAjU3RpcnJ1cHMjMTAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTQuMTYuMDYuMDAjTGVhc2hlcyBvciBsZWFkcyMxMC4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNC4xNi4wNy4wMCNDb2xsYXJzIzEwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE0LjE2LjA4LjAwI0hhcm5lc3NlcyMxMC4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNC4xNi4wOS4wMCNSZXN0cmFpbnRzIzEwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE1LjAwLjAwLjAwI1NlZWRzIGFuZCBidWxicyBhbmQgc2VlZGxpbmdzIGFuZCBjdXR0aW5ncyMxMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNS4wMC4wMCNWZWdldGFibGUgc2VlZHMgYW5kIHNlZWRsaW5ncyMxMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNS4wMS4wMCNCZWFuIHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4xNS4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNS4wMi4wMCNDYXJyb3Qgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE1LjAzLjAwI0NlbGVyeSBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMDQuMDAjQ2hpbGkgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE1LjA1LjAwI0NvdXJnZXR0ZSBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMDYuMDAjQ293IHBlYSBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMDcuMDAjQ3VjdW1iZXIgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE1LjA4LjAwI0VnZ3BsYW50IHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4xNS4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNS4wOS4wMCNFbmRpdmUgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE1LjEwLjAwI0dhcmxpYyBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMTEuMDAjTGVlayBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMTIuMDAjTGV0dHVjZSBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMTMuMDAjQ29ybiBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMTQuMDAjTWVsb24gc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE1LjE1LjAwI09uaW9uIHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4xNS4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNS4xNi4wMCNTb3lhIHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4xNS4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNS4xNy4wMCNTcGluYWNoIHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4xNS4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNS4xOC4wMCNUb21hdG8gc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE1LjE5LjAwI1R1cm5pcCBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMjAuMDAjQ2hhcmQgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE1LjIxLjAwI1N3ZWV0IHBlcHBlciBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMjIuMDAjQmVldCBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTUuMjMuMDAjQ2F1bGlmbG93ZXIgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE1LjI0LjAwI1BhcnNlbHkgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE2LjAwLjAwI0NlcmVhbCBzZWVkcyMxMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNi4wMS4wMCNXaGVhdCBzZWVkcyMxMC4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNi4wMi4wMCNDb2x6YSBzZWVkcyMxMC4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNi4wMy4wMCNCYXJsZXkgc2VlZHMjMTAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTYuMDQuMDAjTWlsbGV0IHNlZWRzIzEwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE2LjA1LjAwI09hdCBzZWVkcyMxMC4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNi4wNi4wMCNTZXNhbWUgc2VlZHMjMTAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTYuMDcuMDAjTGluc2VlZCBzZWVkcyMxMC4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNi4wOC4wMCNDYXN0b3Igb2lsIHNlZWRzIzEwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE2LjA5LjAwI01haXplIHNlZWRzIzEwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE2LjEwLjAwI1J5ZSBzZWVkcyMxMC4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNi4xMS4wMCNTb3JnaHVtIHNlZWRzIzEwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE3LjAwLjAwI0dyYXNzIGFuZCBmb3JhZ2Ugc2VlZHMgYW5kIHNlZWRsaW5ncyMxMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNy4wMS4wMCNSaWNlIHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4xNy4wMC4wMAotdW5zcHNjNyMxMC4xNS4xNy4wMi4wMCNDbG92ZXIgc2VlZHMgb3Igc2VlZGxpbmcjMTAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTcuMDMuMDAjQWxmYWxmYSBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTcuMDQuMDAjR3Jhc3Mgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE3LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE4LjAwLjAwI1NwaWNlIGNyb3Agc2VlZHMgYW5kIHNlZWRsaW5ncyMxMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNS4xOC4wMS4wMCNQZXBwZXIgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE4LjAyLjAwI1ZhbmlsbGEgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE4LjAzLjAwI0Npbm5hbW9uIHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4xOC4wMC4wMAotdW5zcHNjNyMxMC4xNS4xOC4wNC4wMCNDbG92ZSBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTguMDUuMDAjQ29yaWFuZGVyIHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4xOC4wMC4wMAotdW5zcHNjNyMxMC4xNS4xOC4wNi4wMCNHaW5nZXIgc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE4LjA3LjAwI1NhZmZyb24gc2VlZHMgb3Igc2VlZGxpbmdzIzEwLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE4LjA4LjAwI1RoeW1lIHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4xOC4wMC4wMAotdW5zcHNjNyMxMC4xNS4xOC4wOS4wMCNDdXJyeSBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTguMTAuMDAjTXVzdGFyZCBzZWVkcyBvciBzZWVkbGluZ3MjMTAuMTUuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTguMTEuMDAjR2luc2VuZyByb290cyBvciBzZWVkbGluZ3MjMTAuMTUuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTkuMDAuMDAjRmxvd2VyIHNlZWRzIGFuZCBidWxicyBhbmQgc2VlZGxpbmdzIGFuZCBjdXR0aW5ncyMxMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNS4xOS4wMS4wMCNUdWxpcCBzZWVkcyBvciBidWxicyBvciBzZWVkbGluZ3Mgb3IgY3V0dGluZ3MjMTAuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTkuMDIuMDAjUm9zZSBzZWVkcyBvciBzZWVkbGluZ3Mgb3IgY3V0dGluZ3MjMTAuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTkuMDMuMDAjRGFmZm9kaWwgc2VlZHMgb3IgYnVsYnMgb3Igc2VlZGxpbmdzIG9yIGN1dHRpbmdzIzEwLjE1LjE5LjAwLjAwCi11bnNwc2M3IzEwLjE1LjE5LjA0LjAwI1N1bmZsb3dlciBzZWVkcyMxMC4xNS4xOS4wMC4wMAotdW5zcHNjNyMxMC4xNS4xOS4wNS4wMCNIeWFjaW50aCBidWxicyBvciBzaG9vdHMjMTAuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMTkuMDYuMDAjTGlseSBCdWxicyMxMC4xNS4xOS4wMC4wMAotdW5zcHNjNyMxMC4xNS4yMC4wMC4wMCNUcmVlIGFuZCBzaHJ1YiBzZWVkcyBhbmQgY3V0dGluZ3MjMTAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMjAuMDEuMDAjRnJ1aXQgdHJlZSBzZWVkcyBvciBjdXR0aW5ncyMxMC4xNS4yMC4wMC4wMAotdW5zcHNjNyMxMC4xNS4yMC4wMi4wMCNDb25pZmVyIHRyZWUgc2VlZHMgb3IgY3V0dGluZ3MjMTAuMTUuMjAuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMjAuMDMuMDAjTnV0IHRyZWUgc2VlZHMgb3IgY3V0dGluZ3MjMTAuMTUuMjAuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMjEuMDAuMDAjUmVzaWR1ZXMgb3RoZXIgdGhhbiBhbmltYWwgZmVlZCMxMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNS4yMS4wMS4wMCNSZXNpZHVlcyBiYWJvb2wgc2VlZCBleHRyYWN0aW9uIzEwLjE1LjIxLjAwLjAwCi11bnNwc2M3IzEwLjE1LjIxLjAyLjAwI1Jlc2lkdWVzIG9mIHJhcGUgc2VlZHMjMTAuMTUuMjEuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMjEuMDMuMDAjUmVzaWR1ZSBvZiBsaW5zZWVkIzEwLjE1LjIxLjAwLjAwCi11bnNwc2M3IzEwLjE1LjIxLjA0LjAwI09pbCBjYWtlIG9mIG5lZW0jMTAuMTUuMjEuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMjIuMDAuMDAjRmlicm91cyBjcm9wIHNlZWRzIGFuZCBzZWVkbGluZ3MjMTAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTUuMjIuMDEuMDAjQ290dG9uIHNlZWRzIG9yIHNlZWRsaW5ncyMxMC4xNS4yMi4wMC4wMAotdW5zcHNjNyMxMC4xNi4wMC4wMC4wMCNGbG9yaWN1bHR1cmUgYW5kIHNpbHZpY3VsdHVyZSBwcm9kdWN0cyMxMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNi4xNS4wMC4wMCNUcmVlcyBhbmQgc2hydWJzIzEwLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEwLjE2LjE1LjAxLjAwI09saXZlIHRyZWVzIzEwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE2LjE1LjAyLjAwI0NvZmZlZSBzaHJ1YnMjMTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTUuMDMuMDAjQ29jb2EgdHJlZXMjMTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTUuMDQuMDAjQXBwbGUgdHJlZXMjMTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTUuMDUuMDAjUGVhY2ggdHJlZXMjMTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTUuMDYuMDAjT3JhbmdlIHRyZWVzIzEwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE2LjE1LjA3LjAwI1Job2RlbmRyb24gc2hydWJzIzEwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE2LjE1LjA4LjAwI1RlYSBzaHJ1YnMjMTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTUuMDkuMDAjQ29uaWZlciB0cmVlcyMxMC4xNi4xNS4wMC4wMAotdW5zcHNjNyMxMC4xNi4xNS4xMC4wMCNTcHJ1Y2UgdHJlZXMjMTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTUuMTEuMDAjUGluZSB0cmVlcyMxMC4xNi4xNS4wMC4wMAotdW5zcHNjNyMxMC4xNi4xNS4xMi4wMCNGaXIgdHJlZXMjMTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTYuMDAuMDAjRmxvcmFsIHBsYW50cyMxMC4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNi4xNi4wMS4wMCNSb3NlIHBsYW50cyMxMC4xNi4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNi4xNi4wMi4wMCNQb2luc2V0dGlhcyBwbGFudHMjMTAuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTYuMDMuMDAjT3JjaGlkcyBwbGFudHMjMTAuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTYuMDQuMDAjQXphbGVhcyBwbGFudHMjMTAuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTYuMDUuMDAjQ2FjdHVzIHBsYW50cyMxMC4xNi4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNi4xNy4wMC4wMCNDdXQgZmxvd2VycyMxMC4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNi4xNy4wMS4wMCNDdXQgZ2xhZGlvbHVzIzEwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzEwLjE2LjE3LjAyLjAwI0N1dCBsaWxpZXMjMTAuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTcuMDMuMDAjQ3V0IGNhcm5hdGlvbnMjMTAuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTcuMDQuMDAjQ3V0IHR1bGlwcyMxMC4xNi4xNy4wMC4wMAotdW5zcHNjNyMxMC4xNi4xNy4wNS4wMCNDdXQgcm9zZXMjMTAuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTguMDAuMDAjTm9uIGZsb3dlcmluZyBwbGFudHMjMTAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTguMDEuMDAjRmVybnMjMTAuMTYuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTguMDIuMDAjSXZpZXMjMTAuMTYuMTguMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTguMDMuMDAjUGhpbG9kZW5kcm9ucyMxMC4xNi4xOC4wMC4wMAotdW5zcHNjNyMxMC4xNi4xOS4wMC4wMCNEcmllZCBmbG9yYWwgcHJvZHVjdHMjMTAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTkuMDEuMDAjRHJpZWQgcG9kcyMxMC4xNi4xOS4wMC4wMAotdW5zcHNjNyMxMC4xNi4xOS4wMi4wMCNEcmllZCBsZWFmeSBncmVlbmVyeSMxMC4xNi4xOS4wMC4wMAotdW5zcHNjNyMxMC4xNi4xOS4wMy4wMCNEcmllZCBmZXJuIGdyZWVuZXJ5IzEwLjE2LjE5LjAwLjAwCi11bnNwc2M3IzEwLjE2LjE5LjA0LjAwI0RyaWVkIGZ1bGwgZmxvd2VycyMxMC4xNi4xOS4wMC4wMAotdW5zcHNjNyMxMC4xNi4xOS4wNS4wMCNEcmllZCB0d2lncyBvciBzdGlja3MjMTAuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMTAuMTYuMTkuMDYuMDAjRHJpZWQgZ3Jhc3MgcGx1bWVzIzEwLjE2LjE5LjAwLjAwCi11bnNwc2M3IzEwLjE2LjE5LjA3LjAwI0RyaWVkIHByZXNzZWQgZmxvd2VycyMxMC4xNi4xOS4wMC4wMAotdW5zcHNjNyMxMC4xNi4xOS4wOC4wMCNEcmllZCBmbG93ZXIgcGV0YWxzIzEwLjE2LjE5LjAwLjAwCi11bnNwc2M3IzEwLjE3LjAwLjAwLjAwI0ZlcnRpbGl6ZXJzIGFuZCBwbGFudCBudXRyaWVudHMgYW5kIGhlcmJpY2lkZXMjMTAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTcuMTUuMDAuMDAjT3JnYW5pYyBmZXJ0aWxpemVycyBhbmQgcGxhbnQgbnV0cmllbnRzIzEwLjE3LjAwLjAwLjAwCi11bnNwc2M3IzEwLjE3LjE1LjAxLjAwI01hbnVyZSBvciBndWFubyMxMC4xNy4xNS4wMC4wMAotdW5zcHNjNyMxMC4xNy4xNS4wMi4wMCNQbGFudCBob3Jtb25lcyMxMC4xNy4xNS4wMC4wMAotdW5zcHNjNyMxMC4xNy4xNS4wMy4wMCNGaXNoIG1lYWwjMTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTcuMTYuMDAuMDAjQ2hlbWljYWwgZmVydGlsaXplcnMgYW5kIHBsYW50IG51dHJpZW50cyMxMC4xNy4wMC4wMC4wMAotdW5zcHNjNyMxMC4xNy4xNi4wMS4wMCNOaXRyb2dlbm91cyBmZXJ0aWxpemVyIzEwLjE3LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE3LjE2LjAyLjAwI1BvdGFzc2ljIGZlcnRpbGl6ZXIjMTAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTcuMTYuMDMuMDAjUGhvc3BoYXRpYyBmZXJ0aWxpemVyIzEwLjE3LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE3LjE2LjA0LjAwI1N1bHBodXJpYyBmZXJ0aWxpemVyIzEwLjE3LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE3LjE2LjA1LjAwI05pdHJvZ2VuIFBob3NwaG9yb3VzIFBvdGFzc2l1bSBNaXh0dXJlcyAoTlBLKSMxMC4xNy4xNi4wMC4wMAotdW5zcHNjNyMxMC4xNy4xNy4wMC4wMCNIZXJiaWNpZGVzIzEwLjE3LjAwLjAwLjAwCi11bnNwc2M3IzEwLjE3LjE3LjAxLjAwI1dlZWQga2lsbGVyIzEwLjE3LjE3LjAwLjAwCi11bnNwc2M3IzEwLjE3LjE3LjAyLjAwI0Z1bmdpY2lkZXMjMTAuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMTAuMTkuMDAuMDAuMDAjUGVzdCBjb250cm9sIHByb2R1Y3RzIzEwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEwLjE5LjE1LjAwLjAwI0luc2VjdGljaWRlcyBhbmQgaW5zZWN0IGNvbnRyb2wgdHJhcHMjMTAuMTkuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTkuMTUuMDEuMDAjU3ByYXkgaW5zZWN0aWNpZGVzIzEwLjE5LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE5LjE1LjAyLjAwI0JhaXQgaW5zZWN0aWNpZGVzIzEwLjE5LjE1LjAwLjAwCi11bnNwc2M3IzEwLjE5LjE1LjAzLjAwI1NpbGljaWMgYWNpZCMxMC4xOS4xNS4wMC4wMAotdW5zcHNjNyMxMC4xOS4xNS4wNC4wMCNGbHlpbmcgaW5zZWN0IGNvbnRyb2wgdHJhcHMjMTAuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMTAuMTkuMTYuMDAuMDAjUm9kZW50aWNpZGVzIzEwLjE5LjAwLjAwLjAwCi11bnNwc2M3IzEwLjE5LjE2LjAxLjAwI0V4dHJ1ZGVkIGJhaXRzIzEwLjE5LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE5LjE2LjAyLjAwI01lYWwgb3IgcGVsbGV0IG9yIHNlZWQgYmFpdHMjMTAuMTkuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTkuMTYuMDMuMDAjTGlxdWlkIGJhaXRzIzEwLjE5LjE2LjAwLjAwCi11bnNwc2M3IzEwLjE5LjE2LjA0LjAwI1RyYWNraW5nIHBvd2RlcnMjMTAuMTkuMTYuMDAuMDAKLXVuc3BzYzcjMTAuMTkuMTcuMDAuMDAjQW5pbWFsIGNvbnRyb2wgdHJhcHMjMTAuMTkuMDAuMDAuMDAKLXVuc3BzYzcjMTAuMTkuMTcuMDEuMDAjTW91c2Ugb3IgcmF0IHRyYXBzIzEwLjE5LjE3LjAwLjAwCi11bnNwc2M3IzEwLjE5LjE3LjAyLjAwI1dpcmUgY2FnZSB0cmFwcyMxMC4xOS4xNy4wMC4wMAotdW5zcHNjNyMxMS4wMC4wMC4wMC4wMCNNaW5lcmFsIGFuZCBUZXh0aWxlIGFuZCBJbmVkaWJsZSBQbGFudCBhbmQgQW5pbWFsIE1hdGVyaWFscyMxMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMS4xMC4wMC4wMC4wMCNNaW5lcmFscyBhbmQgb3JlcyBhbmQgbWV0YWxzIzExLjAwLjAwLjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjAwLjAwI01pbmVyYWxzIzExLjEwLjAwLjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjAxLjAwI01pY2EjMTEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTUuMDIuMDAjRW1lcnkjMTEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTUuMDMuMDAjUXVhcnR6IzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjA0LjAwI1B5cml0ZSMxMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNS4wNS4wMCNTdWxwaHVyIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjA2LjAwI0NoYWxrIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjA3LjAwI0dyYXBoaXRlIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjA4LjAwI0RvbG9taXRlIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjA5LjAwI01hZ25lc2l0ZSMxMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNS4xMC4wMCNBc2Jlc3RvcyMxMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNS4xMS4wMCNDYWxjaXVtIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjEyLjAwI0JvcmF0ZSMxMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNS4xMy4wMCNDcnlvbGl0ZSMxMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNS4xNC4wMCNGZWxkc3BhciMxMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNS4xNS4wMCNMZXVjaXRlIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjE2LjAwI05lcGhlbGl0ZSMxMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNS4xNy4wMCNTdGVhdGl0ZSMxMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNS4xOC4wMCNUYWxjIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjE5LjAwI0RpYW1vbmRzIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjIwLjAwI0dhcm5ldHMjMTEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTUuMjEuMDAjU2lsaWNvbiBjYXJiaWRlIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjIyLjAwI0FjdGl2YXRlZCBjYXJib24jMTEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTUuMjMuMDAjTXVsaXRlIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjI0LjAwI0Zsb3Vyb3NwYXIjMTEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTUuMjUuMDAjS2Vpc2VyaXRlIzExLjEwLjE1LjAwLjAwCi11bnNwc2M3IzExLjEwLjE1LjI2LjAwI0Nhcm5hbGxpdGUjMTEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTYuMDAuMDAjT3JlcyMxMS4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4wMS4wMCNJcm9uIG9yZSMxMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4wMi4wMCNUaXRhbml1bSBvcmUjMTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTYuMDMuMDAjVXJhbml1bSBvcmUjMTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTYuMDQuMDAjQ29wcGVyIG9yZSMxMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4wNS4wMCNBbHVtaW51bSBvcmUjMTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTYuMDYuMDAjTmlja2VsIG9yZSMxMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4wNy4wMCNTaWx2ZXIgb3JlIzExLjEwLjE2LjAwLjAwCi11bnNwc2M3IzExLjEwLjE2LjA4LjAwI0xlYWQgb3JlIzExLjEwLjE2LjAwLjAwCi11bnNwc2M3IzExLjEwLjE2LjA5LjAwI1ppbmMgb3JlIzExLjEwLjE2LjAwLjAwCi11bnNwc2M3IzExLjEwLjE2LjEwLjAwI1RpbiBvcmUjMTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTYuMTEuMDAjTWFuZ2FuZXNlIG9yZSMxMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4xMi4wMCNDaHJvbWl1bSBvcmUjMTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTYuMTMuMDAjVHVuZ3N0ZW4gb3Igd29sZnJhbSBvcmUjMTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTYuMTQuMDAjTW9seWJkZW51bSBvcmUjMTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTYuMTUuMDAjQ29iYWx0IG9yZSMxMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4xNi4wMCNHb2xkIG9yZSMxMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4xNy4wMCNUYW50YWx1bSBvcmUjMTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTYuMTguMDAjUGxhdGludW0gb3JlIzExLjEwLjE2LjAwLjAwCi11bnNwc2M3IzExLjEwLjE2LjE5LjAwI1Zlcm1pY3VsaXRlIG9yZSMxMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4yMC4wMCNUaG9yaXVtIG9yZSMxMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4yMS4wMCNLeWFuaXRlIG9yZSMxMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNi4yMi4wMCNBbnRpbW9ueSBvcmVzIzExLjEwLjE2LjAwLjAwCi11bnNwc2M3IzExLjEwLjE2LjIzLjAwI1ppcmNvbml1bSBvcmVzIzExLjEwLjE2LjAwLjAwCi11bnNwc2M3IzExLjEwLjE3LjAwLjAwI0Jhc2UgbWV0YWxzIzExLjEwLjAwLjAwLjAwCi11bnNwc2M3IzExLjEwLjE3LjAxLjAwI1NsYWcgb3IgYXNoIzExLjEwLjE3LjAwLjAwCi11bnNwc2M3IzExLjEwLjE3LjAyLjAwI05hdHVyYWwgZ3JhcGhpdGUjMTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTcuMDMuMDAjVGl0YW5pdW0jMTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTcuMDQuMDAjU3RlZWwjMTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTcuMDUuMDAjQWx1bWludW0jMTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTcuMDYuMDAjTmlja2VsIzExLjEwLjE3LjAwLjAwCi11bnNwc2M3IzExLjEwLjE3LjA3LjAwI01hZ25lc2l1bSMxMS4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNy4wOC4wMCNCaXNtdXRoIzExLjEwLjE3LjAwLjAwCi11bnNwc2M3IzExLjEwLjE3LjA5LjAwI0FudGltb255IzExLjEwLjE3LjAwLjAwCi11bnNwc2M3IzExLjEwLjE3LjEwLjAwI0NhZG1pdW0jMTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTcuMTEuMDAjTm9uIGZlcnJvdXMgYWxsb3kjMTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTcuMTIuMDAjRmVycm91cyBhbGxveSMxMS4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMS4xMC4xNy4xMy4wMCNJcm9uIzExLjEwLjE3LjAwLjAwCi11bnNwc2M3IzExLjEwLjE3LjE0LjAwI0xlYWQjMTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTAuMTcuMTUuMDAjQ29wcGVyIzExLjEwLjE3LjAwLjAwCi11bnNwc2M3IzExLjEwLjE4LjAwLjAwI1ByZWNpb3VzIG1ldGFscyMxMS4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMS4xMC4xOC4wMS4wMCNHb2xkIzExLjEwLjE4LjAwLjAwCi11bnNwc2M3IzExLjEwLjE4LjAyLjAwI1NpbHZlciMxMS4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMS4xMC4xOC4wMy4wMCNQbGF0aW51bSMxMS4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMS4xMS4wMC4wMC4wMCNFYXJ0aCBhbmQgc3RvbmUjMTEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTUuMDAuMDAjRGlydCBhbmQgc29pbCMxMS4xMS4wMC4wMC4wMAotdW5zcHNjNyMxMS4xMS4xNS4wMS4wMCNTb2lsIzExLjExLjE1LjAwLjAwCi11bnNwc2M3IzExLjExLjE1LjAyLjAwI0ZpbGwgZGlydCMxMS4xMS4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMS4xNS4wMy4wMCNUb3Bzb2lsIzExLjExLjE1LjAwLjAwCi11bnNwc2M3IzExLjExLjE2LjAwLjAwI1N0b25lIzExLjExLjAwLjAwLjAwCi11bnNwc2M3IzExLjExLjE2LjAxLjAwI0d5cHN1bSMxMS4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMS4xNi4wMi4wMCNUcmF2ZXJ0aW5lIzExLjExLjE2LjAwLjAwCi11bnNwc2M3IzExLjExLjE2LjAzLjAwI0VjYXVzc2luZSBvciBhbGFiYXN0ZXIjMTEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTYuMDQuMDAjR3Jhbml0ZSMxMS4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMS4xNi4wNS4wMCNNYXJibGUjMTEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTYuMDYuMDAjU2xhdGUjMTEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTYuMDcuMDAjU2FuZHN0b25lIzExLjExLjE2LjAwLjAwCi11bnNwc2M3IzExLjExLjE2LjA4LjAwI0xpbWVzdG9uZSMxMS4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMS4xNi4wOS4wMCNCYXNhbHQjMTEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTYuMTAuMDAjUHVtaWNlIHN0b25lIzExLjExLjE2LjAwLjAwCi11bnNwc2M3IzExLjExLjE3LjAwLjAwI1NhbmQjMTEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTcuMDEuMDAjU2lsaWNhIHNhbmQjMTEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTguMDAuMDAjQ2xheXMjMTEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTguMDEuMDAjVGVycmEgY290dGEjMTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTguMDIuMDAjRmlyZWNsYXkjMTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTguMDMuMDAjS2FvbGluIG9yIG90aGVyIGthb2xpbmljIGNsYXlzIzExLjExLjE4LjAwLjAwCi11bnNwc2M3IzExLjExLjE4LjA0LjAwI0JlbnRvbml0ZSMxMS4xMS4xOC4wMC4wMAotdW5zcHNjNyMxMS4xMS4xOC4wNS4wMCNBbmRhbHVzaXRlIzExLjExLjE4LjAwLjAwCi11bnNwc2M3IzExLjExLjE4LjA2LjAwI011bGxpdGUjMTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTguMDcuMDAjQ2hhbW90dGUjMTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTguMDguMDAjQ29tbW9uIGNsYXkjMTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTEuMTEuMTguMDkuMDAjQmFsbCBjbGF5IzExLjExLjE4LjAwLjAwCi11bnNwc2M3IzExLjExLjE4LjEwLjAwI0Z1bGxlcnMgZWFydGgjMTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTEuMTIuMDAuMDAuMDAjTm9uIGVkaWJsZSBwbGFudCBhbmQgZm9yZXN0cnkgcHJvZHVjdHMjMTEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTUuMDAuMDAjU2FwIzExLjEyLjAwLjAwLjAwCi11bnNwc2M3IzExLjEyLjE1LjAyLjAwI1Jvc2luIzExLjEyLjE1LjAwLjAwCi11bnNwc2M3IzExLjEyLjE1LjAzLjAwI0xhYyMxMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMi4xNi4wMC4wMCNXb29kIzExLjEyLjAwLjAwLjAwCi11bnNwc2M3IzExLjEyLjE2LjAzLjAwI0xvZ3MjMTEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTYuMDQuMDAjU29mdCB0aW1iZXIjMTEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTYuMDUuMDAjUmF0dGFuIzExLjEyLjE2LjAwLjAwCi11bnNwc2M3IzExLjEyLjE2LjA2LjAwI0NvcmsjMTEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTYuMDcuMDAjV29vZCBwdWxwIzExLjEyLjE2LjAwLjAwCi11bnNwc2M3IzExLjEyLjE2LjA4LjAwI0JhbWJvbyMxMS4xMi4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMi4xNi4wOS4wMCNQbHl3b29kIzExLjEyLjE2LjAwLjAwCi11bnNwc2M3IzExLjEyLjE2LjEwLjAwI0hhcmR3b29kcyMxMS4xMi4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMi4xNy4wMC4wMCNGb3Jlc3RyeSBieSBwcm9kdWN0cyMxMS4xMi4wMC4wMC4wMAotdW5zcHNjNyMxMS4xMi4xNy4wMS4wMCNTYXcgZHVzdCMxMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMxMS4xMi4xNy4wMi4wMCNXb29kIGNoaXBzIzExLjEyLjE3LjAwLjAwCi11bnNwc2M3IzExLjEyLjE3LjAzLjAwI1BlYXQgbW9zcyMxMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMxMS4xMi4xNy4wNC4wMCNXb29kIHNoYXZpbmdzIzExLjEyLjE3LjAwLjAwCi11bnNwc2M3IzExLjEyLjE3LjA1LjAwI0JhcmsjMTEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTcuMDYuMDAjTXVsY2gjMTEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTcuMDcuMDAjV29vZCB3b29sIzExLjEyLjE3LjAwLjAwCi11bnNwc2M3IzExLjEyLjE3LjA4LjAwI1dvb2QgZmxvdXIjMTEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTcuMDkuMDAjQmFsc2FtcyMxMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMxMS4xMi4xOC4wMC4wMCNQbGFudCBmaWJlcnMjMTEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTguMDEuMDAjSGVtcCMxMS4xMi4xOC4wMC4wMAotdW5zcHNjNyMxMS4xMi4xOC4wMi4wMCNDb3R0b24jMTEuMTIuMTguMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTguMDMuMDAjRmxheCMxMS4xMi4xOC4wMC4wMAotdW5zcHNjNyMxMS4xMi4xOC4wNC4wMCNKdXRlIzExLjEyLjE4LjAwLjAwCi11bnNwc2M3IzExLjEyLjE4LjA1LjAwI1Npc2FsIzExLjEyLjE4LjAwLjAwCi11bnNwc2M3IzExLjEyLjE4LjA2LjAwI0NvY29udXQgZmlicmVzIG9yIGNvaXIjMTEuMTIuMTguMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTguMDcuMDAjQWJhY2EgZmliZXJzIzExLjEyLjE4LjAwLjAwCi11bnNwc2M3IzExLjEyLjE4LjA4LjAwI1JhbWllIzExLjEyLjE4LjAwLjAwCi11bnNwc2M3IzExLjEyLjE4LjA5LjAwI1N0cmF3IzExLjEyLjE4LjAwLjAwCi11bnNwc2M3IzExLjEyLjE4LjEwLjAwI0Jyb29tIGNvcm4gb3IgaXN0bGUgb3IgcGlhc3NhdmEjMTEuMTIuMTguMDAuMDAKLXVuc3BzYzcjMTEuMTIuMTkuMDAuMDAjUGVyZnVtZXJ5IHByb2R1Y3RzIzExLjEyLjAwLjAwLjAwCi11bnNwc2M3IzExLjEyLjE5LjAxLjAwI0xpY29yaWNlIHJvb3RzIzExLjEyLjE5LjAwLjAwCi11bnNwc2M3IzExLjEzLjAwLjAwLjAwI05vbiBlZGlibGUgYW5pbWFsIHByb2R1Y3RzIzExLjAwLjAwLjAwLjAwCi11bnNwc2M3IzExLjEzLjE1LjAwLjAwI0FuaW1hbCBoaWRlcyBhbmQgc2tpbnMgYW5kIGFuaW1hbCB0ZXh0aWxlIG1hdGVyaWFscyMxMS4xMy4wMC4wMC4wMAotdW5zcHNjNyMxMS4xMy4xNS4wMS4wMCNGZWF0aGVycyMxMS4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMy4xNS4wMi4wMCNGdXJzIzExLjEzLjE1LjAwLjAwCi11bnNwc2M3IzExLjEzLjE1LjAzLjAwI0FuaW1hbCBoYWlyIzExLjEzLjE1LjAwLjAwCi11bnNwc2M3IzExLjEzLjE1LjA0LjAwI0hpZGVzIzExLjEzLjE1LjAwLjAwCi11bnNwc2M3IzExLjEzLjE1LjA1LjAwI1VucHJvY2Vzc2VkIG1vaGFpciMxMS4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMy4xNS4wNi4wMCNVbnByb2Nlc3NlZCB3b29sIzExLjEzLjE1LjAwLjAwCi11bnNwc2M3IzExLjEzLjE1LjA3LjAwI1N1ZWRlIzExLjEzLjE1LjAwLjAwCi11bnNwc2M3IzExLjEzLjE1LjA4LjAwI0Z1bGwgZ3JhaW4gbGVhdGhlciMxMS4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMS4xMy4xNi4wMC4wMCNPdGhlciBhbmltYWwgcHJvZHVjdHMjMTEuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTMuMTYuMDEuMDAjSXZvcnkjMTEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTMuMTYuMDIuMDAjU2VtZW4jMTEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTMuMTYuMDMuMDAjRXhjcmV0aW9ucyMxMS4xMy4xNi4wMC4wMAotdW5zcHNjNyMxMS4xMy4xNi4wNC4wMCNGaXNoIGVnZ3MjMTEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTMuMTYuMDUuMDAjQm9uZXMjMTEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTMuMTYuMDYuMDAjQW5pbWFsIGhvcm5zIzExLjEzLjE2LjAwLjAwCi11bnNwc2M3IzExLjEzLjE2LjA3LjAwI0VtYnJ5b3MjMTEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTMuMTYuMDguMDAjU2hlbGwgYXJ0aWNsZXMjMTEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTQuMDAuMDAuMDAjU2NyYXAgYW5kIHdhc3RlIG1hdGVyaWFscyMxMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNS4wMC4wMCNNZXRhbCB3YXN0ZSBhbmQgc2NyYXAjMTEuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTQuMTUuMDEuMDAjRmVycm91cyBtZXRhbCB3YXN0ZSBvciBzY3JhcCMxMS4xNC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNS4wMi4wMCNOb24gZmVycm91cyBtZXRhbCB3YXN0ZSBvciBzY3JhcCMxMS4xNC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNS4wMy4wMCNBdXRvbW90aXZlIHdyZWNraW5nIGZvciB3YXN0ZSBvciBzY3JhcCMxMS4xNC4xNS4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNi4wMC4wMCNOb24gbWV0YWxsaWMgd2FzdGUgYW5kIHNjcmFwIzExLjE0LjAwLjAwLjAwCi11bnNwc2M3IzExLjE0LjE2LjAxLjAwI1RleHRpbGUgd2FzdGUgb3Igc2NyYXAjMTEuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTQuMTYuMDIuMDAjUGxhc3RpYyB3YXN0ZSBvciBzY3JhcCMxMS4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNi4wMy4wMCNPaWwgd2FzdGVzIzExLjE0LjE2LjAwLjAwCi11bnNwc2M3IzExLjE0LjE2LjA0LjAwI1BhcGVyIHdhc3RlcyMxMS4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNi4wNS4wMCNHbGFzcyB3YXN0ZSBvciBzY3JhcCMxMS4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNi4wNi4wMCNXb29kIHdhc3RlIG9yIHNjcmFwIzExLjE0LjE2LjAwLjAwCi11bnNwc2M3IzExLjE0LjE2LjA3LjAwI1J1YmJlciB3YXN0ZSBvciBzY3JhcCMxMS4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNi4wOC4wMCNIYXphcmRvdXMgd2FzdGUgb3Igc2NyYXAjMTEuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTQuMTYuMDkuMDAjQ29tcG9zaXRpb24gbGVhdGhlciMxMS4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNi4xMC4wMCNMZWF0aGVyIHdhc3RlIGFuZCBzY3JhcCMxMS4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNy4wMC4wMCNGb29kIGFuZCB0b2JhY2NvIHdhc3RlIGFuZCBzY3JhcCMxMS4xNC4wMC4wMC4wMAotdW5zcHNjNyMxMS4xNC4xNy4wMS4wMCNGb29kIHdhc3RlIG9yIHNjcmFwIzExLjE0LjE3LjAwLjAwCi11bnNwc2M3IzExLjE0LjE3LjAyLjAwI1RvYmFjY28gd2FzdGUgb3Igc2NyYXAjMTEuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMDAuMDAuMDAjRmliZXJzIGFuZCB0aHJlYWRzIGFuZCB5YXJucyMxMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNS4wMC4wMCNGaWJlcnMjMTEuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMDEuMDAjQWNldGF0ZSBmaWJlcnMjMTEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMDIuMDAjTnlsb24gZmliZXJzIzExLjE1LjE1LjAwLjAwCi11bnNwc2M3IzExLjE1LjE1LjAzLjAwI1BvbHllc3RlciBmaWJlcnMjMTEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMDQuMDAjQWNyeWxpYyBmaWJlcnMjMTEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMDUuMDAjVmlzY29zZSBmaWJlcnMjMTEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMDYuMDAjUmF5b24gZmliZXJzIzExLjE1LjE1LjAwLjAwCi11bnNwc2M3IzExLjE1LjE1LjA3LjAwI0NvdHRvbiBmaWJlcnMjMTEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMDguMDAjV29vbCBmaWJlcnMjMTEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMDkuMDAjU2lsayBmaWJlcnMjMTEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMTAuMDAjVmVnZXRhYmxlIGZpYmVycyMxMS4xNS4xNS4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNS4xMS4wMCNQb2x5cHJvcHlsZW5lIGZpYmVycyMxMS4xNS4xNS4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNS4xMi4wMCNHbGFzcyBmaWJlcnMjMTEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMTMuMDAjQ2VyYW1pYyBmaWJlcnMjMTEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTUuMTQuMDAjUG9seW1lciBhcmFtaWQgZmliZXJzIzExLjE1LjE1LjAwLjAwCi11bnNwc2M3IzExLjE1LjE1LjE1LjAwI0FzYmVzdG9zIGZpYmVycyMxMS4xNS4xNS4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNi4wMC4wMCNUaHJlYWRzIzExLjE1LjAwLjAwLjAwCi11bnNwc2M3IzExLjE1LjE2LjAxLjAwI0NvdHRvbiB0aHJlYWQjMTEuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTYuMDIuMDAjU2lsayB0aHJlYWQjMTEuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTYuMDMuMDAjUG9seWVzdGVyIHRocmVhZCMxMS4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNi4wNC4wMCNQb2x5YW1pZGUgdGhyZWFkIzExLjE1LjE2LjAwLjAwCi11bnNwc2M3IzExLjE1LjE2LjA1LjAwI0Jpc21hbGVtaWRlIHRocmVhZCMxMS4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNi4wNi4wMCNGaWJlcmdsYXNzIHRocmVhZCMxMS4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNi4wNy4wMCNHcmFwaGl0ZSB0aHJlYWQjMTEuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTYuMDguMDAjTnlsb24gdGhyZWFkIzExLjE1LjE2LjAwLjAwCi11bnNwc2M3IzExLjE1LjE2LjA5LjAwI1Jlc2luIGltcHJlZ25hdGVkIHRocmVhZCMxMS4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNi4xMC4wMCNSdWJiZXIgb3IgbGF0ZXggdGhyZWFkIzExLjE1LjE2LjAwLjAwCi11bnNwc2M3IzExLjE1LjE2LjExLjAwI1NwYW5kZXggdGhyZWFkIzExLjE1LjE2LjAwLjAwCi11bnNwc2M3IzExLjE1LjE3LjAwLjAwI1lhcm5zIzExLjE1LjAwLjAwLjAwCi11bnNwc2M3IzExLjE1LjE3LjAxLjAwI1dvb2wgeWFybiMxMS4xNS4xNy4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNy4wMi4wMCNDb3R0b24geWFybiMxMS4xNS4xNy4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNy4wMy4wMCNQb2x5ZXN0ZXIgeWFybiMxMS4xNS4xNy4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNy4wNC4wMCNBY3J5bGljIHlhcm4jMTEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTcuMDUuMDAjU2lsayB5YXJuIzExLjE1LjE3LjAwLjAwCi11bnNwc2M3IzExLjE1LjE3LjA2LjAwI1JhbWllIHlhcm4jMTEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTcuMDcuMDAjRmxheCB5YXJuIzExLjE1LjE3LjAwLjAwCi11bnNwc2M3IzExLjE1LjE3LjA4LjAwI0FuaW1hbCBoYWlyIHlhcm4jMTEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTcuMDkuMDAjU3ludGhldGljIHlhcm4jMTEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTEuMTUuMTcuMTAuMDAjSnV0ZSB5YXJuIzExLjE1LjE3LjAwLjAwCi11bnNwc2M3IzExLjE1LjE3LjExLjAwI0NvaXIgeWFybiMxMS4xNS4xNy4wMC4wMAotdW5zcHNjNyMxMS4xNS4xNy4xMi4wMCNQYXBlciB5YXJuIzExLjE1LjE3LjAwLjAwCi11bnNwc2M3IzExLjE1LjE3LjEzLjAwI0hlbXAgeWFybiMxMS4xNS4xNy4wMC4wMAotdW5zcHNjNyMxMS4xNi4wMC4wMC4wMCNGYWJyaWNzIGFuZCBsZWF0aGVyIG1hdGVyaWFscyMxMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNS4wMC4wMCNTaWxrIGZhYnJpY3MjMTEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMTUuMDEuMDAjUGxhaW4gd2VhdmUgc2lsayBmYWJyaWNzIzExLjE2LjE1LjAwLjAwCi11bnNwc2M3IzExLjE2LjE1LjAyLjAwI0phY3F1YXJkIHdlYXZlIHNpbGsgZmFicmljcyMxMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNS4wMy4wMCNLbml0IHNpbGsgZmFicmljcyMxMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNS4wNC4wMCNTaWxrIHZlbHZldHMgZmFicmljcyMxMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNi4wMC4wMCNXb29sIGZhYnJpY3MjMTEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMTYuMDEuMDAjUGxhaW4gd2VhdmUgd29vbCBmYWJyaWNzIzExLjE2LjE2LjAwLjAwCi11bnNwc2M3IzExLjE2LjE2LjAyLjAwI0phY3F1YXJkIHdlYXZlIHdvb2wgZmFicmljcyMxMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNi4wMy4wMCNLbml0IHdvb2wgZmFicmljcyMxMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNy4wMC4wMCNDb3R0b24gZmFicmljcyMxMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNy4wMS4wMCNQbGFpbiB3ZWF2ZSBjb3R0b24gZmFicmljcyMxMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNy4wMi4wMCNUd2lsbCB3ZWF2ZSBjb3R0b24gZmFicmljcyMxMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNy4wMy4wMCNDb3R0b24gb3hmb3JkIGNsb3RocyMxMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMxMS4xNi4xNy4wNC4wMCNLbml0IGNvdHRvbiBmYWJyaWNzIzExLjE2LjE3LjAwLjAwCi11bnNwc2M3IzExLjE2LjE3LjA1LjAwI0NvdHRvbiB2ZWx2ZXQgZmFicmljcyMxMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMxMS4xNi4xOC4wMC4wMCNTeW50aGV0aWMgZmFicmljcyMxMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMS4xNi4xOC4wMS4wMCNQbGFpbiB3ZWF2ZSBzeW50aGV0aWMgZmFicmljcyMxMS4xNi4xOC4wMC4wMAotdW5zcHNjNyMxMS4xNi4xOC4wMi4wMCNKYWNxdWFyZCB3ZWF2ZSBzeW50aGV0aWMgZmFicmljcyMxMS4xNi4xOC4wMC4wMAotdW5zcHNjNyMxMS4xNi4xOC4wMy4wMCNEb2JieSB3ZWF2ZSBzeW50aGV0aWMgZmFicmljcyMxMS4xNi4xOC4wMC4wMAotdW5zcHNjNyMxMS4xNi4xOC4wNC4wMCNLbml0IHN5bnRoZXRpYyBmYWJyaWNzIzExLjE2LjE4LjAwLjAwCi11bnNwc2M3IzExLjE2LjE4LjA1LjAwI1N5bnRoZXRpYyB2ZWx2ZXQgZmFicmljcyMxMS4xNi4xOC4wMC4wMAotdW5zcHNjNyMxMS4xNi4xOS4wMC4wMCNBcnRpZmljaWFsIGZhYnJpY3MjMTEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMTkuMDEuMDAjUGxhaW4gd2VhdmUgYXJ0aWZpY2lhbCBmYWJyaWNzIzExLjE2LjE5LjAwLjAwCi11bnNwc2M3IzExLjE2LjE5LjAyLjAwI0phY3F1YXJkIHdlYXZlIGFydGlmaWNpYWwgZmFicmljcyMxMS4xNi4xOS4wMC4wMAotdW5zcHNjNyMxMS4xNi4xOS4wMy4wMCNEb2JieSB3ZWF2ZSBhcnRpZmljaWFsIGZhYnJpY3MjMTEuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMTkuMDQuMDAjS25pdCBhcnRpZmljaWFsIGZhYnJpY3MjMTEuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMTkuMDUuMDAjQXJ0aWZpY2FsIHZlbHZldCBmYWJyaWNzIzExLjE2LjE5LjAwLjAwCi11bnNwc2M3IzExLjE2LjIwLjAwLjAwI0ZhYnJpY3Mgb2YgdmVnZXRhYmxlIG1hdGVyaWFsIG90aGVyIHRoYW4gY290dG9uIzExLjE2LjAwLjAwLjAwCi11bnNwc2M3IzExLjE2LjIwLjAxLjAwI1BsYWluIHdlYXZlIG5vbiBjb3R0b24gdmVnZXRhYmxlIGZpYmVyIGZhYnJpY3MjMTEuMTYuMjAuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjAuMDIuMDAjS25pdCBub24gY290dG9uIHZlZ2V0YWJsZSBmaWJlciBmYWJyaWNzIzExLjE2LjIwLjAwLjAwCi11bnNwc2M3IzExLjE2LjIwLjAzLjAwI0hlc3NpYW4gb3IgaGVtcCBvciBqdXRlIGNsb3RoIzExLjE2LjIwLjAwLjAwCi11bnNwc2M3IzExLjE2LjIxLjAwLjAwI1NwZWNpYWx0eSBmYWJyaWNzIG9yIGNsb3RoIzExLjE2LjAwLjAwLjAwCi11bnNwc2M3IzExLjE2LjIxLjAxLjAwI0NoZWVzZSBjbG90aCBvciBmYWJyaWMjMTEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjEuMDIuMDAjQmlzbWFsZW1pZGUgZmFicmljIG9yIGNsb3RoIzExLjE2LjIxLjAwLjAwCi11bnNwc2M3IzExLjE2LjIxLjAzLjAwI0ZpYmVyZ2xhc3MgZmFicmljIG9yIGNsb3RoIzExLjE2LjIxLjAwLjAwCi11bnNwc2M3IzExLjE2LjIxLjA0LjAwI0dyYXBoaXRlIGZhYnJpYyBvciBjbG90aCMxMS4xNi4yMS4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMS4wNS4wMCNHbGFzcyBmYWJyaWMgb3IgY2xvdGgjMTEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjEuMDcuMDAjUmVzaW4gaW1wcmVnbmF0ZWQgZmFicmljIG9yIGNsb3RoIzExLjE2LjIxLjAwLjAwCi11bnNwc2M3IzExLjE2LjIxLjA4LjAwI1dpcmUgbWVzaCBmYWJyaWMgb3IgY2xvdGgjMTEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjEuMDkuMDAjTGFjZSMxMS4xNi4yMS4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMS4xMC4wMCNOZXR0aW5nIzExLjE2LjIxLjAwLjAwCi11bnNwc2M3IzExLjE2LjIxLjExLjAwI01lc2gjMTEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjEuMTIuMDAjQ29hdGVkIGZhYnJpY3MjMTEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjEuMTMuMDAjVXBob2xzdGVyeSBmYWJyaWNzIzExLjE2LjIxLjAwLjAwCi11bnNwc2M3IzExLjE2LjIxLjE0LjAwI0hvb2sgYW5kIGxvb3AgZmFicmljcyBvciB0YXBlcyMxMS4xNi4yMS4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMS4xNS4wMCNFbGFzdGljIGJyYWlkIzExLjE2LjIxLjAwLjAwCi11bnNwc2M3IzExLjE2LjIxLjE2LjAwI0J1cmxhcCBjbG90aCMxMS4xNi4yMS4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMS4xNy4wMCNSdWJiZXIgZmFicmljcyMxMS4xNi4yMS4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMS4xOC4wMCNQYXBlciB5YXJuIGZhYnJpYyMxMS4xNi4yMS4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMS4xOS4wMCNUcmFjaW5nIGNsb3RoIzExLjE2LjIxLjAwLjAwCi11bnNwc2M3IzExLjE2LjIxLjIwLjAwI0JvbHRpbmcgY2xvdGgjMTEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjEuMjEuMDAjT3JuYW1lbnRhbCB0cmltbWluZ3MjMTEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjIuMDAuMDAjTm9ud292ZW4gZmFicmljcyMxMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMi4wMS4wMCNTcHVuYm9uZGVkIG5vbndvdmVucyMxMS4xNi4yMi4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMi4wMi4wMCNTcHVubGFjZWQgbm9ud292ZW5zIzExLjE2LjIyLjAwLjAwCi11bnNwc2M3IzExLjE2LjIzLjAwLjAwI0xlYXRoZXJzIzExLjE2LjAwLjAwLjAwCi11bnNwc2M3IzExLjE2LjIzLjAxLjAwI0NoYW1vaXMgbGVhdGhlciMxMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMy4wMi4wMCNHb2F0IGxlYXRoZXIjMTEuMTYuMjMuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjMuMDMuMDAjU2hlZXAgbGVhdGhlciMxMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMy4wNC4wMCNQYXRlbnQgbGVhdGhlciMxMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMy4wNS4wMCNDb3cgbGVhdGhlciMxMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMy4wNi4wMCNQaWcgbGVhdGhlciMxMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMxMS4xNi4yMy4wNy4wMCNTeW50aGV0aWMgb3IgaW1pdGF0aW9uIGxlYXRoZXIjMTEuMTYuMjMuMDAuMDAKLXVuc3BzYzcjMTEuMTYuMjMuMDguMDAjQnVmZmFsbyBsZWF0aGVyIzExLjE2LjIzLjAwLjAwCi11bnNwc2M3IzExLjE2LjIzLjA5LjAwI1JlcHRpbGUgbGVhdGhlciMxMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMxMi4wMC4wMC4wMC4wMCNDaGVtaWNhbHMgaW5jbHVkaW5nIEJpbyBDaGVtaWNhbHMgYW5kIEdhcyBNYXRlcmlhbHMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMDAuMDAuMDAjT3JnYW5pYyBjaGVtaWNhbHMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTUuMDAuMDAjQWxjb2hvbCMxMi4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNS4wMS4wMCNTYXR1cmF0ZWQgbW9ub2h5ZHJpYyBhbGNvaG9sIzEyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE1LjAyLjAwI0lzb3Byb3B5bCBhbGNvaG9sIzEyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE1LjAzLjAwI1Vuc2F0dXJhdGVkIG1vbm9oeWRyaWMgYWxjb2hvbCMxMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNS4wNC4wMCNDeWNsaWMgYWxjb2hvbCBvciB0aGVpciBoYWxvZ2VuYXRlZCBvciBzdWxwaG9uYXRlZCBvciBuaXRyYXRlZCBkZXJpdmF0aXZlcyMxMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNS4wNS4wMCNQaGVub2wgYWxjb2hvbCMxMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNS4wNi4wMCNIYWxvZ2VuYXRlZCBvciBzdWxwaG9uYXRlZCBvciBuaXRyYXRlZCBvciBuaXRyb3NhdGVkIGRlcml2YXRpdmVzIG9mIHBoZW5vbHMjMTIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTUuMDcuMDAjTWV0aHlsYXRlZCBzcGlyaXQjMTIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTYuMDAuMDAjRXRoZXJzIGFuZCBhbGNvaG9sIHBlcm94aWRlcyBhbmQgZXRoZXIgcGVyb3hpZGVzIGFuZCBvdGhlciBvcmdhbmljIGNvbXBvdW5kcyMxMi4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4wMS4wMCNBY3ljbGljIGV0aGVycyMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4wMi4wMCNDeWNsb25pYyBvciBjeWNsZW5pYyBvciBjeWNsb3RlcnBlbmljIGV0aGVycyMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4wMy4wMCNFdGhlciBvciBhcm9tYXRpYyBldGhlciMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4wNC4wMCNFdGhlciBhbGNvaG9sIzEyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE2LjA1LjAwI0V0aGVyIHBoZW5vbHMgb3IgZXRoZXIgYWxjb2hvbCBwaGVub2xzIzEyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE2LjA2LjAwI0FsY29ob2wgcGVyb3hpZGVzIzEyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE2LjA3LjAwI094aXJhbmUgb3IgZXRoeWxlbmUgb3hpZGUjMTIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTYuMDguMDAjRXBpY2hsb3JvaHlkcmluIG9yIDEgY2hsb3JvIDIgb3IgMyBlcG94eXByb3BhbmUjMTIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTYuMDkuMDAjRXBveGlkZXMgb3IgZXBveHlhbGNvaG9scyBvciBlcG94eXBoZW5vbHMgb3IgZXBveHlldGhlcnMjMTIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTYuMTAuMDAjQWNldGFscyBvciBrZW1pYWNldGFscyMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4xMS4wMCNBY3ljbGljIGFsZGVoeWRlcyB3aXRob3V0IG90aGVyIG94eWdlbiBmdW5jdGlvbiMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4xMi4wMCNDeWNsaWMgYWxkZWh5ZGVzIHdpdGhvdXQgb3RoZXIgb3h5Z2VuIGZ1bmN0aW9uIzEyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE2LjEzLjAwI0FsY29ob2wgYWxkZWh5ZGUjMTIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTYuMTQuMDAjUGFyYWZvcm1hbGRlaHlkZSMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4xNS4wMCNBbGRlaHlkZXMjMTIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTYuMTYuMDAjQWN5Y2xpYyBrZXRvbmVzIHdpdGhvdXQgb3RoZXIgb3h5Z2VuIGZ1bmN0aW9uIzEyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE2LjE3LjAwI0N5Y2xvbmljIG9yIGN5Y2xlbmljIG9yIGN5Y2xvdGVycGVuaWMga2V0b25lcyB3aXRob3V0IG90aGVyIG94eWdlbiBmdW5jdGlvbiMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4xOC4wMCNLZXRvbmVzIG9yIGFyb21hdGljIHdpdGhvdXQgb3RoZXIgb3h5Z2VuIGZ1bmN0aW9uIzEyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE2LjE5LjAwI0tldG9uZSBhbGNvaG9sIG9yIGtldG9uZSBhbGRlaHlkZXMjMTIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTYuMjAuMDAjS2V0b25lIHBoZW5vbHMgb3Iga2V0b25lcyB3aXRoIG90aGVyIG94eWdlbiBmdW5jdGlvbiMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4yMS4wMCNRdWlub25lcyMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4yMi4wMCNSZW5uZXQgdGFibGV0cyMxMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNi4yMy4wMCNFbnp5bWVzIzEyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE3LjAwLjAwI01vbm9jYXJib3h5bGljIGZhdHR5IGFjaWRzIG9yIGluZHVzdHJpYWwgYWNpZCBvaWxzIGZyb20gcmVmaW5pbmcjMTIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTcuMDEuMDAjT2xlaWMgYWNpZCMxMi4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNy4wMi4wMCNJbmR1c3RyaWFsIGZhdHR5IGFsY29ob2xzIzEyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE3LjAzLjAwI1N0ZWFyaWMgYWNpZCMxMi4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNy4wNC4wMCNUYWxsIG9pbCBmYXR0eSBhY2lkcyMxMi4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMC4xNy4wNS4wMCNBY2lkIG9pbHMgZnJvbSByZWZpbmluZyMxMi4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMC4xOC4wMC4wMCNDYXJib3h5bGljIGFjaWRzIGFuZCB0aGVpciBhbmh5ZHJpZGVzIGFuZCBoYWxpZGVzIGFuZCBwZXJveGlkZXMgYW5kIHBlcm94eWFjaWRzIzEyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjAxLjAwI0Zvcm1pYyBhY2lkIG9yIGl0cyBzYWx0cyBvciBlc3RlcnMjMTIuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTguMDIuMDAjQWNldGljIGFjaWQgb3IgaXRzIHNhbHRzIG9yICBhY2V0aWMgYW5oeWRyaWRlIzEyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjAzLjAwI0VzdGVycyBvZiBhY2V0aWMgYWNpZCMxMi4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMC4xOC4wNC4wMCNNb25vIG9yIGRpIHRyaWNobG9yYWNldGljIGFjaWQgb3IgdGhlaXIgc2FsdHMgb3IgZXN0ZXJzIzEyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjA1LjAwI1Byb3Bpb25pYyBhY2lkIG9yIGl0cyBzYWx0cyBvciBlc3RlcnMjMTIuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTguMDYuMDAjQnV0eXJpYyBhY2lkcyBvciB2YWxlcmljIGFjaWRzIG9yIHRoZWlyIHNhbHRzIG9yIGVzdGVycyMxMi4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMC4xOC4wNy4wMCNQYWxtaXRpYyBhY2lkcyBvciBzdGVhcmljIGFjaWRzIG9yIHRoZWlyIHNhbHRzIG9yIGVzdGVycyMxMi4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMC4xOC4wOC4wMCNTYXR1cmF0ZWQgYWNyeWxpYyBtb25vY2FyYm94eWxpYyBhY2lkcyMxMi4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMC4xOC4wOS4wMCNVbnNhdHVyYXRlZCBhY3ljbGljIG1vbm9jYXJib3h5bGljIGFjaWRzIzEyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjEwLjAwI0N5Y2xvbmljIG9yIGN5Y2xlbmljIG9yIGN5Y2xvdGVycGVuaWMgbW9ub2NhcmJveHlsaWMgYWNpZHMjMTIuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTguMTEuMDAjQXJvbWF0aWMgbW9ub2NhcmJveHlsaWMgYWNpZHMjMTIuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTguMTIuMDAjQWN5Y2xpYyBwb2x5Y2FyYm94eWxpYyBhY2lkcyMxMi4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMC4xOC4xMy4wMCNDeWNsb25pYyBvciBjeWNsZW5pYyBvciBjeWNsb3RlcnBlbmljIHBvbHljYXJib3h5bGljIGFjaWRzIzEyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjE0LjAwI0Fyb21hdGljIHBvbHljYXJib3h5bGljIGFjaWRzIzEyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjE1LjAwI0xhY3RpYyBhY2lkIG9yIGl0cyBzYWx0cyBvciBlc3RlcnMjMTIuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTguMTYuMDAjVGFydGFyaWMgYWNpZCBvciBpdHMgc2FsdHMgb3IgZXN0ZXJzIzEyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjE3LjAwI0F0cmljIGFjaWQgb3IgdHMgc2FsdHMgb3IgZXN0ZXJzIzEyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjE4LjAwI0dsdWNhcmljIGFjaWQgb3IgaXRzIHNhbHRzIG9yIGVzdGVycyMxMi4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMC4xOC4xOS4wMCNQaGVueWxnbHlvY29saWMgYWNpZCBvciBtYW5kZWxpYyBhY2lkIG9yIGl0cyBzYWx0cyBvciBlc3RlcnMjMTIuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTguMjAuMDAjQ2FyYm94eWxpYyBhY2lkcyB3aXRoIGFsY29ob2wgZnVuY3Rpb24gYnV0IHdpdGhvdXQgb3RoZXIgb3h5Z2VuIGZ1bmN0aW9uIzEyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjIxLjAwI0NhcmJveHlsaWMgYWNpZHMgd2l0aCBwaGVub2wgZnVuY3Rpb24gYnV0IHdpdGhvdXQgb3RoZXIgb3h5Z2VuIGZ1bmN0aW9uIzEyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEwLjE4LjIyLjAwI0NhcmJveHlsaWMgYWNpZHMgd2l0aCBhbGRlaHlkZSBvciBrZXRvbmUgZnVuY3Rpb24jMTIuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTkuMDAuMDAjQW1pbmUgYW5kIG94eWdlbiBmdW5jdGlvbiBhbWlubyBjb21wb3VuZHMgYW5kIHVyZWluZXMjMTIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMTkuMDEuMDAjR2x1dGFtaWMgYWNpZCBvciBpdHMgc2FsdHMjMTIuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMjAuMDAuMDAjT3JnYW5vIHN1bGZ1ciBjb21wb3VuZHMgYW5kIG90aGVyIG9yZ2FubyBpbm9yZ2FuaWMgY29tcG91bmRzIzEyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzEyLjEwLjIwLjAxLjAwI09yZ2FubyBzdWxmdXIgY29tcG91bmRzIzEyLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEyLjEwLjIwLjAyLjAwI090aGVyIG9yZ2FubyBpbm9yZ2FuaWMgY29tcG91bmRzIzEyLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEyLjEwLjIwLjAzLjAwI0NvbXBvdW5kcyBjb250YWluaW5nIGFuIHVuZnVzZWQgZnVyYW4gcmluZyBpbiB0aGUgc3RydWN0dXJlIzEyLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEyLjEwLjIwLjA0LjAwI0xhY3RpbmVzIzEyLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEyLjEwLjIwLjA1LjAwI0NvbXBvdW5kcyBjb250YWluaW5nIGFuIHVuZnVzZWQgaW1pZGF6b2xlIHJpbmcgaW4gdGhlIHN0cnVjdHVyZSMxMi4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMC4wNi4wMCNDb21wb3VuZHMgY29udGFpbmluZyBhbiB1bmZ1c2VkIHB5cmlkaW5lIHJpbmcgaW4gdGhlIHN0cnVjdHVyZSMxMi4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMC4wNy4wMCNDb21wb3VuZHMgY29udGFpbmluZyBhIHF1aW5vbGluZSBvciBpc29xdWlub2xpbmUgcmluZyBzeXN0ZW0jMTIuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMjAuMDguMDAjTGFjdGFtcyMxMi4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMC4wOS4wMCNIZXRlcm9jeWNsaWMgY29tcG91bmRzIHdpdGggbml0cm9nZW4gaGV0ZXJvIGF0b20gb25seSMxMi4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMC4xMC4wMCNDb21wb3VuZHMgY29udGFpbmluZyBhbiB1bmZ1c2VkIHRoaWF6b2xlIHJpbmcgaW4gdGhlIHN0cnVjdHVyZSMxMi4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMS4wMC4wMCNIeWRyb2NhcmJvbnMgYW5kIHRoZWlyIGhhbG9nZW5hdGVkIGFuZCBzdWxwaG9uYXRlZCBhbmQgbml0cm9zYXRlZCBkZXJpdmF0aXZlcyMxMi4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMS4wMS4wMCNTYXR1cmF0ZWQgYWN5Y2xpYyBoeWRyb2NhcmJvbnMjMTIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMjEuMDIuMDAjVW5zYXR1cmF0ZWQgYWN5Y2xpYyBoeWRyb2NhcmJvbnMjMTIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTAuMjEuMDMuMDAjQ3ljbGljIGh5ZHJvY2FyYm9ucyMxMi4xMC4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMS4wNC4wMCNIYWxvZ2VudGF0ZWQgZGVyaXZhdGl2ZXMgb2YgaHlkcm9jYXJib25zIzEyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzEyLjEwLjIxLjA1LjAwI1JlZnJpZ2VyYW50cyMxMi4xMC4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMS4wNi4wMCNTdWxwaG9uYXRlZCBvciBuaXRyYXRlZCBvciBuaXRyb3NhdGVkIGRlcml2YXRpdmVzIG9mIGh5ZHJvY2FyYm9ucyMxMi4xMC4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMS4wNy4wMCNQYXJhZmZpbiMxMi4xMC4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMC4yMi4wMC4wMCNQaG9zcGhvcmljIGVzdGVycyBhbmQgdGhlaXIgc2FsdHMgYW5kIGVzdGVycyBvZiBvdGhlciBvcmdhbmljIGFjaWRzIzEyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzEyLjEwLjIyLjAxLjAwI1Bob3NwaG9yaWMgZXN0ZXJzIG9yIHRoZWlyIHNhbHRzIzEyLjEwLjIyLjAwLjAwCi11bnNwc2M3IzEyLjExLjAwLjAwLjAwI0lub3JnYW5pYyBjaGVtaWNhbHMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMDAuMDAjQ2hlbWljYWwgZWxlbWVudHMjMTIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMDEuMDAjQ2hsb3JpbmUjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMDIuMDAjRmx1b3JpbmUgb3IgYnJvbWluZSMxMi4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNi4wMy4wMCNDaGxvcmluZSBsaXF1aWQgZ2FzIzEyLjExLjE2LjAwLjAwCi11bnNwc2M3IzEyLjExLjE2LjA0LjAwI1N1YmxpbWVzIG9yIHByZWNpcGl0YXRlZCBzdWxwaHVyIG9yIGNvbGxvaWRhbCBzdWxwaHVyIzEyLjExLjE2LjAwLjAwCi11bnNwc2M3IzEyLjExLjE2LjA1LjAwI0Jvcm9uIG9yIHRlbGx1cml1bSMxMi4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNi4wNi4wMCNTaWxpY29uIzEyLjExLjE2LjAwLjAwCi11bnNwc2M3IzEyLjExLjE2LjA3LjAwI0Fsa2FsaSBtZXRhbHMjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMDguMDAjQWxrYWxpbmUgZWFydGggbWV0YWxzIzEyLjExLjE2LjAwLjAwCi11bnNwc2M3IzEyLjExLjE2LjA5LjAwI01lcmN1cnkjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMTAuMDAjSHlkcm9nZW4gY2hsb3JpZGUgb3IgaHlkcm9jaGxvcmljIGFjaWQjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMTEuMDAjQ2hsb3Jvc3VsZnVyaWMgYWNpZCMxMi4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNi4xMi4wMCNTdWxwaHVyaWMgYWNpZCMxMi4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNi4xMy4wMCNQaG9zcGhvcnVzIHBlbnRhb3hpZGUgb3IgcGhvc3Bob3JpYyBhY2lkIG9yIHBvbHlwaG9zcGhvcmljIGFjaWRzIzEyLjExLjE2LjAwLjAwCi11bnNwc2M3IzEyLjExLjE2LjE0LjAwI094aWRlcyBvZiBib3JvbiBvciBib3JpYyBhY2lkcyMxMi4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNi4xNS4wMCNIeWRyb2dlbiBmbHVvcmlkZSBvciBoeWRyb2ZsdW9yaWMgYWNpZCMxMi4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNi4xNi4wMCNTaWxpY29uIGRpb3hpZGUjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMTcuMDAjU3VscGh1ciBkaW94aWRlIzEyLjExLjE2LjAwLjAwCi11bnNwc2M3IzEyLjExLjE2LjE4LjAwI0h5ZHJvY3lhbmljIGFjaWQjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMTkuMDAjSGFsaWRlcyBvciBoYWxpZGUgb3hpZGVzIG9mIG5vbiBtZXRhbHMjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMjAuMDAjU3VscGhpZGVzIG9mIG5vbiBtZXRhbHMjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMjEuMDAjU29kaXVtIG9yIHBvdGFzc2l1bSBoeWRyb3hpZGUjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMjIuMDAjSHlkcm94aWRlIG9yIHBlcm94aWRlIG9mIG1hZ25lc2l1bSBvciBveGlkZXMjMTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTYuMjMuMDAjQWx1bWludW0gaHlkcm94aWRlIzEyLjExLjE2LjAwLjAwCi11bnNwc2M3IzEyLjExLjE2LjI0LjAwI0h5ZHJveGlkZSBvciBoeWRyb3h5bGFtaW5lIG9yIHRoZWlyIGlub3JnYW5pYyBzYWx0cyMxMi4xMS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNy4wMC4wMCNNZXRhbCBveGlkZXMgYW5kIGh5ZHJveGlkZXMgYW5kIHBlcm94aWRlcyMxMi4xMS4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNy4wMS4wMCNaaW5jIG94aWRlIG9yIHppbmMgcGVyb3hpZGUjMTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTcuMDIuMDAjQ2hyb21pdW0gb3hpZGVzIG9yIGh5ZHJveGlkZXMjMTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTcuMDMuMDAjTWFuZ2FuZXNlIG94aWRlcyMxMi4xMS4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNy4wNC4wMCNJcm9uIG94aWRlcyBvciBoeWRyb3hpZGVzIG9yIGVhcnRoIGNvbG91cnMjMTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTcuMDUuMDAjQ29iYWx0IG94aWRlcyBvciBoeWRyb3hpZGVzIG9yIGNvbW1lcmNpYWwgY29iYWx0IG94aWRlcyMxMi4xMS4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNy4wNi4wMCNUaXRhbml1bSBveGlkZXMjMTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTcuMDcuMDAjTGVhZCBveGlkZXMgb3IgcmVkIGxlYWQgb3Igb3JhbmdlIGxlYWQjMTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTcuMDguMDAjTGl0aGl1bSBveGlkZSBvciBoeWRyb3hpZGUjMTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTcuMDkuMDAjVmFuYWRpdW0gb3hpZGVzIG9yIGh5ZHJveGlkZXMjMTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTcuMTAuMDAjTmlja2VsIG94aWRlcyBvciBoeWRyb3hpZGVzIzEyLjExLjE3LjAwLjAwCi11bnNwc2M3IzEyLjExLjE3LjExLjAwI0NvcHBlciBveGlkZXMgb3IgaHlkcm94aWRlcyMxMi4xMS4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMS4xNy4xMi4wMCNHZXJtYW5pdW0gb3hpZGVzIG9yIHppcmNvbml1bSBkaW94aWRlIzEyLjExLjE3LjAwLjAwCi11bnNwc2M3IzEyLjExLjE3LjEzLjAwI01vbHliZGVudW0gb3hpZGVzIG9yIGh5ZHJveGlkZXMjMTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTcuMTQuMDAjQW50aW1vbnkgb3hpZGVzIzEyLjExLjE3LjAwLjAwCi11bnNwc2M3IzEyLjExLjE4LjAwLjAwI1NhbHRzIG9mIG94b21ldGFsbGljIGFuZCBwZXJveG9tZXRhbGxpYyBhY2lkcyBhbmQgb3RoZXIgaW5vcmdhbmljIGFjaWRzIzEyLjExLjAwLjAwLjAwCi11bnNwc2M3IzEyLjExLjE4LjAxLjAwI0FsdW1pbmF0ZXMjMTIuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTguMDIuMDAjWmluYyBvciBsZWFkIGNocm9tYXRlIzEyLjExLjE4LjAwLjAwCi11bnNwc2M3IzEyLjExLjE4LjAzLjAwI1NvZGl1bSBkaWNocm9tYXRlIzEyLjExLjE4LjAwLjAwCi11bnNwc2M3IzEyLjExLjE4LjA0LjAwI1BvdGFzc2l1bSBkaWNocm9tYXRlIzEyLjExLjE4LjAwLjAwCi11bnNwc2M3IzEyLjExLjE4LjA1LjAwI090aGVyIGNocm9tYXRlIG9yIGRpY2hyb21hdGUgb3IgcGVyb3hvY2hyb21hdGVzIzEyLjExLjE4LjAwLjAwCi11bnNwc2M3IzEyLjExLjE4LjA2LjAwI01hbmdhbml0ZXMgb3IgbWFuZ2FuYXRlcyBvciBwZXJtYW5nYW5hdGVzIzEyLjExLjE4LjAwLjAwCi11bnNwc2M3IzEyLjExLjE4LjA3LjAwI01vbHliZGF0ZXMjMTIuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTguMDguMDAjVHVuZ3N0YXRlcyBvciB3b2xmcmFtYXRlcyMxMi4xMS4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOC4wOS4wMCNTaWx2ZXIgY29tcG91bmRzIzEyLjExLjE4LjAwLjAwCi11bnNwc2M3IzEyLjExLjE4LjEwLjAwI0dvbGQgY29tcG91bmRzIzEyLjExLjE4LjAwLjAwCi11bnNwc2M3IzEyLjExLjE4LjExLjAwI090aGVyIGNvbXBvdW5kcyBvciBhbWFsZ2FtcyMxMi4xMS4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOC4xMi4wMCNBbWFsZ2FtcyBvdGhlciB0aGFuIGFtYWxnYW1zIG9mIHByZWNpb3VzIG1ldGFscyMxMi4xMS4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4wMC4wMCNTYWx0cyBhbmQgcGVyb3h5c2FsdHMgb2YgaW5vcmdhbmljIGFjaWRzIGFuZCBtZXRhbCMxMi4xMS4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4wMS4wMCNGbHVvcmlkZXMgb3IgZmx1b3Jvc2lsaWNhdGVzIG9yIGZsdW9yb2FsdW1pbmF0ZXMjMTIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTkuMDIuMDAjQ2hsb3JpZGVzIzEyLjExLjE5LjAwLjAwCi11bnNwc2M3IzEyLjExLjE5LjAzLjAwI1NvZGl1bSBjaGxvcmlkZSMxMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4wNC4wMCNTYWwgYW1tb25pYWMgYmxvY2tzIzEyLjExLjE5LjAwLjAwCi11bnNwc2M3IzEyLjExLjE5LjA1LjAwI1BvdGFzc2l1bSBpb2RpbmF0ZSMxMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4wNi4wMCNTdWxwaGlkZXMgb3IgcG9seXN1bGZpZGVzIG9yIGRpdGhpb25pdGVzIG9yICBzdWxmb3h5bGF0ZXMjMTIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTkuMDcuMDAjU3VscGhpdGVzIG9yIHRoaW9zdWxmYXRlcyMxMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4wOC4wMCNBbHVtaW51bSBzdWxwaGF0ZSMxMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4wOS4wMCNDb2xsb2lkYWwgcHJlY2lvdXMgbWV0YWxzIzEyLjExLjE5LjAwLjAwCi11bnNwc2M3IzEyLjExLjE5LjEwLjAwI0ZlcnJvdXMgc3VscGhhdGUjMTIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTkuMTEuMDAjU2lsdmVyIG5pdHJhdGUjMTIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTkuMTIuMDAjU29kaXVtIGRpaHlkcm9nZXJub3J0aG9waG9zcGhhdGUjMTIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMTkuMTMuMDAjU29kaXVtIHBob3NwaGF0ZSBkaWJhc2ljIzEyLjExLjE5LjAwLjAwCi11bnNwc2M3IzEyLjExLjE5LjE0LjAwI1NvZGl1bSBiaWNhcmJvbmF0ZSMxMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4xNS4wMCNUcmkgc29kaXVtIGNpdHJhdGUgZGkgaHlkcmF0ZSMxMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4xNi4wMCNTb2RpdW0gY2FyYm9uYXRlIzEyLjExLjE5LjAwLjAwCi11bnNwc2M3IzEyLjExLjE5LjE3LjAwI01ldGFsbGljIHNvZGl1bSMxMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4xOC4wMCNTb2RpdW0gc2lsaWNhdGUgbGlxdWlkcyMxMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4xMS4xOS4xOS4wMCNTb2RpdW0gc2lsaWNhdGUgYmluZGVycyMxMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMC4wMC4wMCNIeWRyb2dlbiBwZXJveGlkZSBhbmQgaHlkcmlkZXMgYW5kIG5pdHJpZGVzIGFuZCBhc2lkZXMgYW5kIHNpbGljaWRlcyBhbmQgYm9yaWRlcyMxMi4xMS4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMC4wMS4wMCNIeWRyb2dlbiBwZXJveGlkZSMxMi4xMS4yMC4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMC4wMi4wMCNQaG9zcGhpZGVzIzEyLjExLjIwLjAwLjAwCi11bnNwc2M3IzEyLjExLjIwLjAzLjAwI0NhcmJpZGVzIzEyLjExLjIwLjAwLjAwCi11bnNwc2M3IzEyLjExLjIwLjA0LjAwI0NhbGNpdW0gY2FyYmlkZSMxMi4xMS4yMC4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMC4wNS4wMCNCcm9taWRlcyMxMi4xMS4yMC4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4wMC4wMCNJc290b3BlcyBhbmQgdGhlaXIgY29tcG91bmRzIGlub3JnYW5pYyBhbmQgb3JnYW5pYyMxMi4xMS4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4wMS4wMCNEZXV0ZXJpdW0jMTIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMjEuMDIuMDAjRGV1dGVyYXRlZCBzb2x2ZW50cyMxMi4xMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4wMy4wMCNIZWF2eSB3YXRlciMxMi4xMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4wNC4wMCNBbHBoYSBzb3VyY2VzIzEyLjExLjIxLjAwLjAwCi11bnNwc2M3IzEyLjExLjIxLjA1LjAwI0JldGEgc291cmNlcyMxMi4xMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4wNi4wMCNDb2JhbHQgc291cmNlcyMxMi4xMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4wNy4wMCNHYW1tYSBzb3VyY2VzIzEyLjExLjIxLjAwLjAwCi11bnNwc2M3IzEyLjExLjIxLjA4LjAwI05ldXRyb24gc291cmNlcyMxMi4xMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4wOS4wMCNSYWRpb2lzb3RvcGUgc291cmNlcyMxMi4xMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4xMC4wMCNDYWxpYnJhdGlvbiBzb3VyY2VzIzEyLjExLjIxLjAwLjAwCi11bnNwc2M3IzEyLjExLjIxLjExLjAwI0luIHZpdm8gcHJvZHVjdHMjMTIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMjEuMTIuMDAjUmFkaW9jaGVtaWNhbCBpc290b3BlcyMxMi4xMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4xMy4wMCNSYWRpb2dyYXBoaWMgc291cmNlIzEyLjExLjIxLjAwLjAwCi11bnNwc2M3IzEyLjExLjIxLjE0LjAwI1JhZGlvaW1tdW5vYXNzYXkgaXNvdG9wZXMjMTIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMjEuMTUuMDAjVHJpdGl1bSB0YXJnZXRzIzEyLjExLjIxLjAwLjAwCi11bnNwc2M3IzEyLjExLjIxLjE2LjAwI0V4Y2l0YXRpb24gc291cmNlIG9yIGFubnVsYXIjMTIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMjEuMTcuMDAjUmFkaW9waGFybWFjZXV0aWNhbCBjb21wb3VuZHMgZm9yIGxhYmVsbGluZyMxMi4xMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMS4xOC4wMCNDaGVtaWNhbHMgbGFiZWxsZWQgQzE0IzEyLjExLjIxLjAwLjAwCi11bnNwc2M3IzEyLjExLjIxLjE5LjAwI0Zpc3Npb25hYmxlIGlzb3RvcGVzIzEyLjExLjIxLjAwLjAwCi11bnNwc2M3IzEyLjExLjIxLjIwLjAwI0luIHZpdm8gcmFkaW9hY3RpdmUgaXNvdG9wZSBwcm9kdWN0cyMxMi4xMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMi4wMC4wMCNDeWFuaWRlcyMxMi4xMS4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMS4yMi4wMS4wMCNDeWFuaWRlcyBvciBjeWFuaWRlIG94aWRlcyBvZiBzb2RpdW0jMTIuMTEuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMjIuMDIuMDAjQ29tcGxleCBjeWFuaWRlcyBvciB0aGlvY3lhbmF0ZXMjMTIuMTEuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMTEuMjIuMDMuMDAjQ3lhbmlkZXMgb3IgY3lhbmlkZSBveGlkZXMjMTIuMTEuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMTIuMDAuMDAuMDAjR2FzZXMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTIuMTUuMDAuMDAjSW5kdXN0cmlhbCBnYXNlcyMxMi4xMi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMi4xNS4wMS4wMCNOaXRyb3VzIG94aWRlIGdhcyMxMi4xMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMi4xNS4wMi4wMCNIZWxpdW0gZ2FzIzEyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjEyLjE1LjA0LjAwI0NhcmJvbiBtb25veGlkZSMxMi4xMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMi4xNS4wNS4wMCNIeWRyb2dlbiBnYXMjMTIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTIuMTUuMDYuMDAjQ2FyYm9uIGRpb3hpZGUjMTIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTIuMTUuMDcuMDAjTml0cm9nZW4gZ2FzIzEyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjEyLjE1LjA4LjAwI05lb24gZ2FzIzEyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjEyLjE1LjEwLjAwI094eWdlbiMxMi4xMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMi4xNi4wMC4wMCNSYXJlIGdhc2VzIzEyLjEyLjAwLjAwLjAwCi11bnNwc2M3IzEyLjEyLjE2LjAxLjAwI1hlbm9uIGdhcyMxMi4xMi4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMi4xNi4wMi4wMCNSYWRvbiBnYXMjMTIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTIuMTYuMDMuMDAjS3J5cHRvbiBnYXMjMTIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTIuMTYuMDQuMDAjQXJnb24gZ2FzIzEyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEyLjE2LjA5LjAwI1hlbm9uIGdhcyMxMi4xMi4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMi4xNi4xMC4wMCNSYWRvbiBnYXMjMTIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTIuMTYuMTEuMDAjS3J5cHRvbiBnYXMjMTIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTIuMTYuMTIuMDAjQXJnb24gZ2FzIzEyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEzLjAwLjAwLjAwI0V4cGxvc2l2ZSBtYXRlcmlhbHMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTUuMDAuMDAjRXhwbG9zaXZlcyMxMi4xMy4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMy4xNS4wMS4wMCNEeW5hbWl0ZSMxMi4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMy4xNS4wMi4wMCNFeHBsb3NpdmUgY2FydHJpZGdlcyMxMi4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMy4xNS4wMy4wMCNQcm9wZWxsYW50IGV4cGxvc2l2ZXMjMTIuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTUuMDQuMDAjRXhwbG9zaXZlIGNoYXJnZXMjMTIuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTUuMDUuMDAjUGxhc3RpYyBleHBsb3NpdmVzIzEyLjEzLjE1LjAwLjAwCi11bnNwc2M3IzEyLjEzLjE1LjA2LjAwI0FsdW1pbml6ZWQgZXhwbG9zaXZlcyMxMi4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMy4xNS4wNy4wMCNBbW1vbml1bSBuaXRyYXRlIGV4cGxvc2l2ZXMjMTIuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTUuMDguMDAjTml0cm9nbHljZXJpbiBwb3dkZXIgZXhwbG9zaXZlcyMxMi4xMy4xNS4wMC4wMAotdW5zcHNjNyMxMi4xMy4xNi4wMC4wMCNQeXJvdGVjaG5pY3MjMTIuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTYuMDEuMDAjRmlyZXdvcmtzIzEyLjEzLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEzLjE2LjAyLjAwI0ZvZyBzaWduYWxzIzEyLjEzLjE2LjAwLjAwCi11bnNwc2M3IzEyLjEzLjE2LjAzLjAwI1JhaW4gcm9ja2V0cyMxMi4xMy4xNi4wMC4wMAotdW5zcHNjNyMxMi4xMy4xNi4wNC4wMCNGbGFyZXMjMTIuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTYuMDUuMDAjUHlyb3RlY2huaWMgbWF0ZXJpYWxzIGZvciB0aGVhdGVyIG9yIHRlbGV2aXNpb24jMTIuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTcuMDAuMDAjSWduaXRlcnMjMTIuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTcuMDEuMDAjQmxhc3RpbmcgY2FwcyMxMi4xMy4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMy4xNy4wMi4wMCNEZXRvbmF0b3JzIzEyLjEzLjE3LjAwLjAwCi11bnNwc2M3IzEyLjEzLjE3LjAzLjAwI0V4cGxvc2l2ZXMgZnVzZXMjMTIuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTcuMDQuMDAjRXhwbG9zaXZlIGluaXRpYXRvcnMjMTIuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTcuMDUuMDAjRXhwbG9zaXZlIHByaW1lcnMjMTIuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTcuMDYuMDAjTWF0Y2hlcyMxMi4xMy4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMy4xNy4wNy4wMCNMaWdodGVycyMxMi4xMy4xNy4wMC4wMAotdW5zcHNjNyMxMi4xMy4xOC4wMC4wMCNQcm9wZWxsYW50cyMxMi4xMy4wMC4wMC4wMAotdW5zcHNjNyMxMi4xMy4xOC4wMS4wMCNQb3dkZXIgcHJvcGVsbGFudHMjMTIuMTMuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTguMDIuMDAjU29saWQgcHJvcGVsbGFudHMjMTIuMTMuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTMuMTguMDMuMDAjR3VuIHByb3BlbGxhbnRzIzEyLjEzLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEzLjE4LjA0LjAwI0hpZ2ggZW5lcmd5IHByb3BlbGxhbnRzIzEyLjEzLjE4LjAwLjAwCi11bnNwc2M3IzEyLjEzLjE4LjA1LjAwI0dlbGxlZCBwcm9wZWxsYW50cyMxMi4xMy4xOC4wMC4wMAotdW5zcHNjNyMxMi4xMy4xOC4wNi4wMCNIeWJyaWQgcHJvcGVsbGFudHMjMTIuMTMuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTQuMDAuMDAuMDAjRWxlbWVudHMgYW5kIGdhc2VzIzEyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEyLjE0LjE1LjAwLjAwI0VhcnRoIG1ldGFscyMxMi4xNC4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNS4wMS4wMCNCZXJ5bGxpdW0gKEJlKSMxMi4xNC4xNS4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNS4wMi4wMCNNYWduZXNpdW0gKE1nKSMxMi4xNC4xNS4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNS4wMy4wMCNDYWxjaXVtIChDYSkjMTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTUuMDQuMDAjU3Ryb250aXVtIChTcikjMTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTUuMDUuMDAjQmFyaXVtIChCYSkjMTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTUuMDYuMDAjUmFkaXVtIChSYSkjMTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTYuMDAuMDAjUmFyZSBlYXJ0aCBtZXRhbHMjMTIuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTYuMDEuMDAjQ2VyaXVtIChDZSkjMTIuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTYuMDIuMDAjRHlzcHJvc2l1bSAoRHkpIzEyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE2LjAzLjAwI0VyYml1bSAoRXIpIzEyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE2LjA0LjAwI0V1cm9waXVtIChFdSkjMTIuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTYuMDUuMDAjR2Fkb2xpbml1bSAoR2QpIzEyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE2LjA2LjAwI0hvbG1pdW0gKEhvKSMxMi4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNi4wNy4wMCNMYW50aGFudW0gKExhKSMxMi4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNi4wOC4wMCNMdXRldGl1bSAoTHUpIzEyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE2LjA5LjAwI05lb2R5bWl1bSAoTmQpIzEyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE2LjEwLjAwI1ByYXNlb2R5bWl1bSAoUHIpIzEyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE2LjExLjAwI1Byb21ldGhpdW0gKFByKSMxMi4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNi4xMi4wMCNTYW1hcml1bSAoU20pIzEyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE2LjEzLjAwI1NjYW5kaXVtIChTYykjMTIuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTYuMTQuMDAjVGVyYml1bSAoVGIpIzEyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE2LjE1LjAwI1RodWxpdW0gKFRtKSMxMi4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNi4xNi4wMCNZdHRlcmJpdW0gKFliKSMxMi4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNi4xNy4wMCNZdHRyaXVtIChZKSMxMi4xNC4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4wMC4wMCNUcmFuc2l0aW9uIG1ldGFscyMxMi4xNC4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4wMS4wMCNBY3Rpbml1bSAoQWMpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjAyLjAwI0FsdW1pbnVtIChBbCkjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMDMuMDAjQW1lcmljaXVtIChBbSkjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMDQuMDAjQW50aW1vbnkgKFNiKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4wNS4wMCNCZXJrZWxpdW0gKEJrKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4wNi4wMCNCaXNtdXRoIChCaSkjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMDcuMDAjQ2FkbWl1bSAoQ2EpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjA4LjAwI0NhbGlmb3JuaXVtIChDZikjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMDkuMDAjQ2hyb21pdW0gKENyKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4xMC4wMCNDb2JhbHQgKENvKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4xMS4wMCNDb3BwZXIgKEN1KSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4xMi4wMCNDdXJpdW0gKENtKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4xMy4wMCNFaW5zdGVpbml1bSAoRXMpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjE0LjAwI0Zlcm1pdW0gKEZtKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4xNS4wMCNHYWxsaXVtIChHYSkjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMTYuMDAjR2VybWFuaXVtIChHZSkjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMTcuMDAjR29sZCAoQXUpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjE4LjAwI0hhZm5pdW0gKEhmKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4xOS4wMCNJbmRpdW0gKEluKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4yMC4wMCNJcmlkaXVtIChJcikjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMjEuMDAjSXJvbiAoRmUpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjIyLjAwI0xhd3JlbmNpdW0gKExyKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4yMy4wMCNMZWFkIChQYikjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMjQuMDAjTWFuZ2FuZXNlIChNbikjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMjUuMDAjTWVuZGVsZXZpdW0gKE1kKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4yNi4wMCNNZXJjdXJ5IChIZykjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMjcuMDAjTW9seWJkZW51bSAoTW8pIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjI4LjAwI05lcHR1bml1bSAoTnApIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjI5LjAwI05pY2tlbCAoTmkpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjMwLjAwI05pb2JpdW0gKE5iKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4zMS4wMCNOb2JlbGl1bSAoTm8pIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjMyLjAwI09zbWl1bSAoT3MpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjMzLjAwI1BhbGxhZGl1bSAoUGQpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjM0LjAwI1BsYXRpbnVtIChQdCkjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMzUuMDAjUGx1dG9uaXVtIChQdSkjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMzYuMDAjUHJvdGFjdGluaXVtIChQYSkjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuMzcuMDAjUmhlbml1bSAoUmUpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjM4LjAwI1Job2RpdW0gKFJoKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy4zOS4wMCNSdXRoZW5pdW0gKFJ1KSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy40MC4wMCNTaWx2ZXIgKEFnKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy40MS4wMCNUYW50YWx1bSAoVGEpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjQyLjAwI1RlY2huZXRpdW0gKFRlKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy40My4wMCNUaGFsbGl1bSAoVGwpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjQ0LjAwI1Rob3JpdW0gKFRoKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy40NS4wMCNUaW4gKFNuKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy40Ni4wMCNUaXRhbml1bSAoVGkpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjQ3LjAwI1R1bmdzdGVuIChXKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy40OC4wMCNVcmFuaXVtIChVKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy40OS4wMCNWYW5hZGl1bSAoVikjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuNTAuMDAjWmluYyAoWm4pIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjUxLjAwI1ppcmNvbml1bSAoWnIpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjUyLjAwI0JvaHJpdW0gKEJoKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy41My4wMCNEdWJuaXVtIChEYikjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuNTQuMDAjSGFzc2l1bSAoSHMpIzEyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE3LjU1LjAwI1J1dGhlcmZvcmRpdW0gKFJmKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy41Ni4wMCNTZWFib3JnaXVtIChTZykjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuNTcuMDAjVW51bm5pbGl1bSAoVXVtKSMxMi4xNC4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNC4xNy41OC4wMCNVbnVudW5pdW0gKFV1dSkjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuNTkuMDAjVW51bmJpdW0gKFV1YikjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTcuNjAuMDAjUG9sb25pdW0gKChQbykjMTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTguMDAuMDAjQWxrYWxpIG1ldGFscyMxMi4xNC4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNC4xOC4wMS4wMCNDZXNpdW0gKENzKSMxMi4xNC4xOC4wMC4wMAotdW5zcHNjNyMxMi4xNC4xOC4wMi4wMCNGcmFuY2l1bSAoRm0pIzEyLjE0LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE4LjAzLjAwI0xpdGhpdW0gKExpKSMxMi4xNC4xOC4wMC4wMAotdW5zcHNjNyMxMi4xNC4xOC4wNC4wMCNQb3Rhc3NpdW0gKEspIzEyLjE0LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE4LjA1LjAwI1J1YmlkaXVtIChSYikjMTIuMTQuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTguMDYuMDAjU29kaXVtIChOYSkjMTIuMTQuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTkuMDAuMDAjTm9uIG1ldGFscyBhbmQgcHVyZSBhbmQgZWxlbWVudGFsIGdhc2VzIzEyLjE0LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE0LjE5LjAxLjAwI0NobG9yaW5lICAoQ2wpIzEyLjE0LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE5LjAyLjAwI0h5ZHJvZ2VuIChIKSMxMi4xNC4xOS4wMC4wMAotdW5zcHNjNyMxMi4xNC4xOS4wMy4wMCNOaXRyb2dlbiAgKE4pIzEyLjE0LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE5LjA0LjAwI094eWdlbiAoTykjMTIuMTQuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTkuMDUuMDAjRmx1b3JpbmUgIChGKSMxMi4xNC4xOS4wMC4wMAotdW5zcHNjNyMxMi4xNC4xOS4wNi4wMCNBcnNlbmljIChBcykjMTIuMTQuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTkuMDcuMDAjQm9yb24gKEJoKSMxMi4xNC4xOS4wMC4wMAotdW5zcHNjNyMxMi4xNC4xOS4wOC4wMCNDYXJib24gKEMpIzEyLjE0LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE5LjA5LjAwI1Bob3NwaG9ydXMgKFApIzEyLjE0LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE5LjEwLjAwI1NlbGVuaXVtIChTZSkjMTIuMTQuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTkuMTEuMDAjU2lsaWNvbiAoU2kpIzEyLjE0LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE5LjEyLjAwI1N1bGZ1ciAoUykjMTIuMTQuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTkuMTMuMDAjVGVsbHVyaXVtIChUZSkjMTIuMTQuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMTkuMTQuMDAjQXN0YXRpbmUgKEF0KSMxMi4xNC4xOS4wMC4wMAotdW5zcHNjNyMxMi4xNC4xOS4xNS4wMCNCcm9taW5lIEJyIzEyLjE0LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE0LjE5LjE2LjAwI0lvZGluZSAoSSkjMTIuMTQuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjAuMDAuMDAjTm9ibGUgZ2FzZXMjMTIuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjAuMDEuMDAjWGVub24gZ2FzICAoWGUpIzEyLjE0LjIwLjAwLjAwCi11bnNwc2M3IzEyLjE0LjIwLjAyLjAwI1JhZG9uIGdhcyAoUm4pIzEyLjE0LjIwLjAwLjAwCi11bnNwc2M3IzEyLjE0LjIwLjAzLjAwI0tyeXB0b24gZ2FzIChLcikjMTIuMTQuMjAuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjAuMDQuMDAjQXJnb24gZ2FzIChBcikjMTIuMTQuMjAuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjAuMDUuMDAjSGVsaXVtIGdhcyAoSGUpIzEyLjE0LjIwLjAwLjAwCi11bnNwc2M3IzEyLjE0LjIwLjA2LjAwI05lb24gZ2FzIChOZSkjMTIuMTQuMjAuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjEuMDAuMDAjSW5kdXN0cmlhbCB1c2UgZ2FzZXMjMTIuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjEuMDEuMDAjSHlkcm9nZW4gY29tcG91bmQgZ2FzZXMjMTIuMTQuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjEuMDIuMDAjQ2hsb3JpbmF0ZWQgbWl4ZWQgZ2FzZXMjMTIuMTQuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjEuMDMuMDAjQW1tb25pYSMxMi4xNC4yMS4wMC4wMAotdW5zcHNjNyMxMi4xNC4yMS4wNC4wMCNDYXJib24gZGlveGlkZSBnYXMgKENPMikjMTIuMTQuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjEuMDUuMDAjSW5kdXN0cmlhbCBhaXIjMTIuMTQuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMTQuMjEuMDYuMDAjSW5lcnQgZ2FzIG1peHR1cmVzIzEyLjE0LjIxLjAwLjAwCi11bnNwc2M3IzEyLjE1LjAwLjAwLjAwI0FjaWRzIGFuZCB0aGVpciBzYWx0cyBhbmQgZXN0ZXJzIzEyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEyLjE1LjE1LjAwLjAwI0NhcmJveHlsaWMgYWNpZHMgYW5kIHRoZWlyIHNhbHRzIGFuZCBlc3RlcnMjMTIuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTUuMDEuMDAjQWNldGljIGFjaWQgb3IgaXRzIHNhbHRzIzEyLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE1LjAyLjAwI0FjeWNsaWMgYWNpZHMjMTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTUuMDMuMDAjQWxkZWh5ZGljIGFjaWRzIzEyLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE1LjA0LjAwI0J1dHlyaWMgYWNpZHMjMTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTUuMDUuMDAjQ2FyYm9jeWxpYyBhY2lkcyMxMi4xNS4xNS4wMC4wMAotdW5zcHNjNyMxMi4xNS4xNS4wNi4wMCNIeWRyb3h5IGFjaWRzIzEyLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE1LjA3LjAwI0tldG8gYWNpZHMjMTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTUuMDguMDAjUHJvcGlvbmljIGFjaWRzIzEyLjE1LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE1LjA5LjAwI0FjcnlsaWMgYWNpZCBlc3RlcnMjMTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTUuMTAuMDAjRXN0ZXJzIG9mIG1ldGhhY3J5bGljIGFjaWQjMTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTYuMDAuMDAjSGV0ZXJvY3ljbGljIGFjaWRzIGFuZCB0aGVpciBzYWx0cyBhbmQgZXN0ZXJzIzEyLjE1LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE1LjE2LjAxLjAwI0luZG9sZWFjZXRpYyBhY2lkcyMxMi4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNS4xNi4wMi4wMCNJc29uaWNvdGluaWMgYWNpZHMjMTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTYuMDMuMDAjSXNvbmlwZWNvdGljIGFjaWRzIzEyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE2LjA0LjAwI05pY290aW5pYyBhY2lkcyMxMi4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNS4xNi4wNS4wMCNOaXBlY290aWMgYWNpZHMjMTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTYuMDYuMDAjT3JvdGljIGFjaWRzIzEyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE2LjA3LjAwI1BpY29saW5pYyBhY2lkcyMxMi4xNS4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNS4xNi4wOC4wMCNQaXBlY29saWMgYWNpZHMjMTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTcuMDAuMDAjRmF0dHkgYWNpZHMgYW5kIHRoZWlyIHNhbHRzIGFuZCBlc3RlcnMjMTIuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTcuMDEuMDAjRGVjYW5vaWMgYWNpZHMjMTIuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTcuMDIuMDAjVW5zYXR1cmF0ZWQgZmF0dHkgYWNpZHMjMTIuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTcuMDMuMDAjVm9sYXRpbGUgZmF0dHkgYWNpZHMjMTIuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTcuMDQuMDAjSGVwdGFub2ljIGFjaWRzIzEyLjE1LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE3LjA1LjAwI0xhdXJpYyBhY2lkcyMxMi4xNS4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNS4xNy4wNi4wMCNNeWNvbGljIGFjaWRzIzEyLjE1LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE3LjA3LjAwI015cmlzdGljIGFjaWRzIzEyLjE1LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE3LjA4LjAwI1BhbG1pdGljIGFjaWRzIzEyLjE1LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE3LjA5LjAwI1N0ZWFyaWMgYWNpZHMjMTIuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTguMDAuMDAjTm9uIGNhcmJveHlsaWMgYWNpZHMgYW5kIHRoZWlyIHNhbHRzIzEyLjE1LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE1LjE4LjAxLjAwI0NhcmJvbmljIGFjaWRzIzEyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE4LjAyLjAwI05pdHJpYyBhY2lkcyMxMi4xNS4xOC4wMC4wMAotdW5zcHNjNyMxMi4xNS4xOC4wMy4wMCNQaG9zcGhvcm91cyBhY2lkcyMxMi4xNS4xOC4wMC4wMAotdW5zcHNjNyMxMi4xNS4xOC4wNC4wMCNTdWxmdXIgYWNpZHMjMTIuMTUuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTguMDUuMDAjQ2hsb3JpZGVzIzEyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE4LjA2LjAwI0h5ZHJvY2hsb3JpZGVzIzEyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE4LjA3LjAwI05pdHJhdGVzIG9yIG5pdHJpdGVzIzEyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE4LjA4LjAwI1NpbGljYXRlcyMxMi4xNS4xOC4wMC4wMAotdW5zcHNjNyMxMi4xNS4xOC4wOS4wMCNQaG9zcGhhdGVzIG9yIHBob3NwaGlkZXMjMTIuMTUuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTguMTAuMDAjQmljYXJib25hdGVzIG9yIGNhcmJpZGVzIG9yIGNhcmJvbmF0ZXMjMTIuMTUuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTguMTEuMDAjRmx1b3JpZGVzIzEyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE4LjEyLjAwI0Jyb21pZGVzIG9yIGJyb21hdGVzIzEyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE4LjEzLjAwI0lvZGlkZXMgb3IgaW9kYXRlcyMxMi4xNS4xOC4wMC4wMAotdW5zcHNjNyMxMi4xNS4xOS4wMC4wMCNJbm9yZ2FuaWMgc3VsZnVyIGNvbXBvdW5kcyMxMi4xNS4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNS4xOS4wMS4wMCNIeWRyb2dlbiBzdWxmaWRlIzEyLjE1LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE1LjE5LjAyLjAwI1N1bGZ1cmljIEFjaWQjMTIuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTUuMTkuMDMuMDAjU29kaXVtIHN1bGZhdGUjMTIuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMDAuMDAuMDAjQWRkaXRpdmVzIzEyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjE1LjAwLjAwI0luZGljYXRvcnMgYW5kIFJlYWdlbnRzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjE1LjAxLjAwI0FmZmluaXR5IGxhYmVscyMxMi4xNi4xNS4wMC4wMAotdW5zcHNjNyMxMi4xNi4xNS4wMi4wMCNDcm9zcyBsaW5raW5nIGFnZW50cyMxMi4xNi4xNS4wMC4wMAotdW5zcHNjNyMxMi4xNi4xNS4wMy4wMCNSZWFnZW50IGtpdHMjMTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMTUuMDQuMDAjU3VsZmh5ZHJ5bCByZWFnZW50cyMxMi4xNi4xNS4wMC4wMAotdW5zcHNjNyMxMi4xNi4xNS4wNS4wMCNJbnRlcmNhbGF0aW5nIGFnZW50cyMxMi4xNi4xNS4wMC4wMAotdW5zcHNjNyMxMi4xNi4xNS4wNi4wMCNEaXZlcnRpbmcgYWdlbnRzIzEyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE2LjAwLjAwI0NhdGFseXN0cyMxMi4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4xNi4wMS4wMCNBY2lkIGNhdGFseXN0cyMxMi4xNi4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNi4xNi4wMi4wMCNDb21idXN0aW9uIGNhdGFseXN0cyMxMi4xNi4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNi4xNi4wMy4wMCNDdXN0b20gY2F0YWx5c3RzIzEyLjE2LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE2LjA0LjAwI0NyYWNraW5nIGNhdGFseXN0cyMxMi4xNi4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNi4xNy4wMC4wMCNCdWZmZXJzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjE3LjAxLjAwI0FtcGhvbHl0ZSBtaXh0dXJlcyMxMi4xNi4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNi4xNy4wMi4wMCNCaWNhcmJvbmF0ZSBidWZmZXJzIzEyLjE2LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE3LjAzLjAwI090aGVyIGJ1ZmZlcnMjMTIuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMTcuMDQuMDAjQWNpZCBidWZmZXJzIzEyLjE2LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE3LjA1LjAwI0Jhc2ljIGJ1ZmZlcnMjMTIuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMTcuMDYuMDAjTmV1dHJhbCBidWZmZXJzIzEyLjE2LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE4LjAwLjAwI0NvbGxvaWRzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjE4LjAxLjAwI0dlbHMjMTIuMTYuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTYuMTguMDIuMDAjU3VzcGVuc2lvbnMjMTIuMTYuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTYuMTguMDMuMDAjQWVyb3NvbHMjMTIuMTYuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTYuMTguMDQuMDAjRW11bHNpb25zIzEyLjE2LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE4LjA1LjAwI05hdHVyYWwgZ2VsbGluZyBhZ2VudHMjMTIuMTYuMTguMDAuMDAKLXVuc3BzYzcjMTIuMTYuMTguMDYuMDAjU3ludGhldGljIGdlbGxpbmcgYWdlbnRzIzEyLjE2LjE4LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE4LjA3LjAwI0dlbCBzdGFiaWxpemVycyMxMi4xNi4xOC4wMC4wMAotdW5zcHNjNyMxMi4xNi4xOC4wOC4wMCNTdXNwZW5kaW5nIGFnZW50cyMxMi4xNi4xOC4wMC4wMAotdW5zcHNjNyMxMi4xNi4xOS4wMC4wMCNTdXJmYWN0YW50cyMxMi4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4xOS4wMS4wMCNBbnRpIGZvYW1pbmcgYWdlbnRzIzEyLjE2LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE5LjAyLjAwI0RldGVyZ2VudCBzdXJmYWN0YW50cyMxMi4xNi4xOS4wMC4wMAotdW5zcHNjNyMxMi4xNi4xOS4wMy4wMCNGb2FtaW5nIGFnZW50cyMxMi4xNi4xOS4wMC4wMAotdW5zcHNjNyMxMi4xNi4xOS4wNC4wMCNEaXNwZXJzaW5nIGFnZW50cyMxMi4xNi4xOS4wMC4wMAotdW5zcHNjNyMxMi4xNi4xOS4wNS4wMCNGbHVzaGVzIzEyLjE2LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE5LjA2LjAwI1dldHRpbmcgYWdlbnRzIzEyLjE2LjE5LjAwLjAwCi11bnNwc2M3IzEyLjE2LjE5LjA3LjAwI1dhdGVyIGZsb29kIGFkZGl0aXZlcyMxMi4xNi4xOS4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMC4wMC4wMCNQbGFzdGljaXplcnMjMTIuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjAuMDEuMDAjUGh0aGFsYXRlcyMxMi4xNi4yMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMC4wMi4wMCNQb2x5bWVyaWNzIzEyLjE2LjIwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIwLjAzLjAwI0FncmljdWx0dXJhbCBvaWxzIzEyLjE2LjIwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIwLjA0LjAwI1N1bGZvbmFtaWRlcyMxMi4xNi4yMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMC4wNS4wMCNHbHV0YXJhdGVzIzEyLjE2LjIwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIxLjAwLjAwI0ZsYW1lIHJldGFyZGFudHMjMTIuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjEuMDEuMDAjQnJvbWluYXRlZCMxMi4xNi4yMS4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMi4wMC4wMCNBbnRpIG94aWRhbnRzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIyLjAxLjAwI0FzY29yYmljIGFjaWQjMTIuMTYuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjIuMDIuMDAjQmV0YSBjYXJvdGVuZSMxMi4xNi4yMi4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMi4wMy4wMCNCdXR5bGF0ZWQgaHlkcm94eWFuaXNvbGUjMTIuMTYuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjIuMDQuMDAjQnV0eWxhdGVkIGh5ZHJveHl0b2x1ZW5lIzEyLjE2LjIyLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIyLjA1LjAwI0NhbGNpdW0gY2l0cmF0ZSMxMi4xNi4yMi4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMi4wNi4wMCNDYW50aGF4YW50aGluIzEyLjE2LjIyLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIyLjA3LjAwI01lbGF0b25pbiMxMi4xNi4yMi4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMi4wOC4wMCNOb3JkaWh5ZHJvZ3VhaWFyZXRpYyBhY2lkIzEyLjE2LjIyLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIyLjA5LjAwI1Byb3B5bCBnYWxsYXRlIzEyLjE2LjIyLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIyLjEwLjAwI1NpbHltYXJpbiMxMi4xNi4yMi4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMi4xMS4wMCNTdWxmdXIgZGlveGlkZSMxMi4xNi4yMi4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMy4wMC4wMCNDdXJpbmcgYWdlbnRzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIzLjAxLjAwI1dhdGVyYm9ybmUgY3VyaW5nIGFnZW50cyMxMi4xNi4yMy4wMC4wMAotdW5zcHNjNyMxMi4xNi4yMy4wMi4wMCNDZW1lbnQgYWNjZWxlcmF0b3JzIzEyLjE2LjIzLjAwLjAwCi11bnNwc2M3IzEyLjE2LjIzLjAzLjAwI0NlbWVudCByZXRhcmRlcnMjMTIuMTYuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjQuMDAuMDAjUG9seW1lciBicmVha2VycyMxMi4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4yNC4wMS4wMCNBY2lkaWMgcG9seW1lciBicmVha2VycyMxMi4xNi4yNC4wMC4wMAotdW5zcHNjNyMxMi4xNi4yNC4wMi4wMCNPcmdhbmljIHBvbHltZXIgYnJlYWtlcnMjMTIuMTYuMjQuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjUuMDAuMDAjRW11bHNpb24gYnJlYWtlcnMjMTIuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjUuMDEuMDAjV2F0ZXIgaW4gb2lsIGVtdWxzaW9uIGJyZWFrZXJzIzEyLjE2LjI1LjAwLjAwCi11bnNwc2M3IzEyLjE2LjI1LjAyLjAwI09pbCBpbiB3YXRlciBlbXVsc2lvbiBicmVha2VycyMxMi4xNi4yNS4wMC4wMAotdW5zcHNjNyMxMi4xNi4yNS4wMy4wMCNGbG90YXRpb24gYWlkcyMxMi4xNi4yNS4wMC4wMAotdW5zcHNjNyMxMi4xNi4yNi4wMC4wMCNDbGF5IHN0YWJpbGl6ZXJzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjI2LjAxLjAwI0lub3JnYW5pYyBjbGF5IHN0YWJpbGl6ZXJzIzEyLjE2LjI2LjAwLjAwCi11bnNwc2M3IzEyLjE2LjI2LjAyLjAwI09yZ2FuaWMgY2xheSBzdGFiaWxpemVycyMxMi4xNi4yNi4wMC4wMAotdW5zcHNjNyMxMi4xNi4yNy4wMC4wMCNGbHVpZCBsb3NzIGFkZGl0aXZlcyMxMi4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4yNy4wMS4wMCNOYXR1cmFsIHBvbHltZXIgZmx1aWQgbG9zcyBhZGRpdGl2ZXMjMTIuMTYuMjcuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjcuMDIuMDAjTW9kaWZpZWQgcG9seW1lciBmbHVpZCBsb3NzIGFkZGl0aXZlcyMxMi4xNi4yNy4wMC4wMAotdW5zcHNjNyMxMi4xNi4yOC4wMC4wMCNGcmljdGlvbiByZWR1Y2VycyMxMi4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4yOC4wMS4wMCNBbmlvbmljIGZyaWN0aW9uIHJlZHVjZXJzIzEyLjE2LjI4LjAwLjAwCi11bnNwc2M3IzEyLjE2LjI4LjAyLjAwI0NhdGlvbmljIGZyaWN0aW9uIHJlZHVjZXJzIzEyLjE2LjI4LjAwLjAwCi11bnNwc2M3IzEyLjE2LjI5LjAwLjAwI1BhcmFmZmluIGFzcGhhbHRlbmUgY29udHJvbCBhZ2VudHMjMTIuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjkuMDEuMDAjU29sdmVudCB0eXBlIHBhcmFmZmluIGFzcGhhbHRlbmUgY29udHJvbCBhZ2VudHMjMTIuMTYuMjkuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMjkuMDIuMDAjQ3J5c3RhbCBtb2RpZmllZCBwYXJhZmZpbiBhc3BoYWx0ZW5lIGNvbnRyb2wgYWdlbnRzIzEyLjE2LjI5LjAwLjAwCi11bnNwc2M3IzEyLjE2LjI5LjAzLjAwI0Rpc3BlcnNhbnQgdHlwZSBwYXJhZmZpbiBhc3BoYWx0ZW5lIGNvbnRyb2wgYWdlbnRzIzEyLjE2LjI5LjAwLjAwCi11bnNwc2M3IzEyLjE2LjMwLjAwLjAwI011ZCByZW1vdmFsIG1peHR1cmVzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjMwLjAxLjAwI011ZCBjbGVhbm91dCBhZ2VudHMjMTIuMTYuMzAuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMzEuMDAuMDAjQW50aSBzbHVkZ2VycyMxMi4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4zMS4wMS4wMCNBbnRpIHNsdWRnZSBhZGRpdGl2ZXMjMTIuMTYuMzEuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMzIuMDAuMDAjQW50aSBnYXMgbWlncmF0aW9uIGFnZW50cyMxMi4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4zMi4wMS4wMCNBbnRpIGdhcyBtaWdyYXRpb24gYWRkaXRpdmVzIzEyLjE2LjMyLjAwLjAwCi11bnNwc2M3IzEyLjE2LjMzLjAwLjAwI0V4cGFuZGluZyBhZ2VudHMjMTIuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMzMuMDEuMDAjQ2VtZW50IGV4cGFuZGluZyBhZ2VudHMjMTIuMTYuMzMuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMzQuMDAuMDAjRXh0ZW5kZXJzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjM0LjAxLjAwI0NlbWVudCBleHRlbmRlcnMjMTIuMTYuMzQuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMzUuMDAuMDAjT2lsIHdlbGwgc2VhbGFudHMjMTIuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMzUuMDEuMDAjQ2VtZW50aW5nIHNlYWxhbnRzIzEyLjE2LjM1LjAwLjAwCi11bnNwc2M3IzEyLjE2LjM2LjAwLjAwI0NvcnJvc2lvbiBpbmhpYml0b3JzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjM2LjAxLjAwI09pbCBwcm9kdWN0aW9uIGNvcnJvc2lvbiBpbmhpYml0b3JzIzEyLjE2LjM2LjAwLjAwCi11bnNwc2M3IzEyLjE2LjM2LjAyLjAwI0dhcyBwcm9kdWN0aW9uIGNvcnJvc2lvbiBpbmhpYml0b3JzIzEyLjE2LjM2LjAwLjAwCi11bnNwc2M3IzEyLjE2LjM3LjAwLjAwI0dhcyBoeWRyYXRlIGNvbnRyb2xsZXJzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjM3LjAxLjAwI0tpbmV0aWMgaHlkcmF0ZSBjb250cm9sbGVycyMxMi4xNi4zNy4wMC4wMAotdW5zcHNjNyMxMi4xNi4zOC4wMC4wMCNTY2F2ZW5nZXJzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjM4LjAxLjAwI0h5ZHJvZ2VuIHN1bGZpZGUgc2NhdmVuZ2VycyMxMi4xNi4zOC4wMC4wMAotdW5zcHNjNyMxMi4xNi4zOC4wMi4wMCNPeHlnZW4gc2NhdmVuZ2VycyMxMi4xNi4zOC4wMC4wMAotdW5zcHNjNyMxMi4xNi4zOS4wMC4wMCNTY2FsZSBjb250cm9sbGVycyMxMi4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNi4zOS4wMS4wMCNTY2FsZSBpbmhpYml0b3IjMTIuMTYuMzkuMDAuMDAKLXVuc3BzYzcjMTIuMTYuMzkuMDIuMDAjU2NhbGUgcmVtb3ZlcnMgYW5kIGNvbnZlcnRlcnMjMTIuMTYuMzkuMDAuMDAKLXVuc3BzYzcjMTIuMTYuNDAuMDAuMDAjQmFjdGVyaWNpZGVzIzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjQwLjAxLjAwI1JlZ2lzdGVyZWQgbWljcm9iaW9jaWRlcyMxMi4xNi40MC4wMC4wMAotdW5zcHNjNyMxMi4xNi40MS4wMC4wMCNJbiBzaXR1IzEyLjE2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE2LjQxLjAxLjAwI0luIHNpdHUgYWRkaXRpdmVzIzEyLjE2LjQxLjAwLjAwCi11bnNwc2M3IzEyLjE2LjQxLjAyLjAwI0FjaWQgYWRkaXRpdmVzIzEyLjE2LjQxLjAwLjAwCi11bnNwc2M3IzEyLjE2LjQyLjAwLjAwI1JldGFyZGVycyMxMi4xNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNi40Mi4wMS4wMCNBY2lkIGNvcnJvc2lvbiBpbmhpYml0b3JzIzEyLjE2LjQyLjAwLjAwCi11bnNwc2M3IzEyLjE2LjQzLjAwLjAwI0lyb24gY29udHJvbGxlcnMjMTIuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTYuNDMuMDEuMDAjSXJvbiBjb250cm9sIGFkZGl0aXZlcyMxMi4xNi40My4wMC4wMAotdW5zcHNjNyMxMi4xNi40NC4wMC4wMCNOb24gZW11bHNpZmllcnMjMTIuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTYuNDQuMDEuMDAjTm9uIGVtdWxzaWZ5aW5nIGFkZGl0aXZlcyMxMi4xNi40NC4wMC4wMAotdW5zcHNjNyMxMi4xNy4wMC4wMC4wMCNDb2xvcmFudHMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTcuMTUuMDAuMDAjRHllcyMxMi4xNy4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNy4xNS4wMS4wMCNGbHVvcmVzY2VudCBkeWVzIzEyLjE3LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE3LjE1LjAyLjAwI1BodGhhbGVpbiBkeWVzIzEyLjE3LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE3LjE1LjAzLjAwI1Jvc2FuaWxpbmUgZHllcyMxMi4xNy4xNS4wMC4wMAotdW5zcHNjNyMxMi4xNy4xNS4wNC4wMCNGb29kIG9yIGRydWcgb3IgY29zbWV0aWMgc2FmZSAoRkRDKSBkeWVzIzEyLjE3LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE3LjE1LjA1LjAwI0xha2VkIzEyLjE3LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE3LjE1LjA2LjAwI05hdHVyYWwgZHllcyMxMi4xNy4xNS4wMC4wMAotdW5zcHNjNyMxMi4xNy4xNi4wMC4wMCNQaWdtZW50cyMxMi4xNy4wMC4wMC4wMAotdW5zcHNjNyMxMi4xNy4xNi4wMS4wMCNOYXR1cmFsIHBpZ21lbnRzIzEyLjE3LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE3LjE2LjAyLjAwI0lub3JnYW5pYyBtZXRhbCBveGlkZXMjMTIuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTcuMTYuMDMuMDAjQ2FyYm9uIGJsYWNrIzEyLjE3LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE3LjE2LjA0LjAwI1RpdGFuaXVtIGRpb3hpZGUjMTIuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTcuMTYuMDUuMDAjT3JnYW5pYyBwaWdtZW50cyMxMi4xNy4xNi4wMC4wMAotdW5zcHNjNyMxMi4xNy4xNy4wMC4wMCNDb2xvciBjb21wb3VuZHMgYW5kIGRpc3BlcnNpb25zIzEyLjE3LjAwLjAwLjAwCi11bnNwc2M3IzEyLjE3LjE3LjAxLjAwI1BvbHltZXIgbWFzdGVyYmF0Y2hlcyMxMi4xNy4xNy4wMC4wMAotdW5zcHNjNyMxMi4xNy4xNy4wMi4wMCNQaWdtZW50IGRpc3BlcnNpb25zIzEyLjE3LjE3LjAwLjAwCi11bnNwc2M3IzEyLjE3LjE3LjAzLjAwI0lua3MjMTIuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMTguMDAuMDAuMDAjV2F4ZXMgYW5kIG9pbHMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTguMTUuMDAuMDAjV2F4ZXMjMTIuMTguMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTguMTUuMDEuMDAjU3ludGhldGljIHdheGVzIzEyLjE4LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE4LjE1LjAyLjAwI05hdHVyYWwgd2F4ZXMjMTIuMTguMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTguMTUuMDMuMDAjUGFyYWZmaW5zIzEyLjE4LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE4LjE1LjA0LjAwI1BldHJvbGF0dW1zIzEyLjE4LjE1LjAwLjAwCi11bnNwc2M3IzEyLjE4LjE2LjAwLjAwI09pbHMjMTIuMTguMDAuMDAuMDAKLXVuc3BzYzcjMTIuMTguMTYuMDEuMDAjU3ludGhldGljIG9pbHMjMTIuMTguMTYuMDAuMDAKLXVuc3BzYzcjMTIuMTguMTYuMDIuMDAjTmF0dXJhbCBvaWxzIzEyLjE4LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE5LjAwLjAwLjAwI1NvbHZlbnRzIzEyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEyLjE5LjE1LjAwLjAwI0h5ZHJvY2FyYm9uYXRlZCBzb2x2ZW50cyMxMi4xOS4wMC4wMC4wMAotdW5zcHNjNyMxMi4xOS4xNS4wMS4wMCNBcm9tYXRpYyBzb2x2ZW50cyMxMi4xOS4xNS4wMC4wMAotdW5zcHNjNyMxMi4xOS4xNS4wMi4wMCNBbGlwaGF0aWMgc29sdmVudHMjMTIuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMTkuMTYuMDAuMDAjT3h5Z2VuYXRlZCBzb2x2ZW50cyMxMi4xOS4wMC4wMC4wMAotdW5zcHNjNyMxMi4xOS4xNi4wMS4wMCNBbGNvaG9sIHNvbHZlbnRzIzEyLjE5LjE2LjAwLjAwCi11bnNwc2M3IzEyLjE5LjE2LjAyLjAwI0FjdGl2ZSBzb2x2ZW50cyMxMi4xOS4xNi4wMC4wMAotdW5zcHNjNyMxMi4yMC4wMC4wMC4wMCNDaGVtaWNhbCBpbnRlcm1lZGlhdGVzIGFuZCBmaXhhdGl2ZXMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjAuMTUuMDAuMDAjSW50ZXJtZWRpYXRlcyMxMi4yMC4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMC4xNS4wMS4wMCNFdGhlciBpbnRlcm1lZGlhdGVzIzEyLjIwLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIwLjE1LjAyLjAwI0tldG9uZSBpbnRlcm1lZGlhdGVzIzEyLjIwLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIwLjE1LjAzLjAwI0FsZGVoeWRlIGludGVybWVkaWF0ZXMjMTIuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjAuMTUuMDQuMDAjUGVyb3hpZGUgaW50ZXJtZWRpYXRlcyMxMi4yMC4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMC4xNS4wNS4wMCNBY3J5bGF0ZSBvciBtZXRoYWNyeWxhdGUgaW50ZXJtZWRpYXRlcyMxMi4yMC4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMC4xNi4wMC4wMCNGaXhhdGl2ZXMjMTIuMjAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjAuMTYuMDEuMDAjRm9ybWFsZGVoeWRlcyMxMi4yMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4yMC4xNi4wMi4wMCNHbHV0cmFscyMxMi4yMC4xNi4wMC4wMAotdW5zcHNjNyMxMi4yMC4xNi4wMy4wMCNUYW5uaW5zIzEyLjIwLjE2LjAwLjAwCi11bnNwc2M3IzEyLjIwLjE3LjAwLjAwI0FtaW5lcyBhbmQgYW1pZGVzIGFuZCBpbWluZXMgYW5kIGltaWRlcyMxMi4yMC4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMC4xNy4wMS4wMCNQcmltYXJ5IzEyLjIwLjE3LjAwLjAwCi11bnNwc2M3IzEyLjIwLjE3LjAyLjAwI1NlY29uZGFyeSMxMi4yMC4xNy4wMC4wMAotdW5zcHNjNyMxMi4yMC4xNy4wMy4wMCNUZXJ0aWFyeSMxMi4yMC4xNy4wMC4wMAotdW5zcHNjNyMxMi4yMC4xNy4wNC4wMCNTcGVjaWFsdHkjMTIuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMjAuMTcuMDUuMDAjU3VscGhvbmF0ZWQjMTIuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMDAuMDAuMDAjQ2FyYm9uIGJhc2VkIGNoZW1pY2FscyBhbmQgY29tcG91bmRlZCBjaGVtaWNhbHMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMTUuMDAuMDAjQWxjb2hvbHMjMTIuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMTUuMDEuMDAjQW1pbm8gYWxjb2hvbHMjMTIuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMTUuMDIuMDAjQmVuenlsIGFsY29ob2xzIzEyLjIxLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE1LjAzLjAwI0NobG9yb2h5ZHJpbnMjMTIuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMTUuMDQuMDAjRXRoYW5vbCMxMi4yMS4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMS4xNS4wNS4wMCNGYXR0eSBhbGNvaG9scyMxMi4yMS4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMS4xNS4wNi4wMCNHbHljb2xzIzEyLjIxLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE1LjA3LjAwI0hleGFub2xzIzEyLjIxLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE1LjA4LjAwI01ldGhhbm9sIzEyLjIxLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE1LjA5LjAwI1BvbHkgdmlueWwgb3IgUFYgIGFsY29ob2wjMTIuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMTUuMTAuMDAjUHJvcGFub2xzIzEyLjIxLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE1LjExLjAwI1N1Z2FyIGFsY29ob2xzIzEyLjIxLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE1LjEyLjAwI0J1dHlsIGFsY29ob2xzIzEyLjIxLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE1LjEzLjAwI0lzb3Byb3B5bCBhbGNvaG9sIzEyLjIxLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE2LjAwLjAwI0h5ZHJvY2FyYm9ucyMxMi4yMS4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMS4xNi4wMS4wMCNBY3ljbGljIG9yIGN5Y2xpYyBvciBwb2x5Y3ljbGljIGh5ZHJvY2FyYm9ucyMxMi4yMS4xNi4wMC4wMAotdW5zcHNjNyMxMi4yMS4xNi4wMi4wMCNIYWxvZ2VuYXRlZCBoeWRyb2NhcmJvbnMjMTIuMjEuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMTYuMDMuMDAjU3VscGhvbmF0ZWQgaHlkcm9jYXJib25zIzEyLjIxLjE2LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE2LjA0LjAwI05pdHJvc2F0ZWQgaHlkcm9jYXJib25zIzEyLjIxLjE2LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE3LjAwLjAwI0FsZGVoeWRlcyMxMi4yMS4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMS4xNy4wMS4wMCNBY2V0YWxhbGRlaHllcyMxMi4yMS4xNy4wMC4wMAotdW5zcHNjNyMxMi4yMS4xNy4wMi4wMCNHbHlveGFscyMxMi4yMS4xNy4wMC4wMAotdW5zcHNjNyMxMi4yMS4xOC4wMC4wMCNFdGhlcnMjMTIuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMTguMDEuMDAjQWNldGFsIGV0aGVycyMxMi4yMS4xOC4wMC4wMAotdW5zcHNjNyMxMi4yMS4xOC4wMi4wMCNFdGh5bCBldGhlcnMjMTIuMjEuMTguMDAuMDAKLXVuc3BzYzcjMTIuMjEuMTguMDMuMDAjTWV0aHlsIGV0aGVycyMxMi4yMS4xOC4wMC4wMAotdW5zcHNjNyMxMi4yMS4xOC4wNC4wMCNQaGVueWwgZXRoZXJzIzEyLjIxLjE4LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE4LjA1LjAwI01ldGh5bCB0ZXRyYSBidXR5bCBldGhlciMxMi4yMS4xOC4wMC4wMAotdW5zcHNjNyMxMi4yMS4xOS4wMC4wMCNLZXRvbmVzIzEyLjIxLjAwLjAwLjAwCi11bnNwc2M3IzEyLjIxLjE5LjAxLjAwI0FjZXRvbmVzIzEyLjIxLjE5LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE5LjAyLjAwI0NhbXBob3JzIzEyLjIxLjE5LjAwLjAwCi11bnNwc2M3IzEyLjIxLjE5LjAzLjAwI0tldG9uZSBib2RpZXMjMTIuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMTkuMDQuMDAjTWFubmljaCBiYXNlcyMxMi4yMS4xOS4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMC4wMC4wMCNQaGVub2xzIzEyLjIxLjAwLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIwLjAxLjAwI0Jyb21waGVub2wgYmx1ZSMxMi4yMS4yMC4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMC4wMi4wMCNDcmVzb2xzIzEyLjIxLjIwLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIxLjAwLjAwI0NhcmJvaHlkcmF0ZXMjMTIuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjEuMDEuMDAjU2ltcGxlIHN1Z2FycyBvciBpdHMgZGVyaXZhdGl2ZXMjMTIuMjEuMjEuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjEuMDIuMDAjR3VtIHJlc2lucyMxMi4yMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMS4wMy4wMCNTdGFyY2hlcyMxMi4yMS4yMS4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4wMC4wMCNDb21wb3VuZHMjMTIuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjIuMDEuMDAjQ2hlbWljYWwgYWxsb3lzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjAyLjAwI0N5YW5pZGVzIG9yIGN5YW5hdGVzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjAzLjAwI0FsdW1pbnVtIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4wNC4wMCNCYXJpdW0gY29tcG91bmRzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjA1LjAwI0Jvcm9uIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4wNi4wMCNCcm9taW5lIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4wNy4wMCNDYWxjaXVtIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4wOC4wMCNDYXJib24gY29tcG91bmRzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjA5LjAwI0NobG9yaW5lIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4xMC4wMCNGbHVvcmluZSBjb21wb3VuZHMjMTIuMjEuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjIuMTEuMDAjR29sZCBjb21wb3VuZHMjMTIuMjEuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjIuMTIuMDAjSW9kaW5lIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4xMy4wMCNJcm9uIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4xNC4wMCNNYWduZXNpdW0gY29tcG91bmRzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjE1LjAwI05pdHJvZ2VuIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4xNi4wMCNOaXRyaWxlIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4xNy4wMCNPeHlnZW4gY29tcG91bmRzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjE4LjAwI1Bob3NwaG9yb3VzIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4xOS4wMCNQb3Rhc3NpdW0gY29tcG91bmRzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjIwLjAwI1NlbGVuaXVtIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4yMS4wMCNTaWxpY29uIG9yIHNpbGljb25lIG9yIHNpbGljYW5lIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4yMi4wMCNTb2RpdW0gY29tcG91bmRzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjIzLjAwI1N1bGZ1ciBjb21wb3VuZHMjMTIuMjEuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjIuMjQuMDAjVGluIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4yNS4wMCNaaW5jIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMi4yNi4wMCNIZXRlcm9jeWNsaWMgY29tcG91bmRzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjI3LjAwI0NvYmFsdCBjb21wb3VuZHMjMTIuMjEuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjIuMjguMDAjQW50aW1vbnkgY29tcG91bmRzIzEyLjIxLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIyLjI5LjAwI1RpdGFuaXVtIGNvbXBvdW5kcyMxMi4yMS4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMy4wMC4wMCNPeGlkZXMgaW5jbHVkZXMgYWxsIG94aWRlZCBzdWJzdGFuY2VzIzEyLjIxLjAwLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIzLjAxLjAwI0FsdW1pbnVtIG94aWRlcyMxMi4yMS4yMy4wMC4wMAotdW5zcHNjNyMxMi4yMS4yMy4wMi4wMCNDYXJib24gb3hpZGVzIzEyLjIxLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIzLjAzLjAwI0h5cG9jaGxvcm91cyBhY2lkIzEyLjIxLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIzLjA0LjAwI01hZ25lc2l1bSBveGlkZXMjMTIuMjEuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjMuMDUuMDAjTml0cm9nZW4gb3hpZGVzIzEyLjIxLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIzLjA2LjAwI09zbWl1bSBveGlkZXMjMTIuMjEuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjMuMDcuMDAjUGVyb3hpZGVzIzEyLjIxLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIzLjA4LjAwI1NpbGljb24gb3hpZGVzIzEyLjIxLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIzLjA5LjAwI1N1bGZ1ciBveGlkZXMjMTIuMjEuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjMuMTAuMDAjVGhvcml1bSBveGlkZXMjMTIuMjEuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjMuMTEuMDAjV2F0ZXIgb3hpZGVzIzEyLjIxLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIzLjEyLjAwI1ppbmMgb3hpZGVzIzEyLjIxLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIzLjEzLjAwI0h5ZHJveGlkZXMjMTIuMjEuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjMuMTQuMDAjTWV0YWwgb3hpZGVzIzEyLjIxLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIxLjIzLjE1LjAwI05vbiBtZXRhbCBveGlkZXMjMTIuMjEuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjMuMTYuMDAjRXRoeWxlbmUgb3hpZGUjMTIuMjEuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjQuMDAuMDAjSXNvdG9wZXMjMTIuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjEuMjQuMDEuMDAjRGV1dGVyYXRlZCBzb2x2ZW50cyMxMi4yMS4yNC4wMC4wMAotdW5zcHNjNyMxMi4yMS4yNC4wMi4wMCNIZWF2eSB3YXRlciMxMi4yMS4yNC4wMC4wMAotdW5zcHNjNyMxMi4yMS4yNC4wMy4wMCNBbHBoYSBzb3VyY2VzIzEyLjIxLjI0LjAwLjAwCi11bnNwc2M3IzEyLjIxLjI0LjA0LjAwI0JldGEgc291cmNlcyMxMi4yMS4yNC4wMC4wMAotdW5zcHNjNyMxMi4yMS4yNC4wNS4wMCNDb2JhbHQgc291cmNlcyMxMi4yMS4yNC4wMC4wMAotdW5zcHNjNyMxMi4yMS4yNC4wNi4wMCNHYW1tYSBzb3VyY2VzIzEyLjIxLjI0LjAwLjAwCi11bnNwc2M3IzEyLjIxLjI0LjA3LjAwI1JhZGlvaXNvdG9wZSBzb3VyY2VzIzEyLjIxLjI0LjAwLjAwCi11bnNwc2M3IzEyLjIxLjI0LjA4LjAwI0NhbGlicmF0aW9uIHNvdXJjZXMjMTIuMjEuMjQuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMDAuMDAuMDAjQmlvIGNoZW1pY2FscyMxMi4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4wMC4wMCNQcm90ZWlucyMxMi4yMi4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4wMS4wMCNBbGJ1bWlucyMxMi4yMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4wMi4wMCNCYWN0ZXJpYWwgcHJvdGVpbnMjMTIuMjIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTUuMDMuMDAjQmxvb2QgcHJvdGVpbnMjMTIuMjIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTUuMDQuMDAjQm9uZSBtb3JwaG9nZW5ldGljIHByb3RlaW5zIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjA1LjAwI0NhcnJpZXIgcHJvdGVpbnMjMTIuMjIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTUuMDYuMDAjQ29udHJhY3RpbGUgcHJvdGVpbnMjMTIuMjIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTUuMDcuMDAjRGlldGFyeSBwcm90ZWlucyMxMi4yMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4wOC4wMCNEZW94eXJpYm9udWNsZWljIGFjaWQgKEROQSkgYmluZGluZyBwcm90ZWlucyMxMi4yMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4wOS4wMCNFZ2cgcHJvdGVpbnMjMTIuMjIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTUuMTAuMDAjR2xvYnVsaW5zIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjExLjAwI0dseWNvcHJvdGVpbnMjMTIuMjIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTUuMTIuMDAjSGVtZXByb3RlaW5zIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjEzLjAwI0ludGVyZmVyb25zIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjE0LjAwI0xlY3RpbnMjMTIuMjIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTUuMTUuMDAjTGlwb3Byb3RlaW5zIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjE2LjAwI01lbWJyYW5lIHByb3RlaW5zIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjE3LjAwI01ldGFsbG9wcm90ZWlucyMxMi4yMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4xOC4wMCNOZXJ2ZSB0aXNzdWUgcHJvdGVpbnMjMTIuMjIuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTUuMTkuMDAjTmVjdWxlb3Byb3RlaW5zIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjIwLjAwI1BlcHRvbmVzIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjIxLjAwI1BsYW50IHByb3RlaW5zIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjIyLjAwI1ByaW9ucyMxMi4yMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4yMy4wMCNDeXRvcGxhc21pYyBvciBudWNsZWFyIHJlY2VwdG9ycyMxMi4yMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4yNC4wMCNSZWNvbWJpbmFudCBwcm90ZWlucyMxMi4yMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4yNS4wMCNTZXJwaW5zIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE1LjI2LjAwI1RyYW5zY3JpcHRpb24gZmFjdG9ycyMxMi4yMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4yNy4wMCNWaXJhbCBwcm90ZWlucyMxMi4yMi4xNS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNS4yOC4wMCNTY2xlcm9wcm90ZWluIzEyLjIyLjE1LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE2LjAwLjAwI0FudGlib2RpZXMjMTIuMjIuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTYuMDEuMDAjVmlyYWwgYW50aWJvZGllcyMxMi4yMi4xNi4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNi4wMi4wMCNBbnRpdG94aW5zIzEyLjIyLjE2LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE2LjAzLjAwI0JhY3RlcmlhbCBhbnRpYm9kaWVzIzEyLjIyLjE2LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE2LjA0LjAwI0F1dG9hbnRpYm9kaWVzIzEyLjIyLjE2LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE2LjA1LjAwI0ltbXVuZSBzZXJhIzEyLjIyLjE2LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE2LjA2LjAwI0ltbXVub2dsb2J1bGlucyMxMi4yMi4xNi4wMC4wMAotdW5zcHNjNyMxMi4yMi4xNy4wMC4wMCNOdXRyaWVudHMjMTIuMjIuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTcuMDEuMDAjVml0YW1pbnMjMTIuMjIuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTguMDAuMDAjRW56eW1lcyMxMi4yMi4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMi4xOC4wMS4wMCNIeWRyb2xhc2VzIzEyLjIyLjE4LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE4LjAyLjAwI0lzb2VuenltZXMjMTIuMjIuMTguMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTguMDMuMDAjSXNvbWVyYXNlcyMxMi4yMi4xOC4wMC4wMAotdW5zcHNjNyMxMi4yMi4xOC4wNC4wMCNMaWdhc2VzIzEyLjIyLjE4LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE4LjA1LjAwI0x5YXNlcyMxMi4yMi4xOC4wMC4wMAotdW5zcHNjNyMxMi4yMi4xOC4wNi4wMCNNdWx0aWVuenltZSBjb21wbGV4ZXMjMTIuMjIuMTguMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTguMDcuMDAjT3hpZG9yZWR1Y3Rhc2VzIzEyLjIyLjE4LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE4LjA4LjAwI1Blcm1lYXNlcyMxMi4yMi4xOC4wMC4wMAotdW5zcHNjNyMxMi4yMi4xOC4wOS4wMCNUcmFuc2ZlcmVhc2VzIzEyLjIyLjE4LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE4LjEwLjAwI0NhdGFsYXNlIzEyLjIyLjE4LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE5LjAwLjAwI1Rpc3N1ZXMjMTIuMjIuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMTkuMDEuMDAjQ29ubmVjdGl2ZSB0aXNzdWVzIzEyLjIyLjE5LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE5LjAyLjAwI0VwaXRoZWxpdW1zIzEyLjIyLjE5LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE5LjAzLjAwI0V4b2NyaW5lIGdsYW5kcyMxMi4yMi4xOS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xOS4wNC4wMCNMeW1waG9pZCB0aXNzdWVzIzEyLjIyLjE5LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE5LjA1LjAwI01lbWJyYW5lcyMxMi4yMi4xOS4wMC4wMAotdW5zcHNjNyMxMi4yMi4xOS4wNi4wMCNNdXNjbGVzIzEyLjIyLjE5LjAwLjAwCi11bnNwc2M3IzEyLjIyLjE5LjA3LjAwI05lcnZlIHRpc3N1ZXMjMTIuMjIuMTkuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjAuMDAuMDAjQ3VsdHVyZXMgYW5kIGZsdWlkcyMxMi4yMi4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMC4wMS4wMCNBZ2FyIzEyLjIyLjIwLjAwLjAwCi11bnNwc2M3IzEyLjIyLjIwLjAyLjAwI0Jyb3RoIzEyLjIyLjIwLjAwLjAwCi11bnNwc2M3IzEyLjIyLjIwLjAzLjAwI1NlcnVtIGZyZWUgY3VsdHVyZSBtZWRpYSMxMi4yMi4yMC4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMC4wNC4wMCNDb25kaXRpb25lZCBjdWx0dXJlIG1lZGlhIzEyLjIyLjIwLjAwLjAwCi11bnNwc2M3IzEyLjIyLjIwLjA1LjAwI0JhY3RlcmlhIGN1bHR1cmVzIzEyLjIyLjIwLjAwLjAwCi11bnNwc2M3IzEyLjIyLjIwLjA2LjAwI0Jsb29kIzEyLjIyLjIwLjAwLjAwCi11bnNwc2M3IzEyLjIyLjIwLjA3LjAwI1VyZWEjMTIuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjAuMDguMDAjQmlsZSMxMi4yMi4yMC4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMC4wOS4wMCNQbGFzbWEjMTIuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjAuMTAuMDAjU2VtZW4gY3VsdHVyZXMjMTIuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjEuMDAuMDAjTnVjbGVpYyBhY2lkcyMxMi4yMi4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMS4wMS4wMCNSaWJvbnVjbGVpYyBhY2lkIChSTkEpIzEyLjIyLjIxLjAwLjAwCi11bnNwc2M3IzEyLjIyLjIxLjAyLjAwI0Rlb3h5cmlib251Y2xlaWMgYWNpZCAoRE5BKSMxMi4yMi4yMS4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMi4wMC4wMCNBbWlubyBhY2lkcyMxMi4yMi4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMi4wMS4wMCNCcmFuY2hlZCBjaGFpbiBhbWlubyBhY2lkcyMxMi4yMi4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMi4wMi4wMCNDeWNsaWMgYW1pbm8gYWNpZHMjMTIuMjIuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjIuMDMuMDAjRGlhbWlubyBhbWlubyBhY2lkcyMxMi4yMi4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMi4wNC4wMCNEaWNhcmJveHlsaWMgYW1pbm8gYWNpZHMjMTIuMjIuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjIuMDUuMDAjRXNzZW50aWFsIGFtaW5vIGFjaWRzIzEyLjIyLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIyLjIyLjA2LjAwI1N1bGZ1ciBhbWlubyBhY2lkcyMxMi4yMi4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMi4wNy4wMCNBbWlub2J1dHlyaWMgYWNpZHMjMTIuMjIuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjIuMDguMDAjQW1pbm9jYXByb2ljIGFjaWRzIzEyLjIyLjIyLjAwLjAwCi11bnNwc2M3IzEyLjIyLjIyLjA5LjAwI094YW1pYyBhY2lkcyMxMi4yMi4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMi4xMC4wMCNQaG9zcGhvYW1pbm8gYWNpZHMjMTIuMjIuMjIuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjIuMTEuMDAjUXVpc3F1YWxpYyBhY2lkcyMxMi4yMi4yMi4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMy4wMC4wMCNBbWluZXMgYW5kIGFtaWRlcyBhbmQgaW1pbmVzIGFuZCBpbWlkZXMjMTIuMjIuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjMuMDEuMDAjUHJpbWFyeSMxMi4yMi4yMy4wMC4wMAotdW5zcHNjNyMxMi4yMi4yMy4wMi4wMCNTZWNvbmRhcnkjMTIuMjIuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjMuMDMuMDAjVGVydGlhcnkjMTIuMjIuMjMuMDAuMDAKLXVuc3BzYzcjMTIuMjIuMjMuMDQuMDAjU3BlY2lhbHR5IzEyLjIyLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIyLjIzLjA1LjAwI1N1bHBob25hdGVkIzEyLjIyLjIzLjAwLjAwCi11bnNwc2M3IzEyLjIzLjAwLjAwLjAwI0lub3JnYW5pYyBjb21wb3VuZHMjMTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTAuMDAuMDAjTWluZXJhbCBhY2lkcyMxMi4yMy4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMy4xMC4wMS4wMCNIeWRyb2Zsb3JpYyBhY2lkIzEyLjIzLjEwLjAwLjAwCi11bnNwc2M3IzEyLjIzLjEwLjAyLjAwI0h5ZHJvZmx1b3Jvc2lsaWNpYyBhY2lkIzEyLjIzLjEwLjAwLjAwCi11bnNwc2M3IzEyLjIzLjEwLjAzLjAwI0h5ZHJvZmxvdXJpYyBhY2lkIzEyLjIzLjEwLjAwLjAwCi11bnNwc2M3IzEyLjIzLjExLjAwLjAwI0Jhc2VzIzEyLjIzLjAwLjAwLjAwCi11bnNwc2M3IzEyLjIzLjExLjAxLjAwI1NvZGl1bSBoeWRyb3hpZGUjMTIuMjMuMTEuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTEuMDIuMDAjUG90YXNzaXVtIGh5ZHJveGlkZSMxMi4yMy4xMS4wMC4wMAotdW5zcHNjNyMxMi4yMy4xMi4wMC4wMCNTYWx0cyMxMi4yMy4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMy4xMi4wMS4wMCNBbW1vbml1bSBuaXRyYXRlIzEyLjIzLjEyLjAwLjAwCi11bnNwc2M3IzEyLjIzLjEzLjAwLjAwI1N1bHBoYXRlcyMxMi4yMy4wMC4wMC4wMAotdW5zcHNjNyMxMi4yMy4xMy4wMS4wMCNGZXJyaWMgc3VscGhhdGUjMTIuMjMuMTMuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTMuMDIuMDAjQ29wcGVyIHN1bHBoYXRlIzEyLjIzLjEzLjAwLjAwCi11bnNwc2M3IzEyLjIzLjEzLjAzLjAwI0FsdW1pbml1bSBzdWxwaGF0ZSMxMi4yMy4xMy4wMC4wMAotdW5zcHNjNyMxMi4yMy4xMy4wNC4wMCNTb2RpdW0gc3VscGhhdGUjMTIuMjMuMTMuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTMuMDUuMDAjU29kaXVtIHRoaW9zdWxwaGF0ZSMxMi4yMy4xMy4wMC4wMAotdW5zcHNjNyMxMi4yMy4xNC4wMC4wMCNDaGxvcmlkZXMgY2hsb3JhdGVzIGFuZCBwZXJjaGxvcmF0ZXMjMTIuMjMuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTQuMDEuMDAjU29kaXVtIGNobG9yaXRlIzEyLjIzLjE0LjAwLjAwCi11bnNwc2M3IzEyLjIzLjE0LjAyLjAwI0ZlcnJpYyBDaGxvcmlkZSMxMi4yMy4xNC4wMC4wMAotdW5zcHNjNyMxMi4yMy4xNC4wMy4wMCNBbHVtaW5pdW0gY2hsb3JpZGUjMTIuMjMuMTQuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTQuMDQuMDAjUG9seSBhbHVtaW5pdW0gY2hsb3JpZGUjMTIuMjMuMTQuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTQuMDUuMDAjQWx1bWluaXVtIGNobG9yb2h5ZHJhdGUjMTIuMjMuMTQuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTQuMDYuMDAjU29kaXVtIGh5cG9jaGxvcml0ZSMxMi4yMy4xNC4wMC4wMAotdW5zcHNjNyMxMi4yMy4xNS4wMC4wMCNCb3JpZGVzIGFuZCBib3JhdGVzIzEyLjIzLjAwLjAwLjAwCi11bnNwc2M3IzEyLjIzLjE1LjAxLjAwI1NvZGl1bSBib3JhdGUjMTIuMjMuMTUuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTYuMDAuMDAjSHlkcmlkZXMjMTIuMjMuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTYuMDEuMDAjQWx1bWluaXVtIGh5ZHJpdGUjMTIuMjMuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTYuMDIuMDAjTWFnbmVzaXVtIGh5ZHJpdGUjMTIuMjMuMTYuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTcuMDAuMDAjU3VscGhpZGVzIzEyLjIzLjAwLjAwLjAwCi11bnNwc2M3IzEyLjIzLjE3LjAxLjAwI0h5ZHJvZ2VuIHN1bHBoaWRlIzEyLjIzLjE3LjAwLjAwCi11bnNwc2M3IzEyLjIzLjE3LjAyLjAwI1BvbHkgc3VscGhpZGUjMTIuMjMuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTcuMDMuMDAjU29kaXVtIHN1bHBoaWRlIzEyLjIzLjE3LjAwLjAwCi11bnNwc2M3IzEyLjIzLjE3LjA0LjAwI0lyb24gc3VscGhpZGUjMTIuMjMuMTcuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTguMDAuMDAjSW5vcmdhbmljIG94aWRpc2luZyBhZ2VudHMjMTIuMjMuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjMuMTguMDEuMDAjUG90YXNzaXVtIHBlcm1hbmdhbmF0ZSMxMi4yMy4xOC4wMC4wMAotdW5zcHNjNyMxMi4yMy4xOC4wMi4wMCNQb3Rhc3NpdW0gZGljaHJvbWF0ZSMxMi4yMy4xOC4wMC4wMAotdW5zcHNjNyMxMi4yMy4xOC4wMy4wMCNNYW5nYW5lc2UgZGlveGlkZSMxMi4yMy4xOC4wMC4wMAotdW5zcHNjNyMxMi4yNC4wMC4wMC4wMCNBbGNvaG9scyMxMi4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMi4yNC4xMC4wMC4wMCNNb25vaHlkcmljIGFsY29ob2xzIzEyLjI0LjAwLjAwLjAwCi11bnNwc2M3IzEyLjI0LjEwLjAxLjAwI0V0aGFub2wjMTIuMjQuMTAuMDAuMDAKLXVuc3BzYzcjMTIuMjQuMTAuMDIuMDAjSXNvcHJvcGFub2wjMTIuMjQuMTAuMDAuMDAKLXVuc3BzYzcjMTIuMjQuMTAuMDMuMDAjTWV0aGFub2wjMTIuMjQuMTAuMDAuMDAKLXVuc3BzYzcjMTIuMjQuMTAuMDQuMDAjUGVudGFub2xzIzEyLjI0LjEwLjAwLjAwCi11bnNwc2M3IzEyLjI0LjEwLjA1LjAwI09jdGFub2xzIzEyLjI0LjEwLjAwLjAwCi11bnNwc2M3IzEyLjI0LjEwLjA2LjAwI0lub3NpdG9scyMxMi4yNC4xMC4wMC4wMAotdW5zcHNjNyMxMi4yNC4xMC4wNy4wMCNGYXR0eSBhbGNvaG9scyMxMi4yNC4xMC4wMC4wMAotdW5zcHNjNyMxMi4yNC4xMC4wOC4wMCNBbGx5bCBhbGNvaG9sIzEyLjI0LjEwLjAwLjAwCi11bnNwc2M3IzEyLjI0LjExLjAwLjAwI1BvbHloeWRyaWMgYWxjb2hvbHMjMTIuMjQuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjQuMTEuMDEuMDAjR2x5Y29sIzEyLjI0LjExLjAwLjAwCi11bnNwc2M3IzEyLjI0LjExLjAyLjAwI0dseWNlcm9sIzEyLjI0LjExLjAwLjAwCi11bnNwc2M3IzEyLjI0LjEyLjAwLjAwI1RoaW8gYWxjb2hvbHMjMTIuMjQuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjQuMTIuMDEuMDAjRXRoYW5lIHRoaW9sIzEyLjI0LjEyLjAwLjAwCi11bnNwc2M3IzEyLjI0LjEyLjAyLjAwI01ldGhhbmUgdGhpb2wjMTIuMjQuMTIuMDAuMDAKLXVuc3BzYzcjMTIuMjUuMDAuMDAuMDAjQWxrYW5lcyBBbGtlbmVzIEFsa3luZXMgYW5kIEFyb21hdGljcyMxMi4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMi4yNS4xMC4wMC4wMCNBbGthbmVzIzEyLjI1LjAwLjAwLjAwCi11bnNwc2M3IzEyLjI1LjEwLjAxLjAwI1BlbnRhbmUjMTIuMjUuMTAuMDAuMDAKLXVuc3BzYzcjMTIuMjUuMTAuMDIuMDAjSGV4YW5lIzEyLjI1LjEwLjAwLjAwCi11bnNwc2M3IzEyLjI1LjExLjAwLjAwI0N5Y2xpYyBoeWRyb2NhcmJvbnMjMTIuMjUuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjUuMTEuMDEuMDAjVG9sdWVuZSMxMi4yNS4xMS4wMC4wMAotdW5zcHNjNyMxMi4yNS4xMS4wMi4wMCNYeWxlbmVzIzEyLjI1LjExLjAwLjAwCi11bnNwc2M3IzEyLjI1LjExLjAzLjAwI0JlbnplbmUjMTIuMjUuMTEuMDAuMDAKLXVuc3BzYzcjMTIuMjUuMTIuMDAuMDAjQWxrZW5lcyMxMi4yNS4wMC4wMC4wMAotdW5zcHNjNyMxMi4yNS4xMi4wMS4wMCNQcm9wZW5lIzEyLjI1LjEyLjAwLjAwCi11bnNwc2M3IzEyLjI1LjEyLjAyLjAwI0J1dGVuZSMxMi4yNS4xMi4wMC4wMAotdW5zcHNjNyMxMi4yNS4xMi4wMy4wMCNTdHlyZW5lIzEyLjI1LjEyLjAwLjAwCi11bnNwc2M3IzEyLjI1LjEzLjAwLjAwI0Fsa3luZXMjMTIuMjUuMDAuMDAuMDAKLXVuc3BzYzcjMTIuMjUuMTMuMDEuMDAjQWN5dGVsZW5lIzEyLjI1LjEzLjAwLjAwCi11bnNwc2M3IzEyLjI2LjAwLjAwLjAwI0Fyb21hdGljIGRlcml2YXRpdmVzIzEyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEyLjI2LjEwLjAwLjAwI0Fyb21hdGljIHN1bHBob25pYyBhY2lkcyMxMi4yNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4yNi4xMC4wMS4wMCNCZW56ZW5lIHN1bHBob25pYyBhY2lkcyMxMi4yNi4xMC4wMC4wMAotdW5zcHNjNyMxMi4yNi4xMC4wMi4wMCNIYWxvZ2VuYXRlZCBzdWxwaG9uaWMgYWNpZHMjMTIuMjYuMTAuMDAuMDAKLXVuc3BzYzcjMTIuMjYuMTAuMDMuMDAjTml0cm9zdWxwaG9uaWMgYWNpZHMjMTIuMjYuMTAuMDAuMDAKLXVuc3BzYzcjMTIuMjYuMTAuMDQuMDAjQW1pbm8gc3VscGhvbmljIGFjaWRzIzEyLjI2LjEwLjAwLjAwCi11bnNwc2M3IzEyLjI2LjEwLjA1LjAwI1N1bHBob255bCBjaGxvcmlkZXMjMTIuMjYuMTAuMDAuMDAKLXVuc3BzYzcjMTIuMjYuMTEuMDAuMDAjQXJvbWF0aWMgbml0cm8gY29tcG91bmRzIzEyLjI2LjAwLjAwLjAwCi11bnNwc2M3IzEyLjI2LjExLjAxLjAwI05pdHJvIGJlbnplbmVzIzEyLjI2LjExLjAwLjAwCi11bnNwc2M3IzEyLjI2LjExLjAyLjAwI05pdHJvIHRvbHVlbmVzIzEyLjI2LjExLjAwLjAwCi11bnNwc2M3IzEyLjI2LjExLjAzLjAwI0NhcHJvbGFjdGFtIzEyLjI2LjExLjAwLjAwCi11bnNwc2M3IzEyLjI2LjEyLjAwLjAwI0N5Y2xpYyBhbGNvaG9scyMxMi4yNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4yNi4xMi4wMS4wMCNIZXhhbm9scyMxMi4yNi4xMi4wMC4wMAotdW5zcHNjNyMxMi4yNi4xMi4wMi4wMCNOYXB0aG9scyMxMi4yNi4xMi4wMC4wMAotdW5zcHNjNyMxMi4yNi4xMi4wMy4wMCNYeWxlbm9scyMxMi4yNi4xMi4wMC4wMAotdW5zcHNjNyMxMi4yNi4xMi4wNC4wMCNCZW56eWwgYWxjb2hvbHMjMTIuMjYuMTIuMDAuMDAKLXVuc3BzYzcjMTIuMjYuMTMuMDAuMDAjUGh0aGFsYXRlcyMxMi4yNi4wMC4wMC4wMAotdW5zcHNjNyMxMi4yNi4xMy4wMS4wMCNEaSBvY3R5bCBQaHRoYWxhdGUjMTIuMjYuMTMuMDAuMDAKLXVuc3BzYzcjMTIuMjYuMTMuMDIuMDAjRGkgZXRoeWwgcGh0aGFsYXRlcyMxMi4yNi4xMy4wMC4wMAotdW5zcHNjNyMxMy4wMC4wMC4wMC4wMCNSZXNpbiBhbmQgUm9zaW4gYW5kIFJ1YmJlciBhbmQgRm9hbSBhbmQgRmlsbSBhbmQgRWxhc3RvbWVyaWMgTWF0ZXJpYWxzIzEzLjAwLjAwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjAwLjAwLjAwI1J1YmJlciBhbmQgZWxhc3RvbWVycyMxMy4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNS4wMC4wMCNOYXR1cmFsIHJ1YmJlciMxMy4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNS4wMS4wMCNMYXRleCBydWJiZXIjMTMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTUuMDIuMDAjQ3JlcGUgcnViYmVyIzEzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE1LjAzLjAwI1Ntb2tlZCBzaGVldCBydWJiZXIjMTMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTUuMDQuMDAjTmF0dXJhbCBmb2FtIHJ1YmJlciMxMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNS4wNS4wMCNCbG9jayBvciBjcnVtYiBydWJiZXIjMTMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTYuMDAuMDAjUHJvY2Vzc2VkIGFuZCBzeW50aGV0aWMgcnViYmVyIzEzLjEwLjAwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjE2LjAxLjAwI1Z1bGNhbml6ZWQgcnViYmVyIzEzLjEwLjE2LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE2LjAyLjAwI0NobG9yaW5hdGVkIHJ1YmJlciMxMy4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNi4wMy4wMCNIeWRyb2NobG9yaWRlIHJ1YmJlciMxMy4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNi4wNC4wMCNDeWNsaXplZCBydWJiZXIjMTMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTYuMDUuMDAjSXNvbWVyaXplZCBydWJiZXIjMTMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTYuMDYuMDAjVGhlcm1wbGFzdGljIHJ1YmJlciMxMy4xMC4xNi4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNi4wNy4wMCNSdWJiZXIgY29tcG91bmQjMTMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTcuMDAuMDAjRWxhc3RvbWVycyMxMy4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNy4wMS4wMCNBY3J5bG9uaXRyaWxlIGJ1dGFkaWVuZSAoTkJSKSMxMy4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNy4wMi4wMCNIaWdobHkgc2F0dXJhdGVkIG5pdHJpbGUgKEhOQlIpIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjAzLjAwI0ZsdW9yb2NhcmJvbiAoRktNKSMxMy4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNy4wNC4wMCNFdGh5bGVuZSBwcm9weWxlbmUgKEVQKSMxMy4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNy4wNS4wMCNTdHlyZW5lIGJ1dGFkaWVuZSAoU0JSKSMxMy4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNy4wNi4wMCNDaGxvcm9wcmVuZSAoQ1IpIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjA3LjAwI0lzb2J1dHlsZW5lIGlzb3ByZW5lIChJSVIvWElJUikjMTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTcuMDguMDAjU2lsaWNvbmUgKFZNUSBhbmQgUE1RIGFuZCBQVk1RKSMxMy4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNy4wOS4wMCNGbHVvcm9zaWxpY29uZSAoRlZNUSkjMTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTcuMTAuMDAjUG9seWFjcnlsYXRlIChBQ00pIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjExLjAwI0V0aHlsZW5lIGFjcnlsaWMgKEFFTSkjMTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTcuMTIuMDAjQ2hsb3Jvc3VsZm9uYXRlZCBwb2x5ZXRoeWxlbmUgKENTTSkjMTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTcuMTMuMDAjQ2hsb3JvcG9seWV0aHlsZW5lIChDTSkjMTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTcuMTQuMDAjRXBpY2hsb3JvaHlkcmluIChFQ08pIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjE1LjAwI05hdHVyYWwgcG9seWlzb3ByZW5lIChOUikjMTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTcuMTYuMDAjU3ludGhldGljIHBvbHlpc29wcmVuZSAoSVIpIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjE3LjAwI1BvbHllc3RlciB1cmV0aGFuZSAoQVUpIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjE4LjAwI1BvbHlldGhlciB1cmV0aGFuZSAoRVUpIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjE5LjAwI1BvbHlidXRhZGllbmUgKEJSKSMxMy4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMy4xMC4xNy4yMC4wMCNQb2x5ZXRoZXIgYmxvY2sgYW1pZGUgKFBFQkEpIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjIxLjAwI1N0eXJlbmUgYmxvY2sgY29wbG95bWVyIChURVMpIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjIyLjAwI0NvcG9seWVzdGVyIzEzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE3LjIzLjAwI1RoZXJtb3BsYXN0aWMjMTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTcuMjQuMDAjUG9seW9sZW5maW5pYyMxMy4xMC4xNy4wMC4wMAotdW5zcHNjNyMxMy4xMC4xOC4wMC4wMCNUaGVybW9wbGFzdGljIGVsYXN0b21lcnMjMTMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTguMDEuMDAjUG9seWV0aGVyIGJsb2NrIGFtaWRlIChQRUJBKSMxMy4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMy4xMC4xOC4wMi4wMCNQb2x5b2xlbmZpbmljIChUUE8pIzEzLjEwLjE4LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE4LjAzLjAwI0V0aGVyIGVzdGVyIGJsb2NrIGNvcGxveW1lciAoVEVFRSkjMTMuMTAuMTguMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTguMDQuMDAjVGhlcm1vcGxhc3RpYyBlbGFzdG9tZXIgcG9seXVyZXRoYW5lIChUUFVSKSMxMy4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMy4xMC4xOC4wNS4wMCNTdHlyZW5lIGJsb2NrIGNvcGxveW1lciAoVEVTKSMxMy4xMC4xOC4wMC4wMAotdW5zcHNjNyMxMy4xMC4xOS4wMC4wMCNUaGVybW9zZXQgcGxhc3RpY3MjMTMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTkuMDEuMDAjRXBveHkgKEVQKSMxMy4xMC4xOS4wMC4wMAotdW5zcHNjNyMxMy4xMC4xOS4wMi4wMCNQaGVub2xpYyAoUEYpIzEzLjEwLjE5LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE5LjAzLjAwI1Vuc2F0dXJhdGUgcG9seWVzdGVyIChVUCkjMTMuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTkuMDQuMDAjVXJlYSAoVUYpIzEzLjEwLjE5LjAwLjAwCi11bnNwc2M3IzEzLjEwLjE5LjA1LjAwI01lbGFtaW5lIChNRikjMTMuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMTkuMDYuMDAjVGhlcm1vc2V0IHBvbHl1cmV0aGFuZSAoUFVSKSMxMy4xMC4xOS4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4wMC4wMCNUaGVybW9wbGFzdGljIHBsYXN0aWNzIzEzLjEwLjAwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIwLjAxLjAwI0Fjcnlsb25pdHJpbGUgYnV0YWRpZW5lIHN0eXJlbmUgKEFCUykjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMDIuMDAjQWNyeWxvbml0cmlsZSBidXRhZGllbmUgc3R5cmVuZSAoQUJTKSBhbGxveXMjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMDMuMDAjQWNldGFsIHBvbHltZXIjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMDQuMDAjQWNyeWxpYyMxMy4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4wNS4wMCNBY3J5bG9uaXRyaWxlIHN0eXJlbmUgYWNyeWxpYyAoQVNBKSMxMy4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4wNi4wMCNBY3J5bG9uaXRyaWxlIHN0eXJlbmUgYWNyeWxpYyAoQVNBKSBhbGxveXMjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMDcuMDAjQ2VsbHVsb3NpY3MjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMDguMDAjRmx1b3JvcG9seW1lcnMgKFBURkUpIzEzLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIwLjA5LjAwI0V0aHlsZW5lIHZpbnlsIGFjZXRhdGUgKEVWQSkjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMTAuMDAjTGlxdWlkIGNyeXN0YWwgcG9seW1lciAoTENQKSMxMy4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4xMS4wMCNQb2x5YW1pZGUgbnlsb25zIChQQSkjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMTIuMDAjUG9seWJ1dHlsZW5lIHRlcmVwdGhhbGF0ZSAoUEJUKSMxMy4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4xMy4wMCNQb2x5Y2FyYm9uYXRlIChQQykjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMTQuMDAjUG9seWV0aGVyZXRoZXJrZXRvbmUgKFBFRUspIzEzLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIwLjE1LjAwI1BvbHlldGhlcmltaWQgKFBFSSkjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMTYuMDAjUG9seWV0aGVyc3VsZm9uZSAoUEVTKSMxMy4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4xNy4wMCNIaWdoIGRlbnNpdHkgcG9seWV0aHlsZW5lIChIRFBFKSMxMy4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4xOC4wMCNMb3cgZGVuc2l0eSBwb2x5ZXRoeWxlbmUgKExEUEUpIzEzLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIwLjE5LjAwI01lZGl1bSBkZW5zaXR5IHBvbHlldGh5bGVuZSAoTURQRSkjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMjAuMDAjUG9seWV0aHlsZW5lIHRlcmVwdGhhbGF0ZSAoUEVUKSMxMy4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4yMS4wMCNQb2x5aW1pZGUgKFBJKSMxMy4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4yMi4wMCNQb2x5cHJvcHlsZW5lIChQUCkjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMjMuMDAjUG9seXBodGhhbGFtaWRlIChQUEEpIzEzLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIwLjI0LjAwI1BvbHl0aGVueWxlbmUgb3hpZGUgKFBQTykjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMjUuMDAjUG9seXBoZW55bGVuZSBzdWxmaWRlIChQUFMpIzEzLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIwLjI2LjAwI1BvbHlzdHlyZW5lIChQUykjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMjcuMDAjSGlnaCBpbXBhY3QgcG9seXN0eXJlbmUgKEhJUFMpIzEzLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIwLjI4LjAwI1BvbHlzdWxmb25lIChQU1UpIzEzLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIwLjI5LjAwI1JpZ2lkIHRoZXJtb3BsYXN0aWMgcG9seXVyZXRoYW5lIChSUFRVKSMxMy4xMC4yMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMC4zMC4wMCNQb2x5dmlueWwgY2hsb3JpZGUgKFBWQykjMTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjAuMzEuMDAjU3R5cmVuZSBhY3J5bG9uaXRyaWxlIChTQU4pIzEzLjEwLjIwLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIxLjAwLjAwI1Jlc2lucyMxMy4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMS4wMS4wMCNQbGFzdGljIHJlc2lucyMxMy4xMC4yMS4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMS4wMi4wMCNJbmRlbmUgcmVzaW5zIzEzLjEwLjIxLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIxLjAzLjAwI1VyZWEgcmVzaW5zIzEzLjEwLjIxLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIxLjA0LjAwI1BoZW5vbGljIHJlc2lucyMxMy4xMC4yMS4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMS4wNS4wMCNUaGVybW9wbGFzdGljIHJlc2lucyMxMy4xMC4yMS4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMS4wNi4wMCNBbGt5ZCByZXNpbnMjMTMuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjEuMDcuMDAjTWVsYW1pbmUgcmVzaW5zIzEzLjEwLjIxLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIxLjA4LjAwI1BvbHlhY2V0YWwgcmVzaW5zIzEzLjEwLjIxLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIxLjA5LjAwI1BvbHlhbWlkZSByZXNpbnMjMTMuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjEuMTAuMDAjUG9seWNhcmJvbmF0ZSByZXNpbnMjMTMuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjEuMTEuMDAjUG9seWV0aHlsZW5lIHRlcmVwaHRoYWxhdGUgcmVzaW5zIzEzLjEwLjIxLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIxLjEyLjAwI1BvbHlldGhlciByZXNpbnMjMTMuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjEuMTMuMDAjQWxseWwgcmVzaW5zIzEzLjEwLjIxLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIxLjE0LjAwI1BvbHl1cmV0aGFuZSByZXNpbnMjMTMuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjEuMTUuMDAjRXBveHkgcmVzaW5zIzEzLjEwLjIxLjAwLjAwCi11bnNwc2M3IzEzLjEwLjIxLjE2LjAwI1BldHJvbGV1bSByZXNpbnMjMTMuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjIuMDAuMDAjUGxhc3RpYyBmaWxtcyMxMy4xMC4wMC4wMC4wMAotdW5zcHNjNyMxMy4xMC4yMi4wMS4wMCNQb2x5dXJldGhhbmUgZmlsbXMjMTMuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMTMuMTAuMjIuMDIuMDAjU2lsaWNvbmUgY29hdGVkIGZpbG1zIzEzLjEwLjIyLjAwLjAwCi11bnNwc2M3IzEzLjExLjAwLjAwLjAwI1Jlc2lucyBhbmQgcm9zaW5zIGFuZCBvdGhlciByZXNpbiBkZXJpdmVkIG1hdGVyaWFscyMxMy4wMC4wMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4wMC4wMCNSZXNpbnMjMTMuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMDEuMDAjRXBveHkjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMDIuMDAjUGhlbm9saWMjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMDMuMDAjVW5zYXR1cmF0ZWQgcG9seWVzdGVyIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjA0LjAwI0Fjcnlsb25pdHJpbGUgYnV0YWRpZW5lIHN0eXJlbmUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMDUuMDAjQWNyeWxvbml0cmlsZSBzdHlyZW5lIGFjcnlsaWMjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMDYuMDAjQWNyeWxvbml0cmlsZSBzdHlyZW5lIGFjcnlsaWMgYWxsb3lzIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjA3LjAwI0ZsdW9yb3BvbHltZXJzIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjA4LjAwI0V0aHlsZW5lIHZpbnlsIGFjZXRhdGUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMDkuMDAjTGlxdWlkIGNyeXN0YWwgcG9seW1lciMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4xMC4wMCNOeWxvbiMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4xMS4wMCNQb2x5YnV0eWxlbmUgdGVyZXB0aGF0bGF0ZSMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4xMi4wMCNQb2x5Y2FyYm9uYXRlIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjEzLjAwI1BvbHlldGhlcmV0aGVya2V0b25lIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjE0LjAwI1BvbHlldGhlcmltaWRlIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjE1LjAwI1BvbHlldGhlcnN1bGZvbmUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMTYuMDAjUG9seWV0aHlsZW5lIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjE3LjAwI1BvbHlldGh5bGVuZSB0ZXJwdGhhbGF0ZSMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4xOC4wMCNQb2x5aW1pZGUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMTkuMDAjUG9seXByb3B5bGVuZSMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4yMC4wMCNQb2x5cGh0aGFsYW1pZGUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMjEuMDAjUG9seWV0aHlsZW5lIG94aWRlIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjIyLjAwI1BvbHlwaGVueWxlbmUgc3VsZmlkZSMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4yMy4wMCNQb2x5c3R5cmVuZSMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4yNC4wMCNQb2x5c3VsZm9uZSMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4yNS4wMCNQb2x5dmlueWwgY2hsb3JpZGUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMjYuMDAjU3R5cmVuZSBhY3J5bG9uaXRyaWxlIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjI3LjAwI1VyZWEgZm9ybWFsZGVoeWRlIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjI4LjAwI0Fsa3lkIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjI5LjAwI01lbGFtaW5lIGZvcm1hbGRlaHlkZSMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4zMC4wMCNQb2x5YWNldGFsIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjMxLjAwI1BvbHlhbWlkZSMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4zMi4wMCNBbGx5bCMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC4zMy4wMCNFdGh5bGVuZSBhY3J5bGljIGFjaWQjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMzQuMDAjUG9seXZpbnlsIGNobG9yaWRlIGNvbXBvdW5kIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjM1LjAwI1NvbHV0aW9uIHZpbnlsIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjM2LjAwI1BoZW5veHkjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMzcuMDAjQ29tcG91bmRlZCByZXNpbnMjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMzguMDAjUG9seXZpbmx5IHB5cm9saWRpbmUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuMzkuMDAjUG9seWV0aHlsZW5lIHRlcmVwaHRoYWxhdGUgb3IgZ2x5Y29sIG1vZGlmaWVkIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjQwLjAwI0h5ZHJvY2FyYm9uIHRhY2tpZmllciMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC40MS4wMCNQb2x5Y2FyYm9uYXRlIGJsZW5kcyMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC40Mi4wMCNQb2x5dmlueWwgYWxjb2hvbCMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC40My4wMCNQb2x5dmlueWwgYnV0eXJhbCMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC40NC4wMCNQb2x5ZXN0ZXIgbW9sZGluZyBjb21wb3VuZHMjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuNDUuMDAjUG9seXZpbnlsIGFjZXRhdGUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuNDYuMDAjUG9seXZpbnlsIGV0aGVyIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjQ3LjAwI1BvbHl2aW55bCBmb3JtYWwjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuNDguMDAjU3R5cmVuZSBhY3J5bGljIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjQ5LjAwI0V0aHlsZW5lIHByb3B5bGVuZSBwb2x5bWVycyMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC41MC4wMCNQb2x5cHJvcHlsZW5lIG94aWRlIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjUxLjAwI1BvbHlwcm9weWxlbmUgZXRoZXIjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuNTIuMDAjUG9seXByb3B5bGVuZSBzdWxmb25lIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjUzLjAwI1BvbHltZXRoeWxhY3J5bGF0ZSMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC41NC4wMCNTdHlyZW5lIG1hbGVpYyBhbmh5ZHJpZGUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuNTUuMDAjU3luZGlvdGF0aWMgcG9seXN0eXJlbmUjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuNTYuMDAjQ2hsb3JpbmF0ZWQgcG9seXZpbnlsIGNobG9yaWRlIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjU3LjAwI1RoZXJtb3BsYXN0aWMgcG9seWVzdGVyIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjU4LjAwI0luZGVuZSByZXNpbnMjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuNTkuMDAjUGxhc3RpYyByZXNpbnMjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTAuNjAuMDAjUGV0cm9sZXVtIHJlc2lucyMxMy4xMS4xMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMC42MS4wMCNQb2x5dXJldGhhbmUgcmVzaW5zIzEzLjExLjEwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEwLjYyLjAwI1BvbHlldGhlciByZXNpbnMjMTMuMTEuMTAuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTEuMDAuMDAjUm9zaW5zIzEzLjExLjAwLjAwLjAwCi11bnNwc2M3IzEzLjExLjExLjAxLjAwI1dvb2Qgcm9zaW4jMTMuMTEuMTEuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTEuMDIuMDAjR3VtIHJvc2luIzEzLjExLjExLjAwLjAwCi11bnNwc2M3IzEzLjExLjExLjAzLjAwI1RhbGwgb2lsIHJvc2luIzEzLjExLjExLjAwLjAwCi11bnNwc2M3IzEzLjExLjEyLjAwLjAwI0ZpbG1zIzEzLjExLjAwLjAwLjAwCi11bnNwc2M3IzEzLjExLjEyLjAxLjAwI1BvbHlldGh5bGVuZSBmaWxtcyMxMy4xMS4xMi4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMi4wMi4wMCNQb2x5dXJldGhhbmUgZmlsbXMjMTMuMTEuMTIuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTIuMDMuMDAjQWNldGF0ZSBmaWxtcyMxMy4xMS4xMi4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMi4wNC4wMCNBY3J5bGljIGZpbG1zIzEzLjExLjEyLjAwLjAwCi11bnNwc2M3IzEzLjExLjEyLjA1LjAwI0NvZXh0cnVkZWQgZmlsbXMjMTMuMTEuMTIuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTIuMDYuMDAjRmxvdXJvcG9seW1lciBmaWxtcyMxMy4xMS4xMi4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMi4wNy4wMCNNZXRhbGl6ZWQgZmlsbXMjMTMuMTEuMTIuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTIuMDguMDAjTnlsb24gZmlsbXMjMTMuMTEuMTIuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTIuMDkuMDAjUG9seWNhcmJvbmF0ZSBmaWxtcyMxMy4xMS4xMi4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMi4xMC4wMCNQb2x5ZXN0ZXIgZmlsbXMjMTMuMTEuMTIuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTIuMTEuMDAjUG9seXByb3B5bGVuZSBmaWxtcyMxMy4xMS4xMi4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMi4xMi4wMCNCaWF4aWFsbHkgb3JpZW50YXRlZCBwb2x5cHJvcHlsZW5lIzEzLjExLjEyLjAwLjAwCi11bnNwc2M3IzEzLjExLjEyLjEzLjAwI1BvbHltaWRlIGZpbG1zIzEzLjExLjEyLjAwLjAwCi11bnNwc2M3IzEzLjExLjEyLjE0LjAwI1BvbHlzdHlyZW5lIGZpbG1zIzEzLjExLjEyLjAwLjAwCi11bnNwc2M3IzEzLjExLjEyLjE1LjAwI0ZsZXhpYmxlIHBvbHl2aW55bCBjaGxvcmlkZSBmaWxtIzEzLjExLjEyLjAwLjAwCi11bnNwc2M3IzEzLjExLjEyLjE2LjAwI1JpZ2lkIHBvbHl2aW55bCBjaGxvcmlkZSBmaWxtIzEzLjExLjEyLjAwLjAwCi11bnNwc2M3IzEzLjExLjEyLjE3LjAwI0V0aHlsZW5lIHZpbnlsIGFsY29ob2wgZmlsbSMxMy4xMS4xMi4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMi4xOC4wMCNQb2x5dmlueWxpZGVuZSBjaGxvcmlkZSMxMy4xMS4xMi4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMi4xOS4wMCNQb2x5dmlueWwgYWxjb2hvbCBmaWxtcyMxMy4xMS4xMi4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMy4wMC4wMCNGb2FtcyMxMy4xMS4wMC4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMy4wMS4wMCNQb2x5b2xlZmluIGZvYW0jMTMuMTEuMTMuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTMuMDIuMDAjUG9seWV0aGVyIGZvYW0jMTMuMTEuMTMuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTMuMDMuMDAjU2lsaWNvbmUgZm9hbSMxMy4xMS4xMy4wMC4wMAotdW5zcHNjNyMxMy4xMS4xMy4wNC4wMCNFdGh5bGVuZSBwcm9weWxlbmUgdGVycG9seW1lciBmb2FtIzEzLjExLjEzLjAwLjAwCi11bnNwc2M3IzEzLjExLjEzLjA1LjAwI05lb3ByZW5lIGZvYW0jMTMuMTEuMTMuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTMuMDYuMDAjUG9seXZpbnlsIGNobG9yaWRlIGZvYW0jMTMuMTEuMTMuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTMuMDcuMDAjUnViYmVyIGZvYW0jMTMuMTEuMTMuMDAuMDAKLXVuc3BzYzcjMTMuMTEuMTMuMDguMDAjUG9seXN0eXJlbmUgZm9hbSMxMy4xMS4xMy4wMC4wMAotdW5zcHNjNyMxNC4wMC4wMC4wMC4wMCNQYXBlciBNYXRlcmlhbHMgYW5kIFByb2R1Y3RzIzE0LjAwLjAwLjAwLjAwCi11bnNwc2M3IzE0LjEwLjAwLjAwLjAwI1BhcGVyIG1hdGVyaWFscyMxNC4wMC4wMC4wMC4wMAotdW5zcHNjNyMxNC4xMC4xNS4wMC4wMCNSYXcgbWF0ZXJpYWxzIzE0LjEwLjAwLjAwLjAwCi11bnNwc2M3IzE0LjEwLjE1LjAxLjAwI1BhcGVyIHB1bHAjMTQuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMDAuMDAuMDAjUGFwZXIgcHJvZHVjdHMjMTQuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTUuMDAuMDAjUHJpbnRpbmcgYW5kIHdyaXRpbmcgcGFwZXIjMTQuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTUuMDEuMDAjT25pb24gc2tpbiBwYXBlciMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4wMi4wMCNWZWxsdW0gcGFwZXIjMTQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTUuMDMuMDAjUGFyY2htZW50IHBhcGVyIzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjA0LjAwI1RyYWN0b3IgZmVlZCBwYXBlciMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4wNS4wMCNNaW1lb2dyYXBoIHBhcGVyIzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjA2LjAwI0NvbXB1dGVyIHByaW50b3V0IHBhcGVyIzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjA3LjAwI1ByaW50ZXIgb3IgY29waWVyIHBhcGVyIzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjA4LjAwI0ZhY3NpbWlsZSBwYXBlciMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4wOS4wMCNTdGF0aW9uZXJ5IzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjEwLjAwI1Bsb3R0ZXIgcGFwZXIjMTQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTUuMTEuMDAjV3JpdGluZyBwYXBlciMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4xMi4wMCNHcmFwaCBwYXBlciMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4xMy4wMCNMZWRnZXIgcGFwZXIjMTQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTUuMTQuMDAjUGFwZXIgcGFkcyBvciBub3RlYm9va3MjMTQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTUuMTUuMDAjQ2FsY3VsYXRvciBvciBjYXNoIHJlZ2lzdGVyIHBhcGVyIzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjE2LjAwI05vdGVib29rIGZpbGxlciBwYXBlciMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4xNy4wMCNCdXNpbmVzcyBmb3JtcyMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4xOC4wMCNJbmRleCBjYXJkcyMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4xOS4wMCNDYXJkc3RvY2sgcGFwZXJzIzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjIwLjAwI0Jsb3R0ZXIgcGFwZXIjMTQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTUuMjEuMDAjTGFzZXIgcGFwZXIjMTQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTUuMjIuMDAjSW5ramV0IHBhcGVyIzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjIzLjAwI1RyYWNpbmcgcGFwZXIjMTQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTUuMjQuMDAjRm9vbHNjYXAgc2hlZXRzIzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjI1LjAwI011bHRpcHVycG9zZSBwYXBlciMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4yNi4wMCNUZWxlcGhvbmUgbWVzc2FnZSBwYWRzIG9yIGJvb2tzIzE0LjExLjE1LjAwLjAwCi11bnNwc2M3IzE0LjExLjE1LjI4LjAwI01hZ25ldCBwYXBlciMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4yOS4wMCNUZWxleCByb2xscyMxNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNS4zMC4wMCNTZWxmIGFkaGVzaXZlIG5vdGUgcGFwZXIjMTQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTYuMDAuMDAjTm92ZWx0eSBwYXBlciMxNC4xMS4wMC4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNi4wMS4wMCNHaWZ0IHdyYXBwaW5nIHBhcGVyIG9yIGJhZ3Mgb3IgYm94ZXMjMTQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTYuMDQuMDAjQnVzaW5lc3MgY2FyZHMjMTQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTYuMDUuMDAjR3JlZXRpbmcgb3Igbm90ZSBvciBwb3N0IGNhcmRzIzE0LjExLjE2LjAwLjAwCi11bnNwc2M3IzE0LjExLjE2LjA2LjAwI0FydCBvciBjcmFmdCBwYXBlciMxNC4xMS4xNi4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNi4wNy4wMCNQb3N0ZXIgYm9hcmRzIzE0LjExLjE2LjAwLjAwCi11bnNwc2M3IzE0LjExLjE2LjA4LjAwI0dpZnQgY2VydGlmaWNhdGUjMTQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTYuMDkuMDAjQ292ZXIgcGFwZXIjMTQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTcuMDAuMDAjUGVyc29uYWwgcGFwZXIgcHJvZHVjdHMjMTQuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTcuMDEuMDAjRmFjaWFsIHRpc3N1ZXMjMTQuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTcuMDIuMDAjVG9pbGV0IHNlYXQgY292ZXJzIzE0LjExLjE3LjAwLjAwCi11bnNwc2M3IzE0LjExLjE3LjAzLjAwI1BhcGVyIHRvd2VscyMxNC4xMS4xNy4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNy4wNC4wMCNUb2lsZXQgdGlzc3VlIzE0LjExLjE3LjAwLjAwCi11bnNwc2M3IzE0LjExLjE3LjA1LjAwI1BhcGVyIG5hcGtpbnMgb3Igc2VydmlldHRlcyMxNC4xMS4xNy4wMC4wMAotdW5zcHNjNyMxNC4xMS4xNy4wNi4wMCNQYXBlciB0YWJsZSBjbG90aCMxNC4xMS4xNy4wMC4wMAotdW5zcHNjNyMxNC4xMS4xOC4wMC4wMCNCdXNpbmVzcyB1c2UgcGFwZXJzIzE0LjExLjAwLjAwLjAwCi11bnNwc2M3IzE0LjExLjE4LjAxLjAwI1RpY2tldHMgb3IgdGlja2V0IHJvbGxzIzE0LjExLjE4LjAwLjAwCi11bnNwc2M3IzE0LjExLjE4LjAyLjAwI1JlY2VpcHRzIG9yIHJlY2VpcHQgYm9va3MjMTQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTguMDMuMDAjVm91Y2hlcnMjMTQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTQuMTEuMTguMDQuMDAjQmlsbHMgb3IgYmlsbCBib29rcyMxNC4xMS4xOC4wMC4wMAotdW5zcHNjNyMxNC4xMS4xOC4wNS4wMCNDaGVja3Mgb3IgY2hlY2sgYm9va3MjMTQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMTQuMTIuMDAuMDAuMDAjSW5kdXN0cmlhbCB1c2UgcGFwZXJzIzE0LjAwLjAwLjAwLjAwCi11bnNwc2M3IzE0LjEyLjE1LjAwLjAwI1BhcGVyYm9hcmQgYW5kIHBhY2thZ2luZyBwYXBlcnMjMTQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTQuMTIuMTUuMDEuMDAjQmxlYWNoZWQgcGFwZXJib2FyZCMxNC4xMi4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMi4xNS4wMi4wMCNVbmJsZWFjaGVkIHBhcGVyYm9hcmQjMTQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMTQuMTIuMTUuMDMuMDAjQ2FyZGJvYXJkIzE0LjEyLjE1LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE1LjA0LjAwI1BhY2thZ2luZyBwYXBlciMxNC4xMi4xNS4wMC4wMAotdW5zcHNjNyMxNC4xMi4xNi4wMC4wMCNUaXNzdWUgcGFwZXJzIzE0LjEyLjAwLjAwLjAwCi11bnNwc2M3IzE0LjEyLjE2LjAxLjAwI1VuYmxlYWNoZWQgY3JlcGUgcGFwZXJzIzE0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE2LjAyLjAwI1NlbWkgYmxlYWNoZWQgY3JlcGUgcGFwZXJzIzE0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE2LjAzLjAwI1dldCBzdHJlbmd0aCB0aXNzdWUgcGFwZXJzIzE0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE2LjA0LjAwI0FjaWQgZnJlZSB0aXNzdWUgcGFwZXJzIzE0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE2LjA1LjAwI0tyYWZ0IHRpc3N1ZSBwYXBlciMxNC4xMi4xNi4wMC4wMAotdW5zcHNjNyMxNC4xMi4xNy4wMC4wMCNMYW1pbmF0ZWQgcGFwZXJzIzE0LjEyLjAwLjAwLjAwCi11bnNwc2M3IzE0LjEyLjE3LjAxLjAwI1BhcGVycyBib25kZWQgd2l0aCBmaWxtIzE0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE3LjAyLjAwI0N5bGluZGVyIHBhcGVycyBvciBtdWx0aSBsYXllciBoZWF2eXdlaWdodCBwYXBlciMxNC4xMi4xNy4wMC4wMAotdW5zcHNjNyMxNC4xMi4xOC4wMC4wMCNDb2F0ZWQgcGFwZXJzIzE0LjEyLjAwLjAwLjAwCi11bnNwc2M3IzE0LjEyLjE4LjAxLjAwI0NsYXkgY29hdGVkIHBhcGVycyMxNC4xMi4xOC4wMC4wMAotdW5zcHNjNyMxNC4xMi4xOC4wMi4wMCNQb2x5ZXRoeWxlbmUgY29hdGVkIHBhcGVycyMxNC4xMi4xOC4wMC4wMAotdW5zcHNjNyMxNC4xMi4xOC4wMy4wMCNQb2x5ZXN0ZXIgY29hdGVkIHBhcGVycyMxNC4xMi4xOC4wMC4wMAotdW5zcHNjNyMxNC4xMi4xOC4wNC4wMCNTaWxpY29uZSBjb2F0ZWQgcGFwZXJzIzE0LjEyLjE4LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE4LjA1LjAwI0xhdGV4IHRyZWF0ZWQgY29hdGVkIHBhcGVyIzE0LjEyLjE4LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE4LjA2LjAwI1dheGVkIHBhcGVyIzE0LjEyLjE4LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE4LjA3LjAwI0J1dGNoZXIgcGFwZXJzIzE0LjEyLjE4LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE4LjA4LjAwI0ZyZWV6ZXIgcGFwZXIjMTQuMTIuMTguMDAuMDAKLXVuc3BzYzcjMTQuMTIuMTguMDkuMDAjTWFza2luZyBwYXBlciMxNC4xMi4xOC4wMC4wMAotdW5zcHNjNyMxNC4xMi4xOC4xMC4wMCNDYXJib24gcGFwZXJzIzE0LjEyLjE4LjAwLjAwCi11bnNwc2M3IzE0LjEyLjE5LjAwLjAwI05ld3NwcmludCBhbmQgb2Zmc2V0IHBhcGVycyMxNC4xMi4wMC4wMC4wMAotdW5zcHNjNyMxNC4xMi4xOS4wMS4wMCNTdGFuZGFyZCBuZXdzcHJpbnQjMTQuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMTQuMTIuMTkuMDIuMDAjQ29sb3JlZCBuZXdzcHJpbnQjMTQuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMTQuMTIuMTkuMDMuMDAjSGlnaCBicmlnaHRuZXNzIG5ld3NwcmludCMxNC4xMi4xOS4wMC4wMAotdW5zcHNjNyMxNC4xMi4xOS4wNC4wMCNPZmZzZXQgcGFwZXIjMTQuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMTQuMTIuMjAuMDAuMDAjU3BlY2lhbHR5IGNvYXRlZCBwYXBlcnMjMTQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTQuMTIuMjAuMDEuMDAjQnV0Y2hlciBwYXBlcnMjMTQuMTIuMjAuMDAuMDAKLXVuc3BzYzcjMTQuMTIuMjAuMDIuMDAjRnJlZXplciBwYXBlciMxNC4xMi4yMC4wMC4wMAotdW5zcHNjNyMxNC4xMi4yMS4wMC4wMCNVbmNvYXRlZCBiYXNlIHBhcGVycyMxNC4xMi4wMC4wMC4wMAotdW5zcHNjNyMxNC4xMi4yMS4wMS4wMCNTdXBlciBjYWxlbmRhcmVkIGtyYWZ0IHBhcGVyIzE0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzE0LjEyLjIxLjAyLjAwI01hY2hpbmUgZmluaXNoZWQgb3IgZ2xhemVkIGtyYWZ0IHBhcGVyIzE0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzE0LjEyLjIxLjAzLjAwI05vbiB0cmVhdGVkIHVuY29hdGVkIHBhcGVyIzE0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzE0LjEyLjIxLjA0LjAwI05vbiB0cmVhdGVkIGNyZXBlIHBhcGVyIzE0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzE0LjEyLjIxLjA1LjAwI0xhdGV4IHRyZWF0ZWQgY3JlcGUgcGFwZXIjMTQuMTIuMjEuMDAuMDAKLXVuc3BzYzcjMTQuMTIuMjEuMDYuMDAjTGF0ZXggdHJlYXRlZCB1bmNvYXRlZCBwYXBlciMxNC4xMi4yMS4wMC4wMAotdW5zcHNjNyMxNS4wMC4wMC4wMC4wMCNGdWVscyBhbmQgRnVlbCBBZGRpdGl2ZXMgYW5kIEx1YnJpY2FudHMgYW5kIEFudGkgY29ycm9zaXZlIE1hdGVyaWFscyMxNS4wMC4wMC4wMC4wMAotdW5zcHNjNyMxNS4xMC4wMC4wMC4wMCNGdWVscyMxNS4wMC4wMC4wMC4wMAotdW5zcHNjNyMxNS4xMC4xNS4wMC4wMCNQZXRyb2xldW0gYW5kIGRpc3RpbGxhdGVzIzE1LjEwLjAwLjAwLjAwCi11bnNwc2M3IzE1LjEwLjE1LjAxLjAwI0Z1ZWwgb2lsIzE1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEwLjE1LjAyLjAwI0tlcm9zZW5lIzE1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEwLjE1LjAzLjAwI05hcGh0aGEjMTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTAuMTUuMDQuMDAjQXZpYXRpb24gZnVlbCMxNS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMC4xNS4wNS4wMCNEaWVzZWwgZnVlbCMxNS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMC4xNS4wNi4wMCNHYXNvbGluZSMxNS4xMC4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMC4xNS4wNy4wMCNQZXRyb2wjMTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTAuMTUuMDguMDAjQ3J1ZGUgb2lsIzE1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEwLjE1LjA5LjAwI01hcmluZSBmdWVsIzE1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEwLjE1LjEwLjAwI0NvbmRlbnNhdGUjMTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTAuMTYuMDAuMDAjQ29hbCBhbmQgbGlnbml0ZSBhbmQgcGVhdCMxNS4xMC4wMC4wMC4wMAotdW5zcHNjNyMxNS4xMC4xNi4wMS4wMCNDb2FsIzE1LjEwLjE2LjAwLjAwCi11bnNwc2M3IzE1LjEwLjE2LjAyLjAwI0xpZ25pdGUjMTUuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMTUuMTAuMTYuMDMuMDAjUGVhdCMxNS4xMC4xNi4wMC4wMAotdW5zcHNjNyMxNS4xMC4xNi4wNC4wMCNDb2tlIzE1LjEwLjE2LjAwLjAwCi11bnNwc2M3IzE1LjEwLjE2LjA1LjAwI0NoYXJjb2FsIzE1LjEwLjE2LjAwLjAwCi11bnNwc2M3IzE1LjExLjAwLjAwLjAwI0dhc2VvdXMgZnVlbHMgYW5kIGFkZGl0aXZlcyMxNS4wMC4wMC4wMC4wMAotdW5zcHNjNyMxNS4xMS4xNS4wMC4wMCNHYXNlb3VzIGZ1ZWxzIzE1LjExLjAwLjAwLjAwCi11bnNwc2M3IzE1LjExLjE1LjAxLjAwI1Byb3BhbmUjMTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTEuMTUuMDIuMDAjTWV0aGFuZSMxNS4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMS4xNS4wMy4wMCNQcm9weWxlbmUjMTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTEuMTUuMDQuMDAjRXRoeWxlbmUjMTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTEuMTUuMDUuMDAjQnV0YW5lIzE1LjExLjE1LjAwLjAwCi11bnNwc2M3IzE1LjExLjE1LjA2LjAwI0FjZXR5bGVuZSMxNS4xMS4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMS4xNS4wNy4wMCNXYXRlciBnYXMgb3IgcHJvZHVjZXIgZ2FzIzE1LjExLjE1LjAwLjAwCi11bnNwc2M3IzE1LjExLjE1LjA4LjAwI0NvYWwgZ2FzIzE1LjExLjE1LjAwLjAwCi11bnNwc2M3IzE1LjExLjE1LjA5LjAwI0xpcXVpZmllZCBwZXRyb2xldW0gZ2FzIzE1LjExLjE1LjAwLjAwCi11bnNwc2M3IzE1LjExLjE1LjEwLjAwI0Z1ZWwgYWRkaXRpdmVzIzE1LjExLjE1LjAwLjAwCi11bnNwc2M3IzE1LjExLjE2LjAwLjAwI0Z1ZWwgYWRkaXRpdmVzIzE1LjExLjAwLjAwLjAwCi11bnNwc2M3IzE1LjExLjE2LjAxLjAwI0V0aGFub2wjMTUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTUuMTEuMTYuMDIuMDAjTWV0aGFub2wjMTUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMDAuMDAuMDAjTHVicmljYW50cyBhbmQgb2lscyBhbmQgZ3JlYXNlcyBhbmQgYW50aSBjb3Jyb3NpdmVzIzE1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzE1LjEyLjE1LjAwLjAwI0x1YnJpY2F0aW5nIHByZXBhcmF0aW9ucyMxNS4xMi4wMC4wMC4wMAotdW5zcHNjNyMxNS4xMi4xNS4wMS4wMCNFbmdpbmUgb2lsIzE1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE1LjAyLjAwI0N1dHRpbmcgb2lsIzE1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE1LjAzLjAwI0dlYXIgb2lsIzE1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE1LjA0LjAwI0h5ZHJhdWxpYyBvaWwjMTUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTUuMDUuMDAjVHJhbnNmb3JtZXIgb2lsIzE1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE1LjA3LjAwI0xpdGhpdW0gZ3JlYXNlIzE1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE1LjA4LjAwI1RyYW5zbWlzc2lvbiBvaWwjMTUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTUuMDkuMDAjQnJha2Ugb2lsIzE1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE1LjEwLjAwI0FudGlnYWxsaW5nIzE1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE1LjExLjAwI0Fzc2VtYmx5IHBhc3RlcyMxNS4xMi4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMi4xNS4xMi4wMCNBbnRpIGFkaGVzaXZlcyMxNS4xMi4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMi4xNS4xMy4wMCNHcmFwaGl0ZSBsdWJyaWNhbnRzIzE1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE1LjE0LjAwI1NwcmF5IGx1YnJpY2FudHMjMTUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTUuMTUuMDAjQW50aSBzZWl6ZSBvciBhbnRpIHN0YWluIGNvbXBvdW5kcyMxNS4xMi4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMi4xNS4xNi4wMCNMZWFrIHN0b3AjMTUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTYuMDAuMDAjV2F4ZXMjMTUuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTYuMDEuMDAjUGFyYWZmaW4gd2F4IzE1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE2LjAyLjAwI1NlYWxpbmcgd2F4IzE1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE2LjAzLjAwI09sZWZpbiB3YXgjMTUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTcuMDAuMDAjU3BlY2lhbHR5IGx1YnJpY2FudHMjMTUuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTcuMDEuMDAjUGV0cm9sYXR1bSMxNS4xMi4xNy4wMC4wMAotdW5zcHNjNyMxNS4xMi4xOC4wMC4wMCNBbnRpIGNvcnJvc2l2ZXMjMTUuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTguMDEuMDAjTW9pc3R1cmUgcmVwZWxsZW50IzE1LjEyLjE4LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE4LjAyLjAwI0FudGkgY29ycm9zaW9uIGx1YnJpY2FudCMxNS4xMi4xOC4wMC4wMAotdW5zcHNjNyMxNS4xMi4xOC4wMy4wMCNSdXN0IHJlbW92ZXIjMTUuMTIuMTguMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTguMDQuMDAjUnVzdCBwcm9vZmluZyBwcmVwYXJhdGlvbiMxNS4xMi4xOC4wMC4wMAotdW5zcHNjNyMxNS4xMi4xOC4wNS4wMCNBbnRpIHdlbGQgcGFzdGVzIzE1LjEyLjE4LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE5LjAwLjAwI0dyZWFzZXMjMTUuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMTUuMTIuMTkuMDEuMDAjU2lsaWNvbmUgZ3JlYXNlIzE1LjEyLjE5LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE5LjAyLjAwI0dyZWFzZSMxNS4xMi4xOS4wMC4wMAotdW5zcHNjNyMxNS4xMi4xOS4wMy4wMCNUZWZsb24gZ3JlYXNlIzE1LjEyLjE5LjAwLjAwCi11bnNwc2M3IzE1LjEyLjE5LjA0LjAwI1dvb2wgZ3JlYXNlIzE1LjEyLjE5LjAwLjAwCi11bnNwc2M3IzE1LjEzLjAwLjAwLjAwI0Z1ZWwgZm9yIG51Y2xlYXIgcmVhY3RvcnMjMTUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMTUuMTMuMTUuMDAuMDAjTnVjbGVhciBmdWVsIzE1LjEzLjAwLjAwLjAwCi11bnNwc2M3IzE1LjEzLjE1LjAyLjAwI0RlcGxldGVkIHVyYW5pdW0jMTUuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTMuMTUuMDMuMDAjRW5yaWNoZWQgdXJhbml1bSMxNS4xMy4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMy4xNS4wNC4wMCNJcmlkaXVtIzE1LjEzLjE1LjAwLjAwCi11bnNwc2M3IzE1LjEzLjE1LjA1LjAwI0VucmljaGVkIHBsdXRvbml1bSMxNS4xMy4xNS4wMC4wMAotdW5zcHNjNyMxNS4xMy4xNS4wNi4wMCNEZXBsZXRlZCBwbHV0b25pdW0jMTUuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMTUuMTMuMTYuMDAuMDAjRmlzc2lvbiBmdWVsIGFzc2VtYmxpZXMjMTUuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMTUuMTMuMTYuMDEuMDAjTnVjbGVhciBmdWVsIHJvZCMxNS4xMy4xNi4wMC4wMAotdW5zcHNjNyMyMC4wMC4wMC4wMC4wMCNNaW5pbmcgTWFjaGluZXJ5IGFuZCBBY2Nlc3NvcmllcyMyMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMC4wMC4wMC4wMCNNaW5pbmcgYW5kIHF1YXJyeWluZyBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCMyMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMC4xNS4wMC4wMCNDdXR0aW5nIGVxdWlwbWVudCMyMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMC4xNS4wMS4wMCNDb250aW51b3VzIG1pbmluZyBlcXVpcG1lbnQjMjAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTUuMDIuMDAjTG9uZ3dhbGwgc2hlYXJzIzIwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIwLjEwLjE1LjAzLjAwI0NvYWwgY3V0dGVycyMyMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMC4xMC4xNS4wNC4wMCNSb2NrIGN1dHRlcnMjMjAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTYuMDAuMDAjU2NyZWVucyBhbmQgZmVlZGluZyBlcXVpcG1lbnQjMjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTYuMDEuMDAjU2NyZWVucyMyMC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyMC4xMC4xNi4wMi4wMCNGZWVkZXJzIzIwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzIwLjEwLjE3LjAwLjAwI0NydXNoZXJzIGFuZCBicmVha2VycyBhbmQgZ3JpbmRlcnMjMjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTcuMDEuMDAjUm9jayBjcnVzaGVycyMyMC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyMC4xMC4xNy4wMi4wMCNSb2xsIGNydXNoZXJzIzIwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzIwLjEwLjE3LjAzLjAwI0NvbmUgY3J1c2hlcnMjMjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTcuMDQuMDAjR3lyYXRvcnkgY3J1c2hlcnMjMjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTcuMDUuMDAjSW1wYWN0IGNydXNoZXJzIzIwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzIwLjEwLjE3LjA2LjAwI0phdyBjcnVzaGVycyMyMC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyMC4xMC4xNy4wNy4wMCNDcnVzaGluZyBwbGFudHMjMjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTcuMDguMDAjUm9kIG1pbGxzIzIwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzIwLjEwLjE3LjA5LjAwI0JhbGwgbWlsbHMjMjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTcuMTAuMDAjUHVsdmVyaXppbmcgbWFjaGluZXJ5IzIwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzIwLjEwLjE3LjExLjAwI1JvY2sgYnJlYWtlcnMjMjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTcuMTIuMDAjRWFydGggZ3JpbmRlcnMjMjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTAuMTcuMTMuMDAjQ3ljbG9uZSBvciB2b3J0ZXggZ3JpbmRlcnMjMjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMDAuMDAuMDAjV2VsbCBkcmlsbGluZyBhbmQgb3BlcmF0aW9uIGVxdWlwbWVudCMyMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMS4xNS4wMC4wMCNEcmlsbGluZyBhbmQgZXhwbG9yYXRpb24gZXF1aXBtZW50IzIwLjExLjAwLjAwLjAwCi11bnNwc2M3IzIwLjExLjE1LjAxLjAwI0dhcyB3ZWxsIGRyaWxsaW5nIGVxdWlwbWVudCMyMC4xMS4xNS4wMC4wMAotdW5zcHNjNyMyMC4xMS4xNS4wMi4wMCNPaWwgd2VsbCBkcmlsbGluZyBlcXVpcG1lbnQjMjAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTUuMDMuMDAjU3Vic2VhIHN5c3RlbSBlcXVpcG1lbnQjMjAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTUuMDQuMDAjV2F0ZXIgd2VsbCBkcmlsbGluZyBlcXVpcG1lbnQjMjAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTUuMDUuMDAjVXJhbml1bSBleHBsb3JhdGlvbiBlcXVpcG1lbnQjMjAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTUuMDYuMDAjV2VsbGhlYWQgZXF1aXBtZW50IzIwLjExLjE1LjAwLjAwCi11bnNwc2M3IzIwLjExLjE1LjA3LjAwI011ZCBvciB3b3Jrb3ZlciBmbHVpZCBlcXVpcG1lbnQjMjAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTUuMDguMDAjU2Vpc21pYyBlcXVpcG1lbnQjMjAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTYuMDAuMDAjRHJpbGxpbmcgYW5kIG9wZXJhdGlvbiBtYWNoaW5lcnkjMjAuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTYuMDEuMDAjQm9yaW5nIG9yIHNpbmtpbmcgbWFjaGluZXJ5IzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjAyLjAwI0Rvd25ob2xlIGFzc2VtYmx5IG1hY2hpbmVyeSMyMC4xMS4xNi4wMC4wMAotdW5zcHNjNyMyMC4xMS4xNi4wMy4wMCNIYW1tZXIgZHJpbGxzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjA0LjAwI0NyYXdsZXIgZHJpbGxzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjA1LjAwI1JvY2sgZHJpbGxzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjA2LjAwI1BuZXVtYXRpYyB2aWJyYXRvcnMjMjAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTYuMDcuMDAjVHVubmVsaW5nIG1hY2hpbmVyeSMyMC4xMS4xNi4wMC4wMAotdW5zcHNjNyMyMC4xMS4xNi4wOC4wMCNTdHJpa2luZyBoYW1tZXJzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjA5LjAwI1NpbmtlciBkcmlsbHMjMjAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTYuMTAuMDAjU2V3ZXIgaW5zcGVjdGlvbiBtYWNoaW5lcnkjMjAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTYuMTEuMDAjUm90YXJ5IGRyaWxscyMyMC4xMS4xNi4wMC4wMAotdW5zcHNjNyMyMC4xMS4xNi4xMi4wMCNEcmlsbGluZyByaWdzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjEzLjAwI0xvbmcgaG9sZSBkcmlsbHMjMjAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTYuMTQuMDAjSW5kdXN0cmlhbCBkcmlsbCBiaXRzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjE1LjAwI0RyaWZ0ZXJzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjE2LjAwI0RlcnJpY2tzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjE3LjAwI0RyaWxsaW5nIGNhcnJpYWdlcyMyMC4xMS4xNi4wMC4wMAotdW5zcHNjNyMyMC4xMS4xNi4xOC4wMCNEb3duaG9sZSBmaXNoaW5nIHBvbGVzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE2LjE5LjAwI1dlbGwgZHJpbGxpbmcgYml0IGNvbmVzIzIwLjExLjE2LjAwLjAwCi11bnNwc2M3IzIwLjExLjE3LjAwLjAwI0RyaWxsaW5nIGFuZCBvcGVyYXRpb24gYWNjZXNzb3JpZXMjMjAuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTcuMDEuMDAjQXVkaW8gdmlzdWFsIGluc3RydW1lbnRzIGZvciB3ZWxsIGluc3BlY3Rpb24jMjAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTEuMTcuMDIuMDAjUGFja2VycyBvciB0dWJpbmcgYW5jaG9ycyMyMC4xMS4xNy4wMC4wMAotdW5zcHNjNyMyMC4xMS4xNy4wMy4wMCNEcmlsbGluZyBjYXNpbmdzIzIwLjExLjE3LjAwLjAwCi11bnNwc2M3IzIwLjExLjE3LjA0LjAwI0RyaWxsaW5nIHNjcmVlbnMjMjAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMDAuMDAuMDAjT2lsIGFuZCBnYXMgZHJpbGxpbmcgYW5kIGV4cGxvcmF0aW9uIGVxdWlwbWVudCMyMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMC4wMC4wMCNBY2lkaXppbmcgZXF1aXBtZW50IzIwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEwLjAxLjAwI0FjaWRpemluZyBibGVuZGluZyB1bml0cyMyMC4xMi4xMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMC4wMi4wMCNBY2lkaXppbmcgZGVuc2l0eSBzZW5zb3JzIzIwLjEyLjEwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEwLjAzLjAwI0FjaWRpemluZyBwdW1waW5nIHVuaXRzIzIwLjEyLjEwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEwLjA0LjAwI0FjaWRpemluZyB1bml0cyMyMC4xMi4xMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMC4wNS4wMCNBY2lkaXppbmcgYWlyIHBpcGluZyMyMC4xMi4xMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMC4wNi4wMCNBY2lkaXppbmcgYmFsbCBpbmplY3RvcnMjMjAuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTAuMDcuMDAjQnVsayBsaXF1aWQgYWNpZCBlcXVpcG1lbnQjMjAuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTAuMDguMDAjQWNpZGl6aW5nIGRyb3AgYm94ZXMjMjAuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTAuMDkuMDAjQWNpZGl6aW5nIGZsb3cgbWV0ZXJzIzIwLjEyLjEwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEwLjEwLjAwI0FjaWRpemluZyBqdW5jdGlvbiBib3hlcyMyMC4xMi4xMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMC4xMS4wMCNBY2lkaXppbmcgcHJlc3N1cmUgc2Vuc29ycyMyMC4xMi4xMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMC4xMi4wMCNBY2lkaXppbmcgcHJvY2VzcyBwaXBpbmcjMjAuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTAuMTMuMDAjQWNpZGl6aW5nIHN0cmFpZ2h0IGpvaW50cyMyMC4xMi4xMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMC4xNC4wMCNBY2lkaXppbmcgc3dpdmVscyMyMC4xMi4xMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMC4xNS4wMCNBY2lkaXppbmcgdHJlYXRpbmcgaXJvbnMjMjAuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTAuMTYuMDAjQWNpZGl6aW5nIHRyZWUgc2F2ZXJzIzIwLjEyLjEwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjExLjAwLjAwI0NlbWVudGluZyBlcXVpcG1lbnQjMjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTEuMDEuMDAjQmxlbmRpbmcgdW5pdHMjMjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTEuMDIuMDAjQnJpZGdlIHBsdWdzIzIwLjEyLjExLjAwLjAwCi11bnNwc2M3IzIwLjEyLjExLjAzLjAwI0J1bGsgbGlxdWlkIGNlbWVudCBlcXVpcG1lbnQjMjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTEuMDQuMDAjQ2VtZW50IGJ1bGsgbWF0ZXJpYWwgZXF1aXBtZW50IzIwLjEyLjExLjAwLjAwCi11bnNwc2M3IzIwLjEyLjExLjA1LjAwI0NlbWVudCBkZW5zaXR5IHNlbnNvcnMjMjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTEuMDYuMDAjQ2VtZW50IGZsb2F0aW5nIGJ1bGsgdW5pdHMjMjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTEuMDcuMDAjQ2VtZW50IGZsb2F0aW5nIGVxdWlwbWVudCBzdGFnZSB0b29scyMyMC4xMi4xMS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMS4wOC4wMCNDZW1lbnQgZmxvYXRpbmcgZXF1aXBtZW50IHdpcGVyIHBsdWdzIzIwLjEyLjExLjAwLjAwCi11bnNwc2M3IzIwLjEyLjExLjA5LjAwI0NlbWVudCBwdW1waW5nIHVuaXRzIzIwLjEyLjExLjAwLjAwCi11bnNwc2M3IzIwLjEyLjExLjEwLjAwI0NlbWVudCByZXRhaW5lcnMjMjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTEuMTEuMDAjQ2VudHJhbGl6ZXJzIzIwLjEyLjExLjAwLjAwCi11bnNwc2M3IzIwLjEyLjExLjEyLjAwI0V4cHJlc3MgbGF0Y2ggY291cGxlcnMjMjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTEuMTMuMDAjRmxvYXQgY29sbGFycyMyMC4xMi4xMS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMS4xNC4wMCNGbG9hdCBzaG9lcyMyMC4xMi4xMS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMS4xNS4wMCNPaWxmaWVsZCBjZW1lbnRpbmcgdG9vbHMjMjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTEuMTYuMDAjUmV0cmlldmFibGUgY2VtZW50aW5nIHBhY2tlcnMjMjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTEuMTcuMDAjU2FmZXR5IHNsaW5ncyMyMC4xMi4xMS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMS4xOC4wMCNTdWJzZWEgY2VtZW50IGhlYWRzIzIwLjEyLjExLjAwLjAwCi11bnNwc2M3IzIwLjEyLjExLjE5LjAwI1N1cmZhY2UgY2VtZW50IGhlYWRzIzIwLjEyLjExLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEyLjAwLjAwI0ZyYWN0dXJpbmcgZXF1aXBtZW50IzIwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEyLjAxLjAwI0J1bGsgbGlxdWlkIGZyYWN0dXJpbmcgZXF1aXBtZW50IzIwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEyLjAyLjAwI0ZyYWN0dXJpbmcgYnVsayBwcm9wcGFudCBlcXVpcG1lbnQjMjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTIuMDMuMDAjRnJhY3R1cmluZyBjb250cm9sIHVuaXRzIzIwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEyLjA0LjAwI0ZyYWN0dXJpbmcgZGVuc2l0eSBzZW5zb3JzIzIwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEyLjA1LjAwI0ZyYWN0dXJpbmcgbWFuaWZvbGQgdW5pdHMjMjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTIuMDYuMDAjRnJhY3R1cmluZyBwcm9wcGFudCBjb252ZXlpbmcgZXF1aXBtZW50IzIwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEyLjA3LjAwI0ZyYWN0dXJpbmcgcHVtcGluZyB1bml0cyMyMC4xMi4xMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMi4wOC4wMCNGcmFjdHVyaW5nIHNsdXJyeSBibGVuZGluZyB1bml0cyMyMC4xMi4xMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMi4wOS4wMCNHZWwgYmxlbmRpbmcgdW5pdHMjMjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTIuMTAuMDAjRnJhY3R1cmluZyBtaXNzaWxlcyMyMC4xMi4xMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMi4xMS4wMCNQdW1wIGludGVncml0eSBtb25pdG9ycyMyMC4xMi4xMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMi4xMi4wMCNGcmFjdHVyaW5nIHNlcnZpY2UgcGFja2VycyMyMC4xMi4xMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMi4xMy4wMCNTdGltdWxhdGlvbiBwdW1waW5nIHVuaXRzIzIwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEzLjAwLjAwI1NhbmQgY29udHJvbCBlcXVpcG1lbnQjMjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMDEuMDAjQmxhbmtpbmcgcGx1Z3MjMjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMDIuMDAjRmxvYXRlcnMjMjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMDMuMDAjRnJhYyBwYWNrIHN5c3RlbXMjMjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMDQuMDAjR3JhdmVsIHBhY2sgc3lzdGVtcyMyMC4xMi4xMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMy4wNS4wMCNHdWlkZSBzaG9lcyMyMC4xMi4xMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMy4wNi4wMCNIb29rIHVwIG5pcHBsZXMjMjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMDcuMDAjTWFrZSB1cCBzdWJzIzIwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEzLjA4LjAwI1Byb2R1Y3Rpb24gdHViaW5nIG92ZXJzaG90cyMyMC4xMi4xMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMy4wOS4wMCNTYW5kIGNvbnRyb2wgYmxhbmtzIzIwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEzLjEwLjAwI1NhbmQgY29udHJvbCBidWxrIGxpcXVpZCBlcXVpcG1lbnQjMjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMTEuMDAjU2FuZCBjb250cm9sIGJ1bGsgcHJvcHBhbnQgZXF1aXBtZW50IzIwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEzLjEyLjAwI1NhbmQgY29udHJvbCBkZW5zaXR5IHNlbnNvcnMjMjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMTMuMDAjU2FuZCBjb250cm9sIG1hbmlmb2xkIHVuaXRzIzIwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEzLjE0LjAwI1NhbmQgY29udHJvbCBwcm9wcGFudCBjb252ZXlpbmcgZXF1aXBtZW50IzIwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEzLjE1LjAwI1NhbmQgY29udHJvbCBwdW1waW5nIHVuaXRzIzIwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEzLjE2LjAwI1NhbmQgY29udHJvbCBzY3JlZW5zIzIwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEzLjE3LjAwI1NhbmQgY29udHJvbCBzbHVycnkgYmxlbmRpbmcgdW5pdHMjMjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMTguMDAjU2FuZCBkZXRlY3RvcnMjMjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMTkuMDAjU2VhbCBhc3NlbWJseSBsb2NhdG9ycyMyMC4xMi4xMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMy4yMC4wMCNTaGVhciBqb2ludHMjMjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTMuMjEuMDAjU2xlZXZlIHNoaWZ0aW5nIHRvb2xzIzIwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjEzLjIyLjAwI1NsaWRpbmcgc2xlZXZlcyMyMC4xMi4xMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4xMy4yMy4wMCNWZWxvY2l0eSBzdHJpbmdzIzIwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjAwLjAwI0NvbXBsZXRpb24gdG9vbHMgYW5kIGVxdWlwbWVudCMyMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4wMS4wMCNCYWxsIGNhdGNoZXIgc3VicyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4wMi4wMCNCbGFzdCBqb2ludHMjMjAuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTQuMDMuMDAjQmxhc3QgbmlwcGxlcyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4wNC4wMCNDb21wbGV0aW9uIGJ1bGwgcGx1Z3MjMjAuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTQuMDUuMDAjQ2lyY3VsYXRpb24gcHJvZHVjdGlvbiBkZXZpY2VzIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjA2LjAwI0NvbXBsZXRpb24gdGVzdCBlcXVpcG1lbnQjMjAuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTQuMDcuMDAjQ29udHJvbCBsaW5lIHByb3RlY3RvcnMjMjAuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTQuMDguMDAjRGVmbGVjdGlvbiB0b29scyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4wOS4wMCNDb21wbGV0aW9uIGV4cGFuc2lvbiBqb2ludHMjMjAuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTQuMTAuMDAjRmxvdyBjb3VwbGluZ3MjMjAuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTQuMTEuMDAjR2FzIGxpZnQgZXF1aXBtZW50IzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjEyLjAwI0hhbmdlciBsYW5kaW5nIHRvb2xzIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjEzLjAwI0NvbXBsZXRpb24gaHlkcmF1bGljIHB1bXBzIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjE0LjAwI0h5ZHJhdWxpYyBzZXR0aW5nIHRvb2xzIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjE1LjAwI0luamVjdGlvbiBzeXN0ZW1zIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjE2LjAwI0xhbmRpbmcgbmlwcGxlcyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4xNy4wMCNMaW5lciBoYW5nZXJzIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjE4LjAwI1BhY2tlciBwdWxsaW5nIHRvb2xzIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjE5LjAwI1BhY2tlciBydW5uaW5nIHRvb2xzIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjIwLjAwI1Byb2R1Y3Rpb24gcGFja2VycyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4yMS4wMCNQdW1wIGRvd24gdGhyb3VnaCBmbG93IGxpbmUgZXF1aXBtZW50IzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjIyLjAwI0NvbXBsZXRpb24gc2FmZXR5IGpvaW50cyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4yMy4wMCNDb21wbGV0aW9uIHNlYWwgYXNzZW1ibGllcyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4yNC4wMCNTZWFsIGJvcmVzIG9yIHBvbGlzaGVkIGJvcmVzIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjI1LjAwI1NpZGUgcG9ja2V0IG1hbmRyZWxzIzIwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE0LjI2LjAwI1NsaWRpbmcgc2xlZXZlcyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4yNy4wMCNTdWJzdXJmYWNlIHNhZmV0eSB2YWx2ZXMjMjAuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTQuMjguMDAjVHJhdmVsIGpvaW50cyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4yOS4wMCNUdWJpbmcgYW5jaG9ycyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNC4zMC4wMCNUd2luIGZsb3cgYXNzZW1ibGllcyMyMC4xMi4xNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNS4wMC4wMCNDb252ZW50aW9uYWwgZHJpbGxpbmcgdG9vbHMjMjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTUuMDEuMDAjQmxvd291dCBwcmV2ZW50ZXJzIzIwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE1LjAyLjAwI0Jsb3dvdXQgcHJldmVudGVyIGNvbnRyb2xzIzIwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE1LjAzLjAwI0Nhc2luZyBzY3JhcGVycyMyMC4xMi4xNS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNS4wNC4wMCNEcmlsbCBjb2xsYXJzIzIwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE1LjA1LjAwI0NvcmluZyBlcXVpcG1lbnQjMjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTUuMDYuMDAjRHJpbGwgcGlwZSB0aHJlYWQgcHJvdGVjdG9ycyMyMC4xMi4xNS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNS4wNy4wMCNEcmlsbCBwaXBlIHRvb2wgam9pbnRzIzIwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE1LjA4LjAwI0RyaWxsIHBpcGUjMjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTUuMDkuMDAjR2F1Z2UgcmluZ3MjMjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTUuMTAuMDAjSG9sZSBvcGVuZXJzIzIwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE1LjExLjAwI0hvbGUgcmVhbWVycyMyMC4xMi4xNS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNS4xMi4wMCNGaXNoaW5nIGphcnMjMjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTUuMTMuMDAjRG93bmhvbGUgc2hvY2sgYWJzb3JiZXJzIzIwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE1LjE0LjAwI0Rvd25ob2xlIHN0YWJpbGl6ZXJzIzIwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE1LjE1LjAwI0RyaWxsaW5nIHN1YnMjMjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTUuMTYuMDAjVGhydXN0ZXJzIzIwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE2LjAwLjAwI0RyaWxsaW5nIGJpdHMjMjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTYuMDEuMDAjRml4ZWQgY3V0dGVyIGRyaWxsIGJpdHMjMjAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTYuMDIuMDAjTmF0dXJhbCBkaWFtb25kIGRyaWxsIGJpdHMjMjAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTYuMDMuMDAjTm96emxlIGRyaWxsIGJpdHMjMjAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTYuMDQuMDAjUERDIGJpdHMjMjAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTYuMDUuMDAjUm9sbGVyIGNvbmUgYnV0dG9uIGluc2VydCBkcmlsbCBiaXRzIzIwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE2LjA2LjAwI1JvbGxlciBzdGVlbCB0b290aCBkcmlsbCBiaXRzIzIwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE3LjAwLjAwI0Zpc2hpbmcgdG9vbHMjMjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTcuMDEuMDAjQnVtcGVyIHN1YnMjMjAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTcuMDIuMDAjQ2FzaW5nIHBhdGNoZXMjMjAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTcuMDMuMDAjSmFyIGJvb3N0ZXJzIzIwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE3LjA0LjAwI0p1bmsgc3VicyMyMC4xMi4xNy4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNy4wNS4wMCNNaWxscyBvciBidXJuaW5nIHNob2VzIzIwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE3LjA2LjAwI092ZXJzaG90cyMyMC4xMi4xNy4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNy4wNy4wMCNPaWxmaWVsZCBmaXNoaW5nIHNwZWFycyMyMC4xMi4xNy4wMC4wMAotdW5zcHNjNyMyMC4xMi4xNy4wOC4wMCNVbnNwZWNpZmllZCBmaXNoaW5nIHRvb2xzIzIwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE4LjAwLjAwI0RpcmVjdGlvbmFsIGRyaWxsaW5nIGVxdWlwbWVudCMyMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOC4wMS4wMCNHZW9zdGVlcmluZyB0b29scyMyMC4xMi4xOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOC4wMi4wMCNNdWQgbW90b3JzIzIwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE4LjAzLjAwI1JvdGFyeSBzdGVlcmFibGUgdG9vbHMjMjAuMTIuMTguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTguMDQuMDAjRGlyZWN0aW9uYWwgZHJpbGxpbmcgc3VyZmFjZSBjb250cm9sIHN5c3RlbXMjMjAuMTIuMTguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTguMDUuMDAjU3RyYWlnaHQgaG9sZSBkaXJlY3Rpb25hbCBkcmlsbGluZyB0b29scyMyMC4xMi4xOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOS4wMC4wMCNXZWxsIG1lYXN1cmVtZW50IGFuZCBsb2dnaW5nIGVxdWlwbWVudCMyMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOS4wMS4wMCNBY291c3RpYyB0b29scyMyMC4xMi4xOS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOS4wMi4wMCNEcmlsbGluZyBvciBtdWQgY29udHJvbCBpbnN0cnVtZW50cyMyMC4xMi4xOS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOS4wMy4wMCNEcmlsbGluZyBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudCB0b29scyMyMC4xMi4xOS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOS4wNC4wMCNGbG93IG1lYXN1cmVtZW50IGVxdWlwbWVudCMyMC4xMi4xOS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOS4wNS4wMCNOdWNsZWFyIG1hZ25ldGljIHJlc29uYW5jZSB0b29scyMyMC4xMi4xOS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOS4wNi4wMCNOdWNsZWFyIHRvb2xzIzIwLjEyLjE5LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE5LjA3LjAwI1Byb2R1Y3Rpb24gbG9nZ2luZyBlcXVpcG1lbnQjMjAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTkuMDguMDAjUmVzaXN0aXZpdHkgdG9vbHMjMjAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTkuMDkuMDAjU3VydmV5aW5nIHN5c3RlbXMjMjAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTkuMTAuMDAjVGVsZW1ldHJ5IHN5c3RlbXMjMjAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMTkuMTEuMDAjVWx0cmFzb25pYyB0b29scyMyMC4xMi4xOS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOS4xMi4wMCNXZWxsIGxvZ2dpbmcgYm90dG9tIGhvbGUgcHJlc3N1cmUgZXF1aXBtZW50IzIwLjEyLjE5LjAwLjAwCi11bnNwc2M3IzIwLjEyLjE5LjEzLjAwI1dlbGwgbG9nZ2luZyBkb3duaG9sZSB0ZXN0IGVxdWlwbWVudCMyMC4xMi4xOS4wMC4wMAotdW5zcHNjNyMyMC4xMi4xOS4xNC4wMCNXZWxsIGxvZ2dpbmcgdW5pdHMjMjAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjAuMDAuMDAjRml4dHVyaW5nIGFuZCB0ZXN0IGVxdWlwbWVudCMyMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMC4wMS4wMCNEcmlmdCBiYXJzIzIwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIwLjAyLjAwI0RyaWZ0IHNsZWV2ZXMjMjAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjAuMDMuMDAjRHJpZnQgcmFiYml0cyMyMC4xMi4yMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMC4wNC4wMCNUZXN0IGZpeHR1cmVzIzIwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIwLjA1LjAwI1Rlc3QgbmlwcGxlcyMyMC4xMi4yMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMC4wNi4wMCNUZXN0IHBsdWdzIzIwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIxLjAwLjAwI1BlcmZvcmF0aW5nIGVxdWlwbWVudCMyMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMS4wMS4wMCNDYXBzdWxlIGd1bnMjMjAuMTIuMjEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjEuMDIuMDAjQ2FzaW5nIGd1bnMjMjAuMTIuMjEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjEuMDMuMDAjRGVwbG95bWVudCBoZWFkcyMyMC4xMi4yMS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMS4wNC4wMCNQZXJmb3JhdGluZyBleHBsb3NpdmVzIzIwLjEyLjIxLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIxLjA1LjAwI0ZpcmluZyBoZWFkcyMyMC4xMi4yMS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMS4wNi4wMCNHdW4gYWRhcHRlcnMjMjAuMTIuMjEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjEuMDcuMDAjSGlnaCBzaG90IGRlbnNpdHkgZ3VucyMyMC4xMi4yMS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMS4wOC4wMCNQZXJmb3JhdGluZyBidWxsIHBsdWdzIzIwLjEyLjIxLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIxLjA5LjAwI1BsdWcgc2V0dGluZyB0b29scyMyMC4xMi4yMS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMS4xMC4wMCNQZXJmb3JhdGluZyBwb3NpdGlvbmluZyBlcXVpcG1lbnQjMjAuMTIuMjEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjEuMTEuMDAjU2NhbGxvcGVkIGd1bnMjMjAuMTIuMjEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjEuMTIuMDAjVGFuZGVtIHN1YnMjMjAuMTIuMjEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjEuMTMuMDAjVGhyb3VnaCB0dWJpbmcgcGVyZm9yYXRpb24gZ3VuIGFjY2Vzc29yaWVzIzIwLjEyLjIxLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIxLjE0LjAwI1Rocm91Z2ggdHViaW5nIHBlcmZvcmF0aW9uIGd1bnMjMjAuMTIuMjEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjEuMTUuMDAjVW5kZXIgYmFsYW5jZSB2ZW50IHN1YnMjMjAuMTIuMjEuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjIuMDAuMDAjV2VsbCB0ZXN0aW5nIGVxdWlwbWVudCMyMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMi4wMS4wMCNGbGFyZSBib29tcyMyMC4xMi4yMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMi4wMi4wMCNGbGFyZSBidXJuZXJzIzIwLjEyLjIyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIyLjAzLjAwI0Nhc2VkIGhvbGUgdGVzdCB0b29scyMyMC4xMi4yMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMi4wNC4wMCNDaG9rZSBtYW5pZm9sZHMjMjAuMTIuMjIuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjIuMDUuMDAjRGl2ZXJ0aW5nIG1hbmlmb2xkcyMyMC4xMi4yMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMi4wNi4wMCNGbG93aGVhZCBiYXNrZXRzIzIwLjEyLjIyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIyLjA3LjAwI0Zsb3doZWFkIHN3aXZlbHMjMjAuMTIuMjIuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjIuMDguMDAjRmxvd2hlYWRzIzIwLjEyLjIyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIyLjA5LjAwI0Zvcm1hdGlvbiBzaHV0IGluIHRvb2xzIzIwLjEyLjIyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIyLjEwLjAwI0dhcyBmbGFyZXMjMjAuMTIuMjIuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjIuMTEuMDAjTXVkIGdhcyBhbmFseXplcnMjMjAuMTIuMjIuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjIuMTIuMDAjT2lsIHNhbXBsZXJzIzIwLjEyLjIyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIyLjEzLjAwI1dlbGwgdGVzdGluZyBzZXBhcmF0b3JzIzIwLjEyLjIyLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIyLjE0LjAwI1dlbGwgdGVzdGluZyBzdXJmYWNlIHBpcGluZyMyMC4xMi4yMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMi4xNS4wMCNTdXJnZSB0YW5rcyMyMC4xMi4yMi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMi4xNi4wMCNXZWxsIHRlc3RpbmcgZG93bmhvbGUgdG9vbHMjMjAuMTIuMjIuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMDAuMDAjU2xpY2tsaW5lIGVxdWlwbWVudCMyMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4wMS4wMCNTbGlja2xpbmUgYWRhcHRlciBoZWFkcyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4wMi4wMCNTbGlja2xpbmUgYmFja29mZnMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMDMuMDAjU2xpY2tsaW5lIGJlbGwgZ3VpZGVzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjA0LjAwI1NsaWNrbGluZSBibGluZCBib3hlcyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4wNS4wMCNTbGlja2xpbmUgYm90dG9tIGhvbGUgcHJlc3N1cmUgZXF1aXBtZW50IzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjA2LjAwI1NsaWNrbGluZSBjYWxpcGVyIHRvb2xzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjA3LjAwI1NsaWNrbGluZSBjZW1lbnQgZHVtcCBiYWlsaW5nIGVxdWlwbWVudCMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4wOC4wMCNTbGlja2xpbmUgY2hlbWljYWwgY3V0dGVycyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4wOS4wMCNTbGlja2xpbmUgY2xhbXAgb24gdG9vbCBzdHJpbmcgY2VudHJhbGl6ZXJzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjEwLjAwI1NsaWNrbGluZSBjbGFtcCBvbiB3aXJlbGluZSBjZW50cmFsaXplcnMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMTEuMDAjU2xpY2tsaW5lIGNvbGxhciBsb2NhdG9ycyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4xMi4wMCNTbGlja2xpbmUgY29sbGVjdG9ycyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4xMy4wMCNTbGlja2xpbmUgY29sbGlkaW5nIHRvb2xzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjE0LjAwI1NsaWNrbGluZSBjcm9zc292ZXJzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjE1LjAwI1NsaWNrbGluZSBkZXB0aCBtZWFzdXJlbWVudCBlcXVpcG1lbnQjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMTYuMDAjU2xpY2tsaW5lIGRld2FyIGZsYXNrcyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4xNy4wMCNTbGlja2xpbmUgZGlwbWV0ZXIgdG9vbHMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMTguMDAjU2xpY2tsaW5lIGRpcmVjdGlvbmFsIHRvb2xzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjE5LjAwI1NsaWNrbGluZSBnbyBkZXZpbCB0b29scyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4yMC4wMCNTbGlja2xpbmUgaG9sZSBwdW5jaGVycyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4yMS4wMCNTbGlja2xpbmUgamV0IGN1dHRlcnMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMjIuMDAjU2xpY2tsaW5lIGp1bmsgc2hvdHMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMjMuMDAjU2xpY2tsaW5lIGtpY2tvdmVyIHRvb2xzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjI0LjAwI1NsaWNrbGluZSBrbnVja2xlIGpvaW50cyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4yNS4wMCNTbGlja2xpbmUgbGVhZCBpbXByZXNzaW9uIGJsb2NrcyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4yNi4wMCNTbGlja2xpbmUgbG9jYXRvciBtYW5kcmVscyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4yNy4wMCNTbGlja2xpbmUgbG9jayBtYW5kcmVscyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4yOC4wMCNTbGlja2xpbmUgbHVicmljYXRvcnMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMjkuMDAjU2xpY2tsaW5lIG1lY2hhbmljYWwgYmFpbGVycyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4zMC4wMCNTbGlja2xpbmUgbWVjaGFuaWNhbCBwbHVnYmFja3MjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMzEuMDAjT3RoZXIgU2xpY2tsaW5lIFRvb2xzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjMyLjAwI1NsaWNrbGluZSBwYXJhZmZpbiBzY3JhcHBlcnMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMzMuMDAjU2xpY2tsaW5lIHJvcGUgc29ja2V0cyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4zNC4wMCNTbGlja2xpbmUgcnVubmluZyBvciBwdWxsaW5nIHByb25ncyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4zNS4wMCNTbGlja2xpbmUgc2V2ZXJpbmcgdG9vbHMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMzYuMDAjU2xpY2tsaW5lIHNoZWF2ZXMgb3IgZmxvb3IgYmxvY2tzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjM3LjAwI1NsaWNrbGluZSBib3R0b20gaG9sZSBwcmVzc3VyZSBlcXVpcG1lbnQjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuMzguMDAjU2xpY2tsaW5lIHB1bGxpbmcgdG9vbCBhY2Nlc3NvcmllcyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy4zOS4wMCNTbGlja2xpbmUgcHVsbGluZyB0b29scyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy40MC4wMCNTbGlja2xpbmUgcnVubmluZyB0b29scyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy40MS4wMCNTbGlja2xpbmUgdW5pdHMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuNDIuMDAjU2xpY2tsaW5lIHdpcmUjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuNDMuMDAjU2xpY2tsaW5lIHNvbmljIHRvb2xzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjQ0LjAwI1NsaWNrbGluZSBzcGFjZXIgYmFycyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy40NS4wMCNTbGlja2xpbmUgc3dhZ2VzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjQ2LjAwI1NsaWNrbGluZSB0ZW5zaW9uIGRldmljZXMjMjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjMuNDcuMDAjU2xpY2tsaW5lIHR1YmluZyBwbHVncyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy40OC4wMCNTbGlja2xpbmUgdWx0cmFzb25pYyB0b29scyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy40OS4wMCNXaXJlbGluZSBHcmFicyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yMy41MC4wMCNXaXJlbGluZSBKYXJzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjUxLjAwI1dpcmVsaW5lIFNjcmFwZXJzIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjUyLjAwI1dpcmVsaW5lIFNwZWFyIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjUzLjAwI1dpcmVsaW5lIFN0ZW1zIzIwLjEyLjIzLjAwLjAwCi11bnNwc2M3IzIwLjEyLjIzLjU0LjAwI1dpcmVsaW5lIFZhbHZlcyMyMC4xMi4yMy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNC4wMC4wMCNQcm9kdWN0aW9uIHN5c3RlbXMgZXF1aXBtZW50IzIwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjI0LjAxLjAwI0NhYmxlIHRodW1wZXJzIzIwLjEyLjI0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI0LjAyLjAwI09pbGZpZWxkIHByb2R1Y3Rpb24gZXZhcG9yYXRvcnMjMjAuMTIuMjQuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjQuMDMuMDAjSGlwb3QgdGVzdGVycyMyMC4xMi4yNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNC4wNC4wMCNPaWxmaWVsZCBsYXBwaW5nIG1hY2hpbmVzIzIwLjEyLjI0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI0LjA1LjAwI01vdG9yIGVuZCBsaWZ0cyMyMC4xMi4yNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNC4wNi4wMCNPaWwgZGllbGVjdHJpYyB0ZXN0ZXJzIzIwLjEyLjI0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI0LjA3LjAwI09pbCB2YWN1dW0gZmlsbGluZyB1bml0cyMyMC4xMi4yNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNC4wOC4wMCNPaWxmaWVsZCBwcm9kdWN0aW9uIHNoYWZ0IHN0cmFpZ2h0ZW5lcnMjMjAuMTIuMjQuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjQuMDkuMDAjT2lsZmllbGQgcHJvZHVjdGlvbiBzcG9vbGVycyMyMC4xMi4yNC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNC4xMC4wMCNWaWJyYXRpb24gYW5hbHl6ZXJzIzIwLjEyLjI0LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI1LjAwLjAwI0NvaWxlZCB0dWJpbmcgZXF1aXBtZW50IzIwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjI1LjAxLjAwI0JsYXN0ZXIgdG9vbHMjMjAuMTIuMjUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjUuMDIuMDAjQ29pbGVkIHR1YmluZyB0cnVjayBjcmFuZSB1bml0cyMyMC4xMi4yNS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNS4wMy4wMCNDb2lsZWQgdHViaW5nIHVuaXRzIzIwLjEyLjI1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI1LjA0LjAwI0NvaWxlZCB0dWJpbmcgaG9zZSBwYWNrYWdlcyMyMC4xMi4yNS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNS4wNS4wMCNDb2lsZWQgdHViaW5nIGluZmxhdGFibGUgc3lzdGVtcyMyMC4xMi4yNS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNS4wNi4wMCNDb2lsZWQgdHViaW5nIGluamVjdG9yIGhlYWRzIzIwLjEyLjI1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI1LjA3LjAwI0NvaWxlZCB0dWJpbmcgbGlmdGluZyBlcXVpcG1lbnQjMjAuMTIuMjUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjUuMDguMDAjT3BlcmF0b3IgaG91c2VzIzIwLjEyLjI1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI1LjA5LjAwI0NvaWxlZCB0dWJpbmcgcG93ZXIgcGFja3MjMjAuMTIuMjUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjUuMTAuMDAjQ29pbGVkIHR1YmluZyByZWVscyMyMC4xMi4yNS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNS4xMS4wMCNDb2lsZWQgdHViaW5nIHNwb29saW5nIHJlZWxzIzIwLjEyLjI1LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI1LjEyLjAwI1R1YmluZyBndWlkZXMjMjAuMTIuMjUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjUuMTMuMDAjV2VsbGhlYWQgaG9va3VwcyMyMC4xMi4yNS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNS4xNC4wMCNXZWxsaGVhZCBzdXBwb3J0IHN0cnVjdHVyZXMjMjAuMTIuMjUuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjUuMTUuMDAjT2lsZmllbGQgY29pbGVkIHR1YmluZyMyMC4xMi4yNS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNi4wMC4wMCNTZWlzbWljIGVxdWlwbWVudCMyMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNi4wMS4wMCNTZWlzbWljIGFuYWxvZyBzZW5zb3JzIzIwLjEyLjI2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI2LjAyLjAwI1NlaXNtaWMgYXJyYXlzIzIwLjEyLjI2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI2LjAzLjAwI1NlaXNtaWMgc3RyZWFtZXIgY2FibGUgYmlyZHMjMjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjYuMDQuMDAjU2Vpc21pYyBkcmlsbCB0YW5rZXJzIzIwLjEyLjI2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI2LjA1LjAwI1NlaXNtaWMgZ2VvcGhvbmVzIzIwLjEyLjI2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI2LjA2LjAwI1NlaXNtaWMgZ3Jhdml0eSBzeXN0ZW1zIzIwLjEyLjI2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI2LjA3LjAwI1NlaXNtaWMgZ3VuIHdpbmNoIHN5c3RlbXMjMjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjYuMDguMDAjU2Vpc21pYyBoeWRyb3Bob25lcyMyMC4xMi4yNi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNi4wOS4wMCNTZWlzbWljIGltcHVsc2Ugc291cmNlcyMyMC4xMi4yNi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNi4xMC4wMCNTZWlzbWljIG1hcmluZSBzdHJlYW1lciBjYWJsZXMjMjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjYuMTEuMDAjU2Vpc21pYyBvY2VhbiBib3R0b20gY2FibGVzIzIwLjEyLjI2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI2LjEyLjAwI1NlaXNtaWMgbWFnbmV0aWMgc3lzdGVtcyMyMC4xMi4yNi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNi4xMy4wMCNTZWlzbWljIHBvc2l0aW9uaW5nIGVxdWlwbWVudCMyMC4xMi4yNi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNi4xNC4wMCNTZWlzbWljIHJhbXMjMjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjYuMTUuMDAjU2Vpc21pYyByZWNlaXZlcnMjMjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjYuMTYuMDAjU2Vpc21pYyByZWZyYWN0aW9uIHN5c3RlbXMjMjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjYuMTcuMDAjU2Vpc21pYyBzb3VyY2UgY29udHJvbGxlcnMjMjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjYuMTguMDAjU2Vpc21pYyBzcG9vbGluZyBkZXZpY2VzIzIwLjEyLjI2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI2LjE5LjAwI1NlaXNtaWMgdG93IGJsb2NrcyMyMC4xMi4yNi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNi4yMC4wMCNTZWlzbWljIHRvdyBwb2ludHMjMjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjYuMjEuMDAjU2Vpc21pYyB2aWJyYXRvcnMjMjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjYuMjIuMDAjU2Vpc21pYyByZWNvcmRpbmcgc3lzdGVtcyMyMC4xMi4yNi4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNi4yMy4wMCNTZWlzbWljIGRhdGEgcHJvY2Vzc2luZyBzeXN0ZW1zIzIwLjEyLjI2LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI3LjAwLjAwI09pbCBjb3VudHJ5IHR1YnVsYXIgZ29vZHMjMjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjcuMDEuMDAjT2lsIGNvdW50cnkgY2FzaW5nIzIwLjEyLjI3LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI3LjAyLjAwI09pbCBjb3VudHJ5IGNvdXBsaW5ncyMyMC4xMi4yNy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNy4wMy4wMCNPaWwgY291bnRyeSBwdXAgam9pbnRzIzIwLjEyLjI3LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI3LjA0LjAwI09pbCBjb3VudHJ5IHR1YmluZyMyMC4xMi4yNy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNy4wNS4wMCNPaWwgY291bnRyeSBwaXBlIGNvYXRpbmdzIzIwLjEyLjI3LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI3LjA2LjAwI0NvbmR1Y3RvciBjYXNpbmcjMjAuMTIuMjcuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjcuMDcuMDAjQ29uZHVjdG9yIGNhc2luZyBydW5uaW5nIGVxdWlwbWVudCMyMC4xMi4yNy4wMC4wMAotdW5zcHNjNyMyMC4xMi4yNy4wOC4wMCNEcmlsbCBwaXBlIGNyb3Nzb3ZlcnMjMjAuMTIuMjcuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjcuMDkuMDAjT2lsIGNvdW50cnkgdGhyZWFkIHByb3RlY3RvcnMjMjAuMTIuMjcuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMDAuMDAjRHJpbGxpbmcgYW5kIHdvcmtvdmVyIHJpZ3MgYW5kIGVxdWlwbWVudCMyMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4wMS4wMCNNdWQgYWdpdGF0b3JzIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjAyLjAwI011ZCB0YW5rcyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4wMy4wMCNBaXIgZHJpbGxpbmcgZXF1aXBtZW50IzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjA0LjAwI0JhcmdlIHJpZ3MjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMDUuMDAjQmxvdyBvdXQgcHJldmVudGVycyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4wNi4wMCNGbHVpZCBkaXZlcnRlcnMjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMDcuMDAjRHJhd3dvcmtzIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjA4LjAwI0RyaWxsIGZsb29yIGVxdWlwbWVudCMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4wOS4wMCNEcmlsbCBzd2l2ZWxzIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjEwLjAwI0RyaWxsaW5nIHJpZyBzaGlwcyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4xMS4wMCNEcmlsbCByaWcgZWxldmF0b3JzIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjEyLjAwI0RyaWxsIHJpZyBiYWlscyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4xMy4wMCNIeWRyYXVsaWMgd29ya292ZXIgdW5pdHMjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMTQuMDAjRHJpbGwgcmlnIGphY2tpbmcgc3lzdGVtcyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4xNS4wMCNKYWNrdXAgbWFyaW5lIGRyaWxsaW5nIHJpZ3MjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMTYuMDAjS2VsbHkgYnVzaGluZ3MjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMTcuMDAjS2VsbHkgdmFsdmVzIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjE4LjAwI0tlbGx5IHdpcGVycyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4xOS4wMCNLZWxseXMjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMjAuMDAjTGFuZCBkcmlsbGluZyByaWdzIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjIxLjAwI011ZCBjbGVhbmluZyBlcXVpcG1lbnQjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMjIuMDAjTXVkIG1hbmlmb2xkcyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4yMy4wMCNNdWQgbWl4ZXJzIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjI0LjAwI1BpcGUgaGFuZGxpbmcgZXF1aXBtZW50IzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjI1LjAwI1BsYXRmb3JtIGRyaWxsaW5nIHJpZ3MjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMjYuMDAjUG93ZXIgc3dpdmVsIG9yIHRvcCBkcml2ZXMjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMjcuMDAjUmlnIHNraWRzIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjI4LjAwI0RyaWxsIHJpZyByaXNlcnMjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMjkuMDAjRHJpbGwgcmlnIHJvdGFyeSB0YWJsZXMjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMzAuMDAjU2VsZiBlbGV2YXRpbmcgd29ya292ZXIgcGxhdGZvcm1zIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjMxLjAwI1NlbWkgc3VibWVyc2libGUgZHJpbGxpbmcgcmlncyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4zMi4wMCNEcmlsbCBmbG9vciBzbGlwcyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOC4zMy4wMCNNYWtldXAgdG9uZ3MjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMzQuMDAjSXJvbiByb3VnaG5lY2tzIzIwLjEyLjI4LjAwLjAwCi11bnNwc2M3IzIwLjEyLjI4LjM1LjAwI1RyYXZlbGluZyBlcXVpcG1lbnQjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMzYuMDAjV29ya292ZXIgYm9hdHMjMjAuMTIuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjguMzcuMDAjV29ya292ZXIgcmlncyMyMC4xMi4yOC4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOS4wMC4wMCNTdXJmYWNlIGRhdGEgbG9nZ2luZyBlcXVpcG1lbnQjMjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjkuMDEuMDAjU3VyZmFjZSBkYXRhIGxvZ2dpbmcgY29uZHVpdHMjMjAuMTIuMjkuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMjkuMDIuMDAjU3VyZmFjZSBkYXRhIGxvZ2dpbmcgc2Vuc29ycyMyMC4xMi4yOS4wMC4wMAotdW5zcHNjNyMyMC4xMi4yOS4wMy4wMCNTdXJmYWNlIGRhdGEgbG9nZ2luZyB1bml0cyMyMC4xMi4yOS4wMC4wMAotdW5zcHNjNyMyMC4xMi4zMC4wMC4wMCNNdWx0aWxhdGVyYWwgZXF1aXBtZW50IzIwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzIwLjEyLjMwLjAxLjAwI011bHRpbGF0ZXJhbCBjYXNpbmcjMjAuMTIuMzAuMDAuMDAKLXVuc3BzYzcjMjAuMTIuMzAuMDIuMDAjTXVsdGlsYXRlcmFsIGp1bmN0aW9ucyMyMC4xMi4zMC4wMC4wMAotdW5zcHNjNyMyMC4xMi4zMC4wMy4wMCNNdWx0aWxhdGVyYWwgcGFja2VycyMyMC4xMi4zMC4wMC4wMAotdW5zcHNjNyMyMC4xMy4wMC4wMC4wMCNPaWwgYW5kIGdhcyBkcmlsbGluZyBhbmQgb3BlcmF0aW9uIG1hdGVyaWFscyMyMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMy4xMC4wMC4wMCNEcmlsbGluZyBtdWQgYW5kIG1hdGVyaWFscyMyMC4xMy4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMy4xMC4wMS4wMCNGaWx0cmF0aW9uIGNvbnRyb2wgYWdlbnRzIzIwLjEzLjEwLjAwLjAwCi11bnNwc2M3IzIwLjEzLjEwLjAyLjAwI0ZsdWlkIHNwYWNlcnMjMjAuMTMuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTMuMTAuMDMuMDAjTG9zdCBjaXJjdWxhdGlvbiBhZ2VudHMjMjAuMTMuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTMuMTAuMDQuMDAjT2lsIGJhc2VkIG11ZHMjMjAuMTMuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTMuMTAuMDUuMDAjUmF0ZSBvZiBwZW5ldHJhdGlvbiBlbmhhbmNlcnMjMjAuMTMuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTMuMTAuMDYuMDAjU3BvdHRpbmcgZmx1aWRzIzIwLjEzLjEwLjAwLjAwCi11bnNwc2M3IzIwLjEzLjEwLjA3LjAwI1N5bnRoZXRpYyBiYXNlZCBtdWRzIzIwLjEzLjEwLjAwLjAwCi11bnNwc2M3IzIwLjEzLjEwLjA4LjAwI011ZCB0aGlubmluZyBhZ2VudHMjMjAuMTMuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTMuMTAuMDkuMDAjV2F0ZXIgYmFzZWQgbXVkcyMyMC4xMy4xMC4wMC4wMAotdW5zcHNjNyMyMC4xMy4xMC4xMC4wMCNNdWQgd2VpZ2h0aW5nIGFnZW50cyMyMC4xMy4xMC4wMC4wMAotdW5zcHNjNyMyMC4xMy4xMS4wMC4wMCNXZWxsIGZyYWN0dXJpbmcgcHJvcHBhbnRzIzIwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzIwLjEzLjExLjAxLjAwI0NlcmFtaWMgcHJvcHBhbnRzIzIwLjEzLjExLjAwLjAwCi11bnNwc2M3IzIwLjEzLjExLjAyLjAwI0ZyYWN0dXJpbmcgc2FuZHMjMjAuMTMuMTEuMDAuMDAKLXVuc3BzYzcjMjAuMTMuMTEuMDMuMDAjUmVzaW4gY29hdGVkIGNlcmFtaWMgcHJvcHBhbnRzIzIwLjEzLjExLjAwLjAwCi11bnNwc2M3IzIwLjEzLjExLjA0LjAwI1Jlc2luIGNvYXRlZCBmcmFjdHVyaW5nIHNhbmRzIzIwLjEzLjExLjAwLjAwCi11bnNwc2M3IzIwLjEzLjExLjA1LjAwI1Jlc2luIGNvYXRlZCBzaW50ZXJlZCBiYXV4aXRlcyMyMC4xMy4xMS4wMC4wMAotdW5zcHNjNyMyMC4xMy4xMS4wNi4wMCNTaW50ZXJlZCBiYXV4aXRlcyMyMC4xMy4xMS4wMC4wMAotdW5zcHNjNyMyMC4xMy4xMi4wMC4wMCNDb21wbGV0aW9uIGZsdWlkcyMyMC4xMy4wMC4wMC4wMAotdW5zcHNjNyMyMC4xMy4xMi4wMS4wMCNEaXZhbGVudCBicmluZXMjMjAuMTMuMTIuMDAuMDAKLXVuc3BzYzcjMjAuMTMuMTIuMDIuMDAjTW9ub3ZhbGVudCBicmluZXMjMjAuMTMuMTIuMDAuMDAKLXVuc3BzYzcjMjAuMTMuMTMuMDAuMDAjT2lsIHdlbGwgY2VtZW50IzIwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzIwLjEzLjEzLjAxLjAwI09pbCB3ZWxsIGJ1bGsgY2VtZW50IzIwLjEzLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEzLjEzLjAyLjAwI09pbCB3ZWxsIGNsYXNzIGEgdHlwZSBJIGNlbWVudCMyMC4xMy4xMy4wMC4wMAotdW5zcHNjNyMyMC4xMy4xMy4wMy4wMCNPaWwgd2VsbCBjbGFzcyBiIHR5cGUgSUkgY2VtZW50IzIwLjEzLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEzLjEzLjA0LjAwI09pbCB3ZWxsIGNsYXNzIGMgY2VtZW50IzIwLjEzLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEzLjEzLjA1LjAwI09pbCB3ZWxsIGNsYXNzIGcgY2VtZW50IzIwLjEzLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEzLjEzLjA2LjAwI09pbCB3ZWxsIGNsYXNzIGggY2VtZW50IzIwLjEzLjEzLjAwLjAwCi11bnNwc2M3IzIwLjEzLjEzLjA3LjAwI09pbCB3ZWxsIGxpZ2h0d2VpZ2h0IGNlbWVudCMyMC4xMy4xMy4wMC4wMAotdW5zcHNjNyMyMC4xMy4xMy4wOC4wMCNPaWwgd2VsbCBzdGFuZGFyZCBmaW5lIHR5cGUgSUlJIGNlbWVudCMyMC4xMy4xMy4wMC4wMAotdW5zcHNjNyMyMC4xNC4wMC4wMC4wMCNPaWwgYW5kIGdhcyBvcGVyYXRpbmcgYW5kIHByb2R1Y3Rpb24gZXF1aXBtZW50IzIwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzIwLjE0LjEwLjAwLjAwI1dlbGxoZWFkIGVxdWlwbWVudCMyMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4xMC4wMS4wMCNXZWxsaGVhZCBhY3R1YXRvcnMjMjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTAuMDIuMDAjV2VsbGhlYWQgYmVhbSBwdW1wcyMyMC4xNC4xMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4xMC4wMy4wMCNXZWxsaGVhZCBmbG93IGxpbmVzIzIwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzIwLjE0LjEwLjA0LjAwI1dlbGxoZWFkIGdhdGUgdmFsdmVzIzIwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzIwLjE0LjEwLjA1LjAwI1dlbGxoZWFkIHByb2R1Y3Rpb24gY2hva2VzIzIwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzIwLjE0LjEwLjA2LjAwI1dlbGxoZWFkIHN1YiBzdXJmYWNlIGZsb3cgb3IgY2hyaXN0bWFzIHRyZWVzIzIwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzIwLjE0LjEwLjA3LjAwI1dlbGxoZWFkIHN1cmZhY2UgZmxvdyBvciBjaHJpc3RtYXMgdHJlZXMjMjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTAuMDguMDAjV2VsbGhlYWQgc3VyZmFjZSBzYWZldHkgdmFsdmVzIzIwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzIwLjE0LjExLjAwLjAwI0NoZW1pY2FsIGluamVjdGlvbiBzeXN0ZW1zIzIwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzIwLjE0LjExLjAxLjAwI1BhcmFmZmluIGluamVjdGlvbiBzeXN0ZW1zIzIwLjE0LjExLjAwLjAwCi11bnNwc2M3IzIwLjE0LjEyLjAwLjAwI0Rlc2FuZGluZyBlcXVpcG1lbnQjMjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTIuMDEuMDAjUHJvZHVjdGlvbiBkZXNhbmRpbmcgZXF1aXBtZW50IzIwLjE0LjEyLjAwLjAwCi11bnNwc2M3IzIwLjE0LjEzLjAwLjAwI0Rvd25ob2xlIGpldCBwdW1wcyBhbmQgYW5jaG9ycyMyMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4xMy4wMS4wMCNEb3duaG9sZSBqZXQgcHVtcHMjMjAuMTQuMTMuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTQuMDAuMDAjRG93bmhvbGUgcHJvZHVjdGlvbiBhY2Nlc3NvcmllcyMyMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4xNC4wMS4wMCNUdWJpbmcgc3RvcHMjMjAuMTQuMTQuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTUuMDAuMDAjRG93bmhvbGUgcHVtcHMjMjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTUuMDEuMDAjRWxlY3RyaWMgZG93bmhvbGUgcHVtcHMjMjAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTYuMDAuMDAjRXhwb3J0IHB1bXBzIzIwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzIwLjE0LjE2LjAxLjAwI1BuZXVtYXRpYyBleHBvcnQgcHVtcHMjMjAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTcuMDAuMDAjT2Zmc2hvcmUgcHJvZHVjdGlvbiBhbmQgc3RvcmFnZSBwbGF0Zm9ybXMjMjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTcuMDEuMDAjRml4ZWQgb2Zmc2hvcmUgcHJvZHVjdGlvbiBwbGF0Zm9ybXMjMjAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTcuMDIuMDAjRmxvYXRpbmcgb2Zmc2hvcmUgcHJvZHVjdGlvbiBwbGF0Zm9ybXMjMjAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTcuMDMuMDAjRmxvYXRpbmcgb2Zmc2hvcmUgc3RvcmFnZSBwbGF0Zm9ybXMjMjAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTcuMDQuMDAjRmxvYXRpbmcgb2Zmc2hvcmUgdGVuc2lvbiBsZWcgIHByb2R1Y3Rpb24gcGxhdGZvcm1zIzIwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzIwLjE0LjE3LjA1LjAwI0Zsb2F0aW5nIG9mZnNob3JlIHRlbnNpb24gbGVnIHN0b3JhZ2UgcGxhdGZvcm1zIzIwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzIwLjE0LjE4LjAwLjAwI1dlbGwgcHJvZHVjdGlvbiBmbG93IG1lYXN1cmVtZW50IG1ldGVycyMyMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4xOC4wMS4wMCNXZWxsIHByb2R1Y3Rpb24gZ2FzIHR1cmJpbmUgbWV0ZXJzIzIwLjE0LjE4LjAwLjAwCi11bnNwc2M3IzIwLjE0LjE5LjAwLjAwI0dhcyB0cmVhdGluZyBlcXVpcG1lbnQjMjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMTkuMDEuMDAjT2lsIHdlbGwgcHJvZHVjdGlvbiBnYXMgdHJlYXRpbmcgZXF1aXBtZW50IzIwLjE0LjE5LjAwLjAwCi11bnNwc2M3IzIwLjE0LjIwLjAwLjAwI0dseWNvbCByZWdlbmVyYXRvcnMjMjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMjAuMDEuMDAjT2lsIHdlbGwgZ2x5Y29sIHJlZ2VuZXJhdG9ycyMyMC4xNC4yMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4yMS4wMC4wMCNIZWF0ZXIgdHJlYXRlcnMjMjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMjEuMDEuMDAjT2lsIHdlbGwgaGVhdGVyIHRyZWF0ZXJzIzIwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzIwLjE0LjIyLjAwLjAwI0xpbmUgaGVhdGVycyMyMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4yMi4wMS4wMCNFbGVjdHJpY2FsIGxpbmUgaGVhdGVycyMyMC4xNC4yMi4wMC4wMAotdW5zcHNjNyMyMC4xNC4yMy4wMC4wMCNQcm9kdWN0aW9uIGluamVjdGlvbiBza2lkcyMyMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4yMy4wMS4wMCNQbmV1bWF0aWMgbWV0aGFub2wgaW5qZWN0aW9ucyBza2lkcyMyMC4xNC4yMy4wMC4wMAotdW5zcHNjNyMyMC4xNC4yNC4wMC4wMCNPY2VhbiBmbG9vciBlcXVpcG1lbnQjMjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMjQuMDEuMDAjU3Vic2VhIHByb2R1Y3Rpb24gd2VsbGhlYWQgZXF1aXBtZW50IzIwLjE0LjI0LjAwLjAwCi11bnNwc2M3IzIwLjE0LjI1LjAwLjAwI1Byb2R1Y2VkIHdhdGVyIHRyZWF0aW5nIGVxdWlwbWVudCMyMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4yNS4wMS4wMCNPaWwgZmllbGQgd2F0ZXIgb2lsIGNlbnRyaWZ1Z2VzIzIwLjE0LjI1LjAwLjAwCi11bnNwc2M3IzIwLjE0LjI2LjAwLjAwI1Byb2R1Y3Rpb24gY29udHJvbCBzeXN0ZW0gaW5zdHJ1bWVudGF0aW9uIzIwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzIwLjE0LjI2LjAxLjAwI1dpcmVsZXNzIHByb2R1Y3Rpb24gY29udHJvbCBzeXN0ZW1zIzIwLjE0LjI2LjAwLjAwCi11bnNwc2M3IzIwLjE0LjI3LjAwLjAwI1B1bXBpbmcgdW5pdHMjMjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMjcuMDEuMDAjU3Vja2VyIHJvZCBwdW1wIGphY2tzIzIwLjE0LjI3LjAwLjAwCi11bnNwc2M3IzIwLjE0LjI3LjAyLjAwI1JvZCBwdW1wcyMyMC4xNC4yNy4wMC4wMAotdW5zcHNjNyMyMC4xNC4yNy4wMy4wMCNNZWNoYW5pY2FsIHJvZCBwdW1wcyMyMC4xNC4yNy4wMC4wMAotdW5zcHNjNyMyMC4xNC4yOC4wMC4wMCNQcm9kdWN0aW9uIHNlcGFyYXRvcnMjMjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjAuMTQuMjguMDEuMDAjT2lsIHdhdGVyIHNlcGFyYXRvcnMjMjAuMTQuMjguMDAuMDAKLXVuc3BzYzcjMjAuMTQuMjkuMDAuMDAjU3RvcmFnZSB2ZXNzZWxzIGFuZCB0YW5rcyMyMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4yOS4wMS4wMCNPaWwgc3RvcmFnZSB0YW5rcyMyMC4xNC4yOS4wMC4wMAotdW5zcHNjNyMyMC4xNC4zMC4wMC4wMCNTdWNrZXIgcm9kcyMyMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4zMC4wMS4wMCNBbGxveSBzdGVlbCBzdWNrZXIgcm9kcyMyMC4xNC4zMC4wMC4wMAotdW5zcHNjNyMyMC4xNC4zMC4wMi4wMCNQb255IHJvZHMjMjAuMTQuMzAuMDAuMDAKLXVuc3BzYzcjMjEuMDAuMDAuMDAuMDAjRmFybWluZyBhbmQgRmlzaGluZyBhbmQgRm9yZXN0cnkgYW5kIFdpbGRsaWZlIE1hY2hpbmVyeSBhbmQgQWNjZXNzb3JpZXMjMjEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMDAuMDAuMDAjQWdyaWN1bHR1cmFsIGFuZCBmb3Jlc3RyeSBhbmQgbGFuZHNjYXBlIG1hY2hpbmVyeSBhbmQgZXF1aXBtZW50IzIxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzIxLjEwLjE1LjAwLjAwI0FncmljdWx0dXJhbCBtYWNoaW5lcnkgZm9yIHNvaWwgcHJlcGFyYXRpb24jMjEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTUuMDEuMDAjUGxvdWdocyMyMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMS4xMC4xNS4wMi4wMCNIYXJyb3dzIzIxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE1LjAzLjAwI0N1bHRpdmF0b3JzIzIxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE1LjA0LjAwI1dlZWRlcnMjMjEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTUuMDUuMDAjSG9laW5nIG1hY2hpbmVzIzIxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE1LjA2LjAwI0dyYWRlcnMgb3IgbGFuZCBsZXZlbGVycyMyMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMS4xMC4xNS4wNy4wMCNBZ3JpY3VsdHVyYWwgcm9sbGVycyMyMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMS4xMC4xNS4wOC4wMCNSb2xsZXJzIGZvciBsYXduIG9yIHNwb3J0cyBncm91bmRzIzIxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE1LjA5LjAwI1RyZW5jaGVyIGRyYWluYWdlIG1hY2hpbmUjMjEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTUuMTAuMDAjSXJyaWdhdGlvbiBwaXBlcyBvciB0dWJlcyMyMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMS4xMC4xNS4xMS4wMCNJcnJpZ2F0aW9uIHRyaWNrbGVzIzIxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE1LjEyLjAwI0lycmlnYXRpb24gb3ZlcmhlYWRzIzIxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE1LjEzLjAwI0Rpc2tzIzIxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE1LjE0LjAwI1N1YnNvaWxlcnMjMjEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTUuMTUuMDAjSGVkZ2UgY2xpcHBlcnMjMjEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTUuMTYuMDAjRGliYmxlcnMjMjEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTYuMDAuMDAjQWdyaWN1bHR1cmFsIG1hY2hpbmVyeSBmb3IgcGxhbnRpbmcgYW5kIHNlZWRpbmcjMjEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTYuMDEuMDAjUGxhbnRlcnMjMjEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTYuMDIuMDAjVHJhbnNwbGFudGVycyMyMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMyMS4xMC4xNi4wMy4wMCNHcmFpbiBkcmlsbHMjMjEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTYuMDQuMDAjU2VlZCBkcmlsbHMjMjEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTYuMDUuMDAjU2VlZCB0cmVhdGluZyBlcXVpcG1lbnQjMjEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTYuMDYuMDAjSG9sZSBkaWdnZXJzIzIxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE3LjAwLjAwI0FncmljdWx0dXJhbCBtYWNoaW5lcnkgZm9yIGhhcnZlc3RpbmcjMjEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTcuMDEuMDAjTW93ZXJzIzIxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE3LjAyLjAwI0hheW1ha2luZyBtYWNoaW5lcnkjMjEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTcuMDMuMDAjSGFydmVzdGVycyMyMS4xMC4xNy4wMC4wMAotdW5zcHNjNyMyMS4xMC4xNy4wNC4wMCNDb21iaW5lIGhhcnZlc3RlcnMjMjEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTcuMDUuMDAjVGhyZXNoaW5nIG1hY2hpbmVzIzIxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE4LjAwLjAwI0Rpc3BlcnNpbmcgYW5kIHNwcmF5aW5nIGFwcGxpYW5jZXMgZm9yIGFncmljdWx0dXJlIzIxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzIxLjEwLjE4LjAxLjAwI1NwcmF5ZXJzIzIxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE4LjAyLjAwI0R1c3RlcnMjMjEuMTAuMTguMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTguMDMuMDAjV2F0ZXIgc3ByaW5rbGVycyMyMS4xMC4xOC4wMC4wMAotdW5zcHNjNyMyMS4xMC4xOC4wNC4wMCNGZXJ0aWxpemVyIHNwcmVhZGVycyBvciBkaXN0cmlidXRvcnMjMjEuMTAuMTguMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTguMDUuMDAjRm9nIG9yIG1pc3QgZ2VuZXJhdG9ycyMyMS4xMC4xOC4wMC4wMAotdW5zcHNjNyMyMS4xMC4xOC4wNi4wMCNDb21wb3N0ZXIjMjEuMTAuMTguMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTguMDcuMDAjUG9sbGluYXRpb24gZXF1aXBtZW50IG9yIHN1cHBsaWVzIzIxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE4LjA4LjAwI0Zyb3N0IHByb3RlY3Rpb24gZXF1aXBtZW50IzIxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE5LjAwLjAwI1BvdWx0cnkgYW5kIGxpdmVzdG9jayBlcXVpcG1lbnQjMjEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTkuMDEuMDAjTWlsa2luZyBtYWNoaW5lcyMyMS4xMC4xOS4wMC4wMAotdW5zcHNjNyMyMS4xMC4xOS4wMi4wMCNBbmltYWwgaHVzYmFuZHJ5IGVxdWlwbWVudCMyMS4xMC4xOS4wMC4wMAotdW5zcHNjNyMyMS4xMC4xOS4wMy4wMCNJbmN1YmF0b3JzIG9yIGJyb29kZXJzIGZvciBwb3VsdHJ5IzIxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE5LjA0LjAwI0ZlZWQgbWl4ZXJzIzIxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE5LjA1LjAwI0xpdmVzdG9jayBpZGVudGlmaWNhdGlvbiBlcXVpcG1lbnQjMjEuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTkuMDYuMDAjRWdnIGluc3BlY3Rpb24gb3IgY29sbGVjdGluZyBlcXVpcG1lbnQjMjEuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMTkuMDcuMDAjQW5pbWFsIHdhdGVyaW5nIG1hY2hpbmVzIzIxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzIxLjEwLjE5LjA4LjAwI01pbGsgY29vbGluZyB0YW5rcyMyMS4xMC4xOS4wMC4wMAotdW5zcHNjNyMyMS4xMC4xOS4wOS4wMCNBbmltYWwgc2hlYXJpbmcgb3IgY2xpcHBpbmcgZXF1aXBtZW50IzIxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzIxLjEwLjIwLjAwLjAwI0FncmljdWx0dXJhbCBtYWNoaW5lcnkgZm9yIGNsZWFuaW5nIGFuZCBzb3J0aW5nIGFuZCBncmFkaW5nIzIxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzIxLjEwLjIwLjAxLjAwI0NsZWFuaW5nIG1hY2hpbmVzIGZvciBzZWVkIG9yIGdyYWluIG9yIGRyaWVkIGxlZ3VtaW5vdXMgdmVnZXRhYmxlcyMyMS4xMC4yMC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMC4wMi4wMCNTb3J0aW5nIG1hY2hpbmVzIGZvciBzZWVkIG9yIGdyYWluIG9yIGRyaWVkIGxlZ3VtaW5vdXMgdmVnZXRhYmxlcyMyMS4xMC4yMC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMC4wMy4wMCNHcmFkaW5nIG1hY2hpbmVzIGZvciBzZWVkIG9yIGdyYWluIG9yIGRyaWVkIGxlZ3VtaW5vdXMgdmVnZXRhYmxlcyMyMS4xMC4yMC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMC4wNC4wMCNSaWNlIGNsZWFuaW5nIG9yIGh1bGxpbmcgZXF1aXBtZW50IzIxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzIxLjEwLjIwLjA1LjAwI0dyaW5kaW5nIG1pbGxzIzIxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzIxLjEwLjIwLjA2LjAwI0hhbW1lciBtaWxscyMyMS4xMC4yMC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMS4wMC4wMCNBZ3JpY3VsdHVyYWwgcHJvY2Vzc2luZyBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCMyMS4xMC4wMC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMS4wMS4wMCNBZ3JpY3VsdHVyYWwgYnJpcXVldHRpbmcgb3IgcGVsdGluZyBtYWNoaW5lcyMyMS4xMC4yMS4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMi4wMC4wMCNGb3Jlc3RyeSBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCMyMS4xMC4wMC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMi4wMS4wMCNEZWNvcnRpY2F0b3JzIzIxLjEwLjIyLjAwLjAwCi11bnNwc2M3IzIxLjEwLjIyLjAyLjAwI0x1bWJlcmluZyBlcXVpcG1lbnQjMjEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMjIuMDMuMDAjUmVmb3Jlc3RhdGlvbiBlcXVpcG1lbnQjMjEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMjIuMDQuMDAjRm9yZXN0cnkgc2F3cyMyMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMi4wNS4wMCNGb3Jlc3RyeSBza2lkZGVycyMyMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMi4wNi4wMCNGb3Jlc3RyeSBpbmNyZW1lbnQgYm9yZXJzIzIxLjEwLjIyLjAwLjAwCi11bnNwc2M3IzIxLjEwLjIyLjA3LjAwI0ZvcmVzdHJ5IGlwc29tZXRlciMyMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMy4wMC4wMCNHcmVlbmhvdXNlIGVxdWlwbWVudCMyMS4xMC4wMC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMy4wMS4wMCNHcmVlbmhvdXNlIGlycmlnYXRpb24gZXF1aXBtZW50IzIxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzIxLjEwLjIzLjAyLjAwI0dyZWVuaG91c2UgcG90cyMyMS4xMC4yMy4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMy4wMy4wMCNHcmVlbmhvdXNlIHZlbnRpbGF0aW9uIGVxdWlwbWVudCMyMS4xMC4yMy4wMC4wMAotdW5zcHNjNyMyMS4xMC4yMy4wNC4wMCNHcmVlbmhvdXNlIGlzb2xhdGlvbiBlcXVpcG1lbnQjMjEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMjQuMDAuMDAjSW5zZWN0IGVxdWlwbWVudCMyMS4xMC4wMC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yNC4wMS4wMCNCZWVrZWVwaW5nIGVxdWlwbWVudCMyMS4xMC4yNC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yNC4wMi4wMCNTaWxrd29ybSBlcXVpcG1lbnQjMjEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjMjEuMTAuMjQuMDMuMDAjQnV0dGVyZmx5IGJyZWVkaW5nIGVxdWlwbWVudCMyMS4xMC4yNC4wMC4wMAotdW5zcHNjNyMyMS4xMC4yNC4wNC4wMCNCZWV0bGUgYnJlZWRpbmcgZXF1aXBtZW50IzIxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzIxLjExLjAwLjAwLjAwI0Zpc2hpbmcgYW5kIGFxdWFjdWx0dXJlIGVxdWlwbWVudCMyMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMyMS4xMS4xNS4wMC4wMCNDb21tZXJjaWFsIGZpc2hpbmcgZXF1aXBtZW50IzIxLjExLjAwLjAwLjAwCi11bnNwc2M3IzIxLjExLjE1LjAxLjAwI0NvbW1lcmNpYWwgZmlzaCBob29rcyMyMS4xMS4xNS4wMC4wMAotdW5zcHNjNyMyMS4xMS4xNS4wMi4wMCNDb21tZXJjaWFsIGZpc2hpbmcgcmVlbHMjMjEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjEuMTEuMTUuMDMuMDAjQ29tbWVyY2lhbCBmaXNoaW5nIGxpbmUgdGFja2xlIzIxLjExLjE1LjAwLjAwCi11bnNwc2M3IzIxLjExLjE1LjA0LjAwI0NvbW1lcmNpYWwgZmlzaGluZyBuZXRzIzIxLjExLjE1LjAwLjAwCi11bnNwc2M3IzIxLjExLjE1LjA2LjAwI0NvbW1lcmNpYWwgZmlzaGluZyBmbG9hdHMjMjEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjEuMTEuMTUuMDcuMDAjQ29tbWVyY2lhbCBzaW5rZXJzIG9yIHdlaWdodHMjMjEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjEuMTEuMTUuMDguMDAjRmlzaGluZyBuZXQgaGF1bGVycyMyMS4xMS4xNS4wMC4wMAotdW5zcHNjNyMyMS4xMS4xNi4wMC4wMCNBcXVhY3VsdHVyZSBlcXVpcG1lbnQjMjEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjEuMTEuMTYuMDEuMDAjTWFyaW5lIGhhdGNoZXJ5IGVxdWlwbWVudCMyMS4xMS4xNi4wMC4wMAotdW5zcHNjNyMyMS4xMS4xNi4wMi4wMCNQaXNjaWN1bHR1cmUgc3VwcGxpZXMjMjEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjIuMDAuMDAuMDAuMDAjQnVpbGRpbmcgYW5kIENvbnN0cnVjdGlvbiBNYWNoaW5lcnkgYW5kIEFjY2Vzc29yaWVzIzIyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzIyLjEwLjAwLjAwLjAwI0hlYXZ5IGNvbnN0cnVjdGlvbiBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCMyMi4wMC4wMC4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4wMC4wMCNFYXJ0aCBtb3ZpbmcgbWFjaGluZXJ5IzIyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjAxLjAwI0Zyb250IGVuZCBsb2FkZXJzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjAyLjAwI0dyYWRlcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMDMuMDAjTG9hZGVycyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4wNC4wMCNQaWxlIGRyaXZlcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMDUuMDAjUm9sbGVycyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4wNi4wMCNFYXJ0aG1vdmluZyBzY3JhcGVycyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4wNy4wMCNUYW1wZXJzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjA4LjAwI1RyZW5jaGluZyBtYWNoaW5lcyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4wOS4wMCNCYWNraG9lcyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4xMC4wMCNCdWxsZG96ZXJzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjExLjAwI0NvbXBhY3RvcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMTMuMDAjRHJhZ2xpbmVzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjE0LjAwI0RyZWRnZXJzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjE1LjAwI0V4Y2F2YXRvcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMTYuMDAjRGl0Y2hlcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMTcuMDAjQ2hlcnJ5IHBpY2tlcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMTguMDAjRWxldmF0aW5nIHNjcmFwZXJzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjE5LjAwI1R3aW4gZW5naW5lIG9wZW4gYm93bCBzY3JhcGVycyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4yMC4wMCNUd2luIGVuZ2luZSBlbGV2YXRpbmcgc2NyYXBlcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMjEuMDAjUHVsbGVkIHNjcmFwZXJzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjIyLjAwI1RyYWNrIGJ1bGxkb3plcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMjMuMDAjV2hlZWwgYnVsbGRvemVycyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4yNC4wMCNNb2JpbGUgZXhjYXZhdG9ycyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4yNS4wMCNXaGVlbCBleGNhdmF0b3JzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjI2LjAwI1RyYWNrIGV4Y2F2YXRvcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMjcuMDAjSW50ZWdyYXRlZCB0b29sIGNhcnJpZXJzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjI4LjAwI1doZWVsIGxvYWRlcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMjkuMDAjU2tpZCBzdGVlciBsb2FkZXJzIzIyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE1LjMwLjAwI09wZW4gYm93bCBzY3JhcGVycyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNS4zMS4wMCNTbm93IGJsb3dlcnMjMjIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTUuMzIuMDAjVHJhY2sgbG9hZGVycyMyMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNi4wMC4wMCNQYXZpbmcgZXF1aXBtZW50IzIyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzIyLjEwLjE2LjAyLjAwI1JhbW1pbmcgZXF1aXBtZW50IzIyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE2LjAzLjAwI1JvYWQgd2lkZW5lcnMjMjIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTYuMDQuMDAjVmlicmF0b3J5IHBsYXRlcyMyMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNi4wNS4wMCNBc3BoYWx0IGZpbmlzaGVycyMyMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNi4wNi4wMCNDaGlwIFNwcmVhZGVycyMyMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNy4wMC4wMCNIZWF2eSBlcXVpcG1lbnQgY29tcG9uZW50cyMyMi4xMC4wMC4wMC4wMAotdW5zcHNjNyMyMi4xMC4xNy4wMS4wMCNFYXJ0aG1vdmluZyBzaG92ZWxzIzIyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE3LjAyLjAwI0VhcnRobW92aW5nIGJ1Y2tldHMjMjIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTcuMDMuMDAjRWFydGhtb3ZpbmcgYmxhZGVzIzIyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE3LjA0LjAwI1NjYXJpZmllcnMjMjIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTguMDAuMDAjQWVyaWFsIGxpZnRzIzIyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzIyLjEwLjE4LjAxLjAwI01hbmxpZnQgb3IgcGVyc29ubmVsIGxpZnQjMjIuMTAuMTguMDAuMDAKLXVuc3BzYzcjMjIuMTAuMTguMDIuMDAjUGxhdGZvcm0gbGlmdCMyMi4xMC4xOC4wMC4wMAotdW5zcHNjNyMyMi4xMC4xOC4wMy4wMCNBcnRpY3VsYXRpbmcgYm9vbSBsaWZ0IzIyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzIyLjEwLjE4LjA0LjAwI1RlbGVzY29waW5nIGJvb20gbGlmdCMyMi4xMC4xOC4wMC4wMAotdW5zcHNjNyMyMy4wMC4wMC4wMC4wMCNJbmR1c3RyaWFsIE1hbnVmYWN0dXJpbmcgYW5kIFByb2Nlc3NpbmcgTWFjaGluZXJ5IGFuZCBBY2Nlc3NvcmllcyMyMy4wMC4wMC4wMC4wMAotdW5zcHNjNyMyMy4xMC4wMC4wMC4wMCNSYXcgbWF0ZXJpYWxzIHByb2Nlc3NpbmcgbWFjaGluZXJ5IzIzLjAwLjAwLjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjAwLjAwI01hY2hpbmVyeSBmb3Igd29ya2luZyB3b29kIGFuZCBzdG9uZSBhbmQgY2VyYW1pYyBhbmQgdGhlIGxpa2UjMjMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTAuMTUuMDEuMDAjQ29waW5nIG1hY2hpbmVzIzIzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjAyLjAwI0RyaWxsaW5nIG1hY2hpbmVzIzIzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjAzLjAwI0Jyb2FjaGluZyBtYWNoaW5lcyMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMC4xNS4wNC4wMCNCZW5kaW5nIG1hY2hpbmVzIzIzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjA1LjAwI0JvcmluZyBtYWNoaW5lcyMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMC4xNS4wNi4wMCNHcmluZGluZyBtYWNoaW5lcyMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMC4xNS4wNy4wMCNNb2xkaW5nIG1hY2hpbmVzIzIzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjA4LjAwI0N1dHRpbmcgbWFjaGluZXMjMjMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTAuMTUuMDkuMDAjU2FuZGluZyBtYWNoaW5lcyMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMC4xNS4xMC4wMCNQb2xpc2hpbmcgbWFjaGluZXMjMjMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTAuMTUuMTEuMDAjVHVybmluZyBtYWNoaW5lcyMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMC4xNS4xMi4wMCNTYXdpbmcgbWFjaGluZXMjMjMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTAuMTUuMTMuMDAjTWlsbGluZyBtYWNoaW5lcyMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMC4xNS4xNC4wMCNQbGFuaW5nIG1hY2hpbmVzIzIzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjE1LjAwI0VuZ3JhdmluZyBtYWNoaW5lcyMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMC4xNS4xNi4wMCNHbGFzcyBiZWFkIHBlZW5lciBtYWNoaW5lcyMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMC4xNS4xNy4wMCNHcml0IGJsYXN0IG1hY2hpbmVzIzIzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjE4LjAwI1Nob3QgcGVlbiBtYWNoaW5lIzIzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjE5LjAwI1JvYm90IG1hY2hpbmVzIzIzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjIwLjAwI1JhbSBlbGVjdHJvIGRpc2NoYXJnZSBtYWNoaW5lcyMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMC4xNS4yMS4wMCNXaXJlIGNhdGhvZGUgZWxlY3Ryb2RlIGRpc2NoYXJnZSBtYWNoaW5lIzIzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEwLjE1LjIyLjAwI0NoaXAgYnJlYWtlciMyMy4xMC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMS4wMC4wMC4wMCNQZXRyb2xldW0gcHJvY2Vzc2luZyBtYWNoaW5lcnkjMjMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTEuMTUuMDAuMDAjUGV0cm9sZXVtIGRpc3RpbGxpbmcgYW5kIHByb2Nlc3NpbmcgbWFjaGluZXJ5IGFuZCBlcXVpcG1lbnQjMjMuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTEuMTUuMDEuMDAjRGlzdGlsbGF0ZSBoeWRyb3Byb2Nlc3NpbmcgZXF1aXBtZW50IzIzLjExLjE1LjAwLjAwCi11bnNwc2M3IzIzLjExLjE1LjAyLjAwI0NydWRlIGRpc3RpbGxpbmcgbWFjaGluZXJ5IzIzLjExLjE1LjAwLjAwCi11bnNwc2M3IzIzLjExLjE1LjAzLjAwI0NhdGFseXRpYyBjcmFja2luZyBlcXVpcG1lbnQjMjMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTEuMTUuMDQuMDAjSHlkcm9jcmFja2luZyBlcXVpcG1lbnQjMjMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTEuMTUuMDUuMDAjSXNvbWVyaXphdGlvbiBtYWNoaW5lcnkjMjMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTEuMTUuMDYuMDAjQ29raW5nIG1hY2hpbmVyeSMyMy4xMS4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMS4xNS4wNy4wMCNHYXMgcmVjb3ZlcnkgbWFjaGluZXJ5IzIzLjExLjE1LjAwLjAwCi11bnNwc2M3IzIzLjExLjE2LjAwLjAwI0h5ZHJvdHJlYXRpbmcgbWFjaGluZXJ5IzIzLjExLjAwLjAwLjAwCi11bnNwc2M3IzIzLjExLjE2LjAxLjAwI05hcHRoYSBoeWRyb3RyZWF0ZXIjMjMuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTEuMTYuMDIuMDAjRGlzdGlsbGF0ZSBoeWRyb3RyZWF0ZXIjMjMuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTEuMTYuMDMuMDAjQ2F0YWx5dGljIGZlZWQgaHlkcm90cmVhdGVyIzIzLjExLjE2LjAwLjAwCi11bnNwc2M3IzIzLjExLjE2LjA0LjAwI0x1YmUgaHlkcm90cmVhdGVyIzIzLjExLjE2LjAwLjAwCi11bnNwc2M3IzIzLjExLjE2LjA1LjAwI0dhc29saW5lIGh5ZHJvdHJlYXRlciMyMy4xMS4xNi4wMC4wMAotdW5zcHNjNyMyMy4xMS4xNi4wNi4wMCNSZXNpZCBoeWRyb3RyZWF0ZXIjMjMuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMDAuMDAuMDAjVGV4dGlsZSBhbmQgZmFicmljIG1hY2hpbmVyeSBhbmQgYWNjZXNzb3JpZXMjMjMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTUuMDAuMDAjVGV4dGlsZSBwcm9jZXNzaW5nIG1hY2hpbmVyeSBhbmQgYWNjZXNzb3JpZXMjMjMuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTUuMDEuMDAjRW1icm9pZGVyeSBtYWtpbmcgbWFjaGluZXMjMjMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTUuMDIuMDAjRmVsdGluZyBtYWNoaW5lcyMyMy4xMi4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMi4xNS4wMy4wMCNXaW5kaW5nIG9yIHJlZWxpbmcgb3Igc3Bvb2xpbmcgbWFjaGluZXMjMjMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTUuMDQuMDAjVHdpc3RpbmcgbWFjaGluZXMjMjMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTUuMDUuMDAjU3RpdGNoIGJvbmRpbmcgbWFjaGluZXMjMjMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTUuMDYuMDAjS25pdHRpbmcgbWFjaGluZXMjMjMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTUuMDcuMDAjV2VhdmluZyBtYWNoaW5lcyMyMy4xMi4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMi4xNS4wOC4wMCNGaW5pc2hpbmcgbWFjaGluZXMjMjMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTUuMDkuMDAjU3Bpbm5pbmcgbWFjaGluZXMjMjMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTUuMTAuMDAjTGFjZSBtYWtpbmcgbWFjaGluZXMjMjMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTYuMDAuMDAjVGV4dGlsZSB3b3JraW5nIG1hY2hpbmVyeSBhbmQgZXF1aXBtZW50IGFuZCBhY2Nlc3NvcmllcyMyMy4xMi4wMC4wMC4wMAotdW5zcHNjNyMyMy4xMi4xNi4wMS4wMCNCdXR0b24gY292ZXJpbmcgbWFjaGluZXMjMjMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTYuMDIuMDAjQnV0dG9uIHNld2luZyBtYWNoaW5lcyMyMy4xMi4xNi4wMC4wMAotdW5zcHNjNyMyMy4xMi4xNi4wMy4wMCNCdXR0b25ob2xlIG1hY2hpbmVzIzIzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzIzLjEyLjE2LjA0LjAwI0Nsb3RoIGN1dHRpbmcgbWFjaGluZXMjMjMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTYuMDUuMDAjQ3VzaGlvbiBmaWxsaW5nIG1hY2hpbmVzIzIzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzIzLjEyLjE2LjA2LjAwI0ZvbGRpbmcgb3IgcmV3aW5kaW5nIG1hY2hpbmVzIzIzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzIzLjEyLjE2LjA3LjAwI0JsZWFjaGluZyBtYWNoaW5lcyMyMy4xMi4xNi4wMC4wMAotdW5zcHNjNyMyMy4xMi4xNi4wOC4wMCNGYWJyaWMgb3IgY2xvdGggZm9sZGluZyBtYWNoaW5lcyMyMy4xMi4xNi4wMC4wMAotdW5zcHNjNyMyMy4xMi4xNi4wOS4wMCNSZWVsaW5nIG9yIHVucmVlbGluZyBtYWNoaW5lcyMyMy4xMi4xNi4wMC4wMAotdW5zcHNjNyMyMy4xMi4xNi4xMC4wMCNEeWVpbmcgbWFjaGluZXMjMjMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTYuMTEuMDAjQ3V0dGluZyBvciBwaW5raW5nIG1hY2hpbmVzIzIzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzIzLjEyLjE2LjEyLjAwI1Nld2luZyBtYWNoaW5lIG5lZWRsZXMjMjMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTIuMTYuMTMuMDAjU2lsayBwcm9jZXNzaW5nIG1hY2hpbmVzIzIzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzIzLjEyLjE2LjE0LjAwI1Nld2luZyBtYWNoaW5lcyMyMy4xMi4xNi4wMC4wMAotdW5zcHNjNyMyMy4xMi4xNi4xNS4wMCNGYWJyaWMgY3V0dGluZyB0YWJsZXMjMjMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTMuMDAuMDAuMDAjTGFwaWRhcnkgbWFjaGluZXJ5IGFuZCBlcXVpcG1lbnQjMjMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTMuMTUuMDAuMDAjR3JpbmRpbmcgYW5kIHNhbmRpbmcgYW5kIHBvbGlzaGluZyBlcXVpcG1lbnQgYW5kIHN1cHBsaWVzIzIzLjEzLjAwLjAwLjAwCi11bnNwc2M3IzIzLjEzLjE1LjAxLjAwI0FicmFzaXZlIGNvbXBvdW5kcyMyMy4xMy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMy4xNS4wMi4wMCNGZWx0IHdoZWVscyMyMy4xMy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMy4xNS4wMy4wMCNHcmluZGluZyB3aGVlbHMjMjMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTMuMTUuMDQuMDAjUG9saXNoaW5nIGNvbXBvdW5kcyMyMy4xMy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMy4xNS4wNS4wMCNQb2xpc2hpbmcgaGVhZHMjMjMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTMuMTUuMDYuMDAjUG9saXNoaW5nIHdoZWVscyMyMy4xMy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMy4xNS4wNy4wMCNTYW5kaW5nIGNsb3RocyMyMy4xMy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMy4xNS4wOC4wMCNTYW5kaW5nIGRydW1zIzIzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEzLjE1LjA5LjAwI1R1bWJsZXJzIG9yIHBvbGlzaGVycyMyMy4xMy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMy4xNS4xMC4wMCNUdW1ibGluZyBzdXBwbGllcyBvciBtZWRpYSMyMy4xMy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xMy4xNS4xMS4wMCNXYXRlciBzd2l2ZWxzIzIzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEzLjE1LjEyLjAwI1dhdGVyIHRyYXlzIzIzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEzLjE1LjEzLjAwI1NhbmRpbmcgYmxvY2tzIzIzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEzLjE1LjE0LjAwI01vdW50ZWQgc3RvbmVzIzIzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEzLjE1LjE1LjAwI0dyaW5kaW5nIHdoZWVsIGRyZXNzZXJzIzIzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzIzLjEzLjE2LjAwLjAwI0ZhY2V0aW5nIGVxdWlwbWVudCBhbmQgYWNjZXNzb3JpZXMjMjMuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTMuMTYuMDEuMDAjRmFjZXRpbmcgYWNjZXNzb3JpZXMjMjMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTMuMTYuMDIuMDAjRmFjZXRpbmcgbWFjaGluZXMjMjMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTMuMTYuMDMuMDAjRmFjZXRpbmcgbGFwcyMyMy4xMy4xNi4wMC4wMAotdW5zcHNjNyMyMy4xMy4xNi4wNC4wMCNGYWNldGluZyBzYXdzIzIzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzIzLjEzLjE3LjAwLjAwI0NhYmJpbmcgZXF1aXBtZW50IzIzLjEzLjAwLjAwLjAwCi11bnNwc2M3IzIzLjEzLjE3LjAxLjAwI0NhYmJpbmcgYWNjZXNzb3JpZXMjMjMuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMjMuMTMuMTcuMDIuMDAjQ2FiYmluZyBiZWx0cyMyMy4xMy4xNy4wMC4wMAotdW5zcHNjNyMyMy4xMy4xNy4wMy4wMCNDYWJiaW5nIGRpc2NzIzIzLjEzLjE3LjAwLjAwCi11bnNwc2M3IzIzLjEzLjE3LjA0LjAwI0NhYm9jaG9uIG1hY2hpbmVzIzIzLjEzLjE3LjAwLjAwCi11bnNwc2M3IzIzLjE0LjAwLjAwLjAwI0xlYXRoZXJ3b3JraW5nIHJlcGFpcmluZyBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCMyMy4wMC4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNC4xNi4wMC4wMCNMZWF0aGVyIHByZXBhcmluZyBtYWNoaW5lcnkgYW5kIGFjY2Vzc29yaWVzIzIzLjE0LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE0LjE2LjAxLjAwI0xlYXRoZXIgZmxlc2hpbmcgbWFjaGluZXMjMjMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTQuMTYuMDIuMDAjTGVhdGhlciB0YW5uaW5nIG1hY2hpbmVzIzIzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE0LjE2LjAzLjAwI0xlYXRoZXIgZHllaW5nIG1hY2hpbmVzIzIzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE0LjE2LjA0LjAwI0xlYXRoZXIgZGVncmVhc2luZyBtYWNoaW5lcyMyMy4xNC4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNC4xNi4wNS4wMCNMZWF0aGVyIHByZXNzZXMjMjMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTQuMTcuMDAuMDAjTGVhdGhlciB3b3JraW5nIGFuZCByZXBhaXJpbmcgbWFjaGluZXJ5IGFuZCBhY2Nlc3NvcmllcyMyMy4xNC4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNC4xNy4wMS4wMCNMZWF0aGVyIGN1dHRpbmcgbWFjaGluZXMjMjMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMjMuMTQuMTcuMDIuMDAjTGVhdGhlciByaXZldGluZyBtYWNoaW5lcyMyMy4xNC4xNy4wMC4wMAotdW5zcHNjNyMyMy4xNC4xNy4wMy4wMCNMZWF0aGVyIG5haWxpbmcgbWFjaGluZXMjMjMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMjMuMTQuMTcuMDQuMDAjTGVhdGhlcndvcmtpbmcgd29ya3Nob3AgZXF1aXBtZW50IzIzLjE0LjE3LjAwLjAwCi11bnNwc2M3IzIzLjE1LjAwLjAwLjAwI0luZHVzdHJpYWwgcHJvY2VzcyBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCBhbmQgc3VwcGxpZXMjMjMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTUuMDAuMDAjUnViYmVyIGFuZCBwbGFzdGljIHByb2Nlc3NpbmcgbWFjaGluZXJ5IGFuZCBlcXVpcG1lbnQgYW5kIHN1cHBsaWVzIzIzLjE1LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjE1LjAxLjAwI0Jsb3cgbW9sZGluZyBtYWNoaW5lcyMyMy4xNS4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNS4wMi4wMCNDb2F0aW5nIG1hY2hpbmVzIzIzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE1LjAzLjAwI0V4dHJ1ZGVycyMyMy4xNS4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNS4wNC4wMCNJbmplY3Rpb24gbW9sZGluZyBtYWNoaW5lcyMyMy4xNS4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNS4wNS4wMCNSdWJiZXIgb3IgcGxhc3RpYyBtaXhlcnMjMjMuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTUuMDYuMDAjUnViYmVyIG9yIHBsYXN0aWMgcHJlc3NlcyMyMy4xNS4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNS4wNy4wMCNUaGVybW8gZm9ybWluZyBtYWNoaW5lcyMyMy4xNS4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNS4wOC4wMCNWYWN1dW0gbW9sZGluZyBtYWNoaW5lcyMyMy4xNS4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNS4wOS4wMCNWdWxjYW5pemluZyBtYWNoaW5lcyMyMy4xNS4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNS4xMC4wMCNQbGFzdGljIGN1dHRpbmcgbWFjaGluZXJ5IzIzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE1LjExLjAwI1BsYXN0aWMgZ3JpbmRpbmcgbWFjaGluZXJ5IzIzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE1LjEyLjAwI1J1YmJlciBvciBwbGFzdGljIG1pbGxzIzIzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE1LjEzLjAwI1J1YmJlciBvciBwbGFzdGljIGV4dHJ1c2lvbiBkaWVzIzIzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE1LjE0LjAwI1BsYXN0aWMgaW5qZWN0aW9uIG1vbGRzIzIzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE1LjE1LjAwI1RoZXJtb2Zvcm1pbmcgbW9sZHMjMjMuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTUuMTYuMDAjRWplY3RvciBwaW5zIzIzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE2LjAwLjAwI0NlbWVudCBhbmQgY2VyYW1pY3MgYW5kIGdsYXNzIGluZHVzdHJ5IG1hY2hpbmVyeSBhbmQgZXF1aXBtZW50IGFuZCBzdXBwbGllcyMyMy4xNS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNi4wMS4wMCNCbG93ZXJzIG9yIGRyeWVycyMyMy4xNS4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNi4wMi4wMCNDcnVzaGVycyMyMy4xNS4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNi4wMy4wMCNGdXNpb24gd2VsZGluZyBvciBnbGFzcyBkcmF3aW5nIG1hY2hpbmVzIzIzLjE1LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE2LjA0LjAwI0dyaW5kaW5nIG9yIHBvbGlzaGluZyBtYWNoaW5lcyMyMy4xNS4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNi4wNS4wMCNNaXhpbmcgb3Iga25lYWRpbmcgbWFjaGluZXMjMjMuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTYuMDYuMDAjQ2VtZW50IG9yIGNlcmFtaWMgb3IgZ2xhc3Mgb3Igc2ltaWxhciBtYXRlcmlhbCBtb2xkaW5nIG1hY2hpbmVzIzIzLjE1LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE2LjA3LjAwI1ByZXNzZXMjMjMuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTYuMDguMDAjU2lmdGVycyMyMy4xNS4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNy4wMC4wMCNPcHRpY2FsIGluZHVzdHJ5IG1hY2hpbmVyeSBhbmQgZXF1aXBtZW50IGFuZCBzdXBwbGllcyMyMy4xNS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNy4wMS4wMCNMZW5zIGdyaW5kaW5nIG1hY2hpbmVzIzIzLjE1LjE3LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE3LjAyLjAwI0xlbnMgbWVhc3VyaW5nIGVxdWlwbWVudCMyMy4xNS4xNy4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNy4wMy4wMCNMZW5zIHBvbGlzaGluZyBlcXVpcG1lbnQjMjMuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTcuMDQuMDAjTGVucyB0ZXN0aW5nIGVxdWlwbWVudCMyMy4xNS4xNy4wMC4wMAotdW5zcHNjNyMyMy4xNS4xNy4wNS4wMCNPcHRpY2FsIHZhY3V1bSBjb2F0aW5nIGVxdWlwbWVudCMyMy4xNS4xNy4wMC4wMAotdW5zcHNjNyMyMy4xNS4xOC4wMC4wMCNQaGFybWFjZXV0aWNhbCBpbmR1c3RyeSBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCBhbmQgc3VwcGxpZXMjMjMuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTguMDEuMDAjQW1wb3VsZSBmaWxsaW5nIGVxdWlwbWVudCMyMy4xNS4xOC4wMC4wMAotdW5zcHNjNyMyMy4xNS4xOC4wMi4wMCNCb3R0bGUgY2FwcGVycyBvciBjb3R0b24gaW5zZXJ0ZXJzIG9yIHNhZmV0eSBzZWFsIGFwcGxpY2F0b3JzIzIzLjE1LjE4LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE4LjAzLjAwI0NhcHN1bGF0aW5nIG1hY2hpbmVzIzIzLjE1LjE4LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE4LjA0LjAwI1JlYWN0b3JzIG9yIGZlcm1lbnRlcnMgb3IgZGlnZXN0ZXJzIzIzLjE1LjE4LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE4LjA1LjAwI0ZpbGxpbmcgb3Igc2VhbGluZyBhdWdlciBkb3NlIG1hY2hpbmVzIzIzLjE1LjE4LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE4LjA2LjAwI1BoYXJtYWNldXRpY2FsIGZpbHRlcnMgb3IgdWx0cmEgZmlsdGVycyMyMy4xNS4xOC4wMC4wMAotdW5zcHNjNyMyMy4xNS4xOC4wNy4wMCNGcmVlemVkcnllcnMgb3IgbHlvcGhpbHplcnMjMjMuMTUuMTguMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTguMDguMDAjUGhhcm1hY2V1dGljYWwgZ3JhbnVsYXRvcnMjMjMuMTUuMTguMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTguMDkuMDAjUGhhbWFjZXV0aWNhbCBzaWV2ZSBvciBzY3JlZW5pbmcgbWFjaGluZXMjMjMuMTUuMTguMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTguMTAuMDAjU3RlcmlsZSBvciBhc2VwdGljIHByb2Nlc3Npbmcgb3IgZmlsbGluZyBtYWNoaW5lcyMyMy4xNS4xOC4wMC4wMAotdW5zcHNjNyMyMy4xNS4xOC4xMS4wMCNUYWJsZXQgb3IgY2Fwc3VsZSB0ZXN0aW5nIG1hY2hpbmVzIzIzLjE1LjE4LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE4LjEyLjAwI1RhYmxldCBjb3VudGVycyMyMy4xNS4xOC4wMC4wMAotdW5zcHNjNyMyMy4xNS4xOC4xMy4wMCNUYWJsZXR0aW5nIG1hY2hpbmVzIzIzLjE1LjE4LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE4LjE0LjAwI1ZhY2NpbmUgcHJvZHVjdGlvbiBlcXVpcG1lbnQjMjMuMTUuMTguMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTguMTUuMDAjVmVzc2VsIG1peGVycyMyMy4xNS4xOC4wMC4wMAotdW5zcHNjNyMyMy4xNS4xOS4wMC4wMCNQYXBlciBtYWtpbmcgYW5kIHBhcGVyIHByb2Nlc3NpbmcgbWFjaGluZXJ5IGFuZCBlcXVpcG1lbnQgYW5kIHN1cHBsaWVzIzIzLjE1LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjE5LjAxLjAwI0N1dHRlcnMjMjMuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTkuMDIuMDAjU2xpdHRlcnMjMjMuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTkuMDMuMDAjV2FzaGluZyBvciBkZXdhdGVyaW5nIG1hY2hpbmVzIzIzLjE1LjE5LjAwLjAwCi11bnNwc2M3IzIzLjE1LjE5LjA0LjAwI1dpbmRlcnMjMjMuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMTkuMDUuMDAjV29vZCBwdWxwIG9yIGRpc3NvbHZlciBtYWNoaW5lcyMyMy4xNS4xOS4wMC4wMAotdW5zcHNjNyMyMy4xNS4xOS4wNi4wMCNDYWxlbmRlcnMgZm9yIHBhcGVyIG9yIGNhcmRib2FyZCBtYWtpbmcjMjMuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMjAuMDAuMDAjV2ViIGhhbmRsaW5nIGFuZCBjb250cm9sIG1hY2hpbmVyeSBhbmQgZXF1aXBtZW50IGFuZCBzdXBwbGllcyMyMy4xNS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4yMC4wMS4wMCNDb3JvbmEgdHJlYXRlcnMjMjMuMTUuMjAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMjAuMDIuMDAjRmxhbWUgdHJlYXRlcnMjMjMuMTUuMjAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMjEuMDAuMDAjU2VwYXJhdGlvbiBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCMyMy4xNS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4yMS4wMS4wMCNWaWJyYXRvcnkgc2VwYXJhdGlvbiBlcXVpcG1lbnQgYW5kIHBhcnRzIGFuZCBzY3JlZW5zIzIzLjE1LjIxLjAwLjAwCi11bnNwc2M3IzIzLjE1LjIxLjAyLjAwI1N0YXRpb25hcnkgc2VwYXJhdGlvbiBlcXVpcG1lbnQgYW5kIHBhcnRzIGFuZCBzY3JlZW5zIzIzLjE1LjIxLjAwLjAwCi11bnNwc2M3IzIzLjE1LjIxLjAzLjAwI0FpciBjbGFzc2lmaWNhdGlvbiBlcXVpcG1lbnQgYW5kIHBhcnRzIGFuZCBzY3JlZW5zIzIzLjE1LjIxLjAwLjAwCi11bnNwc2M3IzIzLjE1LjIxLjA0LjAwI0NlbnRpZnVnYWwgc2VwYXJhdGlvbiBlcXVpcG1lbnQgb3IgcGFydHMgb3Igc2NyZWVucyMyMy4xNS4yMS4wMC4wMAotdW5zcHNjNyMyMy4xNS4yMi4wMC4wMCNNYW51ZmFjdHVyaW5nIHRhYmxlcyBhbmQgc3RhbmRzIzIzLjE1LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjIyLjAxLjAwI1JvdGFyeSB0YWJsZXMjMjMuMTUuMjIuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMjIuMDIuMDAjU3RhY2sgc3RhbmRzIzIzLjE1LjIyLjAwLjAwCi11bnNwc2M3IzIzLjE1LjIyLjAzLjAwI0VuZ2luZSBhbmQgY29tcG9uZW50IHRlc3Qgc3RhbmRzIzIzLjE1LjIyLjAwLjAwCi11bnNwc2M3IzIzLjE1LjIyLjA0LjAwI01hY2hpbmUgZ3VhcmRpbmcjMjMuMTUuMjIuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMjMuMDAuMDAjUm90YXJ5IHRhYmxlcyMyMy4xNS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4yNC4wMC4wMCNTdGFjayBzdGFuZHMjMjMuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMjUuMDAuMDAjRW5naW5lIGFuZCBjb21wb25lbnQgdGVzdCBzdGFuZHMjMjMuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMjYuMDAuMDAjTWFjaGluZSBndWFyZGluZyMyMy4xNS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4yNy4wMC4wMCNBaXIgY2xhc3NpZmljYXRpb24gZXF1aXBtZW50IGFuZCBwYXJ0cyBhbmQgc2NyZWVucyMyMy4xNS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4yOC4wMC4wMCNDZW50aWZ1Z2FsIHNlcGFyYXRpb24gZXF1aXBtZW50IG9yIHBhcnRzIG9yIHNjcmVlbnMjMjMuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMjkuMDAuMDAjUGFja2FnaW5nIG1hY2hpbmVyeSMyMy4xNS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4yOS4wMS4wMCNXcmFwcGluZyBtYWNoaW5lcnkjMjMuMTUuMjkuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMjkuMDIuMDAjRm9ybSBvciBmaWxsIG9yIHNlYWwgbWFjaGluZXJ5IzIzLjE1LjI5LjAwLjAwCi11bnNwc2M3IzIzLjE1LjI5LjAzLjAwI1BhY2thZ2luZyB2YWN1dW0jMjMuMTUuMjkuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMDAuMDAjSG9sZGluZyBhbmQgcG9zaXRpb25pbmcgYW5kIGd1aWRpbmcgc3lzdGVtcyBhbmQgZGV2aWNlcyMyMy4xNS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMC4wMS4wMCNDYWxpYnJhdGlvbiBqaWcjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMDIuMDAjR3VpZGUgamlnIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjAzLjAwI01hc3RlciBqaWcjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMDQuMDAjTmVlZGxlIGppZyMyMy4xNS4zMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMC4wNS4wMCNTaGFmdCBqaWcjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMDYuMDAjQ2hlY2tpbmcgamlnIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjA3LjAwI1NldHRpbmcgamlnIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjA4LjAwI0NhbWVyYSBqaWcjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMDkuMDAjUGlja3VwIGppZyMyMy4xNS4zMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMC4xMC4wMCNSZW1vdmFsIGppZyMyMy4xNS4zMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMC4xMS4wMCNOb3p6bGUgamlnIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjEyLjAwI1NsaWRpbmcgamlnIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjEzLjAwI0NlbnRlcmluZyBqaWcjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMTQuMDAjSW5zcGVjdGluZyBqaWcjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMTUuMDAjRmVlZGVyIGppZyMyMy4xNS4zMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMC4xNi4wMCNDbHV0Y2ggamlnIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjE3LjAwI0FsaWdubWVudCBqaWcjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMTguMDAjUG9zaXRpb25pbmcgamlnIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjE5LjAwI0xpZnRlciBwbGF0ZSMyMy4xNS4zMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMC4yMC4wMCNUYXBlIGd1aWRlIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjIxLjAwI1RhcGUgZmVlZCBqYXcjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMjIuMDAjUG93ZXIgZmVlZGVyIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjIzLjAwI0ZlZWRlciBoYXJuZXNzIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjI0LjAwI0ZlZWQgamF3IzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjI1LjAwI01lY2hhbmljYWwgZ3JpcHBlciMyMy4xNS4zMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMC4yNi4wMCNIb2xkZXIgamF3IzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMwLjI3LjAwI0phdyBhc3NlbWJseSMyMy4xNS4zMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMC4yOC4wMCNTdGF0aW9uYXJ5IGphdyMyMy4xNS4zMC4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMC4yOS4wMCNKaWcgYmxvY2sjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMzAuMDAjTGluZWFyIG1vdGlvbiBndWlkZXMjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMzEuMDAjTWVhc3VyaW5nIGppZ3MjMjMuMTUuMzAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzAuMzIuMDAjUmluZyBqaWdzIzIzLjE1LjMwLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMxLjAwLjAwI0luZHVzdHJpYWwgbWFjaGluZXJ5IGNvbXBvbmVudHMjMjMuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTUuMzEuMDEuMDAjUGl0Y2ggc3RvcHBlciMyMy4xNS4zMS4wMC4wMAotdW5zcHNjNyMyMy4xNS4zMS4wMi4wMCNQYXBlciBzdG9wcGVyIzIzLjE1LjMxLjAwLjAwCi11bnNwc2M3IzIzLjE1LjMxLjAzLjAwI1N0b3BwZXIgcGFkIzIzLjE1LjMxLjAwLjAwCi11bnNwc2M3IzIzLjE2LjAwLjAwLjAwI0ZvdW5kcnkgIG1hY2hpbmVzIGFuZCBlcXVpcG1lbnQgYW5kIHN1cHBsaWVzIzIzLjAwLjAwLjAwLjAwCi11bnNwc2M3IzIzLjE2LjE1LjAwLjAwI0ZvdW5kcnkgbWFjaGluZXMgYW5kIGVxdWlwbWVudCMyMy4xNi4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNi4xNS4wMS4wMCNGb3VuZHJ5IGJsb3dlcnMjMjMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTYuMTUuMDIuMDAjRm91bmRyeSBidXJuZXJzIzIzLjE2LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE1LjAzLjAwI0NvcmUgZHJ5aW5nIG92ZW5zIzIzLjE2LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE1LjA0LjAwI0ZvcmdpbmcgcHJlc3NlcyMyMy4xNi4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNi4xNS4wNS4wMCNIb3QgbWV0YWwgbWl4ZXJzIzIzLjE2LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE1LjA2LjAwI0ZvdW5kcnkgY3J1Y2libGVzIzIzLjE2LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE1LjA3LjAwI0ZvdW5kcnkgY29udmVydGVycyMyMy4xNi4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNi4xNS4wOC4wMCNPcGVuIGRpZSBmb3JnaW5nIHByZXNzIzIzLjE2LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE1LjA5LjAwI0Zvcmdpbmcgc3RhbXBpbmcgbWFjaGluZXMjMjMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTYuMTUuMTAuMDAjQ2FzdGluZyBtYWNoaW5lcyMyMy4xNi4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNi4xNS4xMS4wMCNGb3JnaW5nIHJvbGxzIzIzLjE2LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE1LjEyLjAwI1JhZGlhbCBmb3JnaW5nIG1hY2hpbmVzIzIzLjE2LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE1LjEzLjAwI0NvbGQgZm9ybWluZyBwcmVzc2VzIzIzLjE2LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE1LjE0LjAwI1NpemluZyBvciBlbWJvc3NpbmcgcHJlc3NlcyMyMy4xNi4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNi4xNS4xNS4wMCNFbmQgZm9yZ2luZyBtYWNoaW5lcyMyMy4xNi4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNi4xNi4wMC4wMCNGb3VuZHJ5IHN1cHBsaWVzIzIzLjE2LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE2LjE2LjAxLjAwI0ZvdW5kcnkgYmVsbG93cyMyMy4xNi4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNi4xNi4wMi4wMCNGb3VuZHJ5IGNsYXlzIzIzLjE2LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE2LjAzLjAwI0ZvdW5kcnkgZmxhc2tzIzIzLjE2LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE2LjA0LjAwI0ZvdW5kcnkgZmx1eGVzIzIzLjE2LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE2LjA1LjAwI0ZvdW5kcnkgbGFkbGVzIzIzLjE2LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE2LjA2LjAwI0ZvdW5kcnkgbW9sZHMjMjMuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTYuMTYuMDcuMDAjRm91bmRyeSBzYW5kIzIzLjE2LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE2LjE2LjA4LjAwI0ZvdW5kcnkgc2hvdmVscyMyMy4xNi4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNy4wMC4wMC4wMCNXb3Jrc2hvcCBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCBhbmQgc3VwcGxpZXMjMjMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMDAuMDAjU29sZGVyaW5nIGFuZCBicmF6aW5nIGFuZCB3ZWxkaW5nIG1hY2hpbmVyeSBhbmQgc3VwcGxpZXMjMjMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMDEuMDAjQW50aSBzcGF0dGVyIHNwcmF5cyMyMy4xNy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNS4wMi4wMCNHYXMgd2VsZGluZyBvciBicmF6aW5nIHJvZHMjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMDMuMDAjRmlsbGVyIG1ldGFsIzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjA0LjAwI0Jsb3cgcGlwZXMjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMDUuMDAjSXJvbiBwb3dkZXIjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMDYuMDAjU29sZGVyaW5nIGZsdWlkIzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjA3LjAwI1NvbGRlcmluZyBpcm9ucyBvciBndW5zIzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjA4LjAwI1dlbGRlcnMjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMDkuMDAjU29sZGVyIzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjEwLjAwI1dlbGRpbmcgd2lyZSMyMy4xNy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNS4xMS4wMCNXZWxkaW5nIHRvb2xzIzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjEyLjAwI1dlbGRpbmcgcm9kcyMyMy4xNy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNS4xMy4wMCNXZWxkaW5nIHJlY3RpZmllcnMjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMTQuMDAjV2VsZGluZyBnZW5lcmF0b3JzIzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjE1LjAwI1dlbGRpbmcgZWxlY3Ryb2RlcyMyMy4xNy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNS4xNy4wMCNCbG93IHRvcmNoZXMjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMTguMDAjUGxhc21hIHdlbGRpbmcgbWFjaGluZXJ5IzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjE5LjAwI1R1bmdzdGVuIGluZXJ0IGdhcyAoVElHKSB3ZWxkaW5nIG1hY2hpbmVyeSMyMy4xNy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNS4yMC4wMCNVbHRyYXNvdW5kIHdlbGRpbmcgbWFjaGluZXJ5IzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjIxLjAwI0xhc2VyIHdlbGRpbmcgbWFjaGluZXJ5IzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjIyLjAwI1NvbGRlcmluZyBmbHV4ZXMjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMjMuMDAjVGVtcGVyYXR1cmUgaW5kaWNhdGluZyBzdGlja3MjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMjQuMDAjQnJhemUgcmluZ3MjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMjUuMDAjU29sZGVyaW5nIHRpcHMjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMjYuMDAjRGVzb2xkZXJpbmcgdGlwcyMyMy4xNy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNS4yNy4wMCNEZXNvbGRlcmluZyBicmFpZCMyMy4xNy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNS4yOC4wMCNXZWxkaW5nIHNjcmVlbnMgb3IgY3VydGFpbnMjMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTUuMjkuMDAjV2VsZGluZyBvciBzb2xkZXJpbmcga2l0IzIzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE1LjMwLjAwI1NvbGRlcmluZyBvciBkZXNvbGRlcmluZyBvciBjb21iaW5lZCBzdGF0aW9ucyMyMy4xNy4xNS4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNS4zMS4wMCNEZXNvbGRlcmluZyBHdW4jMjMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTYuMDAuMDAjTWFjaGluZSB0b29scyMyMy4xNy4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNi4wMS4wMCNCb3JpbmcgdG9vbHMjMjMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTYuMDIuMDAjQmFyIG9yIHJvZCBjdXR0ZXJzIzIzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE2LjAzLjAwI1BpcGUgb3IgdHViZSBjdXR0ZXJzIzIzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE2LjA0LjAwI1dpcmUgb3IgY2FibGUgY3V0dGVycyMyMy4xNy4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNi4wNS4wMCNEZWJ1cnJpbmcgZXF1aXBtZW50IzIzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE2LjA2LjAwI0xhdGhlcyMyMy4xNy4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNi4wNy4wMCNMYXRoZSB0b29scyBvciBkaWVzIzIzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE2LjA4LjAwI0xhc2VyIGN1dHRpbmcgdG9vbHMjMjMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTYuMDkuMDAjVHdpc3QgZHJpbGxzIzIzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE2LjEwLjAwI1JlYW1lcnMjMjMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTYuMTEuMDAjQ291bnRlcmJvcmVzIzIzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE2LjEyLjAwI01pbGxpbmcgY3V0dGVycyMyMy4xNy4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNi4xMy4wMCNIb2JzIzIzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE2LjE0LjAwI0dlYXIgc2hhcGVycyMyMy4xNy4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNi4xNS4wMCNTaGF2aW5nIGN1dHRlcnMjMjMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTYuMTYuMDAjV2F0ZXIgamV0IGN1dHRpbmcgbWFjaGluZXMjMjMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTYuMTcuMDAjQnJvYWNoaW5nIHRvb2xzIzIzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE2LjE4LjAwI0luZGV4YWJsZSBpbnNlcnRzIzIzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE2LjE5LjAwI0JvcmluZyB0b29scyMyMy4xNy4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNi4yMC4wMCNCcm9hY2hlcyMyMy4xNy4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNi4yMS4wMCNJbnNlcnRpb24gdG9vbHMjMjMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTYuMjIuMDAjV29ya3Nob3AgcHJlc3NlcyMyMy4xNy4xNi4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNy4wMC4wMCNNZXRhbCBiZW5kaW5nIGFuZCBmb3JtaW5nIG1hY2hpbmVyeSMyMy4xNy4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNy4wMS4wMCNUYW5nZW50IGJlbmRlcnMjMjMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTcuMDIuMDAjV2luZyBiZW5kZXJzIzIzLjE3LjE3LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE3LjAzLjAwI1R1YmUgYmVuZGluZyBtYWNoaW5lcnkjMjMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTcuMDQuMDAjUGlwZSBiZW5kaW5nIG1hbmRyZWxzIzIzLjE3LjE3LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE3LjA1LjAwI0RpZSBiZW5kcyMyMy4xNy4xNy4wMC4wMAotdW5zcHNjNyMyMy4xNy4xNy4wNi4wMCNTZXF1ZW50aWFsIGZvcm1pbmcgbWFjaGluZXMjMjMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTcuMDcuMDAjVHViZSBlbmQgZmluaXNoZXJzIzIzLjE3LjE3LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE3LjA4LjAwI01hY2hpbmUgbW91bnRpbmcjMjMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTguMDAuMDAjTWV0YWwgZmFicmljYXRpbmcgZGllcyMyMy4xNy4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNy4xOC4wMS4wMCNTdGFtcGluZyBvciBmb3JtaW5nIGRpZXMjMjMuMTcuMTguMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTguMDIuMDAjRGllIGNhc3RpbmcgZGllcyMyMy4xNy4xOC4wMC4wMAotdW5zcHNjNyMyMy4xNy4xOC4wMy4wMCNNZXRhbCBleHRydXNpb24gZGllcyMyMy4xNy4xOC4wMC4wMAotdW5zcHNjNyMyMy4xNy4xOC4wNC4wMCNDdXR0aW5nIGRpZXMgb3IgdG9vbGluZyMyMy4xNy4xOC4wMC4wMAotdW5zcHNjNyMyMy4xNy4xOC4wNS4wMCNSb3RhcnkgZGllcyMyMy4xNy4xOC4wMC4wMAotdW5zcHNjNyMyMy4xNy4xOC4wNi4wMCNTdGVlbCBydWxlIGRpZXMjMjMuMTcuMTguMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTkuMDAuMDAjU3BlY2lhbCB0b29saW5nIGZpeHR1cmVzIzIzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE3LjE5LjAxLjAwI0hvbGRpbmcgZml4dHVyZXMjMjMuMTcuMTkuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTkuMDIuMDAjR2F1Z2VzIGFuZCBpbnNwZWN0aW9uIGZpeHR1cmVzIzIzLjE3LjE5LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE5LjAzLjAwI0ZhYnJpY2F0ZWQgdG9vbGluZyBmaXh0dXJlcyMyMy4xNy4xOS4wMC4wMAotdW5zcHNjNyMyMy4xNy4xOS4wNC4wMCNDYXN0aW5nIHRvb2xpbmcjMjMuMTcuMTkuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMTkuMDUuMDAjRm9yZ2luZyB0b29saW5nIzIzLjE3LjE5LjAwLjAwCi11bnNwc2M3IzIzLjE3LjE5LjA2LjAwI0Fzc2VtYmx5IG9yIGRpc2Fzc2VtYmx5IHRvb2xpbmcjMjMuMTcuMTkuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMjAuMDAuMDAjTWV0YWwgd29ya2luZyBtYWNoaW5lcnkgYXR0YWNobWVudHMjMjMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMjAuMDEuMDAjQnVycnMjMjMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMjAuMDIuMDAjRm9ybSBSZWxpZWYjMjMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMjAuMDMuMDAjTWFjaGluZSB0aHJlYWRpbmcgdGFwcyMyMy4xNy4yMC4wMC4wMAotdW5zcHNjNyMyMy4xNy4yMC4wNC4wMCNNYWNoaW5lIHRocmVhZGluZyBkaWVzIzIzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzIzLjE3LjIwLjA1LjAwI01hY2hpbmUgZW5kIG1pbGxzIzIzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzIzLjE3LjIwLjA2LjAwI01ldGFsIHN0YW1wcyBvciBwdW5jaGVzIzIzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzIzLjE3LjIwLjA3LjAwI01ldGFsIGN1dHRpbmcgYmFuZCBzYXcgYmxhZGVzIzIzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzIzLjE3LjIwLjA4LjAwI01ldGFsIGN1dHRpbmcgY2lyY3VsYXIgc2F3IGJsYWRlcyMyMy4xNy4yMC4wMC4wMAotdW5zcHNjNyMyMy4xNy4yMC4wOS4wMCNDYXJiaWRlIGluc2VydHMjMjMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMjAuMTAuMDAjQ2VyYW1pYyBpbnNlcnRzIzIzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzIzLjE3LjIwLjExLjAwI1N0ZWVsIGluc2VydHMjMjMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMjAuMTIuMDAjRGlhbW9uZCBpbnNlcnRzIzIzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzIzLjE3LjIwLjEzLjAwI1RocmVhZGluZyBtaWxscyMyMy4xNy4yMC4wMC4wMAotdW5zcHNjNyMyMy4xNy4yMS4wMC4wMCNIb2xkaW5nIGZpeHR1cmVzIzIzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE3LjIyLjAwLjAwI0dhdWdlcyBhbmQgaW5zcGVjdGlvbiBmaXh0dXJlcyMyMy4xNy4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNy4yMy4wMC4wMCNGYWJyaWNhdGVkIHRvb2xpbmcgZml4dHVyZXMjMjMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTcuMjQuMDAuMDAjQ2FzdGluZyB0b29saW5nIzIzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE3LjI1LjAwLjAwI0ZvcmdpbmcgdG9vbGluZyMyMy4xNy4wMC4wMC4wMAotdW5zcHNjNyMyMy4xNy4yNi4wMC4wMCNBc3NlbWJseSBvciBkaXNhc3NlbWJseSB0b29saW5nIzIzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE4LjAwLjAwLjAwI0luZHVzdHJpYWwgZm9vZCBhbmQgYmV2ZXJhZ2UgZXF1aXBtZW50IzIzLjAwLjAwLjAwLjAwCi11bnNwc2M3IzIzLjE4LjE1LjAwLjAwI0Zvb2QgcHJlcGFyYXRpb24gbWFjaGluZXJ5IzIzLjE4LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE4LjE1LjAxLjAwI0ZpbGxpbmcgbWFjaGluZXJ5IzIzLjE4LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE4LjE1LjAyLjAwI01pbGxpbmcgbWFjaGluZXJ5IzIzLjE4LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE4LjE1LjAzLjAwI01peGluZyBtYWNoaW5lcnkjMjMuMTguMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTguMTUuMDQuMDAjU2lmdGluZyBtYWNoaW5lcnkjMjMuMTguMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTguMTUuMDUuMDAjRGVoeWRyYXRpbmcgbWFjaGluZXJ5IzIzLjE4LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE4LjE1LjA2LjAwI1dhc2hpbmcgbWFjaGluZXJ5IzIzLjE4LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE4LjE1LjA3LjAwI0NydXNoaW5nIG1hY2hpbmVyeSMyMy4xOC4xNS4wMC4wMAotdW5zcHNjNyMyMy4xOC4xNS4wOC4wMCNCbGFuY2hpbmcgbWFjaGluZXJ5IzIzLjE4LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE4LjE1LjA5LjAwI1NvcnRpbmcgbWFjaGluZXJ5IzIzLjE4LjE1LjAwLjAwCi11bnNwc2M3IzIzLjE4LjE1LjEwLjAwI01lYXQgdHllcnMjMjMuMTguMTUuMDAuMDAKLXVuc3BzYzcjMjMuMTguMTYuMDAuMDAjRm9vZCBjdXR0aW5nIG1hY2hpbmVyeSMyMy4xOC4wMC4wMC4wMAotdW5zcHNjNyMyMy4xOC4xNi4wMS4wMCNEaWNpbmcgbWFjaGluZXJ5IzIzLjE4LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE4LjE2LjAyLjAwI1NsaWNpbmcgbWFjaGluZXJ5IzIzLjE4LjE2LjAwLjAwCi11bnNwc2M3IzIzLjE4LjE2LjAzLjAwI0Nob3BwaW5nIG1hY2hpbmVyeSMyMy4xOC4xNi4wMC4wMAotdW5zcHNjNyMyMy4xOC4xNi4wNC4wMCNDdXR0aW5nIG1hY2hpbmVyeSMyMy4xOC4xNi4wMC4wMAotdW5zcHNjNyMyMy4xOC4xNi4wNS4wMCNHcmF0aW5nIG1hY2hpbmVyeSMyMy4xOC4xNi4wMC4wMAotdW5zcHNjNyMyMy4xOC4xNi4wNi4wMCNQZWVsaW5nIG1hY2hpbmVyeSMyMy4xOC4xNi4wMC4wMAotdW5zcHNjNyMyMy4xOC4xNy4wMC4wMCNGb29kIGNvb2tpbmcgYW5kIHNtb2tpbmcgbWFjaGluZXJ5IzIzLjE4LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE4LjE3LjAxLjAwI1Ntb2tpbmcgbWFjaGluZXJ5IzIzLjE4LjE3LjAwLjAwCi11bnNwc2M3IzIzLjE4LjE3LjAyLjAwI1JvYXN0aW5nIG1hY2hpbmVyeSMyMy4xOC4xNy4wMC4wMAotdW5zcHNjNyMyMy4xOC4xNy4wMy4wMCNDb29raW5nIG1hY2hpbmVyeSMyMy4xOC4xNy4wMC4wMAotdW5zcHNjNyMyMy4xOC4xNy4wNC4wMCNTdGVhbWluZyBtYWNoaW5lcnkjMjMuMTguMTcuMDAuMDAKLXVuc3BzYzcjMjMuMTguMTguMDAuMDAjSW5kdXN0cmlhbCBiZXZlcmFnZSBwcm9jZXNzaW5nIG1hY2hpbmVyeSMyMy4xOC4wMC4wMC4wMAotdW5zcHNjNyMyMy4xOC4xOC4wMS4wMCNDb2ZmZWUgYnJld2luZyBlcXVpcG1lbnQgb3Igc3VwcGxpZXMjMjMuMTguMTguMDAuMDAKLXVuc3BzYzcjMjMuMTguMTguMDIuMDAjSnVpY2luZyBtYWNoaW5lcnkjMjMuMTguMTguMDAuMDAKLXVuc3BzYzcjMjMuMTguMTguMDMuMDAjSWNlIG1ha2luZyBtYWNoaW5lcyMyMy4xOC4xOC4wMC4wMAotdW5zcHNjNyMyMy4xOC4xOC4wNC4wMCNJY2UgY3JlYW0gbWFjaGluZXMjMjMuMTguMTguMDAuMDAKLXVuc3BzYzcjMjMuMTkuMDAuMDAuMDAjTWl4ZXJzIGFuZCB0aGVpciBwYXJ0cyBhbmQgYWNjZXNzb3JpZXMjMjMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMTkuMTAuMDAuMDAjQmF0Y2ggbWl4ZXJzIzIzLjE5LjAwLjAwLjAwCi11bnNwc2M3IzIzLjE5LjEwLjAxLjAwI0NoYW5nZSBjYW4gbWl4ZXJzIzIzLjE5LjEwLjAwLjAwCi11bnNwc2M3IzIzLjE5LjEwLjAyLjAwI0hlbGljYWwgYmxhZGUgbWl4ZXIjMjMuMTkuMTAuMDAuMDAKLXVuc3BzYzcjMjMuMTkuMTAuMDMuMDAjRG91YmxlIGFybSBrbmVhZGluZyBtaXhlcnMjMjMuMTkuMTAuMDAuMDAKLXVuc3BzYzcjMjMuMTkuMTAuMDQuMDAjSW50ZW5zaXZlIG1peGVycyMyMy4xOS4xMC4wMC4wMAotdW5zcHNjNyMyMy4xOS4xMC4wNS4wMCNSb2xsIG1peGVycyMyMy4xOS4xMC4wMC4wMAotdW5zcHNjNyMyMy4xOS4xMS4wMC4wMCNDb250aW51b3VzIG1peGVycyMyMy4xOS4wMC4wMC4wMAotdW5zcHNjNyMyMy4xOS4xMS4wMS4wMCNTaW5nbGUgc2NyZXcgbWl4ZXJzIzIzLjE5LjExLjAwLjAwCi11bnNwc2M3IzIzLjE5LjExLjAyLjAwI1R3aW4gc2NyZXcgZXh0cnVkZXIjMjMuMTkuMTEuMDAuMDAKLXVuc3BzYzcjMjMuMjAuMDAuMDAuMDAjTWFzcyB0cmFuc2ZlciBlcXVpcG1lbnQjMjMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMjAuMTAuMDAuMDAjR2FzIGxpcXVpZCBjb250YWN0aW5nIHN5c3RlbXMjMjMuMjAuMDAuMDAuMDAKLXVuc3BzYzcjMjMuMjAuMTAuMDEuMDAjUGxhdGUgY29sdW1ucyMyMy4yMC4xMC4wMC4wMAotdW5zcHNjNyMyMy4yMC4xMC4wMi4wMCNQYWNrZWQgY29sdW1ucyMyMy4yMC4xMC4wMC4wMAotdW5zcHNjNyMyMy4yMC4xMC4wMy4wMCNMaXF1aWQgZGlzcGVyc2VkIGNvbnRhY3RvciMyMy4yMC4xMC4wMC4wMAotdW5zcHNjNyMyMy4yMC4xMC4wNC4wMCNXZXR0ZWQgd2FsbCBjb2x1bW4jMjMuMjAuMTAuMDAuMDAKLXVuc3BzYzcjMjMuMjAuMTAuMDUuMDAjQnViYmxlIGNvbHVtbnMjMjMuMjAuMTAuMDAuMDAKLXVuc3BzYzcjMjMuMjAuMTEuMDAuMDAjQWRzb3JwdGlvbiBhbmQgaW9uIGV4Y2hhbmdlIzIzLjIwLjAwLjAwLjAwCi11bnNwc2M3IzIzLjIwLjExLjAxLjAwI0Fkc29yYmVyIHZlc3NlbCMyMy4yMC4xMS4wMC4wMAotdW5zcHNjNyMyMy4yMC4xMS4wMi4wMCNBbWJpZW50IHByZXNzdXJlIGFkc29yYmVyIHZlc3NlbCMyMy4yMC4xMS4wMC4wMAotdW5zcHNjNyMyMy4yMS4wMC4wMC4wMCNFbGVjdHJvbmljIG1hbnVmYWN0dXJpbmcgbWFjaGluZXJ5IGFuZCBlcXVpcG1lbnQgYW5kIGFjY2Vzc29yaWVzIzIzLjAwLjAwLjAwLjAwCi11bnNwc2M3IzIzLjIxLjEwLjAwLjAwI0VsZWN0cm9uaWMgYXNzZW1ibHkgbWFjaGluZXJ5IGFuZCBzdXBwb3J0IGVxdWlwbWVudCMyMy4yMS4wMC4wMC4wMAotdW5zcHNjNyMyMy4yMS4xMC4wMS4wMCNDaGlwIHBsYWNlcnMjMjMuMjEuMTAuMDAuMDAKLXVuc3BzYzcjMjMuMjEuMTAuMDIuMDAjR2x1ZSBkaXNwZW5zaW5nIG1hY2hpbmVyeSMyMy4yMS4xMC4wMC4wMAotdW5zcHNjNyMyNC4wMC4wMC4wMC4wMCNNYXRlcmlhbCBIYW5kbGluZyBhbmQgQ29uZGl0aW9uaW5nIGFuZCBTdG9yYWdlIE1hY2hpbmVyeSBhbmQgdGhlaXIgQWNjZXNzb3JpZXMgYW5kIFN1cHBsaWVzIzI0LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI0LjEwLjAwLjAwLjAwI01hdGVyaWFsIGhhbmRsaW5nIG1hY2hpbmVyeSBhbmQgZXF1aXBtZW50IzI0LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI0LjEwLjE1LjAwLjAwI0luZHVzdHJpYWwgdHJ1Y2tzIzI0LjEwLjAwLjAwLjAwCi11bnNwc2M3IzI0LjEwLjE1LjAxLjAwI0NhcnRzIzI0LjEwLjE1LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE1LjAyLjAwI0J1bGsgdHJhbnNwb3J0ZXJzIzI0LjEwLjE1LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE1LjAzLjAwI0RvbGxpZXMjMjQuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTUuMDQuMDAjSGFuZCB0cnVja3Mgb3IgYWNjZXNzb3JpZXMjMjQuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTUuMDUuMDAjUGFsbGV0IHRydWNrcyMyNC4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNS4wNi4wMCNQdXNoY2FydHMjMjQuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTUuMDcuMDAjV2hlZWxiYXJyb3dzIzI0LjEwLjE1LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE1LjA4LjAwI0NyZWVwZXJzIzI0LjEwLjE1LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE1LjA5LjAwI1dhZ29ucyMyNC4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNS4xMC4wMCNUaWx0IHRydWNrcyMyNC4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNS4xMS4wMCNTaGVsZiB0cm9sbGV5cyMyNC4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4wMC4wMCNMaWZ0aW5nIGVxdWlwbWVudCBhbmQgYWNjZXNzb3JpZXMjMjQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMDEuMDAjRWxldmF0b3JzIzI0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE2LjAyLjAwI0hvaXN0cyMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4wMy4wMCNGb3JrbGlmdHMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMDQuMDAjTGlmdHMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMDUuMDAjTG9hZGluZyBlcXVpcG1lbnQjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMDYuMDAjU3RhY2tlcnMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMDcuMDAjQ3JhbmVzIzI0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE2LjA4LjAwI1dpbmNoZXMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMDkuMDAjVGlsdHMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMTAuMDAjTWFuaXB1bGF0b3JzIzI0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE2LjExLjAwI1NsaW5ncyMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4xMi4wMCNKYWNrcyMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4xMy4wMCNCbG9ja3Mgb3IgcHVsbGV5cyMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4xNC4wMCNBaXIgYmFncyBmb3IgbG9hZGluZyMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4xNS4wMCNMb2FkaW5nIHJhbXBzIzI0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE2LjE2LjAwI0JlbG93IHRoZSBob29rIGRldmljZSMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4xNy4wMCNTY2lzc29yIGxpZnQjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMTguMDAjUGlwZSBsYXllciMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4xOS4wMCNCcmlkZ2UgY3JhbmVzIzI0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE2LjIwLjAwI1RyYWNrIGNyYW5lcyMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4yMS4wMCNBbGwgdGVycmFpbiBjcmFuZXMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMjIuMDAjUm91Z2ggdGVycmFpbiBjcmFuZXMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMjMuMDAjVG93ZXIgY3JhbmVzIzI0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE2LjI0LjAwI0h5ZHJhdWxpYyB0cnVjayBjcmFuZXMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMjUuMDAjQ29udmVudGlvbmFsIHRydWNrIGNyYW5lcyMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4yNi4wMCNFc2NhbGF0b3Igb3Igd2Fsa3dheXMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMjcuMDAjR2lyZGVyIHRyb2xsZXlzIzI0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE2LjI4LjAwI0FkanVzdGFibGUgZm9ya3MjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMjkuMDAjRm9ya2xpZnQgYWNjZXNzb3JpZXMgb3Igc3VwcGxpZXMjMjQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTYuMzAuMDAjV29ya3Nob3AgY3JhbmVzIzI0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE2LjMxLjAwI1N1Y3Rpb24gY3VwcyMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNi4zMi4wMCNTaWRlIHNoaWZ0cyMyNC4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4wMC4wMCNDb252ZXlvcnMgYW5kIGFjY2Vzc29yaWVzIzI0LjEwLjAwLjAwLjAwCi11bnNwc2M3IzI0LjEwLjE3LjAxLjAwI0NvbnZleW9yIHJvbGxlciMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4wMi4wMCNCYWxsIHRyYW5zZmVyIHRhYmxlcyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4wMy4wMCNSb2NrIGJpbnMjMjQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTcuMDQuMDAjQ29udmV5b3IgZmVlZGVycyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4wNS4wMCNDb252ZXlvciBzY3JldyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4wNi4wMCNUcm9sbGV5cyBvciBhY2Nlc3NvcmllcyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4wNy4wMCNDb252ZXlvciByYWlscyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4wOC4wMCNFeHRlbmRhYmxlIGNvbnZleW9ycyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4wOS4wMCNSb2xsZXIgY29udmV5b3JzIzI0LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE3LjEwLjAwI1BhY2thZ2Ugc3RvcHMjMjQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTcuMTEuMDAjVHVybnRhYmxlcyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4xMi4wMCNCZWx0IGNvbnZleW9ycyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4xMy4wMCNCdWNrZXQgY29udmV5b3JzIzI0LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE3LjE0LjAwI0FpciBjb252ZXlvcnMjMjQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTcuMTUuMDAjQ29udmV5b3IgYmVsdGluZyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4xNi4wMCNDb252ZXlvciBwdWxsZXlzIzI0LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE3LjE3LjAwI0NvbnZleW9yIGlkbGVycyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xNy4xOC4wMCNDb252ZXlvciBiZWx0IGxhY2luZyBvciBmYXN0ZW5lcnMjMjQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTcuMTkuMDAjQ29udmV5b3IgYmVsdCBicnVzaGVzIzI0LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE3LjIwLjAwI1dlYXIgc3RyaXBzIzI0LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE3LjIxLjAwI1Ryb2xsZXkgbGlkIzI0LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE3LjIyLjAwI0NoYWluIGNvbnZleW9ycyMyNC4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xMC4xOC4wMC4wMCNEb2NrIGVxdWlwbWVudCMyNC4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMC4xOC4wMS4wMCNEb2NrIGxldmVsZXJzIzI0LjEwLjE4LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE4LjAyLjAwI0RvY2sgc2VhbHMjMjQuMTAuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTguMDMuMDAjRG9jayByYW1wcyMyNC4xMC4xOC4wMC4wMAotdW5zcHNjNyMyNC4xMC4xOC4wNC4wMCNTdHJpcCBkb29ycyMyNC4xMC4xOC4wMC4wMAotdW5zcHNjNyMyNC4xMC4xOC4wNS4wMCNEb2NrIGJ1bXBlcnMjMjQuMTAuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTguMDYuMDAjRG9jayBsYWRkZXJzIzI0LjEwLjE4LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE4LjA3LjAwI0RvY2sgcGxhdGVzIzI0LjEwLjE4LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE4LjA4LjAwI1doZWVsIGNob2NrcyMyNC4xMC4xOC4wMC4wMAotdW5zcHNjNyMyNC4xMC4xOC4wOS4wMCNEb2NrIHJhaWxzIGFuZCBhY2Nlc3NvcmllcyMyNC4xMC4xOC4wMC4wMAotdW5zcHNjNyMyNC4xMC4xOS4wMC4wMCNEcnVtIGhhbmRsaW5nIGVxdWlwbWVudCMyNC4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMC4xOS4wMS4wMCNEcnVtIG9wZW5lcnMjMjQuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTkuMDIuMDAjRHJ1bSBncmFicyMyNC4xMC4xOS4wMC4wMAotdW5zcHNjNyMyNC4xMC4xOS4wMy4wMCNEcnVtIGxpZnRlcnMjMjQuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTkuMDQuMDAjRHJ1bSBjcmFkbGVzIzI0LjEwLjE5LjAwLjAwCi11bnNwc2M3IzI0LjEwLjE5LjA1LjAwI1NwaWxsIGRlY2sjMjQuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTkuMDYuMDAjRHJ1bSByZWN1cGVyYXRvcnMjMjQuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMTkuMDcuMDAjU3BpbGwgY29udGFpbm1lbnQgc3VwcG9ydHMjMjQuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjAuMDAuMDAjU2hlbHZpbmcgYW5kIHN0b3JhZ2UjMjQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjAuMDEuMDAjUmFjayBzeXN0ZW1zIGZvciByYWNrIG1vdW50IGVsZWN0cm9uaWMgZXF1aXBtZW50IzI0LjEwLjIwLjAwLjAwCi11bnNwc2M3IzI0LjEwLjIwLjAyLjAwI0JpbiBoYW5kbGVycyMyNC4xMC4yMC4wMC4wMAotdW5zcHNjNyMyNC4xMC4yMC4wMy4wMCNQYWxsZXRzIzI0LjEwLjIwLjAwLjAwCi11bnNwc2M3IzI0LjEwLjIwLjA0LjAwI1N0b3JhZ2UgcmFja3Mgb3Igc2hlbHZlcyMyNC4xMC4yMC4wMC4wMAotdW5zcHNjNyMyNC4xMC4yMC4wNS4wMCNBdXRvbWF0ZWQgc3RvcmFnZSBvciByZXRyaWV2YWwgc3lzdGVtcyMyNC4xMC4yMC4wMC4wMAotdW5zcHNjNyMyNC4xMC4yMC4wNi4wMCNXb3JrIGJlbmNoZXMjMjQuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjAuMDcuMDAjUmVlbCBzdG9yYWdlIHNoZWx2ZXMjMjQuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjAuMDguMDAjUG9ydGFibGUgcmVlbCBob2xkZXJzIzI0LjEwLjIwLjAwLjAwCi11bnNwc2M3IzI0LjEwLjIxLjAwLjAwI1dhcmVob3VzaW5nIGVxdWlwbWVudCBhbmQgc3VwcGxpZXMjMjQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjEuMDEuMDAjQ2FyZ28gaGFuZGxpbmcgZXF1aXBtZW50IzI0LjEwLjIxLjAwLjAwCi11bnNwc2M3IzI0LjEwLjIxLjAyLjAwI1dhcmVob3VzZSBjYXJvdXNlbHMjMjQuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjEuMDMuMDAjV2FyZWhvdXNlIGNhc2VycyMyNC4xMC4yMS4wMC4wMAotdW5zcHNjNyMyNC4xMC4yMS4wNC4wMCNEZXBhbGxldGl6ZXJzIzI0LjEwLjIxLjAwLjAwCi11bnNwc2M3IzI0LjEwLjIxLjA1LjAwI1BhbGxldGl6ZXJzIzI0LjEwLjIxLjAwLjAwCi11bnNwc2M3IzI0LjEwLjIxLjA2LjAwI0luZHVzdHJpYWwgc2hyaW5rIHdyYXAgZXF1aXBtZW50IzI0LjEwLjIxLjAwLjAwCi11bnNwc2M3IzI0LjEwLjIxLjA3LjAwI0NhcnRvbmluZyBtYWNoaW5lcnkjMjQuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjEuMDguMDAjUGFja2FnaW5nIGNvbXBhY3RvcnMjMjQuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjIuMDAuMDAjUGFja2luZyB0b29scyMyNC4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMC4yMi4wMS4wMCNTdHJldGNoIGZpbG0gZGlzcGVuc2VycyMyNC4xMC4yMi4wMC4wMAotdW5zcHNjNyMyNC4xMC4yMi4wMi4wMCNCb3ggc2VhbGluZyB0YXBlIGRpc3BlbnNlcnMjMjQuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjIuMDMuMDAjQmFnIHNlYWxpbmcgdG9vbHMgYW5kIGVxdWlwbWVudCMyNC4xMC4yMi4wMC4wMAotdW5zcHNjNyMyNC4xMC4yMi4wNC4wMCNTdHJhcHBpbmcgZGlzcGVuc2VyIzI0LjEwLjIyLjAwLjAwCi11bnNwc2M3IzI0LjEwLjIyLjA1LjAwI1N0cmFwcGluZyB0ZW5zaW9uZXJzIG9yIHNlYWxlcnMjMjQuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjIuMDYuMDAjQ2FydG9uIGZvcm1pbmcgbWFjaGluZXMjMjQuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMjQuMTAuMjIuMDcuMDAjVGFwaW5nIG1hY2hpbmVzIzI0LjEwLjIyLjAwLjAwCi11bnNwc2M3IzI0LjExLjAwLjAwLjAwI0NvbnRhaW5lcnMgYW5kIHN0b3JhZ2UjMjQuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMTUuMDAuMDAjQmFncyMyNC4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMS4xNS4wMS4wMCNDYW52YXMgYmFncyMyNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMS4xNS4wMi4wMCNQYXBlciBiYWdzIzI0LjExLjE1LjAwLjAwCi11bnNwc2M3IzI0LjExLjE1LjAzLjAwI1BsYXN0aWMgYmFncyMyNC4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMS4xNS4wNC4wMCNQb3VjaGVzIzI0LjExLjE1LjAwLjAwCi11bnNwc2M3IzI0LjExLjE1LjA1LjAwI0ZsZXhpYmxlIGludGVybWVkaWF0ZSBidWxrIGNvbnRhaW5lcnMjMjQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMTUuMDYuMDAjTGF1bmRyeSBuZXRzIG9yIGJhZ3MjMjQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMTUuMDcuMDAjVG9vbCBiYWdzIzI0LjExLjE1LjAwLjAwCi11bnNwc2M3IzI0LjExLjE1LjA4LjAwI1RlbnQgYmFnIzI0LjExLjE1LjAwLjAwCi11bnNwc2M3IzI0LjExLjE2LjAwLjAwI0NvdmVycyBhbmQgY2FwcyMyNC4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMS4xOC4wMC4wMCNUYW5rcyBhbmQgY3lsaW5kZXJzIGFuZCB0aGVpciBhY2Nlc3NvcmllcyMyNC4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMS4xOC4wMS4wMCNSZXNlcnZvaXJzIzI0LjExLjE4LjAwLjAwCi11bnNwc2M3IzI0LjExLjE4LjAyLjAwI0FpciBvciBnYXMgdGFua3Mgb3IgY3lsaW5kZXJzIzI0LjExLjE4LjAwLjAwCi11bnNwc2M3IzI0LjExLjE4LjAzLjAwI1N0b3JhZ2UgdGFua3MjMjQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTEuMTguMDQuMDAjQ2FsaWJyYXRpbmcgdGFua3MjMjQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTEuMTguMDUuMDAjQ2hlbWljYWwgdGFua3MjMjQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTEuMTguMDYuMDAjRGlwIHRhbmtzIzI0LjExLjE4LjAwLjAwCi11bnNwc2M3IzI0LjExLjE4LjA3LjAwI0V4cGFuc2lvbiB0YW5rcyMyNC4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNC4xMS4xOC4wOC4wMCNGdWVsIHN0b3JhZ2UgdGFua3MjMjQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTEuMTguMDkuMDAjUHJvY2Vzc2luZyB0YW5rcyMyNC4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNC4xMS4xOC4xMC4wMCNXYXRlciBzdG9yYWdlIHRhbmtzIzI0LjExLjE4LjAwLjAwCi11bnNwc2M3IzI0LjExLjE4LjExLjAwI0NhcmJveXMjMjQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTEuMTguMTIuMDAjQ29udGFpbm1lbnQgYmFzaW4jMjQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTEuMTguMTMuMDAjUmluc2UgdGFua3MjMjQuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjAuMDAuMDAjQmlucyBhbmQgYmFza2V0cyMyNC4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMC4wMS4wMCNCaW5zIzI0LjExLjIwLjAwLjAwCi11bnNwc2M3IzI0LjExLjIwLjAyLjAwI0Jhc2tldHMjMjQuMTEuMjAuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjAuMDMuMDAjTm9uIG1ldGFsbGljIGJpbnMjMjQuMTEuMjAuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjAuMDQuMDAjTWV0YWxsaWMgYmlucyMyNC4xMS4yMC4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMC4wNS4wMCNNZXRhbGxpYyBiYXNrZXRzIzI0LjExLjIwLjAwLjAwCi11bnNwc2M3IzI0LjExLjIwLjA2LjAwI05vbiBtZXRhbGxpYyBiYXNrZXRzIzI0LjExLjIwLjAwLjAwCi11bnNwc2M3IzI0LjExLjIxLjAwLjAwI0Nhc2tzIGFuZCBiYXJyZWxzIGFuZCBkcnVtcyMyNC4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMS4wMS4wMCNDYXNrcyMyNC4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMS4wMi4wMCNCYXJyZWxzIzI0LjExLjIxLjAwLjAwCi11bnNwc2M3IzI0LjExLjIxLjAzLjAwI1N0YWlubGVzcyBzdGVlbCBkcnVtcyMyNC4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMS4wNC4wMCNTdGVlbCBkcnVtcyMyNC4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMS4wNS4wMCNQb2x5ZXRoeWxlbmUgZHJ1bXMjMjQuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjEuMDYuMDAjQ29tcG9zaXRlIGRydW1zIzI0LjExLjIxLjAwLjAwCi11bnNwc2M3IzI0LjExLjIxLjA3LjAwI0ZpYmVyIGRydW1zIzI0LjExLjIxLjAwLjAwCi11bnNwc2M3IzI0LjExLjIxLjA4LjAwI01ldGFsbGljIGRydW1zIzI0LjExLjIxLjAwLjAwCi11bnNwc2M3IzI0LjExLjIxLjA5LjAwI05vbiBtZXRhbGxpYyBkcnVtcyMyNC4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMS4xMC4wMCNJbnRlcm1lZGlhdGUgYnVsayBjb250YWluZXJzIzI0LjExLjIxLjAwLjAwCi11bnNwc2M3IzI0LjExLjIxLjExLjAwI1N0YWJpbGl6ZXIjMjQuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjEuMTIuMDAjRHJ1bSBsaWQjMjQuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjIuMDAuMDAjQ2FucyBhbmQgcGFpbHMjMjQuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjIuMDEuMDAjU3RlZWwgcGFpbHMjMjQuMTEuMjIuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjIuMDIuMDAjR2Fzb2xpbmUgY2FucyMyNC4xMS4yMi4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMi4wMy4wMCNQbGFzdGljIHBhaWxzIzI0LjExLjIyLjAwLjAwCi11bnNwc2M3IzI0LjExLjIyLjA0LjAwI01ldGFsbGljIHBhaWxzIzI0LjExLjIyLjAwLjAwCi11bnNwc2M3IzI0LjExLjIyLjA1LjAwI05vbiBtZXRhbGxpYyBwYWlscyMyNC4xMS4yMi4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMi4wNi4wMCNNZXRhbGxpYyBmbGFtbWFibGUgbGlxdWlkIGNhbnMjMjQuMTEuMjIuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjIuMDcuMDAjTm9uIG1ldGFsbGljIGZsYW1tYWJsZSBsaXF1aWQgY2FucyMyNC4xMS4yMi4wMC4wMAotdW5zcHNjNyMyNC4xMS4yMi4wOC4wMCNTcHJheSBraXQjMjQuMTEuMjIuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjIuMDkuMDAjSmVycnljYW5zIzI0LjExLjIyLjAwLjAwCi11bnNwc2M3IzI0LjExLjI0LjAwLjAwI1N0b3JhZ2UgY2hlc3RzIGFuZCBjYWJpbmV0cyBhbmQgdHJ1bmtzIzI0LjExLjAwLjAwLjAwCi11bnNwc2M3IzI0LjExLjI0LjAxLjAwI1Rvb2wgY2hlc3RzIG9yIGJveGVzIG9yIGNhYmluZXRzIzI0LjExLjI0LjAwLjAwCi11bnNwc2M3IzI0LjExLjI0LjAyLjAwI0hhemFyZG91cyBtYXRlcmlhbHMgY2FiaW5ldHMjMjQuMTEuMjQuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjQuMDMuMDAjVG9vbCBiZWx0cyMyNC4xMS4yNC4wMC4wMAotdW5zcHNjNyMyNC4xMS4yNC4wNC4wMCNCb3gjMjQuMTEuMjQuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjQuMDUuMDAjRHJhd2VycyMyNC4xMS4yNC4wMC4wMAotdW5zcHNjNyMyNC4xMS4yNC4wNi4wMCNCb3ggb3Igc2hlbGYgcGFydGl0aW9ucyMyNC4xMS4yNC4wMC4wMAotdW5zcHNjNyMyNC4xMS4yNC4wNy4wMCNNYWlsIGJveGVzIzI0LjExLjI0LjAwLjAwCi11bnNwc2M3IzI0LjExLjI0LjA4LjAwI0FudGlzdGF0aWMgYm94ZXMjMjQuMTEuMjQuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjQuMDkuMDAjQm94IGxpZHMjMjQuMTEuMjQuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjUuMDAuMDAjQ29ycnVnYXRlZCBhbmQgb3RoZXIgYm94ZXMgZm9yIGRpc3RyaWJ1dGlvbiMyNC4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMS4yNS4wMS4wMCNTbG90dGVkIGNvcnJ1Z2F0ZWQgY2FydG9ucyMyNC4xMS4yNS4wMC4wMAotdW5zcHNjNyMyNC4xMS4yNS4wMi4wMCNPbmUgcGllY2UgZGllIGN1dCBzaGlwcGluZyBjYXJ0b25zIzI0LjExLjI1LjAwLjAwCi11bnNwc2M3IzI0LjExLjI1LjAzLjAwI0RpZSBjdXQgY29ycnVnYXRlZCBzaGlwcGluZyBjYXJ0b25zIHdpdGggc2VwYXJhdGUgbGlkcyMyNC4xMS4yNS4wMC4wMAotdW5zcHNjNyMyNC4xMS4yNS4wNC4wMCNNb2xkZWQgYm94ZXMjMjQuMTEuMjUuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjUuMDUuMDAjUmlnaWQgYm94ZXMjMjQuMTEuMjUuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjUuMDYuMDAjRmxleGlibGUgaW50ZXJtZWRpYXRlIGJ1bGsgY29udGFpbmVycyMyNC4xMS4yNS4wMC4wMAotdW5zcHNjNyMyNC4xMS4yNS4wNy4wMCNJbnRlcm1lZGlhdGUgYnVsayBjb250YWluZXJzIzI0LjExLjI1LjAwLjAwCi11bnNwc2M3IzI0LjExLjI2LjAwLjAwI0xpcXVpZCBjb250YWluZXJzIzI0LjExLjAwLjAwLjAwCi11bnNwc2M3IzI0LjExLjI2LjAxLjAwI0p1Z3MjMjQuMTEuMjYuMDAuMDAKLXVuc3BzYzcjMjQuMTEuMjYuMDIuMDAjSmFycyMyNC4xMS4yNi4wMC4wMAotdW5zcHNjNyMyNC4xMi4wMC4wMC4wMCNQYWNrYWdpbmcgbWF0ZXJpYWxzIzI0LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI0LjEyLjE1LjAwLjAwI1BhY2thZ2luZyBib3hlcyBhbmQgYmFncyBhbmQgcG91Y2hlcyMyNC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMi4xNS4wMS4wMCNQb2x5IGJhZ3MjMjQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTIuMTUuMDIuMDAjUGFja2FnaW5nIHBvdWNoZXMgb3IgYmFncyMyNC4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMi4xNS4wMy4wMCNQYWNrYWdpbmcgYm94ZXMjMjQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTIuMTUuMDQuMDAjQ2FyZGVkIHBhY2thZ2luZyMyNC4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMi4xNS4wNS4wMCNUYXJwYXVsaW5zIzI0LjEyLjE1LjAwLjAwCi11bnNwc2M3IzI0LjEyLjE1LjA2LjAwI0NvbmR1Y3RpdmUgYm94ZXMjMjQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTIuMTUuMDcuMDAjUmlnaWQgc2V0IHVwIGJveGVzIzI0LjEyLjE1LjAwLjAwCi11bnNwc2M3IzI0LjEyLjE1LjA4LjAwI0VnZyB0cmF5cyMyNC4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMi4xOC4wMC4wMCNQYWNrYWdpbmcgY2FucyMyNC4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMi4xOC4wMS4wMCNBZXJvc29sIGNhbnMjMjQuMTIuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTIuMTguMDIuMDAjUGFpbnQgb3IgdmFybmlzaCBjYW5zIzI0LjEyLjE4LjAwLjAwCi11bnNwc2M3IzI0LjEyLjE4LjAzLjAwI0JldmVyYWdlIGNhbnMjMjQuMTIuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTIuMTguMDQuMDAjRm9vZCBjYW5zIzI0LjEyLjE4LjAwLjAwCi11bnNwc2M3IzI0LjEyLjE4LjA1LjAwI1N0ZWVsIGNhbnMjMjQuMTIuMTguMDAuMDAKLXVuc3BzYzcjMjQuMTIuMTguMDYuMDAjQWx1bWludW0gY2FucyMyNC4xMi4xOC4wMC4wMAotdW5zcHNjNyMyNC4xMi4yMC4wMC4wMCNCb3R0bGVzIzI0LjEyLjAwLjAwLjAwCi11bnNwc2M3IzI0LjEyLjIwLjAxLjAwI1NxdWVlemUgYm90dGxlcyMyNC4xMi4yMC4wMC4wMAotdW5zcHNjNyMyNC4xMi4yMC4wMi4wMCNQbGFzdGljIGJvdHRsZXMjMjQuMTIuMjAuMDAuMDAKLXVuc3BzYzcjMjQuMTIuMjAuMDMuMDAjR2xhc3MgYm90dGxlcyMyNC4xMi4yMC4wMC4wMAotdW5zcHNjNyMyNC4xMi4yMC4wNC4wMCNDYXBzIG9yIHRvcHMjMjQuMTIuMjAuMDAuMDAKLXVuc3BzYzcjMjQuMTIuMjAuMDUuMDAjQXBwbGljYXRvciBib3R0bGVzIzI0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzI0LjEyLjIwLjA2LjAwI0FwcGxpY2F0b3JzIzI0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzI0LjEzLjAwLjAwLjAwI0luZHVzdHJpYWwgcmVmcmlnZXJhdGlvbiMyNC4wMC4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMy4xNS4wMC4wMCNJbmR1c3RyaWFsIHJlZnJpZ2VyYXRvcnMjMjQuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMjQuMTMuMTUuMDEuMDAjQ29tYmluZWQgcmVmcmlnZXJhdG9yIGZyZWV6ZXJzIzI0LjEzLjE1LjAwLjAwCi11bnNwc2M3IzI0LjEzLjE1LjAyLjAwI0xpcXVpZCBuaXRyb2dlbiByZWZyaWdlcmF0b3JzIzI0LjEzLjE1LjAwLjAwCi11bnNwc2M3IzI0LjEzLjE1LjAzLjAwI1dhbGsgaW4gcmVmcmlnZXJhdG9ycyMyNC4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMy4xNS4wNC4wMCNSZWZyaWdlcmF0ZWQgY29udGFpbmVycyMyNC4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMy4xNS4wNS4wMCNSZWZyaWdlcmF0ZWQgdmVzc2VscyMyNC4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNC4xMy4xNS4wNi4wMCNSZWZyaWdlcmF0ZWQgdGFua3MjMjQuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTMuMTYuMDAuMDAjSW5kdXN0cmlhbCBmcmVlemVycyMyNC4xMy4wMC4wMC4wMAotdW5zcHNjNyMyNC4xMy4xNi4wMS4wMCNDaGVzdCBmcmVlemVycyMyNC4xMy4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMy4xNi4wMi4wMCNVcHJpZ2h0IGZyZWV6ZXJzIzI0LjEzLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEzLjE2LjAzLjAwI0xvdyB0ZW1wZXJhdHVyZSBmcmVlemVycyMyNC4xMy4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMy4xNi4wNC4wMCNGcmVlemUgZHJ5aW5nIGVxdWlwbWVudCMyNC4xMy4xNi4wMC4wMAotdW5zcHNjNyMyNC4xMy4xNi4wNS4wMCNXYWxrIGluIGZyZWV6ZXJzIzI0LjEzLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEzLjE2LjA2LjAwI1BsYXRlIGZyZWV6ZXJzIzI0LjEzLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEzLjE2LjA3LjAwI0JsYXN0IGZyZWV6ZXJzIzI0LjEzLjE2LjAwLjAwCi11bnNwc2M3IzI0LjEzLjE5LjAwLjAwI0ljZSBtYWtlcnMjMjQuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMjQuMTMuMTkuMDEuMDAjSWNlIGN1YmUgbWFrZXJzIzI0LjEzLjE5LjAwLjAwCi11bnNwc2M3IzI0LjEzLjE5LjAyLjAwI0ljZSBibG9jayBtYWtlcnMjMjQuMTMuMTkuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMDAuMDAuMDAjUGFja2luZyBzdXBwbGllcyMyNC4wMC4wMC4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNS4wMC4wMCNTZWN1cmluZyBhbmQgcHJvdGVjdGluZyBzdXBwbGllcyMyNC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNS4wMS4wMCNTdHJldGNoIHdyYXAgZmlsbXMjMjQuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMTUuMDIuMDAjU2hyaW5rIHdyYXAgZmlsbXMjMjQuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMTUuMDMuMDAjUG9seWV0aHlsZW5lIGZpbG1zIzI0LjE0LjE1LjAwLjAwCi11bnNwc2M3IzI0LjE0LjE1LjA0LjAwI1RhbXBlciBwcm9vZiBvciBzZWN1cml0eSBzZWFscyMyNC4xNC4xNS4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNS4wNS4wMCNQb2x5ZXRoeWxlbmUgZmlsbXMjMjQuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMTUuMDYuMDAjVGFycGF1bGlucyMyNC4xNC4xNS4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNS4wNy4wMCNBbnRpIHN0YXRpYyBwYWNrYWdpbmcgZmlsbXMjMjQuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMTUuMDguMDAjQ2FydG9uIGNvcm5lciBzdXBwb3J0IzI0LjE0LjE1LjAwLjAwCi11bnNwc2M3IzI0LjE0LjE1LjA5LjAwI1J1YmJlciBjb3JkIzI0LjE0LjE1LjAwLjAwCi11bnNwc2M3IzI0LjE0LjE1LjEwLjAwI0NhYmxlIHByb3RlY3RvcnMjMjQuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMTUuMTEuMDAjTG9hZCBiaW5kZXJzIzI0LjE0LjE1LjAwLjAwCi11bnNwc2M3IzI0LjE0LjE2LjAwLjAwI0N1c2hpb25pbmcgc3VwcGxpZXMjMjQuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMTYuMDEuMDAjQnViYmxlIHdyYXAjMjQuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMTYuMDIuMDAjVGhlcm1vZm9ybWluZyBtYXRlcmlhbHMjMjQuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMTYuMDMuMDAjQ3VzaGlvbmluZyMyNC4xNC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNi4wNC4wMCNXYWRkaW5nIG1hdGVyaWFscyMyNC4xNC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNi4wNS4wMCNBaXIgZmlsbGVkIHBhY2tpbmcgbWF0ZXJpYWxzIzI0LjE0LjE2LjAwLjAwCi11bnNwc2M3IzI0LjE0LjE2LjA2LjAwI1BhY2tpbmcgcGVhbnV0cyMyNC4xNC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNi4wNy4wMCNDYXJkYm9hcmQgaW5zZXJ0cyMyNC4xNC4xNi4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNi4wOC4wMCNQcm90ZWN0aXZlIGVuZHMjMjQuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMjQuMTQuMTcuMDAuMDAjUGFja2FnaW5nIHR1YmVzIGFuZCBjb3JlcyBhbmQgbGFiZWxzIGFuZCBhY2Nlc3NvcmllcyMyNC4xNC4wMC4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNy4wMS4wMCNQYXBlciB0dWJlcyBvciBjb3JlcyMyNC4xNC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNy4wMi4wMCNUdWJlIG9yIGNvcmUgZW5kIHBsdWdzIzI0LjE0LjE3LjAwLjAwCi11bnNwc2M3IzI0LjE0LjE3LjAzLjAwI1BhcGVyIHBpZWNlcyMyNC4xNC4xNy4wMC4wMAotdW5zcHNjNyMyNC4xNC4xNy4wNC4wMCNQcmludGVkIGluc2VydHMgb3IgaW5zdHJ1Y3Rpb25zIzI0LjE0LjE3LjAwLjAwCi11bnNwc2M3IzI0LjE0LjE3LjA1LjAwI0NvbGxhcHNpYmxlIHR1YmVzIzI0LjE0LjE3LjAwLjAwCi11bnNwc2M3IzI0LjE0LjE3LjA2LjAwI1Nwb29sIzI0LjE0LjE3LjAwLjAwCi11bnNwc2M3IzI0LjE0LjE3LjA3LjAwI1JlZWwjMjQuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMDAuMDAuMDAuMDAjQ29tbWVyY2lhbCBhbmQgTWlsaXRhcnkgYW5kIFByaXZhdGUgVmVoaWNsZXMgYW5kIHRoZWlyIEFjY2Vzc29yaWVzIGFuZCBDb21wb25lbnRzIzI1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjEwLjAwLjAwLjAwI01vdG9yIHZlaGljbGVzIzI1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjEwLjE1LjAwLjAwI1Bhc3NlbmdlciBtb3RvciB2ZWhpY2xlcyMyNS4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMC4xNS4wMS4wMCNNaW5pYnVzZXMjMjUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMTUuMDIuMDAjQnVzc2VzIzI1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzI1LjEwLjE1LjAzLjAwI0F1dG9tb2JpbGVzIG9yIGNhcnMjMjUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMTUuMDQuMDAjU3RhdGlvbiB3YWdvbnMjMjUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMTUuMDUuMDAjTWluaXZhbnMgb3IgdmFucyMyNS4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMC4xNS4wNi4wMCNMaW1vdXNpbmVzIzI1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzI1LjEwLjE1LjA3LjAwI0xpZ2h0IHRydWNrcyBvciBzcG9ydCB1dGlsaXR5IHZlaGljbGVzIzI1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzI1LjEwLjE2LjAwLjAwI1Byb2R1Y3QgYW5kIG1hdGVyaWFsIHRyYW5zcG9ydCB2ZWhpY2xlcyMyNS4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMC4xNi4wMS4wMCNEdW1wIHRydWNrcyMyNS4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNS4xMC4xNi4wMi4wMCNUb3cgdHJ1Y2tzIzI1LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI1LjEwLjE2LjA0LjAwI0RlbGl2ZXJ5IHRydWNrcyMyNS4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNS4xMC4xNi4wOS4wMCNTbHVkZ2Ugb3Igc2V3YWdlIGhhbmRsaW5nIHRydWNrcyMyNS4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNS4xMC4xNy4wMC4wMCNTYWZldHkgYW5kIHJlc2N1ZSB2ZWhpY2xlcyMyNS4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMC4xNy4wMS4wMCNGaXJlIG9yIHJlc2N1ZSB0cnVja3MjMjUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMTcuMDIuMDAjUG9saWNlIHZlaGljbGVzIzI1LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI1LjEwLjE3LjAzLjAwI0FtYnVsYW5jZXMjMjUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMTguMDAuMDAjTW90b3JpemVkIGN5Y2xlcyMyNS4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMC4xOC4wMS4wMCNNb3RvcmN5Y2xlcyMyNS4xMC4xOC4wMC4wMAotdW5zcHNjNyMyNS4xMC4xOC4wMi4wMCNTY29vdGVycyMyNS4xMC4xOC4wMC4wMAotdW5zcHNjNyMyNS4xMC4xOC4wMy4wMCNNb3BlZHMjMjUuMTAuMTguMDAuMDAKLXVuc3BzYzcjMjUuMTAuMTkuMDAuMDAjU3BlY2lhbGl6ZWQgYW5kIHJlY3JlYXRpb25hbCB2ZWhpY2xlcyMyNS4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMC4xOS4wMS4wMCNBZ3JpY3VsdHVyYWwgdHJhY3RvcnMjMjUuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMTkuMDIuMDAjTW90b3IgaG9tZXMjMjUuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMTkuMDMuMDAjU25vd21vYmlsZXMgb3Igc25vdyBzY29vdGVyIzI1LjEwLjE5LjAwLjAwCi11bnNwc2M3IzI1LjEwLjE5LjA0LjAwI0dvbGYgY2FydHMjMjUuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMTkuMDUuMDAjQWxsIHRlcnJhaW4gdmVoaWNsZXMgdHJhY2tlZCBvciB3aGVlbGVkIzI1LjEwLjE5LjAwLjAwCi11bnNwc2M3IzI1LjEwLjE5LjA2LjAwI0dvIGNhcnQjMjUuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMjAuMDAuMDAjV2FyIHZlaGljbGVzIzI1LjEwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjEwLjIwLjAxLjAwI1RhbmtzIzI1LjEwLjIwLjAwLjAwCi11bnNwc2M3IzI1LjEwLjIwLjAyLjAwI0FybW9yZWQgZmlnaHRpbmcgdmVoaWNsZXMjMjUuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMjAuMDMuMDAjU2VsZiBwcm9wZWxsZWQgYXJ0aWxsZXJ5IzI1LjEwLjIwLjAwLjAwCi11bnNwc2M3IzI1LjEwLjIxLjAwLjAwI1RydWNrIHRyYWN0b3JzIzI1LjEwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjEwLjIxLjAxLjAwI0xvdyBjYWIgZm9yd2FyZCB0cmFjdG9ycyMyNS4xMC4yMS4wMC4wMAotdW5zcHNjNyMyNS4xMC4yMS4wMi4wMCNMb25nIG5vc2UgdHJhY3RvcnMgd2l0aCBzbGVlcGVyIzI1LjEwLjIxLjAwLjAwCi11bnNwc2M3IzI1LjEwLjIxLjAzLjAwI0xvbmcgbm9zZSB0cmFjdG9ycyB3aXRob3V0IHNsZWVwZXIjMjUuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMjUuMTAuMjEuMDQuMDAjQ2FiIG92ZXIgZW5naW5lIHRyYWN0b3JzIHdpdGggc2xlZXBlciMyNS4xMC4yMS4wMC4wMAotdW5zcHNjNyMyNS4xMC4yMS4wNS4wMCNDYWIgb3ZlciBlbmdpbmUgdHJhY3RvcnMgd2l0aG91dCBzbGVlcGVyIzI1LjEwLjIxLjAwLjAwCi11bnNwc2M3IzI1LjExLjAwLjAwLjAwI01hcmluZSB0cmFuc3BvcnQjMjUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTUuMDAuMDAjQ29tbWVyY2lhbCBtYXJpbmUgY3JhZnQjMjUuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTUuMDEuMDAjVHJhd2xlcnMjMjUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTUuMDIuMDAjRmlzaGluZyBib2F0cyMyNS4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNS4wMy4wMCNDYXJnbyBvciBjb250YWluZXIgc2hpcHMjMjUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTUuMDQuMDAjRHJlZGdpbmcgY3JhZnQjMjUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTUuMDUuMDAjVGFua2VycyMyNS4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNS4wNi4wMCNUdWcgYm9hdHMjMjUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTUuMDcuMDAjQmFyZ2VzIzI1LjExLjE1LjAwLjAwCi11bnNwc2M3IzI1LjExLjE1LjA4LjAwI1Bhc3NlbmdlciBvciBhdXRvbW9iaWxlIGZlcnJpZXMjMjUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTUuMDkuMDAjQ3J1aXNlIHNoaXBzIzI1LjExLjE1LjAwLjAwCi11bnNwc2M3IzI1LjExLjE1LjEwLjAwI1NhbHZhZ2Ugc2hpcHMjMjUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTUuMTEuMDAjT2lsIG9yIGdhcyBjcmV3IGJvYXQjMjUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTUuMTIuMDAjT2lsIG9yIGdhcyB3b3JrYm9hdCMyNS4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNS4xMy4wMCNTZWlzbWljIHZlc3NlbCMyNS4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNi4wMC4wMCNTYWZldHkgYW5kIHJlc2N1ZSB3YXRlciBjcmFmdCMyNS4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNi4wMS4wMCNMaWZlYm9hdHMgb3IgbGlmZXJhZnRzIzI1LjExLjE2LjAwLjAwCi11bnNwc2M3IzI1LjExLjE2LjAyLjAwI0ZpcmUgZmlnaHRpbmcgd2F0ZXJjcmFmdCMyNS4xMS4xNi4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNi4wMy4wMCNSZXNjdWUgc2hpcHMgb3IgYm9hdHMjMjUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTcuMDAuMDAjTWlsaXRhcnkgd2F0ZXJjcmFmdCMyNS4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNy4wMS4wMCNTdWJtYXJpbmVzIzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjAyLjAwI0FpcmNyYWZ0IGNhcnJpZXJzIzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjAzLjAwI0FtbXVuaXRpb24gc2hpcHMjMjUuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTcuMDQuMDAjQW1waGliaW91cyBhc3NhdWx0IHNoaXBzIzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjA1LjAwI0FtcGhpYmlvdXMgdHJhbnNwb3J0IGRvY2tzIzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjA2LjAwI0FtcGhpYmlvdXMgY29tbWFuZCBzaGlwcyMyNS4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNy4wNy4wMCNDb21tYW5kIHNoaXBzIzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjA4LjAwI0NydWlzZXJzIzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjA5LjAwI0Rlc3Ryb3llcnMjMjUuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTcuMTAuMDAjRG9jayBsYW5kaW5nIHNoaXBzIzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjExLjAwI0Zhc3QgY29tYmF0IHN1cHBvcnQgc2hpcHMjMjUuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTcuMTIuMDAjRnJpZ2F0ZXMjMjUuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTcuMTMuMDAjRmxlZXQgb2lsZXJzIzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjE0LjAwI1V0aWxpdHkgbGFuZGluZyB3YXRlcmNyYWZ0IzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjE1LjAwI01lY2hhbml6ZWQgb3IgdXRpbGl0eSB3YXRlcmNyYWZ0IzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjE2LjAwI01pbmUgaHVudGluZyBzaGlwcyMyNS4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNy4xNy4wMCNNaW5lIGNvdW50ZXJtZWFzdXJlcyBzaGlwcyMyNS4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNy4xOC4wMCNDb2FzdGFsIHBhdHJvbCB3YXRlcmNyYWZ0IzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjE5LjAwI1N1Ym1hcmluZSB0ZW5kZXJzIzI1LjExLjE3LjAwLjAwCi11bnNwc2M3IzI1LjExLjE3LjIwLjAwI1RhbmsgbGFuZGluZyBzaGlwcyMyNS4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xMS4xNy4yMS4wMCNBaXIgY3VzaGlvbmVkIGxhbmRpbmcgd2F0ZXJjcmFmdCMyNS4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xMS4xOC4wMC4wMCNSZWNyZWF0aW9uYWwgd2F0ZXJjcmFmdCMyNS4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMS4xOC4wMS4wMCNSZWNyZWF0aW9uYWwgc2FpbGJvYXRzIzI1LjExLjE4LjAwLjAwCi11bnNwc2M3IzI1LjExLjE4LjAyLjAwI1JlY3JlYXRpb25hbCBtb3RvcmJvYXRzIzI1LjExLjE4LjAwLjAwCi11bnNwc2M3IzI1LjExLjE4LjAzLjAwI1JlY3JlYXRpb25hbCByb3dib2F0cyMyNS4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNS4xMS4xOC4wNC4wMCNDYW5vZXMgb3Iga2F5YWtzIzI1LjExLjE4LjAwLjAwCi11bnNwc2M3IzI1LjExLjE4LjA1LjAwI1BlcnNvbmFsIG1vdG9yaXplZCB3YXRlcmNyYWZ0IzI1LjExLjE4LjAwLjAwCi11bnNwc2M3IzI1LjExLjE4LjA2LjAwI1JhZnRzIzI1LjExLjE4LjAwLjAwCi11bnNwc2M3IzI1LjExLjE5LjAwLjAwI01hcmluZSBjcmFmdCBzeXN0ZW1zIGFuZCBzdWJhc3NlbWJsaWVzIzI1LjExLjAwLjAwLjAwCi11bnNwc2M3IzI1LjExLjE5LjAxLjAwI01hcmluZSBjcmFmdCBjb21tdW5pY2F0aW9ucyBzeXN0ZW1zIzI1LjExLjE5LjAwLjAwCi11bnNwc2M3IzI1LjExLjE5LjAyLjAwI01hcmluZSBwcm9wZWxsZXJzIzI1LjExLjE5LjAwLjAwCi11bnNwc2M3IzI1LjExLjE5LjAzLjAwI1NhaWxzIzI1LjExLjE5LjAwLjAwCi11bnNwc2M3IzI1LjExLjE5LjA0LjAwI1BhZGRsZXMjMjUuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMTEuMTkuMDUuMDAjTWFyaW5lIGJhbGxhc3Qgc3lzdGVtcyMyNS4xMS4xOS4wMC4wMAotdW5zcHNjNyMyNS4xMi4wMC4wMC4wMCNSYWlsd2F5IGFuZCB0cmFtd2F5IG1hY2hpbmVyeSBhbmQgZXF1aXBtZW50IzI1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjEyLjE1LjAwLjAwI0xvY29tb3RpdmVzIGFuZCBlbGVjdHJpYyB0cm9sbGV5cyMyNS4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMi4xNS4wMS4wMCNEaWVzZWwgZnJlaWdodCBsb2NvbW90aXZlcyMyNS4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMi4xNS4wMi4wMCNFbGVjdHJpYyBmcmVpZ2h0IGxvY29tb3RpdmVzIzI1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzI1LjEyLjE1LjAzLjAwI0RpZXNlbCBwYXNzZW5nZXIgbG9jb21vdGl2ZXMjMjUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTIuMTUuMDQuMDAjRWxlY3RyaWMgcGFzc2VuZ2VyIGxvY29tb3RpdmVzIzI1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzI1LjEyLjE2LjAwLjAwI1JhaWx3YXkgYW5kIHRyYW13YXkgY2FycyMyNS4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMi4xNi4wMS4wMCNGcmVpZ2h0IHJhaWwgY2FycyMyNS4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNS4xMi4xNi4wMi4wMCNUYW5rZXIgcmFpbCBjYXJzIzI1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzI1LjEyLjE2LjAzLjAwI1Bhc3NlbmdlciByYWlsIGNhcnMjMjUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjUuMTIuMTYuMDQuMDAjSG9wcGVyIHJhaWwgY2FycyMyNS4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNS4xMi4xNi4wNS4wMCNTdHJlZXRjYXJzIG9yIHRyYW13YXkgY2FycyMyNS4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNS4xMi4xNy4wMC4wMCNSYWlscm9hZCBzdXBwb3J0IGVxdWlwbWVudCBhbmQgc3lzdGVtcyMyNS4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMi4xNy4wMS4wMCNSYWlsIHN3aXRjaGluZyBzeXN0ZW1zIzI1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzI1LjEyLjE3LjAyLjAwI1JhaWx3YXkgc2xlZXBlcnMjMjUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTIuMTcuMDMuMDAjUmFpbHdheSB0cmFja3MjMjUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTIuMTcuMDQuMDAjUmFpbHdheSBmcm9ncyBvciBmaXNoIHBsYXRlcyMyNS4xMi4xNy4wMC4wMAotdW5zcHNjNyMyNS4xMy4wMC4wMC4wMCNBaXJjcmFmdCMyNS4wMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNS4wMC4wMCNQb3dlcmVkIGZpeGVkIHdpbmcgYWlyY3JhZnQjMjUuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTUuMDEuMDAjRml4ZWQgd2luZyBhZ3JpY3VsdHVyYWwgYWlyY3JhZnQjMjUuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTUuMDIuMDAjQ2FyZ28gcHJvcGVsbGVyIGFpcmNyYWZ0IzI1LjEzLjE1LjAwLjAwCi11bnNwc2M3IzI1LjEzLjE1LjAzLjAwI1NlYXBsYW5lcyMyNS4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNS4wNC4wMCNDb21tZXJjaWFsIHBhc3NlbmdlciBwcm9wZWxsZXIgYWlyY3JhZnQjMjUuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTUuMDUuMDAjQ2FyZ28gamV0IGFpcmNyYWZ0IzI1LjEzLjE1LjAwLjAwCi11bnNwc2M3IzI1LjEzLjE1LjA2LjAwI0NvbW1lcmNpYWwgcGFzc2VuZ2VyIGpldCBhaXJjcmFmdCMyNS4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNS4wNy4wMCNQcml2YXRlIG9yIGJ1c2luZXNzIHByb3BlbGxlciBhaXJjcmFmdCMyNS4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNS4wOC4wMCNQcml2YXRlIG9yIGJ1c2luZXNzIGpldCBhaXJjcmFmdCMyNS4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNi4wMC4wMCNDaXZpbGlhbiBhbmQgY29tbWVyY2lhbCByb3Rhcnkgd2luZyBhaXJjcmFmdCMyNS4xMy4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNi4wMS4wMCNQYXNzZW5nZXIgdHJhbnNwb3J0IGhlbGljb3B0ZXJzIzI1LjEzLjE2LjAwLjAwCi11bnNwc2M3IzI1LjEzLjE2LjAyLjAwI0NhcmdvIHRyYW5zcG9ydCBoZWxpY29wdGVycyMyNS4xMy4xNi4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNi4wMy4wMCNBZ3JpY3VsdHVyYWwgaGVsaWNvcHRlcnMjMjUuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTYuMDQuMDAjTWVkaWNhbCBvciByZXNjdWUgaGVsaWNvcHRlcnMjMjUuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTcuMDAuMDAjTWlsaXRhcnkgZml4ZWQgd2luZyBhaXJjcmFmdCMyNS4xMy4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNy4wMS4wMCNCb21iZXIgYWlyY3JhZnQjMjUuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTcuMDIuMDAjRmlnaHRlciBib21iZXIgYWlyY3JhZnQjMjUuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTcuMDMuMDAjRmlnaHRlciBhaXJjcmFmdCMyNS4xMy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNy4wNC4wMCNBdHRhY2sgYWlyY3JhZnQjMjUuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTcuMDUuMDAjVGFyZ2V0IG9yIHJlY29ubmFpc3NhbmNlIGRyb25lcyMyNS4xMy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xMy4xNy4wNi4wMCNNaWxpdGFyeSBzZWFwbGFuZXMjMjUuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTcuMDcuMDAjUmVjb25uYWlzc2FuY2Ugb3Igc3VydmVpbGxhbmNlIGFpcmNyYWZ0IzI1LjEzLjE3LjAwLjAwCi11bnNwc2M3IzI1LjEzLjE3LjA4LjAwI0FudGkgc3VibWFyaW5lIGFpcmNyYWZ0IzI1LjEzLjE3LjAwLjAwCi11bnNwc2M3IzI1LjEzLjE3LjA5LjAwI01pbGl0YXJ5IHRyYW5zcG9ydCBhaXJjcmFmdCMyNS4xMy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xMy4xOC4wMC4wMCNTcGVjaWFsdHkgYWlyY3JhZnQjMjUuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTguMDEuMDAjQWlyc2hpcHMjMjUuMTMuMTguMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTkuMDAuMDAjTWlsaXRhcnkgcm90YXJ5IHdpbmcgYWlyY3JhZnQjMjUuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMTkuMDIuMDAjTWlsaXRhcnkgdHJhbnNwb3J0IGhlbGljb3B0ZXJzIzI1LjEzLjE5LjAwLjAwCi11bnNwc2M3IzI1LjEzLjE5LjAzLjAwI0F0dGFjayBoZWxpY29wdGVycyMyNS4xMy4xOS4wMC4wMAotdW5zcHNjNyMyNS4xMy4xOS4wNC4wMCNSZWNvbm5haXNzYW5jZSBoZWxpY29wdGVycyMyNS4xMy4xOS4wMC4wMAotdW5zcHNjNyMyNS4xMy4xOS4wNS4wMCNBbnRpIHN1Ym1hcmluZSBoZWxpY29wdGVycyMyNS4xMy4xOS4wMC4wMAotdW5zcHNjNyMyNS4xMy4xOS4wNi4wMCNUaWx0IHJvdG9yIHdpbmcgYWlyY3JhZnQjMjUuMTMuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMjAuMDAuMDAjUmVjcmVhdGlvbmFsIGFpcmNyYWZ0IzI1LjEzLjAwLjAwLjAwCi11bnNwc2M3IzI1LjEzLjIwLjAxLjAwI0hhbmcgZ2xpZGVycyMyNS4xMy4yMC4wMC4wMAotdW5zcHNjNyMyNS4xMy4yMC4wMi4wMCNIb3QgYWlyIGJhbGxvb25zIzI1LjEzLjIwLjAwLjAwCi11bnNwc2M3IzI1LjEzLjIwLjAzLjAwI0dsaWRlcnMjMjUuMTMuMjAuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMjAuMDQuMDAjUGFyYWdsaWRlcnMjMjUuMTMuMjAuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMjAuMDUuMDAjVWx0cmEgbGlnaHQgYWlyY3JhZnQjMjUuMTMuMjAuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMjEuMDAuMDAjQWlyY3JhZnQgbWFuYWdlbWVudCBzZXJ2aWNlcyMyNS4xMy4wMC4wMC4wMAotdW5zcHNjNyMyNS4xMy4yMS4wMS4wMCNBaXJjcmFmdCBwaWxvdHMjMjUuMTMuMjEuMDAuMDAKLXVuc3BzYzcjMjUuMTMuMjEuMDIuMDAjQWlyY3JhZnQgbWFpbnRlbmFuY2Ugb3Igc2VydmljZXMjMjUuMTMuMjEuMDAuMDAKLXVuc3BzYzcjMjUuMTUuMDAuMDAuMDAjU3BhY2VjcmFmdCMyNS4wMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4xNS4xNS4wMC4wMCNTcGFjZXNoaXBzIzI1LjE1LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE1LjE1LjAxLjAwI01hbm5lZCBzcGFjZWNyYWZ0IzI1LjE1LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE1LjE1LjAyLjAwI1NwYWNlY3JhZnQgc3RydWN0dXJlcyMyNS4xNS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xNS4xNy4wMC4wMCNTYXRlbGxpdGVzIzI1LjE1LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE1LjE3LjAxLjAwI0NvbW11bmljYXRpb24gc2F0ZWxsaXRlcyMyNS4xNS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNS4xNy4wMi4wMCNXZWF0aGVyIHNhdGVsbGl0ZXMjMjUuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTUuMTcuMDMuMDAjTWlsaXRhcnkgc2F0ZWxsaXRlcyMyNS4xNS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNS4xNy4wNC4wMCNTY2llbnRpZmljIG9yIHJlc2VhcmNoIHNhdGVsbGl0ZXMjMjUuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTUuMTcuMDUuMDAjTmF2aWdhdGlvbiBzYXRlbGxpdGVzIzI1LjE1LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE1LjE3LjA2LjAwI0dlb3N0YXRpb25hcnkgc2F0ZWxsaXRlcyMyNS4xNS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNS4xNy4wNy4wMCNMb3cgZWFydGggb3JiaXQgc2F0ZWxsaXRlcyMyNS4xNS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNS4xNy4wOC4wMCNTdW4gc3luY2hyb25vdXMgb3JiaXQgc2F0ZWxsaXRlcyMyNS4xNS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNS4xNy4wOS4wMCNHZW9zeW5jaHJvbm91cyBzYXRlbGxpdGVzIzI1LjE1LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE2LjAwLjAwLjAwI05vbiBtb3Rvcml6ZWQgY3ljbGVzIzI1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjE2LjE1LjAwLjAwI1BlZGFsIHBvd2VyZWQgdmVoaWNsZXMjMjUuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTYuMTUuMDEuMDAjVG91cmluZyBiaWN5Y2xlcyMyNS4xNi4xNS4wMC4wMAotdW5zcHNjNyMyNS4xNi4xNS4wMi4wMCNVbmljeWNsZXMjMjUuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTYuMTUuMDMuMDAjVHJpY3ljbGVzIzI1LjE2LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE2LjE1LjA0LjAwI1RhbmRlbSBiaWN5Y2xlcyMyNS4xNi4xNS4wMC4wMAotdW5zcHNjNyMyNS4xNi4xNS4wNS4wMCNNb3VudGFpbiBiaWN5Y2xlcyMyNS4xNi4xNS4wMC4wMAotdW5zcHNjNyMyNS4xNi4xNS4wNi4wMCNSYWNpbmcgYmljeWNsZXMjMjUuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTYuMTUuMDcuMDAjQmljeWNsZXMjMjUuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTYuMTUuMDguMDAjUmVjdW1iZW50IGJpY3ljbGVzIzI1LjE2LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE2LjE1LjA5LjAwI0NoaWxkcmVucyBiaWN5Y2xlcyMyNS4xNi4xNS4wMC4wMAotdW5zcHNjNyMyNS4xNy4wMC4wMC4wMCNUcmFuc3BvcnRhdGlvbiBjb21wb25lbnRzIGFuZCBzeXN0ZW1zIzI1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjE1LjAwLjAwI1dpbmRzaGllbGQgd2lwZXJzIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjE1LjAxLjAwI0FpcmNyYWZ0IHdpbmRzaGllbGQgd2lwZXJzIzI1LjE3LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE3LjE1LjAyLjAwI0F1dG9tb3RpdmUgd2luZHNoaWVsZCB3aXBlcnMjMjUuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTUuMDMuMDAjTG9jb21vdGl2ZSB3aW5kc2hpZWxkIHdpcGVycyMyNS4xNy4xNS4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNS4wNC4wMCNNYXJpbmUgd2luZHNoaWVsZCB3aXBlcnMjMjUuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTUuMDUuMDAjVHJ1Y2sgd2luZHNoaWVsZCB3aXBlcnMjMjUuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTUuMDYuMDAjV2luZHNoaWVsZCB3aXBlciBwdW1wIzI1LjE3LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE3LjE2LjAwLjAwI0RlZnJvc3RpbmcgYW5kIGRlZm9nZ2luZyBzeXN0ZW1zIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjE2LjAxLjAwI0FpcmNyYWZ0IG9uYm9hcmQgZGVmcm9zdGluZyBvciBkZWZvZ2dpbmcgc3lzdGVtcyMyNS4xNy4xNi4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNi4wMi4wMCNBdXRvbW90aXZlIGRlZnJvc3Rpbmcgb3IgZGVmb2dnaW5nIHN5c3RlbXMjMjUuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTYuMDMuMDAjVHJhaW4gZGVmcm9zdGluZyBvciBkZWZvZ2dpbmcgc3lzdGVtcyMyNS4xNy4xNi4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNy4wMC4wMCNCcmFraW5nIHN5c3RlbXMgYW5kIGNvbXBvbmVudHMjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTcuMDEuMDAjQWlyY3JhZnQgYnJha2luZyBzeXN0ZW1zIzI1LjE3LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE3LjE3LjAyLjAwI0F1dG9tb3RpdmUgYnJha2luZyBzeXN0ZW1zIzI1LjE3LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE3LjE3LjAzLjAwI1RyYWluIGJyYWtpbmcgc3lzdGVtcyMyNS4xNy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNy4wNC4wMCNEcmFnIGNodXRlcyMyNS4xNy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNy4wNS4wMCNSb3RvcnMjMjUuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTcuMDYuMDAjQnJha2UgY2FsaXBlcnMjMjUuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTcuMDcuMDAjRHJ1bSBicmFrZSMyNS4xNy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNy4wOC4wMCNEaXNjIGJyYWtlIzI1LjE3LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE3LjE3LjA5LjAwI0xpcXVpZCBjb29sZWQgYnJha2UjMjUuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTcuMTAuMDAjTWFzdGVyIGN5bGluZGFycyMyNS4xNy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNy4xMS4wMCNTbGF2ZSBjeWxpbmRlcnMjMjUuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTcuMTIuMDAjRHJ1bSBicmFrZSBzaG9lcyMyNS4xNy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNy4xMy4wMCNEaXNjIGJyYWtlIHBhZHMjMjUuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTcuMTQuMDAjQnJha2UgZHJ1bSMyNS4xNy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNy4xNS4wMCNEaXNjIGJyYWtlIHJvdG9ycyMyNS4xNy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4xNy4xNi4wMCNCcmFrZSBsaW5lcyMyNS4xNy4xNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4xOS4wMC4wMCNXaGVlbHMgYW5kIHdoZWVsIHRyaW1zIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjE5LjAxLjAwI0F1dG9tb2JpbGUgcmltcyBvciB3aGVlbHMjMjUuMTcuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMTkuMDIuMDAjVHJhaW4gd2hlZWxzIzI1LjE3LjE5LjAwLjAwCi11bnNwc2M3IzI1LjE3LjE5LjAzLjAwI1RydWNrIHJpbXMgb3Igd2hlZWxzIzI1LjE3LjE5LjAwLjAwCi11bnNwc2M3IzI1LjE3LjE5LjA0LjAwI0FpcmNyYWZ0IHdoZWVscyMyNS4xNy4xOS4wMC4wMAotdW5zcHNjNyMyNS4xNy4xOS4wNS4wMCNUaXJlIHZhbHZlcyMyNS4xNy4xOS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yMC4wMC4wMCNTdXNwZW5zaW9uIHN5c3RlbSBjb21wb25lbnRzIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIwLjAxLjAwI0F1dG9tb2JpbGUgc3VzcGVuc2lvbiBzeXN0ZW1zIzI1LjE3LjIwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIwLjAyLjAwI1RydWNrIHN1c3BlbnNpb24gc3lzdGVtcyMyNS4xNy4yMC4wMC4wMAotdW5zcHNjNyMyNS4xNy4yMC4wMy4wMCNUcnVjayBzaG9jayBhYnNvcmJlcnMjMjUuMTcuMjAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjAuMDQuMDAjQXV0b21vYmlsZSBzaG9jayBhYnNvcmJlcnMjMjUuMTcuMjAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjAuMDUuMDAjVHJhaW4gc3VzcGVuc2lvbiBzeXN0ZW1zIzI1LjE3LjIwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIwLjA2LjAwI1N0ZWVyaW5nIHN5c3RlbXMjMjUuMTcuMjAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjAuMDcuMDAjU3RydXRzIzI1LjE3LjIwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIwLjA4LjAwI0JhbGwgam9pbnRzIzI1LjE3LjIwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIwLjA5LjAwI0F1dG9tb3RpdmUgYnVzaGluZ3MjMjUuMTcuMjAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjAuMTAuMDAjU3dheSBiYXJzIzI1LjE3LjIwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIwLjExLjAwI1Nob2NrIGFic29yYmVyIzI1LjE3LjIwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIxLjAwLjAwI1ZlaGljbGUgc2FmZXR5IHN5c3RlbXMgYW5kIGNvbXBvbmVudHMjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjEuMDEuMDAjQWlyYmFncyMyNS4xNy4yMS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yMS4wMi4wMCNBaXJjcmFmdCBsYXBiZWx0cyMyNS4xNy4yMS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yMS4wMy4wMCNBaXJjcmFmdCBoYXJuZXNzIHJlc3RyYWludHMjMjUuMTcuMjEuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjEuMDQuMDAjU2VhdGJlbHRzIzI1LjE3LjIxLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIxLjA1LjAwI0NvbGxpc2lvbiBhdm9pZGFuY2Ugc3lzdGVtcyMyNS4xNy4yMS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yMS4wNi4wMCNJbXBhY3Qgc2Vuc2luZyBzeXN0ZW1zIzI1LjE3LjIxLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIxLjA3LjAwI0F1dG9tb3RpdmUgc2VhdGJlbHRzIzI1LjE3LjIxLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIxLjA4LjAwI0hlYWQgcmVzdHJhaW50cyMyNS4xNy4yMS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yMi4wMC4wMCNWZWhpY2xlIGRvb3JzIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIyLjAxLjAwI1JlbW92YWJsZSBhdXRvbW90aXZlIGRvb3JzIzI1LjE3LjIyLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIyLjAyLjAwI0FpcmNyYWZ0IGRvb3JzIzI1LjE3LjIyLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIyLjAzLjAwI0F1dG9tb3RpdmUgZG9vcnMjMjUuMTcuMjIuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjIuMDQuMDAjUm9sbCB1cCB0cnVjayBkb29ycyMyNS4xNy4yMi4wMC4wMAotdW5zcHNjNyMyNS4xNy4yMi4wNS4wMCNUYWlsZ2F0ZXMgb3IgbGlmdGdhdGVzIzI1LjE3LjIyLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIzLjAwLjAwI1ZlaGljbGUgd2luZG93cyBhbmQgd2luZHNoaWVsZHMjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjMuMDEuMDAjQXV0b21vdGl2ZSB3aW5kc2hpZWxkcyMyNS4xNy4yMy4wMC4wMAotdW5zcHNjNyMyNS4xNy4yMy4wMi4wMCNBaXJjcmFmdCB3aW5kb3dzIzI1LjE3LjIzLjAwLjAwCi11bnNwc2M3IzI1LjE3LjIzLjAzLjAwI0F1dG9tb3RpdmUgd2luZG93cyMyNS4xNy4yMy4wMC4wMAotdW5zcHNjNyMyNS4xNy4yMy4wNC4wMCNBaXJjcmFmdCB3aW5kc2hpZWxkcyMyNS4xNy4yMy4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNC4wMC4wMCNGdWVsIHRhbmtzIGFuZCBzeXN0ZW1zIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjI0LjAxLjAwI0FpcmNyYWZ0IGludGVybmFsIGZ1ZWwgdGFua3MjMjUuMTcuMjQuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjQuMDIuMDAjQWlyY3JhZnQgZnVlbCBkcm9wIHRhbmtzIzI1LjE3LjI0LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI0LjAzLjAwI0FpcmNyYWZ0IHByb3BlbGxlbnQgdGFua3MjMjUuMTcuMjQuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjQuMDQuMDAjSHlicmlkIGZ1ZWwgc3RvcmFnZSBzeXN0ZW1zIzI1LjE3LjI0LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI0LjA1LjAwI0Z1ZWwgaW5qZWN0aW9uIHN5c3RlbXMjMjUuMTcuMjQuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjQuMDYuMDAjRnVlbCB0YW5rcyMyNS4xNy4yNC4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNC4wNy4wMCNCcmVhdGhlciBlbGVtZW50cyMyNS4xNy4yNC4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNC4wOC4wMCNGdWVsIG9yIG9pbCBjYXBzIzI1LjE3LjI0LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI1LjAwLjAwI1RpcmVzIGFuZCB0aXJlIHR1YmVzIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjI1LjAxLjAwI0FpcmNyYWZ0IHRpcmVzIzI1LjE3LjI1LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI1LjAyLjAwI0F1dG9tb2JpbGUgdGlyZSB0dWJlcyMyNS4xNy4yNS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNS4wMy4wMCNIZWF2eSB0cnVjayB0aXJlcyMyNS4xNy4yNS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNS4wNC4wMCNBdXRvbW9iaWxlIG9yIGxpZ2h0IHRydWNrIHRpcmVzIzI1LjE3LjI1LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI1LjA1LjAwI0JpY3ljbGUgdHViZXMjMjUuMTcuMjUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjUuMDYuMDAjQmljeWNsZSB0aXJlcyMyNS4xNy4yNS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNS4wNy4wMCNUaXJlIGNvcmQjMjUuMTcuMjUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjUuMDguMDAjVGlyZSB0cmVhZHMjMjUuMTcuMjUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjYuMDAuMDAjVmVoaWNsZSB0cmltIGFuZCBleHRlcmlvciBjb3ZlcmluZyMyNS4xNy4wMC4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNi4wMS4wMCNBdXRvbW90aXZlIHRyaW0jMjUuMTcuMjYuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjYuMDIuMDAjQXV0b21vdGl2ZSBmZW5kZXJzIzI1LjE3LjI2LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI2LjAzLjAwI1ZlaGljbGUgYnVtcGVycyMyNS4xNy4yNi4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNi4wNC4wMCNWZWhpY2xlIG1pcnJvcnMjMjUuMTcuMjYuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjYuMDUuMDAjVmVoaWNsZSBncmlsbGVzIzI1LjE3LjI2LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI2LjA2LjAwI1ZlaGljbGUgaG9vZHMjMjUuMTcuMjYuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjYuMDcuMDAjVmVoaWNsZSBzaWRlIHBhbmVscyMyNS4xNy4yNi4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNi4wOC4wMCNGYXNjaWFzIzI1LjE3LjI2LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI3LjAwLjAwI0Vudmlyb25tZW50YWwgY29udHJvbCBzeXN0ZW1zIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjI3LjAxLjAwI0FpcmNyYWZ0IGVudmlyb25tZW50YWwgY29udHJvbCBzeXN0ZW1zIzI1LjE3LjI3LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI3LjAyLjAwI1NwYWNlIGVudmlyb25tZW50YWwgY29udHJvbCBzeXN0ZW1zIzI1LjE3LjI3LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI3LjAzLjAwI01hcmluZSBlbnZpcm9ubWVudGFsIGNvbnRyb2wgc3lzdGVtcyMyNS4xNy4yNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4yNy4wNC4wMCNWZWhpY2xlIGNsaW1hdGUgY29udHJvbCBzeXN0ZW1zIzI1LjE3LjI3LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI4LjAwLjAwI0h5ZHJhdWxpYyBzeXN0ZW1zIGFuZCBjb21wb25lbnRzIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjI4LjAxLjAwI0FpcmNyYWZ0IGh5ZHJhdWxpYyBzeXN0ZW1zIzI1LjE3LjI4LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI4LjAyLjAwI0F1dG9tb3RpdmUgaHlkcmF1bGljIHN5c3RlbXMjMjUuMTcuMjguMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjguMDMuMDAjTWFyaW5lIGh5ZHJhdWxpYyBzeXN0ZW1zIzI1LjE3LjI4LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI5LjAwLjAwI0V4dGVyaW9yIHZlaGljbGUgbGlnaHRpbmcjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMjkuMDEuMDAjRXh0ZXJpb3IgYXV0b21vYmlsZSBsaWdodGluZyMyNS4xNy4yOS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yOS4wMi4wMCNFeHRlcmlvciBhaXJjcmFmdCBsaWdodGluZyMyNS4xNy4yOS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yOS4wMy4wMCNFeHRlcmlvciByYWlsY2FyIGxpZ2h0aW5nIzI1LjE3LjI5LjAwLjAwCi11bnNwc2M3IzI1LjE3LjI5LjA0LjAwI0V4dGVyaW9yIHNoaXAgb3IgYm9hdCBsaWdodGluZyMyNS4xNy4yOS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yOS4wNS4wMCNIZWFkbGFtcCB3aXBlciBvciB3YXNoZXIgc3lzdGVtcyMyNS4xNy4yOS4wMC4wMAotdW5zcHNjNyMyNS4xNy4yOS4wNi4wMCNSZWZsZWN0b3JzIzI1LjE3LjI5LjAwLjAwCi11bnNwc2M3IzI1LjE3LjMwLjAwLjAwI0ludGVyaW9yIHZlaGljbGUgbGlnaHRpbmcjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzAuMDEuMDAjSW50ZXJpb3IgYXV0b21vYmlsZSBsaWdodGluZyMyNS4xNy4zMC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMC4wMi4wMCNJbnRlcmlvciBhaXJjcmFmdCBsaWdodGluZyMyNS4xNy4zMC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMC4wMy4wMCNJbnRlcmlvciByYWlsY2FyIGxpZ2h0aW5nIzI1LjE3LjMwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjMwLjA0LjAwI0ludGVyaW9yIHNoaXAgb3IgYm9hdCBsaWdodGluZyMyNS4xNy4zMC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMC4wNS4wMCNMaWdodCBwbGF0ZSBhc3NlbWJsaWVzIzI1LjE3LjMwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjMxLjAwLjAwI0xvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIHN5c3RlbXMgYW5kIGNvbXBvbmVudHMjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzEuMDEuMDAjQWlyY3JhZnQgZGlnaXRhbCBhbHRpdHVkZSBjb250cm9sIHN5c3RlbXMjMjUuMTcuMzEuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzEuMDIuMDAjQWlyY3JhZnQgbmF2aWdhdGlvbiBiZWFjb25zIzI1LjE3LjMxLjAwLjAwCi11bnNwc2M3IzI1LjE3LjMxLjAzLjAwI1RlcnJhaW4gZm9sbG93aW5nIHN5c3RlbXMjMjUuMTcuMzEuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzEuMDQuMDAjQWlyY3JhZnQgZ3VpZGFuY2Ugc3lzdGVtcyMyNS4xNy4zMS4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMS4wNS4wMCNBaXJjcmFmdCBzdGVlcmluZyBjb250cm9scyMyNS4xNy4zMS4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMS4wNi4wMCNTcGFjZWNyYWZ0IGF0dGl0dWRlIGNvbnRyb2wgc3lzdGVtcyMyNS4xNy4zMS4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMS4wNy4wMCNWZWhpY3VsYXIgZ2xvYmFsIHBvc2l0aW9uaW5nIHN5c3RlbXMjMjUuMTcuMzEuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzIuMDAuMDAjQ29tbXVuaWNhdGlvbnMgcmVsYXRlZCBzeXN0ZW1zIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjMyLjAxLjAwI0FpcmNyYWZ0IGNvbW11bmljYXRpb24gc3lzdGVtcyMyNS4xNy4zMi4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMi4wMi4wMCNGbGlnaHQgcmVjb3JkZXJzIzI1LjE3LjMyLjAwLjAwCi11bnNwc2M3IzI1LjE3LjMyLjAzLjAwI0FpcmNyYWZ0IGNvdW50ZXJtZWFzdXJlcyMyNS4xNy4zMi4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMi4wNC4wMCNBaXJjcmFmdCBlbmNyeXB0aW9uIG9yIGRlY3J5cHRpb24gc3lzdGVtcyMyNS4xNy4zMi4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMi4wNS4wMCNBaXJjcmFmdCB0ZWxlbWV0cnkgc3lzdGVtcyMyNS4xNy4zMi4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMi4wNi4wMCNBaXJjcmFmdCBpbnRlcmZhY2UgZWxlY3Ryb25pY3MjMjUuMTcuMzIuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzMuMDAuMDAjTWFzdGVyIGNvbnRyb2wgc3lzdGVtcyMyNS4xNy4wMC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMy4wMS4wMCNGbGlnaHQgY29tcHV0ZXIgc3lzdGVtcyMyNS4xNy4zMy4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMy4wMi4wMCNTcGFjZWNyYWZ0IGNvbW1hbmQgbW9kdWxlcyMyNS4xNy4zMy4wMC4wMAotdW5zcHNjNyMyNS4xNy4zMy4wMy4wMCNBdXRvbW90aXZlIGNvbXB1dGVyIHN5c3RlbXMjMjUuMTcuMzMuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzMuMDQuMDAjRWxlY3Ryb25pYyBpZ25pdGlvbiBzeXN0ZW1zIzI1LjE3LjMzLjAwLjAwCi11bnNwc2M3IzI1LjE3LjM0LjAwLjAwI1ZlaGljbGUgZW1lcmdlbmN5IHN5c3RlbXMjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzQuMDEuMDAjQWlyY3JhZnQgZmlyZSBjb250cm9sIG9yIGV4dGluZ3Vpc2hpbmcgc3lzdGVtcyMyNS4xNy4zNC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zNC4wMi4wMCNBaXJjcmFmdCBlc2NhcGUgb3IgZWplY3Rpb24gc3lzdGVtcyMyNS4xNy4zNC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zNC4wMy4wMCNBaXJjcmFmdCB3YXJuaW5nIHN5c3RlbXMjMjUuMTcuMzQuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzUuMDAuMDAjVmVoaWNsZSBwb3dlciBzeXN0ZW1zIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjM1LjAxLjAwI1NwYWNlY3JhZnQgc29sYXIgY2VsbHMjMjUuMTcuMzUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzUuMDIuMDAjU3BhY2VjcmFmdCBzb2xhciBhcnJheXMjMjUuMTcuMzUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzYuMDAuMDAjVmVoaWNsZSBpbnN0cnVtZW50YXRpb24jMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzYuMDEuMDAjQWlyY3JhZnQgY29ja3BpdCBkaXNwbGF5cyMyNS4xNy4zNi4wMC4wMAotdW5zcHNjNyMyNS4xNy4zNy4wMC4wMCNFeGhhdXN0IGFuZCBlbWlzc2lvbiBjb250cm9scyMyNS4xNy4wMC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zNy4wMS4wMCNDYXRhbHl0aWMgY29udmVydGVycyMyNS4xNy4zNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4zNy4wMi4wMCNNdWZmbGVycyMyNS4xNy4zNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4zNy4wMy4wMCNFeGhhdXN0IG1hbmlmb2xkcyMyNS4xNy4zNy4wMC4wMAotdW5zcHNjNyMyNS4xNy4zOC4wMC4wMCNEcml2ZXRyYWluIHN5c3RlbXMjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzguMDEuMDAjRHJpdmluZyBheGxlcyMyNS4xNy4zOC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zOC4wMi4wMCNOb24gZHJpdmluZyBheGxlcyMyNS4xNy4zOC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zOC4wMy4wMCNBeGxlIGhvdXNpbmdzIzI1LjE3LjM4LjAwLjAwCi11bnNwc2M3IzI1LjE3LjM4LjA0LjAwI0F4bGUgc3BpbmRsZXMjMjUuMTcuMzguMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzguMDUuMDAjRGlmZmVyZW50aWFscyMyNS4xNy4zOC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zOC4wNi4wMCNDb25zdGFudCB2ZWxvY2l0eSBqb2ludHMjMjUuMTcuMzguMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzguMDcuMDAjQXhsZSBzaGFmdHMjMjUuMTcuMzguMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzguMDguMDAjQXhsZSByZXBhaXIga2l0cyMyNS4xNy4zOC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zOC4wOS4wMCNBeGxlIGh1YnMjMjUuMTcuMzguMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzguMTAuMDAjVW5pdmVyc2FsIGpvaW50cyMyNS4xNy4zOC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zOC4xMS4wMCNEcml2ZSBzaGFmdHMjMjUuMTcuMzguMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzguMTIuMDAjTWFudWFsIHRyYW5zbWlzc2lvbnMjMjUuMTcuMzguMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzguMTMuMDAjQXV0b21hdGljIHRyYW5zbWlzc2lvbnMjMjUuMTcuMzguMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzguMTQuMDAjUG93ZXIgdGFrZSBvZmZzIzI1LjE3LjM4LjAwLjAwCi11bnNwc2M3IzI1LjE3LjM4LjE1LjAwI0NsdXRjaCBjYWJsZXMjMjUuMTcuMzguMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzguMTYuMDAjSHlkcmF1bGljIGNsdXRjaCBwYXJ0cyMyNS4xNy4zOC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zOC4xNy4wMCNEcml2ZXRyYWluIGNoYWlucyMyNS4xNy4zOC4wMC4wMAotdW5zcHNjNyMyNS4xNy4zOS4wMC4wMCNFbGVjdHJpY2FsIGNvbXBvbmVudHMjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuMzkuMDEuMDAjSWduaXRpb24jMjUuMTcuMzkuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDAuMDAuMDAjRW5naW5lIGNvb2xhbnQgc3lzdGVtIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQwLjAxLjAwI0ZhbiMyNS4xNy40MC4wMC4wMAotdW5zcHNjNyMyNS4xNy40MC4wMi4wMCNWZWhpY2xlIHJhZGlhdG9ycyMyNS4xNy40MC4wMC4wMAotdW5zcHNjNyMyNS4xNy40MC4wMy4wMCNSYWRpYXRvciBjYXBzIzI1LjE3LjQwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQwLjA0LjAwI0VuZ2luZSBjb29sYW50IzI1LjE3LjQwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQxLjAwLjAwI1Jvb2Ygc3lzdGVtcyMyNS4xNy4wMC4wMC4wMAotdW5zcHNjNyMyNS4xNy40MS4wMS4wMCNFbWVyZ2VuY3kgdmVoaWNsZSBleGl0cyMyNS4xNy40MS4wMC4wMAotdW5zcHNjNyMyNS4xNy40MS4wMi4wMCNQZXJtYW5lbnQgY29udmVydGlibGUgcm9vZiB0b3BzIzI1LjE3LjQxLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQxLjAzLjAwI1JlbW92YWJsZSBoYXJkIHJvb2YgdG9wcyMyNS4xNy40MS4wMC4wMAotdW5zcHNjNyMyNS4xNy40MS4wNC4wMCNSZW1vdmFibGUgc29mdCByb29mIHRvcHMjMjUuMTcuNDEuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDEuMDUuMDAjUm9vZiByYWNrIHN5c3RlbXMjMjUuMTcuNDEuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDEuMDYuMDAjU3Vucm9vZnMgb3IgbW9vbnJvb2ZzIzI1LjE3LjQxLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQxLjA3LjAwI1dpbmQgZGVmbGVjdG9ycyMyNS4xNy40MS4wMC4wMAotdW5zcHNjNyMyNS4xNy40Mi4wMC4wMCNTdGVlcmluZyBzeXN0ZW0jMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDIuMDEuMDAjU3RlZXJpbmcgc2Fja3MjMjUuMTcuNDIuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDIuMDIuMDAjU3RlZXJpbmcgc3VzcGVuc2lvbiMyNS4xNy40Mi4wMC4wMAotdW5zcHNjNyMyNS4xNy40Mi4wMy4wMCNCYWxsIGpvaW50IzI1LjE3LjQyLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQyLjA0LjAwI1Bvd2VyIHN0ZWVyaW5nIHN5c3RlbSMyNS4xNy40Mi4wMC4wMAotdW5zcHNjNyMyNS4xNy40Mi4wNS4wMCNUaWUgUm9kcyMyNS4xNy40Mi4wMC4wMAotdW5zcHNjNyMyNS4xNy40Mi4wNi4wMCNEcmFnIGxpbmsjMjUuMTcuNDIuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDIuMDcuMDAjU3RlZXJpbmcgbGlua2FnZSMyNS4xNy40Mi4wMC4wMAotdW5zcHNjNyMyNS4xNy40Mi4wOC4wMCNIdWJsb2NrIzI1LjE3LjQyLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQyLjA5LjAwI1BpbmlvbnMjMjUuMTcuNDIuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDIuMTAuMDAjUG93ZXIgc3RlZXJpbmcgdHVuaW5nIGNhYmxlIzI1LjE3LjQyLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQzLjAwLjAwI1ZlaGljbGUgZXhoYXVzdCBzeXN0ZW1zIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQzLjAxLjAwI0NhdGFseXRpYyBjb252ZXJ0ZXJzIzI1LjE3LjQzLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQzLjAyLjAwI011ZmZsZXJzIG9yIHJlc29uYXRvcnMjMjUuMTcuNDMuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDQuMDAuMDAjVmVoaWNsZSBpbnRlcmlvciBzeXN0ZW1zIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQ0LjAxLjAwI0JlemVscyMyNS4xNy40NC4wMC4wMAotdW5zcHNjNyMyNS4xNy40NC4wMi4wMCNDb25zb2xlcyMyNS4xNy40NC4wMC4wMAotdW5zcHNjNyMyNS4xNy40NC4wMy4wMCNEb29yIHBhbmVscyMyNS4xNy40NC4wMC4wMAotdW5zcHNjNyMyNS4xNy40NC4wNC4wMCNIZWFkbGluZXJzIzI1LjE3LjQ0LjAwLjAwCi11bnNwc2M3IzI1LjE3LjQ0LjA1LjAwI0luc3RydW1lbnQgY2x1c3RlcnMjMjUuMTcuNDQuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDQuMDYuMDAjSW5zdHJ1bWVudCBwYW5lbHMjMjUuMTcuNDQuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDQuMDcuMDAjUGVkYWxzIzI1LjE3LjQ0LjAwLjAwCi11bnNwc2M3IzI1LjE3LjQ0LjA4LjAwI1Bvd2VyIHBvcnRzIG9yIGxpZ2h0ZXJzIzI1LjE3LjQ0LjAwLjAwCi11bnNwc2M3IzI1LjE3LjQ0LjA5LjAwI1N1biB2aXNvcnMjMjUuMTcuNDQuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDUuMDAuMDAjVmVoaWNsZSBzYWZldHkgYW5kIHNlY3VyaXR5IHN5c3RlbXMjMjUuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDUuMDEuMDAjQWlyIGJhZyBwcm9wZWxsYW50IGNhbmlzdGVycyMyNS4xNy40NS4wMC4wMAotdW5zcHNjNyMyNS4xNy40NS4wMi4wMCNBaXIgYmFncyMyNS4xNy40NS4wMC4wMAotdW5zcHNjNyMyNS4xNy40NS4wMy4wMCNWZWhpY2xlIGhvcm5zIzI1LjE3LjQ1LjAwLjAwCi11bnNwc2M3IzI1LjE3LjQ1LjA0LjAwI1JlbW90ZSBsb2NraW5nIHN5c3RlbSMyNS4xNy40NS4wMC4wMAotdW5zcHNjNyMyNS4xNy40NS4wNS4wMCNWZWhpY2xlIHN0YWJpbGl0eSBjb250cm9sIHN5c3RlbXMjMjUuMTcuNDUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDUuMDYuMDAjVmVoaWNsZSB0cmFjdGlvbiBjb250cm9sIHN5c3RlbXMjMjUuMTcuNDUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDUuMDcuMDAjVmVoaWNsZSBuYXZpZ2F0aW9uIHN5c3RlbXMjMjUuMTcuNDUuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDUuMDguMDAjV2hlZWwgY2xhbXBzIzI1LjE3LjQ1LjAwLjAwCi11bnNwc2M3IzI1LjE3LjQ2LjAwLjAwI1ZlaGljbGUgc2VhdGluZyBzeXN0ZW1zIzI1LjE3LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE3LjQ2LjAxLjAwI1NlYXQgY292ZXJzIzI1LjE3LjQ2LjAwLjAwCi11bnNwc2M3IzI1LjE3LjQ2LjAyLjAwI1NlYXQgY3VzaGlvbnMgb3IgYm9sc3RlcnMjMjUuMTcuNDYuMDAuMDAKLXVuc3BzYzcjMjUuMTcuNDYuMDMuMDAjU2VhdCBmcmFtZXMjMjUuMTcuNDYuMDAuMDAKLXVuc3BzYzcjMjUuMTguMDAuMDAuMDAjVmVoaWNsZSBib2RpZXMgYW5kIHRyYWlsZXJzIzI1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjE4LjE1LjAwLjAwI0FpcmNyYWZ0IGZ1c2VsYWdlIGFuZCBjb21wb25lbnRzIzI1LjE4LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE4LjE1LjAxLjAwI0FpcmNyYWZ0IHNwb2lsZXJzIzI1LjE4LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE1LjAyLjAwI0FpcmNyYWZ0IGZpbnMjMjUuMTguMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTUuMDMuMDAjQWlyY3JhZnQgaG9yaXpvbnRhbCBzdGFiaWxpemVycyMyNS4xOC4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNS4wNC4wMCNBaXJjcmFmdCBjYW5hcmRzIzI1LjE4LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE1LjA1LjAwI0FpcmNyYWZ0IHNsYXRzIzI1LjE4LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE1LjA2LjAwI0FpcmNyYWZ0IGZsYXBzIzI1LjE4LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE1LjA3LjAwI0FpcmNyYWZ0IHJ1ZGRlcnMjMjUuMTguMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTUuMDguMDAjQWlyY3JhZnQgZWxldmF0b3JzIzI1LjE4LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE1LjA5LjAwI0FpcmNyYWZ0IGFpbGVyb25zIzI1LjE4LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE1LjEwLjAwI0FpcmNyYWZ0IHByb3BlbGxlciMyNS4xOC4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNS4xMS4wMCNBaXJjcmFmdCB3aW5ncyMyNS4xOC4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNS4xMi4wMCNBaXJjcmFmdCBmdXNlbGFnZSMyNS4xOC4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNS4xMy4wMCNBaXJjcmFmdCByYWRvbWVzIzI1LjE4LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE1LjE0LjAwI0FpcmNyYWZ0IHJvdG9ycyMyNS4xOC4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNS4xNS4wMCNBaXJjcmFmdCBsaWZ0IGZhbnMjMjUuMTguMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTUuMTYuMDAjQWlyY3JhZnQgY2Fub3BpZXMjMjUuMTguMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTUuMTcuMDAjQWlyY3JhZnQgZnVybmlzaGluZ3MjMjUuMTguMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTYuMDAuMDAjQXV0b21vdGl2ZSBjaGFzc2lzIzI1LjE4LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE4LjE2LjAxLjAwI0F1dG9tb2JpbGUgY2hhc3NpcyMyNS4xOC4xNi4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNi4wMi4wMCNUcnVjayBjaGFzc2lzIzI1LjE4LjE2LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE2LjAzLjAwI01vdG9yY3ljbGUgZnJhbWVzIzI1LjE4LjE2LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE2LjA0LjAwI1RydWNrIGNoYXNzaXMjMjUuMTguMTYuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTcuMDAuMDAjUHJvZHVjdCBhbmQgbWF0ZXJpYWwgdHJhaWxlcnMjMjUuMTguMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTcuMDEuMDAjQ29udGFpbmVyIHRyYWlsZXJzIzI1LjE4LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE3LjAyLjAwI0ZsYXRiZWQgdHJhaWxlcnMjMjUuMTguMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTcuMDMuMDAjTGl2ZXN0b2NrIHRyYWlsZXJzIzI1LjE4LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE3LjA0LjAwI05vbiB0ZW1wZXJhdHVyZSBjb250cm9sbGVkIHRhbmtlciB0cmFpbGVycyMyNS4xOC4xNy4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNy4wNS4wMCNUZW1wZXJhdHVyZSBjb250cm9sbGVkIHRhbmtlciB0cmFpbGVycyMyNS4xOC4xNy4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNy4wNi4wMCNUZW1wZXJhdHVyZSBjb250cm9sbGVkIGNvbnRhaW5lciB0cmFpbGVycyMyNS4xOC4xNy4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNy4wNy4wMCNBdXRvbW9iaWxlIGNhcnJpZXIgdHJhaWxlcnMjMjUuMTguMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTcuMDguMDAjVHJhaWxlciBoaXRjaGVzIzI1LjE4LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE3LjA5LjAwI1NraXAgbG9hZGVyIzI1LjE4LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE3LjEwLjAwI1RyYWlsZXIgZW5kIHBsYXRlcyMyNS4xOC4xNy4wMC4wMAotdW5zcHNjNyMyNS4xOC4xNy4xMS4wMCNTbm93bW9iaWxlIHRyYWlsZXIjMjUuMTguMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTguMTcuMTIuMDAjTW90b3JjeWNsZSB0cmFpbGVyIzI1LjE4LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE4LjE3LjEzLjAwI0JvYXQgVHJhaWxlciMyNS4xOC4xNy4wMC4wMAotdW5zcHNjNyMyNS4xOS4wMC4wMC4wMCNUcmFuc3BvcnRhdGlvbiBzZXJ2aWNlcyBlcXVpcG1lbnQjMjUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMTkuMTUuMDAuMDAjQWlyIHRyYW5zcG9ydGF0aW9uIHN1cHBvcnQgc3lzdGVtcyBhbmQgZXF1aXBtZW50IzI1LjE5LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE5LjE1LjAxLjAwI0dyb3VuZCBzdXBwb3J0IHRyYWluaW5nIHN5c3RlbXMjMjUuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTkuMTUuMDIuMDAjR3JvdW5kIHN1cHBvcnQgdGVzdCBvciBtYWludGVuYW5jZSBzeXN0ZW1zIzI1LjE5LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE5LjE1LjAzLjAwI0ludGVncmF0ZWQgbWFpbnRlbmFuY2UgaW5mb3JtYXRpb24gc3lzdGVtcyMyNS4xOS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOS4xNS4wNC4wMCNBaXJjcmFmdCBmbGlnaHQgc2ltdWxhdG9ycyBvciB0cmFpbmVycyMyNS4xOS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOS4xNS4wNS4wMCNBaXJjcmFmdCBjYXJnbyBoYW5kbGluZyBlcXVpcG1lbnQjMjUuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMTkuMTUuMDYuMDAjQWlyY3JhZnQgcmVmdWVsaW5nIGVxdWlwbWVudCMyNS4xOS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOS4xNS4wNy4wMCNBaXJjcmFmdCBkZWljaW5nIGVxdWlwbWVudCMyNS4xOS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOS4xNS4wOC4wMCNKZXR3YXlzIzI1LjE5LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE5LjE1LjA5LjAwI0FpcmNyYWZ0IHB1c2hiYWNrIG9yIHRvdyB0cmFjdG9ycyMyNS4xOS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOS4xNS4xMC4wMCNHcm91bmQgcG93ZXIgdW5pdHMgZm9yIGFpcmNyYWZ0IzI1LjE5LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE5LjE1LjExLjAwI0xhdmF0b3J5IHNlcnZpY2UgZXF1aXBtZW50IGZvciBhaXJjcmFmdCMyNS4xOS4xNS4wMC4wMAotdW5zcHNjNyMyNS4xOS4xNS4xMi4wMCNBaXJzdGFpcnMgb3Igc3RhaXIgdHJ1Y2tzIzI1LjE5LjE1LjAwLjAwCi11bnNwc2M3IzI1LjE5LjE2LjAwLjAwI1NwYWNlIHRyYW5zcG9ydGF0aW9uIHN1cHBvcnQgc3lzdGVtcyBhbmQgZXF1aXBtZW50IzI1LjE5LjAwLjAwLjAwCi11bnNwc2M3IzI1LjE5LjE2LjAxLjAwI1NwYWNlY3JhZnQgZmxpZ2h0IHNpbXVsYXRvcnMjMjUuMTkuMTYuMDAuMDAKLXVuc3BzYzcjMjUuMTkuMTYuMDIuMDAjUGF5bG9hZCBkZWxpdmVyeSBzeXN0ZW1zIGZvciBzcGFjZWNyYWZ0IzI1LjE5LjE2LjAwLjAwCi11bnNwc2M3IzI1LjE5LjE2LjAzLjAwI0xpcXVpZCBsYXVuY2ggdmVoaWNsZXMjMjUuMTkuMTYuMDAuMDAKLXVuc3BzYzcjMjUuMTkuMTYuMDQuMDAjU29saWQgbGF1bmNoIHZlaGljbGVzIzI1LjE5LjE2LjAwLjAwCi11bnNwc2M3IzI1LjE5LjE2LjA1LjAwI1NwYWNlY3JhZnQgc2VydmljZSBtb2R1bGVzIzI1LjE5LjE2LjAwLjAwCi11bnNwc2M3IzI1LjE5LjE3LjAwLjAwI1ZlaGljbGUgc2VydmljaW5nIGVxdWlwbWVudCMyNS4xOS4wMC4wMC4wMAotdW5zcHNjNyMyNS4xOS4xNy4wMS4wMCNXaGVlbCBiYWxhbmNpbmcgZXF1aXBtZW50IzI1LjE5LjE3LjAwLjAwCi11bnNwc2M3IzI1LjE5LjE3LjAyLjAwI1doZWVsIGFsaWdubWVudCBlcXVpcG1lbnQjMjUuMTkuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMTkuMTcuMDMuMDAjVGlyZSBjaGFuZ2luZyBtYWNoaW5lcyMyNS4xOS4xNy4wMC4wMAotdW5zcHNjNyMyNS4xOS4xNy4wNC4wMCNFbmdpbmUgb3IgdmVoaWNsZSBzdGFuZHMjMjUuMTkuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMDAuMDAuMDAjQWVyb3NwYWNlIHN5c3RlbXMgYW5kIGNvbXBvbmVudHMgYW5kIGVxdWlwbWVudCMyNS4wMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4wMC4wMCNBaXJjcmFmdCBmdXNlbGFnZSBhbmQgY29tcG9uZW50cyMyNS4yMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4wMS4wMCNBaXJjcmFmdCBzcG9pbGVycyMyNS4yMC4xNS4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4wMi4wMCNBaXJjcmFmdCBmaW5zIzI1LjIwLjE1LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE1LjAzLjAwI0FpcmNyYWZ0IGhvcml6b250YWwgc3RhYmlsaXplcnMjMjUuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTUuMDQuMDAjQWlyY3JhZnQgY2FuYXJkcyMyNS4yMC4xNS4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4wNS4wMCNBaXJjcmFmdCBzbGF0cyMyNS4yMC4xNS4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4wNi4wMCNBaXJjcmFmdCBmbGFwcyBvciBmbGFwIGRyaXZlcyMyNS4yMC4xNS4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4wNy4wMCNBaXJjcmFmdCBydWRkZXJzIzI1LjIwLjE1LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE1LjA4LjAwI0FpcmNyYWZ0IGVsZXZhdG9ycyMyNS4yMC4xNS4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4wOS4wMCNBaXJjcmFmdCBhaWxlcm9ucyMyNS4yMC4xNS4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4xMC4wMCNBaXJjcmFmdCBwcm9wZWxsZXJzIzI1LjIwLjE1LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE1LjExLjAwI0FpcmNyYWZ0IHdpbmdzIzI1LjIwLjE1LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE1LjEyLjAwI0FpcmNyYWZ0IGZ1c2VsYWdlcyMyNS4yMC4xNS4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4xMy4wMCNBaXJjcmFmdCByYWRvbWVzIzI1LjIwLjE1LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE1LjE0LjAwI0FpcmNyYWZ0IHJvdG9ycyMyNS4yMC4xNS4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNS4xNS4wMCNBaXJjcmFmdCBsaWZ0IGZhbnMjMjUuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTUuMTYuMDAjQWlyY3JhZnQgY2Fub3BpZXMjMjUuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTUuMTcuMDAjQWlyY3JhZnQgZnVybmlzaGluZ3MjMjUuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTYuMDAuMDAjQWVyb3NwYWNlIGxvY2F0aW9uIGFuZCBuYXZpZ2F0aW9uIHN5c3RlbXMgYW5kIGNvbXBvbmVudHMjMjUuMjAuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTYuMDEuMDAjQWlyY3JhZnQgZGlnaXRhbCBhbHRpdHVkZSBjb250cm9sIHN5c3RlbXMjMjUuMjAuMTYuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTYuMDIuMDAjQWlyY3JhZnQgbmF2aWdhdGlvbiBiZWFjb25zIzI1LjIwLjE2LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE2LjAzLjAwI0FpciB0byBncm91bmQgdGVycmFpbiBmb2xsb3dpbmcgc3lzdGVtcyMyNS4yMC4xNi4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNi4wNC4wMCNBaXJjcmFmdCBndWlkYW5jZSBzeXN0ZW1zIzI1LjIwLjE2LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE2LjA1LjAwI0FpcmNyYWZ0IHN0ZWVyaW5nIGNvbnRyb2xzIzI1LjIwLjE2LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE2LjA2LjAwI1NwYWNlY3JhZnQgYWx0aXR1ZGUgY29udHJvbCBzeXN0ZW1zIzI1LjIwLjE2LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE3LjAwLjAwI0ZsaWdodCBjb21tdW5pY2F0aW9ucyByZWxhdGVkIHN5c3RlbXMjMjUuMjAuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTcuMDEuMDAjQWlyY3JhZnQgY29tbXVuaWNhdGlvbiBzeXN0ZW1zIzI1LjIwLjE3LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE3LjAyLjAwI0ZsaWdodCBkYXRhIHJlY29yZGVycyMyNS4yMC4xNy4wMC4wMAotdW5zcHNjNyMyNS4yMC4xNy4wMy4wMCNBaXJjcmFmdCBjb3VudGVybWVhc3VyZXMjMjUuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTcuMDQuMDAjRW5jcnlwdGlvbiBvciBkZWNyeXB0aW9uIHN5c3RlbXMjMjUuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTcuMDUuMDAjQWlyY3JhZnQgdGVsZW1ldHJ5IHN5c3RlbXMjMjUuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTcuMDYuMDAjQWlyY3JhZnQgaW50ZXJmYWNlIGVsZWN0cm9uaWNzIzI1LjIwLjE3LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE3LjA3LjAwI0FpcmNyYWZ0IGd5cm9zIzI1LjIwLjE3LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE3LjA4LjAwI0FpcmNyYWZ0IGNhbWVyYXMjMjUuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTcuMDkuMDAjQWlyY3JhZnQgcHJvYmVzIG9yIHNlbnNvcnMjMjUuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTcuMTAuMDAjQWlyY3JhZnQgd2F2ZWd1aWRlcyMyNS4yMC4xNy4wMC4wMAotdW5zcHNjNyMyNS4yMC4xOC4wMC4wMCNBaXJjcmFmdCBtYXN0ZXIgY29udHJvbCBzeXN0ZW1zIzI1LjIwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjIwLjE4LjAxLjAwI0ZsaWdodCBjb21wdXRlciBzeXN0ZW1zIzI1LjIwLjE4LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE4LjAyLjAwI1NwYWNlY3JhZnQgY29tbWFuZCBtb2R1bGVzIzI1LjIwLjE4LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE5LjAwLjAwI0FpcmNyYWZ0IGVtZXJnZW5jeSBzeXN0ZW1zIzI1LjIwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjIwLjE5LjAxLjAwI0FpcmNyYWZ0IGZpcmUgY29udHJvbCBvciBleHRpbmd1aXNoaW5nIHN5c3RlbXMjMjUuMjAuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTkuMDIuMDAjQWlyY3JhZnQgZXNjYXBlIG9yIGVqZWN0aW9uIHN5c3RlbXMjMjUuMjAuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMTkuMDMuMDAjQWlyY3JhZnQgd2FybmluZyBzeXN0ZW1zIzI1LjIwLjE5LjAwLjAwCi11bnNwc2M3IzI1LjIwLjE5LjA0LjAwI1BhcmFjaHV0ZXMjMjUuMjAuMTkuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjAuMDAuMDAjQWlyY3JhZnQgcG93ZXIgc3lzdGVtcyMyNS4yMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4yMC4yMC4wMS4wMCNTcGFjZWNyYWZ0IHNvbGFyIGNlbGxzIzI1LjIwLjIwLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIwLjAyLjAwI1NwYWNlY3JhZnQgc29sYXIgYXJyYXlzIzI1LjIwLjIwLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIwLjAzLjAwI0FpcmNyYWZ0IHBvd2VyIHN1cHBseSB1bml0cyMyNS4yMC4yMC4wMC4wMAotdW5zcHNjNyMyNS4yMC4yMC4wNC4wMCNBdXhpbGxpYXJ5IHBvd2VyIHVuaXQgc3lzdGVtcyAoQVBVcykjMjUuMjAuMjAuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjEuMDAuMDAjRmxpZ2h0IGluc3RydW1lbnRhdGlvbiMyNS4yMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4yMC4yMS4wMS4wMCNBZXJvc3BhY2UgY29ja3BpdCBpbmRpY2F0b3JzIzI1LjIwLjIxLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIxLjAyLjAwI0Flcm9zcGFjZSBjb2NrcGl0IGdhdWdlcyMyNS4yMC4yMS4wMC4wMAotdW5zcHNjNyMyNS4yMC4yMS4wMy4wMCNBZXJvc3BhY2UgY29ja3BpdCBkaXNwbGF5IHBhbmVscyMyNS4yMC4yMS4wMC4wMAotdW5zcHNjNyMyNS4yMC4yMS4wNC4wMCNBZXJvc3BhY2UgY29ja3BpdCBzd2l0Y2ggcGFuZWxzIzI1LjIwLjIxLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIxLjA1LjAwI0Flcm9zcGFjZSBoZWFkIHVwIGRpc3BsYXkgKEhVRHMpIzI1LjIwLjIxLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIyLjAwLjAwI0FpcmNyYWZ0IGxhbmRpbmcgYW5kIGJyYWtpbmcgc3lzdGVtcyMyNS4yMC4wMC4wMC4wMAotdW5zcHNjNyMyNS4yMC4yMi4wMS4wMCNBaXJjcmFmdCBicmFraW5nIHN5c3RlbXMjMjUuMjAuMjIuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjIuMDIuMDAjQWlyY3JhZnQgZHJhZyBjaHV0ZXMjMjUuMjAuMjIuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjIuMDMuMDAjQWlyY3JhZnQgd2hlZWxzIzI1LjIwLjIyLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIyLjA0LjAwI0xhbmRpbmcgZ2VhciBhc3NlbWJsaWVzIzI1LjIwLjIyLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIyLjA1LjAwI0FpcmNyYWZ0IHRpcmVzIzI1LjIwLjIyLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIyLjA2LjAwI0FpY3JhZnQgYW50aSBza2lkIGNvbnRyb2xzIzI1LjIwLjIyLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIzLjAwLjAwI0FpcmNyYWZ0IHBhc3NlbmdlciByZXN0cmFpbnRzIzI1LjIwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIzLjAxLjAwI0FpcmNyYWZ0IGxhcGJlbHRzIzI1LjIwLjIzLjAwLjAwCi11bnNwc2M3IzI1LjIwLjIzLjAyLjAwI0FpcmNyYWZ0IGhhcm5lc3MgcmVzdHJhaW50cyMyNS4yMC4yMy4wMC4wMAotdW5zcHNjNyMyNS4yMC4yNC4wMC4wMCNBaXJjcmFmdCBmdWVsIHRhbmtzIGFuZCBzeXN0ZW1zIzI1LjIwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjIwLjI0LjAxLjAwI0FpcmNyYWZ0IGludGVybmFsIGZ1ZWwgdGFua3MjMjUuMjAuMjQuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjQuMDIuMDAjQWlyY3JhZnQgZnVlbCBkcm9wIHRhbmtzIzI1LjIwLjI0LjAwLjAwCi11bnNwc2M3IzI1LjIwLjI0LjAzLjAwI0FpcmNyYWZ0IHByb3BlbGxhbnQgdGFua3MjMjUuMjAuMjQuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjQuMDQuMDAjQWlyY3JhZnQgaHlicmlkIGZ1ZWwgc3RvcmFnZSBzeXN0ZW1zIzI1LjIwLjI0LjAwLjAwCi11bnNwc2M3IzI1LjIwLjI0LjA1LjAwI0FpcmNyYWZ0IGZ1ZWwgbWFuYWdlbWVudCBzeXN0ZW1zIzI1LjIwLjI0LjAwLjAwCi11bnNwc2M3IzI1LjIwLjI0LjA2LjAwI1Bvc3Rib29zdGVycyMyNS4yMC4yNC4wMC4wMAotdW5zcHNjNyMyNS4yMC4yNS4wMC4wMCNBaXJjcmFmdCBlcXVpcG1lbnQjMjUuMjAuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjUuMDEuMDAjQWlyY3JhZnQgaHlkcmF1bGljIHN5c3RlbXMjMjUuMjAuMjUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjUuMDIuMDAjRXh0ZXJpb3IgYWlyY3JhZnQgbGlnaHRpbmcjMjUuMjAuMjUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjUuMDMuMDAjSW50ZXJpb3IgYWlyY3JhZnQgbGlnaHRpbmcjMjUuMjAuMjUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjUuMDQuMDAjQWlyY3JhZnQgd2luZHNoaWVsZCB3aXBlcnMjMjUuMjAuMjUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjUuMDUuMDAjQWlyY3JhZnQgb25ib2FyZCBkZWZyb3N0aW5nIG9yIGRlZm9nZ2luZyBzeXN0ZW1zIzI1LjIwLjI1LjAwLjAwCi11bnNwc2M3IzI1LjIwLjI1LjA2LjAwI0FpcmNyYWZ0IGRvb3JzIzI1LjIwLjI1LjAwLjAwCi11bnNwc2M3IzI1LjIwLjI1LjA3LjAwI0FpcmNyYWZ0IHdpbmRvd3MjMjUuMjAuMjUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjUuMDguMDAjQWlyY3JhZnQgd2luZHNoaWVsZHMjMjUuMjAuMjUuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjUuMDkuMDAjQWlyY3JhZnQgc2hvY2sgbW91bnRzIzI1LjIwLjI1LjAwLjAwCi11bnNwc2M3IzI1LjIwLjI1LjEwLjAwI0FpcmNyYWZ0IHNsaXAgcmluZyBhc3NlbWJsaWVzIzI1LjIwLjI1LjAwLjAwCi11bnNwc2M3IzI1LjIwLjI2LjAwLjAwI0FpcmNyYWZ0IGVudmlyb25tZW50YWwgY29udHJvbCBzeXN0ZW1zIGFuZCBjb21wb25lbnRzIzI1LjIwLjAwLjAwLjAwCi11bnNwc2M3IzI1LjIwLjI2LjAxLjAwI0FpcmNyYWZ0IGVudmlyb25tZW50IGNvbnRyb2xsZXJzIzI1LjIwLjI2LjAwLjAwCi11bnNwc2M3IzI1LjIwLjI2LjAyLjAwI0FpcmNyYWZ0IGVudmlyb25tZW50IHJlZ3VsYXRvcnMjMjUuMjAuMjYuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjYuMDMuMDAjQWlyY3JhZnQgY29vbGluZyB0dXJiaW5lcyMyNS4yMC4yNi4wMC4wMAotdW5zcHNjNyMyNS4yMC4yNi4wNC4wMCNBaXJjcmFmdCBjb29saW5nIGZhbnMjMjUuMjAuMjYuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjYuMDUuMDAjQWlyY3JhZnQgaGVhdCBleGNoYW5nZXJzIzI1LjIwLjI2LjAwLjAwCi11bnNwc2M3IzI1LjIwLjI2LjA2LjAwI0FpcmNyYWZ0IHdhdGVyIHNlcGFyYXRvcnMjMjUuMjAuMjYuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjYuMDcuMDAjQWlyY3JhZnQgb3h5Z2VuIGVxdWlwbWVudCMyNS4yMC4yNi4wMC4wMAotdW5zcHNjNyMyNS4yMC4yNy4wMC4wMCNBaXJjcmFmdCBhY2N1bXVsYXRvcnMjMjUuMjAuMDAuMDAuMDAKLXVuc3BzYzcjMjUuMjAuMjcuMDEuMDAjSHlkcmF1bGljIGFpcmNyYWZ0IGFjY3VtdWxhdG9ycyMyNS4yMC4yNy4wMC4wMAotdW5zcHNjNyMyNS4yMC4yNy4wMi4wMCNQbmV1bWF0aWMgYWlyY3JhZnQgYWNjdW11bGF0b3JzIzI1LjIwLjI3LjAwLjAwCi11bnNwc2M3IzI2LjAwLjAwLjAwLjAwI1Bvd2VyIEdlbmVyYXRpb24gYW5kIERpc3RyaWJ1dGlvbiBNYWNoaW5lcnkgYW5kIEFjY2Vzc29yaWVzIzI2LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI2LjEwLjAwLjAwLjAwI1Bvd2VyIHNvdXJjZXMjMjYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTUuMDAuMDAjRW5naW5lcyMyNi4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNS4wMS4wMCNIeWRyYXVsaWMgZW5naW5lcyMyNi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNS4wMi4wMCNQbmV1bWF0aWMgZW5naW5lcyMyNi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNS4wMy4wMCNHYXMgZW5naW5lcyMyNi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNS4wNC4wMCNEaWVzZWwgZW5naW5lcyMyNi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNS4wNS4wMCNTdGVhbSBlbmdpbmVzIzI2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE1LjA2LjAwI1R1cmJpbmUgZW5naW5lcyMyNi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNS4wNy4wMCNUdXJib2ZhbiBlbmdpbmVzIzI2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE1LjA4LjAwI1RoZXJtYWwgZW5naW5lcyMyNi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNS4wOS4wMCNIeWRyb2VsZWN0cmljIGVuZ2luZXMjMjYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTUuMTAuMDAjUm90YXJ5IGVuZ2luZXMjMjYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTUuMTEuMDAjSHlkcmF1bGljIHR1cmJpbmUgZW5naW5lcyMyNi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNS4xMi4wMCNUdXJib3Byb3AgZW5naW5lcyMyNi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNS4xMy4wMCNFbmdpbmUgUmVwYWlyIEtpdCMyNi4xMC4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNi4wMC4wMCNNb3RvcnMjMjYuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTYuMDEuMDAjSW5kdWN0aW9uIG1vdG9ycyMyNi4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNi4wMi4wMCNBbHRlcm5hdGluZyBjdXJyZW50IChBQykgbW90b3JzIzI2LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE2LjAzLjAwI0RpcmVjdCBjdXJyZW50IChEQykgbW90b3JzIzI2LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE2LjA0LjAwI0FsdGVybmF0aW5nIGN1cnJlbnQgb3IgZGlyZWN0IGN1cnJlbnQgKEFDL0RDKSBtb3RvcnMjMjYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTYuMDUuMDAjRHluYW1vdG9ycyMyNi4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNi4wNi4wMCNTZXJ2b21vdG9ycyMyNi4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNi4wNy4wMCNUb3JxdWUgbW90b3JzIzI2LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE2LjA4LjAwI0xpcXVpZCByb2NrZXQgbW90b3JzIzI2LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE2LjA5LjAwI1N5bmNocm9ub3VzIG1vdG9ycyMyNi4xMC4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNi4xMC4wMCNTb2xpZCByb2NrZXQgbW90b3JzIzI2LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE2LjExLjAwI1NpbmdsZSBwaGFzZSBtb3RvcnMjMjYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTYuMTIuMDAjTXVsdGkgcGhhc2UgbW90b3JzIzI2LjEwLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE2LjEzLjAwI0h5ZHJhdWxpYyBtb3RvcnMjMjYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTYuMTQuMDAjU3RlcCBtb3RvcnMjMjYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTYuMTUuMDAjQWx0ZXJuYXRvcnMjMjYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTYuMTYuMDAjQ2FyYm9uIEJydXNoZXMjMjYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMDAuMDAjRW5naW5lIGNvbXBvbmVudHMjMjYuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMDEuMDAjQWlyY3JhZnQgYnVybmVycyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4wMi4wMCNBaXJjcmFmdCBlbmdpbmUgY29tcHJlc3NvcnMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMDMuMDAjQWlyY3JhZnQgZW5naW5lIGRpZmZ1c2VycyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4wNC4wMCNFbmdpbmUgbW91bnRzIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjA1LjAwI0FpcmNyYWZ0IGRyaXZlIHNoYWZ0cyBwb3dlciB0YWtlIG9mZnMgb3Igc2NyZXcgamFja3MjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMDYuMDAjQWlyY3JhZnQgdHJhbnNtaXNzaW9uIHVuaXRzIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjA3LjAwI0JhbGFuY2Ugc2hhZnRzIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjA4LjAwI0NhbSBmb2xsb3dlcnMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMDkuMDAjQ2Ftc2hhZnQgbGlmdGVycyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4xMC4wMCNDYXJidXJldG9ycyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4xMS4wMCNDb25uZWN0aW5nIHJvZHMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMTIuMDAjQ3JhbmtjYXNlIHZlbnRpbGxhdGlvbiB2YWx2ZXMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMTMuMDAjQ3lsaW5kZXIgaGVhZHMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMTQuMDAjRW5naW5lIGNvb2xhbnQgcmFkaWF0b3JzIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjE1LjAwI0VuZ2luZSBjb3ZlcnMgb3IgcGFucyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4xNi4wMCNFbmdpbmUgZm9yZ2luZ3MjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMTcuMDAjRW5naW5lIGhlYXRlcnMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMTguMDAjRW5naW5lIGlnbml0aW9uIHN5c3RlbXMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMTkuMDAjU3VwZXJjaGFyZ2VyIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjIwLjAwI1R1cmJvY2hhcmdlciMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4yMS4wMCNFbmdpbmUgcHVsbGV5cyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4yMi4wMCNGdWVsIGluamVjdGlvbiBzeXN0ZW1zIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjIzLjAwI0Z1ZWwgdmFwb3IgY2FuaXN0ZXIjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMjQuMDAjR2xvdyBwbHVncyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4yNS4wMCNPaWwgZGlwIHN0aWNrcyBhbmQgdHViZXMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMjYuMDAjT2lsIHN0cmFpbmVycyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4yNy4wMCNQaXN0b24gcmluZ3MjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMjguMDAjUHVzaCByb2QgdHViZXMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMjkuMDAjUm9ja2VyIGFybSBiYWxscyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4zMC4wMCNSb2NrZXIgYXJtIHNoYWZ0cyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4zMS4wMCNSb2NrZXIgYXJtcyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4zMi4wMCNTcGFyayBwbHVncyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4zMy4wMCNDYXJidXJldG9yIGpldCMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4zNC4wMCNDYXJidXJldG9yIGRpYXBocmFnbXMjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuMzUuMDAjT2lsIHBhbiMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4zNi4wMCNQaXN0b25zIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjM3LjAwI1RpbWluZyBjaGFpbiMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy4zOC4wMCNJbnRha2UgbWFuaWZvbGRzIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjM5LjAwI0V4aGF1c3QgbWFuaWZvbGRzIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjQwLjAwI0Z1ZWwgaW5qZWN0b3JzIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjQxLjAwI0VuZ2luZSBzbGVldmVzIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjQyLjAwI0Z1ZWwgaW5qZWN0aW9uIG1hbmlmb2xkcyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy40My4wMCNFbmdpbmUgdmFsdmVzIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjQ0LjAwI1R1cmJvY2hhcmdlciMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy40NS4wMCNjYW1zaGFmdCMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy40Ni4wMCNDeWxpbmRlciBoZWFkIzI2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE3LjQ3LjAwI1B1c2ggcm9kcyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy40OC4wMCNFbmdpbmUgZmx5d2hlZWwjMjYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTcuNDkuMDAjQ3JhbmtzaGFmdCMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy41MC4wMCNUaHJvdHRsZSMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy41MS4wMCNFbGVjdHJvbmljIGVuZ2luZSBjb250cm9scyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xNy41Mi4wMCNWaWJyYXRpb24gZGFtcGVycyMyNi4xMC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMC4xOC4wMC4wMCNNb3RvciBvciBnZW5lcmF0b3IgY29tcG9uZW50cyMyNi4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNi4xMC4xOC4wMS4wMCNNb3RvciBicnVzaGVzIzI2LjEwLjE4LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE4LjAyLjAwI0FybWF0dXJlcyMyNi4xMC4xOC4wMC4wMAotdW5zcHNjNyMyNi4xMC4xOC4wMy4wMCNSb3RvcnMgb3Igc3RhdG9ycyMyNi4xMC4xOC4wMC4wMAotdW5zcHNjNyMyNi4xMC4xOC4wNC4wMCNNb3RvciBtb3VudHMgb3IgYmFzZXMjMjYuMTAuMTguMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTkuMDAuMDAjSW50ZXJuYWwgY29tYnVzdGlvbiBlbmdpbmUgY29tcG9uZW50cyMyNi4xMC4wMC4wMC4wMAotdW5zcHNjNyMyNi4xMC4xOS4wMS4wMCNDcmFuayBzaGFmdHMjMjYuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTkuMDIuMDAjU3BhcmsgcGx1Z3MjMjYuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTkuMDMuMDAjQ2Ftc2hhZnQjMjYuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMjYuMTAuMTkuMDQuMDAjRnVlbCBpbmplY3Rpb24gbm96emxlIzI2LjEwLjE5LjAwLjAwCi11bnNwc2M3IzI2LjEwLjE5LjA1LjAwI0N5bGluZGVyIGJsb2NrIzI2LjEwLjE5LjAwLjAwCi11bnNwc2M3IzI2LjExLjAwLjAwLjAwI0JhdHRlcmllcyBhbmQgZ2VuZXJhdG9ycyBhbmQga2luZXRpYyBwb3dlciB0cmFuc21pc3Npb24jMjYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTUuMDAuMDAjS2luZXRpYyBwb3dlciB0cmFuc21pc3Npb24jMjYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTUuMDEuMDAjQ29tbXV0YXRvcnMjMjYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTUuMDMuMDAjQWRqdXN0YWJsZSBzcGVlZCBkcml2ZXMjMjYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTUuMDQuMDAjQmVsdCBkcml2ZXMjMjYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTUuMDUuMDAjQ2hhaW4gZHJpdmVzIzI2LjExLjE1LjAwLjAwCi11bnNwc2M3IzI2LjExLjE1LjA2LjAwI0xpbmVhciBtb3Rpb24gZGV2aWNlcyMyNi4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNS4wNy4wMCNDbHV0Y2hlcyMyNi4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNS4wOC4wMCNQb3dlciB0YWtlIG9mZnMjMjYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTUuMDkuMDAjVHJhbnNtaXNzaW9uIHlva2VzIzI2LjExLjE1LjAwLjAwCi11bnNwc2M3IzI2LjExLjE1LjEwLjAwI1RyYW5zbWlzc2lvbiBzaGFmdHMjMjYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTUuMTEuMDAjVW5pdmVyc2FsIGpvaW50cyMyNi4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNS4xMi4wMCNBeGxlcyMyNi4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNS4xMy4wMCNQb3dlciB0cmFuc21pc3Npb24gY2hhaW5zIzI2LjExLjE1LjAwLjAwCi11bnNwc2M3IzI2LjExLjE1LjE0LjAwI0tudWNrbGUgam9pbnRzIzI2LjExLjE1LjAwLjAwCi11bnNwc2M3IzI2LjExLjE1LjE1LjAwI1NlcnZvIGNvbnRyb2xsZXIjMjYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTUuMTYuMDAjU3RlcCBkcml2ZSBvciBzdGVwcGVyIGRyaXZlIG9yIHN0ZXAgaW5kZXhlciMyNi4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNS4xNy4wMCNQbGFuZXQgY2FycmllciMyNi4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNS4xOC4wMCNUZW5zaW9uIHN0cnV0IzI2LjExLjE1LjAwLjAwCi11bnNwc2M3IzI2LjExLjE1LjE5LjAwI1RvcnF1ZSBjb252ZXJ0ZXJzIzI2LjExLjE1LjAwLjAwCi11bnNwc2M3IzI2LjExLjE1LjIwLjAwI1RydW5uaW9ucyMyNi4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNS4yMS4wMCNQdXNoZXIgaGVhZCMyNi4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNS4yMi4wMCNQdXNoZXIgYXNzZW1ibHkjMjYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTUuMjMuMDAjQmFja3N0b3BzIzI2LjExLjE1LjAwLjAwCi11bnNwc2M3IzI2LjExLjE2LjAwLjAwI1Bvd2VyIGdlbmVyYXRvcnMjMjYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTYuMDEuMDAjRGllc2VsIGdlbmVyYXRvcnMjMjYuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTYuMDIuMDAjSHlkcm8gZWxlY3RyaWMgZ2VuZXJhdG9ycyMyNi4xMS4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNi4wMy4wMCNXaW5kIGdlbmVyYXRvcnMjMjYuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTYuMDQuMDAjR2FzIGdlbmVyYXRvcnMjMjYuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTYuMDUuMDAjVGhlcm1hbCBnZW5lcmF0b3JzIzI2LjExLjE2LjAwLjAwCi11bnNwc2M3IzI2LjExLjE2LjA2LjAwI0h5ZHJhdWxpYyBnZW5lcmF0b3JzIzI2LjExLjE2LjAwLjAwCi11bnNwc2M3IzI2LjExLjE2LjA3LjAwI1NvbGFyIGdlbmVyYXRvcnMjMjYuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTcuMDAuMDAjQmF0dGVyaWVzIGFuZCBhY2Nlc3NvcmllcyMyNi4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNy4wMS4wMCNSZWNoYXJnZWFibGUgYmF0dGVyaWVzIzI2LjExLjE3LjAwLjAwCi11bnNwc2M3IzI2LjExLjE3LjAyLjAwI0Fsa2FsaW5lIGJhdHRlcmllcyMyNi4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNy4wMy4wMCNWZWhpY2xlIGJhdHRlcmllcyMyNi4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNy4wNC4wMCNCYXR0ZXJ5IGNoYXJnZXJzIzI2LjExLjE3LjAwLjAwCi11bnNwc2M3IzI2LjExLjE3LjA1LjAwI0RyeSBjZWxsIGJhdHRlcmllcyMyNi4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNy4wNi4wMCNFbGVjdHJvbmljIGJhdHRlcmllcyMyNi4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNy4wNy4wMCNMZWFkIGFjaWQgYmF0dGVyaWVzIzI2LjExLjE3LjAwLjAwCi11bnNwc2M3IzI2LjExLjE3LjA4LjAwI05pY2tlbCBpcm9uIGJhdHRlcmllcyMyNi4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNy4wOS4wMCNOaWNrZWwgY2FkbWl1bSBiYXR0ZXJpZXMjMjYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTcuMTAuMDAjUHJvZHVjdCBzcGVjaWZpYyBiYXR0ZXJ5IHBhY2tzIzI2LjExLjE3LjAwLjAwCi11bnNwc2M3IzI2LjExLjE3LjExLjAwI0xpdGhpdW0gYmF0dGVyaWVzIzI2LjExLjE3LjAwLjAwCi11bnNwc2M3IzI2LjExLjE3LjEyLjAwI05pY2tlbCBoeWRyb2dlbiBiYXR0ZXJpZXMjMjYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTcuMTMuMDAjVGhlcm1hbCBiYXR0ZXJpZXMjMjYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTcuMTQuMDAjWnluYyBhaXIjMjYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTcuMTUuMDAjWmluYyBjb2FsIGJhdHRlcnkjMjYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTcuMTYuMDAjTWVyY3VyeSBveGlkZSBiYXR0ZXJ5IzI2LjExLjE3LjAwLjAwCi11bnNwc2M3IzI2LjExLjE3LjE3LjAwI01hbmdhbmVzZSBiYXR0ZXJpZXMjMjYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTcuMTguMDAjU2lsdmVyIG94aWRlIGJhdHRlcmllcyMyNi4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMS4xNy4xOS4wMCNCYXR0ZXJ5IHRlc3RlcnMjMjYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTguMDAuMDAjRHJpdmUgY29tcG9uZW50cyMyNi4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNi4xMS4xOC4wMS4wMCNWIGJlbHRzIzI2LjExLjE4LjAwLjAwCi11bnNwc2M3IzI2LjExLjE4LjAyLjAwI0dlYXJlZCB0aW1pbmcgYmVsdHMjMjYuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTguMDMuMDAjUm91bmQgYmVsdHMjMjYuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTguMDQuMDAjRmxhdCBiZWx0cyMyNi4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNi4xMS4xOC4wNS4wMCNCZWx0IHRlbnNpb25lcnMjMjYuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTguMDYuMDAjVHJhbnNtaXNzaW9uIHB1bGxleXMjMjYuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTguMDcuMDAjVGltaW5nIHB1bGxleSMyNi4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNi4xMS4xOC4wOC4wMCNUcmFudG9ycXVlIzI2LjExLjE4LjAwLjAwCi11bnNwc2M3IzI2LjExLjE4LjA5LjAwI0JlbHQgZ3VhcmRzIzI2LjExLjE4LjAwLjAwCi11bnNwc2M3IzI2LjExLjE5LjAwLjAwI0NsdXRjaGVzIzI2LjExLjAwLjAwLjAwCi11bnNwc2M3IzI2LjExLjE5LjAxLjAwI1BsYXRlIGNsdXRjaGVzIzI2LjExLjE5LjAwLjAwCi11bnNwc2M3IzI2LjExLjE5LjAyLjAwI0RpYXBocmFnbSBjbHV0Y2gjMjYuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTkuMDMuMDAjQ2VudHJpZnVnYWwgY2x1dGNoIzI2LjExLjE5LjAwLjAwCi11bnNwc2M3IzI2LjExLjE5LjA0LjAwI1NlbWkgY2VudHJpZnVnYWwgY2x1dGNoIzI2LjExLjE5LjAwLjAwCi11bnNwc2M3IzI2LjExLjE5LjA1LjAwI0ZyZWUgd2hlZWwgY2x1dGNoIzI2LjExLjE5LjAwLjAwCi11bnNwc2M3IzI2LjExLjE5LjA2LjAwI1RvcnF1ZSBjb252ZXJ0ZXIjMjYuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTkuMDcuMDAjRmx1aWQgY291cGxpbmcjMjYuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMTkuMDguMDAjQ2FtIGNsdXRjaGVzIzI2LjExLjE5LjAwLjAwCi11bnNwc2M3IzI2LjExLjIwLjAwLjAwI0NsdXRjaCBwYXJ0cyBhbmQgYWNjZXNzb3JpZXMjMjYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMjAuMDEuMDAjUHJlc3N1cmUgcGxhdGUjMjYuMTEuMjAuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMjAuMDIuMDAjRHJpdmVuIHBsYXRlIzI2LjExLjIwLjAwLjAwCi11bnNwc2M3IzI2LjExLjIwLjAzLjAwI0NsdXRjaCBwbGF0ZXMjMjYuMTEuMjAuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMjEuMDAuMDAjSW5kdXN0cmlhbCBicmFraW5nIHN5c3RlbXMjMjYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMjEuMDEuMDAjQWlyIG9yIHBuZXVtYXRpYyBicmFraW5nIHN5c3RlbXMjMjYuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjYuMTEuMjEuMDIuMDAjSHlkcmF1bGljIGJyYWtpbmcgc3lzdGVtcyMyNi4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNi4xMS4yMS4wMy4wMCNNZWNoYW5pY2FsIGJyYWtpbmcgc3lzdGVtcyMyNi4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNi4xMS4yMS4wNC4wMCNCcmFraW5nIGNsdXRjaCBhc3NlbWJsaWVzIzI2LjExLjIxLjAwLjAwCi11bnNwc2M3IzI2LjEyLjAwLjAwLjAwI0VsZWN0cmljYWwgd2lyZSBhbmQgY2FibGUgYW5kIGhhcm5lc3MjMjYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTUuMDAuMDAjRWxlY3RyaWNhbCB3aXJlIzI2LjEyLjAwLjAwLjAwCi11bnNwc2M3IzI2LjEyLjE1LjAxLjAwI0hlYXRpbmcgd2lyZSMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4wNS4wMCNGaXh0dXJlIHdpcmUjMjYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTUuMDcuMDAjUmFkaW8gb3IgdGVsZXZpc2lvbiB3aXJlIzI2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE1LjA4LjAwI0F1dG9tb3RpdmUgb3IgYWlyY3JhZnQgd2lyZSMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4wOS4wMCNNYWduZXQgd2lyZSMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4xMC4wMCNUcm9sbGV5IHdpcmUjMjYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTUuMTQuMDAjVW5kZXJncm91bmQgd2lyZSMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4xNS4wMCNTaWxpY29uIGFzYmVzdG9zIChTQSkgd2lyZSMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4xNy4wMCNDb3BwZXIgd2lyZSMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4xOS4wMCNDb3BwZXIgY2xhZCBhbHVtaW51bSB3aXJlIzI2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE1LjIwLjAwI0NvcHBlciBzdGVlbCB3aXJlIzI2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE1LjIxLjAwI0Jyb256ZSB3aXJlIzI2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE1LjIyLjAwI0JhcmUgd2lyZSMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4yMy4wMCNDb3ZlcmVkIGJ1dCBub3QgaW5zdWxhdGVkIHdpcmUjMjYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTUuMjQuMDAjSW5zdWxhdGVkIG9yIGNvdmVyZWQgd2lyZSMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4zMi4wMCNJbnRlciBjb25uZWN0IHdpcmUjMjYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTUuMzMuMDAjS2FwdGFuIHdpcmUjMjYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTUuMzQuMDAjUG9seW1pZGUgd2lyZSMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4zNS4wMCNFeHRlbnNpb24gY29yZCMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4zNi4wMCNFeHRlbnNpb24gY29yZCMyNi4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNS4zNy4wMCNXaXJlIGFzc2VtYmx5IzI2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE1LjM4LjAwI1dpcmUgYXNzZW1ibHkjMjYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTYuMDAuMDAjRWxlY3RyaWNhbCBjYWJsZSMyNi4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4wMS4wMCNIZWF0aW5nIGNhYmxlIzI2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE2LjAyLjAwI1N1Ym1hcmluZSBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4wMy4wMCNDb250cm9sIGNhYmxlIzI2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE2LjA0LjAwI1NpZ25hbCBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4wNS4wMCNBdXRvbW90aXZlIG9yIGFpcmNyYWZ0IGNhYmxlIzI2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE2LjA2LjAwI0NvYXhpYWwgY2FibGUjMjYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTYuMDcuMDAjRmliZXIgb3B0aWMgY2FibGUjMjYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTYuMDguMDAjQWVyaWFsIGNhYmxlIzI2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE2LjA5LjAwI05ldHdvcmsgY2FibGUjMjYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTYuMTAuMDAjQnJvbnplIGNhYmxlIzI2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE2LjExLjAwI0JhcmUgY2FibGUjMjYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTYuMTIuMDAjQ292ZXJlZCBidXQgbm90IGluc3VsYXRlZCBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4xMy4wMCNJbnN1bGF0ZWQgb3IgY292ZXJlZCBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4xNC4wMCNCdWlsZGluZyBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4xNS4wMCNQb3dlciBjYWJsZSBmb3IgZGlyZWN0IGJ1cmlhbCMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4xNi4wMCNUZWxlY29tbXVuaWNhdGlvbnMgY2FibGUjMjYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTYuMTcuMDAjVHJpYXhpYWwgY2FibGUjMjYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTYuMTguMDAjQ3Jvc3NsaW5rZWQgcG9seWthZW5lIGNhYmxlIzI2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE2LjE5LjAwI0Zsb3JvcG9seW1lciBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4yMC4wMCNJbnRlciBjb25uZWN0IGNhYmxlIzI2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzI2LjEyLjE2LjIxLjAwI0thcHRhbiBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4yMi4wMCNQb2x5bWlkZSBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4yMy4wMCNSYWRpbyBmcmVxdWVuY3kgKFJGKSBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4yNC4wMCNSaWJib24gb3IgZmxhdCBjYWJsZSMyNi4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNi4yNS4wMCNDb3BwZXIgY2FibGUjMjYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTcuMDAuMDAjV2lyaW5nIGhhcm5lc3MjMjYuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTcuMDEuMDAjUGFuZWwgd2lyaW5nIGhhcm5lc3MjMjYuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTcuMDIuMDAjVHJ1bmsgd2lyaW5nIGhhcm5lc3MjMjYuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTIuMTcuMDMuMDAjQ29tbXVuaWNhdGlvbiB3aXJpbmcgaGFybmVzcyMyNi4xMi4xNy4wMC4wMAotdW5zcHNjNyMyNi4xMi4xNy4wNC4wMCNTcGVjaWFsdHkgd2lyaW5nIGhhcm5lc3MjMjYuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTMuMDAuMDAuMDAjUG93ZXIgZ2VuZXJhdGlvbiMyNi4wMC4wMC4wMC4wMAotdW5zcHNjNyMyNi4xMy4xNS4wMC4wMCNQb3dlciBwbGFudHMjMjYuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTMuMTUuMDEuMDAjRGllc2VsIHBvd2VyIHBsYW50cyMyNi4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMy4xNS4wMi4wMCNHZW90aGVybWFsIHBvd2VyIHBsYW50cyMyNi4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMy4xNS4wMy4wMCNIeWRybyBwb3dlciBwbGFudHMjMjYuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTMuMTUuMDQuMDAjR2FzIHBvd2VyIHBsYW50cyMyNi4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMy4xNS4wNS4wMCNNYXJpbmUgcG93ZXIgcGxhbnRzIzI2LjEzLjE1LjAwLjAwCi11bnNwc2M3IzI2LjEzLjE1LjA2LjAwI1BldHJvbCBwb3dlciBwbGFudHMjMjYuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjYuMTMuMTUuMDcuMDAjU29sYXIgcG93ZXIgcGxhbnRzIzI2LjEzLjE1LjAwLjAwCi11bnNwc2M3IzI2LjEzLjE1LjA4LjAwI1N0ZWFtIHBvd2VyIHBsYW50cyMyNi4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMy4xNS4wOS4wMCNXaW5kIHBvd2VyIHBsYW50cyMyNi4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNi4xMy4xNS4xMC4wMCNUaGVybWFsIHBvd2VyIHBsYW50cyMyNi4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNi4xNC4wMC4wMC4wMCNBdG9taWMgYW5kIG51Y2xlYXIgZW5lcmd5IG1hY2hpbmVyeSBhbmQgZXF1aXBtZW50IzI2LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI2LjE0LjE2LjAwLjAwI1N1YmNyaXRpY2FsIGFzc2VtYmx5IGVxdWlwbWVudCMyNi4xNC4wMC4wMC4wMAotdW5zcHNjNyMyNi4xNC4xNi4wMS4wMCNTdWJjcml0aWNhbCBhc3NlbWJseSBmdWVsIzI2LjE0LjE2LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE2LjAyLjAwI1N1YmNyaXRpY2FsIGFzc2VtYmx5IGNvbXBvbmVudHMjMjYuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMTYuMDMuMDAjU3ViY3JpdGljYWwgYXNzZW1ibHkgbW9kZXJhdG9yIzI2LjE0LjE2LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE3LjAwLjAwI0Rvc2ltZXRyeSBlcXVpcG1lbnQjMjYuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMTcuMDEuMDAjSW9uaXphdGlvbiBjaGFtYmVyIGRvc2ltZXRlcnMjMjYuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMTcuMDIuMDAjRG9zaW1ldGVycyMyNi4xNC4xNy4wMC4wMAotdW5zcHNjNyMyNi4xNC4xNy4wMy4wMCNTZWNvbmRhcnkgc3RhbmRhcmQgZG9zaW1ldHJ5IHN5c3RlbXMjMjYuMTQuMTcuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMTcuMDQuMDAjUGhhbnRvbSBkb3NpbWV0ZXJzIzI2LjE0LjE3LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE4LjAwLjAwI0hvdCBjZWxsIGRldmljZXMjMjYuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMTguMDEuMDAjSG90IGNlbGwgcmVtb3RlIGhhbmRsaW5nIGVxdWlwbWVudCMyNi4xNC4xOC4wMC4wMAotdW5zcHNjNyMyNi4xNC4xOC4wMi4wMCNIb3QgY2VsbCByZW1vdGUgdmlld2luZyBkZXZpY2UjMjYuMTQuMTguMDAuMDAKLXVuc3BzYzcjMjYuMTQuMTguMDMuMDAjSG90IGNlbGwgc2hpZWxkaW5nIGRvb3JzIzI2LjE0LjE4LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE4LjA0LjAwI0hvdCBjZWxsIHNhbXBsZXJzIzI2LjE0LjE4LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE4LjA1LjAwI0hvdCBjZWxsIHNhbXBsZSBwcm9jZXNzaW5nIGVxdWlwbWVudCMyNi4xNC4xOC4wMC4wMAotdW5zcHNjNyMyNi4xNC4xOC4wNi4wMCNIb3QgY2VsbCBzcGVjaWFsIHRvb2xzIzI2LjE0LjE4LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE4LjA3LjAwI0hvdCBjZWxsIGxlYWQgZ2xhc3Mgd2luZG93cyMyNi4xNC4xOC4wMC4wMAotdW5zcHNjNyMyNi4xNC4xOC4wOC4wMCNIb3QgY2VsbCBkZWNvbnRhbWluYXRpb24gc3lzdGVtcyMyNi4xNC4xOC4wMC4wMAotdW5zcHNjNyMyNi4xNC4xOC4wOS4wMCNIb3QgY2VsbCBwZW5ldHJhdGlvbiBkZXZpY2VzIzI2LjE0LjE4LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE5LjAwLjAwI0luZHVzdHJpYWwgbnVjbGVvbmljIGluc3RydW1lbnRzIzI2LjE0LjAwLjAwLjAwCi11bnNwc2M3IzI2LjE0LjE5LjAxLjAwI0luZHVzdHJpYWwgbnVjbGVvbmljIGFpcmJvcm5lIGR1c3QgbWVhc3VyaW5nIHN5c3RlbXMjMjYuMTQuMTkuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMTkuMDIuMDAjQmV0YSBnYXVnZSBtZWFzdXJpbmcgc3lzdGVtcyMyNi4xNC4xOS4wMC4wMAotdW5zcHNjNyMyNi4xNC4xOS4wNC4wMCNJbmR1c3RyaWFsIG51Y2xlb25pYyBsaXF1aWQgbGV2ZWwgZ2F1Z2VzIzI2LjE0LjE5LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE5LjA1LjAwI0luZHVzdHJpYWwgbnVjbGVvbmljIG1hc3MgcGVyIHVuaXQgb3JlIG1lYXN1cmluZyBzeXN0ZW1zIzI2LjE0LjE5LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE5LjA2LjAwI0luZHVzdHJpYWwgbnVjbGVvbmljIG1vaXN0dXJlIG1lYXN1cmluZyBzeXN0ZW1zIzI2LjE0LjE5LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE5LjA3LjAwI0luZHVzdHJpYWwgbnVjbGVvbmljIHRoaWNrbmVzcyBtZWFzdXJpbmcgc3lzdGVtcyMyNi4xNC4xOS4wMC4wMAotdW5zcHNjNyMyNi4xNC4xOS4wOC4wMCNJbmR1c3RyaWFsIG51Y2xlb25pYyBmbG93IG1lYXN1cmluZyBzeXN0ZW1zIzI2LjE0LjE5LjAwLjAwCi11bnNwc2M3IzI2LjE0LjE5LjA5LjAwI0lzb3RvcGUgc2VwYXJhdG9ycyMyNi4xNC4xOS4wMC4wMAotdW5zcHNjNyMyNi4xNC4xOS4xMC4wMCNJc290b3BlIHByb2R1Y3Rpb24gZmFjaWxpdGllcyMyNi4xNC4xOS4wMC4wMAotdW5zcHNjNyMyNi4xNC4xOS4xMS4wMCNJc290b3BlIGNhbGlicmF0b3IgYWN0aXZpdHkgbWV0ZXJzIzI2LjE0LjE5LjAwLjAwCi11bnNwc2M3IzI2LjE0LjIwLjAwLjAwI0lycmFkaWF0aW9uIGVxdWlwbWVudCMyNi4xNC4wMC4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMC4wMS4wMCNJcnJhZGlhdGlvbiBnYW1tYSBzb3VyY2VzIzI2LjE0LjIwLjAwLjAwCi11bnNwc2M3IzI2LjE0LjIwLjAyLjAwI01hZ25ldCBzeXN0ZW1zIzI2LjE0LjIwLjAwLjAwCi11bnNwc2M3IzI2LjE0LjIwLjAzLjAwI05JTSBudWNsZWFyIGVsZWN0cm9uaWMgdW5pdHMjMjYuMTQuMjAuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjAuMDQuMDAjTmV1dHJvbiBpcnJhZGlhdG9ycyMyNi4xNC4yMC4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMC4wNS4wMCNJcnJhZGlhdGlvbiB0ZXN0aW5nIGNhcHN1bGVzIzI2LjE0LjIwLjAwLjAwCi11bnNwc2M3IzI2LjE0LjIwLjA2LjAwI0lycmFkaWF0aW9uIHNhbXBsZSB0cmFuc2ZlciBzeXN0ZW0jMjYuMTQuMjAuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjAuMDcuMDAjTmV1dHJvbiBnZW5lcmF0b3JzIzI2LjE0LjIwLjAwLjAwCi11bnNwc2M3IzI2LjE0LjIxLjAwLjAwI051Y2xlYXIgcmVhY3RvciBlcXVpcG1lbnQjMjYuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjEuMDEuMDAjTnVjbGVhciByZWFjdG9yIHNwZWNpbWVuIGlycmFkaWF0aW9uIGNvbnRhaW5lcnMjMjYuMTQuMjEuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjEuMDYuMDAjTnVjbGVhciByZWFjdG9yIGNvbnRyb2wgcm9kIHN5c3RlbXMjMjYuMTQuMjEuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjEuMDguMDAjTnVjbGVhciByZWFjdG9yIGluIGNvcmUgbmV1dHJvbiBmbHV4IGluc3RydW1lbnRhdGlvbiMyNi4xNC4yMS4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMS4xNy4wMCNOdWNsZWFyIHJlYWN0b3IgZWFydGhxdWFrZSBpbnN0cnVtZW50YXRpb24jMjYuMTQuMjEuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjIuMDAuMDAjTnVjbGVhciBmdWVsIGVxdWlwbWVudCMyNi4xNC4wMC4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMi4wMS4wMCNOdWNsZWFyIGZ1ZWwgY2xhZGRpbmcgdHViZXMjMjYuMTQuMjIuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjIuMDIuMDAjTnVjbGVhciBmdWVsIGVsZW1lbnQgZmFpbHVyZSBkZXRlY3Rpb24gc3lzdGVtcyMyNi4xNC4yMi4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMy4wMC4wMCNSYWRpYXRpb24gc2hpZWxkaW5nIGVxdWlwbWVudCMyNi4xNC4wMC4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMy4wMi4wMCNMZWFkIHNjcmVlbnMjMjYuMTQuMjMuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjMuMDMuMDAjRmlsbSBiYWRnZXMjMjYuMTQuMjMuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjMuMDQuMDAjUmFkaW9ncmFwaGljIGVxdWlwbWVudCMyNi4xNC4yMy4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMy4wNi4wMCNTaGllbGRlZCBjb250YWluZXJzIGZvciByYWRpYXRpb24gcHJvdGVjdGlvbiMyNi4xNC4yMy4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMy4wNy4wMCNMZWFkIGNoYW1iZXJzIG9yIHNhZmVzIGZvciByYWRpYXRpb24gcHJvdGVjdGlvbiMyNi4xNC4yMy4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMy4wOC4wMCNMZWFkIGJyaWNrcyBmb3IgcmFkaWF0aW9uIHByb3RlY3Rpb24jMjYuMTQuMjMuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjMuMTAuMDAjR2xvdmUgYm94ZXMgZm9yIHJhZGlhdGlvbiBwcm90ZWN0aW9uIzI2LjE0LjIzLjAwLjAwCi11bnNwc2M3IzI2LjE0LjIzLjExLjAwI1JhZGlhdGlvbiBzaGllbGRpbmcgd2luZG93cyMyNi4xNC4yMy4wMC4wMAotdW5zcHNjNyMyNi4xNC4yMy4xMi4wMCNMZWFkIGZvciByYWRpYXRpb24gc2hpZWxkaW5nIzI2LjE0LjIzLjAwLjAwCi11bnNwc2M3IzI2LjE0LjI0LjAwLjAwI1JhZGlvYWN0aXZlIHdhc3RlIGVxdWlwbWVudCMyNi4xNC4wMC4wMC4wMAotdW5zcHNjNyMyNi4xNC4yNC4wMS4wMCNSYWRpb2FjdGl2ZSB3YXN0ZSB0cmVhdG1lbnQgY29tcGFjdG9ycyBvciBpbmNpbmVyYXRvcnMjMjYuMTQuMjQuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjQuMDIuMDAjTnVjbGVhciByYWRpYXRpb24gYWJzb3JiZXJzIzI2LjE0LjI0LjAwLjAwCi11bnNwc2M3IzI2LjE0LjI0LjAzLjAwI0F0b21pYyBlbmVyZ3kgZXZhcG9yYXRvcnMgb3IgY29uY2VudHJhdG9ycyBvciBkcnllcnMjMjYuMTQuMjQuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjQuMDQuMDAjRG9vciBpbnRlcmxvY2tpbmcgc3lzdGVtcyMyNi4xNC4yNC4wMC4wMAotdW5zcHNjNyMyNi4xNC4yNC4wNS4wMCNSYWRpb2FjdGl2ZSB3YXN0ZSBkb3NhZ2Ugc3lzdGVtcyMyNi4xNC4yNC4wMC4wMAotdW5zcHNjNyMyNi4xNC4yNC4wNi4wMCNSYWRpb2FjdGl2ZSB3YXN0ZSBzb2xpZGlmaWNhdGlvbiBzeXN0ZW1zIzI2LjE0LjI0LjAwLjAwCi11bnNwc2M3IzI2LjE0LjI0LjA3LjAwI1JhZGlvYWN0aXZlIHdhc3RlIGRpc3Bvc2FsIHN5c3RlbXMjMjYuMTQuMjQuMDAuMDAKLXVuc3BzYzcjMjYuMTQuMjQuMDguMDAjUmFkaW9hY3RpdmUgd2FzdGUgdHJlYXRtZW50IGZhY2lsaXRpZXMjMjYuMTQuMjQuMDAuMDAKLXVuc3BzYzcjMjcuMDAuMDAuMDAuMDAjVG9vbHMgYW5kIEdlbmVyYWwgTWFjaGluZXJ5IzI3LjAwLjAwLjAwLjAwCi11bnNwc2M3IzI3LjExLjAwLjAwLjAwI0hhbmQgdG9vbHMjMjcuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTUuMDAuMDAjQ3V0dGluZyBhbmQgY3JpbXBpbmcgYW5kIHB1bmNoaW5nIHRvb2xzIzI3LjExLjAwLjAwLjAwCi11bnNwc2M3IzI3LjExLjE1LjAxLjAwI0tuaWZlIGJsYWRlcyMyNy4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNS4wMi4wMCNSYXpvciBrbml2ZXMjMjcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTUuMDMuMDAjVXRpbGl0eSBrbml2ZXMjMjcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTUuMDQuMDAjUG9ja2V0IGtuaXZlcyMyNy4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNS4wNS4wMCNQdW5jaGVzIG9yIG5haWwgc2V0cyBvciBkcmlmdHMjMjcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTUuMDYuMDAjU2hlYXJzIzI3LjExLjE1LjAwLjAwCi11bnNwc2M3IzI3LjExLjE1LjA3LjAwI01ldGFsIGN1dHRlcnMjMjcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTUuMDguMDAjU2F3cyMyNy4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNS4wOS4wMCNBdWdlcnMjMjcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTUuMTAuMDAjU3RyaXBwaW5nIHRvb2xzIzI3LjExLjE1LjAwLjAwCi11bnNwc2M3IzI3LjExLjE1LjExLjAwI1dpcmUgY3V0dGVycyMyNy4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNS4xMi4wMCNCb2x0IGN1dHRlcnMjMjcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTUuMTMuMDAjSG9zZSBjdXR0ZXIjMjcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTUuMTQuMDAjR2xhc3MgY3V0dGVycyMyNy4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNS4xNS4wMCNIYW5kIG9yIHB1c2ggZHJpbGwjMjcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTUuMTYuMDAjUHVuY2hpbmcgcGxpZXJzIzI3LjExLjE1LjAwLjAwCi11bnNwc2M3IzI3LjExLjE1LjE3LjAwI0tuaWZlIGJsYWRlIHNldHMgb3IgZGlzcGVuc2VycyMyNy4xMS4xNS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNS4yMC4wMCNOdXQgc3BsaXR0ZXJzIzI3LjExLjE1LjAwLjAwCi11bnNwc2M3IzI3LjExLjE1LjIxLjAwI05pYmJsZXJzIzI3LjExLjE1LjAwLjAwCi11bnNwc2M3IzI3LjExLjE2LjAwLjAwI0Zvcm1pbmcgdG9vbHMjMjcuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTYuMDEuMDAjTWFsbGV0cyMyNy4xMS4xNi4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNi4wMi4wMCNIYW1tZXJzIzI3LjExLjE2LjAwLjAwCi11bnNwc2M3IzI3LjExLjE2LjAzLjAwI0FudmlscyMyNy4xMS4xNi4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNi4wNC4wMCNIYXRjaGV0cyMyNy4xMS4xNi4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNi4wNS4wMCNQaWNrcyMyNy4xMS4xNi4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNi4wNi4wMCNCb2x0IGN1dHRlcnMjMjcuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTYuMDcuMDAjU3dhZ2luZyB0b29scyMyNy4xMS4xNi4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNy4wMC4wMCNXcmVuY2hlcyBhbmQgZHJpdmVycyMyNy4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNy4wMS4wMCNTY3Jld2RyaXZlcnMjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTcuMDIuMDAjTnV0IGRyaXZlcnMjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTcuMDMuMDAjU29ja2V0IHNldHMjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTcuMDQuMDAjU29ja2V0cyMyNy4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNy4wNS4wMCNCb3ggZW5kIHdyZW5jaGVzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjA2LjAwI09wZW4gZW5kIHdyZW5jaGVzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjA3LjAwI0FkanVzdGFibGUgd3JlbmNoZXMjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTcuMDguMDAjUGlwZSB3cmVuY2hlcyMyNy4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNy4wOS4wMCNTY3JldyBleHRyYWN0b3JzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjEwLjAwI0hleCBrZXlzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjExLjAwI1JhdGNoZXRzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjEyLjAwI1B1bGxlcnMjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTcuMTMuMDAjQ29tYmluYXRpb24gd3JlbmNoZXMjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTcuMTQuMDAjU3BlY2lhbHR5IHdyZW5jaGVzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjE1LjAwI1RvcnF1ZSB3cmVuY2hlcyMyNy4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNy4xNi4wMCNUb3J4IGtleXMjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTcuMTcuMDAjUGlwZSBleHRyYWN0b3JzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjE4LjAwI1RhcCBleHRyYWN0b3JzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjE5LjAwI1RvcnF1ZSB3cmVuY2gjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTcuMjAuMDAjVCBoYW5kbGUgdGFwIHdyZW5jaGVzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjIxLjAwI0NyYW5rcyMyNy4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNy4yMi4wMCNEaWUgc3RvY2tzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjIzLjAwI1R1YmUgd3JlbmNoZXMjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTcuMjQuMDAjSG9vayB3cmVuY2hlcyMyNy4xMS4xNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4xNy4yNS4wMCNPZmZzZXQgc29ja2V0IHdyZW5jaGVzIzI3LjExLjE3LjAwLjAwCi11bnNwc2M3IzI3LjExLjE3LjI2LjAwI1NwYW5uZXIgd3JlbmNoZXMjMjcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTguMDAuMDAjTWVhc3VyaW5nIGFuZCBsYXlvdXQgdG9vbHMjMjcuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTguMDEuMDAjVGFwZSBtZWFzdXJlcyMyNy4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOC4wMi4wMCNMZXZlbHMjMjcuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTguMDMuMDAjU3F1YXJlcyMyNy4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOC4wNC4wMCNQbHVtYiBib2JzIzI3LjExLjE4LjAwLjAwCi11bnNwc2M3IzI3LjExLjE4LjA1LjAwI1Byb3RyYWN0b3JzIzI3LjExLjE4LjAwLjAwCi11bnNwc2M3IzI3LjExLjE4LjA2LjAwI05haWwgb3Igcm91dGVyIGdhdWdlcyMyNy4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOC4wNy4wMCNTdHJhaWdodCBlZGdlcyMyNy4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOC4wOC4wMCNSdWxlcyMyNy4xMS4xOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOC4wOS4wMCNCZXZlbHMjMjcuMTEuMTguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTguMTAuMDAjU3R1ZCBmaW5kZXJzIzI3LjExLjE4LjAwLjAwCi11bnNwc2M3IzI3LjExLjE4LjExLjAwI0NhbGlwZXJzIzI3LjExLjE4LjAwLjAwCi11bnNwc2M3IzI3LjExLjE5LjAwLjAwI1JvdWdoIGFuZCBmaW5pc2hpbmcgdG9vbHMjMjcuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTkuMDEuMDAjQ29sZCBjaGlzZWxzIzI3LjExLjE5LjAwLjAwCi11bnNwc2M3IzI3LjExLjE5LjAyLjAwI0ZpbGVzIzI3LjExLjE5LjAwLjAwCi11bnNwc2M3IzI3LjExLjE5LjAzLjAwI1BsYW5lcyMyNy4xMS4xOS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOS4wNC4wMCNSYXNwcyMyNy4xMS4xOS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOS4wNS4wMCNHcmluZGVycyMyNy4xMS4xOS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOS4wNi4wMCNXb29kIGNoaXNlbHMjMjcuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMTkuMDcuMDAjV2lyZSBicnVzaGVzIzI3LjExLjE5LjAwLjAwCi11bnNwc2M3IzI3LjExLjE5LjA4LjAwI1NoYXJwZW5pbmcgdG9vbHMgb3Iga2l0cyMyNy4xMS4xOS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOS4wOS4wMCNTcGF0dWxhcyMyNy4xMS4xOS4wMC4wMAotdW5zcHNjNyMyNy4xMS4xOS4xMS4wMCNDcm9zcyBjdXQgY2hpc2VscyMyNy4xMS4xOS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMC4wMC4wMCNHYXJkZW4gdG9vbHMjMjcuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjAuMDEuMDAjTWFjaGV0ZXMjMjcuMTEuMjAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjAuMDIuMDAjU3BhZGVzIzI3LjExLjIwLjAwLjAwCi11bnNwc2M3IzI3LjExLjIwLjAzLjAwI1Jha2VzIzI3LjExLjIwLjAwLjAwCi11bnNwc2M3IzI3LjExLjIwLjA0LjAwI1Nob3ZlbHMjMjcuMTEuMjAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjAuMDUuMDAjQXhlcyMyNy4xMS4yMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMC4wNi4wMCNTY3l0aGVzIzI3LjExLjIwLjAwLjAwCi11bnNwc2M3IzI3LjExLjIwLjA3LjAwI1NlY2F0ZXVycyBvciBwcnVuaW5nIHNoZWFycyMyNy4xMS4yMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMC4wOC4wMCNIb2VzIzI3LjExLjIwLjAwLjAwCi11bnNwc2M3IzI3LjExLjIwLjA5LjAwI1NjcmFwZXJzIzI3LjExLjIwLjAwLjAwCi11bnNwc2M3IzI3LjExLjIwLjEwLjAwI0dhcmRlbiBmb3JrcyMyNy4xMS4yMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMC4xMS4wMCNUb29sIGhhbmRsZXMjMjcuMTEuMjAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjAuMTIuMDAjR2FyZGVuIHJpZGRsZXMjMjcuMTEuMjAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjAuMTMuMDAjUG9zdCBob2xlIGRpZ2dlciMyNy4xMS4yMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMC4xNC4wMCNMYXdubW93ZXJzIzI3LjExLjIwLjAwLjAwCi11bnNwc2M3IzI3LjExLjIwLjE1LjAwI0xhd24gc2NhcmlmaWVycyMyNy4xMS4yMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMC4xNi4wMCNIZWRnZSBjbGlwcGVycyMyNy4xMS4yMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMC4xNy4wMCNEaWdnaW5nIGJhcnMjMjcuMTEuMjAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMDAuMDAjSG9sZGluZyBhbmQgY2xhbXBpbmcgdG9vbHMjMjcuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMDEuMDAjUGlwZSB2aXNlcyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4wMi4wMCNCZW5jaCB2aXNlcyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4wMy4wMCNIYW5kIGNsYW1wcyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4wNC4wMCNUb25ncyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4wNS4wMCNUd2VlemVycyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4wNi4wMCNMaW5lbWFucyBwbGllcnMjMjcuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMDcuMDAjQWRqdXN0YWJsZSB3aWRlbW91dGggcGxpZXJzIzI3LjExLjIxLjAwLjAwCi11bnNwc2M3IzI3LjExLjIxLjA4LjAwI05lZWRsZW5vc2UgcGxpZXJzIzI3LjExLjIxLjAwLjAwCi11bnNwc2M3IzI3LjExLjIxLjA5LjAwI01hZ25ldGljIHRvb2xzIzI3LjExLjIxLjAwLjAwCi11bnNwc2M3IzI3LjExLjIxLjEwLjAwI1JldGFpbmluZyByaW5nIHBsaWVycyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4xMS4wMCNBbGxpZ2F0b3IgcGxpZXJzIzI3LjExLjIxLjAwLjAwCi11bnNwc2M3IzI3LjExLjIxLjEyLjAwI1Rvbmd1ZSBhbmQgZ3Jvb3ZlIHBsaWVycyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4xMy4wMCNTbGlwIG9yIGdyb292ZSBqb2ludCBwbGllcnMjMjcuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMTQuMDAjRGlhZ29uYWwgY3V0IHBsaWVycyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4xNS4wMCNMb2NraW5nIHBsaWVycyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4xNi4wMCNGZW5jZSBwbGllcnMjMjcuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMTcuMDAjRW5kIGN1dCBwbGllcnMjMjcuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMTguMDAjV2lyZSBsdWcgY3JpbXBpbmcgdG9vbCMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4xOS4wMCNMaWdodCBidWxiIGNoYW5nZXIjMjcuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMjAuMDAjQyBjbGFtcHMjMjcuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMjEuMDAjQ29ybmVyIGNsYW1wcyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4yMi4wMCNTaGVldCBtZXRhbCBwbGllcnMjMjcuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMjMuMDAjQmVuY2ggZG9nIzI3LjExLjIxLjAwLjAwCi11bnNwc2M3IzI3LjExLjIxLjI0LjAwI1RlbnNpb25lcnMjMjcuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMjUuMDAjUm91bmQgbm9zZSBwbGllcnMjMjcuMTEuMjEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjEuMjYuMDAjRmxhdCBub3NlIHBsaWVycyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMS4yNy4wMCNTdHJhcCB3cmVuY2hlcyMyNy4xMS4yMS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMi4wMC4wMCNNYXNvbnJ5IGFuZCBjb25jcmV0ZSB0b29scyMyNy4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMi4wMS4wMCNUcm93ZWxzIzI3LjExLjIyLjAwLjAwCi11bnNwc2M3IzI3LjExLjIyLjAyLjAwI0Zsb2F0cyMyNy4xMS4yMi4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMi4wMy4wMCNFZGdlcnMjMjcuMTEuMjIuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjIuMDQuMDAjQ2VtZW50IG1peGVycyMyNy4xMS4yMi4wMC4wMAotdW5zcHNjNyMyNy4xMS4yMy4wMC4wMCNNYXJraW5nIHRvb2xzIzI3LjExLjAwLjAwLjAwCi11bnNwc2M3IzI3LjExLjIzLjAxLjAwI0JyYW5kZXJzIzI3LjExLjIzLjAwLjAwCi11bnNwc2M3IzI3LjExLjIzLjAyLjAwI0F3bHMjMjcuMTEuMjMuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjMuMDMuMDAjU2NyaWJlcnMjMjcuMTEuMjMuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjMuMDQuMDAjQ2hhbGsgbGluZXMjMjcuMTEuMjMuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjMuMDUuMDAjTWV0YWwgbWFya2VycyBvciBob2xkZXJzIzI3LjExLjIzLjAwLjAwCi11bnNwc2M3IzI3LjExLjIzLjA2LjAwI01ldGFsIHN0YW1wcyMyNy4xMS4yMy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNC4wMC4wMCNGYXN0ZW5lciBzZXR0aW5nIHRvb2xzIzI3LjExLjAwLjAwLjAwCi11bnNwc2M3IzI3LjExLjI0LjAxLjAwI1N0YXBsZSBndW5zIzI3LjExLjI0LjAwLjAwCi11bnNwc2M3IzI3LjExLjI0LjAyLjAwI1JpdmV0IHRvb2xzIzI3LjExLjI0LjAwLjAwCi11bnNwc2M3IzI3LjExLjI0LjAzLjAwI0JhbmRlcnMjMjcuMTEuMjQuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjQuMDQuMDAjQW5jaG9yIHNldHRpbmcgdG9vbHMjMjcuMTEuMjQuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjQuMDUuMDAjQm9sdCBoZWF0ZXJzIzI3LjExLjI0LjAwLjAwCi11bnNwc2M3IzI3LjExLjI1LjAwLjAwI1ByeWluZyBhbmQgYmVuZGluZyB0b29scyMyNy4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNS4wMS4wMCNQaXBlIGJlbmRpbmcgdG9vbHMjMjcuMTEuMjUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjUuMDIuMDAjUHJ5IGJhcnMjMjcuMTEuMjUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjUuMDMuMDAjQ29uZHVpdCBiZW5kZXJzIzI3LjExLjI1LjAwLjAwCi11bnNwc2M3IzI3LjExLjI1LjA0LjAwI1dlZGdlcyMyNy4xMS4yNS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNS4wNS4wMCNQYWNraW5nIGhvb2tzIzI3LjExLjI1LjAwLjAwCi11bnNwc2M3IzI3LjExLjI1LjA2LjAwI0hpY2tleXMjMjcuMTEuMjUuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjYuMDAuMDAjU2VhbGluZyB0b29scyMyNy4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNi4wMS4wMCNQdXR0eSBrbml2ZXMjMjcuMTEuMjYuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjYuMDIuMDAjQ2F1bGtpbmcgdG9vbHMjMjcuMTEuMjYuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjcuMDAuMDAjUG93ZXIgdG9vbHMjMjcuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjcuMDEuMDAjUG93ZXIgYmxvd2VycyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4wMi4wMCNQb3dlciBidWZmZXJzIzI3LjExLjI3LjAwLjAwCi11bnNwc2M3IzI3LjExLjI3LjAzLjAwI1Bvd2VyIGRyaWxscyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4wNC4wMCNQb3dlciBncmluZGVycyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4wNS4wMCNEZW1vbGl0aW9uIGhhbW1lcnMjMjcuMTEuMjcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjcuMDYuMDAjUG93ZXIgcGxhbmVzIzI3LjExLjI3LjAwLjAwCi11bnNwc2M3IzI3LjExLjI3LjA3LjAwI1Bvd2VyIHJvdXRlcnMjMjcuMTEuMjcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjcuMDguMDAjUG93ZXIgc2FuZGVycyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4wOS4wMCNQb3dlciBzYXdzIzI3LjExLjI3LjAwLjAwCi11bnNwc2M3IzI3LjExLjI3LjEwLjAwI1Bvd2VyIHNjcmV3Z3VucyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4xMS4wMCNQb3dlciBzdGFwbGUgZ3VucyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4xMi4wMCNQb3dlciB0cmltbWVycyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4xMy4wMCNJbXBhY3Qgd3JlbmNoZXMjMjcuMTEuMjcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjcuMTQuMDAjUG93ZXIgY2F1bGtpbmcgZ3VucyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4xNS4wMCNQb3dlciBjaGlwcGVycyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4xNi4wMCNQb3dlciBuYWlsIGd1bnMjMjcuMTEuMjcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjcuMTcuMDAjSGVhdCBndW5zIzI3LjExLjI3LjAwLjAwCi11bnNwc2M3IzI3LjExLjI3LjE4LjAwI0VuZ3JhdmVycyMyNy4xMS4yNy4wMC4wMAotdW5zcHNjNyMyNy4xMS4yNy4xOS4wMCNHbHVlIGd1bnMjMjcuMTEuMjcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjcuMjAuMDAjVG9ycXVlIHRvb2xzIzI3LjExLjI3LjAwLjAwCi11bnNwc2M3IzI3LjExLjI3LjIxLjAwI0Jpc2N1aXQgam9pbnRlcnMjMjcuMTEuMjcuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMDAuMDAjVG9vbCBhdHRhY2htZW50cyMyNy4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOC4wMS4wMCNEcmlsbCBiaXRzIzI3LjExLjI4LjAwLjAwCi11bnNwc2M3IzI3LjExLjI4LjAyLjAwI1NhdyBibGFkZXMjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMDMuMDAjRW5kIG1pbGxzIzI3LjExLjI4LjAwLjAwCi11bnNwc2M3IzI3LjExLjI4LjA0LjAwI1N0YW1waW5nIGRpZXMgb3IgcHVuY2hlcyMyNy4xMS4yOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOC4wNS4wMCNUaHJlYWRpbmcgZGllcyMyNy4xMS4yOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOC4wNi4wMCNUaHJlYWRpbmcgdGFwcyMyNy4xMS4yOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOC4wNy4wMCNDaHVja3MjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMDguMDAjQ29sbGV0cyMyNy4xMS4yOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOC4wOS4wMCNUb29sIGhvbGRlcnMjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMTAuMDAjVGhyZWFkIHJlcGFpciBraXRzIzI3LjExLjI4LjAwLjAwCi11bnNwc2M3IzI3LjExLjI4LjExLjAwI0FyYm9ycyMyNy4xMS4yOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOC4xMi4wMCNDb3VudGVyc2lua3MjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMTMuMDAjRXh0ZW5zaW9uIHBvbGUjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMTQuMDAjU2NyZXdkcml2ZXIgYml0cyMyNy4xMS4yOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOC4xNS4wMCNOdXQgZHJpdmVyIGJpdHMjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMTYuMDAjQWJyYXNpdmUgZGlzayMyNy4xMS4yOC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOC4xNy4wMCNIb2xlIHNhd3MjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMTguMDAjVmlzZSBqYXcgbGluZXJzIG9yIGNhcHMjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMTkuMDAjU2tpdmluZyB0b29sIGN1dHRlciBibGFkZXMjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjguMjEuMDAjUm91dGVyIGJpdHMjMjcuMTEuMjguMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjkuMDAuMDAjRGlzcGVuc2luZyB0b29scyMyNy4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOS4wMS4wMCNHcmVhc2UgZ3VucyMyNy4xMS4yOS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOS4wMi4wMCNJbmR1c3RyaWFsIGZ1bm5lbHMjMjcuMTEuMjkuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjkuMDMuMDAjSGFuZCBzcHJheWVycyMyNy4xMS4yOS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOS4wNC4wMCNSZXNpbiBndW5zIzI3LjExLjI5LjAwLjAwCi11bnNwc2M3IzI3LjExLjI5LjA1LjAwI09pbCBjYW4jMjcuMTEuMjkuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMjkuMDYuMDAjQ2F1bGtpbmcgZ3VucyMyNy4xMS4yOS4wMC4wMAotdW5zcHNjNyMyNy4xMS4yOS4wNy4wMCNCcm9hZGNhc3Qgc3ByZWFkZXJzIzI3LjExLjI5LjAwLjAwCi11bnNwc2M3IzI3LjExLjMwLjAwLjAwI0JydXNoZXMjMjcuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMzAuMDEuMDAjU2NyYXRjaCBicnVzaGVzIzI3LjExLjMwLjAwLjAwCi11bnNwc2M3IzI3LjExLjMwLjAyLjAwI1R1YmUgYnJ1c2hlcyMyNy4xMS4zMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4zMC4wMy4wMCNBcHBsaWNhdG9yIGJydXNoZXMjMjcuMTEuMzAuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMzEuMDAuMDAjUHVsbGluZyB0b29scyMyNy4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4zMS4wMS4wMCNGaXNoIHRhcGUjMjcuMTEuMzEuMDAuMDAKLXVuc3BzYzcjMjcuMTEuMzEuMDIuMDAjRnVzZSBwdWxsZXJzIzI3LjExLjMxLjAwLjAwCi11bnNwc2M3IzI3LjExLjMyLjAwLjAwI1Rvb2wga2l0cyMyNy4xMS4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMS4zMi4wMS4wMCNHZW5lcmFsIHRvb2wga2l0cyMyNy4xMS4zMi4wMC4wMAotdW5zcHNjNyMyNy4xMS4zMi4wMi4wMCNCZWFyaW5nIGZpdHRpbmcgdG9vbCBraXRzIzI3LjExLjMyLjAwLjAwCi11bnNwc2M3IzI3LjExLjMyLjAzLjAwI0NvbXB1dGVyIHRvb2wga2l0cyMyNy4xMS4zMi4wMC4wMAotdW5zcHNjNyMyNy4xMS4zMi4wNC4wMCNFbGVjdHJpY2lhbiBraXRzIzI3LjExLjMyLjAwLjAwCi11bnNwc2M3IzI3LjEyLjAwLjAwLjAwI0h5ZHJhdWxpYyBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCMyNy4wMC4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMi4xNS4wMC4wMCNIeWRyYXVsaWMgcHJlc3NlcyMyNy4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMi4xNS4wMS4wMCNQcmVzcyByZXR1cm4gc3ByaW5ncyMyNy4xMi4xNS4wMC4wMAotdW5zcHNjNyMyNy4xMi4xNi4wMC4wMCNIeWRyYXVsaWMgY3lsaW5kZXJzIGFuZCBwaXN0b25zIzI3LjEyLjAwLjAwLjAwCi11bnNwc2M3IzI3LjEyLjE2LjAxLjAwI0N5bGluZGVyIHBpc3RvbnMjMjcuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMjcuMTIuMTYuMDIuMDAjSHlkcmF1bGljIGN5bGluZGVycyMyNy4xMi4xNi4wMC4wMAotdW5zcHNjNyMyNy4xMi4xNy4wMC4wMCNIeWRyYXVsaWMgaG9zZSBhbmQgdHViZSBmaXR0aW5ncyMyNy4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMi4xNy4wMS4wMCNIeWRyYXVsaWMgcXVpY2sgY29ubmVjdG9ycyMyNy4xMi4xNy4wMC4wMAotdW5zcHNjNyMyNy4xMi4xNy4wMi4wMCNIeWRyYXVsaWMgdGVlcyBvciBjcm9zc2VzIzI3LjEyLjE3LjAwLjAwCi11bnNwc2M3IzI3LjEyLjE3LjAzLjAwI0ZlcnJ1bGVzIzI3LjEyLjE3LjAwLjAwCi11bnNwc2M3IzI3LjEyLjE3LjA0LjAwI0h5ZHJhdWxpYyB1bmlvbnMjMjcuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTIuMTcuMDUuMDAjSHlkcmF1bGljIG9yIGNvbXByZXNzaW9uIGVsYm93cyMyNy4xMi4xNy4wMC4wMAotdW5zcHNjNyMyNy4xMi4xNy4wNi4wMCNGZXJydWxlIG51dHMjMjcuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMjcuMTIuMTcuMDcuMDAjQ3JpbXAgY29ubmVjdG9ycyMyNy4xMi4xNy4wMC4wMAotdW5zcHNjNyMyNy4xMi4xOC4wMC4wMCNIeWRyYXVsaWMgcXVpY2sgY29ubmVjdG9ycyMyNy4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMi4xOS4wMC4wMCNIeWRyYXVsaWMgdGVlcyBvciBjcm9zc2VzIzI3LjEyLjAwLjAwLjAwCi11bnNwc2M3IzI3LjEyLjIwLjAwLjAwI0ZlcnJ1bGVzIzI3LjEyLjAwLjAwLjAwCi11bnNwc2M3IzI3LjEyLjMwLjAwLjAwI0h5ZHJhdWxpYyB1bmlvbnMjMjcuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTIuNDAuMDAuMDAjSHlkcmF1bGljIG9yIGNvbXByZXNzaW9uIGVsYm93cyMyNy4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMi41MC4wMC4wMCNGZXJydWxlIG51dHMjMjcuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTIuNjAuMDAuMDAjQ3JpbXAgY29ubmVjdG9ycyMyNy4xMi4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMi42MS4wMC4wMCNIeWRyYXVsaWMgdG9vbHMjMjcuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTIuNjEuMDEuMDAjTWFuaG9sZSBjb3ZlciBsaWZ0ZXJzIzI3LjEyLjYxLjAwLjAwCi11bnNwc2M3IzI3LjEzLjAwLjAwLjAwI1BuZXVtYXRpYyBtYWNoaW5lcnkgYW5kIGVxdWlwbWVudCMyNy4wMC4wMC4wMC4wMAotdW5zcHNjNyMyNy4xMy4xNS4wMC4wMCNQbmV1bWF0aWMgdG9vbHMjMjcuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMjcuMTMuMTUuMDEuMDAjUG5ldW1hdGljIGltcGFjdCB3cmVuY2hlcyMyNy4xMy4xNS4wMC4wMAotdW5zcHNjNyMyNy4xMy4xNS4wMi4wMCNDb21wcmVzc2VkIGFpciBndW4jMjcuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTMuMTUuMDMuMDAjUG5ldW1hdGljIHNjcmV3ZHJpdmVyIzI3LjEzLjE1LjAwLjAwCi11bnNwc2M3IzI3LjEzLjE1LjA0LjAwI1BuZXVtYXRpYyBoYW1tZXIjMjcuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTMuMTUuMDUuMDAjUG5ldW1hdGljIGRyaWxsIzI3LjEzLjE1LjAwLjAwCi11bnNwc2M3IzI3LjEzLjE1LjA2LjAwI1BuZXVtYXRpYyBuYWlsIGRyaXZlcnMjMjcuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTMuMTUuMDcuMDAjUG5ldW1hdGljIHNhbmRpbmcgbWFjaGluZXMjMjcuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMjcuMTMuMTYuMDAuMDAjQWlyIGZpdHRpbmdzIGFuZCBjb25uZWN0b3JzIzI3LjEzLjAwLjAwLjAwCi11bnNwc2M3IzI3LjEzLjE2LjAxLjAwI0FpciBtYW5pZm9sZHMjMjcuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMjcuMTMuMTYuMDIuMDAjRmlsdGVycyMyNy4xMy4xNi4wMC4wMAotdW5zcHNjNyMyNy4xMy4xNi4wMy4wMCNSZWd1bGF0b3IjMjcuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMjcuMTMuMTYuMDQuMDAjTHVicmljYXRvciMyNy4xMy4xNi4wMC4wMAotdW5zcHNjNyMyNy4xMy4xNi4wNS4wMCNBaXIgY3VydGFpbiMyNy4xMy4xNi4wMC4wMAotdW5zcHNjNyMyNy4xMy4xNi4wNi4wMCNBaXIgY291cGxpbmcjMjcuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMDAuMDAuMDAuMDAjU3RydWN0dXJlcyBhbmQgQnVpbGRpbmcgYW5kIENvbnN0cnVjdGlvbiBhbmQgTWFudWZhY3R1cmluZyBDb21wb25lbnRzIGFuZCBTdXBwbGllcyMzMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4wMC4wMC4wMCNTdHJ1Y3R1cmFsIG1hdGVyaWFscyBhbmQgYmFzaWMgc2hhcGVzIzMwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjE1LjAwLjAwI0FuZ2xlcyMzMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNS4wMS4wMCNGZXJyb3VzIGFsbG95IGFuZ2xlcyMzMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNS4wMi4wMCNOb24gZmVycm91cyBhbGxveSBhbmdsZXMjMzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTUuMDMuMDAjSXJvbiBhbmdsZXMjMzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTUuMDQuMDAjU3RlZWwgYW5nbGVzIzMwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE1LjA1LjAwI1N0YWlubGVzcyBzdGVlbCBhbmdsZXMjMzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTUuMDYuMDAjQWx1bWludW0gYW5nbGVzIzMwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE1LjA3LjAwI01hZ25lc2l1bSBhbmdsZXMjMzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTUuMDguMDAjVGl0YW5pdW0gYW5nbGVzIzMwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE1LjA5LjAwI0NvcHBlciBhbmdsZXMjMzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTUuMTAuMDAjQnJhc3MgYW5nbGVzIzMwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE1LjExLjAwI0Jyb256ZSBhbmdsZXMjMzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTUuMTIuMDAjWmluYyBhbmdsZXMjMzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTUuMTMuMDAjVGluIGFuZ2xlcyMzMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNS4xNC4wMCNMZWFkIGFuZ2xlcyMzMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNS4xNS4wMCNQbGFzdGljIGFuZ2xlcyMzMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNS4xNi4wMCNSdWJiZXIgYW5nbGVzIzMwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE1LjE3LjAwI1ByZWNpb3VzIG1ldGFsIGFuZ2xlcyMzMC4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNi4wMC4wMCNCYXIjMzAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTYuMDEuMDAjRmVycm91cyBhbGxveSBiYXJzIzMwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE2LjAyLjAwI05vbiBmZXJyb3VzIGFsbG95IGJhcnMjMzAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTYuMDMuMDAjSXJvbiBiYXJzIzMwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE2LjA0LjAwI1N0ZWVsIGJhcnMjMzAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTYuMDUuMDAjU3RhaW5sZXNzIHN0ZWVsIGJhcnMjMzAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTYuMDYuMDAjQWx1bWludW0gYmFycyMzMC4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNi4wNy4wMCNNYWduZXNpdW0gYmFycyMzMC4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNi4wOC4wMCNUaXRhbml1bSBiYXJzIzMwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE2LjA5LjAwI0NvcHBlciBiYXJzIzMwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE2LjEwLjAwI0JyYXNzIGJhcnMjMzAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTYuMTEuMDAjQnJvbnplIGJhcnMjMzAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTYuMTIuMDAjWmluYyBiYXJzIzMwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE2LjEzLjAwI1RpbiBiYXJzIzMwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE2LjE0LjAwI0xlYWQgYmFycyMzMC4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNi4xNS4wMCNQbGFzdGljIGJhcnMjMzAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTYuMTYuMDAjUHJlY2lvdXMgbWV0YWwgYmFycyMzMC4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNi4xNy4wMCNXb29kZW4gYmFycyMzMC4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNy4wMC4wMCNCZWFtcyMzMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNy4wMS4wMCNGZXJyb3VzIGFsbG95IGJlYW1zIzMwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE3LjAyLjAwI05vbiBmZXJyb3VzIGFsbG95IGJlYW1zIzMwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE3LjAzLjAwI0lyb24gYmVhbXMjMzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTcuMDQuMDAjU3RlZWwgYmVhbXMjMzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTcuMDUuMDAjU3RhaW5sZXNzIHN0ZWVsIGJlYW1zIzMwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE3LjA2LjAwI0FsdW1pbnVtIGJlYW1zIzMwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE3LjA3LjAwI01hZ25lc2l1bSBiZWFtcyMzMC4xMC4xNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNy4wOC4wMCNUaXRhbml1bSBiZWFtcyMzMC4xMC4xNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNy4wOS4wMCNDb3BwZXIgYmVhbXMjMzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTcuMTAuMDAjQnJhc3MgYmVhbXMjMzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTcuMTEuMDAjQnJvbnplIGJlYW1zIzMwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE3LjEyLjAwI1ppbmMgYmVhbXMjMzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTcuMTMuMDAjVGluIGJlYW1zIzMwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE3LjE0LjAwI0xlYWQgYmVhbXMjMzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTcuMTUuMDAjUGxhc3RpYyBiZWFtcyMzMC4xMC4xNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4xNy4xNi4wMCNSdWJiZXIgYmVhbXMjMzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTcuMTcuMDAjQ29uY3JldGUgYmVhbXMjMzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTcuMTguMDAjUHJlY2lvdXMgbWV0YWwgYmVhbXMjMzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTguMDAuMDAjQ2hhbm5lbHMjMzAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTguMDEuMDAjRmVycm91cyBhbGxveSBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOC4wMi4wMCNOb24gZmVycm91cyBhbGxveSBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOC4wMy4wMCNJcm9uIGNoYW5uZWxzIzMwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE4LjA0LjAwI1N0ZWVsIGNoYW5uZWxzIzMwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE4LjA1LjAwI1N0YWlubGVzcyBzdGVlbCBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOC4wNi4wMCNBbHVtaW51bSBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOC4wNy4wMCNNYWduZXNpdW0gY2hhbm5lbHMjMzAuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTguMDguMDAjVGl0YW5pdW0gY2hhbm5uZWxzIzMwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE4LjA5LjAwI0NvcHBlciBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOC4xMC4wMCNCcmFzcyBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOC4xMS4wMCNCcm9uemUgY2hhbm5lbHMjMzAuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTguMTIuMDAjWmluYyBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOC4xMy4wMCNUaW4gY2hhbm5lbHMjMzAuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTguMTQuMDAjTGVhZCBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOC4xNS4wMCNQbGFzdGljIGNoYW5uZWxzIzMwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE4LjE2LjAwI1J1YmJlciBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOC4xNy4wMCNQcmVjaW91cyBtZXRhbCBjaGFubmVscyMzMC4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOS4wMC4wMCNDb2lsIzMwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjAxLjAwI0ZlcnJvdXMgYWxsb3kgY29pbCMzMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOS4wMi4wMCNOb24gZmVycm91cyBhbGxveSBjb2lsIzMwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjAzLjAwI0lyb24gY29pbCMzMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOS4wNC4wMCNTdGVlbCBjb2lsIzMwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjA1LjAwI1N0YWlubGVzcyBzdGVlbCBjb2lsIzMwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjA2LjAwI0FsdW1pbnVtIGNvaWwjMzAuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTkuMDcuMDAjTWFnbmVzaXVtIGNvaWwjMzAuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTkuMDguMDAjVGl0YW5pdW0gY29pbCMzMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOS4wOS4wMCNDb3BwZXIgY29pbCMzMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOS4xMC4wMCNCcmFzcyBjb2lsIzMwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjExLjAwI0Jyb256ZSBjb2lsIzMwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjEyLjAwI1ppbmMgY29pbCMzMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOS4xMy4wMCNUaW4gY29pbCMzMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOS4xNC4wMCNMZWFkIGNvaWwjMzAuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTkuMTUuMDAjUGxhc3RpYyBjb2lsIzMwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjE2LjAwI1ByZWNpb3VzIG1ldGFsIGNvaWxzIzMwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjE3LjAwI05vbiBtZXRhbGxpYyBjb2lscyMzMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOS4xOC4wMCNQZXJmb3JhdGVkIHN0ZWVsIzMwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjE5LjAwI0VtYm9zc2VkIHN0ZWVsIzMwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjE5LjIwLjAwI0NvbXByZXNzZWQgZmliZXIgY29pbCMzMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4xOS4yMS4wMCNGaWJlciBhbmQgcnViYmVyIGNvaWwjMzAuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMTkuMjIuMDAjR3JhcGhpdGUgY29pbCMzMC4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMC4wMC4wMCNGb2lsIzMwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIwLjAxLjAwI0ZlcnJvdXMgYWxsb3kgZm9pbCMzMC4xMC4yMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMC4wMi4wMCNOb24gZmVycm91cyBhbGxveSBmb2lsIzMwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIwLjAzLjAwI0lyb24gZm9pbCMzMC4xMC4yMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMC4wNC4wMCNTdGVlbCBmb2lsIzMwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIwLjA1LjAwI1N0YWlubGVzcyBzdGVlbCBmb2lsIzMwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIwLjA2LjAwI0FsdW1pbnVtIGZvaWwjMzAuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjAuMDcuMDAjTWFnbmVzaXVtIGZvaWwjMzAuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjAuMDguMDAjVGl0YW5pdW0gZm9pbCMzMC4xMC4yMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMC4wOS4wMCNDb3BwZXIgZm9pbCMzMC4xMC4yMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMC4xMC4wMCNCcmFzcyBmb2lsIzMwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIwLjExLjAwI0Jyb256ZSBmb2lsIzMwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIwLjEyLjAwI1ppbmMgZm9pbCMzMC4xMC4yMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMC4xMy4wMCNUaW4gZm9pbCMzMC4xMC4yMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMC4xNC4wMCNMZWFkIGZvaWwjMzAuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjAuMTUuMDAjUGxhc3RpYyBmb2lsIzMwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIxLjAwLjAwI1BpcGUjMzAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjEuMDEuMDAjRmVycm91cyBhbGxveSBwaXBlIzMwLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIxLjAyLjAwI05vbiBmZXJyb3VzIGFsbG95IHBpcGUjMzAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjEuMDMuMDAjSXJvbiBwaXBlIzMwLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIxLjA0LjAwI1N0ZWVsIHBpcGUjMzAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjEuMDUuMDAjU3RhaW5sZXNzIHN0ZWVsIHBpcGUjMzAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjEuMDYuMDAjQWx1bWludW0gcGlwZSMzMC4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMS4wNy4wMCNNYWduZXNpdW0gcGlwZSMzMC4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMS4wOC4wMCNUaXRhbml1bSBwaXBlIzMwLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIxLjA5LjAwI0NvcHBlciBwaXBlIzMwLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIxLjEwLjAwI0JyYXNzIHBpcGUjMzAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjEuMTEuMDAjQnJvbnplIHBpcGUjMzAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjEuMTIuMDAjWmluYyBwaXBlIzMwLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIxLjEzLjAwI1RpbiBwaXBlIzMwLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIxLjE0LjAwI0xlYWQgcGlwZSMzMC4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMS4xNS4wMCNQbGFzdGljIHBpcGUjMzAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjEuMTYuMDAjUnViYmVyIHBpcGUjMzAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjEuMTcuMDAjQ29uY3JldGUgcGlwZSMzMC4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMi4wMC4wMCNQbGF0ZSMzMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMi4wMS4wMCNGZXJyb3VzIGFsbG95IHBsYXRlIzMwLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIyLjAyLjAwI05vbiBmZXJyb3VzIHBsYXRlIzMwLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIyLjAzLjAwI0lyb24gcGxhdGUjMzAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjIuMDQuMDAjU3RlZWwgcGxhdGUjMzAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjIuMDUuMDAjU3RhaW5sZXNzIHN0ZWVsIHBsYXRlIzMwLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIyLjA2LjAwI0FsdW1pbnVtIHBsYXRlIzMwLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIyLjA3LjAwI01hZ25lc2l1bSBwbGF0ZSMzMC4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMi4wOC4wMCNUaXRhbml1bSBwbGF0ZSMzMC4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMi4wOS4wMCNDb3BwZXIgcGxhdGUjMzAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjIuMTAuMDAjQnJhc3MgcGxhdGUjMzAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjIuMTEuMDAjQnJvbnplIHBsYXRlIzMwLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIyLjEyLjAwI1ppbmMgcGxhdGUjMzAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjIuMTMuMDAjVGluIHBsYXRlIzMwLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIyLjE0LjAwI0xlYWQgcGxhdGUjMzAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjIuMTUuMDAjUGxhc3RpYyBwbGF0ZSMzMC4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMi4xNi4wMCNSdWJiZXIgcGxhdGUjMzAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjIuMTcuMDAjQ29uY3JldGUgcGxhdGUjMzAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjIuMTguMDAjUHJlY2lvdXMgbWV0YWwgcGxhdGUjMzAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjIuMTkuMDAjTm9uIG1ldGFsbGljIHBsYXRlcyMzMC4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMy4wMC4wMCNQcm9maWxlcyMzMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMy4wMS4wMCNGZXJyb3VzIGFsbG95IHByb2ZpbGVzIzMwLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIzLjAyLjAwI05vbiBmZXJyb3VzIGFsbG95IHByb2ZpbGVzIzMwLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIzLjAzLjAwI0lyb24gcHJvZmlsZXMjMzAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjMuMDQuMDAjU3RlZWwgcHJvZmlsZXMjMzAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjMuMDUuMDAjU3RhaW5sZXNzIHN0ZWVsIHByb2ZpbGVzIzMwLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIzLjA2LjAwI0FsdW1pbnVtIHByb2ZpbGVzIzMwLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIzLjA3LjAwI01hZ25lc2l1bSBwcm9maWxlcyMzMC4xMC4yMy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMy4wOC4wMCNUaXRhbml1bSBwcm9maWxlcyMzMC4xMC4yMy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMy4wOS4wMCNDb3BwZXIgcHJvZmlsZXMjMzAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjMuMTAuMDAjQnJhc3MgcHJvZmlsZXMjMzAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjMuMTEuMDAjQnJvbnplIHByb2ZpbGVzIzMwLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIzLjEyLjAwI1ppbmMgcHJvZmlsZXMjMzAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjMuMTMuMDAjVGluIHByb2ZpbGVzIzMwLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjIzLjE0LjAwI0xlYWQgcHJvZmlsZXMjMzAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjMuMTUuMDAjUGxhc3RpYyBwcm9maWxlcyMzMC4xMC4yMy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yMy4xNi4wMCNSdWJiZXIgcHJvZmlsZXMjMzAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjQuMDAuMDAjUm9kIzMwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjI0LjAxLjAwI0ZlcnJvdXMgYWxsb3kgcm9kcyMzMC4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNC4wMi4wMCNOb24gZmVycm91cyBhbGxveSByb2RzIzMwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI0LjAzLjAwI0lyb24gcm9kcyMzMC4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNC4wNC4wMCNTdGVlbCByb2RzIzMwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI0LjA1LjAwI1N0YWlubGVzcyBzdGVlbCByb2RzIzMwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI0LjA2LjAwI0FsdW1pbnVtIHJvZHMjMzAuMTAuMjQuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjQuMDcuMDAjTWFnbmVzaXVtIHJvZHMjMzAuMTAuMjQuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjQuMDguMDAjVGl0YW5pdW0gcm9kcyMzMC4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNC4wOS4wMCNDb3BwZXIgcm9kcyMzMC4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNC4xMC4wMCNCcmFzcyByb2RzIzMwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI0LjExLjAwI0Jyb256ZSByb2RzIzMwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI0LjEyLjAwI1ppbmMgcm9kcyMzMC4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNC4xMy4wMCNUaW4gcm9kcyMzMC4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNC4xNC4wMCNMZWFkIHJvZHMjMzAuMTAuMjQuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjQuMTUuMDAjUGxhc3RpYyByb2RzIzMwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI0LjE2LjAwI1J1YmJlciByb2RzIzMwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI1LjAwLjAwI1NoZWV0IzMwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjI1LjAxLjAwI0ZlcnJvdXMgYWxsb3kgc2hlZXQjMzAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjUuMDIuMDAjTm9uIGZlcnJvdXMgYWxsb3kgc2hlZXQjMzAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjUuMDMuMDAjSXJvbiBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4wNC4wMCNTdGVlbCBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4wNS4wMCNTdGFpbmxlc3Mgc3RlZWwgc2hlZXQjMzAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjUuMDYuMDAjQWx1bWludW0gc2hlZXQjMzAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjUuMDcuMDAjTWFnbmVzaXVtIHNoZWV0IzMwLjEwLjI1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI1LjA4LjAwI1RpdGFuaXVtIHNoZWV0IzMwLjEwLjI1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI1LjA5LjAwI0NvcHBlciBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4xMC4wMCNCcmFzcyBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4xMS4wMCNCcm9uemUgc2hlZXQjMzAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjUuMTIuMDAjWmluYyBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4xMy4wMCNUaW4gc2hlZXQjMzAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjUuMTQuMDAjTGVhZCBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4xNS4wMCNQbGFzdGljIHNoZWV0IzMwLjEwLjI1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI1LjE2LjAwI1J1YmJlciBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4xNy4wMCNBcm1vciBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4xOC4wMCNCZXJ5bGxpdW0gYWxsb3kgc2hlZXQjMzAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjUuMTkuMDAjQ29tcG9zaXRlIG1ldGFsIHNoZWV0IzMwLjEwLjI1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI1LjIwLjAwI05pY2tlbCBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4yMS4wMCNGb2FtIFJ1YmJlciBTaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4yMi4wMCNDb3JrIGFuZCBydWJiZXIgc2hlZXQjMzAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjUuMjMuMDAjQ29tcHJlc3NlZCBmaWJlciBzaGVldCMzMC4xMC4yNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNS4yNC4wMCNNZXRhbCBpbnNlcnRlZCBjb21wcmVzc2VkIGZpYmVyIHNoZWV0IzMwLjEwLjI1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI1LjI1LjAwI0ZpYmVyIGFuZCBydWJiZXIgc2hlZXQjMzAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjUuMjYuMDAjQXNiZXN0b3Mgc2hlZXRzIzMwLjEwLjI1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI2LjAwLjAwI1N0cmlwIzMwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjI2LjAxLjAwI0ZlcnJvdXMgYWxsb3kgc3RyaXAjMzAuMTAuMjYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjYuMDIuMDAjTm9uIGZlcnJvdXMgYWxsb3kgc3RyaXAjMzAuMTAuMjYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjYuMDMuMDAjSXJvbiBzdHJpcCMzMC4xMC4yNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNi4wNC4wMCNTdGVlbCBzdHJpcCMzMC4xMC4yNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNi4wNS4wMCNTdGFpbmxlc3Mgc3RlZWwgc3RyaXAjMzAuMTAuMjYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjYuMDYuMDAjQWx1bWludW0gc3RyaXAjMzAuMTAuMjYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjYuMDcuMDAjTWFnbmVzaXVtIHN0cmlwIzMwLjEwLjI2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI2LjA4LjAwI1RpdGFuaXVtIHN0cmlwIzMwLjEwLjI2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI2LjA5LjAwI0NvcHBlciBzdHJpcCMzMC4xMC4yNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNi4xMC4wMCNCcmFzcyBzdHJpcCMzMC4xMC4yNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNi4xMS4wMCNCcm9uemUgc3RyaXAjMzAuMTAuMjYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjYuMTIuMDAjWmluYyBzdHJpcCMzMC4xMC4yNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNi4xMy4wMCNUaW4gc3RyaXAjMzAuMTAuMjYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjYuMTQuMDAjTGVhZCBzdHJpcCMzMC4xMC4yNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNi4xNS4wMCNQbGFzdGljIHN0cmlwIzMwLjEwLjI2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI2LjE2LjAwI1J1YmJlciBzdHJpcCMzMC4xMC4yNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNy4wMC4wMCNUdWJlIGFuZCB0dWJpbmcjMzAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjcuMDEuMDAjRmVycm91cyBhbGxveSB0dWJpbmcjMzAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjcuMDIuMDAjQ29wcGVyIHR1YmluZyMzMC4xMC4yNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNy4wMy4wMCNUaXRhbml1bSB0dWJpbmcjMzAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjcuMDQuMDAjTWFnbmVzaXVtIHR1YmluZyMzMC4xMC4yNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNy4wNS4wMCNUaW4gdHViaW5nIzMwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI3LjA2LjAwI0JyYXNzIHR1YmluZyMzMC4xMC4yNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNy4wNy4wMCNMZWFkIHR1YmluZyMzMC4xMC4yNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNy4wOC4wMCNCcm9uemUgdHViaW5nIzMwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI3LjA5LjAwI1ppbmMgdHViaW5nIzMwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI3LjEwLjAwI1N0ZWVsIHR1YmluZyMzMC4xMC4yNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNy4xMS4wMCNJcm9uIHR1YmluZyMzMC4xMC4yNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNy4xMi4wMCNDZW1lbnQgdHViaW5nIzMwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI3LjEzLjAwI1BsYXN0aWMgdHViaW5nIzMwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI3LjE0LjAwI1J1YmJlciB0dWJpbmcjMzAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjcuMTUuMDAjR2xhc3MgdHViaW5nIzMwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI3LjE2LjAwI1N0b25lIHR1YmluZyMzMC4xMC4yNy4wMC4wMAotdW5zcHNjNyMzMC4xMC4yNy4xNy4wMCNOb24gZmVycm91cyBhbGxveSB0dWJpbmcjMzAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjcuMTguMDAjQWx1bWludW0gdHViaW5nIzMwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI3LjE5LjAwI1N0YWlubGVzcyBzdGVlbCB0dWJpbmcjMzAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjcuMjAuMDAjUHJlY2lvdXMgbWV0YWwgdHViaW5nIzMwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI4LjAwLjAwI1BpbGluZyMzMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yOC4wMS4wMCNBbHVtaW51bSBwaWxpbmdzIzMwLjEwLjI4LjAwLjAwCi11bnNwc2M3IzMwLjEwLjI4LjAyLjAwI0NvbmNyZXRlIHBpbGluZ3MjMzAuMTAuMjguMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjguMDMuMDAjU3RlZWwgcGlsaW5ncyMzMC4xMC4yOC4wMC4wMAotdW5zcHNjNyMzMC4xMC4yOS4wMC4wMCNQb3N0IzMwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjI5LjAxLjAwI0NlbWVudCBvciBjb25jcmV0ZSBwb3N0cyMzMC4xMC4yOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yOS4wMi4wMCNTdGVlbCBwb3N0cyMzMC4xMC4yOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yOS4wMy4wMCNNZXRhbCBwb3N0cyMzMC4xMC4yOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yOS4wNC4wMCNXb29kZW4gcG9zdHMjMzAuMTAuMjkuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMjkuMDUuMDAjUGxhc3RpYyBwb3N0cyMzMC4xMC4yOS4wMC4wMAotdW5zcHNjNyMzMC4xMC4yOS4wNi4wMCNGaWJlcmdsYXNzIHBvc3RzIzMwLjEwLjI5LjAwLjAwCi11bnNwc2M3IzMwLjEwLjMwLjAwLjAwI1NoYWZ0aW5nIzMwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjMwLjAxLjAwI1N0ZWVsIHNoYWZ0aW5nIzMwLjEwLjMwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjMwLjAyLjAwI1N0YWlubGVzcyBzdGVlbCBzaGFmdGluZyMzMC4xMC4zMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4zMS4wMC4wMCNSYWlscyMzMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4zMS4wMS4wMCNTdGVlbCByYWlsIzMwLjEwLjMxLjAwLjAwCi11bnNwc2M3IzMwLjEwLjMxLjAyLjAwI0FsdW1pbnVtIHJhaWwjMzAuMTAuMzEuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzEuMDMuMDAjTWV0YWwgcmFpbCMzMC4xMC4zMS4wMC4wMAotdW5zcHNjNyMzMC4xMC4zMi4wMC4wMCNHcmF0aW5nIzMwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjMyLjAxLjAwI1N0ZWVsIGdyYXRpbmcjMzAuMTAuMzIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzIuMDIuMDAjU3RhaW5sZXNzIHN0ZWVsIGdyYXRpbmcjMzAuMTAuMzIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzIuMDMuMDAjQWx1bWludW0gZ3JhdGluZyMzMC4xMC4zMi4wMC4wMAotdW5zcHNjNyMzMC4xMC4zMi4wNC4wMCNGaWJlcmdsYXNzIGdyYXRpbmcjMzAuMTAuMzIuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzIuMDUuMDAjSXJvbiBncmF0aW5nIzMwLjEwLjMyLjAwLjAwCi11bnNwc2M3IzMwLjEwLjMzLjAwLjAwI0JpbGxldHMjMzAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzMuMDEuMDAjQWx1bWludW0gYmlsbGV0IzMwLjEwLjMzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjMzLjAyLjAwI0JyYXNzIGJpbGxldCMzMC4xMC4zMy4wMC4wMAotdW5zcHNjNyMzMC4xMC4zMy4wMy4wMCNCcm9uemUgYmlsbGV0cyMzMC4xMC4zMy4wMC4wMAotdW5zcHNjNyMzMC4xMC4zMy4wNC4wMCNDb3BwZXIgYmlsbGV0cyMzMC4xMC4zMy4wMC4wMAotdW5zcHNjNyMzMC4xMC4zMy4wNS4wMCNMZWFkIGJpbGxldHMjMzAuMTAuMzMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzMuMDYuMDAjWmluYyBiaWxsZXRzIzMwLjEwLjMzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjMzLjA3LjAwI1N0ZWVsIGJpbGxldHMjMzAuMTAuMzMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzMuMDguMDAjVGl0YW5pdW0gYmlsbGV0cyMzMC4xMC4zMy4wMC4wMAotdW5zcHNjNyMzMC4xMC4zMy4wOS4wMCNNYWduZXNpdW0gYmlsbGV0cyMzMC4xMC4zMy4wMC4wMAotdW5zcHNjNyMzMC4xMC4zMy4xMC4wMCNQcmVjaW91cyBtZXRhbCBiaWxsZXRzIzMwLjEwLjMzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjMzLjExLjAwI05vbiBmZXJyb3VzIG1ldGFsIGJpbGxldHMjMzAuMTAuMzMuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzMuMTIuMDAjRmVycm91cyBtZXRhbCBiaWxsZXRzIzMwLjEwLjMzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjMzLjEzLjAwI05vbiBtZXRhbGxpYyBiaWxsZXRzIzMwLjEwLjMzLjAwLjAwCi11bnNwc2M3IzMwLjEwLjM0LjAwLjAwI0luZ290cyMzMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNC4wMS4wMCNBbHVtaW51bSBpbmdvdHMjMzAuMTAuMzQuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzQuMDIuMDAjQnJhc3MgaW5nb3RzIzMwLjEwLjM0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM0LjAzLjAwI0xlYWQgaW5nb3RzIzMwLjEwLjM0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM0LjA0LjAwI1ppbmMgaW5nb3RzIzMwLjEwLjM0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM0LjA1LjAwI1N0ZWVsIGluZ290cyMzMC4xMC4zNC4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNC4wNi4wMCNNYWduZXNpdW0gaW5nb3RzIzMwLjEwLjM0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM0LjA3LjAwI0Jyb256ZSBpbmdvdHMjMzAuMTAuMzQuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzQuMDguMDAjQ29wcGVyIGluZ290cyMzMC4xMC4zNC4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNC4wOS4wMCNUaXRhbml1bSBpbmdvdHMjMzAuMTAuMzQuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzQuMTAuMDAjUHJlY2lvdXMgbWV0YWwgaW5nb3RzIzMwLjEwLjM0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM0LjExLjAwI0ZlcnJvdXMgYWxsb3kgZXh0cnVzaW9uIGluZ290cyMzMC4xMC4zNC4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNC4xMi4wMCNOb24gZmVycm91cyBhbGxveSBleHRydXNpb24gaW5nb3RzIzMwLjEwLjM0LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM0LjEzLjAwI05vbiBtZXRhbGxpYyBpbmdvdHMjMzAuMTAuMzQuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzUuMDAuMDAjSG9uZXljb21iIGNvcmUjMzAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzUuMDEuMDAjQWx1bWludW0gaG9uZXljb21iIGNvcmUjMzAuMTAuMzUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzUuMDIuMDAjTWFnbmVzaXVtIGhvbmV5Y29tYiBjb3JlIzMwLjEwLjM1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM1LjAzLjAwI0ZvYW0gaG9uZXljb21iIGNvcmUjMzAuMTAuMzUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzUuMDQuMDAjUGxhc3RpYyBob25leWNvbWIgY29yZSMzMC4xMC4zNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNS4wNS4wMCNXb29kZW4gaG9uZXljb21iIGNvcmUjMzAuMTAuMzUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzUuMDYuMDAjRmVycm91cyBtZXRhbCBob25leWNvbWIgY29yZSMzMC4xMC4zNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNS4wNy4wMCNCcm9uemUgaG9uZXljb21iIGNvcmUjMzAuMTAuMzUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzUuMDguMDAjQ29wcGVyIGhvbmV5Y29tYiBjb3JlIzMwLjEwLjM1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM1LjA5LjAwI1N0ZWVsIGhvbmV5Y29tYiBjb3JlIzMwLjEwLjM1LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM1LjEwLjAwI0xlYWQgaG9uZXljb21iIGNvcmUjMzAuMTAuMzUuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzUuMTEuMDAjWmluYyBob25leWNvbWIgY29yZSMzMC4xMC4zNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNS4xMi4wMCNUaXRhbml1bSBob25leWNvbWIgY29yZSMzMC4xMC4zNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNS4xMy4wMCNCcmFzcyBob25leWNvbWIgY29yZSMzMC4xMC4zNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNS4xNC4wMCNOb24gZmVycm91cyBtZXRhbCBob25leWNvbWIgY29yZSMzMC4xMC4zNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNS4xNS4wMCNQcmVjaW91cyBtZXRhbCBob25leWNvbWIgY29yZSMzMC4xMC4zNS4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNi4wMC4wMCNTdHJ1Y3R1cmFsIHByb2R1Y3RzIzMwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEwLjM2LjAxLjAwI1dvb2QgYmVhbXMjMzAuMTAuMzYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzYuMDIuMDAjV29vZCBjb21wb3NpdGUgYmVhbXMjMzAuMTAuMzYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzYuMDMuMDAjRnJhbWluZyBsdW1iZXIjMzAuMTAuMzYuMDAuMDAKLXVuc3BzYzcjMzAuMTAuMzYuMDQuMDAjV29vZCBzaGVhdGhpbmcgb3Igc2hlZXRzIzMwLjEwLjM2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM2LjA1LjAwI1dvb2QgcGxhbmtzIzMwLjEwLjM2LjAwLjAwCi11bnNwc2M3IzMwLjEwLjM2LjA2LjAwI1dvb2QgdHJ1c3NlcyMzMC4xMC4zNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNi4wNy4wMCNXb29kIGpvaXN0cyMzMC4xMC4zNi4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNy4wMC4wMCNCcmFpZCMzMC4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMC4zNy4wMS4wMCNTdGFpbmxlc3Mgc3RlZWwgYnJhaWQjMzAuMTAuMzcuMDAuMDAKLXVuc3BzYzcjMzAuMTEuMDAuMDAuMDAjQ29uY3JldGUgYW5kIGNlbWVudCBhbmQgcGxhc3RlciMzMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMS4xNS4wMC4wMCNDb25jcmV0ZSBhbmQgbW9ydGFycyMzMC4xMS4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMS4xNS4wMS4wMCNGb2FtZWQgY29uY3JldGUjMzAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTEuMTUuMDIuMDAjQ29uZHVjdGl2ZSBjb25jcmV0ZSMzMC4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMC4xMS4xNS4wMy4wMCNJbnN1bGF0aW5nIGNvbmNyZXRlIzMwLjExLjE1LjAwLjAwCi11bnNwc2M3IzMwLjExLjE1LjA0LjAwI01vcnRhcnMjMzAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTEuMTYuMDAuMDAjQ2VtZW50IGFuZCBsaW1lIzMwLjExLjAwLjAwLjAwCi11bnNwc2M3IzMwLjExLjE2LjAxLjAwI0NlbWVudCMzMC4xMS4xNi4wMC4wMAotdW5zcHNjNyMzMC4xMS4xNi4wMi4wMCNDaGxvcmluYXRlZCBsaW1lIzMwLjExLjE2LjAwLjAwCi11bnNwc2M3IzMwLjExLjE2LjAzLjAwI0h5ZHJhdWxpYyBsaW1lIzMwLjExLjE2LjAwLjAwCi11bnNwc2M3IzMwLjExLjE2LjA0LjAwI0h5ZHJhdGVkIGxpbWUjMzAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTEuMTYuMDUuMDAjTGVhbiBsaW1lIzMwLjExLjE2LjAwLjAwCi11bnNwc2M3IzMwLjExLjE2LjA2LjAwI0dyb3V0IzMwLjExLjE2LjAwLjAwCi11bnNwc2M3IzMwLjExLjE2LjA3LjAwI1Vuc2xha2VkIGxpbWUjMzAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTEuMTcuMDAuMDAjUGxhc3RlcnMjMzAuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTEuMTcuMDEuMDAjR3lwc3VtIHBsYXN0ZXIjMzAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTIuMDAuMDAuMDAjUm9hZHMgYW5kIGxhbmRzY2FwZSMzMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMi4xNS4wMC4wMCNCaXR1bWlub3VzIGRlcml2YXRpdmVzIzMwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEyLjE1LjAxLjAwI0NvYWwgdGFyIzMwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzMwLjEyLjE1LjAyLjAwI1RhcnMjMzAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTIuMTUuMDMuMDAjQ3Jlc290ZSMzMC4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMC4xMi4xNi4wMC4wMCNBc3BoYWx0cyMzMC4xMi4wMC4wMC4wMAotdW5zcHNjNyMzMC4xMi4xNi4wMS4wMCNBc3BoYWx0IzMwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEyLjE2LjAyLjAwI1BpdGNoIzMwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEyLjE2LjAzLjAwI0dpbHNvbml0ZSMzMC4xMi4xNi4wMC4wMAotdW5zcHNjNyMzMC4xMi4xNi4wNC4wMCNDdXRiYWNrIHByb2R1Y3RzIzMwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEyLjE2LjA1LjAwI01hbmhvbGUgZnJhbWVzIHdpdGggY292ZXJzIzMwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEzLjAwLjAwLjAwI1N0cnVjdHVyYWwgYnVpbGRpbmcgcHJvZHVjdHMjMzAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTMuMTUuMDAuMDAjQmxvY2tzIzMwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEzLjE1LjAxLjAwI0NlbWVudCBibG9ja3MjMzAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTMuMTUuMDIuMDAjQ29uY3JldGUgYmxvY2tzIzMwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzMwLjEzLjE1LjAzLjAwI1N0b25lIGJsb2NrcyMzMC4xMy4xNS4wMC4wMAotdW5zcHNjNyMzMC4xMy4xNS4wNC4wMCNDZXJhbWljIGJsb2NrcyMzMC4xMy4xNS4wMC4wMAotdW5zcHNjNyMzMC4xMy4xNi4wMC4wMCNCcmlja3MjMzAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTMuMTYuMDEuMDAjQ2VtZW50IGJyaWNrcyMzMC4xMy4xNi4wMC4wMAotdW5zcHNjNyMzMC4xMy4xNi4wMi4wMCNDZXJhbWljIGJyaWNrcyMzMC4xMy4xNi4wMC4wMAotdW5zcHNjNyMzMC4xMy4xNi4wMy4wMCNDb25jcmV0ZSBicmlja3MjMzAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTMuMTYuMDQuMDAjU3RvbmUgYnJpY2tzIzMwLjEzLjE2LjAwLjAwCi11bnNwc2M3IzMwLjEzLjE3LjAwLjAwI1RpbGVzIGFuZCBmbGFnc3RvbmVzIzMwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzMwLjEzLjE3LjAxLjAwI0NlbWVudCB0aWxlcyBvciBmbGFnc3RvbmVzIzMwLjEzLjE3LjAwLjAwCi11bnNwc2M3IzMwLjEzLjE3LjAyLjAwI1N0b25lIHRpbGVzIG9yIGZsYWdzdG9uZXMjMzAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTMuMTcuMDMuMDAjQ29uY3JldGUgdGlsZXMgb3IgZmxhZ3N0b25lcyMzMC4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMC4xMy4xNy4wNC4wMCNDZXJhbWljIHRpbGVzIG9yIGZsYWdzdG9uZXMjMzAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTMuMTcuMDUuMDAjSGVhZCBzdG9uZXMjMzAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTQuMDAuMDAuMDAjSW5zdWxhdGlvbiMzMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNC4xNS4wMC4wMCNUaGVybWFsIGluc3VsYXRpb24jMzAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTQuMTUuMDEuMDAjV2VhdGhlciBzdHJpcHBpbmcjMzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTQuMTUuMDIuMDAjSW5zdWxhdGlvbiBibGFua2V0cyMzMC4xNC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNC4xNS4wMy4wMCNGb2FtIGluc3VsYXRpb24jMzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTQuMTUuMDQuMDAjSW5zdWxhdGlvbiBiYXR0cyMzMC4xNC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNC4xNS4wNS4wMCNUaGVybWFsIGluc3VsYXRpb24gc2xlZXZpbmcjMzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTQuMTUuMDYuMDAjTG9vc2UgZmlsbCBpbnN1bGF0aW9uIzMwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE0LjE1LjA3LjAwI1JpZ2lkIGJvYXJkIGluc3VsYXRpb24jMzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTQuMTUuMDguMDAjRmliZXIgaW5zdWxhdGlvbiMzMC4xNC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNC4xNS4wOS4wMCNSZWZyYWN0b3JpZXMjMzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTQuMTUuMTAuMDAjRG9vciBzd2VlcCMzMC4xNC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNC4xNS4xMS4wMCNXaW5kb3cgZmlsbSMzMC4xNC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNC4xNi4wMC4wMCNTcGVjaWFsdHkgaW5zdWxhdGlvbiMzMC4xNC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNC4xNi4wMS4wMCNBY291c3RpY2FsIGluc3VsYXRpb24jMzAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTQuMTYuMDIuMDAjTm9uIHRoZXJtYWwgaW5zdWxhdGlvbiBzbGVldmluZyMzMC4xNC4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNC4xNi4wMy4wMCNIZWF0IFNoaWVsZHMjMzAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMDAuMDAuMDAjRXh0ZXJpb3IgZmluaXNoaW5nIG1hdGVyaWFscyMzMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNS4wMC4wMCNSb29maW5nIG1hdGVyaWFscyMzMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNS4wMS4wMCNSb2xsIHJvb2ZpbmcjMzAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTUuMDIuMDAjUm9vZiB2YWxsZXlzIzMwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE1LjAzLjAwI1Jvb2ZpbmcgZmFicmljcyMzMC4xNS4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNS4wNC4wMCNSb29maW5nIGZlbHRzIzMwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE1LjA1LjAwI1Jvb2ZpbmcgbWVtYnJhbmVzIzMwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE1LjA2LjAwI1Jvb2ZpbmcgdGlsZXMjMzAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTUuMDcuMDAjU2hha2VzIzMwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE1LjA4LjAwI1NoaW5nbGVzIzMwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE1LjA5LjAwI1RydXNzZXMjMzAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTUuMTAuMDAjU2xhdGUgcm9vZmluZyMzMC4xNS4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNi4wMC4wMCNSb29maW5nIGFjY2Vzc29yaWVzIzMwLjE1LjAwLjAwLjAwCi11bnNwc2M3IzMwLjE1LjE2LjAxLjAwI1Jvb2YgZmFzY2lhcyMzMC4xNS4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNi4wMi4wMCNGbGFzaGluZ3MjMzAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTYuMDMuMDAjR3JhdmVsIHN0b3BzIzMwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE2LjA0LjAwI1Jvb2ZpbmcgYnJ1c2hlcyMzMC4xNS4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNi4wNS4wMCNSb29maW5nIGRyYWlucyMzMC4xNS4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNi4wNi4wMCNSb29maW5nIG1vcHMjMzAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTYuMDcuMDAjUm9vZmluZyB2ZW50cyMzMC4xNS4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNi4wOC4wMCNTb2ZmaXRzIzMwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE2LjA5LjAwI1Jvb2YgY3VyYnMjMzAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTYuMTAuMDAjUm9vZiByaXBwZXJzIzMwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE3LjAwLjAwI1JhaW4gZ3V0dGVycyBhbmQgYWNjZXNzb3JpZXMjMzAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTcuMDEuMDAjRG93bnNwb3V0cyMzMC4xNS4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNy4wMi4wMCNEcmlwIGNhcHMjMzAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTcuMDMuMDAjR3V0dGVycyMzMC4xNS4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNS4xNy4wNC4wMCNTcGxhc2hibG9ja3MjMzAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTguMDAuMDAjU2lkaW5nIGFuZCBleHRlcmlvciB3YWxsIG1hdGVyaWFscyMzMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNS4xOC4wMS4wMCNTaHV0dGVycyMzMC4xNS4xOC4wMC4wMAotdW5zcHNjNyMzMC4xNS4xOC4wMi4wMCNTaWRpbmcjMzAuMTUuMTguMDAuMDAKLXVuc3BzYzcjMzAuMTUuMTguMDMuMDAjU2lkaW5nIGJ1dHQgam9pbnRzIzMwLjE1LjE4LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE4LjA0LjAwI1NpZGluZyBjb3JuZXJzIzMwLjE1LjE4LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE4LjA1LjAwI1N0dWNjbyMzMC4xNS4xOC4wMC4wMAotdW5zcHNjNyMzMC4xNS4xOC4wNi4wMCNHbGFzcyBjdXJ0YWlud2FsbGluZyMzMC4xNS4xOC4wMC4wMAotdW5zcHNjNyMzMC4xNS4xOS4wMC4wMCNGaW5pc2hpbmcgbWF0ZXJpYWxzIGFuZCBwcm9kdWN0cyMzMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNS4xOS4wMS4wMCNBd25pbmdzIzMwLjE1LjE5LjAwLjAwCi11bnNwc2M3IzMwLjE1LjE5LjAyLjAwI0V4dGVyaW9yIHRyaW0gbWF0ZXJpYWxzIzMwLjE1LjE5LjAwLjAwCi11bnNwc2M3IzMwLjE1LjIwLjAwLjAwI0ZlbmNpbmcjMzAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMjAuMDEuMDAjTWV0YWwgZmVuY2luZyMzMC4xNS4yMC4wMC4wMAotdW5zcHNjNyMzMC4xNS4yMC4wMi4wMCNXb29kIGZlbmNpbmcjMzAuMTUuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMTUuMjEuMDAuMDAjU3VyZmFjZSMzMC4xNS4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNS4yMS4wMS4wMCNTaG90IHN0ZWVsIzMwLjE1LjIxLjAwLjAwCi11bnNwc2M3IzMwLjE2LjAwLjAwLjAwI0ludGVyaW9yIGZpbmlzaGluZyBtYXRlcmlhbHMjMzAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTUuMDAuMDAjV2FsbCBmaW5pc2hpbmcgbWF0ZXJpYWxzIzMwLjE2LjAwLjAwLjAwCi11bnNwc2M3IzMwLjE2LjE1LjAxLjAwI1dhbGxib2FyZCMzMC4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNS4wMi4wMCNXYWxscGFwZXJzIzMwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE1LjAzLjAwI0RyeXdhbGwjMzAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTUuMDQuMDAjQ29ybmVyIGd1YXJkcyMzMC4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNS4wNS4wMCNQYW5lbHMgb3IgcGFuZWxsaW5nIzMwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE1LjA2LjAwI1BsYXN0ZXIjMzAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTUuMDcuMDAjRHJ5d2FsbCBqb2ludCBjb21wb3VuZHMjMzAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTUuMDguMDAjV2FsbHBhcGVyIHJvbGxlciMzMC4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNi4wMC4wMCNDZWlsaW5nIG1hdGVyaWFscyMzMC4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNi4wMS4wMCNBY291c3RpYyBjZWlsaW5nIHRpbGVzIzMwLjE2LjE2LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE2LjAyLjAwI0NlaWxpbmcgcGFuZWxzIzMwLjE2LjE2LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE2LjAzLjAwI0NvZmZlcnMjMzAuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTYuMDQuMDAjU3VzcGVuZGVkIGNlaWxpbmcgc3lzdGVtcyMzMC4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNy4wMC4wMCNGbG9vcmluZyMzMC4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNy4wMS4wMCNDYXJwZXRpbmcjMzAuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTcuMDIuMDAjV29vZCBmbG9vcmluZyMzMC4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNy4wMy4wMCNMaW5vbGV1bSMzMC4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNy4wNS4wMCNSdWJiZXIgZmxvb3JpbmcjMzAuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTcuMDYuMDAjU3RvbmUgb3IgdGlsZSBmbG9vcmluZyMzMC4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNy4wNy4wMCNWaW55bCBmbG9vcmluZyMzMC4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNy4wOC4wMCNLbm90dGVkIGNhcnBldGluZyMzMC4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNy4wOS4wMCNUdWZ0ZWQgY2FycGV0aW5nIzMwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE3LjEwLjAwI0xhbWluYXRlIGZsb29yaW5nIzMwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE3LjExLjAwI091dGRvb3IgY2FycGV0aW5nIzMwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE3LjEyLjAwI0Zsb29yaW5nIGpvaXN0cyMzMC4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNy4xMy4wMCNDYXJwZXQgcGFkcyMzMC4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNi4xNy4xNC4wMCNDb3JrIGZsb29yaW5nIzMwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE3LjE1LjAwI0R1Y2tib2FyZHMjMzAuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTcuMTYuMDAjVGlsZSBzcGFjZXJzIzMwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE4LjAwLjAwI0NhYmluZXRyeSMzMC4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNi4xOC4wMS4wMCNDYWJpbmV0cyMzMC4xNi4xOC4wMC4wMAotdW5zcHNjNyMzMC4xNi4xOC4wMi4wMCNDb3VudGVydG9wcyMzMC4xNi4xOC4wMC4wMAotdW5zcHNjNyMzMC4xNi4xOS4wMC4wMCNNb2xkaW5nIGFuZCBtaWxsd29yayMzMC4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNi4xOS4wMS4wMCNMb3V2ZXJzIzMwLjE2LjE5LjAwLjAwCi11bnNwc2M3IzMwLjE2LjE5LjAyLjAwI0NvbHVtbnMjMzAuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTkuMDMuMDAjV2FpbnNjb3RpbmcjMzAuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTkuMDQuMDAjQ29ybmljZXMjMzAuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTkuMDUuMDAjRG9vciBzdXJyb3VuZHMjMzAuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTkuMDYuMDAjTW9sZGluZyMzMC4xNi4xOS4wMC4wMAotdW5zcHNjNyMzMC4xNi4xOS4wNy4wMCNTdGFpcnMjMzAuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTYuMTkuMDguMDAjU3RhaXIgcGFydHMjMzAuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMDAuMDAuMDAjRG9vcnMgYW5kIHdpbmRvd3MgYW5kIGdsYXNzIzMwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjE3LjE1LjAwLjAwI0Rvb3JzIzMwLjE3LjAwLjAwLjAwCi11bnNwc2M3IzMwLjE3LjE1LjAxLjAwI0dsYXNzIGRvb3JzIzMwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE1LjAyLjAwI1NjcmVlbiBkb29ycyMzMC4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNS4wMy4wMCNSb2xsaW5nIGRvb3JzIzMwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE1LjA0LjAwI1dvb2RlbiBkb29ycyMzMC4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNS4wNS4wMCNNZXRhbCBkb29ycyMzMC4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNS4wNi4wMCNTdG9ybSBkb29ycyMzMC4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNS4wNy4wMCNEb29yIGZyYW1lcyMzMC4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNS4wOC4wMCNQb2NrZXQgZG9vcnMjMzAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTUuMDkuMDAjUmV2b2x2aW5nIGRvb3JzIzMwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE1LjEwLjAwI0F1dG9tYXRpYyBkb29ycyMzMC4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNS4xMS4wMCNTd2luZyBkb29yIzMwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE1LjEyLjAwI0Rvb3Igb3BlbmVycyMzMC4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNi4wMC4wMCNXaW5kb3dzIzMwLjE3LjAwLjAwLjAwCi11bnNwc2M3IzMwLjE3LjE2LjA0LjAwI0RvdWJsZSBodW5nIHdpbmRvd3MjMzAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTYuMDUuMDAjU2luZ2xlIGh1bmcgd2luZG93cyMzMC4xNy4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNi4wNi4wMCNDYXNlbWVudCB3aW5kb3dzIzMwLjE3LjE2LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE2LjA3LjAwI0hvcml6b250YWwgc2xpZGVyIHdpbmRvd3MjMzAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTYuMDguMDAjVGlsdCBvciB0cmFuc29tIHdpbmRvd3MjMzAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTYuMDkuMDAjRml4ZWQgd2luZG93cyMzMC4xNy4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNi4xMC4wMCNCYXkgd2luZG93cyMzMC4xNy4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNi4xMS4wMCNCb3cgd2luZG93cyMzMC4xNy4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNi4xMi4wMCNQcm9qZWN0ZWQgd2luZG93cyMzMC4xNy4xNi4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNi4xMy4wMCNXaW5kb3cgd2FsbHMjMzAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTYuMTQuMDAjV2luZG93IHNjcmVlbnMjMzAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTYuMTUuMDAjRnJlbmNoIHdpbmRvd3MjMzAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTcuMDAuMDAjR2xhc3MgcHJvZHVjdHMjMzAuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTcuMDEuMDAjUGF2aW5nIGJsb2NrcyMzMC4xNy4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNy4wMy4wMCNCZXZlbGVkIGdsYXNzIzMwLjE3LjE3LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE3LjA0LjAwI0xlYWRlZCBnbGFzcyMzMC4xNy4xNy4wMC4wMAotdW5zcHNjNyMzMC4xNy4xNy4wNS4wMCNMYW1pbmF0ZWQgZ2xhc3MjMzAuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTcuMDYuMDAjVGVtcGVyZWQgZ2xhc3MjMzAuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTcuMDcuMDAjU2FmZXR5IGdsYXNzIzMwLjE3LjE3LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE3LjA4LjAwI0Zsb2F0IGdsYXNzIzMwLjE3LjE3LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE3LjA5LjAwI1dpcmVkIGdsYXNzIzMwLjE3LjE3LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE4LjAwLjAwI1NreWxpZ2h0cyMzMC4xNy4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNy4xOC4wMS4wMCNGaXhlZCBza3lsaWdodHMjMzAuMTcuMTguMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTguMDIuMDAjVmVudGVkIHNreWxpZ2h0cyMzMC4xNy4xOC4wMC4wMAotdW5zcHNjNyMzMC4xNy4xOC4wMy4wMCNUdWJlIHNreWxpZ2h0cyMzMC4xNy4xOC4wMC4wMAotdW5zcHNjNyMzMC4xNy4xOS4wMC4wMCNXaW5kb3cgZnJhbWVzIzMwLjE3LjAwLjAwLjAwCi11bnNwc2M3IzMwLjE3LjE5LjAxLjAwI0RvdWJsZSBodW5nIHdpbmRvdyBmcmFtZXMjMzAuMTcuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTkuMDIuMDAjU2luZ2xlIGh1bmcgd2luZG93IGZyYW1lcyMzMC4xNy4xOS4wMC4wMAotdW5zcHNjNyMzMC4xNy4xOS4wMy4wMCNDYXNlbWVudCB3aW5kb3cgZnJhbWVzIzMwLjE3LjE5LjAwLjAwCi11bnNwc2M3IzMwLjE3LjE5LjA0LjAwI0hvcml6b250YWwgc2xpZGVyIHdpbmRvdyBmcmFtZXMjMzAuMTcuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTkuMDUuMDAjVGlsdCBvciB0cmFuc29tIHdpbmRvdyBmcmFtZXMjMzAuMTcuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMTkuMDYuMDAjRml4ZWQgd2luZG93IGZyYW1lcyMzMC4xNy4xOS4wMC4wMAotdW5zcHNjNyMzMC4xNy4yMC4wMC4wMCNHYXRlcyMzMC4xNy4wMC4wMC4wMAotdW5zcHNjNyMzMC4xNy4yMC4wMS4wMCNTaW5nbGUgYmFyIGdhdGUjMzAuMTcuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMTcuMjAuMDIuMDAjRG91YmxlIGJhciBnYXRlIzMwLjE3LjIwLjAwLjAwCi11bnNwc2M3IzMwLjE4LjAwLjAwLjAwI1BsdW1iaW5nIGZpeHR1cmVzIzMwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjE4LjE1LjAwLjAwI1Nhbml0YXJ5IHdhcmUjMzAuMTguMDAuMDAuMDAKLXVuc3BzYzcjMzAuMTguMTUuMDEuMDAjQmF0aHR1YnMjMzAuMTguMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTguMTUuMDIuMDAjQmlkZXRzIzMwLjE4LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE4LjE1LjAzLjAwI1Nob3dlcnMjMzAuMTguMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTguMTUuMDQuMDAjU2lua3MjMzAuMTguMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTguMTUuMDUuMDAjVG9pbGV0cyMzMC4xOC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xOC4xNS4wNi4wMCNVcmluYWxzIzMwLjE4LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE4LjE1LjA3LjAwI0JhdGh0dWIgb3Igc2hvd2VyIGVuY2xvc3VyZXMjMzAuMTguMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTguMTUuMDguMDAjUmVzdHJvb20gcGFydGl0aW9ucyMzMC4xOC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xOC4xNS4wOS4wMCNTb2FwIGRpc2hlcyMzMC4xOC4xNS4wMC4wMAotdW5zcHNjNyMzMC4xOC4xNS4xMC4wMCNOYXBraW4gcmluZ3MjMzAuMTguMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTkuMDAuMDAuMDAjQ29uc3RydWN0aW9uIGFuZCBtYWludGVuYW5jZSBzdXBwb3J0IGVxdWlwbWVudCMzMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4xOS4xNS4wMC4wMCNMYWRkZXJzIGFuZCBzY2FmZm9sZGluZyMzMC4xOS4wMC4wMC4wMAotdW5zcHNjNyMzMC4xOS4xNS4wMS4wMCNMYWRkZXJzIzMwLjE5LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE5LjE1LjAyLjAwI1NjYWZmb2xkaW5nIzMwLjE5LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE5LjE1LjAzLjAwI1N0ZXAgc3Rvb2wjMzAuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMTkuMTUuMDQuMDAjU3RlcCBzdG9vbCMzMC4xOS4xNS4wMC4wMAotdW5zcHNjNyMzMC4xOS4xNS4wNS4wMCNTdGVwIHN0b29sIzMwLjE5LjE1LjAwLjAwCi11bnNwc2M3IzMwLjE5LjE2LjAwLjAwI0xhZGRlcnMgYW5kIHNjYWZmb2xkaW5nIGFjY2Vzc29yaWVzIzMwLjE5LjAwLjAwLjAwCi11bnNwc2M3IzMwLjE5LjE2LjAxLjAwI0hhbmRyYWlscyMzMC4xOS4xNi4wMC4wMAotdW5zcHNjNyMzMC4xOS4xNi4wMi4wMCNTY2FmZm9sZGluZyBzdGFiaWxpemVycyMzMC4xOS4xNi4wMC4wMAotdW5zcHNjNyMzMC4xOS4xNi4wMy4wMCNTY2FmZm9sZGluZyBmbG9vcmluZyMzMC4xOS4xNi4wMC4wMAotdW5zcHNjNyMzMC4yMC4wMC4wMC4wMCNQcmVmYWJyaWNhdGVkIHN0cnVjdHVyZXMjMzAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTUuMDAuMDAjUHJlZmFicmljYXRlZCBmYXJtIHN0cnVjdHVyZXMjMzAuMjAuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTUuMDEuMDAjU2lsb3MjMzAuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTUuMDIuMDAjR3JlZW5ob3VzZXMjMzAuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTYuMDAuMDAjUHJlZmFicmljYXRlZCByZXNpZGVudGlhbCBzdHJ1Y3R1cmVzIzMwLjIwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIwLjE2LjAxLjAwI0hvdXNlcyMzMC4yMC4xNi4wMC4wMAotdW5zcHNjNyMzMC4yMC4xNi4wMi4wMCNNb2JpbGUgaG9tZXMjMzAuMjAuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTYuMDMuMDAjQ2FiaW5zIzMwLjIwLjE2LjAwLjAwCi11bnNwc2M3IzMwLjIwLjE2LjA0LjAwI0dhcmFnZXMjMzAuMjAuMTYuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTYuMDUuMDAjR2F6ZWJvIzMwLjIwLjE2LjAwLjAwCi11bnNwc2M3IzMwLjIwLjE3LjAwLjAwI1ByZWZhYnJpY2F0ZWQgY29tbWVyY2lhbCBhbmQgaW5kdXN0cmlhbCBzdHJ1Y3R1cmVzIzMwLjIwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIwLjE3LjAxLjAwI0luIHBsYW50IG9mZmljZXMjMzAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTcuMDIuMDAjU3ByYXkgYm9vdGhzIzMwLjIwLjE3LjAwLjAwCi11bnNwc2M3IzMwLjIwLjE3LjAzLjAwI1N0b3JhZ2Ugc2hlZHMjMzAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTcuMDQuMDAjQ2xlYW4gcm9vbXMjMzAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTcuMDUuMDAjR3VhcmRob3VzZXMjMzAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTcuMDYuMDAjUG9ydGFibGUgdG9pbGV0dGVzIzMwLjIwLjE3LjAwLjAwCi11bnNwc2M3IzMwLjIwLjE3LjA3LjAwI1dhcmVob3VzZXMjMzAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTcuMDguMDAjQXVkaXRvcml1bSMzMC4yMC4xNy4wMC4wMAotdW5zcHNjNyMzMC4yMC4xNy4wOS4wMCNDb25zZXJ2YXRvcnkjMzAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTcuMTAuMDAjT2ZmaWNlIGtpdGNoZW5zIzMwLjIwLjE3LjAwLjAwCi11bnNwc2M3IzMwLjIwLjE4LjAwLjAwI1ByZWZhYnJpY2F0ZWQgZW1lcmdlbmN5IHJlbGllZiBzdHJ1Y3R1cmVzIzMwLjIwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIwLjE4LjAxLjAwI1NoZWx0ZXJzIzMwLjIwLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIwLjE4LjAyLjAwI0VtZXJnZW5jeSB0ZW50IGhhbGxzIzMwLjIwLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIwLjE4LjAzLjAwI0NvbnRhaW5lciB1bml0cyMzMC4yMC4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMC4xOS4wMC4wMCNQcmVmYWJyaWNhdGVkIG1lZGljYWwgc3RydWN0dXJlcyMzMC4yMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4yMC4xOS4wMS4wMCNNZWRpY2FsIHVuaXRzIzMwLjIwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIwLjE5LjAyLjAwI0xhYm9yYXRvcnkgdW5pdHMjMzAuMjAuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMjAuMTkuMDMuMDAjRGVudGFsIHVuaXRzIzMwLjIwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIwLjE5LjA0LjAwI1N1cmdpY2FsIHVuaXRzIzMwLjIwLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjAwLjAwLjAwI0VsZWN0cmljYWwgZXF1aXBtZW50IGFuZCBjb21wb25lbnRzIGFuZCBzdXBwbGllcyMzMC4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNS4wMC4wMCNQb3dlciBjb252ZXJzaW9uIzMwLjIxLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIxLjE1LjAxLjAwI1RyYW5zZm9ybWVycyMzMC4yMS4xNS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNS4wMi4wMCNQb3dlciBzdXBwbHkgdW5pdHMjMzAuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTUuMDMuMDAjUG93ZXIgZGlzdHJpYnV0aW9uIHVuaXRzIChQRFVzKSMzMC4yMS4xNS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNS4wNC4wMCNQb3dlciBhZGFwdGVycyBvciBpbnZlcnRlcnMjMzAuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTUuMDUuMDAjRnJlcXVlbmN5IGNvbnZlcnRlcnMjMzAuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTUuMDYuMDAjU2lnbmFsIGNvbnZlcnRlcnMjMzAuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTUuMDcuMDAjVHJhbnNkdWNlcnMjMzAuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTUuMDguMDAjUmVndWxhdG9ycyMzMC4yMS4xNS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNS4wOS4wMCNNYWduZXRpYyBjb2lscyMzMC4yMS4xNS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNS4xMC4wMCNVbmludGVycnVwdGlibGUgcG93ZXIgc3VwcGxpZXMjMzAuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTUuMTEuMDAjU29sZW5vaWRzIzMwLjIxLjE1LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE1LjEyLjAwI0Nob2tlcyMzMC4yMS4xNS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNS4xMy4wMCNFbGVjdHJpYyByb3RhcnkgY29udmVydGVycyMzMC4yMS4xNS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNS4xNC4wMCNDYXBhY2l0b3IgYmFua3MjMzAuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTUuMTUuMDAjUmVhY3RvcnMjMzAuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTYuMDAuMDAjQ29uZHVpdHMgYW5kIHJhY2V3YXlzIzMwLjIxLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIxLjE2LjAxLjAwI0NhYmxlIHRyYXlzIzMwLjIxLjE2LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE2LjAyLjAwI0VsZWN0cmljYWwgY29uZHVpdCMzMC4yMS4xNi4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNi4wMy4wMCNFbGVjdHJpY2FsIHJhY2V3YXlzIzMwLjIxLjE2LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE2LjA0LjAwI1dpcmluZyBkdWN0cyMzMC4yMS4xNi4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNi4wNS4wMCNXaXJld2F5cyMzMC4yMS4xNi4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNi4wNi4wMCNXaXJpbmcgdHJvdWdocyMzMC4yMS4xNi4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNy4wMC4wMCNFbGVjdHJpY2FsIGJveGVzIGFuZCBlbmNsb3N1cmVzIGFuZCBmaXR0aW5ncyMzMC4yMS4wMC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNy4wMS4wMCNFbGVjdHJpY2FsIGJveGVzIzMwLjIxLjE3LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE3LjAyLjAwI0VsZWN0cmljYWwgYm94IGNvdmVycyMzMC4yMS4xNy4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNy4wMy4wMCNXZWF0aGVycHJvb2YgYm94ZXMjMzAuMjEuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTcuMDQuMDAjU3dpdGNoIGJveGVzIzMwLjIxLjE3LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE3LjA1LjAwI0Zsb29yIGJveGVzIzMwLjIxLjE3LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE3LjA2LjAwI091dGxldCBib3hlcyMzMC4yMS4xNy4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNy4wNy4wMCNTcGVjaWFsdHkgZWxlY3RyaWNhbCBib3hlcyMzMC4yMS4xNy4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNy4wOC4wMCNVdGlsaXR5IGJveGVzIzMwLjIxLjE3LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE3LjA5LjAwI0VsZWN0cmljYWwgZml0dGluZ3MjMzAuMjEuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTcuMTAuMDAjRWxlY3RyaWNhbCBidXNoaW5ncyMzMC4yMS4xNy4wMC4wMAotdW5zcHNjNyMzMC4yMS4xNy4xMS4wMCNDZWlsaW5nIGZsYW5nZXMjMzAuMjEuMTcuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTguMDAuMDAjTHVncyBjb25uZWN0b3JzIGFuZCB0ZXJtaW5hbHMjMzAuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTguMDEuMDAjRWxlY3RyaWNhbCB0ZXJtaW5hbHMjMzAuMjEuMTguMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTguMDIuMDAjRWxlY3RyaWNhbCBwbHVncyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4wMy4wMCNUd2lzdCBsb2NrIHBsdWdzIzMwLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE4LjA0LjAwI0VsZWN0cmljYWwgc2xlZXZlcyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4wNS4wMCNDYWJsZSBvciB3aXJlIGx1Z3MjMzAuMjEuMTguMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTguMDYuMDAjRWxlY3RyaWNhbCByZWNlcHRhY2xlcyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4wNy4wMCNUZXJtaW5hbCBzdHJpcHMjMzAuMjEuMTguMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTguMDguMDAjTWVjaGFuaWNhbCBjb25uZWN0b3JzIzMwLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE4LjA5LjAwI1Jpbmcgb3IgZmxhZyB0ZXJtaW5hbHMjMzAuMjEuMTguMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTguMTAuMDAjV2lyZSBjb25uZWN0b3JzIzMwLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE4LjExLjAwI1Rlcm1pbmFsIGJsb2NrcyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4xMi4wMCNGdXNlIGJsb2NrcyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4xMy4wMCNCYWNrc2hlbGwgY29ubmVjdG9ycyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4xNC4wMCNDaXJjdWxhciBjb25uZWN0b3JzIzMwLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE4LjE1LjAwI0NvYXhpYWwgY29ubmVjdG9ycyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4xNi4wMCNGbGF0IGNvbm5lY3RvcnMjMzAuMjEuMTguMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTguMTcuMDAjRWxlY3Ryb25pYyBjb25uZWN0b3IgY2FwcyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4xOC4wMCNSYWRpbyBmcmVxdWVuY3kgKFJGKSBjb25uZWN0b3JzIzMwLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE4LjE5LjAwI0VsZWN0cmljYWwgbWV0YWxsaWMgdHViaW5nIChFTVQpIGNvbm5lY3RvcnMjMzAuMjEuMTguMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTguMjAuMDAjQ29tcHJlc3Npb24gY29ubmVjdG9ycyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4yMS4wMCNTZXQgc2NyZXcgY291cGxpbmdzIzMwLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE4LjIyLjAwI0ZsZXggY29ubmVjdG9ycyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4yMy4wMCNMaXF1aWQgdGlnaHQgY29ubmVjdG9ycyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4yNC4wMCNDb25uZWN0b3IgYXNzZW1ibGllcyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4yNS4wMCNNZWNoYW5pY2FsIGNvdXBsaW5ncyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4yNi4wMCNTcHJpbmcgamF3IGNvbm5lY3RvcnMjMzAuMjEuMTguMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTguMjcuMDAjVGVybWluYWwgYmxvY2sgY292ZXJzIzMwLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE4LjI4LjAwI1Rlcm1pbmFsIGJsb2NrIHNlcGFyYXRvciMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4yOS4wMCNKdW1wZXIgYmFyIzMwLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE4LjMwLjAwI1dpcmluZyB0YXBzIzMwLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE4LjMxLjAwI0VsZWN0cmljYWwgdGFwcyMzMC4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOC4zMi4wMCNGaWJlciBvcHRpYyBjb25uZWN0b3IjMzAuMjEuMTguMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTkuMDAuMDAjU3dpdGNoZXMgYW5kIGNvbnRyb2xzIGFuZCByZWxheXMjMzAuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTkuMDEuMDAjU2FmZXR5IHN3aXRjaGVzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjAyLjAwI0RpbW1lciBzd2l0Y2hlcyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4wMy4wMCNEcnVtIHN3aXRjaGVzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjA0LjAwI1RpbWUgc3dpdGNoZXMjMzAuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTkuMDUuMDAjU25hcCBzd2l0Y2hlcyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4wNi4wMCNNZWNoYW5pY2FsIHN3aXRjaGVzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjA3LjAwI1ByZXNzdXJlIHN3aXRjaGVzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjA4LjAwI1RvZ2dsZSBzd2l0Y2hlcyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4wOS4wMCNTbGlkZSBzd2l0Y2hlcyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4xMC4wMCNMaW1pdCBzd2l0Y2hlcyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4xMS4wMCNDb250cm9sbGVyIHN3aXRjaGVzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjEyLjAwI1ZhcmlhYmxlIHN3aXRjaGVzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjEzLjAwI1B1c2ggYnV0dG9uIHN3aXRjaGVzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjE0LjAwI1JvdGFyeSBzd2l0Y2hlcyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4xNS4wMCNQb3dlciByZWxheXMjMzAuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTkuMTYuMDAjR2VuZXJhbCBwdXJwb3NlIHJlbGF5cyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4xNy4wMCNTb2NrZXQgcmVsYXlzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjE4LjAwI0FsdGVybmF0aW5nIHZvbHRhZ2UgcmVsYXlzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjE5LjAwI01lcmN1cnkgcmVsYXlzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjIwLjAwI1RpbWUgcmVsYXlzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjIxLjAwI092ZXJsb2FkIHJlbGF5cyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4yMi4wMCNNb3RvciBzdGFydGVyIGNvbnRyb2xzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjIzLjAwI0VsZWN0cmljYWwgY29udGFjdHMjMzAuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTkuMjQuMDAjVGltZXIgY29udHJvbHMjMzAuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTkuMjUuMDAjUGhvdG9jb250cm9scyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4yNi4wMCNOb24gZnVzaWJsZSBzd2l0Y2hlcyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4yNy4wMCNSYWRpbyBmcmVxdWVuY3kgKFJGKSBzd2l0Y2hlcyMzMC4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMC4yMS4xOS4yOC4wMCNQcm94aW1pdHkgc3dpdGNoZXMjMzAuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTkuMjkuMDAjRW5jb2RlcnMjMzAuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMTkuMzAuMDAjUGhvdG9lbGVjdHJpYyBzZW5zb3JzIzMwLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMwLjIxLjE5LjMxLjAwI0NvbnRhY3RvcnMjMzAuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjAuMDAuMDAjQ2lyY3VpdCBwcm90ZWN0aW9uIGRldmljZXMgYW5kIGFjY2Vzc29yaWVzIzMwLjIxLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIxLjIwLjAxLjAwI0NpcmN1aXQgYnJlYWtlcnMjMzAuMjEuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjAuMDIuMDAjTWFnbmV0aWMgY2lyY3VpdCBicmVha2VycyMzMC4yMS4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMC4wMy4wMCNNaW5pYXR1cmUgY2lyY3VpdCBicmVha2VycyMzMC4yMS4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMC4wNC4wMCNUaW1lIGRlbGF5IGZ1c2VzIzMwLjIxLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIxLjIwLjA1LjAwI1BsdWcgZnVzZXMjMzAuMjEuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjAuMDYuMDAjQ2FydHJpZGdlIGZ1c2VzIzMwLjIxLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIxLjIwLjA3LjAwI0dsYXNzIGJvZHkgZnVzZXMjMzAuMjEuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjAuMDguMDAjQ2xhc3MgdHlwZSBmdXNlcyMzMC4yMS4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMC4wOS4wMCNNaWRnZXQgZnVzZXMjMzAuMjEuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjAuMTAuMDAjU3VyZ2Ugc3VwcHJlc3NlcnMjMzAuMjEuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjAuMTEuMDAjQ2VyYW1pYyBmdXNlcyMzMC4yMS4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMC4xMi4wMCNCbGFkZSBmdXNlcyMzMC4yMS4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4wMC4wMCNFbGVjdHJpY2FsIGhhcmR3YXJlIGFuZCBzdXBwbGllcyMzMC4yMS4wMC4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4wMS4wMCNFbGVjdHJpY2FsIGhhbmdlcnMjMzAuMjEuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjEuMDIuMDAjQ2FibGUgY2xpcHMjMzAuMjEuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjEuMDMuMDAjQ2FibGUgdGllcyMzMC4yMS4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4wNC4wMCNXYWxscGxhdGVzIzMwLjIxLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIxLjIxLjA1LjAwI1N3aXRjaHBsYXRlcyMzMC4yMS4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4wNi4wMCNDYWJsZSBjbGFtcHMjMzAuMjEuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjEuMDcuMDAjVHJhbnNmb3JtZXIgYnVzaGluZ3MjMzAuMjEuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjEuMDguMDAjSGFybmVzcyBib2FyZCBuYWlscyMzMC4yMS4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4wOS4wMCNEaW4gUmFpbCMzMC4yMS4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4xMC4wMCNIYW5kbGUgdGllIzMwLjIxLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIxLjIxLjExLjAwI0VsZWN0cmljYWwgcmVjZXB0YWNsZSBtdWx0aXBsaWVycyMzMC4yMS4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4xMi4wMCNUdWJpbmdzIzMwLjIxLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIxLjIxLjEzLjAwI0VuZCBjYXBzIzMwLjIxLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIxLjIxLjE0LjAwI1NwaXJhbCB3cmFwcGluZyMzMC4yMS4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4xNS4wMCNHcm9tbWV0IGVkZ2luZyMzMC4yMS4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4xNi4wMCNDb3JydWdhdGVkIGxvb20gdHViZXMjMzAuMjEuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMjEuMjEuMTcuMDAjRXhwYW5kYWJsZSBicmFpZGVkIHNsZWV2ZSMzMC4yMS4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMS4yMS4xOC4wMCNDYWJsZSB0aWUgbW91bnRzIzMwLjIxLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIyLjAwLjAwLjAwI1Blcm1hbmVudCBzdHJ1Y3R1cmVzIzMwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjEwLjAwLjAwI0NvbW1lcmNpYWwgYW5kIGVudGVydGFpbm1lbnQgc3RydWN0dXJlcyMzMC4yMi4wMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4xMC4wMS4wMCNTaG9wcGluZyBtYWxscyMzMC4yMi4xMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4xMC4wMi4wMCNQYXJraW5nIHN0cnVjdHVyZXMjMzAuMjIuMTAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMTAuMDMuMDAjQ2FmZXRlcmlhIzMwLjIyLjEwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjEwLjA0LjAwI1Nob3AgYnVpbGRpbmdzIzMwLjIyLjEwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjEwLjA1LjAwI1Nob3BwaW5nIGNlbnRlciMzMC4yMi4xMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4xMC4wNi4wMCNDYW50ZWVuIzMwLjIyLjEwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjEwLjA3LjAwI1RoZWF0ZXIjMzAuMjIuMTAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMTAuMDguMDAjQXVkaXRvcml1bSMzMC4yMi4xMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4xMC4wOS4wMCNNYXJrZXQjMzAuMjIuMTAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMTAuMTAuMDAjQ2hpbGRyZW5zIHBsYXkgYXJlYSMzMC4yMi4xMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4xMC4xMS4wMCNab28jMzAuMjIuMTAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMTAuMTIuMDAjR2FyZGVucyMzMC4yMi4xMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4xMC4xMy4wMCNQYXJrcyMzMC4yMi4xMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4xMC4xNC4wMCNXYXRlcnNpZGUgbGVpc3VyZSBmYWNpbGl0aWVzIzMwLjIyLjEwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjAwLjAwI1RyYW5zcG9ydCBzdHJ1Y3R1cmVzIzMwLjIyLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjAxLjAwI1N0ZWVsIGJyaWRnZXMjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMDIuMDAjRHJ5IGRvY2sjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMDMuMDAjQnVzIHN0YXRpb24jMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMDQuMDAjQnVzIGdhcmFnZSMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4wNS4wMCNTZXJ2aWNlIGFyZWEgYnVpbGRpbmcjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMDYuMDAjUmFpbHdheSBzdGF0aW9uIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjA3LjAwI1JhaWx3YXkgZGVwb3QjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMDguMDAjVW5kZXJncm91bmQgcmFpbHdheSBzdGF0aW9uIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjA5LjAwI1JhaWwgdGVybWluYWwgYnVpbGRpbmcjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMTAuMDAjVHJhbXdheSBkZXBvdCMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4xMS4wMCNUcmFtd2F5IHBsYXRmb3JtcyMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4xMi4wMCNBaXJwb3J0IGJ1aWxkaW5ncyMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4xMy4wMCNBaXJwb3J0IGNvbnRyb2wgdG93ZXIjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMTQuMDAjQWlyZmllbGQjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMTUuMDAjUnVud2F5IzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjE2LjAwI1F1YXkjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMTcuMDAjUGllciMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4xOC4wMCNEb2NrIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjE5LjAwI1doYXJmIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjIwLjAwI01hcmluYSMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4yMS4wMCNZYWNodCBoYXJib3IjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMjIuMDAjQnJlYWt3YXRlciMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4yMy4wMCNTZWF3YWxsIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjI0LjAwI0ZlcnJ5IHRlcm1pbmFsIGJ1aWxkaW5nIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjI1LjAwI1JvIHJvIHRlcm1pbmFsIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjI2LjAwI0xpZ2h0aG91c2UjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMjcuMDAjUm9hZCBicmlkZ2UjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMjguMDAjUmFpbHdheSBicmlkZ2UjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMjkuMDAjRm9vdGJyaWRnZSMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4zMC4wMCNSb2FkIHZpYWR1Y3QjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMzEuMDAjUmFpbHdheSB2aWFkdWN0IzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjMyLjAwI1VuZGVycGFzcyMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4zMy4wMCNPdmVycGFzcyMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC4zNC4wMCNTdWJ3YXkjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMzUuMDAjQ3VsdmVydHMjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMzYuMDAjUm9hZCB0dW5uZWwjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMzcuMDAjUmFpbHdheSB0dW5uZWwjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMzguMDAjUGVkZXN0cmlhbiB0dW5uZWwjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuMzkuMDAjQ2FuYWwgdHVubmVsIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjQwLjAwI1VuZGVyIHJpdmVyIHR1bm5lbCMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC40MS4wMCNVbmRlcnNlYSB0dW5uZWwjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuNDIuMDAjSGlnaHdheXMjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuNDMuMDAjQ3Jvc3Nyb2FkIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjQ0LjAwI1Jpbmcgcm9hZCMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC40NS4wMCNUcnVuayByb2FkIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjQ2LjAwI1NlY29uZGFyeSByb2FkIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjQ3LjAwI0FjY2VzcyByb2FkIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjQ4LjAwI1NsaXAgcm9hZCMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC40OS4wMCNEdWFsIGNhcnJpYWdld2F5IzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjUwLjAwI1NpbmdsZSBjYXJyaWFnZXdheSMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC41MS4wMCNSb2FkIGp1bmN0aW9uIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjUyLjAwI1BlZGVzdHJpYW4gd2F5cyMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC41My4wMCNQZWRlc3RyaWFuIG92ZXJwYXNzIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjU0LjAwI0Zvb3RwYXRoIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjU1LjAwI0N5Y2xlIHBhdGgjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuNTYuMDAjUGlwZWxpbmUgY2FycnlpbmcgYnJpZGdlIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjU3LjAwI1BpcGVsaW5lcyMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMC41OC4wMCNQdW1waW5nIHN0YXRpb24jMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuNTkuMDAjU2V3YWdlIHB1bXBpbmcgc3RhdGlvbnMjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuNjAuMDAjU2V3YWdlIG91dGZhbGwjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuNjEuMDAjUGFya2luZyBsb3QjMzAuMjIuMjAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjAuNjIuMDAjUGFya2luZyBzdHJ1Y3R1cmVzIzMwLjIyLjIwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIwLjYzLjAwI01vdG9yd2F5IHNlcnZpY2UgYXJlYSMzMC4yMi4yMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMS4wMC4wMCNQdWJsaWMgc3RydWN0dXJlcyMzMC4yMi4wMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMS4wMS4wMCNQb3N0IG9mZmljZSMzMC4yMi4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMS4wMi4wMCNCYW5rIzMwLjIyLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIxLjAzLjAwI1BvbGljZSBzdGF0aW9uIzMwLjIyLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIxLjA0LjAwI0NvdXJ0IGJ1aWxkaW5nIzMwLjIyLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIxLjA1LjAwI1ByaXNvbiBidWlsZGluZyMzMC4yMi4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMS4wNi4wMCNGaXJlIHN0YXRpb24jMzAuMjIuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjEuMDcuMDAjQW1idWxhbmNlIHN0YXRpb24jMzAuMjIuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjEuMDguMDAjTW91bnRhaW4gcmVzY3VlIGJ1aWxkaW5nIzMwLjIyLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIxLjA5LjAwI0xpZmVib2F0IHN0YXRpb24jMzAuMjIuMjEuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjEuMTAuMDAjQ29hc3RndWFyZCBidWlsZGluZyMzMC4yMi4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMS4xMS4wMCNSZXNjdWUgc2VydmljZSBzdGF0aW9uIzMwLjIyLjIxLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIxLjEyLjAwI0NpdmljIGNlbnRlciMzMC4yMi4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMS4xMy4wMCNDcmVtYXRvcml1bSMzMC4yMi4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMS4xNC4wMCNBcnQgZ2FsbGVyeSMzMC4yMi4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMS4xNS4wMCNQcmVoaXN0b3JpYyBtb251bWVudCMzMC4yMi4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMS4xNi4wMCNUaWNrZXQgb2ZmaWNlcyMzMC4yMi4yMS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMi4wMC4wMCNVdGlsaXRpZXMgc3RydWN0dXJlcyMzMC4yMi4wMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMi4wMS4wMCNSYWRhciBzdGF0aW9uIzMwLjIyLjIyLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIyLjAyLjAwI1N1YnN0YXRpb24jMzAuMjIuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjIuMDMuMDAjTnVjbGVhciBwb3dlciBzdGF0aW9uIzMwLjIyLjIyLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIyLjA0LjAwI1dhdGVyIHRvd2VyIzMwLjIyLjIyLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIyLjA1LjAwI1dlbGxzIzMwLjIyLjIyLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIyLjA2LjAwI01vYmlsZSB0ZWxlcGhvbmUgYmFzZSBzdGF0aW9ucyMzMC4yMi4yMi4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMi4wNy4wMCNEYW0jMzAuMjIuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjIuMDguMDAjT2lsIG9yIGdhcyBwbGF0Zm9ybXMjMzAuMjIuMjIuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjMuMDAuMDAjRWR1Y2F0aW9uYWwgYW5kIHJlc2VhcmNoIHN0cnVjdHVyZXMjMzAuMjIuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjMuMDEuMDAjU2Nob29scyMzMC4yMi4yMy4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMy4wMi4wMCNQb2x5dGVjaG5pYyMzMC4yMi4yMy4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMy4wMy4wMCNWb2NhdGlvbmFsIGNvbGxlZ2UjMzAuMjIuMjMuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjMuMDQuMDAjTGVjdHVyZSB0aGVhdGVyIzMwLjIyLjIzLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIzLjA1LjAwI0xpYnJhcnkjMzAuMjIuMjMuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjMuMDYuMDAjTGFuZ3VhZ2UgbGFib3JhdG9yeSMzMC4yMi4yMy4wMC4wMAotdW5zcHNjNyMzMC4yMi4yMy4wNy4wMCNMYWJvcmF0b3J5IGJ1aWxkaW5nIzMwLjIyLjIzLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIzLjA4LjAwI01ldGVvcm9sb2dpY2FsIHN0YXRpb25zIzMwLjIyLjIzLjAwLjAwCi11bnNwc2M3IzMwLjIyLjIzLjA5LjAwI1Jlc2VhcmNoIG9yIHRlc3RpbmcgZmFjaWxpdGllcyMzMC4yMi4yMy4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNC4wMC4wMCNIb3NwaXRhbCBzdHJ1Y3R1cmVzIzMwLjIyLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjI0LjAxLjAwI0NsaW5pYyMzMC4yMi4yNC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNC4wMi4wMCNOdXJzaW5nIGhvbWUjMzAuMjIuMjQuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjQuMDMuMDAjT3BlcmF0aW5nIHRoZWF0ZXIjMzAuMjIuMjQuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjQuMDQuMDAjSW50ZW5zaXZlIGNhcmUgdW5pdCMzMC4yMi4yNC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNC4wNS4wMCNEaWFnbm9zdGljIHNjcmVlbmluZyByb29tIzMwLjIyLjI0LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI0LjA2LjAwI1NjcmVlbmluZyByb29tcyMzMC4yMi4yNC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNC4wNy4wMCNGbHVvcm9zY29weSByb29tIzMwLjIyLjI0LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI0LjA4LjAwI1BhdGhvbG9neSByb29tIzMwLjIyLjI0LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI0LjA5LjAwI0NhdGhldGVyIHJvb20jMzAuMjIuMjQuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjUuMDAuMDAjQWNjb21tb2RhdGlvbiBzdHJ1Y3R1cmVzIzMwLjIyLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjI1LjAxLjAwI1Jlc2lkZW50aWFsIGhvbWVzIzMwLjIyLjI1LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI1LjAyLjAwI0ZsYXRzIzMwLjIyLjI1LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI1LjAzLjAwI0NoaWxkcmVucyBob21lIzMwLjIyLjI1LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI1LjA0LjAwI0RheWNhcmUgY2VudGVyIzMwLjIyLjI1LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI1LjA1LjAwI1JldGlyZW1lbnQgaG9tZSMzMC4yMi4yNS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNS4wNi4wMCNPbGQgcGVvcGxlcyBob21lIzMwLjIyLjI1LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI1LjA3LjAwI0hvc3RlbCMzMC4yMi4yNS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNi4wMC4wMCNTcG9ydHMgYW5kIGhlYWx0aCBzdHJ1Y3R1cmVzIzMwLjIyLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjI2LjAxLjAwI1N0YWRpdW0jMzAuMjIuMjYuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjYuMDIuMDAjU3BvcnRzIGdyb3VuZCMzMC4yMi4yNi4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNi4wMy4wMCNSdW5uaW5nIHRyYWNrIzMwLjIyLjI2LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI2LjA0LjAwI1Nwb3J0cyBoYWxsIzMwLjIyLjI2LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI2LjA1LjAwI1NwYSMzMC4yMi4yNi4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNi4wNi4wMCNHeW1uYXNpdW0jMzAuMjIuMjYuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjYuMDcuMDAjU3dpbW1pbmcgcG9vbCMzMC4yMi4yNi4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNi4wOC4wMCNXYXRlciBzcG9ydHMgZmFjaWxpdGllcyMzMC4yMi4yNi4wMC4wMAotdW5zcHNjNyMzMC4yMi4yNy4wMC4wMCNJbmR1c3RyaWFsIHN0cnVjdHVyZXMjMzAuMjIuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjcuMDEuMDAjV29ya3Nob3BzIzMwLjIyLjI3LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI3LjAyLjAwI0NvbGQgc3RvcmFnZSBpbnN0YWxsYXRpb25zIzMwLjIyLjI3LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI3LjAzLjAwI1dhcmVob3VzZSBzdG9yZXMjMzAuMjIuMjcuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjguMDAuMDAjQWdyaWN1bHR1cmFsIGFuZCBmYXJtaW5nIGFuZCBmaXNoaW5nIHN0cnVjdHVyZXMjMzAuMjIuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjguMDEuMDAjQmFybiMzMC4yMi4yOC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yOC4wMi4wMCNDb3dzaGVkcyMzMC4yMi4yOC4wMC4wMAotdW5zcHNjNyMzMC4yMi4yOC4wMy4wMCNJcnJpZ2F0aW9uIGNoYW5uZWwjMzAuMjIuMjguMDAuMDAKLXVuc3BzYzcjMzAuMjIuMjkuMDAuMDAjRGVmZW5zZSBzdHJ1Y3R1cmVzIzMwLjIyLjAwLjAwLjAwCi11bnNwc2M3IzMwLjIyLjI5LjAxLjAwI01pbGl0YXJ5IGJ1bmtlciMzMC4yMi4yOS4wMC4wMAotdW5zcHNjNyMzMC4yMi4yOS4wMi4wMCNNaWxpdGFyeSBzaGVsdGVyIzMwLjIyLjI5LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI5LjAzLjAwI0JhcnJhY2tzIzMwLjIyLjI5LjAwLjAwCi11bnNwc2M3IzMwLjIyLjI5LjA0LjAwI01pbGl0YXJ5IG1lc3MjMzAuMjIuMjkuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMzAuMDAuMDAjUmVsaWdpb3VzIHN0cnVjdHVyZXMjMzAuMjIuMDAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMzAuMDEuMDAjQ2h1cmNoZXMjMzAuMjIuMzAuMDAuMDAKLXVuc3BzYzcjMzAuMjIuMzAuMDIuMDAjVGVtcGxlcyMzMC4yMi4zMC4wMC4wMAotdW5zcHNjNyMzMC4yMi4zMC4wMy4wMCNNb3NxdWVzIzMwLjIyLjMwLjAwLjAwCi11bnNwc2M3IzMxLjAwLjAwLjAwLjAwI01hbnVmYWN0dXJpbmcgQ29tcG9uZW50cyBhbmQgU3VwcGxpZXMjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMDAuMDAuMDAjQ2FzdGluZ3MjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTUuMDAuMDAjRGllIGNhc3RpbmdzIzMxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjE1LjAxLjAwI0FsdW1pbnVtIGRpZSBjYXN0aW5ncyMzMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNS4wMi4wMCNGZXJyb3VzIGFsbG95IGRpZSBjYXN0aW5ncyMzMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNS4wMy4wMCNJcm9uIGRpZSBjYXN0aW5ncyMzMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNS4wNC4wMCNOb24gZmVycm91cyBhbGxveSBkaWUgY2FzdGluZ3MjMzEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTUuMDUuMDAjU3RhaW5sZXNzIHN0ZWVsIGRpZSBjYXN0aW5ncyMzMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNS4wNi4wMCNTdGVlbCBkaWUgY2FzdGluZ3MjMzEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTUuMDcuMDAjTWFnbmVzaXVtIGRpZSBjYXN0aW5ncyMzMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNS4wOC4wMCNaaW5jIGRpZSBjYXN0aW5ncyMzMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNS4wOS4wMCNUaW4gZGllIGNhc3RpbmdzIzMxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE1LjEwLjAwI1RpdGFuaXVtIGRpZSBjYXN0aW5ncyMzMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNS4xMS4wMCNCZXJ5bGxpdW0gZGllIGNhc3RpbmdzIzMxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE1LjEyLjAwI1ByZWNpb3VzIG1ldGFsIGRpZSBjYXN0aW5ncyMzMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNS4xMy4wMCNDb3BwZXIgZGllIGNhc3RpbmdzIzMxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE1LjE0LjAwI0xlYWQgZGllIGNhc3RpbmdzIzMxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE1LjE1LjAwI0JyYXNzIGRpZSBjYXN0aW5ncyMzMS4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNS4xNi4wMCNCcm9uemUgZGllIGNhc3RpbmdzIzMxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE2LjAwLjAwI1NhbmQgY2FzdGluZ3MjMzEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTYuMDEuMDAjTm9uIGZlcnJvdXMgYWxsb3kgc2FuZCBjYXN0aW5ncyMzMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNi4wMi4wMCNGZXJyb3VzIGFsbG95IHNhbmQgY2FzdGluZ3MjMzEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTYuMDMuMDAjU3RlZWwgc2FuZCBjYXN0aW5ncyMzMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNi4wNC4wMCNTdGFpbmxlc3Mgc3RlZWwgc2FuZCBjYXN0aW5ncyMzMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNi4wNS4wMCNJcm9uIHNhbmQgY2FzdGluZ3MjMzEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTYuMDYuMDAjQWx1bWludW0gc2FuZCBjYXN0aW5ncyMzMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNi4wNy4wMCNNYWduZXNpdW0gc2FuZCBjYXN0aW5ncyMzMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNi4wOC4wMCNUaXRhbml1bSBzYW5kIGNhc3RpbmdzIzMxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE2LjA5LjAwI0JlcnlsbGl1bSBzYW5kIGNhc3RpbmdzIzMxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE2LjEwLjAwI0NvcHBlciBzYW5kIGNhc3RpbmdzIzMxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE2LjExLjAwI0JyYXNzIHNhbmQgY2FzdGluZ3MjMzEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTYuMTIuMDAjQnJvbnplIHNhbmQgY2FzdGluZ3MjMzEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTYuMTMuMDAjWmluYyBzYW5kIGNhc3RpbmdzIzMxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE2LjE0LjAwI1RpbiBzYW5kIGNhc3RpbmdzIzMxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE2LjE1LjAwI0xlYWQgc2FuZCBjYXN0aW5ncyMzMS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNi4xNi4wMCNQcmVjaW91cyBtZXRhbCBzYW5kIGNhc3RpbmdzIzMxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE3LjAwLjAwI1Blcm1hbmVudCBtb2xkIGNhc3RpbmdzIzMxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjE3LjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IHBlcm1hbmVudCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE3LjAyLjAwI0ZlcnJvdXMgYWxsb3kgcGVybWFuZW50IG1vbGQgY2FzdGluZ3MjMzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTcuMDMuMDAjU3RlZWwgcGVybWFuZW50IG1vbGQgY2FzdGluZ3MjMzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTcuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIHBlcm1hbmVudCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE3LjA1LjAwI0lyb24gcGVybWFuZW50IG1vbGQgY2FzdGluZ3MjMzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTcuMDYuMDAjQWx1bWludW0gcGVybWFuZW50IG1vbGQgY2FzdGluZ3MjMzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTcuMDcuMDAjTWFnbmVzaXVtIHBlcm1hbmVudCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE3LjA4LjAwI1RpdGFuaXVtIHBlcm1hbmVudCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE3LjA5LjAwI0JlcnlsbGl1bSBwZXJtYW5lbnQgbW9sZCBjYXN0aW5ncyMzMS4xMC4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMC4xNy4xMC4wMCNDb3BwZXIgcGVybWFuZW50IG1vbGQgY2FzdGluZ3MjMzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTcuMTEuMDAjQnJhc3MgcGVybWFuZW50IG1vbGQgY2FzdGluZ3MjMzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTcuMTIuMDAjQnJvbnplIHBlcm1hbmVudCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE3LjEzLjAwI1ppbmMgcGVybWFuZW50IG1vbGQgY2FzdGluZ3MjMzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTcuMTQuMDAjVGluIHBlcm1hbmVudCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE3LjE1LjAwI0xlYWQgcGVybWFuZW50IG1vbGQgY2FzdGluZ3MjMzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTcuMTYuMDAjUHJlY2lvdXMgbWV0YWwgcGVybWFuZW50IG1vbGQgY2FzdGluZ3MjMzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTguMDAuMDAjU2hlbGwgbW9sZCBjYXN0aW5ncyMzMS4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOC4wMS4wMCNOb24gZmVycm91cyBhbGxveSBzaGVsbCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE4LjAyLjAwI0ZlcnJvdXMgYWxsb3kgc2hlbGwgbW9sZCBjYXN0aW5ncyMzMS4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOC4wMy4wMCNTdGVlbCBzaGVsbCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE4LjA0LjAwI1N0YWlubGVzcyBzdGVlbCBzaGVsbCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE4LjA1LjAwI0lyb24gc2hlbGwgbW9sZCBjYXN0aW5ncyMzMS4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOC4wNi4wMCNBbHVtaW51bSBzaGVsbCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE4LjA3LjAwI01hZ25lc2l1bSBzaGVsbCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE4LjA4LjAwI1RpdGFuaXVtIHNoZWxsIG1vbGQgY2FzdGluZ3MjMzEuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTguMDkuMDAjQmVyeWxsaXVtIHNoZWxsIG1vbGQgY2FzdGluZ3MjMzEuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTguMTAuMDAjQ29wcGVyIHNoZWxsIG1vbGQgY2FzdGluZ3MjMzEuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTguMTEuMDAjQnJhc3Mgc2hlbGwgbW9sZCBjYXN0aW5ncyMzMS4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOC4xMi4wMCNCcm9uemUgc2hlbGwgbW9sZCBjYXN0aW5ncyMzMS4xMC4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOC4xMy4wMCNaaW5jIHNoZWxsIG1vbGQgY2FzdGluZ3MjMzEuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTguMTQuMDAjVGluIHNoZWxsIG1vbGQgY2FzdGluZ3MjMzEuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTguMTUuMDAjTGVhZCBzaGVsbCBtb2xkIGNhc3RpbmdzIzMxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE4LjE2LjAwI1ByZWNpb3VzIHNoZWxsIG1vbGQgY2FzdGluZ3MjMzEuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTkuMDAuMDAjSW52ZXN0bWVudCBjYXN0aW5ncyMzMS4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOS4wMS4wMCNOb24gZmVycm91cyBhbGxveSBpbnZlc3RtZW50IGNhc3RpbmdzIzMxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE5LjAyLjAwI0ZlcnJvdXMgYWxsb3kgaW52ZXN0bWVudCBjYXN0aW5ncyMzMS4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOS4wMy4wMCNTdGVlbCBpbnZlc3RtZW50IGNhc3RpbmdzIzMxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE5LjA0LjAwI1N0YWlubGVzcyBzdGVlbCBpbnZlc3RtZW50IGNhc3RpbmdzIzMxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE5LjA1LjAwI0lyb24gaW52ZXN0bWVudCBjYXN0aW5ncyMzMS4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOS4wNi4wMCNBbHVtaW51bSBpbnZlc3RtZW50IGNhc3RpbmdzIzMxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE5LjA3LjAwI01hZ25lc2l1bSBpbnZlc3RtZW50IGNhc3RpbmdzIzMxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEwLjE5LjA4LjAwI1ppbmMgaW52ZXN0bWVudCBjYXN0aW5ncyMzMS4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOS4wOS4wMCNUaW4gaW52ZXN0bWVudCBjYXN0aW5ncyMzMS4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOS4xMC4wMCNMZWFkIGludmVzdG1lbnQgY2FzdGluZ3MjMzEuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMTkuMTEuMDAjUHJlY2lvdXMgbWV0YWwgaW52ZXN0bWVudCBjYXN0aW5ncyMzMS4xMC4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMC4xOS4xMi4wMCNUaXRhbml1bSBpbnZlc3RtZW50IGNhc3RpbmdzIzMxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEwLjIwLjAwLjAwI0NlbnRyaWZ1Z2FsIGNhc3RpbmdzIzMxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIwLjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IGNlbnRyaWZ1Z2FsIGNhc3RpbmdzIzMxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIwLjAyLjAwI0ZlcnJvdXMgYWxsb3kgY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjAuMDMuMDAjU3RlZWwgY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjAuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIGNlbnRyaWZ1Z2FsIGNhc3RpbmdzIzMxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIwLjA1LjAwI0lyb24gY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjAuMDYuMDAjQWx1bWludW0gY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjAuMDcuMDAjTWFnbmVzaXVtIGNlbnRyaWZ1Z2FsIGNhc3RpbmdzIzMxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIwLjA4LjAwI1RpdGFuaXVtIGNlbnRyaWZ1Z2FsIGNhc3RpbmdzIzMxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIwLjA5LjAwI0JlcnlsbGl1bSBjZW50cmlmdWdhbCBjYXN0aW5ncyMzMS4xMC4yMC4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMC4xMC4wMCNDb3BwZXIgY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjAuMTEuMDAjQnJhc3MgY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjAuMTIuMDAjQnJvbnplIGNlbnRyaWZ1Z2FsIGNhc3RpbmdzIzMxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIwLjEzLjAwI1ppbmMgY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjAuMTQuMDAjVGluIGNlbnRyaWZ1Z2FsIGNhc3RpbmdzIzMxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIwLjE1LjAwI0xlYWQgY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjAuMTYuMDAjUHJlY2lvdXMgbWV0YWwgY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjEuMDAuMDAjQ2VyYW1pYyBtb2xkIGNhc3RpbmdzIzMxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIxLjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IGNlcmFtaWMgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMS4wMi4wMCNGZXJyb3VzIGFsbG95IGNlcmFtaWMgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMS4wMy4wMCNTdGVlbCBjZXJhbWljIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjEuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIGNlcmFtaWMgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMS4wNS4wMCNJcm9uIGNlcmFtaWMgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMS4wNi4wMCNBbHVtaW51bSBjZXJhbWljIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjEuMDcuMDAjTWFnbmVzaXVtIGNlcmFtaWMgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMS4wOC4wMCNUaXRhbml1bSBjZXJhbWljIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjEuMDkuMDAjQmVyeWxsaXVtIGNlcmFtaWMgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMS4xMC4wMCNDb3BwZXIgY2VyYW1pYyBtb2xkIGNhc3RpbmdzIzMxLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIxLjExLjAwI0JyYXNzIGNlcmFtaWMgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMS4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMS4xMi4wMCNCcm9uemUgY2VyYW1pYyBtb2xkIGNhc3RpbmdzIzMxLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIxLjEzLjAwI1ppbmMgY2VyYW1pYyBtb2xkIGNhc3RpbmdzIzMxLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIxLjE0LjAwI1RpbiBjZXJhbWljIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjEuMTUuMDAjTGVhZCBjZXJhbWljIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjEuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjEuMTYuMDAjUHJlY2lvdXMgbWV0YWwgY2VyYW1pYyBtb2xkIGNhc3RpbmdzIzMxLjEwLjIxLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIyLjAwLjAwI0dyYXBoaXRlIG1vbGQgY2FzdGluZ3MjMzEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjIuMDEuMDAjTm9uIGZlcnJvdXMgYWxsb3kgZ3JhcGhpdGUgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMi4wMi4wMCNGZXJycm91cyBhbGxveSBncmFwaGl0ZSBtb2xkIGNhc3RpbmdzIzMxLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIyLjAzLjAwI1N0ZWVsIGdyYXBoaXRlIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjIuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIGdyYXBoaXRlIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjIuMDUuMDAjSXJvbiBncmFwaGl0ZSBtb2xkIGNhc3RpbmdzIzMxLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIyLjA2LjAwI0FsdW1pbnVtIGdyYXBoaXRlIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjIuMDcuMDAjTWFnbmVzaXVtIGdyYXBoaXRlIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjIuMDguMDAjVGl0YW5pdW0gZ3JhcGhpdGUgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMi4wOS4wMCNCZXJ5bGxpdW0gZ3JhcGhpdGUgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMi4xMC4wMCNDb3BwZXIgZ3JhcGhpdGUgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMi4xMS4wMCNCcmFzcyBncmFwaGl0ZSBtb2xkIGNhc3RpbmdzIzMxLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIyLjEyLjAwI0Jyb256ZSBncmFwaGl0ZSBtb2xkIGNhc3RpbmdzIzMxLjEwLjIyLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIyLjEzLjAwI1ppbmMgZ3JhcGhpdGUgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMi4xNC4wMCNUaW4gZ3JhcGhpdGUgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMi4xNS4wMCNMZWFkIGdyYXBoaXRlIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjIuMTYuMDAjUHJlY2lvdXMgbWV0YWwgZ3JhcGhpdGUgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMi4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMy4wMC4wMCNQbGFzdGVyIG1vbGQgY2FzdGluZ3MjMzEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjMuMDEuMDAjTm9uIGZlcnJvdXMgYWxsb3kgcGxhc3RlciBtb2xkIGNhc3RpbmdzIzMxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIzLjAyLjAwI0ZlcnJvdXMgYWxsb3kgcGxhc3RlciBtb2xkIGNhc3RpbmdzIzMxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIzLjAzLjAwI1N0ZWVsIHBsYXN0ZXIgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMy4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMy4wNC4wMCNTdGFpbmxlc3Mgc3RlZWwgcGxhc3RlciBtb2xkIGNhc3RpbmdzIzMxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIzLjA1LjAwI0lyb24gcGxhc3RlciBtb2xkIGNhc3RpbmdzIzMxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIzLjA2LjAwI0FsdW1pbnVtIHBsYXN0ZXIgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMy4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMy4wNy4wMCNNYWduZXNpdW0gcGxhc3RlciBtb2xkIGNhc3RpbmdzIzMxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIzLjA4LjAwI1RpdGFuaXVtIHBsYXN0ZXIgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMy4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMy4wOS4wMCNCZXJ5bGxpdW0gcGxhc3RlciBtb2xkIGNhc3RpbmdzIzMxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIzLjEwLjAwI0NvcHBlciBwbGFzdGVyIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjMuMTEuMDAjQnJhc3MgcGxhc3RlciBtb2xkIGNhc3RpbmdzIzMxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzMxLjEwLjIzLjEyLjAwI0Jyb256ZSBwbGFzdGVyIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjMuMTMuMDAjWmluYyBwbGFzdGVyIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjMuMTQuMDAjVGluIHBsYXN0ZXIgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMy4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMy4xNS4wMCNMZWFkIHBsYXN0ZXIgbW9sZCBjYXN0aW5ncyMzMS4xMC4yMy4wMC4wMAotdW5zcHNjNyMzMS4xMC4yMy4xNi4wMCNQcmVjaW91cyBtZXRhbCBwbGFzdGVyIG1vbGQgY2FzdGluZ3MjMzEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjQuMDAuMDAjViBwcm9jZXNzIGNhc3RpbmdzIzMxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEwLjI0LjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IHYgcHJvY2VzcyBjYXN0aW5ncyMzMS4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMS4xMC4yNC4wMi4wMCNGZXJyb3VzIGFsbG95IHYgcHJvY2VzcyBjYXN0aW5ncyMzMS4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMS4xMC4yNC4wMy4wMCNTdGVlbCB2IHByb2Nlc3MgY2FzdGluZ3MjMzEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjQuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIHYgcHJvY2VzcyBjYXN0aW5ncyMzMS4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMS4xMC4yNC4wNS4wMCNJcm9uIHYgcHJvY2VzcyBjYXN0aW5ncyMzMS4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMS4xMC4yNC4wNi4wMCNBbHVtaW51bSB2IHByb2Nlc3MgY2FzdGluZ3MjMzEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjQuMDcuMDAjTWFnbmVzaXVtIHYgcHJvY2VzcyBjYXN0aW5ncyMzMS4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMS4xMC4yNC4wOC4wMCNUaXRhbml1bSB2IHByb2Nlc3MgY2FzdGluZ3MjMzEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjQuMDkuMDAjQmVyeWxsaXVtIHYgcHJvY2VzcyBjYXN0aW5ncyMzMS4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMS4xMC4yNC4xMC4wMCNDb3BwZXIgdiBwcm9jZXNzIGNhc3RpbmdzIzMxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMxLjEwLjI0LjExLjAwI0JyYXNzIHYgcHJvY2VzcyBjYXN0aW5ncyMzMS4xMC4yNC4wMC4wMAotdW5zcHNjNyMzMS4xMC4yNC4xMi4wMCNCcm9uemUgdiBwcm9jZXNzIGNhc3RpbmdzIzMxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMxLjEwLjI0LjEzLjAwI1ppbmMgdiBwcm9jZXNzIGNhc3RpbmdzIzMxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMxLjEwLjI0LjE0LjAwI1RpbiB2IHByb2Nlc3MgY2FzdGluZ3MjMzEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjQuMTUuMDAjTGVhZCB2IHByb2Nlc3MgY2FzdGluZ3MjMzEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjMzEuMTAuMjQuMTYuMDAjUHJlY2lvdXMgbWV0YWwgdiBwcm9jZXNzIGNhc3RpbmdzIzMxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzMxLjExLjAwLjAwLjAwI0V4dHJ1c2lvbnMjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTUuMDAuMDAjUHJvZmlsZSBleHRydXNpb25zIzMxLjExLjAwLjAwLjAwCi11bnNwc2M3IzMxLjExLjE1LjAxLjAwI0FsdW1pbnVtIHByb2ZpbGUgZXh0cnVzaW9ucyMzMS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNS4wMi4wMCNCZXJ5bGxpdW0gcHJvZmlsZSBleHRydXNpb25zIzMxLjExLjE1LjAwLjAwCi11bnNwc2M3IzMxLjExLjE1LjAzLjAwI0JyYXNzIHByb2ZpbGUgZXh0cnVzaW9ucyMzMS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNS4wNC4wMCNCcm9uemUgcHJvZmlsZSBleHRydXNpb25zIzMxLjExLjE1LjAwLjAwCi11bnNwc2M3IzMxLjExLjE1LjA1LjAwI0NvcHBlciBwcm9maWxlIGV4dHJ1c2lvbnMjMzEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTUuMDYuMDAjRmVycm91cyBhbGxveSBwcm9maWxlIGV4dHJ1c2lvbnMjMzEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTUuMDcuMDAjTGVhZCBwcm9maWxlIGV4dHJ1c2lvbnMjMzEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTUuMDguMDAjTWFnbmVzaXVtIHByb2ZpbGUgZXh0cnVzaW9ucyMzMS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNS4wOS4wMCNOb24gZmVycm91cyBhbGxveSBwcm9maWxlIGV4dHJ1c2lvbnMjMzEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTUuMTAuMDAjUGxhc3RpYyBwcm9maWxlIGV4dHJ1c2lvbnMjMzEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTUuMTEuMDAjUHJlY2lvdXMgbWV0YWwgcHJvZmlsZSBleHRydXNpb25zIzMxLjExLjE1LjAwLjAwCi11bnNwc2M3IzMxLjExLjE1LjEyLjAwI1J1YmJlciBwcm9maWxlIGV4dHJ1c2lvbnMjMzEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTUuMTMuMDAjU3RhaW5sZXNzIHN0ZWVsIHByb2ZpbGUgZXh0cnVzaW9ucyMzMS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNS4xNC4wMCNTdGVlbCBwcm9maWxlIGV4dHJ1c2lvbnMjMzEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTUuMTUuMDAjVGluIHByb2ZpbGUgZXh0cnVzaW9ucyMzMS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNS4xNi4wMCNUaXRhbml1bSBwcm9maWxlIGV4dHJ1c2lvbnMjMzEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTUuMTcuMDAjWmluYyBwcm9maWxlIGV4dHJ1c2lvbnMjMzEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTYuMDAuMDAjSW1wYWN0IGV4dHJ1c2lvbnMjMzEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTYuMDEuMDAjQWx1bWludW0gaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTYuMDIuMDAjQmVyeWxsaXVtIGltcGFjdCBleHRydXNpb25zIzMxLjExLjE2LjAwLjAwCi11bnNwc2M3IzMxLjExLjE2LjAzLjAwI0JyYXNzIGltcGFjdCBleHRydXNpb25zIzMxLjExLjE2LjAwLjAwCi11bnNwc2M3IzMxLjExLjE2LjA0LjAwI0Jyb256ZSBpbXBhY3QgZXh0cnVzaW9ucyMzMS4xMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNi4wNS4wMCNDb3BwZXIgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTYuMDYuMDAjRmVycm91cyBhbGxveSBpbXBhY3QgZXh0cnVzaW9ucyMzMS4xMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNi4wNy4wMCNMZWFkIGltcGFjdCBleHRydXNpb25zIzMxLjExLjE2LjAwLjAwCi11bnNwc2M3IzMxLjExLjE2LjA4LjAwI01hZ25lc2l1bSBpbXBhY3QgZXh0cnVzaW9ucyMzMS4xMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNi4wOS4wMCNOb24gZmVycm91cyBhbGxveSBpbXBhY3QgZXh0cnVzaW9ucyMzMS4xMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNi4xMC4wMCNQbGFzdGljIGltcGFjdCBleHRydXNpb25zIzMxLjExLjE2LjAwLjAwCi11bnNwc2M3IzMxLjExLjE2LjExLjAwI1ByZWNpb3VzIG1ldGFsIGltcGFjdCBleHRydXNpb25zIzMxLjExLjE2LjAwLjAwCi11bnNwc2M3IzMxLjExLjE2LjEyLjAwI1J1YmJlciBpbXBhY3QgZXh0cnVzaW9ucyMzMS4xMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNi4xMy4wMCNTdGFpbmxlc3Mgc3RlZWwgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTYuMTQuMDAjU3RlZWwgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTYuMTUuMDAjVGluIGltcGFjdCBleHRydXNpb25zIzMxLjExLjE2LjAwLjAwCi11bnNwc2M3IzMxLjExLjE2LjE2LjAwI1RpdGFuaXVtIGltcGFjdCBleHRydXNpb25zIzMxLjExLjE2LjAwLjAwCi11bnNwc2M3IzMxLjExLjE2LjE3LjAwI1ppbmMgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTcuMDAuMDAjQ29sZCBleHRydXNpb25zIzMxLjExLjAwLjAwLjAwCi11bnNwc2M3IzMxLjExLjE3LjAxLjAwI0FsdW1pbnVtIGNvbGQgZXh0cnVzaW9ucyMzMS4xMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNy4wMi4wMCNCZXJ5bGxpdW0gY29sZCBleHRydXNpb25zIzMxLjExLjE3LjAwLjAwCi11bnNwc2M3IzMxLjExLjE3LjAzLjAwI0JyYXNzIGNvbGQgZXh0cnVzaW9ucyMzMS4xMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNy4wNC4wMCNCcm9uemUgY29sZCBleHRydXNpb25zIzMxLjExLjE3LjAwLjAwCi11bnNwc2M3IzMxLjExLjE3LjA1LjAwI0NvcHBlciBjb2xkIGV4dHJ1c2lvbnMjMzEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTcuMDYuMDAjRmVycm91cyBhbGxveSBjb2xkIGV4dHJ1c2lvbnMjMzEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTcuMDcuMDAjTGVhZCBjb2xkIGV4dHJ1c2lvbnMjMzEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTcuMDguMDAjTWFnbmVzaXVtIGNvbGQgZXh0cnVzaW9ucyMzMS4xMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNy4wOS4wMCNOb24gZmVycm91cyBhbGxveSBjb2xkIGV4dHJ1c2lvbnMjMzEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTcuMTAuMDAjUGxhc3RpYyBjb2xkIGV4dHJ1c2lvbnMjMzEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTcuMTEuMDAjUHJlY2lvdXMgbWV0YWwgY29sZCBleHRydXNpb25zIzMxLjExLjE3LjAwLjAwCi11bnNwc2M3IzMxLjExLjE3LjEyLjAwI1J1YmJlciBjb2xkIGV4dHJ1c2lvbnMjMzEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTcuMTMuMDAjU3RhaW5sZXNzIHN0ZWVsIGNvbGQgZXh0cnVzaW9ucyMzMS4xMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNy4xNC4wMCNTdGVlbCBjb2xkIGV4dHJ1c2lvbnMjMzEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTcuMTUuMDAjVGluIGNvbGQgZXh0cnVzaW9ucyMzMS4xMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMS4xNy4xNi4wMCNUaXRhbml1bSBjb2xkIGV4dHJ1c2lvbnMjMzEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTEuMTcuMTcuMDAjWmluYyBjb2xkIGV4dHJ1c2lvbnMjMzEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMDAuMDAuMDAjTWFjaGluZWQgY2FzdGluZ3MjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTAuMDAuMDAjTWFjaGluZWQgdiBwcm9jZXNzIGNhc3RpbmdzIzMxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEwLjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IHYgcHJvY2VzcyBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMC4wMi4wMCNGZXJyb3VzIGFsbG95IHYgcHJvY2VzcyBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMC4wMy4wMCNTdGVlbCB2IHByb2Nlc3MgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTAuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIHYgcHJvY2VzcyBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMC4wNS4wMCNJcm9uIHYgcHJvY2VzcyBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMC4wNi4wMCNBbHVtaW51bSB2IHByb2Nlc3MgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTAuMDcuMDAjTWFnbmVzaXVtIHYgcHJvY2VzcyBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMC4wOC4wMCNUaXRhbml1bSB2IHByb2Nlc3MgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTAuMDkuMDAjQmVyeWxsaXVtIHYgcHJvY2VzcyBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMC4xMC4wMCNDb3BwZXIgdiBwcm9jZXNzIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEwLjExLjAwI0JyYXNzIHYgcHJvY2VzcyBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMC4xMi4wMCNCcm9uemUgdiBwcm9jZXNzIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEwLjEzLjAwI1ppbmMgdiBwcm9jZXNzIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEwLjE0LjAwI1RpbiB2IHByb2Nlc3MgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTAuMTUuMDAjTGVhZCB2IHByb2Nlc3MgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTAuMTYuMDAjUHJlY2lvdXMgbWV0YWwgdiBwcm9jZXNzIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEwLjE3LjAwI0NvbXBvc2l0ZSB2IHByb2Nlc3MgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTAuMTguMDAjTmlja2VsIGFsbG95IHYgcHJvY2VzcyBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMC4xOS4wMCNOb24gbWV0YWxsaWMgdiBwcm9jZXNzIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzMxLjEyLjExLjAwLjAwI01hY2hpbmVkIGRpZSBjYXN0aW5ncyMzMS4xMi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMS4wMS4wMCNBbHVtaW51bSBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMDIuMDAjRmVycm91cyBhbGxveSBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMDMuMDAjSXJvbiBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMDQuMDAjTm9uIGZlcnJvdXMgYWxsb3kgZGllIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjExLjAwLjAwCi11bnNwc2M3IzMxLjEyLjExLjA1LjAwI1N0YWlubGVzcyBzdGVlbCBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMDYuMDAjU3RlZWwgZGllIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjExLjAwLjAwCi11bnNwc2M3IzMxLjEyLjExLjA3LjAwI01hZ25lc2l1bSBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMDguMDAjWmluYyBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMDkuMDAjVGluIGRpZSBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMS4xMC4wMCNUaXRhbml1bSBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMTEuMDAjQmVyeWxsaXVtIGRpZSBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMS4xMi4wMCNQcmVjaW91cyBtZXRhbCBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMTMuMDAjQ29wcGVyIGRpZSBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMS4xNC4wMCNMZWFkIGRpZSBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMS4xNS4wMCNCcmFzcyBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMTYuMDAjQnJvbnplIGRpZSBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMS4xNy4wMCNDb21wb3NpdGUgZGllIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjExLjAwLjAwCi11bnNwc2M3IzMxLjEyLjExLjE4LjAwI05pY2tlbCBBbGxveSBkaWUgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTEuMTkuMDAjTm9uIG1ldGFsbGljIGRpZSBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMi4wMC4wMCNNYWNoaW5lZCBzYW5kIGNhc3RpbmdzIzMxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEyLjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IHNhbmQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTIuMDIuMDAjRmVycm91cyBhbGxveSBzYW5kIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEyLjAzLjAwI1N0ZWVsIHNhbmQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTIuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIHNhbmQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTIuMDUuMDAjSXJvbiBzYW5kIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEyLjA2LjAwI0FsdW1pbnVtIHNhbmQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTIuMDcuMDAjTWFnbmVzaXVtIHNhbmQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTIuMDguMDAjVGl0YW5pdW0gc2FuZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMi4wOS4wMCNCZXJ5bGxpdW0gc2FuZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMi4xMC4wMCNDb3BwZXIgc2FuZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMi4xMS4wMCNCcmFzcyBzYW5kIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEyLjEyLjAwI0Jyb256ZSBzYW5kIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEyLjEzLjAwI1ppbmMgc2FuZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMi4xNC4wMCNUaW4gc2FuZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMi4xNS4wMCNMZWFkIHNhbmQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTIuMTYuMDAjUHJlY2lvdXMgbWV0YWwgc2FuZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMi4xNy4wMCNDb21wb3NpdGUgc2FuZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMi4xOC4wMCNOaWNrZWwgQWxsb3kgc2FuZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMi4xOS4wMCNOb24gbWV0YWxsaWMgc2FuZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMy4wMC4wMCNNYWNoaW5lZCBwZXJtYW5lbnQgbW9sZCBjYXN0aW5ncyMzMS4xMi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMy4wMS4wMCNOb24gZmVycm91cyBhbGxveSBwZXJtYW5lbnQgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMy4wMi4wMCNGZXJyb3VzIGFsbG95IHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEzLjAzLjAwI1N0ZWVsIHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEzLjA0LjAwI1N0YWlubGVzcyBzdGVlbCBwZXJtYW5lbnQgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMy4wNS4wMCNJcm9uIHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEzLjA2LjAwI0FsdW1pbnVtIHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEzLjA3LjAwI01hZ25lc2l1bSBwZXJtYW5lbnQgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMy4wOC4wMCNUaXRhbml1bSBwZXJtYW5lbnQgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMy4wOS4wMCNCZXJ5bGxpdW0gcGVybWFuZW50IG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTMuMTAuMDAjQ29wcGVyIHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEzLjExLjAwI0JyYXNzIHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEzLjEyLjAwI0Jyb256ZSBwZXJtYW5lbnQgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMy4xMy4wMCNaaW5jIHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEzLjE0LjAwI1RpbiBwZXJtYW5lbnQgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMy4xNS4wMCNMZWFkIHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEzLjE2LjAwI1ByZWNpb3VzIG1ldGFsIHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjEzLjE3LjAwI0NvbXBvc2l0ZSBwZXJtYW5lbnQgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xMy4xOC4wMCNOaWNrZWwgYWxsb3kgcGVybWFuZW50IG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTMuMTkuMDAjTm9uIG1ldGFsbGljIHBlcm1hbmVudCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjEyLjE0LjAwLjAwI01hY2hpbmVkIHBsYXN0ZXIgbW9sZCBjYXN0aW5ncyMzMS4xMi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNC4wMS4wMCNOb24gZmVycm91cyBhbGxveSBwbGFzdGVyIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTQuMDIuMDAjRmVycm91cyBhbGxveSBwbGFzdGVyIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTQuMDMuMDAjU3RlZWwgcGxhc3RlciBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE0LjA0LjAwI1N0YWlubGVzcyBzdGVlbCBwbGFzdGVyIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTQuMDUuMDAjSXJvbiBwbGFzdGVyIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTQuMDYuMDAjQWx1bWludW0gcGxhc3RlciBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE0LjA3LjAwI01hZ25lc2l1bSBwbGFzdGVyIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTQuMDguMDAjVGl0YW5pdW0gcGxhc3RlciBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE0LjA5LjAwI0JlcnlsbGl1bSBwbGFzdGVyIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTQuMTAuMDAjQ29wcGVyIHBsYXN0ZXIgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNC4xMS4wMCNCcmFzcyBwbGFzdGVyIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTQuMTIuMDAjQnJvbnplIHBsYXN0ZXIgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNC4xMy4wMCNaaW5jIHBsYXN0ZXIgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNC4xNC4wMCNUaW4gcGxhc3RlciBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE0LjE1LjAwI0xlYWQgcGxhc3RlciBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE0LjE2LjAwI1ByZWNpb3VzIG1ldGFsIHBsYXN0ZXIgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNC4xNy4wMCNDb21wb3NpdGUgcGxhc3RlciBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE0LjE4LjAwI05pY2tlbCBhbGxveSBwbGFzdGVyIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTQuMTkuMDAjTm9uIG1ldGFsbGljIHBsYXN0ZXIgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNS4wMC4wMCNNYWNoaW5lZCBzaGVsbCBtb2xkIGNhc3RpbmdzIzMxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEyLjE1LjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IHNoZWxsIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTUuMDIuMDAjRmVycm91cyBhbGxveSBzaGVsbCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE1LjAzLjAwI1N0ZWVsIHNoZWxsIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTUuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIHNoZWxsIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTUuMDUuMDAjSXJvbiBzaGVsbCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE1LjA2LjAwI0FsdW1pbnVtIHNoZWxsIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTUuMDcuMDAjTWFnbmVzaXVtIHNoZWxsIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTUuMDguMDAjVGl0YW5pdW0gc2hlbGwgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNS4wOS4wMCNCZXJ5bGxpdW0gc2hlbGwgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNS4xMC4wMCNDb3BwZXIgc2hlbGwgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNS4xMS4wMCNCcmFzcyBzaGVsbCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE1LjEyLjAwI0Jyb256ZSBzaGVsbCBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE1LjEzLjAwI1ppbmMgc2hlbGwgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNS4xNC4wMCNUaW4gc2hlbGwgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNS4xNS4wMCNMZWFkIHNoZWxsIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTUuMTYuMDAjUHJlY2lvdXMgc2hlbGwgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNS4xNy4wMCNDb21wb3NpdGUgc2hlbGwgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNS4xOC4wMCNOaWNrZWwgYWxsb3kgc2hlbGwgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNS4xOS4wMCNOb24gbWV0YWxsaWMgc2hlbGwgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNi4wMC4wMCNNYWNoaW5lZCBpbnZlc3RtZW50IGNhc3RpbmdzIzMxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEyLjE2LjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IGludmVzdG1lbnQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTYuMDIuMDAjRmVycm91cyBhbGxveSBpbnZlc3RtZW50IG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE2LjAzLjAwI1N0ZWVsIGludmVzdG1lbnQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTYuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIGludmVzdG1lbnQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTYuMDUuMDAjSXJvbiBpbnZlc3RtZW50IG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE2LjA2LjAwI0FsdW1pbnVtIGludmVzdG1lbnQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTYuMDcuMDAjTWFnbmVzaXVtIGludmVzdG1lbnQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTYuMDguMDAjWmluYyBpbnZlc3RtZW50IG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE2LjA5LjAwI1RpbiBpbnZlc3RtZW50IG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE2LjEwLjAwI0xlYWQgaW52ZXN0bWVudCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNi4xMS4wMCNQcmVjaW91cyBtZXRhbCBpbnZlc3RtZW50IG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE2LjEyLjAwI1RpdGFuaXVtIGludmVzdG1lbnQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTYuMTMuMDAjQ29tcG9zaXRlIGludmVzdG1lbnQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTYuMTQuMDAjTmlja2VsIGFsbG95IGludmVzdG1lbnQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTYuMTUuMDAjTm9uIG1ldGFsbGljIGludmVzdG1lbnQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTcuMDAuMDAjTWFjaGluZWQgY2VudHJpZnVnYWwgY2FzdGluZ3MjMzEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTcuMDEuMDAjTm9uIGZlcnJvdXMgYWxsb3kgY2VudHJpZnVnYWwgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTcuMDIuMDAjRmVycm91cyBhbGxveSBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNy4wMy4wMCNTdGVlbCBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNy4wNC4wMCNTdGFpbmxlc3Mgc3RlZWwgY2VudHJpZnVnYWwgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTcuMDUuMDAjSXJvbiBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNy4wNi4wMCNBbHVtaW51bSBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNy4wNy4wMCNNYWduZXNpdW0gY2VudHJpZnVnYWwgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTcuMDguMDAjVGl0YW5pdW0gY2VudHJpZnVnYWwgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTcuMDkuMDAjQmVyeWxsaXVtIGNlbnRyaWZ1Z2FsIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE3LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE3LjEwLjAwI0NvcHBlciBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNy4xMS4wMCNCcmFzcyBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNy4xMi4wMCNCcm9uemUgY2VudHJpZnVnYWwgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTcuMTMuMDAjWmluYyBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNy4xNC4wMCNUaW4gY2VudHJpZnVnYWwgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTcuMTUuMDAjTGVhZCBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNy4xNi4wMCNQcmVjaW91cyBtZXRhbCBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xNy4xNy4wMCNDb21wb3NpdGUgY2VudHJpZnVnYWwgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTcuMTguMDAjTmlja2VsIGFsbG95IGNlbnRyaWZ1Z2FsIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE3LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE3LjE5LjAwI05vbiBtZXRhbGxpYyBjZW50cmlmdWdhbCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOC4wMC4wMCNNYWNoaW5lZCBjZXJhbWljIG1vbGQgY2FzdGluZ3MjMzEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTguMDEuMDAjTm9uIGZlcnJvdXMgYWxsb3kgY2VyYW1pYyBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE4LjAyLjAwI0ZlcnJvdXMgYWxsb3kgY2VyYW1pYyBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE4LjAzLjAwI1N0ZWVsIGNlcmFtaWMgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOC4wNC4wMCNTdGFpbmxlc3Mgc3RlZWwgY2VyYW1pYyBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE4LjA1LjAwI0lyb24gY2VyYW1pYyBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE4LjA2LjAwI0FsdW1pbnVtIGNlcmFtaWMgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOC4wNy4wMCNNYWduZXNpdW0gY2VyYW1pYyBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE4LjA4LjAwI1RpdGFuaXVtIGNlcmFtaWMgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOC4wOS4wMCNCZXJ5bGxpdW0gY2VyYW1pYyBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE4LjEwLjAwI0NvcHBlciBjZXJhbWljIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTguMTEuMDAjQnJhc3MgY2VyYW1pYyBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE4LjEyLjAwI0Jyb256ZSBjZXJhbWljIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTguMTMuMDAjWmluYyBjZXJhbWljIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTguMTQuMDAjVGluIGNlcmFtaWMgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOC4xNS4wMCNMZWFkIGNlcmFtaWMgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOC4xNi4wMCNQcmVjaW91cyBtZXRhbCBjZXJhbWljIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTguMTcuMDAjQ29tcG9zaXRlIGNlcmFtaWMgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOC4xOC4wMCNOaWNrZWwgYWxsb3kgY2VyYW1pYyBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE4LjE5LjAwI05vbiBtZXRhbGxpYyBjZXJhbWljIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTkuMDAuMDAjTWFjaGluZWQgZ3JhcGhpdGUgbW9sZCBjYXN0aW5ncyMzMS4xMi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOS4wMS4wMCNOb24gZmVycm91cyBhbGxveSBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE5LjAyLjAwI0ZlcnJyb3VzIGFsbG95IGdyYXBoaXRlIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTkuMDMuMDAjU3RlZWwgZ3JhcGhpdGUgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOS4wNC4wMCNTdGFpbmxlc3Mgc3RlZWwgZ3JhcGhpdGUgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOS4wNS4wMCNJcm9uIGdyYXBoaXRlIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTkuMDYuMDAjQWx1bWludW0gZ3JhcGhpdGUgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOS4wNy4wMCNNYWduZXNpdW0gZ3JhcGhpdGUgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOS4wOC4wMCNUaXRhbml1bSBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE5LjA5LjAwI0JlcnlsbGl1bSBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE5LjEwLjAwI0NvcHBlciBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE5LjExLjAwI0JyYXNzIGdyYXBoaXRlIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTkuMTIuMDAjQnJvbnplIGdyYXBoaXRlIG1vbGQgbWFjaGluZWQgY2FzdGluZ3MjMzEuMTIuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTIuMTkuMTMuMDAjWmluYyBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE5LjE0LjAwI1RpbiBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE5LjE1LjAwI0xlYWQgZ3JhcGhpdGUgbW9sZCBtYWNoaW5lZCBjYXN0aW5ncyMzMS4xMi4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMi4xOS4xNi4wMCNQcmVjaW91cyBtZXRhbCBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE5LjE3LjAwI0NvbXBvc2l0ZSBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE5LjE4LjAwI05pY2tlbCBhbGxveSBtZXRhbCBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEyLjE5LjE5LjAwI05vbiBtZXRhbGxpYyBncmFwaGl0ZSBtb2xkIG1hY2hpbmVkIGNhc3RpbmdzIzMxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEzLjAwLjAwLjAwI0ZvcmdpbmdzIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEzLjE1LjAwLjAwI09wZW4gZGllIGZvcmdpbmdzIzMxLjEzLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEzLjE1LjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IG9wZW4gZGllIGZvcmdpbmdzIzMxLjEzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE1LjAyLjAwI0ZlcnJvdXMgYWxsb3kgb3BlbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTUuMDMuMDAjU3RlZWwgb3BlbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTUuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIG9wZW4gZGllIGZvcmdpbmdzIzMxLjEzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE1LjA1LjAwI0lyb24gb3BlbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTUuMDYuMDAjQWx1bWludW0gb3BlbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTUuMDcuMDAjTWFnbmVzaXVtIG9wZW4gZGllIGZvcmdpbmdzIzMxLjEzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE1LjA4LjAwI1RpdGFuaXVtIG9wZW4gZGllIGZvcmdpbmdzIzMxLjEzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE1LjA5LjAwI0JlcnlsbGl1bSBvcGVuIGRpZSBmb3JnaW5ncyMzMS4xMy4xNS4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNS4xMC4wMCNDb3BwZXIgb3BlbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTUuMTEuMDAjQnJhc3Mgb3BlbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTUuMTIuMDAjQnJvbnplIG9wZW4gZGllIGZvcmdpbmdzIzMxLjEzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE1LjEzLjAwI1ppbmMgb3BlbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTUuMTQuMDAjVGluIG9wZW4gZGllIGZvcmdpbmdzIzMxLjEzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE1LjE1LjAwI0xlYWQgb3BlbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTUuMTYuMDAjUHJlY2lvdXMgbWV0YWwgb3BlbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTYuMDAuMDAjQ2xvc2VkIGRpZSBmb3JnaW5ncyMzMS4xMy4wMC4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNi4wMS4wMCNOb24gZmVycm91cyBhbGxveSBjbG9zZWQgZGllIGZvcmdpbmdzIzMxLjEzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE2LjAyLjAwI0ZlcnJvdXMgYWxsb3kgY2xvc2VkIGRpZSBmb3JnaW5ncyMzMS4xMy4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNi4wMy4wMCNTdGVlbCBjbG9zZWQgZGllIGZvcmdpbmdzIzMxLjEzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE2LjA0LjAwI1N0YWlubGVzcyBzdGVlbCBjbG9zZWQgZGllIGZvcmdpbmdzIzMxLjEzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE2LjA1LjAwI0lyb24gY2xvc2VkIGRpZSBmb3JnaW5ncyMzMS4xMy4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNi4wNi4wMCNBbHVtaW51bSBjbG9zZWQgZGllIGZvcmdpbmdzIzMxLjEzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE2LjA3LjAwI01hZ25lc2l1bSBjbG9zZWQgZGllIGZvcmdpbmdzIzMxLjEzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE2LjA4LjAwI1RpdGFuaXVtIGNsb3NlZCBkaWUgZm9yZ2luZ3MjMzEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTYuMDkuMDAjQmVyeWxsaXVtIGNsb3NlZCBkaWUgZm9yZ2luZ3MjMzEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTYuMTAuMDAjQ29wcGVyIGNsb3NlZCBkaWUgZm9yZ2luZ3MjMzEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTYuMTEuMDAjQnJhc3MgY2xvc2VkIGRpZSBmb3JnaW5ncyMzMS4xMy4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNi4xMi4wMCNCcm9uemUgY2xvc2VkIGRpZSBmb3JnaW5ncyMzMS4xMy4xNi4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNi4xMy4wMCNaaW5jIGNsb3NlZCBkaWUgZm9yZ2luZ3MjMzEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTYuMTQuMDAjVGluIGNsb3NlZCBkaWUgZm9yZ2luZ3MjMzEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTYuMTUuMDAjTGVhZCBjbG9zZWQgZGllIGZvcmdpbmdzIzMxLjEzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE2LjE2LjAwI1ByZWNpb3VzIG1ldGFsIGNsb3NlZCBkaWUgZm9yZ2luZ3MjMzEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTcuMDAuMDAjSW1wcmVzc2lvbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTcuMDEuMDAjTm9uIGZlcnJvdXMgYWxsb3kgaW1wcmVzc2lvbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTcuMDIuMDAjRmVycm91cyBhbGxveSBpbXByZXNzaW9uIGRpZSBmb3JnaW5ncyMzMS4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNy4wMy4wMCNTdGVlbCBpbXByZXNzaW9uIGRpZSBmb3JnaW5ncyMzMS4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNy4wNC4wMCNTdGFpbmxlc3Mgc3RlZWwgaW1wcmVzc2lvbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTcuMDUuMDAjSXJvbiBpbXByZXNzaW9uIGRpZSBmb3JnaW5ncyMzMS4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNy4wNi4wMCNBbHVtaW51bSBpbXByZXNzaW9uIGRpZSBmb3JnaW5ncyMzMS4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNy4wNy4wMCNNYWduZXNpdW0gaW1wcmVzc2lvbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTcuMDguMDAjVGl0YW5pdW0gaW1wcmVzc2lvbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTcuMDkuMDAjQmVyeWxsaXVtIGltcHJlc3Npb24gZGllIGZvcmdpbmdzIzMxLjEzLjE3LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE3LjEwLjAwI0NvcHBlciBpbXByZXNzaW9uIGRpZSBmb3JnaW5ncyMzMS4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNy4xMS4wMCNCcmFzcyBpbXByZXNzaW9uIGRpZSBmb3JnaW5ncyMzMS4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNy4xMi4wMCNCcm9uemUgaW1wcmVzc2lvbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTcuMTMuMDAjWmluYyBpbXByZXNzaW9uIGRpZSBmb3JnaW5ncyMzMS4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNy4xNC4wMCNUaW4gaW1wcmVzc2lvbiBkaWUgZm9yZ2luZ3MjMzEuMTMuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTcuMTUuMDAjTGVhZCBpbXByZXNzaW9uIGRpZSBmb3JnaW5ncyMzMS4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMy4xNy4xNi4wMCNQcmVjaW91cyBtZXRhbCBpbXByZXNzaW9uIGRpZSBmb3JnaW5ncyMzMS4xMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOC4wMC4wMCNEcm9wIGZvcmdpbmdzIzMxLjEzLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEzLjE4LjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IGRyb3AgZm9yZ2luZ3MjMzEuMTMuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTguMDIuMDAjWmluYyBkcm9wIGZvcmdpbmdzIzMxLjEzLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE4LjAzLjAwI0ZlcnJvdXMgYWxsb3kgZHJvcCBmb3JnaW5ncyMzMS4xMy4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOC4wNC4wMCNUaW4gZHJvcCBmb3JnaW5ncyMzMS4xMy4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOC4wNS4wMCNMZWFkIGRyb3AgZm9yZ2luZ3MjMzEuMTMuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTguMDYuMDAjU3RlZWwgZHJvcCBmb3JnaW5ncyMzMS4xMy4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOC4wNy4wMCNQcmVjaW91cyBtZXRhbCBkcm9wIGZvcmdpbmdzIzMxLjEzLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE4LjA4LjAwI1N0YWlubGVzcyBzdGVlbCBkcm9wIGZvcmdpbmdzIzMxLjEzLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE4LjA5LjAwI0lyb24gZHJvcCBmb3JnaW5ncyMzMS4xMy4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOC4xMC4wMCNBbHVtaW51bSBkcm9wIGZvcmdpbmdzIzMxLjEzLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE4LjExLjAwI01hZ25lc2l1bSBkcm9wIGZvcmdpbmdzIzMxLjEzLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE4LjEyLjAwI1RpdGFuaXVtIGRyb3AgZm9yZ2luZ3MjMzEuMTMuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTguMTMuMDAjQmVyeWxsaXVtIGRyb3AgZm9yZ2luZ3MjMzEuMTMuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTguMTQuMDAjQ29wcGVyIGRyb3AgZm9yZ2luZ3MjMzEuMTMuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTguMTUuMDAjQnJhc3MgZHJvcCBmb3JnaW5ncyMzMS4xMy4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOC4xNi4wMCNCcm9uemUgZHJvcCBmb3JnaW5ncyMzMS4xMy4xOC4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOC4xNy4wMCNDb2xkIHN0ZWVsIGRyb3AgZm9yZ2luZ3MjMzEuMTMuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTguMTguMDAjU2VtaSBmaW5pc2hlZCBkcm9wIGZvcmdpbmdzIzMxLjEzLjE4LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE5LjAwLjAwI1JvbGxlZCByaW5nIGZvcmdpbmdzIzMxLjEzLjAwLjAwLjAwCi11bnNwc2M3IzMxLjEzLjE5LjAxLjAwI0FsdW1pbnVtIHJvbGxlZCByaW5nIGZvcmdpbmdzIzMxLjEzLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE5LjAyLjAwI0JlcnlsbGl1bSByb2xsZWQgcmluZyBmb3JnaW5ncyMzMS4xMy4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOS4wMy4wMCNCcmFzcyByb2xsZWQgcmluZyBmb3JnaW5ncyMzMS4xMy4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOS4wNC4wMCNCcm9uemUgcm9sbGVkIHJpbmcgZm9yZ2luZ3MjMzEuMTMuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTkuMDUuMDAjQ29wcGVyIHJvbGxlZCByaW5nIGZvcmdpbmdzIzMxLjEzLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE5LjA2LjAwI0lyb24gcm9sbGVkIHJpbmcgZm9yZ2luZ3MjMzEuMTMuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTkuMDcuMDAjTGVhZCByb2xsZWQgcmluZyBmb3JnaW5ncyMzMS4xMy4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOS4wOC4wMCNNYWduZXNpdW0gcm9sbGVkIHJpbmcgZm9yZ2luZ3MjMzEuMTMuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTkuMDkuMDAjUHJlY2lvdXMgbWV0YWwgcm9sbGVkIHJpbmcgZm9yZ2luZ3MjMzEuMTMuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTkuMTAuMDAjU3RhaW5sZXNzIHN0ZWVsIHJvbGxlZCByaW5nIGZvcmdpbmdzIzMxLjEzLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE5LjExLjAwI1RpbiByb2xsZWQgcmluZyBmb3JnaW5ncyMzMS4xMy4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOS4xMi4wMCNUaXRhbml1bSByb2xsZWQgcmluZyBmb3JnaW5ncyMzMS4xMy4xOS4wMC4wMAotdW5zcHNjNyMzMS4xMy4xOS4xMy4wMCNaaW5jIHJvbGxlZCByaW5nIGZvcmdpbmdzIzMxLjEzLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE5LjE0LjAwI05vbiBmZXJyb3VzIGFsbG95IHJvbGxlZCByaW5nIGZvcmdpbmdzIzMxLjEzLjE5LjAwLjAwCi11bnNwc2M3IzMxLjEzLjE5LjE1LjAwI0ZlcnJvdXMgYWxsb3kgcm9sbGVkIHJpbmcgZm9yZ2luZ3MjMzEuMTMuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMTkuMTYuMDAjU3RlZWwgcm9sbGVkIHJpbmcgZm9yZ2luZ3MjMzEuMTMuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMjAuMDAuMDAjUG93ZGVyZWQgbWV0YWwgY29tcG9uZW50cyMzMS4xMy4wMC4wMC4wMAotdW5zcHNjNyMzMS4xMy4yMC4wMS4wMCNGZXJyb3VzIHBvd2RlcmVkIG1ldGFsIGNvbXBvbmVudHMjMzEuMTMuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTMuMjAuMDIuMDAjTm9uIGZlcnJvdXMgcG93ZGVyZWQgbWV0YWwgcGFydHMjMzEuMTMuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTQuMDAuMDAuMDAjTW9sZGluZ3MjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTQuMTUuMDAuMDAjSW5qZWN0aW9uIG1vbGRpbmdzIzMxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE0LjE1LjAxLjAwI1BsYXN0aWMgaW5qZWN0aW9uIG1vbGRpbmdzIzMxLjE0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE0LjE1LjAyLjAwI1J1YmJlciBpbmplY3Rpb24gbW9sZGluZ3MjMzEuMTQuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTQuMTUuMDMuMDAjR2xhc3MgaW5qZWN0aW9uIG1vbGRpbmdzIzMxLjE0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE0LjE2LjAwLjAwI1ZhY3V1bSBtb2xkaW5ncyMzMS4xNC4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNC4xNi4wMS4wMCNQbGFzdGljIHZhY3V1bSBtb2xkaW5ncyMzMS4xNC4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNC4xNi4wMi4wMCNSdWJiZXIgdmFjdXVtIG1vbGRpbmdzIzMxLjE0LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE0LjE2LjAzLjAwI0dsYXNzIHZhY3V1bSBtb2xkaW5ncyMzMS4xNC4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNC4xNy4wMC4wMCNCbG93IG1vbGRpbmdzIzMxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE0LjE3LjAxLjAwI1BsYXN0aWMgYmxvdyBtb2xkaW5ncyMzMS4xNC4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNC4xNy4wMi4wMCNSdWJiZXIgYmxvdyBtb2xkaW5ncyMzMS4xNC4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNC4xOC4wMC4wMCNSZWFjdGlvbiBpbmplY3Rpb24gbW9sZGluZ3MgKFJJTSkjMzEuMTQuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTQuMTguMDEuMDAjUGxhc3RpYyByZWFjdGlvbiBpbmplY3Rpb24gbW9sZGluZ3MjMzEuMTQuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTQuMTguMDIuMDAjUnViYmVyIHJlYWN0aW9uIGluamVjdGlvbiBtb2xkaW5ncyMzMS4xNC4xOC4wMC4wMAotdW5zcHNjNyMzMS4xNS4wMC4wMC4wMCNSb3BlIGFuZCBjaGFpbiBhbmQgY2FibGUgYW5kIHdpcmUgYW5kIHN0cmFwIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjE1LjE1LjAwLjAwI1JvcGVzIzMxLjE1LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE1LjE1LjAxLjAwI0NvdHRvbiByb3BlIzMxLjE1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE1LjAyLjAwI1BvbHllc3RlciByb3BlIzMxLjE1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE1LjAzLjAwI1BvbHlwcm9weWxlbmUgcm9wZSMzMS4xNS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNS4xNS4wNC4wMCNOeWxvbiByb3BlIzMxLjE1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE1LjA1LjAwI1dpcmUgcm9wZSMzMS4xNS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNS4xNS4wNi4wMCNIZW1wIHJvcGUjMzEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTUuMDcuMDAjU3RyaW5nIG9yIHR3aW5lIzMxLjE1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE1LjA4LjAwI1Npc2FsIHJvcGUjMzEuMTUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTYuMDAuMDAjQ2hhaW5zIzMxLjE1LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE1LjE2LjAxLjAwI1NhZmV0eSBjaGFpbnMjMzEuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTYuMDIuMDAjU2tpZCBjaGFpbnMjMzEuMTUuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTYuMDMuMDAjUm9sbGVyIGNoYWlucyMzMS4xNS4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNS4xNi4wNC4wMCNQcm9vZiBjb2lsIGNoYWlucyMzMS4xNS4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNS4xNi4wNS4wMCNTYXNoIGNoYWluIzMxLjE1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE2LjA2LjAwI0phY2sgY2hhaW5zIzMxLjE1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE2LjA3LjAwI0NvaWwgY2hhaW5zIzMxLjE1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE2LjA4LjAwI0JhbGwgY2hhaW5zIzMxLjE1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE2LjA5LjAwI0NoYWluIGxpbmtzIzMxLjE1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE3LjAwLjAwI01lY2hhbmljYWwgY2FibGUjMzEuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTcuMDEuMDAjTWVjaGFuaWNhbCBjYWJsZXMjMzEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTcuMDIuMDAjTm9uIGVsZWN0cmljIGNvbnRyb2wgY2FibGVzIzMxLjE1LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE3LjAzLjAwI0xpZnRpbmcgY2FibGVzIzMxLjE1LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE3LjA0LjAwI1RyYWNrIGNhYmxlcyMzMS4xNS4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNS4xNy4wNS4wMCNOb24gZWxlY3RyaWNhbCBzdGVlbCBjYWJsZXMjMzEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTcuMDYuMDAjTm9uIGVsZWN0cmljYWwgY29wcGVyIGNhYmxlcyMzMS4xNS4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNS4xNy4wNy4wMCNOb24gZWxlY3RyaWNhbCBhbHVtaW51bSBjYWJsZXMjMzEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTguMDAuMDAjTWVjaGFuaWNhbCB3aXJlIzMxLjE1LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE1LjE4LjAxLjAwI01lY2hhbmljYWwgd2lyZSMzMS4xNS4xOC4wMC4wMAotdW5zcHNjNyMzMS4xNS4xOC4wMi4wMCNCYXJiZWQgd2lyZSMzMS4xNS4xOC4wMC4wMAotdW5zcHNjNyMzMS4xNS4xOC4wMy4wMCNQaWFubyBzdGVlbCB3aXJlIzMxLjE1LjE4LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE5LjAwLjAwI1N0cmFwcyMzMS4xNS4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNS4xOS4wMS4wMCNNZXRhbCBzdHJhcHMjMzEuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTkuMDIuMDAjTGVhdGhlciBzdHJhcHMjMzEuMTUuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMTkuMDMuMDAjRmliZXIgc3RyYXBzIzMxLjE1LjE5LjAwLjAwCi11bnNwc2M3IzMxLjE1LjE5LjA0LjAwI1BsYXN0aWMgc3RyYXBzIzMxLjE1LjE5LjAwLjAwCi11bnNwc2M3IzMxLjE1LjIwLjAwLjAwI1NlY3VyaXR5IHdpcmUjMzEuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMjAuMDEuMDAjUmF6b3Igd2lyZSMzMS4xNS4yMC4wMC4wMAotdW5zcHNjNyMzMS4xNS4yMC4wMi4wMCNCYXJiZWQgd2lyZSMzMS4xNS4yMC4wMC4wMAotdW5zcHNjNyMzMS4xNS4yMS4wMC4wMCNFbGVjdHJpY2FsIHdpcmUjMzEuMTUuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTUuMjEuMDEuMDAjV2lyZSBhc3NlbWJseSMzMS4xNS4yMS4wMC4wMAotdW5zcHNjNyMzMS4xNi4wMC4wMC4wMCNIYXJkd2FyZSMzMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4wMC4wMCNTY3Jld3MjMzEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTUuMDEuMDAjQ2FwIHNjcmV3cyMzMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4wMi4wMCNBbmNob3Igc2NyZXdzIzMxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE1LjAzLjAwI0RyaXZlIHNjcmV3cyMzMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4wNC4wMCNNYWNoaW5lIHNjcmV3cyMzMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4wNS4wMCNTZXQgc2NyZXdzIzMxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE1LjA2LjAwI1NoZWV0IG1ldGFsIHNjcmV3cyMzMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4wNy4wMCNUYXBwaW5nIHNjcmV3cyMzMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4wOC4wMCNXb29kIHNjcmV3cyMzMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4wOS4wMCNEcnl3YWxsIHNjcmV3cyMzMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4xMC4wMCNDYXB0aXZlIHNjcmV3IzMxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE1LjExLjAwI0xvY2tpbmcgc2NyZXdzIzMxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE1LjEyLjAwI1RocmVhZCByb2xsaW5nIHNjcmV3cyMzMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4xMy4wMCNGbGF0aGVhZCBzY3Jld3MjMzEuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTUuMTQuMDAjV2VsZCBzY3Jld3MjMzEuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTUuMTUuMDAjRmxhdCBoZWFkIHNjcmV3cyMzMS4xNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNS4xNi4wMCNUaHVtYiBzY3Jld3MjMzEuMTYuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTUuMTcuMDAjU2hvdWxkZXIgc2NyZXdzIzMxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE2LjAwLjAwI0JvbHRzIzMxLjE2LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE2LjE2LjAxLjAwI0FuY2hvciBib2x0cyMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNi4wMi4wMCNCbGluZCBib2x0cyMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNi4wMy4wMCNDYXJyaWFnZSBib2x0cyMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNi4wNC4wMCNDbGV2aXMgYm9sdHMjMzEuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTYuMDUuMDAjQ3lsaW5kZXIgYm9sdHMjMzEuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTYuMDYuMDAjRG9vciBib2x0cyMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNi4wNy4wMCNFeHBhbnNpb24gYm9sdHMjMzEuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTYuMDguMDAjTGFnIGJvbHRzIzMxLjE2LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE2LjA5LjAwI1RvZ2dsZSBib2x0cyMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNi4xMC4wMCNFeWUgYm9sdHMjMzEuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTYuMTEuMDAjTG9ja2luZyBib2x0cyMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNi4xMi4wMCNQaW4gb3IgY29sbGFyIGJvbHRzIzMxLjE2LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE2LjEzLjAwI1RlbnNpb24gYm9sdHMjMzEuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTYuMTQuMDAjU3RydWN0dXJhbCBib2x0cyMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNi4xNS4wMCNUb3JxdWUgYm9sdHMjMzEuMTYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTYuMTYuMDAjVSBib2x0cyMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNi4xNy4wMCNXaW5nIGJvbHRzIzMxLjE2LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE2LjE4LjAwI1RocmVhZGVkIHJvZCMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNi4xOS4wMCNTdHVkIGJvbHRzIzMxLjE2LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE2LjIwLjAwI0hleGFnb25hbCBib2x0cyMzMS4xNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4wMC4wMCNOdXRzIzMxLjE2LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjAxLjAwI0FuY2hvciBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjAyLjAwI0JlYXJpbmcgbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4wMy4wMCNCbGluZCBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjA0LjAwI0JhcnJlbCBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjA1LjAwI0NhcCBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjA2LjAwI0NhcHRpdmUgbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4wNy4wMCNDYXN0bGUgbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4wOC4wMCNDaGFubmVsIG51dHMjMzEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTcuMDkuMDAjQ2xhbXBpbmcgbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4xMC4wMCNFeHBhbnNpb24gbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4xMS4wMCNFeWUgbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4xMi4wMCNGbGFuZ2UgbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4xMy4wMCNIb3NlIG51dHMjMzEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTcuMTQuMDAjSW5zZXJ0IG51dHMjMzEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTcuMTUuMDAjU2VsZiBsb2NraW5nIG51dHMjMzEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTcuMTYuMDAjTG9ja251dHMjMzEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTcuMTcuMDAjV2luZyBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjE4LjAwI1RvZ2dsZSBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjE5LjAwI1N3aXZlbCBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjIwLjAwI1N0b3AgbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4yMS4wMCNTcHJpbmcgbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4yMi4wMCNVbmlvbiBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjIzLjAwI051dHBsYXRlIG51dHMjMzEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTcuMjQuMDAjUHJlc3MgbnV0cyMzMS4xNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNi4xNy4yNS4wMCNDbGlwIG51dHMjMzEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTcuMjYuMDAjRG9tZSBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjI3LjAwI0hleGFnb25hbCBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE3LjI4LjAwI0NvdXBsaW5nIG51dHMjMzEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTcuMjkuMDAjS251cmxlZCBudXRzIzMxLjE2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE4LjAwLjAwI1dhc2hlcnMjMzEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTguMDEuMDAjTG9ja2luZyB3YXNoZXJzIzMxLjE2LjE4LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE4LjAyLjAwI0JldmVsIHdhc2hlcnMjMzEuMTYuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTguMDMuMDAjQmluZGluZyB3YXNoZXJzIzMxLjE2LjE4LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE4LjA0LjAwI0N1cnZlZCB3YXNoZXJzIzMxLjE2LjE4LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE4LjA1LjAwI0VsZWN0cmljYWwgaW5zdWxhdGluZyB3YXNoZXJzIzMxLjE2LjE4LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE4LjA2LjAwI0ZpbmlzaGluZyB3YXNoZXJzIzMxLjE2LjE4LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE4LjA3LjAwI0ZsYXQgd2FzaGVycyMzMS4xNi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xNi4xOC4wOC4wMCNPcGVuIHdhc2hlcnMjMzEuMTYuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTguMDkuMDAjUmVkdWNpbmcgd2FzaGVycyMzMS4xNi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xNi4xOC4xMC4wMCNTaGltIHdhc2hlcnMjMzEuMTYuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTguMTEuMDAjU3ByaW5nIHdhc2hlcnMjMzEuMTYuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTguMTIuMDAjU3F1YXJlIHdhc2hlcnMjMzEuMTYuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTguMTMuMDAjU3dpdmVsIHdhc2hlcnMjMzEuMTYuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTguMTQuMDAjVGhydXN0IHdhc2hlcnMjMzEuMTYuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTguMTUuMDAjU2hvdWxkZXIgd2FzaGVycyMzMS4xNi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xNi4xOC4xNi4wMCNTcGFjZXJzIG9yIHN0YW5kb2ZmcyMzMS4xNi4xOC4wMC4wMAotdW5zcHNjNyMzMS4xNi4xOC4xNy4wMCNDb25pY2FsIHdhc2hlcnMjMzEuMTYuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTkuMDAuMDAjU3ByaW5ncyMzMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4xOS4wMS4wMCNIZWxpY2FsIHNwcmluZ3MjMzEuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTkuMDIuMDAjTGVhZiBzcHJpbmdzIzMxLjE2LjE5LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE5LjAzLjAwI1NwaXJhbCBzcHJpbmdzIzMxLjE2LjE5LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE5LjA0LjAwI0NvbXByZXNzaW9uIHNwcmluZ3MjMzEuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTkuMDUuMDAjRGllIHNwcmluZ3MjMzEuMTYuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMTkuMDYuMDAjRGlzayBzcHJpbmdzIzMxLjE2LjE5LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE5LjA3LjAwI0V4dGVuc2lvbiBzcHJpbmdzIzMxLjE2LjE5LjAwLjAwCi11bnNwc2M3IzMxLjE2LjE5LjA4LjAwI1RvcnNpb24gc3ByaW5ncyMzMS4xNi4xOS4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMC4wMC4wMCNOYWlscyMzMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMC4wMS4wMCNCcmFkcyMzMS4xNi4yMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMC4wMi4wMCNDYXAgbmFpbHMjMzEuMTYuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjAuMDMuMDAjRmluaXNoaW5nIG5haWxzIzMxLjE2LjIwLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIwLjA0LjAwI01hc29ucnkgbmFpbHMjMzEuMTYuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjAuMDUuMDAjUm9vZmluZyBuYWlscyMzMS4xNi4yMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMC4wNi4wMCNXaXJlIG5haWxzIzMxLjE2LjIwLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIwLjA3LjAwI1VwaG9sc3RlcnkgbmFpbHMjMzEuMTYuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjAuMDguMDAjRHJpdmUgcGlucyMzMS4xNi4yMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMS4wMC4wMCNBbmNob3JzIzMxLjE2LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIxLjAxLjAwI0NvbmNyZXRlIGFuY2hvcnMjMzEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjEuMDIuMDAjV2VkZ2UgYW5jaG9ycyMzMS4xNi4yMS4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMS4wMy4wMCNXYWxsIGFuY2hvcnMjMzEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjEuMDQuMDAjU2NyZXcgYW5jaG9ycyMzMS4xNi4yMS4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMS4wNS4wMCNSZXNpbiBhbmNob3JzIzMxLjE2LjIxLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIxLjA2LjAwI1BpcGUgYW5jaG9ycyMzMS4xNi4yMS4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMS4wNy4wMCNOYWlsIGV4cGFuc2lvbiBhbmNob3JzIzMxLjE2LjIxLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIxLjA4LjAwI1RpZSBkb3duIGFuY2hvcnMjMzEuMTYuMjEuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjIuMDAuMDAjUml2ZXRzIzMxLjE2LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIyLjAxLjAwI0JsaW5kIHJpdmV0cyMzMS4xNi4yMi4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMi4wMi4wMCNDcm93bmhlYWQgcml2ZXRzIzMxLjE2LjIyLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIyLjAzLjAwI0ZsYXQgaGVhZCByaXZldHMjMzEuMTYuMjIuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjIuMDQuMDAjRnVsbCByaXZldHMjMzEuMTYuMjIuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjIuMDUuMDAjUmF0Y2hldCByaXZldHMjMzEuMTYuMjIuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjIuMDYuMDAjVGlubmVycyByaXZldHMjMzEuMTYuMjIuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjIuMDcuMDAjQ29tcHJlc3Npb24gcml2ZXRzIzMxLjE2LjIyLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIyLjA4LjAwI0Nvb3BlcnMgcml2ZXRzIzMxLjE2LjIyLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIyLjA5LjAwI0J1dHRvbiBoZWFkIHJpdmV0cyMzMS4xNi4yMi4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMy4wMC4wMCNNb3VudGluZyBoYXJkd2FyZSMzMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMy4wMS4wMCNNb3VudGluZyBwcm9maWxlcyMzMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMy4wMy4wMCNNb3VudGluZyBiYXJzIzMxLjE2LjIzLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIzLjA0LjAwI01vdW50aW5nIHN0cmlwcyMzMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMy4wNS4wMCNNb3VudGluZyBjbGlwcyMzMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMy4wNi4wMCNNb3VudGluZyBoYW5nZXJzIzMxLjE2LjIzLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIzLjA3LjAwI01vdW50aW5nIHBsYXRlcyMzMS4xNi4yMy4wMC4wMAotdW5zcHNjNyMzMS4xNi4yMy4wOC4wMCNNb3VudGluZyBwYW5lbHMjMzEuMTYuMjMuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjMuMDkuMDAjTW91bnRpbmcgcmFja3MjMzEuMTYuMjMuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjMuMTAuMDAjTW91bnRpbmcgc3RyYXBzIzMxLjE2LjIzLjAwLjAwCi11bnNwc2M3IzMxLjE2LjIzLjExLjAwI1dhbGwgYnVzaGluZ3MjMzEuMTYuMjMuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjQuMDAuMDAjTWlzY2VsbGFuZW91cyBmYXN0ZW5lcnMjMzEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjQuMDEuMDAjR3JvbW1ldHMjMzEuMTYuMjQuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjQuMDIuMDAjSGFzcHMjMzEuMTYuMjQuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjQuMDMuMDAjSGluZ2VzIzMxLjE2LjI0LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI0LjA0LjAwI0hhcmR3YXJlIHN0YXBsZXMjMzEuMTYuMjQuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjQuMDUuMDAjVHVybmJ1Y2tsZXMjMzEuMTYuMjQuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjQuMDYuMDAjU3RyYXBwaW5nIG9yIGJhbmRpbmcgYnVja2xlcyMzMS4xNi4yNC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yNC4wNy4wMCNMYXRjaCMzMS4xNi4yNC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yNC4wOC4wMCNDb3R0ZXIgcGlucyMzMS4xNi4yNC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yNS4wMC4wMCNCcmFja2V0cyBhbmQgYnJhY2VzIzMxLjE2LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE2LjI1LjAxLjAwI1NoZWxmIGJyYWNrZXRzIzMxLjE2LjI1LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI1LjAyLjAwI0FuZ2xlIGJyYWNrZXRzIzMxLjE2LjI1LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI1LjAzLjAwI0JyYWNlcyMzMS4xNi4yNS4wMC4wMAotdW5zcHNjNyMzMS4xNi4yNS4wNC4wMCNFbGVjdHJpY2FsIGZpeHR1cmUgYnJhY2tldHMjMzEuMTYuMjUuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjUuMDUuMDAjTWFnbmV0aWMgbW91bnRpbmcgYnJhY2tldHMjMzEuMTYuMjUuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjYuMDAuMDAjSG9va3MjMzEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjYuMDEuMDAjU3dpdmVsIGhvb2tzIzMxLjE2LjI2LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI2LjAyLjAwI1NwcmluZyBob29rcyMzMS4xNi4yNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4yNi4wMy4wMCNTIGhvb2tzIzMxLjE2LjI2LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI2LjA0LjAwI1NhZmV0eSBob29rcyMzMS4xNi4yNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4yNi4wNS4wMCNMaWZ0aW5nIGhvb2tzIzMxLjE2LjI2LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI2LjA2LjAwI0ogaG9va3MjMzEuMTYuMjYuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjYuMDcuMDAjR3V5IHdpcmUgaG9va3MjMzEuMTYuMjYuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjYuMDguMDAjR3JhYiBob29rcyMzMS4xNi4yNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4yNi4wOS4wMCNTY3JldyBob29rcyMzMS4xNi4yNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4yNi4xMC4wMCNQZWcgYm9hcmQgaG9va3MjMzEuMTYuMjYuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjYuMTEuMDAjU2xpcCBob29rcyMzMS4xNi4yNi4wMC4wMAotdW5zcHNjNyMzMS4xNi4yNy4wMC4wMCNSb2xsaW5nIGhhcmR3YXJlIzMxLjE2LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE2LjI3LjAxLjAwI0Nhc3RlcnMjMzEuMTYuMjcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjcuMDIuMDAjV2hlZWxzIzMxLjE2LjI3LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI3LjAzLjAwI1NsaWRlcnMjMzEuMTYuMjcuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjguMDAuMDAjTWlzY2VsbGFuZW91cyBoYXJkd2FyZSMzMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yOC4wMS4wMCNIYW5kbGVzIG9yIGtub2JzIzMxLjE2LjI4LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI4LjAyLjAwI0luc2VydHMjMzEuMTYuMjguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjguMDMuMDAjU2hhY2tsZXMjMzEuMTYuMjguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjguMDQuMDAjRG9vciBzdG9wcyMzMS4xNi4yOC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yOC4wNS4wMCNDYWJsZSB0aGltYmxlIzMxLjE2LjI4LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI4LjA2LjAwI1NjcmV3IGNvdmVycyMzMS4xNi4yOC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yOC4wNy4wMCNMZXZlcnMjMzEuMTYuMjguMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjguMDguMDAjUGFuaWMgYmFycyMzMS4xNi4yOC4wMC4wMAotdW5zcHNjNyMzMS4xNi4yOS4wMC4wMCNDbGFtcHMjMzEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMjkuMDEuMDAjRWFyIGNsYW1wcyMzMS4xNi4yOS4wMC4wMAotdW5zcHNjNyMzMS4xNi4yOS4wMi4wMCNTcHJpbmcgY2xhbXBzIzMxLjE2LjI5LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI5LjAzLjAwI1NjcmV3IGNsYW1wcyMzMS4xNi4yOS4wMC4wMAotdW5zcHNjNyMzMS4xNi4yOS4wNC4wMCNXaXJlIHJvcGUgY2xhbXBzIzMxLjE2LjI5LjAwLjAwCi11bnNwc2M3IzMxLjE2LjI5LjA1LjAwI0JlYW0gY2xhbXBzIzMxLjE2LjI5LjAwLjAwCi11bnNwc2M3IzMxLjE2LjMwLjAwLjAwI0NvdXBsaW5ncyMzMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4zMC4wMS4wMCNFbGFzdG9tZXJpYyBjb3VwbGluZ3MjMzEuMTYuMzAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMzAuMDIuMDAjR2VhciBjb3VwbGluZ3MjMzEuMTYuMzAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMzAuMDMuMDAjTWV0YWxsaWMgY291cGxpbmdzIzMxLjE2LjMwLjAwLjAwCi11bnNwc2M3IzMxLjE2LjMwLjA0LjAwI01pbmlhdHVyZSBjb3VwbGluZ3MjMzEuMTYuMzAuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMzEuMDAuMDAjQ29ubmVjdG9ycyMzMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4zMS4wMS4wMCNRdWljayBkaXNjb25uZWN0cyMzMS4xNi4zMS4wMC4wMAotdW5zcHNjNyMzMS4xNi4zMS4wMi4wMCNGZXJydWxlIzMxLjE2LjMxLjAwLjAwCi11bnNwc2M3IzMxLjE2LjMxLjAzLjAwI1RyYWlsZXIgQ29ubmVjdG9yIzMxLjE2LjMxLjAwLjAwCi11bnNwc2M3IzMxLjE2LjMyLjAwLjAwI1JldGFpbmluZyBoYXJkd2FyZSMzMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4zMi4wMS4wMCNTcHJpbmcgcGlucyMzMS4xNi4zMi4wMC4wMAotdW5zcHNjNyMzMS4xNi4zMi4wMi4wMCNSZXRhaW5pbmcgcmluZ3MjMzEuMTYuMzIuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMzIuMDMuMDAjRG93ZWwgcGluIzMxLjE2LjMyLjAwLjAwCi11bnNwc2M3IzMxLjE2LjMyLjA0LjAwI0NvdHRlciBwaW4jMzEuMTYuMzIuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMzIuMDUuMDAjVGFwZXIgcGlucyMzMS4xNi4zMi4wMC4wMAotdW5zcHNjNyMzMS4xNi4zMi4wNi4wMCNHcm9vdmVkIHBpbnMjMzEuMTYuMzIuMDAuMDAKLXVuc3BzYzcjMzEuMTYuMzIuMDcuMDAjU2hhZnQgb3Igd29vZHJ1ZmYga2V5cyMzMS4xNi4zMi4wMC4wMAotdW5zcHNjNyMzMS4xNi4zMi4wOC4wMCNLZXlzdG9jayMzMS4xNi4zMi4wMC4wMAotdW5zcHNjNyMzMS4xNi4zMi4wOS4wMCNCZWFyaW5nIGhvbGRlcnMgb3IgcmV0YWluZXJzIzMxLjE2LjMyLjAwLjAwCi11bnNwc2M3IzMxLjE2LjMyLjEwLjAwI1JldGFpbmluZyBjb2xsYXJzIzMxLjE2LjMyLjAwLjAwCi11bnNwc2M3IzMxLjE2LjMzLjAwLjAwI1NwYWNlciMzMS4xNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNi4zMy4wMS4wMCNTaGltIzMxLjE2LjMzLjAwLjAwCi11bnNwc2M3IzMxLjE3LjAwLjAwLjAwI0JlYXJpbmdzIGFuZCBidXNoaW5ncyBhbmQgd2hlZWxzIGFuZCBnZWFycyMzMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNS4wMC4wMCNCZWFyaW5ncyMzMS4xNy4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNS4wMS4wMCNGbGFuZ2VkIGJlYXJpbmdzIzMxLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE1LjAyLjAwI1JhZGlhbCBiZWFyaW5ncyMzMS4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNS4wMy4wMCNXaGVlbCBiZWFyaW5ncyMzMS4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNS4wNC4wMCNCYWxsIGJlYXJpbmdzIzMxLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE1LjA1LjAwI1JvbGxlciBiZWFyaW5ncyMzMS4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNS4wNi4wMCNMaW5lYXIgYmVhcmluZ3MjMzEuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTUuMDcuMDAjVGhydXN0IGJlYXJpbmdzIzMxLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE1LjA4LjAwI1JvZCBlbmQgYmVhcmluZ3MjMzEuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTUuMDkuMDAjU2xlZXZlIGJlYXJpbmdzIzMxLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE1LjEwLjAwI1NwaGVyaWNhbCBiZWFyaW5ncyMzMS4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNS4xMS4wMCNQaWxsb3cgYmxvY2sgYmVhcmluZ3MjMzEuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTUuMTIuMDAjTmVlZGxlIGJlYXJpbmdzIzMxLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE1LjEzLjAwI0hhbmdlciBiZWFyaW5ncyMzMS4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNS4xNC4wMCNEb29yIGNsb3NlcnMjMzEuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTUuMTUuMDAjUGxhaW4gYmVhcmluZ3MjMzEuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTUuMTYuMDAjVGFwZXJlZCBiZWFyaW5ncyMzMS4xNy4xNS4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNS4xNy4wMCNOZWVkbGUgYmVhcmluZ3MjMzEuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTUuMTguMDAjQmVhcmluZyBDYWdlIzMxLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE1LjE5LjAwI0JlYXJpbmcgYmxvY2tzIG9yIGhvdXNpbmdzIzMxLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE1LjIwLjAwI0JlYXJpbmcgam91cm5hbHMjMzEuMTcuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTUuMjEuMDAjQmVhcmluZyByb2xsZXJzIG9yIGJhbGxzIzMxLjE3LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE2LjAwLjAwI0J1c2hpbmdzIzMxLjE3LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE3LjE2LjAxLjAwI1RyYW5zZm9ybWVyIGJ1c2hpbmdzIzMxLjE3LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE2LjAyLjAwI1dhbGwgYnVzaGluZ3MjMzEuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTYuMDMuMDAjRHJpbGwgYnVzaGluZ3MjMzEuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTYuMDQuMDAjUGlsb3QgYnVzaGluZ3MjMzEuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTYuMDUuMDAjU2hhZnQgYnVzaGluZ3MjMzEuMTcuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTcuMDAuMDAjR2VhcnMjMzEuMTcuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTcuMDEuMDAjR2VhciBib3hlcyMzMS4xNy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNy4wMi4wMCNSYWNrIG9yIHBpbmlvbiBnZWFycyMzMS4xNy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNy4wMy4wMCNEaWZmZXJlbnRpYWwgZ2VhcnMjMzEuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTcuMDQuMDAjRnJpY3Rpb24gZ2VhcnMjMzEuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTcuMDUuMDAjSGVsaWNhbCBnZWFycyMzMS4xNy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNy4wNi4wMCNDb25pY2FsIGdlYXJzIzMxLjE3LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE3LjA3LjAwI1NwdXIgZ2VhcnMjMzEuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTcuMDguMDAjQmV2ZWwgZ2VhcnMjMzEuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTcuMDkuMDAjUmFjayBnZWFycyMzMS4xNy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNy4xMC4wMCNQaW5pb24gZ2VhcnMjMzEuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTcuMTEuMDAjUmluZyBnZWFycyMzMS4xNy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNy4xNy4xMi4wMCNXb3JtIGdlYXJzIzMxLjE3LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE3LjEzLjAwI1NpZGUgR2VhcnMjMzEuMTcuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTcuMTQuMDAjSGVsaWNhbCBnZWFycyMzMS4xNy4xNy4wMC4wMAotdW5zcHNjNyMzMS4xNy4xOC4wMC4wMCNJbmR1c3RyaWFsIHdoZWVscyMzMS4xNy4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNy4xOC4wMS4wMCNDb2cgd2hlZWxzIzMxLjE3LjE4LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE4LjAyLjAwI0ltcGVsbGVyIHdoZWVscyMzMS4xNy4xOC4wMC4wMAotdW5zcHNjNyMzMS4xNy4xOC4wMy4wMCNGbHl3aGVlbHMjMzEuMTcuMTguMDAuMDAKLXVuc3BzYzcjMzEuMTcuMTguMDQuMDAjU2hlYXZlcyMzMS4xNy4xOC4wMC4wMAotdW5zcHNjNyMzMS4xNy4xOC4wNS4wMCNXaGVlbCBicnVzaGVzIzMxLjE3LjE4LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE5LjAwLjAwI1Nwcm9ja2V0cyMzMS4xNy4wMC4wMC4wMAotdW5zcHNjNyMzMS4xNy4xOS4wMS4wMCNSb2xsZXIgY2hhaW4gc3Byb2NrZXRzIzMxLjE3LjE5LjAwLjAwCi11bnNwc2M3IzMxLjE3LjE5LjAyLjAwI1NwbGl0IHNwcm9ja2V0cyMzMS4xNy4xOS4wMC4wMAotdW5zcHNjNyMzMS4xOC4wMC4wMC4wMCNHYXNrZXRzIGFuZCBzZWFscyMzMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4xOC4xNS4wMC4wMCNHYXNrZXRzIzMxLjE4LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE4LjE1LjAxLjAwI1BsYXN0aWMgZ2Fza2V0cyMzMS4xOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xOC4xNS4wMi4wMCNSdWJiZXIgZ2Fza2V0cyMzMS4xOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xOC4xNS4wMy4wMCNNZXRhbCBnYXNrZXRzIzMxLjE4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE4LjE1LjA0LjAwI1RleHRpbGUgZ2Fza2V0cyMzMS4xOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4xOC4xNS4wNS4wMCNDb3JrIGdhc2tldHMjMzEuMTguMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTguMTUuMDYuMDAjTyByaW5nIGdhc2tldHMjMzEuMTguMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTguMTUuMDcuMDAjRWxlY3Ryb21hZ25ldGljIGludGVyZmVyZW5jZSAoRU1JKSBnYXNrZXRzIzMxLjE4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE4LjE1LjA4LjAwI0JvbHRlZCBnYXNrZXRzIzMxLjE4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE4LjE1LjA5LjAwI0dhc2tldCBraXRzIzMxLjE4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE4LjE1LjEwLjAwI1NpbGljb25lIGdhc2tldHMjMzEuMTguMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTguMTUuMTEuMDAjTGlxdWlkIGdhc2tldHMjMzEuMTguMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTguMTYuMDAuMDAjU2VhbHMjMzEuMTguMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTguMTYuMDEuMDAjUGxhc3RpYyBzZWFscyMzMS4xOC4xNi4wMC4wMAotdW5zcHNjNyMzMS4xOC4xNi4wMi4wMCNSdWJiZXIgc2VhbHMjMzEuMTguMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTguMTYuMDMuMDAjTWV0YWxsaWMgc2VhbHMjMzEuMTguMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTguMTYuMDQuMDAjU2VhbCBtZWNoYW5pY2FsIzMxLjE4LjE2LjAwLjAwCi11bnNwc2M3IzMxLjE4LjE3LjAwLjAwI1BhY2tpbmdzIGFuZCBnbGFuZHMjMzEuMTguMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTguMTcuMDEuMDAjUGFja2luZ3MjMzEuMTguMTcuMDAuMDAKLXVuc3BzYzcjMzEuMTguMTcuMDIuMDAjR2xhbmRzIzMxLjE4LjE3LjAwLjAwCi11bnNwc2M3IzMxLjE5LjAwLjAwLjAwI0dyaW5kaW5nIGFuZCBwb2xpc2hpbmcgYW5kIHNtb290aGluZyBtYXRlcmlhbHMjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTUuMDAuMDAjQWJyYXNpdmVzIGFuZCBhYnJhc2l2ZSBtZWRpYSMzMS4xOS4wMC4wMC4wMAotdW5zcHNjNyMzMS4xOS4xNS4wMS4wMCNBYnJhc2l2ZSBwYXBlcnMjMzEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTUuMDIuMDAjQnVmZnMjMzEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTUuMDMuMDAjQWJyYXNpdmUgd2hlZWxzIzMxLjE5LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE5LjE1LjA0LjAwI0FicmFzaXZlIGNsb3RoIzMxLjE5LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE5LjE1LjA1LjAwI0FicmFzaXZlIHBhZHMjMzEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTUuMDYuMDAjQWJyYXNpdmUgZGlzY3MjMzEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTUuMDcuMDAjQWJyYXNpdmUgYmVsdHMjMzEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTUuMDguMDAjQm9ydCMzMS4xOS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xOS4xNS4wOS4wMCNBYnJhc2l2ZSBwb2xpc2hlcnMjMzEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTUuMTAuMDAjQWJyYXNpdmUgc3RvbmVzIzMxLjE5LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE5LjE1LjExLjAwI1N0ZWVsIHdvb2wjMzEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTUuMTIuMDAjU2hvdCBibGFzdCMzMS4xOS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xOS4xNS4xMy4wMCNHbGFzcyBiZWFkIzMxLjE5LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE5LjE1LjE0LjAwI1R1bWJsZSBtZWRpYSMzMS4xOS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xOS4xNS4xNS4wMCNBYnJhc2l2ZSBtZXNoIzMxLjE5LjE1LjAwLjAwCi11bnNwc2M3IzMxLjE5LjE1LjE2LjAwI0FicmFzaXZlIGNhcnRyaWRnZSByb2xscyMzMS4xOS4xNS4wMC4wMAotdW5zcHNjNyMzMS4xOS4xNS4xNy4wMCNFbWVyeSBib2FyZHMjMzEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTYuMDAuMDAjQWJyYXNpdmUgd2hlZWxzIzMxLjE5LjAwLjAwLjAwCi11bnNwc2M3IzMxLjE5LjE2LjAxLjAwI0FicmFzaXZlIGN1YmljIGJvcm96b24gbml0cmF0ZSB3aGVlbHMjMzEuMTkuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTYuMDIuMDAjQWJyYXNpdmUgZGlhbW9uZCB3aGVlbHMjMzEuMTkuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMTkuMTYuMDMuMDAjVHVuZ3N0ZW4gY2FyYmlkZSBhYnJhc2l2ZSB3aGVlbHMjMzEuMTkuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMDAuMDAuMDAjQWRoZXNpdmVzIGFuZCBzZWFsYW50cyMzMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNS4wMC4wMCNUYXBlIzMxLjIwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjIwLjE1LjAxLjAwI0R1Y3QgdGFwZSMzMS4yMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNS4wMi4wMCNFbGVjdHJpY2FsIGluc3VsYXRpbmcgdGFwZSMzMS4yMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNS4wMy4wMCNNYXNraW5nIHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMDQuMDAjQ2FycGV0IHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMDUuMDAjRG91YmxlIHNpZGVkIHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMDYuMDAjQmlzbWFsZW1pZGUgdGFwZSMzMS4yMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNS4wNy4wMCNGaWJlcmdsYXNzIHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMDguMDAjR3JhcGhpdGUgdGFwZSMzMS4yMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNS4wOS4wMCNOeWxvbiB0YXBlIzMxLjIwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE1LjEwLjAwI1Jlc2luIGltcHJlZ25hdGVkIHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMTEuMDAjV2lyZSBtZXNoIHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMTIuMDAjVHJhbnNwYXJlbnQgdGFwZSMzMS4yMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNS4xMy4wMCNOb24gc2tpZCBzYWZldHkgdGFwZXMjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMTQuMDAjUG9seXRldHJhZmx1b3JvZXRoeWxlbmUgKFBURkUpIHRocmVhZCBzZWFsaW5nIHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMTUuMDAjUGFwZXIgdGFwZXMjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMTYuMDAjUmVmbGVjdGl2ZSB0YXBlIzMxLjIwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE1LjE3LjAwI1BhY2thZ2luZyB0YXBlIzMxLjIwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE1LjE4LjAwI0VsZWN0cmljYWxseSBjb25kdWN0aXZlIHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMTkuMDAjUGlwZSBvciBob3NlIHJlcGFpciB0YXBlIzMxLjIwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE1LjIwLjAwI0Fpc2xlIG1hcmtpbmcgdGFwZSMzMS4yMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNS4yMS4wMCNGb2lsIHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMjIuMDAjQWRoZXNpdmUgdHJhbnNmZXIgdGFwZSMzMS4yMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNS4yMy4wMCNDbG90aCB0YXBlIzMxLjIwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE1LjI0LjAwI0NvbG9yIGNvZGluZyB0YXBlIzMxLjIwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE1LjI1LjAwI1ZpbnlsIHRhcGUjMzEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTUuMjYuMDAjTWFnbmV0aWMgdGFwZSMzMS4yMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNi4wMC4wMCNPdGhlciBhZGhlc2l2ZXMgYW5kIHNlYWxhbnRzIzMxLjIwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjIwLjE2LjAxLjAwI0NoZW1pY2FsIGFkaGVzaXZlcyMzMS4yMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNi4wMi4wMCNQYXN0ZXMjMzEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTYuMDMuMDAjR3VtcyMzMS4yMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNi4wNC4wMCNSdWJiZXIgY2VtZW50cyMzMS4yMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNi4wNS4wMCNQdXR0aWVzIzMxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE2LjA2LjAwI0NhdWxrcyMzMS4yMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNi4wNy4wMCNFcG94eSBib25kIzMxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE2LjA4LjAwI0ZvYW0gYWRoZXNpdmVzIzMxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE2LjA5LjAwI0hvdCBtZWx0IGFkaGVzaXZlcyMzMS4yMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNi4xMC4wMCNHbHVlcyMzMS4yMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNi4xMS4wMCNGaWxtIGFkaGVzaXZlcyMzMS4yMC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMC4xNi4xMi4wMCNUaHJlYWQgc2VhbGFudHMjMzEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjAuMTYuMTMuMDAjUmUgdXNhYmxlIGFkaGVzaXZlIzMxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzMxLjIwLjE2LjE0LjAwI1NlYWxpbmcgd2F4ZXMjMzEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMDAuMDAuMDAjUGFpbnRzIGFuZCBwcmltZXJzIGFuZCBmaW5pc2hlcyMzMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNS4wMC4wMCNQYWludHMgYW5kIHByaW1lcnMjMzEuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTUuMDEuMDAjRW5hbWVsIHBhaW50cyMzMS4yMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNS4wMi4wMCNXYXRlciBiYXNlZCBwYWludHMjMzEuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTUuMDMuMDAjUGlnbWVudCBwYWludHMjMzEuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTUuMDQuMDAjQ29hdGluZyBwYWludHMjMzEuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTUuMDUuMDAjT2lsIGJhc2VkIHBhaW50cyMzMS4yMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNS4wNi4wMCNMYXRleCBwYWludHMjMzEuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTUuMDcuMDAjU3ByYXkgcGFpbnRzIzMxLjIxLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE1LjA4LjAwI0FjcnlsaWMgcGFpbnRzIzMxLjIxLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE1LjA5LjAwI0VuYW1lbCBwcmltZXJzIzMxLjIxLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE1LjEwLjAwI1BvbHl1cmV0aGFuZSBwcmltZXJzIzMxLjIxLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE1LjExLjAwI1VyZXRoYW5lIHByaW1lcnMjMzEuMjEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTUuMTIuMDAjTGF0ZXggcHJpbWVycyMzMS4yMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNi4wMC4wMCNQYWludCBhZGRpdGl2ZXMjMzEuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTYuMDEuMDAjQ2FsY2ltaW5lcyMzMS4yMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNi4wMi4wMCNUZXh0dXJpbmcgbWF0ZXJpYWxzIzMxLjIxLjE2LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE2LjAzLjAwI1BhaW50IGRyaWVycyMzMS4yMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNi4wNC4wMCNQYWludCBleHRlbmRlcnMjMzEuMjEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTYuMDUuMDAjQW50aSBzbGlwIGFnZW50cyMzMS4yMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNi4wNi4wMCNMZXZlbGluZyBhZ2VudHMjMzEuMjEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTYuMDcuMDAjQW50aSBmb2FtaW5nIGFnZW50cyMzMS4yMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNy4wMC4wMCNNaXNjZWxsYW5lb3VzIGZpbmlzaGVzIzMxLjIxLjAwLjAwLjAwCi11bnNwc2M3IzMxLjIxLjE3LjAxLjAwI0dsYXplcyMzMS4yMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNy4wMi4wMCNMdXN0ZXJzIzMxLjIxLjE3LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE3LjAzLjAwI0xhY3F1ZXJzIzMxLjIxLjE3LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE3LjA0LjAwI1NlYWxlcnMjMzEuMjEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTcuMDUuMDAjU2hlbGxhY3MjMzEuMjEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTcuMDYuMDAjU3RhaW5zIzMxLjIxLjE3LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE3LjA3LjAwI1Zhcm5pc2hlcyMzMS4yMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4yMS4xNy4wOC4wMCNQb3dkZXIgY29hdCMzMS4yMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOC4wMC4wMCNQYWludCBzb2x2ZW50cyBhbmQgdGhpbm5lcnMjMzEuMjEuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTguMDEuMDAjUGFpbnQgb3IgdmFybmlzaCByZW1vdmVycyMzMS4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOC4wMi4wMCNQYWludCBvciB2YXJuaXNoIHN0cmlwcGVycyMzMS4yMS4xOC4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOC4wMy4wMCNQYWludCBvciB2YXJuaXNoIHRoaW5uZXJzIzMxLjIxLjE4LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE5LjAwLjAwI1BhaW50IGFwcGxpY2F0b3JzIGFuZCBwYWludGluZyBhY2Nlc3NvcmllcyMzMS4yMS4wMC4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOS4wMS4wMCNEcm9wIGNsb3RocyMzMS4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOS4wMi4wMCNFZGdpbmcgdG9vbHMjMzEuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTkuMDMuMDAjTWFza2luZyBlcXVpcG1lbnQjMzEuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTkuMDQuMDAjUGFpbnQgYnJ1c2hlcyMzMS4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOS4wNS4wMCNQYWludCBtaXhlcnMjMzEuMjEuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMjEuMTkuMDYuMDAjUGFpbnQgcm9sbGVycyMzMS4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOS4wOC4wMCNQYWludCBzcHJheWVycyMzMS4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOS4wOS4wMCNQYWludCB0cmF5cyMzMS4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOS4xMC4wMCNQYWludCBtaXR0cyMzMS4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOS4xMi4wMCNUZWxlc2NvcGluZyBwb2xlcyMzMS4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMS4yMS4xOS4xMy4wMCNQYWludCBub3p6bGVzIzMxLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE5LjE0LjAwI0FpciBicnVzaGVzIzMxLjIxLjE5LjAwLjAwCi11bnNwc2M3IzMxLjIxLjE5LjE1LjAwI1BhaW50IHN0cmFpbmVycyMzMS4yMS4xOS4wMC4wMAotdW5zcHNjNyMzMS4yMi4wMC4wMC4wMCNEeWVpbmcgYW5kIHRhbm5pbmcgZXh0cmFjdHMjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjIuMTUuMDAuMDAjRHllaW5nIHByb2R1Y3RzIzMxLjIyLjAwLjAwLjAwCi11bnNwc2M3IzMxLjIyLjE1LjAxLjAwI0lub3JnYW5pYyBkeWVzIzMxLjIyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIyLjE1LjAyLjAwI09yZ2FuaWMgZHllcyBvZiBhbmltYWwgb3JpZ2luIzMxLjIyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIyLjE1LjAzLjAwI09yZ2FuaWMgZHllcyBvZiB2ZWdldGFibGUgb3JpZ2luIzMxLjIyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjIyLjE2LjAwLjAwI1Rhbm5pbmcgcHJvZHVjdHMjMzEuMjIuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjIuMTYuMDEuMDAjSW5vcmdhbmljIHRhbm5pbmcgZXh0cmFjdHMjMzEuMjIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjIuMTYuMDIuMDAjT3JnYW5pYyB0YW5uaW5nIGV4dHJhY3RzIG9mIGFuaW1hbCBvcmlnaW4jMzEuMjIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjIuMTYuMDMuMDAjT3JnYW5pYyB0YW5uaW5nIGV4dHJhY3RzIG9mIHZlZ2V0YWJsZSBvcmlnaW4jMzEuMjIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMDAuMDAuMDAjTWFjaGluZWQgcmF3IHN0b2NrIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjIzLjExLjAwLjAwI01hY2hpbmVkIGJhciBzdG9jayMzMS4yMy4wMC4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMS4wMS4wMCNBbHVtaW51bSBtYWNoaW5lZCBiYXIgc3RvY2sjMzEuMjMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTEuMDIuMDAjQmVyeWxsaXVtIG1hY2hpbmVkIGJhciBzdG9jayMzMS4yMy4xMS4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMS4wMy4wMCNCcmFzcyBtYWNoaW5lZCBiYXIgc3RvY2sjMzEuMjMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTEuMDQuMDAjQnJvbnplIG1hY2hpbmVkIGJhciBzdG9jayMzMS4yMy4xMS4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMS4wNS4wMCNDb3BwZXIgbWFjaGluZWQgYmFyIHN0b2NrIzMxLjIzLjExLjAwLjAwCi11bnNwc2M3IzMxLjIzLjExLjA2LjAwI0lyb24gbWFjaGluZWQgYmFyIHN0b2NrIzMxLjIzLjExLjAwLjAwCi11bnNwc2M3IzMxLjIzLjExLjA3LjAwI0xlYWQgbWFjaGluZWQgYmFyIHN0b2NrIzMxLjIzLjExLjAwLjAwCi11bnNwc2M3IzMxLjIzLjExLjA4LjAwI01hZ25lc2l1bSBtYWNoaW5lZCBiYXIgc3RvY2sjMzEuMjMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTEuMDkuMDAjUHJlY2lvdXMgbWV0YWwgbWFjaGluZWQgYmFyIHN0b2NrIzMxLjIzLjExLjAwLjAwCi11bnNwc2M3IzMxLjIzLjExLjEwLjAwI1N0YWlubGVzcyBzdGVlbCBtYWNoaW5lZCBiYXIgc3RvY2sjMzEuMjMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTEuMTEuMDAjVGluIG1hY2hpbmVkIGJhciBzdG9jayMzMS4yMy4xMS4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMS4xMi4wMCNUaXRhbml1bSBtYWNoaW5lZCBiYXIgc3RvY2sjMzEuMjMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTEuMTMuMDAjWmluYyBtYWNoaW5lZCBiYXIgc3RvY2sjMzEuMjMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTEuMTQuMDAjTm9uIGZlcnJvdXMgYWxsb3kgbWFjaGluZWQgYmFyIHN0b2NrIzMxLjIzLjExLjAwLjAwCi11bnNwc2M3IzMxLjIzLjExLjE1LjAwI0ZlcnJvdXMgYWxsb3kgbWFjaGluZWQgYmFyIHN0b2NrIzMxLjIzLjExLjAwLjAwCi11bnNwc2M3IzMxLjIzLjExLjE2LjAwI1N0ZWVsIG1hY2hpbmVkIGJhciBzdG9jayMzMS4yMy4xMS4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMS4xNy4wMCNDb21wb3NpdGUgbWFjaGluZWQgYmFyIHN0b2NrIzMxLjIzLjExLjAwLjAwCi11bnNwc2M3IzMxLjIzLjExLjE4LjAwI05pY2tlbCBhbGxveSBtYWNoaW5lZCBiYXIgc3RvY2sjMzEuMjMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTEuMTkuMDAjTm9uIG1ldGFsbGljIG1hY2hpbmVkIGJhciBzdG9jayMzMS4yMy4xMS4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMi4wMC4wMCNNYWNoaW5lZCBwbGF0ZSBzdG9jayMzMS4yMy4wMC4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMi4wMS4wMCNBbHVtaW51bSBtYWNoaW5lZCBwbGF0ZSBzdG9jayMzMS4yMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMi4wMi4wMCNCZXJ5bGxpdW0gbWFjaGluZWQgcGxhdGUgc3RvY2sjMzEuMjMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTIuMDMuMDAjQnJhc3MgbWFjaGluZWQgcGxhdGUgc3RvY2sjMzEuMjMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTIuMDQuMDAjQnJvbnplIG1hY2hpbmVkIHBsYXRlIHN0b2NrIzMxLjIzLjEyLjAwLjAwCi11bnNwc2M3IzMxLjIzLjEyLjA1LjAwI0NvcHBlciBtYWNoaW5lZCBwbGF0ZSBzdG9jayMzMS4yMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMi4wNi4wMCNJcm9uIG1hY2hpbmVkIHBsYXRlIHN0b2NrIzMxLjIzLjEyLjAwLjAwCi11bnNwc2M3IzMxLjIzLjEyLjA3LjAwI0xlYWQgbWFjaGluZWQgcGxhdGUgc3RvY2sjMzEuMjMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTIuMDguMDAjTWFnbmVzaXVtIG1hY2hpbmVkIHBsYXRlIHN0b2NrIzMxLjIzLjEyLjAwLjAwCi11bnNwc2M3IzMxLjIzLjEyLjA5LjAwI1ByZWNpb3VzIG1ldGFsIG1hY2hpbmVkIHBsYXRlIHN0b2NrIzMxLjIzLjEyLjAwLjAwCi11bnNwc2M3IzMxLjIzLjEyLjEwLjAwI1N0YWlubGVzcyBzdGVlbCBtYWNoaW5lZCBwbGF0ZSBzdG9jayMzMS4yMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMi4xMS4wMCNUaW4gbWFjaGluZWQgcGxhdGUgc3RvY2sjMzEuMjMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTIuMTIuMDAjVGl0YW5pdW0gbWFjaGluZWQgcGxhdGUgc3RvY2sjMzEuMjMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTIuMTMuMDAjWmluYyBtYWNoaW5lZCBwbGF0ZSBzdG9jayMzMS4yMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMi4xNC4wMCNOb24gZmVycm91cyBhbGxveSBtYWNoaW5lZCBwbGF0ZSBzdG9jayMzMS4yMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMi4xNS4wMCNGZXJyb3VzIGFsbG95IG1hY2hpbmVkIHBsYXRlIHN0b2NrIzMxLjIzLjEyLjAwLjAwCi11bnNwc2M3IzMxLjIzLjEyLjE2LjAwI1N0ZWVsIG1hY2hpbmVkIHBsYXRlIHN0b2NrIzMxLjIzLjEyLjAwLjAwCi11bnNwc2M3IzMxLjIzLjEyLjE3LjAwI0NvbXBvc2l0ZSBtYWNoaW5lZCBwbGF0ZSBzdG9jayMzMS4yMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMi4xOC4wMCNOaWNrZWwgYWxsb3kgbWFjaGluZWQgcGxhdGUgc3RvY2sjMzEuMjMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTIuMTkuMDAjTm9uIG1ldGFsbGljIG1hY2hpbmVkIHBsYXRlIHN0b2NrIzMxLjIzLjEyLjAwLjAwCi11bnNwc2M3IzMxLjIzLjEzLjAwLjAwI1NoaW0gc3RvY2sjMzEuMjMuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTMuMDEuMDAjQnJhc3Mgc2hpbSBzdG9jayMzMS4yMy4xMy4wMC4wMAotdW5zcHNjNyMzMS4yMy4xMy4wMi4wMCNTdGVlbCBzaGltIHN0b2NrIzMxLjIzLjEzLjAwLjAwCi11bnNwc2M3IzMxLjIzLjEzLjAzLjAwI1N0YWlubGVzcyBzdGVlbCBzaGltIHN0b2NrIzMxLjIzLjEzLjAwLjAwCi11bnNwc2M3IzMxLjIzLjEzLjA0LjAwI0FsdW1pbnVtIHNoaW0gc3RvY2sjMzEuMjMuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMjMuMTMuMDUuMDAjQ29wcGVyIHNoaW0gc3RvY2sjMzEuMjMuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMDAuMDAuMDAjSW5kdXN0cmlhbCBvcHRpY3MjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTUuMDAuMDAjTGVuc2VzIGFuZCBwcmlzbXMjMzEuMjQuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTUuMDEuMDAjTGVuc2VzIzMxLjI0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE1LjAyLjAwI1ByaXNtcyMzMS4yNC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yNC4xNi4wMC4wMCNPcHRpY2FsIGJsYW5rcyMzMS4yNC4wMC4wMC4wMAotdW5zcHNjNyMzMS4yNC4xNi4wMS4wMCNGaWx0ZXIgYmxhbmtzIzMxLjI0LjE2LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE2LjAyLjAwI0dsYXNzIGRpc2tzIzMxLjI0LjE2LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE2LjAzLjAwI01vbGRlZCBnbGFzcyMzMS4yNC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yNC4xNi4wNC4wMCNQcmlzbSBibGFua3MjMzEuMjQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTYuMDUuMDAjU2lsaWNvbiBibGFua3MjMzEuMjQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTYuMDYuMDAjR2VybWFuaXVtIGJsYW5rcyMzMS4yNC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yNC4xNi4wNy4wMCNSb3VuZCBiYXIgc3RvY2sjMzEuMjQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTYuMDguMDAjU3F1YXJlIGJhciBzdG9jayMzMS4yNC4xNi4wMC4wMAotdW5zcHNjNyMzMS4yNC4xNi4wOS4wMCNXaXRuZXNzIHNhbXBsZSBibGFua3MjMzEuMjQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTYuMTAuMDAjSW5mcmFyZWQgb3B0aWNhbCBtYXRlcmlhbCBibGFua3MjMzEuMjQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTcuMDAuMDAjTWlycm9ycyMzMS4yNC4wMC4wMC4wMAotdW5zcHNjNyMzMS4yNC4xNy4wMS4wMCNEaWFtb25kIHR1cm5lZCBtaXJyb3JzIzMxLjI0LjE3LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE3LjAyLjAwI01ldGFsbGljIG1pcnJvcnMjMzEuMjQuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTcuMDMuMDAjUGFyYWJvbGljIG1pcnJvcnMjMzEuMjQuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTcuMDQuMDAjVW5jb2F0ZWQgbWlycm9ycyMzMS4yNC4xNy4wMC4wMAotdW5zcHNjNyMzMS4yNC4xOC4wMC4wMCNPcHRpY2FsIGZpbHRlcnMjMzEuMjQuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTguMDEuMDAjQnJvYWQgYmFuZCBmaWx0ZXJzIzMxLjI0LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE4LjAyLjAwI0dyYWRpZW50IGZpbHRlcnMjMzEuMjQuMTguMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTguMDMuMDAjSW5mcmFyZWQgZmlsdGVycyMzMS4yNC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yNC4xOC4wNC4wMCNMYXNlciBmaWx0ZXJzIzMxLjI0LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE4LjA1LjAwI05hcnJvdyBiYW5kIGZpbHRlcnMjMzEuMjQuMTguMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTguMDYuMDAjUGVsaWNsZSBmaWx0ZXJzIzMxLjI0LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE4LjA3LjAwI1Zpc3VhbCBmaWx0ZXJzIzMxLjI0LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE5LjAwLjAwI09wdGljYWwgZG9tZXMjMzEuMjQuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMTkuMDEuMDAjU3BlY2lhbHR5IGRvbWVzIzMxLjI0LjE5LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE5LjAyLjAwI0RpYW1vbmQgdHVybmVkIGRvbWVzIzMxLjI0LjE5LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE5LjAzLjAwI01ldGFsbGljIGRvbWVzIzMxLjI0LjE5LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE5LjA0LjAwI01vbGRlZCBnbGFzcyBkb21lcyMzMS4yNC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yNC4xOS4wNS4wMCNNb2xkZWQgcG9seWNhcmJvbmF0ZSBkb21lcyMzMS4yNC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yNC4xOS4wNi4wMCNSZXBsaWNhdGVkIGRvbWVzIzMxLjI0LjE5LjAwLjAwCi11bnNwc2M3IzMxLjI0LjE5LjA3LjAwI1NoYXBlZCBkb21lcyMzMS4yNC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yNC4xOS4wOC4wMCNGcmFuZ2libGUgZG9tZXMjMzEuMjQuMTkuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMjAuMDAuMDAjTGVucyBhbmQgbGFzZXIgd2luZG93cyMzMS4yNC4wMC4wMC4wMAotdW5zcHNjNyMzMS4yNC4yMC4wMS4wMCNFeHRlcm5hbCBsZW5zIG9yIGxhc2VyIHdpbmRvd3MjMzEuMjQuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMjAuMDIuMDAjSW5mcmFyZWQgbGVucyBvciBsYXNlciB3aW5kb3dzIzMxLjI0LjIwLjAwLjAwCi11bnNwc2M3IzMxLjI0LjIwLjAzLjAwI1Zpc3VhbCBsZW5zIG9yIGxhc2VyIHdpbmRvd3MjMzEuMjQuMjAuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMjEuMDAuMDAjT3B0aWNhbCBkZXZpY2UgYWNjZXNzb3JpZXMjMzEuMjQuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMjEuMDEuMDAjUHJpc20gaG9sZGVycyMzMS4yNC4yMS4wMC4wMAotdW5zcHNjNyMzMS4yNC4yMS4wMi4wMCNMZW5zIGhvbGRlcnMjMzEuMjQuMjEuMDAuMDAKLXVuc3BzYzcjMzEuMjQuMjEuMDMuMDAjT3B0aWNhbCBzbGl0cyMzMS4yNC4yMS4wMC4wMAotdW5zcHNjNyMzMS4yNS4wMC4wMC4wMCNQbmV1bWF0aWMgYW5kIGh5ZHJhdWxpYyBhbmQgZWxlY3RyaWMgY29udHJvbCBzeXN0ZW1zIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjI1LjE1LjAwLjAwI0FjdHVhdG9ycyMzMS4yNS4wMC4wMC4wMAotdW5zcHNjNyMzMS4yNS4xNS4wMS4wMCNFbGVjdHJpYyBhY3R1YXRvcnMjMzEuMjUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjUuMTUuMDIuMDAjRWxlY3Ryb25pYyBhY3R1YXRvcnMjMzEuMjUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjUuMTUuMDMuMDAjSHlkcmF1bGljIGFjdHVhdG9ycyMzMS4yNS4xNS4wMC4wMAotdW5zcHNjNyMzMS4yNS4xNS4wNC4wMCNQbmV1bWF0aWMgYWN0dWF0b3JzIzMxLjI1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI1LjE1LjA1LjAwI1ZhbHZlIGFjdHVhdG9ycyMzMS4yNS4xNS4wMC4wMAotdW5zcHNjNyMzMS4yNS4xNS4wNi4wMCNHZWFyIGFjdHVhdG9ycyMzMS4yNS4xNS4wMC4wMAotdW5zcHNjNyMzMS4yNS4xNS4wNy4wMCNSb3RhcnkgYWN0dWF0b3JzIzMxLjI1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI1LjE1LjA4LjAwI1Bob3RvZWxlY3RyaWMgYWN0dWF0b3JzIzMxLjI1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI1LjE1LjA5LjAwI0VsZWN0cm9tYWduZXRpYyBhY3R1YXRvcnMjMzEuMjUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjUuMTUuMTAuMDAjU29sZW5vaWRzIzMxLjI1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI1LjE1LjExLjAwI0xpbmVhciBhY3R1YXRvcnMjMzEuMjUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjYuMDAuMDAuMDAjSG91c2luZ3MgYW5kIGNhYmluZXRzIGFuZCBjYXNpbmdzIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjI2LjE1LjAwLjAwI0hvdXNpbmdzIGFuZCBjYWJpbmV0cyMzMS4yNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4yNi4xNS4wMS4wMCNQbGFzdGljIGhvdXNpbmdzIG9yIGNhYmluZXRzIzMxLjI2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI2LjE1LjAyLjAwI01ldGFsIGhvdXNpbmdzIG9yIGNhYmluZXRzIzMxLjI2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI2LjE1LjAzLjAwI1N0ZWVsIGhvdXNpbmdzIG9yIGNhYmluZXRzIzMxLjI2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI2LjE1LjA0LjAwI0dlYXIgYm94ZXMgb3IgaG91c2luZ3MjMzEuMjYuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjYuMTYuMDAuMDAjU2hlbGxzIGFuZCBjYXNpbmdzIzMxLjI2LjAwLjAwLjAwCi11bnNwc2M3IzMxLjI2LjE2LjAxLjAwI1BsYXN0aWMgc2hlbGxzIG9yIGNhc2luZ3MjMzEuMjYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjYuMTYuMDIuMDAjTWV0YWwgc2hlbGxzIG9yIGNhc2luZ3MjMzEuMjYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjYuMTYuMDMuMDAjU3RlZWwgc2hlbGxzIG9yIGNhc2luZ3MjMzEuMjYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjcuMDAuMDAuMDAjTWFjaGluZSBtYWRlIHBhcnRzIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjI3LjE1LjAwLjAwI0dlbmVyYWwgbWFjaGluZSBtYWRlIHBhcnRzIzMxLjI3LjAwLjAwLjAwCi11bnNwc2M3IzMxLjI3LjE1LjAxLjAwI01ldGFsIGdlbmVyYWwgbWFjaGluZSBtYWRlIHBhcnRzIzMxLjI3LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI3LjE1LjAyLjAwI05vbiBtZXRhbCBnZW5lcmFsIG1hY2hpbmUgbWFkZSBwYXJ0cyMzMS4yNy4xNS4wMC4wMAotdW5zcHNjNyMzMS4yNy4xNi4wMC4wMCNTY3JldyBtYWNoaW5lIG1hZGUgcGFydHMjMzEuMjcuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjcuMTYuMDEuMDAjTWV0YWwgc2NyZXcgbWFjaGluZSBtYWRlIHBhcnRzIzMxLjI3LjE2LjAwLjAwCi11bnNwc2M3IzMxLjI3LjE2LjAyLjAwI05vbiBtZXRhbCBzY3JldyBtYWNoaW5lIG1hZGUgcGFydHMjMzEuMjcuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjguMDAuMDAuMDAjU3RhbXBpbmdzIGFuZCBzaGVldCBjb21wb25lbnRzIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjAwLjAwI1N0YW1wZWQgY29tcG9uZW50cyMzMS4yOC4wMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xNS4wMS4wMCNTdGFtcGVkIG1ldGFsIGNvbXBvbmVudHMjMzEuMjguMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTUuMDIuMDAjQWx1bWludW0gc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjAzLjAwI0ZlcnJvdXMgYWxsb3kgc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjA0LjAwI0lyb24gc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjA1LjAwI05vbiBmZXJyb3VzIGFsbG95IHN0YW1wZWQgY29tcG9uZW50cyMzMS4yOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xNS4wNi4wMCNTdGFpbmxlc3Mgc3RlZWwgc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjA3LjAwI0NhcmJvbiBTdGVlbCBzdGFtcGVkIGNvbXBvbmVudHMjMzEuMjguMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTUuMDguMDAjTWFnbmVzaXVtIHN0YW1wZWQgY29tcG9uZW50cyMzMS4yOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xNS4wOS4wMCNaaW5jIHN0YW1wZWQgY29tcG9uZW50cyMzMS4yOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xNS4xMC4wMCNUaW4gc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjExLjAwI1RpdGFuaXVtIHN0YW1wZWQgY29tcG9uZW50cyMzMS4yOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xNS4xMi4wMCNCZXJ5bGxpdW0gc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjEzLjAwI1ByZWNpb3VzIG1ldGFsIHN0YW1wZWQgY29tcG9uZW50cyMzMS4yOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xNS4xNC4wMCNDb3BwZXIgc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjE1LjAwI0xlYWQgc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjE2LjAwI0JyYXNzIHN0YW1wZWQgY29tcG9uZW50cyMzMS4yOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xNS4xNy4wMCNCcm9uemUgc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjE4LjAwI0NvbXBvc2l0ZSBzdGFtcGVkIGNvbXBvbmVudHMjMzEuMjguMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTUuMTkuMDAjTmlja2VsIGFsbG95IHN0YW1wZWQgY29tcG9uZW50cyMzMS4yOC4xNS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xNS4yMC4wMCNOb24gbWV0YWxsaWMgc3RhbXBlZCBjb21wb25lbnRzIzMxLjI4LjE1LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE1LjIxLjAwI0NvYXRlZCBTdGFtcGluZ3MjMzEuMjguMTUuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTYuMDAuMDAjRm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTYuMDEuMDAjRm9ybWVkIG1ldGFsIGNvbXBvbmVudHMjMzEuMjguMTYuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTcuMDAuMDAjV2VsZGVkIGNvbXBvbmVudHMjMzEuMjguMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTcuMDEuMDAjV2VsZGVkIG1ldGFsIGNvbXBvbmVudHMjMzEuMjguMTcuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTguMDAuMDAjUHVuY2hlZCBjb21wb25lbnRzIzMxLjI4LjAwLjAwLjAwCi11bnNwc2M3IzMxLjI4LjE4LjAxLjAwI0FsdW1pbnVtIHB1bmNoZWQgY29tcG9uZW50cyMzMS4yOC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOC4wMi4wMCNGZXJyb3VzIGFsbG95IHB1bmNoZWQgY29tcG9uZW50cyMzMS4yOC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOC4wMy4wMCNJcm9uIHB1bmNoZWQgY29tcG9uZW50cyMzMS4yOC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOC4wNC4wMCNOb24gZmVycm91cyBhbGxveSBwdW5jaGVkIGNvbXBvbmVudHMjMzEuMjguMTguMDAuMDAKLXVuc3BzYzcjMzEuMjguMTguMDUuMDAjU3RhaW5sZXNzIHN0ZWVsIHB1bmNoZWQgY29tcG9uZW50cyMzMS4yOC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOC4wNi4wMCNDYXJib24gU3RlZWwgcHVuY2hlZCBjb21wb25lbnRzIzMxLjI4LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE4LjA3LjAwI0NvbXBvc2l0ZSBwdW5jaGVkIGNvbXBvbmVudHMjMzEuMjguMTguMDAuMDAKLXVuc3BzYzcjMzEuMjguMTguMDguMDAjTmlja2VsIGFsbG95IHB1bmNoZWQgY29tcG9uZW50cyMzMS4yOC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOC4wOS4wMCNOb24gbWV0YWxsaWMgcHVuY2hlZCBjb21wb25lbnRzIzMxLjI4LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE4LjEwLjAwI1RpdGFuaXVtIHB1bmNoZWQgY29tcG9uZW50cyMzMS4yOC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOC4xMS4wMCNCZXJ5bGxpdW0gcHVuY2hlZCBjb21wb25lbnRzIzMxLjI4LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE4LjEyLjAwI1ByZWNpb3VzIG1ldGFsIHB1bmNoZWQgY29tcG9uZW50cyMzMS4yOC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOC4xMy4wMCNDb3BwZXIgcHVuY2hlZCBjb21wb25lbnRzIzMxLjI4LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE4LjE0LjAwI0xlYWQgcHVuY2hlZCBjb21wb25lbnRzIzMxLjI4LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE4LjE1LjAwI0JyYXNzIHB1bmNoZWQgY29tcG9uZW50cyMzMS4yOC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOC4xNi4wMCNCcm9uemUgcHVuY2hlZCBjb21wb25lbnRzIzMxLjI4LjE4LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE4LjE3LjAwI01hZ25lc2l1bSBwdW5jaGVkIGNvbXBvbmVudHMjMzEuMjguMTguMDAuMDAKLXVuc3BzYzcjMzEuMjguMTguMTguMDAjWmluYyBwdW5jaGVkIGNvbXBvbmVudHMjMzEuMjguMTguMDAuMDAKLXVuc3BzYzcjMzEuMjguMTguMTkuMDAjVGluIHB1bmNoZWQgY29tcG9uZW50cyMzMS4yOC4xOC4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4wMC4wMCNEcmF3IGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjAwLjAwLjAwCi11bnNwc2M3IzMxLjI4LjE5LjAxLjAwI0FsdW1pbnVtIGRyYXcgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMTkuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTkuMDIuMDAjQmVyeWxsaXVtIGRyYXcgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMTkuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTkuMDMuMDAjQnJhc3MgZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4wNC4wMCNCcm9uemUgZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4wNS4wMCNDb21wb3NpdGUgZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4wNi4wMCNDb3BwZXIgZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4wNy4wMCNGZXJyb3VzIGFsbG95IGRyYXcgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMTkuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTkuMDguMDAjSXJvbiBkcmF3IGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjE5LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE5LjA5LjAwI0xlYWQgZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4xMC4wMCNNYWduZXNpdW0gZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4xMS4wMCNOaWNrZWwgYWxsb3kgZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4xMi4wMCNOb24gZmVycm91cyBhbGxveSBkcmF3IGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjE5LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE5LjEzLjAwI05vbiBtZXRhbGxpYyBkcmF3IGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjE5LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE5LjE0LjAwI1ByZWNpb3VzIG1ldGFsIGRyYXcgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMTkuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTkuMTUuMDAjU3RhaW5sZXNzIHN0ZWVsIGRyYXcgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMTkuMDAuMDAKLXVuc3BzYzcjMzEuMjguMTkuMTYuMDAjU3RlZWwgZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4xNy4wMCNUaW4gZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4xOS4xOC4wMCNUaXRhbml1bSBkcmF3IGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjE5LjAwLjAwCi11bnNwc2M3IzMxLjI4LjE5LjE5LjAwI1ppbmMgZHJhdyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4xOS4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMC4wMC4wMCNIeWRybyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4wMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMC4wMS4wMCNBbHVtaW51bSBoeWRybyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMC4wMi4wMCNCZXJ5bGxpdW0gaHlkcm8gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjAuMDMuMDAjQnJhc3MgaHlkcm8gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjAuMDQuMDAjQnJvbnplIGh5ZHJvIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIwLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIwLjA1LjAwI0NvbXBvc2l0ZSBoeWRybyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMC4wNi4wMCNDb3BwZXIgaHlkcm8gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjAuMDcuMDAjRmVycm91cyBhbGxveSBoeWRybyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMC4wOC4wMCNJcm9uIGh5ZHJvIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIwLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIwLjA5LjAwI0xlYWQgaHlkcm8gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjAuMTAuMDAjTWFnbmVzaXVtIGh5ZHJvIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIwLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIwLjExLjAwI05pY2tlbCBhbGxveSBoeWRybyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMC4xMi4wMCNOb24gZmVycm91cyBhbGxveSBoeWRybyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMC4xMy4wMCNOb24gbWV0YWxsaWMgaHlkcm8gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjAuMTQuMDAjUHJlY2lvdXMgbWV0YWwgaHlkcm8gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjAuMTUuMDAjU3RhaW5sZXNzIHN0ZWVsIGh5ZHJvIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIwLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIwLjE2LjAwI1N0ZWVsIGh5ZHJvIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIwLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIwLjE3LjAwI1RpbiBoeWRybyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMC4xOC4wMCNUaXRhbml1bSBoeWRybyBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMC4xOS4wMCNaaW5jIGh5ZHJvIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIwLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjAwLjAwI1NwaW4gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjEuMDEuMDAjQWx1bWludW0gc3BpbiBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMS4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMS4wMi4wMCNCZXJ5bGxpdW0gc3BpbiBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMS4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMS4wMy4wMCNCcmFzcyBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjA0LjAwI0Jyb256ZSBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjA1LjAwI0NvbXBvc2l0ZSBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjA2LjAwI0NvcHBlciBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjA3LjAwI0ZlcnJvdXMgYWxsb3kgc3BpbiBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMS4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMS4wOC4wMCNJcm9uIHNwaW4gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjEuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjEuMDkuMDAjTGVhZCBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjEwLjAwI01hZ25lc2l1bSBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjExLjAwI05pY2tlbCBhbGxveSBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjEyLjAwI05vbiBmZXJyb3VzIGFsbG95IHNwaW4gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjEuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjEuMTMuMDAjTm9uIG1ldGFsbGljIHNwaW4gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjEuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjEuMTQuMDAjUHJlY2lvdXMgbWV0YWwgc3BpbiBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMS4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMS4xNS4wMCNTdGFpbmxlc3Mgc3RlZWwgc3BpbiBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMS4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMS4xNi4wMCNTdGVlbCBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjE3LjAwI1RpbiBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIxLjE4LjAwI1RpdGFuaXVtIHNwaW4gZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjEuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjEuMTkuMDAjWmluYyBzcGluIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIxLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjAwLjAwI1JvbGwgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjIuMDEuMDAjQWx1bWludW0gcm9sbCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMi4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMi4wMi4wMCNCZXJ5bGxpdW0gcm9sbCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMi4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMi4wMy4wMCNCcmFzcyByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjA0LjAwI0Jyb256ZSByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjA1LjAwI0NvbXBvc2l0ZSByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjA2LjAwI0NvcHBlciByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjA3LjAwI0ZlcnJvdXMgYWxsb3kgcm9sbCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMi4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMi4wOC4wMCNJcm9uIHJvbGwgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjIuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjIuMDkuMDAjTGVhZCByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjEwLjAwI01hZ25lc2l1bSByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjExLjAwI05pY2tlbCBhbGxveSByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjEyLjAwI05vbiBmZXJyb3VzIGFsbG95IHJvbGwgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjIuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjIuMTMuMDAjTm9uIG1ldGFsbGljIHJvbGwgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjIuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjIuMTQuMDAjUHJlY2lvdXMgbWV0YWwgcm9sbCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMi4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMi4xNS4wMCNTdGFpbmxlc3Mgc3RlZWwgcm9sbCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMi4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMi4xNi4wMCNTdGVlbCByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjE3LjAwI1RpbiByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIyLjE4LjAwI1RpdGFuaXVtIHJvbGwgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjIuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjIuMTkuMDAjWmluYyByb2xsIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIyLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjAwLjAwI1N0cmV0Y2ggZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjMuMDEuMDAjQWx1bWludW0gc3RyZXRjaCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMy4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMy4wMi4wMCNCZXJ5bGxpdW0gc3RyZXRjaCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMy4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMy4wMy4wMCNCcmFzcyBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjA0LjAwI0Jyb256ZSBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjA1LjAwI0NvbXBvc2l0ZSBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjA2LjAwI0NvcHBlciBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjA3LjAwI0ZlcnJvdXMgYWxsb3kgc3RyZXRjaCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMy4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMy4wOC4wMCNJcm9uIHN0cmV0Y2ggZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjMuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjMuMDkuMDAjTGVhZCBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjEwLjAwI01hZ25lc2l1bSBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjExLjAwI05pY2tlbCBhbGxveSBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjEyLjAwI05vbiBmZXJyb3VzIGFsbG95IHN0cmV0Y2ggZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjMuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjMuMTMuMDAjTm9uIG1ldGFsbGljIHN0cmV0Y2ggZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjMuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjMuMTQuMDAjUHJlY2lvdXMgbWV0YWwgc3RyZXRjaCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMy4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMy4xNS4wMCNTdGFpbmxlc3Mgc3RlZWwgc3RyZXRjaCBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yMy4wMC4wMAotdW5zcHNjNyMzMS4yOC4yMy4xNi4wMCNTdGVlbCBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjE3LjAwI1RpbiBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjIzLjE4LjAwI1RpdGFuaXVtIHN0cmV0Y2ggZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjMuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjMuMTkuMDAjWmluYyBzdHJldGNoIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjIzLjAwLjAwCi11bnNwc2M3IzMxLjI4LjI0LjAwLjAwI0V4cGxvc2l2ZSBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4wMC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yNC4wMS4wMCNBbHVtaW51bSBleHBsb3NpdmUgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjQuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjQuMDIuMDAjQmVyeWxsaXVtIGV4cGxvc2l2ZSBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yNC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yNC4wMy4wMCNCcmFzcyBleHBsb3NpdmUgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjQuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjQuMDQuMDAjQnJvbnplIGV4cGxvc2l2ZSBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yNC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yNC4wNS4wMCNDb21wb3NpdGUgZXhwbG9zaXZlIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjI0LjAwLjAwCi11bnNwc2M3IzMxLjI4LjI0LjA2LjAwI0NvcHBlciBleHBsb3NpdmUgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjQuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjQuMDcuMDAjRmVycm91cyBhbGxveSBleHBsb3NpdmUgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjQuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjQuMDguMDAjSXJvbiBleHBsb3NpdmUgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjQuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjQuMDkuMDAjTGVhZCBleHBsb3NpdmUgZm9ybWVkIGNvbXBvbmVudHMjMzEuMjguMjQuMDAuMDAKLXVuc3BzYzcjMzEuMjguMjQuMTAuMDAjTWFnbmVzaXVtIGV4cGxvc2l2ZSBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yNC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yNC4xMS4wMCNOaWNrZWwgYWxsb3kgZXhwbG9zaXZlIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjI0LjAwLjAwCi11bnNwc2M3IzMxLjI4LjI0LjEyLjAwI05vbiBmZXJyb3VzIGFsbG95IGV4cGxvc2l2ZSBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yNC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yNC4xMy4wMCNOb24gbWV0YWxsaWMgZXhwbG9zaXZlIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjI0LjAwLjAwCi11bnNwc2M3IzMxLjI4LjI0LjE0LjAwI1ByZWNpb3VzIG1ldGFsIGV4cGxvc2l2ZSBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yNC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yNC4xNS4wMCNTdGFpbmxlc3Mgc3RlZWwgZXhwbG9zaXZlIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjI0LjAwLjAwCi11bnNwc2M3IzMxLjI4LjI0LjE2LjAwI1N0ZWVsIGV4cGxvc2l2ZSBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yNC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yNC4xNy4wMCNUaW4gZXhwbG9zaXZlIGZvcm1lZCBjb21wb25lbnRzIzMxLjI4LjI0LjAwLjAwCi11bnNwc2M3IzMxLjI4LjI0LjE4LjAwI1RpdGFuaXVtIGV4cGxvc2l2ZSBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yNC4wMC4wMAotdW5zcHNjNyMzMS4yOC4yNC4xOS4wMCNaaW5jIGV4cGxvc2l2ZSBmb3JtZWQgY29tcG9uZW50cyMzMS4yOC4yNC4wMC4wMAotdW5zcHNjNyMzMS4yOS4wMC4wMC4wMCNNYWNoaW5lZCBleHRydXNpb25zIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjI5LjExLjAwLjAwI01hY2hpbmVkIGh5ZHJvIHN0YXRpYyBleHRydXNpb25zIzMxLjI5LjAwLjAwLjAwCi11bnNwc2M3IzMxLjI5LjExLjAxLjAwI0FsdW1pbnVtIG1hY2hpbmVkIGh5ZHJvIHN0YXRpYyBleHRydXNpb25zIzMxLjI5LjExLjAwLjAwCi11bnNwc2M3IzMxLjI5LjExLjAyLjAwI0JlcnlsbGl1bSBtYWNoaW5lZCBoeWRybyBzdGF0aWMgZXh0cnVzaW9ucyMzMS4yOS4xMS4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMS4wMy4wMCNCcmFzcyBtYWNoaW5lZCBoeWRybyBzdGF0aWMgZXh0cnVzaW9ucyMzMS4yOS4xMS4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMS4wNC4wMCNCcm9uemUgbWFjaGluZWQgaHlkcm8gc3RhdGljIGV4dHJ1c2lvbnMjMzEuMjkuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTEuMDUuMDAjQ29wcGVyIG1hY2hpbmVkIGh5ZHJvIHN0YXRpYyBleHRydXNpb25zIzMxLjI5LjExLjAwLjAwCi11bnNwc2M3IzMxLjI5LjExLjA2LjAwI0ZlcnJvdXMgYWxsb3kgbWFjaGluZWQgaHlkcm8gc3RhdGljIGV4dHJ1c2lvbnMjMzEuMjkuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTEuMDcuMDAjTGVhZCBtYWNoaW5lZCBoeWRybyBzdGF0aWMgZXh0cnVzaW9ucyMzMS4yOS4xMS4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMS4wOC4wMCNNYWduZXNpdW0gbWFjaGluZWQgaHlkcm8gc3RhdGljIGV4dHJ1c2lvbnMjMzEuMjkuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTEuMDkuMDAjTm9uIGZlcnJvdXMgYWxsb3kgbWFjaGluZWQgaHlkcm8gc3RhdGljIGV4dHJ1c2lvbnMjMzEuMjkuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTEuMTAuMDAjUGxhc3RpYyBtYWNoaW5lZCBoeWRybyBzdGF0aWMgZXh0cnVzaW9ucyMzMS4yOS4xMS4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMS4xMS4wMCNQcmVjaW91cyBtZXRhbCBtYWNoaW5lZCBoeWRybyBzdGF0aWMgZXh0cnVzaW9ucyMzMS4yOS4xMS4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMS4xMi4wMCNSdWJiZXIgbWFjaGluZWQgaHlkcm8gc3RhdGljIGV4dHJ1c2lvbnMjMzEuMjkuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTEuMTMuMDAjU3RhaW5sZXNzIHN0ZWVsIG1hY2hpbmVkIGh5ZHJvIHN0YXRpYyBleHRydXNpb25zIzMxLjI5LjExLjAwLjAwCi11bnNwc2M3IzMxLjI5LjExLjE0LjAwI1N0ZWVsIG1hY2hpbmVkIGh5ZHJvIHN0YXRpYyBleHRydXNpb25zIzMxLjI5LjExLjAwLjAwCi11bnNwc2M3IzMxLjI5LjExLjE1LjAwI1RpbiBtYWNoaW5lZCBoeWRybyBzdGF0aWMgZXh0cnVzaW9ucyMzMS4yOS4xMS4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMS4xNi4wMCNUaXRhbml1bSBtYWNoaW5lZCBoeWRybyBzdGF0aWMgZXh0cnVzaW9ucyMzMS4yOS4xMS4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMS4xNy4wMCNaaW5jIG1hY2hpbmVkIGh5ZHJvIHN0YXRpYyBleHRydXNpb25zIzMxLjI5LjExLjAwLjAwCi11bnNwc2M3IzMxLjI5LjExLjE4LjAwI0NvbXBvc2l0ZSBtYWNoaW5lZCBoeWRybyBzdGF0aWMgZXh0cnVzaW9ucyMzMS4yOS4xMS4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMS4xOS4wMCNOaWNrZWwgYWxsb3kgbWFjaGluZWQgaHlkcm8gc3RhdGljIGV4dHJ1c2lvbnMjMzEuMjkuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTEuMjAuMDAjTm9uIG1ldGFsbGljIG1hY2hpbmVkIGh5ZHJvIHN0YXRpYyBleHRydXNpb25zIzMxLjI5LjExLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEyLjAwLjAwI01hY2hpbmVkIGltcGFjdCBleHRydXNpb25zIzMxLjI5LjAwLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEyLjAxLjAwI0FsdW1pbnVtIG1hY2hpbmVkIGltcGFjdCBleHRydXNpb25zIzMxLjI5LjEyLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEyLjAyLjAwI0JlcnlsbGl1bSBtYWNoaW5lZCBpbXBhY3QgZXh0cnVzaW9ucyMzMS4yOS4xMi4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMi4wMy4wMCNCcmFzcyBtYWNoaW5lZCBpbXBhY3QgZXh0cnVzaW9ucyMzMS4yOS4xMi4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMi4wNC4wMCNCcm9uemUgbWFjaGluZWQgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMjkuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTIuMDUuMDAjQ29wcGVyIG1hY2hpbmVkIGltcGFjdCBleHRydXNpb25zIzMxLjI5LjEyLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEyLjA2LjAwI0ZlcnJvdXMgYWxsb3kgbWFjaGluZWQgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMjkuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTIuMDcuMDAjTGVhZCBtYWNoaW5lZCBpbXBhY3QgZXh0cnVzaW9ucyMzMS4yOS4xMi4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMi4wOC4wMCNNYWduZXNpdW0gbWFjaGluZWQgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMjkuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTIuMDkuMDAjTm9uIGZlcnJvdXMgYWxsb3kgbWFjaGluZWQgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMjkuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTIuMTAuMDAjUGxhc3RpYyBtYWNoaW5lZCBpbXBhY3QgZXh0cnVzaW9ucyMzMS4yOS4xMi4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMi4xMS4wMCNQcmVjaW91cyBtZXRhbCBtYWNoaW5lZCBpbXBhY3QgZXh0cnVzaW9ucyMzMS4yOS4xMi4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMi4xMi4wMCNSdWJiZXIgbWFjaGluZWQgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMjkuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTIuMTMuMDAjU3RhaW5sZXNzIHN0ZWVsIG1hY2hpbmVkIGltcGFjdCBleHRydXNpb25zIzMxLjI5LjEyLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEyLjE0LjAwI1N0ZWVsIG1hY2hpbmVkIGltcGFjdCBleHRydXNpb25zIzMxLjI5LjEyLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEyLjE1LjAwI1RpbiBtYWNoaW5lZCBpbXBhY3QgZXh0cnVzaW9ucyMzMS4yOS4xMi4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMi4xNi4wMCNUaXRhbml1bSBtYWNoaW5lZCBpbXBhY3QgZXh0cnVzaW9ucyMzMS4yOS4xMi4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMi4xNy4wMCNaaW5jIG1hY2hpbmVkIGltcGFjdCBleHRydXNpb25zIzMxLjI5LjEyLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEyLjE4LjAwI0NvbXBvc2l0ZSBtYWNoaW5lZCBpbXBhY3QgZXh0cnVzaW9ucyMzMS4yOS4xMi4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMi4xOS4wMCNOaWNrZWwgYWxsb3kgbWFjaGluZWQgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMjkuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTIuMjAuMDAjTm9uIG1ldGFsbGljIG1hY2hpbmVkIGltcGFjdCBleHRydXNpb25zIzMxLjI5LjEyLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjAwLjAwI01hY2hpbmVkIGNvbGQgZXh0cnVzaW9ucyMzMS4yOS4wMC4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMy4wMS4wMCNBbHVtaW51bSBtYWNoaW5lZCBjb2xkIGV4dHJ1c2lvbnMjMzEuMjkuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTMuMDIuMDAjQmVyeWxsaXVtIG1hY2hpbmVkIGNvbGQgZXh0cnVzaW9ucyMzMS4yOS4xMy4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMy4wMy4wMCNCcmFzcyBtYWNoaW5lZCBjb2xkIGV4dHJ1c2lvbnMjMzEuMjkuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTMuMDQuMDAjQnJvbnplIG1hY2hpbmVkIGNvbGQgZXh0cnVzaW9ucyMzMS4yOS4xMy4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMy4wNS4wMCNDb3BwZXIgbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjA2LjAwI0ZlcnJvdXMgYWxsb3kgbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjA3LjAwI0xlYWQgbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjA4LjAwI01hZ25lc2l1bSBtYWNoaW5lZCBjb2xkIGV4dHJ1c2lvbnMjMzEuMjkuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTMuMDkuMDAjTm9uIGZlcnJvdXMgYWxsb3kgbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjEwLjAwI1BsYXN0aWMgbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjExLjAwI1ByZWNpb3VzIG1ldGFsIG1hY2hpbmVkIGNvbGQgZXh0cnVzaW9ucyMzMS4yOS4xMy4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMy4xMi4wMCNSdWJiZXIgbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjEzLjAwI1N0YWlubGVzcyBzdGVlbCBtYWNoaW5lZCBjb2xkIGV4dHJ1c2lvbnMjMzEuMjkuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTMuMTQuMDAjU3RlZWwgbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjE1LjAwI1RpbiBtYWNoaW5lZCBjb2xkIGV4dHJ1c2lvbnMjMzEuMjkuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTMuMTYuMDAjVGl0YW5pdW0gbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjE3LjAwI1ppbmMgbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjEzLjE4LjAwI0NvbXBvc2l0ZSBtYWNoaW5lZCBjb2xkIGV4dHJ1c2lvbnMjMzEuMjkuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTMuMTkuMDAjTmlja2VsIGFsbG95IG1hY2hpbmVkIGNvbGQgZXh0cnVzaW9ucyMzMS4yOS4xMy4wMC4wMAotdW5zcHNjNyMzMS4yOS4xMy4yMC4wMCNOb24gbWV0YWxsaWMgbWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjEzLjAwLjAwCi11bnNwc2M3IzMxLjI5LjE0LjAwLjAwI01hY2hpbmVkIGhvdCBleHRydXNpb25zIzMxLjI5LjAwLjAwLjAwCi11bnNwc2M3IzMxLjI5LjE0LjAxLjAwI0FsdW1pbnVtIG1hY2hpbmVkIGhvdCBleHRydXNpb25zIzMxLjI5LjE0LjAwLjAwCi11bnNwc2M3IzMxLjI5LjE0LjAyLjAwI0JlcnlsbGl1bSBtYWNoaW5lZCBob3QgZXh0cnVzaW9ucyMzMS4yOS4xNC4wMC4wMAotdW5zcHNjNyMzMS4yOS4xNC4wMy4wMCNCcmFzcyBtYWNoaW5lZCBob3QgZXh0cnVzaW9ucyMzMS4yOS4xNC4wMC4wMAotdW5zcHNjNyMzMS4yOS4xNC4wNC4wMCNCcm9uemUgbWFjaGluZWQgaG90IGV4dHJ1c2lvbnMjMzEuMjkuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTQuMDUuMDAjQ29wcGVyIG1hY2hpbmVkIGhvdCBleHRydXNpb25zIzMxLjI5LjE0LjAwLjAwCi11bnNwc2M3IzMxLjI5LjE0LjA2LjAwI0ZlcnJvdXMgYWxsb3kgbWFjaGluZWQgaG90IGV4dHJ1c2lvbnMjMzEuMjkuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTQuMDcuMDAjTGVhZCBtYWNoaW5lZCBob3QgZXh0cnVzaW9ucyMzMS4yOS4xNC4wMC4wMAotdW5zcHNjNyMzMS4yOS4xNC4wOC4wMCNNYWduZXNpdW0gbWFjaGluZWQgaG90IGV4dHJ1c2lvbnMjMzEuMjkuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTQuMDkuMDAjTm9uIGZlcnJvdXMgYWxsb3kgbWFjaGluZWQgaG90IGV4dHJ1c2lvbnMjMzEuMjkuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTQuMTAuMDAjUGxhc3RpYyBtYWNoaW5lZCBob3QgZXh0cnVzaW9ucyMzMS4yOS4xNC4wMC4wMAotdW5zcHNjNyMzMS4yOS4xNC4xMS4wMCNQcmVjaW91cyBtZXRhbCBtYWNoaW5lZCBob3QgZXh0cnVzaW9ucyMzMS4yOS4xNC4wMC4wMAotdW5zcHNjNyMzMS4yOS4xNC4xMi4wMCNSdWJiZXIgbWFjaGluZWQgaG90IGV4dHJ1c2lvbnMjMzEuMjkuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTQuMTMuMDAjU3RhaW5sZXNzIHN0ZWVsIG1hY2hpbmVkIGhvdCBleHRydXNpb25zIzMxLjI5LjE0LjAwLjAwCi11bnNwc2M3IzMxLjI5LjE0LjE0LjAwI1N0ZWVsIG1hY2hpbmVkIGhvdCBleHRydXNpb25zIzMxLjI5LjE0LjAwLjAwCi11bnNwc2M3IzMxLjI5LjE0LjE1LjAwI1RpbiBtYWNoaW5lZCBob3QgZXh0cnVzaW9ucyMzMS4yOS4xNC4wMC4wMAotdW5zcHNjNyMzMS4yOS4xNC4xNi4wMCNUaXRhbml1bSBtYWNoaW5lZCBob3QgZXh0cnVzaW9ucyMzMS4yOS4xNC4wMC4wMAotdW5zcHNjNyMzMS4yOS4xNC4xNy4wMCNaaW5jIG1hY2hpbmVkIGhvdCBleHRydXNpb25zIzMxLjI5LjE0LjAwLjAwCi11bnNwc2M3IzMxLjI5LjE0LjE4LjAwI0NvbXBvc2l0ZSBtYWNoaW5lZCBob3QgZXh0cnVzaW9ucyMzMS4yOS4xNC4wMC4wMAotdW5zcHNjNyMzMS4yOS4xNC4xOS4wMCNOaWNrZWwgYWxsb3kgbWFjaGluZWQgaG90IGV4dHJ1c2lvbnMjMzEuMjkuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTQuMjAuMDAjTm9uICAgbWV0YWxsaWMgbWFjaGluZWQgaG90IGV4dHJ1c2lvbnMjMzEuMjkuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTUuMDAuMDAjTWFjaGluZWQgaW1wYWN0IGV4dHJ1c2lvbnMjMzEuMjkuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMjkuMTYuMDAuMDAjTWFjaGluZWQgY29sZCBleHRydXNpb25zIzMxLjI5LjAwLjAwLjAwCi11bnNwc2M3IzMxLjI5LjE3LjAwLjAwI01hY2hpbmVkIGhvdCBleHRydXNpb25zIzMxLjI5LjAwLjAwLjAwCi11bnNwc2M3IzMxLjI5LjE4LjAwLjAwI01hY2hpbmVkIGh5ZHJvIHN0YXRpYyBleHRydXNpb25zIzMxLjI5LjAwLjAwLjAwCi11bnNwc2M3IzMxLjMwLjAwLjAwLjAwI01hY2hpbmVkIGZvcmdpbmdzIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMwLjEwLjAwLjAwI01hY2hpbmVkIHJvbGxlZCByaW5nIGZvcmdpbmdzIzMxLjMwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMwLjExLjAwLjAwI01hY2hpbmVkIG9wZW4gZGllIGZvcmdpbmdzIzMxLjMwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMwLjExLjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IG9wZW4gZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjExLjAwLjAwCi11bnNwc2M3IzMxLjMwLjExLjAyLjAwI0ZlcnJvdXMgYWxsb3kgb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTEuMDMuMDAjU3RlZWwgb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTEuMDQuMDAjU3RhaW5sZXNzIHN0ZWVsIG9wZW4gZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjExLjAwLjAwCi11bnNwc2M3IzMxLjMwLjExLjA1LjAwI0lyb24gb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTEuMDYuMDAjQWx1bWludW0gb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTEuMDcuMDAjTWFnbmVzaXVtIG9wZW4gZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjExLjAwLjAwCi11bnNwc2M3IzMxLjMwLjExLjA4LjAwI1RpdGFuaXVtIG9wZW4gZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjExLjAwLjAwCi11bnNwc2M3IzMxLjMwLjExLjA5LjAwI0JlcnlsbGl1bSBvcGVuIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMS4xMC4wMCNDb3BwZXIgb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTEuMTEuMDAjQnJhc3Mgb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTEuMTIuMDAjQnJvbnplIG9wZW4gZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjExLjAwLjAwCi11bnNwc2M3IzMxLjMwLjExLjEzLjAwI1ppbmMgb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTEuMTQuMDAjVGluIG9wZW4gZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjExLjAwLjAwCi11bnNwc2M3IzMxLjMwLjExLjE1LjAwI0xlYWQgb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTEuMTYuMDAjUHJlY2lvdXMgbWV0YWwgb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTEuMTcuMDAjQ29tcG9zaXRlIG9wZW4gZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjExLjAwLjAwCi11bnNwc2M3IzMxLjMwLjExLjE4LjAwI05pY2tlbCBhbGxveSBvcGVuIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMS4xOS4wMCNOb24gbWV0YWxsaWMgb3BlbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTIuMDAuMDAjTWFjaGluZWQgY2xvc2VkIGRpZSBmb3JnaW5ncyMzMS4zMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMi4wMS4wMCNOb24gZmVycm91cyBhbGxveSBjbG9zZWQgZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMwLjEyLjAyLjAwI0ZlcnJvdXMgYWxsb3kgY2xvc2VkIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMi4wMy4wMCNTdGVlbCBjbG9zZWQgZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMwLjEyLjA0LjAwI1N0YWlubGVzcyBzdGVlbCBjbG9zZWQgZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMwLjEyLjA1LjAwI0lyb24gY2xvc2VkIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMi4wNi4wMCNBbHVtaW51bSBjbG9zZWQgZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMwLjEyLjA3LjAwI01hZ25lc2l1bSBjbG9zZWQgZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMwLjEyLjA4LjAwI1RpdGFuaXVtIGNsb3NlZCBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTIuMDkuMDAjQmVyeWxsaXVtIGNsb3NlZCBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTIuMTAuMDAjQ29wcGVyIGNsb3NlZCBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTIuMTEuMDAjQnJhc3MgY2xvc2VkIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMi4xMi4wMCNCcm9uemUgY2xvc2VkIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMi4xMy4wMCNaaW5jIGNsb3NlZCBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTIuMTQuMDAjVGluIGNsb3NlZCBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTIuMTUuMDAjTGVhZCBjbG9zZWQgZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMwLjEyLjE2LjAwI1ByZWNpb3VzIG1ldGFsIGNsb3NlZCBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTIuMTcuMDAjQ29tcG9zaXRlIGNsb3NlZCBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTIuMTguMDAjTmlja2VsIGFsbG95IGNsb3NlZCBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTIuMTkuMDAjTm9uIG1ldGFsbGljIGNsb3NlZCBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTMuMDAuMDAjTWFjaGluZWQgaW1wcmVzc2lvbiBkaWUgZm9yZ2luZ3MjMzEuMzAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTMuMDEuMDAjTm9uIGZlcnJvdXMgYWxsb3kgaW1wcmVzc2lvbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTMuMDIuMDAjRmVycm91cyBhbGxveSBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMy4wMy4wMCNTdGVlbCBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMy4wNC4wMCNTdGFpbmxlc3Mgc3RlZWwgaW1wcmVzc2lvbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTMuMDUuMDAjSXJvbiBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMy4wNi4wMCNBbHVtaW51bSBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMy4wNy4wMCNNYWduZXNpdW0gaW1wcmVzc2lvbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTMuMDguMDAjVGl0YW5pdW0gaW1wcmVzc2lvbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTMuMDkuMDAjQmVyeWxsaXVtIGltcHJlc3Npb24gZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMwLjEzLjEwLjAwI0NvcHBlciBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMy4xMS4wMCNCcmFzcyBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMy4xMi4wMCNCcm9uemUgaW1wcmVzc2lvbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTMuMTMuMDAjWmluYyBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMy4xNC4wMCNUaW4gaW1wcmVzc2lvbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTMuMTUuMDAjTGVhZCBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMy4xNi4wMCNQcmVjaW91cyBtZXRhbCBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xMy4xNy4wMCNDb21wb3NpdGUgaW1wcmVzc2lvbiBkaWUgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTMuMTguMDAjTmlja2VsIGFsbG95IGltcHJlc3Npb24gZGllIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMwLjEzLjE5LjAwI05vbiBtZXRhbGxpYyBpbXByZXNzaW9uIGRpZSBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNC4wMC4wMCNNYWNoaW5lZCBkcm9wIGZvcmdpbmdzIzMxLjMwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMwLjE0LjAxLjAwI05vbiBmZXJyb3VzIGFsbG95IGRyb3AgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTQuMDIuMDAjWmluYyBkcm9wIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE0LjAzLjAwI0ZlcnJvdXMgYWxsb3kgZHJvcCBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNC4wNC4wMCNUaW4gZHJvcCBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNC4wNS4wMCNMZWFkIGRyb3AgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTQuMDYuMDAjU3RlZWwgZHJvcCBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNC4wNy4wMCNQcmVjaW91cyBtZXRhbCBkcm9wIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE0LjA4LjAwI1N0YWlubGVzcyBzdGVlbCBkcm9wIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE0LjA5LjAwI0lyb24gZHJvcCBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNC4xMC4wMCNBbHVtaW51bSBkcm9wIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE0LjExLjAwI01hZ25lc2l1bSBkcm9wIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE0LjEyLjAwI1RpdGFuaXVtIGRyb3AgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTQuMTMuMDAjQmVyeWxsaXVtIGRyb3AgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTQuMTQuMDAjQ29wcGVyIGRyb3AgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTQuMTUuMDAjQnJhc3MgZHJvcCBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNC4xNi4wMCNCcm9uemUgZHJvcCBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNC4xNy4wMCNDb21wb3NpdGUgZHJvcCBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNC4xOC4wMCNOaWNrZWwgYWxsb3kgZHJvcCBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNC4xOS4wMCNOb24gbWV0YWxsaWMgZHJvcCBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNS4wMC4wMCNNYWNoaW5lZCByb2xsZWQgcmluZyBmb3JnaW5ncyMzMS4zMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNS4wMS4wMCNBbHVtaW51bSByb2xsZWQgcmluZyBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNS4wMi4wMCNCZXJ5bGxpdW0gcm9sbGVkIHJpbmcgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTUuMDMuMDAjQnJhc3Mgcm9sbGVkIHJpbmcgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTUuMDQuMDAjQnJvbnplIHJvbGxlZCByaW5nIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE1LjA1LjAwI0NvcHBlciByb2xsZWQgcmluZyBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNS4wNi4wMCNJcm9uIHJvbGxlZCByaW5nIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE1LjA3LjAwI0xlYWQgcm9sbGVkIHJpbmcgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTUuMDguMDAjTWFnbmVzaXVtIHJvbGxlZCByaW5nIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE1LjA5LjAwI1ByZWNpb3VzIG1ldGFsIHJvbGxlZCByaW5nIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE1LjEwLjAwI1N0YWlubGVzcyBzdGVlbCByb2xsZWQgcmluZyBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNS4xMS4wMCNUaW4gcm9sbGVkIHJpbmcgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTUuMTIuMDAjVGl0YW5pdW0gcm9sbGVkIHJpbmcgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTUuMTMuMDAjWmluYyByb2xsZWQgcmluZyBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNS4xNC4wMCNOb24gZmVycm91cyBhbGxveSByb2xsZWQgcmluZyBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNS4xNS4wMCNGZXJyb3VzIGFsbG95IHJvbGxlZCByaW5nIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE1LjE2LjAwI1N0ZWVsIHJvbGxlZCByaW5nIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE1LjE3LjAwI0NvbXBvc2l0ZSByb2xsZWQgcmluZyBtYWNoaW5lZCBmb3JnaW5ncyMzMS4zMC4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMC4xNS4xOC4wMCNOaWNrZWwgYWxsb3kgcm9sbGVkIHJpbmcgbWFjaGluZWQgZm9yZ2luZ3MjMzEuMzAuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTUuMTkuMDAjTm9uIG1ldGFsbGljIHJvbGxlZCByaW5nIG1hY2hpbmVkIGZvcmdpbmdzIzMxLjMwLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMwLjE2LjAwLjAwI01hY2hpbmVkIG9wZW4gZGllIGZvcmdpbmdzIzMxLjMwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMwLjE3LjAwLjAwI01hY2hpbmVkIGNsb3NlZCBkaWUgZm9yZ2luZ3MjMzEuMzAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTguMDAuMDAjTWFjaGluZWQgaW1wcmVzc2lvbiBkaWUgZm9yZ2luZ3MjMzEuMzAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzAuMTkuMDAuMDAjTWFjaGluZWQgZHJvcCBmb3JnaW5ncyMzMS4zMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMS4wMC4wMC4wMCNGYWJyaWNhdGVkIHBpcGUgYXNzZW1ibGllcyMzMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMS4wMC4wMCNTb2x2ZW50IHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTEuMDEuMDAjQWx1bWludW0gc29sdmVudCB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjExLjAwLjAwCi11bnNwc2M3IzMxLjMxLjExLjAyLjAwI0NhcmJvbiBzdGVlbCBzb2x2ZW50IHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTEuMDMuMDAjSGFzdGFsbG95IFggc29sdmVudCB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjExLjAwLjAwCi11bnNwc2M3IzMxLjMxLjExLjA0LjAwI0luY29uZWwgc29sdmVudCB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjExLjAwLjAwCi11bnNwc2M3IzMxLjMxLjExLjA1LjAwI0xvdyBhbGxveSBzdGVlbCBzb2x2ZW50IHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTEuMDYuMDAjTm9uIG1ldGFsbGljIHNvbHZlbnQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMS4wNy4wMCNPdGhlciBmZXJyb3VzIHNvbHZlbnQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMS4wOC4wMCNPdGhlciBub24gZmVycm91cyBzb2x2ZW50IHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTEuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIHNvbHZlbnQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMS4xMC4wMCNUaXRhbml1bSBzb2x2ZW50IHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTEuMTEuMDAjV2FzcGFsbG95IHNvbHZlbnQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMS4xMi4wMCNDb3BwZXIgc29sdmVudCB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjExLjAwLjAwCi11bnNwc2M3IzMxLjMxLjExLjEzLjAwI0JyYXNzIHNvbHZlbnQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMi4wMC4wMCNSaXZldGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMi4wMS4wMCNBbHVtaW51bSByaXZldGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMi4wMi4wMCNDYXJib24gc3RlZWwgcml2ZXRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTIuMDMuMDAjSGFzdGFsbG95IFggcml2ZXRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTIuMDQuMDAjSW5jb25lbCByaXZldGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMi4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgcml2ZXRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTIuMDYuMDAjTm9uIG1ldGFsbGljIHJpdmV0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEyLjA3LjAwI090aGVyIGZlcnJvdXMgcml2ZXRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTIuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgcml2ZXRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTIuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIHJpdmV0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEyLjEwLjAwI1RpdGFuaXVtIHJpdmV0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEyLjExLjAwI1dhc3BhbGxveSByaXZldGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMi4xMi4wMCNDb3BwZXIgcml2ZXRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTIuMTMuMDAjQnJhc3Mgcml2ZXRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTMuMDAuMDAjQm9sdGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMy4wMS4wMCNBbHVtaW51bSBib2x0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEzLjAyLjAwI0NhcmJvbiBzdGVlbCBib2x0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEzLjAzLjAwI0hhc3RhbGxveSBYIGJvbHRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTMuMDQuMDAjSW5jb25lbCBib2x0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEzLjA1LjAwI0xvdyBhbGxveSBzdGVlbCBib2x0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEzLjA2LjAwI05vbiBtZXRhbGxpYyBib2x0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEzLjA3LjAwI090aGVyIGZlcnJvdXMgYm9sdGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMS4xMy4wOC4wMCNPdGhlciBub24gZmVycm91cyBib2x0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEzLjA5LjAwI1N0YWlubGVzcyBzdGVlbCBib2x0ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMxLjEzLjEwLjAwI1RpdGFuaXVtIGJvbHRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTMuMTEuMDAjV2FzcGFsbG95IGJvbHRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTMuMTIuMDAjQ29wcGVyIGJvbHRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTMuMTMuMDAjQnJhc3MgYm9sdGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNC4wMC4wMCNVbHRyYSB2aW9sZXQgd2VsZGVkIChVVikgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMxLjE0LjAxLjAwI0FsdW1pbnVtIHVsdHJhIHZpb2xldCB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE0LjAyLjAwI0NhcmJvbiBzdGVlbCB1bHRyYSB2aW9sZXQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNC4wMy4wMCNIYXN0YWxsb3kgWCB1bHRyYSB2aW9sZXQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNC4wNC4wMCNJbmNvbmVsIHVsdHJhIHZpb2xldCB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE0LjA1LjAwI0xvdyBhbGxveSBzdGVlbCB1bHRyYSB2aW9sZXQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNC4wNi4wMCNOb24gbWV0YWxsaWMgdWx0cmEgdmlvbGV0IHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTQuMDcuMDAjT3RoZXIgZmVycm91cyB1bHRyYSB2aW9sZXQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNC4wOC4wMCNPdGhlciBub24gZmVycm91cyB1bHRyYSB2aW9sZXQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNC4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTQuMTAuMDAjVGl0YW5pdW0gdWx0cmEgdmlvbGV0IHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTQuMTEuMDAjV2FzcGFsbG95IHVsdHJhIHZpb2xldCB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE0LjEyLjAwI0NvcHBlciB1bHRyYSB2aW9sZXQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNC4xMy4wMCNCcmFzcyB1bHRyYSB2aW9sZXQgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNS4wMC4wMCNXZWxkZWQgb3IgYnJhemVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNS4wMS4wMCNBbHVtaW51bSB3ZWxkZWQgb3IgYnJhemVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNS4wMi4wMCNDYXJib24gc3RlZWwgd2VsZGVkIG9yIGJyYXplZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTUuMDMuMDAjSGFzdGFsbG95IFggd2VsZGVkIG9yIGJyYXplZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTUuMDQuMDAjSW5jb25lbCB3ZWxkZWQgb3IgYnJhemVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNS4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgd2VsZGVkIG9yIGJyYXplZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTUuMDYuMDAjTm9uIG1ldGFsbGljIHdlbGRlZCBvciBicmF6ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE1LjA3LjAwI090aGVyIGZlcnJvdXMgd2VsZGVkIG9yIGJyYXplZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTUuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgd2VsZGVkIG9yIGJyYXplZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTUuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIHdlbGRlZCBvciBicmF6ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE1LjEwLjAwI1RpdGFuaXVtIHdlbGRlZCBvciBicmF6ZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE1LjExLjAwI1dhc3BhbGxveSB3ZWxkZWQgb3IgYnJhemVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNS4xMi4wMCNDb3BwZXIgd2VsZGVkIG9yIGJyYXplZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTUuMTMuMDAjQnJhc3Mgd2VsZGVkIG9yIGJyYXplZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTYuMDAuMDAjU29uaWMgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNi4wMS4wMCNBbHVtaW51bSBzb25pYyB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE2LjAyLjAwI0NhcmJvbiBzdGVlbCBzb25pYyB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE2LjAzLjAwI0hhc3RhbGxveSBYIHNvbmljIHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTYuMDQuMDAjSW5jb25lbCBzb25pYyB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE2LjA1LjAwI0xvdyBhbGxveSBzdGVlbCBzb25pYyB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE2LjA2LjAwI05vbiBtZXRhbGxpYyBzb25pYyB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE2LjA3LjAwI090aGVyIGZlcnJvdXMgc29uaWMgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNi4wOC4wMCNPdGhlciBub24gZmVycm91cyBzb25pYyB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE2LjA5LjAwI1N0YWlubGVzcyBzdGVlbCBzb25pYyB3ZWxkZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE2LjEwLjAwI1RpdGFuaXVtIHNvbmljIHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTYuMTEuMDAjV2FzcGFsbG95IHNvbmljIHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTYuMTIuMDAjQ29wcGVyIHNvbmljIHdlbGRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTYuMTMuMDAjQnJhc3Mgc29uaWMgd2VsZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNi4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNy4wMC4wMCNCb25kZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMxLjE3LjAxLjAwI0FsdW1pbnVtIGJvbmRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTcuMDIuMDAjQ2FyYm9uIHN0ZWVsIGJvbmRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTcuMDMuMDAjSGFzdGFsbG95IFggYm9uZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNy4wNC4wMCNJbmNvbmVsIGJvbmRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTcuMDUuMDAjTG93IGFsbG95IHN0ZWVsIGJvbmRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTcuMDYuMDAjTm9uIG1ldGFsbGljIGJvbmRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTcuMDcuMDAjT3RoZXIgZmVycm91cyBib25kZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE3LjAwLjAwCi11bnNwc2M3IzMxLjMxLjE3LjA4LjAwI090aGVyIG5vbiBmZXJyb3VzIGJvbmRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTcuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIGJvbmRlZCBwaXBlIGFzc2VtYmxpZXMjMzEuMzEuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzEuMTcuMTAuMDAjVGl0YW5pdW0gYm9uZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNy4xMS4wMCNXYXNwYWxsb3kgYm9uZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNy4xMi4wMCNDb3BwZXIgYm9uZGVkIHBpcGUgYXNzZW1ibGllcyMzMS4zMS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMS4xNy4xMy4wMCNCcmFzcyBib25kZWQgcGlwZSBhc3NlbWJsaWVzIzMxLjMxLjE3LjAwLjAwCi11bnNwc2M3IzMxLjMyLjAwLjAwLjAwI0ZhYnJpY2F0ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTEuMDAuMDAjQm9uZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMyLjExLjAxLjAwI0FsdW1pbnVtIGJvbmRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMS4wMi4wMCNDYXJib24gc3RlZWwgYm9uZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjExLjAwLjAwCi11bnNwc2M3IzMxLjMyLjExLjAzLjAwI0hhc3RhbGxveSBYIGJvbmRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMS4wNC4wMCNJbmNvbmVsIGJvbmRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMS4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgYm9uZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjExLjAwLjAwCi11bnNwc2M3IzMxLjMyLjExLjA2LjAwI05vbiBtZXRhbGxpYyBib25kZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTEuMDcuMDAjT3RoZXIgZmVycm91cyBib25kZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTEuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgYm9uZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjExLjAwLjAwCi11bnNwc2M3IzMxLjMyLjExLjA5LjAwI1N0YWlubGVzcyBzdGVlbCBib25kZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTEuMTAuMDAjVGl0YW5pdW0gYm9uZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjExLjAwLjAwCi11bnNwc2M3IzMxLjMyLjExLjExLjAwI1dhc3BhbGxveSBib25kZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTEuMTIuMDAjQ29wcGVyIGJvbmRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMS4xMy4wMCNCcmFzcyBib25kZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTIuMDAuMDAjU29sdmVudCB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTIuMDEuMDAjQWx1bWludW0gc29sdmVudCB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTIuMDIuMDAjQ2FyYm9uIHN0ZWVsIHNvbHZlbnQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEyLjAzLjAwI0hhc3RhbGxveSBYIHNvbHZlbnQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEyLjA0LjAwI0luY29uZWwgc29sdmVudCB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTIuMDUuMDAjTG93IGFsbG95IHN0ZWVsIHNvbHZlbnQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEyLjA2LjAwI05vbiBtZXRhbGxpYyBzb2x2ZW50IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMi4wNy4wMCNPdGhlciBmZXJyb3VzIHNvbHZlbnQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEyLjA4LjAwI090aGVyIG5vbiBmZXJyb3VzIHNvbHZlbnQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEyLjA5LjAwI1N0YWlubGVzcyBzdGVlbCBzb2x2ZW50IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMi4xMC4wMCNUaXRhbml1bSBzb2x2ZW50IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMi4xMS4wMCNXYXNwYWxsb3kgc29sdmVudCB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTIuMTIuMDAjQ29wcGVyIHNvbHZlbnQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEyLjEzLjAwI0JyYXNzIHNvbHZlbnQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEzLjAwLjAwI1JpdmV0ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTMuMDEuMDAjQWx1bWludW0gcml2ZXRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMy4wMi4wMCNDYXJib24gc3RlZWwgcml2ZXRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMy4wMy4wMCNIYXN0YWxsb3kgWCByaXZldGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEzLjA0LjAwI0luY29uZWwgcml2ZXRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMy4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgcml2ZXRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMy4wNi4wMCNOb24gbWV0YWxsaWMgcml2ZXRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMy4wNy4wMCNPdGhlciBmZXJyb3VzIHJpdmV0ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTMuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgcml2ZXRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMy4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgcml2ZXRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xMy4xMC4wMCNUaXRhbml1bSByaXZldGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEzLjExLjAwI1dhc3BhbGxveSByaXZldGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEzLjEyLjAwI0NvcHBlciByaXZldGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMyLjEzLjEzLjAwI0JyYXNzIHJpdmV0ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTQuMDAuMDAjV2VsZGVkIG9yIGJyYXplZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNC4wMS4wMCNBbHVtaW51bSB3ZWxkZWQgb3IgYnJhemVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE0LjAyLjAwI0NhcmJvbiBzdGVlbCB3ZWxkZWQgb3IgYnJhemVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE0LjAzLjAwI0hhc3RhbGxveSBYIHdlbGRlZCBvciBicmF6ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTQuMDQuMDAjSW5jb25lbCB3ZWxkZWQgb3IgYnJhemVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE0LjA1LjAwI0xvdyBhbGxveSBzdGVlbCB3ZWxkZWQgb3IgYnJhemVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE0LjA2LjAwI05vbiBtZXRhbGxpYyB3ZWxkZWQgb3IgYnJhemVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE0LjA3LjAwI090aGVyIGZlcnJvdXMgd2VsZGVkIG9yIGJyYXplZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNC4wOC4wMCNPdGhlciBub24gZmVycm91cyB3ZWxkZWQgb3IgYnJhemVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE0LjA5LjAwI1N0YWlubGVzcyBzdGVlbCB3ZWxkZWQgb3IgYnJhemVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE0LjEwLjAwI1RpdGFuaXVtIHdlbGRlZCBvciBicmF6ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTQuMTEuMDAjV2FzcGFsbG95IHdlbGRlZCBvciBicmF6ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTQuMTIuMDAjQ29wcGVyIHdlbGRlZCBvciBicmF6ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTQuMTMuMDAjQnJhc3Mgd2VsZGVkIG9yIGJyYXplZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNS4wMC4wMCNVbHRyYSB2aW9sZXQgd2VsZGVkIChVVikgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTUuMDEuMDAjQWx1bWludW0gdWx0cmEgdmlvbGV0IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNS4wMi4wMCNDYXJib24gc3RlZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNS4wMy4wMCNIYXN0YWxsb3kgWCB1bHRyYSB2aW9sZXQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE1LjA0LjAwI0luY29uZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNS4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNS4wNi4wMCNOb24gbWV0YWxsaWMgdWx0cmEgdmlvbGV0IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNS4wNy4wMCNPdGhlciBmZXJyb3VzIHVsdHJhIHZpb2xldCB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTUuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgdWx0cmEgdmlvbGV0IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNS4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNS4xMC4wMCNUaXRhbml1bSB1bHRyYSB2aW9sZXQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE1LjExLjAwI1dhc3BhbGxveSB1bHRyYSB2aW9sZXQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE1LjEyLjAwI0NvcHBlciB1bHRyYSB2aW9sZXQgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE1LjEzLjAwI0JyYXNzIHVsdHJhIHZpb2xldCB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTYuMDAuMDAjU29uaWMgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMyLjE2LjAxLjAwI0FsdW1pbnVtIHNvbmljIHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNi4wMi4wMCNDYXJib24gc3RlZWwgc29uaWMgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE2LjAzLjAwI0hhc3RhbGxveSBYIHNvbmljIHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNi4wNC4wMCNJbmNvbmVsIHNvbmljIHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNi4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgc29uaWMgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE2LjA2LjAwI05vbiBtZXRhbGxpYyBzb25pYyB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTYuMDcuMDAjT3RoZXIgZmVycm91cyBzb25pYyB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTYuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgc29uaWMgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE2LjA5LjAwI1N0YWlubGVzcyBzdGVlbCBzb25pYyB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTYuMTAuMDAjVGl0YW5pdW0gc29uaWMgd2VsZGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE2LjExLjAwI1dhc3BhbGxveSBzb25pYyB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTYuMTIuMDAjQ29wcGVyIHNvbmljIHdlbGRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNi4xMy4wMCNCcmFzcyBzb25pYyB3ZWxkZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTcuMDAuMDAjQm9sdGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMyLjE3LjAxLjAwI0FsdW1pbnVtIGJvbHRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNy4wMi4wMCNDYXJib24gc3RlZWwgYm9sdGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE3LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE3LjAzLjAwI0hhc3RhbGxveSBYIGJvbHRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNy4wNC4wMCNJbmNvbmVsIGJvbHRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNy4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgYm9sdGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE3LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE3LjA2LjAwI05vbiBtZXRhbGxpYyBib2x0ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTcuMDcuMDAjT3RoZXIgZmVycm91cyBib2x0ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTcuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgYm9sdGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE3LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE3LjA5LjAwI1N0YWlubGVzcyBzdGVlbCBib2x0ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTcuMTAuMDAjVGl0YW5pdW0gYm9sdGVkIGJhciBzdG9jayBhc3NlbWJsaWVzIzMxLjMyLjE3LjAwLjAwCi11bnNwc2M3IzMxLjMyLjE3LjExLjAwI1dhc3BhbGxveSBib2x0ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzIuMTcuMTIuMDAjQ29wcGVyIGJvbHRlZCBiYXIgc3RvY2sgYXNzZW1ibGllcyMzMS4zMi4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMi4xNy4xMy4wMCNCcmFzcyBib2x0ZWQgYmFyIHN0b2NrIGFzc2VtYmxpZXMjMzEuMzIuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMDAuMDAuMDAjRmFicmljYXRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTEuMDAuMDAjQm9uZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMS4wMS4wMCNBbHVtaW51bSBib25kZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjExLjAwLjAwCi11bnNwc2M3IzMxLjMzLjExLjAyLjAwI0NhcmJvbiBzdGVlbCBib25kZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjExLjAwLjAwCi11bnNwc2M3IzMxLjMzLjExLjAzLjAwI0hhc3RhbGxveSBYIGJvbmRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTEuMDQuMDAjSW5jb25lbCBib25kZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjExLjAwLjAwCi11bnNwc2M3IzMxLjMzLjExLjA1LjAwI0xvdyBhbGxveSBzdGVlbCBib25kZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjExLjAwLjAwCi11bnNwc2M3IzMxLjMzLjExLjA2LjAwI05vbiBtZXRhbGxpYyBib25kZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjExLjAwLjAwCi11bnNwc2M3IzMxLjMzLjExLjA3LjAwI090aGVyIGZlcnJvdXMgYm9uZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMS4wOC4wMCNPdGhlciBub24gZmVycm91cyBib25kZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjExLjAwLjAwCi11bnNwc2M3IzMxLjMzLjExLjA5LjAwI1N0YWlubGVzcyBzdGVlbCBib25kZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjExLjAwLjAwCi11bnNwc2M3IzMxLjMzLjExLjEwLjAwI1RpdGFuaXVtIGJvbmRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTEuMTEuMDAjV2FzcGFsbG95IGJvbmRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTEuMTIuMDAjQ29wcGVyIGJvbmRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTEuMTMuMDAjQnJhc3MgYm9uZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMS4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMi4wMC4wMCNCb2x0ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMzLjEyLjAxLjAwI0FsdW1pbnVtIGJvbHRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTIuMDIuMDAjQ2FyYm9uIHN0ZWVsIGJvbHRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTIuMDMuMDAjSGFzdGFsbG95IFggYm9sdGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMi4wNC4wMCNJbmNvbmVsIGJvbHRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTIuMDUuMDAjTG93IGFsbG95IHN0ZWVsIGJvbHRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTIuMDYuMDAjTm9uIG1ldGFsbGljIGJvbHRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTIuMDcuMDAjT3RoZXIgZmVycm91cyBib2x0ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMzLjEyLjA4LjAwI090aGVyIG5vbiBmZXJyb3VzIGJvbHRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTIuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIGJvbHRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTIuMTAuMDAjVGl0YW5pdW0gYm9sdGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMi4xMS4wMCNXYXNwYWxsb3kgYm9sdGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMi4xMi4wMCNDb3BwZXIgYm9sdGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMi4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMi4xMy4wMCNCcmFzcyBib2x0ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjEyLjAwLjAwCi11bnNwc2M3IzMxLjMzLjEzLjAwLjAwI1NvbmljIHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTMuMDEuMDAjQWx1bWludW0gc29uaWMgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMy4wMi4wMCNDYXJib24gc3RlZWwgc29uaWMgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMy4wMy4wMCNIYXN0YWxsb3kgWCBzb25pYyB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMzLjEzLjA0LjAwI0luY29uZWwgc29uaWMgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMy4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgc29uaWMgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMy4wNi4wMCNOb24gbWV0YWxsaWMgc29uaWMgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMy4wNy4wMCNPdGhlciBmZXJyb3VzIHNvbmljIHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTMuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgc29uaWMgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMy4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgc29uaWMgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xMy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xMy4xMC4wMCNUaXRhbml1bSBzb25pYyB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMzLjEzLjExLjAwI1dhc3BhbGxveSBzb25pYyB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMzLjEzLjEyLjAwI0NvcHBlciBzb25pYyB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjEzLjAwLjAwCi11bnNwc2M3IzMxLjMzLjEzLjEzLjAwI0JyYXNzIHNvbmljIHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTQuMDAuMDAjVWx0cmEgdmlvbGV0IHdlbGRlZCAoVVYpIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4wMC4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNC4wMS4wMCNBbHVtaW51bSB1bHRyYSB2aW9sZXQgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNC4wMi4wMCNDYXJib24gc3RlZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTQuMDMuMDAjSGFzdGFsbG95IFggdWx0cmEgdmlvbGV0IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTQuMDQuMDAjSW5jb25lbCB1bHRyYSB2aW9sZXQgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNC4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTQuMDYuMDAjTm9uIG1ldGFsbGljIHVsdHJhIHZpb2xldCB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE0LjA3LjAwI090aGVyIGZlcnJvdXMgdWx0cmEgdmlvbGV0IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTQuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgdWx0cmEgdmlvbGV0IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTQuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIHVsdHJhIHZpb2xldCB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE0LjEwLjAwI1RpdGFuaXVtIHVsdHJhIHZpb2xldCB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE0LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE0LjExLjAwI1dhc3BhbGxveSB1bHRyYSB2aW9sZXQgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNC4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNC4xMi4wMCNDb3BwZXIgdWx0cmEgdmlvbGV0IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTQuMTMuMDAjQnJhc3MgdWx0cmEgdmlvbGV0IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTUuMDAuMDAjU29sdmVudCB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMzLjE1LjAxLjAwI0FsdW1pbnVtIHNvbHZlbnQgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNS4wMi4wMCNDYXJib24gc3RlZWwgc29sdmVudCB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE1LjAzLjAwI0hhc3RhbGxveSBYIHNvbHZlbnQgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNS4wNC4wMCNJbmNvbmVsIHNvbHZlbnQgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNS4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgc29sdmVudCB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE1LjA2LjAwI05vbiBtZXRhbGxpYyBzb2x2ZW50IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTUuMDcuMDAjT3RoZXIgZmVycm91cyBzb2x2ZW50IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTUuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgc29sdmVudCB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE1LjA5LjAwI1N0YWlubGVzcyBzdGVlbCBzb2x2ZW50IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTUuMTAuMDAjVGl0YW5pdW0gc29sdmVudCB3ZWxkZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE1LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE1LjExLjAwI1dhc3BhbGxveSBzb2x2ZW50IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTUuMTIuMDAjQ29wcGVyIHNvbHZlbnQgd2VsZGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNS4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNS4xMy4wMCNCcmFzcyBzb2x2ZW50IHdlbGRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTYuMDAuMDAjV2VsZGVkIG9yIGJyYXplZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTYuMDEuMDAjQWx1bWludW0gd2VsZGVkIG9yIGJyYXplZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTYuMDIuMDAjQ2FyYm9uIHN0ZWVsIHdlbGRlZCBvciBicmF6ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE2LjAzLjAwI0hhc3RhbGxveSBYIHdlbGRlZCBvciBicmF6ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE2LjA0LjAwI0luY29uZWwgd2VsZGVkIG9yIGJyYXplZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTYuMDUuMDAjTG93IGFsbG95IHN0ZWVsIHdlbGRlZCBvciBicmF6ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE2LjA2LjAwI05vbiBtZXRhbGxpYyB3ZWxkZWQgb3IgYnJhemVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNi4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNi4wNy4wMCNPdGhlciBmZXJyb3VzIHdlbGRlZCBvciBicmF6ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE2LjA4LjAwI090aGVyIG5vbiBmZXJyb3VzIHdlbGRlZCBvciBicmF6ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE2LjA5LjAwI1N0YWlubGVzcyBzdGVlbCB3ZWxkZWQgb3IgYnJhemVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNi4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNi4xMC4wMCNUaXRhbml1bSB3ZWxkZWQgb3IgYnJhemVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNi4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNi4xMS4wMCNXYXNwYWxsb3kgd2VsZGVkIG9yIGJyYXplZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTYuMTIuMDAjQ29wcGVyIHdlbGRlZCBvciBicmF6ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE2LjEzLjAwI0JyYXNzIHdlbGRlZCBvciBicmF6ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE2LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE3LjAwLjAwI1JpdmV0ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjAwLjAwLjAwCi11bnNwc2M3IzMxLjMzLjE3LjAxLjAwI0FsdW1pbnVtIHJpdmV0ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE3LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE3LjAyLjAwI0NhcmJvbiBzdGVlbCByaXZldGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNy4wMy4wMCNIYXN0YWxsb3kgWCByaXZldGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNy4wNC4wMCNJbmNvbmVsIHJpdmV0ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE3LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE3LjA1LjAwI0xvdyBhbGxveSBzdGVlbCByaXZldGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNy4wNi4wMCNOb24gbWV0YWxsaWMgcml2ZXRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTcuMDcuMDAjT3RoZXIgZmVycm91cyByaXZldGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNy4wOC4wMCNPdGhlciBub24gZmVycm91cyByaXZldGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNy4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgcml2ZXRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTcuMTAuMDAjVGl0YW5pdW0gcml2ZXRlZCBzdHJ1Y3R1cmFsIGFzc2VtYmxpZXMjMzEuMzMuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzMuMTcuMTEuMDAjV2FzcGFsbG95IHJpdmV0ZWQgc3RydWN0dXJhbCBhc3NlbWJsaWVzIzMxLjMzLjE3LjAwLjAwCi11bnNwc2M3IzMxLjMzLjE3LjEyLjAwI0NvcHBlciByaXZldGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4zMy4xNy4xMy4wMCNCcmFzcyByaXZldGVkIHN0cnVjdHVyYWwgYXNzZW1ibGllcyMzMS4zMy4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNC4wMC4wMC4wMCNGYWJyaWNhdGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTEuMDAuMDAjV2VsZGVkIG9yIGJyYXplZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjAwLjAwLjAwCi11bnNwc2M3IzMxLjM0LjExLjAxLjAwI0FsdW1pbnVtIHdlbGRlZCBvciBicmF6ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMS4wMi4wMCNDYXJib24gc3RlZWwgd2VsZGVkIG9yIGJyYXplZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjExLjAwLjAwCi11bnNwc2M3IzMxLjM0LjExLjAzLjAwI0hhc3RhbGxveSBYIHdlbGRlZCBvciBicmF6ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMS4wNC4wMCNJbmNvbmVsIHdlbGRlZCBvciBicmF6ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMS4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgd2VsZGVkIG9yIGJyYXplZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjExLjAwLjAwCi11bnNwc2M3IzMxLjM0LjExLjA2LjAwI05vbiBtZXRhbGxpYyB3ZWxkZWQgb3IgYnJhemVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTEuMDcuMDAjT3RoZXIgZmVycm91cyB3ZWxkZWQgb3IgYnJhemVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTEuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgd2VsZGVkIG9yIGJyYXplZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjExLjAwLjAwCi11bnNwc2M3IzMxLjM0LjExLjA5LjAwI1N0YWlubGVzcyBzdGVlbCB3ZWxkZWQgb3IgYnJhemVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTEuMTAuMDAjVGl0YW5pdW0gd2VsZGVkIG9yIGJyYXplZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjExLjAwLjAwCi11bnNwc2M3IzMxLjM0LjExLjExLjAwI1dhc3BhbGxveSB3ZWxkZWQgb3IgYnJhemVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTEuMTIuMDAjQ29wcGVyIHdlbGRlZCBvciBicmF6ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMS4xMy4wMCNCcmFzcyB3ZWxkZWQgb3IgYnJhemVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTIuMDAuMDAjUml2ZXRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjAwLjAwLjAwCi11bnNwc2M3IzMxLjM0LjEyLjAxLjAwI0FsdW1pbnVtIHJpdmV0ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMi4wMi4wMCNDYXJib24gc3RlZWwgcml2ZXRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM0LjEyLjAzLjAwI0hhc3RhbGxveSBYIHJpdmV0ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMi4wNC4wMCNJbmNvbmVsIHJpdmV0ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMi4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgcml2ZXRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM0LjEyLjA2LjAwI05vbiBtZXRhbGxpYyByaXZldGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTIuMDcuMDAjT3RoZXIgZmVycm91cyByaXZldGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTIuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgcml2ZXRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM0LjEyLjA5LjAwI1N0YWlubGVzcyBzdGVlbCByaXZldGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTIuMTAuMDAjVGl0YW5pdW0gcml2ZXRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM0LjEyLjExLjAwI1dhc3BhbGxveSByaXZldGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTIuMTIuMDAjQ29wcGVyIHJpdmV0ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMi4xMy4wMCNCcmFzcyByaXZldGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTMuMDAuMDAjVWx0cmEgdmlvbGV0IHdlbGRlZCAoVVYpIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTMuMDEuMDAjQWx1bWludW0gdWx0cmEgdmlvbGV0IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM0LjEzLjAyLjAwI0NhcmJvbiBzdGVlbCB1bHRyYSB2aW9sZXQgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTMuMDMuMDAjSGFzdGFsbG95IFggdWx0cmEgdmlvbGV0IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM0LjEzLjA0LjAwI0luY29uZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM0LjEzLjA1LjAwI0xvdyBhbGxveSBzdGVlbCB1bHRyYSB2aW9sZXQgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTMuMDYuMDAjTm9uIG1ldGFsbGljIHVsdHJhIHZpb2xldCB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMy4wNy4wMCNPdGhlciBmZXJyb3VzIHVsdHJhIHZpb2xldCB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMy4wOC4wMCNPdGhlciBub24gZmVycm91cyB1bHRyYSB2aW9sZXQgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTMuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIHVsdHJhIHZpb2xldCB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMy4xMC4wMCNUaXRhbml1bSB1bHRyYSB2aW9sZXQgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTMuMTEuMDAjV2FzcGFsbG95IHVsdHJhIHZpb2xldCB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNC4xMy4xMi4wMCNDb3BwZXIgdWx0cmEgdmlvbGV0IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM0LjEzLjEzLjAwI0JyYXNzIHVsdHJhIHZpb2xldCB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNC4wMC4wMCNTb25pYyB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNC4wMS4wMCNBbHVtaW51bSBzb25pYyB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNC4wMi4wMCNDYXJib24gc3RlZWwgc29uaWMgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTQuMDMuMDAjSGFzdGFsbG95IFggc29uaWMgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTQuMDQuMDAjSW5jb25lbCBzb25pYyB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNC4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgc29uaWMgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTQuMDYuMDAjTm9uIG1ldGFsbGljIHNvbmljIHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE0LjA3LjAwI090aGVyIGZlcnJvdXMgc29uaWMgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTQuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgc29uaWMgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTQuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIHNvbmljIHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE0LjEwLjAwI1RpdGFuaXVtIHNvbmljIHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE0LjExLjAwI1dhc3BhbGxveSBzb25pYyB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNC4xMi4wMCNDb3BwZXIgc29uaWMgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTQuMTMuMDAjQnJhc3Mgc29uaWMgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTUuMDAuMDAjU29sdmVudCB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNS4wMS4wMCNBbHVtaW51bSBzb2x2ZW50IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE1LjAyLjAwI0NhcmJvbiBzdGVlbCBzb2x2ZW50IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE1LjAzLjAwI0hhc3RhbGxveSBYIHNvbHZlbnQgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTUuMDQuMDAjSW5jb25lbCBzb2x2ZW50IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE1LjA1LjAwI0xvdyBhbGxveSBzdGVlbCBzb2x2ZW50IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE1LjA2LjAwI05vbiBtZXRhbGxpYyBzb2x2ZW50IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE1LjA3LjAwI090aGVyIGZlcnJvdXMgc29sdmVudCB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNS4wOC4wMCNPdGhlciBub24gZmVycm91cyBzb2x2ZW50IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE1LjA5LjAwI1N0YWlubGVzcyBzdGVlbCBzb2x2ZW50IHdlbGRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE1LjEwLjAwI1RpdGFuaXVtIHNvbHZlbnQgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTUuMTEuMDAjV2FzcGFsbG95IHNvbHZlbnQgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTUuMTIuMDAjQ29wcGVyIHNvbHZlbnQgd2VsZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTUuMTMuMDAjQnJhc3Mgc29sdmVudCB3ZWxkZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNi4wMC4wMCNCb25kZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNi4wMS4wMCNBbHVtaW51bSBib25kZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNi4wMi4wMCNDYXJib24gc3RlZWwgYm9uZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTYuMDMuMDAjSGFzdGFsbG95IFggYm9uZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTYuMDQuMDAjSW5jb25lbCBib25kZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNi4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgYm9uZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTYuMDYuMDAjTm9uIG1ldGFsbGljIGJvbmRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE2LjA3LjAwI090aGVyIGZlcnJvdXMgYm9uZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTYuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgYm9uZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTYuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIGJvbmRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE2LjEwLjAwI1RpdGFuaXVtIGJvbmRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE2LjExLjAwI1dhc3BhbGxveSBib25kZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNi4xMi4wMCNDb3BwZXIgYm9uZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTYuMTMuMDAjQnJhc3MgYm9uZGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTcuMDAuMDAjQm9sdGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTcuMDEuMDAjQWx1bWludW0gYm9sdGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTcuMDIuMDAjQ2FyYm9uIHN0ZWVsIGJvbHRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE3LjAzLjAwI0hhc3RhbGxveSBYIGJvbHRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE3LjA0LjAwI0luY29uZWwgYm9sdGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTcuMDUuMDAjTG93IGFsbG95IHN0ZWVsIGJvbHRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE3LjA2LjAwI05vbiBtZXRhbGxpYyBib2x0ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNy4wNy4wMCNPdGhlciBmZXJyb3VzIGJvbHRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE3LjA4LjAwI090aGVyIG5vbiBmZXJyb3VzIGJvbHRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE3LjA5LjAwI1N0YWlubGVzcyBzdGVlbCBib2x0ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNy4xMC4wMCNUaXRhbml1bSBib2x0ZWQgc2hlZXQgYXNzZW1ibGllcyMzMS4zNC4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNC4xNy4xMS4wMCNXYXNwYWxsb3kgYm9sdGVkIHNoZWV0IGFzc2VtYmxpZXMjMzEuMzQuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzQuMTcuMTIuMDAjQ29wcGVyIGJvbHRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM0LjE3LjEzLjAwI0JyYXNzIGJvbHRlZCBzaGVldCBhc3NlbWJsaWVzIzMxLjM0LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM1LjAwLjAwLjAwI0ZhYnJpY2F0ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjM1LjExLjAwLjAwI1VsdHJhIHZpb2xldCB3ZWxkZWQgKFVWKSB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTEuMDEuMDAjQWx1bWludW0gdWx0cmEgdmlvbGV0IHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTEuMDIuMDAjQ2FyYm9uIHN0ZWVsIHVsdHJhIHZpb2xldCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjExLjAwLjAwCi11bnNwc2M3IzMxLjM1LjExLjAzLjAwI0hhc3RhbGxveSBYIHVsdHJhIHZpb2xldCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjExLjAwLjAwCi11bnNwc2M3IzMxLjM1LjExLjA0LjAwI0luY29uZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTEuMDUuMDAjTG93IGFsbG95IHN0ZWVsIHVsdHJhIHZpb2xldCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjExLjAwLjAwCi11bnNwc2M3IzMxLjM1LjExLjA2LjAwI05vbiBtZXRhbGxpYyB1bHRyYSB2aW9sZXQgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMS4wNy4wMCNPdGhlciBmZXJyb3VzIHVsdHJhIHZpb2xldCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjExLjAwLjAwCi11bnNwc2M3IzMxLjM1LjExLjA4LjAwI090aGVyIG5vbiBmZXJyb3VzIHVsdHJhIHZpb2xldCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjExLjAwLjAwCi11bnNwc2M3IzMxLjM1LjExLjA5LjAwI1N0YWlubGVzcyBzdGVlbCB1bHRyYSB2aW9sZXQgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMS4xMC4wMCNUaXRhbml1bSB1bHRyYSB2aW9sZXQgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMS4xMS4wMCNXYXNwYWxsb3kgdWx0cmEgdmlvbGV0IHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTEuMTIuMDAjQ29wcGVyIHVsdHJhIHZpb2xldCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjExLjAwLjAwCi11bnNwc2M3IzMxLjM1LjExLjEzLjAwI0JyYXNzIHVsdHJhIHZpb2xldCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjExLjAwLjAwCi11bnNwc2M3IzMxLjM1LjEyLjAwLjAwI1dlbGRlZCBvciBicmF6ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjAwLjAwLjAwCi11bnNwc2M3IzMxLjM1LjEyLjAxLjAwI0FsdW1pbnVtIHdlbGRlZCBvciBicmF6ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM1LjEyLjAyLjAwI0NhcmJvbiBzdGVlbCB3ZWxkZWQgb3IgYnJhemVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMi4wMy4wMCNIYXN0YWxsb3kgWCB3ZWxkZWQgb3IgYnJhemVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMi4wNC4wMCNJbmNvbmVsIHdlbGRlZCBvciBicmF6ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM1LjEyLjA1LjAwI0xvdyBhbGxveSBzdGVlbCB3ZWxkZWQgb3IgYnJhemVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMi4wNi4wMCNOb24gbWV0YWxsaWMgd2VsZGVkIG9yIGJyYXplZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTIuMDcuMDAjT3RoZXIgZmVycm91cyB3ZWxkZWQgb3IgYnJhemVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMi4wOC4wMCNPdGhlciBub24gZmVycm91cyB3ZWxkZWQgb3IgYnJhemVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMi4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgd2VsZGVkIG9yIGJyYXplZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTIuMTAuMDAjVGl0YW5pdW0gd2VsZGVkIG9yIGJyYXplZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTIuMTEuMDAjV2FzcGFsbG95IHdlbGRlZCBvciBicmF6ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM1LjEyLjEyLjAwI0NvcHBlciB3ZWxkZWQgb3IgYnJhemVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMi4xMy4wMCNCcmFzcyB3ZWxkZWQgb3IgYnJhemVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMy4wMC4wMCNSaXZldGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMy4wMS4wMCNBbHVtaW51bSByaXZldGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMy4wMi4wMCNDYXJib24gc3RlZWwgcml2ZXRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTMuMDMuMDAjSGFzdGFsbG95IFggcml2ZXRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTMuMDQuMDAjSW5jb25lbCByaXZldGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMy4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgcml2ZXRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTMuMDYuMDAjTm9uIG1ldGFsbGljIHJpdmV0ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM1LjEzLjA3LjAwI090aGVyIGZlcnJvdXMgcml2ZXRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTMuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgcml2ZXRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTMuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIHJpdmV0ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM1LjEzLjEwLjAwI1RpdGFuaXVtIHJpdmV0ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM1LjEzLjExLjAwI1dhc3BhbGxveSByaXZldGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xMy4xMi4wMCNDb3BwZXIgcml2ZXRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTMuMTMuMDAjQnJhc3Mgcml2ZXRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTQuMDAuMDAjQm9uZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNC4wMS4wMCNBbHVtaW51bSBib25kZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE0LjAyLjAwI0NhcmJvbiBzdGVlbCBib25kZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE0LjAzLjAwI0hhc3RhbGxveSBYIGJvbmRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTQuMDQuMDAjSW5jb25lbCBib25kZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE0LjA1LjAwI0xvdyBhbGxveSBzdGVlbCBib25kZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE0LjA2LjAwI05vbiBtZXRhbGxpYyBib25kZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE0LjA3LjAwI090aGVyIGZlcnJvdXMgYm9uZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNC4wOC4wMCNPdGhlciBub24gZmVycm91cyBib25kZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE0LjA5LjAwI1N0YWlubGVzcyBzdGVlbCBib25kZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE0LjEwLjAwI1RpdGFuaXVtIGJvbmRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTQuMTEuMDAjV2FzcGFsbG95IGJvbmRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTQuMTIuMDAjQ29wcGVyIGJvbmRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTQuMTMuMDAjQnJhc3MgYm9uZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNS4wMC4wMCNCb2x0ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjAwLjAwLjAwCi11bnNwc2M3IzMxLjM1LjE1LjAxLjAwI0FsdW1pbnVtIGJvbHRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTUuMDIuMDAjQ2FyYm9uIHN0ZWVsIGJvbHRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTUuMDMuMDAjSGFzdGFsbG95IFggYm9sdGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNS4wNC4wMCNJbmNvbmVsIGJvbHRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTUuMDUuMDAjTG93IGFsbG95IHN0ZWVsIGJvbHRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTUuMDYuMDAjTm9uIG1ldGFsbGljIGJvbHRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTUuMDcuMDAjT3RoZXIgZmVycm91cyBib2x0ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE1LjA4LjAwI090aGVyIG5vbiBmZXJyb3VzIGJvbHRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTUuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIGJvbHRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTUuMTAuMDAjVGl0YW5pdW0gYm9sdGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNS4xMS4wMCNXYXNwYWxsb3kgYm9sdGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNS4xMi4wMCNDb3BwZXIgYm9sdGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNS4xMy4wMCNCcmFzcyBib2x0ZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE2LjAwLjAwI1NvbHZlbnQgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNi4wMS4wMCNBbHVtaW51bSBzb2x2ZW50IHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTYuMDIuMDAjQ2FyYm9uIHN0ZWVsIHNvbHZlbnQgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNi4wMy4wMCNIYXN0YWxsb3kgWCBzb2x2ZW50IHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTYuMDQuMDAjSW5jb25lbCBzb2x2ZW50IHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTYuMDUuMDAjTG93IGFsbG95IHN0ZWVsIHNvbHZlbnQgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNi4wNi4wMCNOb24gbWV0YWxsaWMgc29sdmVudCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE2LjA3LjAwI090aGVyIGZlcnJvdXMgc29sdmVudCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE2LjA4LjAwI090aGVyIG5vbiBmZXJyb3VzIHNvbHZlbnQgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNi4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgc29sdmVudCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE2LjEwLjAwI1RpdGFuaXVtIHNvbHZlbnQgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNi4xMS4wMCNXYXNwYWxsb3kgc29sdmVudCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE2LjEyLjAwI0NvcHBlciBzb2x2ZW50IHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTYuMTMuMDAjQnJhc3Mgc29sdmVudCB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE3LjAwLjAwI1NvbmljIHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTcuMDEuMDAjQWx1bWludW0gc29uaWMgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNy4wMi4wMCNDYXJib24gc3RlZWwgc29uaWMgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNy4wMy4wMCNIYXN0YWxsb3kgWCBzb25pYyB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE3LjA0LjAwI0luY29uZWwgc29uaWMgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNy4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgc29uaWMgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNy4wNi4wMCNOb24gbWV0YWxsaWMgc29uaWMgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNy4wNy4wMCNPdGhlciBmZXJyb3VzIHNvbmljIHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzUuMTcuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgc29uaWMgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNy4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgc29uaWMgd2VsZGVkIHR1YmUgYXNzZW1ibGllcyMzMS4zNS4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNS4xNy4xMC4wMCNUaXRhbml1bSBzb25pYyB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE3LjExLjAwI1dhc3BhbGxveSBzb25pYyB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE3LjEyLjAwI0NvcHBlciBzb25pYyB3ZWxkZWQgdHViZSBhc3NlbWJsaWVzIzMxLjM1LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM1LjE3LjEzLjAwI0JyYXNzIHNvbmljIHdlbGRlZCB0dWJlIGFzc2VtYmxpZXMjMzEuMzUuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMDAuMDAuMDAjRmFicmljYXRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMxLjM2LjExLjAwLjAwI0JvbmRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjAwLjAwLjAwCi11bnNwc2M3IzMxLjM2LjExLjAxLjAwI0FsdW1pbnVtIGJvbmRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjExLjAwLjAwCi11bnNwc2M3IzMxLjM2LjExLjAyLjAwI0NhcmJvbiBzdGVlbCBib25kZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMS4wMy4wMCNIYXN0YWxsb3kgWCBib25kZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMS4wNC4wMCNJbmNvbmVsIGJvbmRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjExLjAwLjAwCi11bnNwc2M3IzMxLjM2LjExLjA1LjAwI0xvdyBhbGxveSBzdGVlbCBib25kZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMS4wNi4wMCNOb24gbWV0YWxsaWMgYm9uZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTEuMDcuMDAjT3RoZXIgZmVycm91cyBib25kZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMS4wOC4wMCNPdGhlciBub24gZmVycm91cyBib25kZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMS4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgYm9uZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTEuMTAuMDAjVGl0YW5pdW0gYm9uZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTEuMTEuMDAjV2FzcGFsbG95IGJvbmRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjExLjAwLjAwCi11bnNwc2M3IzMxLjM2LjExLjEyLjAwI0NvcHBlciBib25kZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMS4xMy4wMCNCcmFzcyBib25kZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMi4wMC4wMCNCb2x0ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMi4wMS4wMCNBbHVtaW51bSBib2x0ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMi4wMi4wMCNDYXJib24gc3RlZWwgYm9sdGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTIuMDMuMDAjSGFzdGFsbG95IFggYm9sdGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTIuMDQuMDAjSW5jb25lbCBib2x0ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMi4wNS4wMCNMb3cgYWxsb3kgc3RlZWwgYm9sdGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTIuMDYuMDAjTm9uIG1ldGFsbGljIGJvbHRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEyLjA3LjAwI090aGVyIGZlcnJvdXMgYm9sdGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTIuMDguMDAjT3RoZXIgbm9uIGZlcnJvdXMgYm9sdGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTIuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIGJvbHRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEyLjEwLjAwI1RpdGFuaXVtIGJvbHRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEyLjExLjAwI1dhc3BhbGxveSBib2x0ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMi4xMi4wMCNDb3BwZXIgYm9sdGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTIuMTMuMDAjQnJhc3MgYm9sdGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTMuMDAuMDAjU29sdmVudCB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMy4wMS4wMCNBbHVtaW51bSBzb2x2ZW50IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEzLjAyLjAwI0NhcmJvbiBzdGVlbCBzb2x2ZW50IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEzLjAzLjAwI0hhc3RhbGxveSBYIHNvbHZlbnQgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTMuMDQuMDAjSW5jb25lbCBzb2x2ZW50IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEzLjA1LjAwI0xvdyBhbGxveSBzdGVlbCBzb2x2ZW50IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEzLjA2LjAwI05vbiBtZXRhbGxpYyBzb2x2ZW50IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEzLjA3LjAwI090aGVyIGZlcnJvdXMgc29sdmVudCB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNi4xMy4wOC4wMCNPdGhlciBub24gZmVycm91cyBzb2x2ZW50IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEzLjA5LjAwI1N0YWlubGVzcyBzdGVlbCBzb2x2ZW50IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM2LjEzLjEwLjAwI1RpdGFuaXVtIHNvbHZlbnQgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTMuMTEuMDAjV2FzcGFsbG95IHNvbHZlbnQgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTMuMTIuMDAjQ29wcGVyIHNvbHZlbnQgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTMuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTMuMTMuMDAjQnJhc3Mgc29sdmVudCB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xMy4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNC4wMC4wMCNXZWxkZWQgb3IgYnJhemVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTQuMDEuMDAjQWx1bWludW0gd2VsZGVkIG9yIGJyYXplZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE0LjAyLjAwI0NhcmJvbiBzdGVlbCB3ZWxkZWQgb3IgYnJhemVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTQuMDMuMDAjSGFzdGFsbG95IFggd2VsZGVkIG9yIGJyYXplZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE0LjA0LjAwI0luY29uZWwgd2VsZGVkIG9yIGJyYXplZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE0LjA1LjAwI0xvdyBhbGxveSBzdGVlbCB3ZWxkZWQgb3IgYnJhemVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTQuMDYuMDAjTm9uIG1ldGFsbGljIHdlbGRlZCBvciBicmF6ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNC4wNy4wMCNPdGhlciBmZXJyb3VzIHdlbGRlZCBvciBicmF6ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNC4wOC4wMCNPdGhlciBub24gZmVycm91cyB3ZWxkZWQgb3IgYnJhemVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTQuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIHdlbGRlZCBvciBicmF6ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNC4xMC4wMCNUaXRhbml1bSB3ZWxkZWQgb3IgYnJhemVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTQuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTQuMTEuMDAjV2FzcGFsbG95IHdlbGRlZCBvciBicmF6ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNC4xMi4wMCNDb3BwZXIgd2VsZGVkIG9yIGJyYXplZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE0LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE0LjEzLjAwI0JyYXNzIHdlbGRlZCBvciBicmF6ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNC4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNS4wMC4wMCNVbHRyYSB2aW9sZXQgd2VsZGVkIChVVikgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNS4wMS4wMCNBbHVtaW51bSB1bHRyYSB2aW9sZXQgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTUuMDIuMDAjQ2FyYm9uIHN0ZWVsIHVsdHJhIHZpb2xldCB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNS4wMy4wMCNIYXN0YWxsb3kgWCB1bHRyYSB2aW9sZXQgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTUuMDQuMDAjSW5jb25lbCB1bHRyYSB2aW9sZXQgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTUuMDUuMDAjTG93IGFsbG95IHN0ZWVsIHVsdHJhIHZpb2xldCB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNS4wNi4wMCNOb24gbWV0YWxsaWMgdWx0cmEgdmlvbGV0IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE1LjA3LjAwI090aGVyIGZlcnJvdXMgdWx0cmEgdmlvbGV0IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE1LjA4LjAwI090aGVyIG5vbiBmZXJyb3VzIHVsdHJhIHZpb2xldCB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNS4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgdWx0cmEgdmlvbGV0IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE1LjEwLjAwI1RpdGFuaXVtIHVsdHJhIHZpb2xldCB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNS4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNS4xMS4wMCNXYXNwYWxsb3kgdWx0cmEgdmlvbGV0IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE1LjEyLjAwI0NvcHBlciB1bHRyYSB2aW9sZXQgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTUuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTUuMTMuMDAjQnJhc3MgdWx0cmEgdmlvbGV0IHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE1LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE2LjAwLjAwI1NvbmljIHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjAwLjAwLjAwCi11bnNwc2M3IzMxLjM2LjE2LjAxLjAwI0FsdW1pbnVtIHNvbmljIHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE2LjAyLjAwI0NhcmJvbiBzdGVlbCBzb25pYyB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNi4wMy4wMCNIYXN0YWxsb3kgWCBzb25pYyB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNi4wNC4wMCNJbmNvbmVsIHNvbmljIHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE2LjA1LjAwI0xvdyBhbGxveSBzdGVlbCBzb25pYyB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNi4wNi4wMCNOb24gbWV0YWxsaWMgc29uaWMgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTYuMDcuMDAjT3RoZXIgZmVycm91cyBzb25pYyB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNi4wOC4wMCNPdGhlciBub24gZmVycm91cyBzb25pYyB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNi4wOS4wMCNTdGFpbmxlc3Mgc3RlZWwgc29uaWMgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTYuMTAuMDAjVGl0YW5pdW0gc29uaWMgd2VsZGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTYuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTYuMTEuMDAjV2FzcGFsbG95IHNvbmljIHdlbGRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE2LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE2LjEyLjAwI0NvcHBlciBzb25pYyB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNi4xMy4wMCNCcmFzcyBzb25pYyB3ZWxkZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNi4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNy4wMC4wMCNSaXZldGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTcuMDEuMDAjQWx1bWludW0gcml2ZXRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE3LjAyLjAwI0NhcmJvbiBzdGVlbCByaXZldGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTcuMDMuMDAjSGFzdGFsbG95IFggcml2ZXRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE3LjA0LjAwI0luY29uZWwgcml2ZXRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE3LjA1LjAwI0xvdyBhbGxveSBzdGVlbCByaXZldGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTcuMDYuMDAjTm9uIG1ldGFsbGljIHJpdmV0ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNy4wNy4wMCNPdGhlciBmZXJyb3VzIHJpdmV0ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNy4wOC4wMCNPdGhlciBub24gZmVycm91cyByaXZldGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTcuMDkuMDAjU3RhaW5sZXNzIHN0ZWVsIHJpdmV0ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNy4xMC4wMCNUaXRhbml1bSByaXZldGVkIHBsYXRlIGFzc2VtYmxpZXMjMzEuMzYuMTcuMDAuMDAKLXVuc3BzYzcjMzEuMzYuMTcuMTEuMDAjV2FzcGFsbG95IHJpdmV0ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNi4xNy4xMi4wMCNDb3BwZXIgcml2ZXRlZCBwbGF0ZSBhc3NlbWJsaWVzIzMxLjM2LjE3LjAwLjAwCi11bnNwc2M3IzMxLjM2LjE3LjEzLjAwI0JyYXNzIHJpdmV0ZWQgcGxhdGUgYXNzZW1ibGllcyMzMS4zNi4xNy4wMC4wMAotdW5zcHNjNyMzMS4zNy4wMC4wMC4wMCNSZWZyYWN0b3JpZXMjMzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTAuMDAuMDAjQ2VyYW1pYyBmaWJyZSBwcm9kdWN0cyMzMS4zNy4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNy4xMC4wMS4wMCNJbnN1bGF0aW9uIGJvYXJkcyMzMS4zNy4xMC4wMC4wMAotdW5zcHNjNyMzMS4zNy4xMC4wMi4wMCNJbnN1bGF0aW5nIHdvb2wjMzEuMzcuMTAuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTEuMDAuMDAjUmVmcmFjdG9yeSBicmlja3MjMzEuMzcuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTEuMDEuMDAjTXVsbGl0ZSBicmlja3MjMzEuMzcuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTEuMDIuMDAjU2lsbGltYW5pdGUgYnJpY2tzIzMxLjM3LjExLjAwLjAwCi11bnNwc2M3IzMxLjM3LjExLjAzLjAwI0FjaWQgcmVzaXN0YW50IGJyaWNrcyMzMS4zNy4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNy4xMS4wNC4wMCNTaWxpY2EgYnJpY2tzIzMxLjM3LjExLjAwLjAwCi11bnNwc2M3IzMxLjM3LjExLjA1LjAwI0hpZ2ggYWx1bWluYSBicmlja3MjMzEuMzcuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTEuMDYuMDAjQ2FsY2l1bSBzaWxpY2F0ZSBibG9ja3MjMzEuMzcuMTEuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTEuMDcuMDAjU2hhcGVkIGJyaWNrcyMzMS4zNy4xMS4wMC4wMAotdW5zcHNjNyMzMS4zNy4xMi4wMC4wMCNDYXN0YWJsZXMjMzEuMzcuMDAuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTIuMDEuMDAjRGVuc2UgY2FzdGFibGVzIzMxLjM3LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM3LjEyLjAyLjAwI0luc3VsYXRpbmcgY2FzdGFibGVzIzMxLjM3LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM3LjEyLjAzLjAwI0xvdyBjZW1lbnQgY2FzdGFibGVzIzMxLjM3LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM3LjEyLjA0LjAwI0FjaWQgb3IgYWxrYWxpIHJlc2lzdGFudCBjYXN0YWJsZSMzMS4zNy4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNy4xMi4wNS4wMCNBYnJhc2lvbiByZXNpc3RhbnQgY2FzdGFibGUjMzEuMzcuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTIuMDYuMDAjU2ljIGNhc3RhYmxlIzMxLjM3LjEyLjAwLjAwCi11bnNwc2M3IzMxLjM3LjEyLjA3LjAwI1NlbGYgZmxvdyBjYXN0YWJsZSMzMS4zNy4xMi4wMC4wMAotdW5zcHNjNyMzMS4zNy4xMi4wOC4wMCNUYWJ1bGFyIGFsdW1pbmEgY2FzdGFibGUjMzEuMzcuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTIuMDkuMDAjRXJvc2lvbiByZXNpc3RhbnQgY2FzdGFibGUjMzEuMzcuMTIuMDAuMDAKLXVuc3BzYzcjMzEuMzcuMTMuMDAuMDAjU2hhcGVkIHJlZnJhY3RvcmllcyMzMS4zNy4wMC4wMC4wMAotdW5zcHNjNyMzMS4zNy4xMy4wMS4wMCNQb3JvdXMgYmxvY2tzIzMxLjM3LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM3LjEzLjAyLjAwI1ppcmNvbiBub3p6bGVzIzMxLjM3LjEzLjAwLjAwCi11bnNwc2M3IzMxLjM4LjAwLjAwLjAwI01hZ25ldHMgYW5kIG1hZ25ldGljIG1hdGVyaWFscyMzMS4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMS4zOC4xMC4wMC4wMCNQZXJtYW5lbnQgbWFnbmV0cyMzMS4zOC4wMC4wMC4wMAotdW5zcHNjNyMzMS4zOC4xMC4wMS4wMCNMb2RlIHN0b25lIzMxLjM4LjEwLjAwLjAwCi11bnNwc2M3IzMxLjM4LjEwLjAyLjAwI0FsbmljbyBtYWduZXRzIzMxLjM4LjEwLjAwLjAwCi11bnNwc2M3IzMyLjAwLjAwLjAwLjAwI0VsZWN0cm9uaWMgQ29tcG9uZW50cyBhbmQgU3VwcGxpZXMjMzIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMDAuMDAuMDAjUHJpbnRlZCBjaXJjdWl0cyBhbmQgaW50ZWdyYXRlZCBjaXJjdWl0cyBhbmQgbWljcm9hc3NlbWJsaWVzIzMyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzMyLjEwLjE1LjAwLjAwI1ByaW50ZWQgY2lyY3VpdHMgYW5kIGNpcmN1aXQgY2FyZCBhc3NlbWJsaWVzIzMyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMyLjEwLjE1LjAxLjAwI0JhcmUgcHJpbnRlZCBjaXJjdWl0IGJvYXJkcyMzMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNS4wMi4wMCNQcmludGVkIGNpcmN1aXQgYXNzZW1ibGllcyAoUENBcykjMzIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTUuMDMuMDAjTWl4ZWQgY2lyY3VpdCBhc3NlbWJsaWVzIzMyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMyLjEwLjE1LjA0LjAwI1N1cmZhY2UgbW91bnQgY2lyY3VpdCBhc3NlbWJsaWVzIzMyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzMyLjEwLjE1LjA1LjAwI1BsYXRlZCB0aHJvdWdoIGNpcmN1aXQgYXNzZW1ibGllcyMzMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNS4wNi4wMCNEb3VibGUgc2lkZWQgY2lyY3VpdCBjYXJkcyMzMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNS4wNy4wMCNCYWNrcGxhbmUgY2lyY3VpdCBjYXJkcyMzMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNS4wOC4wMCNNdWx0aWxheWVyIGNpcmN1aXQgY2FyZHMjMzIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTUuMDkuMDAjU2luZ2xlIHNpZGVkIGNpcmN1aXQgY2FyZHMjMzIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTUuMTAuMDAjUHJpbnRlZCB3aXJlIGJvYXJkcyMzMi4xMC4xNS4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4wMC4wMCNFbGVjdHJvbmljIGNvbXBvbmVudHMgZm9yIG1lbW9yeSBvciBzbWFydCBjYXJkcyMzMi4xMC4wMC4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4wMS4wMCNSYW5kb20gYWNjZXNzIG1lbW9yeSAoUkFNKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4wMi4wMCNEeW5hbWljIHJhbmRvbSBhY2Nlc3MgbWVtb3J5IChEUkFNKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4wMy4wMCNTdGF0aWMgcmFuZG9tIGFjY2VzcyBtZW1vcnkgKFNSQU0pIzMyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMyLjEwLjE2LjA0LjAwI1Byb2dyYW1tYWJsZSByZWFkIG9ubHkgbWVtb3J5IChQUk9NKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4wNS4wMCNFcmFzZWFibGUgcHJvZ3JhbW1hYmxlIHJlYWQgb25seSBtZW1vcnkgKEVQUk9NKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4wNi4wMCNFbGVjdHJvbmljYWxseSBlcmFzZWFibGUgcHJvZ3JhbW1hYmxlIHJlYWQgb25seSBtZW1vcnkgKEVFUFJPTSkjMzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTYuMDcuMDAjTW9ub2xpdGloYyBtZW1vcnkgaW50ZWdyYXRlZCBjaXJjdWl0cyAoTU1JQykjMzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTYuMDguMDAjUmVhZCBvbmx5IG1lbW9yeSAoUk9NKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4wOS4wMCNBcHBsaWNhdGlvbiBzcGVjaWZpYyBpbnRlZ3JhdGVkIGNpcmN1aXRzIChBU0lDKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4xMC4wMCNUaGluIHF1YWQgZmxhdCBwYWNrIChUUUZQKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4xMS4wMCNQcm9ncmFtbWFibGUgYXJyYXkgbG9naWMgKFBBTCkjMzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTYuMTIuMDAjR2F0ZSBhcnJheSBsb2dpYyAoR0FMKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4xMy4wMCNUcmFuc2lzdG9yIHRyYW5zaXN0b3IgbG9naWMgKFRUTCkjMzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTYuMTQuMDAjRW1pdHRlciBjb3VwbGVkIGxvZ2ljIChFQ0wpIzMyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMyLjEwLjE2LjE1LjAwI0JpcG9sYXIgb3IgbWV0YWwgb3hpZGUgc2VtaWNvbmR1Y3RvciB0ZWNobm9sb2d5IChCSU1PUykjMzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTYuMTYuMDAjQmlwb2xhciBjb21wbGVtZW50YXJ5IG1ldGFsIG94aWRlIHNlbWljb25kdWN0b3IgdGVjaG5vbG9neSAoQklDTU9TKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4xNy4wMCNTbWFydCBjYXJkcyMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4xOC4wMCNVcHNjcmVlbmVkIGludGVncmF0ZWQgY2lyY3VpdHMjMzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTYuMTkuMDAjTGluZWFyIGludGVncmF0ZWQgY2lyY3VpdHMjMzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTYuMjAuMDAjRGlnaXRhbCBpbnRlZ3JhdGVkIGNpcmN1aXRzIzMyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMyLjEwLjE2LjIxLjAwI1N5bmNocm9ub3VzIGR5bmFtaWMgcmFuZG9tIGFjY2VzcyBtZW1vcnkgKFNEUkFNKSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4yMi4wMCNGbGFzaCBtZW1vcnkjMzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTYuMjMuMDAjUmFtYnVzIGR5bmFtaWMgcmFuZG9tIGFjY2VzcyBtZW1vcnlSRFJBTSMzMi4xMC4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNi4yNC4wMCNTeW5jaHJvbm91cyBncmFwaGljIHJhbmRvbSBhY2Nlc3MgbWVtb3J5IFNHUkFNIzMyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzMyLjEwLjE3LjAwLjAwI0h5YnJpZCBpbnRlZ3JhdGVkIGNpcmN1aXRzIzMyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMyLjEwLjE3LjAxLjAwI01pY3JvcHJvY2Vzc29ycyMzMi4xMC4xNy4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNy4wMi4wMCNDbG9jayBvc2NpbGxhdG9ycyMzMi4xMC4xNy4wMC4wMAotdW5zcHNjNyMzMi4xMC4xNy4wMy4wMCNNaWNyb2NvbnRyb2xsZXJzIzMyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzMyLjEwLjE4LjAwLjAwI1VubW91bnRlZCBpbnRlZ3JhdGVkIGNpcmN1aXRzIzMyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzMyLjEwLjE4LjAxLjAwI1VubW91bnRlZCBkaWVzIzMyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMyLjEwLjE4LjAyLjAwI1VubW91bnRlZCB3YWZlcnMjMzIuMTAuMTguMDAuMDAKLXVuc3BzYzcjMzIuMTAuMTguMDMuMDAjVW5tb3VudGVkIGNoaXBzIzMyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzMyLjExLjAwLjAwLjAwI0Rpb2RlcyBhbmQgdHJhbnNpc3RvcnMgYW5kIHNlbWljb25kdWN0b3IgZGV2aWNlcyMzMi4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMi4xMS4xNS4wMC4wMCNEaW9kZXMjMzIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTUuMDEuMDAjTWljcm93YXZlIGRpb2RlcyMzMi4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xNS4wMi4wMCNaZW5lciBkaW9kZXMjMzIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTUuMDMuMDAjTGlnaHQgZW1pdHRpbmcgZGlvZGVzIChMRURzKSMzMi4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xNS4wNC4wMCNTY2hvdHRreSBkaW9kZXMjMzIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTUuMDUuMDAjVHVubmVsIGRpb2RlcyMzMi4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xNS4wNi4wMCNQaG90b3NlbnNpdGl2ZSBkaW9kZXMjMzIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTUuMDcuMDAjVmFyaWFibGUgY2FwYWNpdGFuY2UgZGlvZGVzIzMyLjExLjE1LjAwLjAwCi11bnNwc2M3IzMyLjExLjE1LjA4LjAwI1NvbGFyIGRpb2RlcyMzMi4xMS4xNS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xNS4wOS4wMCNQb3dlciBkaW9kZXMjMzIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTUuMTAuMDAjUmFkaW8gZnJlcXVlbmN5IChSRikgZGlvZGVzIzMyLjExLjE1LjAwLjAwCi11bnNwc2M3IzMyLjExLjE1LjExLjAwI1NtYWxsIHNpZ25hbCBkaW9kZXMjMzIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTYuMDAuMDAjVHJhbnNpc3RvcnMjMzIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTYuMDEuMDAjUGhvdG8gc2Vuc2l0aXZlIHRyYW5zaXN0b3JzIzMyLjExLjE2LjAwLjAwCi11bnNwc2M3IzMyLjExLjE2LjAyLjAwI0ZpZWxkIGVmZmVjdCB0cmFuc2lzdG9ycyAoRkVUKSMzMi4xMS4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMS4xNi4wMy4wMCNNZXRhbCBveGlkZSBzaWxpY29uZSBmaWVsZCBlZmZlY3QgdHJhbnNpc3RvcnMgKE1PU0ZFVCkjMzIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTYuMDQuMDAjVHJhbnNpc3RvciBjaGlwcyMzMi4xMS4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMS4xNi4wNS4wMCNUcmFuc2lzdG9yIGRpZXMjMzIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTYuMDYuMDAjVHJhbnNpc3RvciB3YWZlcnMjMzIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTYuMDcuMDAjQmlwb2xhciBkYXJsaW5ndG9uIG9yIHJhZGlvIGZyZXF1ZW5jeSAoUkYpIHRyYW5zaXN0b3JzIzMyLjExLjE2LjAwLjAwCi11bnNwc2M3IzMyLjExLjE2LjA4LjAwI1VuaWp1bmN0aW9uIHRyYW5zaXN0b3JzIzMyLjExLjE2LjAwLjAwCi11bnNwc2M3IzMyLjExLjE2LjA5LjAwI0luc3VsYXRlZCBnYXRlIGJpcG9sYXIgdHJhbnNpc3RvcnMgKElHQlQpIzMyLjExLjE2LjAwLjAwCi11bnNwc2M3IzMyLjExLjE2LjEwLjAwI0p1bmN0aW9uIGZpZWxkIGVmZmVjdCB0cmFuc2lzdG9ycyAoSkZFVCkjMzIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTcuMDAuMDAjU2VtaWNvbmR1Y3RvciBkZXZpY2VzIzMyLjExLjAwLjAwLjAwCi11bnNwc2M3IzMyLjExLjE3LjAxLjAwI1Bob3Rvdm9sdGFpYyBjZWxscyMzMi4xMS4xNy4wMC4wMAotdW5zcHNjNyMzMi4xMS4xNy4wMi4wMCNUaHlyaXN0b3JzIzMyLjExLjE3LjAwLjAwCi11bnNwc2M3IzMyLjExLjE3LjAzLjAwI0RpYWNzIzMyLjExLjE3LjAwLjAwCi11bnNwc2M3IzMyLjExLjE3LjA0LjAwI1RyaWFjcyMzMi4xMS4xNy4wMC4wMAotdW5zcHNjNyMzMi4xMS4xNy4wNS4wMCNPcHRpY2FsIGNvdXBsZWQgaXNvbGF0b3JzIzMyLjExLjE3LjAwLjAwCi11bnNwc2M3IzMyLjExLjE3LjA2LjAwI0NyeXN0YWwgb3NjaWxsYXRvcnMjMzIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTguMDAuMDAjSW50ZWdyYXRlZCBjaXJjdWl0IGNvbXBvbmVudHMjMzIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTguMDEuMDAjSW50ZXJncmF0ZWQgY2lyY3VpdCBsaWRzIzMyLjExLjE4LjAwLjAwCi11bnNwc2M3IzMyLjExLjE4LjAyLjAwI0ludGVncmF0ZWQgY2lyY3VpdCBwYWNrYWdlcyMzMi4xMS4xOC4wMC4wMAotdW5zcHNjNyMzMi4xMS4xOC4wMy4wMCNTdWJzdHJhdGVzIzMyLjExLjE4LjAwLjAwCi11bnNwc2M3IzMyLjExLjE5LjAwLjAwI1JhZGlvIGZyZXF1ZW5jeSAoUkYpIGNvbXBvbmVudHMjMzIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTkuMDEuMDAjQW1wbGlmaWVycyMzMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xOS4wMi4wMCNBdHRlbnVhdG9ycyMzMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xOS4wMy4wMCNDaXJjdWxhdG9ycyMzMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xOS4wNC4wMCNDb3VwbGVycyMzMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xOS4wNS4wMCNEZWxheSBsaW5lcyMzMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xOS4wNi4wMCNEZXRlY3RvcnMjMzIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTkuMDcuMDAjRHVtbXkgbG9hZHMjMzIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTkuMDguMDAjUmFkaW8gZnJlcXVlbmN5IChSRikgZmlsdGVycyMzMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xOS4wOS4wMCNJc29sYXRvcnMjMzIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjMzIuMTEuMTkuMTAuMDAjTWl4ZXJzIzMyLjExLjE5LjAwLjAwCi11bnNwc2M3IzMyLjExLjE5LjExLjAwI1BoYXNlIHNoaWZ0ZXJzIzMyLjExLjE5LjAwLjAwCi11bnNwc2M3IzMyLjExLjE5LjEyLjAwI1Bvd2VyIGRpdmlkZXJzIzMyLjExLjE5LjAwLjAwCi11bnNwc2M3IzMyLjExLjE5LjEzLjAwI1dhdmUgdHViZSBhbXBsaWZpZXJzIzMyLjExLjE5LjAwLjAwCi11bnNwc2M3IzMyLjExLjE5LjE0LjAwI1Rlcm1pbmF0aW9ucyMzMi4xMS4xOS4wMC4wMAotdW5zcHNjNyMzMi4xMS4xOS4xNS4wMCNNb2R1bGF0b3JzIzMyLjExLjE5LjAwLjAwCi11bnNwc2M3IzMyLjEyLjAwLjAwLjAwI1ByaW50ZWQgY29tcG9uZW50cyMzMi4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMi4xMi4xNS4wMC4wMCNDYXBhY2l0b3JzIzMyLjEyLjAwLjAwLjAwCi11bnNwc2M3IzMyLjEyLjE1LjAxLjAwI0ZpeGVkIGNhcGFjaXRvcnMjMzIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTIuMTUuMDIuMDAjVmFyaWFibGUgY2FwYWNpdG9ycyBvciB2YXJhY3RvcnMjMzIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTIuMTUuMDMuMDAjQWRqdXN0YWJsZSBwcmUgc2V0IGNhcGFjaXRvcnMjMzIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjMzIuMTIuMTUuMDQuMDAjQ2FwYWNpdG9yIG5ldHdvcmtzIzMyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzMyLjEyLjE2LjAwLjAwI1Jlc2lzdG9ycyMzMi4xMi4wMC4wMC4wMAotdW5zcHNjNyMzMi4xMi4xNi4wMS4wMCNUaGVybWlzdG9ycyMzMi4xMi4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMi4xNi4wMi4wMCNGdXNpc3RvcnMjMzIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTIuMTYuMDMuMDAjVmFyaWFibGUgcmVzaXN0b3JzIG9yIHZhcmlzdG9ycyMzMi4xMi4xNi4wMC4wMAotdW5zcHNjNyMzMi4xMi4xNi4wNC4wMCNGaXhlZCBjYXJib24gcmVzaXN0b3JzIzMyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMyLjEyLjE2LjA1LjAwI0ZpeGVkIHRoaWNrIGZpbG0gcmVzaXN0b3JzIzMyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzMyLjEyLjE2LjA2LjAwI0ZpeGVkIHRoaW4gZmlsbSByZXNpc3RvcnMjMzIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTIuMTYuMDcuMDAjUmVzaXN0b3IgbmV0d29ya3MjMzIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTIuMTYuMDguMDAjV2lyZSB3b3VuZCByZXNpc3RvcnMjMzIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjMzIuMTIuMTcuMDAuMDAjRGlzY3JldGUgY29tcG9uZW50cyMzMi4xMi4wMC4wMC4wMAotdW5zcHNjNyMzMi4xMi4xNy4wMS4wMCNSZWN0aWZpZXJzIzMyLjEyLjE3LjAwLjAwCi11bnNwc2M3IzMyLjEyLjE3LjAyLjAwI0luZHVjdG9ycyMzMi4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMi4xMi4xNy4wMy4wMCNGZXJyaXRlcyMzMi4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMi4xMi4xNy4wNC4wMCNTdGF0aWMgY29udmVydGVycyMzMi4xMi4xNy4wMC4wMAotdW5zcHNjNyMzMi4xMi4xNy4wNS4wMCNJbnZlcnRlcnMjMzIuMTIuMTcuMDAuMDAKLXVuc3BzYzcjMzIuMTIuMTcuMDYuMDAjUmVzaXN0b3Igb3IgY2FwYWNpdG9yIChSL0MpIG5ldHdvcmtzIzMyLjEyLjE3LjAwLjAwCi11bnNwc2M3IzMyLjEzLjAwLjAwLjAwI1Bhc3NpdmUgY29tcG9uZW50cyMzMi4wMC4wMC4wMC4wMAotdW5zcHNjNyMzMi4xMy4xMC4wMC4wMCNUZW1wZXJhdHVyZSBjb250cm9scyMzMi4xMy4wMC4wMC4wMAotdW5zcHNjNyMzMi4xMy4xMC4wMS4wMCNIZWF0IHNpbmtzIzMyLjEzLjEwLjAwLjAwCi11bnNwc2M3IzM5LjAwLjAwLjAwLjAwI0xpZ2h0aW5nIGFuZCBFbGVjdHJpY2FsIEFjY2Vzc29yaWVzIGFuZCBTdXBwbGllcyMzOS4wMC4wMC4wMC4wMAotdW5zcHNjNyMzOS4xMC4wMC4wMC4wMCNMYW1wcyBhbmQgbGlnaHRidWxicyBhbmQgbGFtcCBjb21wb25lbnRzIzM5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzM5LjEwLjE2LjAwLjAwI0xhbXBzIzM5LjEwLjAwLjAwLjAwCi11bnNwc2M3IzM5LjEwLjE2LjAxLjAwI0hhbG9nZW4gbGFtcHMjMzkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzkuMTAuMTYuMDIuMDAjTWVkaWNhbCBsYW1wcyMzOS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzOS4xMC4xNi4wMy4wMCNTb2xhciBsYW1wcyMzOS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzOS4xMC4xNi4wNC4wMCNBbGNvaG9sIGxhbXBzIzM5LjEwLjE2LjAwLjAwCi11bnNwc2M3IzM5LjEwLjE2LjA1LjAwI0ZsdW9yZXNjZW50IGxhbXBzIzM5LjEwLjE2LjAwLjAwCi11bnNwc2M3IzM5LjEwLjE2LjA2LjAwI0FyYyBsYW1wcyMzOS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzOS4xMC4xNi4wOC4wMCNTaGFkb3dsZXNzIG9yIHNjaWFseXRpYyBvcGVyYXRpb24gbGlnaHQjMzkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzkuMTAuMTYuMDkuMDAjU3RhZ2Ugb3Igc3R1ZGlvIGxhbXBzIzM5LjEwLjE2LjAwLjAwCi11bnNwc2M3IzM5LjEwLjE2LjEwLjAwI0ZpbGFtZW50IGxhbXBzIzM5LjEwLjE2LjAwLjAwCi11bnNwc2M3IzM5LjEwLjE2LjExLjAwI0hpZ2ggaW50ZW5zaXR5IGRpc2NoYXJnZSAoSElEKSBsYW1wcyMzOS4xMC4xNi4wMC4wMAotdW5zcHNjNyMzOS4xMC4xNi4xMi4wMCNJbmNhbmRlc2NlbnQgbGFtcHMjMzkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzkuMTAuMTYuMTMuMDAjSW5mcmFyZWQgbGFtcHMjMzkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzkuMTAuMTYuMTQuMDAjTWV0YWwgaGFsaWRlIGxhbXBzIzM5LjEwLjE2LjAwLjAwCi11bnNwc2M3IzM5LjEwLjE2LjE1LjAwI1ZhcG9yIGxhbXBzIzM5LjEwLjE2LjAwLjAwCi11bnNwc2M3IzM5LjEwLjE2LjE2LjAwI1VsdHJhdmlvbGV0IChVVikgbGFtcHMjMzkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzkuMTAuMTYuMTcuMDAjSGlnaCBwcmVzc3VyZSBzb2RpdW0gbGFtcHMjMzkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjMzkuMTAuMTcuMDAuMDAjQnVsYiBnbGFzcyMzOS4xMC4wMC4wMC4wMAotdW5zcHNjNyMzOS4xMC4xNy4wMS4wMCNGbHVvcmVzY2VudCB0dWJlcyMzOS4xMC4xNy4wMC4wMAotdW5zcHNjNyMzOS4xMC4xOC4wMC4wMCNMYW1wIGNvbXBvbmVudHMjMzkuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzkuMTAuMTguMDEuMDAjTGFtcCBmaWxhbWVudCMzOS4xMC4xOC4wMC4wMAotdW5zcHNjNyMzOS4xMC4xOS4wMC4wMCNNb2JpbGUgYW5kIGZpeGVkIGZsb29kbGlnaHRpbmcjMzkuMTAuMDAuMDAuMDAKLXVuc3BzYzcjMzkuMTAuMTkuMDEuMDAjTGlnaHQgdG93ZXIjMzkuMTAuMTkuMDAuMDAKLXVuc3BzYzcjMzkuMTAuMTkuMDIuMDAjTGlnaHQgY2FydCMzOS4xMC4xOS4wMC4wMAotdW5zcHNjNyMzOS4xMC4xOS4wMy4wMCNMaWdodCBzdGFuZCMzOS4xMC4xOS4wMC4wMAotdW5zcHNjNyMzOS4xMS4wMC4wMC4wMCNMaWdodGluZyBhbmQgZml4dHVyZXMgYW5kIGFjY2Vzc29yaWVzIzM5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjAwLjAwI0ludGVyaW9yIGxpZ2h0aW5nIGFuZCBmaXh0dXJlcyMzOS4xMS4wMC4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNS4wMS4wMCNGbHVvcmVzY2VudCBmaXh0dXJlcyMzOS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNS4wMi4wMCNWYW5pdHkgbGlnaHRpbmcjMzkuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTUuMDMuMDAjV2FsbCBmaXh0dXJlcyMzOS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNS4wNC4wMCNTdGFnZSBvciBzdHVkaW8gbGlnaHRpbmcgc3lzdGVtcyMzOS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNS4wNS4wMCNSZWNlc3NlZCBsaWdodGluZyMzOS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNS4wNi4wMCNDaGFuZGVsaWVycyMzOS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNS4wNy4wMCNEZXNrIGZpeHR1cmVzIzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjA4LjAwI1RyYWNrIGxpZ2h0aW5nIzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjA5LjAwI0Zsb29yIHRvcmNoaWVyZSMzOS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNS4xMC4wMCNUYWJsZSBsYW1wcyMzOS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNS4xMS4wMCNEZWNvcmF0aXZlIGxpZ2h0aW5nIzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjEyLjAwI0xhYm9yYXRvcnkgYmVuY2ggbGlnaHRzIzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjEzLjAwI0ludGVyaW9yIHNvbGFyIGxpZ2h0aW5nIzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjE0LjAwI1RyZWUgbGlnaHRzIzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjE1LjAwI0Rvd25saWdodGluZyBmaXh0dXJlcyMzOS4xMS4xNS4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNS4xNi4wMCNUYXNrIGxpZ2h0aW5nIGZpeHR1cmVzIzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjE3LjAwI1dheCBjYW5kbGVzIzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjE4LjAwI0hhbmQgb3IgZXh0ZW5zaW9uIGxpZ2h0IzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjE5LjAwI0NhbmRsZSBob2xkZXJzIzM5LjExLjE1LjAwLjAwCi11bnNwc2M3IzM5LjExLjE1LjIwLjAwI0hhbG9nZW4gbGlnaHRpbmcgZml4dHVyZXMjMzkuMTEuMTUuMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTYuMDAuMDAjRXh0ZXJpb3IgbGlnaHRpbmcgYW5kIGZpeHR1cmVzIzM5LjExLjAwLjAwLjAwCi11bnNwc2M3IzM5LjExLjE2LjAzLjAwI1JvYWR3YXkgb3IgaGlnaHdheSBsaWdodGluZyMzOS4xMS4xNi4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNi4wNS4wMCNMYW5kc2NhcGUgb3IgYXJlYSBsaWdodGluZyMzOS4xMS4xNi4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNi4wNi4wMCNVbmRlcndhdGVyIGxpZ2h0aW5nIzM5LjExLjE2LjAwLjAwCi11bnNwc2M3IzM5LjExLjE2LjA4LjAwI1Jlc2lkZW50aWFsIHN0cmVldCBsaWdodHMjMzkuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTYuMDkuMDAjS2Vyb3NlbmUgb3IgcHJvcGFuZSBvciBidXRhbmUgbGFudGVybnMjMzkuMTEuMTYuMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTcuMDAuMDAjRW1lcmdlbmN5IGxpZ2h0aW5nIzM5LjExLjAwLjAwLjAwCi11bnNwc2M3IzM5LjExLjE3LjAyLjAwI0ZsYXNobGlnaHRzIzM5LjExLjE3LjAwLjAwCi11bnNwc2M3IzM5LjExLjE3LjAzLjAwI1N0b3JtIGxpZ2h0cyMzOS4xMS4xNy4wMC4wMAotdW5zcHNjNyMzOS4xMS4xNy4wNC4wMCNGbG9vZCBsaWdodHMjMzkuMTEuMTcuMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTcuMDUuMDAjTGlnaHQgc3RpY2tzIzM5LjExLjE3LjAwLjAwCi11bnNwc2M3IzM5LjExLjE4LjAwLjAwI0xpZ2h0aW5nIGFjY2Vzc29yaWVzIzM5LjExLjAwLjAwLjAwCi11bnNwc2M3IzM5LjExLjE4LjAxLjAwI0xhbXAgYmFsbGFzdHMjMzkuMTEuMTguMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTguMDIuMDAjTGFtcCBob3VzaW5ncyMzOS4xMS4xOC4wMC4wMAotdW5zcHNjNyMzOS4xMS4xOC4wMy4wMCNMYW1wIHNvY2tldHMjMzkuMTEuMTguMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTguMDQuMDAjTGFtcCBiYXNlcyMzOS4xMS4xOC4wMC4wMAotdW5zcHNjNyMzOS4xMS4xOC4wNS4wMCNMYW1wIGJyYWNrZXRzIzM5LjExLjE4LjAwLjAwCi11bnNwc2M3IzM5LjExLjE4LjA2LjAwI0xpZ2h0IGJveGVzIzM5LjExLjE4LjAwLjAwCi11bnNwc2M3IzM5LjExLjE4LjA4LjAwI0dyaWxsZXMjMzkuMTEuMTguMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTguMDkuMDAjTGlnaHQgY29uZGl0aW9uZXIgZmlsdGVycyMzOS4xMS4xOC4wMC4wMAotdW5zcHNjNyMzOS4xMS4xOC4xMC4wMCNMYW1wIHN0YXJ0ZXIjMzkuMTEuMTguMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTguMTEuMDAjRWxlY3RyaWZpZWQgdHJhY2tzIzM5LjExLjE4LjAwLjAwCi11bnNwc2M3IzM5LjExLjE4LjEyLjAwI0xhbXAgY292ZXJzIzM5LjExLjE4LjAwLjAwCi11bnNwc2M3IzM5LjExLjE5LjAwLjAwI0hhemFyZG91cyBsb2NhdGlvbiBsaWdodGluZyBhbmQgZml4dHVyZXMjMzkuMTEuMDAuMDAuMDAKLXVuc3BzYzcjMzkuMTEuMTkuMDEuMDAjSGF6YXJkb3VzIGxvY2F0aW9uIGZsb3VyZXNjZW50IGZpeHR1cmVzIzM5LjExLjE5LjAwLjAwCi11bnNwc2M3IzM5LjExLjE5LjAyLjAwI0hhemFyZG91cyBsb2NhdGlvbiBpbmNhbmRlc2NlbnQgZml4dHVyZXMjMzkuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDAuMDAuMDAuMDAuMDAjRGlzdHJpYnV0aW9uIGFuZCBDb25kaXRpb25pbmcgU3lzdGVtcyBhbmQgRXF1aXBtZW50IGFuZCBDb21wb25lbnRzIzQwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzQwLjEwLjAwLjAwLjAwI0hlYXRpbmcgYW5kIHZlbnRpbGF0aW9uIGFuZCBhaXIgY2lyY3VsYXRpb24jNDAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTUuMDAuMDAjVmVudGlsYXRpb24jNDAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTUuMDEuMDAjQWlyIGNvbGxlY3RvcnMjNDAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTUuMDIuMDAjQWlyIGV4aGF1c3RlcnMjNDAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTUuMDMuMDAjVmVudHMjNDAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTUuMDQuMDAjVmVudGlsYXRpb24gZGFtcGVycyM0MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0MC4xMC4xNS4wNS4wMCNBaXIgZGlmZnVzZXJzIzQwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE1LjA2LjAwI1ZlbnRpbGF0aW9uIHBpcGVzIzQwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE2LjAwLjAwI0FpciBjaXJjdWxhdGlvbiM0MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xNi4wMS4wMCNCbG93ZXJzIzQwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE2LjAyLjAwI0FpciBjaXJjdWxhdG9ycyM0MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xMC4xNi4wMy4wMCNJbXBlbGxlcnMjNDAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTYuMDQuMDAjRmFucyM0MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xMC4xNy4wMC4wMCNDb29saW5nIzQwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQwLjEwLjE3LjAxLjAwI0FpciBjb25kaXRpb25lcnMjNDAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTcuMDIuMDAjQ29vbGluZyBleGNoYW5nZXJzIzQwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE3LjAzLjAwI0V2YXBvcmF0aXZlIGNvb2xlcnMjNDAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTcuMDQuMDAjQ29uZGVuc2luZyB1bml0cyM0MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4wMC4wMCNIZWF0aW5nIGVxdWlwbWVudCM0MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4wMS4wMCNSYWRpYXRvcnMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMDIuMDAjSGVhdCBleGNoYW5nZXJzIzQwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE4LjAzLjAwI0ZpcmVwbGFjZXMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMDQuMDAjSGVhdGVycyM0MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4wNS4wMCNGdXJuYWNlcyM0MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4wNi4wMCNIZWF0IHB1bXBzIzQwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE4LjA3LjAwI1NvbGFyIGhlYXRpbmcgdW5pdHMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMDguMDAjSGVhdGluZyBzdG92ZXMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMDkuMDAjQ2lyY3VsYXRpb24gaGVhdGVycyM0MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4xMC4wMCNDb2lsIGR1Y3QgaGVhdGVycyM0MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4xMS4wMCNDb252ZWN0aW9uIGhlYXRlcnMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMTIuMDAjRGl2aWRlZCBleGNoYW5nZXJzIzQwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE4LjEzLjAwI0RvdWJsZSBzcGxpdCBleGNoYW5nZXJzIzQwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE4LjE0LjAwI0Zpbm5lZCB0dWJ1bGFyIGhlYXRlcnMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMTUuMDAjSW1tZXJzaW9uIGhlYXRlcnMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMTYuMDAjS2V0dGxlIGV4Y2hhbmdlcnMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMTcuMDAjT25lIHBhc3MgZXhjaGFuZ2VycyM0MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4xOC4wMCNQcm9jZXNzIGFpciBoZWF0ZXJzIzQwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE4LjE5LjAwI1NwYWNlIGhlYXRlcnMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMjAuMDAjU3BsaXQgZXhjaGFuZ2VycyM0MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4yMS4wMCNTdHJpcCBoZWF0ZXJzIzQwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE4LjIyLjAwI1R1YnVsYXIgaGVhdGVycyM0MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4yMy4wMCNUd28gcGFzcyBleGNoYW5nZXJzIzQwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE4LjI0LjAwI1F1YXJ0eiBoZWF0ZXIjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTguMjUuMDAjRG9tZXN0aWMgd2F0ZXIgaGVhdGVycyM0MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOC4yNi4wMCNDb21tZXJjaWFsIHdhdGVyIGhlYXRlcnMjNDAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTkuMDAuMDAjSHVtaWRpdHkgY29udHJvbCM0MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MC4xMC4xOS4wMS4wMCNWYXBvcml6ZXJzIzQwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzQwLjEwLjE5LjAyLjAwI0RlaHVtaWRpZmllcnMjNDAuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMTkuMDMuMDAjSHVtaWRpZmllcnMjNDAuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDAuMTAuMjAuMDAuMDAjQm9pbGVycyM0MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MC4xMC4yMC4wMS4wMCNGaXJlIHR1YmUgYm9pbGVycyM0MC4xMC4yMC4wMC4wMAotdW5zcHNjNyM0MC4xMC4yMC4wMi4wMCNXYXRlciB0dWJlIGJvaWxlciM0MC4xMC4yMC4wMC4wMAotdW5zcHNjNyM0MC4xMC4yMC4wMy4wMCNFbGVjdHJpYyBib2lsZXJzIzQwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjAwLjAwLjAwI0ZsdWlkIGFuZCBnYXMgZGlzdHJpYnV0aW9uIzQwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjE1LjAwLjAwI0ZsdWlkIGFuZCBnYXMgY29uZHVpdHMjNDAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTUuMDIuMDAjRHVjdHMjNDAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTUuMDQuMDAjSG9zZXMjNDAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMDAuMDAjVmFsdmVzIzQwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjAxLjAwI0NoZWNrIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4wMi4wMCNOZWVkbGUgdmFsdmVzIzQwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjAzLjAwI1BuZXVtYXRpYyB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMDQuMDAjU2FmZXR5IHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4wNS4wMCNTb2xlbm9pZCB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMDYuMDAjUmVsaWVmIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4wNy4wMCNCYWxsIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4wOC4wMCNIeWRyYXVsaWMgdmFsdmVzIzQwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjA5LjAwI0NvbnRyb2wgdmFsdmVzIzQwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjEwLjAwI0Zsb2F0IHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4xMS4wMCNHbG9iZSB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMTIuMDAjRXhwYW5zaW9uIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4xMy4wMCNHYXRlIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4xNC4wMCNCdXR0ZXJmbHkgdmFsdmVzIzQwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjE1LjAwI0ZsYXAgdmFsdmVzIzQwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjE2LjAwI1ZhbHZlIHBhcnRzIGFuZCBhY2Nlc3NvcmllcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4xNy4wMCNBbmdsZSBnbG9iZSB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMTguMDAjQmFsbCBjaGVjayB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMTkuMDAjQnV0dGVyZmx5IGx1ZyBwYXR0ZXJuIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4yMC4wMCNCdXR0ZXJmbHkgd2FmZXIgcGF0dGVybiB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMjEuMDAjRGlhcGhyYWdtIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4yMi4wMCNJbmxpbmUgY2hlY2sgdmFsdmVzIzQwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjIzLjAwI0tuaWZlIGdhdGUgdmFsdmVzIzQwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjI0LjAwI0x1YnJpY2F0ZWQgcGx1ZyB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMjUuMDAjTXVkIG9yIHNsdXNoIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4yNi4wMCNOb25sdWJyaWNhdGVkIHBsdWcgdmFsdmVzIzQwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjI3LjAwI09yaWZpY2UgdmFsdmVzIzQwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE2LjI4LjAwI1BpbG90IHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4yOS4wMCNQaW5jaCB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMzAuMDAjUGlzdG9uIGNoZWNrIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4zMS4wMCNQdW1wIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4zMi4wMCNTZW50aW5lbCB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMzMuMDAjU2xpZGVyIHZhbHZlcyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4zNC4wMCNTd2luZyBjaGVjayB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMzUuMDAjVHVyYmluZSB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTYuMzYuMDAjVmFsdmUga2l0cyM0MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNi4zNy4wMCNXYWZlciBjaGVjayB2YWx2ZXMjNDAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMDAuMDAjSGFyZHdhcmUgYW5kIGZpdHRpbmdzIzQwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjAxLjAwI0RyYWlucyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4wMi4wMCNGYXVjZXRzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjAzLjAwI1Nob3dlciBoZWFkcyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4wNC4wMCNTcGlnb3RzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjA1LjAwI1Nwb3V0cyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4wNi4wMCNQaXBlIHBsdWdzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjA3LjAwI1BpcGUgY2xhbXBzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjA4LjAwI0xpcXVpZCB0cmFwcyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4wOS4wMCNTdGVhbSB0cmFwcyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4xMC4wMCNQbHVtYmluZyBmbGFuZ2VzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjExLjAwI01ldGFsIG9yIHJ1YmJlciBleHBhbnNpb24gam9pbnRzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjEyLjAwI1BpcGUgY2FwcyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4xMy4wMCNQbHVtYmluZyB1bmlvbnMjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMTQuMDAjUGx1bWJpbmcgY3Jvc3NlcyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4xNS4wMCNQbHVtYmluZyBuaXBwbGVzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjE2LjAwI1AgdHJhcHMjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMTcuMDAjUGlwZSBiZW5kcyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4xOC4wMCNQbHVtYmluZyBlbGJvd3MjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMTkuMDAjUGx1bWJpbmcgYWRhcHRlcnMjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMjAuMDAjUGx1bWJpbmcgY29ubmVjdG9ycyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4yMS4wMCNQbHVtYmluZyBjb3VwbGluZ3MjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMjIuMDAjSGFsZiBjb3VwbGluZ3MjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMjMuMDAjUmVkdWNpbmcgY291cGxpbmdzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjI0LjAwI1BsdW1iaW5nIGJ1c2hpbmdzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjI1LjAwI1BsdW1iaW5nIGhhbmdlcnMjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMjYuMDAjSHlkcmFudHMjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMjcuMDAjUGx1bWJpbmcgdmVudHMjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMjguMDAjRmx1aWQgcmVndWxhdG9ycyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4yOS4wMCNQbHVtYmluZyB0ZWVzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjMwLjAwI1N0cmFpbmVycyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4zMS4wMCNOb3p6bGVzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjMyLjAwI1BsdW1iaW5nIHNwaWRlcnMjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTcuMzMuMDAjUGlwZSBmaXR0aW5nIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjM0LjAwI0hvc2UgZml0dGluZyM0MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNC4xNy4zNS4wMCNGdW5uZWxzIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjM2LjAwI0dyZWFzZSBmaXR0aW5nIzQwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE3LjM3LjAwI0RpYXBocmFnbXMjNDAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTguMDAuMDAjVHViZSBhbmQgdHViaW5nIzQwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjE4LjAxLjAwI0ZlcnJvdXMgYWxsb3kgdHViaW5nIzQwLjE0LjE4LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE4LjAyLjAwI0NvcHBlciB0dWJpbmcjNDAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTguMDMuMDAjVGl0YW5pdW0gdHViaW5nIzQwLjE0LjE4LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE4LjA0LjAwI01hZ25lc2l1bSB0dWJpbmcjNDAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTguMDUuMDAjVGluIHR1YmluZyM0MC4xNC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xNC4xOC4wNi4wMCNCcmFzcyB0dWJpbmcjNDAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTguMDcuMDAjTGVhZCB0dWJpbmcjNDAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTguMDguMDAjQnJvbnplIHR1YmluZyM0MC4xNC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xNC4xOC4wOS4wMCNaaW5jIHR1YmluZyM0MC4xNC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xNC4xOC4xMC4wMCNTdGVlbCB0dWJpbmcjNDAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTguMTEuMDAjSXJvbiB0dWJpbmcjNDAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTguMTIuMDAjQ2VtZW50IHR1YmluZyM0MC4xNC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xNC4xOC4xMy4wMCNQbGFzdGljIHR1YmluZyM0MC4xNC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xNC4xOC4xNC4wMCNSdWJiZXIgdHViaW5nIzQwLjE0LjE4LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE4LjE1LjAwI0dsYXNzIHR1YmluZyM0MC4xNC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xNC4xOC4xNi4wMCNTdG9uZSB0dWJpbmcjNDAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTguMTcuMDAjTm9uIGZlcnJvdXMgYWxsb3kgdHViaW5nIzQwLjE0LjE4LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE4LjE4LjAwI0FsdW1pbnVtIHR1YmluZyM0MC4xNC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xNC4xOC4xOS4wMCNTdGFpbmxlc3Mgc3RlZWwgdHViaW5nIzQwLjE0LjE4LjAwLjAwCi11bnNwc2M3IzQwLjE0LjE4LjIwLjAwI1ByZWNpb3VzIG1ldGFsIHR1YmluZyM0MC4xNC4xOC4wMC4wMAotdW5zcHNjNyM0MC4xNC4xOC4yMS4wMCNOeWxvbiB0dWJpbmcjNDAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTkuMDAuMDAjRHVjdHMjNDAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTkuMDEuMDAjRmxleGlibGUgZHVjdHMjNDAuMTQuMTkuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMTkuMDIuMDAjUmlnaWQgZHVjdHMjNDAuMTQuMTkuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjAuMDAuMDAjSG9zZXMjNDAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjAuMDEuMDAjQWNpZCBob3NlcyM0MC4xNC4yMC4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMC4wMi4wMCNBaXIgaG9zZXMjNDAuMTQuMjAuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjAuMDMuMDAjRHJpbGwgaG9zZXMjNDAuMTQuMjAuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjAuMDQuMDAjTWFyaW5lIGhvc2VzIzQwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIwLjA1LjAwI01hdGVyaWFsIGhhbmRsaW5nIGhvc2VzIzQwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIwLjA2LjAwI09pbCBob3NlcyM0MC4xNC4yMC4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMC4wNy4wMCNTcGVjaWFsIGhvc2VzIzQwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIwLjA4LjAwI1dhdGVyIGhvc2VzIzQwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIwLjA5LjAwI0FpciB3YXRlciBnYXMgbXVsdGlwdXJwb3NlIGhvc2VzIzQwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIwLjEwLjAwI1RlZmxvbiBsaW5lZCBob3NlcyM0MC4xNC4yMC4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMS4wMC4wMCNQaXBlIzQwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjAxLjAwI0NhcmJvbiBzdGVlbCBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjAyLjAwI0R1Y3RpbGUgaXJvbiBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjAzLjAwI0hpZ2ggbmlja2VsIGFsbG95IHBpcGUjNDAuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjEuMDQuMDAjSGlnaCB5aWVsZCBzdGVlbCBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjA1LjAwI0ZlcnJpdGljIGFsbG95IHBpcGUjNDAuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjEuMDYuMDAjQWx1bWludW0gcGlwZSM0MC4xNC4yMS4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMS4wNy4wMCNCcmFzcyBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjA4LjAwI0Jyb256ZSBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjA5LjAwI0NvbmNyZXRlIHBpcGUjNDAuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjEuMTAuMDAjQ29wcGVyIHBpcGUjNDAuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjEuMTEuMDAjQ2FzdCBpcm9uIHBpcGUjNDAuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjEuMTIuMDAjTGVhZCBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjEzLjAwI01hZ25lc2l1bSBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjE0LjAwI05vbiBmZXJyb3VzIHBpcGUjNDAuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjEuMTUuMDAjUGxhc3RpYyBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjE2LjAwI1J1YmJlciBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjE3LjAwI1N0YWlubGVzcyBzdGVlbCBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjE4LjAwI1RpbiBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjE5LjAwI1RpdGFuaXVtIHBpcGUjNDAuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjEuMjAuMDAjWmluYyBwaXBlIzQwLjE0LjIxLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIxLjIxLjAwI0hvc2UgcmVlbHMjNDAuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjIuMDAuMDAjRmx1aWQgYW5kIGdhcyByZWd1bGF0b3JzIzQwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIyLjAxLjAwI0dhcyByZWd1bGF0b3JzIzQwLjE0LjIyLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIyLjAyLjAwI0ZsdWlkIHJlZ3VsYXRvcnMjNDAuMTQuMjIuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjMuMDAuMDAjUGlwZSBmaXR0aW5ncyM0MC4xNC4wMC4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMy4wMS4wMCNQaXBlIGFuZ2xlIGZhY2UgcmluZ3MjNDAuMTQuMjMuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjMuMDIuMDAjUGlwZSBicmFuY2ggb3V0bGV0cyM0MC4xNC4yMy4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMy4wMy4wMCNQaXBlIGxhdGVyYWxzIzQwLjE0LjIzLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIzLjA0LjAwI1BpcGUgaW5zZXJ0cyM0MC4xNC4yMy4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMy4wNS4wMCNQaXBlIHJlZHVjZXJzIzQwLjE0LjIzLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIzLjA2LjAwI1BpcGUgc2FkZGxlcyM0MC4xNC4yMy4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMy4wNy4wMCNQaXBlIHN0dWJlbmRzIzQwLjE0LjIzLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIzLjA4LjAwI1BpcGUgd3llcyM0MC4xNC4yMy4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMy4wOS4wMCNQaXBlIGJlbmRzIzQwLjE0LjIzLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIzLjEwLjAwI1BpcGUgY2FwcyM0MC4xNC4yMy4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMy4xMS4wMCNQaXBlIGhhbGYgY291cGxpbmdzIzQwLjE0LjIzLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIzLjEyLjAwI1BpcGUgZXhwYW5zaW9uIGpvaW50cyM0MC4xNC4yMy4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMy4xMy4wMCNQaXBlIHBsdWdzIzQwLjE0LjIzLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIzLjE0LjAwI1BpcGUgYnVzaGluZ3MjNDAuMTQuMjMuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjMuMTUuMDAjUGlwZSBjb3VwbGluZ3MjNDAuMTQuMjMuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjMuMTYuMDAjUGlwZSBjcm9zc2VzIzQwLjE0LjIzLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIzLjE3LjAwI1BpcGUgZWxib3dzIzQwLjE0LjIzLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIzLjE4LjAwI1BpcGUgbmlwcGxlcyM0MC4xNC4yMy4wMC4wMAotdW5zcHNjNyM0MC4xNC4yMy4xOS4wMCNQaXBlIHRlZXMjNDAuMTQuMjMuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjMuMjAuMDAjUGlwZSB1bmlvbnMjNDAuMTQuMjMuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjMuMjEuMDAjUGlwZSByZWR1Y2luZyBjb3VwbGluZ3MjNDAuMTQuMjMuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjMuMjIuMDAjUGlwZSByZXBhaXIgY2xhbXBzIzQwLjE0LjIzLjAwLjAwCi11bnNwc2M3IzQwLjE0LjIzLjIzLjAwI1J1cHR1cmUgZGlzayM0MC4xNC4yMy4wMC4wMAotdW5zcHNjNyM0MC4xNC4yNC4wMC4wMCNQaXBlIGZsYW5nZXMjNDAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjQuMDEuMDAjQW1tb25pYSBmbGFuZ2VzIzQwLjE0LjI0LjAwLjAwCi11bnNwc2M3IzQwLjE0LjI0LjAyLjAwI0JhY2t1cCBmbGFuZ2VzIzQwLjE0LjI0LjAwLjAwCi11bnNwc2M3IzQwLjE0LjI0LjAzLjAwI0JsaW5kIGZsYW5nZXMjNDAuMTQuMjQuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjQuMDQuMDAjTGFwam9pbnQgZmxhbmdlcyM0MC4xNC4yNC4wMC4wMAotdW5zcHNjNyM0MC4xNC4yNC4wNS4wMCNMb25nIHdlbGRuZWNrIGZsYW5nZXMjNDAuMTQuMjQuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjQuMDYuMDAjT3JpZmljZSBmbGFuZ2VzIzQwLjE0LjI0LjAwLjAwCi11bnNwc2M3IzQwLjE0LjI0LjA3LjAwI1BsYXRlIGZsYW5nZXMjNDAuMTQuMjQuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjQuMDguMDAjU2xpcG9uIGZsYW5nZXMjNDAuMTQuMjQuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjQuMDkuMDAjU29ja2V0d2VsZCBmbGFuZ2VzIzQwLjE0LjI0LjAwLjAwCi11bnNwc2M3IzQwLjE0LjI0LjEwLjAwI1NwZWN0YWNsZSBibGluZCBmbGFuZ2VzIzQwLjE0LjI0LjAwLjAwCi11bnNwc2M3IzQwLjE0LjI0LjExLjAwI1RocmVhZGVkIGZsYW5nZXMjNDAuMTQuMjQuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjQuMTIuMDAjV2VsZG5lY2sgZmxhbmdlcyM0MC4xNC4yNC4wMC4wMAotdW5zcHNjNyM0MC4xNC4yNS4wMC4wMCNUcmFwcyBhbmQgc3RyYWluZXJzIzQwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjI1LjAxLjAwI0xpcXVpZCBzdHJhaW5lcnMjNDAuMTQuMjUuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjUuMDIuMDAjTGlxdWlkIHRyYXBzIzQwLjE0LjI1LjAwLjAwCi11bnNwc2M3IzQwLjE0LjI1LjAzLjAwI1N0ZWFtIHRyYXBzIzQwLjE0LjI1LjAwLjAwCi11bnNwc2M3IzQwLjE0LjI1LjA0LjAwI1N0ZWFtIHN0cmFpbmVycyM0MC4xNC4yNS4wMC4wMAotdW5zcHNjNyM0MC4xNC4yNi4wMC4wMCNUdWJlIGZpdHRpbmdzIzQwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzQwLjE0LjI2LjAxLjAwI0JyYXNzIHR1YmUgZml0dGluZ3MjNDAuMTQuMjYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjYuMDIuMDAjQ2FyYm9uIHN0ZWVsIHR1YmUgZml0dGluZ3MjNDAuMTQuMjYuMDAuMDAKLXVuc3BzYzcjNDAuMTQuMjYuMDMuMDAjU3RhaW5sZXNzIHN0ZWVsIHR1YmUgZml0dGluZ3MjNDAuMTQuMjYuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMDAuMDAuMDAjSW5kdXN0cmlhbCBwdW1wcyBhbmQgY29tcHJlc3NvcnMjNDAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMDAuMDAjUHVtcHMjNDAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMDEuMDAjQWlyIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjAyLjAwI1ZhY3V1bSBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4wMy4wMCNDZW50cmlmdWdhbCBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4wNC4wMCNDaXJjdWxhdGluZyBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4wNS4wMCNEb3NpbmcgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMDYuMDAjSGFuZCBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4wNy4wMCNJcnJpZ2F0aW9uIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjA4LjAwI011ZCBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4wOS4wMCNSZWNpcHJvY2F0aW5nIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjEwLjAwI1dhdGVyIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjExLjAwI1dlbGwgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMTIuMDAjU3VtcCBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4xMy4wMCNTdWJtZXJzaWJsZSBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4xNC4wMCNTdGVhbSBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4xNS4wMCNTb2xlbm9pZCBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4xNi4wMCNTaGVhciBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4xNy4wMCNTZXdhZ2UgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMTguMDAjU2VhbGxlc3MgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMTkuMDAjU2FuaXRhcnkgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMjAuMDAjU2FtcGxpbmcgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMjEuMDAjUm90YXJ5IHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjIyLjAwI1JldmVyc2Ugb3Ntb3NpcyBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4yMy4wMCNQb3NpdGl2ZSBkaXNwbGFjZW1lbnQgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMjQuMDAjT2lsIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjI1LjAwI1NsdWRnZSBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4yNi4wMCNUdXJiaW5lIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjI3LjAwI1BsdW5nZXIgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMjguMDAjT3NjaWxsYXRpbmcgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMjkuMDAjRHJ1bSBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4zMC4wMCNEcmVkZ2UgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMzEuMDAjRGV3YXRlcmluZyBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4zMi4wMCNGdWVsIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjMzLjAwI0h5ZHJhdWxpYyBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4zNC4wMCNDcnlvZ2VuaWMgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMzUuMDAjU2x1ZGdlIHB1bXAgc3BhcmUgcGFydHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMzYuMDAjU2V3YWdlIHB1bXAgc3BhcmUgcGFydHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuMzcuMDAjU3VibWVyc2libGUgcHVtcCBzcGFyZSBwYXJ0cyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS4zOC4wMCNXYXRlciBwdW1wIHNwYXJlIHBhcnRzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjM5LjAwI1dlbGwgcHVtcCBzcGFyZSBwYXJ0cyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS40MC4wMCNTdW1wIHB1bXAgc3BhcmUgcGFydHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuNDEuMDAjRG9zaW5nIHB1bXAgc3BhcmUgcGFydHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuNDIuMDAjQ2VudHJpZnVnYWwgcHVtcCBzcGFyZSBwYXJ0cyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS40My4wMCNDaXJjdWxhdGlvbiBwdW1wIHNwYXJlIHBhcnRzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjQ0LjAwI1JvdGFyeSBwdW1wIHNwYXJlIHBhcnRzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjQ1LjAwI1B1bXAgcGFydHMgYW5kIGFjY2Vzc29yaWVzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjQ2LjAwI0F4aWFsIHNwbGl0IHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjQ3LjAwI0RlZXB3ZWxsIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjQ4LjAwI0RpYXBocmFnbSBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS40OS4wMCNEb3VibGUgZGlhcGhyYWdtIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjUwLjAwI0R1cGxleCBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS41MS4wMCNHZWFyIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjUyLjAwI01ldGVyaW5nIG9yIGluamVjdGlvbiBvciBwcm9wb3J0aW9uaW5nIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE1LjUzLjAwI1Byb2dyZXNzaXZlIGNhdml0eSBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS41NC4wMCNSYW0gcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuNTUuMDAjUm90YXJ5IGNhbSBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS41Ni4wMCNSb3RhcnkgbG9iZSBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS41Ny4wMCNSb3RhdGluZyBwaXN0b24gcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuNTguMDAjU2NyZXcgUHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuNTkuMDAjU2ltcGxleCBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS42MC4wMCNTbGlkaW5nIHZhbmUgcHVtcHMjNDAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTUuNjEuMDAjVHJpcGxleCBwdW1wcyM0MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNS42Mi4wMCNXb3JtIHB1bXBzIzQwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE2LjAwLjAwI0NvbXByZXNzb3JzIzQwLjE1LjAwLjAwLjAwCi11bnNwc2M3IzQwLjE1LjE2LjAxLjAwI0FpciBjb21wcmVzc29ycyM0MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNi4wMi4wMCNBeGlhbCBmbG93IGNvbXByZXNzb3JzIzQwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE2LjAzLjAwI0RpYXBocmFnbSBjb21wcmVzc29ycyM0MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNi4wNC4wMCNHYXMgY29tcHJlc3NvcnMjNDAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTYuMDUuMDAjTW90b3IgY29tcHJlc3NvcnMjNDAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTYuMDYuMDAjUmVjaXByb2NhdGluZyBjb21wcmVzc29ycyM0MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNi4wNy4wMCNSZWZyaWdlcmFudCBjb21wcmVzc29ycyM0MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNi4wOC4wMCNSb3RhcnkgY29tcHJlc3NvcnMjNDAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTYuMDkuMDAjU2NyZXcgY29tcHJlc3NvcnMjNDAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTYuMTAuMDAjQ29tcHJlc3NvciBwYXJ0cyBhbmQgYWNjZXNzb3JpZXMjNDAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTYuMTEuMDAjQmFycmVsIGNvbXByZXNzb3JzIzQwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE2LjEyLjAwI0NlbnRyaWZ1Z2FsIGNvbXByZXNzb3JzIzQwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE2LjEzLjAwI0NvbWJpbmF0aW9uIGNvbXByZXNzb3JzIzQwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE2LjE0LjAwI1NlbWkgcmFkaWFsIGNvbXByZXNzb3JzIzQwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE2LjE1LjAwI1R1cmJvIGNvbXByZXNzb3JzIzQwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzQwLjE1LjE2LjE2LjAwI0NvbXByZXNzb3Iga2l0cyM0MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNy4wMC4wMCNQdW1wIHBhcnRzIGFuZCBhY2Nlc3NvcmllcyM0MC4xNS4wMC4wMC4wMAotdW5zcHNjNyM0MC4xNS4xNy4wMS4wMCNQdW1wIGNhc2luZ3MjNDAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTUuMTcuMDIuMDAjUHVtcCBwYWNraW5ncyM0MC4xNS4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNi4wMC4wMC4wMCNJbmR1c3RyaWFsIGZpbHRlcmluZyBhbmQgcHVyaWZpY2F0aW9uIzQwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzQwLjE2LjE1LjAwLjAwI0ZpbHRlcnMjNDAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMDEuMDAjVmFjdXVtIGZpbHRlcnMjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMDIuMDAjV2F0ZXIgZmlsdGVycyM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4wMy4wMCNEdXN0IGNvbGxlY3RvcnMjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMDQuMDAjT2lsIGZpbHRlcnMjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMDUuMDAjQWlyIGZpbHRlcnMjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMDYuMDAjRmlsdGVyaW5nIG1hY2hpbmVyeSM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4wNy4wMCNGaWx0ZXIgbWVtYnJhbmVzIzQwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE2LjE1LjA4LjAwI0JhZyBmaWx0ZXJzIzQwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE2LjE1LjA5LjAwI0Fic29ycHRpb24gZmlsdGVycyM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4xMC4wMCNCYWcgZmlsdGVycyM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4xMS4wMCNDb2FsZXNjaW5nIGZpbHRlcnMjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMTIuMDAjRWxlY3Ryb25pYyBmaWx0ZXJzIzQwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzQwLjE2LjE1LjEzLjAwI0Z1ZWwgZmlsdGVycyM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4xNC4wMCNHYXMgcGlwZWxpbmUgZmlsdGVycyM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4xNS4wMCNIeWRyYXVsaWMgZmlsdGVycyM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4xNi4wMCNJbiBsaW5lIGZpbHRlcnMjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMTcuMDAjTGlnaHQgZmlsdGVycyM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4xOC4wMCNNaWNyb2ZpYmVyIGZpbHRlcnMjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMTkuMDAjUGFuZWwgZmlsdGVycyM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4yMC4wMCNSYWRpYWwgZmluIGZpbHRlcnMjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMjEuMDAjRmlsdGVyIEJhc2UjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMjIuMDAjRmlsdGVyIEZpbnMjNDAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTUuMjMuMDAjRnVlbCM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNS4yNC4wMCNQYWludCM0MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNi4wMC4wMCNQdXJpZmljYXRpb24jNDAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTYuMDEuMDAjQWlyIHNjcnViYmVycyM0MC4xNi4xNi4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNi4wMi4wMCNBaXIgY2xlYW5lcnMjNDAuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTcuMDAuMDAjU2VwYXJhdG9ycyM0MC4xNi4wMC4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNy4wMS4wMCNDZW50cmlmdWdlcyM0MC4xNi4xNy4wMC4wMAotdW5zcHNjNyM0MC4xNi4xNy4wMi4wMCNXZXQgc2NydWJiZXJzIzQwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzQwLjE2LjE3LjAzLjAwI01pc3QgZWxpbWluYXRvcnMjNDAuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTguMDAuMDAjRmlsdGVyIG1lZGlhIzQwLjE2LjAwLjAwLjAwCi11bnNwc2M3IzQwLjE2LjE4LjAxLjAwI01ldGFsIGZhYnJpYyBtZWRpYSM0MC4xNi4xOC4wMC4wMAotdW5zcHNjNyM0MC4xNi4xOC4wMi4wMCNQcmVzc2VkIGZlbHRzIzQwLjE2LjE4LjAwLjAwCi11bnNwc2M3IzQwLjE2LjE4LjAzLjAwI0ZpbHRlciBwYXBlcnMjNDAuMTYuMTguMDAuMDAKLXVuc3BzYzcjNDAuMTYuMTguMDUuMDAjRmlsdGVyIGNsb3RoIzQwLjE2LjE4LjAwLjAwCi11bnNwc2M3IzQxLjAwLjAwLjAwLjAwI0xhYm9yYXRvcnkgYW5kIE1lYXN1cmluZyBhbmQgT2JzZXJ2aW5nIGFuZCBUZXN0aW5nIEVxdWlwbWVudCM0MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4wMC4wMC4wMCNMYWJvcmF0b3J5IGFuZCBzY2llbnRpZmljIGVxdWlwbWVudCM0MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4xNS4wMC4wMCNMYWJvcmF0b3J5IGJsZW5kaW5nIGFuZCBkaXNwZXJzaW5nIGFuZCBob21vZ2VuaXppbmcgYW5kIG1peGluZyBhbmQgc3RpcnJpbmcgZXF1aXBtZW50IzQxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjE1LjAxLjAwI01peGVycyBvciBibGVuZGVycyBvciBlbXVsc2lmaWVycyM0MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4xNS4wMi4wMCNTdG9tYWNoZXJzIzQxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE1LjAzLjAwI0xhYm9yYXRvcnkgc3ByYXllcnMjNDEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTUuMDQuMDAjSG9tb2dlbmlzZXJzIzQxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE1LjA1LjAwI0ZyZW5jaCBwcmVzc3VyZSBjZWxscyM0MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4xNS4wNi4wMCNSb2xsZXIgbWl4ZXJzIzQxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE1LjA3LjAwI1JvdGF0b3JzIzQxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE1LjA4LjAwI1ZpYnJhdG9ycyM0MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4xNS4xMC4wMCNNYWduZXRpYyBzcGluIGJhcnMgb3IgcmV0cmlldmVycyM0MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4xNS4xMS4wMCNTdGlycmluZyB0YWJsZXMjNDEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTUuMTIuMDAjTXVsdGkgYmFuayBvciBmbG9jY3VsYXRpb24gZXF1aXBtZW50IzQxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE1LjEzLjAwI1NoYWtlcnMjNDEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTUuMTQuMDAjTGFib3JhdG9yeSBjZW50cmlmdWdlcyM0MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4xNS4xNS4wMCNMaXF1aWQgbWVhc3VyaW5nIGNhbnMjNDEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTUuMTYuMDAjTGlxdWlkIGRpc3BlbnNlcnMjNDEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTYuMDAuMDAjTGFib3JhdG9yeSBmaXh0dXJlcyBhbmQgYWNjZXNzb3JpZXMjNDEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTYuMDMuMDAjTGFib3JhdG9yeSBzdGFuZHMgb3IgY2xhbXBzIG9yIHRvbmdzIzQxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE2LjA0LjAwI1NsaWRlIGNvbnRhaW5lcnMjNDEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTYuMDUuMDAjU2xpZGUgZHJ5aW5nIHBsYXRlcyM0MS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMC4xNi4wNy4wMCNNaWNyb3NsaWRlIG1ha2luZyBlcXVpcG1lbnQjNDEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTYuMDguMDAjTWljcm9zbGlkZSBzdG9yYWdlIGVxdWlwbWVudCM0MS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMC4xNi4wOS4wMCNTdGF0aWMgZWxpbWluYXRvcnMjNDEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTYuMTEuMDAjU2xpZGUgd2FybWVycyM0MS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMC4xNy4wMC4wMCNMYWJvcmF0b3J5IGJvcmluZyBhbmQgZ3JpbmRpbmcgYW5kIGN1dHRpbmcgYW5kIGNydXNoaW5nIGFuZCBwcmVzc2luZyBlcXVpcG1lbnQjNDEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTcuMDEuMDAjTWlsbHMjNDEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTcuMDIuMDAjUGVzdGxlIG9yIG1vcnRhcnMjNDEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTcuMDMuMDAjVGlzc3VlIGdyaW5kZXJzIzQxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE3LjA0LjAwI01pY3JvdG9tZXMjNDEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTcuMDUuMDAjQ3J1c2hlcnMgb3IgcHVsdmVyaXNlcnMjNDEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTcuMDYuMDAjRGlzaW50ZWdyYXRvcnMjNDEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTcuMDcuMDAjTGFib3JhdG9yeSBwcmVzc2VzIzQxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE4LjAwLjAwI0xhYm9yYXRvcnkgZWxlY3Ryb24gYW5kIHNvbGlkIHN0YXRlIHBoeXNpY3MgZXF1aXBtZW50IzQxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjE4LjAxLjAwI0VsZWN0cm9uIGd1bnMjNDEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTguMDIuMDAjWCByYXkgZ2VuZXJhdG9ycyM0MS4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MS4xMC4xOC4wMy4wMCNDb3Vsb21ldGVycyM0MS4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MS4xMC4xOC4wNC4wMCNFbGVjdHJvc2NvcGVzIzQxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE4LjA1LjAwI0ZsdXhtZXRlcnMjNDEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTguMDYuMDAjTWFnbmV0b21ldGVycyM0MS4xMC4xOC4wMC4wMAotdW5zcHNjNyM0MS4xMC4xOC4wNy4wMCNFbGVjdHJvbiBkaWZmcmFjdGlvbiBhcHBhcmF0dXMjNDEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTguMDguMDAjTmV1dHJvbiBkaWZmcmFjdGlvbiBhcHBhcmF0dXMjNDEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTguMDkuMDAjT3B0aWNhbCBkaWZmcmFjdGlvbiBhcHBhcmF0dXMjNDEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTguMTAuMDAjRGlmZnJhY3RvbWV0ZXJzIzQxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE5LjAwLjAwI0xhYm9yYXRvcnkgaW9uaWMgZXF1aXBtZW50IzQxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjE5LjAxLjAwI0lvbiBzb3VyY2VzIzQxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzQxLjEwLjE5LjAyLjAwI0lvbiBleGNoYW5nZSBhcHBhcmF0dXMjNDEuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMTkuMDMuMDAjSW9uIGltcGxhbnRhdGlvbiBlcXVpcG1lbnQjNDEuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMDAuMDAjU2FtcGxpbmcgYW5kIHB1cmlmaWNhdGlvbiBlcXVpcG1lbnQjNDEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMDEuMDAjU2FtcGxlIGNoYW5nZXJzIzQxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIwLjAyLjAwI1NhbXBsZSBveGlkaXNlciM0MS4xMC4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMC4wMy4wMCNTYW1wbGUgcHJlcGFyYXRpb24gbGluZSM0MS4xMC4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMC4wNC4wMCNTYW1wbGUgcHJlcGFyYXRpb24gYm9tYnMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMDUuMDAjV2F0ZXIgc2FtcGxlcnMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMDYuMDAjQWlyIHNhbXBsZXJzIG9yIGNvbGxlY3RvcnMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMDcuMDAjUmVhZ2VudCBraXRzIGZvciB1c2Ugd2l0aCBhaXIgc2FtcGxlcnMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMDguMDAjRmlsdGVycyBvciBvdGhlciBzcGFyZSBwYXJ0cyBmb3Igc2FtcGxlcnMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMDkuMDAjRHVzdCBmYWxsIGhvbGRlcnMgb3IgamFycyM0MS4xMC4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMC4xMS4wMCNTdWxwaHVyIGRpb3hpZGUgb3Igc21va2Ugc2FtcGxlcnMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMTIuMDAjU2FtcGxlIGFwcGxpY2F0b3JzIzQxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIwLjEzLjAwI1BsYW50IHNhbXBsZXMgYW5hbHlzaXMgZXF1aXBtZW50IzQxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIwLjE0LjAwI0FpciBwb2xsdXRhbnQgc2FtcGxlcnMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMTUuMDAjV2F0ZXIgcHVyaWZpY2F0aW9uIHJlYWdlbnRzIzQxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIwLjE2LjAwI0RlaW9uaXNhdGlvbiBvciBkZW1pbmVyYWxpc2F0aW9uIGVxdWlwbWVudCM0MS4xMC4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMC4xNy4wMCNCYXNlIGV4Y2hhbmdlIGVxdWlwbWVudCM0MS4xMC4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMC4xOC4wMCNSZXZlcnNlIG9zbW9zaXMgZXF1aXBtZW50IzQxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIwLjE5LjAwI1VsdHJhIHZpb2xldCB3YXRlciBwdXJpZmljYXRpb24gdW5pdHMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMjAuMDAjVWx0cmEgcHVyZSB3YXRlciBzeXN0ZW1zIzQxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIwLjIxLjAwI1dhdGVyIGFuYWx5c2lzIHN5c3RlbXMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMjIuMDAjRGVoeWRyYXRvcnMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMjMuMDAjRGVveGlkZXJzIzQxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIwLjI0LjAwI0Rpc3NvbHZlcnMjNDEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjAuMjUuMDAjU3BlY2ltZW4gaG9sZGVycyM0MS4xMC4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMC4yNi4wMCNTcGVjaW1lbiBjb2xsZWN0b3JzIzQxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIwLjI3LjAwI1NhbXBsZSBob2xkZXJzIzQxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIwLjI4LjAwI0x1YnJpY2FudCBzYW1wbGVycyM0MS4xMC4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMy4wMC4wMCNMYWJvcmF0b3J5IGZlcm1lbnRhdGlvbiBhbmQgaW5jdWJhdGluZyBlcXVpcG1lbnQjNDEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjMuMDEuMDAjU3RhbmRhcmQgZmVybWVudGF0aW9uIHVuaXRzIzQxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIzLjAyLjAwI0NvbnRpbnVvdXMgY3VsdHVyZSBhcHBhcmF0dXMjNDEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjMuMDMuMDAjQW5hZXJvYmljIGphcnMjNDEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjMuMDQuMDAjRGlnZXN0aW9uIHN5c3RlbXMjNDEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjMuMDUuMDAjV2F0ZXIgamFja2V0ZWQgaW5jdWJhdG9ycyM0MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMy4wNi4wMCNDTzIgaW5jdWJhdG9ycyM0MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMy4wNy4wMCNUaXNzdWUgY3VsdHVyZSBpbmN1YmF0b3JzIzQxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIzLjA4LjAwI0luY3ViYXRvciBvdmVucyM0MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMy4wOS4wMCNDb29sZWQgaW5jdWJhdG9ycyAoQk9EKSM0MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4yMy4xMC4wMCNTaGFraW5nIGluY3ViYXRvcnMjNDEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjMuMTEuMDAjSW5zcGlzc2F0b3JzIzQxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzQxLjEwLjIzLjEyLjAwI1BsYXRlIGluY3ViYXRvcnMjNDEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjMuMTMuMDAjSW4gdml0cm8gY3VsdHVyZSBlcXVpcG1lbnQjNDEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjMuMTQuMDAjQmFjdGVyaWEgZXF1aXBtZW50IzQxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzQxLjEwLjI0LjAwLjAwI0xhYm9yYXRvcnkgaGVhdGluZyBhbmQgZHJ5aW5nIGVxdWlwbWVudCM0MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNC4wMS4wMCNHYXMgYnVybmVycyM0MS4xMC4yNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNC4wMi4wMCNTcGlyaXQgYnVybmVycyM0MS4xMC4yNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNC4wMy4wMCNMYWJvcmF0b3J5IGluY2luZXJhdG9ycyM0MS4xMC4yNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNC4wNC4wMCNMYWJvcmF0b3J5IGhlYXRlcnMjNDEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjQuMDUuMDAjTWFudGxlcyBvciB0YXBlcyM0MS4xMC4yNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNC4wNi4wMCNIb3QgcGxhdGVzIzQxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI0LjA3LjAwI1dhcm1pbmcgY2FiaW5ldHMjNDEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjQuMDguMDAjRHJ5aW5nIG92ZW5zIzQxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI0LjA5LjAwI0luZHVjdGlvbiBkcnllcnMjNDEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjQuMTAuMDAjSW5mcmFyZWQgZHJ5ZXJzIzQxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI0LjExLjAwI1NwcmF5IGRyeWVycyM0MS4xMC4yNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNC4xMi4wMCNIb3QgYWlyIGJsb3dlcnMjNDEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjQuMTMuMDAjRHJ5aW5nIGNhYmluZXRzIzQxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI0LjE0LjAwI0ZyZWV6ZSBkcnllcnMjNDEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjQuMTUuMDAjTGFib3JhdG9yeSBmdXJuYWNlcyM0MS4xMC4yNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNC4xNi4wMCNBZ2Vpbmcgb3ZlbnMjNDEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjQuMTguMDAjUXVhcnR6IG92ZW4gcG90cyM0MS4xMC4yNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNC4xOS4wMCNNaWNyb3dhdmUgb3IgcmFkaWFudCBoZWF0IG92ZW5zIzQxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI0LjIwLjAwI0Rlc2ljY2F0b3JzIzQxLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI0LjIxLjAwI1RlbXBlcmF0dXJlIGN5Y2xpbmcgY2hhbWJlcnMjNDEuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjUuMDAuMDAjTGFib3JhdG9yeSBlbnRvbW9sb2dpY2FsIGVxdWlwbWVudCBhbmQgYWNjZXNzb3JpZXMjNDEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjUuMDEuMDAjSW5zZWN0IGNvbnRhaW5lcnMjNDEuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjUuMDIuMDAjUmVhcmluZyBmYWNpbGl0aWVzIGZvciBlbnRvbW9sb2d5IzQxLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI1LjAzLjAwI0ZhYnJpYyBvciBuZXR0aW5nIGZvciBlbnRvbW9sb2d5IzQxLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI1LjA0LjAwI0VudG9tb2xvZ2ljYWwgcGlubmluZyBlcXVpcG1lbnQjNDEuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjUuMDUuMDAjRW50b21vbG9naWNhbCBtb3VudGluZyBtYXRlcmlhbHMjNDEuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjUuMDYuMDAjRW50b21vbG9naWNhbCB0cmF5cyM0MS4xMC4yNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNS4wNy4wMCNFbnRvbW9sb2dpY2FsIGNhdGNoaW5nIGVxdWlwbWVudCM0MS4xMC4yNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNS4wOC4wMCNFbnRvbW9sb2dpY2FsIGFzcGlyYXRvcnMjNDEuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjUuMDkuMDAjRW50b21vbG9naWNhbCBkaXBwZXJzIzQxLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI1LjEwLjAwI0VudG9tb2xvZ2ljYWwgbW9ub2N1cHMjNDEuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjUuMTEuMDAjRW50b21vbG9naWNhbCBzdGlja3kgdHJhcHMjNDEuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjUuMTIuMDAjSW5zZWN0IHRlc3Qga2l0cyM0MS4xMC4yNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNS4xMy4wMCNFbnRvbW9sb2dpY2FsIGRpc3BsYXkgdW5pdHMjNDEuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjYuMDAuMDAjQW5pbWFsIGxhYm9yYXRvcnkgZXF1aXBtZW50IGFuZCBhY2Nlc3NvcmllcyM0MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNi4wMS4wMCNDYWdlcyBmb3Igc21hbGwgYW5pbWFscyM0MS4xMC4yNi4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNi4wMi4wMCNBcXVhcmlhIGVxdWlwbWVudCM0MS4xMC4yNi4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNi4wMy4wMCNBbmltYWwgaWRlbnRpZmljYXRpb24gc3VwcGxpZXMjNDEuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjYuMDQuMDAjQW5pbWFsIGNhdGNoaW5nIGRldmljZXMjNDEuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjYuMDUuMDAjRmlzaCBhZXJhdGlvbiBzeXN0ZW1zIzQxLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI2LjA2LjAwI0FuaW1hbCBmZWVkaW5nIG5lZWRsZXMjNDEuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjcuMDAuMDAjQ3J5c3RhbGxvZ3JhcGh5IGVxdWlwbWVudCM0MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNy4wMS4wMCNDcnlzdGFsIGxhdHRpY2UgbW9kZWxzIzQxLjEwLjI3LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI3LjAyLjAwI1NjaW50aWxsYXRpb24gY3J5c3RhbCBhc3NlbWJsaWVzIzQxLjEwLjI3LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI3LjAzLjAwI0xpZ2h0IHNjYXR0ZXJpbmcgZXF1aXBtZW50IzQxLjEwLjI3LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI3LjA0LjAwI1ggcmF5IGRpZmZyYWN0aW9uIGVxdWlwbWVudCM0MS4xMC4yNy4wMC4wMAotdW5zcHNjNyM0MS4xMC4yNy4wNS4wMCNDcnlzdGFsbGlzZXJzIzQxLjEwLjI3LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI3LjA2LjAwI0NyeXN0YWwgZ3Jvd2luZyBlcXVpcG1lbnQjNDEuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjkuMDAuMDAjSGlzdG9sb2d5IGVxdWlwbWVudCM0MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4yOS4wMS4wMCNUaXNzdWUgZW1iZWRkaW5nIHN0YXRpb25zIzQxLjEwLjI5LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI5LjAyLjAwI0VtYmVkZGluZyBtb2xkcyM0MS4xMC4yOS4wMC4wMAotdW5zcHNjNyM0MS4xMC4yOS4wMy4wMCNFbWJlZGRpbmcgY2Fwc3VsZXMjNDEuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjkuMDQuMDAjRW1iZWRkaW5nIGNvbXBvdW5kcyM0MS4xMC4yOS4wMC4wMAotdW5zcHNjNyM0MS4xMC4yOS4wNS4wMCNIaXN0b2xvZ2ljYWwgc3RhaW5pbmcgYXBwYXJhdHVzIzQxLjEwLjI5LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI5LjA5LjAwI1Rpc3N1ZSBwcm9jZXNzb3JzIzQxLjEwLjI5LjAwLjAwCi11bnNwc2M3IzQxLjEwLjI5LjEwLjAwI1Rpc3N1ZSBjdWx0dXJlIGFwcGFyYXR1cyM0MS4xMC4yOS4wMC4wMAotdW5zcHNjNyM0MS4xMC4yOS4xMS4wMCNIaXN0b2xvZ2ljYWwga25pdmVzIG9yIGtuaWZlIGhvbGRlcnMjNDEuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMjkuMTIuMDAjSGlzdG9sb2dpY2FsIGdsYXNzIGtuaWZlIG1ha2VycyM0MS4xMC4yOS4wMC4wMAotdW5zcHNjNyM0MS4xMC4yOS4xMy4wMCNIaXN0b2xvZ2ljYWwgaG9uZXMgb3Igc3RyYXBzIG9yIGNvbXBvdW5kcyM0MS4xMC4yOS4wMC4wMAotdW5zcHNjNyM0MS4xMC4yOS4xNC4wMCNVbHRyYXNvbmljIGRpc2ludGVncmF0b3JzIzQxLjEwLjI5LjAwLjAwCi11bnNwc2M3IzQxLjEwLjMwLjAwLjAwI0xhYm9yYXRvcnkgY29vbGluZyBlcXVpcG1lbnQjNDEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzAuMDEuMDAjUmVmcmlnZXJhdGVkIGNvb2xpbmcgcGxhdGUgcHJvYmVzIzQxLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMwLjAyLjAwI0ZyZWV6aW5nIHNwcmF5IGFlcm9zb2xzIzQxLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMwLjAzLjAwI0NyeW9zdGF0cyM0MS4xMC4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMC4wNC4wMCNGYW4gY2lyY3VsYXRlZCBvdmVucyM0MS4xMC4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMC4wNS4wMCNVbHRyYSBjb2xkIGNhYmluZXRzIzQxLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMwLjA2LjAwI0NyeW9nZW5pYyBmcmVlemVycyM0MS4xMC4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMC4wNy4wMCNDaGlsbGluZyB1bml0cyBvciBjb2xkIHdhdGVyIGNpcmN1bGF0aW9uIzQxLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMwLjA4LjAwI1JlZnJpZ2VyYXRlZCBjb29saW5nIG1vZHVsZXMjNDEuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzAuMDkuMDAjQ2FkYXZlciBzdG9yYWdlIHJlZnJpZ2VyYXRvcnMjNDEuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzEuMDAuMDAjTGFib3JhdG9yeSBzdXBwbGllcyM0MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMS4wMS4wMCNUZXN0IHR1YmVzIzQxLjEwLjMxLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMxLjAzLjAwI1BpcGV0dGVzIG9yIGFjY2Vzc29yaWVzIzQxLjEwLjMxLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMxLjA0LjAwI0ZsYXNrcyM0MS4xMC4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMS4wNS4wMCNCZWFrZXJzIzQxLjEwLjMxLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMxLjA2LjAwI1N0aXJyaW5nIHJvZHMjNDEuMTAuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzEuMDcuMDAjTGFib3JhdG9yeSBvciBzYW1wbGluZyBzeXJpbmdlcyM0MS4xMC4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMS4wOC4wMCNEZXNpY2NhbnRzIzQxLjEwLjMxLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMxLjA5LjAwI1dhdGNoIGdsYXNzZXMjNDEuMTAuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzEuMTAuMDAjQnVyZXRzIzQxLjEwLjMxLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMxLjExLjAwI01lYXN1cmluZyBjeWxpbmRlciM0MS4xMC4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMS4xMi4wMCNMYWJvcmF0b3J5IGRpc2hlcyM0MS4xMC4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMS4xMy4wMCNTbGlkZXMjNDEuMTAuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzEuMTQuMDAjU3RvcHBlcnMjNDEuMTAuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzEuMTUuMDAjVHViaW5nIGNvbm5lY3RvcnMjNDEuMTAuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzEuMTYuMDAjTGFib3JhdG9yeSBjYXNlcyM0MS4xMC4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMS4xNy4wMCNMYWJvcmF0b3J5IHNjb29wcyBvciBzcGF0dWxhcyM0MS4xMC4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMi4wMC4wMCNMYWJvcmF0b3J5IGNsZWFuaW5nIGVxdWlwbWVudCM0MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMi4wMS4wMCNDaGVtaWNhbCBlbmdpbmVlcmluZyB3YXNoZXJzIzQxLjEwLjMyLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMyLjAyLjAwI0xhYm9yYXRvcnkgd2FzaGluZyBtYWNoaW5lcyM0MS4xMC4zMi4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMi4wMy4wMCNQaXBldHRlIHdhc2hlcnMjNDEuMTAuMzIuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzIuMDQuMDAjVWx0cmFzb25pYyBjbGVhbmVycyM0MS4xMC4zMi4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMy4wMC4wMCNGbHVpZCBtZWNoYW5pY3MgZXF1aXBtZW50IzQxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMzLjAxLjAwI0xpcXVpZCBzY2ludGlsbGF0aW9uIGNvdW50ZXJzIzQxLjEwLjMzLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMzLjAyLjAwI0JhdHRlcnkgYWNpZCBoeWRyb21ldGVycyM0MS4xMC4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMy4wMy4wMCNEZW5zaXRvbWV0ZXJzIzQxLjEwLjMzLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMzLjA0LjAwI1ZhY3V1bSBvdmVucyM0MS4xMC4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMy4wNS4wMCNIaWdoIHZhY3V1bSBlcXVpcG1lbnQjNDEuMTAuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzMuMDYuMDAjUG5ldW1hdGljIHZhY3V1bSBlcXVpcG1lbnQjNDEuMTAuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzMuMDcuMDAjVmFjdXVtIG9yIG1lcmN1cnkgdmFwb3VyIGVxdWlwbWVudCM0MS4xMC4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMy4wOC4wMCNIaWdoIHZhY3V1bSBjb21idXN0aW9uIGFwcGFyYXR1cyM0MS4xMC4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMy4wOS4wMCNGbG93IGluamVjdGlvbiBhbmFseXNpcyBlcXVpcG1lbnQjNDEuMTAuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzMuMTAuMDAjR2FzIG9yIHZhcG91ciBjb25jZW50cmF0aW9uIG1lYXN1cmluZyBpbnN0cnVtZW50cyM0MS4xMC4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMy4xMS4wMCNNYW5vbWV0ZXJzIzQxLjEwLjMzLjAwLjAwCi11bnNwc2M3IzQxLjEwLjMzLjEyLjAwI1Zpc2Nvc2ltZXRlcnMjNDEuMTAuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzMuMTMuMDAjRGVwdGggaW5kaWNhdG9ycyM0MS4xMC4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMC4zMy4xNC4wMCNNaWNyb3Njb3BpYyBzdHJ1Y3R1cmUgZXN0aW1hdGlvbiBhcHBhcmF0dXMjNDEuMTAuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzMuMTUuMDAjU29sdXRpb24gc3RyZW5ndGggZXN0aW1hdGlvbiBhcHBhcmF0dXMjNDEuMTAuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzQuMDAuMDAjTGFib3JhdG9yeSBlbnZpcm9ubWVudGFsIGNvbmRpdGlvbmluZyBlcXVpcG1lbnQjNDEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzQuMDEuMDAjQ29udGFtaW5hdGlvbiBjb250cm9sIHNjcmVlbnMjNDEuMTAuMzQuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzQuMDIuMDAjRW52aXJvbm1lbnRhbCBjaGFtYmVycyM0MS4xMC4zNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNC4wMy4wMCNNaWNyb2Jpb2xvZ2ljYWwgYWlyY29udHJvbCM0MS4xMC4zNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNC4wNC4wMCNHcm93dGggY2hhbWJlcnMjNDEuMTAuMzQuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzQuMDUuMDAjV2FsayBpbiBjaGFtYmVycyM0MS4xMC4zNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNC4wNi4wMCNHbG92ZSBib3hlcyM0MS4xMC4zNC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNS4wMC4wMCNMYWJvcmF0b3J5IHZlbnRpbGF0aW5nIGVxdWlwbWVudCM0MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNS4wMS4wMCNFYnVsaW9tZXRlciM0MS4xMC4zNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNS4wMi4wMCNGdW1lIGhvb2RzIzQxLjEwLjM1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM1LjAzLjAwI0Z1bWUgY3VwYm9hcmRzIzQxLjEwLjM1LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM1LjA0LjAwI0xhbWluYXIgZmxvdyBjYWJpbmV0cyBvciBzdGF0aW9ucyM0MS4xMC4zNS4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNi4wMC4wMCNMYWJvcmF0b3J5IGRlY2FudGluZyBhbmQgZGlzdGlsbGluZyBhbmQgZXZhcG9yYXRpbmcgYW5kIGZpbHRlcmluZyBlcXVpcG1lbnQgYW5kIHN1cHBsaWVzIzQxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjAxLjAwI0ZsYXNrIG9yIHJldG9ydCB1bml0cyM0MS4xMC4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNi4wMi4wMCNCaSBkaXN0aWxsYXRpb24gdW5pdHMjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMDMuMDAjRXZhcG9yYXRvcnMjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMDQuMDAjVmFjdXVtIGV2YXBvcmF0b3JzIzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjA1LjAwI0V4dHJhY3RpbmcgZXF1aXBtZW50IzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjA2LjAwI0xpbmUgZmlsdGVycyM0MS4xMC4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNi4wNy4wMCNHZWwgZmlsdHJhdGlvbiBlcXVpcG1lbnQjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMDguMDAjVWx0cmEgZmlsdHJhdGlvbiBlcXVpcG1lbnQjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMDkuMDAjU2ludGVyZWQgY2VsbCBmaWx0ZXJzIzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjEwLjAwI1RoaW4gY2hhbm5lbCBmaWx0cmF0aW9uIGVxdWlwbWVudCM0MS4xMC4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNi4xMS4wMCNSZXZlcnNlIG9zbW9zaXMgZmlsdHJhdGlvbiBlcXVpcG1lbnQjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMTIuMDAjTW9sZWN1bGFyIGZpbHRyYXRpb24gZXF1aXBtZW50IzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjEzLjAwI0NhcnRyaWRnZSBlbGVtZW50IGZpbHRlcnMjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMTQuMDAjRmlsdGVyIGhvbGRlcnMgb3IgY3ljbG9uZXMjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMTUuMDAjTXVsdGkgc2hlZXQgb3IgcHJlc3Mgb3IgZmlsdGVyIzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjE2LjAwI0FpciBmaWx0cmF0aW9uIHN5c3RlbXMjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMTcuMDAjSGVwYSBmaWx0ZXJzIzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjE4LjAwI0ZsdWlkIHByZXNzZXMgZmlsdGVyIzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjE5LjAwI1NlZGltZW50b2xvZ2ljYWwgYW5hbHl6aW5nIHVuaXQjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMjAuMDAjTGFib3JhdG9yeSBzZXBhcmF0b3JzIzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjIxLjAwI0xhYm9yYXRvcnkgc2lmdGluZyBlcXVpcG1lbnQjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMjIuMDAjVGVzdCBzaWV2ZXMjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMjMuMDAjTGFib3JhdG9yeSBzY3J1YmJlcnMjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMjQuMDAjVGl0cmF0aW9uIGVxdWlwbWVudCM0MS4xMC4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMC4zNi4yNS4wMCNMYWJvcmF0b3J5IGRpbHV0ZXJzIzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjI2LjAwI0ZyYWN0aW9uYXRpb24gYXBwYXJhdHVzIzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM2LjI3LjAwI0Rpc3RpbGxhdGlvbiBwaXBpbmdzIG9yIGNvbHVtbnMgb3IgZml0dGluZ3MjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMjguMDAjUmVmbHV4IGNvbXBvbmVudHMjNDEuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzYuMjkuMDAjSGVhdCBleGNoYW5nZSBjb25kZW5zZXJzIzQxLjEwLjM2LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM3LjAwLjAwI0xhYm9yYXRvcnkgYmF0aHMjNDEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzcuMDEuMDAjQ2lyY3VsYXRpbmcgYmF0aHMjNDEuMTAuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzcuMDIuMDAjVGhlcm1vc3RhdGljIGJhdGhzIzQxLjEwLjM3LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM3LjAzLjAwI011bHRpcGxlIGJhdGhzIzQxLjEwLjM3LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM3LjA0LjAwI0Jpb2xvZ2ljYWwgYmF0aHMjNDEuMTAuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzcuMDUuMDAjT3JnYW4gYmF0aHMjNDEuMTAuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzcuMDYuMDAjV2F0ZXIgYmF0aHMjNDEuMTAuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzcuMDcuMDAjT2lsIGJhdGhzIzQxLjEwLjM3LjAwLjAwCi11bnNwc2M3IzQxLjEwLjM3LjA4LjAwI1NhbmQgYmF0aHMjNDEuMTAuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTAuMzcuMDkuMDAjUmVmcmlnZXJhdGVkIGJhdGhzIzQxLjEwLjM3LjAwLjAwCi11bnNwc2M3IzQxLjExLjAwLjAwLjAwI01lYXN1cmluZyBhbmQgb2JzZXJ2aW5nIGFuZCB0ZXN0aW5nIGluc3RydW1lbnRzIzQxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjE1LjAwLjAwI1dlaWdodCBtZWFzdXJpbmcgaW5zdHJ1bWVudHMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTUuMDEuMDAjRWxlY3Ryb25pYyB0b3Bsb2FkaW5nIGJhbGFuY2VzIzQxLjExLjE1LjAwLjAwCi11bnNwc2M3IzQxLjExLjE1LjAyLjAwI0xhYm9yYXRvcnkgYmFsYW5jZXMjNDEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTUuMDMuMDAjTWVjaGFuaWNhbCBiYWxhbmNlcyM0MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNS4wNC4wMCNQdWxsIHNwcmluZyBiYWxhbmNlcyM0MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNS4wNS4wMCNDYWxpYnJhdGlvbiB3ZWlnaHRzIG9yIHdlaWdodCBzZXRzIzQxLjExLjE1LjAwLjAwCi11bnNwc2M3IzQxLjExLjE1LjA2LjAwI0FuaW1hbCB3ZWlnaGluZyBzY2FsZXMjNDEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTUuMDcuMDAjQmVuY2ggc2NhbGVzIzQxLjExLjE1LjAwLjAwCi11bnNwc2M3IzQxLjExLjE1LjA4LjAwI0JvZHl3ZWlnaHQgbWVhc3VyaW5nIHNjYWxlcyM0MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNS4wOS4wMCNGbG9vciBvciBwbGF0Zm9ybSBzY2FsZXMjNDEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTUuMTAuMDAjUG9zdGFsIHNjYWxlcyM0MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNS4xMS4wMCNUcnVjayBvciByYWlsIHNjYWxlcyM0MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNi4wMC4wMCNMZW5ndGggYW5kIHRoaWNrbmVzcyBhbmQgZGlzdGFuY2UgbWVhc3VyaW5nIGluc3RydW1lbnRzIzQxLjExLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjE2LjAxLjAwI01pY3JvbWV0ZXJzIzQxLjExLjE2LjAwLjAwCi11bnNwc2M3IzQxLjExLjE2LjAyLjAwI1BlZG9tZXRlcnMjNDEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTYuMDMuMDAjUmFuZ2VmaW5kZXJzIzQxLjExLjE2LjAwLjAwCi11bnNwc2M3IzQxLjExLjE2LjA0LjAwI1J1bGVycyM0MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNi4wNS4wMCNTdHJhaW4gZ2F1Z2VzIzQxLjExLjE2LjAwLjAwCi11bnNwc2M3IzQxLjExLjE2LjA2LjAwI1RlbGx1cm9tZXRlcnMjNDEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTYuMDcuMDAjVGhyZWFkIGNvdW50ZXJzIG9yIGdhdWdlcyM0MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNi4wOC4wMCNDYWxpcGVycyM0MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNi4xMy4wMCNEaXN0YW5jZSBtZXRlcnMjNDEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTYuMTQuMDAjSGVpZ2h0IGdhdWdlcyM0MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNi4xNS4wMCNMYXNlciBtZWFzdXJpbmcgc3lzdGVtcyM0MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNi4xNi4wMCNNZWFzdXJpbmcgd2hlZWxzIGZvciBkaXN0YW5jZSM0MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNi4xNy4wMCNGZWVsZXIgZ2F1Z2VzIzQxLjExLjE2LjAwLjAwCi11bnNwc2M3IzQxLjExLjE2LjE4LjAwI0dhZ2UgYmxvY2sgc2V0IzQxLjExLjE2LjAwLjAwCi11bnNwc2M3IzQxLjExLjE2LjE5LjAwI0dvIG9yIG5vIGdvIGdhdWdlIzQxLjExLjE2LjAwLjAwCi11bnNwc2M3IzQxLjExLjE2LjIwLjAwI0V0YWxvbiB3ZWRnZSM0MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNy4wMC4wMCNWaWV3aW5nIGFuZCBvYnNlcnZpbmcgaW5zdHJ1bWVudHMgYW5kIGFjY2Vzc29yaWVzIzQxLjExLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjE3LjAxLjAwI0lvbiBtaWNyb3Njb3BlcyM0MS4xMS4xNy4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNy4wMi4wMCNNb25vY3VsYXIgbWljcm9zY29wZXMjNDEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTcuMDMuMDAjU3RlcmVvIG1pY3Jvc2NvcGVzIzQxLjExLjE3LjAwLjAwCi11bnNwc2M3IzQxLjExLjE3LjA0LjAwI0lsbHVtaW5hdG9ycyBmb3IgbWljcm9zY29wZXMjNDEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTcuMDUuMDAjT2JqZWN0aXZlcyBmb3IgbWljcm9zY29wZXMjNDEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTcuMDYuMDAjUGhvdG8gYXR0YWNobWVudHMgZm9yIG1pY3Jvc2NvcGVzIzQxLjExLjE3LjAwLjAwCi11bnNwc2M3IzQxLjExLjE3LjA3LjAwI1Byb2ZpbGUgcHJvamVjdG9ycyM0MS4xMS4xNy4wMC4wMAotdW5zcHNjNyM0MS4xMS4xNy4wOC4wMCNWaWRlbyBhdHRhY2htZW50cyBmb3IgbWljcm9zY29wZXMjNDEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTcuMDkuMDAjQmlub2N1bGFyIG1pY3Jvc2NvcGUjNDEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTcuMTAuMDAjQ29tYmluYXRpb24gZWxlY3Ryb24gYW5kIGxpZ2h0IG1pY3Jvc2NvcGVzIzQxLjExLjE3LjAwLjAwCi11bnNwc2M3IzQxLjExLjE3LjExLjAwI0VsZWN0cm9uIG1pY3Jvc2NvcGVzIzQxLjExLjE3LjAwLjAwCi11bnNwc2M3IzQxLjExLjE3LjEyLjAwI0ludmVydGVkIG1pY3Jvc2NvcGVzIzQxLjExLjE3LjAwLjAwCi11bnNwc2M3IzQxLjExLjE3LjEzLjAwI01hZ25pZmllcnMjNDEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTcuMTQuMDAjTG91cGVzIzQxLjExLjE3LjAwLjAwCi11bnNwc2M3IzQxLjExLjE3LjE1LjAwI1RlbGVzY29wZXMjNDEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTcuMTYuMDAjQm9yZXNjb3BlIGluc3BlY3Rpb24gZXF1aXBtZW50IzQxLjExLjE3LjAwLjAwCi11bnNwc2M3IzQxLjExLjE3LjE3LjAwI0Jpbm9jdWxhcnMjNDEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTguMDAuMDAjTm9uIGRlc3RydWN0aXZlIGV4YW1pbmF0aW9uIGVxdWlwbWVudCM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOC4wMS4wMCNFZGR5IGN1cnJlbnQgZXhhbWluYXRpb24gZXF1aXBtZW50IzQxLjExLjE4LjAwLjAwCi11bnNwc2M3IzQxLjExLjE4LjAyLjAwI0xpcXVpZCBwZW5ldHJhbnQgZXhhbWluYXRpb24gZXF1aXBtZW50IzQxLjExLjE4LjAwLjAwCi11bnNwc2M3IzQxLjExLjE4LjAzLjAwI01hZ25ldGljIHBhcnRpY2xlIGV4YW1pbmF0aW9uIGVxdWlwbWVudCM0MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOC4wNC4wMCNVbHRyYXNvbmljIGV4YW1pbmF0aW9uIGVxdWlwbWVudCM0MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOC4wNS4wMCNDTyA2MCByYWRpb2dyYXBoeSBleGFtaW5hdGlvbiBlcXVpcG1lbnQjNDEuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTguMDYuMDAjQ1MgMTM3IHJhZGlvZ3JhcGh5IGV4YW1pbmF0aW9uIGVxdWlwbWVudCM0MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOC4wNy4wMCNJUiAxOTIgcmFkaW9ncmFwaHkgZXhhbWluYXRpb24gZXF1aXBtZW50IzQxLjExLjE4LjAwLjAwCi11bnNwc2M3IzQxLjExLjE4LjA4LjAwI1ggcmF5IHJhZGlvZ3JhcGh5IGV4YW1pbmF0aW9uIGVxdWlwbWVudCM0MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4wMC4wMCNJbmRpY2F0aW5nIGFuZCByZWNvcmRpbmcgaW5zdHJ1bWVudHMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMDEuMDAjQ291bnRlcnMjNDEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMDIuMDAjRWxlY3Ryb25pYyBjb3VudGVycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4wMy4wMCNNZXRhbCBkZXRlY3RvcnMjNDEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMDQuMDAjRWxlY3Ryb25pYyBjb2x1bW5zIzQxLjExLjE5LjAwLjAwCi11bnNwc2M3IzQxLjExLjE5LjA1LjAwI0VsZWN0cm9uaWMgbWVhc3VyaW5nIHByb2JlcyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4wNi4wMCNDaGFydCByZWNvcmRlcnMjNDEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMDcuMDAjRGlnaXRhbCByZWFkb3V0IHJlY29yZGVycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4wOC4wMCNHcmFwaGljIHJlY29yZGVycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4wOS4wMCNNYWduZXRpYyB0YXBlIHJlY29yZGVycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4xMC4wMCNNdWx0aXBlbiByZWNvcmRlcnMjNDEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMTEuMDAjT3NjaWxsb2dyYXBoaWMgcmVjb3JkZXJzIzQxLjExLjE5LjAwLjAwCi11bnNwc2M3IzQxLjExLjE5LjEyLjAwI1BoeXNpb2xvZ2ljYWwgcmVjb3JkZXJzIzQxLjExLjE5LjAwLjAwCi11bnNwc2M3IzQxLjExLjE5LjEzLjAwI1BvaW50IHBsb3R0aW5nIHJlY29yZGVycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4xNC4wMCNTZXJ2byByZWNvcmRlcnMjNDEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMTUuMDAjQmkgbWV0YWxsaWMgc2Vuc29ycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4xNi4wMCNOb24gY29udGFjdCBzZW5zb3JzIzQxLjExLjE5LjAwLjAwCi11bnNwc2M3IzQxLjExLjE5LjE3LjAwI0RpZ2l0YWwgdGVzdGVycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4xOC4wMCNHeXJvc2NvcGljIGluc3RydW1lbnRzIzQxLjExLjE5LjAwLjAwCi11bnNwc2M3IzQxLjExLjE5LjE5LjAwI0RldGVjdGlvbiBhcHBhcmF0dXMgZm9yIG5vbiBtZXRhbGljIG9iamVjdHMjNDEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMjAuMDAjQ29vcmRpbmF0ZSBtZWFzdXJpbmcgbWFjaGluZXMgKENNTSkjNDEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMjEuMDAjU3BlZWQgc2Vuc29ycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4yMi4wMCNMYW1wIGZhaWx1cmUgc2Vuc29yIzQxLjExLjE5LjAwLjAwCi11bnNwc2M3IzQxLjExLjE5LjIzLjAwI1ByZSBpZ25pdGlvbiBrbm9jayBzZW5zb3IjNDEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMjQuMDAjT3h5Z2VuIHNlbnNvcnMjNDEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMTkuMjUuMDAjU3BlZWQgc2Vuc29ycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4yNi4wMCNQcm94aW1pdHkgc2Vuc29ycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4xOS4yNy4wMCNQcmVzc3VyZSBzZW5zb3JzIzQxLjExLjE5LjAwLjAwCi11bnNwc2M3IzQxLjExLjE5LjI4LjAwI0N1cnJlbnQgc2Vuc29ycyM0MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMC4wMC4wMCNMaWdodCBhbmQgd2F2ZSBhbmQgc291bmQgZ2VuZXJhdGluZyBhbmQgIG1lYXN1cmluZyBlcXVpcG1lbnQjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjAuMDEuMDAjTGlnaHQgYWJzb3JwdGlvbm1ldGVycyM0MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMC4wMi4wMCNBY291c3RpYyB0ZXN0aW5nIHJvb21zIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjAzLjAwI0FuZWNob2ljIGNoYW1iZXJzIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjA0LjAwI0ZyZXF1ZW5jeSBhbmFseXplcnMjNDEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjAuMDUuMDAjRnJlcXVlbmN5IGNvdW50ZXJzIG9yIHRpbWVyIG9yIGRpdmlkZXJzIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjA2LjAwI0VsZWN0cmljYWwgZnJlcXVlbmN5IG1ldGVycyM0MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMC4wNy4wMCNJbnRlcmZlcm9tZXRlcnMjNDEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjAuMDguMDAjTGFzZXJzIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjA5LjAwI0xpZ2h0bWV0ZXJzIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjEwLjAwI0x1eG1ldGVycyM0MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMC4xMS4wMCNPcHRpY2FsIGNhbGxpYnJhdGlvbiBzZXRzIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjEyLjAwI1Bob3RvbWV0ZXJzIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjEzLjAwI1BvbGFyaW1ldGVycyM0MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMC4xNC4wMCNQb2xhcmlzY29wZXMjNDEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjAuMTUuMDAjUmVmbGVjdG9tZXRlcnMjNDEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjAuMTYuMDAjU29uYXJzIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjE3LjAwI1Nvbm9tZXRlcnMjNDEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjAuMTguMDAjU291bmQgbWVhc3VyaW5nIGFwcGFyYXR1cyBvciBkZWNpYmVsIG1ldGVyIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjE5LjAwI1NwZWN0cm9mbHVvcmltZXRlcnMjNDEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjAuMjAuMDAjU3BlY3Ryb2dyYXBocyM0MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMC4yMS4wMCNTcGVjdHJvbWV0ZXJzIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjIyLjAwI01hc3Mgc3BlY3Ryb21ldGVycyM0MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMC4yMy4wMCNQcm90b24gc3BlY3Ryb21ldGVycyM0MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMC4yNC4wMCNTcGVjdHJvcGhvdG9tZXRlcnMjNDEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjAuMjUuMDAjU3Ryb2Jvc2NvcGVzIzQxLjExLjIwLjAwLjAwCi11bnNwc2M3IzQxLjExLjIwLjI2LjAwI1NvdW5kIHZlbG9jaXR5IGFuYWx5emVycyM0MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMC4yNy4wMCNUaGlja25lc3MgbWVhc3VyaW5nIGRldmljZXMjNDEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjEuMDAuMDAjVHJhbnNkdWNlcnMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjEuMDEuMDAjUGllem8gZWxlY3RyaWMgY3J5c3RhbHMjNDEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjEuMDIuMDAjU3RyYWluIGdhdWdlcyM0MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMS4wMy4wMCNGaWJlciBzZW5zb3JzIzQxLjExLjIxLjAwLjAwCi11bnNwc2M3IzQxLjExLjIyLjAwLjAwI1RlbXBlcmF0dXJlIGFuZCBoZWF0IG1lYXN1cmluZyBpbnN0cnVtZW50cyM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMi4wMS4wMCNDYWxvcmltZXRlcnMjNDEuMTEuMjIuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjIuMDIuMDAjSGVhdCB0cmFjaW5nIGVxdWlwbWVudCM0MS4xMS4yMi4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMi4wMy4wMCNNZWx0aW5nIHBvaW50IHJlY29yZGVycyM0MS4xMS4yMi4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMi4wNC4wMCNQeXJvbWV0ZXJzIzQxLjExLjIyLjAwLjAwCi11bnNwc2M3IzQxLjExLjIyLjA1LjAwI1RlbXBlcmF0dXJlIHJlZ3VsYXRvcnMjNDEuMTEuMjIuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjIuMDYuMDAjVGhlcm1vY291cGxlcyM0MS4xMS4yMi4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMi4wNy4wMCNUaGVybW9ncmFwaHMjNDEuMTEuMjIuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjIuMDkuMDAjVGhlcm1vc3RhdHMjNDEuMTEuMjIuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjIuMTAuMDAjUmVtb3RlIHJlYWRpbmcgdGhlcm1vbWV0ZXJzIzQxLjExLjIyLjAwLjAwCi11bnNwc2M3IzQxLjExLjIyLjExLjAwI1Jlc2lzdGFuY2UgdGhlcm1vbWV0ZXJzIzQxLjExLjIyLjAwLjAwCi11bnNwc2M3IzQxLjExLjIyLjEyLjAwI1N1cmZhY2UgdGhlcm1vbWV0ZXJzIzQxLjExLjIyLjAwLjAwCi11bnNwc2M3IzQxLjExLjIyLjEzLjAwI0hhbmRoZWxkIHRoZXJtb21ldGVyIzQxLjExLjIyLjAwLjAwCi11bnNwc2M3IzQxLjExLjIzLjAwLjAwI0h1bWlkaXR5IG1lYXN1cmluZyBpbnN0cnVtZW50cyM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMy4wMS4wMCNIeWdyb21ldGVycyM0MS4xMS4yMy4wMC4wMAotdW5zcHNjNyM0MS4xMS4yMy4wMi4wMCNQc3ljaHJvbWV0ZXJzIzQxLjExLjIzLjAwLjAwCi11bnNwc2M3IzQxLjExLjIzLjAzLjAwI1RlbXBlcmF0dXJlIGh1bWlkaXR5IHRlc3RlcnMjNDEuMTEuMjMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjQuMDAuMDAjUHJlc3N1cmUgbWVhc3VyaW5nIGFuZCBjb250cm9sIGluc3RydW1lbnRzIzQxLjExLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjI0LjAxLjAwI0RlcHRoIGdhdWdlcyM0MS4xMS4yNC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yNC4wMi4wMCNNYW5vc3RhdHMjNDEuMTEuMjQuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjQuMDMuMDAjUHJlc3N1cmUgcmVhZGluZyBpbmRpY2F0b3JzIzQxLjExLjI0LjAwLjAwCi11bnNwc2M3IzQxLjExLjI0LjA0LjAwI1ByZXNzdXJlIHJlZ3VsYXRvciM0MS4xMS4yNC4wMC4wMAotdW5zcHNjNyM0MS4xMS4yNC4wNS4wMCNQcmVzc3VyZSBvciB2YWN1dW0gcmVjb3JkZXJzIzQxLjExLjI0LjAwLjAwCi11bnNwc2M3IzQxLjExLjI0LjA2LjAwI1ZhY3V1bSBnYXVnZXMjNDEuMTEuMjQuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjQuMDcuMDAjTGlxdWlkIGxldmVsIGNvbnRyb2xzIG9yIGluc3RydW1lbnRzIzQxLjExLjI0LjAwLjAwCi11bnNwc2M3IzQxLjExLjI1LjAwLjAwI0Zsb3cgbWVhc3VyaW5nIGluc3RydW1lbnRzIzQxLjExLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjI1LjAxLjAwI0Zsb3dtZXRlcnMjNDEuMTEuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjUuMDIuMDAjUmhlb21ldGVycyM0MS4xMS4yNS4wMC4wMAotdW5zcHNjNyM0MS4xMS4yNS4wMy4wMCNSb3RhbWV0ZXJzIzQxLjExLjI1LjAwLjAwCi11bnNwc2M3IzQxLjExLjI1LjA0LjAwI1dhdGVyIG1ldGVycyM0MS4xMS4yNS4wMC4wMAotdW5zcHNjNyM0MS4xMS4yNS4wNS4wMCNXYXRlciBtZXRlciBzcGFyZXMjNDEuMTEuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjUuMDYuMDAjVmVudHVyaXMjNDEuMTEuMjUuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjcuMDAuMDAjU2VlZCBhbmQgZmVlZCBlcXVpcG1lbnQjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjcuMDEuMDAjR3JhaW4gYW5hbHl6ZXJzIzQxLjExLjI3LjAwLjAwCi11bnNwc2M3IzQxLjExLjI3LjAyLjAwI1NlZWQgY291bnRlcnMjNDEuMTEuMjcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjcuMDMuMDAjRmliZXIgYXBwYXJhdHVzIGZvciBmZWVkIHNhbXBsZSBhbmFseXNpcyM0MS4xMS4yNy4wMC4wMAotdW5zcHNjNyM0MS4xMS4yOC4wMC4wMCNUcmFuc3BvcnRhdGlvbiByZWxhdGVkIGVxdWlwbWVudCBhbmQgaW5zdHJ1bWVudHMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMjguMDEuMDAjU3BlZWRvbWV0ZXJzIzQxLjExLjI4LjAwLjAwCi11bnNwc2M3IzQxLjExLjI4LjAyLjAwI1RhY2hvbWV0ZXJzIzQxLjExLjI4LjAwLjAwCi11bnNwc2M3IzQxLjExLjI5LjAwLjAwI05hdmlnYXRpb25hbCBlcXVpcG1lbnQgYW5kIGluc3RydW1lbnRzIzQxLjExLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjI5LjAxLjAwI0RpcmVjdGlvbiBmaW5kaW5nIGNvbXBhc3NlcyM0MS4xMS4yOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4yOS4wMi4wMCNSYWRpbyBuYXZpZ2F0aW9uIGluc3RydW1lbnRzIzQxLjExLjI5LjAwLjAwCi11bnNwc2M3IzQxLjExLjI5LjAzLjAwI1NleHRhbnRzIzQxLjExLjI5LjAwLjAwCi11bnNwc2M3IzQxLjExLjI5LjA0LjAwI0NvbXBsZXggY29udHJvbGxpbmcgZGV2aWNlcyM0MS4xMS4yOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4wMC4wMCNDaGVtaWNhbCBldmFsdWF0aW9uIGluc3RydW1lbnRzIGFuZCBzdXBwbGllcyM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4wMS4wMCNEaWdpdGFsIGFuYWx5emVyIGNvbnRyb2xsZXJzIzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMwLjAyLjAwI0NoZW1pbHVtaW5lc2NlbmNlIG9yIGJpb2x1bWluZXNjZW5jZSBhbmFseXplcnMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMDMuMDAjRWxlY3Ryb2dyYXZpbWV0cnkgYW5hbHl6ZXJzIzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMwLjA0LjAwI0ZsYW1lIGlvbml6YXRpb24gYW5hbHl6ZXJzIzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMwLjA1LjAwI0lvbiBhbmFseXplcnMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMDYuMDAjUmFkaW9tZXRyeSBhbmFseXplcnMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMDcuMDAjUmFuZG9tIGFjY2VzcyBhbmFseXplcnMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMDguMDAjQ2ludGlncmFwaGljIGFuYWx5emVycyM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4wOS4wMCNUaGVybWFsIGRpZmZlcmVudGlhbCBhbmFseXplcnMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMTAuMDAjVGhlcm1vIGdyYXZpbWV0cnkgYW5hbHl6ZXJzIzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMwLjExLjAwI0Nocm9tYXRvZ3JhcGhpYyBkZXRlY3RvcnMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMTIuMDAjQ2hyb21hdG9ncmFwaGljIHNjYW5uZXJzIzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMwLjEzLjAwI0dhcyBjaHJvbWF0b2dyYXBocyM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4xNC4wMCNJb24gY2hyb21hdG9ncmFwaHMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMTUuMDAjTGlxdWlkIGNocm9tYXRvZ3JhcGhzIzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMwLjE2LjAwI1RoaW5sYXllciBjaHJvbWF0b2dyYXBocyM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4xOC4wMCNIaWdoIHByZXNzdXJlIGxpcXVpZCBjaHJvbWF0b2dyYXBoIGNocm9tYXRvZ3JhcGh5IzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMwLjE5LjAwI0hpZ2ggcHJlc3N1cmUgdGhpbiBsYXllciBjaHJvbWF0b2dyYXBoIChUTEMpIzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMwLjIwLjAwI0NvbG9yaW1ldGVycyM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4yMS4wMCNDb25kdWN0aW1ldHJpYyBpbnN0cnVtZW50cyM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4yMi4wMCNGbHVvcmltZXRlcnMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMjMuMDAjR2VsIHBhcnRpdGlvbiBlcXVpcG1lbnQjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMjQuMDAjSHlkcm9tZXRlcnMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMjUuMDAjTW9ub2Nocm9tYXRvcnMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMjYuMDAjTmVwaGVsb21ldGVycyM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4yNy4wMCNPc21vbWV0ZXJzIzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMwLjI4LjAwI3BIIG1ldGVycyM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4yOS4wMCNQb2xhcm9ncmFwaHMjNDEuMTEuMzAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzAuMzAuMDAjUmFkaW9jaHJvbWF0b2dyYXBoaWMgc2Nhbm5lciM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4zMS4wMCNTYWNjaGFyb21ldGVycyM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4zMi4wMCNTYWxpbml0eSBtZXRlciM0MS4xMS4zMC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMC4zMy4wMCNWb2x1bWV0ZXJzIzQxLjExLjMwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMxLjAwLjAwI0dhcyBhbmFseXplcnMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzEuMDEuMDAjQXV0b21vdGl2ZSBleGhhdXN0IGVtaXNzaW9uIGFuYWx5emVycyM0MS4xMS4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMS4wMi4wMCNDYXRhbHl0aWMgY29tYnVzdGlvbiBhbmFseXplcnMjNDEuMTEuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzEuMDMuMDAjQ2hlbWljYWwgYWJzb3JwdGlvbiBnYXMgYW5hbHl6ZXJzIzQxLjExLjMxLjAwLjAwCi11bnNwc2M3IzQxLjExLjMxLjA0LjAwI0V4cGxvc2ltZXRlcnMjNDEuMTEuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzEuMDUuMDAjSHlkcm9jYXJib25zIGFuYWx5emVycyBvciBkZXRlY3RvcnMjNDEuMTEuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzEuMDYuMDAjSW5mcmEgcmVkIG9yIHVsdHJhIHZpb2xldCBhYnNvcnB0aW9uIGFuYWx5emVycyM0MS4xMS4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMS4wNy4wMCNOaXRyb2dlbiBhbmFseXplcnMjNDEuMTEuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzEuMDguMDAjTml0cm9nZW4gb3hpZGUgYW5hbHl6ZXJzIzQxLjExLjMxLjAwLjAwCi11bnNwc2M3IzQxLjExLjMxLjA5LjAwI09SU0FUIGVxdWlwbWVudCM0MS4xMS4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMS4xMC4wMCNPeHlnZW4gZ2FzIGFuYWx5emVycyM0MS4xMS4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMS4xMS4wMCNPem9uZSBhbmFseXplcnMjNDEuMTEuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzEuMTIuMDAjUGFyYW1hZ25ldGljIHN1c2NlcHRpYmlsaXR5IGFuYWx5emVycyM0MS4xMS4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMS4xMy4wMCNTdWxmdXIgZGlveGlkZSBhbmFseXplcnMgb3IgZGV0ZWN0b3JzIzQxLjExLjMxLjAwLjAwCi11bnNwc2M3IzQxLjExLjMxLjE0LjAwI1RoZXJtYWwgY29uZHVjdGl2aXR5IGFuYWx5emVycyM0MS4xMS4zMS4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMS4xNS4wMCNSYWRvbiBkZXRlY3RvcnMjNDEuMTEuMzEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzEuMTYuMDAjR2FzIGRldGVjdG9yIHR1YmVzIzQxLjExLjMxLjAwLjAwCi11bnNwc2M3IzQxLjExLjMzLjAwLjAwI0xpcXVpZCBhbmQgc29saWQgYW5hbHl6ZXJzIzQxLjExLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjMzLjAxLjAwI0FjaWQgb3IgYmFzZSBhbmFseXplcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMDIuMDAjQWxidW1pbm9tZXRlcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMDMuMDAjQW1pbm8gYWNpZCBhbmFseXplcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMDQuMDAjQmF1eGl0ZSBhbmFseXplcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMDUuMDAjQ2FsY2l1bSBhbmFseXplcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMDYuMDAjQ2hsb3JpZGUgYW5hbHl6ZXJzIzQxLjExLjMzLjAwLjAwCi11bnNwc2M3IzQxLjExLjMzLjA3LjAwI0Rpc3NvbHZlZCBveHlnZW4gbWVhc3VyZW1lbnQgbWV0ZXIjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMDguMDAjRWxlY3Ryb2x5dGUgYW5hbHl6ZXJzIzQxLjExLjMzLjAwLjAwCi11bnNwc2M3IzQxLjExLjMzLjA5LjAwI0VuenltZSBhbmFseXplcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMTAuMDAjRmF0dHkgYWNpZCBhbmFseXplcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMTEuMDAjSGFsaWRlIGRldGVjdG9yIGxhbXAjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMTIuMDAjTGFjdGF0ZSBhbmFseXplcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMTMuMDAjTWluZXJhbCBvaWwgdGVzdGluZyBpbnN0cnVtZW50cyM0MS4xMS4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMy4xNC4wMCNPaWwgY29udGVudCBtb25pdG9ycyBhbmFseXplcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMTUuMDAjT3JnYW5pYyBjYXJib24gYW5hbHl6ZXJzIzQxLjExLjMzLjAwLjAwCi11bnNwc2M3IzQxLjExLjMzLjE2LjAwI1BldHJvbGV1bSB0ZXN0aW5nIGVxdWlwbWVudCM0MS4xMS4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMy4xNy4wMCNQcm90ZWluIGFuYWx5emVycyM0MS4xMS4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMy4xOC4wMCNVcmFuaXVtIGFuYWx5emVycyM0MS4xMS4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMS4zMy4xOS4wMCNXYXRlciBhbmFseXplcnMjNDEuMTEuMzMuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzMuMjAuMDAjTHVicmljYXRpbmcgb2lsIHRlc3Rpbmcga2l0IzQxLjExLjMzLjAwLjAwCi11bnNwc2M3IzQxLjExLjMzLjIxLjAwI1BhaW50IHRlc3RlciM0MS4xMS4zMy4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNC4wMC4wMCNOdWNsZWFyIGV2YWx1YXRpb24gaW5zdHJ1bWVudHMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzQuMDEuMDAjQWxwaGEgY291bnRlcnMjNDEuMTEuMzQuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzQuMDIuMDAjQWxwaGEgYmV0YSBjb3VudGVycyM0MS4xMS4zNC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNC4wMy4wMCNCZXRhIGNvdW50ZXJzIzQxLjExLjM0LjAwLjAwCi11bnNwc2M3IzQxLjExLjM0LjA0LjAwI0JldGEgZ2FtbWEgY291bnRlcnMjNDEuMTEuMzQuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzQuMDUuMDAjR2FtbWEgY291bnRlcnMjNDEuMTEuMzQuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzQuMDYuMDAjS1ZQIG1ldGVycyM0MS4xMS4zNC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNC4wNy4wMCNYIHJheSBtaWNyb2FuYWx5c2VycyM0MS4xMS4zNC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4wMC4wMCNFbGVjdHJpY2FsIG1lYXN1cmluZyBhbmQgdGVzdGluZyBlcXVpcG1lbnQjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMDEuMDAjQW1tZXRlcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMDIuMDAjUGhhc2VtZXRlcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMDMuMDAjQnJpZGdlcyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4wNC4wMCNDYXBhY2l0YW5jZSBtZXRlcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMDUuMDAjVGhlcm1vYW5hbHlzaXMgZGVyaXZhdG9ncmFwaHMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMDYuMDAjRnJlZXplIHdhdGNoIGluZGljYXRvcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMDcuMDAjSGVhdCBzdHJlc3MgbW9uaXRvcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMDguMDAjQ29pbmNpZGVuY2Ugb3IgYW50aWNvaW5jaWRlbmNlIGNvdW50ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjA5LjAwI0NvbmR1Y3Rpdml0eSBjZWxscyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4xMC4wMCNDb25kdWN0aXZpdHkgbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjExLjAwI0Nyb3NzIHRhbGsgbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjEyLjAwI0VhcnRoIHJlc2lzdGFuY2UgdGVzdGVycyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4xMy4wMCNFbGVjdHJpY2FsIHZhbHVlIHJlY29yZGVycyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4xNC4wMCNFbGVjdHJvbWFnbmV0aWMgZmllbGQgbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjE1LjAwI0VsZWN0cm9tZXRlcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMTYuMDAjRWxlY3Ryb25pYyBsb2FkcyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4xNy4wMCNGaWVsZCBzdHJlbmd0aCBtZWFzdXJpbmcgZXF1aXBtZW50IzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjE4LjAwI0dhaW4gbWVhc3VyaW5nIGluc3RydW1lbnRzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjE5LjAwI0dhbHZhbm9tZXRlcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMjAuMDAjSGlnaCB2b2x0YWdlIGNhYmxlIGRldGVjdGlvbiM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4yMS4wMCNJbXBlZGFuY2UgbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjIyLjAwI0NhbGlicmF0ZWQgaW5kdWN0YW5jZSBjb2lscyBvciBib3hlcyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4yMy4wMCNJbnN1bGF0aW9uIHJlc2lzdGFuY2UgbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjI0LjAwI0luc3VsYXRpb24gdGVzdGVycyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4yNS4wMCNJb25pemF0aW9uIGNoYW1iZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjI2LjAwI0lvbm1ldGVycyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4yNy4wMCNMaW5lIGVhcnRoIGxvb3AgdGVzdGVycyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4yOC4wMCNNZWdvaG1tZXRlcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMjkuMDAjTWljcm93YXZlIGxlYWthZ2UgbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjMwLjAwI011bHRpbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjMxLjAwI09obW1ldGVycyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4zMi4wMCNPc2NpbGxvZ3JhcGhzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjMzLjAwI1BvdGVudGlvbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjM0LjAwI1EgbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjM1LjAwI0NhbGlicmF0ZWQgcmVzaXN0YW5jZSBtZWFzdXJpbmcgZXF1aXBtZW50IzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjM2LjAwI0xldmVsIGdlbmVyYXRvcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuMzcuMDAjVm9sdGFnZSBvciBjdXJyZW50IG1ldGVycyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi4zOC4wMCNPc2NpbGxvc2NvcGVzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjM5LjAwI0FjY2VsZXJvbWV0ZXJzIzQxLjExLjM2LjAwLjAwCi11bnNwc2M3IzQxLjExLjM2LjQwLjAwI1dhdHRtZXRlcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzYuNDEuMDAjR0ZJIGNpcmN1aXQgdGVzdG9ycyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi40Mi4wMCNDaXJjdWl0IHRlc3RlciM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi40My4wMCNEZW1hbmQgbWV0ZXJzIG9yIHJlZ2lzdGVycyM0MS4xMS4zNi4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNi40NC4wMCNDaXJjdWl0IHRyYWNlcnMjNDEuMTEuMzYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzcuMDAuMDAjRWxlY3Ryb25pYyBhbmQgY29tbXVuaWNhdGlvbiBtZWFzdXJpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1bWVudHMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzcuMDEuMDAjQ2F0aG9kZSByYXkgdHViZSB0ZXN0ZXIjNDEuMTEuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzcuMDIuMDAjQ29tcGFyYXRvcnMjNDEuMTEuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzcuMDMuMDAjRGlyZWN0aW9uYWwgY291cGxlciM0MS4xMS4zNy4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNy4wNC4wMCNJbnRlZ3JhdGVkIGNpcmN1aXQgdGVzdGVycyM0MS4xMS4zNy4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNy4wNS4wMCNMb2dpYyBzdGF0ZSB0ZXN0ZXJzIzQxLjExLjM3LjAwLjAwCi11bnNwc2M3IzQxLjExLjM3LjA2LjAwI1NlbWljb25kdWN0b3IgdGVzdGVycyM0MS4xMS4zNy4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNy4wNy4wMCNUcmFuc2lzdG9yIGNpcmN1aXQgdGVzdGVycyM0MS4xMS4zNy4wMC4wMAotdW5zcHNjNyM0MS4xMS4zNy4wOC4wMCNQb3dlciBtZXRlcnMjNDEuMTEuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzcuMDkuMDAjTW9kdWxhdGlvbiBtZXRlcnMjNDEuMTEuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzcuMTAuMDAjTGV2ZWwgbWV0ZXIjNDEuMTEuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzcuMTEuMDAjTmV0d29yayBhbmFseXplcnMjNDEuMTEuMzcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzcuMTIuMDAjVGFwZSB0ZXN0ZXJzIzQxLjExLjM3LjAwLjAwCi11bnNwc2M3IzQxLjExLjM3LjEzLjAwI1RhcGVzcGVlZCB0ZXN0ZXJzIzQxLjExLjM3LjAwLjAwCi11bnNwc2M3IzQxLjExLjM3LjE0LjAwI0RpZmZlcmVudGlhdG9yIzQxLjExLjM3LjAwLjAwCi11bnNwc2M3IzQxLjExLjM4LjAwLjAwI0dlb3BoeXNpY2FsIGFuZCBnZW90ZWNobmljYWwgaW5zdHJ1bWVudHMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzguMDEuMDAjR2VvbG9naWNhbCBjb21wYXNzZXMjNDEuMTEuMzguMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzguMDIuMDAjR2VvbG9naWNhbCBwcm9zcGVjdGluZyBhcHBhcmF0dXMjNDEuMTEuMzguMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzguMDMuMDAjRWxlY3Ryb21hZ25ldGljIGdlb3BoeXNpY2FsIGluc3RydW1lbnRzIzQxLjExLjM4LjAwLjAwCi11bnNwc2M3IzQxLjExLjM4LjA0LjAwI0dyYXZpdHkgZ2VvcGh5c2ljYWwgaW5zdHJ1bWVudHMjNDEuMTEuMzguMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzguMDUuMDAjSW5kdWNlZCBwb2xhcml6YXRpb24gKElQKSBnZW9waHlzaWNhbCBpbnN0cnVtZW50cyM0MS4xMS4zOC4wMC4wMAotdW5zcHNjNyM0MS4xMS4zOC4wNi4wMCNNYWduZXRvbWV0ZXIgZ2VvcGh5c2ljYWwgaW5zdHJ1bWVudHMjNDEuMTEuMzguMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzguMDcuMDAjUmVzaXN0aXZpdHkgZ2VvcGh5c2ljYWwgaW5zdHJ1bWVudHMjNDEuMTEuMzguMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzguMDguMDAjR3JhdmltZXRlcnMjNDEuMTEuMzguMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzkuMDAuMDAjU29pbCBtZWFzdXJpbmcgZXF1aXBtZW50IzQxLjExLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjM5LjAxLjAwI0JvcmUgbWVhc3VyaW5nIGluc3RydW1lbnRzIzQxLjExLjM5LjAwLjAwCi11bnNwc2M3IzQxLjExLjM5LjAyLjAwI0Rpc3NvbHV0aW9uIG9yIGRpc2ludGVncmF0aW9uIHRlc3RlcnMjNDEuMTEuMzkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzkuMDMuMDAjUGFydGljbGUgc2l6ZSBtZWFzdXJpbmcgYXBwYXJhdHVzIzQxLjExLjM5LjAwLjAwCi11bnNwc2M3IzQxLjExLjM5LjA0LjAwI1BlbmV0cm9tZXRlcnMjNDEuMTEuMzkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzkuMDUuMDAjUGVybWVhYmlsaXR5IHRlc3RpbmcgYXBwYXJhdHVzIzQxLjExLjM5LjAwLjAwCi11bnNwc2M3IzQxLjExLjM5LjA2LjAwI1Blcm1lYWJpbGl0eSBvciBwb3Jvc2l0eSBlc3RpbWF0aW9uIGFwcGFyYXR1cyM0MS4xMS4zOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4zOS4wNy4wMCNQb3Jvc2ltZXRlcnMjNDEuMTEuMzkuMDAuMDAKLXVuc3BzYzcjNDEuMTEuMzkuMDguMDAjU2FuZCB0ZXN0aW5nIGFwcGFyYXR1cyM0MS4xMS4zOS4wMC4wMAotdW5zcHNjNyM0MS4xMS4zOS4wOS4wMCNTb2lsIGNvcmUgc2FtcGxpbmcgYXBwYXJhdHVzIzQxLjExLjM5LjAwLjAwCi11bnNwc2M3IzQxLjExLjM5LjEwLjAwI1NvaWwgdGVzdGluZyBraXRzIzQxLjExLjM5LjAwLjAwCi11bnNwc2M3IzQxLjExLjQwLjAwLjAwI1JvY2sgYW5kIHN0cmF0YSBtZWFzdXJpbmcgZXF1aXBtZW50IzQxLjExLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjQwLjAxLjAwI0NsaW5vbWV0ZXJzIzQxLjExLjQwLjAwLjAwCi11bnNwc2M3IzQxLjExLjQxLjAwLjAwI1NlaXNtb2xvZ2ljYWwgaW5zdHJ1bWVudHMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDEuMDIuMDAjRWFydGhxdWFrZSBzaW11bGF0b3JzIzQxLjExLjQxLjAwLjAwCi11bnNwc2M3IzQxLjExLjQxLjAzLjAwI1NlaXNtaWMgYWxhcm0gbW9kdWxlcyM0MS4xMS40MS4wMC4wMAotdW5zcHNjNyM0MS4xMS40MS4wNC4wMCNTZWlzbWljIGFtcGxpZmllcnMjNDEuMTEuNDEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDEuMDUuMDAjUG9ydGFibGUgc2Vpc21pYyBhcHBhcmF0dXMjNDEuMTEuNDEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDEuMDYuMDAjU2Vpc21pYyByZWNvcmRlcnMgb3Igc2Vpc21vZ3JhcGhzIzQxLjExLjQxLjAwLjAwCi11bnNwc2M3IzQxLjExLjQxLjA3LjAwI1NlaXNtb21ldGVycyM0MS4xMS40MS4wMC4wMAotdW5zcHNjNyM0MS4xMS40MS4wOC4wMCNWaWJyb21ldGVycyM0MS4xMS40MS4wMC4wMAotdW5zcHNjNyM0MS4xMS40Mi4wMC4wMCNMYW5kIHN1cnZleWluZyBpbnN0cnVtZW50cyM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS40Mi4wMS4wMCNNZWFzdXJpbmcgdGFwZXMjNDEuMTEuNDIuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDIuMDIuMDAjTWVhc3VyaW5nIHJvZHMjNDEuMTEuNDIuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDIuMDMuMDAjTWVhc3VyaW5nIHRhYmxlcyM0MS4xMS40Mi4wMC4wMAotdW5zcHNjNyM0MS4xMS40Mi4wNC4wMCNUaGVvZG9saXRlcyM0MS4xMS40Mi4wMC4wMAotdW5zcHNjNyM0MS4xMS40Mi4wNS4wMCNMb2NhdGlvbiBzdGFrZSM0MS4xMS40Mi4wMC4wMAotdW5zcHNjNyM0MS4xMS40Mi4wNi4wMCNMb2NhdGlvbiBodWIjNDEuMTEuNDIuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDMuMDAuMDAjSHlkcm9sb2dpY2FsIGluc3RydW1lbnRzIzQxLjExLjAwLjAwLjAwCi11bnNwc2M3IzQxLjExLjQzLjAxLjAwI09wZW4gc3RyZWFtIGN1cnJlbnQgbWV0ZXJzIzQxLjExLjQzLjAwLjAwCi11bnNwc2M3IzQxLjExLjQzLjAyLjAwI0xvZ2dpbmcgaW5zdHJ1bWVudHMgZm9yIHdhdGVyIHdlbGxzIzQxLjExLjQzLjAwLjAwCi11bnNwc2M3IzQxLjExLjQzLjAzLjAwI09wZW4gc3RyZWFtIHdhdGVyIGxldmVsIHJlY29yZGVycyM0MS4xMS40My4wMC4wMAotdW5zcHNjNyM0MS4xMS40NC4wMC4wMCNNZXRlb3JvbG9naWNhbCBpbnN0cnVtZW50cyM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS40NC4wMS4wMCNBbmVtb21ldGVycyM0MS4xMS40NC4wMC4wMAotdW5zcHNjNyM0MS4xMS40NC4wMi4wMCNCYXJvbWV0ZXJzIzQxLjExLjQ0LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ0LjAzLjAwI1ByZWNpcGl0YXRpb24gb3IgZXZhcG9yYXRpb24gcmVjb3JkZXJzIzQxLjExLjQ0LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ0LjA0LjAwI1JhZGlvc29uZGUgYXBwYXJhdHVzIzQxLjExLjQ0LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ0LjA1LjAwI1JhaW5mYWxsIHJlY29yZGVycyM0MS4xMS40NC4wMC4wMAotdW5zcHNjNyM0MS4xMS40NC4wNi4wMCNQcmVjaXBpdGF0aW9uIG9yIGV2YXBvcmF0aW9uIHN1cmZhY2Ugb2JzZXJ2aW5nIGFwcGFyYXR1cyM0MS4xMS40NC4wMC4wMAotdW5zcHNjNyM0MS4xMS40NC4wNy4wMCNTb2xhciByYWRpYXRpb24gc3VyZmFjZSBvYnNlcnZpbmcgYXBwYXJhdHVzIzQxLjExLjQ0LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ0LjA4LjAwI1RlbXBlcmF0dXJlIG9yIGh1bWlkaXR5IHN1cmZhY2Ugb2JzZXJ2aW5nIGFwcGFyYXR1cyM0MS4xMS40NC4wMC4wMAotdW5zcHNjNyM0MS4xMS40NC4wOS4wMCNXaW5kIHN1cmZhY2Ugb2JzZXJ2aW5nIGFwcGFyYXR1cyM0MS4xMS40NC4wMC4wMAotdW5zcHNjNyM0MS4xMS40NC4xMC4wMCNXZWF0aGVyIHN0YXRpb25zIzQxLjExLjQ0LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ0LjExLjAwI01ldGVvcm9sb2d5IGluc3RydW1lbnQgYWNjZXNzb3JpZXMjNDEuMTEuNDQuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDUuMDAuMDAjTWVjaGFuaWNhbCBpbnN0cnVtZW50cyM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS40NS4wMS4wMCNEeW5hbW9tZXRlcnMjNDEuMTEuNDUuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDUuMDIuMDAjRWxhc3RvbWV0ZXJzIzQxLjExLjQ1LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ1LjAzLjAwI0V4dGVuc29tZXRlcnMjNDEuMTEuNDUuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDUuMDQuMDAjUGl0Y2ggbWVhc3VyaW5nIGluc3RydW1lbnRzIzQxLjExLjQ1LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ1LjA1LjAwI1JvdW5kbmVzcyB0ZXN0aW5nIGluc3RydW1lbnRzIzQxLjExLjQ1LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ1LjA2LjAwI1NwaGVyb21ldGVycyM0MS4xMS40NS4wMC4wMAotdW5zcHNjNyM0MS4xMS40NS4wNy4wMCNTcHJpbmcgdGVzdGluZyBtYWNoaW5lcyM0MS4xMS40NS4wMC4wMAotdW5zcHNjNyM0MS4xMS40NS4wOC4wMCNTdXJmYWNlIHRlc3RlcnMjNDEuMTEuNDUuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDUuMDkuMDAjVGVuc2lvbWV0ZXJzIzQxLjExLjQ1LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ1LjEwLjAwI1RvcnF1ZSBsaW1pdGVyIzQxLjExLjQ1LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ2LjAwLjAwI01ldGFscyBhbmQgbWV0YWxsdXJneSBhbmQgc3RydWN0dXJhbCBtYXRlcmlhbHMgdGVzdGluZyBpbnN0cnVtZW50cyM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ni4wMS4wMCNBYnJhc2lvbiB0ZXN0ZXJzIzQxLjExLjQ2LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ2LjAyLjAwI0NvbXByZXNzaW9uIHRlc3RlcnMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMDMuMDAjQ29uY3JldGUgb3IgY2VtZW50IHRlc3RpbmcgaW5zdHJ1bWVudHMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMDQuMDAjQ29ycm9zaW9uIHRlc3RlcnMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMDUuMDAjQ3JhY2sgb3IgY29ycm9zaW9uIGRldGVjdG9ycyM0MS4xMS40Ni4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ni4wNi4wMCNDcmVlcCB0ZXN0ZXJzIzQxLjExLjQ2LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ2LjA3LjAwI0R1Y3RpbGl0eSB0ZXN0aW5nIG1hY2hpbmVzIzQxLjExLjQ2LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ2LjA4LjAwI0ZhdGlndWUgdGVzdGVycyM0MS4xMS40Ni4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ni4wOS4wMCNGb3JnaW5nIHRlc3RpbmcgYXBwYXJhdHVzIzQxLjExLjQ2LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ2LjEwLjAwI0ZvdW5kcnkgdGVzdGluZyBhcHBhcmF0dXMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMTEuMDAjSGFyZG5lc3MgdGVzdGVycyM0MS4xMS40Ni4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ni4xMi4wMCNJbXBhY3QgdGVzdGVycyM0MS4xMS40Ni4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ni4xMy4wMCNMb2FkIGZyYW1lIzQxLjExLjQ2LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ2LjE0LjAwI01ldGFsIHRlc3RpbmcgaW5zdHJ1bWVudHMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMTUuMDAjUGhvdG9lbGFzdGljIHRlc3RpbmcgaW5zdHJ1bWVudHMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMTYuMDAjUHJvb2ZzdHJlc3MgaW5kaWNhdG9ycyM0MS4xMS40Ni4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ni4xNy4wMCNSZWxheGF0aW9uIHRlc3RlcnMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMTguMDAjUm91Z2huZXNzIG1lYXN1cmluZyBpbnN0cnVtZW50cyM0MS4xMS40Ni4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ni4xOS4wMCNTaGVhciBzdHJlbmd0aCB0ZXN0ZXJzIzQxLjExLjQ2LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ2LjIwLjAwI1Nob2NrIHRlc3RpbmcgYXBwYXJhdHVzIzQxLjExLjQ2LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ2LjIxLjAwI1RlbnNpb24gdGVzdGVycyM0MS4xMS40Ni4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ni4yMi4wMCNUb3JzaW9uIHRlc3RlcnMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMjMuMDAjRmxleHVyZSBvciB0cmFuc3ZlcnNlIHRlc3RpbmcgbWFjaGluZXMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMjQuMDAjVmlicmF0aW9uIHRlc3RlcnMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDYuMjUuMDAjV2VhciB0ZXN0ZXJzIzQxLjExLjQ2LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ2LjI2LjAwI1dlbGRpbmcgdGVzdGluZyBhcHBhcmF0dXMjNDEuMTEuNDYuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDcuMDAuMDAjUGFwZXIgYW5kIHdvb2QgYW5kIHRleHRpbGUgdGVzdGluZyBpbnN0cnVtZW50cyM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ny4wMS4wMCNDYXJkYm9hcmQgdGVzdGluZyBpbnN0cnVtZW50cyM0MS4xMS40Ny4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ny4wMi4wMCNUZXh0aWxlcyBmYXN0bmVzcyB0ZXN0ZXJzIzQxLjExLjQ3LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ3LjAzLjAwI0xlYXRoZXIgdGVzdGluZyBpbnN0cnVtZW50cyM0MS4xMS40Ny4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ny4wNC4wMCNQYXBlciB0ZXN0aW5nIGluc3RydW1lbnRzIzQxLjExLjQ3LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ3LjA1LjAwI1RleHRpbGUgdGVzdGluZyBpbnN0cnVtZW50cyM0MS4xMS40Ny4wMC4wMAotdW5zcHNjNyM0MS4xMS40Ny4wNi4wMCNXb29kIHRlc3RpbmcgaW5zdHJ1bWVudHMjNDEuMTEuNDcuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDguMDAuMDAjQ2VyYW1pY3MgYW5kIGdsYXNzIHRlc3RpbmcgaW5zdHJ1bWVudHMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNDguMDEuMDAjQ2VyYW1pY3MgdGVzdGluZyBpbnN0cnVtZW50cyM0MS4xMS40OC4wMC4wMAotdW5zcHNjNyM0MS4xMS40OC4wMi4wMCNHbGFzcyB0ZXN0aW5nIGluc3RydW1lbnRzIzQxLjExLjQ4LjAwLjAwCi11bnNwc2M3IzQxLjExLjQ4LjAzLjAwI1BvdHRlcnkgdGVzdGluZyBpbnN0cnVtZW50cyM0MS4xMS40OC4wMC4wMAotdW5zcHNjNyM0MS4xMS41MS4wMC4wMCNDb2FsIGFuZCBvcmUgdGVzdGluZyBpbnN0cnVtZW50cyM0MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0MS4xMS41MS4wMS4wMCNDb2FsIHRlc3RpbmcgaW5zdHJ1bWVudHMjNDEuMTEuNTEuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNTIuMDAuMDAjUmFkYXIgYW5kIHNvbmFyIHN5c3RlbXMgYW5kIGNvbXBvbmVudHMjNDEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDEuMTEuNTIuMDEuMDAjUmFkYXJiYXNlZCBzdXJ2ZWlsbGFuY2Ugc3lzdGVtcyM0MS4xMS41Mi4wMC4wMAotdW5zcHNjNyM0MS4xMS41Mi4wMi4wMCNGZWVkIGhvcm5zIzQxLjExLjUyLjAwLjAwCi11bnNwc2M3IzQyLjAwLjAwLjAwLjAwI01lZGljYWwgRXF1aXBtZW50IGFuZCBBY2Nlc3NvcmllcyBhbmQgU3VwcGxpZXMjNDIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMDAuMDAuMDAjSG9zcGl0YWwgYW5kIG1lZGljYWwgYW5kIGRlbnRhbCBlcXVpcG1lbnQjNDIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTUuMDAuMDAjQW5lc3RoZXNpYSBlcXVpcG1lbnQgYW5kIGluc3RydW1lbnRzIGFuZCBhY2Nlc3NvcmllcyM0Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNS4wMi4wMCNIZWFsdGhjYXJlIGdhcyBtYWNoaW5lcyM0Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNS4wMy4wMCNBbmVzdGhlc2lhIG1hY2hpbmVzIzQyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE1LjA0LjAwI1JlZ2lvbmFsIGFuYWVzdGhlc2lhIGtpdHMgb3IgbmVlZGxlcyM0Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNi4wMC4wMCNNZWRpY2FsIGVxdWlwbWVudCBhbmQgaW5zdHJ1bWVudHMjNDIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTYuMDEuMDAjTWVkaWNhbCB0aGVybW9tZXRlcnMjNDIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTYuMDIuMDAjU3BlY3VsdW1zIzQyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE2LjAzLjAwI090b3Njb3BlcyM0Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNi4wNC4wMCNBdWRpb21ldGVycyBvciB0eW1wYW5vbWV0ZXJzIzQyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE2LjA1LjAwI1N0ZXRob3Njb3BlcyM0Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNi4wNi4wMCNFcmdvbm9tZXRlcnMjNDIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTYuMDcuMDAjRWxlY3RybyB0aGVyYXB5IGFwcGFyYXR1cyM0Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNi4wOC4wMCNQaG90byB0aGVyYXB5IGFwcGFyYXR1cyM0Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNi4wOS4wMCNIeWRyb3RoZXJhcHkgc3VwcGxpZXMgb3IgYWNjZXNzb3JpZXMjNDIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTYuMTAuMDAjQWN1cHVuY3R1cmUgdW5pdHMjNDIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTYuMTEuMDAjU3RldGhvZ3JhcGhzIzQyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE2LjEyLjAwI01lZGljYWwgcHVtcHMjNDIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTYuMTMuMDAjTWVkaWNhbCB2YWx2ZXMjNDIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTYuMTQuMDAjRW5kb3Njb3BlcyM0Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4wMC4wMCNNZWRpY2FsIHRlc3RpbmcgYW5kIGFuYWx5emluZyBhbmQgZGlhZ25vc3RpYyBlcXVpcG1lbnQjNDIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMDEuMDAjU2tpbiB0ZXN0IHN0cmlwcyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4wMi4wMCNCbG9vZCBhbmFseXplcnMjNDIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMDMuMDAjQmxvb2QgY2VsbCBjb3VudGVycyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4wNC4wMCNIYWVtb2dsb2Jpbm9tZXRlcnMjNDIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMDUuMDAjQmlsaXJ1YmluIG1ldGVycyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4wNi4wMCNIYWVtYWN5dG9tZXRlcnMjNDIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMDcuMDAjQ29sb255IGNvdW50ZXJzIzQyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE3LjA4LjAwI0ZlcnJpdGluIHRlc3Qga2l0cyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4wOS4wMCNFbnp5bWUgbGlua2VkIGltbXVub3NvcmJlbnQgYXNzYXkgKEVMSVNBKSB0ZXN0IGtpdCM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4xMC4wMCNIdW1hbiBpbW11bmUgZGVmaWNpZW5jeSAoSElWKSB0ZXN0IGtpdHMjNDIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMTEuMDAjU3lmYWNhcmQgc3lwaGlsaXMgdGVzdHMjNDIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMTIuMDAjUHJlZ25hbmN5IHRlc3Qga2l0cyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4xMy4wMCNSYWRpbyBpbW11bm9hc3NheSAoUklBKSB0ZXN0IGtpdHMjNDIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMTQuMDAjUG9saW8gY2FzZSBpbnZlc3RpZ2F0aW9uIGtpdCM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4xNS4wMCNVcmluZSBibG9vZCB0ZXN0IHN0cmlwcyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4xNi4wMCNDZWxsIHNpemUgYW5hbHl6ZXJzIzQyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE3LjE3LjAwI1dob2xlIGJvZHkgY291bnRlcnMjNDIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMTguMDAjQmlvbWVkaWNhbCBjb3VudGVycyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4xOS4wMCNNZWRpY2FsIG11bHRpcHJvYmUgc3lzdGVtIGNvdW50ZXJzIzQyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE3LjIwLjAwI0FsbGVyZ3kgb3IgZGlhZ25vc3RpYyBraXRzIzQyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE3LjIxLjAwI1VyaW5hcnkgdGVzdCBzZXQjNDIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMjIuMDAjRGlmZmVyZW50aWFsIGNlbGwgY291bnRlcnMjNDIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTcuMjMuMDAjUGxhc21hIHZpc2Nvc2l0eSBtZWFzdXJlbWVudCM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4yNC4wMCNQbGF0ZWxldCBhbmFseXNpcyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4yNS4wMCNCbG9vZCBnbHVjb3NlIG1ldGVycyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4yNi4wMCNIZW1vY3VsdHVyZSB0ZXN0cyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4yNy4wMCNCb2R5ZmF0IGFuYWx5c2VycyM0Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xNy4yOC4wMCNTYW1wbGUgY29sbGVjdGlvbiBzeXN0ZW1zIzQyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE4LjAwLjAwI1ggcmF5IGFuZCBhbHBoYSBhbmQgYmV0YSBhbmQgZ2FtbWEgcmFkaWF0aW9uIGFwcGFyYXR1cyM0Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOC4wMS4wMCNEaWFnbm9zdGljIHggcmF5IGVxdWlwbWVudCM0Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOC4wMi4wMCNSYWRpb3RoZXJhcHkgc2ltdWxhdG9yIzQyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE4LjAzLjAwI0NhbGlicmF0aW9uIGVxdWlwbWVudCM0Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOC4wNC4wMCNCaW9tZWRpY2FsIHJlc2VhcmNoIHN1cHBvcnQgdW5pdHMjNDIuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTguMDUuMDAjQ29tcHV0ZWQgdG9tb2dyYXBoeSAoQ1QpIHNjYW5uZXJzIzQyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE4LjA2LjAwI1dhdGVyIHBoYW50b21zIzQyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE4LjA3LjAwI1JhZGlvYmlvbG9naWNhbCBpbnN0cnVtZW50cyM0Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOC4wOC4wMCNHYW1tYSBzY2ludGlsbGF0b3JzIzQyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE4LjA5LjAwI0dhbW1hIGNhbWVyYXMjNDIuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTguMTAuMDAjTGluZWFyIGFjY2VsZXJhdG9ycyM0Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOC4xMS4wMCNSYWRpb3RoZXJhcHkgYnJhY2h5dGhlcmFweSBlcXVpcG1lbnQjNDIuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTguMTIuMDAjUmFkaW90aGVyYXB5IHRlbGV0aGVyYXB5IGNvYmFsdCA2MCBtYWNoaW5lIzQyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE4LjEzLjAwI1JhZGlvdGhlcmFweSB0ZWxldGhlcmFweSBzdXBlcmZpY2lhbCB4IHJheSBtYWNoaW5lIzQyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE4LjE0LjAwI1JhZGlvdGhlcmFweSB0ZWxldGhlcmFweSBvcnRob3ZvbHRhZ2UgeCByYXkgbWFjaGluZSM0Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOC4xNS4wMCNSYWRpb3RoZXJhcHkgdGVsZXRoZXJhcHkgbGluZWFyIGFjY2VsZXJhdG9ycyM0Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOC4xNi4wMCNSYWRpb2lzb3RvcGUgc2Nhbm5lcnMgZm9yIG1lZGljYWwgcHVycG9zZXMjNDIuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTguMTcuMDAjRGVudGFsIHggcmF5IHVuaXRzIzQyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE4LjE4LjAwI0FuZ2lvZ3JhcGh5IHN1cHBsaWVzIzQyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE4LjE5LjAwI0FuZ2lvZ3JhcGh5IGRldmljZXMjNDIuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTguMjAuMDAjQW5naW9wbGFzdHkgc3VwcGxpZXMjNDIuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTguMjEuMDAjQW5naW9wbGFzdHkgZGV2aWNlcyM0Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOS4wMC4wMCNPeHlnZW4gdGhlcmFweSBlcXVpcG1lbnQjNDIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTkuMDEuMDAjSW5oYWxhdGlvbiBlcXVpcG1lbnQjNDIuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTkuMDIuMDAjTWVkaWNhbCBodW1pZGlmaWVycyM0Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOS4wMy4wMCNSZXN1c2NpdGF0b3JzIG9yIHJlc3BpcmF0b3JzIzQyLjEwLjE5LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE5LjA0LjAwI0FzcGlyYXRvcnMjNDIuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTkuMDUuMDAjSW5zdWZmbGF0b3JzIzQyLjEwLjE5LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE5LjA2LjAwI1Jlc3VzY2l0YXRpb24gZW1lcmdlbmN5IG91dGZpdHMjNDIuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTkuMDcuMDAjTmVidWxpemVycyM0Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOS4wOC4wMCNBZXJvc29sIHRoZXJhcHkgYXBwYXJhdHVzIzQyLjEwLjE5LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE5LjA5LjAwI01lZGljYWwgdmVudGlsYXRpb24gc3lzdGVtcyM0Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOS4xMC4wMCNNYXNrcyBvciBicmVhdGhpbmcgYmFncyM0Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOS4xMS4wMCNIZWFydCBsdW5nIGFwcGFyYXR1cyM0Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOS4xMi4wMCNCcmVhdGhpbmcgZGV2aWNlIHdpdGggaHlnaWVuaWMgYmFycmllciM0Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOS4xMy4wMCNPeHlnZW4gbWFza3MjNDIuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMTkuMTQuMDAjTW9iaWxlIHN1Y3Rpb24gdW5pdCM0Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4xOS4xNS4wMCNIeXBlcmJhcmljIHRyZWF0bWVudCBjaGFtYmVyIzQyLjEwLjE5LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE5LjE2LjAwI094eWdlbmF0b3JzIzQyLjEwLjE5LjAwLjAwCi11bnNwc2M3IzQyLjEwLjE5LjE3LjAwI0FpciBveHlnZW4gdW5pdHMjNDIuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjAuMDAuMDAjTWVkaWNhbCBhbmQgc3VyZ2ljYWwgYW5kIGxhYm9yYXRvcnkgc3RlcmlsaXplcnMjNDIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjAuMDEuMDAjQXV0b2NsYXZlcyM0Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMC4wMi4wMCNTdGVhbSBzdGVyaWxpemVycyM0Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMC4wMy4wMCNCb2lsaW5nIGRpc2luZmVjdG9ycyM0Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMC4wNC4wMCNIb3QgYWlyIHN0ZXJpbGl6ZXJzIzQyLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIwLjA1LjAwI0NoZW1pY2FsIHN0ZXJpbGl6ZXJzIzQyLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIwLjA2LjAwI0xhYm9yYXRvcnkgc3RlcmlsaXplcnMjNDIuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjAuMDcuMDAjU3RlcmlsaXphdGlvbiBvdmVucyM0Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMC4wOC4wMCNHZXJtaWNpZGFsIGxhbXBzIzQyLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIwLjA5LjAwI1N0ZXJpbGl6aW5nIGxhbXBzIzQyLjEwLjIwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIwLjEwLjAwI0RlY29udGFtaW5hdGlvbiB3YXNoaW5nIGVxdWlwbWVudCM0Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4wMC4wMCNTdXJnaWNhbCBzZXRzIGFuZCBpbnN0cnVtZW50cyM0Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4wMS4wMCNDcnlvIHN1cmdlcnkgZXF1aXBtZW50IzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjAyLjAwI0F1dG9wc3kgaW5zdHJ1bWVudHMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMDMuMDAjU3VjdGlvbiB1bml0cyBvciBwYXJ0cyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4wNC4wMCNTdXJnaWNhbCBsYXNlcnMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMDUuMDAjRWxlY3RybyBjYXV0ZXJ5IHN1cmdpY2FsIGVxdWlwbWVudCM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4wNi4wMCNFYXIgb3Igbm9zZSBvciB0aHJvYXQgKEVOVCkgc3VyZ2VyeSBpbnN0cnVtZW50cyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4wNy4wMCNHeW5lY29sb2dpY2FsIHN1cmdlcnkgaW5zdHJ1bWVudHMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMDguMDAjQ2FyZGlvbG9neSBzdXJnZXJ5IGluc3RydW1lbnRzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjA5LjAwI01pY3JvIHN1cmdlcnkgaW5zdHJ1bWVudHMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMTAuMDAjT3J0aG9wZWRpYyBzdXJnZXJ5IGluc3RydW1lbnRzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjExLjAwI1N1dHVyZSBjbGlwcyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4xMi4wMCNEaXNzZWN0aW5nIGluc3RydW1lbnRzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjEzLjAwI0Rpc3NlY3RpbmcgcGlucyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4xNC4wMCNJbXBsYW50IHN5c3RlbXMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMTUuMDAjQmxvb2QgbGFuY2V0cyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4xNi4wMCNTY2FscGVscyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4xNy4wMCNTdXJnaWNhbCBibGFkZXMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMTguMDAjQ3JhbmlvY2xhc3RzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjE5LjAwI1N1cmdpY2FsIHNjaXNzb3JzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjIwLjAwI1N1cmdpY2FsIHNoZWFycyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4yMS4wMCNTdXJnaWNhbCBkcmlsbHMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMjIuMDAjU3VyZ2ljYWwgd2lyZSBzYXdzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjIzLjAwI1N1cmdpY2FsIHBlcmZvcmF0b3JzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjI0LjAwI0N1cmV0dGVzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjI1LjAwI1N1cmdpY2FsIGNsYW1wcyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4yNi4wMCNTdXJnaWNhbCBpbnN0cnVtZW50IGhvbGRlcnMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMjcuMDAjU3VyZ2ljYWwgZWxldmF0b3JzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjI4LjAwI1Jhc3BhdG9yeSBpbnN0cnVtZW50cyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS4yOS4wMCNGb3JjZXBzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjMwLjAwI1N1cmdpY2FsIHJldHJhY3RvcnMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMzEuMDAjU3VyZ2ljYWwgc3ByZWFkZXJzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjMyLjAwI1V0ZXJpbmUgc291bmQgaW5zdHJ1bWVudHMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMzMuMDAjRGlsYXRvcnMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMzQuMDAjU3VyZ2ljYWwgZGlzaGVzIG9yIHBvdHMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMzUuMDAjU3VyZ2ljYWwgcHJvYmVzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjM2LjAwI1N1cmdpY2FsIG1hbGxldHMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMzcuMDAjRGVjYXBpdGF0aW9uIGhvb2tzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjM4LjAwI1N1dHVyZXMjNDIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjEuMzkuMDAjQ2F0Z3V0IGNocm9taWMgc3V0dXJlcyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMS40MC4wMCNMYXJ5bmdvc2NvcGVzIzQyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIxLjQxLjAwI1N1cmdpY2FsIHNoYXZpbmcga2l0cyM0Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMi4wMC4wMCNSZWhhYmlsaXRhdGlvbiBlcXVpcG1lbnQgYW5kIGFjY2Vzc29yaWVzIzQyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIyLjAxLjAwI1NwbGludHMjNDIuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjIuMDIuMDAjUHN5Y2hvbG9naWNhbCBhcHRpdHVkZSB0ZXN0aW5nIGFwcGFyYXR1cyM0Mi4xMC4yMi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMi4wMy4wMCNNYXNzYWdlIGFwcGFyYXR1cyM0Mi4xMC4yMi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMi4wNC4wMCNUcmFjdGlvbiBwdWxsZXlzIG9yIGJlbHRzIG9yIHdlaWdodHMjNDIuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjIuMDUuMDAjUGh5c2ljYWwgdGhlcmFweSByZWhhYmlsaXRhdGlvbiBlcXVpcG1lbnQgb3IgYWNjZXNzb3JpZXMjNDIuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjIuMDYuMDAjT3ZlcmJlZCBmcmFtZXMjNDIuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjIuMDcuMDAjUmVoYWJpbGl0YXRpb24gc3RpbXVsYXRvcnMjNDIuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjIuMDguMDAjUGF0aWVudCBsaWZ0ZXJzIzQyLjEwLjIyLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIyLjA5LjAwI1Nob3J0IHdhdmUgZGlhdGhlcm15IGVxdWlwbWVudCM0Mi4xMC4yMi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMi4xMC4wMCNNb2lzdCBoZWF0IHRoZXJhcHkgZXF1aXBtZW50IzQyLjEwLjIyLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIyLjExLjAwI0hlYXQgb3IgY29sZCBwYWNrcyM0Mi4xMC4yMi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMi4xMi4wMCNQaHlzaW9sb2dpY2FsIGVxdWlwbWVudCM0Mi4xMC4yMi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMi4xMy4wMCNTdGltdWxhdG9ycyM0Mi4xMC4yMi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMi4xNC4wMCNSZWhhYmlsaXRhdGlvbiBzdXBwbGllcyBmb3IgdGhlIGJsaW5kIzQyLjEwLjIyLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIyLjE1LjAwI0VsZWN0cm9teW9ncmFwaCM0Mi4xMC4yMi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMi4xNi4wMCNSZWhhYmlsaXRhdGlvbiBzdXBwbGllcyBmb3Igc3BlZWNoIGhhbmRpY2FwcGVkIzQyLjEwLjIyLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIyLjE3LjAwI0VsZWN0cm8gc2xlZXAgYXBwYXJhdHVzIzQyLjEwLjIyLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIyLjE4LjAwI1Zpc3VhbCBleGVyY2lzZSB0cmFpbmluZyBhaWRzIzQyLjEwLjIyLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIyLjE5LjAwI09ydGhvcGVkaWMgY3VzaGlvbnMjNDIuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjMuMDAuMDAjT3BodGhhbG1vbG9neSBpbnN0cnVtZW50cyBhbmQgYXBwbGlhbmNlcyM0Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMy4wMS4wMCNPcHRoYWxtb2xvZ2ljYWwgcHVuY2hlcyM0Mi4xMC4yMy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMy4wMi4wMCNQaG90b2NvYWd1bGF0b3JzIzQyLjEwLjIzLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIzLjAzLjAwI1NsaXQgbGFtcHMjNDIuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjMuMDQuMDAjUGVyaW1ldGVycyM0Mi4xMC4yMy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMy4wNS4wMCNUb25vbWV0ZXJzIzQyLjEwLjIzLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIzLjA2LjAwI1JldGlub21ldGVycyM0Mi4xMC4yMy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMy4wNy4wMCNFeWV3YXNoZXJzIzQyLjEwLjIzLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIzLjA4LjAwI09waHRoYWxtb21ldGVycyM0Mi4xMC4yMy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMy4wOS4wMCNPcGh0aGFsbW9zY29wZXMjNDIuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjMuMTAuMDAjRW1lcmdlbmN5IGV5ZSBjYXJlIGVxdWlwbWVudCM0Mi4xMC4yMy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yMy4xMS4wMCNLZXJhdG9tZXRlcnMjNDIuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjMuMTIuMDAjVmlzaW9uIHRlc3RlcnMjNDIuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjMuMTMuMDAjU3lub3Rvc2NvcGVzIzQyLjEwLjIzLjAwLjAwCi11bnNwc2M3IzQyLjEwLjIzLjE0LjAwI09waHRoYWxtaWMgb3BlcmF0aW9uIGluc3RydW1lbnRzIzQyLjEwLjIzLjAwLjAwCi11bnNwc2M3IzQyLjEwLjI0LjAwLjAwI0d5bmVjb2xvZ2ljYWwgYW5kIG9ic3RldHJpY2FsIGluc3RydW1lbnRzIzQyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjI0LjAxLjAwI0ludHJhIHV0ZXJpbmUgZGV2aWNlIChJVUQpIGluc2VydGlvbiBraXRzIzQyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI0LjAyLjAwI1R1YmFsIGxpZ2F0aW9uIGtpdHMjNDIuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjQuMDMuMDAjVmFzZWN0b215IGtpdHMjNDIuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjQuMDQuMDAjTGFwYXJvc2NvcGljIGVxdWlwbWVudCM0Mi4xMC4yNC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNC4wNS4wMCNTaWxhc3RpYyBiYW5kcyM0Mi4xMC4yNC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNC4wNi4wMCNNZW5zdHJ1YXRpb24gcmVndWxhdGlvbiBraXRzIzQyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI0LjA3LjAwI1NwZXJtb2tpbmVzZW1ldGVyIzQyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI0LjA4LjAwI1V0ZXJpbmUgb3IgZ3luZWNvbG9naWNhbCB0ZXN0cyM0Mi4xMC4yNC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNC4wOS4wMCNPYnN0ZXRyaWNhbCByZXRyYWN0b3JzIzQyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI0LjEwLjAwI1VtYmlsaWNhbCB0YXBlcyM0Mi4xMC4yNC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNC4xMS4wMCNCcmVhc3QgcHVtcHMgb3IgYWNjZXNzb3JpZXMjNDIuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjQuMTIuMDAjTWlkd2lmZSBlcXVpcG1lbnQgb3Iga2l0cyM0Mi4xMC4yNC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNC4xMy4wMCNIeXN0ZXJvc2NvcGljIGVxdWlwbWVudCM0Mi4xMC4yNC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNC4xNC4wMCNWYWdpbm9zY29wZSM0Mi4xMC4yNC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNC4xNS4wMCNVcmV0aHJvc2NvcGUgY3lzdGVyc2NvcGUjNDIuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjQuMTYuMDAjVW1iaWxpY2FsIGNvcmQgY2xhbXBzIzQyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI0LjE3LjAwI1ZhY3V1bSBleHRyYWN0b3JzIzQyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI0LjE4LjAwI0luIHZpdHJvIGZlcnRpbGl6YXRpb24gZXF1aXBtZW50IG9yIHN1cHBsaWVzIzQyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI0LjE5LjAwI0VuZG9tZXRyaWFsIGJpb3BzeSBlcXVpcG1lbnQjNDIuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjQuMjAuMDAjSW50cmF1dGVyaW5lIGluc2VtaW5hdGlvbiBjYXRoZXRlcnMjNDIuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjQuMjEuMDAjUGVsdmltZXRlcnMjNDIuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjUuMDAuMDAjRmliZXIgb3B0aWMgZXhhbWluYXRpb24gaW5zdHJ1bWVudHMjNDIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjUuMDEuMDAjTGlnaHQgc291cmNlcyM0Mi4xMC4yNS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNS4wMi4wMCNFbmRvc2NvcHkgZXF1aXBtZW50IzQyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI1LjAzLjAwI1Byb3Rvc2NvcGVzIzQyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI1LjA0LjAwI0N1bGRvc2NvcGVzIzQyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI1LjA1LjAwI0dhc3Ryb3Njb3BlcyM0Mi4xMC4yNS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNS4wNi4wMCNFc29waGFnb3Njb3BlIzQyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI1LjA3LjAwI1NpZ21vaWRvc2NvcGUjNDIuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjUuMDguMDAjQnJvbmNob3Njb3BlIzQyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI1LjA5LjAwI0NvbG9ub3Njb3BlIzQyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI1LjEwLjAwI0FydGhyb3Njb3BlIzQyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjAwLjAwI0VsZWN0cm8gZGlhZ25vc3RpYyBhcHBhcmF0dXMjNDIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMDEuMDAjRWxlY3Ryb2NhcmRpb2dyYXBocyAoRUNHcykjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMDIuMDAjQ2FyZGlvc2NvcGVzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjAzLjAwI1N0ZXJlb3RhY3RpYyBzeXN0ZW1zIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjA0LjAwI0FjaGlsbGVhbiByZWZsZXhvbWV0ZXIjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMDUuMDAjVGhlc2lvbWV0ZXIjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMDYuMDAjUG5ldW1vdGFjaG9ncmFwaHMjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMDcuMDAjQmlvdmlkZW9ncmFwaHMjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMDguMDAjUGh5c2lvbG9naWNhbCBsZXZlcnMjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMDkuMDAjTmVydmUgY2hhbWJlciBlcXVpcG1lbnQjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMTAuMDAjVWx0cmFzb25pYyBkaWFnbm9zdGljIGVxdWlwbWVudCM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4xMS4wMCNVbHRyYXNvdW5kIHNjYW5uZXJzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjEyLjAwI0RvcHBsZXIgdWx0cmFzb3VuZCBlcXVpcG1lbnQjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMTMuMDAjVWx0cmFzb25pYyBzdXJnZXJ5IGVxdWlwbWVudCBvciB1bHRyYXNvbmljIGFzcGlyYXRpb24jNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMTQuMDAjVWx0cmFzb3VuZCBwaHlzaW90aGVyYXB5IGVxdWlwbWVudCM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4xNS4wMCNDYXJkaW8gc29uYXJzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjE2LjAwI1Nob3J0IHdhdmUgbWVkaWNhbCBhcHBhcmF0dXMjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMTcuMDAjQmxvb2QgcHJlc3N1cmUgbWVhc3VyaW5nIGVxdWlwbWVudCM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4xOC4wMCNFbGVjdHJvZW5jZXBoYWxvZ3JhcGhzIChFRUdzKSM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4xOS4wMCNTcGlyb21ldGVycyM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4yMC4wMCNHeW5lY29sb2dpY2FsIGRpYWdub3N0aWMgZXF1aXBtZW50IzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjIxLjAwI0NvbHBvc2NvcGVzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjIyLjAwI0Ftbmlvc2NvcGVzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjIzLjAwI0ZldGFsIG1vbml0b3JzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjI0LjAwI0RlbGl2ZXJ5IG1vbml0b3JzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjI1LjAwI05lb25hdGFsIG1vbml0b3JzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjI2LjAwI0hlYXJ0IG1vbml0b3Igc3lzdGVtcyM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4yNy4wMCNJbnRlbnNpdmUgY2FyZSBtb25pdG9ycyM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4yOC4wMCNFbGVjdHJvbWVkaWNhbCB0ZXN0aW5nIGVxdWlwbWVudCM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4yOS4wMCNEZWZpYnJpbGxhdG9yIHRlc3RlciM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4zMC4wMCNBdWRpb21ldGVyIGNhbGlicmF0aW9uIHRlc3RlciM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4zMS4wMCNFbGVjdHJvZGUgb3IgZWxlY3Ryb21lZGljYWwgdGVzdGVyIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjMyLjAwI1ZlbnRpbGF0b3IgdGVzdCBtZXRlcnMjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMzMuMDAjRUNHIHBhdGllbnQgc2ltdWxhdG9ycyM0Mi4xMC4yNi4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNi4zNC4wMCNFbGVjdHJvc3VyZ2ljYWwgYW5hbHl6ZXJzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjM1LjAwI0VsZWN0cm9tZWRpY2FsIHNhZmV0eSBhbmFseXplcnMjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMzYuMDAjRWxlY3Ryb21lZGljYWwgdGVzdCBzeXN0ZW1zIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjM3LjAwI0VsZWN0cm9uaWMgcHVsc2UgbW9uaXRvcnMjNDIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjYuMzguMDAjVmFnaW5hbCB1bHRyYXNvdW5kIHByb2JlIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI2LjM5LjAwI01lZGljYWwgY29uZHVjdGl2ZSBnZWxzIzQyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI3LjAwLjAwI0RpYWx5c2lzIGVxdWlwbWVudCBhbmQgaW5zdHJ1bWVudHMjNDIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjcuMDEuMDAjQmxvb2QgYmFnIHNhbXBsZXIjNDIuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjcuMDIuMDAjQmxvb2Qgd2FybWVyIzQyLjEwLjI3LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI3LjAzLjAwI0RpYWx5c2lzIGluc3RydW1lbnQgc2V0cyM0Mi4xMC4yNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNy4wNC4wMCNQZXJpdG9uZWFsIGRpYWx5c2lzIHVuaXRzIzQyLjEwLjI3LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI3LjA1LjAwI0hhZW1vZGlhbHlzaXMgdW5pdHMjNDIuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjcuMDYuMDAjQmxvb2QgZmlsdGVycyM0Mi4xMC4yNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNy4wNy4wMCNCbG9vZCBzZXBhcmF0b3Igc3RhbmQjNDIuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjcuMDguMDAjUGxhc21hcGhvcmVzaXMgZXF1aXBtZW50IzQyLjEwLjI3LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI3LjA5LjAwI0FuZ2lvZ3JhcGhpYyBpbmplY3RvcnMjNDIuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjcuMTAuMDAjSGVtYWZpbHRlcnMjNDIuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjcuMTEuMDAjRGlhbHlzaXMgdHViaW5nIG9yIG1lbWJyYW5lcyM0Mi4xMC4yNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNy4xMi4wMCNCbG9vZCBveHlnZW4gZGVtYW5kIGFwcGFyYXR1cyM0Mi4xMC4yNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNy4xMy4wMCNDbG90IGNvYWd1bGF0aW9uIGRldGVjdGlvbiBzeXN0ZW1zIzQyLjEwLjI3LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI3LjE0LjAwI01lZGljYWwgZHJhaW5zIG9yIGRyYWluYWdlIGtpdHMjNDIuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjcuMTUuMDAjS3ltb2dyYXBocyM0Mi4xMC4yNy4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yNy4xNi4wMCNCbG9vZCBzYW1wbGluZyBlcXVpcG1lbnQjNDIuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjguMDAuMDAjRGVudGFsIGluc3RydW1lbnRzIGFuZCBhcHBsaWFuY2VzIzQyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjI4LjAxLjAwI0RlbnRhbCBtaXhpbmcgc2xhYnMjNDIuMTAuMjguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjguMDIuMDAjQmFuZHMgZm9yIGRlbnRhbCBtYXRyaXgjNDIuMTAuMjguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjguMDMuMDAjRGVudGFsIHJldGFpbmVycyM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4wNC4wMCNEZW50YWwgaGFuZHBpZWNlcyM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4wNS4wMCNEZW50YWwgY3J5b3N1cmdpY2FsIGluc3RydW1lbnRhdGlvbiM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4wNi4wMCNEZW50YWwgZm9ybWVycyM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4wNy4wMCNQZXJpb2RvbnRpdW0gY29udHJvbCBpbnN0cnVtZW50cyBvciBwZXJpb3Rlc3QjNDIuMTAuMjguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjguMDguMDAjRGVudGFsIHRyYXlzIzQyLjEwLjI4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI4LjA5LjAwI0RlbnRhbCBwcm9iZXMjNDIuMTAuMjguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjguMTAuMDAjRGVudGFsIHNjYWxlcyM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4xMS4wMCNEZW50YWwgc3BhdHVsYXMjNDIuMTAuMjguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjguMTIuMDAjRGVudGFsIGVsZXZhdG9ycyM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4xMy4wMCNEZW50YWwgZXhjYXZhdG9ycyM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4xNC4wMCNEZW50YWwgZmluZ2VyIHByb3RlY3RvcnMjNDIuMTAuMjguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjguMTUuMDAjRGVudGFsIHR3ZWV6ZXJzIzQyLjEwLjI4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI4LjE2LjAwI0RlbnRhbCBzY2lzc29ycyM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4xNy4wMCNEZW50YWwgZm9yY2VwcyM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4xOC4wMCNEZW50YWwgbWlycm9ycyM0Mi4xMC4yOC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOC4xOS4wMCNPcnRob2RvbnRpYyBhcHBsaWFuY2VzIzQyLjEwLjI4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI4LjIwLjAwI0RlbnRhbCBpbXByZXNzaW9uIHRyYXlzIzQyLjEwLjI4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI4LjIxLjAwI0RlbnRhbCBzeXJpbmdlcyBvciBuZWVkbGVzIzQyLjEwLjI4LjAwLjAwCi11bnNwc2M3IzQyLjEwLjI4LjIyLjAwI0RlbnRhbCBkcmlsbHMjNDIuMTAuMjguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjguMjMuMDAjRW5kb2RvbnRpY3MgYWNjZXNzb3JpZXMjNDIuMTAuMjguMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjkuMDAuMDAjQ2FyZGlvbG9neSBlcXVpcG1lbnQgYW5kIHN1cHBsaWVzIzQyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjI5LjAxLjAwI0hlYXJ0IHZhbHZlcyM0Mi4xMC4yOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOS4wMi4wMCNIZWFydCBjYXRoZXRlcnMjNDIuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjkuMDMuMDAjRGVmcmliaWxhdG9ycyM0Mi4xMC4yOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4yOS4wNC4wMCNBb3J0aWMgYmFsbG9vbiBlcXVpcG1lbnQjNDIuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMjkuMDUuMDAjUGFjZW1ha2VycyM0Mi4xMC4yOS4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4wMC4wMCNNZWRpY2FsIGNvbnN1bWFibGVzIzQyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjAxLjAwI0Jsb29kIG9yIGludHJhdmVub3VzIChJVikgYm90dGxlcyBvciBiYWdzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjAyLjAwI1Rvbmd1ZSBkZXByZXNzb3JzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjAzLjAwI1N1dHVyZSBuZWVkbGVzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjA0LjAwI0Jpb3BzeSBuZWVkbGVzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjA1LjAwI0Jpb3BzeSBjYXBzdWxlcyBvciBwdW5jaGVzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjA2LjAwI0Rpc3NlY3RpbmcgbmVlZGxlcyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4wNy4wMCNBY3VwdW5jdHVyZSBuZWVkbGVzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjA4LjAwI01lZGljYWwgZGlzcG9zYWwgY29udGFpbmVycyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4wOS4wMCNIYWVtYXRvY3JpdCB0dWJlcyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4xMC4wMCNTd2FicyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4xMS4wMCNCbG9vZCB0cmFuc2Z1c2lvbiBuZWVkbGVzIG9yIGNhbm51bGFlIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjEyLjAwI1RyYW5zZmVyIHN3YWJzIG9yIGFwcGxpY2F0b3JzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjEzLjAwI1VyaW5lIGJhZ3MjNDIuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMzAuMTQuMDAjU3BlY2ltZW4gY29udGFpbmVycyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4xNS4wMCNQbGFzdGVyIG9mIHBhcmlzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjE2LjAwI1N0ZXJpbGUgc3RyaXBzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjE3LjAwI0dhdXplIGNsb3RoIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjE4LjAwI0NvdHRvbiB3b29sIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjE5LjAwI1N0ZXJpbGUgc3VyZ2ljYWwgY29tcHJlc3NlcyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4yMC4wMCNCYW5kYWdlcyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4yMS4wMCNGaXJzdCBhaWQga2l0cyBvciBraXQgcmVmaWxscyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4yMi4wMCNIeXBvZGVybWljIHN5cmluZ2VzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjIzLjAwI0NvdHRvbiBzd2FicyBvbiBzdGlja3MjNDIuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMzAuMjQuMDAjSW5mdXNpb24gc2V0cyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4yNS4wMCNOYXNvZ2FzdHJpYyB0dWJlcyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4yNi4wMCNEZXN0cnVjdGlvbiBjbGlwcyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4yNy4wMCNEcmVzc2luZ3MjNDIuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMzAuMjguMDAjSW1wbGFudGFibGUgZHJ1ZyBkZWxpdmVyeSBzeXN0ZW1zIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjI5LjAwI0F1dG9tYXRpYyBtYXNzIHZhY2NpbmF0b3JzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjMwLjAwI1BpcGV0dGluZyBzeXJpbmdlcyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4zMS4wMCNTY2FscCB2ZWluIG5lZWRsZXMgb3Igc3RvcGNvY2tzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjMyLjAwI0h5cG9kZXJtaWMgbmVlZGxlcyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4zMy4wMCNNZWRpY2FsIGpldCBpbmplY3RvcnMjNDIuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMzAuMzQuMDAjTGFuY2V0cyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4zNS4wMCNDYXRoZXRlciBmb3IgaW5mdXNpb24jNDIuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMzAuMzYuMDAjSW50YXZlbm91cyAoSVYpIGVxdWlwbWVudCB0dWJlcyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4zNy4wMCNFeWV3YXNoIHNvbHV0aW9ucyM0Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM0Mi4xMC4zMC4zOC4wMCNFeGFtaW5hdGlvbiBnbG92ZXMjNDIuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDIuMTAuMzAuMzkuMDAjUGF0aG9nZW4gY2xlYW51cCBraXRzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjQwLjAwI0RpYWJldGljIHN5cmluZ2VzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjQxLjAwI0RpYWJldGljIHBlbiBuZWVkbGVzIzQyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzQyLjEwLjMwLjQyLjAwI0xhbmNldCBkZXZpY2UjNDIuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMDAuMDAuMDAjQXNzaXN0aXZlIGFuZCBjb3JyZWN0aXZlIGRldmljZXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4wMC4wMCNQcm9zdGhlc2VzIGFuZCBwYXJ0cyB0aGVyZW9mIzQyLjExLjAwLjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjAxLjAwI0Fua2xlIG9yIGZvb3Qgb3J0aG9zZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMDIuMDAjQ2VydmljYWwgb3J0aG9zZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMDMuMDAjQ2VydmljbyB0aG9yYXRpYyBvcnRob3NlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4wNC4wMCNDZXJ2aWNvIHRob3JhdGljIGx1bWJvIHNhY3JhbCBvcnRob3NlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4wNS4wMCNFbGJvdyBvcnRob3NlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4wNi4wMCNFbGJvdyB3cmlzdCBvcnRob3NlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4wNy4wMCNGaW5nZXIgb3J0aG9zZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMDguMDAjRm9vdCBvcnRob3NlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4wOS4wMCNIYW5kIG9ydGhvc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjEwLjAwI0hpcCBvcnRob3NlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4xMS4wMCNIaXAga25lZSBhbmtsZSBmb290IG9ydGhvc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjEyLjAwI0hpcCBvciBrbmVlIG9yIGFua2xlIG9ydGhvc2VzIGpvaW50cyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4xMy4wMCNTaG91bGRlciBvciBlbGJvdyBvciB3cmlzdCBvcnRob3NlcyBqb2ludHMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMTQuMDAjS25lZSBvcnRob3NlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4xNS4wMCNLbmVlIGFua2xlIGZvb3Qgb3J0aG9zZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMTYuMDAjTHVtYm8gb3Igc2FjcmFsIG9ydGhvc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjE3LjAwI1NhY3JvIGlsaWFjIG9ydGhvc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjE4LjAwI1Nob3VsZGVyIG9yIGVsYm93IG9yIHdyaXN0IG9yIGhhbmQgb3J0aG9zZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMTkuMDAjVGhvcmFjbyBvciBsdW1ibyBvciBzYWNyYWwgb3J0aG9zZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMjAuMDAjV3Jpc3Qgb3J0aG9zZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMjEuMDAjV3Jpc3Qgb3IgaGFuZCBvcnRob3NlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4yMi4wMCNXcmlzdCBvciBoYW5kIG9yIGZpbmdlciBvcnRob3NlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4yMy4wMCNBbmtsZSBkaXNhcnRpY3VsYXRpb24gcHJvc3RoZXNlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4yNC4wMCNBdXJhbCBwcm9zdGhlc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjI1LjAwI0Nvc21ldGljIG9yIHNraW4gY292ZXJpbmcgcHJvc3RoZXNlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4yNi4wMCNFbGJvdyBkaXNhcnRpY3VsYXRpb24gcHJvc3RoZXNlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4yNy4wMCNIaXAgZGlzYXJ0aWN1bGF0aW9uIHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMjguMDAjSG9vayBvciBmdW5jdGlvbmFsIHRvb2wgcHJvc3RoZXNlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4yOS4wMCNLbmVlIG9yIGhpcCBqb2ludCBwcm9zdGhlc2VzIG9yIHRvcnF1ZSByZWR1Y2VycyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4zMC4wMCNXcmlzdCBvciBlbGJvdyBqb2ludCBwcm9zdGhlc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjMxLjAwI0tuZWUgZGlzYXJ0aWN1bGF0aW9uIHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMzIuMDAjTWFtbWFyeSBwcm9zdGhlc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjMzLjAwI05hc2FsIHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMzQuMDAjT2N1bGFyIHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMzUuMDAjQmFjayBmaWxsZXIgcHJvc3RoZXNlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4zNi4wMCNQYWxhdGUgcHJvc3RoZXNlcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS4zNy4wMCNQYXJ0aWFsIGZvb3QgaW5jbHVkaW5nIHRvZSBwcm9zdGhlc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjM4LjAwI1BhcnRpYWwgaGFuZCBpbmNsdWRpbmcgZmluZ2VyIHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuMzkuMDAjU2hvdWxkZXIgZGlzYXJ0aWN1bGF0aW9uIHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuNDAuMDAjU29ja2V0IG9yIGFsaWdubWVudCB1bml0IHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuNDEuMDAjVGVtcG9yYXJ5IHByb3N0aGVzZXMgZm9yIGVhcmx5IG1vYmlsaXphdGlvbiBvZiBsb3dlciBsaW1iIGFtcHV0ZWVzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjQyLjAwI1RyYW5zZmVtb3JhbCBwcm9zdGhlc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjQzLjAwI1RyYW5zaHVtZXJhbCBwcm9zdGhlc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE1LjQ0LjAwI1RyYW5zcmFkaWFsIHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuNDUuMDAjVHJhbnN0aWJpYWwgaW5jbHVkaW5nIGFua2xlIG9yIGZvb3QgZGV2aWNlIHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuNDYuMDAjV3Jpc3QgZGlzYXJ0aWN1bGF0aW9uIHByb3N0aGVzZXMjNDIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTUuNDcuMDAjUHJvc3RoZXRpYyBoYW5kcyM0Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNS40OC4wMCNWYXNjdWxhciBwcm9zdGhlc2VzIzQyLjExLjE1LjAwLjAwCi11bnNwc2M3IzQyLjExLjE2LjAwLjAwI0NvbW11bmljYXRpb24gYW5kIGVkdWNhdGlvbmFsIG1hdGVyaWFsIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTYuMDEuMDAjQnJhaWxsZSB3cml0aW5nIHBhcGVyIG9yIHBsYXN0aWMjNDIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTYuMDIuMDAjU3dpdGNoYm9hcmRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTYuMDMuMDAjQ2hhcmFjdGVyIHJlYWRpbmcgbWFjaGluZXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNi4wNC4wMCNTeW50aGV0aWMgc3BlZWNoIGRldmljZXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNi4wNS4wMCNUYWN0aWxlIGRpc3BsYXlzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTYuMDYuMDAjTGV0dGVyIG9yIHN5bWJvbCBib2FyZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNi4wNy4wMCNEaWFsb2d1ZSB1bml0cyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE2LjAwLjAwCi11bnNwc2M3IzQyLjExLjE2LjA4LjAwI1ZvaWNlIGdlbmVyYXRvcnMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNi4wOS4wMCNWb2ljZSBhbXBsaWZpZXJzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTYuMTAuMDAjSGVhcmluZyBhaWRzIzQyLjExLjE2LjAwLjAwCi11bnNwc2M3IzQyLjExLjE2LjExLjAwI1dyaXRpbmcgZnJhbWVzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTYuMTIuMDAjUmFpbiBpbmRpY2F0b3JzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTYuMTMuMDAjTGlnaHQgaW5kaWNhdG9ycyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE2LjAwLjAwCi11bnNwc2M3IzQyLjExLjE2LjE0LjAwI1NvdW5kIGluZGljYXRvcnMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNi4xNS4wMCNTcGVlY2ggdHJhaW5pbmcgYWlkcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE2LjAwLjAwCi11bnNwc2M3IzQyLjExLjE2LjE2LjAwI0xhbmd1YWdlIHRyYWluaW5nIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNi4xNy4wMCNCcmFpbGxlIGVxdWlwbWVudCM0Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNi4xOC4wMCNCb29rIG9yIG1hbnVzY3JpcHQgaG9sZGVycyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE2LjAwLjAwCi11bnNwc2M3IzQyLjExLjE2LjE5LjAwI1BhZ2UgdHVybmVycyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE2LjAwLjAwCi11bnNwc2M3IzQyLjExLjE2LjIwLjAwI1NpZ25hdHVyZSBndWlkZXMgb3Igc3RhbXBzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTYuMjEuMDAjRXJnb25vbWljYWxseSBkZXNpZ25lZCBzdGF0aW9uZXJ5IGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNy4wMC4wMCNGdXJuaXR1cmUgYW5kIGFjY2Vzc29yaWVzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTcuMDEuMDAjUHJlc3N1cmUgc29yZSBwcmV2ZW50aW9uIGZ1cm5pdHVyZSM0Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNy4wMi4wMCNQcmVzc3VyZSBzb3JlIHByZXZlbnRpb24gbWF0dHJlc3NlcyBvciBjb3ZlcmluZ3MjNDIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTcuMDMuMDAjQmFja3BhZHMgb3IgYmFja3Jlc3RzIG9yIHNpbWlsYXIgYWRhcHRhdGlvbnMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNy4wNC4wMCNBcm0gcmVzdHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNy4wNS4wMCNCZWQgZXh0ZW5zaW9ucyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE3LjAwLjAwCi11bnNwc2M3IzQyLjExLjE3LjA2LjAwI0JlZCBsaWZ0cyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE3LjAwLjAwCi11bnNwc2M3IzQyLjExLjE3LjA3LjAwI0JlZCBzaG9ydGVuaW5nIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNy4wOC4wMCNFcmdvbm9taWNhbGwgZGVzaWduZWQgYmVkcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE3LjAwLjAwCi11bnNwc2M3IzQyLjExLjE3LjA5LjAwI0JsYW5rZXQgc3VwcG9ydHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xNy4xMC4wMCNNZWNoYW5pemVkIGNoYWlycyB0byBhc3Npc3Qgd2l0aCBzaXR0aW5nIG9yIHN0YW5kaW5nIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTcuMTEuMDAjQ294aXQgb3IgYXJ0aHJvZGVzaXMgY2hhaXJzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTcuMTIuMDAjTGVnIGV4dGVuZGVycyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE3LjAwLjAwCi11bnNwc2M3IzQyLjExLjE3LjEzLjAwI0xlZyBzdXBwb3J0cyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE3LjAwLjAwCi11bnNwc2M3IzQyLjExLjE3LjE0LjAwI01vZHVsYXIgb3Igc3BlY2lhbCBzaXR0aW5nIGZ1cm5pdHVyZSBzeXN0ZW1zIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTcuMTUuMDAjSGVpZ2h0IGFkanVzdGFibGUgcGxpbnRocyBvciBicmFja2V0cyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE3LjAwLjAwCi11bnNwc2M3IzQyLjExLjE3LjE2LjAwI0VyZ29ub21pY2FsbHkgZGVzaWduZWQgdGFibGVzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTguMDAuMDAjUGVyc29uYWwgY2FyZSBkZXZpY2VzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTguMDEuMDAjQWlkcyB0byBhc3Npc3QgaW4gZHJlc3Npbmcgb25lcyBzZWxmIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTguMDIuMDAjQWlkcyBmb3Igd2FzaGluZyBvbmVzIHNlbGYgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOC4wMy4wMCNBaWRzIGZvciBkcnlpbmcgb25lcyBzZWxmIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTguMDQuMDAjQmF0aGluZyBzdHJldGNoZXJzIG9yIHNob3dlciB0YWJsZXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOC4wNS4wMCNEaWFwZXIgY2hhbmdpbmcgdGFibGVzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTguMDYuMDAjQmVkcGFucyBvciBjb21tb2RlIGNoYWlycyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE4LjAwLjAwCi11bnNwc2M3IzQyLjExLjE4LjA3LjAwI0J1dHRvbmluZyBvciBmYXN0ZW5pbmcgZGV2aWNlcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE4LjAwLjAwCi11bnNwc2M3IzQyLjExLjE4LjA4LjAwI0V4dGVuZGVkIGhhbmRsZSBjb21icyBvciBicnVzaGVzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTguMDkuMDAjVG9pbGV0IGF0dGFjaGVkIGRvdWNoZXMgb3IgYWlyIGRyeWVycyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE4LjAwLjAwCi11bnNwc2M3IzQyLjExLjE4LjEwLjAwI1RvaWxldCBzZWF0cyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE4LjAwLjAwCi11bnNwc2M3IzQyLjExLjE4LjExLjAwI0hhbmQgZ3JpcCB0b290aGJydXNoZXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOC4xMi4wMCNCb2R5IHdvcm4gdXJpbmUgYWJzb3JiaW5nIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOC4xMy4wMCNVcmluZSBjb2xsZWN0aW9uIHN5c3RlbXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOC4xNC4wMCNJbmNvbnRpbmVuY2UgYWxhcm1zIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTguMTUuMDAjT3N0b215IGJhZ3Mgb3IgYWNjZXNzb3JpZXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4wMC4wMCNQcm90ZWN0aW9uIGFuZCBtb2JpbGl0eSBkZXZpY2VzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMDEuMDAjQ3J1dGNoZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMDIuMDAjVHJpcG9kcyBvciBxdWFkcm9wb2RzIzQyLjExLjE5LjAwLjAwCi11bnNwc2M3IzQyLjExLjE5LjAzLjAwI1dhbGtpbmcgc3RpY2tzIGFjY2Vzc29yaWVzIG9yIHBhcnRzIHRoZXJlb2YjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMDQuMDAjUm9sbGF0b3JzIzQyLjExLjE5LjAwLjAwCi11bnNwc2M3IzQyLjExLjE5LjA1LjAwI1dhbGtlcnMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMDYuMDAjV2hlZWxjaGFpcnMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMDcuMDAjV2hlZWxjaGFpciBhY2Nlc3NvcmllcyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4wOC4wMCNTdXBwb3J0IHJhaWxzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMDkuMDAjUm9wZSBsYWRkZXJzIG9yIGxpZnRpbmcgYmVsdHMgb3IgaGFybmVzc2VzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMTAuMDAjTGlmdGluZyBvciB0dXJuaW5nIGN1c2hpb25zIGNhcnBldHMgb3Igc2hlZXRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMTEuMDAjSG9pc3RzIG9yIHRyb2xsZXlzIGZvciBwZW9wbGUgd2l0aCBkaXNhYml0aWVzIzQyLjExLjE5LjAwLjAwCi11bnNwc2M3IzQyLjExLjE5LjEyLjAwI1doZWVsY2hhaXIgcmFtcHMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMTMuMDAjV2hlZWxjaGFpciBsaWZ0aW5nIHBsYXRmb3JtcyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4xNC4wMCNOYXZpZ2F0aW9uIG9yIG9yaWVudGF0aW9uIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4xNS4wMCNDaGFpciBsaWZ0cyBvciBjaGFpciB0cmFuc3BvcnRlcnMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4xNi4wMCNXYXJuaW5nIG9yIGFsYXJtIGRldmljZXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4xNy4wMCNBaXJ3YXkgcHJvdGVjdGlvbiBhaWRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMTguMDAjRWFyIG9yIGhlYXJpbmcgcHJvdGVjdGlvbiBhaWRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMTkuMDAjRmFjZSBvciBleWUgcHJvdGVjdGlvbiBhaWRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMjAuMDAjSGFuZCBvciBhcm0gb3IgZWxib3cgcHJvdGVjdGlvbiBhaWRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMjEuMDAjSGVhZCBwcm90ZWN0aW9uIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4yMi4wMCNMb3dlciBleHRyZW1pdHkgcHJvdGVjdGlvbiBhaWRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMjMuMDAjQmF0aHR1YiBsZW5ndGggb3Igd2lkdGggcmVkdWN0aW9uIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4yNC4wMCNUcnVuayBvciB3aG9sZSBib2R5IHByb3RlY3Rpb24gYWlkcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE5LjAwLjAwCi11bnNwc2M3IzQyLjExLjE5LjI1LjAwI0JvZHkgc3VwcG9ydCB1bml0cyBmb3IgaG9pc3RzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMjYuMDAjRG9vciB3YXJuZXJzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMTkuMjcuMDAjRmxvYXRhdGlvbiBvciBzd21taW5nIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4yOC4wMCNSZWxpZWYgbWFwcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE5LjAwLjAwCi11bnNwc2M3IzQyLjExLjE5LjI5LjAwI05vbiBjb3NtZXRpYyBza2luIGNsZWFuaW5nIG9yIHByb3RlY3RpdmUgcHJvZHVjdHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4zMC4wMCNTdGF0aW9uYXJ5IGhvaXN0cyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE5LjAwLjAwCi11bnNwc2M3IzQyLjExLjE5LjMxLjAwI1N0b21hIHNoaWVsZHMgb3IgcHJvdGVjdG9ycyM0Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4xOS4zMi4wMCNUYWN0aWxlIHN0aWNrcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjE5LjAwLjAwCi11bnNwc2M3IzQyLjExLjE5LjMzLjAwI1RvaWxldCBhcm0gb3IgYmFja3Jlc3RzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjAuMDAuMDAjUmVjcmVhdGlvbmFsIGFuZCB0cmFpbmluZyBhaWRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjAuMDEuMDAjQ2FtcGluZyBlcXVpcG1lbnQgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMC4wMi4wMCNUaWx0aW5nIHRhYmxlcyBmb3IgYmFsYW5jZSB0cmFpbmluZyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjIwLjAwLjAwCi11bnNwc2M3IzQyLjExLjIwLjAzLjAwI0Jpb2ZlZWRiYWNrIGRldmljZXMgZm9yIG1vdmVtZW50IHN0cmVuZ3RoIG9yIGJhbGFuY2UgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMC4wNC4wMCNTcG9ydHMgZXhlcmNpc2UgYWlkcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjIwLjAwLjAwCi11bnNwc2M3IzQyLjExLjIwLjA1LjAwI0Zpc2hpbmcgb3IgaHVudGluZyBhaWRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjAuMDYuMDAjUGxheWluZyBvciB0cmFpbmluZyBiYWxscyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjIwLjAwLjAwCi11bnNwc2M3IzQyLjExLjIwLjA3LjAwI0NoZXNzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjAuMDguMDAjUGxheWluZyBjYXJkcyBvciBob2xkZXJzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjAuMDkuMDAjR2FyZGVuaW5nIHRvb2xzIG9yIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMC4xMC4wMCNIYW5kaWNyYWZ0IHRvb2xzIG1hdGVyaWFscyBvciBlcXVpcG1lbnQgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMC4xMS4wMCNQaG90b2dyYXBoaWMgZXF1aXBtZW50IG9yIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMC4xMi4wMCNDYXJhdmFubmluZyBlcXVpcG1lbnQgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMC4xMy4wMCNWaWJyYXRpbmcgY2hhaXJzIGZvciB0cmFpbmluZyBkZWFmIHBlb3BsZSM0Mi4xMS4yMC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4wMC4wMCNTcGVjaWFsaXplZCBhaWRzIGZvciBob3VzZWtlZXBpbmcgYW5kIGhhbmRsaW5nIGdvb2RzIGFuZCBtZWFzdXJpbmcgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4wMC4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4wMS4wMCNXZWlnaGluZyBvciBtZWFzdXJpbmcgYWlkcyBvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMDIuMDAjQ3V0dGluZyBvciBjaG9wcGluZyBvciBkaXZpZGluZyBhaWRzIG9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4wMy4wMCNDbGVhbmluZyBvciBwZWVsaW5nIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4wNC4wMCNCYWtpbmcgb3IgY29va2luZyBvciBmcnlpbmcgYWlkcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjIxLjAwLjAwCi11bnNwc2M3IzQyLjExLjIxLjA1LjAwI0Zvb2Qgb3IgZHJpbmsgc2VydmljZSBhaWRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMDYuMDAjRm9vZCBzdG9wcGVycyBvciBmdW5uZWxzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMDcuMDAjVGFibGV3YXJlIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMDguMDAjUHVzaGVyIGVkZ2VzIG9yIHBsYXRlIGJ1ZmZlcnMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4wOS4wMCNGZWVkaW5nIGFwcGFyYXR1cyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjIxLjAwLjAwCi11bnNwc2M3IzQyLjExLjIxLjEwLjAwI0ZlZWRpbmcgcHJvYmVzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMTEuMDAjU2hvZSBjbGVhbmluZyBhcHBhcmF0dXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4xMi4wMCNTZXdpbmcgb3Iga25pdHRpbmcgb3IgY3JvY2hldGluZyBvciBkYXJuaW5nIGFpZHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4xMy4wMCNCb3R0bGUgb3IgY2FuIG9yIGNvbnRhaW5lciBvcGVuZXJzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMTQuMDAjVHViZSBzcXVlZXppbmcga2V5cyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjIxLjAwLjAwCi11bnNwc2M3IzQyLjExLjIxLjE1LjAwI0dyYXNwaW5nIGFpZHMgdG8gYXNzaXN0IG9yIHJlcGxhY2UgaGFuZCBvciBmaW5nZXIgZnVuY3Rpb24gZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4xNi4wMCNHcmlwIGFkYXB0ZXJzIG9yIGF0dGFjaG1lbnRzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMTcuMDAjQm9keSB3b3JuIGhvbGRlcnMgdG8gYXNzaXN0IGhhbmQgb3IgZmluZ2VyIGZ1bmN0aW9uIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMTguMDAjU3RhbmRzIHRvIGFzc2lzdCBoYW5kIG9yIGZpbmdlciBmdW5jdGlvbiBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjIxLjAwLjAwCi11bnNwc2M3IzQyLjExLjIxLjE5LjAwI09wZXJhdGluZyBzdGlja3Mgc3VjaCBhcyBoZWFkIG9yIGNoaW4gb3IgbW91dGggc3RpY2tzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMjAuMDAjRXh0ZW5kZXJzIHdpdGhvdXQgZ3JpcCBmdW5jdGlvbiBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjIxLjAwLjAwCi11bnNwc2M3IzQyLjExLjIxLjIxLjAwI0ZpeGVkIHBvc2l0aW9uaW5nIHN5c3RlbXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4yMi4wMCNCYWxhbmNlcyBvciBlcXVpcG1lbnQgZm9yIGhvaXN0aW5nIG9yIGJhbGFuY2luZyBvYmplY3RzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMjMuMDAjTWFuaXB1bGF0b3JzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMjQuMDAjUm9ib3RzIHRvIGFzc2lzdCBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMjUuMDAjSW5kaWNhdG9ycyBzdWNoIGFzIHNpZ25hbCBsaWdodHMgb3IgYnV6emVycyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzQyLjExLjIxLjAwLjAwCi11bnNwc2M3IzQyLjExLjIxLjI2LjAwI1BvaW50aW5nIGxhbXBzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjNDIuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNDIuMTEuMjEuMjcuMDAjTWVhc3VyaW5nIGFpZHMgb3IgdG9vbHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4yOC4wMCNPYmplY3QgcG9zaXRpb25pbmcgbGlmdGluZyBvciB0aWx0aW5nIHN5c3RlbXMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMS4yMS4yOS4wMCNNYW51YWwgZXh0ZW5kZWQgcmVhY2ggZ3JpcHBpbmcgdG9uZ3MgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM0Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM0Mi4xMi4wMC4wMC4wMCNWZXRlcmluYXJ5IGVxdWlwbWVudCBhbmQgc3VwcGxpZXMjNDIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTIuMTUuMDAuMDAjVmV0ZXJpbmFyeSBlcXVpcG1lbnQjNDIuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNDIuMTIuMTUuMDEuMDAjVmV0ZXJpbmFyeSBibG9vZCBwcmVzc3VyZSB0ZXN0ZXJzIzQyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzQyLjEyLjE1LjAyLjAwI1ZldGVyaW5hcnkga3ltb2dyYXBoIHRlc3RlciM0Mi4xMi4xNS4wMC4wMAotdW5zcHNjNyM0Mi4xMi4xNS4wMy4wMCNWZXRlcmluYXJ5IHB5cm9nZW5pYyB0ZXN0ZXIjNDIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTIuMTUuMDQuMDAjVmV0ZXJpbmFyeSBzdGVyZW90b3hpYyBlcXVpcG1lbnQjNDIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTIuMTUuMDUuMDAjVmV0ZXJpbmFyeSBlbGVjdHJvY2FyZGlvZ3JhcGggKEVDRykjNDIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDIuMTIuMTYuMDAuMDAjVmV0ZXJpbmFyeSBwcm9kdWN0cyM0Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM0Mi4xMi4xNi4wMS4wMCNHYXN0cm9pbnRlc3RpbmFsIHZldGVyaW5hcnkgcHJvZHVjdHMjNDIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTIuMTYuMDIuMDAjQmxvb2Qgb3IgYmxvb2QgZm9ybWluZyB2ZXRlcmluYXJ5IHByb2R1Y3RzIzQyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzQyLjEyLjE2LjAzLjAwI1Jlc3BpcmF0b3J5IHN5c3RlbSB2ZXRlcmluYXJ5IHByb2R1Y3RzIzQyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzQyLjEyLjE2LjA0LjAwI011c2N1bG8gc2tlbGV0YWwgb3IgbmVydm91cyBzeXN0ZW0gdmV0ZXJpbmFyeSBwcm9kdWN0cyM0Mi4xMi4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMi4xNi4wNS4wMCNDYXJkaW92YXNjdWxhciBzeXN0ZW0gdmV0ZXJpbmFyeSBwcm9kdWN0cyM0Mi4xMi4xNi4wMC4wMAotdW5zcHNjNyM0Mi4xMi4xNi4wNi4wMCNEZXJtYXRvbG9naWNhbHMgb3IgYW50aXByb3Rvem9hIHZldGVyaW5hcnkgcHJvZHVjdHMjNDIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDIuMTIuMTYuMDcuMDAjR2VuaXRvIHVyaW5hcnkgc3lzdGVtIHNleCBvciBob3Jtb25lIHZldGVyaW5hcnkgcHJvZHVjdHMjNDIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDMuMDAuMDAuMDAuMDAjQ29tbXVuaWNhdGlvbnMgYW5kIENvbXB1dGVyIEVxdWlwbWVudCBhbmQgUGVyaXBoZXJhbHMgYW5kIENvbXBvbmVudHMgYW5kIFN1cHBsaWVzIzQzLjAwLjAwLjAwLjAwCi11bnNwc2M3IzQzLjE2LjAwLjAwLjAwI1NvZnR3YXJlIzQzLjAwLjAwLjAwLjAwCi11bnNwc2M3IzQzLjE2LjE1LjAwLjAwI0RhdGFiYXNlIHN5c3RlbXMjNDMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTUuMDEuMDAjRGF0YWJhc2Ugc29mdHdhcmUjNDMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTYuMDAuMDAjT3BlcmF0aW5nIHN5c3RlbXMjNDMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTYuMDEuMDAjTWFpbmZyYW1lIG9wZXJhdGluZyBzeXN0ZW0gc29mdHdhcmUjNDMuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTYuMDIuMDAjUGVyc29uYWwgY29tcHV0ZXIgKFBDKSBvcGVyYXRpbmcgc3lzdGVtIHNvZnR3YXJlIzQzLjE2LjE2LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE2LjAzLjAwI09wZW4gc3lzdGVtcyBvcGVyYXRpbmcgc3lzdGVtcyM0My4xNi4xNi4wMC4wMAotdW5zcHNjNyM0My4xNi4xNi4wNC4wMCNDbHVzdGVyaW5nIHNvZnR3YXJlIzQzLjE2LjE2LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE3LjAwLjAwI0J1c2luZXNzIHRyYW5zYWN0aW9uIGFuZCBwZXJzb25hbCBidXNpbmVzcyBzb2Z0d2FyZSM0My4xNi4wMC4wMC4wMAotdW5zcHNjNyM0My4xNi4xNy4wMS4wMCNJbnZlc3RtZW50IG1hbmFnZW1lbnQgc29mdHdhcmUjNDMuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTcuMDIuMDAjVGF4IHByZXBhcmF0aW9uIHNvZnR3YXJlIzQzLjE2LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE3LjAzLjAwI0ZhY2lsaXRpZXMgbWFuYWdlbWVudCBzb2Z0d2FyZSM0My4xNi4xNy4wMC4wMAotdW5zcHNjNyM0My4xNi4xNy4wNC4wMCNTb2Z0d2FyZSBzdWl0ZXMjNDMuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTcuMDUuMDAjSW52ZW50b3J5IG1hbmFnZW1lbnQgc29mdHdhcmUjNDMuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTcuMDYuMDAjRmluYW5jaWFsIGFuYWx5c2lzIHNvZnR3YXJlIzQzLjE2LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE3LjA3LjAwI0FjY291bnRpbmcgc29mdHdhcmUjNDMuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTcuMDguMDAjVGltZSBhY2NvdW50aW5nIG9yIGh1bWFuIHJlc291cmNlcyBzb2Z0d2FyZSM0My4xNi4xNy4wMC4wMAotdW5zcHNjNyM0My4xNi4xNy4wOS4wMCNBbmFseXRpY2FsIG9yIHNjaWVudGlmaWMgc29mdHdhcmUjNDMuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTcuMTAuMDAjTWF0aGVtYXRpY2FsIG9yIGZvcmVjYXN0aW5nIHNvZnR3YXJlIzQzLjE2LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE3LjExLjAwI0F1Y3Rpb24gc29mdHdhcmUjNDMuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTcuMTIuMDAjU2FsZXMgb3IgbWFya2V0aW5nIHNvZnR3YXJlIzQzLjE2LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE4LjAwLjAwI0RvY3VtZW50IGNyZWF0aW9uIHNvZnR3YXJlIzQzLjE2LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE2LjE4LjAxLjAwI0RvY3VtZW50IG1hbmFnZW1lbnQgc29mdHdhcmUjNDMuMTYuMTguMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTguMDIuMDAjRWxlY3Ryb25pYyBwdWJsaXNoaW5nIHNvZnR3YXJlIzQzLjE2LjE4LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE4LjAzLjAwI09wdGljYWwgY2hhcmFjdGVyIHJlYWRlciAoT0NSKSBzb2Z0d2FyZSM0My4xNi4xOC4wMC4wMAotdW5zcHNjNyM0My4xNi4xOC4wNC4wMCNWb2ljZSByZWNvZ25pdGlvbiBzb2Z0d2FyZSM0My4xNi4xOC4wMC4wMAotdW5zcHNjNyM0My4xNi4xOC4wNS4wMCNEZXNrdG9wIHB1Ymxpc2hpbmcgc29mdHdhcmUjNDMuMTYuMTguMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTguMDYuMDAjUHJlc2VudGF0aW9uIHNvZnR3YXJlIzQzLjE2LjE4LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE4LjA3LjAwI1dvcmQgcHJvY2Vzc2luZyBzb2Z0d2FyZSM0My4xNi4xOC4wMC4wMAotdW5zcHNjNyM0My4xNi4xOC4wOC4wMCNTY2FubmVyIHNvZnR3YXJlIzQzLjE2LjE4LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE4LjA5LjAwI1NwZWxsIGNoZWNrZXJzIzQzLjE2LjE4LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE5LjAwLjAwI0RyYXdpbmcgYW5kIGltYWdpbmcgc29mdHdhcmUjNDMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTkuMDEuMDAjQ29tcHV0ZXIgYWlkZWQgZGVzaWduIChDQUQpIHNvZnR3YXJlIzQzLjE2LjE5LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE5LjAyLjAwI0dyYXBoaWNzIHNvZnR3YXJlIzQzLjE2LjE5LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE5LjAzLjAwI0VkdWNhdGlvbmFsIHNvZnR3YXJlIzQzLjE2LjE5LjAwLjAwCi11bnNwc2M3IzQzLjE2LjE5LjA0LjAwI0NvbXB1dGVyIGFpZGVkIG1hbnVmYWN0dXJpbmcgKENBTSkgc29mdHdhcmUjNDMuMTYuMTkuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTkuMDUuMDAjQ2hhcnRpbmcgc29mdHdhcmUjNDMuMTYuMTkuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTkuMDYuMDAjRm9ybSBtYWtpbmcgc29mdHdhcmUjNDMuMTYuMTkuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMTkuMDcuMDAjTWFwcGluZyBzb2Z0d2FyZSM0My4xNi4xOS4wMC4wMAotdW5zcHNjNyM0My4xNi4yMC4wMC4wMCNTY2hlZHVsaW5nIGFuZCBwcm9kdWN0aXZpdHkgc29mdHdhcmUjNDMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjAuMDEuMDAjUHJvamVjdCBtYW5hZ2VtZW50IHNvZnR3YXJlIzQzLjE2LjIwLjAwLjAwCi11bnNwc2M3IzQzLjE2LjIwLjAyLjAwI1NjaGVkdWxpbmcgc29mdHdhcmUjNDMuMTYuMjAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjAuMDMuMDAjQ29udGFjdCBtYW5hZ2VtZW50IHNvZnR3YXJlIzQzLjE2LjIwLjAwLjAwCi11bnNwc2M3IzQzLjE2LjIxLjAwLjAwI1NwcmVhZHNoZWV0cyBhbmQgZW5oYW5jZW1lbnQgc29mdHdhcmUjNDMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjEuMDEuMDAjU3ByZWFkc2hlZXQgc29mdHdhcmUjNDMuMTYuMjEuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjIuMDAuMDAjTXVsdGltZWRpYSBzb2Z0d2FyZSM0My4xNi4wMC4wMC4wMAotdW5zcHNjNyM0My4xNi4yMi4wMS4wMCNNdXNpYyBvciBzb3VuZCBlZGl0aW5nIHNvZnR3YXJlIzQzLjE2LjIyLjAwLjAwCi11bnNwc2M3IzQzLjE2LjIzLjAwLjAwI1ByaW50IHNob3Agc29mdHdhcmUjNDMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjMuMDEuMDAjQWRkcmVzcyBib29rIG1ha2luZyBzb2Z0d2FyZSM0My4xNi4yMy4wMC4wMAotdW5zcHNjNyM0My4xNi4yMy4wMi4wMCNMYWJlbCBtYWtpbmcgc29mdHdhcmUjNDMuMTYuMjMuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjQuMDAuMDAjUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGFuZCB0b29scyM0My4xNi4wMC4wMC4wMAotdW5zcHNjNyM0My4xNi4yNC4wMS4wMCNDb21waWxpbmcgc29mdHdhcmVzIzQzLjE2LjI0LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI0LjAyLjAwI0NvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCBzb2Z0d2FyZSM0My4xNi4yNC4wMC4wMAotdW5zcHNjNyM0My4xNi4yNC4wMy4wMCNEZXZlbG9wbWVudCBzb2Z0d2FyZSM0My4xNi4yNC4wMC4wMAotdW5zcHNjNyM0My4xNi4yNC4wNC4wMCNHcmFwaGljYWwgdXNlciBpbnRlcmZhY2UgKEdVSSkgdG9vbHMjNDMuMTYuMjQuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjQuMDUuMDAjUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIzQzLjE2LjI0LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI0LjA2LjAwI1Byb2dyYW0gdGVzdGluZyBzb2Z0d2FyZSM0My4xNi4yNC4wMC4wMAotdW5zcHNjNyM0My4xNi4yNS4wMC4wMCNTb2Z0d2FyZSB1dGlsaXRpZXMjNDMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjUuMDEuMDAjQmFja3VwIG9yIHJlY292ZXJ5IHNvZnR3YXJlIzQzLjE2LjI1LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI1LjAyLjAwI0JhciBjb2Rpbmcgc29mdHdhcmUjNDMuMTYuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjUuMDMuMDAjRmlsZSBzZWN1cml0eSBvciBkYXRhIHNlY3VyaXR5IHNvZnR3YXJlIzQzLjE2LjI1LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI1LjA0LjAwI0ZvcmVpZ24gbGFuZ3VhZ2UgdHJhbnNsYXRpb24gc29mdHdhcmUjNDMuMTYuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjUuMDUuMDAjUHJpbnQgdXRpbGl0eSBzb2Z0d2FyZSM0My4xNi4yNS4wMC4wMAotdW5zcHNjNyM0My4xNi4yNS4wNi4wMCNTdG9yYWdlIG1lZGlhIGxvYWRpbmcgc29mdHdhcmUjNDMuMTYuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjUuMDcuMDAjVmlydXMgcHJvdGVjdGlvbiBzb2Z0d2FyZSM0My4xNi4yNS4wMC4wMAotdW5zcHNjNyM0My4xNi4yNS4wOC4wMCNHZW5lcmFsIHV0aWxpdHkgc29mdHdhcmUjNDMuMTYuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjUuMDkuMDAjQ29tcHJlc3Npb24gdXRpbGl0aWVzIzQzLjE2LjI1LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI1LjEwLjAwI1N5c3RlbSBtYW5hZ2VtZW50IHNvZnR3YXJlIzQzLjE2LjI1LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI1LjExLjAwI1N0b3JhZ2UgbWFuYWdlbWVudCBzb2Z0d2FyZSM0My4xNi4yNS4wMC4wMAotdW5zcHNjNyM0My4xNi4yNS4xMi4wMCNWZXJzaW9uIGNoZWNrZXIgc29mdHdhcmUjNDMuMTYuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjYuMDAuMDAjTmV0d29ya2luZyBzb2Z0d2FyZSM0My4xNi4wMC4wMC4wMAotdW5zcHNjNyM0My4xNi4yNi4wMS4wMCNQbGF0Zm9ybSBpbnRlcmNvbm5lY3Rpdml0eSBzb2Z0d2FyZSM0My4xNi4yNi4wMC4wMAotdW5zcHNjNyM0My4xNi4yNi4wMi4wMCNPcHRpY2FsIGp1a2Vib3ggc2VydmVyIHNvZnR3YXJlIzQzLjE2LjI2LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI2LjAzLjAwI09wZXJhdGluZyBzeXN0ZW0gZW5oYW5jZW1lbnQgc29mdHdhcmUjNDMuMTYuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjYuMDQuMDAjTmV0d29yayBvcGVyYXRpbmcgc3lzdGVtIHNvZnR3YXJlIzQzLjE2LjI2LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI2LjA1LjAwI05ldHdvcmtpbmcgZGV2ZWxvcGVycyBzb2Z0d2FyZSM0My4xNi4yNi4wMC4wMAotdW5zcHNjNyM0My4xNi4yNi4wNi4wMCNOZXR3b3JrIGNvbm5lY3Rpdml0eSB0ZXJtaW5hbCBlbXVsYXRpb24gc29mdHdhcmUjNDMuMTYuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjYuMDcuMDAjTWFpbmZyYW1lIHRyYW5zYWN0aW9uIHByb2Nlc3Npbmcgc29mdHdhcmUjNDMuMTYuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjYuMDguMDAjTGljZW5zZSBtYW5hZ2VtZW50IHNvZnR3YXJlIzQzLjE2LjI2LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI2LjA5LjAwI0dhdGV3YXkgc29mdHdhcmUjNDMuMTYuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjYuMTAuMDAjQ29tcGFjdCBkaXNjIChDRCkgc2VydmVyIHNvZnR3YXJlIzQzLjE2LjI2LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI2LjExLjAwI0FkbWluaXN0cmF0aW9uIHNvZnR3YXJlIzQzLjE2LjI2LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI2LjEyLjAwI1RyYW5zYWN0aW9uIHNlcnZlciBzb2Z0d2FyZSM0My4xNi4yNi4wMC4wMAotdW5zcHNjNyM0My4xNi4yNi4xMy4wMCNTd2l0Y2ggb3Igcm91dGVyIHNvZnR3YXJlIzQzLjE2LjI2LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI2LjE0LjAwI011bHRpcGxleGVyIHNvZnR3YXJlIzQzLjE2LjI2LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI2LjE1LjAwI0NvbW11bmljYXRpb25zIHNlcnZlciBzb2Z0d2FyZSM0My4xNi4yNi4wMC4wMAotdW5zcHNjNyM0My4xNi4yNi4xNi4wMCNCcmlkZ2Ugc29mdHdhcmUjNDMuMTYuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjcuMDAuMDAjQ29tbXVuaWNhdGlvbiBTb2Z0d2FyZSM0My4xNi4wMC4wMC4wMAotdW5zcHNjNyM0My4xNi4yNy4wMS4wMCNEZXNrdG9wIGNvbW11bmljYXRpb25zIHNvZnR3YXJlIzQzLjE2LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI3LjAyLjAwI1NlcnZlciBjb21tdW5pY2F0aW9ucyBzb2Z0d2FyZSM0My4xNi4yNy4wMC4wMAotdW5zcHNjNyM0My4xNi4yNy4wMy4wMCNJbnRlcmFjdGl2ZSB2b2ljZSByZXNwb25zZSBzb2Z0d2FyZSM0My4xNi4yNy4wMC4wMAotdW5zcHNjNyM0My4xNi4yNy4wNC4wMCNNb2RlbSBzb2Z0d2FyZSM0My4xNi4yNy4wMC4wMAotdW5zcHNjNyM0My4xNi4yNy4wNS4wMCNSZW1vdGUgYWNjZXNzIHNvZnR3YXJlIzQzLjE2LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI3LjA2LjAwI1ZpZGVvIGNvbmZlcmVuY2luZyBzb2Z0d2FyZSM0My4xNi4yNy4wMC4wMAotdW5zcHNjNyM0My4xNi4yNy4wNy4wMCNFeGNoYW5nZSBzb2Z0d2FyZSM0My4xNi4yNy4wMC4wMAotdW5zcHNjNyM0My4xNi4yOC4wMC4wMCNJbnRlcm5ldCBhbmQgaW50cmFuZXQgc29mdHdhcmUjNDMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjguMDEuMDAjSW50ZXJuZXQgYnJvd3Npbmcgc29mdHdhcmUjNDMuMTYuMjguMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjguMDIuMDAjV2ViIHNlcnZlciBzb2Z0d2FyZSM0My4xNi4yOC4wMC4wMAotdW5zcHNjNyM0My4xNi4yOS4wMC4wMCNNaXNjZWxsYW5lb3VzIHNvZnR3YXJlIzQzLjE2LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE2LjI5LjAxLjAwI0NvbXB1dGVyIGdhbWUgc29mdHdhcmUjNDMuMTYuMjkuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjkuMDIuMDAjU2NyZWVuIHNhdmVycyM0My4xNi4yOS4wMC4wMAotdW5zcHNjNyM0My4xNi4yOS4wMy4wMCNUcmFpbmluZyBzb2Z0d2FyZSM0My4xNi4yOS4wMC4wMAotdW5zcHNjNyM0My4xNi4yOS4wNC4wMCNFbnRlcnRhaW5tZW50IHNvZnR3YXJlIzQzLjE2LjI5LjAwLjAwCi11bnNwc2M3IzQzLjE2LjI5LjA1LjAwI0ZhbWlseSB0aXRsZXMjNDMuMTYuMjkuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMjkuMDYuMDAjRWR1Y2F0aW9uYWwgc29mdHdhcmUjNDMuMTYuMjkuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMzAuMDAuMDAjSW5kdXN0cnkgc3BlY2lmaWMgc29mdHdhcmUjNDMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMzAuMDEuMDAjUG9pbnQgb2Ygc2FsZSAoUE9TKSBzb2Z0d2FyZSM0My4xNi4zMC4wMC4wMAotdW5zcHNjNyM0My4xNi4zMC4wMi4wMCNGbGlnaHQgY29udHJvbCBzb2Z0d2FyZSM0My4xNi4zMC4wMC4wMAotdW5zcHNjNyM0My4xNi4zMC4wMy4wMCNBdmlhdGlvbiBncm91bmQgc3VwcG9ydCBzb2Z0d2FyZSM0My4xNi4zMC4wMC4wMAotdW5zcHNjNyM0My4xNi4zMC4wNC4wMCNBdmlhdGlvbiB0ZXN0IHNvZnR3YXJlIzQzLjE2LjMwLjAwLjAwCi11bnNwc2M3IzQzLjE2LjMwLjA1LjAwI0luZHVzdHJpYWwgY29udHJvbCBzb2Z0d2FyZSM0My4xNi4zMC4wMC4wMAotdW5zcHNjNyM0My4xNi4zMC4wNi4wMCNMaWJyYXJ5IHNvZnR3YXJlIzQzLjE2LjMwLjAwLjAwCi11bnNwc2M3IzQzLjE2LjMwLjA3LjAwI0NvbXBsaWFuY2Ugc29mdHdhcmUjNDMuMTYuMzAuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMzEuMDAuMDAjRHJpdmVycyBhbmQgc3lzdGVtIHNvZnR3YXJlIzQzLjE2LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE2LjMxLjAxLjAwI0V0aGVybmV0IGRyaXZlcnMjNDMuMTYuMzEuMDAuMDAKLXVuc3BzYzcjNDMuMTYuMzEuMDIuMDAjR3JhcGhpY3MgY2FyZCBkcml2ZXJzIzQzLjE2LjMxLjAwLjAwCi11bnNwc2M3IzQzLjE3LjAwLjAwLjAwI0hhcmR3YXJlIGFuZCBhY2Nlc3NvcmllcyM0My4wMC4wMC4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4wMC4wMCNUZWxlcGhvbnkgZXF1aXBtZW50IzQzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjAxLjAwI0V4Y2hhbmdlIGNvbXBvbmVudHMgKENPREVDKSM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4wMi4wMCNFeGNoYW5nZSBkYXRhIGludGVyZmFjZSBjYXJkcyM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4wMy4wMCNFeGNoYW5nZSBkYXRhY29tIG1vZHVsZXMjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMDQuMDAjUGhvbmUgZXhjaGFuZ2UgaW50ZXJmYWNlcyBvciBjb21wb25lbnRzIzQzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjA1LjAwI0V4Y2hhbmdlIHRydW5rIGludGVyZmFjZSBvciBjYXJkIGNvbXBvbmVudHMjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMDYuMDAjUHJlbWlzZSBicmFuY2ggZXhjaGFuZ2UgKFBCWCkgc3lzdGVtcyM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4wNy4wMCNUZWxlcGhvbmUgc3dpdGNoaW5nIGVxdWlwbWVudCM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4wOC4wMCNTd2l0Y2hib2FyZCBlcXVpcG1lbnQjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMDkuMDAjUHVuY2ggZG93biBibG9ja3MjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMTAuMDAjQW5hbG9nIG9yIGRpZ2l0YWwgdGVsZXBob25lcyM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4xMS4wMCNBbmFsb2cgb3IgZGlnaXRhbCBjZWxsdWxhciB0ZWxlcGhvbmVzIzQzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjEyLjAwI01vYmlsZSB0ZWxlcGhvbmVzIzQzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjEzLjAwI0NvcmRsZXNzIHRlbGVwaG9uZXMjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMTQuMDAjUGF5IHRlbGVwaG9uZXMjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMTUuMDAjQW5zd2VyaW5nIG1hY2hpbmVzIzQzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjE2LjAwI1RlbGVwaG9uZSBoZWFkc2V0cyM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4xNy4wMCNWb2ljZSBtYWlsIHN5c3RlbXMjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMTguMDAjQ2FsbCBtYW5hZ2VtZW50IHN5c3RlbSM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4xOS4wMCNDZWxsdWxhciB0ZWxlcGhvbmUgYWNjZXNzb3JpZXMjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMjAuMDAjVGVsZXBob25lIHJlc3RzIzQzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjIxLjAwI1RlbGVwaG9uZSBhZGFwdGVycyM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4yMi4wMCNUZWxlcGhvbmUgbGluZSBtdWx0aXBsaWVycyM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNS4yMy4wMCNUZWxlcGhvbmUgbGluZSBtb2R1bGFyIGNvdXBsZXJzIzQzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjI0LjAwI1ZpZGVvcGhvbmVzIzQzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjI1LjAwI0RpYWxlcnMjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMjYuMDAjVGVsZXBob25lIGFtcGxpZmllcnMjNDMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTUuMjcuMDAjVGVsZXBob25lIHN0YW5kcyBvciBob2xkZXJzIzQzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjI4LjAwI0ludGVncmF0ZWQgc2VydmljZXMgZGlnaXRhbCBuZXR3b3JrIGV4Y2hhbmdlcyBJU0ROIzQzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE1LjI5LjAwI1RlbGVwaG9uZSBqYWNrcyM0My4xNy4xNS4wMC4wMAotdW5zcHNjNyM0My4xNy4xNi4wMC4wMCNBbnRlbm5hcyM0My4xNy4wMC4wMC4wMAotdW5zcHNjNyM0My4xNy4xNi4wMS4wMCNUcmFuc21pdHRlcnMjNDMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTYuMDIuMDAjUmVjZWl2ZXJzIzQzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE2LjAzLjAwI1R1bmVycyM0My4xNy4xNi4wMC4wMAotdW5zcHNjNyM0My4xNy4xNi4wNC4wMCNTaG9ydCB3YXZlIGVxdWlwbWVudCM0My4xNy4xNi4wMC4wMAotdW5zcHNjNyM0My4xNy4xNi4wNS4wMCNBaXJjcmFmdCBhbnRlbm5hcyM0My4xNy4xNi4wMC4wMAotdW5zcHNjNyM0My4xNy4xNi4wNi4wMCNBdXRvbW90aXZlIGFudGVubmFzIzQzLjE3LjE2LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE2LjA3LjAwI0Jyb2FkY2FzdCBhbnRlbm5hcyM0My4xNy4xNi4wMC4wMAotdW5zcHNjNyM0My4xNy4xNi4wOC4wMCNNaWNyb3dhdmUgYW50ZW5uYXMjNDMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTYuMDkuMDAjVGVsZXZpc2lvbiBhbnRlbm5hcyM0My4xNy4xNi4wMC4wMAotdW5zcHNjNyM0My4xNy4xNi4xMC4wMCNTYXRlbGxpdGUgYW50ZW5uYXMjNDMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTYuMTEuMDAjUmFkaW8gYW50ZW5uYXMjNDMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTYuMTIuMDAjUmFkYXIgYW50ZW5uYXMjNDMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTYuMTMuMDAjQ29tbXVuaWNhdGlvbnMgYW50ZW5uYXMjNDMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTYuMTQuMDAjQ29tbXVuaWNhdGlvbiB0b3dlcnMgb3Igc3VwcG9ydCM0My4xNy4xNi4wMC4wMAotdW5zcHNjNyM0My4xNy4xNy4wMC4wMCNUZWxlY29tbXVuaWNhdGlvbnMgZXF1aXBtZW50IzQzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjE3LjAxLjAwI1dpcmVsZXNzIGJhc2Ugc3RhdGlvbnMjNDMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTcuMDIuMDAjVGVsZWdyYXBoIGVxdWlwbWVudCM0My4xNy4xNy4wMC4wMAotdW5zcHNjNyM0My4xNy4xNy4wMy4wMCNUZWxldHlwZSBlcXVpcG1lbnQjNDMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTcuMDQuMDAjVGVsZWNvbmZlcmVuY2luZyBlcXVpcG1lbnQjNDMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTcuMDUuMDAjU2F0ZWxsaXRlIGNvbW11bmljYXRpb24gZXF1aXBtZW50IzQzLjE3LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE3LjA2LjAwI1BhZ2VycyBvciBiZWVwZXJzIzQzLjE3LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE3LjA3LjAwI0ludGVyY29tbXVuaWNhdGlvbnMgb3IgcGFnaW5nIHN5c3RlbXMjNDMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTcuMDguMDAjUHVibGljIGFkZHJlc3MgZXF1aXBtZW50IzQzLjE3LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE3LjA5LjAwI0VsZWN0cm9uaWMgc291bmQgZXF1aXBtZW50IzQzLjE3LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE3LjEwLjAwI0RpY3RhdGluZyBtYWNoaW5lcyM0My4xNy4xNy4wMC4wMAotdW5zcHNjNyM0My4xNy4xNy4xMS4wMCNMaW5lIGNvbmRpdGlvbmVycyM0My4xNy4xNy4wMC4wMAotdW5zcHNjNyM0My4xNy4xNy4xMi4wMCNDaGFubmVsIHNlcnZpY2UgdW5pdCBvciBkYXRhIHNlcnZpY2UgdW5pdCAoQ1NVIG9yIERTVSkjNDMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTguMDAuMDAjQ29tcHV0ZXJzIzQzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjE4LjAxLjAwI05vdGVib29rIGNvbXB1dGVycyM0My4xNy4xOC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOC4wMi4wMCNEb2NraW5nIHN0YXRpb25zIzQzLjE3LjE4LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE4LjAzLjAwI1dvcmtzdGF0aW9ucyBvciBkZXNrdG9wIGNvbXB1dGVycyM0My4xNy4xOC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOC4wNC4wMCNQZXJzb25hbCBkaWdpdGFsIGFzc2lzdGFudHMgKFBEQXMpIG9yIHBlbiBiYXNlZCBjb21wdXRlcnMjNDMuMTcuMTguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTguMDUuMDAjTWFpbmZyYW1lIGNvbXB1dGVycyM0My4xNy4xOC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOC4wNi4wMCNTZXJ2ZXJzIzQzLjE3LjE4LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE4LjA3LjAwI1BvcnQgcmVwbGljYXRvcnMjNDMuMTcuMTguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTguMDguMDAjTWluaWNvbXB1dGVycyM0My4xNy4xOC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOC4wOS4wMCNQb2ludCBvZiBzYWxlIChQT1MpIHRlcm1pbmFscyM0My4xNy4xOC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOC4xMC4wMCNQcm9ncmFtbWFibGUgbG9naWMgY29udHJvbGxlciAoUExDKSM0My4xNy4xOC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOC4xMS4wMCNDb25zb2xlICBtYWluZnJhbWUjNDMuMTcuMTguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTguMTIuMDAjQ29uc29sZSBjb250cm9sbGVyICBtYWluZnJhbWUjNDMuMTcuMTguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTguMTMuMDAjQ2hhbm5lbCBjb252ZXJ0ZXIjNDMuMTcuMTguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTguMTQuMDAjQ2hhbm5lbCB0byBjaGFubmVsIGludGVyZmFjZSBtYWluZnJhbWUjNDMuMTcuMTguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMTguMTUuMDAjQ29udHJvbCB1bml0IzQzLjE3LjE4LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE4LjE2LjAwI0NvdXBsZXIgZmFjaWxpdHkgIG1haW5mcmFtZSM0My4xNy4xOC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOC4xNy4wMCNQb3dlciBjb29sZXIgdW5pdCAgbWFpbmZyYW1lIzQzLjE3LjE4LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE4LjE4LjAwI1RoaW4gY2xpZW50IG9yIGRpc2tsZXNzIHdvcmtzdGF0aW9ucyM0My4xNy4xOC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOC4xOS4wMCNDb25zb2xlIGV4dGVuZGVycyM0My4xNy4xOC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOS4wMC4wMCNNZW1vcnkgYW5kIGNlbnRyYWwgcHJvY2Vzc2luZyB1bml0cyBDUFVzIGFuZCBhY2Nlc3NvcmllcyM0My4xNy4wMC4wMC4wMAotdW5zcHNjNyM0My4xNy4xOS4wMS4wMCNDYWNoZSBtZW1vcnkgbW9kdWxlcyM0My4xNy4xOS4wMC4wMAotdW5zcHNjNyM0My4xNy4xOS4wMi4wMCNDZW50cmFsIHByb2Nlc3NpbmcgdW5pdCAoQ1BVKSBwcm9jZXNzb3JzIzQzLjE3LjE5LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE5LjAzLjAwI0NlbnRhbCBwcm9jZXNzaW5nIHVuaXQgKENQVSkgbW90aGVyYm9hcmRzIG9yIGRhdWdodGVyYm9hcmRzIzQzLjE3LjE5LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE5LjA0LjAwI01lbW9yeSBtb2R1bGVzIzQzLjE3LjE5LjAwLjAwCi11bnNwc2M3IzQzLjE3LjE5LjA1LjAwI0NlbnRyYWwgcHJvY2Vzc2luZyB1bml0IGNvb2xlcnMjNDMuMTcuMTkuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjAuMDAuMDAjQ29tcHV0ZXIgY29udHJvbCBhbmQgaW50ZXJmYWNlIGJvYXJkcyBhbmQgY2FyZHMgYW5kIGNhYmxlcyM0My4xNy4wMC4wMC4wMAotdW5zcHNjNyM0My4xNy4yMC4wMS4wMCNQYXJhbGxlbCB0byBzbWFsbCBjb21wdXRlciBzeXN0ZW0gaW50ZXJmYWNlIGNvbnZlcnRlcnMjNDMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjAuMDIuMDAjUGFyYWxsZWwgdG8gc2VyaWFsIGNvbnZlcnRlcnMjNDMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjAuMDMuMDAjU2VyaWFsIGluZnJhcmVkIHBvcnRzIzQzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIwLjA0LjAwI1ZpZGVvIGFjY2VsZXJhdG9yIGNhcmRzIzQzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIwLjA1LjAwI0dyYXBoaWMgYWNjZWxlcmF0b3IgY2FyZHMjNDMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjAuMDYuMDAjTmV0d29yayBpbnRlcmZhY2UgY2FyZHMjNDMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjAuMDcuMDAjQXVkaW8gY2FyZHMjNDMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjAuMDguMDAjRW11bGF0aW9uIGFkYXB0ZXJzIzQzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIwLjA5LjAwI1NlcmlhbCBwb3J0IGNhcmRzIzQzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIwLjEwLjAwI1BhcmFsbGVsIHBvcnQgY2FyZHMjNDMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjAuMTEuMDAjU21hbGwgY29tcHV0ZXIgc3lzdGVtIGludGVyZmFjZSAoU0NTSSkgY29udHJvbGxlciBjYXJkcyM0My4xNy4yMC4wMC4wMAotdW5zcHNjNyM0My4xNy4yMC4xMi4wMCNEZWNvZGVyIzQzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIwLjEzLjAwI1Byb2dyYW1tYWJsZSBsb2dpYyBjb250cm9sbGVyIGlucHV0IG1vZHVsZSM0My4xNy4yMC4wMC4wMAotdW5zcHNjNyM0My4xNy4yMC4xNC4wMCNQcm9ncmFtbWFibGUgbG9naWMgY29udHJvbGxlciBjb3VudGVyIG1vZHVsZSM0My4xNy4yMC4wMC4wMAotdW5zcHNjNyM0My4xNy4yMC4xNS4wMCNQcm9ncmFtbWFibGUgbG9naWMgY29udHJvbGxlciBjb21tdW5pY2F0aW9uIG1vZHVsZSM0My4xNy4yMC4wMC4wMAotdW5zcHNjNyM0My4xNy4yMC4xNi4wMCNXaXJlbGVzcyBuZXR3b3JrIGludGVyZmFjZSBjYXJkcyM0My4xNy4yMC4wMC4wMAotdW5zcHNjNyM0My4xNy4yMC4xNy4wMCNUaW1la2VlcGluZyBjYXJkIG1hY2hpbmUgYW5kIGNvbXB1dGVyIGludGVyZmFjZSBkZXZpY2UjNDMuMTcuMjAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjAuMTguMDAjUHJvY2Vzc29yIGNhcmRzIzQzLjE3LjIwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIxLjAwLjAwI0F1ZGlvIGFuZCB2aXN1YWwgYWNjZXNzb3JpZXMjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjEuMDEuMDAjTXVzaWNhbCBpbnN0cnVtZW50IGRpZ2l0YWwgaW50ZXJmYWNlIChNSURJKSBpbnRlcmZhY2VzIG9yIGFkYXB0ZXJzIzQzLjE3LjIxLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIxLjAyLjAwI1NpZ25hbCBwcm9jZXNzb3IgdXBncmFkZXMjNDMuMTcuMjEuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjEuMDMuMDAjVmlkZW8gY2FwdHVyZSBib2FyZHMjNDMuMTcuMjEuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjEuMDQuMDAjVGVsZXZpc2lvbiBjYXJkcyM0My4xNy4yMS4wMC4wMAotdW5zcHNjNyM0My4xNy4yMS4wNS4wMCNSYWRpbyBjYXJkcyM0My4xNy4yMS4wMC4wMAotdW5zcHNjNyM0My4xNy4yMS4wNi4wMCNNdWx0aW1lZGlhIGtpdHMjNDMuMTcuMjEuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjEuMDcuMDAjQ29tcHV0ZXIgc3BlYWtlcnMjNDMuMTcuMjEuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjEuMDguMDAjQ29tcHV0ZXIgaGVhZHNldCM0My4xNy4yMS4wMC4wMAotdW5zcHNjNyM0My4xNy4yMS4wOS4wMCNTZXQgdG9wIGJveGVzIzQzLjE3LjIxLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIxLjEwLjAwI1ZpZGVvIGNhc3NldHRlIGNvbnRhaW5lcnMjNDMuMTcuMjEuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjIuMDAuMDAjSW5wdXQgZGV2aWNlcyM0My4xNy4wMC4wMC4wMAotdW5zcHNjNyM0My4xNy4yMi4wMS4wMCNCYXIgY29kZSByZWFkZXJzIzQzLjE3LjIyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIyLjAyLjAwI0dyYXBoaWNzIHRhYmxldHMgb3IgZGlnaXRpemVycyM0My4xNy4yMi4wMC4wMAotdW5zcHNjNyM0My4xNy4yMi4wMy4wMCNKb3lzdGlja3Mgb3IgZ2FtZSBwYWRzIzQzLjE3LjIyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIyLjA0LjAwI0tleWJvYXJkcyBvciBrZXlwYWRzIzQzLjE3LjIyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIyLjA1LjAwI0NvbXB1dGVyIG1vdXNlIzQzLjE3LjIyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIyLjA2LjAwI1JlbW90ZSB1c2VyIGludGVyZmFjZXMjNDMuMTcuMjIuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjIuMDcuMDAjU2Nhbm5lcnMjNDMuMTcuMjIuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjIuMDguMDAjVG91Y2ggcGFkcyM0My4xNy4yMi4wMC4wMAotdW5zcHNjNyM0My4xNy4yMi4wOS4wMCNUb3VjaCBzY3JlZW5zIzQzLjE3LjIyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIyLjEwLjAwI1RyYWNrYmFsbHMjNDMuMTcuMjIuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjIuMTEuMDAjVm9pY2UgbWljcm9waG9uZXMgZm9yIGNvbXB1dGVycyM0My4xNy4yMi4wMC4wMAotdW5zcHNjNyM0My4xNy4yMi4xMi4wMCNQdW5jaCBjYXJkIHJlYWRlcnMjNDMuMTcuMjIuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjIuMTMuMDAjTGlnaHQgcGVuIzQzLjE3LjIyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIyLjE0LjAwI1N0eWx1cyBwZW4gZm9yIG1vYmlsZSBjb21wdXRlcnMjNDMuMTcuMjIuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjIuMTUuMDAjTW91c2UgcGFkIzQzLjE3LjIyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIyLjE2LjAwI1Byb2dyYW1tYWJsZSBsb2dpYyBjb250cm9sbGVyIGhhbmRoZWxkIHByb2dyYW1tZXIjNDMuMTcuMjIuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjIuMTcuMDAjRUdSICBFbGVjdHJvbmljIGdhdGUgcmVhZGVyIzQzLjE3LjIyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIyLjE4LjAwI0R1bWIgdGVybWluYWwjNDMuMTcuMjIuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjIuMTkuMDAjUHVuY2hlZCBjYXJkcyM0My4xNy4yMi4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4wMC4wMCNFbGVjdHJvbmljIGRhdGEgc3RvcmFnZSBlcXVpcG1lbnQjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjMuMDEuMDAjUmVhZCBvbmx5IGNvbXBhY3QgZGlzYyAoQ0QpIGRyaXZlcyM0My4xNy4yMy4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4wMi4wMCNDb21wYWN0IGRpc2MgKENEKSBqdWtlYm94ZXMgb3IgY2hhbmdlcnMjNDMuMTcuMjMuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjMuMDMuMDAjQ29tYmluYXRpb24gZmxvcHB5IGRyaXZlcyM0My4xNy4yMy4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4wNC4wMCNEaXNrIGFycmF5cyM0My4xNy4yMy4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4wNS4wMCNGbG9wcHkgZHJpdmVzIzQzLjE3LjIzLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIzLjA2LjAwI0hpZ2ggY2FwYWNpdHkgcmVtb3ZhYmxlIG1lZGlhIGRyaXZlcyM0My4xNy4yMy4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4wNy4wMCNNdWx0aSBkcml2ZSBoYXJkIGRyaXZlIHRvd2VycyM0My4xNy4yMy4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4wOC4wMCNSZWNvcmRhYmxlIGNvbXBhY3QgZGlzYyAoQ0QpIGRyaXZlcyM0My4xNy4yMy4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4wOS4wMCNSZWVsIHRvIHJlZWwgdGFwZSBkcml2ZXMjNDMuMTcuMjMuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjMuMTAuMDAjU2luZ2xlIG9wdGljYWwgZHJpdmVzIzQzLjE3LjIzLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIzLjExLjAwI1RhcGUgYXJyYXlzIzQzLjE3LjIzLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIzLjEyLjAwI1RhcGUgZHJpdmUgYXV0byBsb2FkZXJzIG9yIGxpYnJhcmllcyM0My4xNy4yMy4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4xMy4wMCNIYXJkIGRyaXZlcyM0My4xNy4yMy4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4xNC4wMCNDb21wdXRlciBEVkQgZHJpdmVzIzQzLjE3LjIzLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIzLjE1LjAwI0FycmF5IGNvbnRyb2xsZXIjNDMuMTcuMjMuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjMuMTYuMDAjTVAzIHBsYXllciM0My4xNy4yMy4wMC4wMAotdW5zcHNjNyM0My4xNy4yMy4xNy4wMCNNZW1vcnkgY2FyZCByZWFkZXJzIzQzLjE3LjIzLjAwLjAwCi11bnNwc2M3IzQzLjE3LjIzLjE4LjAwI1BlcmlwaGVyYWwgY29tcG9uZW50IG1pY3JvY2hhbm5lbCBpbnRlcmNvbm5lY3QgYXJjaGl0ZWN0dXJlICByZWFkZXIgYW5kIHdyaXRlciBkcml2ZXMjNDMuMTcuMjMuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjQuMDAuMDAjTW9uaXRvcnMgYW5kIGRpc3BsYXlzIzQzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjI0LjAxLjAwI01vbml0b3JzIzQzLjE3LjI0LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI0LjAyLjAwI0ZsYXQgcGFuZWwgZGlzcGxheXMjNDMuMTcuMjQuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjQuMDMuMDAjVG91Y2ggc2NyZWVuIG1vbml0b3JzIzQzLjE3LjI0LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI0LjA0LjAwI01vbml0b3IgYWNjZXNzb3JpZXMjNDMuMTcuMjQuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjUuMDAuMDAjUHJpbnRlcnMjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjUuMDEuMDAjUGxvdHRlcnMjNDMuMTcuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjUuMDIuMDAjQmFuZCBwcmludGVycyM0My4xNy4yNS4wMC4wMAotdW5zcHNjNyM0My4xNy4yNS4wMy4wMCNEb3QgbWF0cml4IHByaW50ZXJzIzQzLjE3LjI1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI1LjA0LjAwI0xhYmVsIHByaW50ZXJzIzQzLjE3LjI1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI1LjA1LjAwI0xhcmdlIGZvcm1hdCBwcmludGVycyM0My4xNy4yNS4wMC4wMAotdW5zcHNjNyM0My4xNy4yNS4wNi4wMCNMaW5lIG1hdHJpeCBwcmludGVycyM0My4xNy4yNS4wMC4wMAotdW5zcHNjNyM0My4xNy4yNS4wNy4wMCNQYWdlIHByaW50ZXJzIzQzLjE3LjI1LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI1LjA4LjAwI1RoZXJtYWwgdGFwZSBwcmludGVycyM0My4xNy4yNS4wMC4wMAotdW5zcHNjNyM0My4xNy4yNS4wOS4wMCNJbmtqZXQgcHJpbnRlcnMjNDMuMTcuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjUuMTAuMDAjTGFzZXIgcHJpbnRlcnMjNDMuMTcuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjUuMTEuMDAjQnViYmxlIGpldCBwcmludGVycyM0My4xNy4yNS4wMC4wMAotdW5zcHNjNyM0My4xNy4yNS4xMi4wMCNCYWcgdGFnIHByaW50ZXIjNDMuMTcuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjUuMTMuMDAjUHJpbnRlciBzZXBlcmF0b3IjNDMuMTcuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjUuMTQuMDAjTXVsdGkgZnVuY3Rpb24gcHJpbnRlcnMjNDMuMTcuMjUuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjUuMTUuMDAjQVRCIGFpcmxpbmUgdGlja2V0IG9yIGJvYXJkaW5nIHBhc3MgcHJpbnRlciM0My4xNy4yNS4wMC4wMAotdW5zcHNjNyM0My4xNy4yNi4wMC4wMCNFbmNsb3N1cmVzIGFuZCBmcmFtZXMgYW5kIGJhY2twbGFuZXMjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjYuMDEuMDAjQ2hhc3NpcyM0My4xNy4yNi4wMC4wMAotdW5zcHNjNyM0My4xNy4yNi4wMi4wMCNOZXR3b3JrIGNoYXNzaXMjNDMuMTcuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjYuMDMuMDAjRHJpdmUgY2FiaW5ldHMjNDMuMTcuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjYuMDQuMDAjRXhwYW5zaW9uIHNsb3QgZXhwYW5kZXIjNDMuMTcuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjYuMDUuMDAjUmFja3MjNDMuMTcuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjYuMDYuMDAjUHJvZ3JhbW1hYmxlIGxvZ2ljIGNvbnRyb2xsZXIgcmFjayBvciBiYXNlIzQzLjE3LjI2LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI2LjA3LjAwI1JlbW92YWJsZSBkcml2ZSBmcmFtZXMjNDMuMTcuMjYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjcuMDAuMDAjTmV0d29yayBoYXJkd2FyZSBhbmQgY29tcG9uZW50cyBhbmQgYWNjZXNzb3JpZXMjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjcuMDEuMDAjSHVicyBvciBjb25jZW50cmF0b3JzIzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjAyLjAwI1JvdXRlcnMjNDMuMTcuMjcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjcuMDMuMDAjUmVwZWF0ZXJzIzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjA0LjAwI05ldHdvcmsgYnJpZGdlcyM0My4xNy4yNy4wMC4wMAotdW5zcHNjNyM0My4xNy4yNy4wNS4wMCNTd2l0Y2hlcyM0My4xNy4yNy4wMC4wMAotdW5zcHNjNyM0My4xNy4yNy4wNi4wMCNNZWRpYSBmaWx0ZXJzIzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjA3LjAwI1dpZGUgYXJlYSBuZXR3b3JrIChXQU4pIGNhcmRzIzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjA4LjAwI011bHRpc3RhdGlvbiBhY2Nlc3MgdW5pdHMgKE1BVXMpIzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjA5LjAwI0RhdGEgc2VydmljZSB1bml0cyAoRFNVcykjNDMuMTcuMjcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjcuMTAuMDAjTmV0d29yayBhZGFwdGVycyM0My4xNy4yNy4wMC4wMAotdW5zcHNjNyM0My4xNy4yNy4xMS4wMCNMb2FkIGJhbGFuY2VyIzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjEyLjAwI1ByaW50ZXIgIGFjY3VtdWxhdG9yIzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjEzLjAwI0VudGVycHJpc2UgU3lzdGVtIENvbm5lY3Rpdml0eSBFU0NPTiBEaXJlY3RvciM0My4xNy4yNy4wMC4wMAotdW5zcHNjNyM0My4xNy4yNy4xNC4wMCNOZXR3b3JrIG1hbmFnZW1lbnQgc3lzdGVtIzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjE1LjAwI0ZpcmV3YWxsIGZpcmV3YWxsIGFwcGxpYW5jZSM0My4xNy4yNy4wMC4wMAotdW5zcHNjNyM0My4xNy4yNy4xNi4wMCNDYWJsZSBuZXR3b3JrIHRlc3RlcnMjNDMuMTcuMjcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjcuMTcuMDAjRGF0YSBzeW5jaHJvbml6YXRpb24gZGV2aWNlIzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjE4LjAwI0RpZ2l0YWwgY3Jvc3MgY29ubmVjdHMgZXF1aXBtZW50IzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjE5LjAwI09wdGljYWwgY3Jvc3MgY29ubmVjdHMgZXF1aXBtZW50IzQzLjE3LjI3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI3LjIwLjAwI1NjcmVlbiBhbXBsaWZpZXIjNDMuMTcuMjcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjcuMjEuMDAjVGltZSBkaXZpc2lvbmFsIG11bHRpcGxleCM0My4xNy4yNy4wMC4wMAotdW5zcHNjNyM0My4xNy4yNy4yMi4wMCNDb25uZWN0aW9uIHBhbmVscyM0My4xNy4yNy4wMC4wMAotdW5zcHNjNyM0My4xNy4yNy4yMy4wMCNWb2ljZSBlY2hvIGNhbmNlbGxlcnMjNDMuMTcuMjcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjcuMjQuMDAjUGF0Y2ggcGFuZWwjNDMuMTcuMjcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjguMDAuMDAjTW9kZW1zIGFuZCByZWxhdGVkIGhhcmR3YXJlIzQzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjI4LjAxLjAwI01vZGVtcyBvciBuZXR3b3JrIGNvbWJvIGNhcmRzIzQzLjE3LjI4LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI4LjAyLjAwI01vZGVtcyM0My4xNy4yOC4wMC4wMAotdW5zcHNjNyM0My4xNy4yOC4wMy4wMCNJbnRlZ3JhdGVkIHNlcnZpY2VzIGRpZ2l0YWwgbmV0d29yayAoSVNETikgYWRhcHRlcnMjNDMuMTcuMjguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjguMDQuMDAjTW9kZW0gYmFua3MjNDMuMTcuMjguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjguMDUuMDAjTW9kZW0gdGVsZWFkYXB0b3JzIzQzLjE3LjI4LjAwLjAwCi11bnNwc2M3IzQzLjE3LjI4LjA2LjAwI011bHRpcGxleG9yIE1VWHMjNDMuMTcuMjguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjguMDcuMDAjQWRkIGRyb3AgbXVsdGlwbGV4ZXIjNDMuMTcuMjguMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjkuMDAuMDAjTmV0d29yayBzd2l0Y2hlcyM0My4xNy4wMC4wMC4wMAotdW5zcHNjNyM0My4xNy4yOS4wMS4wMCNMb2NhbCBhcmVhIG5ldHdvcmsgKExBTikgc3dpdGNoZXMjNDMuMTcuMjkuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjkuMDIuMDAjQXN5bmNocm9ub3VzIHRyYW5zZmVyIG1vZGUgKEFUTSkgc3dpdGNoZXMjNDMuMTcuMjkuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMjkuMDMuMDAjRmliZXIgZGlzdHJpYnV0ZWQgZGF0YSBpbnRlcmZhY2UgKEZEREkpICBzd2l0Y2hlcyM0My4xNy4yOS4wMC4wMAotdW5zcHNjNyM0My4xNy4yOS4wNC4wMCNXaWRlIGFyZWEgbmV0d29yayAoV0FOKSBzd2l0Y2hlcyM0My4xNy4yOS4wMC4wMAotdW5zcHNjNyM0My4xNy4yOS4wNS4wMCNJbnRlbGxpZ2VudCBuZXR3b3JrIHN3aXRjaGluZyBzeXN0ZW0jNDMuMTcuMjkuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzAuMDAuMDAjTmV0d29yayByZXBlYXRlcnMjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzAuMDEuMDAjQXR0YWNoZWQgcmVzb3VyY2UgY29tcHV0ZXIgbmV0d29yayAoQVJDbmV0KSByZXBlYXRlcnMjNDMuMTcuMzAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzAuMDIuMDAjRXRoZXJuZXQgcmVwZWF0ZXJzIzQzLjE3LjMwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjMwLjAzLjAwI0ZpYmVyIGRpc3RyaWJ1dGVkIGRhdGEgaW50ZXJmYWNlIChGRERJKSByZXBlYXRlcnMjNDMuMTcuMzAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzAuMDQuMDAjVG9rZW4gcmluZyByZXBlYXRlcnMjNDMuMTcuMzAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzEuMDAuMDAjUmFkaW8gc3lzdGVtcyM0My4xNy4wMC4wMC4wMAotdW5zcHNjNyM0My4xNy4zMS4wMS4wMCNUcmFuc21pdHRlcnMjNDMuMTcuMzEuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzEuMDIuMDAjUmVjZWl2ZXJzIzQzLjE3LjMxLjAwLjAwCi11bnNwc2M3IzQzLjE3LjMxLjAzLjAwI1RyYW5zY2VpdmVycyM0My4xNy4zMS4wMC4wMAotdW5zcHNjNyM0My4xNy4zMS4wNC4wMCNUdW5lcnMjNDMuMTcuMzEuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzEuMDUuMDAjU2hvcnQgd2F2ZSBlcXVpcG1lbnQjNDMuMTcuMzEuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzIuMDAuMDAjQXV0b21hdGVkIGRhdGEgY29sbGVjdGlvbiBlcXVpcG1lbnQjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzIuMDEuMDAjQmFyIGNvZGUgZXF1aXBtZW50IzQzLjE3LjMyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjMyLjAyLjAwI1JhZGlvIGZyZXF1ZW5jeSBpZGVudGlmaWNhdGlvbiAoSUQpIGVxdWlwbWVudCM0My4xNy4zMi4wMC4wMAotdW5zcHNjNyM0My4xNy4zMi4wMy4wMCNSYWRpbyBmcmVxdWVuY3kgZGF0YSBjb21tdW5pY2F0aW9uIGVxdWlwbWVudCM0My4xNy4zMi4wMC4wMAotdW5zcHNjNyM0My4xNy4zMi4wNC4wMCNDYW1lcmEgYmFzZWQgdmlzaW9uIHN5c3RlbXMgZm9yIGF1dG9tYXRlZCBkYXRhIGNvbGxlY3Rpb24jNDMuMTcuMzIuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzIuMDUuMDAjQ3VycmVuY3kgcmVjb2duaXRpb24gZXF1aXBtZW50IzQzLjE3LjMyLjAwLjAwCi11bnNwc2M3IzQzLjE3LjMyLjA2LjAwI01hZ25ldGljIGNhcmQgcmVhZGVycyM0My4xNy4zMi4wMC4wMAotdW5zcHNjNyM0My4xNy4zMy4wMC4wMCNDb21wdXRlciBkYXRhIHN3aXRjaGVzIzQzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjMzLjAxLjAwI1NlcmlhbCBkYXRhIHN3aXRjaGVzIzQzLjE3LjMzLjAwLjAwCi11bnNwc2M3IzQzLjE3LjMzLjAyLjAwI0tleWJvYXJkIHZpZGVvIG1vdXNlIChLVk0pIHN3aXRjaCBib3hlcyM0My4xNy4zMy4wMC4wMAotdW5zcHNjNyM0My4xNy4zMy4wMy4wMCNNYW51YWwgcHJpbnRlciBzd2l0Y2hlcyM0My4xNy4zMy4wMC4wMAotdW5zcHNjNyM0My4xNy4zMy4wNC4wMCNBdXRvbWF0aWMgcHJpbnRlciBzd2l0Y2hlcyM0My4xNy4zMy4wMC4wMAotdW5zcHNjNyM0My4xNy4zMy4wNS4wMCNDb25zb2xlIHN3aXRjaCM0My4xNy4zMy4wMC4wMAotdW5zcHNjNyM0My4xNy4zMy4wNi4wMCNQYXJhbGxlbCBkYXRhIHN3aXRjaGVzIzQzLjE3LjMzLjAwLjAwCi11bnNwc2M3IzQzLjE3LjM0LjAwLjAwI0NvbXB1dGVyIGFjY2Vzc29yeSBjb3ZlcnMjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzQuMDEuMDAjS2V5IGJvYXJkIHNraW5zIzQzLjE3LjM0LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM0LjAyLjAwI05vdGVib29rIG9yIHBhbG10b3Agc2tpbnMjNDMuMTcuMzQuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzUuMDAuMDAjS2V5IGJvYXJkIHNraW5zIzQzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE3LjM2LjAwLjAwI0NvbXB1dGVyIGNhYmxlcyBhbmQgYWNjZXNzb3JpZXMjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzYuMDEuMDAjTW91c2UgYWRhcHRlciM0My4xNy4zNi4wMC4wMAotdW5zcHNjNyM0My4xNy4zNi4wMi4wMCNLZXlib2FyZCBleHRlbnNpb24gY2FibGVzIzQzLjE3LjM2LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM2LjAzLjAwI01vZGVtIGNhYmxlcyM0My4xNy4zNi4wMC4wMAotdW5zcHNjNyM0My4xNy4zNi4wNC4wMCNDb3JkIGNvdmVycyM0My4xNy4zNi4wMC4wMAotdW5zcHNjNyM0My4xNy4zNi4wNS4wMCNQYXJhbGxlbCBjYWJsZXMjNDMuMTcuMzYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzYuMDYuMDAjU2VyaWFsIGNhYmxlcyM0My4xNy4zNi4wMC4wMAotdW5zcHNjNyM0My4xNy4zNi4wNy4wMCNVbml2ZXJzYWwgc2VyaWFsIGJ1cyBVU0IgY2FibGVzIzQzLjE3LjM2LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM2LjA4LjAwI05ldHdvcmsgcGF0Y2ggY2FibGVzIzQzLjE3LjM2LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM2LjA5LjAwI0NvbXB1dGVyIGF1ZGlvIGNhYmxlcyM0My4xNy4zNi4wMC4wMAotdW5zcHNjNyM0My4xNy4zNi4xMC4wMCNDb21wdXRlciB2aWRlbyBjYWJsZXMjNDMuMTcuMzYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzYuMTEuMDAjSW50ZXIgZGV2aWNlIGxpbmsgY2FibGVzIzQzLjE3LjM2LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM2LjEyLjAwI0NvbXB1dGVyIGNhYmxlIGtpdHMjNDMuMTcuMzYuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzYuMTMuMDAjQ2FibGUgamFja3Mgb3IgY29ubmVjdG9ycyM0My4xNy4zNi4wMC4wMAotdW5zcHNjNyM0My4xNy4zNy4wMC4wMCNTdG9yYWdlIGRyaXZlIGNvbXBvbmVudHMjNDMuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzcuMDEuMDAjSGVhZCBhc3NlbWJsaWVzIG9yIHBhcnRzIzQzLjE3LjM3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM3LjAyLjAwI0xlYWQgYXNzZW1ibGllcyM0My4xNy4zNy4wMC4wMAotdW5zcHNjNyM0My4xNy4zNy4wMy4wMCNIZWFkIHN0YWNrIGFzc2VtYmxpZXMjNDMuMTcuMzcuMDAuMDAKLXVuc3BzYzcjNDMuMTcuMzcuMDQuMDAjQ29tYiBhc3NlbWJsaWVzIzQzLjE3LjM3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM3LjA1LjAwI0NyYXNoIHN0b3BzIzQzLjE3LjM3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM3LjA2LjAwI1BsYXR0ZXJzIG9yIGRpc2tzIzQzLjE3LjM3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM3LjA3LjAwI0hlYWQgbW91bnRpbmcgYXJtcyM0My4xNy4zNy4wMC4wMAotdW5zcHNjNyM0My4xNy4zNy4wOC4wMCNSZWFkIHdyaXRlIGhlYWRzIzQzLjE3LjM3LjAwLjAwCi11bnNwc2M3IzQzLjE3LjM3LjA5LjAwI01vdG9yIGRyaXZlcyM0My4xNy4zNy4wMC4wMAotdW5zcHNjNyM0My4xOC4wMC4wMC4wMCNDb21tdW5pY2F0aW9ucyBhbmQgY29tcHV0ZXIgc3VwcGxpZXMjNDMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTguMTUuMDAuMDAjQXVkaW8gcmVjb3JkaW5nIG1lZGlhIzQzLjE4LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE4LjE1LjAxLjAwI0JsYW5rIGF1ZGlvIHRhcGVzIzQzLjE4LjE1LjAwLjAwCi11bnNwc2M3IzQzLjE4LjE2LjAwLjAwI0RhdGEgc3RvcmFnZSBtZWRpYSM0My4xOC4wMC4wMC4wMAotdW5zcHNjNyM0My4xOC4xNi4wMS4wMCNGbG9wcHkgZGlza2V0dGVzIzQzLjE4LjE2LjAwLjAwCi11bnNwc2M3IzQzLjE4LjE2LjAyLjAwI1JlY29yZGFibGUgY29tcGFjdCBkaXNjcyAoQ0RzKSM0My4xOC4xNi4wMC4wMAotdW5zcHNjNyM0My4xOC4xNi4wMy4wMCNCbGFuayBkYXRhIHRhcGVzIzQzLjE4LjE2LjAwLjAwCi11bnNwc2M3IzQzLjE4LjE2LjA0LjAwI0hpZ2ggZGVuc2l0eSByZW1vdmFibGUgbWVkaWEgYmxhbmsgZGlza3MjNDMuMTguMTYuMDAuMDAKLXVuc3BzYzcjNDMuMTguMTYuMDUuMDAjQmxhbmsgZGlnaXRhbCB2aWRlbyBkaXNjcyBEVkQjNDMuMTguMTYuMDAuMDAKLXVuc3BzYzcjNDMuMTguMTYuMDYuMDAjRGF0YSBzdG9yYWdlIGNhcmRzIzQzLjE4LjE2LjAwLjAwCi11bnNwc2M3IzQzLjE4LjE2LjA3LjAwI01hZ25ldG8gb3B0aWNhbCBkaXNrcyM0My4xOC4xNi4wMC4wMAotdW5zcHNjNyM0My4xOC4xNy4wMC4wMCNNdWx0aW1lZGlhIHN0b3JhZ2UjNDMuMTguMDAuMDAuMDAKLXVuc3BzYzcjNDMuMTguMTcuMDEuMDAjTXVsdGltZWRpYSB0b3dlcnMjNDMuMTguMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTguMTcuMDIuMDAjTXVsdGltZWRpYSBkcmF3ZXJzIzQzLjE4LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE4LjE3LjAzLjAwI0NvbXBhY3QgZGlzYyAoQ0QpIGNhc2VzIzQzLjE4LjE3LjAwLjAwCi11bnNwc2M3IzQzLjE4LjE3LjA0LjAwI0Rpc2tldHRlIGhvbGRlcnMjNDMuMTguMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTguMTcuMDUuMDAjRGlza2V0dGUgc3RvcmFnZSM0My4xOC4xNy4wMC4wMAotdW5zcHNjNyM0My4xOC4xNy4wNi4wMCNNdWx0aW1lZGlhIHRyYXlzIG9yIG9yZ2FuaXplcnMjNDMuMTguMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTguMTcuMDcuMDAjWmlwIG1haWxlcnMjNDMuMTguMTcuMDAuMDAKLXVuc3BzYzcjNDMuMTguMTguMDAuMDAjTW9uaXRvciBzdGFuZHMgb3IgcmlzZXJzIzQzLjE4LjAwLjAwLjAwCi11bnNwc2M3IzQzLjE4LjE5LjAwLjAwI01vbml0b3IgYXJtcyM0My4xOC4wMC4wMC4wMAotdW5zcHNjNyM0NC4wMC4wMC4wMC4wMCNPZmZpY2UgRXF1aXBtZW50IGFuZCBBY2Nlc3NvcmllcyBhbmQgU3VwcGxpZXMjNDQuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMDAuMDAuMDAjT2ZmaWNlIG1hY2hpbmVzIGFuZCB0aGVpciBzdXBwbGllcyBhbmQgYWNjZXNzb3JpZXMjNDQuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTUuMDAuMDAjRHVwbGljYXRpbmcgbWFjaGluZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTUuMDEuMDAjUGhvdG9jb3BpZXJzIzQ0LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjE1LjAyLjAwI0ZhY3NpbWlsZSBtYWNoaW5lcyM0NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMC4xNS4wMy4wMCNNdWx0aWZ1bmN0aW9uIG1hY2hpbmVzIzQ0LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjE2LjAwLjAwI1BhcGVyIHByb2Nlc3NpbmcgbWFjaGluZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTYuMDEuMDAjUGFwZXIgY3V0dGluZyBtYWNoaW5lcyM0NC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMC4xNi4wMi4wMCNQYXBlciBwdW5jaGluZyBvciBiaW5kaW5nIG1hY2hpbmVzIzQ0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjE2LjAzLjAwI1BhcGVyIHNocmVkZGluZyBtYWNoaW5lcyBvciBhY2Nlc3NvcmllcyM0NC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMC4xNy4wMC4wMCNQcmludGVyIGFuZCBwaG90b2NvcGllciBhbmQgZmFjc2ltaWxlIGFjY2Vzc29yaWVzIzQ0LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjE3LjAxLjAwI0NvbG9yIG9wdGlvbnMgb3IgdXBncmFkZXMjNDQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTcuMDIuMDAjRHVwbGV4ZXIgdHJheXMjNDQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTcuMDMuMDAjRHVwbGV4ZXIgdW5pdHMjNDQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTcuMDQuMDAjRmFjc2ltaWxlIGhhbmRzZXRzIzQ0LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjE3LjA1LjAwI1ByaW50ZXIgdHJheXMgb3IgZmVlZGVycyM0NC4xMC4xNy4wMC4wMAotdW5zcHNjNyM0NC4xMC4xNy4wNi4wMCNQaG90b2NvbmR1Y3RvciBvciBpbWFnaW5nIHVuaXRzIzQ0LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjE3LjA3LjAwI1N0YXBsZXIgdW5pdHMjNDQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTguMDAuMDAjQ2FsY3VsYXRpbmcgbWFjaGluZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTguMDEuMDAjQ2FsY3VsYXRvcnMjNDQuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTguMDIuMDAjQWRkaW5nIG1hY2hpbmVzIzQ0LjEwLjE4LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjE4LjAzLjAwI0FjY291bnRpbmcgbWFjaGluZXMjNDQuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTguMDQuMDAjQ2FzaCByZWdpc3RlcnMjNDQuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTAuMTkuMDAuMDAjQ2hlY2sgZW5kb3JzaW5nIGFuZCB3cml0aW5nIG1hY2hpbmVzIzQ0LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjE5LjAxLjAwI0NoZWNrIGVuZG9yc2luZyBtYWNoaW5lcyM0NC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0NC4xMC4xOS4wMi4wMCNDaGVjayB3cml0aW5nIG1hY2hpbmVzIzQ0LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjIwLjAwLjAwI0xhbWluYXRpbmcgc3VwcGxpZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjAuMDEuMDAjTGFtaW5hdGlvbiBmaWxtIzQ0LjEwLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjIwLjAyLjAwI0xhbWluYXRvciBwb3VjaGVzIzQ0LjEwLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjIxLjAwLjAwI01haWwgbWFjaGluZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjEuMDEuMDAjRnJhbmtpbmcgb3IgcG9zdGFnZSBtYWNoaW5lcyM0NC4xMC4yMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4yMS4wMi4wMCNNYWlsIG9wZW5pbmcgbWFjaGluZXMjNDQuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjEuMDMuMDAjTWFpbCBzZWFsaW5nIG1hY2hpbmVzIzQ0LjEwLjIxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjIxLjA0LjAwI1N0YW1wIGNhbmNlbGluZyBtYWNoaW5lcyM0NC4xMC4yMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4yMS4wNS4wMCNBZGRyZXNzaW5nIG1hY2hpbmVzIzQ0LjEwLjIxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjIxLjA2LjAwI0xldHRlciBmb2xkZXJzIzQ0LjEwLjIxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjIyLjAwLjAwI1NjYW5uZXIgYWNjZXNzb3JpZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjIuMDEuMDAjRW5kb3JzZXJzIzQ0LjEwLjIyLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjIzLjAwLjAwI1BhY2tpbmcgbWFjaGluZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjMuMDEuMDAjQnVuZGxpbmcgbWFjaGluZXMjNDQuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjMuMDIuMDAjUGFyY2VsIHdyYXBwaW5nIG1hY2hpbmVzIzQ0LjEwLjIzLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjIzLjAzLjAwI1NlYWwgcHJlc3NlcyM0NC4xMC4yMy4wMC4wMAotdW5zcHNjNyM0NC4xMC4yMy4wNC4wMCNTZWFsaW5nIG1hY2hpbmVzIzQ0LjEwLjIzLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjIzLjA1LjAwI1N0cmFwcGluZyB0ZW5zaW9uZXJzIG9yIHNlYWxlcnMjNDQuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjMuMDYuMDAjVHlpbmcgbWFjaGluZXMjNDQuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjQuMDAuMDAjTGFiZWxpbmcgbWFjaGluZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjQuMDEuMDAjVGFwZSBsYWJlbCBtYWtlcnMjNDQuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjQuMDIuMDAjRGF0aW5nIG9yIG51bWJlcmluZyBtYWNoaW5lcyM0NC4xMC4yNC4wMC4wMAotdW5zcHNjNyM0NC4xMC4yNC4wMy4wMCNJZGVudGlmaWNhdGlvbiAoSUQpIHByZXNzIG1hY2hpbmVzIzQ0LjEwLjI0LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI0LjA0LjAwI0xhYmVsIGFwcGx5aW5nIG1hY2hpbmVzIzQ0LjEwLjI0LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI0LjA1LjAwI0xhYmVsIG1ha2luZyBtYWNoaW5lcyM0NC4xMC4yNC4wMC4wMAotdW5zcHNjNyM0NC4xMC4yNC4wNi4wMCNMZXR0ZXJpbmcgZXF1aXBtZW50IzQ0LjEwLjI0LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI0LjA3LjAwI1RhcGUgZW1ib3NzZXIjNDQuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjQuMDguMDAjQXV0b21hdGljIGxhYmVsaW5nIHN5c3RlbXMjNDQuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjQuMDkuMDAjU2VtaSBhdXRvbWF0aWMgbGFiZWxpbmcgc3lzdGVtcyM0NC4xMC4yNC4wMC4wMAotdW5zcHNjNyM0NC4xMC4yNC4xMS4wMCNMYWJlbCBkaXNwZW5zZXJzIzQ0LjEwLjI0LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI1LjAwLjAwI1NvcnRpbmcgbWFjaGluZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjUuMDEuMDAjTW9uZXkgY291bnRpbmcgbWFjaGluZXMjNDQuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjUuMDIuMDAjU29ydGVycyM0NC4xMC4yNS4wMC4wMAotdW5zcHNjNyM0NC4xMC4yNi4wMC4wMCNUeXBpbmcgbWFjaGluZXMgYW5kIGFjY2Vzc29yaWVzIzQ0LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI2LjAyLjAwI1R5cGV3cml0ZXJzIzQ0LjEwLjI2LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI2LjAzLjAwI1ByaW50d2hlZWxzIzQ0LjEwLjI2LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI2LjA0LjAwI1N0ZW5vdHlwZSBtYWNoaW5lcyM0NC4xMC4yNi4wMC4wMAotdW5zcHNjNyM0NC4xMC4yNi4wNS4wMCNEaWN0YXRpb24gbWFjaGluZXMjNDQuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjYuMDYuMDAjVHlwZXJ3cml0ZXIgcmliYm9ucyM0NC4xMC4yNi4wMC4wMAotdW5zcHNjNyM0NC4xMC4yNi4wNy4wMCNXb3JkIHByb2Nlc3NvcnMjNDQuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjYuMDguMDAjVHlwZXdyaXRlciBwcmludGluZyBlbGVtZW50cyM0NC4xMC4yNi4wMC4wMAotdW5zcHNjNyM0NC4xMC4yOC4wMC4wMCNCaW5kaW5nIGFuZCBsYW1pbmF0aW9uIG1hY2hpbmVzIzQ0LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI4LjAxLjAwI0xhbWluYXRvcnMjNDQuMTAuMjguMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjkuMDAuMDAjT2ZmaWNlIG1hY2hpbmUgYWNjZXNzb3JpZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjkuMDEuMDAjVHJhdmVsIGtpdHMgZm9yIG9mZmljZSBtYWNoaW5lcyM0NC4xMC4yOS4wMC4wMAotdW5zcHNjNyM0NC4xMC4yOS4wMi4wMCNTdG9yYWdlIGFjY2Vzc29yaWVzIGZvciBvZmZpY2UgbWFjaGluZXMjNDQuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjkuMDMuMDAjVGFwZSBjbGVhbmVycyM0NC4xMC4yOS4wMC4wMAotdW5zcHNjNyM0NC4xMC4yOS4wNC4wMCNBaXIgY29tcHJlc3NlZCBzcHJheSM0NC4xMC4yOS4wMC4wMAotdW5zcHNjNyM0NC4xMC4yOS4wNS4wMCNTbWFsbCBwYXBlciBiYWdzIG9mIHdldCBhYnNvcmJpbmcgc2FsdHMjNDQuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjkuMDYuMDAjQ29tcHV0ZXIgb3Igb2ZmaWNlIGVxdWlwbWVudCBjbGVhbmluZyBraXQjNDQuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMjkuMDcuMDAjRXF1aXBtZW50IGR1c3QgY292ZXJzIzQ0LjEwLjI5LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI5LjA4LjAwI0NvbXBhY3QgZGlzYyBjbGVhbmVycyBvciBzY3JhdGNoIHJlbW92ZXJzIzQ0LjEwLjI5LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI5LjA5LjAwI0NvbXBhY3QgZGlzYyBkcml2ZSBjbGVhbmVyIzQ0LjEwLjI5LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI5LjEwLjAwI0xhbWluYXRvciB0cmF5cyM0NC4xMC4yOS4wMC4wMAotdW5zcHNjNyM0NC4xMC4yOS4xMS4wMCNDbGVhbmluZyB3aXBlcyBmb3Igb2ZmaWNlIG1hY2hpbmVzIzQ0LjEwLjI5LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjI5LjEyLjAwI0NsZWFuaW5nIHNvbHV0aW9ucyBmb3Igb2ZmaWNlIGVxdWlwbWVudCM0NC4xMC4yOS4wMC4wMAotdW5zcHNjNyM0NC4xMC4yOS4xMy4wMCNDb21wYWN0IGRpc2MgZGVzdHJveWVyIzQ0LjEwLjI5LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMwLjAwLjAwI0Z1c2VycyBhbmQgYWNjZXNzb3JpZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMzAuMDEuMDAjRnVzZXIgY2xlYW5pbmcgcGFkcyM0NC4xMC4zMC4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMC4wMi4wMCNGdXNlciBvaWwjNDQuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMzAuMDMuMDAjRnVzZXIgd2lwZXIjNDQuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMzAuMDQuMDAjRnVzZXJzIzQ0LjEwLjMwLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMxLjAwLjAwI1ByaW50ZXIgYW5kIGZhY3NpbWlsZSBhbmQgcGhvdG9jb3BpZXIgc3VwcGxpZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMzEuMDEuMDAjUHJpbnRlciBvciBmYWNzaW1pbGUgb3IgcGhvdG9jb3BpZXIgYmVsdHMjNDQuMTAuMzEuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMzEuMDIuMDAjUHJpbnRlciBvciBmYWNzaW1pbGUgb3IgcGhvdG9jb3BpZXIgcmliYm9ucyM0NC4xMC4zMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMS4wMy4wMCNUb25lciM0NC4xMC4zMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMS4wNC4wMCNUcmFuc2ZlciByb2xscyM0NC4xMC4zMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMS4wNS4wMCNJbmsgY2FydHJpZGdlcyM0NC4xMC4zMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMS4wNi4wMCNJbmsgc3RpY2tzIzQ0LjEwLjMxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMxLjA3LjAwI1ByaW50ZXIgb3IgZmFjc2ltaWxlIG9yIHBob3RvY29waWVyIGNsZWFuaW5nIHN1cHBsaWVzIzQ0LjEwLjMxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMxLjA4LjAwI0RldmVsb3BlciBmb3IgcHJpbnRlcnMgb3IgcGhvdG9jb3BpZXJzIzQ0LjEwLjMxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMxLjA5LjAwI1ByaW50ZXIgb3IgZmFjc2ltaWxlIG9yIHBob3RvY29waWVyIGRydW1zIzQ0LjEwLjMxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMxLjEwLjAwI1ByaW50IGhlYWRzIzQ0LjEwLjMxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMxLjExLjAwI0luayByb2xscyM0NC4xMC4zMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMS4xMi4wMCNQcmludGVyIHJpYmJvbiM0NC4xMC4zMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMS4xMy4wMCNQaGFzZXJzIG9yIGlua2pldCBraXRzIzQ0LjEwLjMxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMxLjE0LjAwI0xhc2VyamV0IGNvYXRpbmcga2l0cyM0NC4xMC4zMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMS4xNS4wMCNJbWFnaW5nIGZpbG1zIzQ0LjEwLjMxLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMxLjE2LjAwI0tpdCBmb3IgcHJpbnRlciM0NC4xMC4zMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMS4xNy4wMCNGYWNzaW1pbGUgcmliYm9ucyM0NC4xMC4zMS4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMi4wMC4wMCNPZmZpY2UgdGltZSByZWNvcmRpbmcgbWFjaGluZXMgYW5kIGFjY2Vzc29yaWVzIzQ0LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMyLjAxLjAwI1RpbWUgY2FyZCBtYWNoaW5lcyM0NC4xMC4zMi4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMi4wMi4wMCNUaW1lIHN0YW1waW5nIG1hY2hpbmVzIzQ0LjEwLjMyLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjMyLjAzLjAwI1RpbWUgY2FyZCBtYWNoaW5lIHJlcGxhY2VtZW50IHJpYmJvbiM0NC4xMC4zMi4wMC4wMAotdW5zcHNjNyM0NC4xMC4zMi4wNC4wMCNUaW1lIGNhcmQgcmFja3MjNDQuMTAuMzIuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMzIuMDUuMDAjVGltZSBjYXJkcyBvciBzaGVldHMjNDQuMTAuMzIuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMzMuMDAuMDAjVGltZSBjYXJkIG1hY2hpbmVzIzQ0LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ0LjEwLjM0LjAwLjAwI1RpbWUgc3RhbXBpbmcgbWFjaGluZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMzUuMDAuMDAjQmluZGluZyBtYWNoaW5lIHN1cGxpZXMjNDQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTAuMzUuMDEuMDAjV2lyZSBiaW5kaW5nIGVsZW1lbnRzIG9yIGNvbWJzIzQ0LjEwLjM1LjAwLjAwCi11bnNwc2M3IzQ0LjEwLjM1LjAyLjAwI0JpbmRpbmcgY292ZXJzIzQ0LjEwLjM1LjAwLjAwCi11bnNwc2M3IzQ0LjExLjAwLjAwLjAwI09mZmljZSBhbmQgZGVzayBhY2Nlc3NvcmllcyM0NC4wMC4wMC4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNS4wMC4wMCNPcmdhbml6ZXJzIGFuZCBhY2Nlc3NvcmllcyM0NC4xMS4wMC4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNS4wMS4wMCNNZXNzYWdlIGhvbGRlcnMgb3IgZGlzcGVuc2VycyM0NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNS4wMi4wMCNEZXNrIGRyYXdlciBvcmdhbml6ZXJzIzQ0LjExLjE1LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE1LjAzLjAwI0Rlc2t0b3AgdHJheXMgb3Igb3JnYW5pemVycyM0NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNS4wNC4wMCNEaXNrZXR0ZSBob2xkZXJzIzQ0LjExLjE1LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE1LjA1LjAwI0NvcHkgaG9sZGVycyM0NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNS4wNi4wMCNQYXBlciBvciBwYWQgaG9sZGVyIzQ0LjExLjE1LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE1LjA3LjAwI0Jvb2sgZW5kcyM0NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNS4wOC4wMCNTdGF5IHB1dCBwZW4gb3IgaG9sZGVyIzQ0LjExLjE1LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE1LjA5LjAwI1BlbiBvciBwZW5jaWwgaG9sZGVycyM0NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNS4xMC4wMCNIYW5naW5nIG9yZ2FuaXplcnMgb3IgYWNjZXNzb3JpZXMjNDQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTUuMTEuMDAjRGlzcGxheSByYWNrcyBvciBhY2Nlc3NvcmllcyM0NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNS4xMi4wMCNMaXRlcmF0dXJlIHJhY2sjNDQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTUuMTMuMDAjU3VwcG9ydHMgZm9yIGRpYXJpZXMgb3IgY2FsZW5kYXJzIzQ0LjExLjE1LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE1LjE0LjAwI1N0YW1wIHJhY2tzIG9yIG9yZ2FuaXplcnMjNDQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTUuMTUuMDAjRmlsZSBzdG9yYWdlIGJveGVzIG9yIG9yZ2FuaXplcnMjNDQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTYuMDAuMDAjQ2FzaCBoYW5kbGluZyBzdXBwbGllcyM0NC4xMS4wMC4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNi4wMS4wMCNDdXJyZW5jeSBiYWdzIG9yIHdhbGxldHMjNDQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTYuMDIuMDAjQ291bnRlcmZlaXQgYmlsbCBkZXRlY3RvciBwZW5zIzQ0LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE2LjAzLjAwI0NvaW4gc29ydGVycyM0NC4xMS4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMS4xNi4wNC4wMCNDb2luIHdyYXBwZXJzIG9yIGJpbGwgc3RyYXBzIzQ0LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE2LjA1LjAwI0Nhc2ggb3IgdGlja2V0IGJveGVzIzQ0LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE2LjA2LjAwI0Nhc2ggYm94IHRyYXlzIzQ0LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE2LjA3LjAwI0NoZWNrIGZpbGVzIzQ0LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE2LjA4LjAwI0NvaW4gYmFua3MjNDQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTYuMDkuMDAjQ291bnRlcmZlaXQgYmlsbCBkZXRlY3RvcnMgb3Igc3VwcGxpZXMjNDQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTguMDAuMDAjRHJhZnRpbmcgc3VwcGxpZXMjNDQuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTguMDEuMDAjU3RlbmNpbHMgb3IgbGV0dGVyaW5nIGFpZHMjNDQuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTguMDIuMDAjRHJhZnRpbmcgZmlsbXMjNDQuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTguMDMuMDAjQ29tcGFzc2VzIzQ0LjExLjE4LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE4LjA0LjAwI0RyYWZ0aW5nIHBhcGVycyM0NC4xMS4xOC4wMC4wMAotdW5zcHNjNyM0NC4xMS4xOC4wNS4wMCNDdXJ2ZXMjNDQuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTguMDYuMDAjUHJvdHJhY3RvcnMjNDQuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTguMDcuMDAjU2NhbGVzIzQ0LjExLjE4LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE4LjA4LjAwI1Qgc3F1YXJlcyM0NC4xMS4xOC4wMC4wMAotdW5zcHNjNyM0NC4xMS4xOC4wOS4wMCNUZW1wbGF0ZXMjNDQuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTguMTAuMDAjVHJpYW5nbGVzIzQ0LjExLjE4LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE4LjExLjAwI0NvbG9yIGNoYXJ0cyM0NC4xMS4xOC4wMC4wMAotdW5zcHNjNyM0NC4xMS4xOC4xMi4wMCNEcmFmdGluZyBraXRzIG9yIHNldHMjNDQuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTguMTMuMDAjRHJhZnRpbmcgZG90cyBvciB0YXBlcyM0NC4xMS4xOC4wMC4wMAotdW5zcHNjNyM0NC4xMS4xOS4wMC4wMCNCb2FyZHMjNDQuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTkuMDEuMDAjUGxhbm5pbmcgYm9hcmRzIG9yIGFjY2Vzc29yaWVzIzQ0LjExLjE5LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE5LjAyLjAwI0VsZWN0cm9uaWMgY29weWJvYXJkcyBvciBhY2Nlc3NvcmllcyM0NC4xMS4xOS4wMC4wMAotdW5zcHNjNyM0NC4xMS4xOS4wMy4wMCNFYXNlbHMgb3IgYWNjZXNzb3JpZXMjNDQuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTkuMDQuMDAjTGV0dGVyIGJvYXJkcyBvciBhY2Nlc3NvcmllcyM0NC4xMS4xOS4wMC4wMAotdW5zcHNjNyM0NC4xMS4xOS4wNS4wMCNEcnkgZXJhc2UgYm9hcmRzIG9yIGFjY2Vzc29yaWVzIzQ0LjExLjE5LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE5LjA2LjAwI0NoYWxrIGJvYXJkcyBvciBhY2Nlc3NvcmllcyM0NC4xMS4xOS4wMC4wMAotdW5zcHNjNyM0NC4xMS4xOS4wNy4wMCNCdWxsZXRpbiBib2FyZHMgb3IgYWNjZXNzb3JpZXMjNDQuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMTkuMDguMDAjTWFnbmV0aWMgYm9hcmRzIG9yIGFjY2Vzc29yaWVzIzQ0LjExLjE5LjAwLjAwCi11bnNwc2M3IzQ0LjExLjE5LjA5LjAwI0JvYXJkIGNsZWFuaW5nIGtpdHMgb3IgYWNjZXNzb3JpZXMjNDQuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMjAuMDAuMDAjUGxhbm5pbmcgc3lzdGVtcyM0NC4xMS4wMC4wMC4wMAotdW5zcHNjNyM0NC4xMS4yMC4wMS4wMCNBZGRyZXNzIGJvb2tzIG9yIHJlZmlsbHMjNDQuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMjAuMDIuMDAjQ2FsZW5kYXJzIzQ0LjExLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjExLjIwLjA0LjAwI01lZXRpbmcgcGxhbm5lcnMjNDQuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMjAuMDUuMDAjQXBwb2ludG1lbnQgYm9va3Mgb3IgcmVmaWxscyM0NC4xMS4yMC4wMC4wMAotdW5zcHNjNyM0NC4xMS4yMC4wNi4wMCNEaWFyaWVzIG9yIHJlZmlsbHMjNDQuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMjAuMDcuMDAjU3VnZ2VzdGlvbiBib3gjNDQuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTEuMjAuMDguMDAjV2FsbCBwbGFubmVycyBvciByZWZpbGxzIzQ0LjExLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjAwLjAwLjAwI09mZmljZSBzdXBwbGllcyM0NC4wMC4wMC4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNS4wMC4wMCNNYWlsaW5nIHN1cHBsaWVzIzQ0LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE1LjAxLjAwI01haWxlciB0dWJlcyM0NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNS4wMy4wMCNNYWlsZXJzIzQ0LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE1LjA0LjAwI1dpbmRvdyBlbnZlbG9wZXMjNDQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTUuMDUuMDAjU3BlY2lhbHR5IGVudmVsb3BlcyM0NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNS4wNi4wMCNTdGFuZGFyZCBlbnZlbG9wZXMjNDQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTUuMDcuMDAjQ2F0YWxvZyBvciBjbGFzcCBlbnZlbG9wZXMjNDQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTUuMDguMDAjTWVzc2FnZSBkcm9wcGVycyM0NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNS4wOS4wMCNNYWlsaW5nIGJhZ3MjNDQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTUuMTAuMDAjTWFpbGluZyBzZWFscyM0NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNS4xMS4wMCNNYWlsaW5nIGJveGVzIzQ0LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE2LjAwLjAwI0Rlc2sgc3VwcGxpZXMjNDQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMDQuMDAjU3RhbXBzIzQ0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE2LjA1LjAwI1RhcGUgZGlzcGVuc2VycyM0NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNi4wNi4wMCNGaW5nZXIgc3RhbGxzIzQ0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE2LjExLjAwI1BhcGVyIG9yIGV5ZWxldCBwdW5jaGVzIzQ0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE2LjEyLjAwI1BhcGVyIGN1dHRlcnMgb3IgcmVmaWxscyM0NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNi4xMy4wMCNTdGFwbGUgcmVtb3ZlcnMjNDQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMTQuMDAjQ2FsbCBiZWxscyM0NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNi4xNS4wMCNTdGFwbGVycyM0NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNi4xNy4wMCNNYW51YWwgbGV0dGVyIG9wZW5lcnMjNDQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMTguMDAjU2Npc3NvcnMjNDQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMTkuMDAjUGVuY2lsIHNoYXJwZW5lcnMjNDQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMjAuMDAjRmluZ2VyIHN0YWxscyM0NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNi4yMS4wMCNEZXNrIHBhZHMjNDQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMjIuMDAjTW9pc3RlbmVycyM0NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNi4yMy4wMCNNZWNoYW5pY2FsIGxldHRlciBvcGVuZXIjNDQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMjQuMDAjRW1ib3NzaW5nIHRvb2xzIzQ0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE2LjI1LjAwI1BhcGVyIHdlaWdodHMjNDQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMjYuMDAjQWRoZXNpdmUgcmVtb3ZlciM0NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNi4yNy4wMCNCb29rbWFya3MjNDQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMjguMDAjQ2xpcCBob2xkZXJzIG9yIGRpc3BlbnNlcnMjNDQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTYuMjkuMDAjUGFwZXIgY2xpcCBkaXNwZW5zZXIgb3IgaG9sZGVyIzQ0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE2LjMwLjAwI1N0YXBsZXIga2l0IzQ0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE2LjMxLjAwI0dsdWUgZGlzcGVuc2VycyBvciByZWZpbGxzIzQ0LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE3LjAwLjAwI1dyaXRpbmcgaW5zdHJ1bWVudHMjNDQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTcuMDEuMDAjUm9sbGVyYmFsbCBwZW5zIzQ0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE3LjAyLjAwI1BlbiBvciBwZW5jaWwgc2V0cyM0NC4xMi4xNy4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNy4wMy4wMCNGb3VudGFpbiBwZW5zIzQ0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE3LjA0LjAwI0JhbGwgcG9pbnQgcGVucyM0NC4xMi4xNy4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNy4wNS4wMCNNZWNoYW5pY2FsIHBlbmNpbHMjNDQuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTcuMDYuMDAjV29vZGVuIHBlbmNpbHMjNDQuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTcuMDcuMDAjQ29sb3JlZCBwZW5jaWxzIzQ0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE3LjA4LjAwI01hcmtlcnMjNDQuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTcuMDkuMDAjQ3JheW9ucyM0NC4xMi4xNy4wMC4wMAotdW5zcHNjNyM0NC4xMi4xNy4xMC4wMCNXcml0aW5nIGNoYWxrIG9yIGFjY2Vzc29yaWVzIzQ0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE3LjExLjAwI0ZlbHQgcGVuIzQ0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE3LjEyLjAwI01hcmtlciByZWZpbGxzIzQ0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE3LjEzLjAwI1BlbiBuaWJzIzQ0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE3LjE0LjAwI1BlbmNpbCBvciBwZW4gZ3JpcHMjNDQuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTcuMTUuMDAjQ29tYmluYXRpb24gcGVuIG9yIHBlbmNpbCM0NC4xMi4xNy4wMC4wMAotdW5zcHNjNyM0NC4xMi4xOC4wMC4wMCNDb3JyZWN0aW9uIG1lZGlhIzQ0LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE4LjAxLjAwI0NvcnJlY3Rpb24gZmlsbSBvciB0YXBlIzQ0LjEyLjE4LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE4LjAyLjAwI0NvcnJlY3Rpb24gZmx1aWQjNDQuMTIuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTguMDQuMDAjRXJhc2VycyM0NC4xMi4xOC4wMC4wMAotdW5zcHNjNyM0NC4xMi4xOC4wNS4wMCNDb3JyZWN0aW9uIHBlbnMjNDQuMTIuMTguMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTguMDYuMDAjQ29ycmVjdGlvbiBwZW4gcmVmaWxscyM0NC4xMi4xOC4wMC4wMAotdW5zcHNjNyM0NC4xMi4xOC4wNy4wMCNFcmFzZXIgcmVmaWxscyM0NC4xMi4xOC4wMC4wMAotdW5zcHNjNyM0NC4xMi4xOS4wMC4wMCNJbmsgYW5kIGxlYWQgcmVmaWxscyM0NC4xMi4wMC4wMC4wMAotdW5zcHNjNyM0NC4xMi4xOS4wMS4wMCNJbmRpYSBpbmsjNDQuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMTkuMDIuMDAjTGVhZCByZWZpbGxzIzQ0LjEyLjE5LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE5LjAzLjAwI1BlbiByZWZpbGxzIzQ0LjEyLjE5LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE5LjA0LjAwI0luayByZWZpbGxzIzQ0LjEyLjE5LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjE5LjA1LjAwI0luayBvciBzdGFtcCBwYWRzIzQ0LjEyLjE5LjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjAwLjAwI0ZvbGRlcnMgYW5kIGJpbmRlcnMgYW5kIGluZGV4ZXMjNDQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjAuMDEuMDAjSW5kZXggY2FyZCBmaWxlcyM0NC4xMi4yMC4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMC4wMi4wMCNTaGVldCBwcm90ZWN0b3JzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjAzLjAwI0JpbmRlcnMjNDQuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjAuMDQuMDAjRGF0YSBiaW5kZXJzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjA1LjAwI01hZ2F6aW5lIG9yIGJvb2sgY292ZXJzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjA2LjAwI0hhbmdpbmcgZmlsZSBmb2xkZXJzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjA3LjAwI1ByZXNlbnRhdGlvbiBiaW5kZXJzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjA4LjAwI1RhYiBpbmRleGVzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjA5LjAwI1JvdGFyeSBvciBidXNpbmVzcyBjYXJkIGZpbGVzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjEwLjAwI0RpdmlkZXJzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjExLjAwI0ZvbGRlcnMjNDQuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjAuMTIuMDAjQ2xpcGJvYXJkcyM0NC4xMi4yMC4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMC4xMy4wMCNSZXBvcnQgY292ZXJzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjE0LjAwI1NoZWV0IGxpZnRlcnMjNDQuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjAuMTUuMDAjRmlsZSBiYWNrZXJzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjE2LjAwI0RvY3VtZW50IGhvbGRlciM0NC4xMi4yMC4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMC4xNy4wMCNIYW5naW5nIGZvbGRlcnMgb3IgYWNjZXNzb3JpZXMjNDQuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjAuMTguMDAjRmlsZSBpbnNlcnRzIG9yIHRhYnMjNDQuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjAuMTkuMDAjRmlsZSBwb2NrZXRzIG9yIGFjY2Vzc29yaWVzIzQ0LjEyLjIwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIwLjIwLjAwI0NhcmQgcG9ja2V0cyM0NC4xMi4yMC4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMC4yMS4wMCNQb3N0YWdlIHN0YW1wIGFsYnVtcyM0NC4xMi4yMC4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMC4yMi4wMCNCaW5kaW5nIGJhcnMjNDQuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjEuMDAuMDAjRmFzdGVuaW5nIHN1cHBsaWVzIzQ0LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIxLjAxLjAwI1J1YmJlciBiYW5kcyM0NC4xMi4yMS4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMS4wMi4wMCNQcm9uZ3MjNDQuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjEuMDMuMDAjQ2xhc3AgZmFzdGVuZXJzIzQ0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIxLjA0LjAwI1BhcGVyIGNsaXBzIzQ0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIxLjA1LjAwI0JpbmRlciBvciBidWxsZG9nIGNsaXBzIzQ0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIxLjA2LjAwI1BpbnMgb3IgdGFja3MjNDQuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjEuMDcuMDAjU3RhcGxlcyM0NC4xMi4yMS4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMS4wOC4wMCNGaWxpbmcgcG9ja2V0cyM0NC4xMi4yMS4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMS4wOS4wMCNWZWxjcm8gZmFzdGVuZXJzIzQ0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIxLjEwLjAwI0FkaGVzaXZlIG1vdW50cyM0NC4xMi4yMS4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMS4xMS4wMCNIb2xlIHJlaW5mb3JjZW1lbnRzIzQ0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIxLjEyLjAwI1JvdW5kIGhlYWQgZmFzdGVuZXJzIzQ0LjEyLjIxLjAwLjAwCi11bnNwc2M3IzQ0LjEyLjIxLjEzLjAwI1RhZyBmYXN0ZW5lcnMjNDQuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjEuMTQuMDAjU2NyZXcgcG9zdHMjNDQuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjEuMTUuMDAjQWRoZXNpdmUgY29ybmVycyM0NC4xMi4yMS4wMC4wMAotdW5zcHNjNyM0NC4xMi4yMS4xNi4wMCNCYWcgY2xpcHMjNDQuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNDQuMTIuMjEuMTcuMDAjQm9vayByaW5ncyM0NC4xMi4yMS4wMC4wMAotdW5zcHNjNyM0NS4wMC4wMC4wMC4wMCNQcmludGluZyBhbmQgUGhvdG9ncmFwaGljIGFuZCBBdWRpbyBhbmQgVmlzdWFsIEVxdWlwbWVudCBhbmQgU3VwcGxpZXMjNDUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMDAuMDAuMDAjUHJpbnRpbmcgYW5kIHB1Ymxpc2hpbmcgZXF1aXBtZW50IzQ1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE1LjAwLjAwI1ByaW50aW5nIG1hY2hpbmVyeSBhbmQgZXF1aXBtZW50IzQ1LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE1LjAxLjAwI0hlbGlvZ3JhcGhpYyBwcmludGVycyM0NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNS4wMi4wMCNPZmZzZXQgcHJpbnRpbmcgcHJlc3NlcyM0NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNS4wMy4wMCNMZXR0ZXJwcmVzcyBlcXVpcG1lbnQjNDUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTUuMDQuMDAjTGl0aG9ncmFwaGljIGVxdWlwbWVudCM0NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNS4wNS4wMCNQaG90b2dyYXZ1cmUgcHJpbnRpbmcgbWFjaGluZXMjNDUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTUuMDYuMDAjU2lsayBzY3JlZW4gcHJpbnRpbmcgbWFjaGluZXMjNDUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTUuMDcuMDAjUHJpbnRpbmcgcHJlc3NlcyM0NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNS4wOC4wMCNQZXJmb3JhdGluZyBtYWNoaW5lcyM0NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNS4wOS4wMCNVbHRyYXZpb2xldCAoVVYpIHJvdGFyeSBwcmludGVyIzQ1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE1LjEwLjAwI0ZsZXhvZ3JhcGhpYyBwcmludGVyIzQ1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE1LjExLjAwI0lua2pldCBwcmludGVyIGZvciBjb21tZXJjaWFsIHByaW50aW5nIGFwcGxpY2F0aW9ucyM0NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNS4xMi4wMCNUaGVybWFsIHRyYW5zZmVyIHByaW50ZXIgZm9yIGNvbW1lcmNpYWwgcHJpbnRpbmcgYXBwbGljYXRpb25zIzQ1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE1LjEzLjAwI0hvdCBzdGFtcCBwcmludGVyIzQ1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE1LjE0LjAwI1BhZCBwcmludGVyIzQ1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE1LjE1LjAwI0NvcmUgcHJpbnRlciM0NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNi4wMC4wMCNQcmludGluZyBtYWNoaW5lcnkgYWNjZXNzb3JpZXMjNDUuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTYuMDIuMDAjT2Zmc2V0IGRhcmtyb29tIGVxdWlwbWVudCM0NS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNi4wMy4wMCNPZmZzZXQgcHJpbnRpbmcgY29uc3VtYWJsZXMjNDUuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTYuMDQuMDAjT2Zmc2V0IHByaW50aW5nIHBsYXRlIHByb2Nlc3NvcnMjNDUuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTYuMDUuMDAjT2Zmc2V0IHBsYXRlcyM0NS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNi4wNi4wMCNPZmZzZXQgZmlsbSBwcm9jZXNzb3JzIzQ1LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE2LjA3LjAwI1NpbGsgc2NyZWVuIGFyYyBsYW1wcyM0NS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNi4wOC4wMCNTaWxrIHNjcmVlbiBzY3JlZW5zIzQ1LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE2LjA5LjAwI1NpbGsgc2NyZWVuIHByaW50aW5nIHJhY2tzIzQ1LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE2LjEwLjAwI1NpbGsgc2NyZWVuIHZhY3V1bSBwcmludGluZyBmcmFtZXMjNDUuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTYuMTEuMDAjU2lsayBzY3JlZW4gc3F1ZWVnZWVzIzQ1LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE3LjAwLjAwI1ByaW50aW5nIGFjY2Vzc29yaWVzIzQ1LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE3LjAxLjAwI1ByaW50aW5nIGFzc2VtYmxlcnMjNDUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTcuMDIuMDAjUHJpbnRpbmcgZ3VpbGxvdGluZXMjNDUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTcuMDMuMDAjUHJpbnRpbmcgY29sbGF0b3JzIG9yIGRlY29sbGF0b3JzIzQ1LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE3LjA0LjAwI1ByaW50aW5nIGN1dHRlcnMjNDUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTcuMDUuMDAjUHJpbnRpbmcgdHJpbW1lcnMjNDUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTcuMDYuMDAjUHJpbnRpbmcgcHVuY2hlcyM0NS4xMC4xNy4wMC4wMAotdW5zcHNjNyM0NS4xMC4xNy4wNy4wMCNQcmludGluZyBwbGF0ZXMjNDUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTcuMDguMDAjUHJpbnRpbmcgYXdscyM0NS4xMC4xNy4wMC4wMAotdW5zcHNjNyM0NS4xMC4xOC4wMC4wMCNCb29rIGJpbmRpbmcgYW5kIHNld2luZyBtYWNoaW5lcnkjNDUuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTguMDEuMDAjQm9vayBjcmVhc2luZyBtYWNoaW5lcyM0NS4xMC4xOC4wMC4wMAotdW5zcHNjNyM0NS4xMC4xOC4wMi4wMCNCb29rIGN1dHRpbmcgbWFjaGluZXMjNDUuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTguMDMuMDAjQm9vayBwdW5jaGluZyBtYWNoaW5lcyM0NS4xMC4xOC4wMC4wMAotdW5zcHNjNyM0NS4xMC4xOC4wNC4wMCNCb29rIHN0aXRjaGluZyBtYWNoaW5lcyM0NS4xMC4xOC4wMC4wMAotdW5zcHNjNyM0NS4xMC4xOC4wNS4wMCNCb29rIGpvZ2dpbmcgbWFjaGluZXMjNDUuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTguMDYuMDAjQm9vayBnYXRoZXJpbmcgbWFjaGluZXMjNDUuMTAuMTguMDAuMDAKLXVuc3BzYzcjNDUuMTAuMTguMDcuMDAjQm9vayBmb2xkaW5nIG1hY2hpbmVzIzQ1LjEwLjE4LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE5LjAwLjAwI1ByaW50aW5nIGxhYm9yYXRvcnkgZXF1aXBtZW50IGFuZCBhY2Nlc3NvcmllcyM0NS4xMC4wMC4wMC4wMAotdW5zcHNjNyM0NS4xMC4xOS4wMS4wMCNCYW5kaW5nIG1hY2hpbmVzIzQ1LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE5LjAyLjAwI1BsYXRlbWFrZXJzIzQ1LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE5LjAzLjAwI1BhcGVyIGRyaWxsaW5nIG1hY2hpbmVzIzQ1LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjE5LjA0LjAwI0VubGFyZ2VycyM0NS4xMC4xOS4wMC4wMAotdW5zcHNjNyM0NS4xMC4xOS4wNS4wMCNEcmF3aW5nIG9yIHJldG91Y2hpbmcgYm9hcmRzIzQ1LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ1LjEwLjIwLjAwLjAwI0NvbXBvc2luZyBtYWNoaW5lcyBhbmQgYWNjZXNzb3JpZXMjNDUuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMjAuMDEuMDAjSW50ZXJ0eXBlIGNvbXBvc2luZyBtYWNoaW5lcyM0NS4xMC4yMC4wMC4wMAotdW5zcHNjNyM0NS4xMC4yMC4wMi4wMCNMaW5vdHlwZSBjb21wb3NpbmcgbWFjaGluZXMjNDUuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMjAuMDMuMDAjUGhvdG9jb21wb3NpdGlvbiBtYXRlcmlhbHMjNDUuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDUuMTAuMjAuMDQuMDAjTW9ub3R5cGUgY29tcG9zaW5nIG1hY2hpbmVzIzQ1LjEwLjIwLjAwLjAwCi11bnNwc2M3IzQ1LjEwLjIwLjA1LjAwI1Bob3RvdHlwZXNldHRpbmcgbWFjaGluZXMjNDUuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDUuMTEuMDAuMDAuMDAjQXVkaW8gYW5kIHZpc3VhbCBwcmVzZW50YXRpb24gZXF1aXBtZW50IzQ1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ1LjExLjE1LjAwLjAwI0xlY3Rlcm5zIGFuZCBzb3VuZCBzeXN0ZW1zIGFuZCBhY2Nlc3NvcmllcyM0NS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNS4wMS4wMCNGcmVlIHN0YW5kaW5nIGxlY3Rlcm5zIzQ1LjExLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE1LjAyLjAwI1RhYmxlIHRvcCBsZWN0ZXJucyM0NS4xMS4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNi4wMC4wMCNQcm9qZWN0b3JzIGFuZCBzdXBwbGllcyM0NS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNi4wMS4wMCNQb2ludGVycyM0NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNi4wMi4wMCNQcm9qZWN0aW9uIGJ1bGJzIzQ1LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE2LjAzLjAwI1Byb2plY3Rpb24gc2NyZWVucyM0NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNi4wNC4wMCNTbGlkZSBwcm9qZWN0b3JzIzQ1LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE2LjA1LjAwI1RyYW5zcGFyZW5jeSBlcXVpcG1lbnQgb3Igc3VwcGxpZXMjNDUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTEuMTYuMDYuMDAjTGlxdWlkIGNyeXN0YWwgZGlzcGxheSBwcm9qZWN0aW9uIHBhbmVscyM0NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNi4wNy4wMCNPdmVyaGVhZCBwcm9qZWN0b3JzIzQ1LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE2LjA4LjAwI0ZpbG0gcHJvamVjdG9ycyM0NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNi4wOS4wMCNDb21wdXRlciBzY3JlZW4gcHJvamVjdG9yIzQ1LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE2LjEwLjAwI0VwaWRpYXNjb3BlcyM0NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNi4xMS4wMCNNaWNyb2ZpY2hlIG9yIG1pY3JvZmlsbSB2aWV3ZXJzIzQ1LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE2LjEyLjAwI0Rpc3NvbHZlIGNvbnRyb2xzIzQ1LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE2LjEzLjAwI0NhdGhvZGUgcmF5IHR1YmUgZGF0YSM0NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNi4xNC4wMCNMaXF1aWQgY3J5c3RhbCBkaXNwbGF5IGRhdGEgb3IgdmlkZW8gcHJvamVjdG9yIzQ1LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE2LjE1LjAwI1Byb2plY3Rpb24gbGVuc2VzIzQ1LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE2LjE2LjAwI1ZpZGVvIHByb2plY3RvcnMjNDUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTEuMTYuMTguMDAjUHJlc2VudGF0aW9uIGxpZ2h0IGJveGVzIzQ1LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE3LjAwLjAwI0F1ZGlvIHByZXNlbnRhdGlvbiBlcXVpcG1lbnQgYW5kIGhhcmR3YXJlIGFuZCBjb250cm9sbGVycyM0NS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNy4wMS4wMCNBc3Npc3RpdmUgbGlzdGVuaW5nIGRldmljZXMjNDUuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDUuMTEuMTcuMDIuMDAjQXVkaW8gamFjayBib3hlcyM0NS4xMS4xNy4wMC4wMAotdW5zcHNjNyM0NS4xMS4xNy4wMy4wMCNMaXN0ZW5pbmcgY2VudGVycyM0NS4xMS4xNy4wMC4wMAotdW5zcHNjNyM0NS4xMS4xOC4wMC4wMCNWaWRlbyBhbmQgY29tYmluYXRpb24gdmlkZW8gYW5kIGF1ZGlvIHByZXNlbnRhdGlvbiBlcXVpcG1lbnQgYW5kIGhhcmR3YXJlIGFuZCBjb250cm9sbGVycyM0NS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0NS4xMS4xOC4wMS4wMCNNZWRpYSBjb250cm9sIHN5c3RlbXMjNDUuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDUuMTEuMTguMDIuMDAjVGVsZXZpc2lvbiBtb3VudHMjNDUuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDUuMTEuMTguMDMuMDAjU2NhbiBjb252ZXJ0ZXJzIzQ1LjExLjE4LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE4LjA0LjAwI0xpbmUgZG91YmxlcnMjNDUuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDUuMTEuMTguMDUuMDAjVmlkZW8gZWRpdG9ycyM0NS4xMS4xOC4wMC4wMAotdW5zcHNjNyM0NS4xMS4xOC4wNi4wMCNEaXN0YW5jZSBsZWFybmluZyBzeXN0ZW1zIzQ1LjExLjE4LjAwLjAwCi11bnNwc2M3IzQ1LjExLjE4LjA3LjAwI0ludGVyZmFjZXMjNDUuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDUuMTEuMTguMDguMDAjTGlnaHRpbmcgY29udHJvbHMjNDUuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDUuMTEuMTkuMDAuMDAjUGhvbmUgYW5kIHZpZGVvIGNvbmZlcmVuY2UgZXF1aXBtZW50IGFuZCBoYXJkd2FyZSBhbmQgY29udHJvbGxlcnMjNDUuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDUuMTEuMTkuMDEuMDAjQXVkaW9jb25mZXJlbmNpbmcgc3lzdGVtcyM0NS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0NS4xMS4xOS4wMi4wMCNWaWRlb2NvbmZlcmVuY2luZyBzeXN0ZW1zIzQ1LjExLjE5LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjAwLjAwLjAwI1Bob3RvZ3JhcGhpYyBlcXVpcG1lbnQjNDUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTUuMDAuMDAjQ2FtZXJhcyM0NS4xMi4wMC4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNS4wMS4wMCNTdGlsbCBjYW1lcmFzIzQ1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE1LjAyLjAwI0luc3RhbnQgcHJpbnQgY2FtZXJhcyM0NS4xMi4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNS4wMy4wMCNEaXNwb3NhYmxlIGNhbWVyYXMjNDUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTUuMDQuMDAjRGlnaXRhbCBjYW1lcmFzIzQ1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE1LjA1LjAwI0NpbmVtYXRvZ3JhcGhpYyBjYW1lcmFzIzQ1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE1LjA2LjAwI1ZpZGVvIGNvbmZlcmVuY2UgY2FtZXJhcyM0NS4xMi4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNS4wOC4wMCNNaWNyb2ZpbG0gY2FtZXJhcyM0NS4xMi4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNS4xMC4wMCNBZXJpYWwgY2FtZXJhcyM0NS4xMi4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNS4xMS4wMCNIaWdoIHNwZWVkIGNhbWVyYXMjNDUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTUuMTIuMDAjVW5kZXJ3YXRlciBjYW1lcmFzIzQ1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE1LjEzLjAwI09mZnNldCBjYW1lcmFzIzQ1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE1LjE0LjAwI1Bob3RvY29waWVyIGNhbWVyYXMjNDUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTUuMTUuMDAjSGFuZCBoZWxkIGNhbWNvcmRlcnMjNDUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTUuMTYuMDAjRGlnaXRhbCBjYW1jb3JkZXIjNDUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTUuMTcuMDAjRG9jdW1lbnQgY2FtZXJhIzQ1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE1LjE4LjAwI0NhbWVyYSBraXRzIzQ1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE2LjAwLjAwI0NhbWVyYSBhY2Nlc3NvcmllcyM0NS4xMi4wMC4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNi4wMS4wMCNDYW1lcmEgZmxhc2hlcyBvciBsaWdodGluZyM0NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNi4wMi4wMCNDYW1lcmEgdHJpcG9kcyM0NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNi4wMy4wMCNDYW1lcmEgbGVuc2VzIG9yIGZpbHRlcnMjNDUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTYuMDQuMDAjQ2FtZXJhIHNodXR0ZXJzIzQ1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE2LjA1LjAwI1NjcmVlbiBmcmFtZXMjNDUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTYuMDYuMDAjQ2FtZXJhIGhhcm5lc3NlcyM0NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNi4wNy4wMCNDYW1lcmEgYmxvY2tzIG9yIGhvbGRlcnMjNDUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTYuMDguMDAjQ2FtZXJhIGFzc2VtYmxpZXMjNDUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTYuMDkuMDAjQ2FtZXJhIGJyYWNrZXRzIzQ1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE2LjEwLjAwI0NhbWVyYSBjYWJsZXMjNDUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTYuMTEuMDAjTGVucyBjb3ZlciM0NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNi4xMi4wMCNDYW1lcmEgdGFibGVzIzQ1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE2LjEzLjAwI0NhbWVyYSBlbmNsb3N1cmVzIG9yIGNvdmVycyM0NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNi4xNC4wMCNSZXRyb2ZpdCBraXRzIzQ1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE2LjE1LjAwI0NhbWVyYSByaW5ncyM0NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNi4xNi4wMCNQYW4gaGVhZHMjNDUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTIuMTcuMDAuMDAjUGhvdG9ncmFwaGljIHByb2Nlc3NpbmcgZXF1aXBtZW50IzQ1LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE3LjAxLjAwI0ZpbG0gZHJpZXJzIzQ1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE3LjAyLjAwI0ZpbG0gd2FzaGVycyM0NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNy4wMy4wMCNGaWxtIHNwbGljZXJzIzQ1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ1LjEyLjE3LjA0LjAwI0ZpbG0gZWRpdG9ycyM0NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM0NS4xMi4xNy4wNS4wMCNQaG90b2dyYXBoaWMgZW5sYXJnZXJzIzQ1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzQ1LjEzLjAwLjAwLjAwI1Bob3RvZ3JhcGhpYyBhbmQgcmVjb3JkaW5nIG1lZGlhIzQ1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ1LjEzLjE1LjAwLjAwI1N0aWxsIHBpY3R1cmUgZmlsbSM0NS4xMy4wMC4wMC4wMAotdW5zcHNjNyM0NS4xMy4xNS4wMS4wMCNDb2xvciBmaWxtIzQ1LjEzLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEzLjE1LjAyLjAwI0JsYWNrIGFuZCB3aGl0ZSBmaWxtIzQ1LjEzLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEzLjE1LjAzLjAwI0luc3RhbnQgcGljdHVyZSBmaWxtIzQ1LjEzLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEzLjE1LjA0LjAwI01pY3JvZmlsbSM0NS4xMy4xNS4wMC4wMAotdW5zcHNjNyM0NS4xMy4xNS4wNS4wMCNYIHJheSBmaWxtIzQ1LjEzLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEzLjE1LjA2LjAwI1Bob3RvZ3JhcGh5IHBhcGVyIzQ1LjEzLjE1LjAwLjAwCi11bnNwc2M3IzQ1LjEzLjE2LjAwLjAwI01vdmluZyBwaWN0dXJlIG1lZGlhIzQ1LjEzLjAwLjAwLjAwCi11bnNwc2M3IzQ1LjEzLjE2LjAxLjAwI01vdGlvbiBwaWN0dXJlIGNhbWVyYSBmaWxtIzQ1LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEzLjE2LjA0LjAwI0JsYW5rIHZpZGVvIHRhcGVzIzQ1LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ1LjEzLjE3LjAwLjAwI01lZGlhIHN0b3JhZ2UjNDUuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNDUuMTMuMTcuMDEuMDAjU2xpZGUgdHJheXMjNDUuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNDUuMTQuMDAuMDAuMDAjUGhvdG9ncmFwaGljIGZpbG1tYWtpbmcgc3VwcGxpZXMjNDUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDUuMTQuMTUuMDAuMDAjUGhvdG9ncmFwaGljIHByb2Nlc3NpbmcgY2hlbWljYWxzIzQ1LjE0LjAwLjAwLjAwCi11bnNwc2M3IzQ1LjE0LjE1LjAxLjAwI0RldmVsb3BlciBzb2x1dGlvbiM0NS4xNC4xNS4wMC4wMAotdW5zcHNjNyM0NS4xNC4xNS4wMi4wMCNGaXhhdGl2ZSM0NS4xNC4xNS4wMC4wMAotdW5zcHNjNyM0NS4xNC4xNi4wMC4wMCNEYXJrcm9vbSBzdXBwbGllcyM0NS4xNC4wMC4wMC4wMAotdW5zcHNjNyM0NS4xNC4xNi4wMS4wMCNEZXZlbG9waW5nIHRyYXlzIzQ1LjE0LjE2LjAwLjAwCi11bnNwc2M3IzQ1LjE0LjE2LjAyLjAwI0RldmVsb3BpbmcgdGFua3MjNDUuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDUuMTQuMTYuMDMuMDAjRGV2ZWxvcGluZyB0b25ncyM0NS4xNC4xNi4wMC4wMAotdW5zcHNjNyM0Ni4wMC4wMC4wMC4wMCNEZWZlbnNlIGFuZCBMYXcgRW5mb3JjZW1lbnQgYW5kIFNlY3VyaXR5IGFuZCBTYWZldHkgRXF1aXBtZW50IGFuZCBTdXBwbGllcyM0Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xMC4wMC4wMC4wMCNMaWdodCB3ZWFwb25zIGFuZCBhbW11bml0aW9uIzQ2LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjEwLjE1LjAwLjAwI0ZpcmVhcm1zIzQ2LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjEwLjE1LjAxLjAwI01hY2hpbmUgZ3VucyM0Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xMC4xNS4wMi4wMCNQb2xpY2Ugb3Igc2VjdXJpdHkgc2hvdGd1bnMjNDYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTAuMTUuMDMuMDAjTWlsaXRhcnkgcmlmbGVzIzQ2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEwLjE1LjA0LjAwI0hhbmRndW5zIzQ2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEwLjE1LjA1LjAwI0FpciByaWZsZXMgb3IgYWlyIGhhbmRndW5zIzQ2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEwLjE1LjA2LjAwI1BhcnRzIG9mIGd1bnMgb3IgcGlzdG9scyM0Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xMC4xNi4wMC4wMCNBbW11bml0aW9uIzQ2LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjEwLjE2LjAxLjAwI0RlZmVuc2Ugb3IgbGF3IGVuZm9yY2VtZW50IGFtbXVuaXRpb24jNDYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTAuMTcuMDAuMDAjQW1tdW5pdGlvbiBoYW5kbGluZyBzeXN0ZW1zIzQ2LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjEwLjE3LjAxLjAwI1RhbmsgYW1tdW5pdGlvbiBoYW5kbGluZyBzeXN0ZW1zIzQ2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ2LjEwLjE3LjAyLjAwI0FpcmNyYWZ0IGFtbXVuaXRpb24gaGFuZGxpbmcgc3lzdGVtcyM0Ni4xMC4xNy4wMC4wMAotdW5zcHNjNyM0Ni4xMC4xOC4wMC4wMCNBcm1zIGFuZCBhbW11bml0aW9uIGFjY2Vzc29yaWVzIzQ2LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjEwLjE4LjAxLjAwI0d1biBjYXNlcyM0Ni4xMC4xOC4wMC4wMAotdW5zcHNjNyM0Ni4xMS4wMC4wMC4wMCNDb252ZW50aW9uYWwgd2FyIHdlYXBvbnMjNDYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTEuMTUuMDAuMDAjQm9tYnMgYW5kIGdyZW5hZGVzIzQ2LjExLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjExLjE1LjAxLjAwI0dyZW5hZGVzIzQ2LjExLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjExLjE1LjAyLjAwI01pbmVzIzQ2LjExLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjExLjE1LjAzLjAwI01vcnRhciBib21icyM0Ni4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xMS4xNi4wMC4wMCNHdW4gc3lzdGVtcyM0Ni4xMS4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xMS4xNi4wMS4wMCNDaGFpbiBndW4gc3lzdGVtcyM0Ni4xMS4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xMS4xNi4wMi4wMCNHYXRsaW5nIGd1biBzeXN0ZW1zIzQ2LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ2LjExLjE3LjAwLjAwI0luZnJhcmVkIChJUikgc2Vuc29ycyM0Ni4xMS4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xMS4xNy4wMS4wMCNJbmZyYXJlZCAoSVIpIGNvb2xlcnMjNDYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDYuMTEuMTcuMDIuMDAjSW5mcmFyZWQgKElSKSBkZXRlY3RvcnMjNDYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDYuMTEuMTguMDAuMDAjTmF2YWwgd2VhcG9ucyM0Ni4xMS4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xMS4xOC4wMS4wMCNUb3JwZWRvZXMjNDYuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDYuMTIuMDAuMDAuMDAjTWlzc2lsZXMjNDYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTIuMTUuMDAuMDAjR3VpZGVkIG1pc3NpbGVzIzQ2LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjEyLjE1LjAxLjAwI0FpciB0byBhaXIgbWlzc2lsZXMjNDYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTIuMTUuMDIuMDAjQW50aWFpcmNyYWZ0IG1pc3NpbGVzIzQ2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEyLjE1LjAzLjAwI0FudGltaXNzaWxlIG1pc3NpbGVzIzQ2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEyLjE1LjA0LjAwI0FudGlzaGlwIG1pc3NpbGVzIzQ2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEyLjE1LjA1LjAwI0FudGl0YW5rIG1pc3NpbGVzIzQ2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEyLjE1LjA2LjAwI0JhbGxpc3RpYyBtaXNzaWxlcyM0Ni4xMi4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xMi4xNS4wNy4wMCNDcnVpc2UgbWlzc2lsZXMjNDYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTIuMTUuMDguMDAjU3VyZmFjZSB0byBhaXIgbWlzc2lsZXMjNDYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTIuMTUuMDkuMDAjQW50aWJhbGxpc3RpYyBtaXNzaWxlcyM0Ni4xMi4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xMi4xNS4xMC4wMCNTdXJmYWNlIHRvIHN1cmZhY2UgbWlzc2lsZXMjNDYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTIuMTUuMTEuMDAjQWlyIHRvIHN1cmZhY2UgbWlzc2lsZXMjNDYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTIuMTUuMTIuMDAjVHJhaW5pbmcgbWlzc2lsZXMjNDYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTIuMTYuMDAuMDAjTWlzc2lsZSBzdWJzeXN0ZW1zIzQ2LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjEyLjE2LjAxLjAwI0VsZWN0cm9uaWMgc2FmZSBvciBhcm0gZGV2aWNlcyM0Ni4xMi4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xMi4xNi4wMi4wMCNTb2xpZCBtaXNzaWxlIGJvb3N0ZXJzIzQ2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ2LjEyLjE2LjAzLjAwI01pc3NpbGUgd2FyaGVhZHMjNDYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTIuMTYuMDQuMDAjU2FmZXR5IHBpbiBwdWxsZXJzIzQ2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ2LjEyLjE2LjA1LjAwI0pldCByZWFjdGlvbiBjb250cm9sIGFzc2VtYmxpZXMjNDYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTMuMDAuMDAuMDAjUm9ja2V0cyBhbmQgc3Vic3lzdGVtcyM0Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xMy4xNS4wMC4wMCNMYXVuY2ggdmVoaWNsZXMgYW5kIHJvY2tldHMjNDYuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTMuMTUuMDEuMDAjTXVsdGkgc3RhZ2Ugcm9ja2V0cyM0Ni4xMy4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xMy4xNS4wMi4wMCNSZXVzYWJsZSByb2NrZXRzIzQ2LjEzLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEzLjE1LjAzLjAwI1NpbmdsZSBzdGFnZSByb2NrZXRzIzQ2LjEzLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEzLjE1LjA0LjAwI0xpcXVpZCByb2NrZXRzIzQ2LjEzLjE1LjAwLjAwCi11bnNwc2M3IzQ2LjEzLjE1LjA1LjAwI1NvbGlkIHJvY2tldHMjNDYuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTMuMTYuMDAuMDAjQm9vc3RlcnMjNDYuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTMuMTYuMDEuMDAjUmV1c2FibGUgYm9vc3RlcnMjNDYuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTMuMTYuMDIuMDAjU29saWQgYm9vc3RlcnMjNDYuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTMuMTYuMDMuMDAjTXVsdGkgc3RhZ2UgYm9vc3RlcnMjNDYuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTMuMTYuMDQuMDAjTGlxdWlkIGJvb3N0ZXJzIzQ2LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE0LjAwLjAwLjAwI0xhdW5jaGVycyM0Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xNC4xNS4wMC4wMCNNaXNzaWxlIGFuZCByb2NrZXQgbGF1bmNoZXJzIzQ2LjE0LjAwLjAwLjAwCi11bnNwc2M3IzQ2LjE0LjE1LjAxLjAwI01pc3NpbGUgbGF1bmNoZXJzIzQ2LjE0LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE0LjE1LjAyLjAwI1JvY2tldCBsYXVuY2hlcnMjNDYuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTUuMDAuMDAuMDAjTGF3IGVuZm9yY2VtZW50IzQ2LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjE1LjE1LjAwLjAwI0Nyb3dkIGNvbnRyb2wgZXF1aXBtZW50IzQ2LjE1LjAwLjAwLjAwCi11bnNwc2M3IzQ2LjE1LjE1LjAxLjAwI0JhcnJpY2FkZXMjNDYuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTUuMTUuMDIuMDAjUmlvdCBoZWxtZXRzIzQ2LjE1LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE1LjE1LjAzLjAwI1Jpb3Qgc2hpZWxkcyM0Ni4xNS4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNS4xNS4wNC4wMCNCb2R5IGFybW91ciM0Ni4xNS4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNS4xNS4wNS4wMCNCYXJyaWVycyM0Ni4xNS4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNS4xNi4wMC4wMCNTZWN1cml0eSBhbmQgY29udHJvbCBlcXVpcG1lbnQjNDYuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTUuMTYuMDEuMDAjSGFuZGN1ZmZzIzQ2LjE1LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE1LjE2LjAyLjAwI05pZ2h0IHN0aWNrcyM0Ni4xNS4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xNS4xNi4wMy4wMCNGaW5nZXJwcmludCBlcXVpcG1lbnQjNDYuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTUuMTYuMDQuMDAjQWxjb2hvbCBhbmFseXNlcnMjNDYuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTUuMTYuMDUuMDAjV2VhcG9ucyBvciBleHBsb3NpdmVzIGRldGVjdG9ycyM0Ni4xNS4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xNS4xNi4wNi4wMCNOYXJjb3RpYyB0ZXN0IGtpdHMjNDYuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTYuMDAuMDAuMDAjUHVibGljIHNhZmV0eSBhbmQgY29udHJvbCM0Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xNi4xNS4wMC4wMCNUcmFmZmljIGNvbnRyb2wjNDYuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTYuMTUuMDEuMDAjQWlycG9ydCBzaWduYWxpbmcgc3lzdGVtcyM0Ni4xNi4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNi4xNS4wMi4wMCNSYWlsd2F5IHNpZ25hbGluZyBzeXN0ZW1zIzQ2LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE2LjE1LjAzLjAwI01hcmluZSBzaWduYWxpbmcgc3lzdGVtcyM0Ni4xNi4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNi4xNS4wNC4wMCNUcmFmZmljIHNpZ25hbHMjNDYuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTYuMTUuMDUuMDAjUGFya2luZyBtZXRlcnMjNDYuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTYuMTUuMDYuMDAjU25vdyBvciBpY2UgbWVsdGVyIzQ2LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE2LjE1LjA3LjAwI0JhcnJpZXIgdGFwZSM0Ni4xNi4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNi4xNS4wOC4wMCNUcmFmZmljIG9yIGZsb29yIGNvbmVzIzQ2LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE2LjE1LjA5LjAwI1NwZWVkIHN0b3BwZXJzIzQ2LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE2LjE2LjAwLjAwI1dhdGVyIHNhZmV0eSM0Ni4xNi4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xNi4xNi4wMS4wMCNSb3BlIGZsb2F0IGxpbmVzIzQ2LjE2LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE2LjE2LjAyLjAwI0xpZmUgcmluZ3MjNDYuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTYuMTYuMDMuMDAjUG9vbCBhbGFybXMjNDYuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTYuMTYuMDQuMDAjTGlmZSB2ZXN0cyBvciBwcmVzZXJ2ZXJzIzQ2LjE2LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjAwLjAwLjAwI1NlY3VyaXR5IHN1cnZlaWxsYW5jZSBhbmQgZGV0ZWN0aW9uIzQ2LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE1LjAwLjAwI0xvY2tzIGFuZCBzZWN1cml0eSBoYXJkd2FyZSM0Ni4xNy4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNS4wMS4wMCNQYWRsb2NrcyM0Ni4xNy4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNS4wMi4wMCNDYWJsZSBsb2NrcyM0Ni4xNy4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNS4wMy4wMCNMb2NrIHNldHMjNDYuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTcuMTUuMDQuMDAjUHVzaGJ1dHRvbiBsb2NrcyM0Ni4xNy4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNS4wNS4wMCNLZXlzIG9yIGFjY2Vzc29yaWVzIzQ2LjE3LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE1LjA2LjAwI1NhZmVzIzQ2LjE3LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE1LjA3LjAwI1NlY3VyaXR5IGJhcnMjNDYuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTcuMTUuMDguMDAjTnVtYmVyIGxvY2tzIzQ2LjE3LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE1LjA5LjAwI0tleSBjYWJpbmV0cyM0Ni4xNy4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNS4xMC4wMCNUaW1lIGxvY2tzIzQ2LjE3LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE1LjExLjAwI0xvY2tvdXQgZGV2aWNlcyM0Ni4xNy4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNS4xMi4wMCNJbnN0cnVtZW50IGxvY2tzIzQ2LjE3LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE1LjEzLjAwI0xvY2tpbmcgY2FtIzQ2LjE3LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE1LjE0LjAwI1NlY3VyaXR5IGNoYWlucyBvciBhY2Nlc3NvcmllcyM0Ni4xNy4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNi4wMC4wMCNTdXJ2ZWlsbGFuY2UgYW5kIGRldGVjdGlvbiBlcXVpcG1lbnQjNDYuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTcuMTYuMDIuMDAjU2FmZXR5IGhvcm5zIzQ2LjE3LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE2LjAzLjAwI0Nsb2NrIHRpbWVycyM0Ni4xNy4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNi4wNC4wMCNBbGFybSBzeXN0ZW1zIzQ2LjE3LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE2LjA1LjAwI0Rvb3IgY2hpbWVzIzQ2LjE3LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE2LjA2LjAwI1NpcmVucyM0Ni4xNy4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNi4wNy4wMCNCdXp6ZXJzIzQ2LjE3LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE2LjA4LjAwI01vdGlvbiBkZXRlY3RvcnMjNDYuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTcuMTYuMDkuMDAjQ29udmV4IHNlY3VyaXR5IG1pcnJvcnMjNDYuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTcuMTYuMTAuMDAjU2VjdXJpdHkgY2FtZXJhcyM0Ni4xNy4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNi4xMS4wMCNWaWRlbyBpZGVudGlmaWNhdGlvbiBzeXN0ZW1zIzQ2LjE3LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE2LjEyLjAwI1ZpZGVvIG1vbml0b3JzIzQ2LjE3LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE2LjEzLjAwI0dhcyBkZXRlY3RvcnMjNDYuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTcuMTYuMTQuMDAjU3VydmVpbGxhbmNlIGNhbWVyYXMjNDYuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTcuMTYuMTUuMDAjTGlnaHQgZW5oYW5jaW5nIGNhbWVyYXMgb3IgdmlzaW9uIGRldmljZXMjNDYuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTcuMTYuMTYuMDAjUmFkYXIgZGV0ZWN0b3JzIzQ2LjE3LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE3LjE2LjE3LjAwI0Rvb3IgZXllcyM0Ni4xNy4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xNy4xNi4xOC4wMCNEb29yIGJlbGxzIzQ2LjE3LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjAwLjAwLjAwI1BlcnNvbmFsIHNhZmV0eSBhbmQgcHJvdGVjdGlvbiM0Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4wMC4wMCNTYWZldHkgYXBwYXJlbCM0Ni4xOC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4wMS4wMCNQcm90ZWN0aXZlIGFwcm9ucyM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4wMi4wMCNCdWxsZXQgcHJvb2YgdmVzdHMjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMDMuMDAjUHJvdGVjdGl2ZSBjb3ZlcmFsbHMjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMDQuMDAjUHJvdGVjdGl2ZSBnbG92ZXMjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMDUuMDAjUHJvdGVjdGl2ZSBrbmVlIHBhZHMjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMDYuMDAjUHJvdGVjdGl2ZSBwb25jaG9zIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjA3LjAwI1NhZmV0eSB2ZXN0cyM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4wOC4wMCNGaXJlIHJldGFyZGFudCBhcHBhcmVsIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjA5LjAwI0hhemFyZG91cyBtYXRlcmlhbCBwcm90ZWN0aXZlIGFwcGFyZWwjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMTAuMDAjRmlyZSByZXRhcmRhbnQgZ2xvdmVzIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjExLjAwI0hhemFyZG91cyBtYXRlcmlhbCBwcm90ZWN0aXZlIGdvb2RzIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjEyLjAwI0NsZWFucm9vbSBhcHBhcmVsIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjEzLjAwI0NsZWFucm9vbSBnbG92ZXMjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMTQuMDAjRWxib3cgcHJvdGVjdG9ycyM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4xNS4wMCNJbnNlY3RpY2lkZSBwcm90ZWN0aXZlIGNsb3RoaW5nIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjE2LjAwI1NhZmV0eSBzbGVldmVzIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjE3LjAwI0luc3VsYXRlZCBvciBmbG90YXRpb24gc3VpdHMjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMTguMDAjSGVhdCByZXNpc3RhbnQgY2xvdGhpbmcjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMTkuMDAjU2FmZXR5IGhhcm5lc3NlcyBvciBiZWx0cyM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4yMC4wMCNMZWcgcHJvdGVjdG9ycyM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4yMS4wMCNSYWRpYXRpb24gcHJvdGVjdGlvbiBjbG90aGluZyBvciBjb2F0cyM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4yMi4wMCNTYWZldHkgaG9vZHMjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMjMuMDAjSW5zdWxhdGVkIGNsb3RoaW5nIGZvciBjb2xkIGVudmlyb25tZW50cyM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4yNC4wMCNQZXJzb25hbCBmbG90YXRpb24gZGV2aWNlcyM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4yNS4wMCNQcm90ZWN0aXZlIHJhaW53ZWFyIG9yIHdldCBlbnZpcm9ubWVudCBhcHBhcmVsIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjI2LjAwI1Byb3RlY3RpdmUgc2hpcnRzIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjI3LjAwI1Byb3RlY3RpdmUgcGFudHMjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMjguMDAjUHJvdGVjdGl2ZSBmcm9jayM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNS4yOS4wMCNJbnN1bGF0ZWQgY2xvdGhpbmcgZm9yIGNvbGQgZW52aXJvbm1lbnRzIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjMwLjAwI1Byb3RlY3RpdmUgZmluZ2VyIGNvdHMjNDYuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTUuMzEuMDAjUmVmbGVjdGl2ZSBzdXNwZW5kZXJzIzQ2LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE1LjMyLjAwI0xhYiBjb2F0cyM0Ni4xOC4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNi4wMC4wMCNTYWZldHkgZm9vdHdlYXIjNDYuMTguMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTYuMDEuMDAjRmlyZSByZXRhcmRhbnQgZm9vdHdlYXIjNDYuMTguMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTYuMDIuMDAjSGF6YXJkb3VzIG1hdGVyaWFsIHByb3RlY3RpdmUgZm9vdHdlYXIjNDYuMTguMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTYuMDMuMDAjQ2xlYW5yb29tIGZvb3R3ZWFyIzQ2LjE4LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE2LjA0LjAwI1NhZmV0eSBib290cyM0Ni4xOC4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNi4wNS4wMCNTYWZldHkgc2hvZXMjNDYuMTguMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTYuMDYuMDAjRm9vdHdlYXIgY292ZXJzIzQ2LjE4LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE3LjAwLjAwI0ZhY2UgYW5kIGhlYWQgcHJvdGVjdGlvbiM0Ni4xOC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNy4wMS4wMCNIYXJkIGhhdHMjNDYuMTguMTcuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTcuMDIuMDAjRmFjaWFsIHNoaWVsZHMjNDYuMTguMTcuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTcuMDMuMDAjV2VsZGluZyBtYXNrcyM0Ni4xOC4xNy4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNy4wNC4wMCNTYWZldHkgaGVsbWV0cyM0Ni4xOC4xNy4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xNy4wNS4wMCNNb3RvcmN5Y2xlIGhlbG1ldHMjNDYuMTguMTcuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTcuMDYuMDAjSGVsbWV0IHBhcnRzIG9yIGFjY2Vzc29yaWVzIzQ2LjE4LjE3LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE4LjAwLjAwI1Zpc2lvbiBwcm90ZWN0aW9uIGFuZCBhY2Nlc3NvcmllcyM0Ni4xOC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xOC4wMS4wMCNFeWV3ZWFyIGhvbGRlcnMjNDYuMTguMTguMDAuMDAKLXVuc3BzYzcjNDYuMTguMTguMDIuMDAjU2FmZXR5IGdsYXNzZXMjNDYuMTguMTguMDAuMDAKLXVuc3BzYzcjNDYuMTguMTguMDMuMDAjRXllIHNoaWVsZHMjNDYuMTguMTguMDAuMDAKLXVuc3BzYzcjNDYuMTguMTguMDQuMDAjR29nZ2xlcyM0Ni4xOC4xOC4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xOC4wNS4wMCNWaWRlbyBkaXNwbGF5IGZpbHRlcnMjNDYuMTguMTguMDAuMDAKLXVuc3BzYzcjNDYuMTguMTguMDYuMDAjTGVucyBjbGVhbmVyIzQ2LjE4LjE4LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjE5LjAwLjAwI0hlYXJpbmcgcHJvdGVjdG9ycyM0Ni4xOC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xOC4xOS4wMS4wMCNFYXIgcGx1Z3MjNDYuMTguMTkuMDAuMDAKLXVuc3BzYzcjNDYuMTguMTkuMDIuMDAjRWFyIG11ZmZzIzQ2LjE4LjE5LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIwLjAwLjAwI1Jlc3BpcmF0b3J5IHByb3RlY3Rpb24jNDYuMTguMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjAuMDEuMDAjTWFza3MjNDYuMTguMjAuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjAuMDIuMDAjUmVzcGlyYXRvcnMjNDYuMTguMjAuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjAuMDMuMDAjR2FzIG1hc2tzIzQ2LjE4LjIwLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIwLjA0LjAwI1Jlc3BpcmF0aW9uIGFpciBzdXBwbHlpbmcgc2VsZiBjb250YWluZWQgYnJlYXRoaW5nIGFwcGFyYXR1cyAoU0NCQSkjNDYuMTguMjAuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjAuMDUuMDAjTWFzayBmaWx0ZXJzIzQ2LjE4LjIwLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIxLjAwLjAwI0FudGkgc3RhdGljIGVxdWlwbWVudCBhbmQgc3VwcGxpZXMjNDYuMTguMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjEuMDEuMDAjQW50aXN0YXRpYyB3cmlzdCBzdHJhcHMjNDYuMTguMjEuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjEuMDIuMDAjSGVlbCBncm91bmRpbmcgc3RyYXBzIzQ2LjE4LjIxLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIxLjAzLjAwI0dyb3VuZGluZyBoYXJkd2FyZSM0Ni4xOC4yMS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4yMS4wNC4wMCNBbnRpIHN0YXRpYyBmbG9vciBtYXRzIzQ2LjE4LjIxLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIxLjA1LjAwI0FudGkgc3RhdGljIHdvcmt0YWJsZSBtYXRzIzQ2LjE4LjIxLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIxLjA2LjAwI0FudGlzdGF0aWMgYmVsdHMjNDYuMTguMjEuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjEuMDcuMDAjQW50aXN0YXRpYyBtYWludGVuYW5jZSBraXRzIzQ2LjE4LjIxLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIxLjA4LjAwI0FudGlzdGF0aWMgdG9lIHN0cmFwcyM0Ni4xOC4yMS4wMC4wMAotdW5zcHNjNyM0Ni4xOC4yMi4wMC4wMCNFcmdvbm9taWMgc3VwcG9ydCBhaWRzIzQ2LjE4LjAwLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIyLjAxLjAwI0JhY2sgc3VwcG9ydCBiZWx0cyM0Ni4xOC4yMi4wMC4wMAotdW5zcHNjNyM0Ni4xOC4yMi4wMi4wMCNFbGJvdyBzdXBwb3J0cyM0Ni4xOC4yMi4wMC4wMAotdW5zcHNjNyM0Ni4xOC4yMi4wMy4wMCNCYWNrIHN1cHBvcnQgcmVzdHMjNDYuMTguMjIuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjIuMDQuMDAjV3Jpc3QgYnJhY2VzIzQ2LjE4LjIyLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIyLjA1LjAwI0Zvb3QgcmVzdHMjNDYuMTguMjIuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjIuMDYuMDAjV3Jpc3QgcmVzdHMjNDYuMTguMjIuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjIuMDcuMDAjQW5rbGUgc3VwcG9ydHMjNDYuMTguMjIuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjIuMDguMDAjU2hvZSBpbnNvbGVzIzQ2LjE4LjIyLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIzLjAwLjAwI0ZhbGwgcHJvdGVjdGlvbiM0Ni4xOC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xOC4yMy4wMS4wMCNMaWZlbGluZXMgb3IgbGlmZWxpbmUgZXF1aXBtZW50IzQ2LjE4LjIzLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIzLjAyLjAwI0ZhbGwgcHJvdGVjdGlvbiBsYW55YXJkIzQ2LjE4LjIzLjAwLjAwCi11bnNwc2M3IzQ2LjE4LjIzLjAzLjAwI1NhZmV0eSBoYXJuZXNzIHdpbmRlcnMjNDYuMTguMjMuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjMuMDQuMDAjQW5jaG9yYWdlIGNvbm5lY3RvciM0Ni4xOC4yMy4wMC4wMAotdW5zcHNjNyM0Ni4xOC4yMy4wNS4wMCNTZWxmIHJldHJhY3RpbmcgbGFueWFyZCM0Ni4xOC4yMy4wMC4wMAotdW5zcHNjNyM0Ni4xOC4yNC4wMC4wMCNEZWNvbnRhbWluYXRpb24gYWlkcyM0Ni4xOC4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xOC4yNC4wMS4wMCNEZWNvbnRhbWluYXRpb24gc2hvd2VyIzQ2LjE4LjI0LjAwLjAwCi11bnNwc2M3IzQ2LjE4LjI1LjAwLjAwI1BlcnNvbmFsIHNhZmV0eSBkZXZpY2VzIG9yIHdlYXBvbnMjNDYuMTguMDAuMDAuMDAKLXVuc3BzYzcjNDYuMTguMjUuMDEuMDAjUmVwZWxsZW50cyBmb3IgY2FuaW5lIGF0dGFja3MjNDYuMTguMjUuMDAuMDAKLXVuc3BzYzcjNDYuMTkuMDAuMDAuMDAjRmlyZSBwcm90ZWN0aW9uIzQ2LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ2LjE5LjE1LjAwLjAwI0ZpcmUgcHJldmVudGlvbiM0Ni4xOS4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xOS4xNS4wMS4wMCNTbW9rZSBkZXRlY3RvcnMjNDYuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTkuMTUuMDIuMDAjSGVhdCBkZXRlY3RvcnMjNDYuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNDYuMTkuMTUuMDMuMDAjRmlyZSByZXNpc3RhbnQgY29hdGluZ3Mgb3IgcHV0dGllcyBvciBzZWFsYW50cyM0Ni4xOS4xNS4wMC4wMAotdW5zcHNjNyM0Ni4xOS4xNi4wMC4wMCNGaXJlIGZpZ2h0aW5nIGVxdWlwbWVudCM0Ni4xOS4wMC4wMC4wMAotdW5zcHNjNyM0Ni4xOS4xNi4wMS4wMCNGaXJlIGV4dGluZ3Vpc2hlcnMjNDYuMTkuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTkuMTYuMDIuMDAjRmlyZSBzcHJpbmtsZXIgc3lzdGVtcyM0Ni4xOS4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xOS4xNi4wMy4wMCNGaXJlIGhvc2VzIG9yIG5venpsZXMjNDYuMTkuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTkuMTYuMDQuMDAjRmlyZSBibGFua2V0cyM0Ni4xOS4xNi4wMC4wMAotdW5zcHNjNyM0Ni4xOS4xNi4wNS4wMCNGaXJlIHN1cHByZXNzaW9uIGhhbmQgdG9vbHMjNDYuMTkuMTYuMDAuMDAKLXVuc3BzYzcjNDYuMTkuMTYuMDYuMDAjRmlyZSBzdXBwcmVzc2lvbiBmb2FtIG9yIHNpbWlsYXIgY29tcG91bmRzIzQ2LjE5LjE2LjAwLjAwCi11bnNwc2M3IzQ2LjE5LjE2LjA3LjAwI0ZpcmUgYnJlYXRoaW5nIGFwcGFyYXR1cyM0Ni4xOS4xNi4wMC4wMAotdW5zcHNjNyM0Ny4wMC4wMC4wMC4wMCNDbGVhbmluZyBFcXVpcG1lbnQgYW5kIFN1cHBsaWVzIzQ3LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ3LjEwLjAwLjAwLjAwI1dhdGVyIGFuZCB3YXN0ZXdhdGVyIHRyZWF0bWVudCBzdXBwbHkgYW5kIGRpc3Bvc2FsIzQ3LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjAwLjAwI1dhdGVyIHRyZWF0bWVudCBhbmQgc3VwcGx5IGVxdWlwbWVudCM0Ny4xMC4wMC4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4wMS4wMCNBY3RpdmF0ZWQgY2FyYm9uIGVxdWlwbWVudCM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4wMi4wMCNBbW1vbmlhIHJlbW92YWwgZXF1aXBtZW50IzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjAzLjAwI0NhcmJvbiBmaWx0cmF0aW9uIGVxdWlwbWVudCM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4wNC4wMCNCYWN0ZXJpYWwgcmVtb3ZhbCBlcXVpcG1lbnQjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMDUuMDAjQ2hsb3JpbmUgaGFuZGxpbmcgZXF1aXBtZW50IzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjA2LjAwI0NvcnJvc2lvbiBjb250cm9sIGVxdWlwbWVudCM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4wNy4wMCNHcml0IGNoYW1iZXJzIzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjA4LjAwI0Rlc2FsaW5hdGlvbiBlcXVpcG1lbnQjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMDkuMDAjRmx1b3JpZGF0aW9uIGVxdWlwbWVudCM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4xMC4wMCNJcm9uIHJlbW92YWwgZXF1aXBtZW50IzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjExLjAwI0lvbiBleGNoYW5nZSBlcXVpcG1lbnQjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMTIuMDAjTWl4ZXJzIG9yIGFnaXRhdG9ycyM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4xMy4wMCNPeHlnZW4gZ2VuZXJhdG9ycyM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4xNC4wMCNXYXRlciBwdXJpZmljYXRpb24gZXF1aXBtZW50IzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjE2LjAwI1R1cmJpZGltZXRlcnMjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMTcuMDAjVWx0cmF2aW9sZXQgZGlzaW5mZWN0aW9uIGVxdWlwbWVudCM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4xOC4wMCNXYXRlciBjb25kaXRpb25lcnMjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMTkuMDAjV2F0ZXIgc29mdGVuaW5nIGFjY2Vzc29yaWVzIzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjIxLjAwI1VsdHJhZmlsdHJhdGlvbiBlcXVpcG1lbnQjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMjIuMDAjUGFja2FnZWQgd2F0ZXIgdHJlYXRtZW50IHN5c3RlbXMjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMjMuMDAjQ29sbGVjdGlvbiB0YW5rcyM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4yNC4wMCNTbHVkZ2Ugb3Igc2V3YWdlIGNvbXBvc3RpbmcgZXF1aXBtZW50IzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjI1LjAwI0Rld2F0ZXJpbmcgZXF1aXBtZW50IzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjI2LjAwI1NsdWRnZSBwZWxsZXRpemVycyM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4yNy4wMCNTbHVkZ2Ugc2hyZWRkZXJzIzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjI4LjAwI1dhdGVyIHRyZWF0bWVudCBkcnllcnMjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMjkuMDAjSW5jaW5lcmF0b3JzIzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjMwLjAwI09kb3IgY29udHJvbCBlcXVpcG1lbnQjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMzEuMDAjU2VwdGljIHRhbmtzIzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjMyLjAwI1NldHRsaW5nIHRhbmtzIzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjMzLjAwI0xpZnQgc3RhdGlvbnMjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTUuMzQuMDAjU2V3YWdlIGRpc3RyaWJ1dG9ycyM0Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNS4zNS4wMCNTbHVkZ2UgZGlzcG9zYWwgZXF1aXBtZW50IzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjM2LjAwI1NsdWRnZSBjb2xsZWN0b3JzIzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjM3LjAwI1NsdWRnZSBjb25kaXRpb25pbmcgZXF1aXBtZW50IzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjM4LjAwI1NsdWRnZSBvciBzZXdhZ2UgZGlnZXN0ZXJzIzQ3LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE1LjM5LjAwI1NsdWRnZSBvciBzZXdhZ2UgcmVtb3ZhbCBlcXVpcG1lbnQjNDcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTYuMDAuMDAjV2F0ZXIgdHJlYXRtZW50IGNvbnN1bWFibGVzIzQ3LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE2LjAxLjAwI0FsZ2FlY2lkZXMjNDcuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTYuMDIuMDAjQW50aXNjYWxhbnRzIzQ3LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE2LjAzLjAwI0Rlc2NhbGVycyM0Ny4xMC4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNi4wNC4wMCNCb2lsZXIgZmVlZCBjaGVtaWNhbHMjNDcuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTYuMDUuMDAjQmFjdGVyaWFsIHJlbW92YWwgY2hlbWljYWxzIzQ3LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE2LjA2LjAwI0NvcnJvc2lvbiBjb250cm9sIGNoZW1pY2FscyM0Ny4xMC4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNi4wNy4wMCNPZG9yIGNvbnRyb2wgY2hlbWljYWxzIzQ3LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE2LjA4LjAwI0Zsb2NjdWxlbnRzIzQ3LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEwLjE2LjA5LjAwI01pY3JvYmlvY2lkZXMjNDcuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTYuMTAuMDAjV2F0ZXIgc29mdGVuaW5nIGNvbXBvdW5kcyM0Ny4xMC4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMC4xNi4xMS4wMCNEZW11bHNpZmllcnMjNDcuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTAuMTYuMTIuMDAjUG9seWVsZWN0cm9seXRlcyM0Ny4xMC4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMS4wMC4wMC4wMCNJbmR1c3RyaWFsIGxhdW5kcnkgYW5kIGRyeSBjbGVhbmluZyBlcXVpcG1lbnQjNDcuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDcuMTEuMTUuMDAuMDAjV2FzaGluZyBhbmQgZHJ5aW5nIGVxdWlwbWVudCM0Ny4xMS4wMC4wMC4wMAotdW5zcHNjNyM0Ny4xMS4xNS4wMS4wMCNMYXVuZHJ5IHR5cGUgY29tYmluZWQgd2FzaGluZyBvciBkcnlpbmcgbWFjaGluZXMjNDcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTEuMTUuMDIuMDAjTGF1bmRyeSB0eXBlIHdhc2hpbmcgbWFjaGluZXMjNDcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTEuMTUuMDMuMDAjQ2xvdGhlcyBkcnllcnMjNDcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTEuMTUuMDQuMDAjTGF1bmRyeSB0eXBlIGRyeWluZyBtYWNoaW5lcyM0Ny4xMS4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMS4xNS4wNS4wMCNMYXVuZHJ5IGVxdWlwbWVudCBzdGFuZHMjNDcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTEuMTYuMDAuMDAjSXJvbmluZyBlcXVpcG1lbnQjNDcuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDcuMTEuMTYuMDEuMDAjSXJvbmluZyBtYWNoaW5lcyBvciBwcmVzc2VzIzQ3LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjExLjE2LjAyLjAwI0ZvbGRpbmcgbWFjaGluZXMjNDcuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTEuMTYuMDMuMDAjU3RlYW0gcHJlc3NpbmcgbWFjaGluZXMjNDcuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTEuMTcuMDAuMDAjRHJ5IGNsZWFuaW5nIGVxdWlwbWVudCM0Ny4xMS4wMC4wMC4wMAotdW5zcHNjNyM0Ny4xMS4xNy4wMS4wMCNEcnkgY2xlYW5pbmcgbWFjaGluZXMjNDcuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMDAuMDAuMDAjSmFuaXRvcmlhbCBlcXVpcG1lbnQjNDcuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTUuMDAuMDAjSmFuaXRvciBjYXJ0cyBhbmQgYWNjZXNzb3JpZXMjNDcuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTUuMDEuMDAjSmFuaXRvciBjYXJ0cyM0Ny4xMi4xNS4wMC4wMAotdW5zcHNjNyM0Ny4xMi4xNS4wMi4wMCNKYW5pdG9yIGNhcnQgYWNjZXNzb3JpZXMjNDcuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTYuMDAuMDAjRmxvb3IgbWFjaGluZXMgYW5kIGFjY2Vzc29yaWVzIzQ3LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ3LjEyLjE2LjAyLjAwI1ZhY3V1bSBjbGVhbmVycyM0Ny4xMi4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMi4xNi4wMy4wMCNGbG9vciBwb2xpc2hlcnMjNDcuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTYuMDQuMDAjV2V0IG9yIGRyeSBjb21iaW5hdGlvbiB2YWN1dW0gY2xlYW5lcnMjNDcuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTYuMDUuMDAjRmxvb3Igc2NydWJiZXJzIzQ3LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEyLjE2LjA2LjAwI0NhcnBldCBzd2VlcGVycyM0Ny4xMi4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMi4xNi4wNy4wMCNWYWN1dW0gY2xlYW5lciBzdXBwbGllcyBvciBhY2Nlc3NvcmllcyM0Ny4xMi4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMi4xNi4wOC4wMCNGbG9vciBtYWNoaW5lIHBhZHMjNDcuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTYuMDkuMDAjQ2FycGV0IGNsZWFuaW5nIGVxdWlwbWVudCM0Ny4xMi4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMi4xNi4xMC4wMCNGbG9vciB3YXNoaW5nIG1hY2hpbmUjNDcuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTcuMDAuMDAjV2FzdGUgY29udGFpbmVycyBhbmQgYWNjZXNzb3JpZXMjNDcuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTcuMDEuMDAjVHJhc2ggYmFncyM0Ny4xMi4xNy4wMC4wMAotdW5zcHNjNyM0Ny4xMi4xNy4wMi4wMCNXYXN0ZSBjb250YWluZXJzIG9yIHJpZ2lkIGxpbmVycyM0Ny4xMi4xNy4wMC4wMAotdW5zcHNjNyM0Ny4xMi4xNy4wMy4wMCNTbW9raW5nIHVybnMgb3IgYWNjZXNzb3JpZXMjNDcuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTcuMDQuMDAjV2FzdGUgY29udGFpbmVyIGxpZHMjNDcuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTcuMDUuMDAjVXJuIHNhbmQgYmFncyM0Ny4xMi4xNy4wMC4wMAotdW5zcHNjNyM0Ny4xMi4xNy4wNi4wMCNBc2ggdHJheXMjNDcuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTcuMDcuMDAjTW90aW9uIHNpY2tuZXNzIGJhZ3MjNDcuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTguMDAuMDAjQ2xlYW5pbmcgZXF1aXBtZW50IzQ3LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ3LjEyLjE4LjAxLjAwI0NsZWFuaW5nIGR1c3RlcnMjNDcuMTIuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTguMDIuMDAjTGludCByZW1vdmVycyM0Ny4xMi4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMi4xOC4wMy4wMCNTcXVlZWdlcyBvciB3YXNoZXJzIzQ3LjEyLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEyLjE4LjA0LjAwI0NsZWFuaW5nIHBhaWxzIG9yIGJ1Y2tldHMjNDcuMTIuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTguMDUuMDAjUHJlc3N1cmUgb3Igc3RlYW0gY2xlYW5lcnMjNDcuMTIuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTguMDYuMDAjTW9wIHdyaW5nZXIjNDcuMTIuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTguMDcuMDAjRHJhaW4gb3IgdG9pbGV0IHBsdW5nZXIjNDcuMTIuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTguMDguMDAjRHJhaW4gb3IgcGlwZSBjbGVhbmluZyBlcXVpcG1lbnQjNDcuMTIuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTguMDkuMDAjRGVncmVhc2luZyBwYW5zIzQ3LjEyLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEyLjE4LjEwLjAwI0NsZWFuaW5nIHJhZyBkaXNwZW5zZXIjNDcuMTIuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTIuMTguMTEuMDAjRHVjdCBjbGVhbmluZyBtYWNoaW5lcyM0Ny4xMi4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4wMC4wMC4wMCNDbGVhbmluZyBhbmQgamFuaXRvcmlhbCBzdXBwbGllcyM0Ny4wMC4wMC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xNS4wMC4wMCNDbGVhbmluZyByYWdzIGFuZCBjbG90aHMgYW5kIHdpcGVzIzQ3LjEzLjAwLjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE1LjAxLjAwI1JhZ3MjNDcuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTUuMDIuMDAjV2lwZXMjNDcuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTYuMDAuMDAjQnJvb21zIGFuZCBtb3BzIGFuZCBicnVzaGVzIGFuZCBhY2Nlc3NvcmllcyM0Ny4xMy4wMC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xNi4wMS4wMCNEdXN0IGJydXNoZXMgb3IgcGFucyM0Ny4xMy4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xNi4wMi4wMCNTY291cmluZyBwYWRzIzQ3LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE2LjAzLjAwI1Nwb25nZXMjNDcuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTYuMDQuMDAjQnJvb21zIzQ3LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE2LjA1LjAwI0NsZWFuaW5nIGJydXNoZXMjNDcuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTYuMDYuMDAjRHVzdCBtb3BzIzQ3LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE2LjA3LjAwI1dldCBtb3BzIzQ3LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE2LjA4LjAwI1RvaWxldCBicnVzaGVzIzQ3LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE2LjA5LjAwI0Jyb29tIG9yIG1vcCBoYW5kbGVzIzQ3LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE2LjEwLjAwI0Zsb29yIGZpbmlzaCBhcHBsaWNhdG9yIzQ3LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE2LjExLjAwI1RyYXNoIHBpY2tlciM0Ny4xMy4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xNi4xMi4wMCNSZXBsYWNlbWVudCBydWJiZXJzIzQ3LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE2LjEzLjAwI01vcCBvciBicm9vbSBob2xkZXIjNDcuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTYuMTQuMDAjQ2xlYW5pbmcgZXF1aXBtZW50IGNsYW1wcyM0Ny4xMy4xNi4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xNy4wMC4wMCNSZXN0cm9vbSBzdXBwbGllcyM0Ny4xMy4wMC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xNy4wMS4wMCNQYXBlciB0b3dlbCBkaXNwZW5zZXJzIzQ3LjEzLjE3LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE3LjAyLjAwI1Nhbml0YXJ5IGdvb2RzIGRpc3BlbnNlcnMjNDcuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTcuMDMuMDAjU2FuaXRhcnkgd2FzdGUgcmVjZXB0YWNsZXMjNDcuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTcuMDQuMDAjSW5zdGl0dXRpb25hbCBzb2FwIG9yIGxvdGlvbiBkaXNwZW5zZXJzIzQ3LjEzLjE3LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE3LjA1LjAwI1VyaW5hbCBvciB0b2lsZXQgYWNjZXNzb3JpZXMjNDcuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTcuMDYuMDAjQWlyIGZyZXNoZW5lciBkaXNwZW5zZXJzIzQ3LjEzLjE3LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE3LjA3LjAwI0luc3RpdHV0aW9uYWwgaGFuZCBkcnllcnMjNDcuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTcuMDguMDAjQmF0aHJvb20gdGlzc3VlIGRpc3BlbnNlciM0Ny4xMy4xNy4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xNy4wOS4wMCNGYWNpYWwgdGlzc3VlIGRpc3BlbnNlcnMjNDcuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTcuMTAuMDAjVG9pbGV0IHRpc3N1ZSBkaXNwZW5zZXJzIzQ3LjEzLjE3LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE3LjExLjAwI0NsZWFuZXIgZGlzcGVuc2VyIzQ3LjEzLjE3LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjAwLjAwI0NsZWFuaW5nIGFuZCBkaXNpbmZlY3Rpbmcgc29sdXRpb25zIzQ3LjEzLjAwLjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjAxLjAwI0Zsb29yIGNsZWFuZXJzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjAyLjAwI0Zsb29yIHdheGVzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjAzLjAwI0hvdXNlaG9sZCBkaXNpbmZlY3RhbnRzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjA0LjAwI0FtbW9uaWFzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjA1LjAwI0dlbmVyYWwgcHVycG9zZSBjbGVhbmVycyM0Ny4xMy4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xOC4wNi4wMCNGdXJuaXR1cmUgcG9saXNoIG9yIHdheGVzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjA3LjAwI0JsZWFjaGVzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjA4LjAwI0RyeSBnZXJtaWNpZGFsIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjA5LjAwI1Nob2UgY2xlYW5pbmcgb3IgcG9saXNoaW5nIHByb2R1Y3RzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjEwLjAwI0Rpc2h3YXNoaW5nIHByb2R1Y3RzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjExLjAwI0xhdW5kcnkgcHJvZHVjdHMjNDcuMTMuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTguMTIuMDAjQWlyIGZyZXNoZW5lciM0Ny4xMy4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xOC4xMy4wMCNTY3JlZW4gY2xlYW5lciM0Ny4xMy4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xOC4xNC4wMCNNZXRhbCBjbGVhbmVycyBvciBwb2xpc2hlcyM0Ny4xMy4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xOC4xNS4wMCNEcmFpbiBjbGVhbmVyIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjE2LjAwI0Rlb2Rvcml6ZXJzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjE3LjAwI0hvdXNlaG9sZCBvciBhdXRvbW90aXZlIHByb3RlY3RhbnRzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjE4LjAwI0FpciBzYW5pdGl6ZXIjNDcuMTMuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTguMTkuMDAjQ2F1c3RpYyBjbGVhbmVycyM0Ny4xMy4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xOC4yMC4wMCNQZXRyb2xldW0gZGVyaXZhdGl2ZSBjbGVhbmVycyM0Ny4xMy4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xOC4yMS4wMCNEZWdyZWFzaW5nIGNvbXBvdW5kcyM0Ny4xMy4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xOC4yMi4wMCNDYXJib24gcmVtb3ZpbmcgY29tcG91bmRzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjIzLjAwI0RlaWNlcnMgYW5kIGRlZnJvc3RlcnMjNDcuMTMuMTguMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTguMjQuMDAjR2xhc3Mgb3Igd2luZG93IGNsZWFuZXJzIzQ3LjEzLjE4LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE4LjI1LjAwI0NvbnRhY3Qgc3VyZmFjZSBjbGVhbmVycyM0Ny4xMy4xOC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xOS4wMC4wMCNBYnNvcmJlbnRzIzQ3LjEzLjAwLjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE5LjAxLjAwI01hdHMjNDcuMTMuMTkuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTkuMDIuMDAjR3JhbnVsYXIgYWJzb3JiZW50IzQ3LjEzLjE5LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE5LjAzLjAwI1BsdWdnaW5nIGNvbXBvdW5kIzQ3LjEzLjE5LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE5LjA0LjAwI0Fic29yYmVudCBzb2NrcyM0Ny4xMy4xOS4wMC4wMAotdW5zcHNjNyM0Ny4xMy4xOS4wNS4wMCNTcGlsbCBraXRzIzQ3LjEzLjE5LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE5LjA2LjAwI1BhbnMjNDcuMTMuMTkuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMTkuMDcuMDAjQWJzb3JiZW50IGJvb21zIzQ3LjEzLjE5LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjE5LjA4LjAwI0Fic29yYmVudCBwaWxsb3dzIzQ3LjEzLjE5LjAwLjAwCi11bnNwc2M3IzQ3LjEzLjIwLjAwLjAwI01hdHMjNDcuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMjEuMDAuMDAjQ2xlYW5pbmcga2l0cyM0Ny4xMy4wMC4wMC4wMAotdW5zcHNjNyM0Ny4xMy4yMS4wMS4wMCNJbmR1c3RyaWFsIGNsZWFuaW5nIGtpdHMjNDcuMTMuMjEuMDAuMDAKLXVuc3BzYzcjNDcuMTMuMjEuMDIuMDAjR2VuZXJhbCBwdXJwb3NlIGNsZWFuaW5nIGtpdHMjNDcuMTMuMjEuMDAuMDAKLXVuc3BzYzcjNDguMDAuMDAuMDAuMDAjU2VydmljZSBJbmR1c3RyeSBNYWNoaW5lcnkgYW5kIEVxdWlwbWVudCBhbmQgU3VwcGxpZXMjNDguMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDguMTAuMDAuMDAuMDAjSW5zdGl0dXRpb25hbCBmb29kIHNlcnZpY2VzIGVxdWlwbWVudCM0OC4wMC4wMC4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4wMC4wMCNDb29raW5nIGFuZCB3YXJtaW5nIGVxdWlwbWVudCM0OC4xMC4wMC4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4wMS4wMCNDb21tZXJjaWFsIHVzZSBiYWluIG1hcmllcyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4wMi4wMCNDb21tZXJjaWFsIHVzZSBiYXJiZXF1ZSBvdmVucyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4wMy4wMCNDb21tZXJjaWFsIHVzZSBicm9pbGVycyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4wNC4wMCNDb21tZXJjaWFsIHVzZSBjaGFyY29hbCBncmlsbHMjNDguMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTUuMDUuMDAjQ29tbWVyY2lhbCB1c2UgY29mZmVlIG9yIGljZWQgdGVhIG1ha2VycyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4wNi4wMCNDb21tZXJjaWFsIHVzZSBjb2ZmZWUgd2FybWVycyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4wNy4wMCNDb21tZXJjaWFsIHVzZSBjb252ZWN0aW9uIG92ZW5zIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjA4LjAwI0NvbW1lcmNpYWwgdXNlIGNvbnZleWVyIHRvYXN0ZXJzIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjA5LjAwI0NvbW1lcmNpYWwgdXNlIGRlZXAgZnJ5ZXJzIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjEwLjAwI0NvbW1lcmNpYWwgdXNlIGZvb2Qgd2FybWVycyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4xMS4wMCNDb21tZXJjaWFsIHVzZSBncmlkZGxlcyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4xMi4wMCNDb21tZXJjaWFsIHVzZSBncmlsbHMjNDguMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTUuMTMuMDAjQ29tbWVyY2lhbCB1c2UgaGVhdCBsYW1wcyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4xNC4wMCNDb21tZXJjaWFsIHVzZSBoaWdoIHByZXNzdXJlIHN0ZWFtZXJzIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjE1LjAwI0NvbW1lcmNpYWwgdXNlIGhvdCBkb2cgZ3JpbGxzIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjE2LjAwI0NvbW1lcmNpYWwgdXNlIG1pY3Jvd2F2ZSBvdmVucyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4xNy4wMCNDb21tZXJjaWFsIHVzZSBvdmVucyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4xOC4wMCNDb21tZXJjaWFsIHVzZSBwYXN0YSBjb29rZXJzIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjE5LjAwI0NvbW1lcmNpYWwgdXNlIHBpenphIG92ZW5zIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjIwLjAwI0NvbW1lcmNpYWwgdXNlIHBvcGNvcm4gbWFjaGluZXMjNDguMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTUuMjEuMDAjQ29tbWVyY2lhbCB1c2UgcmFuZ2VzIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjIyLjAwI0NvbW1lcmNpYWwgdXNlIHJvdGlzc2VyaWVzIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjIzLjAwI0NvbW1lcmNpYWwgdXNlIHNtb2tlcnMgb3Igc21va2Ugb3ZlbnMjNDguMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTUuMjQuMDAjQ29tbWVyY2lhbCB1c2Ugc3RlYW1lcnMjNDguMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTUuMjUuMDAjQ29tbWVyY2lhbCB1c2UgdG9hc3RlcnMjNDguMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTUuMjYuMDAjQ29tbWVyY2lhbCB1c2Ugd2FmZmxlIGlyb25zIzQ4LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE1LjI3LjAwI0JhcmJlY3VlcyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4yOC4wMCNDb21tZXJjaWFsIHVzZSBjcmVwZSBtYWNoaW5lcyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4yOS4wMCNQcmVzc3VyZSBjb29rZXJzIG9yIHByZXNzdXJlIGZyeWVycyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNS4zMC4wMCNDb21tZXJjaWFsIHVzZSByaWNlIGNvb2tlcnMjNDguMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTUuMzEuMDAjQ29tbWVyY2lhbCBzYWxtb24gcG9hY2hlcnMgb3Iga2V0dGxlcyM0OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNi4wMC4wMCNGb29kIHByZXBhcmF0aW9uIGVxdWlwbWVudCM0OC4xMC4wMC4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNi4wMS4wMCNDb21tZXJjaWFsIHVzZSBibGVuZGVycyM0OC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNi4wMi4wMCNDb21tZXJjaWFsIHVzZSBlbGVjdHJpYyBjYW4gb3BlbmVycyM0OC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNi4wMy4wMCNDb21tZXJjaWFsIHVzZSBmb29kIGNob3BwZXJzIG9yIGN1YmVycyBvciBkaWNlcnMjNDguMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTYuMDQuMDAjQ29tbWVyY2lhbCB1c2UgY29mZmVlIGdyaW5kZXJzIzQ4LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE2LjA1LjAwI0NvbW1lcmNpYWwgdXNlIGZvb2QgZ3JpbmRlcnMjNDguMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTYuMDYuMDAjQ29tbWVyY2lhbCB1c2UgZ3JhdGVycyM0OC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNi4wNy4wMCNDb21tZXJjaWFsIHVzZSBqdWljZXJzIzQ4LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE2LjA4LjAwI0NvbW1lcmNpYWwgdXNlIG1peGVycyM0OC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNi4wOS4wMCNDb21tZXJjaWFsIHVzZSBwYXN0YSBtYWNoaW5lcyM0OC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNi4xMC4wMCNDb21tZXJjaWFsIHVzZSBwZWVsZXJzIzQ4LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE2LjExLjAwI0NvbW1lcmNpYWwgdXNlIHNjYWxlcyM0OC4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNi4xMi4wMCNDb21tZXJjaWFsIHVzZSBmb29kIHByb2Nlc3NvcnMjNDguMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTYuMTMuMDAjQ29tbWVyY2lhbCB1c2UgZG91Z2ggbWFjaGluZXMjNDguMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTYuMTQuMDAjQ29tbWVyY2lhbCB1c2UgaWNpbmcgc2V0cyBvciBiYWdzIzQ4LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE2LjE1LjAwI0NvbW1lcmNpYWwgdXNlIGRpc2h3YXNoZXJzIzQ4LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE2LjE2LjAwI0NvbW1lcmNpYWwgdXNlIGJyZWFkIHNsaWNlcnMjNDguMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTYuMTcuMDAjQ29tbWVyY2lhbCB1c2UgcGxhc3RpYyBzaG92ZWxzIzQ4LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE3LjAwLjAwI0Zvb2QgYW5kIGJldmVyYWdlIGRpc3BlbnNpbmcgZXF1aXBtZW50IzQ4LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE3LjAxLjAwI0NhcmJvbmF0ZWQgYmV2ZXJhZ2UgZGlzcGVuc2VyIzQ4LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE3LjAyLjAwI05vbiBjYXJib25hdGVkIGJldmVyYWdlIGRpc3BlbnNlciM0OC4xMC4xNy4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNy4wMy4wMCNNaWxrIGRpc3BlbnNlcnMjNDguMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTcuMDQuMDAjU3lydXAgcHVtcHMjNDguMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTcuMDUuMDAjQ2FwcHVjY2lubyBvciBlc3ByZXNzbyBtYWNoaW5lcyM0OC4xMC4xNy4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNy4wNi4wMCNNaWxrc2hha2UgbWFjaGluZXMjNDguMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTcuMDcuMDAjU29mdCBzZXJ2ZSBtYWNoaW5lcyM0OC4xMC4xNy4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNy4wOC4wMCNTbHVzaCBtYWNoaW5lcyM0OC4xMC4xNy4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNy4wOS4wMCNJY2UgZGlzcGVuc2VycyM0OC4xMC4xNy4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNy4xMC4wMCNEcmlua2luZyBmb3VudGFpbnMgb3IgYnViYmxlcnMjNDguMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTcuMTEuMDAjQm90dGxlZCB3YXRlciBkaXNwZW5zZXJzIG9yIGFjY2Vzc29yaWVzIzQ4LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE3LjEyLjAwI0N1cCBkaXNwZW5zZXIjNDguMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTcuMTMuMDAjQ29ja3RhaWwgc2hha2VycyBvciBhY2Nlc3NvcmllcyM0OC4xMC4xNy4wMC4wMAotdW5zcHNjNyM0OC4xMC4xNy4xNC4wMCNIb3Qgd2F0ZXIgZGlzcGVuc2VyIzQ4LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE4LjAwLjAwI0Nvb2t3YXJlIGFuZCBraXRjaGVuIHRvb2xzIzQ4LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE4LjAxLjAwI0NvbW1lcmNpYWwgdXNlIGN1dGxlcnkjNDguMTAuMTguMDAuMDAKLXVuc3BzYzcjNDguMTAuMTguMDIuMDAjQ29tbWVyY2lhbCB1c2UgbW9sZHMjNDguMTAuMTguMDAuMDAKLXVuc3BzYzcjNDguMTAuMTguMDMuMDAjQ29tbWVyY2lhbCB1c2Ugc2Nvb3BzIzQ4LjEwLjE4LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE4LjA0LjAwI0NvbW1lcmNpYWwgdXNlIG1lYXN1cmluZyBjdXBzIzQ4LjEwLjE4LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE4LjA1LjAwI0NvbW1lcmNpYWwgdXNlIG1peGluZyBib3dscyM0OC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOC4wNi4wMCNDb21tZXJjaWFsIHVzZSBjYWtlIG9yIHBpZSBwYW5zIzQ4LjEwLjE4LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE4LjA3LjAwI0NvbW1lcmNpYWwgdXNlIHBpenphIHBhbnMjNDguMTAuMTguMDAuMDAKLXVuc3BzYzcjNDguMTAuMTguMDguMDAjQ29tbWVyY2lhbCB1c2Ugc2F1Y2Ugb3Igc2F1dGUgcGFucyM0OC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOC4wOS4wMCNDb21tZXJjaWFsIHVzZSBzdG9jayBvciBzYXVjZSBwb3RzIzQ4LjEwLjE4LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE4LjEwLjAwI0NvbW1lcmNpYWwgdXNlIHBvdCBvciBwYW4gY292ZXJzIzQ4LjEwLjE4LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE4LjExLjAwI0NvbW1lcmNpYWwgdXNlIHJvbGxpbmcgcGlucyM0OC4xMC4xOC4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOC4xMi4wMCNDb21tZXJjaWFsIHVzZSBzdHJhaW5lcnMjNDguMTAuMTguMDAuMDAKLXVuc3BzYzcjNDguMTAuMTguMTMuMDAjQ29tbWVyY2lhbCB1c2Ugd2hpc2tzIzQ4LjEwLjE4LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE4LjE0LjAwI0NvbW1lcmNpYWwgdXNlIHdva3MjNDguMTAuMTguMDAuMDAKLXVuc3BzYzcjNDguMTAuMTguMTUuMDAjQ29tbWVyY2lhbCB1c2UgbGFkbGVzIzQ4LjEwLjE4LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE4LjE2LjAwI0NvbW1lcmNpYWwgdXNlIGN1dGxlcnkgcG91Y2gjNDguMTAuMTguMDAuMDAKLXVuc3BzYzcjNDguMTAuMTguMTcuMDAjQ2FrZSBkZWNvcmF0aW5nIGVxdWlwbWVudCBvciBtb3VsZHMjNDguMTAuMTguMDAuMDAKLXVuc3BzYzcjNDguMTAuMTkuMDAuMDAjVGFibGV0b3AgYW5kIHNlcnZpbmcgZXF1aXBtZW50IzQ4LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE5LjAxLjAwI0Zvb2Qgc2VydmljZSBkaW5uZXJ3YXJlIzQ4LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE5LjAyLjAwI0Zvb2Qgc2VydmljZSBmbGF0d2FyZSM0OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOS4wMy4wMCNGb29kIHNlcnZpY2UgZ2xhc3NlcyM0OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOS4wNC4wMCNGb29kIHNlcnZpY2Ugc3RlbXdhcmUjNDguMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTkuMDUuMDAjRm9vZCBzZXJ2aWNlIGN1cHMgb3IgbXVncyM0OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOS4wNi4wMCNGb29kIHNlcnZpY2Ugc2VydmluZyBiYXNrZXRzIzQ4LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE5LjA3LjAwI0Zvb2Qgc2VydmljZSBwaXRjaGVycyM0OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOS4wOC4wMCNGb29kIHNlcnZpY2UgY2hhZmVycyM0OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOS4wOS4wMCNGb29kIHNlcnZpY2UgY29mZmVlIG9yIHRlYSBwb3RzIzQ4LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE5LjEwLjAwI0Zvb2Qgc2VydmljZSBzb3VwIGNyb2NrcyM0OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOS4xMS4wMCNGb29kIHNlcnZpY2UgaWNlIGJ1Y2tldHMgb3Igd2luZSBjb29sZXJzIzQ4LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE5LjEyLjAwI0Zvb2Qgc2VydmljZSBjb25kaW1lbnQgZGlzcGVuc2VycyM0OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOS4xMy4wMCNGb29kIHNlcnZpY2UgcHVuY2ggYm93bHMjNDguMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTkuMTQuMDAjRm9vZCBzZXJ2aWNlIHdpbmUgY2FyYWZlcyM0OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0OC4xMC4xOS4xNS4wMCNGb29kIHNlcnZpY2UgdHJheXMjNDguMTAuMTkuMDAuMDAKLXVuc3BzYzcjNDguMTAuMTkuMTYuMDAjRm9vZCBzZXJ2aWNlIG5hcGtpbiBkaXNwZW5zZXJzIzQ4LjEwLjE5LjAwLjAwCi11bnNwc2M3IzQ4LjEwLjE5LjE3LjAwI0Zvb2Qgc2VydmljZSBmb25kdWUgcG90cyM0OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM0OC4xMC4yMC4wMC4wMCNSZXN0YXVyYW50IGZ1cm5pdHVyZSM0OC4xMC4wMC4wMC4wMAotdW5zcHNjNyM0OC4xMC4yMC4wMS4wMCNSZXN0YXVyYW50IGNoYWlycyM0OC4xMC4yMC4wMC4wMAotdW5zcHNjNyM0OC4xMC4yMC4wMi4wMCNCb290aHMjNDguMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDguMTAuMjAuMDMuMDAjU2FsYWQgYmFycyM0OC4xMC4yMC4wMC4wMAotdW5zcHNjNyM0OC4xMC4yMC4wNC4wMCNUYWJsZXRvcHMjNDguMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDguMTAuMjAuMDUuMDAjUmVzdGF1cmFudCBvciBiYXIgc3Rvb2xzIzQ4LjEwLjIwLjAwLjAwCi11bnNwc2M3IzQ4LjEwLjIwLjA2LjAwI1Blcm1hbmVudCBiYXJzIzQ4LjEwLjIwLjAwLjAwCi11bnNwc2M3IzQ4LjEwLjIwLjA3LjAwI1BvcnRhYmxlIGJhcnMjNDguMTAuMjAuMDAuMDAKLXVuc3BzYzcjNDguMTAuMjEuMDAuMDAjU3RvcmFnZSBhbmQgaGFuZGxpbmcgZXF1aXBtZW50IzQ4LjEwLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjEwLjIxLjAxLjAwI0Rpc3BsYXkgY2FzZXMjNDguMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDguMTAuMjEuMDIuMDAjSGVhdGVkIGRpc3BsYXkgY2FzZXMjNDguMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDguMTAuMjEuMDMuMDAjUmVmcmlnZXJhdGVkIGRpc3BsYXkgY2FzZXMjNDguMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDguMTAuMjEuMDQuMDAjSWNlIGNyZWFtIGRpc3BsYXkgY2FzZXMjNDguMTAuMjEuMDAuMDAKLXVuc3BzYzcjNDguMTAuMjEuMDUuMDAjR2xhc3MgY2hpbGxpbmcgZXF1aXBtZW50IzQ4LjEwLjIxLjAwLjAwCi11bnNwc2M3IzQ4LjEwLjIxLjA2LjAwI0Nvb2wgY29udGFpbmVycyM0OC4xMC4yMS4wMC4wMAotdW5zcHNjNyM0OC4xMS4wMC4wMC4wMCNWZW5kaW5nIG1hY2hpbmVzIzQ4LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjExLjEwLjAwLjAwI0xpcXVpZCB2ZW5kaW5nIG1hY2hpbmVzIzQ4LjExLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjExLjEwLjAxLjAwI01hY2hpbmVzIGRpc3BlbnNpbmcgc2luZ2xlIHNlcnZpbmdzIHdpdGggY3VwcyM0OC4xMS4xMC4wMC4wMAotdW5zcHNjNyM0OC4xMS4xMC4wMi4wMCNNYWNoaW5lcyBkaXNwZW5zaW5nIGJ1bGsgcXVhbnRpdGllcyM0OC4xMS4xMC4wMC4wMAotdW5zcHNjNyM0OC4xMS4xMS4wMC4wMCNQaWVjZSBhbmQgcGFydCB2ZW5kaW5nIG1hY2hpbmVzIzQ4LjExLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjExLjExLjAxLjAwI0JvdHRsZSBvciBjYW4gdmVuZGluZyBtYWNoaW5lcyM0OC4xMS4xMS4wMC4wMAotdW5zcHNjNyM0OC4xMS4xMS4wMi4wMCNHdW1iYWxsIGNhbmR5IG9yIGNoaWxkcmVucyBub3ZlbHRpZXMgbWFjaGluZXMjNDguMTEuMTEuMDAuMDAKLXVuc3BzYzcjNDguMTEuMTEuMDMuMDAjU25hY2sgb3Igc21hbGwgcGFja2FnZSBnb29kcyBkaXNwbGF5IG1hY2hpbmVzIzQ4LjExLjExLjAwLjAwCi11bnNwc2M3IzQ4LjExLjExLjA0LjAwI0EgbGEgY2FydGUgZm9vZHMgdmVuZGluZyBtYWNoaW5lcyM0OC4xMS4xMS4wMC4wMAotdW5zcHNjNyM0OC4xMS4xMS4wNS4wMCNGcm96ZW4gY29uZmVjdGlvbnMgbWFjaGluZXMjNDguMTEuMTEuMDAuMDAKLXVuc3BzYzcjNDguMTEuMTEuMDYuMDAjUGVyc29uYWwgYWNjb21tb2RhdGlvbiBpdGVtIGRpc3BlbnNlcnMjNDguMTEuMTEuMDAuMDAKLXVuc3BzYzcjNDguMTEuMTEuMDcuMDAjQ2lnYXJldHRlIG1hY2hpbmVzIzQ4LjExLjExLjAwLjAwCi11bnNwc2M3IzQ4LjExLjEyLjAwLjAwI1ByZXBhcmVkIHRvIG9yZGVyIGZvb2QgdmVuZGluZyBtYWNoaW5lcyM0OC4xMS4wMC4wMC4wMAotdW5zcHNjNyM0OC4xMS4xMi4wMS4wMCNGcmVuY2ggZnJ5IHZlbmRpbmcgbWFjaGluZXMjNDguMTEuMTIuMDAuMDAKLXVuc3BzYzcjNDguMTEuMTIuMDIuMDAjUG9wY29ybiB2ZW5kaW5nIG1hY2hpbmVzIzQ4LjExLjEyLjAwLjAwCi11bnNwc2M3IzQ4LjExLjEzLjAwLjAwI1NlcnZpY2UgYW5kIHRpY2tldCB2ZW5kaW5nIG1hY2hpbmVzIzQ4LjExLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjExLjEzLjAxLjAwI1RpY2tldCBkaXNwZW5zaW5nIG1hY2hpbmVzIzQ4LjExLjEzLjAwLjAwCi11bnNwc2M3IzQ4LjExLjEzLjAyLjAwI0luc3VyYW5jZSBwb2xpY3kgdmVuZGluZyBtYWNoaW5lcyM0OC4xMS4xMy4wMC4wMAotdW5zcHNjNyM0OC4xMS4xMy4wMy4wMCNTdGFtcCBtYWNoaW5lcyM0OC4xMS4xMy4wMC4wMAotdW5zcHNjNyM0OC4xMS4xNC4wMC4wMCNDdXJyZW5jeSB2ZW5kaW5nIG1hY2hpbmVzIzQ4LjExLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjExLjE0LjAxLjAwI0F1dG9tYXRpYyB0ZWxsZXIgbWFjaGluZXMgKEFUTXMpIzQ4LjExLjE0LjAwLjAwCi11bnNwc2M3IzQ4LjExLjE0LjAyLjAwI0JpbGwgdG8gY29pbiBjaGFuZ2VycyM0OC4xMS4xNC4wMC4wMAotdW5zcHNjNyM0OC4xMS4xNC4wMy4wMCNGb3JlaWduIGN1cnJlbmN5IGV4Y2hhbmdlIG1hY2hpbmVzIzQ4LjExLjE0LjAwLjAwCi11bnNwc2M3IzQ4LjExLjE0LjA0LjAwI0VsZWN0cm9uaWMgZnVuZHMgdHJhbnNmZXIgcG9pbnQgb2Ygc2FsZSBlcXVpcG1lbnQjNDguMTEuMTQuMDAuMDAKLXVuc3BzYzcjNDguMTIuMDAuMDAuMDAjR2FtYmxpbmcgb3Igd2FnZXJpbmcgZXF1aXBtZW50IzQ4LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjEyLjExLjAwLjAwI0NvaW4gb3BlcmF0ZWQgZ2FtYmxpbmcgbWFjaGluZXMjNDguMTIuMDAuMDAuMDAKLXVuc3BzYzcjNDguMTIuMTEuMDEuMDAjUG9rZXIgb3Igc2xvdCBtYWNoaW5lcyM0OC4xMi4xMS4wMC4wMAotdW5zcHNjNyM0OC4xMi4xMi4wMC4wMCNHYW1ibGluZyB0YWJsZXMgYW5kIGdhbWVzIzQ4LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ4LjEyLjEyLjAxLjAwI1JvdWxldHRlIHdoZWVscyM0OC4xMi4xMi4wMC4wMAotdW5zcHNjNyM0OC4xMi4xMi4wMi4wMCNDYXJkIHRhYmxlcyM0OC4xMi4xMi4wMC4wMAotdW5zcHNjNyM0OC4xMi4xMy4wMC4wMCNHYW1ibGluZyBtYW5hZ2VtZW50IGFuZCBuZXR3b3JrZWQgd2FnZXJpbmcgc3lzdGVtcyM0OC4xMi4wMC4wMC4wMAotdW5zcHNjNyM0OC4xMi4xMy4wMS4wMCNUYWJsZSBnYW1ibGluZyBtYW5hZ2VtZW50IHN5c3RlbXMjNDguMTIuMTMuMDAuMDAKLXVuc3BzYzcjNDguMTIuMTMuMDIuMDAjTmV0d29ya2VkIHdhZ2VyaW5nIGdhbWVzIzQ4LjEyLjEzLjAwLjAwCi11bnNwc2M3IzQ5LjAwLjAwLjAwLjAwI1Nwb3J0cyBhbmQgUmVjcmVhdGlvbmFsIEVxdWlwbWVudCBhbmQgU3VwcGxpZXMgYW5kIEFjY2Vzc29yaWVzIzQ5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjEwLjAwLjAwLjAwI0NvbGxlY3RpYmxlcyBhbmQgYXdhcmRzIzQ5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjEwLjE1LjAwLjAwI0FydCM0OS4xMC4wMC4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNS4wMS4wMCNQYWludGluZ3MjNDkuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTUuMDIuMDAjU2N1bHB0dXJlcyM0OS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNS4wMy4wMCNTdGF0dWFyeSM0OS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNS4wNC4wMCNQb3J0cmFpdHMjNDkuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTUuMDUuMDAjRHJhd2luZ3MjNDkuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTUuMDYuMDAjUGljdHVyZXMjNDkuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTUuMDcuMDAjTGl0aG9ncmFwaHMjNDkuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTUuMDguMDAjUG9zdGVycyM0OS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNS4wOS4wMCNEZWNvcmF0aXZlIHBvdCM0OS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNS4xMC4wMCNTY3JvbGxzIzQ5LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjEwLjE1LjExLjAwI1Bob3RvZ3JhcGhzIzQ5LjEwLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjEwLjE1LjEyLjAwI0Zsb3dlciB2YXNlcyM0OS4xMC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNi4wMC4wMCNDb2xsZWN0aWJsZXMjNDkuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTYuMDEuMDAjQW50aXF1ZXMjNDkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTYuMDIuMDAjU291dmVuaXJzIzQ5LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjEwLjE2LjAzLjAwI01pbnQgY29pbiBjb2xsZWN0aW9ucyM0OS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNi4wNC4wMCNTdGFtcCBjb2xsZWN0aW9ucyM0OS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNi4wNS4wMCNBbnRpcXVlIHJ1Z3MjNDkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTYuMDYuMDAjRGlnZ2luZ3MjNDkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTYuMDcuMDAjQ29taWMgYm9vayBjb2xsZWN0aW9ucyM0OS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNi4wOC4wMCNBbnRpcXVlIG11c2ljYWwgaW5zdHJ1bWVudHMjNDkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTYuMDkuMDAjT3JuYW1lbnRzIG9yIGRlY29yYXRpb25zIzQ5LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjEwLjE2LjEwLjAwI0tleSBjaGFpbnMjNDkuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTYuMTEuMDAjQ2hhcm1zIzQ5LjEwLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjEwLjE2LjEyLjAwI0hvbG9ncmFtcyM0OS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNi4xMy4wMCNHbGFzcyBjcnlzdGFscyM0OS4xMC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNy4wMC4wMCNBd2FyZHMjNDkuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTcuMDEuMDAjTWVkYWxzIzQ5LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ5LjEwLjE3LjAyLjAwI1Ryb3BoaWVzIzQ5LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ5LjEwLjE3LjAzLjAwI01lZGFsbGlvbnMjNDkuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTcuMDQuMDAjUGxhcXVlcyM0OS4xMC4xNy4wMC4wMAotdW5zcHNjNyM0OS4xMC4xNy4wNS4wMCNDZXJ0aWZpY2F0ZXMjNDkuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTcuMDYuMDAjUGhvdG8gYXdhcmQjNDkuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTcuMDcuMDAjQWNoaWV2ZW1lbnQgY2VydGlmaWNhdGUjNDkuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMTAuMTcuMDguMDAjQ3Jvd25zIzQ5LjEwLjE3LjAwLjAwCi11bnNwc2M3IzQ5LjExLjAwLjAwLjAwI011c2ljYWwgaW5zdHJ1bWVudHMjNDkuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTUuMDAuMDAjS2V5Ym9hcmQgaW5zdHJ1bWVudHMjNDkuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTUuMDEuMDAjTXVzaWNhbCBvcmdhbnMjNDkuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTUuMDIuMDAjQWNjb3JkaW9ucyM0OS4xMS4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMS4xNS4wMy4wMCNQaWFub3MjNDkuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTYuMDAuMDAjQnJhc3MgaW5zdHJ1bWVudHMjNDkuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTYuMDEuMDAjVHJ1bXBldHMjNDkuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTYuMDIuMDAjVHJvbWJvbmVzIzQ5LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjExLjE2LjAzLjAwI1NvdXNhcGhvbmVzIzQ5LjExLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjExLjE2LjA0LjAwI1NheG9waG9uZXMjNDkuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTYuMDUuMDAjV2hpc3RsZSM0OS4xMS4xNi4wMC4wMAotdW5zcHNjNyM0OS4xMS4xNy4wMC4wMCNXb29kd2luZCBpbnN0cnVtZW50cyM0OS4xMS4wMC4wMC4wMAotdW5zcHNjNyM0OS4xMS4xNy4wMS4wMCNDbGFyaW5ldHMjNDkuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTcuMDIuMDAjT2JvZXMjNDkuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTcuMDMuMDAjTXVzaWNhbCBmbHV0ZXMjNDkuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTcuMDQuMDAjUGljY29sb2VzIzQ5LjExLjE3LjAwLjAwCi11bnNwc2M3IzQ5LjExLjE3LjA1LjAwI011c2ljYWwgY29ybmV0cyM0OS4xMS4xNy4wMC4wMAotdW5zcHNjNyM0OS4xMS4xNy4wNi4wMCNCYWdwaXBlcyM0OS4xMS4xNy4wMC4wMAotdW5zcHNjNyM0OS4xMS4xNy4wNy4wMCNIYXJtb25pY2FzIzQ5LjExLjE3LjAwLjAwCi11bnNwc2M3IzQ5LjExLjE3LjA4LjAwI0them9vcyM0OS4xMS4xNy4wMC4wMAotdW5zcHNjNyM0OS4xMS4xOC4wMC4wMCNTdHJpbmcgaW5zdHJ1bWVudHMjNDkuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTguMDEuMDAjSGFycHNpY2hvcmRzIzQ5LjExLjE4LjAwLjAwCi11bnNwc2M3IzQ5LjExLjE4LjAyLjAwI0NsYXZpY2hvcmRzIzQ5LjExLjE4LjAwLjAwCi11bnNwc2M3IzQ5LjExLjE4LjAzLjAwI0d1aXRhcnMjNDkuMTEuMTguMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTguMDQuMDAjVmlvbGlucyM0OS4xMS4xOC4wMC4wMAotdW5zcHNjNyM0OS4xMS4xOC4wNS4wMCNIYXJwcyM0OS4xMS4xOC4wMC4wMAotdW5zcHNjNyM0OS4xMS4xOC4wNi4wMCNCYW5qb2VzIzQ5LjExLjE4LjAwLjAwCi11bnNwc2M3IzQ5LjExLjE5LjAwLjAwI1BlcmN1c3Npb24gaW5zdHJ1bWVudHMjNDkuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTkuMDEuMDAjQ3ltYmFscyM0OS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0OS4xMS4xOS4wMi4wMCNCZWxscyM0OS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0OS4xMS4xOS4wMy4wMCNUYW1ib3VyaW5lcyM0OS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0OS4xMS4xOS4wNC4wMCNDYXN0YW5ldHMjNDkuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTkuMDUuMDAjRHJ1bXMjNDkuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMTkuMDYuMDAjWHlsb3Bob25lcyM0OS4xMS4xOS4wMC4wMAotdW5zcHNjNyM0OS4xMS4xOS4wNy4wMCNCb2RocmFuIzQ5LjExLjE5LjAwLjAwCi11bnNwc2M3IzQ5LjExLjIwLjAwLjAwI011c2ljYWwgaW5zdHJ1bWVudCBwYXJ0cyBhbmQgYWNjZXNzb3JpZXMjNDkuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMjAuMDEuMDAjTWV0cm9ub21lcyM0OS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0OS4xMS4yMC4wMi4wMCNSZWVkcyM0OS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0OS4xMS4yMC4wMy4wMCNJbnN0cnVtZW50IHN0cmluZ3Mgb3IgcGlja3MjNDkuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMjAuMDQuMDAjVHVuaW5nIHBpbnMjNDkuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDkuMTEuMjAuMDUuMDAjTXVzaWNhbCBpbnN0cnVtZW50IHN0YW5kcyBvciBzaGVldCBob2xkZXJzIzQ5LjExLjIwLjAwLjAwCi11bnNwc2M3IzQ5LjExLjIwLjA2LjAwI0FjY2Vzc29yaWVzIGZvciBzdHJpbmdlZCBpbnN0cnVtZW50cyM0OS4xMS4yMC4wMC4wMAotdW5zcHNjNyM0OS4xMS4yMC4wNy4wMCNQZXJjdXNzaW9uIGluc3RydW1lbnQgYWNjZXNzb3J5IzQ5LjExLjIwLjAwLjAwCi11bnNwc2M3IzQ5LjExLjIwLjA4LjAwI011c2ljIGJveGVzIG9yIG1lY2hhbmlzbXMjNDkuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNDkuMTIuMDAuMDAuMDAjQ2FtcGluZyBhbmQgb3V0ZG9vciBlcXVpcG1lbnQgYW5kIGFjY2Vzc29yaWVzIzQ5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjEyLjE1LjAwLjAwI0NhbXBpbmcgYW5kIG91dGRvb3IgZXF1aXBtZW50IzQ5LjEyLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjEyLjE1LjAxLjAwI1RhcnBhdWxpbnMjNDkuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTIuMTUuMDIuMDAjU2xlZXBpbmcgcGFkcyM0OS4xMi4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMi4xNS4wMy4wMCNUZW50cyM0OS4xMi4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMi4xNS4wNC4wMCNTbGVlcGluZyBiYWdzIzQ5LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjEyLjE1LjA1LjAwI0ljZSBjaGVzdHMjNDkuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTIuMTUuMDYuMDAjVGVudCByZXBhaXIga2l0cyM0OS4xMi4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMi4xNS4wNy4wMCNQbmV1bWF0aWMgbWF0dHJlc3NlcyM0OS4xMi4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMi4xNS4wOC4wMCNNb3NxdWl0byBuZXRzIzQ5LjEyLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjEyLjE1LjA5LjAwI0NhbXBpbmcgb3Igb3V0ZG9vciBzdG92ZXMjNDkuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTIuMTUuMTAuMDAjRHJpbmsgY29vbGVycyM0OS4xMi4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMi4xNi4wMC4wMCNDYW1waW5nIGZ1cm5pdHVyZSM0OS4xMi4wMC4wMC4wMAotdW5zcHNjNyM0OS4xMi4xNi4wMS4wMCNDYW1waW5nIGNoYWlycyBvciBzdG9vbHMjNDkuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTIuMTYuMDIuMDAjQ2FtcGluZyB0YWJsZXMjNDkuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTIuMTYuMDMuMDAjQ2FtcGluZyBjb3RzIzQ5LjEyLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjEzLjAwLjAwLjAwI0Zpc2hpbmcgYW5kIGh1bnRpbmcgZXF1aXBtZW50IzQ5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjEzLjE1LjAwLjAwI0Zpc2hpbmcgdGFja2xlIzQ5LjEzLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjEzLjE1LjAxLjAwI0Zpc2hpbmcgcm9kcyM0OS4xMy4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMy4xNS4wMi4wMCNGaXNoaW5nIGxpbmUjNDkuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTMuMTUuMDMuMDAjRmlzaGluZyByZWVscyM0OS4xMy4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMy4xNS4wNC4wMCNGaXNoaW5nIGx1cmVzIzQ5LjEzLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjEzLjE1LjA1LjAwI0Zpc2hpbmcgYmFpdCM0OS4xMy4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMy4xNS4wNi4wMCNGaXNoaW5nIHdlaWdodHMgb3Igc2lua2VycyM0OS4xMy4xNS4wMC4wMAotdW5zcHNjNyM0OS4xMy4xNi4wMC4wMCNIdW50aW5nIHByb2R1Y3RzIzQ5LjEzLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjEzLjE2LjAxLjAwI0FuaW1hbCBjYWxscyM0OS4xMy4xNi4wMC4wMAotdW5zcHNjNyM0OS4xMy4xNi4wMi4wMCNTcG9ydGluZyBkZWNveXMjNDkuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTMuMTYuMDMuMDAjU3BvcnRpbmcgdHJhcHMjNDkuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTMuMTYuMDQuMDAjU3BvcnRpbmcgc2hvdGd1bnMjNDkuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTMuMTYuMDUuMDAjU3BvcnRpbmcgcmlmbGVzIzQ5LjEzLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjEzLjE2LjA2LjAwI1Nwb3J0aW5nIGFtbXVuaXRpb24jNDkuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTMuMTYuMDcuMDAjR3VuIGJhcnJlbCM0OS4xMy4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNC4wMC4wMC4wMCNXYXRlcnNwb3J0cyBlcXVpcG1lbnQjNDkuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTQuMTUuMDAuMDAjU2N1YmEgYW5kIHNub3JrZWxpbmcgZ2VhciM0OS4xNC4wMC4wMC4wMAotdW5zcHNjNyM0OS4xNC4xNS4wMS4wMCNCb3V5YW5jeSBjb21wZW5zYXRvcnMjNDkuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTQuMTUuMDIuMDAjU2N1YmEgdGFua3MjNDkuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTQuMTUuMDMuMDAjU2N1YmEgcmVndWxhdG9ycyM0OS4xNC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNC4xNS4wNC4wMCNEaXZpbmcgaW5zdHJ1bWVudHMgb3IgYWNjZXNzb3JpZXMjNDkuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTQuMTUuMDUuMDAjTWFza3Mgb3IgZmlucyBvciBzbm9ya2VscyM0OS4xNC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNC4xNS4wNi4wMCNXZXRzdWl0cyM0OS4xNC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNC4xNS4wNy4wMCNEcnlzdWl0cyM0OS4xNC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNC4xNi4wMC4wMCNTdXJmIGFuZCBzd2ltIGVxdWlwbWVudCBhbmQgYWNjZXNzb3JpZXMjNDkuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTQuMTYuMDIuMDAjV2FrZWJvYXJkcyBvciBrbmVlYm9hcmRzIG9yIGJvb2dpZWJvYXJkcyM0OS4xNC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNC4xNi4wMy4wMCNXYXRlciBza2lzIG9yIGFjY2Vzc29yaWVzIzQ5LjE0LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE0LjE2LjA0LjAwI1dpbmRzdXJmaW5nIGVxdWlwbWVudCM0OS4xNC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNC4xNi4wNS4wMCNTdXJmYm9hcmRzIzQ5LjE0LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE0LjE2LjA2LjAwI1N3aW0gZ29nZ2xlcyBvciBzd2ltIGZpbnMjNDkuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTQuMTYuMDcuMDAjUGFyYXNhaWxpbmcgZXF1aXBtZW50IzQ5LjE0LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE1LjAwLjAwLjAwI1dpbnRlciBzcG9ydHMgZXF1aXBtZW50IzQ5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjE1LjE1LjAwLjAwI1NraWluZyBhbmQgc25vd2JvYXJkaW5nIGVxdWlwbWVudCM0OS4xNS4wMC4wMC4wMAotdW5zcHNjNyM0OS4xNS4xNS4wMS4wMCNTa2kgYm9vdHMjNDkuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTUuMTUuMDIuMDAjU2tpcyM0OS4xNS4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNS4xNS4wMy4wMCNTa2kgcG9sZXMjNDkuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTUuMTUuMDQuMDAjQmluZGluZ3MjNDkuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTUuMTUuMDUuMDAjU25vd2JvYXJkcyM0OS4xNS4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNS4xNi4wMC4wMCNTa2F0aW5nIGFuZCBpY2UgaG9ja2V5IGVxdWlwbWVudCM0OS4xNS4wMC4wMC4wMAotdW5zcHNjNyM0OS4xNS4xNi4wMS4wMCNIb2NrZXkgcHVja3MjNDkuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTUuMTYuMDIuMDAjSWNlIHNrYXRlcyM0OS4xNS4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNS4xNi4wMy4wMCNIb2NrZXkgc3RpY2tzIzQ5LjE1LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjAwLjAwLjAwI0ZpZWxkIGFuZCBjb3VydCBzcG9ydHMgZXF1aXBtZW50IzQ5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjAwLjAwI0ZpZWxkIHNwb3J0cyBlcXVpcG1lbnQjNDkuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMDEuMDAjRm9vdGJhbGwgYmxvY2tpbmcgc2xlZHMjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMDIuMDAjQmFzZWJhbGwgZ2xvdmVzIzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjAzLjAwI0Jhc2ViYWxscyM0OS4xNi4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNS4wNC4wMCNGb290YmFsbHMjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMDUuMDAjU29jY2VyIGJhbGxzIzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjA2LjAwI0Jhc2ViYWxsIGJhdHMjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMDcuMDAjQmFzZWJhbGwgYmFzZXMjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMDguMDAjUGl0Y2hpbmcgbWFjaGluZXMjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMDkuMDAjU29mdGJhbGxzIzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjEwLjAwI0Zvb3RiYWxsIHRhY2tsaW5nIGR1bW1pZXMjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMTEuMDAjTGFjcm9zc2Ugc3RpY2tzIzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjEyLjAwI0xhY3Jvc3NlIGJhbGxzIzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjEzLjAwI0ZpZWxkIGhvY2tleSBzdGlja3MjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMTQuMDAjRmllbGQgaG9ja2V5IGJhbGxzIzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjE1LjAwI1RlYW0gaGFuZGJhbGwgYmFsbHMjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMTYuMDAjVGVhbSBoYW5kYmFsbCBzY2hvb2wgc2V0cyM0OS4xNi4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNS4xNy4wMCNCYXNlYmFsbCBvciBzb2Z0YmFsbCBwcm90ZWN0aXZlIGdlYXIjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMTguMDAjQmFzZWJhbGwgYmF0dGluZyBhaWRzIzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjE5LjAwI0Jhc2ViYWxsIGJhY2tzdG9wcyBvciBmZW5jZXMjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMjAuMDAjU29mdGJhbGwgYmF0cyM0OS4xNi4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNS4yMS4wMCNTb2Z0YmFsbCBnbG92ZXMjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMjIuMDAjRm9vdGJhbGwga2lja2luZyB0ZWVzIzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjIzLjAwI0ZsYWcgZm9vdGJhbGwgZ2VhciM0OS4xNi4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNS4yNC4wMCNTb2NjZXIgZmllbGQgbWFya2luZyBlcXVpcG1lbnQjNDkuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTUuMjUuMDAjU29jY2VyIHByb3RlY3RpdmUgZXF1aXBtZW50IzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE1LjI2LjAwI1NvY2NlciB0cmFpbmluZyBhaWRzIzQ5LjE2LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE2LjAwLjAwI1JhY3F1ZXQgYW5kIGNvdXJ0IHNwb3J0cyBlcXVpcG1lbnQjNDkuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTYuMDEuMDAjUmFjcXVldGJhbGwgcmFja2V0cyM0OS4xNi4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNi4wMi4wMCNCYWRtaW50b24gcmFja2V0cyM0OS4xNi4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNi4wMy4wMCNCYXNrZXRiYWxscyM0OS4xNi4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNi4wNC4wMCNUZW5uaXMgYmFsbHMjNDkuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTYuMDUuMDAjUmFjcXVldCBiYWxscyM0OS4xNi4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNi4wNi4wMCNTcXVhc2ggYmFsbHMjNDkuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTYuMDcuMDAjVGVubmlzIHJhY3F1ZXRzIzQ5LjE2LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE2LjA4LjAwI1ZvbGxleWJhbGxzIzQ5LjE2LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE2LjA5LjAwI0JhZG1pbnRvbiBiaXJkaWVzIG9yIHNodXR0bGVjb2NrcyM0OS4xNi4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNi4xMC4wMCNTcXVhc2ggcmFjcXVldHMjNDkuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTYuMTEuMDAjVGVubmlzIHRyYWluaW5nIGFpZHMjNDkuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTYuMTIuMDAjVGVubmlzIGNvdXJ0IGVxdWlwbWVudCM0OS4xNi4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNi4xMy4wMCNWb2xsZXliYWxsIHN0b3JhZ2UgZm9yIGJhbGxzIG9yIG5ldHMjNDkuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTYuMTQuMDAjVm9sbGV5YmFsbCBneW1uYXNpdW0gc3RhbmRhcmRzIzQ5LjE2LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE2LjE1LjAwI0Jhc2tldGJhbGwgY29tcGxldGUgZ2FtZSBzeXN0ZW1zIzQ5LjE2LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE2LjE2LjAwI0Zsb29yIGhvY2tleSBwcm90ZWN0aXZlIGVxdWlwbWVudCM0OS4xNi4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNi4xNy4wMCNUZXRoZXIgcG9sZXMjNDkuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTYuMTguMDAjVGV0aGVyIGJhbGxzIzQ5LjE2LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE3LjAwLjAwI1RyYWNrIHNwb3J0cyBlcXVpcG1lbnQjNDkuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTcuMDEuMDAjSmF2ZWxpbnMjNDkuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMTYuMTcuMDIuMDAjSnVtcGluZyBiYXJzIzQ5LjE2LjE3LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE3LjAzLjAwI0Rpc2N1cyM0OS4xNi4xNy4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNy4wNC4wMCNTaG90cHV0cyM0OS4xNi4xNy4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNy4wNS4wMCNWYXVsdGluZyBwb2xlcyM0OS4xNi4xNy4wMC4wMAotdW5zcHNjNyM0OS4xNi4xNy4wNi4wMCNIdXJkbGVzIzQ5LjE2LjE3LjAwLjAwCi11bnNwc2M3IzQ5LjE2LjE3LjA3LjAwI0JhdG9ucyM0OS4xNi4xNy4wMC4wMAotdW5zcHNjNyM0OS4xNy4wMC4wMC4wMCNHeW1uYXN0aWNzIGFuZCBib3hpbmcgZXF1aXBtZW50IzQ5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjE3LjE1LjAwLjAwI0d5bW5hc3RpY3MgZXF1aXBtZW50IzQ5LjE3LjAwLjAwLjAwCi11bnNwc2M3IzQ5LjE3LjE1LjAxLjAwI0d5bW5hc3RpYyBiYXJzIG9yIGJlYW1zIzQ5LjE3LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE3LjE1LjAyLjAwI0d5bW5hc3RpYyByb3BlcyBvciByaW5ncyBvciBjbGltYmluZyBhY2Nlc3NvcmllcyM0OS4xNy4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNy4xNS4wMy4wMCNHeW1uYXN0aWMgdmF1bHRpbmcgZXF1aXBtZW50IzQ5LjE3LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE3LjE1LjA0LjAwI0d5bW5hc3RpYyB0cmFtcG9saW5lcyM0OS4xNy4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNy4xNS4wNS4wMCNCYWxhbmNlIGVxdWlwbWVudCM0OS4xNy4xNS4wMC4wMAotdW5zcHNjNyM0OS4xNy4xNi4wMC4wMCNCb3hpbmcgZXF1aXBtZW50IzQ5LjE3LjAwLjAwLjAwCi11bnNwc2M3IzQ5LjE3LjE2LjAxLjAwI0JveGluZyByaW5ncyM0OS4xNy4xNi4wMC4wMAotdW5zcHNjNyM0OS4xNy4xNi4wMi4wMCNQdW5jaGluZyBiYWdzIzQ5LjE3LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE3LjE2LjAzLjAwI0JveGluZyBnbG92ZXMjNDkuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTguMDAuMDAuMDAjVGFyZ2V0IGFuZCB0YWJsZSBnYW1lcyBhbmQgZXF1aXBtZW50IzQ5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjE4LjE1LjAwLjAwI1RhYmxlIGdhbWVzIGFuZCBlcXVpcG1lbnQjNDkuMTguMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTUuMDEuMDAjQmlsbGlhcmQgdGFibGVzIzQ5LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE4LjE1LjAyLjAwI1Bvb2wgY3VlcyM0OS4xOC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNS4wMy4wMCNTaHVmZmxlYm9hcmQjNDkuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTUuMDQuMDAjUGluYmFsbCBnYW1lcyM0OS4xOC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNS4wNS4wMCNCaWxsaWFyZCBiYWxscyM0OS4xOC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNS4wNi4wMCNBaXIgaG9ja2V5IHRhYmxlcyBvciBhY2Nlc3NvcmllcyM0OS4xOC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNS4wNy4wMCNUZW5uaXMgdGFibGVzIzQ5LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE4LjE1LjA4LjAwI1RhYmxlIHRlbm5pcyBwYWRkbGVzIzQ5LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE4LjE1LjA5LjAwI1RhYmxlIHRlbm5pcyBiYWxscyM0OS4xOC4xNS4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNS4xMC4wMCNGb29zYmFsbCB0YWJsZXMjNDkuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTUuMTEuMDAjRm9vc2JhbGxzIzQ5LjE4LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjE4LjE1LjEyLjAwI0Zvb3NiYWxsIHJlcGxhY2VtZW50IHBsYXllcnMjNDkuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTUuMTMuMDAjQmlsbGlhcmQgY3VlIHRpcHMjNDkuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTUuMTQuMDAjQmlsbGlhcmQgY2hhbGsjNDkuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTUuMTUuMDAjQmlsbGlhcmQgcmFja3MjNDkuMTguMTUuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTYuMDAuMDAjVGFyZ2V0IGdhbWVzIGFuZCBlcXVpcG1lbnQjNDkuMTguMDAuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTYuMDEuMDAjQXJjaGVyeSB0YXJnZXRzIzQ5LjE4LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE4LjE2LjAyLjAwI0FyY2hlcnkgYm93cyM0OS4xOC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNi4wMy4wMCNBcmNoZXJ5IGFycm93cyM0OS4xOC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNi4wNC4wMCNEYXJ0cyM0OS4xOC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNi4wNS4wMCNEYXJ0IGJvYXJkcyM0OS4xOC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNi4wNi4wMCNUcmFwc2hvb3RpbmcgZXF1aXBtZW50IzQ5LjE4LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE4LjE2LjA3LjAwI1Rocm93aW5nIHRhcmdldHMjNDkuMTguMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTYuMDguMDAjQXJjaGVyeSBib3cgc3RyaW5ncyM0OS4xOC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNi4wOS4wMCNBcmNoZXJ5IGdsb3ZlcyM0OS4xOC4xNi4wMC4wMAotdW5zcHNjNyM0OS4xOC4xNi4xMC4wMCNBcmNoZXJ5IGFybSBndWFyZHMjNDkuMTguMTYuMDAuMDAKLXVuc3BzYzcjNDkuMTguMTYuMTEuMDAjQXJjaGVyeSB0YXJnZXQgc3RhbmRzIzQ5LjE4LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjE4LjE2LjEyLjAwI0FyY2hlcnkgYmFja3N0b3BzIzQ5LjE4LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjIwLjAwLjAwLjAwI0ZpdG5lc3MgZXF1aXBtZW50IzQ5LjAwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjIwLjE1LjAwLjAwI0Flcm9iaWMgdHJhaW5pbmcgZXF1aXBtZW50IzQ5LjIwLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjIwLjE1LjAxLjAwI1RyZWFkbWlsbHMjNDkuMjAuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjAuMTUuMDIuMDAjU3RhaXIgY2xpbWJlcnMjNDkuMjAuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjAuMTUuMDMuMDAjU3RhdGlvbmFyeSBiaWN5Y2xlcyM0OS4yMC4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMC4xNS4wNC4wMCNSb3dpbmcgbWFjaGluZXMjNDkuMjAuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjAuMTUuMTIuMDAjSnVtcCByb3BlcyM0OS4yMC4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMC4xNS4xMy4wMCNFeGVyY2lzZSB0cmFtcG9saW5lcyM0OS4yMC4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMC4xNS4xNC4wMCNFeGVyY2lzZSBiYWxscyM0OS4yMC4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMC4xNS4xNS4wMCNTdGVwIGFlcm9iaWMgZXF1aXBtZW50IzQ5LjIwLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIwLjE2LjAwLjAwI1dlaWdodCBhbmQgcmVzaXN0YW5jZSB0cmFpbmluZyBlcXVpcG1lbnQjNDkuMjAuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMjAuMTYuMDEuMDAjRHVtYmJlbGxzIzQ5LjIwLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjIwLjE2LjAyLjAwI0JhcmJlbGxzIzQ5LjIwLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjIwLjE2LjAzLjAwI0xvd2VyIGJvZHkgcmVzaXN0YW5jZSBtYWNoaW5lcyM0OS4yMC4xNi4wMC4wMAotdW5zcHNjNyM0OS4yMC4xNi4wNC4wMCNXZWlnaHQgYmVuY2hlcyBvciByYWNrcyM0OS4yMC4xNi4wMC4wMAotdW5zcHNjNyM0OS4yMC4xNi4wNS4wMCNVcHBlciBib2R5IHJlc2lzdGFuY2UgbWFjaGluZXMjNDkuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMjAuMTYuMDYuMDAjRml0bmVzcyB3ZWlnaHRzIzQ5LjIwLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjIwLjE2LjA3LjAwI1BpbGF0ZXMgbWFjaGluZXMjNDkuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMjAuMTYuMDguMDAjR3JpcCBzdHJlbmd0aGVuZXIjNDkuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMjAuMTYuMDkuMDAjUmVzaXN0YW5jZSBiYW5kcyM0OS4yMC4xNi4wMC4wMAotdW5zcHNjNyM0OS4yMC4xNi4xMC4wMCNSZXNpc3RhbmNlIHR1YmVzIzQ5LjIwLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjIxLjAwLjAwLjAwI090aGVyIHNwb3J0cyM0OS4wMC4wMC4wMC4wMAotdW5zcHNjNyM0OS4yMS4xNi4wMC4wMCNHb2xmIGVxdWlwbWVudCM0OS4yMS4wMC4wMC4wMAotdW5zcHNjNyM0OS4yMS4xNi4wMS4wMCNHb2xmIGJhZ3MjNDkuMjEuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMjEuMTYuMDIuMDAjR29sZiBiYWxscyM0OS4yMS4xNi4wMC4wMAotdW5zcHNjNyM0OS4yMS4xNi4wMy4wMCNHb2xmIGNsdWJzIzQ5LjIxLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjIxLjE2LjA0LjAwI0dvbGYgdGVlcyM0OS4yMS4xNi4wMC4wMAotdW5zcHNjNyM0OS4yMS4xNi4wNS4wMCNHb2xmIGNsdWIgaGVhZCBjb3ZlcnMjNDkuMjEuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMjEuMTYuMDYuMDAjR29sZiBnbG92ZXMjNDkuMjEuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMjEuMTYuMDcuMDAjRGl2b3QgZml4ZXJzIzQ5LjIxLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjIxLjE3LjAwLjAwI0Jvd2xpbmcgZXF1aXBtZW50IGFuZCBzdXBwbGllcyBhbmQgYWNjZXNzb3JpZXMjNDkuMjEuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMjEuMTcuMDEuMDAjQm93bGluZyBlcXVpcG1lbnQjNDkuMjEuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMjEuMTcuMDIuMDAjQm93bGluZyBzdXBwbGllcyM0OS4yMS4xNy4wMC4wMAotdW5zcHNjNyM0OS4yMS4xNy4wMy4wMCNCb3dsaW5nIGFjY2Vzc29yaWVzIzQ5LjIxLjE3LjAwLjAwCi11bnNwc2M3IzQ5LjIxLjE4LjAwLjAwI1BoeXNpY2FsIGVkdWNhdGlvbiBjbGFzc3Jvb20gZXF1aXBtZW50IzQ5LjIxLjAwLjAwLjAwCi11bnNwc2M3IzQ5LjIxLjE4LjAxLjAwI1BhcmFjaHV0ZSBlcXVpcG1lbnQjNDkuMjEuMTguMDAuMDAKLXVuc3BzYzcjNDkuMjEuMTguMDIuMDAjSHVsYSBob29wcyBvciBob29wIGVxdWlwbWVudCM0OS4yMS4xOC4wMC4wMAotdW5zcHNjNyM0OS4yMS4xOC4wMy4wMCNPcmllbnRlZXJpbmcgZXF1aXBtZW50IzQ5LjIxLjE4LjAwLjAwCi11bnNwc2M3IzQ5LjIxLjE4LjA0LjAwI1RlYW0gaWRlbnRpZmljYXRpb24gbWF0ZXJpYWxzIG9yIG1hcmtlcnMjNDkuMjEuMTguMDAuMDAKLXVuc3BzYzcjNDkuMjEuMTguMDUuMDAjTGFueWFyZHMjNDkuMjEuMTguMDAuMDAKLXVuc3BzYzcjNDkuMjEuMTguMDYuMDAjUGh5c2ljYWwgZWR1Y2F0aW9uIGVxdWlwbWVudCBzdG9yYWdlIzQ5LjIxLjE4LjAwLjAwCi11bnNwc2M3IzQ5LjIxLjE4LjA3LjAwI1BoeXNpY2FsIGVkdWNhdGlvbiBhc3Nlc3NtZW50IHRvb2xzIzQ5LjIxLjE4LjAwLjAwCi11bnNwc2M3IzQ5LjIyLjAwLjAwLjAwI1Nwb3J0cyBhY2Nlc3NvcmllcyM0OS4wMC4wMC4wMC4wMAotdW5zcHNjNyM0OS4yMi4xNS4wMC4wMCNTcG9ydCBhY2Nlc3NvcmllcyM0OS4yMi4wMC4wMC4wMAotdW5zcHNjNyM0OS4yMi4xNS4wMS4wMCNTcG9ydCBzY29yZWJvYXJkcyM0OS4yMi4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMi4xNS4wMi4wMCNTcG9ydCBnb2FscyM0OS4yMi4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMi4xNS4wMy4wMCNTcG9ydCBzYWZldHkgZXF1aXBtZW50IG90aGVyIHRoYW4gaGVhZGdlYXIjNDkuMjIuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjIuMTUuMDQuMDAjU3BvcnQgc2FmZXR5IGhlYWRnZWFyIzQ5LjIyLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIyLjE1LjA1LjAwI1Nwb3J0IG5ldHMgb3IgbmV0dGluZyM0OS4yMi4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMi4xNS4wNi4wMCNTcG9ydCBtYXRzIG9yIHBhZGRpbmcjNDkuMjIuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjIuMTUuMDcuMDAjQmFza2V0YmFsbCBiYWNrYm9hcmRzIzQ5LjIyLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIyLjE1LjA4LjAwI0Jhc2tldGJhbGwgaG9vcCM0OS4yMi4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMi4xNS4wOS4wMCNSb2xsZXIgc2thdGVzIG9yIHJvbGxlciBibGFkZXMjNDkuMjIuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMDAuMDAuMDAjVG95cyBhbmQgZ2FtZXMjNDkuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMDAuMDAjVG95cyM0OS4yMy4wMC4wMC4wMAotdW5zcHNjNyM0OS4yMy4xNS4wMS4wMCNNdXNpY2FsIHRveXMjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMDIuMDAjRWR1Y2F0aW9uYWwgdG95cyM0OS4yMy4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMy4xNS4wMy4wMCNUb3kgYmFsbG9vbnMgb3IgYmFsbHMjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMDQuMDAjRG9sbHMjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMDUuMDAjRG9sbCBob3VzZXMjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMDYuMDAjU3R1ZmZlZCBhbmltYWxzIG9yIHB1cHBldHMjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMDcuMDAjUGxheWhvdXNlcyM0OS4yMy4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMy4xNS4wOC4wMCNCdWlsZGluZyBibG9ja3MjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMDkuMDAjUmlkaW5nIHRveXMjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMTAuMDAjUHVsbCB0b3lzIzQ5LjIzLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIzLjE1LjExLjAwI0NoaWxkcmVucyBzY2llbmNlIGtpdHMjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMTIuMDAjVG95IHZlaGljbGVzIzQ5LjIzLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIzLjE1LjEzLjAwI1RveSB0cmFpbnMjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMTQuMDAjSW5mbGF0YWJsZSB0b3lzIzQ5LjIzLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIzLjE1LjE1LjAwI0RvbGwgcGFydHMgb3IgYWNjZXNzb3JpZXMjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMTYuMDAjWW8geW9zIzQ5LjIzLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIzLjE1LjE3LjAwI0tpdGVzIzQ5LjIzLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIzLjE1LjE4LjAwI1BvZ3MjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMTkuMDAjS2FsZWlkb3Njb3BlcyM0OS4yMy4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMy4xNS4yMC4wMCNQb20gcG9tcyM0OS4yMy4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMy4xNS4yMS4wMCNQaW5hdGFzIzQ5LjIzLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIzLjE1LjIyLjAwI0Jvb21lcmFuZ3MjNDkuMjMuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTUuMjMuMDAjRmx5aW5nIGRpc2NzIzQ5LjIzLjE1LjAwLjAwCi11bnNwc2M3IzQ5LjIzLjE1LjI0LjAwI1RveSBwYWlscyM0OS4yMy4xNS4wMC4wMAotdW5zcHNjNyM0OS4yMy4xNi4wMC4wMCNHYW1lcyM0OS4yMy4wMC4wMC4wMAotdW5zcHNjNyM0OS4yMy4xNi4wMS4wMCNFZHVjYXRpb25hbCBnYW1lcyM0OS4yMy4xNi4wMC4wMAotdW5zcHNjNyM0OS4yMy4xNi4wMi4wMCNCb2FyZCBnYW1lcyM0OS4yMy4xNi4wMC4wMAotdW5zcHNjNyM0OS4yMy4xNi4wMy4wMCNQbGF5aW5nIGNhcmRzIzQ5LjIzLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjIzLjE2LjA0LjAwI1ZpZGVvIGdhbWVzIzQ5LjIzLjE2LjAwLjAwCi11bnNwc2M3IzQ5LjIzLjE2LjA1LjAwI1B1enpsZXMjNDkuMjMuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMjMuMTYuMDYuMDAjRGljZSM0OS4yMy4xNi4wMC4wMAotdW5zcHNjNyM0OS4yNC4wMC4wMC4wMCNSZWNyZWF0aW9uIGFuZCBwbGF5Z3JvdW5kIGFuZCBzd2ltbWluZyBhbmQgc3BhIGVxdWlwbWVudCBhbmQgc3VwcGxpZXMjNDkuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMDAuMDAjUGxheWdyb3VuZCBlcXVpcG1lbnQjNDkuMjQuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMDEuMDAjUGxheWdyb3VuZCBzd2luZ3MjNDkuMjQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMDIuMDAjUGxheWdyb3VuZCBjbGltYmluZyBhcHBhcmF0dXMjNDkuMjQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMDMuMDAjUGxheWdyb3VuZCBtZXJyeSBnbyByb3VuZHMjNDkuMjQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMDQuMDAjUGxheWdyb3VuZCBzbGlkZXMjNDkuMjQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMDUuMDAjUGxheWdyb3VuZCBzZWUgc2F3cyM0OS4yNC4xNS4wMC4wMAotdW5zcHNjNyM0OS4yNC4xNS4wNi4wMCNQbGF5Z3JvdW5kIHR1bm5lbHMjNDkuMjQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMDcuMDAjUGxheWdyb3VuZCBzYW5kYm94ZXMjNDkuMjQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMDguMDAjUGxheWdyb3VuZCBibGVhY2hlcnMjNDkuMjQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMDkuMDAjV2FsbCBjbGltYmluZyBlcXVpcG1lbnQjNDkuMjQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTUuMTAuMDAjUm9wZSBjbGltYmluZyBlcXVpcG1lbnQjNDkuMjQuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTYuMDAuMDAjUmVjcmVhdGlvbmFsIGVxdWlwbWVudCM0OS4yNC4wMC4wMC4wMAotdW5zcHNjNyM0OS4yNC4xNi4wMS4wMCNDcm9xdWV0IHNldHMjNDkuMjQuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTYuMDIuMDAjTGF3biBib3dsaW5nIGVxdWlwbWVudCM0OS4yNC4xNi4wMC4wMAotdW5zcHNjNyM0OS4yNC4xNi4wMy4wMCNIb3JzZXNob2UgZXF1aXBtZW50IzQ5LjI0LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjI0LjE2LjA0LjAwI0xhd24gZGFydHMjNDkuMjQuMTYuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTcuMDAuMDAjU3dpbW1pbmcgcG9vbCBhbmQgc3BhIGVxdWlwbWVudCBhbmQgc3VwcGxpZXMjNDkuMjQuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTcuMDEuMDAjRGl2aW5nIGJvYXJkcyM0OS4yNC4xNy4wMC4wMAotdW5zcHNjNyM0OS4yNC4xNy4wMi4wMCNQb29sIHNsaWRlcyM0OS4yNC4xNy4wMC4wMAotdW5zcHNjNyM0OS4yNC4xNy4wMy4wMCNTcGEgYmxvd2VyIzQ5LjI0LjE3LjAwLjAwCi11bnNwc2M3IzQ5LjI0LjE3LjA0LjAwI1dhdGVyIHRlc3Qga2l0IG9yIHNvbHV0aW9ucyM0OS4yNC4xNy4wMC4wMAotdW5zcHNjNyM0OS4yNC4xNy4wNS4wMCNBdXRvbWF0aWMgcG9vbCBjbGVhbmVyIzQ5LjI0LjE3LjAwLjAwCi11bnNwc2M3IzQ5LjI0LjE3LjA2LjAwI1NvbGFyIGJsYW5rZXQjNDkuMjQuMTcuMDAuMDAKLXVuc3BzYzcjNDkuMjQuMTcuMDcuMDAjUG9vbCBvciBzcGEgaGVhdGVyIzQ5LjI0LjE3LjAwLjAwCi11bnNwc2M3IzQ5LjI0LjE3LjA4LjAwI096b25lIGdlbmVyYXRvciM0OS4yNC4xNy4wMC4wMAotdW5zcHNjNyM0OS4yNC4xNy4wOS4wMCNTb2xhciBibGFua2V0IHJlZWxzIzQ5LjI0LjE3LjAwLjAwCi11bnNwc2M3IzQ5LjI1LjAwLjAwLjAwI0FydHMgYW5kIGNyYWZ0cyBzdXBwbGllcyM0OS4wMC4wMC4wMC4wMAotdW5zcHNjNyM0OS4yNS4xNS4wMC4wMCNBcnQgc3VwcGxpZXMjNDkuMjUuMDAuMDAuMDAKLXVuc3BzYzcjNDkuMjUuMTUuMDEuMDAjQXJ0IHBhaW50cyM0OS4yNS4xNS4wMC4wMAotdW5zcHNjNyM0OS4yNS4xNS4wMi4wMCNNb2RlbGluZyBjbGF5IzQ5LjI1LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjI1LjE1LjAzLjAwI0FydCBwYWludGJydXNoZXMjNDkuMjUuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjUuMTUuMDQuMDAjUGljdHVyZSBvciBwb3N0ZXIgZnJhbWVzIzQ5LjI1LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjI1LjE1LjA1LjAwI1BpY3R1cmUgYWxidW1zIG9yIG9yZ2FuaXplcnMjNDkuMjUuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjUuMTUuMDYuMDAjQ3V0dGluZyBtYXRzIzQ5LjI1LjE1LjAwLjAwCi11bnNwc2M3IzQ5LjI1LjE1LjA3LjAwI0NhcnZpbmcgYm9hcmQjNDkuMjUuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjUuMTUuMDguMDAjUGFsZXR0ZXMjNDkuMjUuMTUuMDAuMDAKLXVuc3BzYzcjNDkuMjUuMTUuMDkuMDAjR2xpdHRlciM0OS4yNS4xNS4wMC4wMAotdW5zcHNjNyM0OS4yNS4xNS4xMC4wMCNCZWFkcyM0OS4yNS4xNS4wMC4wMAotdW5zcHNjNyM0OS4yNS4xNS4xMS4wMCNEZWNvcmF0aXZlIHRhcGVzIG9yIHR3aXN0cyM0OS4yNS4xNS4wMC4wMAotdW5zcHNjNyM0OS4yNS4xNi4wMC4wMCNDcmFmdCBzdXBwbGllcyM0OS4yNS4wMC4wMC4wMAotdW5zcHNjNyM0OS4yNS4xNi4wMS4wMCNNb2RlbCBraXRzIzQ5LjI1LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjI1LjE2LjAyLjAwI1BvdHRlcnMgd2hlZWxzIzQ5LjI1LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjI1LjE2LjAzLjAwI0RlY29yYXRpdmUgYnV0dG9ucyM0OS4yNS4xNi4wMC4wMAotdW5zcHNjNyM0OS4yNS4xNi4wNC4wMCNEZWNvcmF0aXZlIHNoYXBlcyBvciBzdHJpbmdzIzQ5LjI1LjE2LjAwLjAwCi11bnNwc2M3IzQ5LjI1LjE2LjA1LjAwI0NyYWZ0IGtpdHMjNDkuMjUuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMDAuMDAuMDAuMDAjRm9vZCBCZXZlcmFnZSBhbmQgVG9iYWNjbyBQcm9kdWN0cyM1MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4xMC4wMC4wMC4wMCNGcnVpdHMgYW5kIHZlZ2V0YWJsZXMgYW5kIG51dHMgYW5kIHNlZWRzIzUwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjAwLjAwI1ZlZ2V0YWJsZXMjNTAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMDEuMDAjQmVhbnMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMDIuMDAjU3BpbmFjaCM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4wMy4wMCNQb3RhdG9lcyM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4wNC4wMCNQZWFzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjA1LjAwI09uaW9ucyBvciBvdGhlciBhbGxpYWNlb3VzIHZlZ2V0YWJsZXMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMDYuMDAjTGV0dHVjZSM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4wNy4wMCNDYWJiYWdlIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjA4LjAwI1NxdWFzaGVzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjA5LjAwI1lhbXMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMTAuMDAjQ2Fycm90cyM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4xMS4wMCNSdXRhYmFnYXMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMTIuMDAjRWdncGxhbnRzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjEzLjAwI1BlcHBlcnMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMTQuMDAjUmh1YmFyYiM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4xNS4wMCNFbmRpdmUjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMTYuMDAjQXNwYXJhZ3VzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjE3LjAwI0FydGljaG9rZXMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMTguMDAjUGFyc25pcHMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMTkuMDAjQ2VsZXJ5IzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjIwLjAwI1JhZGlzaGVzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjIxLjAwI011c2hyb29tcyBvciBvdGhlciBlZGlibGUgZnVuZ2kjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMjIuMDAjSG9yc2VyYWRpc2gjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMjMuMDAjVHVybmlwcyM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4yNC4wMCNNdXN0YXJkIGdyZWVucyM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4yNS4wMCNLYWxlIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjI2LjAwI0NvbGxhcmRzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjI3LjAwI0JydXNzZWwgc3Byb3V0cyM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4yOC4wMCNCcm9jY29saSM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4yOS4wMCNDYXVsaWZsb3dlcnMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMzAuMDAjT2tyYSM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4zMS4wMCNDdWN1bWJlcnMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMzIuMDAjVG9tYXRvZXMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMzMuMDAjQmVldHMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMzQuMDAjTWFuaW9jIHJvb3RzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjM1LjAwI0xlbnRpbHMjNTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTUuMzYuMDAjQ29ybiM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4zNy4wMCNQdW1wa2lucyM1MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNS4zOC4wMCNGcmVzaCB2ZWdldGFibGVzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjM5LjAwI0Zyb3plbiB2ZWdldGFibGVzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE1LjQwLjAwI1NoZWxmIHN0YWJsZSB2ZWdldGFibGVzIzUwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjAwLjAwI0ZydWl0cyM1MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNi4wMS4wMCNMaW1lcyM1MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNi4wMi4wMCNNYW5nb2VzIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjAzLjAwI0d1YXZhcyM1MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNi4wNC4wMCNHcmFwZXMjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMDUuMDAjRGF0ZXMjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMDYuMDAjQXByaWNvdHMjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMDcuMDAjQmVycmllcyM1MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNi4wOC4wMCNQZWFjaGVzIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjA5LjAwI0NoZXJyaWVzIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjEwLjAwI0JhbmFuYXMjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMTEuMDAjTWVsb25zIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjEyLjAwI1BvbWVncmFuYXRlcyM1MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNi4xMy4wMCNQYXBheWFzIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjE0LjAwI0tpd2lzIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjE1LjAwI0xpY2hlZXMjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMTYuMDAjUGVhcnMjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMTcuMDAjUGx1bXMjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMTguMDAjQXBwbGVzIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjE5LjAwI1Bhc3Npb24gZnJ1aXQjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMjAuMDAjTmVjdGFyaW5lcyM1MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNi4yMS4wMCNQaW5lYXBwbGVzIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjIyLjAwI0ZpZ3MjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMjMuMDAjVGFuZ2Vsb3MjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMjQuMDAjTWFuZGFyaW5zIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjI1LjAwI09yYW5nZXMjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMjYuMDAjVGFuZ2VyaW5lcyM1MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNi4yNy4wMCNHcmFwZWZydWl0IzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjI4LjAwI0xlbW9ucyM1MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNi4yOS4wMCNEdXJpYW5zIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjMwLjAwI0NvY29udXRzIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjMxLjAwI0F2b2NhZG9zIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjMyLjAwI1F1aW5jZXMjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTYuMzMuMDAjT2xpdmVzIzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjM0LjAwI0ZyZXNoIGZydWl0IzUwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE2LjM1LjAwI0Zyb3plbiBmcnVpdCM1MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNi4zNi4wMCNTaGVsZiBzdGFibGUgZnJ1aXQjNTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTcuMDAuMDAjTnV0cyBhbmQgc2VlZHMjNTAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTcuMDEuMDAjQ2hlc3RudXRzIzUwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE3LjAzLjAwI1BlY2FucyM1MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNy4wNC4wMCNCcmF6aWwgbnV0cyM1MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNy4wNS4wMCNDYXNoZXdzIzUwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE3LjA2LjAwI0FsbW9uZHMjNTAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTcuMDcuMDAjTWFjYWRhbWlhIG51dHMjNTAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTcuMDguMDAjSGF6ZWxudXRzIzUwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE3LjA5LjAwI1BpbmUgbnV0cyM1MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNy4xMC4wMCNQaXN0YWNoaW9zIzUwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE3LjExLjAwI1dhbG51dHMjNTAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTcuMTIuMDAjQmV0ZWwgbnV0cyM1MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNy4xMy4wMCNQZWFudXRzIG9yIGdyb3VuZG51dHMjNTAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTAuMTcuMTQuMDAjTWl4ZWQgbnV0cyM1MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNy4xNS4wMCNOdXQgbWVhdCM1MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MC4xMC4xNy4xNi4wMCNXaG9sZSBudXRzIG9yIHNlZWRzIzUwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzUwLjEwLjE3LjE3LjAwI1NoZWxsZWQjNTAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMDAuMDAuMDAjTWVhdCBhbmQgcG91bHRyeSBwcm9kdWN0cyM1MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4xMS4xNS4wMC4wMCNNZWF0IGFuZCBwb3VsdHJ5IzUwLjExLjAwLjAwLjAwCi11bnNwc2M3IzUwLjExLjE1LjAxLjAwI0NoaWNrZW4jNTAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTUuMDIuMDAjVHVya2V5IzUwLjExLjE1LjAwLjAwCi11bnNwc2M3IzUwLjExLjE1LjAzLjAwI0R1Y2sjNTAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTUuMDQuMDAjT3N0cmljaCM1MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMS4xNS4wNS4wMCNQYXJ0cmlkZ2UjNTAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTUuMDYuMDAjRG92ZSM1MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMS4xNS4wNy4wMCNQaGVhc2FudCM1MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMS4xNS4wOC4wMCNRdWFpbCM1MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMS4xNS4wOS4wMCNHb29zZSM1MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMS4xNS4xMC4wMCNGcmVzaCBtZWF0IGFuZCBwb3VsdHJ5IzUwLjExLjE1LjAwLjAwCi11bnNwc2M3IzUwLjExLjE1LjExLjAwI0Zyb3plbiBtZWF0IGFuZCBwb3VsdHJ5IzUwLjExLjE1LjAwLjAwCi11bnNwc2M3IzUwLjExLjE1LjEyLjAwI1NoZWxmIHN0YWJsZSBtZWF0IGFuZCBwb3VsdHJ5IzUwLjExLjE1LjAwLjAwCi11bnNwc2M3IzUwLjExLjE2LjAwLjAwI0ZyZXNoIGFuZCBmcm96ZW4gcmVkIG1lYXQgYW5kIGJ5cHJvZHVjdHMjNTAuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTYuMDEuMDAjQmVlZiM1MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMS4xNi4wMi4wMCNWZWFsIzUwLjExLjE2LjAwLjAwCi11bnNwc2M3IzUwLjExLjE2LjAzLjAwI011dHRvbiM1MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMS4xNi4wNC4wMCNMYW1iIzUwLjExLjE2LjAwLjAwCi11bnNwc2M3IzUwLjExLjE2LjA1LjAwI0J1ZmZhbG8jNTAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTYuMDYuMDAjSG9yc2VtZWF0IzUwLjExLjE2LjAwLjAwCi11bnNwc2M3IzUwLjExLjE2LjA3LjAwI0FzcyBvciBtdWxlIG9yIGhpbm55IG1lYXQjNTAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTcuMDAuMDAjRnJlc2ggYW5kIGZyb3plbiBwb3JrIGFuZCBieXByb2R1Y3RzIzUwLjExLjAwLjAwLjAwCi11bnNwc2M3IzUwLjExLjE3LjAxLjAwI1BvcmsjNTAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTguMDAuMDAjRnJlc2ggYW5kIGZyb3plbiBvcmdhbiBtZWF0IGFuZCBieXByb2R1Y3RzIzUwLjExLjAwLjAwLjAwCi11bnNwc2M3IzUwLjExLjE4LjAxLjAwI09yZ2FuIG1lYXQjNTAuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTguMDIuMDAjTGl2ZXIjNTAuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTguMDMuMDAjR2l6emFyZCM1MC4xMS4xOC4wMC4wMAotdW5zcHNjNyM1MC4xMS4xOC4wNC4wMCNUcmlwZSM1MC4xMS4xOC4wMC4wMAotdW5zcHNjNyM1MC4xMS4xOC4wNS4wMCNTdG9tYWNoIzUwLjExLjE4LjAwLjAwCi11bnNwc2M3IzUwLjExLjE4LjA2LjAwI0tpZG5leSM1MC4xMS4xOC4wMC4wMAotdW5zcHNjNyM1MC4xMS4xOC4wNy4wMCNCcmFpbnMjNTAuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTkuMDAuMDAjRGVsaWNhdGVzc2VuIG1lYXQgcHJvZHVjdHMjNTAuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTkuMDEuMDAjU2FsYW1pIzUwLjExLjE5LjAwLjAwCi11bnNwc2M3IzUwLjExLjE5LjAyLjAwI0thYmFuYSM1MC4xMS4xOS4wMC4wMAotdW5zcHNjNyM1MC4xMS4xOS4wMy4wMCNQYXN0cmFtaSM1MC4xMS4xOS4wMC4wMAotdW5zcHNjNyM1MC4xMS4xOS4wNC4wMCNSb2FzdCBiZWVmIzUwLjExLjE5LjAwLjAwCi11bnNwc2M3IzUwLjExLjE5LjA1LjAwI0Nvcm5lZCBiZWVmIG9yIHNpbHZlcnNpZGUjNTAuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMTkuMDYuMDAjRnJhbmtmdXJ0IG9yIGhvdCBkb2cjNTAuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMjAuMDAuMDAjUHJvY2Vzc2VkIGFuZCBwcmVwYXJlZCBtZWF0cyM1MC4xMS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xMS4yMC4wMS4wMCNGcmVzaCBwcm9jZXNzZWQgb3IgcHJlcGFyZWQgbWVhdHMjNTAuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNTAuMTEuMjAuMDIuMDAjRnJvemVuIHByb2Nlc3NlZCBvciBwcmVwYXJlZCBtZWF0cyM1MC4xMS4yMC4wMC4wMAotdW5zcHNjNyM1MC4xMS4yMC4wMy4wMCNTaGVsZiBzdGFibGUgcHJvY2Vzc2VkIG9yIHByZXBhcmVkIG1lYXRzIzUwLjExLjIwLjAwLjAwCi11bnNwc2M3IzUwLjEyLjAwLjAwLjAwI1NlYWZvb2QjNTAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMDAuMDAjRmlzaCM1MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4wMS4wMCNMZW1vbmZpc2gjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMDIuMDAjRG9nZmlzaCM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4wMy4wMCNHcm91cGVyIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjA0LjAwI01haGkgbWFoaSM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4wNS4wMCNNb25rZmlzaCM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4wNi4wMCNQb21wYW5vIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjA3LjAwI0Jhc3MjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMDguMDAjU2hhcmsjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMDkuMDAjVGlsYXBpYSM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4xMC4wMCNTd29yZGZpc2gjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMTEuMDAjQW5jaG92aWVzIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjEyLjAwI0NhcnAjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMTMuMDAjQ2F0ZmlzaCM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4xNC4wMCNFZWwjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMTUuMDAjU3R1cmdlb24jNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMTYuMDAjVHVuYSM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4xNy4wMCNDb2QjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMTguMDAjSGFsaWJ1dCM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4xOS4wMCNIYWRkb2NrIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjIwLjAwI09jZWFuIHBlcmNoIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjIxLjAwI09yYW5nZSByb3VnaHkjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMjIuMDAjUGFycm90IGZpc2gjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMjMuMDAjUGlrZSM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4yNC4wMCNSZWQgc25hcHBlciM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4yNS4wMCNSb2NrZmlzaCM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4yNi4wMCNTbWVsdCM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4yNy4wMCNTb2xlIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjI4LjAwI1doaXRpbmcjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMjkuMDAjU2FsbW9uIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjMwLjAwI01hY2tlcmVsIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjMxLjAwI1NhcmRpbmVzIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjMyLjAwI1Ryb3V0IzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjMzLjAwI1N1cmltaSM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4zNC4wMCNCbGFja2Zpc2gjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTUuMzUuMDAjSGVycmluZyM1MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNS4zNi4wMCNGcmVzaCBmaXNoIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjM3LjAwI0Zyb3plbiBmaXNoIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjM4LjAwI1NoZWxmIHN0YWJsZSBmaXNoIzUwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE1LjM5LjAwI0ZyZXNoIGZpc2gjNTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTYuMDAuMDAjU2hlbGxmaXNoIzUwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUwLjEyLjE2LjAxLjAwI0FiYWxvbmUjNTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTYuMDIuMDAjU2NhbGxvcHMjNTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTYuMDMuMDAjQ2xhbXMjNTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTYuMDQuMDAjQ3JhYnMjNTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTYuMDUuMDAjQ29uY2gjNTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTYuMDYuMDAjQ3JheWZpc2gjNTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTYuMDcuMDAjTG9ic3RlciM1MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNi4wOC4wMCNNdXNzZWxzIzUwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE2LjA5LjAwI095c3RlcnMjNTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTYuMTAuMDAjU2hyaW1wIzUwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE2LjExLjAwI0ZyZXNoIHNoZWxsZmlzaCM1MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNi4xMi4wMCNGcm96ZW4gc2hlbGxmaXNoIzUwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE2LjEzLjAwI1NoZWxmIHN0YWJsZSBzaGVsbGZpc2gjNTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTcuMDAuMDAjQXF1YXRpYyBpbnZlcnRlYnJhdGVzIzUwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUwLjEyLjE3LjAxLjAwI1NxdWlkIzUwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE3LjAyLjAwI09jdG9wdXMjNTAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTcuMDMuMDAjQW5lbW9uZXMjNTAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTcuMDQuMDAjU2VhIGN1Y3VtYmVycyM1MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNy4wNS4wMCNGcmVzaCBhcXVhdGljIGludmVydGVicmF0ZXMjNTAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTIuMTcuMDYuMDAjRnJvemVuIGFxdWF0aWMgaW52ZXJ0ZWJyYXRlcyM1MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM1MC4xMi4xNy4wNy4wMCNTaGVsZiBzdGFibGUgYXF1YXRpYyBpbnZlcnRlYnJhdGVzIzUwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE4LjAwLjAwI0FxdWF0aWMgcGxhbnRzIzUwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUwLjEyLjE4LjAxLjAwI1NlYXdlZWRzIzUwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE4LjAyLjAwI0ZyZXNoIGFxdWF0aWMgcGxhbnRzIzUwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzUwLjEyLjE4LjAzLjAwI0Zyb3plbiBhcXVhdGljIHBsYW50cyM1MC4xMi4xOC4wMC4wMAotdW5zcHNjNyM1MC4xMi4xOC4wNC4wMCNTaGVsZiBzdGFibGUgYXF1YXRpYyBwbGFudHMjNTAuMTIuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTMuMDAuMDAuMDAjRGFpcnkgcHJvZHVjdHMgYW5kIGVnZ3MjNTAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTUuMDAuMDAjRGFpcnkgcHJvZHVjdHMgYW5kIGRhaXJ5IHN1YnN0aXR1dGVzIzUwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzUwLjEzLjE1LjAxLjAwI0NvZmZlZSBjcmVhbWVyIzUwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEzLjE1LjAyLjAwI0J1dHRlciM1MC4xMy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMy4xNS4wMy4wMCNNaWxrIzUwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEzLjE1LjA0LjAwI1NvZnQgY2hlZXNlcyM1MC4xMy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMy4xNS4wNS4wMCNZb2d1cnRzIzUwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEzLjE1LjA2LjAwI0ljZSBjcmVhbXMjNTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTUuMDcuMDAjU291ciBjcmVhbXMjNTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTUuMDguMDAjSGFyZCBjaGVlc2VzIzUwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEzLjE1LjA5LjAwI0J1dHRlcm1pbGsjNTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTUuMTAuMDAjSW5mYW50IGZvcm11bGEjNTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTUuMTEuMDAjQ3VzdGFyZCM1MC4xMy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xMy4xNS4xMi4wMCNFdmFwb3JhdGVkIG1pbGsjNTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTUuMTMuMDAjU3dlZXRlbmVkIGNvbmRlbnNlZCBtaWxrIzUwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzUwLjEzLjE1LjE0LjAwI1Bvd2RlcmVkIG1pbGsjNTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTUuMTUuMDAjQ3JlYW0jNTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTUuMTYuMDAjTG9uZyBsaWZlIG1pbGsjNTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTYuMDAuMDAjRWdncyBhbmQgZWdnIHN1YnN0aXR1dGVzIzUwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzUwLjEzLjE2LjAxLjAwI0VnZ3MjNTAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTYuMDIuMDAjRWdnIHN1YnN0aXR1dGVzIzUwLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEzLjE2LjAzLjAwI01lcmluZ3VlIHBvd2RlcnMjNTAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTYuMDQuMDAjRWdnIHdoaXRlcyM1MC4xMy4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMy4xNi4wNS4wMCNFZ2cgeW9sa3MjNTAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTYuMDYuMDAjRnJlc2ggZWdncyM1MC4xMy4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMy4xNi4wNy4wMCNFZ2cgc3Vic3RpdHV0ZXMjNTAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTYuMDguMDAjRWdnIHdoaXRlcyBvciB5b2xrcyM1MC4xMy4xNi4wMC4wMAotdW5zcHNjNyM1MC4xMy4xNi4wOS4wMCNQcmVwYXJlZCBlZ2dzIzUwLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUwLjEzLjE3LjAwLjAwI01pbGsgYW5kIGJ1dHRlciBwcm9kdWN0cyM1MC4xMy4wMC4wMC4wMAotdW5zcHNjNyM1MC4xMy4xNy4wMS4wMCNGcmVzaCBtaWxrIGFuZCBidXR0ZXIgcHJvZHVjdHMjNTAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTcuMDIuMDAjU2hlbGYgc3RhYmxlIG1pbGsgYW5kIGJ1dHRlciBwcm9kdWN0cyM1MC4xMy4xNy4wMC4wMAotdW5zcHNjNyM1MC4xMy4xOC4wMC4wMCNDaGVlc2UjNTAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTguMDEuMDAjTmF0dXJhbCBjaGVlc2UjNTAuMTMuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTMuMTguMDIuMDAjUHJvY2Vzc2VkIGNoZWVzZSM1MC4xMy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xMy4xOC4wMy4wMCNJbWl0YXRpb24gY2hlZXNlIzUwLjEzLjE4LjAwLjAwCi11bnNwc2M3IzUwLjE0LjAwLjAwLjAwI0dyYWlucyBhbmQgY2VyZWFscyBhbmQgdGhlaXIgZmxvdXJzIzUwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUwLjE0LjE1LjAwLjAwI0dyYWlucyBhbmQgY2VyZWFscyM1MC4xNC4wMC4wMC4wMAotdW5zcHNjNyM1MC4xNC4xNS4wMS4wMCNNaWxsZXQjNTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTUuMDIuMDAjSG9wcyM1MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNC4xNS4wMy4wMCNCdWNrd2hlYXQjNTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTUuMDQuMDAjUnllIzUwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE0LjE1LjA1LjAwI0Nvcm4gY2VyZWFscyM1MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNC4xNS4wNi4wMCNTb3JnaHVtIzUwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE0LjE1LjA3LjAwI09hdHMjNTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTUuMDguMDAjUmljZSM1MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNC4xNS4wOS4wMCNCYXJsZXkjNTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTUuMTAuMDAjV2hlYXQjNTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTUuMTEuMDAjUGFzdGEgb3Igbm9vZGxlIzUwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE0LjE1LjEyLjAwI0JyYW4jNTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTUuMTMuMDAjc2hvcnQgZ3JhaW4gcmljZSM1MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNC4xNi4wMC4wMCNGbG91cnMjNTAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTYuMDEuMDAjTWlsbGV0IGZsb3VyIzUwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE0LjE2LjAyLjAwI09hdCBmbG91ciM1MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xNC4xNi4wMy4wMCNCYXJsZXkgZmxvdXIjNTAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTYuMDQuMDAjUmljZSBmbG91ciM1MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xNC4xNi4wNS4wMCNCdWNrd2hlYXQgZmxvdXIjNTAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTYuMDYuMDAjUnllIGZsb3VyIzUwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE0LjE2LjA3LjAwI0Nvcm4gZmxvdXIjNTAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTYuMDguMDAjV2hlYXQgZmxvdXIjNTAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTYuMDkuMDAjU2VsZiByaXNpbmcgZmxvdXIjNTAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTQuMTYuMTAuMDAjTG9uZyBHcmFpbiBSaWNlIzUwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE1LjAwLjAwLjAwI0VkaWJsZSBvaWxzIGFuZCBmYXRzIzUwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUwLjE1LjE1LjAwLjAwI0VkaWJsZSB2ZWdldGFibGUgYW5kIHBsYW50IG9pbHMgYW5kIGZhdHMjNTAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTUuMTUuMDEuMDAjU295YmVhbiBvaWwjNTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTUuMTUuMDIuMDAjQ29ybiBvaWwjNTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTUuMTUuMDMuMDAjQ2Fub2xhIG9pbCM1MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNS4xNS4wNC4wMCNTZXNhbWUgb2lsIzUwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE1LjA1LjAwI1BlYW51dCBvaWwjNTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTUuMTUuMDYuMDAjT2xpdmUgb2lsIzUwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE1LjA3LjAwI1BhbG0gb2lsIzUwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE1LjA4LjAwI1NhZmZsb3dlciBvaWwjNTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTUuMTUuMDkuMDAjQ2FzdG9yIG9pbCM1MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNS4xNS4xMC4wMCNTdW5mbG93ZXIgb2lsIzUwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE1LjExLjAwI0NvdHRvbnNlZWQgb2lsIzUwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE1LjEyLjAwI0NvbHphIG9pbCM1MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNS4xNS4xMy4wMCNFZGlibGUgdmVnZXRhYmxlIG9yIHBsYW50IG9pbHMjNTAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTUuMTUuMTQuMDAjRWRpYmxlIHZlZ2V0YWJsZSBvciBwbGFudCBmYXRzIzUwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE2LjAwLjAwI0VkaWJsZSBhbmltYWwgb2lscyBhbmQgZmF0cyM1MC4xNS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xNS4xNi4wMS4wMCNMYXJkIzUwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE2LjAyLjAwI1RhbGxvdyM1MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM1MC4xNS4xNi4wMy4wMCNDb2QgbGl2ZXIgb2lsIzUwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE2LjA0LjAwI0VkaWJsZSBhbmltYWwgb2lscyM1MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM1MC4xNS4xNi4wNS4wMCNFZGlibGUgYW5pbWFsIGZhdHMjNTAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTUuMTcuMDAuMDAjT2lscyBhbmQgZmF0cyBhbmQgb3RoZXIjNTAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTUuMTcuMDEuMDAjU2hvcnRlbmluZ3MjNTAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTUuMTcuMDIuMDAjTWFyZ2FyaW5lIzUwLjE1LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE3LjAzLjAwI0xpbnNlZWQgb2lsIzUwLjE1LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE3LjA0LjAwI0NvY29hIGJ1dHRlciM1MC4xNS4xNy4wMC4wMAotdW5zcHNjNyM1MC4xNS4xNy4wNS4wMCNIb3AgT2lsIzUwLjE1LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE1LjE3LjA2LjAwI01hY2FkYW1pYSBvaWwjNTAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMDAuMDAuMDAjQ2hvY29sYXRlIGFuZCBzdWdhcnMgYW5kIHN3ZWV0ZW5lcnMgYW5kIGNvbmZlY3Rpb25hcnkgcHJvZHVjdHMjNTAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTUuMDAuMDAjQ2hvY29sYXRlIGFuZCBzdWdhcnMgYW5kIHN3ZWV0ZW5pbmcgcHJvZHVjdHMjNTAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTUuMDEuMDAjQnJvd24gc3VnYXIjNTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTUuMDIuMDAjV2hpdGUgc3VnYXJzIzUwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE1LjAzLjAwI1N1Z2FyIGNhbmUjNTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTUuMDQuMDAjRnJ1Y3Rvc2UjNTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTUuMDUuMDAjUGFsbSBzdWdhciM1MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNi4xNS4wNi4wMCNHbHVjb3NlIzUwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE1LjA3LjAwI0JlZXQgc3VnYXIjNTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTUuMDguMDAjUmF3IHN1Z2FyIzUwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE1LjA5LjAwI05hdHVyYWwgc3VnYXJzIGFuZCBzd2VldGVuaW5nIHByb2R1Y3RzIzUwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE1LjEwLjAwI0FydGlmaWNpYWwgc3dlZXRlbmluZyBhZ2VudHMjNTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTUuMTEuMDAjQ2hvY29sYXRlIGFuZCBjaG9jb2xhdGUgc3Vic3RpdHV0ZSM1MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNi4xNS4xMi4wMCNTeXJ1cHMjNTAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTYuMDAuMDAjU3lydXBzIGFuZCBvdGhlciBzd2VldGVuZXJzIzUwLjE2LjAwLjAwLjAwCi11bnNwc2M3IzUwLjE2LjE2LjAxLjAwI01vbGFzc2VzIzUwLjE2LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE2LjAyLjAwI0hvbmV5IzUwLjE2LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE2LjAzLjAwI0JsYWNrIHRyZWFjbGUjNTAuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTYuMDQuMDAjQ29ybiBzeXJ1cCM1MC4xNi4xNi4wMC4wMAotdW5zcHNjNyM1MC4xNi4xNi4wNS4wMCNBc3BlcnRhbWUjNTAuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTYuMDYuMDAjU2FjY2hhcnJpbiM1MC4xNi4xNi4wMC4wMAotdW5zcHNjNyM1MC4xNi4xNi4wNy4wMCNNYXBsZSBzeXJ1cCM1MC4xNi4xNi4wMC4wMAotdW5zcHNjNyM1MC4xNi4xNy4wMC4wMCNDaG9jb2xhdGUgYW5kIGNhcm9iIGFuZCBjaG9jb2xhdGUgc3Vic3RpdHV0ZXMjNTAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTcuMDEuMDAjQ2hvY29sYXRlIzUwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE3LjAyLjAwI0Nhcm9iIzUwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE3LjAzLjAwI0NvY29hIzUwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE4LjAwLjAwI0NvbmZlY3Rpb25hcnkgcHJvZHVjdHMjNTAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTguMDQuMDAjQ2hld2luZyBndW1zIzUwLjE2LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE4LjA1LjAwI0NhbmR5IzUwLjE2LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE4LjA2LjAwI0xpY29yaWNlIzUwLjE2LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE4LjA3LjAwI2plbGxpZWQgY29uZmVjdGlvbmFyeSM1MC4xNi4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNi4xOC4wOC4wMCNGdWRnZSM1MC4xNi4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNi4xOC4wOS4wMCNNZWRpY2F0ZWQgY29uZmVjdGlvbmVyeSBvciBsb3plbmdlcyM1MC4xNi4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNi4xOC4xMC4wMCNTdWdhciBmcmVlIGNvbmZlY3Rpb25hcnkjNTAuMTYuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTguMTEuMDAjTWFyc2htYWxsb3cjNTAuMTYuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTYuMTguMTIuMDAjTm91Z2F0IzUwLjE2LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE4LjEzLjAwI0Nob2NvbGF0ZSBvciBjaG9jb2xhdGUgc3Vic3RpdHV0ZSBjYW5keSM1MC4xNi4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNi4xOC4xNC4wMCNTdWdhciBvciBzdWdhciBzdWJzdGl0dXRlIGNhbmR5IzUwLjE2LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE2LjE4LjE1LjAwI0NoZXdpbmcgZ3VtIzUwLjE2LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjAwLjAwLjAwI1NlYXNvbmluZ3MgYW5kIHByZXNlcnZhdGl2ZXMjNTAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMDAuMDAjSGVyYnMgYW5kIHNwaWNlcyBhbmQgZXh0cmFjdHMjNTAuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMDEuMDAjU2FsdCM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS4wMy4wMCNOdXRtZWcjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMDQuMDAjQmF5IzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjA1LjAwI0FuaXNlIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjA2LjAwI1NhZmZyb24jNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMDcuMDAjQmFzaWwjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMDguMDAjR2luZ2VyIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjA5LjAwI0xhdmVuZGVyIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjEwLjAwI01hY2UjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMTEuMDAjUGFwcmlrYSM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS4xMi4wMCNDaGljb3J5IzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjEzLjAwI0dhcmxpYyM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS4xNC4wMCNDdW1pbiM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS4xNS4wMCNDbG92ZXMjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMTYuMDAjQ2lubmFtb24jNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMTcuMDAjQ2lsYW50cm8jNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMTguMDAjQWxsc3BpY2UjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMTkuMDAjTWFyam9yYW0jNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMjAuMDAjWWFycm93IzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjIxLjAwI1RoeW1lIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjIyLjAwI1RhcnJhZ29uIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjIzLjAwI1Nlc2FtZSM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS4yNC4wMCNTYWdlIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjI1LjAwI1Jvc2VtYXJ5IzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjI2LjAwI1BhcnNsZXkjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMjcuMDAjQ2hhbW9taWxlIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjI4LjAwI01pbnRzIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjI5LjAwI0NhcmF3YXkjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMzAuMDAjTGVtb25ncmFzcyM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS4zMS4wMCNMZW1vbiBiYWxtIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjMyLjAwI0RpbGwjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMzMuMDAjRmVubmVsIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjM0LjAwI0N1cnJ5IzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjM1LjAwI0NvbWZyZXkjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMzYuMDAjQ2hpdmVzIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjM3LjAwI0NoZXJ2aWwjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuMzguMDAjT3JlZ2FubyM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS4zOS4wMCNQZXBwZXJjb3JucyM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS40MC4wMCNDYXJkYW1vbSM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS40MS4wMCNDb3JpYW5kZXIjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuNDIuMDAjRmxhdm9yaW5nIGV4dHJhY3RzIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjQzLjAwI0NoaWxpIHBvd2RlciM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS40NC4wMCNQb3BweSBzZWVkcyM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS40NS4wMCNNaXhlZCBoZXJicyM1MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNS40Ni4wMCNWYW5pbGxhIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE1LjQ3LjAwI1NlYXNvbmluZyBtaXgjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuNDguMDAjRnJlc2ggaGVyYnMjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuNDkuMDAjRHJpZWQgaGVyYnMjNTAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTUuNTAuMDAjU3BpY2VzIG9yIGV4dHJhY3RzIzUwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE2LjAwLjAwI1ByZXNlcnZhdGl2ZXMgYW5kIGFkZGl0aXZlcyM1MC4xNy4wMC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNi4wMS4wMCNQZWN0aW4jNTAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTYuMDIuMDAjRm9vZCBjb2xvcmluZ3MjNTAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTYuMDMuMDAjTW9ub3NvZGl1bSBnbHV0YW1hdGUgKE1TRykjNTAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTcuMDAuMDAjVmluZWdhcnMgYW5kIGNvb2tpbmcgd2luZXMjNTAuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTcuMDEuMDAjQ2lkZXIgdmluZWFnYXIjNTAuMTcuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTcuMDIuMDAjQmFsc2FtaWMgdmluZWdhciM1MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNy4wMy4wMCNEaXN0aWxsZWQgdmluZWdhciM1MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNy4wNC4wMCNSaWNlIHZpbmVnYXIjNTAuMTcuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTcuMDUuMDAjV2luZSB2aW5lZ2FyIzUwLjE3LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE3LjA2LjAwI0luZnVzZWQgdmluZWdhciM1MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNy4wNy4wMCNWaW5lZ2FycyM1MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM1MC4xNy4xNy4wOC4wMCNDb29raW5nIHdpbmVzIzUwLjE3LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjAwLjAwI1NhdWNlcyBhbmQgc3ByZWFkcyBhbmQgY29uZGltZW50cyM1MC4xNy4wMC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4wMS4wMCNNdXN0YXJkcyM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4wMi4wMCNDYXRzdXAgb3Iga2V0Y2h1cCBvciB0b21hdG8gc2F1Y2UjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMDMuMDAjQmFyYmVjdWUgc2F1Y2VzIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjA0LjAwI01hcmluYWRlcyM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4wNS4wMCNIb3Qgc2F1Y2VzIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjA2LjAwI01heW9ubmFpc2UjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMDcuMDAjU295IHNhdWNlIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjA4LjAwI1NhbGFkIGRyZXNzaW5ncyM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4wOS4wMCNXb3JjaGVzdGVyc2hpcmUgc2F1Y2UjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMTAuMDAjU2Fsc2EjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMTEuMDAjUmVsaXNoZXMgb3IgY2h1dG5leXMjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMTIuMDAjQ29uc2VydmUgb3IgamFtIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjEzLjAwI0RpcCBvciBjaGlsbGVkIGRpcHBpbmcgc2F1Y2UjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMTQuMDAjU3dlZXQgYW5kIHNvdXIgc2F1Y2UjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMTUuMDAjVGFydGFyZSBzYXVjZSM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4xNi4wMCNNaW50IHNhdWNlIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjE3LjAwI0dyYXZ5IHNhdWNlIG9yIHBvd2RlciM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4xOC4wMCNOb29kbGUgb3IgcGFzdGEgc2F1Y2UjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMTkuMDAjRm9vZCBzcHJlYWRzIG9yIHBhc3RlcyM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4yMC4wMCNUb21hdG8gcGFzdGUjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMjEuMDAjQmxhY2sgYmVhbiBzYXVjZSM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4yMi4wMCNTYXRheSBzYXVjZSM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4yMy4wMCNUZXJpeWFraSBzYXVjZSM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4yNC4wMCNTZWFmb29kIHNhdWNlIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjI1LjAwI1Blc3RvIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjI2LjAwI1N0ZWFrIHNhdWNlIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjI3LjAwI095c3RlciBzYXVjZSM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4yOC4wMCNQbHVtIHNhdWNlIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjI5LjAwI1doaXRlIHNhdWNlIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjMwLjAwI0RpcHBpbmcgc2F1Y2VzIG9yIGNvbmRpbWVudHMgb3Igc3ByZWFkcyBvciBtYXJpbmFkZXMjNTAuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTguMzEuMDAjQ29va2luZyBzYXVjZSM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOC4zMi4wMCNTYWxhZCBkcmVzc2luZyBvciBkaXBzIzUwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE4LjMzLjAwI1Nhdm9yeSBzcHJlYWQgb3IgcGF0ZSM1MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOS4wMC4wMCNQaWNrbGVzIGFuZCByZWxpc2ggYW5kIG9saXZlcyM1MC4xNy4wMC4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOS4wMS4wMCNQaWNrbGVzIzUwLjE3LjE5LjAwLjAwCi11bnNwc2M3IzUwLjE3LjE5LjAyLjAwI1JlbGlzaCM1MC4xNy4xOS4wMC4wMAotdW5zcHNjNyM1MC4xNy4xOS4wMy4wMCNPbGl2ZXMjNTAuMTcuMTkuMDAuMDAKLXVuc3BzYzcjNTAuMTcuMTkuMDQuMDAjQ2h1dG5leXMjNTAuMTcuMTkuMDAuMDAKLXVuc3BzYzcjNTAuMTguMDAuMDAuMDAjQnJlYWQgYW5kIGJha2VyeSBwcm9kdWN0cyM1MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xNS4wMC4wMCNMZWF2ZW5pbmcgYWdlbnRzIzUwLjE4LjAwLjAwLjAwCi11bnNwc2M3IzUwLjE4LjE1LjAxLjAwI1llYXN0IzUwLjE4LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE1LjAyLjAwI0Jha2luZyBwb3dkZXIjNTAuMTguMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTguMTUuMDMuMDAjQmFraW5nIHNvZGEjNTAuMTguMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTguMTUuMDQuMDAjQmFrZXJzIGFtbW9uaWEjNTAuMTguMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTguMTYuMDAuMDAjVGhpY2tlbmVycyM1MC4xOC4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xNi4wMS4wMCNHZWxhdGlucyM1MC4xOC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xOC4xNi4wMi4wMCNGb29kIGdyYWRlIHN0YXJjaGVzIzUwLjE4LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE2LjAzLjAwI1RhcGlvY2EjNTAuMTguMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTguMTYuMDQuMDAjQXJyb3dyb290IzUwLjE4LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE2LjA1LjAwI0Zvb2QgZ3JhZGUgYWdhciM1MC4xOC4xNi4wMC4wMAotdW5zcHNjNyM1MC4xOC4xNy4wMC4wMCNCYWtpbmcgbWl4ZXMgYW5kIHN1cHBsaWVzIzUwLjE4LjAwLjAwLjAwCi11bnNwc2M3IzUwLjE4LjE3LjAxLjAwI0Zvb2QgZ2xhemVzIzUwLjE4LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE3LjAyLjAwI0ljaW5ncyM1MC4xOC4xNy4wMC4wMAotdW5zcHNjNyM1MC4xOC4xNy4wMy4wMCNDYWtlIGRlY29yYXRpb25zIzUwLjE4LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE3LjA0LjAwI0Nha2Ugb3IgcHVkZGluZyBtaXh0dXJlcyM1MC4xOC4xNy4wMC4wMAotdW5zcHNjNyM1MC4xOC4xNy4wNS4wMCNQaWUgZmlsbGluZ3MjNTAuMTguMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTguMTcuMDYuMDAjQmFraW5nIG1peGVzIzUwLjE4LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE3LjA3LjAwI0NvYXRpbmcgbWl4IG9yIGJyZWFkY3J1bWJzIzUwLjE4LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE3LjA4LjAwI0Jha2luZyBtaXhlcyM1MC4xOC4xNy4wMC4wMAotdW5zcHNjNyM1MC4xOC4xNy4wOS4wMCNCYWtpbmcgc3VwcGxpZXMjNTAuMTguMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTguMTguMDAuMDAjQmFrZWQgZ29vZHMjNTAuMTguMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTguMTguMDEuMDAjUGFzdHJ5IHNoZWxscyM1MC4xOC4xOC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xOC4wMi4wMCNDcmFja2VycyBvciBkcnkgb3Igc2F2b3VyeSBiaXNjdWl0cyM1MC4xOC4xOC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xOC4wMy4wMCNCcmVhZCM1MC4xOC4xOC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xOC4wNC4wMCNQYXN0cmllcyM1MC4xOC4xOC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xOC4wNS4wMCNDYWtlcyM1MC4xOC4xOC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xOC4wNi4wMCNDb29raWUgb3Igc3dlZXQgYmlzY3VpdCM1MC4xOC4xOC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xOC4wNy4wMCNCaXNjdWl0cyM1MC4xOC4xOC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xOC4wOC4wMCNVbmxlYXZlbmVkIGJyZWFkIzUwLjE4LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE4LjA5LjAwI011ZmZpbnMjNTAuMTguMTguMDAuMDAKLXVuc3BzYzcjNTAuMTguMTguMTAuMDAjRG9udXRzIzUwLjE4LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE4LjExLjAwI1BpenphIG9yIHBpenphIGJhc2VzIzUwLjE4LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE4LjEyLjAwI0Nvcm5ldHMgb3IgY29uZXMgb3Igd2FmZmxlcyM1MC4xOC4xOC4wMC4wMAotdW5zcHNjNyM1MC4xOC4xOS4wMC4wMCNCcmVhZCBhbmQgYmlzY3VpdHMgYW5kIGNvb2tpZXMjNTAuMTguMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTguMTkuMDEuMDAjRnJlc2ggYnJlYWQjNTAuMTguMTkuMDAuMDAKLXVuc3BzYzcjNTAuMTguMTkuMDIuMDAjRnJvemVuIGJyZWFkIzUwLjE4LjE5LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE5LjAzLjAwI1BsYWluIHNhdm9yeSBiaXNjdWl0cyM1MC4xOC4xOS4wMC4wMAotdW5zcHNjNyM1MC4xOC4xOS4wNC4wMCNEcmllZCBicmVhZHMgb3IgYnJlYWQgc2hlbGxzIG9yIGNyb3V0b25zIzUwLjE4LjE5LjAwLjAwCi11bnNwc2M3IzUwLjE4LjE5LjA1LjAwI1N3ZWV0IGJpc2N1aXRzIG9yIGNvb2tpZXMjNTAuMTguMTkuMDAuMDAKLXVuc3BzYzcjNTAuMTguMjAuMDAuMDAjQ2FrZXMgYW5kIHBpZXMgYW5kIHBhc3RyaWVzIzUwLjE4LjAwLjAwLjAwCi11bnNwc2M3IzUwLjE4LjIwLjAxLjAwI0ZyZXNoIGNha2VzIG9yIHBpZXMgb3IgcGFzdHJpZXMjNTAuMTguMjAuMDAuMDAKLXVuc3BzYzcjNTAuMTguMjAuMDIuMDAjRnJvemVuIGNha2VzIG9yIHBpZXMgb3IgcGFzdHJpZXMjNTAuMTguMjAuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMDAuMDAuMDAjUHJlcGFyZWQgYW5kIHByZXNlcnZlZCBmb29kcyM1MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4xNS4wMC4wMCNQcmVwYXJlZCBzb3VwcyBhbmQgc3Rld3MjNTAuMTkuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTUuMDEuMDAjU3Rld3MjNTAuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTUuMDIuMDAjU291cHMjNTAuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTUuMDMuMDAjU3RvY2sgb3Igc3RvY2sgY3ViZXMjNTAuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTUuMDQuMDAjU3RldyBvciBjYXNzZXJvbGUgYmFzZSM1MC4xOS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xOS4xNS4wNS4wMCNGcmVzaCBwcmVwYXJlZCBzb3VwcyBvciBzdGV3cyM1MC4xOS4xNS4wMC4wMAotdW5zcHNjNyM1MC4xOS4xNS4wNi4wMCNGcm96ZW4gcHJlcGFyZWQgc291cHMgb3Igc3Rld3MjNTAuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTUuMDcuMDAjU2hlbGYgc3RhYmxlIHByZXBhcmVkIHNvdXBzIG9yIHN0ZXdzIzUwLjE5LjE1LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE2LjAwLjAwI0Zyb3plbiBmb29kcyM1MC4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4xNi4wMS4wMCNGcm96ZW4gZGVzc2VydHMjNTAuMTkuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTYuMDIuMDAjRnJvemVuIG1lYXRzIzUwLjE5LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE2LjAzLjAwI0Zyb3plbiBmcnVpdHMjNTAuMTkuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTYuMDQuMDAjRnJvemVuIHZlZ2V0YWJsZXMjNTAuMTkuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTYuMDUuMDAjRnJvemVuIHByZXBhcmVkIG1lYWxzIzUwLjE5LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE2LjA2LjAwI0Zyb3plbiBmaXNoIzUwLjE5LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE2LjA3LjAwI0Zyb3plbiBjcnVzdGFjZWFucyM1MC4xOS4xNi4wMC4wMAotdW5zcHNjNyM1MC4xOS4xNi4wOC4wMCNGcm96ZW4gbW9sbHVza3MjNTAuMTkuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTYuMDkuMDAjRnJvemVuIHByZXBhcmVkIHBhc3RyeSB1bmJha2VkIzUwLjE5LjE2LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE2LjEwLjAwI0Zyb3plbiBzYXZvdXJpZXMjNTAuMTkuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTcuMDAuMDAjQ2FubmVkIGZvb2RzIGFuZCBib3R0bGVkIGV0YyM1MC4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4xNy4wMS4wMCNDYW5uZWQgZnJ1aXRzIzUwLjE5LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE3LjAyLjAwI0Nhbm5lZCB2ZWdldGFibGVzIzUwLjE5LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE3LjAzLjAwI0Nhbm5lZCBmaXNoIzUwLjE5LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE3LjA0LjAwI0Nhbm5lZCBtZWF0IzUwLjE5LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE3LjA1LjAwI0Nhbm5lZCBJbmZhbnQgZm9vZHMjNTAuMTkuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTcuMDYuMDAjRnJ1aXQgamFtcyM1MC4xOS4xNy4wMC4wMAotdW5zcHNjNyM1MC4xOS4xNy4wNy4wMCNNYXJtYWxhZGUjNTAuMTkuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTcuMDguMDAjQ2FubmVkIHByZXBhcmVkIG1lYWxzIzUwLjE5LjE3LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE3LjA5LjAwI0Nhbm5lZCBkZXNzZXJ0cyM1MC4xOS4xNy4wMC4wMAotdW5zcHNjNyM1MC4xOS4xOC4wMC4wMCNEcmllZCBmb29kcyM1MC4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4xOC4wMS4wMCNEcmllZCBmaXNoIzUwLjE5LjE4LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE4LjAyLjAwI0RyaWVkIG1lYXQjNTAuMTkuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTguMDMuMDAjRHJpZWQgdmVnZXRhYmxlcyM1MC4xOS4xOC4wMC4wMAotdW5zcHNjNyM1MC4xOS4xOC4wNC4wMCNEcmllZCBmcnVpdHMjNTAuMTkuMTguMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTkuMDAuMDAjU2FsdGVkIGFuZCBzbW9rZWQgZm9vZHMjNTAuMTkuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTkuMDEuMDAjU2FsdGVkIG9yIHNtb2tlZCBmaXNoIzUwLjE5LjE5LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE5LjAyLjAwI1NhbHRlZCBvciBzbW9rZWQgbWVhdHMjNTAuMTkuMTkuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMTkuMDMuMDAjU2FsdGVkIG9yIHNtb2tlZCBzaGVsbGZpc2ggb3IgY3J1c3RhY2VhbnMgb3Igcm9lIzUwLjE5LjE5LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE5LjA0LjAwI1NhbHRlZCBvciBzbW9rZWQgZnJ1aXRzIzUwLjE5LjE5LjAwLjAwCi11bnNwc2M3IzUwLjE5LjE5LjA1LjAwI1NhbHRlZCBvciBzbW9rZWQgbnV0cyM1MC4xOS4xOS4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMC4wMC4wMCNQaWNrbGVkIGZvb2RzIzUwLjE5LjAwLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIwLjAxLjAwI1BpY2tsZWQgZmlzaCM1MC4xOS4yMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMC4wMi4wMCNQaWNrbGVkIGNydXN0YWNlYW5zIzUwLjE5LjIwLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIwLjAzLjAwI1BpY2tsZWQgbWVhdHMjNTAuMTkuMjAuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMjAuMDQuMDAjUGlja2xlZCB2ZWdldGFibGVzIzUwLjE5LjIwLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIwLjA1LjAwI1BpY2tsZWQgZWdncyM1MC4xOS4yMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMS4wMC4wMCNTbmFjayBmb29kcyM1MC4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMS4wMS4wMCNQcmV0emVscyM1MC4xOS4yMS4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMS4wMi4wMCNDb3JuIGNoaXBzIzUwLjE5LjIxLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIxLjAzLjAwI1BvdGF0byBjaGlwcyM1MC4xOS4yMS4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMS4wNC4wMCNQb3Bjb3JuIzUwLjE5LjIxLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIxLjA1LjAwI0Zpc2ggZmluZ2VycyM1MC4xOS4yMS4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMS4wNi4wMCNGcnVpdCBzbmFja3MjNTAuMTkuMjEuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMjEuMDcuMDAjT3RoZXIgZmxhdm91cmVkIHNuYWNrIGZvb2RzIzUwLjE5LjIxLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIxLjA4LjAwI0ZydWl0IG9yIG51dCBtaXgjNTAuMTkuMjEuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMjEuMDkuMDAjQ3Jpc3BzIG9yIGNoaXBzIG9yIHByZXR6ZWxzIG9yIG1peGVzIzUwLjE5LjIxLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIxLjEwLjAwI051dHMgb3IgZHJpZWQgZnJ1aXRzIzUwLjE5LjIxLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIxLjExLjAwI0RyaWVkIG9yIHByb2Nlc3NlZCBtZWF0cyM1MC4xOS4yMS4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMS4xMi4wMCNQb3BwZWQgY29ybiM1MC4xOS4yMS4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMi4wMC4wMCNTcHJlYWRzIGFuZCBjb25zZXJ2ZXMjNTAuMTkuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMjIuMDEuMDAjUGVhbnV0IGJ1dHRlciM1MC4xOS4yMi4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMi4wMi4wMCNZZWFzdCBvciB2ZWdldGFibGUgZXh0cmFjdCBzcHJlYWRzIzUwLjE5LjIyLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIyLjAzLjAwI0phbXMgb3IgamVsbGllcyBvciBxdWluY2VzIzUwLjE5LjIyLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIzLjAwLjAwI0Rlc2VydHMgYW5kIGRlc2VydCB0b3BwaW5ncyM1MC4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMy4wMS4wMCNQcmVwYXJlZCBkZXNlcnRzIzUwLjE5LjIzLjAwLjAwCi11bnNwc2M3IzUwLjE5LjIzLjAyLjAwI0Rlc2VydCB0b3BwaW5ncyM1MC4xOS4yMy4wMC4wMAotdW5zcHNjNyM1MC4xOS4yMy4wMy4wMCNGbGF2b3JlZCBpY2VzIG9yIGljZSBjcmVhbSBvciBpY2UgY3JlYW0gZGVzZXJ0cyBvciBmcm96ZW4geW9ndXJ0cyM1MC4xOS4yMy4wMC4wMAotdW5zcHNjNyM1MC4xOS4yNC4wMC4wMCNKYW1zIGFuZCBqZWxsaWVzIGFuZCBudXQgYW5kIHN3ZWV0IHNwcmVhZHMgYW5kIGZydWl0IGNvbnNlcnZlcyM1MC4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4yNC4wMS4wMCNKYW1zIG9yIGplbGxpZXMgb3IgZnJ1aXQgcHJlc2VydmVzIzUwLjE5LjI0LjAwLjAwCi11bnNwc2M3IzUwLjE5LjI0LjAyLjAwI051dCBvciBtaXhlZCBzcHJlYWRzIzUwLjE5LjI0LjAwLjAwCi11bnNwc2M3IzUwLjE5LjI0LjAzLjAwI0hvbmV5IzUwLjE5LjI0LjAwLjAwCi11bnNwc2M3IzUwLjE5LjI1LjAwLjAwI1NhbmR3aWNoZXMgYW5kIGZpbGxlZCByb2xscyM1MC4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4yNS4wMS4wMCNGcmVzaCBzYW5kd2ljaGVzIG9yIGZpbGxlZCByb2xscyM1MC4xOS4yNS4wMC4wMAotdW5zcHNjNyM1MC4xOS4yNS4wMi4wMCNGcm96ZW4gc2FuZHdpY2hlcyBvciBmaWxsZWQgcm9sbHMjNTAuMTkuMjUuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMjYuMDAuMDAjUHJlcGFyZWQgcG90YXRvZXMgYW5kIHJpY2UgYW5kIHBhc3RhIGFuZCBzdHVmZmluZyM1MC4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4yNi4wMS4wMCNGcmVzaCBwcmVwYXJlZCBwb3RhdG9lcyBvciByaWNlIG9yIHBhc3RhIG9yIHN0dWZmaW5nIzUwLjE5LjI2LjAwLjAwCi11bnNwc2M3IzUwLjE5LjI2LjAyLjAwI0Zyb3plbiBwcmVwYXJlZCBwb3RhdG9lcyBvciByaWNlIG9yIHBhc3RhIG9yIHN0dWZmaW5nIzUwLjE5LjI2LjAwLjAwCi11bnNwc2M3IzUwLjE5LjI2LjAzLjAwI1NoZWxmIHN0YWJsZSBwcmVwYXJlZCBwb3RhdG9lcyBvciByaWNlIG9yIHBhc3RhIG9yIHN0dWZmaW5nIzUwLjE5LjI2LjAwLjAwCi11bnNwc2M3IzUwLjE5LjI3LjAwLjAwI1BhY2thZ2VkIGNvbWJpbmF0aW9uIG1lYWxzIzUwLjE5LjAwLjAwLjAwCi11bnNwc2M3IzUwLjE5LjI3LjAxLjAwI0ZyZXNoIGNvbWJpbmF0aW9uIG1lYWxzIzUwLjE5LjI3LjAwLjAwCi11bnNwc2M3IzUwLjE5LjI3LjAyLjAwI0Zyb3plbiBjb21iaW5hdGlvbiBtZWFscyM1MC4xOS4yNy4wMC4wMAotdW5zcHNjNyM1MC4xOS4yNy4wMy4wMCNTaGVsZiBzdGFibGUgY29tYmluYXRpb24gbWVhbHMjNTAuMTkuMjcuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMjguMDAuMDAjU2F2b3J5IHBpZXMgYW5kIHF1aWNoZXMgYW5kIHBhc3RpZXMjNTAuMTkuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMTkuMjguMDEuMDAjRnJlc2ggc2F2b3J5IHBpZXMgb3IgcXVpY2hlcyBvciBwYXN0aWVzIzUwLjE5LjI4LjAwLjAwCi11bnNwc2M3IzUwLjE5LjI4LjAyLjAwI0Zyb3plbiBzYXZvcnkgcGllcyBvciBxdWljaGVzIG9yIHBhc3RpZXMjNTAuMTkuMjguMDAuMDAKLXVuc3BzYzcjNTAuMTkuMjguMDMuMDAjU2hlbGYgc3RhYmxlIHNhdm9yeSBwaWVzIG9yIHF1aWNoZXMgb3IgcGFzdGllcyM1MC4xOS4yOC4wMC4wMAotdW5zcHNjNyM1MC4xOS4yOS4wMC4wMCNQbGFpbiBwYXN0YSBhbmQgbm9vZGxlcyM1MC4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4yOS4wMS4wMCNGcmVzaCBwbGFpbiBwYXN0YSBvciBub29kbGVzIzUwLjE5LjI5LjAwLjAwCi11bnNwc2M3IzUwLjE5LjI5LjAyLjAwI1NoZWxmIHN0YWJsZSBwbGFpbiBwYXN0YSBvciBub29kbGVzIzUwLjE5LjI5LjAwLjAwCi11bnNwc2M3IzUwLjE5LjMwLjAwLjAwI0luZmFudCBmb29kcyBhbmQgYmV2ZXJhZ2VzIzUwLjE5LjAwLjAwLjAwCi11bnNwc2M3IzUwLjE5LjMwLjAxLjAwI0luZmFudCBmb29kcyM1MC4xOS4zMC4wMC4wMAotdW5zcHNjNyM1MC4xOS4zMC4wMi4wMCNJbmZhbnQgYmV2ZXJhZ2VzIzUwLjE5LjMwLjAwLjAwCi11bnNwc2M3IzUwLjIwLjAwLjAwLjAwI0JldmVyYWdlcyM1MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNS4wMC4wMCNXYXRlciM1MC4yMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNS4wMS4wMCNTcGFya2xpbmcgd2F0ZXIjNTAuMjAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTUuMDIuMDAjU3ByaW5nIHdhdGVyIzUwLjIwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE1LjAzLjAwI01pbmVyYWwgd2F0ZXIjNTAuMjAuMTUuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTUuMDQuMDAjRGlzdGlsbGVkIG9yIHB1cmlmaWVkIHdhdGVyIzUwLjIwLjE1LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE2LjAwLjAwI0p1aWNlcyM1MC4yMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNi4wMS4wMCNCbGVuZGVkIGp1aWNlcyM1MC4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNi4wMi4wMCNHdWF2YSBqdWljZSM1MC4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNi4wMy4wMCNQcnVuZSBqdWljZSM1MC4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNi4wNC4wMCNUb21hdG8ganVpY2UjNTAuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTYuMDUuMDAjQ3JhbmJlcnJ5IGp1aWNlIzUwLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE2LjA2LjAwI0dyYXBlZnJ1aXQganVpY2UjNTAuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTYuMDcuMDAjR3JhcGUganVpY2UjNTAuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTYuMDguMDAjUGluZWFwcGxlIGp1aWNlIzUwLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE2LjA5LjAwI09yYW5nZSBqdWljZSM1MC4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNi4xMC4wMCNBcHBsZSBqdWljZSM1MC4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNi4xMS4wMCNMZW1vbiBqdWljZXMgb3IgbGVtb25hZGUjNTAuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTYuMTIuMDAjSW5mYW50IGp1aWNlIzUwLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE3LjAwLjAwI0NvZmZlZSBhbmQgdGVhIzUwLjIwLjAwLjAwLjAwCi11bnNwc2M3IzUwLjIwLjE3LjAxLjAwI0luc3RhbnQgY29mZmVlIzUwLjIwLjE3LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE3LjAyLjAwI0dyb3VuZCBjb2ZmZWUjNTAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTcuMDMuMDAjV2hvbGUgYmVhbiBjb2ZmZWUjNTAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTcuMDQuMDAjR3JlZW4gY29mZmVlIzUwLjIwLjE3LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE3LjA1LjAwI0NvZmZlZSBzdWJzdGl0dXRlcyM1MC4yMC4xNy4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNy4wNi4wMCNDb2ZmZWUjNTAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTcuMDcuMDAjQ29mZmVlIHN1YnN0aXR1dGVzIzUwLjIwLjE3LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE3LjA4LjAwI0NvZmZlZSBkcmlua3MjNTAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTcuMDkuMDAjSW5zdGFudCBjb2ZmZWUjNTAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTcuMTAuMDAjTGVhZiB0ZWEjNTAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTcuMTEuMDAjSW5zdGFudCB0ZWEjNTAuMjAuMTcuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTcuMTIuMDAjVGVhIGRyaW5rcyM1MC4yMC4xNy4wMC4wMAotdW5zcHNjNyM1MC4yMC4xNy4xMy4wMCNUZWEgYmFncyM1MC4yMC4xNy4wMC4wMAotdW5zcHNjNyM1MC4yMC4xOC4wMC4wMCNUZWEjNTAuMjAuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTguMDEuMDAjR3JlZW4gdGVhIzUwLjIwLjE4LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE4LjAyLjAwI0JsYWNrIHRlYSM1MC4yMC4xOC4wMC4wMAotdW5zcHNjNyM1MC4yMC4xOC4wMy4wMCNIZXJiYWwgdGVhIzUwLjIwLjE4LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE4LjA0LjAwI1Bvd2RlcmVkIHRlYSM1MC4yMC4xOC4wMC4wMAotdW5zcHNjNyM1MC4yMC4xOC4wNS4wMCNUZWEgYmFncyM1MC4yMC4xOC4wMC4wMAotdW5zcHNjNyM1MC4yMC4xOS4wMC4wMCNTb2Z0IGRyaW5rcyM1MC4yMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4xOS4wMS4wMCNOb24gY2FyYm9uYXRlZCBzb2Z0IGRyaW5rcyM1MC4yMC4xOS4wMC4wMAotdW5zcHNjNyM1MC4yMC4xOS4wMi4wMCNDYXJib25hdGVkIHNvZnQgZHJpbmtzIzUwLjIwLjE5LjAwLjAwCi11bnNwc2M3IzUwLjIwLjE5LjAzLjAwI0NvcmRpYWxzIG9yIGNvbG91cmluZ3MjNTAuMjAuMTkuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMTkuMDQuMDAjU3BvcnRzIG9yIGhpZ2ggZW5lcmd5IGRyaW5rcyM1MC4yMC4xOS4wMC4wMAotdW5zcHNjNyM1MC4yMC4xOS4wNS4wMCNTb3kgYmV2ZXJhZ2UjNTAuMjAuMTkuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjAuMDAuMDAjQmVlciBhbmQgd2luZSM1MC4yMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMC4wMS4wMCNDaGFtcGFnbmUjNTAuMjAuMjAuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjAuMDIuMDAjQmVlciM1MC4yMC4yMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMC4wMy4wMCNXaW5lIzUwLjIwLjIwLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIwLjA0LjAwI1NwYXJrbGluZyB3aW5lcyM1MC4yMC4yMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMC4wNS4wMCNGb3J0aWZpZWQgd2luZSM1MC4yMC4yMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMC4wNi4wMCNQb3J0IzUwLjIwLjIwLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIwLjA3LjAwI1NoZXJyeSM1MC4yMC4yMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMC4wOC4wMCNXaW5lIGNvb2xlciBiZXZlcmFnZSM1MC4yMC4yMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4wMC4wMCNTcGlyaXRzIGFuZCBsaXF1b3JzIzUwLjIwLjAwLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIxLjAxLjAwI0JyYW5keSM1MC4yMC4yMS4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4wMi4wMCNDb2duYWMgb3IgYXJtYWduYWMjNTAuMjAuMjEuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjEuMDMuMDAjV2hpc2tleSM1MC4yMC4yMS4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4wNC4wMCNWb2RrYSM1MC4yMC4yMS4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4wNS4wMCNUZXF1aWxhIzUwLjIwLjIxLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIxLjA2LjAwI0dpbiM1MC4yMC4yMS4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4wNy4wMCNMaXF1ZXVycyM1MC4yMC4yMS4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4wOC4wMCNSdW0jNTAuMjAuMjEuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjEuMDkuMDAjQm91cmJvbiM1MC4yMC4yMS4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4xMC4wMCNTY290Y2gjNTAuMjAuMjEuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjEuMTEuMDAjQ2lkZXIjNTAuMjAuMjEuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjEuMTIuMDAjU2NobmFwcHMjNTAuMjAuMjEuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjEuMTMuMDAjT3V6byM1MC4yMC4yMS4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4xNC4wMCNBcGVyaXRpZnMgb3IgYml0dGVycyM1MC4yMC4yMS4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4xNS4wMCNWZXJtb3V0aCM1MC4yMC4yMS4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMS4xNi4wMCNTYW1idWNhIzUwLjIwLjIxLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIxLjE3LjAwI1Nha2UjNTAuMjAuMjEuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjEuMTguMDAjTXVzY2F0IG9yIG1hZGVpcmEjNTAuMjAuMjEuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjIuMDAuMDAjQWxjb2hvbGljIGJldmVyYWdlcyM1MC4yMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMi4wMS4wMCNCZWVyIzUwLjIwLjIyLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIyLjAyLjAwI0NpZGVyIG9yIHBlcnJ5IzUwLjIwLjIyLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIyLjAzLjAwI1dpbmUjNTAuMjAuMjIuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjIuMDQuMDAjRm9ydGlmaWVkIHdpbmUjNTAuMjAuMjIuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjIuMDUuMDAjU3BhcmtsaW5nIHdpbmUjNTAuMjAuMjIuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjIuMDYuMDAjU3Bpcml0cyBvciBsaXF1b3JzIzUwLjIwLjIyLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIyLjA3LjAwI0FsY29ob2wgY29ja3RhaWxzIG9yIGRyaW5rIG1peGVzIzUwLjIwLjIyLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIzLjAwLjAwI05vbiBhbGNvaG9saWMgYmV2ZXJhZ2VzIzUwLjIwLjAwLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIzLjAxLjAwI1dhdGVyIzUwLjIwLjIzLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIzLjAyLjAwI0ljZSM1MC4yMC4yMy4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMy4wMy4wMCNGcm96ZW4ganVpY2VzIzUwLjIwLjIzLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIzLjA0LjAwI1NoZWxmIHN0YWJsZSBqdWljZSM1MC4yMC4yMy4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMy4wNS4wMCNGcmVzaCBqdWljZSM1MC4yMC4yMy4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMy4wNi4wMCNTb2Z0IGRyaW5rcyM1MC4yMC4yMy4wMC4wMAotdW5zcHNjNyM1MC4yMC4yMy4wNy4wMCNDaG9jb2xhdGUgb3IgbWFsdCBvciBvdGhlciBob3QgYmV2ZXJhZ2VzIzUwLjIwLjIzLjAwLjAwCi11bnNwc2M3IzUwLjIwLjIzLjA4LjAwI0FsY29ob2wgZnJlZSBjb2NrdGFpbHMgb3IgZHJpbmsgbWl4ZXMjNTAuMjAuMjMuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjMuMDkuMDAjU3BvcnQgZHJpbmsgbWl4ZXMjNTAuMjAuMjMuMDAuMDAKLXVuc3BzYzcjNTAuMjAuMjMuMTAuMDAjU3ByaW5nIHdhdGVyIzUwLjIwLjIzLjAwLjAwCi11bnNwc2M3IzUwLjIxLjAwLjAwLjAwI1RvYmFjY28gYW5kIHNtb2tpbmcgcHJvZHVjdHMgYW5kIHN1YnN0aXR1dGVzIzUwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUwLjIxLjE1LjAwLjAwI1RvYmFjY28gYW5kIHN1YnN0aXR1dGVzIzUwLjIxLjAwLjAwLjAwCi11bnNwc2M3IzUwLjIxLjE1LjAxLjAwI1RvYmFjY28gbGVhZiM1MC4yMS4xNS4wMC4wMAotdW5zcHNjNyM1MC4yMS4xNS4wMi4wMCNDaWdhcmV0dGVzIG9yIGNpZ2FycyM1MC4yMS4xNS4wMC4wMAotdW5zcHNjNyM1MC4yMS4xNS4wMy4wMCNQaXBlIHRvYmFjY28gb3IgbGVhZiB0b2JhY2NvIzUwLjIxLjE1LjAwLjAwCi11bnNwc2M3IzUwLjIxLjE1LjA0LjAwI0NoZXdpbmcgdG9iYWNjbyM1MC4yMS4xNS4wMC4wMAotdW5zcHNjNyM1MC4yMS4xNS4wNS4wMCNIZXJiYWwgY2lnYXJldHRlcyM1MC4yMS4xNS4wMC4wMAotdW5zcHNjNyM1MC4yMS4xNi4wMC4wMCNUb2JhY2NvIHByb2R1Y3QgYWNjZXNzb3JpZXMgYW5kIHN1cHBsaWVzIzUwLjIxLjAwLjAwLjAwCi11bnNwc2M3IzUwLjIxLjE2LjAxLjAwI1BpcGUgdG9iYWNjbyM1MC4yMS4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMS4xNi4wMi4wMCNDaWdhcnMjNTAuMjEuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMjEuMTYuMDMuMDAjQ2lnYXJldHRlcyM1MC4yMS4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMS4xNi4wNC4wMCNTbW9rZWxlc3MgdG9iYWNjbyM1MC4yMS4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMS4xNi4wNS4wMCNSZWFkeSBydWJiZWQgdG9iYWNjbyM1MC4yMS4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMS4xNi4wNi4wMCNDaWdhcmV0dGUgcGFwZXJzIzUwLjIxLjE2LjAwLjAwCi11bnNwc2M3IzUwLjIxLjE2LjA3LjAwI0NpZ2FyZXR0ZSBwYXBlcnMgb3IgZmlsdGVycyM1MC4yMS4xNi4wMC4wMAotdW5zcHNjNyM1MC4yMS4xNi4wOC4wMCNDaWdhcmV0dGUgbGlnaHRlcnMgb3IgZmxpbnRzIzUwLjIxLjE2LjAwLjAwCi11bnNwc2M3IzUwLjIxLjE2LjA5LjAwI1Ntb2tpbmcgcGlwZXMjNTAuMjEuMTYuMDAuMDAKLXVuc3BzYzcjNTAuMjIuMDAuMDAuMDAjQ2VyZWFsIGFuZCBwdWxzZSBwcm9kdWN0cyM1MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MC4yMi4xMC4wMC4wMCNQdWxzZXMjNTAuMjIuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMjIuMTAuMDEuMDAjUHVsc2UgZ3JhaW5zIzUwLjIyLjEwLjAwLjAwCi11bnNwc2M3IzUwLjIyLjEwLjAyLjAwI1B1bHNlIGZsb3VyIzUwLjIyLjEwLjAwLjAwCi11bnNwc2M3IzUwLjIyLjExLjAwLjAwI0NlcmVhbHMjNTAuMjIuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMjIuMTEuMDEuMDAjQ2VyZWFsIGdyYWlucyM1MC4yMi4xMS4wMC4wMAotdW5zcHNjNyM1MC4yMi4xMS4wMi4wMCNDZXJlYWwgZmxvdXIjNTAuMjIuMTEuMDAuMDAKLXVuc3BzYzcjNTAuMjIuMTIuMDAuMDAjUHJvY2Vzc2VkIGNlcmVhbHMjNTAuMjIuMDAuMDAuMDAKLXVuc3BzYzcjNTAuMjIuMTIuMDEuMDAjUmVhZHkgdG8gZWF0IG9yIGhvdCBjZXJlYWxzIzUwLjIyLjEyLjAwLjAwCi11bnNwc2M3IzUwLjIyLjEyLjAyLjAwI0hlYWx0aCBvciBicmVha2Zhc3QgYmFycyM1MC4yMi4xMi4wMC4wMAotdW5zcHNjNyM1MS4wMC4wMC4wMC4wMCNEcnVncyBhbmQgUGhhcm1hY2V1dGljYWwgUHJvZHVjdHMjNTEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMDAuMDAuMDAjQW50aSBpbmZlY3RpdmUgZHJ1Z3MjNTEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTUuMDAuMDAjQW50aWJpb3RpY3MjNTEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTUuMDEuMDAjQW1pbm9nbHljb3NpZGVzIzUxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE1LjAyLjAwI0NlcGhhbG9zcG9yaW5zIzUxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE1LjAzLjAwI0NobG9yYW1waGVuaWNvbCM1MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM1MS4xMC4xNS4wNC4wMCNDbGluZGFteWNpbiBvciBsaW5jb215Y2luIzUxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE1LjA1LjAwI0ZsdW9yb3F1aW5vbG9uZXMjNTEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTUuMDYuMDAjTWFjcm9saWRlIzUxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE1LjA3LjAwI1BlbmljaWxsaW5zIzUxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE1LjA4LjAwI0FudGliaW90aWMgc3VsZm9uYW1pZGVzIzUxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE1LjA5LjAwI1RldHJhY3ljbGluZXMjNTEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTYuMDAuMDAjQW1lYmljaWRlcyBhbmQgVHJpY2hvbW9uYWNpZGVzIGFuZCBBbnRpcHJvdG96b2FscyM1MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xMC4xNi4wMS4wMCNBdG92YXF1b25lIzUxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE2LjAyLjAwI0VmbG9ybml0aGluZSBoeWRyb2NobG9yaWRlIzUxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE2LjAzLjAwI01ldHJvbmlkYXpvbGUjNTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTcuMDAuMDAjQW50aGVsbWludGljcyM1MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xMC4xNy4wMS4wMCNBbGJlbmRhZG9sZSM1MS4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMC4xNy4wMi4wMCNNZWJlbmRhem9sZSM1MS4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMC4xNy4wMy4wMCNPeGFtbmlxdWluZSM1MS4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMC4xNy4wNC4wMCNQaXBlcmF6aW5lIGNpdHJhdGUjNTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTcuMDUuMDAjUHJhemlxdWFudGVsIzUxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE3LjA2LjAwI1B5cmFudGVsIHBhbW9hdGUjNTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTcuMDcuMDAjVGhpYWJlbmRhem9sZSM1MS4xMC4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMC4xOC4wMC4wMCNBbnRpZnVuZ2FsIGRydWdzIzUxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjAxLjAwI0FtcGhvdGVyaWNpbiBiIzUxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjAyLjAwI0J1dGVuYWZpbmUgaHlkcm9jaGxvcmlkZSM1MS4xMC4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMC4xOC4wMy4wMCNCdXRvY29uYXpvbGUgbml0cmF0ZSM1MS4xMC4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMC4xOC4wNC4wMCNDaWNsb3Bpcm94IG9sYW1pbmUjNTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTguMDUuMDAjQ2xvdHJpbWF6b2xlIzUxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjA2LjAwI0Vjb25hem9sZSBuaXRyYXRlIzUxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjA3LjAwI0ZsdWNvbmF6b2xlIzUxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjA4LjAwI0ZsdWN5dG9zaW5lIzUxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjA5LjAwI0dyaXNlb2Z1bHZpbiM1MS4xMC4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMC4xOC4xMC4wMCNJdHJhY29uYXpvbGUjNTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTguMTEuMDAjS2V0b2NvbmF6b2xlIzUxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjEyLjAwI01pY29uYXpvbGUjNTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTguMTMuMDAjTmFmdGlmaW5lIGh5ZHJvY2hsb3JpZGUjNTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTguMTQuMDAjTmF0YW15Y2luIzUxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjE1LjAwI055c3RhdGluIzUxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjE2LjAwI094aWNvbmF6b2xlIG5pdHJhdGUjNTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTguMTcuMDAjU3VsY29uYXpvbGUgbml0cmF0ZSM1MS4xMC4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMC4xOC4xOC4wMCNUZXJiaW5hZmluZSBoeWRyb2NobG9yaWRlIzUxLjEwLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE4LjE5LjAwI1RlcmNvbmF6b2xlIG5pdHJhdGUjNTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTguMjAuMDAjVGlvY29uYXpvbGUjNTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTguMjEuMDAjVG9sbmFmdGF0ZSM1MS4xMC4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMC4xOS4wMC4wMCNBbnRpbWFsYXJpYWwgZHJ1Z3MjNTEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTkuMDEuMDAjQW1pbm9xdWlub2xpbmVzIzUxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE5LjAyLjAwI01lZmxvcXVpbmUgaHlkcm9jaGxvcmlkZSM1MS4xMC4xOS4wMC4wMAotdW5zcHNjNyM1MS4xMC4xOS4wMy4wMCNQcmltYXF1aW5lIHBob3NwaGF0ZSM1MS4xMC4xOS4wMC4wMAotdW5zcHNjNyM1MS4xMC4xOS4wNC4wMCNRdWluaW5lIHN1bGZhdGUjNTEuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTkuMDUuMDAjQ2hsb3JvcXVpbmUjNTEuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMTkuMDYuMDAjUHJvZ3VhbmlsIzUxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzUxLjEwLjE5LjA3LjAwI1B5cmltZXRoYW1pbmUjNTEuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjAuMDAuMDAjQW50aXR1YmVyY3VsYXIgZHJ1Z3MjNTEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjAuMDEuMDAjQ3ljbG9zZXJpbmUjNTEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjAuMDIuMDAjRXRoYW1idXRvbCBoeWRyb2NobG9yaWRlIzUxLjEwLjIwLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIwLjAzLjAwI0lzb25pYXppZCM1MS4xMC4yMC4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMC4wNC4wMCNSaWZ1YnV0aW4jNTEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjAuMDUuMDAjUmlmYW1waW4jNTEuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjEuMDAuMDAjTGVwcm9zdGF0aWNzIzUxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIxLjAxLjAwI0Nsb2ZhemltaW5lIzUxLjEwLjIxLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIxLjAyLjAwI0RhcHNvbmUjNTEuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjIuMDAuMDAjVXJpbmFyeSBhbnRpIGluZmVjdGl2ZXMgYW5kIGFuYWxnZXNpY3MjNTEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjIuMDEuMDAjQ2lub3hhY2luIzUxLjEwLjIyLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIyLjAyLjAwI0ZsYXZveGF0ZSBoeWRyb2NobG9yaWRlIzUxLjEwLjIyLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIyLjAzLjAwI01ldGhlbmFtaW5lIGhpcHB1cmF0ZSM1MS4xMC4yMi4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMi4wNC4wMCNNZXRoZW5hbWluZSBtYW5kZWxhdGUjNTEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjIuMDUuMDAjTmFsaWRpeGljIGFjaWQjNTEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjIuMDYuMDAjTml0cm9mdXJhbnRvaW4jNTEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjIuMDcuMDAjT3h5YnV0eW5pbiBjaGxvcmlkZSM1MS4xMC4yMi4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMi4wOC4wMCNQZW50b3NhbiBwb2x5c3VsZmF0ZSBzb2RpdW0jNTEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjIuMDkuMDAjUGhlbmF6b3B5cmlkaW5lIGh5ZHJvY2hsb3JpZGUjNTEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjIuMTAuMDAjQW50aXNlcHRpYyBzb2x1dGlvbnMjNTEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjMuMDAuMDAjQW50aXZpcmFsIGRydWdzIzUxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIzLjAxLjAwI0FjeWNsb3ZpciM1MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMy4wMi4wMCNBbWFudGFkaW5lIGh5ZHJvY2hsb3JpZGUjNTEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjMuMDMuMDAjQ3lkb2ZvdmlyIzUxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIzLjA0LjAwI0RpZGFub3NpbmUjNTEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjMuMDUuMDAjRmFtY2ljbG92aXIjNTEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjMuMDYuMDAjRm9zY2FybmV0IHNvZGl1bSM1MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMy4wNy4wMCNHYW5jaWNsb3ZpciBzb2RpdW0jNTEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjMuMDguMDAjSWRveHVyaWRpbmUjNTEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjMuMDkuMDAjSW5kaW5hdmlyIHN1bGZhdGUjNTEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjMuMTAuMDAjTGFtaXZ1ZGluZSM1MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMy4xMS4wMCNOZXZpcmFwaW5lIzUxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIzLjEyLjAwI1JpYmF2aXJpbiM1MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMy4xMy4wMCNSaW1hbnRhZGluZSBoeWRyb2NobG9yaWRlIzUxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIzLjE0LjAwI1JpdG9uYXZpciM1MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMy4xNS4wMCNTYXF1aW5hdmlyIG1lc3lsYXRlIzUxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzUxLjEwLjIzLjE2LjAwI1N0YXZpZGluZSM1MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMy4xNy4wMCNUcmlmbHVyYWRpbmUjNTEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjMuMTguMDAjVmFsYWN5Y2xvdmlyIGh5ZHJvY2hsb3JpZGUjNTEuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTAuMjMuMTkuMDAjVmlkYXJhYmluZSM1MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMy4yMC4wMCNaYWxjaXRhYmluZSM1MS4xMC4yMy4wMC4wMAotdW5zcHNjNyM1MS4xMC4yMy4yMS4wMCNaaWRvdnVkaW5lIzUxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzUxLjExLjAwLjAwLjAwI0FudGluZW9wbGFzdGljIGFnZW50cyM1MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNS4wMC4wMCNBbGt5bGF0aW5nIGFnZW50cyM1MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNS4wMS4wMCNBbWlmb3N0aW5lIzUxLjExLjE1LjAwLjAwCi11bnNwc2M3IzUxLjExLjE1LjAyLjAwI0J1c3VsZmFuIzUxLjExLjE1LjAwLjAwCi11bnNwc2M3IzUxLjExLjE1LjAzLjAwI0NhcmJvcGxhdGluIzUxLjExLjE1LjAwLjAwCi11bnNwc2M3IzUxLjExLjE1LjA0LjAwI0Nhcm11c3RpbmUjNTEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTUuMDUuMDAjQ2hsb3JhbWJ1Y2lsIzUxLjExLjE1LjAwLjAwCi11bnNwc2M3IzUxLjExLjE1LjA2LjAwI0Npc3BsYXRpbiM1MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNS4wNy4wMCNDeWNsb3Bob3NwaGFtaWRlIzUxLjExLjE1LjAwLjAwCi11bnNwc2M3IzUxLjExLjE1LjA4LjAwI0RhY2FyYmF6aW5lIzUxLjExLjE1LjAwLjAwCi11bnNwc2M3IzUxLjExLjE1LjA5LjAwI0lmb3NmYW1pZGUjNTEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTUuMTAuMDAjTG9tdXN0aW5lIzUxLjExLjE1LjAwLjAwCi11bnNwc2M3IzUxLjExLjE1LjExLjAwI01lY2hsb3JldGhhbWluZSBoeWRyb2NobG9yaWRlIzUxLjExLjE1LjAwLjAwCi11bnNwc2M3IzUxLjExLjE1LjEyLjAwI01lbHBoYWxhbiM1MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNS4xMy4wMCNNZXNuYSM1MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNS4xNC4wMCNQaXBvYnJvbWFuIzUxLjExLjE1LjAwLjAwCi11bnNwc2M3IzUxLjExLjE1LjE1LjAwI1N0cmVwdG96b2NpbiM1MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNS4xNi4wMCNUaGlvdGVwYSM1MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNS4xNy4wMCNVcmFjaWwgbXVzdGFyZCM1MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNi4wMC4wMCNBbnRpbWV0YWJvbGl0ZXMjNTEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTYuMDEuMDAjQ2xhZHJpYmluZSM1MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNi4wMi4wMCNDeXRhcmFiaW5lIzUxLjExLjE2LjAwLjAwCi11bnNwc2M3IzUxLjExLjE2LjAzLjAwI0Zsb3h1cmlkaW5lIzUxLjExLjE2LjAwLjAwCi11bnNwc2M3IzUxLjExLjE2LjA0LjAwI0ZsdWRhcmFiaW5lIHBob3NwaGF0ZSM1MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNi4wNS4wMCNGbHVvcm91cmFjaWwjNTEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTYuMDYuMDAjSHlkcm94eXVyZWEjNTEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTYuMDcuMDAjSWRhcnViaWNpbiBoeWRyb2NobG9yaWRlIzUxLjExLjE2LjAwLjAwCi11bnNwc2M3IzUxLjExLjE2LjA4LjAwI0xldmFtaXNvbGUgaHlkcm9jaGxvcmlkZSM1MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNi4wOS4wMCNNZXJjYXB0b3B1cmluZSM1MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNi4xMC4wMCNNZXRob3RyZXhhdGUjNTEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTYuMTEuMDAjVGVuaXBvc2lkZSM1MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNi4xMi4wMCNUaGlvZ3VhbmluZSM1MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNy4wMC4wMCNBbnRpbmVvcGxhc3RpYyBhbnRpYmlvdGljcyM1MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNy4wMS4wMCNCbGVvbXljaW4gc3VsZmF0ZSM1MS4xMS4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNy4wMi4wMCNEYWN0aW5vbXljaW4jNTEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTcuMDMuMDAjRGF1bm9ydWJpY2lucyM1MS4xMS4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMS4xNy4wNC4wMCNNaXRvbXljaW4jNTEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTcuMDUuMDAjTWl0b3RhbmUjNTEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTcuMDYuMDAjTWl0b3hhbnRyb25lIGh5ZHJvY2hsb3JpZGUjNTEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTcuMDcuMDAjUGVudG9zdGF0aW4jNTEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTcuMDguMDAjUGxpY2FteWNpbiM1MS4xMS4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMS4xOC4wMC4wMCNIb3Jtb25lcyBhbmQgYW50aWhvcm1vbmVzIzUxLjExLjAwLjAwLjAwCi11bnNwc2M3IzUxLjExLjE4LjAxLjAwI0FuYXN0cm96b2xlIzUxLjExLjE4LjAwLjAwCi11bnNwc2M3IzUxLjExLjE4LjAyLjAwI0JpY2FsdXRhbWlkZSM1MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMS4xOC4wMy4wMCNFc3RyYW11c3RpbmUgcGhvc3BoYXRlIHNvZGl1bSM1MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMS4xOC4wNC4wMCNGbHV0YW1pZGUjNTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTguMDUuMDAjR29zZXJlbGluIGFjZXRhdGUjNTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTguMDYuMDAjSXJpbm90ZWNhbiBoeWRyb2NobG9yaWRlIzUxLjExLjE4LjAwLjAwCi11bnNwc2M3IzUxLjExLjE4LjA3LjAwI0xldXByb2xpZGUgYWNldGF0ZSM1MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMS4xOC4wOC4wMCNOaWx1dGFtaWRlIzUxLjExLjE4LjAwLjAwCi11bnNwc2M3IzUxLjExLjE4LjA5LjAwI1RhbW94aWZlbiM1MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMS4xOC4xMC4wMCNUZXN0b2xhY3RvbmUjNTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTguMTEuMDAjVG9wb3RlY2FuIGh5ZHJvY2hsb3JpZGUjNTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTguMTIuMDAjVmluYmxhc3RpbmUgc3VsZmF0ZSM1MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMS4xOC4xMy4wMCNWaW5jcmlzdGluZSBzdWxmYXRlIzUxLjExLjE4LjAwLjAwCi11bnNwc2M3IzUxLjExLjE4LjE0LjAwI1Zpbm9yZWxiaW5lIHRhcnRyYXRlIzUxLjExLjE4LjAwLjAwCi11bnNwc2M3IzUxLjExLjE5LjAwLjAwI05hdHVyYWwgYW50aW5lb3BsYXN0aWMgcHJvZHVjdHMjNTEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTkuMDEuMDAjQXNwYXJhZ2luYXNlIzUxLjExLjE5LjAwLjAwCi11bnNwc2M3IzUxLjExLjE5LjAyLjAwI0RvY2V0YXhlbCM1MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM1MS4xMS4xOS4wMy4wMCNJbnRlcmZlcm9uIzUxLjExLjE5LjAwLjAwCi11bnNwc2M3IzUxLjExLjE5LjA0LjAwI1BhY2xpdGF4ZWwjNTEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTEuMTkuMDUuMDAjUG9yZmltZXIgc29kaXVtIzUxLjExLjE5LjAwLjAwCi11bnNwc2M3IzUxLjEyLjAwLjAwLjAwI0NhcmRpb3Zhc2N1bGFyIGRydWdzIzUxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEyLjE1LjAwLjAwI0FudGlhcnJ5dGhtaWMgYWdlbnRzIzUxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEyLjE1LjAxLjAwI0FkZW5vc2luZSM1MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM1MS4xMi4xNS4wMi4wMCNEaWdveGluIzUxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUxLjEyLjE1LjAzLjAwI1F1aW5pZGluZSBnbHVjb25hdGUjNTEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTYuMDAuMDAjQW50aWFuZ2luYWwgZHJ1Z3MjNTEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTYuMDEuMDAjQW15bCBuaXRyYXRlIzUxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzUxLjEyLjE2LjAyLjAwI0lzb3NvcmJpZGUgZGluaXRyYXRlIzUxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzUxLjEyLjE2LjAzLjAwI05pdHJvZ2x5Y2VyaW4jNTEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTYuMDQuMDAjUGVudGFlcnl0aHJpdG9sIHRldHJhbml0cmF0ZSM1MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM1MS4xMi4xNy4wMC4wMCNBbnRpaHlwZXJ0ZW5zaXZlIGRydWdzIzUxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEyLjE3LjAxLjAwI0RpYXpveGlkZSM1MS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMi4xNy4wMi4wMCNUZXJhem9zaW4jNTEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTcuMDMuMDAjQ2FwdG9wcmlsIzUxLjEyLjE3LjAwLjAwCi11bnNwc2M3IzUxLjEyLjE3LjA0LjAwI0xpc2lub3ByaWwjNTEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTcuMDUuMDAjRmVsb2RpcGluZSM1MS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMi4xNy4wNi4wMCNJc3JhZGlwaW5lIzUxLjEyLjE3LjAwLjAwCi11bnNwc2M3IzUxLjEyLjE3LjA3LjAwI1ZlcmFwYW1pbCM1MS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMi4xNy4wOC4wMCNNZXRoeWxkb3BhIzUxLjEyLjE3LjAwLjAwCi11bnNwc2M3IzUxLjEyLjE3LjA5LjAwI0NhcnZlZGlsb2wjNTEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTcuMTAuMDAjTG9zYXJ0YW4gcG90YXNzaXVtIzUxLjEyLjE3LjAwLjAwCi11bnNwc2M3IzUxLjEyLjE3LjExLjAwI01pbm94aWRpbCM1MS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1MS4xMi4xOC4wMC4wMCNBbnRpaHlwZXJsaXBpZGVtaWMgYW5kIGh5cG9jaG9sZXN0ZXJvbGVtaWMgYWdlbnRzIzUxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEyLjE4LjAxLjAwI0ZsdXZhc3RhdGluIHNvZGl1bSM1MS4xMi4xOC4wMC4wMAotdW5zcHNjNyM1MS4xMi4xOC4wMi4wMCNMb3Zhc3RhdGluIzUxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEyLjE4LjAzLjAwI1NpbXZhc3RhdGluIzUxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzUxLjEyLjE4LjA0LjAwI0Nsb2ZpYnJhdGUjNTEuMTIuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTguMDUuMDAjR2VtZmlicm96aWwjNTEuMTIuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTkuMDAuMDAjRHJ1Z3MgdXNlZCBmb3IgY29uZ2VzdGl2ZSBoZWFydCBmYWlsdXJlIzUxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEyLjE5LjAxLjAwI0Ftcmlub25lIGxhY3RhdGUjNTEuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTkuMDIuMDAjTWlscmlub25lIGxhY3RhdGUjNTEuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTIuMTkuMDMuMDAjRGlnaXRveGluIzUxLjEyLjE5LjAwLjAwCi11bnNwc2M3IzUxLjEzLjAwLjAwLjAwI0hlbWF0b2xpYyBkcnVncyM1MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xMy4xNS4wMC4wMCNBbnRpYW5lbWljIGRydWdzIzUxLjEzLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEzLjE1LjAxLjAwI0ZlcnJvdXMgZnVtYXJhdGUjNTEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTMuMTUuMDIuMDAjRmVycm91cyBnbHVjb25hdGUjNTEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTMuMTUuMDMuMDAjRmVycm91cyBzdWxmYXRlIzUxLjEzLjE1LjAwLjAwCi11bnNwc2M3IzUxLjEzLjE2LjAwLjAwI0FudGljb2FndWxhbnRzIzUxLjEzLjAwLjAwLjAwCi11bnNwc2M3IzUxLjEzLjE2LjAxLjAwI0Fwcm90aW5pbiM1MS4xMy4xNi4wMC4wMAotdW5zcHNjNyM1MS4xMy4xNi4wMi4wMCNIZXBhcmluIGNhbGNpdW0jNTEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTMuMTYuMDMuMDAjSGVwYXJpbiBzb2RpdW0jNTEuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTMuMTYuMDQuMDAjV2FyZmFyaW4gc29kaXVtIzUxLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUxLjEzLjE3LjAwLjAwI1Rocm9tYm9seXRpYyBkcnVncyBhbmQgcGxhdGVsZXQgYWdncmVnYXRpb24gaW5oaWJpdG9ycyM1MS4xMy4wMC4wMC4wMAotdW5zcHNjNyM1MS4xMy4xNy4wMS4wMCNBYmNpeGltYWIjNTEuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTMuMTcuMDIuMDAjQWx0ZXBsYXNlIzUxLjEzLjE3LjAwLjAwCi11bnNwc2M3IzUxLjEzLjE3LjAzLjAwI1N0cmVwdG9raW5hc2UjNTEuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTMuMTcuMDQuMDAjVXJva2luYXNlIzUxLjEzLjE3LjAwLjAwCi11bnNwc2M3IzUxLjE0LjAwLjAwLjAwI0NlbnRyYWwgbmVydm91cyBzeXN0ZW0gZHJ1Z3MjNTEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTUuMDAuMDAjQW50aWNvbnZ1bHNhbnRzIzUxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE0LjE1LjAxLjAwI0FjZXRhem9sYW1pZGUjNTEuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTUuMDIuMDAjQ2xvbmF6ZXBhbSM1MS4xNC4xNS4wMC4wMAotdW5zcHNjNyM1MS4xNC4xNS4wMy4wMCNGZWxiYW1hdGUjNTEuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTUuMDQuMDAjTGFtb3RyaWdpbmUjNTEuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTUuMDUuMDAjUGhlbm9iYXJiaXRhbCM1MS4xNC4xNS4wMC4wMAotdW5zcHNjNyM1MS4xNC4xNS4wNi4wMCNQaGVub2JhcmJpdGFsIHNvZGl1bSM1MS4xNC4xNS4wMC4wMAotdW5zcHNjNyM1MS4xNC4xNS4wNy4wMCNQaGVueXRvaW4jNTEuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTUuMDguMDAjRXRob3N1eGltaWRlIzUxLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE0LjE2LjAwLjAwI0FudGlkZXByZXNzYW50cyM1MS4xNC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNC4xNi4wMS4wMCNBbWl0cmlwdHlsaW5lIGh5ZHJvY2hsb3JpZGUjNTEuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTYuMDIuMDAjRG94ZXBpbiBoeWRyb2NobG9yaWRlIzUxLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE0LjE2LjAzLjAwI0ltaXByYW1pbmUgcGFtb2F0ZSM1MS4xNC4xNi4wMC4wMAotdW5zcHNjNyM1MS4xNC4xNi4wNC4wMCNNaXJ0YXphcGluZSM1MS4xNC4xNi4wMC4wMAotdW5zcHNjNyM1MS4xNC4xNi4wNS4wMCNQYXJveGV0aW5lIGh5ZHJvY2hsb3JpZGUjNTEuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTYuMDYuMDAjVHJhem9kb25lIGh5ZHJvY2hsb3JpZGUjNTEuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTcuMDAuMDAjQW50aXBzeWNob3RpYyBhZ2VudHMjNTEuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTcuMDEuMDAjUGhlbm90aGlhemluZXMjNTEuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTcuMDIuMDAjSGFsb3Blcmlkb2wjNTEuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTcuMDMuMDAjT2xhbnphcGluZSM1MS4xNC4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNC4xNy4wNC4wMCNSaXNwZXJpZG9uZSM1MS4xNC4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNC4xOC4wMC4wMCNIeXBub3RpY3MjNTEuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTguMDEuMDAjUGVudG9iYXJiaXRhbCM1MS4xNC4xOC4wMC4wMAotdW5zcHNjNyM1MS4xNC4xOC4wMi4wMCNTZWNvYmFyYml0YWwgc29kaXVtIzUxLjE0LjE4LjAwLjAwCi11bnNwc2M3IzUxLjE0LjE4LjAzLjAwI0NobG9yYWwgaHlkcmF0ZSM1MS4xNC4xOC4wMC4wMAotdW5zcHNjNyM1MS4xNC4xOC4wNC4wMCNFc3Rhem9sYW0jNTEuMTQuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTQuMTguMDUuMDAjVHJpYXpvbGFtIzUxLjE0LjE4LjAwLjAwCi11bnNwc2M3IzUxLjE0LjE5LjAwLjAwI1RyYW5xdWlsaXplcnMgYW5kIGFudGltYW5pYyBkcnVncyM1MS4xNC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNC4xOS4wMS4wMCNBbHByYXpvbGFtIzUxLjE0LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE0LjE5LjAyLjAwI0RpYXplcGFtIzUxLjE0LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE0LjE5LjAzLjAwI0xpdGhpdW0gY2FyYm9uYXRlIzUxLjE0LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE0LjE5LjA0LjAwI0xpdGhpdW0gY2l0cmF0ZSM1MS4xNC4xOS4wMC4wMAotdW5zcHNjNyM1MS4xNC4xOS4wNS4wMCNNaWRhem9sYW0gaHlkcm9jaGxvcmlkZSM1MS4xNC4xOS4wMC4wMAotdW5zcHNjNyM1MS4xNC4xOS4wNi4wMCNUZW1hemVwYW0jNTEuMTQuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjAuMDAuMDAjTm9uIG5hcmNvdGljIGFuYWxnZXNpY3MgYW5kIGFudGlweXJldGljcyM1MS4xNC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNC4yMC4wMS4wMCNBY2V0YW1pbm9waGVuIzUxLjE0LjIwLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIwLjAyLjAwI0FjZXR5bHNhbGljeWxpYyBhY2lkIzUxLjE0LjIwLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIwLjAzLjAwI01lc2FsYW1pbmUjNTEuMTQuMjAuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjAuMDQuMDAjTWVwcm9icm9tYXRlIzUxLjE0LjIwLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIxLjAwLjAwI05vbnN0ZXJvaWRhbCBhbnRpIGluZmxhbW1hdG9yeSBkcnVncyAoTlNBSURzKSM1MS4xNC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNC4yMS4wMS4wMCNBdXJhbm9maW4jNTEuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjEuMDIuMDAjQ2FycG9mZW4jNTEuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjEuMDMuMDAjRGljbG9mZW5hYyBwb3Rhc3NpdW0jNTEuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjEuMDQuMDAjRGljbG9mZW5hYyBzb2RpdW0jNTEuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjEuMDUuMDAjRmx1cmJpcHJvZmVuIzUxLjE0LjIxLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIxLjA2LjAwI0lidXByb2ZlbiM1MS4xNC4yMS4wMC4wMAotdW5zcHNjNyM1MS4xNC4yMS4wNy4wMCNJbmRvbWV0aGFjaW4jNTEuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjEuMDguMDAjS2V0b3Byb2ZlbiM1MS4xNC4yMS4wMC4wMAotdW5zcHNjNyM1MS4xNC4yMS4wOS4wMCNOYXByb3hlbiM1MS4xNC4yMS4wMC4wMAotdW5zcHNjNyM1MS4xNC4yMS4xMC4wMCNOYXByb3hlbiBzb2RpdW0jNTEuMTQuMjEuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjEuMTEuMDAjT3hhcHJvemluIzUxLjE0LjIxLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIxLjEyLjAwI1N1bGluZGFjIzUxLjE0LjIxLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIxLjEzLjAwI1N1cHJvZmVuIzUxLjE0LjIxLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIyLjAwLjAwI05hcmNvdGljIGFuYWxnZXNpY3MjNTEuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjIuMDEuMDAjQnV0b3JwaGFub2wgdGFydHJhdGUjNTEuMTQuMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjIuMDIuMDAjQ29kZWluZSBwaG9zcGhhdGUjNTEuMTQuMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjIuMDMuMDAjQ29kZWluZSBzdWxmYXRlIzUxLjE0LjIyLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIyLjA1LjAwI01lcGVyaWRpbmUgaHlkcm9jaGxvcmlkZSM1MS4xNC4yMi4wMC4wMAotdW5zcHNjNyM1MS4xNC4yMi4wNi4wMCNNb3JwaGluZSBzdWxmYXRlIzUxLjE0LjIyLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIyLjA3LjAwI094eWNvZG9uZSM1MS4xNC4yMi4wMC4wMAotdW5zcHNjNyM1MS4xNC4yMi4wOC4wMCNTdWZlbnRhbmlsIzUxLjE0LjIyLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIzLjAwLjAwI05hcmNvdGljIGFudGFnb25pc3RzIzUxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIzLjAxLjAwI05hbG1lZmVuZSBoeWRyb2NobG9yaWRlIzUxLjE0LjIzLjAwLjAwCi11bnNwc2M3IzUxLjE0LjIzLjAyLjAwI05hbG94b25lIGh5ZHJvY2hsb3JpZGUjNTEuMTQuMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjMuMDMuMDAjTmFsdHJleG9uZSM1MS4xNC4yMy4wMC4wMAotdW5zcHNjNyM1MS4xNC4yNC4wMC4wMCNEcnVncyB1c2VkIGZvciB2YXNjdWxhciBhbmQgbWlncmFpbmUgaGVhZGFjaGVzIzUxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE0LjI0LjAxLjAwI01ldGh5c2VyZ2lkZSBtYWxlYXRlIzUxLjE0LjI0LjAwLjAwCi11bnNwc2M3IzUxLjE0LjI0LjAyLjAwI1N1bWF0cmlwdGFuIHN1Y2NpbmF0ZSM1MS4xNC4yNC4wMC4wMAotdW5zcHNjNyM1MS4xNC4yNS4wMC4wMCNBbnRpcGFya2luc29uIGRydWdzIzUxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE0LjI1LjAxLjAwI0Jyb21vY3JpcHRpbmUgbWVzeWxhdGUjNTEuMTQuMjUuMDAuMDAKLXVuc3BzYzcjNTEuMTQuMjUuMDIuMDAjQ2FyYmlkb3BhIzUxLjE0LjI1LjAwLjAwCi11bnNwc2M3IzUxLjE0LjI1LjAzLjAwI0xldm9kb3BhIzUxLjE0LjI1LjAwLjAwCi11bnNwc2M3IzUxLjE0LjI1LjA0LjAwI1NlbGVnaWxpbmUgaHlkcm9jaGxvcmlkZSM1MS4xNC4yNS4wMC4wMAotdW5zcHNjNyM1MS4xNC4yNi4wMC4wMCNTdGltdWxhbnRzIGFuZCBhbm9yZXhpYW50cyM1MS4xNC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNC4yNi4wMS4wMCNBbXBoZXRhbWluZSBzdWxmYXRlIzUxLjE0LjI2LjAwLjAwCi11bnNwc2M3IzUxLjE0LjI2LjAyLjAwI0ZlbmZsdXJhbWluZSM1MS4xNC4yNi4wMC4wMAotdW5zcHNjNyM1MS4xNC4yNi4wMy4wMCNNYXppbmRvbCM1MS4xNC4yNi4wMC4wMAotdW5zcHNjNyM1MS4xNC4yNi4wNC4wMCNQZW1vbGluZSM1MS4xNC4yNi4wMC4wMAotdW5zcHNjNyM1MS4xNC4yNi4wNS4wMCNQaGVuZGltZXRyYXppbmUgdGFydHJhdGUjNTEuMTQuMjYuMDAuMDAKLXVuc3BzYzcjNTEuMTUuMDAuMDAuMDAjQXV0b25vbWljIG5lcnZvdXMgc3lzdGVtIGRydWdzIzUxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUxLjE1LjE1LjAwLjAwI0Nob2xpbmVyZ2ljIGRydWdzIGFuZCBjaG9saW5lc3RlcmFzZSBpbmhpYml0b3JzIzUxLjE1LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE1LjE1LjAxLjAwI0JldGhhbmVjaG9sIGNobG9yaWRlIzUxLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE1LjAyLjAwI0Vkcm9waG9uaXVtIGNobG9yaWRlIzUxLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE1LjAzLjAwI1BoeXNvc3RpZ21pbmUgc2FsaWN5bGF0ZSM1MS4xNS4xNS4wMC4wMAotdW5zcHNjNyM1MS4xNS4xNS4wNC4wMCNQaWxvY2FycGluZSBuaXRyYXRlIzUxLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE2LjAwLjAwI0Nob2xpbmVyZ2ljIGJsb2NraW5nIGFnZW50cyM1MS4xNS4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNS4xNi4wMS4wMCNBdHJvcGluZSBzdWxmYXRlIzUxLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE2LjAyLjAwI0Jlbnp0cm9waW5lIG1lc3lsYXRlIzUxLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE2LjAzLjAwI1Byb2N5Y2xpZGluZSBoeWRyb2NobG9yaWRlIzUxLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE2LjA0LjAwI1RyaWhleHlwaGVuaWR5bCBoeWRyb2NobG9yaWRlIzUxLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE3LjAwLjAwI1N5bXBhdGhvbWltZXRpYyBvciBhZHJlbmVyZ2ljIGRydWdzIzUxLjE1LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE1LjE3LjAxLjAwI0FsYnV0ZXJvbCM1MS4xNS4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNS4xNy4wMi4wMCNCcmltb25pZGluZSB0YXJ0cmF0ZSM1MS4xNS4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNS4xNy4wMy4wMCNFcGluZXBocmluZSM1MS4xNS4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNS4xNy4wNC4wMCNFcGluZXBocmluZSBib3JhdGUjNTEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTUuMTcuMDUuMDAjRXBpbmVwaHJpbmUgaHlkcm9jaGxvcmlkZSM1MS4xNS4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNS4xNy4wNi4wMCNJc29wcm90ZXJlbm9sIzUxLjE1LjE3LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE3LjA3LjAwI0lzb3Byb3RlcmVub2wgc3VsZmF0ZSM1MS4xNS4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNS4xNy4wOC4wMCNMZXZhcnRlcmVub2wgYml0YXJ0cmF0ZSM1MS4xNS4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNS4xNy4wOS4wMCNQaGVueWxwcm9wYW5vbGFtaW5lIGh5ZHJvY2hsb3JpZGUjNTEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTUuMTguMDAuMDAjQWRyZW5lcmdpYyBibG9ja2luZyBhZ2VudHMjNTEuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTUuMTguMDEuMDAjQXRlbm9sb2wjNTEuMTUuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTUuMTguMDIuMDAjRXNtb2xvbCBoeWRyb2NobG9yaWRlIzUxLjE1LjE4LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE4LjAzLjAwI05hZG9sb2wjNTEuMTUuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTUuMTguMDQuMDAjUGluZG9sb2wjNTEuMTUuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTUuMTguMDUuMDAjVGltb2xvbCBtYWxlYXRlIzUxLjE1LjE4LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE4LjEwLjAwI1BoZW50b2xhbWluZSBtZXN5bGF0ZSM1MS4xNS4xOC4wMC4wMAotdW5zcHNjNyM1MS4xNS4xOS4wMC4wMCNTa2VsZXRhbCBtdXNjbGUgcmVsYXhhbnRzIGFuZCBjZW50cmFsbHkgYWN0aW5nIzUxLjE1LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE1LjE5LjAxLjAwI0JhY2xvZmVuIzUxLjE1LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE1LjE5LjAyLjAwI0NobG9yem94YXpvbmUjNTEuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTUuMTkuMDMuMDAjRGFudHJvbGVuZSBzb2RpdW0jNTEuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTUuMTkuMDQuMDAjTWV0aG9jYXJiYW1vbCM1MS4xNS4xOS4wMC4wMAotdW5zcHNjNyM1MS4xNS4xOS4wNS4wMCNDYXJpc29wcm9kb2wjNTEuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTUuMjAuMDAuMDAjTmV1cm9tdXNjdWxhciBibG9ja2luZyBhZ2VudHMjNTEuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTUuMjAuMDEuMDAjQXRyYWN1cml1bSBiZXN5bGF0ZSM1MS4xNS4yMC4wMC4wMAotdW5zcHNjNyM1MS4xNS4yMC4wMi4wMCNNaXZhY3VyaXVtIGNoeWxvcmlkZSM1MS4xNS4yMC4wMC4wMAotdW5zcHNjNyM1MS4xNS4yMC4wMy4wMCNSb2N1cm9uaXVtIGJyb21pZGUjNTEuMTUuMjAuMDAuMDAKLXVuc3BzYzcjNTEuMTUuMjAuMDQuMDAjVmVjdXJvbml1bSBicm9taWRlIzUxLjE1LjIwLjAwLjAwCi11bnNwc2M3IzUxLjE2LjAwLjAwLjAwI0RydWdzIGFmZmVjdGluZyB0aGUgcmVzcGlyYXRvcnkgdHJhY3QjNTEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTYuMTUuMDAuMDAjQW50aWFzdGhtYXRpYyBkcnVncyM1MS4xNi4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNi4xNS4wMS4wMCNCaXRvbHRlcm9sIG1lc3lsYXRlIzUxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE2LjE1LjAyLjAwI05lZG9jcm9taWwgc29kaXVtIzUxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE2LjE1LjAzLjAwI1BpcmJ1dGVyb2wgYWNldGF0ZSM1MS4xNi4xNS4wMC4wMAotdW5zcHNjNyM1MS4xNi4xNS4wNC4wMCNBbWlub3BoeWxsaW5lIzUxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE2LjE1LjA1LjAwI1RoZW9waHlsbGluZSM1MS4xNi4xNS4wMC4wMAotdW5zcHNjNyM1MS4xNi4xNi4wMC4wMCNBbnRpaGlzdGFtaW5lcyBvciBIMSBibG9ja2VycyM1MS4xNi4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNi4xNi4wMS4wMCNBc3RlbWl6b2xlIzUxLjE2LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE2LjE2LjAyLjAwI0NsZW1hc3RpbmUgZnVtYXJhdGUjNTEuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTYuMTYuMDMuMDAjRGV4Y2hsb3JwaGVuaXJhbWluZSBtYWxlYXRlIzUxLjE2LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE2LjE2LjA0LjAwI0RpbWVuaHlkcmluYXRlIzUxLjE2LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE2LjE2LjA1LjAwI0xldm9jYWJhc3RpbmUgaHlkcm9jaGxvcmlkZSM1MS4xNi4xNi4wMC4wMAotdW5zcHNjNyM1MS4xNi4xNi4wNi4wMCNMb3JhdGlkaW5lIzUxLjE2LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE2LjE2LjA3LjAwI1RlcmZlbmFkaW5lIzUxLjE2LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE2LjE3LjAwLjAwI0RydWdzIHVzZWQgZm9yIHJlc3BpcmF0b3J5IHRyYWN0IGRpc29yZGVycyM1MS4xNi4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNi4xNy4wMS4wMCNBY2V0eWxjeXN0ZWluZSM1MS4xNi4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNi4xNy4wMi4wMCNCZXJhY3RhbnQjNTEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTYuMTcuMDMuMDAjQnVkZXNvbmlkZSM1MS4xNi4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNi4xNy4wNC4wMCNDb2xmb3NjZXJpbCBwYWxtaXRhdGUjNTEuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTYuMTcuMDUuMDAjSXByYXRyb3BpdW0gYnJvbWlkZSM1MS4xNi4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNi4xOC4wMC4wMCNDb3VnaCBhbmQgY29sZCBhbmQgYW50aWFsbGVyZ3kgcHJvZHVjdHMjNTEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTYuMTguMDEuMDAjQmVuem9uYXRhdGUjNTEuMTYuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTYuMTguMDIuMDAjR3VhaWZlbmVzaW4jNTEuMTYuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTYuMTkuMDAuMDAjTmFzYWwgZGVjb25nZXN0YW50cyM1MS4xNi4wMC4wMC4wMAotdW5zcHNjNyM1MS4xNi4xOS4wMS4wMCNPeHltZXRhem9saW5lIGh5ZHJvY2hsb3JpZGUjNTEuMTYuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTYuMTkuMDIuMDAjUHNldWRvZXBoZWRyaW5lIGh5ZHJvY2hsb3JpZGUjNTEuMTYuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTYuMTkuMDMuMDAjWHlsb21ldGF6b2xpbmUgaHlkcm9jaGxvcmlkZSM1MS4xNi4xOS4wMC4wMAotdW5zcHNjNyM1MS4xNy4wMC4wMC4wMCNEcnVncyBhZmZlY3RpbmcgdGhlIGdhc3Ryb2ludGVzdGluYWwgc3lzdGVtIzUxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUxLjE3LjE1LjAwLjAwI0FudGFjaWRzIzUxLjE3LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE3LjE1LjAxLjAwI0NhbGNpdW0gY2FyYm9uYXRlIzUxLjE3LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE1LjAyLjAwI01hZ2FsZHJhdGUjNTEuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTcuMTUuMDMuMDAjTWFnbmVzaXVtIGh5ZHJveGlkZSM1MS4xNy4xNS4wMC4wMAotdW5zcHNjNyM1MS4xNy4xNS4wNC4wMCNTb2RpdW0gYmljYXJib25hdGUgYW50YWNpZHMjNTEuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTcuMTYuMDAuMDAjTGF4YXRpdmVzIzUxLjE3LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE3LjE2LjAxLjAwI0Nhc2NhcmEgc2FncmFkYSM1MS4xNy4xNi4wMC4wMAotdW5zcHNjNyM1MS4xNy4xNi4wMi4wMCNEb2N1c2F0ZSBjYWxjaXVtIzUxLjE3LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE2LjAzLjAwI0RvY3VzYXRlIHBvdGFzc2l1bSM1MS4xNy4xNi4wMC4wMAotdW5zcHNjNyM1MS4xNy4xNi4wNC4wMCNEb2N1c2F0ZSBzb2RpdW0jNTEuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTcuMTYuMDUuMDAjTGFjdHVsb3NlIzUxLjE3LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE2LjA2LjAwI01hZ25lc2l1bSBzdWxmYXRlIzUxLjE3LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE2LjA3LjAwI1BzeWxsaXVtIGh5ZHJvcGhpbGljIG11Y2lsb2lkIzUxLjE3LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE3LjAwLjAwI0FudGlkaWFycmhlYWxzIzUxLjE3LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE3LjE3LjAxLjAwI0RpZmVub3hpbiBoeWRyb2NobG9yaWRlIzUxLjE3LjE3LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE3LjAyLjAwI0xvcGVyYW1pZGUgaHlkcm9jaGxvcmlkZSM1MS4xNy4xNy4wMC4wMAotdW5zcHNjNyM1MS4xNy4xNy4wMy4wMCNQYXJlZ29yaWMjNTEuMTcuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTcuMTguMDAuMDAjQW50aWVtZXRpY3MgYW5kIGFudGluYXVzZWFudHMjNTEuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTcuMTguMDEuMDAjRHJvbmFiaW5vbCM1MS4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MS4xNy4xOC4wMi4wMCNHcmFuaXNldHJvbiBoeWRyb2NobG9yaWRlIzUxLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE4LjAzLjAwI01lY2xpemluZSBoeWRyb2NobG9yaWRlIzUxLjE3LjE4LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE4LjA0LjAwI09uZGFuc2V0cm9uIGh5ZHJvY2hsb3JpZGUjNTEuMTcuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTcuMTguMDUuMDAjVHJpbWV0aG9iZW56YW1pZGUgaHlkcm9jaGxvcmlkZSM1MS4xNy4xOC4wMC4wMAotdW5zcHNjNyM1MS4xNy4xOS4wMC4wMCNBbnRpdWxjZXIgYW5kIHJlbGF0ZWQgZ2FzdHJvaW50ZXN0aW5hbCAoR0kpIGRydWdzIzUxLjE3LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE3LjE5LjAxLjAwI0NpbWV0aWRpbmUjNTEuMTcuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTcuMTkuMDIuMDAjRmFtb3RpZGluZSM1MS4xNy4xOS4wMC4wMAotdW5zcHNjNyM1MS4xNy4xOS4wMy4wMCNOaXphdGlkaW5lIzUxLjE3LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE5LjA0LjAwI1Jhbml0aWRpbmUgaHlkcm9jaGxvcmlkZSM1MS4xNy4xOS4wMC4wMAotdW5zcHNjNyM1MS4xNy4xOS4wNS4wMCNDaXNhcHJpZGUjNTEuMTcuMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTcuMTkuMDYuMDAjTGFuc29wcmF6b2xlIzUxLjE3LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE3LjE5LjA3LjAwI0xpYnJheCM1MS4xNy4xOS4wMC4wMAotdW5zcHNjNyM1MS4xNy4xOS4wOC4wMCNNaXNvcHJvc3RvbCM1MS4xNy4xOS4wMC4wMAotdW5zcHNjNyM1MS4xNy4yMC4wMC4wMCNEcnVncyB1c2VkIGZvciBnYWxsYmxhZGRlciBkaXNlYXNlIzUxLjE3LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE3LjIwLjAxLjAwI0NoZW5vZGlvbCM1MS4xNy4yMC4wMC4wMAotdW5zcHNjNyM1MS4xNy4yMC4wMi4wMCNNb25vY3Rhbm9pbiM1MS4xNy4yMC4wMC4wMAotdW5zcHNjNyM1MS4xNy4yMC4wMy4wMCNVcnNvZGlvbCM1MS4xNy4yMC4wMC4wMAotdW5zcHNjNyM1MS4xOC4wMC4wMC4wMCNIb3Jtb25lcyBhbmQgaG9ybW9uZSBhbnRhZ29uaXN0cyM1MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNS4wMC4wMCNBbnRpZGlhYmV0aWMgYWdlbnRzIGFuZCBoeXBlcmdseWNlbWljIGFnZW50cyM1MS4xOC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNS4wMS4wMCNBY2FyYm9zZSM1MS4xOC4xNS4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNS4wMi4wMCNBY2V0b2hleGFtaWRlIzUxLjE4LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE1LjAzLjAwI0NobG9ycHJvcGFtaWRlIzUxLjE4LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE1LjA0LjAwI0dsaW1lcGlyaWRlIzUxLjE4LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE1LjA1LjAwI0dsaXBpemlkZSM1MS4xOC4xNS4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNS4wNi4wMCNJbnN1bGluIzUxLjE4LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE1LjA4LjAwI0dsdWNhZ29uIzUxLjE4LjE1LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE2LjAwLjAwI1RoeXJvaWQgYW5kIGFudGl0aHlyb2lkIGRydWdzIzUxLjE4LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE4LjE2LjAxLjAwI0xldm90aHlyb3hpbmUgc29kaXVtIzUxLjE4LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE2LjAyLjAwI0xpb3RoeXJvbmluZSBzb2RpdW0jNTEuMTguMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTguMTYuMDMuMDAjTGlvdHJpeCM1MS4xOC4xNi4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNi4wNC4wMCNUaHlyb3Ryb3BpbiM1MS4xOC4xNi4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNi4wNS4wMCNNZXRoaW1hem9sZSM1MS4xOC4xNi4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNi4wNi4wMCNQcm9weWx0aGlvdXJhY2lsIzUxLjE4LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE3LjAwLjAwI0NvcnRpY29zdGVyb2lkcyM1MS4xOC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNy4wMS4wMCNCZXRhbWV0aGFzb25lIzUxLjE4LjE3LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE3LjAyLjAwI0NvcnRpY290cm9waW4jNTEuMTguMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTguMTcuMDMuMDAjQ29zeW50cm9waW4jNTEuMTguMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTguMTcuMDQuMDAjRGV4YW1ldGhhc29uZSM1MS4xOC4xNy4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNy4wNS4wMCNGbHVuaXNvbGlkZSM1MS4xOC4xNy4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNy4wNi4wMCNIeWRyb2NvcnRpc29uZSM1MS4xOC4xNy4wMC4wMAotdW5zcHNjNyM1MS4xOC4xNy4wNy4wMCNNZXRoeWxwcmVkbmlzb2xvbmUjNTEuMTguMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTguMTcuMDguMDAjUHJlZG5pc29sb25lIzUxLjE4LjE3LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE3LjA5LjAwI1RyaWFtY2lub2xvbmUjNTEuMTguMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTguMTguMDAuMDAjRXN0cm9nZW5zIGFuZCBwcm9nZXN0aW5zIGFuZCBpbnRlcm5hbCBjb250cmFjZXB0aXZlcyM1MS4xOC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xOC4xOC4wMS4wMCNDaGxvcm90cmlhbmlzZW5lIzUxLjE4LjE4LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE4LjAyLjAwI0VzdHJvbmUjNTEuMTguMTguMDAuMDAKLXVuc3BzYzcjNTEuMTguMTguMDMuMDAjRXN0cm9nZW5zIGNvbmp1Z2F0ZWQjNTEuMTguMTguMDAuMDAKLXVuc3BzYzcjNTEuMTguMTguMDQuMDAjRXN0cm9waXBhdGUjNTEuMTguMTguMDAuMDAKLXVuc3BzYzcjNTEuMTguMTguMDUuMDAjTGV2b25vcmdlc3RyZWwjNTEuMTguMTguMDAuMDAKLXVuc3BzYzcjNTEuMTguMTguMDYuMDAjTWVnZXN0cm9sIGFjZXRhdGUjNTEuMTguMTguMDAuMDAKLXVuc3BzYzcjNTEuMTguMTguMDcuMDAjRXRoaW55bCBlc3RyYWRpb2wjNTEuMTguMTguMDAuMDAKLXVuc3BzYzcjNTEuMTguMTguMDguMDAjTWVzdHJhbm9sIzUxLjE4LjE4LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE5LjAwLjAwI0dvbmFkb3Ryb3BpYyBob3Jtb25lcyBhbmQgb3ZhcmlhbiBzdGltdWxhbnRzIGFuZCBpbmhpYml0b3JzIzUxLjE4LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE4LjE5LjAxLjAwI0Nob3Jpb25pYyBnb25hZG90cm9waW4jNTEuMTguMTkuMDAuMDAKLXVuc3BzYzcjNTEuMTguMTkuMDIuMDAjRGFuYXpvbCM1MS4xOC4xOS4wMC4wMAotdW5zcHNjNyM1MS4xOC4xOS4wMy4wMCNHb25hZG9yZWxpbiBhY2V0YXRlIzUxLjE4LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE5LjA0LjAwI0hpc3RyZWxpbiBhY2V0YXRlIzUxLjE4LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE5LjA1LjAwI01lbm90cm9waW5zIzUxLjE4LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE4LjE5LjA2LjAwI1Vyb2ZvbGxpdHJvcGluIzUxLjE4LjE5LjAwLjAwCi11bnNwc2M3IzUxLjE4LjIwLjAwLjAwI0FuZHJvZ2VucyBhbmQgYW5kcm9nZW4gaW5oaWJpdG9ycyM1MS4xOC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xOC4yMC4wMS4wMCNGaW5hc3RlcmlkZSM1MS4xOC4yMC4wMC4wMAotdW5zcHNjNyM1MS4xOC4yMC4wMi4wMCNUZXN0b3N0ZXJvbmUjNTEuMTguMjAuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjAuMDMuMDAjVGVzdG9zdGVyb25lIGN5cGlvbmF0ZSM1MS4xOC4yMC4wMC4wMAotdW5zcHNjNyM1MS4xOC4yMC4wNC4wMCNUZXN0b3N0ZXJvbmUgZW5hbnRoYXRlIzUxLjE4LjIwLjAwLjAwCi11bnNwc2M3IzUxLjE4LjIwLjA1LjAwI1Rlc3Rvc3Rlcm9uZSBwcm9waW9uYXRlIzUxLjE4LjIwLjAwLjAwCi11bnNwc2M3IzUxLjE4LjIxLjAwLjAwI1Bvc3RlcmlvciBwaXR1aXRhcnkgaG9ybW9uZXMjNTEuMTguMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjEuMDEuMDAjRGVzbW9wcmVzc2luIGFjZXRhdGUjNTEuMTguMjEuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjEuMDIuMDAjVmFzb3ByZXNzaW4jNTEuMTguMjEuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjIuMDAuMDAjRHJ1Z3MgZm9yIGluZHVjaW5nIGxhYm9yIzUxLjE4LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE4LjIyLjAxLjAwI0Rpbm9wcm9zdG9uZSM1MS4xOC4yMi4wMC4wMAotdW5zcHNjNyM1MS4xOC4yMi4wMi4wMCNNZXRoeWxlcmdvbm92aW5lIG1hbGVhdGUjNTEuMTguMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjIuMDMuMDAjT3h5dG9jaW4jNTEuMTguMjIuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjMuMDAuMDAjR3Jvd3RoIGhvcm1vbmVzIzUxLjE4LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE4LjIzLjAxLjAwI1NvbWF0cmVtIzUxLjE4LjIzLjAwLjAwCi11bnNwc2M3IzUxLjE4LjIzLjAyLjAwI1NvbWF0cm9waW4jNTEuMTguMjMuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjQuMDAuMDAjQ2FsY2l1bSBzYWx0cyBhbmQgY2FsY2l1bSByZWd1bGF0b3JzIzUxLjE4LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE4LjI0LjAxLjAwI0NhbGNpdW0gY2hsb3JpZGUjNTEuMTguMjQuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjQuMDIuMDAjQ2FsY2l1bSBjaXRyYXRlIzUxLjE4LjI0LjAwLjAwCi11bnNwc2M3IzUxLjE4LjI0LjAzLjAwI0NhbGNpdW0gZ2x1Y29uYXRlIzUxLjE4LjI0LjAwLjAwCi11bnNwc2M3IzUxLjE4LjI0LjA0LjAwI0NhbGNpdW0gbGFjdGF0ZSM1MS4xOC4yNC4wMC4wMAotdW5zcHNjNyM1MS4xOC4yNC4wNS4wMCNEaWJhc2UgY2FsY2l1bSBwaG9zcGhhdGUjNTEuMTguMjQuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjQuMDYuMDAjQWxlbmRyb25hdGUgc29kaXVtIzUxLjE4LjI0LjAwLjAwCi11bnNwc2M3IzUxLjE4LjI0LjA3LjAwI0NhbGNpdG9uaW4jNTEuMTguMjQuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjQuMDguMDAjQ2VsbHVsb3NlIHNvZGl1bSBwaG9zcGhhdGUjNTEuMTguMjQuMDAuMDAKLXVuc3BzYzcjNTEuMTguMjQuMDkuMDAjR2FsbGl1bSBuaXRyYXRlIzUxLjE4LjI0LjAwLjAwCi11bnNwc2M3IzUxLjE5LjAwLjAwLjAwI0FnZW50cyBhZmZlY3Rpbmcgd2F0ZXIgYW5kIGVsZWN0cm9seXRlcyM1MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MS4xOS4xNS4wMC4wMCNEaXVyZXRpY3MjNTEuMTkuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTUuMDEuMDAjQ2hsb3JvdGhpYXppZGUjNTEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTUuMDIuMDAjQ2hsb3J0aGFsaWRvbmUjNTEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTUuMDMuMDAjTWVudG9sYXpvbmUjNTEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTUuMDQuMDAjQnVtZXRhbmlkZSM1MS4xOS4xNS4wMC4wMAotdW5zcHNjNyM1MS4xOS4xNS4wNS4wMCNFdGhhY3J5bmF0ZSBzb2RpdW0jNTEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTUuMDYuMDAjQW1pbG9yaWRlIGh5ZHJvY2hsb3JpZGUjNTEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTUuMDcuMDAjU3Bpcm9ub2xhY3RvbmUjNTEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTUuMDguMDAjVHJpYW10ZXJlbmUjNTEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTUuMDkuMDAjTWFubml0b2wjNTEuMTkuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTYuMDAuMDAjRWxlY3Ryb2x5dGVzIzUxLjE5LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE5LjE2LjAxLjAwI0RleHRyb3NlIzUxLjE5LjE2LjAwLjAwCi11bnNwc2M3IzUxLjE5LjE2LjAyLjAwI1NvZGl1bSBjaGxvcmlkZSBlbGVjdHJvbHl0ZXMjNTEuMTkuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTcuMDAuMDAjQWxrYWxpbml6aW5nIGFnZW50cyM1MS4xOS4wMC4wMC4wMAotdW5zcHNjNyM1MS4xOS4xNy4wMS4wMCNUcm9tZXRoYW1pbmUjNTEuMTkuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTguMDAuMDAjUG90YXNzaXVtIHNhbHRzIzUxLjE5LjAwLjAwLjAwCi11bnNwc2M3IzUxLjE5LjE4LjAxLjAwI1BvdGFzc2l1bSBiaWNhcmJvbmF0ZSM1MS4xOS4xOC4wMC4wMAotdW5zcHNjNyM1MS4xOS4xOC4wMi4wMCNQb3Rhc3NpdW0gY2hsb3JpZGUjNTEuMTkuMTguMDAuMDAKLXVuc3BzYzcjNTEuMTkuMTguMDMuMDAjUG90YXNzaXVtIGdsdWNvbmF0ZSM1MS4xOS4xOC4wMC4wMAotdW5zcHNjNyM1MS4yMC4wMC4wMC4wMCNJbW11bm9tb2R1bGF0aW5nIGRydWdzIzUxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUxLjIwLjE1LjAwLjAwI0ltbXVub3N1cHByZXNzYW50cyM1MS4yMC4wMC4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNS4wMS4wMCNBemF0aGlvcHJpbmUjNTEuMjAuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTUuMDIuMDAjQ3ljbG9zcG9yaW5lIzUxLjIwLjE1LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE1LjAzLjAwI015Y29waGVub2xhdGUgbW9mZXRpbCM1MS4yMC4xNS4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNS4wNC4wMCNUYWNyb2xpbXVzIzUxLjIwLjE1LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjAwLjAwI1ZhY2NpbmVzIzUxLjIwLjAwLjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjAxLjAwI0FudGhyYXggYW50aWdlbiM1MS4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNi4wMi4wMCNCcnVjZWxsYSBhbnRpZ2VuIzUxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjAzLjAwI0Nob2xlcmEjNTEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTYuMDQuMDAjRGlwaHRlcmlhIzUxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjA1LjAwI0VuY2VwaGFsaXRpcyM1MS4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNi4wNi4wMCNIZW1vcGhpbHVzIGluZmx1ZW56YWUjNTEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTYuMDcuMDAjSGVwYXRpdGlzIGIjNTEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTYuMDguMDAjSW5mbHVlbnphIzUxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjA5LjAwI01lYXNsZXMjNTEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTYuMTAuMDAjTWVuaW5nb2NvY2N1cyM1MS4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNi4xMS4wMCNNb3JiaWxsaSM1MS4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNi4xMi4wMCNNdW1wcyM1MS4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNi4xMy4wMCNQYXJvdGl0aXMjNTEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTYuMTQuMDAjUGVydHVzc2lzIzUxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjE1LjAwI1BuZXVtb2NvY2N1cyM1MS4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNi4xNi4wMCNQb2xpb215ZWxpdGlzIzUxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjE3LjAwI1JhYmllcyM1MS4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNi4xOC4wMCNSb3RhIHZpcnVzIzUxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjE5LjAwI1J1YmVsbGEjNTEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTYuMjAuMDAjU21hbGxwb3gjNTEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTYuMjEuMDAjVGV0YW51cyB0b3hvaWQjNTEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTYuMjIuMDAjVHViZXJjdWxvc2lzIzUxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjIzLjAwI1R5cGhvaWQjNTEuMjAuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjAuMTYuMjQuMDAjVmFyaWNlbGxhIzUxLjIwLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIwLjE2LjI1LjAwI1llbGxvdyBmZXZlciM1MS4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMC4xNi4yNi4wMCNIZXBhdGl0aXMgYSM1MS4yMC4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMS4wMC4wMC4wMCNNaXNjZWxsYW5lb3VzIGRydWcgY2F0ZWdvcmllcyM1MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM1MS4yMS4xNS4wMC4wMCNBbnRpZ291dCBkcnVncyM1MS4yMS4wMC4wMC4wMAotdW5zcHNjNyM1MS4yMS4xNS4wMS4wMCNBbGxvcHVyaW5vbCM1MS4yMS4xNS4wMC4wMAotdW5zcHNjNyM1MS4yMS4xNS4wMi4wMCNDb2xjaGljaW5lIzUxLjIxLjE1LjAwLjAwCi11bnNwc2M3IzUxLjIxLjE1LjAzLjAwI1Byb2JlbmVjaWQjNTEuMjEuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMjEuMTUuMDQuMDAjU3VsZmlucHlyYXpvbmUjNTEuMjEuMTUuMDAuMDAKLXVuc3BzYzcjNTEuMjEuMTYuMDAuMDAjQW50aWRvdGVzIzUxLjIxLjAwLjAwLjAwCi11bnNwc2M3IzUxLjIxLjE2LjAxLjAwI0RlZmVyb3hhbWluZSBtZXN5bGF0ZSM1MS4yMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMS4xNi4wMi4wMCNEZXhyYXpveGFuZSM1MS4yMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMS4xNi4wMy4wMCNEaWdveGluIGltbXVuZSBmYWIjNTEuMjEuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjEuMTYuMDQuMDAjRGltZXJjYXByb2wjNTEuMjEuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjEuMTYuMDUuMDAjRWRldGF0ZSBkaXNvZGl1bSM1MS4yMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMS4xNi4wNi4wMCNGbHVtYXplbmlsIzUxLjIxLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIxLjE2LjA3LjAwI0lwZWNhYyM1MS4yMS4xNi4wMC4wMAotdW5zcHNjNyM1MS4yMS4xNi4wOC4wMCNQZW5pY2lsbGFtaW5lIzUxLjIxLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIxLjE2LjA5LjAwI1Byb3RhbWluZSBzdWxmYXRlIzUxLjIxLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIxLjE2LjEwLjAwI1NvZGl1bSBwb2x5c3R5cmVuZSBzdWxmb25hdGUjNTEuMjEuMTYuMDAuMDAKLXVuc3BzYzcjNTEuMjEuMTYuMTEuMDAjVHJpZW50aW5lIzUxLjIxLjE2LjAwLjAwCi11bnNwc2M3IzUxLjIxLjE3LjAwLjAwI051dHJpdGlvdXMgZm9vZCM1MS4yMS4wMC4wMC4wMAotdW5zcHNjNyM1MS4yMS4xNy4wMS4wMCNSZXNpZHVlIG9mIG1haXplIGdlcm0jNTEuMjEuMTcuMDAuMDAKLXVuc3BzYzcjNTEuMjEuMTguMDAuMDAjQW5hZXN0aGV0aWMgZHJ1Z3MjNTEuMjEuMDAuMDAuMDAKLXVuc3BzYzcjNTEuMjEuMTguMDEuMDAjQ2hsb3JvZm9ybSM1MS4yMS4xOC4wMC4wMAotdW5zcHNjNyM1Mi4wMC4wMC4wMC4wMCNEb21lc3RpYyBBcHBsaWFuY2VzIGFuZCBTdXBwbGllcyBhbmQgQ29uc3VtZXIgRWxlY3Ryb25pYyBQcm9kdWN0cyM1Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xMC4wMC4wMC4wMCNGbG9vciBjb3ZlcmluZ3MjNTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTAuMTUuMDAuMDAjUnVncyBhbmQgbWF0cyM1Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xMC4xNS4wMS4wMCNPcmllbnRhbCBydWdzIzUyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEwLjE1LjAyLjAwI0FyZWEgcnVncyM1Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMC4xNS4wMy4wMCNXb29sIHJ1Z3MjNTIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTAuMTUuMDQuMDAjQ290dG9uIHJ1Z3MjNTIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTAuMTUuMDUuMDAjU3ludGhldGljIHJ1Z3MjNTIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTAuMTUuMDYuMDAjQnJhaWRlZCBydWdzIzUyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEwLjE1LjA3LjAwI0JhdGggbWF0cyM1Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMC4xNS4wOC4wMCNEb29yIG1hdHMjNTIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTAuMTUuMDkuMDAjRGVjb3JhdGl2ZSBtYXRzIzUyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEwLjE1LjEwLjAwI0FudGkgZmF0aWd1ZSBtYXRzIzUyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEwLjE1LjExLjAwI1J1YmJlciBvciB2aW55bCBtYXRzIzUyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEwLjE1LjEyLjAwI0NoYWlyIG1hdCM1Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMC4xNS4xMy4wMCNDYXJwZXQgcHJvdGVjdG9yIzUyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUyLjExLjAwLjAwLjAwI0FjY29tbW9kYXRpb24gZnVybml0dXJlIzUyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUyLjExLjE1LjAwLjAwI0Z1cm5pdHVyZSM1Mi4xMS4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xMS4xNS4wMS4wMCNTb2ZhcyM1Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMS4xNS4wMi4wMCNTdGFuZHMjNTIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTEuMTUuMDMuMDAjQm9va2Nhc2VzIzUyLjExLjE1LjAwLjAwCi11bnNwc2M3IzUyLjExLjE1LjA0LjAwI0VudGVydGFpbm1lbnQgY2VudGVycyM1Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMS4xNS4wNS4wMCNGdXRvbnMjNTIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTEuMTUuMDYuMDAjQ2hhaXJzIzUyLjExLjE1LjAwLjAwCi11bnNwc2M3IzUyLjExLjE1LjA3LjAwI0NvYXQgcmFja3MjNTIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTEuMTUuMDguMDAjV2FsbCByYWNrcyM1Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMS4xNS4wOS4wMCNNYXR0cmVzc2VzIzUyLjExLjE1LjAwLjAwCi11bnNwc2M3IzUyLjExLjE1LjEwLjAwI0NvdHMjNTIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTEuMTUuMTEuMDAjQmVkcyM1Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMS4xNS4xMi4wMCNGb290IHN0b29scyM1Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMS4xNS4xMy4wMCNUYWJsZXMjNTIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTEuMTUuMTQuMDAjQ2hlc3RzIzUyLjExLjE1LjAwLjAwCi11bnNwc2M3IzUyLjExLjE1LjE1LjAwI1N0b29scyM1Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMS4xNS4xNi4wMCNEcmVzc2VycyM1Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMS4xNS4xNy4wMCNQYXJ0aXRpb25zIzUyLjExLjE1LjAwLjAwCi11bnNwc2M3IzUyLjExLjE2LjAwLjAwI091dGRvb3IgZnVybml0dXJlIzUyLjExLjAwLjAwLjAwCi11bnNwc2M3IzUyLjExLjE2LjAxLjAwI091dGRvb3IgY2hhaXJzIzUyLjExLjE2LjAwLjAwCi11bnNwc2M3IzUyLjExLjE2LjAyLjAwI091dGRvb3IgdGFibGVzIG9yIHBpY25pYyB0YWJsZXMjNTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTEuMTYuMDMuMDAjT3V0ZG9vciBzd2luZ3MjNTIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTEuMTYuMDQuMDAjT3V0ZG9vciBiZW5jaGVzIzUyLjExLjE2LjAwLjAwCi11bnNwc2M3IzUyLjExLjE2LjA1LjAwI091dGRvb3IgdW1icmVsbGFzIzUyLjExLjE2LjAwLjAwCi11bnNwc2M3IzUyLjExLjE3LjAwLjAwI09mZmljZSBmdXJuaXR1cmUjNTIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTEuMTcuMDEuMDAjQ3JlZGVuemFzIzUyLjExLjE3LjAwLjAwCi11bnNwc2M3IzUyLjExLjE3LjAzLjAwI0Rlc2tzIzUyLjExLjE3LjAwLjAwCi11bnNwc2M3IzUyLjEyLjAwLjAwLjAwI0JlZGNsb3RoZXMgYW5kIHRhYmxlIGFuZCBraXRjaGVuIGxpbmVuIGFuZCB0b3dlbHMjNTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTUuMDAuMDAjQmVkY2xvdGhlcyM1Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xMi4xNS4wMS4wMCNRdWlsdHMjNTIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTUuMDIuMDAjQ29tZm9ydGVycyM1Mi4xMi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMi4xNS4wMy4wMCNDb21mb3J0ZXIgY292ZXJzIzUyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEyLjE1LjA0LjAwI01hdHRyZXNzIGNvdmVycyM1Mi4xMi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMi4xNS4wNS4wMCNQaWxsb3dzIzUyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEyLjE1LjA2LjAwI01hdHRyZXNzIHBhZHMjNTIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTUuMDcuMDAjRmVhdGhlcmJlZHMjNTIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTUuMDguMDAjQmxhbmtldHMjNTIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTUuMDkuMDAjU2hlZXRzIzUyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEyLjE1LjEwLjAwI0R1c3QgcnVmZmxlcyM1Mi4xMi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMi4xNS4xMS4wMCNEdXZldHMjNTIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTUuMTIuMDAjUGlsbG93IGNhc2VzIzUyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEyLjE1LjEzLjAwI0JlZCBzcHJlYWRzIzUyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzUyLjEyLjE2LjAwLjAwI1RhYmxlIGFuZCBraXRjaGVuIGxpbmVuIzUyLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUyLjEyLjE2LjAxLjAwI0Rpc2ggdG93ZWxzIzUyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzUyLjEyLjE2LjAyLjAwI05hcGtpbnMjNTIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTYuMDMuMDAjVGFibGUgcnVubmVycyM1Mi4xMi4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xMi4xNi4wNC4wMCNUYWJsZSBjbG90aHMjNTIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTYuMDUuMDAjRG9tZXN0aWMgb3ZlbiBtaXRzIG9yIHBvdCBob2xkZXJzIzUyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzUyLjEyLjE2LjA2LjAwI1BsYWNlIG1hdHMjNTIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTYuMDcuMDAjVGFibGUgc2tpcnRzIzUyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzUyLjEyLjE3LjAwLjAwI1Rvd2VscyM1Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xMi4xNy4wMS4wMCNCYXRoIHRvd2VscyM1Mi4xMi4xNy4wMC4wMAotdW5zcHNjNyM1Mi4xMi4xNy4wMi4wMCNCZWFjaCB0b3dlbHMjNTIuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTcuMDMuMDAjV2FzaCBjbG90aHMjNTIuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTIuMTIuMTcuMDQuMDAjSGFuZCB0b3dlbHMjNTIuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTIuMTMuMDAuMDAuMDAjV2luZG93IHRyZWF0bWVudHMjNTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTMuMTUuMDAuMDAjQ3VydGFpbnMgYW5kIGRyYXBlcmllcyM1Mi4xMy4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xMy4xNS4wMS4wMCNDdXJ0YWlucyM1Mi4xMy4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xMy4xNS4wMy4wMCNEcmFwZXJpZXMjNTIuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTMuMTYuMDAuMDAjQmxpbmRzIGFuZCBzaGFkZXMjNTIuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTMuMTYuMDEuMDAjVmVuZXRpYW4gYmxpbmRzIzUyLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUyLjEzLjE2LjAyLjAwI1JvbGwgdXAgc2hhZGVzIzUyLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUyLjEzLjE2LjAzLjAwI0ludGVyaW9yIHNodXR0ZXJzIzUyLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUyLjEzLjE2LjA0LjAwI1ZlcnRpY2FsIGJsaW5kcyM1Mi4xMy4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xMy4xNy4wMC4wMCNXaW5kb3cgdHJlYXRtZW50IGFjY2Vzc29yaWVzIGFuZCBoYXJkd2FyZSM1Mi4xMy4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xMy4xNy4wMS4wMCNWYWxhbmNlcyM1Mi4xMy4xNy4wMC4wMAotdW5zcHNjNyM1Mi4xMy4xNy4wMi4wMCNDdXJ0YWluIHJvZHMjNTIuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNTIuMTMuMTcuMDMuMDAjUm9kIGZpbmlhbHMjNTIuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNTIuMTMuMTcuMDQuMDAjQ3VydGFpbiByaW5ncyBvciBjbGlwcyM1Mi4xMy4xNy4wMC4wMAotdW5zcHNjNyM1Mi4xNC4wMC4wMC4wMCNEb21lc3RpYyBhcHBsaWFuY2VzIzUyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjAwLjAwI0RvbWVzdGljIGtpdGNoZW4gYXBwbGlhbmNlcyM1Mi4xNC4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4wMS4wMCNEb21lc3RpYyByZWZyaWdlcmF0b3JzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjAyLjAwI0RvbWVzdGljIG1pY3Jvd2F2ZSBvdmVucyM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4wMy4wMCNEb21lc3RpYyBnYXJiYWdlIGRpc3Bvc2FscyM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4wNC4wMCNEb21lc3RpYyByYW5nZXMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMDUuMDAjRG9tZXN0aWMgZGlzaCB3YXNoZXJzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjA2LjAwI0RvbWVzdGljIGZyZWV6ZXJzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjA3LjAwI0RvbWVzdGljIHVwcmlnaHQgZnJlZXplcnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMDguMDAjRG9tZXN0aWMgY2hlc3QgZnJlZXplcnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMDkuMDAjRG9tZXN0aWMgY29tYmluYXRpb24gcmVmcmlnZXJhdG9yIGZyZWV6ZXJzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjEwLjAwI0RvbWVzdGljIHBvcnRhYmxlIGFpciBjb25kaXRpb25lcnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMTEuMDAjRG9tZXN0aWMganVpY2VycyM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4xMi4wMCNEb21lc3RpYyB3YWZmbGUgaXJvbnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMTMuMDAjRG9tZXN0aWMgZWxlY3RyaWMgY2FuIG9wZW5lcnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMTQuMDAjRG9tZXN0aWMgZm9vZCBwcm9jZXNzb3JzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjE1LjAwI0RvbWVzdGljIHRyYXNoIGNvbXBhY3RvcnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMTYuMDAjRG9tZXN0aWMgZGVlcCBmcnllcnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMTcuMDAjRG9tZXN0aWMgcG9wY29ybiBwb3BwZXJzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjE4LjAwI0RvbWVzdGljIGJyZWFkIG1ha2luZyBtYWNoaW5lcyM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4xOS4wMCNEb21lc3RpYyBjb252ZWN0aW9uYWwgb3ZlbnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMjAuMDAjRG9tZXN0aWMgbWl4ZXJzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjIxLjAwI0RvbWVzdGljIHRvYXN0ZXIgb3ZlbnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMjIuMDAjRG9tZXN0aWMgdG9hc3RlcnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMjMuMDAjRG9tZXN0aWMgZWxlY3RyaWNhbCBrZXR0bGVzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjI0LjAwI0RvbWVzdGljIGJsZW5kZXJzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjI1LjAwI0RvbWVzdGljIGhvdCBwbGF0ZXMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMjYuMDAjRG9tZXN0aWMgY29mZmVlIG1ha2VycyM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4yNy4wMCNEb21lc3RpYyBlbGVjdHJpYyBrbml2ZXMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMjguMDAjRG9tZXN0aWMgZWxlY3RyaWMgd29rcyM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4yOS4wMCNEb21lc3RpYyBjb2ZmZWUgZ3JpbmRlcnMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMzAuMDAjUGFydHMgb2YgZGlzaHdhc2hpbmcgbWFjaGluZXMjNTIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTUuMzEuMDAjRG9tZXN0aWMgZm9vZCBjaG9wcGVycyM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4zMi4wMCNEb21lc3RpYyBlbGVjdHJpYyBza2lsbGV0cyM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4zMy4wMCNEb21lc3RpYyBlbGVjdHJpYyBncmlkZGxlcyM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4zNC4wMCNEb21lc3RpYyBlbGVjdHJpYyBzYW5kd2ljaCBtYWtlciM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNS4zNS4wMCNEb21lc3RpYyBpbmRvb3IgZWxlY3RyaWMgZ3JpbGxzIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjM2LjAwI0RvbWVzdGljIHBpemVsbGUgb3IgY29va2llIG1ha2VyIzUyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE1LjM3LjAwI0RvbWVzdGljIGNyb2NrIHBvdCM1Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNi4wMC4wMCNEb21lc3RpYyBsYXVuZHJ5IGFwcGxpYW5jZXMgYW5kIHN1cHBsaWVzIzUyLjE0LjAwLjAwLjAwCi11bnNwc2M3IzUyLjE0LjE2LjAxLjAwI0RvbWVzdGljIGNsb3RoZXMgd2FzaGVycyM1Mi4xNC4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNi4wMi4wMCNEb21lc3RpYyB0dW1ibGUgZHJ5ZXJzIzUyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE2LjAzLjAwI0RvbWVzdGljIGNsb3RoaW5nIGlyb25zIzUyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE2LjA0LjAwI0Zvb3R3ZWFyIGRyeWVycyM1Mi4xNC4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNi4wNS4wMCNMYXVuZHJ5IGhhbXBlcnMjNTIuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTYuMDYuMDAjTGF1bmRyeSBiYXNrZXRzIzUyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE3LjAwLjAwI0RvbWVzdGljIGJhdGggYXBwbGlhbmNlcyM1Mi4xNC4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNy4wMS4wMCNEb21lc3RpYyBlbGVjdHJpYyB0b290aGJydXNoZXMjNTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTcuMDMuMDAjRG9tZXN0aWMgaGFpciBkcnllcnMjNTIuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTcuMDQuMDAjRG9tZXN0aWMgZWxlY3RyaWMgcmF6b3JzIzUyLjE0LjE3LjAwLjAwCi11bnNwc2M3IzUyLjE0LjE3LjA1LjAwI1BhcnRzIG9mIHNoYXZlcnMgb3IgaGFpciByZW1vdmVycyM1Mi4xNC4xNy4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xNy4wNi4wMCNOYWlsIGRyeWVycyM1Mi4xNC4xNy4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xOC4wMC4wMCNPdGhlciBkb21lc3RpYyBob3VzZWhvbGQgYXBwbGlhbmNlcyM1Mi4xNC4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xOC4wMS4wMCNEb21lc3RpYyBzZXdpbmcgbWFjaGluZXMjNTIuMTQuMTguMDAuMDAKLXVuc3BzYzcjNTIuMTQuMTguMDIuMDAjRG9tZXN0aWMgc3BhY2UgaGVhdGVycyM1Mi4xNC4xOC4wMC4wMAotdW5zcHNjNyM1Mi4xNC4xOC4wMy4wMCNEb21lc3RpYyBlbGVjdHJpYyBibGFua2V0cyM1Mi4xNC4xOC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4wMC4wMC4wMCNEb21lc3RpYyBraXRjaGVud2FyZSM1Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNS4wMC4wMCNEb21lc3RpYyBkaXNwb3NhYmxlIGtpdGNoZW53YXJlIzUyLjE1LjAwLjAwLjAwCi11bnNwc2M3IzUyLjE1LjE1LjAxLjAwI0RvbWVzdGljIGRpc3Bvc2FibGUgY29va3dhcmUjNTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTUuMDIuMDAjRG9tZXN0aWMgZGlzcG9zYWJsZSBkaXNoZXMjNTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTUuMDMuMDAjRG9tZXN0aWMgZGlzcG9zYWJsZSBmbGF0d2FyZSM1Mi4xNS4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNS4wNC4wMCNEb21lc3RpYyBkaXNwb3NhYmxlIGN1cHMgb3IgZ2xhc3NlcyBvciBsaWRzIzUyLjE1LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE1LjA1LjAwI0RvbWVzdGljIGRpc3Bvc2FibGUgc3RpcnJlcnMjNTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTUuMDYuMDAjRG9tZXN0aWMgZGlzcG9zYWJsZSBmb29kIGNvbnRhaW5lcnMjNTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTUuMDcuMDAjRG9tZXN0aWMgZGlzcG9zYWJsZSBkcmlua2luZyBzdHJhd3MjNTIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMDAuMDAjRG9tZXN0aWMga2l0Y2hlbiB0b29scyBhbmQgdXRlbnNpbHMjNTIuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMDEuMDAjRG9tZXN0aWMgcm9sbGluZyBwaW5zIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjAyLjAwI0RvbWVzdGljIG1peGluZyBib3dscyM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4wMy4wMCNEb21lc3RpYyBncmF0ZXJzIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjA0LjAwI0RvbWVzdGljIHN0cmFpbmVycyBvciBjb2xhbmRlcnMjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMDUuMDAjRG9tZXN0aWMgY2FuIG9yIGJvdHRsZSBvcGVuZXJzIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjA2LjAwI0RvbWVzdGljIGN1dHRpbmcgYm9hcmRzIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjA3LjAwI0RvbWVzdGljIG1lYXN1cmluZyBjdXBzIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjA4LjAwI0Jhc3RlcnMgb3IgYmFzdGluZyBicnVzaGVzIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjA5LjAwI1ZlZ2V0YWJsZSBwZWVsZXIjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMTAuMDAjQ29va2llIGN1dHRlcnMjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMTEuMDAjRG9tZXN0aWMga2l0Y2hlbiB0b25ncyM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4xMi4wMCNEb21lc3RpYyBraXRjaGVuIHdpcmUgd2hpcHMjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMTMuMDAjRG9tZXN0aWMgZm9vZCBzY3JhcGVycyM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4xNC4wMCNEb21lc3RpYyBjb29saW5nIHJhY2tzIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjE1LjAwI0RvbWVzdGljIHBpenphIGN1dHRlcnMjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMTYuMDAjRG9tZXN0aWMga2l0Y2hlbiBzcGF0dWxhcyM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4xNy4wMCNEb21lc3RpYyB3b29kZW4gc3Bvb25zIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjE4LjAwI0RvbWVzdGljIHdvb2RlbiBvdmVuIHBhZGRsZSM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4xOS4wMCNEb21lc3RpYyBwYXN0cnkgYmxlbmRlciM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4yMC4wMCNEb21lc3RpYyBzaWZ0ZXIjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMjEuMDAjRG9tZXN0aWMgY29va2llIHN0YW1wZXJzIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjIyLjAwI0RvbWVzdGljIHBhc3RyeSBkZWNvcmF0aW5nIGd1biM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4yMy4wMCNEb21lc3RpYyBjb29raWUgcHJlc3MjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMjQuMDAjRG9tZXN0aWMga25pZmUgc2hhcnBlbmVycyM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4yNS4wMCNEb21lc3RpYyBiaXNjdWl0IGN1dHRlcnMjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMjYuMDAjRG9tZXN0aWMgbWFuZG9saW4jNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMjcuMDAjRG9tZXN0aWMgZ2FybGljIHByZXNzIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjI4LjAwI0RvbWVzdGljIGVnZyBzbGljZXIjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMjkuMDAjRG9tZXN0aWMgZWdnIHNlcGFyYXRvciM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4zMC4wMCNEb21lc3RpYyBjaGVlc2Ugc2xpY2VyIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjMxLjAwI0RvbWVzdGljIGZvb2QgbWlsbCM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4zMi4wMCNEb21lc3RpYyBraXRjaGVuIGZ1bm5lbHMjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuMzMuMDAjRG9tZXN0aWMgZ2FybmlzaGluZyB0b29scyM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4zNC4wMCNEb21lc3RpYyBhcHBsZSBjb3JlciM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4zNS4wMCNEb21lc3RpYyBtZWxvbiBvciBidXR0ZXIgYmFsbGVyIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjM2LjAwI0RvbWVzdGljIGZvb2Qgc2Nvb3BzIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjM3LjAwI0RvbWVzdGljIHB1bXBraW4gY2FydmVyIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjM4LjAwI0RvbWVzdGljIHZlZ2V0YWJsZSBicnVzaCM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi4zOS4wMCNEb21lc3RpYyBlZ2cgYmVhdGVyIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjQwLjAwI0RvbWVzdGljIHBhc3RhIGRyeWluZyByYWNrIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjQxLjAwI0RvbWVzdGljIHdoaXBwZWQgY3JlYW0gbWFrZXIjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuNDIuMDAjRG9tZXN0aWMgZG91Z2ggcHJlc3MjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuNDMuMDAjRG9tZXN0aWMgcmF2aW9saSBtYWtlciM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi40NC4wMCNEb21lc3RpYyBtaXN0IHNwcmF5ZXIjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuNDUuMDAjRG9tZXN0aWMgcGFzdHJ5IGJydXNoIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjQ2LjAwI0RvbWVzdGljIGtpdGNoZW4gb3IgZGlldCBzY2FsZXMjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuNDcuMDAjRG9tZXN0aWMga2l0Y2hlbiB0aW1lcnMjNTIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTYuNDguMDAjRG9tZXN0aWMga2l0Y2hlbiBvciBmb29kIHRoZXJtb21ldGVycyM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNi40OS4wMCNEb21lc3RpYyBicmVhZCBzbGljaW5nIGd1aWRlIzUyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE2LjUwLjAwI0RvbWVzdGljIGRyYWluIGJvYXJkcyM1Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNy4wMC4wMCNEb21lc3RpYyBmbGF0d2FyZSBhbmQgY3V0bGVyeSM1Mi4xNS4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNy4wMS4wMCNEb21lc3RpYyBzZXJ2aW5nIHV0ZW5zaWxzIzUyLjE1LjE3LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE3LjAyLjAwI0RvbWVzdGljIGtuaXZlcyM1Mi4xNS4xNy4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNy4wMy4wMCNEb21lc3RpYyBmb3JrcyM1Mi4xNS4xNy4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xNy4wNC4wMCNEb21lc3RpYyBzcG9vbnMjNTIuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTcuMDUuMDAjU3Bvb24gcmVzdHMjNTIuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTcuMDYuMDAjQ2hvcHN0aWNrcyM1Mi4xNS4xNy4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOC4wMC4wMCNEb21lc3RpYyBjb29rd2FyZSM1Mi4xNS4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOC4wMS4wMCNEb21lc3RpYyBkdXRjaCBvdmVucyM1Mi4xNS4xOC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOC4wMi4wMCNEb21lc3RpYyBmcnlpbmcgcGFucyM1Mi4xNS4xOC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOC4wMy4wMCNEb21lc3RpYyBzYXVjZXBhbnMjNTIuMTUuMTguMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTguMDQuMDAjRG9tZXN0aWMga2V0dGxlcyM1Mi4xNS4xOC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOC4wNS4wMCNEb21lc3RpYyB3b2tzIzUyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE4LjA2LjAwI0RvbWVzdGljIHN0ZWFtZXJzIzUyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE4LjA3LjAwI0RvbWVzdGljIHN0b2NrIHBvdHMjNTIuMTUuMTguMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTguMDguMDAjRG9tZXN0aWMgcHJlc3N1cmUgY29va2VycyM1Mi4xNS4xOC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOC4wOS4wMCNEb21lc3RpYyBzYXV0ZSBwYW5zIzUyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE4LjEwLjAwI0RvbWVzdGljIGNoYWZpbmcgZGlzaGVzIzUyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE4LjExLjAwI0RvbWVzdGljIGdyaWRkbGVzIzUyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE4LjEyLjAwI0RvbWVzdGljIGRvdWJsZSBib2lsZXJzIzUyLjE1LjE4LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE4LjEzLjAwI0RvbWVzdGljIHNwbGF0dGVyIHNoaWVsZCM1Mi4xNS4xOC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOS4wMC4wMCNEb21lc3RpYyBiYWtld2FyZSM1Mi4xNS4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOS4wMS4wMCNEb21lc3RpYyBtdWZmaW4gcGFucyM1Mi4xNS4xOS4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOS4wMi4wMCNEb21lc3RpYyBiYWtpbmcgcGFucyM1Mi4xNS4xOS4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOS4wMy4wMCNEb21lc3RpYyBjYWtlIG9yIHBpZSBwYW5zIzUyLjE1LjE5LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE5LjA0LjAwI0RvbWVzdGljIHJvYXN0aW5nIHBhbnMjNTIuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMTkuMDUuMDAjRG9tZXN0aWMgYmFraW5nIHNoZWV0cyM1Mi4xNS4xOS4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOS4wNi4wMCNEb21lc3RpYyBicm9pbGluZyBwYW5zIzUyLjE1LjE5LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE5LjA3LjAwI0RvbWVzdGljIGJha2luZyBtb2xkcyM1Mi4xNS4xOS4wMC4wMAotdW5zcHNjNyM1Mi4xNS4xOS4wOC4wMCNEb21lc3RpYyBwaXp6YSBwYW5zIzUyLjE1LjE5LjAwLjAwCi11bnNwc2M3IzUyLjE1LjE5LjA5LjAwI0RvbWVzdGljIHRvcnRpbGxhIGJha2VycyM1Mi4xNS4xOS4wMC4wMAotdW5zcHNjNyM1Mi4xNS4yMC4wMC4wMCNEb21lc3RpYyBkaXNoZXMgYW5kIHNlcnZpbmd3YXJlIGFuZCBzdG9yYWdlIGNvbnRhaW5lcnMjNTIuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjAuMDEuMDAjRG9tZXN0aWMgcGl0Y2hlcnMjNTIuMTUuMjAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjAuMDIuMDAjRG9tZXN0aWMgZm9vZCBzdG9yYWdlIGNvbnRhaW5lcnMjNTIuMTUuMjAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjAuMDMuMDAjRG9tZXN0aWMgcHVuY2ggYm93bHMjNTIuMTUuMjAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjAuMDQuMDAjRG9tZXN0aWMgcGxhdGVzIzUyLjE1LjIwLjAwLjAwCi11bnNwc2M3IzUyLjE1LjIwLjA1LjAwI0RvbWVzdGljIHNhdWNlcnMjNTIuMTUuMjAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjAuMDYuMDAjRG9tZXN0aWMgdHJheXMgb3IgcGxhdHRlcnMjNTIuMTUuMjAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjAuMDcuMDAjRG9tZXN0aWMgc2VydmluZyBib3dscyM1Mi4xNS4yMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4yMC4wOC4wMCNEb21lc3RpYyB0ZWEgb3IgY29mZmVlIHBvdHMjNTIuMTUuMjAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjAuMDkuMDAjRG9tZXN0aWMgc291cCBvciBzYWxhZCBib3dscyM1Mi4xNS4yMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4yMC4xMC4wMCNEb21lc3RpYyB2YWN1dW0gZmxhc2tzIzUyLjE1LjIwLjAwLjAwCi11bnNwc2M3IzUyLjE1LjIwLjExLjAwI0lubmVycyBmb3IgdmFjY3VtIGZsYXNrcyM1Mi4xNS4yMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4yMC4xMi4wMCNJY2UgdHJheXMjNTIuMTUuMjAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjAuMTMuMDAjU3BpY2Ugb3Igc2FsdCBvciBwZXBwZXIgc2hha2VycyM1Mi4xNS4yMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4yMC4xNC4wMCNDYXJhZmUgc2V0cyM1Mi4xNS4yMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4yMC4xNS4wMCNEb21lc3RpYyBjYWtlIHBsYXRlIHdpdGggZG9tZSM1Mi4xNS4yMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4yMS4wMC4wMCNEb21lc3RpYyBkcmlua2luZyB1dGVuc2lscyM1Mi4xNS4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNS4yMS4wMS4wMCNEb21lc3RpYyBjb2ZmZWUgb3IgdGVhIGN1cHMjNTIuMTUuMjEuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjEuMDIuMDAjRG9tZXN0aWMgZHJpbmtpbmcgZ2xhc3NlcyM1Mi4xNS4yMS4wMC4wMAotdW5zcHNjNyM1Mi4xNS4yMS4wMy4wMCNEb21lc3RpYyBtdWdzIzUyLjE1LjIxLjAwLjAwCi11bnNwc2M3IzUyLjE1LjIxLjA0LjAwI0RvbWVzdGljIHN0ZW13YXJlIzUyLjE1LjIxLjAwLjAwCi11bnNwc2M3IzUyLjE1LjIyLjAwLjAwI0Rpc2h3YXNoaW5nIGFuZCBkaXNoIHN0b3JhZ2UgYWNjZXNzb3JpZXMjNTIuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjIuMDEuMDAjU2hlbGYgbGluZXIjNTIuMTUuMjIuMDAuMDAKLXVuc3BzYzcjNTIuMTUuMjIuMDIuMDAjRGlzaCBkcmFpbmVyIzUyLjE1LjIyLjAwLjAwCi11bnNwc2M3IzUyLjE1LjIyLjAzLjAwI1NvYXAgZGlzcGVuc2luZyBicnVzaCM1Mi4xNS4yMi4wMC4wMAotdW5zcHNjNyM1Mi4xNi4wMC4wMC4wMCNDb25zdW1lciBlbGVjdHJvbmljcyM1Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4wMC4wMCNBdWRpbyBhbmQgdmlzdWFsIGVxdWlwbWVudCM1Mi4xNi4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4wMS4wMCNDb21wYWN0IGRpc2MgcGxheWVycyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4wMi4wMCNDYXNzZXR0ZSBwbGF5ZXJzIG9yIHJlY29yZGVycyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4wMy4wMCNEaWdpdGFsIHZpZGVvIGRpc2MgcGxheWVycyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4wNC4wMCNWaWRlbyBjYXNzZXR0ZSByZWNvcmRlcnMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMDUuMDAjVGVsZXZpc2lvbnMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMDYuMDAjSGVhZHBob25lcyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4wNy4wMCNDbG9jayByYWRpb3MjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMDguMDAjTGFzZXIgZGlzYyBwbGF5ZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjA5LjAwI1BvcnRhYmxlIHN0ZXJlbyBzeXN0ZW1zIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjEwLjAwI0hvbWUgc3RlcmVvIHN5c3RlbXMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMTEuMDAjUmFkaW9zIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjEyLjAwI1NwZWFrZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjEzLjAwI0NvbWJpbmF0aW9uIHRlbGV2aXNpb24gdmlkZW8gY2Fzc2V0dGUgcmVjb3JkZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjE0LjAwI0hlYWRwaG9uZXMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMTUuMDAjQ29tcGFjdCBkaXNrIHBsYXllcnMgb3IgcmVjb3JkZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjE2LjAwI0RpZ2l0YWwgdmlkZW8gZGlzayBwbGF5ZXJzIG9yIHJlY29yZGVycyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4xNy4wMCNFcXVhbGl6ZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjE4LjAwI0dsb2JhbCBwb3NpdGlvbmluZyBzeXN0ZW0gcmVjZWl2ZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjE5LjAwI0hlYWRwaG9uZXMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMjAuMDAjTWljcm9waG9uZXMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMjEuMDAjTXVsdGltZWRpYSByZWNlaXZlcnMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMjIuMDAjUmFkaW8gZnJlcXVlbmN5IHNjYW5uZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjIzLjAwI1JhZGlvIGZyZXF1ZW5jeSB0cmFuc21pdHRlcnNyZWNlaXZlcnMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMjQuMDAjUmFkaW8gcmVjZWl2ZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjI1LjAwI1JlbW90ZSBjb250cm9sIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjI2LjAwI1NhdGVsbGl0ZSByZWNlaXZlcnMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMjcuMDAjU3Vid29vZmVycyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4yOC4wMCNUZWxldmlzaW9ucyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4yOS4wMCNWaWRlbyBjYXNzZXR0ZSBwbGF5ZXJzIG9yIHJlY29yZGVycyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4zMC4wMCNWaWRlbyBtb25pdG9ycyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4zMS4wMCNSYWRpbyBwaG9ub2dyYXBocyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4zMi4wMCNLYXJhb2tlIHN5c3RlbXMjNTIuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTUuMzMuMDAjTWVnYXBob25lcyM1Mi4xNi4xNS4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNS4zNC4wMCNJbnRlZ3JhdGVkIGNpcmN1dCBJQyBjaGlwIHJlY29yZGVyIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjM1LjAwI0RpZ2l0YWwgdm9pY2UgcmVjb3JkZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE1LjM2LjAwI01pbmlkaXNjIHBsYXllcnMgb3IgcmVjb3JkZXJzIzUyLjE2LjE1LjAwLjAwCi11bnNwc2M3IzUyLjE2LjE2LjAwLjAwI0F1ZGlvIHZpc3VhbCBlcXVpcG1lbnQgYWNjZXNzb3JpZXMjNTIuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTYuMTYuMDEuMDAjQ2Fzc2V0dGUgc3RvcmFnZSM1Mi4xNi4xNi4wMC4wMAotdW5zcHNjNyM1Mi4xNi4xNi4wMi4wMCNBdWRpbyBvciB2aWRlbyBoZWFkIGNsZWFuZXJzIzUyLjE2LjE2LjAwLjAwCi11bnNwc2M3IzUyLjE3LjAwLjAwLjAwI0RvbWVzdGljIHdhbGwgdHJlYXRtZW50cyM1Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM1Mi4xNy4xMC4wMC4wMCNCYXRocm9vbSB3YWxsIHRyZWF0bWVudHMjNTIuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNTIuMTcuMTAuMDEuMDAjSGFuZ2luZyB0b2lsZXRyeSBvcmdhbml6ZXIgb3Igc2hlbGYjNTIuMTcuMTAuMDAuMDAKLXVuc3BzYzcjNTMuMDAuMDAuMDAuMDAjQXBwYXJlbCBhbmQgTHVnZ2FnZSBhbmQgUGVyc29uYWwgQ2FyZSBQcm9kdWN0cyM1My4wMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xMC4wMC4wMC4wMCNDbG90aGluZyM1My4wMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xMC4xNS4wMC4wMCNTbGFja3MgYW5kIHRyb3VzZXJzIGFuZCBzaG9ydHMjNTMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTUuMDEuMDAjQm95cyBzbGFja3Mgb3IgdHJvdXNlcnMgb3Igc2hvcnRzIzUzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUzLjEwLjE1LjAyLjAwI01lbnMgc2xhY2tzIG9yIHRyb3VzZXJzIG9yIHNob3J0cyM1My4xMC4xNS4wMC4wMAotdW5zcHNjNyM1My4xMC4xNS4wMy4wMCNHaXJscyBzbGFja3Mgb3IgdHJvdXNlcnMgb3Igc2hvcnRzIzUzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUzLjEwLjE1LjA0LjAwI1dvbWVucyBzbGFja3Mgb3IgdHJvdXNlcnMgb3Igc2hvcnRzIzUzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzUzLjEwLjE1LjA1LjAwI0luZmFudHMgc2xhY2tzIG9yIHRyb3VzZXJzIG9yIHNob3J0cyM1My4xMC4xNS4wMC4wMAotdW5zcHNjNyM1My4xMC4xNi4wMC4wMCNTaGlydHMgYW5kIGJsb3VzZXMjNTMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTYuMDEuMDAjQm95cyBzaGlydHMjNTMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTYuMDIuMDAjTWVucyBzaGlydHMjNTMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTYuMDMuMDAjR2lybHMgc2hpcnRzIG9yIGJsb3VzZXMjNTMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTYuMDQuMDAjV29tZW5zIHNoaXJ0cyBvciBibG91c2VzIzUzLjEwLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEwLjE2LjA1LjAwI0luZmFudHMgc2hpcnRzIG9yIGJsb3VzZXMjNTMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTcuMDAuMDAjU3dlYXRlcnMjNTMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTcuMDEuMDAjQm95cyBzd2VhdGVycyM1My4xMC4xNy4wMC4wMAotdW5zcHNjNyM1My4xMC4xNy4wMi4wMCNNZW5zIHN3ZWF0ZXJzIzUzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzUzLjEwLjE3LjAzLjAwI0dpcmxzIHN3ZWF0ZXJzIzUzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzUzLjEwLjE3LjA0LjAwI1dvbWVucyBzd2VhdGVycyM1My4xMC4xNy4wMC4wMAotdW5zcHNjNyM1My4xMC4xNy4wNS4wMCNJbmZhbnRzIHN3ZWF0ZXJzIzUzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzUzLjEwLjE4LjAwLjAwI0NvYXRzIGFuZCBqYWNrZXRzIzUzLjEwLjAwLjAwLjAwCi11bnNwc2M3IzUzLjEwLjE4LjAxLjAwI0JveXMgY29hdHMgb3IgamFja2V0cyM1My4xMC4xOC4wMC4wMAotdW5zcHNjNyM1My4xMC4xOC4wMi4wMCNNZW5zIGNvYXRzIG9yIGphY2tldHMjNTMuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTguMDMuMDAjR2lybHMgY29hdHMgb3IgamFja2V0cyM1My4xMC4xOC4wMC4wMAotdW5zcHNjNyM1My4xMC4xOC4wNC4wMCNXb21lbnMgY29hdHMgb3IgamFja2V0cyM1My4xMC4xOC4wMC4wMAotdW5zcHNjNyM1My4xMC4xOC4wNS4wMCNJbmZhbnRzIGNvYXRzIG9yIGphY2tldHMjNTMuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTkuMDAuMDAjU3VpdHMjNTMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMTkuMDEuMDAjQm95cyBzdWl0cyM1My4xMC4xOS4wMC4wMAotdW5zcHNjNyM1My4xMC4xOS4wMi4wMCNNZW5zIHN1aXRzIzUzLjEwLjE5LjAwLjAwCi11bnNwc2M3IzUzLjEwLjE5LjAzLjAwI0dpcmxzIHN1aXRzIzUzLjEwLjE5LjAwLjAwCi11bnNwc2M3IzUzLjEwLjE5LjA0LjAwI1dvbWVucyBzdWl0cyM1My4xMC4xOS4wMC4wMAotdW5zcHNjNyM1My4xMC4xOS4wNS4wMCNJbmZhbnRzIHN1aXRzIzUzLjEwLjE5LjAwLjAwCi11bnNwc2M3IzUzLjEwLjIwLjAwLjAwI0RyZXNzZXMgYW5kIHNraXJ0cyBhbmQgc2FyaXMgYW5kIGtpbW9ub3MjNTMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjAuMDEuMDAjR2lybHMgZHJlc3NlcyBvciBza2lydHMgb3Igc2FyaXMgb3Iga2ltb25vcyM1My4xMC4yMC4wMC4wMAotdW5zcHNjNyM1My4xMC4yMC4wMi4wMCNXb21lbnMgZHJlc3NlcyBvciBza2lydHMgb3Igc2FyaXMgb3Iga2ltb25vcyM1My4xMC4yMC4wMC4wMAotdW5zcHNjNyM1My4xMC4yMC4wMy4wMCNJbmZhbnRzIGRyZXNzZXMgb3Igc2tpcnRzIG9yIHNhcmlzIG9yIGtpbW9ub3MjNTMuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjEuMDAuMDAjT3ZlcmFsbHMgYW5kIGNvdmVyYWxscyM1My4xMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xMC4yMS4wMS4wMCNCb3lzIG92ZXJhbGxzIG9yIGNvdmVyYWxscyM1My4xMC4yMS4wMC4wMAotdW5zcHNjNyM1My4xMC4yMS4wMi4wMCNNZW5zIG92ZXJhbGxzIG9yIGNvdmVyYWxscyM1My4xMC4yMS4wMC4wMAotdW5zcHNjNyM1My4xMC4yMS4wMy4wMCNHaXJscyBvdmVyYWxscyBvciBjb3ZlcmFsbHMjNTMuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjEuMDQuMDAjV29tZW5zIG92ZXJhbGxzIG9yIGNvdmVyYWxscyM1My4xMC4yMS4wMC4wMAotdW5zcHNjNyM1My4xMC4yMS4wNS4wMCNJbmZhbnRzIG92ZXJhbGxzIG9yIGNvdmVyYWxscyM1My4xMC4yMS4wMC4wMAotdW5zcHNjNyM1My4xMC4yMi4wMC4wMCNGb2xrbG9yaWMgY2xvdGhpbmcjNTMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjIuMDEuMDAjQm95cyBmb2xrbG9yaWMgY2xvdGhpbmcjNTMuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjIuMDIuMDAjTWVucyBmb2xrbG9yaWMgY2xvdGhpbmcjNTMuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjIuMDMuMDAjR2lybHMgZm9sa2xvcmljIGNsb3RoaW5nIzUzLjEwLjIyLjAwLjAwCi11bnNwc2M3IzUzLjEwLjIyLjA0LjAwI1dvbWVucyBmb2xrbG9yaWMgY2xvdGhpbmcjNTMuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjIuMDUuMDAjSW5mYW50cyBmb2xrbG9yaWMgY2xvdGhpbmcjNTMuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjMuMDAuMDAjVW5kZXJnYXJtZW50cyM1My4xMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xMC4yMy4wMS4wMCNVbmRlcnNoaXJ0cyM1My4xMC4yMy4wMC4wMAotdW5zcHNjNyM1My4xMC4yMy4wMi4wMCNTbGlwcyM1My4xMC4yMy4wMC4wMAotdW5zcHNjNyM1My4xMC4yMy4wMy4wMCNVbmRlcnBhbnRzIzUzLjEwLjIzLjAwLjAwCi11bnNwc2M3IzUzLjEwLjIzLjA0LjAwI0JyYXNzaWVyZXMjNTMuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjMuMDUuMDAjSW5mYW50IGRpYXBlcnMjNTMuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjMuMDYuMDAjQWR1bHQgZGlhcGVycyM1My4xMC4yMy4wMC4wMAotdW5zcHNjNyM1My4xMC4yMy4wNy4wMCNCb2R5IHNoYXBpbmcgZ2FybWVudHMjNTMuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjQuMDAuMDAjSG9zaWVyeSM1My4xMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xMC4yNC4wMS4wMCNTdG9ja2luZ3MjNTMuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjQuMDIuMDAjU29ja3MjNTMuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjQuMDMuMDAjUGFudHkgaG9zZSM1My4xMC4yNC4wMC4wMAotdW5zcHNjNyM1My4xMC4yNC4wNC4wMCNUaWdodHMjNTMuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjUuMDAuMDAjQ2xvdGhpbmcgYWNjZXNzb3JpZXMjNTMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjUuMDEuMDAjQmVsdHMgb3Igc3VzcGVuZGVycyM1My4xMC4yNS4wMC4wMAotdW5zcHNjNyM1My4xMC4yNS4wMi4wMCNUaWVzIG9yIHNjYXJ2ZXMgb3IgbXVmZmxlcnMjNTMuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjUuMDMuMDAjSGF0cyM1My4xMC4yNS4wMC4wMAotdW5zcHNjNyM1My4xMC4yNS4wNC4wMCNHbG92ZXMgb3IgbWl0dGVucyM1My4xMC4yNS4wMC4wMAotdW5zcHNjNyM1My4xMC4yNS4wNS4wMCNVbWJyZWxsYXMjNTMuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjUuMDYuMDAjU3dlYXQgYmFuZHMjNTMuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjUuMDcuMDAjQ2xvdGhpbmcgaGFuZ2VycyM1My4xMC4yNS4wMC4wMAotdW5zcHNjNyM1My4xMC4yNS4wOC4wMCNBcm1iYW5kcyM1My4xMC4yNS4wMC4wMAotdW5zcHNjNyM1My4xMC4yNS4wOS4wMCNHYXJ0ZXJzIzUzLjEwLjI1LjAwLjAwCi11bnNwc2M3IzUzLjEwLjI1LjEwLjAwI1Rhc3NsZXMjNTMuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjUuMTEuMDAjQmFuZGFubmFzIzUzLjEwLjI1LjAwLjAwCi11bnNwc2M3IzUzLjEwLjI1LjEyLjAwI0hhbmRrZXJjaGllZnMjNTMuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjUuMTMuMDAjSGVhZGJhbmRzIzUzLjEwLjI1LjAwLjAwCi11bnNwc2M3IzUzLjEwLjI1LjE0LjAwI1BvY2tldCBwcm90ZWN0b3JzIzUzLjEwLjI1LjAwLjAwCi11bnNwc2M3IzUzLjEwLjI1LjE1LjAwI0J1dHRvbiBjb3ZlcnMjNTMuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjYuMDAuMDAjTmlnaHR3ZWFyIzUzLjEwLjAwLjAwLjAwCi11bnNwc2M3IzUzLjEwLjI2LjAxLjAwI0JveXMgcGFqYW1hcyBvciBuaWdodHNoaXJ0cyM1My4xMC4yNi4wMC4wMAotdW5zcHNjNyM1My4xMC4yNi4wMi4wMCNNZW5zIHBhamFtYXMgb3IgbmlnaHRzaGlydHMjNTMuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjYuMDMuMDAjR2lybHMgcGFqYW1hcyBvciBuaWdodHNoaXJ0cyM1My4xMC4yNi4wMC4wMAotdW5zcHNjNyM1My4xMC4yNi4wNC4wMCNXb21lbnMgcGFqYW1hcyBvciBuaWdodHNoaXJ0cyM1My4xMC4yNi4wMC4wMAotdW5zcHNjNyM1My4xMC4yNi4wNS4wMCNJbmZhbnRzIHBhamFtYXMgb3IgbmlnaHRzaGlydHMjNTMuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjYuMDYuMDAjQmF0aCByb2JlcyM1My4xMC4yNi4wMC4wMAotdW5zcHNjNyM1My4xMC4yNy4wMC4wMCNVbmlmb3JtcyM1My4xMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xMC4yNy4wMS4wMCNNaWxpdGFyeSB1bmlmb3JtcyM1My4xMC4yNy4wMC4wMAotdW5zcHNjNyM1My4xMC4yNy4wMi4wMCNDdXN0b21zIHVuaWZvcm1zIzUzLjEwLjI3LjAwLjAwCi11bnNwc2M3IzUzLjEwLjI3LjAzLjAwI1BvbGljZSB1bmlmb3JtcyM1My4xMC4yNy4wMC4wMAotdW5zcHNjNyM1My4xMC4yOC4wMC4wMCNTd2ltd2VhciM1My4xMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xMC4yOC4wMS4wMCNNZW5zIHN3aW13ZWFyIzUzLjEwLjI4LjAwLjAwCi11bnNwc2M3IzUzLjEwLjI4LjAyLjAwI1dvbWVucyBzd2ltd2VhciM1My4xMC4yOC4wMC4wMAotdW5zcHNjNyM1My4xMC4yOC4wMy4wMCNCb3lzIHN3aW13ZWFyIzUzLjEwLjI4LjAwLjAwCi11bnNwc2M3IzUzLjEwLjI4LjA0LjAwI0dpcmxzIHN3aW13ZWFyIzUzLjEwLjI4LjAwLjAwCi11bnNwc2M3IzUzLjEwLjI4LjA1LjAwI0luZmFudHMgc3dpbXdlYXIjNTMuMTAuMjguMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjkuMDAuMDAjQXRobGV0aWMgd2VhciM1My4xMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xMC4yOS4wMS4wMCNXb21lbnMgYXRobGV0aWMgd2VhciM1My4xMC4yOS4wMC4wMAotdW5zcHNjNyM1My4xMC4yOS4wMi4wMCNNZW5zIGF0aGxldGljIHdlYXIjNTMuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNTMuMTAuMjkuMDMuMDAjQm95cyBhdGhsZXRpYyB3ZWFyIzUzLjEwLjI5LjAwLjAwCi11bnNwc2M3IzUzLjEwLjI5LjA0LjAwI0dpcmxzIGF0aGxldGljIHdlYXIjNTMuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMDAuMDAuMDAjRm9vdHdlYXIjNTMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTUuMDAuMDAjQm9vdHMjNTMuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTUuMDEuMDAjTWVucyBib290cyM1My4xMS4xNS4wMC4wMAotdW5zcHNjNyM1My4xMS4xNS4wMi4wMCNXb21lbnMgYm9vdHMjNTMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTUuMDMuMDAjQm95cyBib290cyM1My4xMS4xNS4wMC4wMAotdW5zcHNjNyM1My4xMS4xNS4wNC4wMCNHaXJscyBib290cyM1My4xMS4xNS4wMC4wMAotdW5zcHNjNyM1My4xMS4xNS4wNS4wMCNJbmZhbnRzIGJvb3RzIzUzLjExLjE1LjAwLjAwCi11bnNwc2M3IzUzLjExLjE2LjAwLjAwI1Nob2VzIzUzLjExLjAwLjAwLjAwCi11bnNwc2M3IzUzLjExLjE2LjAxLjAwI01lbnMgc2hvZXMjNTMuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTYuMDIuMDAjV29tZW5zIHNob2VzIzUzLjExLjE2LjAwLjAwCi11bnNwc2M3IzUzLjExLjE2LjAzLjAwI0JveXMgc2hvZXMjNTMuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTYuMDQuMDAjR2lybHMgc2hvZXMjNTMuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTYuMDUuMDAjSW5mYW50cyBzaG9lcyM1My4xMS4xNi4wMC4wMAotdW5zcHNjNyM1My4xMS4xNy4wMC4wMCNTbGlwcGVycyM1My4xMS4wMC4wMC4wMAotdW5zcHNjNyM1My4xMS4xNy4wMS4wMCNNZW5zIHNsaXBwZXJzIzUzLjExLjE3LjAwLjAwCi11bnNwc2M3IzUzLjExLjE3LjAyLjAwI1dvbWVucyBzbGlwcGVycyM1My4xMS4xNy4wMC4wMAotdW5zcHNjNyM1My4xMS4xNy4wMy4wMCNCb3lzIHNsaXBwZXJzIzUzLjExLjE3LjAwLjAwCi11bnNwc2M3IzUzLjExLjE3LjA0LjAwI0dpcmxzIHNsaXBwZXJzIzUzLjExLjE3LjAwLjAwCi11bnNwc2M3IzUzLjExLjE3LjA1LjAwI0luZmFudHMgc2xpcHBlcnMjNTMuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTguMDAuMDAjU2FuZGFscyM1My4xMS4wMC4wMC4wMAotdW5zcHNjNyM1My4xMS4xOC4wMS4wMCNNZW5zIHNhbmRhbHMjNTMuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTguMDIuMDAjV29tZW5zIHNhbmRhbHMjNTMuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTguMDMuMDAjQm95cyBzYW5kYWxzIzUzLjExLjE4LjAwLjAwCi11bnNwc2M3IzUzLjExLjE4LjA0LjAwI0dpcmxzIHNhbmRhbHMjNTMuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTguMDUuMDAjSW5mYW50cyBzYW5kYWxzIzUzLjExLjE4LjAwLjAwCi11bnNwc2M3IzUzLjExLjE5LjAwLjAwI0F0aGxldGljIGZvb3R3ZWFyIzUzLjExLjAwLjAwLjAwCi11bnNwc2M3IzUzLjExLjE5LjAxLjAwI01lbnMgYXRobGV0aWMgZm9vdHdlYXIjNTMuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTkuMDIuMDAjV29tZW5zIGF0aGxldGljIGZvb3R3ZWFyIzUzLjExLjE5LjAwLjAwCi11bnNwc2M3IzUzLjExLjE5LjAzLjAwI0JveXMgYXRobGV0aWMgZm9vdHdlYXIjNTMuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTkuMDQuMDAjR2lybHMgYXRobGV0aWMgZm9vdHdlYXIjNTMuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNTMuMTEuMTkuMDUuMDAjSW5mYW50cyBhdGhsZXRpYyBmb290d2VhciM1My4xMS4xOS4wMC4wMAotdW5zcHNjNyM1My4xMS4yMC4wMC4wMCNTaG9lIGFjY2Vzc29yaWVzIzUzLjExLjAwLjAwLjAwCi11bnNwc2M3IzUzLjExLjIwLjAxLjAwI1Nob2Vob3JucyM1My4xMS4yMC4wMC4wMAotdW5zcHNjNyM1My4xMS4yMC4wMi4wMCNTaG9lbGFjZXMjNTMuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNTMuMTIuMDAuMDAuMDAjTHVnZ2FnZSBhbmQgaGFuZGJhZ3MgYW5kIHBhY2tzIGFuZCBjYXNlcyM1My4wMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xMi4xNS4wMC4wMCNMdWdnYWdlIzUzLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUzLjEyLjE1LjAxLjAwI0dhcm1lbnQgYmFncyM1My4xMi4xNS4wMC4wMAotdW5zcHNjNyM1My4xMi4xNS4wMi4wMCNMdWdnYWdlIHNldHMjNTMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTIuMTUuMDMuMDAjSW5kaXZpZHVhbCBsdWdnYWdlIHBpZWNlcyM1My4xMi4xNS4wMC4wMAotdW5zcHNjNyM1My4xMi4xNi4wMC4wMCNQdXJzZXMgYW5kIGhhbmRiYWdzIGFuZCBiYWdzIzUzLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUzLjEyLjE2LjAxLjAwI0hhbmRiYWdzIG9yIHB1cnNlcyM1My4xMi4xNi4wMC4wMAotdW5zcHNjNyM1My4xMi4xNi4wMi4wMCNEdWZmbGUgYmFncyM1My4xMi4xNi4wMC4wMAotdW5zcHNjNyM1My4xMi4xNi4wMy4wMCNCYWNrcGFja3MjNTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTIuMTYuMDQuMDAjRXllZ2xhc3MgY2FzZXMjNTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTIuMTYuMDUuMDAjQ29pbiBwdXJzZXMjNTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTIuMTYuMDYuMDAjTGlwc3RpY2sgY2FzZXMjNTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTIuMTYuMDcuMDAjQ2lnYXIgY2FzZSM1My4xMi4xNi4wMC4wMAotdW5zcHNjNyM1My4xMi4xNy4wMC4wMCNCdXNpbmVzcyBjYXNlcyM1My4xMi4wMC4wMC4wMAotdW5zcHNjNyM1My4xMi4xNy4wMS4wMCNCcmllZmNhc2VzIzUzLjEyLjE3LjAwLjAwCi11bnNwc2M3IzUzLjEyLjE3LjAyLjAwI0F0dGFjaGVzIzUzLjEyLjE3LjAwLjAwCi11bnNwc2M3IzUzLjEyLjE3LjA0LjAwI1BvcnRmb2xpb3MjNTMuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTMuMTIuMTcuMDUuMDAjRXF1aXBtZW50IGNhc2VzIzUzLjEyLjE3LjAwLjAwCi11bnNwc2M3IzUzLjEyLjE3LjA2LjAwI0NvbXB1dGVyIGJhZ3MjNTMuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTMuMTIuMTguMDAuMDAjVHJhdmVsIGtpdHMgYW5kIGFjY2Vzc29yaWVzIzUzLjEyLjAwLjAwLjAwCi11bnNwc2M3IzUzLjEyLjE4LjAxLjAwI1RyYXZlbCBraXRzIzUzLjEyLjE4LjAwLjAwCi11bnNwc2M3IzUzLjEyLjE4LjAyLjAwI1RyYXZlbCBjYXJ0cyM1My4xMi4xOC4wMC4wMAotdW5zcHNjNyM1My4xMi4xOC4wMy4wMCNHYXJtZW50IGJydXNoZXMjNTMuMTIuMTguMDAuMDAKLXVuc3BzYzcjNTMuMTIuMTguMDQuMDAjTWFrZXVwIG9yIG1hbmljdXJlIGNhc2VzIzUzLjEyLjE4LjAwLjAwCi11bnNwc2M3IzUzLjEzLjAwLjAwLjAwI1BlcnNvbmFsIGNhcmUgcHJvZHVjdHMjNTMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTUuMDAuMDAjRGVudGFsIzUzLjEzLjAwLjAwLjAwCi11bnNwc2M3IzUzLjEzLjE1LjAxLjAwI01vdXRod2FzaCM1My4xMy4xNS4wMC4wMAotdW5zcHNjNyM1My4xMy4xNS4wMi4wMCNUb290aHBhc3RlIzUzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE1LjAzLjAwI1Rvb3RoYnJ1c2hlcyM1My4xMy4xNS4wMC4wMAotdW5zcHNjNyM1My4xMy4xNS4wNC4wMCNEZW50YWwgZmxvc3MjNTMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTUuMDUuMDAjSW5mYW50IHNvb3RoZXIgb3IgcGFjaWZpZXIgb3IgZHVtbXkjNTMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTUuMDYuMDAjRGVudGFsIGtpdHMjNTMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTUuMDcuMDAjVG9vdGhwaWNrcyM1My4xMy4xNS4wMC4wMAotdW5zcHNjNyM1My4xMy4xNS4wOC4wMCNEZW50dXJlIGNsZWFuaW5nIHRhYmxldHMjNTMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTYuMDAuMDAjQmF0aCBhbmQgYm9keSM1My4xMy4wMC4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4wMS4wMCNTaG93ZXIgY2FwcyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4wMi4wMCNIYWlyIGNhcmUgc3VwcGxpZXMjNTMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTYuMDMuMDAjUmF6b3JzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjA0LjAwI0hhaXIgY29tYnMgb3IgYnJ1c2hlcyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4wNS4wMCNWYW5pdHkga2l0cyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4wNi4wMCNEZW9kb3JhbnRzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjA3LjAwI0hhbmQgb3IgYm9keSBsb3Rpb25zIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjA4LjAwI1NvYXBzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjA5LjAwI1N1biBwcm90ZWN0aW9uIHByb2R1Y3RzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjEwLjAwI0V5ZSBjYXJlIHN1cHBsaWVzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjExLjAwI1NoYXZpbmcgY3JlYW1zIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjEyLjAwI0JhdGggZ2VscyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4xMy4wMCNTa2luIGNhcmUgcHJvZHVjdHMjNTMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTYuMTQuMDAjRm9vdCBjYXJlIHByb2R1Y3RzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjE1LjAwI0ZlbWluaW5lIGh5Z2llbmUgcHJvZHVjdHMjNTMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTYuMTYuMDAjUGFyYSBwaGFybWFjZXV0aWNhbCBjcmVhbXMgb3IgbG90aW9ucyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4xNy4wMCNNYW5pY3VyZSBpbXBsZW1lbnRzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjE4LjAwI1BlZGljdXJlIGltcGxlbWVudHMjNTMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTYuMTkuMDAjQ29zbWV0aWNzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjIwLjAwI1BlcmZ1bWVzIG9yIGNvbG9nbmVzIG9yIGZyYWdyYW5jZXMjNTMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTYuMjEuMDAjTmFpbCBjbGlwcGVycyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4yMi4wMCNDb25kb21zIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjIzLjAwI0hhaXIgcmVtb3ZhbCBvciBkZXBpbGF0b3J5IHByb2R1Y3RzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjI0LjAwI0Rpc3Bvc2FibGUgcGVyc29uYWwgd2lwZXMjNTMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTMuMTYuMjUuMDAjSGFpciBvciBiZWFyZCBuZXRzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjI2LjAwI0hhbmQgc2FuaXRpemVyIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjI3LjAwI0hhbmQgY2xlYW5lciM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4yOC4wMCNTaGFtcG9vcyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4yOS4wMCNNYWtldXAga2l0cyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4zMC4wMCNMaXAgYmFsbSM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4zMS4wMCNUYXR0b29zIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjMyLjAwI0hvdCByb2xsZXJzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjMzLjAwI0JhcnJldHRlcyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNi4zNC4wMCNDaGVtaWNhbCBwcm90ZWN0aW9uIHByb2R1Y3RzIzUzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE2LjM1LjAwI1NoYXZpbmcgYnJ1c2hlcyM1My4xMy4xNi4wMC4wMAotdW5zcHNjNyM1My4xMy4xNy4wMC4wMCNFeWV3ZWFyIzUzLjEzLjAwLjAwLjAwCi11bnNwc2M3IzUzLjEzLjE3LjAxLjAwI09wdGljYWwgZ2xhc3NlcyBvciBzcGVjdGFjbGVzIzUzLjEzLjE3LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE3LjAyLjAwI0NvbnRhY3QgbGVuc2VzIzUzLjEzLjE3LjAwLjAwCi11bnNwc2M3IzUzLjEzLjE3LjAzLjAwI1N1bmdsYXNzZXMjNTMuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMDAuMDAuMDAjU2V3aW5nIHN1cHBsaWVzIGFuZCBhY2Nlc3NvcmllcyM1My4wMC4wMC4wMC4wMAotdW5zcHNjNyM1My4xNC4xNS4wMC4wMCNTZXdpbmcgZmFzdGVuZXJzIzUzLjE0LjAwLjAwLjAwCi11bnNwc2M3IzUzLjE0LjE1LjAxLjAwI1N0cmFpZ2h0IHBpbnMjNTMuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTUuMDIuMDAjU2FmZXR5IHBpbnMjNTMuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTUuMDMuMDAjWmlwcGVycyM1My4xNC4xNS4wMC4wMAotdW5zcHNjNyM1My4xNC4xNS4wNC4wMCNCdWNrbGVzIzUzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE1LjA1LjAwI0J1dHRvbnMjNTMuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTUuMDYuMDAjU25hcHMjNTMuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTUuMDcuMDAjQ2xhc3BzIzUzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE1LjA4LjAwI0dhcm1lbnQgcml2ZXQjNTMuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTYuMDAuMDAjTWlzY2VsbGFuZW91cyBzZXdpbmcgc3VwcGxpZXMjNTMuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTYuMDEuMDAjUGluIGN1c2hpb25zIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjAyLjAwI1Nld2luZyBraXRzIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjAzLjAwI1RoaW1ibGVzIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjA0LjAwI1Nld2luZyBwYXR0ZXJucyM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4wNS4wMCNTZXdpbmcgbmVlZGxlcyM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4wNi4wMCNCb2JiaW5zIG9yIGJvYmJpbiBob2xkZXJzIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjA3LjAwI1NlYW0gZ2F1Z2UjNTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTYuMDguMDAjQm9ka2luIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjA5LjAwI0xvb3AgdHVybmVyIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjEwLjAwI0ZhYnJpYyBvciB0YWlsb3JzIGNoYWxrIGhvbGRlcnMjNTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTYuMTEuMDAjRmFicmljIG1hcmtlcnMgb3IgZmFicmljIHBlbmNpbHMgb3IgZmFicmljIGNoYWxrIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjEyLjAwI1NlcnJhdGVkIHBhdHRlcm4gdHJhY2luZyB3aGVlbCM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4xMy4wMCNUcmFuc2ZlciBwYXBlciM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4xNC4wMCNUYXBlc3RyeSBuZWVkbGVzIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjE1LjAwI1dlYXZpbmcgbmVlZGxlcyM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4xNi4wMCNMb29wZXIgbG9vbXMjNTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTYuMTcuMDAjQ290dG9uIGplcnNleSBsb29wcyM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4xOC4wMCNOZWVkbGVwb2ludCBjYW52YXMjNTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTYuMTkuMDAjTWFnbmV0IHdhbmRzIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjIwLjAwI1NlYW0gcmlwcGVyIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjIxLjAwI05lZWRsZSB0aHJlYWRlciM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4yMi4wMCNEcmVzc21ha2VycyBydWxlciM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4yMy4wMCNMaXF1aWQgdGhyZWFkIGxvY2sgb3IgcmVpbmZvcmNlciM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4yNC4wMCNDcm9zcyBzdGl0Y2ggZmFicmljIG9yIG5lZWRsZXMjNTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTYuMjUuMDAjQ3Jvc3Mgc3RpdGNoIGRlc2lnbnMjNTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTYuMjYuMDAjRW1icm9pZGVyeSBob29wcyM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4yNy4wMCNDcm9jaGV0IGhvb2tzIzUzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzUzLjE0LjE2LjI4LjAwI1F1aWx0ZXJzIGJhc3RpbmcgdG9vbHMjNTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTMuMTQuMTYuMjkuMDAjUXVpbHRlcnMgcGlucyM1My4xNC4xNi4wMC4wMAotdW5zcHNjNyM1My4xNC4xNi4zMC4wMCNQYXR0ZXJuIGN1dHRpbmcgbWF0cyBvciBib2FyZHMjNTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNTQuMDAuMDAuMDAuMDAjVGltZXBpZWNlcyBhbmQgSmV3ZWxyeSBhbmQgR2Vtc3RvbmUgUHJvZHVjdHMjNTQuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTQuMTAuMDAuMDAuMDAjSmV3ZWxyeSM1NC4wMC4wMC4wMC4wMAotdW5zcHNjNyM1NC4xMC4xNS4wMC4wMCNGaW5lIGpld2VscnkjNTQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNTQuMTAuMTUuMDEuMDAjR29sZCBvciBzaWx2ZXIgb3IgcGxhdGludW0gY2hhaW5zIzU0LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU0LjEwLjE1LjAyLjAwI0ZpbmUgamV3ZWxyeSBuZWNrbGFjZXMjNTQuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTQuMTAuMTUuMDMuMDAjRmluZSBqZXdlbHJ5IHJpbmdzIzU0LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU0LjEwLjE1LjA0LjAwI0ZpbmUgamV3ZWxyeSBlYXJyaW5ncyM1NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NC4xMC4xNS4wNS4wMCNGaW5lIGJvZHkgamV3ZWxyeSM1NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NC4xMC4xNS4wNi4wMCNGaW5lIGpld2VscnkgYnJhY2VsZXRzIzU0LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU0LjEwLjE1LjA3LjAwI1RpYXJhcyM1NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NC4xMC4xNi4wMC4wMCNJbWl0YXRpb24gamV3ZWxyeSM1NC4xMC4wMC4wMC4wMAotdW5zcHNjNyM1NC4xMC4xNi4wMS4wMCNCcmFjZWxldHMjNTQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNTQuMTAuMTYuMDIuMDAjTmVja2xhY2VzIzU0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzU0LjEwLjE2LjAzLjAwI1JpbmdzIzU0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzU0LjEwLjE2LjA0LjAwI0VhcnJpbmdzIzU0LjEwLjE2LjAwLjAwCi11bnNwc2M3IzU0LjEwLjE2LjA1LjAwI0JvZHkgamV3ZWxyeSM1NC4xMC4xNi4wMC4wMAotdW5zcHNjNyM1NC4xMS4wMC4wMC4wMCNUaW1lcGllY2VzIzU0LjAwLjAwLjAwLjAwCi11bnNwc2M3IzU0LjExLjE1LjAwLjAwI1dhdGNoZXMjNTQuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTQuMTEuMTUuMDEuMDAjV3Jpc3Qgd2F0Y2hlcyM1NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM1NC4xMS4xNS4wMi4wMCNQb2NrZXQgd2F0Y2hlcyM1NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM1NC4xMS4xNi4wMC4wMCNDbG9ja3MjNTQuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTQuMTEuMTYuMDEuMDAjV2FsbCBjbG9ja3MjNTQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTQuMTEuMTYuMDIuMDAjTWFudGVsIG9yIHRhYmxlIGNsb2NrcyM1NC4xMS4xNi4wMC4wMAotdW5zcHNjNyM1NC4xMS4xNi4wMy4wMCNGcmVlIHN0YW5kaW5nIGNsb2NrcyM1NC4xMS4xNi4wMC4wMAotdW5zcHNjNyM1NC4xMS4xNi4wNC4wMCNIb3VyZ2xhc3NlcyM1NC4xMS4xNi4wMC4wMAotdW5zcHNjNyM1NC4xMS4xNy4wMC4wMCNXYXRjaCBvciBjbG9jayBwYXJ0cyM1NC4xMS4wMC4wMC4wMAotdW5zcHNjNyM1NC4xMS4xNy4wMS4wMCNXYXRjaCBvciBjbG9jayBkaWFscyM1NC4xMS4xNy4wMC4wMAotdW5zcHNjNyM1NC4xMS4xNy4wMi4wMCNXYXRjaCBvciBjbG9jayBjcnlzdGFscyM1NC4xMS4xNy4wMC4wMAotdW5zcHNjNyM1NC4xMS4xNy4wMy4wMCNXYXRjaCBvciBjbG9jayBwbGF0ZXMgb3IgYnJpZGdlcyM1NC4xMS4xNy4wMC4wMAotdW5zcHNjNyM1NC4xMS4xNy4wNC4wMCNXYXRjaCBzdHJhcHMgb3IgYmFuZHMgb3IgYnJhY2VsZXRzIG9yIGZvYnMjNTQuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNTQuMTIuMDAuMDAuMDAjR2Vtc3RvbmVzIzU0LjAwLjAwLjAwLjAwCi11bnNwc2M3IzU0LjEyLjE1LjAwLjAwI1ByZWNpb3VzIHN0b25lcyM1NC4xMi4wMC4wMC4wMAotdW5zcHNjNyM1NC4xMi4xNS4wMS4wMCNEaWFtb25kIGdlbXN0b25lcyM1NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1NC4xMi4xNS4wMi4wMCNFbWVyYWxkIGdlbXN0b25lcyM1NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1NC4xMi4xNS4wMy4wMCNSdWJ5IGdlbXN0b25lcyM1NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM1NC4xMi4xNS4wNC4wMCNTYXBwaGlyZSBnZW1zdG9uZXMjNTQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTQuMTIuMTYuMDAuMDAjU2VtaSBwcmVjaW91cyBzdG9uZXMjNTQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNTQuMTIuMTYuMDEuMDAjR2FybmV0IGdlbXN0b25lcyM1NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM1NC4xMi4xNi4wMi4wMCNKYWRlIGdlbXN0b25lcyM1NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM1NC4xMi4xNi4wMy4wMCNPcGFsIGdlbXN0b25lcyM1NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM1NC4xMi4xNy4wMC4wMCNQZWFybHMjNTQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNTQuMTIuMTcuMDEuMDAjQ3VsdHVyZWQgcGVhcmxzIzU0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzU0LjEyLjE3LjAyLjAwI05hdHVyYWwgcGVhcmxzIzU0LjEyLjE3LjAwLjAwCi11bnNwc2M3IzU0LjEyLjE4LjAwLjAwI0luZHVzdHJpYWwgcHJlY2lvdXMgYW5kIHNlbWkgcHJlY2lvdXMgc3RvbmVzIzU0LjEyLjAwLjAwLjAwCi11bnNwc2M3IzU0LjEyLjE4LjAxLjAwI0luZHVzdHJpYWwgZGlhbW9uZHMjNTQuMTIuMTguMDAuMDAKLXVuc3BzYzcjNTQuMTIuMTguMDIuMDAjSW5kdXN0cmlhbCBnYXJuZXRzIzU0LjEyLjE4LjAwLjAwCi11bnNwc2M3IzU1LjAwLjAwLjAwLjAwI1B1Ymxpc2hlZCBQcm9kdWN0cyM1NS4wMC4wMC4wMC4wMAotdW5zcHNjNyM1NS4xMC4wMC4wMC4wMCNQcmludGVkIG1lZGlhIzU1LjAwLjAwLjAwLjAwCi11bnNwc2M3IzU1LjEwLjE1LjAwLjAwI1ByaW50ZWQgcHVibGljYXRpb25zIzU1LjEwLjAwLjAwLjAwCi11bnNwc2M3IzU1LjEwLjE1LjAxLjAwI0NoYXJ0cyBvciBtYXBzIG9yIGF0bGFzZXMjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMDIuMDAjRGlyZWN0b3JpZXMjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMDMuMDAjQ2F0YWxvZ3MjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMDQuMDAjTmV3c3BhcGVycyM1NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMC4xNS4wNS4wMCNDb21pYyBib29rcyM1NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMC4xNS4wNi4wMCNNYWdhemluZXMjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMDcuMDAjUGljdHVyZSBvciBkcmF3aW5nIG9yIGNvbG9yaW5nIGJvb2tzIGZvciBjaGlsZHJlbiM1NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMC4xNS4wOC4wMCNFbmN5Y2xvcGVkaWFzIzU1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU1LjEwLjE1LjA5LjAwI0VkdWNhdGlvbmFsIG9yIHZvY2F0aW9uYWwgdGV4dGJvb2tzIzU1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU1LjEwLjE1LjEwLjAwI0xlaXN1cmUgcmVhZGluZyBib29rcyM1NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMC4xNS4xMS4wMCNSZWZlcmVuY2UgYm9va3MjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMTIuMDAjRGljdGlvbmFyaWVzIzU1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU1LjEwLjE1LjEzLjAwI1RyYWRpbmcgY2FyZHMjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMTQuMDAjU2hlZXQgbXVzaWMjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMTUuMDAjUHJvbW90aW9uYWwgbWF0ZXJpYWwgb3IgYW5udWFsIHJlcG9ydHMjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMTYuMDAjT3BlcmF0aW9uIGFuZCBpbnN0cnVjdGlvbiBtYW51YWxzIzU1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU1LjEwLjE1LjE3LjAwI0NsZWFyYW5jZSBhbmQgZGltZW5zaW9uYWwgZHJhd2luZ3MjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMTguMDAjVGVjaG5pY2FsIGRpYWdyYW1zIG9yIGRyYXdpbmdzIzU1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU1LjEwLjE1LjE5LjAwI1BlcmlvZGljYWxzIzU1LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU1LjEwLjE1LjIwLjAwI0luc3RydWN0aW9uIHNoZWV0cyBvciBib29rbGV0cyM1NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMC4xNS4yMS4wMCNPd25lciBvciB1c2VyIG1hbnVhbHMjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMjIuMDAjVGVycmVzdHJpYWwgb3IgY2VsZXN0aWFsIGdsb2JlcyM1NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMC4xNS4yMy4wMCNFeGVyY2lzZSBib29rcyM1NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMC4xNS4yNC4wMCNSZWZlcmVuY2UgYm9va3MjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTAuMTUuMjUuMDAjRW5jeWNsb3BlZGlhcyM1NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMC4xNS4yNi4wMCNEaWN0aW9uYXJpZXMjNTUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMDAuMDAuMDAjRWxlY3Ryb25pYyByZWZlcmVuY2UgbWF0ZXJpYWwjNTUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTUuMDAuMDAjRWxlY3Ryb25pYyBwdWJsaWNhdGlvbnMgYW5kIG11c2ljIzU1LjExLjAwLjAwLjAwCi11bnNwc2M3IzU1LjExLjE1LjAxLjAwI0VsZWN0cm9uaWMgZGlyZWN0b3JpZXMjNTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTUuMDIuMDAjRWxlY3Ryb25pYyBkaWN0aW9uYXJpZXMjNTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTUuMDMuMDAjRWxlY3Ryb25pYyBlbmN5Y2xvcGVkaWFzIzU1LjExLjE1LjAwLjAwCi11bnNwc2M3IzU1LjExLjE1LjA0LjAwI0VsZWN0cm9uaWMgY2F0YWxvZ3MjNTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTUuMDUuMDAjQm9va3Mgb24gdGFwZSBvciBjb21wYWN0IGRpc2MjNTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTUuMDYuMDAjRWxlY3Ryb25pYyBtYWdhemluZXMjNTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTUuMDcuMDAjRWxlY3Ryb25pYyBuZXdzcGFwZXJzIzU1LjExLjE1LjAwLjAwCi11bnNwc2M3IzU1LjExLjE1LjA4LjAwI0VsZWN0cm9uaWMgY2hhcnRzIG9yIG1hcHMgb3IgYXRsYXNlcyM1NS4xMS4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMS4xNS4wOS4wMCNCYWNrZ3JvdW5kIG11c2ljIzU1LjExLjE1LjAwLjAwCi11bnNwc2M3IzU1LjExLjE1LjEwLjAwI01vdGlvbiBwaWN0dXJlcyBvbiBjZWxsdWxvaWQjNTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTUuMTEuMDAjTW90aW9uIHBpY3R1cmVzIG9uIHZpZGVvIHRhcGUjNTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTUuMTIuMDAjTXVzaWMgb24gdGFwZSBvciBjb21wYWN0IGRpc2MjNTUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTYuMDAuMDAjRWxlY3Ryb25pYyBTb2Z0d2FyZSByZWZlcmVuY2UgbWF0ZXJpYWwjNTUuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTUuMTEuMTYuMDEuMDAjRWxlY3Ryb25pYyBTb2Z0d2FyZSBEb2N1bWVudGF0aW9uIGFuZCBVc2VyIE1hbnVhbHMjNTUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMDAuMDAuMDAjU2lnbmFnZSBhbmQgYWNjZXNzb3JpZXMjNTUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTUuMDAuMDAjVGFncyM1NS4xMi4wMC4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNS4wMS4wMCNMdWdnYWdlIHRhZ3MjNTUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTUuMDIuMDAjU2VjdXJpdHkgdGFncyM1NS4xMi4xNS4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNS4wMy4wMCNJZGVudGlmaWNhdGlvbiB0YWdzIzU1LjEyLjE1LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE2LjAwLjAwI0xhYmVscyM1NS4xMi4wMC4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNi4wMS4wMCNMYWJlbCByZW1vdmluZyBraXRzIzU1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE2LjAyLjAwI0Nsb3RoaW5nIGxhYmVscyM1NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNi4wMy4wMCNQcmVzc3VyZSBzZW5zaXRpdmUgbGFiZWxzIzU1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE2LjA0LjAwI0Nhbm5pbmcgb3IgYm90dGxpbmcgbGFiZWxzIzU1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE2LjA1LjAwI0FkZHJlc3Npbmcgb3IgbWFpbGluZyBsYWJlbHMjNTUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTYuMDYuMDAjU2VsZiBhZGhlc2l2ZSBsYWJlbHMjNTUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTYuMDcuMDAjRGVjYWxzIzU1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE2LjA4LjAwI0JhciBjb2RlIGxhYmVscyM1NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNi4wOS4wMCNQYWNrYWdpbmcgbGFiZWxzIzU1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE2LjEwLjAwI0NvbnNlY3V0aXZlbHkgbnVtYmVyZWQgbGFiZWxzIzU1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE2LjExLjAwI0xhYmVsIG1ha2luZyB0YXBlcyM1NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNi4xMi4wMCNQcmludGVyIGxhYmVscyM1NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNi4xMy4wMCNDb2xvciBjb2RpbmcgbGFiZWxzIzU1LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE2LjE0LjAwI1JlbW92YWJsZSBsYWJlbHMjNTUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTYuMTUuMDAjQWRoZXNpdmUgZG90cyBvciBhcnJvd3MjNTUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTYuMTYuMDAjU2VsZiBhZGhlc2l2ZSBmbGFncyM1NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4wMC4wMCNTaWduYWdlIzU1LjEyLjAwLjAwLjAwCi11bnNwc2M3IzU1LjEyLjE3LjAxLjAwI01ldGFsbGljIG5hbWVwbGF0ZXMjNTUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTcuMDIuMDAjTm9uIG1ldGFsbGljIG5hbWVwbGF0ZXMjNTUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTcuMDMuMDAjSWxsdW1pbmF0ZWQgc2lnbnMjNTUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTcuMDQuMDAjU2FmZXR5IHNpZ25zIzU1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE3LjA1LjAwI1NlbGYgYWRoZXNpdmUgc2lnbnMjNTUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTcuMDYuMDAjQmFubmVycyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4wNy4wMCNNYWduZXRpYyBzaWducyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4wOC4wMCNOZW9uIHNpZ25zIzU1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE3LjA5LjAwI01vdmluZyBtZXNzYWdlIHNpZ25zIzU1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE3LjEwLjAwI1RyYWZmaWMgc2lnbnMjNTUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTcuMTEuMDAjQmlsbGJvYXJkcyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4xMi4wMCNEaXJlY3Rpb25hbCBzaWducyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4xMy4wMCNQb2ludCBvZiBwdXJjaGFzZSBzaWducyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4xNC4wMCNQZW5uYW50cyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4xNS4wMCNGbGFncyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4xNi4wMCNXb29kZW4gc2lnbnMjNTUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTcuMTcuMDAjTWFya2VyIHBsYXRlcyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4xOC4wMCNJbmZvcm1hdGlvbmFsIHNpZ25zIzU1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE3LjE5LjAwI1NpZ25hbGxpbmcgY29tcG9uZW50cyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4yMC4wMCNFbWJsZW1zIzU1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE3LjIxLjAwI1ZpbnlsIGxldHRlcnMgb3IgbnVtYmVycyM1NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM1NS4xMi4xNy4yMi4wMCNGbGFncG9sZXMjNTUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTUuMTIuMTcuMjMuMDAjU2lnbiBob2xkZXJzIzU1LjEyLjE3LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE4LjAwLjAwI0lkZW50aWZpY2F0aW9uIGRvY3VtZW50cyM1NS4xMi4wMC4wMC4wMAotdW5zcHNjNyM1NS4xMi4xOC4wMS4wMCNDYXIgdGF4IGRpc2NzIzU1LjEyLjE4LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE4LjAyLjAwI0lkZW50aWZpY2F0aW9uIGNhcmRzIzU1LjEyLjE4LjAwLjAwCi11bnNwc2M3IzU1LjEyLjE4LjAzLjAwI1Bhc3Nwb3J0cyM1NS4xMi4xOC4wMC4wMAotdW5zcHNjNyM1NS4xMi4xOC4wNC4wMCNCYWRnZXMgb3IgYmFkZ2UgaG9sZGVycyM1NS4xMi4xOC4wMC4wMAotdW5zcHNjNyM1Ni4wMC4wMC4wMC4wMCNGdXJuaXR1cmUgYW5kIEZ1cm5pc2hpbmdzIzU2LjAwLjAwLjAwLjAwCi11bnNwc2M3IzU2LjEwLjAwLjAwLjAwI0FjY29tbW9kYXRpb24gZnVybml0dXJlIzU2LjAwLjAwLjAwLjAwCi11bnNwc2M3IzU2LjEwLjE1LjAwLjAwI0Z1cm5pdHVyZSM1Ni4xMC4wMC4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4wMS4wMCNTdGFuZHMjNTYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTUuMDIuMDAjU29mYXMjNTYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTUuMDMuMDAjQ29hdCByYWNrcyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4wNC4wMCNDaGFpcnMjNTYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTUuMDUuMDAjRW50ZXJ0YWlubWVudCBjZW50ZXJzIzU2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE1LjA2LjAwI0Z1dG9ucyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4wNy4wMCNCb29rY2FzZXMjNTYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTUuMDguMDAjTWF0dHJlc3NlcyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4wOS4wMCNEcmVzc2VycyBvciBhcm1vaXJlcyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4xMC4wMCNQYXJ0aXRpb25zIzU2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE1LjEyLjAwI1N0b29scyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4xMy4wMCNDb3RzIzU2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE1LjE0LjAwI0Zvb3Qgc3Rvb2xzIzU2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE1LjE1LjAwI0JlZHMjNTYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTUuMTYuMDAjQ2hlc3RzIzU2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE1LjE4LjAwI1dhbGwgcmFja3MjNTYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTUuMTkuMDAjVGFibGVzIzU2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE1LjIwLjAwI0xvY2tlcnMjNTYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTUuMjEuMDAjQmVkIGhlYWRib2FyZCBvciBmb290Ym9hcmQjNTYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTUuMjIuMDAjQXJtIGNoYWlyIzU2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE1LjIzLjAwI1VtYnJlbGxhIHN0YW5kcyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4yNC4wMCNJcm9uaW5nIGJvYXJkcyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4yNS4wMCNJcm9uaW5nIGJvYXJkIGNvdmVycyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4yNi4wMCNGcmlkZ2UgYmFyIzU2LjEwLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE1LjI3LjAwI0hvdXNlaG9sZCB0eXBlIGxpbmVuIGRyaWVycyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4yOC4wMCNBcnRpZmljaWFsIHBsYW50cyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNS4yOS4wMCNNYWdhemluZSByYWNrcyM1Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNi4wMC4wMCNPdXRkb29yIGZ1cm5pdHVyZSM1Ni4xMC4wMC4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNi4wMS4wMCNPdXRkb29yIHVtYnJlbGxhcyM1Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNi4wMi4wMCNPdXRkb29yIGNoYWlycyM1Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNi4wMy4wMCNPdXRkb29yIHRhYmxlcyBvciBwaWNuaWMgdGFibGVzIzU2LjEwLjE2LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE2LjA0LjAwI091dGRvb3Igc3dpbmdzIzU2LjEwLjE2LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE2LjA1LjAwI091dGRvb3IgYmVuY2hlcyM1Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNi4wNi4wMCNGbG93ZXIgc3RhbmRzIzU2LjEwLjE2LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE2LjA3LjAwI091dHNpZGUgY2xvdGhlcyBkcnllciM1Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNy4wMC4wMCNPZmZpY2UgZnVybml0dXJlIzU2LjEwLjAwLjAwLjAwCi11bnNwc2M3IzU2LjEwLjE3LjAxLjAwI0NyZWRlbnphcyM1Ni4xMC4xNy4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNy4wMi4wMCNGaWxpbmcgY2FiaW5ldHMgb3IgYWNjZXNvcmllcyM1Ni4xMC4xNy4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNy4wMy4wMCNEZXNrcyM1Ni4xMC4xNy4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNy4wNC4wMCNUYWJsZSBiYXNlIzU2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE3LjA1LjAwI1Nob3djYXNlcyM1Ni4xMC4xNy4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNy4wNi4wMCNDb25mZXJlbmNpbmcgdGFibGVzIzU2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE3LjA3LjAwI0RyYWZ0aW5nIHRhYmxlcyM1Ni4xMC4xNy4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xNy4wOC4wMCNNb2JpbGUgZmlsZXMgb3IgZXF1aXBtZW50IGNhcnRzIzU2LjEwLjE3LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE3LjA5LjAwI1RhYmxlIHRvcHMjNTYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTguMDAuMDAjQmFieSBhbmQgdG9kZGxlciBmdXJuaXR1cmUgYW5kIGFjY2Vzc29yaWVzIzU2LjEwLjAwLjAwLjAwCi11bnNwc2M3IzU2LjEwLjE4LjAzLjAwI0NhcnJpYWdlcyBvciBwZXJhbWJ1bGF0b3JzIG9yIHN0cm9sbGVycyM1Ni4xMC4xOC4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xOC4wNC4wMCNDcmlicyBvciBwbGF5cGVucyM1Ni4xMC4xOC4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xOC4wNS4wMCNDYXIgc2VhdHMjNTYuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTguMDYuMDAjSGlnaCBjaGFpcnMgb3IgYWNjZXNzb3JpZXMjNTYuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTYuMTAuMTguMDcuMDAjQm91bmNlciBzZWF0cyBvciBqdW1wZXJzIzU2LjEwLjE4LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE4LjA4LjAwI1N3aW5ncyBvciBqdW1wZXJzIG9yIGFjY2Vzc29yaWVzIzU2LjEwLjE4LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE4LjA5LjAwI1BvdHR5IHNlYXRzIzU2LjEwLjE4LjAwLjAwCi11bnNwc2M3IzU2LjEwLjE4LjEwLjAwI0JhYnkgYmF0aHMgb3IgdHVicyM1Ni4xMC4xOC4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xOC4xMS4wMCNCYXNzaW5ldHMgb3IgY3JhZGxlcyM1Ni4xMC4xOC4wMC4wMAotdW5zcHNjNyM1Ni4xMC4xOC4xMi4wMCNDaGFuZ2luZyB0YWJsZXMgb3IgYWNjZXNzb3JpZXMjNTYuMTAuMTguMDAuMDAKLXVuc3BzYzcjNTYuMTEuMDAuMDAuMDAjQ29tbWVyY2lhbCBhbmQgaW5kdXN0cmlhbCBmdXJuaXR1cmUjNTYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTUuMDAuMDAjV29ya3N0YXRpb25zIGFuZCBvZmZpY2UgcGFja2FnZXMjNTYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTUuMDEuMDAjTW9kdWxhciByZWNlcHRpb24gb2ZmaWNlIHBhY2thZ2VzIzU2LjExLjE1LjAwLjAwCi11bnNwc2M3IzU2LjExLjE1LjAyLjAwI0Nhc2Vnb29kIG9yIG5vbiBtb2R1bGFyIGV4ZWN1dGl2ZSBvZmZpY2UgcGFja2FnZXMjNTYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTUuMDMuMDAjTW9kdWxhciBleGVjdXRpdmUgb2ZmaWNlIHBhY2thZ2VzIzU2LjExLjE1LjAwLjAwCi11bnNwc2M3IzU2LjExLjE1LjA0LjAwI0Nhc2Vnb29kIG9yIG5vbiBtb2R1bGFyIG1hbmFnZXJpYWwgb2ZmaWNlIHBhY2thZ2VzIzU2LjExLjE1LjAwLjAwCi11bnNwc2M3IzU2LjExLjE1LjA1LjAwI01vZHVsYXIgbWFuYWdlcmlhbCBvZmZpY2UgcGFja2FnZXMjNTYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTUuMDYuMDAjQ2FzZWdvb2Qgb3Igbm9uIG1vZHVsYXIgc3RhZmYgb2ZmaWNlIHBhY2thZ2VzIzU2LjExLjE1LjAwLjAwCi11bnNwc2M3IzU2LjExLjE1LjA3LjAwI01vZHVsYXIgc3RhZmYgb2ZmaWNlIHBhY2thZ2VzIzU2LjExLjE1LjAwLjAwCi11bnNwc2M3IzU2LjExLjE1LjA4LjAwI0Nhc2Vnb29kIG9yIG5vbiBtb2R1bGFyIHRlY2huaWNhbCBvZmZpY2UgcGFja2FnZXMjNTYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTUuMDkuMDAjTW9kdWxhciB0ZWNobmljYWwgb2ZmaWNlIHBhY2thZ2VzIzU2LjExLjE1LjAwLjAwCi11bnNwc2M3IzU2LjExLjE1LjEwLjAwI0Nhc2Vnb29kIG9yIG5vbiBtb2R1bGFyIGNsZXJpY2FsIG9mZmljZSBwYWNrYWdlcyM1Ni4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xNS4xMS4wMCNNb2R1bGFyIGNsZXJpY2FsIG9mZmljZSBwYWNrYWdlcyM1Ni4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xNS4xMi4wMCNDYXNlZ29vZCBvciBub24gbW9kdWxhciByZWNlcHRpb24gb2ZmaWNlIHBhY2thZ2VzIzU2LjExLjE1LjAwLjAwCi11bnNwc2M3IzU2LjExLjE1LjEzLjAwI0NvbmZlcmVuY2Ugb3Igbm9uIG1vZHVsYXIgcm9vbSBwYWNrYWdlcyM1Ni4xMS4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xNi4wMC4wMCNQYW5lbCBzeXN0ZW1zIzU2LjExLjAwLjAwLjAwCi11bnNwc2M3IzU2LjExLjE2LjAxLjAwI1NjcmVlbnMgZm9yIHBhbmVsIHN5c3RlbXMjNTYuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTYuMDIuMDAjU3RvcmFnZSBmb3IgcGFuZWwgc3lzdGVtcyM1Ni4xMS4xNi4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xNi4wMy4wMCNPcmdhbml6YXRpb24gZm9yIHBhbmVsIHN5c3RlbXMjNTYuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTYuMDQuMDAjV29yayBzdXJmYWNlcyBmb3IgcGFuZWwgc3lzdGVtcyM1Ni4xMS4xNi4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xNi4wNS4wMCNMaWdodGluZyBvciBwb3dlciBvciBkYXRhIGNvbXBvbmV0cyBmb3IgcGFuZWwgc3lzdGVtcyM1Ni4xMS4xNi4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xNi4wNi4wMCNQYXJ0cyBvciBhY2Nlc3NvcmllcyBwYW5lbCBzeXN0ZW1zIzU2LjExLjE2LjAwLjAwCi11bnNwc2M3IzU2LjExLjE3LjAwLjAwI0Nhc2Vnb29kIGFuZCBub24gbW9kdWxhciBzeXN0ZW1zIzU2LjExLjAwLjAwLjAwCi11bnNwc2M3IzU2LjExLjE3LjAxLjAwI0Nhc2Vnb29kICBvciBub24gbW9kdWxhciBkZXNrIzU2LjExLjE3LjAwLjAwCi11bnNwc2M3IzU2LjExLjE3LjAyLjAwI0Nhc2Vnb29kIG9yIG5vbiBtb2R1bGFyIGNyZWRlbnphIzU2LjExLjE3LjAwLjAwCi11bnNwc2M3IzU2LjExLjE3LjAzLjAwI0Nhc2Vnb29kIG9yIG5vbiBtb2R1bGFyIHN0b3JhZ2UjNTYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTcuMDQuMDAjQ2FzZWdvb2Qgb3Igbm9uIG1vZHVsYXIgb3JnYW5pemF0aW9uIzU2LjExLjE3LjAwLjAwCi11bnNwc2M3IzU2LjExLjE3LjA1LjAwI0Nhc2Vnb29kIG9yIG5vbiBtb2R1bGFyIGxpZ2h0aW5nIG9yIHBvd2VyIG9yIGRhdGEgY29tcG9uZW50cyM1Ni4xMS4xNy4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xNy4wNi4wMCNDYXNlZ29vZCBvciBub24gbW9kdWxhciBwYXJ0cyBvciBhY2Nlc3NvcmllcyM1Ni4xMS4xNy4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xOC4wMC4wMCNGcmVlc3RhbmRpbmcgZnVybml0dXJlIzU2LjExLjAwLjAwLjAwCi11bnNwc2M3IzU2LjExLjE4LjAxLjAwI0ZyZWVzdGFuZGluZyBsaWdodGluZyBvciBwb3dlciBvciBkYXRhIGNvbXBvbmVudHMjNTYuMTEuMTguMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTguMDIuMDAjRnJlZXN0YW5kaW5nIHRhYmxlcyM1Ni4xMS4xOC4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xOC4wMy4wMCNGcmVlc3RhbmRpbmcgc3RvcmFnZSM1Ni4xMS4xOC4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xOC4wNC4wMCNGcmVlc3RhbmRpbmcgb3JnYW5pemF0aW9uIzU2LjExLjE4LjAwLjAwCi11bnNwc2M3IzU2LjExLjE4LjA1LjAwI0ZyZWVzdGFuZGluZyBwYXJ0cyBvciBhY2Nlc3NvcmllcyM1Ni4xMS4xOC4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xOS4wMC4wMCNJbmR1c3RyaWFsIGZ1cm5pdHVyZSM1Ni4xMS4wMC4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xOS4wMS4wMCNJbmR1c3RyaWFsIGxpZ2h0aW5nIG9yIHBvd2VyIG9yIGRhdGEgY29tcG9uZW50cyM1Ni4xMS4xOS4wMC4wMAotdW5zcHNjNyM1Ni4xMS4xOS4wMi4wMCNJbmR1c3RyaWFsIHdvcmsgc3VyZmFjZXMjNTYuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMTkuMDMuMDAjSW5kdXN0cmlhbCBzdG9yYWdlIHVuaXRzIzU2LjExLjE5LjAwLjAwCi11bnNwc2M3IzU2LjExLjE5LjA0LjAwI0luZHVzdHJpYWwgb3JnYW5pemF0aW9uIzU2LjExLjE5LjAwLjAwCi11bnNwc2M3IzU2LjExLjE5LjA1LjAwI0luZHVzdHJpYWwgcGFydHMgb3IgYWNjZXNzb3JpZXMjNTYuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMjAuMDAuMDAjQ29tcHV0ZXIgc3VwcG9ydCBmdXJuaXR1cmUjNTYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMjAuMDEuMDAjQ29tcHV0ZXIgc3VwcG9ydCBsaWdodGluZyBvciBwb3dlciBvciBkYXRhIGNvbXBvbmVudHMjNTYuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMjAuMDIuMDAjQ29tcHV0ZXIgc3VwcG9ydCB3b3JrIHN1cmZhY2VzIzU2LjExLjIwLjAwLjAwCi11bnNwc2M3IzU2LjExLjIwLjAzLjAwI0NvbXB1dGVyIHN1cHBvcnQgc3RvcmFnZSBhY2Nlc3NvcmllcyM1Ni4xMS4yMC4wMC4wMAotdW5zcHNjNyM1Ni4xMS4yMC4wNC4wMCNDb21wdXRlciBzdXBwb3J0IG9yZ2FuaXphdGlvbiM1Ni4xMS4yMC4wMC4wMAotdW5zcHNjNyM1Ni4xMS4yMC4wNS4wMCNDb21wdXRlciBzdXBwb3J0IHBhcnRzIG9yIGFjY2Vzc29yaWVzIzU2LjExLjIwLjAwLjAwCi11bnNwc2M3IzU2LjExLjIxLjAwLjAwI1NlYXRpbmcjNTYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMjEuMDEuMDAjQXVkaXRvcml1bSBvciBzdGFkaXVtIG9yIHNwZWNpYWwgdXNlIHNlYXRpbmcjNTYuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMjEuMDIuMDAjVGFzayBzZWF0aW5nIzU2LjExLjIxLjAwLjAwCi11bnNwc2M3IzU2LjExLjIxLjAzLjAwI0d1ZXN0IHNlYXRpbmcjNTYuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMjEuMDQuMDAjRXhlY3V0aXZlIHNlYXRpbmcjNTYuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMjEuMDUuMDAjTG91bmdlIHNlYXRpbmcjNTYuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNTYuMTEuMjEuMDYuMDAjU3Rvb2wgc2VhdGluZyM1Ni4xMS4yMS4wMC4wMAotdW5zcHNjNyM1Ni4xMS4yMS4wNy4wMCNTZWF0aW5nIHBhcnRzIG9yIGFjY2Vzc29yaWVzIzU2LjExLjIxLjAwLjAwCi11bnNwc2M3IzU2LjExLjIxLjA4LjAwI0NvbWJpbmF0aW9uIGNoYWlyIHdpdGggZGVzayM1Ni4xMS4yMS4wMC4wMAotdW5zcHNjNyM1Ni4xMS4yMS4wOS4wMCNCZW5jaGVzIzU2LjExLjIxLjAwLjAwCi11bnNwc2M3IzU2LjEyLjAwLjAwLjAwI0NsYXNzcm9vbSBhbmQgaW5zdHJ1Y3Rpb25hbCBhbmQgaW5zdGl0dXRpb25hbCBmdXJuaXR1cmUgYW5kIGZpeHR1cmVzIzU2LjAwLjAwLjAwLjAwCi11bnNwc2M3IzU2LjEyLjEwLjAwLjAwI0xpYnJhcnkgZnVybmlzaGluZ3MjNTYuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTAuMDEuMDAjQm9vayBjYXJ0cyBvciBib29rIHRydWNrcyM1Ni4xMi4xMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xMC4wMi4wMCNDaXJjdWxhdGlvbiBvciBsaWJyYXJpYW4gZGVza3Mgb3IgY29tcG9uZW50cyM1Ni4xMi4xMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xMC4wMy4wMCNCb29rIHJldHVybnMjNTYuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTAuMDQuMDAjQ2FyZCBjYXRhbG9nIHVuaXRzIzU2LjEyLjEwLjAwLjAwCi11bnNwc2M3IzU2LjEyLjEwLjA1LjAwI0RpY3Rpb25hcnkgc3RhbmRzIzU2LjEyLjEwLjAwLjAwCi11bnNwc2M3IzU2LjEyLjEwLjA2LjAwI1VwaG9sc3RlcmVkIGJlbmNoZXMjNTYuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTAuMDcuMDAjUHVibGljIGFjY2VzcyB0YWJsZXMjNTYuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTAuMDguMDAjQm9vayBicm93c2VyIHVuaXRzIzU2LjEyLjEwLjAwLjAwCi11bnNwc2M3IzU2LjEyLjEwLjA5LjAwI1Nsb3BlZCByZWFkaW5nIHRhYmxlcyM1Ni4xMi4xMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xMC4xMC4wMCNCb29rIGtpb3NrcyM1Ni4xMi4xMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xMC4xMS4wMCNMaWJyYXJ5IGNvbXBhY3QgZGlzYyBvciBhdWRpbyBjYXNzZXR0ZSBkaXNwbGF5ZXJzIzU2LjEyLjEwLjAwLjAwCi11bnNwc2M3IzU2LjEyLjEwLjEyLjAwI1JvdGFyeSBpc2xhbmQgc3RhbmRzIzU2LjEyLjEwLjAwLjAwCi11bnNwc2M3IzU2LjEyLjEwLjE0LjAwI0hhbmcgdXAgYmFnIHJhY2tzIG9yIGJhZ3MjNTYuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTEuMDAuMDAjQXJ0IGNsYXNzcm9vbSBmdXJuaXNoaW5ncyM1Ni4xMi4wMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xMS4wMS4wMCNBcnQgaG9yc2UjNTYuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTEuMDIuMDAjQXJ0IHN0dWRlbnQgYmVuY2gjNTYuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTIuMDAuMDAjRmlyc3QgYWlkIHJvb20gZnVybmlzaGluZ3MjNTYuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTIuMDEuMDAjRmlyc3QgYWlkIGNvdWNoZXMjNTYuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTMuMDAuMDAjR2VuZXJhbCBlZHVjYXRpb25hbCBmYWNpbGl0eSBmaXh0dXJlcyM1Ni4xMi4wMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xMy4wMS4wMCNTdGFuZGluZyByaXNlcnMjNTYuMTIuMTMuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTMuMDIuMDAjVGFibGUgb3IgY2hhaXIgbW92ZXJzIG9yIGNhZGR5cyM1Ni4xMi4xMy4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xMy4wMy4wMCNSdWJiZXIgYnJ1c2ggZmxvb3IgbWF0dGluZyM1Ni4xMi4xMy4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xMy4wNC4wMCNQbGFubmluZyB0YWJsZXMjNTYuMTIuMTMuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTQuMDAuMDAjQ2FmZXRlcmlhIGFuZCBsdW5jaHJvb20gZnVybmlzaGluZ3MjNTYuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTQuMDEuMDAjTW9iaWxlIGJlbmNoIHRhYmxlcyM1Ni4xMi4xNC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xNC4wMi4wMCNNb2JpbGUgc3Rvb2wgdGFibGVzIzU2LjEyLjE0LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE0LjAzLjAwI01vYmlsZSB0YWJsZXMjNTYuMTIuMTQuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTUuMDAuMDAjR2VuZXJhbCBjbGFzc3Jvb20gZnVybmlzaGluZ3MjNTYuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTUuMDEuMDAjQWN0aXZpdHkgdGFibGVzIzU2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE1LjAyLjAwI0NsYXNzcm9vbSBjaGFpcnMjNTYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTUuMDMuMDAjQ2xhc3Nyb29tIGJlbmNoZXMjNTYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTUuMDQuMDAjQ2xhc3Jvb20gc3Rvb2xzIzU2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE1LjA1LjAwI0NsYXNzcm9vbSB0YWJsZXMjNTYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTUuMDYuMDAjU3R1ZGVudCBkZXNrcyM1Ni4xMi4xNS4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xNS4wNy4wMCNTdHVkeSBjYXJyZWxzIzU2LjEyLjE1LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE1LjA4LjAwI1N0dWRlbnQgY29tcHV0ZXIgZGVza3MjNTYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTUuMDkuMDAjU3R1ZGVudCBjb21wdXRlciB0YWJsZXMjNTYuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTYuMDAuMDAjQ3JlYXRpdmUgcGxheSBhbmQgcmVzdCB0aW1lIGZ1cm5pc2hpbmdzIGZvciBkYXljYXJlIGFuZCBlYXJseSBjaGlsZGhvb2QgZmFjaWxpdGllcyM1Ni4xMi4wMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xNi4wMS4wMCNUb2RkbGVyIG9yIGNoaWxkIHNpemUgbGl2aW5nIHJvb20gc2V0cyM1Ni4xMi4xNi4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xNi4wMi4wMCNUb2RkbGVyIG9yIGNoaWxkIHNpemUgc29mYXMjNTYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTYuMDMuMDAjVG9kZGxlciBvciBjaGlsZCBzaXplIGVhc3kgY2hhaXJzIzU2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE2LjA0LjAwI1RvZGRsZXIgb3IgY2hpbGQgc2l6ZSBiZWFuIGJhZyBjaGFpcnMjNTYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTYuMDUuMDAjTG93IHJpc2Ugcm9vbSBkaXZpZGVycyBvciBwbGF5IHBhbmVscyM1Ni4xMi4xNi4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xNi4wNi4wMCNDaGlsZHMgcmVzdCBtYXRzIzU2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE2LjA3LjAwI0NoaWxkcyByZXN0IG1hdCByYWNrcyBvciBob2xkZXJzIzU2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE2LjA4LjAwI0NoaWxkcmVucyBjb3RzIzU2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE2LjA5LjAwI0NoaWxkcmVucyBjb3QgY2FycmllcnMjNTYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTYuMTAuMDAjQ2hpbGRyZW5zIGNvdCBhY3Rpdml0eSBzeXN0ZW1zIzU2LjEyLjE2LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE3LjAwLjAwI0Jvb2sgYW5kIGdlbmVyYWwgc3RvcmFnZSB1bml0cyBmb3IgY2xhc3Nyb29tcyM1Ni4xMi4wMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xNy4wMS4wMCNHZW5lcmFsIHN0b3JhZ2UgdW5pdHMjNTYuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTcuMDIuMDAjQm9vayBzdG9yYWdlIHVuaXRzIzU2LjEyLjE3LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE3LjAzLjAwI0N1YmJpZSB1bml0cyM1Ni4xMi4xNy4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xNy4wNC4wMCNJbnN0aXR1dGlvbmFsIFN0b3JhZ2UgQ2FiaW5ldHMjNTYuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTguMDAuMDAjVm9jYXRpb25hbCBjbGFzc3Jvb20gZnVybmlzaGluZ3MgYW5kIGZpeHR1cmVzIzU2LjEyLjAwLjAwLjAwCi11bnNwc2M3IzU2LjEyLjE4LjAxLjAwI1RlY2huaWNhbCBlZHVjYXRpb24gdG9vbCBzdG9yYWdlIGNhYmluZXRzIG9yIGNhYmluZXRzIHdpdGggdG9vbHMjNTYuMTIuMTguMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTguMDIuMDAjR2VuZXJhbCBzaG9wIHRvb2wgc3RvcmFnZSBjYWJpbmV0cyBvciBjYWJpbmV0cyB3aXRoIHRvb2xzIzU2LjEyLjE4LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE4LjAzLjAwI1dvcmR3b3JraW5nIHRvb2wgc3RvcmFnZSBjYWJpbmV0cyBvciBjYWJpbmV0cyB3aXRoIHRvb2xzIzU2LjEyLjE4LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE4LjA0LjAwI0luc3RydWN0b3JzIHRlY2huaWNhbCBkZXNrIzU2LjEyLjE4LjAwLjAwCi11bnNwc2M3IzU2LjEyLjE4LjA1LjAwI0ZsYXQgZmlsZXMjNTYuMTIuMTguMDAuMDAKLXVuc3BzYzcjNTYuMTIuMTkuMDAuMDAjRGVtb25zdHJhdGlvbiBmdXJuaXNoaW5ncyM1Ni4xMi4wMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4xOS4wMS4wMCNTZXdpbmcgbWFjaGluZSBkZW1vbnN0cmF0b3IgdGFibGVzIzU2LjEyLjE5LjAwLjAwCi11bnNwc2M3IzU2LjEyLjIwLjAwLjAwI0xhYm9yYXRvcnkgZnVybml0dXJlIzU2LjEyLjAwLjAwLjAwCi11bnNwc2M3IzU2LjEyLjIwLjAxLjAwI0xhYm9yYXRvcnkgYmVuY2hlcyM1Ni4xMi4yMC4wMC4wMAotdW5zcHNjNyM1Ni4xMi4yMC4wMi4wMCNMYWJvcmF0b3J5IHN0b3JhZ2UgdW5pdHMgb3IgYWNjZXNzb3JpZXMjNTYuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNTYuMTIuMjAuMDMuMDAjTGFib3JhdG9yeSB3b3Jrc3RhdGlvbnMjNTYuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNjAuMDAuMDAuMDAuMDAjTXVzaWNhbCBJbnN0cnVtZW50cyBhbmQgR2FtZXMgYW5kIFRveXMgYW5kIEFydHMgYW5kIENyYWZ0cyBhbmQgRWR1Y2F0aW9uYWwgRXF1aXBtZW50IGFuZCBNYXRlcmlhbHMgYW5kIEFjY2Vzc29yaWVzIGFuZCBTdXBwbGllcyM2MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4wMC4wMC4wMCNEZXZlbG9wbWVudGFsIGFuZCBwcm9mZXNzaW9uYWwgdGVhY2hpbmcgYWlkcyBhbmQgbWF0ZXJpYWxzIGFuZCBhY2Nlc3NvcmllcyBhbmQgc3VwcGxpZXMjNjAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTAuMDAuMDAjTWF0aCBraXRzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEwLjAxLjAwI0FkZGl0aW9uIG1hdGgga2l0cyM2MC4xMC4xMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMC4wMi4wMCNEaXZpc2lvbiBtYXRoIGtpdHMjNjAuMTAuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTAuMDMuMDAjRnJhY3Rpb24gbWF0aCBraXRzIzYwLjEwLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEwLjA0LjAwI01pZGRsZSBTY2hvb2wgbWF0aCBraXRzIzYwLjEwLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEwLjA1LjAwI0Vhcmx5IGNoaWxkaG9vZCBtYXRoIGtpdHMjNjAuMTAuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTAuMDYuMDAjTWVhc3VyZW1lbnQgbWF0aCBraXRzIzYwLjEwLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEwLjA3LjAwI011bHRpcGxpY2F0aW9uIG1hdGgga2l0cyM2MC4xMC4xMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMC4wOC4wMCNFbGVtZW50YXJ5IG1hdGgga2l0cyM2MC4xMC4xMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMC4wOS4wMCNTdWJ0cmFjdGlvbiBtYXRoIGtpdHMjNjAuMTAuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTAuMTAuMDAjSGlnaCBzY2hvb2wgbWF0aCBraXRzIzYwLjEwLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjExLjAwLjAwI0VsZWN0cm9uaWMgbGVhcm5pbmcgYWlkcyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMS4wMS4wMCNFbGVjdHJvbmljIGNhcmQgcmVhZGVycyM2MC4xMC4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMS4wMi4wMCNDdXJyaWN1bHVtIGJhc2VkIGVsZWN0cm9uaWMgbGVhcm5pbmcgYWlkcyM2MC4xMC4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMS4wMy4wMCNFbGVjdHJvbmljIGdsb2JlcyM2MC4xMC4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMS4wNC4wMCNFbGVjdHJvbmljIHF1aXogbWFjaGluZXMjNjAuMTAuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTIuMDAuMDAjRWR1Y2F0aW9uYWwgaW5jZW50aXZlcyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMi4wMS4wMCNCaWJsZSBiYXNlZCBjaGFydCBzdGlja2VycyM2MC4xMC4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMi4wMi4wMCNCaWJsZSBiYXNlZCBpbmNlbnRpdmUgY2hhcnRzIzYwLjEwLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEyLjAzLjAwI0luY2VudGl2ZSBjaGFydCBzdGlja2VycyM2MC4xMC4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMi4wNC4wMCNJbmNlbnRpdmUgY2hhcnRzIzYwLjEwLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEyLjA1LjAwI0luY2VudGl2ZSBwdW5jaGNhcmRzIzYwLjEwLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEzLjAwLjAwI0VkdWNhdGlvbmFsIHN0aWNrZXJzIGFuZCBzdXBwbGllcyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4wMS4wMCNCaWJsZSBiYXNlZCBzdGlja2VycyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4wMi4wMCNHaWFudCBzdGlja2VycyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4wMy4wMCNOb3Rhcnkgc2VhbCBzdGlja2VycyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4wNC4wMCNQaG90byBzdGlja2VycyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4wNS4wMCNSZXdhcmQgc3RpY2tlcnMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMDYuMDAjU2NlbnRlZCBzdGlja2VycyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4wNy4wMCNTaGFwZSBzdGlja2VycyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4wOC4wMCNTcGFya2xlIHN0aWNrZXJzIzYwLjEwLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEzLjA5LjAwI1Jld2FyZCBzdGFyIHN0aWNrZXJzIzYwLjEwLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEzLjEwLjAwI1N0aWNrZXIgYXNzb3J0bWVudHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMTEuMDAjU3RpY2tlciBib29rcyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4xMi4wMCNTdGlja2VyIGJveGVzIzYwLjEwLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEzLjEzLjAwI1RhdHRvbyBzdGlja2VycyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4xNC4wMCNBZGRpdGlvbiBmbGFzaCBjYXJkcyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4xNS4wMCNBbGwgZmFjdHMgZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMTYuMDAjQmxhbmsgZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMTcuMDAjRGl2aXNpb24gZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMTguMDAjRWxlY3Ryb25pYyBmbGFzaCBjYXJkcyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4xOS4wMCNFcXVpdmFsZW50IGZsYXNoIGNhcmRzIzYwLjEwLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEzLjIwLjAwI0ZyYWN0aW9uIGZsYXNoIGNhcmRzIzYwLjEwLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEzLjIxLjAwI0dyZWF0ZXIgdGhhbiBvciBsZXNzIHRoYW4gZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMjIuMDAjTXVsdGlwbGljYXRpb24gZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMjMuMDAjU3VidHJhY3Rpb24gZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMjQuMDAjQWxwaGFiZXQgZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMjUuMDAjV29yZCBidWlsZGluZyBmbGFzaCBjYXJkcyM2MC4xMC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xMy4yNi4wMCNQaG9uaWNzIGZsYXNoIGNhcmRzIzYwLjEwLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEzLjI3LjAwI0hhbmR3cml0aW5nIG9yIHdyaXRpbmcgZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMjguMDAjTnVtYmVyIGNsYXNoIGNhcmRzIzYwLjEwLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEzLjI5LjAwI01vbmV5IGZsYXNoIGNhcmRzIzYwLjEwLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjEzLjMwLjAwI1RpbWUgZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTMuMzEuMDAjU3RhdGUgZmxhc2ggY2FyZHMjNjAuMTAuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTQuMDAuMDAjQ2xhc3Nyb29tIGF3YXJkcyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNC4wMS4wMCNCYWRnZXMjNjAuMTAuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTQuMDIuMDAjQXdhcmQgYnV0dG9ucyM2MC4xMC4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNC4wMy4wMCNDZWxlYnJhdGlvbiBjcm93bnMjNjAuMTAuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTQuMDQuMDAjUmV3YXJkIGpld2xlcnkjNjAuMTAuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTQuMDUuMDAjQ2xhc3Nyb29tIHJpYmJvbnMgb3Igcm9zZXR0ZXMjNjAuMTAuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTYuMDAuMDAjRWR1Y2F0aW9uYWwgY2VydGlmaWNhdGVzIG9yIGRpcGxvbWFzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjE2LjAxLjAwI0JpYmxlIGJhc2VkIGNlcnRpZmljYXRlcyM2MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNi4wMi4wMCNCbGFuayBjZXJ0aWZpY2F0ZXMjNjAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTYuMDMuMDAjQ2VydGlmaWNhdGUgZnJhbWVzIzYwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE2LjA0LjAwI0NlcnRpZmljYXRlIGhvbGRlcnMjNjAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTYuMDUuMDAjQ2VydGlmaWNhdGUgcmliYm9ucyM2MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNi4wNi4wMCNEaXBsb21hcyM2MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNi4wNy4wMCNGb3JlaWduIGxhbmd1YWdlIGNlcnRpZmljYXRlcyM2MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNi4wOC4wMCNHZW5lcmFsIHByYWlzZSBjZXJ0aWZpY2F0ZXMjNjAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTYuMDkuMDAjR3JhZGUgc3BlY2lmaWMgY2VydGlmaWNhdGVzIzYwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE2LjEwLjAwI1N1YmplY3Qgc3BlY2lmaWMgY2VydGlmaWNhdGVzIzYwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE3LjAwLjAwI1RlYWNoZXIgcmVzb3VyY2UgbWF0ZXJpYWxzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjE3LjAxLjAwI0Fzc2Vzc21lbnQgcmVzb3VyY2UgYm9va3MjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMDIuMDAjQ2FsZW5kYXJzIG9yIGN1dCBvdXRzIzYwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE3LjAzLjAwI0NoYXJhY3RlciBlZHVjYXRpb24gcmVzb3VyY2UgbWF0ZXJpYWxzIzYwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE3LjA0LjAwI0NsYXNzcm9vbSBhY3Rpdml0eSBib29rcyM2MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNy4wNS4wMCNDcml0aWNhbCB0aGlua2luZyByZXNvdXJjZSBtYXRlcmlhbHMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMDYuMDAjQ3Jvc3MgY3VycmljdWx1bSBndWlkZXMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMDcuMDAjQ3VycmljdWx1bSBndWlkZXMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMDguMDAjRmFicmljIGNoYXJ0cyM2MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNy4wOS4wMCNGbGFubmVsIGJvYXJkIGFpZHMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMTAuMDAjRWR1Y2F0b3IgZ2lmdHMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMTEuMDAjR3JhZGluZyBzdGFtcHMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMTIuMDAjSGFsbCBwYXNzZXMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMTMuMDAjSG9tZSBlZHVjYXRpb24gcmVzb3VyY2UgbWF0ZXJpYWxzIzYwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE3LjE0LjAwI0hvbWV3b3JrIGFzc2lnbm1lbnQgcmVzb3VyY2VzIzYwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE3LjE1LjAwI0lkZWEgYm9va3MjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMTYuMDAjTWFnbmV0aWMgYm9hcmQgYWlkcyM2MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNy4xNy4wMCNOYW1lIHBsYXRlcyBvciB0YWdzIzYwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE3LjE4LjAwI1RlYWNoZXIgcGxhbiBib29rcyM2MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNy4xOS4wMCNQb2NrZXQgY2hhcnRzIzYwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE3LjIwLjAwI1RlYWNoZXIgY29tbXVuaWNhdGlvbiBwb3N0Y2FyZHMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMjEuMDAjUHJvZmVzc2lvbmFsIHRlYWNoZXIgcmVzb3VyY2UgYm9va3MjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMjIuMDAjVGVhY2hlciBjbGFzc3Jvb20gZ3JhZGluZyBib29rcyM2MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNy4yMy4wMCNDbGFzc3Jvb20gc3R1ZGVudCBzZWF0aW5nIGNoYXJ0cyM2MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNy4yNC4wMCNTdWJzdGl0dXRlIHRlYWNoZXIgZm9sZGVycyBvciBmb3JtcyM2MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNy4yNS4wMCNUZWNobm9sb2d5IGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE3LjI2LjAwI1RlY2hub2xvZ3kgcmVmZXJlbmNlIGd1aWRlcyM2MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNy4yNy4wMCNUZXN0IHRha2luZyByZXNvdXJjZSBtYXRlcmlhbHMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMjguMDAjVGhlbWUgdW5pdCByZXNvdXJjZSBtYXRlcmlhbHMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTcuMjkuMDAjTWlkZGxlIG9yIGp1bmlvciBzY2hvb2wgdGVhY2hpbmcga2l0cyM2MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4xNy4zMC4wMCNMYWJvcmF0b3J5IG1hbnVhbHMjNjAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTguMDAuMDAjQ2h1cmNoIHNjaG9vbCBlZHVjYXRpb25hbCByZXNvdXJjZXMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTguMDEuMDAjQmlibGUgcmVmZXJlbmNlIGd1aWRlcyM2MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xOC4wMi4wMCNCaWJsZSBiYXNlZCBkcmFtYXMjNjAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTguMDMuMDAjQmlibGUgYmFzZWQgcmVzb3VyY2Ugb3IgYWN0aXZpdHkgYm9va3MjNjAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTguMDQuMDAjU3VuZGF5IHNjaG9vbCBhY3Rpdml0eSByZXNvdXJjZSBib29rcyM2MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xOC4wNS4wMCNWYWNhdGlvbiBiaWJsZSBzY2hvb2wgcmVzb3VyY2VzIzYwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE5LjAwLjAwI0FscGhhYmV0IHNraWxscyBtYXRlcmlhbHMgYW5kIHJlc291cmNlcyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4xOS4wMS4wMCNBbHBoYWJldCBhY3Rpdml0eSBib29rcyM2MC4xMC4xOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4xOS4wMi4wMCNBbHBoYWJldCBjdWJlcyM2MC4xMC4xOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4xOS4wMy4wMCNBbHBoYWJldCBkZXNrIHRhcGVzIzYwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE5LjA0LjAwI0FscGhhYmV0IGtpdHMjNjAuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMTkuMDUuMDAjQWxwaGFiZXQgbGV0dGVyIHRpbGVzIzYwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE5LjA2LjAwI0FscGhhYmV0IHBvc3RlciBjYXJkcyM2MC4xMC4xOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4xOS4wNy4wMCNBbHBoYWJldCByZWZlcmVuY2UgZ3VpZGVzIzYwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE5LjA4LjAwI0FscGhhYmV0IHJlc291cmNlIGJvb2tzIzYwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE5LjA5LjAwI0FscGhhYmV0IHN0YW1wcyM2MC4xMC4xOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4xOS4xMC4wMCNBbHBoYWJldCB3YWxsIGNhcmRzIzYwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjE5LjExLjAwI1RhY3RpbGUgYWxwaGFiZXRzIzYwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjIwLjAwLjAwI1dvcmQgYnVpbGRpbmcgcmVzb3VyY2UgbWF0ZXJpYWxzIGFuZCBhY2Nlc3NvcmllcyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMC4wMS4wMCNTcGVlY2ggbWlycm9yIzYwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIwLjAyLjAwI1NwZWxsaW5nIHJlc291cmNlIG1hdGVyaWFscyM2MC4xMC4yMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMC4wMy4wMCNXb3JkIGJ1aWxkaW5nIGFjdGl2aXR5IGJvb2tzIzYwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIwLjA0LjAwI1dvcmQgYnVpbGRpbmcga2l0cyM2MC4xMC4yMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMC4wNS4wMCNXb3JkIGJ1aWxkaW5nIHJlc291cmNlIGJvb2tzIzYwLjEwLjIwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIwLjA2LjAwI1dvcmQgYnVpbGRpbmcgdGlsZXMjNjAuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjAuMDcuMDAjV29yZCB3YWxscyM2MC4xMC4yMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMS4wMC4wMCNMYW5ndWFnZSBhcnRzIHJlc291cmNlIG1hdGVyaWFscyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMS4wMS4wMCNBZGplY3RpdmUgcmVzb3VyY2UgYm9va3MjNjAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjEuMDIuMDAjQWR2ZXJiIHJlc291cmNlIGJvb2tzIzYwLjEwLjIxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIxLjAzLjAwI0dyYW1tYXIgcmVzb3VyY2UgYm9va3MjNjAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjEuMDQuMDAjTm91biByZXNvdXJjZSBib29rcyM2MC4xMC4yMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMS4wNS4wMCNQdW5jdHV0YXRpb24gcmVzb3VyY2UgYm9va3MjNjAuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjEuMDYuMDAjVmVyYiByZXNvdXJjZSBib29rcyM2MC4xMC4yMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMi4wMC4wMCNQaG9uaWNzIHJlc291cmNlIG1hdGVyaWFscyBhbmQgYWNjZXNzb3JpZXMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjIuMDEuMDAjUGhvbmljcyBhY3Rpdml0eSBib29rcyM2MC4xMC4yMi4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMi4wMi4wMCNQaG9uaWNzIGRyaWxsIGNhcmRzIzYwLjEwLjIyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIyLjAzLjAwI1Bob25pY3Mga2l0IzYwLjEwLjIyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIyLjA0LjAwI1Bob25pY3MgcGljdHVyZSBjYXJkcyM2MC4xMC4yMi4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMi4wNS4wMCNQaG9uaWNzIHJlc291cmNlIGJvb2tzIzYwLjEwLjIyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIyLjA2LjAwI1Bob25pY3MgdGlsZXMjNjAuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjMuMDAuMDAjUmVhZGluZyBib29rcyBhbmQgcmVzb3VyY2VzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIzLjAxLjAwI1JlYWRpbmcgYWN0aXZpdHkgYm9va3MjNjAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjMuMDIuMDAjQmVnaW5uaW5nIHJlYWRpbmcgYm9va3MjNjAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjMuMDMuMDAjQmlibGUgYmFzZWQgY2hpbGRyZW5zIGxpdGVyYXR1cmUgYm9va3MjNjAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjMuMDQuMDAjQ2hpbGRyZW5zIGxpdGVyYXR1cmUgYm9va3MjNjAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjMuMDUuMDAjQ3JpdGljYWwgcmVhZGluZyBza2lsbHMjNjAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjMuMDYuMDAjRmxhbm5lbCBib2FyZHMjNjAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjMuMDcuMDAjUG9ldHJ5IHJlc291cmNlIGJvb2tzIzYwLjEwLjIzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIzLjA4LjAwI1JlYWRpbmcgY29tcHJlaGVuc2lvbiBtYXRlcmlhbHMjNjAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjMuMDkuMDAjUmVhZGluZyBkZXZlbG9wbWVudCBtYXRlcmlhbHMgb3Iga2l0cyM2MC4xMC4yMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4yMy4xMC4wMCNSZWFkaW5nIHJlc291cmNlIGJvb2tzIzYwLjEwLjIzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjIzLjExLjAwI1JlYWRpbmcgdGhlbWF0aWMgdW5pdHMjNjAuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjMuMTIuMDAjVm9jYWJ1bGFyeSBhY3Rpdml0eSBvciByZXNvdXJjZSBib29rcyM2MC4xMC4yMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNC4wMC4wMCNFYXJseSBsZWFybmluZyBtYXRoIGFuZCBjb3VudGluZyByZXNvdXJjZXMgYW5kIGFjY2Vzc29yaWVzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjI0LjAxLjAwI0FiYWN1cyBvciBjb3VudGluZyBmcmFtZXMjNjAuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjQuMDIuMDAjQWN0aXZpdHkgb3IgcmVzb3VyY2UgYm9va3MgZm9yIHdvcmtpbmcgd2l0aCBlYXJseSBtYXRoIG1hbmlwdWxhdGl2ZXMjNjAuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjQuMDMuMDAjQWN0aXZpdHkgY2FyZHMgZm9yIHdvcmtpbmcgd2l0aCBlYXJseSBtYXRoIG1hbmlwdWxhdGl2ZXMjNjAuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjQuMDQuMDAjQmVhZHMgb3IgYmVhZCBhY3Rpdml0eSBzZXRzIGZvciBlYXJseSBtYXRoIzYwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI0LjA1LjAwI0NvdW50ZXJzIG9yIGNvdW50ZXIgYWN0aXZpdHkgc2V0cyBmb3IgZWFybHkgbWF0aCM2MC4xMC4yNC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNC4wNi4wMCNDb3VudGluZyBvciBzb3J0aW5nIHRyYXlzIG9yIGJvd2xzIGZvciBlYXJseSBtYXRoIzYwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI0LjA3LjAwI0xhY2VzIG9yIGxhY2luZyBzZXRzIGZvciBlYXJseSBtYXRoIzYwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI0LjA4LjAwI0xpbmtpbmcgbWFuaXB1bGF0aXZlcyBvciBsaW5raW5nIGFjdGl2aXR5IHNldHMgZm9yIGVhcmx5IG1hdGgjNjAuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjQuMDkuMDAjTWF0aCBnYW1lIGNoaXBzIG9yIHRva2VucyM2MC4xMC4yNC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNC4xMC4wMCNOdW1iZXIgY2FyZHMjNjAuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjQuMTEuMDAjTnVtYmVyIGZvcm1zIG1vZGVscyBvciBhY2Nlc3NvcmllcyM2MC4xMC4yNC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNC4xMi4wMCNQZWdib2FyZHMgZm9yIGVhcmx5IG1hdGgjNjAuMTAuMjQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjQuMTMuMDAjUGVncyBmb3IgZWFybHkgbWF0aCM2MC4xMC4yNC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNC4xNC4wMCNTb3J0aW5nIG1hbmlwdWxhdGl2ZXMgb3Igc29ydGluZyBhY3Rpdml0eSBzZXRzIGZvciBlYXJseSBtYXRoIzYwLjEwLjI0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI1LjAwLjAwI0Jhc2ljIG1hdGggb3BlcmF0aW9ucyBhbmQgbnVtZXJhdGlvbiByZXNvdXJjZXMgYW5kIG1hdGVyaWFscyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNS4wMS4wMCNBZGRpdGlvbiBhY3Rpdml0eSBvciByZXNvdXJjZSBib29rcyM2MC4xMC4yNS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNS4wMi4wMCNCYXNpYyBvcGVyYXRpb25zIG1vZGVscyM2MC4xMC4yNS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNS4wMy4wMCNCYXNpYyBvcGVyYXRpb25zIHJlZmVyZW5jZSBndWlkZXMjNjAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjUuMDQuMDAjRGl2aXNpb24gYWN0aXZpdHkgb3IgcmVzb3VyY2UgYm9va3MjNjAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjUuMDUuMDAjTXVsdGlwbGljYXRpb24gYWN0aXZpdHkgb3IgcmVzb3VyY2UgYm9va3MjNjAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjUuMDYuMDAjU3VidHJhY3Rpb24gYWN0aXZpdHkgb3IgcmVzb3VyY2UgYm9va3MjNjAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjUuMDcuMDAjTnVtYmVyIGRlc2sgdGFwZXMjNjAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjUuMDguMDAjSHVuZHJlZHMgY2hhcnRzIG9yIGJvYXJkcyM2MC4xMC4yNS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNS4wOS4wMCNIdW5kcmVkcyBudW1iZXIgdGlsZXMjNjAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjUuMTAuMDAjTnVtYmVyIGtpdHMjNjAuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjUuMTEuMDAjTnVtYmVyIGxpbmVzIzYwLjEwLjI1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI1LjEyLjAwI051bWJlcmF0aW9uIGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjI1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI1LjEzLjAwI0RvbWlub2VzIzYwLjEwLjI1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI2LjAwLjAwI1Byb2JhYmlsaXR5IG9yIGNoYW5jZSBvciBkYXRhIG9yIHByb2JsZW0gc29sdmluZyB0ZWFjaGVyIHJlc291cmNlIG1hdGVyaWFscyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNi4wMS4wMCNUd28gc2lkZWQgY291bnRlcnMgb3IgdG9rZW5zIzYwLjEwLjI2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI2LjAyLjAwI1NwaW5uZXJzIzYwLjEwLjI2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI2LjAzLjAwI0RpY2Ugc2V0cyM2MC4xMC4yNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNi4wNC4wMCNQcm9iYWJpbGl0eSBhY3Rpdml0eSBvciByZXNvdXJjZSBib29rcyM2MC4xMC4yNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNi4wNS4wMCNMb2dpYyBhY3Rpdml0eSBvciByZXNvdXJjZSBib29rcyM2MC4xMC4yNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNi4wNi4wMCNBdHRyaWJ1dGUgYmxvY2tzIzYwLjEwLjI2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI2LjA3LjAwI0F0dHJpYnV0ZSBibG9ja3MgYWN0aXZpdHkgY2FyZHMjNjAuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjYuMDguMDAjQXR0cmlidXRlIGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjI2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI2LjA5LjAwI0dyYXBoaW5nIG1hdCM2MC4xMC4yNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNi4xMC4wMCNHcmFwaGluZyBhY3Rpdml0eSBvciByZXNvdXJjZSBib29rcyM2MC4xMC4yNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNi4xMS4wMCNMb2dpYyBnYW1lcyM2MC4xMC4yNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNi4xMi4wMCNBdHRyaWJ1dGUgc2V0cyBvciBraXRzIzYwLjEwLjI2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI2LjEzLjAwI1Byb2JsZW0gc29sdmluZyBhY3Rpdml0eSBvciByZXNvdXJjZSBib29rcyM2MC4xMC4yNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNi4xNC4wMCNQcm9ibGVtIHNvbHZpbmcgYWN0aXZpdHkgY2FyZHMjNjAuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjcuMDAuMDAjUGF0dGVybmluZyBvciBtYXRjaGluZyBvciBzcGF0aWFsIHBlcmNlcHRpb24gb3IgbG9naWNhbCB0aGlua2luZyB0ZWFjaGVyIHJlc291cmNlIG1hdGVyaWFscyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNy4wMS4wMCNQYXR0ZXJuIGJsb2NrcyBvciBwYXJxdWV0cnkgYmxvY2tzIGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI3LjAyLjAwI1BhdHRlcm4gYmxvY2tzIzYwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI3LjAzLjAwI1BhdHRlcm4gYmxvY2sgYWN0aXZpdHkgb3IgcGF0dGVybiBjYXJkcyM2MC4xMC4yNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNy4wNC4wMCNQYXR0ZXJuIGJsb2NrIGdhbWVzIG9yIGFjdGl2aXR5IHNldHMjNjAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjcuMDUuMDAjUGF0dGVybiBibG9jayBzdGlja2VycyM2MC4xMC4yNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNy4wNi4wMCNQYXR0ZXJuIGJsb2NrcyBtaXJyb3IjNjAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjcuMDcuMDAjUGF0dGVybiBibG9ja3MgY2hhcnRzIG9yIHBvc3RlcnMjNjAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjcuMDguMDAjUGFycXVldHJ5IGJsb2NrcyM2MC4xMC4yNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNy4wOS4wMCNQYXJxdWV0cnkgYmxvY2tzIGFjdGl2aXR5IG9yIHBhdHRlcm4gY2FyZHMjNjAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjcuMTAuMDAjUGFycXVldHJ5IGJsb2NrcyBhY3Rpdml0eSBzZXRzIzYwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI3LjExLjAwI1RhbmdyYW1zIGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI3LjEyLjAwI1RhbmdyYW0gYWN0aXZpdHkgb3IgcGF0dGVybiBjYXJkcyM2MC4xMC4yNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4yNy4xMy4wMCNUYW5ncmFtIHB1enpsZSBhY3Rpdml0eSBzZXRzIzYwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI3LjE0LjAwI1RhbmdyYW1zIHB1enpsZXMjNjAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjcuMTUuMDAjUGVudG9taW5vZXMgYWN0aXZpdHkgYW5kIHJlc291cmNlIGJvb2tzIzYwLjEwLjI3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI3LjE2LjAwI1BlbnRvbWlub2VzIGFjdGl2aXR5IG9yIHBhdHRlcm4gY2FyZHMjNjAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjcuMTcuMDAjUGVudG9taW5vZXMjNjAuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjcuMTguMDAjUGVudG9taW5vZXMgYWN0aXZpdHkgc2V0cyM2MC4xMC4yNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4yOC4wMC4wMCNCYXNlIHRlbiBhbmQgcGxhY2UgdmFsdWUgdGVhY2hlciByZXNvdXJjZSBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjguMDEuMDAjQmFzZSB0ZW4gYmxvY2tzIzYwLjEwLjI4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI4LjAyLjAwI0Jhc2UgdGVuIG9yIHBsYWNlIHZhbHVlIGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjI4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI4LjAzLjAwI0Jhc2UgdGVuIG9yIHBsYWNlIHZhbHVlIGFjdGl2aXR5IGNhcmRzIzYwLjEwLjI4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI4LjA0LjAwI0Jhc2UgdGVuIHJ1YmJlciBzdGFtcHMjNjAuMTAuMjguMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjguMDUuMDAjUGxhY2UgdmFsdWUgZ3JpZHMjNjAuMTAuMjguMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjguMDYuMDAjUGxhY2UgdmFsdWUgZ2FtZXMgb3IgYWN0aXZpdHkgc2V0cyM2MC4xMC4yOC4wMC4wMAotdW5zcHNjNyM2MC4xMC4yOC4wNy4wMCNQbGFjZSB2YWx1ZSBtb2RlbHMgb3IgYWNjZXNzb3JpZXMjNjAuMTAuMjguMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjkuMDAuMDAjTW9uZXkgYW5kIHRpbWUgdGVhY2hlciByZXNvdXJjZSBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjkuMDEuMDAjTW9uZXkgYWN0aXZpdHkgb3IgcmVzb3VyY2UgYm9va3MjNjAuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjkuMDIuMDAjQnVsayBiaWxscyBmb3IgdGhlIGNsYXNzcm9vbSM2MC4xMC4yOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yOS4wMy4wMCNCdWxrIGNvaW5zIGZvciB0aGUgY2xhc3Nyb29tIzYwLjEwLjI5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI5LjA0LjAwI0NvaW4gY3ViZXMgb3IgZGljZSM2MC4xMC4yOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yOS4wNS4wMCNNYWduZXRpYyBtb25leSM2MC4xMC4yOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yOS4wNi4wMCNPdmVyaGVhZCBiaWxscyM2MC4xMC4yOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yOS4wNy4wMCNPdmVyaGVhZCBjb2lucyM2MC4xMC4yOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yOS4wOC4wMCNNb25leSBwdXp6bGVzIzYwLjEwLjI5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI5LjA5LjAwI01vbmV5IHJ1YmJlciBzdGFtcHMjNjAuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjkuMTAuMDAjQ29pbiBiYW5rIzYwLjEwLjI5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI5LjExLjAwI01vbmV5IGdhbWVzIG9yIGtpdHMjNjAuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjkuMTIuMDAjUGxheSBjYXNoIHJlZ2lzdGVycyM2MC4xMC4yOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yOS4xMy4wMCNNb25leSByZWZlcmVuY2UgZ3VpZGVzIzYwLjEwLjI5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI5LjE0LjAwI1RpbWUgYWN0aXZpdHkgb3IgcmVzb3VyY2UgYm9va3MjNjAuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMjkuMTUuMDAjVGltZSBydWJiZXIgc3RhbXBzIzYwLjEwLjI5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjI5LjE2LjAwI1RpbWUga2l0cyM2MC4xMC4yOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4yOS4xNy4wMCNUaW1lIHJlZmVyZW5jZSBndWlkZXMjNjAuMTAuMjkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzAuMDAuMDAjRnJhY3Rpb25zIGFuZCBwZW50b21pbm9lcyBhbmQgZGVjaW1hbHMgdGVhY2hpbmcgYWlkcyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMC4wMS4wMCNGcmFjdGlvbiBjaXJjbGVzIG9yIHNxdWFyZXMjNjAuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzAuMDIuMDAjRGVjaW1hbCBzcXVhcmVzIzYwLjEwLjMwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMwLjAzLjAwI0ZyYWN0aW9uIGFjdGl2aXR5IGJvb2tzIzYwLjEwLjMwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMwLjA0LjAwI0ZyYWN0aW9uIGJhcnMjNjAuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzAuMDUuMDAjRnJhY3Rpb24gY2hhcnRzIzYwLjEwLjMwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMwLjA2LjAwI0ZyYWN0aW9uIGRpY2UjNjAuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzAuMDcuMDAjRnJhY3Rpb24gZ2FtZXMjNjAuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzAuMDguMDAjRnJhY3Rpb24ga2l0cyM2MC4xMC4zMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMC4wOS4wMCNGcmFjdGlvbiB0aWxlcyM2MC4xMC4zMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMC4xMC4wMCNGcmFjdGlvbnMgZGlzY3MjNjAuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzAuMTIuMDAjUGVudG9taW5vZXMgYWN0aXZpdHkgYm9vayM2MC4xMC4zMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMC4xMy4wMCNQZW50b21pbm9lcyBwYXR0ZXJuIGNhcmRzIzYwLjEwLjMwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMxLjAwLjAwI0dlb21ldHJ5IHRlYWNoZXIgcmVzb3VyY2UgbWF0ZXJpYWxzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMxLjAxLjAwI0dlb21ldHJ5IGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjMxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMxLjAyLjAwI0dlb21ldHJ5IGNoYXJ0cyBvciBwb3N0ZXJzIzYwLjEwLjMxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMxLjAzLjAwI0dlb2JvYXJkcyM2MC4xMC4zMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMS4wNC4wMCNHZW9tZXRyaWMgY29uc3RydWN0aW9uIHNldHMjNjAuMTAuMzEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzEuMDUuMDAjRG91YmxlIHNpZGVkIGdlb2JvYXJkcyM2MC4xMC4zMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMS4wNi4wMCNHZW9ib2FyZCBnYW1lcyBvciBhY3Rpdml0eSBraXRzIzYwLjEwLjMxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMxLjA3LjAwI0dlb2JvYXJkIHJ1YmJlciBiYW5kcyM2MC4xMC4zMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMS4wOC4wMCNHZW9ib2FyZHMgYWN0aXZpdHkgY2FyZHMjNjAuMTAuMzEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzEuMDkuMDAjR2VvbWV0cmljIGNoYWxrYm9hcmQgZHJhd2luZyBpbnN0cnVtZW50cyM2MC4xMC4zMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMS4xMC4wMCNHZW9tZXRyeSByZWZlcmVuY2UgZ3VpZGVzIzYwLjEwLjMxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMxLjExLjAwI0dlb01pcnJvciM2MC4xMC4zMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMS4xMi4wMCNHZW9tZXRyaWMgc29saWRzIG1vZGVscyM2MC4xMC4zMS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMi4wMC4wMCNBbGdlYnJhIHRlYWNoZXIgcmVzb3VyY2UgbWF0ZXJpYWxzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMyLjAxLjAwI0FsZ2VicmEgYWN0aXZpdHkgb3IgcmVzb3VyY2UgYm9va3MjNjAuMTAuMzIuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzIuMDIuMDAjQ2VudGltZXRlciBjdWJlcyM2MC4xMC4zMi4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMi4wMy4wMCNBbGdlYnJhIG9yIHByZSBhbGdlYnJhIHJlZmVyZW5jZSBndWlkZXMjNjAuMTAuMzIuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzIuMDQuMDAjQWxnZWJyYSBtb2RlbHMgb3IgYWNjZXNzb3JpZXMjNjAuMTAuMzIuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzMuMDAuMDAjUHJlY2FsY3VsdXMgYW5kIGNhbGN1bHVzIHRlYWNoZXIgcmVzb3VyY2UgbWF0ZXJpYWxzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMzLjAxLjAwI0NhbGN1bHVzIGFjdGl2aXR5IG9yIHJlc291cmNlcyBib29rcyM2MC4xMC4zMy4wMC4wMAotdW5zcHNjNyM2MC4xMC4zMy4wMi4wMCNQcmVjYWxjdWx1cyBvciBjYWxjdWx1cyByZWZlcmVuY2UgZ3VpZGVzIzYwLjEwLjMzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjMzLjAzLjAwI1ByZWNhbGN1bHVzIGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjMzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjM0LjAwLjAwI0dlb2dyYXBoeSBhbmQgbWFwIHNraWxscyByZXNvdXJjZXMgYW5kIGFjY2Vzc29yaWVzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjM0LjAxLjAwI0dvZWdyYXBoeSBjaGFydHMgb3IgcG9zdGVycyM2MC4xMC4zNC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNC4wMi4wMCNDb250aW5lbnRzIGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjM0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM0LjAzLjAwI0VsZWN0cm9uaWMgc29jaWFsIHN0dWRpZXMgbGVhcm5pbmcgYWlkcyM2MC4xMC4zNC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNC4wNC4wMCNHZW9ncmFwaHkgcmVmZXJlbmNlIGd1aWRlcyM2MC4xMC4zNC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNC4wNS4wMCNNYXAgcmFja3MjNjAuMTAuMzQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzQuMDYuMDAjTWFwIHN0ZW5jaWwga2l0cyM2MC4xMC4zNC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNC4wNy4wMCNQb3J0YWJsZSB3YWxsIG1hcHMjNjAuMTAuMzQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzQuMDguMDAjR2VvZ3JhcGh5IHJlc291cmNlIG9yIGFjdGl2aXR5IGJvb2tzIzYwLjEwLjM0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM1LjAwLjAwI1BvbGl0aWNhbCBzY2llbmNlIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjM1LjAxLjAwI0Vjb25vbWljcyBhY3Rpdml0eSBvciByZXNvdXJjZSBib29rcyM2MC4xMC4zNS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNS4wMi4wMCNHb3Zlcm5tZW50IGFjdGl2aXR5IG9yIHJlc291cmNlIGJvb2tzIzYwLjEwLjM1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM1LjAzLjAwI0dvdmVybm1lbnQgcmVmZXJlbmNlIGd1aWRlcyM2MC4xMC4zNS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNS4wNC4wMCNTdGF0ZSB0aGVtZSB1bml0cyM2MC4xMC4zNS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNi4wMC4wMCNNdWx0aWN1bHR1cmFsIGFjdGl2aXRpZXMgYW5kIHJlc291cmNlcyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNi4wMS4wMCNBbmNpZW50IGNpdmlsaXphdGlvbnMgcmVzb3VyY2VzIzYwLjEwLjM2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM2LjAyLjAwI0N1c3RvbXMgb3Igcml0dWFscyBvciB0cmFkaXRpb25zIHJlc291cmNlcyM2MC4xMC4zNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNi4wMy4wMCNFdGhuaWMgZGl2ZXJzaXR5IHJlc291cmNlcyM2MC4xMC4zNi4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNi4wNC4wMCNHZW5lYWxvZ3kgcmVzb3VyY2VzIzYwLjEwLjM2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM2LjA1LjAwI011bHRpY3VsdHVyYWwgaG9saWRheXMgcmVzb3VyY2VzIzYwLjEwLjM2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM2LjA2LjAwI011bHRpY3VsdHVyYWwgdGhlbWUgdW5pdHMjNjAuMTAuMzYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzcuMDAuMDAjRm9yZWlnbiBsYW5ndWFnZXMgcmVzb3VyY2VzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjM3LjAxLjAwI1Jlc291cmNlcyBmb3IgTGVhcm5pbmcgdG8gc3BlYWsgc3BhbmlzaCM2MC4xMC4zNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNy4wMi4wMCNSZXNvdXJjZXMgZm9yIExlYXJuaW5nIHRvIHNwZWFrIGZyZW5jaCM2MC4xMC4zNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNy4wMy4wMCNSZXNvdXJjZXMgZm9yIExlYXJuaW5nIHRvIHNwZWFrIGdlcm1hbiM2MC4xMC4zNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNy4wNC4wMCNSZXNvdXJjZXMgZm9yIExlYXJuaW5nIHRvIHNwZWFrIGVuZ2xpc2gjNjAuMTAuMzcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzcuMDUuMDAjUmVzb3VyY2VzIGZvciBMZWFybmluZyB0byBzcGVhayBsYXRpbiM2MC4xMC4zNy4wMC4wMAotdW5zcHNjNyM2MC4xMC4zNy4wNi4wMCNSZXNvdXJjZXMgZm9yIExlYXJuaW5nIHRvIHNwZWFrIGl0YWxpYW4jNjAuMTAuMzcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzguMDAuMDAjSGlzdG9yeSB0ZWFjaGluZyByZXNvdXJjZXMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzguMDEuMDAjQWZyaWNhbiBoaXN0b3J5IHJlc291cmNlIGJvb2tzIzYwLjEwLjM4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM4LjAyLjAwI0hpc3RvcnkgY2hhcnRzIG9yIHBvc3RlcnMjNjAuMTAuMzguMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzguMDMuMDAjRXVyb3BlYW4gaGlzdG9yeSByZXNvdXJjZSBib29rcyM2MC4xMC4zOC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zOC4wNC4wMCNIaXN0b3JpY2FsIG1hcHMjNjAuMTAuMzguMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzguMDUuMDAjSGlzdG9yeSB0aGVtZSB1bml0cyM2MC4xMC4zOC4wMC4wMAotdW5zcHNjNyM2MC4xMC4zOC4wNi4wMCNIaXN0b3J5IHBob3RvIGNhcmRzIzYwLjEwLjM4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM4LjA3LjAwI0hpc3RvcnkgcmVzb3VyY2UgYm9va3MjNjAuMTAuMzguMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzguMDguMDAjV29tYW5zIGhpc3RvcnkgcmVzb3VyY2VzIzYwLjEwLjM4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM4LjA5LjAwI1dvcmxkIGhpc3RvcnkgcmVzb3VyY2VzIzYwLjEwLjM4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjAwLjAwI0xpdmluZyBvcmdhbmlzbXMgYW5kIHByZXNlcnZlZCBzcGVjaW1lbnMgYW5kIHJlbGF0ZWQgbWF0ZXJpYWxzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjAxLjAwI0xpdmUgYW1waGliaWEjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMDIuMDAjUHJlc2VydmVkIGFtcGhpYmlhIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjAzLjAwI0FtcGhpYmlhIG1vZGVscyM2MC4xMC4zOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zOS4wNC4wMCNGdW5naSBjdWx0dXJlcyM2MC4xMC4zOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zOS4wNS4wMCNDdWx0dXJlIGtpdHMgb3Igc3VwcGxpZXMjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMDYuMDAjUHJvdG96b2FuIGN1bHR1cmVzIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjA3LjAwI0FxdWFyaWEgcGxhbnRzIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjA4LjAwI1RlcnJhcml1bSBwbGFudHMjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMDkuMDAjTGl2ZSBpbnZlcnRlYnJhdGVzIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjEwLjAwI1ByZXNlcnZlZCBpbnZlcnRlYnJhdGVzIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjExLjAwI0xpdmUgdmVydGVicmF0ZXMjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMTIuMDAjUHJlc2VydmVkIHZlcnRlYnJhdGVzIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjEzLjAwI0xpdmUgcmVwdGlsaWEjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMTQuMDAjUHJlc2VydmVkIHJlcHRpbGxhIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjE1LjAwI0Rpc3NlY3Rpb24ga2l0cyBvciBzdXBwbGllcyM2MC4xMC4zOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zOS4xOC4wMCNCaW9zcGhlcmVzIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjE5LjAwI0Jpb2xvZ3kgZXhwZXJpbWVudCBraXRzIG9yIHN1cHBsaWVzIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjIwLjAwI1N0YWluaW5nIGtpdHMgb3Igc3VwcGxpZXMjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMjEuMDAjUHJlc2VydmVkIGxpZmUgY3ljbGUgc3BlY2ltZW5zIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjIyLjAwI0Jpb2xvZ3kgcmVmZXJlbmNlIGd1aWRlcyM2MC4xMC4zOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zOS4yMy4wMCNTa2VsZXRvbiBvciBib25lIG9yIHNoZWxsIHNwZWNpbWVuIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjI0LjAwI0Jpb2xvZ3kgcmVzb3VyY2Ugb3IgYWN0aXZpdHkgYm9va3MjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMjUuMDAjQmlvbG9neSBzdHVkeSBvciBhY3Rpdml0eSBraXRzIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjI2LjAwI0Jpb2xvZ3kgY2hhcnRzIG9yIHBvc3RlcnMjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMjcuMDAjUHJlc2VydmVkIHBsYW50IGJvZHkgb3Igb3JnYW4gc3BlY2ltZW5zIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjI4LjAwI0Jpb2xvZ3kgYWN0aXZpdHkgb3IgcGhvdG8gY2FyZHMjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMjkuMDAjUGxhbnQgbGlmZSBjeWNsZSBzcGVjaW1lbnMjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMzAuMDAjQ29tYmluYXRpb24gb3JnYW5pc20gc3BlY2ltZW5zIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjMxLjAwI0FuaW1hbCBib2R5IG9yIGJvZHkgcGFydCBvciBvcmdhbiBzcGVjaW1lbnMjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuMzkuMzIuMDAjRWNvc3lzdGVtIGRpc3BsYXlzIzYwLjEwLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjM5LjMzLjAwI0h1bWFuIGJvZHkgb3IgYm9keSBwYXJ0IG9yIG9yZ2FuIHNwZWNpbWVucyM2MC4xMC4zOS4wMC4wMAotdW5zcHNjNyM2MC4xMC4zOS4zNC4wMCNUaXNzdWUgY3VsdHVyZXMjNjAuMTAuMzkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDAuMDAuMDAjQmlvdGVjaG5vbG9neSBhbmQgYmlvIGNoZW1pc3RyeSBhbmQgZ2VuZXRpY3MgYW5kIG1pY3JvYmlvbG9neSBhbmQgcmVsYXRlZCBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDAuMDEuMDAjRGVveHlyaWJvbnVjbGVpYyBhY2lkIEROQSBtb2RlbHMjNjAuMTAuNDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDAuMDIuMDAjRGVveHlyaWJvbnVjbGVpYyBhY2lkIEROQSBleHBlcmltZW50IGtpdHMjNjAuMTAuNDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDAuMDMuMDAjR2VuZXRpYyBib29rcyM2MC4xMC40MC4wMC4wMAotdW5zcHNjNyM2MC4xMC40MC4wNC4wMCNHZW5ldGljIGtpdHMjNjAuMTAuNDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDAuMDUuMDAjQmFjdGVyaWEgdGVhY2hpbmcga2l0cyM2MC4xMC40MC4wMC4wMAotdW5zcHNjNyM2MC4xMC40MC4wNi4wMCNCYWN0ZXJpYSB0ZXN0aW5nIHN1cHBsaWVzIzYwLjEwLjQwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjQwLjA3LjAwI0Vuenltb2xvZ3kga2l0cyBvciBzdXBwbGllcyM2MC4xMC40MC4wMC4wMAotdW5zcHNjNyM2MC4xMC40MC4wOC4wMCNQcm90ZWluIHRlc3Rpbmcga2l0cyBvciBzdXBwbGllcyM2MC4xMC40MC4wMC4wMAotdW5zcHNjNyM2MC4xMC40MS4wMC4wMCNCb2R5IHN5c3RlbXMgYW5kIHJlbGF0ZWQgbWF0ZXJpYWxzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjQxLjAxLjAwI0JvZHkgbW9kZWxzIzYwLjEwLjQxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjQxLjAyLjAwI0NlbGwgbW9kZWxzIzYwLjEwLjQxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjQxLjAzLjAwI0NlbGwgdGVhY2hpbmcga2l0cyM2MC4xMC40MS4wMC4wMAotdW5zcHNjNyM2MC4xMC40MS4wNC4wMCNCb2R5IHN5c3RlbXMgdGVhY2hpbmcga2l0cyM2MC4xMC40MS4wMC4wMAotdW5zcHNjNyM2MC4xMC40MS4wNS4wMCNCb2R5IHN5c3RlbXMgdGVhY2hpbmcgYWlkcyM2MC4xMC40MS4wMC4wMAotdW5zcHNjNyM2MC4xMC40Mi4wMC4wMCNXYXRlciB0ZXN0aW5nIGFuZCBjb25zZXJ2YXRpb24gYW5kIGVjb2xvZ3kjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDIuMDEuMDAjV2F0ZXIgdGVzdGluZyBjaGVtaWNhbHMjNjAuMTAuNDIuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDIuMDIuMDAjV2F0ZXIgdGVzdGluZyBhbmQgc2FtcGxpbmcga2l0cyM2MC4xMC40Mi4wMC4wMAotdW5zcHNjNyM2MC4xMC40Mi4wMy4wMCNXYXRlciBtb2RlbHMjNjAuMTAuNDIuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDIuMDQuMDAjV2F0ZXIgZWNvbG9neSBzdXBwbGllcyM2MC4xMC40Mi4wMC4wMAotdW5zcHNjNyM2MC4xMC40My4wMC4wMCNBc3Ryb25vbXkjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDMuMDEuMDAjQXN0cm9ub215IG1vZGVscyM2MC4xMC40My4wMC4wMAotdW5zcHNjNyM2MC4xMC40My4wMi4wMCNBc3Ryb25vbXkgY2hhcnRzIzYwLjEwLjQzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjQzLjAzLjAwI0FzdHJvbm9teSBzdHVkeSBraXRzIzYwLjEwLjQzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ0LjAwLjAwI0dlb2xvZ3kgYW5kIGVhcnRoIHNjaWVuY2UjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDQuMDEuMDAjUm9jayBzcGVjaW1lbiBzZXRzIzYwLjEwLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ0LjAyLjAwI1JvY2sgc3BlY2ltZW5zIzYwLjEwLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ0LjAzLjAwI0Zvc3NpbHMjNjAuMTAuNDQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDQuMDQuMDAjTGFuZGZvcm0gbW9kZWxzIzYwLjEwLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ0LjA1LjAwI0Zvc3NpbCBtb2RlbHMjNjAuMTAuNDQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDQuMDYuMDAjR2VvbG9neSB0b29scyBvciBmaWVsZCM2MC4xMC40NC4wMC4wMAotdW5zcHNjNyM2MC4xMC40NC4wNy4wMCNTdHJlYW0gdGFibGVzIzYwLjEwLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ0LjA4LjAwI0dlb2xvZ3kgc3R1ZHkga2l0cyM2MC4xMC40NC4wMC4wMAotdW5zcHNjNyM2MC4xMC40NS4wMC4wMCNDaGVtaXN0cnkgYW5kIGVsZWN0cm9jaGVtaXN0cnkgYW5kIG1pY3JvY2hlbWlzdHJ5IzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ1LjAxLjAwI1BlcmlvZGljIHRhYmxlIHBvc3RlcnMgb3IgYm9hcmRzIzYwLjEwLjQ1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ1LjAyLjAwI0NvbnN1bWVyIGFuYWx5c2lzIGtpdHMjNjAuMTAuNDUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDUuMDMuMDAjQ2hlbWlzdHJ5IGNsYXNzIGtpdHMjNjAuMTAuNDUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDUuMDQuMDAjQ2hlbWlzdHJ5IGRlbW9uc3RyYXRpb24ga2l0cyM2MC4xMC40NS4wMC4wMAotdW5zcHNjNyM2MC4xMC40NS4wNS4wMCNBdG9taWMgbW9kZWxzIzYwLjEwLjQ1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ1LjA2LjAwI01vbGVjdWxhciBtb2RlbHMjNjAuMTAuNDUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDUuMDcuMDAjRWxlY3Ryb2NoZW1pY2FsIGRlbW9uc3RyYXRpb24gdG9vbHMjNjAuMTAuNDUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDUuMDguMDAjRWxlY3Ryb2NoZW1pY2FsIGtpdHMjNjAuMTAuNDUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDUuMDkuMDAjRnVlbCBjZWxscyM2MC4xMC40NS4wMC4wMAotdW5zcHNjNyM2MC4xMC40NS4xMC4wMCNNaWNyb2NoZW1pc3RyeSBraXRzIzYwLjEwLjQ1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ1LjExLjAwI01pY3JvY2hlbWlzdHJ5IHRvb2xzIzYwLjEwLjQ1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ2LjAwLjAwI01lY2hhbmljYWwgcGh5c2ljcyBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDYuMDEuMDAjRm9yY2UgdGFibGVzIzYwLjEwLjQ2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ2LjAyLjAwI0dyYXZpdHkgbW9kZWxzIG9yIG1vZGVsIHNldHMjNjAuMTAuNDYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDYuMDQuMDAjSW5jbGluZWQgcGxhbmVzIzYwLjEwLjQ2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ2LjA1LjAwI0ZyaWN0aW9uIGFwcGFyYXR1cyM2MC4xMC40Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC40Ni4wNi4wMCNQaHlzaWMgY2FycyM2MC4xMC40Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC40Ni4wNy4wMCNQZW5kdWx1bSBhcHBhcmF0dXMjNjAuMTAuNDYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDYuMDguMDAjVG9ycXVlIGFwcGFyYXR1cyM2MC4xMC40Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC40Ni4wOS4wMCNQcm9qZWN0aWxlIGFwcGFyYXR1cyM2MC4xMC40Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC40Ni4xMC4wMCNBaXIgdGFibGVzIzYwLjEwLjQ2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ2LjExLjAwI0FpciBhcHBhcmF0dXMjNjAuMTAuNDYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDYuMTIuMDAjTGlnaHQgb3IgcGhvdG8gYXBwYXJhdHVzIzYwLjEwLjQ2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ3LjAwLjAwI0VuZXJneSBhbmQgcG93ZXIgcGh5c2ljcyBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDcuMDEuMDAjU29sYXIgY29sbGVjdGluZyBkZXZpY2VzIzYwLjEwLjQ3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ3LjAyLjAwI1NvbGFyIGtpdHMjNjAuMTAuNDcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDcuMDMuMDAjRW5lcmd5IGRlbW9uc3RyYXRpb24ga2l0cyM2MC4xMC40Ny4wMC4wMAotdW5zcHNjNyM2MC4xMC40Ny4wNC4wMCNFbmVyZ3kgY2xhc3Mga2l0cyM2MC4xMC40Ny4wMC4wMAotdW5zcHNjNyM2MC4xMC40Ny4wNS4wMCNNYXR0ZXIgZGVtb25zdHJhdGlvbiBraXRzIzYwLjEwLjQ3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ3LjA2LjAwI01hdHRlciBjbGFzcyBraXRzIzYwLjEwLjQ3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ3LjA3LjAwI01vbm9tZXRlcnMjNjAuMTAuNDcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDcuMDguMDAjR2FzIGRpZmZ1c2lvbiBhcHBhcmF0dXMjNjAuMTAuNDcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDguMDAuMDAjV2F2ZSBhbmQgc291bmQgcGh5c2ljcyBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDguMDEuMDAjV2F2ZSBnZW5lcmF0b3JzIzYwLjEwLjQ4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ4LjAyLjAwI1dhdmUgdGFua3MjNjAuMTAuNDguMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDguMDMuMDAjV2F2ZSBzcHJpbmdzIzYwLjEwLjQ4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ4LjA0LjAwI1dhdmUgZGVtb25zdHJhdGlvbiBzZXRzIzYwLjEwLjQ4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ4LjA1LjAwI1R1bmluZyBmb3JrcyM2MC4xMC40OC4wMC4wMAotdW5zcHNjNyM2MC4xMC40OC4wNi4wMCNEb3BwbGVyIGRlbW9uc3RyYXRvcnMjNjAuMTAuNDguMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDguMDcuMDAjUmVzb25hbmNlIGFwcGFyYXR1cyM2MC4xMC40OC4wMC4wMAotdW5zcHNjNyM2MC4xMC40OC4wOC4wMCNTb3VuZCBtZXRlcnMjNjAuMTAuNDguMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDguMDkuMDAjV2F2ZSBhcHBhcmF0dXMjNjAuMTAuNDguMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDguMTAuMDAjU3BlY3Ryb3Njb3BlcyM2MC4xMC40OC4wMC4wMAotdW5zcHNjNyM2MC4xMC40OC4xMS4wMCNTcGVjdHJ1bSBjaGFydHMjNjAuMTAuNDguMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDguMTIuMDAjTGlnaHQgZGVtb25zdHJhdGlvbiBraXRzIzYwLjEwLjQ4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ4LjEzLjAwI0NvbG9yIGNoYXJ0cyBvciBzYW1wbGVzIzYwLjEwLjQ4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ4LjE0LjAwI1JhZGlvbWV0ZXIjNjAuMTAuNDguMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDguMTUuMDAjUmVmbGVjdGlvbiBvciByZWZyYWN0aW9uIGFwcGFyYXR1cyM2MC4xMC40OC4wMC4wMAotdW5zcHNjNyM2MC4xMC40OC4xNi4wMCNPcHRpY3Mgc2V0cyBvciBraXRzIzYwLjEwLjQ4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ5LjAwLjAwI0VsZWN0cmljYWwgcGh5c2ljcyBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDkuMDEuMDAjVmFuIGRlZ3JhZmYgZ2VuZXJhdG9ycyM2MC4xMC40OS4wMC4wMAotdW5zcHNjNyM2MC4xMC40OS4wMi4wMCNFbGVjdHJvc3RhdGljIGFwcGFyYXR1cyM2MC4xMC40OS4wMC4wMAotdW5zcHNjNyM2MC4xMC40OS4wMy4wMCNFbGVjdHJvc3RhdGljIGtpdHMjNjAuMTAuNDkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDkuMDQuMDAjRWxlY3RyaWNpdHkga2l0cyM2MC4xMC40OS4wMC4wMAotdW5zcHNjNyM2MC4xMC40OS4wNS4wMCNFbGVjdHJpY2l0eSBkZW1vbnN0cmF0aW9uIGJvYXJkcyM2MC4xMC40OS4wMC4wMAotdW5zcHNjNyM2MC4xMC40OS4wNi4wMCNCYXR0ZXJ5IGtpdHMjNjAuMTAuNDkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDkuMDcuMDAjSGFuZCBoZWxkIGdlbmVyYXRvcnMjNjAuMTAuNDkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNDkuMDguMDAjRWxlY3Ryb21hZ25ldGljIGFwcGFyYXR1cyM2MC4xMC40OS4wMC4wMAotdW5zcHNjNyM2MC4xMC40OS4wOS4wMCNNYWduZXRpc20gYXBwYXJhdHVzIzYwLjEwLjQ5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ5LjEwLjAwI0VsZWN0cm9tYWduZXRzIzYwLjEwLjQ5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ5LjExLjAwI0VsZWN0cmljIGJlbGxzIzYwLjEwLjQ5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjQ5LjEyLjAwI0VsZWN0cmljIGxlYWQgd2lyZXMgb3IgY2FibGVzIzYwLjEwLjQ5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjUwLjAwLjAwI051Y2xlYXIgcGh5c2ljcyBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTAuMDEuMDAjUmFkaW9hY3Rpdml0eSBzZXRzIzYwLjEwLjUwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUwLjAyLjAwI0dlaWdlciBjb3VudGVycyM2MC4xMC41MC4wMC4wMAotdW5zcHNjNyM2MC4xMC41MC4wMy4wMCNFbGVjdHJvbiBhcHBhcmF0dXMjNjAuMTAuNTAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTAuMDQuMDAjUmFkaWF0aW9uIHdhcm5pbmcgc2lnbnMjNjAuMTAuNTAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTAuMDUuMDAjTnVjbGVhciBwaHlzaWNzIHRyYW5zcGFyZW5jaWVzIzYwLjEwLjUwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUwLjA2LjAwI051Y2xlYXIgcGh5c2ljcyBjaGFydHMjNjAuMTAuNTAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTEuMDAuMDAjUm9ja2V0cnkgYW5kIGZsaWdodCBtYXRlcmlhbHMgYW5kIHN1cHBsaWVzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUxLjAxLjAwI1JvY2tldCBzZXRzIzYwLjEwLjUxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUxLjAyLjAwI0xhdW5jaGluZyBhcHBhcmF0dXMjNjAuMTAuNTEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTEuMDMuMDAjQWx0aXR1ZGUgbWVhc3VyaW5nIGRldmljZXMjNjAuMTAuNTEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTEuMDQuMDAjQWlycGxhbmUga2l0cyM2MC4xMC41MS4wMC4wMAotdW5zcHNjNyM2MC4xMC41Mi4wMC4wMCNMaWZlIHNraWxscyByZXNvdXJjZXMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTIuMDEuMDAjQnVpbGRpbmcgbGlzdGVuaW5nIHNraWxscyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Mi4wMC4wMAotdW5zcHNjNyM2MC4xMC41Mi4wMi4wMCNTdHVkeSBza2lsbHMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTIuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTIuMDMuMDAjVGVzdCBwcmVwYXJhdGlvbiBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Mi4wMC4wMAotdW5zcHNjNyM2MC4xMC41My4wMC4wMCNDYXJlZXIgZWR1Y2F0aW9uIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUzLjAxLjAwI0NhcmVlciBlZHVjYXRpb24gb3IgcGxhbm5pbmcgb3IgZGVjaXNpb24gbWFraW5nIHNraWxscyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41My4wMC4wMAotdW5zcHNjNyM2MC4xMC41My4wMi4wMCNCYXNpYyBqb2Igc2tpbGxzIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjUzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUzLjAzLjAwI0pvYiBzZWFyY2ggc2tpbGxzIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjUzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUzLjA0LjAwI1RpbWUgbWFuYWdlbWVudCBza2lsbHMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTMuMDUuMDAjSW50ZXJ2aWV3IHNraWxscyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41My4wMC4wMAotdW5zcHNjNyM2MC4xMC41My4wNi4wMCNSZXN1bWUgc2tpbGxzIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjUzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUzLjA3LjAwI1dvcmsgZXRoaWNzIG9yIGF0dGl0dWRlIHRyYWluaW5nIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjUzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUzLjA4LjAwI1RlYW0gYnVpbGRpbmcgc2tpbGxzIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjUzLjAwLjAwCi11bnNwc2M3IzYwLjEwLjUzLjA5LjAwI0J1c2luZXNzIGV0aXF1ZXR0ZSBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41My4wMC4wMAotdW5zcHNjNyM2MC4xMC41NC4wMC4wMCNDb25zdW1lciBlY29ub21pY3MgYW5kIG1vbmV5IG1hbmFnZW1lbnQgYW5kIGluZGVwZW5kZW50IGxpdmluZyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC41NC4wMS4wMCNQZXJzb25hbCBmaW5hbmNlIG9yIG1vbmV5IG1hbmFnZW1lbnQgZWR1Y2F0aW9uIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjAyLjAwI1Nob3BwaW5nIG9yIGNvbnN1bWVyIHNraWxscyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41NC4wMC4wMAotdW5zcHNjNyM2MC4xMC41NC4wMy4wMCNJbmRlcGVuZGVudCBsaXZpbmcgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTQuMDQuMDAjVW5kZXJzdGFuZGluZyBjb25zdW1lciBjcmVkaXQgb3IgbG9hbnMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTQuMDUuMDAjSW5zdXJhbmNlIGNvdmVyYWdlIG9yIGluc3VyYW5jZSBjb21wYXJpc29uIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjA2LjAwI0hvbWUgYnV5aW5nIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjA3LjAwI0FwYXJ0bWVudCByZW50YWwgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTQuMDguMDAjQ2FyIGJ1eWluZyBlZHVjYXRpb25hbCBhaWRzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjA5LjAwI0JyYW5kIG1hcmtldGluZyBvciBhZHZlcnRpc2luZyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41NC4wMC4wMAotdW5zcHNjNyM2MC4xMC41NC4xMC4wMCNSZWxhdGlvbnNoaXAgYnVpbGRpbmcgb3IgZmFtaWx5IGxpZmUgc2tpbGxzIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjExLjAwI0RldmVsb3Bpbmcgc2VsZiBjb25jZXB0IGFuZCBzZWxmIGVzdGVlbSBpbnN0dWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjEyLjAwI1Zpb2xlbmNlIGF2b2lkYW5jZSBlZHVjYXRpb24gb3IgdmlvbGVuY2UgcHJldmVudGlvbiBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41NC4wMC4wMAotdW5zcHNjNyM2MC4xMC41NC4xMy4wMCNBbmdlciByZXNvbHV0aW9uIHRyYWluaW5nIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjE0LjAwI1RlYWNoaW5nIHBhdGllbmNlIHNraWxscyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41NC4wMC4wMAotdW5zcHNjNyM2MC4xMC41NC4xNS4wMCNUb2xlcmFuY2UgdHJhaW5pbmcgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTQuMTYuMDAjUGVyc29uYWwgc2FmZXR5IGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjE3LjAwI1BlcnNvbmFsIGNvbmZsaWN0IHJlc29sdXRpb24gaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTQuMTguMDAjUHJhY3RpY2FsIHRlZW4gYWR2aWNlIGd1aWRlcyM2MC4xMC41NC4wMC4wMAotdW5zcHNjNyM2MC4xMC41NC4xOS4wMCNEZXZlbG9waW5nIHNvY2lhbCBza2lsbHMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTQuMjAuMDAjTWFubmVycyBvciBldGlxdWV0dGUgb3IgY291cnRlc3kgaW5zdHJ1Y3Rpb25hbCBhaWRzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjIxLjAwI1VuZGVyc3RhbmRpbmcgb3IgZGVhbGluZyB3aXRoIGN1bHR1cmFsIGRpdmVyc2l0eSBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41NC4wMC4wMAotdW5zcHNjNyM2MC4xMC41NC4yMi4wMCNIb3cgdG8gcmVhZCBib2R5IGxhbmd1YWdlIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjIzLjAwI0RldmVsb3BpbmcgcmVzaWxpZW5jeSBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41NC4wMC4wMAotdW5zcHNjNyM2MC4xMC41NC4yNC4wMCNVbmRlcnN0YW5kaW5nIGNvbW11bml0eSBzZXJ2aWNlIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjI1LjAwI0RldmVsb3BpbmcgcmVmdXNhbCBza2lsbHMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTQuMjYuMDAjUmVzcG9uc2liaWxpdHkgb3IgRGRlY2lzaW9uIG1ha2luZyBza2lsbHMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTQuMjcuMDAjVW5kZXJzdGFuZGluZyB0ZWVucyBsZWdhbCByaWdodHMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTQuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTQuMjguMDAjUmVwZXJjdXNzaW9ucyBvZiBkcm9wcGluZyBvdXQgb2Ygc2Nob29sIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU0LjI5LjAwI1JhY2UgcmVsYXRpb25zIHZpZGVvcyM2MC4xMC41NC4wMC4wMAotdW5zcHNjNyM2MC4xMC41NS4wMC4wMCNIb21lIGFuZCBpbnRlcmlvciBkZXNpZ24gaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTUuMDEuMDAjRmVuZyBzaHVpIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU1LjAyLjAwI0luc3RydWN0aW9uYWwgbWF0ZXJpYWxzIGZvciB1c2luZyBjb2xvciBvciBwYWludCBmb3IgaG9tZSBkZWNvcmF0aW9uIzYwLjEwLjU1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU1LjAzLjAwI0luc3RydWN0aW9uYWwgbWF0ZXJpYWxzIGZvciBob21lIHBsYW5uaW5nIG9yIGRlc2lnbiM2MC4xMC41NS4wMC4wMAotdW5zcHNjNyM2MC4xMC41NS4wNC4wMCNMYW5kc2NhcGluZyBkZXNpZ24gaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTUuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTUuMDUuMDAjSW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMgZm9yIGhvbWUgZGVjb3JhdGluZyBvciBmdXJuaXNoaW5nIzYwLjEwLjU1LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjAwLjAwI0hlYWx0aCBlZHVjYXRpb24gYW5kIG51dHJpdGlvbiBhbmQgZm9vZCBwcmVwYXJhdGlvbiBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4wMS4wMCNEaWV0YXJ5IGd1aWRlbGluZXMgb3IgYmFsYW5jZWQgZGlldHMgZWR1Y2F0aW9uYWwgcmVzb3VyY2VzIzYwLjEwLjU2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjAyLjAwI051dHJpdGlvbmFsIGN1cnJpY3VsdW0gbWVudSBwbGFubmluZyBza2lsbHMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTYuMDMuMDAjVW5kZXJzdGFuZGluZyBudXRyaXRpb24gbGFiZWxpbmcgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTYuMDQuMDAjRm9vZCBzaG9wcGluZyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4wNS4wMCNIZWFsdGh5IGZvb2QgY2hvaWNlcyBkZW1vbnN0cmF0aW9uIHVuaXRzIzYwLjEwLjU2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjA2LjAwI1VuZGVyc3RhbmRpbmcgdGhlIGVmZmVjdHMgb2YgZGlldGFyeSBmYXQgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTYuMDcuMDAjVW5kZXJzdGFuZGluZyB2ZWdldGFyaWFuaXNtIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjA4LjAwI1JlY2lwZSBib29rcyBvciBjb29rIGJvb2tzIzYwLjEwLjU2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjA5LjAwI0VhdGluZyBkaXNvcmRlcnMgZWR1Y2F0aW9uIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjEwLjAwI1dlaWdodCBjb250cm9sIG9yIGV4ZXJjaXNlIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjExLjAwI0tpdGNoZW4gbWVhc3VyZW1lbnRzIG9mIHNvbGlkcyBvciBsaXF1aWRzIGluc3RydWN0aW9uYWwgYWlkcyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4xMi4wMCNLaXRjaGVuIGVxdWl2YWxhbnRzIG9yIGtpdGNoZW4gbWF0aCBpbnN0cnVjdGlvbmFsIGFpZHMjNjAuMTAuNTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTYuMTMuMDAjS2l0Y2hlbiB1dGVuc2lscyBpbnN0cnVjdGlvbmFsIGFpZHMjNjAuMTAuNTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTYuMTQuMDAjS2l0Y2hlbiBzYWZldHkgb3Igc2FuaXRhdGlvbiBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4xNS4wMCNGb29kIHNhZmV0eSBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4xNi4wMCNGb29kIHNjaWVuY2UgYWN0aXZpdGllcyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4xNy4wMCNDb29raW5nIHNraWxscyBpbnN0cnVjdGlvbiBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4xOC4wMCNUYWJsZSBtYW5uZXJzIG9yIGVhdGluZyBldGlxdWV0dGUgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTYuMTkuMDAjVGFibGUgc2V0dGluZyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4yMC4wMCNGb29kIHNlcnZpY2UgdHJhaW5pbmcgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTYuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTYuMjEuMDAjRHJ1ZyBvciB0b2JhY2NvIG9yIGFsY29ob2wgYWJ1c2UgZWR1Y2F0aW9uIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjIyLjAwI1Ntb2tpbmcgU2ltdWxhdG9ycyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4yMy4wMCNVbmRlcnN0YW5kaW5nIGFkZGljdGlvbiBvciBhZGRpY3Rpb24gYXZvaWRhbmNlIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjI0LjAwI1RlZW4gZGVwcmVzc2lvbiBzeW1wdG9tcyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ni4yNS4wMCNUZWVuIHN1aWNpZGUgYXZvaWRhbmNlIHRyYWluaW5nIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU2LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU2LjI2LjAwI0NvcGluZyB3aXRoIHN0cmVzcyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41Ni4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ny4wMC4wMCNNZW1vcnkgYm9va3MgYW5kIHN1cHBsaWVzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjU3LjAxLjAwI01lbW9yeSBib29rcyM2MC4xMC41Ny4wMC4wMAotdW5zcHNjNyM2MC4xMC41Ny4wMi4wMCNNZW1vcnkgYm9vayBwb3N0cyBvciBleHRlbmRlcnMjNjAuMTAuNTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTcuMDMuMDAjTWVtb3J5IGJvb2sgcGFwZXIjNjAuMTAuNTcuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTcuMDQuMDAjQWNpZCBmcmVlIG1lbW9yeSBib29rIGdsdWUgc3RpY2tzIzYwLjEwLjU3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU3LjA1LjAwI0FjaWQgZnJlZSBtZW1vcnkgYm9vayB0YXBlIzYwLjEwLjU3LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU4LjAwLjAwI0Nsb3RoaW5nIGFuZCB0ZXh0aWxlIGRlc2lnbiBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC41OC4wMS4wMCNTZXdpbmcgc2tpbGxzIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU4LjAyLjAwI1Nld2luZyBwcm9qZWN0IG1hdGVyaWFscyM2MC4xMC41OC4wMC4wMAotdW5zcHNjNyM2MC4xMC41OC4wMy4wMCNVbmRlcnN0YW5kaW5nIGNsb3RoaW5nIGNvbnN0cnVjdGlvbiBvciB3b3JrbWFuc2hpcCBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OC4wMC4wMAotdW5zcHNjNyM2MC4xMC41OC4wNC4wMCNDbG90aGluZyBkZXNpZ24gb3IgZmFzaGlvbiBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OC4wMC4wMAotdW5zcHNjNyM2MC4xMC41OC4wNS4wMCNQZXJzb25hbCBjb2xvciBhbmFseXNpcyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OC4wMC4wMAotdW5zcHNjNyM2MC4xMC41OC4wNi4wMCNGYXNoaW9uIG1lcmNoYW5kaXNpbmcgb3IgcmV0YWlsIGZ1bmRhbWVudGFscyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OC4wMC4wMAotdW5zcHNjNyM2MC4xMC41OC4wNy4wMCNTY2llbmNlIG9mIGZhYnJpY3Mgb3IgZmliZXJzIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU4LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU4LjA4LjAwI0Nsb3RoaW5nIGNhcmUgb3IgbWFpbnRlbmFuY2Ugb3IgbGF1bmRlcmluZyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OC4wMC4wMAotdW5zcHNjNyM2MC4xMC41OC4wOS4wMCNNYXRlcmlhbHMgZm9yIHRlYWNoaW5nIHRoZSBhcnQgb2YgZGVzaWduIGNvbG9yIG9uIGZhYnJpYyM2MC4xMC41OC4wMC4wMAotdW5zcHNjNyM2MC4xMC41OC4xMC4wMCNGYWJyaWMgZHllcyBvciBwYWludHMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTguMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTguMTEuMDAjUXVpbHRpbmcgcHJvamVjdHMgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTguMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTkuMDAuMDAjRGF0aW5nIGFuZCBzZXggYW5kIHRlZW4gcHJlZ25hbmN5IGFuZCBwYXJlbnRpbmcgc2tpbGxzIGFuZCBjaGlsZCBkZXZlbG9wbWVudCBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC41OS4wMS4wMCNTZXggZWR1Y2F0aW9uIG9yIHNleHVhbGx5IHRyYW5zbWl0dGVkIGRpc2Vhc2UgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTkuMDIuMDAjUHJlbmF0YWwgbnV0cml0aW9uIHJlc291cmNlcyBvciBmZXRhbCBhYnVzZSBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OS4wMC4wMAotdW5zcHNjNyM2MC4xMC41OS4wMy4wMCNQYXJlbnRpbmcgc2tpbGxzIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU5LjA0LjAwI0NoaWxkIGRldmVsb3BtZW50IGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU5LjA1LjAwI1VuZGVyc3RhbmRpbmcgZGF0ZSByYXBlIG9yIGRhdGluZyBza2lsbHMgb3IgaGFyYXNzbWVudCBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OS4wMC4wMAotdW5zcHNjNyM2MC4xMC41OS4wNi4wMCNDaGlsZGJpcnRoIGVkdWNhdGlvbiBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OS4wMC4wMAotdW5zcHNjNyM2MC4xMC41OS4wNy4wMCNQcmVnbmFuY3kgZnJvbSBjb25jZXB0aW9uIHRocm91Z2ggYmlydGggaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTkuMDguMDAjVW5kZXJzdGFuZGluZyB0aGUgcmlza3Mgb2YgYmlydGggZGVmZWN0cyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OS4wMC4wMAotdW5zcHNjNyM2MC4xMC41OS4wOS4wMCNQcmVnbmFuY3kgc2ltdWxhdG9ycyM2MC4xMC41OS4wMC4wMAotdW5zcHNjNyM2MC4xMC41OS4xMC4wMCNJbmZhbnQgc2ltdWxhdG9ycyBhbmQgYWNjZXNzb3JpZXMjNjAuMTAuNTkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTkuMTEuMDAjSW5mYW50IGNhcmUgdHJhaW5pbmcgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTkuMTIuMDAjVW5kZXJzdGFuZGluZyBwaHlzaWNhbCBvciBlbW90aW9uYWwgY2hpbGQgYWJ1c2UgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTkuMTMuMDAjRGlzY2lwbGluZSBza2lsbCBlZHVjYXRpb24gaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMgZm9yIHBhcmVudHMjNjAuMTAuNTkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTkuMTQuMDAjSG9tZSBzYWZldHkgb3IgY2hpbGRwcm9vZmluZyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OS4wMC4wMAotdW5zcHNjNyM2MC4xMC41OS4xNS4wMCNDYXJkaW8gcHVsbW9uYXJ5IHJlc3VzaXRhdGlvbiBvciAgYmFzaWMgbGlmZSBzdXBwb3J0IGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU5LjE2LjAwI1VuZGVyc3RhbmRpbmcgY2hpbGRob29kIGlsbG5lc3NlcyBpbnN0cnVjdGlvbmFsIG1hdGVyaWFscyM2MC4xMC41OS4wMC4wMAotdW5zcHNjNyM2MC4xMC41OS4xNy4wMCNVbmRlcnN0YW5kaW5nIGF0dGVudGlvbiBkZWZpY2l0IGh5cGVyYWN0aXZpdHkgZGlzb3JkZXIgaW5zdHJ1Y3Rpb25hbCBtYXRlcmlhbHMjNjAuMTAuNTkuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNTkuMTguMDAjQ2hpbGQgY2FyZWdpdmVyIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjU5LjE5LjAwI0JhYnlzaXR0aW5nIGluc3RydWN0aW9uYWwgbWF0ZXJpYWxzIzYwLjEwLjU5LjAwLjAwCi11bnNwc2M3IzYwLjEwLjYwLjAwLjAwI0N1cnJpY3VsdW0gZ3VpZGVzIGFuZCBwcm9qZWN0cyBhbmQgYWN0aXZpdGllcyBhbmQgbGVzc29ucyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC42MC4wMS4wMCNNaWRkbGUgc2Nob29sIGN1cnJpY3VsdW0gcmVzb3VyY2Ugb3IgaWRlYSBib29rcyM2MC4xMC42MC4wMC4wMAotdW5zcHNjNyM2MC4xMC42MC4wMi4wMCNIaWdoIFNjaG9vbCBjdXJyaWN1bHVtIHJlc291cmNlIG9yIGlkZWEgYm9va3MjNjAuMTAuNjAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNjAuMDMuMDAjSG9tZSBlY29ub21pY3MgaW5kZXBlbmRlbnQgc3R1ZHkgcHJvamVjdHMjNjAuMTAuNjAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNjAuMDQuMDAjSG9tZSBlY29ub21pY3MgcHJvamVjdHMgb3IgYWN0aXZpdGllcyByZXNvdXJjZXMgb3IgZ3VpZGVzIzYwLjEwLjYwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjYxLjAwLjAwI1ZvY2F0aW9uYWwgdGVhY2hpbmcgYWlkcyBhbmQgbWF0ZXJpYWxzIzYwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEwLjYxLjAxLjAwI0F1dG9tb3RpdmUgdGVhY2hpbmcgYWlkcyBvciBtYXRlcmlhbHMjNjAuMTAuNjEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNjEuMDIuMDAjQ29uc3RydWN0aW9uIHRlYWNoaW5nIGFpZHMgb3IgbWF0ZXJpYWxzIzYwLjEwLjYxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjYxLjAzLjAwI0RyYWZ0aW5nIG9yIGRlc2lnbiB0ZWFjaGluZyBhaWRzIG9yIG1hdGVyaWFscyM2MC4xMC42MS4wMC4wMAotdW5zcHNjNyM2MC4xMC42MS4wNC4wMCNFbGVjdHJvbmljcyBvciBlbGVjdHJpY2l0eSB0ZWFjaGluZyBhaWRzIG9yIG1hdGVyaWFscyM2MC4xMC42MS4wMC4wMAotdW5zcHNjNyM2MC4xMC42MS4wNS4wMCNHcmFwaGljIGFydHMgb3IgcGhvdG9ncmFwaHkgdGVhY2hpbmcgYWlkcyBvciBtYXRlcmlhbHMjNjAuMTAuNjEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNjEuMDYuMDAjSG9ydGljdWx0dXJlIHRlYWNoaW5nIGFpZHMgb3IgbWF0ZXJpYWxzIzYwLjEwLjYxLjAwLjAwCi11bnNwc2M3IzYwLjEwLjYxLjA3LjAwI01hbnVmYWN0dXJpbmcgdGVhY2hpbmcgYWlkcyBvciBtYXRlcmlhbHMjNjAuMTAuNjEuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNjIuMDAuMDAjVGVjaG5vbG9neSB0ZWFjaGluZyBhaWRzIGFuZCBtYXRlcmlhbHMjNjAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNjIuMDEuMDAjQWdyaWN1bHR1cmUgdGVhY2hpbmcgYWlkcyBvciBtYXRlcmlhbHMjNjAuMTAuNjIuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNjIuMDIuMDAjQmlvdGVjaG5vbG9neSB0ZWFjaGluZyBhaWRzIG9yIG1hdGVyaWFscyM2MC4xMC42Mi4wMC4wMAotdW5zcHNjNyM2MC4xMC42Mi4wMy4wMCNDb21tdW5pY2F0aW9ucyB0ZWFjaGluZyBhaWRzIG9yIG1hdGVyaWFscyM2MC4xMC42Mi4wMC4wMAotdW5zcHNjNyM2MC4xMC42Mi4wNC4wMCNDb21wdXRlciBzY2llbmNlIHRlYWNoaW5nIGFpZHMgb3IgbWF0ZXJpYWxzIzYwLjEwLjYyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjYyLjA1LjAwI0VuZXJneSBvciBwb3dlciB0ZWFjaGluZyBhaWRzIG9yIG1hdGVyaWFscyM2MC4xMC42Mi4wMC4wMAotdW5zcHNjNyM2MC4xMC42Mi4wNi4wMCNFbnZpcm9ubWVudGFsIHRlYWNoaW5nIGFpZHMgb3IgbWF0ZXJpYWxzIzYwLjEwLjYyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjYyLjA3LjAwI01hdGVyaWFscyB0ZWFjaGluZyBhaWRzIG9yIG1hdGVyaWFscyM2MC4xMC42Mi4wMC4wMAotdW5zcHNjNyM2MC4xMC42Mi4wOC4wMCNNZWRpY2FsIHRlYWNoaW5nIGFpZHMgb3IgbWF0ZXJpYWxzIzYwLjEwLjYyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjYyLjA5LjAwI1RyYW5zcG9ydGF0aW9uIHRlYWNoaW5nIGFpZHMgb3IgbWF0ZXJpYWxzIzYwLjEwLjYyLjAwLjAwCi11bnNwc2M3IzYwLjEwLjYzLjAwLjAwI0ZvcmVuc2ljIHNjaWVuY2UgdGVhY2hpbmcgZXF1aXBtZW50IGFuZCBzdXBwbGllcyM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC42My4wMS4wMCNGb3JlbnNpYyBzY2llbmNlIGtpdHMjNjAuMTAuNjMuMDAuMDAKLXVuc3BzYzcjNjAuMTAuNjQuMDAuMDAjRWxlY3Ryb25pY3MgdGVhY2hpbmcgc3VwcGxpZXMgYW5kIGVxdWlwbWVudCM2MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMC42NC4wMS4wMCNFbGVjdHJvbmljcyBraXRzIzYwLjEwLjY0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjY0LjAyLjAwI0VsZWN0cm9uaWNzIHRlYWNoaW5nIHN1cHBsaWVzIzYwLjEwLjY0LjAwLjAwCi11bnNwc2M3IzYwLjEwLjY0LjAzLjAwI0ZvcmVuc2ljIHNjaWVuY2UgdGVhY2hpbmcgc3VwcGxpZXMjNjAuMTAuNjQuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMDAuMDAuMDAjQ2xhc3Nyb29tIGRlY29yYXRpdmVzIGFuZCBzdXBwbGllcyM2MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMC4wMC4wMCNDbGFzc3Jvb20gQ2hhcnRzIG9yIGNsYXNzcm9vbSBwb3N0ZXJzIzYwLjExLjAwLjAwLjAwCi11bnNwc2M3IzYwLjExLjEwLjAxLjAwI0NoYXJ0IHBhY2tzIzYwLjExLjEwLjAwLjAwCi11bnNwc2M3IzYwLjExLjEwLjAyLjAwI0NsYXNzcm9vbSBjaGFydHMjNjAuMTEuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTAuMDMuMDAjQ2xhc3Nyb29tIHBvc3RlcnMgb3Igc2V0cyM2MC4xMS4xMC4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMC4wNC4wMCNEbyBpdCB5b3Vyc2VsZiBwb3N0ZXJzIzYwLjExLjEwLjAwLjAwCi11bnNwc2M3IzYwLjExLjExLjAwLjAwI0J1bGxldGluIGJvYXJkIHNldHMjNjAuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTEuMDEuMDAjQmlnIGJ1bGxldGluIGJvYXJkIHNldHMjNjAuMTEuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTEuMDIuMDAjQ2FsZW5kYXIgYnVsbGV0aW5nIGJvYXJkIHNldHMjNjAuMTEuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTEuMDMuMDAjRWFybHkgY2hpbGRob29kIGJ1bGxldGluIGJvYXJkIHNldHMjNjAuMTEuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTEuMDQuMDAjTGFuZ3VhZ2UgYnVsbGV0aW4gYm9hcmQgc2V0cyM2MC4xMS4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMS4wNS4wMCNNYXRoIGJ1bGxldGluIGJvYXJkIHNldHMjNjAuMTEuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTEuMDYuMDAjTXVsdGlwdXJwb3NlIGJ1bGxldGluIGJvYXJkIHNldHMjNjAuMTEuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTEuMDcuMDAjU2NpZW5jZSBidWxsZXRpbiBib2FyZCBzZXRzIzYwLjExLjExLjAwLjAwCi11bnNwc2M3IzYwLjExLjExLjA4LjAwI1NlYXNvbmFsIGJ1bGxldGluIGJvYXJkIHNldHMjNjAuMTEuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTEuMDkuMDAjU29jaWFsIHN0dWRpZXMgYnVsbGV0aW4gYm9hcmQgc2V0cyM2MC4xMS4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMi4wMC4wMCNCdWxsZXRpbiBib2FyZCBib3JkZXJzIGFuZCB0cmltbWVycyM2MC4xMS4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMi4wMS4wMCNDbGFzc3Jvb20gYmFubmVycyM2MC4xMS4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMi4wMi4wMCNCb3JkZXIgcGFja3MjNjAuMTEuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTIuMDMuMDAjQ2xhc3Nyb29tIGhlYWRlcnMjNjAuMTEuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTIuMDQuMDAjQ29ycmlndWF0ZWQgYm9yZGVycyBvciB0cmltbWVycyM2MC4xMS4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMi4wNS4wMCNEaWUgY3V0IHNoYXBlZCBzY2FsbG9wZWQgYm9yZGVycyBvciB0cmltbWVycyM2MC4xMS4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMi4wNi4wMCNTcGFya2xlIGJvcmRlcnMgb3IgdHJpbW1lcnMjNjAuMTEuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTIuMDcuMDAjU3RyYWlnaHQgYm9yZGVycyBvciB0cmltbWVycyM2MC4xMS4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMi4wOC4wMCNCb3JkZXIgb3IgVHJpbW1lciBzdG9yYWdlIzYwLjExLjEyLjAwLjAwCi11bnNwc2M3IzYwLjExLjEzLjAwLjAwI0RlY29yYXRpdmUgbGV0dGVycyBhbmQgbnVtYmVycyM2MC4xMS4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMy4wMS4wMCNMZXR0ZXJlZCBvciBudW1iZXJlZCBibG9ja3MjNjAuMTEuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTMuMDIuMDAjQ2FzdWFsIGxldHRlcnMgb3IgbnVtYmVycyM2MC4xMS4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMS4xMy4wMy4wMCNJdGFsaWMgbGV0dGVycyBvciBudW1iZXJzIzYwLjExLjEzLjAwLjAwCi11bnNwc2M3IzYwLjExLjEzLjA0LjAwI1NlbGYgYWRoZXNpdmUgbGV0dGVycyBvciBudW1iZXJzIzYwLjExLjEzLjAwLjAwCi11bnNwc2M3IzYwLjExLjEzLjA1LjAwI1NwYXJrbGUgbGV0dGVycyBvciBudW1iZXJzIzYwLjExLjEzLjAwLjAwCi11bnNwc2M3IzYwLjExLjEzLjA2LjAwI1RyYWNpbmcgbGV0dGVycyBvciBudW1iZXJzIzYwLjExLjEzLjAwLjAwCi11bnNwc2M3IzYwLjExLjE0LjAwLjAwI1NwZWNpYWx0eSBkZWNvcmF0aXZlcyBmb3IgdGhlIGNsYXNzcm9vbSBhbmQgZGVjb3JhdGl2ZSBhY2Nlc3NvcmllcyM2MC4xMS4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMS4xNC4wMS4wMCNDbGFzc3Jvb20gZGVjb3JhdGl2ZSBraXRzIzYwLjExLjE0LjAwLjAwCi11bnNwc2M3IzYwLjExLjE0LjAyLjAwI0Rvb3IgZGVjb3JhdGlvbnMjNjAuMTEuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTQuMDMuMDAjTW9iaWxlcyM2MC4xMS4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMS4xNC4wNC4wMCNUd28gc2lkZWQgZGVjb3JhdGlvbnMjNjAuMTEuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTEuMTQuMDUuMDAjV2luZG93IGNsaW5nIGRlY29yYXRpb25zIzYwLjExLjE0LjAwLjAwCi11bnNwc2M3IzYwLjExLjE0LjA3LjAwI0RlY29yYXRpdmUgU3RvcmFnZSBTeXN0ZW1zIzYwLjExLjE0LjAwLjAwCi11bnNwc2M3IzYwLjExLjE0LjA4LjAwI0RlY29yYXRpdmUgdGFwZXMgb3IgdHdpc3RzIzYwLjExLjE0LjAwLjAwCi11bnNwc2M3IzYwLjExLjE0LjA5LjAwI0RlY29yYXRpdmUgYnV0dG9ucyM2MC4xMS4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMS4xNC4xMC4wMCNEZWNvcmF0aXZlIHNoYXBlcyBvciBzdHJpbmdzIzYwLjExLjE0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjAwLjAwLjAwI0FydHMgYW5kIGNyYWZ0cyBlcXVpcG1lbnQgYW5kIGFjY2Vzc29yaWVzIGFuZCBzdXBwbGllcyM2MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMC4wMC4wMCNBcnQjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTAuMDEuMDAjUGFpbnRpbmdzIzYwLjEyLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEwLjAyLjAwI1NjdWxwdHVyZXMjNjAuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTAuMDMuMDAjU3RhdHVhcnkjNjAuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTAuMDQuMDAjUG9ydHJhaXRzIzYwLjEyLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEwLjA1LjAwI0RyYXdpbmdzIzYwLjEyLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEwLjA2LjAwI1BpY3R1cmVzIzYwLjEyLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEwLjA3LjAwI0xpdGhvZ3JhcGhzIzYwLjEyLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEwLjA4LjAwI1Bvc3RlcnMjNjAuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTAuMDkuMDAjRGVjb3JhdGl2ZSBwb3QjNjAuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTAuMTAuMDAjU2Nyb2xscyM2MC4xMi4xMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMC4xMS4wMCNQaG90b2dyYXBocyM2MC4xMi4xMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4wMC4wMCNDYW52YXNlcyBhbmQgZmlsbXMgYW5kIGJvYXJkcyBhbmQgYXJ0aXN0cyBwYXBlcnMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMDEuMDAjU3VscGhpdGUgZHJhd2luZyBwYXBlciM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4wMi4wMCNHcm91bmR3b29kIGRyYXdpbmcgcGFwZXIjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMDMuMDAjVHJhY2luZyBvciB2ZWxsdW0gZHJhd2luZyBwYXBlciM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4wNC4wMCNCb25kIGRyYXdpbmcgcGFwZXIjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMDUuMDAjQ2hhcmNvYWwgb3IgcGFzdGVsIGRyYXdpbmcgcGFwZXIjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMDYuMDAjQnJpc3RvbCBkcmF3aW5nIHBhcGVyIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjA3LjAwI1dhdGVyY29sb3IgcGFwZXIgc2hlZXRzIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjA4LjAwI1dhdGVyY29sb3IgcGFwZXIgcGFkcyM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4wOS4wMCNXYXRlcmNvbG9yIHBhcGVyIGJsb2NrcyM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4xMC4wMCNGaW5nZXIgcGFpbnQgcGFwZXIjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMTEuMDAjU3VscGhpdGUgY29uc3RydWN0aW9uIHBhcGVyIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjEyLjAwI0dyb3VuZHdvb2QgY29uc3RydWN0aW9uIHBhcGVyIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjEzLjAwI0ZvaWwgY29uc3RydWN0aW9uIHBhcGVyIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjE0LjAwI09yaWdhbWkgY3JhZnQgcGFwZXJzIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjE1LjAwI1BhcGVyIG9yIHBsYXN0aWMgQ29uZmV0dGkjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMTYuMDAjQ3JlcGUgcGFwZXIgZm9yIGNyYWZ0cyM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4xNy4wMCNDcmFmdCB0aXNzdWUgcGFwZXIjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMTguMDAjQ29ycnVnYXRlZCBjcmFmdCBwYXBlciM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4xOS4wMCNQYXR0ZXJuIHByaW50ZWQgY3JhZnQgcGFwZXIjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMjAuMDAjU2VsZiBhZGhlc2l2ZSBjcmFmdCBwYXBlciM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4yMS4wMCNHbG93IGluIHRoZSBkYXJrIHBhcGVyIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjIzLjAwI0hhbmQgbWFkZSBwYXBlciM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4yNC4wMCNLcmFmdCBwYXBlciM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4yNS4wMCNDYW52YXMgcGFuZWxzIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjI2LjAwI1ByZXN0cmV0Y2hlZCBjYW52YXMjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMjcuMDAjUHJpbWVkIGNhbnZhcyM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4yOC4wMCNVbnByaW1lZCBjYW52YXMjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMjkuMDAjTWFzb25pdGUgcGFuZWxzIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjMwLjAwI0NhbnZhcyBsaWtlIHBhcGVyIHBhZHMjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMzEuMDAjSmFwYW5lc2UgcHJpbnRtYWtpbmcgcGFwZXIjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMzIuMDAjTGl0aG9ncmFwaHkgb3IgaW50YWdsaW8gcHJpbnRtYWtpbmcgcGFwZXIjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMzMuMDAjQmxvY2twcmludGluZyBwcmludG1ha2luZyBwYXBlciM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4zNC4wMCNGb2lsIHBhcGVyIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjM1LjAwI0FjZXRhdGUgb3IgdmlueWwgb3IgcG9seWVzdGVyIGZpbG1zIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjM2LjAwI0NlbGxvcGhhbmUgZmlsbXMjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMzcuMDAjQWNyeWxpYyBzaGVldHMjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuMzguMDAjSWxsdXN0cmF0aW9uIGJvYXJkcyM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS4zOS4wMCNNYXQgYm9hcmRzIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjQwLjAwI01vdW50aW5nIGJvYXJkIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjQxLjAwI0ZvYW0gY29yZSBtb3VudGluZyBib2FyZCM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS40Mi4wMCNUYWdib2FyZCBvciByYWlscm9hZCBib2FyZCM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS40My4wMCNEaXNwbGF5IGJvYXJkIzYwLjEyLjExLjAwLjAwCi11bnNwc2M3IzYwLjEyLjExLjQ0LjAwI1NjcmF0Y2ggYXJ0IHBhcGVycyM2MC4xMi4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMS40NS4wMCNTY3JhdGNoIGFydCBib2FyZHMjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTEuNDYuMDAjU2NyYXRjaCBhcnQgYWNjZXNzb3JpZXMjNjAuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMDAuMDAjQ2xhc3Nyb29tIGFuZCBmaW5lIGFydCBwYWludCBhbmQgbWVkaXVtcyBhbmQgYXBwbGljYXRvcnMgYW5kIGFjY2Vzc29yaWVzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjAxLjAwI1RyYWRpdGlvbmFsIGxpcXVpZCB0ZW1wZXJhIHBhaW50IzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjAyLjAwI0NvbnRlbXBvcmFyeSBsaXF1aWQgdGVtcGVyYSBwYWludCM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4wMy4wMCNQb3dkZXJlZCB0ZW1wZXJhIHBhaW50IzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjA0LjAwI1dhc2hhYmxlIHRlbXBlcmEgcGFpbnQjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMDUuMDAjVGVtcGVyYSBjYWtlcyM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4wNi4wMCNMaXF1aWQgZmFjZSBvciBib2R5IHBhaW50IzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjA3LjAwI0Nha2UgZmFjZSBvciBib2R5IHBhaW50IzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjA4LjAwI01hcmtlciBmYWNlIG9yIGJvZHkgcGFpbnQjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMDkuMDAjVGVtcG9yYXJ5IHRhdHRvbyBwYWludCM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4xMC4wMCNXYXNoYWJsZSBmaW5nZXIgcGFpbnQjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMTEuMDAjU2Nob29sIHN0eWxlIGFjcnlsaWMgcGFpbnQjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMTIuMDAjQWNyeWxpYyBhaXJicnVzaCBwYWludCM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4xMy4wMCNTeW50aGV0aWMgaGVhdCB0cmVhdGVkIG9pbCBwYWludCBvciBtZWRpdW1zIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjE0LjAwI1dhdGVyIHNvbHVibGUgb2lsIHBhaW50IG9yIG1lZGl1bXMjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMTUuMDAjTG93IHZpc2Nvc2l0eSByZW1vdmFibGUgZ2xhc3Mgb3IgY2VyYW1pYyBwYWludCM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4xNi4wMCNMb3cgdmlzY29zaXR5IHBlcm1hbmVudCBnbGFzcyBvciBjZXJhbWljIHBhaW50IzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjE3LjAwI0hpZ2ggdmlzY29zaXR5IEdlbCByZW1vdmFibGUgZ2xhc3Mgb3IgY2VyYW1pYyBwYWludCM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4xOC4wMCNIaWdoIHZpc2Nvc2l0eSBHZWwgcGVybWFuZW50IGdsYXNzIG9yIGNlcmFtaWMgcGFpbnQjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMTkuMDAjT3ZlbiBiYWtlZCBnbGFzcyBvciBjZXJhbWljIHBhaW50IzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjIwLjAwI01hcmtlciBkZWxpdmVyeSBzeXN0ZW0gZ2xhc3Mgb3IgY2VyYW1pYyBwYWludCM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4yMS4wMCNQYW4gd2F0ZXJjb2xvciBwYWludCM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4yMi4wMCNUdWJlIHdhdGVyY29sb3IgcGFpbnQjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMjMuMDAjTGlxdWlkIHdhdGVyY29sb3IgcGFpbnQjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMjQuMDAjTGlxdWlkIHdhdGVyY29sb3IgZnJpc2tldCBwYWludCM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4yNS4wMCNXYXRlcmNvbG9yIHBhaW50aW5nIG1lZGl1bXMjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMjYuMDAjV2F0ZXJjb2xvciBicnVzaGVzIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjI3LjAwI09yaWVudGFsIGJydXNoZXMjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMjguMDAjVXRpbGl0eSBicnVzaGVzIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjI5LjAwI1NwZWNpYWx0eSBicnVzaGVzIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjMwLjAwI0Vhc2VsIGJydXNoZXMjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMzEuMDAjUGFsZXR0ZSBrbml2ZXMjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTIuMzIuMDAjQnJheWVycyBmb3IgaGFuZCBwcmludGluZyM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4zMy4wMCNTcG9uZ2Ugc3RhbXBzIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjM0LjAwI1NjcmFwZXJzIGZvciBwYWludCBhcHBsaWNhdGlvbiM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4zNS4wMCNQaXBldHRlcyBmb3IgcGFpbnQgb3IgZHllIG1peGluZyM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi4zNi4wMCNDb21icyBvciB0b29scyBmb3IgcGFpbnQgb3IgaW5rIGFwcGxpY2F0aW9uIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjM3LjAwI1BhbGV0dGVzIGZvciBwYWludCBvciBpbmsgbWl4aW5nIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjM4LjAwI1BhaW50IHBvdHMgZm9yIHBhaW50IHN0b3JhZ2Ugb3IgbWl4aW5nIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjM5LjAwI1BhaW50IGN1cHMgb3IgYm90dGxlcyM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi40MS4wMCNCcnVzaCBvciB0b29sIGNsZWFuZXJzIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjQyLjAwI1BhaW50IGFwcm9ucyM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi40My4wMCNBcnRpc3RzIFNtb2NrcyM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi40NC4wMCNTdHJldGNoZXIgc3RyaXBzIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjQ1LjAwI0NhbnZhcyBzdHJldGNoZXJzIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjQ2LjAwI01ldGFsIGVhc2VscyM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi40Ny4wMCNXb29kIGVhc2VscyM2MC4xMi4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMi40OC4wMCNUYWJsZSB0b3AgZWFzZWxzIzYwLjEyLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEyLjQ5LjAwI1ByZXNlbnRhdGlvbiBlYXNlbHMjNjAuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTMuMDAuMDAjQXJ0IGFuZCBjcmFmdCBjdXR0aW5nIHByb2R1Y3RzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEzLjAxLjAwI0d1aWxsb3RpbmUgcGFwZXIgdHJpbW1lcnMjNjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTMuMDIuMDAjTWF0IGN1dHRlciM2MC4xMi4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xMy4wMy4wMCNNYXQga25pdmVzIzYwLjEyLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEyLjEzLjA0LjAwI0FydGlzdCBrbml2ZXMjNjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTMuMDUuMDAjUm90YXJ5IHBhcGVyIG9yIGZhYnJpYyBjdXR0ZXIjNjAuMTIuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTMuMDYuMDAjQ2lyY2xlIG9yIG92YWwgcGFwZXIgY3V0dGVycyM2MC4xMi4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNC4wMC4wMCNQaWN0dXJlIEZyYW1pbmcjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTQuMDEuMDAjUHJlIGFzc2VtYmxlZCB3b29kIHBpY3R1cmUgZnJhbWVzIzYwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE0LjAyLjAwI1dvb2Qgc2VjdGlvbiBwaWN0dXJlIGZyYW1lcyM2MC4xMi4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNC4wMy4wMCNQcmUgYXNzZW1ibGVkIG1ldGFsIHBpY3R1cmUgZnJhbWVzIzYwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE0LjA0LjAwI01ldGFsIHNlY3Rpb24gcGljdHVyZSBmcmFtZXMjNjAuMTIuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTQuMDUuMDAjQWRqdXN0YWJsZSBwaWN0dXJlIGZyYW1lcyM2MC4xMi4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNC4wNi4wMCNQbGFzdGljIHBpY3R1cmUgZnJhbWVzIzYwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE0LjA3LjAwI0NsZWFyIGJveCBwaWN0dXJlIGZyYW1lIzYwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE0LjA4LjAwI1BvaW50IGRyaXZlcnMgb3IgYWNjZXNzb3JpZXMgZm9yIHBpY3R1cmUgZnJhbWVzIzYwLjEyLjE0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE0LjA5LjAwI01pdHJlIGJveCM2MC4xMi4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNC4xMC4wMCNQaWN0dXJlIEhhbmdpbmcgZGV2aWNlcyM2MC4xMi4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNC4xMS4wMCNBY3J5bGljIHBhbmVscyBmb3IgcGljdHVyZSBmcmFtZXMjNjAuMTIuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTQuMTIuMDAjR2xhc3MgcGFuZWxzIGZvciBwaWN0dXJlIGZyYW1lcyM2MC4xMi4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4wMC4wMCNEcmF3aW5nIHRvb2xzIGFuZCBzdXBwbGllcyBhbmQgYWNjZXNzb3JpZXMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMDEuMDAjV2F0ZXIgYmFzZWQgbWFya2VycyM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4wMi4wMCNTb2x2ZW50IGJhc2VkIG1hcmtlcnMjNjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMDMuMDAjV2FzaGFibGUgbWFya2VycyM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4wNC4wMCNDYWxsaWdyYXBoeSBtYXJrZXJzIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjA1LjAwI0ZhYnJpYyBtYXJrZXJzIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjA2LjAwI01ldGFsbGljIG1hcmtlcnMjNjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMDcuMDAjVGVtcGVyYSBvciBjaGFsayB3aW5kb3cgbWFya2VycyM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4wOC4wMCNQYWludCBtYXJrZXJzIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjA5LjAwI1dheCBiYXNlZCBjcmF5b25zIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjEwLjAwI1NveSBiYXNlZCBjcmF5b25zIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjExLjAwI1NwZWNpYWx0eSBjcmF5b25zIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjEyLjAwI1dhdGVyY29sb3IgY3JheW9ucyM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4xMy4wMCNEcnkgcGFzdGVsIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjE0LjAwI0NoYWxrIHBhc3RlbCM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4xNS4wMCNPaWwgYmFzZWQgcGFzdGVsIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjE2LjAwI0NvbXByZXNzZWQgY2hhcmNvYWwjNjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMTcuMDAjVmluZSBjaGFyY29hbCM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4xOC4wMCNHcmFwaGl0ZSBwZW5jaWxzIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjE5LjAwI1dheCBiYXNlZCBjb2xvcmVkIGRyYXdpbmcgcGVuY2lscyM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4yMC4wMCNDaGFyY29hbCBwZW5jaWxzIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjIxLjAwI1dhdGVyY29sb3IgcGVuY2lscyM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4yMi4wMCNXYXRlcmJhc2VkIHBlbnMjNjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMjMuMDAjUGVybWFuZW50IHBlbnMjNjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMjQuMDAjR2VsIHBlbnMjNjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMjUuMDAjVGVjaG5pY2FsIHBlbnMjNjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMjYuMDAjQ2FsbGlncmFwaHkgcGVucyM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4yOC4wMCNXYXRlciBiYXNlZCBkcmF3aW5nIGluayM2MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNS4yOS4wMCNTb2x2ZW50IGJhc2VkIGRyYXdpbmcgaW5rIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjMwLjAwI0NhbGxpZ3JhcGh5IGRyYXdpbmcgaW5rIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjMxLjAwI1BpbmsgcGVuY2lsIGVyYXNlcnMjNjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMzIuMDAjS25lYWRlZCBlcmFzZXJzIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjMzLjAwI1ZpbnlsIGVyYXNlcnMjNjAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTUuMzQuMDAjUGxhc3RpYyBlcmFzZXJzIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE1LjM1LjAwI0d1bSBlcmFzZXJzIzYwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE2LjAwLjAwI1N0dWRpbyBhaWRzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjE2LjAxLjAwI1dvb2QgTWFubmVxdWlucyM2MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNi4wMi4wMCNDbGVhciBhY3J5bGljIG1pcnJvcnMgb3IgcGFuZWxzIzYwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE2LjAzLjAwI1BsYXN0aWMgUnViYmluZyBwbGF0ZXMjNjAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTYuMDQuMDAjU3R1ZGlvIGFpZCBhY2Nlc3NvcmllcyM2MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNi4wNS4wMCNBbmF0b21pY2FsIG1vZGVscyM2MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNy4wMC4wMCNQcmludG1ha2luZyBzdXBwbGllcyBhbmQgYWNjZXNzb3JpZXMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTcuMDEuMDAjUnViYmVyIHN0YW1waW5nIHN0YW1wcyM2MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNy4wMi4wMCNSdWJiZXIgc3RhbXBpbmcgc3RhbXAgcGFkcyM2MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNy4wMy4wMCNSdWJiZXIgc3RhbXBpbmcgYWNjZXNzb3JpZXMjNjAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTcuMDQuMDAjTGlub2xldW0gZm9yIGJsb2NrIHByaW50aW5nIzYwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE3LjA1LjAwI1dvb2QgYmxvY2tzIGZvciBwcmludGluZyM2MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNy4wNi4wMCNTeW50aGV0aWMgYmxvY2tzIGZvciBwcmludGluZyM2MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNy4wNy4wMCNCbG9jayBwcmludGluZyBhY2Nlc3NvcmllcyM2MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNy4wOC4wMCNJbnRhZ2xpbyBvciBsaXRob2dyYXBoeSBwbGF0ZXMjNjAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTcuMDkuMDAjSW50YWdsaW8gb3IgbGl0aG9ncmFwaHkgYmxhbmtldHMjNjAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTcuMTAuMDAjSW50YWdsaW8gb3IgbGl0aG9ncmFwaHkgd2lwZXMjNjAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTcuMTEuMDAjSW50YWdsaW8gb3IgbGl0aG9ncmFwaHkgaG90IHBsYXRlcyM2MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNy4xMi4wMCNJbnRhZ2xpbyBvciBsaXRob2dyYXBoeSBwcmludGluZyBwcmVzc2VzIzYwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE3LjEzLjAwI1ByaW50aW5nIEJhcmVucyBhbmQgQnJheWVycyM2MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNy4xNC4wMCNJbnRhZ2xpbyBFdGNoaW5nIG9yIGVuZ3JhdmluZyB0b29scyM2MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xNy4xNS4wMCNTaWxrc2NyZWVuIHNjcmVlbnMgb3IgcHJpbnRpbmcgc3RhdGlvbnMjNjAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTcuMTYuMDAjU2lsa3NjcmVlbiBhY2Nlc3NvcmllcyM2MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOC4wMC4wMCNQcmludGluZyBhbmQgZHJhd2luZyBpbmtzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjE4LjAxLjAwI1dhdGVyIGJhc2VkIHBvc3RlciBpbmtzIzYwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE4LjAyLjAwI1dhdGVyIGJhc2VkIGFjcnlsaWMgaW5rcyM2MC4xMi4xOC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOC4wMy4wMCNPaWwgYmFzZWQgc2lsa3NjcmVlbiBpbmtzIzYwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE4LjA0LjAwI1dhdGVyIGJhc2VkIFRleHRpbGUgaW5rcyM2MC4xMi4xOC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOC4wNS4wMCNPaWwgYmFzZWQgdGV4dGlsZSBpbmtzIzYwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE4LjA2LjAwI1ByaW50bWFraW5nIHN1YmxpbWF0aW9uIGlua3MjNjAuMTIuMTguMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTguMDcuMDAjT2lsIGJhc2VkIGludGFnbGlvIG9yIGxpdGhvZ3JhcGh5IGlua3MjNjAuMTIuMTguMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTguMDguMDAjT2lsIGJhc2VkIG1vbm9wcmludCBpbmtzIzYwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE4LjA5LjAwI1dhdGVyIGJhc2VkIG1vbm9wcmludCBpbmtzIzYwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE4LjEwLjAwI1dhdGVyIGJhc2VkIGRyYXdpbmcgaW5rcyM2MC4xMi4xOC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOC4xMS4wMCNTb2x2ZW50IGJhc2VkIGRyYXdpbmcgaW5rcyM2MC4xMi4xOC4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOC4xMi4wMCNDYWxsaWdyYXBoeSBkcmF3aW5nIGlua3MjNjAuMTIuMTguMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTguMTMuMDAjU2lsa3NjcmVlbiBpbmtzIzYwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE5LjAwLjAwI0FydCBmYWJyaWMgYW5kIGZhYnJpYyBkZWNvcmF0aW9uIG1hdGVyaWFscyBhbmQgc3VwcGxpZXMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTkuMDEuMDAjTXVzbGluIzYwLjEyLjE5LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE5LjAyLjAwI0ZlbHQjNjAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTkuMDMuMDAjQ3JhZnQgZnVyIzYwLjEyLjE5LjAwLjAwCi11bnNwc2M3IzYwLjEyLjE5LjA0LjAwI0NvdHRvbiBibGVuZHMjNjAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTkuMDUuMDAjQ2FudmFzIGltcHJpbnRhYmxlcyM2MC4xMi4xOS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOS4wNi4wMCNQcmUgc2Vuc2l0aXplZCBpbXByaW50YWJsZXMjNjAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMTkuMDcuMDAjQ290dG9uIGltcHJpbnRhYmxlcyM2MC4xMi4xOS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOS4wOC4wMCNCbGVuZGVkIGltcHJpbnRhYmxlcyM2MC4xMi4xOS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOS4wOS4wMCNCYXRpayB3YXhlcyM2MC4xMi4xOS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOS4xMC4wMCNCYXRpayBhY2Nlc3NvcmllcyM2MC4xMi4xOS4wMC4wMAotdW5zcHNjNyM2MC4xMi4xOS4xMS4wMCNCYXRpayBmYWJyaWMjNjAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjAuMDAuMDAjU2V3aW5nIGFuZCBzdGl0Y2hlcnkgYW5kIHdlYXZpbmcgZXF1aXBtZW50IGFuZCBhY2Nlc3NvcmllcyM2MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4yMC4wMS4wMCNXZWF2aW5nIG9yIHRhcGVzdHJ5IG5lZWRsZXMjNjAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjAuMDIuMDAjV2VhdmluZyBhY2Nlc3NvcmllcyM2MC4xMi4yMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4yMC4wMy4wMCNIYW5kIHNld2luZyBuZWVkbGVzIzYwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjIwLjA0LjAwI1N0cmluZyBhcnQga2l0cyM2MC4xMi4yMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4yMC4wNS4wMCNIYW5kIGxvb21zIzYwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjIwLjA2LjAwI1RhYmxlIGxvb21zIzYwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjIwLjA3LjAwI0Zsb29yIGxvb21zIzYwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjIwLjA4LjAwI1JleGxhY2UjNjAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjAuMDkuMDAjTGFjaW5nIG9yIHN0cmluZ2luZyBhY2Nlc3NvcmllcyM2MC4xMi4yMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4yMS4wMC4wMCNDYW5kbGVtYWtpbmcjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjEuMDEuMDAjQ2FuZGxlbWFraW5nIHdpY2tzIzYwLjEyLjIxLjAwLjAwCi11bnNwc2M3IzYwLjEyLjIxLjAyLjAwI0NhbmRsZW1ha2luZyBmb3JtcyM2MC4xMi4yMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4yMS4wMy4wMCNDYW5kbGVtYWtpbmcgYWNjZXNzb3JpZXMjNjAuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjIuMDAuMDAjV29vZCBjcmFmdHMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjIuMDEuMDAjV29vZCBjcmFmdCBtYXRlcmlhbHMjNjAuMTIuMjIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjIuMDIuMDAjRmluaXNoaW5nIG1hdGVyaWFscyM2MC4xMi4yMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4yMi4wMy4wMCNXb29kIGJ1cm5pbmcgdG9vbHMjNjAuMTIuMjIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjIuMDQuMDAjQ2FydmluZyB0b29scyM2MC4xMi4yMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4yMy4wMC4wMCNCYXNrZXRyeSBtYWtpbmcgc3VwcGxpZXMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjMuMDEuMDAjQmFza2V0cnkgcmVlZCM2MC4xMi4yMy4wMC4wMAotdW5zcHNjNyM2MC4xMi4yMy4wMi4wMCNCYXNrZXRyeSBwcm9qZWN0IGtpdHMjNjAuMTIuMjMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjQuMDAuMDAjU3RhaW5lZCBnbGFzcyBtYWtpbmcgc3VwcGxpZXMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjQuMDEuMDAjU3RhaW5lZCBHbGFzcyBmcmFnbWVudHMjNjAuMTIuMjQuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjQuMDIuMDAjU3RhaW5lZCBnbGFzcyB0b29scyBvciBhY2Nlc3NvcmllcyM2MC4xMi4yNC4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNS4wMC4wMCNQYXBlciBjcmFmdHMgYW5kIGhhbmQgbWFkZSBwYXBlcm1ha2luZyM2MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNS4wMS4wMCNQYXBlciBzaGFwaW5nIHRvb2xzIzYwLjEyLjI1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjI1LjAyLjAwI1BhcGVyIHBpY3R1cmUgZnJhbWVzIzYwLjEyLjI1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjI1LjAzLjAwI1BhcGVyIHBsYXRlcyBvciB0cmF5cyM2MC4xMi4yNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNS4wNC4wMCNQYXBlciBmaWx0ZXJzIzYwLjEyLjI1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjI1LjA1LjAwI0NvcnJ1Z2F0ZWQgY2FyZGJvYXJkIHNoYXBlcyM2MC4xMi4yNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNS4wNi4wMCNQYXBlciBEb2lsaWVzIzYwLjEyLjI1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjI1LjA3LjAwI0RlY2tsZXMgb3IgbW9sZHMgZm9yIGhhbmQgbWFkZSBwYXBlciM2MC4xMi4yNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNS4wOC4wMCNDb3VjaCBzaGVldHMgb3IgZmVsdHMgZm9yIGhhbmQgbWFkZSBwYXBlciM2MC4xMi4yNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNS4wOS4wMCNQdWxwIG9yIHJhdyBtYXRlcmlhbHMgZm9yIGhhbmQgbWFkZSBwYXBlciM2MC4xMi4yNS4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNi4wMC4wMCNNb3NhaWNzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjI2LjAxLjAwI01vc2FpYyB0aWxlcyM2MC4xMi4yNi4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNi4wMi4wMCNNb3NhaWMgbW9sZHMjNjAuMTIuMjYuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjYuMDMuMDAjTW9zYWljIHRvb2xzIzYwLjEyLjI2LjAwLjAwCi11bnNwc2M3IzYwLjEyLjI2LjA0LjAwI01vc2FpYyBhY2Nlc3NvcmllcyM2MC4xMi4yNi4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNy4wMC4wMCNFbmFtZWxpbmcgcGFpbnRzIGFuZCBhY2Nlc3NvcmllcyM2MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNy4wMS4wMCNFbmFtZWxpbmcgcGFpbnRzIG9yIG1lZGl1bXMjNjAuMTIuMjcuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjcuMDIuMDAjQ29wcGVyIHNoYXBlcyM2MC4xMi4yNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4yNy4wMy4wMCNFbmFtZWxpbmcgYWNjZXNzb3JpZXMjNjAuMTIuMjcuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjcuMDQuMDAjRW5hbWVsaW5nIEtpbG5zIzYwLjEyLjI3LjAwLjAwCi11bnNwc2M3IzYwLjEyLjI4LjAwLjAwI01hc2ttYWtpbmcjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjguMDEuMDAjTWFza21ha2luZyBmb3JtcyM2MC4xMi4yOC4wMC4wMAotdW5zcHNjNyM2MC4xMi4yOS4wMC4wMCNCZWFkcyBvciBiZWFkaW5nIGFjY2Vzc29yaWVzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjI5LjAxLjAwI1NlZWQgYmVhZHMjNjAuMTIuMjkuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjkuMDIuMDAjUG9ueSBiZWFkcyM2MC4xMi4yOS4wMC4wMAotdW5zcHNjNyM2MC4xMi4yOS4wMy4wMCNXb29kIGJlYWRzIzYwLjEyLjI5LjAwLjAwCi11bnNwc2M3IzYwLjEyLjI5LjA0LjAwI1N0cmF3IGJlYWRzIzYwLjEyLjI5LjAwLjAwCi11bnNwc2M3IzYwLjEyLjI5LjA1LjAwI0NlcmFtaWMgYmVhZHMjNjAuMTIuMjkuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjkuMDYuMDAjR2xhc3MgYmVhZHMjNjAuMTIuMjkuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMjkuMDcuMDAjQXNzb3J0ZWQgb3IgZGVjb3JhdGl2ZSBiZWFkcyM2MC4xMi4yOS4wMC4wMAotdW5zcHNjNyM2MC4xMi4yOS4wOC4wMCNCZWFkIGFjY2Vzc29yaWVzIzYwLjEyLjI5LjAwLjAwCi11bnNwc2M3IzYwLjEyLjMwLjAwLjAwI0ZvYW0gY3JhZnRzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjMwLjAxLjAwI1N0eXJvZm9hbSBzaGFwZXMjNjAuMTIuMzAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzAuMDIuMDAjVG9vbHMgZm9yIGZvYW0gY3JhZnRzIzYwLjEyLjMwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjMxLjAwLjAwI0NoZW5pbGxlIHN0ZW0gY3JhZnRzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjMxLjAxLjAwI0p1bWJvIGNoZW5pbGxlIHN0ZW1zIzYwLjEyLjMxLjAwLjAwCi11bnNwc2M3IzYwLjEyLjMxLjAyLjAwI0NvdHRvbiBjaGVuaWxsZSBzdGVtcyM2MC4xMi4zMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4zMS4wMy4wMCNCdW1wcyBjaGVuaWxsZSBzdGVtcyM2MC4xMi4zMS4wMC4wMAotdW5zcHNjNyM2MC4xMi4zMi4wMC4wMCNSaWJib24gbWFraW5nIG1hdGVyaWFscyM2MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4zMi4wMS4wMCNQYXBlciByaWJib25zIzYwLjEyLjMyLjAwLjAwCi11bnNwc2M3IzYwLjEyLjMyLjAyLjAwI1NpbGsgcmliYm9ucyM2MC4xMi4zMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4zMi4wMy4wMCNTeW50aGV0aWMgcmliYm9ucyM2MC4xMi4zMi4wMC4wMAotdW5zcHNjNyM2MC4xMi4zMi4wNC4wMCNEZWNvcmF0aXZlIHJpYmJvbnMjNjAuMTIuMzIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzMuMDAuMDAjQ3JhZnQgUG9tcyM2MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4zMy4wMS4wMCNBY3J5bGljIGNyYWZ0IHBvbXMjNjAuMTIuMzMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzMuMDIuMDAjR2xpdHRlciBjcmFmdCBwb21zIzYwLjEyLjMzLjAwLjAwCi11bnNwc2M3IzYwLjEyLjMzLjAzLjAwI0NyYWZ0IHBvbSBiZWFkeiM2MC4xMi4zMy4wMC4wMAotdW5zcHNjNyM2MC4xMi4zNC4wMC4wMCNXaWdnbGUgZXllcyBtYXRlcmlhbHMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzQuMDEuMDAjTm9uIHNlbGYgYWRoZXNpdmUgd2lnZ2xlIGV5ZXMjNjAuMTIuMzQuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzQuMDIuMDAjU2VsZiBhZGhlc2l2ZSB3aWdnbGUgZXllcyM2MC4xMi4zNC4wMC4wMAotdW5zcHNjNyM2MC4xMi4zNC4wMy4wMCNEZWNvcmF0aXZlIHdpZ2dsZSBleWVzIzYwLjEyLjM0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjM1LjAwLjAwI0xlYXRoZXIgY3JhZnQgbWF0ZXJpYWxzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjM1LjAxLjAwI0xlYXRoZXIgb3IgbGVhdGhlciBsYWNpbmcgbWF0ZXJpYWxzIzYwLjEyLjM1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjM1LjAyLjAwI0xlYXRoZXIgYWNjZXNzb3JpZXMjNjAuMTIuMzUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzYuMDAuMDAjR2xpdHRlciM2MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMi4zNi4wMS4wMCNHbGl0dGVyIGdsdWUjNjAuMTIuMzYuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzYuMDIuMDAjR2xpdHRlciBkb3RzIzYwLjEyLjM2LjAwLjAwCi11bnNwc2M3IzYwLjEyLjM2LjAzLjAwI0dsaXR0ZXIgamV3ZWxzIzYwLjEyLjM2LjAwLjAwCi11bnNwc2M3IzYwLjEyLjM2LjA0LjAwI1BsYXN0aWMgZ2xpdHRlciM2MC4xMi4zNi4wMC4wMAotdW5zcHNjNyM2MC4xMi4zNi4wNS4wMCNJcnJpZGVzY2VudCBnbGl0dGVyIzYwLjEyLjM2LjAwLjAwCi11bnNwc2M3IzYwLjEyLjM2LjA2LjAwI01ldGFsbGljIGdsaXR0ZXIjNjAuMTIuMzYuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzcuMDAuMDAjTWFjcmFtZSBjcmFmdCBtYXRlcmlhbHMgYW5kIGFjY2Vzc29yaWVzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjM3LjAxLjAwI01hY3JhbWUgY29yZCM2MC4xMi4zNy4wMC4wMAotdW5zcHNjNyM2MC4xMi4zNy4wMi4wMCNNYWNyYW1lIGJlYWRzIzYwLjEyLjM3LjAwLjAwCi11bnNwc2M3IzYwLjEyLjM3LjAzLjAwI01hY3JhbWUgYWNjZXNzb3JpZXMjNjAuMTIuMzcuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzguMDAuMDAjTWFyYmxpbmcgc3VwcGxpZXMgYW5kIGFjY2Vzc29yaWVzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjM4LjAxLjAwI01hcmJsaW5nIGlua3MjNjAuMTIuMzguMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzguMDIuMDAjTWFyYmxpbmcgYWNjZXNzb3JpZXMjNjAuMTIuMzguMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzkuMDAuMDAjU2VxdWlucyBhbmQgdHJpbXMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuMzkuMDEuMDAjRGVjb3JhdGl2ZSBzZXF1aW5zIG9yIHRyaW1zIzYwLjEyLjM5LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQwLjAwLjAwI0NvcmsgY3JhZnQgc3VwcGxpZXMgYW5kIGFjY2Vzc29yaWVzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQwLjAxLjAwI0Nvcmsgc2hlZXRzIzYwLjEyLjQwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQwLjAyLjAwI0Nvcmsgc3RvcHBlcnMjNjAuMTIuNDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDEuMDAuMDAjTXVsdGljdWx0dXJhbCBwcm9qZWN0IG1hdGVyaWFscyBhbmQgYWNjZXNzb3JpZXMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDEuMDEuMDAjTXVsdGljdWx0dXJhbCBwYWludGluZyBwcm9kdWN0cyM2MC4xMi40MS4wMC4wMAotdW5zcHNjNyM2MC4xMi40MS4wMi4wMCNNdWx0aWN1bHR1cmFsIGNyYWZ0cyBwcm9kdWN0cyM2MC4xMi40MS4wMC4wMAotdW5zcHNjNyM2MC4xMi40Mi4wMC4wMCNDcm9zcyBjdXJyaWN1bGFyIHByb2plY3RzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQyLjAxLjAwI015bGFyIHNjdWxwdHVyZXMjNjAuMTIuNDIuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDMuMDAuMDAjQ2xheSBhbmQgbW9kZWxpbmcgY29tcG91bmRzIGFuZCBjZXJhbWljcyBlcXVpcG1lbnQgYW5kIGFjY2Vzc29yaWVzIzYwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQzLjAxLjAwI01vaXN0IGtpbG4gZmlyZWQgY2xheSM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4wMi4wMCNEcnkga2lsbiBmaXJlZCBjbGF5IzYwLjEyLjQzLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQzLjAzLjAwI0tpbG4gZnVybml0dXJlIzYwLjEyLjQzLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQzLjA0LjAwI0tpbG5zIGZvciBmaXJpbmcgY2VyYW1pY3MjNjAuMTIuNDMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDMuMDUuMDAjS2lsbiBhY2Nlc3NvcmllcyBmb3IgZmlyaW5nIGNlcmFtaWNzIzYwLjEyLjQzLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQzLjA2LjAwI1BvdHRlcnMgd2hlZWxzIGZvciBoYW5kIG1hZGUgY2VyYW1pY3MjNjAuMTIuNDMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDMuMDcuMDAjRXh0cnVkZXJzIGZvciBtb2RlbGluZyBtYXRlcmlhbHMjNjAuMTIuNDMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDMuMDguMDAjQ29uZXMgZm9yIGZpcmluZyBraWxucyM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4wOS4wMCNQb3R0ZXJ5IEJhdHRzIzYwLjEyLjQzLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQzLjEwLjAwI0RlY29yYXRpbmcgd2hlZWxzIGZvciBwb3R0ZXJ5IzYwLjEyLjQzLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQzLjExLjAwI0NsYXkgb3IgbW9kZWxpbmcgdG9vbHMjNjAuMTIuNDMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDMuMTIuMDAjRmlyZWQgY2VyYW1pYyB0aWxlcyM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4xMy4wMCNDbGF5IHN0b3JhZ2UgY29udGFpbmVycyM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4xNC4wMCNQbGFzaWNpemVkIG5vbiBoYXJkZW5pbmcgbW9kZWxpbmcgY29tcG91bmRzIzYwLjEyLjQzLjAwLjAwCi11bnNwc2M3IzYwLjEyLjQzLjE1LjAwI09pbGJhc2VkIG5vbmhhcmRlbmluZyBtb2RlbGluZyBjb21wb3VuZHMjNjAuMTIuNDMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDMuMTYuMDAjQWlyIGRyeSBjbGF5IG9yIG1vZGVsaW5nIGNvbXBvdW5kcyM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4xNy4wMCNNb2RlbGluZyBkb3VnaCM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4xOC4wMCNQYXBpZXIgTWFjaGUjNjAuMTIuNDMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDMuMTkuMDAjU3BlY2lhbHR5IG1vZGVsaW5nIGNvbXBvdW5kcyM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4yMC4wMCNQbGFzdGVyIGNvbXBvdW5kcyM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4yMS4wMCNPdmVuIGhhcmRlbmluZyBjbGF5IG9yIG1vZGVsaW5nIGNvbXBvdW5kcyM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4yMi4wMCNQbGFzdGljIG1vZGVsaW5nIGNvbXBvdW5kcyM2MC4xMi40My4wMC4wMAotdW5zcHNjNyM2MC4xMi40My4yMy4wMCNDYXN0cyBvciBtb2xkcyBmb3Igc2hhcGluZyBtb2RlbGluZyBjb21wb3VuZHMjNjAuMTIuNDMuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDQuMDAuMDAjQXJ0IG1ldGFscyM2MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMi40NC4wMS4wMCNDb3BwZXIgdG9vbGluZyBmb2lsIzYwLjEyLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ0LjAyLjAwI0FsdW1pbnVtIHRvb2xpbmcgZm9pbCM2MC4xMi40NC4wMC4wMAotdW5zcHNjNyM2MC4xMi40NC4wMy4wMCNBbHVtaW51bSB3aXJlIzYwLjEyLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ0LjA0LjAwI0JyYXNzIHRvb2xpbmcgZm9pbCM2MC4xMi40NC4wMC4wMAotdW5zcHNjNyM2MC4xMi40NC4wNS4wMCNCcmFzcyB3aXJlIzYwLjEyLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ0LjA2LjAwI1NpbHZlciBzaGVldHMgb3IgcGxhdGVzIzYwLjEyLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ0LjA3LjAwI1NpbHZlciB3aXJlIzYwLjEyLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ0LjA4LjAwI1Bld3RlciBwZWxsZXRzIG9yIHNob3RzIzYwLjEyLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ0LjA5LjAwI1Bld3RlciBpbmdvdHMjNjAuMTIuNDQuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDQuMTAuMDAjTnUgZ29sZCBzaGVldHMgcGxhdGVzIzYwLjEyLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ0LjExLjAwI051IGdvbGQgd2lyZSM2MC4xMi40NC4wMC4wMAotdW5zcHNjNyM2MC4xMi40NC4xMi4wMCNHYWx2YW5pemVkIHN0b3ZlcGlwZSB3aXJlIzYwLjEyLjQ0LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ1LjAwLjAwI1NjdWxwdHVyZSBzdXBwbGllcyBhbmQgYWNjZXNzb3JpZXMjNjAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDUuMDEuMDAjUGxhc3RlciB3cmFwIzYwLjEyLjQ1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ1LjAyLjAwI0Nhc3RpbmcgcmVzaW5zIzYwLjEyLjQ1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ1LjAzLjAwI1NjdWxwdHVyZSBhY2Nlc3NvcmllcyM2MC4xMi40NS4wMC4wMAotdW5zcHNjNyM2MC4xMi40NS4wNC4wMCNQdXp6bGUgcmFja3MjNjAuMTIuNDUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDUuMDUuMDAjQnViYmxlcyBvciBhY2Nlc3NvcmllcyM2MC4xMi40NS4wMC4wMAotdW5zcHNjNyM2MC4xMi40NS4wNi4wMCNQbGFzdGljIHNhbmQgb3Igd2F0ZXIgdG9vbHMgb3IgbW9sZHMgb3IgdG95cyM2MC4xMi40NS4wMC4wMAotdW5zcHNjNyM2MC4xMi40NS4wNy4wMCNQbGF5IHNhbmQjNjAuMTIuNDUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDUuMDguMDAjU2FuZCBvciB3YXRlciB0YWJsZXMgb3IgYWN0aXZpdHkgY2VudGVycyM2MC4xMi40NS4wMC4wMAotdW5zcHNjNyM2MC4xMi40NS4wOS4wMCNWZWhpY2xlIHNldHMjNjAuMTIuNDUuMDAuMDAKLXVuc3BzYzcjNjAuMTIuNDUuMTAuMDAjV2F0ZXJ3YXkgc2V0cyM2MC4xMi40NS4wMC4wMAotdW5zcHNjNyM2MC4xMi40NS4xMS4wMCNQbGF5IHRvb2xzIG9yIHBsYXkgdG9vbCBraXRzIzYwLjEyLjQ1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ1LjEyLjAwI1Njb290ZXIgYm9hcmRzIzYwLjEyLjQ1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ1LjEzLjAwI0JlYW5iYWdzIzYwLjEyLjQ1LjAwLjAwCi11bnNwc2M3IzYwLjEyLjQ1LjE0LjAwI1RhY3RpbGUgdG95cyM2MC4xMi40NS4wMC4wMAotdW5zcHNjNyM2MC4xMi40NS4xNS4wMCNDb2duaXRpdmUgdG95cyM2MC4xMi40NS4wMC4wMAotdW5zcHNjNyM2MC4xMy4wMC4wMC4wMCNNdXNpY2FsIEluc3RydW1lbnRzIGFuZCBwYXJ0cyBhbmQgYWNjZXNzb3JpZXMjNjAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTAuMDAuMDAjS2V5Ym9hcmQgaW5zdHJ1bWVudHMjNjAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTAuMDEuMDAjUGlhbm9zIzYwLjEzLjEwLjAwLjAwCi11bnNwc2M3IzYwLjEzLjEwLjAyLjAwI0FjY29yZGlvbnMjNjAuMTMuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTAuMDMuMDAjTXVzaWNhbCBvcmdhbnMjNjAuMTMuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTEuMDAuMDAjQnJhc3MgaW5zdHJ1bWVudHMjNjAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTEuMDEuMDAjVHJ1bXBldHMjNjAuMTMuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTEuMDIuMDAjVHJvbWJvbmVzIzYwLjEzLjExLjAwLjAwCi11bnNwc2M3IzYwLjEzLjExLjAzLjAwI1NvdXNhcGhvbmVzIzYwLjEzLjExLjAwLjAwCi11bnNwc2M3IzYwLjEzLjExLjA0LjAwI1NheG9waG9uZXMjNjAuMTMuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTEuMDUuMDAjV2hpc3RsZSM2MC4xMy4xMS4wMC4wMAotdW5zcHNjNyM2MC4xMy4xMi4wMC4wMCNXb29kd2luZCBpbnN0cnVtZW50cyM2MC4xMy4wMC4wMC4wMAotdW5zcHNjNyM2MC4xMy4xMi4wMS4wMCNDbGFyaW5ldHMjNjAuMTMuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTIuMDIuMDAjT2JvZXMjNjAuMTMuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTIuMDMuMDAjTXVzaWNhbCBmbHV0ZXMjNjAuMTMuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTIuMDQuMDAjUGljY29sb2VzIzYwLjEzLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEzLjEyLjA1LjAwI011c2ljYWwgY29ybmV0cyM2MC4xMy4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMy4xMi4wNi4wMCNCYWdwaXBlcyM2MC4xMy4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMy4xMi4wNy4wMCNIYXJtb25pY2FzIzYwLjEzLjEyLjAwLjAwCi11bnNwc2M3IzYwLjEzLjEyLjA4LjAwI0them9vcyM2MC4xMy4xMi4wMC4wMAotdW5zcHNjNyM2MC4xMy4xMy4wMC4wMCNTdHJpbmcgaW5zdHJ1bWVudHMjNjAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTMuMDEuMDAjSGFycHNpY2hvcmRzIzYwLjEzLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEzLjEzLjAyLjAwI0NsYXZpY2hvcmRzIzYwLjEzLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEzLjEzLjAzLjAwI0d1aXRhcnMjNjAuMTMuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTMuMDQuMDAjVmlvbGlucyM2MC4xMy4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMy4xMy4wNS4wMCNIYXJwcyM2MC4xMy4xMy4wMC4wMAotdW5zcHNjNyM2MC4xMy4xMy4wNi4wMCNCYW5qb2VzIzYwLjEzLjEzLjAwLjAwCi11bnNwc2M3IzYwLjEzLjE0LjAwLjAwI1BlcmN1c3Npb24gaW5zdHJ1bWVudHMjNjAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTQuMDEuMDAjQ3ltYmFscyM2MC4xMy4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMy4xNC4wMi4wMCNCZWxscyM2MC4xMy4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMy4xNC4wMy4wMCNUYW1ib3VyaW5lcyM2MC4xMy4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMy4xNC4wNC4wMCNDYXN0YW5ldHMjNjAuMTMuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTQuMDUuMDAjRHJ1bXMjNjAuMTMuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTQuMDYuMDAjWHlsb3Bob25lcyM2MC4xMy4xNC4wMC4wMAotdW5zcHNjNyM2MC4xMy4xNS4wMC4wMCNNdXNpY2FsIGluc3RydW1lbnQgcGFydHMgYW5kIGFjY2Vzc29yaWVzIzYwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEzLjE1LjAxLjAwI01ldHJvbm9tZXMjNjAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTUuMDIuMDAjUmVlZHMjNjAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTUuMDMuMDAjSW5zdHJ1bWVudCBzdHJpbmdzIG9yIHBpY2tzIzYwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEzLjE1LjA0LjAwI1R1bmluZyBwaW5zIzYwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEzLjE1LjA1LjAwI011c2ljYWwgaW5zdHJ1bWVudCBzdGFuZHMgb3Igc2hlZXQgaG9sZGVycyM2MC4xMy4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMy4xNS4wNi4wMCNBY2Nlc3NvcmllcyBmb3Igc3RyaW5nZWQgaW5zdHJ1bWVudHMjNjAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTUuMDcuMDAjUGVyY3Vzc2lvbiBpbnN0cnVtZW50IGFjY2Vzc29yeSM2MC4xMy4xNS4wMC4wMAotdW5zcHNjNyM2MC4xMy4xNS4wOC4wMCNNdXNpYyBib3hlcyBvciBtZWNoYW5pc21zIzYwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzYwLjEzLjE2LjAwLjAwI011c2ljYWwgaW5zdHJ1bWVudCBzZXRzIzYwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEzLjE2LjAxLjAwI1JoeXRobSBiYW5kIHNldHMjNjAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTcuMDAuMDAjQWx0ZXJuYXRpdmUgc291bmRzIG11c2ljYWwgaW5zdHJ1bWVudHMjNjAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTcuMDEuMDAjQm9vbXdoYWNrZXJzIzYwLjEzLjE3LjAwLjAwCi11bnNwc2M3IzYwLjEzLjE3LjAyLjAwI0Rpc2NvIHRhcHMjNjAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNjAuMTMuMTguMDAuMDAjTXVzaWMgYW5kIGRhbmNlIGFjY2Vzc29yaWVzIzYwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzYwLjEzLjE4LjAxLjAwI0RhbmNpbmcgc2NhcnZlcyM2MC4xMy4xOC4wMC4wMAotdW5zcHNjNyM2MC4xMy4xOC4wMi4wMCNSaHl0aG0gc3RpY2tzIG9yIGx1bW1pIHN0aWNrcyM2MC4xMy4xOC4wMC4wMAotdW5zcHNjNyM2MC4xMy4xOC4wMy4wMCNSaHl0aG0gd2FuZHMgb3IgaG9vcHMjNjAuMTMuMTguMDAuMDAKLXVuc3BzYzcjNjAuMTQuMDAuMDAuMDAjVG95cyBhbmQgZ2FtZXMjNjAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMDAuMDAjVG95cyM2MC4xNC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMC4wMS4wMCNUb3kgYmFsbG9vbnMgb3IgYmFsbHMjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMDIuMDAjRG9sbHMjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMDMuMDAjRG9sbCBob3VzZXMjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMDQuMDAjU3R1ZmZlZCBhbmltYWxzIG9yIHB1cHBldHMjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMDUuMDAjUGxheWhvdXNlcyM2MC4xNC4xMC4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMC4wNi4wMCNCdWlsZGluZyBibG9ja3MjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMDcuMDAjUmlkaW5nIHRveXMjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMDguMDAjUHVsbCB0b3lzIzYwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEwLjA5LjAwI0NoaWxkcmVucyBzY2llbmNlIGtpdHMjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMTAuMDAjVG95IHZlaGljbGVzIzYwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEwLjExLjAwI1RveSB0cmFpbnMjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMTIuMDAjSW5mbGF0YWJsZSB0b3lzIzYwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEwLjEzLjAwI0RvbGwgcGFydHMgb3IgYWNjZXNzb3JpZXMjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMTQuMDAjWW8geW9zIzYwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEwLjE1LjAwI0tpdGVzIzYwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEwLjE2LjAwI1BvZ3MjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMTcuMDAjS2FsZWlkb3Njb3BlcyM2MC4xNC4xMC4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMC4xOC4wMCNQb20gcG9tcyM2MC4xNC4xMC4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMC4xOS4wMCNQaW5hdGFzIzYwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEwLjIwLjAwI0Jvb21lcmFuZ3MjNjAuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTAuMjEuMDAjRmx5aW5nIGRpc2NzIzYwLjE0LjEwLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEwLjIyLjAwI1RveSBwYWlscyM2MC4xNC4xMC4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMS4wMC4wMCNHYW1lcyM2MC4xNC4wMC4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMS4wMS4wMCNFZHVjYXRpb25hbCBnYW1lcyM2MC4xNC4xMS4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMS4wMi4wMCNCb2FyZCBnYW1lcyM2MC4xNC4xMS4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMS4wMy4wMCNQbGF5aW5nIGNhcmRzIzYwLjE0LjExLjAwLjAwCi11bnNwc2M3IzYwLjE0LjExLjA0LjAwI1ZpZGVvIGdhbWVzIzYwLjE0LjExLjAwLjAwCi11bnNwc2M3IzYwLjE0LjExLjA1LjAwI1B1enpsZXMjNjAuMTQuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTEuMDYuMDAjRGljZSM2MC4xNC4xMS4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMS4wNy4wMCNCaW5nbyM2MC4xNC4xMS4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMS4wOC4wMCNDbGFzc2ljIGdhbWVzIzYwLjE0LjExLjAwLjAwCi11bnNwc2M3IzYwLjE0LjExLjA5LjAwI0NvbGxhYm9yYXRpdmUgZ2FtZXMjNjAuMTQuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTEuMTAuMDAjU3RyYXRlZ3kgZ2FtZXMjNjAuMTQuMTEuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTEuMTEuMDAjR2FtZSBhY2Nlc3NvcmllcyM2MC4xNC4xMS4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMS4xMi4wMCNHYW1lIGJvb2tzIzYwLjE0LjExLjAwLjAwCi11bnNwc2M3IzYwLjE0LjExLjEzLjAwI0xvdHRvIGdhbWVzIzYwLjE0LjExLjAwLjAwCi11bnNwc2M3IzYwLjE0LjExLjE0LjAwI01lbW9yeSBnYW1lcyM2MC4xNC4xMS4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMi4wMC4wMCNBY3RpdmUgUGxheSBlcXVpcG1lbnQgYW5kIGFjY2Vzc29yaWVzIzYwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEyLjAxLjAwI0JhbGFuY2Ugb3IgZ3Jvc3MgbW90b3IgZXF1aXBtZW50IzYwLjE0LjEyLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEyLjAyLjAwI0JhbGwgcG9vbHMgb3IgYWNjZXNzb3JpZXMjNjAuMTQuMTIuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTIuMDMuMDAjUGxheSBob3VzZXMgb3IgaHV0cyM2MC4xNC4xMi4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMi4wNC4wMCNUcmlrZXMgb3Igd2Fnb25zIzYwLjE0LjEyLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEyLjA1LjAwI1NvZnQgcGxheSBjZW50ZXJzIzYwLjE0LjEyLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEzLjAwLjAwI0NoaWxkcmVucyBibG9ja3MgYW5kIGJ1aWxkaW5nIHN5c3RlbXMjNjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTMuMDIuMDAjQ29uc3RydWN0aW9uIHNldHMjNjAuMTQuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTMuMDMuMDAjUGxheW1hdHMjNjAuMTQuMTMuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTMuMDQuMDAjUmFpbHBsYXkgc3lzdGVtcyBvciBhY2Nlc3NvcmllcyM2MC4xNC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMy4wNS4wMCNVbml0IGJsb2NrcyM2MC4xNC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xNC4xMy4wNi4wMCNQbGF5IHZlaGljbGVzIzYwLjE0LjEzLjAwLjAwCi11bnNwc2M3IzYwLjE0LjEzLjA3LjAwI1BsYXkgYW5pbWFscyM2MC4xNC4xMy4wMC4wMAotdW5zcHNjNyM2MC4xNC4xNC4wMC4wMCNEcmFtYXRpYyBwbGF5IGVxdWlwbWVudCBhbmQgYWNjZXNzb3JpZXMjNjAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTQuMDEuMDAjQ29zdHVtZXMgb3IgYWNjZXNzb3JpZXMjNjAuMTQuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTQuMDIuMDAjRHJlc3MgdXAgQ2VudGVycyM2MC4xNC4xNC4wMC4wMAotdW5zcHNjNyM2MC4xNC4xNC4wMy4wMCNIb3VzZWtlZXBpbmcgdW5pdHMgb3IgYWNjZXNzb3JpZXMjNjAuMTQuMTQuMDAuMDAKLXVuc3BzYzcjNjAuMTQuMTQuMDQuMDAjUGxheSBmb29kIGRpc2hlcyBvciBhY2Nlc3NvcmllcyM2MC4xNC4xNC4wMC4wMAotdW5zcHNjNyM2MC4xNC4xNC4wNS4wMCNQcmV0ZW5kIHBsYXkga2l0cyBvciBzdXBwbGllcyM2MC4xNC4xNC4wMC4wMAotdW5zcHNjNyM3MC4wMC4wMC4wMC4wMCNGYXJtaW5nIGFuZCBGaXNoaW5nIGFuZCBGb3Jlc3RyeSBhbmQgV2lsZGxpZmUgQ29udHJhY3RpbmcgU2VydmljZXMjNzAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTAuMDAuMDAuMDAjRmlzaGVyaWVzIGFuZCBhcXVhY3VsdHVyZSM3MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNS4wMC4wMCNGaXNoZXJpZXMgb3BlcmF0aW9ucyM3MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNS4wMS4wMCNDb21tZXJjaWFsIGZpc2hpbmcgb3BlcmF0aW9ucyM3MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNS4wMi4wMCNGaXNoaW5nIHBvcnQgc2VydmljZXMjNzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTAuMTUuMDMuMDAjRmlzaGluZyBvbnNob3JlIGZhY2lsaXRpZXMjNzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTAuMTUuMDQuMDAjRGVlcCBzZWEgZmlzaGluZyBvcGVyYXRpb25zIzcwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzcwLjEwLjE1LjA1LjAwI1NvbmFyIGZpc2hpbmcjNzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTAuMTUuMDYuMDAjV2hhbGluZyM3MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNS4wNy4wMCNUcmF3bGluZyM3MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNS4wOC4wMCNMaW5lIGZpc2hpbmcjNzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTAuMTUuMDkuMDAjU2VpbmUgb3BlcmF0aW9ucyM3MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNS4xMC4wMCNGaXNoaW5nIG5ldHMjNzAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTAuMTYuMDAuMDAjRmlzaGVyaWVzIG92ZXJzaWdodCM3MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNi4wMS4wMCNGaXNoZXJ5IGluZm9ybWF0aW9uIG9yIGRvY3VtZW50YXRpb24gc2VydmljZXMjNzAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTAuMTYuMDIuMDAjRmlzaGVyeSByZXNlYXJjaCBvciBleHBlcmltZW50YXRpb24gc2VydmljZXMjNzAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTAuMTYuMDMuMDAjRmlzaGVyeSBkYXRhIGNvbGxlY3Rpb24gb3IgZGlzdHJpYnV0aW9uIzcwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzcwLjEwLjE2LjA0LjAwI0Zpc2hlcnkgY29tbWVyY2lhbCBtYW5hZ2VtZW50IzcwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzcwLjEwLjE2LjA1LjAwI0Zpc2hpbmcgZmxlZXQgbWFuYWdlbWVudCM3MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNi4wNi4wMCNGaXNoaW5nIGNvb3BlcmF0aXZlcyM3MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNi4wNy4wMCNGaXNoZXJ5IHJlc291cmNlcyBwcm90ZWN0aW9uIG9yIGNvbnNlcnZhdGlvbiM3MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNy4wMC4wMCNGaXNoZXJ5IGluZHVzdHJ5IGFuZCB0ZWNobm9sb2d5IzcwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzcwLjEwLjE3LjAxLjAwI0Zpc2hpbmcgdGVjaG5vbG9neSBzZXJ2aWNlcyM3MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMC4xNy4wMi4wMCNGaXNoZXJ5IGJ5IHByb2R1Y3RzIHByb2R1Y3Rpb24gc2VydmljZXMjNzAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTAuMTcuMDMuMDAjRmlzaCBwcm9kdWN0aW9uIzcwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzcwLjEwLjE3LjA0LjAwI0Zpc2ggc3RvcmFnZSM3MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMC4xOC4wMC4wMCNGaXNoZXJpZXMgcmVzb3VyY2VzIzcwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzcwLjEwLjE4LjAxLjAwI0lubGFuZCB3YXRlciBmaXNoZXJ5IHJlc291cmNlcyM3MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM3MC4xMC4xOC4wMi4wMCNGaXNoIHBvbmQgcmVzb3VyY2VzIzcwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzcwLjEwLjE4LjAzLjAwI0Zpc2ggaGF0Y2hlcmllcyM3MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM3MC4xMC4xOC4wNC4wMCNGaXNoIHJhbmNoZXMjNzAuMTAuMTguMDAuMDAKLXVuc3BzYzcjNzAuMTAuMTguMDUuMDAjRmlzaGVyeSBieSBwcm9kdWN0IHJlc291cmNlcyM3MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM3MC4xMC4xOC4wNi4wMCNGaXNoZXJpZXMgcmVzb3VyY2UgZXZhbHVhdGlvbiM3MC4xMC4xOC4wMC4wMAotdW5zcHNjNyM3MC4xMC4xOS4wMC4wMCNBcXVhY3VsdHVyZSM3MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM3MC4xMC4xOS4wMS4wMCNNYXJpY3VsdHVyZSM3MC4xMC4xOS4wMC4wMAotdW5zcHNjNyM3MC4xMC4xOS4wMi4wMCNPc3RyZWljdWx0dXJlIzcwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzcwLjEwLjE5LjAzLjAwI1NoZWxsZmlzaCBjdWx0dXJlIzcwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzcwLjEwLjE5LjA0LjAwI1NocmltcCBmYXJtaW5nIzcwLjEwLjE5LjAwLjAwCi11bnNwc2M3IzcwLjEwLjE5LjA1LjAwI0Zpc2ggZmFybWluZyM3MC4xMC4xOS4wMC4wMAotdW5zcHNjNyM3MC4xMS4wMC4wMC4wMCNIb3J0aWN1bHR1cmUjNzAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTUuMDAuMDAjUGxhbnRzIGFuZCBvcm5hbWVudGFsIHRyZWVzIzcwLjExLjAwLjAwLjAwCi11bnNwc2M3IzcwLjExLjE1LjAxLjAwI1BsYW50aW5nIHNlcnZpY2VzIG9yIG9ybmFtZW50YWwgcGxhbnQgb3IgYnVzaCBvciB0cmVlIzcwLjExLjE1LjAwLjAwCi11bnNwc2M3IzcwLjExLjE1LjAyLjAwI1BydW5pbmcgc2VydmljZXMgb3Igb3JuYW1lbnRhbCBwbGFudCBvciBidXNoIzcwLjExLjE1LjAwLjAwCi11bnNwc2M3IzcwLjExLjE1LjAzLjAwI1RyZWUgdHJpbW1pbmcgc2VydmljZXMjNzAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTUuMDQuMDAjQnJhY2luZyBzZXJ2aWNlcyM3MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMS4xNS4wNS4wMCNUcmVlIHN1cmdlcnkgc2VydmljZXMjNzAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTUuMDYuMDAjQXJib3Jpc3Qgc2VydmljZXMjNzAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTUuMDcuMDAjUmVtb3ZhbCBzZXJ2aWNlcyBvciBvcm5hbWVudGFsIHBsYW50IG9yIGJ1c2ggb3IgdHJlZSM3MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMS4xNS4wOC4wMCNQbGFudHMgb3Igb3JuYW1lbnRhbCB0cmVlIHNwcmF5aW5nIHNlcnZpY2VzIzcwLjExLjE1LjAwLjAwCi11bnNwc2M3IzcwLjExLjE2LjAwLjAwI0Zsb3dlcmluZyBwbGFudHMjNzAuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTYuMDEuMDAjUGxhbnRpbmcgc2VydmljZXMjNzAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTYuMDIuMDAjTnVyc2VyeSBzZXJ2aWNlcyM3MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMS4xNi4wMy4wMCNGbG9yaWN1bHR1cmUgc2VydmljZXMjNzAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTcuMDAuMDAjUGFya3MgYW5kIGdhcmRlbnMgYW5kIG9yY2hhcmRzIzcwLjExLjAwLjAwLjAwCi11bnNwc2M3IzcwLjExLjE3LjAxLjAwI09yY2hhcmQgbWFuYWdlbWVudCBvciBtYWludGVuYW5jZSBzZXJ2aWNlcyM3MC4xMS4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMS4xNy4wMi4wMCNWaW5leWFyZCBtYW5hZ2VtZW50IG9yIG1haW50ZW5hbmNlIHNlcnZpY2VzIzcwLjExLjE3LjAwLjAwCi11bnNwc2M3IzcwLjExLjE3LjAzLjAwI0dhcmRlbiBwbGFudGluZyBvciBtYWludGVuYW5jZSBzZXJ2aWNlcyM3MC4xMS4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMS4xNy4wNC4wMCNIb3J0aWN1bHR1cmFsIGNvdW5zZWxpbmcgc2VydmljZXMjNzAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTcuMDUuMDAjQ2VtZXRlcnkgdXBrZWVwIHNlcnZpY2VzIzcwLjExLjE3LjAwLjAwCi11bnNwc2M3IzcwLjExLjE3LjA2LjAwI0xhd24gY2FyZSBzZXJ2aWNlcyM3MC4xMS4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMS4xNy4wNy4wMCNIaWdod2F5IGxhd24gbWFpbnRlbmFuY2Ugc2VydmljZXMjNzAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTcuMDguMDAjTXVsY2hpbmcgc2VydmljZXMjNzAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTcuMDkuMDAjU2VlZGluZyBzZXJ2aWNlcyM3MC4xMS4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMS4xNy4xMC4wMCNNb3dpbmcgc2VydmljZXMjNzAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTcuMTEuMDAjU3ByaWdnaW5nIHNlcnZpY2VzIzcwLjExLjE3LjAwLjAwCi11bnNwc2M3IzcwLjExLjE3LjEyLjAwI1BhcmtzIG9yIGdhcmRlbnMgc3ByYXlpbmcgc2VydmljZXMjNzAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTEuMTcuMTMuMDAjUGFya3MgbWFuYWdlbWVudCBvciBtYWludGVuYW5jZSBzZXJ2aWNlcyM3MC4xMS4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMi4wMC4wMC4wMCNMaXZlc3RvY2sgc2VydmljZXMjNzAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMTUuMDAuMDAjRGFpcnlpbmcjNzAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMTUuMDEuMDAjRGFpcnkgaGVyZCBtYW5hZ2VtZW50IzcwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE1LjAyLjAwI0RhaXJ5IGluZHVzdHJ5IGRldmVsb3BtZW50IzcwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE1LjAzLjAwI0RhaXJ5IHRlY2hub2xvZ3kjNzAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMTUuMDQuMDAjRGFpcnkgbGFib3JhdG9yaWVzIHNlcnZpY2VzIzcwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE1LjA1LjAwI0RhaXJ5IGZhcm0gaW4gaG91c2UgcHJvY2Vzc2luZyM3MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMi4xNi4wMC4wMCNMaXZlc3RvY2sgaW5kdXN0cnkjNzAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMTYuMDEuMDAjTGl2ZXN0b2NrIGJyZWVkaW5nIzcwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE2LjAyLjAwI0xpdmVzdG9jayBnZW5ldGljcyBzZXJ2aWNlcyM3MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMi4xNi4wMy4wMCNTZXJpY3VsdHVyZSM3MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMi4xNi4wNC4wMCNBbmltYWwgaHVzYmFuZHJ5IzcwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE2LjA1LjAwI0Zhcm0gcmVhcmluZyBzeXN0ZW1zIzcwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE2LjA2LjAwI1BvdWx0cnkgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMi4xNi4wNy4wMCNTbWFsbCBhbmltYWwgYnJlZWRpbmcgc2VydmljZXMjNzAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMTYuMDguMDAjQm92aW5lIHByb2R1Y3Rpb24gc2VydmljZXMjNzAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMTYuMTAuMDAjQXBpY3VsdHVyZSM3MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMi4xNy4wMC4wMCNMaXZlc3RvY2sgbWFuYWdlbWVudCM3MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MC4xMi4xNy4wMS4wMCNMaXZlc3RvY2sgc2VsZWN0aW9uIzcwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE3LjAyLjAwI0xpdmVzdG9jayBzaG93aW5nIHNlcnZpY2VzIzcwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE3LjAzLjAwI0xpdmVzdG9jayBzbGF1Z2h0ZXJpbmcgc2VydmljZXMjNzAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMTcuMDQuMDAjSGVyZCBtYW5hZ2VtZW50IzcwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE3LjA1LjAwI0xpdmVzdG9jayBicmVlZGluZyBvciBncm9vbWluZyBzZXJ2aWNlcyM3MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMi4xOC4wMC4wMCNQZXRzIGluZHVzdHJ5IzcwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzcwLjEyLjE4LjAxLjAwI1BldCBicmVlZGluZyBzZXJ2aWNlcyM3MC4xMi4xOC4wMC4wMAotdW5zcHNjNyM3MC4xMi4xOC4wMi4wMCNQZXQgZ3Jvb21pbmcgc2VydmljZXMjNzAuMTIuMTguMDAuMDAKLXVuc3BzYzcjNzAuMTIuMTguMDMuMDAjS2VubmVscyBzZXJ2aWNlcyM3MC4xMi4xOC4wMC4wMAotdW5zcHNjNyM3MC4xMi4xOS4wMC4wMCNQYXN0dXJlIGFuZCByYW5nZSBzZXJ2aWNlcyM3MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MC4xMi4xOS4wMS4wMCNQYXN0dXJlIGltcHJvdmVtZW50IzcwLjEyLjE5LjAwLjAwCi11bnNwc2M3IzcwLjEyLjE5LjAyLjAwI1JhbmdlIG1hbmFnZW1lbnQjNzAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMTkuMDMuMDAjUmFuZ2UgcmVzZWFyY2gjNzAuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMjAuMDAuMDAjQW5pbWFsIGhlYWx0aCM3MC4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MC4xMi4yMC4wMS4wMCNBbmltYWwgbnV0cml0aW9uIzcwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzcwLjEyLjIwLjAyLjAwI0FuaW1hbCBkaXNlYXNlIGNvbnRyb2wjNzAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMjAuMDMuMDAjQW5pbWFsIHRyeXBhbm9zb21pYXNpcyM3MC4xMi4yMC4wMC4wMAotdW5zcHNjNyM3MC4xMi4yMC4wNC4wMCNGb290IG9yIG1vdXRoIGNvbnRyb2wgc2VydmljZXMjNzAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMjAuMDUuMDAjQW5pbWFsIGhlYWx0aCBwcmV2ZW50aXZlIG1lZGljYXRpb24gc2VydmljZXMjNzAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMjAuMDYuMDAjQW5pbWFsIHZhY2NpbmF0aW9uIHNlcnZpY2VzIzcwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzcwLjEyLjIwLjA3LjAwI1ZldGVyaW5hcnkgYWRtaW5pc3RyYXRpb24jNzAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMjAuMDguMDAjVmV0ZXJpbmFyeSBsYWJvcmF0b3J5IHRlY2hub2xvZ3kjNzAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzAuMTIuMjAuMDkuMDAjQW5pbWFsIGhvc3BpdGFsIHNlcnZpY2VzIzcwLjEyLjIwLjAwLjAwCi11bnNwc2M3IzcwLjEyLjIwLjEwLjAwI0FuaW1hbCBoZWFsdGggaW5mb3JtYXRpb24gc2VydmljZXMjNzAuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMDAuMDAuMDAjTGFuZCBhbmQgc29pbCBwcmVwYXJhdGlvbiBhbmQgbWFuYWdlbWVudCBhbmQgcHJvdGVjdGlvbiM3MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNS4wMC4wMCNMYW5kIGFuZCBzb2lsIHByb3RlY3Rpb24jNzAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMTUuMDEuMDAjRGVzZXJ0aWZpY2F0aW9uIGFzc2Vzc21lbnQgb3IgY29udHJvbCBzZXJ2aWNlcyM3MC4xMy4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNS4wMi4wMCNTb2lsIGNvbnNlcnZhdGlvbiBvciBwcm90ZWN0aW9uIHNlcnZpY2VzIzcwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzcwLjEzLjE1LjAzLjAwI0Vyb3Npb24gY29udHJvbCBzZXJ2aWNlcyM3MC4xMy4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNS4wNC4wMCNTYW5kIGR1bmUgZml4YXRpb24jNzAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMTUuMDUuMDAjU29pbCBjb25kaXRpb25pbmcjNzAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMTUuMDYuMDAjU29pbCBpbXByb3ZlbWVudCM3MC4xMy4xNS4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNi4wMC4wMCNMYW5kIGFuZCBzb2lsIHByZXBhcmF0aW9uIzcwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzcwLjEzLjE2LjAxLjAwI0ZlcnRpbGl6ZXIgYXBwbGljYXRpb24gc2VydmljZXMjNzAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMTYuMDIuMDAjTGltZSBzcHJlYWRpbmcgc2VydmljZXMjNzAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMTYuMDMuMDAjUGxvd2luZyBzZXJ2aWNlcyM3MC4xMy4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNi4wNC4wMCNTZWVkIGJlZCBwcmVwYXJhdGlvbiBzZXJ2aWNlcyM3MC4xMy4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNi4wNS4wMCNTb2lsIGNoZW1pY2FsIHRyZWF0bWVudCBzZXJ2aWNlcyM3MC4xMy4xNi4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNy4wMC4wMCNMYW5kIGFuZCBzb2lsIG1hbmFnZW1lbnQjNzAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMTcuMDEuMDAjTGFuZCB1c2UgcGxhbm5pbmcjNzAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMTcuMDIuMDAjTGFuZCBldmFsdWF0aW9uIzcwLjEzLjE3LjAwLjAwCi11bnNwc2M3IzcwLjEzLjE3LjAzLjAwI0xhbmQgcmVjbGFtYXRpb24jNzAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMTcuMDQuMDAjQWdybyBlY29sb2dpY2FsIHpvbmVzIGFzc2Vzc21lbnQgb3IgcGxhbm5pbmcjNzAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTMuMTcuMDUuMDAjU29pbCBjbGFzc2lmaWNhdGlvbiM3MC4xMy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNy4wNi4wMCNXYXRlcnNoZWQgbWFuYWdlbWVudCM3MC4xMy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNy4wNy4wMCNTb2lsIGZlcnRpbGl0eSBhbmFseXNpcyM3MC4xMy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xMy4xNy4wOC4wMCNQZWRvbG9neSM3MC4xMy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNC4wMC4wMC4wMCNDcm9wIHByb2R1Y3Rpb24gYW5kIG1hbmFnZW1lbnQgYW5kIHByb3RlY3Rpb24jNzAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTUuMDAuMDAjQ3JvcCBwcm9kdWN0aW9uIzcwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzcwLjE0LjE1LjAxLjAwI1NlZWQgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNS4wMi4wMCNIeWRyb3BvbmljcyM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNS4wMy4wMCNHcmFzcyBvciBmb2RkZXIgcHJvZHVjdGlvbiM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNS4wNC4wMCNBcm9tYXRpYyBwbGFudHMgcHJvZHVjdGlvbiM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNS4wNS4wMCNCZXZlcmFnZSBjcm9wcyBwcm9kdWN0aW9uIzcwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE1LjA2LjAwI0NvY29hIHByb2R1Y3Rpb24jNzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTUuMDcuMDAjU3VnYXJiZWV0IG9yIHN1Z2FyY2FuZSBwcm9kdWN0aW9uIzcwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE1LjA4LjAwI051dCBwcm9kdWN0aW9uIzcwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE1LjA5LjAwI0Vzc2VudGlhbCBvaWwgY3JvcHMgcHJvZHVjdGlvbiM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNS4xMC4wMCNGaWJlciBjcm9wcyBwcm9kdWN0aW9uIzcwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE1LjExLjAwI0ZydWl0IHByb2R1Y3Rpb24jNzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTUuMTIuMDAjR3JhaW4gb3IgbGVndW1lIHByb2R1Y3Rpb24jNzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTUuMTMuMDAjSW5zZWN0aWNpZGFsIHBsYW50cyBwcm9kdWN0aW9uIzcwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE1LjE0LjAwI01lZGljaW5hbCBwbGFudHMgcHJvZHVjdGlvbiM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNS4xNS4wMCNSb290cyBvciB0dWJlcnMgcHJvZHVjdGlvbiM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNS4xNi4wMCNDZXJlYWxzIHByb2R1Y3Rpb24jNzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTUuMTcuMDAjUnViYmVyIHBsYW50IHByb2R1Y3Rpb24jNzAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTUuMTguMDAjU3BpY2UgY3JvcHMgcHJvZHVjdGlvbiM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNS4xOS4wMCNUb2JhY2NvIGNyb3AgcHJvZHVjdGlvbiM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNS4yMC4wMCNWZWdldGFibGUgcHJvZHVjdGlvbiM3MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNi4wMC4wMCNDcm9wIHByb3RlY3Rpb24jNzAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTYuMDEuMDAjQ3JvcCBzcHJheWluZyBzZXJ2aWNlcyM3MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNi4wMi4wMCNCaW9sb2dpY2FsIGNvbnRyb2wgc2VydmljZXMjNzAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTYuMDMuMDAjV2VlZCBjb250cm9sIHNlcnZpY2VzIzcwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE2LjA0LjAwI0hlcmJpY2lkZSBzZXJ2aWNlcyM3MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNi4wNS4wMCNJbnRlZ3JhdGVkIHBlc3QgbWFuYWdlbWVudCBzZXJ2aWNlcyM3MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNi4wNi4wMCNQbGFudCBwYXRob2xvZ3kjNzAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTYuMDcuMDAjTG9jdXN0IGNvbnRyb2wjNzAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTcuMDAuMDAjQ3JvcCBtYW5hZ2VtZW50IzcwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzcwLjE0LjE3LjAxLjAwI0dyZWVuaG91c2Ugc2VydmljZXMjNzAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTcuMDIuMDAjRmVydGlsaXplciBzZXJ2aWNlcyM3MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNy4wMy4wMCNDcm9wIGFkbWluaXN0cmF0aW9uIzcwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE3LjA0LjAwI0Nyb3Agc3Vic3RpdHV0aW9uIzcwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE3LjA1LjAwI0V4dGVuc2lvbiBzZXJ2aWNlcyM3MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNy4wNi4wMCNDcm9wIHNwZWNpYWxpemF0aW9uIzcwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE3LjA3LjAwI0N1bHRpdmF0aW9uIGZhcm1pbmcgc3lzdGVtIG1hbmFnZW1lbnQjNzAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTcuMDguMDAjQ3JvcCByb3RhdGlvbiBvciBkaXZlcnNpZmljYXRpb24gY291bnNlbGluZyBzZXJ2aWNlcyM3MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNy4wOS4wMCNQbGFudCB0YXhvbm9teSBzZXJ2aWNlcyM3MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNC4xNy4xMC4wMCNGaWVsZCBjcm9wIGVudG9tb2xvZ3kjNzAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTguMDAuMDAjQ3JvcCBwbGFudGluZyBhbmQgY3VsdGl2YXRpb24jNzAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTguMDEuMDAjT3JjaGFyZCB0cmVlIG9yIHZpbmUgcGxhbnRpbmcgc2VydmljZXMjNzAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTguMDIuMDAjU3Byb3V0IG9yIHR3aWcgc2VydmljZXMjNzAuMTQuMTguMDAuMDAKLXVuc3BzYzcjNzAuMTQuMTguMDMuMDAjQ3JvcCBjdWx0aXZhdGluZyBzZXJ2aWNlcyM3MC4xNC4xOC4wMC4wMAotdW5zcHNjNyM3MC4xNC4xOC4wNC4wMCNDcm9wIHBsYW50aW5nIHNlcnZpY2VzIzcwLjE0LjE4LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE5LjAwLjAwI0Nyb3AgaGFydmVzdGluZyM3MC4xNC4wMC4wMC4wMAotdW5zcHNjNyM3MC4xNC4xOS4wMS4wMCNDYXNoIGdyYWlucyBoYXJ2ZXN0aW5nIHNlcnZpY2VzIzcwLjE0LjE5LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE5LjAyLjAwI0ZydWl0IG9yIHRyZWUgbnV0cyBoYXJ2ZXN0aW5nIHNlcnZpY2VzIzcwLjE0LjE5LjAwLjAwCi11bnNwc2M3IzcwLjE0LjE5LjAzLjAwI0ZpZWxkIGNyb3AgaGFydmVzdGluZyBzZXJ2aWNlcyM3MC4xNC4xOS4wMC4wMAotdW5zcHNjNyM3MC4xNC4xOS4wNC4wMCNTZWVkIGhhcnZlc3Rpbmcgc2VydmljZXMjNzAuMTQuMTkuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMjAuMDAuMDAjUG9zdCBoYXJ2ZXN0aW5nIGNyb3AgcHJvY2Vzc2luZyM3MC4xNC4wMC4wMC4wMAotdW5zcHNjNyM3MC4xNC4yMC4wMS4wMCNTaWxvcyByZWxhdGVkIHNlcnZpY2VzIzcwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzcwLjE0LjIwLjAyLjAwI0dyYWluIGRyeWVycyBzZXJ2aWNlcyM3MC4xNC4yMC4wMC4wMAotdW5zcHNjNyM3MC4xNC4yMC4wMy4wMCNDcm9wIHByb2Nlc3Npbmcgc2VydmljZXMjNzAuMTQuMjAuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMjAuMDQuMDAjRmllbGQgY3JvcHMgbWFya2V0IHByZXBhcmF0aW9uIHNlcnZpY2VzIzcwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzcwLjE0LjIwLjA1LjAwI0Nhc2ggZ3JhaW4gY3JvcHMgbWFya2V0IHByZXBhcmF0aW9uIHNlcnZpY2VzIzcwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzcwLjE0LjIwLjA2LjAwI1ZlZ2V0YWJsZSBjcm9wcyBtYXJrZXQgcHJlcGFyYXRpb24gc2VydmljZXMjNzAuMTQuMjAuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMjAuMDcuMDAjRnJ1aXQgY3JvcHMgbWFya2V0IHByZXBhcmF0aW9uIHNlcnZpY2VzIzcwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzcwLjE0LjIwLjA4LjAwI1RyZWUgbnV0IGNyb3BzIG1hcmtldCBwcmVwYXJhdGlvbiBzZXJ2aWNlcyM3MC4xNC4yMC4wMC4wMAotdW5zcHNjNyM3MC4xNC4yMC4wOS4wMCNHaW5uaW5nIHNlcnZpY2VzIzcwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzcwLjE0LjIwLjEwLjAwI0Nyb3AgY2xlYW5pbmcgc2VydmljZXMjNzAuMTQuMjAuMDAuMDAKLXVuc3BzYzcjNzAuMTQuMjAuMTEuMDAjQ29vbGluZyBvciByZWZyaWdlcmF0aW9uIHNlcnZpY2VzIzcwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzcwLjE0LjIwLjEyLjAwI1NwcmF5aW5nIHNlcnZpY2VzIzcwLjE0LjIwLjAwLjAwCi11bnNwc2M3IzcwLjE1LjAwLjAwLjAwI0ZvcmVzdHJ5IzcwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzcwLjE1LjE1LjAwLjAwI0ZvcmVzdHJ5IG1hbmFnZW1lbnQjNzAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTUuMDEuMDAjRm9yZXN0IHJlc291cmNlcyBtYW5hZ2VtZW50IHNlcnZpY2VzIzcwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE1LjAyLjAwI0ZvcmVzdCBwZXN0IGNvbnRyb2wjNzAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTUuMDMuMDAjRm9yZXN0IG9yZ2FuaXphdGlvbnMgb3IgYXNzb2NpYXRpb25zIG9yIGNvb3BlcmF0aXZlcyM3MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNS4xNS4wNC4wMCNGb3Jlc3QgYWRtaW5pc3RyYXRpb24gc2VydmljZXMjNzAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTUuMDUuMDAjRm9yZXN0IGludmVudG9yeSM3MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNS4xNS4wNi4wMCNGb3Jlc3QgbW9uaXRvcmluZyBvciBldmFsdWF0aW9uIzcwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE1LjA3LjAwI0FmZm9yZXN0YXRpb24gc2VydmljZXMjNzAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTUuMDguMDAjRm9yZXN0cnkgZXh0ZW5zaW9uIHNlcnZpY2VzIzcwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE1LjA5LjAwI0ZvcmVzdCBudXJzZXJ5IG1hbmFnZW1lbnQjNzAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTUuMTAuMDAjRm9yZXN0IHNlY3RvcmFsIHBsYW5uaW5nIzcwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE2LjAwLjAwI0ZvcmVzdHJ5IGluZHVzdHJ5IzcwLjE1LjAwLjAwLjAwCi11bnNwc2M3IzcwLjE1LjE2LjAxLjAwI05vbndvb2QgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM3MC4xNS4xNi4wMi4wMCNFc3NlbnRpYWwgb2lscyBwcm9kdWN0aW9uIzcwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE2LjAzLjAwI1RpbWJlciBwcm9kdWN0aW9uIHNlcnZpY2VzIzcwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE2LjA0LjAwI0R5ZXMgcHJvZHVjdGlvbiM3MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM3MC4xNS4xNi4wNS4wMCNFZGlibGUgZm9yZXN0cnkgcHJvZHVjdGlvbiM3MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM3MC4xNS4xNi4wNi4wMCNXb29kIHRlc3Rpbmcgc2VydmljZXMjNzAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTYuMDcuMDAjVGltYmVyIHByb2R1Y3Rpb24jNzAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTcuMDAuMDAjRm9yZXN0cnkgaGFydmVzdGluZyM3MC4xNS4wMC4wMC4wMAotdW5zcHNjNyM3MC4xNS4xNy4wMS4wMCNMb2dnaW5nIG9yIGZlbGxpbmcjNzAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTcuMDIuMDAjRm9yZXN0IGhhcnZlc3RpbmcgbW91bnRhaW5vdXMgYXJlYXMjNzAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTcuMDMuMDAjRm9yZXN0IGhhcnZlc3Rpbmcgc3BlY2lhbGl6ZWQgb3BlcmF0aW9ucyM3MC4xNS4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNS4xNy4wNC4wMCNQbGFudGF0aW9uIGhhcnZlc3RpbmcjNzAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTcuMDUuMDAjU3dhbXAgb3IgbWFuZ3JvdmUgZm9yZXN0IGhhcnZlc3RpbmcjNzAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTcuMDYuMDAjVGVtcGVyYXRlIGZvcmVzdCBoYXJ2ZXN0aW5nIzcwLjE1LjE3LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE3LjA3LjAwI1Ryb3BpY2FsIGhpZ2ggZm9yZXN0cyBoYXJ2ZXN0aW5nIzcwLjE1LjE3LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE4LjAwLjAwI0ZvcmVzdHJ5IGNvbnNlcnZhdGlvbiBzZXJ2aWNlcyM3MC4xNS4wMC4wMC4wMAotdW5zcHNjNyM3MC4xNS4xOC4wMS4wMCNDb25zZXJ2YXRpb24gb2YgZm9yZXN0IGdlbmV0aWMgcmVzb3VyY2VzIzcwLjE1LjE4LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE4LjAyLjAwI0ZvcmVzdCBwcm90ZWN0aW9uIHNlcnZpY2VzIzcwLjE1LjE4LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE4LjAzLjAwI0ZvcmVzdCBhcmlkIGxhbmQgcmVoYWJpbGl0YXRpb24jNzAuMTUuMTguMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTguMDQuMDAjRm9yZXN0IHdpbmQgYnJlYWtzIG9yIHNoZWx0ZXIgYmVsdHMjNzAuMTUuMTguMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTguMDUuMDAjRm9yZXN0IHJlc2VydmVzIG9yIHBhcmtzIGNvbnNlcnZhdGlvbiBzZXJ2aWNlcyM3MC4xNS4xOC4wMC4wMAotdW5zcHNjNyM3MC4xNS4xOC4wNi4wMCNGb3Jlc3RyeSB3YXRlcnNoZWQgbWFuYWdlbWVudCM3MC4xNS4xOC4wMC4wMAotdW5zcHNjNyM3MC4xNS4xOC4wNy4wMCNGb3Jlc3RyeSB0b3JyZW50IGNvbnRyb2wjNzAuMTUuMTguMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTkuMDAuMDAjRm9yZXN0cnkgcmVzb3VyY2VzIzcwLjE1LjAwLjAwLjAwCi11bnNwc2M3IzcwLjE1LjE5LjAxLjAwI0ZvcmVzdCByZXNvdXJjZXMgZGV2ZWxvcG1lbnQjNzAuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTkuMDIuMDAjQWdyb2ZvcmVzdHJ5IHJlc291cmNlcyM3MC4xNS4xOS4wMC4wMAotdW5zcHNjNyM3MC4xNS4xOS4wMy4wMCNGdWVsIHdvb2QgcmVzb3VyY2VzIzcwLjE1LjE5LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE5LjA0LjAwI1NpbHZpY3VsdHVyZSM3MC4xNS4xOS4wMC4wMAotdW5zcHNjNyM3MC4xNS4xOS4wNS4wMCNBcmlkIHJhaW5mZWQgcGxhbnRhdGlvbiByZXNvdXJjZXMjNzAuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNzAuMTUuMTkuMDYuMDAjQnJvYWQgbGVhZmVkIHBsYW50YXRpb24gcmVzb3VyY2VzIzcwLjE1LjE5LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE5LjA3LjAwI0NvbmlmZXJzIHBsYW50YXRpb25zIzcwLjE1LjE5LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE5LjA5LjAwI1Ryb3BpY2FsIHJhaW4gZm9yZXN0IHBsYW50YXRpb25zIzcwLjE1LjE5LjAwLjAwCi11bnNwc2M3IzcwLjE1LjE5LjEwLjAwI01hbmdyb3ZlIHN3YW1wcyByZXNvdXJjZXMjNzAuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNzAuMTYuMDAuMDAuMDAjV2lsZGxpZmUgYW5kIGZsb3JhIzcwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzcwLjE2LjE1LjAwLjAwI0ZhdW5hIzcwLjE2LjAwLjAwLjAwCi11bnNwc2M3IzcwLjE2LjE1LjAxLjAwI0ZhdW5hIHByb3RlY3Rpb24jNzAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTYuMTYuMDAuMDAjRmxvcmEjNzAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTYuMTYuMDEuMDAjRmxvcmEgcHJvdGVjdGlvbiM3MC4xNi4xNi4wMC4wMAotdW5zcHNjNyM3MC4xNi4xNy4wMC4wMCNFY29zeXN0ZW1zIzcwLjE2LjAwLjAwLjAwCi11bnNwc2M3IzcwLjE2LjE3LjAxLjAwI0Vjb2RldmVsb3BtZW50IHNlcnZpY2VzIzcwLjE2LjE3LjAwLjAwCi11bnNwc2M3IzcwLjE2LjE3LjAyLjAwI01hcmluZSBlY29zeXN0ZW0gbWFuYWdlbWVudCBzZXJ2aWNlcyM3MC4xNi4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNi4xNy4wMy4wMCNUZXJyZXN0cmlhbCBlY29zeXN0ZW0gbWFuYWdlbWVudCBzZXJ2aWNlcyM3MC4xNi4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNi4xNy4wNC4wMCNFY29zeXN0ZW1zIHByb3RlY3Rpb24gc2VydmljZXMjNzAuMTYuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMDAuMDAuMDAjV2F0ZXIgcmVzb3VyY2VzIGRldmVsb3BtZW50IGFuZCBvdmVyc2lnaHQjNzAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMTUuMDAuMDAjRGV2ZWxvcG1lbnQjNzAuMTcuMDAuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMTUuMDEuMDAjV2F0ZXIgcXVhbGl0eSBhc3Nlc3NtZW50IHNlcnZpY2VzIzcwLjE3LjE1LjAwLjAwCi11bnNwc2M3IzcwLjE3LjE1LjAyLjAwI1dhdGVyIHJlc291cmNlcyBwbGFubmluZyBzZXJ2aWNlcyM3MC4xNy4xNS4wMC4wMAotdW5zcHNjNyM3MC4xNy4xNS4wMy4wMCNHcm91bmQgb3Igc3VyZmFjZSB3YXRlciBzdXJ2ZXlpbmcjNzAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMTUuMDQuMDAjV2F0ZXIgcmVzb3VyY2VzIG1hcHBpbmcgc2VydmljZXMjNzAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMTUuMDUuMDAjUml2ZXIgYmFzaW4gZGV2ZWxvcG1lbnQjNzAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMTUuMDYuMDAjR3JvdW5kIG9yIHN1cmZhY2Ugd2F0ZXIgbW9kZWxpbmcgc2VydmljZXMjNzAuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMTYuMDAuMDAjT3ZlcnNpZ2h0IzcwLjE3LjAwLjAwLjAwCi11bnNwc2M3IzcwLjE3LjE2LjAxLjAwI1dhdGVyIHF1YWxpdHkgbWFuYWdlbWVudCM3MC4xNy4xNi4wMC4wMAotdW5zcHNjNyM3MC4xNy4xNi4wMi4wMCNXYXRlciB0ZXN0aW5nIHNlcnZpY2VzIzcwLjE3LjE2LjAwLjAwCi11bnNwc2M3IzcwLjE3LjE2LjAzLjAwI0Zsb29kcGxhaW4gbWFuYWdlbWVudCM3MC4xNy4xNi4wMC4wMAotdW5zcHNjNyM3MC4xNy4xNi4wNC4wMCNXYXRlciBjb25zZXJ2YXRpb24gYWR2aXNvcnkgc2VydmljZXMjNzAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMTYuMDUuMDAjV2F0ZXIgcmlnaHRzIGFkdmlzb3J5IHNlcnZpY2VzIzcwLjE3LjE2LjAwLjAwCi11bnNwc2M3IzcwLjE3LjE2LjA2LjAwI1dhdGVyIHJlc291cmNlIHJlY292ZXJ5IHNlcnZpY2VzIzcwLjE3LjE2LjAwLjAwCi11bnNwc2M3IzcwLjE3LjE2LjA3LjAwI1dhdGVyIHByaWNpbmcgc2VydmljZXMjNzAuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMTcuMDAuMDAjSXJyaWdhdGlvbiM3MC4xNy4wMC4wMC4wMAotdW5zcHNjNyM3MC4xNy4xNy4wMS4wMCNDYW5hbCBtYWludGVuYW5jZSBvciBtYW5hZ2VtZW50IHNlcnZpY2VzIzcwLjE3LjE3LjAwLjAwCi11bnNwc2M3IzcwLjE3LjE3LjAyLjAwI0RhbSBtYWludGVuYW5jZSBvciBtYW5hZ2VtZW50IHNlcnZpY2VzIzcwLjE3LjE3LjAwLjAwCi11bnNwc2M3IzcwLjE3LjE3LjAzLjAwI1Jlc2Vydm9pcnMgbWFpbnRlbmFuY2Ugb3IgbWFuYWdlbWVudCBzZXJ2aWNlcyM3MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNy4xNy4wNC4wMCNQdW1waW5nIHN0YXRpb24gbWFpbnRlbmFuY2Ugb3IgbWFuYWdlbWVudCBzZXJ2aWNlcyM3MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNy4xNy4wNS4wMCNQaXBlbGluZXMgbWFpbnRlbmFuY2Ugb3IgbWFuYWdlbWVudCBzZXJ2aWNlcyM3MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNy4xNy4wNi4wMCNEaWtlIG9yIGVtYmFua21lbnQgbWFpbnRlbmFuY2Ugb3IgbWFuYWdlbWVudCBzZXJ2aWNlcyM3MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNy4xNy4wNy4wMCNXYXRlciB3ZWxsIG1haW50ZW5hbmNlIG9yIG1hbmFnZW1lbnQgc2VydmljZXMjNzAuMTcuMTcuMDAuMDAKLXVuc3BzYzcjNzAuMTcuMTcuMDguMDAjSXJyaWdhdGlvbiBhZHZpc29yeSBzZXJ2aWNlcyM3MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNy4xNy4wOS4wMCNJcnJpZ2F0aW9uIHN5c3RlbXMgbWFuYWdlbWVudCBzZXJ2aWNlcyM3MC4xNy4xNy4wMC4wMAotdW5zcHNjNyM3MC4xNy4xOC4wMC4wMCNEcmFpbmFnZSBzZXJ2aWNlcyM3MC4xNy4wMC4wMC4wMAotdW5zcHNjNyM3MC4xNy4xOC4wMS4wMCNMYW5kIGRyYWluYWdlIHNlcnZpY2VzIzcwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzcwLjE3LjE4LjAyLjAwI1N0b3JtIHdhdGVyIGRyYWluYWdlIzcwLjE3LjE4LjAwLjAwCi11bnNwc2M3IzcwLjE3LjE4LjAzLjAwI0Zsb29kIHByb3RlY3Rpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM3MC4xNy4xOC4wMC4wMAotdW5zcHNjNyM3MS4wMC4wMC4wMC4wMCNNaW5pbmcgYW5kIE9pbCBhbmQgR2FzIFNlcnZpY2VzIzcxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEwLjAwLjAwLjAwI01pbmluZyBzZXJ2aWNlcyM3MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMC4xNS4wMC4wMCNNaW5lIGV4cGxvcmF0aW9uIzcxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEwLjE1LjAxLjAwI01pbmUgZGV2ZWxvcG1lbnQjNzEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzEuMTAuMTUuMDIuMDAjVGVzdCBib3Jpbmcgb3IgY29yZSBkcmlsbGluZyM3MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM3MS4xMC4xNi4wMC4wMCNNaW5lIGRyaWxsaW5nIGFuZCBibGFzdGluZyBzZXJ2aWNlcyM3MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMC4xNi4wMS4wMCNTaGFmdCBzaW5raW5nIzcxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEwLjE2LjAyLjAwI01pbmUgYmxhc3Rpbmcgc2VydmljZXMjNzEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTAuMTcuMDAuMDAjRXh0cmFjdGlvbiM3MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMC4xNy4wMS4wMCNTaGFmdCBtaW5pbmcgc2VydmljZXMjNzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzEuMTAuMTcuMDIuMDAjT3BlbiBwaXQgbWluaW5nIHNlcnZpY2VzIzcxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzcxLjEwLjE3LjAzLjAwI1N0cmlwIG1pbmluZyBzZXJ2aWNlcyM3MS4xMC4xNy4wMC4wMAotdW5zcHNjNyM3MS4xMC4xNy4wNC4wMCNJbiBzaXR1IGxlYWNoaW5nIChJU0wpIHNlcnZpY2VzIzcxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzcxLjEwLjE3LjA1LjAwI1B1bXBpbmcgb3IgZHJhaW5pbmcjNzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzEuMTAuMTcuMDYuMDAjT3ZlcmJ1cmRlbiByZW1vdmFsIzcxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzcxLjEwLjE3LjA3LjAwI0ltcG91bmRtZW50IG9yIHN0b3JhZ2Ugb2Ygd2F0ZXIgc2VydmljZXMjNzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzEuMTAuMTcuMDguMDAjU29pbCBmbHVzaGluZyBzZXJ2aWNlcyM3MS4xMC4xNy4wMC4wMAotdW5zcHNjNyM3MS4xMC4xNy4wOS4wMCNNaW5lIGZpbGxpbmcgc2VydmljZXMjNzEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMDAuMDAuMDAjT2lsIGFuZCBnYXMgZXhwbG9yYXRpb24gc2VydmljZXMjNzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMTUuMDAuMDAjT2lsIGFuZCBnYXMgZXhwbG9yYXRpb24jNzEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMTUuMDEuMDAjU2Vpc21vZ3JhcGhpYyBzdXJ2ZXlzIzcxLjExLjE1LjAwLjAwCi11bnNwc2M3IzcxLjExLjE1LjAyLjAwI09mZnNob3JlIGV4cGxvcmF0aW9uIzcxLjExLjE1LjAwLjAwCi11bnNwc2M3IzcxLjExLjE1LjAzLjAwI1dlbGwgc3VydmV5aW5nIzcxLjExLjE1LjAwLjAwCi11bnNwc2M3IzcxLjExLjE2LjAwLjAwI1dlbGwgZHJpbGxpbmcgYW5kIG1haW50ZW5hbmNlIzcxLjExLjAwLjAwLjAwCi11bnNwc2M3IzcxLjExLjE2LjAxLjAwI0RpcmVjdGlvbmFsIGRyaWxsaW5nIzcxLjExLjE2LjAwLjAwCi11bnNwc2M3IzcxLjExLjE2LjAyLjAwI09pbCB3ZWxsIGRyaWxsaW5nIzcxLjExLjE2LjAwLjAwCi11bnNwc2M3IzcxLjExLjE2LjAzLjAwI0RyaWxsaW5nIG9mIHdhdGVyIGludGFrZSB3ZWxscyM3MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMS4xNi4wNC4wMCNSZWRyaWxsaW5nIG9yIHJld29ya2luZyBvZiB3ZWxscyM3MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMS4xNi4wNS4wMCNBY2lkaXppbmcgb3IgY2hlbWljYWwgdHJlYXRpbmcgb2Ygd2VsbHMjNzEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMTYuMDYuMDAjVG9vbCBmaXNoaW5nIHNlcnZpY2VzIzcxLjExLjE2LjAwLjAwCi11bnNwc2M3IzcxLjExLjE2LjA3LjAwI09pbCB3ZWxsIHBsYXRmb3JtIG1haW50ZW5hbmNlIHNlcnZpY2VzIzcxLjExLjE2LjAwLjAwCi11bnNwc2M3IzcxLjExLjE3LjAwLjAwI0V4dHJhY3Rpb24gc2VydmljZXMjNzEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMTcuMDEuMDAjRmxvdyByYXRlIG1lYXN1cmVtZW50IHNlcnZpY2VzIzcxLjExLjE3LjAwLjAwCi11bnNwc2M3IzcxLjExLjE3LjAyLjAwI09pbCBzYW1wbGluZyBzZXJ2aWNlcyM3MS4xMS4xNy4wMC4wMAotdW5zcHNjNyM3MS4xMS4xNy4wMy4wMCNPaWwgZmllbGQgZHJpbGxpbmcgb3IgbXVkIHNlcnZpY2VzIzcxLjExLjE3LjAwLjAwCi11bnNwc2M3IzcxLjExLjE3LjA0LjAwI0ltcG91bmQgb3Igc3RvcmFnZSBvZiB3YXRlciM3MS4xMS4xNy4wMC4wMAotdW5zcHNjNyM3MS4xMS4xOC4wMC4wMCNXZWxsIHJlc3RvcmF0aW9uIGFuZCByZWNsYW1hdGlvbiM3MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4xOC4wMS4wMCNDbGVhbmluZyBvciBzd2FiYmluZyBvZiB3ZWxscyM3MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM3MS4xMS4xOC4wMi4wMCNTb2lsIGZsdXNoaW5nIHNlcnZpY2VzIzcxLjExLjE4LjAwLjAwCi11bnNwc2M3IzcxLjExLjE4LjAzLjAwI01pbmUgZmlsbGluZyBzZXJ2aWNlcyM3MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM3MS4xMS4xOC4wNC4wMCNXZWxsIHBsdWdnaW5nIG9yIGFiYW5kb25tZW50IHNlcnZpY2VzIzcxLjExLjE4LjAwLjAwCi11bnNwc2M3IzcxLjExLjE4LjA1LjAwI0NlbWVudGluZyBzZXJ2aWNlcyBmb3Igd2VsbCBjYXNpbmdzIzcxLjExLjE4LjAwLjAwCi11bnNwc2M3IzcxLjExLjE5LjAwLjAwI1dlbGwgZW1lcmdlbmN5IHNlcnZpY2VzIzcxLjExLjAwLjAwLjAwCi11bnNwc2M3IzcxLjExLjE5LjAxLjAwI1dlbGwgZmlyZSBmaWdodGluZyBzZXJ2aWNlcyM3MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM3MS4xMS4xOS4wMi4wMCNXZWxsIGNhcHBpbmcgc2VydmljZXMjNzEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMDAuMDAjQ2FzZWQgaG9sZSB3ZWxsIGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMDEuMDAjQ2FzZWQgaG9sZSBmb3JtYXRpb24gc2FtcGxpbmcgdGVzdGluZyBzZXJ2aWNlcyM3MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMC4wMi4wMCNDYXNpbmcgdGhpY2tuZXNzIG1lYXN1cmVtZW50IHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjAzLjAwI0NoZW1pY2FsIGN1dHRlcnMgc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMDQuMDAjRWxlY3Ryb21hZ25ldGljIHBpcGUgcmVjb3Zlcnkgc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMDUuMDAjV2VsbCBmbG93IG1lYXN1cmVtZW50IHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjA2LjAwI1dlbGwgZmx1aWQgZGVuc2l0eSBtZWFzdXJlbWVudCBzZXJ2aWNlcyM3MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMC4wNy4wMCNXZWxsIGZsdWlkIHRlbXBlcmF0dXJlIG1lYXN1cmVtZW50IHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjA4LjAwI0ZyZWUgcG9pbnQgdG9vbCBzZXJ2aWNlcyM3MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMC4wOS4wMCNHYW1tYSByYXkgc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMTAuMDAjSmV0IGN1dHRlciBzZXJ2aWNlcyM3MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMC4xMS4wMCNNZWFzdXJlbWVudCB3aGlsZSBwZXJmb3JhdGluZyBzZXJ2aWNlcyM3MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMC4xMi4wMCNOZXV0cm9uIHBvcm9zaXR5IHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjEzLjAwI051Y2xlYXIgc3BlY3Ryb3Njb3B5IHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjE0LjAwI1dlbGwgcGFja2VyIHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjE1LjAwI1Blcm1hbmVudCBtYWduZXRzIHBpcGUgcmVjb3Zlcnkgc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMTYuMDAjV2VsbCBwbHVnZ2luZyBzZXJ2aWNlcyM3MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMC4xNy4wMCNXZWxsIHByZXNzdXJlIG1lYXN1cmVtZW50IGNvbnRyb2wgc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMTguMDAjUHJvZHVjdGlvbiBsb2dnaW5nIGJvcmVob2xlIGZsdWlkIG1lYXN1cmVtZW50IHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjE5LjAwI1Byb2R1Y3Rpb24gbG9nZ2luZyBkZW5zaXR5IG1lYXN1cmVtZW50IHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjIwLjAwI1Byb2R1Y3Rpb24gbG9nZ2luZyBkb3duaG9sZSB2aWRlbyBzZXJ2aWNlcyM3MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMC4yMS4wMCNQcm9kdWN0aW9uIGxvZ2dpbmcgZmxvdyBtZWFzdXJlbWVudCBzZXJ2aWNlcyM3MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMC4yMi4wMCNQcm9kdWN0aW9uIGxvZ2dpbmcgcHJlc3N1cmUgbWVhc3VyZW1lbnQgc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMjMuMDAjT3RoZXIgcHJvZHVjdGlvbiBsb2dnaW5nIHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjI0LjAwI1Byb2R1Y3Rpb24gbG9nZ2luZyB0ZW1wZXJhdHVyZSBtZWFzdXJlbWVudCBzZXJ2aWNlcyM3MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMC4yNS4wMCNTZXZlcmluZyBjb2xsaWRpbmcgc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMjYuMDAjV2VsbCBsb2dnaW5nIHNvbmljIHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjI3LjAwI1N0dWNrIHBvaW50IHRvb2wgc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMjguMDAjVGhlcm1hbCBkZWNheSB3ZWxsIGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMjkuMDAjV2VsbCB0dWJ1bGFyIGNvcnJvc2lvbiBldmFsdWF0aW9uIHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIwLjMwLjAwI1dlbGwgcGVyZm9ybWFuY2Ugc2VydmljZXMjNzEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjAuMzEuMDAjV2VsbCB0dWJ1bGFyIHNlcnZpY2VzIzcxLjExLjIwLjAwLjAwCi11bnNwc2M3IzcxLjExLjIxLjAwLjAwI09wZW4gaG9sZSB3ZWxsIGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMDEuMDAjRGlnaXRhbCBzb25pYyBsb2dnaW5nIHNlcnZpY2VzIzcxLjExLjIxLjAwLjAwCi11bnNwc2M3IzcxLjExLjIxLjAyLjAwI0JvcmVob2xlIGdlb21ldHJ5IGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMDMuMDAjRGVuc2l0eSBsaXRob2xvZ3kgbnVjbGVhciBsb2dnaW5nIHNlcnZpY2VzIzcxLjExLjIxLjAwLjAwCi11bnNwc2M3IzcxLjExLjIxLjA0LjAwI0RpcG1ldGVyIGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMDUuMDAjRGlwb2xlIHNvbmljIGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMDYuMDAjRGlyZWN0aW9uYWwgbG9nZ2luZyBzZXJ2aWNlcyM3MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMS4wNy4wMCNEaXJlY3Rpb25hbCBzdXJ2ZXkgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMDguMDAjRWxlY3Ryb21hZ25ldGljIHByb3BhZ2F0aW9uIGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMDkuMDAjRm9ybWF0aW9uIHRlc3Rpbmcgc2FtcGxpbmcgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMTAuMDAjRnJhY3R1cmUgaWRlbnRpZmljYXRpb24gbG9nZ2luZyBzZXJ2aWNlcyM3MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMS4xMS4wMCNHYW1tYSByYXkgbG9nZ2luZyBzZXJ2aWNlcyM3MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMS4xMi4wMCNHYW1tYSByYXkgc3BlY3Ryb3Njb3B5IGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMTMuMDAjR2VvY2hlbWljYWwgbnVjbGVhciBsb2dnaW5nIHNlcnZpY2VzIzcxLjExLjIxLjAwLjAwCi11bnNwc2M3IzcxLjExLjIxLjE0LjAwI1dlbGwgaW1hZ2luZyBzZXJ2aWNlcyM3MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMS4xNS4wMCNNYWduZXRpYyByZXNvbmFuY2UgbG9nZ2luZyBzZXJ2aWNlcyM3MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMS4xNi4wMCNNaWNyb3Jlc2lzdGl2aXR5IGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMTcuMDAjTmV1dHJvbiBwb3Jvc2l0eSBsb2dnaW5nIHNlcnZpY2VzIzcxLjExLjIxLjAwLjAwCi11bnNwc2M3IzcxLjExLjIxLjE4LjAwI1BldHJvcGh5c2ljcyBzZXJ2aWNlcyM3MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMS4xOS4wMCNSZXNpc3Rpdml0eSBsb2dnaW5nIHNlcnZpY2VzIzcxLjExLjIxLjAwLjAwCi11bnNwc2M3IzcxLjExLjIxLjIwLjAwI1NsaW0gYWNjZXNzIHNvbmljIGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjEuMjEuMDAjU29uaWMgY2VtZW50IGJvbmQgcmF0aW8gbG9nZ2luZyBzZXJ2aWNlcyM3MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMS4yMi4wMCNXZWxsIHNvbmljIGltYWdpbmcgc2VydmljZXMjNzEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjIuMDAuMDAjT3RoZXIgbG9nZ2luZyBzZXJ2aWNlcyM3MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMi4wMS4wMCNMb2dnaW5nIHdpdGggY29pbGVkIHR1YmluZyBzZXJ2aWNlcyM3MS4xMS4yMi4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMi4wMi4wMCNMb2dnaW5nIHdoaWxlIGRyaWxsaW5nIHNlcnZpY2VzIzcxLjExLjIyLjAwLjAwCi11bnNwc2M3IzcxLjExLjIyLjAzLjAwI0xvZ2dpbmcgZHVyaW5nIGZpc2hpbmcgc2VydmljZXMjNzEuMTEuMjIuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjIuMDQuMDAjTG9nZ2luZyB3aGlsZSBwZXJmb3JhdGluZyBzZXJ2aWNlcyM3MS4xMS4yMi4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMi4wNS4wMCNEcmlsbCBwaXBlIGNvbnZleWVkIHdlbGwgc2VydmljZXMjNzEuMTEuMjIuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjIuMDYuMDAjR2VuZXJhbCB3ZWxsIGxvZ2dpbmcgc2VydmljZXMjNzEuMTEuMjIuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjMuMDAuMDAjU2Vpc21pYyBzZXJ2aWNlcyM3MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMy4wMS4wMCNUd28gZGltZW5zaW9uYWwgbGFuZCBzZWlzbWljIGFjcXVpc2l0aW9uIHNlcnZpY2VzIzcxLjExLjIzLjAwLjAwCi11bnNwc2M3IzcxLjExLjIzLjAyLjAwI1R3byBkaW1lbnNpb25hbCBtYXJpbmUgc2Vpc21pYyBhY3F1aXNpdGlvbiBzZXJ2aWNlcyM3MS4xMS4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMy4wMy4wMCNUd28gZGltZW5zaW9uYWwgc2Vpc21pYyBkYXRhIHByb2Nlc3Npbmcgc2VydmljZXMjNzEuMTEuMjMuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjMuMDQuMDAjVGhyZWUgZGltZW5zaW9uYWwgbGFuZCBzZWlzbWljIGFjcXVpc2l0aW9uIHNlcnZpY2VzIzcxLjExLjIzLjAwLjAwCi11bnNwc2M3IzcxLjExLjIzLjA1LjAwI1RocmVlIGRpbWVuc2lvbmFsIG1hcmluZSBzZWlzbWljIGFjcXVpc2l0aW9uIHNlcnZpY2VzIzcxLjExLjIzLjAwLjAwCi11bnNwc2M3IzcxLjExLjIzLjA2LjAwI1RocmVlIGRpbWVuc2lvbmFsIHNlaXNtaWMgZGF0YSBwcm9jZXNzaW5nIHNlcnZpY2VzIzcxLjExLjIzLjAwLjAwCi11bnNwc2M3IzcxLjExLjIzLjA3LjAwI0ZvdXIgZGltZW5zaW9uYWwgbGFuZCBzZWlzbWljIGFjcXVpc2l0aW9uIHNlcnZpY2VzIzcxLjExLjIzLjAwLjAwCi11bnNwc2M3IzcxLjExLjIzLjA4LjAwI0ZvdXIgZGltZW5zaW9uYWwgbWFyaW5lIHNlaXNtaWMgYWNxdWlzaXRpb24gc2VydmljZXMjNzEuMTEuMjMuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjMuMDkuMDAjRm91ciBkaW1lbnNpb25hbCBzZWlzbWljIGRhdGEgcHJvY2Vzc2luZyBzZXJ2aWNlcyM3MS4xMS4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMy4xMC4wMCNDaGVja3Nob3Qgc2Vpc21pYyBzZXJ2aWNlcyM3MS4xMS4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMy4xMS4wMCNDcm9zcyB3ZWxsIHNlaXNtaWMgc2VydmljZXMjNzEuMTEuMjMuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjMuMTIuMDAjRGV2aWF0ZWQgd2VsbCBzZWlzbWljIHNlcnZpY2VzIzcxLjExLjIzLjAwLjAwCi11bnNwc2M3IzcxLjExLjIzLjEzLjAwI0dlb3BoeXNpY3Mgc2Vpc21pYyBzZXJ2aWNlcyM3MS4xMS4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMy4xNC4wMCNPZmZzZXQgc2Vpc21pYyBzZXJ2aWNlcyM3MS4xMS4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMy4xNS4wMCNRdWlja3Nob3Qgc2Vpc21pYyBzZXJ2aWNlcyM3MS4xMS4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMy4xNi4wMCNTZWlzbWljIGRhdGEgYWNxdWlzaXRpb24gd2hpbGUgZHJpbGxpbmcgc2VydmljZXMjNzEuMTEuMjMuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjMuMTcuMDAjU2xpbSBob2xlIHNlaXNtaWMgc2VydmljZXMjNzEuMTEuMjMuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjMuMTguMDAjU2Vpc21pYyBzdXJ2ZXkgZXZhbHVhdGlvbiBvciBkZXNpZ24gc2VydmljZXMjNzEuMTEuMjMuMDAuMDAKLXVuc3BzYzcjNzEuMTEuMjMuMTkuMDAjVmVydGljYWwgc2Vpc21pYyBzZXJ2aWNlcyM3MS4xMS4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMS4yMy4yMC4wMCNXYWxrYXdheSBzZWlzbWljIHNlcnZpY2VzIzcxLjExLjIzLjAwLjAwCi11bnNwc2M3IzcxLjExLjIzLjIxLjAwI0dlb2xvZ2ljYWwgc2VydmljZXMjNzEuMTEuMjMuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMDAuMDAuMDAjV2VsbCBkcmlsbGluZyBjb25zdHJ1Y3Rpb24gYW5kIG1haW50ZW5hbmNlIHNlcnZpY2VzIzcxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEwLjAwLjAwI0NlbWVudCBwdW1waW5nIHNlcnZpY2VzIzcxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEwLjAxLjAwI09pbGZpZWxkIGNhc2luZyBoYXJkd2FyZSBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4wMi4wMCNPaWxmaWVsZCBjZW1lbnQgbGFiIHRlc3Rpbmcgc2VydmljZXMjNzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTAuMDMuMDAjRG93bmhvbGUgb2lsZmllbGQgdG9vbHMgc2VydmljZXMjNzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTAuMDQuMDAjT2lsZmllbGQgZmlsdGVyaW5nIHNlcnZpY2VzIzcxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEwLjA1LjAwI0ZvYW0gY2VtZW50aW5nIHNlcnZpY2VzIzcxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEwLjA2LjAwI0dlb3RoZXJtYWwgd2VsbCBjZW1lbnRpbmcgc2VydmljZXMjNzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTAuMDcuMDAjTGluZXIgY2VtZW50aW5nIHNlcnZpY2VzIzcxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEwLjA4LjAwI09pbHdlbGwgbG9zdCBjaXJjdWxhdGlvbiBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4wOS4wMCNPaWxmaWVsZCBtdWQgcmVtb3ZhbCBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4xMC4wMCNQbHVnIGNlbWVudGluZyBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4xMS4wMCNXZWxsIHNpdGUgcHJlc3N1cmUgcHVtcGluZyBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4xMi4wMCNPaWxmaWVsZCBwcmVzc3VyZSB0ZXN0aW5nIHNlcnZpY2VzIzcxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEwLjEzLjAwI1N1cmZhY2UgY2FzaW5nIGNlbWVudGluZyBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4xNC4wMCNJbnRlcm1lZGlhdGUgY2FzaW5nIGNlbWVudGluZyBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4xNS4wMCNQcm9kdWN0aW9uIHN0cmluZyBjZW1lbnRpbmcgc2VydmljZXMjNzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTAuMTYuMDAjU3F1ZWV6ZSB3ZWxsIGNlbWVudGluZyBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4xNy4wMCNXZWxsIHdhdGVyIGNvbnRyb2wgc2VydmljZXMjNzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTAuMTguMDAjV2VsbCBjZW1lbnQgZXZhbHVhdGlvbiBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4xOS4wMCNXZWxsIGNlbWVudCBncm91dGluZyBzZXJ2aWNlcyM3MS4xMi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMC4yMC4wMCNXZWxsIGNlbWVudGluZyBhZGRpdGl2ZXMgc2VydmljZXMjNzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTAuMjEuMDAjV2VsbCBjZW1lbnRpbmcgZGVzaWduIHNlcnZpY2VzIzcxLjEyLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEwLjIyLjAwI1dlbGwgY2xlYW5pbmcgc2VydmljZXMjNzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTAuMjMuMDAjV2VsbCByZXBhaXIgc2VydmljZXMjNzEuMTIuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTEuMDAuMDAjQ29pbGVkIHR1YmluZyBzZXJ2aWNlcyM3MS4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4wMS4wMCNBY2lkaXppbmcgdGhyb3VnaCBjb2lsZWQgdHViaW5nIHNlcnZpY2VzIzcxLjEyLjExLjAwLjAwCi11bnNwc2M3IzcxLjEyLjExLjAyLjAwI0NhYmxlIGluc3RhbGxhdGlvbiB0aHJvdWdoIGNvaWxlZCB0dWJpbmcgc2VydmljZXMjNzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTEuMDMuMDAjQ2VtZW50aW5nIHRocm91Z2ggY29pbGVkIHR1YmluZyBzZXJ2aWNlcyM3MS4xMi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4wNC4wMCNDaGVtaWNhbCBjdXR0aW5nIHRocm91Z2ggY29pbGVkIHR1YmluZyBzZXJ2aWNlcyM3MS4xMi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4wNS4wMCNDbGVhbiBvdXQgdGhyb3VnaCBjb2lsZWQgdHViaW5nIHNlcnZpY2VzIzcxLjEyLjExLjAwLjAwCi11bnNwc2M3IzcxLjEyLjExLjA2LjAwI0NvbXBsZXRpb24gdGhyb3VnaCBjb2lsZWQgdHViaW5nIHNlcnZpY2VzIzcxLjEyLjExLjAwLjAwCi11bnNwc2M3IzcxLjEyLjExLjA3LjAwI0NvbnZleWluZyBpbmZsYXRhYmxlcyB0aHJvdWdoIGNvaWxlZCB0dWJpbmcgc2VydmljZXMjNzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTEuMDguMDAjQ29yaW5nIHRocm91Z2ggY29pbGVkIHR1YmluZyBzZXJ2aWNlcyM3MS4xMi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4wOS4wMCNFeHRlbmRlZCByZWFjaCB3ZWxsIHNlcnZpY2VzIzcxLjEyLjExLjAwLjAwCi11bnNwc2M3IzcxLjEyLjExLjEwLjAwI0Zpc2hpbmcgdGhyb3VnaCBjb2lsZWQgdHViaW5nIHNlcnZpY2VzIzcxLjEyLjExLjAwLjAwCi11bnNwc2M3IzcxLjEyLjExLjExLjAwI0ZyYWN0dXJpbmcgdGhyb3VnaCBjb2lsZWQgdHViaW5nIHNlcnZpY2VzIzcxLjEyLjExLjAwLjAwCi11bnNwc2M3IzcxLjEyLjExLjEyLjAwI0hpZ2ggcHJlc3N1cmUgY29pbGVkIHR1YmluZyBzZXJ2aWNlcyM3MS4xMi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4xMy4wMCNIb3Jpem9udGFsIGlzb2xhdGlvbiBvaWxmaWVsZCBzZXJ2aWNlcyM3MS4xMi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4xNC4wMCNMb2dnaW5nIHdpdGggY29pbGVkIHR1YmluZyBzZXJ2aWNlcyM3MS4xMi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4xNS4wMCNNaWxsaW5nIHRocm91Z2ggY29pbGVkIHR1YmluZyBzZXJ2aWNlcyM3MS4xMi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4xNi4wMCNOaXRyb2dlbiByZWxhdGVkIGFwcGxpY2F0aW9ucyB0aHJvdWdoIGNvaWxlZCB0dWJpbmcjNzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTEuMTcuMDAjUGVyZm9yYXRpbmcgdGhyb3VnaCBjb2lsZWQgdHViaW5nIHNlcnZpY2VzIzcxLjEyLjExLjAwLjAwCi11bnNwc2M3IzcxLjEyLjExLjE4LjAwI1BpcGVsaW5lIG9yIGZsb3dsaW5lIGxheWluZyBzZXJ2aWNlcyM3MS4xMi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4xOS4wMCNQaXBlbGluZSBpbnRlcnZlbnRpb24gc2VydmljZXMjNzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTEuMjAuMDAjU2FuZCBjb250cm9sIHRocm91Z2ggY29pbGVkIHR1YmluZyBzZXJ2aWNlcyM3MS4xMi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMS4yMS4wMCNBYnJhc2l2ZSB0dWJ1bGFyIGNsZWFuaW5nIHNlcnZpY2VzIzcxLjEyLjExLjAwLjAwCi11bnNwc2M3IzcxLjEyLjExLjIyLjAwI1dlbGwga2lsbCB0aHJvdWdoIGNvaWxlZCB0dWJpbmcgc2VydmljZXMjNzEuMTIuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTEuMjMuMDAjQ2FzaW5nIGV4aXQgd2l0aCBjb2lsZWQgdHViaW5nIHNlcnZpY2VzIzcxLjEyLjExLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEyLjAwLjAwI0NvcmluZyBzZXJ2aWNlcyM3MS4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMi4wMS4wMCNDb252ZW50aW9uYWwgY29yaW5nIHNlcnZpY2VzIzcxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEyLjAyLjAwI0NvcmUgaXNvbGF0aW9uIHNlcnZpY2VzIzcxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEyLjAzLjAwI0NvcmUgcHJlc2VydmF0aW9uIHNlcnZpY2VzIzcxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEyLjA0LjAwI0hvcml6b250YWwgY29yaW5nIHNlcnZpY2VzIzcxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEyLjA1LjAwI09yaWVudGVkIGNvcmluZyBzZXJ2aWNlcyM3MS4xMi4xMi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xMi4wNi4wMCNSaWcgc2l0ZSBjb3JlIGFuYWx5c2lzIHNlcnZpY2VzIzcxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEyLjA3LjAwI1Nwb25nZSBjb3Jpbmcgc2VydmljZXMjNzEuMTIuMTIuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTIuMDguMDAjV2lyZWxpbmUgcmV0cmlldmFibGUgY29yaW5nIHNlcnZpY2VzIzcxLjEyLjEyLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEzLjAwLjAwI0Rvd25ob2xlIHRvb2wgc2VydmljZXMjNzEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTMuMDEuMDAjRG93bmhvbGUgdmlicmF0aW9uIGNvbnRyb2wgc2VydmljZXMjNzEuMTIuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTMuMDIuMDAjRG93bmhvbGUgaG9sZSBvcGVuaW5nIHNlcnZpY2VzIzcxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEzLjAzLjAwI1JlYW1pbmcgd2hpbGUgZHJpbGxpbmcgc2VydmljZXMjNzEuMTIuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTMuMDQuMDAjRG93bmhvbGUgdG9ycXVlIG9yIGRyYWcgcmVkdWN0aW9uIHNlcnZpY2VzIzcxLjEyLjEzLjAwLjAwCi11bnNwc2M3IzcxLjEyLjEzLjA1LjAwI0Rvd25ob2xlIHVuZGVycmVhbWluZyBzZXJ2aWNlcyM3MS4xMi4xMy4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNC4wMC4wMCNPaWxmaWVsZCBkcmlsbGluZyBiaXQgc2VydmljZXMjNzEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTQuMDEuMDAjT2lsZmllbGQgZHJpbGxpbmcgYml0IGRlc2lnbiBzZXJ2aWNlcyM3MS4xMi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNC4wMi4wMCNPaWxmaWVsZCBkcmlsbGluZyBiaXQgaHlkcmF1bGljIG9wdGltaXphdGlvbiBzZXJ2aWNlcyM3MS4xMi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNC4wMy4wMCNPaWxmaWVsZCBkcmlsbGluZyBiaXQgcGxhbm5pbmcgc2VydmljZXMjNzEuMTIuMTQuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTQuMDQuMDAjT2lsZmllbGQgZHJpbGxpbmcgYml0IHJlY29yZGluZyBzZXJ2aWNlcyM3MS4xMi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNC4wNS4wMCNPaWxmaWVsZCBkcmlsbGluZyBiaXQgcmVwYWlyIHNlcnZpY2VzIzcxLjEyLjE0LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE0LjA2LjAwI09pbGZpZWxkIGRyaWxsaW5nIGJpdCBmb290YWdlIGNvbnRyYWN0cyM3MS4xMi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNC4wNy4wMCNXZWxsIHNpdGUgZHJpbGxpbmcgb3B0aW1pemF0aW9uIGFzc2lzdGFuY2Ugc2VydmljZSM3MS4xMi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4wMC4wMCNEcmlsbGluZyBtZWFzdXJlbWVudCBzZXJ2aWNlcyM3MS4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4wMS4wMCNBY291c3RpYyBtZWFzdXJlbWVudCB3aGVuIGRyaWxsaW5nIHNlcnZpY2VzIzcxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE1LjAyLjAwI0Fjb3VzdGljIHRlbGVtZXRyeSB3aGVuIGRyaWxsaW5nIHNlcnZpY2VzIzcxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE1LjAzLjAwI0NhbGlwZXIgbWVhc3VyZW1lbnQgd2hlbiBkcmlsbGluZyBzZXJ2aWNlcyM3MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4wNC4wMCNEZW5zaXR5IG1lYXN1cmVtZW50IHdoZW4gZHJpbGxpbmcgc2VydmljZXMjNzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTUuMDUuMDAjT2lsZmllbGQgZHJpbGxpbmcgcGVyZm9ybWFuY2Ugc2VydmljZXMjNzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTUuMDYuMDAjRWxlY3Ryb21hZ25ldGljIHRlbGVtZXRyeSB3aGVuIGRyaWxsaW5nIHNlcnZpY2VzIzcxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE1LjA3LjAwI0Zvcm1hdGlvbiBkaXAgbWVhc3VyZW1lbnQgd2hlbiBkcmlsbGluZyBzZXJ2aWNlcyM3MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4wOC4wMCNGb3JtYXRpb24gcHJlc3N1cmUgbWVhc3VyZW1lbnQgd2hlbiBkcmlsbGluZyBzZXJ2aWNlcyM3MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4wOS4wMCNHZW9sb2dpY2FsbHkgc3RlZXJlZCB3ZWxscyM3MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4xMC4wMCNHZW9zdG9wcGluZyBzZXJ2aWNlcyM3MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4xMS4wMCNNdWQgbG9nZ2luZyBzZXJ2aWNlcyM3MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4xMi4wMCNOdWNsZWFyIG1hZ25ldGljIHJlc29uYW5jZSBzZXJ2aWNlcyM3MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4xMy4wMCNQb3Jvc2l0eSBtZWFzdXJlbWVudCB3aGVuIGRyaWxsaW5nIHNlcnZpY2VzIzcxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE1LjE0LjAwI1Jlc2lzdGl2aXR5IG1lYXN1cmVtZW50IHdoZW4gZHJpbGxpbmcgc2VydmljZXMjNzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTUuMTUuMDAjV2VsbCBzdXJ2ZXlpbmcgbWFuYWdlbWVudCBzZXJ2aWNlcyM3MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNS4xNi4wMCNTdXJ2ZXlpbmcgd2lyZWxpbmUgc2VydmljZXMjNzEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMDAuMDAjT2lsIHdlbGwgZHJpbGxpbmcgc2VydmljZXMjNzEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMDEuMDAjV2VsbCBjYXNpbmcgY3JldyBzZXJ2aWNlIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjAyLjAwI1dlbGwgY2FzaW5nIHBsYW5uaW5nIHNlcnZpY2VzIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjAzLjAwI1dlbGwgY2FzaW5nIG1pbGxpbmcgc2VydmljZXMjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMDQuMDAjQ29pbGVkIHR1YmluZyBkcmlsbGluZyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4wNS4wMCNXZWxsIGNvbXBsZXRpb24gcGxhbm5pbmcgc2VydmljZXMjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMDYuMDAjQ29udmVudGlvbmFsIHdlbGwgZGlyZWN0aW9uYWwgZHJpbGxpbmcgc2VydmljZXMjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMDcuMDAjV2VsbCBkaXJlY3Rpb25hbCBkcmlsbGluZyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4wOC4wMCNXZWxsIGRyaWxsaW5nIGNvbnRyYWN0IGRldmVsb3BtZW50IHNlcnZpY2VzIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjA5LjAwI1dlbGwgZHJpbGxpbmcgc2VydmljZXMjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMTAuMDAjV2VsbCBkcmlsbGluZyBlbmdpbmVlcmluZyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4xMS4wMCNXZWxsIGRyaWxsaW5nIG11ZCBvciBmbHVpZCBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4xMi4wMCNXZWxsIGRyaWxsaW5nIG9mIHdhdGVyIGludGFrZSB3ZWxsIHNlcnZpY2VzIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjEzLjAwI1dlbGwgZHJpbGxpbmcgcmlnIG1vbml0b3Igc2VydmljZXMjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMTQuMDAjV2VsbCBkcmlsbGluZyBzb2xpZHMgY29udHJvbCM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4xNS4wMCNXZWxsIGRyaWxsaW5nIHN0YWJpbGl6aW5nIG9yIGhvbGUgb3BlbmluZyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4xNi4wMCNXZWxsIGRyaWxsaW5nIHN1cGVydmlzaW9uIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjE3LjAwI1dlbGwgZHJpbGxpbmcgY29udHJvbCBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4xOC4wMCNXZWxsIGRyaWxsaW5nIG90aGVyIGdlbmVyYWwgc2VydmljZXMjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMTkuMDAjRXh0ZW5kZWQgcmVhY2ggZGlyZWN0aW9uYWwgd2VsbCBkcmlsbGluZyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4yMC4wMCNNdWx0aWxhdGVyYWwgZGlyZWN0aW9uYWwgd2VsbCBkcmlsbGluZyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4yMS4wMCNPaWwgY291bnRyeSB0dWJ1bGFyIG1vZGlmaWNhdGlvbiBvciB0ZXN0aW5nIHNlcnZpY2VzIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjIyLjAwI1dlbGwgZHJpbGxpbmcgcGlja3VwIG9yIGxheWRvd24gc2VydmljZSM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4yMy4wMCNXZWxsIGRyaWxsaW5nIHBpcGUgc3RvcmFnZSM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4yNC4wMCNXZWxsIGRyaWxsaW5nIHBpcGUgdGhyZWFkaW5nIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjI1LjAwI1JhdGhvbGUgd2VsbCBkcmlsbGluZyBzZXJ2aWNlIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjI2LjAwI1Nob3J0IHJhZGl1cyBkaXJlY3Rpb25hbCB3ZWxsIGRyaWxsaW5nIHNlcnZpY2VzIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjI3LjAwI1N0ZWVyYWJsZSB1bmRlcnJlYW1pbmcgd2hpbGUgd2VsbCBkcmlsbGluZyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4yOC4wMCNVbHRyYSBzaG9ydCByYWRpdXMgZGlyZWN0aW9uYWwgd2VsbCBkcmlsbGluZyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4yOS4wMCNVbmRlcmJhbGFuY2VkIHdlbGwgZHJpbGxpbmcgc2VydmljZXMjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMzAuMDAjV2VsbCBwbGFubmluZyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4zMS4wMCNXZWxsIHJlZHJpbGxpbmcgb3IgcmV3b3JraW5nIHNlcnZpY2VzIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjMyLjAwI1dlbGwgZHJpbGxpbmcgZGV2aWF0aW9uIGNvbnRyb2wjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMzMuMDAjT2lsZmllbGQgZ3JhdmVsIHBhY2tpbmcgc2VydmljZXMjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMzQuMDAjT2lsZmllbGQgaHVsbCBzeXN0ZW1zIHNlcnZpY2VzIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE2LjM1LjAwI1JpZyB3ZWxsIHB1bGxpbmcgY3JldyBzZXJ2aWNlcyM3MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNi4zNi4wMCNXZWxsaGVhZCBlcXVpcG1lbnQgc2VydmljZXMjNzEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTYuMzcuMDAjU2lkZXRyYWNraW5nIHdpdGggd2hpcHN0b2NrIHNlcnZpY2VzIzcxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE3LjAwLjAwI09pbGZpZWxkIGZpc2hpbmcgc2VydmljZXMjNzEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTcuMDEuMDAjT2lsZmllbGQgZmlzaGluZyBzZXJ2aWNlIGRlc2lnbiBzZXJ2aWNlcyM3MS4xMi4xNy4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNy4wMi4wMCNPaWxmaWVsZCBmaXNoaW5nIHNlcnZpY2UgZWNvbm9taWMgZXZhbHVhdGlvbiBzZXJ2aWNlcyM3MS4xMi4xNy4wMC4wMAotdW5zcHNjNyM3MS4xMi4xNy4wMy4wMCNPaWxmaWVsZCBmaXNoaW5nIHNlcnZpY2Ugb3BlcmF0aW9uIHNlcnZpY2VzIzcxLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE3LjA0LjAwI09pbGZpZWxkIGp1bmsgcmVjb3Zlcnkgc2VydmljZXMjNzEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTcuMDUuMDAjT2lsZmllbGQgcGlwZSByZWNvdmVyeSBzZXJ2aWNlIzcxLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE3LjA2LjAwI09pbGZpZWxkIGZpc2hpbmcgb3IgZHJpbGxpbmcgc2VydmljZXMjNzEuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTguMDAuMDAjR2FzIGxpZnQgc2VydmljZXMjNzEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMTguMDEuMDAjQ29pbGVkIHR1YmluZyBnYXMgbGlmdCBzZXJ2aWNlcyM3MS4xMi4xOC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xOC4wMi4wMCNHYXMgbGlmdCBmaXhpbmcgb3IgdGVzdGluZyBzZXJ2aWNlcyM3MS4xMi4xOC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xOC4wMy4wMCNHYXMgbGlmdCBraWNrb3ZlciBzZXJ2aWNlcyM3MS4xMi4xOC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xOC4wNC4wMCNHYXMgbGlmdCBzYW5kIGNvbnRhaW5tZW50IHNlcnZpY2VzIzcxLjEyLjE4LjAwLjAwCi11bnNwc2M3IzcxLjEyLjE5LjAwLjAwI0Rvd24gaG9sZSBmbHVpZCBzZXJ2aWNlcyM3MS4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4xOS4wMS4wMCNEb3duIGhvbGUgZmx1aWQgZXZhbHVhdGlvbiBzZXJ2aWNlcyM3MS4xMi4xOS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xOS4wMi4wMCNEb3duIGhvbGUgZmx1aWQgbGFib3JhdG9yeSBzZXJ2aWNlcyM3MS4xMi4xOS4wMC4wMAotdW5zcHNjNyM3MS4xMi4xOS4wMy4wMCNEb3duIGhvbGUgZmx1aWQgc2FtcGxpbmcgc2VydmljZXMjNzEuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjAuMDAuMDAjV2VsbCBwZXJmb3JhdGluZyBzZXJ2aWNlcyM3MS4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMC4wMS4wMCNDb2lsZWQgdHViaW5nIHdlbGwgcGVyZm9yYXRpbmcgc2VydmljZXMjNzEuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjAuMDIuMDAjU2xpY2tsaW5lIHdlbGwgcGVyZm9yYXRpbmcgc2VydmljZXMjNzEuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjAuMDMuMDAjVGhyb3VnaCB0dWJpbmcgd2VsbCBwZXJmb3JhdGlvbiBzZXJ2aWNlcyM3MS4xMi4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMC4wNC4wMCNUdWJpbmcgY29udmV5ZWQgd2VsbCBwZXJmb3JhdGluZyBzZXJ2aWNlcyM3MS4xMi4yMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMC4wNS4wMCNXaXJlbGluZSB3ZWxsIHBlcmZvcmF0aW5nIHNlcnZpY2VzIzcxLjEyLjIwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIwLjA2LjAwI1dlbGwgdHViaW5nIHB1bmNoZXIgc2VydmljZXMjNzEuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjEuMDAuMDAjT2lsZmllbGQgc2FuZCBjb250cm9sIHNlcnZpY2VzIzcxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIxLjAxLjAwI0FjaWQgc2FuZCBjb250cm9sIHB1bXBpbmcgc2VydmljZXMjNzEuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjEuMDIuMDAjU2FuZCBjb250cm9sIGJsZW5kaW5nIHNlcnZpY2VzIzcxLjEyLjIxLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIxLjAzLjAwI0NsZWFuaW5nIGZsdWlkIHNhbmQgY29udHJvbCBzZXJ2aWNlcyM3MS4xMi4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMS4wNC4wMCNDb21wbGV0aW9uIGZsdWlkIHNhbmQgY29udHJvbCBzZXJ2aWNlcyM3MS4xMi4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMS4wNS4wMCNXZWxsIGNvbnNvbGlkYXRpb24gc2VydmljZXMjNzEuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjEuMDYuMDAjT2lsZmllbGQgZmlsdGVyaW5nIHNlcnZpY2VzIzcxLjEyLjIxLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIxLjA3LjAwI0ZyYWN0dXJpbmcgZmx1aWQgc2FuZCBjb250cm9sIHNlcnZpY2VzIzcxLjEyLjIxLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIxLjA4LjAwI0ZyYWN0dXJpbmcgcHJlIGZyYWMgZGVzaWduIHRlc3Rpbmcgc2VydmljZXMjNzEuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjEuMDkuMDAjR2VuZXJhbCBzYW5kIGNvbnRyb2wgc2VydmljZXMjNzEuMTIuMjEuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjEuMTAuMDAjR3JhdmVsIGNhcnJpZXIgZmx1aWQgc2FuZCBjb250cm9sIHNlcnZpY2VzIzcxLjEyLjIxLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIxLjExLjAwI1NhbmQgY29udHJvbCBsYWIgdGVzdGluZyBzZXJ2aWNlcyM3MS4xMi4yMS4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMS4xMi4wMCNNdWx0aXpvbmUgc2FuZCBjb250cm9sIHNlcnZpY2VzIzcxLjEyLjIxLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIxLjEzLjAwI1NhbmQgY29udHJvbCBtb25pdG9yaW5nIHNlcnZpY2VzIzcxLjEyLjIxLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIxLjE0LjAwI1NhbmQgY29udHJvbCB0ZW1wb3JhcnkgaXNvbGF0aW9uIHNlcnZpY2VzIzcxLjEyLjIxLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIxLjE1LjAwI1dlbGwgdG9vbCByZWRyZXNzaW5nIHNlcnZpY2VzIzcxLjEyLjIxLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIxLjE2LjAwI05vbiBmcmFjdHVyaW5nIHNhbmQgY29udHJvbCBwdW1waW5nIHNlcnZpY2VzIzcxLjEyLjIxLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIyLjAwLjAwI1NsaWNrbGluZSBzZXJ2aWNlcyM3MS4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMi4wMS4wMCNTbGlja2xpbmUgZmlzaGluZyBzZXJ2aWNlcyM3MS4xMi4yMi4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMi4wMi4wMCNTbGlja2xpbmUgbGlmdGluZyBzZXJ2aWNlcyM3MS4xMi4yMi4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMi4wMy4wMCNTbGlja2xpbmUgbWFuaXB1bGF0aW9uIHNlcnZpY2VzIzcxLjEyLjIyLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIzLjAwLjAwI1N1YnNlYSB3ZWxsIHNlcnZpY2VzIzcxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIzLjAxLjAwI1N1YnNlYSB3ZWxsIGRpdmluZyBzZXJ2aWNlcyM3MS4xMi4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMy4wMi4wMCNTdWJzZWEgd2VsbCByZW1vdGUgb3BlcmF0aW9uIHZlaGljbGUgcm92IHNlcnZpY2VzIzcxLjEyLjIzLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIzLjAzLjAwI1N1YnNlYSB3ZWxsIGZpeHR1cmluZyBvciB0ZXN0IGVxdWlwbWVudCBzZXJ2aWNlcyM3MS4xMi4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMy4wNC4wMCNTdWJzZWEgd2VsbCBpbnRlcnZlbnRpb24gb3IgY29tcGxldGlvbiBzZXJ2aWNlcyM3MS4xMi4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMi4yMy4wNS4wMCNTdWJzZWEgd2VsbCBzYWZldHkgdGVzdCB0cmVlIHNlcnZpY2VzIzcxLjEyLjIzLjAwLjAwCi11bnNwc2M3IzcxLjEyLjIzLjA2LjAwI1N1YnNlYSB3ZWxsIGVxdWlwbWVudCBtYWludGVuYW5jZSBzZXJ2aWNlcyM3MS4xMi4yMy4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNC4wMC4wMCNXZWxsIHRlc3Rpbmcgc2VydmljZXMjNzEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjQuMDEuMDAjRHJpbGwgc3RlbSBmbG93IG1ldGVyaW5nIHNlcnZpY2VzIzcxLjEyLjI0LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI0LjAyLjAwI0RyaWxsIHN0ZW0gc3VyZmFjZSB0ZXN0aW5nIHNlcnZpY2VzIzcxLjEyLjI0LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI0LjAzLjAwI0RyaWxsIHN0ZW0gdGVzdGluZyBwYWNrZXIgc2VydmljZXMjNzEuMTIuMjQuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjQuMDQuMDAjRHJpbGwgc3RlbSB0ZXN0aW5nIHByZXNzdXJlIGNvbnRyb2wgdGVzdCBzZXJ2aWNlcyM3MS4xMi4yNC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNC4wNS4wMCNEcmlsbCBzdGVtIHRlc3RpbmcgcHVsc2Ugb3BlcmF0ZWQgdGVzdCBzZXJ2aWNlcyM3MS4xMi4yNC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNC4wNi4wMCNEcmlsbCBzdGVtIHRlc3RpbmcgZm9yIHVsdHJhIGhpZ2ggcHJlc3MgaGlnaCB0ZW1wIGVudmlyb25tZW50IHNlcnZpY2VzIzcxLjEyLjI0LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI0LjA3LjAwI0RyaWxsIHN0ZW0gdGVzdGluZyBzZXJ2aWNlcyM3MS4xMi4yNC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNC4wOC4wMCNQZXJpb2RpYyB3ZWxsIHRlc3Rpbmcgc2VydmljZXMjNzEuMTIuMjQuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjQuMDkuMDAjU3VyZmFjZSB3ZWxsIHRlc3Rpbmcgc2VydmljZXMjNzEuMTIuMjQuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjQuMTAuMDAjVW5kZXJiYWxhbmNlZCB0ZXN0aW5nIHdoaWxlIGRyaWxsaW5nIHNlcnZpY2VzIzcxLjEyLjI0LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI1LjAwLjAwI1dhdGVyIG9yIGdhcyBjb250cm9sIHNlcnZpY2VzIzcxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjI1LjAxLjAwI1dhdGVyIG9yIGdhcyBjb250cm9sIGRlc2lnbiBzZXJ2aWNlcyM3MS4xMi4yNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNS4wMi4wMCNXYXRlciBvciBnYXMgY29udHJvbCBldmFsdWF0aW9uIHNlcnZpY2VzIzcxLjEyLjI1LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI1LjAzLjAwI1dhdGVyIG9yIGdhcyBjb250cm9sIGlzb2xhdGlvbiBzZXJ2aWNlcyM3MS4xMi4yNS4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNS4wNC4wMCNXYXRlciBvciBnYXMgY29udHJvbCB0ZXN0aW5nIHNlcnZpY2VzIzcxLjEyLjI1LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI1LjA1LjAwI1dhdGVyIG9yIGdhcyB0ZXN0aW5nIHNlcnZpY2VzIzcxLjEyLjI1LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI2LjAwLjAwI1dlbGwgY29tcGxldGlvbiBzZXJ2aWNlcyM3MS4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNi4wMS4wMCNXZWxsIGNhc2luZyBjb21wbGV0aW9uIHNlcnZpY2VzIzcxLjEyLjI2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI2LjAyLjAwI1dlbGwgY29tcGxldGlvbiBmbHVpZHMgc2VydmljZXMjNzEuMTIuMjYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjYuMDMuMDAjR2FzIGxpZnQgd2VsbCBjb21wbGV0aW9uIHNlcnZpY2VzIzcxLjEyLjI2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI2LjA0LjAwI0hvcml6b250YWwgY2FzZWQgaG9sZSBzZXJ2aWNlcyM3MS4xMi4yNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNi4wNS4wMCNIb3Jpem9udGFsIG9wZW4gaG9sZSBzZXJ2aWNlcyM3MS4xMi4yNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNi4wNi4wMCNJbnRlbGxpZ2VudCB3ZWxsIGNvbXBsZXRpb24gc2VydmljZXMjNzEuMTIuMjYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjYuMDcuMDAjTGluZXIgd2VsbCBjb21wbGV0aW9uIHNlcnZpY2VzIzcxLjEyLjI2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI2LjA4LjAwI011bHRpbGF0ZXJhbCB3ZWxsIGNvbXBsZXRpb24gc2VydmljZXMjNzEuMTIuMjYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjYuMDkuMDAjUGVybWFuZW50IHdlbGwgY29tcGxldGlvbiBzZXJ2aWNlcyM3MS4xMi4yNi4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNi4xMC4wMCNTYW5kIGNvbnRyb2wgd2VsbCBjb21wbGV0aW9uIHNlcnZpY2VzIzcxLjEyLjI2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI2LjExLjAwI1RlbXBvcmFyeSBkcmlsbCBzdGVtIHRlc3Rpbmcgd2VsbCBjb21wbGV0aW9uIHNlcnZpY2VzIzcxLjEyLjI2LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI2LjEyLjAwI1R1YmluZyB3ZWxsIGNvbXBsZXRpb24gc2VydmljZXMjNzEuMTIuMjYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjYuMTMuMDAjVW5kZXJiYWxhbmNlZCB3ZWxsIGNvbXBsZXRpb24gc2VydmljZXMjNzEuMTIuMjYuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjcuMDAuMDAjV2VsbCBtYWludGVuYW5jZSBzZXJ2aWNlcyM3MS4xMi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNy4wMS4wMCNPaWwgd2VsbCBwbGF0Zm9ybSBtYWludGVuYW5jZSBzZXJ2aWNlcyM3MS4xMi4yNy4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNy4wMi4wMCNPaWxmaWVsZCBwdW1waW5nIHVuaXQgbWFpbnRlbmFuY2Ugc2VydmljZXMjNzEuMTIuMjcuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjcuMDMuMDAjT2lsZmllbGQgcm9kIHB1bXAgcmVwYWlyIHNlcnZpY2VzIzcxLjEyLjI3LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI3LjA0LjAwI09pbGZpZWxkIHNudWJiaW5nIHNlcnZpY2UjNzEuMTIuMjcuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjcuMDUuMDAjT2lsZmllbGQgc3Vja2VyIHJvZCBtYWludGVuYW5jZSBzZXJ2aWNlcyM3MS4xMi4yNy4wMC4wMAotdW5zcHNjNyM3MS4xMi4yNy4wNi4wMCNXZWxsIHN3YWJiaW5nIHNlcnZpY2VzIzcxLjEyLjI3LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI3LjA3LjAwI09pbGZpZWxkIHR1YmluZyBhbmNob3Igc2VydmljZXMjNzEuMTIuMjcuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjcuMDguMDAjT2lsZmllbGQgcHVtcCBtZWNoYW5pYyBzZXJ2aWNlcyM3MS4xMi4yNy4wMC4wMAotdW5zcHNjNyM3MS4xMi4yOC4wMC4wMCNXZWxsIG1vbml0b3Jpbmcgc2VydmljZXMjNzEuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjguMDEuMDAjRG93bmhvbGUgcmVjb3JkaW5nIHNlcnZpY2VzIzcxLjEyLjI4LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI4LjAyLjAwI1dlbGwgZmxvdyBtb25pdG9yaW5nIHNlcnZpY2VzIzcxLjEyLjI4LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI4LjAzLjAwI09pbCBvciBnYXMgd2VsbCBtb25pdG9yaW5nIHNlcnZpY2VzIzcxLjEyLjI4LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI4LjA0LjAwI1dlbGwgc2l0ZSBwaGFzZSBtb25pdG9yaW5nIHNlcnZpY2VzIzcxLjEyLjI4LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI4LjA1LjAwI1dlbGwgc2l0ZSBwdW1wIG1vbml0b3Jpbmcgc2VydmljZXMjNzEuMTIuMjguMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjguMDYuMDAjV2VsbCBzaXRlIHN1cmZhY2UgZGF0YSBhY3F1aXNpdGlvbiBzZXJ2aWNlcyM3MS4xMi4yOC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yOC4wNy4wMCNXZWxsIHNpdGUgc3VyZmFjZSByZWFkb3V0IHNlcnZpY2VzIzcxLjEyLjI4LjAwLjAwCi11bnNwc2M3IzcxLjEyLjI4LjA4LjAwI1dlbGwgc2l0ZSBzdXJmYWNlIHJlY29yZGluZyBzZXJ2aWNlcyM3MS4xMi4yOC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yOC4wOS4wMCNTdXJmYWNlIHdlbGwgdGVzdGluZyBzZXJ2aWNlcyM3MS4xMi4yOC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yOC4xMC4wMCNTdWJzdXJmYWNlIHdlbGwgdGVzdGluZyBzZXJ2aWNlcyM3MS4xMi4yOC4wMC4wMAotdW5zcHNjNyM3MS4xMi4yOS4wMC4wMCNPaWxmaWVsZCByaWdzIzcxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEyLjI5LjAxLjAwI0RlZXB3YXRlciBvaWxmaWVsZCByaWcgc2VydmljZXMjNzEuMTIuMjkuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjkuMDIuMDAjSmFja3VwIG9pbGZpZWxkIHJpZyBzZXJ2aWNlcyM3MS4xMi4yOS4wMC4wMAotdW5zcHNjNyM3MS4xMi4yOS4wMy4wMCNCYXJnZSBvaWxmaWVsZCByaWcgc2VydmljZXMjNzEuMTIuMjkuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjkuMDQuMDAjTGFuZCBvaWxmaWVsZCByaWcgc2VydmljZXMjNzEuMTIuMjkuMDAuMDAKLXVuc3BzYzcjNzEuMTIuMjkuMDUuMDAjUGxhdGZvcm0gb2lsZmllbGQgcmlnIHNlcnZpY2VzIzcxLjEyLjI5LjAwLjAwCi11bnNwc2M3IzcxLjEzLjAwLjAwLjAwI09pbCBhbmQgZ2FzIGV4dHJhY3Rpb24gYW5kIHByb2R1Y3Rpb24gZW5oYW5jZW1lbnQgc2VydmljZXMjNzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTAuMDAuMDAjV2VsbCBmcmFjdHVyaW5nIHNlcnZpY2VzIzcxLjEzLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEwLjAxLjAwI0FjaWQgYmFzZWQgZmx1aWQgd2VsbCBmcmFjdHVyaW5nIHNlcnZpY2VzIzcxLjEzLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEwLjAyLjAwI0VtdWxzaW9uIGJhc2VkIGZsdWlkIHdlbGwgZnJhY3R1cmluZyBzZXJ2aWNlcyM3MS4xMy4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMC4wMy4wMCNGb2FtIGJhc2VkIGZsdWlkIHdlbGwgZnJhY3R1cmluZyBzZXJ2aWNlcyM3MS4xMy4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMC4wNC4wMCNPaWwgd2VsbCBmcmFjdHVyaW5nIHNlcnZpY2VzIzcxLjEzLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEwLjA1LjAwI09pbCB3ZWxsIHNjYWxlIGNvbnRyb2wgc2VydmljZXMjNzEuMTMuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTAuMDYuMDAjV2VsbCBmcmFjdHVyZSB0ZXN0aW5nIHNlcnZpY2VzIzcxLjEzLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEwLjA3LjAwI1dlbGwgZnJhY3R1cmluZyBkb3duaG9sZSBldmFsdWF0aW9uIHNlcnZpY2VzIzcxLjEzLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEwLjA4LjAwI1dlbGwgZnJhY3R1cmluZyBoZWlnaHQgY29udHJvbCBzZXJ2aWNlcyM3MS4xMy4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMC4wOS4wMCNXZWxsIGZyYWN0dXJpbmcgbW9uaXRvcmluZyBzZXJ2aWNlcyM3MS4xMy4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMC4xMC4wMCNXZWxsIGZyYWN0dXJpbmcgc2VydmljZSBkZXNpZ24gc2VydmljZXMjNzEuMTMuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTAuMTEuMDAjV2VsbCBmcmFjdHVyaW5nIHNlcnZpY2UgZXZhbHVhdGlvbiBzZXJ2aWNlcyM3MS4xMy4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMC4xMi4wMCNXZWxsIGZyYWN0dXJpbmcgc3VyZmFjZSBldmFsdWF0aW9uIHNlcnZpY2VzIzcxLjEzLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEwLjEzLjAwI1dlbGwgZnJhY3R1cmluZyB0cmVhdG1lbnQgcXVhbGl0eSBjb250cm9sIHNlcnZpY2VzIzcxLjEzLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEwLjE0LjAwI09pbCBiYXNlZCBmbHVpZCB3ZWxsIGZyYWN0dXJpbmcgc2VydmljZXMjNzEuMTMuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTAuMTUuMDAjT3RoZXIgd2VsbCBmcmFjdHVyaW5nIHNlcnZpY2VzIzcxLjEzLjEwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEwLjE2LjAwI1dlbGwgZnJhY3R1cmluZyBzdHJlc3MgbWFuYWdlbWVudCBzZXJ2aWNlcyM3MS4xMy4xMC4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMC4xNy4wMCNXYXRlciBiYXNlZCBmbHVpZCB3ZWxsIGZyYWN0dXJpbmcgc2VydmljZXMjNzEuMTMuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTEuMDAuMDAjTWF0cml4IHN0aW11bGF0aW9uIHNlcnZpY2VzIzcxLjEzLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjExLjAxLjAwI0FjaWQgYmFzZWQgbWF0cml4IHN0aW11bGF0aW9uIHNlcnZpY2VzIzcxLjEzLjExLjAwLjAwCi11bnNwc2M3IzcxLjEzLjExLjAyLjAwI0Zvcm1hdGlvbiBzZWFsZXIgbWF0cml4IHN0aW11bGF0aW9uIHNlcnZpY2VzIzcxLjEzLjExLjAwLjAwCi11bnNwc2M3IzcxLjEzLjExLjAzLjAwI01hdHJpeCBvcmdhbmljIGNsZWFudXAgc2VydmljZXMjNzEuMTMuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTEuMDQuMDAjTWF0cml4IG9yZ2FuaWMgaW5oaWJpdGlvbiBzZXJ2aWNlcyM3MS4xMy4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMS4wNS4wMCNNYXRyaXggc2NhbGUgY2xlYW51cCBzZXJ2aWNlcyM3MS4xMy4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMS4wNi4wMCNNYXRyaXggc2NhbGUgaW5oaWJpdGlvbiBzZXJ2aWNlcyM3MS4xMy4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMS4wNy4wMCNNYXRyaXggdHJlYXRtZW50IGRlc2lnbiBzZXJ2aWNlcyM3MS4xMy4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMS4wOC4wMCNNYXRyaXggdHJlYXRtZW50IGRpdmVyc2lvbiBzZXJ2aWNlcyM3MS4xMy4xMS4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMS4wOS4wMCNNYXRyaXggdHJlYXRtZW50IGV2YWx1YXRpb24gc2VydmljZXMjNzEuMTMuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTEuMTAuMDAjTWF0cml4IHRyZWF0bWVudCBxdWFsaXR5IGNvbnRyb2wgc2VydmljZXMjNzEuMTMuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTEuMTEuMDAjTm9uIGFjaWQgYmFzZWQgbWF0cml4IHN0aW11bGF0aW9uIHNlcnZpY2VzIzcxLjEzLjExLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEyLjAwLjAwI09pbGZpZWxkIG5pdHJvZ2VuIHNlcnZpY2VzIzcxLjEzLjAwLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEyLjAxLjAwI05pdHJvZ2VuIHdlbGwgc2VydmljZXMjNzEuMTMuMTIuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTMuMDAuMDAjT3RoZXIgb2lsZmllbGQgcHVtcGluZyBzZXJ2aWNlcyM3MS4xMy4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMy4wMS4wMCNCb3R0b20gaW50YWtlIG9pbGZpZWxkIHB1bXBpbmcgc2VydmljZXMjNzEuMTMuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTMuMDIuMDAjQ2FibGUgZGVwbG95ZWQgb2lsZmllbGQgcHVtcGluZyBzZXJ2aWNlcyM3MS4xMy4xMy4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMy4wMy4wMCNDbzIgb2lsZmllbGQgcHVtcGluZyBzZXJ2aWNlcyM3MS4xMy4xMy4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMy4wNC4wMCNDb2lsZWQgdHViaW5nIGRlcGxveWVkIG9pbGZpZWxkIHB1bXBpbmcgc2VydmljZXMjNzEuMTMuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTMuMDUuMDAjRG93bmhvbGUgcHVtcGluZyBzZXJ2aWNlcyM3MS4xMy4xMy4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMy4wNi4wMCNEdWFsIGNvbXBsZXRpb24gd2VsbCBzZXJ2aWNlcyM3MS4xMy4xMy4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMy4wNy4wMCNIb3Jpem9udGFsIHB1bXBpbmcgd2VsbCBzZXJ2aWNlcyM3MS4xMy4xMy4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMy4wOC4wMCNPaWxmaWVsZCBwdW1waW5nIGluc3RhbGxhdGlvbiBwdWxsIG9yIG9wZXJhdGlvbiBzZXJ2aWNlcyM3MS4xMy4xMy4wMC4wMAotdW5zcHNjNyM3MS4xMy4xMy4wOS4wMCNXZWxsIHByb2ZpbGUgbW9kaWZpY2F0aW9uIHNlcnZpY2VzIzcxLjEzLjEzLjAwLjAwCi11bnNwc2M3IzcxLjEzLjEzLjEwLjAwI09pbGZpZWxkIHNwb29saW5nIHNlcnZpY2VzIzcxLjEzLjEzLjAwLjAwCi11bnNwc2M3IzcxLjEzLjE0LjAwLjAwI1dlbGwgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3MS4xMy4wMC4wMC4wMAotdW5zcHNjNyM3MS4xMy4xNC4wMS4wMCNPaWxmaWVsZCBmbGFyZSBzeXN0ZW0gc2VydmljZXMjNzEuMTMuMTQuMDAuMDAKLXVuc3BzYzcjNzEuMTMuMTQuMDIuMDAjT2lsZmllbGQgaG90IG9pbCBvciB3YXRlciBzZXJ2aWNlIzcxLjEzLjE0LjAwLjAwCi11bnNwc2M3IzcxLjEzLjE0LjAzLjAwI09pbGZpZWxkIHN0ZWFtaW5nIHNlcnZpY2VzIzcxLjEzLjE0LjAwLjAwCi11bnNwc2M3IzcxLjE0LjAwLjAwLjAwI09pbCBhbmQgZ2FzIHJlc3RvcmF0aW9uIGFuZCByZWNsYW1hdGlvbiBzZXJ2aWNlcyM3MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM3MS4xNC4xMC4wMC4wMCNFbWVyZ2VuY3kgd2VsbCBjb250cm9sIHNlcnZpY2VzIzcxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzcxLjE0LjEwLjAxLjAwI1dlbGwgcHJlc3N1cmUgY29udHJvbCBzZXJ2aWNlcyM3MS4xNC4xMC4wMC4wMAotdW5zcHNjNyM3MS4xNC4xMC4wMi4wMCNXZWxsIGNhcHBpbmcgc2VydmljZXMjNzEuMTQuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTQuMTAuMDMuMDAjV2VsbCBmaXJlIGZpZ2h0aW5nIHNlcnZpY2VzIzcxLjE0LjEwLjAwLjAwCi11bnNwc2M3IzcxLjE0LjEwLjA0LjAwI1dpbGQgd2VsbCBjb250cm9sIHNlcnZpY2VzIzcxLjE0LjEwLjAwLjAwCi11bnNwc2M3IzcxLjE0LjExLjAwLjAwI1dlbGwgcGx1Z2dpbmcgYW5kIGFiYW5kb25tZW50IHNlcnZpY2VzIzcxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzcxLjE0LjExLjAxLjAwI1dlbGwgYWJhbmRvbm1lbnQgc2VydmljZXMjNzEuMTQuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTQuMTEuMDIuMDAjV2VsbCBwbHVnZ2luZyBzZXJ2aWNlcyM3MS4xNC4xMS4wMC4wMAotdW5zcHNjNyM3MS4xNC4xMi4wMC4wMCNXZWxsIHNpdGUgcmVzdG9yYXRpb24jNzEuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTQuMTIuMDEuMDAjV2VsbCBjbGVhbmluZyBvciBzd2FiYmluZyBzZXJ2aWNlcyM3MS4xNC4xMi4wMC4wMAotdW5zcHNjNyM3MS4xNC4xMi4wMi4wMCNXZWxsIHNpdGUgcmVzdG9yYXRpb24gc2VydmljZXMjNzEuMTQuMTIuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMDAuMDAuMDAjT2lsIGFuZCBnYXMgZGF0YSBtYW5hZ2VtZW50IGFuZCBwcm9jZXNzaW5nIHNlcnZpY2VzIzcxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzcxLjE1LjEwLjAwLjAwI09pbGZpZWxkIGRhdGEgY29tbXVuaWNhdGlvbiBzZXJ2aWNlcyM3MS4xNS4wMC4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMC4wMS4wMCNMb2cgZGF0YSB0cmFuc21pc3Npb24gc2VydmljZXMjNzEuMTUuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTAuMDIuMDAjTG9nIGdyYXBoaWNzIHRyYW5zbWlzc2lvbiBzZXJ2aWNlcyM3MS4xNS4xMC4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMC4wMy4wMCNSZWFsIHRpbWUgd2VsbCBkYXRhIG1vbml0b3Jpbmcgc2VydmljZXMjNzEuMTUuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTAuMDQuMDAjU2F0ZWxsaXRlIHdlbGwgZGF0YSB0cmFuc21pc3Npb24gc2VydmljZXMjNzEuMTUuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTAuMDUuMDAjV2VsbCBkYXRhIHRyYW5zbWlzc2lvbiBzZXJ2aWNlcyM3MS4xNS4xMC4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMS4wMC4wMCNPaWxmaWVsZCBkYXRhIG1hbmFnZW1lbnQgc2VydmljZXMjNzEuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTEuMDEuMDAjT2lsZmllbGQgYXNzZXQgZGF0YSBtYW5hZ2VtZW50IHNlcnZpY2VzIzcxLjE1LjExLjAwLjAwCi11bnNwc2M3IzcxLjE1LjExLjAyLjAwI09pbGZpZWxkIGRhdGEgbWluaW5nIHNlcnZpY2VzIzcxLjE1LjExLjAwLjAwCi11bnNwc2M3IzcxLjE1LjExLjAzLjAwI0xvZyBkYXRhIG1hbmFnZW1lbnQgc2VydmljZXMjNzEuMTUuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTEuMDQuMDAjT2lsZmllbGQgbWFwcGluZyBkYXRhIG1hbmFnZW1lbnQgc2VydmljZXMjNzEuMTUuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTEuMDUuMDAjU2Vpc21pYyBkYXRhIG1hbmFnZW1lbnQgc2VydmljZXMjNzEuMTUuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTIuMDAuMDAjT2lsZmllbGQgZWNvbm9taWMgYW5kIHJpc2sgbW9kZWwgc2VydmljZXMjNzEuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTIuMDEuMDAjT2lsZmllbGQgYnVkZ2V0aW5nIHNlcnZpY2VzIzcxLjE1LjEyLjAwLjAwCi11bnNwc2M3IzcxLjE1LjEyLjAyLjAwI09pbGZpZWxkIGNhcGl0YWwgcGxhbm5pbmcgc2VydmljZXMjNzEuMTUuMTIuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTIuMDMuMDAjT2lsZmllbGQgZGVjaXNpb24gdHJlZSBzZXJ2aWNlcyM3MS4xNS4xMi4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMy4wMC4wMCNPaWxmaWVsZCBpbnRlcnByZXRhdGlvbiBzZXJ2aWNlcyM3MS4xNS4wMC4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMy4wMS4wMCNPaWxmaWVsZCBidWJibGUgbWFwIHNlcnZpY2VzIzcxLjE1LjEzLjAwLjAwCi11bnNwc2M3IzcxLjE1LjEzLjAyLjAwI09pbGZpZWxkIGNhc2Ugc3R1ZGllcyM3MS4xNS4xMy4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMy4wMy4wMCNPaWxmaWVsZCBkZWNsaW5lIGFuYWx5c2lzIzcxLjE1LjEzLjAwLjAwCi11bnNwc2M3IzcxLjE1LjEzLjA0LjAwI09pbGZpZWxkIGZpZWxkIHN0dWRpZXMjNzEuMTUuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTMuMDUuMDAjT2lsZmllbGQgZnJhY3R1cmluZyBpbnRlcnByZXRhdGlvbiBzZXJ2aWNlcyM3MS4xNS4xMy4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMy4wNi4wMCNHZW9sb2d5IHNlcnZpY2VzIzcxLjE1LjEzLjAwLjAwCi11bnNwc2M3IzcxLjE1LjEzLjA3LjAwI0dlb3BoeXNpY3Mgc2VydmljZXMjNzEuMTUuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTMuMDguMDAjR3JhdmVsIHBhY2sgaW50ZXJwcmV0YXRpb24gc2VydmljZXMjNzEuMTUuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTMuMDkuMDAjT2lsZmllbGQgZ3JpZCBtYXBwaW5nIHNlcnZpY2VzIzcxLjE1LjEzLjAwLjAwCi11bnNwc2M3IzcxLjE1LjEzLjEwLjAwI09pbGZpZWxkIG1hcHBpbmcgb3IgdmlzdWFsaXphdGlvbiBzZXJ2aWNlcyM3MS4xNS4xMy4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMy4xMS4wMCNQZXRyb3BoeXNpY3Mgc2VydmljZXMjNzEuMTUuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTMuMTIuMDAjUmVzZXJ2b2lyIGVuZ2luZWVyaW5nIHNlcnZpY2VzIzcxLjE1LjEzLjAwLjAwCi11bnNwc2M3IzcxLjE1LjEzLjEzLjAwI1Jlc2Vydm9pciBtb2RlbGluZyBzZXJ2aWNlcyM3MS4xNS4xMy4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMy4xNC4wMCNSZXNlcnZvaXIgc2ltdWxhdGlvbiBzZXJ2aWNlcyM3MS4xNS4xMy4wMC4wMAotdW5zcHNjNyM3MS4xNS4xMy4xNS4wMCNSb2NrIG1lY2hhbmljcyBzZXJ2aWNlcyM3MS4xNS4xMy4wMC4wMAotdW5zcHNjNyM3MS4xNS4xNC4wMC4wMCNXZWxsIHNlcnZpY2UgZW5naW5lZXJpbmcjNzEuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTQuMDEuMDAjV2VsbCBjZW1lbnRpbmcgam9iIGRlc2lnbiBzZXJ2aWNlcyM3MS4xNS4xNC4wMC4wMAotdW5zcHNjNyM3MS4xNS4xNC4wMi4wMCNDb2lsZWQgdHViaW5nIGpvYiBkZXNpZ24gc2VydmljZXMjNzEuMTUuMTQuMDAuMDAKLXVuc3BzYzcjNzEuMTUuMTQuMDMuMDAjV2VsbCBkcmlsbGluZyBqb2IgZGVzaWduIHNlcnZpY2VzIzcxLjE1LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE1LjE0LjA0LjAwI1dlbGwgZnJhY3R1cmluZyBqb2IgZGVzaWduIHNlcnZpY2VzIzcxLjE1LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE1LjE0LjA1LjAwI01hdHJpeCBzdGltdWxhdGlvbiBqb2IgZGVzaWduIHNlcnZpY2VzIzcxLjE1LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE1LjE0LjA2LjAwI1dlbGwgc2FuZCBjb250cm9sIGpvYiBkZXNpZ24gc2VydmljZXMjNzEuMTUuMTQuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMDAuMDAuMDAjT2lsIGFuZCBnYXMgd2VsbCBwcm9qZWN0IG1hbmFnZW1lbnQgc2VydmljZXMjNzEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTAuMDAuMDAjT2lsZmllbGQgTW9kZWxpbmcgU2VydmljZXMjNzEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTAuMDEuMDAjT2lsZmllbGQgY29tcGxldGlvbiBtb2RlbHMjNzEuMTYuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTAuMDIuMDAjT2lsZmllbGQgZHJpbGxpbmcgbW9kZWxzIzcxLjE2LjEwLjAwLjAwCi11bnNwc2M3IzcxLjE2LjEwLjAzLjAwI09pbGZpZWxkIGVjb25vbWljIG1vZGVscyM3MS4xNi4xMC4wMC4wMAotdW5zcHNjNyM3MS4xNi4xMC4wNC4wMCNPaWxmaWVsZCBmaWVsZCBkZXZlbG9wbWVudCBtb2RlbHMjNzEuMTYuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTAuMDUuMDAjT2lsZmllbGQgcHJvZHVjdGlvbiBtb2RlbHMjNzEuMTYuMTAuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTAuMDYuMDAjT2lsZmllbGQgcmlzayBtYW5hZ2VtZW50IHNlcnZpY2VzIzcxLjE2LjEwLjAwLjAwCi11bnNwc2M3IzcxLjE2LjExLjAwLjAwI09pbGZpZWxkIHByb2R1Y3Rpb24gZW5naW5lZXJpbmcgbWFuYWdlbWVudCM3MS4xNi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xNi4xMS4wMS4wMCNPaWxmaWVsZCBhcnRpZmljaWFsIGxpZnQgc2VydmljZXMjNzEuMTYuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTEuMDIuMDAjRW5oYW5jZWQgb2lsIHJlY292ZXJ5IHNlcnZpY2VzIzcxLjE2LjExLjAwLjAwCi11bnNwc2M3IzcxLjE2LjExLjAzLjAwI1dlbGwgaW5qZWN0aW9uIHNlcnZpY2VzIzcxLjE2LjExLjAwLjAwCi11bnNwc2M3IzcxLjE2LjExLjA0LjAwI09pbGZpZWxkIG5vZGFsIGFuYWx5c2lzIHNlcnZpY2VzIzcxLjE2LjExLjAwLjAwCi11bnNwc2M3IzcxLjE2LjExLjA1LjAwI1dlbGwgcGVyZm9yYXRpb24gc2VydmljZXMjNzEuMTYuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTEuMDYuMDAjT2lsZmllbGQgcHJvZHVjdGlvbiBjaGVtaXN0cnkgc2VydmljZXMjNzEuMTYuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTEuMDcuMDAjT2lsZmllbGQgcHJvZHVjdGlvbiBtb25pdG9yaW5nIHNlcnZpY2VzIzcxLjE2LjExLjAwLjAwCi11bnNwc2M3IzcxLjE2LjExLjA4LjAwI09pbGZpZWxkIHNhbmQgY29udHJvbCBzZXJ2aWNlcyM3MS4xNi4xMS4wMC4wMAotdW5zcHNjNyM3MS4xNi4xMS4wOS4wMCNXZWxsIHN0aW11bGF0aW9uIHNlcnZpY2VzIzcxLjE2LjExLjAwLjAwCi11bnNwc2M3IzcxLjE2LjExLjEwLjAwI1VuZGVyZ3JvdW5kIGdhcyBzdG9yYWdlIHNlcnZpY2VzIzcxLjE2LjExLjAwLjAwCi11bnNwc2M3IzcxLjE2LjExLjExLjAwI09pbGZpZWxkIHdhdGVyIG1hbmFnZW1lbnQgc2VydmljZXMjNzEuMTYuMTEuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTIuMDAuMDAjT2lsZmllbGQgcHJvZHVjdGlvbiBvcGVyYXRpb25zIG1hbmFnZW1lbnQjNzEuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTIuMDEuMDAjT2lsZmllbGQgaG90IG9pbGluZyBzZXJ2aWNlIzcxLjE2LjEyLjAwLjAwCi11bnNwc2M3IzcxLjE2LjEyLjAyLjAwI09pbGZpZWxkIGxlYXNlIG9wZXJhdGlvbnMjNzEuMTYuMTIuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTIuMDMuMDAjT2lsZmllbGQgbG9nZ2luZyBzZXJ2aWNlcyM3MS4xNi4xMi4wMC4wMAotdW5zcHNjNyM3MS4xNi4xMi4wNC4wMCNPaWxmaWVsZCBwYXJhZmZpbiBjdXR0aW5nIHNlcnZpY2UjNzEuMTYuMTIuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTIuMDUuMDAjT2lsZmllbGQgcGxhbm5pbmcgc2VydmljZXMjNzEuMTYuMTIuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTIuMDYuMDAjT2lsZmllbGQgcHJvY2Vzc2luZyBzZXJ2aWNlcyM3MS4xNi4xMi4wMC4wMAotdW5zcHNjNyM3MS4xNi4xMi4wNy4wMCNXZWxsIHRlc3Rpbmcgc2VydmljZXMjNzEuMTYuMTIuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTMuMDAuMDAjT2lsZmllbGQgcHJvamVjdCBtYW5hZ2VtZW50IHNlcnZpY2VzIzcxLjE2LjAwLjAwLjAwCi11bnNwc2M3IzcxLjE2LjEzLjAxLjAwI09pbGZpZWxkIGF1ZGl0cyBvciBpbnNwZWN0aW9uIHNlcnZpY2VzIzcxLjE2LjEzLjAwLjAwCi11bnNwc2M3IzcxLjE2LjEzLjAyLjAwI09pbGZpZWxkIGVtZXJnZW5jeSByZXNwb25zZSBwbGFubmluZyBzZXJ2aWNlcyM3MS4xNi4xMy4wMC4wMAotdW5zcHNjNyM3MS4xNi4xMy4wMy4wMCNPaWxmaWVsZCBmaWVsZCBkZXZlbG9wbWVudCBzZXJ2aWNlcyM3MS4xNi4xMy4wMC4wMAotdW5zcHNjNyM3MS4xNi4xMy4wNC4wMCNPaWxmaWVsZCBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIHNlcnZpY2VzIzcxLjE2LjEzLjAwLjAwCi11bnNwc2M3IzcxLjE2LjEzLjA1LjAwI09pbGZpZWxkIHJlcG9ydGluZyBzZXJ2aWNlcyM3MS4xNi4xMy4wMC4wMAotdW5zcHNjNyM3MS4xNi4xMy4wNi4wMCNPaWxmaWVsZCBzdWNjZXNzaW9uIHBsYW4gb3IgaGFuZG92ZXIgc2VydmljZXMjNzEuMTYuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTMuMDcuMDAjT2lsZmllbGQgdHJhaW5pbmcgbWF0cml4IHNlcnZpY2VzIzcxLjE2LjEzLjAwLjAwCi11bnNwc2M3IzcxLjE2LjEzLjA4LjAwI1dlbGwgc2l0ZSBsb2dpc3RpY3Mgb3IgcHJvY3VyZW1lbnQgc2VydmljZXMjNzEuMTYuMTMuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTQuMDAuMDAjV2VsbCBjb25zdHJ1Y3Rpb24gbWFuYWdlbWVudCBzZXJ2aWNlcyM3MS4xNi4wMC4wMC4wMAotdW5zcHNjNyM3MS4xNi4xNC4wMS4wMCNDb2lsZWQgdHViaW5nIGRyaWxsaW5nIHNlcnZpY2VzIzcxLjE2LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE2LjE0LjAyLjAwI1dlbGwgY29tcGxldGlvbiBlbmdpbmVlcmluZyBzZXJ2aWNlcyM3MS4xNi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xNi4xNC4wMy4wMCNEZWFkbWFuIGFuY2hvciBzZXJ2aWNlcyM3MS4xNi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xNi4xNC4wNC4wMCNXZWxsIGRyaWxsaW5nIGVuZ2luZWVyaW5nIHNlcnZpY2VzIzcxLjE2LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE2LjE0LjA1LjAwI1dlbGwgc2l0ZSBwaXQgbGluaW5nIHNlcnZpY2VzIzcxLjE2LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE2LjE0LjA2LjAwI1dlbGwgcGx1ZyBvciBhYmFuZG9ubWVudCBzZXJ2aWNlIzcxLjE2LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE2LjE0LjA3LjAwI1dlbGwgcHVsbGluZyB1bml0IHNlcnZpY2VzIzcxLjE2LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE2LjE0LjA4LjAwI1Nob3JlYmFzZSBzZXJ2aWNlcyM3MS4xNi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xNi4xNC4wOS4wMCNUZXN0IHBpdCBsaW5pbmcgc2VydmljZXMjNzEuMTYuMTQuMDAuMDAKLXVuc3BzYzcjNzEuMTYuMTQuMTAuMDAjV2VsbCBzaXRlIHZhY3V1bSB0cnVjayBzZXJ2aWNlcyM3MS4xNi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xNi4xNC4xMS4wMCNVbmRlcmJhbGFuY2VkIGFwcGxpY2F0aW9ucyBlbmdpbmVlcmluZyBzZXJ2aWNlcyM3MS4xNi4xNC4wMC4wMAotdW5zcHNjNyM3MS4xNi4xNC4xMi4wMCNXZWxsIHdvcmtvdmVyIHNlcnZpY2VzIzcxLjE2LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE2LjE0LjEzLjAwI1dlbGwgZmFicmljYXRpb24gb3IgY29uc3RydWN0aW9uIHNlcnZpY2VzIzcxLjE2LjE0LjAwLjAwCi11bnNwc2M3IzcxLjE2LjE1LjAwLjAwI1dlbGwgc2l0ZSBvcGVyYXRpb25zIHNlcnZpY2VzIzcxLjE2LjAwLjAwLjAwCi11bnNwc2M3IzcxLjE2LjE1LjAxLjAwI1dlbGwgc2l0ZSBlbGVjdHJpY2FsIG9yIGluc3RydW1lbnRhdGlvbiBzZXJ2aWNlcyM3MS4xNi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xNi4xNS4wMi4wMCNXZWxsIHNpdGUgaGVhdnkgZXF1aXBtZW50IG9yIGNyYW5lIHNlcnZpY2VzIzcxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzcxLjE2LjE1LjAzLjAwI1dlbGwgc2l0ZSBpbnNwZWN0aW9uIG9yIGVxdWlwbWVudCB0ZXN0aW5nIHNlcnZpY2VzIzcxLjE2LjE1LjAwLjAwCi11bnNwc2M3IzcxLjE2LjE1LjA0LjAwI1dlbGwgc2l0ZSBpbnN0cnVtZW50IGFuZCBtZXRlciBzZXJ2aWNlcyM3MS4xNi4xNS4wMC4wMAotdW5zcHNjNyM3MS4xNi4xNS4wNS4wMCNXZWxsIHNpdGUgdmFsdmUgb3IgdmFsdmUgcGFydCBzZXJ2aWNlcyM3MS4xNi4xNS4wMC4wMAotdW5zcHNjNyM3Mi4wMC4wMC4wMC4wMCNCdWlsZGluZyBhbmQgQ29uc3RydWN0aW9uIGFuZCBNYWludGVuYW5jZSBTZXJ2aWNlcyM3Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4wMC4wMC4wMCNCdWlsZGluZyBjb25zdHJ1Y3Rpb24gYW5kIHN1cHBvcnQgYW5kIG1haW50ZW5hbmNlIGFuZCByZXBhaXIgc2VydmljZXMjNzIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTUuMDAuMDAjQnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcyM3Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4xNS4wMS4wMCNIYW5keW1hbiBzZXJ2aWNlcyM3Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4xNS4wMi4wMCNTY2FmZm9sZGluZyBzZXJ2aWNlcyM3Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4xNS4wMy4wMCNSaWdnaW5nIHNlcnZpY2VzIzcyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzcyLjEwLjE1LjA0LjAwI0Rpc2FzdGVyIHByb29maW5nIG9yIGNvbnRpbmdlbmN5IHNlcnZpY2VzIzcyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzcyLjEwLjE1LjA1LjAwI0xvY2tzbWl0aCBzZXJ2aWNlcyM3Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4xNi4wMC4wMCNSb29maW5nIGFuZCBzaWRpbmcgYW5kIHNoZWV0IG1ldGFsIHdvcmsjNzIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTYuMDEuMDAjUm9vZmluZyBpbnN0YWxsYXRpb24gb3IgcmVwYWlyIzcyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzcyLjEwLjE2LjAyLjAwI1NreWxpZ2h0IGluc3RhbGxhdGlvbiM3Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM3Mi4xMC4xNi4wMy4wMCNHdXR0ZXIgb3IgZG93bnNwb3V0IHNlcnZpY2VzIzcyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzcyLjEwLjE2LjA0LjAwI0FyY2hpdGVjdHVyYWwgc2hlZXQgbWV0YWwgd29yayM3Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM3Mi4xMC4xNi4wNS4wMCNDZWlsaW5nIGVyZWN0aW9uIG9yIHJlcGFpciM3Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM3Mi4xMC4xNi4wNi4wMCNDaHV0ZSBpbnN0YWxsYXRpb24jNzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTYuMDcuMDAjU2lkaW5nIGluc3RhbGxhdGlvbiBvciByZXBhaXIjNzIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTcuMDAuMDAjQ29uY3JldGUgd29yayM3Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4xNy4wMS4wMCNFeHRlcmlvciBjb25jcmV0ZSBvciBzdHVjY28gc2VydmljZXMjNzIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTcuMDIuMDAjR3JvdXRpbmcgc2VydmljZXMjNzIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTcuMDMuMDAjU2lkZXdhbGsgb3IgY3VyYiBjb25zdHJ1Y3Rpb24jNzIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTcuMDQuMDAjRm91bmRhdGlvbiBvciBzbGFiIHdvcmsjNzIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTguMDAuMDAjRXh0ZXJpb3IgY2xlYW5pbmcjNzIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTguMDEuMDAjU2FuZGJsYXN0aW5nIzcyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzcyLjEwLjE4LjAyLjAwI0hpZ2ggcHJlc3N1cmUgd2F0ZXIgYmxhc3RpbmcjNzIuMTAuMTguMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTguMDMuMDAjU3RlYW0gY2xlYW5pbmcjNzIuMTAuMTguMDAuMDAKLXVuc3BzYzcjNzIuMTAuMTkuMDAuMDAjSW50ZXJpb3IgZmluaXNoaW5nIzcyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzcyLjEwLjE5LjAxLjAwI0ludGVyaW9yIGRlc2lnbiBvciBkZWNvcmF0aW5nIzcyLjEwLjE5LjAwLjAwCi11bnNwc2M3IzcyLjEwLjE5LjAyLjAwI1BsYXN0ZXJpbmcgb3IgZHJ5d2FsbCM3Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4xOS4wMy4wMCNGaW5pc2ggY2FycGVudHJ5IG9yIGNhYmluZXRyeSM3Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMC4wMC4wMCNDb2F0aW5nIGFuZCBjYXVsa2luZyBhbmQgd2VhdGhlciBhbmQgd2F0ZXIgYW5kIGZpcmVwcm9vZmluZyM3Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMC4wMS4wMCNDYXVsa2luZyM3Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMC4wMi4wMCNQbGFzdGljIGVuY2FzZW1lbnQgb3IgY29hdGluZyBvZiBzdHJ1Y3R1cmFsIG1hdGVyaWFscyM3Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMC4wMy4wMCNDb2F0aW5nIG9yIGdsYXppbmcgb2YgbWV0YWwgb3Igd29vZCBvciBjb25jcmV0ZSBzdHJ1Y3R1cmFsIG1hdGVyaWFscyM3Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMC4wNC4wMCNEYW1wcHJvb2ZpbmcjNzIuMTAuMjAuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjAuMDUuMDAjRmlyZXByb29maW5nIG9mIGJ1aWxkaW5ncyM3Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMC4wNi4wMCNXcmFwcGluZyBvZiBwaXBlcyM3Mi4xMC4yMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMS4wMC4wMCNQZXN0IGNvbnRyb2wjNzIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjEuMDEuMDAjQmlyZCBwcm9vZmluZyBzZXJ2aWNlcyM3Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMS4wMi4wMCNUZXJtaXRlIGNvbnRyb2wgc2VydmljZXMjNzIuMTAuMjEuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjEuMDMuMDAjRXh0ZXJtaW5hdGlvbiBvciBmdW1pZ2F0aW9uIHNlcnZpY2VzIzcyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzcyLjEwLjIxLjA0LjAwI1N0cnVjdHVyYWwgcGVzdCBjb250cm9sIzcyLjEwLjIxLjAwLjAwCi11bnNwc2M3IzcyLjEwLjIxLjA1LjAwI0FuaW1hbCB0cmFwcGluZyM3Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMS4wNi4wMCNSb2RlbnQgY29udHJvbCM3Mi4xMC4yMS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMi4wMC4wMCNFbGVjdHJpY2FsIHNlcnZpY2VzIzcyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzcyLjEwLjIyLjAxLjAwI0VsZWN0cmljIHBvd2VyIHN5c3RlbXMgaW5zdGFsbGF0aW9uIG9yIHNlcnZpY2UjNzIuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjIuMDIuMDAjRWxlY3Ryb25pYyBjb250cm9scyBpbnN0YWxsYXRpb24jNzIuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjIuMDMuMDAjQ29tbXVuaWNhdGlvbiBlcXVpcG1lbnQgaW5zdGFsbGF0aW9uIzcyLjEwLjIyLjAwLjAwCi11bnNwc2M3IzcyLjEwLjIyLjA0LjAwI1NhZmV0eSBvciBzZWN1cml0eSBzeXN0ZW1zIGluc3RhbGxhdGlvbiM3Mi4xMC4yMi4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMi4wNS4wMCNDYWJsaW5nIHNlcnZpY2UjNzIuMTAuMjIuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjMuMDAuMDAjUGx1bWJpbmcgYW5kIGhlYXRpbmcgYW5kIGFpciBjb25kaXRpb25pbmcjNzIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjMuMDEuMDAjQm9pbGVyIGluc3RhbGxhdGlvbiBvciBhZGp1c3RtZW50IG9yIG1haW50ZW5hbmNlIG9yIHJlcGFpciBzZXJ2aWNlcyM3Mi4xMC4yMy4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMy4wMi4wMCNIZWF0aW5nIHN5c3RlbXMgaW5zdGFsbGF0aW9uIHJlcGFpciBvciBtYWludGVuYW5jZSM3Mi4xMC4yMy4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yMy4wMy4wMCNQbHVtYmluZyBzeXN0ZW0gY29uc3RydWN0aW9uIzcyLjEwLjIzLjAwLjAwCi11bnNwc2M3IzcyLjEwLjIzLjA0LjAwI1BsdW1iaW5nIHN5c3RlbSBtYWludGVuYW5jZSBvciByZXBhaXIjNzIuMTAuMjMuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjMuMDUuMDAjQWlyIGNvbmRpdGlvbmluZyBpbnN0YWxsYXRpb24gb3IgbWFpbnRlbmFuY2Ugb3IgcmVwYWlyIHNlcnZpY2VzIzcyLjEwLjIzLjAwLjAwCi11bnNwc2M3IzcyLjEwLjI0LjAwLjAwI1BhaW50aW5nIGFuZCBwYXBlciBoYW5naW5nIzcyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzcyLjEwLjI0LjAxLjAwI0V4dGVyaW9yIHBhaW50aW5nIHNlcnZpY2VzIzcyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI0LjAyLjAwI0ludGVyaW9yIHBhaW50aW5nIHNlcnZpY2VzIzcyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI0LjAzLjAwI1dhbGxjb3ZlcmluZyBzZXJ2aWNlcyM3Mi4xMC4yNC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yNC4wNC4wMCNJbmR1c3RyaWFsIG9yIHNwZWNpYWxpemVkIHBhaW50IGFwcGxpY2F0aW9uIGZvciBhaXJjcmFmdCBvciBzaGlwIG9yIGJyaWRnZSM3Mi4xMC4yNC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yNC4wNS4wMCNQYXZlbWVudCBtYXJraW5nIHNlcnZpY2VzIzcyLjEwLjI0LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI1LjAwLjAwI01hc29ucnkgYW5kIHN0b25ld29yayBhbmQgdGlsZSBzZXR0aW5nIzcyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzcyLjEwLjI1LjAxLjAwI0JyaWNrbGF5aW5nIzcyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI1LjAyLjAwI0NoaW1uZXkgY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI1LjAzLjAwI01hcmJsZSBvciBzdG9uZSBvciB0aWxlIGluc3RhbGxhdGlvbiM3Mi4xMC4yNS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yNS4wNC4wMCNSZXRhaW5pbmcgd2FsbCBjb25zdHJ1Y3Rpb24jNzIuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjUuMDUuMDAjRnJlc2NvIHdvcmsjNzIuMTAuMjUuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjUuMDYuMDAjQWNvdXN0aWNhbCM3Mi4xMC4yNS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yNS4wNy4wMCNJbnN1bGF0aW5nIG1hdGVyaWFsIGluc3RhbGxhdGlvbiM3Mi4xMC4yNS4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yNS4wOC4wMCNSZXN0b3JhdGlvbiBvZiBtYXNvbnJ5IG9yIHN0b25ld29yayBvciB0aWxlIzcyLjEwLjI1LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI2LjAwLjAwI0NhcnBlbnRyeSM3Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yNi4wMS4wMCNSb3VnaCBjYXJwZW50cnkjNzIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjYuMDIuMDAjV2luZG93cyBvciBkb29yIG9yIGZpeHR1cmUgaW5zdGFsbGF0aW9uIzcyLjEwLjI2LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI2LjAzLjAwI0Z1cm5pdHVyZSBpbnN0YWxsYXRpb24jNzIuMTAuMjYuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjcuMDAuMDAjRmxvb3Jpbmcgc2VydmljZSM3Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yNy4wMS4wMCNGbG9vciBzaGVhdGhpbmcgb3IgbGF5aW5nIG9yIGluc3RhbGxhdGlvbiBvciBmaW5pc2hpbmcjNzIuMTAuMjcuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjcuMDIuMDAjRmxvb3IgY292ZXJpbmcgaW5zdGFsbGF0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEwLjI3LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI3LjAzLjAwI0Zsb29yIGNsZWFuaW5nIHNlcnZpY2VzIzcyLjEwLjI3LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI4LjAwLjAwI1JlZnVyYmlzaGluZyBzZXJ2aWNlcyM3Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4yOC4wMS4wMCNSZW5vdmF0aW9uIG9mIGJ1aWxkaW5ncyBvciBsYW5kbWFya3Mgb3IgbW9udW1lbnRzIzcyLjEwLjI4LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI4LjAyLjAwI1Jlc3RvcmF0aW9uIG9mIGJ1aWxkaW5ncyBvciBsYW5kbWFya3Mgb3IgbW9udW1lbnRzIzcyLjEwLjI4LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI5LjAwLjAwI0dyb3VuZHMgbWFpbnRlbmFuY2Ugc2VydmljZXMjNzIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMjkuMDEuMDAjU25vdyBSZW1vdmFsIFNlcnZpY2VzIzcyLjEwLjI5LjAwLjAwCi11bnNwc2M3IzcyLjEwLjI5LjAyLjAwI0xhbmRzY2FwaW5nIHNlcnZpY2VzIzcyLjEwLjI5LjAwLjAwCi11bnNwc2M3IzcyLjEwLjMwLjAwLjAwI1NpdGUgcHJlcGFyYXRpb24gc2VydmljZXMjNzIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTAuMzAuMDEuMDAjTGFuZCBjbGVhcmluZyBzZXJ2aWNlcyM3Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4zMC4wMi4wMCNMYW5kIGxldmVsbGluZyBzZXJ2aWNlcyM3Mi4xMC4zMC4wMC4wMAotdW5zcHNjNyM3Mi4xMC4zMC4wMy4wMCNEZW1vbGl0aW9uIHNlcnZpY2VzIzcyLjEwLjMwLjAwLjAwCi11bnNwc2M3IzcyLjEwLjMwLjA0LjAwI0RpZ2dpbmcgc2VydmljZXMjNzIuMTAuMzAuMDAuMDAKLXVuc3BzYzcjNzIuMTEuMDAuMDAuMDAjR2VuZXJhbCBidWlsZGluZyBjb25zdHJ1Y3Rpb24jNzIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTEuMTUuMDAuMDAjUHJpdmF0ZSBob3VzaW5nIzcyLjExLjAwLjAwLjAwCi11bnNwc2M3IzcyLjExLjE1LjAxLjAwI1NpbmdsZSBmYW1pbHkgaG91c2luZyBjb25zdHJ1Y3Rpb24gb3IgcmVtb2RlbGluZyBvciByZXBhaXIjNzIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzIuMTEuMTUuMDIuMDAjUmVzaWRlbnRpYWwgbXVsdGkgdGVuYW50IGNvbnN0cnVjdGlvbiBvciByZW1vZGVsaW5nIG9yIHJlcGFpciM3Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM3Mi4xMS4xNi4wMC4wMCNJbmR1c3RyaWFsIHBsYW50cyM3Mi4xMS4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMS4xNi4wMS4wMCNDb21tZXJjaWFsIG9mZmljZSBidWlsZGluZyBjb25zdHJ1Y3Rpb24gb3IgcmVtb2RlbGluZyBvciByZW5vdmF0aW9uIG9yIHJlcGFpciM3Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM3Mi4xMS4xNi4wMi4wMCNJbmR1c3RyaWFsIGJ1aWxkaW5ncyBvciB3YXJlaG91c2UgY29uc3RydWN0aW9uIG9yIHJlbW9kZWxpbmcgb3IgcmVub3ZhdGlvbiBvciByZXBhaXIjNzIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNzIuMTEuMTcuMDAuMDAjUHVibGljIHVzZSBidWlsZGluZ3MjNzIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTEuMTcuMDEuMDAjU3BlY2lhbGl6ZWQgcHVibGljIHVzZSBidWlsZGluZyBjb25zdHJ1Y3Rpb24jNzIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzIuMTEuMTcuMDIuMDAjTm9uIHJlc2lkZW50aWFsIGFncmljdWx0dXJhbCBidWlsZGluZyBjb25zdHJ1Y3Rpb24jNzIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzIuMTEuMTcuMDMuMDAjU2VydmljZSBzdGF0aW9uIG9yIHNlcnZpY2UgZ2FyYWdlIGNvbnN0cnVjdGlvbiM3Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM3Mi4xMS4xNy4wNC4wMCNDb21tZXJjaWFsIGJ1aWxkaW5nIGNvbnN0cnVjdGlvbiBvciBlcmVjdGlvbiBvciByZW5vdmF0aW9uIG9yIHJlcGFpciM3Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM3Mi4xMS4xOC4wMC4wMCNDb21tZXJjaWFsIGJ1aWxkaW5ncyM3Mi4xMS4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMS4xOC4wMS4wMCNSZXN0YXVyYW50IGNvbnN0cnVjdGlvbiBvciByZW5vdmF0aW9uIG9yIHJlcGFpciBvciBtYWludGVuYW5jZSM3Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM3Mi4xMS4xOC4wMi4wMCNTaG9wcGluZyBjZW50ZXIgb3Igc3RvcmUgY29uc3RydWN0aW9uIG9yIHJlbm92YXRpb24gb3IgcmVwYWlyIG9yIG1haW50ZW5hbmNlIzcyLjExLjE4LjAwLjAwCi11bnNwc2M3IzcyLjExLjE4LjAzLjAwI09mZmljZSBidWlsZGluZyBjb25zdHJ1Y3Rpb24gb3IgcmVub3ZhdGlvbiBvciByZXBhaXIgb3IgbWFpbnRlbmFuY2UjNzIuMTEuMTguMDAuMDAKLXVuc3BzYzcjNzIuMTEuMTguMDQuMDAjQmF0aHJvb20gcmVub3ZhdGlvbiM3Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM3Mi4xMS4xOS4wMC4wMCNMYW5kIGFuZCBidWlsZGluZyBzaXRlIHByZXBhcmF0aW9uIzcyLjExLjAwLjAwLjAwCi11bnNwc2M3IzcyLjExLjE5LjAxLjAwI0xhbmQgY2xlYXJpbmcjNzIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjNzIuMTEuMTkuMDIuMDAjTGFuZCBsZXZlbGluZyM3Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM3Mi4xMS4xOS4wMy4wMCNCdWlsZGluZyBkZW1vbGl0aW9uIzcyLjExLjE5LjAwLjAwCi11bnNwc2M3IzcyLjEyLjAwLjAwLjAwI0luZnJhc3RydWN0dXJlIGNvbnN0cnVjdGlvbiBhbmQgbWFpbnRlbmFuY2UjNzIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTUuMDAuMDAjSGlnaHdheXMgYW5kIHN0cmVldHMjNzIuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTUuMDEuMDAjSGlnaHdheSBvciBzdHJlZXQgb3Igcm9hZCBjb25zdHJ1Y3Rpb24jNzIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTUuMDIuMDAjSGlnaHdheSBvciBzdHJlZXQgb3Igcm9hZCBzdXJmYWNpbmcgb3IgcGF2aW5nIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE1LjAzLjAwI0hpZ2h3YXkgb3Igc3RyZWV0IGd1YXJkcmFpbCBjb25zdHJ1Y3Rpb24gb3IgbWFpbnRlbmFuY2UjNzIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTUuMDQuMDAjSGlnaHdheSBvciBzdHJlZXQgc2lnbiBvciB0cmFmZmljIHNpZ25hbCBpbnN0YWxsYXRpb24jNzIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTYuMDAuMDAjV2F0ZXIgYW5kIHNld2VyIGFuZCB1dGlsaXR5IGxpbmVzIzcyLjEyLjAwLjAwLjAwCi11bnNwc2M3IzcyLjEyLjE2LjAxLjAwI0VsZWN0cmljIHBvd2VyIGxpbmUgY29uc3RydWN0aW9uIG9yIGluc3RhbGxhdGlvbiM3Mi4xMi4xNi4wMC4wMAotdW5zcHNjNyM3Mi4xMi4xNi4wMi4wMCNDYWJsZSBsYXlpbmcjNzIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTYuMDMuMDAjQXF1ZWR1Y3QgY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE2LjA0LjAwI1Nld2VyIGxpbmUgY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE2LjA1LjAwI1dhdGVyIG1haW4gY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE2LjA2LjAwI1ZvaWNlIG9yIGRhdGEgbGluZSBjb25zdHJ1Y3Rpb24gb3IgbWFpbnRlbmFuY2UjNzIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTYuMDcuMDAjV2F0ZXIgaW5kdXN0cmlhbCBwbGFudCBjb25zdHJ1Y3Rpb24jNzIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTcuMDAuMDAjRGFtcyBhbmQgbWFyaW5lIGNvbnN0cnVjdGlvbiM3Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMi4xNy4wMS4wMCNEYW0gY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE3LjAyLjAwI1BpZXIgb3IgZG9jayBjb25zdHJ1Y3Rpb24gb3IgbWFpbnRlbmFuY2UjNzIuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTcuMDMuMDAjSGFyYm9yIG9yIGJyZWFrd2F0ZXIgY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE3LjA0LjAwI0R5a2Ugb3IgbGV2ZWUgY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE3LjA1LjAwI0RyZWRnaW5nIG9yIGNhaXNzb24gZHJpbGxpbmcjNzIuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTcuMDYuMDAjQ2FuYWwgb3IgZHJhaW5hZ2Ugb3IgaXJyaWdhdGlvbiBzeXN0ZW0gY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE3LjA3LjAwI1BvbmQgY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE3LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE4LjAwLjAwI1JhaWxyb2FkcyBhbmQgc3Vid2F5cyBhbmQgdHJhbXdheXMjNzIuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTguMDEuMDAjQ3V0dGluZyBvZiByaWdodCBvZiB3YXkjNzIuMTIuMTguMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTguMDIuMDAjUmFpbHJvYWQgY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjE4LjAwLjAwCi11bnNwc2M3IzcyLjEyLjE4LjAzLjAwI1N1YndheSBjb25zdHJ1Y3Rpb24gb3IgbWFpbnRlbmFuY2UjNzIuMTIuMTguMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTguMDQuMDAjVHJhbSBjb25zdHJ1Y3Rpb24gb3IgbWFpbnRlbmFuY2UjNzIuMTIuMTguMDAuMDAKLXVuc3BzYzcjNzIuMTIuMTkuMDAuMDAjQWlycG9ydHMgYW5kIGF2aWF0aW9uIzcyLjEyLjAwLjAwLjAwCi11bnNwc2M3IzcyLjEyLjE5LjAxLjAwI0FpcnBvcnQgcnVud2F5IGNvbnN0cnVjdGlvbiM3Mi4xMi4xOS4wMC4wMAotdW5zcHNjNyM3Mi4xMi4xOS4wMi4wMCNBaXJwb3J0IHRlcm1pbmFsIGNvbnN0cnVjdGlvbiM3Mi4xMi4xOS4wMC4wMAotdW5zcHNjNyM3Mi4xMi4xOS4wMy4wMCNIZWxpcGFkIGNvbnN0cnVjdGlvbiM3Mi4xMi4xOS4wMC4wMAotdW5zcHNjNyM3Mi4xMi4yMC4wMC4wMCNCcmlkZ2VzIGFuZCB0dW5uZWxzIGFuZCB2aWFkdWN0cyM3Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMi4yMC4wMS4wMCNCcmlkZ2UgY29uc3RydWN0aW9uIG9yIG1haW50ZW5hbmNlIzcyLjEyLjIwLjAwLjAwCi11bnNwc2M3IzcyLjEyLjIwLjAyLjAwI1R1bm5lbCBjb25zdHJ1Y3Rpb24gb3IgbWFpbnRlbmFuY2UjNzIuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMjAuMDMuMDAjVmlhZHVjdCBjb25zdHJ1Y3Rpb24gb3IgbWFpbnRlbmFuY2UjNzIuMTIuMjAuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMjEuMDAuMDAjQ29uc3RydWN0aW9uIHF1YW50aXR5IHN1cnZleW9ycyM3Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM3Mi4xMi4yMS4wMS4wMCNXYXRlciBvciB3YXN0ZXdhdGVyIHF1YW50aXR5IHN1cnZleW9ycyM3Mi4xMi4yMS4wMC4wMAotdW5zcHNjNyM3Mi4xMi4yMi4wMC4wMCNDb25zdHJ1Y3Rpb24gY29uc3VsdGFuY3kgc2VydmljZXMjNzIuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzIuMTIuMjIuMDEuMDAjU2l0ZSBzdXBlcnZpc2lvbiM3Mi4xMi4yMi4wMC4wMAotdW5zcHNjNyM3Mi4xMi4yMi4wMi4wMCNJbmR1c3RyaWFsIHBsYW50IGRlc2lnbiM3Mi4xMi4yMi4wMC4wMAotdW5zcHNjNyM3My4wMC4wMC4wMC4wMCNJbmR1c3RyaWFsIFByb2R1Y3Rpb24gYW5kIE1hbnVmYWN0dXJpbmcgU2VydmljZXMjNzMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMDAuMDAuMDAjUGxhc3RpYyBhbmQgY2hlbWljYWwgaW5kdXN0cmllcyM3My4wMC4wMC4wMC4wMAotdW5zcHNjNyM3My4xMC4xNS4wMC4wMCNQZXRyb2NoZW1pY2FsIGFuZCBwbGFzdGljIHByb2R1Y3Rpb24jNzMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMTUuMDEuMDAjUGV0cm9sZXVtIHJlZmluaW5nIHNlcnZpY2VzIzczLjEwLjE1LjAwLjAwCi11bnNwc2M3IzczLjEwLjE1LjAyLjAwI05hdHVyYWwgZ2FzIHByb2R1Y3Rpb24gc2VydmljZXMjNzMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMTUuMDMuMDAjT2lscyBvciBncmVhc2VzIHByb2R1Y3Rpb24gc2VydmljZXMjNzMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMTUuMDQuMDAjQ29hbCBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE1LjAwLjAwCi11bnNwc2M3IzczLjEwLjE1LjA1LjAwI1BsYXN0aWNzIG9yIHJlc2lucyBvciBmaWJlcnMgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xMC4xNS4wMC4wMAotdW5zcHNjNyM3My4xMC4xNS4wNi4wMCNDcmVkaXQgY2FyZCBwcm9kdWN0aW9uIG9yIGVtYm9zc2luZyBzZXJ2aWNlcyM3My4xMC4xNS4wMC4wMAotdW5zcHNjNyM3My4xMC4xNi4wMC4wMCNDaGVtaWNhbHMgYW5kIGZlcnRpbGl6ZXJzIHByb2R1Y3Rpb24jNzMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMTYuMDEuMDAjSW5vcmdhbmljIGNoZW1pY2FscyBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE2LjAwLjAwCi11bnNwc2M3IzczLjEwLjE2LjAyLjAwI1NvZGEgYXNoIG9yIGNobG9yaW5lIG9yIGNhdXN0aWMgc29kYSBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE2LjAwLjAwCi11bnNwc2M3IzczLjEwLjE2LjAzLjAwI0lub3JnYW5pYyBhY2lkcyBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE2LjAwLjAwCi11bnNwc2M3IzczLjEwLjE2LjA0LjAwI09yZ2FuaWMgY2hlbWljYWwgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3My4xMC4xNi4wMC4wMAotdW5zcHNjNyM3My4xMC4xNi4wNS4wMCNBY2V0eWxlbmUgb3IgZGVyaXZhdGl2ZXMgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3My4xMC4xNi4wMC4wMAotdW5zcHNjNyM3My4xMC4xNi4wNi4wMCNFdGh5bGVuZSBvciBkZXJpdmF0aXZlcyBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE2LjAwLjAwCi11bnNwc2M3IzczLjEwLjE2LjA3LjAwI0V0aGFub2wgb3IgbWV0aGFub2wgb3IgZGVyaXZhdGl2ZXMgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3My4xMC4xNi4wMC4wMAotdW5zcHNjNyM3My4xMC4xNi4wOC4wMCNGZXJ0aWxpemVycyBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE2LjAwLjAwCi11bnNwc2M3IzczLjEwLjE2LjA5LjAwI1BvdGFzaCBtaW5pbmcgb3IgcHJvY2Vzc2luZyBzZXJ2aWNlcyM3My4xMC4xNi4wMC4wMAotdW5zcHNjNyM3My4xMC4xNi4xMC4wMCNQZXN0aWNpZGUgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3My4xMC4xNi4wMC4wMAotdW5zcHNjNyM3My4xMC4xNi4xMS4wMCNQYWludHMgb3IgdmFybmlzaGVzIG9yIGxhY3F1ZXJzIHByb2R1Y3Rpb24gc2VydmljZXMjNzMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMTYuMTIuMDAjU29hcCBvciBjbGVhbmluZyBwcmVwYXJhdGlvbnMgb3IgcGVyZnVtZXMgb3IgY29zbWV0aWNzIHByb2R1Y3Rpb24gc2VydmljZXMjNzMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMTYuMTMuMDAjU29sdmVudHMgb3IgZ2x5Y29scyBvciBkZXRlcmdlbnRzIHByb2R1Y3Rpb24gc2VydmljZXMjNzMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMTYuMTQuMDAjRmVybWVudHMgb3IgZW56eW1lcyBzZXJ2aWNlcyM3My4xMC4xNi4wMC4wMAotdW5zcHNjNyM3My4xMC4xNy4wMC4wMCNQaGFybWFjZXV0aWNhbCBwcm9kdWN0aW9uIzczLjEwLjAwLjAwLjAwCi11bnNwc2M3IzczLjEwLjE3LjAxLjAwI0RydWdzIG9yIG1lZGljaW5lIHByb2R1Y3Rpb24gc2VydmljZXMjNzMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMTcuMDIuMDAjVmFjY2luZXMgb3Igc2VyYSBvciBhbnRpYmlvdGljcyBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE3LjAwLjAwCi11bnNwc2M3IzczLjEwLjE3LjAzLjAwI1BhcmFwaGFybWFjZXV0aWNhbCBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE3LjAwLjAwCi11bnNwc2M3IzczLjEwLjE4LjAwLjAwI0Jpb2NoZW1pY2FsIGFuZCBiaW90ZWNobm9sb2d5IHByb2R1Y3Rpb24jNzMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTAuMTguMDEuMDAjQmlvbWFzcyBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE4LjAwLjAwCi11bnNwc2M3IzczLjEwLjE4LjAyLjAwI0Jpb3Byb3RlaW4gcHJvZHVjdGlvbiBzZXJ2aWNlcyM3My4xMC4xOC4wMC4wMAotdW5zcHNjNyM3My4xMC4xOS4wMC4wMCNSdWJiZXIgcHJvZHVjdGlvbiM3My4xMC4wMC4wMC4wMAotdW5zcHNjNyM3My4xMC4xOS4wMS4wMCNSdWJiZXIgbWlsbGluZyBzZXJ2aWNlcyM3My4xMC4xOS4wMC4wMAotdW5zcHNjNyM3My4xMC4xOS4wMi4wMCNSdWJiZXIgdGlyZXMgb3IgdHViZXMgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3My4xMC4xOS4wMC4wMAotdW5zcHNjNyM3My4xMC4xOS4wMy4wMCNSdWJiZXIgb3IgcGxhc3RpYyBmb290d2VhciBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEwLjE5LjAwLjAwCi11bnNwc2M3IzczLjExLjAwLjAwLjAwI1dvb2QgYW5kIHBhcGVyIGluZHVzdHJpZXMjNzMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTEuMTUuMDAuMDAjV29vZCBwcm9jZXNzaW5nIzczLjExLjAwLjAwLjAwCi11bnNwc2M3IzczLjExLjE1LjAxLjAwI1Nhd21pbGxpbmcgc2VydmljZXMjNzMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTEuMTUuMDIuMDAjVmVuZWVyIHByb2R1Y3Rpb24gc2VydmljZXMjNzMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTEuMTUuMDMuMDAjV29vZCBiYXNlIHBhbmVscyBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjExLjE1LjAwLjAwCi11bnNwc2M3IzczLjExLjE1LjA0LjAwI1dvb2RlbiBjb250YWluZXJzIG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTEuMTUuMDUuMDAjRnVybml0dXJlIG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTEuMTUuMDYuMDAjQ29yayBwcm9kdWN0cyBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjExLjE1LjAwLjAwCi11bnNwc2M3IzczLjExLjE1LjA3LjAwI0NhbmUgb3Igd2lja2Vyd2FyZSBwcm9jZXNzaW5nIHNlcnZpY2VzIzczLjExLjE1LjAwLjAwCi11bnNwc2M3IzczLjExLjE2LjAwLjAwI1B1bHAgYW5kIHBhcGVyIHByb2Nlc3NpbmcjNzMuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTEuMTYuMDEuMDAjUHVscCBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjExLjE2LjAwLjAwCi11bnNwc2M3IzczLjExLjE2LjAyLjAwI1BhcGVyIG9yIHBhcGVyIGJvYXJkIHByb2R1Y3Rpb24gc2VydmljZXMjNzMuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTEuMTYuMDMuMDAjSGFyZGJvYXJkIG9yIGZpYmVyYm9hcmQgcHJvZHVjdGlvbiBzZXJ2aWNlcyM3My4xMS4xNi4wMC4wMAotdW5zcHNjNyM3My4xMS4xNi4wNC4wMCNQYXBlciBwcm9kdWN0aW9uIG9yIHJlY3ljbGluZyBzZXJ2aWNlcyM3My4xMS4xNi4wMC4wMAotdW5zcHNjNyM3My4xMi4wMC4wMC4wMCNNZXRhbCBhbmQgbWluZXJhbCBpbmR1c3RyaWVzIzczLjAwLjAwLjAwLjAwCi11bnNwc2M3IzczLjEyLjE1LjAwLjAwI01ldGFsIHNtZWx0aW5nIGFuZCByZWZpbmluZyBhbmQgZm9ybWluZyBwcm9jZXNzZXMjNzMuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTUuMDEuMDAjRmVycm91cyBhbGxveSBwcm9kdWN0aW9uIHNlcnZpY2VzIzczLjEyLjE1LjAwLjAwCi11bnNwc2M3IzczLjEyLjE1LjAyLjAwI0Jhc2ljIG1ldGFsIGNvbWJpbmF0aW9uIHByb2Nlc3NlcyBzZXJ2aWNlcyM3My4xMi4xNS4wMC4wMAotdW5zcHNjNyM3My4xMi4xNS4wMy4wMCNSZWZyYWN0b3JzIHNlcnZpY2VzIGZvciBpcm9uIG9yIHN0ZWVsIHByb2R1Y3Rpb24jNzMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTUuMDQuMDAjSXJvbiBvciBzdGVlbCBtYWtpbmcgc2VydmljZXMjNzMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTUuMDUuMDAjSXJvbiBvciBzdGVlbCBmb3JnaW5nIHNlcnZpY2VzIzczLjEyLjE1LjAwLjAwCi11bnNwc2M3IzczLjEyLjE1LjA2LjAwI1ByZSBmaW5pc2hpbmcgaXJvbiBvciBzdGVlbCBwcm9jZXNzZXMgc2VydmljZXMjNzMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTUuMDcuMDAjRmluaXNoaW5nIG1ldGFsIHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTUuMDguMDAjU21lbHRpbmcgbWV0YWwgc2VydmljZXMjNzMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTUuMDkuMDAjUmVmaW5pbmcgbWV0YWwgc2VydmljZXMjNzMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTYuMDAuMDAjTWV0YWwgZmluaXNoaW5nIzczLjEyLjAwLjAwLjAwCi11bnNwc2M3IzczLjEyLjE2LjAxLjAwI01ldGFsIGN1dHRpbmcgc2VydmljZXMjNzMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTYuMDIuMDAjQmxhY2tzbWl0aCBzZXJ2aWNlcyM3My4xMi4xNi4wMC4wMAotdW5zcHNjNyM3My4xMi4xNi4wMy4wMCNNZXRhbCBoZWF0aW5nIHNlcnZpY2VzIzczLjEyLjE2LjAwLjAwCi11bnNwc2M3IzczLjEyLjE2LjA0LjAwI01ldGFsIHBsYXRpbmcgb3IgcmVwbGF0aW5nIHNlcnZpY2VzIzczLjEyLjE2LjAwLjAwCi11bnNwc2M3IzczLjEyLjE2LjA1LjAwI01ldGFsIHJvbGxpbmcgb3BlcmF0aW9ucyM3My4xMi4xNi4wMC4wMAotdW5zcHNjNyM3My4xMi4xNi4wNi4wMCNNZXRhbCBmb3JnaW5nIHNlcnZpY2VzIzczLjEyLjE2LjAwLjAwCi11bnNwc2M3IzczLjEyLjE2LjA3LjAwI01ldGFsIGRyYXdpbmcgc2VydmljZXMjNzMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTYuMDguMDAjTWV0YWwgZXh0cnVkaW5nIHNlcnZpY2VzIzczLjEyLjE2LjAwLjAwCi11bnNwc2M3IzczLjEyLjE2LjA5LjAwI1N1cmZhY2UgbWV0YWwgZmluaXNoaW5nIG9yIHRyZWF0bWVudCBzZXJ2aWNlcyM3My4xMi4xNi4wMC4wMAotdW5zcHNjNyM3My4xMi4xNi4xMC4wMCNIb3JzZXNob2Vpbmcgc2VydmljZXMjNzMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTYuMTEuMDAjVGluc21pdGhpbmcgc2VydmljZXMjNzMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTYuMTIuMDAjUmViYWJiaXRpbmcgc2VydmljZXMjNzMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTYuMTMuMDAjTWV0YWwgY2FzdGluZyBzZXJ2aWNlcyM3My4xMi4xNi4wMC4wMAotdW5zcHNjNyM3My4xMi4xNy4wMC4wMCNXZWxkaW5nIGFuZCBicmF6aW5nIGFuZCBzb2xkZXJpbmcjNzMuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTcuMDEuMDAjV2VsZGluZyBzZXJ2aWNlcyM3My4xMi4xNy4wMC4wMAotdW5zcHNjNyM3My4xMi4xNy4wMi4wMCNCcmF6aW5nIHNlcnZpY2VzIzczLjEyLjE3LjAwLjAwCi11bnNwc2M3IzczLjEyLjE3LjAzLjAwI1NvbGRlcmluZyBzZXJ2aWNlcyM3My4xMi4xNy4wMC4wMAotdW5zcHNjNyM3My4xMi4xNy4wNC4wMCNDYXN0aW5nIHNlcnZpY2VzIzczLjEyLjE3LjAwLjAwCi11bnNwc2M3IzczLjEyLjE4LjAwLjAwI05vbiBtZXRhbGxpYyBtaW5lcmFsIHByb2R1Y3RzIGluZHVzdHJ5IHNlcnZpY2VzIzczLjEyLjAwLjAwLjAwCi11bnNwc2M3IzczLjEyLjE4LjAxLjAwI1BvdHRlcnkgb3IgY2hpbmEgb3IgZWFydGhlbndhcmUgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xMi4xOC4wMC4wMAotdW5zcHNjNyM3My4xMi4xOC4wMi4wMCNHbGFzcyBvciBnbGFzcyBwcm9kdWN0cyBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjEyLjE4LjAwLjAwCi11bnNwc2M3IzczLjEyLjE4LjAzLjAwI1N0cnVjdHVyYWwgY2xheSBwcm9kdWN0cyBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjEyLjE4LjAwLjAwCi11bnNwc2M3IzczLjEyLjE4LjA0LjAwI0NlbWVudCBvciBsaW1lIG9yIHBsYXN0ZXIgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xMi4xOC4wMC4wMAotdW5zcHNjNyM3My4xMi4xOC4wNS4wMCNDb25jcmV0ZSBvciBhZ2dyZWdhdGVzIG9yIHN0b25lIHByb2R1Y3RzIG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTIuMTguMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTguMDYuMDAjQWJyYXNpdmVzIG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTIuMTguMDAuMDAKLXVuc3BzYzcjNzMuMTIuMTguMDcuMDAjQXNiZXN0b3MgcHJvZHVjdHMgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xMi4xOC4wMC4wMAotdW5zcHNjNyM3My4xMy4wMC4wMC4wMCNGb29kIGFuZCBiZXZlcmFnZSBpbmR1c3RyaWVzIzczLjAwLjAwLjAwLjAwCi11bnNwc2M3IzczLjEzLjE1LjAwLjAwI0JldmVyYWdlIHByb2Nlc3NpbmcjNzMuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTUuMDEuMDAjU3Bpcml0cyBkaXN0aWxsaW5nIG9yIGJsZW5kaW5nIHNlcnZpY2VzIzczLjEzLjE1LjAwLjAwCi11bnNwc2M3IzczLjEzLjE1LjAyLjAwI1dpbmUgcHJvY2Vzc2luZyBzZXJ2aWNlcyM3My4xMy4xNS4wMC4wMAotdW5zcHNjNyM3My4xMy4xNS4wMy4wMCNCcmV3ZXJ5IHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTUuMDQuMDAjTm9uIGFsY29ob2xpYyBmcnVpdCBiYXNlZCBiZXZlcmFnZSBwcm9jZXNzaW5nIHNlcnZpY2VzIzczLjEzLjE1LjAwLjAwCi11bnNwc2M3IzczLjEzLjE1LjA1LjAwI1dhdGVyIGJldmVyYWdlcyBwcm9jZXNzaW5nIHNlcnZpY2VzIzczLjEzLjE1LjAwLjAwCi11bnNwc2M3IzczLjEzLjE1LjA2LjAwI0luZnVzZWQgYmV2ZXJhZ2VzIHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTUuMDcuMDAjQ29mZmVlIHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTUuMDguMDAjVGVhIHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTYuMDAuMDAjTWVhdCBhbmQgcG91bHRyeSBhbmQgc2VhZm9vZCBwcm9jZXNzaW5nIzczLjEzLjAwLjAwLjAwCi11bnNwc2M3IzczLjEzLjE2LjAxLjAwI01lYXQgcHJvZHVjdHMgb3IgYnkgcHJvZHVjdHMgcHJvY2Vzc2luZyBzZXJ2aWNlcyM3My4xMy4xNi4wMC4wMAotdW5zcHNjNyM3My4xMy4xNi4wMi4wMCNGaXNoIG9yIGZpc2ggcHJvZHVjdHMgcHJvY2Vzc2luZyBzZXJ2aWNlcyM3My4xMy4xNi4wMC4wMAotdW5zcHNjNyM3My4xMy4xNi4wMy4wMCNQb3VsdHJ5IHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTYuMDQuMDAjTWVhdCBoeWdpZW5lIG9yIGluc3BlY3Rpb24gc2VydmljZXMjNzMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTYuMDUuMDAjTWVhdCBwbGFudCBvcGVyYXRpb24gb3IgbWFuYWdlbWVudCBzZXJ2aWNlcyM3My4xMy4xNi4wMC4wMAotdW5zcHNjNyM3My4xMy4xNi4wNi4wMCNTbGF1Z2h0ZXIgaG91c2VzIHNlcnZpY2VzIzczLjEzLjE2LjAwLjAwCi11bnNwc2M3IzczLjEzLjE2LjA3LjAwI0J1dGNoZXIgc2VydmljZXMjNzMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTYuMDguMDAjQ29sZCBzdG9yYWdlIHNlcnZpY2VzIzczLjEzLjE2LjAwLjAwCi11bnNwc2M3IzczLjEzLjE3LjAwLjAwI0ZydWl0cyBhbmQgdmVnZXRhYmxlcyBwcm9jZXNzaW5nIzczLjEzLjAwLjAwLjAwCi11bnNwc2M3IzczLjEzLjE3LjAxLjAwI0ZydWl0IG9yIHZlZ2V0YWJsZSBjbGVhbmluZyBzZXJ2aWNlcyM3My4xMy4xNy4wMC4wMAotdW5zcHNjNyM3My4xMy4xNy4wMi4wMCNGcnVpdCBvciB2ZWdldGFibGUgc3ByYXlpbmcgc2VydmljZXMjNzMuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTcuMDMuMDAjRnJ1aXQgb3IgdmVnZXRhYmxlIHBhY2tpbmcgc2VydmljZXMjNzMuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTguMDAuMDAjRGFpcnkgYW5kIGVnZ3MgcHJvY2Vzc2luZyM3My4xMy4wMC4wMC4wMAotdW5zcHNjNyM3My4xMy4xOC4wMS4wMCNNaWxrIHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTMuMTguMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTguMDIuMDAjRWdnIHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTMuMTguMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTguMDMuMDAjQ2hlZXNlIHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTMuMTguMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTguMDQuMDAjQnV0dGVyIG9yIGNyZWFtIHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTMuMTguMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTkuMDAuMDAjR3JhaW5zIGFuZCBzdWdhciBhbmQgb2lscyBhbmQgZmF0IHByb2Nlc3NpbmcjNzMuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTMuMTkuMDEuMDAjTWlsbGluZyBzZXJ2aWNlcyM3My4xMy4xOS4wMC4wMAotdW5zcHNjNyM3My4xMy4xOS4wMi4wMCNDZXJlYWwgcHJvZHVjdHMgcHJvY2Vzc2luZyBzZXJ2aWNlcyM3My4xMy4xOS4wMC4wMAotdW5zcHNjNyM3My4xMy4xOS4wMy4wMCNTdWdhciBvciBzdWdhciBwcm9kdWN0cyBwcm9jZXNzaW5nIHNlcnZpY2VzIzczLjEzLjE5LjAwLjAwCi11bnNwc2M3IzczLjEzLjE5LjA0LjAwI1ZlZ2V0YWJsZSBvaWxzIG9yIGZhdHMgcHJvY2Vzc2luZyBzZXJ2aWNlcyM3My4xMy4xOS4wMC4wMAotdW5zcHNjNyM3My4xMy4xOS4wNS4wMCNTcGljZSBwcm9jZXNzaW5nIHNlcnZpY2VzIzczLjEzLjE5LjAwLjAwCi11bnNwc2M3IzczLjEzLjE5LjA2LjAwI0Jha2VyeSBwcm9kdWN0cyBwcm9jZXNzaW5nIHNlcnZpY2VzIzczLjEzLjE5LjAwLjAwCi11bnNwc2M3IzczLjE0LjAwLjAwLjAwI0ZpYmVycyBhbmQgdGV4dGlsZXMgYW5kIGZhYnJpYyBpbmR1c3RyaWVzIzczLjAwLjAwLjAwLjAwCi11bnNwc2M3IzczLjE0LjE1LjAwLjAwI0ZpYmVyIHByb2R1Y3Rpb24jNzMuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTQuMTUuMDEuMDAjUmF5b24gb3IgYWNldGF0ZSBmaWJlciBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE0LjE1LjAwLjAwCi11bnNwc2M3IzczLjE0LjE1LjAyLjAwI0dsYXNzIGZpYmVyIG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTQuMTUuMDMuMDAjU2lsayBmaWJlciBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE0LjE1LjAwLjAwCi11bnNwc2M3IzczLjE0LjE1LjA0LjAwI0NvdHRvbiBmaWJlciBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE0LjE1LjAwLjAwCi11bnNwc2M3IzczLjE0LjE1LjA1LjAwI1dvb2wgZmliZXIgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xNC4xNS4wMC4wMAotdW5zcHNjNyM3My4xNC4xNS4wNi4wMCNQb2x5ZXN0ZXIgZmliZXIgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xNC4xNS4wMC4wMAotdW5zcHNjNyM3My4xNC4xNS4wNy4wMCNQb2x5YW1pZGUgZmliZXIgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xNC4xNS4wMC4wMAotdW5zcHNjNyM3My4xNC4xNS4wOC4wMCNBY3J5bGljIGZpYmVyIG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTQuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTQuMTYuMDAuMDAjVGhyZWFkIGFuZCB5YXJuIHByb2Nlc3NpbmcjNzMuMTQuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTQuMTYuMDEuMDAjVGhyZWFkIHByb2Nlc3Npbmcgc2VydmljZXMjNzMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTQuMTYuMDIuMDAjWWFybiBwcm9jZXNzaW5nIHNlcnZpY2VzIzczLjE0LjE2LjAwLjAwCi11bnNwc2M3IzczLjE0LjE3LjAwLjAwI0ZhYnJpY3MgYW5kIGxlYXRoZXIgcHJvZHVjdGlvbiM3My4xNC4wMC4wMC4wMAotdW5zcHNjNyM3My4xNC4xNy4wMS4wMCNCcm9hZCB3b3ZlbiBmYWJyaWNzIG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNzMuMTQuMTcuMDIuMDAjTmFycm93IHdvdmVuIGZhYnJpY3MgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xNC4xNy4wMC4wMAotdW5zcHNjNyM3My4xNC4xNy4wMy4wMCNLbml0d2VhciBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE0LjE3LjAwLjAwCi11bnNwc2M3IzczLjE0LjE3LjA0LjAwI0NhcnBldCBvciBydWcgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xNC4xNy4wMC4wMAotdW5zcHNjNyM3My4xNC4xNy4wNS4wMCNDb3JkYWdlIG9yIHJvcGUgb3IgdHdpbmUgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xNC4xNy4wMC4wMAotdW5zcHNjNyM3My4xNC4xNy4wNi4wMCNEeWVpbmcgb3IgcHJpbnRpbmcgb3IgZmluaXNoaW5nIHNlcnZpY2VzIzczLjE0LjE3LjAwLjAwCi11bnNwc2M3IzczLjE0LjE3LjA3LjAwI1dvdmVuIHN1aXRzIG9yIGNvYXRzIG9yIG92ZXJjb2F0cyBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE0LjE3LjAwLjAwCi11bnNwc2M3IzczLjE0LjE3LjA4LjAwI1dvdmVuIG91dGVyd2VhciBjbG90aGluZyBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE0LjE3LjAwLjAwCi11bnNwc2M3IzczLjE0LjE3LjA5LjAwI0Z1ciBkcmVzc2luZyBvciBkeWVpbmcgc2VydmljZXMjNzMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNzMuMTQuMTcuMTAuMDAjTGVhdGhlciBmb290d2VhciBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE0LjE3LjAwLjAwCi11bnNwc2M3IzczLjE0LjE3LjExLjAwI0xlYXRoZXIgbHVnZ2FnZSBvciBoYW5kYmFncyBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE0LjE3LjAwLjAwCi11bnNwc2M3IzczLjE0LjE3LjEyLjAwI0xlYXRoZXIgdGFubmluZyBvciBmaW5pc2hpbmcgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xNC4xNy4wMC4wMAotdW5zcHNjNyM3My4xNC4xNy4xMy4wMCNOb253b3ZlbiBmYWJyaWMgc2VydmljZXMjNzMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjNzMuMTQuMTcuMTQuMDAjQnJhaWRlZCB5YXJuIG9yIGZhYnJpYyBzZXJ2aWNlcyM3My4xNC4xNy4wMC4wMAotdW5zcHNjNyM3My4xNC4xNy4xNS4wMCNJbmR1c3RyaWFsIHNld2luZyBzZXJ2aWNlcyM3My4xNC4xNy4wMC4wMAotdW5zcHNjNyM3My4xNS4wMC4wMC4wMCNNYW51ZmFjdHVyaW5nIHN1cHBvcnQgc2VydmljZXMjNzMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTUuMDAuMDAjQXNzZW1ibHkgc2VydmljZXMjNzMuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTUuMDEuMDAjQXNzZW1ibHkgbGluZSB3b3JrIzczLjE1LjE1LjAwLjAwCi11bnNwc2M3IzczLjE1LjE1LjAyLjAwI0pvaW50IHNlYWxpbmcgc2VydmljZXMjNzMuMTUuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTYuMDAuMDAjUGFja2FnaW5nIHNlcnZpY2VzIzczLjE1LjAwLjAwLjAwCi11bnNwc2M3IzczLjE1LjE2LjAxLjAwI0Nhbm5pbmcgcGxhbnRzIHNlcnZpY2VzIzczLjE1LjE2LjAwLjAwCi11bnNwc2M3IzczLjE1LjE2LjAyLjAwI1BhY2thZ2luZyBvZiBhZ3JpY3VsdHVyYWwgYnkgcHJvZHVjdHMgc2VydmljZXMjNzMuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTYuMDMuMDAjUGFja2FnaW5nIG9mIG5vbiBmb29kIHByb2R1Y3RzIHNlcnZpY2VzIzczLjE1LjE2LjAwLjAwCi11bnNwc2M3IzczLjE1LjE2LjA0LjAwI1BhY2thZ2luZyBvZiBwaGFybWFjZXV0aWNhbHMgc2VydmljZXMjNzMuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTYuMDUuMDAjUG9pbnQgb2YgcHVyY2hhc2UgZGlzcGxheSBwYWNrYWdpbmcgc2VydmljZXMjNzMuMTUuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTYuMDYuMDAjTWFudWFsIGhhbmQgcGFja2FnaW5nIHNlcnZpY2VzIzczLjE1LjE2LjAwLjAwCi11bnNwc2M3IzczLjE1LjE2LjA3LjAwI01hY2hpbmUgYXNzaXN0ZWQgcGFja2FnaW5nIHNlcnZpY2VzIzczLjE1LjE2LjAwLjAwCi11bnNwc2M3IzczLjE1LjE3LjAwLjAwI01hdGVyaWFsIHRyZWF0bWVudCM3My4xNS4wMC4wMC4wMAotdW5zcHNjNyM3My4xNS4xNy4wMS4wMCNXYXRlciBwcm9vZmluZyBtYXRlcmlhbCB0cmVhdG1lbnQgc2VydmljZXMjNzMuMTUuMTcuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTcuMDIuMDAjRmlyZSBwcm90ZWN0aW9uIG1hdGVyaWFsIHRyZWF0bWVudCBzZXJ2aWNlcyM3My4xNS4xNy4wMC4wMAotdW5zcHNjNyM3My4xNS4xNy4wMy4wMCNBbnRpY29ycm9zaW9uIG1hdGVyaWFsIHRyZWF0bWVudCBzZXJ2aWNlcyM3My4xNS4xNy4wMC4wMAotdW5zcHNjNyM3My4xNS4xOC4wMC4wMCNDb252ZXJ0aW5nIHNlcnZpY2VzIzczLjE1LjAwLjAwLjAwCi11bnNwc2M3IzczLjE1LjE4LjAxLjAwI1NoZWV0aW5nIHNlcnZpY2VzIzczLjE1LjE4LjAwLjAwCi11bnNwc2M3IzczLjE1LjE4LjAyLjAwI1NsaXR0aW5nIHNlcnZpY2VzIzczLjE1LjE4LjAwLjAwCi11bnNwc2M3IzczLjE1LjE4LjAzLjAwI0RpZSBjdXR0aW5nIHNlcnZpY2VzIzczLjE1LjE4LjAwLjAwCi11bnNwc2M3IzczLjE1LjE4LjA0LjAwI0ZvbGRpbmcgc2VydmljZXMjNzMuMTUuMTguMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTguMDUuMDAjTGFtaW5hdGluZyBzZXJ2aWNlcyM3My4xNS4xOC4wMC4wMAotdW5zcHNjNyM3My4xNS4xOS4wMC4wMCNJbmR1c3RyaWFsIHByaW50aW5nIHNlcnZpY2VzIzczLjE1LjAwLjAwLjAwCi11bnNwc2M3IzczLjE1LjE5LjAxLjAwI0ZsZXhvZ3JhcGhpYyBpbmR1c3RyaWFsIHByaW50aW5nIHNlcnZpY2VzIzczLjE1LjE5LjAwLjAwCi11bnNwc2M3IzczLjE1LjE5LjAyLjAwI1JvdG9ncmF2dXJlIGluZHVzdHJpYWwgcHJpbnRpbmcgc2VydmljZXMjNzMuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTkuMDMuMDAjU2NyZWVuIGluZHVzdHJpYWwgcHJpbnRpbmcgc2VydmljZXMjNzMuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTkuMDQuMDAjT2Zmc2V0IGluZHVzdHJpYWwgcHJpbnRpbmcgc2VydmljZXMjNzMuMTUuMTkuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMTkuMDUuMDAjRGlnaXRhbCBpbmR1c3RyaWFsIHByaW50aW5nIHNlcnZpY2VzIzczLjE1LjE5LjAwLjAwCi11bnNwc2M3IzczLjE1LjE5LjA2LjAwI1RoZXJtYWwgdHJhbnNmZXIgaW5kdXN0cmlhbCBwcmludGluZyBzZXJ2aWNlcyM3My4xNS4xOS4wMC4wMAotdW5zcHNjNyM3My4xNS4yMC4wMC4wMCNGaWxsaW5nIFNlcnZpY2VzIzczLjE1LjAwLjAwLjAwCi11bnNwc2M3IzczLjE1LjIwLjAxLjAwI0xpcXVpZCBmaWxsaW5nIHNlcnZpY2VzIzczLjE1LjIwLjAwLjAwCi11bnNwc2M3IzczLjE1LjIwLjAyLjAwI0Flcm9zb2wgZmlsbGluZyBzZXJ2aWNlcyM3My4xNS4yMC4wMC4wMAotdW5zcHNjNyM3My4xNS4yMC4wMy4wMCNQYXN0ZSBmaWxsaW5nIHNlcnZpY2VzIzczLjE1LjIwLjAwLjAwCi11bnNwc2M3IzczLjE1LjIwLjA0LjAwI1Bvd2RlciBmaWxsaW5nIHNlcnZpY2VzIzczLjE1LjIwLjAwLjAwCi11bnNwc2M3IzczLjE1LjIxLjAwLjAwI01hbnVmYWN0dXJpbmcgZXF1aXBtZW50IG1haW50ZW5hbmNlIGFuZCByZXBhaXIgc2VydmljZXMjNzMuMTUuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMjEuMDEuMDAjTWFudWZhY3R1cmluZyBlcXVpcG1lbnQgbWFpbnRlbmFuY2Ugc2VydmljZXMjNzMuMTUuMjEuMDAuMDAKLXVuc3BzYzcjNzMuMTUuMjEuMDIuMDAjTWFudWZhY3R1cmluZyBlcXVpcG1lbnQgcmVwYWlyIHNlcnZpY2VzIzczLjE1LjIxLjAwLjAwCi11bnNwc2M3IzczLjE2LjAwLjAwLjAwI01hY2hpbmVyeSBhbmQgdHJhbnNwb3J0IGVxdWlwbWVudCBtYW51ZmFjdHVyZSM3My4wMC4wMC4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4wMC4wMCNNYW51ZmFjdHVyZSBvZiBtYWNoaW5lcnkjNzMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTYuMTUuMDEuMDAjRW5naW5lIG9yIHR1cmJpbmUgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xNi4xNS4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4wMi4wMCNBZ3JpY3VsdHVyYWwgbWFjaGluZXJ5IG9yIGVxdWlwbWVudCBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE2LjE1LjAwLjAwCi11bnNwc2M3IzczLjE2LjE1LjAzLjAwI01hY2hpbmUgdG9vbHMgb3IgbWV0YWwgb3Igd29vZCB3b3JraW5nIG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTYuMTUuMDQuMDAjU3BlY2lhbCBpbmR1c3RyaWFsIHBsYW50cyBvciBtYWNoaW5lcnkgbWFudWZhY3R1cmluZyBzZXJ2aWNlcyM3My4xNi4xNS4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4wNS4wMCNDb25zdHJ1Y3Rpb24gbWFjaGluZXJ5IG9yIGVxdWlwbWVudCBtYW51ZmFjdHVyaW5nIHNlcnZpY2VzIzczLjE2LjE1LjAwLjAwCi11bnNwc2M3IzczLjE2LjE1LjA2LjAwI01pbmluZyBtYWNoaW5lcnkgb3IgZXF1aXBtZW50IG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTYuMTUuMDcuMDAjRm9vZCBwcm9kdWN0cyBtYWNoaW5lcnkgb3IgZXF1aXBtZW50IG1hbnVmYWN0dXJpbmcgc2VydmljZXMjNzMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTYuMTUuMDguMDAjUGFwZXIgcHJpbnRpbmcgbWFjaGluZXJ5IG9yIGVxdWlwbWVudCBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNS4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4wOS4wMCNNZXRhbGx1cmdpY2FsIG1hY2hpbmVyeSBvciBlcXVpcG1lbnQgbWFudWZhY3R1cmUgc2VydmljZXMjNzMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTYuMTUuMTAuMDAjQ2hlbWljYWwgb3IgcGhhcm1hY2V1dGljYWwgbWFjaGluZXJ5IG9yIGVxdWlwbWVudCBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNS4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4xMS4wMCNDZW1lbnQgcGxhbnQgbWFjaGluZXJ5IG9yIGVxdWlwbWVudCBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNS4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4xMi4wMCNUZXh0aWxlIG1hY2hpbmVyeSBvciBlcXVpcG1lbnQgbWFudWZhY3R1cmUgc2VydmljZXMjNzMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTYuMTUuMTMuMDAjUG93ZXIgcGxhbnQgYm9pbGVycyBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNS4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4xNC4wMCNGdXJuYWNlcyBvciBvdmVucyBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNS4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4xNS4wMCNPZmZpY2UgbWFjaGluZXJ5IG9yIGVxdWlwbWVudCBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNS4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4xNi4wMCNMaWZ0aW5nIG9yIGhvaXN0aW5nIG9yIGNvbnZleWluZyBlcXVpcG1lbnQgbWFudWZhY3R1cmUgc2VydmljZXMjNzMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTYuMTUuMTcuMDAjQWlyIGNvbmRpdGlvbmluZyBvciB2ZW50aWxhdGluZyBvciByZWZyaWdlcmF0aW9uIGVxdWlwbWVudCBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNS4wMC4wMAotdW5zcHNjNyM3My4xNi4xNS4xOC4wMCNEb21lc3RpYyBhcHBsaWFuY2VzIG9yIG1hY2hpbmVzIGV4Y2VwdCBlbGVjdHJpY2FsIG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE2LjE1LjAwLjAwCi11bnNwc2M3IzczLjE2LjE1LjE5LjAwI1B1bXBzIG9yIGNvbXByZXNzb3JzIG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE2LjE1LjAwLjAwCi11bnNwc2M3IzczLjE2LjE2LjAwLjAwI01hbnVmYWN0dXJlIG9mIHRyYW5zcG9ydCBlcXVpcG1lbnQjNzMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTYuMTYuMDEuMDAjRmlzaGluZyBzaGlwIG9yIGJvYXQgYnVpbGRpbmcgc2VydmljZXMjNzMuMTYuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTYuMTYuMDIuMDAjUmFpbHJvYWQgcm9sbGluZyBzdG9jayBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNi4wMC4wMAotdW5zcHNjNyM3My4xNi4xNi4wMy4wMCNMb2NvbW90aXZlIG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE2LjE2LjAwLjAwCi11bnNwc2M3IzczLjE2LjE2LjA0LjAwI01vdG9yIHZlaGljbGVzIG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE2LjE2LjAwLjAwCi11bnNwc2M3IzczLjE2LjE2LjA1LjAwI01vdG9yIHZlaGljbGVzIHBhcnRzIG9yIGFjY2Vzc29yaWVzIG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE2LjE2LjAwLjAwCi11bnNwc2M3IzczLjE2LjE2LjA2LjAwI01vdG9yY3ljbGUgb3IgYmljeWNsZSBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNi4wMC4wMAotdW5zcHNjNyM3My4xNi4xNi4wNy4wMCNBaXIgb3Igc3BhY2VjcmFmdCBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNi4xNi4wMC4wMAotdW5zcHNjNyM3My4xNy4wMC4wMC4wMCNNYW51ZmFjdHVyZSBvZiBlbGVjdHJpY2FsIGdvb2RzIGFuZCBwcmVjaXNpb24gaW5zdHJ1bWVudHMjNzMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTcuMTUuMDAuMDAjTWFudWZhY3R1cmUgb2YgZWxlY3RyaWNhbCBnb29kcyM3My4xNy4wMC4wMC4wMAotdW5zcHNjNyM3My4xNy4xNS4wMS4wMCNQb3dlciBnZW5lcmF0aW9uIG9yIHRyYW5zbWlzc2lvbiBvciBkaXN0cmlidXRpb24gZXF1aXBtZW50IG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE3LjE1LjAwLjAwCi11bnNwc2M3IzczLjE3LjE1LjAyLjAwI0RyeSBvciBzdG9yYWdlIGJhdHRlcnkgbWFudWZhY3R1cmUgc2VydmljZXMjNzMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTcuMTUuMDMuMDAjRWxlY3RyaWNhbCB0b29scyBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNy4xNS4wMC4wMAotdW5zcHNjNyM3My4xNy4xNS4wNC4wMCNNZWFzdXJpbmcgb3IgdGVzdGluZyBpbnN0cnVtZW50cyBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNy4xNS4wMC4wMAotdW5zcHNjNyM3My4xNy4xNS4wNS4wMCNSYWRpbyBvciB0ZWxldmlzaW9uIG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE3LjE1LjAwLjAwCi11bnNwc2M3IzczLjE3LjE1LjA2LjAwI0NvbW11bmljYXRpb24gZXF1aXBtZW50IG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE3LjE1LjAwLjAwCi11bnNwc2M3IzczLjE3LjE1LjA3LjAwI0VsZWN0cmljYWwgaG91c2Vob2xkIGFwcGxpYW5jZXMgbWFudWZhY3R1cmUgc2VydmljZXMjNzMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTcuMTUuMDguMDAjSW5zdWxhdGVkIHdpcmUgb3IgY2FibGUgbWFudWZhY3R1cmUgc2VydmljZXMjNzMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTcuMTUuMDkuMDAjRWxlY3RyaWNhbCBhY2Nlc3NvcmllcyBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNy4xNS4wMC4wMAotdW5zcHNjNyM3My4xNy4xNS4xMC4wMCNFbGVjdHJpY2FsIGFjY2Vzc29yaWVzIG9yIHN1cHBsaWVzIG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE3LjE1LjAwLjAwCi11bnNwc2M3IzczLjE3LjE1LjExLjAwI0VsZWN0cm9uaWMgZXF1aXBtZW50IG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE3LjE1LjAwLjAwCi11bnNwc2M3IzczLjE3LjE1LjEyLjAwI0VsZWN0cm9uaWMgY29tcHV0ZXJzIG9yIGRhdGEgcHJvY2Vzc2luZyBlcXVpcG1lbnQgbWFudWZhY3R1cmUgc2VydmljZXMjNzMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjNzMuMTcuMTYuMDAuMDAjTWFudWZhY3R1cmUgb2YgcHJlY2lzaW9uIGluc3RydW1lbnRzIzczLjE3LjAwLjAwLjAwCi11bnNwc2M3IzczLjE3LjE2LjAxLjAwI1NjaWVudGlmaWMgaW5zdHJ1bWVudHMgb3IgbWVhc3VyaW5nIGVxdWlwbWVudCBtYW51ZmFjdHVyZSBzZXJ2aWNlcyM3My4xNy4xNi4wMC4wMAotdW5zcHNjNyM3My4xNy4xNi4wMi4wMCNNZWRpY2FsIG9yIGRlbnRhbCBlcXVpcG1lbnQgbWFudWZhY3R1cmUgc2VydmljZXMjNzMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjNzMuMTcuMTYuMDMuMDAjUGhvdG9ncmFwaGljIG9yIG9wdGljYWwgZXF1aXBtZW50IG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE3LjE2LjAwLjAwCi11bnNwc2M3IzczLjE3LjE2LjA0LjAwI1dhdGNoZXMgb3IgY2xvY2tzIG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE3LjE2LjAwLjAwCi11bnNwc2M3IzczLjE3LjE2LjA1LjAwI0xhYm9yYXRvcnkgZXF1aXBtZW50IG1hbnVmYWN0dXJlIHNlcnZpY2VzIzczLjE3LjE2LjAwLjAwCi11bnNwc2M3IzczLjE4LjAwLjAwLjAwI01hY2hpbmluZyBhbmQgcHJvY2Vzc2luZyBzZXJ2aWNlcyM3My4wMC4wMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xMC4wMC4wMCNNYWNoaW5pbmcgc2VydmljZXMjNzMuMTguMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTAuMDEuMDAjVHVybmluZyBzZXJ2aWNlcyM3My4xOC4xMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xMC4wMi4wMCNFbGVjdHJvIGRpc2NoYXJnZSBtYWNoaW5pbmcgKEVETSkgc2VydmljZXMjNzMuMTguMTAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTAuMDMuMDAjRWxlY3RybyBjaGVtaWNhbCBtYWNoaW5pbmcgKEVDTSkgc2VydmljZXMjNzMuMTguMTAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTAuMDQuMDAjQ2hlbSBtaWxsaW5nIHNlcnZpY2VzIzczLjE4LjEwLjAwLjAwCi11bnNwc2M3IzczLjE4LjEwLjA1LjAwI1B1bmNoaW5nIHNlcnZpY2VzIzczLjE4LjEwLjAwLjAwCi11bnNwc2M3IzczLjE4LjEwLjA2LjAwI1N0YW1waW5nIHNlcnZpY2VzIzczLjE4LjEwLjAwLjAwCi11bnNwc2M3IzczLjE4LjEwLjA3LjAwI0JvcmluZyBzZXJ2aWNlcyM3My4xOC4xMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xMC4wOC4wMCNEcmlsbGluZyBzZXJ2aWNlcyM3My4xOC4xMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xMC4wOS4wMCNUYXBwaW5nIHNlcnZpY2VzIzczLjE4LjEwLjAwLjAwCi11bnNwc2M3IzczLjE4LjEwLjEwLjAwI0xhc2VyIHNlcnZpY2VzIzczLjE4LjEwLjAwLjAwCi11bnNwc2M3IzczLjE4LjEwLjExLjAwI0JlbmRpbmcgc2VydmljZXMjNzMuMTguMTAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTAuMTIuMDAjR3JpbmRpbmcgc2VydmljZXMjNzMuMTguMTAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTAuMTMuMDAjU2hvdCBibGFzdGluZyBzZXJ2aWNlcyM3My4xOC4xMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xMC4xNC4wMCNQb2xpc2hpbmcgc2VydmljZXMjNzMuMTguMTAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTAuMTUuMDAjRmxhbWUgY3V0dGluZyBzZXJ2aWNlcyM3My4xOC4xMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xMC4xNi4wMCNMYXNlciBjdXR0aW5nIHNlcnZpY2VzIzczLjE4LjEwLjAwLjAwCi11bnNwc2M3IzczLjE4LjEwLjE3LjAwI1BsYXNtYSBjdXR0aW5nIHNlcnZpY2VzIzczLjE4LjEwLjAwLjAwCi11bnNwc2M3IzczLjE4LjEwLjE4LjAwI1dhdGVyIGpldCBjdXR0aW5nIHNlcnZpY2VzIzczLjE4LjEwLjAwLjAwCi11bnNwc2M3IzczLjE4LjEwLjE5LjAwI1JvbGxpbmcgU2VydmljZXMjNzMuMTguMTAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTAuMjAuMDAjU3VyZmFjZSB0cmVhdG1lbnQgc2VydmljZXMjNzMuMTguMTAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTAuMjEuMDAjTWlsbGluZyBzZXJ2aWNlcyM3My4xOC4xMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xMC4yMi4wMCNTcHJheWluZyBzZXJ2aWNlcyM3My4xOC4xMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xMC4yMy4wMCNTaGFycGVuaW5nIHNlcnZpY2UjNzMuMTguMTAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTEuMDAuMDAjQ29hdGluZyBzZXJ2aWNlcyM3My4xOC4wMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xMS4wMS4wMCNFbGVjdHJvIGNvYXRpbmcgc2VydmljZXMjNzMuMTguMTEuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTEuMDIuMDAjRGlwcGluZyBzZXJ2aWNlcyM3My4xOC4xMS4wMC4wMAotdW5zcHNjNyM3My4xOC4xMS4wMy4wMCNXcmFwcGluZyBzZXJ2aWNlcyM3My4xOC4xMS4wMC4wMAotdW5zcHNjNyM3My4xOC4xMS4wNC4wMCNQYWludGluZyBzZXJ2aWNlcyM3My4xOC4xMS4wMC4wMAotdW5zcHNjNyM3My4xOC4xMS4wNS4wMCNXZWIgY29hdGluZyBzZXJ2aWNlcyM3My4xOC4xMS4wMC4wMAotdW5zcHNjNyM3My4xOC4xMS4wNi4wMCNQbGF0aW5nIHNlcnZpY2VzIzczLjE4LjExLjAwLjAwCi11bnNwc2M3IzczLjE4LjEyLjAwLjAwI0Zvcm1pbmcgc2VydmljZXMjNzMuMTguMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTIuMDEuMDAjRHJhdyBmb3JtaW5nIHNlcnZpY2VzIzczLjE4LjEyLjAwLjAwCi11bnNwc2M3IzczLjE4LjEyLjAyLjAwI0h5ZHJvIGZvcm1pbmcgc2VydmljZXMjNzMuMTguMTIuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTIuMDMuMDAjUm9sbCBmb3JtaW5nIHNlcnZpY2VzIzczLjE4LjEyLjAwLjAwCi11bnNwc2M3IzczLjE4LjEyLjA0LjAwI1N0cmV0Y2ggZm9ybWluZyBzZXJ2aWNlcyM3My4xOC4xMi4wMC4wMAotdW5zcHNjNyM3My4xOC4xMi4wNS4wMCNTcGluIGZvcm1pbmcgc2VydmljZXMjNzMuMTguMTIuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTIuMDYuMDAjRXhwbG9zaXZlIGZvcm1pbmcgc2VydmljZXMjNzMuMTguMTIuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTMuMDAuMDAjSGVhdCB0cmVhdG1lbnQgc2VydmljZXMjNzMuMTguMDAuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTMuMDEuMDAjUXVlbmNoIGFuZCB0ZW1wZXIgc2VydmljZXMjNzMuMTguMTMuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTMuMDIuMDAjQW5uZWFsaW5nIHNlcnZpY2VzIzczLjE4LjEzLjAwLjAwCi11bnNwc2M3IzczLjE4LjEzLjAzLjAwI05vcm1hbGl6aW5nIHNlcnZpY2VzIzczLjE4LjEzLjAwLjAwCi11bnNwc2M3IzczLjE4LjEzLjA0LjAwI0FnaW5nIG9yIHN0YWJpbGl6aW5nIHNlcnZpY2VzIzczLjE4LjEzLjAwLjAwCi11bnNwc2M3IzczLjE4LjE5LjAwLjAwI1dlbGRpbmcgYW5kIGJyYXppbmcgYW5kIHNvbGRlcmluZyBzZXJ2aWNlcyM3My4xOC4wMC4wMC4wMAotdW5zcHNjNyM3My4xOC4xOS4wMS4wMCNBcmMgd2VsZGluZyBzZXJ2aWNlcyM3My4xOC4xOS4wMC4wMAotdW5zcHNjNyM3My4xOC4xOS4wMi4wMCNNZXRhbCBpbmVydCBnYXMgKE1JRykgd2VsZGluZyBzZXJ2aWNlcyM3My4xOC4xOS4wMC4wMAotdW5zcHNjNyM3My4xOC4xOS4wMy4wMCNUdW5nc3RlbiBpbmVydCBnYXMgKFRJRykgd2VsZGluZyBzZXJ2aWNlcyM3My4xOC4xOS4wMC4wMAotdW5zcHNjNyM3My4xOC4xOS4wNC4wMCNMYXNlciB3ZWxkaW5nIHNlcnZpY2VzIzczLjE4LjE5LjAwLjAwCi11bnNwc2M3IzczLjE4LjE5LjA1LjAwI1Nwb3Qgd2VsZGluZyBzZXJ2aWNlcyM3My4xOC4xOS4wMC4wMAotdW5zcHNjNyM3My4xOC4xOS4wNi4wMCNQcm9qZWN0aW9uIHdlbGRpbmcgc2VydmljZXMjNzMuMTguMTkuMDAuMDAKLXVuc3BzYzcjNzMuMTguMTkuMDcuMDAjQnJhemluZyBzZXJ2aWNlcyM3My4xOC4xOS4wMC4wMAotdW5zcHNjNyM3My4xOC4xOS4wOC4wMCNTb2xkZXJpbmcgc2VydmljZXMjNzMuMTguMTkuMDAuMDAKLXVuc3BzYzcjNzYuMDAuMDAuMDAuMDAjSW5kdXN0cmlhbCBDbGVhbmluZyBTZXJ2aWNlcyM3Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM3Ni4xMC4wMC4wMC4wMCNEZWNvbnRhbWluYXRpb24gc2VydmljZXMjNzYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzYuMTAuMTUuMDAuMDAjRGlzaW5mZWN0aW9uIzc2LjEwLjAwLjAwLjAwCi11bnNwc2M3Izc2LjEwLjE1LjAxLjAwI1dhc2hyb29tIHNhbml0YXRpb24gc2VydmljZXMjNzYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzYuMTAuMTUuMDIuMDAjUmVzdCByb29tIGNsZWFuaW5nIHNlcnZpY2VzIzc2LjEwLjE1LjAwLjAwCi11bnNwc2M3Izc2LjEwLjE1LjAzLjAwI0Rpc2luZmVjdGlvbiBvciBkZW9kb3JpemluZyBzZXJ2aWNlcyM3Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM3Ni4xMC4xNi4wMC4wMCNIYXphcmRvdXMgbWF0ZXJpYWwgZGVjb250YW1pbmF0aW9uIzc2LjEwLjAwLjAwLjAwCi11bnNwc2M3Izc2LjEwLjE2LjAxLjAwI1JhZGlvYWN0aXZlIGRlY29udGFtaW5hdGlvbiBzZXJ2aWNlcyM3Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM3Ni4xMC4xNi4wMi4wMCNBc2Jlc3RvcyBkZWNvbnRhbWluYXRpb24gb3IgcmVtb3ZhbCM3Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM3Ni4xMS4wMC4wMC4wMCNDbGVhbmluZyBhbmQgamFuaXRvcmlhbCBzZXJ2aWNlcyM3Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM3Ni4xMS4xNS4wMC4wMCNHZW5lcmFsIGJ1aWxkaW5nIGFuZCBvZmZpY2UgY2xlYW5pbmcgc2VydmljZXMjNzYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzYuMTEuMTUuMDEuMDAjQnVpbGRpbmcgY2xlYW5pbmcgc2VydmljZXMjNzYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzYuMTEuMTUuMDIuMDAjQnVpbGRpbmcgbWFpbnRlbmFuY2Ugb3IgcmVwYWlyIHNlcnZpY2VzIzc2LjExLjE1LjAwLjAwCi11bnNwc2M3Izc2LjExLjE1LjAzLjAwI0xpZ2h0aW5nIG1haW50ZW5hbmNlIHNlcnZpY2VzIzc2LjExLjE1LjAwLjAwCi11bnNwc2M3Izc2LjExLjE1LjA0LjAwI1dpbmRvdyBvciB3aW5kb3cgYmxpbmQgY2xlYW5pbmcgc2VydmljZXMjNzYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzYuMTEuMTYuMDAuMDAjQnVpbGRpbmcgY29tcG9uZW50IGNsZWFuaW5nIHNlcnZpY2VzIzc2LjExLjAwLjAwLjAwCi11bnNwc2M3Izc2LjExLjE2LjAxLjAwI0Fjb3VzdGljYWwgdGlsZSBvciBjZWlsaW5nIGNsZWFuaW5nIHNlcnZpY2VzIzc2LjExLjE2LjAwLjAwCi11bnNwc2M3Izc2LjExLjE2LjAyLjAwI0FpciBkdWN0IGNsZWFuaW5nIzc2LjExLjE2LjAwLjAwCi11bnNwc2M3Izc2LjExLjE2LjAzLjAwI0NoaW1uZXkgY2xlYW5pbmcjNzYuMTEuMTYuMDAuMDAKLXVuc3BzYzcjNzYuMTEuMTYuMDQuMDAjRmxvb3Igd2F4aW5nIG9yIGNhcnBldCBjbGVhbmluZyM3Ni4xMS4xNi4wMC4wMAotdW5zcHNjNyM3Ni4xMS4xNi4wNS4wMCNFeGhhdXN0IGhvb2Qgb3IgZmFuIGNsZWFyaW5nIzc2LjExLjE2LjAwLjAwCi11bnNwc2M3Izc2LjExLjE3LjAwLjAwI0J1aWxkaW5nIHNpdGUgY2xlYW4gdXAjNzYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzYuMTEuMTcuMDEuMDAjQ29uc3RydWN0aW9uIHNpdGUgY2xlYW4gdXAgc2VydmljZXMjNzYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzYuMTEuMTcuMDIuMDAjQ29uc3RydWN0aW9uIHNpdGUgaGF1bCBhd2F5IHNlcnZpY2VzIzc2LjExLjE3LjAwLjAwCi11bnNwc2M3Izc2LjEyLjAwLjAwLjAwI1JlZnVzZSBkaXNwb3NhbCBhbmQgdHJlYXRtZW50Izc2LjAwLjAwLjAwLjAwCi11bnNwc2M3Izc2LjEyLjE1LjAwLjAwI1JlZnVzZSBjb2xsZWN0aW9uIGFuZCBkaXNwb3NhbCM3Ni4xMi4wMC4wMC4wMAotdW5zcHNjNyM3Ni4xMi4xNS4wMS4wMCNHYXJiYWdlIGNvbGxlY3Rpb24gb3IgZGVzdHJ1Y3Rpb24gb3IgcHJvY2Vzc2luZyBvciBkaXNwb3NhbCM3Ni4xMi4xNS4wMC4wMAotdW5zcHNjNyM3Ni4xMi4xNS4wMi4wMCNMaXF1aWQgd2FzdGUgY29sbGVjdGlvbiBvciBwcm9jZXNzaW5nIG9yIGRpc3Bvc2FsIzc2LjEyLjE1LjAwLjAwCi11bnNwc2M3Izc2LjEyLjE1LjAzLjAwI1N0cmVldCBjbGVhbmluZyBzZXJ2aWNlcyM3Ni4xMi4xNS4wMC4wMAotdW5zcHNjNyM3Ni4xMi4xNi4wMC4wMCNOb25oYXphcmRvdXMgd2FzdGUgZGlzcG9zYWwjNzYuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzYuMTIuMTYuMDEuMDAjR2FyYmFnZSBkdW1wIzc2LjEyLjE2LjAwLjAwCi11bnNwc2M3Izc2LjEyLjE2LjAyLjAwI1Nhbml0YXJ5IGxhbmRmaWxsIG9wZXJhdGlvbnMjNzYuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzYuMTIuMTYuMDMuMDAjU2x1ZGdlIGRpc3Bvc2FsIzc2LjEyLjE2LjAwLjAwCi11bnNwc2M3Izc2LjEyLjE2LjA0LjAwI0RlYWQgYW5pbWFsIGRpc3Bvc2FsIHNlcnZpY2VzIzc2LjEyLjE2LjAwLjAwCi11bnNwc2M3Izc2LjEyLjE3LjAwLjAwI0xpcXVpZCB3YXN0ZSB0cmVhdG1lbnQjNzYuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzYuMTIuMTcuMDEuMDAjU2V3YWdlIHRyZWF0bWVudCBzZXJ2aWNlcyM3Ni4xMi4xNy4wMC4wMAotdW5zcHNjNyM3Ni4xMi4xNy4wMi4wMCNDaGVtaWNhbCB0cmVhdG1lbnQgc2VydmljZXMjNzYuMTIuMTcuMDAuMDAKLXVuc3BzYzcjNzYuMTIuMTguMDAuMDAjUmVmdXNlIHRyZWF0bWVudCM3Ni4xMi4wMC4wMC4wMAotdW5zcHNjNyM3Ni4xMi4xOC4wMS4wMCNSZWN5Y2xpbmcgc2VydmljZXMjNzYuMTIuMTguMDAuMDAKLXVuc3BzYzcjNzYuMTIuMTkuMDAuMDAjSGF6YXJkb3VzIHdhc3RlIGRpc3Bvc2FsIzc2LjEyLjAwLjAwLjAwCi11bnNwc2M3Izc2LjEyLjE5LjAxLjAwI01lZGljYWwgd2FzdGUgZGlzcG9zYWwjNzYuMTIuMTkuMDAuMDAKLXVuc3BzYzcjNzYuMTIuMTkuMDIuMDAjQWNpZCB3YXN0ZSBjb2xsZWN0aW9uIG9yIGRpc3Bvc2FsIzc2LjEyLjE5LjAwLjAwCi11bnNwc2M3Izc2LjEyLjE5LjAzLjAwI0NoZW1pY2FsIGRldG94aWZpY2F0aW9uIzc2LjEyLjE5LjAwLjAwCi11bnNwc2M3Izc2LjEzLjAwLjAwLjAwI1RveGljIGFuZCBoYXphcmRvdXMgd2FzdGUgY2xlYW51cCM3Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM3Ni4xMy4xNS4wMC4wMCNOdWNsZWFyIHdhc3RlIHRyZWF0bWVudCM3Ni4xMy4wMC4wMC4wMAotdW5zcHNjNyM3Ni4xMy4xNS4wMS4wMCNSYWRpb2FjdGl2ZSB3YXN0ZSBtYXRlcmlhbCB0cmVhdG1lbnQjNzYuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzYuMTMuMTUuMDIuMDAjUmFkaW9hY3RpdmUgY29udGFpbm1lbnQgc2VydmljZXMjNzYuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzYuMTMuMTYuMDAuMDAjVG94aWMgc3BpbGwgY2xlYW51cCM3Ni4xMy4wMC4wMC4wMAotdW5zcHNjNyM3Ni4xMy4xNi4wMS4wMCNUb3hpYyBzcGlsbCBjb250YWlubWVudCM3Ni4xMy4xNi4wMC4wMAotdW5zcHNjNyM3Ni4xMy4xNi4wMi4wMCNUb3hpYyBzdWJzdGFuY2VzIHNwaWxsIGNsZWFudXAjNzYuMTMuMTYuMDAuMDAKLXVuc3BzYzcjNzYuMTMuMTcuMDAuMDAjT2lsIHNwaWxsIGNsZWFudXAjNzYuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNzYuMTMuMTcuMDEuMDAjT2lsIHJlc2lkdWUgZGlzcG9zYWwgb3IgY29udHJvbCBzZXJ2aWNlcyM3Ni4xMy4xNy4wMC4wMAotdW5zcHNjNyM3Ni4xMy4xNy4wMi4wMCNPaWwgc3BpbGwgdHJlYXRtZW50IHNlcnZpY2VzIzc2LjEzLjE3LjAwLjAwCi11bnNwc2M3Izc3LjAwLjAwLjAwLjAwI0Vudmlyb25tZW50YWwgU2VydmljZXMjNzcuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMDAuMDAuMDAjRW52aXJvbm1lbnRhbCBtYW5hZ2VtZW50Izc3LjAwLjAwLjAwLjAwCi11bnNwc2M3Izc3LjEwLjE1LjAwLjAwI0Vudmlyb25tZW50YWwgaW1wYWN0IGFzc2Vzc21lbnQjNzcuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTUuMDEuMDAjUmlzayBvciBoYXphcmQgYXNzZXNzbWVudCM3Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xNS4wMi4wMCNFbnZpcm9ubWVudGFsIHN0YW5kYXJkcyM3Ny4xMC4xNS4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xNS4wMy4wMCNFbnZpcm9ubWVudGFsIGluZGljYXRvcnMgYW5hbHlzaXMjNzcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTUuMDQuMDAjRW52aXJvbm1lbnRhbCBpbXBhY3QgYXNzZXNzbWVudCAgKEVJQSkgc2VydmljZXMjNzcuMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTUuMDUuMDAjRW52aXJvbm1lbnRhbCBtb25pdG9yaW5nIzc3LjEwLjE1LjAwLjAwCi11bnNwc2M3Izc3LjEwLjE2LjAwLjAwI0Vudmlyb25tZW50YWwgcGxhbm5pbmcjNzcuMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTYuMDEuMDAjVXJiYW4gZW52aXJvbm1lbnRhbCBkZXZlbG9wbWVudCBwbGFubmluZyM3Ny4xMC4xNi4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xNi4wMi4wMCNGb3Jlc3QgY29uc2VydmF0aW9uIHN0cmF0ZWd5IHBsYW5uaW5nIzc3LjEwLjE2LjAwLjAwCi11bnNwc2M3Izc3LjEwLjE2LjAzLjAwI01hcmluZSBjb25zZXJ2YXRpb24gc3RyYXRlZ3kgcGxhbm5pbmcjNzcuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTYuMDQuMDAjTmF0dXJhbCByZXNvdXJjZXMgbWFuYWdlbWVudCBvciBjb25zZXJ2YXRpb24gc3RyYXRlZ3kgcGxhbm5pbmcgc2VydmljZXMjNzcuMTAuMTYuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTYuMDUuMDAjRW52aXJvbm1lbnRhbCBpbnN0aXR1dGlvbiBidWlsZGluZyBvciBwbGFubmluZyM3Ny4xMC4xNi4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xNy4wMC4wMCNFbnZpcm9ubWVudGFsIGFkdmlzb3J5IHNlcnZpY2VzIzc3LjEwLjAwLjAwLjAwCi11bnNwc2M3Izc3LjEwLjE3LjAxLjAwI0Vudmlyb25tZW50YWwgc2NpZW5jZXMgYWR2aXNvcnkgc2VydmljZXMjNzcuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTcuMDIuMDAjRW52aXJvbm1lbnRhbCBjaGVtaXN0cnkgYWR2aXNvcnkgc2VydmljZXMjNzcuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTcuMDMuMDAjRW52aXJvbm1lbnRhbCBldGhpY3MgYWR2aXNvcnkgc2VydmljZXMjNzcuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTcuMDQuMDAjRW52aXJvbm1lbnRhbCB0ZWNobm9sb2d5IGFkdmlzb3J5IHNlcnZpY2VzIzc3LjEwLjE3LjAwLjAwCi11bnNwc2M3Izc3LjEwLjE3LjA1LjAwI0Vudmlyb25tZW50YWwgZWNvbm9taWNzIGFkdmlzb3J5IHNlcnZpY2VzIzc3LjEwLjE3LjAwLjAwCi11bnNwc2M3Izc3LjEwLjE3LjA2LjAwI0Vudmlyb25tZW50YWwgbGF3IGFkdmlzb3J5IHNlcnZpY2VzIzc3LjEwLjE3LjAwLjAwCi11bnNwc2M3Izc3LjEwLjE3LjA3LjAwI0Vjb2xvZ3kgYWR2aXNvcnkgc2VydmljZXMjNzcuMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTguMDAuMDAjRW52aXJvbm1lbnRhbCBhdWRpdGluZyM3Ny4xMC4wMC4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOC4wMS4wMCNFbnZpcm9ubWVudGFsIGluZm9ybWF0aW9uIHN5c3RlbXMjNzcuMTAuMTguMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTguMDIuMDAjQ29ycG9yYXRlIGVudmlyb25tZW50YWwgYXVkaXRpbmcgc2VydmljZXMjNzcuMTAuMTguMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTguMDMuMDAjU2VjdG9yYWwgZW52aXJvbm1lbnRhbCBhdWRpdGluZyBzZXJ2aWNlcyM3Ny4xMC4xOC4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOC4wNC4wMCNBY3Rpdml0eSBzcGVjaWZpYyBlbnZpcm9ubWVudGFsIGF1ZGl0aW5nIHNlcnZpY2VzIzc3LjEwLjE4LjAwLjAwCi11bnNwc2M3Izc3LjEwLjE4LjA1LjAwI0Vudmlyb25tZW50YWwgcXVhbGl0eSBjb250cm9sIHNlcnZpY2VzIzc3LjEwLjE4LjAwLjAwCi11bnNwc2M3Izc3LjEwLjE4LjA2LjAwI0Vudmlyb25tZW50YWwgc2VjdXJpdHkgY29udHJvbCBzZXJ2aWNlcyM3Ny4xMC4xOC4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOS4wMC4wMCNQb2xsdXRpb24gaW52ZXN0aWdhdGlvbiBzZXJ2aWNlcyM3Ny4xMC4wMC4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOS4wMS4wMCNJbmR1c3RyaWFsIHNpdGUgaW52ZXN0aWdhdGlvbiM3Ny4xMC4xOS4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOS4wMi4wMCNJbmR1c3RyaWFsIHdhc3RlIHNpdGUgaW52ZXN0aWdhdGlvbiM3Ny4xMC4xOS4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOS4wMy4wMCNHYXN3b3JrcyBzaXRlIGludmVzdGlnYXRpb24jNzcuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTkuMDQuMDAjQ2hlbWljYWwgd29ya3Mgb3Igb2lsIHJlZmluZXJ5IHdhc3RlIHNpdGUgaW52ZXN0aWdhdGlvbiM3Ny4xMC4xOS4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOS4wNS4wMCNXb29kIHRyZWF0bWVudCBwbGFudCBzaXRlIGludmVzdGlnYXRpb24jNzcuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNzcuMTAuMTkuMDYuMDAjT2lsIGRlcG90IG9yIHRlcm1pbmFsIHNpdGUgaW52ZXN0aWdhdGlvbiM3Ny4xMC4xOS4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOS4wNy4wMCNEcnkgY2xlYW5pbmcgcGxhbnRzIHNpdGUgaW52ZXN0aWdhdGlvbiM3Ny4xMC4xOS4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOS4wOC4wMCNGb3VuZHJ5IHNpdGUgaW52ZXN0aWdhdGlvbiM3Ny4xMC4xOS4wMC4wMAotdW5zcHNjNyM3Ny4xMC4xOS4wOS4wMCNSZWN5Y2xpbmcgcGxhbnQgc2l0ZSBpbnZlc3RpZ2F0aW9uIzc3LjEwLjE5LjAwLjAwCi11bnNwc2M3Izc3LjEwLjE5LjEwLjAwI0Zvb2QgcHJvY2Vzc2luZyBwbGFudCBzaXRlIGludmVzdGlnYXRpb24jNzcuMTAuMTkuMDAuMDAKLXVuc3BzYzcjNzcuMTEuMDAuMDAuMDAjRW52aXJvbm1lbnRhbCBwcm90ZWN0aW9uIzc3LjAwLjAwLjAwLjAwCi11bnNwc2M3Izc3LjExLjE1LjAwLjAwI0Vudmlyb25tZW50YWwgc2FmZXR5IHNlcnZpY2VzIzc3LjExLjAwLjAwLjAwCi11bnNwc2M3Izc3LjExLjE1LjAxLjAwI0xhbmRzY2FwZSBwcm90ZWN0aW9uIHNlcnZpY2VzIzc3LjExLjE1LjAwLjAwCi11bnNwc2M3Izc3LjExLjE1LjAyLjAwI096b25lIHByb3RlY3Rpb24gc2VydmljZXMjNzcuMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzcuMTEuMTUuMDMuMDAjRm9vZCBvciBmZWVkIGNvbnRhbWluYXRpb24gcHJvdGVjdGlvbiBzZXJ2aWNlcyM3Ny4xMS4xNS4wMC4wMAotdW5zcHNjNyM3Ny4xMS4xNS4wNC4wMCNHZW5ldGljIHJlc291cmNlcyBwcm90ZWN0aW9uIHNlcnZpY2VzIzc3LjExLjE1LjAwLjAwCi11bnNwc2M3Izc3LjExLjE1LjA1LjAwI1RveGljIHN1YnN0YW5jZXMgcHJvdGVjdGlvbiBzZXJ2aWNlcyM3Ny4xMS4xNS4wMC4wMAotdW5zcHNjNyM3Ny4xMS4xNS4wNi4wMCNSYWRpYXRpb24gcHJvdGVjdGlvbiBzZXJ2aWNlcyM3Ny4xMS4xNS4wMC4wMAotdW5zcHNjNyM3Ny4xMS4xNS4wNy4wMCNFbmRhbmdlcmVkIHNwZWNpZXMgcHJvdGVjdGlvbiBzZXJ2aWNlcyM3Ny4xMS4xNS4wMC4wMAotdW5zcHNjNyM3Ny4xMS4xNS4wOC4wMCNOYXR1cmFsIHJpc2tzIG9yIGhhemFyZHMgcHJvdGVjdGlvbiBzZXJ2aWNlcyM3Ny4xMS4xNS4wMC4wMAotdW5zcHNjNyM3Ny4xMS4xNi4wMC4wMCNFbnZpcm9ubWVudGFsIHJlaGFiaWxpdGF0aW9uIzc3LjExLjAwLjAwLjAwCi11bnNwc2M3Izc3LjExLjE2LjAxLjAwI0luZHVzdHJpYWwgc2l0ZSByZWhhYmlsaXRhdGlvbiM3Ny4xMS4xNi4wMC4wMAotdW5zcHNjNyM3Ny4xMS4xNi4wMi4wMCNFbnZpcm9ubWVudGFsIGRlY29udGFtaW5hdGlvbiBzZXJ2aWNlcyM3Ny4xMS4xNi4wMC4wMAotdW5zcHNjNyM3Ny4xMS4xNi4wMy4wMCNMYW5kIHJlY2xhbWF0aW9uIHNlcnZpY2VzIzc3LjExLjE2LjAwLjAwCi11bnNwc2M3Izc3LjEyLjAwLjAwLjAwI1BvbGx1dGlvbiB0cmFja2luZyBhbmQgbW9uaXRvcmluZyBhbmQgcmVoYWJpbGl0YXRpb24jNzcuMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzcuMTIuMTUuMDAuMDAjQWlyIHBvbGx1dGlvbiM3Ny4xMi4wMC4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNS4wMS4wMCNBaXIgcXVhbGl0eSBtYW5hZ2VtZW50Izc3LjEyLjE1LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE1LjAyLjAwI1RyYW5zYm91bmRhcnkgYWlyIHBvbGx1dGlvbiBtYW5hZ2VtZW50IG9yIGNvbnRyb2wgc2VydmljZXMjNzcuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzcuMTIuMTUuMDMuMDAjQWlyIHBvbGx1dGlvbiBwcm90ZWN0aW9uIHNlcnZpY2VzIzc3LjEyLjE1LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE1LjA0LjAwI0FpciBwb2xsdXRpb24gbW9uaXRvcmluZyBvciBtZWFzdXJlbWVudCBzZXJ2aWNlcyM3Ny4xMi4xNS4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNS4wNS4wMCNUb3hpYyBnYXMgZGV0ZWN0aW9uIHNlcnZpY2VzIzc3LjEyLjE1LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE1LjA2LjAwI01ldGhhbmUgbW9uaXRvcmluZyM3Ny4xMi4xNS4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNS4wNy4wMCNDYXJib24gZGlveGlkZSBtb25pdG9yaW5nIHNlcnZpY2VzIzc3LjEyLjE1LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE1LjA4LjAwI0FpcmJvcm5lIHBhcnRpY2xlIG1vbml0b3JpbmcjNzcuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzcuMTIuMTUuMDkuMDAjT3pvbmUgZGVwbGV0aW9uIG1vbml0b3Jpbmcgc2VydmljZXMjNzcuMTIuMTUuMDAuMDAKLXVuc3BzYzcjNzcuMTIuMTYuMDAuMDAjU29pbCBwb2xsdXRpb24jNzcuMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzcuMTIuMTYuMDEuMDAjU29pbCBwb2xsdXRpb24gcHJvdGVjdGlvbiBzZXJ2aWNlcyM3Ny4xMi4xNi4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNi4wMi4wMCNQb2xsdXRlZCBzb2lsIHJlbW92YWwgc2VydmljZXMjNzcuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzcuMTIuMTYuMDMuMDAjUG9sbHV0ZWQgc29pbCB0cmVhdG1lbnQgb3IgcmVoYWJpbGl0YXRpb24jNzcuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzcuMTIuMTYuMDQuMDAjU29pbCBwb2xsdXRpb24gYWR2aXNvcnkgc2VydmljZXMjNzcuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzcuMTIuMTYuMDUuMDAjU29pbCBwb2xsdXRpb24gbWFwcGluZyM3Ny4xMi4xNi4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNi4wNi4wMCNTb2lsIHBvbGx1dGlvbiBtZWFzdXJlbWVudCBvciBtb25pdG9yaW5nIzc3LjEyLjE2LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE2LjA3LjAwI09yZ2FuaWMgZmVydGlsaXplciBwb2xsdXRpb24gYXNzZXNzbWVudCM3Ny4xMi4xNi4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNi4wOC4wMCNQZXN0aWNpZGVzIHBvbGx1dGlvbiBhc3Nlc3NtZW50Izc3LjEyLjE2LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE2LjA5LjAwI05pdHJhdGVzIHBvbGx1dGlvbiBhc3Nlc3NtZW50Izc3LjEyLjE2LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE2LjEwLjAwI1Bob3NwaGF0ZXMgcG9sbHV0aW9uIGFzc2Vzc21lbnQjNzcuMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzcuMTIuMTcuMDAuMDAjV2F0ZXIgcG9sbHV0aW9uIzc3LjEyLjAwLjAwLjAwCi11bnNwc2M3Izc3LjEyLjE3LjAxLjAwI1N1cmZhY2Ugd2F0ZXIgcG9sbHV0aW9uIG1vbml0b3Jpbmcgb3IgY29udHJvbCBzZXJ2aWNlcyM3Ny4xMi4xNy4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNy4wMi4wMCNTdXJmYWNlIHdhdGVyIHBvbGx1dGlvbiByZWhhYmlsaXRhdGlvbiBzZXJ2aWNlcyM3Ny4xMi4xNy4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNy4wMy4wMCNTdXJmYWNlIHdhdGVyIHBvbGx1dGlvbiBwcm90ZWN0aW9uIHNlcnZpY2VzIzc3LjEyLjE3LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE3LjA0LjAwI1N1cmZhY2Ugd2F0ZXIgdHJlYXRtZW50IHNlcnZpY2VzIzc3LjEyLjE3LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE3LjA1LjAwI1N1cmZhY2Ugd2F0ZXIgcG9sbHV0aW9uIGRyYWluYWdlIHNlcnZpY2VzIzc3LjEyLjE3LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE3LjA2LjAwI1RyYW5zYm91bmRhcnkgd2F0ZXIgcG9sbHV0aW9uIG1hbmFnZW1lbnQgb3IgY29udHJvbCBzZXJ2aWNlcyM3Ny4xMi4xNy4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNy4wNy4wMCNHcm91bmR3YXRlciBwb2xsdXRpb24gbW9uaXRvcmluZyBvciBjb250cm9sIHNlcnZpY2VzIzc3LjEyLjE3LjAwLjAwCi11bnNwc2M3Izc3LjEyLjE3LjA4LjAwI0dyb3VuZHdhdGVyIHBvbGx1dGlvbiBkcmFpbmFnZSBzZXJ2aWNlcyM3Ny4xMi4xNy4wMC4wMAotdW5zcHNjNyM3Ny4xMi4xNy4wOS4wMCNHcm91bmR3YXRlciBwb2xsdXRpb24gdHJlYXRtZW50IG9yIHJlaGFiaWxpdGF0aW9uIzc3LjEyLjE3LjAwLjAwCi11bnNwc2M3Izc3LjEzLjAwLjAwLjAwI1BvbGx1dGFudHMgdHJhY2tpbmcgYW5kIG1vbml0b3JpbmcgYW5kIHJlaGFiaWxpdGF0aW9uIHNlcnZpY2VzIzc3LjAwLjAwLjAwLjAwCi11bnNwc2M3Izc3LjEzLjE1LjAwLjAwI09pbCBwb2xsdXRpb24jNzcuMTMuMDAuMDAuMDAKLXVuc3BzYzcjNzcuMTMuMTUuMDEuMDAjT2lsIHNwaWxsYWdlIG1vbml0b3Jpbmcgc2VydmljZXMjNzcuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzcuMTMuMTUuMDIuMDAjT2lsIHNwaWxsYWdlIGNvbnRyb2wgc2VydmljZXMjNzcuMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzcuMTMuMTUuMDMuMDAjT2lsIHNwaWxsYWdlIHJlaGFiaWxpdGF0aW9uIHNlcnZpY2VzIzc3LjEzLjE1LjAwLjAwCi11bnNwc2M3Izc3LjEzLjE2LjAwLjAwI05vaXNlIHBvbGx1dGlvbiM3Ny4xMy4wMC4wMC4wMAotdW5zcHNjNyM3Ny4xMy4xNi4wMS4wMCNOb2lzZSBjb250cm9sIHNlcnZpY2VzIzc3LjEzLjE2LjAwLjAwCi11bnNwc2M3Izc3LjEzLjE2LjAyLjAwI05vaXNlIHBvbGx1dGlvbiBwcm90ZWN0aW9uIHNlcnZpY2VzIzc3LjEzLjE2LjAwLjAwCi11bnNwc2M3Izc3LjEzLjE2LjAzLjAwI05vaXNlIHBvbGx1dGlvbiBtb25pdG9yaW5nIHNlcnZpY2VzIzc3LjEzLjE2LjAwLjAwCi11bnNwc2M3Izc3LjEzLjE2LjA0LjAwI05vaXNlIHBvbGx1dGlvbiBhZHZpc29yeSBzZXJ2aWNlcyM3Ny4xMy4xNi4wMC4wMAotdW5zcHNjNyM3Ny4xMy4xNy4wMC4wMCNUb3hpYyBzdWJzdGFuY2VzIHBvbGx1dGlvbiM3Ny4xMy4wMC4wMC4wMAotdW5zcHNjNyM3Ny4xMy4xNy4wMS4wMCNUb3hpYyBzdWJzdGFuY2VzIG1vbml0b3Jpbmcgc2VydmljZXMjNzcuMTMuMTcuMDAuMDAKLXVuc3BzYzcjNzcuMTMuMTcuMDIuMDAjVG94aWMgc3Vic3RhbmNlcyByZWhhYmlsaXRhdGlvbiBzZXJ2aWNlcyM3Ny4xMy4xNy4wMC4wMAotdW5zcHNjNyM3OC4wMC4wMC4wMC4wMCNUcmFuc3BvcnRhdGlvbiBhbmQgU3RvcmFnZSBhbmQgTWFpbCBTZXJ2aWNlcyM3OC4wMC4wMC4wMC4wMAotdW5zcHNjNyM3OC4xMC4wMC4wMC4wMCNNYWlsIGFuZCBjYXJnbyB0cmFuc3BvcnQjNzguMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTAuMTUuMDAuMDAjQWlyIGNhcmdvIHRyYW5zcG9ydCM3OC4xMC4wMC4wMC4wMAotdW5zcHNjNyM3OC4xMC4xNS4wMS4wMCNEb21lc3RpYyBhaXIgY2FyZ28gdHJhbnBvc3J0Izc4LjEwLjE1LjAwLjAwCi11bnNwc2M3Izc4LjEwLjE1LjAyLjAwI0ludGVybmF0aW9uYWwgYWlyIGNhcmdvIHRyYW5zcG9ydCM3OC4xMC4xNS4wMC4wMAotdW5zcHNjNyM3OC4xMC4xNS4wMy4wMCNBcm1vcmVkIGFpciB0cmFuc3BvcnQjNzguMTAuMTUuMDAuMDAKLXVuc3BzYzcjNzguMTAuMTYuMDAuMDAjUmFpbCBjYXJnbyB0cmFuc3BvcnQjNzguMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTAuMTYuMDEuMDAjQm94Y2FyIHRyYW5zcG9ydCBzZXJ2aWNlcyM3OC4xMC4xNi4wMC4wMAotdW5zcHNjNyM3OC4xMC4xNi4wMi4wMCNCdWxrIGNhcmdvIHJhaWwgdHJhc25wb3J0IHNlcnZpY2VzIzc4LjEwLjE2LjAwLjAwCi11bnNwc2M3Izc4LjEwLjE2LjAzLjAwI0xpdmVzdG9jayByYWlsIHRyYW5zcG9ydCM3OC4xMC4xNi4wMC4wMAotdW5zcHNjNyM3OC4xMC4xNi4wNC4wMCNWZWhpY2xlIHRyYW5zcG9ydCBzZXJ2aWNlcyM3OC4xMC4xNi4wMC4wMAotdW5zcHNjNyM3OC4xMC4xNy4wMC4wMCNNYXJpbmUgY2FyZ28gdHJhbnNwb3J0Izc4LjEwLjAwLjAwLjAwCi11bnNwc2M3Izc4LjEwLjE3LjAxLjAwI0RvbWVzdGljIHZlc3NlbCB0cmFuc3BvcnQgc2VydmljZXMjNzguMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzguMTAuMTcuMDIuMDAjSW50ZXJuYXRpb25hbCB2ZXNzZWwgdHJhbnNwb3J0IHNlcnZpY2VzIzc4LjEwLjE3LjAwLjAwCi11bnNwc2M3Izc4LjEwLjE3LjAzLjAwI0RvbWVzdGljIGJhcmdlIHRyYW5zcG9ydCBzZXJ2aWNlcyM3OC4xMC4xNy4wMC4wMAotdW5zcHNjNyM3OC4xMC4xNy4wNC4wMCNJbnRlcm5hdGlvbmFsIGJhcmdlIHRyYW5zcG9ydCBzZXJ2aWNlcyM3OC4xMC4xNy4wMC4wMAotdW5zcHNjNyM3OC4xMC4xNy4wNS4wMCNBcm1vcmVkIG1hcmluZSB0cmFuc3BvcnQjNzguMTAuMTcuMDAuMDAKLXVuc3BzYzcjNzguMTAuMTguMDAuMDAjUm9hZCBjYXJnbyB0cmFuc3BvcnQjNzguMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTAuMTguMDEuMDAjTG9jYWwgYXJlYSB0cnVja2luZyBzZXJ2aWNlcyM3OC4xMC4xOC4wMC4wMAotdW5zcHNjNyM3OC4xMC4xOC4wMi4wMCNSZWdpb25hbCBvciBuYXRpb25hbCB0cnVja2luZyBzZXJ2aWNlcyM3OC4xMC4xOC4wMC4wMAotdW5zcHNjNyM3OC4xMC4xOC4wMy4wMCNWZWhpY2xlIGNhcnJpZXIgc2VydmljZXMjNzguMTAuMTguMDAuMDAKLXVuc3BzYzcjNzguMTAuMTguMDQuMDAjUmVsb2NhdGlvbiBzZXJ2aWNlcyM3OC4xMC4xOC4wMC4wMAotdW5zcHNjNyM3OC4xMC4xOS4wMC4wMCNJbnRlcm1vZGFsIGNhcmdvIHRyYW5zcG9ydCM3OC4xMC4wMC4wMC4wMAotdW5zcHNjNyM3OC4xMC4xOS4wMS4wMCNBaXIgdG8gb2NlYW4gdHJhbnNwb3J0YXRpb24jNzguMTAuMTkuMDAuMDAKLXVuc3BzYzcjNzguMTAuMTkuMDIuMDAjT2NlYW4gdG8gcmFpbCB0cmFuc3BvcnRhdGlvbiM3OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM3OC4xMC4xOS4wMy4wMCNPY2VhbiB0byB0cnVjayB0cmFuc3BvcnRhdGlvbiM3OC4xMC4xOS4wMC4wMAotdW5zcHNjNyM3OC4xMC4xOS4wNC4wMCNBaXIgdG8gdHJ1Y2sgdHJhbnNwb3J0Izc4LjEwLjE5LjAwLjAwCi11bnNwc2M3Izc4LjEwLjE5LjA1LjAwI1JhaWwgdHJ1Y2sgdHJhbnNwb3J0YXRpb24jNzguMTAuMTkuMDAuMDAKLXVuc3BzYzcjNzguMTAuMjAuMDAuMDAjU3BhY2VjcmFmdCBjYXJnbyB0cmFuc3BvcnQjNzguMTAuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTAuMjAuMDEuMDAjU2F0ZWxsaXRlIGxhdW5jaCBzZXJ2aWNlcyM3OC4xMC4yMC4wMC4wMAotdW5zcHNjNyM3OC4xMC4yMC4wMi4wMCNFeHBlcmltZW50YWwgcGF5bG9hZCBzZXJ2aWNlcyM3OC4xMC4yMC4wMC4wMAotdW5zcHNjNyM3OC4xMC4yMS4wMC4wMCNQaXBlbGluZSBzZXJ2aWNlcyM3OC4xMC4wMC4wMC4wMAotdW5zcHNjNyM3OC4xMC4yMS4wMS4wMCNQZXRyb2xldW0gcHJvZHVjdHMgdHJhbnNwb3J0Izc4LjEwLjIxLjAwLjAwCi11bnNwc2M3Izc4LjEwLjIxLjAyLjAwI1dhdGVyIHRyYW5zcG9ydCM3OC4xMC4yMS4wMC4wMAotdW5zcHNjNyM3OC4xMC4yMi4wMC4wMCNQb3N0YWwgYW5kIHNtYWxsIHBhcmNlbCBhbmQgY291cmllciBzZXJ2aWNlcyM3OC4xMC4wMC4wMC4wMAotdW5zcHNjNyM3OC4xMC4yMi4wMS4wMCNOYXRpb25hbCBwb3N0YWwgZGVsaXZlcnkgc2VydmljZXMjNzguMTAuMjIuMDAuMDAKLXVuc3BzYzcjNzguMTAuMjIuMDIuMDAjUG9zdCBvZmZpY2UgYm94IHNlcnZpY2VzIzc4LjEwLjIyLjAwLjAwCi11bnNwc2M3Izc4LjEwLjIyLjAzLjAwI01haWxpbmcgb3IgbWFpbCBwaWNrIHVwIG9yIGRlbGl2ZXJ5IHNlcnZpY2VzIzc4LjEwLjIyLjAwLjAwCi11bnNwc2M3Izc4LjEwLjIyLjA0LjAwI0xldHRlciBvciBzbWFsbCBwYXJjZWwgd29ybGR3aWRlIGRlbGl2ZXJ5IHNlcnZpY2VzIzc4LjEwLjIyLjAwLjAwCi11bnNwc2M3Izc4LjEwLjIyLjA1LjAwI0xldHRlciBvciBzbWFsbCBwYXJjZWwgbG9jYWwgZGVsaXZlcnkgc2VydmljZXMjNzguMTAuMjIuMDAuMDAKLXVuc3BzYzcjNzguMTAuMjIuMDYuMDAjQmljeWNsZSBvciBzY29vdGVyIG1lc3NlbmdlciBzZXJ2Y2llcyM3OC4xMC4yMi4wMC4wMAotdW5zcHNjNyM3OC4xMS4wMC4wMC4wMCNQYXNzZW5nZXIgdHJhbnNwb3J0Izc4LjAwLjAwLjAwLjAwCi11bnNwc2M3Izc4LjExLjE1LjAwLjAwI0FpciB0cmFuc3BvcnRhdGlvbiM3OC4xMS4wMC4wMC4wMAotdW5zcHNjNyM3OC4xMS4xNS4wMS4wMCNIZWxpY29wdGVyIHNlcnZpY2VzIzc4LjExLjE1LjAwLjAwCi11bnNwc2M3Izc4LjExLjE1LjAyLjAwI0NvbW1lcmNpYWwgYWlycGxhbmUgdHJhdmVsIzc4LjExLjE1LjAwLjAwCi11bnNwc2M3Izc4LjExLjE1LjAzLjAwI0NoYXJ0ZXJlZCBhaXJwbGFuZSB0cmF2ZWwjNzguMTEuMTUuMDAuMDAKLXVuc3BzYzcjNzguMTEuMTYuMDAuMDAjUmFpbHdheSB0cmFuc3BvcnRhdGlvbiM3OC4xMS4wMC4wMC4wMAotdW5zcHNjNyM3OC4xMS4xNi4wMS4wMCNMaWdodCByYWlsIHZlaGljbGUgdHJhbnNwb3J0IChMUlYpIHNlcnZpY2VzIzc4LjExLjE2LjAwLjAwCi11bnNwc2M3Izc4LjExLjE2LjAyLjAwI1N1YndheSB0cmFuc3BvcnQjNzguMTEuMTYuMDAuMDAKLXVuc3BzYzcjNzguMTEuMTYuMDMuMDAjQ29udGluZW50YWwgb3IgaW50ZXIgY29udGluZW50YWwgcmFpbCBzZXJ2aWNlcyM3OC4xMS4xNi4wMC4wMAotdW5zcHNjNyM3OC4xMS4xNy4wMC4wMCNNYXJpbmUgdHJhbnNwb3J0YXRpb24jNzguMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTEuMTcuMDEuMDAjV2F0ZXIgdGF4aXMjNzguMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzguMTEuMTcuMDIuMDAjT3Zlcm5pZ2h0IHNoaXAgY3J1aXNlcyM3OC4xMS4xNy4wMC4wMAotdW5zcHNjNyM3OC4xMS4xNy4wMy4wMCNTaWdodHNlZWluZyBib2F0IGV4Y3Vyc2lvbnMjNzguMTEuMTcuMDAuMDAKLXVuc3BzYzcjNzguMTEuMTguMDAuMDAjUm9hZCB0cmFuc3BvcnRhdGlvbiM3OC4xMS4wMC4wMC4wMAotdW5zcHNjNyM3OC4xMS4xOC4wMS4wMCNDYXIgcmVudGFsIHNlcnZpY2VzIzc4LjExLjE4LjAwLjAwCi11bnNwc2M3Izc4LjExLjE4LjAyLjAwI1NjaGVkdWxlZCBidXMgc2VydmljZXMjNzguMTEuMTguMDAuMDAKLXVuc3BzYzcjNzguMTEuMTguMDMuMDAjQ2hhcnRlcmVkIGJ1cyBzZXJ2aWNlcyM3OC4xMS4xOC4wMC4wMAotdW5zcHNjNyM3OC4xMS4xOC4wNC4wMCNUYXhpY2FiIHNlcnZpY2VzIzc4LjExLjE4LjAwLjAwCi11bnNwc2M3Izc4LjExLjE4LjA1LjAwI1RyYW5zcG9ydGF0aW9uIG1haW50ZW5hbmNlIzc4LjExLjE4LjAwLjAwCi11bnNwc2M3Izc4LjExLjE4LjA2LjAwI1ZlaGljbGUgcmVudGFsIG9yIGxlYXNpbmcjNzguMTEuMTguMDAuMDAKLXVuc3BzYzcjNzguMTEuMTkuMDAuMDAjU3BhY2UgdHJhbnNwb3J0YXRpb24jNzguMTEuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTEuMTkuMDEuMDAjRXhwZXJpbWVudGFsIG9yIGVkdWNhdGlvbmFsIG1pc3Npb25zIzc4LjExLjE5LjAwLjAwCi11bnNwc2M3Izc4LjEyLjAwLjAwLjAwI01hdGVyaWFsIHBhY2tpbmcgYW5kIGhhbmRsaW5nIzc4LjAwLjAwLjAwLjAwCi11bnNwc2M3Izc4LjEyLjE1LjAwLjAwI1BhY2tpbmcjNzguMTIuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTIuMTUuMDEuMDAjQ29udGFpbmVyaXphdGlvbiBvZiBnb29kcyM3OC4xMi4xNS4wMC4wMAotdW5zcHNjNyM3OC4xMi4xNS4wMi4wMCNDcmF0aW5nIHNlcnZpY2VzIzc4LjEyLjE1LjAwLjAwCi11bnNwc2M3Izc4LjEyLjE2LjAwLjAwI01hdGVyaWFsIGhhbmRsaW5nIHNlcnZpY2VzIzc4LjEyLjAwLjAwLjAwCi11bnNwc2M3Izc4LjEyLjE2LjAxLjAwI0ZyZWlnaHQgbG9hZGluZyBvciB1bmxvYWRpbmcjNzguMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzguMTIuMTYuMDIuMDAjV2VpZ2hpbmcgc2VydmljZXMjNzguMTIuMTYuMDAuMDAKLXVuc3BzYzcjNzguMTMuMDAuMDAuMDAjU3RvcmFnZSM3OC4wMC4wMC4wMC4wMAotdW5zcHNjNyM3OC4xMy4xNS4wMC4wMCNGYXJtIHByb2R1Y3RzIHdhcmVob3VzaW5nIzc4LjEzLjAwLjAwLjAwCi11bnNwc2M3Izc4LjEzLjE1LjAxLjAwI1NpbG8gc2VydmljZXMjNzguMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzguMTMuMTUuMDIuMDAjR3JhaW4gZWxldmF0b3Igc2VydmljZXMjNzguMTMuMTUuMDAuMDAKLXVuc3BzYzcjNzguMTMuMTYuMDAuMDAjR2VuZXJhbCBnb29kcyBzdG9yYWdlIzc4LjEzLjAwLjAwLjAwCi11bnNwc2M3Izc4LjEzLjE2LjAxLjAwI1BhbGxldGl6ZWQgY2FyZ28gc3RvcmFnZSM3OC4xMy4xNi4wMC4wMAotdW5zcHNjNyM3OC4xMy4xNi4wMi4wMCNGaWxlIGFyY2hpdmUgc3RvcmFnZSM3OC4xMy4xNi4wMC4wMAotdW5zcHNjNyM3OC4xMy4xNy4wMC4wMCNCdWxrIHN0b3JhZ2UjNzguMTMuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTMuMTcuMDEuMDAjSW4gZ3JvdW5kIHN0b3JhZ2Ugc2VydmljZXMjNzguMTMuMTcuMDAuMDAKLXVuc3BzYzcjNzguMTMuMTguMDAuMDAjU3BlY2lhbGl6ZWQgd2FyZWhvdXNpbmcgYW5kIHN0b3JhZ2UjNzguMTMuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTMuMTguMDEuMDAjUmVmcmlnZXJhdGVkIHN0b3JhZ2UjNzguMTMuMTguMDAuMDAKLXVuc3BzYzcjNzguMTMuMTguMDIuMDAjQ3VzdG9tcyBib25kZWQgc3RvcmFnZSBzZXJ2aWNlcyM3OC4xMy4xOC4wMC4wMAotdW5zcHNjNyM3OC4xMy4xOC4wMy4wMCNIYXphcmRvdXMgbWF0ZXJpYWxzIHN0b3JhZ2UjNzguMTMuMTguMDAuMDAKLXVuc3BzYzcjNzguMTMuMTguMDQuMDAjRG9jdW1lbnQgc3RvcmFnZSBzZXJ2aWNlcyM3OC4xMy4xOC4wMC4wMAotdW5zcHNjNyM3OC4xNC4wMC4wMC4wMCNUcmFuc3BvcnQgb3BlcmF0aW9ucyM3OC4wMC4wMC4wMC4wMAotdW5zcHNjNyM3OC4xNC4xNS4wMC4wMCNUcmFuc3BvcnQgYXJyYW5nZW1lbnRzIzc4LjE0LjAwLjAwLjAwCi11bnNwc2M3Izc4LjE0LjE1LjAxLjAwI0ZyZWlnaHQgZm9yd2FyZGVycyBzZXJ2aWNlcyM3OC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3OC4xNC4xNS4wMi4wMCNDdXN0b21zIGJyb2tlcmFnZSBzZXJ2aWNlcyM3OC4xNC4xNS4wMC4wMAotdW5zcHNjNyM3OC4xNC4xNS4wMy4wMCNUcmFuc3BvcnRhdGlvbiBpbmR1c3RyeSB0YXJpZmYgY29tcGFyaXNvbiBvciBmcmVpZ2h0IGF1ZGl0IHNlcnZpY2VzIzc4LjE0LjE1LjAwLjAwCi11bnNwc2M3Izc4LjE0LjE2LjAwLjAwI0luc3BlY3Rpb24jNzguMTQuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTQuMTYuMDEuMDAjUGFja2luZyBpbnNwZWN0aW9uIHNlcnZpY2VzIzc4LjE0LjE2LjAwLjAwCi11bnNwc2M3Izc4LjE0LjE2LjAyLjAwI0NhcmdvIHN1cnZleSBzZXJ2aWNlcyM3OC4xNC4xNi4wMC4wMAotdW5zcHNjNyM3OC4xNC4xNi4wMy4wMCNQZXN0IGNvbnRyb2wgaW5zcGVjdGlvbnMjNzguMTQuMTYuMDAuMDAKLXVuc3BzYzcjNzguMTQuMTcuMDAuMDAjTmF2aWdhdGlvbmFsIHNlcnZpY2VzIzc4LjE0LjAwLjAwLjAwCi11bnNwc2M3Izc4LjE0LjE3LjAxLjAwI1R1Z2JvYXQgc2VydmljZXMjNzguMTQuMTcuMDAuMDAKLXVuc3BzYzcjNzguMTQuMTcuMDIuMDAjRHJhd2JyaWRnZSBvcGVyYXRpb25zIzc4LjE0LjE3LjAwLjAwCi11bnNwc2M3Izc4LjE0LjE4LjAwLjAwI1Rlcm1pbmFsIHNlcnZpY2VzIzc4LjE0LjAwLjAwLjAwCi11bnNwc2M3Izc4LjE0LjE4LjAxLjAwI1N0ZXZlZG9yaW5nIHNlcnZpY2VzIzc4LjE0LjE4LjAwLjAwCi11bnNwc2M3Izc4LjE0LjE4LjAyLjAwI1Zlc3NlbCBkb2NraW5nIHNlcnZpY2VzIzc4LjE0LjE4LjAwLjAwCi11bnNwc2M3Izc4LjE0LjE4LjAzLjAwI1Zlc3NlbCBzdG9yZXMgc2VydmljZXMjNzguMTQuMTguMDAuMDAKLXVuc3BzYzcjNzguMTQuMTguMDQuMDAjUGFya2luZyBzdHJ1Y3R1cmVzIzc4LjE0LjE4LjAwLjAwCi11bnNwc2M3Izc4LjE1LjAwLjAwLjAwI1RyYW5zcG9ydCBpbmR1c3RyeSBzdXBwb3J0IGFuZCBtYWludGVuYW5jZSBhbmQgcmVwYWlyIHNlcnZpY2VzIzc4LjAwLjAwLjAwLjAwCi11bnNwc2M3Izc4LjE1LjAxLjAwLjAwI1BhbmVsIGFuZCBwYWludCBzZXJ2aWNlcyM3OC4xNS4wMC4wMC4wMAotdW5zcHNjNyM3OC4xNS4wMS4wMS4wMCNQYW5lbGJlYXRpbmcgc2VydmljZXMjNzguMTUuMDEuMDAuMDAKLXVuc3BzYzcjNzguMTUuMDIuMDAuMDAjVHJhbnNwb3J0IGZ1ZWxsaW5nIGFuZCB2ZWhpY2xlIHN0b3JhZ2UgYW5kIHN1cHBvcnQgc2VydmljZXMjNzguMTUuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTUuMDIuMDEuMDAjRnVlbGxpbmcgb2YgdmVoaWNsZXMjNzguMTUuMDIuMDAuMDAKLXVuc3BzYzcjNzguMTUuMDIuMDIuMDAjVHJhbnNwb3J0YXRpb24gc3RvcmFnZSM3OC4xNS4wMi4wMC4wMAotdW5zcHNjNyM3OC4xNi4wMC4wMC4wMCNQYW5lbCBhbmQgcGFpbnQgc2VydmljZXMjNzguMDAuMDAuMDAuMDAKLXVuc3BzYzcjNzguMTcuMDAuMDAuMDAjUGFuZWxiZWF0aW5nIHNlcnZpY2VzIzc4LjAwLjAwLjAwLjAwCi11bnNwc2M3Izc4LjE4LjAwLjAwLjAwI1RyYW5zcG9ydGF0aW9uIG9yIHZlaGljbGUgcmVwYWlyIHNlcnZpY2VzIzc4LjAwLjAwLjAwLjAwCi11bnNwc2M3Izc4LjE4LjAxLjAwLjAwI1ZlaGljbGUgcmVwYWlyIHNlcnZpY2VzIzc4LjE4LjAwLjAwLjAwCi11bnNwc2M3Izc4LjE4LjAxLjAxLjAwI1ZlaGljbGUgYm9keSByZXBhaXIgb3IgcGFpbnRpbmcgc2VydmljZXMjNzguMTguMDEuMDAuMDAKLXVuc3BzYzcjNzguMTguMDEuMDIuMDAjVHJhbnNtaXNzaW9uIHJlcGFpciM3OC4xOC4wMS4wMC4wMAotdW5zcHNjNyM3OC4xOS4wMC4wMC4wMCNWZWhpY2xlIHJlcGFpciBzZXJ2aWNlcyM3OC4wMC4wMC4wMC4wMAotdW5zcHNjNyM3OC4xOS4xMS4wMC4wMCNWZWhpY2xlIGJvZHkgcmVwYWlyIG9yIHBhaW50aW5nIHNlcnZpY2VzIzc4LjE5LjAwLjAwLjAwCi11bnNwc2M3Izc4LjE5LjEyLjAwLjAwI1RyYW5zbWlzc2lvbiByZXBhaXIjNzguMTkuMDAuMDAuMDAKLXVuc3BzYzcjODAuMDAuMDAuMDAuMDAjTWFuYWdlbWVudCBhbmQgQnVzaW5lc3MgUHJvZmVzc2lvbmFscyBhbmQgQWRtaW5pc3RyYXRpdmUgU2VydmljZXMjODAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTAuMDAuMDAuMDAjTWFuYWdlbWVudCBhZHZpc29yeSBzZXJ2aWNlcyM4MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM4MC4xMC4xNS4wMC4wMCNCdXNpbmVzcyBhbmQgY29ycG9yYXRlIG1hbmFnZW1lbnQjODAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTAuMTUuMDEuMDAjTmV3IGJ1c2luZXNzIHN0YXJ0IHVwIGNvbnN1bHRhdGlvbiBzZXJ2aWNlcyM4MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM4MC4xMC4xNS4wMi4wMCNDb3Jwb3JhdGUgbWVyZ2VycyBjb25zdWx0YXRpb24gc2VydmljZXMjODAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTAuMTUuMDMuMDAjQ29ycG9yYXRlIGRpdmVzdGl0dXJlIGNvbnN1bHRhdGlvbiBzZXJ2aWNlcyM4MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM4MC4xMC4xNS4wNC4wMCNTdHJhdGVnaWMgcGxhbm5pbmcgY29uc3VsdGF0aW9uIHNlcnZpY2VzIzgwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgwLjEwLjE1LjA1LjAwI0NvcnBvcmF0ZSBvYmplY3RpdmVzIG9yIHBvbGljeSBkZXZlbG9wbWVudCM4MC4xMC4xNS4wMC4wMAotdW5zcHNjNyM4MC4xMC4xNS4wNi4wMCNPcmdhbml6YXRpb25hbCBzdHJ1Y3R1cmUgY29uc3VsdGF0aW9uIzgwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgwLjEwLjE1LjA3LjAwI0luZm9ybWF0aW9uIHRlY2hub2xvZ3kgY29uc3VsdGF0aW9uIHNlcnZpY2VzIzgwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgwLjEwLjE2LjAwLjAwI1Byb2plY3QgbWFuYWdlbWVudCM4MC4xMC4wMC4wMC4wMAotdW5zcHNjNyM4MC4xMC4xNi4wMS4wMCNGZWFzaWJpbGl0eSBzdHVkaWVzIG9yIHNjcmVlbmluZyBvZiBwcm9qZWN0IGlkZWFzIzgwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzgwLjEwLjE2LjAyLjAwI1JlZ2lvbmFsIG9yIGxvY2F0aW9uIHN0dWRpZXMgZm9yIHByb2plY3RzIzgwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzgwLjEwLjE2LjAzLjAwI0Vjb25vbWljIG9yIGZpbmFuY2lhbCBldmFsdWF0aW9uIG9mIHByb2plY3RzIzgwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzgwLjEwLjE2LjA0LjAwI1Byb2plY3QgYWRtaW5pc3RyYXRpb24gb3IgcGxhbm5pbmcjODAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTAuMTcuMDAuMDAjSW5kdXN0cmlhbCBtYW5hZ2VtZW50IzgwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzgwLjEwLjE3LjAxLjAwI0ZhY3RvcnkgbWFuYWdlbWVudCBzZXJ2aWNlcyM4MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM4MC4xMC4xNy4wMi4wMCNQcm9kdWN0aXZpdHkgb3IgZWZmaWNpZW5jeSBzdHVkaWVzIG9yIGltcGxlbWVudGF0aW9uIzgwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzgwLjEwLjE3LjAzLjAwI1NwZWNpZmljYXRpb24gc3RhbmRhcmRpemF0aW9uIHNlcnZpY2VzIzgwLjEwLjE3LjAwLjAwCi11bnNwc2M3IzgwLjEwLjE3LjA0LjAwI1N1cHBseSBjaGFpbiBhbmFseXNpcyBvciByZSBlbmdpbmVlcmluZyBzZXJ2aWNlcyM4MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM4MC4xMC4xNy4wNS4wMCNDbyBvcGVyYXRpdmUgb3IgY29uc29ydGl1bSBzZXJ2aWNlcyM4MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM4MC4xMC4xNy4wNi4wMCNQcm9mZXNzaW9uYWwgcHJvY3VyZW1lbnQgc2VydmljZXMjODAuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODAuMTEuMDAuMDAuMDAjSHVtYW4gcmVzb3VyY2VzIHNlcnZpY2VzIzgwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzgwLjExLjE1LjAwLjAwI0h1bWFuIHJlc291cmNlIGRldmVsb3BtZW50IzgwLjExLjAwLjAwLjAwCi11bnNwc2M3IzgwLjExLjE1LjAxLjAwI01hbmFnZW1lbnQgZGV2ZWxvcG1lbnQjODAuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTEuMTUuMDIuMDAjQ29tcGVuc2F0aW9uIG9yIGJlbmVmaXRzIHBsYW5uaW5nIzgwLjExLjE1LjAwLjAwCi11bnNwc2M3IzgwLjExLjE1LjAzLjAwI0xhYm9yIG9yIHVuaW9uIHJlbGF0aW9ucyM4MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNS4wNC4wMCNMYWJvciB0cmFpbmluZyBvciBkZXZlbG9wbWVudCM4MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNS4wNS4wMCNIdW1hbiByZXNvdXJjZXMgcHJvZHVjdGl2aXR5IGF1ZGl0cyM4MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNS4wNi4wMCNQZXJzb25uZWwgcmVsb2NhdGlvbiM4MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNi4wMC4wMCNUZW1wb3JhcnkgcGVyc29ubmVsIHNlcnZpY2VzIzgwLjExLjAwLjAwLjAwCi11bnNwc2M3IzgwLjExLjE2LjAxLjAwI1RlbXBvcmFyeSBjbGVyaWNhbCBvciBhZG1pbnN0cmF0aXZlIGFzc2lzdGFuY2UjODAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTEuMTYuMDIuMDAjVGVtcG9yYXJ5IG1hcmtldGluZyBzdGFmZiBuZWVkcyM4MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNi4wMy4wMCNUZW1wb3JhcnkgcHJvZHVjdGlvbiBzdGFmZmluZyBuZWVkcyM4MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNi4wNC4wMCNUZW1wb3JhcnkgdGVjaG5pY2lhbiBzdGFmZmluZyBuZWVkcyM4MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNi4wNS4wMCNUZW1wb3JhcnkgZmluYW5jaWFsIHN0YWZmaW5nIG5lZWRzIzgwLjExLjE2LjAwLjAwCi11bnNwc2M3IzgwLjExLjE2LjA2LjAwI1RlbXBvcmFyeSBtZWRpY2FsIHN0YWZmaW5nIG5lZWRzIzgwLjExLjE2LjAwLjAwCi11bnNwc2M3IzgwLjExLjE2LjA3LjAwI1RlbXBvcmFyeSBsZWdhbCBzdGFmZmluZyBuZWVkcyM4MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNi4wOC4wMCNUZW1wb3JhcnkgaW5mb3JtYXRpb24gdGVjaG5vbG9neSBzb2Z0d2FyZSBkZXZlbG9wZXJzIzgwLjExLjE2LjAwLjAwCi11bnNwc2M3IzgwLjExLjE2LjA5LjAwI1RlbXBvcmFyeSBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5IHN5c3RlbXMgb3IgZGF0YWJhc2UgYWRtaW5pc3RyYXRvcnMjODAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTEuMTYuMTAuMDAjVGVtcG9yYXJ5IGluZm9ybWF0aW9uIHRlY2hub2xvZ3kgbmV0d29ya2luZyBzcGVjaWFsaXN0cyM4MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNi4xMS4wMCNUZW1wb3Jhcnkgd2FyZWhvdXNlIHN0YWZmIzgwLjExLjE2LjAwLjAwCi11bnNwc2M3IzgwLjExLjE2LjEyLjAwI1RlbXBvcmFyeSBkcml2ZXJzIzgwLjExLjE2LjAwLjAwCi11bnNwc2M3IzgwLjExLjE2LjEzLjAwI1RlbXBvcmFyeSBtYW51YWwgbGFib3IjODAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTEuMTYuMTQuMDAjVGVtcG9yYXJ5IHByb2Zlc3Npb25hbCBzdGFmZiM4MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNi4xNS4wMCNUZW1wb3JhcnkgbWFjaGluaXN0IHBlcnNvbm5lbCM4MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNy4wMC4wMCNQZXJzb25uZWwgcmVjcnVpdG1lbnQjODAuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTEuMTcuMDEuMDAjU3RhZmYgcmVjcnVpdGluZyBzZXJ2aWNlcyM4MC4xMS4xNy4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNy4wMi4wMCNSZWZlcmVuY2Ugb3IgYmFja2dyb3VuZCBjaGVjayBzZXJ2aWNlcyM4MC4xMS4xNy4wMC4wMAotdW5zcHNjNyM4MC4xMS4xNy4wMy4wMCNSZXN1bWUgb3IgY3VycmljdWx1bSB2aXRhZSBzY3JlZW5pbmcgc2VydmljZXMjODAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODAuMTEuMTguMDAuMDAjSW5mb3JtYXRpb24gdGVjaG5vbG9neSBjb250cmFjdG9ycyM4MC4xMS4wMC4wMC4wMAotdW5zcHNjNyM4MC4xMS4xOC4wMS4wMCNUZW1wb3JhcnkgaW5mb3JtYXRpb24gdGVjaG5vbG9neSBjb250cmFjdG9ycyM4MC4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MC4xMi4wMC4wMC4wMCNMZWdhbCBzZXJ2aWNlcyM4MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM4MC4xMi4xNS4wMC4wMCNDcmltaW5hbCBsYXcgc2VydmljZXMjODAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTIuMTUuMDEuMDAjSnV2ZW5pbGUganVzdGljZSBsYXcgc2VydmljZXMjODAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTIuMTUuMDIuMDAjQXBwZWxsYXRlIHByb2NlZHVyZSBzZXJ2aWNlcyM4MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM4MC4xMi4xNS4wMy4wMCNEZWZlbnNlIG9yIGNyaW1pbmFsIGxhdyBzZXJ2aWNlcyM4MC4xMi4xNS4wMC4wMAotdW5zcHNjNyM4MC4xMi4xNi4wMC4wMCNCdXNpbmVzcyBsYXcgc2VydmljZXMjODAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTIuMTYuMDEuMDAjR292ZXJubWVudCBhbnRpdHJ1c3Qgb3IgcmVndWxhdGlvbnMgbGF3IHNlcnZpY2VzIzgwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgwLjEyLjE2LjAyLjAwI0JhbmtydXB0Y3kgbGF3IHNlcnZpY2VzIzgwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgwLjEyLjE2LjAzLjAwI1BhcnRuZXJzaGlwIGxhdyM4MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMi4xNi4wNC4wMCNQYXRlbnQgb3IgdHJhZGVtYXJrIG9yIGNvcHlyaWdodCBsYXcjODAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTIuMTYuMDUuMDAjTGlxdWlkYXRpb24gbGF3IHNlcnZpY2VzIzgwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgwLjEyLjE2LjA2LjAwI1JlYWwgZXN0YXRlIGxhdyM4MC4xMi4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMi4xNi4wNy4wMCNUYXhhdGlvbiBsYXcjODAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTIuMTYuMDguMDAjTWVyZ2VycyBvciBhY3F1aXNpdGlvbnMgbGF3IzgwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgwLjEyLjE2LjA5LjAwI0xlZ2FsIHJlc2VhcmNoIHNlcnZpY2VzIzgwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgwLjEyLjE2LjEwLjAwI0RlYnQgY29sbGVjdGlvbiBsYXcgc2VydmljZXMjODAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTIuMTcuMDAuMDAjQ2l2aWwgbGlhYmlsaXR5IHNlcnZpY2VzIzgwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzgwLjEyLjE3LjAxLjAwI01hbHByYWN0aWNlIG9yIG5lZ2xpZ2VuY2UgbGF3IHNlcnZpY2VzIzgwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzgwLjEyLjE3LjAyLjAwI1BlcnNvbmFsIGluanVyeSBsYXcgc2VydmljZXMjODAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjODAuMTIuMTcuMDMuMDAjUHJvcGVydHkgbGF3IHNlcnZpY2VzIzgwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzgwLjEyLjE3LjA0LjAwI0NvbnRyYWN0IGxhdyBzZXJ2aWNlcyM4MC4xMi4xNy4wMC4wMAotdW5zcHNjNyM4MC4xMi4xOC4wMC4wMCNGYW1pbHkgbGF3IHNlcnZpY2VzIzgwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzgwLjEyLjE4LjAxLjAwI0Rpdm9yY2UgbGF3IHNlcnZpY2VzIzgwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzgwLjEyLjE4LjAyLjAwI0Fkb3B0aW9uIGxhdyBzZXJ2aWNlcyM4MC4xMi4xOC4wMC4wMAotdW5zcHNjNyM4MC4xMi4xOC4wMy4wMCNJbW1pZ3JhdGlvbiBvciBuYXR1cmFsaXphdGlvbiBsYXcjODAuMTIuMTguMDAuMDAKLXVuc3BzYzcjODAuMTIuMTguMDQuMDAjR3VhcmRpYW5zaGlwIG9yIGN1c3RvZHkgbGF3IHNlcnZpY2VzIzgwLjEyLjE4LjAwLjAwCi11bnNwc2M3IzgwLjEzLjAwLjAwLjAwI1JlYWwgZXN0YXRlIHNlcnZpY2VzIzgwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzgwLjEzLjE1LjAwLjAwI0xlYXNlIGFuZCByZW50YWwgb2YgcHJvcGVydHkgb3IgYnVpbGRpbmcjODAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTMuMTUuMDEuMDAjUmVzaWRlbnRpYWwgcmVudGFsIzgwLjEzLjE1LjAwLjAwCi11bnNwc2M3IzgwLjEzLjE1LjAyLjAwI0NvbW1lcmNpYWwgb3IgaW5kdXN0cmlhbCBmYWNpbGl0eSByZW50YWwjODAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTMuMTUuMDMuMDAjTGFuZCBsZWFzZXMjODAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTMuMTYuMDAuMDAjU2FsZSBvZiBwcm9wZXJ0eSBhbmQgYnVpbGRpbmcjODAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTMuMTYuMDEuMDAjUmVhbCBlc3RhdGUgYnJva2VycyBvciBhZ2VudHMjODAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTMuMTYuMDIuMDAjUmVhbCBlc3RhdGUgYXVjdGlvbiM4MC4xMy4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMy4xNi4wMy4wMCNTYWxlIG9mIHJlc2lkZW50aWFsIGxhbmQjODAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTMuMTYuMDQuMDAjU2FsZSBvZiBjb21tZXJjaWFsIG9yIGluZHVzdHJpYWwgbGFuZCM4MC4xMy4xNi4wMC4wMAotdW5zcHNjNyM4MC4xMy4xNi4wNS4wMCNTYWxlIG9mIGNvbW1lcmNpYWwgYnVpbGRpbmcjODAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTMuMTcuMDAuMDAjRXNjcm93IGFuZCB0aXRsZSBzZXJ2aWNlcyM4MC4xMy4wMC4wMC4wMAotdW5zcHNjNyM4MC4xMy4xNy4wMS4wMCNUaXRsZSByZWNvbnZleWFuY2Ugc2VydmljZXMjODAuMTMuMTcuMDAuMDAKLXVuc3BzYzcjODAuMTMuMTcuMDIuMDAjVGl0bGUgc2VhcmNoIHNlcnZpY2VzIzgwLjEzLjE3LjAwLjAwCi11bnNwc2M3IzgwLjEzLjE3LjAzLjAwI0VzY3JvdyBhY2NvdW50IHNlcnZpY2VzIzgwLjEzLjE3LjAwLjAwCi11bnNwc2M3IzgwLjEzLjE4LjAwLjAwI1JlYWwgZXN0YXRlIG1hbmFnZW1lbnQgc2VydmljZXMjODAuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTMuMTguMDEuMDAjUHJvcGVydHkgbWFuYWdlbWVudCM4MC4xMy4xOC4wMC4wMAotdW5zcHNjNyM4MC4xMy4xOC4wMi4wMCNSZWFsIGVzdGF0ZSBhcHByYWlzYWwgc2VydmljZXMjODAuMTMuMTguMDAuMDAKLXVuc3BzYzcjODAuMTMuMTguMDMuMDAjUmVhbCBlc3RhdGUgbGlzdGluZyBzZXJ2aWNlcyM4MC4xMy4xOC4wMC4wMAotdW5zcHNjNyM4MC4xNC4wMC4wMC4wMCNNYXJrZXRpbmcgYW5kIGRpc3RyaWJ1dGlvbiM4MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM4MC4xNC4xNS4wMC4wMCNNYXJrZXQgcmVzZWFyY2gjODAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTUuMDEuMDAjTWFya2V0aW5nIGFuYWx5c2lzIzgwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzgwLjE0LjE1LjAyLjAwI0Rpc3RyaWJ1dGl2ZSBvciBzZXJ2aWNlIHRyYWRlIHN0YXRpc3RpY3MjODAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTUuMDMuMDAjQ29tbW9kaXR5IHByaWNlIGZvcmVjYXN0aW5nIzgwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzgwLjE0LjE1LjA0LjAwI1ByZXBhcmF0aW9uIG9mIGNvbW1vZGl0eSBtYXJrZXQgc3VydmV5cyM4MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM4MC4xNC4xNS4wNS4wMCNNYXJrZXRpbmcgcGxhbnMjODAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTUuMDYuMDAjSW50ZXJuZXQgYmFzZWQgbWFya2V0IHJlc2VhcmNoIzgwLjE0LjE1LjAwLjAwCi11bnNwc2M3IzgwLjE0LjE2LjAwLjAwI1NhbGVzIGFuZCBidXNpbmVzcyBwcm9tb3Rpb24gYWN0aXZpdGllcyM4MC4xNC4wMC4wMC4wMAotdW5zcHNjNyM4MC4xNC4xNi4wMS4wMCNTYWxlcyBwcm9tb3Rpb24gc2VydmljZXMjODAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTYuMDIuMDAjUHVibGljIHJlbGF0aW9uIHNlcnZpY2VzIzgwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzgwLjE0LjE2LjAzLjAwI1RlbGVtYXJrZXRpbmcjODAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTYuMDQuMDAjQnJhbmRpbmcgb2YgcHJvZHVjdCBuYW1pbmcgc2VydmljZXMjODAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTYuMDUuMDAjUHJvbW90aW9uYWwgbWVyY2hhbmRpc2UjODAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTYuMDYuMDAjRGlyZWN0IG1hcmtldGluZyBmdWxmaWxsbWVudCM4MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM4MC4xNC4xNi4wNy4wMCNFdmVudHMgbWFuYWdlbWVudCM4MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM4MC4xNC4xNi4wOC4wMCNMZXR0ZXIgc2hvcCBzZXJ2aWNlcyM4MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM4MC4xNC4xNi4wOS4wMCNTcG9uc29yc2hpcCBvZiBldmVudCBvciBjZWxlYnJpdHkjODAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTYuMTAuMDAjQ2xvc2Ugb3V0cyM4MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM4MC4xNC4xNy4wMC4wMCNEaXN0cmlidXRpb24jODAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTcuMDEuMDAjRGlyZWN0IHNhbGVzIHNlcnZpY2VzIzgwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzgwLjE0LjE3LjAyLjAwI1dob2xlc2FsZSBkaXN0cmlidXRpb24gc2VydmljZXMjODAuMTQuMTcuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTcuMDMuMDAjUmV0YWlsIGRpc3RyaWJ1dGlvbiBzZXJ2aWNlcyM4MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM4MC4xNC4xNy4wNC4wMCNGcmFuY2hpc2Ugb3BlcmF0aW9ucyM4MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM4MC4xNC4xNy4wNS4wMCNBdWN0aW9uIHNlcnZpY2VzIzgwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzgwLjE0LjE4LjAwLjAwI01haWxpbmcgc2VydmljZXMjODAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTQuMTguMDEuMDAjTWFpbGluZyBsaXN0IGNvbXBpbGF0aW9uIHNlcnZpY2VzIzgwLjE0LjE4LjAwLjAwCi11bnNwc2M3IzgwLjE0LjE4LjAyLjAwI01haWxpbmcgbGlzdCBtYW5hZ2VtZW50IHNlcnZpY2UjODAuMTQuMTguMDAuMDAKLXVuc3BzYzcjODAuMTQuMTguMDMuMDAjQWRkcmVzc2luZyBzZXJ2aWNlIzgwLjE0LjE4LjAwLjAwCi11bnNwc2M3IzgwLjE1LjAwLjAwLjAwI1RyYWRlIHBvbGljeSBhbmQgc2VydmljZXMjODAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTUuMTUuMDAuMDAjVHJhZGUgZmFjaWxpdGF0aW9uIzgwLjE1LjAwLjAwLjAwCi11bnNwc2M3IzgwLjE1LjE1LjAxLjAwI0NvbW1vZGl0eSBwb2xpY3kgb3IgcHJvamVjdGlvbnMgc2VydmljZXMjODAuMTUuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTUuMTUuMDIuMDAjVHJhZGUgZXhwYW5zaW9uIzgwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzgwLjE1LjE1LjAzLjAwI1RyYWRlIGluZm9ybWF0aW9uIHNlcnZpY2VzIzgwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzgwLjE1LjE1LjA0LjAwI1RyYWRlIHByb21vdGlvbiBzZXJ2aWNlcyM4MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM4MC4xNS4xNS4wNS4wMCNNdWx0aW5hdGlvbmFsIG1hcmtldGluZyBlbnRlcnByaXNlcyM4MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM4MC4xNS4xNi4wMC4wMCNJbnRlcm5hdGlvbmFsIHRyYWRlIHNlcnZpY2VzIzgwLjE1LjAwLjAwLjAwCi11bnNwc2M3IzgwLjE1LjE2LjAxLjAwI0V4cG9ydCBkZXZlbG9wbWVudCM4MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM4MC4xNS4xNi4wMi4wMCNJbXBvcnQgcGxhbm5pbmcjODAuMTUuMTYuMDAuMDAKLXVuc3BzYzcjODAuMTUuMTYuMDMuMDAjRXhwb3J0IHByb2plY3Rpb25zIzgwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzgwLjE1LjE2LjA0LjAwI0ltcG9ydCBwcm9jdXJlbWVudCBzZXJ2aWNlcyM4MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM4MC4xNi4wMC4wMC4wMCNCdXNpbmVzcyBhZG1pbmlzdHJhdGlvbiBzZXJ2aWNlcyM4MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM4MC4xNi4xNS4wMC4wMCNNYW5hZ2VtZW50IHN1cHBvcnQgc2VydmljZXMjODAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTYuMTUuMDEuMDAjT2ZmaWNlIGFkbWluaXN0cmF0aW9uIG9yIHNlY3JldGFyaWFsIHNlcnZpY2VzIzgwLjE2LjE1LjAwLjAwCi11bnNwc2M3IzgwLjE2LjE1LjAyLjAwI01lZXRpbmcgcGxhbm5pbmcgc2VydmljZXMjODAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTYuMTUuMDMuMDAjS2V5Ym9hcmQgZW50cnkgc2VydmljZXMjODAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTYuMTUuMDQuMDAjQ2xlcmljYWwgc2VydmljZXMjODAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTYuMTUuMDUuMDAjRmxlZXQgbWFuYWdlbWVudCBzZXJ2aWNlcyM4MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM4MC4xNi4xNS4wNi4wMCNEYXRhIGFyY2hpdmluZyBzZXJ2aWNlcyM4MC4xNi4xNS4wMC4wMAotdW5zcHNjNyM4MC4xNi4xNS4wNy4wMCNBdWRpbyB2aXN1YWwgc2VydmljZXMjODAuMTYuMTUuMDAuMDAKLXVuc3BzYzcjODAuMTYuMTYuMDAuMDAjQnVzaW5lc3MgZmFjaWxpdGllcyBvdmVyc2lnaHQjODAuMTYuMDAuMDAuMDAKLXVuc3BzYzcjODAuMTYuMTYuMDEuMDAjUHJvcGVydHkgbWFuYWdtZW50IHNlcnZpY2VzIzgwLjE2LjE2LjAwLjAwCi11bnNwc2M3IzgxLjAwLjAwLjAwLjAwI0VuZ2luZWVyaW5nIGFuZCBSZXNlYXJjaCBhbmQgVGVjaG5vbG9neSBCYXNlZCBTZXJ2aWNlcyM4MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMC4wMC4wMC4wMCNQcm9mZXNzaW9uYWwgZW5naW5lZXJpbmcgc2VydmljZXMjODEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODEuMTAuMTUuMDAuMDAjQ2l2aWwgZW5naW5lZXJpbmcjODEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjODEuMTAuMTUuMDEuMDAjV2VsbCBlbmdpbmVlcmluZyM4MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMC4xNS4wMi4wMCNUZWNobmljYWwgZHJhd2luZyM4MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMC4xNS4wMy4wMCNIYXJib3Igb3Igd2F0ZXIgcG9ydHMgZW5naW5lZXJpbmcjODEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTAuMTUuMDUuMDAjU3RydWN0dXJhbCBlbmdpbmVlcmluZyM4MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMC4xNS4wNi4wMCNOYXZhbCBhcmNoaXRlY3R1cmUjODEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTAuMTUuMDcuMDAjRGFtIGVuZ2luZWVyaW5nIzgxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgxLjEwLjE1LjA4LjAwI0FyY2hpdGVjdHVyYWwgZW5naW5lZXJpbmcjODEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTAuMTUuMDkuMDAjQWlycG9ydCBlbmdpbmVlcmluZyM4MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMC4xNS4xMC4wMCNIaWdod2F5IGVuZ2luZWVyaW5nIzgxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgxLjEwLjE1LjExLjAwI1JhaWx3YXkgZW5naW5lZXJpbmcjODEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTAuMTYuMDAuMDAjTWVjaGFuaWNhbCBlbmdpbmVlcmluZyM4MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMC4xNi4wMS4wMCNNZWNoYW5pY2FsIGRyYXdpbmcjODEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTAuMTYuMDIuMDAjTWVjaGFuaWNhbCBwcm9kdWN0IGVuY2xvc3VyZXMgZGVzaWduIzgxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzgxLjEwLjE2LjAzLjAwI01hY2hpbmUgdG9vbCBkZXNpZ24jODEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTAuMTYuMDQuMDAjUG93ZXIgdHJhbnNtaXNzaW9uIGRlc2lnbiM4MS4xMC4xNi4wMC4wMAotdW5zcHNjNyM4MS4xMC4xNy4wMC4wMCNFbGVjdHJpY2FsIGFuZCBlbGVjdHJvbmljIGVuZ2luZWVyaW5nIzgxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzgxLjEwLjE3LjAxLjAwI0VsZWN0cmljYWwgZW5naW5lZXJpbmcgc2VydmljZXMjODEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODEuMTAuMTcuMDIuMDAjRWxlY3Ryb25pYyBjaXJjdWl0IGRlc2lnbiM4MS4xMC4xNy4wMC4wMAotdW5zcHNjNyM4MS4xMC4xOC4wMC4wMCNDaGVtaWNhbCBlbmdpbmVlcmluZyM4MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMC4xOC4wMS4wMCNQbGFzdGljcyBlbmdpbmVlcmluZyM4MS4xMC4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMC4xOS4wMC4wMCNPaWwgYW5kIGdhcyBlbmdpbmVlcmluZyM4MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMC4xOS4wMS4wMCNEcmlsbGluZyBlbmdpbmVlcmluZyBmb3Igb2lsIG9yIGdhcyM4MS4xMC4xOS4wMC4wMAotdW5zcHNjNyM4MS4xMC4xOS4wMi4wMCNQcm9kdWN0aW9uIGVuZ2luZWVyaW5nIGZvciBvaWwgb3IgZ2FzIzgxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzgxLjEwLjE5LjAzLjAwI1Jlc2Vydm9pciBlbmdpbmVlcmluZyBmb3Igb2lsIG9yIGdhcyM4MS4xMC4xOS4wMC4wMAotdW5zcHNjNyM4MS4xMC4yMC4wMC4wMCNNaW5pbmcgZW5naW5lZXJpbmcjODEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjODEuMTAuMjAuMDEuMDAjSHlkcmF1bGljIG1pbmluZyM4MS4xMC4yMC4wMC4wMAotdW5zcHNjNyM4MS4xMC4yMS4wMC4wMCNPY2VhbiBlbmdpbmVlcmluZyM4MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMC4yMS4wMS4wMCNDb2FzdGFsIGVuZ2luZWVyaW5nIzgxLjEwLjIxLjAwLjAwCi11bnNwc2M3IzgxLjEwLjIyLjAwLjAwI1RyYW5zcG9ydGF0aW9uIGVuZ2luZWVyaW5nIzgxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzgxLjEwLjIyLjAxLjAwI1RyYWZmaWMgZW5naW5lZXJpbmcjODEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjODEuMTAuMjIuMDIuMDAjVXJiYW4gdHJhbnNwb3J0IG5ldHdvcmsjODEuMTAuMjIuMDAuMDAKLXVuc3BzYzcjODEuMTAuMjIuMDMuMDAjSW5sYW5kIHdhdGVyd2F5cyM4MS4xMC4yMi4wMC4wMAotdW5zcHNjNyM4MS4xMC4yMy4wMC4wMCNBZXJvbmF1dGljYWwgZW5naW5lZXJpbmcjODEuMTAuMDAuMDAuMDAKLXVuc3BzYzcjODEuMTAuMjMuMDEuMDAjQXZpb25pY3MgZGVzaWduIzgxLjEwLjIzLjAwLjAwCi11bnNwc2M3IzgxLjEwLjI0LjAwLjAwI0F2aW9uaWNzIGRlc2lnbiM4MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMS4wMC4wMC4wMCNDb21wdXRlciBzZXJ2aWNlcyM4MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNS4wMC4wMCNTb2Z0d2FyZSBvciBoYXJkd2FyZSBlbmdpbmVlcmluZyM4MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNS4wMS4wMCNNYWluZnJhbWUgc29mdHdhcmUgYXBwbGljYXRpb25zIGRlc2lnbiM4MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNS4wMi4wMCNQZXJzb25hbCBjb21wdXRlciAoUEMpIGFwcGxpY2F0aW9uIGRlc2lnbiM4MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNS4wMy4wMCNTeXN0ZW1zIGludGVncmF0aW9uIGRlc2lnbiM4MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNS4wNC4wMCNBcHBsaWNhdGlvbiBwcm9ncmFtbWluZyBzZXJ2aWNlcyM4MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNS4wNS4wMCNPcGVyYXRpbmcgc3lzdGVtIHByb2dyYW1taW5nIHNlcnZpY2VzIzgxLjExLjE1LjAwLjAwCi11bnNwc2M3IzgxLjExLjE1LjA2LjAwI0NsaWVudCBvciBzZXJ2ZXIgcHJvZ3JhbW1pbmcgc2VydmljZXMjODEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTUuMDcuMDAjRVJQIG9yIGRhdGFiYXNlIGFwcGxpY2F0aW9ucyBwcm9ncmFtbWluZyBzZXJ2aWNlcyM4MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNS4wOC4wMCNBcHBsaWNhdGlvbiBpbXBsZW1lbnRhdGlvbiBzZXJ2aWNlcyM4MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNS4wOS4wMCNJbnRlcm5ldCBvciBpbnRyYW5ldCBjbGllbnQgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgc2VydmljZXMjODEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTUuMTAuMDAjSW50ZXJuZXQgb3IgaW50cmFuZXQgc2VydmVyIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IHNlcnZpY2VzIzgxLjExLjE1LjAwLjAwCi11bnNwc2M3IzgxLjExLjE1LjExLjAwI0h1bWFuIHJlc291cmNlcyBwcm9kdWN0aXZpdHkgYXVkaXRzIzgxLjExLjE1LjAwLjAwCi11bnNwc2M3IzgxLjExLjE2LjAwLjAwI0NvbXB1dGVyIHByb2dyYW1tZXJzIzgxLjExLjAwLjAwLjAwCi11bnNwc2M3IzgxLjExLjE2LjAxLjAwI1Byb2dyYW1taW5nIGZvciBWaXN1YWwgQmFzaWMjODEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTYuMDIuMDAjUHJvZ3JhbW1pbmcgZm9yIEphdmEjODEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTYuMDMuMDAjUHJvZ3JhbW1pbmcgZm9yIEhUTUwjODEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTYuMDQuMDAjUHJvZ3JhbW1pbmcgZm9yIEFMR09MIzgxLjExLjE2LjAwLjAwCi11bnNwc2M3IzgxLjExLjE2LjA1LjAwI1Byb2dyYW1taW5nIGZvciBBc3NlbWJsZXIjODEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTYuMDYuMDAjUHJvZ3JhbW1pbmcgZm9yIEJhc2ljIzgxLjExLjE2LjAwLjAwCi11bnNwc2M3IzgxLjExLjE2LjA3LjAwI1Byb2dyYW1taW5nIGZvciBDIG9yIEMrKyM4MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNi4wOC4wMCNQcm9ncmFtbWluZyBmb3IgQ09CT0wjODEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTYuMDkuMDAjUHJvZ3JhbW1pbmcgZm9yIEZPUlRSQU4jODEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTYuMTAuMDAjUHJvZ3JhbW1pbmcgZm9yIFBhc2NhbCM4MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNi4xMS4wMCNQcm9ncmFtbWluZyBmb3IgUEwvMSM4MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNi4xMi4wMCNQcm9ncmFtbWluZyBvciBQcm9wcmlldGFyeSBMYW5ndWFnZXMjODEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTcuMDAuMDAjTWFuYWdlbWVudCBpbmZvcm1hdGlvbiBzeXN0ZW1zIChNSVMpIzgxLjExLjAwLjAwLjAwCi11bnNwc2M3IzgxLjExLjE3LjAxLjAwI1dpZGUgYXJlYSBuZXR3b3JrIGNvbW11bmljYXRpb25zIGRlc2lnbiM4MS4xMS4xNy4wMC4wMAotdW5zcHNjNyM4MS4xMS4xNy4wMi4wMCNMb2NhbCBhcmVhIG5ldHdvcmsgY29tbXVuaWNhdGlvbnMgZGVzaWduIzgxLjExLjE3LjAwLjAwCi11bnNwc2M3IzgxLjExLjE3LjAzLjAwI0VsZWN0cm9uaWMgZGF0YSBpbnRlcmNoYW5nZSAoRURJKSBkZXNpZ24jODEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODEuMTEuMTcuMDQuMDAjRGF0YWJhc2UgZGVzaWduIzgxLjExLjE3LjAwLjAwCi11bnNwc2M3IzgxLjExLjE3LjA1LjAwI1N5c3RlbXMgYXJjaGl0ZWN0dXJlIzgxLjExLjE3LjAwLjAwCi11bnNwc2M3IzgxLjExLjE4LjAwLjAwI1N5c3RlbSBhZG1pbmlzdHJhdG9ycyM4MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4wMS4wMCNDb21wdXRlciBvciBuZXR3b3JrIG9yIGludGVybmV0IHNlY3VyaXR5IzgxLjExLjE4LjAwLjAwCi11bnNwc2M3IzgxLjExLjE4LjAyLjAwI01haW5mcmFtZSBhZG1pbmlzdHJhdGlvbiBzZXJ2aWNlcyM4MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4wMy4wMCNMb2NhbCBhcmVhIG5ldHdvcmsgKExBTikgbWFpbnRlbmFuY2Ugb3Igc3VwcG9ydCM4MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4wNC4wMCNXaWRlIGFyZWEgbmV0d29yayAoV0FOKSBtYWludGVuYW5jZSBvciBzdXBwb3J0IzgxLjExLjE4LjAwLjAwCi11bnNwc2M3IzgxLjExLjE4LjA1LjAwI1Byb3ByaWV0YXJ5IG9yIGxpY2Vuc2VkIHN5c3RlbXMgbWFpbnRlbmFuY2Ugb3Igc3VwcG9ydCM4MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4wNi4wMCNEYXRhYmFzZSBhbmFseXNpcyM4MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4wNy4wMCNEYXRhIHN0b3JhZ2UjODEuMTEuMTguMDAuMDAKLXVuc3BzYzcjODEuMTEuMTguMDguMDAjU3lzdGVtcyBhbmFseXNpcyM4MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4wOS4wMCNTeXN0ZW0gaW5zdGFsbGF0aW9uIzgxLjExLjE4LjAwLjAwCi11bnNwc2M3IzgxLjExLjE4LjEwLjAwI1NvZnR3YXJlIGNvZGluZyM4MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4xMS4wMCNUZWNobmljYWwgc3VwcG9ydCBvciBoZWxwIGRlc2sgc2VydmljZXMjODEuMTEuMTguMDAuMDAKLXVuc3BzYzcjODEuMTEuMTguMTIuMDAjQ29tcHV0ZXIgaGFyZHdhcmUgbWFpbnRlbmFuY2Ugb3Igc3VwcG9ydCM4MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4xMy4wMCNDb21wdXRlciBzb2Z0d2FyZSBtYWludGVuYW5jZSBvciBzdXBwb3J0IzgxLjExLjE4LjAwLjAwCi11bnNwc2M3IzgxLjExLjE4LjE0LjAwI0NvIGxvY2F0aW9uIHNlcnZpY2UjODEuMTEuMTguMDAuMDAKLXVuc3BzYzcjODEuMTEuMTguMTUuMDAjUHJpbnRlciBtYWludGVuYW5jZSBhbmQgc3VwcG9ydCBzZXJ2aWNlcyM4MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4xNi4wMCNNYWluZnJhbWUgY29tcHV0ZXIgbWFpbnRlbmFuY2Ugb3Igc3VwcG9ydCM4MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOC4xNy4wMCNUZWxlY29tIGVxdWlwbWVudCBtYWludGVuYW5jZSBvciBzdXBwb3J0IzgxLjExLjE4LjAwLjAwCi11bnNwc2M3IzgxLjExLjE5LjAwLjAwI0luZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zIzgxLjExLjAwLjAwLjAwCi11bnNwc2M3IzgxLjExLjE5LjAxLjAwI0RhdGFiYXNlIGluZm9ybWF0aW9uIHJldHJpZXZhbCM4MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOS4wMi4wMCNPbiBsaW5lIGRhdGFiYXNlIGluZm9ybWF0aW9uIHJldHJpZXZhbCM4MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM4MS4xMS4xOS4wMy4wMCNSZW1vdGUgZGF0YWJhc2UgaW5mb3JtYXRpb24gcmV0cmlldmFsIzgxLjExLjE5LjAwLjAwCi11bnNwc2M3IzgxLjExLjIwLjAwLjAwI0RhdGEgc2VydmljZXMjODEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODEuMTEuMjAuMDEuMDAjT24gbGluZSBkYXRhIHByb2Nlc3NpbmcjODEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjODEuMTEuMjAuMDIuMDAjRGF0YSBwcm9jZXNzaW5nIG9yIHByZXBhcmF0aW9uIHNlcnZpY2VzIzgxLjExLjIwLjAwLjAwCi11bnNwc2M3IzgxLjExLjIwLjAzLjAwI0RhdGEgY2VudGVyIHNlcnZpY2VzIzgxLjExLjIwLjAwLjAwCi11bnNwc2M3IzgxLjExLjIwLjA0LjAwI0Rpc2FzdGVyIHJlY292ZXJ5IHNlcnZpY2VzIzgxLjExLjIwLjAwLjAwCi11bnNwc2M3IzgxLjExLjIwLjA1LjAwI0RvY3VtZW50IHNjYW5uaW5nIHNlcnZpY2UjODEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjODEuMTEuMjAuMDYuMDAjRGF0YSBzdG9yYWdlIHNlcnZpY2UjODEuMTEuMjAuMDAuMDAKLXVuc3BzYzcjODEuMTEuMjAuMDcuMDAjQ29udGVudCBvciBkYXRhIHN0YW5kYXJkaXphdGlvbiBzZXJ2aWNlcyM4MS4xMS4yMC4wMC4wMAotdW5zcHNjNyM4MS4xMS4yMS4wMC4wMCNJbnRlcm5ldCBzZXJ2aWNlcyM4MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMS4yMS4wMS4wMCNJbnRlcm5ldCBzZXJ2aWNlIHByb3ZpZGVycyAoSVNQKSM4MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM4MS4xMS4yMS4wMi4wMCNFbGVjdHJvbmljIG1haWwgc2VydmljZSBwcm92aWRlciM4MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM4MS4xMS4yMS4wMy4wMCNXb3JsZCB3aWRlIHdlYiAoV1dXKSBzaXRlIGRlc2lnbiBzZXJ2aWNlcyM4MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM4MS4xMS4yMS4wNC4wMCNXZWIgc2VhcmNoIGVuZ2luZSBwcm92aWRlcnMjODEuMTEuMjEuMDAuMDAKLXVuc3BzYzcjODEuMTEuMjEuMDUuMDAjV29ybGQgd2lkZSB3ZWIgKFdXVykgc2l0ZSBvcGVyYXRpb24gKGhvc3QpIHNlcnZpY2VzIzgxLjExLjIxLjAwLjAwCi11bnNwc2M3IzgxLjExLjIxLjA2LjAwI0FwcGxpY2F0aW9uIHNlcnZpY2UgcHJvdmlkZXJzIzgxLjExLjIxLjAwLjAwCi11bnNwc2M3IzgxLjExLjIxLjA3LjAwI0ludGVybmV0IGRvbWFpbiBuYW1lcyM4MS4xMS4yMS4wMC4wMAotdW5zcHNjNyM4MS4xMS4yMi4wMC4wMCNTb2Z0d2FyZSBtYWludGVuYW5jZSBhbmQgc3VwcG9ydCM4MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMS4yMi4wMS4wMCNNYWludGVuYW5jZSBhbmQgc3VwcG9ydCBmZWVzIzgxLjExLjIyLjAwLjAwCi11bnNwc2M3IzgxLjExLjIyLjAyLjAwI1NvZnR3YXJlIHBhdGNoZXMgb3IgdXBncmFkZXMjODEuMTEuMjIuMDAuMDAKLXVuc3BzYzcjODEuMTIuMDAuMDAuMDAjRWNvbm9taWNzIzgxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzgxLjEyLjE1LjAwLjAwI0Vjb25vbWljIGFuYWx5c2lzIzgxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzgxLjEyLjE1LjAxLjAwI01hY3JvIGVjb25vbWljIGFuYWx5c2lzIzgxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzgxLjEyLjE1LjAyLjAwI01pY3JvIGVjb25vbWljIGFuYWx5c2lzIzgxLjEyLjE1LjAwLjAwCi11bnNwc2M3IzgxLjEyLjE1LjAzLjAwI0Vjb25vbWV0cmljcyM4MS4xMi4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMi4xNS4wNC4wMCNFY29ub21pYyBmb3JlY2FzdHMjODEuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTIuMTYuMDAuMDAjTW9uZXRhcnkgc3lzdGVtcyBhbmQgaXNzdWVzIzgxLjEyLjAwLjAwLjAwCi11bnNwc2M3IzgxLjEyLjE2LjAxLjAwI01vbmV0YXJ5IHBvbGljeSM4MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM4MS4xMi4xNi4wMi4wMCNNb25ldGFyeSBzeXN0ZW1zIzgxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgxLjEyLjE2LjAzLjAwI01vbmV0YXJ5IGFuYWx5c2lzIzgxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgxLjEyLjE2LjA0LjAwI01vbmV0YXJ5IGxpcXVpZGl0eSM4MS4xMi4xNi4wMC4wMAotdW5zcHNjNyM4MS4xMi4xNi4wNS4wMCNQcmVjaW91cyBtZXRhbHMgcmVzZXJ2ZXMjODEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTIuMTYuMDYuMDAjRm9yZWlnbiBleGNoYW5nZSBjb250cm9sIzgxLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgxLjEyLjE2LjA3LjAwI0N1cnJlbmN5IGV4Y2hhbmdlIG1hcmtldHMjODEuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTMuMDAuMDAuMDAjU3RhdGlzdGljcyM4MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xMy4xNS4wMC4wMCNNZXRob2RvbG9neSBhbmQgYW5hbHlzaXMjODEuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODEuMTMuMTUuMDEuMDAjRmFjdG9yIGFuYWx5c2lzIzgxLjEzLjE1LjAwLjAwCi11bnNwc2M3IzgxLjEzLjE1LjAyLjAwI011bHRpdmFyaWF0ZSBhbmFseXNpcyM4MS4xMy4xNS4wMC4wMAotdW5zcHNjNyM4MS4xMy4xNS4wMy4wMCNSZWdyZXNzaW9uIGFuYWx5c2lzIzgxLjEzLjE1LjAwLjAwCi11bnNwc2M3IzgxLjEzLjE1LjA0LjAwI1NhbXBsaW5nIHN1cnZleXMjODEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTMuMTUuMDUuMDAjVGltZSBzZXJpZXMgYW5hbHlzaXMjODEuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTQuMDAuMDAuMDAjTWFudWZhY3R1cmluZyB0ZWNobm9sb2dpZXMjODEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODEuMTQuMTUuMDAuMDAjUXVhbGl0eSBjb250cm9sIzgxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzgxLjE0LjE1LjAxLjAwI01hdGVyaWFscyB0ZXN0aW5nIzgxLjE0LjE1LjAwLjAwCi11bnNwc2M3IzgxLjE0LjE1LjAyLjAwI01hdGVyaWFscyBzeW50aGVzaXMjODEuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTQuMTUuMDMuMDAjTWF0ZXJpYWxzIGluc3BlY3Rpb24jODEuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTQuMTUuMDQuMDAjRXF1aXBtZW50IHRlc3Qgb3IgY2FsaWJyYXRpb24jODEuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTQuMTUuMDUuMDAjUHJvZHVjdGlvbiBzdGFuZGFyZHMgZGV2ZWxvcG1lbnQjODEuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODEuMTQuMTUuMDYuMDAjUHJvZHVjdCB0ZXN0aW5nIzgxLjE0LjE1LjAwLjAwCi11bnNwc2M3IzgxLjE0LjE2LjAwLjAwI1N1cHBseSBjaGFpbiBtYW5hZ2VtZW50IzgxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzgxLjE0LjE2LjAxLjAwI0xvZ2lzdGljcyM4MS4xNC4xNi4wMC4wMAotdW5zcHNjNyM4MS4xNC4xNi4wMi4wMCNUcmFuc2l0IGFuYWx5c2lzIzgxLjE0LjE2LjAwLjAwCi11bnNwc2M3IzgxLjE0LjE2LjAzLjAwI1RyYW5zcG9ydCBmaW5hbmNlIG9yIGVjb25vbWljcyM4MS4xNC4xNi4wMC4wMAotdW5zcHNjNyM4MS4xNC4xNi4wNC4wMCNUcmFuc3BvcnQgZmFjaWxpdGF0aW9uIzgxLjE0LjE2LjAwLjAwCi11bnNwc2M3IzgxLjE0LjE2LjA1LjAwI1RyYW5zcG9ydCBpbmZyYXN0cnVjdHVyZSM4MS4xNC4xNi4wMC4wMAotdW5zcHNjNyM4MS4xNC4xNi4wNi4wMCNUcmFuc3BvcnQgcGxhbm5pbmcjODEuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTQuMTcuMDAuMDAjUHJvZHVjdGlvbiBwbGFubmluZyBhbmQgY29udHJvbCM4MS4xNC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xNC4xNy4wMS4wMCNQcm9kdWN0aW9uIHBsYW5uaW5nIzgxLjE0LjE3LjAwLjAwCi11bnNwc2M3IzgxLjE0LjE3LjAyLjAwI1Byb2R1Y3Rpb24gY29udHJvbCM4MS4xNC4xNy4wMC4wMAotdW5zcHNjNyM4MS4xNC4xNy4wMy4wMCNQcm9kdWN0aW9uIHNjaGVkdWxpbmcjODEuMTQuMTcuMDAuMDAKLXVuc3BzYzcjODEuMTQuMTcuMDQuMDAjUHJvZHVjdGlvbiBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gb3IgYW5hbHlzaXMgc2VydmljZXMjODEuMTQuMTcuMDAuMDAKLXVuc3BzYzcjODEuMTQuMTguMDAuMDAjRmFjaWxpdGllcyBtYW5hZ2VtZW50IzgxLjE0LjAwLjAwLjAwCi11bnNwc2M3IzgxLjE0LjE4LjAxLjAwI1NhZmV0eSBvciByaXNrIGFuYWx5c2lzIzgxLjE0LjE4LjAwLjAwCi11bnNwc2M3IzgxLjE0LjE4LjAyLjAwI0luZHVzdHJpYWwgaHlnaWVuZSBvciB2ZW50aWxhdGlvbiM4MS4xNC4xOC4wMC4wMAotdW5zcHNjNyM4MS4xNC4xOC4wMy4wMCNBY291c3RpY3Mgb3Igbm9pc2UgY29udHJvbCM4MS4xNC4xOC4wMC4wMAotdW5zcHNjNyM4MS4xNC4xOC4wNC4wMCNFcXVpcG1lbnQgaW5zcGVjdGlvbiBzZXJ2aWNlIzgxLjE0LjE4LjAwLjAwCi11bnNwc2M3IzgxLjE0LjE4LjA1LjAwI0J1aWxkaW5nIGluc3BlY3Rpb24gc2VydmljZSM4MS4xNC4xOC4wMC4wMAotdW5zcHNjNyM4MS4xNC4xOC4wNi4wMCNQb3dlciBsaW5lIGluc3BlY3Rpb24gc2VydmljZSM4MS4xNC4xOC4wMC4wMAotdW5zcHNjNyM4MS4xNC4xOC4wNy4wMCNQbHVtYmluZyBvciBzZXdlciBpbnNwZWN0aW9uIHNlcnZpY2UjODEuMTQuMTguMDAuMDAKLXVuc3BzYzcjODEuMTUuMDAuMDAuMDAjRWFydGggc2NpZW5jZSBzZXJ2aWNlcyM4MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM4MS4xNS4xNS4wMC4wMCNNZXRlb3JvbG9neSM4MS4xNS4wMC4wMC4wMAotdW5zcHNjNyM4MS4xNS4xNS4wMS4wMCNDbGltYXRvbG9neSM4MS4xNS4xNS4wMC4wMAotdW5zcHNjNyM4MS4xNS4xNS4wMi4wMCNNZXRlb3JvbG9naWNhbCBzZXJ2aWNlcyM4MS4xNS4xNS4wMC4wMAotdW5zcHNjNyM4MS4xNS4xNS4wMy4wMCNIeWRyb21ldGVvcm9sb2d5IzgxLjE1LjE1LjAwLjAwCi11bnNwc2M3IzgxLjE1LjE2LjAwLjAwI0NhcnRvZ3JhcGh5IzgxLjE1LjAwLjAwLjAwCi11bnNwc2M3IzgxLjE1LjE2LjAxLjAwI01hcHBpbmcjODEuMTUuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTUuMTYuMDIuMDAjTWFwIHByb2R1Y3Rpb24jODEuMTUuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTUuMTYuMDMuMDAjUGhvdG9ncmFtbWV0cnkjODEuMTUuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTUuMTYuMDQuMDAjTGFuZCBzdXJ2ZXlpbmcjODEuMTUuMTYuMDAuMDAKLXVuc3BzYzcjODEuMTUuMTcuMDAuMDAjR2VvbG9neSM4MS4xNS4wMC4wMC4wMAotdW5zcHNjNyM4MS4xNS4xNy4wMS4wMCNQaG90b2dlb2xvZ3kjODEuMTUuMTcuMDAuMDAKLXVuc3BzYzcjODEuMTUuMTcuMDIuMDAjU3RyYXRpZ3JhcGhpYyBnZW9sb2d5IzgxLjE1LjE3LjAwLjAwCi11bnNwc2M3IzgxLjE1LjE3LjAzLjAwI0dlb2xvZ2ljYWwgc3VydmV5cyM4MS4xNS4xNy4wMC4wMAotdW5zcHNjNyM4MS4xNS4xNy4wNC4wMCNHZW9sb2dpY2FsIGV4cGxvcmF0aW9uIzgxLjE1LjE3LjAwLjAwCi11bnNwc2M3IzgxLjE1LjE3LjA1LjAwI0FyY2hhZW9sb2dpY2FsIHNlcnZpY2VzIzgxLjE1LjE3LjAwLjAwCi11bnNwc2M3IzgxLjE1LjE4LjAwLjAwI09jZWFub2dyYXBoeSBhbmQgaHlkcm9sb2d5IzgxLjE1LjAwLjAwLjAwCi11bnNwc2M3IzgxLjE1LjE4LjAxLjAwI09jZWFub2dyYXBoaWMgc3VydmV5IzgxLjE1LjE4LjAwLjAwCi11bnNwc2M3IzgxLjE1LjE4LjAyLjAwI0VzdHVhcmluZSBvY2Vhbm9ncmFwaHkjODEuMTUuMTguMDAuMDAKLXVuc3BzYzcjODEuMTUuMTguMDMuMDAjUGh5c2ljYWwgb2NlYW5vZ3JhcGh5IzgxLjE1LjE4LjAwLjAwCi11bnNwc2M3IzgxLjE1LjE4LjA0LjAwI0h5ZHJvbG9naWNhbCBzdXJ2ZXlzIzgxLjE1LjE4LjAwLjAwCi11bnNwc2M3IzgxLjE1LjE4LjA1LjAwI0JhdGh5bWV0cmljIHN1cnZleXMjODEuMTUuMTguMDAuMDAKLXVuc3BzYzcjODEuMTUuMTguMDYuMDAjVW5kZXJ3YXRlciBleHBsb3JhdGlvbiM4MS4xNS4xOC4wMC4wMAotdW5zcHNjNyM4MS4xNS4xOS4wMC4wMCNHZW9waHlzaWNzIzgxLjE1LjAwLjAwLjAwCi11bnNwc2M3IzgxLjE1LjE5LjAxLjAwI0dlb3BoeXNpY2FsIHN1cnZleXMjODEuMTUuMTkuMDAuMDAKLXVuc3BzYzcjODEuMTUuMTkuMDIuMDAjR2VvcGh5c2ljYWwgZXhwbG9yYXRpb24jODEuMTUuMTkuMDAuMDAKLXVuc3BzYzcjODEuMTUuMTkuMDMuMDAjR2VvcGh5c2ljYWwgcGhvdG8gaW50ZXJwcmV0YXRpb24jODEuMTUuMTkuMDAuMDAKLXVuc3BzYzcjODEuMTUuMTkuMDQuMDAjQWVybyBtYWduZXRpYyBnZW9waHlzaWNzIzgxLjE1LjE5LjAwLjAwCi11bnNwc2M3IzgyLjAwLjAwLjAwLjAwI0VkaXRvcmlhbCBhbmQgRGVzaWduIGFuZCBHcmFwaGljIGFuZCBGaW5lIEFydCBTZXJ2aWNlcyM4Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xMC4wMC4wMC4wMCNBZHZlcnRpc2luZyM4Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xMC4xNS4wMC4wMCNQcmludCBhZHZlcnRpc2luZyM4Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xMC4xNS4wMS4wMCNCaWxsYm9hcmQgYWR2ZXJ0aXNpbmcjODIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTAuMTUuMDIuMDAjUG9zdGVyIGFkdmVydGlzaW5nIzgyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgyLjEwLjE1LjAzLjAwI01hZ2F6aW5lIGFkdmVydGlzaW5nIzgyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgyLjEwLjE1LjA0LjAwI05ld3NwYXBlciBhZHZlcnRpc2luZyM4Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xMC4xNS4wNS4wMCNIYW5kYmlsbCBvciBjb3Vwb24gYWR2ZXJ0aXNpbmcjODIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTAuMTUuMDYuMDAjVHJhbnNpdCBhZHZlcnRpc2luZyBzZXJ2aWNlcyM4Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xMC4xNS4wNy4wMCNTaG9wcGluZyBuZXdzIG9yIGFkdmVydGlzaW5nIG9yIGRpc3RyaWJ1dGlvbiBzZXJ2aWNlIzgyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgyLjEwLjE1LjA4LjAwI1llbGxvdyAgcGFnZXMgYWR2ZXJ0aXNpbmcjODIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTAuMTYuMDAuMDAjQnJvYWRjYXN0IGFkdmVydGlzaW5nIzgyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzgyLjEwLjE2LjAxLjAwI1JhZGlvIGFkdmVydGlzaW5nIzgyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzgyLjEwLjE2LjAyLjAwI1RlbGV2aXNpb24gYWR2ZXJ0aXNpbmcjODIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODIuMTAuMTYuMDMuMDAjSW50ZXJuZXQgYWR2ZXJ0aXNpbmcjODIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODIuMTAuMTcuMDAuMDAjQWVyaWFsIGFkdmVydGlzaW5nIzgyLjEwLjAwLjAwLjAwCi11bnNwc2M3IzgyLjEwLjE3LjAxLjAwI0Jhbm5lciBhZHZlcnRpc2luZyBzZXJ2aWNlcyM4Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM4Mi4xMC4xNy4wMi4wMCNTa3l3cml0aW5nIGFkdmVydGlzaW5nIHNlcnZpY2VzIzgyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzgyLjEwLjE4LjAwLjAwI0FkdmVydGlzaW5nIGFnZW5jeSBzZXJ2aWNlcyM4Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xMC4xOC4wMS4wMCNBZHZlcnRpc2luZyBjYW1wYWlnbiBzZXJ2aWNlcyM4Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM4Mi4xMS4wMC4wMC4wMCNXcml0aW5nIGFuZCB0cmFuc2xhdGlvbnMjODIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTUuMDAuMDAjVGVjaG5pY2FsIHdyaXRpbmcjODIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTUuMDEuMDAjSW5zdHJ1Y3Rpb24gd3JpdGluZyBzZXJ2aWNlcyM4Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xMS4xNS4wMi4wMCNNYW51YWwgd3JpdGluZyBzZXJ2aWNlcyM4Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xMS4xNS4wMy4wMCNBY2FkZW1pYyBvciBzY2llbnRpZmljIGFydGljbGUgd3JpdGluZyM4Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xMS4xNi4wMC4wMCNOb24gdGVjaG5pY2FsIHdyaXRpbmcjODIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTYuMDEuMDAjTGV0dGVyIHdyaXRpbmcgc2VydmljZXMjODIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTYuMDIuMDAjUmVzdW1lIHdyaXRpbmcgc2VydmljZXMjODIuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTYuMDMuMDAjQ291cnQgcmVwb3J0aW5nIHNlcnZpY2VzIzgyLjExLjE2LjAwLjAwCi11bnNwc2M3IzgyLjExLjE2LjA0LjAwI1RyYW5zY3JpYmluZyBzZXJ2aWNlcyM4Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM4Mi4xMS4xNy4wMC4wMCNDcmVhdGl2ZSB3cml0aW5nIzgyLjExLjAwLjAwLjAwCi11bnNwc2M3IzgyLjExLjE3LjAxLjAwI0FydGljbGUgd3JpdGVycyBzZXJ2aWNlcyM4Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM4Mi4xMS4xNy4wMi4wMCNCb29rIGF1dGhvcnMgc2VydmljZXMjODIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTcuMDMuMDAjUG9ldHJ5IGF1dGhvcnMgc2VydmljZXMjODIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTcuMDQuMDAjQ29weXdyaXRpbmcjODIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTcuMDUuMDAjU3BlZWNoIHdyaXRpbmcjODIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTguMDAuMDAjRWRpdG9yaWFsIGFuZCBzdXBwb3J0IHNlcnZpY2VzIzgyLjExLjAwLjAwLjAwCi11bnNwc2M3IzgyLjExLjE4LjAxLjAwI0VkaXRpbmcgc2VydmljZXMjODIuMTEuMTguMDAuMDAKLXVuc3BzYzcjODIuMTEuMTguMDIuMDAjRmFjdCBjaGVja2luZyBzZXJ2aWNlcyM4Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM4Mi4xMS4xOC4wMy4wMCNQcm9vZnJlYWRpbmcgc2VydmljZXMjODIuMTEuMTguMDAuMDAKLXVuc3BzYzcjODIuMTEuMTguMDQuMDAjV3JpdHRlbiB0cmFuc2xhdGlvbiBzZXJ2aWNlcyM4Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM4Mi4xMS4xOS4wMC4wMCNOZXdzIGFuZCBwdWJsaWNpdHkgc2VydmljZXMjODIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTkuMDEuMDAjUHJlc3MgcmVsZWFzZSBzZXJ2aWNlcyM4Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM4Mi4xMS4xOS4wMi4wMCNTcGVjaWFsIGludGVyZXN0IG5ld3NsZXR0ZXIgc2VydmljZXMjODIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjODIuMTEuMTkuMDMuMDAjTmV3cyBhZ2VuY3kgd2lyZSBzZXJ2aWNlcyM4Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM4Mi4xMS4xOS4wNC4wMCNOZXdzcGFwZXIgb3IgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWwgZGVsaXZlcnkgc2VydmljZXMjODIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjODIuMTIuMDAuMDAuMDAjUmVwcm9kdWN0aW9uIHNlcnZpY2VzIzgyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzgyLjEyLjE1LjAwLjAwI1ByaW50aW5nIzgyLjEyLjAwLjAwLjAwCi11bnNwc2M3IzgyLjEyLjE1LjAxLjAwI1BsYW5uaW5nIG9yIGxheW91dCBvZiBncmFwaGljIHByb2R1Y3Rpb24jODIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTUuMDIuMDAjVHlwZXNldHRpbmcjODIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTUuMDMuMDAjRGlnaXRhbCBwcmludGluZyM4Mi4xMi4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xMi4xNS4wNC4wMCNMZXR0ZXJwcmVzcyBvciBzY3JlZW4gcHJpbnRpbmcjODIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTUuMDUuMDAjUHJvbW90aW9uYWwgb3IgYWR2ZXJ0aXNpbmcgcHJpbnRpbmcjODIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTUuMDYuMDAjUHVibGljYXRpb24gcHJpbnRpbmcjODIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTUuMDcuMDAjU3RhdGlvbmVyeSBvciBidXNpbmVzcyBmb3JtIHByaW50aW5nIzgyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzgyLjEyLjE1LjA4LjAwI1dyYXAgb3IgdGFnIG9yIGxhYmVsIG9yIHNlYWwgb3IgYmFnIHByaW50aW5nIzgyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzgyLjEyLjE1LjA5LjAwI1NlY3VyaXR5IG9yIGZpbmFuY2lhbCBpbnN0cnVtZW50cyBwcmludGluZyM4Mi4xMi4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xMi4xNS4xMC4wMCNUZXh0aWxlIHByaW50aW5nIzgyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzgyLjEyLjE1LjExLjAwI1RlY2huaWNhbCBtYW51YWwgYW5kIGluc3RydWN0aW9uIHNoZWV0IHByaW50aW5nIzgyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzgyLjEyLjE1LjEyLjAwI0VtYm9zc2luZyM4Mi4xMi4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xMi4xNi4wMC4wMCNFbmdyYXZpbmcjODIuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTYuMDEuMDAjQ3VycmVuY3kgZW5ncmF2aW5nIzgyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgyLjEyLjE2LjAyLjAwI0VuZ3JhdmVkIHJvbGwgcHJpbnRpbmcjODIuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTYuMDMuMDAjTWV0YWwgcGxhdGUgZW5ncmF2aW5nIzgyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgyLjEyLjE3LjAwLjAwI1Bob3RvY29weWluZyM4Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xMi4xNy4wMS4wMCNCbGFjayBhbmQgd2hpdGUgY29weSBvciBjb2xsYXRpbmcgc2VydmljZXMjODIuMTIuMTcuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTcuMDIuMDAjQ29sb3IgY29weSBvciBjb2xsYXRpbmcgc2VydmljZXMjODIuMTIuMTcuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTguMDAuMDAjUHVibGlzaGluZyM4Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xMi4xOC4wMS4wMCNUZXh0Ym9vayBvciByZXNlYXJjaCBwdWJsaXNoaW5nIzgyLjEyLjE4LjAwLjAwCi11bnNwc2M3IzgyLjEyLjE4LjAyLjAwI0F1dGhvciBmdW5kZWQgcHVibGlzaGluZyBzZXJ2aWNlcyM4Mi4xMi4xOC4wMC4wMAotdW5zcHNjNyM4Mi4xMi4xOS4wMC4wMCNCb29rYmluZGluZyM4Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xMi4xOS4wMS4wMCNUaHJlYWQgc3RpdGNoIGJvb2tiaW5kaW5nIzgyLjEyLjE5LjAwLjAwCi11bnNwc2M3IzgyLjEyLjE5LjAyLjAwI1NwaXJhbCBiaW5kaW5nIzgyLjEyLjE5LjAwLjAwCi11bnNwc2M3IzgyLjEyLjE5LjAzLjAwI0dsdWVkIGJpbmRpbmcjODIuMTIuMTkuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTkuMDQuMDAjQ29tYiBvciBjbGFtcCB0eXBlIGJpbmRpbmcjODIuMTIuMTkuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTkuMDUuMDAjQmluZGluZyByZXN0b3JhdGlvbiBvciByZXBhaXIjODIuMTIuMTkuMDAuMDAKLXVuc3BzYzcjODIuMTIuMTkuMDYuMDAjQnJvbnppbmcgb3IgZ2lsZGluZyBvciBlZGdpbmcgb3IgZGVja2xpbmcjODIuMTIuMTkuMDAuMDAKLXVuc3BzYzcjODIuMTMuMDAuMDAuMDAjUGhvdG9ncmFwaGljIHNlcnZpY2VzIzgyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzgyLjEzLjE1LjAwLjAwI0ZpbG0gcHJvY2Vzc2luZyBzZXJ2aWNlcyM4Mi4xMy4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xMy4xNS4wMS4wMCNTdGlsbCBmaWxtIHByb2Nlc3Npbmcgb3IgcmVwcm9kdWN0aW9uIzgyLjEzLjE1LjAwLjAwCi11bnNwc2M3IzgyLjEzLjE1LjAyLjAwI01vdGlvbiBwaWN0dXJlIGZpbG0gcHJvY2Vzc2luZyBvciByZXByb2R1Y3Rpb24jODIuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTMuMTUuMDMuMDAjTWljcm9maWNoZSBzZXJ2aWNlcyM4Mi4xMy4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xMy4xNS4wNC4wMCNDb2xvciBzZXBhcmF0aW9uIzgyLjEzLjE1LjAwLjAwCi11bnNwc2M3IzgyLjEzLjE2LjAwLjAwI1Bob3RvZ3JhcGhlcnMgYW5kIGNpbmVtYXRvZ3JhcGhlcnMjODIuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODIuMTMuMTYuMDEuMDAjQWVyaWFsIHBob3RvZ3JhcGh5IHNlcnZpY2VzIzgyLjEzLjE2LjAwLjAwCi11bnNwc2M3IzgyLjEzLjE2LjAyLjAwI01vdGlvbiBwaWN0dXJlIGNpbmVtYXRvZ3JhcGh5IzgyLjEzLjE2LjAwLjAwCi11bnNwc2M3IzgyLjEzLjE2LjAzLjAwI1ZpZGVvIHByb2R1Y3Rpb24gc2VydmljZXMjODIuMTMuMTYuMDAuMDAKLXVuc3BzYzcjODIuMTMuMTYuMDQuMDAjU3R1ZGlvIHBob3RvZ3JhcGh5IHNlcnZpY2VzIG9yIHN0aWxsIHBob3RvZ3JhcGhzIzgyLjEzLjE2LjAwLjAwCi11bnNwc2M3IzgyLjE0LjAwLjAwLjAwI0dyYXBoaWMgZGVzaWduIzgyLjAwLjAwLjAwLjAwCi11bnNwc2M3IzgyLjE0LjE1LjAwLjAwI0FydCBkZXNpZ24gc2VydmljZXMjODIuMTQuMDAuMDAuMDAKLXVuc3BzYzcjODIuMTQuMTUuMDEuMDAjTGF5b3V0IG9yIGdyYXBoaWNzIGVkaXRpbmcgc2VydmljZXMjODIuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTQuMTUuMDIuMDAjQXJ0IGRlc2lnbiBvciBncmFwaGljcyM4Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xNC4xNS4wMy4wMCNQaG90b2NvbXBvc2l0aW9uIzgyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzgyLjE0LjE1LjA0LjAwI0NoYXJ0IG9yIGdyYXBoIGRlc2lnbiBzZXJ2aWNlcyM4Mi4xNC4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xNC4xNS4wNS4wMCNDb21wdXRlciBnZW5lcmF0ZWQgZGVzaWduIHNlcnZpY2VzIzgyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzgyLjE0LjE1LjA2LjAwI1BhY2thZ2UgZGVzaWduIHNlcnZpY2VzIzgyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzgyLjE0LjE1LjA3LjAwI1NpbGtzY3JlZW4gZGVzaWduIHNlcnZpY2VzIzgyLjE0LjE1LjAwLjAwCi11bnNwc2M3IzgyLjE0LjE2LjAwLjAwI0dyYXBoaWMgZGlzcGxheSBzZXJ2aWNlcyM4Mi4xNC4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xNC4xNi4wMS4wMCNQaG90b2dyYXBoaWMgb3IgcGljdHVyZSBtb3VudGluZyBvciBmcmFtaW5nIHNlcnZpY2VzIzgyLjE0LjE2LjAwLjAwCi11bnNwc2M3IzgyLjE0LjE2LjAyLjAwI0FydGljbGUgZGlzcGxheSBhcnJhbmdlbWVudCM4Mi4xNC4xNi4wMC4wMAotdW5zcHNjNyM4Mi4xNS4wMC4wMC4wMCNQcm9mZXNzaW9uYWwgYXJ0aXN0cyBhbmQgcGVyZm9ybWVycyM4Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xNS4xNS4wMC4wMCNWaXN1YWwgYXJ0IHNlcnZpY2VzIzgyLjE1LjAwLjAwLjAwCi11bnNwc2M3IzgyLjE1LjE1LjAxLjAwI1BhaW50ZXJzIHNlcnZpY2VzIzgyLjE1LjE1LjAwLjAwCi11bnNwc2M3IzgyLjE1LjE1LjAyLjAwI0xpdGhvZ3JhcGhlcnMgc2VydmljZXMjODIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTUuMTUuMDMuMDAjQ2FydG9vbmlzdHMgc2VydmljZXMjODIuMTUuMTUuMDAuMDAKLXVuc3BzYzcjODIuMTUuMTUuMDQuMDAjU2N1bHB0b3JzIHNlcnZpY2VzIzgyLjE1LjE1LjAwLjAwCi11bnNwc2M3IzgyLjE1LjE1LjA1LjAwI0NlcmFtaWNzIG1ha2VycyBzZXJ2aWNlcyM4Mi4xNS4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xNS4xNS4wNi4wMCNHbGFzcyBibG93ZXJzIHNlcnZpY2VzIzgyLjE1LjE1LjAwLjAwCi11bnNwc2M3IzgyLjE1LjE1LjA3LjAwI1RleHRpbGUgc3Bpbm5lcnMgb3IgbG9vbWVycyBvciB3ZWF2ZXJzIHNlcnZpY2VzIzgyLjE1LjE1LjAwLjAwCi11bnNwc2M3IzgyLjE1LjE1LjA4LjAwI1RheGlkZXJteSBzZXJ2aWNlcyM4Mi4xNS4xNS4wMC4wMAotdW5zcHNjNyM4Mi4xNS4xNi4wMC4wMCNDaXJjdXMgcGVyZm9ybWVycyM4Mi4xNS4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xNS4xNi4wMS4wMCNBbmltYWwgdHJhaW5lcnMgc2VydmljZXMjODIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjODIuMTUuMTYuMDIuMDAjQWNyb2JhdHMgc2VydmljZXMjODIuMTUuMTYuMDAuMDAKLXVuc3BzYzcjODIuMTUuMTYuMDMuMDAjTWFnaWNpYW5zIHNlcnZpY2VzIzgyLjE1LjE2LjAwLjAwCi11bnNwc2M3IzgyLjE1LjE2LjA0LjAwI0Nsb3ducyBzZXJ2aWNlcyM4Mi4xNS4xNi4wMC4wMAotdW5zcHNjNyM4Mi4xNS4xNy4wMC4wMCNQZXJmb3JtaW5nIGFydHMgcHJvZmVzc2lvbmFscyM4Mi4xNS4wMC4wMC4wMAotdW5zcHNjNyM4Mi4xNS4xNy4wMS4wMCNBY3Rpbmcgc2VydmljZXMjODIuMTUuMTcuMDAuMDAKLXVuc3BzYzcjODIuMTUuMTcuMDIuMDAjQ29tZWRpYW5zIHNlcnZpY2VzIzgyLjE1LjE3LjAwLjAwCi11bnNwc2M3IzgyLjE1LjE3LjAzLjAwI0RhbmNlcnMgc2VydmljZXMjODIuMTUuMTcuMDAuMDAKLXVuc3BzYzcjODIuMTUuMTcuMDQuMDAjTXVzaWNpYW5zIHNlcnZpY2VzIzgyLjE1LjE3LjAwLjAwCi11bnNwc2M3IzgyLjE1LjE3LjA1LjAwI1ZvY2FsaXN0cyBzZXJ2aWNlcyM4Mi4xNS4xNy4wMC4wMAotdW5zcHNjNyM4Mi4xNS4xNy4wNi4wMCNDaG9yZW9ncmFwaGljIHNlcnZpY2VzIzgyLjE1LjE3LjAwLjAwCi11bnNwc2M3IzgzLjAwLjAwLjAwLjAwI1B1YmxpYyBVdGlsaXRpZXMgYW5kIFB1YmxpYyBTZWN0b3IgUmVsYXRlZCBTZXJ2aWNlcyM4My4wMC4wMC4wMC4wMAotdW5zcHNjNyM4My4xMC4wMC4wMC4wMCNVdGlsaXRpZXMjODMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODMuMTAuMTUuMDAuMDAjV2F0ZXIgYW5kIHNld2VyIHV0aWxpdGllcyM4My4xMC4wMC4wMC4wMAotdW5zcHNjNyM4My4xMC4xNS4wMS4wMCNTdXBwbHkgb2Ygd2F0ZXIjODMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODMuMTAuMTUuMDIuMDAjV2F0ZXIgcmVzb3VyY2UgbWFuYWdlbWVudCM4My4xMC4xNS4wMC4wMAotdW5zcHNjNyM4My4xMC4xNS4wMy4wMCNXYXRlciBxdWFsaXR5IGNvbnRyb2wgbWFuYWdlbWVudCM4My4xMC4xNS4wMC4wMAotdW5zcHNjNyM4My4xMC4xNS4wNC4wMCNXYXRlciBkaXN0cmlidXRpb24gbWFuYWdlbWVudCM4My4xMC4xNS4wMC4wMAotdW5zcHNjNyM4My4xMC4xNS4wNS4wMCNXYXRlciBwb2xpY3kgYWR2aXNvcnkgc2VydmljZXMjODMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODMuMTAuMTUuMDYuMDAjV2F0ZXIgdHJlYXRtZW50IHNlcnZpY2VzIzgzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgzLjEwLjE1LjA3LjAwI0Rlc2FsaW5hdGlvbiBzZXJ2aWNlcyM4My4xMC4xNS4wMC4wMAotdW5zcHNjNyM4My4xMC4xNS4wOC4wMCNUb3duIHdhdGVyIzgzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzgzLjEwLjE1LjA5LjAwI1NlcnZpY2Ugd2F0ZXIjODMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODMuMTAuMTUuMTAuMDAjQ2hpbGxlZCB3YXRlciM4My4xMC4xNS4wMC4wMAotdW5zcHNjNyM4My4xMC4xNi4wMC4wMCNPaWwgYW5kIGdhcyB1dGlsaXRpZXMjODMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjODMuMTAuMTYuMDEuMDAjU3VwcGx5IG9mIG5hdHVyYWwgZ2FzIzgzLjEwLjE2LjAwLjAwCi11bnNwc2M3IzgzLjEwLjE2LjAyLjAwI1N1cHBseSBvZiBmdWVsIG9pbCM4My4xMC4xNi4wMC4wMAotdW5zcHNjNyM4My4xMC4xNi4wMy4wMCNPaWwgcGlwZWxpbmUgc2VydmljZXMjODMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODMuMTAuMTYuMDQuMDAjR2FzIHBpcGVsaW5lIHNlcnZpY2VzIzgzLjEwLjE2LjAwLjAwCi11bnNwc2M3IzgzLjEwLjE2LjA1LjAwI0dhcyBmYWNpbGl0eSBjaGFyZ2UjODMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODMuMTAuMTguMDAuMDAjRWxlY3RyaWMgdXRpbGl0aWVzIzgzLjEwLjAwLjAwLjAwCi11bnNwc2M3IzgzLjEwLjE4LjAxLjAwI1N1cHBseSBvZiBzaW5nbGUgcGhhc2UgZWxlY3RyaWNpdHkjODMuMTAuMTguMDAuMDAKLXVuc3BzYzcjODMuMTAuMTguMDIuMDAjU3VwcGx5IG9mIHR3byBwaGFzZSBlbGVjdHJpY2l0eSM4My4xMC4xOC4wMC4wMAotdW5zcHNjNyM4My4xMC4xOC4wMy4wMCNTdXBwbHkgb2YgdGhyZWUgcGhhc2UgZWxlY3RyaWNpdHkjODMuMTAuMTguMDAuMDAKLXVuc3BzYzcjODMuMTAuMTguMDQuMDAjRWxlY3RyaWMgcG93ZXIgdHJhbnNtaXNzaW9uIHNlcnZpY2VzIzgzLjEwLjE4LjAwLjAwCi11bnNwc2M3IzgzLjEwLjE4LjA1LjAwI0luZHVzdHJpYWwgZWxlY3RyaWMgcG93ZXIgZGlzdHJpYnV0aW9uIzgzLjEwLjE4LjAwLjAwCi11bnNwc2M3IzgzLjEwLjE4LjA2LjAwI1J1cmFsIGVsZWN0cmljYWwgcG93ZXIgZGlzdHJpYnV0aW9uIzgzLjEwLjE4LjAwLjAwCi11bnNwc2M3IzgzLjEwLjE4LjA3LjAwI011bmljaXBhbCBlbGVjdHJpYyBwb3dlciBkaXN0cmlidXRpb24jODMuMTAuMTguMDAuMDAKLXVuc3BzYzcjODMuMTAuMTkuMDAuMDAjRW5lcmd5IGNvbnNlcnZhdGlvbiM4My4xMC4wMC4wMC4wMAotdW5zcHNjNyM4My4xMC4xOS4wMS4wMCNFbmVyZ3kgY29uc2VydmF0aW9uIHByb2dyYW1zIzgzLjEwLjE5LjAwLjAwCi11bnNwc2M3IzgzLjEwLjE5LjAyLjAwI0VuZXJneSB1c2UgcmVkdWN0aW9uIG1lYXN1cmVzIzgzLjEwLjE5LjAwLjAwCi11bnNwc2M3IzgzLjEwLjIwLjAwLjAwI0Z1bmVyYWwgc2VydmljZXMjODMuMTAuMDAuMDAuMDAKLXVuc3BzYzcjODMuMTAuMjAuMDEuMDAjR3JhdmUgZGlnZ2luZyM4My4xMC4yMC4wMC4wMAotdW5zcHNjNyM4My4xMS4wMC4wMC4wMCNUZWxlY29tbXVuaWNhdGlvbnMgbWVkaWEgc2VydmljZXMjODMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODMuMTEuMTUuMDAuMDAjTG9jYWwgYW5kIGxvbmcgZGlzdGFuY2UgdGVsZXBob25lIGNvbW11bmljYXRpb25zIzgzLjExLjAwLjAwLjAwCi11bnNwc2M3IzgzLjExLjE1LjAxLjAwI0xvY2FsIHRlbGVwaG9uZSBzZXJ2aWNlIzgzLjExLjE1LjAwLjAwCi11bnNwc2M3IzgzLjExLjE1LjAyLjAwI0xvbmcgZGlzdGFuY2UgdGVsZXBob25lIHNlcnZpY2VzIzgzLjExLjE1LjAwLjAwCi11bnNwc2M3IzgzLjExLjE1LjAzLjAwI1BheSBwaG9uZSBwcm92aWRlciBzZXJ2aWNlcyM4My4xMS4xNS4wMC4wMAotdW5zcHNjNyM4My4xMS4xNS4wNC4wMCNQcmUgcGFpZCBwaG9uZSBjYXJkIHNlcnZpY2VzIzgzLjExLjE1LjAwLjAwCi11bnNwc2M3IzgzLjExLjE1LjA1LjAwI0RpcmVjdG9yeSBhc3Npc3RhbmNlIHNlcnZpY2VzIzgzLjExLjE1LjAwLjAwCi11bnNwc2M3IzgzLjExLjE1LjA2LjAwI0NvbmZlcmVuY2UgY2FsbGluZyBzZXJ2aWNlcyM4My4xMS4xNS4wMC4wMAotdW5zcHNjNyM4My4xMS4xNS4wNy4wMCNDYWxsIGNlbnRyZSBidXJlYXUgc2VydmljZXMjODMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODMuMTEuMTUuMDguMDAjVG9sbCBmcmVlIGluYm91bmQgdGVsZXBob25lIHNlcnZpY2UjODMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODMuMTEuMTUuMDkuMDAjVGVsZXBob25lIGVxdWlwbWVudCByZXBhaXIgc2VydmljZXMjODMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODMuMTEuMTYuMDAuMDAjTW9iaWxlIGNvbW11bmljYXRpb25zIHNlcnZpY2VzIzgzLjExLjAwLjAwLjAwCi11bnNwc2M3IzgzLjExLjE2LjAxLjAwI1RlbGVjb21tdW5pY2F0aW9uIHNpZ25hbCBlbmhhbmNlbWVudCBuZXR3b3JrIHNlcnZpY2VzIzgzLjExLjE2LjAwLjAwCi11bnNwc2M3IzgzLjExLjE2LjAyLjAwI1NhdGVsbGl0ZSBvciBlYXJ0aCBjb21tdW5pY2F0aW9uIHN5c3RlbXMgc2VydmljZXMjODMuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODMuMTEuMTYuMDMuMDAjQ2VsbHVsYXIgdGVsZXBob25lIHNlcnZpY2VzIzgzLjExLjE2LjAwLjAwCi11bnNwc2M3IzgzLjExLjE2LjA0LjAwI1BhZ2luZyBzZXJ2aWNlcyM4My4xMS4xNi4wMC4wMAotdW5zcHNjNyM4My4xMS4xNy4wMC4wMCNGYWNzaW1pbGUgYW5kIHRlbGVncmFwaCBzZXJ2aWNlcyM4My4xMS4wMC4wMC4wMAotdW5zcHNjNyM4My4xMS4xNy4wMS4wMCNGYWNzaW1pbGUgdHJhbnNtaXNzaW9uIHNlcnZpY2VzIzgzLjExLjE3LjAwLjAwCi11bnNwc2M3IzgzLjExLjE3LjAyLjAwI1RlbGVncmFwaCB0cmFuc21pc3Npb24gc2VydmljZXMjODMuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODMuMTEuMTcuMDMuMDAjVGVsZXggdHJhbnNtaXNzaW9uIHNlcnZpY2VzIzgzLjExLjE3LjAwLjAwCi11bnNwc2M3IzgzLjExLjE4LjAwLjAwI1RlbGV2aXNpb24gc2VydmljZXMjODMuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODMuMTEuMTguMDEuMDAjQ2FibGUgdGVsZXZpc2lvbiBzZXJ2aWNlcyM4My4xMS4xOC4wMC4wMAotdW5zcHNjNyM4My4xMS4xOC4wMi4wMCNDbG9zZWQgY2lyY3VpdCB0ZWxldmlzaW9uIHNlcnZpY2VzIzgzLjExLjE4LjAwLjAwCi11bnNwc2M3IzgzLjExLjE4LjAzLjAwI1RlbGV2aXNpb24gYW50ZW5uYSBjb25zdHJ1Y3Rpb24gb3IgcmVudGFsIHNlcnZpY2VzIzgzLjExLjE4LjAwLjAwCi11bnNwc2M3IzgzLjExLjE4LjA0LjAwI1RlbGV2aXNpb24gYnJvYWRjYXN0aW5nIHN0YXRpb24gbWFuYWdlbWVudCM4My4xMS4xOC4wMC4wMAotdW5zcHNjNyM4My4xMS4xOS4wMC4wMCNSYWRpbyBzZXJ2aWNlcyM4My4xMS4wMC4wMC4wMAotdW5zcHNjNyM4My4xMS4xOS4wMS4wMCNSYWRpbyBicm9hZGNhc3Rpbmcgc3RhdGlvbiBtYW5hZ2VtZW50IzgzLjExLjE5LjAwLjAwCi11bnNwc2M3IzgzLjExLjE5LjAyLjAwI0FtYXRldXIgcmFkaW8gbmV0d29ya3Mgb3Igc2VydmljZXMjODMuMTEuMTkuMDAuMDAKLXVuc3BzYzcjODMuMTEuMTkuMDMuMDAjU21hbGwgc2NhbGUgcmFkaW8gc3lzdGVtcyM4My4xMS4xOS4wMC4wMAotdW5zcHNjNyM4My4xMS4xOS4wNC4wMCNSYWRpbyBzdHVkaW8gb3IgZXF1aXBtZW50IHNlcnZpY2VzIzgzLjExLjE5LjAwLjAwCi11bnNwc2M3IzgzLjExLjIwLjAwLjAwI0ZpYmVyIHRlbGVjb21tdW5pY2F0aW9ucyBzZXJ2aWNlcyM4My4xMS4wMC4wMC4wMAotdW5zcHNjNyM4My4xMS4yMC4wMS4wMCNEYXJrIGZpYmVyIzgzLjExLjIwLjAwLjAwCi11bnNwc2M3IzgzLjExLjIwLjAyLjAwI0RlbnNlIHdhdmVsZW5ndGggZGl2aXNpb24gbXVsdGlwbGV4aW5nIERXRE0jODMuMTEuMjAuMDAuMDAKLXVuc3BzYzcjODMuMTEuMjAuMDMuMDAjV2F2ZSBkaXZpc2lvbiBtdWx0aXBsZXhpbmcgV0RNIzgzLjExLjIwLjAwLjAwCi11bnNwc2M3IzgzLjExLjIwLjA0LjAwI09jeCBvcHRpY2FsIGNhcnJpZXIgc2VydmljZSM4My4xMS4yMC4wMC4wMAotdW5zcHNjNyM4My4xMS4yMS4wMC4wMCNTd2l0Y2hlZCBkaWFsIHVwIGFuZCBsZWFzZWQgZGVkaWNhdGVkIGxpbmUgY2lyY3VpdCB0ZWxlY29tbXVuaWNhdGlvbnMgc2VydmljZXMjODMuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODMuMTEuMjEuMDEuMDAjSGlnaCBzcGVlZCBjaXJjdWl0IHN3aXRjaGVkIGRpYWwgdXAgc2VydmljZXMjODMuMTEuMjEuMDAuMDAKLXVuc3BzYzcjODMuMTEuMjEuMDIuMDAjSVNETiBpbnRlZ3JhdGVkIHNlcnZpY2VzIGRpZ2l0YWwgbmV0d29yayBzZXJ2aWNlcyM4My4xMS4yMS4wMC4wMAotdW5zcHNjNyM4My4xMS4yMS4wMy4wMCNQb2ludCB0byBwb2ludCBkaWdpdGFsIHRlbGVjb21tdW5pY2F0aW9ucyBjaXJjdWl0IzgzLjExLjIxLjAwLjAwCi11bnNwc2M3IzgzLjExLjIxLjA0LjAwI011bHRpIHBvaW50IGFuYWxvZyB0ZWxlY29tbXVuaWNhdGlvbnMgY2lyY3VpdCM4My4xMS4yMS4wMC4wMAotdW5zcHNjNyM4My4xMS4yMS4wNS4wMCNQb2ludCB0byBwb2ludCBhbmFsb2cgdGVsZWNvbW11bmljYXRpb25zIGNpcmN1aXQjODMuMTEuMjEuMDAuMDAKLXVuc3BzYzcjODMuMTEuMjEuMDYuMDAjeERTTCBkaWdpdGFsIHN1YnNjcmliZXIgbGluZSM4My4xMS4yMS4wMC4wMAotdW5zcHNjNyM4My4xMS4yMi4wMC4wMCNFbmhhbmNlZCB0ZWxlY29tbXVuaWNhdGlvbnMgc2VydmljZXMjODMuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODMuMTEuMjIuMDEuMDAjQVRNIGFzeW5jcm9ub3VzIHRyYW5zZmVyIG1vZGUgbWFuYWdlZCBuZXR3b3JrIHNlcnZpY2VzIzgzLjExLjIyLjAwLjAwCi11bnNwc2M3IzgzLjExLjIyLjAyLjAwI0ZyYW1lIHJlbGF5IHB1YmxpYyBtYW5hZ2VkIG5ldHdvcmsgc2VydmljZXMjODMuMTEuMjIuMDAuMDAKLXVuc3BzYzcjODMuMTEuMjIuMDMuMDAjVlBOIHZpcnR1YWwgcHJpdmF0ZSBuZXR3b3JrIG1hbmFnZWQgbmV0d29yayBzZXJ2aWNlcyM4My4xMS4yMi4wMC4wMAotdW5zcHNjNyM4My4xMS4yMi4wNC4wMCNYNzUgbWFuYWdlZCBuZXR3b3JrIHNlcnZpY2VzIzgzLjExLjIyLjAwLjAwCi11bnNwc2M3IzgzLjExLjIyLjA1LjAwI1gyNSBtYW5hZ2VkIG5ldHdvcmsgc2VydmljZXMjODMuMTEuMjIuMDAuMDAKLXVuc3BzYzcjODMuMTIuMDAuMDAuMDAjSW5mb3JtYXRpb24gc2VydmljZXMjODMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODMuMTIuMTUuMDAuMDAjTGlicmFyaWVzIzgzLjEyLjAwLjAwLjAwCi11bnNwc2M3IzgzLjEyLjE1LjAxLjAwI0dlbmVyYWwgbXVuaWNpcGFsIHB1YmxpYyB1c2UgbGlicmFyaWVzIzgzLjEyLjE1LjAwLjAwCi11bnNwc2M3IzgzLjEyLjE1LjAyLjAwI0NvbGxlZ2Ugb3IgdW5pdmVyc2l0eSBsaWJyYXJpZXMjODMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODMuMTIuMTUuMDMuMDAjUHJpdmF0ZWx5IG93bmVkIGxpYnJhcmllcyM4My4xMi4xNS4wMC4wMAotdW5zcHNjNyM4My4xMi4xNS4wNC4wMCNOYXRpb25hbCBnb3Zlcm5tZW50IG9yIG1pbGl0YXJ5IHBvc3QgbGlicmFyaWVzIzgzLjEyLjE1LjAwLjAwCi11bnNwc2M3IzgzLjEyLjE2LjAwLjAwI0luZm9ybWF0aW9uIGNlbnRlcnMjODMuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODMuMTIuMTYuMDEuMDAjQ2hhbWJlcnMgb2YgY29tbWVyY2UjODMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODMuMTIuMTYuMDIuMDAjVG91cmlzbSBib2FyZCBzZXJ2aWNlcyM4My4xMi4xNi4wMC4wMAotdW5zcHNjNyM4My4xMi4xNi4wMy4wMCNDb21wdXRlcml6ZWQgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXMjODMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODMuMTIuMTYuMDQuMDAjT25saW5lIGRhdGFiYXNlIGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zIzgzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgzLjEyLjE2LjA1LjAwI1JlbW90ZSBkYXRhYmFzZSBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc2VydmljZXMjODMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODMuMTIuMTYuMDYuMDAjU2tpcCB0cmFjaW5nIzgzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzgzLjEyLjE3LjAwLjAwI01hc3MgY29tbXVuaWNhdGlvbiBzZXJ2aWNlcyM4My4xMi4wMC4wMC4wMAotdW5zcHNjNyM4My4xMi4xNy4wMS4wMCNUZWxldmlzaW9uIHJlbGF0ZWQgc2VydmljZXMjODMuMTIuMTcuMDAuMDAKLXVuc3BzYzcjODMuMTIuMTcuMDIuMDAjUmFkaW8gcmVsYXRlZCBzZXJ2aWNlcyM4My4xMi4xNy4wMC4wMAotdW5zcHNjNyM4My4xMi4xNy4wMy4wMCNJbnRlcm5ldCByZWxhdGVkIHNlcnZpY2VzIzgzLjEyLjE3LjAwLjAwCi11bnNwc2M3IzgzLjEyLjE3LjA0LjAwI0NpdGl6ZW4gd2FybmluZyBzeXN0ZW1zIzgzLjEyLjE3LjAwLjAwCi11bnNwc2M3Izg0LjAwLjAwLjAwLjAwI0ZpbmFuY2lhbCBhbmQgSW5zdXJhbmNlIFNlcnZpY2VzIzg0LjAwLjAwLjAwLjAwCi11bnNwc2M3Izg0LjEwLjAwLjAwLjAwI0RldmVsb3BtZW50IGZpbmFuY2UjODQuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODQuMTAuMTUuMDAuMDAjRGV2ZWxvcG1lbnQgYXNzaXN0YW5jZSM4NC4xMC4wMC4wMC4wMAotdW5zcHNjNyM4NC4xMC4xNS4wMS4wMCNGaW5hbmNpYWwgYXNzaXN0YW5jZSM4NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMC4xNS4wMi4wMCNTYXZpbmdzIG1vYmlsaXphdGlvbiBwcm9ncmFtcyM4NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMC4xNS4wMy4wMCNHdWFyYW50ZWUgYWdyZWVtZW50cyM4NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMC4xNi4wMC4wMCNBaWQgZmluYW5jaW5nIzg0LjEwLjAwLjAwLjAwCi11bnNwc2M3Izg0LjEwLjE2LjAxLjAwI0NvIGZpbmFuY2luZyM4NC4xMC4xNi4wMC4wMAotdW5zcHNjNyM4NC4xMC4xNi4wMi4wMCNCaSBsYXRlcmFsIG9yIG11bHRpIGxhdGVyYWwgYWlkIzg0LjEwLjE2LjAwLjAwCi11bnNwc2M3Izg0LjEwLjE2LjAzLjAwI05vbiBnb3Zlcm5tZW50YWwgYWlkIzg0LjEwLjE2LjAwLjAwCi11bnNwc2M3Izg0LjEwLjE2LjA0LjAwI0dvdmVybm1lbnQgYWlkIzg0LjEwLjE2LjAwLjAwCi11bnNwc2M3Izg0LjEwLjE3LjAwLjAwI0RlYnQgbWFuYWdlbWVudCM4NC4xMC4wMC4wMC4wMAotdW5zcHNjNyM4NC4xMC4xNy4wMS4wMCNEZWJ0IG5lZ290aWF0aW9uIzg0LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg0LjEwLjE3LjAyLjAwI0RlYnQgcmVvcmdhbml6YXRpb24jODQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODQuMTAuMTcuMDMuMDAjRGVidCBzZXJ2aWNpbmcjODQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODQuMTAuMTcuMDQuMDAjRGVidCBjb2xsZWN0aW9uIHNlcnZpY2VzIzg0LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg0LjEwLjE3LjA1LjAwI1JlcG9zc2Vzc2lvbiBzZXJ2aWNlcyM4NC4xMC4xNy4wMC4wMAotdW5zcHNjNyM4NC4xMS4wMC4wMC4wMCNBY2NvdW50aW5nIGFuZCBhdWRpdGluZyM4NC4wMC4wMC4wMC4wMAotdW5zcHNjNyM4NC4xMS4xNS4wMC4wMCNBY2NvdW50aW5nIHNlcnZpY2VzIzg0LjExLjAwLjAwLjAwCi11bnNwc2M3Izg0LjExLjE1LjAxLjAwI0Nvc3QgYWNjb3VudGluZyM4NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMS4xNS4wMi4wMCNGaW5hbmNpYWwgYWNjb3VudGluZyM4NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMS4xNS4wMy4wMCNUYXggYWNjb3VudGluZyM4NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMS4xNS4wNC4wMCNCb29ra2VlcGluZyBzZXJ2aWNlcyM4NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMS4xNS4wNS4wMCNQYXlyb2xsIGFjY291bnRpbmcgc2VydmljZXMjODQuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODQuMTEuMTUuMDYuMDAjQmlsbGluZyBzZXJ2aWNlcyM4NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMS4xNS4wNy4wMCNJbnZlbnRvcnkgYWNjb3VudGluZyM4NC4xMS4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMS4xNi4wMC4wMCNBdWRpdCBzZXJ2aWNlcyM4NC4xMS4wMC4wMC4wMAotdW5zcHNjNyM4NC4xMS4xNi4wMS4wMCNZZWFyIGVuZCBhdWRpdHMjODQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODQuMTEuMTYuMDIuMDAjUXVhcnRlcmx5IHJldmlld3MjODQuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODQuMTEuMTYuMDMuMDAjSW50ZXJuYWwgYXVkaXRzIzg0LjExLjE2LjAwLjAwCi11bnNwc2M3Izg0LjExLjE3LjAwLjAwI0NvcnBvcmF0ZSBmaW5hbmNlIzg0LjExLjAwLjAwLjAwCi11bnNwc2M3Izg0LjExLjE3LjAxLjAwI1RyZWFzdXJ5IHNlcnZpY2VzIzg0LjExLjE3LjAwLjAwCi11bnNwc2M3Izg0LjExLjE3LjAyLjAwI0ludmVzdG9yIHJlbGF0aW9ucyBzZXJ2aWNlcyBvciBwcm9ncmFtcyM4NC4xMS4xNy4wMC4wMAotdW5zcHNjNyM4NC4xMS4xNy4wMy4wMCNCdWRnZXQgcHJlcGFyYXRpb24gb3IgcmV2aWV3IHNlcnZpY2VzIzg0LjExLjE3LjAwLjAwCi11bnNwc2M3Izg0LjExLjE4LjAwLjAwI1RheGF0aW9uIGlzc3VlcyBhbmQgcHJlcGFyYXRpb24jODQuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODQuMTEuMTguMDEuMDAjVGF4IHByZXBhcmVycyM4NC4xMS4xOC4wMC4wMAotdW5zcHNjNyM4NC4xMS4xOC4wMi4wMCNUYXggYWR2aXNvcnkgc2VydmljZXMjODQuMTEuMTguMDAuMDAKLXVuc3BzYzcjODQuMTIuMDAuMDAuMDAjQmFua2luZyBhbmQgaW52ZXN0bWVudCM4NC4wMC4wMC4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNS4wMC4wMCNCYW5raW5nIGluc3RpdHV0aW9ucyM4NC4xMi4wMC4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNS4wMS4wMCNQcml2YXRlbHkgb3duZWQgYmFua3MjODQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODQuMTIuMTUuMDIuMDAjUHVibGljbHkgb3duZWQgYmFua3MjODQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODQuMTIuMTUuMDMuMDAjQ3JlZGl0IHVuaW9ucyM4NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNS4wNC4wMCNEZXZlbG9wbWVudCBmaW5hbmNlIGluc3RpdHV0aW9ucyM4NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNi4wMC4wMCNGdW5kcyB0cmFuc2ZlciBhbmQgY2xlYXJhbmNlIGFuZCBleGNoYW5nZSBzZXJ2aWNlcyM4NC4xMi4wMC4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNi4wMS4wMCNGdW5kcyBjbGVhcmFuY2Ugc2VydmljZXMjODQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODQuMTIuMTYuMDIuMDAjTGV0dGVyIG9mIGNyZWRpdCBzZXJ2aWNlcyM4NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNi4wMy4wMCNDdXJyZW5jeSBleGNoYW5nZSBzZXJ2aWNlcyM4NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNi4wNC4wMCNTcG90IGV4Y2hhbmdlIHRyYW5zYWN0aW9uIHNlcnZpY2VzIzg0LjEyLjE2LjAwLjAwCi11bnNwc2M3Izg0LjEyLjE2LjA1LjAwI0N1cnJlbmN5IGNvbnZlcnNpb24gc2VydmljZSM4NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNi4wNi4wMCNSZW1pdHRhbmNlIHByb2Nlc3Npbmcgc2VydmljZXMjODQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODQuMTIuMTcuMDAuMDAjSW52ZXN0bWVudCBhZHZpY2UjODQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODQuMTIuMTcuMDEuMDAjSW52ZXN0bWVudCBhZHZpc2VycyM4NC4xMi4xNy4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNy4wMi4wMCNJbnZlc3RtZW50IHBvbGljeSM4NC4xMi4xNy4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNy4wMy4wMCNJbnZlc3RtZW50IGFuYWx5c2lzIzg0LjEyLjE3LjAwLjAwCi11bnNwc2M3Izg0LjEyLjE3LjA0LjAwI0ludmVzdG1lbnQgYWdyZWVtZW50cyM4NC4xMi4xNy4wMC4wMAotdW5zcHNjNyM4NC4xMi4xNy4wNS4wMCNNYXJrZXQgZGF0YSM4NC4xMi4xNy4wMC4wMAotdW5zcHNjNyM4NC4xMi4xOC4wMC4wMCNTZWN1cml0aWVzIGFuZCBjb21tb2RpdGllcyBtYXJrZXRzIHNlcnZpY2VzIzg0LjEyLjAwLjAwLjAwCi11bnNwc2M3Izg0LjEyLjE4LjAxLjAwI1N0b2NrIG1hcmtldCB0cmFkaW5nIHNlcnZpY2VzIzg0LjEyLjE4LjAwLjAwCi11bnNwc2M3Izg0LjEyLjE4LjAyLjAwI0NvbW1vZGl0aWVzIG9yIGZ1dHVyZXMgbWFya2V0IHNlcnZpY2VzIzg0LjEyLjE4LjAwLjAwCi11bnNwc2M3Izg0LjEyLjE4LjAzLjAwI0dvdmVybm1lbnQgYm9uZHMjODQuMTIuMTguMDAuMDAKLXVuc3BzYzcjODQuMTIuMTguMDQuMDAjUHJpdmF0ZWx5IGlzc3VlZCBib25kcyM4NC4xMi4xOC4wMC4wMAotdW5zcHNjNyM4NC4xMi4xOC4wNS4wMCNQcmVjaW91cyBtZXRhbHMgbWFya2V0IHNlcnZpY2VzIzg0LjEyLjE4LjAwLjAwCi11bnNwc2M3Izg0LjEyLjE5LjAwLjAwI01vcnRnYWdlIGJhbmtpbmcjODQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODQuMTIuMTkuMDEuMDAjSG91c2luZyBmaW5hbmNlIzg0LjEyLjE5LjAwLjAwCi11bnNwc2M3Izg0LjEyLjE5LjAyLjAwI1JlIGZpbmFuY2luZyBzZXJ2aWNlcyM4NC4xMi4xOS4wMC4wMAotdW5zcHNjNyM4NC4xMi4xOS4wMy4wMCNDb21tZXJjaWFsIG1vcnRnYWdlIGZpbmFuY2UjODQuMTIuMTkuMDAuMDAKLXVuc3BzYzcjODQuMTIuMjAuMDAuMDAjQ2FzaCB2YXVsdCBzZXJ2aWNlcyM4NC4xMi4wMC4wMC4wMAotdW5zcHNjNyM4NC4xMi4yMC4wMS4wMCNEZXBvc2l0IHZlcmlmaWNhdGlvbiBzZXJ2aWNlcyM4NC4xMi4yMC4wMC4wMAotdW5zcHNjNyM4NC4xMy4wMC4wMC4wMCNJbnN1cmFuY2UgYW5kIHJldGlyZW1lbnQgc2VydmljZXMjODQuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODQuMTMuMTUuMDAuMDAjSW5zdXJhbmNlIHNlcnZpY2VzIGZvciBzdHJ1Y3R1cmVzIGFuZCBwcm9wZXJ0eSBhbmQgcG9zc2Vzc2lvbnMjODQuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODQuMTMuMTUuMDEuMDAjQnVpbGRpbmcgb3IgYnVpbGRpbmcgY29udGVudHMgaW5zdXJhbmNlIzg0LjEzLjE1LjAwLjAwCi11bnNwc2M3Izg0LjEzLjE1LjAyLjAwI0hvbWVvd25lcnMgb3IgcmVudGVycyBpbnN1cmFuY2UjODQuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODQuMTMuMTUuMDMuMDAjQ2FyIG9yIHRydWNrIGluc3VyYW5jZSM4NC4xMy4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMy4xNS4wNC4wMCNDYXJnbyBpbnN1cmFuY2UjODQuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODQuMTMuMTUuMDUuMDAjTWFyaW5lIGluc3VyYW5jZSM4NC4xMy4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMy4xNS4wNi4wMCNSZWluc3VyYW5jZSBzZXJ2aWNlcyM4NC4xMy4xNS4wMC4wMAotdW5zcHNjNyM4NC4xMy4xNi4wMC4wMCNMaWZlIGFuZCBoZWFsdGggYW5kIGFjY2lkZW50IGluc3VyYW5jZSM4NC4xMy4wMC4wMC4wMAotdW5zcHNjNyM4NC4xMy4xNi4wMS4wMCNMaWZlIGluc3VyYW5jZSM4NC4xMy4xNi4wMC4wMAotdW5zcHNjNyM4NC4xMy4xNi4wMi4wMCNIZWFsdGggb3IgaG9zcGl0YWxpemF0aW9uIGluc3VyYW5jZSM4NC4xMy4xNi4wMC4wMAotdW5zcHNjNyM4NC4xMy4xNi4wMy4wMCNBY2NpZGVudGFsIGluanVyeSBpbnN1cmFuY2UjODQuMTMuMTYuMDAuMDAKLXVuc3BzYzcjODQuMTMuMTYuMDQuMDAjRGlzYWJpbGl0eSBpbnN1cmFuY2UjODQuMTMuMTYuMDAuMDAKLXVuc3BzYzcjODQuMTMuMTYuMDUuMDAjV29ya21lbnMgaW5zdXJhbmNlIzg0LjEzLjE2LjAwLjAwCi11bnNwc2M3Izg0LjEzLjE2LjA2LjAwI1VuZW1wbG95bWVudCBpbnN1cmFuY2UjODQuMTMuMTYuMDAuMDAKLXVuc3BzYzcjODQuMTMuMTYuMDcuMDAjTGlhYmlsaXR5IGluc3VyYW5jZSM4NC4xMy4xNi4wMC4wMAotdW5zcHNjNyM4NC4xMy4xNy4wMC4wMCNQZW5zaW9uIGZ1bmRzIzg0LjEzLjAwLjAwLjAwCi11bnNwc2M3Izg0LjEzLjE3LjAxLjAwI0VtcGxveWVyIGFkbWluaXN0ZXJlZCBwZW5zaW9uIGZ1bmRzIzg0LjEzLjE3LjAwLjAwCi11bnNwc2M3Izg0LjEzLjE3LjAyLjAwI1VuaW9uIG9yIGd1aWxkIGFkbWluaXN0ZXJlZCBwZW5zaW9uIGZ1bmRzIzg0LjEzLjE3LjAwLjAwCi11bnNwc2M3Izg0LjEzLjE4LjAwLjAwI1JldGlyZW1lbnQgZnVuZHMjODQuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODQuMTMuMTguMDEuMDAjU2VsZiBkaXJlY3RlZCBvciBlbXBsb3llciBzcG9uc29yZWQgcmV0aXJlbWVudCBmdW5kcyM4NC4xMy4xOC4wMC4wMAotdW5zcHNjNyM4NC4xMy4xOC4wMi4wMCNTZWxmIGRpcmVjdGVkIG9yIHNlbGYgaW5pdGlhdGVkIHJldGlyZW1lbnQgcGxhbnMjODQuMTMuMTguMDAuMDAKLXVuc3BzYzcjODQuMTQuMDAuMDAuMDAjQ3JlZGl0IGFnZW5jaWVzIzg0LjAwLjAwLjAwLjAwCi11bnNwc2M3Izg0LjE0LjE1LjAwLjAwI0dvdmVybm1lbnRhbCBjcmVkaXQgYWdlbmNpZXMjODQuMTQuMDAuMDAuMDAKLXVuc3BzYzcjODQuMTQuMTUuMDEuMDAjRmFybSBjcmVkaXQgc2VydmljZXMjODQuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODQuMTQuMTUuMDIuMDAjU21hbGwgYnVzaW5lc3MgbG9hbiBhZ2VuY2llcyM4NC4xNC4xNS4wMC4wMAotdW5zcHNjNyM4NC4xNC4xNS4wMy4wMCNNaW5vcml0eSBvd25lZCBidXNpbmVzcyBwcm9ncmFtcyM4NC4xNC4xNS4wMC4wMAotdW5zcHNjNyM4NC4xNC4xNi4wMC4wMCNQZXJzb25hbCBjcmVkaXQgYWdlbmNpZXMjODQuMTQuMDAuMDAuMDAKLXVuc3BzYzcjODQuMTQuMTYuMDEuMDAjQ29uc3VtZXIgY3JlZGl0IGdhdGhlcmluZyBvciByZXBvcnRpbmcgc2VydmljZXMjODQuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODQuMTQuMTYuMDIuMDAjQ3JlZGl0IGNhcmQgc2VydmljZSBwcm92aWRlcnMjODQuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODQuMTQuMTcuMDAuMDAjQnVzaW5lc3MgY3JlZGl0IGFnZW5jaWVzIzg0LjE0LjAwLjAwLjAwCi11bnNwc2M3Izg0LjE0LjE3LjAxLjAwI0J1c2luZXNzIGNyZWRpdCBnYXRoZXJpbmcgb3IgcmVwb3J0aW5nIHNlcnZpY2VzIzg0LjE0LjE3LjAwLjAwCi11bnNwc2M3Izg0LjE0LjE3LjAyLjAwI1ZhbHVlIGFkZGVkIG5ldHdvcmsgKFZBTikgc2VydmljZXMjODQuMTQuMTcuMDAuMDAKLXVuc3BzYzcjODUuMDAuMDAuMDAuMDAjSGVhbHRoY2FyZSBTZXJ2aWNlcyM4NS4wMC4wMC4wMC4wMAotdW5zcHNjNyM4NS4xMC4wMC4wMC4wMCNDb21wcmVoZW5zaXZlIGhlYWx0aCBzZXJ2aWNlcyM4NS4wMC4wMC4wMC4wMAotdW5zcHNjNyM4NS4xMC4xNS4wMC4wMCNIZWFsdGhjYXJlIGNlbnRlcnMjODUuMTAuMDAuMDAuMDAKLXVuc3BzYzcjODUuMTAuMTUuMDEuMDAjRW1lcmdlbmN5IG9yIHN1cmdpY2FsIGhvc3BpdGFsIHNlcnZpY2VzIzg1LjEwLjE1LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE1LjAyLjAwI1ByaXZhdGUgc3BlY2lhbGl6ZWQgY2xpbmljIHNlcnZpY2VzIzg1LjEwLjE1LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE1LjAzLjAwI01lZGljYWwgb2ZmaWNlIHNlcnZpY2VzIzg1LjEwLjE1LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE1LjA0LjAwI1BzeWNoaWF0cmljIGhvc3BpdGFsIHNlcnZpY2VzIzg1LjEwLjE1LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE1LjA1LjAwI1Jlc3BpcmF0b3J5IGhvc3BpdGFsIHNlcnZpY2VzIzg1LjEwLjE1LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE1LjA2LjAwI1N1YnN0YW5jZSBhYnVzZSBob3NwaXRhbCBzZXJ2aWNlcyM4NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM4NS4xMC4xNS4wNy4wMCNVcmdlbnQgY2FyZSBjZW50ZXJzIzg1LjEwLjE1LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE1LjA4LjAwI01vYmlsZSBoZWFsdGhjYXJlIGNlbnRlcnMgb3Igc2VydmljZXMjODUuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTAuMTUuMDkuMDAjR3luZWNvbG9naWNhbCBvciBvYnN0ZXRyaWNhbCBob3NwaXRhbCBzZXJ2aWNlcyM4NS4xMC4xNS4wMC4wMAotdW5zcHNjNyM4NS4xMC4xNi4wMC4wMCNIZWFsdGhjYXJlIHByb3ZpZGVyIHN1cHBvcnQgcGVyc29ucyM4NS4xMC4wMC4wMC4wMAotdW5zcHNjNyM4NS4xMC4xNi4wMS4wMCNOdXJzaW5nIHNlcnZpY2VzIzg1LjEwLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE2LjAyLjAwI01pZHdpZmVyeSBvciBjaGlsZCBiaXJ0aCBwcmVwYXJhdGlvbiBzZXJ2aWNlcyM4NS4xMC4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMC4xNi4wMy4wMCNQZXJzb25hbCBjYXJlIHNlcnZpY2VzIGluIHNwZWNpYWxpemVkIGluc3RpdHV0aW9ucyM4NS4xMC4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMC4xNi4wNC4wMCNQaHlzaWNpYW5zIHBlcnNvbm5lbCBhc3Npc3RhbmNlIHNlcnZpY2VzIzg1LjEwLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE2LjA1LjAwI0hvbWUgaGVhbHRoIGFzc2lzdGFudHMjODUuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTAuMTcuMDAuMDAjSGVhbHRoIGFkbWluaXN0cmF0aW9uIHNlcnZpY2VzIzg1LjEwLjAwLjAwLjAwCi11bnNwc2M3Izg1LjEwLjE3LjAxLjAwI0hlYWx0aCBwb2xpY3kjODUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTAuMTcuMDIuMDAjSGVhbHRoIGxlZ2lzbGF0aW9uIG9yIHJlZ3VsYXRpb25zIzg1LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE3LjAzLjAwI0hlYWx0aCBzZXJ2aWNlIHBsYW5uaW5nIzg1LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE3LjA0LjAwI0hlYWx0aCBlY29ub21pY3MjODUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTAuMTcuMDUuMDAjUHVibGljIGhlYWx0aCBhZG1pbmlzdHJhdGlvbiM4NS4xMC4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMC4xNy4wNi4wMCNUcmFkaXRpb25hbCBoZWFsdGhjYXJlIHNlcnZpY2VzIzg1LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEwLjE3LjA3LjAwI0hlYWx0aCBzeXN0ZW1zIGV2YWx1YXRpb24gc2VydmljZXMjODUuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTEuMDAuMDAuMDAjRGlzZWFzZSBwcmV2ZW50aW9uIGFuZCBjb250cm9sIzg1LjAwLjAwLjAwLjAwCi11bnNwc2M3Izg1LjExLjE1LjAwLjAwI0NvbnRhZ2lvdXMgZGlzZWFzZSBwcmV2ZW50aW9uIGFuZCBjb250cm9sIzg1LjExLjAwLjAwLjAwCi11bnNwc2M3Izg1LjExLjE1LjAxLjAwI0FpZHMgcHJldmVudGlvbiBvciBjb250cm9sIHNlcnZpY2VzIzg1LjExLjE1LjAwLjAwCi11bnNwc2M3Izg1LjExLjE1LjAyLjAwI1BhcmFzaXRpYyBkaXNlYXNlIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNS4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNS4wMy4wMCNGdW5nYWwgZGlzZWFzZXMgcHJldmVudGlvbiBvciBjb250cm9sIHNlcnZpY2VzIzg1LjExLjE1LjAwLjAwCi11bnNwc2M3Izg1LjExLjE1LjA0LjAwI1R1YmVyY3Vsb3NpcyBwcmV2ZW50aW9uIG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTUuMDUuMDAjTGVwcm9zeSBwcmV2ZW50aW9uIG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTUuMDYuMDAjQmFjdGVyaWFsIGRpc2Vhc2UgcHJldmVudGlvbiBvciBjb250cm9sIHNlcnZpY2VzIzg1LjExLjE1LjAwLjAwCi11bnNwc2M3Izg1LjExLjE1LjA3LjAwI1NleHVhbGx5IHRyYW5zbWl0dGVkIGRpc2Vhc2VzIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNS4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNS4wOC4wMCNWaXJhbCBkaXNlYXNlcyBwcmV2ZW50aW9uIG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTUuMDkuMDAjWm9vbm90aWMgZGlzZWFzZXMgcHJldmVudGlvbiBvciBjb250cm9sIHNlcnZpY2VzIzg1LjExLjE1LjAwLjAwCi11bnNwc2M3Izg1LjExLjE1LjEwLjAwI1ZhY2NpbmF0aW9uIHNlcnZpY2VzIzg1LjExLjE1LjAwLjAwCi11bnNwc2M3Izg1LjExLjE1LjExLjAwI1F1YXJhbnRpbmUgc2VydmljZXMjODUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTUuMTIuMDAjSW1tdW5pemF0aW9uIHNlcnZpY2VzIzg1LjExLjE1LjAwLjAwCi11bnNwc2M3Izg1LjExLjE1LjEzLjAwI0Rpc2luc2VjdGl6YXRpb24gc2VydmljZXMjODUuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTUuMTQuMDAjRXBpZGVtaWNzIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNS4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNi4wMC4wMCNOb24gY29udGFnaW91cyBkaXNlYXNlIHByZXZlbnRpb24gYW5kIGNvbnRyb2wjODUuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTYuMDEuMDAjQm9uZSBkaXNlYXNlcyBwcmV2ZW50aW9uIG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTYuMDIuMDAjQ2FuY2VyIG9yIGxldWtlbWlhIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNi4wMy4wMCNFbmRvY3JpbmUgZGlzZWFzZXMgcHJldmVudGlvbiBvciBjb250cm9sIHNlcnZpY2VzIzg1LjExLjE2LjAwLjAwCi11bnNwc2M3Izg1LjExLjE2LjA0LjAwI0hlYXJ0IGRpc2Vhc2VzIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNi4wNS4wMCNJbW11bm9sb2dpYyBwcmV2ZW50aW9uIG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTYuMDYuMDAjQWxsZXJnaWVzIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNi4wNy4wMCNOZXVyb2xvZ2ljYWwgZGlzb3JkZXJzIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNi4wOC4wMCNOdXRyaXRpb25hbCBkaXNlYXNlcyBwcmV2ZW50aW9uIG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTYuMDkuMDAjUmFkaWF0aW9uIHNpY2tuZXNzIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNi4xMC4wMCNEaWdlc3RpdmUgc3lzdGVtIGRpc2Vhc2VzIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNi4xMS4wMCNFeWUgZGlzZWFzZSBwcmV2ZW50aW9uIG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTYuMTIuMDAjUmVzcGlyYXRvcnkgZGlzZWFzZXMgcHJldmVudGlvbiBvciBjb250cm9sIHNlcnZpY2VzIzg1LjExLjE2LjAwLjAwCi11bnNwc2M3Izg1LjExLjE2LjEzLjAwI1Ryb3BpY2FsIGRpc2Vhc2VzIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNi4xNC4wMCNDaGlsZGhvb2QgZGlzZWFzZXMgcHJldmVudGlvbiBvciBjb250cm9sIHNlcnZpY2VzIzg1LjExLjE2LjAwLjAwCi11bnNwc2M3Izg1LjExLjE2LjE1LjAwI0RpYXJyaGVhbCBkaXNlYXNlcyBwcmV2ZW50aW9uIG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTYuMTYuMDAjQWxjb2hvbGlzbSBwcmV2ZW50aW9uIG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTEuMTYuMTcuMDAjRHJ1ZyBhZGRpY3Rpb24gcHJldmVudGlvbiBvciBjb250cm9sIHNlcnZpY2VzIzg1LjExLjE2LjAwLjAwCi11bnNwc2M3Izg1LjExLjE3LjAwLjAwI0Rpc2Vhc2UgdmVjdG9ycyBtYW5hZ2VtZW50IGFuZCBjb250cm9sIzg1LjExLjAwLjAwLjAwCi11bnNwc2M3Izg1LjExLjE3LjAxLjAwI1RpY2tzIG1hbmFnZW1lbnQgb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNy4wMi4wMCNUc2V0c2UgZmxpZXMgbWFuYWdlbWVudCBvciBjb250cm9sIHNlcnZpY2VzIzg1LjExLjE3LjAwLjAwCi11bnNwc2M3Izg1LjExLjE3LjAzLjAwI0JhY3RlcmlhIG1hbmFnZW1lbnQgb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xMS4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMS4xNy4wNC4wMCNNb3NxdWl0byBtYW5hZ2VtZW50IG9yIGNvbnRyb2wgc2VydmljZXMjODUuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTIuMDAuMDAuMDAjTWVkaWNhbCBwcmFjdGljZSM4NS4wMC4wMC4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNS4wMC4wMCNQcmltYXJ5IGNhcmUgcHJhY3RpdGlvbmVycyBzZXJ2aWNlcyM4NS4xMi4wMC4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNS4wMS4wMCNQcmltYXJ5IGNhcmUgcGh5c2ljaWFucyBob21lIHZpc2l0cyBzZXJ2aWNlcyM4NS4xMi4xNS4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNS4wMi4wMCNQcmltYXJ5IGNhcmUgcGh5c2ljaWFucyBjb25zdWx0YXRpb24gc2VydmljZXMjODUuMTIuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTIuMTUuMDMuMDAjUHJpbWFyeSBjYXJlIHBoeXNpY2lhbnMgY29udHJvbCBzZXJ2aWNlcyM4NS4xMi4xNS4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNS4wNC4wMCNQcmltYXJ5IGNhcmUgcGh5c2ljaWFucyBlbWVyZ2VuY3kgbWVkaWNhbCBzZXJ2aWNlcyM4NS4xMi4xNS4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNi4wMC4wMCNNZWRpY2FsIGRvY3RvcnMgc3BlY2lhbGlzdCBzZXJ2aWNlcyM4NS4xMi4wMC4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNi4wMS4wMCNHeW5lY29sb2dpYyBvciBvYnN0ZXRyaWMgc2VydmljZXMjODUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTIuMTYuMDIuMDAjTmVwaHJvbG9neSBzZXJ2aWNlcyM4NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNi4wMy4wMCNDYXJkaW9sb2d5IHNlcnZpY2VzIzg1LjEyLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE2LjA0LjAwI1B1bG9tb25hcnkgc3BlY2lhbGlzdHMgc2VydmljZXMjODUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTIuMTYuMDUuMDAjR2FzdHJvZW50ZXJvbG9naXN0cyBzZXJ2aWNlcyM4NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNi4wNi4wMCNHZXJpYXRyaWMgc2VydmljZXMjODUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTIuMTYuMDcuMDAjUHN5Y2hpYXRyaXN0IHNlcnZpY2VzIzg1LjEyLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE2LjA4LjAwI1BzeWNob2xvZ2lzdHMgc2VydmljZXMjODUuMTIuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTIuMTYuMDkuMDAjU3VyZ2VyeSBzZXJ2aWNlcyM4NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNi4xMC4wMCNPcGh0aGFsbW9sb2dpc3RzIHNlcnZpY2VzIzg1LjEyLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE2LjExLjAwI0Rlcm1hdG9sb2d5IHNlcnZpY2VzIzg1LjEyLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE2LjEyLjAwI09ydGhvcGVkaWNzIHNlcnZpY2VzIzg1LjEyLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE2LjEzLjAwI1BlZGlhdHJpYyBzZXJ2aWNlcyM4NS4xMi4xNi4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNi4xNC4wMCNOZXJ2b3VzIHN5c3RlbSBzcGVjaWFsaXN0IHNlcnZpY2VzIzg1LjEyLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE3LjAwLjAwI0hlYWx0aGNhcmUgcHJvdmlkZXJzIHNwZWNpYWxpc3RzIHNlcnZpY2VzIzg1LjEyLjAwLjAwLjAwCi11bnNwc2M3Izg1LjEyLjE3LjAxLjAwI1BzeWNob3RoZXJhcGlzdHMgc2VydmljZXMjODUuMTIuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTIuMTcuMDIuMDAjT3B0b21ldHJpc3RzIHNlcnZpY2VzIzg1LjEyLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE3LjAzLjAwI1BvZGlhdHJpc3RzIHNlcnZpY2VzIzg1LjEyLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE3LjA0LjAwI1NwZWVjaCBzcGVjaWFsaXN0cyBzZXJ2aWNlcyM4NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNy4wNS4wMCNBY3VwdW5jdHVyaXN0cyBzZXJ2aWNlcyM4NS4xMi4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMi4xNy4wNi4wMCNDaGlyb3ByYWN0b3JzIHNlcnZpY2VzIzg1LjEyLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE4LjAwLjAwI01lZGljYWwgbGFib3JhdG9yaWVzIzg1LjEyLjAwLjAwLjAwCi11bnNwc2M3Izg1LjEyLjE4LjAxLjAwI0Jsb29kIGFuYWx5c2lzIGxhYm9yYXRvcnkgc2VydmljZXMjODUuMTIuMTguMDAuMDAKLXVuc3BzYzcjODUuMTIuMTguMDIuMDAjQmFjdGVyaW9sb2dpY2FsIGxhYm9yYXRvcnkgc2VydmljZXMjODUuMTIuMTguMDAuMDAKLXVuc3BzYzcjODUuMTIuMTguMDMuMDAjQmlvbG9naWNhbCBsYWJvcmF0b3J5IHNlcnZpY2VzIzg1LjEyLjE4LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE4LjA0LjAwI1BhdGhvbG9naWNhbCBsYWJvcmF0b3J5IHNlcnZpY2VzIzg1LjEyLjE4LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE4LjA1LjAwI1VyaW5hbHlzaXMgbGFib3JhdG9yeSBzZXJ2aWNlcyM4NS4xMi4xOC4wMC4wMAotdW5zcHNjNyM4NS4xMi4xOC4wNi4wMCNOZXVyb2xvZ2ljYWwgbGFib3JhdG9yeSBzZXJ2aWNlcyM4NS4xMi4xOC4wMC4wMAotdW5zcHNjNyM4NS4xMi4xOC4wNy4wMCNVbHRyYXNvdW5kIGxhYm9yYXRvcnkgc2VydmljZXMjODUuMTIuMTguMDAuMDAKLXVuc3BzYzcjODUuMTIuMTguMDguMDAjWCByYXkgbGFib3JhdG9yeSBzZXJ2aWNlcyM4NS4xMi4xOC4wMC4wMAotdW5zcHNjNyM4NS4xMi4xOC4wOS4wMCNCbG9vZCBvciBzcGVybSBvciB0cmFuc3BsYW50IG9yZ2FuIGJhbmtzIHNlcnZpY2VzIzg1LjEyLjE4LjAwLjAwCi11bnNwc2M3Izg1LjEyLjE4LjEwLjAwI0RydWcgb3IgYWxjb2hvbCBzY3JlZW5pbmcjODUuMTIuMTguMDAuMDAKLXVuc3BzYzcjODUuMTIuMTkuMDAuMDAjUGhhcm1hY2lzdHMjODUuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODUuMTIuMTkuMDEuMDAjUGhhcm1hY2V1dGljYWwgcHJlcGFyYXRpb24gc2VydmljZXMjODUuMTIuMTkuMDAuMDAKLXVuc3BzYzcjODUuMTIuMTkuMDIuMDAjQ29tbWVyY2lhbCBwaGFybWFjZXV0aWNhbCBzZXJ2aWNlcyM4NS4xMi4xOS4wMC4wMAotdW5zcHNjNyM4NS4xMi4yMC4wMC4wMCNEZW50YWwgc2VydmljZXMjODUuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODUuMTIuMjAuMDEuMDAjRGVudGlzdHMgc2VydmljZXMjODUuMTIuMjAuMDAuMDAKLXVuc3BzYzcjODUuMTIuMjAuMDIuMDAjRGVudGFsIGh5Z2llbmlzdHMgc2VydmljZXMjODUuMTIuMjAuMDAuMDAKLXVuc3BzYzcjODUuMTIuMjAuMDMuMDAjRGVudGlzdCBzdXBwb3J0IHN0YWZmIHNlcnZpY2VzIzg1LjEyLjIwLjAwLjAwCi11bnNwc2M3Izg1LjEyLjIwLjA0LjAwI09yYWwgc3VyZ2VvbnMgc2VydmljZXMjODUuMTIuMjAuMDAuMDAKLXVuc3BzYzcjODUuMTIuMjAuMDUuMDAjT3J0aG9kb250aWMgc2VydmljZXMjODUuMTIuMjAuMDAuMDAKLXVuc3BzYzcjODUuMTIuMjEuMDAuMDAjUmVoYWJpbGl0YXRpb24gc2VydmljZXMjODUuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODUuMTIuMjEuMDEuMDAjUGh5c2ljYWwgdGhlcmFweSBzZXJ2aWNlcyM4NS4xMi4yMS4wMC4wMAotdW5zcHNjNyM4NS4xMi4yMS4wMi4wMCNPY2N1cGF0aW9uYWwgdGhlcmFweSBzZXJ2aWNlcyM4NS4xMi4yMS4wMC4wMAotdW5zcHNjNyM4NS4xMi4yMS4wMy4wMCNSZWhhYmlsaXRhdGlvbiBzZXJ2aWNlcyBmb3Igc3Vic3RhbmNlIGFidXNlIzg1LjEyLjIxLjAwLjAwCi11bnNwc2M3Izg1LjEyLjIxLjA0LjAwI0F0aGxldGljIHJlaGFiaWxpdGF0aW9uIHNlcnZpY2VzIzg1LjEyLjIxLjAwLjAwCi11bnNwc2M3Izg1LjEyLjIxLjA1LjAwI0VhdGluZyBkaXNvcmRlcnMgc2VydmljZXMjODUuMTIuMjEuMDAuMDAKLXVuc3BzYzcjODUuMTIuMjEuMDYuMDAjQnJhaW4gb3Igc3BpbmFsIGNvcmQgaW5qdXJ5IHNlcnZpY2VzIzg1LjEyLjIxLjAwLjAwCi11bnNwc2M3Izg1LjEyLjIxLjA3LjAwI0JsaW5kIG9yIHZpc2lvbiBpbXBhaXJlZCByZWhhYmlsaXRhdGlvbiBzZXJ2aWNlcyM4NS4xMi4yMS4wMC4wMAotdW5zcHNjNyM4NS4xMi4yMS4wOC4wMCNTcGVlY2ggb3IgbGFuZ3VhZ2UgdGhlcmFweSM4NS4xMi4yMS4wMC4wMAotdW5zcHNjNyM4NS4xMi4yMS4wOS4wMCNSZWhhYmlsaXRhdGlvbiBzZXJ2aWNlcyBmb3IgcGVvcGxlIHdpdGggY2hyb25pYyBkaXNhYmlsaXRpZXMjODUuMTIuMjEuMDAuMDAKLXVuc3BzYzcjODUuMTMuMDAuMDAuMDAjTWVkaWNhbCBzY2llbmNlIHJlc2VhcmNoIGFuZCBleHBlcmltZW50YXRpb24jODUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODUuMTMuMTUuMDAuMDAjRXhwZXJpbWVudGFsIG1lZGljaW5lIHNlcnZpY2VzIzg1LjEzLjAwLjAwLjAwCi11bnNwc2M3Izg1LjEzLjE1LjAxLjAwI09yZ2FuIHRyYW5zcGxhbnQgc2VydmljZXMjODUuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTMuMTUuMDIuMDAjQ2xpbmljYWwgaHVtYW4gZHJ1ZyB0cmlhbHMjODUuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTMuMTUuMDMuMDAjQW5pbWFsIGV4cGVyaW1lbnRhdGlvbiM4NS4xMy4xNS4wMC4wMAotdW5zcHNjNyM4NS4xMy4xNS4wNC4wMCNIdW1hbiBleHBlcmltZW50YXRpb24jODUuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTMuMTUuMDUuMDAjU3BhY2UgZXhwZXJpbWVudGF0aW9uIzg1LjEzLjE1LjAwLjAwCi11bnNwc2M3Izg1LjEzLjE2LjAwLjAwI01lZGljYWwgZXRoaWNzIzg1LjEzLjAwLjAwLjAwCi11bnNwc2M3Izg1LjEzLjE2LjAxLjAwI0V1dGhhbmFzaWEgaXNzdWVzIzg1LjEzLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEzLjE2LjAyLjAwI01lZGljYWwgY29kZSBvZiBjb25kdWN0Izg1LjEzLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEzLjE2LjAzLjAwI01lZGljYWwgc29jaWV0aWVzIzg1LjEzLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEzLjE2LjA0LjAwI0ludGVybmF0aW9uYWwgZHJ1ZyBtb25pdG9yaW5nIHNlcnZpY2VzIzg1LjEzLjE2LjAwLjAwCi11bnNwc2M3Izg1LjEzLjE3LjAwLjAwI01lZGljYWwgc2NpZW5jZSBhbmQgcmVzZWFyY2gjODUuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODUuMTMuMTcuMDEuMDAjUGhhcm1hY2V1dGljYWwgcmVzZWFyY2ggc2VydmljZXMjODUuMTMuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTMuMTcuMDIuMDAjQmFjdGVyaW9sb2d5IHJlc2VhcmNoIHNlcnZpY2VzIzg1LjEzLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEzLjE3LjAzLjAwI0Jpb21lZGljYWwgcmVzZWFyY2ggc2VydmljZXMjODUuMTMuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTMuMTcuMDQuMDAjQ2FyZGlvbG9neSByZXNlYXJjaCBzZXJ2aWNlcyM4NS4xMy4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMy4xNy4wNS4wMCNBbmF0b215IHJlc2VhcmNoIHNlcnZpY2VzIzg1LjEzLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEzLjE3LjA2LjAwI1BhdGhvbG9neSByZXNlYXJjaCBzZXJ2aWNlcyM4NS4xMy4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMy4xNy4wNy4wMCNFbWJyeW9sb2d5IHJlc2VhcmNoIHNlcnZpY2VzIzg1LjEzLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEzLjE3LjA4LjAwI0VwaWRlbWlvbG9neSByZXNlYXJjaCBzZXJ2aWNlcyM4NS4xMy4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMy4xNy4wOS4wMCNHZW5ldGljcyByZXNlYXJjaCBzZXJ2aWNlcyM4NS4xMy4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMy4xNy4xMC4wMCNJbW11bm9sb2d5IHJlc2VhcmNoIHNlcnZpY2VzIzg1LjEzLjE3LjAwLjAwCi11bnNwc2M3Izg1LjEzLjE3LjExLjAwI1BoeXNpb2xvZ3kgcmVzZWFyY2ggc2VydmljZXMjODUuMTMuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTMuMTcuMTIuMDAjVG94aWNvbG9neSByZXNlYXJjaCBzZXJ2aWNlcyM4NS4xMy4xNy4wMC4wMAotdW5zcHNjNyM4NS4xMy4xNy4xMy4wMCNOZXVyb2xvZ3kgcmVzZWFyY2ggc2VydmljZXMjODUuMTMuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTQuMDAuMDAuMDAjQWx0ZXJuYXRpdmUgYW5kIGhvbGlzdGljIG1lZGljaW5lIzg1LjAwLjAwLjAwLjAwCi11bnNwc2M3Izg1LjE0LjE1LjAwLjAwI0ZhaXRoIGhlYWxlcnMjODUuMTQuMDAuMDAuMDAKLXVuc3BzYzcjODUuMTQuMTUuMDEuMDAjV2l0Y2ggZG9jdG9ycyBvciB2b29kb28gc2VydmljZXMjODUuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTQuMTUuMDIuMDAjRmFpdGggaGVhbGVycyBzZXJ2aWNlcyM4NS4xNC4xNS4wMC4wMAotdW5zcHNjNyM4NS4xNC4xNS4wMy4wMCNTaGFtYW5zIzg1LjE0LjE1LjAwLjAwCi11bnNwc2M3Izg1LjE0LjE1LjA0LjAwI0VuZXJneSB3b3JrIzg1LjE0LjE1LjAwLjAwCi11bnNwc2M3Izg1LjE0LjE2LjAwLjAwI0hlcmJhbCB0cmVhdG1lbnRzIzg1LjE0LjAwLjAwLjAwCi11bnNwc2M3Izg1LjE0LjE2LjAxLjAwI0hlcmJhbCBtZWRpY2luZSBvciBoZXJiYWxpc3RzIHNlcnZpY2VzIzg1LjE0LjE2LjAwLjAwCi11bnNwc2M3Izg1LjE0LjE2LjAyLjAwI0FsZ2FlIG9yIHNlYSB3ZWVkIG1lZGljYWwgY3VyZXMjODUuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTQuMTYuMDMuMDAjSG90IHNwcmluZ3MgY3VyZSBzZXJ2aWNlcyM4NS4xNC4xNi4wMC4wMAotdW5zcHNjNyM4NS4xNC4xNy4wMC4wMCNIb21lb3BhdGhpYyBwcmFjdGljZSM4NS4xNC4wMC4wMC4wMAotdW5zcHNjNyM4NS4xNC4xNy4wMS4wMCNJbml0aWFsIGRpYWdub3N0aWMgYXNzZXNzbWVudCM4NS4xNC4xNy4wMC4wMAotdW5zcHNjNyM4NS4xNC4xNy4wMi4wMCNSZW1lZHkgY29uc3VsdGF0aW9ucyM4NS4xNC4xNy4wMC4wMAotdW5zcHNjNyM4NS4xNS4wMC4wMC4wMCNGb29kIGFuZCBudXRyaXRpb24gc2VydmljZXMjODUuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODUuMTUuMTUuMDAuMDAjRm9vZCB0ZWNobm9sb2d5Izg1LjE1LjAwLjAwLjAwCi11bnNwc2M3Izg1LjE1LjE1LjAxLjAwI0Zvb2QgaHlnaWVuZSBjb250cm9sIHNlcnZpY2VzIzg1LjE1LjE1LjAwLjAwCi11bnNwc2M3Izg1LjE1LjE1LjAyLjAwI0Zvb2QgY29udGFtaW5hdGlvbiBjb250cm9sIHNlcnZpY2VzIzg1LjE1LjE1LjAwLjAwCi11bnNwc2M3Izg1LjE1LjE1LjAzLjAwI0Zvb2QgcHJlc2VydmF0aW9uIG1hbmFnZW1lbnQgb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xNS4xNS4wMC4wMAotdW5zcHNjNyM4NS4xNS4xNS4wNC4wMCNGb29kIHByZXBhcmF0aW9uIGNvdW5zZWxpbmcgb3IgY29udHJvbCBzZXJ2aWNlcyM4NS4xNS4xNS4wMC4wMAotdW5zcHNjNyM4NS4xNS4xNS4wNS4wMCNGb29kIHJlc2VhcmNoIHNlcnZpY2VzIzg1LjE1LjE1LjAwLjAwCi11bnNwc2M3Izg1LjE1LjE1LjA2LjAwI1N0dWRpZXMgb24gZm9vZHMgb3IgZm9vZCBoYWJpdHMjODUuMTUuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTUuMTUuMDcuMDAjRm9vZCBhZGRpdGl2ZSBvciBxdWFsaXR5IHN0YW5kYXJkcyBzZXJ2aWNlcyM4NS4xNS4xNS4wMC4wMAotdW5zcHNjNyM4NS4xNS4xNS4wOC4wMCNGb29kIGFuYWx5c2lzIHNlcnZpY2VzIzg1LjE1LjE1LjAwLjAwCi11bnNwc2M3Izg1LjE1LjE1LjA5LjAwI0Zvb2QgbGVnaXNsYXRpb24gc2VydmljZXMjODUuMTUuMTUuMDAuMDAKLXVuc3BzYzcjODUuMTUuMTYuMDAuMDAjTnV0cml0aW9uIGlzc3VlcyM4NS4xNS4wMC4wMC4wMAotdW5zcHNjNyM4NS4xNS4xNi4wMS4wMCNOdXRyaXRpb24gcHJvZ3JhbW1pbmcgc2VydmljZXMjODUuMTUuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTUuMTYuMDIuMDAjQnJlYXN0IG9yIGJvdHRsZSBmZWVkaW5nIHBvbGljeSM4NS4xNS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xNS4xNi4wMy4wMCNOdXRyaXRpb25hbCByZWhhYmlsaXRhdGlvbiBzZXJ2aWNlcyM4NS4xNS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xNS4xNi4wNC4wMCNOdXRyaXRpb24gcHJvamVjdCBldmFsdWF0aW9uIzg1LjE1LjE2LjAwLjAwCi11bnNwc2M3Izg1LjE1LjE2LjA1LjAwI0Zvb2Qgb3IgbnV0cml0aW9uIGRldmVsb3BtZW50IHN0cmF0ZWdpZXMjODUuMTUuMTYuMDAuMDAKLXVuc3BzYzcjODUuMTUuMTYuMDYuMDAjTnV0cmllbnQgZGVmaWNpZW5jeSBjb250cm9sIHByb2dyYW1zIzg1LjE1LjE2LjAwLjAwCi11bnNwc2M3Izg1LjE1LjE2LjA3LjAwI0RpZXQgY29udHJvbCBvciBwcm9ncmFtcyM4NS4xNS4xNi4wMC4wMAotdW5zcHNjNyM4NS4xNS4xNy4wMC4wMCNGb29kIHBvbGljeSBwbGFubmluZyBhbmQgYWlkIzg1LjE1LjAwLjAwLjAwCi11bnNwc2M3Izg1LjE1LjE3LjAxLjAwI0Zvb2Qgc3RhbmRhcmRzIzg1LjE1LjE3LjAwLjAwCi11bnNwc2M3Izg1LjE1LjE3LjAyLjAwI0Zvb2QgYWlkIGdsb2JhbCBpbmZvcm1hdGlvbiBvciBlYXJseSB3YXJuaW5nIHN5c3RlbXMgc2VydmljZXMjODUuMTUuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTUuMTcuMDMuMDAjQXNzZXNzbWVudCBvZiBlbWVyZ2VuY3kgZm9vZCByZXF1aXJlbWVudHMjODUuMTUuMTcuMDAuMDAKLXVuc3BzYzcjODUuMTUuMTcuMDQuMDAjTmF0aW9uYWwgZm9vZCBpbnRlcnZlbnRpb24gcG9saWN5IG9yIHByb2dyYW1zIzg1LjE1LjE3LjAwLjAwCi11bnNwc2M3Izg1LjE1LjE3LjA1LjAwI0V2YWx1YXRpb24gb2YgZm9vZCBhaWQgbnV0cml0aW9uYWwgaW1wYWN0Izg1LjE1LjE3LjAwLjAwCi11bnNwc2M3Izg2LjAwLjAwLjAwLjAwI0VkdWNhdGlvbiBhbmQgVHJhaW5pbmcgU2VydmljZXMjODYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTAuMDAuMDAuMDAjVm9jYXRpb25hbCB0cmFpbmluZyM4Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNS4wMC4wMCNBZ3JpY3VsdHVyZSBhbmQgZm9yZXN0cnkgYW5kIG90aGVyIG5hdHVyYWwgcmVzb3VyY2VzIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjAwLjAwLjAwCi11bnNwc2M3Izg2LjEwLjE1LjAxLjAwI0Fncm8gaW5kdXN0cnkgdm9jYXRpb25hbCB0cmFpbmluZyM4Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNS4wMi4wMCNEYWlyeSBpbmR1c3RyeSB2b2NhdGlvbmFsIHRyYWluaW5nIzg2LjEwLjE1LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE1LjAzLjAwI01lYXQgaW5kdXN0cnkgdm9jYXRpb25hbCB0cmFpbmluZyM4Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNS4wNC4wMCNBZ3JpY3VsdHVyZSB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE1LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE1LjA1LjAwI1J1cmFsIHlvdXRoIG9yIGZhcm1lcnMgdm9jYXRpb25hbCB0cmFpbmluZyBzZXJ2aWNlcyM4Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNS4wNi4wMCNGb3Jlc3RyeSB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE1LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE1LjA3LjAwI0Zpc2hlcnkgdm9jYXRpb25hbCB0cmFpbmluZyBzZXJ2aWNlcyM4Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNS4wOC4wMCNFbnZpcm9ubWVudGFsIHZvY2F0aW9uYWwgdHJhaW5pbmcgc2VydmljZXMjODYuMTAuMTUuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTUuMDkuMDAjTmF0dXJhbCByZXNvdXJjZXMgdm9jYXRpb25hbCB0cmFpbmluZyBzZXJ2aWNlcyM4Ni4xMC4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNi4wMC4wMCNTY2llbnRpZmljIHZvY2F0aW9uYWwgdHJhaW5pbmcgc2VydmljZXMjODYuMTAuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTYuMDEuMDAjQ29tcHV0ZXIgdm9jYXRpb25hbCB0cmFpbmluZyBzZXJ2aWNlcyM4Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNi4wMi4wMCNFbmVyZ3kgcmVsYXRlZCB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE2LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE2LjAzLjAwI0NoZW1pc3RyeSB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE2LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE2LjA0LjAwI0Jpb2xvZ3kgdm9jYXRpb25hbCB0cmFpbmluZyBzZXJ2aWNlcyM4Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNi4wNS4wMCNNZWRpY2FsIHZvY2F0aW9uYWwgdHJhaW5pbmcgc2VydmljZXMjODYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTYuMDYuMDAjRWxlY3Ryb25pY3Mgdm9jYXRpb25hbCB0cmFpbmluZyBzZXJ2aWNlcyM4Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNi4wNy4wMCNUZWxlY29tbXVuaWNhdGlvbnMgdm9jYXRpb25hbCB0cmFpbmluZyBzZXJ2aWNlcyM4Ni4xMC4xNi4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNi4wOC4wMCNIeWRyYXVsaWNzIHZvY2F0aW9uYWwgdHJhaW5pbmcgc2VydmljZXMjODYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTYuMDkuMDAjSW5kdXN0cmlhbCB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE2LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE2LjEwLjAwI0VuZ2luZWVyaW5nIHZvY2F0aW9uYWwgdHJhaW5pbmcgc2VydmljZXMjODYuMTAuMTYuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTcuMDAuMDAjTm9uIHNjaWVudGlmaWMgdm9jYXRpb25hbCB0cmFpbmluZyBzZXJ2aWNlcyM4Ni4xMC4wMC4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNy4wMS4wMCNDb21tdW5pY2F0aW9ucyB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjAyLjAwI1RvdXJpc20gcmVsYXRlZCB0cmFpbmluZyM4Ni4xMC4xNy4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNy4wMy4wMCNMaWJyYXJ5IG9yIGRvY3VtZW50YXRpb24gdHJhaW5pbmcjODYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTcuMDQuMDAjUHJvY3VyZW1lbnQgb3Igc3VwcGx5IGNoYWluIHRyYWluaW5nIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjA1LjAwI0NsZXJpY2FsIHRyYWluaW5nIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjA2LjAwI0hlYWx0aCBhc3Npc3RhbmNlIHZvY2F0aW9uYWwgdHJhaW5pbmcgc2VydmljZXMjODYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTcuMDcuMDAjUGVyc29uYWwgY2FyZSB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjA4LjAwI0xpdGVyYWN5IHNlcnZpY2VzIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjA5LjAwI1NhZmV0eSB0cmFpbmluZyBzZXJ2aWNlcyM4Ni4xMC4xNy4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xNy4xMC4wMCNUZWFjaGVyIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjExLjAwI0ZpcmUgZmlnaHRpbmcgdHJhaW5pbmcgc2VydmljZXMjODYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTcuMTIuMDAjSGFuZGNyYWZ0cyB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjEzLjAwI0xhdyB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjE0LjAwI0xhdyBlbmZvcmNlbWVudCB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjE1LjAwI1JvYWQgb3IgcmFpbCB0cmFuc3BvcnRhdGlvbiB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE3LjE2LjAwI1NoaXBwaW5nIHZvY2F0aW9uYWwgdHJhaW5pbmcgc2VydmljZXMjODYuMTAuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTguMDAuMDAjSW4gc2VydmljZSB0cmFpbmluZyBhbmQgbWFucG93ZXIgZGV2ZWxvcG1lbnQjODYuMTAuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTAuMTguMDEuMDAjQmFuayBvciBmaW5hbmNlIHNlY3RvciBtYW5wb3dlciBkZXZlbG9wbWVudCM4Ni4xMC4xOC4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xOC4wMi4wMCNSZSB0cmFpbmluZyBvciByZWZyZXNoaW5nIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE4LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE4LjAzLjAwI1ZvY2F0aW9uYWwgcmVoYWJpbGl0YXRpb24gc2VydmljZXMjODYuMTAuMTguMDAuMDAKLXVuc3BzYzcjODYuMTAuMTguMDQuMDAjQ29tbWVyY2lhbCBzZWN0b3IgbWFucG93ZXIgZGV2ZWxvcG1lbnQjODYuMTAuMTguMDAuMDAKLXVuc3BzYzcjODYuMTAuMTguMDUuMDAjSW5kdXN0cmlhbCBzZWN0b3IgbWFucG93ZXIgZGV2ZWxvcG1lbnQjODYuMTAuMTguMDAuMDAKLXVuc3BzYzcjODYuMTAuMTguMDYuMDAjSGVhbHRoIHNlY3RvciBtYW5wb3dlciBkZXZlbG9wbWVudCM4Ni4xMC4xOC4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xOC4wNy4wMCNNYW5hZ2VtZW50IHNlY3RvciBtYW5wb3dlciBkZXZlbG9wbWVudCM4Ni4xMC4xOC4wMC4wMAotdW5zcHNjNyM4Ni4xMC4xOC4wOC4wMCNQdWJsaWMgc2VjdG9yIG1hbnBvd2VyIGRldmVsb3BtZW50IHNlcnZpY2VzIzg2LjEwLjE4LjAwLjAwCi11bnNwc2M3Izg2LjEwLjE4LjA5LjAwI01lcmNoYW50IG1hcmluZSB2b2NhdGlvbmFsIHRyYWluaW5nIHNlcnZpY2VzIzg2LjEwLjE4LjAwLjAwCi11bnNwc2M3Izg2LjExLjAwLjAwLjAwI0FsdGVybmF0aXZlIGVkdWNhdGlvbmFsIHN5c3RlbXMjODYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTUuMDAuMDAjRGlzdGFuY2UgbGVhcm5pbmcgc2VydmljZXMjODYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTUuMDEuMDAjRGlzdGFuY2UgbGVhcm5pbmcgZ3VpZGFuY2Ugc2VydmljZXMjODYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTUuMDIuMDAjRGlzdGFuY2UgdGVhY2hpbmcgc2VydmljZXMjODYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTUuMDMuMDAjQ2VydGlmaWNhdGVkIGRpc3RhbmNlIGxlYXJuaW5nIHNlcnZpY2VzIzg2LjExLjE1LjAwLjAwCi11bnNwc2M3Izg2LjExLjE1LjA0LjAwI05vbiBjZXJ0aWZpY2F0ZWQgZGlzdGFuY2UgbGVhcm5pbmcgc2VydmljZXMjODYuMTEuMTUuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTUuMDUuMDAjRGlzdGFuY2UgbGVhcm5pbmcgYXNzZXNzbWVudCBzZXJ2aWNlcyM4Ni4xMS4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMS4xNi4wMC4wMCNBZHVsdCBlZHVjYXRpb24jODYuMTEuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTYuMDEuMDAjRXZlbmluZyBjb3Vyc2VzIzg2LjExLjE2LjAwLjAwCi11bnNwc2M3Izg2LjExLjE2LjAyLjAwI1BhcnQgdGltZSBhZHVsdCBlZHVjYXRpb24gc2VydmljZXMjODYuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTYuMDMuMDAjUGFyZW50IGVkdWNhdGlvbiM4Ni4xMS4xNi4wMC4wMAotdW5zcHNjNyM4Ni4xMS4xNi4wNC4wMCNFbXBsb3llZSBFZHVjYXRpb24jODYuMTEuMTYuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTcuMDAuMDAjTGFuZ3VhZ2Ugc2Nob29saW5nIzg2LjExLjAwLjAwLjAwCi11bnNwc2M3Izg2LjExLjE3LjAxLjAwI0NvbnZlcnNhdGlvbmFsIGZvcmVpZ24gbGFuZ3VhZ2UgaW5zdHJ1Y3Rpb24jODYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTcuMDIuMDAjRm9yZWlnbiBsYW5ndWFnZSBpbW1lcnNpb24gaW5zdHJ1Y3Rpb24jODYuMTEuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTEuMTguMDAuMDAjRWR1Y2F0aW9uYWwgZXhjaGFuZ2VzIzg2LjExLjAwLjAwLjAwCi11bnNwc2M3Izg2LjExLjE4LjAxLjAwI0VkdWNhdGlvbmFsIGV4Y2hhbmdlcyBiZXR3ZWVuIHVuaXZlcnNpdGllcyM4Ni4xMS4xOC4wMC4wMAotdW5zcHNjNyM4Ni4xMS4xOC4wMi4wMCNFZHVjYXRpb25hbCBleGNoYW5nZXMgYmV0d2VlbiBzY2hvb2xzIzg2LjExLjE4LjAwLjAwCi11bnNwc2M3Izg2LjEyLjAwLjAwLjAwI0VkdWNhdGlvbmFsIGluc3RpdHV0aW9ucyM4Ni4wMC4wMC4wMC4wMAotdW5zcHNjNyM4Ni4xMi4xNS4wMC4wMCNFbGVtZW50YXJ5IGFuZCBzZWNvbmRhcnkgc2Nob29scyM4Ni4xMi4wMC4wMC4wMAotdW5zcHNjNyM4Ni4xMi4xNS4wMS4wMCNQcmUgc2Nob29sIGVkdWNhdGlvbmFsIHNlcnZpY2VzIzg2LjEyLjE1LjAwLjAwCi11bnNwc2M3Izg2LjEyLjE1LjAyLjAwI1JlbGlnaW91cyBlbGVtZW50YXJ5IG9yIHNlY29uZGFyeSBzY2hvb2xzIzg2LjEyLjE1LjAwLjAwCi11bnNwc2M3Izg2LjEyLjE1LjAzLjAwI1ByaXZhdGUgZWxlbWVudGFyeSBvciBzZWNvbmRhcnkgc2Nob29scyM4Ni4xMi4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMi4xNS4wNC4wMCNQdWJsaWMgZWxlbWVudGFyeSBvciBzZWNvbmRhcnkgc2Nob29scyM4Ni4xMi4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMi4xNi4wMC4wMCNKdW5pb3IgY29sbGVnZXMjODYuMTIuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTIuMTYuMDEuMDAjQ29tbXVuaXR5IGNvbGxlZ2VzIzg2LjEyLjE2LjAwLjAwCi11bnNwc2M3Izg2LjEyLjE2LjAyLjAwI1RlY2huaWNhbCBpbnN0aXR1dGVzIzg2LjEyLjE2LjAwLjAwCi11bnNwc2M3Izg2LjEyLjE3LjAwLjAwI1VuaXZlcnNpdHkgYW5kIGNvbGxlZ2VzIzg2LjEyLjAwLjAwLjAwCi11bnNwc2M3Izg2LjEyLjE3LjAxLjAwI1VuZGVyZ3JhZHVhdGUgcHJvZ3JhbXMjODYuMTIuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTIuMTcuMDIuMDAjUG9zdGdyYWR1YXRlIHByb2dyYW1zIzg2LjEyLjE3LjAwLjAwCi11bnNwc2M3Izg2LjEyLjE4LjAwLjAwI1Byb2Zlc3Npb25hbCBzY2hvb2xzIzg2LjEyLjAwLjAwLjAwCi11bnNwc2M3Izg2LjEyLjE4LjAyLjAwI1RoZW9sb2dpY2FsIHNlbWluYXJpZXMjODYuMTIuMTguMDAuMDAKLXVuc3BzYzcjODYuMTIuMTguMDMuMDAjVGVjaG5pY2FsIHByb2Zlc3Npb25hbCBzY2hvb2xzIzg2LjEyLjE4LjAwLjAwCi11bnNwc2M3Izg2LjEyLjE4LjA0LjAwI05vbiB0ZWNobmljYWwgcHJvZmVzc2lvbmFsIHNjaG9vbHMjODYuMTIuMTguMDAuMDAKLXVuc3BzYzcjODYuMTMuMDAuMDAuMDAjU3BlY2lhbGl6ZWQgZWR1Y2F0aW9uYWwgc2VydmljZXMjODYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTMuMTUuMDAuMDAjRmluZSBhcnRzIzg2LjEzLjAwLjAwLjAwCi11bnNwc2M3Izg2LjEzLjE1LjAxLjAwI1RoZWF0ZXIgc3R1ZGllcyM4Ni4xMy4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMy4xNS4wMi4wMCNQYWludGluZyM4Ni4xMy4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMy4xNS4wMy4wMCNTY3VscHR1cmUjODYuMTMuMTUuMDAuMDAKLXVuc3BzYzcjODYuMTMuMTUuMDQuMDAjTWVkaWEgc3R1ZGllcyM4Ni4xMy4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xMy4xNi4wMC4wMCNNdXNpYyBhbmQgZHJhbWEjODYuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTMuMTYuMDEuMDAjTXVzaWMgc2Nob29scyM4Ni4xMy4xNi4wMC4wMAotdW5zcHNjNyM4Ni4xMy4xNi4wMi4wMCNEYW5jZSBlZHVjYXRpb24jODYuMTMuMTYuMDAuMDAKLXVuc3BzYzcjODYuMTMuMTYuMDMuMDAjRHJhbWEgc3R1ZGllcyM4Ni4xMy4xNi4wMC4wMAotdW5zcHNjNyM4Ni4xMy4xNy4wMC4wMCNEcml2aW5nIGFuZCBmbHlpbmcgYW5kIHNhaWxpbmcjODYuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTMuMTcuMDEuMDAjVmVoaWNsZSBkcml2aW5nIHNjaG9vbHMgc2VydmljZXMjODYuMTMuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTMuMTcuMDIuMDAjRmxpZ2h0IHNjaG9vbCBzZXJ2aWNlcyM4Ni4xMy4xNy4wMC4wMAotdW5zcHNjNyM4Ni4xMy4xNy4wMy4wMCNZYWNodGluZyBvciBib2F0aW5nIHNjaG9vbCBzZXJ2aWNlcyM4Ni4xMy4xNy4wMC4wMAotdW5zcHNjNyM4Ni4xMy4xOC4wMC4wMCNNaWxpdGFyeSBlZHVjYXRpb24jODYuMTMuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTMuMTguMDEuMDAjU2VydmljZSBhY2FkZW1pZXMjODYuMTMuMTguMDAuMDAKLXVuc3BzYzcjODYuMTMuMTguMDIuMDAjUGlsb3Qgc2Nob29scyM4Ni4xMy4xOC4wMC4wMAotdW5zcHNjNyM4Ni4xMy4xOC4wMy4wMCNNaWxpdGFyeSBwb2xpY2UgdHJhaW5pbmcjODYuMTMuMTguMDAuMDAKLXVuc3BzYzcjODYuMTMuMTguMDQuMDAjV2FyIGNvbGxlZ2UjODYuMTMuMTguMDAuMDAKLXVuc3BzYzcjODYuMTMuMTkuMDAuMDAjU2Nob29scyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzg2LjEzLjAwLjAwLjAwCi11bnNwc2M3Izg2LjEzLjE5LjAxLjAwI1ByaW1hcnkgc2Nob29saW5nIHNlcnZpY2VzIGZvciBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpZXMjODYuMTMuMTkuMDAuMDAKLXVuc3BzYzcjODYuMTMuMTkuMDIuMDAjU2Vjb25kYXJ5IHNjaG9vbGluZyBzZXJ2aWNlcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzg2LjEzLjE5LjAwLjAwCi11bnNwc2M3Izg2LjEzLjE5LjAzLjAwI1NwZWNpYWxpemVkIHNjaG9vbHMgZm9yIHBlb3BsZSB3aXRoIGRpc2FiaWxpdGllcyM4Ni4xMy4xOS4wMC4wMAotdW5zcHNjNyM4Ni4xMy4xOS4wNC4wMCNTcGVjaWFsaXplZCByZWhhYmlsaXRhdGlvbiBzZXJ2aWNlcyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzg2LjEzLjE5LjAwLjAwCi11bnNwc2M3Izg2LjE0LjAwLjAwLjAwI0VkdWNhdGlvbmFsIGZhY2lsaXRpZXMjODYuMDAuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTQuMTUuMDAuMDAjRWR1Y2F0aW9uYWwgZ3VpZGFuY2Ugc2VydmljZXMjODYuMTQuMDAuMDAuMDAKLXVuc3BzYzcjODYuMTQuMTUuMDEuMDAjRWR1Y2F0aW9uYWwgYWR2aXNvcnkgc2VydmljZXMjODYuMTQuMTUuMDAuMDAKLXVuc3BzYzcjODYuMTQuMTUuMDIuMDAjVW5pdmVyc2l0aWVzIGNvb3BlcmF0aW9uIGd1aWRhbmNlIHNlcnZpY2VzIzg2LjE0LjE1LjAwLjAwCi11bnNwc2M3Izg2LjE0LjE1LjAzLjAwI1N0dWR5IGFicm9hZCBhZHZpc29yeSBzZXJ2aWNlcyM4Ni4xNC4xNS4wMC4wMAotdW5zcHNjNyM4Ni4xNC4xNi4wMC4wMCNTdHVkZW50cyBvcmdhbml6YXRpb25zIzg2LjE0LjAwLjAwLjAwCi11bnNwc2M3Izg2LjE0LjE2LjAxLjAwI1N0dWRlbnRzIGhvYmJ5IGNsdWJzIzg2LjE0LjE2LjAwLjAwCi11bnNwc2M3Izg2LjE0LjE2LjAyLjAwI1N0dWRlbnRzIHVuaW9ucyM4Ni4xNC4xNi4wMC4wMAotdW5zcHNjNyM4Ni4xNC4xNi4wMy4wMCNTdHVkZW50cyB0cmF2ZWxsaW5nIG9yZ2FuaXphdGlvbnMjODYuMTQuMTYuMDAuMDAKLXVuc3BzYzcjODYuMTQuMTcuMDAuMDAjRWR1Y2F0aW9uYWwgdGVjaG5vbG9neSM4Ni4xNC4wMC4wMC4wMAotdW5zcHNjNyM4Ni4xNC4xNy4wMS4wMCNMYW5ndWFnZSBsYWJvcmF0b3JpZXMjODYuMTQuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTQuMTcuMDIuMDAjQXVkaW8gdmlzdWFsIHRlY2hub2xvZ3kjODYuMTQuMTcuMDAuMDAKLXVuc3BzYzcjODYuMTQuMTcuMDMuMDAjQ29tcHV0ZXIgcHJvZ3JhbW1lZCBpbnN0cnVjdGlvbiM4Ni4xNC4xNy4wMC4wMAotdW5zcHNjNyM4Ni4xNC4xNy4wNC4wMCNMaWJyYXJ5IG9yIGRvY3VtZW50YXRpb24gc2VydmljZXMjODYuMTQuMTcuMDAuMDAKLXVuc3BzYzcjOTAuMDAuMDAuMDAuMDAjVHJhdmVsIGFuZCBGb29kIGFuZCBMb2RnaW5nIGFuZCBFbnRlcnRhaW5tZW50IFNlcnZpY2VzIzkwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzkwLjEwLjAwLjAwLjAwI1Jlc3RhdXJhbnRzIGFuZCBjYXRlcmluZyM5MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM5MC4xMC4xNS4wMC4wMCNFYXRpbmcgYW5kIGRyaW5raW5nIGVzdGFibGlzaG1lbnRzIzkwLjEwLjAwLjAwLjAwCi11bnNwc2M3IzkwLjEwLjE1LjAxLjAwI1Jlc3RhdXJhbnRzIzkwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzkwLjEwLjE1LjAyLjAwI0JhcnMjOTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjOTAuMTAuMTUuMDMuMDAjRmFzdCBmb29kIGVzdGFibGlzaG1lbnRzIzkwLjEwLjE1LjAwLjAwCi11bnNwc2M3IzkwLjEwLjE1LjA0LjAwI09uIHN0cmVldCBmb29kIHZlbmRvcnMjOTAuMTAuMTUuMDAuMDAKLXVuc3BzYzcjOTAuMTAuMTYuMDAuMDAjQmFucXVldCBhbmQgY2F0ZXJpbmcgc2VydmljZXMjOTAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTAuMTYuMDEuMDAjQmFucXVldCBmYWNpbGl0aWVzIzkwLjEwLjE2LjAwLjAwCi11bnNwc2M3IzkwLjEwLjE2LjAyLjAwI1BhcnR5IHRlbnQgc2VydmljZXMjOTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTAuMTAuMTYuMDMuMDAjQ2F0ZXJpbmcgc2VydmljZXMjOTAuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTAuMTAuMTYuMDQuMDAjQ29uc3RydWN0aW9uIG9yIHdvcmsgc2l0ZSBjYXRlcmluZyBzZXJ2aWNlcyM5MC4xMC4xNi4wMC4wMAotdW5zcHNjNyM5MC4xMC4xNy4wMC4wMCNDYWZldGVyaWEgc2VydmljZXMjOTAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTAuMTcuMDEuMDAjT24gc2l0ZSBjYWZldGVyaWEgbWFuYWdlbWVudCM5MC4xMC4xNy4wMC4wMAotdW5zcHNjNyM5MC4xMC4xOC4wMC4wMCNDYXJyeW91dCBhbmQgdGFrZWF3YXkgc2VydmljZXMjOTAuMTAuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTAuMTguMDEuMDAjUHJvZmVzc2lvbmFsbHkgcHJlcGFyZWQgY2FycnlvdXQgbWVhbHMjOTAuMTAuMTguMDAuMDAKLXVuc3BzYzcjOTAuMTAuMTguMDIuMDAjRGVsaXZlcmVkIG1lYWxzIHNlcnZpY2VzIzkwLjEwLjE4LjAwLjAwCi11bnNwc2M3IzkwLjExLjAwLjAwLjAwI0hvdGVscyBhbmQgbG9kZ2luZyBhbmQgbWVldGluZyBmYWNpbGl0aWVzIzkwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzkwLjExLjE1LjAwLjAwI0hvdGVscyBhbmQgbW90ZWxzIGFuZCBpbm5zIzkwLjExLjAwLjAwLjAwCi11bnNwc2M3IzkwLjExLjE1LjAxLjAwI0hvdGVscyM5MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM5MC4xMS4xNS4wMi4wMCNMb2RnZXMgb3IgcmVzb3J0cyM5MC4xMS4xNS4wMC4wMAotdW5zcHNjNyM5MC4xMS4xNS4wMy4wMCNCZWQgYW5kIGJyZWFrZmFzdCBpbm5zIzkwLjExLjE1LjAwLjAwCi11bnNwc2M3IzkwLjExLjE1LjA0LjAwI0NvdHRhZ2UgcmVudGFsIHNlcnZpY2VzIzkwLjExLjE1LjAwLjAwCi11bnNwc2M3IzkwLjExLjE2LjAwLjAwI01lZXRpbmcgZmFjaWxpdGllcyM5MC4xMS4wMC4wMC4wMAotdW5zcHNjNyM5MC4xMS4xNi4wMS4wMCNDb25mZXJlbmNlIGNlbnRlcnMjOTAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjOTAuMTEuMTYuMDIuMDAjVmlkZW9jb25mZXJlbmNpbmcgZmFjaWxpdGllcyM5MC4xMS4xNi4wMC4wMAotdW5zcHNjNyM5MC4xMS4xNi4wMy4wMCNNZWV0aW5nIG9yIGJhbnF1ZXQgcm9vbXMjOTAuMTEuMTYuMDAuMDAKLXVuc3BzYzcjOTAuMTEuMTcuMDAuMDAjQ2FtcGluZyBhbmQgd2lsZGVybmVzcyBmYWNpbGl0aWVzIzkwLjExLjAwLjAwLjAwCi11bnNwc2M3IzkwLjExLjE3LjAxLjAwI0NhbXBzaXRlcyM5MC4xMS4xNy4wMC4wMAotdW5zcHNjNyM5MC4xMS4xNy4wMi4wMCNHb3Zlcm5tZW50IG93bmVkIHBhcmtzIzkwLjExLjE3LjAwLjAwCi11bnNwc2M3IzkwLjExLjE3LjAzLjAwI1JlY3JlYXRpb25hbCB2ZWhpY2xlIGNhbXBzaXRlIGZhY2lsaXRpZXMjOTAuMTEuMTcuMDAuMDAKLXVuc3BzYzcjOTAuMTIuMDAuMDAuMDAjVHJhdmVsIGZhY2lsaXRhdGlvbiM5MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM5MC4xMi4xNS4wMC4wMCNUcmF2ZWwgYWdlbnRzIzkwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzkwLjEyLjE1LjAxLjAwI1RvdXIgYXJyYW5nZW1lbnQgc2VydmljZXMjOTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTAuMTIuMTUuMDIuMDAjVHJhdmVsIGFnZW5jaWVzIzkwLjEyLjE1LjAwLjAwCi11bnNwc2M3IzkwLjEyLjE1LjAzLjAwI0NoYXJ0ZXJpbmcgc2VydmljZXMjOTAuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTAuMTIuMTYuMDAuMDAjVHJhdmVsIGRvY3VtZW50IGFzc2lzdGFuY2UjOTAuMTIuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTIuMTYuMDEuMDAjUGFzc3BvcnQgc2VydmljZXMjOTAuMTIuMTYuMDAuMDAKLXVuc3BzYzcjOTAuMTIuMTYuMDIuMDAjVmlzYSBvciBhdXhpbGxpYXJ5IGRvY3VtZW50IHNlcnZpY2VzIzkwLjEyLjE2LjAwLjAwCi11bnNwc2M3IzkwLjEyLjE3LjAwLjAwI0d1aWRlcyBhbmQgaW50ZXJwcmV0ZXJzIzkwLjEyLjAwLjAwLjAwCi11bnNwc2M3IzkwLjEyLjE3LjAxLjAwI0FyZWEgb3IgdG91ciBndWlkZXMjOTAuMTIuMTcuMDAuMDAKLXVuc3BzYzcjOTAuMTIuMTcuMDIuMDAjSW50ZXJwcmV0ZXJzIzkwLjEyLjE3LjAwLjAwCi11bnNwc2M3IzkwLjEzLjAwLjAwLjAwI1BlcmZvcm1pbmcgYXJ0cyM5MC4wMC4wMC4wMC4wMAotdW5zcHNjNyM5MC4xMy4xNS4wMC4wMCNMaXZlIHBlcmZvcm1hbmNlcyM5MC4xMy4wMC4wMC4wMAotdW5zcHNjNyM5MC4xMy4xNS4wMS4wMCNUaGVhdHJpY2FsIHBlcmZvcm1hbmNlcyBvciBwbGF5cyM5MC4xMy4xNS4wMC4wMAotdW5zcHNjNyM5MC4xMy4xNS4wMi4wMCNEYW5jZSBwZXJmb3JtYW5jZXMjOTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjOTAuMTMuMTUuMDMuMDAjT3BlcmEjOTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjOTAuMTMuMTUuMDQuMDAjQ29uY2VydHMjOTAuMTMuMTUuMDAuMDAKLXVuc3BzYzcjOTAuMTMuMTYuMDAuMDAjVGFwZWQgb3IgbW90aW9uIHBpY3R1cmUgcGVyZm9ybWFuY2VzIzkwLjEzLjAwLjAwLjAwCi11bnNwc2M3IzkwLjEzLjE2LjAxLjAwI01vdGlvbiBwaWN0dXJlcyM5MC4xMy4xNi4wMC4wMAotdW5zcHNjNyM5MC4xMy4xNi4wMi4wMCNWaWRlb3RhcGVkIGVudGVydGFpbm1lbnQjOTAuMTMuMTYuMDAuMDAKLXVuc3BzYzcjOTAuMTQuMDAuMDAuMDAjQ29tbWVyY2lhbCBzcG9ydHMjOTAuMDAuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTQuMTUuMDAuMDAjUHJvZmVzc2lvbmFsIHNwb3J0aW5nIGV2ZW50cyM5MC4xNC4wMC4wMC4wMAotdW5zcHNjNyM5MC4xNC4xNS4wMS4wMCNMZWFndWUgcGxheSM5MC4xNC4xNS4wMC4wMAotdW5zcHNjNyM5MC4xNC4xNS4wMi4wMCNDb21wZXRpdGl2ZSBldmVudHMjOTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjOTAuMTQuMTUuMDMuMDAjRXhoaWJpdGlvbnMjOTAuMTQuMTUuMDAuMDAKLXVuc3BzYzcjOTAuMTQuMTYuMDAuMDAjU3BvcnRzIGV2ZW50IHByb21vdGlvbiBhbmQgc3BvbnNvcnNoaXAjOTAuMTQuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTQuMTYuMDEuMDAjQ29tcGFueSBzcG9uc29yZWQgcHJvZmVzc2lvbmFsIHNwb3J0cyBldmVudHMjOTAuMTQuMTYuMDAuMDAKLXVuc3BzYzcjOTAuMTQuMTYuMDIuMDAjQ29tcGFueSBzcG9uc29yZWQgYW1hdGV1ciBzcG9ydHMgZXZlbnRzIzkwLjE0LjE2LjAwLjAwCi11bnNwc2M3IzkwLjE0LjE2LjAzLjAwI1Nwb3J0aW5nIGV2ZW50IHByb21vdGlvbiBzZXJ2aWNlcyM5MC4xNC4xNi4wMC4wMAotdW5zcHNjNyM5MC4xNC4xNy4wMC4wMCNBbWF0ZXVyIGFuZCByZWNyZWF0aW9uYWwgc3BvcnRzIzkwLjE0LjAwLjAwLjAwCi11bnNwc2M3IzkwLjE0LjE3LjAxLjAwI1lvdXRoIGNvbXBldGl0aXZlIHNwb3J0cyBsZWFndWVzIzkwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzkwLjE0LjE3LjAyLjAwI0FkdWx0IHNwb3J0cyBsZWFndWVzIzkwLjE0LjE3LjAwLjAwCi11bnNwc2M3IzkwLjE0LjE3LjAzLjAwI1lvdXRoIHNwb3J0cyM5MC4xNC4xNy4wMC4wMAotdW5zcHNjNyM5MC4xNS4wMC4wMC4wMCNFbnRlcnRhaW5tZW50IHNlcnZpY2VzIzkwLjAwLjAwLjAwLjAwCi11bnNwc2M3IzkwLjE1LjE1LjAwLjAwI1RvdXJpc3QgYXR0cmFjdGlvbnMjOTAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTUuMTUuMDEuMDAjTXVzZXVtcyM5MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM5MC4xNS4xNS4wMi4wMCNIaXN0b3JpY2FsIG9yIGN1bHR1cmFsIHNpdGVzIzkwLjE1LjE1LjAwLjAwCi11bnNwc2M3IzkwLjE1LjE1LjAzLjAwI1pvb2xvZ2ljYWwgZ2FyZGVucyM5MC4xNS4xNS4wMC4wMAotdW5zcHNjNyM5MC4xNS4xNi4wMC4wMCNUcmF2ZWxsaW5nIHNob3dzIzkwLjE1LjAwLjAwLjAwCi11bnNwc2M3IzkwLjE1LjE2LjAxLjAwI0NpcmN1c2VzIzkwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzkwLjE1LjE2LjAyLjAwI1RvdXJpbmcgY29tcGFuaWVzIzkwLjE1LjE2LjAwLjAwCi11bnNwc2M3IzkwLjE1LjE2LjAzLjAwI0FydCBleGhpYml0aW9ucyM5MC4xNS4xNi4wMC4wMAotdW5zcHNjNyM5MC4xNS4xNy4wMC4wMCNBbXVzZW1lbnQgcGFya3MjOTAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTUuMTcuMDEuMDAjVGhlbWUgcGFya3MjOTAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjOTAuMTUuMTcuMDIuMDAjV2F0ZXIgcGFya3MjOTAuMTUuMTcuMDAuMDAKLXVuc3BzYzcjOTAuMTUuMTcuMDMuMDAjTWluaWF0dXJlIGdvbGYgY291cnNlcyM5MC4xNS4xNy4wMC4wMAotdW5zcHNjNyM5MC4xNS4xOC4wMC4wMCNDYXJuaXZhbHMgYW5kIGZhaXJzIzkwLjE1LjAwLjAwLjAwCi11bnNwc2M3IzkwLjE1LjE4LjAxLjAwI1RyYXZlbGxpbmcgY2Fybml2YWxzIzkwLjE1LjE4LjAwLjAwCi11bnNwc2M3IzkwLjE1LjE4LjAyLjAwI0ZhaXIgb3JnYW5pemF0aW9uIG9yIG1hbmFnZW1lbnQgc2VydmljZXMjOTAuMTUuMTguMDAuMDAKLXVuc3BzYzcjOTAuMTUuMTkuMDAuMDAjR2FtYmxpbmcgYW5kIGJldHRpbmcgZXN0YWJsaXNobWVudHMjOTAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTUuMTkuMDEuMDAjQ2FzaW5vcyM5MC4xNS4xOS4wMC4wMAotdW5zcHNjNyM5MC4xNS4xOS4wMi4wMCNDYXJkIGNsdWJzIzkwLjE1LjE5LjAwLjAwCi11bnNwc2M3IzkwLjE1LjE5LjAzLjAwI1JhY2V0cmFja3MjOTAuMTUuMTkuMDAuMDAKLXVuc3BzYzcjOTAuMTUuMjAuMDAuMDAjTmlnaHRjbHVicyBhbmQgZGFuY2UgaGFsbHMjOTAuMTUuMDAuMDAuMDAKLXVuc3BzYzcjOTAuMTUuMjAuMDEuMDAjTmlnaHRjbHVicyM5MC4xNS4yMC4wMC4wMAotdW5zcHNjNyM5MC4xNS4yMC4wMi4wMCNEYW5jZSBoYWxscyM5MC4xNS4yMC4wMC4wMAotdW5zcHNjNyM5MS4wMC4wMC4wMC4wMCNQZXJzb25hbCBhbmQgRG9tZXN0aWMgU2VydmljZXMjOTEuMDAuMDAuMDAuMDAKLXVuc3BzYzcjOTEuMTAuMDAuMDAuMDAjUGVyc29uYWwgYXBwZWFyYW5jZSM5MS4wMC4wMC4wMC4wMAotdW5zcHNjNyM5MS4xMC4xNS4wMC4wMCNTcGEgYW5kIHdvcmtvdXQgYW5kIHJlanV2ZW5hdGlvbiBmYWNpbGl0aWVzIzkxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzkxLjEwLjE1LjAxLjAwI0hlYWx0aCBvciBmaXRuZXNzIGNsdWJzIzkxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzkxLjEwLjE1LjAyLjAwI1NwYXMjOTEuMTAuMTUuMDAuMDAKLXVuc3BzYzcjOTEuMTAuMTUuMDMuMDAjTWFzc2FnZSBzZXJ2aWNlcyM5MS4xMC4xNS4wMC4wMAotdW5zcHNjNyM5MS4xMC4xNS4wNC4wMCNBZXJvYmljcyBvciBleGVyY2lzZSBjbGFzc2VzIzkxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzkxLjEwLjE1LjA1LjAwI1R1cmtpc2ggb3Igc3RlYW0gb3Igcml0dWFsIGJhdGhzIzkxLjEwLjE1LjAwLjAwCi11bnNwc2M3IzkxLjEwLjE2LjAwLjAwI0ZhY2UgYW5kIGJvZHkgY2FyZSBhbmQgYWRvcm5tZW50IzkxLjEwLjAwLjAwLjAwCi11bnNwc2M3IzkxLjEwLjE2LjAxLjAwI0ZhY2lhbCBvciBib2R5IHRyZWF0bWVudHMjOTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTEuMTAuMTYuMDIuMDAjTWFrZSB1cCBjb25zdWx0YXRpb24jOTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTEuMTAuMTYuMDMuMDAjVGF0dG9vIHNlcnZpY2VzIzkxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzkxLjEwLjE2LjA0LjAwI0JvZHkgcGllcmNpbmcgc2VydmljZXMjOTEuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTEuMTAuMTYuMDUuMDAjRWxlY3Ryb2x5c2lzIzkxLjEwLjE2LjAwLjAwCi11bnNwc2M3IzkxLjEwLjE3LjAwLjAwI0hhaXIgY2FyZSM5MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM5MS4xMC4xNy4wMS4wMCNIYWlyIGN1dHRpbmcgb3IgY29sb3Igc2VydmljZXMjOTEuMTAuMTcuMDAuMDAKLXVuc3BzYzcjOTEuMTAuMTcuMDIuMDAjSGFpciB3ZWF2aW5nIG9yIHJlcGxhY2VtZW50IHNlcnZpY2VzIzkxLjEwLjE3LjAwLjAwCi11bnNwc2M3IzkxLjEwLjE4LjAwLjAwI0Nsb3RoaW5nIHJlbnRhbCM5MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM5MS4xMC4xOC4wMS4wMCNUdXhlZG8gb3IgZm9ybWFsd2VhciByZW50YWwjOTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjOTEuMTAuMTguMDIuMDAjRXZlbmluZyBvciBicmlkYWwgZ293biBvciBkcmVzcyByZW50YWwjOTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjOTEuMTAuMTguMDMuMDAjQ29zdHVtZSByZW50YWwjOTEuMTAuMTguMDAuMDAKLXVuc3BzYzcjOTEuMTAuMTkuMDAuMDAjRmFzaGlvbiBjb25zdWx0YW50cyM5MS4xMC4wMC4wMC4wMAotdW5zcHNjNyM5MS4xMC4xOS4wMS4wMCNDb2xvciBjb25zdWx0YW50IzkxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzkxLjEwLjE5LjAyLjAwI0Zhc2hpb24gc3R5bGlzdCM5MS4xMC4xOS4wMC4wMAotdW5zcHNjNyM5MS4xMC4xOS4wMy4wMCNXYXJkcm9iZSBjb25zdWx0YW50IzkxLjEwLjE5LjAwLjAwCi11bnNwc2M3IzkxLjExLjAwLjAwLjAwI0RvbWVzdGljIGFuZCBwZXJzb25hbCBhc3Npc3RhbmNlIzkxLjAwLjAwLjAwLjAwCi11bnNwc2M3IzkxLjExLjE1LjAwLjAwI0xhdW5kZXJpbmcgc2VydmljZXMjOTEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjOTEuMTEuMTUuMDEuMDAjVW5pZm9ybSByZW50YWwjOTEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjOTEuMTEuMTUuMDIuMDAjTGF1bmRyeSBzZXJ2aWNlcyM5MS4xMS4xNS4wMC4wMAotdW5zcHNjNyM5MS4xMS4xNS4wMy4wMCNEcnkgY2xlYW5pbmcjOTEuMTEuMTUuMDAuMDAKLXVuc3BzYzcjOTEuMTEuMTUuMDQuMDAjQ29pbiBvcGVyYXRlZCBzZWxmIHNlcnZpY2UgbGF1bmRyaWVzIzkxLjExLjE1LjAwLjAwCi11bnNwc2M3IzkxLjExLjE2LjAwLjAwI0hvdXNlaG9sZCBhc3Npc3RhbmNlIGFuZCBjYXJlIzkxLjExLjAwLjAwLjAwCi11bnNwc2M3IzkxLjExLjE2LjAxLjAwI0hvdXNla2VlcGluZyBzZXJ2aWNlcyM5MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM5MS4xMS4xNi4wMi4wMCNZYXJkIG9yIHBvb2wgY2FyZSBzZXJ2aWNlcyM5MS4xMS4xNi4wMC4wMAotdW5zcHNjNyM5MS4xMS4xNi4wMy4wMCNDb29raW5nIG9yIGZvb2QgcHJlcGFyYXRpb24gc2VydmljZXMjOTEuMTEuMTYuMDAuMDAKLXVuc3BzYzcjOTEuMTEuMTcuMDAuMDAjQ29uc3VtZXIgYnV5aW5nIGFuZCBiYXJ0ZXJpbmcgc2VydmljZXMjOTEuMTEuMDAuMDAuMDAKLXVuc3BzYzcjOTEuMTEuMTcuMDEuMDAjVXNlZCBjbG90aGluZyBjb25zaWdubWVudCBzZXJ2aWNlcyM5MS4xMS4xNy4wMC4wMAotdW5zcHNjNyM5MS4xMS4xNy4wMi4wMCNCYXJ0ZXIgY2x1YnMgb3IgY29uc29ydGl1bXMjOTEuMTEuMTcuMDAuMDAKLXVuc3BzYzcjOTEuMTEuMTcuMDMuMDAjV2FyZHJvYmUgYnV5aW5nIHNlcnZpY2VzIzkxLjExLjE3LjAwLjAwCi11bnNwc2M3IzkxLjExLjE4LjAwLjAwI1BlcnNvbmFsIGl0ZW0gY2FyZSBhbmQgc3RvcmFnZSM5MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM5MS4xMS4xOC4wMS4wMCNWYWxldCBzZXJ2aWNlcyM5MS4xMS4xOC4wMC4wMAotdW5zcHNjNyM5MS4xMS4xOC4wMi4wMCNDaGVjayByb29tIGNvbmNlc3Npb25zIzkxLjExLjE4LjAwLjAwCi11bnNwc2M3IzkxLjExLjE4LjAzLjAwI0xvY2tlciByZW50YWwjOTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjOTEuMTEuMTguMDQuMDAjRnVyIHN0b3JhZ2UjOTEuMTEuMTguMDAuMDAKLXVuc3BzYzcjOTEuMTEuMTkuMDAuMDAjUGVyc29uYWwgY2FyZSBzZXJ2aWNlcyM5MS4xMS4wMC4wMC4wMAotdW5zcHNjNyM5MS4xMS4xOS4wMS4wMCNJbmZhbnQgb3IgY2hpbGQgZGF5Y2FyZSBzZXJ2aWNlcyM5MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM5MS4xMS4xOS4wMi4wMCNOYW5ueSBvciBiYWJ5c2l0dGluZyBzZXJ2aWNlcyM5MS4xMS4xOS4wMC4wMAotdW5zcHNjNyM5MS4xMS4xOS4wMy4wMCNFbGRlcmx5IGRheWNhcmUgc2VydmljZXMjOTEuMTEuMTkuMDAuMDAKLXVuc3BzYzcjOTEuMTEuMTkuMDQuMDAjQXNzaXN0ZWQgbGl2aW5nIHNlcnZpY2VzIzkxLjExLjE5LjAwLjAwCi11bnNwc2M3IzkyLjAwLjAwLjAwLjAwI05hdGlvbmFsIERlZmVuc2UgYW5kIFB1YmxpYyBPcmRlciBhbmQgU2VjdXJpdHkgYW5kIFNhZmV0eSBTZXJ2aWNlcyM5Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM5Mi4xMC4wMC4wMC4wMCNQdWJsaWMgb3JkZXIgYW5kIHNhZmV0eSM5Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xNS4wMC4wMCNQb2xpY2Ugc2VydmljZXMjOTIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjOTIuMTAuMTUuMDEuMDAjUG9saWNpbmcgc2VydmljZXMjOTIuMTAuMTUuMDAuMDAKLXVuc3BzYzcjOTIuMTAuMTUuMDIuMDAjU3BlY2lhbCB3ZWFwb25zIGFuZCB0YWN0aWNzIChTV0FUKSBvciByaW90IHRlYW1zIzkyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzkyLjEwLjE1LjAzLjAwI0NvbW11bml0eSBvdXRyZWFjaCBwcm9ncmFtcyM5Mi4xMC4xNS4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xNS4wNC4wMCNDcmltZSBkZXRlcnJlbmNlIHByb2dyYW1zIzkyLjEwLjE1LjAwLjAwCi11bnNwc2M3IzkyLjEwLjE2LjAwLjAwI0ZpcmUgc2VydmljZXMjOTIuMTAuMDAuMDAuMDAKLXVuc3BzYzcjOTIuMTAuMTYuMDEuMDAjTXVuaWNpcGFsIG9yIG5hdGlvbmFsIGZpcmVmaWdodGluZyBzZXJ2aWNlcyM5Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xNi4wMi4wMCNWb2x1bnRlZXIgZmlyZSBkZXBhcnRtZW50IHNlcnZpY2VzIzkyLjEwLjE2LjAwLjAwCi11bnNwc2M3IzkyLjEwLjE2LjAzLjAwI0ZpcmUgcHJldmVudGlvbiBzZXJ2aWNlcyM5Mi4xMC4xNi4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xNi4wNC4wMCNGb3Jlc3Qgb3Igd2lsZGVybmVzcyBmaXJlZmlnaHRpbmcgc2VydmljZXMjOTIuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTIuMTAuMTcuMDAuMDAjSmFpbCBhbmQgcHJpc29uIHN5c3RlbSM5Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xNy4wMS4wMCNKYWlsIG9yIHByaXNvbiBvciBwZW5pdGVudGlhcnkgc2VydmljZXMjOTIuMTAuMTcuMDAuMDAKLXVuc3BzYzcjOTIuMTAuMTcuMDIuMDAjWW91dGggY2FtcHMgb3IgZmFjaWxpdGllcyBzZXJ2aWNlcyM5Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xNy4wMy4wMCNIYWxmIHdheSBob3VzZSBzZXJ2aWNlcyM5Mi4xMC4xNy4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xNy4wNC4wMCNNZW50YWxseSBpbXBhaXJlZCBjcmltaW5hbCBmYWNpbGl0aWVzIzkyLjEwLjE3LjAwLjAwCi11bnNwc2M3IzkyLjEwLjE4LjAwLjAwI0NvdXJ0IHN5c3RlbSM5Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xOC4wMS4wMCNTaGVyaWZmcyBzZXJ2aWNlcyM5Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xOC4wMi4wMCNQbGVhIGJhcmdhaW4gYWdyZWVtZW50cyM5Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xOC4wMy4wMCNDaXZpbCBjYXNlIGNvdXJ0IGV4cGVuc2VzIzkyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzkyLjEwLjE4LjA0LjAwI0NyaW1pbmFsIGNhc2UgZmVlcyBvciBmaW5lcyM5Mi4xMC4xOC4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xOC4wNS4wMCNBcHBlYWxzIHByb2Nlc3Mgb3IganVkaWNpYWwgcmV2aWV3IzkyLjEwLjE4LjAwLjAwCi11bnNwc2M3IzkyLjEwLjE5LjAwLjAwI1Jlc2N1ZSBzZXJ2aWNlcyM5Mi4xMC4wMC4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xOS4wMS4wMCNTZWFyY2ggYW5kIHJlc2N1ZSB0ZWFtcyM5Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xOS4wMi4wMCNBbWJ1bGFuY2Ugc2VydmljZXMjOTIuMTAuMTkuMDAuMDAKLXVuc3BzYzcjOTIuMTAuMTkuMDMuMDAjTGlmZSBzYXZpbmcgaGVsaWNvcHRlciBzZXJ2aWNlcyM5Mi4xMC4xOS4wMC4wMAotdW5zcHNjNyM5Mi4xMC4xOS4wNC4wMCNMaWZlZ3VhcmQgc2VydmljZXMgZm9yIHBvb2wgb3IgYmVhY2gjOTIuMTAuMTkuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMDAuMDAuMDAjTWlsaXRhcnkgc2VydmljZXMgYW5kIG5hdGlvbmFsIGRlZmVuc2UjOTIuMDAuMDAuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTUuMDAuMDAjTWFpbnRlbmFuY2Ugb2YgaW50ZXJuYXRpb25hbCBwZWFjZSBhbmQgc2VjdXJpdHkjOTIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTUuMDEuMDAjRGlzcHV0ZSBtZWRpYXRpb24gb3IgY29uY2lsaWF0aW9uIG9yIG5lZ290aWF0aW9uIG9yIHNldHRsZW1lbnQjOTIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTUuMDIuMDAjUGVhY2Uga2VlcGluZyBvcGVyYXRpb25zIzkyLjExLjE1LjAwLjAwCi11bnNwc2M3IzkyLjExLjE1LjAzLjAwI0NlYXNlIGZpcmUgYWdyZWVtZW50cyBvciB0cnVjZSBzdXBlcnZpc2lvbiM5Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xNS4wNC4wMCNGYWN0IGZpbmRpbmcgbWlzc2lvbnMjOTIuMTEuMTUuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTUuMDUuMDAjV2FyIHByZXZlbnRpb24gc3RyYXRlZ2llcyM5Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xNS4wNi4wMCNDb3VudGVydGVycm9yaXNtIzkyLjExLjE1LjAwLjAwCi11bnNwc2M3IzkyLjExLjE1LjA3LjAwI0VtYmFyZ29lcyM5Mi4xMS4xNS4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xNi4wMC4wMCNEaXNhcm1hbWVudCM5Mi4xMS4wMC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xNi4wMS4wMCNBcm1zIGxpbWl0YXRpb25zIzkyLjExLjE2LjAwLjAwCi11bnNwc2M3IzkyLjExLjE2LjAyLjAwI0NvbnZlbnRpb25hbCBhcm1zIGRpc2FybWFtZW50IzkyLjExLjE2LjAwLjAwCi11bnNwc2M3IzkyLjExLjE2LjAzLjAwI051Y2xlYXIgZnJlZXplcyBvciBkaXNhcm1hbWVudCM5Mi4xMS4xNi4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xNi4wNC4wMCNXZWFwb25zIGRlc3RydWN0aW9uIzkyLjExLjE2LjAwLjAwCi11bnNwc2M3IzkyLjExLjE2LjA1LjAwI0Rpc2FybWFtZW50IG5lZ290aWF0aW9ucyBvciBhZ3JlZW1lbnRzIzkyLjExLjE2LjAwLjAwCi11bnNwc2M3IzkyLjExLjE2LjA2LjAwI011dHVhbCBvciBiYWxhbmNlZCBmb3JjZSByZWR1Y3Rpb25zIzkyLjExLjE2LjAwLjAwCi11bnNwc2M3IzkyLjExLjE3LjAwLjAwI01pbGl0YXJ5IHNjaWVuY2UgYW5kIHJlc2VhcmNoIzkyLjExLjAwLjAwLjAwCi11bnNwc2M3IzkyLjExLjE3LjAxLjAwI01pbGl0YXJ5IGhpc3RvcnkjOTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTcuMDIuMDAjQ29udmVudGlvbmFsIHdlYXBvbnMgdXNhZ2UjOTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTcuMDMuMDAjQ2hlbWljYWwgd2VhcG9ucyB1c2FnZSM5Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xNy4wNC4wMCNHdWVyaWxsYSB3YXJmYXJlIzkyLjExLjE3LjAwLjAwCi11bnNwc2M3IzkyLjExLjE3LjA1LjAwI01pbGl0YXJ5IHN0cmF0ZWd5IzkyLjExLjE3LjAwLjAwCi11bnNwc2M3IzkyLjExLjE3LjA2LjAwI0FlcmlhbCBtYW5ldXZlcnMjOTIuMTEuMTcuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTcuMDcuMDAjTmF2YWwgb3Igc3VibWFyaW5lIG1hbmV1dmVycyM5Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xNy4wOC4wMCNMYW5kIG1hbmV1dmVycyM5Mi4xMS4xNy4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOC4wMC4wMCNNaWxpdGFyeSBwZXJzb25uZWwgYW5kIGRpc2NpcGxpbmUjOTIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTguMDEuMDAjQ2l2aWwgZGVmZW5zZSM5Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOC4wMi4wMCNDb21wdWxzb3J5IG1pbGl0YXJ5IHNlcnZpY2VzIzkyLjExLjE4LjAwLjAwCi11bnNwc2M3IzkyLjExLjE4LjAzLjAwI1ZvbHVudGFyeSBtaWxpdGFyeSBzZXJ2aWNlcyM5Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOC4wNC4wMCNNaWxpdGFyeSByZXNlcnZpc3RzIzkyLjExLjE4LjAwLjAwCi11bnNwc2M3IzkyLjExLjE4LjA1LjAwI0d1ZXJpbGxhcyM5Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOC4wNi4wMCNNZXJjZW5hcmllcyM5Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOC4wNy4wMCNWZXRlcmFucyM5Mi4xMS4xOC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOC4wOC4wMCNNaWxpdGFyeSBjb3VydHMjOTIuMTEuMTguMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTguMDkuMDAjTWlsaXRhcnkgb2ZmZW5zZXMjOTIuMTEuMTguMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTguMTAuMDAjTWlsaXRhcnkgcGVyc29ubmVsIzkyLjExLjE4LjAwLjAwCi11bnNwc2M3IzkyLjExLjE5LjAwLjAwI01pbGl0YXJ5IHBvbGljeSM5Mi4xMS4wMC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOS4wMS4wMCNOYXRpb25hbCBzZWN1cml0eSM5Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOS4wMi4wMCNEZWZlbnNlIGNvbnRyYWN0cyM5Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOS4wMy4wMCNOb24gZmlyc3QgdXNlIHBvbGljeSM5Mi4xMS4xOS4wMC4wMAotdW5zcHNjNyM5Mi4xMS4xOS4wNC4wMCNBcm1zIHJhY2UjOTIuMTEuMTkuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMTkuMDUuMDAjTWlsaXRhcnkgcmVsYXRpb25zIzkyLjExLjE5LjAwLjAwCi11bnNwc2M3IzkyLjExLjIwLjAwLjAwI01pbGl0YXJ5IHpvbmVzIzkyLjExLjAwLjAwLjAwCi11bnNwc2M3IzkyLjExLjIwLjAxLjAwI0RlbWlsaXRhcml6ZWQgem9uZXMjOTIuMTEuMjAuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjAuMDIuMDAjTnVjbGVhciBvciBjaGVtaWNhbCB3ZWFwb24gZnJlZSB6b25lcyM5Mi4xMS4yMC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4yMC4wMy4wMCNQZWFjZSB6b25lcyM5Mi4xMS4yMC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4yMC4wNC4wMCNObyBmbHkgem9uZXMjOTIuMTEuMjAuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjEuMDAuMDAjTnVjbGVhciB3YXJmYXJlIzkyLjExLjAwLjAwLjAwCi11bnNwc2M3IzkyLjExLjIxLjAxLjAwI051Y2xlYXIgc2FmZWd1YXJkcyM5Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM5Mi4xMS4yMS4wMi4wMCNOdWNsZWFyIHdlYXBvbiB0ZXN0cyM5Mi4xMS4yMS4wMC4wMAotdW5zcHNjNyM5Mi4xMS4yMS4wMy4wMCNOdWNsZWFyIG5vbiBwcm9saWZlcmF0aW9uIzkyLjExLjIxLjAwLjAwCi11bnNwc2M3IzkyLjExLjIyLjAwLjAwI01pbGl0YXJ5IHRhY3RpY3MjOTIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjIuMDEuMDAjV2VhcG9ucyBkZXBsb3ltZW50IzkyLjExLjIyLjAwLjAwCi11bnNwc2M3IzkyLjExLjIyLjAyLjAwI01pbGl0YXJ5IHJlY29ubmFpc3NhbmNlIzkyLjExLjIyLjAwLjAwCi11bnNwc2M3IzkyLjExLjIyLjAzLjAwI0FybXMgdHJhbnNmZXJzIzkyLjExLjIyLjAwLjAwCi11bnNwc2M3IzkyLjExLjIyLjA0LjAwI01pbGl0YXJ5IGFzc2lzdGFuY2UjOTIuMTEuMjIuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjIuMDUuMDAjVHJvb3Agd2l0aGRyYXdhbHMjOTIuMTEuMjIuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjIuMDYuMDAjUmFwaWQgZGVwbG95bWVudCBmb3JjZXMjOTIuMTEuMjIuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjIuMDcuMDAjRW52aXJvbm1lbnRhbCB3YXJmYXJlIzkyLjExLjIyLjAwLjAwCi11bnNwc2M3IzkyLjExLjIzLjAwLjAwI01pbGl0YXJ5IGJhc2VzIzkyLjExLjAwLjAwLjAwCi11bnNwc2M3IzkyLjExLjIzLjAxLjAwI0RvbWVzdGljIG1pbGl0YXJ5IGJhc2VzIzkyLjExLjIzLjAwLjAwCi11bnNwc2M3IzkyLjExLjIzLjAyLjAwI0ZvcmVpZ24gbWlsaXRhcnkgYmFzZXMjOTIuMTEuMjMuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjMuMDMuMDAjTmF2YWwgYmFzZXMjOTIuMTEuMjMuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjQuMDAuMDAjQXJtZWQgY29uZmxpY3RzIGFuZCBpbmNpZGVudHMjOTIuMTEuMDAuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjQuMDEuMDAjQm9yZGVyIGluY2lkZW50cyM5Mi4xMS4yNC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4yNC4wMi4wMCNMaW1pdGVkIHdhciM5Mi4xMS4yNC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4yNC4wMy4wMCNOdWNsZWFyIHdhciM5Mi4xMS4yNC4wMC4wMAotdW5zcHNjNyM5Mi4xMS4yNC4wNC4wMCNTcGFjZSBiYXNlZCB3YXIjOTIuMTEuMjQuMDAuMDAKLXVuc3BzYzcjOTIuMTEuMjQuMDUuMDAjUmVzcG9uc2UgdG8gdGVycm9yaXN0IGF0dGFja3MjOTIuMTEuMjQuMDAuMDAKLXVuc3BzYzcjOTIuMTIuMDAuMDAuMDAjU2VjdXJpdHkgYW5kIHBlcnNvbmFsIHNhZmV0eSM5Mi4wMC4wMC4wMC4wMAotdW5zcHNjNyM5Mi4xMi4xNS4wMC4wMCNHdWFyZCBzZXJ2aWNlcyM5Mi4xMi4wMC4wMC4wMAotdW5zcHNjNyM5Mi4xMi4xNS4wMS4wMCNBcm1vcmVkIGNhciBzZXJ2aWNlcyM5Mi4xMi4xNS4wMC4wMAotdW5zcHNjNyM5Mi4xMi4xNS4wMi4wMCNCdXJnbGFyeSBwcm90ZWN0aW9uIHNlcnZpY2VzIzkyLjEyLjE1LjAwLjAwCi11bnNwc2M3IzkyLjEyLjE1LjAzLjAwI0d1YXJkIGRvZyByZW50YWwjOTIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTIuMTIuMTUuMDQuMDAjU2VjdXJpdHkgZ3VhcmQgc2VydmljZXMjOTIuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTIuMTIuMTYuMDAuMDAjRGV0ZWN0aXZlIHNlcnZpY2VzIzkyLjEyLjAwLjAwLjAwCi11bnNwc2M3IzkyLjEyLjE2LjAxLjAwI0RldGVjdGl2ZSBhZ2VuY2llcyM5Mi4xMi4xNi4wMC4wMAotdW5zcHNjNyM5Mi4xMi4xNi4wMi4wMCNGaW5nZXJwcmludCBzZXJ2aWNlcyM5Mi4xMi4xNi4wMC4wMAotdW5zcHNjNyM5Mi4xMi4xNi4wMy4wMCNMaWUgZGV0ZWN0aW9uIHNlcnZpY2VzIzkyLjEyLjE2LjAwLjAwCi11bnNwc2M3IzkyLjEyLjE2LjA0LjAwI1ByaXZhdGUgaW52ZXN0aWdhdGlvbiBzZXJ2aWNlcyM5Mi4xMi4xNi4wMC4wMAotdW5zcHNjNyM5Mi4xMi4xNy4wMC4wMCNTZWN1cml0eSBzeXN0ZW1zIHNlcnZpY2VzIzkyLjEyLjAwLjAwLjAwCi11bnNwc2M3IzkyLjEyLjE3LjAxLjAwI1N1cnZlaWxsYW5jZSBvciBhbGFybSBtYWludGVuYW5jZSBvciBtb25pdG9yaW5nIzkyLjEyLjE3LjAwLjAwCi11bnNwc2M3IzkyLjEyLjE3LjAyLjAwI0ZpcmUgYWxhcm0gbWFpbnRlbmFuY2Ugb3IgbW9uaXRvcmluZyM5Mi4xMi4xNy4wMC4wMAotdW5zcHNjNyM5Mi4xMi4xNy4wMy4wMCNTdG9yZSBvciBidXNpbmVzcyBhbnRpIHRoZWZ0IHNlcnZpY2VzIzkyLjEyLjE3LjAwLjAwCi11bnNwc2M3IzkyLjEyLjE3LjA0LjAwI0NvbmZpbmVtZW50IHN1cnZlaWxsYW5jZSBzeXN0ZW1zIG1haW50ZW5hbmNlIG9yIG1vbml0b3JpbmcjOTIuMTIuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMDAuMDAuMDAuMDAjUG9saXRpY3MgYW5kIENpdmljIEFmZmFpcnMgU2VydmljZXMjOTMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTAuMDAuMDAuMDAjUG9saXRpY2FsIHN5c3RlbXMgYW5kIGluc3RpdHV0aW9ucyM5My4wMC4wMC4wMC4wMAotdW5zcHNjNyM5My4xMC4xNS4wMC4wMCNQb2xpdGljYWwgYm9kaWVzIzkzLjEwLjAwLjAwLjAwCi11bnNwc2M3IzkzLjEwLjE1LjAxLjAwI1BvbGl0aWNhbCBwYXJ0aWVzIHJlcHJlc2VudGF0aW9uIHNlcnZpY2VzIzkzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzkzLjEwLjE1LjAyLjAwI1BvbGl0aWNhbCBwYXJ0aWVzIGZ1bmQgcmFpc2luZyBzZXJ2aWNlcyM5My4xMC4xNS4wMC4wMAotdW5zcHNjNyM5My4xMC4xNS4wMy4wMCNQb2xpdGljYWwgcGFydGllcyBwdWJsaWMgYXBwZWFyYW5jZSBzZXJ2aWNlcyM5My4xMC4xNS4wMC4wMAotdW5zcHNjNyM5My4xMC4xNS4wNC4wMCNQb2xpdGljYWwgbGVnaXNsYXR1cmUgc2VydmljZXMjOTMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTAuMTUuMDUuMDAjUG9saXRpY2FsIGp1ZGljaWFsIHBvd2VyIG9yIHNlcnZpY2VzIzkzLjEwLjE1LjAwLjAwCi11bnNwc2M3IzkzLjEwLjE1LjA2LjAwI1BvbGl0aWNhbCBleGVjdXRpdmUgcG93ZXIgb3Igc2VydmljZXMjOTMuMTAuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTAuMTYuMDAuMDAjUG9saXRpY2FsIG9mZmljaWFscyM5My4xMC4wMC4wMC4wMAotdW5zcHNjNyM5My4xMC4xNi4wMS4wMCNDYWJpbmV0IG9mZmljZXJzIHNlcnZpY2VzIzkzLjEwLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEwLjE2LjAyLjAwI0dvdmVybm9ycyBzZXJ2aWNlcyM5My4xMC4xNi4wMC4wMAotdW5zcHNjNyM5My4xMC4xNi4wMy4wMCNIZWFkcyBvZiBzdGF0ZXMgc2VydmljZXMjOTMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTAuMTYuMDQuMDAjUHJlc2lkZW50aWFsIHNlcnZpY2VzIzkzLjEwLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEwLjE2LjA1LjAwI1ByaW1lIG1pbmlzdGVycyBzZXJ2aWNlcyM5My4xMC4xNi4wMC4wMAotdW5zcHNjNyM5My4xMC4xNi4wNi4wMCNNb25hcmNoIHNlcnZpY2VzIzkzLjEwLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEwLjE2LjA3LjAwI1N0YXRlc21lbiBzZXJ2aWNlcyM5My4xMC4xNi4wMC4wMAotdW5zcHNjNyM5My4xMC4xNi4wOC4wMCNQYXJsaWFtZW50IG1lbWJlcnMgc2VydmljZXMjOTMuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTAuMTcuMDAuMDAjTGVnaXNsYXRpdmUgYm9kaWVzIGFuZCBwcmFjdGljZSM5My4xMC4wMC4wMC4wMAotdW5zcHNjNyM5My4xMC4xNy4wMS4wMCNOYXRpb25hbCBjb3VuY2lsIHNlcnZpY2VzIzkzLjEwLjE3LjAwLjAwCi11bnNwc2M3IzkzLjEwLjE3LjAyLjAwI0NvcnBvcmF0ZSBzdGF0ZXMjOTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTAuMTcuMDMuMDAjQmlsbCBkcmFmdGluZyBzZXJ2aWNlcyM5My4xMC4xNy4wMC4wMAotdW5zcHNjNyM5My4xMC4xNy4wNC4wMCNMZWdpc2xhdGl2ZSBoZWFyaW5ncyBzZXJ2aWNlcyM5My4xMC4xNy4wMC4wMAotdW5zcHNjNyM5My4xMC4xNy4wNS4wMCNJbnRlbGxpZ2VuY2Ugc2VydmljZXMjOTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTAuMTcuMDYuMDAjTGVnaXNsYXRvcnMgc2VydmljZXMjOTMuMTAuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTAuMTcuMDcuMDAjUGFybGlhbWVudGFyeSBwcmFjdGljZSBzZXJ2aWNlcyM5My4xMC4xNy4wMC4wMAotdW5zcHNjNyM5My4xMS4wMC4wMC4wMCNTb2NpbyBwb2xpdGljYWwgY29uZGl0aW9ucyM5My4wMC4wMC4wMC4wMAotdW5zcHNjNyM5My4xMS4xNS4wMC4wMCNQb2xpdGljYWwgbW92ZW1lbnRzIzkzLjExLjAwLjAwLjAwCi11bnNwc2M3IzkzLjExLjE1LjAxLjAwI0V4dHJlbWlzdCBtb3ZlbWVudHMjOTMuMTEuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTEuMTUuMDIuMDAjUGVhY2UgbW92ZW1lbnRzIzkzLjExLjE1LjAwLjAwCi11bnNwc2M3IzkzLjExLjE1LjAzLjAwI1Byb3Rlc3QgbW92ZW1lbnRzIzkzLjExLjE1LjAwLjAwCi11bnNwc2M3IzkzLjExLjE1LjA0LjAwI1VuZGVyZ3JvdW5kIG1vdmVtZW50cyM5My4xMS4xNS4wMC4wMAotdW5zcHNjNyM5My4xMS4xNS4wNS4wMCNTdHVkZW50IG1vdmVtZW50cyM5My4xMS4xNS4wMC4wMAotdW5zcHNjNyM5My4xMS4xNS4wNi4wMCNQZWFzYW50IG1vdmVtZW50cyM5My4xMS4xNS4wMC4wMAotdW5zcHNjNyM5My4xMS4xNS4wNy4wMCNPcHBvc2l0aW9uIG1vdmVtZW50cyM5My4xMS4xNS4wMC4wMAotdW5zcHNjNyM5My4xMS4xNi4wMC4wMCNQb2xpdGljYWwgcmVwcmVzZW50YXRpb24gYW5kIHBhcnRpY2lwYXRpb24jOTMuMTEuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTEuMTYuMDEuMDAjUG9saXRpY2FsIHJlcHJlc2VudGF0aW9uIzkzLjExLjE2LjAwLjAwCi11bnNwc2M3IzkzLjExLjE2LjAyLjAwI1BvbGl0aWNhbCBwYXJ0aWNpcGF0aW9uIzkzLjExLjE2LjAwLjAwCi11bnNwc2M3IzkzLjExLjE2LjAzLjAwI1Byb3BvcnRpb25hbCByZXByZXNlbnRhdGlvbiM5My4xMS4xNi4wMC4wMAotdW5zcHNjNyM5My4xMS4xNi4wNC4wMCNWb3RlIGNhdGNoZXIgc2VydmljZXMjOTMuMTEuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTEuMTYuMDUuMDAjVm90ZXIgcmVnaXN0cmF0aW9uIG9yIGNvdW50aW5nIG9yIGFuYWx5c2lzIG9yIHNjcnV0aW55IHNlcnZpY2VzIzkzLjExLjE2LjAwLjAwCi11bnNwc2M3IzkzLjExLjE2LjA2LjAwI1ByZXNzdXJlIGdyb3VwcyByZXByZXNlbnRhdGlvbiBvciBwYXJ0aWNpcGF0aW9uIHNlcnZpY2VzIzkzLjExLjE2LjAwLjAwCi11bnNwc2M3IzkzLjExLjE2LjA3LjAwI0VsZWN0aW9uIGFuYWx5c2lzIHNlcnZpY2VzIzkzLjExLjE2LjAwLjAwCi11bnNwc2M3IzkzLjExLjE2LjA4LjAwI0VsZWN0aW9uIG9yZ2FuaXphdGlvbiBzZXJ2aWNlcyM5My4xMS4xNi4wMC4wMAotdW5zcHNjNyM5My4xMi4wMC4wMC4wMCNJbnRlcm5hdGlvbmFsIHJlbGF0aW9ucyM5My4wMC4wMC4wMC4wMAotdW5zcHNjNyM5My4xMi4xNS4wMC4wMCNEaXBsb21hY3kjOTMuMTIuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTUuMDEuMDAjRGlwbG9tYXRpYyBzZXJ2aWNlcyM5My4xMi4xNS4wMC4wMAotdW5zcHNjNyM5My4xMi4xNS4wMi4wMCNDb25zdWxhciBzZXJ2aWNlcyM5My4xMi4xNS4wMC4wMAotdW5zcHNjNyM5My4xMi4xNS4wMy4wMCNEaXBsb21hdHMgc2VjdXJpdHkgc2VydmljZXMjOTMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTUuMDQuMDAjRGlwbG9tYXRpYyBwcml2aWxlZ2VzIG9yIGltbXVuaXRpZXMgc2VydmljZXMjOTMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTUuMDUuMDAjU3RhdGUgaW1tdW5pdGllcyBzZXJ2aWNlcyM5My4xMi4xNS4wMC4wMAotdW5zcHNjNyM5My4xMi4xNS4wNi4wMCNFbWJhc3NpZXMgb3IgYW1iYXNzYWRvcnMgc2VydmljZXMjOTMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTUuMDcuMDAjU3RhdGUgdmlzaXRzIG9yZ2FuaXphdGlvbiBzZXJ2aWNlcyM5My4xMi4xNS4wMC4wMAotdW5zcHNjNyM5My4xMi4xNS4wOC4wMCNJbnRlcm5hdGlvbmFsIGxhdyBwcmVzY3JpcHRpb24gc2VydmljZXMjOTMuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTUuMDkuMDAjSW50ZXJuYXRpb25hbCBsYXcgcHJvbW90aW9uIG9yIHJlY29nbml0aW9uIHNlcnZpY2VzIzkzLjEyLjE1LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE2LjAwLjAwI0ludGVybmF0aW9uYWwgcmVsYXRpb25zIGFuZCBjb29wZXJhdGlvbiM5My4xMi4wMC4wMC4wMAotdW5zcHNjNyM5My4xMi4xNi4wMS4wMCNNdWx0aWxhdGVyYWwgY29vcGVyYXRpb24gc2VydmljZXMjOTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTYuMDIuMDAjTWlsaXRhcnkgY29vcGVyYXRpb24gc2VydmljZXMjOTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTYuMDMuMDAjUG9saXRpY2FsIGNvb3BlcmF0aW9uIHNlcnZpY2VzIzkzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE2LjA0LjAwI0ludGVybmF0aW9uYWwgZWNvbm9taWMgY29vcGVyYXRpb24gc2VydmljZXMjOTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTYuMDUuMDAjTm9ydGggc291dGggY29vcGVyYXRpb24gc2VydmljZXMjOTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTYuMDYuMDAjRWFzdCB3ZXN0IGNvb3BlcmF0aW9uIHNlcnZpY2VzIzkzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE2LjA3LjAwI0ludGVybmF0aW9uYWwgY29vcGVyYXRpb24gc2VydmljZXMjOTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTYuMDguMDAjTm9uIGdvdmVybm1lbnRhbCBsaWFpc29uIHNlcnZpY2VzIzkzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE2LjA5LjAwI05vbiBhbGlnbmVkIGNvdW50cmllcyBjb29wZXJhdGlvbiM5My4xMi4xNi4wMC4wMAotdW5zcHNjNyM5My4xMi4xNi4xMC4wMCNBbGlnbmVkIGNvdW50cmllcyBjb29wZXJhdGlvbiM5My4xMi4xNi4wMC4wMAotdW5zcHNjNyM5My4xMi4xNi4xMS4wMCNQb2xpdGljYWwgY3JpbWVzIGNvb3BlcmF0aW9uIHNlcnZpY2VzIzkzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE2LjEyLjAwI1BlYWNlIHRyZWF0aWVzIGNvb3BlcmF0aW9uIzkzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE2LjEzLjAwI1RyZWF0eSBzaWduYXR1cmUgb3IgYWNjZXNzaW9ucyBvciByZWN0aWZpY2F0aW9uIHNlcnZpY2VzIzkzLjEyLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE2LjE0LjAwI0ludGVybmF0aW9uYWwgd2F0ZXJjb3Vyc2UgY29vcGVyYXRpb24gc2VydmljZXMjOTMuMTIuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTYuMTUuMDAjVGVycml0b3JpYWwgY2xhaW1zIG9yIG5lZ290aWF0aW9ucyB0aGlyZCBwYXJ0eSBzZXJ2aWNlcyM5My4xMi4xNi4wMC4wMAotdW5zcHNjNyM5My4xMi4xNy4wMC4wMCNJbnRlcm5hdGlvbmFsIG9yZ2FuaXphdGlvbnMjOTMuMTIuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTcuMDEuMDAjU3lzdGVtIG9mIG9yZ2FuaXphdGlvbnMgc2VydmljZXMjOTMuMTIuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTcuMDIuMDAjU2VjdXJpdHkgY291bmNpbCBzZXJ2aWNlcyM5My4xMi4xNy4wMC4wMAotdW5zcHNjNyM5My4xMi4xNy4wMy4wMCNFY29ub21pYyBvciBzb2NpYWwgY291bmNpbCBzZXJ2aWNlcyM5My4xMi4xNy4wMC4wMAotdW5zcHNjNyM5My4xMi4xNy4wNC4wMCNTZWNyZXRhcmlhdCBzZXJ2aWNlcyM5My4xMi4xNy4wMC4wMAotdW5zcHNjNyM5My4xMi4xNy4wNS4wMCNUcnVzdHNoaXAgY291bmNpbCBzZXJ2aWNlcyM5My4xMi4xNy4wMC4wMAotdW5zcHNjNyM5My4xMi4xNy4wNi4wMCNHZW5lcmFsIGFzc2VtYmx5IHNlcnZpY2VzIzkzLjEyLjE3LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE3LjA3LjAwI0ludGVybmF0aW9uYWwgY291cnQgb2YganVzdGljZSBzZXJ2aWNlcyM5My4xMi4xNy4wMC4wMAotdW5zcHNjNyM5My4xMi4xNy4wOC4wMCNJbnRlcm5hdGlvbmFsIHBvbGl0aWNhbCBvcmdhbml6YXRpb25zIHNlcnZpY2VzIzkzLjEyLjE3LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE3LjA5LjAwI0ludGVybmF0aW9uYWwgY2hhcml0eSBvcmdhbml6YXRpb25zIHNlcnZpY2VzIzkzLjEyLjE3LjAwLjAwCi11bnNwc2M3IzkzLjEyLjE3LjEwLjAwI0ludGVybmF0aW9uYWwgaHVtYW4gcmVsaWVmIG9yZ2FuaXphdGlvbnMgc2VydmljZXMjOTMuMTIuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTIuMTcuMTEuMDAjSW50ZXJuYXRpb25hbCBoZWFsdGggb3JnYW5pemF0aW9ucyBzZXJ2aWNlcyM5My4xMi4xNy4wMC4wMAotdW5zcHNjNyM5My4xMy4wMC4wMC4wMCNIdW1hbml0YXJpYW4gYWlkIGFuZCByZWxpZWYjOTMuMDAuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTMuMTUuMDAuMDAjUmVmdWdlZSBwcm9ncmFtcyM5My4xMy4wMC4wMC4wMAotdW5zcHNjNyM5My4xMy4xNS4wMS4wMCNQcm90ZWN0aW9uIG9mIGh1bWFuIHJpZ2h0cyBzZXJ2aWNlcyM5My4xMy4xNS4wMC4wMAotdW5zcHNjNyM5My4xMy4xNS4wMi4wMCNQcm9tb3Rpb24gb2YgaHVtYW4gcmlnaHRzIHNlcnZpY2VzIzkzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzkzLjEzLjE1LjAzLjAwI0h1bWFuIHJpZ2h0cyBlZHVjYXRpb24gb3IgaW5mb3JtYXRpb24gZGlzc2VtaW5hdGlvbiBzZXJ2aWNlcyM5My4xMy4xNS4wMC4wMAotdW5zcHNjNyM5My4xMy4xNS4wNC4wMCNSZWZ1Z2VlIGVtZXJnZW5jeSBhc3Npc3RhbmNlIHNlcnZpY2VzIzkzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzkzLjEzLjE1LjA1LjAwI1JlZnVnZWUgY2FtcHMgc2VydmljZXMjOTMuMTMuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTMuMTUuMDYuMDAjUmVmdWdlZSByZXNldHRsZW1lbnRzIG9yIHJlcGF0cmlhdGlvbiBzZXJ2aWNlcyM5My4xMy4xNS4wMC4wMAotdW5zcHNjNyM5My4xMy4xNS4wNy4wMCNEaXNwbGFjZWQgcGVyc29ucyBhc3Npc3RhbmNlIHNlcnZpY2VzIzkzLjEzLjE1LjAwLjAwCi11bnNwc2M3IzkzLjEzLjE2LjAwLjAwI0Zvb2QgYW5kIG51dHJpdGlvbiBwb2xpY3kgcGxhbm5pbmcgYW5kIHByb2dyYW1zIzkzLjEzLjAwLjAwLjAwCi11bnNwc2M3IzkzLjEzLjE2LjAxLjAwI0h1bmdlciBlcmFkaWNhdGlvbiBwcm9ncmFtcyM5My4xMy4xNi4wMC4wMAotdW5zcHNjNyM5My4xMy4xNi4wMi4wMCNFbWVyZ2VuY3kgZm9vZCBzdXBwbHkgc2VydmljZXMjOTMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTMuMTYuMDMuMDAjV29ybGQgZm9vZCBwcm9ncmFtIHNlcnZpY2VzIzkzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEzLjE2LjA0LjAwI0Zvb2Qgb3IgYWdyaWN1bHR1cmUgb3JnYW5pemF0aW9uIHNlcnZpY2VzIzkzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEzLjE2LjA1LjAwI0NvbW1vbiBmdW5kIGZvciBjb21tb2RpdGllcyBzZXJ2aWNlcyM5My4xMy4xNi4wMC4wMAotdW5zcHNjNyM5My4xMy4xNi4wNi4wMCNJbnRlcm5hdGlvbmFsIGZ1bmQgZm9yIGFncmljdWx0dXJhbCBkZXZlbG9wbWVudCBzZXJ2aWNlcyM5My4xMy4xNi4wMC4wMAotdW5zcHNjNyM5My4xMy4xNi4wNy4wMCNGb29kIGRpc3RyaWJ1dGlvbiBzZXJ2aWNlcyM5My4xMy4xNi4wMC4wMAotdW5zcHNjNyM5My4xMy4xNi4wOC4wMCNGb29kIHN1cHBseSBzZXJ2aWNlcyM5My4xMy4xNi4wMC4wMAotdW5zcHNjNyM5My4xMy4xNi4wOS4wMCNGb29kIGFpZCBwb2xpY2llcyBvciBwcm9ncmFtcyM5My4xMy4xNi4wMC4wMAotdW5zcHNjNyM5My4xMy4xNi4xMC4wMCNGb29kIHBsYW5uaW5nIHNlcnZpY2VzIzkzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEzLjE2LjExLjAwI0Zvb2Qgc2VjdXJpdHkgc2VydmljZXMjOTMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTMuMTYuMTIuMDAjRm9vZCByZXNlcnZlcyBtYW5hZ2VtZW50IzkzLjEzLjE2LjAwLjAwCi11bnNwc2M3IzkzLjEzLjE2LjEzLjAwI0Zvb2Qgc2hvcnRhZ2Ugb3Igc3VycGx1cyBtYW5hZ2VtZW50IG9yIGNvbnRyb2wgc2VydmljZXMjOTMuMTMuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTMuMTcuMDAuMDAjSGVhbHRoIHByb2dyYW1zIzkzLjEzLjAwLjAwLjAwCi11bnNwc2M3IzkzLjEzLjE3LjAxLjAwI0FudGkgdG9iYWNjbyBjYW1wYWlnbnMjOTMuMTMuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTMuMTcuMDIuMDAjU2FuaXRhdGlvbiBwcm9ncmFtcyM5My4xMy4xNy4wMC4wMAotdW5zcHNjNyM5My4xMy4xNy4wMy4wMCNSZXNlYXJjaCBwcm9ncmFtcyM5My4xMy4xNy4wMC4wMAotdW5zcHNjNyM5My4xMy4xNy4wNC4wMCNEaXNlYXNlIHByZXZlbnRpb24gb3IgY29udHJvbCBzZXJ2aWNlcyM5My4xMy4xNy4wMC4wMAotdW5zcHNjNyM5My4xMy4xNy4wNS4wMCNEcnVnIGFidXNlIHByZXZlbnRpb24gb3IgY29udHJvbCBwcm9ncmFtcyM5My4xMy4xNy4wMC4wMAotdW5zcHNjNyM5My4xMy4xOC4wMC4wMCNEaXNhc3RlciBwcmVwYXJlZG5lc3MgYW5kIHJlbGllZiM5My4xMy4wMC4wMC4wMAotdW5zcHNjNyM5My4xMy4xOC4wMS4wMCNEaXNhc3RlciB3YXJuaW5nIHNlcnZpY2VzIzkzLjEzLjE4LjAwLjAwCi11bnNwc2M3IzkzLjEzLjE4LjAyLjAwI0Rpc2FzdGVyIHByZXBhcmVkbmVzcyByZXNwb25zZSBzZXJ2aWNlcyM5My4xMy4xOC4wMC4wMAotdW5zcHNjNyM5My4xMy4xOC4wMy4wMCNFbWVyZ2VuY3kgaG91c2luZyBzZXJ2aWNlcyM5My4xMy4xOC4wMC4wMAotdW5zcHNjNyM5My4xNC4wMC4wMC4wMCNDb21tdW5pdHkgYW5kIHNvY2lhbCBzZXJ2aWNlcyM5My4wMC4wMC4wMC4wMAotdW5zcHNjNyM5My4xNC4xNS4wMC4wMCNTb2NpYWwgZGV2ZWxvcG1lbnQgYW5kIHNlcnZpY2VzIzkzLjE0LjAwLjAwLjAwCi11bnNwc2M3IzkzLjE0LjE1LjAxLjAwI1NvY2lhbCBwb2xpY3kgc2VydmljZXMjOTMuMTQuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTUuMDIuMDAjU29jaWFsIHNlY3VyaXR5IGxlZ2lzbGF0aW9uIHNlcnZpY2VzIzkzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE1LjAzLjAwI1NvY2lhbCBwbGFubmluZyBzZXJ2aWNlcyM5My4xNC4xNS4wMC4wMAotdW5zcHNjNyM5My4xNC4xNS4wNC4wMCNGb3N0ZXIgaG9tZSBjYXJlIHNlcnZpY2VzIG9yIG9ycGhhbmFnZSM5My4xNC4xNS4wMC4wMAotdW5zcHNjNyM5My4xNC4xNS4wNS4wMCNBZG9wdGlvbiBzZXJ2aWNlcyM5My4xNC4xNS4wMC4wMAotdW5zcHNjNyM5My4xNC4xNS4wNi4wMCNTb2NpYWwgd2VsZmFyZSBzZXJ2aWNlcyM5My4xNC4xNS4wMC4wMAotdW5zcHNjNyM5My4xNC4xNS4wNy4wMCNTb2NpYWwgd29yayBhZG1pbmlzdHJhdGlvbiBzZXJ2aWNlcyM5My4xNC4xNS4wMC4wMAotdW5zcHNjNyM5My4xNC4xNS4wOC4wMCNWb2x1bnRhcnkgc2VydmljZSBtYW5hZ2VtZW50IzkzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE1LjA5LjAwI1NvY2lhbCBwcm9ibGVtcyBhbmFseXNpcyBvciBtYW5hZ2VtZW50IHNlcnZpY2VzIzkzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE1LjEwLjAwI1NvY2lhbCBzdHJ1Y3R1cmUgc3R1ZGllcyBvciByZWxhdGVkIHNlcnZpY2VzIzkzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE1LjExLjAwI1NvY2lhbCBncm91cHMgc3R1ZGllcyBvciByZWxhdGVkIHNlcnZpY2VzIzkzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE1LjEyLjAwI1lvdXRoIG1vdmVtZW50cyBvciBvcmdhbml6YXRpb25zIHNlcnZpY2VzIzkzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE1LjEzLjAwI1NvY2lhbCBqdXN0aWNlIG9yIGxlZ2lzbGF0aW9uIHNlcnZpY2VzIzkzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE1LjE0LjAwI1NvY2lvIGN1bHR1cmFsIHNlcnZpY2VzIzkzLjE0LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE2LjAwLjAwI1BvcHVsYXRpb24jOTMuMTQuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTYuMDEuMDAjUG9wdWxhdGlvbiBjZW5zdXMgc2VydmljZXMjOTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTYuMDIuMDAjUG9wdWxhdGlvbiBzYW1wbGUgc3VydmV5cyBzZXJ2aWNlcyM5My4xNC4xNi4wMC4wMAotdW5zcHNjNyM5My4xNC4xNi4wMy4wMCNCaXJ0aCByZXBvcnRpbmcgb3IgY29udHJvbCBzZXJ2aWNlcyM5My4xNC4xNi4wMC4wMAotdW5zcHNjNyM5My4xNC4xNi4wNC4wMCNQb3B1bGF0aW9uIGNvbnRyb2wgc2VydmljZXMjOTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTYuMDUuMDAjUG9wdWxhdGlvbiB0cmVuZHMgb3IgcHJvamVjdGlvbnMgc2VydmljZXMjOTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTYuMDYuMDAjQmlydGggc3RhdGlzdGljcyBzZXJ2aWNlcyM5My4xNC4xNi4wMC4wMAotdW5zcHNjNyM5My4xNC4xNi4wNy4wMCNNYXJyaWFnZSByZXNlYXJjaCBvciBzdGF0aXN0aWNzIHNlcnZpY2VzIzkzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE2LjA4LjAwI1BvcHVsYXRpb24gZGlzdHJpYnV0aW9uIG9yIGFuYWx5c2lzIHNlcnZpY2VzIzkzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE2LjA5LjAwI1BvcHVsYXRpb24gY29tcG9zaXRpb24gYW5hbHlzaXMgc2VydmljZXMjOTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTYuMTAuMDAjRGVtb2dyYXBoaWMgc3R1ZGllcyM5My4xNC4xNi4wMC4wMAotdW5zcHNjNyM5My4xNC4xNi4xMS4wMCNJbW1pZ3JhdGlvbiBhbmFseXNpcyBvciBzZXJ2aWNlcyM5My4xNC4xNi4wMC4wMAotdW5zcHNjNyM5My4xNC4xNi4xMi4wMCNGYW1pbHkgcGxhbm5pbmcgcHJvZ3JhbXMgb3Igc2VydmljZXMjOTMuMTQuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTYuMTMuMDAjSHVtYW4gcmVwcm9kdWN0aW9uIGFuYWx5c2lzIzkzLjE0LjE2LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE3LjAwLjAwI0N1bHR1cmUjOTMuMTQuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTcuMDEuMDAjQ3VsdHVyYWwgZXZlbnRzIG9yZ2FuaXphdGlvbnMjOTMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTcuMDIuMDAjQ3VsdHVyZSBwcm9tb3Rpb25hbCBzZXJ2aWNlcyM5My4xNC4xNy4wMC4wMAotdW5zcHNjNyM5My4xNC4xNy4wMy4wMCNBcnQgcmVsYXRlZCBzZXJ2aWNlcyM5My4xNC4xNy4wMC4wMAotdW5zcHNjNyM5My4xNC4xNy4wNC4wMCNTb25nIHdyaXRpbmcgc2VydmljZXMjOTMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTcuMDUuMDAjTGl0ZXJhcnkgd3JpdGluZyBzZXJ2aWNlcyM5My4xNC4xNy4wMC4wMAotdW5zcHNjNyM5My4xNC4xNy4wNi4wMCNNaW5vcml0aWVzIHByb3RlY3Rpb24gc2VydmljZXMjOTMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTcuMDcuMDAjQ3VsdHVyYWwgaGVyaXRhZ2UgcHJlc2VydmF0aW9uIG9yIHByb21vdGlvbiBzZXJ2aWNlcyM5My4xNC4xNy4wMC4wMAotdW5zcHNjNyM5My4xNC4xNy4wOC4wMCNNdXNldW0gc2VydmljZXMjOTMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTcuMDkuMDAjQ3VsdHVyYWwgcG9saWN5IHNlcnZpY2VzIzkzLjE0LjE3LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE3LjEwLjAwI0FyY2hhaWMgb3IgaW5kaWdlbm91cyBsYW5ndWFnZSBzZXJ2aWNlcyM5My4xNC4xNy4wMC4wMAotdW5zcHNjNyM5My4xNC4xNy4xMS4wMCNUcmFkaXRpb25hbCBoYW5kY3JhZnRzIHByb21vdGlvbiBzZXJ2aWNlcyM5My4xNC4xNy4wMC4wMAotdW5zcHNjNyM5My4xNC4xNy4xMi4wMCNQcm90ZWN0aW9uIG9mIGludGVsbGVjdHVhbCBvciBjdWx0dXJhbCBwcm9wZXJ0eSBzZXJ2aWNlcyM5My4xNC4xNy4wMC4wMAotdW5zcHNjNyM5My4xNC4xNy4xMy4wMCNIaXN0b3JpYyBzaXRlcyBvciBtb251bWVudHMgcHJvdGVjdGlvbiBzZXJ2aWNlcyM5My4xNC4xNy4wMC4wMAotdW5zcHNjNyM5My4xNC4xNy4xNC4wMCNNeXRob2xvZ3kjOTMuMTQuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTguMDAuMDAjRW1wbG95bWVudCM5My4xNC4wMC4wMC4wMAotdW5zcHNjNyM5My4xNC4xOC4wMS4wMCNFbXBsb3ltZW50IHByb21vdGlvbiBvciBwbGFubmluZyBzZXJ2aWNlcyM5My4xNC4xOC4wMC4wMAotdW5zcHNjNyM5My4xNC4xOC4wMi4wMCNSZWNydWl0bWVudCBzZXJ2aWNlcyM5My4xNC4xOC4wMC4wMAotdW5zcHNjNyM5My4xNC4xOC4wMy4wMCNJbnRlcm5hdGlvbmFsIGxhYm9yIHN0YW5kYXJkcyBzZXJ2aWNlcyM5My4xNC4xOC4wMC4wMAotdW5zcHNjNyM5My4xNC4xOC4wNC4wMCNJbnRlcm5hdGlvbmFsIGxhYm9yIHJlZ2lzdHJhdGlvbiBzZXJ2aWNlcyM5My4xNC4xOC4wMC4wMAotdW5zcHNjNyM5My4xNC4xOC4wNS4wMCNVbmVtcGxveW1lbnQgc2VydmljZXMjOTMuMTQuMTguMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTguMDYuMDAjRW1wbG95bWVudCBzdGF0aXN0aWNzIG9yIGZvcmVjYXN0aW5nIHNlcnZpY2VzIzkzLjE0LjE4LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE4LjA3LjAwI1dvcmsgdGltZSBhcnJhbmdlbWVudHMjOTMuMTQuMTguMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTguMDguMDAjT2NjdXBhdGlvbmFsIGhlYWx0aCBvciBzYWZldHkgc2VydmljZXMjOTMuMTQuMTguMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTguMTAuMDAjQ2FyZWVyIGRldmVsb3BtZW50IHNlcnZpY2VzIzkzLjE0LjE4LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE4LjExLjAwI1Byb21vdGlvbmFsIHNlcnZpY2VzIzkzLjE0LjE4LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE4LjEyLjAwI0xhYm9yIGluc3BlY3Rpb24gc2VydmljZXMjOTMuMTQuMTguMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTguMTMuMDAjV29yayBjb3VuY2lsIHNlcnZpY2VzIzkzLjE0LjE4LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE4LjE0LjAwI0ludGVybmF0aW9uYWwgbGFib3Igc2VydmljZXMjOTMuMTQuMTguMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTkuMDAuMDAjUnVyYWwgZGV2ZWxvcG1lbnQjOTMuMTQuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTkuMDEuMDAjQWdyaWN1bHR1cmFsIGNvbW1lcmNpYWwgYmFua2luZyBzZXJ2aWNlcyM5My4xNC4xOS4wMC4wMAotdW5zcHNjNyM5My4xNC4xOS4wMi4wMCNSdXJhbCBpbnZlc3RtZW50IHNlcnZpY2VzIzkzLjE0LjE5LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE5LjAzLjAwI0FncmljdWx0dXJhbCBpbnN0aXR1dGlvbnMgb3JnYW5pemF0aW9uIG9yIG1hbmFnZW1lbnQgc2VydmljZXMjOTMuMTQuMTkuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTkuMDQuMDAjQWdyaWN1bHR1cmFsIG9yIHJ1cmFsIGNvb3BlcmF0aXZlcyBzZXJ2aWNlcyM5My4xNC4xOS4wMC4wMAotdW5zcHNjNyM5My4xNC4xOS4wNS4wMCNBZ3JpY3VsdHVyYWwgcmVzZWFyY2ggc2VydmljZXMjOTMuMTQuMTkuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTkuMDYuMDAjRmFybWVycyBvciBwZWFzYW50cyBvcmdhbml6YXRpb25zIHNlcnZpY2VzIzkzLjE0LjE5LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE5LjA3LjAwI1dvbWVucyBzZXJ2aWNlcyBpbiBhZ3JpY3VsdHVyYWwgcHJvZHVjdGlvbiBvciBydXJhbCBkZXZlbG9wbWVudCM5My4xNC4xOS4wMC4wMAotdW5zcHNjNyM5My4xNC4xOS4wOC4wMCNBZ3JhcmlhbiByZWZvcm0gb3IgbGFuZCBzZXR0bGVtZW50IHNlcnZpY2VzIzkzLjE0LjE5LjAwLjAwCi11bnNwc2M3IzkzLjE0LjE5LjA5LjAwI0xhbmQgYWRtaW5pc3RyYXRpb24gc2VydmljZXMjOTMuMTQuMTkuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMTkuMTAuMDAjSXNsYW5kIGRldmVsb3BtZW50IHNlcnZpY2VzIzkzLjE0LjE5LjAwLjAwCi11bnNwc2M3IzkzLjE0LjIwLjAwLjAwI1VyYmFuIGRldmVsb3BtZW50IzkzLjE0LjAwLjAwLjAwCi11bnNwc2M3IzkzLjE0LjIwLjAxLjAwI1VyYmFuIGRldmVsb3BtZW50IHBsYW5uaW5nIHNlcnZpY2VzIzkzLjE0LjIwLjAwLjAwCi11bnNwc2M3IzkzLjE0LjIwLjAyLjAwI1VyYmFuIGxhbmQgYWRtaW5pc3RyYXRpb24gc2VydmljZXMjOTMuMTQuMjAuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMjAuMDMuMDAjVXJiYW4gaW52ZXN0bWVudCBwcm9ncmFtbWluZyBzZXJ2aWNlcyM5My4xNC4yMC4wMC4wMAotdW5zcHNjNyM5My4xNC4yMC4wNC4wMCNTbHVtIHJlZGV2bG9wbWVudCBzZXJ2aWNlcyM5My4xNC4yMC4wMC4wMAotdW5zcHNjNyM5My4xNC4yMC4wNS4wMCNVcmJhbiBsaWdodGluZyBzZXJ2aWNlcyM5My4xNC4yMC4wMC4wMAotdW5zcHNjNyM5My4xNC4yMC4wNi4wMCNVcmJhbiBkZXZlbG9wbWVudCBjb250cm9sIG9yIHJlZ3VsYXRpb25zIHNlcnZpY2VzIzkzLjE0LjIwLjAwLjAwCi11bnNwc2M3IzkzLjE0LjIwLjA3LjAwI1VyYmFuIGJ1aWxkaW5nIHN0YW5kYXJkcyBvciByZWd1bGF0aW9ucyBzZXJ2aWNlcyM5My4xNC4yMC4wMC4wMAotdW5zcHNjNyM5My4xNC4yMC4wOC4wMCNVcmJhbiBjb21tdW5pdHkgc2VydmljZXMjOTMuMTQuMjAuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMjAuMDkuMDAjVXJiYW4gcHJvamVjdCBvciBwcm9ncmFtIGFkbWluaXN0cmF0aW9uIG9yIG1hbmFnZW1lbnQgc2VydmljZXMjOTMuMTQuMjAuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMjEuMDAuMDAjUmVnaW9uYWwgZGV2ZWxvcG1lbnQjOTMuMTQuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMjEuMDEuMDAjUmVnaW9uYWwgZGV2ZWxvcG1lbnQgcGxhbm5pbmcgc2VydmljZXMjOTMuMTQuMjEuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMjEuMDIuMDAjRWNvbm9taWMgY29vcGVyYXRpb24gc2VydmljZXMjOTMuMTQuMjEuMDAuMDAKLXVuc3BzYzcjOTMuMTQuMjEuMDMuMDAjVGVjaG5pY2FsIGNvb3BlcmF0aW9uIHNlcnZpY2VzIzkzLjE0LjIxLjAwLjAwCi11bnNwc2M3IzkzLjE0LjIxLjA0LjAwI1NlY3RvcmFsIHBsYW5uaW5nIHNlcnZpY2VzIzkzLjE0LjIxLjAwLjAwCi11bnNwc2M3IzkzLjE1LjAwLjAwLjAwI1B1YmxpYyBhZG1pbmlzdHJhdGlvbiBhbmQgZmluYW5jZSBzZXJ2aWNlcyM5My4wMC4wMC4wMC4wMAotdW5zcHNjNyM5My4xNS4xNS4wMC4wMCNQdWJsaWMgYWRtaW5pc3RyYXRpb24jOTMuMTUuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTUuMTUuMDEuMDAjUHVibGljIGVudGVycHJpc2VzIG1hbmFnZW1lbnQgb3IgZmluYW5jaWFsIHNlcnZpY2VzIzkzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE1LjE1LjAyLjAwI1B1YmxpYyBlbnRlcnByaXNlcyBpbmZvcm1hdGlvbiBvciBjb250cm9sIHN5c3RlbXMgc2VydmljZXMjOTMuMTUuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTUuMTUuMDMuMDAjUHJpdmF0aXphdGlvbiBwcm9ncmFtcyM5My4xNS4xNS4wMC4wMAotdW5zcHNjNyM5My4xNS4xNS4wNC4wMCNBZG1pbmlzdHJhdGl2ZSByZWZvcm0gc2VydmljZXMjOTMuMTUuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTUuMTUuMDUuMDAjQWRtaW5pc3RyYXRpdmUgYWdlbmNpZXMgc2VydmljZXMjOTMuMTUuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTUuMTUuMDYuMDAjQWRtaW5pc3RyYXRpdmUgZWNvbm9taWMgY291bmNpbCBzZXJ2aWNlcyM5My4xNS4xNS4wMC4wMAotdW5zcHNjNyM5My4xNS4xNS4wNy4wMCNBZG1pbmlzdHJhdGl2ZSBwcm9jZWR1cmVzIG9yIHNlcnZpY2VzIzkzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE1LjE1LjA4LjAwI0dvdmVybm1lbnQgZGVwYXJ0bWVudHMgc2VydmljZXMjOTMuMTUuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTUuMTUuMDkuMDAjR292ZXJubWVudCBpbmZvcm1hdGlvbiBzZXJ2aWNlcyM5My4xNS4xNS4wMC4wMAotdW5zcHNjNyM5My4xNS4xNS4xMC4wMCNBZG1pbmlzdHJhdGl2ZSBmZWVzIG9yIHRheCBjb2xsZWN0aW9uIHNlcnZpY2VzIzkzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE1LjE1LjExLjAwI0FkbWluaXN0cmF0aXZlIGFjdHMgcmF0aWZpY2F0aW9uIG9yIGltcGxlbWVudGF0aW9uIHNlcnZpY2VzIzkzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE1LjE1LjEyLjAwI1B1YmxpYyBpbnN0aXR1dGlvbnMgc2VydmljZXMjOTMuMTUuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTUuMTUuMTMuMDAjTXVsdGluYXRpb25hbCBwdWJsaWMgY29ycG9yYXRpb25zIHNlcnZpY2VzIzkzLjE1LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE1LjE1LjE0LjAwI09tYnVkc21hbiBzZXJ2aWNlcyM5My4xNS4xNS4wMC4wMAotdW5zcHNjNyM5My4xNS4xNS4xNS4wMCNOYXRpb25hbCBwbGFubmluZyBzZXJ2aWNlcyM5My4xNS4xNS4wMC4wMAotdW5zcHNjNyM5My4xNS4xNi4wMC4wMCNQdWJsaWMgZmluYW5jZSM5My4xNS4wMC4wMC4wMAotdW5zcHNjNyM5My4xNS4xNi4wMS4wMCNQcm9ncmFtIGJ1ZGdldGluZyBzZXJ2aWNlcyM5My4xNS4xNi4wMC4wMAotdW5zcHNjNyM5My4xNS4xNi4wMi4wMCNHb3Zlcm5tZW50IGJ1ZGdldGluZyBzZXJ2aWNlcyM5My4xNS4xNi4wMC4wMAotdW5zcHNjNyM5My4xNS4xNi4wMy4wMCNCdWRnZXQgb3IgcHVibGljIGludmVzdG1lbnQgbWFuYWdlbWVudCM5My4xNS4xNi4wMC4wMAotdW5zcHNjNyM5My4xNS4xNi4wNC4wMCNNaWxpdGFyeSBleHBlbmRpdHVyZXMgYnVkZ2V0aW5nIHNlcnZpY2VzIzkzLjE1LjE2LjAwLjAwCi11bnNwc2M3IzkzLjE1LjE2LjA1LjAwI0dvdmVybm1lbnQgZmluYW5jZSBzZXJ2aWNlcyM5My4xNS4xNi4wMC4wMAotdW5zcHNjNyM5My4xNS4xNi4wNi4wMCNHb3Zlcm5tZW50IGFjY291bnRpbmcgc2VydmljZXMjOTMuMTUuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTUuMTYuMDcuMDAjR292ZXJubWVudCBhdWRpdGluZyBzZXJ2aWNlcyM5My4xNS4xNi4wMC4wMAotdW5zcHNjNyM5My4xNS4xNi4wOC4wMCNHb3Zlcm5tZW50IG9yIGNlbnRyYWwgYmFuayBzZXJ2aWNlcyM5My4xNS4xNi4wMC4wMAotdW5zcHNjNyM5My4xNS4xNi4wOS4wMCNMb3R0ZXJpZXMgc2VydmljZXMjOTMuMTUuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTUuMTYuMTAuMDAjVGF4IGNvbGxlY3Rpb24gc2VydmljZXMjOTMuMTUuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTUuMTYuMTEuMDAjU3Vic2lkaWVzIzkzLjE1LjE2LjAwLjAwCi11bnNwc2M3IzkzLjE1LjE3LjAwLjAwI0N1cnJlbmN5IzkzLjE1LjAwLjAwLjAwCi11bnNwc2M3IzkzLjE1LjE3LjAxLjAwI0N1cnJlbmNpZXMgb3IgY29pbmFnZSM5My4xNS4xNy4wMC4wMAotdW5zcHNjNyM5My4xNS4xNy4wMi4wMCNOYXRpb25hbCBiYW5rIG5vdGVzIzkzLjE1LjE3LjAwLjAwCi11bnNwc2M3IzkzLjE2LjAwLjAwLjAwI1RheGF0aW9uIzkzLjAwLjAwLjAwLjAwCi11bnNwc2M3IzkzLjE2LjE1LjAwLjAwI0luY29tZSB0YXgjOTMuMTYuMDAuMDAuMDAKLXVuc3BzYzcjOTMuMTYuMTUuMDEuMDAjTmF0aW9uYWwgaW5jb21lIHRheCM5My4xNi4xNS4wMC4wMAotdW5zcHNjNyM5My4xNi4xNS4wMi4wMCNNdW5pY2lwYWwgaW5jb21lIHRheCM5My4xNi4xNS4wMC4wMAotdW5zcHNjNyM5My4xNi4xNS4wMy4wMCNDYXBpdGFsIGdhaW5zIHRheCM5My4xNi4xNS4wMC4wMAotdW5zcHNjNyM5My4xNi4xNS4wNC4wMCNFeGNlc3MgcHJvZml0cyB0YXgjOTMuMTYuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTYuMTYuMDAuMDAjVGF4ZXMgb3RoZXIgdGhhbiBpbmNvbWUgdGF4IzkzLjE2LjAwLjAwLjAwCi11bnNwc2M3IzkzLjE2LjE2LjAxLjAwI1Byb3BlcnR5IHRheCM5My4xNi4xNi4wMC4wMAotdW5zcHNjNyM5My4xNi4xNi4wMi4wMCNMYW5kIHRheCM5My4xNi4xNi4wMC4wMAotdW5zcHNjNyM5My4xNi4xNi4wMy4wMCNWYWx1ZSBhZGRlZCB0YXggKFZBVCkjOTMuMTYuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTYuMTYuMDQuMDAjUGF5cm9sbCB0YXgjOTMuMTYuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTYuMTYuMDUuMDAjU2FsZXMgdGF4IzkzLjE2LjE2LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE2LjA2LjAwI1NvY2lhbCBzZWN1cml0eSB0YXgjOTMuMTYuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTYuMTYuMDcuMDAjSW5oZXJpdGFuY2Ugb3IgdHJhbnNmZXIgdGF4IzkzLjE2LjE2LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE3LjAwLjAwI1RheCBhZG1pbmlzdHJhdGlvbiM5My4xNi4wMC4wMC4wMAotdW5zcHNjNyM5My4xNi4xNy4wMS4wMCNUYXggY29sbGF0aW9uIzkzLjE2LjE3LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE3LjAyLjAwI1RheCBpbmNlbnRpdmVzIzkzLjE2LjE3LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE3LjAzLjAwI1RheCBzeXN0ZW1zIzkzLjE2LjE3LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE3LjA0LjAwI1RheCByZXZlbnVlIGFkbWluaXN0cmF0aW9uIzkzLjE2LjE3LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE4LjAwLjAwI1RheGF0aW9uIGlzc3VlcyM5My4xNi4wMC4wMC4wMAotdW5zcHNjNyM5My4xNi4xOC4wMS4wMCNUYXggcmVmb3JtIzkzLjE2LjE4LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE4LjAyLjAwI1RheGF0aW9uIHBvbGljeSM5My4xNi4xOC4wMC4wMAotdW5zcHNjNyM5My4xNi4xOC4wMy4wMCNUYXggcmVzZWFyY2gjOTMuMTYuMTguMDAuMDAKLXVuc3BzYzcjOTMuMTYuMTguMDQuMDAjSW52ZXN0bWVudCB0YXggY3JlZGl0IzkzLjE2LjE4LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE4LjA1LjAwI1RheCBkZWR1Y3Rpb25zIzkzLjE2LjE4LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE4LjA2LjAwI1RheCBldmFzaW9uIzkzLjE2LjE4LjAwLjAwCi11bnNwc2M3IzkzLjE2LjE4LjA3LjAwI1RheCBzaGVsdGVycyBvciBoYXZlbnMjOTMuMTYuMTguMDAuMDAKLXVuc3BzYzcjOTMuMTYuMTguMDguMDAjVGF4IHJldHVybnMjOTMuMTYuMTguMDAuMDAKLXVuc3BzYzcjOTMuMTcuMDAuMDAuMDAjVHJhZGUgcG9saWN5IGFuZCByZWd1bGF0aW9uIzkzLjAwLjAwLjAwLjAwCi11bnNwc2M3IzkzLjE3LjE1LjAwLjAwI1RyYWRlIHBvbGljeSM5My4xNy4wMC4wMC4wMAotdW5zcHNjNyM5My4xNy4xNS4wMS4wMCNUcmFkZSBhZ3JlZW1lbnRzIzkzLjE3LjE1LjAwLjAwCi11bnNwc2M3IzkzLjE3LjE1LjAyLjAwI1RyYWRlIG5lZ290aWF0aW9ucyM5My4xNy4xNS4wMC4wMAotdW5zcHNjNyM5My4xNy4xNS4wMy4wMCNGb3JtdWxhdGlvbiBvZiBuYXRpb25hbCBjb21tb2RpdHkgcG9saWNpZXMjOTMuMTcuMTUuMDAuMDAKLXVuc3BzYzcjOTMuMTcuMTUuMDQuMDAjRGV2ZWxvcG1lbnQgb2Ygc21hbGwgc2NhbGUgaW5kdXN0cmllcyM5My4xNy4xNS4wMC4wMAotdW5zcHNjNyM5My4xNy4xNi4wMC4wMCNJbnRlcm5hdGlvbmFsIHRyYWRlIzkzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzkzLjE3LjE2LjAxLjAwI0ludGVybmF0aW9uYWwgY29tbW9kaXR5IGFncmVlbWVudHMjOTMuMTcuMTYuMDAuMDAKLXVuc3BzYzcjOTMuMTcuMTYuMDIuMDAjRXhwb3J0IHBvbGljeSM5My4xNy4xNi4wMC4wMAotdW5zcHNjNyM5My4xNy4xNi4wMy4wMCNHbG9iYWwgdHJhZGUgcG9saWNpZXMgb3IgcHJvY2VkdXJlcyM5My4xNy4xNi4wMC4wMAotdW5zcHNjNyM5My4xNy4xNi4wNC4wMCNCaWxhdGVyYWwgdHJhZGUgYWdyZWVtZW50cyM5My4xNy4xNi4wMC4wMAotdW5zcHNjNyM5My4xNy4xNy4wMC4wMCNDdXN0b21zIGFkbWluaXN0cmF0aW9uIGFuZCBjb21wbGlhbmNlIzkzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzkzLjE3LjE3LjAxLjAwI0N1c3RvbXMgY29udmVudGlvbnMjOTMuMTcuMTcuMDAuMDAKLXVuc3BzYzcjOTMuMTcuMTcuMDIuMDAjQ3VzdG9tcyBmb3JtYWxpdGllcyM5My4xNy4xNy4wMC4wMAotdW5zcHNjNyM5My4xNy4xNy4wMy4wMCNDdXN0b21zIG9mZmVuY2VzIzkzLjE3LjE3LjAwLjAwCi11bnNwc2M3IzkzLjE3LjE4LjAwLjAwI1RyYWRlIGFuYWx5c2lzIzkzLjE3LjAwLjAwLjAwCi11bnNwc2M3IzkzLjE3LjE4LjAxLjAwI1RyYWRlIHByb2plY3Rpb25zIzkzLjE3LjE4LjAwLjAwCi11bnNwc2M3IzkzLjE3LjE4LjAyLjAwI0JhbGFuY2Ugb2YgdHJhZGUgcHJvamVjdGlvbnMjOTMuMTcuMTguMDAuMDAKLXVuc3BzYzcjOTMuMTcuMTguMDMuMDAjVHJhZGUgc3RhdGlzdGljcyM5My4xNy4xOC4wMC4wMAotdW5zcHNjNyM5NC4wMC4wMC4wMC4wMCNPcmdhbml6YXRpb25zIGFuZCBDbHVicyM5NC4wMC4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMC4wMC4wMC4wMCNXb3JrIHJlbGF0ZWQgb3JnYW5pemF0aW9ucyM5NC4wMC4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMC4xNS4wMC4wMCNCdXNpbmVzcyBhc3NvY2lhdGlvbnMjOTQuMTAuMDAuMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTUuMDEuMDAjQWdyaWN1bHR1cmFsIGluZHVzdHJ5IGFzc29jaWF0aW9ucyM5NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMC4xNS4wMi4wMCNSZWd1bGF0b3J5IGFzc29jaWF0aW9ucyM5NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMC4xNS4wMy4wMCNTZWN0b3JhbCBidXNpbmVzcyBhc3NvY2lhdGlvbnMjOTQuMTAuMTUuMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTUuMDQuMDAjSW50ZXJuYXRpb25hbCBidXNpbmVzcyBhc3NvY2lhdGlvbnMjOTQuMTAuMTUuMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTUuMDUuMDAjRW1wbG95ZXJzIGFzc29jaWF0aW9ucyM5NC4xMC4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMC4xNi4wMC4wMCNQcm9mZXNzaW9uYWwgYXNzb2NpYXRpb25zIzk0LjEwLjAwLjAwLjAwCi11bnNwc2M3Izk0LjEwLjE2LjAxLjAwI0RlbnRhbCBhc3NvY2lhdGlvbnMjOTQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTYuMDIuMDAjTWVkaWNhbCBoZWFsdGggYXNzb2NpYXRpb25zIzk0LjEwLjE2LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE2LjAzLjAwI051cnNpbmcgYXNzb2NpYXRpb25zIzk0LjEwLjE2LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE2LjA0LjAwI0FjY291bnRpbmcgYXNzb2NpYXRpb25zIzk0LjEwLjE2LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE2LjA1LjAwI0FyY2hpdGVjdCBhc3NvY2lhdGlvbnMjOTQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTYuMDYuMDAjQmFyIGFzc29jaWF0aW9ucyM5NC4xMC4xNi4wMC4wMAotdW5zcHNjNyM5NC4xMC4xNi4wNy4wMCNFZHVjYXRpb25hbCBvciB0ZWFjaGVyIGFzc29jaWF0aW9ucyM5NC4xMC4xNi4wMC4wMAotdW5zcHNjNyM5NC4xMC4xNi4wOC4wMCNFbmdpbmVlcmluZyBhc3NvY2lhdGlvbnMjOTQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTYuMDkuMDAjU2NpZW50aWZpYyBhc3NvY2lhdGlvbnMjOTQuMTAuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTYuMTAuMDAjUHJvZmVzc2lvbmFsIHN0YW5kYXJkcyByZXZpZXcgYm9hcmRzIzk0LjEwLjE2LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE3LjAwLjAwI1N0YWZmIGFzc29jaWF0aW9ucyM5NC4xMC4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMC4xNy4wMS4wMCNTdGFmZiBob2JieSBjbHVicyM5NC4xMC4xNy4wMC4wMAotdW5zcHNjNyM5NC4xMC4xNy4wMi4wMCNTdGFmZiBzcG9ydHMgYXNzb2NpYXRpb25zIzk0LjEwLjE3LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE3LjAzLjAwI1dvbWVuIHN0YWZmIGFzc29jaWF0aW9ucyM5NC4xMC4xNy4wMC4wMAotdW5zcHNjNyM5NC4xMC4xNy4wNC4wMCNQZW5zaW9ubmlzdCBzdGFmZiBhc3NvY2lhdGlvbnMjOTQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTcuMDUuMDAjTWFuYWdlbWVudCBzdGFmZiBhc3NvY2lhdGlvbnMjOTQuMTAuMTcuMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTguMDAuMDAjVHJhZGUgdW5pb25zIzk0LjEwLjAwLjAwLjAwCi11bnNwc2M3Izk0LjEwLjE4LjAxLjAwI0xhYm9yIG9yIGdlbmVyYWwgd29ya2VycyB0cmFkZSB1bmlvbnMjOTQuMTAuMTguMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTguMDIuMDAjVHJhZGUgdW5pb24gYWN0aXZpc3RzIHNlcnZpY2VzIzk0LjEwLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE4LjAzLjAwI1RyYWRlIHVuaW9uIGluZm9ybWF0aW9uIHNlcnZpY2VzIzk0LjEwLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE4LjA0LjAwI1RyYW5zcG9ydCB1bmlvbnMjOTQuMTAuMTguMDAuMDAKLXVuc3BzYzcjOTQuMTAuMTguMDUuMDAjVGVhY2hlcnMgdW5pb25zIzk0LjEwLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE4LjA2LjAwI01lZGljYWwgcGVyc29ubmVsIHVuaW9ucyM5NC4xMC4xOC4wMC4wMAotdW5zcHNjNyM5NC4xMC4xOC4wNy4wMCNFbXBsb3llcnMgdW5pb25zIzk0LjEwLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE4LjA4LjAwI0NpdmlsIHNlcnZhbnRzIHVuaW9ucyM5NC4xMC4xOC4wMC4wMAotdW5zcHNjNyM5NC4xMC4xOC4wOS4wMCNQZXJzb25hbCBhc3Npc3RhbmNlIHNlcnZpY2VzIzk0LjEwLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEwLjE4LjEwLjAwI0F2aWF0aW9uIHVuaW9ucyM5NC4xMC4xOC4wMC4wMAotdW5zcHNjNyM5NC4xMS4wMC4wMC4wMCNSZWxpZ2lvdXMgb3JnYW5pemF0aW9ucyM5NC4wMC4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMS4xNy4wMC4wMCNSZWxpZ2lvdXMgcmVzaWRlbmNlcyM5NC4xMS4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMS4xNy4wMS4wMCNQcml2YXRlIHJlbGlnaW91cyBob21lIHJlc2lkZW5jZXMjOTQuMTEuMTcuMDAuMDAKLXVuc3BzYzcjOTQuMTEuMTcuMDIuMDAjQ29tbXVuaXR5IHJlbGlnaW91cyBob21lIHJlc2lkZW5jZXMjOTQuMTEuMTcuMDAuMDAKLXVuc3BzYzcjOTQuMTEuMTcuMDMuMDAjUmVsaWdpb3VzIHJldHJlYXQgcmVzaWRlbmNlcyM5NC4xMS4xNy4wMC4wMAotdW5zcHNjNyM5NC4xMS4xNy4wNC4wMCNUZW1wb3JhcnkgcmVsaWdpb3VzIGhvbWUgcmVzaWRlbmNlcyM5NC4xMS4xNy4wMC4wMAotdW5zcHNjNyM5NC4xMS4xOC4wMC4wMCNQaWxncmltYWdlIG9yZ2FuaXphdGlvbnMgYW5kIHNlcnZpY2VzIzk0LjExLjAwLjAwLjAwCi11bnNwc2M3Izk0LjExLjE4LjAxLjAwI01lY2NhIHBpbGdyaW1hZ2Ugb3JnYW5pemF0aW9ucyBvciBzZXJ2aWNlcyM5NC4xMS4xOC4wMC4wMAotdW5zcHNjNyM5NC4xMS4xOC4wMi4wMCNWYXRpY2FuIHBpbGdyaW1hZ2Ugb3JnYW5pemF0aW9ucyBvciBzZXJ2aWNlcyM5NC4xMS4xOC4wMC4wMAotdW5zcHNjNyM5NC4xMS4xOC4wMy4wMCNQaWxncmltYWdlIHRyYXZlbCBhc3Npc3RhbmNlIHNlcnZpY2VzIzk0LjExLjE4LjAwLjAwCi11bnNwc2M3Izk0LjExLjE4LjA0LjAwI1BpbGdyaW1hZ2UgdG91ciBvcGVyYXRvcnMgc2VydmljZXMjOTQuMTEuMTguMDAuMDAKLXVuc3BzYzcjOTQuMTEuMTkuMDAuMDAjTWlzc2lvbmFyeSBzZXJ2aWNlcyM5NC4xMS4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMS4xOS4wMS4wMCNSZWxpZ2lvdXMgb3JkZXJzIHNlcnZpY2VzIzk0LjExLjE5LjAwLjAwCi11bnNwc2M3Izk0LjExLjE5LjAyLjAwI0V2YW5nZWxpY2FsIG1pc3Npb25hcnkgc2VydmljZXMjOTQuMTEuMTkuMDAuMDAKLXVuc3BzYzcjOTQuMTEuMTkuMDMuMDAjRWR1Y2F0aW9uYWwgbWlzc2lvbmFyeSBzZXJ2aWNlcyM5NC4xMS4xOS4wMC4wMAotdW5zcHNjNyM5NC4xMS4yMC4wMC4wMCNEZW5vbWluYXRpb25hbCBzZXJ2aWNlcyM5NC4xMS4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMS4yMC4wMS4wMCNIaW5kdWlzbSBzZXJ2aWNlcyM5NC4xMS4yMC4wMC4wMAotdW5zcHNjNyM5NC4xMS4yMC4wMi4wMCNCdWRkaGlzbSBzZXJ2aWNlcyM5NC4xMS4yMC4wMC4wMAotdW5zcHNjNyM5NC4xMS4yMC4wMy4wMCNDaHJpc3RpYW4gc2VydmljZXMjOTQuMTEuMjAuMDAuMDAKLXVuc3BzYzcjOTQuMTEuMjAuMDQuMDAjSXNsYW0gc2VydmljZXMjOTQuMTEuMjAuMDAuMDAKLXVuc3BzYzcjOTQuMTEuMjAuMDUuMDAjSnVkYWlzbSBzZXJ2aWNlcyM5NC4xMS4yMC4wMC4wMAotdW5zcHNjNyM5NC4xMi4wMC4wMC4wMCNDbHVicyM5NC4wMC4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMi4xNS4wMC4wMCNTcG9ydCBjbHVicyM5NC4xMi4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMi4xNS4wMS4wMCNJY2Ugc3BvcnRzIGNsdWJzIzk0LjEyLjE1LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE1LjAyLjAwI0JvYXRpbmcgb3Igc3dpbW1pbmcgc3BvcnQgY2x1YnMjOTQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTUuMDMuMDAjR3VuIG9yIGh1bnRpbmcgc3BvcnQgY2x1YnMjOTQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTUuMDQuMDAjT3V0ZG9vciBmaWVsZCBzcG9ydCBjbHVicyM5NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMi4xNS4wNS4wMCNJbmRvb3Igb3Igb3V0ZG9vciBjb3VydCBzcG9ydCBjbHVicyM5NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMi4xNS4wNi4wMCNXaW50ZXIgc3BvcnQgY2x1YnMjOTQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTUuMDcuMDAjQmVhY2ggb3Igd2F0ZXIgc3BvcnQgY2x1YnMjOTQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTUuMDguMDAjQ3ljbGluZyBzcG9ydCBjbHVicyM5NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMi4xNS4wOS4wMCNNb3VudGFpbmVlcmluZyBzcG9ydCBjbHVicyM5NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMi4xNS4xMC4wMCNSYWNpbmcgc3BvcnQgY2x1YnMjOTQuMTIuMTUuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTUuMTEuMDAjRmx5aW5nIHNwb3J0IGNsdWJzIzk0LjEyLjE1LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE1LjEyLjAwI1Byb2Zlc3Npb25hbCBvciBzZW1pcHJvZmVzc2lvbmFsIHNwb3J0cyBjbHVicyM5NC4xMi4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMi4xNS4xMy4wMCNTdGFkaXVtIGV2ZW50IG9wZXJhdG9yIHNlcnZpY2VzIzk0LjEyLjE1LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE1LjE0LjAwI1Nwb3J0IGNsdWIgbWFuYWdlcnMgb3IgcHJvbW90ZXJzIHNlcnZpY2VzIzk0LjEyLjE1LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE2LjAwLjAwI0hvYmJ5IGNsdWJzIzk0LjEyLjAwLjAwLjAwCi11bnNwc2M3Izk0LjEyLjE2LjAxLjAwI1BsYXlpbmcgY2FyZCBob2JieSBjbHVicyM5NC4xMi4xNi4wMC4wMAotdW5zcHNjNyM5NC4xMi4xNi4wMi4wMCNIYW5kY3JhZnRzIGNsdWJzIzk0LjEyLjE2LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE2LjAzLjAwI1BvZXRyeSBvciBsaXRlcmF0dXJlIGhvYmJ5IGNsdWJzIzk0LjEyLjE2LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE2LjA0LjAwI0Nvb2tpbmcgaG9iYnkgY2x1YnMjOTQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTYuMDUuMDAjR2FyZGVuaW5nIGhvYmJ5IGNsdWJzIzk0LjEyLjE2LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE2LjA2LjAwI0NvbGxlY3RvciBob2JieSBjbHViIzk0LjEyLjE2LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE2LjA3LjAwI1Njb3V0aW5nIGNsdWIjOTQuMTIuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTcuMDAuMDAjQW1hdGV1cnMgY2x1YnMjOTQuMTIuMDAuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTcuMDEuMDAjQW1hdGV1ciBkcmFtYSBjbHVicyBvciBzZXJ2aWNlcyM5NC4xMi4xNy4wMC4wMAotdW5zcHNjNyM5NC4xMi4xNy4wMi4wMCNBbWF0ZXVyIG11c2ljIGNsdWJzIG9yIHNlcnZpY2VzIzk0LjEyLjE3LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE3LjAzLjAwI0FtYXRldXIgZGFuY2UgY2x1YnMgb3Igc2VydmljZXMjOTQuMTIuMTcuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTcuMDQuMDAjQW1hdGV1ciBmaW5lIGFydHMgY2x1YnMgb3Igc2VydmljZXMjOTQuMTIuMTcuMDAuMDAKLXVuc3BzYzcjOTQuMTIuMTguMDAuMDAjU29jaWFsIGNsdWJzIzk0LjEyLjAwLjAwLjAwCi11bnNwc2M3Izk0LjEyLjE4LjAxLjAwI1lvdXRoIGNsdWJzIzk0LjEyLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE4LjAyLjAwI1NlbmlvciBjaXRpemVucyBjbHVicyM5NC4xMi4xOC4wMC4wMAotdW5zcHNjNyM5NC4xMi4xOC4wMy4wMCNTb2NpYWwgZ2F0aGVyaW5nIGNsdWJzIzk0LjEyLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE4LjA0LjAwI1NvY2lhbCBjbHVicyBmb3IgcGVvcGxlIHdpdGggZGlzYWJpbGl0aWVzIzk0LjEyLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEyLjE4LjA1LjAwI1dhciB2ZXRlcmFucyBzb2NpYWwgY2x1YnMjOTQuMTIuMTguMDAuMDAKLXVuc3BzYzcjOTQuMTMuMDAuMDAuMDAjQ2l2aWMgb3JnYW5pemF0aW9ucyBhbmQgYXNzb2NpYXRpb25zIGFuZCBtb3ZlbWVudHMjOTQuMDAuMDAuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTUuMDAuMDAjTm9uIGdvdmVybm1lbnRhbCBvcmdhbml6YXRpb25zIzk0LjEzLjAwLjAwLjAwCi11bnNwc2M3Izk0LjEzLjE1LjAxLjAwI0Vudmlyb25tZW50YWwgbm9uIGdvdmVybm1lbnRhbCBzZXJ2aWNlcyM5NC4xMy4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMy4xNS4wMi4wMCNFbWVyZ2VuY3kgcmVsaWVmIG5vbiBnb3Zlcm5tZW50YWwgc2VydmljZXMjOTQuMTMuMTUuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTUuMDMuMDAjVGVjaG5pY2FsIGFzc2lzdGFuY2Ugbm9uIGdvdmVybm1lbnRhbCBzZXJ2aWNlcyM5NC4xMy4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMy4xNS4wNC4wMCNEZXZlbG9wbWVudCBhaWQgbm9uIGdvdmVybmVtbnRhbCBzZXJ2aWNlcyM5NC4xMy4xNS4wMC4wMAotdW5zcHNjNyM5NC4xMy4xNi4wMC4wMCNDaGFyaXR5IG9yZ2FuaXphdGlvbnMjOTQuMTMuMDAuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTYuMDEuMDAjQ2hhcml0eSBvcmdhbml6YXRpb25zIHNoZWx0ZXIgc2VydmljZXMjOTQuMTMuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTYuMDIuMDAjRm9vZCByZWxpZWYgc2VydmljZXMjOTQuMTMuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTYuMDMuMDAjTGVnYWwgYXNzaXN0YW5jZSBzZXJ2aWNlcyM5NC4xMy4xNi4wMC4wMAotdW5zcHNjNyM5NC4xMy4xNi4wNC4wMCNSZXNvdXJjZSBtb2JpbGl6YXRpb24gc2VydmljZXMjOTQuMTMuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTYuMDUuMDAjSW50ZXJuYXRpb25hbCBhaWQgYXNzaXN0YW5jZSBzZXJ2aWNlcyM5NC4xMy4xNi4wMC4wMAotdW5zcHNjNyM5NC4xMy4xNi4wNi4wMCNPcnBoYW5hZ2Ugb3IgYWRvcHRpb24gc2VydmljZXMjOTQuMTMuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTYuMDcuMDAjRWRlcmx5IGFzc2lzdGFuY2Ugb3JnYW5pemF0aW9ucyM5NC4xMy4xNi4wMC4wMAotdW5zcHNjNyM5NC4xMy4xNi4wOC4wMCNQcmlzb25lciBhc3Npc3RhbmNlIG9yZ2FuaXphdGlvbnMjOTQuMTMuMTYuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTcuMDAuMDAjR3JlZW4gYXNzb2NpYXRpb25zIzk0LjEzLjAwLjAwLjAwCi11bnNwc2M3Izk0LjEzLjE3LjAxLjAwI1JhZGljYWwgZ3JlZW4gYXNzb2NpYXRpb25zIzk0LjEzLjE3LjAwLjAwCi11bnNwc2M3Izk0LjEzLjE3LjAyLjAwI0Vjb2ZlbWluaXN0cyBhc3NvY2lhdGlvbnMjOTQuMTMuMTcuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTcuMDMuMDAjRWNvbG9naWNhbCBwb2xpdGljYWwgb3JnYW5pemF0aW9ucyM5NC4xMy4xNy4wMC4wMAotdW5zcHNjNyM5NC4xMy4xNy4wNC4wMCNHcmVlbiBhY3RpdmlzdHMgbW92ZW1lbnRzIG9yIHNlcnZpY2VzIzk0LjEzLjE3LjAwLjAwCi11bnNwc2M3Izk0LjEzLjE4LjAwLjAwI01vdmVtZW50cyM5NC4xMy4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMy4xOC4wMS4wMCNHYXkgb3IgbGVzYmlhbiBvciBiaXNleHVhbCBvciB0cmFuc2dlbmRlciBtb3ZlbWVudHMjOTQuMTMuMTguMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTguMDIuMDAjQW50aSByYWNpc20gbW92ZW1lbnRzIzk0LjEzLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEzLjE4LjAzLjAwI1dvbWVuIGxpYmVyYXRpb24gbW92ZW1lbnRzIzk0LjEzLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEzLjE4LjA0LjAwI0ZyYXRlcm5hbCBhc3NvY2lhdGlvbnMjOTQuMTMuMTguMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTguMDUuMDAjRXRobmljIG1pbm9yaXRpZXMgY3VsdHVyYWwgcHJlc2VydmF0aW9uIHNlcnZpY2VzIzk0LjEzLjE4LjAwLjAwCi11bnNwc2M3Izk0LjEzLjE5LjAwLjAwI0FuaW1hbCBwcm90ZWN0aW9uIGFzc29jaWF0aW9ucyM5NC4xMy4wMC4wMC4wMAotdW5zcHNjNyM5NC4xMy4xOS4wMS4wMCNBbmltYWwgbGliZXJhdGlvbiBtb3ZlbWVudHMjOTQuMTMuMTkuMDAuMDAKLXVuc3BzYzcjOTQuMTMuMTkuMDIuMDAjRW5kYW5nZXJlZCBzcGVjaWVzIHByb3RlY3Rpb24gYXNzb2NpYXRpb25zIzk0LjEzLjE5LjAwLjAwCi11bnNwc2M3Izk0LjEzLjE5LjAzLjAwI1RocmVhdGVuZWQgYW5pbWFscyBwcm90ZWN0aW9uIGFzc29jaWF0aW9ucyM5NC4xMy4xOS4wMC4wMAotdW5zcHNjNyM5NC4xMy4yMC4wMC4wMCNIdW1hbiByaWdodHMgYWR2b2NhY3kgYW5kIGRlZmVuc2UgYXNzb2NpYXRpb25zIzk0LjEzLjAwLjAwLjAwCi11bnNwc2M3Izk0LjEzLjIwLjAxLjAwI0NoaWxkcmVuIHJpZ2h0cyBkZWZlbnNlIHNlcnZpY2VzIzk0LjEzLjIwLjAwLjAwCi11bnNwc2M3Izk0LjEzLjIwLjAyLjAwI1ByaXNvbmVycyBkZWZlbnNlIHNlcnZpY2VzIzk0LjEzLjIwLjAwLjAwCi11bnNwc2M3Izk0LjEzLjIwLjAzLjAwI1BoeXNpY2FsIG9yIG1lbnRhbCB0b3J0dXJlIGRlZmVuc2UgYXNzb2NpYXRpb25zIzk0LjEzLjIwLjAwLjAwCi11bnNwc2M3Izk0LjEzLjIwLjA0LjAwI0ZyZWVkb20gb2Ygc3BlZWNoIGRlZmVuc2UgYXNzb2NpYXRpb25zIzk0LjEzLjIwLjAwLjAwCi11bnNwc2M3Izk0LjEzLjIwLjA1LjAwI1ZvdGluZyByaWdodHMgZGVmZW5zZSBhc3NvY2lhdGlvbnMjOTQuMTMuMjAuMDAuMDAKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0J1c1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9CdXNQdWJsaXNoU2VydmljZUFkdmFuY2VkRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZTlmOWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0J1c1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzdWJRdWVyeUtleVByb3BlcnR5IiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU3ViUXVlcnlLZXlQcm9wZXJ0eSIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gcHJvY2Vzc1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRGb3JtKGZvcm0pCi0gIHsKLSAgICBpZiAoaGFuZGxlU3VibWl0KGZvcm0pKQotICAgIHsKLSAgICAgIHByb2Nlc3NSZXN1bHRUYWJsZSgicHVibGlzaFNlcnZpY2VBZHZhbmNlZFNlcnZpY2VJbnRlcmZhY2UiLCI8JT1VRERJQWN0aW9uSW5wdXRzLk5PREVJRF9TRVJWSUNFX0lOVEVSRkFDRSU+Iixmb3JtLGZhbHNlKTsKLSAgICAgIHByb2Nlc3NMYW5ndWFnZUlucHV0VGFibGUoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWROYW1lcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRV9MQU5HVUFHRSU+IiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc0xhbmd1YWdlSW5wdXRUYWJsZSgicHVibGlzaFNlcnZpY2VBZHZhbmNlZERlc2NyaXB0aW9ucyIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT05fTEFOR1VBR0UlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT04lPiIsZm9ybSk7Ci0gICAgICBwcm9jZXNzQ2F0ZWdvcnlUYWJsZSgicHVibGlzaFNlcnZpY2VBZHZhbmNlZENhdGVnb3JpZXMiLGZvcm0sZmFsc2UpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotPC9zY3JpcHQ+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgIEZvcm1Ub29sIGZvcm1Ub29sID0gKEZvcm1Ub29sKShzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCkpOwotICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpKTsKLSU+Ci08ZGl2IGlkPSJwdWJsaXNoU2VydmljZUFkdmFuY2VkIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvQnVzUHVibGlzaFNlcnZpY2VBZHZhbmNlZEFjdGlvbkpTUC5qc3AiKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgb25TdWJtaXQ9InJldHVybiBwcm9jZXNzQWR2YW5jZWRGb3JtKHRoaXMpIj4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzdWJRdWVyeUdldCI+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5OT0RFSURfQlVTSU5FU1MlPiIgdmFsdWU9IjwlPXNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSU+Ij4gIAotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX0lOSVRJQVRFRCU+Ij4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLk5FV19TVUJRVUVSWV9RVUVSWV9JVEVNJT4iPgotICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MTAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0JVU0lORVNTX1BVQkxJU0hfU0VSVklDRV9BRFZBTkNFRF9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicHVibGlzaFNlcnZpY2VBZHZhbmNlZEF1dGhlbnRpY2F0aW9uIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgbm93cmFwIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfYnVzaW5lc3NfcHVibGlzaF9zZXJ2aWNlX2FkdmFuY2Vfd3NkbF91cmwiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9XU0RMX1VSTCIpJT48L2xhYmVsPgotPCUKLSAgIGlmICghZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1dTRExfVVJMKSkKLSAgIHsKLSU+Ci0gICAgICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotPCUKLSAgIH0KLSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZCBub3dyYXAgaGVpZ2h0PTMwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0Om9wZW5XU0RMQnJvd3NlcigncHVibGlzaFNlcnZpY2VBZHZhbmNlZCcsPCU9QWN0aW9uSW5wdXRzLldTRExfVFlQRV9TRVJWSUNFJT4pIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTElOS19CUk9XU0UiKSU+PC9hPgotICAgICAgICA8L3RkPgotICAgICAgICA8dGQgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTM+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dF9idXNpbmVzc19wdWJsaXNoX3NlcnZpY2VfYWR2YW5jZV93c2RsX3VybCIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMJT4iIGNsYXNzPSJ0ZXh0ZW50ZXIiPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPCUKLSAgIGJvb2xlYW4gdGFibGVIYXNFcnJvcnMgPSAhZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFUyk7Ci0gICBTdHJpbmdbXSBzZXJ2aWNlSW50ZXJmYWNlU3BlY2lmaWNJbmZvID0geyJGT1JNX0xBQkVMX1NFUlZJQ0VfSU5URVJGQUNFUyIsKG5ldyBCb29sZWFuKHRhYmxlSGFzRXJyb3JzKSkudG9TdHJpbmcoKSxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTKSwicHVibGlzaFNlcnZpY2VBZHZhbmNlZCIsVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFU307Ci0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlIik7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoc2VydmljZUludGVyZmFjZVNwZWNpZmljSW5mbyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL3VkZGlPYmplY3RzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWROYW1lcyIpOwotICAgU3RyaW5nW10gbmFtZVNwZWNpZmljSW5mbyA9IHsiRk9STV9MQUJFTF9OQU1FUyIsIkZPUk1fTEFCRUxfTkFNRSIsU3RyaW5nLnZhbHVlT2YoIWZvcm1Ub29sUEkuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9OQU1FUykpfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhuYW1lU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvbGFuZ3VhZ2VJbnB1dF90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJwdWJsaXNoU2VydmljZUFkdmFuY2VkRGVzY3JpcHRpb25zIik7Ci0gICBTdHJpbmdbXSBkZXNjU3BlY2lmaWNJbmZvID0geyJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OUyIsIkZPUk1fTEFCRUxfREVTQ1JJUFRJT04iLFN0cmluZy52YWx1ZU9mKCFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfREVTQ1JJUFRJT05TKSl9OwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKGRlc2NTcGVjaWZpY0luZm8pOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9sYW5ndWFnZUlucHV0X3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRDYXRlZ29yaWVzIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2NhdGVnb3JpZXNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8L2Zvcm0+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9CdXNQdWJsaXNoU2VydmljZUZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0J1c1B1Ymxpc2hTZXJ2aWNlRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYThhMTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0J1c1B1Ymxpc2hTZXJ2aWNlRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyNjAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy5TZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuTGlzdEVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGouZGF0YXR5cGUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgLy8gc2VsZWN0ZWROb2RlIG11c3QgYmUgYSBidXNpbmVzcyBub2RlLgotICAgTm9kZSBidXNOb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgIEZvcm1Ub29sIGZvcm1Ub29sID0gKEZvcm1Ub29sKShidXNOb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSU+Ci08anNwOnVzZUJlYW4gaWQ9InN1YlF1ZXJ5S2V5UHJvcGVydHkiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5TdWJRdWVyeUtleVByb3BlcnR5IiBzY29wZT0icmVxdWVzdCI+Ci08JQotICAgU3RyaW5nIHN1YlF1ZXJ5S2V5ID0gKFN0cmluZylmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSk7Ci0gICBzdWJRdWVyeUtleVByb3BlcnR5LnNldFN1YlF1ZXJ5S2V5KHN1YlF1ZXJ5S2V5KTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPCUKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSk7Ci0gICAvLyBidXNpbmVzcyBwYXJlbnQgbm9kZSBtYXkgYmUgZWl0aGVyIHRoZSBwdWJsaXNoZWQgaXRlbXMgZm9sZGVyIG9yIGEgcXVlcnkgbm9kZS4KLSAgIFVERElNYWluTm9kZSB1ZGRpTWFpbk5vZGUgPSAoVURESU1haW5Ob2RlKW5hdmlnYXRvck1hbmFnZXIuZ2V0Um9vdE5vZGUoKTsKLSAgIE5vZGUgcmVnTm9kZSA9IHVkZGlNYWluTm9kZS5nZXRSZWdpc3RyeU5vZGUoYnVzTm9kZSk7Ci0gICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfQlVTSU5FU1NfUFVCTElTSF9TRVJWSUNFIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL3RhYmxlcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpdGFibGVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICB2YXIgc2VjdGlvbklkcyA9IFsicHVibGlzaFNlcnZpY2VTaW1wbGUiLCJwdWJsaXNoU2VydmljZUFkdmFuY2VkIl07Ci0gIHZhciBzdHlsZUZvcm0gPSAicHVibGlzaFNlcnZpY2VTdHlsZSI7Ci0gIAotICBmdW5jdGlvbiBwcm9jZXNzQWR2YW5jZWRGb3JtKGZvcm0pCi0gIHsKLSAgICBpZiAoaGFuZGxlU3VibWl0KGZvcm0pKQotICAgIHsKLSAgICAgIHByb2Nlc3NSZXN1bHRUYWJsZSgicHVibGlzaFNlcnZpY2VBZHZhbmNlZFNlcnZpY2VJbnRlcmZhY2UiLCI8JT1VRERJQWN0aW9uSW5wdXRzLk5PREVJRF9TRVJWSUNFX0lOVEVSRkFDRSU+Iixmb3JtLGZhbHNlKTsKLSAgICAgIHByb2Nlc3NMYW5ndWFnZUlucHV0VGFibGUoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWROYW1lcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRV9MQU5HVUFHRSU+IiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc0xhbmd1YWdlSW5wdXRUYWJsZSgicHVibGlzaFNlcnZpY2VBZHZhbmNlZERlc2NyaXB0aW9ucyIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT05fTEFOR1VBR0UlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT04lPiIsZm9ybSk7Ci0gICAgICBwcm9jZXNzQ2F0ZWdvcnlUYWJsZSgicHVibGlzaFNlcnZpY2VBZHZhbmNlZENhdGVnb3JpZXMiLGZvcm0sZmFsc2UpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgZnVuY3Rpb24gc2V0QXV0aGVudGljYXRpb25TZWN0aW9uRGVmYXVsdHMoZm9ybSkKLSAgewotPCUKLSAgIFN0cmluZyBwdWJsaXNoVVJMID0gKFN0cmluZylmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgIFN0cmluZyB1c2VySWQgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0lPgotICAgIGZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShwdWJsaXNoVVJMKSU+IjsKLSAgICBmb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVzZXJJZCklPiI7Ci0gICAgZm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHBhc3N3b3JkKSU+IjsKLSAgfQotICAKLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKQotICB7Ci08JQotICAgU3RyaW5nIHB1Ymxpc2hTZXJ2aWNlU3R5bGVJbmRleCA9IChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTKTsKLSU+Ci0gICAgZG9jdW1lbnQuZm9ybXNbc3R5bGVGb3JtXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTJT5bPCU9cHVibGlzaFNlcnZpY2VTdHlsZUluZGV4JT5dLmNoZWNrZWQgPSB0cnVlOwotICAgIAotICAgIHZhciBwdWJsaXNoU2VydmljZVNpbXBsZVNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0lNUExFJT5dKTsKLSAgICB2YXIgcHVibGlzaFNlcnZpY2VTaW1wbGVGb3JtID0gcHVibGlzaFNlcnZpY2VTaW1wbGVTZWN0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIikuaXRlbSgwKTsKLSAgICBzZXRBdXRoZW50aWNhdGlvblNlY3Rpb25EZWZhdWx0cyhwdWJsaXNoU2VydmljZVNpbXBsZUZvcm0pOwotICAgIHB1Ymxpc2hTZXJ2aWNlU2ltcGxlRm9ybS48JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV1NETF9VUkwlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfV1NETF9VUkwpKSU+IjsKLSAgICBwdWJsaXNoU2VydmljZVNpbXBsZUZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9OQU1FJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX05BTUUpKSU+IjsKLSAgICBwdWJsaXNoU2VydmljZVNpbXBsZUZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9ERVNDUklQVElPTiU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9ERVNDUklQVElPTikpJT4iOwotICAgIAotICAgIC8vIEFkdmFuY2VkIGZvcm0gZGV0YWlscy4KLSAgICB2YXIgcHVibGlzaFNlcnZpY2VBZHZhbmNlZFNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQURWQU5DRUQlPl0pOwotICAgIHZhciBwdWJsaXNoU2VydmljZUFkdmFuY2VkRm9ybSA9IHB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRTZWN0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIikuaXRlbSgwKTsKLSAgICBzZXRBdXRoZW50aWNhdGlvblNlY3Rpb25EZWZhdWx0cyhwdWJsaXNoU2VydmljZUFkdmFuY2VkRm9ybSk7Ci0gICAgdmFyIHB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWROYW1lc1RhYmxlID0gZ2V0VGFibGUoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWROYW1lcyIpOwotICAgIHZhciBwdWJsaXNoU2VydmljZUFkdmFuY2VkRGVzY3JpcHRpb25zVGFibGUgPSBnZXRUYWJsZSgicHVibGlzaFNlcnZpY2VBZHZhbmNlZERlc2NyaXB0aW9ucyIpOwotICAgIHB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRGb3JtLjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1dTRExfVVJMKSklPiI7Ci08JQotICAgVmVjdG9yIHNlcnZpY2VJbnRlcmZhY2VzID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVMpOwotICAgVmVjdG9yIHNlcnZpY2VJbnRlcmZhY2VzQ29weSA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTX0NPUFkpOwotICAgaWYgKHNlcnZpY2VJbnRlcmZhY2VzICE9IG51bGwpCi0gICB7Ci0gICAgIGlmIChzZXJ2aWNlSW50ZXJmYWNlc0NvcHkgPT0gbnVsbCkKLSAgICAgICBzZXJ2aWNlSW50ZXJmYWNlc0NvcHkgPSBuZXcgVmVjdG9yKCk7Ci0gICAgIGVsc2UKLSAgICAgICBzZXJ2aWNlSW50ZXJmYWNlc0NvcHkucmVtb3ZlQWxsRWxlbWVudHMoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8c2VydmljZUludGVyZmFjZXMuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KXNlcnZpY2VJbnRlcmZhY2VzLmVsZW1lbnRBdChpKTsKLSAgICAgICBpbnQgdGFyZ2V0Tm9kZUlkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Tm9kZUlkKCk7Ci0gICAgICAgaW50IHRhcmdldFRvb2xJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldFRvb2xJZCgpOwotICAgICAgIGludCB0YXJnZXRWaWV3SWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXRWaWV3SWQoKTsKLSAgICAgICBTdHJpbmcgdXJsID0gU2VsZWN0U3ViUXVlcnlJdGVtQWN0aW9uLmdldEFjdGlvbkxpbmsodGFyZ2V0Tm9kZUlkLHRhcmdldFRvb2xJZCx0YXJnZXRWaWV3SWQsc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVMsaSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTLGZhbHNlKTsKLSAgICAgICBUTW9kZWwgdE1vZGVsID0gKFRNb2RlbClsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICBzZXJ2aWNlSW50ZXJmYWNlc0NvcHkuYWRkRWxlbWVudChzZXJ2aWNlSW50ZXJmYWNlcy5lbGVtZW50QXQoaSkpOwotJT4KLSAgICBhZGRSZXN1bHRSb3coInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlIiw8JT10YXJnZXROb2RlSWQlPiwiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHVybCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodE1vZGVsLmdldE5hbWVTdHJpbmcoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSh0TW9kZWwuZ2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKCkpJT4iKTsKLTwlCi0gICAgIH0KLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTX0NPUFksc2VydmljZUludGVyZmFjZXNDb3B5KTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgc2VydmljZUludGVyZmFjZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgIHNlcnZpY2VJbnRlcmZhY2VzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTLHNlcnZpY2VJbnRlcmZhY2VzKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTX0NPUFksc2VydmljZUludGVyZmFjZXNDb3B5KTsKLSAgIH0KLSU+Ci08JQotICAgVmVjdG9yIHNlcnZpY2VOYW1lVmVjdG9yID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9OQU1FUyk7Ci0gICBpZiAoc2VydmljZU5hbWVWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8c2VydmljZU5hbWVWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIE5hbWUgbmFtZSA9IChOYW1lKXNlcnZpY2VOYW1lVmVjdG9yLmVsZW1lbnRBdChpKTsKLSU+Ci0gICAgYWRkTGFuZ3VhZ2VJbnB1dFJvdygicHVibGlzaFNlcnZpY2VBZHZhbmNlZE5hbWVzIiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfTkFNRV9URVhUX1ZBTFVFIikpJT4iKTsKLSAgICBzZXRMYW5ndWFnZUlucHV0Um93U2V0dGluZ3MoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWROYW1lcyIsPCU9aSU+LCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUobmFtZS5nZXRMYW5nKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUobmFtZS5nZXRUZXh0KCkpJT4iKTsKLTwlCi0gICAgICAgaWYgKCFmb3JtVG9vbFBJLmlzUm93SW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTkFNRVMsaSkpCi0gICAgICAgewotJT4KLSAgICBoaWdobGlnaHRFcnJhbnRSb3cocHVibGlzaFNlcnZpY2VBZHZhbmNlZE5hbWVzVGFibGUucm93c1s8JT1pJT4rbnVtYmVyT2ZIZWFkZXJSb3dzXSwiZXJyYW50cm93Iik7Ci08JQotICAgICAgIH0KLSAgICAgfQotICAgfQotCi0gICBWZWN0b3Igc2VydmljZURlc2NyaXB0aW9uVmVjdG9yID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMpOwotICAgaWYgKHNlcnZpY2VEZXNjcmlwdGlvblZlY3RvciAhPSBudWxsKQotICAgewotICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlRGVzY3JpcHRpb25WZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gKERlc2NyaXB0aW9uKXNlcnZpY2VEZXNjcmlwdGlvblZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZExhbmd1YWdlSW5wdXRSb3coInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWREZXNjcmlwdGlvbnMiLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9ERVNDUklQVElPTl9URVhUX1ZBTFVFIikpJT4iKTsKLSAgICBzZXRMYW5ndWFnZUlucHV0Um93U2V0dGluZ3MoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWREZXNjcmlwdGlvbnMiLDwlPWklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGRlc2NyaXB0aW9uLmdldExhbmcoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShkZXNjcmlwdGlvbi5nZXRUZXh0KCkpJT4iKTsKLTwlCi0gICAgICAgaWYgKCFmb3JtVG9vbFBJLmlzUm93SW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfREVTQ1JJUFRJT05TLGkpKQotICAgICAgIHsKLSU+Ci0gICAgaGlnaGxpZ2h0RXJyYW50Um93KHB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWREZXNjcmlwdGlvbnNUYWJsZS5yb3dzWzwlPWklPitudW1iZXJPZkhlYWRlclJvd3NdLCJlcnJhbnRyb3ciKTsKLTwlCi0gICAgICAgfQotICAgICB9Ci0gICB9Ci0KLSAgIENhdGVnb3J5QmFnIHNlcnZpY2VDYXRCYWcgPSAoQ2F0ZWdvcnlCYWcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQ0FURUdPUklFUyk7Ci0gICBpZiAoc2VydmljZUNhdEJhZyAhPSBudWxsKQotICAgewotICAgICBWZWN0b3Iga2V5ZWRSZWZlcmVuY2VWZWN0b3IgPSBzZXJ2aWNlQ2F0QmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCk7Ci0gICAgIGZvciAoaW50IGk9MDtpPGtleWVkUmVmZXJlbmNlVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlrZXllZFJlZmVyZW5jZVZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZENhdGVnb3J5Um93KCJwdWJsaXNoU2VydmljZUFkdmFuY2VkQ2F0ZWdvcmllcyIpOwotICAgIHNldENhdGVnb3J5Um93U2V0dGluZ3MoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRDYXRlZ29yaWVzIiw8JT1pJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRUTW9kZWxLZXkoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlOYW1lKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0S2V5VmFsdWUoKSklPiIpOwotPCUKLSAgICAgfQotICAgfQotICAgCi0gICBpZiAoIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgewotJT4KLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVibGlzaFNlcnZpY2VTaW1wbGVBdXRoZW50aWNhdGlvbiIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVibGlzaFNlcnZpY2VBZHZhbmNlZEF1dGhlbnRpY2F0aW9uIikuc3R5bGUuZGlzcGxheSA9ICIiOwotPCUKLSAgIH0KLSU+Ci0gICAgc2hvd1B1Ymxpc2hGb3JtKDwlPXB1Ymxpc2hTZXJ2aWNlU3R5bGVJbmRleCU+KTsgICAgCi0gIH0KLSAgCi0gIGZ1bmN0aW9uIHNob3dQdWJsaXNoRm9ybShzdHlsZSkKLSAgewotICAgIGNsb3NlQWxsVWRkaUNoaWxkV2luZG93cygpOwotICAgIGZvciAodmFyIGk9MDtpPHNlY3Rpb25JZHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAoaSA9PSBzdHlsZSkKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkc1tpXSkuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgICAgZWxzZQotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWRzW2ldKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgIH0KLSAgICB2YXIgbG9hZFNjcmVlblRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRTY3JlZW4iKTsKLSAgICBpZiAobG9hZFNjcmVlblRhYmxlLnJvd3MubGVuZ3RoID4gMCkKLSAgICAgIGxvYWRTY3JlZW5UYWJsZS5kZWxldGVSb3coMCk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5TY3JlZW4iKS5zdHlsZS5kaXNwbGF5ID0gIiI7ICAgIAotICB9Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIiBvblVubG9hZD0iY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCkiPgotICA8ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8dGFibGUgaWQ9ImxvYWRTY3JlZW4iPgotICAgICAgPHRyPgotICAgICAgICA8dGQ+Ci0gICAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfTE9BRF9JTl9QUk9HUkVTUyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgICA8ZGl2IGlkPSJtYWluU2NyZWVuIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci08JQotICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gInVkZGkvaW1hZ2VzL3B1Ymxpc2hfc2VydmljZV9oaWdobGlnaHRlZC5naWYiOwotICAgU3RyaW5nIHRpdGxlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9QVUJMSVNIX1NFUlZJQ0UiKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgICA8Zm9ybSBuYW1lPSJwdWJsaXNoU2VydmljZVN0eWxlIiBzdHlsZT0ibWFyZ2luLXRvcDowOyI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9QVUJMSVNIX0ZPUk0iKSU+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+ICAgICAgICAKLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InJhZGlvX2J1c2luZXNzX3B1Ymxpc2hfc2VydmljZV9zaW1wbGUiIGNsYXNzPSJyYWRpbyIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFUyU+IiBvbkNsaWNrPSJzaG93UHVibGlzaEZvcm0oPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUlPikiPjxsYWJlbCBmb3I9InJhZGlvX2J1c2luZXNzX3B1Ymxpc2hfc2VydmljZV9zaW1wbGUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1JBRElPX1NJTVBMRSIpJT48L2xhYmVsPgotICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJyYWRpb19idXNpbmVzc19wdWJsaXNoX3NlcnZpY2VfYWR2YW5jZSIgY2xhc3M9InJhZGlvIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTJT4iIG9uQ2xpY2s9InNob3dQdWJsaXNoRm9ybSg8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0FEVkFOQ0VEJT4pIj48bGFiZWwgZm9yPSJyYWRpb19idXNpbmVzc19wdWJsaXNoX3NlcnZpY2VfYWR2YW5jZSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fUkFESU9fQURWQU5DRUQiKSU+PC9sYWJlbD4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgIDwvZm9ybT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9CdXNQdWJsaXNoU2VydmljZVNpbXBsZUZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL0J1c1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICA8L2Rpdj4KLSAgPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgc2V0RGVmYXVsdHMoKTsKLTwvc2NyaXB0PiAgCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvQnVzUHVibGlzaFNlcnZpY2VTaW1wbGVGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9CdXNQdWJsaXNoU2VydmljZVNpbXBsZUZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWE0ZDkxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9CdXNQdWJsaXNoU2VydmljZVNpbXBsZUZvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlLZXlQcm9wZXJ0eSIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlN1YlF1ZXJ5S2V5UHJvcGVydHkiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSk7Ci0lPgotPGRpdiBpZD0icHVibGlzaFNlcnZpY2VTaW1wbGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9CdXNQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbkpTUC5qc3AiKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgb25TdWJtaXQ9InJldHVybiBoYW5kbGVTdWJtaXQodGhpcykiPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTk9ERUlEX0JVU0lORVNTJT4iIHZhbHVlPSI8JT1zZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCklPiI+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5ORVdfU1VCUVVFUllfSU5JVElBVEVEJT4iPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX1FVRVJZX0lURU0lPiI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0xMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQlVTSU5FU1NfUFVCTElTSF9TRVJWSUNFX1NJTVBMRV9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicHVibGlzaFNlcnZpY2VTaW1wbGVBdXRoZW50aWNhdGlvbiIpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9hdXRoZW50aWNhdGlvbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIG5vd3JhcCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X2J1c2luZXNzX3B1Ymxpc2hfc2VydmljZV9zaW1wbGVfd3NkbF91cmwiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9XU0RMX1VSTCIpJT48L2xhYmVsPgotPCUKLSAgIGlmICghZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9XU0RMX1VSTCkpCi0gICB7Ci0lPgotICAgICAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLTwlCi0gICB9Ci0lPgotICAgICAgICA8L3RkPgotICAgICAgICA8dGQgbm93cmFwIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuV1NETEJyb3dzZXIoJ3B1Ymxpc2hTZXJ2aWNlU2ltcGxlJyw8JT1BY3Rpb25JbnB1dHMuV1NETF9UWVBFX1NFUlZJQ0UlPikiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0JST1dTRSIpJT48L2E+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNvbHNwYW49Mz4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X2J1c2luZXNzX3B1Ymxpc2hfc2VydmljZV9zaW1wbGVfd3NkbF91cmwiIG5hbWU9IjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCU+IiBjbGFzcz0idGV4dGVudGVyIj4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTMgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfYnVzaW5lc3NfcHVibGlzaF9zZXJ2aWNlX3NpbXBsZV9uYW1lIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FIiklPjwvbGFiZWw+Ci08JQotICAgaWYgKCFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX05BTUUpKQotICAgewotJT4KLSAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci08JQotICAgfQotJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNvbHNwYW49Mz4gPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dF9idXNpbmVzc19wdWJsaXNoX3NlcnZpY2Vfc2ltcGxlX25hbWUiIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfTkFNRSU+IiBjbGFzcz0idGV4dGVudGVyIj4gPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTMgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfYnVzaW5lc3NfcHVibGlzaF9zZXJ2aWNlX3NpbXBsZV9kZXNjIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ERVNDUklQVElPTiIpJT48L2xhYmVsPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNvbHNwYW49Mz4gPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dF9idXNpbmVzc19wdWJsaXNoX3NlcnZpY2Vfc2ltcGxlX2Rlc2MiIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfREVTQ1JJUFRJT04lPiIgY2xhc3M9InRleHRlbnRlciI+IDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZm9ybT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0J1c2luZXNzRGV0YWlsc0Zvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0J1c2luZXNzRGV0YWlsc0Zvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTBhMDlkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9CdXNpbmVzc0RldGFpbHNGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGouZGF0YXR5cGUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgIFRvb2xNYW5hZ2VyIGN1cnJlbnRUb29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKTsKLSAgIEZvcm1Ub29sIGZvcm1Ub29sID0gKEZvcm1Ub29sKShjdXJyZW50VG9vbE1hbmFnZXIuZ2V0U2VsZWN0ZWRUb29sKCkpOwotICAgVURESU1haW5Ob2RlIHVkZGlNYWluTm9kZSA9IChVRERJTWFpbk5vZGUpbmF2aWdhdG9yTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgUmVnaXN0cnlOb2RlIHJlZ05vZGUgPSB1ZGRpTWFpbk5vZGUuZ2V0UmVnaXN0cnlOb2RlKHNlbGVjdGVkTm9kZSk7Ci0gICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfQlVTSU5FU1NfREVUQUlMUyIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL3Jlc3VtZXByb3h5bG9hZHBhZ2UuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3Jtc3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL2RldGFpbHN0YWJsZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIHNldERlZmF1bHRzKCkKLSAgewotICAgIHZhciBidXNpbmVzc0RldGFpbHNEaXNjb3ZlcnlVUkxzVGFibGUgPSBnZXRUYWJsZSgiYnVzaW5lc3NEZXRhaWxzRGlzY292ZXJ5VVJMcyIpOwotICAgIHZhciBidXNpbmVzc0RldGFpbHNOYW1lc1RhYmxlID0gZ2V0VGFibGUoImJ1c2luZXNzRGV0YWlsc05hbWVzIik7Ci0gICAgdmFyIGJ1c2luZXNzRGV0YWlsc0Rlc2NyaXB0aW9uc1RhYmxlID0gZ2V0VGFibGUoImJ1c2luZXNzRGV0YWlsc0Rlc2NyaXB0aW9ucyIpOwotICAgIHZhciBidXNpbmVzc0RldGFpbHNJZGVudGlmaWVyc1RhYmxlID0gZ2V0VGFibGUoImJ1c2luZXNzRGV0YWlsc0lkZW50aWZpZXJzIik7Ci08JQotICAgVmVjdG9yIGRpc2NvdmVyeVVSTFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ESVNDT1ZFUllVUkxTKTsKLSAgIGlmIChkaXNjb3ZlcnlVUkxWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8ZGlzY292ZXJ5VVJMVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClkaXNjb3ZlcnlVUkxWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgIERpc2NvdmVyeVVSTCBkaXNjb3ZlcnlVUkwgPSAoRGlzY292ZXJ5VVJMKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgIGJvb2xlYW4gaXNFcnJvciA9ICFmb3JtVG9vbC5pc1Jvd0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ESVNDT1ZFUllVUkxTLGkpOwotICAgICAgIGJvb2xlYW4gaXNOZXdJdGVtID0gKGxpc3RFbGVtZW50LmdldFRhcmdldFZpZXdJZCgpID09IEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCk7Ci0lPgotICAgIGFkZERldGFpbHNEaXNjb3ZlcnlVUkxSb3coImJ1c2luZXNzRGV0YWlsc0Rpc2NvdmVyeVVSTHMiLDwlPWlzRXJyb3J8fGlzTmV3SXRlbSU+KTsKLSAgICBzZXREZXRhaWxzRGlzY292ZXJ5VVJMUm93KCJidXNpbmVzc0RldGFpbHNEaXNjb3ZlcnlVUkxzIiw8JT1pJT4sPCU9bGlzdEVsZW1lbnQuZ2V0Vmlld0lkKCklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGRpc2NvdmVyeVVSTC5nZXRUZXh0KCkpJT4iKTsKLTwlCi0gICAgICAgaWYgKGlzRXJyb3IpCi0gICAgICAgewotJT4KLSAgICBoaWdobGlnaHRFcnJhbnRSb3coYnVzaW5lc3NEZXRhaWxzRGlzY292ZXJ5VVJMc1RhYmxlLnJvd3NbPCU9aSU+K251bWJlck9mSGVhZGVyUm93c10sImVycmFudFJvdyIpOwotPCUKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLQotICAgVmVjdG9yIG5hbWVJbmRleFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUyk7Ci0gICBpZiAobmFtZUluZGV4VmVjdG9yICE9IG51bGwpCi0gICB7Ci0gICAgIGZvciAoaW50IGk9MDtpPG5hbWVJbmRleFZlY3Rvci5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpbmFtZUluZGV4VmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICBOYW1lIG5hbWUgPSAoTmFtZSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICBib29sZWFuIGlzRXJyb3IgPSAhZm9ybVRvb2wuaXNSb3dJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTkFNRVMsaSk7Ci0gICAgICAgYm9vbGVhbiBpc05ld0l0ZW0gPSAobGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKTsKLSU+Ci0gICAgYWRkRGV0YWlsc0xhbmd1YWdlSW5wdXRSb3coImJ1c2luZXNzRGV0YWlsc05hbWVzIiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfTkFNRV9URVhUX1ZBTFVFIikpJT4iLDwlPWlzRXJyb3J8fGlzTmV3SXRlbSU+KTsKLSAgICBzZXREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvdygiYnVzaW5lc3NEZXRhaWxzTmFtZXMiLDwlPWklPiw8JT1saXN0RWxlbWVudC5nZXRWaWV3SWQoKSU+LCI8JT1uYW1lLmdldExhbmcoKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUuZ2V0VGV4dCgpKSU+Iik7Ci08JQotICAgICAgIGlmIChpc0Vycm9yKQotICAgICAgIHsKLSU+Ci0gICAgaGlnaGxpZ2h0RXJyYW50Um93KGJ1c2luZXNzRGV0YWlsc05hbWVzVGFibGUucm93c1s8JT1pJT4rbnVtYmVyT2ZIZWFkZXJSb3dzXSwiZXJyYW50Um93Iik7Ci08JQotICAgICAgIH0KLSAgICAgfQotICAgfQotCi0gICBWZWN0b3IgZGVzY3JpcHRpb25JbmRleFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMpOwotICAgaWYgKGRlc2NyaXB0aW9uSW5kZXhWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8ZGVzY3JpcHRpb25JbmRleFZlY3Rvci5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpZGVzY3JpcHRpb25JbmRleFZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAgRGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSAoRGVzY3JpcHRpb24pbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgYm9vbGVhbiBpc0Vycm9yID0gIWZvcm1Ub29sLmlzUm93SW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RFU0NSSVBUSU9OUyxpKTsKLSAgICAgICBib29sZWFuIGlzTmV3SXRlbSA9IChsaXN0RWxlbWVudC5nZXRUYXJnZXRWaWV3SWQoKSA9PSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpOwotJT4KLSAgICBhZGREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvdygiYnVzaW5lc3NEZXRhaWxzRGVzY3JpcHRpb25zIiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfREVTQ1JJUFRJT05fVEVYVF9WQUxVRSIpKSU+Iiw8JT1pc0Vycm9yfHxpc05ld0l0ZW0lPik7Ci0gICAgc2V0RGV0YWlsc0xhbmd1YWdlSW5wdXRSb3coImJ1c2luZXNzRGV0YWlsc0Rlc2NyaXB0aW9ucyIsPCU9aSU+LDwlPWxpc3RFbGVtZW50LmdldFZpZXdJZCgpJT4sIjwlPWRlc2NyaXB0aW9uLmdldExhbmcoKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGRlc2NyaXB0aW9uLmdldFRleHQoKSklPiIpOwotPCUKLSAgICAgICBpZiAoaXNFcnJvcikKLSAgICAgICB7Ci0lPgotICAgIGhpZ2hsaWdodEVycmFudFJvdyhidXNpbmVzc0RldGFpbHNEZXNjcmlwdGlvbnNUYWJsZS5yb3dzWzwlPWklPitudW1iZXJPZkhlYWRlclJvd3NdLCJlcnJhbnRSb3ciKTsKLTwlCi0gICAgICAgfQotICAgICB9Ci0gICB9Ci0KLSAgIFZlY3RvciBpZFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19JREVOVElGSUVSUyk7Ci0gICBpZiAoaWRWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8aWRWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWlkVmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICBib29sZWFuIGlzRXJyb3IgPSAhZm9ybVRvb2wuaXNSb3dJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfSURFTlRJRklFUlMsaSk7Ci0gICAgICAgYm9vbGVhbiBpc05ld0l0ZW0gPSAobGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKTsKLSU+Ci0gICAgYWRkRGV0YWlsc0lkZW50aWZpZXJSb3coImJ1c2luZXNzRGV0YWlsc0lkZW50aWZpZXJzIiw8JT1pc0Vycm9yfHxpc05ld0l0ZW0lPik7Ci0gICAgc2V0RGV0YWlsc0lkZW50aWZpZXJSb3coImJ1c2luZXNzRGV0YWlsc0lkZW50aWZpZXJzIiw8JT1pJT4sPCU9bGlzdEVsZW1lbnQuZ2V0Vmlld0lkKCklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldFRNb2RlbEtleSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleU5hbWUoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlWYWx1ZSgpKSU+Iik7Ci08JQotICAgICAgIGlmIChpc0Vycm9yKQotICAgICAgIHsKLSU+Ci0gICAgaGlnaGxpZ2h0RXJyYW50Um93KGJ1c2luZXNzRGV0YWlsc0lkZW50aWZpZXJzVGFibGUucm93c1s8JT1pJT4rbnVtYmVyT2ZIZWFkZXJSb3dzXSwiZXJyYW50Um93Iik7Ci08JSAgICAgICAKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLQotICAgVmVjdG9yIGNhdFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19DQVRFR09SSUVTKTsKLSAgIGlmIChjYXRWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8Y2F0VmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudCljYXRWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gKEtleWVkUmVmZXJlbmNlKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgIGJvb2xlYW4gaXNFcnJvciA9ICFmb3JtVG9vbC5pc1Jvd0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19DQVRFR09SSUVTLGkpOwotICAgICAgIGJvb2xlYW4gaXNOZXdJdGVtID0gKGxpc3RFbGVtZW50LmdldFRhcmdldFZpZXdJZCgpID09IEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCk7Ci0lPgotICAgIGFkZERldGFpbHNDYXRlZ29yeVJvdygiYnVzaW5lc3NEZXRhaWxzQ2F0ZWdvcmllcyIsPCU9aXNFcnJvcnx8aXNOZXdJdGVtJT4pOwotICAgIHNldERldGFpbHNDYXRlZ29yeVJvdygiYnVzaW5lc3NEZXRhaWxzQ2F0ZWdvcmllcyIsPCU9aSU+LDwlPWxpc3RFbGVtZW50LmdldFZpZXdJZCgpJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRUTW9kZWxLZXkoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlOYW1lKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0S2V5VmFsdWUoKSklPiIpOwotPCUKLSAgICAgICBpZiAoaXNFcnJvcikKLSAgICAgICB7Ci0lPgotICAgIGhpZ2hsaWdodEVycmFudFJvdyhidXNpbmVzc0RldGFpbHNDYXRlZ29yaWVzVGFibGUucm93c1s8JT1pJT4rbnVtYmVyT2ZIZWFkZXJSb3dzXSwiZXJyYW50Um93Iik7Ci08JQotICAgICAgIH0gICAgICAgCi0gICAgIH0KLSAgIH0KLQotICAgLy8gQXV0aGVudGljYXRpb24uCi0gICBTdHJpbmcgcHVibGlzaFVSTCA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICBTdHJpbmcgcGFzc3dvcmQgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotJT4KLSAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHB1Ymxpc2hVUkwpJT4iOwotICAgIGRvY3VtZW50LmZvcm1zWzBdLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVzZXJJZCklPiI7Ci0gICAgZG9jdW1lbnQuZm9ybXNbMF0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShwYXNzd29yZCklPiI7Ci0gICAgaWYgKDwlPSFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSU+KQotICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1c2luZXNzRGV0YWlsc0F1dGhlbnRpY2F0aW9uIikuc3R5bGUuZGlzcGxheSA9ICIiOwotCi0gICAgc2hvd01haW5Gb3JtKCk7Ci0gIH0KLQotICBmdW5jdGlvbiBzaG93TWFpbkZvcm0oKQotICB7Ci0gICAgY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCk7Ci0gICAgdmFyIGxvYWRTY3JlZW5UYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkU2NyZWVuIik7Ci0gICAgaWYgKGxvYWRTY3JlZW5UYWJsZS5yb3dzLmxlbmd0aCA+IDApCi0gICAgICBsb2FkU2NyZWVuVGFibGUuZGVsZXRlUm93KDApOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluU2NyZWVuIikuc3R5bGUuZGlzcGxheSA9ICIiOwotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc0Zvcm0oZm9ybSkKLSAgewotICAgIGlmIChoYW5kbGVTdWJtaXQoZm9ybSkpCi0gICAgewotICAgICAgcHJvY2Vzc0RldGFpbHNEaXNjb3ZlcnlVUkxUYWJsZSgiYnVzaW5lc3NEZXRhaWxzRGlzY292ZXJ5VVJMcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuRElTQ09WRVJZVVJMX01PRElGSUVEJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLkRJU0NPVkVSWVVSTF9WSUVXSUQlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfRElTQ09WRVJZVVJMJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc0RldGFpbHNMYW5ndWFnZUlucHV0VGFibGUoImJ1c2luZXNzRGV0YWlsc05hbWVzIiwiPCU9VURESUFjdGlvbklucHV0cy5OQU1FX01PRElGSUVEJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLk5BTUVfVklFV0lEJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX05BTUVfTEFOR1VBR0UlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRSU+Iixmb3JtKTsKLSAgICAgIHByb2Nlc3NEZXRhaWxzTGFuZ3VhZ2VJbnB1dFRhYmxlKCJidXNpbmVzc0RldGFpbHNEZXNjcmlwdGlvbnMiLCI8JT1VRERJQWN0aW9uSW5wdXRzLkRFU0NSSVBUSU9OX01PRElGSUVEJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLkRFU0NSSVBUSU9OX1ZJRVdJRCU+IiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9ERVNDUklQVElPTl9MQU5HVUFHRSU+IiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9ERVNDUklQVElPTiU+Iixmb3JtKTsKLSAgICAgIHByb2Nlc3NEZXRhaWxzSWRlbnRpZmllclRhYmxlKCJidXNpbmVzc0RldGFpbHNJZGVudGlmaWVycyIsZm9ybSk7Ci0gICAgICBwcm9jZXNzRGV0YWlsc0NhdGVnb3J5VGFibGUoImJ1c2luZXNzRGV0YWlsc0NhdGVnb3JpZXMiLGZvcm0pOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci0gIDxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICAgIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvVXBkYXRlQnVzaW5lc3NBY3Rpb25KU1AuanNwIikpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG9uU3VibWl0PSJyZXR1cm4gcHJvY2Vzc0Zvcm0odGhpcykiPgotICAgICAgPHRhYmxlIGlkPSJsb2FkU2NyZWVuIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgIDwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiTVNHX0xPQURfSU5fUFJPR1JFU1MiKSU+Ci0gICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgICA8ZGl2IGlkPSJtYWluU2NyZWVuIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci08JQotICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICBTdHJpbmcgdGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0JVU0lORVNTX0RFVEFJTFMiKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVklPiIgdmFsdWU9IjwlPWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVkpJT4iPgotICAgICAgICA8dGFibGU+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ERVRBSUxTX0VESVRBQkxFIixzZWxlY3RlZE5vZGUuZ2V0Tm9kZU5hbWUoKSklPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjA+Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0JVU0lORVNTX0tFWSIpJT4KLSAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICA8JT1mb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfQlVTSU5FU1NfS0VZKSU+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJidXNpbmVzc0RldGFpbHNOYW1lcyIpOwotICAgU3RyaW5nW10gbmFtZVNwZWNpZmljSW5mbyA9IHsiRk9STV9MQUJFTF9OQU1FUyIsIkZPUk1fTEFCRUxfTkFNRSIsU3RyaW5nLnZhbHVlT2YoIWZvcm1Ub29sLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX05BTUVTKSl9OwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKG5hbWVTcGVjaWZpY0luZm8pOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9kZXRhaWxzTGFuZ3VhZ2VJbnB1dF90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJidXNpbmVzc0RldGFpbHNEZXNjcmlwdGlvbnMiKTsKLSAgIFN0cmluZ1tdIGRlc2NTcGVjaWZpY0luZm8gPSB7IkZPUk1fTEFCRUxfREVTQ1JJUFRJT05TIiwiRk9STV9MQUJFTF9ERVNDUklQVElPTiIsU3RyaW5nLnZhbHVlT2YoIWZvcm1Ub29sLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RFU0NSSVBUSU9OUykpfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhkZXNjU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvZGV0YWlsc0xhbmd1YWdlSW5wdXRfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiYnVzaW5lc3NEZXRhaWxzSWRlbnRpZmllcnMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvZGV0YWlsc0lkZW50aWZpZXJzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoImJ1c2luZXNzRGV0YWlsc0NhdGVnb3JpZXMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvZGV0YWlsc0NhdGVnb3JpZXNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiYnVzaW5lc3NEZXRhaWxzRGlzY292ZXJ5VVJMcyIpOwotICAgQm9vbGVhbiBkaXNjb3ZlcnlVUkxTcGVjaWZpY0luZm8gPSBuZXcgQm9vbGVhbighZm9ybVRvb2wuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRElTQ09WRVJZVVJMUykpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKGRpc2NvdmVyeVVSTFNwZWNpZmljSW5mbyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2RldGFpbHNEaXNjb3ZlcnlVUkxzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoImJ1c2luZXNzRGV0YWlsc0F1dGhlbnRpY2F0aW9uIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6dXNlQmVhbiBpZD0iY3VycmVudFRvb2xNYW5hZ2VySGFzaCIgY2xhc3M9ImphdmEudXRpbC5IYXNodGFibGUiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGN1cnJlbnRUb29sTWFuYWdlckhhc2gucHV0KEFjdGlvbklucHV0cy5DVVJSRU5UX1RPT0xfTUFOQUdFUixjdXJyZW50VG9vbE1hbmFnZXIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL290aGVyQWN0aW9ucy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICA8L2Rpdj4KLSAgICA8L2Zvcm0+Ci0gIDwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHNldERlZmF1bHRzKCk7Ci0gIHJlc3VtZVByb3h5TG9hZFBhZ2UoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0dldEZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0dldEZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmRiN2NiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9HZXRGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlUcmFuc2ZlclRhcmdldEhvbGRlciIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gICBzdWJRdWVyeVRyYW5zZmVyVGFyZ2V0SG9sZGVyLnJlbW92ZUFsbEVsZW1lbnRzKCk7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXkpOwotICAgVHJlZUVsZW1lbnQgdHJlZUVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgIFN0cmluZyBwYXJlbnRRdWVyeUtleTsKLSAgIGludCBsYXN0U2VwYXJhdG9yUG9zID0gc3ViUXVlcnlLZXkubGFzdEluZGV4T2YoJzonKTsKLSAgIGlmIChsYXN0U2VwYXJhdG9yUG9zID09IC0xKQotICAgICBwYXJlbnRRdWVyeUtleSA9ICIiOwotICAgZWxzZQotICAgICBwYXJlbnRRdWVyeUtleSA9IHN1YlF1ZXJ5S2V5LnN1YnN0cmluZygwLGxhc3RTZXBhcmF0b3JQb3MpOwotICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIHBhcmVudEZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMocGFyZW50UXVlcnlLZXkpOwotICAgT2JqZWN0IHF1ZXJ5SXRlbVByb3BlcnR5ID0gcGFyZW50Rm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU0pOwotICAgT2JqZWN0IHF1ZXJ5U3R5bGVCdXMgPSBwYXJlbnRGb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQlVTSU5FU1NFUyk7Ci0gICBPYmplY3QgcXVlcnlTdHlsZVNlciA9IHBhcmVudEZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFUyk7Ci0gICBPYmplY3QgcXVlcnlTdHlsZVNlckludCA9IHBhcmVudEZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMpOwotICAgSGFzaHRhYmxlIHBhcmVudFF1ZXJ5RGF0YSA9IG5ldyBIYXNodGFibGUoKTsKLSAgIGlmIChxdWVyeUl0ZW1Qcm9wZXJ0eSAhPSBudWxsKQotICAgICBwYXJlbnRRdWVyeURhdGEucHV0KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTSwgcXVlcnlJdGVtUHJvcGVydHkpOwotICAgaWYgKHF1ZXJ5U3R5bGVCdXMgIT0gbnVsbCkKLSAgICAgcGFyZW50UXVlcnlEYXRhLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0JVU0lORVNTRVMsIHF1ZXJ5U3R5bGVCdXMpOwotICAgaWYgKHF1ZXJ5U3R5bGVTZXIgIT0gbnVsbCkKLSAgICAgcGFyZW50UXVlcnlEYXRhLnB1dChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTLCBxdWVyeVN0eWxlU2VyKTsKLSAgIGlmIChxdWVyeVN0eWxlU2VySW50ICE9IG51bGwpCi0gICAgIHBhcmVudFF1ZXJ5RGF0YS5wdXQoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMsIHF1ZXJ5U3R5bGVTZXJJbnQpOwotICAgU3ViUXVlcnlUcmFuc2ZlclRhcmdldCBzdWJRdWVyeVRyYW5zZmVyVGFyZ2V0ID0gbmV3IFN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQoc2VsZWN0ZWROb2RlLHN1YlF1ZXJ5S2V5LHBhcmVudFF1ZXJ5RGF0YSk7Ci0gICB0cmVlRWxlbWVudC5zZXRQcm9wZXJ0eUFzT2JqZWN0KFVERElNb2RlbENvbnN0YW50cy5TVUJRVUVSWV9UUkFOU0ZFUl9UQVJHRVQsc3ViUXVlcnlUcmFuc2ZlclRhcmdldCk7Ci0gICBzdWJRdWVyeVRyYW5zZmVyVGFyZ2V0SG9sZGVyLmFkZEVsZW1lbnQoc3ViUXVlcnlUcmFuc2ZlclRhcmdldCk7Ci0gICBib29sZWFuIGhhc1RhcmdldCA9IHRydWU7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9USVRMRV9HRVRfRk9STSIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9wYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy9yZXN1bHRzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBzZXREZWZhdWx0cygpCi0gIHsKLTwlCi0gICBpbnQgcXVlcnlJdGVtID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNKSk7Ci0gICBIYXNodGFibGUgYWxsVW5pcXVlTm9kZXMgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICBWZWN0b3IgYWxsTm9kZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICBVRERJTWFpbk5vZGUgdWRkaU1haW5Ob2RlID0gKFVERElNYWluTm9kZSlub2RlTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgUmVnaXN0cnlOb2RlIHJlZ05vZGUgPSB1ZGRpTWFpbk5vZGUuZ2V0UmVnaXN0cnlOb2RlKHNlbGVjdGVkTm9kZSk7Ci0gICBzd2l0Y2ggKHF1ZXJ5SXRlbSkKLSAgIHsKLSAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUzoKLSAgICAgICByZWdOb2RlLmdldEFsbEJ1c2luZXNzTm9kZXMoYWxsTm9kZXMpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUzoKLSAgICAgICByZWdOb2RlLmdldEFsbFNlcnZpY2VOb2RlcyhhbGxOb2Rlcyk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUzoKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZWdOb2RlLmdldEFsbFNlcnZpY2VJbnRlcmZhY2VOb2RlcyhhbGxOb2Rlcyk7Ci0gICB9Ci0gICAKLSAgIGZvciAoaW50IGk9MDtpPGFsbE5vZGVzLnNpemUoKTtpKyspCi0gICB7Ci0gICAgIE5vZGUgbm9kZSA9IChOb2RlKWFsbE5vZGVzLmVsZW1lbnRBdChpKTsKLSAgICAgYWxsVW5pcXVlTm9kZXMucHV0KG5vZGUuZ2V0VHJlZUVsZW1lbnQoKS5nZXRLZXkoKSxub2RlKTsKLSAgIH0KLQotICAgaWYgKCFhbGxVbmlxdWVOb2Rlcy5pc0VtcHR5KCkpCi0gICB7Ci0gICAgIE9iamVjdFtdIGl0ZW1Ob2RlcyA9IGFsbFVuaXF1ZU5vZGVzLnZhbHVlcygpLnRvQXJyYXkoKTsKLSAgICAgUXVpY2tTb3J0LnNvcnQoaXRlbU5vZGVzLDAsaXRlbU5vZGVzLmxlbmd0aC0xKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8aXRlbU5vZGVzLmxlbmd0aDtpKyspCi0gICAgIHsKLSAgICAgICBOb2RlIGl0ZW1Ob2RlID0gKE5vZGUpaXRlbU5vZGVzW2ldOwotICAgICAgIFN0cmluZyB1cmwgPSBTZWxlY3ROYXZpZ2F0b3JOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsoaXRlbU5vZGUuZ2V0Tm9kZUlkKCksZmFsc2UpOwotICAgICAgIFN0cmluZyBuYW1lID0gbnVsbDsKLSAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBudWxsOwotICAgICAgIGlmIChpdGVtTm9kZSBpbnN0YW5jZW9mIEJ1c2luZXNzTm9kZSkKLSAgICAgICB7Ci0gICAgICAgICBCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCA9IChCdXNpbmVzc0VsZW1lbnQpaXRlbU5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgIEJ1c2luZXNzRW50aXR5IGJlID0gYnVzRWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpOwotICAgICAgICAgbmFtZSA9IGJlLmdldERlZmF1bHROYW1lU3RyaW5nKCk7Ci0gICAgICAgICBkZXNjcmlwdGlvbiA9IGJlLmdldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygpOwotICAgICAgIH0KLSAgICAgICBlbHNlIGlmIChpdGVtTm9kZSBpbnN0YW5jZW9mIFNlcnZpY2VOb2RlKQotICAgICAgIHsKLSAgICAgICAgIFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFNlcnZpY2VFbGVtZW50KWl0ZW1Ob2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICAgICBCdXNpbmVzc1NlcnZpY2UgYnMgPSBzZXJ2aWNlRWxlbWVudC5nZXRCdXNpbmVzc1NlcnZpY2UoKTsKLSAgICAgICAgIG5hbWUgPSBicy5nZXREZWZhdWx0TmFtZVN0cmluZygpOwotICAgICAgICAgZGVzY3JpcHRpb24gPSBicy5nZXREZWZhdWx0RGVzY3JpcHRpb25TdHJpbmcoKTsKLSAgICAgICB9Ci0gICAgICAgZWxzZSBpZiAoaXRlbU5vZGUgaW5zdGFuY2VvZiBTZXJ2aWNlSW50ZXJmYWNlTm9kZSkKLSAgICAgICB7Ci0gICAgICAgICBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBzaUVsZW1lbnQgPSAoU2VydmljZUludGVyZmFjZUVsZW1lbnQpaXRlbU5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgIFRNb2RlbCB0TW9kZWwgPSBzaUVsZW1lbnQuZ2V0VE1vZGVsKCk7Ci0gICAgICAgICBuYW1lID0gdE1vZGVsLmdldE5hbWVTdHJpbmcoKTsKLSAgICAgICAgIGRlc2NyaXB0aW9uID0gdE1vZGVsLmdldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygpOwotICAgICAgIH0KLSU+Ci0gICAgYWRkUmVzdWx0Um93KCJHZXQiLDwlPWl0ZW1Ob2RlLmdldE5vZGVJZCgpJT4sIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh1cmwpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZGVzY3JpcHRpb24pJT4iKTsKLTwlCi0gICAgIH0KLSU+Ci0gICAgdmFyIGxvYWRTY3JlZW5UYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkU2NyZWVuIik7Ci0gICAgaWYgKGxvYWRTY3JlZW5UYWJsZS5yb3dzLmxlbmd0aCA+IDApCi0gICAgICBsb2FkU2NyZWVuVGFibGUuZGVsZXRlUm93KDApOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluU2NyZWVuIikuc3R5bGUuZGlzcGxheSA9ICIiOwotPCUKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSU+Ci0gICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoVHJhbnNmZXJTdWJRdWVyeVJlc3VsdHNBY3Rpb24uZ2V0QWN0aW9uTGlua0ZvclJldHVybigpKSklPiI7Ci08JQotICAgfQotJT4KLSAgfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLTxkaXYgaWQ9ImNvbnRlbnQiPgotICA8dGFibGUgaWQ9ImxvYWRTY3JlZW4iPgotICAgIDx0cj4KLSAgICAgIDx0ZD4KLSAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfTE9BRF9JTl9QUk9HUkVTUyIpJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLSAgPGRpdiBpZD0ibWFpblNjcmVlbiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotPCUKLSAgIFN0cmluZyB0aXRsZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfR0VUIik7Ci0gICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAidWRkaS9pbWFnZXMvZmluZF9oaWdobGlnaHRlZC5naWYiOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii91ZGRpL2Zvcm1zL3Jlc3VsdHNmb3JtaGVhZGVyLmluYyIgJT4KLSAgICA8Zm9ybSB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIFN0cmluZyB0YWJsZVRpdGxlOwotICAgc3dpdGNoIChxdWVyeUl0ZW0pCi0gICB7Ci0gICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVM6Ci0gICAgICAgdGFibGVUaXRsZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9CVVNJTkVTU0VTIik7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTOgotICAgICAgIHRhYmxlVGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fU0VSVklDRVMiKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTOgotICAgICBkZWZhdWx0OgotICAgICAgIHRhYmxlVGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fU0VSVklDRV9JTlRFUkZBQ0VTIik7Ci0gICB9Ci0gICBTdHJpbmdbXSBvdGhlclByb3BlcnRpZXMgPSB7dGFibGVUaXRsZSwiIn07Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiR2V0Iik7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMob3RoZXJQcm9wZXJ0aWVzKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvcmVzdWx0c190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGhlaWdodD00MCBhbGlnbj0iYm90dG9tIiBub3dyYXA+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQlVUVE9OX1RSQU5TRkVSIiklPiIgb25DbGljaz0idHJhbnNmZXJTZWxlY3Rpb25zKCdHZXQnLHRoaXMuZm9ybSkiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGhlaWdodD00MCBhbGlnbj0iYm90dG9tIiBub3dyYXA+Ci0gICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0JVVFRPTl9SRUZSRVNIIiklPiIgb25DbGljaz0icmVmcmVzaFNlbGVjdGlvbnMoJ0dldCcsdGhpcy5mb3JtKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgaGVpZ2h0PTQwIGFsaWduPSJib3R0b20iIG5vd3JhcD4KLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fQUREX1RPX0ZBVk9SSVRFUyIpJT4iIG9uQ2xpY2s9ImFkZFNlbGVjdGlvbnNUb0Zhdm9yaXRlcygnR2V0Jyx0aGlzLmZvcm0pIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgYWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0JVVFRPTl9DTEVBUiIpJT4iIG9uQ2xpY2s9ImNsZWFyU2VsZWN0aW9ucygnR2V0Jyx0aGlzLmZvcm0pIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC9mb3JtPgotICA8L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgc2V0RGVmYXVsdHMoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0l0ZW1zU3VtbWFyeUZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL0l0ZW1zU3VtbWFyeUZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2ZkYWNlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9JdGVtc1N1bW1hcnlGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgaW50IHF1ZXJ5SXRlbSA9IEludGVnZXIucGFyc2VJbnQocmVxdWVzdC5nZXRQYXJhbWV0ZXIoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNKSk7Ci0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIFVERElNYWluTm9kZSB1ZGRpTWFpbk5vZGUgPSAoVURESU1haW5Ob2RlKW5vZGVNYW5hZ2VyLmdldFJvb3ROb2RlKCk7Ci0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgVG9vbCBzZWxlY3RlZFRvb2wgPSBzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICBSZWdpc3RyeU5vZGUgcmVnTm9kZSA9IHVkZGlNYWluTm9kZS5nZXRSZWdpc3RyeU5vZGUoc2VsZWN0ZWROb2RlKTsKLSAgIFRyZWVFbGVtZW50IHRyZWVFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICBWZWN0b3Igc3VtbWFyeU5vZGVzID0gbmV3IFZlY3RvcigpOwotICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgUXVlcnlQYXJlbnRFbGVtZW50KQotICAgICByZWdOb2RlLmdldERpc2NvdmVyZWROb2RlcyhzdW1tYXJ5Tm9kZXMscXVlcnlJdGVtKTsKLSAgIGVsc2UgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgUHVibGlzaGVkSXRlbXNFbGVtZW50KQotICAgewotICAgICBzd2l0Y2ggKHF1ZXJ5SXRlbSkKLSAgICAgewotICAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVM6Ci0gICAgICAgICByZWdOb2RlLmdldFB1Ymxpc2hlZEJ1c2luZXNzTm9kZXMoc3VtbWFyeU5vZGVzKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTOgotICAgICAgICAgcmVnTm9kZS5nZXRQdWJsaXNoZWRTZXJ2aWNlTm9kZXMoc3VtbWFyeU5vZGVzKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUzoKLSAgICAgICBkZWZhdWx0OgotICAgICAgICAgcmVnTm9kZS5nZXRQdWJsaXNoZWRTZXJ2aWNlSW50ZXJmYWNlTm9kZXMoc3VtbWFyeU5vZGVzKTsKLSAgICAgfQotICAgfQotICAgYm9vbGVhbiBoYXNUYXJnZXQgPSBmYWxzZTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX0lURU1TX1NVTU1BUlkiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9yZXN1bWVwcm94eWxvYWRwYWdlLmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvcmVzdWx0cy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKQotICB7Ci08JSAgIAotICAgSGFzaHRhYmxlIGFsbFVuaXF1ZU5vZGVzID0gbmV3IEhhc2h0YWJsZSgpOwotICAgZm9yIChpbnQgaT0wO2k8c3VtbWFyeU5vZGVzLnNpemUoKTtpKyspCi0gICB7Ci0gICAgIE5vZGUgc3VtbWFyeU5vZGUgPSAoTm9kZSlzdW1tYXJ5Tm9kZXMuZWxlbWVudEF0KGkpOwotICAgICBhbGxVbmlxdWVOb2Rlcy5wdXQoc3VtbWFyeU5vZGUuZ2V0VHJlZUVsZW1lbnQoKS5nZXRLZXkoKSxzdW1tYXJ5Tm9kZSk7Ci0gICB9Ci0gICAKLSAgIGlmICghYWxsVW5pcXVlTm9kZXMuaXNFbXB0eSgpKQotICAgewotICAgICBPYmplY3RbXSBpdGVtTm9kZXMgPSBhbGxVbmlxdWVOb2Rlcy52YWx1ZXMoKS50b0FycmF5KCk7Ci0gICAgIFF1aWNrU29ydC5zb3J0KGl0ZW1Ob2RlcywwLGl0ZW1Ob2Rlcy5sZW5ndGgtMSk7Ci0gICAgIGZvciAoaW50IGk9MDtpPGl0ZW1Ob2Rlcy5sZW5ndGg7aSsrKQotICAgICB7Ci0gICAgICAgTm9kZSBpdGVtTm9kZSA9IChOb2RlKWl0ZW1Ob2Rlc1tpXTsKLSAgICAgICBTdHJpbmcgdXJsID0gU2VsZWN0TmF2aWdhdG9yTm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKGl0ZW1Ob2RlLmdldE5vZGVJZCgpLGZhbHNlKTsKLSAgICAgICBTdHJpbmcgbmFtZSA9IG51bGw7Ci0gICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gbnVsbDsKLSAgICAgICBpZiAoaXRlbU5vZGUgaW5zdGFuY2VvZiBRdWVyeU5vZGUpCi0gICAgICAgewotICAgICAgICAgUXVlcnlFbGVtZW50IHF1ZXJ5RWxlbWVudCA9IChRdWVyeUVsZW1lbnQpaXRlbU5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgIG5hbWUgPSBxdWVyeUVsZW1lbnQuZ2V0TmFtZSgpOwotICAgICAgICAgU3RyaW5nIG51bWJlck9mQ2hpbGROb2Rlc1N0cmluZyA9IFN0cmluZy52YWx1ZU9mKGl0ZW1Ob2RlLmdldENoaWxkTm9kZXMoKS5zaXplKCkpOwotICAgICAgICAgc3dpdGNoIChxdWVyeUVsZW1lbnQuZ2V0UXVlcnlUeXBlKCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVM6Ci0gICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fQlVTSU5FU1NFU19GT1VORCIsbnVtYmVyT2ZDaGlsZE5vZGVzU3RyaW5nKTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVM6Ci0gICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0lORk9fU0VSVklDRVNfRk9VTkQiLG51bWJlck9mQ2hpbGROb2Rlc1N0cmluZyk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUzoKLSAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfSU5GT19TRVJWSUNFX0lOVEVSRkFDRVNfRk9VTkQiLG51bWJlck9mQ2hpbGROb2Rlc1N0cmluZyk7Ci0gICAgICAgICB9ICAgICAgICAgICAgIAotICAgICAgIH0KLSAgICAgICBlbHNlIGlmIChpdGVtTm9kZSBpbnN0YW5jZW9mIEJ1c2luZXNzTm9kZSkKLSAgICAgICB7Ci0gICAgICAgICBCdXNpbmVzc0VsZW1lbnQgYnVzRWxlbWVudCA9IChCdXNpbmVzc0VsZW1lbnQpaXRlbU5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgIEJ1c2luZXNzRW50aXR5IGJlID0gYnVzRWxlbWVudC5nZXRCdXNpbmVzc0VudGl0eSgpOwotICAgICAgICAgbmFtZSA9IGJlLmdldERlZmF1bHROYW1lU3RyaW5nKCk7Ci0gICAgICAgICBkZXNjcmlwdGlvbiA9IGJlLmdldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygpOwotICAgICAgIH0KLSAgICAgICBlbHNlIGlmIChpdGVtTm9kZSBpbnN0YW5jZW9mIFNlcnZpY2VOb2RlKQotICAgICAgIHsKLSAgICAgICAgIFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFNlcnZpY2VFbGVtZW50KWl0ZW1Ob2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICAgICBCdXNpbmVzc1NlcnZpY2UgYnMgPSBzZXJ2aWNlRWxlbWVudC5nZXRCdXNpbmVzc1NlcnZpY2UoKTsKLSAgICAgICAgIG5hbWUgPSBicy5nZXREZWZhdWx0TmFtZVN0cmluZygpOwotICAgICAgICAgZGVzY3JpcHRpb24gPSBicy5nZXREZWZhdWx0RGVzY3JpcHRpb25TdHJpbmcoKTsKLSAgICAgICB9Ci0gICAgICAgZWxzZSBpZiAoaXRlbU5vZGUgaW5zdGFuY2VvZiBTZXJ2aWNlSW50ZXJmYWNlTm9kZSkKLSAgICAgICB7Ci0gICAgICAgICBTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCBzaUVsZW1lbnQgPSAoU2VydmljZUludGVyZmFjZUVsZW1lbnQpaXRlbU5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICAgIFRNb2RlbCB0TW9kZWwgPSBzaUVsZW1lbnQuZ2V0VE1vZGVsKCk7Ci0gICAgICAgICBuYW1lID0gdE1vZGVsLmdldE5hbWVTdHJpbmcoKTsKLSAgICAgICAgIGRlc2NyaXB0aW9uID0gdE1vZGVsLmdldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygpOwotICAgICAgIH0KLSU+Ci0gICAgYWRkUmVzdWx0Um93KCJTdW1tYXJ5Iiw8JT1pdGVtTm9kZS5nZXROb2RlSWQoKSU+LCI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQodXJsKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShuYW1lKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGRlc2NyaXB0aW9uKSU+Iik7Ci08JQotICAgICB9Ci0gICB9Ci0lPgotICAgIHZhciBsb2FkU2NyZWVuVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZFNjcmVlbiIpOwotICAgIGlmIChsb2FkU2NyZWVuVGFibGUucm93cy5sZW5ndGggPiAwKQotICAgICAgbG9hZFNjcmVlblRhYmxlLmRlbGV0ZVJvdygwKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblNjcmVlbiIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLTxkaXYgaWQ9ImNvbnRlbnQiPgotICA8dGFibGUgaWQ9ImxvYWRTY3JlZW4iPgotICAgIDx0cj4KLSAgICAgIDx0ZD4KLSAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfTE9BRF9JTl9QUk9HUkVTUyIpJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLSAgPGRpdiBpZD0ibWFpblNjcmVlbiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotPCUKLSAgIFN0cmluZyB0aXRsZSA9IHNlbGVjdGVkVG9vbC5nZXRBbHRUZXh0KCk7Ci0gICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSBzZWxlY3RlZFRvb2wuZ2V0SGlnaGxpZ2h0ZWRJbWFnZUxpbmsoKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9mb3Jtcy9yZXN1bHRzZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPGZvcm0gdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBTdHJpbmcgdGFibGVUaXRsZTsKLSAgIHN3aXRjaCAocXVlcnlJdGVtKQotICAgewotICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9RVUVSSUVTOgotICAgICAgIHRhYmxlVGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9RVUVSSUVTIik7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVM6Ci0gICAgICAgdGFibGVUaXRsZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9CVVNJTkVTU0VTIik7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTOgotICAgICAgIHRhYmxlVGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fU0VSVklDRVMiKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTOgotICAgICBkZWZhdWx0OgotICAgICAgIHRhYmxlVGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fU0VSVklDRV9JTlRFUkZBQ0VTIik7Ci0gICB9Ci0gICBTdHJpbmdbXSBvdGhlclByb3BlcnRpZXMgPSB7dGFibGVUaXRsZSwiIn07Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiU3VtbWFyeSIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKG90aGVyUHJvcGVydGllcyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL3Jlc3VsdHNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgICAgPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTIgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgYWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fUkVGUkVTSCIpJT4iIG9uQ2xpY2s9InJlZnJlc2hTZWxlY3Rpb25zKCdTdW1tYXJ5Jyx0aGlzLmZvcm0pIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICA8L3RkPgotPCUKLSAgIGlmIChxdWVyeUl0ZW0gIT0gVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1FVRVJJRVMpCi0gICB7Ci0lPiAgICAgICAgICAgICAKLSAgICAgICAgICA8dGQgaGVpZ2h0PTQwIGFsaWduPSJib3R0b20iIG5vd3JhcD4KLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fQUREX1RPX0ZBVk9SSVRFUyIpJT4iIG9uQ2xpY2s9ImFkZFNlbGVjdGlvbnNUb0Zhdm9yaXRlcygnU3VtbWFyeScsdGhpcy5mb3JtKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgPC90ZD4KLTwlCi0gICB9Ci0lPiAgICAgICAgICAgICAKLSAgICAgICAgICA8dGQgaGVpZ2h0PTQwIGFsaWduPSJib3R0b20iIG5vd3JhcD4KLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fQ0xFQVIiKSU+IiBvbkNsaWNrPSJjbGVhclNlbGVjdGlvbnMoJ1N1bW1hcnknLHRoaXMuZm9ybSkiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L2Zvcm0+Ci0gIDwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBzZXREZWZhdWx0cygpOwotICByZXN1bWVQcm94eUxvYWRQYWdlKCk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9Mb2dpblVkZGlGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9Mb2dpblVkZGlGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVkMjRiOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvTG9naW5VZGRpRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyNyAgIDEzNjQ0OSBicnVuc3NlbkB1cy5pYm0uY29tIC0gVmluY2UgQnJ1bnNzZW4gIAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLmRhdGF0eXBlLmJ1c2luZXNzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICAvLyBzZWxlY3RlZE5vZGUgbXVzdCBiZSBhIHJlZ2lzdHJ5IG5vZGUuCi0gICBOb2RlIHJlZ05vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgcmVnTm9kZS5nZXRUb29sTWFuYWdlcigpLnNldFNlbGVjdGVkVG9vbElkKDEpOwotICAgTGlzdCB0b29scyA9IHJlZ05vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0VG9vbHMoKTsKLSAgIEl0ZXJhdG9yIGl0ZXIgPSB0b29scy5pdGVyYXRvcigpOwotICAgVG9vbCB0ID0gbnVsbDsKLSAgIEZvcm1Ub29sIGZvcm1Ub29sID0gKEZvcm1Ub29sKShyZWdOb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT5OZXcgTG9naW4gRm9ybTwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIHNob3dNYWluRm9ybShwdWJsaXNoVmFsdWUpCi0gIHsKLSAgICB2YXIgbG9hZFNjcmVlblRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRTY3JlZW4iKTsKLSAgICBpZiAobG9hZFNjcmVlblRhYmxlLnJvd3MubGVuZ3RoID4gMCkKLSAgICAgIGxvYWRTY3JlZW5UYWJsZS5kZWxldGVSb3coMCk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5TY3JlZW4iKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gIH0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotICA8ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8dGFibGUgaWQ9ImxvYWRTY3JlZW4iPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfTE9BRF9JTl9QUk9HUkVTUyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgICA8ZGl2IGlkPSJtYWluU2NyZWVuIiA+Ci08JQotICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gInVkZGkvaW1hZ2VzL3B1Ymxpc2hfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgIFN0cmluZyB0aXRsZSA9ICJMb2dpbiI7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDwvZGl2PgotICAgIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvTG9naW5BZHZhbmNlZEFjdGlvbkpTUC5qc3AiKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2xvZ2luX2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZm9ybT4KLSAgPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgc2hvd01haW5Gb3JtKDApOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvTWFuYWdlUHVibGlzaGVyQXNzZXJ0aW9uc0Zvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL01hbmFnZVB1Ymxpc2hlckFzc2VydGlvbnNGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI4Zjk0OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvTWFuYWdlUHVibGlzaGVyQXNzZXJ0aW9uc0Zvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDA5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLnJlc3BvbnNlLkNvbXBsZXRpb25TdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBTdHJpbmcgcHViQXNzZXJ0aW9uRm9ybSA9ICJzaG93UHVibGlzaGVyQXNzZXJ0aW9uc0Zvcm0iOwotICAgU3RyaW5nIHB1Ymxpc2hlckFzc2VydGlvbnNCdXNpbmVzcyA9ICJwdWJsaXNoZXJBc3NlcnRpb25zQnVzaW5lc3MiOwotCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgVURESU1haW5Ob2RlIHVkZGlNYWluTm9kZSA9IChVRERJTWFpbk5vZGUpbmF2aWdhdG9yTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgRm9ybVRvb2wgZm9ybVRvb2wgPSAoRm9ybVRvb2wpKHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7ICAgCi0gICBSZWdpc3RyeU5vZGUgcmVnTm9kZSA9IHVkZGlNYWluTm9kZS5nZXRSZWdpc3RyeU5vZGUoc2VsZWN0ZWROb2RlKTsKLSAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLQotICAgU3RyaW5nIGRpdlB1Ymxpc2hlckFzc2VydGlvblRhYmxlID0gImRpdlB1Ymxpc2hlckFzc2VydGlvblRhYmxlIjsKLSAgIFN0cmluZyB4ZGl2UHVibGlzaGVyQXNzZXJ0aW9uVGFibGUgPSAieGRpdlB1Ymxpc2hlckFzc2VydGlvblRhYmxlIjsKLSU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlLZXlQcm9wZXJ0eSIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlN1YlF1ZXJ5S2V5UHJvcGVydHkiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gICBTdHJpbmcgc3ViUXVlcnlLZXkgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgIHN1YlF1ZXJ5S2V5UHJvcGVydHkuc2V0U3ViUXVlcnlLZXkoc3ViUXVlcnlLZXkpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08JQotICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpKTsKLSU+Ci0KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfTUFOQUdFX1BVQkxJU0hFUl9BU1NFUlRJT05TIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL3Jlc3VtZXByb3h5bG9hZHBhZ2UuanMiKSklPiI+Ci08L3NjcmlwdD4KLQotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXRhYmxlcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvcmVzdWx0cy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKQotICB7Ci0gICAgY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCk7Ci08JQotICAgaWYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgIHsKLSAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0lPgotICAgIGRvY3VtZW50LmZvcm1zWzBdLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUocHVibGlzaFVSTCklPiI7Ci0gICAgZG9jdW1lbnQuZm9ybXNbMF0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodXNlcklkKSU+IjsKLSAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHBhc3N3b3JkKSU+IjsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiPCU9cHViQXNzZXJ0aW9uRm9ybSU+Iikuc3R5bGUuZGlzcGxheSA9ICIiOwotPCUKLSAgIH0KLSAgIAotICAgVmVjdG9yIGJ1c2luZXNzID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQUREX1BVQkxJU0hFUl9BU1NFUlRJT05TKTsKLSAgIExpc3RNYW5hZ2VyIGJ1c2luZXNzQ29weSA9IChMaXN0TWFuYWdlcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQUREX1BVQkxJU0hFUl9BU1NFUlRJT05TX0NPUFkpOwotICAgaWYgKGJ1c2luZXNzICE9IG51bGwpCi0gICB7Ci0gICAgIGlmIChidXNpbmVzc0NvcHkgPT0gbnVsbCkKLSAgICAgICBidXNpbmVzc0NvcHkgPSBuZXcgTGlzdE1hbmFnZXIoKTsKLSAgICAgZWxzZQotICAgICAgIGJ1c2luZXNzQ29weS5jbGVhcigpOwotICAgICBmb3IgKGludCBpPTA7aTxidXNpbmVzcy5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpYnVzaW5lc3MuZWxlbWVudEF0KGkpOwotICAgICAgIGludCB0YXJnZXROb2RlSWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXROb2RlSWQoKTsKLSAgICAgICBpbnQgdGFyZ2V0VG9vbElkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0VG9vbElkKCk7Ci0gICAgICAgaW50IHRhcmdldFZpZXdJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldFZpZXdJZCgpOwotICAgICAgIFN0cmluZyB1cmwgPSBTZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayh0YXJnZXROb2RlSWQsdGFyZ2V0VG9vbElkLHRhcmdldFZpZXdJZCxzdWJRdWVyeUtleVByb3BlcnR5LmdldFN1YlF1ZXJ5S2V5KCksVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRERfUFVCTElTSEVSX0FTU0VSVElPTlMsaSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyxmYWxzZSk7Ci0gICAgICAgQnVzaW5lc3NFbnRpdHkgYmUgPSAoQnVzaW5lc3NFbnRpdHkpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgYnVzaW5lc3NDb3B5LmFkZChsaXN0RWxlbWVudCk7Ci0lPgotICAgIGFkZFB1Ymxpc2hlckFzc2VydGlvblJlc3VsdFJvdygiPCU9cHVibGlzaGVyQXNzZXJ0aW9uc0J1c2luZXNzJT4iLDwlPWxpc3RFbGVtZW50LmdldFZpZXdJZCgpJT4sIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh1cmwpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGJlLmdldERlZmF1bHROYW1lU3RyaW5nKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoYmUuZ2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKCkpJT4iKTsKLTwlCi0gICAgIH0KLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FERF9QVUJMSVNIRVJfQVNTRVJUSU9OU19DT1BZLGJ1c2luZXNzQ29weSk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgIGJ1c2luZXNzID0gbmV3IFZlY3RvcigpOwotICAgICBidXNpbmVzc0NvcHkgPSBuZXcgTGlzdE1hbmFnZXIoKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FERF9QVUJMSVNIRVJfQVNTRVJUSU9OUyxidXNpbmVzcyk7Ci0gICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRERfUFVCTElTSEVSX0FTU0VSVElPTlNfQ09QWSxidXNpbmVzc0NvcHkpOwotICAgfQotJT4KLSAgfQotCi0gIGZ1bmN0aW9uIHBvcHVsYXRlQXNzZXJ0aW9uVGFibGUoKSB7Ci08JQotICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBCdXNpbmVzc0VsZW1lbnQpCi0gICAgewotICAgICAgTGlzdE1hbmFnZXIgcHViQXNzZXJ0aW9ucyA9ICgoQnVzaW5lc3NFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0UHVibGlzaGVyQXNzZXJ0aW9ucygpOwotICAgICAgaWYgKHB1YkFzc2VydGlvbnMgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgU2hvd1B1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb24gYWN0aW9uID0gbmV3IFNob3dQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgICAgICBhY3Rpb24ucnVuKCk7Ci0lPgotICAgICAgICBzdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci08JQotICAgICAgICBwdWJBc3NlcnRpb25zID0gKChCdXNpbmVzc0VsZW1lbnQpc2VsZWN0ZWRFbGVtZW50KS5nZXRQdWJsaXNoZXJBc3NlcnRpb25zKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YkFzc2VydGlvbnMgPSAoKEJ1c2luZXNzRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpLmdldFB1Ymxpc2hlckFzc2VydGlvbnMoKTsKLSAgICAgIEVudW1lcmF0aW9uIGUgPSAoKHB1YkFzc2VydGlvbnMgIT0gbnVsbCkgPyBwdWJBc3NlcnRpb25zLmdldExpc3RFbGVtZW50cygpIDogbnVsbCk7Ci0gICAgICB3aGlsZSAoZSAhPSBudWxsICYmIGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICB7Ci0gICAgICAgIExpc3RFbGVtZW50IGxlID0gKExpc3RFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgUHVibGlzaGVyQXNzZXJ0aW9uRWxlbWVudCBwdWJBc3NlcnRpb25FbGVtZW50ID0gKFB1Ymxpc2hlckFzc2VydGlvbkVsZW1lbnQpbGUuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIGludCB2aWV3SWQgPSBsZS5nZXRWaWV3SWQoKTsKLSAgICAgICAgU3RyaW5nIGRpcmVjdGlvbjsKLSAgICAgICAgaWYgKCgoQnVzaW5lc3NFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0QnVzaW5lc3NFbnRpdHkoKS5nZXRCdXNpbmVzc0tleSgpLmVxdWFscyhwdWJBc3NlcnRpb25FbGVtZW50LmdldEZyb21LZXkoKSkpCi0gICAgICAgICAgZGlyZWN0aW9uID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0FTU0VSVElPTl9ESVJFQ1RJT05fRlJPTSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgZGlyZWN0aW9uID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0FTU0VSVElPTl9ESVJFQ1RJT05fVE8iKTsKLSAgICAgICAgTGlzdEVsZW1lbnQgc3AgPSAoTGlzdEVsZW1lbnQpcHViQXNzZXJ0aW9uRWxlbWVudC5nZXRTZXJ2aWNlUHJvdmlkZXIoKTsKLSAgICAgICAgaW50IHRhcmdldE5vZGVJZCA9IHNwLmdldFRhcmdldE5vZGVJZCgpOwotICAgICAgICBpbnQgdGFyZ2V0VG9vbElkID0gc3AuZ2V0VGFyZ2V0VG9vbElkKCk7Ci0gICAgICAgIGludCB0YXJnZXRWaWV3SWQgPSBzcC5nZXRUYXJnZXRWaWV3SWQoKTsKLSAgICAgICAgaW50IHN1YlF1ZXJ5SXRlbUlkID0gcHViQXNzZXJ0aW9uRWxlbWVudC5nZXRTdWJRdWVyeUl0ZW1JZCgpOwotICAgICAgICBTdHJpbmcgdXJsID0gU2VsZWN0U3ViUXVlcnlJdGVtQWN0aW9uLmdldEFjdGlvbkxpbmsodGFyZ2V0Tm9kZUlkLHRhcmdldFRvb2xJZCx0YXJnZXRWaWV3SWQsc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfRVhJU1RJTkdfUFVCTElTSEVSX0FTU0VSVElPTlMsc3ViUXVlcnlJdGVtSWQsVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMsZmFsc2UpOwotICAgICAgICBTdHJpbmcgbmFtZSA9ICgoQnVzaW5lc3NFbnRpdHkpc3AuZ2V0T2JqZWN0KCkpLmdldERlZmF1bHROYW1lU3RyaW5nKCk7Ci0gICAgICAgIFN0cmluZyBkZXNjID0gKChCdXNpbmVzc0VudGl0eSlzcC5nZXRPYmplY3QoKSkuZ2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKCk7Ci0gICAgICAgIFN0cmluZyBzdGF0dXMgPSBwdWJBc3NlcnRpb25FbGVtZW50LmdldFN0YXR1cygpOwotICAgICAgICBTdHJpbmcgdHlwZSA9IHB1YkFzc2VydGlvbkVsZW1lbnQuZ2V0S2V5ZWRSZWYoKS5nZXRLZXlWYWx1ZSgpOwotJT4KLSAgICAgIGFkZEFzc2VydGlvbigiPCU9ZGl2UHVibGlzaGVyQXNzZXJ0aW9uVGFibGUlPiIsPCU9dmlld0lkJT4sIjwlPWRpcmVjdGlvbiU+IiwiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHVybCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUobmFtZSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShkZXNjKSU+IiwiPCU9c3RhdHVzJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodHlwZSklPiIpOwotPCUKLSAgICAgIH0KLSAgICB9Ci0lPgotICB9Ci0KLSAgZnVuY3Rpb24gYWRkQXNzZXJ0aW9uKHRhYmxlQ29udGFpbmVySWQsdmlld0lkLGRpcmVjdGlvbix1cmwsbmFtZSxkZXNjLHN0YXR1cyx0eXBlKQotICB7Ci0gICAgdHdpc3RPcGVuKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZUJvZHkgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVEJPRFkiKS5pdGVtKDApOwotICAgIHZhciBuZXdSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHZhciBjb2x1bW4wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4zID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uNCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW42ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLQotICAgIHZhciByb3dDaGVja2JveCA9IGNyZWF0ZVJvd0NoZWNrYm94KCk7Ci0gICAgcm93Q2hlY2tib3gubmFtZSA9ICI8JT1VRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hFUl9BU1NFUlRJT05TX1ZJRVdJRCU+IjsKLSAgICByb3dDaGVja2JveC52YWx1ZSA9IHZpZXdJZDsKLSAgICBjb2x1bW4wLmFwcGVuZENoaWxkKHJvd0NoZWNrYm94KTsKLQotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1RISVNfQlVTSU5FU1MiKSU+IikpOwotCi0gICAgY29sdW1uMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkaXJlY3Rpb24pKTsKLQotICAgIHZhciBuYW1lRGV0YWlsc0xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgbmFtZURldGFpbHNMaW5rLmhyZWYgPSB1cmw7Ci0gICAgbmFtZURldGFpbHNMaW5rLnRhcmdldCA9ICI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iOwotICAgIG5hbWVEZXRhaWxzTGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuYW1lKSk7Ci0gICAgY29sdW1uMy5hcHBlbmRDaGlsZChuYW1lRGV0YWlsc0xpbmspOwotCi0gICAgY29sdW1uNC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXREZWZhdWx0RGlzcGxheVN0cmluZyhkZXNjKSkpOwotCi0gICAgY29sdW1uNS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdGF0dXMpKTsKLQotICAgIGNvbHVtbjYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodHlwZSkpOwotCi0gICAgY29sdW1uMC5jbGFzc05hbWUgPSAiY2hlY2tib3hjZWxscyI7Ci0gICAgY29sdW1uMS5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgY29sdW1uMi5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgY29sdW1uMy5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgY29sdW1uNC5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgY29sdW1uNS5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgY29sdW1uNi5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjApOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4xKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMik7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjMpOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW40KTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uNSk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjYpOwotICAgIHRhYmxlQm9keS5hcHBlbmRDaGlsZChuZXdSb3cpOwotCi0gIH0KLQotICBmdW5jdGlvbiBhZGRQdWJsaXNoZXJBc3NlcnRpb25SZXN1bHRSb3codGFibGVDb250YWluZXJJZCxub2RlSWQsdXJsLG5hbWUsZGVzY3JpcHRpb24pCi0gIHsKLSAgICB0d2lzdE9wZW4odGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHRhYmxlQm9keSA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUQk9EWSIpLml0ZW0oMCk7Ci0gICAgdmFyIG5ld1JvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgdmFyIGNvbHVtbjAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4xID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW40ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uNSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0KLSAgICB2YXIgcm93Q2hlY2tib3ggPSBjcmVhdGVSb3dDaGVja2JveCgpOwotICAgIGNvbHVtbjAuYXBwZW5kQ2hpbGQocm93Q2hlY2tib3gpOwotICAgIGNvbHVtbjAuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIixub2RlSWQpKTsKLQotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1RISVNfQlVTSU5FU1MiKSU+IikpOwotCi0gICAgdmFyIGRpcmVjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgIGRpcmVjdGlvbi5pZCA9ICJsYWJlbF9wdWJsaXNoZXJfYXNzZXJ0aW9uX2RpcmVjdGlvbiI7Ci0gICAgZGlyZWN0aW9uLm5hbWUgPSAiPCU9VURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19ESVJFQ1RJT04lPiI7Ci0gICAgZGlyZWN0aW9uLmNsYXNzTmFtZSA9ICJzZWxlY3RsaXN0IjsKLSAgICBkaXJlY3Rpb24ub3B0aW9uc1swXSA9IG5ldyBPcHRpb24oIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9BU1NFUlRJT05fRElSRUNUSU9OX0ZST00iKSU+IiwgIjwlPVN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuRElSRUNUSU9OX0ZST00pJT4iKTsKLSAgICBkaXJlY3Rpb24ub3B0aW9uc1sxXSA9IG5ldyBPcHRpb24oIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9BU1NFUlRJT05fRElSRUNUSU9OX1RPIiklPiIsICI8JT1TdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLkRJUkVDVElPTl9UTyklPiIpOwotICAgIGNvbHVtbjIuYXBwZW5kQ2hpbGQoZGlyZWN0aW9uKTsKLQotICAgIHZhciBuYW1lRGV0YWlsc0xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgbmFtZURldGFpbHNMaW5rLmhyZWYgPSB1cmw7Ci0gICAgbmFtZURldGFpbHNMaW5rLnRhcmdldCA9ICI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iOwotICAgIG5hbWVEZXRhaWxzTGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuYW1lKSk7Ci0gICAgY29sdW1uMy5hcHBlbmRDaGlsZChuYW1lRGV0YWlsc0xpbmspOwotCi0gICAgY29sdW1uNC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXREZWZhdWx0RGlzcGxheVN0cmluZyhkZXNjcmlwdGlvbikpKTsKLQotICAgIHZhciBhc3NlcnRpb25UeXBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7Ci0gICAgYXNzZXJ0aW9uVHlwZS5pZCA9ICJsYWJlbF9wdWJsaXNoZXJfYXNzZXJ0aW9uX3R5cGUiOwotICAgIGFzc2VydGlvblR5cGUubmFtZSA9ICI8JT1VRERJQWN0aW9uSW5wdXRzLlBVQkxJU0hFUl9BU1NFUlRJT05TX1RZUEUlPiI7Ci0gICAgYXNzZXJ0aW9uVHlwZS5jbGFzc05hbWUgPSAic2VsZWN0bGlzdCI7Ci0gICAgYXNzZXJ0aW9uVHlwZS5vcHRpb25zWzBdID0gbmV3IE9wdGlvbigiPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0FTU0VSVElPTl9UWVBFX1BBUkVOVF9DSElMRCIpJT4iLCAiPCU9U3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19UWVBFX1BBUkVOVF9DSElMRCklPiIpOwotICAgIGFzc2VydGlvblR5cGUub3B0aW9uc1sxXSA9IG5ldyBPcHRpb24oIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9BU1NFUlRJT05fVFlQRV9QRUVSX1RPX1BFRVIiKSU+IiwgIjwlPVN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfVFlQRV9QRUVSX1RPX1BFRVIpJT4iKTsKLSAgICBhc3NlcnRpb25UeXBlLm9wdGlvbnNbMl0gPSBuZXcgT3B0aW9uKCI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fQVNTRVJUSU9OX1RZUEVfSURFTlRJVFkiKSU+IiwgIjwlPVN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUFVCTElTSEVSX0FTU0VSVElPTlNfVFlQRV9JREVOVElUWSklPiIpOwotICAgIGNvbHVtbjUuYXBwZW5kQ2hpbGQoYXNzZXJ0aW9uVHlwZSk7Ci0KLSAgICBjb2x1bW4wLmNsYXNzTmFtZSA9ICJjaGVja2JveGNlbGxzIjsKLSAgICBjb2x1bW4xLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW4yLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW4zLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW40LmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW41LmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMCk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjEpOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4yKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMyk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjQpOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW41KTsKLSAgICB0YWJsZUJvZHkuYXBwZW5kQ2hpbGQobmV3Um93KTsKLSAgfQotCi0gIGZ1bmN0aW9uIHNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdChmb3JtLGxvY2F0aW9uKQotICB7Ci0gICAgZm9ybS5hY3Rpb24gPSBsb2NhdGlvbjsKLSAgICBpZiAoaGFuZGxlU3VibWl0KGZvcm0pKQotICAgIHsKLSAgICAgIHByb2Nlc3NSZXN1bHRUYWJsZSgiPCU9cHVibGlzaGVyQXNzZXJ0aW9uc0J1c2luZXNzJT4iLCAiPCU9VURESUFjdGlvbklucHV0cy5QVUJMSVNIRVJfQVNTRVJUSU9OU19TRUxFQ1RFRF9CVVNfSUQlPiIsIGZvcm0sIGZhbHNlKTsKLSAgICAgIGZvcm0uc3VibWl0KCk7Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gY2hlY2tUYWJsZUVudHJpZXNBbmRTdWJtaXQodGFibGVDb250YWluZXJJZCxmb3JtLGxvY2F0aW9uKQotICB7Ci0gICAgaWYgKGdldE51bWJlck9mU2VsZWN0aW9ucyh0YWJsZUNvbnRhaW5lcklkKSA+IDApIHsKLSAgICAgIHNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdChmb3JtLGxvY2F0aW9uKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYWxlcnQoIjwlPWNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PVEhJTkdfU0VMRUNURUQiKSU+Iik7Ci0gIH0KLQotICBmdW5jdGlvbiBjaGVja1RhYmxlU2l6ZUFuZFN1Ym1pdCh0YWJsZUNvbnRhaW5lcklkLGZvcm0sbG9jYXRpb24pCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBpZiAodGFibGUucm93cy5sZW5ndGggPiBudW1iZXJPZkhlYWRlclJvd3MpIHsKLSAgICAgIHNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdChmb3JtLGxvY2F0aW9uKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYWxlcnQoIjwlPWNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PVEhJTkdfU0VMRUNURUQiKSU+Iik7Ci0gIH0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiIgb25VbmxvYWQ9ImNsb3NlQWxsVWRkaUNoaWxkV2luZG93cygpIj4KLSAgPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPGRpdiBpZD0icHVibGlzaGVyQXNzZXJ0aW9ucyI+Ci0gICAgICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL1Nob3dQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9HRVQlPiI+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX0lOSVRJQVRFRCU+Ij4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5ORVdfU1VCUVVFUllfUVVFUllfSVRFTSU+Ij4KLQotPCUKLSAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJ1ZGRpL2ltYWdlcy9wdWJsaXNoZXJfYXNzZXJ0aW9uc19oaWdobGlnaHRlZC5naWYiOwotICAgU3RyaW5nIHRpdGxlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9NQU5BR0VfUFVCTElTSEVSX0FTU0VSVElPTlMiKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTAlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9NQU5BR0VfUFVCTElTSEVSX0FTU0VSVElPTlNfREVTQyIpJT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPWRpdlB1Ymxpc2hlckFzc2VydGlvblRhYmxlJT4nLCc8JT14ZGl2UHVibGlzaGVyQXNzZXJ0aW9uVGFibGUlPicpIj48aW1nIG5hbWU9IjwlPXhkaXZQdWJsaXNoZXJBc3NlcnRpb25UYWJsZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICAgIDxzdHJvbmc+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUFVCTElTSF9BU1NFUlRJT05TIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDxkaXYgaWQ9IjwlPWRpdlB1Ymxpc2hlckFzc2VydGlvblRhYmxlJT4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVDaGVja0FsbENsaWNrKCc8JT1kaXZQdWJsaXNoZXJBc3NlcnRpb25UYWJsZSU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9KChCdXNpbmVzc0VsZW1lbnQpc2VsZWN0ZWRFbGVtZW50KS5nZXRCdXNpbmVzc0VudGl0eSgpLmdldERlZmF1bHROYW1lU3RyaW5nKCklPjwvdGg+Ci0gICAgICAgICAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjxsYWJlbCBmb3I9ImxhYmVsX3B1Ymxpc2hlcl9hc3NlcnRpb25fZGlyZWN0aW9uIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ESVJFQ1RJT04iKSU+PC9sYWJlbD48L3RoPgotICAgICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9CVVNJTkVTUyIpJT48L3RoPgotICAgICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ERVNDUklQVElPTiIpJT48L3RoPgotICAgICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TVEFUVVMiKSU+PC90aD4KLSAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PGxhYmVsIGZvcj0ibGFiZWxfcHVibGlzaGVyX2Fzc2VydGlvbl90eXBlIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9BU1NFUlRJT05fVFlQRSIpJT48L2xhYmVsPjwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgIDwvdGFibGU+Ci0gICAgICAgICAgPHRhYmxlIHdpZHRoPSI5MCUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgPHRkIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JTkNPTVBMRVRFX0FTU0VSVElPTlNfVklTSUJJTElUWV9ERVNDIiklPgotICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICA8L3RhYmxlPgotICAgICAgICA8L2Rpdj4KLQotPCUKLSAgIGJvb2xlYW4gdGFibGVIYXNFcnJvcnMgPSAhZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRERfUFVCTElTSEVSX0FTU0VSVElPTlMpOwotICAgU3RyaW5nW10gYnVzU3BlY2lmaWNJbmZvID0geyJGT1JNX0xBQkVMX0JVU0lORVNTRVMiLChuZXcgQm9vbGVhbih0YWJsZUhhc0Vycm9ycykpLnRvU3RyaW5nKCksU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMpLCJwdWJsaXNoZXJBc3NlcnRpb25zIixVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FERF9QVUJMSVNIRVJfQVNTRVJUSU9OU307Ci0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQocHVibGlzaGVyQXNzZXJ0aW9uc0J1c2luZXNzKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhidXNTcGVjaWZpY0luZm8pOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy91ZGRpT2JqZWN0c1B1Ymxpc2hlckFzc2VydGlvbnNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotCi08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKHB1YkFzc2VydGlvbkZvcm0pOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSJhdXRoZW50aWNhdGlvbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICAgIDxicj4KLSAgICAgICAgPHRhYmxlPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0JVVFRPTl9TSE9XX0FMTF9QVUJMSVNIRVJfQVNTRVJUSU9OUyIpJT4iIG9uQ2xpY2s9InNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdCh0aGlzLmZvcm0sJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL1Nob3dQdWJsaXNoZXJBc3NlcnRpb25zQWN0aW9uSlNQLmpzcCIpKSU+JykiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0JVVFRPTl9DT01QTEVURV9QVUJMSVNIRVJfQVNTRVJUSU9OUyIpJT4iIG9uQ2xpY2s9ImNoZWNrVGFibGVFbnRyaWVzQW5kU3VibWl0KCc8JT1kaXZQdWJsaXNoZXJBc3NlcnRpb25UYWJsZSU+Jyx0aGlzLmZvcm0sJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL0NvbXBsZXRlUHVibGlzaGVyQXNzZXJ0aW9uc0FjdGlvbkpTUC5qc3AiKSklPicpIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fQUREX1BVQkxJU0hFUl9BU1NFUlRJT05TIiklPiIgb25DbGljaz0iY2hlY2tUYWJsZVNpemVBbmRTdWJtaXQoJzwlPXB1Ymxpc2hlckFzc2VydGlvbnNCdXNpbmVzcyU+Jyx0aGlzLmZvcm0sJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL0FkZFB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb25KU1AuanNwIikpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQlVUVE9OX1JFTU9WRV9QVUJMSVNIRVJfQVNTRVJUSU9OUyIpJT4iIG9uQ2xpY2s9ImNoZWNrVGFibGVFbnRyaWVzQW5kU3VibWl0KCc8JT1kaXZQdWJsaXNoZXJBc3NlcnRpb25UYWJsZSU+Jyx0aGlzLmZvcm0sJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL1JlbW92ZVB1Ymxpc2hlckFzc2VydGlvbnNBY3Rpb25KU1AuanNwIikpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICA8L2Zvcm0+Ci0KLSAgICA8L2Rpdj4KLSAgPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgcG9wdWxhdGVBc3NlcnRpb25UYWJsZSgpOwotICBzZXREZWZhdWx0cygpOwotICByZXN1bWVQcm94eUxvYWRQYWdlKCk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9NYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9NYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM2MDllZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvTWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIFVERElNYWluTm9kZSB1ZGRpTWFpbk5vZGUgPSAoVURESU1haW5Ob2RlKW5hdmlnYXRvck1hbmFnZXIuZ2V0Um9vdE5vZGUoKTsKLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgIEZvcm1Ub29sIGZvcm1Ub29sID0gKEZvcm1Ub29sKShzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCkpOwotICAgUmVnaXN0cnlOb2RlIHJlZ05vZGUgPSB1ZGRpTWFpbk5vZGUuZ2V0UmVnaXN0cnlOb2RlKHNlbGVjdGVkTm9kZSk7Ci0gICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgQnVzaW5lc3NFbGVtZW50IGJ1c0VsZW1lbnQgPSAoQnVzaW5lc3NFbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlLZXlQcm9wZXJ0eSIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlN1YlF1ZXJ5S2V5UHJvcGVydHkiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gICBTdHJpbmcgc2sgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZKTsKLSAgIHN1YlF1ZXJ5S2V5UHJvcGVydHkuc2V0U3ViUXVlcnlLZXkoc2spOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDx0aXRsZT48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9USVRMRV9NQU5BR0VfUkVGRVJFTkNFRF9TRVJWSUNFUyIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3Jlc3VsdHMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIHNldERlZmF1bHRzKCkKLSAgewotPCUKLSAgIGlmICghcmVnRWxlbWVudC5pc0xvZ2dlZEluKCkpCi0gICB7Ci0gICAgIFN0cmluZyBwdWJsaXNoVVJMID0gKFN0cmluZylmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgICAgU3RyaW5nIHVzZXJJZCA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQpOwotICAgICBTdHJpbmcgcGFzc3dvcmQgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotJT4KLSAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHB1Ymxpc2hVUkwpJT4iOwotICAgIGRvY3VtZW50LmZvcm1zWzBdLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVzZXJJZCklPiI7Ci0gICAgZG9jdW1lbnQuZm9ybXNbMF0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShwYXNzd29yZCklPiI7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1hbmFnZVJlZmVyZW5jZWRTZXJ2aWNlc0F1dGhlbnRpY2F0aW9uIikuc3R5bGUuZGlzcGxheSA9ICIiOwotPCUKLSAgIH0KLSAgIFN0cmluZyBzdWJRdWVyeUtleSA9IHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5KTsKLSAgIFZlY3RvciByZWZlcmVuY2VkU2VydmljZXMgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9SRUZFUkVOQ0VEX1NFUlZJQ0VTKTsKLSAgIGlmIChyZWZlcmVuY2VkU2VydmljZXMgPT0gbnVsbCkKLSAgIHsKLSAgICAgcmVmZXJlbmNlZFNlcnZpY2VzID0gbmV3IFZlY3RvcigpOwotICAgICBCdXNpbmVzc0VudGl0eSBidXNpbmVzc0VudGl0eSA9IGJ1c0VsZW1lbnQuZ2V0QnVzaW5lc3NFbnRpdHkoKTsKLSAgICAgU3RyaW5nIGJ1c2luZXNzS2V5ID0gYnVzaW5lc3NFbnRpdHkuZ2V0QnVzaW5lc3NLZXkoKTsKLSAgICAgQnVzaW5lc3NTZXJ2aWNlcyBidXNpbmVzc1N2Y3MgPSBidXNpbmVzc0VudGl0eS5nZXRCdXNpbmVzc1NlcnZpY2VzKCk7Ci0gICAgIGlmIChidXNpbmVzc1N2Y3MgIT0gbnVsbCkKLSAgICAgewotICAgICAgIFZlY3RvciBidXNpbmVzc1N2Y1ZlY3RvciA9IGJ1c2luZXNzU3Zjcy5nZXRCdXNpbmVzc1NlcnZpY2VWZWN0b3IoKTsKLSAgICAgICBmb3IgKGludCBpPTA7aTxidXNpbmVzc1N2Y1ZlY3Rvci5zaXplKCk7aSsrKQotICAgICAgIHsKLSAgICAgICAgIEJ1c2luZXNzU2VydmljZSBidXNTZXJ2aWNlID0gKEJ1c2luZXNzU2VydmljZSlidXNpbmVzc1N2Y1ZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAgICBpZiAoIWJ1c1NlcnZpY2UuZ2V0QnVzaW5lc3NLZXkoKS5lcXVhbHMoYnVzaW5lc3NLZXkpKQotICAgICAgICAgewotICAgICAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IG5ldyBMaXN0RWxlbWVudChidXNTZXJ2aWNlKTsKLSAgICAgICAgICAgcmVmZXJlbmNlZFNlcnZpY2VzLmFkZEVsZW1lbnQobGlzdEVsZW1lbnQpOwotICAgICAgICAgfQotICAgICAgIH0KLSAgICAgfQotICAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfUkVGRVJFTkNFRF9TRVJWSUNFUyxyZWZlcmVuY2VkU2VydmljZXMpOwotICAgfQotCi0gICBmb3IgKGludCBpPTA7aTxyZWZlcmVuY2VkU2VydmljZXMuc2l6ZSgpO2krKykKLSAgIHsKLSAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpcmVmZXJlbmNlZFNlcnZpY2VzLmVsZW1lbnRBdChpKTsKLSAgICAgaW50IHRhcmdldE5vZGVJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldE5vZGVJZCgpOwotICAgICBpbnQgdGFyZ2V0VG9vbElkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0VG9vbElkKCk7Ci0gICAgIGludCB0YXJnZXRWaWV3SWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXRWaWV3SWQoKTsKLSAgICAgU3RyaW5nIHVybCA9IFNlbGVjdFN1YlF1ZXJ5SXRlbUFjdGlvbi5nZXRBY3Rpb25MaW5rKHRhcmdldE5vZGVJZCx0YXJnZXRUb29sSWQsdGFyZ2V0Vmlld0lkLHN1YlF1ZXJ5S2V5LFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfUkVGRVJFTkNFRF9TRVJWSUNFUyxpLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyxmYWxzZSk7Ci0gICAgIEJ1c2luZXNzU2VydmljZSBicyA9IChCdXNpbmVzc1NlcnZpY2UpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgIFN0cmluZyBuYW1lID0gYnMuZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKTsKLSAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gYnMuZ2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKCk7Ci0lPgotICAgIGFkZFJlc3VsdFJvdygibWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzUmVmZXJlbmNlcyIsPCU9dGFyZ2V0Tm9kZUlkJT4sIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh1cmwpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZGVzY3JpcHRpb24pJT4iKTsKLTwlCi0gICB9Ci0KLSAgIFZlY3RvciBzZXJ2aWNlcyA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NFUlZJQ0VTKTsKLSAgIGlmIChzZXJ2aWNlcyAhPSBudWxsKQotICAgewotICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlcy5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpc2VydmljZXMuZWxlbWVudEF0KGkpOwotICAgICAgIGludCB0YXJnZXROb2RlSWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXROb2RlSWQoKTsKLSAgICAgICBpbnQgdGFyZ2V0VG9vbElkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0VG9vbElkKCk7Ci0gICAgICAgaW50IHRhcmdldFZpZXdJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldFZpZXdJZCgpOwotICAgICAgIFN0cmluZyB1cmwgPSBTZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayh0YXJnZXROb2RlSWQsdGFyZ2V0VG9vbElkLHRhcmdldFZpZXdJZCxzdWJRdWVyeUtleSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NFUlZJQ0VTLGksVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTLGZhbHNlKTsKLSAgICAgICBCdXNpbmVzc1NlcnZpY2UgYnMgPSAoQnVzaW5lc3NTZXJ2aWNlKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgIFN0cmluZyBuYW1lID0gYnMuZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKTsKLSAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBicy5nZXREZWZhdWx0RGVzY3JpcHRpb25TdHJpbmcoKTsKLSU+Ci0gICAgYWRkUmVzdWx0Um93KCJtYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNTZXJ2aWNlcyIsPCU9dGFyZ2V0Tm9kZUlkJT4sIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh1cmwpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZGVzY3JpcHRpb24pJT4iKTsKLTwlCi0gICAgIH0KLSAgIH0KLSU+Ci0gIH0KLQotICBmdW5jdGlvbiBwcm9jZXNzUmVmZXJlbmNlVGFibGUodGFibGVDb250YWluZXJJZCxpbnB1dE5hbWUsZm9ybSkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciBpbnB1dHMgPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwotICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KGlucHV0TmFtZSxpbnB1dHMuaXRlbSgwKS5jaGVja2VkKSk7Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc0Zvcm0oZm9ybSkKLSAgewotICAgIGlmIChoYW5kbGVTdWJtaXQoZm9ybSkpCi0gICAgewotICAgICAgcHJvY2Vzc1JlZmVyZW5jZVRhYmxlKCJtYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNSZWZlcmVuY2VzIiwiPCU9VURESUFjdGlvbklucHV0cy5SRUZFUkVOQ0VEX1NFUlZJQ0VfU0VMRUNUX1NUQVRFJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc1Jlc3VsdFRhYmxlKCJtYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNTZXJ2aWNlcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuTk9ERUlEX1NFUlZJQ0UlPiIsZm9ybSxmYWxzZSk7Ci0gICAgICBmb3JtLnN1Ym1pdCgpOwotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIHByb2Nlc3NBZGRTZXJ2aWNlcyhmb3JtKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUoIm1hbmFnZVJlZmVyZW5jZWRTZXJ2aWNlc1NlcnZpY2VzIik7Ci0gICAgaWYgKHRhYmxlLnJvd3MubGVuZ3RoID09IG51bWJlck9mSGVhZGVyUm93cykKLSAgICAgIGFsZXJ0KCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT19TRVJWSUNFUyIpKSU+Iik7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGZvcm0uPCU9VURESUFjdGlvbklucHV0cy5NQU5BR0VfUkVGRVJFTkNFRF9TRVJWSUNFU19PUEVSQVRJT04lPi52YWx1ZSA9ICI8JT1VRERJQWN0aW9uSW5wdXRzLk1BTkFHRV9SRUZFUkVOQ0VEX1NFUlZJQ0VTX09QRVJBVElPTl9BREQlPiI7Ci0gICAgICBwcm9jZXNzRm9ybShmb3JtKTsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBwcm9jZXNzUmVtb3ZlUmVmZXJlbmNlcyhmb3JtKQotICB7Ci0gICAgdmFyIG51bWJlck9mU2VsZWN0aW9ucyA9IGdldE51bWJlck9mU2VsZWN0aW9ucygibWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzUmVmZXJlbmNlcyIpOwotICAgIGlmIChnZXROdW1iZXJPZlNlbGVjdGlvbnMoIm1hbmFnZVJlZmVyZW5jZWRTZXJ2aWNlc1JlZmVyZW5jZXMiKSA9PSAwKQotICAgICAgYWxlcnQoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX1JFRkVSRU5DRV9TRUxFQ1RFRCIpKSU+Iik7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGZvcm0uPCU9VURESUFjdGlvbklucHV0cy5NQU5BR0VfUkVGRVJFTkNFRF9TRVJWSUNFU19PUEVSQVRJT04lPi52YWx1ZSA9ICI8JT1VRERJQWN0aW9uSW5wdXRzLk1BTkFHRV9SRUZFUkVOQ0VEX1NFUlZJQ0VTX09QRVJBVElPTl9SRU1PVkUlPiI7Ci0gICAgICBwcm9jZXNzRm9ybShmb3JtKTsKLSAgICB9Ci0gIH0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotICA8ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8ZGl2IGlkPSJtYW5hZ2VSZWZlcmVuY2VkU2VydmljZXMiPgotPCUKLSAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJ1ZGRpL2ltYWdlcy9yZWZlcmVuY2VkX3NlcnZpY2VzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICBTdHJpbmcgdGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX01BTkFHRV9SRUZFUkVOQ0VEX1NFUlZJQ0VTIik7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9NYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNBY3Rpb25KU1AuanNwIikpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHN0eWxlPSJtYXJnaW4tdG9wOjA7Ij4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVklPiI+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfR0VUJT4iPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLk5FV19TVUJRVUVSWV9JTklUSUFURUQlPiI+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX1FVRVJZX0lURU0lPiI+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTUFOQUdFX1JFRkVSRU5DRURfU0VSVklDRVNfT1BFUkFUSU9OJT4iPgotICAgICAgICA8dGFibGUgd2lkdGg9IjkwJSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTUFOQUdFX1JFRkVSRU5DRURfU0VSVklDRVNfREVTQyIpJT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLTwlCi0gICBTdHJpbmdbXSBwcm9qZWN0aW9uc1NwZWNpZmljSW5mbyA9IHsiRk9STV9MQUJFTF9SRUZFUkVOQ0VEX1NFUlZJQ0VTIixCb29sZWFuLkZBTFNFLnRvU3RyaW5nKCksU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTKSwibWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzIixVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1JFRkVSRU5DRURfU0VSVklDRVN9OwotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJtYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNSZWZlcmVuY2VzIik7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMocHJvamVjdGlvbnNTcGVjaWZpY0luZm8pOwotICAgc2VjdGlvbkhlYWRlckluZm8uZW5hYmxlRHluYW1pYyhmYWxzZSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL3VkZGlPYmplY3RzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBTdHJpbmdbXSBzZXJ2aWNlc1NwZWNpZmljSW5mbyA9IHsiRk9STV9PUFRJT05fU0VSVklDRVMiLEJvb2xlYW4uRkFMU0UudG9TdHJpbmcoKSxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVMpLCJtYW5hZ2VSZWZlcmVuY2VkU2VydmljZXMiLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0VSVklDRVN9OwotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJtYW5hZ2VSZWZlcmVuY2VkU2VydmljZXNTZXJ2aWNlcyIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKHNlcnZpY2VzU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvdWRkaU9iamVjdHNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgibWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzQXV0aGVudGljYXRpb24iKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvYXV0aGVudGljYXRpb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fQUREX1NFUlZJQ0VTIiklPiIgb25DbGljaz0icHJvY2Vzc0FkZFNlcnZpY2VzKHRoaXMuZm9ybSkiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fUkVNT1ZFX1JFRkVSRU5DRVMiKSU+IiBvbkNsaWNrPSJwcm9jZXNzUmVtb3ZlUmVmZXJlbmNlcyh0aGlzLmZvcm0pIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgIDwvZm9ybT4KLSAgICA8L2Rpdj4KLSAgPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgc2V0RGVmYXVsdHMoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL09wZW5SZWdpc3RyeUZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL09wZW5SZWdpc3RyeUZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmQ0Mjg3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9PcGVuUmVnaXN0cnlGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUxNSAgIDEzNTMwNyBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKiAyMDA4MDUxMyAgIDIzMTM1MSBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi1VRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLU5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotVURESU1haW5Ob2RlIHVkZGlNYWluTm9kZSA9IChVRERJTWFpbk5vZGUpbmF2aWdhdG9yTWFuYWdlci5nZXRSb290Tm9kZSgpOwotT3BlblJlZ2lzdHJ5VG9vbCBvcGVuUmVnaXN0cnlUb29sID0gKE9wZW5SZWdpc3RyeVRvb2wpKHVkZGlNYWluTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci1FbnVtZXJhdGlvbiBmYXZvcml0ZVJlZ2lzdHJ5RWxlbWVudHMgPSBvcGVuUmVnaXN0cnlUb29sLmdldEZhdm9yaXRlUmVnaXN0cnlFbGVtZW50cygpOwotVmVjdG9yIGZhdm9yaXRlUmVnaXN0cnlMaXN0ID0gbmV3IFZlY3RvcigpOwotd2hpbGUgKGZhdm9yaXRlUmVnaXN0cnlFbGVtZW50cy5oYXNNb3JlRWxlbWVudHMoKSkKLSAgZmF2b3JpdGVSZWdpc3RyeUxpc3QuYWRkRWxlbWVudChmYXZvcml0ZVJlZ2lzdHJ5RWxlbWVudHMubmV4dEVsZW1lbnQoKSk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9USVRMRV9PUEVOX1JFR0lTVFJZIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotICA8anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXN1Ym1pdC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3JtdXRpbHMuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBmdW5jdGlvbiBmaWxsRmF2b3JpdGVJbmZvKGZhdm9yaXRlUmVnaXN0cnlTZWxlY3QpCi0gICAgewotICAgICAgdmFyIHNlbGVjdGVkRmF2b3JpdGVSZWdpc3RyeUluZGV4ID0gZmF2b3JpdGVSZWdpc3RyeVNlbGVjdC5zZWxlY3RlZEluZGV4LTE7Ci0gICAgICBpZiAoc2VsZWN0ZWRGYXZvcml0ZVJlZ2lzdHJ5SW5kZXggPj0gMCkKLSAgICAgIHsKLSAgICAgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3BlblJlZ2lzdHJ5Rm9ybSIpOwotICAgICAgICBzd2l0Y2ggKHNlbGVjdGVkRmF2b3JpdGVSZWdpc3RyeUluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgPCUKLSAgICAgICAgICBmb3IgKGludCBpPTA7aTxmYXZvcml0ZVJlZ2lzdHJ5TGlzdC5zaXplKCk7aSsrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQgZmF2UmVnRWxlbWVudCA9IChGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50KWZhdm9yaXRlUmVnaXN0cnlMaXN0LmVsZW1lbnRBdChpKTsKLSAgICAgICAgICAlPgotICAgICAgICAgICAgY2FzZSA8JT1pJT46Ci0gICAgICAgICAgICAgIGZvcm0uPCU9VURESUFjdGlvbklucHV0cy5SRUdJU1RSWV9OQU1FJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGZhdlJlZ0VsZW1lbnQuZ2V0TmFtZSgpKSU+IjsKLSAgICAgICAgICAgICAgZm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLklOUVVJUllfVVJMJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGZhdlJlZ0VsZW1lbnQuZ2V0SW5xdWlyeVVSTCgpKSU+IjsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgPCUKLSAgICAgICAgICB9Ci0gICAgICAgICAgJT4KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNldERlZmF1bHRzKCkKLSAgICB7Ci0gICAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcGVuUmVnaXN0cnlGb3JtIik7Ci0gICAgICBmb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUkVHSVNUUllfTkFNRSU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKW9wZW5SZWdpc3RyeVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5SRUdJU1RSWV9OQU1FKSklPiI7Ci0gICAgICBmb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuSU5RVUlSWV9VUkwlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylvcGVuUmVnaXN0cnlUb29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuSU5RVUlSWV9VUkwpKSU+IjsKLSAgICAgIHNob3dNYWluRm9ybSgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNob3dNYWluRm9ybSgpCi0gICAgewotICAgICAgdmFyIGxvYWRTY3JlZW5UYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkU2NyZWVuIik7Ci0gICAgICBpZiAobG9hZFNjcmVlblRhYmxlLnJvd3MubGVuZ3RoID4gMCkKLSAgICAgICAgbG9hZFNjcmVlblRhYmxlLmRlbGV0ZVJvdygwKTsKLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluU2NyZWVuIikuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgIH0KLQotICAgCi0gIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotICA8ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8dGFibGUgaWQ9ImxvYWRTY3JlZW4iPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfTE9BRF9JTl9QUk9HUkVTUyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgICA8ZGl2IGlkPSJtYWluU2NyZWVuIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gICAgICA8JQotICAgICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gInVkZGkvaW1hZ2VzL29wZW5fcmVnaXN0cnlfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgICAgIFN0cmluZyB0aXRsZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfT1BFTl9SRUdJU1RSWSIpOwotICAgICAgJT4KLSAgICAgIDwlQCBpbmNsdWRlIGZpbGU9Ii9mb3Jtcy9mb3JtaGVhZGVyLmluYyIgJT4KLSAgICAgIDx0YWJsZT4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX09QRU5fUkVHSVNUUllfREVTQyIpJT4KLSAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICAgIAotICAgICAgPGZvcm0gaWQ9Im9wZW5SZWdpc3RyeUZvcm0iIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvT3BlblJlZ2lzdHJ5QWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIGhhbmRsZVN1Ym1pdCh0aGlzKSI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAKLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgdmFsaWduPSJib3R0b20iIG5vd3JhcCBoZWlnaHQ9MjU+Ci0gICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImZhdm9yaXRlUmVnaXN0cnkiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0ZBVk9SSVRFX1JFR0lTVFJZIiklPjwvbGFiZWw+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgPgotICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJmYXZvcml0ZVJlZ2lzdHJ5IiBvbkNoYW5nZT0iZmlsbEZhdm9yaXRlSW5mbyh0aGlzKSIgY2xhc3M9InNlbGVjdGxpc3QiPgotICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiIgc2VsZWN0ZWQ+Ci0gICAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7aTxmYXZvcml0ZVJlZ2lzdHJ5TGlzdC5zaXplKCk7aSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIEZhdm9yaXRlc1VERElSZWdpc3RyeUVsZW1lbnQgZmF2UmVnRWxlbWVudCA9IChGYXZvcml0ZXNVRERJUmVnaXN0cnlFbGVtZW50KWZhdm9yaXRlUmVnaXN0cnlMaXN0LmVsZW1lbnRBdChpKTsKLSAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9ZmF2UmVnRWxlbWVudC5nZXROYW1lKCklPiI+PCU9ZmF2UmVnRWxlbWVudC5nZXROYW1lKCklPgotICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmKGZhdm9yaXRlUmVnaXN0cnlMaXN0LnNpemUoKSA9PSAwKXsKLSAgICAgICAgICAgICAgICAlPgkKLSAgICAgICAgICAgICAgICAJPG9wdGlvbiB2YWx1ZT0iRW1wdHkiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvb3B0aW9uPgotCQkJCTwlICAgICAgICAgICAgICAgIAotCQkJCX0KLSAgICAgICAgICAgICAJJT4KLSAgICAgICAgICAgICAgPC9zZWxlY3Q+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X3JlZ2lzdHJ5X25hbWUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1JFR0lTVFJZX05BTUUiKSU+PC9sYWJlbD4KLSAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgaWYgKCFvcGVuUmVnaXN0cnlUb29sLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlJFR0lTVFJZX05BTUUpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X3JlZ2lzdHJ5X25hbWUiIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUkVHSVNUUllfTkFNRSU+IiBjbGFzcz0idGV4dGVudGVyIj4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTMwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfaW5xdWlyeV91cmwiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lOUVVJUllfVVJMIiklPjwvbGFiZWw+Ci0gICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgIGlmICghb3BlblJlZ2lzdHJ5VG9vbC5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5JTlFVSVJZX1VSTCkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci0gICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXRfaW5xdWlyeV91cmwiIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuSU5RVUlSWV9VUkwlPiIgY2xhc3M9InRleHRlbnRlciI+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvc2ltcGxlQ29tbW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICAgIDwvZm9ybT4KLSAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICBzZXREZWZhdWx0cygpOwotICAgICAgPC9zY3JpcHQ+Ci0gICAgICAKLSAgICA8L2Rpdj4KLSAgPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUHJvY2Vzc1VERElGcmFtZXNldHNGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9Qcm9jZXNzVURESUZyYW1lc2V0c0Zvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjNlZGUwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9Qcm9jZXNzVURESUZyYW1lc2V0c0Zvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUFjdGlvbiIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1GcmFtZU5hbWUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoZm9ybUFjdGlvbi50b1N0cmluZygpKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgc3R5bGU9Im1hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjAiPgotICA8aW5wdXQgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLkZSQU1FX05BTUUlPiIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iPCU9Zm9ybUZyYW1lTmFtZSU+Ij4KLSAgPGlucHV0IG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5UJT4iIHR5cGU9ImhpZGRlbiIgdmFsdWU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKSU+Ij4KLSAgPGlucHV0IG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuRlJBTUVTRVRfUk9XU19BQ1RJT05TX0NPTlRBSU5FUiU+IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpJT4iPgotPC9mb3JtPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0RldGFpbHNGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdEZXRhaWxzRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YWY0NWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0RldGFpbHNGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI2OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDkxMiAgIDE0MTc5NiBnaWxiZXJ0YUBjYS5pYm0uY29tIC0gR2lsYmVydCBBbmRyZXdzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmZhdm9yaXRlcy5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgRmF2b3JpdGVzUGVyc3BlY3RpdmUgZmF2UGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldEZhdm9yaXRlc1BlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIC8vIFRoZSBzZWxlY3RlZCBub2RlIG11c3QgYmUgYSByZWdpc3RyeSBub2RlLgotICAgTm9kZSByZWdpc3RyeU5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgVG9vbE1hbmFnZXIgY3VycmVudFRvb2xNYW5hZ2VyID0gcmVnaXN0cnlOb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpOwotICAgRm9ybVRvb2wgZm9ybVRvb2wgPSAoRm9ybVRvb2wpKGN1cnJlbnRUb29sTWFuYWdlci5nZXRTZWxlY3RlZFRvb2woKSk7ICAgCi0gICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnaXN0cnlOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICByZWdFbGVtZW50LnJlZnJlc2hNZXRhKCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9USVRMRV9SRUdJU1RSWV9ERVRBSUxTIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvZGV0YWlsc3RhYmxlcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9yZXN1bWVwcm94eWxvYWRwYWdlLmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKQotICB7Ci0gICAgdmFyIHJlZ2lzdHJ5RGV0YWlsc05hbWVUYWJsZSA9IGdldFRhYmxlKCJyZWdpc3RyeURldGFpbHNOYW1lIik7Ci08JQotICAgU3RyaW5nIG5hbWUgPSByZWdFbGVtZW50LmdldE5hbWUoKTsKLSAgIGJvb2xlYW4gaXNFcnJvciA9ICFmb3JtVG9vbC5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9SRUdJU1RSWV9OQU1FKTsgICAKLSU+Ci0gICAgYWRkRGV0YWlsc1NpbmdsZUl0ZW1Sb3coInJlZ2lzdHJ5RGV0YWlsc05hbWUiLGZhbHNlKTsKLSAgICBzZXREZXRhaWxzTmFtZVNpbmdsZUl0ZW1Sb3coInJlZ2lzdHJ5RGV0YWlsc05hbWUiLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUobmFtZSklPiIpOwotPCUKLSAgIGlmIChpc0Vycm9yKQotICAgewotJT4KLSAgICBoaWdobGlnaHRFcnJhbnRSb3cocmVnaXN0cnlEZXRhaWxzTmFtZVRhYmxlLnJvd3NbbnVtYmVyT2ZIZWFkZXJSb3dzXSwiZXJyYW50Um93Iik7Ci08JQotICAgfQotICAgCi0gICBFbnVtZXJhdGlvbiB1c2VyRGVmaW5lZENhdGVnb3JpZXMgPSByZWdFbGVtZW50LmdldFVzZXJEZWZpbmVkQ2F0ZWdvcmllcygpOwotICAgYm9vbGVhbiBjb250YWluc1VzZXJEZWZpbmVkQ2F0ZWdvcmllczsKLSAgIGlmICh1c2VyRGVmaW5lZENhdGVnb3JpZXMgIT0gbnVsbCAmJiB1c2VyRGVmaW5lZENhdGVnb3JpZXMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICB7Ci0lPgotICAgIHZhciByZWdpc3RyeUNhdGVnb3JpZXNUYWJsZSA9IGdldFRhYmxlKCJyZWdpc3RyeVVzZXJEZWZpbmVkQ2F0ZWdvcmllcyIpOwotPCUgICAKLSAgICAgY29udGFpbnNVc2VyRGVmaW5lZENhdGVnb3JpZXMgPSB0cnVlOwotICAgICBBcnJheUxpc3QgdXNlckRlZmluZWRDYXRlZ29yaWVzTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgZG8KLSAgICAgewotICAgICAgIHVzZXJEZWZpbmVkQ2F0ZWdvcmllc0xpc3QuYWRkKHVzZXJEZWZpbmVkQ2F0ZWdvcmllcy5uZXh0RWxlbWVudCgpKTsKLSAgICAgfSB3aGlsZSAodXNlckRlZmluZWRDYXRlZ29yaWVzLmhhc01vcmVFbGVtZW50cygpKTsKLSAgICAgQ2F0ZWdvcnlNb2RlbFtdIHVzZXJEZWZpbmVkQ2F0ZWdvcmllc0FycmF5ID0gbmV3IENhdGVnb3J5TW9kZWxbdXNlckRlZmluZWRDYXRlZ29yaWVzTGlzdC5zaXplKCldOwotICAgICB1c2VyRGVmaW5lZENhdGVnb3JpZXNMaXN0LnRvQXJyYXkodXNlckRlZmluZWRDYXRlZ29yaWVzQXJyYXkpOwotICAgICBRdWlja1NvcnQuc29ydCh1c2VyRGVmaW5lZENhdGVnb3JpZXNBcnJheSwwLHVzZXJEZWZpbmVkQ2F0ZWdvcmllc0FycmF5Lmxlbmd0aC0xKTsKLSAgICAgU3RyaW5nQnVmZmVyIGZpbGVOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICBmb3IgKGludCBpPTA7aTx1c2VyRGVmaW5lZENhdGVnb3JpZXNBcnJheS5sZW5ndGg7aSsrKQotICAgICB7Ci0gICAgICAgbmFtZSA9IHVzZXJEZWZpbmVkQ2F0ZWdvcmllc0FycmF5W2ldLmdldERpc3BsYXlOYW1lKCk7Ci0gICAgICAgU3RyaW5nIHRNb2RlbEtleSA9IHVzZXJEZWZpbmVkQ2F0ZWdvcmllc0FycmF5W2ldLmdldFRNb2RlbEtleSgpOwotICAgICAgIGJvb2xlYW4gY2hlY2tlZCA9IHVzZXJEZWZpbmVkQ2F0ZWdvcmllc0FycmF5W2ldLmlzQ2hlY2tlZCgpOwotICAgICAgIGZpbGVOYW1lLnNldExlbmd0aCgwKTsKLSAgICAgICBpZiAodXNlckRlZmluZWRDYXRlZ29yaWVzQXJyYXlbaV0uaXNEYXRhTG9hZGVkKCkpCi0gICAgICAgICBmaWxlTmFtZS5hcHBlbmQodXNlckRlZmluZWRDYXRlZ29yaWVzQXJyYXlbaV0uZ2V0Q2F0ZWdvcnlLZXkoKSkuYXBwZW5kKCIudHh0Iik7Ci0gICAgICAgZWxzZQotICAgICAgICAgZmlsZU5hbWUuYXBwZW5kKGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiVEFCTEVfQkxBTktfUExBQ0VIT0xERVIiKSk7Ci0gICAgICAgYm9vbGVhbiBoYXNFcnJvciA9ICFmb3JtVG9vbC5pc1Jvd0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5VU0VSX0RFRklORURfQ0FURUdPUklFUyx0TW9kZWxLZXkpOwotJT4KLSAgICBhZGREZXRhaWxzVXNlckRlZmluZWRDYXRlZ29yeVJvdygicmVnaXN0cnlVc2VyRGVmaW5lZENhdGVnb3JpZXMiLCI8JT10TW9kZWxLZXklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShuYW1lKSU+Iiw8JT1jaGVja2VkJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShmaWxlTmFtZS50b1N0cmluZygpKSU+Iiw8JT1oYXNFcnJvciU+KTsKLTwlCi0gICAgICAgaWYgKGhhc0Vycm9yKQotICAgICAgIHsKLSU+Ci0gICAgaGlnaGxpZ2h0RXJyYW50Um93KHJlZ2lzdHJ5Q2F0ZWdvcmllc1RhYmxlLnJvd3NbbnVtYmVyT2ZIZWFkZXJSb3dzKzwlPWklPl0sImVycmFudFJvdyIpOwotPCUgICAgICAgCi0gICAgICAgfQotICAgICB9Ci0gICB9Ci0gICBlbHNlCi0gICAgIGNvbnRhaW5zVXNlckRlZmluZWRDYXRlZ29yaWVzID0gZmFsc2U7ICAgCi0lPiAgICAgICAKLSAgICBzaG93TWFpbkZvcm0oKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gc2hvd01haW5Gb3JtKCkKLSAgewotICAgIHZhciBsb2FkU2NyZWVuVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZFNjcmVlbiIpOwotICAgIGlmIChsb2FkU2NyZWVuVGFibGUucm93cy5sZW5ndGggPiAwKQotICAgICAgbG9hZFNjcmVlblRhYmxlLmRlbGV0ZVJvdygwKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblNjcmVlbiIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgfQotICAKLSAgZnVuY3Rpb24gcHJvY2Vzc0Zvcm0oZm9ybSkKLSAgewotICAgIGlmIChoYW5kbGVTdWJtaXQoZm9ybSkpCi0gICAgewotICAgICAgcHJvY2Vzc0RldGFpbHNTaW5nbGVJdGVtVGFibGUoInJlZ2lzdHJ5RGV0YWlsc05hbWUiLCI8JT1VRERJQWN0aW9uSW5wdXRzLk5BTUVfTU9ESUZJRUQlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUkVHSVNUUllfTkFNRSU+Iixmb3JtKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotICA8ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL1VwZGF0ZVJlZ2lzdHJ5QWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIHByb2Nlc3NGb3JtKHRoaXMpIj4KLSAgICAgIDx0YWJsZSBpZD0ibG9hZFNjcmVlbiI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIk1TR19MT0FEX0lOX1BST0dSRVNTIiklPgotICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgICAgPGRpdiBpZD0ibWFpblNjcmVlbiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotPCUKLSAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiOwotICAgU3RyaW5nIHRpdGxlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9SRUdJU1RSWV9ERVRBSUxTIik7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgICAgICA8dGFibGU+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ERVRBSUxTX0VESVRBQkxFIixyZWdpc3RyeU5vZGUuZ2V0Tm9kZU5hbWUoKSklPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicmVnaXN0cnlEZXRhaWxzTmFtZSIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1JFR0lTVFJZX05BTUUiKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2RldGFpbHNTaW5nbGVJdGVtX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICAgICAgPHRhYmxlPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjA+Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfSU5RVUlSWV9VUkwiKSU+Ci0gICAgICAgICAgICA8L3RoPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgPCU9cmVnRWxlbWVudC5nZXRJbnF1aXJ5VVJMKCklPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotPCUKLSAgIFN0cmluZyBwdWJsaXNoVVJMID0gcmVnRWxlbWVudC5nZXRQdWJsaXNoVVJMKCk7Ci0gICBpZiAoVmFsaWRhdG9yLnZhbGlkYXRlVVJMKHB1Ymxpc2hVUkwpKQotICAgewotJT4KLSAgICAgICAgPHRhYmxlPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjA+Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUFVCTElTSF9VUkwiKSU+Ci0gICAgICAgICAgICA8L3RoPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgPCU9cmVnRWxlbWVudC5nZXRQdWJsaXNoVVJMKCklPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotPCUKLSAgIH0KLSAgIAotICAgaWYgKGNvbnRhaW5zVXNlckRlZmluZWRDYXRlZ29yaWVzKQotICAgewotICAgICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicmVnaXN0cnlVc2VyRGVmaW5lZENhdGVnb3JpZXMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvdWRfY2F0ZWdvcmllc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgfQotICAgaWYgKHJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgewotJT4KLSAgICAgICAgPHRhYmxlPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjA+Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVVNFUklEIiklPgotICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgIDwlPXJlZ0VsZW1lbnQuZ2V0VXNlcklkKCklPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotPCUKLSAgIH0KLSAgIAotICAgU3RyaW5nIHJlZ2lzdHJhdGlvblVSTCA9IHJlZ0VsZW1lbnQuZ2V0UmVnaXN0cmF0aW9uVVJMKCk7Ci0gICBpZiAoVmFsaWRhdG9yLnZhbGlkYXRlVVJMKHJlZ2lzdHJhdGlvblVSTCkpCi0gICB7Ci0lPgotICAgICAgICA8dGFibGU+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGhlaWdodD0yMD4mbmJzcDs8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDx0YWJsZT4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICA8JT1mYXZQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1JFR0lTVFJZX1VSTCIscmVnaXN0cmF0aW9uVVJMKSU+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci08JQotICAgfQotJT4KLTxqc3A6dXNlQmVhbiBpZD0iY3VycmVudFRvb2xNYW5hZ2VySGFzaCIgY2xhc3M9ImphdmEudXRpbC5IYXNodGFibGUiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGN1cnJlbnRUb29sTWFuYWdlckhhc2gucHV0KEFjdGlvbklucHV0cy5DVVJSRU5UX1RPT0xfTUFOQUdFUixjdXJyZW50VG9vbE1hbmFnZXIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL290aGVyQWN0aW9ucy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICA8L2Rpdj4gICAgICAKLSAgICA8L2Zvcm0+Ci0gIDwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHNldERlZmF1bHRzKCk7Ci0gIHJlc3VtZVByb3h5TG9hZFBhZ2UoKTsgIAotPC9zY3JpcHQ+ICAgIAotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRCdXNpbmVzc2VzQWR2YW5jZWRGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kQnVzaW5lc3Nlc0FkdmFuY2VkRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MDdkMGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRCdXNpbmVzc2VzQWR2YW5jZWRGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJzdWJRdWVyeUtleVByb3BlcnR5IiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU3ViUXVlcnlLZXlQcm9wZXJ0eSIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+Ci08ZGl2IGlkPSJmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkIj4KLSAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9SZWdGaW5kQnVzaW5lc3Nlc0FkdmFuY2VkQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIHByb2Nlc3NGaW5kQnVzaW5lc3Nlc0FkdmFuY2VkRm9ybSh0aGlzKSI+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVklPiI+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9HRVQlPiI+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5ORVdfU1VCUVVFUllfSU5JVElBVEVEJT4iPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX1FVRVJZX0lURU0lPiI+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FJT4iPgotICAgIDx0YWJsZSB3aWR0aD0iOTAlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0ZJTkRfQURWQU5DRURfREVTQyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgaGVpZ2h0PTM1IHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJpbnB1dF9maW5kX2J1c2luZXNzZXNfYWR2YW5jZV9vd25lZCIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9PV05FRCU+IiBvbkNsaWNrPSJ0b2dnbGVBZHZhbmNlZEF1dGhlbnRpY2F0aW9uU2VjdGlvbig8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyU+LHRoaXMuY2hlY2tlZCkiPgotICAgICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X2ZpbmRfYnVzaW5lc3Nlc19hZHZhbmNlX293bmVkIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9PV05FRCIpJT48L2xhYmVsPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZEJ1c2luZXNzZXNBZHZhbmNlZEF1dGhlbnRpY2F0aW9uIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoImZpbmRCdXNpbmVzc2VzQWR2YW5jZWROYW1lcyIpOwotICAgU3RyaW5nW10gbmFtZVNwZWNpZmljSW5mbyA9IHsiRk9STV9MQUJFTF9OQU1FUyIsIkZPUk1fTEFCRUxfTkFNRSIsQm9vbGVhbi5GQUxTRS50b1N0cmluZygpfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhuYW1lU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvbGFuZ3VhZ2VJbnB1dF90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkSWRlbnRpZmllcnMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvaWRlbnRpZmllcnNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZEJ1c2luZXNzZXNBZHZhbmNlZENhdGVnb3JpZXMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvY2F0ZWdvcmllc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgU3RyaW5nW10gc2lTcGVjaWZpY0luZm8gPSB7IkZPUk1fTEFCRUxfU0VSVklDRV9JTlRFUkZBQ0VTIixCb29sZWFuLkZBTFNFLnRvU3RyaW5nKCksU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyksImZpbmRCdXNpbmVzc2VzQWR2YW5jZWQiLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfU0VSVklDRV9JTlRFUkZBQ0VTfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZEJ1c2luZXNzZXNBZHZhbmNlZFNlcnZpY2VJbnRlcmZhY2VzIik7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoc2lTcGVjaWZpY0luZm8pOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy91ZGRpT2JqZWN0c190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkRGlzY292ZXJ5VVJMcyIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKG5ldyBCb29sZWFuKGZhbHNlKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2Rpc2NvdmVyeVVSTHNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZEJ1c2luZXNzZXNBZHZhbmNlZEZpbmRRdWFsaWZpZXJzIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2ZpbmRRdWFsaWZpZXJzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoImZpbmRCdXNpbmVzc2VzQWR2YW5jZWRDb21tb24iKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvYWR2YW5jZWRDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8L2Zvcm0+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kQnVzaW5lc3Nlc0Zvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRCdXNpbmVzc2VzRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MTQ4MzQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRCdXNpbmVzc2VzRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPGRpdiBpZD0iZmluZEJ1c2luZXNzZXMiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gbmFtZT0iZmluZEJ1c2luZXNzZXNTdHlsZSI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1NFQVJDSF9UWVBFIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InJhZGlvX2ZpbmRfYnVzaW5lc3Nfc2ltcGxlIiBjbGFzcz0icmFkaW8iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQlVTSU5FU1NFUyU+IiBvbkNsaWNrPSJzaG93RmluZEZvcm0oPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMlPiw8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NJTVBMRSU+KSI+PGxhYmVsIGZvcj0icmFkaW9fZmluZF9idXNpbmVzc19zaW1wbGUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1JBRElPX1NJTVBMRSIpJT48L2xhYmVsPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InJhZGlvX2ZpbmRfYnVzaW5lc3NfYWR2YW5jZSIgY2xhc3M9InJhZGlvIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0JVU0lORVNTRVMlPiIgb25DbGljaz0ic2hvd0ZpbmRGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTJT4sPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9BRFZBTkNFRCU+KSI+PGxhYmVsIGZvcj0icmFkaW9fZmluZF9idXNpbmVzc19hZHZhbmNlIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9SQURJT19BRFZBTkNFRCIpJT48L2xhYmVsPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InJhZGlvX2ZpbmRfYnVzaW5lc3NfdXVpZCIgY2xhc3M9InJhZGlvIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0JVU0lORVNTRVMlPiIgb25DbGljaz0ic2hvd0ZpbmRGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTJT4sPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9VVUlEJT4pIj48bGFiZWwgZm9yPSJyYWRpb19maW5kX2J1c2luZXNzX3V1aWQiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1JBRElPX1VVSUQiKSU+PC9sYWJlbD4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPC9mb3JtPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL1JlZ0ZpbmRCdXNpbmVzc2VzU2ltcGxlRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvUmVnRmluZEJ1c2luZXNzZXNBZHZhbmNlZEZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJmaW5kQnVzaW5lc3NVVUlEIik7Ci0gICBTdHJpbmdbXSBvdGhlclByb3BlcnRpZXMgPSB7InVkZGkvYWN0aW9ucy9SZWdGaW5kQnVzaW5lc3NVVUlEQWN0aW9uSlNQLmpzcCIsVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0JVU0lORVNTX0tFWSwiRk9STV9MQUJFTF9GSU5EX0JVU0lORVNTX1VVSURfREVTQyJ9OwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKG90aGVyUHJvcGVydGllcyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL1JlZ0ZpbmRVVUlERm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kQnVzaW5lc3Nlc1NpbXBsZUZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRCdXNpbmVzc2VzU2ltcGxlRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjN2UzNGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRCdXNpbmVzc2VzU2ltcGxlRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzdWJRdWVyeUtleVByb3BlcnR5IiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU3ViUXVlcnlLZXlQcm9wZXJ0eSIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgLy8gc2VsZWN0ZWROb2RlIGNvdWxkIGJlIHRoZSByZWdpc3RyeSBvciBxdWVyeSBub2Rlcy4KLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgIEZvcm1Ub29sIGZvcm1Ub29sID0gKEZvcm1Ub29sKShzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCkpOwotICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpKTsKLSU+Ci08ZGl2IGlkPSJmaW5kQnVzaW5lc3Nlc1NpbXBsZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL1JlZ0ZpbmRCdXNpbmVzc2VzU2ltcGxlQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIHByb2Nlc3NGb3JtKHRoaXMpIj4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSU+Ij4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUlPiI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0xMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRklORF9CVVNJTkVTU0VTX1NJTVBMRV9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfZmluZF9idXNpbmVzc2VzX3NpbXBsZV9uYW1lIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FIiklPjwvbGFiZWw+Ci08JQotICAgaWYgKCFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FKSkKLSAgIHsKLSU+Ci0gICAgICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotPCUKLSAgIH0KLSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgICAgPHRyPgotICAgICAgICA8dGQ+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXRfZmluZF9idXNpbmVzc2VzX3NpbXBsZV9uYW1lIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FJT4iIGNsYXNzPSJ0ZXh0ZW50ZXIiPiA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8L2Zvcm0+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnRmluZEZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDVjYjVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw3MTMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqIDIwMDgxMTA2ICAgMjU0NTE2IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgZml4IGNvbXBpbGF0aW9uIGVycm9yLCByZW1vdmUgZHVwbGljYXRlIHZhcmlhYmxlIGRlY2xhcmF0aW9uCi0gKiAyMDA4MTIxNyAgIDI1OTE0MCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLmRhdGF0eXBlLmJ1c2luZXNzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGouZGF0YXR5cGUuc2VydmljZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICAvLyBzZWxlY3RlZE5vZGUgY291bGQgYmUgdGhlIHJlZ2lzdHJ5IG9yIHF1ZXJ5IG5vZGVzLgotICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgRm9ybVRvb2wgZm9ybVRvb2wgPSAoRm9ybVRvb2wpKHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0lPgotPGpzcDp1c2VCZWFuIGlkPSJzdWJRdWVyeUtleVByb3BlcnR5IiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU3ViUXVlcnlLZXlQcm9wZXJ0eSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgc3ViUXVlcnlLZXlQcm9wZXJ0eS5zZXRTdWJRdWVyeUtleShzdWJRdWVyeUtleSk7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTwlCi0gICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSA9ICgoTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UpZm9ybVRvb2wpLmdldEZvcm1Ub29sUHJvcGVydGllcyhzdWJRdWVyeUtleVByb3BlcnR5LmdldFN1YlF1ZXJ5S2V5KCkpOwotICAgVURESU1haW5Ob2RlIHVkZGlNYWluTm9kZSA9IChVRERJTWFpbk5vZGUpbmF2aWdhdG9yTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgTm9kZSByZWdOb2RlID0gdWRkaU1haW5Ob2RlLmdldFJlZ2lzdHJ5Tm9kZShzZWxlY3RlZE5vZGUpOwotICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSU+Ci0KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfUkVHSVNUUllfRklORCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3Jtc3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy90YWJsZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvdWRkaXRhYmxlcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdmFyIHNlY3Rpb25JZHMgPSBbImZpbmRCdXNpbmVzc2VzIiwiZmluZFNlcnZpY2VzIiwiZmluZFNlcnZpY2VJbnRlcmZhY2VzIl07Ci0gIHZhciBmaW5kQnVzaW5lc3Nlc1NlY3Rpb25JZHMgPSBbImZpbmRCdXNpbmVzc2VzU2ltcGxlIiwiZmluZEJ1c2luZXNzZXNBZHZhbmNlZCIsImZpbmRCdXNpbmVzc1VVSUQiXTsKLSAgdmFyIGZpbmRTZXJ2aWNlc1NlY3Rpb25JZHMgPSBbImZpbmRTZXJ2aWNlc1NpbXBsZSIsImZpbmRTZXJ2aWNlc0FkdmFuY2VkIiwiZmluZFNlcnZpY2VVVUlEIl07Ci0gIHZhciBmaW5kU2VydmljZUludGVyZmFjZXNTZWN0aW9uSWRzID0gWyJmaW5kU2VydmljZUludGVyZmFjZXNTaW1wbGUiLCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZCIsImZpbmRTZXJ2aWNlSW50ZXJmYWNlVVVJRCJdOwotICB2YXIgc3R5bGVGb3JtcyA9IFsiZmluZEJ1c2luZXNzZXNTdHlsZSIsImZpbmRTZXJ2aWNlc1N0eWxlIiwiZmluZFNlcnZpY2VJbnRlcmZhY2VzU3R5bGUiXTsKLSAgdmFyIGF1dGhlbnRpY2F0aW9uU2VjdGlvbklkcyA9IFsiZmluZEJ1c2luZXNzZXNBZHZhbmNlZEF1dGhlbnRpY2F0aW9uIiwiZmluZFNlcnZpY2VzQWR2YW5jZWRBdXRoZW50aWNhdGlvbiIsImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkQXV0aGVudGljYXRpb24iXTsKLQotICBmdW5jdGlvbiB2YWxpZGF0ZVF1ZXJ5TmFtZSgpCi0gIHsKLTwlCi0gICBTdHJpbmcgc3ViUXVlcnlLZXlWYWx1ZSA9IHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKTsKLSAgIGJvb2xlYW4gaXNTdWJRdWVyeSA9IChzdWJRdWVyeUtleVZhbHVlICE9IG51bGwgJiYgc3ViUXVlcnlLZXlWYWx1ZS5sZW5ndGgoKSA+IDApOwotJT4gICAKLSAgICBpZiAoPCU9aXNTdWJRdWVyeSU+KQotICAgIHsKLSAgICAgIC8vIFN1YnF1ZXJpZXMgbXVzdCBoYXZlIGEgbmFtZSB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSB0aGF0IG9mIHRoZSBjdXJyZW50IHF1ZXJ5IG9yIHRoZSBjbG9zZXN0IHF1ZXJ5IGVuY2xvc2luZyB0aGlzIG9iamVjdC4KLTwlCi0gICBTdHJpbmcgY3VycmVudFF1ZXJ5TmFtZSA9ICIiOwotICAgaWYgKHNlbGVjdGVkTm9kZSBpbnN0YW5jZW9mIFF1ZXJ5Tm9kZSkKLSAgICAgY3VycmVudFF1ZXJ5TmFtZSA9IHNlbGVjdGVkTm9kZS5nZXROb2RlTmFtZSgpOwotICAgZWxzZSBpZiAoc2VsZWN0ZWROb2RlIGluc3RhbmNlb2YgQnVzaW5lc3NOb2RlKQotICAgewotICAgICBOb2RlIHBhcmVudE5vZGUgPSBzZWxlY3RlZE5vZGUuZ2V0UGFyZW50KCk7Ci0gICAgIGlmIChwYXJlbnROb2RlIGluc3RhbmNlb2YgUXVlcnlOb2RlKQotICAgICAgIGN1cnJlbnRRdWVyeU5hbWUgPSBwYXJlbnROb2RlLmdldE5vZGVOYW1lKCk7Ci0gICB9Ci0lPiAgICAKLSAgICAgIHZhciBxdWVyeU5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicXVlcnlOYW1lIikudmFsdWU7Ci0gICAgICBpZiAocXVlcnlOYW1lID09ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY3VycmVudFF1ZXJ5TmFtZSklPiIpCi0gICAgICB7Ci0gICAgICAgIGFsZXJ0KCI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1FVRVJZX05BTUVfQ09ORkxJQ1QiKSU+Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIHByb2Nlc3NGb3JtKGZvcm0pCi0gIHsKLSAgICBpZiAoIWhhbmRsZVN1Ym1pdChmb3JtKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXZhbGlkYXRlUXVlcnlOYW1lKCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSU+LnZhbHVlID0gIjwlPXN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSU+IjsKLSAgICBmb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSU+LnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1ZXJ5TmFtZSIpLnZhbHVlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc0ZpbmRCdXNpbmVzc2VzQWR2YW5jZWRGb3JtKGZvcm0pCi0gIHsKLSAgICBpZiAocHJvY2Vzc0Zvcm0oZm9ybSkpCi0gICAgewotICAgICAgcHJvY2Vzc0xhbmd1YWdlSW5wdXRUYWJsZSgiZmluZEJ1c2luZXNzZXNBZHZhbmNlZE5hbWVzIiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FX0xBTkdVQUdFJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX05BTUUlPiIsZm9ybSk7Ci0gICAgICBwcm9jZXNzTmFtZUZpbmRRdWFsaWZpZXJzKCJmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkTmFtZXMiLGZvcm0pOwotICAgICAgcHJvY2Vzc0lkZW50aWZpZXJUYWJsZSgiZmluZEJ1c2luZXNzZXNBZHZhbmNlZElkZW50aWZpZXJzIixmb3JtKTsKLSAgICAgIHByb2Nlc3NDYXRlZ29yeVRhYmxlKCJmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkQ2F0ZWdvcmllcyIsZm9ybSx0cnVlKTsKLSAgICAgIHByb2Nlc3NSZXN1bHRUYWJsZSgiZmluZEJ1c2luZXNzZXNBZHZhbmNlZFNlcnZpY2VJbnRlcmZhY2VzIiwiPCU9VURESUFjdGlvbklucHV0cy5OT0RFSURfU0VSVklDRV9JTlRFUkZBQ0UlPiIsZm9ybSxmYWxzZSk7Ci0gICAgICBwcm9jZXNzRGlzY292ZXJ5VVJMVGFibGUoImZpbmRCdXNpbmVzc2VzQWR2YW5jZWREaXNjb3ZlcnlVUkxzIixmb3JtKTsKLSAgICAgIHByb2Nlc3NGaW5kUXVhbGlmaWVyVGFibGUoImZpbmRCdXNpbmVzc2VzQWR2YW5jZWRGaW5kUXVhbGlmaWVycyIsZm9ybSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc0ZpbmRTZXJ2aWNlc0FkdmFuY2VkRm9ybShmb3JtKQotICB7Ci0gICAgaWYgKHByb2Nlc3NGb3JtKGZvcm0pKQotICAgIHsKLSAgICAgIHByb2Nlc3NSZXN1bHRUYWJsZSgiZmluZFNlcnZpY2VzQWR2YW5jZWRCdXNpbmVzcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuTk9ERUlEX0JVU0lORVNTJT4iLGZvcm0sZmFsc2UpOwotICAgICAgcHJvY2Vzc0xhbmd1YWdlSW5wdXRUYWJsZSgiZmluZFNlcnZpY2VzQWR2YW5jZWROYW1lcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRV9MQU5HVUFHRSU+IiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc05hbWVGaW5kUXVhbGlmaWVycygiZmluZFNlcnZpY2VzQWR2YW5jZWROYW1lcyIsZm9ybSk7Ci0gICAgICBwcm9jZXNzQ2F0ZWdvcnlUYWJsZSgiZmluZFNlcnZpY2VzQWR2YW5jZWRDYXRlZ29yaWVzIixmb3JtLGZhbHNlKTsKLSAgICAgIHByb2Nlc3NSZXN1bHRUYWJsZSgiZmluZFNlcnZpY2VzQWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuTk9ERUlEX1NFUlZJQ0VfSU5URVJGQUNFJT4iLGZvcm0sZmFsc2UpOwotICAgICAgcHJvY2Vzc0ZpbmRRdWFsaWZpZXJUYWJsZSgiZmluZFNlcnZpY2VzQWR2YW5jZWRGaW5kUXVhbGlmaWVycyIsZm9ybSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkRm9ybShmb3JtKQotICB7Ci0gICAgaWYgKHByb2Nlc3NGb3JtKGZvcm0pKQotICAgIHsKLSAgICAgIHByb2Nlc3NSZXN1bHRUYWJsZSgiZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRTZXJ2aWNlIiwiPCU9VURESUFjdGlvbklucHV0cy5OT0RFSURfU0VSVklDRSU+Iixmb3JtLGZhbHNlKTsKLSAgICAgIHByb2Nlc3NOYW1lRmluZFF1YWxpZmllcnMoImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkTmFtZSIsZm9ybSk7Ci0gICAgICBwcm9jZXNzSWRlbnRpZmllclRhYmxlKCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZElkZW50aWZpZXJzIixmb3JtKTsKLSAgICAgIHByb2Nlc3NDYXRlZ29yeVRhYmxlKCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZENhdGVnb3JpZXMiLGZvcm0sZmFsc2UpOwotICAgICAgcHJvY2Vzc0ZpbmRRdWFsaWZpZXJUYWJsZSgiZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRGaW5kUXVhbGlmaWVycyIsZm9ybSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKQotICB7Ci0gICAgLy8gU2V0IHRoZSBxdWVyeSBuYW1lCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1ZXJ5TmFtZSIpLnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FKSklPiI7Ci0gICAgdmFyIHNlYXJjaEZvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWFyY2hGb3IiKTsKLSAgICBzZWFyY2hGb3Iuc2VsZWN0ZWRJbmRleCA9IDwlPWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNKSU+OwotICAgIHNldERlZmF1bHRzRm9yRmluZEJ1c2luZXNzZXNGb3JtcygpOwotICAgIHNldERlZmF1bHRzRm9yRmluZFNlcnZpY2VzRm9ybXMoKTsKLSAgICBzZXREZWZhdWx0c0ZvckZpbmRTZXJ2aWNlSW50ZXJmYWNlc0Zvcm1zKCk7Ci0gICAgc2hvd01haW5Gb3JtKHNlYXJjaEZvci52YWx1ZSk7Ci0gIH0KLQotICBmdW5jdGlvbiBzZXRBdXRoZW50aWNhdGlvblNlY3Rpb25EZWZhdWx0cyhhZHZhbmNlZEZvcm0scXVlcnlJdGVtSW5kZXgsaXNPd25lZENoZWNrZWQpCi0gIHsKLTwlCi0gICBTdHJpbmcgcHVibGlzaFVSTCA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCk7Ci0gICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICBTdHJpbmcgcGFzc3dvcmQgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQpOwotJT4KLSAgICBhZHZhbmNlZEZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9PV05FRCU+LmNoZWNrZWQgPSBpc093bmVkQ2hlY2tlZDsKLSAgICBhZHZhbmNlZEZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShwdWJsaXNoVVJMKSU+IjsKLSAgICBhZHZhbmNlZEZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodXNlcklkKSU+IjsKLSAgICBhZHZhbmNlZEZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShwYXNzd29yZCklPiI7Ci0gICAgdG9nZ2xlQWR2YW5jZWRBdXRoZW50aWNhdGlvblNlY3Rpb24ocXVlcnlJdGVtSW5kZXgsaXNPd25lZENoZWNrZWQpOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0QWR2YW5jZWRDb21tb25TZWN0aW9uRGVmYXVsdHMoZm9ybSxtYXhTZWFyY2hTZXQsbWF4UmVzdWx0cykKLSAgewotICAgIGZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9NQVhfU0VBUkNIX1NFVCU+LnZhbHVlID0gbWF4U2VhcmNoU2V0OwotICAgIGZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9NQVhfUkVTVUxUUyU+LnZhbHVlID0gbWF4UmVzdWx0czsKLSAgfQotCi0gIGZ1bmN0aW9uIHNldERlZmF1bHRzRm9yRmluZEJ1c2luZXNzZXNGb3JtcygpCi0gIHsKLSAgICAvLyBJbml0aWFsaXplIHRoZSBmaW5kQnVzaW5lc3NlcyBmb3JtLgotPCUKLSAgIFN0cmluZyBmaW5kQnVzaW5lc3Nlc1N0eWxlSW5kZXggPSAoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTKTsKLSU+Ci0gICAgZG9jdW1lbnQuZm9ybXNbc3R5bGVGb3Jtc1s8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyU+XV0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTJT5bPCU9ZmluZEJ1c2luZXNzZXNTdHlsZUluZGV4JT5dLmNoZWNrZWQgPSB0cnVlOwotICAgIHZhciBmaW5kQnVzaW5lc3Nlc1NpbXBsZVNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaW5kQnVzaW5lc3Nlc1NlY3Rpb25JZHNbPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUlPl0pOwotICAgIHZhciBmaW5kQnVzaW5lc3Nlc1NpbXBsZUZvcm0gPSBmaW5kQnVzaW5lc3Nlc1NpbXBsZVNlY3Rpb24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKS5pdGVtKDApOwotICAgIGZpbmRCdXNpbmVzc2VzU2ltcGxlRm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FKSklPiI7Ci0KLSAgICAvLyBBZHZhbmNlZCBmb3JtIGRldGFpbHMuCi0gICAgdmFyIGZpbmRCdXNpbmVzc2VzQWR2YW5jZWRTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmluZEJ1c2luZXNzZXNTZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQURWQU5DRUQlPl0pOwotICAgIHZhciBmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkRm9ybSA9IGZpbmRCdXNpbmVzc2VzQWR2YW5jZWRTZWN0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIikuaXRlbSgwKTsKLSAgICB2YXIgaXNPd25lZENoZWNrZWQgPSA8JT0oZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX09XTkVEKSAhPSBudWxsKSU+OwotICAgIHNldEF1dGhlbnRpY2F0aW9uU2VjdGlvbkRlZmF1bHRzKGZpbmRCdXNpbmVzc2VzQWR2YW5jZWRGb3JtLDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTJT4saXNPd25lZENoZWNrZWQpOwotPCUKLSAgIFZlY3RvciBidXNOYW1lVmVjdG9yID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTkFNRVMpOwotICAgaWYgKGJ1c05hbWVWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8YnVzTmFtZVZlY3Rvci5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgTmFtZSBuYW1lID0gKE5hbWUpYnVzTmFtZVZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZExhbmd1YWdlSW5wdXRSb3coImZpbmRCdXNpbmVzc2VzQWR2YW5jZWROYW1lcyIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX05BTUVfVEVYVF9WQUxVRSIpKSU+Iik7Ci0gICAgc2V0TGFuZ3VhZ2VJbnB1dFJvd1NldHRpbmdzKCJmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkTmFtZXMiLDwlPWklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUuZ2V0TGFuZygpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUuZ2V0VGV4dCgpKSU+Iik7Ci08JQotICAgICB9Ci0gICB9Ci0KLSAgIElkZW50aWZpZXJCYWcgYnVzSWRCYWcgPSAoSWRlbnRpZmllckJhZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfSURFTlRJRklFUlMpOwotICAgaWYgKGJ1c0lkQmFnICE9IG51bGwpCi0gICB7Ci0gICAgIFZlY3RvciBrZXllZFJlZmVyZW5jZVZlY3RvciA9IGJ1c0lkQmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCk7Ci0gICAgIGZvciAoaW50IGk9MDtpPGtleWVkUmVmZXJlbmNlVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlrZXllZFJlZmVyZW5jZVZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZElkZW50aWZpZXJSb3coImZpbmRCdXNpbmVzc2VzQWR2YW5jZWRJZGVudGlmaWVycyIpOwotICAgIHNldElkZW50aWZpZXJSb3dTZXR0aW5ncygiZmluZEJ1c2luZXNzZXNBZHZhbmNlZElkZW50aWZpZXJzIiw8JT1pJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRUTW9kZWxLZXkoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlOYW1lKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0S2V5VmFsdWUoKSklPiIpOwotPCUKLSAgICAgfQotICAgfQotCi0gICBDYXRlZ29yeUJhZyBidXNDYXRCYWcgPSAoQ2F0ZWdvcnlCYWcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0NBVEVHT1JJRVMpOwotICAgaWYgKGJ1c0NhdEJhZyAhPSBudWxsKQotICAgewotICAgICBWZWN0b3Iga2V5ZWRSZWZlcmVuY2VWZWN0b3IgPSBidXNDYXRCYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8a2V5ZWRSZWZlcmVuY2VWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gKEtleWVkUmVmZXJlbmNlKWtleWVkUmVmZXJlbmNlVmVjdG9yLmVsZW1lbnRBdChpKTsKLSU+Ci0gICAgYWRkQ2F0ZWdvcnlSb3coImZpbmRCdXNpbmVzc2VzQWR2YW5jZWRDYXRlZ29yaWVzIik7Ci0gICAgc2V0Q2F0ZWdvcnlSb3dTZXR0aW5ncygiZmluZEJ1c2luZXNzZXNBZHZhbmNlZENhdGVnb3JpZXMiLDwlPWklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldFRNb2RlbEtleSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleU5hbWUoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlWYWx1ZSgpKSU+Iik7Ci08JQotICAgICB9Ci0gICB9Ci0KLSAgIFZlY3RvciBidXNTZXJ2aWNlSW50ZXJmYWNlcyA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX1NFUlZJQ0VfSU5URVJGQUNFUyk7Ci0gICBWZWN0b3IgYnVzU2VydmljZUludGVyZmFjZXNDb3B5ID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfU0VSVklDRV9JTlRFUkZBQ0VTX0NPUFkpOwotICAgaWYgKGJ1c1NlcnZpY2VJbnRlcmZhY2VzICE9IG51bGwpCi0gICB7Ci0gICAgIGlmIChidXNTZXJ2aWNlSW50ZXJmYWNlc0NvcHkgPT0gbnVsbCkKLSAgICAgICBidXNTZXJ2aWNlSW50ZXJmYWNlc0NvcHkgPSBuZXcgVmVjdG9yKCk7Ci0gICAgIGVsc2UKLSAgICAgICBidXNTZXJ2aWNlSW50ZXJmYWNlc0NvcHkucmVtb3ZlQWxsRWxlbWVudHMoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8YnVzU2VydmljZUludGVyZmFjZXMuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWJ1c1NlcnZpY2VJbnRlcmZhY2VzLmVsZW1lbnRBdChpKTsKLSAgICAgICBpbnQgdGFyZ2V0Tm9kZUlkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Tm9kZUlkKCk7Ci0gICAgICAgaW50IHRhcmdldFRvb2xJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldFRvb2xJZCgpOwotICAgICAgIGludCB0YXJnZXRWaWV3SWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXRWaWV3SWQoKTsKLSAgICAgICBTdHJpbmcgdXJsID0gU2VsZWN0U3ViUXVlcnlJdGVtQWN0aW9uLmdldEFjdGlvbkxpbmsodGFyZ2V0Tm9kZUlkLHRhcmdldFRvb2xJZCx0YXJnZXRWaWV3SWQsc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfU0VSVklDRV9JTlRFUkZBQ0VTLGksVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyxmYWxzZSk7Ci0gICAgICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgYnVzU2VydmljZUludGVyZmFjZXNDb3B5LmFkZEVsZW1lbnQoYnVzU2VydmljZUludGVyZmFjZXMuZWxlbWVudEF0KGkpKTsKLSU+Ci0gICAgYWRkUmVzdWx0Um93KCJmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkU2VydmljZUludGVyZmFjZXMiLDwlPXRhcmdldE5vZGVJZCU+LCI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQodXJsKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSh0TW9kZWwuZ2V0TmFtZVN0cmluZygpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHRNb2RlbC5nZXREZWZhdWx0RGVzY3JpcHRpb25TdHJpbmcoKSklPiIpOwotPCUKLSAgICAgfQotICAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfU0VSVklDRV9JTlRFUkZBQ0VTX0NPUFksYnVzU2VydmljZUludGVyZmFjZXNDb3B5KTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgYnVzU2VydmljZUludGVyZmFjZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgIGJ1c1NlcnZpY2VJbnRlcmZhY2VzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX1NFUlZJQ0VfSU5URVJGQUNFUyxidXNTZXJ2aWNlSW50ZXJmYWNlcyk7Ci0gICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19TRVJWSUNFX0lOVEVSRkFDRVNfQ09QWSxidXNTZXJ2aWNlSW50ZXJmYWNlc0NvcHkpOwotICAgfQotCi0gICBEaXNjb3ZlcnlVUkxzIGJ1c0Rpc2NvdmVyeVVSTHMgPSAoRGlzY292ZXJ5VVJMcylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRElTQ09WRVJZVVJMUyk7Ci0gICBpZiAoYnVzRGlzY292ZXJ5VVJMcyAhPSBudWxsKQotICAgewotICAgICBWZWN0b3IgZGlzY292ZXJ5VVJMVmVjdG9yID0gYnVzRGlzY292ZXJ5VVJMcy5nZXREaXNjb3ZlcnlVUkxWZWN0b3IoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8ZGlzY292ZXJ5VVJMVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBEaXNjb3ZlcnlVUkwgZGlzY292ZXJ5VVJMID0gKERpc2NvdmVyeVVSTClkaXNjb3ZlcnlVUkxWZWN0b3IuZWxlbWVudEF0KGkpOwotJT4KLSAgICBhZGREaXNjb3ZlcnlVUkxSb3coImZpbmRCdXNpbmVzc2VzQWR2YW5jZWREaXNjb3ZlcnlVUkxzIik7Ci0gICAgc2V0RGlzY292ZXJ5VVJMUm93U2V0dGluZ3MoImZpbmRCdXNpbmVzc2VzQWR2YW5jZWREaXNjb3ZlcnlVUkxzIiw8JT1pJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShkaXNjb3ZlcnlVUkwuZ2V0VGV4dCgpKSU+Iik7Ci08JQotICAgICB9Ci0gICB9Ci0KLSAgIEZpbmRRdWFsaWZpZXJzIGJ1c0ZpbmRRdWFsaWZpZXJzID0gKEZpbmRRdWFsaWZpZXJzKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19GSU5EUVVBTElGSUVSUyk7Ci0gICBpZiAoYnVzRmluZFF1YWxpZmllcnMgIT0gbnVsbCkKLSAgIHsKLSAgICAgVmVjdG9yIGZpbmRRdWFsaWZpZXJWZWN0b3IgPSBidXNGaW5kUXVhbGlmaWVycy5nZXRGaW5kUXVhbGlmaWVyVmVjdG9yKCk7Ci0gICAgIGZvciAoaW50IGk9MDtpPGZpbmRRdWFsaWZpZXJWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIEZpbmRRdWFsaWZpZXIgZmluZFF1YWxpZmllciA9IChGaW5kUXVhbGlmaWVyKWZpbmRRdWFsaWZpZXJWZWN0b3IuZWxlbWVudEF0KGkpOwotJT4KLSAgICBzZXRGaW5kUXVhbGlmaWVyKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZmluZFF1YWxpZmllci5nZXRUZXh0KCkpJT4iLCJmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkTmFtZXMiLCJmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkQ2F0ZWdvcmllcyIsImZpbmRCdXNpbmVzc2VzQWR2YW5jZWRGaW5kUXVhbGlmaWVycyIpOwotPCUKLSAgICAgfQotICAgfQotJT4KLSAgICBzZXRBZHZhbmNlZENvbW1vblNlY3Rpb25EZWZhdWx0cyhmaW5kQnVzaW5lc3Nlc0FkdmFuY2VkRm9ybSwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX01BWF9TRUFSQ0hfU0VUKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19NQVhfUkVTVUxUUykpJT4iKTsKLQotICAgIC8vIFVVSUQgZm9ybSBkZXRhaWxzLgotICAgIHZhciBmaW5kQnVzaW5lc3Nlc1VVSURTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmluZEJ1c2luZXNzZXNTZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfVVVJRCU+XSk7Ci0gICAgdmFyIGZpbmRCdXNpbmVzc2VzVVVJREZvcm0gPSBmaW5kQnVzaW5lc3Nlc1VVSURTZWN0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIikuaXRlbSgwKTsKLSAgICBmaW5kQnVzaW5lc3Nlc1VVSURGb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9LRVklPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVkpKSU+IjsKLQotICAgIHNob3dGaW5kRm9ybSg8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyU+LDwlPWZpbmRCdXNpbmVzc2VzU3R5bGVJbmRleCU+KTsKLSAgfQotCi0gIGZ1bmN0aW9uIHNldERlZmF1bHRzRm9yRmluZFNlcnZpY2VzRm9ybXMoKQotICB7Ci0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZmluZFNlcnZpY2VzIGZvcm0uCi08JQotICAgU3RyaW5nIGZpbmRTZXJ2aWNlc1N0eWxlSW5kZXggPSAoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFUyk7Ci0lPgotICAgIGRvY3VtZW50LmZvcm1zW3N0eWxlRm9ybXNbPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTJT5dXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTJT5bPCU9ZmluZFNlcnZpY2VzU3R5bGVJbmRleCU+XS5jaGVja2VkID0gdHJ1ZTsKLSAgICB2YXIgZmluZFNlcnZpY2VzU2ltcGxlU2VjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpbmRTZXJ2aWNlc1NlY3Rpb25JZHNbPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUlPl0pOwotICAgIHZhciBmaW5kU2VydmljZXNTaW1wbGVGb3JtID0gZmluZFNlcnZpY2VzU2ltcGxlU2VjdGlvbi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpLml0ZW0oMCk7Ci0gICAgZmluZFNlcnZpY2VzU2ltcGxlRm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX05BTUUlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfTkFNRSkpJT4iOwotCi0gICAgLy8gQWR2YW5jZWQgZm9ybSBkZXRhaWxzLgotICAgIHZhciBmaW5kU2VydmljZXNBZHZhbmNlZFNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaW5kU2VydmljZXNTZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQURWQU5DRUQlPl0pOwotICAgIHZhciBmaW5kU2VydmljZXNBZHZhbmNlZEZvcm0gPSBmaW5kU2VydmljZXNBZHZhbmNlZFNlY3Rpb24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKS5pdGVtKDApOwotICAgIHZhciBpc093bmVkQ2hlY2tlZCA9IDwlPShmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9PV05FRCkgIT0gbnVsbCklPjsKLSAgICBzZXRBdXRoZW50aWNhdGlvblNlY3Rpb25EZWZhdWx0cyhmaW5kU2VydmljZXNBZHZhbmNlZEZvcm0sPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTJT4saXNPd25lZENoZWNrZWQpOwotPCUKLSAgIFZlY3RvciBzZXJ2aWNlQnVzaW5lc3MgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0JVU0lORVNTKTsKLSAgIFZlY3RvciBzZXJ2aWNlQnVzaW5lc3NDb3B5ID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTU19DT1BZKTsKLSAgIGlmIChzZXJ2aWNlQnVzaW5lc3MgIT0gbnVsbCkKLSAgIHsKLSAgICAgaWYgKHNlcnZpY2VCdXNpbmVzc0NvcHkgPT0gbnVsbCkKLSAgICAgICBzZXJ2aWNlQnVzaW5lc3NDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgICBlbHNlCi0gICAgICAgc2VydmljZUJ1c2luZXNzQ29weS5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlQnVzaW5lc3Muc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KXNlcnZpY2VCdXNpbmVzcy5lbGVtZW50QXQoaSk7Ci0gICAgICAgaW50IHRhcmdldE5vZGVJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldE5vZGVJZCgpOwotICAgICAgIGludCB0YXJnZXRUb29sSWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXRUb29sSWQoKTsKLSAgICAgICBpbnQgdGFyZ2V0Vmlld0lkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Vmlld0lkKCk7Ci0gICAgICAgU3RyaW5nIHVybCA9IFNlbGVjdFN1YlF1ZXJ5SXRlbUFjdGlvbi5nZXRBY3Rpb25MaW5rKHRhcmdldE5vZGVJZCx0YXJnZXRUb29sSWQsdGFyZ2V0Vmlld0lkLHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1MsaSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyxmYWxzZSk7Ci0gICAgICAgQnVzaW5lc3NFbnRpdHkgYmUgPSAoQnVzaW5lc3NFbnRpdHkpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgc2VydmljZUJ1c2luZXNzQ29weS5hZGRFbGVtZW50KHNlcnZpY2VCdXNpbmVzcy5lbGVtZW50QXQoaSkpOwotJT4KLSAgICBhZGRSZXN1bHRSb3coImZpbmRTZXJ2aWNlc0FkdmFuY2VkQnVzaW5lc3MiLDwlPXRhcmdldE5vZGVJZCU+LCI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQodXJsKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShiZS5nZXREZWZhdWx0TmFtZVN0cmluZygpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGJlLmdldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygpKSU+Iik7Ci08JQotICAgICB9Ci0gICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0JVU0lORVNTX0NPUFksc2VydmljZUJ1c2luZXNzQ29weSk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgIHNlcnZpY2VCdXNpbmVzcyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgc2VydmljZUJ1c2luZXNzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1Msc2VydmljZUJ1c2luZXNzKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1NfQ09QWSxzZXJ2aWNlQnVzaW5lc3NDb3B5KTsKLSAgIH0KLQotICAgVmVjdG9yIHNlcnZpY2VOYW1lVmVjdG9yID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9OQU1FUyk7Ci0gICBpZiAoc2VydmljZU5hbWVWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8c2VydmljZU5hbWVWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIE5hbWUgbmFtZSA9IChOYW1lKXNlcnZpY2VOYW1lVmVjdG9yLmVsZW1lbnRBdChpKTsKLSU+Ci0gICAgYWRkTGFuZ3VhZ2VJbnB1dFJvdygiZmluZFNlcnZpY2VzQWR2YW5jZWROYW1lcyIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX05BTUVfVEVYVF9WQUxVRSIpKSU+Iik7Ci0gICAgc2V0TGFuZ3VhZ2VJbnB1dFJvd1NldHRpbmdzKCJmaW5kU2VydmljZXNBZHZhbmNlZE5hbWVzIiw8JT1pJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShuYW1lLmdldExhbmcoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShuYW1lLmdldFRleHQoKSklPiIpOwotPCUKLSAgICAgfQotICAgfQotCi0gICBDYXRlZ29yeUJhZyBzZXJ2aWNlQ2F0QmFnID0gKENhdGVnb3J5QmFnKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0NBVEVHT1JJRVMpOwotICAgaWYgKHNlcnZpY2VDYXRCYWcgIT0gbnVsbCkKLSAgIHsKLSAgICAgVmVjdG9yIGtleWVkUmVmZXJlbmNlVmVjdG9yID0gc2VydmljZUNhdEJhZy5nZXRLZXllZFJlZmVyZW5jZVZlY3RvcigpOwotICAgICBmb3IgKGludCBpPTA7aTxrZXllZFJlZmVyZW5jZVZlY3Rvci5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSAoS2V5ZWRSZWZlcmVuY2Upa2V5ZWRSZWZlcmVuY2VWZWN0b3IuZWxlbWVudEF0KGkpOwotJT4KLSAgICBhZGRDYXRlZ29yeVJvdygiZmluZFNlcnZpY2VzQWR2YW5jZWRDYXRlZ29yaWVzIik7Ci0gICAgc2V0Q2F0ZWdvcnlSb3dTZXR0aW5ncygiZmluZFNlcnZpY2VzQWR2YW5jZWRDYXRlZ29yaWVzIiw8JT1pJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRUTW9kZWxLZXkoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlOYW1lKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0S2V5VmFsdWUoKSklPiIpOwotPCUKLSAgICAgfQotICAgfQotCi0gICBWZWN0b3Igc2VydmljZVNlcnZpY2VJbnRlcmZhY2VzID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVMpOwotICAgVmVjdG9yIHNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlc0NvcHkgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFU19DT1BZKTsKLSAgIGlmIChzZXJ2aWNlU2VydmljZUludGVyZmFjZXMgIT0gbnVsbCkKLSAgIHsKLSAgICAgaWYgKHNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlc0NvcHkgPT0gbnVsbCkKLSAgICAgICBzZXJ2aWNlU2VydmljZUludGVyZmFjZXNDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgICBlbHNlCi0gICAgICAgc2VydmljZVNlcnZpY2VJbnRlcmZhY2VzQ29weS5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlU2VydmljZUludGVyZmFjZXMuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KXNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlcy5lbGVtZW50QXQoaSk7Ci0gICAgICAgaW50IHRhcmdldE5vZGVJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldE5vZGVJZCgpOwotICAgICAgIGludCB0YXJnZXRUb29sSWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXRUb29sSWQoKTsKLSAgICAgICBpbnQgdGFyZ2V0Vmlld0lkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Vmlld0lkKCk7Ci0gICAgICAgU3RyaW5nIHVybCA9IFNlbGVjdFN1YlF1ZXJ5SXRlbUFjdGlvbi5nZXRBY3Rpb25MaW5rKHRhcmdldE5vZGVJZCx0YXJnZXRUb29sSWQsdGFyZ2V0Vmlld0lkLHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTLGksVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyxmYWxzZSk7Ci0gICAgICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgc2VydmljZVNlcnZpY2VJbnRlcmZhY2VzQ29weS5hZGRFbGVtZW50KHNlcnZpY2VTZXJ2aWNlSW50ZXJmYWNlcy5lbGVtZW50QXQoaSkpOwotJT4KLSAgICBhZGRSZXN1bHRSb3coImZpbmRTZXJ2aWNlc0FkdmFuY2VkU2VydmljZUludGVyZmFjZXMiLDwlPXRhcmdldE5vZGVJZCU+LCI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQodXJsKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSh0TW9kZWwuZ2V0TmFtZVN0cmluZygpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHRNb2RlbC5nZXREZWZhdWx0RGVzY3JpcHRpb25TdHJpbmcoKSklPiIpOwotPCUKLSAgICAgfQotICAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVNfQ09QWSxzZXJ2aWNlU2VydmljZUludGVyZmFjZXNDb3B5KTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgc2VydmljZVNlcnZpY2VJbnRlcmZhY2VzID0gbmV3IFZlY3RvcigpOwotICAgICBzZXJ2aWNlU2VydmljZUludGVyZmFjZXNDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVMsc2VydmljZVNlcnZpY2VJbnRlcmZhY2VzKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTX0NPUFksc2VydmljZVNlcnZpY2VJbnRlcmZhY2VzQ29weSk7Ci0gICB9Ci0KLSAgIEZpbmRRdWFsaWZpZXJzIHNlcnZpY2VGaW5kUXVhbGlmaWVycyA9IChGaW5kUXVhbGlmaWVycylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9GSU5EUVVBTElGSUVSUyk7Ci0gICBpZiAoc2VydmljZUZpbmRRdWFsaWZpZXJzICE9IG51bGwpCi0gICB7Ci0gICAgIFZlY3RvciBmaW5kUXVhbGlmaWVyVmVjdG9yID0gc2VydmljZUZpbmRRdWFsaWZpZXJzLmdldEZpbmRRdWFsaWZpZXJWZWN0b3IoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8ZmluZFF1YWxpZmllclZlY3Rvci5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgRmluZFF1YWxpZmllciBmaW5kUXVhbGlmaWVyID0gKEZpbmRRdWFsaWZpZXIpZmluZFF1YWxpZmllclZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIHNldEZpbmRRdWFsaWZpZXIoIjwlPUhUTUxVdGlscy5KU01hbmdsZShmaW5kUXVhbGlmaWVyLmdldFRleHQoKSklPiIsImZpbmRTZXJ2aWNlc0FkdmFuY2VkTmFtZXMiLCJmaW5kU2VydmljZXNBZHZhbmNlZENhdGVnb3JpZXMiLCJmaW5kU2VydmljZXNBZHZhbmNlZEZpbmRRdWFsaWZpZXJzIik7Ci08JQotICAgICB9Ci0gICB9Ci0lPgotICAgIHNldEFkdmFuY2VkQ29tbW9uU2VjdGlvbkRlZmF1bHRzKGZpbmRTZXJ2aWNlc0FkdmFuY2VkRm9ybSwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTUFYX1NFQVJDSF9TRVQpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTUFYX1JFU1VMVFMpKSU+Iik7Ci0KLSAgICAvLyBVVUlEIGZvcm0gZGV0YWlscy4KLSAgICB2YXIgZmluZFNlcnZpY2VzVVVJRFNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaW5kU2VydmljZXNTZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfVVVJRCU+XSk7Ci0gICAgdmFyIGZpbmRTZXJ2aWNlc1VVSURGb3JtID0gZmluZFNlcnZpY2VzVVVJRFNlY3Rpb24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKS5pdGVtKDApOwotICAgIGZpbmRTZXJ2aWNlc1VVSURGb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9LRVklPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9TRVJWSUNFX0tFWSkpJT4iOwotCi0gICAgc2hvd0ZpbmRGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyU+LDwlPWZpbmRTZXJ2aWNlc1N0eWxlSW5kZXglPik7Ci0gIH0KLQotICBmdW5jdGlvbiBzZXREZWZhdWx0c0ZvckZpbmRTZXJ2aWNlSW50ZXJmYWNlc0Zvcm1zKCkKLSAgewotICAgIC8vIEluaXRpYWxpemUgdGhlIGZpbmRTZXJ2aWNlSW50ZXJmYWNlcyBmb3JtLgotPCUKLSAgIFN0cmluZyBmaW5kU2VydmljZUludGVyZmFjZXNTdHlsZUluZGV4ID0gKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRV9JTlRFUkZBQ0VTKTsKLSU+Ci0gICAgZG9jdW1lbnQuZm9ybXNbc3R5bGVGb3Jtc1s8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTJT5dXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VfSU5URVJGQUNFUyU+WzwlPWZpbmRTZXJ2aWNlSW50ZXJmYWNlc1N0eWxlSW5kZXglPl0uY2hlY2tlZCA9IHRydWU7Ci0gICAgdmFyIGZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NpbXBsZVNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaW5kU2VydmljZUludGVyZmFjZXNTZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0lNUExFJT5dKTsKLSAgICB2YXIgZmluZFNlcnZpY2VJbnRlcmZhY2VzU2ltcGxlRm9ybSA9IGZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NpbXBsZVNlY3Rpb24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKS5pdGVtKDApOwotICAgIGZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NpbXBsZUZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSkpJT4iOwotCi0gICAgLy8gQWR2YW5jZWQgZm9ybSBkZXRhaWxzLgotICAgIHZhciBmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZFNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaW5kU2VydmljZUludGVyZmFjZXNTZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQURWQU5DRUQlPl0pOwotICAgIHZhciBmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZEZvcm0gPSBmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZFNlY3Rpb24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKS5pdGVtKDApOwotCi0gICAgdmFyIGlzT3duZWRDaGVja2VkID0gPCU9KGZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9PV05FRCkgIT0gbnVsbCklPjsKLSAgICBzZXRBdXRoZW50aWNhdGlvblNlY3Rpb25EZWZhdWx0cyhmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZEZvcm0sPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyU+LGlzT3duZWRDaGVja2VkKTsKLSAgICB2YXIgaXNVc2VTZXJ2aWNlQ2hlY2tlZCA9IDwlPShmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfVVNFX1NFUlZJQ0UpICE9IG51bGwpJT47Ci0gICAgZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRGb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfVVNFX1NFUlZJQ0UlPi5jaGVja2VkID0gaXNVc2VTZXJ2aWNlQ2hlY2tlZDsKLSAgICB0b2dnbGVGaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZFNlcnZpY2VQYXJhbWV0ZXJzKGZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkRm9ybSk7Ci0gICAgZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRGb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FKSklPiI7Ci0KLTwlCi0gICBWZWN0b3Igc2lTZXJ2aWNlID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfU0VSVklDRSk7Ci0gICBWZWN0b3Igc2lTZXJ2aWNlQ29weSA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0VfQ09QWSk7Ci0gICBpZiAoc2lTZXJ2aWNlICE9IG51bGwpCi0gICB7Ci0gICAgIGlmIChzaVNlcnZpY2VDb3B5ID09IG51bGwpCi0gICAgICAgc2lTZXJ2aWNlQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgZWxzZQotICAgICAgIHNpU2VydmljZUNvcHkucmVtb3ZlQWxsRWxlbWVudHMoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8c2lTZXJ2aWNlLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClzaVNlcnZpY2UuZWxlbWVudEF0KGkpOwotICAgICAgIGludCB0YXJnZXROb2RlSWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXROb2RlSWQoKTsKLSAgICAgICBpbnQgdGFyZ2V0VG9vbElkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0VG9vbElkKCk7Ci0gICAgICAgaW50IHRhcmdldFZpZXdJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldFZpZXdJZCgpOwotICAgICAgIFN0cmluZyB1cmwgPSBTZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayh0YXJnZXROb2RlSWQsdGFyZ2V0VG9vbElkLHRhcmdldFZpZXdJZCxzdWJRdWVyeUtleVByb3BlcnR5LmdldFN1YlF1ZXJ5S2V5KCksVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9TRVJWSUNFLGksVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTLGZhbHNlKTsKLSAgICAgICBCdXNpbmVzc1NlcnZpY2UgYnMgPSAoQnVzaW5lc3NTZXJ2aWNlKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgIHNpU2VydmljZUNvcHkuYWRkRWxlbWVudChzaVNlcnZpY2UuZWxlbWVudEF0KGkpKTsKLSU+Ci0gICAgYWRkUmVzdWx0Um93KCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZFNlcnZpY2UiLDwlPXRhcmdldE5vZGVJZCU+LCI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQodXJsKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShicy5nZXREZWZhdWx0TmFtZVN0cmluZygpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGJzLmdldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygpKSU+Iik7Ci08JQotICAgICB9Ci0gICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9TRVJWSUNFX0NPUFksc2lTZXJ2aWNlQ29weSk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgIHNpU2VydmljZSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgc2lTZXJ2aWNlQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0Usc2lTZXJ2aWNlKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1NFUlZJQ0VfQ09QWSxzaVNlcnZpY2VDb3B5KTsKLSAgIH0KLQotICAgSWRlbnRpZmllckJhZyBzaUlkQmFnID0gKElkZW50aWZpZXJCYWcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0lERU5USUZJRVJTKTsKLSAgIGlmIChzaUlkQmFnICE9IG51bGwpCi0gICB7Ci0gICAgIFZlY3RvciBrZXllZFJlZmVyZW5jZVZlY3RvciA9IHNpSWRCYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8a2V5ZWRSZWZlcmVuY2VWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gKEtleWVkUmVmZXJlbmNlKWtleWVkUmVmZXJlbmNlVmVjdG9yLmVsZW1lbnRBdChpKTsKLSU+Ci0gICAgYWRkSWRlbnRpZmllclJvdygiZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRJZGVudGlmaWVycyIpOwotICAgIHNldElkZW50aWZpZXJSb3dTZXR0aW5ncygiZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRJZGVudGlmaWVycyIsPCU9aSU+LCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0VE1vZGVsS2V5KCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0S2V5TmFtZSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleVZhbHVlKCkpJT4iKTsKLTwlCi0gICAgIH0KLSAgIH0KLQotICAgQ2F0ZWdvcnlCYWcgc2lDYXRCYWcgPSAoQ2F0ZWdvcnlCYWcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0NBVEVHT1JJRVMpOwotICAgaWYgKHNpQ2F0QmFnICE9IG51bGwpCi0gICB7Ci0gICAgIFZlY3RvciBrZXllZFJlZmVyZW5jZVZlY3RvciA9IHNpQ2F0QmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCk7Ci0gICAgIGZvciAoaW50IGk9MDtpPGtleWVkUmVmZXJlbmNlVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlrZXllZFJlZmVyZW5jZVZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZENhdGVnb3J5Um93KCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZENhdGVnb3JpZXMiKTsKLSAgICBzZXRDYXRlZ29yeVJvd1NldHRpbmdzKCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZENhdGVnb3JpZXMiLDwlPWklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldFRNb2RlbEtleSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleU5hbWUoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlWYWx1ZSgpKSU+Iik7Ci08JQotICAgICB9Ci0gICB9Ci0KLSAgIEZpbmRRdWFsaWZpZXJzIHNpRmluZFF1YWxpZmllcnMgPSAoRmluZFF1YWxpZmllcnMpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0ZJTkRRVUFMSUZJRVJTKTsKLSAgIGlmIChzaUZpbmRRdWFsaWZpZXJzICE9IG51bGwpCi0gICB7Ci0gICAgIFZlY3RvciBmaW5kUXVhbGlmaWVyVmVjdG9yID0gc2lGaW5kUXVhbGlmaWVycy5nZXRGaW5kUXVhbGlmaWVyVmVjdG9yKCk7Ci0gICAgIGZvciAoaW50IGk9MDtpPGZpbmRRdWFsaWZpZXJWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIEZpbmRRdWFsaWZpZXIgZmluZFF1YWxpZmllciA9IChGaW5kUXVhbGlmaWVyKWZpbmRRdWFsaWZpZXJWZWN0b3IuZWxlbWVudEF0KGkpOwotJT4KLSAgICBzZXRGaW5kUXVhbGlmaWVyKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZmluZFF1YWxpZmllci5nZXRUZXh0KCkpJT4iLCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZE5hbWUiLCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZENhdGVnb3JpZXMiLCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZEZpbmRRdWFsaWZpZXJzIik7Ci08JQotICAgICB9Ci0gICB9Ci0lPgotICAgIHNldEFkdmFuY2VkQ29tbW9uU2VjdGlvbkRlZmF1bHRzKGZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkRm9ybSwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX01BWF9TRUFSQ0hfU0VUKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9NQVhfUkVTVUxUUykpJT4iKTsKLQotICAgIC8vIFVVSUQgZm9ybSBkZXRhaWxzLgotICAgIHZhciBmaW5kU2VydmljZUludGVyZmFjZXNVVUlEU2VjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NlY3Rpb25JZHNbPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9VVUlEJT5dKTsKLSAgICB2YXIgZmluZFNlcnZpY2VJbnRlcmZhY2VzVVVJREZvcm0gPSBmaW5kU2VydmljZUludGVyZmFjZXNVVUlEU2VjdGlvbi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpLml0ZW0oMCk7Ci0gICAgZmluZFNlcnZpY2VJbnRlcmZhY2VzVVVJREZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX0tFWSU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfSU5URVJGQUNFX0tFWSkpJT4iOwotCi0gICAgc2hvd0ZpbmRGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMlPiw8JT1maW5kU2VydmljZUludGVyZmFjZXNTdHlsZUluZGV4JT4pOwotICB9Ci0KLSAgZnVuY3Rpb24gc2hvd01haW5Gb3JtKHNlYXJjaEZvclZhbHVlU3RyaW5nKQotICB7Ci0gICAgY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCk7Ci0gICAgdmFyIHF1ZXJ5SW5mb0l0ZW1MaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1ZXJ5SW5mb0l0ZW1MaXN0Iik7Ci0gICAgdmFyIHNlYXJjaEZvckluZGV4ID0gcGFyc2VJbnQoc2VhcmNoRm9yVmFsdWVTdHJpbmcpOwotICAgIGZvciAodmFyIGk9MDtpPHNlY3Rpb25JZHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAoaSA9PSBzZWFyY2hGb3JJbmRleCkKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkc1tpXSkuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgICAgZWxzZQotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWRzW2ldKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgIH0KLTwlCi0gICBpZiAoc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpLmxlbmd0aCgpIDwgMSkKLSAgIHsKLSU+Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1ZXJ5SW5mb0l0ZW1MaXN0Iikuc3R5bGUuZGlzcGxheSA9ICIiOwotPCUKLSAgIH0KLSU+Ci0gICAgdmFyIGxvYWRTY3JlZW5UYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkU2NyZWVuIik7Ci0gICAgaWYgKGxvYWRTY3JlZW5UYWJsZS5yb3dzLmxlbmd0aCA+IDApCi0gICAgICBsb2FkU2NyZWVuVGFibGUuZGVsZXRlUm93KDApOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluU2NyZWVuIikuc3R5bGUuZGlzcGxheSA9ICIiOwotICB9Ci0KLSAgZnVuY3Rpb24gc2hvd0ZpbmRGb3JtKHF1ZXJ5SXRlbUluZGV4LHN0eWxlKQotICB7Ci0gICAgY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCk7Ci0gICAgdmFyIGZpbmRTZWN0aW9uSWRzOwotICAgIHN3aXRjaCAocXVlcnlJdGVtSW5kZXgpCi0gICAgewotICAgICAgY2FzZSA8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyU+OgotICAgICAgICBmaW5kU2VjdGlvbklkcyA9IGZpbmRCdXNpbmVzc2VzU2VjdGlvbklkczsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyU+OgotICAgICAgICBmaW5kU2VjdGlvbklkcyA9IGZpbmRTZXJ2aWNlc1NlY3Rpb25JZHM7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTJT46Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBmaW5kU2VjdGlvbklkcyA9IGZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NlY3Rpb25JZHM7Ci0gICAgfQotICAgIGZvciAodmFyIGk9MDtpPGZpbmRTZWN0aW9uSWRzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgaWYgKGkgPT0gc3R5bGUpCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpbmRTZWN0aW9uSWRzW2ldKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgICBlbHNlCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpbmRTZWN0aW9uSWRzW2ldKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIHRvZ2dsZUFkdmFuY2VkQXV0aGVudGljYXRpb25TZWN0aW9uKHF1ZXJ5SXRlbUluZGV4LGlzQ2hlY2tlZCkKLSAgewotICAgIGlmIChpc0NoZWNrZWQgJiYgPCU9IXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpJT4pCi0gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhdXRoZW50aWNhdGlvblNlY3Rpb25JZHNbcXVlcnlJdGVtSW5kZXhdKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgZWxzZQotICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXV0aGVudGljYXRpb25TZWN0aW9uSWRzW3F1ZXJ5SXRlbUluZGV4XSkuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotCi0gIGZ1bmN0aW9uIHRvZ2dsZUZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkU2VydmljZVBhcmFtZXRlcnMoZm9ybSkKLSAgewotICAgIHZhciBpc1VzZVNlcnZpY2VDaGVja2VkID0gZm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1VTRV9TRVJWSUNFJT4uY2hlY2tlZDsKLSAgICB2YXIgaXNPd25lZENoZWNrZWQgPSBmb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfT1dORUQlPi5jaGVja2VkOwotICAgIGlmIChpc1VzZVNlcnZpY2VDaGVja2VkKQotICAgIHsKLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZFNlcnZpY2VTZWN0aW9uIikuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkT3duZWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgICAgdG9nZ2xlQWR2YW5jZWRBdXRoZW50aWNhdGlvblNlY3Rpb24oPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyU+LGZhbHNlKTsKLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZE5hbWVGaW5kUXVhbGlmaWVyc1NlY3Rpb24iKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkRmluZFF1YWxpZmllcnNTZWN0aW9uIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZFNlcnZpY2VTZWN0aW9uIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZE93bmVkIikuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgICAgdG9nZ2xlQWR2YW5jZWRBdXRoZW50aWNhdGlvblNlY3Rpb24oPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyU+LGlzT3duZWRDaGVja2VkKTsKLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZE5hbWVGaW5kUXVhbGlmaWVyc1NlY3Rpb24iKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRGaW5kUXVhbGlmaWVyc1NlY3Rpb24iKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgfQotICB9Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIiBvblVubG9hZD0iY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCkiPgotICA8ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8dGFibGUgaWQ9ImxvYWRTY3JlZW4iPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfTE9BRF9JTl9QUk9HUkVTUyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgICA8ZGl2IGlkPSJtYWluU2NyZWVuIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci08JQotICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gInVkZGkvaW1hZ2VzL2ZpbmRfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgIFN0cmluZyB0aXRsZTsKLSAgIC8vVGhlIEpTUCB2YWxpZGF0b3IgY2xhaW1zIHRoaXMgc3ViUXVlcnlLZXkgdmFyaWFibGUgZGVjbGFyYXRpb24gaXMKLSAgIC8vaW52YWxpZCwgYnV0IHJlbW92aW5nIGl0IGNhdXNlcyB0aGUgSlNQIG5vdCB0byBjb21waWxlIG9uIEpldHR5LgotICAgU3RyaW5nIHN1YlF1ZXJ5S2V5ID0gc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpOwotICAgaWYgKHN1YlF1ZXJ5S2V5ICE9IG51bGwgJiYgc3ViUXVlcnlLZXkubGVuZ3RoKCkgPiAwKQotICAgewotICAgICBpbnQgcXVlcnlJdGVtID0gSW50ZWdlci5wYXJzZUludCgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNKSk7Ci0gICAgIHN3aXRjaCAocXVlcnlJdGVtKQotICAgICB7Ci0gICAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUzoKLSAgICAgICAgIHRpdGxlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9TVUJRVUVSWSIsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0JVU0lORVNTRVMiKSk7Ci0gICAgICAgICBicmVhazsKLSAgICAgICBjYXNlIFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUzoKLSAgICAgICAgIHRpdGxlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9TVUJRVUVSWSIsdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX1NFUlZJQ0VTIikpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTOgotICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICB0aXRsZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfU1VCUVVFUlkiLHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9TRVJWSUNFX0lOVEVSRkFDRVMiKSk7Ci0gICAgIH0KLSAgIH0KLSAgIGVsc2UKLSAgICAgdGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX0ZJTkQiKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvdWRkaS9mb3Jtcy9maW5kZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgICA8bGFiZWwgZm9yPSJxdWVyeU5hbWUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1FVRVJZX05BTUUiKSU+PC9sYWJlbD4KLTwlCi0gICBpZiAoIWZvcm1Ub29sUEkuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSkpCi0gICB7Ci0lPgotICAgICAgICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotPCUKLSAgIH0KLSU+Ci0gICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZD4gPGlucHV0IGlkPSJxdWVyeU5hbWUiIHR5cGU9InRleHQiIHZhbHVlPSI8JT1IVE1MVXRpbHMuY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzU3RyaWN0KHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJERUZBVUxUX1FVRVJZX05BTUUiKSklPiIgY2xhc3M9InRleHRlbnRlciI+IDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgICAgPGRpdiBpZD0icXVlcnlJbmZvSXRlbUxpc3QiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgdmFsaWduPSJtaWRkbGUiIG5vd3JhcCBoZWlnaHQ9NDA+Ci0gICAgICAgICAgICAgIDxsYWJlbCBmb3I9InNlYXJjaEZvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0VBUkNIX0ZPUiIpJT48L2xhYmVsPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgbm93cmFwIGhlaWdodD00MD4KLSAgICAgICAgICAgICAgPHNlbGVjdCBpZD0ic2VhcmNoRm9yIiBvbkNoYW5nZT0ic2hvd01haW5Gb3JtKHRoaXMudmFsdWUpIiBjbGFzcz0ic2VsZWN0bGlzdCI+Ci0gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMlPiI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0JVU0lORVNTRVMiKSU+Ci0gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTJT4iPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9TRVJWSUNFUyIpJT4KLSAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTJT4iPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9TRVJWSUNFX0lOVEVSRkFDRVMiKSU+Ci0gICAgICAgICAgICAgIDwvc2VsZWN0PgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCB3aWR0aD0iOTAlIiBoZWlnaHQ9NDA+Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvUmVnRmluZEJ1c2luZXNzZXNGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZXNGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZUludGVyZmFjZXNGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgc2V0RGVmYXVsdHMoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFiYWQyYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlLZXlQcm9wZXJ0eSIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlN1YlF1ZXJ5S2V5UHJvcGVydHkiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIC8vIHNlbGVjdGVkTm9kZSBjb3VsZCBiZSB0aGUgcmVnaXN0cnkgb3IgcXVlcnkgbm9kZXMuCi0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSk7Ci0lPgotPGRpdiBpZD0iZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZEFjdGlvbkpTUC5qc3AiKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgb25TdWJtaXQ9InJldHVybiBwcm9jZXNzRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRGb3JtKHRoaXMpIj4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSU+Ij4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0dFVCU+Ij4gICAgCi0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5ORVdfU1VCUVVFUllfSU5JVElBVEVEJT4iPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX1FVRVJZX0lURU0lPiI+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9OQU1FJT4iPgotICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iPiA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9GSU5EX0FEVkFOQ0VEX0RFU0MiKSU+IDwvdGQ+Ci0gICAgICA8L3RyPgotICAgICAgPHRyPgotICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJpbnB1dF9maW5kX3NlcnZpY2VfaW50ZXJmYWNlX2FkdmFuY2VfdXNlX3NlcnZpY2UiIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfVVNFX1NFUlZJQ0UlPiIgb25DbGljaz0idG9nZ2xlRmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRTZXJ2aWNlUGFyYW1ldGVycyh0aGlzLmZvcm0pIj48bGFiZWwgZm9yPSJpbnB1dF9maW5kX3NlcnZpY2VfaW50ZXJmYWNlX2FkdmFuY2VfdXNlX3NlcnZpY2UiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VTRV9TRVJWSUNFIiklPjwvbGFiZWw+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci08JQotICAgU3RyaW5nW10gc2VydmljZVNwZWNpZmljSW5mbyA9IHsiRk9STV9MQUJFTF9TRVJWSUNFIixCb29sZWFuLkZBTFNFLnRvU3RyaW5nKCksU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTKSwiZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWQiLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfU0VSVklDRX07Ci0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkU2VydmljZSIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKHNlcnZpY2VTcGVjaWZpY0luZm8pOwotJT4KLTxkaXYgaWQ9ImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkU2VydmljZVNlY3Rpb24iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL3VkZGlPYmplY3RzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvZGl2PgotICAgIDxkaXYgaWQ9ImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkT3duZWQiPgotICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBoZWlnaHQ9MzUgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iaW5wdXRfZmluZF9zZXJ2aWNlX2ludGVyZmFjZV9hZHZhbmNlX293bmVkIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX09XTkVEJT4iIG9uQ2xpY2s9InRvZ2dsZUFkdmFuY2VkQXV0aGVudGljYXRpb25TZWN0aW9uKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMlPix0aGlzLmNoZWNrZWQpIj4KLSAgICAgICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X2ZpbmRfc2VydmljZV9pbnRlcmZhY2VfYWR2YW5jZV9vd25lZCI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfT1dORUQiKSU+PC9sYWJlbD4KLSAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L2Rpdj4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkQXV0aGVudGljYXRpb24iKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvYXV0aGVudGljYXRpb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDxkaXYgaWQ9ImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkTmFtZSI+Ci0gICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgICA8bGFiZWwgZm9yPSJpbnB1dF9maW5kX3NlcnZpY2VfaW50ZXJmYWNlX2FkdmFuY2VkX25hbWUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC9sYWJlbD4KLTwlCi0gICBpZiAoIWZvcm1Ub29sUEkuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSkpCi0gICB7Ci0lPgotICAgICAgICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotPCUKLSAgIH0KLSU+Ci0gICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X2ZpbmRfc2VydmljZV9pbnRlcmZhY2VfYWR2YW5jZWRfbmFtZSIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FJT4iIGNsYXNzPSJ0ZXh0ZW50ZXIiPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPGRpdiBpZD0iZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWROYW1lRmluZFF1YWxpZmllcnNTZWN0aW9uIj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9uYW1lc19maW5kUXVhbGlmaWVyc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2Rpdj4KLSAgICA8L2Rpdj4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkSWRlbnRpZmllcnMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvaWRlbnRpZmllcnNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRDYXRlZ29yaWVzIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2NhdGVnb3JpZXNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZFNlcnZpY2VJbnRlcmZhY2VzQWR2YW5jZWRGaW5kUXVhbGlmaWVycyIpOwotJT4KLTxkaXYgaWQ9ImZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkRmluZFF1YWxpZmllcnNTZWN0aW9uIj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9maW5kUXVhbGlmaWVyc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2Rpdj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9hZHZhbmNlZENvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZm9ybT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc0Zvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc0Zvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWVkOWM0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZUludGVyZmFjZXNGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+Ci08ZGl2IGlkPSJmaW5kU2VydmljZUludGVyZmFjZXMiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gbmFtZT0iZmluZFNlcnZpY2VJbnRlcmZhY2VzU3R5bGUiPgotICAgIDx0YWJsZT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkPiA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TRUFSQ0hfVFlQRSIpJT4gPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJyYWRpb19maW5kX3NlcnZpY2VfaW50ZXJmYWNlX3NpbXBsZSIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMlPiIgb25DbGljaz0ic2hvd0ZpbmRGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMlPiw8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NJTVBMRSU+KSI+PGxhYmVsIGZvcj0icmFkaW9fZmluZF9zZXJ2aWNlX2ludGVyZmFjZV9zaW1wbGUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1JBRElPX1NJTVBMRSIpJT48L2xhYmVsPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InJhZGlvX2ZpbmRfc2VydmljZV9pbnRlcmZhY2VfYWR2YW5jZSIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMlPiIgb25DbGljaz0ic2hvd0ZpbmRGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMlPiw8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0FEVkFOQ0VEJT4pIj48bGFiZWwgZm9yPSJyYWRpb19maW5kX3NlcnZpY2VfaW50ZXJmYWNlX2FkdmFuY2UiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1JBRElPX0FEVkFOQ0VEIiklPjwvbGFiZWw+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0icmFkaW9fZmluZF9zZXJ2aWNlX2ludGVyZmFjZV91dWlkIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VfSU5URVJGQUNFUyU+IiBvbkNsaWNrPSJzaG93RmluZEZvcm0oPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyU+LDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfVVVJRCU+KSI+PGxhYmVsIGZvcj0icmFkaW9fZmluZF9zZXJ2aWNlX2ludGVyZmFjZV91dWlkIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9SQURJT19VVUlEIiklPjwvbGFiZWw+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZm9ybT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZUludGVyZmFjZXNTaW1wbGVGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZEZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJmaW5kU2VydmljZUludGVyZmFjZVVVSUQiKTsKLSAgIFN0cmluZ1tdIG90aGVyUHJvcGVydGllcyA9IHsidWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlVVVJREFjdGlvbkpTUC5qc3AiLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9TRVJWSUNFX0lOVEVSRkFDRV9LRVksIkZPUk1fTEFCRUxfRklORF9TRVJWSUNFX0lOVEVSRkFDRV9VVUlEX0RFU0MifTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhvdGhlclByb3BlcnRpZXMpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9SZWdGaW5kVVVJREZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9kaXY+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzU2ltcGxlRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzU2ltcGxlRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNTkzNGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc1NpbXBsZUZvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlLZXlQcm9wZXJ0eSIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlN1YlF1ZXJ5S2V5UHJvcGVydHkiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIC8vIHNlbGVjdGVkTm9kZSBjb3VsZCBiZSB0aGUgcmVnaXN0cnkgb3IgcXVlcnkgbm9kZXMuCi0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSk7Ci0lPgotPGRpdiBpZD0iZmluZFNlcnZpY2VJbnRlcmZhY2VzU2ltcGxlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvUmVnRmluZFNlcnZpY2VJbnRlcmZhY2VzU2ltcGxlQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIHByb2Nlc3NGb3JtKHRoaXMpIj4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0tFWSU+Ij4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUlPiI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0xMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRklORF9TRVJWSUNFX0lOVEVSRkFDRVNfU0lNUExFX0RFU0MiKSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTMwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8bGFiZWwgZm9yPSJpbnB1dF9maW5kX3NlcnZpY2VfaW50ZXJmYWNlc19zaW1wbGVfbmFtZSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTkFNRSIpJT48L2xhYmVsPgotPCUKLSAgIGlmICghZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSkpCi0gICB7Ci0lPgotICAgICAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLTwlCi0gICB9Ci0lPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkPiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X2ZpbmRfc2VydmljZV9pbnRlcmZhY2VzX3NpbXBsZV9uYW1lIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FJT4iIGNsYXNzPSJ0ZXh0ZW50ZXIiPiA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8L2Zvcm0+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZXNBZHZhbmNlZEZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRTZXJ2aWNlc0FkdmFuY2VkRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2OTc2YTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRTZXJ2aWNlc0FkdmFuY2VkRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlLZXlQcm9wZXJ0eSIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlN1YlF1ZXJ5S2V5UHJvcGVydHkiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPGRpdiBpZD0iZmluZFNlcnZpY2VzQWR2YW5jZWQiPgotICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL1JlZ0ZpbmRTZXJ2aWNlc0FkdmFuY2VkQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIHByb2Nlc3NGaW5kU2VydmljZXNBZHZhbmNlZEZvcm0odGhpcykiPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZJT4iPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfR0VUJT4iPiAgICAKLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLk5FV19TVUJRVUVSWV9JTklUSUFURUQlPiI+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5ORVdfU1VCUVVFUllfUVVFUllfSVRFTSU+Ij4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUlPiI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5MCUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRklORF9BRFZBTkNFRF9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBoZWlnaHQ9MzUgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImlucHV0X2ZpbmRfc2VydmljZXNfYWR2YW5jZV9vd25lZCIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9PV05FRCU+IiBvbkNsaWNrPSJ0b2dnbGVBZHZhbmNlZEF1dGhlbnRpY2F0aW9uU2VjdGlvbig8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVMlPix0aGlzLmNoZWNrZWQpIj4KLSAgICAgICAgICA8bGFiZWwgZm9yPSJpbnB1dF9maW5kX3NlcnZpY2VzX2FkdmFuY2Vfb3duZWQiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX09XTkVEIiklPjwvbGFiZWw+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJmaW5kU2VydmljZXNBZHZhbmNlZEF1dGhlbnRpY2F0aW9uIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBTdHJpbmdbXSBidXNTcGVjaWZpY0luZm8gPSB7IkZPUk1fTEFCRUxfQlVTSU5FU1MiLEJvb2xlYW4uRkFMU0UudG9TdHJpbmcoKSxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyksImZpbmRTZXJ2aWNlc0FkdmFuY2VkIixVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1N9OwotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJmaW5kU2VydmljZXNBZHZhbmNlZEJ1c2luZXNzIik7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoYnVzU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvdWRkaU9iamVjdHNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZFNlcnZpY2VzQWR2YW5jZWROYW1lcyIpOwotICAgU3RyaW5nW10gbmFtZVNwZWNpZmljSW5mbyA9IHsiRk9STV9MQUJFTF9OQU1FUyIsIkZPUk1fTEFCRUxfTkFNRSIsQm9vbGVhbi5GQUxTRS50b1N0cmluZygpfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhuYW1lU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvbGFuZ3VhZ2VJbnB1dF90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJmaW5kU2VydmljZXNBZHZhbmNlZENhdGVnb3JpZXMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvY2F0ZWdvcmllc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgU3RyaW5nW10gc2lTcGVjaWZpY0luZm8gPSB7IkZPUk1fTEFCRUxfU0VSVklDRV9JTlRFUkZBQ0VTIixCb29sZWFuLkZBTFNFLnRvU3RyaW5nKCksU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyksImZpbmRTZXJ2aWNlc0FkdmFuY2VkIixVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfU0VSVklDRV9JTlRFUkZBQ0VTfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZFNlcnZpY2VzQWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlcyIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKHNpU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvdWRkaU9iamVjdHNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZFNlcnZpY2VzQWR2YW5jZWRGaW5kUXVhbGlmaWVycyIpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9maW5kUXVhbGlmaWVyc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvYWR2YW5jZWRDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8L2Zvcm0+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZXNGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZXNGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0ZjM5My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnRmluZFNlcnZpY2VzRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPGRpdiBpZD0iZmluZFNlcnZpY2VzIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDxmb3JtIG5hbWU9ImZpbmRTZXJ2aWNlc1N0eWxlIj4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0VBUkNIX1RZUEUiKSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgICAgPHRyPgotICAgICAgICA8dGQ+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0icmFkaW9fZmluZF9zZXJ2aWNlX3NpbXBsZSIgY2xhc3M9InJhZGlvIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTJT4iIG9uQ2xpY2s9InNob3dGaW5kRm9ybSg8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVMlPiw8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NJTVBMRSU+KSI+PGxhYmVsIGZvcj0icmFkaW9fZmluZF9zZXJ2aWNlX3NpbXBsZSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fUkFESU9fU0lNUExFIiklPjwvbGFiZWw+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0icmFkaW9fZmluZF9zZXJ2aWNlX2FkdmFuY2UiIGNsYXNzPSJyYWRpbyIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFUyU+IiBvbkNsaWNrPSJzaG93RmluZEZvcm0oPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTJT4sPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9BRFZBTkNFRCU+KSI+PGxhYmVsIGZvcj0icmFkaW9fZmluZF9zZXJ2aWNlX2FkdmFuY2UiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1JBRElPX0FEVkFOQ0VEIiklPjwvbGFiZWw+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0icmFkaW9fZmluZF9zZXJ2aWNlX3V1aWQiIGNsYXNzPSJyYWRpbyIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFUyU+IiBvbkNsaWNrPSJzaG93RmluZEZvcm0oPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTJT4sPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9VVUlEJT4pIj48bGFiZWwgZm9yPSJyYWRpb19maW5kX3NlcnZpY2VfdXVpZCI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fUkFESU9fVVVJRCIpJT48L2xhYmVsPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICA8L2Zvcm0+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvUmVnRmluZFNlcnZpY2VzU2ltcGxlRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvUmVnRmluZFNlcnZpY2VzQWR2YW5jZWRGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiZmluZFNlcnZpY2VVVUlEIik7Ci0gICBTdHJpbmdbXSBvdGhlclByb3BlcnRpZXMgPSB7InVkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZVVVSURBY3Rpb25KU1AuanNwIixVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9LRVksIkZPUk1fTEFCRUxfRklORF9TRVJWSUNFX1VVSURfREVTQyJ9OwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKG90aGVyUHJvcGVydGllcyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL1JlZ0ZpbmRVVUlERm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZXNTaW1wbGVGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kU2VydmljZXNTaW1wbGVGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBiNzI4MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnRmluZFNlcnZpY2VzU2ltcGxlRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzdWJRdWVyeUtleVByb3BlcnR5IiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU3ViUXVlcnlLZXlQcm9wZXJ0eSIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgLy8gc2VsZWN0ZWROb2RlIGNvdWxkIGJlIHRoZSByZWdpc3RyeSBvciBxdWVyeSBub2Rlcy4KLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgIEZvcm1Ub29sIGZvcm1Ub29sID0gKEZvcm1Ub29sKShzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCkpOwotICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpKTsKLSU+Ci08ZGl2IGlkPSJmaW5kU2VydmljZXNTaW1wbGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9SZWdGaW5kU2VydmljZXNTaW1wbGVBY3Rpb25KU1AuanNwIikpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG9uU3VibWl0PSJyZXR1cm4gcHJvY2Vzc0Zvcm0odGhpcykiPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZJT4iPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSU+Ij4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTEwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9GSU5EX1NFUlZJQ0VTX1NJTVBMRV9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfZmluZF9zZXJ2aWNlc19zaW1wbGVfbmFtZSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTkFNRSIpJT48L2xhYmVsPgotPCUKLSAgIGlmICghZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9OQU1FKSkKLSAgIHsKLSU+Ci0gICAgICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotPCUKLSAgIH0KLSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgICAgPHRyPgotICAgICAgICA8dGQ+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXRfZmluZF9zZXJ2aWNlc19zaW1wbGVfbmFtZSIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9OQU1FJT4iIGNsYXNzPSJ0ZXh0ZW50ZXIiPiA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8L2Zvcm0+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdGaW5kVVVJREZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRVVUlERm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMzlkYjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ0ZpbmRVVUlERm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzdWJRdWVyeUtleVByb3BlcnR5IiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU3ViUXVlcnlLZXlQcm9wZXJ0eSIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIC8vIHNlbGVjdGVkTm9kZSBjb3VsZCBiZSB0aGUgcmVnaXN0cnkgb3IgcXVlcnkgbm9kZXMuCi0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSk7Ci0gICAKLSAgIFN0cmluZyBmb3JtQ29udGFpbmVySWQgPSBzZWN0aW9uSGVhZGVySW5mby5nZXRDb250YWluZXJJZCgpOwotICAgU3RyaW5nW10gb3RoZXJQcm9wZXJ0aWVzID0gKFN0cmluZ1tdKShzZWN0aW9uSGVhZGVySW5mby5nZXRPdGhlclByb3BlcnRpZXMoKSk7Ci0gICBTdHJpbmcgYWN0aW9uTGluayA9IChTdHJpbmcpb3RoZXJQcm9wZXJ0aWVzWzBdOwotICAgU3RyaW5nIHV1aWRFbnRyeUtleSA9IChTdHJpbmcpb3RoZXJQcm9wZXJ0aWVzWzFdOwotICAgU3RyaW5nIGRlc2NyaXB0aW9uS2V5ID0gKFN0cmluZylvdGhlclByb3BlcnRpZXNbMl07Ci0lPgotPGRpdiBpZD0iPCU9Zm9ybUNvbnRhaW5lcklkJT4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoYWN0aW9uTGluaykpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG9uU3VibWl0PSJyZXR1cm4gcHJvY2Vzc0Zvcm0odGhpcykiPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuU1VCUVVFUllfS0VZJT4iPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfTkFNRSU+Ij4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTEwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZShkZXNjcmlwdGlvbktleSklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iPCU9KGZvcm1Db250YWluZXJJZCsiX2lucHV0X3V1aWRfa2V5IiklPiI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVVVJRF9LRVkiKSU+PC9sYWJlbD4KLTwlCi0gICBpZiAoIWZvcm1Ub29sUEkuaXNJbnB1dFZhbGlkKHV1aWRFbnRyeUtleSkpCi0gICB7Ci0lPgotICAgICAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLTwlCi0gICB9Ci0lPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkPiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IjwlPShmb3JtQ29udGFpbmVySWQrIl9pbnB1dF91dWlkX2tleSIpJT4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9LRVklPiIgY2xhc3M9InRleHRlbnRlciI+IDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZm9ybT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaEJ1c2luZXNzQWR2YW5jZWRGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRlMWE5My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaEJ1c2luZXNzQWR2YW5jZWRGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InN1YlF1ZXJ5S2V5UHJvcGVydHkiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5TdWJRdWVyeUtleVByb3BlcnR5IiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgRm9ybVRvb2wgZm9ybVRvb2wgPSAoRm9ybVRvb2wpKHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0gICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSA9ICgoTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UpZm9ybVRvb2wpLmdldEZvcm1Ub29sUHJvcGVydGllcyhzdWJRdWVyeUtleVByb3BlcnR5LmdldFN1YlF1ZXJ5S2V5KCkpOwotJT4KLTxkaXYgaWQ9InB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvUmVnUHVibGlzaEJ1c2luZXNzQWR2YW5jZWRBY3Rpb25KU1AuanNwIikpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG9uU3VibWl0PSJyZXR1cm4gcHJvY2Vzc1B1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkRm9ybSh0aGlzKSI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0xMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUFVCTElTSF9CVVNJTkVTU19BRFZBTkNFRF9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicHVibGlzaEJ1c2luZXNzQWR2YW5jZWRBdXRoZW50aWNhdGlvbiIpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9hdXRoZW50aWNhdGlvbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJwdWJsaXNoQnVzaW5lc3NBZHZhbmNlZE5hbWVzIik7Ci0gICBTdHJpbmdbXSBuYW1lU3BlY2lmaWNJbmZvID0geyJGT1JNX0xBQkVMX05BTUVTIiwiRk9STV9MQUJFTF9OQU1FIixTdHJpbmcudmFsdWVPZighZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19OQU1FUykpfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhuYW1lU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvbGFuZ3VhZ2VJbnB1dF90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJwdWJsaXNoQnVzaW5lc3NBZHZhbmNlZERlc2NyaXB0aW9ucyIpOwotICAgU3RyaW5nW10gZGVzY1NwZWNpZmljSW5mbyA9IHsiRk9STV9MQUJFTF9ERVNDUklQVElPTlMiLCJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OIixTdHJpbmcudmFsdWVPZighZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMpKX07Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoZGVzY1NwZWNpZmljSW5mbyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2xhbmd1YWdlSW5wdXRfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicHVibGlzaEJ1c2luZXNzQWR2YW5jZWRJZGVudGlmaWVycyIpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9pZGVudGlmaWVyc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJwdWJsaXNoQnVzaW5lc3NBZHZhbmNlZENhdGVnb3JpZXMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvY2F0ZWdvcmllc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJwdWJsaXNoQnVzaW5lc3NBZHZhbmNlZERpc2NvdmVyeVVSTHMiKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhuZXcgQm9vbGVhbighZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ESVNDT1ZFUllVUkxTKSkpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9kaXNjb3ZlcnlVUkxzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4gICAKLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvc2ltcGxlQ29tbW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgPC9mb3JtPgotPC9kaXY+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaEJ1c2luZXNzRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaEJ1c2luZXNzRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3YjMwYzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hCdXNpbmVzc0Zvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotJT4KLTxkaXYgaWQ9InB1Ymxpc2hCdXNpbmVzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotICA8Zm9ybSBuYW1lPSJwdWJsaXNoQnVzaW5lc3NTdHlsZSI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1BVQkxJU0hfRk9STSIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJyYWRpb19wdWJsaXNoX2J1c2luZXNzX3NpbXBsZSIgY2xhc3M9InJhZGlvIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0JVU0lORVNTRVMlPiIgb25DbGljaz0ic2hvd1B1Ymxpc2hGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTJT4sPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUlPikiPjxsYWJlbCBmb3I9InJhZGlvX3B1Ymxpc2hfYnVzaW5lc3Nfc2ltcGxlIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9SQURJT19TSU1QTEUiKSU+PC9sYWJlbD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJyYWRpb19wdWJsaXNoX2J1c2luZXNzX2FkdmFuY2UiIGNsYXNzPSJyYWRpbyIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTJT4iIG9uQ2xpY2s9InNob3dQdWJsaXNoRm9ybSg8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyU+LDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQURWQU5DRUQlPikiPjxsYWJlbCBmb3I9InJhZGlvX3B1Ymxpc2hfYnVzaW5lc3NfYWR2YW5jZSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fUkFESU9fQURWQU5DRUQiKSU+PC9sYWJlbD4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPC9mb3JtPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hCdXNpbmVzc1NpbXBsZUZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoQnVzaW5lc3NTaW1wbGVGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoQnVzaW5lc3NTaW1wbGVGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMxOTNkNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaEJ1c2luZXNzU2ltcGxlRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzdWJRdWVyeUtleVByb3BlcnR5IiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU3ViUXVlcnlLZXlQcm9wZXJ0eSIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgIEZvcm1Ub29sIGZvcm1Ub29sID0gKEZvcm1Ub29sKShzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCkpOwotICAgRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlIGZvcm1Ub29sUEkgPSAoKE11bHRpcGxlRm9ybVRvb2xQcm9wZXJ0aWVzSW50ZXJmYWNlKWZvcm1Ub29sKS5nZXRGb3JtVG9vbFByb3BlcnRpZXMoc3ViUXVlcnlLZXlQcm9wZXJ0eS5nZXRTdWJRdWVyeUtleSgpKTsKLSU+Ci08ZGl2IGlkPSJwdWJsaXNoQnVzaW5lc3NTaW1wbGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9SZWdQdWJsaXNoQnVzaW5lc3NTaW1wbGVBY3Rpb25KU1AuanNwIikpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG9uU3VibWl0PSJyZXR1cm4gaGFuZGxlU3VibWl0KHRoaXMpIj4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTEwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9QVUJMSVNIX0JVU0lORVNTX1NJTVBMRV9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicHVibGlzaEJ1c2luZXNzU2ltcGxlQXV0aGVudGljYXRpb24iKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvYXV0aGVudGljYXRpb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X3B1Ymxpc2hfYnVzaW5lc3Nfc2ltcGxlX25hbWUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC9sYWJlbD4KLTwlCi0gICBpZiAoIWZvcm1Ub29sUEkuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX0JVU0lORVNTX05BTUUpKQotICAgewotJT4KLSAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci08JQotICAgfQotJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZD4gPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dF9wdWJsaXNoX2J1c2luZXNzX3NpbXBsZV9uYW1lIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FJT4iIGNsYXNzPSJ0ZXh0ZW50ZXIiPiA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X3B1Ymxpc2hfYnVzaW5lc3Nfc2ltcGxlX2Rlc2MiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OIiklPjwvbGFiZWw+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgICAgPHRyPgotICAgICAgICA8dGQ+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXRfcHVibGlzaF9idXNpbmVzc19zaW1wbGVfZGVzYyIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfQlVTSU5FU1NfREVTQ1JJUFRJT04lPiIgY2xhc3M9InRleHRlbnRlciI+IDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZm9ybT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNDNkNjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDU4NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGouZGF0YXR5cGUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIC8vIHNlbGVjdGVkTm9kZSBtdXN0IGJlIGEgcmVnaXN0cnkgbm9kZS4KLSAgIE5vZGUgcmVnTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkocmVnTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0lPgotPGpzcDp1c2VCZWFuIGlkPSJzdWJRdWVyeUtleVByb3BlcnR5IiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuU3ViUXVlcnlLZXlQcm9wZXJ0eSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIFN0cmluZyBzdWJRdWVyeUtleSA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5TVUJRVUVSWV9LRVkpOwotICAgc3ViUXVlcnlLZXlQcm9wZXJ0eS5zZXRTdWJRdWVyeUtleShzdWJRdWVyeUtleSk7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTwlCi0gICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSA9ICgoTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UpZm9ybVRvb2wpLmdldEZvcm1Ub29sUHJvcGVydGllcyhzdWJRdWVyeUtleVByb3BlcnR5LmdldFN1YlF1ZXJ5S2V5KCkpOwotICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX1JFR0lTVFJZX1BVQkxJU0giKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXN1Ym1pdC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpdGFibGVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICB2YXIgc2VjdGlvbklkcyA9IFsicHVibGlzaEJ1c2luZXNzIiwicHVibGlzaFNlcnZpY2UiLCJwdWJsaXNoU2VydmljZUludGVyZmFjZSJdOwotICB2YXIgcHVibGlzaEJ1c2luZXNzU2VjdGlvbklkcyA9IFsicHVibGlzaEJ1c2luZXNzU2ltcGxlIiwicHVibGlzaEJ1c2luZXNzQWR2YW5jZWQiXTsKLSAgdmFyIHB1Ymxpc2hTZXJ2aWNlU2VjdGlvbklkcyA9IFsicHVibGlzaFNlcnZpY2VTaW1wbGUiLCJwdWJsaXNoU2VydmljZUFkdmFuY2VkIl07Ci0gIHZhciBwdWJsaXNoU2VydmljZUludGVyZmFjZVNlY3Rpb25JZHMgPSBbInB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlU2ltcGxlIiwicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZCJdOwotICB2YXIgc3R5bGVGb3JtcyA9IFsicHVibGlzaEJ1c2luZXNzU3R5bGUiLCJwdWJsaXNoU2VydmljZVN0eWxlIiwicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTdHlsZSJdOwotCi0gIGZ1bmN0aW9uIHByb2Nlc3NQdWJsaXNoQnVzaW5lc3NBZHZhbmNlZEZvcm0oZm9ybSkKLSAgewotICAgIGlmIChoYW5kbGVTdWJtaXQoZm9ybSkpCi0gICAgewotICAgICAgcHJvY2Vzc0xhbmd1YWdlSW5wdXRUYWJsZSgicHVibGlzaEJ1c2luZXNzQWR2YW5jZWROYW1lcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRV9MQU5HVUFHRSU+IiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc0xhbmd1YWdlSW5wdXRUYWJsZSgicHVibGlzaEJ1c2luZXNzQWR2YW5jZWREZXNjcmlwdGlvbnMiLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RFU0NSSVBUSU9OX0xBTkdVQUdFJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RFU0NSSVBUSU9OJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc0lkZW50aWZpZXJUYWJsZSgicHVibGlzaEJ1c2luZXNzQWR2YW5jZWRJZGVudGlmaWVycyIsZm9ybSk7Ci0gICAgICBwcm9jZXNzQ2F0ZWdvcnlUYWJsZSgicHVibGlzaEJ1c2luZXNzQWR2YW5jZWRDYXRlZ29yaWVzIixmb3JtLGZhbHNlKTsKLSAgICAgIHByb2Nlc3NEaXNjb3ZlcnlVUkxUYWJsZSgicHVibGlzaEJ1c2luZXNzQWR2YW5jZWREaXNjb3ZlcnlVUkxzIixmb3JtKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBmdW5jdGlvbiBwcm9jZXNzUHVibGlzaFNlcnZpY2VTaW1wbGVGb3JtKGZvcm0pCi0gIHsKLSAgICBpZiAoaGFuZGxlU3VibWl0KGZvcm0pKQotICAgIHsKLSAgICAgIHByb2Nlc3NSZXN1bHRUYWJsZSgicHVibGlzaFNlcnZpY2VTaW1wbGVCdXNpbmVzcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuTk9ERUlEX0JVU0lORVNTJT4iLGZvcm0sZmFsc2UpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGZ1bmN0aW9uIHByb2Nlc3NQdWJsaXNoU2VydmljZUFkdmFuY2VkRm9ybShmb3JtKQotICB7Ci0gICAgaWYgKGhhbmRsZVN1Ym1pdChmb3JtKSkKLSAgICB7Ci0gICAgICBwcm9jZXNzUmVzdWx0VGFibGUoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRCdXNpbmVzcyIsIjwlPVVERElBY3Rpb25JbnB1dHMuTk9ERUlEX0JVU0lORVNTJT4iLGZvcm0sZmFsc2UpOwotICAgICAgcHJvY2Vzc1Jlc3VsdFRhYmxlKCJwdWJsaXNoU2VydmljZUFkdmFuY2VkU2VydmljZUludGVyZmFjZSIsIjwlPVVERElBY3Rpb25JbnB1dHMuTk9ERUlEX1NFUlZJQ0VfSU5URVJGQUNFJT4iLGZvcm0sZmFsc2UpOwotICAgICAgcHJvY2Vzc0xhbmd1YWdlSW5wdXRUYWJsZSgicHVibGlzaFNlcnZpY2VBZHZhbmNlZE5hbWVzIiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9OQU1FX0xBTkdVQUdFJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX05BTUUlPiIsZm9ybSk7Ci0gICAgICBwcm9jZXNzTGFuZ3VhZ2VJbnB1dFRhYmxlKCJwdWJsaXNoU2VydmljZUFkdmFuY2VkRGVzY3JpcHRpb25zIiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9ERVNDUklQVElPTl9MQU5HVUFHRSU+IiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9ERVNDUklQVElPTiU+Iixmb3JtKTsKLSAgICAgIHByb2Nlc3NDYXRlZ29yeVRhYmxlKCJwdWJsaXNoU2VydmljZUFkdmFuY2VkQ2F0ZWdvcmllcyIsZm9ybSxmYWxzZSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRGb3JtKGZvcm0pCi0gIHsKLSAgICBpZiAoaGFuZGxlU3VibWl0KGZvcm0pKQotICAgIHsKLSAgICAgIHByb2Nlc3NMYW5ndWFnZUlucHV0VGFibGUoInB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWREZXNjcmlwdGlvbnMiLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RFU0NSSVBUSU9OX0xBTkdVQUdFJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RFU0NSSVBUSU9OJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc0lkZW50aWZpZXJUYWJsZSgicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZElkZW50aWZpZXJzIixmb3JtKTsKLSAgICAgIHByb2Nlc3NDYXRlZ29yeVRhYmxlKCJwdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkQ2F0ZWdvcmllcyIsZm9ybSxmYWxzZSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKQotICB7Ci0gICAgdmFyIHB1Ymxpc2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVibGlzaCIpOwotICAgIHB1Ymxpc2guc2VsZWN0ZWRJbmRleCA9IDwlPWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNKSU+OwotICAgIHNldERlZmF1bHRzRm9yUHVibGlzaEJ1c2luZXNzRm9ybXMoKTsKLSAgICBzZXREZWZhdWx0c0ZvclB1Ymxpc2hTZXJ2aWNlRm9ybXMoKTsKLSAgICBzZXREZWZhdWx0c0ZvclB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlRm9ybXMoKTsKLTwlCi0gICBpZiAoIXJlZ0VsZW1lbnQuaXNMb2dnZWRJbigpKQotICAgewotJT4KLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVibGlzaEJ1c2luZXNzU2ltcGxlQXV0aGVudGljYXRpb24iKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkQXV0aGVudGljYXRpb24iKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1Ymxpc2hTZXJ2aWNlU2ltcGxlQXV0aGVudGljYXRpb24iKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBdXRoZW50aWNhdGlvbiIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBdXRoZW50aWNhdGlvbiIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZEF1dGhlbnRpY2F0aW9uIikuc3R5bGUuZGlzcGxheSA9ICIiOwotPCUKLSAgIH0KLSU+Ci0gICAgc2hvd01haW5Gb3JtKHB1Ymxpc2gudmFsdWUpOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0QXV0aGVudGljYXRpb25TZWN0aW9uRGVmYXVsdHMoZm9ybSkKLSAgewotPCUKLSAgIFN0cmluZyBwdWJsaXNoVVJMID0gKFN0cmluZylmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMKTsKLSAgIFN0cmluZyB1c2VySWQgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKTsKLSAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0lPgotICAgIGZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShwdWJsaXNoVVJMKSU+IjsKLSAgICBmb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVzZXJJZCklPiI7Ci0gICAgZm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHBhc3N3b3JkKSU+IjsKLSAgfQotCi0gIGZ1bmN0aW9uIHNldERlZmF1bHRzRm9yUHVibGlzaEJ1c2luZXNzRm9ybXMoKQotICB7Ci0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHVibGlzaEJ1c2luZXNzIGZvcm0uCi08JQotICAgU3RyaW5nIHB1Ymxpc2hCdXNpbmVzc1N0eWxlSW5kZXggPSAoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTKTsKLSU+Ci0gICAgZG9jdW1lbnQuZm9ybXNbc3R5bGVGb3Jtc1s8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyU+XV0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9CVVNJTkVTU0VTJT5bPCU9cHVibGlzaEJ1c2luZXNzU3R5bGVJbmRleCU+XS5jaGVja2VkID0gdHJ1ZTsKLSAgICB2YXIgcHVibGlzaEJ1c2luZXNzU2ltcGxlU2VjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHB1Ymxpc2hCdXNpbmVzc1NlY3Rpb25JZHNbPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUlPl0pOwotICAgIHZhciBwdWJsaXNoQnVzaW5lc3NTaW1wbGVGb3JtID0gcHVibGlzaEJ1c2luZXNzU2ltcGxlU2VjdGlvbi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpLml0ZW0oMCk7Ci0gICAgc2V0QXV0aGVudGljYXRpb25TZWN0aW9uRGVmYXVsdHMocHVibGlzaEJ1c2luZXNzU2ltcGxlRm9ybSk7Ci0gICAgcHVibGlzaEJ1c2luZXNzU2ltcGxlRm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19OQU1FKSklPiI7Ci0gICAgcHVibGlzaEJ1c2luZXNzU2ltcGxlRm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9CVVNJTkVTU19ERVNDUklQVElPTiU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfQlVTSU5FU1NfREVTQ1JJUFRJT04pKSU+IjsKLQotICAgIC8vIEFkdmFuY2VkIGZvcm0gZGV0YWlscy4KLSAgICB2YXIgcHVibGlzaEJ1c2luZXNzQWR2YW5jZWRTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHVibGlzaEJ1c2luZXNzU2VjdGlvbklkc1s8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0FEVkFOQ0VEJT5dKTsKLSAgICB2YXIgcHVibGlzaEJ1c2luZXNzQWR2YW5jZWRGb3JtID0gcHVibGlzaEJ1c2luZXNzQWR2YW5jZWRTZWN0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIikuaXRlbSgwKTsKLSAgICBzZXRBdXRoZW50aWNhdGlvblNlY3Rpb25EZWZhdWx0cyhwdWJsaXNoQnVzaW5lc3NBZHZhbmNlZEZvcm0pOwotICAgIHZhciBwdWJsaXNoQnVzaW5lc3NBZHZhbmNlZE5hbWVzVGFibGUgPSBnZXRUYWJsZSgicHVibGlzaEJ1c2luZXNzQWR2YW5jZWROYW1lcyIpOwotICAgIHZhciBwdWJsaXNoQnVzaW5lc3NBZHZhbmNlZERlc2NyaXB0aW9uc1RhYmxlID0gZ2V0VGFibGUoInB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkRGVzY3JpcHRpb25zIik7Ci0gICAgdmFyIHB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkRGlzY292ZXJ5VVJMc1RhYmxlID0gZ2V0VGFibGUoInB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkRGlzY292ZXJ5VVJMcyIpOwotPCUKLSAgIFZlY3RvciBidXNOYW1lVmVjdG9yID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfTkFNRVMpOwotICAgaWYgKGJ1c05hbWVWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8YnVzTmFtZVZlY3Rvci5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgTmFtZSBuYW1lID0gKE5hbWUpYnVzTmFtZVZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZExhbmd1YWdlSW5wdXRSb3coInB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkTmFtZXMiLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9OQU1FX1RFWFRfVkFMVUUiKSklPiIpOwotICAgIHNldExhbmd1YWdlSW5wdXRSb3dTZXR0aW5ncygicHVibGlzaEJ1c2luZXNzQWR2YW5jZWROYW1lcyIsPCU9aSU+LCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUobmFtZS5nZXRMYW5nKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUobmFtZS5nZXRUZXh0KCkpJT4iKTsKLTwlCi0gICAgICAgaWYgKCFmb3JtVG9vbFBJLmlzUm93SW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX05BTUVTLGkpKQotICAgICAgIHsKLSU+Ci0gICAgaGlnaGxpZ2h0RXJyYW50Um93KHB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkTmFtZXNUYWJsZS5yb3dzWzwlPWklPitudW1iZXJPZkhlYWRlclJvd3NdLCJlcnJhbnRyb3ciKTsKLTwlCi0gICAgICAgfQotICAgICB9Ci0gICB9Ci0KLSAgIFZlY3RvciBidXNEZXNjcmlwdGlvblZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0JVU0lORVNTX0RFU0NSSVBUSU9OUyk7Ci0gICBpZiAoYnVzRGVzY3JpcHRpb25WZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8YnVzRGVzY3JpcHRpb25WZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gKERlc2NyaXB0aW9uKWJ1c0Rlc2NyaXB0aW9uVmVjdG9yLmVsZW1lbnRBdChpKTsKLSU+Ci0gICAgYWRkTGFuZ3VhZ2VJbnB1dFJvdygicHVibGlzaEJ1c2luZXNzQWR2YW5jZWREZXNjcmlwdGlvbnMiLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9ERVNDUklQVElPTl9URVhUX1ZBTFVFIikpJT4iKTsKLSAgICBzZXRMYW5ndWFnZUlucHV0Um93U2V0dGluZ3MoInB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkRGVzY3JpcHRpb25zIiw8JT1pJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShkZXNjcmlwdGlvbi5nZXRMYW5nKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZGVzY3JpcHRpb24uZ2V0VGV4dCgpKSU+Iik7Ci08JQotICAgICAgIGlmICghZm9ybVRvb2xQSS5pc1Jvd0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ERVNDUklQVElPTlMsaSkpCi0gICAgICAgewotJT4KLSAgICBoaWdobGlnaHRFcnJhbnRSb3cocHVibGlzaEJ1c2luZXNzQWR2YW5jZWREZXNjcmlwdGlvbnNUYWJsZS5yb3dzWzwlPWklPitudW1iZXJPZkhlYWRlclJvd3NdLCJlcnJhbnRyb3ciKTsKLTwlCi0gICAgICAgfQotICAgICB9Ci0gICB9Ci0KLSAgIElkZW50aWZpZXJCYWcgYnVzSWRCYWcgPSAoSWRlbnRpZmllckJhZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfSURFTlRJRklFUlMpOwotICAgaWYgKGJ1c0lkQmFnICE9IG51bGwpCi0gICB7Ci0gICAgIFZlY3RvciBrZXllZFJlZmVyZW5jZVZlY3RvciA9IGJ1c0lkQmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCk7Ci0gICAgIGZvciAoaW50IGk9MDtpPGtleWVkUmVmZXJlbmNlVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlrZXllZFJlZmVyZW5jZVZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZElkZW50aWZpZXJSb3coInB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkSWRlbnRpZmllcnMiKTsKLSAgICBzZXRJZGVudGlmaWVyUm93U2V0dGluZ3MoInB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkSWRlbnRpZmllcnMiLDwlPWklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldFRNb2RlbEtleSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleU5hbWUoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlWYWx1ZSgpKSU+Iik7Ci08JQotICAgICB9Ci0gICB9Ci0KLSAgIENhdGVnb3J5QmFnIGJ1c0NhdEJhZyA9IChDYXRlZ29yeUJhZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfQ0FURUdPUklFUyk7Ci0gICBpZiAoYnVzQ2F0QmFnICE9IG51bGwpCi0gICB7Ci0gICAgIFZlY3RvciBrZXllZFJlZmVyZW5jZVZlY3RvciA9IGJ1c0NhdEJhZy5nZXRLZXllZFJlZmVyZW5jZVZlY3RvcigpOwotICAgICBmb3IgKGludCBpPTA7aTxrZXllZFJlZmVyZW5jZVZlY3Rvci5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSAoS2V5ZWRSZWZlcmVuY2Upa2V5ZWRSZWZlcmVuY2VWZWN0b3IuZWxlbWVudEF0KGkpOwotJT4KLSAgICBhZGRDYXRlZ29yeVJvdygicHVibGlzaEJ1c2luZXNzQWR2YW5jZWRDYXRlZ29yaWVzIik7Ci0gICAgc2V0Q2F0ZWdvcnlSb3dTZXR0aW5ncygicHVibGlzaEJ1c2luZXNzQWR2YW5jZWRDYXRlZ29yaWVzIiw8JT1pJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRUTW9kZWxLZXkoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlOYW1lKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0S2V5VmFsdWUoKSklPiIpOwotPCUKLSAgICAgfQotICAgfQotICAKLSAgIERpc2NvdmVyeVVSTHMgZGlzY292ZXJ5VVJMcyA9IChEaXNjb3ZlcnlVUkxzKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9CVVNJTkVTU19ESVNDT1ZFUllVUkxTKTsKLSAgIGlmIChkaXNjb3ZlcnlVUkxzICE9IG51bGwpCi0gICB7Ci0gICAgIFZlY3RvciBkaXNjb3ZlcnlVUkxWZWN0b3IgPSBkaXNjb3ZlcnlVUkxzLmdldERpc2NvdmVyeVVSTFZlY3RvcigpOwotICAgICBmb3IgKGludCBpPTA7aTxkaXNjb3ZlcnlVUkxWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIERpc2NvdmVyeVVSTCBkaXNjb3ZlcnlVUkwgPSAoRGlzY292ZXJ5VVJMKWRpc2NvdmVyeVVSTFZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZERpc2NvdmVyeVVSTFJvdygicHVibGlzaEJ1c2luZXNzQWR2YW5jZWREaXNjb3ZlcnlVUkxzIik7Ci0gICAgc2V0RGlzY292ZXJ5VVJMUm93U2V0dGluZ3MoInB1Ymxpc2hCdXNpbmVzc0FkdmFuY2VkRGlzY292ZXJ5VVJMcyIsPCU9aSU+LCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZGlzY292ZXJ5VVJMLmdldFRleHQoKSklPiIpOwotPCUKLSAgICAgICBpZiAoIWZvcm1Ub29sUEkuaXNSb3dJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQlVTSU5FU1NfRElTQ09WRVJZVVJMUyxpKSkKLSAgICAgICB7Ci0lPgotICAgIGhpZ2hsaWdodEVycmFudFJvdyhwdWJsaXNoQnVzaW5lc3NBZHZhbmNlZERpc2NvdmVyeVVSTHNUYWJsZS5yb3dzWzwlPWklPitudW1iZXJPZkhlYWRlclJvd3NdLCJlcnJhbnRyb3ciKTsKLTwlCi0gICAgICAgfQotICAgICB9Ci0gICB9Ci0lPiAgICAgICAKLSAgICBzaG93UHVibGlzaEZvcm0oPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMlPiw8JT1wdWJsaXNoQnVzaW5lc3NTdHlsZUluZGV4JT4pOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHNGb3JQdWJsaXNoU2VydmljZUZvcm1zKCkKLSAgewotPCUKLSAgIFN0cmluZyBwdWJsaXNoU2VydmljZVN0eWxlSW5kZXggPSAoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFUyk7Ci0lPgotICAgIGRvY3VtZW50LmZvcm1zW3N0eWxlRm9ybXNbPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTJT5dXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTJT5bPCU9cHVibGlzaFNlcnZpY2VTdHlsZUluZGV4JT5dLmNoZWNrZWQgPSB0cnVlOwotICAgIHZhciBwdWJsaXNoU2VydmljZVNpbXBsZVNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwdWJsaXNoU2VydmljZVNlY3Rpb25JZHNbPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUlPl0pOwotICAgIHZhciBwdWJsaXNoU2VydmljZVNpbXBsZUZvcm0gPSBwdWJsaXNoU2VydmljZVNpbXBsZVNlY3Rpb24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKS5pdGVtKDApOwotICAgIHNldEF1dGhlbnRpY2F0aW9uU2VjdGlvbkRlZmF1bHRzKHB1Ymxpc2hTZXJ2aWNlU2ltcGxlRm9ybSk7Ci08JQotICAgVmVjdG9yIHNlcnZpY2VCdXNpbmVzcyA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0JVU0lORVNTKTsKLSAgIFZlY3RvciBzZXJ2aWNlQnVzaW5lc3NDb3B5ID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfQlVTSU5FU1NfQ09QWSk7Ci0gICBpZiAoc2VydmljZUJ1c2luZXNzICE9IG51bGwpCi0gICB7Ci0gICAgIGlmIChzZXJ2aWNlQnVzaW5lc3NDb3B5ID09IG51bGwpCi0gICAgICAgc2VydmljZUJ1c2luZXNzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgZWxzZQotICAgICAgIHNlcnZpY2VCdXNpbmVzc0NvcHkucmVtb3ZlQWxsRWxlbWVudHMoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8c2VydmljZUJ1c2luZXNzLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClzZXJ2aWNlQnVzaW5lc3MuZWxlbWVudEF0KGkpOwotICAgICAgIGludCB0YXJnZXROb2RlSWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXROb2RlSWQoKTsKLSAgICAgICBpbnQgdGFyZ2V0VG9vbElkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0VG9vbElkKCk7Ci0gICAgICAgaW50IHRhcmdldFZpZXdJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldFZpZXdJZCgpOwotICAgICAgIFN0cmluZyB1cmwgPSBTZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayh0YXJnZXROb2RlSWQsdGFyZ2V0VG9vbElkLHRhcmdldFZpZXdJZCxzdWJRdWVyeUtleVByb3BlcnR5LmdldFN1YlF1ZXJ5S2V5KCksVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTUyxpLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTLGZhbHNlKTsKLSAgICAgICBCdXNpbmVzc0VudGl0eSBiZSA9IChCdXNpbmVzc0VudGl0eSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICBzZXJ2aWNlQnVzaW5lc3NDb3B5LmFkZEVsZW1lbnQoc2VydmljZUJ1c2luZXNzLmVsZW1lbnRBdChpKSk7Ci0lPgotICAgIGFkZFJlc3VsdFJvdygicHVibGlzaFNlcnZpY2VTaW1wbGVCdXNpbmVzcyIsPCU9dGFyZ2V0Tm9kZUlkJT4sIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh1cmwpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGJlLmdldERlZmF1bHROYW1lU3RyaW5nKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoYmUuZ2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKCkpJT4iKTsKLTwlCi0gICAgIH0KLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0JVU0lORVNTX0NPUFksc2VydmljZUJ1c2luZXNzQ29weSk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgIHNlcnZpY2VCdXNpbmVzcyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgc2VydmljZUJ1c2luZXNzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0JVU0lORVNTLHNlcnZpY2VCdXNpbmVzcyk7Ci0gICAgIGZvcm1Ub29sUEkuc2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTU19DT1BZLHNlcnZpY2VCdXNpbmVzc0NvcHkpOwotICAgfQotJT4KLTwlCi0gICBWZWN0b3Igc2VydmljZUludGVyZmFjZXMgPSAoVmVjdG9yKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFUyk7Ci0gICBWZWN0b3Igc2VydmljZUludGVyZmFjZXNDb3B5ID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVNfQ09QWSk7Ci0gICBpZiAoc2VydmljZUludGVyZmFjZXMgIT0gbnVsbCkKLSAgIHsKLSAgICAgaWYgKHNlcnZpY2VJbnRlcmZhY2VzQ29weSA9PSBudWxsKQotICAgICAgIHNlcnZpY2VJbnRlcmZhY2VzQ29weSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgZWxzZQotICAgICAgIHNlcnZpY2VJbnRlcmZhY2VzQ29weS5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlSW50ZXJmYWNlcy5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpc2VydmljZUludGVyZmFjZXMuZWxlbWVudEF0KGkpOwotICAgICAgIGludCB0YXJnZXROb2RlSWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXROb2RlSWQoKTsKLSAgICAgICBpbnQgdGFyZ2V0VG9vbElkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0VG9vbElkKCk7Ci0gICAgICAgaW50IHRhcmdldFZpZXdJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldFZpZXdJZCgpOwotICAgICAgIFN0cmluZyB1cmwgPSBTZWxlY3RTdWJRdWVyeUl0ZW1BY3Rpb24uZ2V0QWN0aW9uTGluayh0YXJnZXROb2RlSWQsdGFyZ2V0VG9vbElkLHRhcmdldFZpZXdJZCxzdWJRdWVyeUtleVByb3BlcnR5LmdldFN1YlF1ZXJ5S2V5KCksVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFUyxpLFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMsZmFsc2UpOwotICAgICAgIFRNb2RlbCB0TW9kZWwgPSAoVE1vZGVsKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgIHNlcnZpY2VJbnRlcmZhY2VzQ29weS5hZGRFbGVtZW50KHNlcnZpY2VJbnRlcmZhY2VzLmVsZW1lbnRBdChpKSk7Ci0lPgotICAgIGFkZFJlc3VsdFJvdygicHVibGlzaFNlcnZpY2VBZHZhbmNlZFNlcnZpY2VJbnRlcmZhY2UiLDwlPXRhcmdldE5vZGVJZCU+LCI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQodXJsKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSh0TW9kZWwuZ2V0TmFtZVN0cmluZygpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHRNb2RlbC5nZXREZWZhdWx0RGVzY3JpcHRpb25TdHJpbmcoKSklPiIpOwotPCUKLSAgICAgfQotICAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVNfQ09QWSxzZXJ2aWNlSW50ZXJmYWNlc0NvcHkpOwotICAgfQotICAgZWxzZQotICAgewotICAgICBzZXJ2aWNlSW50ZXJmYWNlcyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgc2VydmljZUludGVyZmFjZXNDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVMsc2VydmljZUludGVyZmFjZXMpOwotICAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9TRVJWSUNFX0lOVEVSRkFDRVNfQ09QWSxzZXJ2aWNlSW50ZXJmYWNlc0NvcHkpOwotICAgfQotJT4KLSAgICBwdWJsaXNoU2VydmljZVNpbXBsZUZvcm0uPCU9QWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX1dTRExfVVJMKSklPiI7Ci0gICAgcHVibGlzaFNlcnZpY2VTaW1wbGVGb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfTkFNRSU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9OQU1FKSklPiI7Ci0gICAgcHVibGlzaFNlcnZpY2VTaW1wbGVGb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfREVTQ1JJUFRJT04lPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfREVTQ1JJUFRJT04pKSU+IjsKLQotICAgIC8vIEFkdmFuY2VkIGZvcm0gZGV0YWlscy4KLSAgICB2YXIgcHVibGlzaFNlcnZpY2VBZHZhbmNlZFNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwdWJsaXNoU2VydmljZVNlY3Rpb25JZHNbPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9BRFZBTkNFRCU+XSk7Ci0gICAgdmFyIHB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRGb3JtID0gcHVibGlzaFNlcnZpY2VBZHZhbmNlZFNlY3Rpb24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKS5pdGVtKDApOwotICAgIHNldEF1dGhlbnRpY2F0aW9uU2VjdGlvbkRlZmF1bHRzKHB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRGb3JtKTsKLSAgICB2YXIgcHVibGlzaFNlcnZpY2VBZHZhbmNlZE5hbWVzVGFibGUgPSBnZXRUYWJsZSgicHVibGlzaFNlcnZpY2VBZHZhbmNlZE5hbWVzIik7Ci0gICAgdmFyIHB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWREZXNjcmlwdGlvbnNUYWJsZSA9IGdldFRhYmxlKCJwdWJsaXNoU2VydmljZUFkdmFuY2VkRGVzY3JpcHRpb25zIik7Ci08JQotICAgc2VydmljZUJ1c2luZXNzID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTUyk7Ci0gICBzZXJ2aWNlQnVzaW5lc3NDb3B5ID0gKFZlY3Rvcilmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTU19DT1BZKTsKLSAgIGlmIChzZXJ2aWNlQnVzaW5lc3MgIT0gbnVsbCkKLSAgIHsKLSAgICAgaWYgKHNlcnZpY2VCdXNpbmVzc0NvcHkgPT0gbnVsbCkKLSAgICAgICBzZXJ2aWNlQnVzaW5lc3NDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgICBlbHNlCi0gICAgICAgc2VydmljZUJ1c2luZXNzQ29weS5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlQnVzaW5lc3Muc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KXNlcnZpY2VCdXNpbmVzcy5lbGVtZW50QXQoaSk7Ci0gICAgICAgaW50IHRhcmdldE5vZGVJZCA9IGxpc3RFbGVtZW50LmdldFRhcmdldE5vZGVJZCgpOwotICAgICAgIGludCB0YXJnZXRUb29sSWQgPSBsaXN0RWxlbWVudC5nZXRUYXJnZXRUb29sSWQoKTsKLSAgICAgICBpbnQgdGFyZ2V0Vmlld0lkID0gbGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Vmlld0lkKCk7Ci0gICAgICAgU3RyaW5nIHVybCA9IFNlbGVjdFN1YlF1ZXJ5SXRlbUFjdGlvbi5nZXRBY3Rpb25MaW5rKHRhcmdldE5vZGVJZCx0YXJnZXRUb29sSWQsdGFyZ2V0Vmlld0lkLHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1MsaSxVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyxmYWxzZSk7Ci0gICAgICAgQnVzaW5lc3NFbnRpdHkgYmUgPSAoQnVzaW5lc3NFbnRpdHkpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgc2VydmljZUJ1c2luZXNzQ29weS5hZGRFbGVtZW50KHNlcnZpY2VCdXNpbmVzcy5lbGVtZW50QXQoaSkpOwotJT4KLSAgICBhZGRSZXN1bHRSb3coInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRCdXNpbmVzcyIsPCU9dGFyZ2V0Tm9kZUlkJT4sIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh1cmwpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGJlLmdldERlZmF1bHROYW1lU3RyaW5nKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoYmUuZ2V0RGVmYXVsdERlc2NyaXB0aW9uU3RyaW5nKCkpJT4iKTsKLTwlCi0gICAgIH0KLSAgICAgZm9ybVRvb2xQSS5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1NfQ09QWSxzZXJ2aWNlQnVzaW5lc3NDb3B5KTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgc2VydmljZUJ1c2luZXNzID0gbmV3IFZlY3RvcigpOwotICAgICBzZXJ2aWNlQnVzaW5lc3NDb3B5ID0gbmV3IFZlY3RvcigpOwotICAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTUyxzZXJ2aWNlQnVzaW5lc3MpOwotICAgICBmb3JtVG9vbFBJLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9CVVNJTkVTU19DT1BZLHNlcnZpY2VCdXNpbmVzc0NvcHkpOwotICAgfQotJT4KLSAgICBwdWJsaXNoU2VydmljZUFkdmFuY2VkRm9ybS48JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV1NETF9VUkwlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCkpJT4iOwotPCUKLSAgIFZlY3RvciBzZXJ2aWNlTmFtZVZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfTkFNRVMpOwotICAgaWYgKHNlcnZpY2VOYW1lVmVjdG9yICE9IG51bGwpCi0gICB7Ci0gICAgIGZvciAoaW50IGk9MDtpPHNlcnZpY2VOYW1lVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBOYW1lIG5hbWUgPSAoTmFtZSlzZXJ2aWNlTmFtZVZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZExhbmd1YWdlSW5wdXRSb3coInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWROYW1lcyIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX05BTUVfVEVYVF9WQUxVRSIpKSU+Iik7Ci0gICAgc2V0TGFuZ3VhZ2VJbnB1dFJvd1NldHRpbmdzKCJwdWJsaXNoU2VydmljZUFkdmFuY2VkTmFtZXMiLDwlPWklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUuZ2V0TGFuZygpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUuZ2V0VGV4dCgpKSU+Iik7Ci08JQotICAgICAgIGlmICghZm9ybVRvb2xQSS5pc1Jvd0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTLGkpKQotICAgICAgIHsKLSU+Ci0gICAgaGlnaGxpZ2h0RXJyYW50Um93KHB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWROYW1lc1RhYmxlLnJvd3NbPCU9aSU+K251bWJlck9mSGVhZGVyUm93c10sImVycmFudHJvdyIpOwotPCUKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLQotICAgVmVjdG9yIHNlcnZpY2VEZXNjcmlwdGlvblZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfREVTQ1JJUFRJT05TKTsKLSAgIGlmIChzZXJ2aWNlRGVzY3JpcHRpb25WZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8c2VydmljZURlc2NyaXB0aW9uVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiA9IChEZXNjcmlwdGlvbilzZXJ2aWNlRGVzY3JpcHRpb25WZWN0b3IuZWxlbWVudEF0KGkpOwotJT4KLSAgICBhZGRMYW5ndWFnZUlucHV0Um93KCJwdWJsaXNoU2VydmljZUFkdmFuY2VkRGVzY3JpcHRpb25zIiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfREVTQ1JJUFRJT05fVEVYVF9WQUxVRSIpKSU+Iik7Ci0gICAgc2V0TGFuZ3VhZ2VJbnB1dFJvd1NldHRpbmdzKCJwdWJsaXNoU2VydmljZUFkdmFuY2VkRGVzY3JpcHRpb25zIiw8JT1pJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShkZXNjcmlwdGlvbi5nZXRMYW5nKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZGVzY3JpcHRpb24uZ2V0VGV4dCgpKSU+Iik7Ci08JQotICAgICAgIGlmICghZm9ybVRvb2xQSS5pc1Jvd0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0RFU0NSSVBUSU9OUyxpKSkKLSAgICAgICB7Ci0lPgotICAgIGhpZ2hsaWdodEVycmFudFJvdyhwdWJsaXNoU2VydmljZUFkdmFuY2VkRGVzY3JpcHRpb25zVGFibGUucm93c1s8JT1pJT4rbnVtYmVyT2ZIZWFkZXJSb3dzXSwiZXJyYW50cm93Iik7Ci08JQotICAgICAgIH0KLSAgICAgfQotICAgfQotCi0gICBDYXRlZ29yeUJhZyBzZXJ2aWNlQ2F0QmFnID0gKENhdGVnb3J5QmFnKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0NBVEVHT1JJRVMpOwotICAgaWYgKHNlcnZpY2VDYXRCYWcgIT0gbnVsbCkKLSAgIHsKLSAgICAgVmVjdG9yIGtleWVkUmVmZXJlbmNlVmVjdG9yID0gc2VydmljZUNhdEJhZy5nZXRLZXllZFJlZmVyZW5jZVZlY3RvcigpOwotICAgICBmb3IgKGludCBpPTA7aTxrZXllZFJlZmVyZW5jZVZlY3Rvci5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSAoS2V5ZWRSZWZlcmVuY2Upa2V5ZWRSZWZlcmVuY2VWZWN0b3IuZWxlbWVudEF0KGkpOwotJT4KLSAgICBhZGRDYXRlZ29yeVJvdygicHVibGlzaFNlcnZpY2VBZHZhbmNlZENhdGVnb3JpZXMiKTsKLSAgICBzZXRDYXRlZ29yeVJvd1NldHRpbmdzKCJwdWJsaXNoU2VydmljZUFkdmFuY2VkQ2F0ZWdvcmllcyIsPCU9aSU+LCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0VE1vZGVsS2V5KCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0S2V5TmFtZSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleVZhbHVlKCkpJT4iKTsKLTwlCi0gICAgIH0KLSAgIH0KLSU+Ci0gICAgc2hvd1B1Ymxpc2hGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyU+LDwlPXB1Ymxpc2hTZXJ2aWNlU3R5bGVJbmRleCU+KTsKLSAgfQotCi0gIGZ1bmN0aW9uIHNldERlZmF1bHRzRm9yUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VGb3JtcygpCi0gIHsKLTwlCi0gICBTdHJpbmcgcHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTdHlsZUluZGV4ID0gKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRV9JTlRFUkZBQ0VTKTsKLSU+Ci0gICAgZG9jdW1lbnQuZm9ybXNbc3R5bGVGb3Jtc1s8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTJT5dXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VfSU5URVJGQUNFUyU+WzwlPXB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlU3R5bGVJbmRleCU+XS5jaGVja2VkID0gdHJ1ZTsKLSAgICB2YXIgcHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0lNUExFJT5dKTsKLSAgICB2YXIgcHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVGb3JtID0gcHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVTZWN0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIikuaXRlbSgwKTsKLSAgICBzZXRBdXRoZW50aWNhdGlvblNlY3Rpb25EZWZhdWx0cyhwdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUZvcm0pOwotICAgIHB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlU2ltcGxlRm9ybS48JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV1NETF9VUkwlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMKSklPiI7Ci0gICAgcHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVGb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUpKSU+IjsKLSAgICBwdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT04lPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfSU5URVJGQUNFX0RFU0NSSVBUSU9OKSklPiI7Ci0KLSAgICAvLyBBZHZhbmNlZCBmb3JtIGRldGFpbHMuCi0gICAgdmFyIHB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTZWN0aW9uSWRzWzwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfQURWQU5DRUQlPl0pOwotICAgIHZhciBwdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkRm9ybSA9IHB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRTZWN0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIikuaXRlbSgwKTsKLSAgICBzZXRBdXRoZW50aWNhdGlvblNlY3Rpb25EZWZhdWx0cyhwdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkRm9ybSk7Ci0gICAgcHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZEZvcm0uPCU9QWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMKSklPiI7Ci0gICAgcHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZEZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUpKSU+IjsKLSAgICB2YXIgcHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZERlc2NyaXB0aW9uc1RhYmxlID0gZ2V0VGFibGUoInB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWREZXNjcmlwdGlvbnMiKTsKLTwlCi0gICBWZWN0b3Igc2lEZXNjcmlwdGlvblZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2xQSS5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0RFU0NSSVBUSU9OUyk7Ci0gICBpZiAoc2lEZXNjcmlwdGlvblZlY3RvciAhPSBudWxsKQotICAgewotICAgICBmb3IgKGludCBpPTA7aTxzaURlc2NyaXB0aW9uVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiA9IChEZXNjcmlwdGlvbilzaURlc2NyaXB0aW9uVmVjdG9yLmVsZW1lbnRBdChpKTsKLSU+Ci0gICAgYWRkTGFuZ3VhZ2VJbnB1dFJvdygicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZERlc2NyaXB0aW9ucyIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0RFU0NSSVBUSU9OX1RFWFRfVkFMVUUiKSklPiIpOwotICAgIHNldExhbmd1YWdlSW5wdXRSb3dTZXR0aW5ncygicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZERlc2NyaXB0aW9ucyIsPCU9aSU+LCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZGVzY3JpcHRpb24uZ2V0TGFuZygpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGRlc2NyaXB0aW9uLmdldFRleHQoKSklPiIpOwotPCUKLSAgICAgICBpZiAoIWZvcm1Ub29sUEkuaXNSb3dJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT05TLGkpKQotICAgICAgIHsKLSU+Ci0gICAgaGlnaGxpZ2h0RXJyYW50Um93KHB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWREZXNjcmlwdGlvbnNUYWJsZS5yb3dzWzwlPWklPitudW1iZXJPZkhlYWRlclJvd3NdLCJlcnJhbnRyb3ciKTsKLTwlCi0gICAgICAgfQotICAgICB9Ci0gICB9Ci0KLSAgIElkZW50aWZpZXJCYWcgc2lJZEJhZyA9IChJZGVudGlmaWVyQmFnKWZvcm1Ub29sUEkuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9JREVOVElGSUVSUyk7Ci0gICBpZiAoc2lJZEJhZyAhPSBudWxsKQotICAgewotICAgICBWZWN0b3Iga2V5ZWRSZWZlcmVuY2VWZWN0b3IgPSBzaUlkQmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCk7Ci0gICAgIGZvciAoaW50IGk9MDtpPGtleWVkUmVmZXJlbmNlVmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlrZXllZFJlZmVyZW5jZVZlY3Rvci5lbGVtZW50QXQoaSk7Ci0lPgotICAgIGFkZElkZW50aWZpZXJSb3coInB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRJZGVudGlmaWVycyIpOwotICAgIHNldElkZW50aWZpZXJSb3dTZXR0aW5ncygicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZElkZW50aWZpZXJzIiw8JT1pJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRUTW9kZWxLZXkoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlOYW1lKCkpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoa3IuZ2V0S2V5VmFsdWUoKSklPiIpOwotPCUKLSAgICAgfQotICAgfQotCi0gICBDYXRlZ29yeUJhZyBzaUNhdEJhZyA9IChDYXRlZ29yeUJhZylmb3JtVG9vbFBJLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfQ0FURUdPUklFUyk7Ci0gICBpZiAoc2lDYXRCYWcgIT0gbnVsbCkKLSAgIHsKLSAgICAgVmVjdG9yIGtleWVkUmVmZXJlbmNlVmVjdG9yID0gc2lDYXRCYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8a2V5ZWRSZWZlcmVuY2VWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gKEtleWVkUmVmZXJlbmNlKWtleWVkUmVmZXJlbmNlVmVjdG9yLmVsZW1lbnRBdChpKTsKLSU+Ci0gICAgYWRkQ2F0ZWdvcnlSb3coInB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRDYXRlZ29yaWVzIik7Ci0gICAgc2V0Q2F0ZWdvcnlSb3dTZXR0aW5ncygicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZENhdGVnb3JpZXMiLDwlPWklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldFRNb2RlbEtleSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleU5hbWUoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlWYWx1ZSgpKSU+Iik7Ci08JQotICAgICB9Ci0gICB9Ci0lPgotICAgIHNob3dQdWJsaXNoRm9ybSg8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTJT4sPCU9cHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTdHlsZUluZGV4JT4pOwotICB9Ci0KLSAgZnVuY3Rpb24gc2hvd01haW5Gb3JtKHB1Ymxpc2hWYWx1ZSkKLSAgewotICAgIGNsb3NlQWxsVWRkaUNoaWxkV2luZG93cygpOwotICAgIHZhciBwdWJsaXNoID0gcGFyc2VJbnQocHVibGlzaFZhbHVlKTsKLSAgICBmb3IgKHZhciBpPTA7aTxzZWN0aW9uSWRzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgaWYgKGkgPT0gcHVibGlzaCkKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkc1tpXSkuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgICAgZWxzZQotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWRzW2ldKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgIH0KLSAgICB2YXIgbG9hZFNjcmVlblRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRTY3JlZW4iKTsKLSAgICBpZiAobG9hZFNjcmVlblRhYmxlLnJvd3MubGVuZ3RoID4gMCkKLSAgICAgIGxvYWRTY3JlZW5UYWJsZS5kZWxldGVSb3coMCk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5TY3JlZW4iKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gIH0KLQotICBmdW5jdGlvbiBzaG93UHVibGlzaEZvcm0ocXVlcnlJdGVtSW5kZXgsc3R5bGUpCi0gIHsKLSAgICBjbG9zZUFsbFVkZGlDaGlsZFdpbmRvd3MoKTsKLSAgICB2YXIgcHVibGlzaFNlY3Rpb25JZHM7Ci0gICAgc3dpdGNoIChxdWVyeUl0ZW1JbmRleCkKLSAgICB7Ci0gICAgICBjYXNlIDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTJT46Ci0gICAgICAgIHB1Ymxpc2hTZWN0aW9uSWRzID0gcHVibGlzaEJ1c2luZXNzU2VjdGlvbklkczsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyU+OgotICAgICAgICBwdWJsaXNoU2VjdGlvbklkcyA9IHB1Ymxpc2hTZXJ2aWNlU2VjdGlvbklkczsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMlPjoKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHB1Ymxpc2hTZWN0aW9uSWRzID0gcHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTZWN0aW9uSWRzOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZm9yICh2YXIgaT0wO2k8cHVibGlzaFNlY3Rpb25JZHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAoaSA9PSBzdHlsZSkKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHVibGlzaFNlY3Rpb25JZHNbaV0pLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgICAgIGVsc2UKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHVibGlzaFNlY3Rpb25JZHNbaV0pLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gICAgfQotICB9Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIiBvblVubG9hZD0iY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCkiPgotICA8ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8dGFibGUgaWQ9ImxvYWRTY3JlZW4iPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfTE9BRF9JTl9QUk9HUkVTUyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgICA8ZGl2IGlkPSJtYWluU2NyZWVuIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci08JQotICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gInVkZGkvaW1hZ2VzL3B1Ymxpc2hfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgIFN0cmluZyB0aXRsZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfUFVCTElTSCIpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9mb3Jtcy9mb3JtaGVhZGVyLmluYyIgJT4KLSAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgdmFsaWduPSJtaWRkbGUiIG5vd3JhcD4KLSAgICAgICAgICAgIDxsYWJlbCBmb3I9InB1Ymxpc2giPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1BVQkxJU0giKSU+PC9sYWJlbD4KLSAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgbm93cmFwPgotICAgICAgICAgICAgPHNlbGVjdCBpZD0icHVibGlzaCIgb25DaGFuZ2U9InNob3dNYWluRm9ybSh0aGlzLnZhbHVlKSIgY2xhc3M9InNlbGVjdGxpc3QiPgotICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fQlVTSU5FU1NFUyU+Ij48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fQlVTSU5FU1MiKSU+Ci0gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyU+Ij48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fU0VSVklDRSIpJT4KLSAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VfSU5URVJGQUNFUyU+Ij48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fU0VSVklDRV9JTlRFUkZBQ0UiKSU+Ci0gICAgICAgICAgICA8L3NlbGVjdD4KLSAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L2Rpdj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoQnVzaW5lc3NGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoU2VydmljZUZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHNldERlZmF1bHRzKCk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoU2VydmljZUFkdmFuY2VkRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaFNlcnZpY2VBZHZhbmNlZEZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWY2YzBiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoU2VydmljZUFkdmFuY2VkRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlLZXlQcm9wZXJ0eSIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlN1YlF1ZXJ5S2V5UHJvcGVydHkiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSk7Ci0lPgotPGRpdiBpZD0icHVibGlzaFNlcnZpY2VBZHZhbmNlZCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL1JlZ1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBY3Rpb25KU1AuanNwIikpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG9uU3VibWl0PSJyZXR1cm4gcHJvY2Vzc1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRGb3JtKHRoaXMpIj4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0dFVCU+Ij4gIAotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX0lOSVRJQVRFRCU+Ij4gICAgCi0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5ORVdfU1VCUVVFUllfUVVFUllfSVRFTSU+Ij4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTEwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9QVUJMSVNIX1NFUlZJQ0VfQURWQU5DRURfREVTQyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRBdXRoZW50aWNhdGlvbiIpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9hdXRoZW50aWNhdGlvbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgYm9vbGVhbiB0YWJsZUhhc0Vycm9ycyA9ICFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfQlVTSU5FU1MpOwotICAgU3RyaW5nW10gYnVzU3BlY2lmaWNJbmZvID0geyJGT1JNX0xBQkVMX0JVU0lORVNTIiwobmV3IEJvb2xlYW4odGFibGVIYXNFcnJvcnMpKS50b1N0cmluZygpLFN0cmluZy52YWx1ZU9mKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9CVVNJTkVTU0VTKSwicHVibGlzaFNlcnZpY2VBZHZhbmNlZCIsVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0JVU0lORVNTfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicHVibGlzaFNlcnZpY2VBZHZhbmNlZEJ1c2luZXNzIik7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoYnVzU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvdWRkaU9iamVjdHNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBub3dyYXAgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTMwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8bGFiZWwgZm9yPSJpbnB1dF9wdWJsaXNoX3NlcnZpY2VfYWR2YW5jZV93c2RsX3VybCI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1dTRExfVVJMIiklPjwvbGFiZWw+Ci08JQotICAgaWYgKCFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfV1NETF9VUkwpKQotICAgewotJT4KLSAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci08JQotICAgfQotJT4KLSAgICAgICAgPC90ZD4KLSAgICAgICAgPHRkIG5vd3JhcCBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlbldTRExCcm93c2VyKCdwdWJsaXNoU2VydmljZUFkdmFuY2VkJyw8JT1BY3Rpb25JbnB1dHMuV1NETF9UWVBFX1NFUlZJQ0UlPikiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0JST1dTRSIpJT48L2E+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNvbHNwYW49Mz4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X3B1Ymxpc2hfc2VydmljZV9hZHZhbmNlX3dzZGxfdXJsIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV1NETF9VUkwlPiIgY2xhc3M9InRleHRlbnRlciI+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci08JQotICAgdGFibGVIYXNFcnJvcnMgPSAhZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFUyk7Ci0gICBTdHJpbmdbXSBzZXJ2aWNlSW50ZXJmYWNlU3BlY2lmaWNJbmZvID0geyJGT1JNX0xBQkVMX1NFUlZJQ0VfSU5URVJGQUNFUyIsKG5ldyBCb29sZWFuKHRhYmxlSGFzRXJyb3JzKSkudG9TdHJpbmcoKSxTdHJpbmcudmFsdWVPZihVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTKSwicHVibGlzaFNlcnZpY2VBZHZhbmNlZCIsVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1NFUlZJQ0VfSU5URVJGQUNFU307Ci0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRTZXJ2aWNlSW50ZXJmYWNlIik7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoc2VydmljZUludGVyZmFjZVNwZWNpZmljSW5mbyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL3VkZGlPYmplY3RzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWROYW1lcyIpOwotICAgU3RyaW5nW10gbmFtZVNwZWNpZmljSW5mbyA9IHsiRk9STV9MQUJFTF9OQU1FUyIsIkZPUk1fTEFCRUxfTkFNRSIsU3RyaW5nLnZhbHVlT2YoIWZvcm1Ub29sUEkuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9OQU1FUykpfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhuYW1lU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvbGFuZ3VhZ2VJbnB1dF90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJwdWJsaXNoU2VydmljZUFkdmFuY2VkRGVzY3JpcHRpb25zIik7Ci0gICBTdHJpbmdbXSBkZXNjU3BlY2lmaWNJbmZvID0geyJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OUyIsIkZPUk1fTEFCRUxfREVTQ1JJUFRJT04iLFN0cmluZy52YWx1ZU9mKCFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfREVTQ1JJUFRJT05TKSl9OwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKGRlc2NTcGVjaWZpY0luZm8pOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9sYW5ndWFnZUlucHV0X3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInB1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRDYXRlZ29yaWVzIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2NhdGVnb3JpZXNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8L2Zvcm0+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoU2VydmljZUZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyYTNmZjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPGRpdiBpZD0icHVibGlzaFNlcnZpY2UiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gbmFtZT0icHVibGlzaFNlcnZpY2VTdHlsZSI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1BVQkxJU0hfRk9STSIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJyYWRpb19wdWJsaXNoX3NlcnZpY2Vfc2ltcGxlIiBjbGFzcz0icmFkaW8iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRVMlPiIgb25DbGljaz0ic2hvd1B1Ymxpc2hGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyU+LDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0lNUExFJT4pIj48bGFiZWwgZm9yPSJyYWRpb19wdWJsaXNoX3NlcnZpY2Vfc2ltcGxlIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9SQURJT19TSU1QTEUiKSU+PC9sYWJlbD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJyYWRpb19wdWJsaXNoX3NlcnZpY2VfYWR2YW5jZSIgY2xhc3M9InJhZGlvIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX1NFUlZJQ0VTJT4iIG9uQ2xpY2s9InNob3dQdWJsaXNoRm9ybSg8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRVMlPiw8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0FEVkFOQ0VEJT4pIj48bGFiZWwgZm9yPSJyYWRpb19wdWJsaXNoX3NlcnZpY2VfYWR2YW5jZSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fUkFESU9fQURWQU5DRUQiKSU+PC9sYWJlbD4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPC9mb3JtPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlU2ltcGxlRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvUmVnUHVibGlzaFNlcnZpY2VBZHZhbmNlZEZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9kaXY+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZEZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRlY2E3OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZEZvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InN1YlF1ZXJ5S2V5UHJvcGVydHkiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5TdWJRdWVyeUtleVByb3BlcnR5IiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgRm9ybVRvb2wgZm9ybVRvb2wgPSAoRm9ybVRvb2wpKHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0gICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSA9ICgoTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UpZm9ybVRvb2wpLmdldEZvcm1Ub29sUHJvcGVydGllcyhzdWJRdWVyeUtleVByb3BlcnR5LmdldFN1YlF1ZXJ5S2V5KCkpOwotJT4KLTxkaXYgaWQ9InB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIHByb2Nlc3NQdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkRm9ybSh0aGlzKSI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0xMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUFVCTElTSF9TRVJWSUNFX0lOVEVSRkFDRV9BRFZBTkNFRF9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZEF1dGhlbnRpY2F0aW9uIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgbm93cmFwIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfcHVibGlzaF9zZXJ2aWNlX2ludGVyZmFjZV9hZHZhbmNlX3dzZGxfdXJsIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9VUkwiKSU+PC9sYWJlbD4KLTwlCi0gICBpZiAoIWZvcm1Ub29sUEkuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfV1NETF9VUkwpKQotICAgewotJT4KLSAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci08JQotICAgfQotJT4KLSAgICAgICAgPC90ZD4KLSAgICAgICAgPHRkIG5vd3JhcCBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlbldTRExCcm93c2VyKCdwdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkJyw8JT1BY3Rpb25JbnB1dHMuV1NETF9UWVBFX1NFUlZJQ0VfSU5URVJGQUNFJT4pIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTElOS19CUk9XU0UiKSU+PC9hPgotICAgICAgICA8L3RkPgotICAgICAgICA8dGQgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTM+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dF9wdWJsaXNoX3NlcnZpY2VfaW50ZXJmYWNlX2FkdmFuY2Vfd3NkbF91cmwiIG5hbWU9IjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCU+IiBjbGFzcz0idGV4dGVudGVyIj4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTMgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfcHVibGlzaF9zZXJ2aWNlX2ludGVyZmFjZV9hZHZhbmNlX25hbWUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC9sYWJlbD4KLTwlCi0gICBpZiAoIWZvcm1Ub29sUEkuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSkpCi0gICB7Ci0lPgotICAgICAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLTwlCi0gICB9Ci0lPgotICAgICAgICA8L3RkPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY29sc3Bhbj0zPiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X3B1Ymxpc2hfc2VydmljZV9pbnRlcmZhY2VfYWR2YW5jZV9uYW1lIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX05BTUUlPiIgY2xhc3M9InRleHRlbnRlciI+IDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJwdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkRGVzY3JpcHRpb25zIik7Ci0gICBTdHJpbmdbXSBkZXNjU3BlY2lmaWNJbmZvID0geyJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OUyIsIkZPUk1fTEFCRUxfREVTQ1JJUFRJT04iLFN0cmluZy52YWx1ZU9mKCFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0RFU0NSSVBUSU9OUykpfTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhkZXNjU3BlY2lmaWNJbmZvKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvbGFuZ3VhZ2VJbnB1dF90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJwdWJsaXNoU2VydmljZUludGVyZmFjZUFkdmFuY2VkSWRlbnRpZmllcnMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvaWRlbnRpZmllcnNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VBZHZhbmNlZENhdGVnb3JpZXMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvY2F0ZWdvcmllc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZm9ybT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZhODJjZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+Ci08ZGl2IGlkPSJwdWJsaXNoU2VydmljZUludGVyZmFjZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotICA8Zm9ybSBuYW1lPSJwdWJsaXNoU2VydmljZUludGVyZmFjZVN0eWxlIj4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUFVCTElTSF9GT1JNIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InJhZGlvX3B1Ymxpc2hfc2VydmljZV9pbnRlcmZhY2Vfc2ltcGxlIiBjbGFzcz0icmFkaW8iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfU1RZTEVfU0VSVklDRV9JTlRFUkZBQ0VTJT4iIG9uQ2xpY2s9InNob3dQdWJsaXNoRm9ybSg8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTJT4sPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TSU1QTEUlPikiPjxsYWJlbCBmb3I9InJhZGlvX3B1Ymxpc2hfc2VydmljZV9pbnRlcmZhY2Vfc2ltcGxlIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9SQURJT19TSU1QTEUiKSU+PC9sYWJlbD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJyYWRpb19wdWJsaXNoX3NlcnZpY2VfaW50ZXJmYWNlX2FkdmFuY2UiIGNsYXNzPSJyYWRpbyIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9TVFlMRV9TRVJWSUNFX0lOVEVSRkFDRVMlPiIgb25DbGljaz0ic2hvd1B1Ymxpc2hGb3JtKDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFX0lOVEVSRkFDRVMlPiw8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX1NUWUxFX0FEVkFOQ0VEJT4pIj48bGFiZWwgZm9yPSJyYWRpb19wdWJsaXNoX3NlcnZpY2VfaW50ZXJmYWNlX2FkdmFuY2UiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1JBRElPX0FEVkFOQ0VEIiklPjwvbGFiZWw+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZm9ybT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoU2VydmljZUludGVyZmFjZVNpbXBsZUZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlQWR2YW5jZWRGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlU2ltcGxlRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODViMDZlYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InN1YlF1ZXJ5S2V5UHJvcGVydHkiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5TdWJRdWVyeUtleVByb3BlcnR5IiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgRm9ybVRvb2wgZm9ybVRvb2wgPSAoRm9ybVRvb2wpKHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0gICBGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UgZm9ybVRvb2xQSSA9ICgoTXVsdGlwbGVGb3JtVG9vbFByb3BlcnRpZXNJbnRlcmZhY2UpZm9ybVRvb2wpLmdldEZvcm1Ub29sUHJvcGVydGllcyhzdWJRdWVyeUtleVByb3BlcnR5LmdldFN1YlF1ZXJ5S2V5KCkpOwotJT4KLTxkaXYgaWQ9InB1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlU2ltcGxlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvUmVnUHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBY3Rpb25KU1AuanNwIikpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG9uU3VibWl0PSJyZXR1cm4gaGFuZGxlU3VibWl0KHRoaXMpIj4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTEwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9QVUJMSVNIX1NFUlZJQ0VfSU5URVJGQUNFX1NJTVBMRV9ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPCUKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgicHVibGlzaFNlcnZpY2VJbnRlcmZhY2VTaW1wbGVBdXRoZW50aWNhdGlvbiIpOwotJT4gICAgICAKLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9hdXRoZW50aWNhdGlvbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+ICAKLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgbm93cmFwIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfcHVibGlzaF9zZXJ2aWNlX2ludGVyZmFjZV9zaW1wbGVfd3NkbF91cmwiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9XU0RMX1VSTCIpJT48L2xhYmVsPgotPCUKLSAgIGlmICghZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfV1NETF9VUkwpKQotICAgewotJT4KLSAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci08JQotICAgfQotJT4gICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICA8L3RkPgotICAgICAgICA8dGQgbm93cmFwIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuV1NETEJyb3dzZXIoJ3B1Ymxpc2hTZXJ2aWNlSW50ZXJmYWNlU2ltcGxlJyw8JT1BY3Rpb25JbnB1dHMuV1NETF9UWVBFX1NFUlZJQ0VfSU5URVJGQUNFJT4pIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTElOS19CUk9XU0UiKSU+PC9hPgotICAgICAgICA8L3RkPgotICAgICAgICA8dGQgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTM+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dF9wdWJsaXNoX3NlcnZpY2VfaW50ZXJmYWNlX3NpbXBsZV93c2RsX3VybCIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMJT4iIGNsYXNzPSJ0ZXh0ZW50ZXIiPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNvbHNwYW49MyBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICA8bGFiZWwgZm9yPSJpbnB1dF9wdWJsaXNoX3NlcnZpY2VfaW50ZXJmYWNlX3NpbXBsZV9uYW1lIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FIiklPjwvbGFiZWw+Ci08JQotICAgaWYgKCFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FKSkKLSAgIHsKLSU+Ci0gICAgICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotPCUKLSAgIH0KLSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTM+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXRfcHVibGlzaF9zZXJ2aWNlX2ludGVyZmFjZV9zaW1wbGVfbmFtZSIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSU+IiBjbGFzcz0idGV4dGVudGVyIj4gPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTMgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfcHVibGlzaF9zZXJ2aWNlX2ludGVyZmFjZV9zaW1wbGVfZGVzYyI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfREVTQ1JJUFRJT04iKSU+PC9sYWJlbD4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTM+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXRfcHVibGlzaF9zZXJ2aWNlX2ludGVyZmFjZV9zaW1wbGVfZGVzYyIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9JTlRFUkZBQ0VfREVTQ1JJUFRJT04lPiIgY2xhc3M9InRleHRlbnRlciI+IDwvdGQ+Ci0gICAgICA8L3RyPiAgICAgICAgICAKLSAgICA8L3RhYmxlPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9zaW1wbGVDb21tb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8L2Zvcm0+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZWdQdWJsaXNoU2VydmljZVNpbXBsZUZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlU2ltcGxlRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhY2FmMWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1JlZ1B1Ymxpc2hTZXJ2aWNlU2ltcGxlRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlLZXlQcm9wZXJ0eSIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLlN1YlF1ZXJ5S2V5UHJvcGVydHkiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSlmb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHN1YlF1ZXJ5S2V5UHJvcGVydHkuZ2V0U3ViUXVlcnlLZXkoKSk7Ci0lPgotPGRpdiBpZD0icHVibGlzaFNlcnZpY2VTaW1wbGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9SZWdQdWJsaXNoU2VydmljZVNpbXBsZUFjdGlvbkpTUC5qc3AiKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgb25TdWJtaXQ9InJldHVybiBwcm9jZXNzUHVibGlzaFNlcnZpY2VTaW1wbGVGb3JtKHRoaXMpIj4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0dFVCU+Ij4gIAotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuTkVXX1NVQlFVRVJZX0lOSVRJQVRFRCU+Ij4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLk5FV19TVUJRVUVSWV9RVUVSWV9JVEVNJT4iPgotICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MTAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1BVQkxJU0hfU0VSVklDRV9TSU1QTEVfREVTQyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInB1Ymxpc2hTZXJ2aWNlU2ltcGxlQXV0aGVudGljYXRpb24iKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvYXV0aGVudGljYXRpb25fdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIGJvb2xlYW4gdGFibGVIYXNFcnJvcnMgPSAhZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTUyk7Ci0gICBTdHJpbmdbXSBidXNTcGVjaWZpY0luZm8gPSB7IkZPUk1fTEFCRUxfQlVTSU5FU1MiLChuZXcgQm9vbGVhbih0YWJsZUhhc0Vycm9ycykpLnRvU3RyaW5nKCksU3RyaW5nLnZhbHVlT2YoVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMpLCJwdWJsaXNoU2VydmljZVNpbXBsZSIsVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTU307Ci0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInB1Ymxpc2hTZXJ2aWNlU2ltcGxlQnVzaW5lc3MiKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhidXNTcGVjaWZpY0luZm8pOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy91ZGRpT2JqZWN0c190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIG5vd3JhcCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X3B1Ymxpc2hfc2VydmljZV9zaW1wbGVfd3NkbF91cmwiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9XU0RMX1VSTCIpJT48L2xhYmVsPgotPCUKLSAgIGlmICghZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9XU0RMX1VSTCkpCi0gICB7Ci0lPgotICAgICAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLTwlCi0gICB9Ci0lPgotICAgICAgICA8L3RkPgotICAgICAgICA8dGQgbm93cmFwIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuV1NETEJyb3dzZXIoJ3B1Ymxpc2hTZXJ2aWNlU2ltcGxlJyw8JT1BY3Rpb25JbnB1dHMuV1NETF9UWVBFX1NFUlZJQ0UlPikiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0JST1dTRSIpJT48L2E+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNvbHNwYW49Mz4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X3B1Ymxpc2hfc2VydmljZV9zaW1wbGVfd3NkbF91cmwiIG5hbWU9IjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCU+IiBjbGFzcz0idGV4dGVudGVyIj4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTMgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfcHVibGlzaF9zZXJ2aWNlX3NpbXBsZV9uYW1lIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FIiklPjwvbGFiZWw+Ci08JQotICAgaWYgKCFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1NJTVBMRV9TRVJWSUNFX05BTUUpKQotICAgewotJT4KLSAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci08JQotICAgfQotJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNvbHNwYW49Mz4gPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dF9wdWJsaXNoX3NlcnZpY2Vfc2ltcGxlX25hbWUiIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfTkFNRSU+IiBjbGFzcz0idGV4dGVudGVyIj4gPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjb2xzcGFuPTMgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfcHVibGlzaF9zZXJ2aWNlX3NpbXBsZV9kZXNjIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ERVNDUklQVElPTiIpJT48L2xhYmVsPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNvbHNwYW49Mz4gPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dF9wdWJsaXNoX3NlcnZpY2Vfc2ltcGxlX2Rlc2MiIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfU0lNUExFX1NFUlZJQ0VfREVTQ1JJUFRJT04lPiIgY2xhc3M9InRleHRlbnRlciI+IDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZm9ybT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1Jlc3VsdHNGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9SZXN1bHRzRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0NDZmZGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1Jlc3VsdHNGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS5idXNpbmVzcy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLmRhdGF0eXBlLnNlcnZpY2UuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ic3ViUXVlcnlUcmFuc2ZlclRhcmdldEhvbGRlciIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gICBzdWJRdWVyeVRyYW5zZmVyVGFyZ2V0SG9sZGVyLnJlbW92ZUFsbEVsZW1lbnRzKCk7Ci0lPgotPC9qc3A6dXNlQmVhbj4gICAKLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBUcmVlRWxlbWVudCB0cmVlRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgU3ViUXVlcnlUcmFuc2ZlclRhcmdldCBzdWJRdWVyeVRyYW5zZmVyVGFyZ2V0ID0gbnVsbDsKLSAgIGJvb2xlYW4gaGFzVGFyZ2V0ID0gZmFsc2U7Ci0gICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBRdWVyeUVsZW1lbnQpCi0gICB7Ci0gICAgIHN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQgPSAoU3ViUXVlcnlUcmFuc2ZlclRhcmdldCl0cmVlRWxlbWVudC5nZXRQcm9wZXJ0eUFzT2JqZWN0KFVERElNb2RlbENvbnN0YW50cy5TVUJRVUVSWV9UUkFOU0ZFUl9UQVJHRVQpOwotICAgICBpZiAoc3ViUXVlcnlUcmFuc2ZlclRhcmdldCAhPSBudWxsICYmIHN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQuZ2V0VGFyZ2V0Rm9ybVRvb2woKSAhPSBudWxsKQotICAgICB7Ci0gICAgICAgc3ViUXVlcnlUcmFuc2ZlclRhcmdldEhvbGRlci5yZW1vdmVBbGxFbGVtZW50cygpOwotICAgICAgIHN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXRIb2xkZXIuYWRkRWxlbWVudChzdWJRdWVyeVRyYW5zZmVyVGFyZ2V0KTsKLSAgICAgICBoYXNUYXJnZXQgPSB0cnVlOwotICAgICB9Ci0gICB9Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9USVRMRV9SRVNVTFRTIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvcmVzdW1lcHJveHlsb2FkcGFnZS5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvcmVzdWx0cy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKQotICB7Ci08JQotICAgVmVjdG9yIGNoaWxkTm9kZXMgPSBzZWxlY3RlZE5vZGUuZ2V0Q2hpbGROb2RlcygpOwotICAgZm9yIChpbnQgaT0wO2k8Y2hpbGROb2Rlcy5zaXplKCk7aSsrKQotICAgewotICAgICBOb2RlIGNoaWxkTm9kZSA9IChOb2RlKWNoaWxkTm9kZXMuZWxlbWVudEF0KGkpOwotICAgICBTdHJpbmcgdXJsID0gU2VsZWN0TmF2aWdhdG9yTm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKGNoaWxkTm9kZS5nZXROb2RlSWQoKSxmYWxzZSk7Ci0gICAgIFN0cmluZyBuYW1lID0gbnVsbDsKLSAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gbnVsbDsKLSAgICAgaWYgKGNoaWxkTm9kZSBpbnN0YW5jZW9mIEJ1c2luZXNzTm9kZSkKLSAgICAgewotICAgICAgIEJ1c2luZXNzRWxlbWVudCBidXNFbGVtZW50ID0gKEJ1c2luZXNzRWxlbWVudCljaGlsZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICBCdXNpbmVzc0VudGl0eSBiZSA9IGJ1c0VsZW1lbnQuZ2V0QnVzaW5lc3NFbnRpdHkoKTsKLSAgICAgICBuYW1lID0gYmUuZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKTsKLSAgICAgICBkZXNjcmlwdGlvbiA9IGJlLmdldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygpOwotICAgICB9Ci0gICAgIGVsc2UgaWYgKGNoaWxkTm9kZSBpbnN0YW5jZW9mIFNlcnZpY2VOb2RlKQotICAgICB7Ci0gICAgICAgU2VydmljZUVsZW1lbnQgc2VydmljZUVsZW1lbnQgPSAoU2VydmljZUVsZW1lbnQpY2hpbGROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgICAgQnVzaW5lc3NTZXJ2aWNlIGJzID0gc2VydmljZUVsZW1lbnQuZ2V0QnVzaW5lc3NTZXJ2aWNlKCk7Ci0gICAgICAgbmFtZSA9IGJzLmdldERlZmF1bHROYW1lU3RyaW5nKCk7Ci0gICAgICAgZGVzY3JpcHRpb24gPSBicy5nZXREZWZhdWx0RGVzY3JpcHRpb25TdHJpbmcoKTsKLSAgICAgfQotICAgICBlbHNlIGlmIChjaGlsZE5vZGUgaW5zdGFuY2VvZiBTZXJ2aWNlSW50ZXJmYWNlTm9kZSkKLSAgICAgewotICAgICAgIFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IHNpRWxlbWVudCA9IChTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudCljaGlsZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgICBUTW9kZWwgdE1vZGVsID0gc2lFbGVtZW50LmdldFRNb2RlbCgpOwotICAgICAgIG5hbWUgPSB0TW9kZWwuZ2V0TmFtZVN0cmluZygpOwotICAgICAgIGRlc2NyaXB0aW9uID0gdE1vZGVsLmdldERlZmF1bHREZXNjcmlwdGlvblN0cmluZygpOwotICAgICB9Ci0lPgotICAgIGFkZFJlc3VsdFJvdygiUmVzdWx0cyIsPCU9Y2hpbGROb2RlLmdldE5vZGVJZCgpJT4sIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh1cmwpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUpJT4iLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoZGVzY3JpcHRpb24pJT4iKTsKLTwlCi0gICB9Ci0lPgotICAgIHZhciBsb2FkU2NyZWVuVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZFNjcmVlbiIpOwotICAgIGlmIChsb2FkU2NyZWVuVGFibGUucm93cy5sZW5ndGggPiAwKQotICAgICAgbG9hZFNjcmVlblRhYmxlLmRlbGV0ZVJvdygwKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblNjcmVlbiIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLTxkaXYgaWQ9ImNvbnRlbnQiPgotICA8dGFibGUgaWQ9ImxvYWRTY3JlZW4iPgotICAgIDx0cj4KLSAgICAgIDx0ZD4KLSAgICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfTE9BRF9JTl9QUk9HUkVTUyIpJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLSAgPGRpdiBpZD0ibWFpblNjcmVlbiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotPCUKLSAgIFN0cmluZyB0aXRsZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfUVVFUllfUkVTVUxUUyIpOwotICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiI7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL3VkZGkvZm9ybXMvcmVzdWx0c2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDxmb3JtIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7Ij4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgU3RyaW5nIHRhYmxlVGl0bGU7Ci0gICBpbnQgaXRlbVR5cGUgPSBJbnRlZ2VyLnBhcnNlSW50KHRyZWVFbGVtZW50LmdldFByb3BlcnR5QXNTdHJpbmcoVURESU1vZGVsQ29uc3RhbnRzLlFVRVJZX1RZUEUpKTsgICAKLSAgIHN3aXRjaCAoaXRlbVR5cGUpCi0gICB7Ci0gICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVM6Ci0gICAgICAgdGFibGVUaXRsZSA9IHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9CVVNJTkVTU0VTIik7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX1NFUlZJQ0VTOgotICAgICAgIHRhYmxlVGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fU0VSVklDRVMiKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTOgotICAgICBkZWZhdWx0OgotICAgICAgIHRhYmxlVGl0bGUgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fU0VSVklDRV9JTlRFUkZBQ0VTIik7Ci0gICB9Ci0gICBTdHJpbmdbXSBvdGhlclByb3BlcnRpZXMgPSB7dGFibGVUaXRsZSwiIn07Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiUmVzdWx0cyIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKG90aGVyUHJvcGVydGllcyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL3Jlc3VsdHNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgICAgPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTIgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgPHRyPgotPCUKLSAgIGlmIChoYXNUYXJnZXQpCi0gICB7Ci0lPgotICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgYWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0JVVFRPTl9UUkFOU0ZFUiIpJT4iIG9uQ2xpY2s9InRyYW5zZmVyU2VsZWN0aW9ucygnUmVzdWx0cycsdGhpcy5mb3JtKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgPC90ZD4KLTwlCi0gICB9Ci0lPgotICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgYWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fUkVGUkVTSCIpJT4iIG9uQ2xpY2s9InJlZnJlc2hTZWxlY3Rpb25zKCdSZXN1bHRzJyx0aGlzLmZvcm0pIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgYWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0JVVFRPTl9BRERfVE9fRkFWT1JJVEVTIiklPiIgb25DbGljaz0iYWRkU2VsZWN0aW9uc1RvRmF2b3JpdGVzKCdSZXN1bHRzJyx0aGlzLmZvcm0pIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgYWxpZ249ImJvdHRvbSIgbm93cmFwPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0JVVFRPTl9DTEVBUiIpJT4iIG9uQ2xpY2s9ImNsZWFyU2VsZWN0aW9ucygnUmVzdWx0cycsdGhpcy5mb3JtKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvZm9ybT4KLSAgPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHNldERlZmF1bHRzKCk7Ci0gIHJlc3VtZVByb3h5TG9hZFBhZ2UoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1NlcnZpY2VEZXRhaWxzRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvU2VydmljZURldGFpbHNGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkxNjAyYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvU2VydmljZURldGFpbHNGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS51dGlsLlVkZGk0akhlbHBlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLmRhdGF0eXBlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGoudXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBUb29sTWFuYWdlciBjdXJyZW50VG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoY3VycmVudFRvb2xNYW5hZ2VyLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIFNlcnZpY2VFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gKFNlcnZpY2VFbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgVURESU1haW5Ob2RlIHVkZGlNYWluTm9kZSA9IChVRERJTWFpbk5vZGUpbmF2aWdhdG9yTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgUmVnaXN0cnlOb2RlIHJlZ05vZGUgPSB1ZGRpTWFpbk5vZGUuZ2V0UmVnaXN0cnlOb2RlKHNlbGVjdGVkTm9kZSk7Ci0gICBSZWdpc3RyeUVsZW1lbnQgcmVnRWxlbWVudCA9IChSZWdpc3RyeUVsZW1lbnQpcmVnTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfU0VSVklDRV9ERVRBSUxTIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvcmVzdW1lcHJveHlsb2FkcGFnZS5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL3NjcmlwdHMvZGV0YWlsc3RhYmxlcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKQotICB7Ci0gICAgdmFyIHNlcnZpY2VEZXRhaWxzV1NETFVSTFRhYmxlID0gZ2V0VGFibGUoInNlcnZpY2VEZXRhaWxzV1NETFVSTCIpOwotICAgIHZhciBzZXJ2aWNlRGV0YWlsc05hbWVzVGFibGUgPSBnZXRUYWJsZSgic2VydmljZURldGFpbHNOYW1lcyIpOwotICAgIHZhciBzZXJ2aWNlRGV0YWlsc0Rlc2NyaXB0aW9uc1RhYmxlID0gZ2V0VGFibGUoInNlcnZpY2VEZXRhaWxzRGVzY3JpcHRpb25zIik7Ci08JQotICAgTGlzdEVsZW1lbnQgd3NkbFVSTExpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCk7Ci0gICBTdHJpbmcgd3NkbFVSTCA9IG51bGw7Ci0gICBpZiAod3NkbFVSTExpc3RFbGVtZW50ID09IG51bGwpCi0gICB7Ci0gICAgIHRyeQotICAgICB7Ci0gICAgICAgVWRkaTRqSGVscGVyIHVkZGk0akhlbHBlciA9IG5ldyBVZGRpNGpIZWxwZXIoKTsKLSAgICAgICB3c2RsVVJMID0gdWRkaTRqSGVscGVyLmdldFdTREwoc2VydmljZUVsZW1lbnQuZ2V0QnVzaW5lc3NTZXJ2aWNlKCksIHNlcnZpY2VFbGVtZW50LmdldFJlZ2lzdHJ5RWxlbWVudCgpLmdldFByb3h5KCkpOwotICAgICAgIHVkZGk0akhlbHBlci5nZXRXU0RMRGVmaW5pdGlvbih3c2RsVVJMKTsKLSAgICAgICBpZiAod3NkbFVSTCA9PSBudWxsKQotICAgICAgICAgd3NkbFVSTCA9ICJ0ZW1wLndzZGwiOwotICAgICB9Ci0gICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICAgewotICAgICAgIHdzZGxVUkwgPSAiIjsKLSAgICAgICBmb3JtVG9vbC5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX1dTRExfVVJMKTsKLSAgICAgfQotICAgICB3c2RsVVJMTGlzdEVsZW1lbnQgPSBuZXcgTGlzdEVsZW1lbnQod3NkbFVSTCk7Ci0gICAgIHdzZGxVUkxMaXN0RWxlbWVudC5zZXRUYXJnZXRWaWV3VG9vbEluZm8oLTEsLTEsMCk7Ci0gICAgIGZvcm1Ub29sLnNldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCx3c2RsVVJMTGlzdEVsZW1lbnQpOwotICAgfQotICAgZWxzZQotICAgICB3c2RsVVJMID0gKFN0cmluZyl3c2RsVVJMTGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICBib29sZWFuIGlzRXJyb3IgPSAhZm9ybVRvb2wuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCk7Ci0gICBib29sZWFuIGlzTmV3SXRlbSA9ICh3c2RsVVJMTGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKTsKLSU+Ci0gICAgYWRkRGV0YWlsc1NpbmdsZUl0ZW1Sb3coInNlcnZpY2VEZXRhaWxzV1NETFVSTCIsPCU9aXNFcnJvcnx8aXNOZXdJdGVtJT4pOwotICAgIHNldERldGFpbHNXU0RMVVJMU2luZ2xlSXRlbVJvdygic2VydmljZURldGFpbHNXU0RMVVJMIiw8JT1VRERJQWN0aW9uSW5wdXRzLldTRExfVFlQRV9TRVJWSUNFJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZSh3c2RsVVJMKSU+Iik7Ci08JQotICAgaWYgKGlzRXJyb3IpCi0gICB7Ci0lPgotICAgIGhpZ2hsaWdodEVycmFudFJvdyhzZXJ2aWNlRGV0YWlsc1dTRExVUkxUYWJsZS5yb3dzW251bWJlck9mSGVhZGVyUm93c10sImVycmFudFJvdyIpOwotPCUKLSAgIH0KLQotICAgVmVjdG9yIG5hbWVJbmRleFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTKTsKLSAgIGlmIChuYW1lSW5kZXhWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8bmFtZUluZGV4VmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudCluYW1lSW5kZXhWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgIE5hbWUgbmFtZSA9IChOYW1lKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgIGlzRXJyb3IgPSAhZm9ybVRvb2wuaXNSb3dJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9OQU1FUyxpKTsKLSAgICAgICBpc05ld0l0ZW0gPSAobGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKTsKLSU+Ci0gICAgYWRkRGV0YWlsc0xhbmd1YWdlSW5wdXRSb3coInNlcnZpY2VEZXRhaWxzTmFtZXMiLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9OQU1FX1RFWFRfVkFMVUUiKSklPiIsPCU9aXNFcnJvcnx8aXNOZXdJdGVtJT4pOwotICAgIHNldERldGFpbHNMYW5ndWFnZUlucHV0Um93KCJzZXJ2aWNlRGV0YWlsc05hbWVzIiw8JT1pJT4sPCU9bGlzdEVsZW1lbnQuZ2V0Vmlld0lkKCklPiwiPCU9bmFtZS5nZXRMYW5nKCklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShuYW1lLmdldFRleHQoKSklPiIpOwotPCUKLSAgICAgICBpZiAoaXNFcnJvcikKLSAgICAgICB7Ci0lPgotICAgIGhpZ2hsaWdodEVycmFudFJvdyhzZXJ2aWNlRGV0YWlsc05hbWVzVGFibGUucm93c1s8JT1pJT4rbnVtYmVyT2ZIZWFkZXJSb3dzXSwiZXJyYW50Um93Iik7Ci08JQotICAgICAgIH0KLSAgICAgfQotICAgfQotCi0gICBWZWN0b3IgZGVzY3JpcHRpb25JbmRleFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0RFU0NSSVBUSU9OUyk7Ci0gICBpZiAoZGVzY3JpcHRpb25JbmRleFZlY3RvciAhPSBudWxsKQotICAgewotICAgICBmb3IgKGludCBpPTA7aTxkZXNjcmlwdGlvbkluZGV4VmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClkZXNjcmlwdGlvbkluZGV4VmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICBEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiA9IChEZXNjcmlwdGlvbilsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICBpc0Vycm9yID0gIWZvcm1Ub29sLmlzUm93SW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfREVTQ1JJUFRJT05TLGkpOwotICAgICAgIGlzTmV3SXRlbSA9IChsaXN0RWxlbWVudC5nZXRUYXJnZXRWaWV3SWQoKSA9PSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpOwotJT4KLSAgICBhZGREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvdygic2VydmljZURldGFpbHNEZXNjcmlwdGlvbnMiLCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9ERVNDUklQVElPTl9URVhUX1ZBTFVFIikpJT4iLDwlPWlzRXJyb3J8fGlzTmV3SXRlbSU+KTsKLSAgICBzZXREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvdygic2VydmljZURldGFpbHNEZXNjcmlwdGlvbnMiLDwlPWklPiw8JT1saXN0RWxlbWVudC5nZXRWaWV3SWQoKSU+LCI8JT1kZXNjcmlwdGlvbi5nZXRMYW5nKCklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShkZXNjcmlwdGlvbi5nZXRUZXh0KCkpJT4iKTsKLTwlCi0gICAgICAgaWYgKGlzRXJyb3IpCi0gICAgICAgewotJT4KLSAgICBoaWdobGlnaHRFcnJhbnRSb3coc2VydmljZURldGFpbHNEZXNjcmlwdGlvbnNUYWJsZS5yb3dzWzwlPWklPitudW1iZXJPZkhlYWRlclJvd3NdLCJlcnJhbnRSb3ciKTsKLTwlCi0gICAgICAgfQotICAgICB9Ci0gICB9Ci0KLSAgIFZlY3RvciBjYXRWZWN0b3IgPSAoVmVjdG9yKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9DQVRFR09SSUVTKTsKLSAgIGlmIChjYXRWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8Y2F0VmVjdG9yLnNpemUoKTtpKyspCi0gICAgIHsKLSAgICAgICBMaXN0RWxlbWVudCBsaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudCljYXRWZWN0b3IuZWxlbWVudEF0KGkpOwotICAgICAgIEtleWVkUmVmZXJlbmNlIGtyID0gKEtleWVkUmVmZXJlbmNlKWxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgICAgIGlzRXJyb3IgPSAhZm9ybVRvb2wuaXNSb3dJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9DQVRFR09SSUVTLGkpOwotICAgICAgIGlzTmV3SXRlbSA9IChsaXN0RWxlbWVudC5nZXRUYXJnZXRWaWV3SWQoKSA9PSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpOwotJT4KLSAgICBhZGREZXRhaWxzQ2F0ZWdvcnlSb3coInNlcnZpY2VEZXRhaWxzQ2F0ZWdvcmllcyIsPCU9aXNFcnJvcnx8aXNOZXdJdGVtJT4pOwotICAgIHNldERldGFpbHNDYXRlZ29yeVJvdygic2VydmljZURldGFpbHNDYXRlZ29yaWVzIiw8JT1pJT4sPCU9bGlzdEVsZW1lbnQuZ2V0Vmlld0lkKCklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldFRNb2RlbEtleSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleU5hbWUoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlWYWx1ZSgpKSU+Iik7Ci08JQotICAgICB9Ci0gICB9Ci0KLSAgIC8vIEF1dGhlbnRpY2F0aW9uLgotICAgaWYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgIHsKLSAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0lPgotICAgIGRvY3VtZW50LmZvcm1zWzBdLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUocHVibGlzaFVSTCklPiI7Ci0gICAgZG9jdW1lbnQuZm9ybXNbMF0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodXNlcklkKSU+IjsKLSAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHBhc3N3b3JkKSU+IjsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VydmljZURldGFpbHNBdXRoZW50aWNhdGlvbiIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKLTwlCi0gICB9Ci0lPgotCi0gICAgc2hvd01haW5Gb3JtKCk7Ci0gIH0KLQotICBmdW5jdGlvbiBzaG93TWFpbkZvcm0oKQotICB7Ci0gICAgY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCk7Ci0gICAgdmFyIGxvYWRTY3JlZW5UYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkU2NyZWVuIik7Ci0gICAgaWYgKGxvYWRTY3JlZW5UYWJsZS5yb3dzLmxlbmd0aCA+IDApCi0gICAgICBsb2FkU2NyZWVuVGFibGUuZGVsZXRlUm93KDApOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluU2NyZWVuIikuc3R5bGUuZGlzcGxheSA9ICIiOwotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc0Zvcm0oZm9ybSkKLSAgewotICAgIGlmIChoYW5kbGVTdWJtaXQoZm9ybSkpCi0gICAgewotICAgICAgcHJvY2Vzc0RldGFpbHNTaW5nbGVJdGVtVGFibGUoInNlcnZpY2VEZXRhaWxzV1NETFVSTCIsIjwlPVVERElBY3Rpb25JbnB1dHMuV1NETF9VUkxfTU9ESUZJRUQlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9XU0RMX1VSTCU+Iixmb3JtKTsKLSAgICAgIHByb2Nlc3NEZXRhaWxzTGFuZ3VhZ2VJbnB1dFRhYmxlKCJzZXJ2aWNlRGV0YWlsc05hbWVzIiwiPCU9VURESUFjdGlvbklucHV0cy5OQU1FX01PRElGSUVEJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLk5BTUVfVklFV0lEJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX05BTUVfTEFOR1VBR0UlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTkFNRSU+Iixmb3JtKTsKLSAgICAgIHByb2Nlc3NEZXRhaWxzTGFuZ3VhZ2VJbnB1dFRhYmxlKCJzZXJ2aWNlRGV0YWlsc0Rlc2NyaXB0aW9ucyIsIjwlPVVERElBY3Rpb25JbnB1dHMuREVTQ1JJUFRJT05fTU9ESUZJRUQlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuREVTQ1JJUFRJT05fVklFV0lEJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RFU0NSSVBUSU9OX0xBTkdVQUdFJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0RFU0NSSVBUSU9OJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc0RldGFpbHNDYXRlZ29yeVRhYmxlKCJzZXJ2aWNlRGV0YWlsc0NhdGVnb3JpZXMiLGZvcm0pOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiIgb25VbmxvYWQ9ImNsb3NlQWxsVWRkaUNoaWxkV2luZG93cygpIj4KLSAgPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9VcGRhdGVTZXJ2aWNlQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIHByb2Nlc3NGb3JtKHRoaXMpIj4KLSAgICAgIDx0YWJsZSBpZD0ibG9hZFNjcmVlbiI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIk1TR19MT0FEX0lOX1BST0dSRVNTIiklPgotICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgICAgPGRpdiBpZD0ibWFpblNjcmVlbiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotPCUKLSAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiOwotICAgU3RyaW5nIHRpdGxlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9TRVJWSUNFX0RFVEFJTFMiKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVklPiIgdmFsdWU9IjwlPWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9CVVNJTkVTU19LRVkpJT4iPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9LRVklPiIgdmFsdWU9IjwlPWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfVVVJRF9TRVJWSUNFX0tFWSklPiI+Ci0gICAgICAgIDx0YWJsZT4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0RFVEFJTFNfRURJVEFCTEUiLHNlbGVjdGVkTm9kZS5nZXROb2RlTmFtZSgpKSU+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGhlaWdodD0yMD4mbmJzcDs8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0VSVklDRV9LRVkiKSU+Ci0gICAgICAgICAgICA8L3RoPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgPCU9Zm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9VVUlEX1NFUlZJQ0VfS0VZKSU+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJzZXJ2aWNlRGV0YWlsc1dTRExVUkwiKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9VUkwiKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2RldGFpbHNTaW5nbGVJdGVtX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInNlcnZpY2VEZXRhaWxzTmFtZXMiKTsKLSAgIFN0cmluZ1tdIG5hbWVTcGVjaWZpY0luZm8gPSB7IkZPUk1fTEFCRUxfTkFNRVMiLCJGT1JNX0xBQkVMX05BTUUiLFN0cmluZy52YWx1ZU9mKCFmb3JtVG9vbC5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX05BTUVTKSl9OwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKG5hbWVTcGVjaWZpY0luZm8pOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9kZXRhaWxzTGFuZ3VhZ2VJbnB1dF90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJzZXJ2aWNlRGV0YWlsc0Rlc2NyaXB0aW9ucyIpOwotICAgU3RyaW5nW10gZGVzY1NwZWNpZmljSW5mbyA9IHsiRk9STV9MQUJFTF9ERVNDUklQVElPTlMiLCJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OIixTdHJpbmcudmFsdWVPZighZm9ybVRvb2wuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9ERVNDUklQVElPTlMpKX07Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoZGVzY1NwZWNpZmljSW5mbyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2RldGFpbHNMYW5ndWFnZUlucHV0X3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInNlcnZpY2VEZXRhaWxzQ2F0ZWdvcmllcyIpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9kZXRhaWxzQ2F0ZWdvcmllc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJzZXJ2aWNlRGV0YWlsc0F1dGhlbnRpY2F0aW9uIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6dXNlQmVhbiBpZD0iY3VycmVudFRvb2xNYW5hZ2VySGFzaCIgY2xhc3M9ImphdmEudXRpbC5IYXNodGFibGUiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGN1cnJlbnRUb29sTWFuYWdlckhhc2gucHV0KEFjdGlvbklucHV0cy5DVVJSRU5UX1RPT0xfTUFOQUdFUixjdXJyZW50VG9vbE1hbmFnZXIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL290aGVyQWN0aW9ucy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICA8L2Rpdj4KLSAgICA8L2Zvcm0+Ci0gIDwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHNldERlZmF1bHRzKCk7Ci0gIHJlc3VtZVByb3h5TG9hZFBhZ2UoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1NlcnZpY2VJbnRlcmZhY2VEZXRhaWxzRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvU2VydmljZUludGVyZmFjZURldGFpbHNGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU1YTZiNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvU2VydmljZUludGVyZmFjZURldGFpbHNGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS51dGlsLlVkZGk0akhlbHBlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLmRhdGF0eXBlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGoudXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBUb29sTWFuYWdlciBjdXJyZW50VG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCk7Ci0gICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoY3VycmVudFRvb2xNYW5hZ2VyLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgIFNlcnZpY2VJbnRlcmZhY2VFbGVtZW50IHNpRWxlbWVudCA9IChTZXJ2aWNlSW50ZXJmYWNlRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsgICAKLSAgIFVERElNYWluTm9kZSB1ZGRpTWFpbk5vZGUgPSAoVURESU1haW5Ob2RlKW5hdmlnYXRvck1hbmFnZXIuZ2V0Um9vdE5vZGUoKTsKLSAgIFJlZ2lzdHJ5Tm9kZSByZWdOb2RlID0gdWRkaU1haW5Ob2RlLmdldFJlZ2lzdHJ5Tm9kZShzZWxlY3RlZE5vZGUpOwotICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX1NFUlZJQ0VfSU5URVJGQUNFX0RFVEFJTFMiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9yZXN1bWVwcm94eWxvYWRwYWdlLmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXN1Ym1pdC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy9kZXRhaWxzdGFibGVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBzZXREZWZhdWx0cygpCi0gIHsKLSAgICB2YXIgc2VydmljZUludGVyZmFjZURldGFpbHNXU0RMVVJMVGFibGUgPSBnZXRUYWJsZSgic2VydmljZUludGVyZmFjZURldGFpbHNXU0RMVVJMIik7Ci0gICAgdmFyIHNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzTmFtZVRhYmxlID0gZ2V0VGFibGUoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzTmFtZSIpOwotICAgIHZhciBzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc0Rlc2NyaXB0aW9uc1RhYmxlID0gZ2V0VGFibGUoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzRGVzY3JpcHRpb25zIik7Ci0gICAgdmFyIHNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzSWRlbnRpZmllcnNUYWJsZSA9IGdldFRhYmxlKCJzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc0lkZW50aWZpZXJzIik7Ci0gICAgdmFyIHNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzQ2F0ZWdvcmllc1RhYmxlID0gZ2V0VGFibGUoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzQ2F0ZWdvcmllcyIpOwotPCUKLSAgIExpc3RFbGVtZW50IHdzZGxVUkxMaXN0RWxlbWVudCA9IChMaXN0RWxlbWVudClmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMKTsKLSAgIFN0cmluZyB3c2RsVVJMID0gbnVsbDsKLSAgIGlmICh3c2RsVVJMTGlzdEVsZW1lbnQgPT0gbnVsbCkKLSAgIHsKLSAgICAgdHJ5Ci0gICAgIHsKLSAgICAgICBVZGRpNGpIZWxwZXIgdWRkaTRqSGVscGVyID0gbmV3IFVkZGk0akhlbHBlcigpOwotICAgICAgIHdzZGxVUkwgPSB1ZGRpNGpIZWxwZXIuZ2V0V1NETChzaUVsZW1lbnQuZ2V0VE1vZGVsKCkpOwotICAgICAgIHVkZGk0akhlbHBlci5nZXRXU0RMRGVmaW5pdGlvbih3c2RsVVJMKTsKLSAgICAgICBpZiAod3NkbFVSTCA9PSBudWxsKQotICAgICAgICAgd3NkbFVSTCA9ICJ0ZW1wLndzZGwiOwotICAgICB9Ci0gICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICAgewotICAgICAgIHdzZGxVUkwgPSAiIjsKLSAgICAgICBmb3JtVG9vbC5mbGFnRXJyb3IoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9XU0RMX1VSTCk7Ci0gICAgIH0KLSAgICAgd3NkbFVSTExpc3RFbGVtZW50ID0gbmV3IExpc3RFbGVtZW50KHdzZGxVUkwpOwotICAgICB3c2RsVVJMTGlzdEVsZW1lbnQuc2V0VGFyZ2V0Vmlld1Rvb2xJbmZvKC0xLC0xLDApOwotICAgICBmb3JtVG9vbC5zZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMLHdzZGxVUkxMaXN0RWxlbWVudCk7Ci0gICB9Ci0gICBlbHNlCi0gICAgIHdzZGxVUkwgPSAoU3RyaW5nKXdzZGxVUkxMaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgIGJvb2xlYW4gaXNFcnJvciA9ICFmb3JtVG9vbC5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9XU0RMX1VSTCk7Ci0gICBib29sZWFuIGlzTmV3SXRlbSA9ICh3c2RsVVJMTGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKTsKLSU+Ci0gICAgYWRkRGV0YWlsc1NpbmdsZUl0ZW1Sb3coInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzV1NETFVSTCIsPCU9aXNFcnJvcnx8aXNOZXdJdGVtJT4pOwotICAgIHNldERldGFpbHNXU0RMVVJMU2luZ2xlSXRlbVJvdygic2VydmljZUludGVyZmFjZURldGFpbHNXU0RMVVJMIiw8JT1BY3Rpb25JbnB1dHMuV1NETF9UWVBFX1NFUlZJQ0VfSU5URVJGQUNFJT4sIjwlPUhUTUxVdGlscy5KU01hbmdsZSh3c2RsVVJMKSU+Iik7Ci08JQotICAgaWYgKGlzRXJyb3IpCi0gICB7Ci0lPgotICAgIGhpZ2hsaWdodEVycmFudFJvdyhzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc1dTRExVUkxUYWJsZS5yb3dzW251bWJlck9mSGVhZGVyUm93c10sImVycmFudFJvdyIpOwotPCUgICAKLSAgIH0KLQotICAgTGlzdEVsZW1lbnQgbmFtZUxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfTkFNRSk7Ci0gICBTdHJpbmcgbmFtZSA9IChTdHJpbmcpbmFtZUxpc3RFbGVtZW50LmdldE9iamVjdCgpOwotICAgaXNFcnJvciA9ICFmb3JtVG9vbC5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FKTsKLSAgIGlzTmV3SXRlbSA9IChuYW1lTGlzdEVsZW1lbnQuZ2V0VGFyZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKTsKLSU+Ci0gICAgYWRkRGV0YWlsc1NpbmdsZUl0ZW1Sb3coInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzTmFtZSIsPCU9aXNFcnJvcnx8aXNOZXdJdGVtJT4pOwotICAgIHNldERldGFpbHNOYW1lU2luZ2xlSXRlbVJvdygic2VydmljZUludGVyZmFjZURldGFpbHNOYW1lIiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKG5hbWUpJT4iKTsKLTwlCi0gICBpZiAoaXNFcnJvcikKLSAgIHsKLSU+Ci0gICAgaGlnaGxpZ2h0RXJyYW50Um93KHNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzTmFtZVRhYmxlLnJvd3NbbnVtYmVyT2ZIZWFkZXJSb3dzXSwiZXJyYW50Um93Iik7Ci08JQotICAgfQotICAgCi0gICBWZWN0b3IgZGVzY3JpcHRpb25JbmRleFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTlMpOwotICAgaWYgKGRlc2NyaXB0aW9uSW5kZXhWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8ZGVzY3JpcHRpb25JbmRleFZlY3Rvci5zaXplKCk7aSsrKQotICAgICB7Ci0gICAgICAgTGlzdEVsZW1lbnQgbGlzdEVsZW1lbnQgPSAoTGlzdEVsZW1lbnQpZGVzY3JpcHRpb25JbmRleFZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAgRGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSAoRGVzY3JpcHRpb24pbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgaXNFcnJvciA9ICFmb3JtVG9vbC5pc1Jvd0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTlMsaSk7Ci0gICAgICAgaXNOZXdJdGVtID0gKGxpc3RFbGVtZW50LmdldFRhcmdldFZpZXdJZCgpID09IEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCk7Ci0lPgotICAgIGFkZERldGFpbHNMYW5ndWFnZUlucHV0Um93KCJzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc0Rlc2NyaXB0aW9ucyIsIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0RFU0NSSVBUSU9OX1RFWFRfVkFMVUUiKSklPiIsPCU9aXNFcnJvcnx8aXNOZXdJdGVtJT4pOwotICAgIHNldERldGFpbHNMYW5ndWFnZUlucHV0Um93KCJzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc0Rlc2NyaXB0aW9ucyIsPCU9aSU+LDwlPWxpc3RFbGVtZW50LmdldFZpZXdJZCgpJT4sIjwlPWRlc2NyaXB0aW9uLmdldExhbmcoKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGRlc2NyaXB0aW9uLmdldFRleHQoKSklPiIpOwotPCUKLSAgICAgICBpZiAoaXNFcnJvcikKLSAgICAgICB7Ci0lPgotICAgIGhpZ2hsaWdodEVycmFudFJvdyhzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc0Rlc2NyaXB0aW9uc1RhYmxlLnJvd3NbPCU9aSU+K251bWJlck9mSGVhZGVyUm93c10sImVycmFudFJvdyIpOwotPCUgICAgICAgCi0gICAgICAgfQotICAgICB9Ci0gICB9Ci0gICAKLSAgIFZlY3RvciBpZFZlY3RvciA9IChWZWN0b3IpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9JREVOVElGSUVSUyk7Ci0gICBpZiAoaWRWZWN0b3IgIT0gbnVsbCkKLSAgIHsKLSAgICAgZm9yIChpbnQgaT0wO2k8aWRWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWlkVmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IChLZXllZFJlZmVyZW5jZSlsaXN0RWxlbWVudC5nZXRPYmplY3QoKTsKLSAgICAgICBpc0Vycm9yID0gIWZvcm1Ub29sLmlzUm93SW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0lERU5USUZJRVJTLGkpOwotICAgICAgIGlzTmV3SXRlbSA9IChsaXN0RWxlbWVudC5nZXRUYXJnZXRWaWV3SWQoKSA9PSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpOwotJT4KLSAgICBhZGREZXRhaWxzSWRlbnRpZmllclJvdygic2VydmljZUludGVyZmFjZURldGFpbHNJZGVudGlmaWVycyIsPCU9aXNFcnJvcnx8aXNOZXdJdGVtJT4pOwotICAgIHNldERldGFpbHNJZGVudGlmaWVyUm93KCJzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc0lkZW50aWZpZXJzIiw8JT1pJT4sPCU9bGlzdEVsZW1lbnQuZ2V0Vmlld0lkKCklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldFRNb2RlbEtleSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleU5hbWUoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlWYWx1ZSgpKSU+Iik7Ci08JSAgICAgICAKLSAgICAgfQotICAgfQotICAgCi0gICBWZWN0b3IgY2F0VmVjdG9yID0gKFZlY3Rvcilmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX0NBVEVHT1JJRVMpOwotICAgaWYgKGNhdFZlY3RvciAhPSBudWxsKQotICAgewotICAgICBmb3IgKGludCBpPTA7aTxjYXRWZWN0b3Iuc2l6ZSgpO2krKykKLSAgICAgewotICAgICAgIExpc3RFbGVtZW50IGxpc3RFbGVtZW50ID0gKExpc3RFbGVtZW50KWNhdFZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAgS2V5ZWRSZWZlcmVuY2Uga3IgPSAoS2V5ZWRSZWZlcmVuY2UpbGlzdEVsZW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAgaXNFcnJvciA9ICFmb3JtVG9vbC5pc1Jvd0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9DQVRFR09SSUVTLGkpOwotICAgICAgIGlzTmV3SXRlbSA9IChsaXN0RWxlbWVudC5nZXRUYXJnZXRWaWV3SWQoKSA9PSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpOwotJT4KLSAgICBhZGREZXRhaWxzQ2F0ZWdvcnlSb3coInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzQ2F0ZWdvcmllcyIsPCU9aXNFcnJvcnx8aXNOZXdJdGVtJT4pOwotICAgIHNldERldGFpbHNDYXRlZ29yeVJvdygic2VydmljZUludGVyZmFjZURldGFpbHNDYXRlZ29yaWVzIiw8JT1pJT4sPCU9bGlzdEVsZW1lbnQuZ2V0Vmlld0lkKCklPiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldFRNb2RlbEtleSgpKSU+IiwiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGtyLmdldEtleU5hbWUoKSklPiIsIjwlPUhUTUxVdGlscy5KU01hbmdsZShrci5nZXRLZXlWYWx1ZSgpKSU+Iik7Ci08JQotICAgICB9Ci0gICB9Ci0gICAKLSAgIC8vIEF1dGhlbnRpY2F0aW9uLgotICAgaWYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgIHsKLSAgICAgU3RyaW5nIHB1Ymxpc2hVUkwgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpOwotICAgICBTdHJpbmcgdXNlcklkID0gKFN0cmluZylmb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCk7Ci0gICAgIFN0cmluZyBwYXNzd29yZCA9IChTdHJpbmcpZm9ybVRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCk7Ci0lPiAgIAotICAgIGRvY3VtZW50LmZvcm1zWzBdLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUocHVibGlzaFVSTCklPiI7Ci0gICAgZG9jdW1lbnQuZm9ybXNbMF0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9VU0VSSUQlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodXNlcklkKSU+IjsKLSAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BBU1NXT1JEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHBhc3N3b3JkKSU+IjsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VydmljZUludGVyZmFjZURldGFpbHNBdXRoZW50aWNhdGlvbiIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKLTwlCi0gICB9Ci0lPiAgCi0gICAgc2hvd01haW5Gb3JtKCk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIHNob3dNYWluRm9ybSgpCi0gIHsKLSAgICBjbG9zZUFsbFVkZGlDaGlsZFdpbmRvd3MoKTsKLSAgICB2YXIgbG9hZFNjcmVlblRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRTY3JlZW4iKTsKLSAgICBpZiAobG9hZFNjcmVlblRhYmxlLnJvd3MubGVuZ3RoID4gMCkKLSAgICAgIGxvYWRTY3JlZW5UYWJsZS5kZWxldGVSb3coMCk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5TY3JlZW4iKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIHByb2Nlc3NGb3JtKGZvcm0pCi0gIHsKLSAgICBpZiAoaGFuZGxlU3VibWl0KGZvcm0pKQotICAgIHsKLSAgICAgIHByb2Nlc3NEZXRhaWxzU2luZ2xlSXRlbVRhYmxlKCJzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc1dTRExVUkwiLCI8JT1VRERJQWN0aW9uSW5wdXRzLldTRExfVVJMX01PRElGSUVEJT4iLCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX1dTRExfVVJMJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc0RldGFpbHNTaW5nbGVJdGVtVGFibGUoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzTmFtZSIsIjwlPVVERElBY3Rpb25JbnB1dHMuTkFNRV9NT0RJRklFRCU+IiwiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9OQU1FJT4iLGZvcm0pOwotICAgICAgcHJvY2Vzc0RldGFpbHNMYW5ndWFnZUlucHV0VGFibGUoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzRGVzY3JpcHRpb25zIiwiPCU9VURESUFjdGlvbklucHV0cy5ERVNDUklQVElPTl9NT0RJRklFRCU+IiwiPCU9VURESUFjdGlvbklucHV0cy5ERVNDUklQVElPTl9WSUVXSUQlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT05fTEFOR1VBR0UlPiIsIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfREVTQ1JJUFRJT04lPiIsZm9ybSk7Ci0gICAgICBwcm9jZXNzRGV0YWlsc0lkZW50aWZpZXJUYWJsZSgic2VydmljZUludGVyZmFjZURldGFpbHNJZGVudGlmaWVycyIsZm9ybSk7Ci0gICAgICBwcm9jZXNzRGV0YWlsc0NhdGVnb3J5VGFibGUoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzQ2F0ZWdvcmllcyIsZm9ybSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9ICAgCi08L3NjcmlwdD4gIAotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iIG9uVW5sb2FkPSJjbG9zZUFsbFVkZGlDaGlsZFdpbmRvd3MoKSI+Ci0gIDxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICAgIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvVXBkYXRlU2VydmljZUludGVyZmFjZUFjdGlvbkpTUC5qc3AiKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgb25TdWJtaXQ9InJldHVybiBwcm9jZXNzRm9ybSh0aGlzKSI+ICAKLSAgICAgIDx0YWJsZSBpZD0ibG9hZFNjcmVlbiI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIk1TR19MT0FEX0lOX1BST0dSRVNTIiklPgotICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgICAgPGRpdiBpZD0ibWFpblNjcmVlbiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotPCUKLSAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiOwotICAgU3RyaW5nIHRpdGxlID0gdWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9TRVJWSUNFX0lOVEVSRkFDRV9ERVRBSUxTIik7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPiAgICAgIAotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZJT4iIHZhbHVlPSI8JT1mb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZKSU+Ij4KLSAgICAgICAgPHRhYmxlPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfREVUQUlMU19FRElUQUJMRSIsc2VsZWN0ZWROb2RlLmdldE5vZGVOYW1lKCkpJT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgaGVpZ2h0PTIwPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4gICAgICAgIAotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1NFUlZJQ0VfSU5URVJGQUNFX0tFWSIpJT4KLSAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgPC90cj4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICA8JT1mb3JtVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1VVSURfU0VSVklDRV9JTlRFUkZBQ0VfS0VZKSU+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc1dTRExVUkwiKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldE90aGVyUHJvcGVydGllcyhjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9VUkwiKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2RldGFpbHNTaW5nbGVJdGVtX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzTmFtZSIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2RldGFpbHNTaW5nbGVJdGVtX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4gICAKLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzRGVzY3JpcHRpb25zIik7Ci0gICBTdHJpbmdbXSBkZXNjU3BlY2lmaWNJbmZvID0geyJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OUyIsIkZPUk1fTEFCRUxfREVTQ1JJUFRJT04iLFN0cmluZy52YWx1ZU9mKCFmb3JtVG9vbC5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9ERVNDUklQVElPTlMpKX07Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoZGVzY1NwZWNpZmljSW5mbyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2RldGFpbHNMYW5ndWFnZUlucHV0X3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzSWRlbnRpZmllcnMiKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvZGV0YWlsc0lkZW50aWZpZXJzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInNlcnZpY2VJbnRlcmZhY2VEZXRhaWxzQ2F0ZWdvcmllcyIpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9kZXRhaWxzQ2F0ZWdvcmllc190YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+ICAgCi08JQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJzZXJ2aWNlSW50ZXJmYWNlRGV0YWlsc0F1dGhlbnRpY2F0aW9uIik7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6dXNlQmVhbiBpZD0iY3VycmVudFRvb2xNYW5hZ2VySGFzaCIgY2xhc3M9ImphdmEudXRpbC5IYXNodGFibGUiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGN1cnJlbnRUb29sTWFuYWdlckhhc2gucHV0KEFjdGlvbklucHV0cy5DVVJSRU5UX1RPT0xfTUFOQUdFUixjdXJyZW50VG9vbE1hbmFnZXIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL290aGVyQWN0aW9ucy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICA8L2Rpdj4KLSAgICA8L2Zvcm0+Ci0gIDwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHNldERlZmF1bHRzKCk7Ci0gIHJlc3VtZVByb3h5TG9hZFBhZ2UoKTsgIAotPC9zY3JpcHQ+ICAgIAotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1VERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9VRERJSW1wb3J0V1NETFRvV29ya2JlbmNoRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MjI4YjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL1VERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1Qcm9wZXJ0aWVzIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBTdHJpbmcgd3NkbFVSTDsKLSAgIC8vIHNlbGVjdGVkTm9kZSBzaG91bGQgYmUgZWl0aGVyIGEgc2VydmljZSBvciBhIHNlcnZpY2UgaW50ZXJmYWNlIG5vZGUuCi0gICBpZiAoc2VsZWN0ZWROb2RlIGluc3RhbmNlb2YgU2VydmljZU5vZGUpCi0gICB7Ci0gICAgIFNlcnZpY2VOb2RlIHNlcnZpY2VOb2RlID0gKFNlcnZpY2VOb2RlKXNlbGVjdGVkTm9kZTsKLSAgICAgd3NkbFVSTCA9IHNlcnZpY2VOb2RlLmdldFdTRExVUkxGcm9tRGV0YWlsc1Rvb2woKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgU2VydmljZUludGVyZmFjZU5vZGUgc2lOb2RlID0gKFNlcnZpY2VJbnRlcmZhY2VOb2RlKXNlbGVjdGVkTm9kZTsKLSAgICAgd3NkbFVSTCA9IHNpTm9kZS5nZXRXU0RMVVJMRnJvbURldGFpbHNUb29sKCk7Ci0gICB9Ci0gICBmb3JtUHJvcGVydGllcy5wdXQoImZvcm1BY3Rpb25MaW5rIiwidWRkaS9hY3Rpb25zL1VERElJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb25KU1AuanNwIik7Ci0gICBmb3JtUHJvcGVydGllcy5wdXQoIndzZGxVUkwiLHdzZGxVUkwpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL0ltcG9ydFRvV29ya2JlbmNoRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvVURESUxhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9VRERJTGF1bmNoV2ViU2VydmljZVdpemFyZEZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmZhMjUyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9VRERJTGF1bmNoV2ViU2VydmljZVdpemFyZEZvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImZvcm1BY3Rpb25MaW5rIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIGZvcm1BY3Rpb25MaW5rLmFwcGVuZCgidWRkaS9hY3Rpb25zL1VERElMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uSlNQLmpzcCIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL0xhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9VbnB1Ymxpc2hGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9VbnB1Ymxpc2hGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVhMzM3Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvVW5wdWJsaXNoRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgVURESU1haW5Ob2RlIHVkZGlNYWluTm9kZSA9IChVRERJTWFpbk5vZGUpbmF2aWdhdG9yTWFuYWdlci5nZXRSb290Tm9kZSgpOwotICAgUmVnaXN0cnlOb2RlIHJlZ05vZGUgPSB1ZGRpTWFpbk5vZGUuZ2V0UmVnaXN0cnlOb2RlKG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCkpOwotICAgUmVnaXN0cnlFbGVtZW50IHJlZ0VsZW1lbnQgPSAoUmVnaXN0cnlFbGVtZW50KXJlZ05vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgIAotICAgRm9ybVRvb2wgdW5wdWJsaXNoVG9vbCA9IChGb3JtVG9vbCkobmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKSk7Ci0lPgotCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX1VOUFVCTElTSCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3Jtc3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGl0YWJsZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKQotICB7Ci08JQotICAgaWYgKCFyZWdFbGVtZW50LmlzTG9nZ2VkSW4oKSkKLSAgIHsKLSU+Ci0gICAgdmFyIGF1dGhlbnRpY2F0aW9uU2VjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1bnB1Ymxpc2hBdXRoZW50aWNhdGlvbiIpOwotICAgIGF1dGhlbnRpY2F0aW9uU2VjdGlvbi5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgdmFyIGZvcm0gPSBkb2N1bWVudC5mb3Jtc1swXTsKLSAgICBmb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwlPi52YWx1ZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoKFN0cmluZyl1bnB1Ymxpc2hUb29sLmdldFByb3BlcnR5KFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwpKSU+IjsKLSAgICBmb3JtLjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEJT4udmFsdWUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpdW5wdWJsaXNoVG9vbC5nZXRQcm9wZXJ0eShVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCkpJT4iOwotICAgIGZvcm0uPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCU+LnZhbHVlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKXVucHVibGlzaFRvb2wuZ2V0UHJvcGVydHkoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCkpJT4iOyAgICAKLTwlCi0gICB9Ci0lPgotICB9Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIiBvblVubG9hZD0iY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCkiPgotICA8ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9hY3Rpb25zL1VucHVibGlzaEFjdGlvbkpTUC5qc3AiKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgb25TdWJtaXQ9InJldHVybiBoYW5kbGVTdWJtaXQodGhpcykiPgotPCUKLSAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9IHVucHVibGlzaFRvb2wuZ2V0SGlnaGxpZ2h0ZWRJbWFnZUxpbmsoKTsKLSAgIFN0cmluZyB0aXRsZSA9IHVucHVibGlzaFRvb2wuZ2V0QWx0VGV4dCgpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9mb3Jtcy9mb3JtaGVhZGVyLmluYyIgJT4KLSAgICA8dGFibGU+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VTlBVQkxJU0hfREVTQyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLTwlCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoInVucHVibGlzaEF1dGhlbnRpY2F0aW9uIik7Ci0lPiAgICAgICAKLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9hdXRoZW50aWNhdGlvbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHNldERlZmF1bHRzKCk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9hZHZhbmNlZENvbW1vbl90YWJsZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvYWR2YW5jZWRDb21tb25fdGFibGUuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmU4NTNlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9hZHZhbmNlZENvbW1vbl90YWJsZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSBmb3JtVG9vbFBJID0gKEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGNvbHNwYW49MyBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX01BWF9TRUFSQ0hfU0VUIiklPgotPCUKLSAgIGlmICghZm9ybVRvb2xQSS5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0lOVEVSRkFDRV9NQVhfU0VBUkNIX1NFVCkpCi0gICB7Ci0lPgotICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotPCUKLSAgIH0KLSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLSAgPHRyPgotICAgIDx0ZCBjb2xzcGFuPTM+Ci0gICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9NQVhfU0VBUkNIX1NFVCU+IiBjbGFzcz0ic210ZXh0ZW50ZXIiPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGQgY29sc3Bhbj0zIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTUFYX1JFU1VMVFMiKSU+Ci08JQotICAgaWYgKCFmb3JtVG9vbFBJLmlzSW5wdXRWYWxpZChVRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NFUlZJQ0VfSU5URVJGQUNFX01BWF9SRVNVTFRTKSkKLSAgIHsKLSU+Ci0gICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci08JQotICAgfQotJT4KLSAgICA8L3RkPgotICA8L3RyPgotICA8dHI+Ci0gICAgPHRkIGNvbHNwYW49Mz4KLSAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX01BWF9SRVNVTFRTJT4iIGNsYXNzPSJzbXRleHRlbnRlciI+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvYXV0aGVudGljYXRpb25fdGFibGUuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U3NzljNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvYXV0aGVudGljYXRpb25fdGFibGUuanNwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5BYnN0cmFjdFVERElFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuUmVnaXN0cnlFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC5UcmVlRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InN1YlF1ZXJ5S2V5UHJvcGVydHkiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS5TdWJRdWVyeUtleVByb3BlcnR5IiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi1VRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLU5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1Gb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLVN0cmluZyB0YWJsZUNvbnRhaW5lcklkID0gc2VjdGlvbkhlYWRlckluZm8uZ2V0Q29udGFpbmVySWQoKTsKLVN0cmluZyB1c2VybmFtZSA9IG51bGw7Ci1TdHJpbmcgcGFzc3dvcmQgPSBudWxsOwotaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIEFic3RyYWN0VURESUVsZW1lbnQpCi17Ci0gIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKChBYnN0cmFjdFVERElFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0UmVnaXN0cnlFbGVtZW50KCk7Ci0gIHVzZXJuYW1lID0gcmVnRWxlbWVudC5nZXRVc2VySWQoKTsKLSAgcGFzc3dvcmQgPSByZWdFbGVtZW50LmdldENyZWQoKTsKLX0KLWlmICh1c2VybmFtZSA9PSBudWxsKQotICB1c2VybmFtZSA9ICIiOwotaWYgKHBhc3N3b3JkID09IG51bGwpCi0gIHBhc3N3b3JkID0gIiI7Ci0lPgotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgPHRyPgotICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgIDxsYWJlbCBmb3I9IjwlPXRhYmxlQ29udGFpbmVySWQrIl9pbnB1dF9wdWJsaXNoX3VybCIlPiI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUFVCTElTSF9VUkwiKSU+PC9sYWJlbD4KLSAgICAgICAgPCUKLSAgICAgICAgaWYgKCFmb3JtVG9vbC5pc0lucHV0VmFsaWQoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QVUJMSVNIX1VSTCkpCi0gICAgICAgIHsKLSAgICAgICAgJT4KLSAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci0gICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgICAgJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSI8JT10YWJsZUNvbnRhaW5lcklkKyJfaW5wdXRfcHVibGlzaF91cmwiJT4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUFVCTElTSF9VUkwlPiIgY2xhc3M9InRleHRlbnRlciI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iPgotICAgICAgICA8bGFiZWwgZm9yPSI8JT10YWJsZUNvbnRhaW5lcklkKyJfaW5wdXRfdXNlcl9pZCIlPiI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVVNFUklEIiklPjwvbGFiZWw+Ci0gICAgICAgIDwlCi0gICAgICAgIGlmICghZm9ybVRvb2wuaXNJbnB1dFZhbGlkKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfVVNFUklEKSkKLSAgICAgICAgewotICAgICAgICAlPgotICAgICAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLSAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgICAlPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9IjwlPXRhYmxlQ29udGFpbmVySWQrIl9pbnB1dF91c2VyX2lkIiU+IiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCU+IiB2YWx1ZT0iPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllc1N0cmljdCh1c2VybmFtZSklPiIgY2xhc3M9InRleHRlbnRlciI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iPjxsYWJlbCBmb3I9IjwlPXRhYmxlQ29udGFpbmVySWQrIl9pbnB1dF9wYXNzd29yZCIlPiI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUEFTU1dPUkQiKSU+PC9sYWJlbD48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJwYXNzd29yZCIgaWQ9IjwlPXRhYmxlQ29udGFpbmVySWQrIl9pbnB1dF9wYXNzd29yZCIlPiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9QQVNTV09SRCU+IiB2YWx1ZT0iPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllc1N0cmljdChwYXNzd29yZCklPiIgY2xhc3M9InRleHRlbnRlciI+PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvY2F0ZWdvcmllc190YWJsZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvY2F0ZWdvcmllc190YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NDlhNjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2NhdGVnb3JpZXNfdGFibGUuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGoudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBTdHJpbmcgdGFibGVDb250YWluZXJJZCA9IHNlY3Rpb25IZWFkZXJJbmZvLmdldENvbnRhaW5lcklkKCk7Ci0gICBTdHJpbmdCdWZmZXIgdHdpc3RJbWFnZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCJ4Iik7Ci0gICB0d2lzdEltYWdlTmFtZS5hcHBlbmQodGFibGVDb250YWluZXJJZCk7Ci0lPgotPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJZCU+JywnPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+IAotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8c3Ryb25nPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0NBVEVHT1JJRVMiKSU+PC9zdHJvbmc+Ci0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDphZGRDYXRlZ29yeVJvdygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnJlbW92ZVNlbGVjdGVkQ2F0ZWdvcnlSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19SRU1PVkUiKSU+PC9hPiAgCi0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTxkaXYgaWQ9IjwlPXRhYmxlQ29udGFpbmVySWQlPiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgPHRyPgotICAgICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPXRhYmxlQ29udGFpbmVySWQlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9DQVRFR09SWV9UWVBFIiklPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9LRVlfTkFNRSIpJT48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfS0VZX1ZBTFVFIiklPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQUNUSU9OUyIpJT48L3RoPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08JQotICAgaWYgKHRhYmxlQ29udGFpbmVySWQuc3RhcnRzV2l0aCgiZmluZEJ1c2luZXNzZXMiKSkKLSAgIHsvLyBjb25kaXRpb24gdG8gdHVybiBvZmYgZm9yIGV2ZXJ5dGhpbmcgb3RoZXIgdGhhbiBmaW5kIGJ5IGJ1c2luZXNzIHNlYXJjaGVzLgotJT4KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAgIDx0ZCBoZWlnaHQ9MzAgdmFsaWduPSJjZW50ZXIiPgotICAgICAgICA8bGFiZWwgZm9yPSJidXNpbmVzc19jYXRlZ29yaWVzIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9CVVNJTkVTU19DQVRFR09SSUVTIiklPjwvbGFiZWw+Ci0gICAgICA8L3RkPgotICAgICAgPHRkIGhlaWdodD0zMCB2YWxpZ249ImNlbnRlciI+Ci0gICAgICAgIDxzZWxlY3QgaWQ9ImJ1c2luZXNzX2NhdGVnb3JpZXMiIGNsYXNzPSJzZWxlY3RsaXN0Ij4KLSAgICAgICAgICA8b3B0aW9uPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9CVVNJTkVTU0VTX09OTFkiKSU+Ci0gICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9RmluZFF1YWxpZmllci5zZXJ2aWNlU3Vic2V0JT4iPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9TRVJWSUNFU19PTkxZIiklPgotICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjwlPUZpbmRRdWFsaWZpZXIuY29tYmluZUNhdGVnb3J5QmFncyU+Ij48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fQk9USCIpJT4KLSAgICAgICAgPC9zZWxlY3Q+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08JSAgIAotICAgfQotJT4gICAgIAotPC9kaXY+ICAKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9kZXRhaWxzQ2F0ZWdvcmllc190YWJsZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvZGV0YWlsc0NhdGVnb3JpZXNfdGFibGUuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGNmZTRkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9kZXRhaWxzQ2F0ZWdvcmllc190YWJsZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgU3RyaW5nIHRhYmxlQ29udGFpbmVySWQgPSBzZWN0aW9uSGVhZGVySW5mby5nZXRDb250YWluZXJJZCgpOwotICAgU3RyaW5nQnVmZmVyIHR3aXN0SW1hZ2VOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigieCIpOwotICAgdHdpc3RJbWFnZU5hbWUuYXBwZW5kKHRhYmxlQ29udGFpbmVySWQpOwotJT4KLTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPjxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySWQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT48L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8c3Ryb25nPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0NBVEVHT1JJRVMiKSU+PC9zdHJvbmc+Ci0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDphZGREZXRhaWxzQ2F0ZWdvcnlSb3coJzwlPXRhYmxlQ29udGFpbmVySWQlPicsdHJ1ZSkiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnJlbW92ZVNlbGVjdGVkRGV0YWlsc0NhdGVnb3J5Um93cygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfUkVNT1ZFIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmVkaXRTZWxlY3RlZERldGFpbHNDYXRlZ29yeVJvd3MoJzwlPXRhYmxlQ29udGFpbmVySWQlPicpIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0VESVQiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Y2FuY2VsU2VsZWN0ZWREZXRhaWxzQ2F0ZWdvcnlSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19DQU5DRUwiKSU+PC9hPgotICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICA8dHI+Ci0gICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9dGFibGVDb250YWluZXJJZCU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0NBVEVHT1JZX1RZUEUiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0tFWV9OQU1FIiklPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9LRVlfVkFMVUUiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9BQ1RJT05TIiklPjwvdGg+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2RldGFpbHNEaXNjb3ZlcnlVUkxzX3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9kZXRhaWxzRGlzY292ZXJ5VVJMc190YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkM2Q3MTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2RldGFpbHNEaXNjb3ZlcnlVUkxzX3RhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBTdHJpbmcgdGFibGVDb250YWluZXJJZCA9IHNlY3Rpb25IZWFkZXJJbmZvLmdldENvbnRhaW5lcklkKCk7Ci0gICBTdHJpbmdCdWZmZXIgdHdpc3RJbWFnZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCJ4Iik7Ci0gICBib29sZWFuIGhhc0Vycm9ycyA9ICgoQm9vbGVhbilzZWN0aW9uSGVhZGVySW5mby5nZXRPdGhlclByb3BlcnRpZXMoKSkuYm9vbGVhblZhbHVlKCk7Ci0gICB0d2lzdEltYWdlTmFtZS5hcHBlbmQodGFibGVDb250YWluZXJJZCk7Ci0lPgotPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJZCU+JywnPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+ICAKLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPHN0cm9uZz48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ESVNDT1ZFUllVUkxTIiklPjwvc3Ryb25nPgotPCUKLSAgIGlmIChoYXNFcnJvcnMpCi0gICB7Ci0lPgotICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotPCUKLSAgIH0KLSU+ICAgICAgCi0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDphZGREZXRhaWxzRGlzY292ZXJ5VVJMUm93KCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLHRydWUpIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0FERCIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpyZW1vdmVTZWxlY3RlZERldGFpbHNEaXNjb3ZlcnlVUkxSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19SRU1PVkUiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6ZWRpdFNlbGVjdGVkRGV0YWlsc0Rpc2NvdmVyeVVSTFJvd3MoJzwlPXRhYmxlQ29udGFpbmVySWQlPicpIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0VESVQiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Y2FuY2VsU2VsZWN0ZWREZXRhaWxzRGlzY292ZXJ5VVJMUm93cygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQ0FOQ0VMIiklPjwvYT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08ZGl2IGlkPSI8JT10YWJsZUNvbnRhaW5lcklkJT4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgIDx0cj4KLSAgICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVDaGVja0FsbENsaWNrKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLHRoaXMpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0FMTF9DSEVDS19CT1giKSU+Ij48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRElTQ09WRVJZVVJMIiklPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQUNUSU9OUyIpJT48L3RoPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9kZXRhaWxzSWRlbnRpZmllcnNfdGFibGUuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2RldGFpbHNJZGVudGlmaWVyc190YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkN2JjNTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2RldGFpbHNJZGVudGlmaWVyc190YWJsZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgU3RyaW5nIHRhYmxlQ29udGFpbmVySWQgPSBzZWN0aW9uSGVhZGVySW5mby5nZXRDb250YWluZXJJZCgpOwotICAgU3RyaW5nQnVmZmVyIHR3aXN0SW1hZ2VOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigieCIpOwotICAgdHdpc3RJbWFnZU5hbWUuYXBwZW5kKHRhYmxlQ29udGFpbmVySWQpOwotJT4KLTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPjxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySWQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT48L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8c3Ryb25nPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lERU5USUZJRVJTIiklPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6YWRkRGV0YWlsc0lkZW50aWZpZXJSb3coJzwlPXRhYmxlQ29udGFpbmVySWQlPicsdHJ1ZSkiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnJlbW92ZVNlbGVjdGVkRGV0YWlsc0lkZW50aWZpZXJSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19SRU1PVkUiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6ZWRpdFNlbGVjdGVkRGV0YWlsc0lkZW50aWZpZXJSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19FRElUIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmNhbmNlbFNlbGVjdGVkRGV0YWlsc0lkZW50aWZpZXJSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19DQU5DRUwiKSU+PC9hPgotICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICA8dHI+Ci0gICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9dGFibGVDb250YWluZXJJZCU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lERU5USUZJRVJfVFlQRSIpJT48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfS0VZX05BTUUiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0tFWV9WQUxVRSIpJT48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0FDVElPTlMiKSU+PC90aD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvZGV0YWlsc0xhbmd1YWdlSW5wdXRfdGFibGUuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2RldGFpbHNMYW5ndWFnZUlucHV0X3RhYmxlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ4ZDVlNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvZGV0YWlsc0xhbmd1YWdlSW5wdXRfdGFibGUuanNwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIFN0cmluZyB0YWJsZUNvbnRhaW5lcklkID0gc2VjdGlvbkhlYWRlckluZm8uZ2V0Q29udGFpbmVySWQoKTsKLSAgIFN0cmluZ1tdIG90aGVyUHJvcGVydGllcyA9IChTdHJpbmdbXSlzZWN0aW9uSGVhZGVySW5mby5nZXRPdGhlclByb3BlcnRpZXMoKTsKLSAgIFN0cmluZ1tdIHRpdGxlS2V5cyA9IHtvdGhlclByb3BlcnRpZXNbMF0sb3RoZXJQcm9wZXJ0aWVzWzFdfTsKLSAgIGJvb2xlYW4gaGFzRXJyb3JzID0gb3RoZXJQcm9wZXJ0aWVzWzJdLmVxdWFscyhCb29sZWFuLlRSVUUudG9TdHJpbmcoKSk7Ci0gICBTdHJpbmdCdWZmZXIgdHdpc3RJbWFnZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCJ4Iik7Ci0gICB0d2lzdEltYWdlTmFtZS5hcHBlbmQodGFibGVDb250YWluZXJJZCk7Ci0lPgotPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJZCU+JywnPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxzdHJvbmc+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UodGl0bGVLZXlzWzBdKSU+PC9zdHJvbmc+Ci08JQotICAgaWYgKGhhc0Vycm9ycykKLSAgIHsKLSU+Ci0gICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci08JQotICAgfQotJT4gICAgICAKLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci08JQotICAgU3RyaW5nIHRleHRDb250cm9sVGl0bGVLZXk7Ci0gICBpZiAodGl0bGVLZXlzWzBdLmVxdWFscygiRk9STV9MQUJFTF9OQU1FUyIpKQotICAgICB0ZXh0Q29udHJvbFRpdGxlS2V5ID0gIkZPUk1fQ09OVFJPTF9USVRMRV9OQU1FX1RFWFRfVkFMVUUiOwotICAgZWxzZQotICAgICB0ZXh0Q29udHJvbFRpdGxlS2V5ID0gIkZPUk1fQ09OVFJPTF9USVRMRV9ERVNDUklQVElPTl9URVhUX1ZBTFVFIjsKLSU+ICAgICAgICAgCi0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmFkZERldGFpbHNMYW5ndWFnZUlucHV0Um93KCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLCc8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UodGV4dENvbnRyb2xUaXRsZUtleSkpJT4nLHRydWUpIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0FERCIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpyZW1vdmVTZWxlY3RlZERldGFpbHNMYW5ndWFnZUlucHV0Um93cygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfUkVNT1ZFIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmVkaXRTZWxlY3RlZERldGFpbHNMYW5ndWFnZUlucHV0Um93cygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfRURJVCIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpjYW5jZWxTZWxlY3RlZERldGFpbHNMYW5ndWFnZUlucHV0Um93cygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQ0FOQ0VMIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICA8dHI+Ci0gICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9dGFibGVDb250YWluZXJJZCU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xBTkdVQUdFIiklPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSh0aXRsZUtleXNbMV0pJT48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0FDVElPTlMiKSU+PC90aD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvZGV0YWlsc1NpbmdsZUl0ZW1fdGFibGUuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2RldGFpbHNTaW5nbGVJdGVtX3RhYmxlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFjN2NmZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvZGV0YWlsc1NpbmdsZUl0ZW1fdGFibGUuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIFN0cmluZyB0YWJsZUNvbnRhaW5lcklkID0gc2VjdGlvbkhlYWRlckluZm8uZ2V0Q29udGFpbmVySWQoKTsKLSAgIFN0cmluZyBpdGVtSGVhZGVyID0gKFN0cmluZylzZWN0aW9uSGVhZGVySW5mby5nZXRPdGhlclByb3BlcnRpZXMoKTsKLSU+Ci08dGFibGU+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTIwPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+Ij4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgIDx0cj4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPWl0ZW1IZWFkZXIlPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQUNUSU9OUyIpJT48L3RoPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9kaXNjb3ZlcnlVUkxzX3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9kaXNjb3ZlcnlVUkxzX3RhYmxlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIzZjUzNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvZGlzY292ZXJ5VVJMc190YWJsZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgU3RyaW5nIHRhYmxlQ29udGFpbmVySWQgPSBzZWN0aW9uSGVhZGVySW5mby5nZXRDb250YWluZXJJZCgpOwotICAgYm9vbGVhbiBoYXNFcnJvcnMgPSAoKEJvb2xlYW4pc2VjdGlvbkhlYWRlckluZm8uZ2V0T3RoZXJQcm9wZXJ0aWVzKCkpLmJvb2xlYW5WYWx1ZSgpOwotICAgU3RyaW5nQnVmZmVyIHR3aXN0SW1hZ2VOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigieCIpOwotICAgdHdpc3RJbWFnZU5hbWUuYXBwZW5kKHRhYmxlQ29udGFpbmVySWQpOwotJT4KLTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPjxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySWQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT48L3RkPiAgCi0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxzdHJvbmc+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRElTQ09WRVJZVVJMUyIpJT48L3N0cm9uZz4KLTwlCi0gICBpZiAoaGFzRXJyb3JzKQotICAgewotJT4KLSAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLTwlCi0gICB9Ci0lPiAgICAgICAgICAgICAgICAgIAotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6YWRkRGlzY292ZXJ5VVJMUm93KCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19BREQiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6cmVtb3ZlU2VsZWN0ZWRSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19SRU1PVkUiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08ZGl2IGlkPSI8JT10YWJsZUNvbnRhaW5lcklkJT4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgIDx0cj4KLSAgICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVDaGVja0FsbENsaWNrKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLHRoaXMpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0FMTF9DSEVDS19CT1giKSU+Ij48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRElTQ09WRVJZVVJMIiklPjwvdGg+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2ZpbmRRdWFsaWZpZXJzX3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9maW5kUXVhbGlmaWVyc190YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMzcyMTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2ZpbmRRdWFsaWZpZXJzX3RhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnVkZGk0ai51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIFN0cmluZyB0YWJsZUNvbnRhaW5lcklkID0gc2VjdGlvbkhlYWRlckluZm8uZ2V0Q29udGFpbmVySWQoKTsKLSAgIFN0cmluZ0J1ZmZlciB0d2lzdEltYWdlTmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoIngiKTsKLSAgIHR3aXN0SW1hZ2VOYW1lLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklkKTsgICAKLSU+Ci08dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT48YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLCc8JT10d2lzdEltYWdlTmFtZS50b1N0cmluZygpJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZS50b1N0cmluZygpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RjbG9zZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfQ0xPU0VEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+PC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPjxzdHJvbmc+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRklORFFVQUxJRklFUlMiKSU+PC9zdHJvbmc+PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDx0YWJsZT4KLSAgICA8dHI+Ci0gICAgICA8dGQ+PGxhYmVsIGZvcj0iY29tYmluZV9rZXlzIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9DT01CSU5FX0tFWVMiKSU+PC9sYWJlbD48L3RkPgotICAgICAgPHRkPgotICAgICAgICA8c2VsZWN0IGlkPSJjb21iaW5lX2tleXMiIGNsYXNzPSJzZWxlY3RsaXN0Ij4KLSAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT1GaW5kUXVhbGlmaWVyLmFuZEFsbEtleXMlPiI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0FOREFMTEtFWVMiKSU+Ci0gICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9RmluZFF1YWxpZmllci5vckFsbEtleXMlPiI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX09SQUxMS0VZUyIpJT4KLSAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT1GaW5kUXVhbGlmaWVyLm9yTGlrZUtleXMlPiI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX09STElLRUtFWVMiKSU+Ci0gICAgICAgIDwvc2VsZWN0PgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TT1JUX0JZX05BTUUiKSU+PC90ZD4KLSAgICAgIDx0ZD4KLSAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0iYWR2YW5jZV9zb3J0X2J5X25hbWVfYXNjIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NPUlRfQllfTkFNRSU+IiB2YWx1ZT0iPCU9RmluZFF1YWxpZmllci5zb3J0QnlOYW1lQXNjJT4iIGNoZWNrZWQ+PGxhYmVsIGZvcj0iYWR2YW5jZV9zb3J0X2J5X25hbWVfYXNjIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9SQURJT19TT1JUX0FTQyIpJT48L2xhYmVsPgotICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJhZHZhbmNlX3NvcnRfYnlfbmFtZV9kZXNjIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1NPUlRfQllfTkFNRSU+IiB2YWx1ZT0iPCU9RmluZFF1YWxpZmllci5zb3J0QnlOYW1lRGVzYyU+Ij48bGFiZWwgZm9yPSJhZHZhbmNlX3NvcnRfYnlfbmFtZV9kZXNjIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9SQURJT19TT1JUX0RFU0MiKSU+PC9sYWJlbD4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU09SVF9CWV9EQVRFIiklPjwvdGQ+Ci0gICAgICA8dGQ+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9ImFkdmFuY2Vfc29ydF9ieV9kYXRlX2FzYyIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TT1JUX0JZX0RBVEUlPiIgdmFsdWU9IjwlPUZpbmRRdWFsaWZpZXIuc29ydEJ5RGF0ZUFzYyU+IiBjaGVja2VkPjxsYWJlbCBmb3I9ImFkdmFuY2Vfc29ydF9ieV9kYXRlX2FzYyI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fUkFESU9fU09SVF9BU0MiKSU+PC9sYWJlbD4KLSAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0iYWR2YW5jZV9zb3J0X2J5X2RhdGVfZGVzYyIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TT1JUX0JZX0RBVEUlPiIgdmFsdWU9IjwlPUZpbmRRdWFsaWZpZXIuc29ydEJ5RGF0ZURlc2MlPiI+PGxhYmVsIGZvcj0iYWR2YW5jZV9zb3J0X2J5X2RhdGVfZGVzYyI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fUkFESU9fU09SVF9ERVNDIiklPjwvbGFiZWw+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9maW5kZm9ybWhlYWRlci5pbmMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvZmluZGZvcm1oZWFkZXIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTgyZTIxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9maW5kZm9ybWhlYWRlci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICA8aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHRpdGxlSW1hZ2VQYXRoKSklPiIgYWx0PSIiPgotICAgICAgPHN0cm9uZz48JT10aXRsZSU+PC9zdHJvbmc+Ci0gICAgPC90ZD4KLSAgICA8dGQgd2lkdGg9IioiPiZuYnNwOzwvdGQ+Ci08JQotICAgaW50IGNvbHNwYW4gPSAyOwotICAgaWYgKHN1YlF1ZXJ5S2V5ICE9IG51bGwgJiYgc3ViUXVlcnlLZXkubGVuZ3RoKCkgPiAwKQotICAgewotICAgICBpbnQgbm9kZUlkID0gc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpOwotICAgICBpbnQgdG9vbElkID0gZm9ybVRvb2wuZ2V0VG9vbElkKCk7Ci0gICAgIGludCB2aWV3SWQgPSBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCk7Ci0gICAgIGludCB2aWV3VG9vbElkID0gc2VsZWN0ZWROb2RlLmdldFZpZXdUb29sSWQoKTsKLSAgICAgaW50IGNvdW50ID0gMTsKLSU+Ci0gICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICA8YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2VsZWN0RmluZFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQsdG9vbElkLHZpZXdJZCx2aWV3VG9vbElkLCIiLGZhbHNlKSkpJT4iPjwlPWNvdW50JT48L2E+Ci0gICAgPC90ZD4KLTwlCi0gICAgIFN0cmluZyBjdXJyZW50U3ViUXVlcnlLZXkgPSBzdWJRdWVyeUtleTsKLSAgICAgaW50IHNlcGFyYXRvclBvcyA9IC0xOwotICAgICB3aGlsZSAoKHNlcGFyYXRvclBvcyA9IGN1cnJlbnRTdWJRdWVyeUtleS5pbmRleE9mKCc6JykpICE9IC0xKQotICAgICB7Ci0gICAgICAgY291bnQrKzsKLSU+Ci0gICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICA8YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2VsZWN0RmluZFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSWQsdG9vbElkLHZpZXdJZCx2aWV3VG9vbElkLGN1cnJlbnRTdWJRdWVyeUtleS5zdWJzdHJpbmcoMCxzZXBhcmF0b3JQb3MpLGZhbHNlKSkpJT4iPjwlPWNvdW50JT48L2E+Ci0gICAgPC90ZD4gICAgICAKLTwlICAgCi0gICAgICAgY3VycmVudFN1YlF1ZXJ5S2V5ID0gY3VycmVudFN1YlF1ZXJ5S2V5LnN1YnN0cmluZyhzZXBhcmF0b3JQb3MrMSxjdXJyZW50U3ViUXVlcnlLZXkubGVuZ3RoKCkpOwotICAgICB9Ci0gICAgIGNvbHNwYW4gKz0gY291bnQ7Ci0gICB9Ci0lPiAgICAKLSAgPC90cj4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjAgY29sc3Bhbj08JT1jb2xzcGFuJT4+IDxpbWcgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiIGFsaWduPSJ0b3AiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiPiA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9pZGVudGlmaWVyc190YWJsZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvaWRlbnRpZmllcnNfdGFibGUuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWFjNDZjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9pZGVudGlmaWVyc190YWJsZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgU3RyaW5nIHRhYmxlQ29udGFpbmVySWQgPSBzZWN0aW9uSGVhZGVySW5mby5nZXRDb250YWluZXJJZCgpOwotICAgU3RyaW5nQnVmZmVyIHR3aXN0SW1hZ2VOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigieCIpOwotICAgdHdpc3RJbWFnZU5hbWUuYXBwZW5kKHRhYmxlQ29udGFpbmVySWQpOyAgIAotJT4KLTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPjxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySWQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT48L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8c3Ryb25nPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lERU5USUZJRVJTIiklPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6YWRkSWRlbnRpZmllclJvdygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnJlbW92ZVNlbGVjdGVkUm93cygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfUkVNT1ZFIiklPjwvYT4gIAotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotICAgIAotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICA8dHI+Ci0gICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9dGFibGVDb250YWluZXJJZCU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lERU5USUZJRVJfVFlQRSIpJT48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfS0VZX05BTUUiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0tFWV9WQUxVRSIpJT48L3RoPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08L2Rpdj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9sYW5ndWFnZUlucHV0X3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9sYW5ndWFnZUlucHV0X3RhYmxlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ1OGQxMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvbGFuZ3VhZ2VJbnB1dF90YWJsZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudWRkaTRqLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgU3RyaW5nIHRhYmxlQ29udGFpbmVySWQgPSBzZWN0aW9uSGVhZGVySW5mby5nZXRDb250YWluZXJJZCgpOwotICAgU3RyaW5nW10gb3RoZXJQcm9wZXJ0aWVzID0gKFN0cmluZ1tdKXNlY3Rpb25IZWFkZXJJbmZvLmdldE90aGVyUHJvcGVydGllcygpOwotICAgU3RyaW5nW10gdGl0bGVLZXlzID0ge290aGVyUHJvcGVydGllc1swXSxvdGhlclByb3BlcnRpZXNbMV19OwotICAgYm9vbGVhbiBoYXNFcnJvcnMgPSBvdGhlclByb3BlcnRpZXNbMl0uZXF1YWxzKEJvb2xlYW4uVFJVRS50b1N0cmluZygpKTsKLSAgIGJvb2xlYW4gaXNGaW5kID0gdGFibGVDb250YWluZXJJZC5zdGFydHNXaXRoKCJmaW5kIik7Ci0gICBTdHJpbmdCdWZmZXIgdHdpc3RJbWFnZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCJ4Iik7Ci0gICB0d2lzdEltYWdlTmFtZS5hcHBlbmQodGFibGVDb250YWluZXJJZCk7Ci0lPgotPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJZCU+JywnPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxzdHJvbmc+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UodGl0bGVLZXlzWzBdKSU+PC9zdHJvbmc+Ci08JQotICAgaWYgKGhhc0Vycm9ycykKLSAgIHsKLSU+Ci0gICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci08JQotICAgfQotJT4KLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci08JQotICAgU3RyaW5nIHRleHRDb250cm9sVGl0bGVLZXk7Ci0gICBpZiAodGl0bGVLZXlzWzBdLmVxdWFscygiRk9STV9MQUJFTF9OQU1FUyIpKQotICAgICB0ZXh0Q29udHJvbFRpdGxlS2V5ID0gIkZPUk1fQ09OVFJPTF9USVRMRV9OQU1FX1RFWFRfVkFMVUUiOwotICAgZWxzZQotICAgICB0ZXh0Q29udHJvbFRpdGxlS2V5ID0gIkZPUk1fQ09OVFJPTF9USVRMRV9ERVNDUklQVElPTl9URVhUX1ZBTFVFIjsKLSU+ICAgICAgIAotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDphZGRMYW5ndWFnZUlucHV0Um93KCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLCc8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UodGV4dENvbnRyb2xUaXRsZUtleSkpJT4nKSI+Ci0gICAgICAgIDwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPgotICAgICAgPC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6cmVtb3ZlU2VsZWN0ZWRSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19SRU1PVkUiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08ZGl2IGlkPSI8JT10YWJsZUNvbnRhaW5lcklkJT4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgIDx0cj4KLSAgICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVDaGVja0FsbENsaWNrKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLHRoaXMpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0FMTF9DSEVDS19CT1giKSU+Ij48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTEFOR1VBR0UiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKHRpdGxlS2V5c1sxXSklPjwvdGg+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwlIAotICAgaWYgKGlzRmluZCkKLSAgIHsvLyBjb25kaXRpb24gdG8gdHVybiBvZmYgd2hlbiBwdWJsaXNoaW5nIHRvIGNvbWUuCi0lPiAgICAgCi08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvbmFtZXNfZmluZFF1YWxpZmllcnNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgIH0KLSU+ICAgICAKLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2xvZ2luX2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9sb2dpbl9hdXRoZW50aWNhdGlvbl90YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYThjNWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL2xvZ2luX2F1dGhlbnRpY2F0aW9uX3RhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNDI3ICAgMTM2NDQ5IGJydW5zc2VuQHVzLmlibS5jb20gLSBWaW5jZSBCcnVuc3NlbiAgCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5kYXRhbW9kZWwuQWJzdHJhY3RVRERJRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLlJlZ2lzdHJ5RWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuVHJlZUVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi1VRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLU5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0KLVJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKChBYnN0cmFjdFVERElFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0UmVnaXN0cnlFbGVtZW50KCk7Ci1TdHJpbmcgdXNlcm5hbWUgPSByZWdFbGVtZW50LmdldFVzZXJJZCgpOwotU3RyaW5nIHBhc3N3b3JkID0gcmVnRWxlbWVudC5nZXRDcmVkKCk7Ci1TdHJpbmcgcHVibGlzaFVSTCA9IHJlZ0VsZW1lbnQuZ2V0UHVibGlzaFVSTCgpOwotCi1pZiAodXNlcm5hbWUgPT0gbnVsbCkgewotCXVzZXJuYW1lID0gIiI7Ci19Ci0KLWlmIChwYXNzd29yZCA9PSBudWxsKSB7Ci0JcGFzc3dvcmQgPSAiIjsKLX0KLQotaWYgKHB1Ymxpc2hVUkwgPT0gbnVsbCkgewotCXB1Ymxpc2hVUkwgPSAiIjsKLX0KLQotJT4KLSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9PV05FRCU+IiB2YWx1ZT0idHJ1ZSIvPgotICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX05BTUUlPiIgdmFsdWU9IlF1ZXJ5IFJlc3VsdHMiLz4KLSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9NQVhfU0VBUkNIX1NFVCU+IiB2YWx1ZT0iMTAwIi8+Ci0gIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfTUFYX1JFU1VMVFMlPiIgdmFsdWU9IjEwIi8+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgPHRyPgotICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICA8bGFiZWw+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUFVCTElTSF9VUkwiKSU+PC9sYWJlbD4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICAgPHRkPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1BVQkxJU0hfVVJMJT4iIHZhbHVlPSI8JT1wdWJsaXNoVVJMJT4iIGNsYXNzPSJ0ZXh0ZW50ZXIiLz4KLSAgICAgICA8L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0zMCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgIDxsYWJlbD48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VU0VSSUQiKSU+PC9sYWJlbD4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSI8JT11c2VybmFtZSU+IiBuYW1lPSI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX1VTRVJJRCU+IiBjbGFzcz0idGV4dGVudGVyIi8+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iPjxsYWJlbD48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9QQVNTV09SRCIpJT48L2xhYmVsPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InBhc3N3b3JkIiB2YWx1ZSA9IjwlPXBhc3N3b3JkJT4iIG5hbWU9IjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfUEFTU1dPUkQlPiIgY2xhc3M9InRleHRlbnRlciIvPjwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9uYW1lc19maW5kUXVhbGlmaWVyc190YWJsZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvbmFtZXNfZmluZFF1YWxpZmllcnNfdGFibGUuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2VlNjhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9uYW1lc19maW5kUXVhbGlmaWVyc190YWJsZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLnVkZGk0ai51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTx0YWJsZT4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImZpbmRfcXVhbGlmaWVyX2V4YWN0X25hbWVfbWF0Y2giIHZhbHVlPSI8JT1GaW5kUXVhbGlmaWVyLmV4YWN0TmFtZU1hdGNoJT4iPjxsYWJlbCBmb3I9ImZpbmRfcXVhbGlmaWVyX2V4YWN0X25hbWVfbWF0Y2giPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0VYQUNUX05BTUVfTUFUQ0giKSU+PC9sYWJlbD4KLSAgICA8L3RkPgotICA8L3RyPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZmluZF9xdWFsaWZpZXJfY2FzZV9zZW5zaXRpdmVfbWF0Y2giIHZhbHVlPSI8JT1GaW5kUXVhbGlmaWVyLmNhc2VTZW5zaXRpdmVNYXRjaCU+Ij48bGFiZWwgZm9yPSJmaW5kX3F1YWxpZmllcl9jYXNlX3NlbnNpdGl2ZV9tYXRjaCI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQ0FTRV9TRU5TSVRJVkVfTUFUQ0giKSU+PC9sYWJlbD4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9yZXN1bHRzX3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9yZXN1bHRzX3RhYmxlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYzMTg1NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvcmVzdWx0c190YWJsZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9InNlY3Rpb25IZWFkZXJJbmZvIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLlNlY3Rpb25IZWFkZXJJbmZvIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotICAgU3RyaW5nIHRhYmxlQ29udGFpbmVySWQgPSBzZWN0aW9uSGVhZGVySW5mby5nZXRDb250YWluZXJJZCgpOwotICAgU3RyaW5nW10gc3BlY2lmaWNJbmZvID0gKFN0cmluZ1tdKXNlY3Rpb25IZWFkZXJJbmZvLmdldE90aGVyUHJvcGVydGllcygpOwotICAgU3RyaW5nIHRpdGxlID0gc3BlY2lmaWNJbmZvWzBdOwotICAgU3RyaW5nIHBhcmVudENvbnRhaW5lcklkID0gc3BlY2lmaWNJbmZvWzFdOwotICAgU3RyaW5nQnVmZmVyIHR3aXN0SW1hZ2VOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigieCIpOwotICAgdHdpc3RJbWFnZU5hbWUuYXBwZW5kKHRhYmxlQ29udGFpbmVySWQpOwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPjxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySWQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT48L3RkPgotICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8c3Ryb25nPjwlPXRpdGxlJT48L3N0cm9uZz4KLSAgICA8L3RkPgotICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICA8dHI+Ci0gICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9dGFibGVDb250YWluZXJJZCU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0RFU0NSSVBUSU9OIiklPjwvdGg+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL3Jlc3VsdHNmb3JtaGVhZGVyLmluYyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy9yZXN1bHRzZm9ybWhlYWRlci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwM2MyNzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL3Jlc3VsdHNmb3JtaGVhZGVyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh0aXRsZUltYWdlUGF0aCkpJT4iIGFsdD0iIj4KLSAgICAgIDxzdHJvbmc+PCU9dGl0bGUlPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci08JQotICAgaW50IGNvbHNwYW4gPSAxOwotICAgaWYgKGhhc1RhcmdldCkKLSAgIHsKLSAgICAgU3RyaW5nIHJldHVybkxpbmsgPSBUcmFuc2ZlclN1YlF1ZXJ5UmVzdWx0c0FjdGlvbi5nZXRBY3Rpb25MaW5rRm9yUmV0dXJuKCk7Ci0lPgotICAgIDx0ZCBub3dyYXAgd2lkdGg9IioiPiZuYnNwOzwvdGQ+Ci0gICAgPHRkIGFsaWduPSJyaWdodCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHJldHVybkxpbmspKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19UQVJHRVQiKSU+PC9hPgotICAgIDwvdGQ+Ci08JQotICAgICBjb2xzcGFuICs9IDI7Ci0gICB9Ci0lPgotICA8L3RyPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yMCBjb2xzcGFuPTwlPWNvbHNwYW4lPj4gPGltZyBoZWlnaHQ9MiB3aWR0aD0iMTAwJSIgYWxpZ249InRvcCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiI+IDwvdGQ+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGQgY29sc3Bhbj08JT1jb2xzcGFuJT4+Ci08JQotICAgaWYgKGhhc1RhcmdldCkKLSAgIHsKLSU+Ci08JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TVUJRVUVSWSIpJT4KLTwlCi0gICB9Ci0lPgotPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUVVFUlkiKSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvdWRfY2F0ZWdvcmllc190YWJsZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvdWRfY2F0ZWdvcmllc190YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMWZmMDAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL3VkX2NhdGVnb3JpZXNfdGFibGUuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGoudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBTdHJpbmcgdGFibGVDb250YWluZXJJZCA9IHNlY3Rpb25IZWFkZXJJbmZvLmdldENvbnRhaW5lcklkKCk7Ci0gICBTdHJpbmdCdWZmZXIgdHdpc3RJbWFnZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCJ4Iik7Ci0gICB0d2lzdEltYWdlTmFtZS5hcHBlbmQodGFibGVDb250YWluZXJJZCk7Ci0lPgotPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJZCU+JywnPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+IAotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8c3Ryb25nPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VTRVJfREVGSU5FRF9DQVRFR09SSUVTIiklPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci0gICAgPCEtLQotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmVkaXRTZWxlY3RlZERldGFpbHNVc2VyRGVmaW5lZENhdGVnb3J5Um93cygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfRURJVCIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpjYW5jZWxTZWxlY3RlZERldGFpbHNVc2VyRGVmaW5lZENhdGVnb3J5Um93cygnPCU9dGFibGVDb250YWluZXJJZCU+JykiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQ0FOQ0VMIiklPjwvYT4KLSAgICA8L3RkPgotICAgIC0tPgotICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTonJzsiPgotICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgPHRyPgotICAgICAgPCEtLQotICAgICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPXRhYmxlQ29udGFpbmVySWQlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgICAtLT4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiIHdpZHRoPSIxNSUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC90aD4KLSAgICAgIDwhLS0KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiIHdpZHRoPSIxMCUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0NIRUNLRUQiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiIHdpZHRoPSI3MCUiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0ZJTEUiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiIHdpZHRoPSIqIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQUNUSU9OUyIpJT48L3RoPgotICAgICAgLS0+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PiAgCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvZm9ybXMvdWRkaU9iamVjdHNQdWJsaXNoZXJBc3NlcnRpb25zX3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy91ZGRpT2JqZWN0c1B1Ymxpc2hlckFzc2VydGlvbnNfdGFibGUuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDI4MjI4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy91ZGRpT2JqZWN0c1B1Ymxpc2hlckFzc2VydGlvbnNfdGFibGUuanNwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmRhdGFtb2RlbC5CdXNpbmVzc0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSAgIFN0cmluZyB0YWJsZUNvbnRhaW5lcklkID0gc2VjdGlvbkhlYWRlckluZm8uZ2V0Q29udGFpbmVySWQoKTsKLSAgIFN0cmluZ1tdIHNwZWNpZmljSW5mbyA9IChTdHJpbmdbXSlzZWN0aW9uSGVhZGVySW5mby5nZXRPdGhlclByb3BlcnRpZXMoKTsKLSAgIFN0cmluZyB0YWJsZVRpdGxlS2V5ID0gc3BlY2lmaWNJbmZvWzBdOwotICAgYm9vbGVhbiBoYXNFcnJvcnMgPSBzcGVjaWZpY0luZm9bMV0uZXF1YWxzKEJvb2xlYW4uVFJVRS50b1N0cmluZygpKTsKLSAgIFN0cmluZyBxdWVyeUl0ZW1TdHJpbmcgPSBzcGVjaWZpY0luZm9bMl07Ci0gICBTdHJpbmcgcGFyZW50Q29udGFpbmVySWQgPSBzcGVjaWZpY0luZm9bM107Ci0gICBTdHJpbmcgdHJhbnNmZXJUYXJnZXRLZXkgPSBzcGVjaWZpY0luZm9bNF07Ci0gICBTdHJpbmdCdWZmZXIgdHdpc3RJbWFnZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCJ4Iik7Ci0gICB0d2lzdEltYWdlTmFtZS5hcHBlbmQodGFibGVDb250YWluZXJJZCk7Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJZCU+JywnPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxzdHJvbmc+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UodGFibGVUaXRsZUtleSklPjwvc3Ryb25nPgotPCUKLSAgIGlmIChoYXNFcnJvcnMpCi0gICB7Ci0lPgotICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotPCUKLSAgIH0KLSU+ICAgICAgICAgCi0gICAgPC90ZD4KLTwlCi0gICBpZiAoc2VjdGlvbkhlYWRlckluZm8uaXNEeW5hbWljKCkpCi0gICB7Ci0lPiAgICAgICAKLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDppbml0aWF0ZVN1YlF1ZXJ5KCc8JT1wYXJlbnRDb250YWluZXJJZCU+JywnPCU9dHJhbnNmZXJUYXJnZXRLZXklPicsPCU9cXVlcnlJdGVtU3RyaW5nJT4sdHJ1ZSkiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfR0VUIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmluaXRpYXRlU3ViUXVlcnkoJzwlPXBhcmVudENvbnRhaW5lcklkJT4nLCc8JT10cmFuc2ZlclRhcmdldEtleSU+Jyw8JT1xdWVyeUl0ZW1TdHJpbmclPixmYWxzZSkiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfRklORCIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpyZW1vdmVTZWxlY3RlZFJvd3MoJzwlPXRhYmxlQ29udGFpbmVySWQlPicpIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1JFTU9WRSIpJT48L2E+Ci0gICAgPC90ZD4KLTwlCi0gICB9Ci0lPiAgICAgICAKLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTxkaXYgaWQ9IjwlPXRhYmxlQ29udGFpbmVySWQlPiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgPHRyPgotICAgICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPXRhYmxlQ29udGFpbmVySWQlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT0oKEJ1c2luZXNzRWxlbWVudCl1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldFRyZWVFbGVtZW50KCkpLmdldEJ1c2luZXNzRW50aXR5KCkuZ2V0RGVmYXVsdE5hbWVTdHJpbmcoKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0RJUkVDVElPTiIpJT48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTkFNRSIpJT48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfREVTQ1JJUFRJT04iKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0FTU0VSVElPTl9UWVBFIiklPjwvdGg+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL3VkZGlPYmplY3RzX3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9mb3Jtcy91ZGRpT2JqZWN0c190YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1YjNkYTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2Zvcm1zL3VkZGlPYmplY3RzX3RhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBTdHJpbmcgdGFibGVDb250YWluZXJJZCA9IHNlY3Rpb25IZWFkZXJJbmZvLmdldENvbnRhaW5lcklkKCk7Ci0gICBTdHJpbmdbXSBzcGVjaWZpY0luZm8gPSAoU3RyaW5nW10pc2VjdGlvbkhlYWRlckluZm8uZ2V0T3RoZXJQcm9wZXJ0aWVzKCk7Ci0gICBTdHJpbmcgdGFibGVUaXRsZUtleSA9IHNwZWNpZmljSW5mb1swXTsKLSAgIGJvb2xlYW4gaGFzRXJyb3JzID0gc3BlY2lmaWNJbmZvWzFdLmVxdWFscyhCb29sZWFuLlRSVUUudG9TdHJpbmcoKSk7Ci0gICBTdHJpbmcgcXVlcnlJdGVtU3RyaW5nID0gc3BlY2lmaWNJbmZvWzJdOwotICAgU3RyaW5nIHBhcmVudENvbnRhaW5lcklkID0gc3BlY2lmaWNJbmZvWzNdOwotICAgU3RyaW5nIHRyYW5zZmVyVGFyZ2V0S2V5ID0gc3BlY2lmaWNJbmZvWzRdOwotICAgU3RyaW5nQnVmZmVyIHR3aXN0SW1hZ2VOYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigieCIpOwotICAgdHdpc3RJbWFnZU5hbWUuYXBwZW5kKHRhYmxlQ29udGFpbmVySWQpOwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPjxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySWQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT48L3RkPgotICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8c3Ryb25nPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKHRhYmxlVGl0bGVLZXkpJT48L3N0cm9uZz4KLTwlCi0gICBpZiAoaGFzRXJyb3JzKQotICAgewotJT4KLSAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLTwlCi0gICB9Ci0lPiAgICAgICAgIAotICAgIDwvdGQ+Ci08JQotICAgaWYgKHNlY3Rpb25IZWFkZXJJbmZvLmlzRHluYW1pYygpKQotICAgewotJT4gICAgICAgCi0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6aW5pdGlhdGVTdWJRdWVyeSgnPCU9cGFyZW50Q29udGFpbmVySWQlPicsJzwlPXRyYW5zZmVyVGFyZ2V0S2V5JT4nLDwlPXF1ZXJ5SXRlbVN0cmluZyU+LHRydWUpIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0dFVCIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDppbml0aWF0ZVN1YlF1ZXJ5KCc8JT1wYXJlbnRDb250YWluZXJJZCU+JywnPCU9dHJhbnNmZXJUYXJnZXRLZXklPicsPCU9cXVlcnlJdGVtU3RyaW5nJT4sZmFsc2UpIj48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0ZJTkQiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6cmVtb3ZlU2VsZWN0ZWRSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nKSI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19SRU1PVkUiKSU+PC9hPgotICAgIDwvdGQ+Ci08JQotICAgfQotJT4gICAgICAgCi0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08ZGl2IGlkPSI8JT10YWJsZUNvbnRhaW5lcklkJT4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgIDx0cj4KLSAgICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVDaGVja0FsbENsaWNrKCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLHRoaXMpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0FMTF9DSEVDS19CT1giKSU+Ij48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTkFNRSIpJT48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfREVTQ1JJUFRJT04iKSU+PC90aD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvYnVzaW5lc3NfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL2J1c2luZXNzX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2Q2YTc3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvYnVzaW5lc3NfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL2J1c2luZXNzX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvYnVzaW5lc3NfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2Q2YTc3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvYnVzaW5lc3NfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9idXNpbmVzc2VzX2Nsb3NlZF9lbmFibGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvYnVzaW5lc3Nlc19jbG9zZWRfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMzA0M2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9idXNpbmVzc2VzX2Nsb3NlZF9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvYnVzaW5lc3Nlc19jbG9zZWRfaGlnaGxpZ2h0ZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9idXNpbmVzc2VzX2Nsb3NlZF9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMzA0M2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9idXNpbmVzc2VzX2Nsb3NlZF9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL2J1c2luZXNzZXNfb3Blbl9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL2J1c2luZXNzZXNfb3Blbl9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZDdjZWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9idXNpbmVzc2VzX29wZW5faGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9jYXRlZ29yeS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL2NhdGVnb3J5LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUxNGQ3ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL2NhdGVnb3J5LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvZmluZF9lbmFibGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvZmluZF9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU0MGEwMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL2ZpbmRfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL2ZpbmRfaGlnaGxpZ2h0ZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9maW5kX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU0MGEwMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL2ZpbmRfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9vcGVuX3JlZ2lzdHJ5X2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9vcGVuX3JlZ2lzdHJ5X2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDU2OTljLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvb3Blbl9yZWdpc3RyeV9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvb3Blbl9yZWdpc3RyeV9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL29wZW5fcmVnaXN0cnlfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDU2OTljLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvb3Blbl9yZWdpc3RyeV9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3B1Ymxpc2hfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3B1Ymxpc2hfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyY2VmMWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcHVibGlzaF9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyY2VmMWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcHVibGlzaF9zZXJ2aWNlX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoX3NlcnZpY2VfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NWVhNWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoX3NlcnZpY2VfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3B1Ymxpc2hfc2VydmljZV9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3B1Ymxpc2hfc2VydmljZV9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NWVhNWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoX3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoZXJfYXNzZXJ0aW9uc19lbmFibGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcHVibGlzaGVyX2Fzc2VydGlvbnNfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZTk5MmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoZXJfYXNzZXJ0aW9uc19lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcHVibGlzaGVyX2Fzc2VydGlvbnNfaGlnaGxpZ2h0ZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoZXJfYXNzZXJ0aW9uc19oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZTk5MmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9wdWJsaXNoZXJfYXNzZXJ0aW9uc19oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3F1ZXJpZXNfY2xvc2VkX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9xdWVyaWVzX2Nsb3NlZF9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ1NTAwYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3F1ZXJpZXNfY2xvc2VkX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9xdWVyaWVzX2Nsb3NlZF9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3F1ZXJpZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ1NTAwYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3F1ZXJpZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcXVlcmllc19vcGVuX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcXVlcmllc19vcGVuX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZjYTE1NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3F1ZXJpZXNfb3Blbl9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3F1ZXJ5LmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcXVlcnkuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjA3NjYwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcXVlcnkuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9yZWZlcmVuY2VkX3NlcnZpY2VzX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9yZWZlcmVuY2VkX3NlcnZpY2VzX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDE1MDZmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcmVmZXJlbmNlZF9zZXJ2aWNlc19lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcmVmZXJlbmNlZF9zZXJ2aWNlc19oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3JlZmVyZW5jZWRfc2VydmljZXNfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDE1MDZmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcmVmZXJlbmNlZF9zZXJ2aWNlc19oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3JlZ2lzdHJ5LmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcmVnaXN0cnkuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjQzY2FlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvcmVnaXN0cnkuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9yZWdzdHJ5Y2F0X29iai5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3JlZ3N0cnljYXRfb2JqLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM3ZDU5ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3JlZ3N0cnljYXRfb2JqLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZV9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTY3MTRiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZV9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3NlcnZpY2VfaW50ZXJmYWNlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZV9pbnRlcmZhY2VfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTMyNWNhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZV9pbnRlcmZhY2VfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9zZXJ2aWNlX2ludGVyZmFjZXNfY2xvc2VkX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9zZXJ2aWNlX2ludGVyZmFjZXNfY2xvc2VkX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmQ5ODIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZV9pbnRlcmZhY2VzX2Nsb3NlZF9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZV9pbnRlcmZhY2VzX2Nsb3NlZF9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3NlcnZpY2VfaW50ZXJmYWNlc19jbG9zZWRfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmQ5ODIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZV9pbnRlcmZhY2VzX2Nsb3NlZF9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3NlcnZpY2VfaW50ZXJmYWNlc19vcGVuX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZV9pbnRlcmZhY2VzX29wZW5faGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWZjYzAxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZV9pbnRlcmZhY2VzX29wZW5faGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9zZXJ2aWNlc19jbG9zZWRfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3NlcnZpY2VzX2Nsb3NlZF9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU2NTQ0Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3NlcnZpY2VzX2Nsb3NlZF9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZXNfY2xvc2VkX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU2NTQ0Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3NlcnZpY2VzX2Nsb3NlZF9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3NlcnZpY2VzX29wZW5fZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3NlcnZpY2VzX29wZW5fZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmODYwNTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9zZXJ2aWNlc19vcGVuX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9zZXJ2aWNlc19vcGVuX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvc2VydmljZXNfb3Blbl9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmODYwNTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy9zZXJ2aWNlc19vcGVuX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvdW5wdWJsaXNoLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvdW5wdWJsaXNoLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY5MjJhYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3VucHVibGlzaC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3VucHVibGlzaF9idXNfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3VucHVibGlzaF9idXNfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3MzBiMGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy91bnB1Ymxpc2hfYnVzX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy91bnB1Ymxpc2hfYnVzX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvdW5wdWJsaXNoX2J1c19oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3MzBiMGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy91bnB1Ymxpc2hfYnVzX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvdW5wdWJsaXNoX3NlcnZpY2VfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3VucHVibGlzaF9zZXJ2aWNlX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGJkODNmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvdW5wdWJsaXNoX3NlcnZpY2VfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3VucHVibGlzaF9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvdW5wdWJsaXNoX3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGJkODNmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvdW5wdWJsaXNoX3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL2ltYWdlcy91bnB1Ymxpc2hfc2VydmljZV9pbnRlcmZhY2VfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3VucHVibGlzaF9zZXJ2aWNlX2ludGVyZmFjZV9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk3MTNlMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3VucHVibGlzaF9zZXJ2aWNlX2ludGVyZmFjZV9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvdW5wdWJsaXNoX3NlcnZpY2VfaW50ZXJmYWNlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9pbWFnZXMvdW5wdWJsaXNoX3NlcnZpY2VfaW50ZXJmYWNlX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk3MTNlMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvaW1hZ2VzL3VucHVibGlzaF9zZXJ2aWNlX2ludGVyZmFjZV9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvbmF2aWdhdG9yX2NvbnRhaW5lci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvbmF2aWdhdG9yX2NvbnRhaW5lci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZGM5YTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL25hdmlnYXRvcl9jb250YWluZXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9OQVZJR0FUT1JfQ09OVEFJTkVSIiklPjwvdGl0bGU+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgcm93cz0iMzMsKiIgYm9yZGVyPTAgYmdjb2xvcj0iI0VDRTlEOCI+Ci0gIDxmcmFtZSBuYW1lPSI8JT1VRERJRnJhbWVOYW1lcy5OQVZJR0FUT1JfVE9PTEJBUiU+IiB0aXRsZT0iPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX05BVklHQVRPUl9UT09MQkFSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvbmF2aWdhdG9yX3Rvb2xiYXIuanNwIikpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLSAgPGZyYW1lIG5hbWU9IjwlPVVERElGcmFtZU5hbWVzLk5BVklHQVRPUl9DT05URU5UJT4iIHRpdGxlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRFTlQiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9uYXZpZ2F0b3JfY29udGVudC5qc3AiKSklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPC9mcmFtZXNldD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9uYXZpZ2F0b3JfY29udGVudC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvbmF2aWdhdG9yX2NvbnRlbnQuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWM5Y2EwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9uYXZpZ2F0b3JfY29udGVudC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9OQVZJR0FUT1JfQ09OVEVOVCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90cmVldmlldy5jc3MiKSklPiI+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotICA8L3NjcmlwdD4KLSAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvdHJlZXZpZXcuanMiKSklPiI+Ci0gIDwvc2NyaXB0PgotPC9oZWFkPgotPCUKLSAgIFN0cmluZyBzZWxlY3RlZEFuY2hvck5hbWUgPSAiIjsKLSAgIE5vZGVNYW5hZ2VyIG5hdmlnYXRvck1hbmFnZXIgPSB1ZGRpUGVyc3BlY3RpdmUuZ2V0TmF2aWdhdG9yTWFuYWdlcigpOwotICAgaW50IGZvY3VzZWROb2RlSWQgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldEZvY3VzZWROb2RlSWQoKTsKLSAgIFN0cmluZyBmb2N1c2VkQW5jaG9yTmFtZSA9IFN0cmluZy52YWx1ZU9mKGZvY3VzZWROb2RlSWQpOwotICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgaWYgKHNlbGVjdGVkTm9kZSAhPSBudWxsKQotICAgewotICAgICBzZWxlY3RlZEFuY2hvck5hbWUgPSBzZWxlY3RlZE5vZGUuZ2V0QW5jaG9yTmFtZSgpOwotICAgICBpZiAoZm9jdXNlZE5vZGVJZCA9PSBzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCkpCi0gICAgICAgZm9jdXNlZEFuY2hvck5hbWUgPSBzZWxlY3RlZEFuY2hvck5hbWU7Ci0gICB9Ci0lPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBvbkxvYWQ9InNlbGYubG9jYXRpb24uaGFzaD0nIzwlPWZvY3VzZWRBbmNob3JOYW1lJT4nO3NldFNlbGVjdGVkQW5jaG9yTmFtZSgnPCU9c2VsZWN0ZWRBbmNob3JOYW1lJT4nKSIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9InRyZWVjb250ZW50Ym9yZGVyIj4KLTwlPW5hdmlnYXRvck1hbmFnZXIucmVuZGVyVHJlZVZpZXcocmVzcG9uc2UpJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL25hdmlnYXRvcl90b29sYmFyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9uYXZpZ2F0b3JfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMjY0ZTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL25hdmlnYXRvcl90b29sYmFyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9OQVZJR0FUT1JfVE9PTEJBUiIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90b29sYmFyLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlmcmFtZXNldHMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvdG9vbGJhci5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0idG9vbGJhcmJvZHltYXJnaW4iPgotPGRpdiBpZD0idG9vbGJhcmJvcmRlciI+Ci0gIDxkaXYgaWQ9InRvb2xiYXIiIG9uZGJsY2xpY2s9InByb2Nlc3NGcmFtZXNldFNpemVzKGRvY3VtZW50LmZvcm1zWzBdKSI+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1BY3Rpb24iIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICBmb3JtQWN0aW9uLmFwcGVuZCgidWRkaS9hY3Rpb25zL1Jlc2l6ZVVERElGcmFtZXNBY3Rpb25KU1AuanNwIik7Ci0lPiAgCi08L2pzcDp1c2VCZWFuPgotPGpzcDp1c2VCZWFuIGlkPSJmb3JtRnJhbWVOYW1lIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIGZvcm1GcmFtZU5hbWUuYXBwZW5kKFVERElGcmFtZU5hbWVzLk5BVklHQVRPUl9DT05UQUlORVIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvZm9ybXMvUHJvY2Vzc1VERElGcmFtZXNldHNGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGhlaWdodD0yNSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYm9yZGVyPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgd2lkdGg9MjUgaGVpZ2h0PTI1PjxpbWcgY2xhc3M9Im5vcm1hbCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9uYXZpZ2F0b3IuZ2lmIikpJT4iIGFsdD0iIiB3aWR0aD0xNiBoZWlnaHQ9MTY+PC90ZD4KLTwlCi0gICBTdHJpbmcgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IG51bGw7Ci0gICBpZiAodWRkaVBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpLnN0YXJ0c1dpdGgoIjEwMCUiKSkKLSAgICAgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0RPVUJMRV9DTElDS19UT19SRVNUT1JFIik7Ci0gICBlbHNlCi0gICAgIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9ET1VCTEVfQ0xJQ0tfVE9fTUFYSU1JWkUiKTsKLSU+ICAgICAgICAKLSAgICAgICAgPHRkIGlkPSJkb3VibGVjbGlja2NvbHVtbiIgdGl0bGU9IjwlPWRvdWJsZUNsaWNrQ29sdW1uVGl0bGUlPiIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIqIiBoZWlnaHQ9MjUgbm93cmFwIGNsYXNzPSJ0ZXh0Ij48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9OQVZJR0FUT1IiKSU+PC90ZD4KLTwlCi0gICBTdHJpbmcgYWx0UmVmcmVzaCA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1JFRlJFU0giKTsKLSAgIFN0cmluZyBhbHRDbGVhciA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0NMRUFSIik7Ci0lPiAgIAotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9SZWZyZXNoVURESU5vZGVBY3Rpb25KU1AuanNwIikpJT4iIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvcmVmcmVzaF9lbmFibGVkLmdpZiIpKSU+IiB3aWR0aD0xNiBoZWlnaHQ9MTYgb25Nb3VzZU92ZXI9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvcmVmcmVzaF9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2VvdmVyKHRoaXMpIiBvbk1vdXNlT3V0PSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3JlZnJlc2hfZW5hYmxlZC5naWYiKSklPic7bW91c2VvdXQodGhpcykiIG9uTW91c2VEb3duPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3JlZnJlc2hfaGlnaGxpZ2h0ZWQuZ2lmIikpJT4nO21vdXNlZG93bih0aGlzKSIgb25Nb3VzZVVwPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3JlZnJlc2hfZW5hYmxlZC5naWYiKSklPic7bW91c2V1cCh0aGlzKSIgYWx0PSI8JT1hbHRSZWZyZXNoJT4iIHRpdGxlPSI8JT1hbHRSZWZyZXNoJT4iPjwvYT48L3RkPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9DbGVhck5hdmlnYXRvck5vZGVBY3Rpb25KU1AuanNwIikpJT4iIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPiIgd2lkdGg9MTYgaGVpZ2h0PTE2IG9uTW91c2VPdmVyPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZW92ZXIodGhpcykiIG9uTW91c2VPdXQ9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPic7bW91c2VvdXQodGhpcykiIG9uTW91c2VEb3duPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZWRvd24odGhpcykiIG9uTW91c2VVcD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9lbmFibGVkLmdpZiIpKSU+Jzttb3VzZXVwKHRoaXMpIiBhbHQ9IjwlPWFsdENsZWFyJT4iIHRpdGxlPSI8JT1hbHRDbGVhciU+Ij48L2E+PC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPC9kaXY+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvcHJvcGVydGllc19jb250YWluZXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTFkMWM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BST1BFUlRJRVNfQ09OVEFJTkVSIiklPjwvdGl0bGU+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgcm93cz0iMzMsKiIgYm9yZGVyPTAgYmdjb2xvcj0iI0VDRTlEOCI+Ci0gIDxmcmFtZSBuYW1lPSI8JT1VRERJRnJhbWVOYW1lcy5QUk9QRVJUSUVTX1RPT0xCQVIlPiIgdGl0bGU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9QUk9QRVJUSUVTX1RPT0xCQVIiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgidWRkaS9wcm9wZXJ0aWVzX3Rvb2xiYXIuanNwIikpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLSAgPGZyYW1lIG5hbWU9IjwlPVVERElGcmFtZU5hbWVzLlBST1BFUlRJRVNfQ09OVEVOVCU+IiB0aXRsZT0iPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BST1BFUlRJRVNfQ09OVEVOVCIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPC9mcmFtZXNldD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3Byb3BlcnRpZXNfY29udGVudC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0OTEwNTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3Byb3BlcnRpZXNfY29udGVudC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05URU5UIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci08JQotICAgTm9kZU1hbmFnZXIgbmF2aWdhdG9yTWFuYWdlciA9IHVkZGlQZXJzcGVjdGl2ZS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCk7Ci0gICBOb2RlIHNlbGVjdGVkTmF2aWdhdG9yTm9kZSA9IG5hdmlnYXRvck1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBpZiAoc2VsZWN0ZWROYXZpZ2F0b3JOb2RlICE9IG51bGwpCi0gICB7Ci0gICAgIFRvb2xNYW5hZ2VyIHRvb2xNYW5hZ2VyOwotICAgICBpZiAoc2VsZWN0ZWROYXZpZ2F0b3JOb2RlLmdldFZpZXdJZCgpID09IEFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCkKLSAgICAgICB0b29sTWFuYWdlciA9IHNlbGVjdGVkTmF2aWdhdG9yTm9kZS5nZXRUb29sTWFuYWdlcigpOwotICAgICBlbHNlCi0gICAgICAgdG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5hdmlnYXRvck5vZGUuZ2V0Vmlld1Rvb2xNYW5hZ2VyKCk7Ci0gICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gdG9vbE1hbmFnZXIuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgIGlmIChzZWxlY3RlZFRvb2wgIT0gbnVsbCAmJiBzZWxlY3RlZFRvb2wuZ2V0VG9vbFR5cGUoKSAhPSBUb29sVHlwZXMuQUNUSU9OKQotICAgICB7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGxvY2F0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoc2VsZWN0ZWRUb29sLmdldEZvcm1MaW5rKCkpKSU+IjsKLTwvc2NyaXB0PgotPCUKLSAgICAgfQotICAgICBlbHNlCi0gICAgIHsKLSU+Ci08dGFibGU+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT19BQ1RJT05fU0VMRUNURUQiKSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08JQotICAgICB9Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0lPgotPHRhYmxlPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fTk9ERV9TRUxFQ1RFRCIpJT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi0gICB9Ci0lPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvcHJvcGVydGllc190b29sYmFyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9wcm9wZXJ0aWVzX3Rvb2xiYXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTI5MmE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9wcm9wZXJ0aWVzX3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFVERElQZXJzcGVjdGl2ZSB1ZGRpUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFVERElQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BST1BFUlRJRVNfVE9PTEJBUiIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90b29sYmFyLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlmcmFtZXNldHMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvdG9vbGJhci5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0idG9vbGJhcmJvZHltYXJnaW4iPgotPGRpdiBpZD0idG9vbGJhcmJvcmRlciI+Ci0gIDxkaXYgaWQ9InRvb2xiYXIiIG9uZGJsY2xpY2s9InByb2Nlc3NGcmFtZXNldFNpemVzKGRvY3VtZW50LmZvcm1zWzBdKSI+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1BY3Rpb24iIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICBmb3JtQWN0aW9uLmFwcGVuZCgidWRkaS9hY3Rpb25zL1Jlc2l6ZVVERElGcmFtZXNBY3Rpb25KU1AuanNwIik7Ci0lPiAgCi08L2pzcDp1c2VCZWFuPgotPGpzcDp1c2VCZWFuIGlkPSJmb3JtRnJhbWVOYW1lIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIGZvcm1GcmFtZU5hbWUuYXBwZW5kKFVERElGcmFtZU5hbWVzLlBST1BFUlRJRVNfQ09OVEFJTkVSKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii91ZGRpL2Zvcm1zL1Byb2Nlc3NVRERJRnJhbWVzZXRzRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBoZWlnaHQ9MjUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvYWN0aW9ucy5naWYiKSklPiIgYWx0PSIiIHdpZHRoPTE2IGhlaWdodD0xNj48L3RkPgotPCUKLSAgIFN0cmluZyBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gbnVsbDsKLSAgIGlmICh1ZGRpUGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkuZW5kc1dpdGgoIjEwMCUiKSkKLSAgIHsKLSAgICAgaWYgKHVkZGlQZXJzcGVjdGl2ZS5nZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCkuc3RhcnRzV2l0aCgiMTAwJSIpKQotICAgICAgIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9ET1VCTEVfQ0xJQ0tfVE9fUkVTVE9SRSIpOwotICAgfQotICAgaWYgKGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPT0gbnVsbCkKLSAgICAgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0RPVUJMRV9DTElDS19UT19NQVhJTUlaRSIpOwotJT4gICAgICAgIAotICAgICAgICA8dGQgaWQ9ImRvdWJsZWNsaWNrY29sdW1uIiB0aXRsZT0iPCU9ZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSU+IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IioiIGhlaWdodD0yNSBub3dyYXAgY2xhc3M9InRleHQiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0FDVElPTlMiKSU+PC90ZD4KLTwlCi0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIE5vZGUgc2VsZWN0ZWROYXZpZ2F0b3JOb2RlID0gbmF2aWdhdG9yTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgIGlmIChzZWxlY3RlZE5hdmlnYXRvck5vZGUgIT0gbnVsbCkKLSAgIHsKLSAgICAgVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXI7Ci0gICAgIGlmIChzZWxlY3RlZE5hdmlnYXRvck5vZGUuZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKQotICAgICAgIHRvb2xNYW5hZ2VyID0gc2VsZWN0ZWROYXZpZ2F0b3JOb2RlLmdldFRvb2xNYW5hZ2VyKCk7Ci0gICAgIGVsc2UKLSAgICAgICB0b29sTWFuYWdlciA9IHNlbGVjdGVkTmF2aWdhdG9yTm9kZS5nZXRWaWV3VG9vbE1hbmFnZXIoKTsKLSAgICAgZm9yIChpbnQgaT0wO2k8dG9vbE1hbmFnZXIuZ2V0TnVtYmVyT2ZUb29scygpO2krKykKLSAgICAgewotICAgICAgIFRvb2wgdG9vbCA9IChUb29sKXRvb2xNYW5hZ2VyLmdldFRvb2woaSk7Ci0lPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48JT10b29sLnJlbmRlclRvb2wocmVzcG9uc2UsY29udHJvbGxlciklPjwvdGQ+Ci08JQotICAgICB9Ci0gICB9Ci0lPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICA8L2Rpdj4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3NjcmlwdHMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9zY3JpcHRzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3NjcmlwdHMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc2NyaXB0cy9jYnBhbmVzLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9zY3JpcHRzL2NicGFuZXMuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzI3MTk4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9zY3JpcHRzL2NicGFuZXMuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qIiAlPgotCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdmFyIGNhdGVnb3J5QnJvd3NlcldpbmRvdyA9IHRvcDsKLSAgdmFyIGNhdGVnb3J5QnJvd3NlcldpbmRvd1dvcmtBcmVhID0gdG9wLmZyYW1lc1siPCU9VURESUZyYW1lTmFtZXMuQ0FURUdPUklFU19XT1JLQVJFQSU+Il07Ci0gIHZhciBjYXRlZ29yeUJyb3dzZXJXaW5kb3dUb29sYmFyID0gY2F0ZWdvcnlCcm93c2VyV2luZG93LmZyYW1lc1siPCU9VURESUZyYW1lTmFtZXMuQ0FURUdPUklFU19UT09MQkFSJT4iXTsKLSAgdmFyIGNhdGVnb3J5QnJvd3NlcldpbmRvd0NvbnRlbnQgPSBjYXRlZ29yeUJyb3dzZXJXaW5kb3cuZnJhbWVzWyI8JT1VRERJRnJhbWVOYW1lcy5DQVRFR09SSUVTX0NPTlRFTlQlPiJdOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc2NyaXB0cy9kZXRhaWxzdGFibGVzLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9zY3JpcHRzL2RldGFpbHN0YWJsZXMuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmRlMzcwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9zY3JpcHRzL2RldGFpbHN0YWJsZXMuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTU1MCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpdGFibGVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gYWRkRGV0YWlsc0xhbmd1YWdlSW5wdXRSb3codGFibGVDb250YWluZXJJZCx0ZXh0Q29udHJvbFRpdGxlLGhhc0Vycm9yKQotICB7Ci0gICAgdHdpc3RPcGVuKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZUJvZHkgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVEJPRFkiKS5pdGVtKDApOwotICAgIHZhciBuZXdSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHZhciBjb2x1bW4wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4zID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLQotICAgIGNvbHVtbjAuY2xhc3NOYW1lID0gImNoZWNrYm94Y2VsbHMiOwotICAgIGNvbHVtbjEuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjIuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjIud2lkdGggPSAiNzAlIjsKLSAgICBjb2x1bW4zLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLQotICAgIHZhciByb3dDaGVja2JveCA9IGNyZWF0ZVJvd0NoZWNrYm94KCk7Ci0gICAgY29sdW1uMC5hcHBlbmRDaGlsZChyb3dDaGVja2JveCk7Ci0KLSAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIiIsIjwlPUFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCU+IikpOyA8JS8vIHZpZXdJZCU+Ci0gICAgY29sdW1uMS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCIiLCIiKSk7IDwlLy8gb3JpZ2luYWwgbGFuZ3VhZ2UlPgotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIiwiIikpOyA8JS8vIG9yaWdpbmFsIHRleHQlPgotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIix0ZXh0Q29udHJvbFRpdGxlKSk7IDwlLy8gY29udHJvbCB0aXRsZSU+Ci0gICAgY29sdW1uMS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCIiLGhhc0Vycm9yKSk7IDwlLy8gbW9kZSU+Ci0gICAgaWYgKGhhc0Vycm9yKQotICAgIHsKLSAgICAgIHZhciBsYW5ndWFnZVNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgICAgbGFuZ3VhZ2VTZWxlY3QuY2xhc3NOYW1lID0gInNlbGVjdGxpc3QiOwotICAgICAgcG9wdWxhdGVMYW5ndWFnZVNlbGVjdChsYW5ndWFnZVNlbGVjdCk7Ci0gICAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGxhbmd1YWdlU2VsZWN0KTsKLSAgICAgIAotICAgICAgdmFyIHRleHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgICB0ZXh0SW5wdXQuY2xhc3NOYW1lID0gInRhYmxldGV4dGVudGVyIjsKLSAgICAgIHRleHRJbnB1dC50aXRsZSA9IHRleHRDb250cm9sVGl0bGU7Ci0gICAgICBjb2x1bW4yLmFwcGVuZENoaWxkKHRleHRJbnB1dCk7Ci0gICAgICAKLSAgICAgIGFkZERldGFpbHNMYW5ndWFnZUlucHV0Um93UmVtb3ZlQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjMsdGFibGUucm93cy5sZW5ndGgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgY29sdW1uMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpOwotICAgICAgY29sdW1uMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpOwotICAgICAgYWRkRGV0YWlsc0xhbmd1YWdlSW5wdXRSb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjMsdGFibGUucm93cy5sZW5ndGgpOwotICAgIH0KLSAgICAKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMCk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjEpOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4yKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMyk7Ci0gICAgCi0gICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gIH0KLQotICBmdW5jdGlvbiByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW4pCi0gIHsKLSAgICBmb3IgKHZhciBpPTA7aTxjb2x1bW4uY2hpbGROb2Rlcy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIGNvbHVtbi5yZW1vdmVDaGlsZChjb2x1bW4uY2hpbGROb2Rlc1tpXSk7Ci0gICAgICBpLS07Ci0gICAgfQotICB9Ci0gIAotICBmdW5jdGlvbiBhZGREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvd1JlbW92ZUFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4scm93SW5kZXgpCi0gIHsKLSAgICB2YXIgcmVtb3ZlTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICBzZXRKU0xpbmtSb3dUYXJnZXQocmVtb3ZlTGluaywicmVtb3ZlRGV0YWlsc0xhbmd1YWdlSW5wdXRSb3ciLHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpOwotICAgIHJlbW92ZUxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1JFTU9WRSIpKSU+IikpOwotICAgIGNvbHVtbi5hcHBlbmRDaGlsZChyZW1vdmVMaW5rKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGFkZERldGFpbHNMYW5ndWFnZUlucHV0Um93RWRpdEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4scm93SW5kZXgpCi0gIHsKLSAgICB2YXIgZWRpdExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgc2V0SlNMaW5rUm93VGFyZ2V0KGVkaXRMaW5rLCJlZGl0RGV0YWlsc0xhbmd1YWdlSW5wdXRSb3ciLHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpOwotICAgIGVkaXRMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19FRElUIikpJT4iKSk7Ci0gICAgY29sdW1uLmFwcGVuZENoaWxkKGVkaXRMaW5rKTsgIAotICB9ICAKLSAgCi0gIGZ1bmN0aW9uIGFkZERldGFpbHNMYW5ndWFnZUlucHV0Um93Q2FuY2VsQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbixyb3dJbmRleCkKLSAgewotICAgIHZhciBjYW5jZWxMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgIHNldEpTTGlua1Jvd1RhcmdldChjYW5jZWxMaW5rLCJjYW5jZWxEZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvd0VkaXQiLHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpOwotICAgIGNhbmNlbExpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0NBTkNFTCIpKSU+IikpOwotICAgIGNvbHVtbi5hcHBlbmRDaGlsZChjYW5jZWxMaW5rKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gZWRpdERldGFpbHNMYW5ndWFnZUlucHV0Um93KHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgcm93ID0gdGFibGUucm93c1tyb3dJbmRleF07Ci0gICAgdmFyIGNvbHVtbnMgPSByb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgCi0gICAgdmFyIGNvbHVtbjEgPSBjb2x1bW5zLml0ZW0oMSk7Ci0gICAgdmFyIGNvbHVtbjIgPSBjb2x1bW5zLml0ZW0oMik7Ci0gICAgdmFyIGNvbHVtbjMgPSBjb2x1bW5zLml0ZW0oMyk7Ci0gICAgCi0gICAgdmFyIGxhbmdJZCA9IGNvbHVtbjEuY2hpbGROb2Rlc1sxXS52YWx1ZTsKLSAgICB2YXIgaW5wdXRWYWx1ZSA9IGNvbHVtbjEuY2hpbGROb2Rlc1syXS52YWx1ZTsKLSAgICB2YXIgdGV4dENvbnRyb2xUaXRsZSA9IGNvbHVtbjEuY2hpbGROb2Rlc1szXS52YWx1ZTsKLSAgICB2YXIgZWRpdGFibGUgPSAoY29sdW1uMS5jaGlsZE5vZGVzWzRdLnZhbHVlID09ICJ0cnVlIikKLSAgICBpZiAoZWRpdGFibGUpCi0gICAgICByZXR1cm47Ci0gICAgY29sdW1uMS5jaGlsZE5vZGVzWzRdLnZhbHVlID0gdHJ1ZTsKLSAgICB2YXIgY29sdW1uMUNvbnRyb2wgPSBjb2x1bW4xLmNoaWxkTm9kZXNbNV07Ci0gICAgCi0gICAgdmFyIGxhbmd1YWdlU2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7Ci0gICAgcG9wdWxhdGVMYW5ndWFnZVNlbGVjdChsYW5ndWFnZVNlbGVjdCk7Ci0gICAgY29sdW1uMS5yZXBsYWNlQ2hpbGQobGFuZ3VhZ2VTZWxlY3QsY29sdW1uMUNvbnRyb2wpOwotICAgIGxhbmd1YWdlU2VsZWN0LmNsYXNzTmFtZSA9ICJzZWxlY3RsaXN0IjsKLSAgICBzZXRMYW5ndWFnZVNlbGVjdChsYW5ndWFnZVNlbGVjdCxsYW5nSWQpOwotICAgIAotICAgIHZhciBjb2x1bW4yQ29udHJvbCA9IGNvbHVtbjIuY2hpbGROb2Rlc1swXTsKLSAgICB2YXIgdGV4dElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICBjb2x1bW4yLnJlcGxhY2VDaGlsZCh0ZXh0SW5wdXQsY29sdW1uMkNvbnRyb2wpOwotICAgIHRleHRJbnB1dC5jbGFzc05hbWUgPSAidGFibGV0ZXh0ZW50ZXIiOwotICAgIHRleHRJbnB1dC50aXRsZSA9IHRleHRDb250cm9sVGl0bGU7Ci0gICAgdGV4dElucHV0LnZhbHVlID0gaW5wdXRWYWx1ZTsKLQotICAgIHJlbW92ZUNvbHVtbkNoaWxkcmVuKGNvbHVtbjMpOwotICAgIGFkZERldGFpbHNMYW5ndWFnZUlucHV0Um93Q2FuY2VsQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjMscm93SW5kZXgpOwotICB9Ci0gIAotICBmdW5jdGlvbiBzZXREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvdyh0YWJsZUNvbnRhaW5lcklkLGluZGV4LHZpZXdJZCxsYW5nSWQsaW5wdXRWYWx1ZSkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciByb3cgPSB0YWJsZS5yb3dzW251bWJlck9mSGVhZGVyUm93cytpbmRleF07Ci0gICAgdmFyIGNvbHVtbnMgPSByb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgdmFyIGNvbHVtbjEgPSBjb2x1bW5zLml0ZW0oMSk7Ci0gICAgdmFyIGNvbHVtbjIgPSBjb2x1bW5zLml0ZW0oMik7Ci0gICAgY29sdW1uMS5jaGlsZE5vZGVzWzBdLnZhbHVlID0gdmlld0lkOwotICAgIGNvbHVtbjEuY2hpbGROb2Rlc1sxXS52YWx1ZSA9IGxhbmdJZDsKLSAgICBjb2x1bW4xLmNoaWxkTm9kZXNbMl0udmFsdWUgPSBpbnB1dFZhbHVlOwotICAgIHZhciBlZGl0YWJsZSA9IChjb2x1bW4xLmNoaWxkTm9kZXNbNF0udmFsdWUgPT0gInRydWUiKTsKLSAgICB2YXIgY29sdW1uMUNvbnRyb2wgPSBjb2x1bW4xLmNoaWxkTm9kZXNbNV07Ci0gICAgaWYgKGVkaXRhYmxlKQotICAgICAgc2V0TGFuZ3VhZ2VTZWxlY3QoY29sdW1uMUNvbnRyb2wsbGFuZ0lkKTsKLSAgICBlbHNlCi0gICAgewotICAgICAgdmFyIHRlbXBTZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKLSAgICAgIHBvcHVsYXRlTGFuZ3VhZ2VTZWxlY3QodGVtcFNlbGVjdCk7Ci0gICAgICB2YXIgbGFuZ3VhZ2UgPSBzZXRMYW5ndWFnZVNlbGVjdCh0ZW1wU2VsZWN0LGxhbmdJZCk7Ci0gICAgICBjb2x1bW4xLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXREZWZhdWx0RGlzcGxheVN0cmluZyhsYW5ndWFnZSkpLGNvbHVtbjFDb250cm9sKTsKLSAgICB9Ci0gICAgCi0gICAgdmFyIGNvbHVtbjJDb250cm9sID0gY29sdW1uMi5jaGlsZE5vZGVzWzBdOwotICAgIGlmIChlZGl0YWJsZSkKLSAgICAgIGNvbHVtbjJDb250cm9sLnZhbHVlID0gaW5wdXRWYWx1ZTsKLSAgICBlbHNlCi0gICAgICBjb2x1bW4yLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXREZWZhdWx0RGlzcGxheVN0cmluZyhpbnB1dFZhbHVlKSksY29sdW1uMkNvbnRyb2wpCi0gIH0KLSAgCi0gIGZ1bmN0aW9uIHJlbW92ZURldGFpbHNMYW5ndWFnZUlucHV0Um93KHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB0YWJsZS5kZWxldGVSb3cocm93SW5kZXgpOwotICAgIGZpeERldGFpbHNMYW5ndWFnZUlucHV0Um93TGlua3ModGFibGVDb250YWluZXJJZCk7Ci0gIH0KLSAgICAKLSAgZnVuY3Rpb24gY2FuY2VsRGV0YWlsc0xhbmd1YWdlSW5wdXRSb3dFZGl0KHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgcm93ID0gdGFibGUucm93c1tyb3dJbmRleF07Ci0gICAgdmFyIGNvbHVtbnMgPSByb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgdmFyIGNvbHVtbjEgPSBjb2x1bW5zLml0ZW0oMSk7Ci0gICAgdmFyIGNvbHVtbjIgPSBjb2x1bW5zLml0ZW0oMik7Ci0gICAgdmFyIGNvbHVtbjMgPSBjb2x1bW5zLml0ZW0oMyk7Ci0gICAgCi0gICAgdmFyIHZpZXdJZCA9IGNvbHVtbjEuY2hpbGROb2Rlc1swXS52YWx1ZTsKLSAgICB2YXIgbGFuZ0lkID0gY29sdW1uMS5jaGlsZE5vZGVzWzFdLnZhbHVlOwotICAgIHZhciBpbnB1dFZhbHVlID0gY29sdW1uMS5jaGlsZE5vZGVzWzJdLnZhbHVlOwotICAgIHZhciByb3dBY3Rpb25MaW5rSHJlZiA9IGNvbHVtbjMuY2hpbGROb2Rlc1tjb2x1bW4zLmNoaWxkTm9kZXMubGVuZ3RoLTFdLmhyZWY7Ci0gICAgaWYgKHJvd0FjdGlvbkxpbmtIcmVmLmluZGV4T2YoImphdmFzY3JpcHQ6Y2FuY2VsIikgIT0gMCkKLSAgICAgIHJldHVybjsKLSAgICAgIAotICAgIGNvbHVtbjEuY2hpbGROb2Rlc1s0XS52YWx1ZSA9IGZhbHNlOwotICAgIAotICAgIHZhciBjb2x1bW4xQ29udHJvbCA9IGNvbHVtbjEuY2hpbGROb2Rlc1s1XTsKLSAgICB2YXIgdGVtcFNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgIHBvcHVsYXRlTGFuZ3VhZ2VTZWxlY3QodGVtcFNlbGVjdCk7Ci0gICAgdmFyIGxhbmd1YWdlID0gc2V0TGFuZ3VhZ2VTZWxlY3QodGVtcFNlbGVjdCxsYW5nSWQpOwotICAgIGNvbHVtbjEucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGdldERlZmF1bHREaXNwbGF5U3RyaW5nKGxhbmd1YWdlKSksY29sdW1uMUNvbnRyb2wpOwotICAgIAotICAgIHZhciBjb2x1bW4yQ29udHJvbCA9IGNvbHVtbjIuY2hpbGROb2Rlc1swXTsKLSAgICBjb2x1bW4yLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXREZWZhdWx0RGlzcGxheVN0cmluZyhpbnB1dFZhbHVlKSksY29sdW1uMkNvbnRyb2wpOwotCi0gICAgcmVtb3ZlQ29sdW1uQ2hpbGRyZW4oY29sdW1uMyk7Ci0gICAgYWRkRGV0YWlsc0xhbmd1YWdlSW5wdXRSb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjMscm93SW5kZXgpOwotICB9Ci0KLSAgZnVuY3Rpb24gcmVtb3ZlU2VsZWN0ZWREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvd3ModGFibGVDb250YWluZXJJZCkKLSAgewotICAgIHJlbW92ZVNlbGVjdGVkUm93cyh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBmaXhEZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvd0xpbmtzKHRhYmxlQ29udGFpbmVySWQpOwotICB9Ci0gIAotICBmdW5jdGlvbiBmaXhEZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvd0xpbmtzKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICA8JS8vIEZpeCB0aGUgbGlua3MlPgotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciByb3cgPSB0YWJsZS5yb3dzW2ldOwotICAgICAgdmFyIGNvbHVtbnMgPSByb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgICB2YXIgcm93Q2hlY2tib3ggPSBjb2x1bW5zLml0ZW0oMCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKTsKLSAgICAgIAotICAgICAgZm9yICh2YXIgaj0xO2o8Y29sdW1ucy5sZW5ndGg7aisrKQotICAgICAgewotICAgICAgICBpZiAocm93Q2hlY2tib3guY2hlY2tlZCkKLSAgICAgICAgICBjb2x1bW5zLml0ZW0oaikuY2xhc3NOYW1lID0gInJvd2NvbG9yIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGNvbHVtbnMuaXRlbShqKS5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgICAgdmFyIGNvbHVtbjMgPSBjb2x1bW5zLml0ZW0oMyk7Ci0gICAgICB2YXIgbGluayA9IGNvbHVtbjMuY2hpbGROb2Rlc1tjb2x1bW4zLmNoaWxkTm9kZXMubGVuZ3RoLTFdOwotICAgICAgdmFyIHJlbW92ZUxpbms7Ci0gICAgICBpZiAobGluay5ocmVmLmluZGV4T2YoImphdmFzY3JpcHQ6cmVtb3ZlIikgPT0gMCkKLSAgICAgICAgcmVtb3ZlTGluayA9IHRydWU7Ci0gICAgICBlbHNlCi0gICAgICAgIHJlbW92ZUxpbmsgPSBmYWxzZTsKLSAgICAgICAgCi0gICAgICByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW4zKTsgICAgICAgICAgICAKLSAgICAgIHZhciBlZGl0YWJsZSA9IChjb2x1bW4xLmNoaWxkTm9kZXNbNF0udmFsdWUgPT0gInRydWUiKTsKLSAgICAgIGlmIChsaW5rLmhyZWYuaW5kZXhPZigiamF2YXNjcmlwdDpyZW1vdmUiKSA9PSAwKQotICAgICAgICBhZGREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvd1JlbW92ZUFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4zLGkpOwotICAgICAgZWxzZSBpZiAobGluay5ocmVmLmluZGV4T2YoImphdmFzY3JpcHQ6Y2FuY2VsIikgPT0gMCkKLSAgICAgICAgYWRkRGV0YWlsc0xhbmd1YWdlSW5wdXRSb3dDYW5jZWxBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uMyxpKTsKLSAgICAgIGVsc2UgaWYgKGxpbmsuaHJlZi5pbmRleE9mKCJqYXZhc2NyaXB0OmVkaXQiKSA9PSAwKQotICAgICAgICBhZGREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvd0VkaXRBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uMyxpKTsKLSAgICB9Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGVkaXRTZWxlY3RlZERldGFpbHNMYW5ndWFnZUlucHV0Um93cyh0YWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgZm9yICh2YXIgaT1udW1iZXJPZkhlYWRlclJvd3M7aTx0YWJsZS5yb3dzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgdmFyIHJvd0NoZWNrYm94ID0gdGFibGUucm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgICAgaWYgKHJvd0NoZWNrYm94LmNoZWNrZWQpCi0gICAgICAgIGVkaXREZXRhaWxzTGFuZ3VhZ2VJbnB1dFJvdyh0YWJsZUNvbnRhaW5lcklkLGkpOwotICAgIH0KLSAgfQotICAgIAotICBmdW5jdGlvbiBjYW5jZWxTZWxlY3RlZERldGFpbHNMYW5ndWFnZUlucHV0Um93cyh0YWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgZm9yICh2YXIgaT1udW1iZXJPZkhlYWRlclJvd3M7aTx0YWJsZS5yb3dzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgdmFyIHJvd0NoZWNrYm94ID0gdGFibGUucm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgICAgaWYgKHJvd0NoZWNrYm94LmNoZWNrZWQpCi0gICAgICAgIGNhbmNlbERldGFpbHNMYW5ndWFnZUlucHV0Um93RWRpdCh0YWJsZUNvbnRhaW5lcklkLGkpOwotICAgIH0KLSAgfQotICAKLSAgZnVuY3Rpb24gYWRkRGV0YWlsc0lkZW50aWZpZXJSb3codGFibGVDb250YWluZXJJZCxoYXNFcnJvcikKLSAgewotICAgIHR3aXN0T3Blbih0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgdGFibGVCb2R5ID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRCT0RZIikuaXRlbSgwKTsKLSAgICB2YXIgbmV3Um93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICB2YXIgY29sdW1uMCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIAotICAgIHZhciByb3dDaGVja2JveCA9IGNyZWF0ZVJvd0NoZWNrYm94KCk7Ci0gICAgY29sdW1uMC5hcHBlbmRDaGlsZChyb3dDaGVja2JveCk7Ci0gICAgCi0gICAgY29sdW1uMC5jbGFzc05hbWUgPSAiY2hlY2tib3hjZWxscyI7Ci0gICAgY29sdW1uMS5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgY29sdW1uMS53aWR0aCA9ICIxMCUiOwotICAgIGNvbHVtbjIuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjIud2lkdGggPSAiNDAlIjsKLSAgICBjb2x1bW4zLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW4zLndpZHRoID0gIjQwJSI7Ci0gICAgY29sdW1uNC5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0KLSAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIiIsIjwlPUFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCU+IikpOyA8JS8vIHZpZXdJZCU+Ci0gICAgY29sdW1uMS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCIiLCIiKSk7IDwlLy8gb3JpZ2luYWwga2V5IHR5cGUlPgotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIiwiIikpOyA8JS8vIG9yaWdpbmFsIGtleSBuYW1lJT4KLSAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIiIsIiIpKTsgPCUvLyBvcmlnaW5hbCBrZXkgdmFsdWUlPgotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIixoYXNFcnJvcikpOyA8JS8vIG1vZGUlPgotICAgIAotICAgIHZhciBpZGVudGlmaWVyVHlwZVNlbGVjdDsKLSAgICB2YXIga2V5TmFtZVRleHRJbnB1dDsKLSAgICBpZiAoaGFzRXJyb3IpCi0gICAgewotICAgICAgaWRlbnRpZmllclR5cGVTZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKLSAgICAgIGlkZW50aWZpZXJUeXBlU2VsZWN0Lm9uY2hhbmdlID0gaGFuZGxlSWRlbnRpZmllckNoYW5nZTsKLSAgICAgIHBvcHVsYXRlSWRlbnRpZmllclR5cGVTZWxlY3QoaWRlbnRpZmllclR5cGVTZWxlY3QpOwotICAgICAgaWRlbnRpZmllclR5cGVTZWxlY3QuY2xhc3NOYW1lID0gInNlbGVjdGxpc3QiOwotICAgICAgY29sdW1uMS5hcHBlbmRDaGlsZChpZGVudGlmaWVyVHlwZVNlbGVjdCk7ICAgIAotICAgIAotICAgICAga2V5TmFtZVRleHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgICBrZXlOYW1lVGV4dElucHV0LmNsYXNzTmFtZSA9ICJ0YWJsZXRleHRlbnRlciI7Ci0gICAgICBrZXlOYW1lVGV4dElucHV0LnRpdGxlID0gIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfSURFTlRJRklFUl9LRVlfTkFNRSIpJT4iOwotICAgICAgY29sdW1uMi5hcHBlbmRDaGlsZChrZXlOYW1lVGV4dElucHV0KTsKLQotICAgICAgdmFyIGtleVZhbHVlVGV4dElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICAgIGtleVZhbHVlVGV4dElucHV0LmNsYXNzTmFtZSA9ICJ0YWJsZXRleHRlbnRlciI7Ci0gICAgICBrZXlWYWx1ZVRleHRJbnB1dC50aXRsZSA9ICI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0lERU5USUZJRVJfS0VZX1ZBTFVFIiklPiI7Ci0gICAgICBjb2x1bW4zLmFwcGVuZENoaWxkKGtleVZhbHVlVGV4dElucHV0KTsgICAgICAKLSAgICAgIGFkZERldGFpbHNJZGVudGlmaWVyUm93UmVtb3ZlQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjQsdGFibGUucm93cy5sZW5ndGgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgY29sdW1uMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpOwotICAgICAgY29sdW1uMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpOwotICAgICAgY29sdW1uMy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpOwotICAgICAgYWRkRGV0YWlsc0lkZW50aWZpZXJSb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjQsdGFibGUucm93cy5sZW5ndGgpOwotICAgIH0KLSAgICAKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMCk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjEpOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4yKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMyk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjQpOwotICAgIHRhYmxlQm9keS5hcHBlbmRDaGlsZChuZXdSb3cpOwotICAgIGlmIChoYXNFcnJvcikKLSAgICAgIGtleU5hbWVUZXh0SW5wdXQudmFsdWUgPSBpZGVudGlmaWVyVHlwZVNlbGVjdC5vcHRpb25zWzBdLnRleHQ7Ci0gIH0KLQotICBmdW5jdGlvbiBhZGREZXRhaWxzSWRlbnRpZmllclJvd1JlbW92ZUFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4scm93SW5kZXgpCi0gIHsKLSAgICB2YXIgcmVtb3ZlTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICBzZXRKU0xpbmtSb3dUYXJnZXQocmVtb3ZlTGluaywicmVtb3ZlRGV0YWlsc0lkZW50aWZpZXJSb3ciLHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpOwotICAgIHJlbW92ZUxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1JFTU9WRSIpKSU+IikpOwotICAgIGNvbHVtbi5hcHBlbmRDaGlsZChyZW1vdmVMaW5rKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gYWRkRGV0YWlsc0lkZW50aWZpZXJSb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbixyb3dJbmRleCkKLSAgewotICAgIHZhciBlZGl0TGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICBzZXRKU0xpbmtSb3dUYXJnZXQoZWRpdExpbmssImVkaXREZXRhaWxzSWRlbnRpZmllclJvdyIsdGFibGVDb250YWluZXJJZCxyb3dJbmRleCk7Ci0gICAgZWRpdExpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0VESVQiKSklPiIpKTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQoZWRpdExpbmspOwotICB9ICAKLQotICBmdW5jdGlvbiBhZGREZXRhaWxzSWRlbnRpZmllclJvd0NhbmNlbEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4scm93SW5kZXgpCi0gIHsKLSAgICB2YXIgY2FuY2VsTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICBzZXRKU0xpbmtSb3dUYXJnZXQoY2FuY2VsTGluaywiY2FuY2VsRGV0YWlsc0lkZW50aWZpZXJSb3dFZGl0Iix0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KTsKLSAgICBjYW5jZWxMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19DQU5DRUwiKSklPiIpKTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQoY2FuY2VsTGluayk7ICAKLSAgfQotCi0gIGZ1bmN0aW9uIGVkaXREZXRhaWxzSWRlbnRpZmllclJvdyh0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHJvdyA9IHRhYmxlLnJvd3Nbcm93SW5kZXhdOwotICAgIHZhciBjb2x1bW5zID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIAotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgIHZhciBjb2x1bW4yID0gY29sdW1ucy5pdGVtKDIpOwotICAgIHZhciBjb2x1bW4zID0gY29sdW1ucy5pdGVtKDMpOwotICAgIHZhciBjb2x1bW40ID0gY29sdW1ucy5pdGVtKDQpOwotICAgIAotICAgIHZhciB0TW9kZWxLZXkgPSBjb2x1bW4xLmNoaWxkTm9kZXNbMV0udmFsdWUgICAgIAotICAgIHZhciBrZXlOYW1lID0gY29sdW1uMS5jaGlsZE5vZGVzWzJdLnZhbHVlOwotICAgIHZhciBrZXlWYWx1ZSA9IGNvbHVtbjEuY2hpbGROb2Rlc1szXS52YWx1ZTsKLSAgICB2YXIgZWRpdGFibGUgPSAoY29sdW1uMS5jaGlsZE5vZGVzWzRdLnZhbHVlID09ICJ0cnVlIikKLSAgICBpZiAoZWRpdGFibGUpCi0gICAgICByZXR1cm47Ci0gICAgY29sdW1uMS5jaGlsZE5vZGVzWzRdLnZhbHVlID0gdHJ1ZTsKLSAgICAKLSAgICB2YXIgY29sdW1uMUNvbnRyb2wgPSBjb2x1bW4xLmNoaWxkTm9kZXNbNV07Ci0gICAgdmFyIGlkZW50aWZpZXJUeXBlU2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7Ci0gICAgaWRlbnRpZmllclR5cGVTZWxlY3Qub25jaGFuZ2UgPSBoYW5kbGVJZGVudGlmaWVyQ2hhbmdlOwotICAgIHBvcHVsYXRlSWRlbnRpZmllclR5cGVTZWxlY3QoaWRlbnRpZmllclR5cGVTZWxlY3QpOwotICAgIGNvbHVtbjEucmVwbGFjZUNoaWxkKGlkZW50aWZpZXJUeXBlU2VsZWN0LGNvbHVtbjFDb250cm9sKTsKLSAgICBpZGVudGlmaWVyVHlwZVNlbGVjdC5jbGFzc05hbWUgPSAic2VsZWN0bGlzdCI7Ci0gICAgc2V0VE1vZGVsS2V5U2VsZWN0KGlkZW50aWZpZXJUeXBlU2VsZWN0LHRNb2RlbEtleSk7ICAgIAotICAgIAotICAgIHZhciBjb2x1bW4yQ29udHJvbCA9IGNvbHVtbjIuY2hpbGROb2Rlc1swXTsKLSAgICB2YXIga2V5TmFtZVRleHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgY29sdW1uMi5yZXBsYWNlQ2hpbGQoa2V5TmFtZVRleHRJbnB1dCxjb2x1bW4yQ29udHJvbCk7Ci0gICAga2V5TmFtZVRleHRJbnB1dC5jbGFzc05hbWUgPSAidGFibGV0ZXh0ZW50ZXIiOwotICAgIGtleU5hbWVUZXh0SW5wdXQudGl0bGUgPSAiPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9JREVOVElGSUVSX0tFWV9OQU1FIiklPiI7Ci0gICAga2V5TmFtZVRleHRJbnB1dC52YWx1ZSA9IGtleU5hbWU7Ci0gICAgCi0gICAgdmFyIGNvbHVtbjNDb250cm9sID0gY29sdW1uMy5jaGlsZE5vZGVzWzBdOwotICAgIHZhciBrZXlWYWx1ZVRleHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgY29sdW1uMy5yZXBsYWNlQ2hpbGQoa2V5VmFsdWVUZXh0SW5wdXQsY29sdW1uM0NvbnRyb2wpOwotICAgIGtleVZhbHVlVGV4dElucHV0LmNsYXNzTmFtZSA9ICJ0YWJsZXRleHRlbnRlciI7Ci0gICAga2V5VmFsdWVUZXh0SW5wdXQudGl0bGUgPSAiPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9JREVOVElGSUVSX0tFWV9WQUxVRSIpJT4iOwotICAgIGtleVZhbHVlVGV4dElucHV0LnZhbHVlID0ga2V5VmFsdWU7Ci0gICAKLSAgICByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW40KTsKLSAgICAKLSAgICBhZGREZXRhaWxzSWRlbnRpZmllclJvd0NhbmNlbEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW40LHJvd0luZGV4KTsKLSAgfQotCi0gIGZ1bmN0aW9uIHNldERldGFpbHNJZGVudGlmaWVyUm93KHRhYmxlQ29udGFpbmVySWQsaW5kZXgsdmlld0lkLHRNb2RlbEtleSxrZXlOYW1lLGtleVZhbHVlKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHJvdyA9IHRhYmxlLnJvd3NbbnVtYmVyT2ZIZWFkZXJSb3dzK2luZGV4XTsKLSAgICB2YXIgY29sdW1ucyA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGNvbHVtbnMuaXRlbSgxKTsKLSAgICB2YXIgY29sdW1uMiA9IGNvbHVtbnMuaXRlbSgyKTsKLSAgICB2YXIgY29sdW1uMyA9IGNvbHVtbnMuaXRlbSgzKTsKLSAgICBjb2x1bW4xLmNoaWxkTm9kZXNbMF0udmFsdWUgPSB2aWV3SWQ7Ci0gICAgY29sdW1uMS5jaGlsZE5vZGVzWzFdLnZhbHVlID0gdE1vZGVsS2V5OwotICAgIGNvbHVtbjEuY2hpbGROb2Rlc1syXS52YWx1ZSA9IGtleU5hbWU7Ci0gICAgY29sdW1uMS5jaGlsZE5vZGVzWzNdLnZhbHVlID0ga2V5VmFsdWU7Ci0gICAgdmFyIGVkaXRhYmxlID0gKGNvbHVtbjEuY2hpbGROb2Rlc1s0XS52YWx1ZSA9PSAidHJ1ZSIpOwotICAgIHZhciBjb2x1bW4xQ29udHJvbCA9IGNvbHVtbjEuY2hpbGROb2Rlc1s1XTsKLSAgICBpZiAoZWRpdGFibGUpCi0gICAgICBzZXRUTW9kZWxLZXlTZWxlY3QoY29sdW1uMUNvbnRyb2wsdE1vZGVsS2V5KTsKLSAgICBlbHNlCi0gICAgewotICAgICAgdmFyIHRlbXBTZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKLSAgICAgIHBvcHVsYXRlSWRlbnRpZmllclR5cGVTZWxlY3QodGVtcFNlbGVjdCk7Ci0gICAgICB2YXIgdE1vZGVsS2V5VmFsdWUgPSBzZXRUTW9kZWxLZXlTZWxlY3QodGVtcFNlbGVjdCx0TW9kZWxLZXkpOwotICAgICAgY29sdW1uMS5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodE1vZGVsS2V5VmFsdWUpLGNvbHVtbjFDb250cm9sKTsKLSAgICB9Ci0gICAgICAgIAotICAgIHZhciBjb2x1bW4yQ29udHJvbCA9IGNvbHVtbjIuY2hpbGROb2Rlc1swXTsKLSAgICBpZiAoZWRpdGFibGUpCi0gICAgICBjb2x1bW4yQ29udHJvbC52YWx1ZSA9IGtleU5hbWU7Ci0gICAgZWxzZQotICAgICAgY29sdW1uMi5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoa2V5TmFtZSksY29sdW1uMkNvbnRyb2wpOwotICAgICAgCi0gICAgdmFyIGNvbHVtbjNDb250cm9sID0gY29sdW1uMy5jaGlsZE5vZGVzWzBdOwotICAgIGlmIChlZGl0YWJsZSkKLSAgICAgIGNvbHVtbjNDb250cm9sLnZhbHVlID0ga2V5VmFsdWU7Ci0gICAgZWxzZQotICAgICAgY29sdW1uMy5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoa2V5VmFsdWUpLGNvbHVtbjNDb250cm9sKTsKLSAgfQotCi0gIGZ1bmN0aW9uIHJlbW92ZURldGFpbHNJZGVudGlmaWVyUm93KHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB0YWJsZS5kZWxldGVSb3cocm93SW5kZXgpOwotICAgIGZpeERldGFpbHNJZGVudGlmaWVyUm93TGlua3ModGFibGVDb250YWluZXJJZCk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGNhbmNlbERldGFpbHNJZGVudGlmaWVyUm93RWRpdCh0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHJvdyA9IHRhYmxlLnJvd3Nbcm93SW5kZXhdOwotICAgIHZhciBjb2x1bW5zID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgIHZhciBjb2x1bW4yID0gY29sdW1ucy5pdGVtKDIpOwotICAgIHZhciBjb2x1bW4zID0gY29sdW1ucy5pdGVtKDMpOwotICAgIHZhciBjb2x1bW40ID0gY29sdW1ucy5pdGVtKDQpOwotICAgIAotICAgIHZhciB2aWV3SWQgPSBjb2x1bW4xLmNoaWxkTm9kZXNbMF0udmFsdWU7Ci0gICAgdmFyIHRNb2RlbEtleSA9IGNvbHVtbjEuY2hpbGROb2Rlc1sxXS52YWx1ZTsKLSAgICB2YXIga2V5TmFtZSA9IGNvbHVtbjEuY2hpbGROb2Rlc1syXS52YWx1ZTsKLSAgICB2YXIga2V5VmFsdWUgPSBjb2x1bW4xLmNoaWxkTm9kZXNbM10udmFsdWU7Ci0gICAgdmFyIHJvd0FjdGlvbkxpbmtIcmVmID0gY29sdW1uNC5jaGlsZE5vZGVzW2NvbHVtbjQuY2hpbGROb2Rlcy5sZW5ndGgtMV0uaHJlZjsKLSAgICBpZiAocm93QWN0aW9uTGlua0hyZWYuaW5kZXhPZigiamF2YXNjcmlwdDpjYW5jZWwiKSAhPSAwKQotICAgICAgcmV0dXJuOwotICAgIGNvbHVtbjEuY2hpbGROb2Rlc1s0XS52YWx1ZSA9IGZhbHNlOwotICAgIAotICAgIHZhciBjb2x1bW4xQ29udHJvbCA9IGNvbHVtbjEuY2hpbGROb2Rlc1s1XTsKLSAgICB2YXIgdGVtcFNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgIHBvcHVsYXRlSWRlbnRpZmllclR5cGVTZWxlY3QodGVtcFNlbGVjdCk7Ci0gICAgdmFyIHRNb2RlbEtleVZhbHVlID0gc2V0VE1vZGVsS2V5U2VsZWN0KHRlbXBTZWxlY3QsdE1vZGVsS2V5KTsKLSAgICBjb2x1bW4xLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0TW9kZWxLZXlWYWx1ZSksY29sdW1uMUNvbnRyb2wpOwotICAgIAotICAgIHZhciBjb2x1bW4yQ29udHJvbCA9IGNvbHVtbjIuY2hpbGROb2Rlc1swXTsKLSAgICBjb2x1bW4yLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShrZXlOYW1lKSxjb2x1bW4yQ29udHJvbCk7Ci0gICAgCi0gICAgdmFyIGNvbHVtbjNDb250cm9sID0gY29sdW1uMy5jaGlsZE5vZGVzWzBdOwotICAgIGNvbHVtbjMucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGtleVZhbHVlKSxjb2x1bW4zQ29udHJvbCk7Ci0KLSAgICByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW40KTsKLSAgICBhZGREZXRhaWxzSWRlbnRpZmllclJvd0VkaXRBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uNCxyb3dJbmRleCk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIHJlbW92ZVNlbGVjdGVkRGV0YWlsc0lkZW50aWZpZXJSb3dzKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICByZW1vdmVTZWxlY3RlZFJvd3ModGFibGVDb250YWluZXJJZCk7Ci0gICAgPCUvLyBGaXggdGhlIGxpbmtzJT4KLSAgICBmaXhEZXRhaWxzSWRlbnRpZmllclJvd0xpbmtzKHRhYmxlQ29udGFpbmVySWQpOwotICB9Ci0gIAotICBmdW5jdGlvbiBmaXhEZXRhaWxzSWRlbnRpZmllclJvd0xpbmtzKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBmb3IgKHZhciBpPW51bWJlck9mSGVhZGVyUm93cztpPHRhYmxlLnJvd3MubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgcm93ID0gdGFibGUucm93c1tpXTsKLSAgICAgIHZhciBjb2x1bW5zID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgICAgdmFyIHJvd0NoZWNrYm94ID0gY29sdW1ucy5pdGVtKDApLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLml0ZW0oMCk7Ci0gICAgICBmb3IgKHZhciBqPTE7ajxjb2x1bW5zLmxlbmd0aDtqKyspCi0gICAgICB7Ci0gICAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgICAgIGNvbHVtbnMuaXRlbShqKS5jbGFzc05hbWUgPSAicm93Y29sb3IiOwotICAgICAgICBlbHNlCi0gICAgICAgICAgY29sdW1ucy5pdGVtKGopLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICAgIH0KLSAgICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgICAgdmFyIHZpZXdJZCA9IGNvbHVtbjEuY2hpbGROb2Rlc1swXS52YWx1ZTsKLSAgICAgIHZhciBjb2x1bW40ID0gY29sdW1ucy5pdGVtKDQpOwotICAgICAgdmFyIGxpbmsgPSBjb2x1bW40LmNoaWxkTm9kZXNbY29sdW1uNC5jaGlsZE5vZGVzLmxlbmd0aC0xXTsKLSAgICAgIHZhciByZW1vdmVMaW5rOwotICAgICAgaWYgKGxpbmsuaHJlZi5pbmRleE9mKCJqYXZhc2NyaXB0OnJlbW92ZSIpID09IDApCi0gICAgICAgIHJlbW92ZUxpbmsgPSB0cnVlOwotICAgICAgZWxzZQotICAgICAgICByZW1vdmVMaW5rID0gZmFsc2U7ICAgICAgCi0gICAgICByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW40KTsKLSAgICAgIAotICAgICAgaWYgKGxpbmsuaHJlZi5pbmRleE9mKCJqYXZhc2NyaXB0OnJlbW92ZSIpID09IDApCi0gICAgICAgIGFkZERldGFpbHNJZGVudGlmaWVyUm93UmVtb3ZlQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjQsaSk7Ci0gICAgICBlbHNlIGlmIChsaW5rLmhyZWYuaW5kZXhPZigiamF2YXNjcmlwdDplZGl0IikgPT0gMCkKLSAgICAgICAgYWRkRGV0YWlsc0lkZW50aWZpZXJSb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjQsaSk7Ci0gICAgICBlbHNlIGlmIChsaW5rLmhyZWYuaW5kZXhPZigiamF2YXNjcmlwdDpjYW5jZWwiKSA9PSAwKQotICAgICAgICBhZGREZXRhaWxzSWRlbnRpZmllclJvd0NhbmNlbEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW40LGkpOwotICAgIH0gIAotICB9Ci0gIAotICBmdW5jdGlvbiBlZGl0U2VsZWN0ZWREZXRhaWxzSWRlbnRpZmllclJvd3ModGFibGVDb250YWluZXJJZCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciByb3dDaGVja2JveCA9IHRhYmxlLnJvd3NbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKTsKLSAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgICBlZGl0RGV0YWlsc0lkZW50aWZpZXJSb3codGFibGVDb250YWluZXJJZCxpKTsKLSAgICB9ICAKLSAgfQotICAKLSAgZnVuY3Rpb24gY2FuY2VsU2VsZWN0ZWREZXRhaWxzSWRlbnRpZmllclJvd3ModGFibGVDb250YWluZXJJZCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciByb3dDaGVja2JveCA9IHRhYmxlLnJvd3NbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKTsKLSAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgICBjYW5jZWxEZXRhaWxzSWRlbnRpZmllclJvd0VkaXQodGFibGVDb250YWluZXJJZCxpKTsKLSAgICB9ICAKLSAgfQotICAKLSAgZnVuY3Rpb24gYWRkRGV0YWlsc0NhdGVnb3J5Um93KHRhYmxlQ29udGFpbmVySWQsaGFzRXJyb3IpCi0gIHsKLSAgICB0d2lzdE9wZW4odGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHRhYmxlQm9keSA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUQk9EWSIpLml0ZW0oMCk7Ci0gICAgdmFyIG5ld1JvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgdmFyIGNvbHVtbjAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4xID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW40ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAKLSAgICB2YXIgcm93Q2hlY2tib3ggPSBjcmVhdGVSb3dDaGVja2JveCgpOwotICAgIGNvbHVtbjAuYXBwZW5kQ2hpbGQocm93Q2hlY2tib3gpOwotICAgIAotICAgIGNvbHVtbjAuY2xhc3NOYW1lID0gImNoZWNrYm94Y2VsbHMiOwotICAgIGNvbHVtbjEuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjEud2lkdGggPSAiNSUiOwotICAgIGNvbHVtbjIuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjIud2lkdGggPSAiNTUlIjsKLSAgICBjb2x1bW4zLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW4zLndpZHRoID0gIjI1JSI7Ci0gICAgY29sdW1uNC5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0KLSAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIiIsIjwlPUFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCU+IikpOyA8JS8vIHZpZXdJZCU+Ci0gICAgY29sdW1uMS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCIiLCIiKSk7IDwlLy8gb3JpZ2luYWwga2V5IHR5cGUlPgotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIiwiIikpOyA8JS8vIG9yaWdpbmFsIGtleSBuYW1lJT4KLSAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIiIsIiIpKTsgPCUvLyBvcmlnaW5hbCBrZXkgdmFsdWUlPgotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIixoYXNFcnJvcikpOyA8JS8vIG1vZGUlPgotICAgIAotICAgIGlmIChoYXNFcnJvcikKLSAgICB7Ci0gICAgICB2YXIgY2F0ZWdvcnlUeXBlU2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7Ci0gICAgICBwb3B1bGF0ZUNhdGVnb3J5VHlwZVNlbGVjdChjYXRlZ29yeVR5cGVTZWxlY3QpOwotICAgICAgY2F0ZWdvcnlUeXBlU2VsZWN0LmNsYXNzTmFtZSA9ICJzZWxlY3RsaXN0IjsKLSAgICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoY2F0ZWdvcnlUeXBlU2VsZWN0KTsKLSAgICAgIAotICAgICAgdmFyIGtleU5hbWVUZXh0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAga2V5TmFtZVRleHRJbnB1dC5jbGFzc05hbWUgPSAidGFibGV0ZXh0ZW50ZXIiOwotICAgICAga2V5TmFtZVRleHRJbnB1dC50aXRsZSA9ICI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0NBVEVHT1JZX0tFWV9OQU1FIiklPiI7Ci0gICAgICBjb2x1bW4yLmFwcGVuZENoaWxkKGtleU5hbWVUZXh0SW5wdXQpOwotICAgICAgCi0gICAgICB2YXIga2V5VmFsdWVUZXh0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAga2V5VmFsdWVUZXh0SW5wdXQuY2xhc3NOYW1lID0gInRhYmxldGV4dGVudGVyIjsKLSAgICAgIGtleVZhbHVlVGV4dElucHV0LnRpdGxlID0gIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfQ0FURUdPUllfS0VZX1ZBTFVFIiklPiI7Ci0gICAgICBjb2x1bW4zLmFwcGVuZENoaWxkKGtleVZhbHVlVGV4dElucHV0KTsKLSAgICAgIGFkZENhdGVnb3J5Um93QnJvd3NlTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjQsdGFibGUucm93cy5sZW5ndGgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgY29sdW1uMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpOwotICAgICAgY29sdW1uMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpOwotICAgICAgY29sdW1uMy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpOwotICAgICAgYWRkRGV0YWlsc0NhdGVnb3J5Um93RWRpdEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW40LHRhYmxlLnJvd3MubGVuZ3RoKTsKLSAgICB9Ci0gICAgICAKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMCk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjEpOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4yKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMyk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjQpOwotICAgIHRhYmxlQm9keS5hcHBlbmRDaGlsZChuZXdSb3cpOyAgICAgIAotICB9Ci0KLSAgZnVuY3Rpb24gYWRkRGV0YWlsc0NhdGVnb3J5Um93Q2FuY2VsQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbixyb3dJbmRleCkKLSAgewotICAgIHZhciBjYW5jZWxMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgIHNldEpTTGlua1Jvd1RhcmdldChjYW5jZWxMaW5rLCJjYW5jZWxEZXRhaWxzQ2F0ZWdvcnlSb3dFZGl0Iix0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KTsKLSAgICBjYW5jZWxMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19DQU5DRUwiKSklPiIpKTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQoY2FuY2VsTGluayk7ICAKLSAgfQotCi0gIGZ1bmN0aW9uIGFkZERldGFpbHNDYXRlZ29yeVJvd0Jyb3dzZUNhbmNlbEFjdGlvbkxpbmtzKHRhYmxlQ29udGFpbmVySWQsY29sdW1uLHJvd0luZGV4KQotICB7Ci0gICAgYWRkQ2F0ZWdvcnlSb3dCcm93c2VMaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uLHJvd0luZGV4KTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKSk7Ci0gICAgYWRkRGV0YWlsc0NhdGVnb3J5Um93Q2FuY2VsQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbixyb3dJbmRleCk7Ci0gIH0KLQotICBmdW5jdGlvbiBhZGREZXRhaWxzQ2F0ZWdvcnlSb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbixyb3dJbmRleCkKLSAgewotICAgIHZhciBlZGl0TGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICBzZXRKU0xpbmtSb3dUYXJnZXQoZWRpdExpbmssImVkaXREZXRhaWxzQ2F0ZWdvcnlSb3ciLHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpOwotICAgIGVkaXRMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19FRElUIikpJT4iKSk7Ci0gICAgY29sdW1uLmFwcGVuZENoaWxkKGVkaXRMaW5rKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGFkZERldGFpbHNDYXRlZ29yeVJvd1JlbW92ZUFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4scm93SW5kZXgpCi0gIHsKLSAgICB2YXIgcmVtb3ZlTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICBzZXRKU0xpbmtSb3dUYXJnZXQocmVtb3ZlTGluaywicmVtb3ZlRGV0YWlsc0NhdGVnb3J5Um93Iix0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KTsKLSAgICByZW1vdmVMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19SRU1PVkUiKSklPiIpKTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQocmVtb3ZlTGluayk7ICAKLSAgfQotCi0gIGZ1bmN0aW9uIGFkZERldGFpbHNDYXRlZ29yeVJvd0Jyb3dzZVJlbW92ZUFjdGlvbkxpbmtzKHRhYmxlQ29udGFpbmVySWQsY29sdW1uLHJvd0luZGV4KQotICB7Ci0gICAgYWRkQ2F0ZWdvcnlSb3dCcm93c2VMaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uLHJvd0luZGV4KTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKSk7Ci0gICAgYWRkRGV0YWlsc0NhdGVnb3J5Um93UmVtb3ZlQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbixyb3dJbmRleCk7Ci0gIH0KLQotICBmdW5jdGlvbiBlZGl0RGV0YWlsc0NhdGVnb3J5Um93KHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgcm93ID0gdGFibGUucm93c1tyb3dJbmRleF07Ci0gICAgdmFyIGNvbHVtbnMgPSByb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgCi0gICAgdmFyIGNvbHVtbjEgPSBjb2x1bW5zLml0ZW0oMSk7Ci0gICAgdmFyIGNvbHVtbjIgPSBjb2x1bW5zLml0ZW0oMik7Ci0gICAgdmFyIGNvbHVtbjMgPSBjb2x1bW5zLml0ZW0oMyk7Ci0gICAgdmFyIGNvbHVtbjQgPSBjb2x1bW5zLml0ZW0oNCk7Ci0gICAgCi0gICAgdmFyIHRNb2RlbEtleSA9IGNvbHVtbjEuY2hpbGROb2Rlc1sxXS52YWx1ZQotICAgIHZhciBrZXlOYW1lID0gY29sdW1uMS5jaGlsZE5vZGVzWzJdLnZhbHVlOwotICAgIHZhciBrZXlWYWx1ZSA9IGNvbHVtbjEuY2hpbGROb2Rlc1szXS52YWx1ZTsKLSAgICB2YXIgZWRpdGFibGUgPSAoY29sdW1uMS5jaGlsZE5vZGVzWzRdLnZhbHVlID09ICJ0cnVlIikKLSAgICBpZiAoZWRpdGFibGUpCi0gICAgICByZXR1cm47Ci0gICAgY29sdW1uMS5jaGlsZE5vZGVzWzRdLnZhbHVlID0gdHJ1ZTsKLSAgICAKLSAgICB2YXIgY29sdW1uMUNvbnRyb2wgPSBjb2x1bW4xLmNoaWxkTm9kZXNbNV07Ci0gICAgdmFyIGNhdGVnb3J5VHlwZVNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgIHBvcHVsYXRlQ2F0ZWdvcnlUeXBlU2VsZWN0KGNhdGVnb3J5VHlwZVNlbGVjdCk7Ci0gICAgY29sdW1uMS5yZXBsYWNlQ2hpbGQoY2F0ZWdvcnlUeXBlU2VsZWN0LGNvbHVtbjFDb250cm9sKTsKLSAgICBjYXRlZ29yeVR5cGVTZWxlY3QuY2xhc3NOYW1lID0gInNlbGVjdGxpc3QiOwotICAgIHNldFRNb2RlbEtleVNlbGVjdChjYXRlZ29yeVR5cGVTZWxlY3QsdE1vZGVsS2V5KTsgICAgCi0gICAgCi0gICAgdmFyIGNvbHVtbjJDb250cm9sID0gY29sdW1uMi5jaGlsZE5vZGVzWzBdOwotICAgIHZhciBrZXlOYW1lVGV4dElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICBjb2x1bW4yLnJlcGxhY2VDaGlsZChrZXlOYW1lVGV4dElucHV0LGNvbHVtbjJDb250cm9sKTsKLSAgICBrZXlOYW1lVGV4dElucHV0LmNsYXNzTmFtZSA9ICJ0YWJsZXRleHRlbnRlciI7Ci0gICAga2V5TmFtZVRleHRJbnB1dC50aXRsZSA9ICI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0NBVEVHT1JZX0tFWV9OQU1FIiklPiI7Ci0gICAga2V5TmFtZVRleHRJbnB1dC52YWx1ZSA9IGtleU5hbWU7Ci0gICAgCi0gICAgdmFyIGNvbHVtbjNDb250cm9sID0gY29sdW1uMy5jaGlsZE5vZGVzWzBdOwotICAgIHZhciBrZXlWYWx1ZVRleHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgY29sdW1uMy5yZXBsYWNlQ2hpbGQoa2V5VmFsdWVUZXh0SW5wdXQsY29sdW1uM0NvbnRyb2wpOwotICAgIGtleVZhbHVlVGV4dElucHV0LmNsYXNzTmFtZSA9ICJ0YWJsZXRleHRlbnRlciI7Ci0gICAga2V5VmFsdWVUZXh0SW5wdXQudGl0bGUgPSAiPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9DQVRFR09SWV9LRVlfVkFMVUUiKSU+IjsKLSAgICBrZXlWYWx1ZVRleHRJbnB1dC52YWx1ZSA9IGtleVZhbHVlOwotICAgIAotICAgIHJlbW92ZUNvbHVtbkNoaWxkcmVuKGNvbHVtbjQpOwotICAgIAotICAgIGFkZERldGFpbHNDYXRlZ29yeVJvd0Jyb3dzZUNhbmNlbEFjdGlvbkxpbmtzKHRhYmxlQ29udGFpbmVySWQsY29sdW1uNCxyb3dJbmRleCk7Ci0gIH0KLQotICBmdW5jdGlvbiBzZXREZXRhaWxzQ2F0ZWdvcnlSb3codGFibGVDb250YWluZXJJZCxpbmRleCx2aWV3SWQsdE1vZGVsS2V5LGtleU5hbWUsa2V5VmFsdWUpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgcm93ID0gdGFibGUucm93c1tudW1iZXJPZkhlYWRlclJvd3MraW5kZXhdOwotICAgIHZhciBjb2x1bW5zID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgIHZhciBjb2x1bW4yID0gY29sdW1ucy5pdGVtKDIpOwotICAgIHZhciBjb2x1bW4zID0gY29sdW1ucy5pdGVtKDMpOwotICAgIGNvbHVtbjEuY2hpbGROb2Rlc1swXS52YWx1ZSA9IHZpZXdJZDsKLSAgICBjb2x1bW4xLmNoaWxkTm9kZXNbMV0udmFsdWUgPSB0TW9kZWxLZXk7Ci0gICAgY29sdW1uMS5jaGlsZE5vZGVzWzJdLnZhbHVlID0ga2V5TmFtZTsKLSAgICBjb2x1bW4xLmNoaWxkTm9kZXNbM10udmFsdWUgPSBrZXlWYWx1ZTsKLSAgICB2YXIgZWRpdGFibGUgPSAoY29sdW1uMS5jaGlsZE5vZGVzWzRdLnZhbHVlID09ICJ0cnVlIik7Ci0gICAgCi0gICAgdmFyIGNvbHVtbjFDb250cm9sID0gY29sdW1uMS5jaGlsZE5vZGVzWzVdOwotICAgIGlmIChlZGl0YWJsZSkKLSAgICAgIHNldFRNb2RlbEtleVNlbGVjdChjb2x1bW4xQ29udHJvbCx0TW9kZWxLZXkpOwotICAgIGVsc2UKLSAgICB7Ci0gICAgICB2YXIgdGVtcFNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgICAgcG9wdWxhdGVDYXRlZ29yeVR5cGVTZWxlY3QodGVtcFNlbGVjdCk7Ci0gICAgICB2YXIgdE1vZGVsS2V5VmFsdWUgPSBzZXRUTW9kZWxLZXlTZWxlY3QodGVtcFNlbGVjdCx0TW9kZWxLZXkpOwotICAgICAgY29sdW1uMS5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodE1vZGVsS2V5VmFsdWUpLGNvbHVtbjFDb250cm9sKTsKLSAgICB9Ci0gICAgICAgIAotICAgIHZhciBjb2x1bW4yQ29udHJvbCA9IGNvbHVtbjIuY2hpbGROb2Rlc1swXTsKLSAgICBpZiAoZWRpdGFibGUpCi0gICAgICBjb2x1bW4yQ29udHJvbC52YWx1ZSA9IGtleU5hbWU7Ci0gICAgZWxzZQotICAgICAgY29sdW1uMi5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoa2V5TmFtZSksY29sdW1uMkNvbnRyb2wpOwotICAgICAgCi0gICAgdmFyIGNvbHVtbjNDb250cm9sID0gY29sdW1uMy5jaGlsZE5vZGVzWzBdOwotICAgIGlmIChlZGl0YWJsZSkKLSAgICAgIGNvbHVtbjNDb250cm9sLnZhbHVlID0ga2V5VmFsdWU7Ci0gICAgZWxzZQotICAgICAgY29sdW1uMy5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoa2V5VmFsdWUpLGNvbHVtbjNDb250cm9sKTsgCi0gIH0KLQotICBmdW5jdGlvbiByZW1vdmVEZXRhaWxzQ2F0ZWdvcnlSb3codGFibGVDb250YWluZXJJZCxyb3dJbmRleCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHRhYmxlLmRlbGV0ZVJvdyhyb3dJbmRleCk7Ci0gICAgZml4RGV0YWlsc0NhdGVnb3J5Um93TGlua3ModGFibGVDb250YWluZXJJZCk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGNhbmNlbERldGFpbHNDYXRlZ29yeVJvd0VkaXQodGFibGVDb250YWluZXJJZCxyb3dJbmRleCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciByb3cgPSB0YWJsZS5yb3dzW3Jvd0luZGV4XTsKLSAgICB2YXIgY29sdW1ucyA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGNvbHVtbnMuaXRlbSgxKTsKLSAgICB2YXIgY29sdW1uMiA9IGNvbHVtbnMuaXRlbSgyKTsKLSAgICB2YXIgY29sdW1uMyA9IGNvbHVtbnMuaXRlbSgzKTsKLSAgICB2YXIgY29sdW1uNCA9IGNvbHVtbnMuaXRlbSg0KTsKLSAgICAKLSAgICB2YXIgdmlld0lkID0gY29sdW1uMS5jaGlsZE5vZGVzWzBdLnZhbHVlOwotICAgIHZhciB0TW9kZWxLZXkgPSBjb2x1bW4xLmNoaWxkTm9kZXNbMV0udmFsdWU7Ci0gICAgdmFyIGtleU5hbWUgPSBjb2x1bW4xLmNoaWxkTm9kZXNbMl0udmFsdWU7Ci0gICAgdmFyIGtleVZhbHVlID0gY29sdW1uMS5jaGlsZE5vZGVzWzNdLnZhbHVlOwotICAgIHZhciByb3dBY3Rpb25MaW5rSHJlZiA9IGNvbHVtbjQuY2hpbGROb2Rlc1tjb2x1bW40LmNoaWxkTm9kZXMubGVuZ3RoLTFdLmhyZWY7Ci0gICAgaWYgKHJvd0FjdGlvbkxpbmtIcmVmLmluZGV4T2YoImphdmFzY3JpcHQ6Y2FuY2VsIikgIT0gMCkKLSAgICAgIHJldHVybjsKLSAgICBjb2x1bW4xLmNoaWxkTm9kZXNbNF0udmFsdWUgPSBmYWxzZTsKLSAgICAKLSAgICB2YXIgY29sdW1uMUNvbnRyb2wgPSBjb2x1bW4xLmNoaWxkTm9kZXNbNV07Ci0gICAgdmFyIHRlbXBTZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKLSAgICBwb3B1bGF0ZUNhdGVnb3J5VHlwZVNlbGVjdCh0ZW1wU2VsZWN0KTsKLSAgICB2YXIgdE1vZGVsS2V5VmFsdWUgPSBzZXRUTW9kZWxLZXlTZWxlY3QodGVtcFNlbGVjdCx0TW9kZWxLZXkpOwotICAgIGNvbHVtbjEucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRNb2RlbEtleVZhbHVlKSxjb2x1bW4xQ29udHJvbCk7Ci0gICAgCi0gICAgdmFyIGNvbHVtbjJDb250cm9sID0gY29sdW1uMi5jaGlsZE5vZGVzWzBdOwotICAgIGNvbHVtbjIucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGtleU5hbWUpLGNvbHVtbjJDb250cm9sKTsKLSAgICAKLSAgICB2YXIgY29sdW1uM0NvbnRyb2wgPSBjb2x1bW4zLmNoaWxkTm9kZXNbMF07Ci0gICAgY29sdW1uMy5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoa2V5VmFsdWUpLGNvbHVtbjNDb250cm9sKTsKLQotICAgIHJlbW92ZUNvbHVtbkNoaWxkcmVuKGNvbHVtbjQpOyAgICAKLSAgICBhZGREZXRhaWxzQ2F0ZWdvcnlSb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjQscm93SW5kZXgpOwotICAgIGlmIChyb3dJbmRleCA9PSB0YXJnZXRDYXRlZ29yeVJvdykKLSAgICAgIGNsb3NlQ2F0ZWdvcnlCcm93c2VyKCk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIHJlbW92ZVNlbGVjdGVkRGV0YWlsc0NhdGVnb3J5Um93cyh0YWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgcmVtb3ZlU2VsZWN0ZWRSb3dzKHRhYmxlQ29udGFpbmVySWQpOwotICAgIDwlLy8gRml4IHRoZSBsaW5rcyU+Ci0gICAgZml4RGV0YWlsc0NhdGVnb3J5Um93TGlua3ModGFibGVDb250YWluZXJJZCk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGZpeERldGFpbHNDYXRlZ29yeVJvd0xpbmtzKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBmb3IgKHZhciBpPW51bWJlck9mSGVhZGVyUm93cztpPHRhYmxlLnJvd3MubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgcm93ID0gdGFibGUucm93c1tpXTsKLSAgICAgIHZhciBjb2x1bW5zID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgICAgdmFyIHJvd0NoZWNrYm94ID0gY29sdW1ucy5pdGVtKDApLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLml0ZW0oMCk7Ci0gICAgICBmb3IgKHZhciBqPTE7ajxjb2x1bW5zLmxlbmd0aDtqKyspCi0gICAgICB7Ci0gICAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgICAgIGNvbHVtbnMuaXRlbShqKS5jbGFzc05hbWUgPSAicm93Y29sb3IiOwotICAgICAgICBlbHNlCi0gICAgICAgICAgY29sdW1ucy5pdGVtKGopLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICAgIH0KLSAgICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgICAgdmFyIHZpZXdJZCA9IGNvbHVtbjEuY2hpbGROb2Rlc1swXS52YWx1ZTsKLSAgICAgIHZhciBjb2x1bW40ID0gY29sdW1ucy5pdGVtKDQpOwotPCUgICAgICAKLSAgICAgIC8vIEJyb3dzZSwgUmVtb3ZlCi0gICAgICAvLyBCcm93c2UsIENhbmNlbAotICAgICAgLy8gRWRpdAotICAgICAgLy8gQnJvd3NlCi0lPiAgICAgIAotICAgICAgdmFyIGxhc3RMaW5rID0gY29sdW1uNC5jaGlsZE5vZGVzW2NvbHVtbjQuY2hpbGROb2Rlcy5sZW5ndGgtMV07Ci0gICAgICByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW40KTsKLSAgICAgIGlmIChsYXN0TGluay5ocmVmLmluZGV4T2YoImphdmFzY3JpcHQ6cmVtb3ZlIikgPT0gMCkKLSAgICAgICAgYWRkRGV0YWlsc0NhdGVnb3J5Um93QnJvd3NlUmVtb3ZlQWN0aW9uTGlua3ModGFibGVDb250YWluZXJJZCxjb2x1bW40LGkpOwotICAgICAgZWxzZSBpZiAobGFzdExpbmsuaHJlZi5pbmRleE9mKCJqYXZhc2NyaXB0OmNhbmNlbCIpID09IDApCi0gICAgICAgIGFkZERldGFpbHNDYXRlZ29yeVJvd0Jyb3dzZUNhbmNlbEFjdGlvbkxpbmtzKHRhYmxlQ29udGFpbmVySWQsY29sdW1uNCxpKTsKLSAgICAgIGVsc2UgaWYgKGxhc3RMaW5rLmhyZWYuaW5kZXhPZigiamF2YXNjcmlwdDplZGl0IikgPT0gMCkKLSAgICAgICAgYWRkRGV0YWlsc0NhdGVnb3J5Um93RWRpdEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW40LGkpOwotICAgICAgZWxzZSBpZiAobGFzdExpbmsuaHJlZi5pbmRleE9mKCJqYXZhc2NyaXB0Om9wZW4iKSA9PSAwKQotICAgICAgICBhZGRDYXRlZ29yeVJvd0Jyb3dzZUxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW40LGkpOwotICAgIH0gIAotICB9Ci0gIAotICBmdW5jdGlvbiBlZGl0U2VsZWN0ZWREZXRhaWxzQ2F0ZWdvcnlSb3dzKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBmb3IgKHZhciBpPW51bWJlck9mSGVhZGVyUm93cztpPHRhYmxlLnJvd3MubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgcm93Q2hlY2tib3ggPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLml0ZW0oMCk7Ci0gICAgICBpZiAocm93Q2hlY2tib3guY2hlY2tlZCkKLSAgICAgICAgZWRpdERldGFpbHNDYXRlZ29yeVJvdyh0YWJsZUNvbnRhaW5lcklkLGkpOwotICAgIH0gIAotICB9Ci0gIAotICBmdW5jdGlvbiBjYW5jZWxTZWxlY3RlZERldGFpbHNDYXRlZ29yeVJvd3ModGFibGVDb250YWluZXJJZCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciByb3dDaGVja2JveCA9IHRhYmxlLnJvd3NbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKTsKLSAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgICBjYW5jZWxEZXRhaWxzQ2F0ZWdvcnlSb3dFZGl0KHRhYmxlQ29udGFpbmVySWQsaSk7Ci0gICAgfSAgCi0gIH0KLSAgCi0gIGZ1bmN0aW9uIGFkZERldGFpbHNVc2VyRGVmaW5lZENhdGVnb3J5Um93KHRhYmxlQ29udGFpbmVySWQsdE1vZGVsS2V5LGNhdGVnb3J5TmFtZSxpc0NoZWNrZWQsZmlsZU5hbWUsaGFzRXJyb3IpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgdGFibGVCb2R5ID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRCT0RZIikuaXRlbSgwKTsKLSAgICB2YXIgbmV3Um93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICAvL3ZhciBjb2x1bW4wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgLy92YXIgY29sdW1uMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgLy92YXIgY29sdW1uMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgLy92YXIgY29sdW1uNCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgCi0gICAgLy9jb2x1bW4wLmNsYXNzTmFtZSA9ICJjaGVja2JveGNlbGxzIjsKLSAgICBjb2x1bW4xLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW4xLndpZHRoID0gIjE1JSI7Ci0gICAgLy9jb2x1bW4yLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICAvL2NvbHVtbjIud2lkdGggPSAiMTAlIjsKLSAgICAvL2NvbHVtbjMuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIC8vY29sdW1uMy53aWR0aCA9ICI3MCUiOwotICAgIC8vY29sdW1uNC5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgCi0gICAgLy92YXIgcm93Q2hlY2tib3ggPSBjcmVhdGVSb3dDaGVja2JveCgpOwotICAgIC8vY29sdW1uMC5hcHBlbmRDaGlsZChyb3dDaGVja2JveCk7Ci0gICAgCi0gICAgLy9jb2x1bW4xLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIiIsZmlsZU5hbWUpKTsgIDwlLy8gb3JpZ2luYWwgZmlsZSBuYW1lJT4KLSAgICAvL2NvbHVtbjEuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIixoYXNFcnJvcikpOyAgPCUvLyBtb2RlJT4KLSAgICAvL2NvbHVtbjEuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIix0TW9kZWxLZXkpKTsgPCUvLyB0TW9kZWxLZXklPgotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2F0ZWdvcnlOYW1lKSk7Ci0gICAgCi0gICAgLy9jb2x1bW4yLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGlzQ2hlY2tlZCkpOwotICAgIAotICAgIC8vaWYgKGhhc0Vycm9yKQotICAgIC8vewotICAgIC8vICBjb2x1bW4zLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPVVERElBY3Rpb25JbnB1dHMuQ0FURUdPUllfVE1PREVMX0tFWSU+Iix0TW9kZWxLZXkpKTsKLSAgICAvLyAgdmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgLy8gIGZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoIm5hbWUiLCI8JT1VRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JZX0ZJTEVOQU1FJT4iKTsKLSAgICAvLyAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgidHlwZSIsImZpbGUiKTsKLSAgICAvLyAgZmlsZUlucHV0LnRpdGxlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0NBVEVHT1JZX0ZJTEUiKSklPiI7Ci0gICAgLy8gIGZpbGVJbnB1dC5jbGFzc05hbWUgPSAidGFibGVmaWxlYnJvd3NlIjsKLSAgICAvLyAgY29sdW1uMy5hcHBlbmRDaGlsZChmaWxlSW5wdXQpOwotICAgIC8vICBhZGREZXRhaWxzVXNlckRlZmluZWRDYXRlZ29yeVJvd0NhbmNlbExpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW40LHRhYmxlLnJvd3MubGVuZ3RoKTsKLSAgICAvL30KLSAgICAvL2Vsc2UKLSAgICAvL3sKLSAgICAvLyAgY29sdW1uMy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmaWxlTmFtZSkpOwotICAgIC8vICBhZGREZXRhaWxzVXNlckRlZmluZWRDYXRlZ29yeVJvd0VkaXRMaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uNCx0YWJsZS5yb3dzLmxlbmd0aCk7Ci0gICAgLy99Ci0gICAgCi0gICAgLy9uZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMCk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjEpOwotICAgIC8vbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjIpOwotICAgIC8vbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjMpOwotICAgIC8vbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjQpOwotICAgIAotICAgIHRhYmxlQm9keS5hcHBlbmRDaGlsZChuZXdSb3cpOwotICB9Ci0gIAotICBmdW5jdGlvbiBhZGREZXRhaWxzVXNlckRlZmluZWRDYXRlZ29yeVJvd0VkaXRMaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uLHJvd0luZGV4KQotICB7Ci0gICAgdmFyIGVkaXRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgIHNldEpTTGlua1Jvd1RhcmdldChlZGl0TGluaywiZWRpdERldGFpbHNVc2VyRGVmaW5lZENhdGVnb3J5Um93Iix0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KTsKLSAgICBlZGl0TGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfRURJVCIpKSU+IikpOwotICAgIGNvbHVtbi5hcHBlbmRDaGlsZChlZGl0TGluayk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGVkaXREZXRhaWxzVXNlckRlZmluZWRDYXRlZ29yeVJvdyh0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHJvdyA9IHRhYmxlLnJvd3Nbcm93SW5kZXhdOwotICAgIHZhciBjb2x1bW5zID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIAotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOyAgICAKLSAgICB2YXIgY29sdW1uMyA9IGNvbHVtbnMuaXRlbSgzKTsKLSAgICB2YXIgY29sdW1uNCA9IGNvbHVtbnMuaXRlbSg0KTsKLSAgICAKLSAgICB2YXIgZWRpdGFibGUgPSAoY29sdW1uMS5jaGlsZE5vZGVzWzFdLnZhbHVlID09ICJ0cnVlIik7Ci0gICAgaWYgKGVkaXRhYmxlKQotICAgICAgcmV0dXJuOwotICAgIHZhciB0TW9kZWxLZXkgPSBjb2x1bW4xLmNoaWxkTm9kZXNbMl0udmFsdWU7Ci0gICAgY29sdW1uMS5jaGlsZE5vZGVzWzFdLnZhbHVlID0gdHJ1ZTsKLSAgICAKLSAgICByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW4zKTsKLSAgICBjb2x1bW4zLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPVVERElBY3Rpb25JbnB1dHMuQ0FURUdPUllfVE1PREVMX0tFWSU+Iix0TW9kZWxLZXkpKTsKLSAgICB2YXIgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCJuYW1lIiwiPCU9VURESUFjdGlvbklucHV0cy5DQVRFR09SWV9GSUxFTkFNRSU+Iik7Ci0gICAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgidHlwZSIsImZpbGUiKTsKLSAgICBmaWxlSW5wdXQudGl0bGUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfQ0FURUdPUllfRklMRSIpKSU+IjsKLSAgICBmaWxlSW5wdXQuY2xhc3NOYW1lID0gInRhYmxlZmlsZWJyb3dzZSI7Ci0gICAgY29sdW1uMy5hcHBlbmRDaGlsZChmaWxlSW5wdXQpOwotICAgIAotICAgIHJlbW92ZUNvbHVtbkNoaWxkcmVuKGNvbHVtbjQpOwotICAgIAotICAgIGFkZERldGFpbHNVc2VyRGVmaW5lZENhdGVnb3J5Um93Q2FuY2VsTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjQscm93SW5kZXgpOwotICB9Ci0gIAotICBmdW5jdGlvbiBhZGREZXRhaWxzVXNlckRlZmluZWRDYXRlZ29yeVJvd0NhbmNlbExpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4scm93SW5kZXgpCi0gIHsKLSAgICB2YXIgY2FuY2VsTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICBzZXRKU0xpbmtSb3dUYXJnZXQoY2FuY2VsTGluaywiY2FuY2VsRGV0YWlsc1VzZXJEZWZpbmVkQ2F0ZWdvcnlSb3dFZGl0Iix0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KTsKLSAgICBjYW5jZWxMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19DQU5DRUwiKSklPiIpKTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQoY2FuY2VsTGluayk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGNhbmNlbERldGFpbHNVc2VyRGVmaW5lZENhdGVnb3J5Um93RWRpdCh0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHJvdyA9IHRhYmxlLnJvd3Nbcm93SW5kZXhdOwotICAgIHZhciBjb2x1bW5zID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIAotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgIHZhciBjb2x1bW4zID0gY29sdW1ucy5pdGVtKDMpOwotICAgIHZhciBjb2x1bW40ID0gY29sdW1ucy5pdGVtKDQpOwotICAgIAotICAgIHZhciBlZGl0YWJsZSA9IChjb2x1bW4xLmNoaWxkTm9kZXNbMV0udmFsdWUgPT0gInRydWUiKTsKLSAgICBpZiAoIWVkaXRhYmxlKQotICAgICAgcmV0dXJuOwotICAgIGNvbHVtbjEuY2hpbGROb2Rlc1sxXS52YWx1ZSA9IGZhbHNlOwotICAgIAotICAgIHJlbW92ZUNvbHVtbkNoaWxkcmVuKGNvbHVtbjMpOwotICAgIGNvbHVtbjMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29sdW1uMS5jaGlsZE5vZGVzWzBdLnZhbHVlKSk7Ci0gICAgCi0gICAgcmVtb3ZlQ29sdW1uQ2hpbGRyZW4oY29sdW1uNCk7Ci0gICAgCi0gICAgYWRkRGV0YWlsc1VzZXJEZWZpbmVkQ2F0ZWdvcnlSb3dFZGl0TGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjQscm93SW5kZXgpOwotICB9Ci0gIAotICBmdW5jdGlvbiBlZGl0U2VsZWN0ZWREZXRhaWxzVXNlckRlZmluZWRDYXRlZ29yeVJvd3ModGFibGVDb250YWluZXJJZCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciByb3dDaGVja2JveCA9IHRhYmxlLnJvd3NbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKTsKLSAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgICBlZGl0RGV0YWlsc1VzZXJEZWZpbmVkQ2F0ZWdvcnlSb3codGFibGVDb250YWluZXJJZCxpKTsKLSAgICB9Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGNhbmNlbFNlbGVjdGVkRGV0YWlsc1VzZXJEZWZpbmVkQ2F0ZWdvcnlSb3dzKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBmb3IgKHZhciBpPW51bWJlck9mSGVhZGVyUm93cztpPHRhYmxlLnJvd3MubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgcm93Q2hlY2tib3ggPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLml0ZW0oMCk7Ci0gICAgICBpZiAocm93Q2hlY2tib3guY2hlY2tlZCkKLSAgICAgICAgY2FuY2VsRGV0YWlsc1VzZXJEZWZpbmVkQ2F0ZWdvcnlSb3dFZGl0KHRhYmxlQ29udGFpbmVySWQsaSk7Ci0gICAgfQotICB9ICAKLSAgCi0gIGZ1bmN0aW9uIGFkZERldGFpbHNEaXNjb3ZlcnlVUkxSb3codGFibGVDb250YWluZXJJZCxoYXNFcnJvcikKLSAgewotICAgIHR3aXN0T3Blbih0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgdGFibGVCb2R5ID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRCT0RZIikuaXRlbSgwKTsKLSAgICB2YXIgbmV3Um93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICB2YXIgY29sdW1uMCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLQotICAgIGNvbHVtbjAuY2xhc3NOYW1lID0gImNoZWNrYm94Y2VsbHMiOwotICAgIGNvbHVtbjEuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjEud2lkdGggPSAiODUlIjsKLSAgICBjb2x1bW4yLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICAKLSAgICB2YXIgcm93Q2hlY2tib3ggPSBjcmVhdGVSb3dDaGVja2JveCgpOwotICAgIGNvbHVtbjAuYXBwZW5kQ2hpbGQocm93Q2hlY2tib3gpOwotICAgIAotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIiwiPCU9QWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUJT4iKSk7IDwlLy8gdmlld0lkJT4KLSAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIiIsIiIpKTsgPCUvLyBvcmlnaW5hbCBEaXNjb3ZlcnkgVVJMJT4KLSAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIiIsaGFzRXJyb3IpKTsgPCUvLyBtb2RlJT4KLSAgICBpZiAoaGFzRXJyb3IpCi0gICAgewotICAgICAgdmFyIHRleHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgICB0ZXh0SW5wdXQuY2xhc3NOYW1lID0gInRhYmxldGV4dGVudGVyIjsKLSAgICAgIHRleHRJbnB1dC50aXRsZSA9ICI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0RJU0NPVkVSWV9VUkwiKSU+IjsKLSAgICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQodGV4dElucHV0KTsKLSAgICAgIGFkZERldGFpbHNEaXNjb3ZlcnlVUkxSb3dSZW1vdmVBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uMix0YWJsZS5yb3dzLmxlbmd0aCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKSk7Ci0gICAgICBhZGREZXRhaWxzRGlzY292ZXJ5VVJMUm93RWRpdEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4yLHRhYmxlLnJvd3MubGVuZ3RoKTsKLSAgICB9Ci0gICAgCi0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjApOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4xKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMik7Ci0gICAgCi0gICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGFkZERldGFpbHNEaXNjb3ZlcnlVUkxSb3dSZW1vdmVBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uLHJvd0luZGV4KQotICB7Ci0gICAgdmFyIHJlbW92ZUxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgc2V0SlNMaW5rUm93VGFyZ2V0KHJlbW92ZUxpbmssInJlbW92ZURldGFpbHNEaXNjb3ZlcnlVUkxSb3ciLHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpOwotICAgIHJlbW92ZUxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1JFTU9WRSIpKSU+IikpOwotICAgIGNvbHVtbi5hcHBlbmRDaGlsZChyZW1vdmVMaW5rKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gYWRkRGV0YWlsc0Rpc2NvdmVyeVVSTFJvd0VkaXRBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uLHJvd0luZGV4KQotICB7Ci0gICAgdmFyIGVkaXRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgIHNldEpTTGlua1Jvd1RhcmdldChlZGl0TGluaywiZWRpdERldGFpbHNEaXNjb3ZlcnlVUkxSb3ciLHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpOwotICAgIGVkaXRMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19FRElUIikpJT4iKSk7Ci0gICAgY29sdW1uLmFwcGVuZENoaWxkKGVkaXRMaW5rKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gYWRkRGV0YWlsc0Rpc2NvdmVyeVVSTFJvd0NhbmNlbEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4scm93SW5kZXgpCi0gIHsKLSAgICB2YXIgY2FuY2VsTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICBzZXRKU0xpbmtSb3dUYXJnZXQoY2FuY2VsTGluaywiY2FuY2VsRGV0YWlsc0Rpc2NvdmVyeVVSTFJvd0VkaXQiLHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpOwotICAgIGNhbmNlbExpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0NBTkNFTCIpKSU+IikpOwotICAgIGNvbHVtbi5hcHBlbmRDaGlsZChjYW5jZWxMaW5rKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gZWRpdERldGFpbHNEaXNjb3ZlcnlVUkxSb3codGFibGVDb250YWluZXJJZCxyb3dJbmRleCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciByb3cgPSB0YWJsZS5yb3dzW3Jvd0luZGV4XTsKLSAgICB2YXIgY29sdW1ucyA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKLSAgICAKLSAgICB2YXIgY29sdW1uMSA9IGNvbHVtbnMuaXRlbSgxKTsKLSAgICB2YXIgY29sdW1uMiA9IGNvbHVtbnMuaXRlbSgyKTsKLSAgICAKLSAgICB2YXIgZGlzY292ZXJ5VVJMID0gY29sdW1uMS5jaGlsZE5vZGVzWzFdLnZhbHVlOwotICAgIHZhciBlZGl0YWJsZSA9IChjb2x1bW4xLmNoaWxkTm9kZXNbMl0udmFsdWUgPT0gInRydWUiKQotICAgIGlmIChlZGl0YWJsZSkKLSAgICAgIHJldHVybjsKLSAgICBjb2x1bW4xLmNoaWxkTm9kZXNbMl0udmFsdWUgPSB0cnVlOwotICAgIAotICAgIHZhciBjb2x1bW4xQ29udHJvbCA9IGNvbHVtbjEuY2hpbGROb2Rlc1szXTsKLSAgICB2YXIgdGV4dElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICBjb2x1bW4xLnJlcGxhY2VDaGlsZCh0ZXh0SW5wdXQsY29sdW1uMUNvbnRyb2wpOwotICAgIHRleHRJbnB1dC5jbGFzc05hbWUgPSAidGFibGV0ZXh0ZW50ZXIiOwotICAgIHRleHRJbnB1dC50aXRsZSA9ICI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0RJU0NPVkVSWV9VUkwiKSU+IjsKLSAgICB0ZXh0SW5wdXQudmFsdWUgPSBkaXNjb3ZlcnlVUkw7Ci0gICAgCi0gICAgcmVtb3ZlQ29sdW1uQ2hpbGRyZW4oY29sdW1uMik7Ci0gICAgYWRkRGV0YWlsc0Rpc2NvdmVyeVVSTFJvd0NhbmNlbEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4yLHJvd0luZGV4KTsKLSAgfQotICAKLSAgZnVuY3Rpb24gc2V0RGV0YWlsc0Rpc2NvdmVyeVVSTFJvdyh0YWJsZUNvbnRhaW5lcklkLGluZGV4LHZpZXdJZCxkaXNjb3ZlcnlVUkwpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgcm93ID0gdGFibGUucm93c1tudW1iZXJPZkhlYWRlclJvd3MraW5kZXhdOwotICAgIHZhciBjb2x1bW5zID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgIGNvbHVtbjEuY2hpbGROb2Rlc1swXS52YWx1ZSA9IHZpZXdJZDsKLSAgICBjb2x1bW4xLmNoaWxkTm9kZXNbMV0udmFsdWUgPSBkaXNjb3ZlcnlVUkw7Ci0gICAgdmFyIGVkaXRhYmxlID0gKGNvbHVtbjEuY2hpbGROb2Rlc1syXS52YWx1ZSA9PSAidHJ1ZSIpOwotICAgIHZhciBjb2x1bW4xQ29udHJvbCA9IGNvbHVtbjEuY2hpbGROb2Rlc1szXTsKLSAgICBpZiAoZWRpdGFibGUpCi0gICAgICBjb2x1bW4xQ29udHJvbC52YWx1ZSA9IGRpc2NvdmVyeVVSTDsKLSAgICBlbHNlCi0gICAgICBjb2x1bW4xLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXREZWZhdWx0RGlzcGxheVN0cmluZyhkaXNjb3ZlcnlVUkwpKSxjb2x1bW4xQ29udHJvbCk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIHJlbW92ZURldGFpbHNEaXNjb3ZlcnlVUkxSb3codGFibGVDb250YWluZXJJZCxyb3dJbmRleCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHRhYmxlLmRlbGV0ZVJvdyhyb3dJbmRleCk7Ci0gICAgZml4RGV0YWlsc0Rpc2NvdmVyeVVSTFJvd0xpbmtzKHRhYmxlQ29udGFpbmVySWQpOwotICB9Ci0gIAotICBmdW5jdGlvbiBjYW5jZWxEZXRhaWxzRGlzY292ZXJ5VVJMUm93RWRpdCh0YWJsZUNvbnRhaW5lcklkLHJvd0luZGV4KQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHJvdyA9IHRhYmxlLnJvd3Nbcm93SW5kZXhdOwotICAgIHZhciBjb2x1bW5zID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgIHZhciBjb2x1bW4yID0gY29sdW1ucy5pdGVtKDIpOwotICAgIAotICAgIHZhciB2aWV3SWQgPSBjb2x1bW4xLmNoaWxkTm9kZXNbMF0udmFsdWU7Ci0gICAgdmFyIGRpc2NvdmVyeVVSTCA9IGNvbHVtbjEuY2hpbGROb2Rlc1sxXS52YWx1ZTsKLSAgICB2YXIgcm93QWN0aW9uTGlua0hyZWYgPSBjb2x1bW4yLmNoaWxkTm9kZXNbY29sdW1uMi5jaGlsZE5vZGVzLmxlbmd0aC0xXS5ocmVmOwotICAgIGlmIChyb3dBY3Rpb25MaW5rSHJlZi5pbmRleE9mKCJqYXZhc2NyaXB0OmNhbmNlbCIpICE9IDApCi0gICAgICByZXR1cm47Ci0gICAgICAKLSAgICBjb2x1bW4xLmNoaWxkTm9kZXNbMl0udmFsdWUgPSBmYWxzZTsKLSAgICAKLSAgICB2YXIgY29sdW1uMUNvbnRyb2wgPSBjb2x1bW4xLmNoaWxkTm9kZXNbM107Ci0gICAgY29sdW1uMS5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZ2V0RGVmYXVsdERpc3BsYXlTdHJpbmcoZGlzY292ZXJ5VVJMKSksY29sdW1uMUNvbnRyb2wpOwotICAgIAotICAgIHJlbW92ZUNvbHVtbkNoaWxkcmVuKGNvbHVtbjIpOwotICAgIGFkZERldGFpbHNEaXNjb3ZlcnlVUkxSb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjIscm93SW5kZXgpOwotICB9Ci0gIAotICBmdW5jdGlvbiByZW1vdmVTZWxlY3RlZERldGFpbHNEaXNjb3ZlcnlVUkxSb3dzKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICByZW1vdmVTZWxlY3RlZFJvd3ModGFibGVDb250YWluZXJJZCk7Ci0gICAgZml4RGV0YWlsc0Rpc2NvdmVyeVVSTFJvd0xpbmtzKHRhYmxlQ29udGFpbmVySWQpOwotICB9Ci0gIAotICBmdW5jdGlvbiBmaXhEZXRhaWxzRGlzY292ZXJ5VVJMUm93TGlua3ModGFibGVDb250YWluZXJJZCkKLSAgewotICAgIDwlLy8gRml4IHRoZSBsaW5rcyU+Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgZm9yICh2YXIgaT1udW1iZXJPZkhlYWRlclJvd3M7aTx0YWJsZS5yb3dzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgdmFyIHJvdyA9IHRhYmxlLnJvd3NbaV07Ci0gICAgICB2YXIgY29sdW1ucyA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKLSAgICAgIHZhciByb3dDaGVja2JveCA9IGNvbHVtbnMuaXRlbSgwKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgICAgCi0gICAgICBmb3IgKHZhciBqPTE7ajxjb2x1bW5zLmxlbmd0aDtqKyspCi0gICAgICB7Ci0gICAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgICAgIGNvbHVtbnMuaXRlbShqKS5jbGFzc05hbWUgPSAicm93Y29sb3IiOwotICAgICAgICBlbHNlCi0gICAgICAgICAgY29sdW1ucy5pdGVtKGopLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICAgIH0KLSAgICAgIAotICAgICAgdmFyIGNvbHVtbjEgPSBjb2x1bW5zLml0ZW0oMSk7Ci0gICAgICB2YXIgY29sdW1uMiA9IGNvbHVtbnMuaXRlbSgyKTsKLSAgICAgIHZhciBsaW5rID0gY29sdW1uMi5jaGlsZE5vZGVzW2NvbHVtbjIuY2hpbGROb2Rlcy5sZW5ndGgtMV07Ci0gICAgICByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW4yKTsKLSAgICAgIHZhciBlZGl0YWJsZSA9IChjb2x1bW4xLmNoaWxkTm9kZXNbMl0udmFsdWUgPT0gInRydWUiKTsKLSAgICAgIGlmIChsaW5rLmhyZWYuaW5kZXhPZigiamF2YXNjcmlwdDpyZW1vdmUiKSA9PSAwKQotICAgICAgICBhZGREZXRhaWxzRGlzY292ZXJ5VVJMUm93UmVtb3ZlQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjIsaSk7Ci0gICAgICBlbHNlIGlmIChsaW5rLmhyZWYuaW5kZXhPZigiamF2YXNjcmlwdDpjYW5jZWwiKSA9PSAwKQotICAgICAgICBhZGREZXRhaWxzRGlzY292ZXJ5VVJMUm93Q2FuY2VsQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjIsaSk7Ci0gICAgICBlbHNlIGlmIChsaW5rLmhyZWYuaW5kZXhPZigiamF2YXNjcmlwdDplZGl0IikgPT0gMCkKLSAgICAgICAgYWRkRGV0YWlsc0Rpc2NvdmVyeVVSTFJvd0VkaXRBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uMixpKTsgCi0gICAgfQotICB9Ci0gIAotICBmdW5jdGlvbiBlZGl0U2VsZWN0ZWREZXRhaWxzRGlzY292ZXJ5VVJMUm93cyh0YWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgZm9yICh2YXIgaT1udW1iZXJPZkhlYWRlclJvd3M7aTx0YWJsZS5yb3dzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgdmFyIHJvd0NoZWNrYm94ID0gdGFibGUucm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgICAgaWYgKHJvd0NoZWNrYm94LmNoZWNrZWQpCi0gICAgICAgIGVkaXREZXRhaWxzRGlzY292ZXJ5VVJMUm93KHRhYmxlQ29udGFpbmVySWQsaSk7Ci0gICAgfQotICB9Ci0gIAotICBmdW5jdGlvbiBjYW5jZWxTZWxlY3RlZERldGFpbHNEaXNjb3ZlcnlVUkxSb3dzKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBmb3IgKHZhciBpPW51bWJlck9mSGVhZGVyUm93cztpPHRhYmxlLnJvd3MubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgcm93Q2hlY2tib3ggPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLml0ZW0oMCk7Ci0gICAgICBpZiAocm93Q2hlY2tib3guY2hlY2tlZCkKLSAgICAgICAgY2FuY2VsRGV0YWlsc0Rpc2NvdmVyeVVSTFJvd0VkaXQodGFibGVDb250YWluZXJJZCxpKTsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBhZGREZXRhaWxzU2luZ2xlSXRlbVJvdyh0YWJsZUNvbnRhaW5lcklkLGhhc0Vycm9yKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHRhYmxlQm9keSA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUQk9EWSIpLml0ZW0oMCk7Ci0gICAgdmFyIG5ld1JvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgdmFyIGNvbHVtbjAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4xID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAKLSAgICBjb2x1bW4wLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW4wLndpZHRoID0gIjkwJSI7Ci0gICAgY29sdW1uMS5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgCi0gICAgY29sdW1uMC5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCIiLCIiKSk7IDwlLy8gaXRlbSB2YWx1ZSU+Ci0gICAgY29sdW1uMC5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCIiLGhhc0Vycm9yKSk7IDwlLy8gbW9kZSU+Ci0gICAgCi0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjApOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4xKTsKLSAgICAKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMSk7Ci0gICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gIH0KLQotICBmdW5jdGlvbiBhZGREZXRhaWxzV1NETFVSTFNpbmdsZUl0ZW1Sb3dCcm93c2VBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsd3NkbFR5cGUsY29sdW1uKQotICB7Ci0gICAgdmFyIGJyb3dzZUxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgYnJvd3NlTGluay5ocmVmID0gImphdmFzY3JpcHQ6b3BlbldTRExCcm93c2VyKCdjb250ZW50Ym9yZGVyJywiK3dzZGxUeXBlKyIpIjsKLSAgICBicm93c2VMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQlJPV1NFIikpJT4iKSk7Ci0gICAgY29sdW1uLmFwcGVuZENoaWxkKGJyb3dzZUxpbmspOyAgICAKLSAgfQotICAKLSAgZnVuY3Rpb24gYWRkRGV0YWlsc1dTRExVUkxTaW5nbGVJdGVtUm93QnJvd3NlQ2FuY2VsQWN0aW9uTGlua3ModGFibGVDb250YWluZXJJZCx3c2RsVHlwZSxjb2x1bW4pCi0gIHsKLSAgICBhZGREZXRhaWxzV1NETFVSTFNpbmdsZUl0ZW1Sb3dCcm93c2VBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsd3NkbFR5cGUsY29sdW1uKTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKSk7Ci0gICAgdmFyIGNhbmNlbExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgY2FuY2VsTGluay5ocmVmID0gImphdmFzY3JpcHQ6Y2FuY2VsRGV0YWlsc1dTRExVUkxTaW5nbGVJdGVtUm93RWRpdCgnIit0YWJsZUNvbnRhaW5lcklkKyInKSI7Ci0gICAgY2FuY2VsTGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQ0FOQ0VMIikpJT4iKSk7Ci0gICAgY29sdW1uLmFwcGVuZENoaWxkKGNhbmNlbExpbmspOwotICB9Ci0gIAotICBmdW5jdGlvbiBhZGREZXRhaWxzV1NETFVSTFNpbmdsZUl0ZW1Sb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbikKLSAgewotICAgIHZhciBlZGl0TGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICBlZGl0TGluay5ocmVmID0gImphdmFzY3JpcHQ6ZWRpdERldGFpbHNXU0RMVVJMU2luZ2xlSXRlbVJvdygnIit0YWJsZUNvbnRhaW5lcklkKyInKSI7Ci0gICAgZWRpdExpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0VESVQiKSklPiIpKTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQoZWRpdExpbmspOwotICB9Ci0gIAotICBmdW5jdGlvbiBjYW5jZWxEZXRhaWxzV1NETFVSTFNpbmdsZUl0ZW1Sb3dFZGl0KHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgY29sdW1ucyA9IHRhYmxlLnJvd3NbbnVtYmVyT2ZIZWFkZXJSb3dzXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKLSAgICB2YXIgY29sdW1uMCA9IGNvbHVtbnMuaXRlbSgwKTsKLSAgICB2YXIgY29sdW1uMSA9IGNvbHVtbnMuaXRlbSgxKTsKLSAgICAKLSAgICBjb2x1bW4wLmNoaWxkTm9kZXNbMl0udmFsdWUgPSBmYWxzZTsKLSAgICAKLSAgICB2YXIgY29sdW1uMENvbnRyb2wgPSBjb2x1bW4wLmNoaWxkTm9kZXNbY29sdW1uMC5jaGlsZE5vZGVzLmxlbmd0aC0xXTsKLSAgICBjb2x1bW4wLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXRXU0RMVVJMRGlzcGxheShjb2x1bW4wLmNoaWxkTm9kZXNbMF0udmFsdWUpKSxjb2x1bW4wQ29udHJvbCk7Ci0gICAgCi0gICAgcmVtb3ZlQ29sdW1uQ2hpbGRyZW4oY29sdW1uMSk7Ci0gICAgCi0gICAgYWRkRGV0YWlsc1dTRExVUkxTaW5nbGVJdGVtUm93RWRpdEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4xKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gZWRpdERldGFpbHNXU0RMVVJMU2luZ2xlSXRlbVJvdyh0YWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIGNvbHVtbnMgPSB0YWJsZS5yb3dzW251bWJlck9mSGVhZGVyUm93c10uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgdmFyIGNvbHVtbjAgPSBjb2x1bW5zLml0ZW0oMCk7Ci0gICAgdmFyIGNvbHVtbjEgPSBjb2x1bW5zLml0ZW0oMSk7Ci0gICAgCi0gICAgdmFyIHdzZGxUeXBlID0gY29sdW1uMC5jaGlsZE5vZGVzWzFdLnZhbHVlOwotICAgIGNvbHVtbjAuY2hpbGROb2Rlc1syXS52YWx1ZSA9IHRydWU7Ci0gICAgCi0gICAgdmFyIGNvbHVtbjBDb250cm9sID0gY29sdW1uMC5jaGlsZE5vZGVzW2NvbHVtbjAuY2hpbGROb2Rlcy5sZW5ndGgtMV07Ci0gICAgdmFyIHdzZGxVUkxFZGl0Q29udHJvbCA9IGNyZWF0ZVdTRExVUkxFZGl0Q29udHJvbCgpOwotICAgIGNvbHVtbjAucmVwbGFjZUNoaWxkKHdzZGxVUkxFZGl0Q29udHJvbCxjb2x1bW4wQ29udHJvbCk7Ci0gICAgd3NkbFVSTEVkaXRDb250cm9sLmNsYXNzTmFtZSA9ICJ0YWJsZXRleHRlbnRlciI7Ci0gICAgd3NkbFVSTEVkaXRDb250cm9sLnZhbHVlID0gZ2V0V1NETFVSTERpc3BsYXkoY29sdW1uMC5jaGlsZE5vZGVzWzBdLnZhbHVlKTsKLSAgICAKLSAgICByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW4xKTsKLSAgICAKLSAgICBhZGREZXRhaWxzV1NETFVSTFNpbmdsZUl0ZW1Sb3dCcm93c2VDYW5jZWxBY3Rpb25MaW5rcyh0YWJsZUNvbnRhaW5lcklkLHdzZGxUeXBlLGNvbHVtbjEpOwotICB9Ci0gIAotICBmdW5jdGlvbiBjcmVhdGVXU0RMVVJMRWRpdENvbnRyb2woKQotICB7Ci0gICAgdmFyIGNvbnRyb2w7Ci0gICAgaWYgKGlzTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcigpKQotICAgICAgY29udHJvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIjxpbnB1dCBuYW1lPSc8JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV1NETF9VUkwlPic+Iik7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGNvbnRyb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAgY29udHJvbC5zZXRBdHRyaWJ1dGUoIm5hbWUiLCI8JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV1NETF9VUkwlPiIpOwotICAgIH0KLSAgICByZXR1cm4gY29udHJvbDsKLSAgfQotICAKLSAgZnVuY3Rpb24gZ2V0V1NETFVSTERpc3BsYXkod3NkbFVSTCkKLSAgewotICAgIGlmICh3c2RsVVJMLmxlbmd0aCA8IDEpCi0gICAgICB3c2RsVVJMRGlzcGxheSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfRVJST1JfV1NETF9VUkxfSVNfVU5SRUFDSEFCTEUiKSklPiI7Ci0gICAgZWxzZQotICAgICAgd3NkbFVSTERpc3BsYXkgPSB3c2RsVVJMOwotICAgIHJldHVybiB3c2RsVVJMRGlzcGxheTsKLSAgfQotICAKLSAgZnVuY3Rpb24gc2V0RGV0YWlsc1dTRExVUkxTaW5nbGVJdGVtUm93KHRhYmxlQ29udGFpbmVySWQsd3NkbFR5cGUsd3NkbFVSTCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciBjb2x1bW5zID0gdGFibGUucm93c1tudW1iZXJPZkhlYWRlclJvd3NdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIHZhciBjb2x1bW4wID0gY29sdW1ucy5pdGVtKDApOwotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotCi0gICAgY29sdW1uMC5pbnNlcnRCZWZvcmUoY3JlYXRlSGlkZGVuRWxlbWVudCgiIix3c2RsVHlwZSksY29sdW1uMC5jaGlsZE5vZGVzWzFdKTsKLSAgICB2YXIgZWRpdGFibGUgPSAoY29sdW1uMC5jaGlsZE5vZGVzWzJdLnZhbHVlID09ICJ0cnVlIik7Ci0gICAgdmFyIHdzZGxVUkxEaXNwbGF5ID0gZ2V0V1NETFVSTERpc3BsYXkod3NkbFVSTCk7Ci0gICAgY29sdW1uMC5jaGlsZE5vZGVzWzBdLnZhbHVlID0gd3NkbFVSTDsKLSAgICAKLSAgICB2YXIgY29sdW1uMENvbnRyb2w7ICAgIAotICAgIGlmIChlZGl0YWJsZSkKLSAgICB7Ci0gICAgICBjb2x1bW4wQ29udHJvbCA9IGNyZWF0ZVdTRExVUkxFZGl0Q29udHJvbCgpOwotICAgICAgY29sdW1uMENvbnRyb2wuY2xhc3NOYW1lID0gInRhYmxldGV4dGVudGVyIjsKLSAgICAgIGFkZERldGFpbHNXU0RMVVJMU2luZ2xlSXRlbVJvd0Jyb3dzZUFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCx3c2RsVHlwZSxjb2x1bW4xKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGNvbHVtbjBDb250cm9sID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod3NkbFVSTERpc3BsYXkpOwotICAgICAgYWRkRGV0YWlsc1dTRExVUkxTaW5nbGVJdGVtUm93RWRpdEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4xKTsKLSAgICB9Ci0gICAgY29sdW1uMC5hcHBlbmRDaGlsZChjb2x1bW4wQ29udHJvbCk7Ci0gICAgaWYgKGVkaXRhYmxlKQotICAgICAgY29sdW1uMENvbnRyb2wudmFsdWUgPSB3c2RsVVJMRGlzcGxheTsKLSAgfQotICAKLSAgZnVuY3Rpb24gYWRkRGV0YWlsc05hbWVTaW5nbGVJdGVtUm93Q2FuY2VsQWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbikKLSAgewotICAgIHZhciBjYW5jZWxMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgIGNhbmNlbExpbmsuaHJlZiA9ICJqYXZhc2NyaXB0OmNhbmNlbERldGFpbHNOYW1lU2luZ2xlSXRlbVJvd0VkaXQoJyIrdGFibGVDb250YWluZXJJZCsiJykiOwotICAgIGNhbmNlbExpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0NBTkNFTCIpKSU+IikpOwotICAgIGNvbHVtbi5hcHBlbmRDaGlsZChjYW5jZWxMaW5rKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGFkZERldGFpbHNOYW1lU2luZ2xlSXRlbVJvd0VkaXRBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uKSAgCi0gIHsKLSAgICB2YXIgZWRpdExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgZWRpdExpbmsuaHJlZiA9ICJqYXZhc2NyaXB0OmVkaXREZXRhaWxzTmFtZVNpbmdsZUl0ZW1Sb3coJyIrdGFibGVDb250YWluZXJJZCsiJykiOwotICAgIGVkaXRMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19FRElUIikpJT4iKSk7Ci0gICAgY29sdW1uLmFwcGVuZENoaWxkKGVkaXRMaW5rKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gZWRpdERldGFpbHNOYW1lU2luZ2xlSXRlbVJvdyh0YWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIGNvbHVtbnMgPSB0YWJsZS5yb3dzW251bWJlck9mSGVhZGVyUm93c10uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgdmFyIGNvbHVtbjAgPSBjb2x1bW5zLml0ZW0oMCk7Ci0gICAgdmFyIGNvbHVtbjEgPSBjb2x1bW5zLml0ZW0oMSk7Ci0gICAgCi0gICAgY29sdW1uMC5jaGlsZE5vZGVzWzFdLnZhbHVlID0gdHJ1ZTsKLSAgICAKLSAgICB2YXIgY29sdW1uMENvbnRyb2wgPSBjb2x1bW4wLmNoaWxkTm9kZXNbY29sdW1uMC5jaGlsZE5vZGVzLmxlbmd0aC0xXTsKLSAgICB2YXIgdGV4dElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICBjb2x1bW4wLnJlcGxhY2VDaGlsZCh0ZXh0SW5wdXQsY29sdW1uMENvbnRyb2wpOwotICAgIHRleHRJbnB1dC5jbGFzc05hbWUgPSAidGFibGV0ZXh0ZW50ZXIiOwotICAgIHRleHRJbnB1dC50aXRsZSA9ICI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0lOUFVUX1RFWFRfVkFMVUUiKSU+IjsKLSAgICB0ZXh0SW5wdXQudmFsdWUgPSBjb2x1bW4wLmNoaWxkTm9kZXNbMF0udmFsdWU7Ci0KLSAgICByZW1vdmVDb2x1bW5DaGlsZHJlbihjb2x1bW4xKTsKLSAgICAKLSAgICBhZGREZXRhaWxzTmFtZVNpbmdsZUl0ZW1Sb3dDYW5jZWxBY3Rpb25MaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uMSk7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGNhbmNlbERldGFpbHNOYW1lU2luZ2xlSXRlbVJvd0VkaXQodGFibGVDb250YWluZXJJZCkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciBjb2x1bW5zID0gdGFibGUucm93c1tudW1iZXJPZkhlYWRlclJvd3NdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIHZhciBjb2x1bW4wID0gY29sdW1ucy5pdGVtKDApOwotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgIAotICAgIGNvbHVtbjAuY2hpbGROb2Rlc1sxXS52YWx1ZSA9IGZhbHNlOwotICAgIAotICAgIHZhciBjb2x1bW4wQ29udHJvbCA9IGNvbHVtbjAuY2hpbGROb2Rlc1tjb2x1bW4wLmNoaWxkTm9kZXMubGVuZ3RoLTFdOwotICAgIGNvbHVtbjAucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbHVtbjAuY2hpbGROb2Rlc1swXS52YWx1ZSksY29sdW1uMENvbnRyb2wpOwotICAgIAotICAgIGZvciAodmFyIGk9MDtpPGNvbHVtbjEuY2hpbGROb2Rlcy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIGNvbHVtbjEucmVtb3ZlQ2hpbGQoY29sdW1uMS5jaGlsZE5vZGVzW2ldKTsKLSAgICAgIGktLTsKLSAgICB9Ci0gICAgYWRkRGV0YWlsc05hbWVTaW5nbGVJdGVtUm93RWRpdEFjdGlvbkxpbmsodGFibGVDb250YWluZXJJZCxjb2x1bW4xKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gc2V0RGV0YWlsc05hbWVTaW5nbGVJdGVtUm93KHRhYmxlQ29udGFpbmVySWQsbmFtZSkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciBjb2x1bW5zID0gdGFibGUucm93c1tudW1iZXJPZkhlYWRlclJvd3NdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIHZhciBjb2x1bW4wID0gY29sdW1ucy5pdGVtKDApOwotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgIAotICAgIHZhciBlZGl0YWJsZSA9IChjb2x1bW4wLmNoaWxkTm9kZXNbMV0udmFsdWUgPT0gInRydWUiKTsKLSAgICBjb2x1bW4wLmNoaWxkTm9kZXNbMF0udmFsdWUgPSBuYW1lOwotICAgIAotICAgIHZhciBjb2x1bW4wQ29udHJvbDsKLSAgICBpZiAoZWRpdGFibGUpCi0gICAgewotICAgICAgY29sdW1uMENvbnRyb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAgY29sdW1uMENvbnRyb2wuY2xhc3NOYW1lID0gInRhYmxldGV4dGVudGVyIjsKLSAgICAgIGNvbHVtbjBDb250cm9sLnRpdGxlID0gIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfSU5QVVRfVEVYVF9WQUxVRSIpJT4iOwotICAgICAgY29sdW1uMENvbnRyb2wudmFsdWUgPSBuYW1lOwotICAgICAgY29sdW1uMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQUNUSU9OU19OT05FIiklPiIpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGNvbHVtbjBDb250cm9sID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobmFtZSk7Ci0gICAgICBhZGREZXRhaWxzTmFtZVNpbmdsZUl0ZW1Sb3dFZGl0QWN0aW9uTGluayh0YWJsZUNvbnRhaW5lcklkLGNvbHVtbjEpOwotICAgIH0KLSAgICBjb2x1bW4wLmFwcGVuZENoaWxkKGNvbHVtbjBDb250cm9sKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gcHJvY2Vzc0RldGFpbHNEaXNjb3ZlcnlVUkxUYWJsZSh0YWJsZUNvbnRhaW5lcklkLG1vZGlmaWVkTmFtZSx2aWV3SWROYW1lLGRpc2NvdmVyeVVSTE5hbWUsZm9ybSkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciBjb2x1bW5zID0gdGFibGUucm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKLSAgICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgICAgdmFyIHZpZXdJZCA9IGNvbHVtbjEuY2hpbGROb2Rlc1swXS52YWx1ZTsKLSAgICAgIHZhciBlZGl0YWJsZSA9IChjb2x1bW4xLmNoaWxkTm9kZXNbMl0udmFsdWUgPT0gInRydWUiKTsKLSAgICAgIHZhciBkaXNjb3ZlcnlVUkw7Ci0gICAgICBpZiAoZWRpdGFibGUpCi0gICAgICAgIGRpc2NvdmVyeVVSTCA9IGNvbHVtbjEuY2hpbGROb2Rlc1szXS52YWx1ZTsKLSAgICAgIGVsc2UKLSAgICAgICAgZGlzY292ZXJ5VVJMID0gY29sdW1uMS5jaGlsZE5vZGVzWzFdLnZhbHVlOwotICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KHZpZXdJZE5hbWUsdmlld0lkKSk7Ci0gICAgICBmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoZGlzY292ZXJ5VVJMTmFtZSxkaXNjb3ZlcnlVUkwpKTsKLSAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudChtb2RpZmllZE5hbWUsZWRpdGFibGUpKTsgICAgICAgIAotICAgIH0KLSAgfQotICAKLSAgZnVuY3Rpb24gcHJvY2Vzc0RldGFpbHNMYW5ndWFnZUlucHV0VGFibGUodGFibGVDb250YWluZXJJZCxtb2RpZmllZE5hbWUsdmlld0lkTmFtZSxsYW5nSWROYW1lLGlucHV0TmFtZSxmb3JtKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgZm9yICh2YXIgaT1udW1iZXJPZkhlYWRlclJvd3M7aTx0YWJsZS5yb3dzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgdmFyIGNvbHVtbnMgPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgICAgdmFyIGNvbHVtbjEgPSBjb2x1bW5zLml0ZW0oMSk7Ci0gICAgICB2YXIgdmlld0lkID0gY29sdW1uMS5jaGlsZE5vZGVzWzBdLnZhbHVlOwotICAgICAgdmFyIGVkaXRhYmxlID0gKGNvbHVtbjEuY2hpbGROb2Rlc1s0XS52YWx1ZSA9PSAidHJ1ZSIpOwotICAgICAgdmFyIGxhbmdJZCxpbnB1dFRleHQ7Ci0gICAgICBpZiAoZWRpdGFibGUpCi0gICAgICB7Ci0gICAgICAgIGxhbmdJZCA9IGNvbHVtbjEuY2hpbGROb2Rlc1s1XS52YWx1ZTsKLSAgICAgICAgdmFyIGNvbHVtbjIgPSBjb2x1bW5zLml0ZW0oMik7Ci0gICAgICAgIGlucHV0VGV4dCA9IGNvbHVtbjIuY2hpbGROb2Rlc1swXS52YWx1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgbGFuZ0lkID0gY29sdW1uMS5jaGlsZE5vZGVzWzFdLnZhbHVlOwotICAgICAgICBpbnB1dFRleHQgPSBjb2x1bW4xLmNoaWxkTm9kZXNbMl0udmFsdWU7Ci0gICAgICB9Ci0gICAgICBmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQodmlld0lkTmFtZSx2aWV3SWQpKTsKLSAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudChsYW5nSWROYW1lLGxhbmdJZCkpOwotICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KGlucHV0TmFtZSxpbnB1dFRleHQpKTsKLSAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudChtb2RpZmllZE5hbWUsZWRpdGFibGUpKTsKLSAgICB9Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIHByb2Nlc3NEZXRhaWxzSWRlbnRpZmllclRhYmxlKHRhYmxlQ29udGFpbmVySWQsZm9ybSkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciBjb2x1bW5zID0gdGFibGUucm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKLSAgICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgICAgdmFyIHZpZXdJZCA9IGNvbHVtbjEuY2hpbGROb2Rlc1swXS52YWx1ZTsKLSAgICAgIHZhciBlZGl0YWJsZSA9IChjb2x1bW4xLmNoaWxkTm9kZXNbNF0udmFsdWUgPT0gInRydWUiKTsKLSAgICAgIHZhciB0TW9kZWxLZXksaWRLZXlOYW1lLGlkS2V5VmFsdWU7Ci0gICAgICBpZiAoZWRpdGFibGUpCi0gICAgICB7Ci0gICAgICAgIHRNb2RlbEtleSA9IGNvbHVtbjEuY2hpbGROb2Rlc1s1XS52YWx1ZTsKLSAgICAgICAgdmFyIGNvbHVtbjIgPSBjb2x1bW5zLml0ZW0oMik7Ci0gICAgICAgIGlkS2V5TmFtZSA9IGNvbHVtbjIuY2hpbGROb2Rlc1swXS52YWx1ZTsKLSAgICAgICAgdmFyIGNvbHVtbjMgPSBjb2x1bW5zLml0ZW0oMyk7Ci0gICAgICAgIGlkS2V5VmFsdWUgPSBjb2x1bW4zLmNoaWxkTm9kZXNbMF0udmFsdWU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHRNb2RlbEtleSA9IGNvbHVtbjEuY2hpbGROb2Rlc1sxXS52YWx1ZTsKLSAgICAgICAgaWRLZXlOYW1lID0gY29sdW1uMS5jaGlsZE5vZGVzWzJdLnZhbHVlOwotICAgICAgICBpZEtleVZhbHVlID0gY29sdW1uMS5jaGlsZE5vZGVzWzNdLnZhbHVlOwotICAgICAgfQotICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1VRERJQWN0aW9uSW5wdXRzLklERU5USUZJRVJfVklFV0lEJT4iLHZpZXdJZCkpOwotICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0lERU5USUZJRVJfVFlQRSU+Iix0TW9kZWxLZXkpKTsKLSAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX0tFWV9OQU1FJT4iLGlkS2V5TmFtZSkpOwotICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0lERU5USUZJRVJfS0VZX1ZBTFVFJT4iLGlkS2V5VmFsdWUpKTsKLSAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiPCU9VURESUFjdGlvbklucHV0cy5JREVOVElGSUVSX01PRElGSUVEJT4iLGVkaXRhYmxlKSk7ICAgICAgCi0gICAgfQotICB9Ci0gIAotICBmdW5jdGlvbiBwcm9jZXNzRGV0YWlsc0NhdGVnb3J5VGFibGUodGFibGVDb250YWluZXJJZCxmb3JtKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgZm9yICh2YXIgaT1udW1iZXJPZkhlYWRlclJvd3M7aTx0YWJsZS5yb3dzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgdmFyIGNvbHVtbnMgPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgICAgdmFyIGNvbHVtbjEgPSBjb2x1bW5zLml0ZW0oMSk7Ci0gICAgICB2YXIgdmlld0lkID0gY29sdW1uMS5jaGlsZE5vZGVzWzBdLnZhbHVlOwotICAgICAgdmFyIGVkaXRhYmxlID0gKGNvbHVtbjEuY2hpbGROb2Rlc1s0XS52YWx1ZSA9PSAidHJ1ZSIpOwotICAgICAgdmFyIHRNb2RlbEtleSxjYXRLZXlOYW1lLGNhdEtleVZhbHVlOwotICAgICAgaWYgKGVkaXRhYmxlKQotICAgICAgewotICAgICAgICB0TW9kZWxLZXkgPSBjb2x1bW4xLmNoaWxkTm9kZXNbNV0udmFsdWU7Ci0gICAgICAgIHZhciBjb2x1bW4yID0gY29sdW1ucy5pdGVtKDIpOwotICAgICAgICBjYXRLZXlOYW1lID0gY29sdW1uMi5jaGlsZE5vZGVzWzBdLnZhbHVlOwotICAgICAgICB2YXIgY29sdW1uMyA9IGNvbHVtbnMuaXRlbSgzKTsKLSAgICAgICAgY2F0S2V5VmFsdWUgPSBjb2x1bW4zLmNoaWxkTm9kZXNbMF0udmFsdWU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHRNb2RlbEtleSA9IGNvbHVtbjEuY2hpbGROb2Rlc1sxXS52YWx1ZTsKLSAgICAgICAgY2F0S2V5TmFtZSA9IGNvbHVtbjEuY2hpbGROb2Rlc1syXS52YWx1ZTsKLSAgICAgICAgY2F0S2V5VmFsdWUgPSBjb2x1bW4xLmNoaWxkTm9kZXNbM10udmFsdWU7Ci0gICAgICB9Ci0gICAgICBmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPVVERElBY3Rpb25JbnB1dHMuQ0FURUdPUllfVklFV0lEJT4iLHZpZXdJZCkpOwotICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX1RZUEUlPiIsdE1vZGVsS2V5KSk7Ci0gICAgICBmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfQ0FURUdPUllfS0VZX05BTUUlPiIsY2F0S2V5TmFtZSkpOwotICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9WQUxVRSU+IixjYXRLZXlWYWx1ZSkpOwotICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1VRERJQWN0aW9uSW5wdXRzLkNBVEVHT1JZX01PRElGSUVEJT4iLGVkaXRhYmxlKSk7Ci0gICAgfQotICB9Ci0gIAotICBmdW5jdGlvbiBwcm9jZXNzRGV0YWlsc1NpbmdsZUl0ZW1UYWJsZSh0YWJsZUNvbnRhaW5lcklkLG1vZGlmaWVkTmFtZSxpbnB1dE5hbWUsZm9ybSkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciBjb2x1bW5zID0gdGFibGUucm93c1tudW1iZXJPZkhlYWRlclJvd3NdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIHZhciBjb2x1bW4wID0gY29sdW1ucy5pdGVtKDApOwotICAgIHZhciBjb2x1bW4xID0gY29sdW1ucy5pdGVtKDEpOwotICAgIHZhciBlZGl0YWJsZSA9IChjb2x1bW4wLmNoaWxkTm9kZXNbY29sdW1uMC5jaGlsZE5vZGVzLmxlbmd0aC0yXS52YWx1ZSA9PSAidHJ1ZSIpOwotICAgIHZhciBpbnB1dFZhbHVlOwotICAgIGlmIChlZGl0YWJsZSkKLSAgICAgIGlucHV0VmFsdWUgPSBjb2x1bW4wLmNoaWxkTm9kZXNbY29sdW1uMC5jaGlsZE5vZGVzLmxlbmd0aC0xXS52YWx1ZTsKLSAgICBlbHNlCi0gICAgICBpbnB1dFZhbHVlID0gY29sdW1uMC5jaGlsZE5vZGVzWzBdLnZhbHVlOwotICAgIGZvcm0uYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudChpbnB1dE5hbWUsaW5wdXRWYWx1ZSkpOwotICAgIGZvcm0uYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudChtb2RpZmllZE5hbWUsZWRpdGFibGUpKTsgICAgCi0gIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3NjcmlwdHMvcmVzdWx0cy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc2NyaXB0cy9yZXN1bHRzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFiNjY3Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc2NyaXB0cy9yZXN1bHRzLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzdWJRdWVyeVRyYW5zZmVyVGFyZ2V0SG9sZGVyIiBjbGFzcz0iamF2YS51dGlsLlZlY3RvciIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXN1Ym1pdC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3VkZGkvc2NyaXB0cy91ZGRpdGFibGVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBnZXROdW1iZXJPZlNlbGVjdGlvbnModGFibGVDb250YWluZXJJZCkKLSAgewotICAgIHZhciBudW1iZXJTZWxlY3RlZCA9IDA7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgZm9yICh2YXIgaT1udW1iZXJPZkhlYWRlclJvd3M7aTx0YWJsZS5yb3dzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgdmFyIHJvd0NoZWNrYm94ID0gdGFibGUucm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgICAgaWYgKHJvd0NoZWNrYm94LmNoZWNrZWQpCi0gICAgICAgIG51bWJlclNlbGVjdGVkKys7Ci0gICAgfQotICAgIHJldHVybiBudW1iZXJTZWxlY3RlZDsKLSAgfQotICAKLSAgZnVuY3Rpb24gcHJvY2Vzc1Jlc3VsdEZvcm0odGFibGVDb250YWluZXJJZCxmb3JtKQotICB7Ci0gICAgaWYgKGhhbmRsZVN1Ym1pdChmb3JtKSkKLSAgICB7Ci0gICAgICBwcm9jZXNzUmVzdWx0VGFibGUodGFibGVDb250YWluZXJJZCwiPCU9QWN0aW9uSW5wdXRzLk5PREVJRCU+Iixmb3JtLHRydWUpOwotICAgICAgZm9ybS5zdWJtaXQoKTsKLSAgICB9Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGNsZWFyU2VsZWN0aW9ucyh0YWJsZUNvbnRhaW5lcklkLGZvcm0pCi0gIHsKLSAgICBmb3JtLmFjdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9DbGVhck5hdmlnYXRvck5vZGVzQWN0aW9uSlNQLmpzcCIpKSU+IjsKLSAgICAvLyBFbnN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgaXRlbSBpcyBzZWxlY3RlZC4KLSAgICB2YXIgbnVtYmVyU2VsZWN0ZWQgPSBnZXROdW1iZXJPZlNlbGVjdGlvbnModGFibGVDb250YWluZXJJZCk7Ci0gICAgaWYgKG51bWJlclNlbGVjdGVkID4gMCkKLSAgICAgIHByb2Nlc3NSZXN1bHRGb3JtKHRhYmxlQ29udGFpbmVySWQsZm9ybSk7Ci0gICAgZWxzZQotICAgICAgYWxlcnQoIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9USElOR19TRUxFQ1RFRCIpJT4iKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gcmVmcmVzaFNlbGVjdGlvbnModGFibGVDb250YWluZXJJZCxmb3JtKQotICB7Ci0gICAgZm9ybS5hY3Rpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvUmVmcmVzaFVERElOb2Rlc0FjdGlvbkpTUC5qc3AiKSklPiI7Ci0gICAgLy8gRW5zdXJlIHRoYXQgYXQgbGVhc3Qgb25lIGl0ZW0gaXMgc2VsZWN0ZWQuCi0gICAgdmFyIG51bWJlclNlbGVjdGVkID0gZ2V0TnVtYmVyT2ZTZWxlY3Rpb25zKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGlmIChudW1iZXJTZWxlY3RlZCA+IDApCi0gICAgICBwcm9jZXNzUmVzdWx0Rm9ybSh0YWJsZUNvbnRhaW5lcklkLGZvcm0pOwotICAgIGVsc2UKLSAgICAgIGFsZXJ0KCI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PVEhJTkdfU0VMRUNURUQiKSU+Iik7Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGFkZFNlbGVjdGlvbnNUb0Zhdm9yaXRlcyh0YWJsZUNvbnRhaW5lcklkLGZvcm0pCi0gIHsKLSAgICBmb3JtLmFjdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvYWN0aW9ucy9BZGRJdGVtc1RvRmF2b3JpdGVzQWN0aW9uSlNQLmpzcCIpKSU+IjsKLSAgICAvLyBFbnN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgaXRlbSBpcyBzZWxlY3RlZC4KLSAgICB2YXIgbnVtYmVyU2VsZWN0ZWQgPSBnZXROdW1iZXJPZlNlbGVjdGlvbnModGFibGVDb250YWluZXJJZCk7Ci0gICAgaWYgKG51bWJlclNlbGVjdGVkID4gMCkKLSAgICAgIHByb2Nlc3NSZXN1bHRGb3JtKHRhYmxlQ29udGFpbmVySWQsZm9ybSk7Ci0gICAgZWxzZQotICAgICAgYWxlcnQoIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9USElOR19TRUxFQ1RFRCIpJT4iKTsKLSAgfQotICAKLTwlCi0gICBpZiAoc3ViUXVlcnlUcmFuc2ZlclRhcmdldEhvbGRlci5zaXplKCkgPiAwKQotICAgewotICAgICBTdWJRdWVyeVRyYW5zZmVyVGFyZ2V0IHN1YlF1ZXJ5VHJhbnNmZXJUYXJnZXQgPSAoU3ViUXVlcnlUcmFuc2ZlclRhcmdldClzdWJRdWVyeVRyYW5zZmVyVGFyZ2V0SG9sZGVyLmVsZW1lbnRBdCgwKTsKLSAgICAgU3RyaW5nIHN1YlF1ZXJ5S2V5ID0gc3ViUXVlcnlUcmFuc2ZlclRhcmdldC5nZXRTdWJRdWVyeUtleSgpOwotICAgICBpbnQgbGFzdFNlcGFyYXRvclBvcyA9IHN1YlF1ZXJ5S2V5Lmxhc3RJbmRleE9mKCc6Jyk7Ci0gICAgIFN0cmluZyB0YXJnZXRRdWVyeUtleTsKLSAgICAgaWYgKGxhc3RTZXBhcmF0b3JQb3MgPT0gLTEpCi0gICAgICAgdGFyZ2V0UXVlcnlLZXkgPSAiIjsKLSAgICAgZWxzZQotICAgICAgIHRhcmdldFF1ZXJ5S2V5ID0gc3ViUXVlcnlLZXkuc3Vic3RyaW5nKDAsbGFzdFNlcGFyYXRvclBvcyk7Ci0gICAgIFN0cmluZyB0YXJnZXRQcm9wZXJ0eSA9IHN1YlF1ZXJ5S2V5LnN1YnN0cmluZyhsYXN0U2VwYXJhdG9yUG9zKzEsc3ViUXVlcnlLZXkubGVuZ3RoKCkpOwotJT4gICAgIAotICBmdW5jdGlvbiB0cmFuc2ZlclNlbGVjdGlvbnModGFibGVDb250YWluZXJJZCxmb3JtKQotICB7Ci0gICAgZm9ybS5hY3Rpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnMvVHJhbnNmZXJTdWJRdWVyeVJlc3VsdHNBY3Rpb25KU1AuanNwIikpJT4iOwotICAgIC8vIEVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBpdGVtIGlzIHNlbGVjdGVkLgotICAgIHZhciBudW1iZXJTZWxlY3RlZCA9IGdldE51bWJlck9mU2VsZWN0aW9ucyh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBpZiAobnVtYmVyU2VsZWN0ZWQgPiAwKQotICAgIHsKLTwlCi0gICAgIGlmICh0YXJnZXRQcm9wZXJ0eS5lcXVhbHMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9TRVJWSUNFX0JVU0lORVNTKSB8fCB0YXJnZXRQcm9wZXJ0eS5lcXVhbHMoVURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9TSU1QTEVfU0VSVklDRV9CVVNJTkVTUykgfHwgdGFyZ2V0UHJvcGVydHkuZXF1YWxzKFVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfU0VSVklDRV9JTlRFUkZBQ0VfU0VSVklDRSkpCi0gICAgIHsKLSU+Ci0gICAgICBpZiAobnVtYmVyU2VsZWN0ZWQgIT0gMSkKLSAgICAgIHsKLSAgICAgICAgYWxlcnQoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX1NJTkdMRV9JVEVNIikpJT4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi08JQotICAgICAgIEZvcm1Ub29sIHRhcmdldEZvcm1Ub29sID0gc3ViUXVlcnlUcmFuc2ZlclRhcmdldC5nZXRUYXJnZXRGb3JtVG9vbCgpOwotICAgICAgIEZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSB0YXJnZXRGb3JtVG9vbFBJID0gKChNdWx0aXBsZUZvcm1Ub29sUHJvcGVydGllc0ludGVyZmFjZSl0YXJnZXRGb3JtVG9vbCkuZ2V0Rm9ybVRvb2xQcm9wZXJ0aWVzKHRhcmdldFF1ZXJ5S2V5KTsKLSAgICAgICBWZWN0b3Igc2VydmljZUJ1c2luZXNzID0gKFZlY3Rvcil0YXJnZXRGb3JtVG9vbFBJLmdldFByb3BlcnR5KHRhcmdldFByb3BlcnR5KTsKLSAgICAgICBpZiAoc2VydmljZUJ1c2luZXNzICE9IG51bGwgJiYgc2VydmljZUJ1c2luZXNzLnNpemUoKSA+IDApCi0gICAgICAgewotJT4KLSAgICAgIGlmICghY29uZmlybSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfUVVFU1RJT05fSVRFTV9SRVBMQUNFTUVOVCIpKSU+IikpCi0gICAgICAgIHJldHVybjsKLTwlCi0gICAgICAgfQotICAgICB9Ci0lPgotICAgICAgcHJvY2Vzc1Jlc3VsdEZvcm0odGFibGVDb250YWluZXJJZCxmb3JtKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgYWxlcnQoIjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9USElOR19TRUxFQ1RFRCIpJT4iKTsKLSAgfQotPCUKLSAgIH0KLSU+ICAgICAgIAotPC9zY3JpcHQ+ICAKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9zY3JpcHRzL3VkZGlmcmFtZXNldHMuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3NjcmlwdHMvdWRkaWZyYW1lc2V0cy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMjRhZDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3NjcmlwdHMvdWRkaWZyYW1lc2V0cy5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9wYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBnZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXQoKQotICB7Ci0gICAgcmV0dXJuIHBlcnNwZWN0aXZlQ29udGVudC5mcmFtZXNbIjwlPVVERElGcmFtZU5hbWVzLkFDVElPTlNfQ09OVEFJTkVSJT4iXS5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZnJhbWVzZXQiKS5pdGVtKDApOwotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc0ZyYW1lc2V0U2l6ZXMoZnJhbWVzZXRTaXplc0Zvcm0pCi0gIHsKLSAgICB0b2dnbGVEb3VibGVDbGlja0NvbHVtblRpdGxlKCk7Ci0gICAgdmFyIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0ID0gZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXQoKTsKLSAgICB2YXIgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0ID0gZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0KCk7Ci0gICAgZnJhbWVzZXRTaXplc0Zvcm0uPCU9VURESUFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQlPi52YWx1ZSA9IHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0LmNvbHM7Ci0gICAgZnJhbWVzZXRTaXplc0Zvcm0uPCU9VURESUFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSJT4udmFsdWUgPSBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXQucm93czsKLSAgICBmcmFtZXNldFNpemVzRm9ybS5zdWJtaXQoKTsKLSAgfQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3NjcmlwdHMvdWRkaXBhbmVzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q4NjRjYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc2NyaXB0cy91ZGRpcGFuZXMuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL3BhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHZhciBuYXZpZ2F0b3JDb250YWluZXIgPSBwZXJzcGVjdGl2ZUNvbnRlbnQuZnJhbWVzWyI8JT1VRERJRnJhbWVOYW1lcy5OQVZJR0FUT1JfQ09OVEFJTkVSJT4iXTsKLSAgdmFyIG5hdmlnYXRvclRvb2xiYXIgPSBuYXZpZ2F0b3JDb250YWluZXIuZnJhbWVzWyI8JT1VRERJRnJhbWVOYW1lcy5OQVZJR0FUT1JfVE9PTEJBUiU+Il07Ci0gIHZhciBuYXZpZ2F0b3JDb250ZW50ID0gbmF2aWdhdG9yQ29udGFpbmVyLmZyYW1lc1siPCU9VURESUZyYW1lTmFtZXMuTkFWSUdBVE9SX0NPTlRFTlQlPiJdOwotICB2YXIgYWN0aW9uc0NvbnRhaW5lciA9IHBlcnNwZWN0aXZlQ29udGVudC5mcmFtZXNbIjwlPVVERElGcmFtZU5hbWVzLkFDVElPTlNfQ09OVEFJTkVSJT4iXTsKLSAgdmFyIHByb3BlcnRpZXNDb250YWluZXIgPSBhY3Rpb25zQ29udGFpbmVyLmZyYW1lc1siPCU9VURESUZyYW1lTmFtZXMuUFJPUEVSVElFU19DT05UQUlORVIlPiJdOwotICB2YXIgcHJvcGVydGllc1Rvb2xiYXIgPSBwcm9wZXJ0aWVzQ29udGFpbmVyLmZyYW1lc1siPCU9VURESUZyYW1lTmFtZXMuUFJPUEVSVElFU19UT09MQkFSJT4iXTsKLSAgdmFyIHByb3BlcnRpZXNDb250ZW50ID0gcHJvcGVydGllc0NvbnRhaW5lci5mcmFtZXNbIjwlPVVERElGcmFtZU5hbWVzLlBST1BFUlRJRVNfQ09OVEVOVCU+Il07Ci0gIHZhciBzdGF0dXNDb250YWluZXIgPSBhY3Rpb25zQ29udGFpbmVyLmZyYW1lc1siPCU9VURESUZyYW1lTmFtZXMuU1RBVFVTX0NPTlRBSU5FUiU+Il07Ci0gIHZhciBzdGF0dXNUb29sYmFyID0gc3RhdHVzQ29udGFpbmVyLmZyYW1lc1siPCU9VURESUZyYW1lTmFtZXMuU1RBVFVTX1RPT0xCQVIlPiJdOwotICB2YXIgc3RhdHVzQ29udGVudCA9IHN0YXR1c0NvbnRhaW5lci5mcmFtZXNbIjwlPVVERElGcmFtZU5hbWVzLlNUQVRVU19DT05URU5UJT4iXTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3NjcmlwdHMvdWRkaXRhYmxlcy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc2NyaXB0cy91ZGRpdGFibGVzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiMjc4NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc2NyaXB0cy91ZGRpdGFibGVzLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDg5NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy51ZGRpNGoudXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvd3NkbGJyb3dzZXIuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL3RhYmxlcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXV0aWxzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBTdHJpbmcgc2Vzc2lvbklkID0gc2Vzc2lvbi5nZXRJZCgpOwotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlTWFuYWdlciBuYXZpZ2F0b3JNYW5hZ2VyID0gdWRkaVBlcnNwZWN0aXZlLmdldE5hdmlnYXRvck1hbmFnZXIoKTsKLSAgIFVERElNYWluTm9kZSB1ZGRpTWFpbk5vZGUgPSAoVURESU1haW5Ob2RlKW5hdmlnYXRvck1hbmFnZXIuZ2V0Um9vdE5vZGUoKTsKLSAgIFJlZ2lzdHJ5Tm9kZSByZWdOb2RlID0gdWRkaU1haW5Ob2RlLmdldFJlZ2lzdHJ5Tm9kZShuYXZpZ2F0b3JNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpKTsKLSAgIFJlZ2lzdHJ5RWxlbWVudCByZWdFbGVtZW50ID0gKFJlZ2lzdHJ5RWxlbWVudClyZWdOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0lPgotPGpzcDp1c2VCZWFuIGlkPSJjb21tb25DYXRlZ29yeU1vZGVscyIgY2xhc3M9ImphdmEudXRpbC5IYXNodGFibGUiIHNjb3BlPSJhcHBsaWNhdGlvbiIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIC8vIFJlcXVpcmVzIGJyb3dzZXJkZXRlY3QuanMsIHRhYmxlcy5qc3AgKGV4cGxvcmVyKQotICB2YXIgcm93Q2hlY2tib3hOYW1lID0gInJvd0NoZWNrYm94TmFtZSI7Ci0gIHZhciBjYXRlZ29yeVdpbmRvdzsKLSAgdmFyIGNhdGVnb3J5V2luZG93Q2xvc2VkID0gdHJ1ZTsKLSAgdmFyIHRhcmdldENhdGVnb3J5Um93ID0gLTE7Ci0gIHZhciB0YXJnZXRDYXRlZ29yeUtleU5hbWVFbGVtZW50OwotICB2YXIgdGFyZ2V0Q2F0ZWdvcnlLZXlWYWx1ZUVsZW1lbnQ7Ci0gIHZhciBsYW5ndWFnZUFycmF5ID0gbmV3IEFycmF5KCk7Ci0gIHZhciBjYXRlZ29yeUFycmF5ID0gbmV3IEFycmF5KCk7Ci0gIHZhciB3aWxkY2FyZENhdGVnb3J5QnJvd3NlclVSTFJlID0gLyglKS87Ci0KLSAgZnVuY3Rpb24gY2xvc2VBbGxVZGRpQ2hpbGRXaW5kb3dzKCkKLSAgewotICAgIGNsb3NlQ2F0ZWdvcnlCcm93c2VyKCk7Ci0gICAgY2xvc2VXU0RMQnJvd3NlcigpOwotICB9Ci0KLSAgZnVuY3Rpb24gTGFuZ3VhZ2UoZGlzcGxheU5hbWUsbGFuZ0lkKQotICB7Ci0gICAgdGhpcy5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOwotICAgIHRoaXMubGFuZ0lkID0gbGFuZ0lkOwotICB9Ci0KLSAgZnVuY3Rpb24gY29tcGFyZUxhbmd1YWdlRGlzcGxheU5hbWVzKGEsYikKLSAgewotICAgIHZhciByZXN1bHQgPSBhLmRpc3BsYXlOYW1lLmxvY2FsZUNvbXBhcmUoYi5kaXNwbGF5TmFtZSk7Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICByZXR1cm4gLTE7Ci0gICAgZWxzZSBpZiAocmVzdWx0ID4gMCkKLSAgICAgIHJldHVybiAxOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAwOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0VE1vZGVsS2V5U2VsZWN0KGl0ZW1TZWxlY3QsdE1vZGVsS2V5KQotICB7Ci0gICAgZm9yICh2YXIgaT0wO2k8aXRlbVNlbGVjdC5vcHRpb25zLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgaWYgKGl0ZW1TZWxlY3Qub3B0aW9uc1tpXS52YWx1ZS50b0xvd2VyQ2FzZSgpID09IHRNb2RlbEtleS50b0xvd2VyQ2FzZSgpKQotICAgICAgewotICAgICAgICBpdGVtU2VsZWN0Lm9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICByZXR1cm4gaXRlbVNlbGVjdC5vcHRpb25zW2ldLnRleHQ7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gc2V0TGFuZ3VhZ2VTZWxlY3QobGFuZ3VhZ2VTZWxlY3QsbGFuZ3VhZ2VWYWx1ZSkKLSAgewotICAgIHZhciBzdGFydDsKLTwlCi0gICAvLyBDb21wYXJlIHdpdGggdGhlIGVtcHR5IHN0cmluZyBvbmx5IGlmIHRoZSBsYW5ndWFnZVZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcuCi0lPgotICAgIGlmIChsYW5ndWFnZVZhbHVlLmxlbmd0aCA8IDEpCi0gICAgICBzdGFydCA9IDA7Ci0gICAgZWxzZQotICAgICAgc3RhcnQgPSAxOwotICAgIGZvciAodmFyIGk9c3RhcnQ7aTxsYW5ndWFnZVNlbGVjdC5vcHRpb25zLmxlbmd0aDtpKyspCi0gICAgewotPCUKLSAgIC8vIFVzZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBjaGVjayBpZiBsYW5ndWFnZVZhbHVlIGJlZ2lucyB3aXRoIGEga2V5IHdob3NlIGl0ZW0gaXMgaW4gdGhlIHBpY2sgbGlzdC4gVGhpcyBlbmFibGVzICJFbmdsaXNoIiB0byBiZSBzZWxlY3RlZAotICAgLy8gZm9yIGVuLXh4eCAoZGlhbGVjdHMpLgotJT4KLSAgICAgIHZhciByZWdFeHAgPSBuZXcgUmVnRXhwKCJeIitsYW5ndWFnZVNlbGVjdC5vcHRpb25zW2ldLnZhbHVlLCJpIik7Ci0gICAgICBpZiAocmVnRXhwLnRlc3QobGFuZ3VhZ2VWYWx1ZSkpCi0gICAgICB7Ci0gICAgICAgIGxhbmd1YWdlU2VsZWN0Lm9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICByZXR1cm4gbGFuZ3VhZ2VTZWxlY3Qub3B0aW9uc1tpXS50ZXh0OwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIHBvcHVsYXRlTGFuZ3VhZ2VTZWxlY3QobGFuZ3VhZ2VTZWxlY3QpCi0gIHsKLSAgICBpZiAobGFuZ3VhZ2VBcnJheS5sZW5ndGggPT0gMCkKLSAgICB7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiIiwiIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9FTiIpKSU+IiwiZW4iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0FBIikpJT4iLCJhYSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfQUIiKSklPiIsImFiIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9BRiIpKSU+IiwiYWYiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0FNIikpJT4iLCJhbSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfQVIiKSklPiIsImFyIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9BUyIpKSU+IiwiYXMiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0FZIikpJT4iLCJheSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfQVoiKSklPiIsImF6Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9CQSIpKSU+IiwiYmEiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0JFIikpJT4iLCJiZSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfQkciKSklPiIsImJnIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9CSCIpKSU+IiwiYmgiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0JJIikpJT4iLCJiaSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfQk4iKSklPiIsImJuIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9CTyIpKSU+IiwiYm8iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0JSIikpJT4iLCJiciIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfQ0EiKSklPiIsImNhIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9DTyIpKSU+IiwiY28iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0NaIikpJT4iLCJjeiIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfQ1kiKSklPiIsImN5Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9EQSIpKSU+IiwiZGEiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0RFIikpJT4iLCJkZSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfRFoiKSklPiIsImR6Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9FTCIpKSU+IiwiZWwiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0VPIikpJT4iLCJlbyIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfRVMiKSklPiIsImVzIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9FVCIpKSU+IiwiZXQiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0VVIikpJT4iLCJldSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfRkEiKSklPiIsImZhIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9GSSIpKSU+IiwiZmkiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0ZKIikpJT4iLCJmaiIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfRk8iKSklPiIsImZvIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9GUiIpKSU+IiwiZnIiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0ZZIikpJT4iLCJmeSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfR0EiKSklPiIsImdhIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9HRCIpKSU+IiwiZ2QiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0dMIikpJT4iLCJnbCIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfR04iKSklPiIsImduIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9HVSIpKSU+IiwiZ3UiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0hBIikpJT4iLCJoYSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfSEkiKSklPiIsImhpIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9IUiIpKSU+IiwiaHIiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0hVIikpJT4iLCJodSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfSFkiKSklPiIsImh5Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9JQSIpKSU+IiwiaWEiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0lFIikpJT4iLCJpZSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfSUsiKSklPiIsImlrIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9JTiIpKSU+IiwiaW4iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0lTIikpJT4iLCJpcyIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfSVQiKSklPiIsIml0Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9JVyIpKSU+IiwiaXciKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0pBIikpJT4iLCJqYSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfSkkiKSklPiIsImppIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9KVyIpKSU+IiwianciKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0tBIikpJT4iLCJrYSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfS0siKSklPiIsImtrIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9LTCIpKSU+Iiwia2wiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0tNIikpJT4iLCJrbSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfS04iKSklPiIsImtuIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9LTyIpKSU+Iiwia28iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0tTIikpJT4iLCJrcyIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfS1UiKSklPiIsImt1Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9LWSIpKSU+Iiwia3kiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0xBIikpJT4iLCJsYSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfTE4iKSklPiIsImxuIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9MTyIpKSU+IiwibG8iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX0xUIikpJT4iLCJsdCIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfTFYiKSklPiIsImx2Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9NRyIpKSU+IiwibWciKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX01JIikpJT4iLCJtaSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfTUsiKSklPiIsIm1rIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9NTCIpKSU+IiwibWwiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX01OIikpJT4iLCJtbiIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfTU8iKSklPiIsIm1vIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9NUiIpKSU+IiwibXIiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX01TIikpJT4iLCJtcyIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfTVQiKSklPiIsIm10Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9NWSIpKSU+IiwibXkiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX05BIikpJT4iLCJuYSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfTkUiKSklPiIsIm5lIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9OTCIpKSU+IiwibmwiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX05PIikpJT4iLCJubyIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfT0MiKSklPiIsIm9jIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9PTSIpKSU+Iiwib20iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX09SIikpJT4iLCJvciIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfUEEiKSklPiIsInBhIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9QTCIpKSU+IiwicGwiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1BTIikpJT4iLCJwcyIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfUFQiKSklPiIsInB0Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9RVSIpKSU+IiwicXUiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1JNIikpJT4iLCJybSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfUk4iKSklPiIsInJuIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9STyIpKSU+Iiwicm8iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1JVIikpJT4iLCJydSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfUlciKSklPiIsInJ3Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9TQSIpKSU+Iiwic2EiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1NEIikpJT4iLCJzZCIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfU0ciKSklPiIsInNnIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9TSCIpKSU+Iiwic2giKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1NJIikpJT4iLCJzaSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfU0siKSklPiIsInNrIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9TTCIpKSU+Iiwic2wiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1NNIikpJT4iLCJzbSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfU04iKSklPiIsInNuIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9TTyIpKSU+Iiwic28iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1NRIikpJT4iLCJzcSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfU1IiKSklPiIsInNyIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9TUyIpKSU+Iiwic3MiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1NUIikpJT4iLCJzdCIpCi0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9TVSIpKSU+Iiwic3UiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1NWIikpJT4iLCJzdiIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfU1ciKSklPiIsInN3Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9UQSIpKSU+IiwidGEiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1RFIikpJT4iLCJ0ZSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfVEciKSklPiIsInRnIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9USCIpKSU+IiwidGgiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1RJIikpJT4iLCJ0aSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfVEsiKSklPiIsInRrIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9UTCIpKSU+IiwidGwiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1ROIikpJT4iLCJ0biIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfVE8iKSklPiIsInRvIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9UUiIpKSU+IiwidHIiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1RTIikpJT4iLCJ0cyIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfVFQiKSklPiIsInR0Iik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9UVyIpKSU+IiwidHciKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1VLIikpJT4iLCJ1ayIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfVVIiKSklPiIsInVyIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9VWiIpKSU+IiwidXoiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1ZJIikpJT4iLCJ2aSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfVk8iKSklPiIsInZvIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9XTyIpKSU+Iiwid28iKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1hIIikpJT4iLCJ4aCIpOwotICAgICAgbGFuZ3VhZ2VBcnJheVtsYW5ndWFnZUFycmF5Lmxlbmd0aF0gPSBuZXcgTGFuZ3VhZ2UoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fTEFOR1VBR0VfWU8iKSklPiIsInlvIik7Ci0gICAgICBsYW5ndWFnZUFycmF5W2xhbmd1YWdlQXJyYXkubGVuZ3RoXSA9IG5ldyBMYW5ndWFnZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9MQU5HVUFHRV9aSCIpKSU+IiwiemgiKTsKLSAgICAgIGxhbmd1YWdlQXJyYXlbbGFuZ3VhZ2VBcnJheS5sZW5ndGhdID0gbmV3IExhbmd1YWdlKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fT1BUSU9OX0xBTkdVQUdFX1pVIikpJT4iLCJ6dSIpOwotICAgICAgbGFuZ3VhZ2VBcnJheS5zb3J0KGNvbXBhcmVMYW5ndWFnZURpc3BsYXlOYW1lcyk7Ci0gICAgfQotCi0gICAgZm9yICh2YXIgaT0wO2k8bGFuZ3VhZ2VBcnJheS5sZW5ndGg7aSsrKQotICAgICAgbGFuZ3VhZ2VTZWxlY3Qub3B0aW9uc1tpXSA9IG5ldyBPcHRpb24obGFuZ3VhZ2VBcnJheVtpXS5kaXNwbGF5TmFtZSxsYW5ndWFnZUFycmF5W2ldLmxhbmdJZCk7Ci0gIH0KLQotICBmdW5jdGlvbiBzZXRMYW5ndWFnZUlucHV0Um93U2V0dGluZ3ModGFibGVDb250YWluZXJJZCxuYW1lSW5kZXgsbGFuZ3VhZ2VWYWx1ZSxuYW1lVGV4dFZhbHVlKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHJvdyA9IHRhYmxlLnJvd3NbbnVtYmVyT2ZIZWFkZXJSb3dzK25hbWVJbmRleF07Ci0gICAgdmFyIGxhbmd1YWdlU2VsZWN0ID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKS5pdGVtKDApOwotICAgIHZhciBuYW1lVGV4dCA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDEpOwotICAgIHNldExhbmd1YWdlU2VsZWN0KGxhbmd1YWdlU2VsZWN0LGxhbmd1YWdlVmFsdWUpOwotICAgIG5hbWVUZXh0LnZhbHVlID0gbmFtZVRleHRWYWx1ZTsKLSAgfQotCi0gIGZ1bmN0aW9uIHJlbW92ZVNlbGVjdGVkQ2F0ZWdvcnlSb3dzKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICAvLyBDaGVjayBpZiBhbnkgcm93cyBhYm92ZSBhbmQgaW5jbHVkaW5nIHRoZSB0YXJnZXRDYXRlZ29yeVJvdyBhcmUgc2VsZWN0ZWQuCi0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIG5ld1RhcmdldENhdGVnb3J5Um93ID0gdGFyZ2V0Q2F0ZWdvcnlSb3c7Ci0gICAgZm9yICh2YXIgaT1udW1iZXJPZkhlYWRlclJvd3M7aTw9dGFyZ2V0Q2F0ZWdvcnlSb3c7aSsrKQotICAgIHsKLSAgICAgIHZhciB0YWJsZVJvdyA9IHRhYmxlLnJvd3NbaV07Ci0gICAgICB2YXIgcm93Q2hlY2tib3ggPSB0YWJsZVJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgICAgaWYgKHJvd0NoZWNrYm94LmNoZWNrZWQpCi0gICAgICB7Ci0gICAgICAgIGlmIChpID09IHRhcmdldENhdGVnb3J5Um93KQotICAgICAgICAgIG5ld1RhcmdldENhdGVnb3J5Um93ID0gLTE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBuZXdUYXJnZXRDYXRlZ29yeVJvdy0tOwotICAgICAgfQotICAgIH0KLSAgICBpZiAobmV3VGFyZ2V0Q2F0ZWdvcnlSb3cgPT0gLTEpCi0gICAgICBjbG9zZUNhdGVnb3J5QnJvd3NlcigpOwotICAgIHRhcmdldENhdGVnb3J5Um93ID0gbmV3VGFyZ2V0Q2F0ZWdvcnlSb3c7Ci0gICAgcmVtb3ZlU2VsZWN0ZWRSb3dzKHRhYmxlQ29udGFpbmVySWQpOwotICAgIC8vIEZpeCB0aGUgYnJvd3NlLi4uIGxpbmtzLgotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciB0YWJsZVJvdyA9IHRhYmxlLnJvd3NbaV07Ci0gICAgICB2YXIgYnJvd3NlTGluayA9IHRhYmxlUm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIikuaXRlbSgwKTsKLSAgICAgIHNldEpTTGlua1Jvd1RhcmdldChicm93c2VMaW5rLCJvcGVuQ2F0ZWdvcnlCcm93c2VyIix0YWJsZUNvbnRhaW5lcklkLGkpOwotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIGFkZExhbmd1YWdlSW5wdXRSb3codGFibGVDb250YWluZXJJZCx0ZXh0Q29udHJvbFRpdGxlKQotICB7Ci0gICAgdHdpc3RPcGVuKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZUJvZHkgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVEJPRFkiKS5pdGVtKDApOwotICAgIHZhciBuZXdSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHZhciBjb2x1bW4wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0gICAgdmFyIHJvd0NoZWNrYm94ID0gY3JlYXRlUm93Q2hlY2tib3goKTsKLSAgICBjb2x1bW4wLmFwcGVuZENoaWxkKHJvd0NoZWNrYm94KTsKLQotICAgIHZhciBsYW5ndWFnZVNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgIHBvcHVsYXRlTGFuZ3VhZ2VTZWxlY3QobGFuZ3VhZ2VTZWxlY3QpOwotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQobGFuZ3VhZ2VTZWxlY3QpOwotCi0gICAgdmFyIHRleHRJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgY29sdW1uMi5hcHBlbmRDaGlsZCh0ZXh0SW5wdXQpOwotCi0gICAgY29sdW1uMC5jbGFzc05hbWUgPSAiY2hlY2tib3hjZWxscyI7Ci0gICAgbGFuZ3VhZ2VTZWxlY3QuY2xhc3NOYW1lID0gInNlbGVjdGxpc3QiOwotICAgIGNvbHVtbjEuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIHRleHRJbnB1dC5jbGFzc05hbWUgPSAidGFibGV0ZXh0ZW50ZXIiOwotICAgIHRleHRJbnB1dC50aXRsZSA9IHRleHRDb250cm9sVGl0bGU7Ci0gICAgY29sdW1uMi5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgY29sdW1uMi53aWR0aCA9ICI5MCUiOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4wKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMSk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjIpOwotICAgIHRhYmxlQm9keS5hcHBlbmRDaGlsZChuZXdSb3cpOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0SWRlbnRpZmllclJvd1NldHRpbmdzKHRhYmxlQ29udGFpbmVySWQsaWRlbnRpZmllckluZGV4LHRNb2RlbEtleSxrZXlOYW1lLGtleVZhbHVlKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHJvdyA9IHRhYmxlLnJvd3NbbnVtYmVyT2ZIZWFkZXJSb3dzK2lkZW50aWZpZXJJbmRleF07Ci0gICAgdmFyIGlkZW50aWZpZXJUeXBlU2VsZWN0ID0gcm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKS5pdGVtKDApOwotICAgIHZhciByb3dFbGVtZW50Q29sbGVjdGlvbiA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKTsKLSAgICB2YXIga2V5TmFtZVRleHQgPSByb3dFbGVtZW50Q29sbGVjdGlvbi5pdGVtKDEpOwotICAgIHZhciBrZXlWYWx1ZVRleHQgPSByb3dFbGVtZW50Q29sbGVjdGlvbi5pdGVtKDIpOwotICAgIHNldFRNb2RlbEtleVNlbGVjdChpZGVudGlmaWVyVHlwZVNlbGVjdCx0TW9kZWxLZXkpOwotICAgIGtleU5hbWVUZXh0LnZhbHVlID0ga2V5TmFtZTsKLSAgICBrZXlWYWx1ZVRleHQudmFsdWUgPSBrZXlWYWx1ZTsKLSAgfQotCi0gIGZ1bmN0aW9uIHBvcHVsYXRlSWRlbnRpZmllclR5cGVTZWxlY3QoaWRlbnRpZmllclR5cGVTZWxlY3QpCi0gIHsKLSAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgaWRlbnRpZmllclR5cGVTZWxlY3Qub3B0aW9uc1tjb3VudGVyKytdID0gbmV3IE9wdGlvbigiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX09QVElPTl9JREVOVElGSUVSX0RVTlMiKSklPiIsIjwlPVRNb2RlbC5EX1VfTl9TX1RNT0RFTF9LRVklPiIpOwotICAgIGlkZW50aWZpZXJUeXBlU2VsZWN0Lm9wdGlvbnNbY291bnRlcisrXSA9IG5ldyBPcHRpb24oIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9PUFRJT05fSURFTlRJRklFUl9USE9NQVNfUkVHSVNUUlkiKSklPiIsIjwlPVRNb2RlbC5USE9NQVNfUkVHSVNURVJfVE1PREVMX0tFWSU+Iik7Ci0gIH0KLQotICBmdW5jdGlvbiBoYW5kbGVJZGVudGlmaWVyQ2hhbmdlKGUpCi0gIHsKLSAgICB2YXIgaWRlbnRpZmllclNlbGVjdDsKLSAgICBpZiAoaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKCkpCi0gICAgICBpZGVudGlmaWVyU2VsZWN0ID0gZXZlbnQuc3JjRWxlbWVudDsKLSAgICBlbHNlCi0gICAgICBpZGVudGlmaWVyU2VsZWN0ID0gZS50YXJnZXQ7Ci0gICAgdmFyIGNlbGwgPSBpZGVudGlmaWVyU2VsZWN0LnBhcmVudE5vZGU7Ci0gICAgdmFyIHJvdyA9IGNlbGwucGFyZW50Tm9kZTsKLSAgICB2YXIgaW5wdXRFbGVtZW50cyA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKTsKLSAgICBmb3IgKHZhciBpPTA7aTxpbnB1dEVsZW1lbnRzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgaWYgKGlucHV0RWxlbWVudHMuaXRlbShpKS50eXBlID09ICJ0ZXh0IikKLSAgICAgIHsKLSAgICAgICAgaW5wdXRFbGVtZW50cy5pdGVtKGkpLnZhbHVlID0gaWRlbnRpZmllclNlbGVjdC5vcHRpb25zW2lkZW50aWZpZXJTZWxlY3Quc2VsZWN0ZWRJbmRleF0udGV4dDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gYWRkSWRlbnRpZmllclJvdyh0YWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgdHdpc3RPcGVuKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZUJvZHkgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVEJPRFkiKS5pdGVtKDApOwotICAgIHZhciBuZXdSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHZhciBjb2x1bW4wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4zID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLQotICAgIHZhciByb3dDaGVja2JveCA9IGNyZWF0ZVJvd0NoZWNrYm94KCk7Ci0gICAgY29sdW1uMC5hcHBlbmRDaGlsZChyb3dDaGVja2JveCk7Ci0KLSAgICB2YXIga2V5VHlwZVNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgIGtleVR5cGVTZWxlY3Qub25jaGFuZ2UgPSBoYW5kbGVJZGVudGlmaWVyQ2hhbmdlOwotICAgIHBvcHVsYXRlSWRlbnRpZmllclR5cGVTZWxlY3Qoa2V5VHlwZVNlbGVjdCk7Ci0gICAgY29sdW1uMS5hcHBlbmRDaGlsZChrZXlUeXBlU2VsZWN0KTsKLQotICAgIHZhciBrZXlOYW1lVGV4dElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICBjb2x1bW4yLmFwcGVuZENoaWxkKGtleU5hbWVUZXh0SW5wdXQpOwotCi0gICAgdmFyIGtleVZhbHVlVGV4dElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICBjb2x1bW4zLmFwcGVuZENoaWxkKGtleVZhbHVlVGV4dElucHV0KTsKLQotICAgIGNvbHVtbjAuY2xhc3NOYW1lID0gImNoZWNrYm94Y2VsbHMiOwotICAgIGtleVR5cGVTZWxlY3QuY2xhc3NOYW1lID0gInNlbGVjdGxpc3QiCi0gICAgY29sdW1uMS5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgY29sdW1uMS53aWR0aCA9ICI1JSI7Ci0gICAga2V5TmFtZVRleHRJbnB1dC5jbGFzc05hbWUgPSAidGFibGV0ZXh0ZW50ZXIiOwotICAgIGtleU5hbWVUZXh0SW5wdXQudGl0bGUgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKHVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfSURFTlRJRklFUl9LRVlfTkFNRSIpKSU+IjsKLSAgICBjb2x1bW4yLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW4yLndpZHRoID0gIjQwJSI7Ci0gICAga2V5VmFsdWVUZXh0SW5wdXQuY2xhc3NOYW1lID0gInRhYmxldGV4dGVudGVyIjsKLSAgICBrZXlWYWx1ZVRleHRJbnB1dC50aXRsZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9JREVOVElGSUVSX0tFWV9WQUxVRSIpKSU+IjsKLSAgICBjb2x1bW4zLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW4zLndpZHRoID0gIjU1JSI7Ci0KLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMCk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjEpOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4yKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMyk7Ci0gICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gICAga2V5TmFtZVRleHRJbnB1dC52YWx1ZSA9IGtleVR5cGVTZWxlY3Qub3B0aW9uc1swXS50ZXh0OwotICB9Ci0gIAotICBmdW5jdGlvbiBDYXRlZ29yeShkaXNwbGF5TmFtZSx0TW9kZWxLZXkpCi0gIHsKLSAgICB0aGlzLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7Ci0gICAgdGhpcy50TW9kZWxLZXkgPSB0TW9kZWxLZXk7Ci0gIH0KLQotICBmdW5jdGlvbiBjb21wYXJlQ2F0ZWdvcnlEaXNwbGF5TmFtZXMoYSxiKQotICB7Ci0gICAgdmFyIHJlc3VsdCA9IGEuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1lKTsKLSAgICBpZiAocmVzdWx0IDwgMCkKLSAgICAgIHJldHVybiAtMTsKLSAgICBlbHNlIGlmIChyZXN1bHQgPiAwKQotICAgICAgcmV0dXJuIDE7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIDA7Ci0gIH0gIAotCi0gIGZ1bmN0aW9uIHBvcHVsYXRlQ2F0ZWdvcnlUeXBlU2VsZWN0KGNhdGVnb3J5VHlwZVNlbGVjdCkKLSAgewotICAgIGlmIChjYXRlZ29yeUFycmF5Lmxlbmd0aCA9PSAwKQotICAgIHsKLTwlCi0gICBFbnVtZXJhdGlvbiBjb21tb25DYXRlZ29yaWVzID0gY29tbW9uQ2F0ZWdvcnlNb2RlbHMuZWxlbWVudHMoKTsKLSAgIHdoaWxlIChjb21tb25DYXRlZ29yaWVzLmhhc01vcmVFbGVtZW50cygpKQotICAgewotICAgICBDYXRlZ29yeU1vZGVsIGNvbW1vbkNhdGVnb3J5TW9kZWwgPSAoQ2F0ZWdvcnlNb2RlbCljb21tb25DYXRlZ29yaWVzLm5leHRFbGVtZW50KCk7Ci0lPgotICAgICAgY2F0ZWdvcnlBcnJheVtjYXRlZ29yeUFycmF5Lmxlbmd0aF0gPSBuZXcgQ2F0ZWdvcnkoIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb21tb25DYXRlZ29yeU1vZGVsLmdldERpc3BsYXlOYW1lKCkpJT4iLCI8JT1jb21tb25DYXRlZ29yeU1vZGVsLmdldFRNb2RlbEtleSgpJT4iKTsKLTwlCi0gICB9Ci0gICBFbnVtZXJhdGlvbiB1c2VyRGVmaW5lZENhdGVnb3JpZXMgPSByZWdFbGVtZW50LmdldFVzZXJEZWZpbmVkQ2F0ZWdvcmllcygpOwotICAgaWYgKHVzZXJEZWZpbmVkQ2F0ZWdvcmllcyAhPSBudWxsKQotICAgewotICAgICB3aGlsZSAodXNlckRlZmluZWRDYXRlZ29yaWVzLmhhc01vcmVFbGVtZW50cygpKQotICAgICB7Ci0gICAgICAgQ2F0ZWdvcnlNb2RlbCB1c2VyRGVmaW5lZENhdGVnb3J5ID0gKENhdGVnb3J5TW9kZWwpdXNlckRlZmluZWRDYXRlZ29yaWVzLm5leHRFbGVtZW50KCk7Ci0lPgotICAgICAgY2F0ZWdvcnlBcnJheVtjYXRlZ29yeUFycmF5Lmxlbmd0aF0gPSBuZXcgQ2F0ZWdvcnkoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1c2VyRGVmaW5lZENhdGVnb3J5LmdldERpc3BsYXlOYW1lKCkpJT4iLCI8JT11c2VyRGVmaW5lZENhdGVnb3J5LmdldFRNb2RlbEtleSgpJT4iKTsKLTwlCi0gICAgIH0KLSAgIH0KLSU+Ci0gICAgICBjYXRlZ29yeUFycmF5LnNvcnQoY29tcGFyZUNhdGVnb3J5RGlzcGxheU5hbWVzKTsKLSAgICB9Ci0gICAgCi0gICAgZm9yICh2YXIgaT0wO2k8Y2F0ZWdvcnlBcnJheS5sZW5ndGg7aSsrKQotICAgICAgY2F0ZWdvcnlUeXBlU2VsZWN0Lm9wdGlvbnNbaV0gPSBuZXcgT3B0aW9uKGNhdGVnb3J5QXJyYXlbaV0uZGlzcGxheU5hbWUsY2F0ZWdvcnlBcnJheVtpXS50TW9kZWxLZXkpOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0SlNMaW5rUm93VGFyZ2V0KGxpbmssanNGdW5jdGlvbix0YWJsZUNvbnRhaW5lcklkLHJvdykKLSAgewotICAgIGxpbmsuaHJlZiA9ICJqYXZhc2NyaXB0OiIranNGdW5jdGlvbisiKCciK3RhYmxlQ29udGFpbmVySWQrIicsIityb3crIikiOwotICB9Ci0KLSAgZnVuY3Rpb24gb3BlbkNhdGVnb3J5QnJvd3Nlcih0YWJsZUNvbnRhaW5lcklkLHJvdykKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciBjYXRlZ29yeVNlbGVjdCA9IHRhYmxlLnJvd3Nbcm93XS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0IikuaXRlbSgwKTsKLSAgICB2YXIgc2VsZWN0ZWRDYXRlZ29yeU9wdGlvbiA9IGNhdGVnb3J5U2VsZWN0Lm9wdGlvbnNbY2F0ZWdvcnlTZWxlY3Qub3B0aW9ucy5zZWxlY3RlZEluZGV4XTsKLSAgICB2YXIgY2F0ZWdvcnlUeXBlID0gdGFibGUucm93c1tyb3ddLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKS5pdGVtKDApLm9wdGlvbnMuc2VsZWN0ZWRJbmRleDsKLSAgICB2YXIgY29sdW1ucyA9IHRhYmxlLnJvd3Nbcm93XS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKLSAgICB0YXJnZXRDYXRlZ29yeVJvdyA9IHJvdzsKLSAgICB0YXJnZXRDYXRlZ29yeUtleU5hbWVFbGVtZW50ID0gY29sdW1ucy5pdGVtKDIpLmNoaWxkTm9kZXNbMF07Ci0gICAgdGFyZ2V0Q2F0ZWdvcnlLZXlWYWx1ZUVsZW1lbnQgPSBjb2x1bW5zLml0ZW0oMykuY2hpbGROb2Rlc1swXTsKLSAgICB2YXIgbGluayA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoT3BlbkNhdGVnb3J5QnJvd3NlckFjdGlvbi5nZXRXaWxkQ2FyZEFjdGlvbkxpbmsoc2Vzc2lvbklkKSkpJT4iOwotICAgIGNhdGVnb3J5V2luZG93ID0gd2luZG93Lm9wZW4obGluay5yZXBsYWNlKHdpbGRjYXJkQ2F0ZWdvcnlCcm93c2VyVVJMUmUsc2VsZWN0ZWRDYXRlZ29yeU9wdGlvbi52YWx1ZSksImNhdGVnb3J5V2luZG93IiwiaGVpZ2h0PTMwMCx3aWR0aD0zMDAsc3RhdHVzPXllcyxzY3JvbGxiYXJzPXllcyxyZXNpemFibGU9eWVzIik7Ci0gICAgaWYgKGNhdGVnb3J5V2luZG93LmZvY3VzKQotICAgICAgY2F0ZWdvcnlXaW5kb3cuZm9jdXMoKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGNsb3NlQ2F0ZWdvcnlCcm93c2VyKCkKLSAgewotICAgIGlmICghY2F0ZWdvcnlXaW5kb3dDbG9zZWQpCi0gICAgICBjYXRlZ29yeVdpbmRvdy5jbG9zZSgpOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0Q2F0ZWdvcnlSb3dTZXR0aW5ncyh0YWJsZUNvbnRhaW5lcklkLGNhdGVnb3J5SW5kZXgsdE1vZGVsS2V5LGtleU5hbWUsa2V5VmFsdWUpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgcm93ID0gdGFibGUucm93c1tudW1iZXJPZkhlYWRlclJvd3MrY2F0ZWdvcnlJbmRleF07Ci0gICAgdmFyIGNhdGVnb3J5VHlwZVNlbGVjdCA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0IikuaXRlbSgwKTsKLSAgICB2YXIgcm93RWxlbWVudENvbGxlY3Rpb24gPSByb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iik7Ci0gICAgdmFyIGtleU5hbWVUZXh0ID0gcm93RWxlbWVudENvbGxlY3Rpb24uaXRlbSgxKTsKLSAgICB2YXIga2V5VmFsdWVUZXh0ID0gcm93RWxlbWVudENvbGxlY3Rpb24uaXRlbSgyKTsKLSAgICBzZXRUTW9kZWxLZXlTZWxlY3QoY2F0ZWdvcnlUeXBlU2VsZWN0LHRNb2RlbEtleSk7Ci0gICAga2V5TmFtZVRleHQudmFsdWUgPSBrZXlOYW1lOwotICAgIGtleVZhbHVlVGV4dC52YWx1ZSA9IGtleVZhbHVlOwotICB9Ci0KLSAgZnVuY3Rpb24gYWRkQ2F0ZWdvcnlSb3dCcm93c2VMaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uLHJvd0luZGV4KQotICB7Ci0gICAgdmFyIGJyb3dzZUxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgc2V0SlNMaW5rUm93VGFyZ2V0KGJyb3dzZUxpbmssIm9wZW5DYXRlZ29yeUJyb3dzZXIiLHRhYmxlQ29udGFpbmVySWQscm93SW5kZXgpOwotICAgIGJyb3dzZUxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTElOS19CUk9XU0UiKSklPiIpKTsKLSAgICBjb2x1bW4uYXBwZW5kQ2hpbGQoYnJvd3NlTGluayk7Ci0gIH0KLQotICBmdW5jdGlvbiBhZGRDYXRlZ29yeVJvdyh0YWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgdHdpc3RPcGVuKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciB0YWJsZUJvZHkgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVEJPRFkiKS5pdGVtKDApOwotICAgIHZhciBuZXdSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHZhciBjb2x1bW4wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4zID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uNCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0KLSAgICB2YXIgcm93Q2hlY2tib3ggPSBjcmVhdGVSb3dDaGVja2JveCgpOwotICAgIGNvbHVtbjAuYXBwZW5kQ2hpbGQocm93Q2hlY2tib3gpOwotCi0gICAgdmFyIGNhdGVnb3J5VHlwZVNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgIHBvcHVsYXRlQ2F0ZWdvcnlUeXBlU2VsZWN0KGNhdGVnb3J5VHlwZVNlbGVjdCk7Ci0gICAgY29sdW1uMS5hcHBlbmRDaGlsZChjYXRlZ29yeVR5cGVTZWxlY3QpOwotCi0gICAgdmFyIGtleU5hbWVUZXh0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgIGNvbHVtbjIuYXBwZW5kQ2hpbGQoa2V5TmFtZVRleHRJbnB1dCk7Ci0KLSAgICB2YXIga2V5VmFsdWVUZXh0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgIGNvbHVtbjMuYXBwZW5kQ2hpbGQoa2V5VmFsdWVUZXh0SW5wdXQpOwotCi0gICAgYWRkQ2F0ZWdvcnlSb3dCcm93c2VMaW5rKHRhYmxlQ29udGFpbmVySWQsY29sdW1uNCx0YWJsZS5yb3dzLmxlbmd0aCk7Ci0KLSAgICBjb2x1bW4wLmNsYXNzTmFtZSA9ICJjaGVja2JveGNlbGxzIjsKLSAgICBjYXRlZ29yeVR5cGVTZWxlY3QuY2xhc3NOYW1lID0gInNlbGVjdGxpc3QiOwotICAgIGNvbHVtbjEuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjEud2lkdGggPSAiNSUiOwotICAgIGtleU5hbWVUZXh0SW5wdXQuY2xhc3NOYW1lID0gInRhYmxldGV4dGVudGVyIjsKLSAgICBrZXlOYW1lVGV4dElucHV0LnRpdGxlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0NBVEVHT1JZX0tFWV9OQU1FIikpJT4iOwotICAgIGNvbHVtbjIuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjIud2lkdGggPSAiNTUlIjsKLSAgICBrZXlWYWx1ZVRleHRJbnB1dC5jbGFzc05hbWUgPSAidGFibGV0ZXh0ZW50ZXIiOwotICAgIGtleVZhbHVlVGV4dElucHV0LnRpdGxlID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX0NBVEVHT1JZX0tFWV9WQUxVRSIpKSU+IjsKLSAgICBjb2x1bW4zLmNsYXNzTmFtZSA9ICJ0YWJsZWNlbGxzIjsKLSAgICBjb2x1bW4zLndpZHRoID0gIjI1JSI7Ci0gICAgY29sdW1uNC5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0KLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMCk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjEpOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4yKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMyk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjQpOwotICAgIHRhYmxlQm9keS5hcHBlbmRDaGlsZChuZXdSb3cpOwotICB9Ci0KLSAgZnVuY3Rpb24gc2V0RGlzY292ZXJ5VVJMUm93U2V0dGluZ3ModGFibGVDb250YWluZXJJZCxkaXNjb3ZlcnlVUkxJbmRleCxkaXNjb3ZlcnlVUkwpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgcm93ID0gdGFibGUucm93c1tudW1iZXJPZkhlYWRlclJvd3MrZGlzY292ZXJ5VVJMSW5kZXhdOwotICAgIHZhciByb3dFbGVtZW50Q29sbGVjdGlvbiA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKTsKLSAgICB2YXIgZGlzY292ZXJ5VVJMVGV4dElucHV0ID0gcm93RWxlbWVudENvbGxlY3Rpb24uaXRlbSgxKTsKLSAgICBkaXNjb3ZlcnlVUkxUZXh0SW5wdXQudmFsdWUgPSBkaXNjb3ZlcnlVUkw7Ci0gIH0KLQotICBmdW5jdGlvbiBhZGREaXNjb3ZlcnlVUkxSb3codGFibGVDb250YWluZXJJZCkKLSAgewotICAgIHR3aXN0T3Blbih0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgdGFibGVCb2R5ID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRCT0RZIikuaXRlbSgwKTsKLSAgICB2YXIgbmV3Um93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICB2YXIgY29sdW1uMCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0gICAgdmFyIHJvd0NoZWNrYm94ID0gY3JlYXRlUm93Q2hlY2tib3goKTsKLSAgICBjb2x1bW4wLmFwcGVuZENoaWxkKHJvd0NoZWNrYm94KTsKLQotICAgIHZhciBkaXNjb3ZlcnlVUkxUZXh0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoZGlzY292ZXJ5VVJMVGV4dElucHV0KTsKLQotICAgIGNvbHVtbjAuY2xhc3NOYW1lID0gImNoZWNrYm94Y2VsbHMiOwotICAgIGRpc2NvdmVyeVVSTFRleHRJbnB1dC5jbGFzc05hbWUgPSAidGFibGV0ZXh0ZW50ZXIiOwotICAgIGRpc2NvdmVyeVVSTFRleHRJbnB1dC50aXRsZSA9ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUodWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9ESVNDT1ZFUllfVVJMIikpJT4iOwotICAgIGNvbHVtbjEuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjEud2lkdGggPSAiOTUlIjsKLQotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4wKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMSk7Ci0gICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gIH0KLQotICBmdW5jdGlvbiBhZGRSZXN1bHRSb3codGFibGVDb250YWluZXJJZCxub2RlSWQsdXJsLG5hbWUsZGVzY3JpcHRpb24pCi0gIHsKLSAgICB0d2lzdE9wZW4odGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgdmFyIHRhYmxlQm9keSA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUQk9EWSIpLml0ZW0oMCk7Ci0gICAgdmFyIG5ld1JvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgdmFyIGNvbHVtbjAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4xID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0KLSAgICB2YXIgcm93Q2hlY2tib3ggPSBjcmVhdGVSb3dDaGVja2JveCgpOwotICAgIGNvbHVtbjAuYXBwZW5kQ2hpbGQocm93Q2hlY2tib3gpOwotICAgIGNvbHVtbjAuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiIixub2RlSWQpKTsKLQotICAgIHZhciBuYW1lRGV0YWlsc0xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgbmFtZURldGFpbHNMaW5rLmhyZWYgPSB1cmw7Ci0gICAgbmFtZURldGFpbHNMaW5rLnRhcmdldCA9ICI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iOwotICAgIG5hbWVEZXRhaWxzTGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuYW1lKSk7Ci0gICAgY29sdW1uMS5hcHBlbmRDaGlsZChuYW1lRGV0YWlsc0xpbmspOwotCi0gICAgY29sdW1uMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXREZWZhdWx0RGlzcGxheVN0cmluZyhkZXNjcmlwdGlvbikpKTsKLQotICAgIGNvbHVtbjAuY2xhc3NOYW1lID0gImNoZWNrYm94Y2VsbHMiOwotICAgIGNvbHVtbjEuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjIuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjEud2lkdGggPSAiNDglIjsKLSAgICBjb2x1bW4yLndpZHRoID0gIjQ4JSI7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjApOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4xKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMik7Ci0gICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gIH0KLQotICBmdW5jdGlvbiBnZXRGaW5kUXVhbGlmaWVyVGFibGUoY29udGFpbmVySWQpCi0gIHsKLSAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpOwotICAgIHJldHVybiBjb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRhYmxlIikuaXRlbSgxKTsKLSAgfQotCi0gIGZ1bmN0aW9uIHNldEZpbmRRdWFsaWZpZXIoZmluZFF1YWxpZmllcixuYW1lVGFibGVDb250YWluZXJJZCxjYXRlZ29yeVRhYmxlQ29udGFpbmVySWQsZmluZFF1YWxpZmllcnNUYWJsZUNvbnRhaW5lcklkKQotICB7Ci0gICAgdmFyIHR3aXN0T3Blbk5hbWVzID0gZmFsc2U7Ci0gICAgdmFyIHR3aXN0T3BlbkNhdGVnb3JpZXMgPSBmYWxzZTsKLSAgICB2YXIgdHdpc3RPcGVuRmluZFF1YWxpZmllcnMgPSBmYWxzZTsKLQotICAgIGlmIChmaW5kUXVhbGlmaWVyID09ICI8JT1GaW5kUXVhbGlmaWVyLmV4YWN0TmFtZU1hdGNoJT4iKQotICAgIHsKLSAgICAgIHZhciBmcVRhYmxlID0gZ2V0RmluZFF1YWxpZmllclRhYmxlKG5hbWVUYWJsZUNvbnRhaW5lcklkKTsKLSAgICAgIHZhciBleGFjdE5hbWVNYXRjaENoZWNrYm94ID0gZnFUYWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgICAgZXhhY3ROYW1lTWF0Y2hDaGVja2JveC5jaGVja2VkID0gdHJ1ZTsKLSAgICAgIHR3aXN0T3Blbk5hbWVzID0gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZmluZFF1YWxpZmllciA9PSAiPCU9RmluZFF1YWxpZmllci5jYXNlU2Vuc2l0aXZlTWF0Y2glPiIpCi0gICAgewotICAgICAgdmFyIGZxVGFibGUgPSBnZXRGaW5kUXVhbGlmaWVyVGFibGUobmFtZVRhYmxlQ29udGFpbmVySWQpOwotICAgICAgdmFyIGNhc2VTZW5zaXRpdmVNYXRjaENoZWNrYm94ID0gZnFUYWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDEpOwotICAgICAgY2FzZVNlbnNpdGl2ZU1hdGNoQ2hlY2tib3guY2hlY2tlZCA9IHRydWU7Ci0gICAgICB0d2lzdE9wZW5OYW1lcyA9IHRydWU7Ci0gICAgfQotICAgIGVsc2UgaWYgKGZpbmRRdWFsaWZpZXIgPT0gIjwlPUZpbmRRdWFsaWZpZXIuc2VydmljZVN1YnNldCU+IiB8fCBmaW5kUXVhbGlmaWVyID09ICI8JT1GaW5kUXVhbGlmaWVyLmNvbWJpbmVDYXRlZ29yeUJhZ3MlPiIpCi0gICAgewotICAgICAgdmFyIGZxVGFibGUgPSBnZXRGaW5kUXVhbGlmaWVyVGFibGUoY2F0ZWdvcnlUYWJsZUNvbnRhaW5lcklkKTsKLSAgICAgIHZhciBjYXRlZ29yeVNlbGVjdCA9IGZxVGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVjdCIpLml0ZW0oMCk7Ci0gICAgICBzZXRTZWxlY3QoY2F0ZWdvcnlTZWxlY3QsZmluZFF1YWxpZmllcik7Ci0gICAgICB0d2lzdE9wZW5DYXRlZ29yaWVzID0gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZmluZFF1YWxpZmllciA9PSAiPCU9RmluZFF1YWxpZmllci5hbmRBbGxLZXlzJT4iIHx8IGZpbmRRdWFsaWZpZXIgPT0gIjwlPUZpbmRRdWFsaWZpZXIub3JBbGxLZXlzJT4iIHx8IGZpbmRRdWFsaWZpZXIgPT0gIjwlPUZpbmRRdWFsaWZpZXIub3JMaWtlS2V5cyU+IikKLSAgICB7Ci0gICAgICB2YXIgZnFUYWJsZSA9IGdldFRhYmxlKGZpbmRRdWFsaWZpZXJzVGFibGVDb250YWluZXJJZCk7Ci0gICAgICB2YXIga2V5U2VsZWN0ID0gZnFUYWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0IikuaXRlbSgwKTsKLSAgICAgIHNldFNlbGVjdChrZXlTZWxlY3QsZmluZFF1YWxpZmllcik7Ci0gICAgICBpZiAoZmluZFF1YWxpZmllciAhPSAiPCU9RmluZFF1YWxpZmllci5hbmRBbGxLZXlzJT4iKQotICAgICAgICB0d2lzdE9wZW5GaW5kUXVhbGlmaWVycyA9IHRydWU7Ci0gICAgfQotICAgIGVsc2UgaWYgKGZpbmRRdWFsaWZpZXIgPT0gIjwlPUZpbmRRdWFsaWZpZXIuc29ydEJ5TmFtZUFzYyU+IiB8fCBmaW5kUXVhbGlmaWVyID09ICI8JT1GaW5kUXVhbGlmaWVyLnNvcnRCeU5hbWVEZXNjJT4iIHx8IGZpbmRRdWFsaWZpZXIgPT0gIjwlPUZpbmRRdWFsaWZpZXIuc29ydEJ5RGF0ZUFzYyU+IiB8fCBmaW5kUXVhbGlmaWVyID09ICI8JT1GaW5kUXVhbGlmaWVyLnNvcnRCeURhdGVEZXNjJT4iKQotICAgIHsKLSAgICAgIHZhciBmcVRhYmxlID0gZ2V0VGFibGUoZmluZFF1YWxpZmllcnNUYWJsZUNvbnRhaW5lcklkKTsKLSAgICAgIHZhciBzb3J0Q29sbGVjdGlvbiA9IGZxVGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iik7Ci0gICAgICBmb3IgKHZhciBpPTA7aTxzb3J0Q29sbGVjdGlvbi5sZW5ndGg7aSsrKQotICAgICAgewotICAgICAgICBpZiAoc29ydENvbGxlY3Rpb24uaXRlbShpKS52YWx1ZSA9PSBmaW5kUXVhbGlmaWVyKQotICAgICAgICAgIHNvcnRDb2xsZWN0aW9uLml0ZW0oaSkuY2hlY2tlZCA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBpZiAoZmluZFF1YWxpZmllciAhPSAiPCU9RmluZFF1YWxpZmllci5zb3J0QnlOYW1lQXNjJT4iICYmIGZpbmRRdWFsaWZpZXIgIT0gIjwlPUZpbmRRdWFsaWZpZXIuc29ydEJ5RGF0ZUFzYyU+IikKLSAgICAgICAgdHdpc3RPcGVuRmluZFF1YWxpZmllcnMgPSB0cnVlOwotICAgIH0KLQotICAgIGlmICh0d2lzdE9wZW5OYW1lcykKLSAgICAgIHR3aXN0T3BlbihuYW1lVGFibGVDb250YWluZXJJZCk7Ci0gICAgaWYgKHR3aXN0T3BlbkNhdGVnb3JpZXMpCi0gICAgICB0d2lzdE9wZW4oY2F0ZWdvcnlUYWJsZUNvbnRhaW5lcklkKTsKLSAgICBpZiAodHdpc3RPcGVuRmluZFF1YWxpZmllcnMpCi0gICAgICB0d2lzdE9wZW4oZmluZFF1YWxpZmllcnNUYWJsZUNvbnRhaW5lcklkKTsKLSAgfQotCi0gIGZ1bmN0aW9uIHByb2Nlc3NMYW5ndWFnZUlucHV0VGFibGUodGFibGVDb250YWluZXJJZCxsYW5nVmFyLHRleHRWYXIsZm9ybSkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciBsYW5ndWFnZVNlbGVjdHMgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0Iik7Ci0gICAgdmFyIHRleHRJbnB1dHMgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKTsKLSAgICBmb3IgKHZhciBpPTA7aTxsYW5ndWFnZVNlbGVjdHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgaGlkZGVuTGFuZ3VhZ2VTZWxlY3QgPSBjcmVhdGVIaWRkZW5FbGVtZW50KGxhbmdWYXIsbGFuZ3VhZ2VTZWxlY3RzW2ldLnZhbHVlKTsKLSAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoaGlkZGVuTGFuZ3VhZ2VTZWxlY3QpOwotICAgIH0KLQotICAgIGZvciAodmFyIGk9MDtpPHRleHRJbnB1dHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAodGV4dElucHV0c1tpXS50eXBlID09ICJ0ZXh0IikKLSAgICAgIHsKLSAgICAgICAgdmFyIGhpZGRlblRleHRJbnB1dCA9IGNyZWF0ZUhpZGRlbkVsZW1lbnQodGV4dFZhcix0ZXh0SW5wdXRzW2ldLnZhbHVlKTsKLSAgICAgICAgZm9ybS5hcHBlbmRDaGlsZChoaWRkZW5UZXh0SW5wdXQpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIHByb2Nlc3NOYW1lRmluZFF1YWxpZmllcnModGFibGVDb250YWluZXJJZCxmb3JtKQotICB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0RmluZFF1YWxpZmllclRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIHZhciBuYW1lRmluZFF1YWxpZmllckNoZWNrYm94ZXMgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKTsKLSAgICBmb3IgKHZhciBpPTA7aTxuYW1lRmluZFF1YWxpZmllckNoZWNrYm94ZXMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgaXRlbSA9IG5hbWVGaW5kUXVhbGlmaWVyQ2hlY2tib3hlcy5pdGVtKGkpOwotICAgICAgaWYgKGl0ZW0uY2hlY2tlZCkKLSAgICAgIHsKLSAgICAgICAgdmFyIGhpZGRlbkZpbmRRdWFsaWZpZXIgPSBjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0ZJTkRRVUFMSUZJRVIlPiIsaXRlbS52YWx1ZSk7Ci0gICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoaGlkZGVuRmluZFF1YWxpZmllcik7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc0lkZW50aWZpZXJUYWJsZSh0YWJsZUNvbnRhaW5lcklkLGZvcm0pCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgaWRlbnRpZmllclR5cGVTZWxlY3RzID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVjdCIpOwotICAgIHZhciB0ZXh0SW5wdXRzID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iik7Ci0gICAgZm9yICh2YXIgaT0wO2k8aWRlbnRpZmllclR5cGVTZWxlY3RzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgdmFyIGhpZGRlbklkZW50aWZpZXJUeXBlU2VsZWN0ID0gY3JlYXRlSGlkZGVuRWxlbWVudCgiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9JREVOVElGSUVSX1RZUEUlPiIsaWRlbnRpZmllclR5cGVTZWxlY3RzW2ldLnZhbHVlKTsKLSAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoaGlkZGVuSWRlbnRpZmllclR5cGVTZWxlY3QpOwotICAgIH0KLQotICAgIHZhciBpc0tleU5hbWUgPSB0cnVlOwotICAgIGZvciAodmFyIGk9MDtpPHRleHRJbnB1dHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAodGV4dElucHV0c1tpXS50eXBlID09ICJ0ZXh0IikKLSAgICAgIHsKLSAgICAgICAgdmFyIG5hbWU7Ci0gICAgICAgIGlmIChpc0tleU5hbWUpCi0gICAgICAgICAgbmFtZSA9ICI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0lERU5USUZJRVJfS0VZX05BTUUlPiI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBuYW1lID0gIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfSURFTlRJRklFUl9LRVlfVkFMVUUlPiI7Ci0gICAgICAgIHZhciBoaWRkZW5UZXh0SW5wdXQgPSBjcmVhdGVIaWRkZW5FbGVtZW50KG5hbWUsdGV4dElucHV0c1tpXS52YWx1ZSk7Ci0gICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoaGlkZGVuVGV4dElucHV0KTsKLSAgICAgICAgaXNLZXlOYW1lID0gIWlzS2V5TmFtZTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBwcm9jZXNzQ2F0ZWdvcnlUYWJsZSh0YWJsZUNvbnRhaW5lcklkLGZvcm0saXNGaW5kQnVzaW5lc3MpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgY2F0ZWdvcnlUeXBlU2VsZWN0cyA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKTsKLSAgICB2YXIgdGV4dElucHV0cyA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwotICAgIGZvciAodmFyIGk9MDtpPGNhdGVnb3J5VHlwZVNlbGVjdHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgaGlkZGVuQ2F0ZWdvcnlUeXBlU2VsZWN0ID0gY3JlYXRlSGlkZGVuRWxlbWVudCgiPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9BRFZBTkNFRF9DQVRFR09SWV9UWVBFJT4iLGNhdGVnb3J5VHlwZVNlbGVjdHNbaV0udmFsdWUpOwotICAgICAgZm9ybS5hcHBlbmRDaGlsZChoaWRkZW5DYXRlZ29yeVR5cGVTZWxlY3QpOwotICAgIH0KLQotICAgIHZhciBpc0tleU5hbWUgPSB0cnVlOwotICAgIGZvciAodmFyIGk9MDtpPHRleHRJbnB1dHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAodGV4dElucHV0c1tpXS50eXBlID09ICJ0ZXh0IikKLSAgICAgIHsKLSAgICAgICAgdmFyIG5hbWU7Ci0gICAgICAgIGlmIChpc0tleU5hbWUpCi0gICAgICAgICAgbmFtZSA9ICI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9OQU1FJT4iOwotICAgICAgICBlbHNlCi0gICAgICAgICAgbmFtZSA9ICI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0NBVEVHT1JZX0tFWV9WQUxVRSU+IjsKLSAgICAgICAgdmFyIGhpZGRlblRleHRJbnB1dCA9IGNyZWF0ZUhpZGRlbkVsZW1lbnQobmFtZSx0ZXh0SW5wdXRzW2ldLnZhbHVlKTsKLSAgICAgICAgZm9ybS5hcHBlbmRDaGlsZChoaWRkZW5UZXh0SW5wdXQpOwotICAgICAgICBpc0tleU5hbWUgPSAhaXNLZXlOYW1lOwotICAgICAgfQotICAgIH0KLQotICAgIGlmIChpc0ZpbmRCdXNpbmVzcykKLSAgICB7Ci0gICAgICB0YWJsZSA9IGdldEZpbmRRdWFsaWZpZXJUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICAgIHZhciBjYXRlZ29yeUZpbmRRdWFsaWZpZXIgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0IikuaXRlbSgwKTsKLSAgICAgIGlmIChjYXRlZ29yeUZpbmRRdWFsaWZpZXIuc2VsZWN0ZWRJbmRleCAhPSAwKQotICAgICAgewotICAgICAgICB2YXIgaGlkZGVuRmluZFF1YWxpZmllciA9IGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfRklORFFVQUxJRklFUiU+IixjYXRlZ29yeUZpbmRRdWFsaWZpZXIudmFsdWUpOwotICAgICAgICBmb3JtLmFwcGVuZENoaWxkKGhpZGRlbkZpbmRRdWFsaWZpZXIpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIHByb2Nlc3NEaXNjb3ZlcnlVUkxUYWJsZSh0YWJsZUNvbnRhaW5lcklkLGZvcm0pCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgdGV4dElucHV0cyA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwotICAgIGZvciAodmFyIGk9MDtpPHRleHRJbnB1dHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAodGV4dElucHV0c1tpXS50eXBlID09ICJ0ZXh0IikKLSAgICAgIHsKLSAgICAgICAgdmFyIGhpZGRlblRleHRJbnB1dCA9IGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfRElTQ09WRVJZVVJMJT4iLHRleHRJbnB1dHNbaV0udmFsdWUpOwotICAgICAgICBmb3JtLmFwcGVuZENoaWxkKGhpZGRlblRleHRJbnB1dCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gcHJvY2Vzc0ZpbmRRdWFsaWZpZXJUYWJsZSh0YWJsZUNvbnRhaW5lcklkLGZvcm0pCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgZmluZFF1YWxpZmllclNlbGVjdHMgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0Iik7Ci0gICAgZm9yICh2YXIgaT0wO2k8ZmluZFF1YWxpZmllclNlbGVjdHMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgZmluZFF1YWxpZmllclNlbGVjdCA9IGZpbmRRdWFsaWZpZXJTZWxlY3RzLml0ZW0oaSk7Ci0gICAgICB2YXIgaGlkZGVuRmluZFF1YWxpZmllciA9IGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfQURWQU5DRURfRklORFFVQUxJRklFUiU+IixmaW5kUXVhbGlmaWVyU2VsZWN0LnZhbHVlKTsKLSAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoaGlkZGVuRmluZFF1YWxpZmllcik7Ci0gICAgfQotCi0gICAgdmFyIGZpbmRRdWFsaWZpZXJTb3J0UmFkaW9zID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iik7Ci0gICAgZm9yICh2YXIgaT0wO2k8ZmluZFF1YWxpZmllclNvcnRSYWRpb3MubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICBpZiAoZmluZFF1YWxpZmllclNvcnRSYWRpb3MuaXRlbShpKS5jaGVja2VkKQotICAgICAgewotICAgICAgICB2YXIgaGlkZGVuU29ydEVsZW1lbnQgPSBjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX0FEVkFOQ0VEX0ZJTkRRVUFMSUZJRVIlPiIsZmluZFF1YWxpZmllclNvcnRSYWRpb3MuaXRlbShpKS52YWx1ZSk7Ci0gICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoaGlkZGVuU29ydEVsZW1lbnQpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIHByb2Nlc3NSZXN1bHRUYWJsZSh0YWJsZUNvbnRhaW5lcklkLGlucHV0TmFtZSxmb3JtLHNlbGVjdGVkT25seSkKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySWQpOwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciBpbnB1dHMgPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwotICAgICAgaWYgKHNlbGVjdGVkT25seSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGlucHV0cy5pdGVtKDApLmNoZWNrZWQpCi0gICAgICAgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KGlucHV0TmFtZSxpbnB1dHMuaXRlbSgxKS52YWx1ZSkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoaW5wdXROYW1lLGlucHV0cy5pdGVtKDEpLnZhbHVlKSk7Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gaW5pdGlhdGVTdWJRdWVyeShmb3JtQ29udGFpbmVySWQsbmV3U3ViUXVlcnlLZXkscXVlcnlJdGVtLGlzR2V0KQotICB7Ci0gICAgaWYgKGlzR2V0KQotICAgIHsKLSAgICAgIHZhciBoYXNHZXRJdGVtcyA9IGZhbHNlOwotICAgICAgc3dpdGNoIChxdWVyeUl0ZW0pCi0gICAgICB7Ci0gICAgICAgIGNhc2UgPCU9VURESUFjdGlvbklucHV0cy5RVUVSWV9JVEVNX0JVU0lORVNTRVMlPjoKLSAgICAgICAgICBoYXNHZXRJdGVtcyA9IDwlPXJlZ05vZGUuaGFzQnVzaW5lc3MoKSU+OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDwlPVVERElBY3Rpb25JbnB1dHMuUVVFUllfSVRFTV9TRVJWSUNFUyU+OgotICAgICAgICAgIGhhc0dldEl0ZW1zID0gPCU9cmVnTm9kZS5oYXNTZXJ2aWNlKCklPjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA8JT1VRERJQWN0aW9uSW5wdXRzLlFVRVJZX0lURU1fU0VSVklDRV9JTlRFUkZBQ0VTJT46Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgaGFzR2V0SXRlbXMgPSA8JT1yZWdOb2RlLmhhc1NlcnZpY2VJbnRlcmZhY2UoKSU+OwotICAgICAgfQotICAgICAgaWYgKCFoYXNHZXRJdGVtcykKLSAgICAgIHsKLSAgICAgICAgYWxlcnQoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX0lURU1TX1RPX0dFVCIpKSU+Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gICAgdmFyIGZvcm1Db250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmb3JtQ29udGFpbmVySWQpOwotICAgIHZhciBmb3JtID0gZm9ybUNvbnRhaW5lci5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpLml0ZW0oMCk7Ci0gICAgZm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLlNVQlFVRVJZX0dFVCU+LnZhbHVlID0gaXNHZXQ7Ci0gICAgZm9ybS48JT1VRERJQWN0aW9uSW5wdXRzLk5FV19TVUJRVUVSWV9JTklUSUFURUQlPi52YWx1ZSA9IG5ld1N1YlF1ZXJ5S2V5OwotICAgIGZvcm0uPCU9VURESUFjdGlvbklucHV0cy5ORVdfU1VCUVVFUllfUVVFUllfSVRFTSU+LnZhbHVlID0gcXVlcnlJdGVtOwotICAgIHZhciBva1RvU3VibWl0ID0gZmFsc2U7Ci0gICAgaWYgKGZvcm1Db250YWluZXJJZCA9PSAiZmluZEJ1c2luZXNzZXNBZHZhbmNlZCIpCi0gICAgICBva1RvU3VibWl0ID0gcHJvY2Vzc0ZpbmRCdXNpbmVzc2VzQWR2YW5jZWRGb3JtKGZvcm0pOwotICAgIGVsc2UgaWYgKGZvcm1Db250YWluZXJJZCA9PSAiZmluZFNlcnZpY2VzQWR2YW5jZWQiKQotICAgICAgb2tUb1N1Ym1pdCA9IHByb2Nlc3NGaW5kU2VydmljZXNBZHZhbmNlZEZvcm0oZm9ybSk7Ci0gICAgZWxzZSBpZiAoZm9ybUNvbnRhaW5lcklkID09ICJmaW5kU2VydmljZUludGVyZmFjZXNBZHZhbmNlZCIpCi0gICAgICBva1RvU3VibWl0ID0gcHJvY2Vzc0ZpbmRTZXJ2aWNlSW50ZXJmYWNlc0FkdmFuY2VkRm9ybShmb3JtKTsKLSAgICBlbHNlIGlmIChmb3JtQ29udGFpbmVySWQgPT0gInB1Ymxpc2hTZXJ2aWNlU2ltcGxlIikKLSAgICAgIG9rVG9TdWJtaXQgPSBwcm9jZXNzUHVibGlzaFNlcnZpY2VTaW1wbGVGb3JtKGZvcm0pOwotICAgIGVsc2UgaWYgKGZvcm1Db250YWluZXJJZCA9PSAicHVibGlzaFNlcnZpY2VBZHZhbmNlZCIpCi0gICAgICBva1RvU3VibWl0ID0gcHJvY2Vzc1B1Ymxpc2hTZXJ2aWNlQWR2YW5jZWRGb3JtKGZvcm0pOwotICAgIGVsc2UgaWYgKGZvcm1Db250YWluZXJJZCA9PSAicHVibGlzaGVyQXNzZXJ0aW9ucyIpCi0gICAgICBva1RvU3VibWl0ID0gaGFuZGxlU3VibWl0KGZvcm0pOwotICAgIGVsc2UgaWYgKGZvcm1Db250YWluZXJJZCA9PSAibWFuYWdlUmVmZXJlbmNlZFNlcnZpY2VzIikKLSAgICAgIG9rVG9TdWJtaXQgPSBwcm9jZXNzRm9ybShmb3JtKTsKLSAgICBpZiAob2tUb1N1Ym1pdCkKLSAgICAgIGZvcm0uc3VibWl0KCk7Ci0gIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3N0YXR1c19jb250YWluZXIuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3N0YXR1c19jb250YWluZXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWQzNzU3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS9zdGF0dXNfY29udGFpbmVyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udWRkaS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgVURESVBlcnNwZWN0aXZlIHVkZGlQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0VURESVBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfU1RBVFVTX0NPTlRBSU5FUiIpJT48L3RpdGxlPgotPC9oZWFkPgotPGZyYW1lc2V0IHJvd3M9IjMzLCoiIGJvcmRlcj0wIGJnY29sb3I9IiNFQ0U5RDgiPgotICA8ZnJhbWUgbmFtZT0iPCU9VURESUZyYW1lTmFtZXMuU1RBVFVTX1RPT0xCQVIlPiIgdGl0bGU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfVE9PTEJBUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL3N0YXR1c190b29sYmFyLmpzcCIpKSU+IiBub3Jlc2l6ZSBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0wIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+Ci0gIDxmcmFtZSBuYW1lPSI8JT1VRERJRnJhbWVOYW1lcy5TVEFUVVNfQ09OVEVOVCU+IiB0aXRsZT0iPCU9dWRkaVBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1NUQVRVU19DT05URU5UIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc3RhdHVzX2NvbnRlbnQuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3N0YXR1c19jb250ZW50LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1NGI1MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc3RhdHVzX2NvbnRlbnQuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkucGVyc3BlY3RpdmUuKiwKLQlvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfQ09OVEVOVCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICA8dGFibGU+Ci0gICAgPHRyPgotICAgICAgPHRkPgotICAgICAgICA8cHJlPgotPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllc1N0cmljdCh1ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuZ2V0TWVzc2FnZXNGcm9tTGlzdCgpKSU+Ci0gICAgICAgIDwvcHJlPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc3RhdHVzX3Rvb2xiYXIuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci91ZGRpL3N0YXR1c190b29sYmFyLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiNGVkNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvc3RhdHVzX3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfVE9PTEJBUiIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90b29sYmFyLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9zY3JpcHRzL3VkZGlmcmFtZXNldHMuanNwIiBmbHVzaD0idHJ1ZSIvPiAgCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy90b29sYmFyLmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJ0b29sYmFyYm9keW1hcmdpbiI+Ci08ZGl2IGlkPSJ0b29sYmFyYm9yZGVyIj4KLSAgPGRpdiBpZD0idG9vbGJhciIgb25kYmxjbGljaz0icHJvY2Vzc0ZyYW1lc2V0U2l6ZXMoZG9jdW1lbnQuZm9ybXNbMF0pIj4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUFjdGlvbiIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGZvcm1BY3Rpb24uYXBwZW5kKCJ1ZGRpL2FjdGlvbnMvUmVzaXplVURESUZyYW1lc0FjdGlvbkpTUC5qc3AiKTsKLSU+ICAKLTwvanNwOnVzZUJlYW4+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1GcmFtZU5hbWUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICAgZm9ybUZyYW1lTmFtZS5hcHBlbmQoVURESUZyYW1lTmFtZXMuU1RBVFVTX0NPTlRBSU5FUik7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvdWRkaS9mb3Jtcy9Qcm9jZXNzVURESUZyYW1lc2V0c0Zvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PTI1IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3N0YXR1cy5naWYiKSklPiIgYWx0PSIiIHdpZHRoPTE2IGhlaWdodD0xNj48L3RkPgotPCUKLSAgIFN0cmluZyBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gbnVsbDsKLSAgIGlmICh1ZGRpUGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkuZW5kc1dpdGgoIjEwMCUiKSkKLSAgIHsKLSAgICAgaWYgKHVkZGlQZXJzcGVjdGl2ZS5nZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCkuZW5kc1dpdGgoIjEwMCUiKSkKLSAgICAgICBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX1JFU1RPUkUiKTsKLSAgIH0KLSAgIGlmIChkb3VibGVDbGlja0NvbHVtblRpdGxlID09IG51bGwpCi0gICAgIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9ET1VCTEVfQ0xJQ0tfVE9fTUFYSU1JWkUiKTsKLSU+ICAgICAgICAKLSAgICAgICAgPHRkIGlkPSJkb3VibGVjbGlja2NvbHVtbiIgdGl0bGU9IjwlPWRvdWJsZUNsaWNrQ29sdW1uVGl0bGUlPiIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIqIiBoZWlnaHQ9MjUgbm93cmFwIGNsYXNzPSJ0ZXh0Ij48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9TVEFUVVMiKSU+PC90ZD4KLTwlCi0gICBTdHJpbmcgYWx0Q2xlYXIgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9DTEVBUiIpOwotJT4gICAgICAgICAgIAotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iIHRhcmdldD0iPCU9VURESUZyYW1lTmFtZXMuU1RBVFVTX0NPTlRFTlQlPiI+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIikpJT4iIHdpZHRoPTE2IGhlaWdodD0xNiBvbk1vdXNlT3Zlcj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2VvdmVyKHRoaXMpIiBvbk1vdXNlT3V0PSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNlb3V0KHRoaXMpIiBvbk1vdXNlRG93bj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2Vkb3duKHRoaXMpIiBvbk1vdXNlVXA9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPic7bW91c2V1cCh0aGlzKSIgYWx0PSI8JT1hbHRDbGVhciU+IiB0aXRsZT0iPCU9YWx0Q2xlYXIlPiI+PC9hPjwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZGl2PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3VkZGkvdWRkaV9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS91ZGRpX3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjZmYjMyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvdWRkaS91ZGRpX3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBVRERJUGVyc3BlY3RpdmUgdWRkaVBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9VRERJX1BFUlNQRUNUSVZFX0NPTlRFTlQiKSU+PC90aXRsZT4KLTwvaGVhZD4KLTxmcmFtZXNldCBjb2xzPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCklPiIgYmdjb2xvcj0jRUNFOUQ4PgotICA8JQotICBpZiAob3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuaXNSVEwoKSkKLSAgewotICAlPgotICA8ZnJhbWUgbmFtZT0iPCU9VURESUZyYW1lTmFtZXMuQUNUSU9OU19DT05UQUlORVIlPiIgdGl0bGU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9BQ1RJT05TX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnNfY29udGFpbmVyLmpzcCIpKSU+IiBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTE+Ci0gIDxmcmFtZSBuYW1lPSI8JT1VRERJRnJhbWVOYW1lcy5OQVZJR0FUT1JfQ09OVEFJTkVSJT4iIHRpdGxlPSI8JT11ZGRpUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL25hdmlnYXRvcl9jb250YWluZXIuanNwIikpJT4iIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTAgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MT4KLSAgPCUKLSAgfQotICBlbHNlCi0gIHsKLSAgJT4KLSAgPGZyYW1lIG5hbWU9IjwlPVVERElGcmFtZU5hbWVzLk5BVklHQVRPUl9DT05UQUlORVIlPiIgdGl0bGU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9OQVZJR0FUT1JfQ09OVEFJTkVSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInVkZGkvbmF2aWdhdG9yX2NvbnRhaW5lci5qc3AiKSklPiIgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MCBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0xPgotICA8ZnJhbWUgbmFtZT0iPCU9VURESUZyYW1lTmFtZXMuQUNUSU9OU19DT05UQUlORVIlPiIgdGl0bGU9IjwlPXVkZGlQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9BQ1RJT05TX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ1ZGRpL2FjdGlvbnNfY29udGFpbmVyLmpzcCIpKSU+IiBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTE+Ci0gIDwlCi0gIH0KLSAgJT4KLTwvZnJhbWVzZXQ+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvQ2xlYXJXU0RMQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL0NsZWFyV1NETEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYzM1Y2QuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvQ2xlYXJXU0RMQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5DbGVhcldTRExBY3Rpb24iJT4KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLWlmIChjb250cm9sbGVyLmdldFNlc3Npb25JZCgpID09IG51bGwpIHsKLSU+Ci0KLSA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLQkgICAgdmFyIHBlcnNwZWN0aXZlQ29udGVudCA9IHRvcC5mcmFtZXNbIjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfQ09OVEVOVCU+Il07Ci0JCXBlcnNwZWN0aXZlQ29udGVudC5sb2NhdGlvbiA9ICJodHRwOi8vPCU9cmVxdWVzdC5nZXRTZXJ2ZXJOYW1lKCklPjo8JT1yZXF1ZXN0LmdldFNlcnZlclBvcnQoKSU+PCU9cmVxdWVzdC5nZXRDb250ZXh0UGF0aCgpJT4vYWN0aW9ucy9TZXNzaW9uVGltZWRPdXQuanNwIjsKLSA8L3NjcmlwdD4KLTwlCi19Ci1lbHNlIHsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLS8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLUNsZWFyV1NETEFjdGlvbiBhY3Rpb24gPSBuZXcgQ2xlYXJXU0RMQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLS8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9hY3Rpb25zL0NsZWFyTm9kZUFjdGlvbi5pbmMiICU+Ci08JQotfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL0NyZWF0ZUluc3RhbmNlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL0NyZWF0ZUluc3RhbmNlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E0MDM4NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9DcmVhdGVJbnN0YW5jZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLldTRExGcmFtZU5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkZyYW1lTmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5GcmFnbWVudENvbnN0YW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5DcmVhdGVJbnN0YW5jZUFjdGlvbiIlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci0gIDwlCi0gIENyZWF0ZUluc3RhbmNlQWN0aW9uIGFjdGlvbiA9IG5ldyBDcmVhdGVJbnN0YW5jZUFjdGlvbihjb250cm9sbGVyKTsKLSAgYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSAgYWN0aW9uLmV4ZWN1dGUoKTsKLSAgJT4KLSAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgd3NkbFByb3BlcnRpZXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiI7Ci0gIDwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvSW52b2tlV1NETEh0dHBHZXRPcGVyYXRpb25Gb3JtQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL0ludm9rZVdTRExIdHRwR2V0T3BlcmF0aW9uRm9ybUFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYmY0NzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvSW52b2tlV1NETEh0dHBHZXRPcGVyYXRpb25Gb3JtQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci0gIDwlCi0gIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgSW52b2tlV1NETEh0dHBHZXRPcGVyYXRpb25Gb3JtQWN0aW9uIGFjdGlvbiA9IG5ldyBJbnZva2VXU0RMSHR0cEdldE9wZXJhdGlvbkZvcm1BY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gIGlmIChpbnB1dHNWYWxpZCkKLSAgewotICAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSAgfQotICAlPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHdzZGxQcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICB3c2RsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL0ludm9rZVdTRExIdHRwUG9zdE9wZXJhdGlvbkZvcm1BY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvSW52b2tlV1NETEh0dHBQb3N0T3BlcmF0aW9uRm9ybUFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYzJkNDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvSW52b2tlV1NETEh0dHBQb3N0T3BlcmF0aW9uRm9ybUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotICA8JQotICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gIEludm9rZVdTRExIdHRwUG9zdE9wZXJhdGlvbkZvcm1BY3Rpb24gYWN0aW9uID0gbmV3IEludm9rZVdTRExIdHRwUG9zdE9wZXJhdGlvbkZvcm1BY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gIGJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gIGlmIChpbnB1dHNWYWxpZCkKLSAgewotICAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSAgfQotICAlPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHdzZGxQcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICB3c2RsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL0ludm9rZVdTRExTT0FQT3BlcmF0aW9uRm9ybUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9JbnZva2VXU0RMU09BUE9wZXJhdGlvbkZvcm1BY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTIzOWZjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL0ludm9rZVdTRExTT0FQT3BlcmF0aW9uRm9ybUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5NZXNzYWdlUXVldWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMQWN0aW9uSW5wdXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5XU0RMUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnRyYW5zcG9ydC5IVFRQVHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LkhUVFBUcmFuc3BvcnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bi5taXNjLkJBU0U2NERlY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlIiU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLS8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLUludm9rZVdTRExTT0FQT3BlcmF0aW9uRm9ybUFjdGlvbiBhY3Rpb24gPSBuZXcgSW52b2tlV1NETFNPQVBPcGVyYXRpb25Gb3JtQWN0aW9uKGNvbnRyb2xsZXIpOwotU3RyaW5nIGh0dHBCYXNpY0F1dGhEYXRhID0gcmVxdWVzdC5nZXRIZWFkZXIoSFRUUFRyYW5zcG9ydC5IVFRQX0hFQURFUl9BVVRIKTsKLWlmIChodHRwQmFzaWNBdXRoRGF0YSAhPSBudWxsICYmIGh0dHBCYXNpY0F1dGhEYXRhLmxlbmd0aCgpID4gMCkKLXsKLSAgaW50IGJhc2ljSW5kZXggPSBodHRwQmFzaWNBdXRoRGF0YS5pbmRleE9mKEhUVFBUcmFuc3BvcnQuQkFTSUMpOwotICBpZiAoYmFzaWNJbmRleCAhPSAtMSkKLSAgewotICAgIEJBU0U2NERlY29kZXIgZGVjb2RlciA9IG5ldyBCQVNFNjREZWNvZGVyKCk7Ci0gICAgaHR0cEJhc2ljQXV0aERhdGEgPSBuZXcgU3RyaW5nKGRlY29kZXIuZGVjb2RlQnVmZmVyKGh0dHBCYXNpY0F1dGhEYXRhLnN1YnN0cmluZyhiYXNpY0luZGV4ICsgSFRUUFRyYW5zcG9ydC5CQVNJQy5sZW5ndGgoKSArIDEpKSk7Ci0gICAgaW50IGNvbG9uSW5kZXggPSBodHRwQmFzaWNBdXRoRGF0YS5pbmRleE9mKEhUVFBUcmFuc3BvcnQuQ09MT04pOwotICAgIGlmIChjb2xvbkluZGV4ICE9IC0xKQotICAgIHsKLSAgICAgIGFjdGlvbi5hZGRQcm9wZXJ0eShXU0RMQWN0aW9uSW5wdXRzLkhUVFBfQkFTSUNfQVVUSF9VU0VSTkFNRSwgaHR0cEJhc2ljQXV0aERhdGEuc3Vic3RyaW5nKDAsIGNvbG9uSW5kZXgpKTsKLSAgICAgIGFjdGlvbi5hZGRQcm9wZXJ0eShXU0RMQWN0aW9uSW5wdXRzLkhUVFBfQkFTSUNfQVVUSF9QQVNTV09SRCwgaHR0cEJhc2ljQXV0aERhdGEuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxLCBodHRwQmFzaWNBdXRoRGF0YS5sZW5ndGgoKSkpOwotICAgIH0KLSAgfQotfQotCi0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotaWYgKCFpbnB1dHNWYWxpZCkKLXsKLSU+Ci0gIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci0gICAgPGhlYWQ+Ci0gICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPjwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgIHdzZGxQcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgICB3c2RsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+Ci0gIDwvaHRtbD4KLTwlCi19Ci1lbHNlCi17Ci0gIHRyeQotICB7Ci0gICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotJT4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci0gICAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPjwvc2NyaXB0PgotICAgICAgPC9oZWFkPgotICAgICAgPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLSAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgICAgd3NkbFByb3BlcnRpZXNDb250YWluZXIubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfcHJvcGVydGllc19jb250YWluZXIuanNwIikpJT4iOwotICAgICAgICAgIDwlCi0gICAgICAgICAgaWYgKGFjdGlvblJlc3VsdCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgJT4KLSAgICAgICAgICAgIHdzZGxTdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3Jlc3VsdF9jb250ZW50LmpzcCIpKSU+IjsKLSAgICAgICAgICA8JQotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICU+Ci0gICAgICAgICAgICB3c2RsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICAgICAgPCUKLSAgICAgICAgICB9Ci0gICAgICAgICAgJT4KLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgICA8L2JvZHk+Ci0gICAgPC9odG1sPgotPCUKLSAgfQotICBjYXRjaCAoSFRUUFRyYW5zcG9ydEV4Y2VwdGlvbiBodHRwZSkKLSAgewotICAgIGludCBjb2RlID0gaHR0cGUuZ2V0U3RhdHVzQ29kZSgpOwotICAgIGlmIChjb2RlID09IEh0dHBTZXJ2bGV0UmVzcG9uc2UuU0NfVU5BVVRIT1JJWkVEKQotICAgIHsKLSAgICAgIHJlc3BvbnNlLnNldFN0YXR1cyhjb2RlKTsKLSAgICAgIHJlc3BvbnNlLnNldEhlYWRlcihIVFRQVHJhbnNwb3J0LkhUVFBfSEVBREVSX0NPTlRFTlRfTEVOR1RILCBTdHJpbmcudmFsdWVPZigwKSk7Ci0gICAgICBTdHJpbmcgd3d3QXV0aERhdGEgPSBodHRwZS5nZXRIZWFkZXIoSFRUUFRyYW5zcG9ydC5IVFRQX0hFQURFUl9XV1dfQVVUSC50b0xvd2VyQ2FzZSgpKTsKLSAgICAgIGlmICh3d3dBdXRoRGF0YSA9PSBudWxsKQotICAgICAgICB3d3dBdXRoRGF0YSA9IGh0dHBlLmdldEhlYWRlcihIVFRQVHJhbnNwb3J0LkhUVFBfSEVBREVSX1dXV19BVVRIKTsKLSAgICAgIGlmICh3d3dBdXRoRGF0YSA9PSBudWxsKQotICAgICAgICB3d3dBdXRoRGF0YSA9IEhUVFBUcmFuc3BvcnQuQkFTSUM7Ci0gICAgICByZXNwb25zZS5zZXRIZWFkZXIoSFRUUFRyYW5zcG9ydC5IVFRQX0hFQURFUl9XV1dfQVVUSCwgd3d3QXV0aERhdGEpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlID0gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2VRdWV1ZSgpOwotICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKFN0cmluZy52YWx1ZU9mKGNvZGUpKTsKLSAgICAgIG1lc3NhZ2VRdWV1ZS5hZGRNZXNzYWdlKGh0dHBlLmdldE1lc3NhZ2UoKSk7Ci0gICAgICAlPgotICAgICAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotICAgICAgICAgIDxoZWFkPgotICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgICAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij48L3NjcmlwdD4KLSAgICAgICAgICA8L2hlYWQ+Ci0gICAgICAgICAgPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLSAgICAgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgICB3c2RsUHJvcGVydGllc0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLSAgICAgICAgICAgICAgd3NkbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgICAgPC9ib2R5PgotICAgICAgICA8L2h0bWw+Ci0gICAgICA8JQotICAgIH0KLSAgfQotfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL0ludm9rZVdTRExTT0FQT3BlcmF0aW9uU291cmNlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL0ludm9rZVdTRExTT0FQT3BlcmF0aW9uU291cmNlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFjYzllOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9JbnZva2VXU0RMU09BUE9wZXJhdGlvblNvdXJjZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MTMgICAxNzY0OTMgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRTogTWFrZSBtZXNzYWdlL3RyYW5zcG9ydCBzdGFjayBwbHVnZ2FibGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLldTRExBY3Rpb25JbnB1dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnRyYW5zcG9ydC5IVFRQVHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LkhUVFBUcmFuc3BvcnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bi5taXNjLkJBU0U2NERlY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC53c2RsLioiJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotSW52b2tlV1NETFNPQVBPcGVyYXRpb25Tb3VyY2VBY3Rpb24gYWN0aW9uID0gbmV3IEludm9rZVdTRExTT0FQT3BlcmF0aW9uU291cmNlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWJvb2xlYW4gaW5wdXRzVmFsaWQgPSBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotICAKLWlmIChhY3Rpb24ud2FzU2F2ZUFzU2VsZWN0ZWQoKSkKLXsKLSAgLy8gd3JpdGUgdG8gZmlsZSBzeXN0ZW0KLSAgcmVzcG9uc2Uuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwotICByZXNwb25zZS5zZXRIZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb24iLCJhdHRhY2htZW50O2ZpbGVuYW1lPSIrYWN0aW9uLmdldERlZmF1bHRTYXZlQXNGaWxlTmFtZSgpKTsKLSAgYWN0aW9uLndyaXRlU291cmNlQ29udGVudChyZXNwb25zZS5nZXRPdXRwdXRTdHJlYW0oKSk7ICAgIAotfQotZWxzZQotewotICBpZiAoIWlucHV0c1ZhbGlkKQotICB7Ci0gICU+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL3NjcmlwdHMvd3NkbHBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotICAgICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij48L3NjcmlwdD4KLSAgICAgIDwvaGVhZD4KLSAgICAgIDxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci0gICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgIHdzZGxQcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgICAgIHdzZGxTdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgICA8L2JvZHk+Ci0gICAgPC9odG1sPgotICA8JQotICB9Ci0gIGVsc2UKLSAgewotICAgIGlmIChhY3Rpb24ud2FzTmV3RmlsZVNlbGVjdGVkKCkpCi0gICAgeyAgICAgCi0gICU+Ci0gICAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgICAgPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLSAgICAgICAgPGhlYWQ+Ci0gICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+PC9zY3JpcHQ+Ci0gICAgICAgIDwvaGVhZD4KLSAgICAgICAgPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLSAgICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIHdzZGxQcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgICAgICAgd3NkbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgICAgIDwvc2NyaXB0PgotICAgICAgICA8L2JvZHk+Ci0gICAgICA8L2h0bWw+Ci0gICAgPCUgICAgCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBTdHJpbmcgaHR0cEJhc2ljQXV0aERhdGEgPSByZXF1ZXN0LmdldEhlYWRlcihIVFRQVHJhbnNwb3J0LkhUVFBfSEVBREVSX0FVVEgpOwotICAgICAgaWYgKGh0dHBCYXNpY0F1dGhEYXRhICE9IG51bGwgJiYgaHR0cEJhc2ljQXV0aERhdGEubGVuZ3RoKCkgPiAwKQotICAgICAgewotICAgICAgICBpbnQgYmFzaWNJbmRleCA9IGh0dHBCYXNpY0F1dGhEYXRhLmluZGV4T2YoSFRUUFRyYW5zcG9ydC5CQVNJQyk7Ci0gICAgICAgIGlmIChiYXNpY0luZGV4ICE9IC0xKQotICAgICAgICB7Ci0gICAgICAgICAgQkFTRTY0RGVjb2RlciBkZWNvZGVyID0gbmV3IEJBU0U2NERlY29kZXIoKTsKLSAgICAgICAgICBodHRwQmFzaWNBdXRoRGF0YSA9IG5ldyBTdHJpbmcoZGVjb2Rlci5kZWNvZGVCdWZmZXIoaHR0cEJhc2ljQXV0aERhdGEuc3Vic3RyaW5nKGJhc2ljSW5kZXggKyBIVFRQVHJhbnNwb3J0LkJBU0lDLmxlbmd0aCgpICsgMSkpKTsKLSAgICAgICAgICBpbnQgY29sb25JbmRleCA9IGh0dHBCYXNpY0F1dGhEYXRhLmluZGV4T2YoSFRUUFRyYW5zcG9ydC5DT0xPTik7Ci0gICAgICAgICAgaWYgKGNvbG9uSW5kZXggIT0gLTEpCi0gICAgICAgICAgewotICAgICAgICAgICAgYWN0aW9uLmFkZFByb3BlcnR5KFdTRExBY3Rpb25JbnB1dHMuSFRUUF9CQVNJQ19BVVRIX1VTRVJOQU1FLCBodHRwQmFzaWNBdXRoRGF0YS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCkpOwotICAgICAgICAgICAgYWN0aW9uLmFkZFByb3BlcnR5KFdTRExBY3Rpb25JbnB1dHMuSFRUUF9CQVNJQ19BVVRIX1BBU1NXT1JELCBodHRwQmFzaWNBdXRoRGF0YS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEsIGh0dHBCYXNpY0F1dGhEYXRhLmxlbmd0aCgpKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICAgICAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSAgICAlPgotICAgICAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgICAgICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotICAgICAgICAgIDxoZWFkPgotICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgICAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij48L3NjcmlwdD4KLSAgICAgICAgICA8L2hlYWQ+Ci0gICAgICAgICAgPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLSAgICAgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgICB3c2RsUHJvcGVydGllc0NvbnRhaW5lci5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiKSklPiI7Ci0gICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgIGlmIChhY3Rpb25SZXN1bHQpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICB3c2RsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9yZXN1bHRfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgICAgd3NkbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICA8L3NjcmlwdD4KLSAgICAgICAgICA8L2JvZHk+Ci0gICAgICAgIDwvaHRtbD4KLTwlCi0gICAgICB9Ci0gICAgICBjYXRjaCAoSFRUUFRyYW5zcG9ydEV4Y2VwdGlvbiBodHRwZSkKLSAgICAgIHsKLSAgICAgICAgaW50IGNvZGUgPSBodHRwZS5nZXRTdGF0dXNDb2RlKCk7Ci0gICAgICAgIGlmIChjb2RlID09IEh0dHBTZXJ2bGV0UmVzcG9uc2UuU0NfVU5BVVRIT1JJWkVEKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzcG9uc2Uuc2V0U3RhdHVzKGNvZGUpOwotICAgICAgICAgIHJlc3BvbnNlLnNldEhlYWRlcihIVFRQVHJhbnNwb3J0LkhUVFBfSEVBREVSX0NPTlRFTlRfTEVOR1RILCBTdHJpbmcudmFsdWVPZigwKSk7Ci0gICAgICAgICAgU3RyaW5nIHd3d0F1dGhEYXRhID0gaHR0cGUuZ2V0SGVhZGVyKEhUVFBUcmFuc3BvcnQuSFRUUF9IRUFERVJfV1dXX0FVVEgudG9Mb3dlckNhc2UoKSk7Ci0gICAgICAgICAgaWYgKHd3d0F1dGhEYXRhID09IG51bGwpCi0gICAgICAgICAgICB3d3dBdXRoRGF0YSA9IGh0dHBlLmdldEhlYWRlcihIVFRQVHJhbnNwb3J0LkhUVFBfSEVBREVSX1dXV19BVVRIKTsKLSAgICAgICAgICBpZiAod3d3QXV0aERhdGEgPT0gbnVsbCkKLSAgICAgICAgICAgIHd3d0F1dGhEYXRhID0gSFRUUFRyYW5zcG9ydC5CQVNJQzsKLSAgICAgICAgICByZXNwb25zZS5zZXRIZWFkZXIoSFRUUFRyYW5zcG9ydC5IVFRQX0hFQURFUl9XV1dfQVVUSCwgd3d3QXV0aERhdGEpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgICAgICAgIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoY29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfRVJST1JfVU5FWFBFQ1RFRCIpKTsKLSAgICAgICAgICBtZXNzYWdlUXVldWUuYWRkTWVzc2FnZShTdHJpbmcudmFsdWVPZihjb2RlKSk7Ci0gICAgICAgICAgbWVzc2FnZVF1ZXVlLmFkZE1lc3NhZ2UoaHR0cGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICAlPgotICAgICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICAgICAgPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLSAgICAgICAgICAgIDxoZWFkPgotICAgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgICAgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+PC9zY3JpcHQ+Ci0gICAgICAgICAgICA8L2hlYWQ+Ci0gICAgICAgICAgICA8Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotICAgICAgICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgICAgICB3c2RsUHJvcGVydGllc0NvbnRhaW5lci5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiKSklPiI7Ci0gICAgICAgICAgICAgICAgd3NkbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgICAgICAgICA8L3NjcmlwdD4KLSAgICAgICAgICAgIDwvYm9keT4KLSAgICAgICAgICA8L2h0bWw+Ci0gICAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL09wZW5XU0RMQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL09wZW5XU0RMQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJmZTI1NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9PcGVuV1NETEFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLldTRExGcmFtZU5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkZyYW1lTmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuT3BlbldTRExBY3Rpb24iJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci0gIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgT3BlbldTRExBY3Rpb24gYWN0aW9uID0gbmV3IE9wZW5XU0RMQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICBib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSAgaWYgKCFpbnB1dHNWYWxpZCkgewotJT4KLSAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgd3NkbFByb3BlcnRpZXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgd3NkbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICA8L3NjcmlwdD4KLTwlCi0gIH0KLSAgZWxzZSB7Ci0gICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotJT4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBpZiAoaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKCkpIHsKLSAgICAgIHdzZGxOYXZpZ2F0b3JDb250ZW50LmxvY2F0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9uYXZpZ2F0b3JfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICB3c2RsUHJvcGVydGllc0NvbnRhaW5lci5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiKSklPiI7Ci0gICAgICB3c2RsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcGVyc3BlY3RpdmVDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwIikpJT4iOwotICAgIH0KLSAgICA8L3NjcmlwdD4KLTwlCi0gIH0KLSU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9SZWZyZXNoV1NETEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9SZWZyZXNoV1NETEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4YmVhNTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvUmVmcmVzaFdTRExBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuUmVmcmVzaFdTRExBY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuQ2xlYXJXU0RMQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS5XU0RMUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08JQotaWYgKGNvbnRyb2xsZXIuZ2V0U2Vzc2lvbklkKCkgPT0gbnVsbCkgewotJT4KLQotIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotCSAgICB2YXIgcGVyc3BlY3RpdmVDb250ZW50ID0gdG9wLmZyYW1lc1siPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9DT05URU5UJT4iXTsKLQkJcGVyc3BlY3RpdmVDb250ZW50LmxvY2F0aW9uID0gImh0dHA6Ly88JT1yZXF1ZXN0LmdldFNlcnZlck5hbWUoKSU+OjwlPXJlcXVlc3QuZ2V0U2VydmVyUG9ydCgpJT48JT1yZXF1ZXN0LmdldENvbnRleHRQYXRoKCklPi9hY3Rpb25zL1Nlc3Npb25UaW1lZE91dC5qc3AiOwotIDwvc2NyaXB0PgotPCUKLX0KLWVsc2UgewotJT4JCi0KLSA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotIDwvc2NyaXB0PgotIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gPCUKLSAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICBSZWZyZXNoV1NETEFjdGlvbiBhY3Rpb24gPSBuZXcgUmVmcmVzaFdTRExBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgLy8gVGhlIGFjdGlvbiBtYXkgYmUgZXhlY3V0ZWQgdmlhIHByb2dyYW0gbGluay4KLSAgYm9vbGVhbiBwYXJhbXNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0gIGlmIChwYXJhbXNWYWxpZCkgewotICAgIGludCBub2RlSUQgPSBJbnRlZ2VyLnBhcnNlSW50KChTdHJpbmcpYWN0aW9uLmdldFByb3BlcnR5VGFibGUoKS5nZXQoQWN0aW9uSW5wdXRzLk5PREVJRCkpOwotICAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSB3c2RsTm9kZSA9IG5vZGVNYW5hZ2VyLmdldE5vZGUobm9kZUlEKTsKLSAgCi0gICAgLy8gUnVuIHRoZSBhY3Rpb24uCi0gICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotICAKLSAgICBpZiAoYWN0aW9uUmVzdWx0KSB7Ci0gCSU+Ci0JIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIAlpZiAoaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKCkpIHsKLSAgICAgIAl3c2RsTmF2aWdhdG9yQ29udGVudC5sb2NhdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfbmF2aWdhdG9yX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgCXdzZGxQcm9wZXJ0aWVzQ29udGFpbmVyLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCIpKSU+IjsKLSAgICAgIAl3c2RsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgCX0KLSAgICAJZWxzZSB7Ci0gICAgICAJcGVyc3BlY3RpdmVDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwIikpJT4iOwotICAgIAl9Ci0gIAk8L3NjcmlwdD4KLSAgIDwlCi0gICB9Ci0gICBlbHNlIHsKLSAgICU+Ci0gICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgCWlmIChjb25maXJtKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUod3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19RVUVTVElPTl9SRU1PVkVfV1NETF9OT0RFIiwgd3NkbE5vZGUuZ2V0Tm9kZU5hbWUoKSkpJT4iKSkKLSAgICAgIAlwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChDbGVhcldTRExBY3Rpb24uZ2V0QWN0aW9uTGluayhub2RlSUQpKSklPiI7Ci0gICAgCWVsc2UgewotICAgICAgCXdzZGxQcm9wZXJ0aWVzQ29udGFpbmVyLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCIpKSU+IjsKLSAgICAgIAl3c2RsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgCX0KLSAgCTwvc2NyaXB0PgotICAgPCUKLSAgfQotIH0KLSU+Ci08JQotfQotJT4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9SZXNpemVXU0RMRnJhbWVzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1Jlc2l6ZVdTRExGcmFtZXNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTc2NDcyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1Jlc2l6ZVdTRExGcmFtZXNBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgLy8gQ3JlYXRlIHRoZSBhY3Rpb24uCi0gICBSZXNpemVXU0RMRnJhbWVzQWN0aW9uIGFjdGlvbiA9IG5ldyBSZXNpemVXU0RMRnJhbWVzQWN0aW9uKGNvbnRyb2xsZXIpOwotICAgCi0gICAvLyBQb3B1bGF0ZSB0aGUgYWN0aW9uIHdpdGggdGhlIHJlcXVlc3QgcHJvcGVydGllcy4KLSAgIGJvb2xlYW4gcmVzdWx0ID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxmcmFtZXNldHMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0gICBpZiAocmVzdWx0KQotICAgewotICAgICBhY3Rpb24uZXhlY3V0ZShmYWxzZSk7Ci0gICAgIAotICAgICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgaWYgKGlzTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcigpKQotICB7Ci0gICAgdmFyIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0ID0gZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXQoKTsKLSAgICB2YXIgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0ID0gZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0KCk7ICAKLSAgICBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldC5zZXRBdHRyaWJ1dGUoImNvbHMiLCI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCklPiIpOwotICAgIGFjdGlvbnNDb250YWluZXJGcmFtZXNldC5zZXRBdHRyaWJ1dGUoInJvd3MiLCI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpJT4iKTsKLSAgfQotICBlbHNlCi0gICAgcGVyc3BlY3RpdmVDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci08JQotICAgfQotJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1NlbGVjdFdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1NlbGVjdFdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNkNDRhNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9TZWxlY3RXU0RMTmF2aWdhdG9yTm9kZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuU2VsZWN0V1NETE5hdmlnYXRvck5vZGVBY3Rpb24iICU+Ci08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi1pZiAoY29udHJvbGxlci5nZXRTZXNzaW9uSWQoKSA9PSBudWxsKSB7Ci0lPgotCi0gPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0JICAgIHZhciBwZXJzcGVjdGl2ZUNvbnRlbnQgPSB0b3AuZnJhbWVzWyI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX0NPTlRFTlQlPiJdOwotCQlwZXJzcGVjdGl2ZUNvbnRlbnQubG9jYXRpb24gPSAiaHR0cDovLzwlPXJlcXVlc3QuZ2V0U2VydmVyTmFtZSgpJT46PCU9cmVxdWVzdC5nZXRTZXJ2ZXJQb3J0KCklPjwlPXJlcXVlc3QuZ2V0Q29udGV4dFBhdGgoKSU+L2FjdGlvbnMvU2Vzc2lvblRpbWVkT3V0LmpzcCI7Ci0gPC9zY3JpcHQ+Ci08JQotfQotZWxzZSB7Ci0lPgotPCUKLS8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLVNlbGVjdFdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uIGFjdGlvbiA9IG5ldyBTZWxlY3RXU0RMTmF2aWdhdG9yTm9kZUFjdGlvbihjb250cm9sbGVyKTsKLQotLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi1hY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0vLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLWJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLQotLy8gRGV0ZXJtaW5lIGlmIHRoZSBhY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuCi1ib29sZWFuIGlzQWRkZWRUb0hpc3RvcnkgPSBhY3Rpb24uaXNBZGRlZFRvSGlzdG9yeSgpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9hY3Rpb25zL1NlbGVjdE5vZGVBY3Rpb24uaW5jIiAlPgotPCUKLX0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9TZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ3NjQxNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9TZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLlNlbGVjdFdTRExQcm9wZXJ0aWVzVG9vbEFjdGlvbiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotU2VsZWN0V1NETFByb3BlcnRpZXNUb29sQWN0aW9uIGFjdGlvbiA9IG5ldyBTZWxlY3RXU0RMUHJvcGVydGllc1Rvb2xBY3Rpb24oY29udHJvbGxlcik7Ci0KLS8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi1ib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKCk7Ci0KLS8vIERldGVybWluZSBpZiB0aGUgYWN0aW9uIHdhcyBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LgotYm9vbGVhbiBpc0FkZGVkVG9IaXN0b3J5ID0gYWN0aW9uLmlzQWRkZWRUb0hpc3RvcnkoKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9TZWxlY3ROb2RlVG9vbEFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21XU0RMQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1N3aXRjaFBlcnNwZWN0aXZlRnJvbVdTRExBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDFjNzY2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1N3aXRjaFBlcnNwZWN0aXZlRnJvbVdTRExBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLS8vIFByZXBhcmUgdGhlIGFjdGlvbgotU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NETEFjdGlvbiBhY3Rpb24gPSBuZXcgU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NETEFjdGlvbihjb250cm9sbGVyKTsKLSAgIAotLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi1hY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotICAgCi0vLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLWJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSAgIAotLy8gRGV0ZXJtaW5lIGlmIHRoZSBhY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuCi1ib29sZWFuIGlzQWRkZWRUb0hpc3RvcnkgPSBhY3Rpb24uaXNBZGRlZFRvSGlzdG9yeSgpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9zd2l0Y2hwZXJzcGVjdGl2ZS5qc3AiIGZsdXNoPSJ0cnVlIi8+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9Td2l0Y2hSZWFkT25seUZyYWdtZW50Vmlld3NBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvU3dpdGNoUmVhZE9ubHlGcmFnbWVudFZpZXdzQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZkNzY5Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9Td2l0Y2hSZWFkT25seUZyYWdtZW50Vmlld3NBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuRnJhbWVOYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMRnJhbWVOYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZSIlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLWlmICh3c2RsUGVyc3BlY3RpdmUuZ2V0U3RhdHVzQ29udGVudFR5cGUoKSA9PSBXU0RMUGVyc3BlY3RpdmUuU1RBVFVTX0NPTlRFTlRfUkVTVUxUX0ZPUk0pCi0gIHdzZGxQZXJzcGVjdGl2ZS5zZXRTdGF0dXNDb250ZW50VHlwZShXU0RMUGVyc3BlY3RpdmUuU1RBVFVTX0NPTlRFTlRfUkVTVUxUX1NPVVJDRSk7Ci1lbHNlCi0gIHdzZGxQZXJzcGVjdGl2ZS5zZXRTdGF0dXNDb250ZW50VHlwZShXU0RMUGVyc3BlY3RpdmUuU1RBVFVTX0NPTlRFTlRfUkVTVUxUX0ZPUk0pOwotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICB3c2RsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9yZXN1bHRfY29udGVudC5qc3AiKSklPiI7Ci08L3NjcmlwdD4KLQotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvU3dpdGNoV1NETERldGFpbHNWaWV3c0FjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9Td2l0Y2hXU0RMRGV0YWlsc1ZpZXdzQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE3YWRmOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9Td2l0Y2hXU0RMRGV0YWlsc1ZpZXdzQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkZyYW1lTmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMRnJhbWVOYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExEZXRhaWxzVG9vbCIlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgd3NkbE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKTsKLVdTRExEZXRhaWxzVG9vbCB3c2RsRGV0YWlsc1Rvb2wgPSAoV1NETERldGFpbHNUb29sKXdzZGxOb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci13c2RsRGV0YWlsc1Rvb2wudG9nZ2xlVmlld0lkKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHdzZGxQcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9TeW5jaHJvbml6ZUZyYWdtZW50Vmlld3NBY3Rpb25BYm9ydEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9TeW5jaHJvbml6ZUZyYWdtZW50Vmlld3NBY3Rpb25BYm9ydEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZTJkODkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvU3luY2hyb25pemVGcmFnbWVudFZpZXdzQWN0aW9uQWJvcnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuRnJhbWVOYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMRnJhbWVOYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5GcmFnbWVudENvbnN0YW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLkludm9rZVdTRExPcGVyYXRpb25Ub29sIiU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL3NjcmlwdHMvd3NkbHBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLQotPCUKLUludm9rZVdTRExPcGVyYXRpb25Ub29sIGludm9rZVdTRExPcGVyYXRpb25Ub29sID0gKEludm9rZVdTRExPcGVyYXRpb25Ub29sKWNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKTsKLWlmIChpbnZva2VXU0RMT3BlcmF0aW9uVG9vbC5nZXRGcmFnbWVudFZpZXdJRCgpLmVxdWFscyhGcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9WSUVXX1NXSVRDSF9TT1VSQ0VfVE9fRk9STSkpCi0gIGludm9rZVdTRExPcGVyYXRpb25Ub29sLnNldEZyYWdtZW50Vmlld0lEKEZyYWdtZW50Q29uc3RhbnRzLkZSQUdNRU5UX1ZJRVdfU1dJVENIX0ZPUk1fVE9fU09VUkNFKTsKLWVsc2UKLSAgaW52b2tlV1NETE9wZXJhdGlvblRvb2wuc2V0RnJhZ21lbnRWaWV3SUQoRnJhZ21lbnRDb25zdGFudHMuRlJBR01FTlRfVklFV19TV0lUQ0hfU09VUkNFX1RPX0ZPUk0pOwotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICB3c2RsUHJvcGVydGllc0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLTwvc2NyaXB0PgotCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9TeW5jaHJvbml6ZUZyYWdtZW50Vmlld3NBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvU3luY2hyb25pemVGcmFnbWVudFZpZXdzQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ1YWMxYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9TeW5jaHJvbml6ZUZyYWdtZW50Vmlld3NBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuRnJhbWVOYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLldTRExGcmFtZU5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuRnJhZ21lbnRDb25zdGFudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuU3luY2hyb25pemVGcmFnbWVudFZpZXdzQWN0aW9uIiU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL3NjcmlwdHMvd3NkbHBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLQotPCUKLVN5bmNocm9uaXplRnJhZ21lbnRWaWV3c0FjdGlvbiBhY3Rpb24gPSBuZXcgU3luY2hyb25pemVGcmFnbWVudFZpZXdzQWN0aW9uKGNvbnRyb2xsZXIpOwotYm9vbGVhbiBwYXJhbVZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLVN0cmluZyB2aWV3SUQgPSAoU3RyaW5nKWFjdGlvbi5nZXRQcm9wZXJ0eVRhYmxlKCkuZ2V0KEZyYWdtZW50Q29uc3RhbnRzLkZSQUdNRU5UX1ZJRVdfSUQpOwotYm9vbGVhbiBzb3VyY2VUb0Zvcm0gPSB2aWV3SUQuZXF1YWxzKEZyYWdtZW50Q29uc3RhbnRzLkZSQUdNRU5UX1ZJRVdfU1dJVENIX1NPVVJDRV9UT19GT1JNKTsKLWlmIChzb3VyY2VUb0Zvcm0pIHsKLSAgaWYgKHBhcmFtVmFsaWQpIHsKLSU+Ci0gICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICBpZiAoIWNvbmZpcm0oIjwlPWNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZSgiTVNHX1FVRVNUSU9OX1NZTkNfVklFV1MiKSU+IikpCi0gICAgICAgIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL2FjdGlvbnMvU3luY2hyb25pemVGcmFnbWVudFZpZXdzQWN0aW9uQWJvcnRKU1AuanNwIikpJT4iOwotICAgIDwvc2NyaXB0PgotPCUKLSAgfQotICBlbHNlIHsKLSU+Ci0gICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICBpZiAoIWNvbmZpcm0oIjwlPWNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZSgiTVNHX1FVRVNUSU9OX1NZTkNfVklFV1NfREVTUElURV9JTlZBTElEX1NPVVJDRV9DT05URU5UIiklPiIpKQotICAgICAgICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC9hY3Rpb25zL1N5bmNocm9uaXplRnJhZ21lbnRWaWV3c0FjdGlvbkFib3J0SlNQLmpzcCIpKSU+IjsKLSAgICA8L3NjcmlwdD4KLTwlCi0gIH0KLX0KLWFjdGlvbi5leGVjdXRlKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHdzZGxQcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotPC9zY3JpcHQ+Ci0KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1RvZ2dsZVdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1RvZ2dsZVdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU1ODZkMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9Ub2dnbGVXU0RMTmF2aWdhdG9yTm9kZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotVG9nZ2xlV1NETE5hdmlnYXRvck5vZGVBY3Rpb24gYWN0aW9uID0gbmV3IFRvZ2dsZVdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLS8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0vLyBEZXRlcm1pbmUgaWYgdGhlIGFjdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4KLWJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSA9IGFjdGlvbi5pc0FkZGVkVG9IaXN0b3J5KCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvVG9nZ2xlTm9kZUFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9VcGRhdGVXU0RMQmluZGluZ0FjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9VcGRhdGVXU0RMQmluZGluZ0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2MTZjMjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvVXBkYXRlV1NETEJpbmRpbmdBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy5XU0RMRnJhbWVOYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5GcmFtZU5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLlVwZGF0ZVdTRExCaW5kaW5nQWN0aW9uIiU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLWlmIChjb250cm9sbGVyLmdldFNlc3Npb25JZCgpID09IG51bGwpIHsKLSU+Ci0KLSA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLQkgICAgdmFyIHBlcnNwZWN0aXZlQ29udGVudCA9IHRvcC5mcmFtZXNbIjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfQ09OVEVOVCU+Il07Ci0JCXBlcnNwZWN0aXZlQ29udGVudC5sb2NhdGlvbiA9ICJodHRwOi8vPCU9cmVxdWVzdC5nZXRTZXJ2ZXJOYW1lKCklPjo8JT1yZXF1ZXN0LmdldFNlcnZlclBvcnQoKSU+PCU9cmVxdWVzdC5nZXRDb250ZXh0UGF0aCgpJT4vYWN0aW9ucy9TZXNzaW9uVGltZWRPdXQuanNwIjsKLSA8L3NjcmlwdD4KLTwlCi19Ci1lbHNlIHsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgVXBkYXRlV1NETEJpbmRpbmdBY3Rpb24gYWN0aW9uID0gbmV3IFVwZGF0ZVdTRExCaW5kaW5nQWN0aW9uKGNvbnRyb2xsZXIpOwotICBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotICBhY3Rpb24uZXhlY3V0ZSgpOwotJT4KLSAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgd3NkbFByb3BlcnRpZXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgd3NkbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICA8L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KLTwlCi19Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvV1NETEFkZFRvRmF2b3JpdGVzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1dTRExBZGRUb0Zhdm9yaXRlc0FjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMDY1MmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvV1NETEFkZFRvRmF2b3JpdGVzQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLldTRExBZGRUb0Zhdm9yaXRlc0FjdGlvbiIlPgotCi0KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxwYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi1XU0RMQWRkVG9GYXZvcml0ZXNBY3Rpb24gYWN0aW9uID0gbmV3IFdTRExBZGRUb0Zhdm9yaXRlc0FjdGlvbihjb250cm9sbGVyKTsKLQotLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi1hY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0vLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLWJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgd3NkbFByb3BlcnRpZXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiI7Ci0gIHdzZGxTdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC93c2RsX3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvV1NETENoZWNrRmF2b3JpdGVFeGlzdHNBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvV1NETENoZWNrRmF2b3JpdGVFeGlzdHNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGY0ODAwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1dTRExDaGVja0Zhdm9yaXRlRXhpc3RzQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLQotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL3NjcmlwdHMvd3NkbHBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC9hY3Rpb25zL1dTRExBZGRUb0Zhdm9yaXRlc0FjdGlvbkpTUC5qc3AiKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+Ci08JQotRW51bWVyYXRpb24gcGFyYW1OYW1lcyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyTmFtZXMoKTsKLXdoaWxlIChwYXJhbU5hbWVzLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gIFN0cmluZyBwYXJhbU5hbWUgPSAoU3RyaW5nKXBhcmFtTmFtZXMubmV4dEVsZW1lbnQoKTsKLSAgU3RyaW5nW10gcGFyYW1WYWx1ZXMgPSByZXF1ZXN0LmdldFBhcmFtZXRlclZhbHVlcyhwYXJhbU5hbWUpOwotICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtVmFsdWVzLmxlbmd0aDsgaSsrKSB7Ci0lPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPXBhcmFtTmFtZSU+IiB2YWx1ZT0iPCU9cGFyYW1WYWx1ZXNbaV0lPiI+Ci08JQotICB9Ci19Ci0lPgotPC9mb3JtPgotPC9ib2R5PgotPC9odG1sPgotCi08JQotLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotV1NETEFkZFRvRmF2b3JpdGVzQWN0aW9uIGFjdGlvbiA9IG5ldyBXU0RMQWRkVG9GYXZvcml0ZXNBY3Rpb24oY29udHJvbGxlcik7Ci0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci1pZiAoYWN0aW9uLmZhdm9yaXRlRXhpc3RzKCkpIHsKLSU+Ci0gIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIGlmIChjb25maXJtKCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlKCJNU0dfUVVFU1RJT05fT1ZFUldSSVRFX0ZBVk9SSVRFUyIpKSU+IikpCi0gICAgICBkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsKLSAgPC9zY3JpcHQ+Ci08JQotfQotZWxzZSB7Ci0lPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsKLSAgPC9zY3JpcHQ+Ci08JQotfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1dTRExJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9hY3Rpb25zL1dTRExJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRmMDJkYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9XU0RMSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy5XU0RMSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmlvLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLS8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLVdTRExJbXBvcnRXU0RMVG9GaWxlU3lzdGVtQWN0aW9uIGFjdGlvbiA9IG5ldyBXU0RMSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbihjb250cm9sbGVyKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9JbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uaW5jIiAlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9XU0RMSW1wb3J0V1NETFRvV29ya2JlbmNoQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAyMzgyZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9XU0RMSW1wb3J0V1NETFRvV29ya2JlbmNoQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLldTRExJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbiBhY3Rpb24gPSBuZXcgV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbihjb250cm9sbGVyKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9JbXBvcnRUb1dvcmtiZW5jaEFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9XU0RMTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvYWN0aW9ucy9XU0RMTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmODc2MGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2FjdGlvbnMvV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb24iICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLVdTRExMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uIGFjdGlvbiA9IG5ldyBXU0RMTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbihjb250cm9sbGVyKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL0ZyYWdtZW50c0Zvcm1WaWV3LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9GcmFnbWVudHNGb3JtVmlldy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmYWY0MjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL0ZyYWdtZW50c0Zvcm1WaWV3LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDMwNSAgIDExNzAzNCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHNob3VsZCBzdXBwb3J0IFNPQVAgSGVhZGVycwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwueHNkLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC53c2RsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKTsKLW5vZGVJRC5kZWxldGUoMCwgbm9kZUlELmxlbmd0aCgpKTsKLW5vZGVJRC5hcHBlbmQoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpKTsKLUludm9rZVdTRExPcGVyYXRpb25Ub29sIGludm9rZVdTRExPcGVyYXRpb25Ub29sID0gKEludm9rZVdTRExPcGVyYXRpb25Ub29sKShzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0KLUl0ZXJhdG9yIGl0ID0gb3BlckVsZW1lbnQuZ2V0U09BUEhlYWRlcnMoKS5pdGVyYXRvcigpOwotCi1pZiAoaXQuaGFzTmV4dCgpKSB7Ci0JU3RyaW5nIGhlYWRlckRpdklkID0gIkhlYWRlciI7Ci0JU3RyaW5nIGhlYWRlckltZ0lkID0gInhIZWFkZXIiOwotICAgICU+Ci0JPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLQkgIDx0cj4KLQkgICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT48YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT1oZWFkZXJEaXZJZCU+JywnPCU9aGVhZGVySW1nSWQlPicpIj48aW1nIG5hbWU9IjwlPWhlYWRlckltZ0lkJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RvcGVuZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfT1BFTkVEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+PC90ZD4KLQkgICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj48c3Ryb25nPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0hFQURFUiIpJT48L3N0cm9uZz48L3RkPgotCSAgPC90cj4KLQk8L3RhYmxlPgotCQotCTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0JICA8dHI+Ci0JICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0JICA8L3RyPgotCTwvdGFibGU+Ci0JCi0JPGRpdiBpZD0iPCU9aGVhZGVyRGl2SWQlPiI+Ci0JPCUKLQl3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0JICBTT0FQSGVhZGVyIHNvYXBIZWFkZXIgPSAoU09BUEhlYWRlcikgaXQubmV4dCgpOwotCSAgSVhTREZyYWdtZW50IGZyYWcgPSBvcGVyRWxlbWVudC5nZXRIZWFkZXJGcmFnbWVudChzb2FwSGVhZGVyKTsJICAgCi0JICBmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0JICBmcmFnSUQuYXBwZW5kKGZyYWcuZ2V0SUQoKSk7Ci0JICAlPgotCSAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWZyYWcuZ2V0V3JpdGVGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0JICA8JSAgCi0JfQotCSU+Ci0JPC9kaXY+Ci0gICAgPCUgICAgCi19Ci0KLWJvb2xlYW4gaGFzSW5wdXQgPSBCb29sZWFuLnBhcnNlQm9vbGVhbihyZXF1ZXN0LmdldFBhcmFtZXRlcigiaGFzSW5wdXQiKSk7Ci1TdHJpbmcgYm9keURpdklkID0gIkJvZHkiOwotCi1pZiAoaGFzSW5wdXQpIHsKLQlTdHJpbmcgYm9keUltZ0lkID0gInhCb2R5IjsKLSAgICAlPgotCTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0JICA8dHI+Ci0JICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9Ym9keURpdklkJT4nLCc8JT1ib2R5SW1nSWQlPicpIj48aW1nIG5hbWU9IjwlPWJvZHlJbWdJZCU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+Ci0JICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+PHN0cm9uZz48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9CT0RZIiklPjwvc3Ryb25nPjwvdGQ+Ci0JICA8L3RyPgotCTwvdGFibGU+IAotCQotCTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0JICA8dHI+Ci0JICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0JICA8L3RyPgotCTwvdGFibGU+Ci0gICAgPCUKLX0KLSU+Ci0KLTxkaXYgaWQ9IjwlPWJvZHlEaXZJZCU+IiBjbGFzcz0iZnJhZ2FyZWEiPgotPCUKLWl0ID0gb3BlckVsZW1lbnQuZ2V0T3JkZXJlZEJvZHlQYXJ0cygpLml0ZXJhdG9yKCk7Ci13aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gIFBhcnQgcGFydCA9IChQYXJ0KWl0Lm5leHQoKTsKLSAgSVhTREZyYWdtZW50IGZyYWcgPSBvcGVyRWxlbWVudC5nZXRGcmFnbWVudChwYXJ0KTsKLSAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICBmcmFnSUQuYXBwZW5kKGZyYWcuZ2V0SUQoKSk7Ci0gICU+Ci0gIDxqc3A6aW5jbHVkZSBwYWdlPSI8JT1mcmFnLmdldFdyaXRlRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICA8JQotfQotJT4KLTwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9GcmFnbWVudHNTb2FwVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvRnJhZ21lbnRzU29hcFZpZXcuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWVlZTg2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9GcmFnbWVudHNTb2FwVmlldy5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzNzYgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjIgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqIDIwMDYwNzI2ICAgMTQ0ODI0IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbgotICogMjAwNzAzMDUgICAxMTcwMzQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBzaG91bGQgc3VwcG9ydCBTT0FQIEhlYWRlcnMKLSAqIDIwMDcwNDEzICAgMTc2NDkzIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0U6IE1ha2UgbWVzc2FnZS90cmFuc3BvcnQgc3RhY2sgcGx1Z2dhYmxlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwudXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci50cmFuc3BvcnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy53M2MuZG9tLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmF4LndzZGwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpKHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldFRyZWVFbGVtZW50KCkpOwotICAgSVNPQVBUcmFuc3BvcnQgc29hcFRyYW5zcG9ydCA9IG9wZXJFbGVtZW50LmdldFNPQVBUcmFuc3BvcnRQcm92aWRlcigpLm5ld1RyYW5zcG9ydCgpOwotICAgSVNPQVBNZXNzYWdlIHNvYXBNZXNzYWdlID0gc29hcFRyYW5zcG9ydC5uZXdNZXNzYWdlKG9wZXJFbGVtZW50LmdldE1lc3NhZ2VDb250ZXh0KCkpOwotICAgb3BlckVsZW1lbnQuc2V0UHJvcGVydHlBc09iamVjdChXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT0FQX1JFUVVFU1RfVE1QLCBzb2FwTWVzc2FnZSk7Ci0gICAKLSAgIEhhc2h0YWJsZSBzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSA9IG5ldyBIYXNodGFibGUoc29hcE1lc3NhZ2UuZ2V0TmFtZXNwYWNlVGFibGUoKSk7ICAgICAgCi0gICAKLSAgIFN0cmluZyBjYWNoZWRIZWFkZXJDb250ZW50ID0gb3BlckVsZW1lbnQuZ2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT1VSQ0VfQ09OVEVOVF9IRUFERVIpOwotICAgU3RyaW5nIGNhY2hlZEJvZHlDb250ZW50ID0gb3BlckVsZW1lbnQuZ2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT1VSQ0VfQ09OVEVOVCk7Ci0gICAKLSAgIC8vIGlmIGVpdGhlciBoZWFkZXIgb3IgYm9keSBoYXMgYmVlbiBjYWNoZWQsIG5lZWQgdG8gZW5zdXJlIG5hbWVzcGFjZSB0YWJsZSBpcyB1cGRhdGVkCi0gICAvLyBmcm9tIHRoZSBjYWNoZWQgY29weQotICAgaWYgKGNhY2hlZEhlYWRlckNvbnRlbnQgIT0gbnVsbCB8fCBjYWNoZWRCb2R5Q29udGVudCAhPSBudWxsKSB7Ci0JICAgaWYgKFNPQVBNZXNzYWdlVXRpbHMuZGVjb2RlTmFtZXNwYWNlVGFibGUoc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUsIG9wZXJFbGVtZW50KSkKLQkJICAgc29hcE1lc3NhZ2Uuc2V0TmFtZXNwYWNlVGFibGUoc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUpOwotICAgfQotCSAgICAgICAgICAgIAotICAgU3RyaW5nIGhlYWRlckNvbnRlbnQ7Ci0gICBTdHJpbmcgYm9keUNvbnRlbnQ7Ci0gICAKLSAgIGlmIChjYWNoZWRIZWFkZXJDb250ZW50ICE9IG51bGwpCi0gICAgICAgaGVhZGVyQ29udGVudCA9IGNhY2hlZEhlYWRlckNvbnRlbnQ7Ci0gICBlbHNlIHsKLQkgICB0cnkgewotCSAgICAgICBTT0FQTWVzc2FnZVV0aWxzLnNldEhlYWRlckNvbnRlbnRGcm9tTW9kZWwoc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUsIG9wZXJFbGVtZW50LCBzb2FwTWVzc2FnZSk7Ci0JICAgICAgIAotCSAgICAgICAvLyBlbnN1cmUgbmFtZXNwYWNlIHRhYmxlIHVwZGF0ZWQgaW4gbWVzc2FnZSBiZWZvcmUgc2VyaWFsaXplIG9wZXJhdGlvbgotCSAgICAgICBzb2FwTWVzc2FnZS5zZXROYW1lc3BhY2VUYWJsZShzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSk7Ci0JICAgICAgIGhlYWRlckNvbnRlbnQgPSBzb2FwVHJhbnNwb3J0Lm5ld1NlcmlhbGl6ZXIoKS5zZXJpYWxpemUoSVNPQVBNZXNzYWdlLkhFQURFUl9DT05URU5ULCBzb2FwTWVzc2FnZSk7Ci0JICAgfQotCSAgIGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkgICBoZWFkZXJDb250ZW50ID0gIiI7Ci0JICAgfQotICAgfQotICAgCi0gICBpZiAoY2FjaGVkQm9keUNvbnRlbnQgIT0gbnVsbCkKLQkgICBib2R5Q29udGVudCA9IGNhY2hlZEJvZHlDb250ZW50OwotICAgZWxzZSB7Ci0JICAgdHJ5IHsKLQkgICAgICAgU09BUE1lc3NhZ2VVdGlscy5zZXRCb2R5Q29udGVudEZyb21Nb2RlbChzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZSwgb3BlckVsZW1lbnQsIHNvYXBNZXNzYWdlKTsKLQkgICAgICAgCi0JICAgICAgIC8vIGVuc3VyZSBuYW1lc3BhY2UgdGFibGUgdXBkYXRlZCBpbiBtZXNzYWdlIGJlZm9yZSBzZXJpYWxpemUgb3BlcmF0aW9uCi0JICAgICAgIHNvYXBNZXNzYWdlLnNldE5hbWVzcGFjZVRhYmxlKHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlKTsKLQkgICAgICAgYm9keUNvbnRlbnQgPSBzb2FwVHJhbnNwb3J0Lm5ld1NlcmlhbGl6ZXIoKS5zZXJpYWxpemUoSVNPQVBNZXNzYWdlLkJPRFlfQ09OVEVOVCwgc29hcE1lc3NhZ2UpOwotCSAgIH0KLQkgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJICAgYm9keUNvbnRlbnQgPSAiIjsKLQkgICB9Ci0gICB9ICAgICAgCi0gICAKLSAgIC8vIGNhY2hlIHRoZSBuYW1lc3BhY2UgdGFibGUKLSAgIEVudW1lcmF0aW9uIGVubSA9IHNvYXBFbnZlbG9wZU5hbWVzcGFjZVRhYmxlLmtleXMoKTsKLSAgIHdoaWxlIChlbm0uaGFzTW9yZUVsZW1lbnRzKCkpCi0gICB7Ci0gICAgIFN0cmluZyB1cmkgPSAoU3RyaW5nKWVubS5uZXh0RWxlbWVudCgpOwotICAgICBTdHJpbmcgcHJlZml4ID0gKFN0cmluZylzb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZS5nZXQodXJpKTsKLSAgICAgU3RyaW5nIHZhbHVlID0gU29hcEhlbHBlci5lbmNvZGVOYW1lc3BhY2VEZWNsYXJhdGlvbihwcmVmaXgsIHVyaSk7Ci0gICAgICU+Ci0gICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPUZyYWdtZW50Q29uc3RhbnRzLlNPVVJDRV9DT05URU5UX05BTUVTUEFDRSU+IiB2YWx1ZT0iPCU9dmFsdWUlPiI+Ci0gICAgIDwlCi0gICB9Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iIGNsYXNzPSJsYWJlbHMiPgotPCUKLQlFbGVtZW50IHNvYXBFbnZlbG9wZUVsZW1lbnQgPSBzb2FwTWVzc2FnZS5nZXRFbnZlbG9wZShmYWxzZSk7Ci0gICAgU3RyaW5nQnVmZmVyIGhlYWRlciA9IG5ldyBTdHJpbmdCdWZmZXIoIjwiKTsKLSAgICBoZWFkZXIuYXBwZW5kKHNvYXBFbnZlbG9wZUVsZW1lbnQuZ2V0VGFnTmFtZSgpKTsKLSAgICBOYW1lZE5vZGVNYXAgYXR0cmlidXRlcyA9IHNvYXBFbnZlbG9wZUVsZW1lbnQuZ2V0QXR0cmlidXRlcygpOwotICAgIGludCBudW1iZXJPZkF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLmdldExlbmd0aCgpOwotICAgIGlmIChudW1iZXJPZkF0dHJpYnV0ZXMgPT0gMCkKLSAgICAgIGhlYWRlci5hcHBlbmQoJz4nKTsKLSU+Ci0gICAgICA8JT1IVE1MVXRpbHMuY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzU3RyaWN0KGhlYWRlci50b1N0cmluZygpKSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08JQotICAgIGZvciAoaW50IGk9MDtpPG51bWJlck9mQXR0cmlidXRlcztpKyspCi0gICAgewotICAgICAgaGVhZGVyLnNldExlbmd0aCgwKTsKLSAgICAgIE5vZGUgYXR0ck5vZGUgPSBhdHRyaWJ1dGVzLml0ZW0oaSk7Ci0gICAgICBoZWFkZXIuYXBwZW5kKGF0dHJOb2RlLmdldE5vZGVOYW1lKCkpLmFwcGVuZCgiPVwiIikuYXBwZW5kKGF0dHJOb2RlLmdldE5vZGVWYWx1ZSgpKS5hcHBlbmQoJ1wiJyk7Ci0gICAgICBpZiAoaSA9PSBudW1iZXJPZkF0dHJpYnV0ZXMtMSkKLSAgICAgICAgaGVhZGVyLmFwcGVuZCgnPicpOwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgd2lkdGg9OD4KLSAgICAgIDxpbWcgd2lkdGg9OCBoZWlnaHQ9MTYgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zcGFjZS5naWYiKSklPiIgYWx0PSIiPgotICAgIDwvdGQ+Ci0gICAgPHRkIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDwlPUhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXMoaGVhZGVyLnRvU3RyaW5nKCkpJT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi0gICAgfQotICAgIAotICAgIEVsZW1lbnQgc29hcEhlYWRlckVsZW1lbnQgPSBzb2FwTWVzc2FnZS5nZXRIZWFkZXIoZmFsc2UpOwotICAgIGhlYWRlci5zZXRMZW5ndGgoMCk7Ci0gICAgaGVhZGVyLmFwcGVuZCgnPCcpLmFwcGVuZChzb2FwSGVhZGVyRWxlbWVudC5nZXRUYWdOYW1lKCkpOwotICAgIGF0dHJpYnV0ZXMgPSBzb2FwSGVhZGVyRWxlbWVudC5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgbnVtYmVyT2ZBdHRyaWJ1dGVzID0gYXR0cmlidXRlcy5nZXRMZW5ndGgoKTsKLSAgICBpZiAobnVtYmVyT2ZBdHRyaWJ1dGVzID09IDApCi0gICAgICBoZWFkZXIuYXBwZW5kKCc+Jyk7Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB3aWR0aD04PgotICAgICAgPGltZyB3aWR0aD04IGhlaWdodD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgPC90ZD4KLSAgICA8dGQgdmFsaWduPSJib3R0b20iIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllcyhoZWFkZXIudG9TdHJpbmcoKSklPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPCUKLSAgICBmb3IgKGludCBpPTA7aTxudW1iZXJPZkF0dHJpYnV0ZXM7aSsrKQotICAgIHsKLSAgICAgIGhlYWRlci5zZXRMZW5ndGgoMCk7Ci0gICAgICBOb2RlIGF0dHJOb2RlID0gYXR0cmlidXRlcy5pdGVtKGkpOwotICAgICAgaGVhZGVyLmFwcGVuZChhdHRyTm9kZS5nZXROb2RlTmFtZSgpKS5hcHBlbmQoIj1cIiIpLmFwcGVuZChhdHRyTm9kZS5nZXROb2RlVmFsdWUoKSkuYXBwZW5kKCdcIicpOwotICAgICAgaWYgKGkgPT0gbnVtYmVyT2ZBdHRyaWJ1dGVzLTEpCi0gICAgICAgIGhlYWRlci5hcHBlbmQoJz4nKTsKLSU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIHdpZHRoPTE2PgotICAgICAgPGltZyB3aWR0aD0xNiBoZWlnaHQ9MTYgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zcGFjZS5naWYiKSklPiIgYWx0PSIiPgotICAgIDwvdGQ+Ci0gICAgPHRkIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDwlPUhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXMoaGVhZGVyLnRvU3RyaW5nKCkpJT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi0gICAgfQotJT4KLTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTM+Ci0gIDx0cj4KLSAgICA8dGQgd2lkdGg9IjE2Ij4KLSAgICAgIDxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9MTYgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zcGFjZS5naWYiKSklPiIgYWx0PSIiPgotICAgIDwvdGQ+ICAgIAotICAgIDx0ZCB2YWxpZ249ImNlbnRlciIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSI8JT1XU0RMQWN0aW9uSW5wdXRzLlNFTEVDVEVEX0ZJTEVfSEVBREVSJT4iIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NPQVBfRklMRSIpJT4iPgotICAgIDwvdGQ+Ci0gICAgPHRkIHZhbGlnbj0iY2VudGVyIiBhbGlnbj0ibGVmdCIgY2xhc3M9ImxhYmVscyIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpkb0FjdGlvbignPCU9V1NETEFjdGlvbklucHV0cy5TVUJNSVNTSU9OX0FDVElPTl9CUk9XU0VfRklMRV9IRUFERVIlPicpIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQlVUVE9OX0xBQkVMX0xPQUQiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIHZhbGlnbj0iY2VudGVyIiBhbGlnbj0ibGVmdCIgY2xhc3M9ImxhYmVscyIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpkb0FjdGlvbignPCU9V1NETEFjdGlvbklucHV0cy5TVUJNSVNTSU9OX0FDVElPTl9TQVZFX0FTX0hFQURFUiU+JykiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJCVVRUT05fTEFCRUxfU0FWRV9BUyIpJT48L2E+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0zPgotICA8dHI+Ci0gICAgPHRkIHdpZHRoPSIxNiI+Ci0gICAgICA8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zcGFjZS5naWYiKSklPiIgYWx0PSIiPgotICAgIDwvdGQ+Ci0gICAgPHRkIHdpZHRoPSIxMDAlIj4KLSAgICAgIDx0ZXh0YXJlYSBpZD0ic29hcF9oZWFkZXJfY29udGVudCIgbmFtZT0iPCU9RnJhZ21lbnRDb25zdGFudHMuU09VUkNFX0NPTlRFTlRfSEVBREVSJT4iIGNsYXNzPSJ0ZXh0YXJlYWVudGVyIj48JT1IVE1MVXRpbHMuY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzU3RyaWN0KGhlYWRlckNvbnRlbnQpJT48L3RleHRhcmVhPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPCUKLSAgICBoZWFkZXIuc2V0TGVuZ3RoKDApOwotICAgIGhlYWRlci5hcHBlbmQoIjwvIikuYXBwZW5kKHNvYXBIZWFkZXJFbGVtZW50LmdldFRhZ05hbWUoKSkuYXBwZW5kKCc+Jyk7Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTEgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB3aWR0aD04PgotICAgICAgPGltZyB3aWR0aD04IGhlaWdodD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgPC90ZD4KLSAgICA8dGQgdmFsaWduPSJib3R0b20iIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllcyhoZWFkZXIudG9TdHJpbmcoKSklPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPCUKLSAgICBFbGVtZW50IHNvYXBCb2R5RWxlbWVudCA9IHNvYXBNZXNzYWdlLmdldEJvZHkoZmFsc2UpOwotICAgIGhlYWRlci5zZXRMZW5ndGgoMCk7Ci0gICAgaGVhZGVyLmFwcGVuZCgnPCcpLmFwcGVuZChzb2FwQm9keUVsZW1lbnQuZ2V0VGFnTmFtZSgpKTsKLSAgICBhdHRyaWJ1dGVzID0gc29hcEJvZHlFbGVtZW50LmdldEF0dHJpYnV0ZXMoKTsKLSAgICBudW1iZXJPZkF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLmdldExlbmd0aCgpOwotICAgIGlmIChudW1iZXJPZkF0dHJpYnV0ZXMgPT0gMCkKLSAgICAgIGhlYWRlci5hcHBlbmQoJz4nKTsKLSU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIHdpZHRoPTg+Ci0gICAgICA8aW1nIHdpZHRoPTggaGVpZ2h0PTE2IHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvc3BhY2UuZ2lmIikpJT4iIGFsdD0iIj4KLSAgICA8L3RkPgotICAgIDx0ZCB2YWxpZ249ImJvdHRvbSIgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8JT1IVE1MVXRpbHMuY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzKGhlYWRlci50b1N0cmluZygpKSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08JQotICAgIGZvciAoaW50IGk9MDtpPG51bWJlck9mQXR0cmlidXRlcztpKyspCi0gICAgewotICAgICAgaGVhZGVyLnNldExlbmd0aCgwKTsKLSAgICAgIE5vZGUgYXR0ck5vZGUgPSBhdHRyaWJ1dGVzLml0ZW0oaSk7Ci0gICAgICBoZWFkZXIuYXBwZW5kKGF0dHJOb2RlLmdldE5vZGVOYW1lKCkpLmFwcGVuZCgiPVwiIikuYXBwZW5kKGF0dHJOb2RlLmdldE5vZGVWYWx1ZSgpKS5hcHBlbmQoJ1wiJyk7Ci0gICAgICBpZiAoaSA9PSBudW1iZXJPZkF0dHJpYnV0ZXMtMSkKLSAgICAgICAgaGVhZGVyLmFwcGVuZCgnPicpOwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgd2lkdGg9MTY+Ci0gICAgICA8aW1nIHdpZHRoPTE2IGhlaWdodD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgPC90ZD4KLSAgICA8dGQgdmFsaWduPSJib3R0b20iIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllcyhoZWFkZXIudG9TdHJpbmcoKSklPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPCUKLSAgICB9Ci0KLSAgICBFbGVtZW50IHdyYXBwZXJFbGVtZW50ID0gbnVsbDsKLSAgICBpZiAoIW9wZXJFbGVtZW50LmlzRG9jdW1lbnRTdHlsZSgpKQotICAgIHsgICAgICAKLSAgICAgIC8vIEdlbmVyYXRlIGFuIFJQQyBzdHlsZSB3cmFwcGVyIGVsZW1lbnQuICAgICAgCi0gICAgICB3cmFwcGVyRWxlbWVudCA9IChFbGVtZW50KSBzb2FwQm9keUVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpOwotICAgICAgaGVhZGVyLnNldExlbmd0aCgwKTsKLSAgICAgIGhlYWRlci5hcHBlbmQoJzwnKS5hcHBlbmQod3JhcHBlckVsZW1lbnQuZ2V0VGFnTmFtZSgpKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB3cmFwcGVyRWxlbWVudC5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgICBudW1iZXJPZkF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLmdldExlbmd0aCgpOwotICAgICAgaWYgKG51bWJlck9mQXR0cmlidXRlcyA9PSAwKQotICAgICAgICBoZWFkZXIuYXBwZW5kKCc+Jyk7Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB3aWR0aD0xNj4KLSAgICAgIDxpbWcgd2lkdGg9MTYgaGVpZ2h0PTE2IHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvc3BhY2UuZ2lmIikpJT4iIGFsdD0iIj4KLSAgICA8L3RkPgotICAgIDx0ZCB2YWxpZ249ImJvdHRvbSIgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8JT1IVE1MVXRpbHMuY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzKGhlYWRlci50b1N0cmluZygpKSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08JQotICAgICAgZm9yIChpbnQgaT0wO2k8bnVtYmVyT2ZBdHRyaWJ1dGVzO2krKykKLSAgICAgIHsKLSAgICAgICAgaGVhZGVyLnNldExlbmd0aCgwKTsKLSAgICAgICAgTm9kZSBhdHRyTm9kZSA9IGF0dHJpYnV0ZXMuaXRlbShpKTsKLSAgICAgICAgaGVhZGVyLmFwcGVuZChhdHRyTm9kZS5nZXROb2RlTmFtZSgpKS5hcHBlbmQoIj1cIiIpLmFwcGVuZChhdHRyTm9kZS5nZXROb2RlVmFsdWUoKSkuYXBwZW5kKCdcIicpOwotICAgICAgICBpZiAoaSA9PSBudW1iZXJPZkF0dHJpYnV0ZXMtMSkKLSAgICAgICAgICBoZWFkZXIuYXBwZW5kKCc+Jyk7Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB3aWR0aD0yND4KLSAgICAgIDxpbWcgd2lkdGg9MjQgaGVpZ2h0PTE2IHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvc3BhY2UuZ2lmIikpJT4iIGFsdD0iIj4KLSAgICA8L3RkPgotICAgIDx0ZCB2YWxpZ249ImJvdHRvbSIgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8JT1IVE1MVXRpbHMuY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzKGhlYWRlci50b1N0cmluZygpKSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08JQotICAgICAgfQotICAgIH0KLQotICAgIGludCBzb3VyY2VDb250ZW50SW5kZW50YXRpb25JbWFnZVdpZHRoID0gMTY7Ci0gICAgaWYgKHdyYXBwZXJFbGVtZW50ICE9IG51bGwpCi0gICAgICBzb3VyY2VDb250ZW50SW5kZW50YXRpb25JbWFnZVdpZHRoICs9IDg7Ci0lPgotPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9Mz4KLSAgPHRyPgotICAgIDx0ZCB3aWR0aD08JT1zb3VyY2VDb250ZW50SW5kZW50YXRpb25JbWFnZVdpZHRoJT4+Ci0gICAgICA8aW1nIHdpZHRoPTwlPXNvdXJjZUNvbnRlbnRJbmRlbnRhdGlvbkltYWdlV2lkdGglPiBoZWlnaHQ9MTYgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zcGFjZS5naWYiKSklPiIgYWx0PSIiPgotICAgIDwvdGQ+ICAgIAotICAgIDx0ZCB2YWxpZ249ImNlbnRlciIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSI8JT1XU0RMQWN0aW9uSW5wdXRzLlNFTEVDVEVEX0ZJTEUlPiIgdGl0bGU9IjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU09BUF9GSUxFIiklPiI+Ci0gICAgPC90ZD4KLSAgICA8dGQgdmFsaWduPSJjZW50ZXIiIGFsaWduPSJsZWZ0IiBjbGFzcz0ibGFiZWxzIiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmRvQWN0aW9uKCc8JT1XU0RMQWN0aW9uSW5wdXRzLlNVQk1JU1NJT05fQUNUSU9OX0JST1dTRV9GSUxFJT4nKSI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkJVVFRPTl9MQUJFTF9MT0FEIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCB2YWxpZ249ImNlbnRlciIgYWxpZ249ImxlZnQiIGNsYXNzPSJsYWJlbHMiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6ZG9BY3Rpb24oJzwlPVdTRExBY3Rpb25JbnB1dHMuU1VCTUlTU0lPTl9BQ1RJT05fU0FWRV9BUyU+JykiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJCVVRUT05fTEFCRUxfU0FWRV9BUyIpJT48L2E+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0zPgotICA8dHI+Ci0gICAgPHRkIHdpZHRoPTwlPXNvdXJjZUNvbnRlbnRJbmRlbnRhdGlvbkltYWdlV2lkdGglPj4KLSAgICAgIDxpbWcgd2lkdGg9PCU9c291cmNlQ29udGVudEluZGVudGF0aW9uSW1hZ2VXaWR0aCU+IGhlaWdodD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgPC90ZD4KLSAgICA8dGQgd2lkdGg9IjEwMCUiPgotICAgICAgPHRleHRhcmVhIGlkPSJzb2FwX2JvZHlfY29udGVudCIgbmFtZT0iPCU9RnJhZ21lbnRDb25zdGFudHMuU09VUkNFX0NPTlRFTlQlPiIgY2xhc3M9ImJpZ3RleHRhcmVhZW50ZXIiPjwlPUhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXNTdHJpY3QoYm9keUNvbnRlbnQpJT48L3RleHRhcmVhPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPCUKLSAgIGlmICh3cmFwcGVyRWxlbWVudCAhPSBudWxsKQotICAgewotICAgICBoZWFkZXIuc2V0TGVuZ3RoKDApOwotICAgICBoZWFkZXIuYXBwZW5kKCI8LyIpLmFwcGVuZCh3cmFwcGVyRWxlbWVudC5nZXRUYWdOYW1lKCkpLmFwcGVuZCgnPicpOwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgd2lkdGg9MTY+Ci0gICAgICA8aW1nIHdpZHRoPTE2IGhlaWdodD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgPC90ZD4KLSAgICA8dGQgdmFsaWduPSJib3R0b20iIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllcyhoZWFkZXIudG9TdHJpbmcoKSklPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPCUKLSAgIH0KLQotICAgaGVhZGVyLnNldExlbmd0aCgwKTsKLSAgIGhlYWRlci5hcHBlbmQoIjwvIikuYXBwZW5kKHNvYXBCb2R5RWxlbWVudC5nZXRUYWdOYW1lKCkpLmFwcGVuZCgnPicpOwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0xIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgd2lkdGg9OD4KLSAgICAgIDxpbWcgd2lkdGg9OCBoZWlnaHQ9MTYgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zcGFjZS5naWYiKSklPiIgYWx0PSIiPgotICAgIDwvdGQ+Ci0gICAgPHRkIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDwlPUhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXMoaGVhZGVyLnRvU3RyaW5nKCkpJT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi0gICBoZWFkZXIuc2V0TGVuZ3RoKDApOwotICAgaGVhZGVyLmFwcGVuZCgiPC8iKS5hcHBlbmQoc29hcEVudmVsb3BlRWxlbWVudC5nZXRUYWdOYW1lKCkpLmFwcGVuZCgnPicpOwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0xIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgdmFsaWduPSJib3R0b20iIGNsYXNzPSJsYWJlbHMiPgotICAgICAgPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllcyhoZWFkZXIudG9TdHJpbmcoKSklPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL0ludm9rZVdTRExPcGVyYXRpb25Gb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9JbnZva2VXU0RMT3BlcmF0aW9uRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNjc2ZTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL0ludm9rZVdTRExPcGVyYXRpb25Gb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUxMiAgIDEyMTIxMCBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24KLSAqIDIwMDcwMzA1ICAgMTE3MDM0IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgU2VydmljZXMgRXhwbG9yZXIgc2hvdWxkIHN1cHBvcnQgU09BUCBIZWFkZXJzIAotICogMjAwODA4MjUgICAxNTgzNjYgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXgud3NkbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi0gIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICBOb2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpOwotICBJbnZva2VXU0RMT3BlcmF0aW9uVG9vbCBpbnZva2VXU0RMT3BlcmF0aW9uVG9vbCA9IChJbnZva2VXU0RMT3BlcmF0aW9uVG9vbCkoc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpKTsKLSAgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gIFN0cmluZyBmcmFnbWVudFZpZXdJRCA9IGludm9rZVdTRExPcGVyYXRpb25Ub29sLmdldEZyYWdtZW50Vmlld0lEKCk7Ci0gIGludCBvcGVyYXRpb25UeXBlID0gb3BlckVsZW1lbnQuZ2V0T3BlcmF0aW9uVHlwZSgpOwotICBTdHJpbmcgaW52b2tlV1NETE9wZXJhdGlvblVSTCA9IHJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChpbnZva2VXU0RMT3BlcmF0aW9uVG9vbC5nZXRGb3JtQWN0aW9uTGluayhvcGVyYXRpb25UeXBlLGZyYWdtZW50Vmlld0lEKSkpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfSU5WT0tFX1dTRExfT1BFUkFUSU9OIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL3NjcmlwdHMvZnJhZ21lbnR0YWJsZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL3NjcmlwdHMvd3NkbHBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBkb0FjdGlvbihhY3Rpb24pCi0gIHsKLSAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmZvcm1zWzBdOwotICAgIGlmIChoYW5kbGVTdWJtaXQoZm9ybSkpCi0gICAgewotICAgICAgZm9ybS48JT1XU0RMQWN0aW9uSW5wdXRzLlNVQk1JU1NJT05fQUNUSU9OJT4udmFsdWUgPSBhY3Rpb247Ci0gICAgICBmb3JtLnN1Ym1pdCgpOwotICAgICAgZm9ybS48JT1XU0RMQWN0aW9uSW5wdXRzLlNVQk1JU1NJT05fQUNUSU9OJT4udmFsdWUgPSAiPCU9aW52b2tlV1NETE9wZXJhdGlvblVSTCU+IjsKLSAgICAgIHJlc2V0U3VibWlzc2lvbigpOwotICAgIH0KLSAgfQotICAKLSAgZnVuY3Rpb24gY2xvc2VDaGlsZFdpbmRvd3MoKQotICB7Ci0gICAgY2xvc2VYU0RJbmZvRGlhbG9nKCk7Ci0gICAgY2xvc2VDYWxlbmRhckJyb3dzZXIoKTsKLSAgfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiIgb25VbmxvYWQ9ImNsb3NlQ2hpbGRXaW5kb3dzKCkiPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gIDxmb3JtIGFjdGlvbj0iPCU9aW52b2tlV1NETE9wZXJhdGlvblVSTCU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1XU0RMQWN0aW9uSW5wdXRzLlNVQk1JU1NJT05fQUNUSU9OJT4iIHZhbHVlPSI8JT1XU0RMQWN0aW9uSW5wdXRzLlNVQk1JU1NJT05fQUNUSU9OX0ZPUk0lPiI+Ci0gICAgPCUKLSAgICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAid3NkbC9pbWFnZXMvaW52b2tlX3dzZGxfb3BlcmF0aW9uX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9JTlZPS0VfV1NETF9PUEVSQVRJT04iKTsKLSAgICBpZiAob3BlcmF0aW9uVHlwZSA9PSBXU0RMT3BlcmF0aW9uRWxlbWVudC5PUEVSQVRJT05fVFlQRV9TT0FQKQotICAgIHsKLSAgICAlPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgIDxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQodGl0bGVJbWFnZVBhdGgpKSU+IiBhbHQ9IiI+Ci0gICAgICA8c3Ryb25nPjwlPXRpdGxlJT48L3N0cm9uZz4KLSAgICA8L3RkPgotICAgIDx0ZCB3aWR0aD0iKiI+Jm5ic3A7PC90ZD4KLSAgICA8dGQgYWxpZ249InJpZ2h0IiBjbGFzcz0ibGFiZWxzIj4KLTwlCi0gICBpZiAoZnJhZ21lbnRWaWV3SUQuZXF1YWxzKEZyYWdtZW50Q29uc3RhbnRzLkZSQUdNRU5UX1ZJRVdfU1dJVENIX0ZPUk1fVE9fU09VUkNFKSkKLSAgIHsKLSU+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnN5bmNocm9uaXplRnJhZ21lbnRWaWV3cygnPCU9RnJhZ21lbnRDb25zdGFudHMuRlJBR01FTlRfVklFV19TV0lUQ0hfU09VUkNFX1RPX0ZPUk0lPicpIiB0aXRsZT0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9TV0lUQ0hfVE9fRk9STV9WSUVXIiklPiI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19GT1JNIiklPjwvYT4KLTwlCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0lPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpzeW5jaHJvbml6ZUZyYWdtZW50Vmlld3MoJzwlPUZyYWdtZW50Q29uc3RhbnRzLkZSQUdNRU5UX1ZJRVdfU1dJVENIX0ZPUk1fVE9fU09VUkNFJT4nKSIgdGl0bGU9IjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfU1dJVENIX1RPX1NPVVJDRV9WSUVXIiklPiI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19TT1VSQ0UiKSU+PC9hPgotPCUKLSAgIH0KLSU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjAgY29sc3Bhbj0zPjxpbWcgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiIGFsaWduPSJ0b3AiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotICAgIDwlCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgJT4KLSAgICA8JUAgaW5jbHVkZSBmaWxlID0gIi9mb3Jtcy9mb3JtaGVhZGVyLmluYyIgJT4KLSAgICA8JQotICAgIH0KLSAgICAlPgotICAgIDx0YWJsZT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotCi0gICAgICAgIDwlICAgICAgICAgICAKLQkJLy9oZXJlIHdlIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IGlucHV0IHBhcmFtZXRlcnMgZm9yIHRoaXMgb3BlcmF0aW9uCi0JCWJvb2xlYW4gaGFzSW5wdXQgPSB0cnVlOwotCQlzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKTsgIAotCQlJdGVyYXRvciBpdGVyID0gb3BlckVsZW1lbnQuZ2V0T3JkZXJlZEJvZHlQYXJ0cygpLml0ZXJhdG9yKCk7ICAgICAgICAKLQkJU3RyaW5nIG9wZXJhdGlvbk5hbWUgPSBvcGVyRWxlbWVudC5nZXROYW1lKCk7Ci0KLQkJd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKQotCQl7Ci0JCQlQYXJ0IHBhcnQgPSAoUGFydClpdGVyLm5leHQoKTsgCi0JCQlJWFNERnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50KHBhcnQpOyAgCi0JCQlvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb24gZGVmID0gZnJhZy5nZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotCQkJLy93ZSBjaGVjayB0aGUgdHlwZSBvZiB0aGUgb3BlcmF0aW9uJ3MgaW5wdXQgbWVzc2FnZQotCQkJaWYgKGRlZiA9PSBudWxsKQotCQkJewotCQkJCS8vdGhpcyBpcyB0aGUgcGF0dGVybiA8ZWxlbWVudCBuYW1lPSJmb28iPjwvZWxlbWVudD4KLQkJCQloYXNJbnB1dCA9IGZhbHNlOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCW9yZy53M2MuZG9tLkVsZW1lbnQgZWxlbWVudCA9IGRlZi5nZXRFbGVtZW50KCk7CQkJCQotCQkJCWlmIChlbGVtZW50LmdldExvY2FsTmFtZSgpLmVxdWFscygiY29tcGxleFR5cGUiKSAmJiAhZWxlbWVudC5oYXNDaGlsZE5vZGVzKCkpCi0JCQkJewkvL3RoaXMgaXMgdGhlIHBhdHRlcm4gIDxlbGVtZW50IG5hbWU9ImZvbyI+PGNvbXBsZXhUeXBlLz48L2VsZW1lbnQ+Ci0JCQkJCS8vdGhlcmUgY291bGQgYmUgb3RoZXIgcGF0dGVybnMgd2l0aCBubyBpbnB1dCBidXQgdGhleSBhcmUgdW5jb21tb24KLQkJCQkJaGFzSW5wdXQgPSBmYWxzZTsKLQkJCQl9Ci0JCQl9IAotICAgICAgCX0KLQkJaWYgKGhhc0lucHV0IHx8ICFvcGVyRWxlbWVudC5nZXRTT0FQSGVhZGVycygpLmlzRW1wdHkoKSkKLQkJewotCQkJb3V0LnByaW50KHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lOVk9LRV9XU0RMX09QRVJBVElPTl9ERVNDIiwgb3BlcmF0aW9uTmFtZSkpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJb3V0LnByaW50KHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lOVk9LRV9XU0RMX09QRVJBVElPTl9ERVNDX05PX0lOUFVUIiwgb3BlcmF0aW9uTmFtZSApKTsKLQkJfQotICAgICAgICAlPgotICAgICAgICAgCi0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkPgotICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0ia2V5bGluZWZpZWxkc2V0Ij4KLSAgICAgICAgICAgIDxsZWdlbmQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICAgIDxsYWJlbCBmb3I9IjwlPVdTRExBY3Rpb25JbnB1dHMuRU5EX1BPSU5UJT4iPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0VORF9QT0lOVFMiKSU+PC9sYWJlbD4KLSAgICAgICAgICAgIDwvbGVnZW5kPgotICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTEwIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSI8JT1XU0RMQWN0aW9uSW5wdXRzLkVORF9QT0lOVCU+IiBuYW1lPSI8JT1XU0RMQWN0aW9uSW5wdXRzLkVORF9QT0lOVCU+IiBjbGFzcz0ic2VsZWN0bGlzdCI+Ci0gICAgICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgICAgIFdTRExCaW5kaW5nRWxlbWVudCBiaW5kaW5nRWxlbWVudCA9IChXU0RMQmluZGluZ0VsZW1lbnQpb3BlckVsZW1lbnQuZ2V0UGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXSBlbmRQb2ludHMgPSBiaW5kaW5nRWxlbWVudC5nZXRFbmRQb2ludHMoKTsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGN1cnJFbmRQb2ludCA9IGludm9rZVdTRExPcGVyYXRpb25Ub29sLmdldEVuZFBvaW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZW5kUG9pbnRzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9ZW5kUG9pbnRzW2ldJT4iIDwlaWYgKGVuZFBvaW50c1tpXS5lcXVhbHMoY3VyckVuZFBvaW50KSkgeyU+c2VsZWN0ZWQ8JX0lPj48JT1lbmRQb2ludHNbaV0lPgotICAgICAgICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPC90YWJsZT4KLSAgICAgICAgICA8L2ZpZWxkc2V0PgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICAgIDwlCi0gICAgaWYgKGZyYWdtZW50Vmlld0lELmVxdWFscyhGcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9WSUVXX1NXSVRDSF9GT1JNX1RPX1NPVVJDRSkpCi0gICAgewotICAgICU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvZm9ybXMvRnJhZ21lbnRzU29hcFZpZXcuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDwlCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9mb3Jtcy9GcmFnbWVudHNGb3JtVmlldy5qc3AiIGZsdXNoPSJ0cnVlIj4KLQk8anNwOnBhcmFtIG5hbWU9Imhhc0lucHV0IiB2YWx1ZT0iPCU9aGFzSW5wdXQlPiIvPgotPC9qc3A6aW5jbHVkZT4KLSAgICA8JQotICAgIH0KLSAgICAlPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvc2ltcGxlQ29tbW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgPC9mb3JtPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvT3BlbldTRExGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9PcGVuV1NETEZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2UzNmZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9PcGVuV1NETEZvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuV1NETFBlcnNwZWN0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuSFRNTFV0aWxzIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICBGb3JtVG9vbCBmb3JtVG9vbCA9IChGb3JtVG9vbCl3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfT1BFTl9XU0RMIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL3NjcmlwdHMvd3NkbHBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3Jtc3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3JtdXRpbHMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL3dzZGxicm93c2VyLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIiBvblVubG9hZD0iY2xvc2VXU0RMQnJvd3NlcigpIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC9hY3Rpb25zL09wZW5XU0RMQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIGhhbmRsZVN1Ym1pdCh0aGlzKSI+Ci0gICAgPCUKLSAgICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAid3NkbC9pbWFnZXMvb3Blbl93c2RsX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9PUEVOX1dTREwiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgICAgPHRhYmxlPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgICAgPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfT1BFTl9XU0RMX0RFU0MiKSU+Ci0gICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+ICAgICAgICAKLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBub3dyYXA+Ci0gICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X3dzZGxfdXJsIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9VUkwiKSU+PC9sYWJlbD4KLSAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgaWYgKCFmb3JtVG9vbC5pc0lucHV0VmFsaWQoQWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dTRExfVVJMKSkgewotICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci0gICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgU3RyaW5nIHdzZGxVcmwgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KEFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCk7Ci0gICAgICAgICAgICAgIGlmICh3c2RsVXJsID09IG51bGwpCi0gICAgICAgICAgICAgICAgd3NkbFVybCA9ICIiOwotICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIG5vd3JhcD4KLSAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuV1NETEJyb3dzZXIoJ2NvbnRlbnRib3JkZXInLDwlPUFjdGlvbklucHV0cy5XU0RMX1RZUEVfU0VSVklDRSU+KSI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQlJPV1NFIiklPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8L3RyPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZCBjb2xzcGFuPTM+Ci0gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXRfd3NkbF91cmwiIG5hbWU9IjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XU0RMX1VSTCU+IiB2YWx1ZT0iPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllc1N0cmljdCh3c2RsVXJsKSU+IiBzaXplPSI1MCIgY2xhc3M9InRleHRlbnRlciI+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPC9mb3JtPgotPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgY2xvc2VXU0RMQnJvd3NlcigpOwotPC9zY3JpcHQ+ICAKLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9Qcm9jZXNzV1NETEZyYW1lc2V0c0Zvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1Byb2Nlc3NXU0RMRnJhbWVzZXRzRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNTJmNGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1Byb2Nlc3NXU0RMRnJhbWVzZXRzRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPGpzcDp1c2VCZWFuIGlkPSJmb3JtQWN0aW9uIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUZyYW1lTmFtZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChmb3JtQWN0aW9uLnRvU3RyaW5nKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBzdHlsZT0ibWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MCI+Ci0gIDxpbnB1dCBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuRlJBTUVfTkFNRSU+IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSI8JT1mb3JtRnJhbWVOYW1lJT4iPgotICA8aW5wdXQgbmFtZT0iPCU9V1NETEFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQlPiIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpJT4iPgotICA8aW5wdXQgbmFtZT0iPCU9V1NETEFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSJT4iIHR5cGU9ImhpZGRlbiIgdmFsdWU9IjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCklPiI+Ci08L2Zvcm0+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvUmVhZE9ubHlGcmFnbWVudHNGb3JtVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvUmVhZE9ubHlGcmFnbWVudHNGb3JtVmlldy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYjM4ODIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1JlYWRPbmx5RnJhZ21lbnRzRm9ybVZpZXcuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzA1ICAgMTE3MDM0IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgU2VydmljZXMgRXhwbG9yZXIgc2hvdWxkIHN1cHBvcnQgU09BUCBIZWFkZXJzCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICogMjAwNzA1MDcgICAxODU2MDAgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdTRSBzdGF0dXMgcGFuZSdzICJoZWFkZXIiIHR3aXN0aWUgc2hvdWxkIG5vdCBhcHBlYXIgZm9yIHJlc3BvbnNlcyB3aXRob3V0IGhlYWRlcnMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC54c2QuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLk5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudzNjLmRvbS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC53c2RsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLXdzZGxQZXJzcGVjdGl2ZS5zZXRTdGF0dXNDb250ZW50VHlwZShXU0RMUGVyc3BlY3RpdmUuU1RBVFVTX0NPTlRFTlRfUkVTVUxUX0ZPUk0pOwotTm9kZSBvcGVyTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXRPcGVyYXRpb25Ob2RlKCk7Ci1ub2RlSUQuZGVsZXRlKDAsIG5vZGVJRC5sZW5ndGgoKSk7Ci1ub2RlSUQuYXBwZW5kKG9wZXJOb2RlLmdldE5vZGVJZCgpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KW9wZXJOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1PcGVyYXRpb24gb3BlciA9IG9wZXJFbGVtZW50LmdldE9wZXJhdGlvbigpOwotaWYgKG9wZXIuZ2V0T3V0cHV0KCkgPT0gbnVsbCkKLXsKLSU+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gICAgPHRyPgotICAgICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICA8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OT1RISU5HX1RPX0RJU1BMQVlfSU5fRk9STV9WSUVXIiklPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPCUKLX0KLWVsc2UKLXsKLSAgSVNPQVBNZXNzYWdlIHNvYXBNZXNzYWdlID0gKElTT0FQTWVzc2FnZSkgb3BlckVsZW1lbnQuZ2V0UHJvcGVydHlBc09iamVjdChXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9TT0FQX1JFU1BPTlNFKTsKLSAgRWxlbWVudFtdIGhlYWRlckNvbnRlbnQgPSBzb2FwTWVzc2FnZS5nZXRIZWFkZXJDb250ZW50KCk7OwotICBFbGVtZW50W10gYm9keUNvbnRlbnQgICA9IHNvYXBNZXNzYWdlLmdldEJvZHlDb250ZW50KCk7Ci0gIAotICBib29sZWFuIGNhY2hlZCA9ICgoQm9vbGVhbilvcGVyRWxlbWVudC5nZXRQcm9wZXJ0eUFzT2JqZWN0KFdTRExBY3Rpb25JbnB1dHMuU09BUF9SRVNQT05TRV9DQUNIRUQpKS5ib29sZWFuVmFsdWUoKTsKLQotICBpZiAoc29hcE1lc3NhZ2UuZ2V0Qm9keShmYWxzZSkgPT0gbnVsbCkgLy8gYm9keSBpcyBtYW5kYXRvcnkKLSAgewotICAlPgotICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICA8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TT0FQX1JFU1BPTlNFX0ZBSUxFRF9WQUxJREFUSU9OX0lOX0ZPUk1fVklFVyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPCUKLSAgfQotICBlbHNlCi0gIHsKLQlpZiAoaGVhZGVyQ29udGVudCAhPSBudWxsICYmIGhlYWRlckNvbnRlbnQubGVuZ3RoID4gMCkgewkJCi0KLQkJU3RyaW5nIGhlYWRlckRpdklkID0gIkhlYWRlciI7Ci0JCVN0cmluZyBoZWFkZXJJbWdJZCA9ICJ4SGVhZGVyIjsJCQotCSAgICAlPgotCSAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotCQkgIDx0cj4KLQkJICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9aGVhZGVyRGl2SWQlPicsJzwlPWhlYWRlckltZ0lkJT4nKSI+PGltZyBuYW1lPSI8JT1oZWFkZXJJbWdJZCU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+Ci0JCSAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPjxzdHJvbmc+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfSEVBREVSIiklPjwvc3Ryb25nPjwvdGQ+Ci0JCSAgPC90cj4KLQkJPC90YWJsZT4KLQkJCi0JCTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0JCSAgPHRyPgotCQkgICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLQkJICA8L3RyPgotCQk8L3RhYmxlPgotCQkKLQkJPGRpdiBpZD0iPCU9aGVhZGVyRGl2SWQlPiIgY2xhc3M9ImZyYWdhcmVhIj4KLQkJPCUKLQkJYm9vbGVhbiBoYXNTT0FQSGVhZGVycyA9IGZhbHNlOwkJCi0JCUl0ZXJhdG9yIGl0ID0gb3BlckVsZW1lbnQuZ2V0U09BUEhlYWRlcnMoZmFsc2UpLml0ZXJhdG9yKCk7Ci0JCWludCBzdGFydCA9IDA7Ci0JCXdoaWxlIChpdC5oYXNOZXh0KCkgJiYgc3RhcnQgPCBoZWFkZXJDb250ZW50Lmxlbmd0aCkgewotCQkJU09BUEhlYWRlciBzb2FwSGVhZGVyID0gKFNPQVBIZWFkZXIpIGl0Lm5leHQoKTsJCQkJCQkJCQkKLQkJCUlYU0RGcmFnbWVudCBmcmFnbWVudCA9IG9wZXJFbGVtZW50LmdldEhlYWRlckZyYWdtZW50KHNvYXBIZWFkZXIsIGZhbHNlKTsKLQkJCQotCQkJaWYgKCFjYWNoZWQpIHsJCQkJCi0JCQkJaW50IHBvcyA9IFNPQVBNZXNzYWdlVXRpbHMuZmluZEZpcnN0TWF0Y2hpbmdFbGVtZW50KAotCQkJCQlzb2FwSGVhZGVyLmdldEVQYXJ0KCksCi0JCQkJCWhlYWRlckNvbnRlbnQsCi0JCQkJCXNvYXBNZXNzYWdlLmdldE5hbWVzcGFjZVRhYmxlKCksCi0JCQkJCWZyYWdtZW50LmdldE5hbWUoKSwKLQkJCQkJc3RhcnQpOwotCQkJCQotCQkJCWlmIChwb3MgPT0gLTEpCi0JCQkJCWNvbnRpbnVlOwotCQkJCQotCQkJCUVsZW1lbnQgZWxlbWVudCA9IGhlYWRlckNvbnRlbnRbcG9zXTsKLQkJCQlzdGFydCA9IHBvcyArIDE7Ci0JCQkJCi0JCQkJaWYgKCFmcmFnbWVudC5zZXRQYXJhbWV0ZXJWYWx1ZXNGcm9tSW5zdGFuY2VEb2N1bWVudHMobmV3IEVsZW1lbnRbXSB7IGVsZW1lbnQgfSkpCi0JCQkJCWNvbnRpbnVlOwotCQkJfQotCQkJZWxzZSBpZiAoIWZyYWdtZW50LnZhbGlkYXRlQWxsUGFyYW1ldGVyVmFsdWVzKCkpCi0JCQkJY29udGludWU7Ci0JCQkKLQkJCWhhc1NPQVBIZWFkZXJzID0gdHJ1ZTsJCQkJCi0JCQlmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0JCQlmcmFnSUQuYXBwZW5kKGZyYWdtZW50LmdldElEKCkpOwotCQkJJT4KLQkJCTxqc3A6aW5jbHVkZSBwYWdlPSI8JT1mcmFnbWVudC5nZXRSZWFkRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotCQkJPCUgIAotCQl9CQkKLQkJaWYgKCFoYXNTT0FQSGVhZGVycykgewotCQkJJT4KLQkJCTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0JCSAgICAgIDx0cj4KLQkJICAgICAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgY2xhc3M9ImxhYmVscyI+Ci0JCSAgICAgICAgICA8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9DQU5OT1RfRElTUExBWV9IRUFERVJfSU5fRk9STV9WSUVXIiklPgotCQkgICAgICAgIDwvdGQ+Ci0JCSAgICAgIDwvdHI+Ci0JCSAgICA8L3RhYmxlPgotCQkJPCUKLQkJfQotCQklPgotCQk8L2Rpdj4KLQkJPCUgICAKLQl9Ci0JCQotCVN0cmluZyBib2R5RGl2SWQgPSAiQm9keSI7Ci0JU3RyaW5nIGJvZHlJbWdJZCA9ICJ4Qm9keSI7CSAgCQkKLQklPgkJCQotCTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0JICA8dHI+Ci0JICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9Ym9keURpdklkJT4nLCc8JT1ib2R5SW1nSWQlPicpIj48aW1nIG5hbWU9IjwlPWJvZHlJbWdJZCU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+Ci0JICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+PHN0cm9uZz48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9CT0RZIiklPjwvc3Ryb25nPjwvdGQ+Ci0JICA8L3RyPgotCTwvdGFibGU+IAotCQotCTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0JICA8dHI+Ci0JICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0JICA8L3RyPgotCTwvdGFibGU+Ci0JCi0JPGRpdiBpZD0iPCU9Ym9keURpdklkJT4iIGNsYXNzPSJmcmFnYXJlYSI+Ci0JPCUJCi0JYm9vbGVhbiBoYXNTT0FQQm9keSA9IGZhbHNlOwotCWlmIChib2R5Q29udGVudCAhPSBudWxsICYmIGJvZHlDb250ZW50Lmxlbmd0aCA+IDApIHsJCQkJCi0JCQotCSAgICBNYXAgcGFydHNNYXAgPSBvcGVyLmdldE91dHB1dCgpLmdldE1lc3NhZ2UoKS5nZXRQYXJ0cygpOwotCSAgICBJdGVyYXRvciBpdCA9IHBhcnRzTWFwLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0JICAgIEhhc2h0YWJsZSB1cmlSZWZlcmVuY2VzID0gbnVsbDsKLQkgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLQkgICAgewotCSAgICAgIElYU0RGcmFnbWVudCBmcmFnbWVudCA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50KChQYXJ0KWl0Lm5leHQoKSwgZmFsc2UpOwotCSAgICAgIGlmICghY2FjaGVkKQotCSAgICAgIHsKLQkgICAgICAgIGlmICghb3BlckVsZW1lbnQuaXNVc2VMaXRlcmFsKCkgJiYgKGZyYWdtZW50IGluc3RhbmNlb2YgSVNPQVBFbmNvZGluZ1dyYXBwZXJGcmFnbWVudCkpCi0JICAgICAgICB7Ci0JICAgICAgICAgIGlmICh1cmlSZWZlcmVuY2VzID09IG51bGwpCi0JICAgICAgICAgICAgdXJpUmVmZXJlbmNlcyA9IFNPQVBFbmNvZGluZ1dyYXBwZXJGcmFnbWVudC5wYXJzZVVSSVJlZmVyZW5jZXMoc29hcE1lc3NhZ2UuZ2V0RW52ZWxvcGUodHJ1ZSksIHRydWUpOwotCSAgICAgICAgICAoKElTT0FQRW5jb2RpbmdXcmFwcGVyRnJhZ21lbnQpZnJhZ21lbnQpLnNldFVSSVJlZmVyZW5jZXModXJpUmVmZXJlbmNlcyk7Ci0JICAgICAgICB9Ci0JICAgICAgICBpZiAoIWZyYWdtZW50LnNldFBhcmFtZXRlclZhbHVlc0Zyb21JbnN0YW5jZURvY3VtZW50cyhib2R5Q29udGVudCkpCi0JICAgICAgICAJY29udGludWU7Ci0JICAgICAgfQotCSAgICAgIGVsc2UgaWYgKCFmcmFnbWVudC52YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpKQotCQkJY29udGludWU7Ci0JCQkKLQkJICBoYXNTT0FQQm9keSA9IHRydWU7CQkJCQotCSAgICAgIGZyYWdJRC5kZWxldGUoMCwgZnJhZ0lELmxlbmd0aCgpKTsKLQkgICAgICBmcmFnSUQuYXBwZW5kKGZyYWdtZW50LmdldElEKCkpOwotCSAgICAgICU+Ci0JICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWZyYWdtZW50LmdldFJlYWRGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0JICAgICAgPCUKLQkgICAgfQotCSAgICBvcGVyRWxlbWVudC5zZXRQcm9wZXJ0eUFzT2JqZWN0KFdTRExBY3Rpb25JbnB1dHMuU09BUF9SRVNQT05TRV9DQUNIRUQsIG5ldyBCb29sZWFuKHRydWUpKTsKLQl9Ci0JCi0JaWYgKHNvYXBNZXNzYWdlLmdldEZhdWx0KCkgPT0gbnVsbCAmJiAoYm9keUNvbnRlbnQgPT0gbnVsbCB8fCBib2R5Q29udGVudC5sZW5ndGggPT0gMCkpIHsKLQkJJT4KLQkJPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLQkgICAgICA8dHI+Ci0JICAgICAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgY2xhc3M9ImxhYmVscyI+Ci0JICAgICAgICAgIDwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0JPRFlfSVNfRU1QVFkiKSU+Ci0JICAgICAgICA8L3RkPgotCSAgICAgIDwvdHI+Ci0JICAgIDwvdGFibGU+Ci0JCTwlCi0gICAgfQotCWVsc2UgaWYgKCFoYXNTT0FQQm9keSkgewotCQklPgotCQk8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotCSAgICAgIDx0cj4KLQkgICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBjbGFzcz0ibGFiZWxzIj4KLQkgICAgICAgICAgPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQ0FOTk9UX0RJU1BMQVlfQk9EWV9JTl9GT1JNX1ZJRVciKSU+Ci0JICAgICAgICA8L3RkPgotCSAgICAgIDwvdHI+Ci0JICAgIDwvdGFibGU+Ci0JCTwlCi0JfSAKLSAgICAlPgotICAgIDwvZGl2PgotICAgIDwlCi0gIH0KLX0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvUmVhZE9ubHlGcmFnbWVudHNTb2FwVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvUmVhZE9ubHlGcmFnbWVudHNTb2FwVmlldy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MzFlYmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1JlYWRPbmx5RnJhZ21lbnRzU29hcFZpZXcuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTA5ICAgMTAzMDcyIG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbgotICogMjAwNjA1MTUgICAxNDA2MDcgbWFodXRjaEBjYS5pYm0uY29tIC0gTWFyayBIdXRjaGluc29uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExPcGVyYXRpb25FbGVtZW50IiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotd3NkbFBlcnNwZWN0aXZlLnNldFN0YXR1c0NvbnRlbnRUeXBlKFdTRExQZXJzcGVjdGl2ZS5TVEFUVVNfQ09OVEVOVF9SRVNVTFRfU09VUkNFKTsKLU5vZGUgb3Blck5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0T3BlcmF0aW9uTm9kZSgpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpb3Blck5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLVN0cmluZyBzb2FwUmVxdWVzdFRhYmxlQ29udGFpbmVySWQgPSAiU09BUFJlcXVlc3QiOwotU3RyaW5nQnVmZmVyIHNvYXBSZXF1ZXN0VHdpc3RJbWFnZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCJ4Iik7Ci1zb2FwUmVxdWVzdFR3aXN0SW1hZ2VOYW1lLmFwcGVuZChzb2FwUmVxdWVzdFRhYmxlQ29udGFpbmVySWQpOwotU3RyaW5nIHNvYXBSZXNwb25zZVRhYmxlQ29udGFpbmVySWQgPSAiU09BUFJlc3BvbnNlIjsKLVN0cmluZ0J1ZmZlciBzb2FwUmVzcG9uc2VUd2lzdEltYWdlTmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoIngiKTsKLXNvYXBSZXNwb25zZVR3aXN0SW1hZ2VOYW1lLmFwcGVuZChzb2FwUmVzcG9uc2VUYWJsZUNvbnRhaW5lcklkKTsKLSU+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICB2YXIgc2VjdGlvbklkcyA9IFsiPCU9c29hcFJlcXVlc3RUYWJsZUNvbnRhaW5lcklkJT4iLCI8JT1zb2FwUmVzcG9uc2VUYWJsZUNvbnRhaW5lcklkJT4iXTsKLSAgZnVuY3Rpb24gdG9nZ2xlU09BUEVudmVsb3BlKHNvYXBFbnZlbG9wZVR5cGUsdHdpc3RJbWFnZU5hbWUpCi0gIHsKLTwlCi0gICAgLy8gSWYgYm90aCBlbnZlbG9wZXMgYXJlIGV4cGFuZGVkLCBlYWNoIHNob3VsZCBoYXZlIDUwJSBoZWlnaHQuIE90aGVyd2lzZSwgdGhlIHJlbWFpbmluZyBkaXNwbGF5ZWQgZW52ZWxvcGUgc2hvdWxkIGJlIHJlc2V0IHRvIDEwMCUgaGVpZ2h0LgotJT4KLSAgICB2YXIgc29hcFNlY3Rpb25JZCA9IHNlY3Rpb25JZHNbc29hcEVudmVsb3BlVHlwZV07Ci0gICAgdmFyIHNvYXBTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc29hcFNlY3Rpb25JZCk7Ci0gICAgdmFyIHNvYXBTZWN0aW9uVGFibGUgPSBnZXRUYWJsZShzb2FwU2VjdGlvbklkKTsKLSAgICB2YXIgb3RoZXJTb2FwU2VjdGlvbklkID0gc2VjdGlvbklkc1sxLXNvYXBFbnZlbG9wZVR5cGVdOwotICAgIHZhciBvdGhlclNvYXBTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3RoZXJTb2FwU2VjdGlvbklkKTsKLSAgICB2YXIgb3RoZXJTb2FwU2VjdGlvblRhYmxlID0gZ2V0VGFibGUob3RoZXJTb2FwU2VjdGlvbklkKTsKLSAgICBpZiAoc29hcFNlY3Rpb24uc3R5bGUuZGlzcGxheSA9PSAibm9uZSIpCi0gICAgewotICAgICAgaWYgKG90aGVyU29hcFNlY3Rpb24uc3R5bGUuZGlzcGxheSA9PSAiIikKLSAgICAgIHsKLSAgICAgICAgc29hcFNlY3Rpb25UYWJsZS5oZWlnaHQgPSAiNTAlIjsKLSAgICAgICAgb3RoZXJTb2FwU2VjdGlvblRhYmxlLmhlaWdodCA9ICI1MCUiOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBzb2FwU2VjdGlvblRhYmxlLmhlaWdodCA9ICIxMDAlIjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGlmIChvdGhlclNvYXBTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPT0gIiIpCi0gICAgICAgIG90aGVyU29hcFNlY3Rpb25UYWJsZS5oZWlnaHQgPSAiMTAwJSI7Ci0gICAgfQotICAgIHR3aXN0KHNvYXBTZWN0aW9uSWQsdHdpc3RJbWFnZU5hbWUpOwotICB9Ci08L3NjcmlwdD4KLQotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0b2dnbGVTT0FQRW52ZWxvcGUoPCU9V1NETEFjdGlvbklucHV0cy5TT0FQX0VOVkVMT1BFX1RZUEVfUkVRVUVTVCU+LCc8JT1zb2FwUmVxdWVzdFR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPicpIj48aW1nIG5hbWU9IjwlPXNvYXBSZXF1ZXN0VHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+Ci0gICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxzdHJvbmc+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU09BUF9SRVFVRVNUX0VOVkVMT1BFIiklPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxkaXYgaWQ9IjwlPXNvYXBSZXF1ZXN0VGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lIj4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGhlaWdodD0iNTAlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxwYWRkaW5nPTA+Ci0gICAgPHRyPgotICAgICAgPHRkPgotICAgICAgICA8aWZyYW1lIG5hbWU9InJlcXVlc3RFbnZlbG9wZUZyYW1lIiBmcmFtZWJvcmRlcj0wIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHdzZGxQZXJzcGVjdGl2ZS5nZXRTT0FQRW52ZWxvcGVYTUxMaW5rKFdTRExBY3Rpb25JbnB1dHMuU09BUF9FTlZFTE9QRV9UWVBFX1JFUVVFU1QpKSklPiIgd2lkdGg9Ijk1JSIgaGVpZ2h0PSIxMDAlIj48L2lmcmFtZT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHR3aXN0KCI8JT1zb2FwUmVxdWVzdFRhYmxlQ29udGFpbmVySWQlPiIsIjwlPXNvYXBSZXF1ZXN0VHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+Iik7Ci08L3NjcmlwdD4KLQotPCUKLWlmIChvcGVyRWxlbWVudC5nZXRPcGVyYXRpb24oKS5nZXRPdXRwdXQoKSAhPSBudWxsKQotewotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPjxhIGhyZWY9ImphdmFzY3JpcHQ6dG9nZ2xlU09BUEVudmVsb3BlKDwlPVdTRExBY3Rpb25JbnB1dHMuU09BUF9FTlZFTE9QRV9UWVBFX1JFU1BPTlNFJT4sJzwlPXNvYXBSZXNwb25zZVR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPicpIj48aW1nIG5hbWU9IjwlPXNvYXBSZXNwb25zZVR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT48L3RkPgotICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICA8c3Ryb25nPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1NPQVBfUkVTUE9OU0VfRU5WRUxPUEUiKSU+PC9zdHJvbmc+Ci0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGRpdiBpZD0iPCU9c29hcFJlc3BvbnNlVGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lIj4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGhlaWdodD0iNTAlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxwYWRkaW5nPTA+Ci0gICAgPHRyPgotICAgICAgPHRkPgotICAgICAgCTwhLS0gdGhlIG9ubG9hZCBjYWxsIGlzIHRvIGZpeCBidWcgMTQwNjA3IGluIGJ1Z3ppbGxhIC0tPgotICAgICAgICA8aWZyYW1lIG9ubG9hZD0iamF2YXNjcmlwdDpyZXF1ZXN0RW52ZWxvcGVGcmFtZS5kb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKSIgZnJhbWVib3JkZXI9MCBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh3c2RsUGVyc3BlY3RpdmUuZ2V0U09BUEVudmVsb3BlWE1MTGluayhXU0RMQWN0aW9uSW5wdXRzLlNPQVBfRU5WRUxPUEVfVFlQRV9SRVNQT05TRSkpKSU+IiB3aWR0aD0iOTUlIiBoZWlnaHQ9IjEwMCUiPjwvaWZyYW1lPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdHdpc3QoIjwlPXNvYXBSZXNwb25zZVRhYmxlQ29udGFpbmVySWQlPiIsIjwlPXNvYXBSZXNwb25zZVR3aXN0SW1hZ2VOYW1lLnRvU3RyaW5nKCklPiIpOwotPC9zY3JpcHQ+Ci08JQotfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9XU0RMQmluZGluZ0RldGFpbHNGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9XU0RMQmluZGluZ0RldGFpbHNGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiZTNhMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETEJpbmRpbmdEZXRhaWxzRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICBOb2RlIGJpbmRpbmdOb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9USVRMRV9XU0RMX0JJTkRJTkdfREVUQUlMUyIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICB2YXIgcm93Q2hlY2tib3hOYW1lID0gInJvd0NoZWNrYm94TmFtZSI7Ci08L3NjcmlwdD4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy90YWJsZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm11dGlscy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLTxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL2FjdGlvbnMvVXBkYXRlV1NETEJpbmRpbmdBY3Rpb25KU1AuanNwIikpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG9uU3VibWl0PSJyZXR1cm4gaGFuZGxlU3VibWl0KHRoaXMpIj4KLTwlCi0gICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAid3NkbC9pbWFnZXMvb3Blbl93c2RsX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICBTdHJpbmcgdGl0bGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1dTRExfQklORElOR19ERVRBSUxTIik7Ci0gICBXU0RMQmluZGluZ0VsZW1lbnQgd3NkbEJpbmRpbmdFbGVtZW50ID0gKFdTRExCaW5kaW5nRWxlbWVudCliaW5kaW5nTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgVmVjdG9yIG9wZXJhdGlvbk5vZGVzID0gYmluZGluZ05vZGUuZ2V0Q2hpbGROb2RlcygpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLk5PREVJRCU+IiB2YWx1ZT0iPCU9YmluZGluZ05vZGUuZ2V0Tm9kZUlkKCklPiI+Ci08dGFibGU+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQklORElOR19ERVRBSUxTX0RFU0MiLHdzZGxQZXJzcGVjdGl2ZS5nZXRCaW5kaW5nVHlwZVN0cmluZyh3c2RsQmluZGluZ0VsZW1lbnQuZ2V0QmluZGluZ1R5cGUoKSkpJT48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi0gICBTdHJpbmcgZG9jdW1lbnRhdGlvbiA9IHdzZGxCaW5kaW5nRWxlbWVudC5nZXRQcm9wZXJ0eUFzU3RyaW5nKFdTRExNb2RlbENvbnN0YW50cy5QUk9QX0RPQ1VNRU5UQVRJT04pOwotICAgaWYgKGRvY3VtZW50YXRpb24ubGVuZ3RoKCkgPiAwKQotICAgewotJT4KLTx0YWJsZT4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGNsYXNzPSJsYWJlbHMiPjwlPWRvY3VtZW50YXRpb24lPjwvdGQ+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTEwPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPCUKLSAgIH0KLQotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJPcGVyYXRpb25zIik7Ci0gICBzZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMob3BlcmF0aW9uTm9kZXMpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9mb3Jtcy9vcGVyYXRpb25zX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gICBpZiAob3BlcmF0aW9uTm9kZXMuc2l6ZSgpID4gMCkKLSAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdHdpc3QoIk9wZXJhdGlvbnMiLCJ4T3BlcmF0aW9ucyIpOwotPC9zY3JpcHQ+Ci08JQotICAgfQotCi0gICBzZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoIkVuZHBvaW50cyIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKHdzZGxCaW5kaW5nRWxlbWVudCk7Ci0lPgotPHRhYmxlPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yMD4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9mb3Jtcy9lbmRwb2ludF90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICBpZiAod3NkbEJpbmRpbmdFbGVtZW50LmdldEVuZFBvaW50cygpLmxlbmd0aCA+IDApCi0gIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdHdpc3RPcGVuKCJFbmRwb2ludHMiKTsKLTwvc2NyaXB0PgotPCUKLSAgfQotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvc2ltcGxlQ29tbW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvZm9ybT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1dTRExEZXRhaWxzRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETERldGFpbHNGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk3Yzk3Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETERldGFpbHNGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuTm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICBOb2RlIHdzZGxOb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gIFRvb2xNYW5hZ2VyIGN1cnJlbnRUb29sTWFuYWdlciA9IHdzZGxOb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpOwotICBXU0RMRGV0YWlsc1Rvb2wgd3NkbERldGFpbHNUb29sID0gKFdTRExEZXRhaWxzVG9vbCljdXJyZW50VG9vbE1hbmFnZXIuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9USVRMRV9XU0RMX0RFVEFJTFMiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvdGFibGVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9wYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gc3dpdGNoV1NETERldGFpbHNWaWV3KCkgewotICAgIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL2FjdGlvbnMvU3dpdGNoV1NETERldGFpbHNWaWV3c0FjdGlvbkpTUC5qc3AiKSklPiI7Ci0gIH0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci08JQotICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gIndzZGwvaW1hZ2VzL29wZW5fd3NkbF9oaWdobGlnaHRlZC5naWYiOwotICAgU3RyaW5nIHRpdGxlID0gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9XU0RMX0RFVEFJTFMiKTsKLSU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh0aXRsZUltYWdlUGF0aCkpJT4iIGFsdD0iIj4KLSAgICAgIDxzdHJvbmc+PCU9dGl0bGUlPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci0gICAgPHRkIHdpZHRoPSIqIj4mbmJzcDs8L3RkPgotICAgIDx0ZCBhbGlnbj0icmlnaHQiIGNsYXNzPSJsYWJlbHMiPgotPCUKLSAgIGlmICh3c2RsRGV0YWlsc1Rvb2wuZ2V0Vmlld0lkKCkgPT0gV1NETERldGFpbHNUb29sLlNPVVJDRV9WSUVXX0lEKQotICAgeyAgICAgCi0lPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpzd2l0Y2hXU0RMRGV0YWlsc1ZpZXcoKSIgdGl0bGU9IjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfU1dJVENIX1RPX0ZPUk1fVklFVyIpJT4iPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfRk9STSIpJT48L2E+Ci08JQotICAgfQotICAgZWxzZQotICAgewotJT4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6c3dpdGNoV1NETERldGFpbHNWaWV3KCkiIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1NXSVRDSF9UT19TT1VSQ0VfVklFVyIpJT4iPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfU09VUkNFIiklPjwvYT4KLTwlCi0gICB9Ci0lPiAgIAotICAgIDwvdGQ+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTIwIGNvbHNwYW49Mz48aW1nIGhlaWdodD0yIHdpZHRoPSIxMDAlIiBhbGlnbj0idG9wIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIj48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi0gIGlmICh3c2RsRGV0YWlsc1Rvb2wuZ2V0Vmlld0lkKCkgPT0gV1NETERldGFpbHNUb29sLkZPUk1fVklFV19JRCkKLSAgewotJT4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvZm9ybXMvV1NETERldGFpbHNGb3JtVmlldy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08JQotICB9Ci0gIGVsc2UKLSAgewotJT4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgaGVpZ2h0PSIxMDAlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxwYWRkaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8aWZyYW1lIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL2Zvcm1zL1dTRExEZXRhaWxzU291cmNlVmlldy5qc3AiKSklPiIgd2lkdGg9Ijk1JSIgaGVpZ2h0PSIxMDAlIj48L2lmcmFtZT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLTwlCi0gIH0KLSU+Ci08anNwOnVzZUJlYW4gaWQ9ImN1cnJlbnRUb29sTWFuYWdlckhhc2giIGNsYXNzPSJqYXZhLnV0aWwuSGFzaHRhYmxlIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICBjdXJyZW50VG9vbE1hbmFnZXJIYXNoLnB1dChBY3Rpb25JbnB1dHMuQ1VSUkVOVF9UT09MX01BTkFHRVIsY3VycmVudFRvb2xNYW5hZ2VyKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9vdGhlckFjdGlvbnMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETERldGFpbHNGb3JtVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETERldGFpbHNGb3JtVmlldy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MjVjNTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1dTRExEZXRhaWxzRm9ybVZpZXcuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotJT4KLTx0YWJsZT4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9XU0RMX0RFVEFJTFNfREVTQyIpJT48L3RkPgotICA8L3RyPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yMD4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi1Ob2RlIHdzZGxOb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCk7Ci1XU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IChXU0RMRWxlbWVudCl3c2RsTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotU3RyaW5nIGRvY3VtZW50YXRpb24gPSB3c2RsRWxlbWVudC5nZXRQcm9wZXJ0eUFzU3RyaW5nKFdTRExNb2RlbENvbnN0YW50cy5QUk9QX0RPQ1VNRU5UQVRJT04pOwotaWYgKGRvY3VtZW50YXRpb24gIT0gbnVsbCAmJiBkb2N1bWVudGF0aW9uLmxlbmd0aCgpID4gMCkKLXsKLSU+Ci08dGFibGU+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0ibGFiZWxzIj48JT1kb2N1bWVudGF0aW9uJT48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi19Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICA8dHI+Ci0gICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1dTRExfVVJMIiklPjwvdGg+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPjwlPXdzZGxFbGVtZW50LmdldFdzZGxVcmwoKSU+PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGU+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTEwPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPCUgICAKLXNlY3Rpb25IZWFkZXJJbmZvLmNsZWFyKCk7Ci1zZWN0aW9uSGVhZGVySW5mby5zZXRDb250YWluZXJJZCgiU2VydmljZXMiKTsKLVZlY3RvciBzZXJ2aWNlTm9kZXMgPSB3c2RsTm9kZS5nZXRDaGlsZE5vZGVzKCk7Ci1zZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoc2VydmljZU5vZGVzKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvZm9ybXMvc2VydmljZXNfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHRhYmxlPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0xMD4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlICAgCi1WZWN0b3IgYmluZGluZ05vZGVzID0gbmV3IFZlY3RvcigpOwotZm9yIChpbnQgaT0wO2k8c2VydmljZU5vZGVzLnNpemUoKTtpKyspCi17Ci0gIE5vZGUgc2VydmljZU5vZGUgPSAoTm9kZSlzZXJ2aWNlTm9kZXMuZWxlbWVudEF0KGkpOwotICBWZWN0b3Igc2VydmljZUJpbmRpbmdOb2RlcyA9IHNlcnZpY2VOb2RlLmdldENoaWxkTm9kZXMoKTsKLSAgZm9yIChpbnQgaj0wO2o8c2VydmljZUJpbmRpbmdOb2Rlcy5zaXplKCk7aisrKQotICB7Ci0gICAgTm9kZSBzZXJ2aWNlQmluZGluZ05vZGUgPSAoTm9kZSlzZXJ2aWNlQmluZGluZ05vZGVzLmVsZW1lbnRBdChqKTsKLSAgICBiaW5kaW5nTm9kZXMuYWRkRWxlbWVudChzZXJ2aWNlQmluZGluZ05vZGUpOwotICB9Ci19Ci1zZWN0aW9uSGVhZGVySW5mby5jbGVhcigpOwotc2VjdGlvbkhlYWRlckluZm8uc2V0Q29udGFpbmVySWQoIkJpbmRpbmdzIik7Ci1zZWN0aW9uSGVhZGVySW5mby5zZXRPdGhlclByb3BlcnRpZXMoYmluZGluZ05vZGVzKTsKLSU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvZm9ybXMvYmluZGluZ3NfdGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci08JQotaWYgKHNlcnZpY2VOb2Rlcy5zaXplKCkgPiAwKQotewotJT4KLSAgdHdpc3QoIlNlcnZpY2VzIiwieFNlcnZpY2VzIik7Ci08JQotfQotaWYgKGJpbmRpbmdOb2Rlcy5zaXplKCkgPiAwKQotewotJT4KLSAgdHdpc3QoIkJpbmRpbmdzIiwieEJpbmRpbmdzIik7Ci08JQotfQotJT4KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1dTRExEZXRhaWxzU291cmNlVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETERldGFpbHNTb3VyY2VWaWV3LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcwYTRiNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETERldGFpbHNTb3VyY2VWaWV3LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQveG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC53c2RsNGouV1NETEZhY3RvcnlJbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEuaW8uKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC53c2RsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXgud3NkbC54bWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC53c2RsLmZhY3RvcnkuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLVdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gKFdTRExFbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gd3NkbEVsZW1lbnQuZ2V0RGVmaW5pdGlvbigpOwotV1NETEZhY3Rvcnkgd3NkbEZhY3RvcnkgPSBuZXcgV1NETEZhY3RvcnlJbXBsKCk7Ci1XU0RMV3JpdGVyIHdzZGxXcml0ZXIgPSB3c2RsRmFjdG9yeS5uZXdXU0RMV3JpdGVyKCk7Ci1TdHJpbmdXcml0ZXIgc3RyaW5nV3JpdGVyID0gbmV3IFN0cmluZ1dyaXRlcigpOwotdHJ5Ci17Ci0gIHdzZGxXcml0ZXIud3JpdGVXU0RMKGRlZmluaXRpb24sIHN0cmluZ1dyaXRlcik7Ci0gICU+Ci0gIDwlPXN0cmluZ1dyaXRlci50b1N0cmluZygpJT4KLSAgPCUKLX0KLWNhdGNoIChXU0RMRXhjZXB0aW9uIHdzZGxlKQotewotICAlPgotICA8P3htbCB2ZXJzaW9uPSIxLjAiPz4KLSAgPCUKLX0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaEZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1dTRExJbXBvcnRXU0RMVG9Xb3JrYmVuY2hGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFkOWQ1Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaEZvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLldTRExQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLldTRExFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1Qcm9wZXJ0aWVzIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICBTdHJpbmcgd3NkbFVybCA9ICgoV1NETEVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCkpLmdldFdzZGxVcmwoKTsKLSAgIGZvcm1Qcm9wZXJ0aWVzLnB1dCgiZm9ybUFjdGlvbkxpbmsiLCJ3c2RsL2FjdGlvbnMvV1NETEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbkpTUC5qc3AiKTsKLSAgIGZvcm1Qcm9wZXJ0aWVzLnB1dCgid3NkbFVSTCIsd3NkbFVybCk7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvSW1wb3J0V1NETEFuZFdTSUxUb1dvcmtiZW5jaEZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1dTRExMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODkzZDgwYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETExhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJmb3JtQWN0aW9uTGluayIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi1mb3JtQWN0aW9uTGluay5hcHBlbmQoIndzZGwvYWN0aW9ucy9XU0RMTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbkpTUC5qc3AiKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETFNlcnZpY2VEZXRhaWxzRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvV1NETFNlcnZpY2VEZXRhaWxzRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZjRiZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL1dTRExTZXJ2aWNlRGV0YWlsc0Zvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgTm9kZSBzZXJ2aWNlTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfV1NETF9TRVJWSUNFX0RFVEFJTFMiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvdGFibGVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotPCUKLSAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJ3c2RsL2ltYWdlcy9vcGVuX3dzZGxfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgIFN0cmluZyB0aXRsZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfV1NETF9TRVJWSUNFX0RFVEFJTFMiKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlID0gIi9mb3Jtcy9mb3JtaGVhZGVyLmluYyIgJT4KLTx0YWJsZT4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9TRVJWSUNFX0RFVEFJTFNfREVTQyIpJT48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi0gICBXU0RMU2VydmljZUVsZW1lbnQgd3NkbFNlcnZpY2VFbGVtZW50ID0gKFdTRExTZXJ2aWNlRWxlbWVudClzZXJ2aWNlTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgU3RyaW5nIGRvY3VtZW50YXRpb24gPSB3c2RsU2VydmljZUVsZW1lbnQuZ2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9ET0NVTUVOVEFUSU9OKTsKLSAgIGlmIChkb2N1bWVudGF0aW9uLmxlbmd0aCgpID4gMCkKLSAgIHsKLSU+Ci08dGFibGU+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0ibGFiZWxzIj48JT1kb2N1bWVudGF0aW9uJT48L3RkPgotICA8L3RyPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0xMD4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwlCi0gICB9Ci0gICBWZWN0b3IgYmluZGluZ05vZGVzID0gc2VydmljZU5vZGUuZ2V0Q2hpbGROb2RlcygpOwotICAgc2VjdGlvbkhlYWRlckluZm8uY2xlYXIoKTsKLSAgIHNlY3Rpb25IZWFkZXJJbmZvLnNldENvbnRhaW5lcklkKCJCaW5kaW5ncyIpOwotICAgc2VjdGlvbkhlYWRlckluZm8uc2V0T3RoZXJQcm9wZXJ0aWVzKGJpbmRpbmdOb2Rlcyk7Ci0lPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL2Zvcm1zL2JpbmRpbmdzX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvZGl2PgotPCUKLSAgIGlmIChiaW5kaW5nTm9kZXMuc2l6ZSgpID4gMCkKLSAgIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdHdpc3QoIkJpbmRpbmdzIiwieEJpbmRpbmdzIik7Ci08L3NjcmlwdD4KLTwlCi0gICB9Ci0lPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL2JpbmRpbmdzX3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9iaW5kaW5nc190YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NmVlNjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL2JpbmRpbmdzX3RhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmF4LndzZGwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgIFN0cmluZyB0YWJsZUNvbnRhaW5lcklkID0gc2VjdGlvbkhlYWRlckluZm8uZ2V0Q29udGFpbmVySWQoKTsKLSAgIFN0cmluZ0J1ZmZlciB0d2lzdEltYWdlTmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoIngiKTsKLSAgIHR3aXN0SW1hZ2VOYW1lLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklkKTsKLSU+Ci08dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT48YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLCc8JT10d2lzdEltYWdlTmFtZS50b1N0cmluZygpJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZS50b1N0cmluZygpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RjbG9zZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfQ0xPU0VEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+PC90ZD4KLSAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPjxzdHJvbmc+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQklORElOR1MiKSU+PC9zdHJvbmc+PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPGRpdiBpZD0iPCU9dGFibGVDb250YWluZXJJZCU+IiBzdHlsZT0iZGlzcGxheTpub25lOyI+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICA8dHI+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIiB3aWR0aD0iMjAlIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FIiklPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIiB3aWR0aD0iMjAlIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9CSU5ESU5HX1RZUEUiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0RPQ1VNRU5UQVRJT04iKSU+PC90aD4KLSAgICA8L3RyPgotPCUKLSAgIFZlY3RvciBiaW5kaW5nTm9kZXMgPSAoVmVjdG9yKXNlY3Rpb25IZWFkZXJJbmZvLmdldE90aGVyUHJvcGVydGllcygpOwotICAgZm9yIChpbnQgaT0wO2k8YmluZGluZ05vZGVzLnNpemUoKTtpKyspCi0gICB7Ci0gICAgIE5vZGUgYmluZGluZ05vZGUgPSAoTm9kZSliaW5kaW5nTm9kZXMuZWxlbWVudEF0KGkpOwotICAgICBXU0RMQmluZGluZ0VsZW1lbnQgd3NkbEJpbmRpbmdFbGVtZW50ID0gKFdTRExCaW5kaW5nRWxlbWVudCliaW5kaW5nTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgICBCaW5kaW5nIGJpbmRpbmcgPSB3c2RsQmluZGluZ0VsZW1lbnQuZ2V0QmluZGluZygpOwotJT4KLSAgICA8dHI+Ci0gICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChTZWxlY3RXU0RMTmF2aWdhdG9yTm9kZUFjdGlvbi5nZXRBY3Rpb25MaW5rKGJpbmRpbmdOb2RlLmdldE5vZGVJZCgpLGZhbHNlKSkpJT4iPjwlPWJpbmRpbmcuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSU+PC90ZD4KLSAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldEJpbmRpbmdUeXBlU3RyaW5nKHdzZGxCaW5kaW5nRWxlbWVudC5nZXRCaW5kaW5nVHlwZSgpKSU+PC90ZD4KLTwlCi0gICAgIFdTRExTZXJ2aWNlRWxlbWVudCB3c2RsU2VydmljZUVsZW1lbnQgPSAoV1NETFNlcnZpY2VFbGVtZW50KXdzZGxCaW5kaW5nRWxlbWVudC5nZXRQYXJlbnRFbGVtZW50KCk7Ci0gICAgIFN0cmluZyBkb2N1bWVudGF0aW9uID0gd3NkbFNlcnZpY2VFbGVtZW50LmdldFByb3BlcnR5QXNTdHJpbmcoV1NETE1vZGVsQ29uc3RhbnRzLlBST1BfRE9DVU1FTlRBVElPTik7Ci0gICAgIGlmIChkb2N1bWVudGF0aW9uLmxlbmd0aCgpIDwgMSkKLSAgICAgICBkb2N1bWVudGF0aW9uID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJUQUJMRV9CTEFOS19QTEFDRUhPTERFUiIpOyAgICAgCi0lPgotICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj48JT1kb2N1bWVudGF0aW9uJT48L3RkPgotICAgIDwvdHI+Ci08JQotICAgfQotJT4KLSAgPC90YWJsZT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL2VuZHBvaW50X3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9lbmRwb2ludF90YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZGQyZTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL2VuZHBvaW50X3RhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gYWRkRW5kcG9pbnQodGFibGVDb250YWluZXJJRCwgaWQsIG5hbWUsIHZhbHVlLCBpc1JlbW92YWJsZSkKLSAgewotICAgIHR3aXN0T3Blbih0YWJsZUNvbnRhaW5lcklEKTsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklEKTsKLSAgICB2YXIgdGFibGVCb2R5ID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikuaXRlbSgwKTsKLSAgICB2YXIgbmV3Um93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICB2YXIgY29sdW1uMCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0gICAgdmFyIHJvd0NoZWNrYm94ID0gY3JlYXRlUm93Q2hlY2tib3goKTsKLSAgICBpZiAoIWlzUmVtb3ZhYmxlKQotICAgIHsKLSAgICAgIHJvd0NoZWNrYm94LmRpc2FibGVkID0gdHJ1ZTsKLSAgICB9Ci0gICAgY29sdW1uMC5hcHBlbmRDaGlsZChyb3dDaGVja2JveCk7Ci0KLSAgICB2YXIgZW5kUG9pbnQ7Ci0gICAgaWYgKGlzUmVtb3ZhYmxlKQotICAgIHsKLSAgICAgIGVuZFBvaW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICAgIGVuZFBvaW50LnR5cGUgPSAidGV4dCI7Ci0gICAgICBlbmRQb2ludC5pZCA9IGlkOwotICAgICAgZW5kUG9pbnQubmFtZSA9IG5hbWU7Ci0gICAgICBpZiAodmFsdWUgIT0gbnVsbCkKLSAgICAgICAgZW5kUG9pbnQudmFsdWUgPSB2YWx1ZTsKLSAgICAgIGVuZFBvaW50LmNsYXNzTmFtZSA9ICJ0YWJsZXRleHRlbnRlciI7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGVuZFBvaW50ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodmFsdWUpOwotICAgIGNvbHVtbjEuYXBwZW5kQ2hpbGQoZW5kUG9pbnQpOwotCi0gICAgY29sdW1uMC5jbGFzc05hbWUgPSAiY2hlY2tib3hjZWxscyI7Ci0gICAgY29sdW1uMS5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjApOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4xKTsKLSAgICB0YWJsZUJvZHkuYXBwZW5kQ2hpbGQobmV3Um93KTsKLSAgfQotCi0gIGZ1bmN0aW9uIGhhbmRsZUVuZHBvaW50Q2hlY2tBbGxDbGljayh0YWJsZUNvbnRhaW5lcklkLGNoZWNrQWxsQ2hlY2tib3gpCi0gIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICBmb3IgKHZhciBpPW51bWJlck9mSGVhZGVyUm93cztpPHRhYmxlLnJvd3MubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgcm93Q2hlY2tib3hDZWxsID0gdGFibGUucm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKS5pdGVtKDApOwotICAgICAgdmFyIHJvd0NoZWNrYm94ID0gcm93Q2hlY2tib3hDZWxsLmNoaWxkTm9kZXNbMF07Ci0gICAgICBpZiAoIXJvd0NoZWNrYm94LmRpc2FibGVkKQotICAgICAgewotICAgICAgICByb3dDaGVja2JveC5jaGVja2VkID0gY2hlY2tBbGxDaGVja2JveC5jaGVja2VkOwotICAgICAgICBpZiAocm93Q2hlY2tib3guY2hlY2tlZCkKLSAgICAgICAgICBoaWdobGlnaHRSb3codGFibGUucm93c1tpXSwicm93Y29sb3IiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGhpZ2hsaWdodFJvdyh0YWJsZS5yb3dzW2ldLCJ0YWJsZWNlbGxzIik7Ci0gICAgICB9Ci0gICAgfQotICB9Ci08L3NjcmlwdD4KLTwlCi0gICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgIFN0cmluZyB0YWJsZUNvbnRhaW5lcklEID0gc2VjdGlvbkhlYWRlckluZm8uZ2V0Q29udGFpbmVySWQoKTsKLSAgIFN0cmluZ0J1ZmZlciB0d2lzdEltYWdlTmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoIngiKTsKLSAgIHR3aXN0SW1hZ2VOYW1lLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklEKTsgICAKLSAgIFdTRExCaW5kaW5nRWxlbWVudCBiaW5kaW5nRWxlbWVudCA9IChXU0RMQmluZGluZ0VsZW1lbnQpc2VjdGlvbkhlYWRlckluZm8uZ2V0T3RoZXJQcm9wZXJ0aWVzKCk7Ci0gICBTdHJpbmdbXSBlbmRwb2ludHMgPSBiaW5kaW5nRWxlbWVudC5nZXRFbmRQb2ludHMoKTsKLSAgIFN0cmluZyBhZGRyZXNzTG9jYXRpb24gPSAoKFdTRExTZXJ2aWNlRWxlbWVudCliaW5kaW5nRWxlbWVudC5nZXRQYXJlbnRFbGVtZW50KCkpLmdldEFkZHJlc3NMb2NhdGlvbihiaW5kaW5nRWxlbWVudC5nZXRCaW5kaW5nKCkpOyAgIAotJT4KLTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJRCU+JywnPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgIDxzdHJvbmc+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRU5EX1BPSU5UUyIpJT48L3N0cm9uZz4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmFkZEVuZHBvaW50KCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCAnPCU9V1NETEFjdGlvbklucHV0cy5FTkRfUE9JTlQlPicsICc8JT1XU0RMQWN0aW9uSW5wdXRzLkVORF9QT0lOVCU+JywgJzwlPWFkZHJlc3NMb2NhdGlvbiU+JywgdHJ1ZSkiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnJlbW92ZVNlbGVjdGVkUm93cygnPCU9dGFibGVDb250YWluZXJJRCU+JykiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfUkVNT1ZFIiklPjwvYT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08ZGl2IGlkPSI8JT10YWJsZUNvbnRhaW5lcklEJT4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgIDx0cj4KLSAgICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVFbmRwb2ludENoZWNrQWxsQ2xpY2soJzwlPXRhYmxlQ29udGFpbmVySUQlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9FTkRfUE9JTlRTIiklPjwvdGg+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci08JQotICBib29sZWFuIGlzRGVmYXVsdEFkZGVkID0gZmFsc2U7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgZW5kcG9pbnRzLmxlbmd0aDsgaSsrKQotICB7Ci0gICAgaWYgKGVuZHBvaW50c1tpXS5lcXVhbHMoYWRkcmVzc0xvY2F0aW9uKSAmJiAhaXNEZWZhdWx0QWRkZWQpCi0gICAgewotJT4KLSAgICBhZGRFbmRwb2ludCgnPCU9dGFibGVDb250YWluZXJJRCU+JywgJzwlPVdTRExBY3Rpb25JbnB1dHMuRU5EX1BPSU5UJT4nLCAiIiwgJzwlPWVuZHBvaW50c1tpXSU+JywgZmFsc2UpOwotICAgIAotPCUKLSAgICAgIGlzRGVmYXVsdEFkZGVkID0gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSU+Ci0gICAgYWRkRW5kcG9pbnQoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsICc8JT1XU0RMQWN0aW9uSW5wdXRzLkVORF9QT0lOVCU+JywgJzwlPVdTRExBY3Rpb25JbnB1dHMuRU5EX1BPSU5UJT4nLCAnPCU9ZW5kcG9pbnRzW2ldJT4nLCB0cnVlKTsKLTwlCi0gICAgfQotICB9Ci0lPgotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvb3BlcmF0aW9uc190YWJsZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZm9ybXMvb3BlcmF0aW9uc190YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZTgyNjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL29wZXJhdGlvbnNfdGFibGUuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJzZWN0aW9uSGVhZGVySW5mbyIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5TZWN0aW9uSGVhZGVySW5mbyIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi0gICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgIFN0cmluZyB0YWJsZUNvbnRhaW5lcklkID0gc2VjdGlvbkhlYWRlckluZm8uZ2V0Q29udGFpbmVySWQoKTsKLSAgIFN0cmluZ0J1ZmZlciB0d2lzdEltYWdlTmFtZSA9IG5ldyBTdHJpbmdCdWZmZXIoIngiKTsKLSAgIHR3aXN0SW1hZ2VOYW1lLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklkKTsgICAKLSU+Ci08dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT48YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT10YWJsZUNvbnRhaW5lcklkJT4nLCc8JT10d2lzdEltYWdlTmFtZS50b1N0cmluZygpJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZS50b1N0cmluZygpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RjbG9zZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfQ0xPU0VEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+PC90ZD4KLSAgICA8dGQgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPjxzdHJvbmc+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfT1BFUkFUSU9OUyIpJT48L3N0cm9uZz48L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCB2YWxpZ249InRvcCIgaGVpZ2h0PTEwPjxpbWcgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9rZXlsaW5lLmdpZiIpKSU+IiBhbHQ9IiIgaGVpZ2h0PTIgd2lkdGg9IjEwMCUiPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08ZGl2IGlkPSI8JT10YWJsZUNvbnRhaW5lcklkJT4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgIDx0cj4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiIHdpZHRoPSIyMCUiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC90aD4KLSAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0RPQ1VNRU5UQVRJT04iKSU+PC90aD4KLSAgICA8L3RyPgotPCUKLSAgIFZlY3RvciBvcGVyYXRpb25Ob2RlcyA9IChWZWN0b3Ipc2VjdGlvbkhlYWRlckluZm8uZ2V0T3RoZXJQcm9wZXJ0aWVzKCk7Ci0gICBmb3IgKGludCBpPTA7aTxvcGVyYXRpb25Ob2Rlcy5zaXplKCk7aSsrKQotICAgewotICAgICBOb2RlIG9wZXJhdGlvbk5vZGUgPSAoTm9kZSlvcGVyYXRpb25Ob2Rlcy5lbGVtZW50QXQoaSk7Ci0gICAgIFdTRExPcGVyYXRpb25FbGVtZW50IHdzZGxPcGVyYXRpb25FbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KW9wZXJhdGlvbk5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSU+Ci0gICAgPHRyPgotICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2VsZWN0V1NETE5hdmlnYXRvck5vZGVBY3Rpb24uZ2V0QWN0aW9uTGluayhvcGVyYXRpb25Ob2RlLmdldE5vZGVJZCgpLGZhbHNlKSkpJT4iPjwlPXdzZGxPcGVyYXRpb25FbGVtZW50LmdldE9wZXJhdGlvbigpLmdldE5hbWUoKSU+PC9hPjwvdGQ+Ci08JSAgICAgCi0gICAgIFN0cmluZyBkb2N1bWVudGF0aW9uID0gd3NkbE9wZXJhdGlvbkVsZW1lbnQuZ2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9ET0NVTUVOVEFUSU9OKTsKLSAgICAgaWYgKGRvY3VtZW50YXRpb24ubGVuZ3RoKCkgPCAxKQotICAgICAgIGRvY3VtZW50YXRpb24gPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIlRBQkxFX0JMQU5LX1BMQUNFSE9MREVSIik7Ci0lPgotICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj48JT1kb2N1bWVudGF0aW9uJT48L3RkPgotICAgIDwvdHI+Ci08JSAgIAotICAgfSAgIAotJT4KLSAgPC90YWJsZT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL3NlcnZpY2VzX3RhYmxlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mb3Jtcy9zZXJ2aWNlc190YWJsZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMzU5YzguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2Zvcm1zL3NlcnZpY2VzX3RhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0ic2VjdGlvbkhlYWRlckluZm8iIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuU2VjdGlvbkhlYWRlckluZm8iIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICBTdHJpbmcgdGFibGVDb250YWluZXJJZCA9IHNlY3Rpb25IZWFkZXJJbmZvLmdldENvbnRhaW5lcklkKCk7Ci0gICBTdHJpbmdCdWZmZXIgdHdpc3RJbWFnZU5hbWUgPSBuZXcgU3RyaW5nQnVmZmVyKCJ4Iik7Ci0gICB0d2lzdEltYWdlTmFtZS5hcHBlbmQodGFibGVDb250YWluZXJJZCk7ICAgCi0lPgotPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+PGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJZCU+JywnPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUudG9TdHJpbmcoKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPjwvdGQ+Ci0gICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj48c3Ryb25nPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1NFUlZJQ0VTIiklPjwvc3Ryb25nPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTxkaXYgaWQ9IjwlPXRhYmxlQ29udGFpbmVySWQlPiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgPHRyPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciIgd2lkdGg9IjIwJSI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTkFNRSIpJT48L3RoPgotICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRE9DVU1FTlRBVElPTiIpJT48L3RoPgotICAgIDwvdHI+Ci08JQotICAgVmVjdG9yIHNlcnZpY2VOb2RlcyA9IChWZWN0b3Ipc2VjdGlvbkhlYWRlckluZm8uZ2V0T3RoZXJQcm9wZXJ0aWVzKCk7Ci0gICBmb3IgKGludCBpPTA7aTxzZXJ2aWNlTm9kZXMuc2l6ZSgpO2krKykKLSAgIHsKLSAgICAgTm9kZSBzZXJ2aWNlTm9kZSA9IChOb2RlKXNlcnZpY2VOb2Rlcy5lbGVtZW50QXQoaSk7Ci0gICAgIFdTRExTZXJ2aWNlRWxlbWVudCB3c2RsU2VydmljZUVsZW1lbnQgPSAoV1NETFNlcnZpY2VFbGVtZW50KXNlcnZpY2VOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0lPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNlbGVjdFdTRExOYXZpZ2F0b3JOb2RlQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VydmljZU5vZGUuZ2V0Tm9kZUlkKCksZmFsc2UpKSklPiI+PCU9d3NkbFNlcnZpY2VFbGVtZW50LmdldFNlcnZpY2UoKS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpJT48L2E+PC90ZD4KLTwlICAgICAKLSAgICAgU3RyaW5nIGRvY3VtZW50YXRpb24gPSB3c2RsU2VydmljZUVsZW1lbnQuZ2V0UHJvcGVydHlBc1N0cmluZyhXU0RMTW9kZWxDb25zdGFudHMuUFJPUF9ET0NVTUVOVEFUSU9OKTsKLSAgICAgaWYgKGRvY3VtZW50YXRpb24ubGVuZ3RoKCkgPCAxKQotICAgICAgIGRvY3VtZW50YXRpb24gPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIlRBQkxFX0JMQU5LX1BMQUNFSE9MREVSIik7Ci0lPgotICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj48JT1kb2N1bWVudGF0aW9uJT48L3RkPgotICAgIDwvdHI+Ci08JSAgIAotICAgfSAgIAotJT4KLSAgPC90YWJsZT4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50Ly5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvU09BUEVuY0FycmF5Rml4V0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9TT0FQRW5jQXJyYXlGaXhXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2MyMzU1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9TT0FQRW5jQXJyYXlGaXhXRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlTT0FQRW5jQXJyYXlGcmFnbWVudCBmcmFnID0gKElTT0FQRW5jQXJyYXlGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotU3RyaW5nIHRhYmxlQ29udGFpbmVySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCkpLmFwcGVuZChmcmFnLmdldElEKCkpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgdHdpc3RJbWFnZU5hbWUgPSAobmV3IFN0cmluZ0J1ZmZlcigieCIpKS5hcHBlbmQodGFibGVDb250YWluZXJJRCkudG9TdHJpbmcoKTsKLSU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlblhTREluZm9EaWFsb2coJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChPcGVuWFNESW5mb0RpYWxvZ0FjdGlvbi5nZXRBY3Rpb25MaW5rKHNlc3Npb24uZ2V0SWQoKSxzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksZnJhZ0lELnRvU3RyaW5nKCkpKSklPicpIj48JT1mcmFnLmdldE5hbWUoKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxzcGFuIGlkPSI8JT10YWJsZUNvbnRhaW5lcklEJT4iPgotPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAiZml4ZnJhZ3RhYmxlIiA6ICJpbm5lcmZpeGZyYWd0YWJsZSIpJT4iPgotICA8dHI+Ci0gICAgPHRkIHdpZHRoPTE2PgotICAgICAgPGltZyB3aWR0aD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0gICAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvZnJhZ21lbnQvWFNER3JvdXBTZXFGaXhXRnJhZ21lbnRKU1AuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPC9zcGFuPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1NPQVBFbmNBcnJheVJGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvU09BUEVuY0FycmF5UkZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhmMmU2YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvU09BUEVuY0FycmF5UkZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBvcGVyTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpb3Blck5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlTT0FQRW5jQXJyYXlGcmFnbWVudCBmcmFnID0gKElTT0FQRW5jQXJyYXlGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotU3RyaW5nIHRhYmxlQ29udGFpbmVySURCYXNlID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotU3RyaW5nIHR3aXN0SW1hZ2VOYW1lQmFzZSA9IChuZXcgU3RyaW5nQnVmZmVyKCJ4IikpLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklEQmFzZSkudG9TdHJpbmcoKTsKLVN0cmluZ1tdIGdyb3VwSURzID0gZnJhZy5nZXRHcm91cElEcygpOwotZm9yIChpbnQgaSA9IDA7IGkgPCBncm91cElEcy5sZW5ndGg7IGkrKykgewotJT4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICA8dHI+Ci0gICAgICA8dGQgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT1pICsgdGFibGVDb250YWluZXJJREJhc2UlPicsJzwlPWkgKyB0d2lzdEltYWdlTmFtZUJhc2UlPicpIj48aW1nIG5hbWU9IjwlPWkgKyB0d2lzdEltYWdlTmFtZUJhc2UlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdG9wZW5lZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9PUEVORUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICAgIDwvdGQ+Ci0gICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgICA8JT1mcmFnLmdldE5hbWUoKSU+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0gIDxzcGFuIGlkPSI8JT1pICsgdGFibGVDb250YWluZXJJREJhc2UlPiI+Ci0gIDx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gImZpeGZyYWd0YWJsZSIgOiAiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLTwlCi0gICAgSVhTREZyYWdtZW50W10gY2hpbGRGcmFnbWVudHMgPSBmcmFnLmdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSURzW2ldKTsKLSAgICBmb3IgKGludCBqID0gMDsgaiA8IGNoaWxkRnJhZ21lbnRzLmxlbmd0aDsgaisrKSB7Ci0gICAgICBmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0gICAgICBmcmFnSUQuYXBwZW5kKGNoaWxkRnJhZ21lbnRzW2pdLmdldElEKCkpOwotJT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIHdpZHRoPTE2PgotICAgICAgICAgIDxpbWcgd2lkdGg9MTYgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zcGFjZS5naWYiKSklPiIgYWx0PSIiPgotICAgICAgICA8L3RkPgotICAgICAgICA8dGQ+Ci0gICAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWNoaWxkRnJhZ21lbnRzW2pdLmdldFJlYWRGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotPCUKLSAgICB9Ci0lPgotICA8L3RhYmxlPgotICA8L3NwYW4+Ci08JQotfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9TT0FQRW5jQXJyYXlSYW5nZVdGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvU09BUEVuY0FycmF5UmFuZ2VXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDJhNjk5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9TT0FQRW5jQXJyYXlSYW5nZVdGcmFnbWVudEpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotSVhTREdyb3VwU2VxRnJhZ21lbnQgZnJhZyA9IChJWFNER3JvdXBTZXFGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotU3RyaW5nIHRhYmxlQ29udGFpbmVySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCkpLmFwcGVuZChmcmFnLmdldElEKCkpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgdHdpc3RJbWFnZU5hbWUgPSAobmV3IFN0cmluZ0J1ZmZlcigieCIpKS5hcHBlbmQodGFibGVDb250YWluZXJJRCkudG9TdHJpbmcoKTsKLVN0cmluZyBuYW1lQW5jaG9ySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5OQU1FX0FOQ0hPUl9JRCkpLmFwcGVuZChmcmFnLmdldElEKCkpLnRvU3RyaW5nKCk7Ci0lPgotPGEgbmFtZT0iPCU9bmFtZUFuY2hvcklEJT4iLz4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJRCU+JywnPCU9dHdpc3RJbWFnZU5hbWUlPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RvcGVuZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfT1BFTkVEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpjcmVhdGVJbnN0YW5jZSgnPCU9dGFibGVDb250YWluZXJJRCU+JywgPCU9eHNkQ29uZmlnLmdldE1heE9jY3VycygpJT4sICc8JT1mcmFnSUQlPicsICc8JT1uYW1lQW5jaG9ySUQlPicpIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0FERCIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpjaGVja01pbk9jY3Vyc0FuZFJlbW92ZVNlbGVjdGVkUm93cygnPCU9dGFibGVDb250YWluZXJJRCU+JywgPCU9eHNkQ29uZmlnLmdldE1pbk9jY3VycygpJT4pIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1JFTU9WRSIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHNwYW4gaWQ9IjwlPXRhYmxlQ29udGFpbmVySUQlPiI+Ci08dGFibGUgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJyYW5nZWZyYWd0YWJsZSIgOiAiaW5uZXJyYW5nZWZyYWd0YWJsZSIpJT4iPgotICA8dHI+Ci0gICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPXRhYmxlQ29udGFpbmVySUQlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU09BUF9FTkNfQVJSQVlTIiklPjwvdGg+Ci0gIDwvdHI+Ci0gIDwlCi0gIFN0cmluZ1tdIGdyb3VwSURzID0gZnJhZy5nZXRHcm91cElEcygpOwotICBmb3IgKGludCBpID0gMDsgaSA8IGdyb3VwSURzLmxlbmd0aCB8fCBpIDwgeHNkQ29uZmlnLmdldE1pbk9jY3VycygpOyBpKyspIHsKLSAgICBTdHJpbmcgZ3JvdXBJRDsKLSAgICBpZiAoaSA8IGdyb3VwSURzLmxlbmd0aCkKLSAgICAgIGdyb3VwSUQgPSBncm91cElEc1tpXTsKLSAgICBlbHNlCi0gICAgICBncm91cElEID0gZnJhZy5jcmVhdGVHcm91cFNlcUluc3RhbmNlKCk7Ci0gICAgSVhTREZyYWdtZW50W10gZ3JvdXBNZW1iZXJGcmFnbWVudHMgPSBmcmFnLmdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSUQpOwotICAlPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD4KLSAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlUm93Q2hlY2tib3hDbGljaygpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1JPV19DSEVDS19CT1giKSU+Ij4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPWdyb3VwSUQlPiI+Ci0gICAgICA8JQotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGdyb3VwTWVtYmVyRnJhZ21lbnRzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgICAgICAgIGZyYWdJRC5hcHBlbmQoZ3JvdXBNZW1iZXJGcmFnbWVudHNbal0uZ2V0SUQoKSk7Ci0gICAgICAlPgotICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWdyb3VwTWVtYmVyRnJhZ21lbnRzW2pdLmdldFdyaXRlRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgICAgPCUKLSAgICAgICAgfQotICAgICAgJT4KLSAgICA8L3RkPgotICA8L3RyPgotICA8JQotICB9Ci0gICU+Ci08L3RhYmxlPgotPC9zcGFuPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1NPQVBIZWFkZXJXcmFwcGVyV0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9TT0FQSGVhZGVyV3JhcHBlcldGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0OTE4YzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1NPQVBIZWFkZXJXcmFwcGVyV0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMzA1ICAgMTE3MDM0IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXZWIgU2VydmljZXMgRXhwbG9yZXIgc2hvdWxkIHN1cHBvcnQgU09BUCBIZWFkZXJzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC5pbXBsLlNPQVBIZWFkZXJXcmFwcGVyRnJhZ21lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotU09BUEhlYWRlcldyYXBwZXJGcmFnbWVudCB3cmFwcGVyRnJhZ21lbnQgPSAoU09BUEhlYWRlcldyYXBwZXJGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotSVhTREZyYWdtZW50IGRlbGVnYXRpb25GcmFnbWVudCA9IHdyYXBwZXJGcmFnbWVudC5nZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKTsKLWZyYWdJRC5kZWxldGUoMCwgZnJhZ0lELmxlbmd0aCgpKTsKLWZyYWdJRC5hcHBlbmQoZGVsZWdhdGlvbkZyYWdtZW50LmdldElEKCkpOwotCi1TdHJpbmcgbXVzdFVuZGVyc3RhbmRJRCA9IHdyYXBwZXJGcmFnbWVudC5nZXRNdXN0VW5kZXJzdGFuZElEKCk7Ci1TdHJpbmcgYWN0b3JJRCA9IHdyYXBwZXJGcmFnbWVudC5nZXRBY3RvcklEKCk7Ci0KLVN0cmluZyBmaWVsZHNldENsYXNzID0gIEJyb3dzZXJEZXRlY3QuaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKHJlcXVlc3QpID8gIiIgOiAiaGVhZGVyZmllbGRzZXQiOwotJT4KLTx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJmaXhmcmFndGFibGUiPgotICA8dHI+Ci0gICAgPHRkPgotCSAgPGZpZWxkc2V0IGNsYXNzPSI8JT1maWVsZHNldENsYXNzJT4iPgotCQk8anNwOmluY2x1ZGUgcGFnZT0iPCU9ZGVsZWdhdGlvbkZyYWdtZW50LmdldFdyaXRlRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgkgICAgICAJICAKLQkJPHRhYmxlIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9ImZpeGZyYWd0YWJsZSI+Ci0JCSAgPHRyPgotCQkgICAgPHRkIGhlaWdodD0iMyI+PCEtLSBzcGFjZXIgLS0+PC90ZD4KLQkJICA8L3RyPgotCQkgIDx0cj4KLQkJICAgIDx0ZD4KLQkJICAgICAgPCUgaWYgKHdyYXBwZXJGcmFnbWVudC5pc011c3RVbmRlcnN0YW5kKCkpIHsgJT4gICAgCQotCQkgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IjwlPW11c3RVbmRlcnN0YW5kSUQlPiIgbmFtZT0iPCU9bXVzdFVuZGVyc3RhbmRJRCU+IiBjaGVja2VkLz4KLQkJICAgICAgPCUgfSBlbHNlIHsgJT4KLQkJICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSI8JT1tdXN0VW5kZXJzdGFuZElEJT4iIG5hbWU9IjwlPW11c3RVbmRlcnN0YW5kSUQlPiIvPgotCQkgICAgICA8JSB9ICU+ICAgICAgCQotCQkgICAgPC90ZD4KLQkJICAgIDx0ZCBjbGFzcz0ibGFiZWwiPgotCQkgICAgICA8bGFiZWwgZm9yPSI8JT1tdXN0VW5kZXJzdGFuZElEJT4iPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX01VU1RVTkRFUlNUQU5EIiklPjwvbGFiZWw+Ci0JCSAgICA8L3RkPgotCQkgICAgPHRkPnw8L3RkPgotCQkgICAgPHRkIGNsYXNzPSJsYWJlbCI+Ci0JCSAgICAgIDxsYWJlbCBmb3I9IjwlPWFjdG9ySUQlPiI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQUNUT1IiKSU+PC9sYWJlbD4KLQkJICAgIDwvdGQ+Ci0JCSAgICA8dGQ+Ci0JCSAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiA1cHgiPgotICAgICAgCQkgICAgPCUgaWYgKCF3cmFwcGVyRnJhZ21lbnQudmFsaWRhdGVBY3RvcigpKSB7ICU+Ci0gICAgICAJCSAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLSAgICAgICAgICAgICAgICA8JSB9ICU+Ci0gICAgICAgICAgICAgIDwvZGl2PgotICAgIAkJPC90ZD4gICAgCQotCQkgICAgPHRkIHdpZHRoPSIxMDAlIj4gICAgCQotCQkgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IjwlPWFjdG9ySUQlPiIgbmFtZT0iPCU9YWN0b3JJRCU+IiB2YWx1ZT0iPCU9d3JhcHBlckZyYWdtZW50LmdldEFjdG9yKCklPiIgY2xhc3M9InRhYmxldGV4dGVudGVyIi8+Ci0JCSAgICA8L3RkPgotCQkgIDwvdHI+Ci0JCSAgPHRyPgotCQkgICAgPHRkIGhlaWdodD0iMyI+PCEtLSBzcGFjZXIgLS0+PC90ZD4KLQkJICA8L3RyPiAgICAKLQkJPC90YWJsZT4KLQkgIDwvZmllbGRzZXQ+Ci0JPC90ZD4KLSAgPC90cj4KLSAgPHRyPgotCTx0ZCBoZWlnaHQ9IjUiPjwhLS0gc3BhY2VyIC0tPjwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhGaXhXRnJhZ21lbnRKU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhGaXhXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODdkNGJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4Rml4V0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDUxNiAgIDE4NTU5NiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG1pc2ludGVycHJldHMgcmVzcG9uc2UgbWVzc2FnZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJlbGVtZW50SUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJhdHRyaWJ1dGUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNEQ29tcGxleEZyYWdtZW50IGZyYWcgPSAoSVhTRENvbXBsZXhGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotSVhTREVsZW1lbnRGcmFnbWVudCBlbGVtZW50RnJhZ21lbnQgPSAoSVhTREVsZW1lbnRGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZWxlbWVudElELnRvU3RyaW5nKCkpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotU3RyaW5nIHRhYmxlQ29udGFpbmVySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCkpLmFwcGVuZChmcmFnLmdldElEKCkpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgdHdpc3RJbWFnZU5hbWUgPSAobmV3IFN0cmluZ0J1ZmZlcigieCIpKS5hcHBlbmQodGFibGVDb250YWluZXJJRCkudG9TdHJpbmcoKTsKLSU+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlblhTREluZm9EaWFsb2coJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChPcGVuWFNESW5mb0RpYWxvZ0FjdGlvbi5nZXRBY3Rpb25MaW5rKHNlc3Npb24uZ2V0SWQoKSxzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksZnJhZ0lELnRvU3RyaW5nKCkpKSklPicpIj48JT1mcmFnLmdldE5hbWUoKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgCi0gICAgPCUgCi0gICAgICBpZihlbGVtZW50RnJhZ21lbnQgIT0gbnVsbCAmJiBlbGVtZW50RnJhZ21lbnQuaXNOaWxsYWJsZSgpKXsKLSAgICAgICAgaWYoZWxlbWVudEZyYWdtZW50LmlzTmlsKCkpewotICAgICAgICAgICU+ICAKLSAgICAgICAgICA8dGQgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8JT0oKElYU0RFbGVtZW50RnJhZ21lbnQpZWxlbWVudEZyYWdtZW50KS5nZXROaWxJRCgpJT4iIHZhbHVlPSI8JT1JWFNERWxlbWVudEZyYWdtZW50Lk5JTF9WQUxVRSU+IiBjaGVja2VkPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0gCi0gICAgICAgIGVsc2V7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iID48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX05JTCIpJT48L3RkPiAKLSAgICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAlPgotICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08c3BhbiBpZD0iPCU9dGFibGVDb250YWluZXJJRCU+Ij4KLTx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gImZpeGZyYWd0YWJsZSIgOiAiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLSAgPCUKLSAgSVhTREZyYWdtZW50W10gY2hpbGRGcmFncyA9IGZyYWcuZ2V0QWxsRnJhZ21lbnRzKCk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgeHNkQ29uZmlnLmdldE1heE9jY3VycygpOyBpKyspIHsKLSAgICBJWFNERnJhZ21lbnQgY2hpbGRGcmFnOwotICAgIFN0cmluZyBjaGlsZEZyYWdJRDsKLSAgICBpZiAoaSA8IGNoaWxkRnJhZ3MubGVuZ3RoKSB7Ci0gICAgICBjaGlsZEZyYWcgPSBjaGlsZEZyYWdzW2ldOwotICAgICAgY2hpbGRGcmFnSUQgPSBjaGlsZEZyYWcuZ2V0SUQoKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBjaGlsZEZyYWdJRCA9IGZyYWcuY3JlYXRlQ29tcGxleEluc3RhbmNlKCk7Ci0gICAgICBjaGlsZEZyYWcgPSBmcmFnLmdldEZyYWdtZW50KGNoaWxkRnJhZ0lEKTsKLSAgICB9Ci0gICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgIGZyYWdJRC5hcHBlbmQoY2hpbGRGcmFnSUQpOwotICAgIGF0dHJpYnV0ZS5kZWxldGUoMCwgYXR0cmlidXRlLmxlbmd0aCgpKTsKLSAgICBhdHRyaWJ1dGUuYXBwZW5kKCJmYWxzZSIpOwotICAlPgotICA8dHI+Ci0gICAgPHRkIHdpZHRoPTE2PgotICAgICAgPGltZyB3aWR0aD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0gICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPWNoaWxkRnJhZ0lEJT4iPgotICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWNoaWxkRnJhZy5nZXRXcml0ZUZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICA8L3RkPgotICA8L3RyPgotICA8JQotIAotICBJWFNEQXR0cmlidXRlRnJhZ21lbnRbXSBhdHRyaWJ1dGVGcmFnbWVudHMgPSBmcmFnLmdldEFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwotICBJWFNEQXR0cmlidXRlRnJhZ21lbnQgYXR0cmlidXRlRnJhZ21lbnQ7Ci0gIGZvcihpbnQgaiA9IDA7IGogPCBhdHRyaWJ1dGVGcmFnbWVudHMubGVuZ3RoOyBqKyspewotICAgIGF0dHJpYnV0ZUZyYWdtZW50ID0gYXR0cmlidXRlRnJhZ21lbnRzW2pdOwotICAgIAotICAgIGlmKGF0dHJpYnV0ZUZyYWdtZW50LmdldElEKCkuc3RhcnRzV2l0aChjaGlsZEZyYWdJRCkpewotICAgICAgSVhTREZyYWdtZW50IGRlbGVnYXRpb25GcmFnbWVudCA9IGF0dHJpYnV0ZUZyYWdtZW50LmdldFhTRERlbGVnYXRpb25GcmFnbWVudCgpOwotICAgICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgICAgZnJhZ0lELmFwcGVuZChkZWxlZ2F0aW9uRnJhZ21lbnQuZ2V0SUQoKSk7Ci0gICAgICBhdHRyaWJ1dGUuZGVsZXRlKDAsIGF0dHJpYnV0ZS5sZW5ndGgoKSk7Ci0gICAgICBhdHRyaWJ1dGUuYXBwZW5kKCJ0cnVlIik7Ci0gICAgICAlPgotICAgICAgPHRyPgotICAgICAgICA8dGQgd2lkdGg9MTY+Ci0gICAgICAgICAgPGltZyB3aWR0aD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPWF0dHJpYnV0ZUZyYWdtZW50LmdldElEKCklPiI+Ci0gICAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWRlbGVnYXRpb25GcmFnbWVudC5nZXRXcml0ZUZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgICA8JQotICAgIH0gIAotICB9ICAKLX0KLSAgJT4KLTwvdGFibGU+Ci08L3NwYW4+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleFJGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleFJGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlYjU0MGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhSRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA1MTYgICAxODU1OTYgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBtaXNpbnRlcnByZXRzIHJlc3BvbnNlIG1lc3NhZ2UKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImVsZW1lbnRJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImF0dHJpYnV0ZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgb3Blck5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KW9wZXJOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNEQ29tcGxleEZyYWdtZW50IGZyYWcgPSAoSVhTRENvbXBsZXhGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotU3RyaW5nIHRhYmxlQ29udGFpbmVySURCYXNlID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotU3RyaW5nIHR3aXN0SW1hZ2VOYW1lQmFzZSA9IChuZXcgU3RyaW5nQnVmZmVyKCJ4IikpLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklEQmFzZSkudG9TdHJpbmcoKTsKLUlYU0RGcmFnbWVudFtdIGNoaWxkRnJhZ3MgPSBmcmFnLmdldEFsbEZyYWdtZW50cygpOwotZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZEZyYWdzLmxlbmd0aDsgaSsrKSB7Ci0gIGZyYWdJRC5kZWxldGUoMCwgZnJhZ0lELmxlbmd0aCgpKTsKLSAgZnJhZ0lELmFwcGVuZChjaGlsZEZyYWdzW2ldLmdldElEKCkpOwotJT4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICA8dHI+Ci0gICAgICA8dGQgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT1pICsgdGFibGVDb250YWluZXJJREJhc2UlPicsJzwlPWkgKyB0d2lzdEltYWdlTmFtZUJhc2UlPicpIj48aW1nIG5hbWU9IjwlPWkgKyB0d2lzdEltYWdlTmFtZUJhc2UlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdG9wZW5lZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9PUEVORUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICAgIDwvdGQ+Ci0gICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgICA8JT1mcmFnLmdldE5hbWUoKSU+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0gIDxzcGFuIGlkPSI8JT1pICsgdGFibGVDb250YWluZXJJREJhc2UlPiI+Ci0gIDx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gImZpeGZyYWd0YWJsZSIgOiAiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLSAgICA8dHI+Ci0gICAgICA8dGQgd2lkdGg9MTY+Ci0gICAgICAgIDxpbWcgd2lkdGg9MTYgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zcGFjZS5naWYiKSklPiIgYWx0PSIiPgotICAgICAgPC90ZD4KLSAgICAgIDx0ZD4KLSAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWNoaWxkRnJhZ3NbaV0uZ2V0UmVhZEZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPCUKLQotICBJWFNEQXR0cmlidXRlRnJhZ21lbnRbXSBhdHRyaWJ1dGVGcmFnbWVudHMgPSBmcmFnLmdldEFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwotICBJWFNEQXR0cmlidXRlRnJhZ21lbnQgYXR0cmlidXRlRnJhZ21lbnQ7Ci0gIGZvcihpbnQgaiA9IDA7IGogPCBhdHRyaWJ1dGVGcmFnbWVudHMubGVuZ3RoOyBqKyspewotICAgIGF0dHJpYnV0ZUZyYWdtZW50ID0gYXR0cmlidXRlRnJhZ21lbnRzW2pdOwotICAgIAotICAgIGlmIChhdHRyaWJ1dGVGcmFnbWVudC5nZXRJRCgpLnN0YXJ0c1dpdGgoY2hpbGRGcmFnc1tpXS5nZXRJRCgpKSkgewotICAgICAgSVhTREZyYWdtZW50IGRlbGVnYXRpb25GcmFnbWVudCA9IGF0dHJpYnV0ZUZyYWdtZW50LmdldFhTRERlbGVnYXRpb25GcmFnbWVudCgpOwotICAgICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgICAgZnJhZ0lELmFwcGVuZChkZWxlZ2F0aW9uRnJhZ21lbnQuZ2V0SUQoKSk7Ci0gICAgICBhdHRyaWJ1dGUuZGVsZXRlKDAsIGF0dHJpYnV0ZS5sZW5ndGgoKSk7Ci0gICAgICBhdHRyaWJ1dGUuYXBwZW5kKCJ0cnVlIik7Ci0gICAgICAlPgotICAgICAgPHRyPgotICAgICAgICA8dGQgd2lkdGg9MTY+Ci0gICAgICAgICAgPGltZyB3aWR0aD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPWF0dHJpYnV0ZUZyYWdtZW50LmdldElEKCklPiI+Ci0gICAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWRlbGVnYXRpb25GcmFnbWVudC5nZXRSZWFkRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICAgIDwlCi0gICAgfSAgCi0gIH0KLX0gIAotICAlPgotICAKLSAgPC90YWJsZT4KLSAgPC9zcGFuPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhSYW5nZVdGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleFJhbmdlV0ZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU1OThkMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleFJhbmdlV0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwODAyMDEgICAxOTc4NjUgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJlbGVtZW50SUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJhdHRyaWJ1dGUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNEQ29tcGxleEZyYWdtZW50IGZyYWcgPSAoSVhTRENvbXBsZXhGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotSVhTREVsZW1lbnRGcmFnbWVudCBlbGVtZW50RnJhZ21lbnQgPSAoSVhTREVsZW1lbnRGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZWxlbWVudElELnRvU3RyaW5nKCkpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotU3RyaW5nIHRhYmxlQ29udGFpbmVySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCkpLmFwcGVuZChmcmFnLmdldElEKCkpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgdHdpc3RJbWFnZU5hbWUgPSAobmV3IFN0cmluZ0J1ZmZlcigieCIpKS5hcHBlbmQodGFibGVDb250YWluZXJJRCkudG9TdHJpbmcoKTsKLVN0cmluZyBuYW1lQW5jaG9ySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5OQU1FX0FOQ0hPUl9JRCkpLmFwcGVuZChmcmFnLmdldElEKCkpLnRvU3RyaW5nKCk7Ci0lPgotPGEgbmFtZT0iPCU9bmFtZUFuY2hvcklEJT4iLz4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJRCU+JywnPCU9dHdpc3RJbWFnZU5hbWUlPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RvcGVuZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfT1BFTkVEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8JSAKLSAgICAgIGlmKGVsZW1lbnRGcmFnbWVudCAhPSBudWxsICYmIGVsZW1lbnRGcmFnbWVudC5pc05pbGxhYmxlKCkpewotICAgICAgICBpZihlbGVtZW50RnJhZ21lbnQuaXNOaWwoKSl7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iIGNoZWNrZWQ+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAlPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmNyZWF0ZUluc3RhbmNlKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCA8JT14c2RDb25maWcuZ2V0TWF4T2NjdXJzKCklPiwgJzwlPWZyYWdJRCU+JywgJzwlPW5hbWVBbmNob3JJRCU+JykiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmNoZWNrTWluT2NjdXJzQW5kUmVtb3ZlU2VsZWN0ZWRSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCA8JT14c2RDb25maWcuZ2V0TWluT2NjdXJzKCklPikiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfUkVNT1ZFIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08c3BhbiBpZD0iPCU9dGFibGVDb250YWluZXJJRCU+Ij4KLTx0YWJsZSBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gInJhbmdlZnJhZ3RhYmxlIiA6ICJpbm5lcnJhbmdlZnJhZ3RhYmxlIiklPiI+Ci0gIDx0cj4KLSAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9dGFibGVDb250YWluZXJJRCU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9DT05URU5UIiklPjwvdGg+Ci0gIDwvdHI+Ci0gIDwlCi0gIElYU0RGcmFnbWVudFtdIGNoaWxkRnJhZ3MgPSBmcmFnLmdldEFsbEZyYWdtZW50cygpOwotICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkRnJhZ3MubGVuZ3RoIHx8IGkgPCB4c2RDb25maWcuZ2V0TWluT2NjdXJzKCk7IGkrKykgewotICAgIElYU0RGcmFnbWVudCBjaGlsZEZyYWc7Ci0gICAgU3RyaW5nIGNoaWxkRnJhZ0lEOwotICAgIGlmIChpIDwgY2hpbGRGcmFncy5sZW5ndGgpIHsKLSAgICAgIGNoaWxkRnJhZyA9IGNoaWxkRnJhZ3NbaV07Ci0gICAgICBjaGlsZEZyYWdJRCA9IGNoaWxkRnJhZy5nZXRJRCgpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIGNoaWxkRnJhZ0lEID0gZnJhZy5jcmVhdGVDb21wbGV4SW5zdGFuY2UoKTsKLSAgICAgIGNoaWxkRnJhZyA9IGZyYWcuZ2V0RnJhZ21lbnQoY2hpbGRGcmFnSUQpOwotICAgIH0KLSAgICBmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0gICAgZnJhZ0lELmFwcGVuZChjaGlsZEZyYWdJRCk7Ci0gICU+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPgotICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVSb3dDaGVja2JveENsaWNrKCkiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfUk9XX0NIRUNLX0JPWCIpJT4iPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPWZyYWcuZ2V0SUQoKSU+IiB2YWx1ZT0iPCU9Y2hpbGRGcmFnSUQlPiI+Ci0gICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9Y2hpbGRGcmFnLmdldFdyaXRlRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci0gIDwlCi0gIAotICBJWFNEQXR0cmlidXRlRnJhZ21lbnRbXSBhdHRyaWJ1dGVGcmFnbWVudHMgPSBmcmFnLmdldEFsbEF0dHJpYnV0ZUZyYWdtZW50cygpOwotICBJWFNEQXR0cmlidXRlRnJhZ21lbnQgYXR0cmlidXRlRnJhZ21lbnQ7Ci0gIGZvcihpbnQgaiA9IDA7IGogPCBhdHRyaWJ1dGVGcmFnbWVudHMubGVuZ3RoOyBqKyspewotICAgIGF0dHJpYnV0ZUZyYWdtZW50ID0gYXR0cmlidXRlRnJhZ21lbnRzW2pdOwotICAgIAotICAgIGlmKGF0dHJpYnV0ZUZyYWdtZW50LmdldElEKCkuc3RhcnRzV2l0aChjaGlsZEZyYWdJRCkpewotICAgICAgSVhTREZyYWdtZW50IGRlbGVnYXRpb25GcmFnbWVudCA9IGF0dHJpYnV0ZUZyYWdtZW50LmdldFhTRERlbGVnYXRpb25GcmFnbWVudCgpOwotICAgICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgICAgZnJhZ0lELmFwcGVuZChkZWxlZ2F0aW9uRnJhZ21lbnQuZ2V0SUQoKSk7Ci0gICAgICBhdHRyaWJ1dGUuZGVsZXRlKDAsIGF0dHJpYnV0ZS5sZW5ndGgoKSk7Ci0gICAgICBhdHRyaWJ1dGUuYXBwZW5kKCJ0cnVlIik7Ci0gICAgICAgJT4KLSAgICAgIAotICAgICAgPHRyPgotICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiIHdpZHRoPTEwPgotICAgICAgICAgIAotICAgICAgICA8L3RkPgotICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPWZyYWcuZ2V0SUQoKSU+IiB2YWx1ZT0iPCU9YXR0cmlidXRlRnJhZ21lbnQuZ2V0SUQoKSU+Ij4KLSAgICAgICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9ZGVsZWdhdGlvbkZyYWdtZW50LmdldFdyaXRlRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgICAgICA8L3RkPgotICAgICA8L3RyPgotICAgICA8JQotICAgIAotICAgIAotICAgIH0gIAotICB9Ci19Ci0lPgotPC90YWJsZT4KLTwvc3Bhbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4U2ltcGxlQ29udGVudEZpeFdGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleFNpbXBsZUNvbnRlbnRGaXhXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTU2MjBjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4U2ltcGxlQ29udGVudEZpeFdGcmFnbWVudEpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotPCUKLS8qKgotKiA8Y29weXJpZ2h0PgotKgotKiBMaWNlbnNlZCBNYXRlcmlhbCAtIFByb3BlcnR5IG9mIElCTQotKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyIC0gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSogVVMgR292ZXJubWVudCBVc2VycyBSZXN0cmljdGVkIFJpZ2h0cyAtIFVzZSwgZHVwbGljYXRpb24gb3IgZGlzY2xvc3VyZQotKiByZXN0cmljdGVkIGJ5IEdTQSBBRFAgU2NoZWR1bGUgQ29udHJhY3Qgd2l0aCBJQk0gQ29ycC4KLSoKLSogPC9jb3B5cmlnaHQ+Ci0qCi0qIEZpbGUgcGx1Z2lucy9jb20uaWJtLmV0b29scy53ZWJzZXJ2aWNlLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4Rml4V0ZyYWdtZW50SlNQLmpzcCwgd3NhLmV0b29scy53cy5leHBsb3JlciwgbHVuYXItNS4xLjIgMgotKiBWZXJzaW9uIDEuMiAwNS8wNS8yNiAxNjoxODoyMwotKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImVsZW1lbnRJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImF0dHJpYnV0ZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RDb21wbGV4RnJhZ21lbnQgZnJhZyA9IChJWFNEQ29tcGxleEZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1JWFNERWxlbWVudEZyYWdtZW50IGVsZW1lbnRGcmFnbWVudCA9IChJWFNERWxlbWVudEZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChlbGVtZW50SUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1TdHJpbmcgdGFibGVDb250YWluZXJJRCA9IChuZXcgU3RyaW5nQnVmZmVyKEZyYWdtZW50Q29uc3RhbnRzLlRBQkxFX0lEKSkuYXBwZW5kKGZyYWcuZ2V0SUQoKSkudG9TdHJpbmcoKTsKLVN0cmluZyB0d2lzdEltYWdlTmFtZSA9IChuZXcgU3RyaW5nQnVmZmVyKCJ4IikpLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklEKS50b1N0cmluZygpOwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJRCU+JywnPCU9dHdpc3RJbWFnZU5hbWUlPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RvcGVuZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfT1BFTkVEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+Ci0gICAgPC90ZD4KLSAgICAKLSAgICA8JSAKLSAgICAgIGlmKGVsZW1lbnRGcmFnbWVudCAhPSBudWxsICYmIGVsZW1lbnRGcmFnbWVudC5pc05pbGxhYmxlKCkpewotICAgICAgICBpZihlbGVtZW50RnJhZ21lbnQuaXNOaWwoKSl7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iIGNoZWNrZWQ+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgICU+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxzcGFuIGlkPSI8JT10YWJsZUNvbnRhaW5lcklEJT4iPgotPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAiZml4ZnJhZ3RhYmxlIiA6ICJpbm5lcmZpeGZyYWd0YWJsZSIpJT4iPgotICA8JQotICAKLSAgCi0gIAotICAgIAotICBJWFNERnJhZ21lbnRbXSBjaGlsZEZyYWdzID0gZnJhZy5nZXRBbGxGcmFnbWVudHMoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCB4c2RDb25maWcuZ2V0TWF4T2NjdXJzKCk7IGkrKykgewotICAgIElYU0RGcmFnbWVudCBjaGlsZEZyYWc7Ci0gICAgU3RyaW5nIGNoaWxkRnJhZ0lEOwotICAgIGlmIChpIDwgY2hpbGRGcmFncy5sZW5ndGgpIHsKLSAgICAgIGNoaWxkRnJhZyA9IGNoaWxkRnJhZ3NbaV07Ci0gICAgICBjaGlsZEZyYWdJRCA9IGNoaWxkRnJhZy5nZXRJRCgpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIGNoaWxkRnJhZ0lEID0gZnJhZy5jcmVhdGVDb21wbGV4SW5zdGFuY2UoKTsKLSAgICAgIGNoaWxkRnJhZyA9IGZyYWcuZ2V0RnJhZ21lbnQoY2hpbGRGcmFnSUQpOwotICAgIH0KLSAgICBmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0gICAgZnJhZ0lELmFwcGVuZChjaGlsZEZyYWdJRCk7Ci0gICAgYXR0cmlidXRlLmRlbGV0ZSgwLCBhdHRyaWJ1dGUubGVuZ3RoKCkpOwotICAgIGF0dHJpYnV0ZS5hcHBlbmQoImZhbHNlIik7Ci0gICU+Ci0gIDx0cj4KLSAgICA8dGQgd2lkdGg9MTY+Ci0gICAgICA8aW1nIHdpZHRoPTE2IHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvc3BhY2UuZ2lmIikpJT4iIGFsdD0iIj4KLSAgICA8L3RkPgotICAgIDx0ZD4KLSAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPWZyYWcuZ2V0SUQoKSU+IiB2YWx1ZT0iPCU9Y2hpbGRGcmFnSUQlPiI+Ci0gICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9Y2hpbGRGcmFnLmdldFdyaXRlRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci0gIDwlCi0gIAotICAKLSAKLSAgSVhTREF0dHJpYnV0ZUZyYWdtZW50W10gYXR0cmlidXRlRnJhZ21lbnRzID0gZnJhZy5nZXRBbGxBdHRyaWJ1dGVGcmFnbWVudHMoKTsKLSAgSVhTREF0dHJpYnV0ZUZyYWdtZW50IGF0dHJpYnV0ZUZyYWdtZW50OwotICBmb3IoaW50IGogPSAwOyBqIDwgYXR0cmlidXRlRnJhZ21lbnRzLmxlbmd0aDsgaisrKXsKLSAgICBhdHRyaWJ1dGVGcmFnbWVudCA9IGF0dHJpYnV0ZUZyYWdtZW50c1tqXTsKLSAgICBpZihhdHRyaWJ1dGVGcmFnbWVudC5nZXRJRCgpLnN0YXJ0c1dpdGgoY2hpbGRGcmFnSUQpKXsKLSAgICBJWFNERnJhZ21lbnQgZGVsZWdhdGlvbkZyYWdtZW50ID0gYXR0cmlidXRlRnJhZ21lbnQuZ2V0WFNERGVsZWdhdGlvbkZyYWdtZW50KCk7Ci0gICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgIGZyYWdJRC5hcHBlbmQoZGVsZWdhdGlvbkZyYWdtZW50LmdldElEKCkpOwotICAgIGF0dHJpYnV0ZS5kZWxldGUoMCwgYXR0cmlidXRlLmxlbmd0aCgpKTsKLSAgICBhdHRyaWJ1dGUuYXBwZW5kKCJ0cnVlIik7Ci0gICAgICAlPgotICAgICAgPHRyPgotICAgICAgICA8dGQgd2lkdGg9MTY+Ci0gICAgICAgICAgPGltZyB3aWR0aD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPWF0dHJpYnV0ZUZyYWdtZW50LmdldElEKCklPiI+Ci0gICAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWRlbGVnYXRpb25GcmFnbWVudC5nZXRXcml0ZUZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICAgIDwvdGQ+Ci0gICAgIDwvdHI+Ci0gICAgCi0gICAgPCUKLSAgICB9Ci0gIH0gICAgCi19Ci0gICU+Ci08L3RhYmxlPgotPC9zcGFuPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhTaW1wbGVDb250ZW50UkZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4U2ltcGxlQ29udGVudFJGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3YzYwMjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRENvbXBsZXhTaW1wbGVDb250ZW50UkZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLTwlCi0vKioKLSogPGNvcHlyaWdodD4KLSoKLSogTGljZW5zZWQgTWF0ZXJpYWwgLSBQcm9wZXJ0eSBvZiBJQk0KLSogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0qIFVTIEdvdmVybm1lbnQgVXNlcnMgUmVzdHJpY3RlZCBSaWdodHMgLSBVc2UsIGR1cGxpY2F0aW9uIG9yIGRpc2Nsb3N1cmUKLSogcmVzdHJpY3RlZCBieSBHU0EgQURQIFNjaGVkdWxlIENvbnRyYWN0IHdpdGggSUJNIENvcnAuCi0qCi0qIDwvY29weXJpZ2h0PgotKgotKiBGaWxlIHBsdWdpbnMvY29tLmlibS5ldG9vbHMud2Vic2VydmljZS5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleFJGcmFnbWVudEpTUC5qc3AsIHdzYS5ldG9vbHMud3MuZXhwbG9yZXIsIGx1bmFyLTUuMS4yIDEKLSogVmVyc2lvbiAxLjEgMDMvMDIvMjggMTU6MzM6NTcKLSovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZWxlbWVudElEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iYXR0cmlidXRlIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBvcGVyTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpb3Blck5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RDb21wbGV4RnJhZ21lbnQgZnJhZyA9IChJWFNEQ29tcGxleEZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1TdHJpbmcgdGFibGVDb250YWluZXJJREJhc2UgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCkpLmFwcGVuZChmcmFnLmdldElEKCkpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgdHdpc3RJbWFnZU5hbWVCYXNlID0gKG5ldyBTdHJpbmdCdWZmZXIoIngiKSkuYXBwZW5kKHRhYmxlQ29udGFpbmVySURCYXNlKS50b1N0cmluZygpOwotSVhTREZyYWdtZW50W10gY2hpbGRGcmFncyA9IGZyYWcuZ2V0QWxsRnJhZ21lbnRzKCk7Ci1mb3IgKGludCBpID0gMDsgaSA8IGNoaWxkRnJhZ3MubGVuZ3RoOyBpKyspIHsKLSAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICBmcmFnSUQuYXBwZW5kKGNoaWxkRnJhZ3NbaV0uZ2V0SUQoKSk7Ci0lPgotICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgIDx0cj4KLSAgICAgIDx0ZCBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPWkgKyB0YWJsZUNvbnRhaW5lcklEQmFzZSU+JywnPCU9aSArIHR3aXN0SW1hZ2VOYW1lQmFzZSU+JykiPjxpbWcgbmFtZT0iPCU9aSArIHR3aXN0SW1hZ2VOYW1lQmFzZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgICAgPC90ZD4KLSAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICAgIDwlPWZyYWcuZ2V0TmFtZSgpJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLSAgPHNwYW4gaWQ9IjwlPWkgKyB0YWJsZUNvbnRhaW5lcklEQmFzZSU+Ij4KLSAgPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAiZml4ZnJhZ3RhYmxlIiA6ICJpbm5lcmZpeGZyYWd0YWJsZSIpJT4iPgotICAgIDx0cj4KLSAgICAgIDx0ZCB3aWR0aD0xNj4KLSAgICAgICAgPGltZyB3aWR0aD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgICA8L3RkPgotICAgICAgPHRkPgotICAgICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9Y2hpbGRGcmFnc1tpXS5nZXRSZWFkRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8JQotCi0gIElYU0RBdHRyaWJ1dGVGcmFnbWVudFtdIGF0dHJpYnV0ZUZyYWdtZW50cyA9IGZyYWcuZ2V0QWxsQXR0cmlidXRlRnJhZ21lbnRzKCk7Ci0gIElYU0RBdHRyaWJ1dGVGcmFnbWVudCBhdHRyaWJ1dGVGcmFnbWVudDsKLSAgZm9yKGludCBqID0gMDsgaiA8IGF0dHJpYnV0ZUZyYWdtZW50cy5sZW5ndGg7IGorKyl7Ci0gICAgYXR0cmlidXRlRnJhZ21lbnQgPSBhdHRyaWJ1dGVGcmFnbWVudHNbal07Ci0gICAgCi0gICAgaWYoYXR0cmlidXRlRnJhZ21lbnQuZ2V0SUQoKS5zdGFydHNXaXRoKGNoaWxkRnJhZ3NbaV0uZ2V0SUQoKSkpewotICAgICAgSVhTREZyYWdtZW50IGRlbGVnYXRpb25GcmFnbWVudCA9IGF0dHJpYnV0ZUZyYWdtZW50LmdldFhTRERlbGVnYXRpb25GcmFnbWVudCgpOwotICAgICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgICAgZnJhZ0lELmFwcGVuZChkZWxlZ2F0aW9uRnJhZ21lbnQuZ2V0SUQoKSk7Ci0gICAgICBhdHRyaWJ1dGUuZGVsZXRlKDAsIGF0dHJpYnV0ZS5sZW5ndGgoKSk7Ci0gICAgICBhdHRyaWJ1dGUuYXBwZW5kKCJ0cnVlIik7Ci0gICAgCi0gICAgICAKLSAgICAgICU+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCB3aWR0aD0xNj4KLSAgICAgICAgICA8aW1nIHdpZHRoPTE2IHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvc3BhY2UuZ2lmIikpJT4iIGFsdD0iIj4KLSAgICAgICAgPC90ZD4KLSAgICAgICAgPHRkPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPWZyYWcuZ2V0SUQoKSU+IiB2YWx1ZT0iPCU9YXR0cmlidXRlRnJhZ21lbnQuZ2V0SUQoKSU+Ij4KLSAgICAgICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9ZGVsZWdhdGlvbkZyYWdtZW50LmdldFJlYWRGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICA8L3RkPgotICAgICA8L3RyPgotICAgIDwlCi0gICAgCi0gICAgCi0gICAgfSAgCi0gIH0KLX0KLSAgJT4KLSAgCi0gIDwvdGFibGU+Ci0gIDwvc3Bhbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4U2ltcGxlQ29udGVudFJhbmdlV0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4U2ltcGxlQ29udGVudFJhbmdlV0ZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0MmYxNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEQ29tcGxleFNpbXBsZUNvbnRlbnRSYW5nZVdGcmFnbWVudEpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotPCUKLS8qKgotKiA8Y29weXJpZ2h0PgotKgotKiBMaWNlbnNlZCBNYXRlcmlhbCAtIFByb3BlcnR5IG9mIElCTQotKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyIC0gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSogVVMgR292ZXJubWVudCBVc2VycyBSZXN0cmljdGVkIFJpZ2h0cyAtIFVzZSwgZHVwbGljYXRpb24gb3IgZGlzY2xvc3VyZQotKiByZXN0cmljdGVkIGJ5IEdTQSBBRFAgU2NoZWR1bGUgQ29udHJhY3Qgd2l0aCBJQk0gQ29ycC4KLSoKLSogPC9jb3B5cmlnaHQ+Ci0qCi0qIEZpbGUgcGx1Z2lucy9jb20uaWJtLmV0b29scy53ZWJzZXJ2aWNlLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RDb21wbGV4UmFuZ2VXRnJhZ21lbnRKU1AuanNwLCB3c2EuZXRvb2xzLndzLmV4cGxvcmVyLCBsdW5hci01LjEuMiAyCi0qIFZlcnNpb24gMS4yIDA1LzA1LzI2IDE2OjE4OjI0Ci0qLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZWxlbWVudElEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iYXR0cmlidXRlIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotSVhTRENvbXBsZXhGcmFnbWVudCBmcmFnID0gKElYU0RDb21wbGV4RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLUlYU0RFbGVtZW50RnJhZ21lbnQgZWxlbWVudEZyYWdtZW50ID0gKElYU0RFbGVtZW50RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGVsZW1lbnRJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLVN0cmluZyB0YWJsZUNvbnRhaW5lcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotU3RyaW5nIHR3aXN0SW1hZ2VOYW1lID0gKG5ldyBTdHJpbmdCdWZmZXIoIngiKSkuYXBwZW5kKHRhYmxlQ29udGFpbmVySUQpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgbmFtZUFuY2hvcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuTkFNRV9BTkNIT1JfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotJT4KLTxhIG5hbWU9IjwlPW5hbWVBbmNob3JJRCU+Ii8+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlblhTREluZm9EaWFsb2coJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChPcGVuWFNESW5mb0RpYWxvZ0FjdGlvbi5nZXRBY3Rpb25MaW5rKHNlc3Npb24uZ2V0SWQoKSxzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksZnJhZ0lELnRvU3RyaW5nKCkpKSklPicpIj48JT1mcmFnLmdldE5hbWUoKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPCUgCi0gICAgICBpZihlbGVtZW50RnJhZ21lbnQgIT0gbnVsbCAmJiBlbGVtZW50RnJhZ21lbnQuaXNOaWxsYWJsZSgpKXsKLSAgICAgICAgaWYoZWxlbWVudEZyYWdtZW50LmlzTmlsKCkpewotICAgICAgICAgICU+ICAKLSAgICAgICAgICA8dGQgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8JT0oKElYU0RFbGVtZW50RnJhZ21lbnQpZWxlbWVudEZyYWdtZW50KS5nZXROaWxJRCgpJT4iIHZhbHVlPSI8JT1JWFNERWxlbWVudEZyYWdtZW50Lk5JTF9WQUxVRSU+IiBjaGVja2VkPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0gCi0gICAgICAgIGVsc2V7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iID48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX05JTCIpJT48L3RkPiAKLSAgICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgJT4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpjcmVhdGVJbnN0YW5jZSgnPCU9dGFibGVDb250YWluZXJJRCU+JywgPCU9eHNkQ29uZmlnLmdldE1heE9jY3VycygpJT4sICc8JT1mcmFnSUQlPicsICc8JT1uYW1lQW5jaG9ySUQlPicpIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0FERCIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpjaGVja01pbk9jY3Vyc0FuZFJlbW92ZVNlbGVjdGVkUm93c0F0dHJpYnV0ZSgnPCU9dGFibGVDb250YWluZXJJRCU+JywgPCU9eHNkQ29uZmlnLmdldE1pbk9jY3VycygpJT4pIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1JFTU9WRSIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHNwYW4gaWQ9IjwlPXRhYmxlQ29udGFpbmVySUQlPiI+Ci08dGFibGUgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJyYW5nZWZyYWd0YWJsZSIgOiAiaW5uZXJyYW5nZWZyYWd0YWJsZSIpJT4iPgotICA8dHI+Ci0gICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPXRhYmxlQ29udGFpbmVySUQlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQ09OVEVOVCIpJT48L3RoPgotICA8L3RyPgotICA8JQotIAotICBJWFNERnJhZ21lbnRbXSBjaGlsZEZyYWdzID0gZnJhZy5nZXRBbGxGcmFnbWVudHMoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZEZyYWdzLmxlbmd0aCB8fCBpIDwgeHNkQ29uZmlnLmdldE1pbk9jY3VycygpOyBpKyspIHsKLSAgICBJWFNERnJhZ21lbnQgY2hpbGRGcmFnOwotICAgIFN0cmluZyBjaGlsZEZyYWdJRDsKLSAgICBpZiAoaSA8IGNoaWxkRnJhZ3MubGVuZ3RoKSB7Ci0gICAgICBjaGlsZEZyYWcgPSBjaGlsZEZyYWdzW2ldOwotICAgICAgY2hpbGRGcmFnSUQgPSBjaGlsZEZyYWcuZ2V0SUQoKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBjaGlsZEZyYWdJRCA9IGZyYWcuY3JlYXRlQ29tcGxleEluc3RhbmNlKCk7Ci0gICAgICBjaGlsZEZyYWcgPSBmcmFnLmdldEZyYWdtZW50KGNoaWxkRnJhZ0lEKTsKLSAgICB9Ci0gICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgIGZyYWdJRC5hcHBlbmQoY2hpbGRGcmFnSUQpOwotICAlPgotICAKLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+Ci0gICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImhhbmRsZVJvd0NoZWNrYm94Q2xpY2soKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9ST1dfQ0hFQ0tfQk9YIiklPiI+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9ZnJhZy5nZXRJRCgpJT4iIHZhbHVlPSI8JT1jaGlsZEZyYWdJRCU+Ij4KLSAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSI8JT1jaGlsZEZyYWcuZ2V0V3JpdGVGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPC90ZD4KLSAgPC90cj4KLSAgCi0gIDwlCi0gIElYU0RBdHRyaWJ1dGVGcmFnbWVudFtdIGF0dHJpYnV0ZUZyYWdtZW50cyA9IGZyYWcuZ2V0QWxsQXR0cmlidXRlRnJhZ21lbnRzKCk7Ci0gIElYU0RBdHRyaWJ1dGVGcmFnbWVudCBhdHRyaWJ1dGVGcmFnbWVudDsKLSAgZm9yKGludCBqID0gMDsgaiA8IGF0dHJpYnV0ZUZyYWdtZW50cy5sZW5ndGg7IGorKyl7Ci0gICAgYXR0cmlidXRlRnJhZ21lbnQgPSBhdHRyaWJ1dGVGcmFnbWVudHNbal07Ci0gICAgCi0gICAgaWYoYXR0cmlidXRlRnJhZ21lbnQuZ2V0SUQoKS5zdGFydHNXaXRoKGNoaWxkRnJhZ0lEKSl7Ci0gICAgICBJWFNERnJhZ21lbnQgZGVsZWdhdGlvbkZyYWdtZW50ID0gYXR0cmlidXRlRnJhZ21lbnQuZ2V0WFNERGVsZWdhdGlvbkZyYWdtZW50KCk7Ci0gICAgICBmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0gICAgICBmcmFnSUQuYXBwZW5kKGRlbGVnYXRpb25GcmFnbWVudC5nZXRJRCgpKTsKLSAgICAgIGF0dHJpYnV0ZS5kZWxldGUoMCwgYXR0cmlidXRlLmxlbmd0aCgpKTsKLSAgICAgIGF0dHJpYnV0ZS5hcHBlbmQoInRydWUiKTsKLSAgICAgICAlPgotICAgICAgCi0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyIgd2lkdGg9MTA+Ci0gICAgICAgICAgCi0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9ZnJhZy5nZXRJRCgpJT4iIHZhbHVlPSI8JT1hdHRyaWJ1dGVGcmFnbWVudC5nZXRJRCgpJT4iPgotICAgICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSI8JT1kZWxlZ2F0aW9uRnJhZ21lbnQuZ2V0V3JpdGVGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICAgIDwvdGQ+Ci0gICAgIDwvdHI+Ci0gICAgIDwlCi0gICAgCi0gICAgCi0gICAgfSAgCi0gIH0KLX0KLSU+Ci08L3RhYmxlPgotPC9zcGFuPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRJbmZvRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYThhZDgyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0SW5mb0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLnhzZC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudzNjLmRvbS5FbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudzNjLmRvbS5Ob2RlTGlzdCIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJzZXNzaW9uSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JSEKLXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBYTUxOU19MQU5HID0gInhtbDpsYW5nIjsKLXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1hNTE5TX0xBTkcgPSAiZW4tVVMiOwotJT4KLQotPCUKLUh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSUQudG9TdHJpbmcoKSk7Ci1Db250cm9sbGVyIGNvbnRyb2xsZXIgPSAoQ29udHJvbGxlciljdXJyZW50U2Vzc2lvbi5nZXRBdHRyaWJ1dGUoImNvbnRyb2xsZXIiKTsKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotSVhTREZyYWdtZW50IGZyYWcgPSBvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotWFNEQ29tcG9uZW50IHhzZENvbXBvbmVudCA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKS5nZXRYU0RDb21wb25lbnQoKTsKLVhTREFubm90YXRpb24gYW5ub3RhdGlvbiA9IG51bGw7Ci1FTGlzdCBhcHBJbmZvTGlzdCA9IG51bGw7Ci1FTGlzdCBkb2NMaXN0ID0gbnVsbDsKLWlmICh4c2RDb21wb25lbnQgaW5zdGFuY2VvZiBYU0RUeXBlRGVmaW5pdGlvbikKLSAgYW5ub3RhdGlvbiA9ICgoWFNEVHlwZURlZmluaXRpb24peHNkQ29tcG9uZW50KS5nZXRBbm5vdGF0aW9uKCk7Ci1lbHNlIGlmICh4c2RDb21wb25lbnQgaW5zdGFuY2VvZiBYU0RFbGVtZW50RGVjbGFyYXRpb24pCi0gIGFubm90YXRpb24gPSAoKFhTREVsZW1lbnREZWNsYXJhdGlvbil4c2RDb21wb25lbnQpLmdldEFubm90YXRpb24oKTsKLWlmIChhbm5vdGF0aW9uICE9IG51bGwpIHsKLSAgYXBwSW5mb0xpc3QgPSBhbm5vdGF0aW9uLmdldEFwcGxpY2F0aW9uSW5mb3JtYXRpb24oKTsKLSAgZG9jTGlzdCA9IGFubm90YXRpb24uZ2V0VXNlckluZm9ybWF0aW9uKCk7Ci19Ci1TdHJpbmcgYXBwSW5mb0NvbnRhaW5lcklEID0gIjo6YXBwSW5mbyI7Ci1TdHJpbmcgeGFwcEluZm9Db250YWluZXJJRCA9ICJ4OjphcHBJbmZvIjsKLVN0cmluZyBkb2N1bWVudGF0aW9uQ29udGFpbmVySUQgPSAiOjpkb2N1bWVudGF0aW9uIjsKLVN0cmluZyB4ZG9jdW1lbnRhdGlvbkNvbnRhaW5lcklEID0gIng6OmRvY3VtZW50YXRpb24iOwotJT4KLQotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIHR3aXN0KHRhYmxlQ29udGFpbmVySWQsdHdpc3RJbWFnZU5hbWUpCi0gIHsKLSAgICB2YXIgdGFibGVDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICB2YXIgdHdpc3RJbWFnZSA9IGRvY3VtZW50LmltYWdlc1t0d2lzdEltYWdlTmFtZV07Ci0gICAgaWYgKHRhYmxlQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKQotICAgIHsKLSAgICAgIHRhYmxlQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgICAgIHR3aXN0SW1hZ2Uuc3JjID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IjsKLSAgICAgIHR3aXN0SW1hZ2UuYWx0ID0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9PUEVORUQiKSklPiI7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0YWJsZUNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgICAgdHdpc3RJbWFnZS5zcmMgPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RjbG9zZWQuZ2lmIikpJT4iOwotICAgICAgdHdpc3RJbWFnZS5hbHQgPSAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpKSU+IjsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiB0d2lzdENsb3NlKHRhYmxlQ29udGFpbmVySWQpCi0gIHsKLSAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVDb250YWluZXJJZCkuc3R5bGUuZGlzcGxheSA9PSAiIikKLSAgICAgIHR3aXN0KHRhYmxlQ29udGFpbmVySWQsIngiK3RhYmxlQ29udGFpbmVySWQpOwotICB9Ci08L3NjcmlwdD4KLQotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT1hcHBJbmZvQ29udGFpbmVySUQlPicsJzwlPXhhcHBJbmZvQ29udGFpbmVySUQlPicpIj48aW1nIG5hbWU9IjwlPXhhcHBJbmZvQ29udGFpbmVySUQlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdG9wZW5lZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9PUEVORUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgIDxzdHJvbmc+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfWFNEX0FQUExJQ0FUSU9OX0lORk9STUFUSU9OIiklPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHNwYW4gaWQ9IjwlPWFwcEluZm9Db250YWluZXJJRCU+Ij4KLTx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgPHRyPgotICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xBTkdVQUdFIiklPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciIgd2lkdGg9IjEwMCUiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1hTRF9BUFBMSUNBVElPTl9JTkZPUk1BVElPTiIpJT48L3RoPgotICA8L3RyPgotICA8JQotICBib29sZWFuIG9wZW5BcHBJbmZvVGFibGUgPSBmYWxzZTsKLSAgaWYgKGFwcEluZm9MaXN0ICE9IG51bGwpIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFwcEluZm9MaXN0LnNpemUoKTsgaSsrKSB7Ci0gICAgICBFbGVtZW50IGUgPSAoRWxlbWVudClhcHBJbmZvTGlzdC5nZXQoaSk7Ci0gICAgICBTdHJpbmcgYXBwSW5mb0xhbmcgPSBlLmdldEF0dHJpYnV0ZShYTUxOU19MQU5HKTsKLSAgICAgIFN0cmluZyBhcHBJbmZvVGV4dCA9IG51bGw7Ci0gICAgICBOb2RlTGlzdCBubCA9IGUuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBubC5nZXRMZW5ndGgoKTsgaisrKSB7Ci0gICAgICAgIGlmIChubC5pdGVtKGopLmdldE5vZGVUeXBlKCkgPT0gb3JnLnczYy5kb20uTm9kZS5URVhUX05PREUpIHsKLSAgICAgICAgICBhcHBJbmZvVGV4dCA9IG5sLml0ZW0oaikuZ2V0Tm9kZVZhbHVlKCk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmIChhcHBJbmZvVGV4dCAhPSBudWxsKQotICAgICAgeyAKLSAgICAgICAgb3BlbkFwcEluZm9UYWJsZSA9IHRydWU7Ci0gICAgICAgIGlmIChhcHBJbmZvVGV4dC50cmltKCkubGVuZ3RoKCkgPCAxKQotICAgICAgICAgIGFwcEluZm9UZXh0ID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJUQUJMRV9CTEFOS19QTEFDRUhPTERFUiIpOwotICAlPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj48JT0oKGFwcEluZm9MYW5nICE9IG51bGwgJiYgYXBwSW5mb0xhbmcubGVuZ3RoKCkgPiAwKSA/IGFwcEluZm9MYW5nIDogREVGQVVMVF9YTUxOU19MQU5HKSU+PC90ZD4KLSAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPjwlPWFwcEluZm9UZXh0JT48L3RkPgotICA8L3RyPgotICA8JQotICAgICAgfQotICAgIH0KLSAgfQotICAlPgotPC90YWJsZT4KLTwvc3Bhbj4KLTwlCi1pZiAoIW9wZW5BcHBJbmZvVGFibGUpIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdHdpc3RDbG9zZSgnPCU9YXBwSW5mb0NvbnRhaW5lcklEJT4nKTsKLTwvc2NyaXB0PgotPCUKLX0KLSU+Ci0KLTx0YWJsZT4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjA+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9ZG9jdW1lbnRhdGlvbkNvbnRhaW5lcklEJT4nLCc8JT14ZG9jdW1lbnRhdGlvbkNvbnRhaW5lcklEJT4nKSI+PGltZyBuYW1lPSI8JT14ZG9jdW1lbnRhdGlvbkNvbnRhaW5lcklEJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RvcGVuZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfT1BFTkVEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICA8c3Ryb25nPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1hTRF9ET0NVTUVOVEFUSU9OIiklPjwvc3Ryb25nPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHNwYW4gaWQ9IjwlPWRvY3VtZW50YXRpb25Db250YWluZXJJRCU+Ij4KLTx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgPHRyPgotICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xBTkdVQUdFIiklPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciIgd2lkdGg9IjEwMCUiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1hTRF9ET0NVTUVOVEFUSU9OIiklPjwvdGg+Ci0gIDwvdHI+Ci0gIDwlCi0gIGJvb2xlYW4gb3BlbkRvY1RhYmxlID0gZmFsc2U7Ci0gIGlmIChkb2NMaXN0ICE9IG51bGwpIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGRvY0xpc3Quc2l6ZSgpOyBpKyspIHsKLSAgICAgIEVsZW1lbnQgZSA9IChFbGVtZW50KWRvY0xpc3QuZ2V0KGkpOwotICAgICAgU3RyaW5nIGRvY0xhbmcgPSBlLmdldEF0dHJpYnV0ZShYTUxOU19MQU5HKTsKLSAgICAgIFN0cmluZyBkb2NUZXh0ID0gbnVsbDsKLSAgICAgIE5vZGVMaXN0IG5sID0gZS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IG5sLmdldExlbmd0aCgpOyBqKyspIHsKLSAgICAgICAgaWYgKG5sLml0ZW0oaikuZ2V0Tm9kZVR5cGUoKSA9PSBvcmcudzNjLmRvbS5Ob2RlLlRFWFRfTk9ERSkgewotICAgICAgICAgIGRvY1RleHQgPSBubC5pdGVtKGopLmdldE5vZGVWYWx1ZSgpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9ICAgICAgCi0gICAgICBpZiAoZG9jVGV4dCAhPSBudWxsKQotICAgICAgewotICAgICAgICBvcGVuRG9jVGFibGUgPSB0cnVlOwotICAgICAgICBpZiAoZG9jVGV4dC50cmltKCkubGVuZ3RoKCkgPCAxKQotICAgICAgICAgIGRvY1RleHQgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIlRBQkxFX0JMQU5LX1BMQUNFSE9MREVSIik7Ci0gICU+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPjwlPSgoZG9jTGFuZyAhPSBudWxsICYmIGRvY0xhbmcubGVuZ3RoKCkgPiAwKSA/IGRvY0xhbmcgOiBERUZBVUxUX1hNTE5TX0xBTkcpJT48L3RkPgotICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+PCU9ZG9jVGV4dCU+PC90ZD4KLSAgPC90cj4KLSAgPCUKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgJT4KLTwvdGFibGU+Ci08L3NwYW4+Ci08JQotaWYgKCFvcGVuRG9jVGFibGUpIHsKLSU+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdHdpc3RDbG9zZSgnPCU9ZG9jdW1lbnRhdGlvbkNvbnRhaW5lcklEJT4nKTsKLTwvc2NyaXB0PgotPCUKLX0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdFJGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdFJGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjOWM5ZjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRSRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjIgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Ob2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudzNjLmRvbS5FbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC54bWwucnBjLk5hbWVzcGFjZUNvbnN0YW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLkhhc2h0YWJsZSIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgb3Blck5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KW9wZXJOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNERnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1IYXNodGFibGUgc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0vLyBUT0RPOiBSZXBsYWNlICJTT0FQLUVOViIgYnkgTmFtZXNwYWNlQ29uc3RhbnRzLk5TUFJFRklYX1NPQVBfRU5WRUxPUEUgKD0ic29hcGVudiIpCi1zb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZS5wdXQoTmFtZXNwYWNlQ29uc3RhbnRzLk5TVVJJX1NPQVBfRU5WRUxPUEUsIlNPQVAtRU5WIik7Ci1zb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZS5wdXQoTmFtZXNwYWNlQ29uc3RhbnRzLk5TVVJJX1NDSEVNQV9YU0ksTmFtZXNwYWNlQ29uc3RhbnRzLk5TUFJFRklYX1NDSEVNQV9YU0kpOwotc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUucHV0KE5hbWVzcGFjZUNvbnN0YW50cy5OU1VSSV9TQ0hFTUFfWFNELE5hbWVzcGFjZUNvbnN0YW50cy5OU1BSRUZJWF9TQ0hFTUFfWFNEKTsKLUVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cyA9IGZyYWcuZ2VuSW5zdGFuY2VEb2N1bWVudHNGcm9tUGFyYW1ldGVyVmFsdWVzKCFvcGVyRWxlbWVudC5pc1VzZUxpdGVyYWwoKSwgc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUsIFhNTFV0aWxzLmNyZWF0ZU5ld0RvY3VtZW50KG51bGwpKTsKLVN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLWZvciAoaW50IGkgPSAwOyBpIDwgaW5zdGFuY2VEb2N1bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgaWYgKGluc3RhbmNlRG9jdW1lbnRzW2ldID09IG51bGwpCi0gICAgY29udGludWU7Ci0gIHNiLmFwcGVuZChYTUxVdGlscy5zZXJpYWxpemUoaW5zdGFuY2VEb2N1bWVudHNbaV0sIHRydWUpKTsKLSAgc2IuYXBwZW5kKEhUTUxVdGlscy5MSU5FX1NFUEFSQVRPUik7Ci19Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8bGFiZWwgZm9yPSI8JT1mcmFnLmdldElEKCklPiI+PCU9ZnJhZy5nZXROYW1lKCklPjwvbGFiZWw+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJmaXhmcmFndGFibGUiIDogImlubmVyZml4ZnJhZ3RhYmxlIiklPiI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICA8dGV4dGFyZWEgaWQ9IjwlPWZyYWcuZ2V0SUQoKSU+IiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgY2xhc3M9InRleHRhcmVhZW50ZXIiIHJlYWRvbmx5PjwlPUhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXNTdHJpY3Qoc2IudG9TdHJpbmcoKSklPjwvdGV4dGFyZWE+Ci08JQotICAgICAgLyoKLSAgICAgIFN0cmluZ0J1ZmZlciB1cmwgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICB1cmwuYXBwZW5kKHJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdFJGcmFnbWVudFhNTC5qc3A/IikpKTsKLSAgICAgIHVybC5hcHBlbmQoV1NETEFjdGlvbklucHV0cy5GUkFHTUVOVF9JRCkuYXBwZW5kKCI9IikuYXBwZW5kKGZyYWdJRCkuYXBwZW5kKCImIik7Ci0gICAgICB1cmwuYXBwZW5kKEFjdGlvbklucHV0cy5OT0RFSUQpLmFwcGVuZCgiPSIpLmFwcGVuZChub2RlSUQpLmFwcGVuZCgiJiIpOwotICAgICAgdXJsLmFwcGVuZChBY3Rpb25JbnB1dHMuU0VTU0lPTklEKS5hcHBlbmQoIj0iKS5hcHBlbmQoc2Vzc2lvbi5nZXRJZCgpKTsKLSAgICAgICovCi0lPgotICAgICAgPCEtLQotICAgICAgPGlmcmFtZSBzcmM9IiIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTUwcHgiPjwvaWZyYW1lPgotICAgICAgLS0+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdFJGcmFnbWVudFhNTC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdFJGcmFnbWVudFhNTC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MDg5ZjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRSRnJhZ21lbnRYTUwuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjIyICAgMTI3NDQzIGplc3BlckBzZWxza2FiZXQub3JnIC0gSmVzcGVyIFMgTW9sbGVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC94bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS54c2QuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnczYy5kb20uRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnhtbC5zYXguKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnhtbC5zYXguaGVscGVycy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC54bWwucnBjLk5hbWVzcGFjZUNvbnN0YW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5pby4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiIgJT4KLTwlCi1TdHJpbmcgZnJhZ0lEID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoV1NETEFjdGlvbklucHV0cy5GUkFHTUVOVF9JRCk7Ci1TdHJpbmcgbm9kZUlEID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLk5PREVJRCk7Ci1TdHJpbmcgc2Vzc2lvbklkID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCk7Ci1IdHRwU2Vzc2lvbiBjdXJyZW50U2Vzc2lvbiA9IChIdHRwU2Vzc2lvbilhcHBsaWNhdGlvbi5nZXRBdHRyaWJ1dGUoc2Vzc2lvbklkKTsKLUNvbnRyb2xsZXIgY29udHJvbGxlciA9IChDb250cm9sbGVyKWN1cnJlbnRTZXNzaW9uLmdldEF0dHJpYnV0ZSgiY29udHJvbGxlciIpOwotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIG9wZXJOb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRCkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpb3Blck5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RGcmFnbWVudCBmcmFnID0gb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRCk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1IYXNodGFibGUgc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0vLyBUT0RPOiBSZXBsYWNlICJTT0FQLUVOViIgYnkgTmFtZXNwYWNlQ29uc3RhbnRzLk5TUFJFRklYX1NPQVBfRU5WRUxPUEUgKD0ic29hcGVudiIpCi1zb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZS5wdXQoTmFtZXNwYWNlQ29uc3RhbnRzLk5TVVJJX1NPQVBfRU5WRUxPUEUsIlNPQVAtRU5WIik7Ci1zb2FwRW52ZWxvcGVOYW1lc3BhY2VUYWJsZS5wdXQoTmFtZXNwYWNlQ29uc3RhbnRzLk5TVVJJX1NDSEVNQV9YU0ksTmFtZXNwYWNlQ29uc3RhbnRzLk5TUFJFRklYX1NDSEVNQV9YU0kpOwotc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUucHV0KE5hbWVzcGFjZUNvbnN0YW50cy5OU1VSSV9TQ0hFTUFfWFNELE5hbWVzcGFjZUNvbnN0YW50cy5OU1BSRUZJWF9TQ0hFTUFfWFNEKTsKLUVsZW1lbnRbXSBpbnN0YW5jZURvY3VtZW50cyA9IG5ldyBFbGVtZW50WzBdOwotU3RyaW5nQnVmZmVyIHNiID0gbnVsbDsKLXRyeQotewotICBpbnN0YW5jZURvY3VtZW50cyA9IGZyYWcuZ2VuSW5zdGFuY2VEb2N1bWVudHNGcm9tUGFyYW1ldGVyVmFsdWVzKCFvcGVyRWxlbWVudC5pc1VzZUxpdGVyYWwoKSwgc29hcEVudmVsb3BlTmFtZXNwYWNlVGFibGUsIFhNTFV0aWxzLmNyZWF0ZU5ld0RvY3VtZW50KG51bGwpKTsKLSAgaWYgKGluc3RhbmNlRG9jdW1lbnRzLmxlbmd0aCA9PSAxKQotICB7Ci0gICAgYnl0ZVtdIGIgPSBYTUxVdGlscy5zZXJpYWxpemUoaW5zdGFuY2VEb2N1bWVudHNbMF0sIHRydWUpLmdldEJ5dGVzKEhUTUxVdGlscy5VVEY4X0VOQ09ESU5HKTsKLSAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSBiYWlzID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGIpOwotICAgIFNBWFBhcnNlckZhY3Rvcnkgc2F4RmFjdG9yeSA9IFNBWFBhcnNlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLSAgICBzYXhGYWN0b3J5LnNldFZhbGlkYXRpbmcodHJ1ZSk7Ci0gICAgU0FYUGFyc2VyIHNheFBhcnNlciA9IHNheEZhY3RvcnkubmV3U0FYUGFyc2VyKCk7Ci0gICAgc2F4UGFyc2VyLnBhcnNlKGJhaXMsCi0gICAgICBuZXcgRGVmYXVsdEhhbmRsZXIoKQotICAgICAgewotICAgICAgICBwdWJsaWMgdm9pZCBlcnJvcihTQVhQYXJzZUV4Y2VwdGlvbiBlKSB0aHJvd3MgU0FYRXhjZXB0aW9uCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIHB1YmxpYyB2b2lkIGZhdGFsRXJyb3IoU0FYUGFyc2VFeGNlcHRpb24gZSkgdGhyb3dzIFNBWEV4Y2VwdGlvbgotICAgICAgICB7Ci0gICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfQotICAgIAotICAgICAgICBwdWJsaWMgdm9pZCB3YXJuaW5nKFNBWFBhcnNlRXhjZXB0aW9uIGUpIHRocm93cyBTQVhFeGNlcHRpb24KLSAgICAgICAgewotICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIGJhaXMuY2xvc2UoKTsKLSAgICBzYiA9IG5ldyBTdHJpbmdCdWZmZXIobmV3IFN0cmluZyhiKSk7Ci0gIH0KLX0KLWNhdGNoIChUaHJvd2FibGUgdCkKLXsKLX0KLWlmIChzYiA9PSBudWxsKQotewotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9ZnJhZy5nZXROYW1lKCklPjwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLSAgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gIHJlc3BvbnNlLnNldENvbnRlbnRUeXBlKCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnN0YW5jZURvY3VtZW50cy5sZW5ndGg7IGkrKykgewotICAgIGlmIChpbnN0YW5jZURvY3VtZW50c1tpXSA9PSBudWxsKQotICAgICAgY29udGludWU7Ci0gICAgc2IuYXBwZW5kKEhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXNTdHJpY3QoWE1MVXRpbHMuc2VyaWFsaXplKGluc3RhbmNlRG9jdW1lbnRzW2ldLCB0cnVlKSkpOwotICB9Ci0lPgotPCU9c2IudG9TdHJpbmcoKSU+Ci08L2JvZHk+Ci08L2h0bWw+Ci08JQotfQotZWxzZQotewotJT4KLTwlPXNiLnRvU3RyaW5nKCklPgotPCUKLX0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdFdGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVmYXVsdFdGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlODUyMGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRERlZmF1bHRXRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjIgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJlbGVtZW50SUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNERnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1JWFNERWxlbWVudEZyYWdtZW50IGVsZW1lbnRGcmFnbWVudCA9IChJWFNERWxlbWVudEZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChlbGVtZW50SUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1TdHJpbmcgcGFyYW0gPSBmcmFnLmdldFBhcmFtZXRlclZhbHVlKGZyYWcuZ2V0SUQoKSwgMCk7Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8bGFiZWwgZm9yPSI8JT1mcmFnLmdldElEKCklPiI+PGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+PC9sYWJlbD4KLSAgICA8L3RkPgotICAgIDwlIAotICAgICAgaWYoZWxlbWVudEZyYWdtZW50ICE9IG51bGwgJiYgZWxlbWVudEZyYWdtZW50LmlzTmlsbGFibGUoKSl7Ci0gICAgICAgIGlmKGVsZW1lbnRGcmFnbWVudC5pc05pbCgpKXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgY2hlY2tlZD48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX05JTCIpJT48L3RkPiAKLSAgICAgICAgICA8JQotICAgICAgICB9IAotICAgICAgICBlbHNlewotICAgICAgICAgICU+ICAKLSAgICAgICAgICA8dGQgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8JT0oKElYU0RFbGVtZW50RnJhZ21lbnQpZWxlbWVudEZyYWdtZW50KS5nZXROaWxJRCgpJT4iIHZhbHVlPSI8JT1JWFNERWxlbWVudEZyYWdtZW50Lk5JTF9WQUxVRSU+IiA+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgfQotICAgICU+Ci0gICAgPHRkPgotICAgICAgPCUKLSAgICAgIGlmICghZnJhZy52YWxpZGF0ZUFsbFBhcmFtZXRlclZhbHVlcygpKSB7Ci0gICAgICAlPgotICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotICAgICAgPCUKLSAgICAgIH0KLSAgICAgICU+Ci0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAiZml4ZnJhZ3RhYmxlIiA6ICJpbm5lcmZpeGZyYWd0YWJsZSIpJT4iPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPHRleHRhcmVhIGlkPSI8JT1mcmFnLmdldElEKCklPiIgbmFtZT0iPCU9ZnJhZy5nZXRJRCgpJT4iIGNsYXNzPSJ0ZXh0YXJlYWVudGVyIj48JT0oKHBhcmFtICE9IG51bGwpID8gSFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllc1N0cmljdChwYXJhbSkgOiAiIiklPjwvdGV4dGFyZWE+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVsZWdhdGlvblJGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVsZWdhdGlvblJGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOTMxZjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRERlbGVnYXRpb25SRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgb3Blck5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KW9wZXJOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNERGVsZWdhdGlvbkZyYWdtZW50IHdyYXBwZXJGcmFnbWVudCA9IChJWFNERGVsZWdhdGlvbkZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1JWFNERnJhZ21lbnQgZGVsZWdhdGlvbkZyYWdtZW50ID0gd3JhcHBlckZyYWdtZW50LmdldFhTRERlbGVnYXRpb25GcmFnbWVudCgpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gd3JhcHBlckZyYWdtZW50LmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1mcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci1mcmFnSUQuYXBwZW5kKGRlbGVnYXRpb25GcmFnbWVudC5nZXRJRCgpKTsKLSU+Ci08dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJmaXhmcmFndGFibGUiIDogImlubmVyZml4ZnJhZ3RhYmxlIiklPiI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9ZGVsZWdhdGlvbkZyYWdtZW50LmdldFJlYWRGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVsZWdhdGlvbldGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERGVsZWdhdGlvbldGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNDYwN2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRERlbGVnYXRpb25XRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0REZWxlZ2F0aW9uRnJhZ21lbnQgd3JhcHBlckZyYWdtZW50ID0gKElYU0REZWxlZ2F0aW9uRnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLUlYU0RGcmFnbWVudCBkZWxlZ2F0aW9uRnJhZ21lbnQgPSB3cmFwcGVyRnJhZ21lbnQuZ2V0WFNERGVsZWdhdGlvbkZyYWdtZW50KCk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSB3cmFwcGVyRnJhZ21lbnQuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLWZyYWdJRC5kZWxldGUoMCwgZnJhZ0lELmxlbmd0aCgpKTsKLWZyYWdJRC5hcHBlbmQoZGVsZWdhdGlvbkZyYWdtZW50LmdldElEKCkpOwotJT4KLTx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gImZpeGZyYWd0YWJsZSIgOiAiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSI8JT1kZWxlZ2F0aW9uRnJhZ21lbnQuZ2V0V3JpdGVGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERWxlbWVudFJGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERWxlbWVudFJGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYzI2MjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREVsZW1lbnRSRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotPCUKLS8qKgotKiA8Y29weXJpZ2h0PgotKgotKiBMaWNlbnNlZCBNYXRlcmlhbCAtIFByb3BlcnR5IG9mIElCTQotKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyIC0gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSogVVMgR292ZXJubWVudCBVc2VycyBSZXN0cmljdGVkIFJpZ2h0cyAtIFVzZSwgZHVwbGljYXRpb24gb3IgZGlzY2xvc3VyZQotKiByZXN0cmljdGVkIGJ5IEdTQSBBRFAgU2NoZWR1bGUgQ29udHJhY3Qgd2l0aCBJQk0gQ29ycC4KLSoKLSogPC9jb3B5cmlnaHQ+Ci0qCi0qIEZpbGUgcGx1Z2lucy9jb20uaWJtLmV0b29scy53ZWJzZXJ2aWNlLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0REZWxlZ2F0aW9uV0ZyYWdtZW50SlNQLmpzcCwgd3NhLmV0b29scy53cy5leHBsb3JlciwgbHVuYXItNS4xLjIsIDIwMDMxMjMxYSAxCi0qIFZlcnNpb24gMS4xIDAzLzAyLzI4IDE1OjM0OjA0Ci0qLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZWxlbWVudElEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotSVhTREVsZW1lbnRGcmFnbWVudCBlbGVtZW50RnJhZ21lbnQgPSAoSVhTREVsZW1lbnRGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotSVhTREZyYWdtZW50IGRlbGVnYXRpb25GcmFnbWVudCA9IGVsZW1lbnRGcmFnbWVudC5nZXRYU0REZWxlZ2F0aW9uRnJhZ21lbnQoKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGVsZW1lbnRGcmFnbWVudC5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotZnJhZ0lELmFwcGVuZChkZWxlZ2F0aW9uRnJhZ21lbnQuZ2V0SUQoKSk7Ci1lbGVtZW50SUQuZGVsZXRlKDAsIGVsZW1lbnRJRC5sZW5ndGgoKSk7Ci1lbGVtZW50SUQuYXBwZW5kKGVsZW1lbnRGcmFnbWVudC5nZXRJRCgpKTsKLSU+Ci0KLSAKLQotPHRhYmxlICBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSgiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSI8JT1kZWxlZ2F0aW9uRnJhZ21lbnQuZ2V0UmVhZEZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLQotIAotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERWxlbWVudFdGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERWxlbWVudFdGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNTY0NGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREVsZW1lbnRXRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMDUgICAxMTcwMzQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBzaG91bGQgc3VwcG9ydCBTT0FQIEhlYWRlcnMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImVsZW1lbnRJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RFbGVtZW50RnJhZ21lbnQgZWxlbWVudEZyYWdtZW50ID0gKElYU0RFbGVtZW50RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLUlYU0RGcmFnbWVudCBkZWxlZ2F0aW9uRnJhZ21lbnQgPSBlbGVtZW50RnJhZ21lbnQuZ2V0WFNERGVsZWdhdGlvbkZyYWdtZW50KCk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBlbGVtZW50RnJhZ21lbnQuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLWZyYWdJRC5kZWxldGUoMCwgZnJhZ0lELmxlbmd0aCgpKTsKLWZyYWdJRC5hcHBlbmQoZGVsZWdhdGlvbkZyYWdtZW50LmdldElEKCkpOwotZWxlbWVudElELmRlbGV0ZSgwLCBlbGVtZW50SUQubGVuZ3RoKCkpOwotZWxlbWVudElELmFwcGVuZChlbGVtZW50RnJhZ21lbnQuZ2V0SUQoKSk7Ci0lPgotCi0gCi0KLTx0YWJsZSAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJmaXhmcmFndGFibGUiIDogImlubmVyZml4ZnJhZ3RhYmxlIiklPiI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9ZGVsZWdhdGlvbkZyYWdtZW50LmdldFdyaXRlRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi0gCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RFbXB0eVJGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERW1wdHlSRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTNjZWVlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RFbXB0eVJGcmFnbWVudEpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERW1wdHlXRnJhZ21lbnRKU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREVtcHR5V0ZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlhNDk0My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNERW1wdHlXRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RGcmFnbWVudCBmcmFnID0gb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLWludCBtaW5PY2N1cnMgPSB4c2RDb25maWcuZ2V0TWluT2NjdXJzKCk7Ci1pbnQgbWF4T2NjdXJzID0geHNkQ29uZmlnLmdldE1heE9jY3VycygpOwotaWYgKG1pbk9jY3VycyA9PSBtYXhPY2N1cnMpIHsKLSU+Ci08aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPW1heE9jY3VycyU+Ii8+Ci08JQotfSBlbHNlIHsKLSAgU3RyaW5nW10gcGFyYW1zID0gZnJhZy5nZXRQYXJhbWV0ZXJWYWx1ZXMoZnJhZy5nZXRJRCgpKTsKLSU+Ci0gIDx0YWJsZSBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gImZpeGZyYWd0YWJsZSIgOiAiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLSAgICA8dHI+Ci0gICAgICA8dGQ+Ci0gICAgICAgIDxsYWJlbCBmb3I9IjwlPWZyYWcuZ2V0SUQoKSU+Ij48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9PQ0NVUkFOQ0UiKSU+Jm5ic3A7PGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+PC9sYWJlbD4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+Ci0gICAgICA8JQotICAgICAgaWYgKG1heE9jY3VycyAhPSBGcmFnbWVudENvbnN0YW50cy5VTkJPVU5ERUQpIHsKLSAgICAgICU+Ci0gICAgICAgIDxzZWxlY3QgaWQ9IjwlPWZyYWcuZ2V0SUQoKSU+IiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgY2xhc3M9InNlbGVjdGxpc3QiPgotICAgICAgICA8JQotICAgICAgICBmb3IgKGludCBpID0gbWluT2NjdXJzOyBpIDw9IG1heE9jY3VyczsgaSsrKSB7Ci0gICAgICAgICU+Ci0gICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9aSU+IiA8JSBpZiAocGFyYW1zICE9IG51bGwgJiYgaSA9PSBwYXJhbXMubGVuZ3RoKSB7ICU+c2VsZWN0ZWQ8JSB9ICU+PjwlPWklPgotICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICAgICU+Ci0gICAgICAgIDwvc2VsZWN0PgotICAgICAgPCUKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAlPgotICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IjwlPWZyYWcuZ2V0SUQoKSU+IiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPSgocGFyYW1zICE9IG51bGwpID8gU3RyaW5nLnZhbHVlT2YocGFyYW1zLmxlbmd0aCkgOiAiIiklPiIgY2xhc3M9InRhYmxldGV4dGVudGVyIj4KLSAgICAgIDwlCi0gICAgICAgIGlmICghZnJhZy52YWxpZGF0ZVBhcmFtZXRlclZhbHVlcyhmcmFnLmdldElEKCkpKSB7Ci0gICAgICAgICU+Ci0gICAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLSAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgfQotICAgICAgJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwlCi19Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwQWxsV0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RHcm91cEFsbFdGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OTAyOTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwQWxsV0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RHcm91cEFsbEZyYWdtZW50IGZyYWcgPSAoSVhTREdyb3VwQWxsRnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLWJvb2xlYW4gZW5hYmxlR3JvdXAgPSAoeHNkQ29uZmlnLmdldE1pbk9jY3VycygpID4gMCB8fCBmcmFnLmdldEdyb3VwSURzKCkubGVuZ3RoID4gMCk7Ci1TdHJpbmcgdGFibGVDb250YWluZXJJRCA9IChuZXcgU3RyaW5nQnVmZmVyKEZyYWdtZW50Q29uc3RhbnRzLlRBQkxFX0lEKSkuYXBwZW5kKGZyYWcuZ2V0SUQoKSkudG9TdHJpbmcoKTsKLVN0cmluZyB0d2lzdEltYWdlTmFtZSA9IChuZXcgU3RyaW5nQnVmZmVyKCJ4IikpLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklEKS50b1N0cmluZygpOwotU3RyaW5nIGdyb3VwSUQgPSBmcmFnLmdldEdyb3VwQWxsSW5zdGFuY2UoKTsKLVN0cmluZyBncm91cENoZWNrYm94SUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5YU0RfQUxMX0dST1VQX0lEKSkuYXBwZW5kKGZyYWcuZ2V0SUQoKSkudG9TdHJpbmcoKTsKLVN0cmluZyBncm91cE1lbWJlclJhZGlvSUQgPSAobmV3IFN0cmluZ0J1ZmZlcihncm91cENoZWNrYm94SUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBpbml0R3JvdXBBbGwodGFibGVDb250YWluZXJJRCwgdHdpc3RJbWFnZU5hbWUsIGZyYWdJRCwgZ3JvdXBJRCwgZ3JvdXBDaGVja2JveElELCBlbmFibGUpIHsKLSAgICB2YXIgY2hlY2tib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChncm91cENoZWNrYm94SUQpOwotICAgIGNoZWNrYm94LmNoZWNrZWQgPSBlbmFibGU7Ci0gICAgZW5hYmxlR3JvdXBBbGwodGFibGVDb250YWluZXJJRCwgdHdpc3RJbWFnZU5hbWUsIGZyYWdJRCwgZ3JvdXBJRCwgY2hlY2tib3gpOwotICB9Ci0KLSAgZnVuY3Rpb24gZW5hYmxlR3JvdXBBbGwodGFibGVDb250YWluZXJJRCwgdHdpc3RJbWFnZU5hbWUsIGZyYWdJRCwgZ3JvdXBJRCwgY2hlY2tib3gpIHsKLSAgICB2YXIgdGFibGVDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZUNvbnRhaW5lcklEKTsKLSAgICB2YXIgY2hlY2tib3hUYWJsZSA9IGNoZWNrYm94LnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlOwotICAgIGlmIChjaGVja2JveC5jaGVja2VkKSB7Ci0gICAgICBpZiAodGFibGVDb250YWluZXIuc3R5bGUuZGlzcGxheSA9PSAibm9uZSIpCi0gICAgICAgIHR3aXN0KHRhYmxlQ29udGFpbmVySUQsIHR3aXN0SW1hZ2VOYW1lKTsKLSAgICAgIGNoZWNrYm94Lm5hbWUgPSBmcmFnSUQ7Ci0gICAgICBjaGVja2JveC52YWx1ZSA9IGdyb3VwSUQ7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgaWYgKHRhYmxlQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPT0gIiIpCi0gICAgICAgIHR3aXN0KHRhYmxlQ29udGFpbmVySUQsIHR3aXN0SW1hZ2VOYW1lKTsKLSAgICAgIGNoZWNrYm94Lm5hbWUgPSAiIjsKLSAgICAgIGNoZWNrYm94LnZhbHVlID0gIiI7Ci0gICAgfQotICAgIHZhciB0ZHMgPSBjaGVja2JveFRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotICAgIHZhciBjaGVja2JveENlbGxJbmRleCA9IGNoZWNrYm94LnBhcmVudE5vZGUuY2VsbEluZGV4OwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBpZiAoaSA9PSBjaGVja2JveENlbGxJbmRleCB8fCBjaGVja2JveC5jaGVja2VkKQotICAgICAgICB0ZHMuaXRlbShpKS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgICBlbHNlCi0gICAgICAgIHRkcy5pdGVtKGkpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gZ3JvdXBBbGxPcmRlcmluZ01vdmVVcCh0YWJsZUNvbnRhaW5lcklEKSB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJRCk7Ci0gICAgaWYgKHRhYmxlLnJvd3NbbnVtYmVyT2ZIZWFkZXJSb3dzXS5jZWxsc1swXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApLmNoZWNrZWQpIHsKLSAgICAgIGFsZXJ0KCc8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0NBTk5PVF9NT1ZFX0ZJUlNUX0VMRU1FTlRfVVAiKSU+Jyk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAodmFyIGkgPSBudW1iZXJPZkhlYWRlclJvd3MgKyAxOyBpIDwgdGFibGUucm93cy5sZW5ndGg7IGkrKykgewotICAgICAgaWYgKHRhYmxlLnJvd3NbaV0uY2VsbHNbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKS5jaGVja2VkKSB7Ci0gICAgICAgIHN3YXBSb3dzKHRhYmxlLCBpLTEsIGkpOwotICAgICAgICB0YWJsZS5yb3dzW2ktMV0uY2VsbHNbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKS5jaGVja2VkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIH0KLSAgICBhbGVydCgnPCU9Y29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKS5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9USElOR19TRUxFQ1RFRCIpJT4nKTsKLSAgfQotCi0gIGZ1bmN0aW9uIGdyb3VwQWxsT3JkZXJpbmdNb3ZlRG93bih0YWJsZUNvbnRhaW5lcklEKSB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJRCk7Ci0gICAgaWYgKHRhYmxlLnJvd3NbdGFibGUucm93cy5sZW5ndGggLSAxXS5jZWxsc1swXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApLmNoZWNrZWQpIHsKLSAgICAgIGFsZXJ0KCc8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX0NBTk5PVF9NT1ZFX0xBU1RfRUxFTUVOVF9ET1dOIiklPicpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKHZhciBpID0gbnVtYmVyT2ZIZWFkZXJSb3dzOyBpIDwgdGFibGUucm93cy5sZW5ndGggLSAxOyBpKyspIHsKLSAgICAgIGlmICh0YWJsZS5yb3dzW2ldLmNlbGxzWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLml0ZW0oMCkuY2hlY2tlZCkgewotICAgICAgICBzd2FwUm93cyh0YWJsZSwgaSwgaSsxKTsKLSAgICAgICAgdGFibGUucm93c1tpKzFdLmNlbGxzWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLml0ZW0oMCkuY2hlY2tlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gICAgYWxlcnQoJzwlPWNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PVEhJTkdfU0VMRUNURUQiKSU+Jyk7Ci0gIH0KLQotICA8JQotICAvLyByb3dJbmRleDEgbXVzdCBiZSBzbWFsbGVyIHRoYW4gcm93SW5kZXgyIGluIG9yZGVyIHRvIHdvcmsKLSAgJT4KLSAgZnVuY3Rpb24gc3dhcFJvd3ModGFibGUsIHJvd0luZGV4MSwgcm93SW5kZXgyKSB7Ci0gICAgdmFyIHJvdzFDaGlsZE5vZGVzID0gY2xvbmVBcnJheSh0YWJsZS5yb3dzW3Jvd0luZGV4MV0uY2hpbGROb2Rlcyk7Ci0gICAgdmFyIHJvdzJDaGlsZE5vZGVzID0gY2xvbmVBcnJheSh0YWJsZS5yb3dzW3Jvd0luZGV4Ml0uY2hpbGROb2Rlcyk7Ci0gICAgdGFibGUuZGVsZXRlUm93KHJvd0luZGV4Mik7Ci0gICAgdGFibGUuZGVsZXRlUm93KHJvd0luZGV4MSk7Ci0gICAgdmFyIHJvdzEgPSB0YWJsZS5pbnNlcnRSb3cocm93SW5kZXgxKTsKLSAgICB2YXIgcm93MiA9IHRhYmxlLmluc2VydFJvdyhyb3dJbmRleDIpOwotICAgIGFwcGVuZFRvUm93KHJvdzEsIHJvdzJDaGlsZE5vZGVzKTsKLSAgICBhcHBlbmRUb1Jvdyhyb3cyLCByb3cxQ2hpbGROb2Rlcyk7Ci0gIH0KLQotICBmdW5jdGlvbiBjbG9uZUFycmF5KG9sZEFycmF5KSB7Ci0gICAgdmFyIGFycmF5Q2xvbmUgPSBuZXcgQXJyYXkoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZEFycmF5Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICBhcnJheUNsb25lW2ldID0gb2xkQXJyYXlbaV0uY2xvbmVOb2RlKHRydWUpOwotICAgIH0KLSAgICByZXR1cm4gYXJyYXlDbG9uZTsKLSAgfQotCi0gIGZ1bmN0aW9uIGFwcGVuZFRvUm93KHJvdywgbm9kZXNBcnJheSkgewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXNBcnJheS5sZW5ndGg7IGkrKykgewotICAgICAgcm93LmFwcGVuZENoaWxkKG5vZGVzQXJyYXlbaV0pOwotICAgIH0KLSAgfQotPC9zY3JpcHQ+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgIDwvdGQ+Ci0gICAgPCUKLSAgICBpZiAoeHNkQ29uZmlnLmdldE1pbk9jY3VycygpID4gMCkgewotICAgICU+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9ZnJhZy5nZXRJRCgpJT4iIHZhbHVlPSI8JT1ncm91cElEJT4iPgotICAgIDwlCi0gICAgfQotICAgIGVsc2UgewotICAgICU+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IjwlPWdyb3VwQ2hlY2tib3hJRCU+IiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPWdyb3VwSUQlPiIgdGl0bGU9IjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfRU5BQkxFX0RJU0FCTEVfR1JPVVAiKSU+IiBvbkNsaWNrPSJqYXZhc2NyaXB0OmVuYWJsZUdyb3VwQWxsKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCAnPCU9dHdpc3RJbWFnZU5hbWUlPicsICc8JT1mcmFnLmdldElEKCklPicsICc8JT1ncm91cElEJT4nLCB0aGlzKSIgY2hlY2tlZD48bGFiZWwgZm9yPSI8JT1ncm91cENoZWNrYm94SUQlPiI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRU5BQkxFX0RJU0FCTEVfR1JPVVAiKSU+PC9sYWJlbD4KLSAgICA8L3RkPgotICAgIDwlCi0gICAgfQotICAgICU+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Z3JvdXBBbGxPcmRlcmluZ01vdmVVcCgnPCU9dGFibGVDb250YWluZXJJRCU+JykiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0dST1VQX0FMTF9PUkRFUklOR19NT1ZFX1VQIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0Omdyb3VwQWxsT3JkZXJpbmdNb3ZlRG93bignPCU9dGFibGVDb250YWluZXJJRCU+JykiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0dST1VQX0FMTF9PUkRFUklOR19NT1ZFX0RPV04iKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxzcGFuIGlkPSI8JT10YWJsZUNvbnRhaW5lcklEJT4iPgotPHRhYmxlIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAicmFuZ2VmcmFndGFibGUiIDogImlubmVycmFuZ2VmcmFndGFibGUiKSU+Ij4KLSAgPHRyPgotICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiIHdpZHRoPTEwPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRUxFTUVOVFMiKSU+PC90aD4KLSAgPC90cj4KLSAgPCUKLSAgSVhTREZyYWdtZW50W10gZ3JvdXBNZW1iZXJGcmFnbWVudHMgPSBmcmFnLmdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSUQpOwotICBmb3IgKGludCBpID0gMDsgaSA8IGdyb3VwTWVtYmVyRnJhZ21lbnRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgIGZyYWdJRC5hcHBlbmQoZ3JvdXBNZW1iZXJGcmFnbWVudHNbaV0uZ2V0SUQoKSk7Ci0gICU+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBjbGFzcz0icmFkaW8iIG5hbWU9IjwlPWdyb3VwTWVtYmVyUmFkaW9JRCU+IiB2YWx1ZT0iPCU9ZnJhZ0lELnRvU3RyaW5nKCklPiIgdGl0bGU9IjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0VMRU1FTlRfSU5fR1JPVVAiKSU+Ij4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyIgd2lkdGg9IjEwMCUiPgotICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9Z3JvdXBJRCU+IiB2YWx1ZT0iPCU9ZnJhZ0lELnRvU3RyaW5nKCklPiI+Ci0gICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9Z3JvdXBNZW1iZXJGcmFnbWVudHNbaV0uZ2V0V3JpdGVGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPC90ZD4KLSAgPC90cj4KLSAgPCUKLSAgfQotICAlPgotPC90YWJsZT4KLTwvc3Bhbj4KLTwlCi1pZiAoIWVuYWJsZUdyb3VwKSB7Ci0lPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBpbml0R3JvdXBBbGwoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsICc8JT10d2lzdEltYWdlTmFtZSU+JywgJzwlPWZyYWcuZ2V0SUQoKSU+JywgJzwlPWdyb3VwSUQlPicsICc8JT1ncm91cENoZWNrYm94SUQlPicsIDwlPWVuYWJsZUdyb3VwJT4pOwotICA8L3NjcmlwdD4KLTwlCi19Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwQ2hvaWNlRml4V0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RHcm91cENob2ljZUZpeFdGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMjNkYzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwQ2hvaWNlRml4V0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS54c2QuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBjaG9vc2Uoc2VsZWN0KSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGkrKykgewotICAgICAgdmFyIHRhYmxlQ29udGFpbmVySUQgPSAnPCU9RnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQlPic7Ci0gICAgICB0YWJsZUNvbnRhaW5lcklEICs9IHNlbGVjdC5vcHRpb25zKGkpLnZhbHVlOwotICAgICAgc2hvd1RhYmxlKHRhYmxlQ29udGFpbmVySUQsIHNlbGVjdC5vcHRpb25zKGkpLnNlbGVjdGVkKTsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBzaG93VGFibGUodGFibGVDb250YWluZXJJRCwgc2hvdykgewotICAgIHZhciB0YWJsZUNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhYmxlQ29udGFpbmVySUQpOwotICAgIGlmIChzaG93KQotICAgICAgdGFibGVDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgIGVsc2UKLSAgICAgIHRhYmxlQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLTwvc2NyaXB0PgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNER3JvdXBDaG9pY2VGcmFnbWVudCBmcmFnID0gKElYU0RHcm91cENob2ljZUZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci0lPgotPHRhYmxlIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAicmFuZ2VmcmFndGFibGUiIDogImlubmVycmFuZ2VmcmFndGFibGUiKSU+Ij4KLSAgPHRyPgotICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiIG5vd3JhcD48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9DSE9JQ0VTIiklPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciIgd2lkdGg9IjEwMCUiIG5vd3JhcD48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9FTEVNRU5UUyIpJT48L3RoPgotICA8L3RyPgotPCUKLSAgWFNEUGFydGljbGVbXSBjaG9pY2VzID0gZnJhZy5nZXRDaG9pY2VzKCk7Ci0gIFN0cmluZ1tdIGdyb3VwSURzID0gZnJhZy5nZXRHcm91cElEcygpOwotICBmb3IgKGludCBpID0gMDsgaSA8IHhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKTsgaSsrKSB7Ci0gICAgU3RyaW5nIGdyb3VwSUQ7Ci0gICAgaW50IGNob2ljZUluZGV4OwotICAgIGlmIChpIDwgZ3JvdXBJRHMubGVuZ3RoKSB7Ci0gICAgICBncm91cElEID0gZ3JvdXBJRHNbaV07Ci0gICAgICBjaG9pY2VJbmRleCA9IGZyYWcuZ2V0Q2hvaWNlSW5kZXgoZ3JvdXBJRCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgZ3JvdXBJRCA9IGZyYWcuY3JlYXRlR3JvdXBDaG9pY2VJbnN0YW5jZSgwKTsKLSAgICAgIGNob2ljZUluZGV4ID0gMDsKLSAgICB9Ci0gICAgSVhTREZyYWdtZW50W10gY2hvaWNlRnJhZ3MgPSBmcmFnLmdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSUQpOwotJT4KLSAgICA8dHI+Ci0gICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPWdyb3VwSUQlPiI+Ci0gICAgICAgIDxzZWxlY3QgaWQ9IjwlPWdyb3VwSUQlPiIgbmFtZT0iPCU9Z3JvdXBJRCU+IiBvbkNoYW5nZT0iamF2YXNjcmlwdDpjaG9vc2UodGhpcykiIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9DSE9JQ0VTIiklPiI+Ci08JQotICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY2hvaWNlRnJhZ3MubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgIFhTRENvbXBvbmVudCB4c2RDb21wb25lbnQgPSBjaG9pY2VGcmFnc1tqXS5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpLmdldFhTRENvbXBvbmVudCgpOwotICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSAiIjsKLSAgICAgICAgICAgIGlmKHhzZENvbXBvbmVudCBpbnN0YW5jZW9mIFhTREVsZW1lbnREZWNsYXJhdGlvbikKLSAgICAgICAgICAgICAgbmFtZSA9ICgoWFNERWxlbWVudERlY2xhcmF0aW9uKXhzZENvbXBvbmVudCkuZ2V0UU5hbWUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgbmFtZSA9IHhzZENvbXBvbmVudC5nZXRFbGVtZW50KCkuZ2V0VGFnTmFtZSgpOyAgCi0gICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGogPT0gY2hvaWNlSW5kZXgpIHsKLSU+Ci0gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjwlPWNob2ljZUZyYWdzW2pdLmdldElEKCklPiIgc2VsZWN0ZWQ+PCU9bmFtZSU+Ci08JQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0lPgotICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT1jaG9pY2VGcmFnc1tqXS5nZXRJRCgpJT4iPjwlPW5hbWUlPgotPCUKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0lPgotICAgICAgICA8L3NlbGVjdD4KLSAgICAgIDwvdGQ+Ci0gICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotPCUKLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjaG9pY2VGcmFncy5sZW5ndGg7IGorKykgewotICAgICAgICAgIGZyYWdJRC5kZWxldGUoMCwgZnJhZ0lELmxlbmd0aCgpKTsKLSAgICAgICAgICBmcmFnSUQuYXBwZW5kKGNob2ljZUZyYWdzW2pdLmdldElEKCkpOwotICAgICAgICAgIFN0cmluZyBjaG9pY2VGcmFnVGFibGVDb250YWluZXJJRCA9IChuZXcgU3RyaW5nQnVmZmVyKEZyYWdtZW50Q29uc3RhbnRzLlRBQkxFX0lEKSkuYXBwZW5kKGNob2ljZUZyYWdzW2pdLmdldElEKCkpLnRvU3RyaW5nKCk7Ci0lPgotICAgICAgICAgIDxzcGFuIGlkPSI8JT1jaG9pY2VGcmFnVGFibGVDb250YWluZXJJRCU+Ij4KLSAgICAgICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSI8JT1jaG9pY2VGcmFnc1tqXS5nZXRXcml0ZUZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICAgICAgICA8L3NwYW4+Ci0gICAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgICAgICBzaG93VGFibGUoJzwlPWNob2ljZUZyYWdUYWJsZUNvbnRhaW5lcklEJT4nLCA8JT0oaiA9PSBjaG9pY2VJbmRleCklPik7Ci0gICAgICAgICAgPC9zY3JpcHQ+Ci08JQotICAgICAgICB9Ci0lPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotPCUKLSAgfQotJT4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNER3JvdXBDaG9pY2VSRnJhZ21lbnRKU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwQ2hvaWNlUkZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc2Yjg1Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNER3JvdXBDaG9pY2VSRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIG9wZXJOb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClvcGVyTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotSVhTREdyb3VwQ2hvaWNlRnJhZ21lbnQgZnJhZyA9IChJWFNER3JvdXBDaG9pY2VGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotU3RyaW5nIHRhYmxlQ29udGFpbmVySURCYXNlID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotU3RyaW5nIHR3aXN0SW1hZ2VOYW1lQmFzZSA9IChuZXcgU3RyaW5nQnVmZmVyKCJ4IikpLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklEQmFzZSkudG9TdHJpbmcoKTsKLVN0cmluZ1tdIGdyb3VwSURzID0gZnJhZy5nZXRHcm91cElEcygpOwotaWYgKGdyb3VwSURzLmxlbmd0aCA9PSAxKSB7Ci0gIGludCBjaG9pY2VJbmRleCA9IGZyYWcuZ2V0Q2hvaWNlSW5kZXgoZ3JvdXBJRHNbMF0pOwotICBJWFNERnJhZ21lbnQgY2hvaWNlRnJhZyA9IGZyYWcuZ2V0R3JvdXBNZW1iZXJGcmFnbWVudHMoZ3JvdXBJRHNbMF0pW2Nob2ljZUluZGV4XTsKLSAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICBmcmFnSUQuYXBwZW5kKGNob2ljZUZyYWcuZ2V0SUQoKSk7Ci0lPgotICA8dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJmaXhmcmFndGFibGUiIDogImlubmVyZml4ZnJhZ3RhYmxlIiklPiI+Ci0gICAgPHRyPgotICAgICAgPHRkPgotICAgICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9Y2hvaWNlRnJhZy5nZXRSZWFkRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPCUKLX0KLWVsc2UgewotICBmb3IgKGludCBpID0gMDsgaSA8IGdyb3VwSURzLmxlbmd0aDsgaSsrKSB7Ci0gICAgaW50IGNob2ljZUluZGV4ID0gZnJhZy5nZXRDaG9pY2VJbmRleChncm91cElEc1tpXSk7Ci0gICAgSVhTREZyYWdtZW50IGNob2ljZUZyYWcgPSBmcmFnLmdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSURzW2ldKVtjaG9pY2VJbmRleF07Ci0gICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgIGZyYWdJRC5hcHBlbmQoY2hvaWNlRnJhZy5nZXRJRCgpKTsKLSU+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT1pICsgdGFibGVDb250YWluZXJJREJhc2UlPicsJzwlPWkgKyB0d2lzdEltYWdlTmFtZUJhc2UlPicpIj48aW1nIG5hbWU9IjwlPWkgKyB0d2lzdEltYWdlTmFtZUJhc2UlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdG9wZW5lZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9PUEVORUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICAgICAgPC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgICAgICA8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9HUk9VUF9OVU1CRVIiLCBTdHJpbmcudmFsdWVPZihpICsgMSkpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgICA8c3BhbiBpZD0iPCU9aSArIHRhYmxlQ29udGFpbmVySURCYXNlJT4iPgotICAgIDx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gImZpeGZyYWd0YWJsZSIgOiAiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIHdpZHRoPTE2PgotICAgICAgICAgIDxpbWcgd2lkdGg9MTYgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zcGFjZS5naWYiKSklPiIgYWx0PSIiPgotICAgICAgICA8L3RkPgotICAgICAgICA8dGQ+Ci0gICAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWNob2ljZUZyYWcuZ2V0UmVhZEZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgICA8L3NwYW4+Ci08JQotICB9Ci19Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwQ2hvaWNlUmFuZ2VXRnJhZ21lbnRKU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwQ2hvaWNlUmFuZ2VXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDkxYjdmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RHcm91cENob2ljZVJhbmdlV0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS54c2QuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImVsZW1lbnRJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBjaG9vc2Uoc2VsZWN0KSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGkrKykgewotICAgICAgdmFyIHRhYmxlQ29udGFpbmVySUQgPSAnPCU9RnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQlPic7Ci0gICAgICB0YWJsZUNvbnRhaW5lcklEICs9IHNlbGVjdC5vcHRpb25zKGkpLnZhbHVlOwotICAgICAgc2hvd1RhYmxlKHRhYmxlQ29udGFpbmVySUQsIHNlbGVjdC5vcHRpb25zKGkpLnNlbGVjdGVkKTsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBzaG93VGFibGUodGFibGVDb250YWluZXJJRCwgc2hvdykgewotICAgIHZhciB0YWJsZUNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhYmxlQ29udGFpbmVySUQpOwotICAgIGlmIChzaG93KQotICAgICAgdGFibGVDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgIGVsc2UKLSAgICAgIHRhYmxlQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLTwvc2NyaXB0PgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNER3JvdXBDaG9pY2VGcmFnbWVudCBmcmFnID0gKElYU0RHcm91cENob2ljZUZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1JWFNERWxlbWVudEZyYWdtZW50IGVsZW1lbnRGcmFnbWVudCA9IChJWFNERWxlbWVudEZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChlbGVtZW50SUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1TdHJpbmcgdGFibGVDb250YWluZXJJRCA9IChuZXcgU3RyaW5nQnVmZmVyKEZyYWdtZW50Q29uc3RhbnRzLlRBQkxFX0lEKSkuYXBwZW5kKGZyYWcuZ2V0SUQoKSkudG9TdHJpbmcoKTsKLVN0cmluZyB0d2lzdEltYWdlTmFtZSA9IChuZXcgU3RyaW5nQnVmZmVyKCJ4IikpLmFwcGVuZCh0YWJsZUNvbnRhaW5lcklEKS50b1N0cmluZygpOwotU3RyaW5nIG5hbWVBbmNob3JJRCA9IChuZXcgU3RyaW5nQnVmZmVyKEZyYWdtZW50Q29uc3RhbnRzLk5BTUVfQU5DSE9SX0lEKSkuYXBwZW5kKGZyYWcuZ2V0SUQoKSkudG9TdHJpbmcoKTsKLSU+Ci08YSBuYW1lPSI8JT1uYW1lQW5jaG9ySUQlPiIvPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCc8JT10d2lzdEltYWdlTmFtZSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdG9wZW5lZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9PUEVORUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmNyZWF0ZUluc3RhbmNlKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCA8JT14c2RDb25maWcuZ2V0TWF4T2NjdXJzKCklPiwgJzwlPWZyYWdJRCU+JywgJzwlPW5hbWVBbmNob3JJRCU+JykiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDwlIAotICAgICAgaWYoZWxlbWVudEZyYWdtZW50ICE9IG51bGwgJiYgZWxlbWVudEZyYWdtZW50LmlzTmlsbGFibGUoKSl7Ci0gICAgICAgIGlmKGVsZW1lbnRGcmFnbWVudC5pc05pbCgpKXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgY2hlY2tlZD48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX05JTCIpJT48L3RkPiAKLSAgICAgICAgICA8JQotICAgICAgICB9IAotICAgICAgICBlbHNlewotICAgICAgICAgICU+ICAKLSAgICAgICAgICA8dGQgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8JT0oKElYU0RFbGVtZW50RnJhZ21lbnQpZWxlbWVudEZyYWdtZW50KS5nZXROaWxJRCgpJT4iIHZhbHVlPSI8JT1JWFNERWxlbWVudEZyYWdtZW50Lk5JTF9WQUxVRSU+IiA+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgfQotICAgICU+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Y2hlY2tNaW5PY2N1cnNBbmRSZW1vdmVTZWxlY3RlZFJvd3MoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsIDwlPXhzZENvbmZpZy5nZXRNaW5PY2N1cnMoKSU+KSI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19SRU1PVkUiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxzcGFuIGlkPSI8JT10YWJsZUNvbnRhaW5lcklEJT4iPgotPHRhYmxlIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAicmFuZ2VmcmFndGFibGUiIDogImlubmVycmFuZ2VmcmFndGFibGUiKSU+Ij4KLSAgPHRyPgotICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVDaGVja0FsbENsaWNrKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLHRoaXMpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0FMTF9DSEVDS19CT1giKSU+Ij48L3RoPgotICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiIG5vd3JhcD48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9DSE9JQ0VTIiklPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciIgd2lkdGg9IjEwMCUiIG5vd3JhcD48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9FTEVNRU5UUyIpJT48L3RoPgotICA8L3RyPgotPCUKLSAgWFNEUGFydGljbGVbXSBjaG9pY2VzID0gZnJhZy5nZXRDaG9pY2VzKCk7Ci0gIFN0cmluZ1tdIGdyb3VwSURzID0gZnJhZy5nZXRHcm91cElEcygpOwotICBmb3IgKGludCBpID0gMDsgaSA8IGdyb3VwSURzLmxlbmd0aCB8fCBpIDwgeHNkQ29uZmlnLmdldE1pbk9jY3VycygpOyBpKyspIHsKLSAgICBTdHJpbmcgZ3JvdXBJRDsKLSAgICBpbnQgY2hvaWNlSW5kZXg7Ci0gICAgaWYgKGkgPCBncm91cElEcy5sZW5ndGgpIHsKLSAgICAgIGdyb3VwSUQgPSBncm91cElEc1tpXTsKLSAgICAgIGNob2ljZUluZGV4ID0gZnJhZy5nZXRDaG9pY2VJbmRleChncm91cElEKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBncm91cElEID0gZnJhZy5jcmVhdGVHcm91cENob2ljZUluc3RhbmNlKDApOwotICAgICAgY2hvaWNlSW5kZXggPSAwOwotICAgIH0KLSAgICBJWFNERnJhZ21lbnRbXSBjaG9pY2VGcmFncyA9IGZyYWcuZ2V0R3JvdXBNZW1iZXJGcmFnbWVudHMoZ3JvdXBJRCk7Ci0lPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlUm93Q2hlY2tib3hDbGljaygpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1JPV19DSEVDS19CT1giKSU+Ij4KLSAgICAgIDwvdGQ+Ci0gICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPWdyb3VwSUQlPiI+Ci0gICAgICAgIDxzZWxlY3QgaWQ9IjwlPWdyb3VwSUQlPiIgbmFtZT0iPCU9Z3JvdXBJRCU+IiBvbkNoYW5nZT0iamF2YXNjcmlwdDpjaG9vc2UodGhpcykiIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9DSE9JQ0VTIiklPiI+Ci08JQotICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY2hvaWNlRnJhZ3MubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgIFhTREVsZW1lbnREZWNsYXJhdGlvbiB4c2RFbGVtZW50ID0gKFhTREVsZW1lbnREZWNsYXJhdGlvbiljaG9pY2VGcmFnc1tqXS5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpLmdldFhTRENvbXBvbmVudCgpOwotICAgICAgICAgICAgaWYgKGogPT0gY2hvaWNlSW5kZXgpIHsKLSU+Ci0gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjwlPWNob2ljZUZyYWdzW2pdLmdldElEKCklPiIgc2VsZWN0ZWQ+PCU9eHNkRWxlbWVudC5nZXRRTmFtZSgpJT4KLTwlCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSU+Ci0gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjwlPWNob2ljZUZyYWdzW2pdLmdldElEKCklPiI+PCU9eHNkRWxlbWVudC5nZXRRTmFtZSgpJT4KLTwlCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotJT4KLSAgICAgICAgPC9zZWxlY3Q+Ci0gICAgICA8L3RkPgotICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLTwlCi0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY2hvaWNlRnJhZ3MubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICBmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0gICAgICAgICAgZnJhZ0lELmFwcGVuZChjaG9pY2VGcmFnc1tqXS5nZXRJRCgpKTsKLSAgICAgICAgICBTdHJpbmcgY2hvaWNlRnJhZ1RhYmxlQ29udGFpbmVySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCkpLmFwcGVuZChjaG9pY2VGcmFnc1tqXS5nZXRJRCgpKS50b1N0cmluZygpOwotJT4KLSAgICAgICAgICA8c3BhbiBpZD0iPCU9Y2hvaWNlRnJhZ1RhYmxlQ29udGFpbmVySUQlPiI+Ci0gICAgICAgICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9Y2hvaWNlRnJhZ3Nbal0uZ2V0V3JpdGVGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICAgICAgPC9zcGFuPgotICAgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgc2hvd1RhYmxlKCc8JT1jaG9pY2VGcmFnVGFibGVDb250YWluZXJJRCU+JywgPCU9KGogPT0gY2hvaWNlSW5kZXgpJT4pOwotICAgICAgICAgIDwvc2NyaXB0PgotPCUKLSAgICAgICAgfQotJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLTwlCi0gIH0KLSU+Ci08L3RhYmxlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwUkZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RHcm91cFJGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZGZkYTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwUkZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBvcGVyTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpb3Blck5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RHcm91cEZyYWdtZW50IGZyYWcgPSAoSVhTREdyb3VwRnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLVN0cmluZyB0YWJsZUNvbnRhaW5lcklEQmFzZSA9IChuZXcgU3RyaW5nQnVmZmVyKEZyYWdtZW50Q29uc3RhbnRzLlRBQkxFX0lEKSkuYXBwZW5kKGZyYWcuZ2V0SUQoKSkudG9TdHJpbmcoKTsKLVN0cmluZyB0d2lzdEltYWdlTmFtZUJhc2UgPSAobmV3IFN0cmluZ0J1ZmZlcigieCIpKS5hcHBlbmQodGFibGVDb250YWluZXJJREJhc2UpLnRvU3RyaW5nKCk7Ci1TdHJpbmdbXSBncm91cElEcyA9IGZyYWcuZ2V0R3JvdXBJRHMoKTsKLWlmIChncm91cElEcy5sZW5ndGggPT0gMSkgewotICBJWFNERnJhZ21lbnRbXSBncm91cE1lbWJlckZyYWdtZW50cyA9IGZyYWcuZ2V0R3JvdXBNZW1iZXJGcmFnbWVudHMoZ3JvdXBJRHNbMF0pOwotJT4KLSAgPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAiZml4ZnJhZ3RhYmxlIiA6ICJpbm5lcmZpeGZyYWd0YWJsZSIpJT4iPgotPCUKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBncm91cE1lbWJlckZyYWdtZW50cy5sZW5ndGg7IGkrKykgewotICAgIGZyYWdJRC5kZWxldGUoMCwgZnJhZ0lELmxlbmd0aCgpKTsKLSAgICBmcmFnSUQuYXBwZW5kKGdyb3VwTWVtYmVyRnJhZ21lbnRzW2ldLmdldElEKCkpOwotJT4KLSAgICA8dHI+Ci0gICAgICA8dGQ+Ci0gICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSI8JT1ncm91cE1lbWJlckZyYWdtZW50c1tpXS5nZXRSZWFkRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotPCUKLSAgfQotJT4KLSAgPC90YWJsZT4KLTwlCi19Ci1lbHNlIHsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBncm91cElEcy5sZW5ndGg7IGkrKykgewotICAgIElYU0RGcmFnbWVudFtdIGdyb3VwTWVtYmVyRnJhZ21lbnRzID0gZnJhZy5nZXRHcm91cE1lbWJlckZyYWdtZW50cyhncm91cElEc1tpXSk7Ci0lPgotICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9aSArIHRhYmxlQ29udGFpbmVySURCYXNlJT4nLCc8JT1pICsgdHdpc3RJbWFnZU5hbWVCYXNlJT4nKSI+PGltZyBuYW1lPSI8JT1pICsgdHdpc3RJbWFnZU5hbWVCYXNlJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RvcGVuZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfT1BFTkVEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICAgICAgPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfR1JPVVBfTlVNQkVSIiwgU3RyaW5nLnZhbHVlT2YoaSArIDEpKSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gICAgPHNwYW4gaWQ9IjwlPWkgKyB0YWJsZUNvbnRhaW5lcklEQmFzZSU+Ij4KLSAgICA8dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJmaXhmcmFndGFibGUiIDogImlubmVyZml4ZnJhZ3RhYmxlIiklPiI+Ci08JQotICAgIGZvciAoaW50IGogPSAwOyBqIDwgZ3JvdXBNZW1iZXJGcmFnbWVudHMubGVuZ3RoOyBqKyspIHsKLSAgICAgIGZyYWdJRC5kZWxldGUoMCwgZnJhZ0lELmxlbmd0aCgpKTsKLSAgICAgIGZyYWdJRC5hcHBlbmQoZ3JvdXBNZW1iZXJGcmFnbWVudHNbal0uZ2V0SUQoKSk7Ci0lPgotICAgICAgPHRyPgotICAgICAgICA8dGQgd2lkdGg9MTY+Ci0gICAgICAgICAgPGltZyB3aWR0aD0xNiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3NwYWNlLmdpZiIpKSU+IiBhbHQ9IiI+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZD4KLSAgICAgICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9Z3JvdXBNZW1iZXJGcmFnbWVudHNbal0uZ2V0UmVhZEZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci08JQotICAgIH0KLSU+Ci0gICAgPC90YWJsZT4KLSAgICA8L3NwYW4+Ci08JQotICB9Ci19Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwU2VxRml4V0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RHcm91cFNlcUZpeFdGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZDgxYzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwU2VxRml4V0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNER3JvdXBTZXFGcmFnbWVudCBmcmFnID0gKElYU0RHcm91cFNlcUZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1TdHJpbmdbXSBncm91cElEcyA9IGZyYWcuZ2V0R3JvdXBJRHMoKTsKLWZvciAoaW50IGkgPSAwOyBpIDwgeHNkQ29uZmlnLmdldE1heE9jY3VycygpOyBpKyspIHsKLSAgU3RyaW5nIGdyb3VwSUQ7Ci0gIGlmIChpIDwgZ3JvdXBJRHMubGVuZ3RoKQotICAgIGdyb3VwSUQgPSBncm91cElEc1tpXTsKLSAgZWxzZQotICAgIGdyb3VwSUQgPSBmcmFnLmNyZWF0ZUdyb3VwU2VxSW5zdGFuY2UoKTsKLSAgSVhTREZyYWdtZW50W10gZ3JvdXBNZW1iZXJGcmFnbWVudHMgPSBmcmFnLmdldEdyb3VwTWVtYmVyRnJhZ21lbnRzKGdyb3VwSUQpOwotJT4KLSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9ZnJhZy5nZXRJRCgpJT4iIHZhbHVlPSI8JT1ncm91cElEJT4iPgotICA8dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJmaXhmcmFndGFibGUiIDogImlubmVyZml4ZnJhZ3RhYmxlIiklPiI+Ci08JQotICBmb3IgKGludCBqID0gMDsgaiA8IGdyb3VwTWVtYmVyRnJhZ21lbnRzLmxlbmd0aDsgaisrKSB7Ci0gICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgIGZyYWdJRC5hcHBlbmQoZ3JvdXBNZW1iZXJGcmFnbWVudHNbal0uZ2V0SUQoKSk7Ci0lPgotICAgIDx0cj4KLSAgICAgIDx0ZD4KLSAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWdyb3VwTWVtYmVyRnJhZ21lbnRzW2pdLmdldFdyaXRlRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotPCUKLSAgfQotJT4KLSAgPC90YWJsZT4KLTwlCi19Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwU2VxUmFuZ2VXRnJhZ21lbnRKU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREdyb3VwU2VxUmFuZ2VXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmM0MWVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RHcm91cFNlcVJhbmdlV0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImVsZW1lbnRJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RHcm91cFNlcUZyYWdtZW50IGZyYWcgPSAoSVhTREdyb3VwU2VxRnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLUlYU0RFbGVtZW50RnJhZ21lbnQgZWxlbWVudEZyYWdtZW50ID0gKElYU0RFbGVtZW50RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGVsZW1lbnRJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLVN0cmluZyB0YWJsZUNvbnRhaW5lcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotU3RyaW5nIHR3aXN0SW1hZ2VOYW1lID0gKG5ldyBTdHJpbmdCdWZmZXIoIngiKSkuYXBwZW5kKHRhYmxlQ29udGFpbmVySUQpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgbmFtZUFuY2hvcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuTkFNRV9BTkNIT1JfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotJT4KLTxhIG5hbWU9IjwlPW5hbWVBbmNob3JJRCU+Ii8+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Y3JlYXRlSW5zdGFuY2UoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsIDwlPXhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKSU+LCAnPCU9ZnJhZ0lEJT4nLCAnPCU9bmFtZUFuY2hvcklEJT4nKSI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19BREQiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPCUgCi0gICAgICBpZihlbGVtZW50RnJhZ21lbnQgIT0gbnVsbCAmJiBlbGVtZW50RnJhZ21lbnQuaXNOaWxsYWJsZSgpKXsKLSAgICAgICAgaWYoZWxlbWVudEZyYWdtZW50LmlzTmlsKCkpewotICAgICAgICAgICU+ICAKLSAgICAgICAgICA8dGQgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8JT0oKElYU0RFbGVtZW50RnJhZ21lbnQpZWxlbWVudEZyYWdtZW50KS5nZXROaWxJRCgpJT4iIHZhbHVlPSI8JT1JWFNERWxlbWVudEZyYWdtZW50Lk5JTF9WQUxVRSU+IiBjaGVja2VkPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0gCi0gICAgICAgIGVsc2V7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iID48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX05JTCIpJT48L3RkPiAKLSAgICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgJT4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpjaGVja01pbk9jY3Vyc0FuZFJlbW92ZVNlbGVjdGVkUm93cygnPCU9dGFibGVDb250YWluZXJJRCU+JywgPCU9eHNkQ29uZmlnLmdldE1pbk9jY3VycygpJT4pIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1JFTU9WRSIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHNwYW4gaWQ9IjwlPXRhYmxlQ29udGFpbmVySUQlPiI+Ci08dGFibGUgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJyYW5nZWZyYWd0YWJsZSIgOiAiaW5uZXJyYW5nZWZyYWd0YWJsZSIpJT4iPgotICA8dHI+Ci0gICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPXRhYmxlQ29udGFpbmVySUQlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRUxFTUVOVFMiKSU+PC90aD4KLSAgPC90cj4KLSAgPCUKLSAgU3RyaW5nW10gZ3JvdXBJRHMgPSBmcmFnLmdldEdyb3VwSURzKCk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgZ3JvdXBJRHMubGVuZ3RoIHx8IGkgPCB4c2RDb25maWcuZ2V0TWluT2NjdXJzKCk7IGkrKykgewotICAgIFN0cmluZyBncm91cElEOwotICAgIGlmIChpIDwgZ3JvdXBJRHMubGVuZ3RoKQotICAgICAgZ3JvdXBJRCA9IGdyb3VwSURzW2ldOwotICAgIGVsc2UKLSAgICAgIGdyb3VwSUQgPSBmcmFnLmNyZWF0ZUdyb3VwU2VxSW5zdGFuY2UoKTsKLSAgICBJWFNERnJhZ21lbnRbXSBncm91cE1lbWJlckZyYWdtZW50cyA9IGZyYWcuZ2V0R3JvdXBNZW1iZXJGcmFnbWVudHMoZ3JvdXBJRCk7Ci0gICU+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPgotICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVSb3dDaGVja2JveENsaWNrKCkiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfUk9XX0NIRUNLX0JPWCIpJT4iPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPWZyYWcuZ2V0SUQoKSU+IiB2YWx1ZT0iPCU9Z3JvdXBJRCU+Ij4KLSAgICAgIDwlCi0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZ3JvdXBNZW1iZXJGcmFnbWVudHMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICBmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0gICAgICAgICAgZnJhZ0lELmFwcGVuZChncm91cE1lbWJlckZyYWdtZW50c1tqXS5nZXRJRCgpKTsKLSAgICAgICU+Ci0gICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9Z3JvdXBNZW1iZXJGcmFnbWVudHNbal0uZ2V0V3JpdGVGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICA8JQotICAgICAgICB9Ci0gICAgICAlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci0gIDwlCi0gIH0KLSAgJT4KLTwvdGFibGU+Ci08L3NwYW4+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNESW5mb0RpYWxvZy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNESW5mb0RpYWxvZy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMTNjNDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREluZm9EaWFsb2cuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLm5ldC4qIiAlPgotCi08JQotICAgU3RyaW5nIHNlc3Npb25JZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpOwotICAgSHR0cFNlc3Npb24gY3VycmVudFNlc3Npb24gPSAoSHR0cFNlc3Npb24pYXBwbGljYXRpb24uZ2V0QXR0cmlidXRlKHNlc3Npb25JZCk7Ci0gICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSAoQ29udHJvbGxlciljdXJyZW50U2Vzc2lvbi5nZXRBdHRyaWJ1dGUoImNvbnRyb2xsZXIiKTsKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgU3RyaW5nIG5vZGVJZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5OT0RFSUQpOwotICAgU3RyaW5nIGZyYWdtZW50SWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihXU0RMQWN0aW9uSW5wdXRzLkZSQUdNRU5UX0lEKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPgotICAgIDwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJUSVRMRV9YU0RfSU5GT1JNQVRJT05fRElBTE9HIiklPgotICA8L3RpdGxlPgotPC9oZWFkPgotPGZyYW1lc2V0IHJvd3M9IjMzLCoiIGJvcmRlcj0wIGJnY29sb3I9IiNFQ0U5RDgiPgotPCUKLSAgIFN0cmluZ0J1ZmZlciBsaW5rID0gbmV3IFN0cmluZ0J1ZmZlcigid3NkbC9mcmFnbWVudC9YU0RJbmZvX3Rvb2xiYXIuanNwPyIpOwotICAgbGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCkuYXBwZW5kKCc9JykuYXBwZW5kKHNlc3Npb25JZCk7Ci0gICBsaW5rLmFwcGVuZCgnJicpLmFwcGVuZChBY3Rpb25JbnB1dHMuTk9ERUlEKS5hcHBlbmQoJz0nKS5hcHBlbmQobm9kZUlkKTsKLSAgIGxpbmsuYXBwZW5kKCcmJykuYXBwZW5kKFdTRExBY3Rpb25JbnB1dHMuRlJBR01FTlRfSUQpLmFwcGVuZCgnPScpLmFwcGVuZChmcmFnbWVudElkKTsKLSU+Ci0gIDxmcmFtZSBuYW1lPSI8JT1XU0RMRnJhbWVOYW1lcy5YU0RfSU5GT19UT09MQkFSJT4iIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1hTRF9JTkZPUk1BVElPTl9UT09MQkFSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQobGluay50b1N0cmluZygpKSklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPCUgICAgICAKLSAgIGxpbmsuc2V0TGVuZ3RoKDApOwotICAgbGluay5hcHBlbmQoIndzZGwvZnJhZ21lbnQvWFNESW5mb19jb250ZW50LmpzcD8iKTsKLSAgIGxpbmsuYXBwZW5kKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpLmFwcGVuZCgnPScpLmFwcGVuZChzZXNzaW9uSWQpOwotICAgbGluay5hcHBlbmQoJyYnKS5hcHBlbmQoQWN0aW9uSW5wdXRzLk5PREVJRCkuYXBwZW5kKCc9JykuYXBwZW5kKG5vZGVJZCk7Ci0gICBsaW5rLmFwcGVuZCgnJicpLmFwcGVuZChXU0RMQWN0aW9uSW5wdXRzLkZSQUdNRU5UX0lEKS5hcHBlbmQoJz0nKS5hcHBlbmQoZnJhZ21lbnRJZCk7Ci0lPiAgCi0gIDxmcmFtZSBuYW1lPSI8JT1XU0RMRnJhbWVOYW1lcy5YU0RfSU5GT19DT05URU5UJT4iIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1hTRF9JTkZPUk1BVElPTl9DT05URU5UIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQobGluay50b1N0cmluZygpKSklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPC9mcmFtZXNldD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RJbmZvX2NvbnRlbnQuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREluZm9fY29udGVudC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYjk2NGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTREluZm9fY29udGVudC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJzZXNzaW9uSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgIHNlc3Npb25JRC5hcHBlbmQocmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCkpOwotICAgZnJhZ0lELmFwcGVuZChyZXF1ZXN0LmdldFBhcmFtZXRlcihXU0RMQWN0aW9uSW5wdXRzLkZSQUdNRU5UX0lEKSk7Ci0KLSAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSUQudG9TdHJpbmcoKSk7Ci0gICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSAoQ29udHJvbGxlciljdXJyZW50U2Vzc2lvbi5nZXRBdHRyaWJ1dGUoImNvbnRyb2xsZXIiKTsKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgbm9kZUlELmFwcGVuZChyZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuTk9ERUlEKSk7Ci0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotICAgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICBJWFNERnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfWFNEX0lORk9STUFUSU9OX0NPTlRFTlQiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLTxqc3A6aW5jbHVkZSBwYWdlPSI8JT1mcmFnLmdldEluZm9ybWF0aW9uRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNESW5mb190b29sYmFyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RJbmZvX3Rvb2xiYXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjE4NmI5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RJbmZvX3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPCUKLSAgIFN0cmluZyBzZXNzaW9uSWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuU0VTU0lPTklEKTsKLSAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShyZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuU0VTU0lPTklEKSk7Ci0gICBDb250cm9sbGVyIGNvbnRyb2xsZXIgPSAoQ29udHJvbGxlciljdXJyZW50U2Vzc2lvbi5nZXRBdHRyaWJ1dGUoImNvbnRyb2xsZXIiKTsKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQocmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLk5PREVJRCkpKTsKLSAgIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgSVhTREZyYWdtZW50IGZyYWcgPSBvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQocmVxdWVzdC5nZXRQYXJhbWV0ZXIoV1NETEFjdGlvbklucHV0cy5GUkFHTUVOVF9JRCkpOyAgIAotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1hTRF9JTkZPUk1BVElPTl9UT09MQkFSIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3Rvb2xiYXIuY3NzIikpJT4iPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBvblVubG9hZD0idG9wLm9wZW5lci54c2RJbmZvRGlhbG9nQ2xvc2VkPXRydWUiIGNsYXNzPSJ0b29sYmFyYm9keW1hcmdpbiI+Ci08ZGl2IGlkPSJ0b29sYmFyYm9yZGVyIj4KLSAgPGRpdiBpZD0idG9vbGJhciI+Ci0gICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBoZWlnaHQ9MjUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvd3NkbC5naWYiKSklPiIgYWx0PSIiIHdpZHRoPTE2IGhlaWdodD0xNj48L3RkPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0IiB3aWR0aD0iKiIgaGVpZ2h0PTI1IG5vd3JhcCBjbGFzcz0idGV4dCI+PCU9ZnJhZy5nZXROYW1lKCklPjwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZGl2PgotPC9kaXY+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdG9wLm9wZW5lci54c2RJbmZvRGlhbG9nQ2xvc2VkID0gZmFsc2U7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNEYXRlVGltZUZpeFdGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljRGF0ZVRpbWVGaXhXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWM0ZDNhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNEYXRlVGltZUZpeFdGcmFnbWVudEpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMiAgIDEyNzQ0MyBqZXNwZXJAc2Vsc2thYmV0Lm9yZyAtIEplc3BlciBTIE1vbGxlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuaW1wbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLnhzZC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZWxlbWVudElEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotU3RyaW5nIGZyYWdJRFN0cmluZyA9IGZyYWdJRC50b1N0cmluZygpOwotSVhTREZyYWdtZW50IGZyYWcgPSBvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotSVhTREVsZW1lbnRGcmFnbWVudCBlbGVtZW50RnJhZ21lbnQgPSAoSVhTREVsZW1lbnRGcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZWxlbWVudElELnRvU3RyaW5nKCkpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotWFNEU2ltcGxlVHlwZURlZmluaXRpb24gc2ltcGxlVHlwZSA9IChYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbilmcmFnLmdldFhTRFR5cGVEZWZpbml0aW9uKCk7Ci1YU0RUeXBlRGVmaW5pdGlvbiB4c2RCdWlsdEluVHlwZSA9IFhTRFR5cGVEZWZpbml0aW9uVXRpbC5yZXNvbHZlVG9YU0RCdWlsdEluVHlwZURlZmluaXRpb24oc2ltcGxlVHlwZSk7Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8bGFiZWwgZm9yPSI8JT1mcmFnSURTdHJpbmclPiI+PGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+PC9sYWJlbD4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8JT0oeHNkQnVpbHRJblR5cGUgIT0gbnVsbCA/IHhzZEJ1aWx0SW5UeXBlLmdldE5hbWUoKSA6IHNpbXBsZVR5cGUuZ2V0TmFtZSgpKSU+Ci0gICAgPC90ZD4KLSAgICA8JSAKLSAgICAgIGlmKGVsZW1lbnRGcmFnbWVudCAhPSBudWxsICYmIGVsZW1lbnRGcmFnbWVudC5pc05pbGxhYmxlKCkpewotICAgICAgICBpZihlbGVtZW50RnJhZ21lbnQuaXNOaWwoKSl7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iIGNoZWNrZWQ+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAlPgotICAgIDx0ZD4KLSAgICAgIDwlCi0gICAgICBpZiAoIWZyYWcudmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZXMoZnJhZ0lEU3RyaW5nKSkgewotICAgICAgJT4KLSAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLSAgICAgIDwlCi0gICAgICB9Ci0gICAgICAlPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gImZpeGZyYWd0YWJsZSIgOiAiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLSAgPCUKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCB4c2RDb25maWcuZ2V0TWF4T2NjdXJzKCk7IGkrKykgewotICAlPgotICA8dHI+Ci0gICAgPHRkIHdpZHRoPSI2MCUiPgotICAgICAgPCUKLSAgICAgIFN0cmluZyB2YWx1ZSA9IGZyYWcuZ2V0UGFyYW1ldGVyVmFsdWUoZnJhZy5nZXRJRCgpLCBpKTsKLSAgICAgICU+Ci0gICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IjwlPWZyYWcuZ2V0SUQoKSU+IiBuYW1lPSI8JT1mcmFnSURTdHJpbmclPiIgdmFsdWU9IjwlPSgodmFsdWUgIT0gbnVsbCkgPyBIVE1MVXRpbHMuY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzU3RyaWN0KHZhbHVlKSA6ICIiKSU+IiBzaXplPSI1MCIgY2xhc3M9InRhYmxldGV4dGVudGVyIj4KLSAgICA8L3RkPgotICAgIDx0ZCB2YWxpZ249ImNlbnRlciIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlbkNhbGVuZGFyQnJvd3Nlcig8JT1yZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuQ0FMRU5EQVJfVFlQRSklPiwnY29udGVudGJvcmRlcicsJzwlPWZyYWdJRFN0cmluZyU+Jyw8JT1pJT4pIj48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTElOS19CUk9XU0UiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iMzAlIj4mbmJzcDs8L3RkPiAgICAKLSAgPC90cj4KLSAgPCUKLSAgfQotICAlPgotPC90YWJsZT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNEYXRlVGltZVJhbmdlV0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNEYXRlVGltZVJhbmdlV0ZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY1MjNlYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljRGF0ZVRpbWVSYW5nZVdGcmFnbWVudEpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQudXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLnhzZC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZWxlbWVudElEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RGcmFnbWVudCBmcmFnID0gb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLUlYU0RFbGVtZW50RnJhZ21lbnQgZWxlbWVudEZyYWdtZW50ID0gKElYU0RFbGVtZW50RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGVsZW1lbnRJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLVhTRFNpbXBsZVR5cGVEZWZpbml0aW9uIHNpbXBsZVR5cGUgPSAoWFNEU2ltcGxlVHlwZURlZmluaXRpb24pZnJhZy5nZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotWFNEVHlwZURlZmluaXRpb24geHNkQnVpbHRJblR5cGUgPSBYU0RUeXBlRGVmaW5pdGlvblV0aWwucmVzb2x2ZVRvWFNEQnVpbHRJblR5cGVEZWZpbml0aW9uKHNpbXBsZVR5cGUpOwotU3RyaW5nIHRhYmxlQ29udGFpbmVySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCkpLmFwcGVuZChmcmFnLmdldElEKCkpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgdHdpc3RJbWFnZU5hbWUgPSAobmV3IFN0cmluZ0J1ZmZlcigieCIpKS5hcHBlbmQodGFibGVDb250YWluZXJJRCkudG9TdHJpbmcoKTsKLWludCBjYWxlbmRhclR5cGUgPSBJbnRlZ2VyLnBhcnNlSW50KHJlcXVlc3QuZ2V0UGFyYW1ldGVyKEFjdGlvbklucHV0cy5DQUxFTkRBUl9UWVBFKSk7Ci0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCc8JT10d2lzdEltYWdlTmFtZSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdG9wZW5lZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9PUEVORUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8bGFiZWwgZm9yPSI8JT1mcmFnLmdldElEKCklPiI+PGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+PC9sYWJlbD4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8JT0oeHNkQnVpbHRJblR5cGUgIT0gbnVsbCA/IHhzZEJ1aWx0SW5UeXBlLmdldE5hbWUoKSA6IHNpbXBsZVR5cGUuZ2V0TmFtZSgpKSU+Ci0gICAgPC90ZD4KLSAgICA8JSAKLSAgICAgIGlmKGVsZW1lbnRGcmFnbWVudCAhPSBudWxsICYmIGVsZW1lbnRGcmFnbWVudC5pc05pbGxhYmxlKCkpewotICAgICAgICBpZihlbGVtZW50RnJhZ21lbnQuaXNOaWwoKSl7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iIGNoZWNrZWQ+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgJT4KLSAgICAKLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDphZGRTaW1wbGVBdG9taWNEYXRlVGltZVJvd3MoPCU9Y2FsZW5kYXJUeXBlJT4sJzwlPXRhYmxlQ29udGFpbmVySUQlPicsICc8JT1mcmFnLmdldElEKCklPicsICc8JT1mcmFnLmdldElEKCklPicsIG51bGwsIDwlPXhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKSU+KSI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19BREQiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Y2hlY2tNaW5PY2N1cnNBbmRSZW1vdmVTZWxlY3RlZERhdGVUaW1lUm93cyg8JT1jYWxlbmRhclR5cGUlPiwnPCU9dGFibGVDb250YWluZXJJRCU+Jyw8JT14c2RDb25maWcuZ2V0TWluT2NjdXJzKCklPikiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfUkVNT1ZFIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZD4KLSAgICAgIDwlCi0gICAgICBpZiAoIWZyYWcudmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZXMoZnJhZy5nZXRJRCgpKSkgewotICAgICAgJT4KLSAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLSAgICAgIDwlCi0gICAgICB9Ci0gICAgICAlPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxzcGFuIGlkPSI8JT10YWJsZUNvbnRhaW5lcklEJT4iPgotPHRhYmxlIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAicmFuZ2VmcmFndGFibGUiIDogImlubmVycmFuZ2VmcmFndGFibGUiKSU+Ij4KLSAgPHRyPgotICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVDaGVja0FsbENsaWNrKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLHRoaXMpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0FMTF9DSEVDS19CT1giKSU+Ij48L3RoPgotICAgIDx0aCB3aWR0aD0iOTAlIiBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1ZBTFVFUyIpJT48L3RoPgotICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9BQ1RJT05TIiklPjwvdGg+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPC9zcGFuPgotPCUKLVN0cmluZ1tdIHZhbHVlcyA9IGZyYWcuZ2V0UGFyYW1ldGVyVmFsdWVzKGZyYWcuZ2V0SUQoKSk7Ci1pbnQgaSA9IDA7Ci1pZiAodmFsdWVzICE9IG51bGwpIHsKLSAgZm9yICggOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7Ci0lPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgYWRkU2ltcGxlQXRvbWljRGF0ZVRpbWVSb3dzKDwlPWNhbGVuZGFyVHlwZSU+LCI8JT10YWJsZUNvbnRhaW5lcklEJT4iLCI8JT1mcmFnLmdldElEKCklPiIsIjwlPWZyYWcuZ2V0SUQoKSU+IiwiPCU9dmFsdWVzW2ldJT4iLDwlPXhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKSU+KTsKLSAgICA8L3NjcmlwdD4KLTwlCi0gIH0KLX0KLWZvciAoIDsgaSA8IHhzZENvbmZpZy5nZXRNaW5PY2N1cnMoKTsgaSsrKSB7Ci0lPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBhZGRTaW1wbGVBdG9taWNEYXRlVGltZVJvd3MoPCU9Y2FsZW5kYXJUeXBlJT4sIjwlPXRhYmxlQ29udGFpbmVySUQlPiIsIjwlPWZyYWcuZ2V0SUQoKSU+IiwiPCU9ZnJhZy5nZXRJRCgpJT4iLG51bGwsPCU9eHNkQ29uZmlnLmdldE1heE9jY3VycygpJT4pOwotICA8L3NjcmlwdD4KLTwlCi19Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUF0b21pY0VudW1GaXhXRnJhZ21lbnRKU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUF0b21pY0VudW1GaXhXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTk3MzFhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNFbnVtRml4V0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQudXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS54c2QuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImVsZW1lbnRJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICBOb2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotICAgV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICBYU0RTaW1wbGVBdG9taWNFbnVtRnJhZ21lbnQgZnJhZyA9IChYU0RTaW1wbGVBdG9taWNFbnVtRnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLSAgIElYU0RFbGVtZW50RnJhZ21lbnQgZWxlbWVudEZyYWdtZW50ID0gKElYU0RFbGVtZW50RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGVsZW1lbnRJRC50b1N0cmluZygpKTsKLSAgIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLSAgIFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uIHNpbXBsZVR5cGUgPSAoWFNEU2ltcGxlVHlwZURlZmluaXRpb24pZnJhZy5nZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotICAgWFNEVHlwZURlZmluaXRpb24geHNkQnVpbHRJblR5cGUgPSBYU0RUeXBlRGVmaW5pdGlvblV0aWwucmVzb2x2ZVRvWFNEQnVpbHRJblR5cGVEZWZpbml0aW9uKHNpbXBsZVR5cGUpOwotJT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGxhYmVsIGZvcj0iPCU9ZnJhZy5nZXRJRCgpJT4iPjxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlblhTREluZm9EaWFsb2coJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChPcGVuWFNESW5mb0RpYWxvZ0FjdGlvbi5nZXRBY3Rpb25MaW5rKHNlc3Npb24uZ2V0SWQoKSxzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksZnJhZ0lELnRvU3RyaW5nKCkpKSklPicpIj48JT1mcmFnLmdldE5hbWUoKSU+PC9hPjwvbGFiZWw+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPCU9KHhzZEJ1aWx0SW5UeXBlICE9IG51bGwgPyB4c2RCdWlsdEluVHlwZS5nZXROYW1lKCkgOiBzaW1wbGVUeXBlLmdldE5hbWUoKSklPgotICAgIDwvdGQ+Ci0gICAgICA8JSAKLSAgICAgIGlmKGVsZW1lbnRGcmFnbWVudCAhPSBudWxsICYmIGVsZW1lbnRGcmFnbWVudC5pc05pbGxhYmxlKCkpewotICAgICAgICBpZihlbGVtZW50RnJhZ21lbnQuaXNOaWwoKSl7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iIGNoZWNrZWQ+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgICU+Ci0gICAgPHRkPgotPCUKLSAgIGlmICghZnJhZy52YWxpZGF0ZVBhcmFtZXRlclZhbHVlcyhmcmFnLmdldElEKCkpKQotICAgewotJT4KLSAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLTwlCi0gICB9Ci0lPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gImZpeGZyYWd0YWJsZSIgOiAiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLTwlCi0gICBPcHRpb25WZWN0b3Igb3B0aW9uVmVjdG9yID0gZnJhZy5nZXRPcHRpb25WZWN0b3IoKTsKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgeHNkQ29uZmlnLmdldE1heE9jY3VycygpOyBpKyspCi0gICB7Ci0lPgotICA8dHI+Ci0gICAgPHRkPgotPCUKLSAgICAgU3RyaW5nIHNlbGVjdGVkVmFsdWUgPSBmcmFnLmdldFBhcmFtZXRlclZhbHVlKGZyYWcuZ2V0SUQoKSwgaSk7Ci0lPgotICAgICAgPHNlbGVjdCBpZD0iPCU9ZnJhZy5nZXRJRCgpJT4iIG5hbWU9IjwlPWZyYWcuZ2V0SUQoKSU+IiBjbGFzcz0ic2VsZWN0bGlzdCI+Ci08JSAgICAgICAgICAgICAgCi0gICAgIGZvciAoaW50IGogPSAwOyBqIDwgb3B0aW9uVmVjdG9yLnNpemUoKTsgaisrKQotICAgICB7Ci0gICAgICAgU3RyaW5nIGRpc3BsYXlWYWx1ZSA9IG9wdGlvblZlY3Rvci5nZXREaXNwbGF5VmFsdWUoaik7Ci0gICAgICAgU3RyaW5nIHZhbHVlID0gb3B0aW9uVmVjdG9yLmdldFZhbHVlKGopOwotICAgICAgIGlmICh2YWx1ZS5lcXVhbHMoc2VsZWN0ZWRWYWx1ZSkpCi0gICAgICAgewotJT4KLSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9dmFsdWUlPiIgc2VsZWN0ZWQ+PCU9ZGlzcGxheVZhbHVlJT4KLTwlCi0gICAgICAgfQotICAgICAgIGVsc2UKLSAgICAgICB7Ci0lPgotICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT12YWx1ZSU+Ij48JT1kaXNwbGF5VmFsdWUlPgotPCUKLSAgICAgICB9Ci0gICAgIH0KLSU+Ci0gICAgICA8L3NlbGVjdD4KLSAgICA8L3RkPgotICA8L3RyPgotPCUKLSAgIH0KLSAgJT4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljRW51bVJhbmdlV0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNFbnVtUmFuZ2VXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTdhOWVlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNFbnVtUmFuZ2VXRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQudXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLnhzZC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZWxlbWVudElEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLSAgIFdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgWFNEU2ltcGxlQXRvbWljRW51bUZyYWdtZW50IGZyYWcgPSAoWFNEU2ltcGxlQXRvbWljRW51bUZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci0gICBJWFNERWxlbWVudEZyYWdtZW50IGVsZW1lbnRGcmFnbWVudCA9IChJWFNERWxlbWVudEZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChlbGVtZW50SUQudG9TdHJpbmcoKSk7Ci0gICBPcHRpb25WZWN0b3Igb3B0aW9uVmVjdG9yID0gZnJhZy5nZXRPcHRpb25WZWN0b3IoKTsKLSAgIFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLSAgIFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uIHNpbXBsZVR5cGUgPSAoWFNEU2ltcGxlVHlwZURlZmluaXRpb24pZnJhZy5nZXRYU0RUeXBlRGVmaW5pdGlvbigpOwotICAgWFNEVHlwZURlZmluaXRpb24geHNkQnVpbHRJblR5cGUgPSBYU0RUeXBlRGVmaW5pdGlvblV0aWwucmVzb2x2ZVRvWFNEQnVpbHRJblR5cGVEZWZpbml0aW9uKHNpbXBsZVR5cGUpOwotICAgU3RyaW5nIHRhYmxlQ29udGFpbmVySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCkpLmFwcGVuZChmcmFnLmdldElEKCkpLnRvU3RyaW5nKCk7Ci0gICBTdHJpbmcgdHdpc3RJbWFnZU5hbWUgPSAobmV3IFN0cmluZ0J1ZmZlcigieCIpKS5hcHBlbmQodGFibGVDb250YWluZXJJRCkudG9TdHJpbmcoKTsKLSAgIFN0cmluZyBvcHRpb25zQ29udGFpbmVySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5YU0RfQVRPTUlDX0VOVU1fSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotJT4KLTxzcGFuIGlkPSI8JT1vcHRpb25zQ29udGFpbmVySUQlPiI+Ci08JQotICAgZm9yIChpbnQgaiA9IDA7IGogPCBvcHRpb25WZWN0b3Iuc2l6ZSgpOyBqKyspIHsKLSU+Ci0gICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9b3B0aW9uc0NvbnRhaW5lcklEJT4iIHZhbHVlPSI8JT1vcHRpb25WZWN0b3IuZ2V0RGlzcGxheVZhbHVlKGopJT4iPgotICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPW9wdGlvbnNDb250YWluZXJJRCU+IiB2YWx1ZT0iPCU9b3B0aW9uVmVjdG9yLmdldFZhbHVlKGopJT4iPgotPCUKLSAgIH0KLSU+Ci08L3NwYW4+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgZnVuY3Rpb24gYWRkU2ltcGxlQXRvbWljRW51bVJvd3ModGFibGVDb250YWluZXJJRCwgb3B0aW9uc0NvbnRhaW5lcklELCBpZCwgbmFtZSwgdmFsdWUsIG1heE9jY3VycykgewotICAgIGlmIChjaGVja01heE9jY3Vyc1JlYWNoZWQodGFibGVDb250YWluZXJJRCwgbWF4T2NjdXJzKSkKLSAgICAgIHJldHVybjsKLSAgICB0d2lzdE9wZW4odGFibGVDb250YWluZXJJRCk7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJRCk7Ci0gICAgdmFyIHRhYmxlQm9keSA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLml0ZW0oMCk7Ci0gICAgdmFyIG5ld1JvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgdmFyIGNvbHVtbjAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIHZhciBjb2x1bW4xID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLQotICAgIHZhciByb3dDaGVja2JveCA9IGNyZWF0ZVJvd0NoZWNrYm94KCk7Ci0gICAgY29sdW1uMC5hcHBlbmRDaGlsZChyb3dDaGVja2JveCk7Ci0KLSAgICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7Ci0gICAgY29sdW1uMS5hcHBlbmRDaGlsZChzZWxlY3QpOwotICAgIHNlbGVjdC5pZCA9IGlkOwotICAgIHNlbGVjdC5uYW1lID0gbmFtZTsKLSAgICBzZWxlY3QuY2xhc3NOYW1lID0gInNlbGVjdGxpc3QiOwotICAgIHZhciBvcHRpb25zID0gZ2V0T3B0aW9ucyhvcHRpb25zQ29udGFpbmVySUQpOwotICAgIHZhciBpbmRleCA9IDA7Ci0gICAgZm9yICh2YXIgayA9IDA7IGsgPCBvcHRpb25zLmxlbmd0aDsgayArPSAyKSB7Ci0gICAgICBzZWxlY3Qub3B0aW9uc1tpbmRleF0gPSBuZXcgT3B0aW9uKG9wdGlvbnNba10udmFsdWUsb3B0aW9uc1trKzFdLnZhbHVlKTsKLSAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlID09IG9wdGlvbnNbaysxXS52YWx1ZSkKLSAgICAgICAgc2VsZWN0Lm9wdGlvbnNbaW5kZXhdLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgIGluZGV4Kys7Ci0gICAgfQotCi0gICAgY29sdW1uMC5jbGFzc05hbWUgPSAiY2hlY2tib3hjZWxscyI7Ci0gICAgY29sdW1uMS5jbGFzc05hbWUgPSAidGFibGVjZWxscyI7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjApOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4xKTsKLSAgICB0YWJsZUJvZHkuYXBwZW5kQ2hpbGQobmV3Um93KTsKLSAgfQotCi0gIGZ1bmN0aW9uIGdldE9wdGlvbnMob3B0aW9uc0NvbnRhaW5lcklEKSB7Ci0gICAgdmFyIG9wdGlvbnNDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zQ29udGFpbmVySUQpOwotICAgIHZhciBvcHRpb25zID0gb3B0aW9uc0NvbnRhaW5lci5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKTsKLSAgICByZXR1cm4gb3B0aW9uczsKLSAgfQotPC9zY3JpcHQ+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxsYWJlbCBmb3I9IjwlPWZyYWcuZ2V0SUQoKSU+Ij48YSBocmVmPSJqYXZhc2NyaXB0Om9wZW5YU0RJbmZvRGlhbG9nKCc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoT3BlblhTREluZm9EaWFsb2dBY3Rpb24uZ2V0QWN0aW9uTGluayhzZXNzaW9uLmdldElkKCksc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLGZyYWdJRC50b1N0cmluZygpKSkpJT4nKSI+PCU9ZnJhZy5nZXROYW1lKCklPjwvYT48L2xhYmVsPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDwlPSh4c2RCdWlsdEluVHlwZSAhPSBudWxsID8geHNkQnVpbHRJblR5cGUuZ2V0TmFtZSgpIDogc2ltcGxlVHlwZS5nZXROYW1lKCkpJT4KLSAgICA8L3RkPgotICAgICAgPCUgCi0gICAgICBpZihlbGVtZW50RnJhZ21lbnQgIT0gbnVsbCAmJiBlbGVtZW50RnJhZ21lbnQuaXNOaWxsYWJsZSgpKXsKLSAgICAgICAgaWYoZWxlbWVudEZyYWdtZW50LmlzTmlsKCkpewotICAgICAgICAgICU+ICAKLSAgICAgICAgICA8dGQgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8JT0oKElYU0RFbGVtZW50RnJhZ21lbnQpZWxlbWVudEZyYWdtZW50KS5nZXROaWxJRCgpJT4iIHZhbHVlPSI8JT1JWFNERWxlbWVudEZyYWdtZW50Lk5JTF9WQUxVRSU+IiBjaGVja2VkPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0gCi0gICAgICAgIGVsc2V7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iID48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX05JTCIpJT48L3RkPiAKLSAgICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAlPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmFkZFNpbXBsZUF0b21pY0VudW1Sb3dzKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCAnPCU9b3B0aW9uc0NvbnRhaW5lcklEJT4nLCAnPCU9ZnJhZy5nZXRJRCgpJT4nLCAnPCU9ZnJhZy5nZXRJRCgpJT4nLCBudWxsLCA8JT14c2RDb25maWcuZ2V0TWF4T2NjdXJzKCklPikiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmNoZWNrTWluT2NjdXJzQW5kUmVtb3ZlU2VsZWN0ZWRSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCA8JT14c2RDb25maWcuZ2V0TWluT2NjdXJzKCklPikiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfUkVNT1ZFIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZD4KLSAgICAgIDwlCi0gICAgICBpZiAoIWZyYWcudmFsaWRhdGVQYXJhbWV0ZXJWYWx1ZXMoZnJhZy5nZXRJRCgpKSkgewotICAgICAgJT4KLSAgICAgIDwlPUhUTUxVdGlscy5yZWRBc3RlcmlzaygpJT4KLSAgICAgIDwlCi0gICAgICB9Ci0gICAgICAlPgotICAgIDwvdGQ+Ci0gICAgPHRkIG5vd3JhcCB3aWR0aD0iOTAlIj4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxzcGFuIGlkPSI8JT10YWJsZUNvbnRhaW5lcklEJT4iPgotPHRhYmxlIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAicmFuZ2VmcmFndGFibGUiIDogImlubmVycmFuZ2VmcmFndGFibGUiKSU+Ij4KLSAgPHRyPgotICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJoYW5kbGVDaGVja0FsbENsaWNrKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLHRoaXMpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0FMTF9DSEVDS19CT1giKSU+Ij48L3RoPgotICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1ZBTFVFUyIpJT48L3RoPgotICA8L3RyPgotPC90YWJsZT4KLTwvc3Bhbj4KLTwlCi1TdHJpbmdbXSB2YWx1ZXMgPSBmcmFnLmdldFBhcmFtZXRlclZhbHVlcyhmcmFnLmdldElEKCkpOwotaW50IGkgPSAwOwotaWYgKHZhbHVlcyAhPSBudWxsKSB7Ci0gIGZvciAoIDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewotJT4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgIGFkZFNpbXBsZUF0b21pY0VudW1Sb3dzKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCAnPCU9b3B0aW9uc0NvbnRhaW5lcklEJT4nLCAnPCU9ZnJhZy5nZXRJRCgpJT4nLCAnPCU9ZnJhZy5nZXRJRCgpJT4nLCAnPCU9dmFsdWVzW2ldJT4nLCAnPCU9eHNkQ29uZmlnLmdldE1heE9jY3VycygpJT4nKTsKLSAgICA8L3NjcmlwdD4KLTwlCi0gIH0KLX0KLWZvciAoIDsgaSA8IHhzZENvbmZpZy5nZXRNaW5PY2N1cnMoKTsgaSsrKSB7Ci0lPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBhZGRTaW1wbGVBdG9taWNFbnVtUm93cygnPCU9dGFibGVDb250YWluZXJJRCU+JywgJzwlPW9wdGlvbnNDb250YWluZXJJRCU+JywgJzwlPWZyYWcuZ2V0SUQoKSU+JywgJzwlPWZyYWcuZ2V0SUQoKSU+JywgbnVsbCwgJzwlPXhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKSU+Jyk7Ci0gIDwvc2NyaXB0PgotPCUKLX0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljRml4V0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNGaXhXRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjZhZDgxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNGaXhXRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjIgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC51dGlsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LmltcGwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UueHNkLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJlbGVtZW50SUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJhdHRyaWJ1dGUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNERnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1JWFNERWxlbWVudEZyYWdtZW50IGVsZW1lbnRGcmFnbWVudCA9IChJWFNERWxlbWVudEZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChlbGVtZW50SUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1YU0RTaW1wbGVUeXBlRGVmaW5pdGlvbiBzaW1wbGVUeXBlID0gKFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uKWZyYWcuZ2V0WFNEVHlwZURlZmluaXRpb24oKTsKLVhTRFR5cGVEZWZpbml0aW9uIHhzZEJ1aWx0SW5UeXBlID0gWFNEVHlwZURlZmluaXRpb25VdGlsLnJlc29sdmVUb1hTREJ1aWx0SW5UeXBlRGVmaW5pdGlvbihzaW1wbGVUeXBlKTsKLWJvb2xlYW4gYXR0cmlidXRlQm9vbCA9IEJvb2xlYW4udmFsdWVPZihhdHRyaWJ1dGUudG9TdHJpbmcoKSkuYm9vbGVhblZhbHVlKCkgOwotCi0lPgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8bGFiZWwgZm9yPSI8JT1mcmFnLmdldElEKCklPiI+PGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+PC9sYWJlbD4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8JT0oeHNkQnVpbHRJblR5cGUgIT0gbnVsbCA/IHhzZEJ1aWx0SW5UeXBlLmdldE5hbWUoKSA6IHNpbXBsZVR5cGUuZ2V0TmFtZSgpKSU+Ci0gICAgPC90ZD4KLSAgICA8JSAKLSAgICAgIGlmKGVsZW1lbnRGcmFnbWVudCAhPSBudWxsICYmIGVsZW1lbnRGcmFnbWVudC5pc05pbGxhYmxlKCkgJiYgIShhdHRyaWJ1dGVCb29sKSApewotICAgICAgICBpZihlbGVtZW50RnJhZ21lbnQuaXNOaWwoKSl7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iIGNoZWNrZWQ+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgICU+Ci0gICAgCi0gICAgPHRkPgotICAgICAgPCUKLSAgICAgIGlmICghZnJhZy52YWxpZGF0ZVBhcmFtZXRlclZhbHVlcyhmcmFnLmdldElEKCkpKSB7Ci0gICAgICAlPgotICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotICAgICAgPCUKLSAgICAgIH0KLSAgICAgICU+Ci0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAiZml4ZnJhZ3RhYmxlIiA6ICJpbm5lcmZpeGZyYWd0YWJsZSIpJT4iPgotICA8JQotICBmb3IgKGludCBpID0gMDsgaSA8IHhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKTsgaSsrKSB7Ci0gICU+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICA8JQotICAgICAgU3RyaW5nIHZhbHVlID0gZnJhZy5nZXRQYXJhbWV0ZXJWYWx1ZShmcmFnLmdldElEKCksIGkpOwotICAgICAgJT4KLSAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iPCU9ZnJhZy5nZXRJRCgpJT4iIG5hbWU9IjwlPWZyYWcuZ2V0SUQoKSU+IiB2YWx1ZT0iPCU9KCh2YWx1ZSAhPSBudWxsKSA/IEhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXNTdHJpY3QodmFsdWUpIDogIiIpJT4iIHNpemU9IjUwIiBjbGFzcz0idGFibGV0ZXh0ZW50ZXIiPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci0gIDwlCi0gIH0KLSAgJT4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljSW5mb0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNJbmZvRnJhZ21lbnRKU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmNlZmZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVBdG9taWNJbmZvRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQudXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS54c2QuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0ic2Vzc2lvbklEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTwlCi1IdHRwU2Vzc2lvbiBjdXJyZW50U2Vzc2lvbiA9IChIdHRwU2Vzc2lvbilhcHBsaWNhdGlvbi5nZXRBdHRyaWJ1dGUoc2Vzc2lvbklELnRvU3RyaW5nKCkpOwotQ29udHJvbGxlciBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpY3VycmVudFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RGcmFnbWVudCBmcmFnID0gb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLVhTRFNpbXBsZVR5cGVEZWZpbml0aW9uIHNpbXBsZVR5cGUgPSAoWFNEU2ltcGxlVHlwZURlZmluaXRpb24pZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpLmdldFhTRENvbXBvbmVudCgpOwotCi1pbnQgbWluTGVuZ3RoID0gLTE7Ci1pbnQgbWF4TGVuZ3RoID0gLTE7Ci1WZWN0b3IgcGF0dGVyblZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLVN0cmluZyB3aGl0ZVNwYWNlID0gbnVsbDsKLWJvb2xlYW4gbWluRXhjbHVzaXZlID0gdHJ1ZTsKLU9iamVjdCBtaW4gPSBudWxsOwotYm9vbGVhbiBtYXhFeGNsdXNpdmUgPSB0cnVlOwotT2JqZWN0IG1heCA9IG51bGw7Ci1pbnQgdG90YWxEaWdpdHMgPSAtMTsKLWludCBmcmFjdGlvbkRpZ2l0cyA9IC0xOwotCi1YU0RTaW1wbGVUeXBlRGVmaW5pdGlvbiBjdXJyVHlwZSA9IHNpbXBsZVR5cGU7Ci13aGlsZSAoIVhTRFR5cGVEZWZpbml0aW9uVXRpbC5pc1Jvb3RUeXBlRGVmaW5pdGlvbihjdXJyVHlwZSkpIHsKLSAgLy8gbWluTGVuZ3RoCi0gIGlmIChtaW5MZW5ndGggPCAwKSB7Ci0gICAgWFNETGVuZ3RoRmFjZXQgeHNkTGVuZ3RoRmFjZXQgPSBjdXJyVHlwZS5nZXRMZW5ndGhGYWNldCgpOwotICAgIFhTRE1pbkxlbmd0aEZhY2V0IHhzZE1pbkxlbmd0aEZhY2V0ID0gY3VyclR5cGUuZ2V0TWluTGVuZ3RoRmFjZXQoKTsKLSAgICAvLyBwb3J0IHRvIG9yZy5lY2xpcHNlLnhzZAotICAgIGlmICh4c2RMZW5ndGhGYWNldCAhPSBudWxsKQotICAgICAgbWluTGVuZ3RoID0geHNkTGVuZ3RoRmFjZXQuZ2V0VmFsdWUoKTsKLSAgICBlbHNlIGlmICh4c2RNaW5MZW5ndGhGYWNldCAhPSBudWxsKQotICAgICAgbWluTGVuZ3RoID0geHNkTWluTGVuZ3RoRmFjZXQuZ2V0VmFsdWUoKTsKLSAgfQotICAvLyBtYXhMZW5ndGgKLSAgaWYgKG1heExlbmd0aCA8IDApIHsKLSAgICBYU0RMZW5ndGhGYWNldCB4c2RMZW5ndGhGYWNldCA9IGN1cnJUeXBlLmdldExlbmd0aEZhY2V0KCk7Ci0gICAgWFNETWF4TGVuZ3RoRmFjZXQgeHNkTWF4TGVuZ3RoRmFjZXQgPSBjdXJyVHlwZS5nZXRNYXhMZW5ndGhGYWNldCgpOwotICAgIC8vIHBvcnQgdG8gb3JnLmVjbGlwc2UueHNkCi0gICAgaWYgKHhzZExlbmd0aEZhY2V0ICE9IG51bGwpCi0gICAgICBtYXhMZW5ndGggPSB4c2RMZW5ndGhGYWNldC5nZXRWYWx1ZSgpOwotICAgIGVsc2UgaWYgKHhzZE1heExlbmd0aEZhY2V0ICE9IG51bGwpCi0gICAgICBtYXhMZW5ndGggPSB4c2RNYXhMZW5ndGhGYWNldC5nZXRWYWx1ZSgpOwotICB9Ci0gIC8vIHBhdHRlcm5WZWN0b3IKLSAgRUxpc3QgeHNkUGF0dGVybkZhY2V0cyA9IGN1cnJUeXBlLmdldFBhdHRlcm5GYWNldHMoKTsKLSAgaWYgKHhzZFBhdHRlcm5GYWNldHMgIT0gbnVsbCkgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeHNkUGF0dGVybkZhY2V0cy5zaXplKCk7IGkrKykgewotICAgICAgWFNEUGF0dGVybkZhY2V0IHhzZFBhdHRlcm5GYWNldCA9IChYU0RQYXR0ZXJuRmFjZXQpeHNkUGF0dGVybkZhY2V0cy5nZXQoaSk7Ci0gICAgICBFTGlzdCBwYXR0ZXJucyA9IHhzZFBhdHRlcm5GYWNldC5nZXRWYWx1ZSgpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwYXR0ZXJucy5zaXplKCk7IGorKykgewotICAgICAgICBwYXR0ZXJuVmVjdG9yLmFkZChwYXR0ZXJucy5nZXQoaikpOwotICAgICAgfQotICAgIH0KLSAgfQotICAvLyB3aGl0ZVNwYWNlCi0gIGlmICh3aGl0ZVNwYWNlID09IG51bGwpIHsKLSAgICBYU0RXaGl0ZVNwYWNlRmFjZXQgeHNkV2hpdGVTcGFjZUZhY2V0ID0gY3VyclR5cGUuZ2V0V2hpdGVTcGFjZUZhY2V0KCk7Ci0gICAgLy8gcG9ydCB0byBvcmcuZWNsaXBzZS54c2QKLSAgICBpZiAoeHNkV2hpdGVTcGFjZUZhY2V0ICE9IG51bGwpCi0gICAgICB3aGl0ZVNwYWNlID0geHNkV2hpdGVTcGFjZUZhY2V0LmdldFZhbHVlKCkuZ2V0TmFtZSgpOwotICB9Ci0gIC8vIG1pbiBpbi9leGNsdXNpdmUKLSAgaWYgKG1pbiA9PSBudWxsICkgewotICAgIFhTRE1pbkV4Y2x1c2l2ZUZhY2V0IHhzZE1pbkV4Y2x1c2l2ZUZhY2V0ID0gY3VyclR5cGUuZ2V0TWluRXhjbHVzaXZlRmFjZXQoKTsKLSAgICBYU0RNaW5JbmNsdXNpdmVGYWNldCB4c2RNaW5JbmNsdXNpdmVGYWNldCA9IGN1cnJUeXBlLmdldE1pbkluY2x1c2l2ZUZhY2V0KCk7Ci0gICAgaWYgKHhzZE1pbkV4Y2x1c2l2ZUZhY2V0ICE9IG51bGwpIHsKLSAgICAgIG1pbiA9IHhzZE1pbkV4Y2x1c2l2ZUZhY2V0LmdldFZhbHVlKCk7Ci0gICAgICBtaW5FeGNsdXNpdmUgPSB0cnVlOwotICAgIH0KLSAgICBlbHNlIGlmICh4c2RNaW5JbmNsdXNpdmVGYWNldCAhPSBudWxsKSB7Ci0gICAgICBtaW4gPSB4c2RNaW5JbmNsdXNpdmVGYWNldC5nZXRWYWx1ZSgpOwotICAgICAgbWluRXhjbHVzaXZlID0gZmFsc2U7Ci0gICAgfQotICB9Ci0gIC8vIG1heCBpbi9leGNsdXNpdmUKLSAgaWYgKG1heCA9PSBudWxsKSB7Ci0gICAgWFNETWF4RXhjbHVzaXZlRmFjZXQgeHNkTWF4RXhjbHVzaXZlRmFjZXQgPSBjdXJyVHlwZS5nZXRNYXhFeGNsdXNpdmVGYWNldCgpOwotICAgIFhTRE1heEluY2x1c2l2ZUZhY2V0IHhzZE1heEluY2x1c2l2ZUZhY2V0ID0gY3VyclR5cGUuZ2V0TWF4SW5jbHVzaXZlRmFjZXQoKTsKLSAgICBpZiAoeHNkTWF4RXhjbHVzaXZlRmFjZXQgIT0gbnVsbCkgewotICAgICAgbWF4ID0geHNkTWF4RXhjbHVzaXZlRmFjZXQuZ2V0VmFsdWUoKTsKLSAgICAgIG1heEV4Y2x1c2l2ZSA9IHRydWU7Ci0gICAgfQotICAgIGVsc2UgaWYgKHhzZE1heEluY2x1c2l2ZUZhY2V0ICE9IG51bGwpIHsKLSAgICAgIG1heCA9IHhzZE1heEluY2x1c2l2ZUZhY2V0LmdldFZhbHVlKCk7Ci0gICAgICBtYXhFeGNsdXNpdmUgPSBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgLy8gdG90YWxEaWdpdHMKLSAgaWYgKHRvdGFsRGlnaXRzIDwgMCkgewotICAgIFhTRFRvdGFsRGlnaXRzRmFjZXQgeHNkVG90YWxEaWdpdHNGYWNldCA9IGN1cnJUeXBlLmdldFRvdGFsRGlnaXRzRmFjZXQoKTsKLSAgICBpZiAoeHNkVG90YWxEaWdpdHNGYWNldCAhPSBudWxsKQotICAgICAgdG90YWxEaWdpdHMgPSB4c2RUb3RhbERpZ2l0c0ZhY2V0LmdldFZhbHVlKCk7Ci0gIH0KLSAgLy8gZnJhY3Rpb25EaWdpdHMKLSAgaWYgKGZyYWN0aW9uRGlnaXRzIDwgMCkgewotICAgIFhTREZyYWN0aW9uRGlnaXRzRmFjZXQgeHNkRnJhY3Rpb25EaWdpdHNGYWNldCA9IGN1cnJUeXBlLmdldEZyYWN0aW9uRGlnaXRzRmFjZXQoKTsKLSAgICBpZiAoeHNkRnJhY3Rpb25EaWdpdHNGYWNldCAhPSBudWxsKQotICAgICAgZnJhY3Rpb25EaWdpdHMgPSB4c2RGcmFjdGlvbkRpZ2l0c0ZhY2V0LmdldFZhbHVlKCk7Ci0gIH0KLSAgLy8gd2FsayB0byBiYXNlIHR5cGUKLSAgY3VyclR5cGUgPSBjdXJyVHlwZS5nZXRCYXNlVHlwZURlZmluaXRpb24oKTsKLX0KLSU+Ci0KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9mcmFnbWVudC9YU0REZWZhdWx0SW5mb0ZyYWdtZW50SlNQLmpzcCIgZmx1c2g9InRydWUiLz4KLQotPHRhYmxlPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yMD4mbmJzcDs8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgPHRyPgotICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQkFTRV9UWVBFIiklPgotICAgIDwvdGg+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgPCU9WFNEVHlwZURlZmluaXRpb25VdGlsLnJlc29sdmVUb1hTREJ1aWx0SW5UeXBlRGVmaW5pdGlvbihzaW1wbGVUeXBlKS5nZXROYW1lKCklPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotCi08JQotU3RyaW5nIG1pbkxlbmd0aFN0cmluZyA9IChtaW5MZW5ndGggPCAwKSA/IHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VOQk9VTkRFRCIpIDogU3RyaW5nLnZhbHVlT2YobWluTGVuZ3RoKTsKLVN0cmluZyBtYXhMZW5ndGhTdHJpbmcgPSAobWF4TGVuZ3RoIDwgMCkgPyB3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VTkJPVU5ERUQiKSA6IFN0cmluZy52YWx1ZU9mKG1heExlbmd0aCk7Ci1TdHJpbmdbXSBsZW5ndGhWYWx1ZXMgPSB7bWluTGVuZ3RoU3RyaW5nLCBtYXhMZW5ndGhTdHJpbmd9OwotaWYgKG1pbkxlbmd0aCA+PSAwIHx8IG1heExlbmd0aCA+PSAwKSB7Ci0lPgotICA8dGFibGU+Ci0gICAgPHRyPgotICAgICAgPHRkIGhlaWdodD0yMD4mbmJzcDs8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICA8dHI+Ci0gICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTEVOR1RIIiklPgotICAgICAgPC90aD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgIDwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xFTkdUSF9WQUxVRSIsIGxlbmd0aFZhbHVlcyklPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPCUKLX0KLSU+Ci0KLTwlCi1pZiAocGF0dGVyblZlY3Rvci5zaXplKCkgPiAwKSB7Ci0gIFN0cmluZyBwYXR0ZXJuQ29udGFpbmVySUQgPSAiOjpwYXR0ZXJuIjsKLSAgU3RyaW5nIHhwYXR0ZXJuQ29udGFpbmVySUQgPSAieDo6cGF0dGVybiI7Ci0lPgotICA8dGFibGU+Ci0gICAgPHRyPgotICAgICAgPHRkIGhlaWdodD0yMD4mbmJzcDs8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgPHRyPgotICAgICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9cGF0dGVybkNvbnRhaW5lcklEJT4nLCc8JT14cGF0dGVybkNvbnRhaW5lcklEJT4nKSI+PGltZyBuYW1lPSI8JT14cGF0dGVybkNvbnRhaW5lcklEJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RvcGVuZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfT1BFTkVEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgICA8L3RkPgotICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgICA8c3Ryb25nPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1BBVFRFUk4iKSU+PC9zdHJvbmc+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0gIDxzcGFuIGlkPSI8JT1wYXR0ZXJuQ29udGFpbmVySUQlPiI+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICA8dHI+Ci0gICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUEFUVEVSTiIpJT4KLSAgICAgIDwvdGg+Ci0gICAgPC90cj4KLSAgICA8JQotICAgIGZvciAoaW50IGsgPSAwOyBrIDwgcGF0dGVyblZlY3Rvci5zaXplKCk7IGsrKykgewotICAgICU+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgPCU9KFN0cmluZylwYXR0ZXJuVmVjdG9yLmdldChrKSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwlCi0gICAgfQotICAgICU+Ci0gIDwvdGFibGU+Ci0gIDwvc3Bhbj4KLTwlCi19Ci0lPgotCi08JQotaWYgKHdoaXRlU3BhY2UgIT0gbnVsbCkgewotJT4KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAgIDx0ZCBoZWlnaHQ9MjA+Jm5ic3A7PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgPHRyPgotICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgIDwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1dISVRFU1BBQ0UiKSU+Ci0gICAgICA8L3RoPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgPCU9d2hpdGVTcGFjZSU+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08JQotfQotJT4KLQotPCUKLVN0cmluZyBsb3dlckJvdW5kOwotaWYgKG1pbkV4Y2x1c2l2ZSkKLSAgbG93ZXJCb3VuZCA9IHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX01JTl9FWENMVVNJVkUiLCAobWluID09IG51bGwpID8gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVU5CT1VOREVEIikgOiBtaW4udG9TdHJpbmcoKSk7Ci1lbHNlCi0gIGxvd2VyQm91bmQgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9NSU5fSU5DTFVTSVZFIiwgKG1pbiA9PSBudWxsKSA/IHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VOQk9VTkRFRCIpIDogbWluLnRvU3RyaW5nKCkpOwotU3RyaW5nIHVwcGVyQm91bmQ7Ci1pZiAobWF4RXhjbHVzaXZlKQotICB1cHBlckJvdW5kID0gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTUFYX0VYQ0xVU0lWRSIsIChtYXggPT0gbnVsbCkgPyB3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VTkJPVU5ERUQiKSA6IG1heC50b1N0cmluZygpKTsKLWVsc2UKLSAgdXBwZXJCb3VuZCA9IHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX01BWF9JTkNMVVNJVkUiLCAobWF4ID09IG51bGwpID8gd3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVU5CT1VOREVEIikgOiBtYXgudG9TdHJpbmcoKSk7Ci1pZiAobWluICE9IG51bGwgfHwgbWF4ICE9IG51bGwpIHsKLSU+Ci0gIDx0YWJsZT4KLSAgICA8dHI+Ci0gICAgICA8dGQgaGVpZ2h0PTIwPiZuYnNwOzwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgIDx0cj4KLSAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICA8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9SQU5HRV9PRl9WQUxVRVMiKSU+Ci0gICAgICA8L3RoPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgPCU9bG93ZXJCb3VuZCArIHVwcGVyQm91bmQlPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPCUKLX0KLSU+Ci0KLTwlCi1pZiAodG90YWxEaWdpdHMgPj0gMCkgewotJT4KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAgIDx0ZCBoZWlnaHQ9MjA+Jm5ic3A7PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgPHRyPgotICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgIDwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1RPVEFMX0RJR0lUUyIpJT4KLSAgICAgIDwvdGg+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICA8JT10b3RhbERpZ2l0cyU+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08JQotfQotJT4KLQotPCUKLWlmIChmcmFjdGlvbkRpZ2l0cyA+PSAwKSB7Ci0lPgotICA8dGFibGU+Ci0gICAgPHRyPgotICAgICAgPHRkIGhlaWdodD0yMD4mbmJzcDs8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0gIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICA8dHI+Ci0gICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfRlJBQ1RJT05fRElHSVRTIiklPgotICAgICAgPC90aD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgIDwlPWZyYWN0aW9uRGlnaXRzJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwlCi19Ci0lPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUF0b21pY1JGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljUkZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZkZDRiNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljUkZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQudXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS54c2QuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgb3Blck5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KW9wZXJOb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNERnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1YU0RTaW1wbGVUeXBlRGVmaW5pdGlvbiBzaW1wbGVUeXBlID0gKFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uKWZyYWcuZ2V0WFNEVHlwZURlZmluaXRpb24oKTsKLVhTRFR5cGVEZWZpbml0aW9uIHhzZEJ1aWx0SW5UeXBlID0gWFNEVHlwZURlZmluaXRpb25VdGlsLnJlc29sdmVUb1hTREJ1aWx0SW5UeXBlRGVmaW5pdGlvbihzaW1wbGVUeXBlKTsKLVN0cmluZ1tdIGxhYmVsQXJncyA9IHtmcmFnLmdldE5hbWUoKSwgKHhzZEJ1aWx0SW5UeXBlICE9IG51bGwgPyB4c2RCdWlsdEluVHlwZS5nZXROYW1lKCkgOiBzaW1wbGVUeXBlLmdldE5hbWUoKSl9OwotU3RyaW5nW10gcGFyYW1zID0gZnJhZy5nZXRQYXJhbWV0ZXJWYWx1ZXMoZnJhZy5nZXRJRCgpKTsKLSU+Ci08dGFibGUgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJmaXhmcmFndGFibGUiIDogImlubmVyZml4ZnJhZ3RhYmxlIiklPiI+Ci0gIDx0cj4KLSAgICA8dGggaWQ9IjwlPWZyYWcuZ2V0SUQoKSU+IiBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9BVE9NSUNfTkFNRV9UWVBFIiwgbGFiZWxBcmdzKSU+Ci0gICAgPC90aD4KLSAgICA8dGQgaGVhZGVycz0iPCU9ZnJhZy5nZXRJRCgpJT4iIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB3aWR0aD0iMTAwJSIgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8JT0oKHBhcmFtcyAhPSBudWxsICYmIHBhcmFtcy5sZW5ndGggPiAwKSA/IEhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXMocGFyYW1zWzBdKSA6IHdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05VTEwiKSklPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci0gIDwlCi0gIGlmIChwYXJhbXMgIT0gbnVsbCkgewotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7Ci0gICAgJT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD48L3RkPgotICAgICAgICA8dGQgaGVhZGVycz0iPCU9ZnJhZy5nZXRJRCgpJT4iIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB3aWR0aD0iMTAwJSIgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICAgICAgPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllcyhwYXJhbXNbaV0pJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPCUKLSAgICB9Ci0gIH0KLSAgJT4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljUmFuZ2VXRnJhZ21lbnRKU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUF0b21pY1JhbmdlV0ZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I2OGQ3Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlQXRvbWljUmFuZ2VXRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UueHNkLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJlbGVtZW50SUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIHNlbGVjdGVkTm9kZSA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpLmdldE5vZGUoSW50ZWdlci5wYXJzZUludChub2RlSUQudG9TdHJpbmcoKSkpOwotV1NETE9wZXJhdGlvbkVsZW1lbnQgb3BlckVsZW1lbnQgPSAoV1NETE9wZXJhdGlvbkVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci1JWFNERnJhZ21lbnQgZnJhZyA9IG9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1JWFNERWxlbWVudEZyYWdtZW50IGVsZW1lbnRGcmFnbWVudCA9IChJWFNERWxlbWVudEZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChlbGVtZW50SUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1YU0RTaW1wbGVUeXBlRGVmaW5pdGlvbiBzaW1wbGVUeXBlID0gKFhTRFNpbXBsZVR5cGVEZWZpbml0aW9uKWZyYWcuZ2V0WFNEVHlwZURlZmluaXRpb24oKTsKLVhTRFR5cGVEZWZpbml0aW9uIHhzZEJ1aWx0SW5UeXBlID0gWFNEVHlwZURlZmluaXRpb25VdGlsLnJlc29sdmVUb1hTREJ1aWx0SW5UeXBlRGVmaW5pdGlvbihzaW1wbGVUeXBlKTsKLVN0cmluZyB0YWJsZUNvbnRhaW5lcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotU3RyaW5nIHR3aXN0SW1hZ2VOYW1lID0gKG5ldyBTdHJpbmdCdWZmZXIoIngiKSkuYXBwZW5kKHRhYmxlQ29udGFpbmVySUQpLnRvU3RyaW5nKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIGFkZFNpbXBsZUF0b21pY1Jvd3ModGFibGVDb250YWluZXJJRCwgaWQsIG5hbWUsIHZhbHVlLCBtYXhPY2N1cnMpIHsKLSAgICBpZiAoY2hlY2tNYXhPY2N1cnNSZWFjaGVkKHRhYmxlQ29udGFpbmVySUQsIG1heE9jY3VycykpCi0gICAgICByZXR1cm47Ci0gICAgdHdpc3RPcGVuKHRhYmxlQ29udGFpbmVySUQpOwotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySUQpOwotICAgIHZhciB0YWJsZUJvZHkgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5pdGVtKDApOwotICAgIHZhciBuZXdSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHZhciBjb2x1bW4wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0KLSAgICB2YXIgcm93Q2hlY2tib3ggPSBjcmVhdGVSb3dDaGVja2JveCgpOwotICAgIGNvbHVtbjAuYXBwZW5kQ2hpbGQocm93Q2hlY2tib3gpOwotCi0gICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICBjb2x1bW4xLmFwcGVuZENoaWxkKGlucHV0KTsKLSAgICBpbnB1dC50eXBlID0gInRleHQiOwotICAgIGlucHV0LmlkID0gaWQ7Ci0gICAgaW5wdXQubmFtZSA9IG5hbWU7Ci0gICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUubGVuZ3RoID4gMCkKLSAgICAgIGlucHV0LnZhbHVlID0gdmFsdWU7Ci0gICAgaW5wdXQuY2xhc3NOYW1lID0gInRhYmxldGV4dGVudGVyIjsKLQotICAgIGNvbHVtbjAuY2xhc3NOYW1lID0gImNoZWNrYm94Y2VsbHMiOwotICAgIGNvbHVtbjEuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4wKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMSk7Ci0gICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gIH0KLTwvc2NyaXB0PgotPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgPHRyPgotICAgIDx0ZCBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCc8JT10d2lzdEltYWdlTmFtZSU+JykiPjxpbWcgbmFtZT0iPCU9dHdpc3RJbWFnZU5hbWUlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdG9wZW5lZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9PUEVORUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8bGFiZWwgZm9yPSI8JT1mcmFnLmdldElEKCklPiI+PGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+PC9sYWJlbD4KLSAgICA8L3RkPgotICAgIDwlIAotICAgICAgaWYoZWxlbWVudEZyYWdtZW50ICE9IG51bGwgJiYgZWxlbWVudEZyYWdtZW50LmlzTmlsbGFibGUoKSl7Ci0gICAgICAgIGlmKGVsZW1lbnRGcmFnbWVudC5pc05pbCgpKXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgY2hlY2tlZD48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX05JTCIpJT48L3RkPiAKLSAgICAgICAgICA8JQotICAgICAgICB9IAotICAgICAgICBlbHNlewotICAgICAgICAgICU+ICAKLSAgICAgICAgICA8dGQgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8JT0oKElYU0RFbGVtZW50RnJhZ21lbnQpZWxlbWVudEZyYWdtZW50KS5nZXROaWxJRCgpJT4iIHZhbHVlPSI8JT1JWFNERWxlbWVudEZyYWdtZW50Lk5JTF9WQUxVRSU+IiA+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgfQotICAgICU+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDwlPSh4c2RCdWlsdEluVHlwZSAhPSBudWxsID8geHNkQnVpbHRJblR5cGUuZ2V0TmFtZSgpIDogc2ltcGxlVHlwZS5nZXROYW1lKCkpJT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmFkZFNpbXBsZUF0b21pY1Jvd3MoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsICc8JT1mcmFnLmdldElEKCklPicsICc8JT1mcmFnLmdldElEKCklPicsIG51bGwsIDwlPXhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKSU+KSI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19BREQiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Y2hlY2tNaW5PY2N1cnNBbmRSZW1vdmVTZWxlY3RlZFJvd3MoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsIDwlPXhzZENvbmZpZy5nZXRNaW5PY2N1cnMoKSU+KSI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19SRU1PVkUiKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkPgotICAgICAgPCUKLSAgICAgIGlmICghZnJhZy52YWxpZGF0ZVBhcmFtZXRlclZhbHVlcyhmcmFnLmdldElEKCkpKSB7Ci0gICAgICAlPgotICAgICAgPCU9SFRNTFV0aWxzLnJlZEFzdGVyaXNrKCklPgotICAgICAgPCUKLSAgICAgIH0KLSAgICAgICU+Ci0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHNwYW4gaWQ9IjwlPXRhYmxlQ29udGFpbmVySUQlPiI+Ci08dGFibGUgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJyYW5nZWZyYWd0YWJsZSIgOiAiaW5uZXJyYW5nZWZyYWd0YWJsZSIpJT4iPgotICA8dHI+Ci0gICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPXRhYmxlQ29udGFpbmVySUQlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVkFMVUVTIiklPjwvdGg+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPC9zcGFuPgotPCUKLVN0cmluZ1tdIHZhbHVlcyA9IGZyYWcuZ2V0UGFyYW1ldGVyVmFsdWVzKGZyYWcuZ2V0SUQoKSk7Ci1pbnQgaSA9IDA7Ci1pZiAodmFsdWVzICE9IG51bGwpIHsKLSAgZm9yICggOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7Ci0lPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgYWRkU2ltcGxlQXRvbWljUm93cygnPCU9dGFibGVDb250YWluZXJJRCU+JywgJzwlPWZyYWcuZ2V0SUQoKSU+JywgJzwlPWZyYWcuZ2V0SUQoKSU+JywgJzwlPXZhbHVlc1tpXSU+JywgJzwlPXhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKSU+Jyk7Ci0gICAgPC9zY3JpcHQ+Ci08JQotICB9Ci19Ci1mb3IgKCA7IGkgPCB4c2RDb25maWcuZ2V0TWluT2NjdXJzKCk7IGkrKykgewotJT4KLSAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgYWRkU2ltcGxlQXRvbWljUm93cygnPCU9dGFibGVDb250YWluZXJJRCU+JywgJzwlPWZyYWcuZ2V0SUQoKSU+JywgJzwlPWZyYWcuZ2V0SUQoKSU+JywgbnVsbCwgJzwlPXhzZENvbmZpZy5nZXRNYXhPY2N1cnMoKSU+Jyk7Ci0gIDwvc2NyaXB0PgotPCUKLX0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlTGlzdEZpeFdGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlTGlzdEZpeFdGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YzIzMDAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUxpc3RGaXhXRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RTaW1wbGVMaXN0RnJhZ21lbnQgZnJhZyA9IChJWFNEU2ltcGxlTGlzdEZyYWdtZW50KW9wZXJFbGVtZW50LmdldEZyYWdtZW50QnlJRChmcmFnSUQudG9TdHJpbmcoKSk7Ci1YU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbiB4c2RDb25maWcgPSBmcmFnLmdldFhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uKCk7Ci1JWFNERnJhZ21lbnRbXSBjaGlsZEZyYWdzID0gZnJhZy5nZXRBbGxGcmFnbWVudHMoKTsKLSU+Ci08dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJmaXhmcmFndGFibGUiIDogImlubmVyZml4ZnJhZ3RhYmxlIiklPiI+Ci08JQotZm9yIChpbnQgaSA9IDA7IGkgPCB4c2RDb25maWcuZ2V0TWF4T2NjdXJzKCk7IGkrKykgewotICBJWFNERnJhZ21lbnQgY2hpbGRGcmFnOwotICBTdHJpbmcgY2hpbGRGcmFnSUQ7Ci0gIGlmIChpIDwgY2hpbGRGcmFncy5sZW5ndGgpIHsKLSAgICBjaGlsZEZyYWcgPSBjaGlsZEZyYWdzW2ldOwotICAgIGNoaWxkRnJhZ0lEID0gY2hpbGRGcmFnLmdldElEKCk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgY2hpbGRGcmFnSUQgPSBmcmFnLmNyZWF0ZUxpc3RJbnN0YW5jZSgpOwotICAgIGNoaWxkRnJhZyA9IGZyYWcuZ2V0RnJhZ21lbnQoY2hpbGRGcmFnSUQpOwotICB9Ci0gIGZyYWdJRC5kZWxldGUoMCwgZnJhZ0lELmxlbmd0aCgpKTsKLSAgZnJhZ0lELmFwcGVuZChjaGlsZEZyYWdJRCk7Ci0lPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9ZnJhZy5nZXRJRCgpJT4iIHZhbHVlPSI8JT1jaGlsZEZyYWdJRCU+Ij4KLSAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSI8JT1jaGlsZEZyYWcuZ2V0V3JpdGVGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwlCi19Ci0lPgotPC90YWJsZT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVMaXN0UkZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVMaXN0UkZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyODYxOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlTGlzdFJGcmFnbWVudEpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmZyYWdtZW50LiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIG9wZXJOb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClvcGVyTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotSVhTRFNpbXBsZUxpc3RGcmFnbWVudCBmcmFnID0gKElYU0RTaW1wbGVMaXN0RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLUlYU0RGcmFnbWVudFtdIGNoaWxkRnJhZ3MgPSBmcmFnLmdldEFsbEZyYWdtZW50cygpOwotJT4KLTx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gImZpeGZyYWd0YWJsZSIgOiAiaW5uZXJmaXhmcmFndGFibGUiKSU+Ij4KLTwlCi1mb3IgKGludCBpID0gMDsgaSA8IGNoaWxkRnJhZ3MubGVuZ3RoOyBpKyspIHsKLSAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICBmcmFnSUQuYXBwZW5kKGNoaWxkRnJhZ3NbaV0uZ2V0SUQoKSk7Ci0lPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWNoaWxkRnJhZ3NbaV0uZ2V0UmVhZEZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICA8L3RkPgotICA8L3RyPgotPCUKLX0KLSU+Ci08L3RhYmxlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZUxpc3RSYW5nZVdGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlTGlzdFJhbmdlV0ZyYWdtZW50SlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdlYmJhMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlTGlzdFJhbmdlV0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iZnJhZ0lEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0ibm9kZUlEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxqc3A6dXNlQmVhbiBpZD0iZWxlbWVudElEIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPCUKLVdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKS5nZXROb2RlKEludGVnZXIucGFyc2VJbnQobm9kZUlELnRvU3RyaW5nKCkpKTsKLVdTRExPcGVyYXRpb25FbGVtZW50IG9wZXJFbGVtZW50ID0gKFdTRExPcGVyYXRpb25FbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotSVhTRFNpbXBsZUxpc3RGcmFnbWVudCBmcmFnID0gKElYU0RTaW1wbGVMaXN0RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLUlYU0RFbGVtZW50RnJhZ21lbnQgZWxlbWVudEZyYWdtZW50ID0gKElYU0RFbGVtZW50RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGVsZW1lbnRJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLVN0cmluZyB0YWJsZUNvbnRhaW5lcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotU3RyaW5nIHR3aXN0SW1hZ2VOYW1lID0gKG5ldyBTdHJpbmdCdWZmZXIoIngiKSkuYXBwZW5kKHRhYmxlQ29udGFpbmVySUQpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgbmFtZUFuY2hvcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuTkFNRV9BTkNIT1JfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotJT4KLTxhIG5hbWU9IjwlPW5hbWVBbmNob3JJRCU+Ii8+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlblhTREluZm9EaWFsb2coJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChPcGVuWFNESW5mb0RpYWxvZ0FjdGlvbi5nZXRBY3Rpb25MaW5rKHNlc3Npb24uZ2V0SWQoKSxzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksZnJhZ0lELnRvU3RyaW5nKCkpKSklPicpIj48JT1mcmFnLmdldE5hbWUoKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPCUgCi0gICAgICBpZihlbGVtZW50RnJhZ21lbnQgIT0gbnVsbCAmJiBlbGVtZW50RnJhZ21lbnQuaXNOaWxsYWJsZSgpKXsKLSAgICAgICAgaWYoZWxlbWVudEZyYWdtZW50LmlzTmlsKCkpewotICAgICAgICAgICU+ICAKLSAgICAgICAgICA8dGQgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8JT0oKElYU0RFbGVtZW50RnJhZ21lbnQpZWxlbWVudEZyYWdtZW50KS5nZXROaWxJRCgpJT4iIHZhbHVlPSI8JT1JWFNERWxlbWVudEZyYWdtZW50Lk5JTF9WQUxVRSU+IiBjaGVja2VkPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0gCi0gICAgICAgIGVsc2V7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iID48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX05JTCIpJT48L3RkPiAKLSAgICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgJT4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpjcmVhdGVJbnN0YW5jZSgnPCU9dGFibGVDb250YWluZXJJRCU+JywgPCU9eHNkQ29uZmlnLmdldE1heE9jY3VycygpJT4sICc8JT1mcmFnSUQlPicsICc8JT1uYW1lQW5jaG9ySUQlPicpIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0FERCIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpjaGVja01pbk9jY3Vyc0FuZFJlbW92ZVNlbGVjdGVkUm93cygnPCU9dGFibGVDb250YWluZXJJRCU+JywgPCU9eHNkQ29uZmlnLmdldE1pbk9jY3VycygpJT4pIj48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX1JFTU9WRSIpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHNwYW4gaWQ9IjwlPXRhYmxlQ29udGFpbmVySUQlPiI+Ci08dGFibGUgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJyYW5nZWZyYWd0YWJsZSIgOiAiaW5uZXJyYW5nZWZyYWd0YWJsZSIpJT4iPgotICA8dHI+Ci0gICAgPHRoIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uQ2xpY2s9ImhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPXRhYmxlQ29udGFpbmVySUQlPicsdGhpcykiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfQUxMX0NIRUNLX0JPWCIpJT4iPjwvdGg+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTElTVF9JVEVNUyIpJT48L3RoPgotICA8L3RyPgotICA8JQotICBJWFNERnJhZ21lbnRbXSBjaGlsZEZyYWdzID0gZnJhZy5nZXRBbGxGcmFnbWVudHMoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZEZyYWdzLmxlbmd0aCB8fCBpIDwgeHNkQ29uZmlnLmdldE1pbk9jY3VycygpOyBpKyspIHsKLSAgICBJWFNERnJhZ21lbnQgY2hpbGRGcmFnOwotICAgIFN0cmluZyBjaGlsZEZyYWdJRDsKLSAgICBpZiAoaSA8IGNoaWxkRnJhZ3MubGVuZ3RoKSB7Ci0gICAgICBjaGlsZEZyYWcgPSBjaGlsZEZyYWdzW2ldOwotICAgICAgY2hpbGRGcmFnSUQgPSBjaGlsZEZyYWcuZ2V0SUQoKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBjaGlsZEZyYWdJRCA9IGZyYWcuY3JlYXRlTGlzdEluc3RhbmNlKCk7Ci0gICAgICBjaGlsZEZyYWcgPSBmcmFnLmdldEZyYWdtZW50KGNoaWxkRnJhZ0lEKTsKLSAgICB9Ci0gICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgIGZyYWdJRC5hcHBlbmQoY2hpbGRGcmFnSUQpOwotICAlPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD4KLSAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlUm93Q2hlY2tib3hDbGljaygpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1JPV19DSEVDS19CT1giKSU+Ij4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1mcmFnLmdldElEKCklPiIgdmFsdWU9IjwlPWNoaWxkRnJhZ0lEJT4iPgotICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9IjwlPWNoaWxkRnJhZy5nZXRXcml0ZUZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICA8L3RkPgotICA8L3RyPgotICA8JQotICB9Ci0gICU+Ci08L3RhYmxlPgotPC9zcGFuPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZVVuaW9uRml4V0ZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVVbmlvbkZpeFdGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZDgzNDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZVVuaW9uRml4V0ZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS54c2QuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImVsZW1lbnRJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RTaW1wbGVVbmlvbkZyYWdtZW50IGZyYWcgPSAoSVhTRFNpbXBsZVVuaW9uRnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLUlYU0RFbGVtZW50RnJhZ21lbnQgZWxlbWVudEZyYWdtZW50ID0gKElYU0RFbGVtZW50RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGVsZW1lbnRJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLVN0cmluZyB0YWJsZUNvbnRhaW5lcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotU3RyaW5nIHR3aXN0SW1hZ2VOYW1lID0gKG5ldyBTdHJpbmdCdWZmZXIoIngiKSkuYXBwZW5kKHRhYmxlQ29udGFpbmVySUQpLnRvU3RyaW5nKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIGNoYW5nZVVuaW9uTWVtYmVyVHlwZShzZWxlY3QpIHsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICB2YXIgdGFibGVDb250YWluZXJJRCA9ICc8JT1GcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCU+JzsKLSAgICAgIHRhYmxlQ29udGFpbmVySUQgKz0gc2VsZWN0Lm9wdGlvbnMoaSkudmFsdWU7Ci0gICAgICBzaG93VGFibGUodGFibGVDb250YWluZXJJRCwgc2VsZWN0Lm9wdGlvbnMoaSkuc2VsZWN0ZWQpOwotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIHNob3dUYWJsZSh0YWJsZUNvbnRhaW5lcklELCBzaG93KSB7Ci0gICAgdmFyIHRhYmxlQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVDb250YWluZXJJRCk7Ci0gICAgaWYgKHNob3cpCi0gICAgICB0YWJsZUNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0gICAgZWxzZQotICAgICAgdGFibGVDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotPC9zY3JpcHQ+Ci08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICA8dHI+Ci0gICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPXRhYmxlQ29udGFpbmVySUQlPicsJzwlPXR3aXN0SW1hZ2VOYW1lJT4nKSI+PGltZyBuYW1lPSI8JT10d2lzdEltYWdlTmFtZSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0b3BlbmVkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX09QRU5FRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcD4KLSAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlblhTREluZm9EaWFsb2coJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChPcGVuWFNESW5mb0RpYWxvZ0FjdGlvbi5nZXRBY3Rpb25MaW5rKHNlc3Npb24uZ2V0SWQoKSxzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksZnJhZ0lELnRvU3RyaW5nKCkpKSklPicpIj48JT1mcmFnLmdldE5hbWUoKSU+PC9hPgotICAgIDwvdGQ+Ci0gICAgPCUgCi0gICAgICBpZihlbGVtZW50RnJhZ21lbnQgIT0gbnVsbCAmJiBlbGVtZW50RnJhZ21lbnQuaXNOaWxsYWJsZSgpKXsKLSAgICAgICAgaWYoZWxlbWVudEZyYWdtZW50LmlzTmlsKCkpewotICAgICAgICAgICU+ICAKLSAgICAgICAgICA8dGQgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8JT0oKElYU0RFbGVtZW50RnJhZ21lbnQpZWxlbWVudEZyYWdtZW50KS5nZXROaWxJRCgpJT4iIHZhbHVlPSI8JT1JWFNERWxlbWVudEZyYWdtZW50Lk5JTF9WQUxVRSU+IiBjaGVja2VkPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0gCi0gICAgICAgIGVsc2V7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iID48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX05JTCIpJT48L3RkPiAKLSAgICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgJT4KLSAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHNwYW4gaWQ9IjwlPXRhYmxlQ29udGFpbmVySUQlPiI+Ci08dGFibGUgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSI8JT0oeHNkQ29uZmlnLmdldElzV1NETFBhcnQoKSA/ICJyYW5nZWZyYWd0YWJsZSIgOiAiaW5uZXJyYW5nZWZyYWd0YWJsZSIpJT4iPgotICA8dHI+Ci0gICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciIgbm93cmFwPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VOSU9OX1RZUEUiKSU+PC90aD4KLSAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIiB3aWR0aD0iMTAwJSIgbm93cmFwPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VOSU9OX01FTUJFUlMiKSU+PC90aD4KLSAgPC90cj4KLSAgPCUKLSAgWFNEU2ltcGxlVHlwZURlZmluaXRpb25bXSBtZW1iZXJUeXBlcyA9IGZyYWcuZ2V0TWVtYmVyVHlwZURlZmluaXRpb25zKCk7Ci0gIElYU0RGcmFnbWVudFtdIG1lbWJlckZyYWdzID0gZnJhZy5nZXRBbGxGcmFnbWVudHMoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCB4c2RDb25maWcuZ2V0TWF4T2NjdXJzKCk7IGkrKykgewotICAgIGludCB0eXBlU2VsZWN0aW9uSW5kZXggPSAwOwotICAgIFN0cmluZ1tdIG5ld01lbWJlckZyYWdJRHMgPSBuZXcgU3RyaW5nW21lbWJlclR5cGVzLmxlbmd0aF07Ci0gICAgSVhTREZyYWdtZW50W10gbmV3TWVtYmVyRnJhZ3MgPSBuZXcgSVhTREZyYWdtZW50W21lbWJlclR5cGVzLmxlbmd0aF07Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBtZW1iZXJUeXBlcy5sZW5ndGg7IGorKykgewotICAgICAgaWYgKGkgPCBtZW1iZXJGcmFncy5sZW5ndGggJiYgbWVtYmVyRnJhZ3NbaV0uZ2V0WFNEVHlwZURlZmluaXRpb24oKS5nZXRRTmFtZSgpLmVxdWFscyhtZW1iZXJUeXBlc1tqXS5nZXRRTmFtZSgpKSkgewotICAgICAgICBuZXdNZW1iZXJGcmFnSURzW2pdID0gbWVtYmVyRnJhZ3NbaV0uZ2V0SUQoKTsKLSAgICAgICAgbmV3TWVtYmVyRnJhZ3Nbal0gPSBtZW1iZXJGcmFnc1tpXTsKLSAgICAgICAgdHlwZVNlbGVjdGlvbkluZGV4ID0gajsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBuZXdNZW1iZXJGcmFnSURzW2pdID0gZnJhZy5jcmVhdGVVbmlvbkluc3RhbmNlKGopOwotICAgICAgICBuZXdNZW1iZXJGcmFnc1tqXSA9IGZyYWcuZ2V0RnJhZ21lbnQobmV3TWVtYmVyRnJhZ0lEc1tqXSk7Ci0gICAgICB9Ci0gICAgfQotICAgICU+Ci0gICAgPHRyPgotICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgPHNlbGVjdCBpZD0iPCU9ZnJhZy5nZXRJRCgpJT4iIG5hbWU9IjwlPWZyYWcuZ2V0SUQoKSU+IiBvbkNoYW5nZT0iamF2YXNjcmlwdDpjaGFuZ2VVbmlvbk1lbWJlclR5cGUodGhpcykiIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9VTklPTl9UWVBFIiklPiI+Ci0gICAgICAgICAgPCUKLSAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IG1lbWJlclR5cGVzLmxlbmd0aDsgaysrKSB7Ci0gICAgICAgICAgICBpZiAoayA9PSB0eXBlU2VsZWN0aW9uSW5kZXgpIHsKLSAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9bmV3TWVtYmVyRnJhZ0lEc1trXSU+IiBzZWxlY3RlZD48JT1tZW1iZXJUeXBlc1trXS5nZXRRTmFtZSgpJT4KLSAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT1uZXdNZW1iZXJGcmFnSURzW2tdJT4iPjwlPW1lbWJlclR5cGVzW2tdLmdldFFOYW1lKCklPgotICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICAlPgotICAgICAgICA8L3NlbGVjdD4KLSAgICAgIDwvdGQ+Ci0gICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICA8JQotICAgICAgICBmb3IgKGludCBsID0gMDsgbCA8IG1lbWJlclR5cGVzLmxlbmd0aDsgbCsrKSB7Ci0gICAgICAgICAgZnJhZ0lELmRlbGV0ZSgwLCBmcmFnSUQubGVuZ3RoKCkpOwotICAgICAgICAgIGZyYWdJRC5hcHBlbmQobmV3TWVtYmVyRnJhZ0lEc1tsXSk7Ci0gICAgICAgICAgU3RyaW5nIG1lbWJlclRhYmxlQ29udGFpbmVySUQgPSAobmV3IFN0cmluZ0J1ZmZlcihGcmFnbWVudENvbnN0YW50cy5UQUJMRV9JRCkpLmFwcGVuZChuZXdNZW1iZXJGcmFnc1tsXS5nZXRJRCgpKS50b1N0cmluZygpOwotICAgICAgICAlPgotICAgICAgICA8c3BhbiBpZD0iPCU9bWVtYmVyVGFibGVDb250YWluZXJJRCU+Ij4KLSAgICAgICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9bmV3TWVtYmVyRnJhZ3NbbF0uZ2V0V3JpdGVGcmFnbWVudCgpJT4iIGZsdXNoPSJ0cnVlIi8+Ci0gICAgICAgIDwvc3Bhbj4KLSAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgICAgc2hvd1RhYmxlKCc8JT1tZW1iZXJUYWJsZUNvbnRhaW5lcklEJT4nLCA8JT0obCA9PSB0eXBlU2VsZWN0aW9uSW5kZXgpJT4pOwotICAgICAgICA8L3NjcmlwdD4KLSAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgICAlPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8JQotICB9Ci0gICU+Ci08L3RhYmxlPgotPC9zcGFuPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZVVuaW9uUkZyYWdtZW50SlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9mcmFnbWVudC9YU0RTaW1wbGVVbmlvblJGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNjFmZTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZVVuaW9uUkZyYWdtZW50SlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuZnJhZ21lbnQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJmcmFnSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJub2RlSUQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotCi08JQotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1Ob2RlIG9wZXJOb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClvcGVyTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotSVhTRFNpbXBsZVVuaW9uRnJhZ21lbnQgZnJhZyA9IChJWFNEU2ltcGxlVW5pb25GcmFnbWVudClvcGVyRWxlbWVudC5nZXRGcmFnbWVudEJ5SUQoZnJhZ0lELnRvU3RyaW5nKCkpOwotWFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24geHNkQ29uZmlnID0gZnJhZy5nZXRYU0RUb0ZyYWdtZW50Q29uZmlndXJhdGlvbigpOwotSVhTREZyYWdtZW50W10gY2hpbGRGcmFncyA9IGZyYWcuZ2V0QWxsRnJhZ21lbnRzKCk7Ci0lPgotPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBjbGFzcz0iPCU9KHhzZENvbmZpZy5nZXRJc1dTRExQYXJ0KCkgPyAiZml4ZnJhZ3RhYmxlIiA6ICJpbm5lcmZpeGZyYWd0YWJsZSIpJT4iPgotPCUKLWZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRGcmFncy5sZW5ndGg7IGkrKykgewotICBmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0gIGZyYWdJRC5hcHBlbmQoY2hpbGRGcmFnc1tpXS5nZXRJRCgpKTsKLSU+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICA8anNwOmluY2x1ZGUgcGFnZT0iPCU9Y2hpbGRGcmFnc1tpXS5nZXRSZWFkRnJhZ21lbnQoKSU+IiBmbHVzaD0idHJ1ZSIvPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08JQotfQotJT4KLTwvdGFibGU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlVW5pb25SYW5nZVdGcmFnbWVudEpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvZnJhZ21lbnQvWFNEU2ltcGxlVW5pb25SYW5nZVdGcmFnbWVudEpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NjExMDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ZyYWdtZW50L1hTRFNpbXBsZVVuaW9uUmFuZ2VXRnJhZ21lbnRKU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5mcmFnbWVudC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS54c2QuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImZyYWdJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5vZGVJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImVsZW1lbnRJRCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci0KLTwlCi1XU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLU5vZGUgc2VsZWN0ZWROb2RlID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0Tm9kZShJbnRlZ2VyLnBhcnNlSW50KG5vZGVJRC50b1N0cmluZygpKSk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudClzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLUlYU0RTaW1wbGVVbmlvbkZyYWdtZW50IGZyYWcgPSAoSVhTRFNpbXBsZVVuaW9uRnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGZyYWdJRC50b1N0cmluZygpKTsKLVhTRFRvRnJhZ21lbnRDb25maWd1cmF0aW9uIHhzZENvbmZpZyA9IGZyYWcuZ2V0WFNEVG9GcmFnbWVudENvbmZpZ3VyYXRpb24oKTsKLUlYU0RFbGVtZW50RnJhZ21lbnQgZWxlbWVudEZyYWdtZW50ID0gKElYU0RFbGVtZW50RnJhZ21lbnQpb3BlckVsZW1lbnQuZ2V0RnJhZ21lbnRCeUlEKGVsZW1lbnRJRC50b1N0cmluZygpKTsKLVN0cmluZyB0YWJsZUNvbnRhaW5lcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotU3RyaW5nIHR3aXN0SW1hZ2VOYW1lID0gKG5ldyBTdHJpbmdCdWZmZXIoIngiKSkuYXBwZW5kKHRhYmxlQ29udGFpbmVySUQpLnRvU3RyaW5nKCk7Ci1TdHJpbmcgbmFtZUFuY2hvcklEID0gKG5ldyBTdHJpbmdCdWZmZXIoRnJhZ21lbnRDb25zdGFudHMuTkFNRV9BTkNIT1JfSUQpKS5hcHBlbmQoZnJhZy5nZXRJRCgpKS50b1N0cmluZygpOwotJT4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBjaGFuZ2VVbmlvbk1lbWJlclR5cGUoc2VsZWN0KSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGkrKykgewotICAgICAgdmFyIHRhYmxlQ29udGFpbmVySUQgPSAnPCU9RnJhZ21lbnRDb25zdGFudHMuVEFCTEVfSUQlPic7Ci0gICAgICB0YWJsZUNvbnRhaW5lcklEICs9IHNlbGVjdC5vcHRpb25zKGkpLnZhbHVlOwotICAgICAgc2hvd1RhYmxlKHRhYmxlQ29udGFpbmVySUQsIHNlbGVjdC5vcHRpb25zKGkpLnNlbGVjdGVkKTsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBzaG93VGFibGUodGFibGVDb250YWluZXJJRCwgc2hvdykgewotICAgIHZhciB0YWJsZUNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhYmxlQ29udGFpbmVySUQpOwotICAgIGlmIChzaG93KQotICAgICAgdGFibGVDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICIiOwotICAgIGVsc2UKLSAgICAgIHRhYmxlQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLTwvc2NyaXB0PgotPGEgbmFtZT0iPCU9bmFtZUFuY2hvcklEJT4iLz4KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gIDx0cj4KLSAgICA8dGQgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9dGFibGVDb250YWluZXJJRCU+JywnPCU9dHdpc3RJbWFnZU5hbWUlPicpIj48aW1nIG5hbWU9IjwlPXR3aXN0SW1hZ2VOYW1lJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RvcGVuZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfT1BFTkVEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwPgotICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpvcGVuWFNESW5mb0RpYWxvZygnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5YU0RJbmZvRGlhbG9nQWN0aW9uLmdldEFjdGlvbkxpbmsoc2Vzc2lvbi5nZXRJZCgpLHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSxmcmFnSUQudG9TdHJpbmcoKSkpKSU+JykiPjwlPWZyYWcuZ2V0TmFtZSgpJT48L2E+Ci0gICAgPC90ZD4KLSAgICA8JSAKLSAgICAgIGlmKGVsZW1lbnRGcmFnbWVudCAhPSBudWxsICYmIGVsZW1lbnRGcmFnbWVudC5pc05pbGxhYmxlKCkpewotICAgICAgICBpZihlbGVtZW50RnJhZ21lbnQuaXNOaWwoKSl7Ci0gICAgICAgICAgJT4gIAotICAgICAgICAgIDx0ZCB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IjwlPSgoSVhTREVsZW1lbnRGcmFnbWVudCllbGVtZW50RnJhZ21lbnQpLmdldE5pbElEKCklPiIgdmFsdWU9IjwlPUlYU0RFbGVtZW50RnJhZ21lbnQuTklMX1ZBTFVFJT4iIGNoZWNrZWQ+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9OSUwiKSU+PC90ZD4gCi0gICAgICAgICAgPCUKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZXsKLSAgICAgICAgICAlPiAgCi0gICAgICAgICAgPHRkIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPCU9KChJWFNERWxlbWVudEZyYWdtZW50KWVsZW1lbnRGcmFnbWVudCkuZ2V0TmlsSUQoKSU+IiB2YWx1ZT0iPCU9SVhTREVsZW1lbnRGcmFnbWVudC5OSUxfVkFMVUUlPiIgPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfTklMIiklPjwvdGQ+IAotICAgICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAlPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmNyZWF0ZUluc3RhbmNlKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCA8JT14c2RDb25maWcuZ2V0TWF4T2NjdXJzKCklPiwgJzwlPWZyYWdJRCU+JywgJzwlPW5hbWVBbmNob3JJRCU+JykiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfQUREIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXA+Ci0gICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmNoZWNrTWluT2NjdXJzQW5kUmVtb3ZlU2VsZWN0ZWRSb3dzKCc8JT10YWJsZUNvbnRhaW5lcklEJT4nLCA8JT14c2RDb25maWcuZ2V0TWluT2NjdXJzKCklPikiPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xJTktfUkVNT1ZFIiklPjwvYT4KLSAgICA8L3RkPgotICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08c3BhbiBpZD0iPCU9dGFibGVDb250YWluZXJJRCU+Ij4KLTx0YWJsZSBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9IjwlPSh4c2RDb25maWcuZ2V0SXNXU0RMUGFydCgpID8gInJhbmdlZnJhZ3RhYmxlIiA6ICJpbm5lcnJhbmdlZnJhZ3RhYmxlIiklPiI+Ci0gIDx0cj4KLSAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9dGFibGVDb250YWluZXJJRCU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIiBub3dyYXA+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVU5JT05fVFlQRSIpJT48L3RoPgotICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiIHdpZHRoPSIxMDAlIiBub3dyYXA+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVU5JT05fTUVNQkVSUyIpJT48L3RoPgotICA8L3RyPgotICA8JQotICBYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbltdIG1lbWJlclR5cGVzID0gZnJhZy5nZXRNZW1iZXJUeXBlRGVmaW5pdGlvbnMoKTsKLSAgSVhTREZyYWdtZW50W10gbWVtYmVyRnJhZ3MgPSBmcmFnLmdldEFsbEZyYWdtZW50cygpOwotICBmb3IgKGludCBpID0gMDsgaSA8IG1lbWJlckZyYWdzLmxlbmd0aCB8fCBpIDwgeHNkQ29uZmlnLmdldE1pbk9jY3VycygpOyBpKyspIHsKLSAgICBpbnQgdHlwZVNlbGVjdGlvbkluZGV4ID0gMDsKLSAgICBTdHJpbmdbXSBuZXdNZW1iZXJGcmFnSURzID0gbmV3IFN0cmluZ1ttZW1iZXJUeXBlcy5sZW5ndGhdOwotICAgIElYU0RGcmFnbWVudFtdIG5ld01lbWJlckZyYWdzID0gbmV3IElYU0RGcmFnbWVudFttZW1iZXJUeXBlcy5sZW5ndGhdOwotICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWVtYmVyVHlwZXMubGVuZ3RoOyBqKyspIHsKLSAgICAgIGlmIChpIDwgbWVtYmVyRnJhZ3MubGVuZ3RoICYmIG1lbWJlckZyYWdzW2ldLmdldFhTRFR5cGVEZWZpbml0aW9uKCkuZ2V0UU5hbWUoKS5lcXVhbHMobWVtYmVyVHlwZXNbal0uZ2V0UU5hbWUoKSkpIHsKLSAgICAgICAgbmV3TWVtYmVyRnJhZ0lEc1tqXSA9IG1lbWJlckZyYWdzW2ldLmdldElEKCk7Ci0gICAgICAgIG5ld01lbWJlckZyYWdzW2pdID0gbWVtYmVyRnJhZ3NbaV07Ci0gICAgICAgIHR5cGVTZWxlY3Rpb25JbmRleCA9IGo7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgbmV3TWVtYmVyRnJhZ0lEc1tqXSA9IGZyYWcuY3JlYXRlVW5pb25JbnN0YW5jZShqKTsKLSAgICAgICAgbmV3TWVtYmVyRnJhZ3Nbal0gPSBmcmFnLmdldEZyYWdtZW50KG5ld01lbWJlckZyYWdJRHNbal0pOwotICAgICAgfQotICAgIH0KLSAgICAlPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0iaGFuZGxlUm93Q2hlY2tib3hDbGljaygpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1JPV19DSEVDS19CT1giKSU+Ij4KLSAgICAgIDwvdGQ+Ci0gICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICA8c2VsZWN0IGlkPSI8JT1mcmFnLmdldElEKCklPiIgbmFtZT0iPCU9ZnJhZy5nZXRJRCgpJT4iIG9uQ2hhbmdlPSJqYXZhc2NyaXB0OmNoYW5nZVVuaW9uTWVtYmVyVHlwZSh0aGlzKSIgdGl0bGU9IjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1VOSU9OX1RZUEUiKSU+Ij4KLSAgICAgICAgICA8JQotICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgbWVtYmVyVHlwZXMubGVuZ3RoOyBrKyspIHsKLSAgICAgICAgICAgIGlmIChrID09IHR5cGVTZWxlY3Rpb25JbmRleCkgewotICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT1uZXdNZW1iZXJGcmFnSURzW2tdJT4iIHNlbGVjdGVkPjwlPW1lbWJlclR5cGVzW2tdLmdldFFOYW1lKCklPgotICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjwlPW5ld01lbWJlckZyYWdJRHNba10lPiI+PCU9bWVtYmVyVHlwZXNba10uZ2V0UU5hbWUoKSU+Ci0gICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgICU+Ci0gICAgICAgIDwvc2VsZWN0PgotICAgICAgPC90ZD4KLSAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgIDwlCi0gICAgICAgIGZvciAoaW50IGwgPSAwOyBsIDwgbWVtYmVyVHlwZXMubGVuZ3RoOyBsKyspIHsKLSAgICAgICAgICBmcmFnSUQuZGVsZXRlKDAsIGZyYWdJRC5sZW5ndGgoKSk7Ci0gICAgICAgICAgZnJhZ0lELmFwcGVuZChuZXdNZW1iZXJGcmFnSURzW2xdKTsKLSAgICAgICAgICBTdHJpbmcgbWVtYmVyVGFibGVDb250YWluZXJJRCA9IChuZXcgU3RyaW5nQnVmZmVyKEZyYWdtZW50Q29uc3RhbnRzLlRBQkxFX0lEKSkuYXBwZW5kKG5ld01lbWJlckZyYWdzW2xdLmdldElEKCkpLnRvU3RyaW5nKCk7Ci0gICAgICAgICU+Ci0gICAgICAgIDxzcGFuIGlkPSI8JT1tZW1iZXJUYWJsZUNvbnRhaW5lcklEJT4iPgotICAgICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSI8JT1uZXdNZW1iZXJGcmFnc1tsXS5nZXRXcml0ZUZyYWdtZW50KCklPiIgZmx1c2g9InRydWUiLz4KLSAgICAgICAgPC9zcGFuPgotICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgICBzaG93VGFibGUoJzwlPW1lbWJlclRhYmxlQ29udGFpbmVySUQlPicsIDwlPShsID09IHR5cGVTZWxlY3Rpb25JbmRleCklPik7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICAgICU+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwlCi0gIH0KLSAgJT4KLTwvdGFibGU+Ci08L3NwYW4+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvaW1hZ2VzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvaW1hZ2VzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MzhmZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ltYWdlcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9pbWFnZXMvaW52b2tlX3dzZGxfb3BlcmF0aW9uX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ltYWdlcy9pbnZva2Vfd3NkbF9vcGVyYXRpb25fZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZmM0MDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ltYWdlcy9pbnZva2Vfd3NkbF9vcGVyYXRpb25fZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvaW1hZ2VzL2ludm9rZV93c2RsX29wZXJhdGlvbl9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvaW1hZ2VzL2ludm9rZV93c2RsX29wZXJhdGlvbl9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZmM0MDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ltYWdlcy9pbnZva2Vfd3NkbF9vcGVyYXRpb25faGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ltYWdlcy9vcGVuX3dzZGxfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvaW1hZ2VzL29wZW5fd3NkbF9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ1NWJhZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvaW1hZ2VzL29wZW5fd3NkbF9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9pbWFnZXMvb3Blbl93c2RsX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9pbWFnZXMvb3Blbl93c2RsX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ1NWJhZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvaW1hZ2VzL29wZW5fd3NkbF9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvaW1hZ2VzL3dzZGxfYmluZGluZ19ub2RlLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9pbWFnZXMvd3NkbF9iaW5kaW5nX25vZGUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTM4NmM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9pbWFnZXMvd3NkbF9iaW5kaW5nX25vZGUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ltYWdlcy93c2RsX29wZXJhdGlvbl9ub2RlLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9pbWFnZXMvd3NkbF9vcGVyYXRpb25fbm9kZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMTFiYTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ltYWdlcy93c2RsX29wZXJhdGlvbl9ub2RlLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9pbWFnZXMvd3NkbF9zZXJ2aWNlX25vZGUuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ltYWdlcy93c2RsX3NlcnZpY2Vfbm9kZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZDA4YmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL2ltYWdlcy93c2RsX3NlcnZpY2Vfbm9kZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvc2NyaXB0cy8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3NjcmlwdHMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvc2NyaXB0cy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9zY3JpcHRzL2ZyYWdtZW50dGFibGVzLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9zY3JpcHRzL2ZyYWdtZW50dGFibGVzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMwY2RjZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvc2NyaXB0cy9mcmFnbWVudHRhYmxlcy5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvdGFibGVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9mb3JtdXRpbHMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2NhbGVuZGFyYnJvd3Nlci5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci0KLTwlCi0gICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSU+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICB2YXIgeHNkSW5mb0RpYWxvZzsKLSAgdmFyIHhzZEluZm9EaWFsb2dDbG9zZWQgPSB0cnVlOwotICB2YXIgcm93Q2hlY2tib3hOYW1lID0gInJvd0NoZWNrYm94TmFtZSI7Ci0gIHZhciB1bmJvdW5kZWQgPSA8JT1GcmFnbWVudENvbnN0YW50cy5VTkJPVU5ERUQlPjsKLQotICBmdW5jdGlvbiBjaGVja01heE9jY3Vyc1JlYWNoZWQodGFibGVDb250YWluZXJJRCwgbWF4T2NjdXJzKSB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJRCk7Ci0gICAgaWYgKG1heE9jY3VycyAhPSB1bmJvdW5kZWQgJiYgKHRhYmxlLnJvd3MubGVuZ3RoIC0gbnVtYmVyT2ZIZWFkZXJSb3dzKSA+PSBtYXhPY2N1cnMpIHsKLSAgICAgIGFsZXJ0KCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUod3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9NQVhfT0NDVVJTX1ZJT0xBVElPTiIpKSU+Iik7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgZnVuY3Rpb24gY2hlY2tNaW5PY2N1cnNBbmRSZW1vdmVTZWxlY3RlZFJvd3ModGFibGVDb250YWluZXJJRCwgbWluT2NjdXJzKSB7Ci0gICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJRCk7Ci0gICAgdmFyIHJvd3NMZW5ndGggPSB0YWJsZS5yb3dzLmxlbmd0aCAtIG51bWJlck9mSGVhZGVyUm93czsKLSAgICB2YXIgY2hlY2tlZFJvd3MgPSAwOwotICAgIGZvciAodmFyIGkgPSBudW1iZXJPZkhlYWRlclJvd3M7IGkgPCB0YWJsZS5yb3dzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICB2YXIgdGFibGVSb3cgPSB0YWJsZS5yb3dzW2ldOwotICAgICAgdmFyIHJvd0NoZWNrYm94ID0gdGFibGVSb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKTsKLSAgICAgIGlmIChyb3dDaGVja2JveC5jaGVja2VkKQotICAgICAgICBjaGVja2VkUm93cysrOwotICAgIH0KLSAgICBpZiAoY2hlY2tlZFJvd3MgPT0gMCkKLSAgICAgIGFsZXJ0KCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUod3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT1RISU5HX1NFTEVDVEVEIikpJT4iKTsKLSAgICBlbHNlIGlmICgocm93c0xlbmd0aCAtIGNoZWNrZWRSb3dzKSA8IG1pbk9jY3VycykKLSAgICAgIGFsZXJ0KCI8JT1IVE1MVXRpbHMuSlNNYW5nbGUod3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9NSU5fT0NDVVJTX1ZJT0xBVElPTiIpKSU+Iik7Ci0gICAgZWxzZQotICAgICAgcmVtb3ZlU2VsZWN0ZWRSb3dzKHRhYmxlQ29udGFpbmVySUQpOwotICB9Ci0gIAotICBmdW5jdGlvbiBjaGVja01pbk9jY3Vyc0FuZFJlbW92ZVNlbGVjdGVkUm93c0F0dHJpYnV0ZSh0YWJsZUNvbnRhaW5lcklELCBtaW5PY2N1cnMpIHsKLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklEKTsKLSAgICB2YXIgcm93c0xlbmd0aCA9IHRhYmxlLnJvd3MubGVuZ3RoIC0gbnVtYmVyT2ZIZWFkZXJSb3dzOwotICAgIHZhciBjaGVja2VkUm93cyA9IDA7Ci0gICAgZm9yICh2YXIgaSA9IG51bWJlck9mSGVhZGVyUm93czsgaSA8IHRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHsKLSAgICAgIHZhciB0YWJsZVJvdyA9IHRhYmxlLnJvd3NbaV07Ci0gICAgICB2YXIgcm93Q2hlY2tib3ggPSB0YWJsZVJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgICAgaWYgKHJvd0NoZWNrYm94LmNoZWNrZWQpCi0gICAgICAgIGNoZWNrZWRSb3dzKys7Ci0gICAgfQotICAgIGlmIChjaGVja2VkUm93cyA9PSAwKQotICAgICAgYWxlcnQoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PVEhJTkdfU0VMRUNURUQiKSklPiIpOwotICAgIGVsc2UgaWYgKChyb3dzTGVuZ3RoIC0gY2hlY2tlZFJvd3MpIDwgbWluT2NjdXJzKQotICAgICAgYWxlcnQoIjwlPUhUTUxVdGlscy5KU01hbmdsZSh3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX01JTl9PQ0NVUlNfVklPTEFUSU9OIikpJT4iKTsKLSAgICBlbHNlCi0gICAgICByZW1vdmVTZWxlY3RlZFJvd3NBdHRyaWJ1dGUodGFibGVDb250YWluZXJJRCk7Ci0gIH0KLSAgCi0gIAotICBmdW5jdGlvbiBjaGVja01pbk9jY3Vyc0FuZFJlbW92ZVNlbGVjdGVkRGF0ZVRpbWVSb3dzKGNhbGVuZGFyVHlwZSx0YWJsZUNvbnRhaW5lcklELG1pbk9jY3VycykKLSAgewotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySUQpOwotICAgIHZhciBuZXdDYWxlbmRhclRhcmdldFJvdyA9IGNhbGVuZGFyVGFyZ2V0Um93OwotICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzO2k8dGFibGUucm93cy5sZW5ndGg7aSsrKQotICAgIHsKLSAgICAgIHZhciBjb2x1bW5zID0gdGFibGUucm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKLSAgICAgIHZhciByb3dDaGVja2JveCA9IGNvbHVtbnMuaXRlbSgwKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKS5pdGVtKDApOwotICAgICAgaWYgKHJvd0NoZWNrYm94LmNoZWNrZWQpCi0gICAgICB7Ci0gICAgICAgIGlmIChpLW51bWJlck9mSGVhZGVyUm93cyA9PSBjYWxlbmRhclRhcmdldFJvdykKLSAgICAgICAgICBuZXdDYWxlbmRhclRhcmdldFJvdyA9IC0xOwotICAgICAgICBlbHNlCi0gICAgICAgICAgbmV3Q2FsZW5kYXJUYXJnZXRSb3ctLTsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG5ld0NhbGVuZGFyVGFyZ2V0Um93ID09IC0xKQotICAgICAgY2xvc2VDYWxlbmRhckJyb3dzZXIoKTsKLSAgICBjYWxlbmRhclRhcmdldFJvdyA9IG5ld0NhbGVuZGFyVGFyZ2V0Um93OwotICAgICAgCi0gICAgY2hlY2tNaW5PY2N1cnNBbmRSZW1vdmVTZWxlY3RlZFJvd3ModGFibGVDb250YWluZXJJRCxtaW5PY2N1cnMpOwotPCUKLSAgIC8vIEZpeCB0aGUgYnJvd3NlLi4uIGxpbmtzLgotJT4KLSAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklEKTsKLSAgICBmb3IgKHZhciBpPW51bWJlck9mSGVhZGVyUm93cztpPHRhYmxlLnJvd3MubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgY29sdW1ucyA9IHRhYmxlLnJvd3NbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7Ci0gICAgICB2YXIgZGF0ZVRpbWVUZXh0RmllbGQgPSBjb2x1bW5zLml0ZW0oMSkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IikuaXRlbSgwKTsKLSAgICAgIHNldERhdGVUaW1lQnJvd3NlTGlua0hyZWYoY29sdW1ucy5pdGVtKDIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIikuaXRlbSgwKSxjYWxlbmRhclR5cGUsZGF0ZVRpbWVUZXh0RmllbGQubmFtZSxpLW51bWJlck9mSGVhZGVyUm93cyk7Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UodGFibGVDb250YWluZXJJRCwgbWF4T2NjdXJzLCBmcmFnbWVudElELCBuYW1lQW5jaG9ySUQpIHsKLSAgICBpZiAoY2hlY2tNYXhPY2N1cnNSZWFjaGVkKHRhYmxlQ29udGFpbmVySUQsIG1heE9jY3VycykpCi0gICAgICByZXR1cm47Ci0gICAgdHdpc3RPcGVuKHRhYmxlQ29udGFpbmVySUQpOwotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySUQpOwotICAgIHZhciB0YWJsZUJvZHkgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5pdGVtKDApOwotICAgIHZhciBuZXdSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHZhciBuZXdDb2x1bW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgIG5ld0NvbHVtbi5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1GcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9JRCU+IiwgZnJhZ21lbnRJRCkpOwotICAgIG5ld0NvbHVtbi5hcHBlbmRDaGlsZChjcmVhdGVIaWRkZW5FbGVtZW50KCI8JT1GcmFnbWVudENvbnN0YW50cy5OQU1FX0FOQ0hPUl9JRCU+IiwgbmFtZUFuY2hvcklEKSk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKG5ld0NvbHVtbik7Ci0gICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gICAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpOwotICAgIGZvcm1bMF0uYWN0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC9hY3Rpb25zL0NyZWF0ZUluc3RhbmNlQWN0aW9uSlNQLmpzcCIpKSU+IjsKLSAgICBmb3JtWzBdLnN1Ym1pdCgpOwotICB9Ci0KLSAgZnVuY3Rpb24gb3BlblhTREluZm9EaWFsb2cobGluaykgewotICAgIHhzZEluZm9EaWFsb2cgPSB3aW5kb3cub3BlbihsaW5rLCAiWFNESW5mb3JtYXRpb25EaWFsb2ciLCAiaGVpZ2h0PTUwMCx3aWR0aD01MDAsc2Nyb2xsYmFycz1ubyxyZXNpemFibGU9eWVzIik7Ci0gICAgaWYgKHhzZEluZm9EaWFsb2cuZm9jdXMpCi0gICAgICB4c2RJbmZvRGlhbG9nLmZvY3VzKCk7Ci0gIH0KLQotICBmdW5jdGlvbiBjbG9zZVhTREluZm9EaWFsb2coKQotICB7Ci0gICAgaWYgKCF4c2RJbmZvRGlhbG9nQ2xvc2VkKQotICAgICAgeHNkSW5mb0RpYWxvZy5jbG9zZSgpOwotICB9Ci0KLSAgZnVuY3Rpb24gc3luY2hyb25pemVGcmFnbWVudFZpZXdzKHZpZXdJRCkgewotICAgIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKTsKLSAgICBpZiAodmlld0lEID09ICI8JT1GcmFnbWVudENvbnN0YW50cy5GUkFHTUVOVF9WSUVXX1NXSVRDSF9GT1JNX1RPX1NPVVJDRSU+IikKLSAgICAgIGZvcm1bMF0uYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuRWxlbWVudCgiPCU9RnJhZ21lbnRDb25zdGFudHMuRlJBR01FTlRfVklFV19JRCU+IiwiPCU9RnJhZ21lbnRDb25zdGFudHMuRlJBR01FTlRfVklFV19TV0lUQ0hfRk9STV9UT19TT1VSQ0UlPiIpKTsKLSAgICBlbHNlCi0gICAgICBmb3JtWzBdLmFwcGVuZENoaWxkKGNyZWF0ZUhpZGRlbkVsZW1lbnQoIjwlPUZyYWdtZW50Q29uc3RhbnRzLkZSQUdNRU5UX1ZJRVdfSUQlPiIsIjwlPUZyYWdtZW50Q29uc3RhbnRzLkZSQUdNRU5UX1ZJRVdfU1dJVENIX1NPVVJDRV9UT19GT1JNJT4iKSk7Ci0gICAgZm9ybVswXS5hY3Rpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL2FjdGlvbnMvU3luY2hyb25pemVGcmFnbWVudFZpZXdzQWN0aW9uSlNQLmpzcCIpKSU+IjsKLSAgICBmb3JtWzBdLnN1Ym1pdCgpOwotICB9Ci0gIAotICBmdW5jdGlvbiBhZGRTaW1wbGVBdG9taWNEYXRlVGltZVJvd3MoY2FsZW5kYXJUeXBlLHRhYmxlQ29udGFpbmVySUQsaWQsbmFtZSx2YWx1ZSxtYXhPY2N1cnMpIHsKLSAgICBpZiAoY2hlY2tNYXhPY2N1cnNSZWFjaGVkKHRhYmxlQ29udGFpbmVySUQsIG1heE9jY3VycykpCi0gICAgICByZXR1cm47Ci0gICAgdHdpc3RPcGVuKHRhYmxlQ29udGFpbmVySUQpOwotICAgIHZhciB0YWJsZSA9IGdldFRhYmxlKHRhYmxlQ29udGFpbmVySUQpOwotICAgIHZhciB0YWJsZUJvZHkgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5pdGVtKDApOwotICAgIHZhciBuZXdSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHZhciBjb2x1bW4wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICB2YXIgY29sdW1uMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgdmFyIGNvbHVtbjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0gICAgdmFyIHJvd0NoZWNrYm94ID0gY3JlYXRlUm93Q2hlY2tib3goKTsKLSAgICBjb2x1bW4wLmFwcGVuZENoaWxkKHJvd0NoZWNrYm94KTsKLQotICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgaW5wdXQudHlwZSA9ICJ0ZXh0IjsKLSAgICBpbnB1dC5pZCA9IGlkOwotICAgIGlucHV0Lm5hbWUgPSBuYW1lOwotICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmxlbmd0aCA+IDApCi0gICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlOwotICAgIGlucHV0LmNsYXNzTmFtZSA9ICJ0YWJsZXRleHRlbnRlciI7Ci0gICAgY29sdW1uMS5hcHBlbmRDaGlsZChpbnB1dCk7Ci0gICAgCi0gICAgY29sdW1uMi5hcHBlbmRDaGlsZChjcmVhdGVEYXRlVGltZUJyb3dzZUxpbmsoY2FsZW5kYXJUeXBlLG5hbWUsdGFibGUucm93cy5sZW5ndGgtMSkpOwotICAgIGNvbHVtbjIud2lkdGggPSAiOTAlIjsKLQotICAgIGNvbHVtbjAuY2xhc3NOYW1lID0gImNoZWNrYm94Y2VsbHMiOwotICAgIGNvbHVtbjEuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIGNvbHVtbjIuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChjb2x1bW4wKTsKLSAgICBuZXdSb3cuYXBwZW5kQ2hpbGQoY29sdW1uMSk7Ci0gICAgbmV3Um93LmFwcGVuZENoaWxkKGNvbHVtbjIpOwotICAgIHRhYmxlQm9keS5hcHBlbmRDaGlsZChuZXdSb3cpOwotICB9ICAKLSAgCi0gIGZ1bmN0aW9uIGNyZWF0ZURhdGVUaW1lQnJvd3NlTGluayhjYWxlbmRhclR5cGUsbmFtZSxwb3NpdGlvbikKLSAgewotICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgIHNldERhdGVUaW1lQnJvd3NlTGlua0hyZWYobGluayxjYWxlbmRhclR5cGUsbmFtZSxwb3NpdGlvbik7Ci0gICAgbGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0JST1dTRSIpKSU+IikpOwotICAgIHJldHVybiBsaW5rOwotICB9Ci0gIAotICBmdW5jdGlvbiBzZXREYXRlVGltZUJyb3dzZUxpbmtIcmVmKGxpbmssY2FsZW5kYXJUeXBlLG5hbWUscG9zaXRpb24pCi0gIHsKLSAgICBsaW5rLmhyZWYgPSAiamF2YXNjcmlwdDpvcGVuQ2FsZW5kYXJCcm93c2VyKCIrY2FsZW5kYXJUeXBlKyIsJ2NvbnRlbnRib3JkZXInLCciK25hbWUrIicsIitwb3NpdGlvbisiKSI7Ci0gICAgcmV0dXJuIGxpbms7Ci0gIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3NjcmlwdHMvd3NkbGZyYW1lc2V0cy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvc2NyaXB0cy93c2RsZnJhbWVzZXRzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBjMzg0OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvc2NyaXB0cy93c2RsZnJhbWVzZXRzLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIGdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldCgpCi0gIHsKLSAgICByZXR1cm4gcGVyc3BlY3RpdmVDb250ZW50LmZyYW1lc1siPCU9V1NETEZyYW1lTmFtZXMuV1NETF9BQ1RJT05TX0NPTlRBSU5FUiU+Il0uZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZyYW1lc2V0IikuaXRlbSgwKTsKLSAgfQotICAKLSAgZnVuY3Rpb24gcHJvY2Vzc0ZyYW1lc2V0U2l6ZXMoZnJhbWVzZXRTaXplc0Zvcm0pCi0gIHsKLSAgICB0b2dnbGVEb3VibGVDbGlja0NvbHVtblRpdGxlKCk7Ci0gICAgdmFyIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0ID0gZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXQoKTsKLSAgICB2YXIgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0ID0gZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0KCk7Ci0gICAgZnJhbWVzZXRTaXplc0Zvcm0uPCU9V1NETEFjdGlvbklucHV0cy5GUkFNRVNFVF9DT0xTX1BFUlNQRUNUSVZFX0NPTlRFTlQlPi52YWx1ZSA9IHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0LmNvbHM7Ci0gICAgZnJhbWVzZXRTaXplc0Zvcm0uPCU9V1NETEFjdGlvbklucHV0cy5GUkFNRVNFVF9ST1dTX0FDVElPTlNfQ09OVEFJTkVSJT4udmFsdWUgPSBhY3Rpb25zQ29udGFpbmVyRnJhbWVzZXQucm93czsKLSAgICBmcmFtZXNldFNpemVzRm9ybS5zdWJtaXQoKTsKLSAgfQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3NjcmlwdHMvd3NkbHBhbmVzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI1MDljMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvc2NyaXB0cy93c2RscGFuZXMuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9wYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgdmFyIHdzZGxOYXZpZ2F0b3JDb250YWluZXIgPSBwZXJzcGVjdGl2ZUNvbnRlbnQuZnJhbWVzWyI8JT1XU0RMRnJhbWVOYW1lcy5XU0RMX05BVklHQVRPUl9DT05UQUlORVIlPiJdOwotICB2YXIgd3NkbE5hdmlnYXRvclRvb2xiYXIgPSB3c2RsTmF2aWdhdG9yQ29udGFpbmVyLmZyYW1lc1siPCU9V1NETEZyYW1lTmFtZXMuV1NETF9OQVZJR0FUT1JfVE9PTEJBUiU+Il07Ci0gIHZhciB3c2RsTmF2aWdhdG9yQ29udGVudCA9IHdzZGxOYXZpZ2F0b3JDb250YWluZXIuZnJhbWVzWyI8JT1XU0RMRnJhbWVOYW1lcy5XU0RMX05BVklHQVRPUl9DT05URU5UJT4iXTsKLSAgdmFyIHdzZGxBY3Rpb25zQ29udGFpbmVyID0gcGVyc3BlY3RpdmVDb250ZW50LmZyYW1lc1siPCU9V1NETEZyYW1lTmFtZXMuV1NETF9BQ1RJT05TX0NPTlRBSU5FUiU+Il07Ci0gIHZhciB3c2RsUHJvcGVydGllc0NvbnRhaW5lciA9IHdzZGxBY3Rpb25zQ29udGFpbmVyLmZyYW1lc1siPCU9V1NETEZyYW1lTmFtZXMuV1NETF9QUk9QRVJUSUVTX0NPTlRBSU5FUiU+Il07Ci0gIHZhciB3c2RsUHJvcGVydGllc1Rvb2xiYXIgPSB3c2RsUHJvcGVydGllc0NvbnRhaW5lci5mcmFtZXNbIjwlPVdTRExGcmFtZU5hbWVzLldTRExfUFJPUEVSVElFU19UT09MQkFSJT4iXTsKLSAgdmFyIHdzZGxQcm9wZXJ0aWVzQ29udGVudCA9IHdzZGxQcm9wZXJ0aWVzQ29udGFpbmVyLmZyYW1lc1siPCU9V1NETEZyYW1lTmFtZXMuV1NETF9QUk9QRVJUSUVTX0NPTlRFTlQlPiJdOwotICB2YXIgd3NkbFN0YXR1c0NvbnRhaW5lciA9IHdzZGxBY3Rpb25zQ29udGFpbmVyLmZyYW1lc1siPCU9V1NETEZyYW1lTmFtZXMuV1NETF9TVEFUVVNfQ09OVEFJTkVSJT4iXTsKLSAgdmFyIHdzZGxTdGF0dXNUb29sYmFyID0gd3NkbFN0YXR1c0NvbnRhaW5lci5mcmFtZXNbIjwlPVdTRExGcmFtZU5hbWVzLldTRExfU1RBVFVTX1RPT0xCQVIlPiJdOwotICB2YXIgd3NkbFN0YXR1c0NvbnRlbnQgPSB3c2RsU3RhdHVzQ29udGFpbmVyLmZyYW1lc1siPCU9V1NETEZyYW1lTmFtZXMuV1NETF9TVEFUVVNfQ09OVEVOVCU+Il07Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9zb2FwX2VudmVsb3BlX3htbC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvc29hcF9lbnZlbG9wZV94bWwuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmVlYzkwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC9zb2FwX2VudmVsb3BlX3htbC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDQxMyAgIDE3NjQ5MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NFOiBNYWtlIG1lc3NhZ2UvdHJhbnNwb3J0IHN0YWNrIHBsdWdnYWJsZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPjwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L3htbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5kYXRhbW9kZWwuV1NETE9wZXJhdGlvbkVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIudHJhbnNwb3J0LioiICU+PGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+PCUKLWludCBzb2FwRW52ZWxvcGVUeXBlID0gSW50ZWdlci5wYXJzZUludChyZXF1ZXN0LmdldFBhcmFtZXRlcihXU0RMQWN0aW9uSW5wdXRzLlNPQVBfRU5WRUxPUEVfVFlQRSkpOwotV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci1XU0RMT3BlcmF0aW9uRWxlbWVudCBvcGVyRWxlbWVudCA9IChXU0RMT3BlcmF0aW9uRWxlbWVudCkgd3NkbFBlcnNwZWN0aXZlLmdldE9wZXJhdGlvbk5vZGUoKS5nZXRUcmVlRWxlbWVudCgpOwotSVNPQVBNZXNzYWdlIHNvYXBNZXNzYWdlOwotc3dpdGNoIChzb2FwRW52ZWxvcGVUeXBlKQotewotICBjYXNlIFdTRExBY3Rpb25JbnB1dHMuU09BUF9FTlZFTE9QRV9UWVBFX1JFUVVFU1Q6Ci0gICAgc29hcE1lc3NhZ2UgPSAoSVNPQVBNZXNzYWdlKSBvcGVyRWxlbWVudC5nZXRQcm9wZXJ0eUFzT2JqZWN0KFdTRExNb2RlbENvbnN0YW50cy5QUk9QX1NPQVBfUkVRVUVTVCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgV1NETEFjdGlvbklucHV0cy5TT0FQX0VOVkVMT1BFX1RZUEVfUkVTUE9OU0U6Ci0gIGRlZmF1bHQ6Ci0gICAgc29hcE1lc3NhZ2UgPSAoSVNPQVBNZXNzYWdlKSBvcGVyRWxlbWVudC5nZXRQcm9wZXJ0eUFzT2JqZWN0KFdTRExNb2RlbENvbnN0YW50cy5QUk9QX1NPQVBfUkVTUE9OU0UpOwotICAgIGJyZWFrOwotfQotU3RyaW5nIG1lc3NhZ2VzID0gc29hcE1lc3NhZ2UudG9YTUwoKTsKLSU+PCU9bWVzc2FnZXMlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfYWN0aW9uc19jb250YWluZXIuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfYWN0aW9uc19jb250YWluZXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWQ5M2E5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX2FjdGlvbnNfY29udGFpbmVyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfQUNUSU9OU19DT05UQUlORVIiKSU+PC90aXRsZT4KLTwvaGVhZD4KLTxmcmFtZXNldCByb3dzPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpJT4iIGJnY29sb3I9IiNFQ0U5RDgiPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9QUk9QRVJUSUVTX0NPTlRBSU5FUiU+IiB0aXRsZT0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BST1BFUlRJRVNfQ09OVEFJTkVSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzZGxfcHJvcGVydGllc19jb250YWluZXIuanNwIiklPiIgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MSBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9TVEFUVVNfQ09OVEFJTkVSJT4iIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfU1RBVFVTX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKCJ3c2RsX3N0YXR1c19jb250YWluZXIuanNwIiklPiIgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MSBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPC9mcmFtZXNldD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX25hdmlnYXRvcl9jb250YWluZXIuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfbmF2aWdhdG9yX2NvbnRhaW5lci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMjM3MGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfbmF2aWdhdG9yX2NvbnRhaW5lci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPgotPGZyYW1lc2V0IHJvd3M9IjMzLCoiIGJvcmRlcj0wIGJnY29sb3I9IiNFQ0U5RDgiPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9OQVZJR0FUT1JfVE9PTEJBUiU+IiB0aXRsZT0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX05BVklHQVRPUl9UT09MQkFSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzZGxfbmF2aWdhdG9yX3Rvb2xiYXIuanNwIiklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9OQVZJR0FUT1JfQ09OVEVOVCU+IiB0aXRsZT0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX05BVklHQVRPUl9DT05URU5UIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzZGxfbmF2aWdhdG9yX2NvbnRlbnQuanNwIiklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPC9mcmFtZXNldD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX25hdmlnYXRvcl9jb250ZW50LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX25hdmlnYXRvcl9jb250ZW50LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q1YTI5Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9uYXZpZ2F0b3JfY29udGVudC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSU+ICAgICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgIDx0aXRsZT48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRFTlQiKSU+PC90aXRsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90cmVldmlldy5jc3MiKSklPiI+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci0gICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvYnJvd3NlcmRldGVjdC5qcyIpKSU+Ij4KLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy90cmVldmlldy5qcyIpKSU+Ij4KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTwlCi0gICAgU3RyaW5nIHNlbGVjdGVkQW5jaG9yTmFtZSA9ICIiOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpOwotICAgIGludCBmb2N1c2VkTm9kZUlkID0gbm9kZU1hbmFnZXIuZ2V0Rm9jdXNlZE5vZGVJZCgpOwotICAgIFN0cmluZyBmb2N1c2VkQW5jaG9yTmFtZSA9IFN0cmluZy52YWx1ZU9mKGZvY3VzZWROb2RlSWQpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgaWYgKHNlbGVjdGVkTm9kZSAhPSBudWxsKSB7Ci0gICAgICAgIHNlbGVjdGVkQW5jaG9yTmFtZSA9IHNlbGVjdGVkTm9kZS5nZXRBbmNob3JOYW1lKCk7Ci0gICAgICAgIGlmIChmb2N1c2VkTm9kZUlkID09IHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSkKLSAgICAgICAgICAgIGZvY3VzZWRBbmNob3JOYW1lID0gc2VsZWN0ZWRBbmNob3JOYW1lOwotICAgIH0KLSU+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIG9uTG9hZD0ic2VsZi5sb2NhdGlvbi5oYXNoPScjPCU9Zm9jdXNlZEFuY2hvck5hbWUlPic7c2V0U2VsZWN0ZWRBbmNob3JOYW1lKCc8JT1zZWxlY3RlZEFuY2hvck5hbWUlPicpIiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotICAgIDxkaXYgaWQ9InRyZWVjb250ZW50Ym9yZGVyIj4KLSAgICAgICAgPCU9bm9kZU1hbmFnZXIucmVuZGVyVHJlZVZpZXcocmVzcG9uc2UpJT4KLSAgICA8L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX25hdmlnYXRvcl90b29sYmFyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX25hdmlnYXRvcl90b29sYmFyLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY5YTY3Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9uYXZpZ2F0b3JfdG9vbGJhci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfTkFWSUdBVE9SX1RPT0xCQVIiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3MvdG9vbGJhci5jc3MiKSklPiI+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RsZnJhbWVzZXRzLmpzcCIgZmx1c2g9InRydWUiLz4gIAotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvdG9vbGJhci5qcyIpKSU+Ij4KLTwvc2NyaXB0PiAgCi08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJ0b29sYmFyYm9keW1hcmdpbiI+Ci08ZGl2IGlkPSJ0b29sYmFyYm9yZGVyIj4KLSAgPGRpdiBpZD0idG9vbGJhciIgb25kYmxjbGljaz0icHJvY2Vzc0ZyYW1lc2V0U2l6ZXMoZG9jdW1lbnQuZm9ybXNbMF0pIj4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUFjdGlvbiIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGZvcm1BY3Rpb24uYXBwZW5kKCJ3c2RsL2FjdGlvbnMvUmVzaXplV1NETEZyYW1lc0FjdGlvbkpTUC5qc3AiKTsKLSU+ICAKLTwvanNwOnVzZUJlYW4+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1GcmFtZU5hbWUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICAgZm9ybUZyYW1lTmFtZS5hcHBlbmQoV1NETEZyYW1lTmFtZXMuV1NETF9OQVZJR0FUT1JfQ09OVEFJTkVSKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL2Zvcm1zL1Byb2Nlc3NXU0RMRnJhbWVzZXRzRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBoZWlnaHQ9MjUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvbmF2aWdhdG9yLmdpZiIpKSU+IiBhbHQ9IiIgd2lkdGg9MTYgaGVpZ2h0PTE2PjwvdGQ+Ci08JQotICAgU3RyaW5nIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBudWxsOwotICAgaWYgKHdzZGxQZXJzcGVjdGl2ZS5nZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKS5zdGFydHNXaXRoKCIxMDAlIikpCi0gICAgIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9ET1VCTEVfQ0xJQ0tfVE9fUkVTVE9SRSIpOwotICAgZWxzZQotICAgICBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX01BWElNSVpFIik7Ci0lPiAgICAgICAgCi0gICAgICAgIDx0ZCBpZD0iZG91YmxlY2xpY2tjb2x1bW4iIHRpdGxlPSI8JT1kb3VibGVDbGlja0NvbHVtblRpdGxlJT4iIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iKiIgaGVpZ2h0PTI1IG5vd3JhcCBjbGFzcz0idGV4dCI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfTkFWSUdBVE9SIiklPjwvdGQ+Ci08JQotICAgU3RyaW5nIGFsdFJlZnJlc2ggPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9SRUZSRVNIIik7Ci0gICBTdHJpbmcgYWx0Q2xlYXIgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9DTEVBUiIpOwotJT4gICAgICAgICAgIAotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvYWN0aW9ucy9SZWZyZXNoV1NETEFjdGlvbkpTUC5qc3AiKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjxpbWcgY2xhc3M9Im5vcm1hbCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9yZWZyZXNoX2VuYWJsZWQuZ2lmIikpJT4iIHdpZHRoPTE2IGhlaWdodD0xNiBvbk1vdXNlT3Zlcj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9yZWZyZXNoX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZW92ZXIodGhpcykiIG9uTW91c2VPdXQ9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvcmVmcmVzaF9lbmFibGVkLmdpZiIpKSU+Jzttb3VzZW91dCh0aGlzKSIgb25Nb3VzZURvd249InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvcmVmcmVzaF9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2Vkb3duKHRoaXMpIiBvbk1vdXNlVXA9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvcmVmcmVzaF9lbmFibGVkLmdpZiIpKSU+Jzttb3VzZXVwKHRoaXMpIiBhbHQ9IjwlPWFsdFJlZnJlc2glPiIgdGl0bGU9IjwlPWFsdFJlZnJlc2glPiI+PC9hPjwvdGQ+Ci0gICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgd2lkdGg9MjUgaGVpZ2h0PTI1PjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NkbC9hY3Rpb25zL0NsZWFyV1NETEFjdGlvbkpTUC5qc3AiKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjxpbWcgY2xhc3M9Im5vcm1hbCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9lbmFibGVkLmdpZiIpKSU+IiB3aWR0aD0xNiBoZWlnaHQ9MTYgb25Nb3VzZU92ZXI9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfaGlnaGxpZ2h0ZWQuZ2lmIikpJT4nO21vdXNlb3Zlcih0aGlzKSIgb25Nb3VzZU91dD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9lbmFibGVkLmdpZiIpKSU+Jzttb3VzZW91dCh0aGlzKSIgb25Nb3VzZURvd249InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfaGlnaGxpZ2h0ZWQuZ2lmIikpJT4nO21vdXNlZG93bih0aGlzKSIgb25Nb3VzZVVwPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNldXAodGhpcykiIGFsdD0iPCU9YWx0Q2xlYXIlPiIgdGl0bGU9IjwlPWFsdENsZWFyJT4iPjwvYT48L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotICA8L2Rpdj4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfcGVyc3BlY3RpdmVfY29udGVudC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEyMTUxZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgY29scz0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpJT4iIGJnY29sb3I9IiNFQ0U5RDgiPgotICA8JQotICBpZiAob3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuaXNSVEwoKSkKLSAgewotICAlPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9BQ1RJT05TX0NPTlRBSU5FUiU+IiB0aXRsZT0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX0FDVElPTlNfQ09OVEFJTkVSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzZGxfYWN0aW9uc19jb250YWluZXIuanNwIiklPiIgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MCBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0xPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9OQVZJR0FUT1JfQ09OVEFJTkVSJT4iIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKCJ3c2RsX25hdmlnYXRvcl9jb250YWluZXIuanNwIiklPiIgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MCBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0xPgotICA8JQotICB9Ci0gIGVsc2UKLSAgewotICAlPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9OQVZJR0FUT1JfQ09OVEFJTkVSJT4iIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfTkFWSUdBVE9SX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKCJ3c2RsX25hdmlnYXRvcl9jb250YWluZXIuanNwIiklPiIgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MCBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0xPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9BQ1RJT05TX0NPTlRBSU5FUiU+IiB0aXRsZT0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX0FDVElPTlNfQ09OVEFJTkVSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzZGxfYWN0aW9uc19jb250YWluZXIuanNwIiklPiIgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MCBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0xPgotICA8JQotICB9Ci0gICU+Ci08L2ZyYW1lc2V0PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfcHJvcGVydGllc19jb250YWluZXIuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfcHJvcGVydGllc19jb250YWluZXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTY5MjAxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05UQUlORVIiKSU+PC90aXRsZT4KLTwvaGVhZD4KLTxmcmFtZXNldCByb3dzPSIzMywqIiBib3JkZXI9MCBiZ2NvbG9yPSIjRUNFOUQ4Ij4KLSAgPGZyYW1lIG5hbWU9IjwlPVdTRExGcmFtZU5hbWVzLldTRExfUFJPUEVSVElFU19UT09MQkFSJT4iIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19UT09MQkFSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzZGxfcHJvcGVydGllc190b29sYmFyLmpzcCIpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLSAgPGZyYW1lIG5hbWU9IjwlPVdTRExGcmFtZU5hbWVzLldTRExfUFJPUEVSVElFU19DT05URU5UJT4iIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05URU5UIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzZGxfcHJvcGVydGllc19jb250ZW50LmpzcCIpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfcHJvcGVydGllc19jb250ZW50LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJlNDgyNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BST1BFUlRJRVNfQ09OVEVOVCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotPCUKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzZGxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgaWYgKHNlbGVjdGVkTm9kZSAhPSBudWxsKQotICAgIHsKLSAgICAgICAgVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXI7Ci0gICAgICAgIGlmIChzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKQotICAgICAgICAgICAgdG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xNYW5hZ2VyKCk7Ci0gICAgICAgIFRvb2wgc2VsZWN0ZWRUb29sID0gdG9vbE1hbmFnZXIuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0gICAgICAgIGlmIChzZWxlY3RlZFRvb2wgIT0gbnVsbCAmJiBzZWxlY3RlZFRvb2wuZ2V0VG9vbFR5cGUoKSAhPSBUb29sVHlwZXMuQUNUSU9OKSB7Ci0gICAgICAgICU+Ci0gICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgbG9jYXRpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChzZWxlY3RlZFRvb2wuZ2V0Rm9ybUxpbmsoKSkpJT4iOwotICAgICAgICA8L3NjcmlwdD4KLSAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgJT4KLTx0YWJsZT4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgIDwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PX0FDVElPTl9TRUxFQ1RFRCIpJT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLSAgICAgICAgPCUKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAlPgotPHRhYmxlPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fTk9ERV9TRUxFQ1RFRCIpJT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLSAgICA8JQotICAgIH0KLSU+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX3Byb3BlcnRpZXNfdG9vbGJhci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9wcm9wZXJ0aWVzX3Rvb2xiYXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGEyNzQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX3Byb3BlcnRpZXNfdG9vbGJhci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzZGwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BST1BFUlRJRVNfVE9PTEJBUiIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90b29sYmFyLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9zY3JpcHRzL3dzZGxmcmFtZXNldHMuanNwIiBmbHVzaD0idHJ1ZSIvPiAgCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy90b29sYmFyLmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJ0b29sYmFyYm9keW1hcmdpbiI+Ci08ZGl2IGlkPSJ0b29sYmFyYm9yZGVyIj4KLSAgPGRpdiBpZD0idG9vbGJhciIgb25kYmxjbGljaz0icHJvY2Vzc0ZyYW1lc2V0U2l6ZXMoZG9jdW1lbnQuZm9ybXNbMF0pIj4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUFjdGlvbiIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGZvcm1BY3Rpb24uYXBwZW5kKCJ3c2RsL2FjdGlvbnMvUmVzaXplV1NETEZyYW1lc0FjdGlvbkpTUC5qc3AiKTsKLSU+ICAKLTwvanNwOnVzZUJlYW4+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1GcmFtZU5hbWUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICAgZm9ybUZyYW1lTmFtZS5hcHBlbmQoV1NETEZyYW1lTmFtZXMuV1NETF9QUk9QRVJUSUVTX0NPTlRBSU5FUik7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NkbC9mb3Jtcy9Qcm9jZXNzV1NETEZyYW1lc2V0c0Zvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PTI1IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2FjdGlvbnMuZ2lmIikpJT4iIGFsdD0iIiB3aWR0aD0xNiBoZWlnaHQ9MTY+PC90ZD4KLTwlCi0gICBTdHJpbmcgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IG51bGw7Ci0gICBpZiAod3NkbFBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpLmVuZHNXaXRoKCIxMDAlIikpCi0gICB7Ci0gICAgIGlmICh3c2RsUGVyc3BlY3RpdmUuZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpLnN0YXJ0c1dpdGgoIjEwMCUiKSkKLSAgICAgICBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX1JFU1RPUkUiKTsKLSAgIH0KLSAgIGlmIChkb3VibGVDbGlja0NvbHVtblRpdGxlID09IG51bGwpCi0gICAgIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9ET1VCTEVfQ0xJQ0tfVE9fTUFYSU1JWkUiKTsKLSU+ICAgICAgICAKLSAgICAgICAgPHRkIGlkPSJkb3VibGVjbGlja2NvbHVtbiIgdGl0bGU9IjwlPWRvdWJsZUNsaWNrQ29sdW1uVGl0bGUlPiIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIqIiBoZWlnaHQ9MjUgbm93cmFwIGNsYXNzPSJ0ZXh0Ij48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9BQ1RJT05TIiklPjwvdGQ+Ci08JQotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NkbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBpZiAoc2VsZWN0ZWROb2RlICE9IG51bGwpIHsKLSAgICAgICAgVG9vbE1hbmFnZXIgdG9vbE1hbmFnZXI7Ci0gICAgICAgIGlmIChzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCkgPT0gQWN0aW9uSW5wdXRzLlZJRVdJRF9ERUZBVUxUKQotICAgICAgICAgICAgdG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Vmlld1Rvb2xNYW5hZ2VyKCk7Ci0gICAgICAgIGZvcihpbnQgaT0wOyBpPHRvb2xNYW5hZ2VyLmdldE51bWJlck9mVG9vbHMoKTsgaSsrKSB7Ci0gICAgICAgICAgICBUb29sIHRvb2wgPSAoVG9vbCl0b29sTWFuYWdlci5nZXRUb29sKGkpOwotICAgICAgICAgICAgJT4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PCU9dG9vbC5yZW5kZXJUb29sKHJlc3BvbnNlLGNvbnRyb2xsZXIpJT48L3RkPgotICAgICAgICAgICAgPCUKLSAgICAgICAgfQotICAgIH0KLSU+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZGl2PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9yZXN1bHRfY29udGVudC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9yZXN1bHRfY29udGVudC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MjcxMjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfcmVzdWx0X2NvbnRlbnQuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBXU0RMUGVyc3BlY3RpdmUgd3NkbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0RMUGVyc3BlY3RpdmUoKTsKLSAgIGludCB2aWV3SUQgPSB3c2RsUGVyc3BlY3RpdmUuZ2V0U3RhdHVzQ29udGVudFR5cGUoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfQ09OVEVOVCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy90YWJsZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL3BhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICBmdW5jdGlvbiBzd2l0Y2hSZWFkT25seUZyYWdtZW50c1ZpZXcoKSB7Ci0gICAgcGVyc3BlY3RpdmVXb3JrQXJlYS5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzZGwvYWN0aW9ucy9Td2l0Y2hSZWFkT25seUZyYWdtZW50Vmlld3NBY3Rpb25KU1AuanNwIikpJT4iOwotICB9Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgIDx0cj4KLSAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIGNsYXNzPSJsYWJlbHMiPgotPCUKLSAgICAgICAgaWYgKHZpZXdJRCA9PSB3c2RsUGVyc3BlY3RpdmUuU1RBVFVTX0NPTlRFTlRfUkVTVUxUX1NPVVJDRSkKLSAgICAgICAgeyAgICAgCi0lPgotICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6c3dpdGNoUmVhZE9ubHlGcmFnbWVudHNWaWV3KCkiIHRpdGxlPSI8JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1NXSVRDSF9UT19GT1JNX1ZJRVciKSU+Ij48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MSU5LX0ZPUk0iKSU+PC9hPgotPCUKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSU+Ci0gICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpzd2l0Y2hSZWFkT25seUZyYWdtZW50c1ZpZXcoKSIgdGl0bGU9IjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfU1dJVENIX1RPX1NPVVJDRV9WSUVXIiklPiI+PCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTElOS19TT1VSQ0UiKSU+PC9hPgotPCUKLSAgICAgICAgfQotJT4gICAKLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTwlCi0gIGlmICh2aWV3SUQgPT0gd3NkbFBlcnNwZWN0aXZlLlNUQVRVU19DT05URU5UX1JFU1VMVF9TT1VSQ0UpCi0gIHsKLSU+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL2Zvcm1zL1JlYWRPbmx5RnJhZ21lbnRzU29hcFZpZXcuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgfQotICBlbHNlCi0gIHsKLSU+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2RsL2Zvcm1zL1JlYWRPbmx5RnJhZ21lbnRzRm9ybVZpZXcuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgfQotJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfc3RhdHVzX2NvbnRhaW5lci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9zdGF0dXNfY29udGFpbmVyLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA4ODQyNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9zdGF0dXNfY29udGFpbmVyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0gICBTdHJpbmcgc3RhdHVzQ29udGVudFNyYyA9ICJ3c2RsX3N0YXR1c19jb250ZW50LmpzcCI7Ci0gICBzd2l0Y2ggKHdzZGxQZXJzcGVjdGl2ZS5nZXRTdGF0dXNDb250ZW50VHlwZSgpKQotICAgewotICAgICBjYXNlIFdTRExQZXJzcGVjdGl2ZS5TVEFUVVNfQ09OVEVOVF9SRVNVTFRfRk9STToKLSAgICAgICBzdGF0dXNDb250ZW50U3JjID0gIndzZGxfcmVzdWx0X2NvbnRlbnQuanNwIjsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBXU0RMUGVyc3BlY3RpdmUuU1RBVFVTX0NPTlRFTlRfUkVTVUxUX1NPVVJDRToKLSAgICAgCXN0YXR1c0NvbnRlbnRTcmMgPSAid3NkbF9yZXN1bHRfY29udGVudC5qc3AiOwotICAgICAJYnJlYWs7Ci0gICB9Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfU1RBVFVTX0NPTlRBSU5FUiIpJT48L3RpdGxlPgotPC9oZWFkPgotPGZyYW1lc2V0IHJvd3M9IjMzLCoiIGJvcmRlcj0wIGJnY29sb3I9IiNFQ0U5RDgiPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9TVEFUVVNfVE9PTEJBUiU+IiB0aXRsZT0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1NUQVRVU19UT09MQkFSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzZGxfc3RhdHVzX3Rvb2xiYXIuanNwIiklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotICA8ZnJhbWUgbmFtZT0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9TVEFUVVNfQ09OVEVOVCU+IiB0aXRsZT0iPCU9d3NkbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1NUQVRVU19DT05URU5UIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoc3RhdHVzQ29udGVudFNyYyklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPC9mcmFtZXNldD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX3N0YXR1c19jb250ZW50LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbC93c2RsX3N0YXR1c19jb250ZW50LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM3OTFkYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9zdGF0dXNfY29udGVudC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyNyAgIDEyNzQ0MyBqZXNwZXJAc2Vsc2thYmV0Lm9yZyAtIEplc3BlciBTIE1vbGxlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NkbC5wZXJzcGVjdGl2ZS4qLAotCW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFdTRExQZXJzcGVjdGl2ZSB3c2RsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTRExQZXJzcGVjdGl2ZSgpOwotICAgd3NkbFBlcnNwZWN0aXZlLnNldFN0YXR1c0NvbnRlbnRUeXBlKFdTRExQZXJzcGVjdGl2ZS5TVEFUVVNfQ09OVEVOVF9ERUZBVUxUKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXdzZGxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfQ09OVEVOVCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICA8dGFibGU+Ci0gICAgPHRyPgotICAgICAgPHRkPgotICAgICAgICA8cHJlPgotPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllc1N0cmljdCh3c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuZ2V0TWVzc2FnZXNGcm9tTGlzdCgpKSU+Ci0gICAgICAgIDwvcHJlPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9zdGF0dXNfdG9vbGJhci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGwvd3NkbF9zdGF0dXNfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZjI3YzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsL3dzZGxfc3RhdHVzX3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2RsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NETFBlcnNwZWN0aXZlIHdzZGxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NETFBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2RsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfU1RBVFVTX1RPT0xCQVIiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3MvdG9vbGJhci5jc3MiKSklPiI+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvc2NyaXB0cy93c2RsZnJhbWVzZXRzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL3Rvb2xiYXIuanMiKSklPiI+Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9InRvb2xiYXJib2R5bWFyZ2luIj4KLTxkaXYgaWQ9InRvb2xiYXJib3JkZXIiPgotICA8ZGl2IGlkPSJ0b29sYmFyIiBvbmRibGNsaWNrPSJwcm9jZXNzRnJhbWVzZXRTaXplcyhkb2N1bWVudC5mb3Jtc1swXSkiPgotPGpzcDp1c2VCZWFuIGlkPSJmb3JtQWN0aW9uIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgZm9ybUFjdGlvbi5hcHBlbmQoIndzZGwvYWN0aW9ucy9SZXNpemVXU0RMRnJhbWVzQWN0aW9uSlNQLmpzcCIpOwotJT4gIAotPC9qc3A6dXNlQmVhbj4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUZyYW1lTmFtZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gICBmb3JtRnJhbWVOYW1lLmFwcGVuZChXU0RMRnJhbWVOYW1lcy5XU0RMX1NUQVRVU19DT05UQUlORVIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzZGwvZm9ybXMvUHJvY2Vzc1dTRExGcmFtZXNldHNGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGhlaWdodD0yNSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYm9yZGVyPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgd2lkdGg9MjUgaGVpZ2h0PTI1PjxpbWcgY2xhc3M9Im5vcm1hbCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9zdGF0dXMuZ2lmIikpJT4iIGFsdD0iIiB3aWR0aD0xNiBoZWlnaHQ9MTY+PC90ZD4KLTwlCi0gICBTdHJpbmcgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IG51bGw7Ci0gICBpZiAod3NkbFBlcnNwZWN0aXZlLmdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0Q29scygpLmVuZHNXaXRoKCIxMDAlIikpCi0gICB7Ci0gICAgIGlmICh3c2RsUGVyc3BlY3RpdmUuZ2V0QWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0Um93cygpLmVuZHNXaXRoKCIxMDAlIikpCi0gICAgICAgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0RPVUJMRV9DTElDS19UT19SRVNUT1JFIik7Ci0gICB9Ci0gICBpZiAoZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9PSBudWxsKQotICAgICBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX01BWElNSVpFIik7Ci0lPiAgICAgICAgCi0gICAgICAgIDx0ZCBpZD0iZG91YmxlY2xpY2tjb2x1bW4iIHRpdGxlPSI8JT1kb3VibGVDbGlja0NvbHVtblRpdGxlJT4iIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iKiIgaGVpZ2h0PTI1IG5vd3JhcCBjbGFzcz0idGV4dCI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfU1RBVFVTIiklPjwvdGQ+Ci08JQotICAgU3RyaW5nIGFsdENsZWFyID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfQ0xFQVIiKTsKLSU+ICAgICAgICAgICAKLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2RsL3dzZGxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iIHRhcmdldD0iPCU9V1NETEZyYW1lTmFtZXMuV1NETF9TVEFUVVNfQ09OVEVOVCU+Ij48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPiIgd2lkdGg9MTYgaGVpZ2h0PTE2IG9uTW91c2VPdmVyPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZW92ZXIodGhpcykiIG9uTW91c2VPdXQ9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPic7bW91c2VvdXQodGhpcykiIG9uTW91c2VEb3duPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZWRvd24odGhpcykiIG9uTW91c2VVcD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9lbmFibGVkLmdpZiIpKSU+Jzttb3VzZXVwKHRoaXMpIiBhbHQ9IjwlPWFsdENsZWFyJT4iIHRpdGxlPSI8JT1hbHRDbGVhciU+Ij48L2E+PC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPC9kaXY+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbF9icm93c2VyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbF9icm93c2VyLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDliNmNkZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGxfYnJvd3Nlci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5uZXQuKiIgJT4KLQotPCUKLSAgIFN0cmluZyBzZXNzaW9uSWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuU0VTU0lPTklEKTsKLSAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSWQpOwotICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpY3VycmVudFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci0gICBTdHJpbmcgd3NkbFR5cGVTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuV1NETF9UWVBFKTsKLSAgIGludCB3c2RsVHlwZSA9IEFjdGlvbklucHV0cy5XU0RMX1RZUEVfU0VSVklDRV9JTlRFUkZBQ0U7Ci0gICB0cnkKLSAgIHsKLSAgICAgd3NkbFR5cGUgPSBJbnRlZ2VyLnBhcnNlSW50KHdzZGxUeXBlU3RyaW5nKTsKLSAgIH0KLSAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkKLSAgIHsKLSAgIH0KLSAgIGNvbnRyb2xsZXIuc2V0V1NETFR5cGUod3NkbFR5cGUpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+Ci08JQotICAgU3RyaW5nIHdzZGxTb3VyY2U7Ci0gICBpZiAod3NkbFR5cGUgPT0gQWN0aW9uSW5wdXRzLldTRExfVFlQRV9TRVJWSUNFX0lOVEVSRkFDRSkKLSAgICAgd3NkbFNvdXJjZSA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiV1NETF9UWVBFX1NFUlZJQ0VfSU5URVJGQUNFUyIpOwotICAgZWxzZQotICAgICB3c2RsU291cmNlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJXU0RMX1RZUEVfU0VSVklDRVMiKTsKLSAgICAgCi0gICBTdHJpbmdCdWZmZXIgc2Vzc2lvbklkUGFyYW0gPSBuZXcgU3RyaW5nQnVmZmVyKEFjdGlvbklucHV0cy5TRVNTSU9OSUQpOwotICAgc2Vzc2lvbklkUGFyYW0uYXBwZW5kKCc9JykuYXBwZW5kKHNlc3Npb25JZCk7Ci0gICAKLSAgIFN0cmluZ0J1ZmZlciB0b29sYmFyTGluayA9IG5ldyBTdHJpbmdCdWZmZXIoIndzZGxfdG9vbGJhci5qc3A/Iik7Ci0gICB0b29sYmFyTGluay5hcHBlbmQoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCkuYXBwZW5kKCc9JykuYXBwZW5kKHNlc3Npb25JZCk7Ci0lPgotICAgIDwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiVElUTEVfV1NETF9CUk9XU0VSIix3c2RsU291cmNlKSU+Ci0gIDwvdGl0bGU+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgcm93cz0iMzMsKiIgYm9yZGVyPTAgYmdjb2xvcj0iI0VDRTlEOCI+Ci0gIDxmcmFtZSBuYW1lPSI8JT1GcmFtZU5hbWVzLldTRExfVE9PTEJBUiU+IiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9XU0RMX1RPT0xCQVIiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCh0b29sYmFyTGluay50b1N0cmluZygpKSklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotICA8ZnJhbWUgbmFtZT0iPCU9RnJhbWVOYW1lcy5XU0RMX0NPTlRFTlQlPiIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfV1NETF9DT05URU5UIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoUHJveHlMb2FkUGFnZUFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlc3Npb25JZCwid3NkbF9jb250ZW50LmpzcCIpKSklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPC9mcmFtZXNldD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbF9jb250ZW50LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NkbF9jb250ZW50LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyM2YyNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGxfY29udGVudC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MDYgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMTcgICAxMjc0NTYgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqIDIwMDYwNTI0ICAgMTQyNDk5IGplZmZsaXVAY2EuaWJtLmNvbSAtIEplZmZyZXkgTGl1Ci0gKiAyMDA3MDEwOSAgIDE2OTU1MyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICogMjAwODA2MTggICAxODY0NTYgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWsKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51ZGRpLnV0aWwuVWRkaTRqSGVscGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZmF2b3JpdGVzLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5mYXZvcml0ZXMuZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZUluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlci5XZWJTZXJ2aWNlRmluZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NmaW5kZXIuV2ViU2VydmljZUNhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXgud3NkbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5uZXQuKiIgJT4KLQotPCUKLSAgIFN0cmluZyBzZXNzaW9uSWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBY3Rpb25JbnB1dHMuU0VTU0lPTklEKTsKLSAgIEh0dHBTZXNzaW9uIGN1cnJlbnRTZXNzaW9uID0gKEh0dHBTZXNzaW9uKWFwcGxpY2F0aW9uLmdldEF0dHJpYnV0ZShzZXNzaW9uSWQpOwotICAgQ29udHJvbGxlciBjb250cm9sbGVyID0gKENvbnRyb2xsZXIpY3VycmVudFNlc3Npb24uZ2V0QXR0cmlidXRlKCJjb250cm9sbGVyIik7Ci0gICBpbnQgd3NkbFR5cGUgPSBjb250cm9sbGVyLmdldFdTRExUeXBlKCk7Ci0gICAKLSAgIFZlY3RvciB3c0luZm9DYWNoZSA9IG5ldyBWZWN0b3IoKTsKLSAgIGludCB3b3Jrc3BhY2VTdGFydCA9IC0xOwotICAgaW50IHdvcmtzcGFjZUVuZCAgID0gLTE7Ci0gICAKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KLSAgPHRpdGxlPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfV1NETF9DT05URU5UIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvcmVzdW1lcHJveHlsb2FkcGFnZS5qcyIpKSU+Ij4KLTwvc2NyaXB0PiAgCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgCi0gIAotICBmdW5jdGlvbiBmaWxsQ2F0ZWdvcmllcygpCi0gIHsKLSAgICB2YXIgeSA9IDA7Ci0gICAgdmFyIHggPSAwOwotICAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1BY3Rpb25JbnB1dHMuQ0FURUdPUlklPi5vcHRpb25zW3grK10gPSBuZXcgT3B0aW9uKCI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9BbGwiKSU+IiwiPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1dTRExfQWxsIiklPiIpOwotICAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1BY3Rpb25JbnB1dHMuQ0FURUdPUlklPi5vcHRpb25zW3grK10gPSBuZXcgT3B0aW9uKCI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9TT1VSQ0VfRkFWT1JJVEVTIiklPiIsIjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9XU0RMX1NPVVJDRV9GQVZPUklURVMiKSU+Iik7Ci08JQotICAgewotICAgICBXZWJTZXJ2aWNlQ2F0ZWdvcnlbXSBjYXRlZ29yaWVzID0gV2ViU2VydmljZUZpbmRlci5pbnN0YW5jZSgpLmdldFdlYlNlcnZpY2VDYXRlZ29yaWVzKCk7Ci0gICAgIGZvciAoaW50IGk9MDtpPGNhdGVnb3JpZXMubGVuZ3RoO2krKykKLSAgICAgewotICAgICAgIFN0cmluZyBsYWJlbCA9IEhUTUxVdGlscy5KU01hbmdsZShjYXRlZ29yaWVzW2ldLmdldExhYmVsKCkpOwotICAgICAgIGlmKGNhdGVnb3JpZXNbaV0uZ2V0SWQoKS5lcXVhbHMoIm9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlci5jYXRlZ29yeS53b3Jrc3BhY2UiKSl7Ci0lPgotICAgIHZhciB5ID0geDsKLTwlICAgIAotICAgICAgIH0gICAgCi0lPiAgICAKLSAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1BY3Rpb25JbnB1dHMuQ0FURUdPUlklPi5vcHRpb25zW3grK10gPSBuZXcgT3B0aW9uKCI8JT1sYWJlbCU+IiwiPCU9bGFiZWwlPiIpOwotPCUgICAgICAgCi0gICAgIH0KLSAgIH0gCi0lPgotICAgIGlmIChkb2N1bWVudC5mb3Jtc1swXS48JT1BY3Rpb25JbnB1dHMuQ0FURUdPUlklPi5vcHRpb25zLmxlbmd0aCA+IDApCi0gICAgewotICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uPCU9QWN0aW9uSW5wdXRzLkNBVEVHT1JZJT4ub3B0aW9uc1t5XS5zZWxlY3RlZCA9IHRydWU7Ci0gICAgICBmaWxsV1NETEZpbGVzQnlDYXRlZ29yeShkb2N1bWVudC5mb3Jtc1swXS48JT1BY3Rpb25JbnB1dHMuQ0FURUdPUlklPi5vcHRpb25zW3ldLnZhbHVlKTsKLSAgICB9Ci0gIAotICB9ICAgIAotICAKLSAgZnVuY3Rpb24gZmlsbFdlYlByb2plY3RzKCkKLSAgewotICAgIHZhciB4ID0gMDsKLTwlCi0gICB7Ci0gICAgIElXb3Jrc3BhY2VSb290IGlXb3Jrc3BhY2VSb290ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLSAgICAgSVByb2plY3RbXSBwcm9qZWN0cyA9IGlXb3Jrc3BhY2VSb290LmdldFByb2plY3RzKCk7Ci0gICAgIGZvciAoaW50IGk9MDtpPHByb2plY3RzLmxlbmd0aDtpKyspCi0gICAgIHsKLSAgICAgICBpZiAoIXByb2plY3RzW2ldLmlzT3BlbigpKQotICAgICAgICAgY29udGludWU7Ci0gICAgICAgU3RyaW5nIG5hbWUgPSBIVE1MVXRpbHMuSlNNYW5nbGUocHJvamVjdHNbaV0uZ2V0TmFtZSgpKTsKLSU+Ci0gICAgZG9jdW1lbnQuZm9ybXNbMF0uPCU9QWN0aW9uSW5wdXRzLlBST0pFQ1QlPi5vcHRpb25zW3grK10gPSBuZXcgT3B0aW9uKCI8JT1uYW1lJT4iLCI8JT1uYW1lJT4iKTsKLTwlCi0gICAgIH0KLSAgIH0KLSU+Ci0gICAgaWYgKGRvY3VtZW50LmZvcm1zWzBdLjwlPUFjdGlvbklucHV0cy5QUk9KRUNUJT4ub3B0aW9ucy5sZW5ndGggPiAwKQotICAgIHsKLSAgICAgIGRvY3VtZW50LmZvcm1zWzBdLjwlPUFjdGlvbklucHV0cy5QUk9KRUNUJT4ub3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7Ci0gICAgICBmaWxsV1NETEZpbGVzKGRvY3VtZW50LmZvcm1zWzBdLjwlPUFjdGlvbklucHV0cy5QUk9KRUNUJT4ub3B0aW9uc1swXS52YWx1ZSk7Ci0gICAgfQotICB9Ci0KLTwlISBwcml2YXRlIFZlY3RvciB3c2RsVVJMc18gPSBuZXcgVmVjdG9yKCk7ICU+Ci0KLSAgIGZ1bmN0aW9uIGZpbGxXU0RMRmlsZXNCeUNhdGVnb3J5KHdlYlNlcnZpY2VGaW5kZXJMYWJlbCkKLSAgIHsKLSAgICB2YXIgY3VycmVudE51bWJlck9mT3B0aW9ucyA9IGRvY3VtZW50LmZvcm1zWzBdLjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XRUJQUk9KRUNUX1dTRExfVVJMJT4ub3B0aW9ucy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaT0wO2k8Y3VycmVudE51bWJlck9mT3B0aW9ucztpKyspCi0gICAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV0VCUFJPSkVDVF9XU0RMX1VSTCU+Lm9wdGlvbnNbMF0gPSBudWxsOwotICAgIGlmICh3ZWJTZXJ2aWNlRmluZGVyTGFiZWwgPT0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9BbGwiKSklPiIpewotICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2plY3RzIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsgCi0gICAgICBmaWxsQWxsV1NETEZpbGVzKCk7Ci0gICAgfQotICAgIGlmICh3ZWJTZXJ2aWNlRmluZGVyTGFiZWwgPT0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9TT1VSQ0VfRkFWT1JJVEVTIikpJT4iKXsKLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9qZWN0cyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7IAotICAgICAgZmlsbEZhdm9yaXRlV1NETEZpbGVzKCk7Ci0gICAgfQotICAgIAotPCUKLSAgIHsKLSAgICAgICAgIAotICAgICBXZWJTZXJ2aWNlRmluZGVyIGZpbmRlciA9IFdlYlNlcnZpY2VGaW5kZXIuaW5zdGFuY2UoKTsKLSAgICAgV2ViU2VydmljZUNhdGVnb3J5W10gY2F0ZWdvcmllcyA9IGZpbmRlci5nZXRXZWJTZXJ2aWNlQ2F0ZWdvcmllcygpOwotICAgICBmb3IgKGludCBpPTA7aTxjYXRlZ29yaWVzLmxlbmd0aDtpKyspCi0gICAgIHsKLSAgICAgICBXZWJTZXJ2aWNlQ2F0ZWdvcnkgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2ldOwotJT4KLSAgICBpZiAod2ViU2VydmljZUZpbmRlckxhYmVsID09ICI8JT1IVE1MVXRpbHMuSlNNYW5nbGUoY2F0ZWdvcnkuZ2V0TGFiZWwoKSklPiIpCi0gICAgewotICAgIHZhciB4ID0gMDsKLSAgICAgICAgCi08JQotICAgICAgIEl0ZXJhdG9yIGl0ID0gZmluZGVyLmdldFdlYlNlcnZpY2VzQnlDYXRlZ29yeShjYXRlZ29yeSxudWxsKTsKLSAgICAgICBpZihjYXRlZ29yeS5nZXRJZCgpLmVxdWFscygib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzZmluZGVyLmNhdGVnb3J5LndvcmtzcGFjZSIpKXsKLQotICAgIAkgICB3b3Jrc3BhY2VTdGFydCA9IHdzSW5mb0NhY2hlLnNpemUoKTsKLSAgICAJICAgd29ya3NwYWNlRW5kICAgPSB3b3Jrc3BhY2VTdGFydDsKLSAgICAJICAgCi0gICAgCSAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgCSAgIHdzSW5mb0NhY2hlLmFkZChpdC5uZXh0KCkpOwotICAgICAgICAJICAgd29ya3NwYWNlRW5kKys7Ci0gICAgCSAgIH0KLSU+Ci0gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvamVjdHMiKS5zdHlsZS5kaXNwbGF5ID0gIiI7IAotICAgICAgZmlsbFdlYlByb2plY3RzKCk7Ci08JQotICAgICAgIH0KLSAgICAgICBlbHNlewotJT4KLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9qZWN0cyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gICAgICAKLTwlICAKLSAgICAgICAgIHdoaWxlKGl0Lmhhc05leHQoKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgV2ViU2VydmljZUluZm8gd3NpID0gKFdlYlNlcnZpY2VJbmZvKWl0Lm5leHQoKTsKLSAgICAgICAgICAgU3RyaW5nIHdzZGwgPSBIVE1MVXRpbHMuSlNNYW5nbGUod3NpLmdldFdzZGxVUkwoKSk7Ci0lPgotICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uPCU9QWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dFQlBST0pFQ1RfV1NETF9VUkwlPi5vcHRpb25zW3grK10gPSBuZXcgT3B0aW9uKCI8JT13c2RsJT4iLCAiPCU9d3NkbCU+Iik7IAotPCUKLSAgICAgICAgICAgd3NJbmZvQ2FjaGUuYWRkKHdzaSk7Ci0gICAgICAgICB9Ci0gICAgICAgfQotJT4KLSAgICB9Ci08JQotICAgICB9Ci0gICB9Ci0lPgotICB9Ci0gIAotICBmdW5jdGlvbiBmaWxsQWxsV1NETEZpbGVzKCkKLSAgewotICAgIHZhciB4ID0gMDsKLSAgICB2YXIgY3VycmVudE51bWJlck9mT3B0aW9ucyA9IGRvY3VtZW50LmZvcm1zWzBdLndlYlByb2plY3RXU0RMVVJMLm9wdGlvbnMubGVuZ3RoOwotICAgIGZvciAodmFyIGk9MDtpPGN1cnJlbnROdW1iZXJPZk9wdGlvbnM7aSsrKQotICAgICAgZG9jdW1lbnQuZm9ybXNbMF0ud2ViUHJvamVjdFdTRExVUkwub3B0aW9uc1swXSA9IG51bGw7Ci08JQotICAgICBUcmVlU2V0IHVybHMgPSBuZXcgVHJlZVNldCgpOwotICAgICBJdGVyYXRvciB3c0l0ZXJhdG9yID0gd3NJbmZvQ2FjaGUuaXRlcmF0b3IoKTsKLSAgICAgd2hpbGUgKHdzSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICB7Ci0gICAgICAgV2ViU2VydmljZUluZm8gd3NJbmZvID0gKFdlYlNlcnZpY2VJbmZvKXdzSXRlcmF0b3IubmV4dCgpOwotICAgICAgIFN0cmluZyB3c2RsID0gSFRNTFV0aWxzLkpTTWFuZ2xlKHdzSW5mby5nZXRXc2RsVVJMKCkpOwotICAgICAgIHVybHMuYWRkKHdzZGwpOwotICAgICB9Ci0gICAgIAotICAgICBGYXZvcml0ZXNQZXJzcGVjdGl2ZSBmYXZvcml0ZXNQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0RmF2b3JpdGVzUGVyc3BlY3RpdmUoKTsKLSAgICAgTm9kZU1hbmFnZXIgZmF2b3JpdGVzTm9kZU1hbmFnZXIgPSBmYXZvcml0ZXNQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgICBUcmVlRWxlbWVudCBmYXZvcml0ZXNNYWluRWxlbWVudCA9IGZhdm9yaXRlc05vZGVNYW5hZ2VyLmdldFJvb3ROb2RlKCkuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICAgVHJlZUVsZW1lbnQgZmF2b3JpdGVXU0RMU2VydmljZXNFbGVtZW50ID0gKFRyZWVFbGVtZW50KShmYXZvcml0ZXNNYWluRWxlbWVudC5nZXRFbGVtZW50cyhGYXZvcml0ZXNNb2RlbENvbnN0YW50cy5SRUxfV1NETF9TRVJWSUNFX0ZPTERFUl9OT0RFKS5uZXh0RWxlbWVudCgpKTsKLSAgICAgRW51bWVyYXRpb24gZmF2b3JpdGVXU0RMU2VydmljZUVsZW1lbnRzID0gZmF2b3JpdGVXU0RMU2VydmljZXNFbGVtZW50LmdldEVsZW1lbnRzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX1NFUlZJQ0VfTk9ERSk7Ci0gICAgIHdoaWxlIChmYXZvcml0ZVdTRExTZXJ2aWNlRWxlbWVudHMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgIHsKLSAgICAgICBGYXZvcml0ZXNXU0RMU2VydmljZUVsZW1lbnQgZmF2b3JpdGVXU0RMU2VydmljZUVsZW1lbnQgPSAoRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50KWZhdm9yaXRlV1NETFNlcnZpY2VFbGVtZW50cy5uZXh0RWxlbWVudCgpOwotICAgICAgIFN0cmluZyB3c2RsID0gSFRNTFV0aWxzLkpTTWFuZ2xlKChmYXZvcml0ZVdTRExTZXJ2aWNlRWxlbWVudC5nZXRTZXJ2aWNlKCkuZ2V0RGVzY3JpcHRpb25zKCkpWzBdLmdldExvY2F0aW9uKCkpOwotICAgICAgIHVybHMuYWRkKHdzZGwpOwotICAgICB9Ci0gICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gdXJscy5pdGVyYXRvcigpOwotICAgICB3aGlsZShpdGVyYXRvci5oYXNOZXh0KCkpewotICAgICAgIFN0cmluZyB3c2RsID0gSFRNTFV0aWxzLkpTTWFuZ2xlKGl0ZXJhdG9yLm5leHQoKS50b1N0cmluZygpKTsKLSU+Ci0gICAgIGRvY3VtZW50LmZvcm1zWzBdLjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XRUJQUk9KRUNUX1dTRExfVVJMJT4ub3B0aW9uc1t4KytdID0gbmV3IE9wdGlvbigiPCU9d3NkbCU+IiwgIjwlPXdzZGwlPiIpOyAKLTwlCi0KLSAgICAgfQotICAgCi0lPiAgICAgIAotICB9Ci0gIAotICBmdW5jdGlvbiBmaWxsV1NETEZpbGVzKHNlbGVjdGVkV2ViUHJvamVjdE5hbWUpCi0gIHsKLSAgICB2YXIgY3VycmVudE51bWJlck9mT3B0aW9ucyA9IGRvY3VtZW50LmZvcm1zWzBdLjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XRUJQUk9KRUNUX1dTRExfVVJMJT4ub3B0aW9ucy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaT0wO2k8Y3VycmVudE51bWJlck9mT3B0aW9ucztpKyspCi0gICAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV0VCUFJPSkVDVF9XU0RMX1VSTCU+Lm9wdGlvbnNbMF0gPSBudWxsOwotPCUKLSAgIHsKLQotICAgICBJV29ya3NwYWNlUm9vdCBpV29ya3NwYWNlUm9vdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCk7Ci0gICAgIElQcm9qZWN0W10gcHJvamVjdHMgPSBpV29ya3NwYWNlUm9vdC5nZXRQcm9qZWN0cygpOwotICAgICAgIAotICAgICBmb3IgKGludCBpPTA7aTxwcm9qZWN0cy5sZW5ndGg7aSsrKQotICAgICB7Ci0gICAgICAgaWYgKCFwcm9qZWN0c1tpXS5pc09wZW4oKSkKLSAgICAgICAgIGNvbnRpbnVlOwotICAgICAgIHsKLSU+Ci0gICAgaWYgKHNlbGVjdGVkV2ViUHJvamVjdE5hbWUgPT0gIjwlPUhUTUxVdGlscy5KU01hbmdsZShwcm9qZWN0c1tpXS5nZXROYW1lKCkpJT4iKQotICAgIHsKLSAgICAgIHZhciB4PTA7Ci08JQotICAgICAgICAgU3RyaW5nIHBsYXRmb3JtUHJvdG9jb2wgPSAicGxhdGZvcm06L3Jlc291cmNlIjsKLSAgICAgICAgIFN0cmluZyBodHRwUHJvdG9jb2wgPSAiaHR0cDovLyI7Ci0gICAgICAgICBTdHJpbmcgaHR0cHNQcm90b2NvbCA9ICJodHRwczovLyI7Ci0gICAgICAgICB3c2RsVVJMc18ucmVtb3ZlQWxsRWxlbWVudHMoKTsKLQotCQkgSXRlcmF0b3Igd3MgPSB3c0luZm9DYWNoZS5zdWJMaXN0KHdvcmtzcGFjZVN0YXJ0LCB3b3Jrc3BhY2VFbmQpLml0ZXJhdG9yKCk7Ci0KLSAgICAgICAgIHdoaWxlICh3cy5oYXNOZXh0KCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBXZWJTZXJ2aWNlSW5mbyB3c0luZm8gPSAoV2ViU2VydmljZUluZm8pd3MubmV4dCgpOwotICAgICAgICAgICAgU3RyaW5nIHVybCA9IHdzSW5mby5nZXRXc2RsVVJMKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAvLyBmaWx0ZXIgd3NkbCBVUkxzIHdpdGggc2FtZSBwcm9qZWN0IG5hbWUgYXMgc2VsZWN0ZWQgcHJvamVjdAotICAgICAgICAgIC8vIG9ubHkgbG9vayBhdCB3b3Jrc3BhY2UgVVJMcyByZXR1cm5lZCBmcm9tIHRoZSB3ZWIgc2VydmljZSBmaW5kZXIKLSAgICAgICAgICBpZiAodXJsLnN0YXJ0c1dpdGgocGxhdGZvcm1Qcm90b2NvbCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgIC8vc3RyaXAgb2ZmIHBsYXRmb3JtUHJvdG9jb2wgdG8gbG9vayBhdCB0aGUgd29ya3NwYWNlIHBhdGgKLSAgICAgICAgICAgICBQYXRoIHdzZGxQYXRoID0gbmV3IFBhdGgodXJsLnN1YnN0cmluZyhwbGF0Zm9ybVByb3RvY29sLmxlbmd0aCgpKzEpKTsKLSAgICAgICAgICAgICBTdHJpbmcgcGF0aFByb2pOYW1lID0gd3NkbFBhdGguc2VnbWVudCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAotCi0gICAgICAgICAgICAgaWYgKHBhdGhQcm9qTmFtZS5lcXVhbHMocHJvamVjdHNbaV0uZ2V0TmFtZSgpKSkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICB3c2RsVVJMc18uYWRkKHVybCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBhbHNvIGFkZCBhbnkgaHR0cCBvciBodHRwcyBVUkxzIHJldHVybmVkCi0gICAgICAgICAgZWxzZSBpZiAodXJsLnN0YXJ0c1dpdGgoaHR0cFByb3RvY29sKSB8fCB1cmwuc3RhcnRzV2l0aChodHRwc1Byb3RvY29sKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAgICB3c2RsVVJMc18uYWRkKHVybCk7Ci0gICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgaWYgKHdzZGxUeXBlID09IEFjdGlvbklucHV0cy5XU0RMX1RZUEVfU0VSVklDRV9JTlRFUkZBQ0UpCi0gICAgICAgICB7Ci0gICAgICAgICAKLSAgICAgICAgIH0KLQotICAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHdzZGxVUkxzXy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgICAgICAgewotICAgICAgICAgICAgIFN0cmluZyB3c2RsID0gSFRNTFV0aWxzLkpTTWFuZ2xlKGl0Lm5leHQoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV0VCUFJPSkVDVF9XU0RMX1VSTCU+Lm9wdGlvbnNbeCsrXSA9IG5ldyBPcHRpb24oIjwlPXdzZGwlPiIsICI8JT13c2RsJT4iKTsgCi0gICAgICAgICAgICAgPCUKLSAgICAgICAgIH0KLSU+Ci0gICAgfQotPCUKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLSU+Ci0gIH0KLSAgCi0gIGZ1bmN0aW9uIGZpbGxGYXZvcml0ZVdTRExGaWxlcygpCi0gIHsKLSAgICB2YXIgY3VycmVudE51bWJlck9mT3B0aW9ucyA9IGRvY3VtZW50LmZvcm1zWzBdLjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XRUJQUk9KRUNUX1dTRExfVVJMJT4ub3B0aW9ucy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaT0wO2k8Y3VycmVudE51bWJlck9mT3B0aW9ucztpKyspCi0gICAgICBkb2N1bWVudC5mb3Jtc1swXS48JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV0VCUFJPSkVDVF9XU0RMX1VSTCU+Lm9wdGlvbnNbMF0gPSBudWxsOwotICAgIHZhciB4ID0gMDsKLTwlCi0gICBFbnVtZXJhdGlvbiBmYXZvcml0ZVdTRExTZXJ2aWNlRWxlbWVudHMyID0gZmF2b3JpdGVXU0RMU2VydmljZXNFbGVtZW50LmdldEVsZW1lbnRzKEZhdm9yaXRlc01vZGVsQ29uc3RhbnRzLlJFTF9XU0RMX1NFUlZJQ0VfTk9ERSk7Ci0gICB3aGlsZSAoZmF2b3JpdGVXU0RMU2VydmljZUVsZW1lbnRzMi5oYXNNb3JlRWxlbWVudHMoKSkKLSAgIHsKLSAgICAgRmF2b3JpdGVzV1NETFNlcnZpY2VFbGVtZW50IGZhdm9yaXRlV1NETFNlcnZpY2VFbGVtZW50ID0gKEZhdm9yaXRlc1dTRExTZXJ2aWNlRWxlbWVudClmYXZvcml0ZVdTRExTZXJ2aWNlRWxlbWVudHMyLm5leHRFbGVtZW50KCk7Ci0gICAgIFN0cmluZyB1cmwgPSBIVE1MVXRpbHMuSlNNYW5nbGUoKGZhdm9yaXRlV1NETFNlcnZpY2VFbGVtZW50LmdldFNlcnZpY2UoKS5nZXREZXNjcmlwdGlvbnMoKSlbMF0uZ2V0TG9jYXRpb24oKSk7Ci0lPgotICAgIGRvY3VtZW50LmZvcm1zWzBdLjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XRUJQUk9KRUNUX1dTRExfVVJMJT4ub3B0aW9uc1t4KytdID0gbmV3IE9wdGlvbigiPCU9dXJsJT4iLCI8JT11cmwlPiIpOwotPCUgICAgIAotICAgfQotJT4gIAotICAKLSAgfQotICAKLSAgCi0gIAotICBmdW5jdGlvbiBzZXREZWZhdWx0cygpCi0gIHsKLSAgICBmaWxsQ2F0ZWdvcmllcygpOwotICAgIHZhciBsb2FkU2NyZWVuVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZFNjcmVlbiIpOwotICAgIGlmIChsb2FkU2NyZWVuVGFibGUucm93cy5sZW5ndGggPiAwKQotICAgICAgbG9hZFNjcmVlblRhYmxlLmRlbGV0ZVJvdygwKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpblNjcmVlbiIpLnN0eWxlLmRpc3BsYXkgPSAiIjsgICAgICAKLSAgfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLSAgPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPHRhYmxlIGlkPSJsb2FkU2NyZWVuIj4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkPgotICAgICAgICAgIDwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiTVNHX0xPQURfSU5fUFJPR1JFU1MiKSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gICAgPGRpdiBpZD0ibWFpblNjcmVlbiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgotICAgICAgPGZvcm0gc3R5bGU9Im1hcmdpbi10b3A6MCI+Ci0KLSAgICAgICAgPHRhYmxlPgotICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4gPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1dTRExfU09VUkNFIiklPiA8L3RkPgotICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDxkaXYgaWQ9IndvcmtiZW5jaCIgPgotICAgICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iIGNsYXNzPSJsYWJlbHMiPjxsYWJlbCBmb3I9IjwlPUFjdGlvbklucHV0cy5DQVRFR09SWSU+Ij48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9DQVRFR09SWSIpJT48L2xhYmVsPjwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICA8dGQgbm93cmFwPgotICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9IjwlPUFjdGlvbklucHV0cy5DQVRFR09SWSU+IiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuQ0FURUdPUlklPiIgb25DaGFuZ2U9ImZpbGxXU0RMRmlsZXNCeUNhdGVnb3J5KHRoaXMudmFsdWUpIiBjbGFzcz0ic2VsZWN0bGlzdCI+Ci0gICAgICAgICAgICAgICAgPC9zZWxlY3Q+Ci0gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fUkVGUkVTSCIpJT4iIG9uQ2xpY2s9ImRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCgpIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgPC90YWJsZT4gICAgCi0gICAgICAgICAgPGRpdiBpZD0icHJvamVjdHMiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4gICAgICAgICAgCi0gICAgICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPiAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTMwIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0ibGFiZWxzIj48bGFiZWwgZm9yPSJwcm9qZWN0Ij48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9TT1VSQ0VfV0VCUFJPSkVDVFMiKSU+PC9sYWJlbD48L3RkPgotICAgICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIG5vd3JhcD4KLSAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9InByb2plY3QiIG5hbWU9InByb2plY3QiIG9uQ2hhbmdlPSJmaWxsV1NETEZpbGVzKHRoaXMudmFsdWUpIiBjbGFzcz0ic2VsZWN0bGlzdCI+Ci0gICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KLSAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQlVUVE9OX1JFRlJFU0giKSU+IiBvbkNsaWNrPSJkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDwvdGFibGU+Ci0gICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgPHRhYmxlPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTEwIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0ibGFiZWxzIj48bGFiZWwgZm9yPSI8JT1BY3Rpb25JbnB1dHMuUVVFUllfSU5QVVRfV0VCUFJPSkVDVF9XU0RMX1VSTCU+Ij48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9VUkwiKSU+PC9sYWJlbD48L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9IjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XRUJQUk9KRUNUX1dTRExfVVJMJT4iIG5hbWU9IjwlPUFjdGlvbklucHV0cy5RVUVSWV9JTlBVVF9XRUJQUk9KRUNUX1dTRExfVVJMJT4iIGNsYXNzPSJzZWxlY3RsaXN0Ij4KLSAgICAgICAgICAgICAgICA8L3NlbGVjdD4KLSAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgPC90YWJsZT4KLSAgICAgICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTMwIHZhbGlnbj0iYm90dG9tIiBub3dyYXAgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQlVUVE9OX0dPIiklPiIgb25DbGljaz0idG9wLm9wZW5lci50YXJnZXRXU0RMVVJMRWxlbWVudC52YWx1ZT10aGlzLmZvcm0uPCU9QWN0aW9uSW5wdXRzLlFVRVJZX0lOUFVUX1dFQlBST0pFQ1RfV1NETF9VUkwlPi52YWx1ZTt0b3AuY2xvc2UoKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MzAgdmFsaWduPSJib3R0b20iIG5vd3JhcCBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9CVVRUT05fQ0FOQ0VMIiklPiIgb25DbGljaz0idG9wLmNsb3NlKCkiIGNsYXNzPSJidXR0b24iPgotICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDwvZGl2PgotICAgCi0gICAgICA8L2Zvcm0+Ci0gICAgPC9kaXY+Ci0gIDwvZGl2PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHNldERlZmF1bHRzKCk7Ci0gIHJlc3VtZVByb3h5TG9hZFBhZ2UoKTsKLTwvc2NyaXB0PiAgCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGxfdG9vbGJhci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzZGxfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNjNhYWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2RsX3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTwlCi0gICBTdHJpbmcgc2Vzc2lvbklkID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoQWN0aW9uSW5wdXRzLlNFU1NJT05JRCk7Ci0gICBIdHRwU2Vzc2lvbiBjdXJyZW50U2Vzc2lvbiA9IChIdHRwU2Vzc2lvbilhcHBsaWNhdGlvbi5nZXRBdHRyaWJ1dGUoc2Vzc2lvbklkKTsKLSAgIENvbnRyb2xsZXIgY29udHJvbGxlciA9IChDb250cm9sbGVyKWN1cnJlbnRTZXNzaW9uLmdldEF0dHJpYnV0ZSgiY29udHJvbGxlciIpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9XU0RMX1RPT0xCQVIiKSU+PC90aXRsZT4KLSAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3MvdG9vbGJhci5jc3MiKSklPiI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIG9uVW5sb2FkPSJ0b3Aub3BlbmVyLndzZGxXaW5kb3dDbG9zZWQ9dHJ1ZSIgY2xhc3M9InRvb2xiYXJib2R5bWFyZ2luIj4KLTxkaXYgaWQ9InRvb2xiYXJib3JkZXIiPgotICA8ZGl2IGlkPSJ0b29sYmFyIj4KLSAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGhlaWdodD0yNSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYm9yZGVyPTA+Ci0gICAgICA8dHI+Ci0gICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgd2lkdGg9MjUgaGVpZ2h0PTI1PjxpbWcgY2xhc3M9Im5vcm1hbCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy93c2RsLmdpZiIpKSU+IiBhbHQ9IiIgd2lkdGg9MTYgaGVpZ2h0PTE2PjwvdGQ+Ci0gICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiIHdpZHRoPSIqIiBoZWlnaHQ9MjUgbm93cmFwIGNsYXNzPSJ0ZXh0Ij48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9XU0RMX0JST1dTRVIiKSU+PC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPC9kaXY+Ci08L2Rpdj4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICB0b3Aub3BlbmVyLndzZGxXaW5kb3dDbG9zZWQgPSBmYWxzZTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2V4cGxvcmVyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NleHBsb3Jlci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMDBjMTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2V4cGxvcmVyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuVVJMVXRpbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC5FbnVtZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5uZXQuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5pby4qIiU+Ci0KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBmdW5jdGlvbiBpbml0V2luZG93TmFtZShuYW1lKQotICAgIHsKLSAgICAgIHdpbmRvdy5uYW1lID0gbmFtZTsKLSAgICB9Ci0gIDwvc2NyaXB0PgotICA8JQotICBTdHJpbmcgc2Vzc2lvbklkID0gc2Vzc2lvbi5nZXRJZCgpOwotICAlPgotICA8anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iPgotICAgIDwlIQotICAgIHByaXZhdGUgdm9pZCByZXNldENvbnRyb2xsZXIoU2VydmxldENvbnRleHQgYXBwbGljYXRpb24sU3RyaW5nIHNlc3Npb25JZCxIdHRwU2Vzc2lvbiBzZXNzaW9uLEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LENvbnRyb2xsZXIgY29udHJvbGxlcil7Ci0JICAgIC8vIEFkZCB0aGUgc2Vzc2lvbiB0byB0aGUgYXBwbGljYXRpb24uIFRoaXMgYWxsb3dzIHVzIHRvIHJlc3VycmVjdCB0aGUgc2Vzc2lvbiBldmVuIGlmIHRoZSBicm93c2VyIGNob29zZXMgbm90IHRvIHBhcnRpY2lwYXRlLgotCSAgICBhcHBsaWNhdGlvbi5zZXRBdHRyaWJ1dGUoc2Vzc2lvbklkLHNlc3Npb24pOwotICAgIAotCSAgICAvLyBTZXQgTWF4IGluYWN0aXZpdHkgdGltZSBvdXQgdmFsdWUgdG8gMzBtaW5zLgotCSAgICBzZXNzaW9uLnNldE1heEluYWN0aXZlSW50ZXJ2YWwoMTgwMCk7Ci0JCi0JICAgIC8vIExhdW5jaE9wdGlvbk1hbmFnZXIgKGJlbG93KSBoYW5kbGVzIG1vc3Qgb3B0aW9ucywKLQkgICAgLy8gYnV0IG5lZWQgdG8gZ2V0IHN0YXRlIGFuZCBpbnN0YWxsIGxvY2F0aW9ucyBlYXJsaWVyLAotCSAgICAvLyBzcGVjaWZpY2FsbHkgYmVmb3JlIGNvbnRyb2xsZXIuaW5pdCgpLgotCSAgICBFbnVtZXJhdGlvbiBwYXJhbU5hbWVzID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXJOYW1lcygpOwotCSAgICB3aGlsZSAocGFyYW1OYW1lcy5oYXNNb3JlRWxlbWVudHMoKSkKLQkgICAgewotCSAgICAgIFN0cmluZyBwYXJhbU5hbWUgPSAoU3RyaW5nKXBhcmFtTmFtZXMubmV4dEVsZW1lbnQoKTsKLQkgICAgICBTdHJpbmdbXSBwYXJhbVZhbHVlcyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyVmFsdWVzKHBhcmFtTmFtZSk7Ci0JICAgICAgaWYgKHBhcmFtVmFsdWVzICE9IG51bGwgJiYgcGFyYW1WYWx1ZXMubGVuZ3RoID4gMCkKLQkgICAgICB7Ci0JICAgICAgICBTdHJpbmcgZGVjb2RlZFBhcmFtTmFtZSA9IFVSTFV0aWxzLmRlY29kZShwYXJhbU5hbWUpOwotCSAgICAgICAgaWYgKGRlY29kZWRQYXJhbU5hbWUuZXF1YWxzKExhdW5jaE9wdGlvbnMuREVGQVVMVF9GQVZPUklURVNfTE9DQVRJT04pKQotCSAgICAgICAgewotCSAgICAgICAgICBjb250cm9sbGVyLnNldERlZmF1bHRGYXZvcml0ZXNMb2NhdGlvbihwYXJhbVZhbHVlc1swXSk7Ci0JICAgICAgICB9Ci0JICAgICAgICBlbHNlIGlmIChkZWNvZGVkUGFyYW1OYW1lLmVxdWFscyhMYXVuY2hPcHRpb25zLlNUQVRFX0xPQ0FUSU9OKSkKLQkgICAgICAgIHsKLQkgICAgICAgICAgY29udHJvbGxlci5zZXRTdGF0ZUxvY2F0aW9uKHBhcmFtVmFsdWVzWzBdKTsKLQkgICAgICAgIH0KLQkgICAgICB9Ci0JICAgIH0KLQkKLQkgICAgLy8gY29udHJvbGxlci5pbml0KCkKLQkgICAgY29udHJvbGxlci5pbml0KHNlc3Npb25JZCxhcHBsaWNhdGlvbixyZXF1ZXN0LmdldENvbnRleHRQYXRoKCkpOwotICAgIH0KLSAgICAlPgotICAgIDwlLy9yZXNldENvbnRyb2xsZXIoYXBwbGljYXRpb24sc2Vzc2lvbklkLHNlc3Npb24scmVxdWVzdCxjb250cm9sbGVyKTslPgotICA8L2pzcDp1c2VCZWFuPgotICA8JQotICAvLyBDaGVjayBpZiBzZXNzaW9uIENvbnRyb2xsZXIgbmVlZHMgdG8gYmUgcmUtaW5pdGlhbGl6ZWQKLSAgaWYgKGNvbnRyb2xsZXIuZ2V0U2Vzc2lvbklkKCk9PW51bGwpewotCSAgcmVzZXRDb250cm9sbGVyKGFwcGxpY2F0aW9uLHNlc3Npb25JZCxzZXNzaW9uLHJlcXVlc3QsY29udHJvbGxlcik7Ci0gIH0KLSAKLSAgLy8gcHJlbG9hZCBmcm9tIExhdW5jaE9wdGlvbk1hbmFnZXIKLSAgU3RyaW5nIGtleSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKFVSTFV0aWxzLmVuY29kZShXU0V4cGxvcmVyQ29udGV4dC5JRCkpOwotICBpZiAoa2V5ICE9IG51bGwgJiYga2V5Lmxlbmd0aCgpID4gMCkKLSAgewotICAgIExhdW5jaE9wdGlvbnNNYW5hZ2VyIG1hbmFnZXIgPSBMYXVuY2hPcHRpb25zTWFuYWdlci5nZXRJbnN0YW5jZSgpOwotICAgIG1hbmFnZXIubWFuYWdlKGtleSwgc2Vzc2lvbklkLCBhcHBsaWNhdGlvbik7Ci0gIH0KLSAgICAKLSAgJT4KLSAgPGpzcDppbmNsdWRlIHBhZ2U9Ii9hY3Rpb25lbmdpbmUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8dGl0bGU+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJUSVRMRV9XU0VYUExPUkVSIiklPjwvdGl0bGU+Ci08L2hlYWQ+Ci08JQotLy8gcmVzZXQgcGVyc3BlY3RpdmUgY29udGVudCB0byBibGFuawotY29udHJvbGxlci5lbmFibGVQZXJzcGVjdGl2ZUNvbnRlbnRCbGFuayh0cnVlKTsKLSU+Ci08ZnJhbWVzZXQgcm93cz0iMCwzNSwqIiBib3JkZXI9MCBvbmxvYWQ9ImluaXRXaW5kb3dOYW1lKCc8JT1GcmFtZU5hbWVzLldJTkRPV19OQU1FX1dTRVhQTE9SRVJfSlNQJT4nKSI+Ci0gIDxmcmFtZSBuYW1lPSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1BFUlNQRUNUSVZFX1dPUktBUkVBIiklPiIgZnJhbWVib3JkZXI9MCBub3Jlc2l6ZT4KLSAgPGZyYW1lIG5hbWU9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfVE9PTEJBUiU+IiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9QRVJTUEVDVElWRV9UT09MQkFSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInBlcnNwZWN0aXZlX3Rvb2xiYXIuanNwIikpJT4iIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTAgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBub3Jlc2l6ZT4KLSAgPGZyYW1lIG5hbWU9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfQ09OVEVOVCU+IiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9QRVJTUEVDVElWRV9DT05URU5UIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInBlcnNwZWN0aXZlX2NvbnRlbnQuanNwIikpJT4iIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTAgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MD4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvQ2xlYXJOb2RlQ29uZmlybUpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9DbGVhck5vZGVDb25maXJtSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjljNjgxNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9DbGVhck5vZGVDb25maXJtSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwOTA2IDE1NTQzNCAgIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBCYWNrIFNsYXNoICdcJyBub3QgYXBwZWFyaW5nIGluICJXU0lMIG5vIGxvbmdlciByZXNvbHZhYmxlIiBlcnJvciBtZXNzYWdlCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy5Xc2lsRnJhbWVOYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQ2xlYXJXU0lMQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuKiIlPgotCi08anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsUGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKGNvbmZpcm0oIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldE1lc3NhZ2UoIk1TR19DT05GSVJNX1JFTU9WRV9OT0RFIiwgY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKS5nZXROb2RlTWFuYWdlcigpLmdldFNlbGVjdGVkTm9kZSgpLmdldE5vZGVOYW1lKCkpKSU+IikpIHsKLSAgICAgICAgICAgIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KENsZWFyV1NJTEFjdGlvbi5nZXRBY3Rpb25MaW5rKGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKS5nZXRTZWxlY3RlZE5vZGUoKS5nZXROb2RlSWQoKSkpKSU+IjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHdzaWxQcm9wZXJ0aWVzQ29udGFpbmVyLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC93c2lsX3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCIpKSU+IjsKLSAgICAgICAgICAgIHdzaWxTdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC93c2lsX3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvQ2xlYXJXU0lMQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL0NsZWFyV1NJTEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYmIxM2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvQ2xlYXJXU0lMQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnVkZGkuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQ2xlYXJXU0lMQWN0aW9uIiU+Ci0KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxQYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICAgIENsZWFyV1NJTEFjdGlvbiBhY3Rpb24gPSBuZXcgQ2xlYXJXU0lMQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAgIC8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotICAgICBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvQ2xlYXJOb2RlQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL0ltcG9ydFdTRExUb0ZpbGVTeXN0ZW1BY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NWI5NDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEuaW8uKiIgJT4KLQotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbiBhY3Rpb24gPSBuZXcgSW1wb3J0V1NETFRvRmlsZVN5c3RlbUFjdGlvbihjb250cm9sbGVyKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9JbXBvcnRUb0ZpbGVTeXN0ZW1BY3Rpb24uaW5jIiAlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvSW1wb3J0V1NJTFRvRmlsZVN5c3RlbUFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9JbXBvcnRXU0lMVG9GaWxlU3lzdGVtQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVkY2Q4ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9JbXBvcnRXU0lMVG9GaWxlU3lzdGVtQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5pby4qIiAlPgotCi0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotICBJbXBvcnRXU0lMVG9GaWxlU3lzdGVtQWN0aW9uIGFjdGlvbiA9IG5ldyBJbXBvcnRXU0lMVG9GaWxlU3lzdGVtQWN0aW9uKGNvbnRyb2xsZXIpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9hY3Rpb25zL0ltcG9ydFRvRmlsZVN5c3RlbUFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9PcGVuV1NJTEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9PcGVuV1NJTEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxYjgzNzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvT3BlbldTSUxBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsUGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci0gIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi1PcGVuV1NJTEFjdGlvbiBhY3Rpb24gPSBuZXcgT3BlbldTSUxBY3Rpb24oY29udHJvbGxlcik7Ci0KLS8vIExvYWQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24gZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0LgotYm9vbGVhbiBpbnB1dHNWYWxpZCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci1pZiAoIWlucHV0c1ZhbGlkKSB7Ci0lPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICB3c2lsUHJvcGVydGllc0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfcHJvcGVydGllc19jb250ZW50LmpzcCIpKSU+IjsKLSAgICB3c2lsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gIDwvc2NyaXB0PgotPCUKLX0KLWVsc2UgewotICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotICBpZiAoYWN0aW9uUmVzdWx0KSB7Ci0lPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgaWYgKGlzTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcigpKSB7Ci0gICAgICAgIHdzaWxOYXZpZ2F0b3JDb250ZW50LmxvY2F0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9uYXZpZ2F0b3JfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICAgIHdzaWxQcm9wZXJ0aWVzQ29udGFpbmVyLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC93c2lsX3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCIpKSU+IjsKLSAgICAgICAgd3NpbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBwZXJzcGVjdGl2ZUNvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfcGVyc3BlY3RpdmVfY29udGVudC5qc3AiKSklPiI7Ci0gICAgPC9zY3JpcHQ+Ci08JQotICB9Ci0gIGVsc2UgewotJT4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgIHdzaWxQcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgICAgd3NpbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgIDwvc2NyaXB0PgotPCUKLSAgfQotfQotJT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL09wZW5XU0lMTGlua0FjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9PcGVuV1NJTExpbmtBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmRjYmVjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL09wZW5XU0lMTGlua0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxGcmFtZU5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5GcmFtZU5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5PcGVuV1NJTExpbmtBY3Rpb24iJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsUGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci0gIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+Ij4KLTwlCi0vLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi1PcGVuV1NJTExpbmtBY3Rpb24gYWN0aW9uID0gbmV3IE9wZW5XU0lMTGlua0FjdGlvbihjb250cm9sbGVyKTsKLQotLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi1ib29sZWFuIGlucHV0c1ZhbGlkID0gYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLWlmICghaW5wdXRzVmFsaWQpIHsKLSU+Ci0gIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIHdzaWxQcm9wZXJ0aWVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgIHdzaWxTdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC93c2lsX3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLSAgPC9zY3JpcHQ+Ci08JQotfQotZWxzZSB7Ci0gIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICBib29sZWFuIGFjdGlvblJlc3VsdCA9IGFjdGlvbi5leGVjdXRlKCk7Ci0gIGlmIChhY3Rpb25SZXN1bHQpIHsKLSU+Ci0gICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICBpZiAoaXNNaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyKCkpIHsKLSAgICAgICAgd3NpbE5hdmlnYXRvckNvbnRlbnQubG9jYXRpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC93c2lsX25hdmlnYXRvcl9jb250ZW50LmpzcCIpKSU+IjsKLSAgICAgICAgd3NpbFByb3BlcnRpZXNDb250YWluZXIubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfcHJvcGVydGllc19jb250YWluZXIuanNwIikpJT4iOwotICAgICAgICB3c2lsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHBlcnNwZWN0aXZlQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcCIpKSU+IjsKLSAgICA8L3NjcmlwdD4KLTwlCi0gIH0KLSAgZWxzZSB7Ci0lPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgd3NpbFByb3BlcnRpZXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC93c2lsX3Byb3BlcnRpZXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICB3c2lsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgPC9zY3JpcHQ+Ci08JQotICB9Ci19Ci0lPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvUmVmcmVzaEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9SZWZyZXNoQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVlY2M3NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9SZWZyZXNoQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuV3NpbEZyYW1lTmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy5BY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLioiJT4KLQotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbFBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICAgQWN0aW9uIGFjdGlvbiA9IFJlZnJlc2hBY3Rpb24ubmV3QWN0aW9uKHJlcXVlc3QsIGNvbnRyb2xsZXIpOwotCi0gICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICAgYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci0gICAgPCUKLSAgICBpZiAoIWFjdGlvblJlc3VsdCkgewotICAgICAgICBpZiAoYWN0aW9uIGluc3RhbmNlb2YgUmVmcmVzaFdTSUxBY3Rpb24pIHsKLSAgICAgICAgJT4KLSAgICAgICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9hY3Rpb25zL0NsZWFyTm9kZUNvbmZpcm1KU1AuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAlPgotICAgICAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgICAgICAgICAgd3NpbFByb3BlcnRpZXNDb250YWluZXIubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfcHJvcGVydGllc19jb250YWluZXIuanNwIikpJT4iOwotICAgICAgICAgICAgICAgIHdzaWxTdGF0dXNDb250ZW50LmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC93c2lsX3N0YXR1c19jb250ZW50LmpzcCIpKSU+IjsKLSAgICAgICAgICAgIDwvc2NyaXB0PgotICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICAgICU+Ci0gICAgPCUKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgJT4KLSAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgICAgICB3c2lsUHJvcGVydGllc0NvbnRhaW5lci5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiKSklPiI7Ci0gICAgICAgICAgICB3c2lsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwlCi0gICAgfQotICAgICU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9SZXNpemVXU0lMRnJhbWVzQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1Jlc2l6ZVdTSUxGcmFtZXNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmFjNTJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1Jlc2l6ZVdTSUxGcmFtZXNBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIC8vIENyZWF0ZSB0aGUgYWN0aW9uLgotICAgUmVzaXplV1NJTEZyYW1lc0FjdGlvbiBhY3Rpb24gPSBuZXcgUmVzaXplV1NJTEZyYW1lc0FjdGlvbihjb250cm9sbGVyKTsKLSAgIAotICAgLy8gUG9wdWxhdGUgdGhlIGFjdGlvbiB3aXRoIHRoZSByZXF1ZXN0IHByb3BlcnRpZXMuCi0gICBib29sZWFuIHJlc3VsdCA9IGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsZnJhbWVzZXRzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci08JQotICAgaWYgKHJlc3VsdCkKLSAgIHsKLSAgICAgYWN0aW9uLmV4ZWN1dGUoZmFsc2UpOwotICAgICAKLSAgICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0lPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGlmIChpc01pY3Jvc29mdEludGVybmV0RXhwbG9yZXIoKSkKLSAgewotICAgIHZhciBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldCA9IGdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0KCk7Ci0gICAgdmFyIGFjdGlvbnNDb250YWluZXJGcmFtZXNldCA9IGdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldCgpOwotICAgIHBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0LnNldEF0dHJpYnV0ZSgiY29scyIsIjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKSU+Iik7Ci0gICAgYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0LnNldEF0dHJpYnV0ZSgicm93cyIsIjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCklPiIpOwotICB9Ci0gIGVsc2UKLSAgICBwZXJzcGVjdGl2ZUNvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfcGVyc3BlY3RpdmVfY29udGVudC5qc3AiKSklPiI7Ci08L3NjcmlwdD4KLTwlCi0gICB9Ci0lPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvU2VsZWN0V1NJTE5vZGVBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvU2VsZWN0V1NJTE5vZGVBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Zjk0Yzg5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1NlbGVjdFdTSUxOb2RlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTE5vZGVBY3Rpb24iICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gICAgU2VsZWN0V1NJTE5vZGVBY3Rpb24gYWN0aW9uID0gbmV3IFNlbGVjdFdTSUxOb2RlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0gICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICAgYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLQotICAgIC8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotICAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLQotICAgIC8vIERldGVybWluZSBpZiB0aGUgYWN0aW9uIHdhcyBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LgotICAgIGJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSA9IGFjdGlvbi5pc0FkZGVkVG9IaXN0b3J5KCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvU2VsZWN0Tm9kZUFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9TZWxlY3RXU0lMVG9vbEFjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9TZWxlY3RXU0lMVG9vbEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzOGRmZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvU2VsZWN0V1NJTFRvb2xBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5TZWxlY3RXU0lMVG9vbEFjdGlvbiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgICBTZWxlY3RXU0lMVG9vbEFjdGlvbiBhY3Rpb24gPSBuZXcgU2VsZWN0V1NJTFRvb2xBY3Rpb24oY29udHJvbGxlcik7Ci0KLSAgICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgICBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0gICAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gICAgYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0gICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuCi0gICAgYm9vbGVhbiBpc0FkZGVkVG9IaXN0b3J5ID0gYWN0aW9uLmlzQWRkZWRUb0hpc3RvcnkoKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9TZWxlY3ROb2RlVG9vbEFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9Td2l0Y2hQZXJzcGVjdGl2ZUZyb21XU0lMQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1N3aXRjaFBlcnNwZWN0aXZlRnJvbVdTSUxBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2QwN2IyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1N3aXRjaFBlcnNwZWN0aXZlRnJvbVdTSUxBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIC8vIFByZXBhcmUgdGhlIGFjdGlvbgotICAgU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NJTEFjdGlvbiBhY3Rpb24gPSBuZXcgU3dpdGNoUGVyc3BlY3RpdmVGcm9tV1NJTEFjdGlvbihjb250cm9sbGVyKTsKLSAgIAotICAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gICBhY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotICAgCi0gICAvLyBSdW4gdGhlIGFjdGlvbiBhbmQgb2J0YWluIHRoZSByZXR1cm4gY29kZSAoZmFpbC9zdWNjZXNzKS4KLSAgIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLSAgIAotICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuCi0gICBib29sZWFuIGlzQWRkZWRUb0hpc3RvcnkgPSBhY3Rpb24uaXNBZGRlZFRvSGlzdG9yeSgpOwotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9zd2l0Y2hwZXJzcGVjdGl2ZS5qc3AiIGZsdXNoPSJ0cnVlIi8+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9XU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dTSUxJbXBvcnRXU0lMVG9Xb3JrYmVuY2hBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDUzMTMyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dTSUxJbXBvcnRXU0lMVG9Xb3JrYmVuY2hBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBXU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoQWN0aW9uIGFjdGlvbiA9IG5ldyBXU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoQWN0aW9uKGNvbnRyb2xsZXIpOwotJT4KLTwlQCBpbmNsdWRlIGZpbGU9Ii9hY3Rpb25zL0ltcG9ydFRvV29ya2JlbmNoQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dzaWxBZGRUb0Zhdm9yaXRlc0FjdGlvbkpTUC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9Xc2lsQWRkVG9GYXZvcml0ZXNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDk5Y2Y4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dzaWxBZGRUb0Zhdm9yaXRlc0FjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLldzaWxGcmFtZU5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLkZyYW1lTmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQWRkVG9GYXZvcml0ZXNBY3Rpb24iJT4KLQotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbFBhbmVzLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLS8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLUFkZFRvRmF2b3JpdGVzQWN0aW9uIGFjdGlvbiA9IEFkZFRvRmF2b3JpdGVzQWN0aW9uLm5ld0FjdGlvbihyZXF1ZXN0LCBjb250cm9sbGVyKTsKLQotLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi1hY3Rpb24ucG9wdWxhdGVQcm9wZXJ0eVRhYmxlKHJlcXVlc3QpOwotCi0vLyBSdW4gdGhlIGFjdGlvbgotYWN0aW9uLmV4ZWN1dGUoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci0gIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIHdzaWxQcm9wZXJ0aWVzQ29udGFpbmVyLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC93c2lsX3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCIpKSU+IjsKLSAgICB3c2lsU3RhdHVzQ29udGVudC5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9zdGF0dXNfY29udGVudC5qc3AiKSklPiI7Ci0gIDwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvV3NpbEFkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dzaWxBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMzU1ZWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvV3NpbEFkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5hY3Rpb25zLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDxqc3A6aW5jbHVkZSBwYWdlPSIvc2NyaXB0cy9wYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxQYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotICA8JQotICAvLyBQcmVwYXJlIHRoZSBhY3Rpb24uCi0gIEFjdGlvbiBhY3Rpb24gPSBBZGRUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5uZXdBY3Rpb24ocmVxdWVzdCwgY29udHJvbGxlcik7Ci0KLSAgLy8gTG9hZCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvbiBmcm9tIHRoZSBzZXJ2bGV0IHJlcXVlc3QuCi0gIGFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLSAgLy8gUnVuIHRoZSBhY3Rpb24gYW5kIG9idGFpbiB0aGUgcmV0dXJuIGNvZGUgKGZhaWwvc3VjY2VzcykuCi0gIGJvb2xlYW4gYWN0aW9uUmVzdWx0ID0gYWN0aW9uLmV4ZWN1dGUoKTsKLQotICBpZiAoYWN0aW9uUmVzdWx0KQotICB7Ci0gICAgY29udHJvbGxlci5nZXRVRERJUGVyc3BlY3RpdmUoKS5nZXROYXZpZ2F0b3JNYW5hZ2VyKCkubWFrZVNlbGVjdGVkTm9kZVZpc2libGUoKTsKLSAgJT4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgIHBlcnNwZWN0aXZlV29ya0FyZWEubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNob3dQZXJzcGVjdGl2ZUFjdGlvbi5nZXRBY3Rpb25MaW5rKEFjdGlvbklucHV0cy5QRVJTUEVDVElWRV9VRERJLGZhbHNlKSkpJT4iOwotICAgIDwvc2NyaXB0PgotICA8JQotICB9Ci0gIGVsc2UKLSAgewotICAlPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgd3NpbFByb3BlcnRpZXNDb250YWluZXIubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfcHJvcGVydGllc19jb250YWluZXIuanNwIikpJT4iOwotICAgICAgd3NpbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICAgIDwvc2NyaXB0PgotICA8JQotICB9Ci0gICU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9Xc2lsQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvV3NpbEFkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVkMjJmYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9Xc2lsQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb25KU1AuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmFjdGlvbnMuU2hvd1BlcnNwZWN0aXZlQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuV3NpbEZyYW1lTmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuV3NpbEFkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uIiU+Ci0KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxQYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLQotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iPgotPCUKLS8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLVdzaWxBZGRUb1dTRExQZXJzcGVjdGl2ZUFjdGlvbiBhY3Rpb24gPSBuZXcgV3NpbEFkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLS8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi1pZiAoYWN0aW9uUmVzdWx0KSB7Ci0lPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBwZXJzcGVjdGl2ZVdvcmtBcmVhLmxvY2F0aW9uID0gIjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChTaG93UGVyc3BlY3RpdmVBY3Rpb24uZ2V0QWN0aW9uTGluayhBY3Rpb25JbnB1dHMuUEVSU1BFQ1RJVkVfV1NETCxmYWxzZSkpKSU+IjsKLSAgPC9zY3JpcHQ+Ci08JQotfQotZWxzZSB7Ci0lPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICB3c2lsUHJvcGVydGllc0NvbnRhaW5lci5sb2NhdGlvbiA9ICI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvd3NpbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AiKSklPiI7Ci0gICAgd3NpbFN0YXR1c0NvbnRlbnQubG9jYXRpb24gPSAiPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL3dzaWxfc3RhdHVzX2NvbnRlbnQuanNwIikpJT4iOwotICA8L3NjcmlwdD4KLTwlCi19Ci0lPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvV3NpbENoZWNrRmF2b3JpdGVFeGlzdHNBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvV3NpbENoZWNrRmF2b3JpdGVFeGlzdHNBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmM5NjQ0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dzaWxDaGVja0Zhdm9yaXRlRXhpc3RzQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQWRkVG9GYXZvcml0ZXNBY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5IVE1MVXRpbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuRW51bWVyYXRpb24iJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsUGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiI+Ci0gIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL2FjdGlvbnMvV3NpbEFkZFRvRmF2b3JpdGVzQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij4KLTwlCi0gICAgRW51bWVyYXRpb24gcGFyYW1OYW1lcyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyTmFtZXMoKTsKLSAgICB3aGlsZSAocGFyYW1OYW1lcy5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgU3RyaW5nIHBhcmFtTmFtZSA9IChTdHJpbmcpcGFyYW1OYW1lcy5uZXh0RWxlbWVudCgpOwotICAgICAgU3RyaW5nW10gcGFyYW1WYWx1ZXMgPSByZXF1ZXN0LmdldFBhcmFtZXRlclZhbHVlcyhwYXJhbU5hbWUpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbVZhbHVlcy5sZW5ndGg7IGkrKykgewotJT4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9cGFyYW1OYW1lJT4iIHZhbHVlPSI8JT1wYXJhbVZhbHVlc1tpXSU+Ij4KLTwlCi0gICAgICB9Ci0gICAgfQotJT4KLSAgPC9mb3JtPgotPC9ib2R5PgotPC9odG1sPgotPCUKLWlmIChyZXF1ZXN0LmdldFBhcmFtZXRlcihXc2lsQWN0aW9uSW5wdXRzLk1VTFRJUExFX0xJTktfQUNUSU9OKSA9PSBudWxsKSB7Ci0gIC8vIFByZXBhcmUgdGhlIGFjdGlvbi4KLSAgQWRkVG9GYXZvcml0ZXNBY3Rpb24gYWN0aW9uID0gQWRkVG9GYXZvcml0ZXNBY3Rpb24ubmV3QWN0aW9uKHJlcXVlc3QsIGNvbnRyb2xsZXIpOwotICAvLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLSAgYWN0aW9uLnBvcHVsYXRlUHJvcGVydHlUYWJsZShyZXF1ZXN0KTsKLSAgaWYgKGFjdGlvbi5mYXZvcml0ZUV4aXN0cygpKSB7Ci0lPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgaWYgKGNvbmZpcm0oIjwlPUhUTUxVdGlscy5KU01hbmdsZShjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpLmdldE1lc3NhZ2UoIk1TR19RVUVTVElPTl9PVkVSV1JJVEVfRkFWT1JJVEVTIikpJT4iKSkKLSAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7Ci0gICAgPC9zY3JpcHQ+Ci08JQotICB9Ci0gIGVsc2UgewotJT4KLSAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOwotICAgIDwvc2NyaXB0PgotPCUKLSAgfQotfQotZWxzZSB7Ci0lPgotICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsKLSAgPC9zY3JpcHQ+Ci08JQotfQotJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dzaWxJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvV3NpbEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbkpTUC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYWFjNjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvV3NpbEltcG9ydFdTRExUb1dvcmtiZW5jaEFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFdzaWxJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb24gYWN0aW9uID0gbmV3IFdzaWxJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb24oY29udHJvbGxlcik7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvSW1wb3J0VG9Xb3JrYmVuY2hBY3Rpb24uaW5jIiAlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvV3NpbExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb25KU1AuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2FjdGlvbnMvV3NpbExhdW5jaFdlYlNlcnZpY2VXaXphcmRBY3Rpb25KU1AuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODRjODM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dzaWxMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uSlNQLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFdzaWxMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uIGFjdGlvbiA9IG5ldyBXc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZEFjdGlvbihjb250cm9sbGVyKTsKLSU+Ci08JUAgaW5jbHVkZSBmaWxlPSIvYWN0aW9ucy9MYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uLmluYyIgJT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dzaWxUb2dnbGVOb2RlQWN0aW9uSlNQLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9hY3Rpb25zL1dzaWxUb2dnbGVOb2RlQWN0aW9uSlNQLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgyY2RiMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvYWN0aW9ucy9Xc2lsVG9nZ2xlTm9kZUFjdGlvbkpTUC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uYWN0aW9ucy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotLy8gUHJlcGFyZSB0aGUgYWN0aW9uLgotV3NpbFRvZ2dsZU5vZGVBY3Rpb24gYWN0aW9uID0gbmV3IFdzaWxUb2dnbGVOb2RlQWN0aW9uKGNvbnRyb2xsZXIpOwotCi0vLyBMb2FkIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdC4KLWFjdGlvbi5wb3B1bGF0ZVByb3BlcnR5VGFibGUocmVxdWVzdCk7Ci0KLS8vIFJ1biB0aGUgYWN0aW9uIGFuZCBvYnRhaW4gdGhlIHJldHVybiBjb2RlIChmYWlsL3N1Y2Nlc3MpLgotYm9vbGVhbiBhY3Rpb25SZXN1bHQgPSBhY3Rpb24uZXhlY3V0ZSgpOwotCi0vLyBEZXRlcm1pbmUgaWYgdGhlIGFjdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4KLWJvb2xlYW4gaXNBZGRlZFRvSGlzdG9yeSA9IGFjdGlvbi5pc0FkZGVkVG9IaXN0b3J5KCk7Ci0lPgotPCVAIGluY2x1ZGUgZmlsZT0iL2FjdGlvbnMvVG9nZ2xlTm9kZUFjdGlvbi5pbmMiICU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvZm9ybXMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0qLmphdmEKLSouY2xhc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9PcGVuV1NJTEZvcm0uanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL09wZW5XU0lMRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYjM1NjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL09wZW5XU0lMRm9ybS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy5GcmFtZU5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkZvcm1Ub29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5IVE1MVXRpbHMiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLVdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotRm9ybVRvb2wgZm9ybVRvb2wgPSAoRm9ybVRvb2wpd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWROb2RlKCkuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2woKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX09QRU5fV1NJTCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxQYW5lcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXN1Ym1pdC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXV0aWxzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC9hY3Rpb25zL09wZW5XU0lMQWN0aW9uSlNQLmpzcCIpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBvblN1Ym1pdD0icmV0dXJuIGhhbmRsZVN1Ym1pdCh0aGlzKSI+Ci0gIDwlCi0gIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJ3c2lsL2ltYWdlcy9vcGVuX3dzaWxfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgU3RyaW5nIHRpdGxlID0gd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9PUEVOX1dTSUwiKTsKLSAgJT4KLSAgPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gIDx0YWJsZT4KLSAgICA8dHI+Ci0gICAgICA8dGQgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgIDwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX09QRU5fV1NJTF9ERVNDIiklPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPiAgICAgICAgCi0gIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+Ci0gICAgPHRyPgotICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgIDxsYWJlbCBmb3I9ImlucHV0X3dzaWxfdXJsIj48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiV1NJTF9VUkwiKSU+PC9sYWJlbD4KLSAgICAgICAgPCUKLSAgICAgICAgaWYgKCFmb3JtVG9vbC5pc0lucHV0VmFsaWQoV3NpbEFjdGlvbklucHV0cy5XU0lMX1VSTCkpIHsKLSAgICAgICAgJT4KLSAgICAgICAgICA8JT1IVE1MVXRpbHMucmVkQXN0ZXJpc2soKSU+Ci0gICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgICAgU3RyaW5nIHdzaWxVUkwgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFdzaWxBY3Rpb25JbnB1dHMuV1NJTF9VUkwpOwotICAgICAgICBpZiAod3NpbFVSTCA9PSBudWxsKQotICAgICAgICAgIHdzaWxVUkwgPSAiIjsKLSAgICAgICAgJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXRfd3NpbF91cmwiIG5hbWU9IjwlPVdzaWxBY3Rpb25JbnB1dHMuV1NJTF9VUkwlPiIgdmFsdWU9IjwlPUhUTUxVdGlscy5jaGFyYWN0ZXJzVG9IVE1MRW50aXRpZXNTdHJpY3Qod3NpbFVSTCklPiIgc2l6ZT0iNTAiIGNsYXNzPSJ0ZXh0ZW50ZXIiPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotICA8JQotICBTdHJpbmcgaW5zcGVjdGlvblR5cGVTdHJpbmcgPSAoU3RyaW5nKWZvcm1Ub29sLmdldFByb3BlcnR5KFdzaWxBY3Rpb25JbnB1dHMuV1NJTF9JTlNQRUNUSU9OX1RZUEUpOwotICBpbnQgaW5zcGVjdGlvblR5cGUgPSBXc2lsQWN0aW9uSW5wdXRzLldTSUxfREVUQUlMUzsKLSAgaWYgKGluc3BlY3Rpb25UeXBlU3RyaW5nICE9IG51bGwpCi0gICAgaW5zcGVjdGlvblR5cGUgPSBJbnRlZ2VyLnBhcnNlSW50KGluc3BlY3Rpb25UeXBlU3RyaW5nKTsKLSAgJT4KLSAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MD4KLSAgICA8dHI+Ci0gICAgICA8dGQgY2xhc3M9ImxhYmVscyIgaGVpZ2h0PTMwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgPGxhYmVsIGZvcj0iaW5zcGVjdGlvbl90eXBlIj48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9DSE9PU0VfV1NJTF9JTlNQRUNUSU9OX1RZUEUiKSU+PC9sYWJlbD4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQgdmFsaWduPSJib3R0b20iPgotICAgICAgICA8c2VsZWN0IGlkPSJpbnNwZWN0aW9uX3R5cGUiIG5hbWU9IjwlPVdzaWxBY3Rpb25JbnB1dHMuV1NJTF9JTlNQRUNUSU9OX1RZUEUlPiIgY2xhc3M9InNlbGVjdGxpc3QiPgotICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjwlPVdzaWxBY3Rpb25JbnB1dHMuV1NJTF9ERVRBSUxTJT4iIDwlIGlmIChpbnNwZWN0aW9uVHlwZSA9PSBXc2lsQWN0aW9uSW5wdXRzLldTSUxfREVUQUlMUykgeyAlPnNlbGVjdGVkPCUgfSAlPj48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9XU0lMIiklPgotICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjwlPVdzaWxBY3Rpb25JbnB1dHMuV1NETF9TRVJWSUNFUyU+IiA8JSBpZiAoaW5zcGVjdGlvblR5cGUgPT0gV3NpbEFjdGlvbklucHV0cy5XU0RMX1NFUlZJQ0VTKSB7ICU+c2VsZWN0ZWQ8JSB9ICU+PjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1dTRExfU0VSVklDRSIpJT4KLSAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI8JT1Xc2lsQWN0aW9uSW5wdXRzLlVERElfU0VSVklDRVMlPiIgPCUgaWYgKGluc3BlY3Rpb25UeXBlID09IFdzaWxBY3Rpb25JbnB1dHMuVURESV9TRVJWSUNFUykgeyAlPnNlbGVjdGVkPCUgfSAlPj48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VRERJX1NFUlZJQ0UiKSU+Ci0gICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9V3NpbEFjdGlvbklucHV0cy5VRERJX0JVU0lORVNTRVMlPiIgPCUgaWYgKGluc3BlY3Rpb25UeXBlID09IFdzaWxBY3Rpb25JbnB1dHMuVURESV9CVVNJTkVTU0VTKSB7ICU+c2VsZWN0ZWQ8JSB9ICU+PjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VERElfQlVTSU5FU1MiKSU+Ci0gICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iPCU9V3NpbEFjdGlvbklucHV0cy5XU0lMX0xJTktTJT4iIDwlIGlmIChpbnNwZWN0aW9uVHlwZSA9PSBXc2lsQWN0aW9uSW5wdXRzLldTSUxfTElOS1MpIHsgJT5zZWxlY3RlZDwlIH0gJT4+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NJTF9MSU5LUyIpJT4KLSAgICAgICAgPC9zZWxlY3Q+Ci0gICAgICA8L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL3NpbXBsZUNvbW1vbl90YWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gIDwvZm9ybT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1Byb2Nlc3NXU0lMRnJhbWVzZXRzRm9ybS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvZm9ybXMvUHJvY2Vzc1dTSUxGcmFtZXNldHNGb3JtLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMyZTZkYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvZm9ybXMvUHJvY2Vzc1dTSUxGcmFtZXNldHNGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08anNwOnVzZUJlYW4gaWQ9ImZvcm1BY3Rpb24iIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJmb3JtRnJhbWVOYW1lIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiLz4KLTxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KGZvcm1BY3Rpb24udG9TdHJpbmcoKSkpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHN0eWxlPSJtYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowIj4KLSAgPGlucHV0IG5hbWU9IjwlPUFjdGlvbklucHV0cy5GUkFNRV9OQU1FJT4iIHR5cGU9ImhpZGRlbiIgdmFsdWU9IjwlPWZvcm1GcmFtZU5hbWUlPiI+Ci0gIDxpbnB1dCBuYW1lPSI8JT1Xc2lsQWN0aW9uSW5wdXRzLkZSQU1FU0VUX0NPTFNfUEVSU1BFQ1RJVkVfQ09OVEVOVCU+IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSI8JT13c2lsUGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCklPiI+Ci0gIDxpbnB1dCBuYW1lPSI8JT1Xc2lsQWN0aW9uSW5wdXRzLkZSQU1FU0VUX1JPV1NfQUNUSU9OU19DT05UQUlORVIlPiIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iPCU9d3NpbFBlcnNwZWN0aXZlLmdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKSU+Ij4KLTwvZm9ybT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9VZGRpQnVzaW5lc3NEZXRhaWxzUGFnZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvZm9ybXMvVWRkaUJ1c2luZXNzRGV0YWlsc1BhZ2UuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmJlOWM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9VZGRpQnVzaW5lc3NEZXRhaWxzUGFnZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQWRkVG9GYXZvcml0ZXNBY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLkFkZFRvVURESVBlcnNwZWN0aXZlQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5SZWZyZXNoQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuV1NJTFBlcnNwZWN0aXZlIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iYWJzdHJhY3RMYW5ncyIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImFic3RyYWN0cyIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUb29sTWFuYWdlciBjdXJyZW50VG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCk7Ci0gICAgaW50IHZpZXdJRCA9IHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBTdHJpbmcgaW5xdWlyeUFQSSA9IG51bGw7Ci0gICAgU3RyaW5nIGJ1c2luZXNzS2V5ID0gbnVsbDsKLSAgICBTdHJpbmcgZGlzY292ZXJ5VVJMID0gbnVsbDsKLSAgICBXc2lsVWRkaUJ1c2luZXNzRWxlbWVudCBsaW5rID0gbnVsbDsKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQpIHsKLSAgICAgICAgTGlzdEVsZW1lbnQgbGUgPSAoKFdzaWxFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0QWxsVURESUxpbmtzKCkuZ2V0RWxlbWVudFdpdGhWaWV3SWQodmlld0lEKTsKLSAgICAgICAgbGluayA9IChXc2lsVWRkaUJ1c2luZXNzRWxlbWVudClsZS5nZXRPYmplY3QoKTsKLSAgICAgICAgaWYgKGxpbmsgIT0gbnVsbCkgewotICAgICAgICAgICAgYWJzdHJhY3RzLmFkZEFsbChsaW5rLmdldExpbmtBYnN0cmFjdHMoKSk7Ci0gICAgICAgICAgICBhYnN0cmFjdExhbmdzLmFkZEFsbChsaW5rLmdldExpbmtBYnN0cmFjdExhbmdzKCkpOwotICAgICAgICAgICAgaW5xdWlyeUFQSSA9IGxpbmsuZ2V0VURESUxpbmtJbnF1aXJ5QVBJKCk7Ci0gICAgICAgICAgICBidXNpbmVzc0tleSA9IGxpbmsuZ2V0VURESUxpbmtCdXNpbmVzc0tleSgpOwotICAgICAgICAgICAgZGlzY292ZXJ5VVJMID0gbGluay5nZXRVRERJTGlua0Rpc2NvdmVyeVVSTCgpOwotICAgICAgICB9Ci0gICAgfQotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX1VERElfQlVTSU5FU1NfREVUQUlMUyIpJT48L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxGb3JtU3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICAgIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KEFkZFRvRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij4KLQotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9VRERJX0xJTktfREVUQUlMUyIpOwotICAgICU+Ci0gICAgPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQgJiYgbGluayAhPSBudWxsKSB7Ci0gICAgJT4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLk5PREVJRCU+IiB2YWx1ZT0iPCU9c2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpJT4iPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuVklFV0lEJT4iIHZhbHVlPSI8JT12aWV3SUQlPiI+Ci0KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JTlFVSVJZX0FQSSIpJT4KLSAgICAgICAgICAgICAgICA8L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiPgotICAgICAgICAgICAgICAgICAgICA8JT0oKGlucXVpcnlBUEkgIT0gbnVsbCkgPyBpbnF1aXJ5QVBJIDogd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTkEiKSklPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDxicj4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9CVVNJTkVTU19LRVkiKSU+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9KChidXNpbmVzc0tleSAhPSBudWxsKSA/IGJ1c2luZXNzS2V5IDogd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTkEiKSklPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDxicj4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ESVNDT1ZFUllfVVJMIiklPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPSgoZGlzY292ZXJ5VVJMICE9IG51bGwpID8gZGlzY292ZXJ5VVJMIDogd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTkEiKSklPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxBYnN0cmFjdFRhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLQotPGpzcDp1c2VCZWFuIGlkPSJjdXJyZW50VG9vbE1hbmFnZXJIYXNoIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgY3VycmVudFRvb2xNYW5hZ2VySGFzaC5wdXQoQWN0aW9uSW5wdXRzLkNVUlJFTlRfVE9PTF9NQU5BR0VSLGN1cnJlbnRUb29sTWFuYWdlcik7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvb3RoZXJBY3Rpb25zLmpzcCIgZmx1c2g9InRydWUiLz4KLQotICAgIDwlCi0gICAgfQotJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1VkZGlTZXJ2aWNlRGV0YWlsc1BhZ2UuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1VkZGlTZXJ2aWNlRGV0YWlsc1BhZ2UuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjk2YzJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9VZGRpU2VydmljZURldGFpbHNQYWdlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5BZGRUb0Zhdm9yaXRlc0FjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQWRkVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlJlZnJlc2hBY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5XU0lMUGVyc3BlY3RpdmUiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJuYW1lTGFuZ3MiIGNsYXNzPSJqYXZhLnV0aWwuVmVjdG9yIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJuYW1lcyIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImFic3RyYWN0TGFuZ3MiIGNsYXNzPSJqYXZhLnV0aWwuVmVjdG9yIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJhYnN0cmFjdHMiIGNsYXNzPSJqYXZhLnV0aWwuVmVjdG9yIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzaWxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgVG9vbE1hbmFnZXIgY3VycmVudFRvb2xNYW5hZ2VyID0gc2VsZWN0ZWROb2RlLmdldEN1cnJlbnRUb29sTWFuYWdlcigpOwotICAgIGludCB2aWV3SUQgPSBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgU3RyaW5nIGlucXVpcnlBUEkgPSBudWxsOwotICAgIFN0cmluZyBzZXJ2aWNlS2V5ID0gbnVsbDsKLSAgICBTdHJpbmcgZGlzY292ZXJ5VVJMID0gbnVsbDsKLSAgICBXc2lsU2VydmljZUVsZW1lbnQgc2VydmljZSA9IG51bGw7Ci0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50KSB7Ci0gICAgICAgIExpc3RFbGVtZW50IGxlID0gKChXc2lsRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpLmdldEFsbFVERElTZXJ2aWNlcygpLmdldEVsZW1lbnRXaXRoVmlld0lkKHZpZXdJRCk7Ci0gICAgICAgIHNlcnZpY2UgPSAoV3NpbFNlcnZpY2VFbGVtZW50KWxlLmdldE9iamVjdCgpOwotICAgICAgICBpZiAoc2VydmljZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBuYW1lcy5hZGRBbGwoc2VydmljZS5nZXRTZXJ2aWNlTmFtZXMoKSk7Ci0gICAgICAgICAgICBuYW1lTGFuZ3MuYWRkQWxsKHNlcnZpY2UuZ2V0U2VydmljZU5hbWVMYW5ncygpKTsKLSAgICAgICAgICAgIGFic3RyYWN0cy5hZGRBbGwoc2VydmljZS5nZXRTZXJ2aWNlQWJzdHJhY3RzKCkpOwotICAgICAgICAgICAgYWJzdHJhY3RMYW5ncy5hZGRBbGwoc2VydmljZS5nZXRTZXJ2aWNlQWJzdHJhY3RMYW5ncygpKTsKLSAgICAgICAgICAgIGlucXVpcnlBUEkgPSAoKFdzaWxVZGRpU2VydmljZUVsZW1lbnQpc2VydmljZSkuZ2V0VURESVNlcnZpY2VJbnF1aXJ5QVBJKCk7Ci0gICAgICAgICAgICBzZXJ2aWNlS2V5ID0gKChXc2lsVWRkaVNlcnZpY2VFbGVtZW50KXNlcnZpY2UpLmdldFVERElTZXJ2aWNlS2V5KCk7Ci0gICAgICAgICAgICBkaXNjb3ZlcnlVUkwgPSAoKFdzaWxVZGRpU2VydmljZUVsZW1lbnQpc2VydmljZSkuZ2V0VURESVNlcnZpY2VEaXNjb3ZlcnlVUkwoKTsKLSAgICAgICAgfQotICAgIH0KLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgIDx0aXRsZT48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9USVRMRV9VRERJX1NFUlZJQ0VfREVUQUlMUyIpJT48L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxGb3JtU3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICAgIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KEFkZFRvRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij4KLQotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9kZXRhaWxzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9XU0lMX1NFUlZJQ0VfREVUQUlMUyIpOwotICAgICU+Ci0gICAgPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQgJiYgc2VydmljZSAhPSBudWxsKSB7Ci0gICAgJT4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLk5PREVJRCU+IiB2YWx1ZT0iPCU9c2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpJT4iPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuVklFV0lEJT4iIHZhbHVlPSI8JT12aWV3SUQlPiI+Ci0KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lOUVVJUllfQVBJIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPSgoaW5xdWlyeUFQSSAhPSBudWxsKSA/IGlucXVpcnlBUEkgOiB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQSIpKSU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGJyPgotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfU0VSVklDRV9LRVkiKSU+PC9zdHJvbmc+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9KChzZXJ2aWNlS2V5ICE9IG51bGwpID8gc2VydmljZUtleSA6IHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BIikpJT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8YnI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9ESVNDT1ZFUllfVVJMIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPSgoZGlzY292ZXJ5VVJMICE9IG51bGwpID8gZGlzY292ZXJ5VVJMIDogd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTkEiKSklPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxOYW1lVGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotCi0gICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxBYnN0cmFjdFRhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLQotPGpzcDp1c2VCZWFuIGlkPSJjdXJyZW50VG9vbE1hbmFnZXJIYXNoIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgY3VycmVudFRvb2xNYW5hZ2VySGFzaC5wdXQoQWN0aW9uSW5wdXRzLkNVUlJFTlRfVE9PTF9NQU5BR0VSLGN1cnJlbnRUb29sTWFuYWdlcik7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvb3RoZXJBY3Rpb25zLmpzcCIgZmx1c2g9InRydWUiLz4KLQotICAgIDwlCi0gICAgfQotJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1dTSUxJbXBvcnRXU0lMVG9Xb3JrYmVuY2hGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9XU0lMSW1wb3J0V1NJTFRvV29ya2JlbmNoRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMDhmYjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1dTSUxJbXBvcnRXU0lMVG9Xb3JrYmVuY2hGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDQyNyAgIDEyNzQ0MyBqZXNwZXJAc2Vsc2thYmV0Lm9yZyAtIEplc3BlciBTIE1vbGxlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci1Ob2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzaWxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLVdzaWxFbGVtZW50IHdzaWxFbGVtZW50ID0gKFdzaWxFbGVtZW50KXNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLQotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfSU1QT1JUX1RPX1dPUktCRU5DSCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotICA8anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvZm9ybXV0aWxzLmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC9hY3Rpb25zL1dTSUxJbXBvcnRXU0lMVG9Xb3JrYmVuY2hBY3Rpb25KU1AuanNwIikpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPgotICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuSU1QT1JUX0ZJTEUlPiIgdmFsdWU9IjwlPUFjdGlvbklucHV0cy5JTVBPUlRfRklMRSU+Ij4KLSAgPCUKLSAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gImltYWdlcy9pbXBvcnRfdG9fd29ya2JlbmNoX2hpZ2hsaWdodGVkLmdpZiI7Ci0gIFN0cmluZyB0aXRsZSA9IHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBVExfSU1QT1JUX1dTSUxfVE9fV09SS0JFTkNIIik7Ci0gICU+Ci0gIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICA8dGFibGU+Ci0gICAgPHRyPgotICAgICAgPHRkPgotICAgICAgICA8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JTVBPUlRfV1NJTF9UT19XT1JLQkVOQ0hfREVTQyIpJT4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0ibGFiZWxzIiBoZWlnaHQ9NDAgdmFsaWduPSJjZW50ZXIiPgotICAgICAgICA8bGFiZWwgZm9yPSJzZWxlY3Rfd29ya2JlbmNoX3Byb2plY3RfbmFtZSI+PCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJXT1JLQkVOQ0hfUFJPSkVDVF9OQU1FIiklPjwvbGFiZWw+Ci0gICAgICA8L3RkPgotICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiIGhlaWdodD00MCB2YWxpZ249ImNlbnRlciIgbm93cmFwPgotICAgICAgICA8JQotICAgICAgICBJV29ya3NwYWNlUm9vdCBpV29ya3NwYWNlUm9vdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCk7Ci0gICAgICAgIElQcm9qZWN0W10gcHJvamVjdHMgPSBpV29ya3NwYWNlUm9vdC5nZXRQcm9qZWN0cygpOwotICAgICAgICAlPgotICAgICAgICA8c2VsZWN0IGlkPSJzZWxlY3Rfd29ya2JlbmNoX3Byb2plY3RfbmFtZSIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLldPUktCRU5DSF9QUk9KRUNUX05BTUUlPiIgY2xhc3M9InNlbGVjdGxpc3QiPgotICAgICAgICA8JQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHByb2plY3RzLmxlbmd0aDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFwcm9qZWN0c1tpXS5pc09wZW4oKSkKLSAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBTdHJpbmcgcHJvamVjdE5hbWUgPSBwcm9qZWN0c1tpXS5nZXROYW1lKCk7Ci0gICAgICAgICU+Ci0gICAgICAgIDxvcHRpb24gdmFsdWU9IjwlPXByb2plY3ROYW1lJT4iPjwlPXByb2plY3ROYW1lJT4KLSAgICAgICAgPCUKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQotICAgICAgICB9Ci0gICAgICAgICU+Ci0gICAgICAgIDwvc2VsZWN0PgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wPgotICAgIDx0cj4KLSAgICAgIDx0ZD4KLSAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXRfaW1wb3J0ZWRfd3NpbF9maWxlX25hbWUiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiV1NJTF9GSUxFX05BTUUiKSU+PC9sYWJlbD4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQgaGVpZ2h0PTEwIHZhbGlnbj0iYm90dG9tIiB3aWR0aD0iNjAlIj4KLTwlCi0gU3RyaW5nIHdzaWxGaWxlTmFtZSA9ICJ0ZW1wLndzaWwiOwotIFN0cmluZyB3c2lsVVJMID0gd3NpbEVsZW1lbnQuZ2V0V3NpbFVybCgpOwotIGlmICh3c2lsVVJMLmVuZHNXaXRoKCIud3NpbCIpKQotIHsKLSAgIGludCBsYXN0U2VwYXJhdG9yUG9zID0gTWF0aC5tYXgod3NpbFVSTC5sYXN0SW5kZXhPZigiLyIpLCB3c2lsVVJMLmxhc3RJbmRleE9mKCJcXCIpKTsKLSAgIGlmIChsYXN0U2VwYXJhdG9yUG9zID4gMCkKLSAgICAgd3NpbEZpbGVOYW1lID0gd3NpbFVSTC5zdWJzdHJpbmcobGFzdFNlcGFyYXRvclBvcysxLCB3c2lsVVJMLmxlbmd0aCgpKTsKLSB9Ci0lPiAgIAotICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0X2ltcG9ydGVkX3dzaWxfZmlsZV9uYW1lIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuSU1QT1JURURfRklMRV9OQU1FJT4iIHZhbHVlPSI8JT1IVE1MVXRpbHMuY2hhcmFjdGVyc1RvSFRNTEVudGl0aWVzU3RyaWN0KHdzaWxGaWxlTmFtZSklPiIgc2l6ZT01MCBjbGFzcz0idGV4dGVudGVyIj4KLSAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvc2ltcGxlQ29tbW9uX3RhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4gICAgCi0gIDwvZm9ybT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1dzZGxTZXJ2aWNlRGV0YWlsc1BhZ2UuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1dzZGxTZXJ2aWNlRGV0YWlsc1BhZ2UuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDIyNDM0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9Xc2RsU2VydmljZURldGFpbHNQYWdlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5BZGRUb0Zhdm9yaXRlc0FjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUud3NpbC5RTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC5WZWN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuRW51bWVyYXRpb24iICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDp1c2VCZWFuIGlkPSJuYW1lTGFuZ3MiIGNsYXNzPSJqYXZhLnV0aWwuVmVjdG9yIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJuYW1lcyIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImFic3RyYWN0TGFuZ3MiIGNsYXNzPSJqYXZhLnV0aWwuVmVjdG9yIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJhYnN0cmFjdHMiIGNsYXNzPSJqYXZhLnV0aWwuVmVjdG9yIiBzY29wZT0icmVxdWVzdCIvPgotPCUKLSAgICBTdHJpbmcgYmluZGluZ1RhYmxlID0gImJpbmRpbmdUYWJsZSI7Ci0gICAgU3RyaW5nIHhiaW5kaW5nVGFibGUgPSAieGJpbmRpbmdUYWJsZSI7Ci0KLSAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID1jb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUb29sTWFuYWdlciBjdXJyZW50VG9vbE1hbmFnZXIgPSBzZWxlY3RlZE5vZGUuZ2V0Q3VycmVudFRvb2xNYW5hZ2VyKCk7Ci0gICAgaW50IHZpZXdJRCA9IHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBXc2lsU2VydmljZUVsZW1lbnQgc2VydmljZSA9IG51bGw7Ci0gICAgU3RyaW5nIHdzZGxVUkwgPSBudWxsOwotICAgIFZlY3RvciB3c2RsQmluZGluZ3MgPSBuZXcgVmVjdG9yKCk7Ci0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50KSB7Ci0gICAgICAgIExpc3RFbGVtZW50IGxlID0gKChXc2lsRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpLmdldEFsbFdTRExTZXJ2aWNlcygpLmdldEVsZW1lbnRXaXRoVmlld0lkKHZpZXdJRCk7Ci0gICAgICAgIHNlcnZpY2UgPSAoV3NpbFNlcnZpY2VFbGVtZW50KWxlLmdldE9iamVjdCgpOwotICAgICAgICBpZiAoc2VydmljZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBuYW1lcy5hZGRBbGwoc2VydmljZS5nZXRTZXJ2aWNlTmFtZXMoKSk7Ci0gICAgICAgICAgICBuYW1lTGFuZ3MuYWRkQWxsKHNlcnZpY2UuZ2V0U2VydmljZU5hbWVMYW5ncygpKTsKLSAgICAgICAgICAgIGFic3RyYWN0cy5hZGRBbGwoc2VydmljZS5nZXRTZXJ2aWNlQWJzdHJhY3RzKCkpOwotICAgICAgICAgICAgYWJzdHJhY3RMYW5ncy5hZGRBbGwoc2VydmljZS5nZXRTZXJ2aWNlQWJzdHJhY3RMYW5ncygpKTsKLSAgICAgICAgICAgIHdzZGxVUkwgPSAoKFdzaWxXc2RsU2VydmljZUVsZW1lbnQpc2VydmljZSkuZ2V0V1NETFNlcnZpY2VVUkwoKTsKLSAgICAgICAgICAgIHdzZGxCaW5kaW5ncyA9ICgoV3NpbFdzZGxTZXJ2aWNlRWxlbWVudClzZXJ2aWNlKS5nZXRXU0RMQmluZGluZygpOwotICAgICAgICB9Ci0gICAgfQotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX1dTRExfU0VSVklDRV9ERVRBSUxTIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbFRhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsRm9ybVN1Ym1pdC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChBZGRUb0Zhdm9yaXRlc0FjdGlvbi5nZXRCYXNlQWN0aW9uTGluaygpKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+Ci0KLSAgICA8JQotICAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiOwotICAgIFN0cmluZyB0aXRsZSA9IHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfV1NJTF9TRVJWSUNFX0RFVEFJTFMiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDwlCi0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50ICYmIHNlcnZpY2UgIT0gbnVsbCkgewotICAgICU+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPUFjdGlvbklucHV0cy5OT0RFSUQlPiIgdmFsdWU9IjwlPXNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSU+Ij4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLlZJRVdJRCU+IiB2YWx1ZT0iPCU9dmlld0lEJT4iPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9InNpbmdsZWhlYWRlcmNvbG9yIiBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0Ij4KLSAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VUkwiKSU+PC9zdHJvbmc+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9d3NkbFVSTCU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbE5hbWVUYWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0KLSAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbEFic3RyYWN0VGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotCi0gICAgICAgIDx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCB3aWR0aD0xMT4KLSAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9YmluZGluZ1RhYmxlJT4nLCc8JT14YmluZGluZ1RhYmxlJT4nKSI+PGltZyBuYW1lPSI8JT14YmluZGluZ1RhYmxlJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RjbG9zZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfQ0xPU0VEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1dTRExfQklORElOR1MiKSU+PC9zdHJvbmc+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8ZGl2IGlkPSI8JT1iaW5kaW5nVGFibGUlPiI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9OQU1FU1BBQ0VfVVJJIiklPjwvdGg+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfTE9DQUxfTkFNRSIpJT48L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDwlCi0gICAgICAgICAgICBFbnVtZXJhdGlvbiBlID0gd3NkbEJpbmRpbmdzLmVsZW1lbnRzKCk7Ci0gICAgICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgICAgIFFOYW1lIHFuYW1lID0gKFFOYW1lKWUubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyIgbm93cmFwPjwlPXFuYW1lLmdldE5hbWVzcGFjZVVSSSgpJT48L3RkPgotICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiIG5vd3JhcD48JT1xbmFtZS5nZXRMb2NhbE5hbWUoKSU+PC90ZD4KLSAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgfQotICAgICAgICAgICAgJT4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgdHdpc3RJbml0KCc8JT1iaW5kaW5nVGFibGUlPicsJzwlPXhiaW5kaW5nVGFibGUlPicpOwotICAgICAgICA8L3NjcmlwdD4KLQotPGpzcDp1c2VCZWFuIGlkPSJjdXJyZW50VG9vbE1hbmFnZXJIYXNoIiBjbGFzcz0iamF2YS51dGlsLkhhc2h0YWJsZSIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgY3VycmVudFRvb2xNYW5hZ2VySGFzaC5wdXQoQWN0aW9uSW5wdXRzLkNVUlJFTlRfVE9PTF9NQU5BR0VSLGN1cnJlbnRUb29sTWFuYWdlcik7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvb3RoZXJBY3Rpb25zLmpzcCIgZmx1c2g9InRydWUiLz4KLQotICAgICAgICA8JQotICAgIH0KLSU+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9Xc2lsRGV0YWlsc1BhZ2UuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1dzaWxEZXRhaWxzUGFnZS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlODk3NzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1dzaWxEZXRhaWxzUGFnZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLlRyZWVFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5XU0lMUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuV3NpbEVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLkFkZFRvRmF2b3JpdGVzQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5SZWZyZXNoQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLkVudW1lcmF0aW9uIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iYWJzdHJhY3RMYW5ncyIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImFic3RyYWN0cyIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPWNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB3c2lsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIFRvb2xNYW5hZ2VyIGN1cnJlbnRUb29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSAgICBXc2lsRWxlbWVudCB3c2lsRWxlbWVudCA9IG51bGw7Ci0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50KSB7Ci0gICAgICAgIHdzaWxFbGVtZW50ID0gKFdzaWxFbGVtZW50KXNlbGVjdGVkRWxlbWVudDsKLSAgICAgICAgYWJzdHJhY3RzLmFkZEFsbCh3c2lsRWxlbWVudC5nZXRXU0lMQWJzdHJhY3RzKCkpOwotICAgICAgICBhYnN0cmFjdExhbmdzLmFkZEFsbCh3c2lsRWxlbWVudC5nZXRXU0lMQWJzdHJhY3RMYW5ncygpKTsKLSAgICB9Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICA8dGl0bGU+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fVElUTEVfV1NJTF9ERVRBSUxTIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbEZvcm1TdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoQWRkVG9GYXZvcml0ZXNBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPgotCi0gICAgPCUKLSAgICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAiaW1hZ2VzL2RldGFpbHNfaGlnaGxpZ2h0ZWQuZ2lmIjsKLSAgICBTdHJpbmcgdGl0bGUgPSB3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiQUxUX1dTSUxfREVUQUlMUyIpOwotICAgICU+Ci0gICAgPCVAIGluY2x1ZGUgZmlsZSA9ICIvZm9ybXMvZm9ybWhlYWRlci5pbmMiICU+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQpIHsKLSAgICAlPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuTk9ERUlEJT4iIHZhbHVlPSI8JT1zZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCklPiI+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPUFjdGlvbklucHV0cy5WSUVXSUQlPiIgdmFsdWU9IjwlPUFjdGlvbklucHV0cy5WSUVXSURfREVGQVVMVCU+Ij4KLQotICAgICAgICA8dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW5nbGVoZWFkZXJjb2xvciIgaGVpZ2h0PTIwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCI+Ci0gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVVJMIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgICAgIDwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+Ci0gICAgICAgICAgICAgICAgICAgIDwlPXdzaWxFbGVtZW50LmdldFdzaWxVcmwoKSU+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbEFic3RyYWN0VGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotCi08anNwOnVzZUJlYW4gaWQ9ImN1cnJlbnRUb29sTWFuYWdlckhhc2giIGNsYXNzPSJqYXZhLnV0aWwuSGFzaHRhYmxlIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICBjdXJyZW50VG9vbE1hbmFnZXJIYXNoLnB1dChBY3Rpb25JbnB1dHMuQ1VSUkVOVF9UT09MX01BTkFHRVIsY3VycmVudFRvb2xNYW5hZ2VyKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9mb3Jtcy9vdGhlckFjdGlvbnMuanNwIiBmbHVzaD0idHJ1ZSIvPgotCi0gICAgPCUKLSAgICB9Ci0gICAgJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1dzaWxJbXBvcnRXU0RMVG9Xb3JrYmVuY2hGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9Xc2lsSW1wb3J0V1NETFRvV29ya2JlbmNoRm9ybS5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlYWZmN2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2Zvcm1zL1dzaWxJbXBvcnRXU0RMVG9Xb3JrYmVuY2hGb3JtLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5kYXRhbW9kZWwuKiIgJT4KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gIFRvb2wgc2VsZWN0ZWRUb29sID0gc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sKCk7Ci0lPgotPGpzcDp1c2VCZWFuIGlkPSJmb3JtUHJvcGVydGllcyIgY2xhc3M9ImphdmEudXRpbC5IYXNodGFibGUiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGlmIChzZWxlY3RlZFRvb2wgaW5zdGFuY2VvZiBMaXN0V1NETFNlcnZpY2VzVG9vbCkKLSAgewotICAgIGludCB2aWV3SWQgPSBzZWxlY3RlZE5vZGUuZ2V0Vmlld0lkKCk7Ci0gICAgV3NpbEVsZW1lbnQgd3NpbEVsZW1lbnQgPSAoV3NpbEVsZW1lbnQpc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0gICAgTGlzdEVsZW1lbnQgbGUgPSB3c2lsRWxlbWVudC5nZXRBbGxXU0RMU2VydmljZXMoKS5nZXRFbGVtZW50V2l0aFZpZXdJZCh2aWV3SWQpOwotICAgIFdzaWxXc2RsU2VydmljZUVsZW1lbnQgd3NpbFdzZGxTZXJ2aWNlRWxlbWVudCA9IChXc2lsV3NkbFNlcnZpY2VFbGVtZW50KWxlLmdldE9iamVjdCgpOwotICAgIGZvcm1Qcm9wZXJ0aWVzLnB1dCgid3NkbFVSTCIsd3NpbFdzZGxTZXJ2aWNlRWxlbWVudC5nZXRXU0RMU2VydmljZVVSTCgpKTsKLSAgfQotICBmb3JtUHJvcGVydGllcy5wdXQoImZvcm1BY3Rpb25MaW5rIiwid3NpbC9hY3Rpb25zL1dzaWxJbXBvcnRXU0RMVG9Xb3JrYmVuY2hBY3Rpb25KU1AuanNwIik7Ci0lPiAgIAotPC9qc3A6dXNlQmVhbj4KLTwlCi0gIGlmIChzZWxlY3RlZFRvb2wgaW5zdGFuY2VvZiBMaXN0V1NETFNlcnZpY2VzVG9vbCkKLSAgewotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvSW1wb3J0V1NETEFuZFdTSUxUb1dvcmtiZW5jaEZvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotPCUKLSAgfQotICBlbHNlIGlmIChzZWxlY3RlZFRvb2wgaW5zdGFuY2VvZiBMaXN0VURESVNlcnZpY2VzVG9vbCkKLSAgewotJT4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvZm9ybXMvSW1wb3J0VG9Xb3JrYmVuY2hGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KLTwlCi0gIH0KLSU+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvZm9ybXMvV3NpbExhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9Xc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZEZvcm0uanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTkxOTVlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9Xc2lsTGF1bmNoV2ViU2VydmljZVdpemFyZEZvcm0uanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImZvcm1BY3Rpb25MaW5rIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIGZvcm1BY3Rpb25MaW5rLmFwcGVuZCgid3NpbC9hY3Rpb25zL1dzaWxMYXVuY2hXZWJTZXJ2aWNlV2l6YXJkQWN0aW9uSlNQLmpzcCIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL0xhdW5jaFdlYlNlcnZpY2VXaXphcmRGb3JtLmpzcCIgZmx1c2g9InRydWUiLz4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9Xc2lsTGlua0RldGFpbHNQYWdlLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9mb3Jtcy9Xc2lsTGlua0RldGFpbHNQYWdlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI2NGEzYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvZm9ybXMvV3NpbExpbmtEZXRhaWxzUGFnZS5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTxqc3A6dXNlQmVhbiBpZD0iYWJzdHJhY3RMYW5ncyIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9ImFic3RyYWN0cyIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08JQotICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPWNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB3c2lsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIFRvb2xNYW5hZ2VyIGN1cnJlbnRUb29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXRDdXJyZW50VG9vbE1hbmFnZXIoKTsKLSAgICBpbnQgdmlld0lEID0gc2VsZWN0ZWROb2RlLmdldFZpZXdJZCgpOwotICAgIFRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotICAgIFdzaWxXc2lsTGlua0VsZW1lbnQgbGluayA9IG51bGw7Ci0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50KSB7Ci0gICAgICAgIExpc3RFbGVtZW50IGxlID0gKChXc2lsRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpLmdldEFsbFdTSUxMaW5rcygpLmdldEVsZW1lbnRXaXRoVmlld0lkKHZpZXdJRCk7Ci0gICAgICAgIGxpbmsgPSAoV3NpbFdzaWxMaW5rRWxlbWVudClsZS5nZXRPYmplY3QoKTsKLSAgICAgICAgaWYgKGxpbmsgIT0gbnVsbCkgewotICAgICAgICAgICAgYWJzdHJhY3RMYW5ncy5hZGRBbGwobGluay5nZXRMaW5rQWJzdHJhY3RMYW5ncygpKTsKLSAgICAgICAgICAgIGFic3RyYWN0cy5hZGRBbGwobGluay5nZXRMaW5rQWJzdHJhY3RzKCkpOwotICAgICAgICB9Ci0gICAgfQotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX1RJVExFX1dTSUxfTElOS19ERVRBSUxTIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8JQotICAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJpbWFnZXMvZGV0YWlsc19oaWdobGlnaHRlZC5naWYiOwotICAgIFN0cmluZyB0aXRsZSA9IHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfV1NJTF9MSU5LX0RFVEFJTFMiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDwlCi0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50ICYmIGxpbmsgIT0gbnVsbCkgewotICAgICU+Ci0KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2luZ2xlaGVhZGVyY29sb3IiIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiPgotICAgICAgICAgICAgICAgICAgICA8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VUkwiKSU+Ci0gICAgICAgICAgICAgICAgPC90aD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj4KLSAgICAgICAgICAgICAgICAgICAgPCU9bGluay5nZXRXU0lMTGlua0xvY2F0aW9uKCklPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxBYnN0cmFjdFRhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTxqc3A6dXNlQmVhbiBpZD0iY3VycmVudFRvb2xNYW5hZ2VySGFzaCIgY2xhc3M9ImphdmEudXRpbC5IYXNodGFibGUiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGN1cnJlbnRUb29sTWFuYWdlckhhc2gucHV0KEFjdGlvbklucHV0cy5DVVJSRU5UX1RPT0xfTUFOQUdFUixjdXJyZW50VG9vbE1hbmFnZXIpOwotJT4KLTwvanNwOnVzZUJlYW4+Ci08anNwOmluY2x1ZGUgcGFnZT0iL2Zvcm1zL290aGVyQWN0aW9ucy5qc3AiIGZsdXNoPSJ0cnVlIi8+ICAgICAgICAKLQotICAgIDwlCi0gICAgfQotICAgICU+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9hZGRfdG9fVURESV9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvYWRkX3RvX1VERElfcGVyc3BlY3RpdmVfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYTNkZGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9hZGRfdG9fVURESV9wZXJzcGVjdGl2ZV9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvYWRkX3RvX1VERElfcGVyc3BlY3RpdmVfaGlnaGxpZ2h0ZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9hZGRfdG9fVURESV9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYTNkZGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9hZGRfdG9fVURESV9wZXJzcGVjdGl2ZV9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfVURESV9zZXJ2aWNlX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9saXN0X1VERElfc2VydmljZV9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNlMTMzNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfVURESV9zZXJ2aWNlX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9saXN0X1VERElfc2VydmljZV9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfVURESV9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNlMTMzNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfVURESV9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvbGlzdF9XU0RMX3NlcnZpY2VfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfV1NETF9zZXJ2aWNlX2VuYWJsZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjhjOGVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvbGlzdF9XU0RMX3NlcnZpY2VfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfV1NETF9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvbGlzdF9XU0RMX3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjhjOGVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvbGlzdF9XU0RMX3NlcnZpY2VfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9saXN0X1dTSUxfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfV1NJTF9lbmFibGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM0YmJlNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfV1NJTF9lbmFibGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvbGlzdF9XU0lMX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvbGlzdF9XU0lMX2hpZ2hsaWdodGVkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM0YmJlNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfV1NJTF9oaWdobGlnaHRlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfYnVzaW5lc3NfZW5hYmxlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL2xpc3RfYnVzaW5lc3NfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MWI5NzUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9saXN0X2J1c2luZXNzX2VuYWJsZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9saXN0X2J1c2luZXNzX2hpZ2hsaWdodGVkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvbGlzdF9idXNpbmVzc19oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MWI5NzUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9saXN0X2J1c2luZXNzX2hpZ2hsaWdodGVkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvb3Blbl93c2lsX2VuYWJsZWQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9vcGVuX3dzaWxfZW5hYmxlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MTc3NWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9vcGVuX3dzaWxfZW5hYmxlZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL29wZW5fd3NpbF9oaWdobGlnaHRlZC5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvaW1hZ2VzL29wZW5fd3NpbF9oaWdobGlnaHRlZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MTc3NWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy9vcGVuX3dzaWxfaGlnaGxpZ2h0ZWQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy93c2lsX25vZGUuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL2ltYWdlcy93c2lsX25vZGUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzU5MTZmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9pbWFnZXMvd3NpbF9ub2RlLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9zY3JpcHRzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvc2NyaXB0cy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzM4ZmZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9zY3JpcHRzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSouamF2YQotKi5jbGFzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3NjcmlwdHMvd3NpbEFic3RyYWN0VGFibGUuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3NjcmlwdHMvd3NpbEFic3RyYWN0VGFibGUuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzRkMDg4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9zY3JpcHRzL3dzaWxBYnN0cmFjdFRhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkhUTUxVdGlscyIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9ImFic3RyYWN0TGFuZ3MiIGNsYXNzPSJqYXZhLnV0aWwuVmVjdG9yIiBzY29wZT0icmVxdWVzdCIvPgotPGpzcDp1c2VCZWFuIGlkPSJhYnN0cmFjdHMiIGNsYXNzPSJqYXZhLnV0aWwuVmVjdG9yIiBzY29wZT0icmVxdWVzdCIvPgotCi08anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsVGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotCi08JQotU3RyaW5nIGFic3RyYWN0VGFibGUgPSAiYWJzdHJhY3RUYWJsZSI7Ci1TdHJpbmcgeGFic3RyYWN0VGFibGUgPSAieGFic3RyYWN0VGFibGUiOwotU3RyaW5nIHNob3dBbGxBYnN0cmFjdElEID0gInNob3dBbGxBYnN0cmFjdElEIjsKLVdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPWNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0lPgotCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICBmdW5jdGlvbiBzaG93QWJzdHJhY3QodGFibGVDb250YWluZXJJRCkgewotICAgICAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklEKTsKLSAgICAgICAgdmFyIHRhYmxlQm9keSA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUQk9EWSIpLml0ZW0oMCk7Ci0gICAgICAgIHZhciBoaWRkZW5JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCc8JT1zaG93QWxsQWJzdHJhY3RJRCU+Jyk7Ci0gICAgICAgIDwlCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWJzdHJhY3RzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICU+Ci0gICAgICAgICAgIGFkZFJvd1RvQWJzdHJhY3RUYWJsZSh0YWJsZUJvZHksCi0gICAgICAgICAgICAgICAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpYWJzdHJhY3RMYW5ncy5lbGVtZW50QXQoaSkpJT4iLAotICAgICAgICAgICAgICAgIjwlPUhUTUxVdGlscy5KU01hbmdsZSgoU3RyaW5nKWFic3RyYWN0cy5lbGVtZW50QXQoaSkpJT4iKTsKLSAgICAgICAgPCUKLSAgICAgICAgfQotICAgICAgICAlPgotICAgIH0KLQotICAgIGZ1bmN0aW9uIGFkZFJvd1RvQWJzdHJhY3RUYWJsZSh0YWJsZUJvZHksIGxhbmcsIGFic3QpIHsKLSAgICAgICAgdmFyIG5ld1JvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgICAgIGFkZEtleVZhbHVlVG9Sb3cobmV3Um93LCBsYW5nLCBhYnN0KTsKLSAgICAgICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gICAgfQotPC9zY3JpcHQ+Ci0KLTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gICAgPHRyPgotICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9YWJzdHJhY3RUYWJsZSU+JywnPCU9eGFic3RyYWN0VGFibGUlPicpIj48aW1nIG5hbWU9IjwlPXhhYnN0cmFjdFRhYmxlJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RjbG9zZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfQ0xPU0VEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICA8c3Ryb25nPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0FCU1RSQUNUIiklPjwvc3Ryb25nPgotICAgICAgICA8L3RkPgotICAgIDwvdHI+Ci08L3RhYmxlPgotCi08dGFibGUgd2lkdGg9Ijk1JSIgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgotICAgIDx0cj4KLSAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgICA8L3RyPgotPC90YWJsZT4KLQotPGRpdiBpZD0iPCU9YWJzdHJhY3RUYWJsZSU+Ij4KLSAgICA8dGFibGUgd2lkdGg9Ijk1JSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIGNsYXNzPSJ0YWJsZWJvcmRlciI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xBTkdVQUdFIiklPjwvdGg+Ci0gICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIiB3aWR0aD0iMTAwJSI+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQUJTVFJBQ1QiKSU+PC90aD4KLSAgICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPC9kaXY+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIHNob3dBYnN0cmFjdCgnPCU9YWJzdHJhY3RUYWJsZSU+Jyk7Ci0gICAgdHdpc3RJbml0KCc8JT1hYnN0cmFjdFRhYmxlJT4nLCc8JT14YWJzdHJhY3RUYWJsZSU+Jyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9zY3JpcHRzL3dzaWxGb3JtU3VibWl0LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9zY3JpcHRzL3dzaWxGb3JtU3VibWl0LmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIyNWYwMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvc2NyaXB0cy93c2lsRm9ybVN1Ym1pdC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL2Zvcm1zdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbFRhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIGZ1bmN0aW9uIGlzU29tZXRoaW5nU2VsZWN0ZWQodGFibGVDb250YWluZXJJZCkgewotICAgICAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICAgICAgZm9yICh2YXIgaT1udW1iZXJPZkhlYWRlclJvd3M7IGk8dGFibGUucm93cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIHJvd0NoZWNrYm94Q2VsbCA9IHRhYmxlLnJvd3NbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIikuaXRlbSgwKTsKLSAgICAgICAgICAgIHZhciByb3dDaGVja2JveCA9IHJvd0NoZWNrYm94Q2VsbC5jaGlsZE5vZGVzWzBdOwotICAgICAgICAgICAgaWYgKHJvd0NoZWNrYm94LmNoZWNrZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgYWxlcnQoIjwlPWNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0TWVzc2FnZSgiTVNHX0VSUk9SX05PVEhJTkdfU0VMRUNURUQiKSU+Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQodGFibGVDb250YWluZXJJZCwgZm9ybSwgbG9jYXRpb24pIHsKLSAgICAgICAgaWYgKGlzU29tZXRoaW5nU2VsZWN0ZWQodGFibGVDb250YWluZXJJZCkpCi0gICAgICAgICAgICBzZXRMb2NhdGlvbkFuZFN1Ym1pdChmb3JtLCBsb2NhdGlvbik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc2V0TG9jYXRpb25BbmRTdWJtaXQoZm9ybSwgbG9jYXRpb24pIHsKLSAgICAgICAgaWYgKGhhbmRsZVN1Ym1pdChmb3JtKSkKLSAgICAgICAgewotICAgICAgICAgIGZvcm0uYWN0aW9uID0gbG9jYXRpb247Ci0gICAgICAgICAgZm9ybS5zdWJtaXQoKTsKLSAgICAgICAgfQotICAgIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3NjcmlwdHMvd3NpbE5hbWVUYWJsZS5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvc2NyaXB0cy93c2lsTmFtZVRhYmxlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA2MGM5Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvc2NyaXB0cy93c2lsTmFtZVRhYmxlLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkhUTUxVdGlscyIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08anNwOnVzZUJlYW4gaWQ9Im5hbWVMYW5ncyIgY2xhc3M9ImphdmEudXRpbC5WZWN0b3IiIHNjb3BlPSJyZXF1ZXN0Ii8+Ci08anNwOnVzZUJlYW4gaWQ9Im5hbWVzIiBjbGFzcz0iamF2YS51dGlsLlZlY3RvciIgc2NvcGU9InJlcXVlc3QiLz4KLQotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbFRhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLQotPCUKLVN0cmluZyBuYW1lVGFibGUgPSAibmFtZVRhYmxlIjsKLVN0cmluZyB4bmFtZVRhYmxlID0gInhuYW1lVGFibGUiOwotU3RyaW5nIHNob3dBbGxOYW1lSUQgPSAic2hvd0FsbE5hbWVJRCI7Ci1XU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID1jb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotJT4KLQotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgZnVuY3Rpb24gc2hvd05hbWUodGFibGVDb250YWluZXJJRCkgewotICAgICAgICB2YXIgdGFibGUgPSBnZXRUYWJsZSh0YWJsZUNvbnRhaW5lcklEKTsKLSAgICAgICAgdmFyIHRhYmxlQm9keSA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUQk9EWSIpLml0ZW0oMCk7Ci0gICAgICAgIHZhciBoaWRkZW5JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCc8JT1zaG93QWxsTmFtZUlEJT4nKTsKLSAgICAgICAgPCUKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYW1lcy5zaXplKCk7IGkrKykgewotICAgICAgICAlPgotICAgICAgICAgICBhZGRSb3dUb05hbWVUYWJsZSh0YWJsZUJvZHksCi0gICAgICAgICAgICAgICAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpbmFtZUxhbmdzLmVsZW1lbnRBdChpKSklPiIsCi0gICAgICAgICAgICAgICAiPCU9SFRNTFV0aWxzLkpTTWFuZ2xlKChTdHJpbmcpbmFtZXMuZWxlbWVudEF0KGkpKSU+Iik7Ci0gICAgICAgIDwlCi0gICAgICAgIH0KLSAgICAgICAgJT4KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhZGRSb3dUb05hbWVUYWJsZSh0YWJsZUJvZHksIGxhbmcsIG5hbWUpIHsKLSAgICAgICAgdmFyIG5ld1JvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgICAgIGFkZEtleVZhbHVlVG9Sb3cobmV3Um93LCBsYW5nLCBuYW1lKTsKLSAgICAgICAgdGFibGVCb2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7Ci0gICAgfQotPC9zY3JpcHQ+Ci0KLTx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz02IGNlbGxzcGFjaW5nPTA+Ci0gICAgPHRyPgotICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp0d2lzdCgnPCU9bmFtZVRhYmxlJT4nLCc8JT14bmFtZVRhYmxlJT4nKSI+PGltZyBuYW1lPSI8JT14bmFtZVRhYmxlJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvdHdpc3RjbG9zZWQuZ2lmIikpJT4iIGFsdD0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfVFdJU1RfQ0xPU0VEIiklPiIgY2xhc3M9InR3aXN0Ij48L2E+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICA8c3Ryb25nPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC9zdHJvbmc+Ci0gICAgICAgIDwvdGQ+Ci0gICAgPC90cj4KLTwvdGFibGU+Ci0KLTx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gICAgPHRyPgotICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICAgIDwvdHI+Ci08L3RhYmxlPgotCi08ZGl2IGlkPSI8JT1uYW1lVGFibGUlPiI+Ci0gICAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9MQU5HVUFHRSIpJT48L3RoPgotICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciIgd2lkdGg9IjEwMCUiPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX05BTUUiKSU+PC90aD4KLSAgICAgICAgPC90cj4KLSAgICA8L3RhYmxlPgotPC9kaXY+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIHNob3dOYW1lKCc8JT1uYW1lVGFibGUlPicpOwotICAgIHR3aXN0SW5pdCgnPCU9bmFtZVRhYmxlJT4nLCc8JT14bmFtZVRhYmxlJT4nKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3NjcmlwdHMvd3NpbFBhbmVzLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC9zY3JpcHRzL3dzaWxQYW5lcy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YzViM2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3NjcmlwdHMvd3NpbFBhbmVzLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIHZhciB3c2lsTmF2aWdhdG9yQ29udGFpbmVyID0gcGVyc3BlY3RpdmVDb250ZW50LmZyYW1lc1siPCU9V3NpbEZyYW1lTmFtZXMuV1NJTF9OQVZJR0FUT1JfQ09OVEFJTkVSJT4iXTsKLSAgdmFyIHdzaWxOYXZpZ2F0b3JUb29sYmFyID0gd3NpbE5hdmlnYXRvckNvbnRhaW5lci5mcmFtZXNbIjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfTkFWSUdBVE9SX1RPT0xCQVIlPiJdOwotICB2YXIgd3NpbE5hdmlnYXRvckNvbnRlbnQgPSB3c2lsTmF2aWdhdG9yQ29udGFpbmVyLmZyYW1lc1siPCU9V3NpbEZyYW1lTmFtZXMuV1NJTF9OQVZJR0FUT1JfQ09OVEVOVCU+Il07Ci0gIHZhciB3c2lsQWN0aW9uc0NvbnRhaW5lciA9IHBlcnNwZWN0aXZlQ29udGVudC5mcmFtZXNbIjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfQUNUSU9OU19DT05UQUlORVIlPiJdOwotICB2YXIgd3NpbFByb3BlcnRpZXNDb250YWluZXIgPSB3c2lsQWN0aW9uc0NvbnRhaW5lci5mcmFtZXNbIjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfUFJPUEVSVElFU19DT05UQUlORVIlPiJdOwotICB2YXIgd3NpbFByb3BlcnRpZXNUb29sYmFyID0gd3NpbFByb3BlcnRpZXNDb250YWluZXIuZnJhbWVzWyI8JT1Xc2lsRnJhbWVOYW1lcy5XU0lMX1BST1BFUlRJRVNfVE9PTEJBUiU+Il07Ci0gIHZhciB3c2lsUHJvcGVydGllc0NvbnRlbnQgPSB3c2lsUHJvcGVydGllc0NvbnRhaW5lci5mcmFtZXNbIjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfUFJPUEVSVElFU19DT05URU5UJT4iXTsKLSAgdmFyIHdzaWxTdGF0dXNDb250YWluZXIgPSB3c2lsQWN0aW9uc0NvbnRhaW5lci5mcmFtZXNbIjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfU1RBVFVTX0NPTlRBSU5FUiU+Il07Ci0gIHZhciB3c2lsU3RhdHVzVG9vbGJhciA9IHdzaWxTdGF0dXNDb250YWluZXIuZnJhbWVzWyI8JT1Xc2lsRnJhbWVOYW1lcy5XU0lMX1NUQVRVU19UT09MQkFSJT4iXTsKLSAgdmFyIHdzaWxTdGF0dXNDb250ZW50ID0gd3NpbFN0YXR1c0NvbnRhaW5lci5mcmFtZXNbIjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfU1RBVFVTX0NPTlRFTlQlPiJdOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvc2NyaXB0cy93c2lsVGFibGUuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3NjcmlwdHMvd3NpbFRhYmxlLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI1MTI2Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvc2NyaXB0cy93c2lsVGFibGUuanNwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii9zY3JpcHRzL3RhYmxlcy5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy9icm93c2VyZGV0ZWN0LmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLQotICAgIGZ1bmN0aW9uIHdzaWxIYW5kbGVDaGVja0FsbENsaWNrKHRhYmxlQ29udGFpbmVySWQsIGNoZWNrQWxsQ2hlY2tib3gpIHsKLSAgICAgICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgICAgIGZvciAodmFyIGk9bnVtYmVyT2ZIZWFkZXJSb3dzOyBpPHRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciByb3dDaGVja2JveENlbGwgPSB0YWJsZS5yb3dzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLml0ZW0oMCk7Ci0gICAgICAgICAgICB2YXIgcm93Q2hlY2tib3ggPSByb3dDaGVja2JveENlbGwuY2hpbGROb2Rlc1swXTsKLSAgICAgICAgICAgIHJvd0NoZWNrYm94LmNoZWNrZWQgPSBjaGVja0FsbENoZWNrYm94LmNoZWNrZWQ7Ci0gICAgICAgICAgICBpZiAocm93Q2hlY2tib3guY2hlY2tlZCkgewotICAgICAgICAgICAgICAgIGhpZ2hsaWdodFJvdyh0YWJsZS5yb3dzW2ldLCJyb3djb2xvciIpOwotICAgICAgICAgICAgICAgIHJvd0NoZWNrYm94Lm5hbWUgPSAiPCU9QWN0aW9uSW5wdXRzLlZJRVdJRCU+IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGhpZ2hsaWdodFJvdyh0YWJsZS5yb3dzW2ldLCJ0YWJsZWNlbGxzIik7Ci0gICAgICAgICAgICAgICAgcm93Q2hlY2tib3gubmFtZSA9ICIiOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdmFsaWRhdGVDaGVja0JveElucHV0KGNoZWNrYm94LCBpc0NoZWNrZWQpIHsKLSAgICAgICAgaWYgKGlzQ2hlY2tlZCkgewotICAgICAgICAgICAgY2hlY2tib3gubmFtZSA9ICI8JT1BY3Rpb25JbnB1dHMuVklFV0lEJT4iOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2hlY2tib3gubmFtZSA9ICIiOwotICAgICAgICB9Ci0gICAgICAgIGhhbmRsZVJvd0NoZWNrYm94Q2xpY2soKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB0d2lzdEluaXQodGFibGVDb250YWluZXJJZCx0d2lzdEltYWdlTmFtZSkgewotICAgICAgICB2YXIgdGFibGVDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZUNvbnRhaW5lcklkKTsKLSAgICAgICAgdmFyIHRhYmxlID0gZ2V0VGFibGUodGFibGVDb250YWluZXJJZCk7Ci0gICAgICAgIGlmICh0YWJsZS5yb3dzLmxlbmd0aCA+IG51bWJlck9mSGVhZGVyUm93cykgewotICAgICAgICAgICAgdGFibGVDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICAgICAgICAgIHR3aXN0KHRhYmxlQ29udGFpbmVySWQsIHR3aXN0SW1hZ2VOYW1lKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRhYmxlQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgICAgICAgICAgIHR3aXN0KHRhYmxlQ29udGFpbmVySWQsIHR3aXN0SW1hZ2VOYW1lKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGFkZEtleVZhbHVlVG9Sb3cocm93LCBrZXksIHZhbHVlKSB7Ci0gICAgICAgIHZhciBrZXlUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoa2V5KTsKLSAgICAgICAgdmFyIHZhbHVlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHZhbHVlKTsKLSAgICAgICAgdmFyIG5ld0NvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHZhciBuZXdDb2wyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgbmV3Q29sLmFwcGVuZENoaWxkKGtleVRleHQpOwotICAgICAgICBuZXdDb2wuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgICAgICBuZXdDb2wyLmFwcGVuZENoaWxkKHZhbHVlVGV4dCk7Ci0gICAgICAgIG5ld0NvbDIuY2xhc3NOYW1lID0gInRhYmxlY2VsbHMiOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQobmV3Q29sKTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKG5ld0NvbDIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNsZWFyVGFibGUodGFibGVCb2R5LCBudW1IZWFkZXIpIHsKLSAgICAgICAgZm9yKHZhciBpID0gbnVtSGVhZGVyOyBpIDwgdGFibGVCb2R5LnJvd3MubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHRhYmxlQm9keS5kZWxldGVSb3coaSk7Ci0gICAgICAgICAgICBpLS07Ci0gICAgICAgIH0KLSAgICB9Ci0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3NjcmlwdHMvd3NpbGZyYW1lc2V0cy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvc2NyaXB0cy93c2lsZnJhbWVzZXRzLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgyNjczZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvc2NyaXB0cy93c2lsZnJhbWVzZXRzLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qIiAlPgotCi08anNwOmluY2x1ZGUgcGFnZT0iL3NjcmlwdHMvcGFuZXMuanNwIiBmbHVzaD0idHJ1ZSIvPgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gIGZ1bmN0aW9uIGdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldCgpCi0gIHsKLSAgICByZXR1cm4gcGVyc3BlY3RpdmVDb250ZW50LmZyYW1lc1siPCU9V3NpbEZyYW1lTmFtZXMuV1NJTF9BQ1RJT05TX0NPTlRBSU5FUiU+Il0uZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZyYW1lc2V0IikuaXRlbSgwKTsKLSAgfQotCi0gIGZ1bmN0aW9uIHByb2Nlc3NGcmFtZXNldFNpemVzKGZyYW1lc2V0U2l6ZXNGb3JtKQotICB7Ci0gICAgdG9nZ2xlRG91YmxlQ2xpY2tDb2x1bW5UaXRsZSgpOwotICAgIHZhciBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldCA9IGdldFBlcnNwZWN0aXZlQ29udGVudEZyYW1lc2V0KCk7Ci0gICAgdmFyIGFjdGlvbnNDb250YWluZXJGcmFtZXNldCA9IGdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldCgpOwotICAgIGZyYW1lc2V0U2l6ZXNGb3JtLjwlPVdzaWxBY3Rpb25JbnB1dHMuRlJBTUVTRVRfQ09MU19QRVJTUEVDVElWRV9DT05URU5UJT4udmFsdWUgPSBwZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldC5jb2xzOwotICAgIGZyYW1lc2V0U2l6ZXNGb3JtLjwlPVdzaWxBY3Rpb25JbnB1dHMuRlJBTUVTRVRfUk9XU19BQ1RJT05TX0NPTlRBSU5FUiU+LnZhbHVlID0gYWN0aW9uc0NvbnRhaW5lckZyYW1lc2V0LnJvd3M7Ci0gICAgZnJhbWVzZXRTaXplc0Zvcm0uc3VibWl0KCk7Ci0gIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3ZpZXdzLy5jdnNpZ25vcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczOGZmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotKi5qYXZhCi0qLmNsYXNzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvVWRkaUJ1c2luZXNzVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvVWRkaUJ1c2luZXNzVmlldy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2OTkyNWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3ZpZXdzL1VkZGlCdXNpbmVzc1ZpZXcuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJqYXZhLnV0aWwuVmVjdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLkVudW1lcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuUXVpY2tTb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLkFkZFRvRmF2b3JpdGVzQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5BZGRCdXNpbmVzc1RvVURESVBlcnNwZWN0aXZlQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5SZWZyZXNoQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuZGF0YW1vZGVsLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgICBTdHJpbmcgZGl2VURESUJ1c2luZXNzTGlzdCA9ICJkaXZVRERJQnVzaW5lc3NMaXN0IjsKLSAgICBTdHJpbmcgeGRpdlVERElCdXNpbmVzc0xpc3QgPSAieGRpdlVERElCdXNpbmVzc0xpc3QiOwotCi0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB3c2lsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIFRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJWSUVXX1RJVExFX1VERElfQlVTSU5FU1NFUyIpJT48L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL3Jlc3VtZXByb3h5bG9hZHBhZ2UuanMiKSklPiI+Ci0gICAgPC9zY3JpcHQ+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbFRhYmxlLmpzcCIgZmx1c2g9InRydWUiLz4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsRm9ybVN1Ym1pdC5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJjb250ZW50Ym9keW1hcmdpbiI+Ci08ZGl2IGlkPSJjb250ZW50Ym9yZGVyIj4KLSAgICA8JQotICAgIFN0cmluZyB0aXRsZUltYWdlUGF0aCA9ICJ3c2lsL2ltYWdlcy9saXN0X2J1c2luZXNzX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MSVNUX1VERElfTElOS1MiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDx0YWJsZT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xJU1RfVURESV9CVVNJTkVTU0VTX0RFU0MiKSU+Ci0gICAgICAgIDwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+ICAgIAotICAgIDxmb3JtIGFjdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KEFkZFRvRmF2b3JpdGVzQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQpIHsKLSAgICAlPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuTk9ERUlEJT4iIHZhbHVlPSI8JT1zZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCklPiI+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVdzaWxBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04lPiIgdmFsdWU9IjEiPgotICAgICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPWRpdlVERElCdXNpbmVzc0xpc3QlPicsJzwlPXhkaXZVRERJQnVzaW5lc3NMaXN0JT4nKSI+PGltZyBuYW1lPSI8JT14ZGl2VURESUJ1c2luZXNzTGlzdCU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VRERJX0JVU0lORVNTIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGRpdiBpZD0iPCU9ZGl2VURESUJ1c2luZXNzTGlzdCU+Ij4KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCBjbGFzcz0idGFibGVib3JkZXIiPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJ3c2lsSGFuZGxlQ2hlY2tBbGxDbGljaygnPCU9ZGl2VURESUJ1c2luZXNzTGlzdCU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JVEVNX05VTUJFUiIpJT48L3RoPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VERElfQlVTSU5FU1NfTkFNRSIpJT48L3RoPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgTGlzdE1hbmFnZXIgdWRkaUxpbmtzID0gKChXc2lsRWxlbWVudClzZWxlY3RlZEVsZW1lbnQpLmdldEFsbFVERElMaW5rcygpOwotICAgICAgICAgICAgICAgIEVudW1lcmF0aW9uIGUgPSB1ZGRpTGlua3MuZ2V0TGlzdEVsZW1lbnRzKCk7Ci0gICAgICAgICAgICAgICAgaW50IGl0ZW1OdW0gPSAxOwotICAgICAgICAgICAgICAgIFZlY3RvciBzb3J0ZWRWZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAJc29ydGVkVmVjdG9yLmFkZChlLm5leHRFbGVtZW50KCkpOwotICAgICAgICAgICAgIAkgIH0KLSAgICAgICAgICAgICAgICBRdWlja1NvcnQuc29ydChzb3J0ZWRWZWN0b3IpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc29ydGVkVmVjdG9yLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIExpc3RFbGVtZW50IGxlID0gKExpc3RFbGVtZW50KXNvcnRlZFZlY3Rvci5lbGVtZW50QXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50IHVkZGlMaW5rID0gKFdzaWxVZGRpQnVzaW5lc3NFbGVtZW50KWxlLmdldE9iamVjdCgpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHVkZGlMaW5rLmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giICBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuVklFV0lEJT4iIHZhbHVlPSI8JT1sZS5nZXRWaWV3SWQoKSU+IiBvbkNsaWNrPSJ2YWxpZGF0ZUNoZWNrQm94SW5wdXQodGhpcywgdGhpcy5jaGVja2VkKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9ST1dfQ0hFQ0tfQk9YIiklPiI+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAlPgotCSAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIiBub3dyYXA+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBsZS5nZXRWaWV3SWQoKSwgMCwgZmFsc2UpKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjwlPVN0cmluZy52YWx1ZU9mKGl0ZW1OdW0pJT48L2E+PC90ZD4KLSAgICAgICAJICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyI+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBsZS5nZXRWaWV3SWQoKSwgMCwgZmFsc2UpKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjwlPW5hbWUlPjwvYT48L3RkPgotICAgICAgIAkgICAgICAgICAgPCUKLSAgICAgICAJICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgJT4KLQkgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyIgbm93cmFwPjwlPVN0cmluZy52YWx1ZU9mKGl0ZW1OdW0pJT48L3RkPgotICAgICAgIAkgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIj48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VTkFWQUlMQUJMRV9VRERJX0JVU0lORVNTIiklPiZuYnNwOzwlPXVkZGlMaW5rLmdldFVERElMaW5rQnVzaW5lc3NLZXkoKSU+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgICAgICAgICBpdGVtTnVtKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgJT4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgdHdpc3RJbml0KCc8JT1kaXZVRERJQnVzaW5lc3NMaXN0JT4nLCc8JT14ZGl2VURESUJ1c2luZXNzTGlzdCU+Jyk7Ci0gICAgICAgIDwvc2NyaXB0PgotCi0gICAgICAgIDx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0yIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9BRERfVE9fVURESV9QRVJTUEVDVElWRSIpJT4iIG9uQ2xpY2s9InNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdCgnPCU9ZGl2VURESUJ1c2luZXNzTGlzdCU+JywgdGhpcy5mb3JtLCAnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KEFkZEJ1c2luZXNzVG9VRERJUGVyc3BlY3RpdmVBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0FERF9UT19GQVZPUklURVMiKSU+IiBvbkNsaWNrPSJzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQoJzwlPWRpdlVERElCdXNpbmVzc0xpc3QlPicsIHRoaXMuZm9ybSwgJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChBZGRUb0Zhdm9yaXRlc0FjdGlvbi5nZXRCYXNlQWN0aW9uTGluaygpKSklPicpIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfUkVGUkVTSCIpJT4iIG9uQ2xpY2s9InNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdCgnPCU9ZGl2VURESUJ1c2luZXNzTGlzdCU+JywgdGhpcy5mb3JtLCAnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFJlZnJlc2hBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgPCUKLSAgICB9Ci0lPgotPC9kaXY+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIHJlc3VtZVByb3h5TG9hZFBhZ2UoKTsKLTwvc2NyaXB0PgotCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvVWRkaVNlcnZpY2VzVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvVWRkaVNlcnZpY2VzVmlldy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMmViNGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3ZpZXdzL1VkZGlTZXJ2aWNlc1ZpZXcuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJqYXZhLnV0aWwuVmVjdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLkVudW1lcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuUXVpY2tTb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5BZGRUb0Zhdm9yaXRlc0FjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuQWRkU2VydmljZVRvVURESVBlcnNwZWN0aXZlQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5SZWZyZXNoQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5XU0lMUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgIFN0cmluZyBkaXZVRERJU2VydmljZUxpc3QgPSAiZGl2VURESVNlcnZpY2VMaXN0IjsKLSAgICBTdHJpbmcgeGRpdlVERElTZXJ2aWNlTGlzdCA9ICJ4ZGl2VURESVNlcnZpY2VMaXN0IjsKLQotICAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBUcmVlRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZE5vZGUuZ2V0VHJlZUVsZW1lbnQoKTsKLSU+Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICAgIDx0aXRsZT48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiVklFV19USVRMRV9VRERJX1NFUlZJQ0VTIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3Mvd2luZG93cy5jc3MiKSklPiI+Ci0gICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvcmVzdW1lcHJveHlsb2FkcGFnZS5qcyIpKSU+Ij4KLSAgICA8L3NjcmlwdD4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsVGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxGb3JtU3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gIndzaWwvaW1hZ2VzL2xpc3RfVURESV9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MSVNUX1VERElfU0VSVklDRVMiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDx0YWJsZT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xJU1RfVURESV9TRVJWSUNFU19ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPiAgICAKLSAgICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChBZGRUb0Zhdm9yaXRlc0FjdGlvbi5nZXRCYXNlQWN0aW9uTGluaygpKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPgotCi0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQpIHsKLSAgICAlPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuTk9ERUlEJT4iIHZhbHVlPSI8JT1zZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCklPiI+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVdzaWxBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04lPiIgdmFsdWU9IjEiPgotICAgICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjAgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPWRpdlVERElTZXJ2aWNlTGlzdCU+JywnPCU9eGRpdlVERElTZXJ2aWNlTGlzdCU+JykiPjxpbWcgbmFtZT0iPCU9eGRpdlVERElTZXJ2aWNlTGlzdCU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD0yMCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VRERJX1NFUlZJQ0UiKSU+PC9zdHJvbmc+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0xMD48aW1nIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMva2V5bGluZS5naWYiKSklPiIgYWx0PSIiIGhlaWdodD0yIHdpZHRoPSIxMDAlIj48L3RkPgotICAgICAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLQotICAgICAgICA8ZGl2IGlkPSI8JT1kaXZVRERJU2VydmljZUxpc3QlPiI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0id3NpbEhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPWRpdlVERElTZXJ2aWNlTGlzdCU+Jyx0aGlzKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9BTExfQ0hFQ0tfQk9YIiklPiI+PC90aD4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImhlYWRlcmNvbG9yIj48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9JVEVNX05VTUJFUiIpJT48L3RoPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1VERElfU0VSVklDRV9OQU1FIiklPjwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICBMaXN0TWFuYWdlciB1ZGRpU2VydmljZXMgPSAoKFdzaWxFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0QWxsVURESVNlcnZpY2VzKCk7Ci0gICAgICAgICAgICAgICAgRW51bWVyYXRpb24gZSA9IHVkZGlTZXJ2aWNlcy5nZXRMaXN0RWxlbWVudHMoKTsKLSAgICAgICAgICAgICAgICBpbnQgaXRlbU51bSA9IDE7Ci0gICAgICAgICAgICAgICAgVmVjdG9yIHNvcnRlZFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgICAgIAlzb3J0ZWRWZWN0b3IuYWRkKGUubmV4dEVsZW1lbnQoKSk7Ci0gICAgICAgICAgICAgCSAgfQotICAgICAgICAgICAgICAgIFF1aWNrU29ydC5zb3J0KHNvcnRlZFZlY3Rvcik7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3J0ZWRWZWN0b3Iuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgTGlzdEVsZW1lbnQgbGUgPSAoTGlzdEVsZW1lbnQpc29ydGVkVmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgICAgICAgICAgICAgV3NpbFVkZGlTZXJ2aWNlRWxlbWVudCB1ZGRpU2VydmljZSA9IChXc2lsVWRkaVNlcnZpY2VFbGVtZW50KWxlLmdldE9iamVjdCgpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHVkZGlTZXJ2aWNlLmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjaGVja2JveGNlbGxzIiB3aWR0aD0xMD48aW5wdXQgdHlwZT0iY2hlY2tib3giICBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuVklFV0lEJT4iIHZhbHVlPSI8JT1sZS5nZXRWaWV3SWQoKSU+IiBvbkNsaWNrPSJ2YWxpZGF0ZUNoZWNrQm94SW5wdXQodGhpcywgdGhpcy5jaGVja2VkKSIgdGl0bGU9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiRk9STV9DT05UUk9MX1RJVExFX1NFTEVDVF9ST1dfQ0hFQ0tfQk9YIiklPiI+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgICAgICAgICAgCTx0ZCBjbGFzcz0idGFibGVjZWxscyIgbm93cmFwPjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChTZWxlY3RXU0lMVG9vbEFjdGlvbi5nZXRBY3Rpb25MaW5rKHNlbGVjdGVkTm9kZS5nZXROb2RlSWQoKSwgc2VsZWN0ZWROb2RlLmdldFRvb2xNYW5hZ2VyKCkuZ2V0U2VsZWN0ZWRUb29sSWQoKSwgbGUuZ2V0Vmlld0lkKCksIDAsIGZhbHNlKSkpJT4iIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+Ij48JT1TdHJpbmcudmFsdWVPZihpdGVtTnVtKSU+PC9hPjwvdGQ+Ci0JICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIiBub3dyYXA+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBsZS5nZXRWaWV3SWQoKSwgMCwgZmFsc2UpKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjwlPW5hbWUlPjwvYT48L3RkPgotCSAgICAgICAgICAgICAgICAgPCUKLQkgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICAgICAgICAgIAk8dGQgY2xhc3M9InRhYmxlY2VsbHMiIG5vd3JhcD48JT1TdHJpbmcudmFsdWVPZihpdGVtTnVtKSU+PC90ZD4KLQkJCQk8dGQgY2xhc3M9InRhYmxlY2VsbHMiIG5vd3JhcD48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9VTkFWQUlMQUJMRV9VRERJX1NFUlZJQ0UiKSU+Jm5ic3A7PCU9dWRkaVNlcnZpY2UuZ2V0VURESVNlcnZpY2VLZXkoKSU+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgICAgICAgICA8JQotICAgICAgICAgICAgICAgICAgICBpdGVtTnVtKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgJT4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgICAgICAgICAgdHdpc3RJbml0KCc8JT1kaXZVRERJU2VydmljZUxpc3QlPicsJzwlPXhkaXZVRERJU2VydmljZUxpc3QlPicpOwotICAgICAgICA8L3NjcmlwdD4KLQotICAgICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQUREX1RPX1VERElfUEVSU1BFQ1RJVkUiKSU+IiBvbkNsaWNrPSJzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQoJzwlPWRpdlVERElTZXJ2aWNlTGlzdCU+JywgdGhpcy5mb3JtLCAnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KEFkZFNlcnZpY2VUb1VERElQZXJzcGVjdGl2ZUFjdGlvbi5nZXRCYXNlQWN0aW9uTGluaygpKSklPicpIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9NDAgdmFsaWduPSJib3R0b20iPgotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iPCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfQUREX1RPX0ZBVk9SSVRFUyIpJT4iIG9uQ2xpY2s9InNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdCgnPCU9ZGl2VURESVNlcnZpY2VMaXN0JT4nLCB0aGlzLmZvcm0sICc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoQWRkVG9GYXZvcml0ZXNBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX1JFRlJFU0giKSU+IiBvbkNsaWNrPSJzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQoJzwlPWRpdlVERElTZXJ2aWNlTGlzdCU+JywgdGhpcy5mb3JtLCAnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFJlZnJlc2hBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgPCUKLSAgICB9Ci0lPgotPC9kaXY+Ci0KLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgotICAgIHJlc3VtZVByb3h5TG9hZFBhZ2UoKTsKLTwvc2NyaXB0PgotCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvV3NkbFNlcnZpY2VzVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvV3NkbFNlcnZpY2VzVmlldy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YWY0ZDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3ZpZXdzL1dzZGxTZXJ2aWNlc1ZpZXcuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJqYXZhLnV0aWwuVmVjdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLkVudW1lcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuUXVpY2tTb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLlNlbGVjdFdTSUxUb29sQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuYWN0aW9ucy5BZGRUb0Zhdm9yaXRlc0FjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuV3NpbEFkZFRvV1NETFBlcnNwZWN0aXZlQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS5XU0lMUGVyc3BlY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5kYXRhbW9kZWwuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgIFN0cmluZyBkaXZXU0RMTGlzdCA9ICJkaXZXU0RMTGlzdCI7Ci0gICAgU3RyaW5nIHhkaXZXU0RMTGlzdCA9ICJ4ZGl2V1NETExpc3QiOwotCi0gICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB3c2lsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIFRyZWVFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkTm9kZS5nZXRUcmVlRWxlbWVudCgpOwotJT4KLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gICAgPHRpdGxlPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJWSUVXX1RJVExFX1dTRExfU0VSVklDRVMiKSU+PC90aXRsZT4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLSAgICA8anNwOmluY2x1ZGUgcGFnZT0iL3dzaWwvc2NyaXB0cy93c2lsVGFibGUuanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxGb3JtU3VibWl0LmpzcCIgZmx1c2g9InRydWUiLz4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICAgIDwlCi0gICAgU3RyaW5nIHRpdGxlSW1hZ2VQYXRoID0gIndzaWwvaW1hZ2VzL2xpc3RfV1NETF9zZXJ2aWNlX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MSVNUX1dTRExfU0VSVklDRVMiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDx0YWJsZT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xJU1RfV1NETF9TRVJWSUNFU19ERVNDIiklPgotICAgICAgICA8L3RkPgotICAgICAgPC90cj4KLSAgICA8L3RhYmxlPiAgICAKLSAgICA8Zm9ybSBhY3Rpb249IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChBZGRUb0Zhdm9yaXRlc0FjdGlvbi5nZXRCYXNlQWN0aW9uTGluaygpKSklPiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiIgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPgotICAgIDwlCi0gICAgaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIFdzaWxFbGVtZW50KSB7Ci0gICAgJT4KLSAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLk5PREVJRCU+IiB2YWx1ZT0iPCU9c2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpJT4iPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1Xc2lsQWN0aW9uSW5wdXRzLk1VTFRJUExFX0xJTktfQUNUSU9OJT4iIHZhbHVlPSIxIj4KLSAgICAgICAgPHRhYmxlIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTYgY2VsbHNwYWNpbmc9MD4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTI1IHZhbGlnbj0iYm90dG9tIiBhbGlnbj0ibGVmdCIgbm93cmFwIHdpZHRoPTExPgotICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnR3aXN0KCc8JT1kaXZXU0RMTGlzdCU+JywnPCU9eGRpdldTRExMaXN0JT4nKSI+PGltZyBuYW1lPSI8JT14ZGl2V1NETExpc3QlPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy90d2lzdGNsb3NlZC5naWYiKSklPiIgYWx0PSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9UV0lTVF9DTE9TRUQiKSU+IiBjbGFzcz0idHdpc3QiPjwvYT4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgY2xhc3M9ImxhYmVscyI+Ci0gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfV1NETF9TRVJWSUNFIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGRpdiBpZD0iPCU9ZGl2V1NETExpc3QlPiI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0id3NpbEhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPWRpdldTRExMaXN0JT4nLHRoaXMpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0FMTF9DSEVDS19CT1giKSU+Ij48L3RoPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lURU1fTlVNQkVSIiklPjwvdGg+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVVJMIiklPjwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICBMaXN0TWFuYWdlciB3c2RsU2VydmljZXMgPSAoKFdzaWxFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0QWxsV1NETFNlcnZpY2VzKCk7Ci0gICAgICAgICAgICAgICAgRW51bWVyYXRpb24gZSA9IHdzZGxTZXJ2aWNlcy5nZXRMaXN0RWxlbWVudHMoKTsKLSAgICAgICAgICAgICAgICBpbnQgaXRlbU51bSA9IDE7Ci0gICAgICAgICAgICAgICAgVmVjdG9yIHNvcnRlZFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgICAgIAlzb3J0ZWRWZWN0b3IuYWRkKGUubmV4dEVsZW1lbnQoKSk7Ci0gICAgICAgICAgICAgCSAgfQotICAgICAgICAgICAgICAgIFF1aWNrU29ydC5zb3J0KHNvcnRlZFZlY3Rvcik7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3J0ZWRWZWN0b3Iuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgTGlzdEVsZW1lbnQgbGUgPSAoTGlzdEVsZW1lbnQpc29ydGVkVmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgICAgICAgICAgICAgV3NpbFdzZGxTZXJ2aWNlRWxlbWVudCB3c2RsU2VydmljZSA9IChXc2lsV3NkbFNlcnZpY2VFbGVtZW50KWxlLmdldE9iamVjdCgpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgd3NkbFVSTCA9IHdzZGxTZXJ2aWNlLmdldFdTRExTZXJ2aWNlVVJMKCk7Ci0gICAgICAgICAgICAgICAgICAgICU+Ci0gICAgICAgICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY2hlY2tib3hjZWxscyIgd2lkdGg9MTA+PGlucHV0IHR5cGU9ImNoZWNrYm94IiAgbmFtZT0iPCU9QWN0aW9uSW5wdXRzLlZJRVdJRCU+IiB2YWx1ZT0iPCU9bGUuZ2V0Vmlld0lkKCklPiIgb25DbGljaz0idmFsaWRhdGVDaGVja0JveElucHV0KHRoaXMsIHRoaXMuY2hlY2tlZCkiIHRpdGxlPSI8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIkZPUk1fQ09OVFJPTF9USVRMRV9TRUxFQ1RfUk9XX0NIRUNLX0JPWCIpJT4iPjwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRhYmxlY2VsbHMiIG5vd3JhcD48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoU2VsZWN0V1NJTFRvb2xBY3Rpb24uZ2V0QWN0aW9uTGluayhzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCksIHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpLmdldFNlbGVjdGVkVG9vbElkKCksIGxlLmdldFZpZXdJZCgpLCAwLCBmYWxzZSkpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PCU9U3RyaW5nLnZhbHVlT2YoaXRlbU51bSklPjwvYT48L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIiBub3dyYXA+PCU9d3NkbFVSTCU+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICAgICAgaXRlbU51bSsrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICU+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIHR3aXN0SW5pdCgnPCU9ZGl2V1NETExpc3QlPicsJzwlPXhkaXZXU0RMTGlzdCU+Jyk7Ci0gICAgICAgIDwvc2NyaXB0PgotCi0gICAgICAgIDx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0yIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9BRERfVE9fV1NETF9QRVJTUEVDVElWRSIpJT4iIG9uQ2xpY2s9InNldEZvcm1Mb2NhdGlvbkFuZFN1Ym1pdCgnPCU9ZGl2V1NETExpc3QlPicsIHRoaXMuZm9ybSwgJzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dChXc2lsQWRkVG9XU0RMUGVyc3BlY3RpdmVBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PTQwIHZhbGlnbj0iYm90dG9tIj4KLSAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0FERF9UT19GQVZPUklURVMiKSU+IiBvbkNsaWNrPSJzZXRGb3JtTG9jYXRpb25BbmRTdWJtaXQoJzwlPWRpdldTRExMaXN0JT4nLCB0aGlzLmZvcm0sICc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoQWRkVG9GYXZvcml0ZXNBY3Rpb24uZ2V0QmFzZUFjdGlvbkxpbmsoKSkpJT4nKSIgY2xhc3M9ImJ1dHRvbiI+Ci0gICAgICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgICAgICA8dGQgbm93cmFwIHdpZHRoPSI5MCUiPiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgPCUKLSAgICB9Ci0lPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvV3NpbExpbmtzVmlldy5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvdmlld3MvV3NpbExpbmtzVmlldy5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZGI4OTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3ZpZXdzL1dzaWxMaW5rc1ZpZXcuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJqYXZhLnV0aWwuVmVjdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLkVudW1lcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuUXVpY2tTb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uZGF0YW1vZGVsLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLldTSUxQZXJzcGVjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmFjdGlvbnMuU2VsZWN0V1NJTFRvb2xBY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5hY3Rpb25zLk9wZW5XU0lMTGlua0FjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmRhdGFtb2RlbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICAgU3RyaW5nIGRpdldTSUxMaXN0ID0gImRpdldTSUxMaXN0IjsKLSAgICBTdHJpbmcgeGRpdldTSUxMaXN0ID0gInhkaXZXU0lMTGlzdCI7Ci0KLSAgICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IHdzaWxQZXJzcGVjdGl2ZS5nZXROb2RlTWFuYWdlcigpOwotICAgIE5vZGUgc2VsZWN0ZWROb2RlID0gbm9kZU1hbmFnZXIuZ2V0U2VsZWN0ZWROb2RlKCk7Ci0gICAgVHJlZUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWROb2RlLmdldFRyZWVFbGVtZW50KCk7Ci0lPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICA8dGl0bGU+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIlZJRVdfVElUTEVfV1NJTF9MSU5LUyIpJT48L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotICAgIDxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxUYWJsZS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbEZvcm1TdWJtaXQuanNwIiBmbHVzaD0idHJ1ZSIvPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci0gICAgPCUKLSAgICBTdHJpbmcgdGl0bGVJbWFnZVBhdGggPSAid3NpbC9pbWFnZXMvbGlzdF9XU0lMX2hpZ2hsaWdodGVkLmdpZiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9MSVNUX1dTSUxfTElOS1MiKTsKLSAgICAlPgotICAgIDwlQCBpbmNsdWRlIGZpbGUgPSAiL2Zvcm1zL2Zvcm1oZWFkZXIuaW5jIiAlPgotICAgIDx0YWJsZT4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIGNsYXNzPSJsYWJlbHMiPgotICAgICAgICAgIDwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0xJU1RfV1NJTF9MSU5LUyIpJT4KLSAgICAgICAgPC90ZD4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4gICAgCi0gICAgPGZvcm0gYWN0aW9uPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoT3BlbldTSUxMaW5rQWN0aW9uLmdldEJhc2VBY3Rpb25MaW5rKCkpKSU+IiBtZXRob2Q9InBvc3QiIHRhcmdldD0iPCU9RnJhbWVOYW1lcy5QRVJTUEVDVElWRV9XT1JLQVJFQSU+IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+Ci0gICAgPCUKLSAgICBpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgV3NpbEVsZW1lbnQpIHsKLSAgICAlPgotICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8JT1BY3Rpb25JbnB1dHMuTk9ERUlEJT4iIHZhbHVlPSI8JT1zZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCklPiI+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IjwlPVdzaWxBY3Rpb25JbnB1dHMuTVVMVElQTEVfTElOS19BQ1RJT04lPiIgdmFsdWU9IjEiPgotICAgICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHBhZGRpbmc9NiBjZWxsc3BhY2luZz0wPgotICAgICAgICAgICAgPHRyPgotICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9MjUgdmFsaWduPSJib3R0b20iIGFsaWduPSJsZWZ0IiBub3dyYXAgd2lkdGg9MTE+Ci0gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dHdpc3QoJzwlPWRpdldTSUxMaXN0JT4nLCc8JT14ZGl2V1NJTExpc3QlPicpIj48aW1nIG5hbWU9IjwlPXhkaXZXU0lMTGlzdCU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3R3aXN0Y2xvc2VkLmdpZiIpKSU+IiBhbHQ9IjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1RXSVNUX0NMT1NFRCIpJT4iIGNsYXNzPSJ0d2lzdCI+PC9hPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD0yNSB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImxlZnQiIG5vd3JhcCBjbGFzcz0ibGFiZWxzIj4KLSAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9XU0lMX0xJTktTIiklPjwvc3Ryb25nPgotICAgICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICA8L3RhYmxlPgotCi0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBoZWlnaHQ9MTA+PGltZyBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2tleWxpbmUuZ2lmIikpJT4iIGFsdD0iIiBoZWlnaHQ9MiB3aWR0aD0iMTAwJSI+PC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICAgICAgPGRpdiBpZD0iPCU9ZGl2V1NJTExpc3QlPiI+Ci0gICAgICAgIDx0YWJsZSB3aWR0aD0iOTUlIiBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgY2xhc3M9InRhYmxlYm9yZGVyIj4KLSAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25DbGljaz0id3NpbEhhbmRsZUNoZWNrQWxsQ2xpY2soJzwlPWRpdldTSUxMaXN0JT4nLHRoaXMpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX0FMTF9DSEVDS19CT1giKSU+Ij48L3RoPgotICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iaGVhZGVyY29sb3IiPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGT1JNX0xBQkVMX0lURU1fTlVNQkVSIiklPjwvdGg+Ci0gICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJoZWFkZXJjb2xvciI+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZPUk1fTEFCRUxfVVJMIiklPjwvdGg+Ci0gICAgICAgICAgICA8L3RyPgotICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICBMaXN0TWFuYWdlciB3c2lsTGlua3MgPSAoKFdzaWxFbGVtZW50KXNlbGVjdGVkRWxlbWVudCkuZ2V0QWxsV1NJTExpbmtzKCk7Ci0gICAgICAgICAgICAgICAgRW51bWVyYXRpb24gZSA9IHdzaWxMaW5rcy5nZXRMaXN0RWxlbWVudHMoKTsKLSAgICAgICAgICAgICAgICBpbnQgaXRlbU51bSA9IDE7Ci0gICAgICAgICAgICAgICAgVmVjdG9yIHNvcnRlZFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgewotICAgICAgICAgICAgICAgIAlzb3J0ZWRWZWN0b3IuYWRkKGUubmV4dEVsZW1lbnQoKSk7Ci0gICAgICAgICAgICAgCSAgfQotICAgICAgICAgICAgICAgIFF1aWNrU29ydC5zb3J0KHNvcnRlZFZlY3Rvcik7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3J0ZWRWZWN0b3Iuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgTGlzdEVsZW1lbnQgbGUgPSAoTGlzdEVsZW1lbnQpc29ydGVkVmVjdG9yLmVsZW1lbnRBdChpKTsKLSAgICAgICAgICAgICAgICAgICAgV3NpbFdzaWxMaW5rRWxlbWVudCB3c2lsTGluayA9IChXc2lsV3NpbExpbmtFbGVtZW50KWxlLmdldE9iamVjdCgpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdXJsID0gd3NpbExpbmsuZ2V0V1NJTExpbmtMb2NhdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAlPgotICAgICAgICAgICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNoZWNrYm94Y2VsbHMiIHdpZHRoPTEwPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgIG5hbWU9IjwlPUFjdGlvbklucHV0cy5WSUVXSUQlPiIgdmFsdWU9IjwlPWxlLmdldFZpZXdJZCgpJT4iIG9uQ2xpY2s9InZhbGlkYXRlQ2hlY2tCb3hJbnB1dCh0aGlzLCB0aGlzLmNoZWNrZWQpIiB0aXRsZT0iPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJGT1JNX0NPTlRST0xfVElUTEVfU0VMRUNUX1JPV19DSEVDS19CT1giKSU+Ij48L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0YWJsZWNlbGxzIiBub3dyYXA+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KFNlbGVjdFdTSUxUb29sQWN0aW9uLmdldEFjdGlvbkxpbmsoc2VsZWN0ZWROb2RlLmdldE5vZGVJZCgpLCBzZWxlY3RlZE5vZGUuZ2V0VG9vbE1hbmFnZXIoKS5nZXRTZWxlY3RlZFRvb2xJZCgpLCBsZS5nZXRWaWV3SWQoKSwgMCwgZmFsc2UpKSklPiIgdGFyZ2V0PSI8JT1GcmFtZU5hbWVzLlBFUlNQRUNUSVZFX1dPUktBUkVBJT4iPjwlPVN0cmluZy52YWx1ZU9mKGl0ZW1OdW0pJT48L2E+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGFibGVjZWxscyIgbm93cmFwPjwlPXVybCU+PC90ZD4KLSAgICAgICAgICAgICAgICAgICAgPC90cj4KLSAgICAgICAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICAgICAgaXRlbU51bSsrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICU+Ci0gICAgICAgIDwvdGFibGU+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIHR3aXN0SW5pdCgnPCU9ZGl2V1NJTExpc3QlPicsJzwlPXhkaXZXU0lMTGlzdCU+Jyk7Ci0gICAgICAgIDwvc2NyaXB0PgotCi0gICAgICAgIDx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0yIGNlbGxzcGFjaW5nPTA+Ci0gICAgICAgICAgICA8dHI+Ci0gICAgICAgICAgICAgICAgPHRkIGhlaWdodD00MCB2YWxpZ249ImJvdHRvbSI+Ci0gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSI8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRk9STV9MQUJFTF9BRERfVE9fTkFWSUdBVE9SIiklPiIgb25DbGljaz0ic2V0Rm9ybUxvY2F0aW9uQW5kU3VibWl0KCc8JT1kaXZXU0lMTGlzdCU+JywgdGhpcy5mb3JtLCAnPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KE9wZW5XU0lMTGlua0FjdGlvbi5nZXRCYXNlQWN0aW9uTGluaygpKSklPicpIiBjbGFzcz0iYnV0dG9uIj4KLSAgICAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgd2lkdGg9IjkwJSI+Jm5ic3A7PC90ZD4KLSAgICAgICAgICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0KLSAgICA8JQotICAgIH0KLSU+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX2FjdGlvbnNfY29udGFpbmVyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX2FjdGlvbnNfY29udGFpbmVyLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI0YWI5Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9hY3Rpb25zX2NvbnRhaW5lci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX0FDVElPTlNfQ09OVEFJTkVSIiklPjwvdGl0bGU+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgcm93cz0iPCU9d3NpbFBlcnNwZWN0aXZlLmdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKSU+IiBiZ2NvbG9yPSIjRUNFOUQ4Ij4KLSAgPGZyYW1lIG5hbWU9IjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfUFJPUEVSVElFU19DT05UQUlORVIlPiIgdGl0bGU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9QUk9QRVJUSUVTX0NPTlRBSU5FUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKCJ3c2lsX3Byb3BlcnRpZXNfY29udGFpbmVyLmpzcCIpJT4iIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTEgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLSAgPGZyYW1lIG5hbWU9IjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfU1RBVFVTX0NPTlRBSU5FUiU+IiB0aXRsZT0iPCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1NUQVRVU19DT05UQUlORVIiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTCgid3NpbF9zdGF0dXNfY29udGFpbmVyLmpzcCIpJT4iIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTEgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9uYXZpZ2F0b3JfY29udGFpbmVyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX25hdmlnYXRvcl9jb250YWluZXIuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGEzZTVjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX25hdmlnYXRvcl9jb250YWluZXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxmcmFtZXNldCByb3dzPSIzMywqIiBib3JkZXI9MCBiZ2NvbG9yPSIjRUNFOUQ4Ij4KLSAgPGZyYW1lIG5hbWU9IjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfTkFWSUdBVE9SX1RPT0xCQVIlPiIgdGl0bGU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9OQVZJR0FUT1JfVE9PTEJBUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKCJ3c2lsX25hdmlnYXRvcl90b29sYmFyLmpzcCIpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLSAgPGZyYW1lIG5hbWU9IjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfTkFWSUdBVE9SX0NPTlRFTlQlPiIgdGl0bGU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9OQVZJR0FUT1JfQ09OVEVOVCIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKCJ3c2lsX25hdmlnYXRvcl9jb250ZW50LmpzcCIpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9uYXZpZ2F0b3JfY29udGVudC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9uYXZpZ2F0b3JfY29udGVudC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxOWMzOTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3dzaWxfbmF2aWdhdG9yX2NvbnRlbnQuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0lPiAgICAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgICA8dGl0bGU+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX05BVklHQVRPUl9DT05URU5UIiklPjwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJjc3MvdHJlZXZpZXcuY3NzIikpJT4iPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL2Jyb3dzZXJkZXRlY3QuanMiKSklPiI+Ci0gICAgPC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoInNjcmlwdHMvdHJlZXZpZXcuanMiKSklPiI+Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08JQotICAgIFN0cmluZyBzZWxlY3RlZEFuY2hvck5hbWUgPSAiIjsKLSAgICBOb2RlTWFuYWdlciBub2RlTWFuYWdlciA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCkuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBpbnQgZm9jdXNlZE5vZGVJZCA9IG5vZGVNYW5hZ2VyLmdldEZvY3VzZWROb2RlSWQoKTsKLSAgICBTdHJpbmcgZm9jdXNlZEFuY2hvck5hbWUgPSBTdHJpbmcudmFsdWVPZihmb2N1c2VkTm9kZUlkKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIGlmIChzZWxlY3RlZE5vZGUgIT0gbnVsbCkgewotICAgICAgICBzZWxlY3RlZEFuY2hvck5hbWUgPSBzZWxlY3RlZE5vZGUuZ2V0QW5jaG9yTmFtZSgpOwotICAgICAgICBpZiAoZm9jdXNlZE5vZGVJZCA9PSBzZWxlY3RlZE5vZGUuZ2V0Tm9kZUlkKCkpCi0gICAgICAgICAgICBmb2N1c2VkQW5jaG9yTmFtZSA9IHNlbGVjdGVkQW5jaG9yTmFtZTsKLSAgICB9Ci0lPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBvbkxvYWQ9InNlbGYubG9jYXRpb24uaGFzaD0nIzwlPWZvY3VzZWRBbmNob3JOYW1lJT4nO3NldFNlbGVjdGVkQW5jaG9yTmFtZSgnPCU9c2VsZWN0ZWRBbmNob3JOYW1lJT4nKSIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLSAgICA8ZGl2IGlkPSJ0cmVlY29udGVudGJvcmRlciI+Ci0gICAgICAgIDwlPW5vZGVNYW5hZ2VyLnJlbmRlclRyZWVWaWV3KHJlc3BvbnNlKSU+Ci0gICAgPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9uYXZpZ2F0b3JfdG9vbGJhci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9uYXZpZ2F0b3JfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZjRlMjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3dzaWxfbmF2aWdhdG9yX3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0uY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX05BVklHQVRPUl9UT09MQkFSIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3Rvb2xiYXIuY3NzIikpJT4iPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbGZyYW1lc2V0cy5qc3AiIGZsdXNoPSJ0cnVlIi8+ICAKLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL3Rvb2xiYXIuanMiKSklPiI+Ci08L3NjcmlwdD4gIAotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0idG9vbGJhcmJvZHltYXJnaW4iPgotPGRpdiBpZD0idG9vbGJhcmJvcmRlciI+Ci0gIDxkaXYgaWQ9InRvb2xiYXIiIG9uZGJsY2xpY2s9InByb2Nlc3NGcmFtZXNldFNpemVzKGRvY3VtZW50LmZvcm1zWzBdKSI+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1BY3Rpb24iIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICBmb3JtQWN0aW9uLmFwcGVuZCgid3NpbC9hY3Rpb25zL1Jlc2l6ZVdTSUxGcmFtZXNBY3Rpb25KU1AuanNwIik7Ci0lPiAgCi08L2pzcDp1c2VCZWFuPgotPGpzcDp1c2VCZWFuIGlkPSJmb3JtRnJhbWVOYW1lIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgIGZvcm1GcmFtZU5hbWUuYXBwZW5kKFdzaWxGcmFtZU5hbWVzLldTSUxfTkFWSUdBVE9SX0NPTlRBSU5FUik7Ci0lPgotPC9qc3A6dXNlQmVhbj4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9mb3Jtcy9Qcm9jZXNzV1NJTEZyYW1lc2V0c0Zvcm0uanNwIiBmbHVzaD0idHJ1ZSIvPgotICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PTI1IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MD4KLSAgICAgIDx0cj4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL25hdmlnYXRvci5naWYiKSklPiIgYWx0PSIiIHdpZHRoPTE2IGhlaWdodD0xNj48L3RkPgotPCUKLSAgIFN0cmluZyBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gbnVsbDsKLSAgIGlmICh3c2lsUGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkuc3RhcnRzV2l0aCgiMTAwJSIpKQotICAgICBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gY29udHJvbGxlci5nZXRNZXNzYWdlKCJBTFRfRE9VQkxFX0NMSUNLX1RPX1JFU1RPUkUiKTsKLSAgIGVsc2UKLSAgICAgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0RPVUJMRV9DTElDS19UT19NQVhJTUlaRSIpOwotJT4gICAgICAgIAotICAgICAgICA8dGQgaWQ9ImRvdWJsZWNsaWNrY29sdW1uIiB0aXRsZT0iPCU9ZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSU+IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IioiIGhlaWdodD0yNSBub3dyYXAgY2xhc3M9InRleHQiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX05BVklHQVRPUiIpJT48L3RkPgotPCUKLSAgIFN0cmluZyBhbHRSZWZyZXNoID0gd3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkFMVF9SRUZSRVNIX1dTSUwiKTsKLSAgIFN0cmluZyBhbHRDbGVhciA9IHdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJBTFRfQ0xFQVJfV1NJTCIpOwotJT4gICAgICAgICAgIAotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48YSBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoIndzaWwvYWN0aW9ucy9SZWZyZXNoQWN0aW9uSlNQLmpzcCIpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3JlZnJlc2hfZW5hYmxlZC5naWYiKSklPiIgd2lkdGg9MTYgaGVpZ2h0PTE2IG9uTW91c2VPdmVyPSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL3JlZnJlc2hfaGlnaGxpZ2h0ZWQuZ2lmIikpJT4nO21vdXNlb3Zlcih0aGlzKSIgb25Nb3VzZU91dD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9yZWZyZXNoX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNlb3V0KHRoaXMpIiBvbk1vdXNlRG93bj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9yZWZyZXNoX2hpZ2hsaWdodGVkLmdpZiIpKSU+Jzttb3VzZWRvd24odGhpcykiIG9uTW91c2VVcD0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9yZWZyZXNoX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNldXAodGhpcykiIGFsdD0iPCU9YWx0UmVmcmVzaCU+IiB0aXRsZT0iPCU9YWx0UmVmcmVzaCU+Ij48L2E+PC90ZD4KLSAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0yNSBoZWlnaHQ9MjU+PGEgaHJlZj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJ3c2lsL2FjdGlvbnMvQ2xlYXJXU0lMQWN0aW9uSlNQLmpzcCIpKSU+IiB0YXJnZXQ9IjwlPUZyYW1lTmFtZXMuUEVSU1BFQ1RJVkVfV09SS0FSRUElPiI+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIikpJT4iIHdpZHRoPTE2IGhlaWdodD0xNiBvbk1vdXNlT3Zlcj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2VvdmVyKHRoaXMpIiBvbk1vdXNlT3V0PSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNlb3V0KHRoaXMpIiBvbk1vdXNlRG93bj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2Vkb3duKHRoaXMpIiBvbk1vdXNlVXA9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPic7bW91c2V1cCh0aGlzKSIgYWx0PSI8JT1hbHRDbGVhciU+IiB0aXRsZT0iPCU9YWx0Q2xlYXIlPiI+PC9hPjwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZGl2PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9wZXJzcGVjdGl2ZV9jb250ZW50LmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTljYzBhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX3BlcnNwZWN0aXZlX2NvbnRlbnQuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTwvaGVhZD4KLTxmcmFtZXNldCBjb2xzPSI8JT13c2lsUGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCklPiIgYmdjb2xvcj0iI0VDRTlEOCI+Ci0gIDwlCi0gIGlmIChvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5pc1JUTCgpKQotICB7Ci0gICU+Ci0gIDxmcmFtZSBuYW1lPSI8JT1Xc2lsRnJhbWVOYW1lcy5XU0lMX0FDVElPTlNfQ09OVEFJTkVSJT4iIHRpdGxlPSI8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfQUNUSU9OU19DT05UQUlORVIiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTCgid3NpbF9hY3Rpb25zX2NvbnRhaW5lci5qc3AiKSU+IiBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTE+Ci0gIDxmcmFtZSBuYW1lPSI8JT1Xc2lsRnJhbWVOYW1lcy5XU0lMX05BVklHQVRPUl9DT05UQUlORVIlPiIgdGl0bGU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9OQVZJR0FUT1JfQ09OVEFJTkVSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzaWxfbmF2aWdhdG9yX2NvbnRhaW5lci5qc3AiKSU+IiBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTE+Ci0gIDwlCi0gIH0KLSAgZWxzZQotICB7Ci0gICU+Ci0gIDxmcmFtZSBuYW1lPSI8JT1Xc2lsRnJhbWVOYW1lcy5XU0lMX05BVklHQVRPUl9DT05UQUlORVIlPiIgdGl0bGU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9OQVZJR0FUT1JfQ09OVEFJTkVSIiklPiIgc3JjPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoIndzaWxfbmF2aWdhdG9yX2NvbnRhaW5lci5qc3AiKSU+IiBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTE+Ci0gIDxmcmFtZSBuYW1lPSI8JT1Xc2lsRnJhbWVOYW1lcy5XU0lMX0FDVElPTlNfQ09OVEFJTkVSJT4iIHRpdGxlPSI8JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfQUNUSU9OU19DT05UQUlORVIiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTCgid3NpbF9hY3Rpb25zX2NvbnRhaW5lci5qc3AiKSU+IiBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTE+Ci0gIDwlCi0gIH0KLSAgJT4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9wcm9wZXJ0aWVzX2NvbnRhaW5lci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGMwZWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3dzaWxfcHJvcGVydGllc19jb250YWluZXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9QUk9QRVJUSUVTX0NPTlRBSU5FUiIpJT48L3RpdGxlPgotPC9oZWFkPgotPGZyYW1lc2V0IHJvd3M9IjMzLCoiIGJvcmRlcj0wIGJnY29sb3I9IiNFQ0U5RDgiPgotICA8ZnJhbWUgbmFtZT0iPCU9V3NpbEZyYW1lTmFtZXMuV1NJTF9QUk9QRVJUSUVTX1RPT0xCQVIlPiIgdGl0bGU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9QUk9QRVJUSUVTX1RPT0xCQVIiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTCgid3NpbF9wcm9wZXJ0aWVzX3Rvb2xiYXIuanNwIiklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotICA8ZnJhbWUgbmFtZT0iPCU9V3NpbEZyYW1lTmFtZXMuV1NJTF9QUk9QRVJUSUVTX0NPTlRFTlQlPiIgdGl0bGU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9QUk9QRVJUSUVTX0NPTlRFTlQiKSU+IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTCgid3NpbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwIiklPiIgbm9yZXNpemUgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9MCBtYXJnaW53aWR0aD0wIG1hcmdpbmhlaWdodD0wPgotPC9mcmFtZXNldD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX3Byb3BlcnRpZXNfY29udGVudC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9wcm9wZXJ0aWVzX2NvbnRlbnQuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDJmMzkxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX3Byb3BlcnRpZXNfY29udGVudC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLmNvbnN0YW50cy4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19DT05URU5UIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3dpbmRvd3MuY3NzIikpJT4iPgotPC9oZWFkPgotPGJvZHkgZGlyPSI8JT1vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC5EaXJVdGlscy5nZXREaXIoKSU+IiBjbGFzcz0iY29udGVudGJvZHltYXJnaW4iPgotPGRpdiBpZD0iY29udGVudGJvcmRlciI+Ci08JQotICAgIE5vZGVNYW5hZ2VyIG5vZGVNYW5hZ2VyID0gd3NpbFBlcnNwZWN0aXZlLmdldE5vZGVNYW5hZ2VyKCk7Ci0gICAgTm9kZSBzZWxlY3RlZE5vZGUgPSBub2RlTWFuYWdlci5nZXRTZWxlY3RlZE5vZGUoKTsKLSAgICBpZiAoc2VsZWN0ZWROb2RlICE9IG51bGwpCi0gICAgewotICAgICAgICBUb29sTWFuYWdlciB0b29sTWFuYWdlcjsKLSAgICAgICAgaWYgKHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSA9PSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpCi0gICAgICAgICAgICB0b29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0b29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbE1hbmFnZXIoKTsKLSAgICAgICAgVG9vbCBzZWxlY3RlZFRvb2wgPSB0b29sTWFuYWdlci5nZXRTZWxlY3RlZFRvb2woKTsKLSAgICAgICAgaWYgKHNlbGVjdGVkVG9vbCAhPSBudWxsICYmIHNlbGVjdGVkVG9vbC5nZXRUb29sVHlwZSgpICE9IFRvb2xUeXBlcy5BQ1RJT04pIHsKLSAgICAgICAgJT4KLSAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Ci0gICAgICAgICAgICBsb2NhdGlvbj0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KHNlbGVjdGVkVG9vbC5nZXRGb3JtTGluaygpKSklPiI7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgICAgICA8JQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAlPgotPHRhYmxlPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgPCU9Y29udHJvbGxlci5nZXRNZXNzYWdlKCJNU0dfRVJST1JfTk9fQUNUSU9OX1NFTEVDVEVEIiklPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotICAgICAgICA8JQotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICU+Ci08dGFibGU+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICA8JT1jb250cm9sbGVyLmdldE1lc3NhZ2UoIk1TR19FUlJPUl9OT19OT0RFX1NFTEVDVEVEIiklPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotICAgIDwlCi0gICAgfQotJT4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3dzaWxfcHJvcGVydGllc190b29sYmFyLmpzcCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX3Byb3BlcnRpZXNfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmN2Q5Y2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3dzaWxfcHJvcGVydGllc190b29sYmFyLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLTwlCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0lPgotPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgaW1wb3J0PSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5wZXJzcGVjdGl2ZS4qLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ud3NpbC5jb25zdGFudHMuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5jb25zdGFudHMuKiIgJT4KLQotPGpzcDp1c2VCZWFuIGlkPSJjb250cm9sbGVyIiBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnBlcnNwZWN0aXZlLkNvbnRyb2xsZXIiIHNjb3BlPSJzZXNzaW9uIi8+Ci08JQotICAgV1NJTFBlcnNwZWN0aXZlIHdzaWxQZXJzcGVjdGl2ZSA9IGNvbnRyb2xsZXIuZ2V0V1NJTFBlcnNwZWN0aXZlKCk7Ci0lPiAgIAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgotPGh0bWwgbGFuZz0iPCU9cmVzcG9uc2UuZ2V0TG9jYWxlKCkuZ2V0TGFuZ3VhZ2UoKSU+Ij4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0gIDx0aXRsZT48JT13c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZSgiRlJBTUVfVElUTEVfUFJPUEVSVElFU19UT09MQkFSIiklPjwvdGl0bGU+Ci0gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiY3NzL3Rvb2xiYXIuY3NzIikpJT4iPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL3NjcmlwdHMvd3NpbGZyYW1lc2V0cy5qc3AiIGZsdXNoPSJ0cnVlIi8+ICAKLTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJzY3JpcHRzL3Rvb2xiYXIuanMiKSklPiI+Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9InRvb2xiYXJib2R5bWFyZ2luIj4KLTxkaXYgaWQ9InRvb2xiYXJib3JkZXIiPgotICA8ZGl2IGlkPSJ0b29sYmFyIiBvbmRibGNsaWNrPSJwcm9jZXNzRnJhbWVzZXRTaXplcyhkb2N1bWVudC5mb3Jtc1swXSkiPgotPGpzcDp1c2VCZWFuIGlkPSJmb3JtQWN0aW9uIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIgc2NvcGU9InJlcXVlc3QiPgotPCUKLSAgZm9ybUFjdGlvbi5hcHBlbmQoIndzaWwvYWN0aW9ucy9SZXNpemVXU0lMRnJhbWVzQWN0aW9uSlNQLmpzcCIpOwotJT4gIAotPC9qc3A6dXNlQmVhbj4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUZyYW1lTmFtZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gICBmb3JtRnJhbWVOYW1lLmFwcGVuZChXc2lsRnJhbWVOYW1lcy5XU0lMX1BST1BFUlRJRVNfQ09OVEFJTkVSKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL2Zvcm1zL1Byb2Nlc3NXU0lMRnJhbWVzZXRzRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBoZWlnaHQ9MjUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvYWN0aW9ucy5naWYiKSklPiIgYWx0PSIiIHdpZHRoPTE2IGhlaWdodD0xNj48L3RkPgotPCUKLSAgIFN0cmluZyBkb3VibGVDbGlja0NvbHVtblRpdGxlID0gbnVsbDsKLSAgIGlmICh3c2lsUGVyc3BlY3RpdmUuZ2V0UGVyc3BlY3RpdmVDb250ZW50RnJhbWVzZXRDb2xzKCkuZW5kc1dpdGgoIjEwMCUiKSkKLSAgIHsKLSAgICAgaWYgKHdzaWxQZXJzcGVjdGl2ZS5nZXRBY3Rpb25zQ29udGFpbmVyRnJhbWVzZXRSb3dzKCkuc3RhcnRzV2l0aCgiMTAwJSIpKQotICAgICAgIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9ET1VCTEVfQ0xJQ0tfVE9fUkVTVE9SRSIpOwotICAgfQotICAgaWYgKGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPT0gbnVsbCkKLSAgICAgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0RPVUJMRV9DTElDS19UT19NQVhJTUlaRSIpOwotJT4gICAgICAgIAotICAgICAgICA8dGQgaWQ9ImRvdWJsZWNsaWNrY29sdW1uIiB0aXRsZT0iPCU9ZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSU+IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IioiIGhlaWdodD0yNSBub3dyYXAgY2xhc3M9InRleHQiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0FDVElPTlMiKSU+PC90ZD4KLTwlCi0gICAgTm9kZU1hbmFnZXIgbm9kZU1hbmFnZXIgPSB3c2lsUGVyc3BlY3RpdmUuZ2V0Tm9kZU1hbmFnZXIoKTsKLSAgICBOb2RlIHNlbGVjdGVkTm9kZSA9IG5vZGVNYW5hZ2VyLmdldFNlbGVjdGVkTm9kZSgpOwotICAgIGlmIChzZWxlY3RlZE5vZGUgIT0gbnVsbCkgewotICAgICAgICBUb29sTWFuYWdlciB0b29sTWFuYWdlcjsKLSAgICAgICAgaWYgKHNlbGVjdGVkTm9kZS5nZXRWaWV3SWQoKSA9PSBBY3Rpb25JbnB1dHMuVklFV0lEX0RFRkFVTFQpCi0gICAgICAgICAgICB0b29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXRUb29sTWFuYWdlcigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0b29sTWFuYWdlciA9IHNlbGVjdGVkTm9kZS5nZXRWaWV3VG9vbE1hbmFnZXIoKTsKLSAgICAgICAgZm9yKGludCBpPTA7IGk8dG9vbE1hbmFnZXIuZ2V0TnVtYmVyT2ZUb29scygpOyBpKyspIHsKLSAgICAgICAgICAgIFRvb2wgdG9vbCA9IChUb29sKXRvb2xNYW5hZ2VyLmdldFRvb2woaSk7Ci0gICAgICAgICAgICAlPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48JT10b29sLnJlbmRlclRvb2wocmVzcG9uc2UsY29udHJvbGxlciklPjwvdGQ+Ci0gICAgICAgICAgICA8JQotICAgICAgICB9Ci0gICAgfQotJT4KLSAgICAgIDwvdHI+Ci0gICAgPC90YWJsZT4KLSAgPC9kaXY+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyL3dzZXhwbG9yZXIvd3NpbC93c2lsX3N0YXR1c19jb250YWluZXIuanNwIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3dzaWxfc3RhdHVzX2NvbnRhaW5lci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZmFjMTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3dzaWxfc3RhdHVzX2NvbnRhaW5lci5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08JQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwuY29uc3RhbnRzLioiICU+Ci0KLTxqc3A6dXNlQmVhbiBpZD0iY29udHJvbGxlciIgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS5wZXJzcGVjdGl2ZS5Db250cm9sbGVyIiBzY29wZT0ic2Vzc2lvbiIvPgotPCUKLSAgIFdTSUxQZXJzcGVjdGl2ZSB3c2lsUGVyc3BlY3RpdmUgPSBjb250cm9sbGVyLmdldFdTSUxQZXJzcGVjdGl2ZSgpOwotJT4gICAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KLTxodG1sIGxhbmc9IjwlPXJlc3BvbnNlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCklPiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotICA8dGl0bGU+PCU9d3NpbFBlcnNwZWN0aXZlLmdldE1lc3NhZ2UoIkZSQU1FX1RJVExFX1NUQVRVU19DT05UQUlORVIiKSU+PC90aXRsZT4KLTwvaGVhZD4KLTxmcmFtZXNldCByb3dzPSIzMywqIiBib3JkZXI9MCBiZ2NvbG9yPSIjRUNFOUQ4Ij4KLSAgPGZyYW1lIG5hbWU9IjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfU1RBVFVTX1RPT0xCQVIlPiIgdGl0bGU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfVE9PTEJBUiIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKCJ3c2lsX3N0YXR1c190b29sYmFyLmpzcCIpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLSAgPGZyYW1lIG5hbWU9IjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfU1RBVFVTX0NPTlRFTlQlPiIgdGl0bGU9IjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfQ09OVEVOVCIpJT4iIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKCJ3c2lsX3N0YXR1c19jb250ZW50LmpzcCIpJT4iIG5vcmVzaXplIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9zdGF0dXNfY29udGVudC5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9zdGF0dXNfY29udGVudC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZWJlNmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3dzaWxfc3RhdHVzX2NvbnRlbnQuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjcgICAxMjc0NDMgamVzcGVyQHNlbHNrYWJldC5vcmcgLSBKZXNwZXIgUyBNb2xsZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotJT4KLTwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIGltcG9ydD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLndzaWwucGVyc3BlY3RpdmUuKiwKLQlvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0udXRpbC4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfQ09OVEVOVCIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy93aW5kb3dzLmNzcyIpKSU+Ij4KLTwvaGVhZD4KLTxib2R5IGRpcj0iPCU9b3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBsYXRmb3JtLnV0aWwuRGlyVXRpbHMuZ2V0RGlyKCklPiIgY2xhc3M9ImNvbnRlbnRib2R5bWFyZ2luIj4KLTxkaXYgaWQ9ImNvbnRlbnRib3JkZXIiPgotICA8dGFibGU+Ci0gICAgPHRyPgotICAgICAgPHRkPgotICAgICAgICA8cHJlPgotPCU9SFRNTFV0aWxzLmNoYXJhY3RlcnNUb0hUTUxFbnRpdGllc1N0cmljdCh3c2lsUGVyc3BlY3RpdmUuZ2V0TWVzc2FnZVF1ZXVlKCkuZ2V0TWVzc2FnZXNGcm9tTGlzdCgpKSU+Ci0gICAgICAgIDwvcHJlPgotICAgICAgPC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9zdGF0dXNfdG9vbGJhci5qc3AgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5leHBsb3Jlci93c2V4cGxvcmVyL3dzaWwvd3NpbF9zdGF0dXNfdG9vbGJhci5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyMDAyNjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIvd3NleHBsb3Jlci93c2lsL3dzaWxfc3RhdHVzX3Rvb2xiYXIuanNwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCUKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSU+Ci08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLnBlcnNwZWN0aXZlLiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS53c2lsLmNvbnN0YW50cy4qIiAlPgotCi08anNwOnVzZUJlYW4gaWQ9ImNvbnRyb2xsZXIiIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXhwbG9yZXIucGxhdGZvcm0ucGVyc3BlY3RpdmUuQ29udHJvbGxlciIgc2NvcGU9InNlc3Npb24iLz4KLTwlCi0gICBXU0lMUGVyc3BlY3RpdmUgd3NpbFBlcnNwZWN0aXZlID0gY29udHJvbGxlci5nZXRXU0lMUGVyc3BlY3RpdmUoKTsKLSU+ICAgCi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Ci08aHRtbCBsYW5nPSI8JT1yZXNwb25zZS5nZXRMb2NhbGUoKS5nZXRMYW5ndWFnZSgpJT4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLSAgPHRpdGxlPjwlPXdzaWxQZXJzcGVjdGl2ZS5nZXRNZXNzYWdlKCJGUkFNRV9USVRMRV9TVEFUVVNfVE9PTEJBUiIpJT48L3RpdGxlPgotICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSI8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImNzcy90b29sYmFyLmNzcyIpKSU+Ij4KLTxqc3A6aW5jbHVkZSBwYWdlPSIvd3NpbC9zY3JpcHRzL3dzaWxmcmFtZXNldHMuanNwIiBmbHVzaD0idHJ1ZSIvPiAgCi08c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgic2NyaXB0cy90b29sYmFyLmpzIikpJT4iPgotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBkaXI9IjwlPW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wbGF0Zm9ybS51dGlsLkRpclV0aWxzLmdldERpcigpJT4iIGNsYXNzPSJ0b29sYmFyYm9keW1hcmdpbiI+Ci08ZGl2IGlkPSJ0b29sYmFyYm9yZGVyIj4KLSAgPGRpdiBpZD0idG9vbGJhciIgb25kYmxjbGljaz0icHJvY2Vzc0ZyYW1lc2V0U2l6ZXMoZG9jdW1lbnQuZm9ybXNbMF0pIj4KLTxqc3A6dXNlQmVhbiBpZD0iZm9ybUFjdGlvbiIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiIHNjb3BlPSJyZXF1ZXN0Ij4KLTwlCi0gIGZvcm1BY3Rpb24uYXBwZW5kKCJ3c2lsL2FjdGlvbnMvUmVzaXplV1NJTEZyYW1lc0FjdGlvbkpTUC5qc3AiKTsKLSU+ICAKLTwvanNwOnVzZUJlYW4+Ci08anNwOnVzZUJlYW4gaWQ9ImZvcm1GcmFtZU5hbWUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIiBzY29wZT0icmVxdWVzdCI+Ci08JQotICAgZm9ybUZyYW1lTmFtZS5hcHBlbmQoV3NpbEZyYW1lTmFtZXMuV1NJTF9TVEFUVVNfQ09OVEFJTkVSKTsKLSU+Ci08L2pzcDp1c2VCZWFuPgotPGpzcDppbmNsdWRlIHBhZ2U9Ii93c2lsL2Zvcm1zL1Byb2Nlc3NXU0lMRnJhbWVzZXRzRm9ybS5qc3AiIGZsdXNoPSJ0cnVlIi8+Ci0gICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBoZWlnaHQ9MjUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wPgotICAgICAgPHRyPgotICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIHdpZHRoPTI1IGhlaWdodD0yNT48aW1nIGNsYXNzPSJub3JtYWwiIHNyYz0iPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvc3RhdHVzLmdpZiIpKSU+IiBhbHQ9IiIgd2lkdGg9MTYgaGVpZ2h0PTE2PjwvdGQ+Ci08JQotICAgU3RyaW5nIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBudWxsOwotICAgaWYgKHdzaWxQZXJzcGVjdGl2ZS5nZXRQZXJzcGVjdGl2ZUNvbnRlbnRGcmFtZXNldENvbHMoKS5lbmRzV2l0aCgiMTAwJSIpKQotICAgewotICAgICBpZiAod3NpbFBlcnNwZWN0aXZlLmdldEFjdGlvbnNDb250YWluZXJGcmFtZXNldFJvd3MoKS5lbmRzV2l0aCgiMTAwJSIpKQotICAgICAgIGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPSBjb250cm9sbGVyLmdldE1lc3NhZ2UoIkFMVF9ET1VCTEVfQ0xJQ0tfVE9fUkVTVE9SRSIpOwotICAgfQotICAgaWYgKGRvdWJsZUNsaWNrQ29sdW1uVGl0bGUgPT0gbnVsbCkKLSAgICAgZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0RPVUJMRV9DTElDS19UT19NQVhJTUlaRSIpOwotJT4gICAgICAgIAotICAgICAgICA8dGQgaWQ9ImRvdWJsZWNsaWNrY29sdW1uIiB0aXRsZT0iPCU9ZG91YmxlQ2xpY2tDb2x1bW5UaXRsZSU+IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IioiIGhlaWdodD0yNSBub3dyYXAgY2xhc3M9InRleHQiPjwlPWNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX1NUQVRVUyIpJT48L3RkPgotPCUKLSAgIFN0cmluZyBhbHRDbGVhciA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZSgiQUxUX0NMRUFSIik7Ci0lPiAgICAgICAgICAgCi0gICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgd2lkdGg9MjUgaGVpZ2h0PTI1PjxhIGhyZWY9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgid3NpbC93c2lsX3N0YXR1c19jb250ZW50LmpzcCIpKSU+IiB0YXJnZXQ9IjwlPVdzaWxGcmFtZU5hbWVzLldTSUxfU1RBVFVTX0NPTlRFTlQlPiI+PGltZyBjbGFzcz0ibm9ybWFsIiBzcmM9IjwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIikpJT4iIHdpZHRoPTE2IGhlaWdodD0xNiBvbk1vdXNlT3Zlcj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2VvdmVyKHRoaXMpIiBvbk1vdXNlT3V0PSJzcmM9JzwlPXJlc3BvbnNlLmVuY29kZVVSTChjb250cm9sbGVyLmdldFBhdGhXaXRoQ29udGV4dCgiaW1hZ2VzL2NsZWFyX2VuYWJsZWQuZ2lmIikpJT4nO21vdXNlb3V0KHRoaXMpIiBvbk1vdXNlRG93bj0ic3JjPSc8JT1yZXNwb25zZS5lbmNvZGVVUkwoY29udHJvbGxlci5nZXRQYXRoV2l0aENvbnRleHQoImltYWdlcy9jbGVhcl9oaWdobGlnaHRlZC5naWYiKSklPic7bW91c2Vkb3duKHRoaXMpIiBvbk1vdXNlVXA9InNyYz0nPCU9cmVzcG9uc2UuZW5jb2RlVVJMKGNvbnRyb2xsZXIuZ2V0UGF0aFdpdGhDb250ZXh0KCJpbWFnZXMvY2xlYXJfZW5hYmxlZC5naWYiKSklPic7bW91c2V1cCh0aGlzKSIgYWx0PSI8JT1hbHRDbGVhciU+IiB0aXRsZT0iPCU9YWx0Q2xlYXIlPiI+PC9hPjwvdGQ+Ci0gICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gIDwvZGl2PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvLmNsYXNzcGF0aCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTczOTMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci8uY2xhc3NwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0YjliMmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWJpbgotLmNkdHByb2plY3QKLWJ1aWxkLnhtbAotdGVtcC5mb2xkZXIKLXBhcnNlci5qYXIKLUBkb3QKLXNyYy56aXAKLWphdmFDb21waWxlci4uLmFyZ3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci8ucHJvamVjdCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmViNjY0MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjA3ZDlkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0jV2VkIEp1biAwNiAxNDozMzo1MyBFRFQgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4uaW5saW5lSnNyQnl0ZWNvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS4yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnVudXNlZExvY2FsPXByZXNlcnZlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcubGluZU51bWJlcj1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcubG9jYWxWYXJpYWJsZT1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcuc291cmNlRmlsZT1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hbm5vdGF0aW9uU3VwZXJJbnRlcmZhY2U9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hc3NlcnRJZGVudGlmaWVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXV0b2JveGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uSW5EZXByZWNhdGVkQ29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbldoZW5PdmVycmlkaW5nRGVwcmVjYXRlZE1ldGhvZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kaXNjb3VyYWdlZFJlZmVyZW5jZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW1wdHlTdGF0ZW1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmllbGRIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsUGFyYW1ldGVyQm91bmQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbGx5QmxvY2tOb3RDb21wbGV0aW5nTm9ybWFsbHk9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5mb3JiaWRkZW5SZWZlcmVuY2U9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5oaWRkZW5DYXRjaEJsb2NrPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wYXRpYmxlTm9uSW5oZXJpdGVkSW50ZXJmYWNlTWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wbGV0ZUVudW1Td2l0Y2g9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluZGlyZWN0U3RhdGljQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5sb2NhbFZhcmlhYmxlSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5tZXRob2RXaXRoQ29uc3RydWN0b3JOYW1lPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ0RlcHJlY2F0ZWRBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nT3ZlcnJpZGVBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nU2VyaWFsVmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vRWZmZWN0QXNzaWdubWVudD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vSW1wbGljaXRTdHJpbmdDb252ZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9uRXh0ZXJuYWxpemVkU3RyaW5nTGl0ZXJhbD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ub3ZlcnJpZGluZ1BhY2thZ2VEZWZhdWx0TWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucG9zc2libGVBY2NpZGVudGFsQm9vbGVhbkFzc2lnbm1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnNwZWNpYWxQYXJhbWV0ZXJIaWRpbmdGaWVsZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdGF0aWNBY2Nlc3NSZWNlaXZlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN1cHByZXNzV2FybmluZ3M9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zeW50aGV0aWNBY2Nlc3NFbXVsYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnR5cGVQYXJhbWV0ZXJIaWRpbmc9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmNoZWNrZWRUeXBlT3BlcmF0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5kb2N1bWVudGVkRW1wdHlCbG9jaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5oYW5kbGVkV2FybmluZ1Rva2VuPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlFbHNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeVR5cGVDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5xdWFsaWZpZWRGaWVsZEFjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uV2hlbk92ZXJyaWRpbmc9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkSW1wb3J0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkTG9jYWw9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXI9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5JbXBsZW1lbnRpbmdBYnN0cmFjdD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuT3ZlcnJpZGluZ0NvbmNyZXRlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFByaXZhdGVNZW1iZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS52YXJhcmdzQXJndW1lbnROZWVkQ2FzdD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS4zCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWIwYjY5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6Mzk6NTkgRVNUIDIwMDYKLWNvbXBpbGVycy5wLmRlcHJlY2F0ZWQ9MQotY29tcGlsZXJzLnAubm8tcmVxdWlyZWQtYXR0PTAKLWNvbXBpbGVycy5wLm5vdC1leHRlcm5hbGl6ZWQtYXR0PTEKLWNvbXBpbGVycy5wLnVua25vd24tYXR0cmlidXRlPTAKLWNvbXBpbGVycy5wLnVua25vd24tY2xhc3M9MAotY29tcGlsZXJzLnAudW5rbm93bi1lbGVtZW50PTEKLWNvbXBpbGVycy5wLnVua25vd24tcmVzb3VyY2U9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1leC1wb2ludHM9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1pbXBvcnQ9MAotY29tcGlsZXJzLnVzZS1wcm9qZWN0PXRydWUKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZTYxOWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJVBMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyCi1CdW5kbGUtVmVyc2lvbjogMS4wLjQwMi5xdWFsaWZpZXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIucGx1Z2luLlBhcnNlclBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjbzt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZGlzY292ZXJ5O3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5mYXZvcml0ZXM7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLnBsdWdpbjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS53c3Qud3NkbDtidW5kbGUtdmVyc2lvbj0iWzEuMi4wLDEuMy4wKSIsCi0gamF2YXgud3NkbDtidW5kbGUtdmVyc2lvbj0iWzEuNS4wLDEuNi4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuYXBhY2hlLndzaWw0ajtidW5kbGUtdmVyc2lvbj0iWzEuMC4wLDEuMS4wKSIsCi0gb3JnLnVkZGk0ajtidW5kbGUtdmVyc2lvbj0iWzIuMC40LDIuMS4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5hcGFjaGUuY29tbW9ucy5jb2RlYztidW5kbGUtdmVyc2lvbj0iWzEuMi4wLDIuMC4wKSIKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9hYm91dC5odG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9idWlsZC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMjNkNzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1iaW4uaW5jbHVkZXMgPSAuLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sCi1zb3VyY2UuLiA9IHNyYy8KLW91dHB1dC4uID0gYmluLwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTVhYzZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIE1lc3NhZ2VzIGluIHBsdWdpbi54bWwuCi0jCi1QTFVHSU5fTkFNRT1XZWIgU2VydmljZXMgRGVzY3JpcHRpb24gUGFyc2VyCi1QTFVHSU5fUFJPVklERVI9RWNsaXBzZS5vcmcKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9kaXNjby9ESVNDT0NvbnRyYWN0UmVmZXJlbmNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZGlzY28vRElTQ09Db250cmFjdFJlZmVyZW5jZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmI0MGEwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9kaXNjby9ESVNDT0NvbnRyYWN0UmVmZXJlbmNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZGlzY287Ci0KLXB1YmxpYyBjbGFzcyBESVNDT0NvbnRyYWN0UmVmZXJlbmNlIGV4dGVuZHMgRElTQ09SZWZlcmVuY2UKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgZG9jUmVmXzsKLSAgCi0gIHB1YmxpYyBESVNDT0NvbnRyYWN0UmVmZXJlbmNlKFN0cmluZyByZWYsU3RyaW5nIGRvY1JlZikKLSAgewotICAgIHN1cGVyKHJlZik7Ci0gICAgZG9jUmVmXyA9IGRvY1JlZjsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXREb2NSZWYoKQotICB7Ci0gICAgcmV0dXJuIGRvY1JlZl87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9kaXNjby9ESVNDT1BhcnNlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Rpc2NvL0RJU0NPUGFyc2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNWI3YjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Rpc2NvL0RJU0NPUGFyc2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLQotLyoqCi0gKiBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9tc2RubWFnL2lzc3Vlcy8wMi8wMi94bWwvZGVmYXVsdC5hc3B4IGZvciBtb3JlCi0gKiBkZXRhaWxzIG9uIERJU0NPLgotICovCi1wdWJsaWMgY2xhc3MgRElTQ09QYXJzZXIKLXsKLSAgcHJpdmF0ZSBEb2N1bWVudEJ1aWxkZXIgcGFyc2VyXzsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgTlNfRElTQ08gPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvZGlzY28vIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgRElTQ09WRVJZID0gImRpc2NvdmVyeSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIERJU0NPVkVSWV9SRUYgPSAiZGlzY292ZXJ5UmVmIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgTlNfQ09OVFJBQ1RfUkVGID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL2Rpc2NvL3NjbC8iOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBDT05UUkFDVF9SRUYgPSAiY29udHJhY3RSZWYiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBSRUYgPSAicmVmIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgRE9DX1JFRiA9ICJkb2NSZWYiOwotCi0gIHB1YmxpYyBESVNDT1BhcnNlcigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRvY0J1aWxkZXJGYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotICAgICAgZG9jQnVpbGRlckZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7Ci0gICAgICBwYXJzZXJfID0gZG9jQnVpbGRlckZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7Ci0gICAgfQotICAgIGNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIHBjZSkKLSAgICB7Ci0gICAgICBwYXJzZXJfID0gbnVsbDsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgRElTQ09SZWZlcmVuY2VbXSBwYXJzZShTdHJpbmcgZGlzY29VUkksIElucHV0U291cmNlIHNvdXJjZSkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgaWYgKHBhcnNlcl8gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBEb2N1bWVudCBkb2MgPSBwYXJzZXJfLnBhcnNlKHNvdXJjZSk7Ci0gICAgICBFbGVtZW50IHJvb3RFbGVtZW50ID0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpOwotICAgICAgLy8gUm9vdCBlbGVtZW50IG11c3QgYnkgPGRpc2NvOmRpc2NvdmVyeQotICAgICAgLy8geG1sbnM6ZGlzY289Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL2Rpc2NvLyI+Ci0gICAgICBpZiAocm9vdEVsZW1lbnQgIT0gbnVsbCAmJiByb290RWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoTlNfRElTQ08pICYmIHJvb3RFbGVtZW50LmdldExvY2FsTmFtZSgpLmVxdWFscyhESVNDT1ZFUlkpKQotICAgICAgewotICAgICAgICBOb2RlTGlzdCBjaGlsZE5vZGVzID0gcm9vdEVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgICBWZWN0b3IgZGlzY29SZWZlcmVuY2VzID0gbmV3IFZlY3RvcigpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkTm9kZXMuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIE5vZGUgY2hpbGROb2RlID0gY2hpbGROb2Rlcy5pdGVtKGkpOwotICAgICAgICAgIGlmIChjaGlsZE5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCA9IChFbGVtZW50KWNoaWxkTm9kZTsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhbE5hbWUgPSBlbGVtZW50LmdldExvY2FsTmFtZSgpOwotICAgICAgICAgICAgU3RyaW5nIG5zVVJJID0gZWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgICAgICAgIGlmIChuc1VSSS5lcXVhbHMoTlNfRElTQ08pICYmIGxvY2FsTmFtZS5lcXVhbHMoRElTQ09WRVJZX1JFRikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vIERJU0NPIGxpbmsuCi0gICAgICAgICAgICAgIFN0cmluZyByZWYgPSBjb252ZXJ0VG9BYnNvbHV0ZVVSSShkaXNjb1VSSSwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoUkVGKSk7Ci0gICAgICAgICAgICAgIGRpc2NvUmVmZXJlbmNlcy5hZGRFbGVtZW50KG5ldyBESVNDT1JlZmVyZW5jZShyZWYpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG5zVVJJLmVxdWFscyhOU19DT05UUkFDVF9SRUYpICYmIGxvY2FsTmFtZS5lcXVhbHMoQ09OVFJBQ1RfUkVGKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy8gV1NETCBsaW5rLgotICAgICAgICAgICAgICBTdHJpbmcgcmVmID0gY29udmVydFRvQWJzb2x1dGVVUkkoZGlzY29VUkksIGVsZW1lbnQuZ2V0QXR0cmlidXRlKFJFRikpOwotICAgICAgICAgICAgICBTdHJpbmcgZG9jUmVmID0gY29udmVydFRvQWJzb2x1dGVVUkkoZGlzY29VUkksIGVsZW1lbnQuZ2V0QXR0cmlidXRlKERPQ19SRUYpKTsKLSAgICAgICAgICAgICAgZGlzY29SZWZlcmVuY2VzLmFkZEVsZW1lbnQobmV3IERJU0NPQ29udHJhY3RSZWZlcmVuY2UocmVmLCBkb2NSZWYpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaW50IG51bWJlck9mRElTQ09SZWZlcmVuY2VzID0gZGlzY29SZWZlcmVuY2VzLnNpemUoKTsKLSAgICAgICAgaWYgKG51bWJlck9mRElTQ09SZWZlcmVuY2VzID4gMCkKLSAgICAgICAgewotICAgICAgICAgIERJU0NPUmVmZXJlbmNlW10gcmVmZXJlbmNlcyA9IG5ldyBESVNDT1JlZmVyZW5jZVtudW1iZXJPZkRJU0NPUmVmZXJlbmNlc107Ci0gICAgICAgICAgZGlzY29SZWZlcmVuY2VzLmNvcHlJbnRvKHJlZmVyZW5jZXMpOwotICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIFRoZSBkb2N1bWVudCBpcyBub3QgYSB2YWxpZCBESVNDTyBkb2N1bWVudC4KLSAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIGNvbnZlcnRUb0Fic29sdXRlVVJJKFN0cmluZyBkaXNjb1VSSSwgU3RyaW5nIHJlZlVSSSkKLSAgewotICAgIGlmIChyZWZVUkkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAocmVmVVJJLmluZGV4T2YoIjovLyIpID4gLTEpCi0gICAgICB7Ci0gICAgICAgIC8vIHJlZlVSSSBpcyBhbHJlYWR5IGFic29sdXRlLgotICAgICAgICByZXR1cm4gcmVmVVJJOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBTdHJpbmdCdWZmZXIgYWJzb2x1dGVVUkkgPSBuZXcgU3RyaW5nQnVmZmVyKGRpc2NvVVJJLnN1YnN0cmluZygwLCBNYXRoLm1heChkaXNjb1VSSS5sYXN0SW5kZXhPZignXFwnKSwgZGlzY29VUkkubGFzdEluZGV4T2YoJy8nKSArIDEpKSk7Ci0gICAgICAgIGFic29sdXRlVVJJLmFwcGVuZChyZWZVUkkpOwotICAgICAgICByZXR1cm4gYWJzb2x1dGVVUkkudG9TdHJpbmcoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9kaXNjby9ESVNDT1JlZmVyZW5jZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Rpc2NvL0RJU0NPUmVmZXJlbmNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZWQzYzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Rpc2NvL0RJU0NPUmVmZXJlbmNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZGlzY287Ci0KLXB1YmxpYyBjbGFzcyBESVNDT1JlZmVyZW5jZQotewotICBwcml2YXRlIFN0cmluZyByZWZfOwotICAKLSAgcHVibGljIERJU0NPUmVmZXJlbmNlKFN0cmluZyByZWYpCi0gIHsKLSAgICByZWZfID0gcmVmOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFJlZigpCi0gIHsKLSAgICByZXR1cm4gcmVmXzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Rpc2NvdmVyeS9OZXRVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Rpc2NvdmVyeS9OZXRVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWJmNzVkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9kaXNjb3ZlcnkvTmV0VXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjb3Zlcnk7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLm5ldC5VUkxDb25uZWN0aW9uOwotCi1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvZGVjLmJpbmFyeS5CYXNlNjQ7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBOZXRVdGlscwotewotCi0gIC8qKgotICAgKiBHZXQgdGhlIGphdmEubmV0LlVSTENvbm5lY3Rpb24gZ2l2ZW4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBVUkwuIFRoaXMgY2xhc3MgZW5zdXJlcwotICAgKiB0aGF0IHByb3h5IHNldHRpbmdzIGluIFdTQUQgYXJlIHJlc3BlY3RlZC4KLSAgICogQHBhcmFtIHVybFN0cmluZyBTdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBVUkwuCi0gICAqIEByZXR1cm4gamF2YS5uZXQuVVJMQ0Rvbm5lY3Rpb24gVVJMQ29ubmVjdGlvbiB0byB0aGUgVVJMLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBVUkxDb25uZWN0aW9uIGdldFVSTENvbm5lY3Rpb24oU3RyaW5nIHVybFN0cmluZykKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIFVSTCB1cmwgPSBjcmVhdGVVUkwodXJsU3RyaW5nKTsKLSAgICAgIFVSTENvbm5lY3Rpb24gdWMgPSB1cmwub3BlbkNvbm5lY3Rpb24oKTsKLSAgICAgIFN0cmluZyBwcm94eVVzZXJOYW1lID0gU3lzdGVtLmdldFByb3BlcnR5KCJodHRwLnByb3h5VXNlck5hbWUiKTsKLSAgICAgIFN0cmluZyBwcm94eVBhc3N3b3JkID0gU3lzdGVtLmdldFByb3BlcnR5KCJodHRwLnByb3h5UGFzc3dvcmQiKTsKLSAgICAgIGlmIChwcm94eVVzZXJOYW1lICE9IG51bGwgJiYgcHJveHlQYXNzd29yZCAhPSBudWxsKQotICAgICAgewotICAgICAgICBTdHJpbmdCdWZmZXIgdXNlck5hbWVQYXNzd29yZCA9IG5ldyBTdHJpbmdCdWZmZXIocHJveHlVc2VyTmFtZSk7Ci0gICAgICAgIHVzZXJOYW1lUGFzc3dvcmQuYXBwZW5kKCc6JykuYXBwZW5kKHByb3h5UGFzc3dvcmQpOwotICAgICAgICBCYXNlNjQgZW5jb2RlciA9IG5ldyBCYXNlNjQoKTsKLSAgICAgICAgU3RyaW5nIGVuY29kaW5nID0gbmV3IFN0cmluZyhlbmNvZGVyLmVuY29kZSh1c2VyTmFtZVBhc3N3b3JkLnRvU3RyaW5nKCkuZ2V0Qnl0ZXMoKSkpOwotICAgICAgICB1c2VyTmFtZVBhc3N3b3JkLnNldExlbmd0aCgwKTsKLSAgICAgICAgdXNlck5hbWVQYXNzd29yZC5hcHBlbmQoIkJhc2ljICIpLmFwcGVuZChlbmNvZGluZyk7Ci0gICAgICAgIHVjLnNldFJlcXVlc3RQcm9wZXJ0eSgiUHJveHktYXV0aG9yaXphdGlvbiIsdXNlck5hbWVQYXNzd29yZC50b1N0cmluZygpKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB1YzsKLSAgICB9Ci0gICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICB9Ci0gICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgamF2YS5pby5JbnB1dFN0cmVhbSBmb3IgYSBVUkwgZ2l2ZW4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBVUkwuIFRoaXMgY2xhc3MKLSAgICogZW5zdXJlcyB0aGF0IHByb3h5IHNldHRpbmdzIGluIFdTQUQgYXJlIHJlc3BlY3RlZC4KLSAgICogQHBhcmFtIHVybFN0cmluZyBTdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBVUkwuCi0gICAqIEByZXR1cm4gamF2YS5pby5JbnB1dFN0cmVhbSBJbnB1dFN0cmVhbSBmb3IgcmVhZGluZyB0aGUgVVJMIHN0cmVhbS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgSW5wdXRTdHJlYW0gZ2V0VVJMSW5wdXRTdHJlYW0oU3RyaW5nIHVybFN0cmluZykKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIFVSTENvbm5lY3Rpb24gdWMgPSBnZXRVUkxDb25uZWN0aW9uKHVybFN0cmluZyk7Ci0gICAgICBpZiAodWMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgSW5wdXRTdHJlYW0gaXMgPSB1Yy5nZXRJbnB1dFN0cmVhbSgpOwotICAgICAgICByZXR1cm4gaXM7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgVVJMIGZyb20gYSBzdHJpbmcuCi0gICAqIEBwYXJhbSB1cmxTdHJpbmcgU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgVVJMLgotICAgKiBAcmV0dXJuIFVSTCBqYXZhLmxhbmcuVVJMIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBVUkwuCi0gICAqIEB0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFVSTCBjcmVhdGVVUkwoU3RyaW5nIHVybFN0cmluZykgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbgotICB7Ci0gIAlyZXR1cm4gbmV3IFVSTCh1cmxTdHJpbmcpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZGlzY292ZXJ5L1dlYlNlcnZpY2VzUGFyc2VyRXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZGlzY292ZXJ5L1dlYlNlcnZpY2VzUGFyc2VyRXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNzhiY2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Rpc2NvdmVyeS9XZWJTZXJ2aWNlc1BhcnNlckV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeTsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci0KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlc1BhcnNlckV4dCBleHRlbmRzIFdlYlNlcnZpY2VzUGFyc2VyIHsKLQotICAgIHB1YmxpYyBXZWJTZXJ2aWNlc1BhcnNlckV4dCgpIHsKLSAgICAgICAgc3VwZXIoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgV2ViU2VydmljZXNQYXJzZXJFeHQoU3RyaW5nIHVyaSkgewotICAgICAgICBzdXBlcih1cmkpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBVUkwgY3JlYXRlVVJMKFN0cmluZyB1cmwpIHRocm93cyBNYWxmb3JtZWRVUkxFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gTmV0VXRpbHMuY3JlYXRlVVJMKHVybCk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNDb25zdGFudHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvRmF2b3JpdGVzQ29uc3RhbnRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMDU5M2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNDb25zdGFudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzQ29uc3RhbnRzCi17Ci0gIC8vIE5hbWVzcGFjZQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FU1BBQ0VfV1NETCA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVTUEFDRV9VRERJX1YxID0gInVybjp1ZGRpLW9yZzphcGkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FU1BBQ0VfVURESV9WMiA9ICJ1cm46dWRkaS1vcmc6YXBpX3YyIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRVNQQUNFX1VERElfQklORElORyA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDAxLzEwL2luc3BlY3Rpb24vdWRkaS8iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FU1BBQ0VfV1NJTF9JTlNQRUNUSU9OID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDEvMTAvaW5zcGVjdGlvbi8iOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNMaW5rLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc0xpbmsuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM4MTBkZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc0xpbmsuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzOwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkxpbms7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNMaW5rCi17Ci0gIHByb3RlY3RlZCBMaW5rIGxpbmtfOwotCi0gIHB1YmxpYyBGYXZvcml0ZXNMaW5rKCkKLSAgewotICAgIGxpbmtfID0gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBMaW5rIGdldExpbmsoKQotICB7Ci0gICAgcmV0dXJuIGxpbmtfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TGluayhMaW5rIGxpbmspCi0gIHsKLSAgICBsaW5rXyA9IGxpbms7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvRmF2b3JpdGVzUmVnaXN0cnlUeXBlQWJzdHJhY3QuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvRmF2b3JpdGVzUmVnaXN0cnlUeXBlQWJzdHJhY3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhiMTU2NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1JlZ2lzdHJ5VHlwZUFic3RyYWN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5mYXZvcml0ZXM7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5BYnN0cmFjdDsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkluc3BlY3Rpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkxpbms7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2VOYW1lOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5XU0lMRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLldTSUxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLmV4dGVuc2lvbi51ZGRpLkJ1c2luZXNzRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLmV4dGVuc2lvbi51ZGRpLlNlcnZpY2VEZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuaW1wbC5BYnN0cmFjdEltcGw7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLmltcGwuRGVzY3JpcHRpb25JbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5pbXBsLkxpbmtJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5pbXBsLlNlcnZpY2VJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5pbXBsLlNlcnZpY2VOYW1lSW1wbDsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuaW1wbC5leHRlbnNpb24udWRkaS5CdXNpbmVzc0Rlc2NyaXB0aW9uSW1wbDsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuaW1wbC5leHRlbnNpb24udWRkaS5TZXJ2aWNlRGVzY3JpcHRpb25JbXBsOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5CdXNpbmVzc0tleTsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuU2VydmljZUtleTsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEZhdm9yaXRlc1JlZ2lzdHJ5VHlwZUFic3RyYWN0IGltcGxlbWVudHMgSUZhdm9yaXRlc1JlZ2lzdHJ5VHlwZQotewotICBwdWJsaWMgRmF2b3JpdGVzUmVnaXN0cnlUeXBlQWJzdHJhY3QoKQotICB7Ci0gIH0KLQotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFJlYWRMb2NhdGlvbigpOwotICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGdldFdyaXRlTG9jYXRpb24oKTsKLSAgcHJvdGVjdGVkIGFic3RyYWN0IFdTSUxEb2N1bWVudCBnZXRXU0lMRG9jdW1lbnQoKTsKLQotICBwdWJsaWMgdm9pZCBpbml0KCkKLSAgewotICAgIGdldFdTSUxEb2N1bWVudCgpOwotICB9Ci0KLSAgcHJvdGVjdGVkIFdTSUxEb2N1bWVudCBsb2FkV1NJTERvY3VtZW50KFN0cmluZyBwYXRoLCBib29sZWFuIGZvcmNlKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgV1NJTERvY3VtZW50IHdzaWxEb2MgPSBXU0lMRG9jdW1lbnQubmV3SW5zdGFuY2UoKTsKLSAgICAgIHdzaWxEb2MucmVhZChuZXcgRmlsZVJlYWRlcihuZXcgRmlsZShwYXRoKSkpOwotICAgICAgcmV0dXJuIHdzaWxEb2M7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLSAgICB7Ci0gICAgICBpZiAoZm9yY2UpCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIFdTSUxEb2N1bWVudC5uZXdJbnN0YW5jZSgpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChFeGNlcHRpb24gdDIpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEZhdm9yaXRlc1ZlcnNpb24oKQotICB7Ci0gICAgV1NJTERvY3VtZW50IHdzaWxEb2MgPSBnZXRXU0lMRG9jdW1lbnQoKTsKLSAgICBJbnNwZWN0aW9uIGluc3BlY3Rpb24gPSB3c2lsRG9jLmdldEluc3BlY3Rpb24oKTsKLSAgICBBYnN0cmFjdFtdIGFic3RyYWN0cyA9IGluc3BlY3Rpb24uZ2V0QWJzdHJhY3RzKCk7Ci0gICAgaWYgKGFic3RyYWN0cy5sZW5ndGggPiAwKQotICAgICAgcmV0dXJuIGFic3RyYWN0c1swXS5nZXRUZXh0KCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRGYXZvcml0ZXNWZXJzaW9uKFN0cmluZyB2ZXJzaW9uKQotICB7Ci0gICAgV1NJTERvY3VtZW50IHdzaWxEb2MgPSBnZXRXU0lMRG9jdW1lbnQoKTsKLSAgICBJbnNwZWN0aW9uIGluc3BlY3Rpb24gPSB3c2lsRG9jLmdldEluc3BlY3Rpb24oKTsKLSAgICBBYnN0cmFjdCBhYnN0ID0gbmV3IEFic3RyYWN0SW1wbCgpOwotICAgIGFic3Quc2V0VGV4dCh2ZXJzaW9uKTsKLSAgICBpbnNwZWN0aW9uLnJlbW92ZUFic3RyYWN0cygpOwotICAgIGluc3BlY3Rpb24uYWRkQWJzdHJhY3QoYWJzdCk7Ci0gIH0KLQotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2F2ZSgpIHRocm93cyBXU0lMRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbgotICB7Ci0gICAgV1NJTERvY3VtZW50IHdzaWxEb2MgPSBnZXRXU0lMRG9jdW1lbnQoKTsKLSAgICBpZiAod3NpbERvYyAhPSBudWxsKQotICAgICAgd3NpbERvYy53cml0ZShnZXRXcml0ZUxvY2F0aW9uKCkpOwotICB9Ci0KLSAgcHVibGljIElGYXZvcml0ZXNVRERJUmVnaXN0cnlbXSBnZXRGYXZvcml0ZXNVRERJUmVnaXN0cmllcygpCi0gIHsKLSAgICBMaW5rW10gbGlua3MgPSBsb2FkVURESVJlZ2lzdHJpZXMoKTsKLSAgICBGYXZvcml0ZXNVRERJUmVnaXN0cnlbXSByZWdpc3RyaWVzID0gbmV3IEZhdm9yaXRlc1VERElSZWdpc3RyeVtsaW5rcy5sZW5ndGhdOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgcmVnaXN0cmllc1tpXSA9IG5ldyBGYXZvcml0ZXNVRERJUmVnaXN0cnkoKTsKLSAgICAgIHJlZ2lzdHJpZXNbaV0uc2V0TGluayhsaW5rc1tpXSk7Ci0gICAgfQotICAgIHJldHVybiByZWdpc3RyaWVzOwotICB9Ci0KLSAgcHVibGljIElGYXZvcml0ZXNVRERJQnVzaW5lc3NbXSBnZXRGYXZvcml0ZXNVRERJQnVzaW5lc3NlcygpCi0gIHsKLSAgICBMaW5rW10gbGlua3MgPSBsb2FkVURESUJ1c2luZXNzZXMoKTsKLSAgICBGYXZvcml0ZXNVRERJQnVzaW5lc3NbXSBidXNpbmVzc2VzID0gbmV3IEZhdm9yaXRlc1VERElCdXNpbmVzc1tsaW5rcy5sZW5ndGhdOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgYnVzaW5lc3Nlc1tpXSA9IG5ldyBGYXZvcml0ZXNVRERJQnVzaW5lc3MoKTsKLSAgICAgIGJ1c2luZXNzZXNbaV0uc2V0TGluayhsaW5rc1tpXSk7Ci0gICAgfQotICAgIHJldHVybiBidXNpbmVzc2VzOwotICB9Ci0KLSAgcHVibGljIElGYXZvcml0ZXNVRERJU2VydmljZVtdIGdldEZhdm9yaXRlc1VERElTZXJ2aWNlcygpCi0gIHsKLSAgICBTZXJ2aWNlW10gc2VydmljZXMgPSBsb2FkVURESVNlcnZpY2VzKCk7Ci0gICAgRmF2b3JpdGVzVURESVNlcnZpY2VbXSB1ZGRpU2VydmljZXMgPSBuZXcgRmF2b3JpdGVzVURESVNlcnZpY2Vbc2VydmljZXMubGVuZ3RoXTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZpY2VzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIHVkZGlTZXJ2aWNlc1tpXSA9IG5ldyBGYXZvcml0ZXNVRERJU2VydmljZSgpOwotICAgICAgdWRkaVNlcnZpY2VzW2ldLnNldFNlcnZpY2Uoc2VydmljZXNbaV0pOwotICAgIH0KLSAgICByZXR1cm4gdWRkaVNlcnZpY2VzOwotICB9Ci0KLSAgcHVibGljIElGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZVtdIGdldEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlcygpCi0gIHsKLSAgICBTZXJ2aWNlW10gc2VydmljZXMgPSBsb2FkVURESVNlcnZpY2VJbnRlcmZhY2VzKCk7Ci0gICAgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VbXSBzZXJJbnRzID0gbmV3IEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlW3NlcnZpY2VzLmxlbmd0aF07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2aWNlcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBzZXJJbnRzW2ldID0gbmV3IEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlKCk7Ci0gICAgICBzZXJJbnRzW2ldLnNldFNlcnZpY2Uoc2VydmljZXNbaV0pOwotICAgIH0KLSAgICByZXR1cm4gc2VySW50czsKLSAgfQotCi0gIHB1YmxpYyBJRmF2b3JpdGVzV1NETFtdIGdldEZhdm9yaXRlc1dTRExzKCkKLSAgewotICAgIFNlcnZpY2VbXSBzZXJ2aWNlcyA9IGxvYWRXU0RMU2VydmljZXMoKTsKLSAgICBGYXZvcml0ZXNXU0RMW10gd3NkbHMgPSBuZXcgRmF2b3JpdGVzV1NETFtzZXJ2aWNlcy5sZW5ndGhdOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VydmljZXMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgd3NkbHNbaV0gPSBuZXcgRmF2b3JpdGVzV1NETCgpOwotICAgICAgd3NkbHNbaV0uc2V0U2VydmljZShzZXJ2aWNlc1tpXSk7Ci0gICAgfQotICAgIHJldHVybiB3c2RsczsKLSAgfQotCi0gIHB1YmxpYyBJRmF2b3JpdGVzV1NJTFtdIGdldEZhdm9yaXRlc1dTSUxzKCkKLSAgewotICAgIExpbmtbXSBsaW5rcyA9IGxvYWRXU0lMcygpOwotICAgIEZhdm9yaXRlc1dTSUxbXSB3c2lscyA9IG5ldyBGYXZvcml0ZXNXU0lMW2xpbmtzLmxlbmd0aF07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICB3c2lsc1tpXSA9IG5ldyBGYXZvcml0ZXNXU0lMKCk7Ci0gICAgICB3c2lsc1tpXS5zZXRMaW5rKGxpbmtzW2ldKTsKLSAgICB9Ci0gICAgcmV0dXJuIHdzaWxzOwotICB9Ci0KLSAgcHVibGljIExpbmtbXSBsb2FkVURESVJlZ2lzdHJpZXMoKSB7Ci0gICAgcmV0dXJuIGxvYWRMaW5rc0J5TmFtZXNwYWNlKEZhdm9yaXRlc0NvbnN0YW50cy5OQU1FU1BBQ0VfVURESV9WMSk7Ci0gIH0KLSAgICAKLSAgcHVibGljIExpbmtbXSBsb2FkVURESUJ1c2luZXNzZXMoKSB7Ci0gICAgcmV0dXJuIGxvYWRMaW5rc0J5TmFtZXNwYWNlKEZhdm9yaXRlc0NvbnN0YW50cy5OQU1FU1BBQ0VfVURESV9WMik7Ci0gIH0KLQotICBwdWJsaWMgU2VydmljZVtdIGxvYWRVRERJU2VydmljZXMoKSB7Ci0gICAgcmV0dXJuIGxvYWRTZXJ2aWNlc0J5TmFtZXNwYWNlKEZhdm9yaXRlc0NvbnN0YW50cy5OQU1FU1BBQ0VfVURESV9WMik7Ci0gIH0KLQotICBwdWJsaWMgU2VydmljZVtdIGxvYWRVRERJU2VydmljZUludGVyZmFjZXMoKSB7Ci0gICAgcmV0dXJuIGxvYWRTZXJ2aWNlc0J5TmFtZXNwYWNlKEZhdm9yaXRlc0NvbnN0YW50cy5OQU1FU1BBQ0VfVURESV9WMSk7Ci0gIH0KLQotICBwdWJsaWMgU2VydmljZVtdIGxvYWRXU0RMU2VydmljZXMoKSB7Ci0gICAgcmV0dXJuIGxvYWRTZXJ2aWNlc0J5TmFtZXNwYWNlKEZhdm9yaXRlc0NvbnN0YW50cy5OQU1FU1BBQ0VfV1NETCk7Ci0gIH0KLQotICBwdWJsaWMgTGlua1tdIGxvYWRXU0lMcygpIHsKLSAgICByZXR1cm4gbG9hZExpbmtzQnlOYW1lc3BhY2UoRmF2b3JpdGVzQ29uc3RhbnRzLk5BTUVTUEFDRV9XU0lMX0lOU1BFQ1RJT04pOwotICB9Ci0KLSAgcHJpdmF0ZSBTZXJ2aWNlW10gbG9hZFNlcnZpY2VzQnlOYW1lc3BhY2UoU3RyaW5nIG5hbWVzcGFjZSkgewotICAgIFZlY3RvciBzZXJ2aWNlVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIFdTSUxEb2N1bWVudCB3c2lsRG9jID0gZ2V0V1NJTERvY3VtZW50KCk7Ci0gICAgaWYgKHdzaWxEb2MgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJbnNwZWN0aW9uIGluc3BlY3Rpb24gPSB3c2lsRG9jLmdldEluc3BlY3Rpb24oKTsKLSAgICAgIFNlcnZpY2VbXSBzZXJ2aWNlcyA9IGluc3BlY3Rpb24uZ2V0U2VydmljZXMoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VydmljZXMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgICBEZXNjcmlwdGlvbltdIGRlc2MgPSBzZXJ2aWNlc1tpXS5nZXREZXNjcmlwdGlvbnMoKTsKLSAgICAgICAgIGlmIChkZXNjWzBdLmdldFJlZmVyZW5jZWROYW1lc3BhY2UoKS5lcXVhbHMobmFtZXNwYWNlKSkKLSAgICAgICAgICAgc2VydmljZVZlY3Rvci5hZGQoc2VydmljZXNbaV0pOwotICAgICAgfQotICAgIH0KLSAgICBTZXJ2aWNlW10gc2VydmljZXMgPSBuZXcgU2VydmljZVtzZXJ2aWNlVmVjdG9yLnNpemUoKV07Ci0gICAgc2VydmljZVZlY3Rvci5jb3B5SW50byhzZXJ2aWNlcyk7Ci0gICAgcmV0dXJuIHNlcnZpY2VzOwotICB9Ci0KLSAgcHJpdmF0ZSBMaW5rW10gbG9hZExpbmtzQnlOYW1lc3BhY2UoU3RyaW5nIG5hbWVzcGFjZSkgewotICAgIFZlY3RvciBsaW5rVmVjdG9yID0gbmV3IFZlY3RvcigpOwotICAgIFdTSUxEb2N1bWVudCB3c2lsRG9jID0gZ2V0V1NJTERvY3VtZW50KCk7Ci0gICAgaWYgKHdzaWxEb2MgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJbnNwZWN0aW9uIGluc3BlY3Rpb24gPSB3c2lsRG9jLmdldEluc3BlY3Rpb24oKTsKLSAgICAgIExpbmtbXSBsaW5rcyA9IGluc3BlY3Rpb24uZ2V0TGlua3MoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIGlmIChsaW5rc1tpXS5nZXRSZWZlcmVuY2VkTmFtZXNwYWNlKCkuZXF1YWxzKG5hbWVzcGFjZSkpCi0gICAgICAgICAgbGlua1ZlY3Rvci5hZGQobGlua3NbaV0pOwotICAgICAgfQotICAgIH0KLSAgICBMaW5rW10gbGlua3MgPSBuZXcgTGlua1tsaW5rVmVjdG9yLnNpemUoKV07Ci0gICAgbGlua1ZlY3Rvci5jb3B5SW50byhsaW5rcyk7Ci0gICAgcmV0dXJuIGxpbmtzOwotICB9Ci0KLSAgcHVibGljIHZvaWQgYWRkRmF2b3JpdGVzVURESVJlZ2lzdHJ5KElGYXZvcml0ZXNVRERJUmVnaXN0cnkgcmVnaXN0cnkpCi0gIHsKLSAgICBhZGRVRERJUmVnaXN0cnkocmVnaXN0cnkuZ2V0TmFtZSgpLCByZWdpc3RyeS5nZXRJbnF1aXJ5VVJMKCksIHJlZ2lzdHJ5LmdldFB1Ymxpc2hVUkwoKSwgcmVnaXN0cnkuZ2V0UmVnaXN0cmF0aW9uVVJMKCkpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgYWRkRmF2b3JpdGVzVURESUJ1c2luZXNzKElGYXZvcml0ZXNVRERJQnVzaW5lc3MgYnVzaW5lc3MpCi0gIHsKLSAgICBhZGRVRERJQnVzaW5lc3MoYnVzaW5lc3MuZ2V0TmFtZSgpLCBidXNpbmVzcy5nZXRJbnF1aXJ5VVJMKCksIGJ1c2luZXNzLmdldEJ1c2luZXNzS2V5KCkpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgYWRkRmF2b3JpdGVzVURESVNlcnZpY2UoSUZhdm9yaXRlc1VERElTZXJ2aWNlIHNlcnZpY2UpCi0gIHsKLSAgICBhZGRVRERJU2VydmljZShzZXJ2aWNlLmdldE5hbWUoKSwgc2VydmljZS5nZXRJbnF1aXJ5VVJMKCksIHNlcnZpY2UuZ2V0U2VydmljZUtleSgpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGFkZEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlKElGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZSBzZXJ2aWNlSW50ZXJmYWNlKQotICB7Ci0gICAgYWRkVURESVNlcnZpY2VJbnRlcmZhY2Uoc2VydmljZUludGVyZmFjZS5nZXROYW1lKCksIHNlcnZpY2VJbnRlcmZhY2UuZ2V0SW5xdWlyeVVSTCgpLCBzZXJ2aWNlSW50ZXJmYWNlLmdldFNlcnZpY2VJbnRlcmZhY2VLZXkoKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRGYXZvcml0ZXNXU0RMKElGYXZvcml0ZXNXU0RMIHdzZGwpCi0gIHsKLSAgICBhZGRXU0RMU2VydmljZSh3c2RsLmdldFdzZGxVcmwoKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRGYXZvcml0ZXNXU0lMKElGYXZvcml0ZXNXU0lMIHdzaWwpCi0gIHsKLSAgICBhZGRXU0lMTGluayh3c2lsLmdldFdzaWxVcmwoKSk7Ci0gIH0KLQotICBwdWJsaWMgTGluayBhZGRVRERJUmVnaXN0cnkoU3RyaW5nIHJlZ2lzdHJ5TmFtZSwgU3RyaW5nIGlucXVpcnlBUEksIFN0cmluZyBwdWJsaXNoQVBJLCBTdHJpbmcgcmVnaXN0cmF0aW9uVVJMKSB7Ci0gICAgV1NJTERvY3VtZW50IHdzaWxEb2MgPSBnZXRXU0lMRG9jdW1lbnQoKTsKLSAgICBJbnNwZWN0aW9uIGluc3BlY3Rpb24gPSB3c2lsRG9jLmdldEluc3BlY3Rpb24oKTsKLSAgICBMaW5rIGxpbmsgPSBuZXcgTGlua0ltcGwoKTsKLSAgICAvLyByZWdpc3RyeSBuYW1lCi0gICAgQWJzdHJhY3QgYWJzdCA9IG5ldyBBYnN0cmFjdEltcGwoKTsKLSAgICBhYnN0LnNldFRleHQocmVnaXN0cnlOYW1lKTsKLSAgICBsaW5rLmFkZEFic3RyYWN0KGFic3QpOwotICAgIC8vIGlucXVpcnkgVVJMCi0gICAgQWJzdHJhY3QgYWJzdDIgPSBuZXcgQWJzdHJhY3RJbXBsKCk7Ci0gICAgYWJzdDIuc2V0VGV4dChpbnF1aXJ5QVBJKTsKLSAgICBsaW5rLmFkZEFic3RyYWN0KGFic3QyKTsKLSAgICAvLyBwdWJsaXNoIFVSTAotICAgIEFic3RyYWN0IGFic3QzID0gbmV3IEFic3RyYWN0SW1wbCgpOwotICAgIGlmIChwdWJsaXNoQVBJICE9IG51bGwpCi0gICAgICBhYnN0My5zZXRUZXh0KHB1Ymxpc2hBUEkpOwotICAgIGVsc2UKLSAgICAgIGFic3QzLnNldFRleHQoIiIpOwotICAgIGxpbmsuYWRkQWJzdHJhY3QoYWJzdDMpOwotICAgIC8vIHJlZ2lzdHJhdGlvbiBVUkwKLSAgICBBYnN0cmFjdCBhYnN0NCA9IG5ldyBBYnN0cmFjdEltcGwoKTsKLSAgICBpZiAocmVnaXN0cmF0aW9uVVJMICE9IG51bGwpCi0gICAgICBhYnN0NC5zZXRUZXh0KHJlZ2lzdHJhdGlvblVSTCk7Ci0gICAgZWxzZQotICAgICAgYWJzdDQuc2V0VGV4dCgiIik7Ci0gICAgbGluay5hZGRBYnN0cmFjdChhYnN0NCk7Ci0gICAgLy8gYWRkIG5hbWVzcGFjZQotICAgIGxpbmsuc2V0UmVmZXJlbmNlZE5hbWVzcGFjZShGYXZvcml0ZXNDb25zdGFudHMuTkFNRVNQQUNFX1VERElfVjEpOwotICAgIGluc3BlY3Rpb24uYWRkTGluayhsaW5rKTsKLSAgICByZXR1cm4gbGluazsKLSAgfQotCi0gIHB1YmxpYyBMaW5rIGFkZFVERElCdXNpbmVzcyhTdHJpbmcgYnVzaW5lc3NOYW1lLCBTdHJpbmcgaW5xdWlyeUFQSSwgU3RyaW5nIGJ1c2luZXNzS2V5KSB7Ci0gICAgV1NJTERvY3VtZW50IHdzaWxEb2MgPSBnZXRXU0lMRG9jdW1lbnQoKTsKLSAgICBJbnNwZWN0aW9uIGluc3BlY3Rpb24gPSB3c2lsRG9jLmdldEluc3BlY3Rpb24oKTsKLSAgICBMaW5rIGxpbmsgPSBuZXcgTGlua0ltcGwoKTsKLSAgICBBYnN0cmFjdCBhYnN0ID0gbmV3IEFic3RyYWN0SW1wbCgpOwotICAgIGFic3Quc2V0VGV4dChidXNpbmVzc05hbWUpOwotICAgIGxpbmsuYWRkQWJzdHJhY3QoYWJzdCk7Ci0gICAgbGluay5zZXRSZWZlcmVuY2VkTmFtZXNwYWNlKEZhdm9yaXRlc0NvbnN0YW50cy5OQU1FU1BBQ0VfVURESV9WMik7Ci0gICAgQnVzaW5lc3NEZXNjcmlwdGlvbiBiZCA9IG5ldyBCdXNpbmVzc0Rlc2NyaXB0aW9uSW1wbCgpOwotICAgIGJkLnNldExvY2F0aW9uKGlucXVpcnlBUEkpOwotICAgIEJ1c2luZXNzS2V5IGtleSA9IG5ldyBCdXNpbmVzc0tleShidXNpbmVzc0tleSk7Ci0gICAgYmQuc2V0QnVzaW5lc3NLZXkoa2V5KTsKLSAgICBsaW5rLnNldEV4dGVuc2lvbkVsZW1lbnQoYmQpOwotICAgIGluc3BlY3Rpb24uYWRkTGluayhsaW5rKTsKLSAgICByZXR1cm4gbGluazsKLSAgfQotCi0gIHB1YmxpYyBTZXJ2aWNlIGFkZFVERElTZXJ2aWNlKFN0cmluZyBzZXJ2aWNlTmFtZSwgU3RyaW5nIGlucXVpcnlBUEksIFN0cmluZyBzZXJ2aWNlS2V5KSB7Ci0gICAgV1NJTERvY3VtZW50IHdzaWxEb2MgPSBnZXRXU0lMRG9jdW1lbnQoKTsKLSAgICBJbnNwZWN0aW9uIGluc3BlY3Rpb24gPSB3c2lsRG9jLmdldEluc3BlY3Rpb24oKTsKLSAgICBTZXJ2aWNlIHNlcnZpY2UgPSBuZXcgU2VydmljZUltcGwoKTsKLSAgICBTZXJ2aWNlTmFtZSBuYW1lID0gbmV3IFNlcnZpY2VOYW1lSW1wbCgpOwotICAgIG5hbWUuc2V0VGV4dChzZXJ2aWNlTmFtZSk7Ci0gICAgc2VydmljZS5hZGRTZXJ2aWNlTmFtZShuYW1lKTsKLSAgICBEZXNjcmlwdGlvbiBkZXNjID0gbmV3IERlc2NyaXB0aW9uSW1wbCgpOwotICAgIGRlc2Muc2V0UmVmZXJlbmNlZE5hbWVzcGFjZShGYXZvcml0ZXNDb25zdGFudHMuTkFNRVNQQUNFX1VERElfVjIpOwotICAgIFNlcnZpY2VEZXNjcmlwdGlvbiBzZCA9IG5ldyBTZXJ2aWNlRGVzY3JpcHRpb25JbXBsKCk7Ci0gICAgc2Quc2V0TG9jYXRpb24oaW5xdWlyeUFQSSk7Ci0gICAgU2VydmljZUtleSBrZXkgPSBuZXcgU2VydmljZUtleShzZXJ2aWNlS2V5KTsKLSAgICBzZC5zZXRTZXJ2aWNlS2V5KGtleSk7Ci0gICAgZGVzYy5zZXRFeHRlbnNpb25FbGVtZW50KHNkKTsKLSAgICBzZXJ2aWNlLmFkZERlc2NyaXB0aW9uKGRlc2MpOwotICAgIGluc3BlY3Rpb24uYWRkU2VydmljZShzZXJ2aWNlKTsKLSAgICByZXR1cm4gc2VydmljZTsKLSAgfQotCi0gIHB1YmxpYyBTZXJ2aWNlIGFkZFVERElTZXJ2aWNlSW50ZXJmYWNlKFN0cmluZyBzZXJJbnROYW1lLCBTdHJpbmcgaW5xdWlyeUFQSSwgU3RyaW5nIHNlckludEtleSkgewotICAgIFdTSUxEb2N1bWVudCB3c2lsRG9jID0gZ2V0V1NJTERvY3VtZW50KCk7Ci0gICAgSW5zcGVjdGlvbiBpbnNwZWN0aW9uID0gd3NpbERvYy5nZXRJbnNwZWN0aW9uKCk7Ci0gICAgU2VydmljZSBzZXJ2aWNlID0gbmV3IFNlcnZpY2VJbXBsKCk7Ci0gICAgU2VydmljZU5hbWUgbmFtZSA9IG5ldyBTZXJ2aWNlTmFtZUltcGwoKTsKLSAgICBuYW1lLnNldFRleHQoc2VySW50TmFtZSk7Ci0gICAgc2VydmljZS5hZGRTZXJ2aWNlTmFtZShuYW1lKTsKLSAgICBEZXNjcmlwdGlvbiBkZXNjID0gbmV3IERlc2NyaXB0aW9uSW1wbCgpOwotICAgIGRlc2Muc2V0UmVmZXJlbmNlZE5hbWVzcGFjZShGYXZvcml0ZXNDb25zdGFudHMuTkFNRVNQQUNFX1VERElfVjEpOwotICAgIFNlcnZpY2VEZXNjcmlwdGlvbiBzZCA9IG5ldyBTZXJ2aWNlRGVzY3JpcHRpb25JbXBsKCk7Ci0gICAgc2Quc2V0TG9jYXRpb24oaW5xdWlyeUFQSSk7Ci0gICAgU2VydmljZUtleSBrZXkgPSBuZXcgU2VydmljZUtleShzZXJJbnRLZXkpOwotICAgIHNkLnNldFNlcnZpY2VLZXkoa2V5KTsKLSAgICBkZXNjLnNldEV4dGVuc2lvbkVsZW1lbnQoc2QpOwotICAgIHNlcnZpY2UuYWRkRGVzY3JpcHRpb24oZGVzYyk7Ci0gICAgaW5zcGVjdGlvbi5hZGRTZXJ2aWNlKHNlcnZpY2UpOwotICAgIHJldHVybiBzZXJ2aWNlOwotICB9Ci0KLSAgcHVibGljIFNlcnZpY2UgYWRkV1NETFNlcnZpY2UoU3RyaW5nIHVybCkgewotICAgIFdTSUxEb2N1bWVudCB3c2lsRG9jID0gZ2V0V1NJTERvY3VtZW50KCk7Ci0gICAgSW5zcGVjdGlvbiBpbnNwZWN0aW9uID0gd3NpbERvYy5nZXRJbnNwZWN0aW9uKCk7Ci0gICAgU2VydmljZSBzZXJ2aWNlID0gbmV3IFNlcnZpY2VJbXBsKCk7Ci0gICAgRGVzY3JpcHRpb24gZGVzYyA9IG5ldyBEZXNjcmlwdGlvbkltcGwoKTsKLSAgICBkZXNjLnNldExvY2F0aW9uKHVybCk7Ci0gICAgZGVzYy5zZXRSZWZlcmVuY2VkTmFtZXNwYWNlKEZhdm9yaXRlc0NvbnN0YW50cy5OQU1FU1BBQ0VfV1NETCk7Ci0gICAgc2VydmljZS5hZGREZXNjcmlwdGlvbihkZXNjKTsKLSAgICBpbnNwZWN0aW9uLmFkZFNlcnZpY2Uoc2VydmljZSk7Ci0gICAgcmV0dXJuIHNlcnZpY2U7Ci0gIH0KLQotICBwdWJsaWMgTGluayBhZGRXU0lMTGluayhTdHJpbmcgdXJsKSB7Ci0gICAgV1NJTERvY3VtZW50IHdzaWxEb2MgPSBnZXRXU0lMRG9jdW1lbnQoKTsKLSAgICBJbnNwZWN0aW9uIGluc3BlY3Rpb24gPSB3c2lsRG9jLmdldEluc3BlY3Rpb24oKTsKLSAgICBMaW5rIGxpbmsgPSBuZXcgTGlua0ltcGwoKTsKLSAgICBsaW5rLnNldExvY2F0aW9uKHVybCk7Ci0gICAgbGluay5zZXRSZWZlcmVuY2VkTmFtZXNwYWNlKEZhdm9yaXRlc0NvbnN0YW50cy5OQU1FU1BBQ0VfV1NJTF9JTlNQRUNUSU9OKTsKLSAgICBpbnNwZWN0aW9uLmFkZExpbmsobGluayk7Ci0gICAgcmV0dXJuIGxpbms7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmVGYXZvcml0ZXNVRERJUmVnaXN0cnkoSUZhdm9yaXRlc1VERElSZWdpc3RyeSByZWdpc3RyeSkKLSAgewotICAgIGlmIChyZWdpc3RyeSBpbnN0YW5jZW9mIEZhdm9yaXRlc1VERElSZWdpc3RyeSkKLSAgICAgIHJlbW92ZUxpbmsoKChGYXZvcml0ZXNVRERJUmVnaXN0cnkpcmVnaXN0cnkpLmdldExpbmsoKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmVGYXZvcml0ZXNVRERJQnVzaW5lc3MoSUZhdm9yaXRlc1VERElCdXNpbmVzcyBidXNpbmVzcykKLSAgewotICAgIGlmIChidXNpbmVzcyBpbnN0YW5jZW9mIEZhdm9yaXRlc1VERElCdXNpbmVzcykKLSAgICAgIHJlbW92ZUxpbmsoKChGYXZvcml0ZXNVRERJQnVzaW5lc3MpYnVzaW5lc3MpLmdldExpbmsoKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmVGYXZvcml0ZXNVRERJU2VydmljZShJRmF2b3JpdGVzVURESVNlcnZpY2Ugc2VydmljZSkKLSAgewotICAgIGlmIChzZXJ2aWNlIGluc3RhbmNlb2YgRmF2b3JpdGVzVURESVNlcnZpY2UpCi0gICAgICByZW1vdmVTZXJ2aWNlKCgoRmF2b3JpdGVzVURESVNlcnZpY2Upc2VydmljZSkuZ2V0U2VydmljZSgpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlbW92ZUZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlKElGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZSBzZXJ2aWNlSW50ZXJmYWNlKQotICB7Ci0gICAgaWYgKHNlcnZpY2VJbnRlcmZhY2UgaW5zdGFuY2VvZiBGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZSkKLSAgICAgIHJlbW92ZVNlcnZpY2UoKChGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZSlzZXJ2aWNlSW50ZXJmYWNlKS5nZXRTZXJ2aWNlKCkpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVtb3ZlRmF2b3JpdGVzV1NETChJRmF2b3JpdGVzV1NETCB3c2RsKQotICB7Ci0gICAgaWYgKHdzZGwgaW5zdGFuY2VvZiBGYXZvcml0ZXNXU0RMKQotICAgICAgcmVtb3ZlU2VydmljZSgoKEZhdm9yaXRlc1dTREwpd3NkbCkuZ2V0U2VydmljZSgpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlbW92ZUZhdm9yaXRlc1dTSUwoSUZhdm9yaXRlc1dTSUwgd3NpbCkKLSAgewotICAgIGlmICh3c2lsIGluc3RhbmNlb2YgRmF2b3JpdGVzV1NJTCkKLSAgICAgIHJlbW92ZUxpbmsoKChGYXZvcml0ZXNXU0lMKXdzaWwpLmdldExpbmsoKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmVTZXJ2aWNlKFNlcnZpY2Ugc2VydmljZSkKLSAgewotICAgIFdTSUxEb2N1bWVudCB3c2lsRG9jID0gZ2V0V1NJTERvY3VtZW50KCk7Ci0gICAgSW5zcGVjdGlvbiBpbnNwZWN0aW9uID0gd3NpbERvYy5nZXRJbnNwZWN0aW9uKCk7Ci0gICAgaW5zcGVjdGlvbi5yZW1vdmVTZXJ2aWNlKHNlcnZpY2UpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVtb3ZlTGluayhMaW5rIGxpbmspCi0gIHsKLSAgICBXU0lMRG9jdW1lbnQgd3NpbERvYyA9IGdldFdTSUxEb2N1bWVudCgpOwotICAgIEluc3BlY3Rpb24gaW5zcGVjdGlvbiA9IHdzaWxEb2MuZ2V0SW5zcGVjdGlvbigpOwotICAgIGluc3BlY3Rpb24ucmVtb3ZlTGluayhsaW5rKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNTZXJ2aWNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1NlcnZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI3NWZlNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1NlcnZpY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzOwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2U7Ci0KLXB1YmxpYyBjbGFzcyBGYXZvcml0ZXNTZXJ2aWNlCi17Ci0gIHByb3RlY3RlZCBTZXJ2aWNlIHNlcnZpY2VfOwotCi0gIHB1YmxpYyBGYXZvcml0ZXNTZXJ2aWNlKCkKLSAgewotICAgIHNlcnZpY2VfID0gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBTZXJ2aWNlIGdldFNlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZpY2VfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZShTZXJ2aWNlIHNlcnZpY2UpCi0gIHsKLSAgICBzZXJ2aWNlXyA9IHNlcnZpY2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvRmF2b3JpdGVzVURESUJ1c2luZXNzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1VERElCdXNpbmVzcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDUxY2JmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvRmF2b3JpdGVzVURESUJ1c2luZXNzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmZhdm9yaXRlczsKLQotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5leHRlbnNpb24udWRkaS5CdXNpbmVzc0Rlc2NyaXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESUJ1c2luZXNzIGV4dGVuZHMgRmF2b3JpdGVzTGluayBpbXBsZW1lbnRzIElGYXZvcml0ZXNVRERJQnVzaW5lc3MKLXsKLSAgcHVibGljIEZhdm9yaXRlc1VERElCdXNpbmVzcygpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgewotICAgIHJldHVybiAobGlua18uZ2V0QWJzdHJhY3RzKCkpWzBdLmdldFRleHQoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5xdWlyeVVSTCgpCi0gIHsKLSAgICByZXR1cm4gKChCdXNpbmVzc0Rlc2NyaXB0aW9uKWxpbmtfLmdldEV4dGVuc2lvbkVsZW1lbnQoKSkuZ2V0TG9jYXRpb24oKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QnVzaW5lc3NLZXkoKQotICB7Ci0gICAgcmV0dXJuICgoQnVzaW5lc3NEZXNjcmlwdGlvbilsaW5rXy5nZXRFeHRlbnNpb25FbGVtZW50KCkpLmdldEJ1c2luZXNzS2V5KCkuZ2V0VGV4dCgpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0SW5xdWlyeVVSTChTdHJpbmcgaW5xdWlyeVVSTCkKLSAgewotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0QnVzaW5lc3NLZXkoU3RyaW5nIGtleSkKLSAgewotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1VERElSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNVRERJUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNlMjhhNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1VERElSZWdpc3RyeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5mYXZvcml0ZXM7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuQWJzdHJhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5wbHVnaW4uUGFyc2VyUGx1Z2luOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESVJlZ2lzdHJ5IGV4dGVuZHMgRmF2b3JpdGVzTGluayBpbXBsZW1lbnRzIElGYXZvcml0ZXNVRERJUmVnaXN0cnkKLXsKLSAgcHVibGljIEZhdm9yaXRlc1VERElSZWdpc3RyeSgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgewotICAgIFN0cmluZyBuYW1lID0gKGxpbmtfLmdldEFic3RyYWN0cygpKVswXS5nZXRUZXh0KCk7Ci0gICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgiJSIpKQotICAgIHsKLSAgICAgIFN0cmluZyB0cmFuc2xhdGVkTmFtZSA9IFBhcnNlclBsdWdpbi5nZXRNZXNzYWdlKG5hbWUpOwotICAgICAgaWYgKHRyYW5zbGF0ZWROYW1lICE9IG51bGwpCi0gICAgICAgIG5hbWUgPSB0cmFuc2xhdGVkTmFtZTsKLSAgICB9Ci0gICAgcmV0dXJuIG5hbWU7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldElucXVpcnlVUkwoKQotICB7Ci0gICAgcmV0dXJuIChsaW5rXy5nZXRBYnN0cmFjdHMoKSlbMV0uZ2V0VGV4dCgpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQdWJsaXNoVVJMKCkKLSAgewotICAgIEFic3RyYWN0W10gYWJzdHJhY3RzID0gbGlua18uZ2V0QWJzdHJhY3RzKCk7Ci0gICAgaWYgKGFic3RyYWN0cy5sZW5ndGggPiAyKQotICAgIHsKLSAgICAgIFN0cmluZyBwdWJsaXNoVVJMID0gYWJzdHJhY3RzWzJdLmdldFRleHQoKTsKLSAgICAgIGlmIChwdWJsaXNoVVJMICE9IG51bGwgJiYgcHVibGlzaFVSTC5sZW5ndGgoKSA+IDApCi0gICAgICAgIHJldHVybiBwdWJsaXNoVVJMOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVnaXN0cmF0aW9uVVJMKCkKLSAgewotICAgIEFic3RyYWN0W10gYWJzdHJhY3RzID0gbGlua18uZ2V0QWJzdHJhY3RzKCk7Ci0gICAgaWYgKGFic3RyYWN0cy5sZW5ndGggPiAzKQotICAgIHsKLSAgICAgIFN0cmluZyByZWdpc3RyYXRpb25VUkwgPSBhYnN0cmFjdHNbM10uZ2V0VGV4dCgpOwotICAgICAgaWYgKHJlZ2lzdHJhdGlvblVSTCAhPSBudWxsICYmIHJlZ2lzdHJhdGlvblVSTC5sZW5ndGgoKSA+IDApCi0gICAgICAgIHJldHVybiByZWdpc3RyYXRpb25VUkw7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIChsaW5rXy5nZXRBYnN0cmFjdHMoKSlbMF0uc2V0VGV4dChuYW1lKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldElucXVpcnlVUkwoU3RyaW5nIGlucXVpcnlVUkwpCi0gIHsKLSAgICAobGlua18uZ2V0QWJzdHJhY3RzKCkpWzFdLnNldFRleHQoaW5xdWlyeVVSTCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQdWJsaXNoVVJMKFN0cmluZyBwdWJsaXNoVVJMKQotICB7Ci0gICAgQWJzdHJhY3RbXSBhYnN0cmFjdHMgPSBsaW5rXy5nZXRBYnN0cmFjdHMoKTsKLSAgICBpZiAoYWJzdHJhY3RzLmxlbmd0aCA+IDIpCi0gICAgICBhYnN0cmFjdHNbMl0uc2V0VGV4dChwdWJsaXNoVVJMKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFJlZ2lzdHJhdGlvblVSTChTdHJpbmcgcmVnaXN0cmF0aW9uVVJMKQotICB7Ci0gICAgQWJzdHJhY3RbXSBhYnN0cmFjdHMgPSBsaW5rXy5nZXRBYnN0cmFjdHMoKTsKLSAgICBpZiAoYWJzdHJhY3RzLmxlbmd0aCA+IDMpCi0gICAgICBhYnN0cmFjdHNbM10uc2V0VGV4dChyZWdpc3RyYXRpb25VUkwpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1VERElTZXJ2aWNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0Zhdm9yaXRlc1VERElTZXJ2aWNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMDA5YTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNVRERJU2VydmljZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5mYXZvcml0ZXM7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLnVkZGkuU2VydmljZURlc2NyaXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgRmF2b3JpdGVzVURESVNlcnZpY2UgZXh0ZW5kcyBGYXZvcml0ZXNTZXJ2aWNlIGltcGxlbWVudHMgSUZhdm9yaXRlc1VERElTZXJ2aWNlCi17Ci0gIHB1YmxpYyBGYXZvcml0ZXNVRERJU2VydmljZSgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgewotICAgIHJldHVybiAoc2VydmljZV8uZ2V0U2VydmljZU5hbWVzKCkpWzBdLmdldFRleHQoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5xdWlyeVVSTCgpCi0gIHsKLSAgICBTZXJ2aWNlRGVzY3JpcHRpb24gc2QgPSAoU2VydmljZURlc2NyaXB0aW9uKShzZXJ2aWNlXy5nZXREZXNjcmlwdGlvbnMoKSlbMF0uZ2V0RXh0ZW5zaW9uRWxlbWVudCgpOwotICAgIHJldHVybiBzZC5nZXRMb2NhdGlvbigpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlS2V5KCkKLSAgewotICAgIFNlcnZpY2VEZXNjcmlwdGlvbiBzZCA9IChTZXJ2aWNlRGVzY3JpcHRpb24pKHNlcnZpY2VfLmdldERlc2NyaXB0aW9ucygpKVswXS5nZXRFeHRlbnNpb25FbGVtZW50KCk7Ci0gICAgcmV0dXJuIHNkLmdldFNlcnZpY2VLZXkoKS5nZXRUZXh0KCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRJbnF1aXJ5VVJMKFN0cmluZyBpbnF1aXJ5VVJMKQotICB7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlS2V5KFN0cmluZyBrZXkpCi0gIHsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjJkOWZjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzOwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLmV4dGVuc2lvbi51ZGRpLlNlcnZpY2VEZXNjcmlwdGlvbjsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlIGV4dGVuZHMgRmF2b3JpdGVzU2VydmljZSBpbXBsZW1lbnRzIElGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZQotewotICBwdWJsaWMgRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2UoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gKHNlcnZpY2VfLmdldFNlcnZpY2VOYW1lcygpKVswXS5nZXRUZXh0KCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldElucXVpcnlVUkwoKQotICB7Ci0gICAgU2VydmljZURlc2NyaXB0aW9uIHNkID0gKFNlcnZpY2VEZXNjcmlwdGlvbikoc2VydmljZV8uZ2V0RGVzY3JpcHRpb25zKCkpWzBdLmdldEV4dGVuc2lvbkVsZW1lbnQoKTsKLSAgICByZXR1cm4gc2QuZ2V0TG9jYXRpb24oKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZUludGVyZmFjZUtleSgpCi0gIHsKLSAgICBTZXJ2aWNlRGVzY3JpcHRpb24gc2QgPSAoU2VydmljZURlc2NyaXB0aW9uKShzZXJ2aWNlXy5nZXREZXNjcmlwdGlvbnMoKSlbMF0uZ2V0RXh0ZW5zaW9uRWxlbWVudCgpOwotICAgIHJldHVybiBzZC5nZXRTZXJ2aWNlS2V5KCkuZ2V0VGV4dCgpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0SW5xdWlyeVVSTChTdHJpbmcgaW5xdWlyeVVSTCkKLSAgewotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZUludGVyZmFjZUtleShTdHJpbmcga2V5KQotICB7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvRmF2b3JpdGVzV1NETC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNXU0RMLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNTMyYjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNXU0RMLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmZhdm9yaXRlczsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1dTREwgZXh0ZW5kcyBGYXZvcml0ZXNTZXJ2aWNlIGltcGxlbWVudHMgSUZhdm9yaXRlc1dTREwKLXsKLSAgcHVibGljIEZhdm9yaXRlc1dTREwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0V3NkbFVybCgpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRXc2RsVXJsKCkKLSAgewotICAgIHJldHVybiAoc2VydmljZV8uZ2V0RGVzY3JpcHRpb25zKCkpWzBdLmdldExvY2F0aW9uKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRXc2RsVXJsKFN0cmluZyB3c2RsVVJMKQotICB7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvRmF2b3JpdGVzV1NJTC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNXU0lMLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjY2YzMmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9GYXZvcml0ZXNXU0lMLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmZhdm9yaXRlczsKLQotcHVibGljIGNsYXNzIEZhdm9yaXRlc1dTSUwgZXh0ZW5kcyBGYXZvcml0ZXNMaW5rIGltcGxlbWVudHMgSUZhdm9yaXRlc1dTSUwKLXsKLSAgcHVibGljIEZhdm9yaXRlc1dTSUwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0V3NpbFVybCgpOwotICB9Ci0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdzaWxVcmwoKQotICB7Ci0gICAgcmV0dXJuIGxpbmtfLmdldExvY2F0aW9uKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRXc2lsVXJsKFN0cmluZyB3c2lsVVJMKQotICB7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvSUZhdm9yaXRlc1JlZ2lzdHJ5VHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9JRmF2b3JpdGVzUmVnaXN0cnlUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5Yzk0YTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9JRmF2b3JpdGVzUmVnaXN0cnlUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmZhdm9yaXRlczsKLQotcHVibGljIGludGVyZmFjZSBJRmF2b3JpdGVzUmVnaXN0cnlUeXBlCi17Ci0gIHB1YmxpYyBJRmF2b3JpdGVzVURESVJlZ2lzdHJ5W10gZ2V0RmF2b3JpdGVzVURESVJlZ2lzdHJpZXMoKTsKLSAgcHVibGljIElGYXZvcml0ZXNVRERJQnVzaW5lc3NbXSBnZXRGYXZvcml0ZXNVRERJQnVzaW5lc3NlcygpOwotICBwdWJsaWMgSUZhdm9yaXRlc1VERElTZXJ2aWNlW10gZ2V0RmF2b3JpdGVzVURESVNlcnZpY2VzKCk7Ci0gIHB1YmxpYyBJRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2VbXSBnZXRGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZXMoKTsKLSAgcHVibGljIElGYXZvcml0ZXNXU0RMW10gZ2V0RmF2b3JpdGVzV1NETHMoKTsKLSAgcHVibGljIElGYXZvcml0ZXNXU0lMW10gZ2V0RmF2b3JpdGVzV1NJTHMoKTsKLQotICBwdWJsaWMgdm9pZCBhZGRGYXZvcml0ZXNVRERJUmVnaXN0cnkoSUZhdm9yaXRlc1VERElSZWdpc3RyeSByZWdpc3RyeSk7Ci0gIHB1YmxpYyB2b2lkIGFkZEZhdm9yaXRlc1VERElCdXNpbmVzcyhJRmF2b3JpdGVzVURESUJ1c2luZXNzIGJ1c2luZXNzKTsKLSAgcHVibGljIHZvaWQgYWRkRmF2b3JpdGVzVURESVNlcnZpY2UoSUZhdm9yaXRlc1VERElTZXJ2aWNlIHNlcnZpY2UpOwotICBwdWJsaWMgdm9pZCBhZGRGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZShJRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2Ugc2VydmljZUludGVyZmFjZSk7Ci0gIHB1YmxpYyB2b2lkIGFkZEZhdm9yaXRlc1dTREwoSUZhdm9yaXRlc1dTREwgd3NkbCk7Ci0gIHB1YmxpYyB2b2lkIGFkZEZhdm9yaXRlc1dTSUwoSUZhdm9yaXRlc1dTSUwgd3NpbCk7Ci0KLSAgcHVibGljIHZvaWQgcmVtb3ZlRmF2b3JpdGVzVURESVJlZ2lzdHJ5KElGYXZvcml0ZXNVRERJUmVnaXN0cnkgcmVnaXN0cnkpOwotICBwdWJsaWMgdm9pZCByZW1vdmVGYXZvcml0ZXNVRERJQnVzaW5lc3MoSUZhdm9yaXRlc1VERElCdXNpbmVzcyBidXNpbmVzcyk7Ci0gIHB1YmxpYyB2b2lkIHJlbW92ZUZhdm9yaXRlc1VERElTZXJ2aWNlKElGYXZvcml0ZXNVRERJU2VydmljZSBzZXJ2aWNlKTsKLSAgcHVibGljIHZvaWQgcmVtb3ZlRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2UoSUZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlIHNlcnZpY2VJbnRlcmZhY2UpOwotICBwdWJsaWMgdm9pZCByZW1vdmVGYXZvcml0ZXNXU0RMKElGYXZvcml0ZXNXU0RMIHdzZGwpOwotICBwdWJsaWMgdm9pZCByZW1vdmVGYXZvcml0ZXNXU0lMKElGYXZvcml0ZXNXU0lMIHdzaWwpOyAgCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0lGYXZvcml0ZXNVRERJQnVzaW5lc3MuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvSUZhdm9yaXRlc1VERElCdXNpbmVzcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTU1ZjM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvSUZhdm9yaXRlc1VERElCdXNpbmVzcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5mYXZvcml0ZXM7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSUZhdm9yaXRlc1VERElCdXNpbmVzcwotewotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKTsKLSAgcHVibGljIFN0cmluZyBnZXRJbnF1aXJ5VVJMKCk7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0QnVzaW5lc3NLZXkoKTsKLQotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKTsKLSAgcHVibGljIHZvaWQgc2V0SW5xdWlyeVVSTChTdHJpbmcgaW5xdWlyeVVSTCk7Ci0gIHB1YmxpYyB2b2lkIHNldEJ1c2luZXNzS2V5KFN0cmluZyBrZXkpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9JRmF2b3JpdGVzVURESVJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0lGYXZvcml0ZXNVRERJUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM3MzMzMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0lGYXZvcml0ZXNVRERJUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzOwotCi1wdWJsaWMgaW50ZXJmYWNlIElGYXZvcml0ZXNVRERJUmVnaXN0cnkKLXsKLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCk7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5xdWlyeVVSTCgpOwotICBwdWJsaWMgU3RyaW5nIGdldFB1Ymxpc2hVUkwoKTsKLSAgcHVibGljIFN0cmluZyBnZXRSZWdpc3RyYXRpb25VUkwoKTsKLQotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKTsKLSAgcHVibGljIHZvaWQgc2V0SW5xdWlyeVVSTChTdHJpbmcgaW5xdWlyeVVSTCk7Ci0gIHB1YmxpYyB2b2lkIHNldFB1Ymxpc2hVUkwoU3RyaW5nIHB1Ymxpc2hVUkwpOwotICBwdWJsaWMgdm9pZCBzZXRSZWdpc3RyYXRpb25VUkwoU3RyaW5nIHJlZ2lzdHJhdGlvblVSTCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0lGYXZvcml0ZXNVRERJU2VydmljZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9JRmF2b3JpdGVzVURESVNlcnZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4MGE0MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0lGYXZvcml0ZXNVRERJU2VydmljZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5mYXZvcml0ZXM7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSUZhdm9yaXRlc1VERElTZXJ2aWNlCi17Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpOwotICBwdWJsaWMgU3RyaW5nIGdldElucXVpcnlVUkwoKTsKLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlS2V5KCk7Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSk7Ci0gIHB1YmxpYyB2b2lkIHNldElucXVpcnlVUkwoU3RyaW5nIGlucXVpcnlVUkwpOwotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlS2V5KFN0cmluZyBrZXkpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9JRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvSUZhdm9yaXRlc1VERElTZXJ2aWNlSW50ZXJmYWNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MjdjODUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9JRmF2b3JpdGVzVURESVNlcnZpY2VJbnRlcmZhY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzOwotCi1wdWJsaWMgaW50ZXJmYWNlIElGYXZvcml0ZXNVRERJU2VydmljZUludGVyZmFjZQotewotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKTsKLSAgcHVibGljIFN0cmluZyBnZXRJbnF1aXJ5VVJMKCk7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZUludGVyZmFjZUtleSgpOwotCi0gIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpOwotICBwdWJsaWMgdm9pZCBzZXRJbnF1aXJ5VVJMKFN0cmluZyBpbnF1aXJ5VVJMKTsKLSAgcHVibGljIHZvaWQgc2V0U2VydmljZUludGVyZmFjZUtleShTdHJpbmcga2V5KTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvSUZhdm9yaXRlc1dTREwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvSUZhdm9yaXRlc1dTREwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlmMzY2Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvZmF2b3JpdGVzL0lGYXZvcml0ZXNXU0RMLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmZhdm9yaXRlczsKLQotcHVibGljIGludGVyZmFjZSBJRmF2b3JpdGVzV1NETAotewotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKTsKLSAgcHVibGljIFN0cmluZyBnZXRXc2RsVXJsKCk7Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSk7Ci0gIHB1YmxpYyB2b2lkIHNldFdzZGxVcmwoU3RyaW5nIHdzZGxVUkwpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9JRmF2b3JpdGVzV1NJTC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL2Zhdm9yaXRlcy9JRmF2b3JpdGVzV1NJTC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODhkYzQ0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci9mYXZvcml0ZXMvSUZhdm9yaXRlc1dTSUwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZmF2b3JpdGVzOwotCi1wdWJsaWMgaW50ZXJmYWNlIElGYXZvcml0ZXNXU0lMCi17Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpOwotICBwdWJsaWMgU3RyaW5nIGdldFdzaWxVcmwoKTsKLQotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKTsKLSAgcHVibGljIHZvaWQgc2V0V3NpbFVybChTdHJpbmcgd3NpbFVSTCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvcGx1Z2luL1BhcnNlclBsdWdpbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3BsdWdpbi9QYXJzZXJQbHVnaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUzMmIyMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvcGx1Z2luL1BhcnNlclBsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5wbHVnaW47Ci0KLWltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKLWltcG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuY29tbW9uLk1lc3NhZ2VVdGlsczsKLQotLyoqCi0gKiBUaGUgbWFpbiBwbHVnaW4gY2xhc3MgdG8gYmUgdXNlZCBpbiB0aGUgZGVza3RvcC4KLSAqLwotcHVibGljIGNsYXNzIFBhcnNlclBsdWdpbiBleHRlbmRzIFBsdWdpbiB7Ci0JLy9UaGUgc2hhcmVkIGluc3RhbmNlLgotCXByaXZhdGUgc3RhdGljIFBhcnNlclBsdWdpbiBwbHVnaW47Ci0JLy9SZXNvdXJjZSBidW5kbGUuCi0JcHJpdmF0ZSBSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZUJ1bmRsZTsKLQkKLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IuCi0JICovCi0JcHVibGljIFBhcnNlclBsdWdpbigpIHsKLQkJc3VwZXIoKTsKLQkJcGx1Z2luID0gdGhpczsKLQkJdHJ5IHsKLQkJCXJlc291cmNlQnVuZGxlICAgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoIm9yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIuUGFyc2VyUGx1Z2luUmVzb3VyY2VzIik7Ci0JCX0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiB4KSB7Ci0JCQlyZXNvdXJjZUJ1bmRsZSA9IG51bGw7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UuCi0JICovCi0JcHVibGljIHN0YXRpYyBQYXJzZXJQbHVnaW4gZ2V0RGVmYXVsdCgpIHsKLQkJcmV0dXJuIHBsdWdpbjsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzdHJpbmcgZnJvbSB0aGUgcGx1Z2luJ3MgcmVzb3VyY2UgYnVuZGxlLAotCSAqIG9yICdrZXknIGlmIG5vdCBmb3VuZC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRSZXNvdXJjZVN0cmluZyhTdHJpbmcga2V5KSB7Ci0JCVJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IFBhcnNlclBsdWdpbi5nZXREZWZhdWx0KCkuZ2V0UmVzb3VyY2VCdW5kbGUoKTsKLQkJdHJ5IHsKLQkJCXJldHVybiAoYnVuZGxlICE9IG51bGwpID8gYnVuZGxlLmdldFN0cmluZyhrZXkpIDoga2V5OwotCQl9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgewotCQkJcmV0dXJuIGtleTsKLQkJfQotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHBsdWdpbidzIHJlc291cmNlIGJ1bmRsZSwKLQkgKi8KLQlwdWJsaWMgUmVzb3VyY2VCdW5kbGUgZ2V0UmVzb3VyY2VCdW5kbGUoKSB7Ci0JCXJldHVybiByZXNvdXJjZUJ1bmRsZTsKLQl9Ci0KLQkgLyoqCi0JICAqIFJldHVybnMgdGhlIG1lc3NhZ2Ugc3RyaW5nIGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIGtleSBmcm9tCi0JICAqIHRoZSBwbHVnaW4ucHJvcGVydGllcyBmaWxlIGZvciB0aGUgYXBwcm9wcmlhdGUgbG9jYWxlLgotCSAgKiBAcGFyYW0ga2V5IFRoZSBtZXNzYWdlIGtleSBzdHJpbmcgcHJlZml4ZWQgYnkgYSAiJSIgc3ltYm9sLgotCSAgKiBUaGF0IGlzLCB0aGUgc3RyaW5nIHBhc3NlZCBpbiBtdXN0IGJlIG9mIHRoZSBmb3JtICIlS0VZIgotCSAgKiB3aGVyZSB0aGUgcGx1Z2luLnByb3BlcnRpZXMgZmlsZSBjb250YWlucyBhIGxpbmUgb2YgdGhlCi0JICAqIGZvcm06ICJLRVkgPSB2YWx1ZSIuCi0JICAqIEByZXR1cm4gVGhlIGxvY2FsZS1zcGVjaWZpYyBtZXNzYWdlLgotCSAgKi8KLQkgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldE1lc3NhZ2UgKCBTdHJpbmcga2V5ICkKLQkgIHsKLQkgICAgTWVzc2FnZVV0aWxzIG1zZ1V0aWxzID0gbmV3IE1lc3NhZ2VVdGlscyggIm9yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIucGx1Z2luIiwgcGx1Z2luICk7Ci0JICAgIAotCSAgICBpZigga2V5LnN0YXJ0c1dpdGgoIiUiKSkKLQkgICAgewotCSAgICAgIGtleSA9IGtleS5zdWJzdHJpbmcoIDEsIGtleS5sZW5ndGgoKSApOwotCSAgICB9Ci0JICAgIAotCSAgICByZXR1cm4gbXNnVXRpbHMuZ2V0TWVzc2FnZShrZXkpOwotCSAgfQotCi0JICAvKioKLQkgICogUmV0dXJucyB0aGUgbWVzc2FnZSBzdHJpbmcgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4ga2V5IGZyb20KLQkgICogdGhlIHBsdWdpbi5wcm9wZXJ0aWVzIGZpbGUgZm9yIHRoZSBhcHByb3ByaWF0ZSBsb2NhbGUuCi0JICAqIFN1YnN0aXR1dGlvbiBzZXF1ZW5jZXMgaW4gdGhlIG1lc3NhZ2Ugc3RyaW5nCi0JICAqIGFyZSByZXBsYWNlZCBieSB0aGUgZ2l2ZW4gYXJyYXkgb2Ygc3Vic3RpdHV0aW9uIG9iamVjdHMgKHdoaWNoCi0JICAqIGFyZSBtb3N0IGZyZXF1ZW50bHkgc3RyaW5ncykuIFNlZSBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdCBmb3IKLQkgICogZnVydGhlciBkZXRhaWxzIG9uIHN1YnN0aXR1dGlvbi4KLQkgICogQHBhcmFtIGtleSBUaGUgbWVzc2FnZSBrZXkgc3RyaW5nIHByZWZpeGVkIGJ5IGEgIiUiIHN5bWJvbC4KLQkgICogVGhhdCBpcywgdGhlIHN0cmluZyBwYXNzZWQgaW4gbXVzdCBiZSBvZiB0aGUgZm9ybSAiJUtFWSIKLQkgICogd2hlcmUgdGhlIHBsdWdpbi5wcm9wZXJ0aWVzIGZpbGUgY29udGFpbnMgYSBsaW5lIG9mIHRoZQotCSAgKiBmb3JtOiAiS0VZID0gdmFsdWUiLgotCSAgKiBAcGFyYW0gYXJncyBUaGUgc3Vic3RpdHV0aW9uIHZhbHVlcyBmb3IgdGhlIG1lc3NhZ2UKLQkgICogYXMgcmVxdWlyZWQgYnkgdGhlIG1lc3NhZ2UgaW4gcGx1Z2luLnByb3BlcnRpZXMgYW5kCi0JICAqIGJ5IHRoZSBydWxlcyBvZiBjbGFzcyBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdC4KLQkgICogQHJldHVybiBUaGUgbG9jYWxlLXNwZWNpZmljIG1lc3NhZ2UuCi0JICAqLwotCSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWVzc2FnZSAoIFN0cmluZyBrZXksIE9iamVjdFtdIGFyZ3MgKQotCSAgewotCSAgICByZXR1cm4gTWVzc2FnZUZvcm1hdC5mb3JtYXQoZ2V0TWVzc2FnZShrZXkpLGFyZ3MpOwotCSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3dzaWwvSFRNTEhlYWRIYW5kbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvd3NpbC9IVE1MSGVhZEhhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYzYzYwZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvd3NpbC9IVE1MSGVhZEhhbmRsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MTcgICAxNDIzMjQgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWw7Ci0KLWltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy54bWwuc2F4LkF0dHJpYnV0ZXM7Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXI7Ci0KLXB1YmxpYyBjbGFzcyBIVE1MSGVhZEhhbmRsZXIgZXh0ZW5kcyBEZWZhdWx0SGFuZGxlcgotewotICBwcml2YXRlIGZpbmFsIGNoYXIgU1RBUlRfVEFHID0gJzwnOwotICBwcml2YXRlIGZpbmFsIGNoYXIgRU5EX1RBRyA9ICc+JzsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSEVBRF9TVEFSVF9UQUcgPSAiPGhlYWQ+IjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSEVBRF9FTkRfVEFHID0gIjwvaGVhZD4iOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBST09UX1NUQVJUX1RBRyA9ICI8cm9vdD4iOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBST09UX0VORF9UQUcgPSAiPC9yb290PiI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFVURjggPSAiVVRGLTgiOwotICAKLSAgLy9IVE1MIE1FVEEgdGFnIGluZm9ybWF0aW9uIHVzZWQgdG8gZGV0ZWN0IHRoZSBjaGFyc2V0LgotICBwcml2YXRlIGZpbmFsIFN0cmluZyBIVE1MX0NPTlRFTlQgPSAiY29udGVudCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhUVFBfRVFVSVYgPSAiaHR0cC1lcXVpdiI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhUVFBfRVFVSVZfQ09OVEVOVF9UWVBFID0gIkNvbnRlbnQtVHlwZSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIENIQVJTRVQgPSAiY2hhcnNldCI7Ci0gIAotICAvLyBXU0lMIHRhZyBpbmZvcm1hdGlvbi4KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgTUVUQSA9ICJtZXRhIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgTkFNRSA9ICJuYW1lIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU0VSVklDRV9JTlNQRUNUSU9OID0gInNlcnZpY2VJbnNwZWN0aW9uIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgQ09OVEVOVCA9ICJjb250ZW50IjsKLSAgCi0gIC8vIERJU0NPIHRhZyBpbmZvcm1hdGlvbi4KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgTElOSyA9ICJsaW5rIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVFlQRSA9ICJ0eXBlIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEVYVF9YTUwgPSAidGV4dC94bWwiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBSRUwgPSAicmVsIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgQUxURVJOQVRFID0gImFsdGVybmF0ZSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEhSRUYgPSAiaHJlZiI7Ci0gICAgCi0gIHByaXZhdGUgU3RyaW5nIGJhc2VVUklfOwotICBwcml2YXRlIFZlY3RvciB3c2lsc187Ci0gIHByaXZhdGUgVmVjdG9yIGRpc2Nvc187Ci0gIHByaXZhdGUgU3RyaW5nIGJ5dGVFbmNvZGluZyA9IFVURjg7IC8vRGVmYXVsdCB0byBVVEYtOC4KLSAgCi0gIHB1YmxpYyBIVE1MSGVhZEhhbmRsZXIoU3RyaW5nIGJhc2VVUkkpCi0gIHsKLSAgICBzdXBlcigpOwotICAgIGJhc2VVUklfID0gYmFzZVVSSTsKLSAgICB3c2lsc18gPSBuZXcgVmVjdG9yKCk7Ci0gICAgZGlzY29zXyA9IG5ldyBWZWN0b3IoKTsKLSAgfQotIAotICBwdWJsaWMgU3RyaW5nW10gZ2V0V3NpbHMoKQotICB7Ci0gICAgU3RyaW5nW10gd3NpbHMgPSBuZXcgU3RyaW5nW3dzaWxzXy5zaXplKCldOwotICAgIHdzaWxzXy5jb3B5SW50byh3c2lscyk7Ci0gICAgcmV0dXJuIHdzaWxzOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nW10gZ2V0RGlzY29zKCkKLSAgewotICAgIFN0cmluZ1tdIGRpc2NvcyA9IG5ldyBTdHJpbmdbZGlzY29zXy5zaXplKCldOwotICAgIGRpc2Nvc18uY29weUludG8oZGlzY29zKTsKLSAgICByZXR1cm4gZGlzY29zOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzdGFydEVsZW1lbnQoU3RyaW5nIHVyaSwgU3RyaW5nIGxvY2FsTmFtZSwgU3RyaW5nIHFOYW1lLCBBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpIHRocm93cyBTQVhFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBxTmFtZUxDID0gcU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICBpZiAocU5hbWVMQy5lcXVhbHMoTUVUQSkpCi0gICAgewotICAgICAgU3RyaW5nIG5hbWVWYWx1ZSA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoTkFNRSk7Ci0gICAgICBpZiAoU0VSVklDRV9JTlNQRUNUSU9OLmVxdWFscyhuYW1lVmFsdWUpKQotICAgICAgewotICAgICAgICBTdHJpbmcgd3NpbFVSSSA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoQ09OVEVOVCk7Ci0gICAgICAgIGlmIChiYXNlVVJJXyAhPSBudWxsICYmIHdzaWxVUkkuaW5kZXhPZigiOi8iKSA9PSAtMSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgICBzYi5hcHBlbmQoYmFzZVVSSV8uc3Vic3RyaW5nKDAsIGJhc2VVUklfLmxhc3RJbmRleE9mKCIvIikrMSkpOwotICAgICAgICAgIHNiLmFwcGVuZCh3c2lsVVJJKTsKLSAgICAgICAgICB3c2lsVVJJID0gc2IudG9TdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXdzaWxzXy5jb250YWlucyh3c2lsVVJJKSkKLSAgICAgICAgICB3c2lsc18uYWRkKHdzaWxVUkkpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChxTmFtZUxDLmVxdWFscyhMSU5LKSkKLSAgICB7Ci0gICAgICAvLyBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9tc2RubWFnL2lzc3Vlcy8wMi8wMi94bWwvZGVmYXVsdC5hc3B4IGZvciBtb3JlIGRldGFpbHMgb24gRElTQ08uCi0gICAgICBTdHJpbmcgdHlwZSA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoVFlQRSk7Ci0gICAgICBTdHJpbmcgcmVsID0gYXR0cmlidXRlcy5nZXRWYWx1ZShSRUwpOwotICAgICAgU3RyaW5nIGhyZWYgPSBhdHRyaWJ1dGVzLmdldFZhbHVlKEhSRUYpOwotICAgICAgaWYgKFRFWFRfWE1MLmVxdWFscyh0eXBlKSAmJiBBTFRFUk5BVEUuZXF1YWxzKHJlbCkgJiYgaHJlZiAhPSBudWxsKQotICAgICAgewotICAgICAgICBTdHJpbmcgZGlzY29VUkkgPSBocmVmOwotICAgICAgICBpZiAoZGlzY29VUkkuaW5kZXhPZigiOi8iKSA9PSAtMSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgICBzYi5hcHBlbmQoYmFzZVVSSV8uc3Vic3RyaW5nKDAsYmFzZVVSSV8ubGFzdEluZGV4T2YoIi8iKSsxKSk7Ci0gICAgICAgICAgc2IuYXBwZW5kKGRpc2NvVVJJKTsKLSAgICAgICAgICBkaXNjb1VSSSA9IHNiLnRvU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFkaXNjb3NfLmNvbnRhaW5zKGRpc2NvVVJJKSkKLSAgICAgICAgICBkaXNjb3NfLmFkZChkaXNjb1VSSSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBlcnJvcihTQVhQYXJzZUV4Y2VwdGlvbiBlKSB0aHJvd3MgU0FYRXhjZXB0aW9uCi0gIHsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgZmF0YWxFcnJvcihTQVhQYXJzZUV4Y2VwdGlvbiBlKSB0aHJvd3MgU0FYRXhjZXB0aW9uCi0gIHsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgd2FybmluZyhTQVhQYXJzZUV4Y2VwdGlvbiBlKSB0aHJvd3MgU0FYRXhjZXB0aW9uCi0gIHsKLSAgfQotICAKLSAgLyoqCi0gICAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIHRoZSBwcm92aWRlZCB0YWcgaW4gdGhlIHByb3ZpZGVkIGRvY3VtZW50IHRvIHRoZSBwcm92aWRlZCBTdHJpbmdCdWZmZXIuCi0gICAqIEBwYXJhbSB0YXJnZXQKLSAgICogQHBhcmFtIGRvY3VtZW50Ci0gICAqIEBwYXJhbSB0YWcKLSAgICogQHBhcmFtIGVuY29kaW5nCi0gICAqIEByZXR1cm4gYm9vbGVhbiBmYWxzZSBpZiB0aGUgdmFsdWUgb2YgdGhlIGVuY29kaW5nIHBhcmFtZXRlciBtYXRjaGVkIHRoZSBkZXRlY3RlZCBjaGFyc2V0IG9yIGlmIG5vIGNoYXJzZXQgd2FzIGRldGVjdGVkLgotICAgKiBSZXR1cm5zIHRydWUgaWYgYSBjaGFyc2V0IHdhcyBkZXRlY3RlZCBhbmQgaXQgZGlkIG5vdCBlcXVhbCB0aGUgZW5jb2RpbmcgcGFyYW1ldGVyLiBJZiB0cnVlIGlzIHJldHVybmVkCi0gICAqIHRoZSBoYXJ2ZXN0aW5nIG9mIHRoZSB0YWdzIHdvdWxkIGhhdmUgc3RvcHBlZCBhdCB0aGUgcG9pbnQgdGhlIGNoYXJzZXQgd2FzIGRldGVjdGVkLiBUaGUgY2FsbGVyCi0gICAqIHNob3VsZCBjYWxsIHRoaXMgbWV0aG9kIGFnYWluIHdpdGggdGhlIGNvcnJlY3QgZW5jb2RpbmcuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gaGFydmVzdFRhZ3MoU3RyaW5nQnVmZmVyIHRhcmdldCxTdHJpbmcgZG9jdW1lbnQsU3RyaW5nIHRhZywgU3RyaW5nIGVuY29kaW5nKQotICB7Ci0JYm9vbGVhbiBjaGFuZ2VFbmNvZGluZyA9IGZhbHNlOwotICAgIGludCBpbmRleCA9IGRvY3VtZW50LmluZGV4T2YoU1RBUlRfVEFHKTsKLSAgICBpbnQgZG9jdW1lbnRMZW5ndGggPSBkb2N1bWVudC5sZW5ndGgoKTsKLSAgICBpbnQgdGFnTGVuZ3RoID0gdGFnLmxlbmd0aCgpOwotICAgIHdoaWxlIChpbmRleCAhPSAtMSAmJiAoaW5kZXgrMSt0YWdMZW5ndGgpPGRvY3VtZW50TGVuZ3RoKQotICAgIHsKLSAgICAgIFN0cmluZyBzdHIgPSBkb2N1bWVudC5zdWJzdHJpbmcoaW5kZXgrMSxpbmRleCsxK3RhZ0xlbmd0aCk7Ci0gICAgICBpZiAoc3RyLnRvTG93ZXJDYXNlKCkuZXF1YWxzKHRhZykpCi0gICAgICB7Ci0gICAgICAgIHN0ciA9IGRvY3VtZW50LnN1YnN0cmluZyhpbmRleCxkb2N1bWVudC5pbmRleE9mKEVORF9UQUcsaW5kZXgrMSkrMSk7Ci0gICAgICAgIHRhcmdldC5hcHBlbmQoc3RyKTsKLSAgICAgICAgaW5kZXggKz0gc3RyLmxlbmd0aCgpOwotICAgICAgICAKLSAgICAgICAgLy9JZiB0YWcgaXMgTUVUQSBhbmQgZGVjbGFyZXMgdGhlIGNoYXJzZXQsIGZpbmQgb3V0IHdoYXQgaXQgaXMKLSAgICAgICAgLy9hbmQgaWYgaXQgbWF0Y2hlcyB3aGF0IHdhcyBwYXNzZWQgaW4uIElmIGl0IG1hdGNoZXMsIGNvbnRpbnVlIAotICAgICAgICAvL3dpdGggdGhlIHBhcnNpbmcgYW5kIHJldHVybiBmYWxzZSB3aGVuIGNvbXBsZXRlLiAKLSAgICAgICAgLy9JZiB0aGUgZGV0ZWN0ZWQgY2hhcnNldCBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IHdhcyBwYXNzZWQgaW4sIAotICAgICAgICAvLy0gY2hhbmdlIGJ5dGVFbmNvZGluZyB0byBlcXVhbCB0aGUgZGV0ZWN0ZWQgY2hhcnNldC4KLSAgICAgICAgLy8tIHN0b3AgcGFyc2luZy4KLSAgICAgICAgLy8tIHJldHVybiB0cnVlLgotICAgICAgICBpZiAodGFnLmVxdWFscyhNRVRBKSkKLSAgICAgICAgewotICAgICAgICAgIGludCBpZHhPZkNvbnRlbnQgPSBzdHIuaW5kZXhPZihIVE1MX0NPTlRFTlQpOwotICAgICAgICAgIGludCBpZHhPZkhUVFBFUVVJViA9IHN0ci5pbmRleE9mKEhUVFBfRVFVSVYpOwotICAgICAgICAgIGlmIChpZHhPZkhUVFBFUVVJViE9IC0xICYmIGlkeE9mQ29udGVudCAhPSAtMSkKLSAgICAgICAgICB7Ci0gICAgICAgIAkvL0NoZWNrIGlmIHRoZSBodHRwLWVxdWl2IGF0dHJpYnV0ZSBpcyBzZXQgdG8gQ29udGVudC1UeXBlLgotICAgICAgICAgIAlpbnQgaWR4T2ZIVFRQRVFVSVZPcGVuUXVvdGUgPSBzdHIuaW5kZXhPZigiXCIiLCBpZHhPZkhUVFBFUVVJVisxKTsKLSAgICAgICAgCWludCBpZHhPZkhUVFBFUVVJVkNsb3NpbmdRdW90ZSA9IHN0ci5pbmRleE9mKCJcIiIsIGlkeE9mSFRUUEVRVUlWT3BlblF1b3RlKzEpOwotICAgICAgICAJU3RyaW5nIGhUVFBFUVVJVlZhbHVlVW50cmltbWVkID0gc3RyLnN1YnN0cmluZyhpZHhPZkhUVFBFUVVJVk9wZW5RdW90ZSsxLCBpZHhPZkhUVFBFUVVJVkNsb3NpbmdRdW90ZSk7Ci0gICAgICAgIAlpZiAoaFRUUEVRVUlWVmFsdWVVbnRyaW1tZWQudHJpbSgpLmVxdWFscyhIVFRQX0VRVUlWX0NPTlRFTlRfVFlQRSkpCi0gICAgICAgIAl7Ci0gICAgICAgIAkgIC8vVGhpcyBNRVRBIHRhZyBjb250YWlucyB0aGUgY2hhcnNldC4gR2V0IHRoZSB2YWx1ZSBvZiB0aGUgY29udGVudCBhdHRyaWJ1dGUKLSAgICAgICAgCSAgaW50IGlkeE9mT3BlblF1b3RlID0gc3RyLmluZGV4T2YoIlwiIiwgaWR4T2ZDb250ZW50KzEpOwotICAgICAgICAJICBpbnQgaWR4T2ZDbG9zaW5nUXVvdGUgPSBzdHIuaW5kZXhPZigiXCIiLCBpZHhPZk9wZW5RdW90ZSsxKTsKLSAgICAgICAgCSAgU3RyaW5nIGNvbnRlbnRWYWx1ZSA9IHN0ci5zdWJzdHJpbmcoaWR4T2ZPcGVuUXVvdGUrMSwgaWR4T2ZDbG9zaW5nUXVvdGUpOwotICAgICAgICAJICAKLSAgICAgICAgCSAgLy9HZXQgdGhlIGNoYXJzZXQKLSAgICAgICAgCSAgaW50IGlkeE9mQ2hhclNldCA9IGNvbnRlbnRWYWx1ZS5pbmRleE9mKENIQVJTRVQpOwotICAgICAgICAJICBpbnQgaWR4T2ZFcXVhbHMgPSBjb250ZW50VmFsdWUuaW5kZXhPZigiPSIsIGlkeE9mQ2hhclNldCtDSEFSU0VULmxlbmd0aCgpKTsKLSAgICAgICAgCSAgU3RyaW5nIGRldGVjdGVkRW5jb2RpbmdWYWx1ZVVudHJpbW1lZCA9IGNvbnRlbnRWYWx1ZS5zdWJzdHJpbmcoaWR4T2ZFcXVhbHMrMSk7Ci0gICAgICAgIAkgIFN0cmluZyBkZXRlY3RlZEVuY29kaW5nVmFsdWUgPSBkZXRlY3RlZEVuY29kaW5nVmFsdWVVbnRyaW1tZWQudHJpbSgpOwotICAgICAgICAJICBpZiAoIWRldGVjdGVkRW5jb2RpbmdWYWx1ZS5lcXVhbHMoZW5jb2RpbmcpKQotICAgICAgICAJICB7Ci0gICAgICAgIAkgICAgYnl0ZUVuY29kaW5nID0gZGV0ZWN0ZWRFbmNvZGluZ1ZhbHVlOwotICAgICAgICAJICAgIGNoYW5nZUVuY29kaW5nID0gdHJ1ZTsKLSAgICAgICAgCSAgICBicmVhazsKLSAgICAgICAgCSAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBpbmRleCsrOwotICAgICAgaW5kZXggPSBkb2N1bWVudC5pbmRleE9mKFNUQVJUX1RBRyxpbmRleCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBjaGFuZ2VFbmNvZGluZzsKLSAgfQotICAKLQotICAvKioKLSAgICogSWYgdGhlIHByb3ZpZGVkIGJ5dGUgYXJyYXkgcmVwZXJlc2VudHMgdGhlIGNvbnRlbnRzIG9mIGFuIEhUTUwKLSAgICogZG9jdW1lbnQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGEgYnl0ZSBhcnJheSBpbiB3aGljaAotICAgKiA8dWw+Ci0gICAqIDxsaT50aGUgb3BlbmluZyBhbmQgY2xvc2luZyBIRUFEIHRhZ3MgYXJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkIHdpdGggCi0gICAqIG9wZW5pbmcgYW5kIGNsb3NpbmcgPHJvb3Q+IHRhZ3M8L2xpPgotICAgKiA8bGk+b25seSB0aGUgTUVUQSBhbmQgTElOSyBlbGVtZW50cyBhcmUgaW4gdGhlIEhUTUwgZG9jdW1lbnQKLSAgICogYXJlIGluY2x1ZGVkIGluIHRoZSBjb250ZW50cyBiZXR3ZWVuIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nCi0gICAqIDxyb290PiB0YWdzLgotICAgKiA8L3VsPgotICAgKiBUaGlzIG1ldGhvZCB3aWxsIG1vZGlmeSB0aGUgdmFsdWUgb2YgdGhlIGJ5dGVFbmNvZGluZyBTdHJpbmcKLSAgICogYXR0cmlidXRlIG9uIHRoaXMgY2xhc3MgaWYgaXQgaXMgc29tZXRoaW5nIG90aGVyIHRoYW4KLSAgICogVVRGLTguIENhbGxlcnMgb2YgdGhpcyBtZXRob2Qgc2hvdWxkIGNhbGwgZ2V0Qnl0ZUVuY29kaW5nKCkKLSAgICogYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBpZiB0aGV5IG5lZWQgdG8ga25vdyB0aGUgY2hhcnNldAotICAgKiB2YWx1ZSB1c2VkIGJ5IHRoaXMgbWV0aG9kIHRvIGRlY29kZS9lbmRjb2RlIHRoZSBieXRlIGFycmF5LgotICAgKiBAcGFyYW0gYgotICAgKiBAcmV0dXJuIGJ5dGVbXQotICAgKi8KLSAgcHVibGljIGJ5dGVbXSBoYXJ2ZXN0SGVhZFRhZ3MoYnl0ZVtdIGIpCi0gIHsKLSAgICBTdHJpbmcgczsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgCS8vQXNzdW1lIHRoZSBkZWZhdWx0IGJ5dGUgZW5jb2Rpbmcgb2YgVVRGLTggZm9yIG5vdy4KLSAgICAJcyA9IG5ldyBTdHJpbmcoYiwgYnl0ZUVuY29kaW5nKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gdWVlKQotICAgIHsKLSAgICAgIHMgPSBuZXcgU3RyaW5nKGIpOwotICAgIH0KLSAgICBTdHJpbmcgaGVhZCA9IHMudG9Mb3dlckNhc2UoKTsKLSAgICBpbnQgaGVhZFN0YXJ0SW5kZXggPSBoZWFkLmluZGV4T2YoSEVBRF9TVEFSVF9UQUcpOwotICAgIGludCBoZWFkRW5kSW5kZXggPSBoZWFkLmluZGV4T2YoSEVBRF9FTkRfVEFHKTsKLSAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgc2IuYXBwZW5kKFJPT1RfU1RBUlRfVEFHKTsKLSAgICBpZiAoaGVhZFN0YXJ0SW5kZXggIT0gLTEgJiYgaGVhZEVuZEluZGV4ICE9IC0xKQotICAgIHsKLSAgICAgIGhlYWQgPSBzLnN1YnN0cmluZyhoZWFkU3RhcnRJbmRleCwgaGVhZEVuZEluZGV4K0hFQURfRU5EX1RBRy5sZW5ndGgoKSk7Ci0gICAgICBib29sZWFuIGVuY29kaW5nQ2hhbmdlZCA9IGhhcnZlc3RUYWdzKHNiLGhlYWQsTUVUQSwgYnl0ZUVuY29kaW5nKTsKLSAgICAgIGlmIChlbmNvZGluZ0NoYW5nZWQpCi0gICAgICB7Ci0gICAgCSAgLy9UaGUgaGFydmVzdFRhZ3MgbWV0aG9kIGRldGVjdGVkIGEgZGlmZmVyZW50IGNoYXJzZXQKLSAgICAJICAvL3RoYW4gdGhlIG9uZSB0aGF0IHdhcyBwYXNzZWQgaW4uIFN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZwotICAgIAkgIC8vd2l0aCB0aGUgY29ycmVjdCBjaGFyc2V0LgotICAgIAkgICAgU3RyaW5nIHMyOwotICAgIAkgICAgdHJ5Ci0gICAgCSAgICB7Ci0gICAgCSAgICAJczIgPSBuZXcgU3RyaW5nKGIsIGJ5dGVFbmNvZGluZyk7Ci0gICAgCSAgICB9Ci0gICAgCSAgICBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiB1ZWUpCi0gICAgCSAgICB7Ci0gICAgCSAgICAgIHMyID0gbmV3IFN0cmluZyhiKTsKLSAgICAJICAgIH0KLSAgICAJICAgIFN0cmluZyBoZWFkMiA9IHMyLnRvTG93ZXJDYXNlKCk7Ci0gICAgCSAgICBpbnQgaGVhZDJTdGFydEluZGV4ID0gaGVhZDIuaW5kZXhPZihIRUFEX1NUQVJUX1RBRyk7Ci0gICAgCSAgICBpbnQgaGVhZDJFbmRJbmRleCA9IGhlYWQyLmluZGV4T2YoSEVBRF9FTkRfVEFHKTsKLSAgICAJICAgIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIAkgICAgc2IuYXBwZW5kKFJPT1RfU1RBUlRfVEFHKTsKLSAgICAJICAgIGlmIChoZWFkMlN0YXJ0SW5kZXggIT0gLTEgJiYgaGVhZDJFbmRJbmRleCAhPSAtMSkKLSAgICAJICAgIHsKLSAgICAJICAgICAgaGVhZDIgPSBzMi5zdWJzdHJpbmcoaGVhZDJTdGFydEluZGV4LCBoZWFkMkVuZEluZGV4K0hFQURfRU5EX1RBRy5sZW5ndGgoKSk7Ci0gICAgCSAgICAgIGhhcnZlc3RUYWdzKHNiLGhlYWQyLE1FVEEsIGJ5dGVFbmNvZGluZyk7Ci0gICAgCSAgICAgIGhhcnZlc3RUYWdzKHNiLGhlYWQyLExJTkssYnl0ZUVuY29kaW5nKTsKLSAgICAJICAgIH0gICAgCSAgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGhhcnZlc3RUYWdzKHNiLGhlYWQsTElOSyxieXRlRW5jb2RpbmcpOwotICAgICAgfQotICAgIH0KLSAgICBzYi5hcHBlbmQoUk9PVF9FTkRfVEFHKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgCXJldHVybiBzYi50b1N0cmluZygpLmdldEJ5dGVzKGJ5dGVFbmNvZGluZyk7ICAgICAgCi0gICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiB1ZWUpCi0gICAgewotICAgICAgcmV0dXJuIHNiLnRvU3RyaW5nKCkuZ2V0Qnl0ZXMoKTsKLSAgICB9ICAgIAotICAgIAotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldEJ5dGVFbmNvZGluZygpCi0gIHsKLQkgIHJldHVybiBieXRlRW5jb2Rpbmc7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci93c2lsL0lsbGVnYWxBcmd1bWVudHNFeGNlcHRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci93c2lsL0lsbGVnYWxBcmd1bWVudHNFeGNlcHRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3ZmUxYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvd3NpbC9JbGxlZ2FsQXJndW1lbnRzRXhjZXB0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbDsKLQotcHVibGljIGNsYXNzIElsbGVnYWxBcmd1bWVudHNFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24KLXsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTI1MzM5ODExNzYyODU1NjEyMzRMOwotCi0gIHB1YmxpYyBJbGxlZ2FsQXJndW1lbnRzRXhjZXB0aW9uKFN0cmluZyBhcmcpCi0gIHsKLSAgICBzdXBlcihhcmcpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvd3NpbC9VRERJVVJJSGVscGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvd3NpbC9VRERJVVJJSGVscGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjM2U4OTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3dzaWwvVURESVVSSUhlbHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWw7Ci0KLWltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKLWltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247Ci0KLXB1YmxpYyBjbGFzcyBVRERJVVJJSGVscGVyCi17Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWVNFUlZJQ0VfVVJJX1RFTVBMQVRFID0gInVkZGlzZXJ2aWNlOnF1ZXJ5OnswfTpxdWVyeTp7MX0iOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VSVklDRUtFWV9VUklfVEVNUExBVEUgPSAidWRkaXNlcnZpY2U6c2VydmljZUtleTp7MH06c2VydmljZUtleTp7MX0iOwotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0UXVlcnlTZXJ2aWNlVVJJKFN0cmluZyBxdWVyeSxTdHJpbmcgaW5xdWlyeVVSTCkKLSAgewotICAgIFN0cmluZ1tdIHVyaVBhcmFtcyA9IHtxdWVyeSxpbnF1aXJ5VVJMfTsKLSAgICByZXR1cm4gTWVzc2FnZUZvcm1hdC5mb3JtYXQoUVVFUllTRVJWSUNFX1VSSV9URU1QTEFURSx1cmlQYXJhbXMpOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXRTZXJ2aWNlS2V5VVJJKFN0cmluZyBzZXJ2aWNlS2V5LFN0cmluZyBpbnF1aXJ5VVJMKQotICB7Ci0gICAgU3RyaW5nW10gdXJpUGFyYW1zID0ge3NlcnZpY2VLZXksaW5xdWlyeVVSTH07Ci0gICAgcmV0dXJuIE1lc3NhZ2VGb3JtYXQuZm9ybWF0KFNFUlZJQ0VLRVlfVVJJX1RFTVBMQVRFLHVyaVBhcmFtcyk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHBhcnNlVVJJKFN0cmluZyBwYXR0ZXJuLFN0cmluZyB1cmkpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBNZXNzYWdlRm9ybWF0IG1mID0gbmV3IE1lc3NhZ2VGb3JtYXQocGF0dGVybik7Ci0gICAgICBPYmplY3RbXSBwYXJzZWRSZXN1bHRzID0gbWYucGFyc2UodXJpKTsKLSAgICAgIGlmIChwYXJzZWRSZXN1bHRzICE9IG51bGwgJiYgcGFyc2VkUmVzdWx0cy5sZW5ndGggPiAwKQotICAgICAgewotICAgICAgICBTdHJpbmdbXSByZXN1bHRzID0gbmV3IFN0cmluZ1twYXJzZWRSZXN1bHRzLmxlbmd0aF07Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPHBhcnNlZFJlc3VsdHMubGVuZ3RoO2krKykKLSAgICAgICAgICByZXN1bHRzW2ldID0gKFN0cmluZylwYXJzZWRSZXN1bHRzW2ldOwotICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAgICAgIH0gICAgICAgIAotICAgIH0KLSAgICBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHBhcnNlU2VydmljZUtleVVSSShTdHJpbmcgdXJpKQotICB7Ci0gICAgcmV0dXJuIHBhcnNlVVJJKFNFUlZJQ0VLRVlfVVJJX1RFTVBMQVRFLHVyaSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nW10gcGFyc2VRdWVyeVNlcnZpY2VVUkkoU3RyaW5nIHVyaSkKLSAgewotICAgIHJldHVybiBwYXJzZVVSSShRVUVSWVNFUlZJQ0VfVVJJX1RFTVBMQVRFLHVyaSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci93c2lsL1dTSUxNZXNzYWdlcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3dzaWwvV1NJTE1lc3NhZ2VzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyODZiYTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3dzaWwvV1NJTE1lc3NhZ2VzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLXB1YmxpYyBjbGFzcyBXU0lMTWVzc2FnZXMgZXh0ZW5kcyBOTFMKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC53c2lsIjsgLy8kTk9OLU5MUy0xJAotICAKLSAgc3RhdGljCi0gIHsKLSAgICBOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBXU0lMTWVzc2FnZXMuY2xhc3MpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX0lOVkFMSURfQVJHVU1FTlRTOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfSUxMRUdBTF9BUkdVTUVOVFM7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9JTlZBTElEX1dTRExfVVJJOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfSU5WQUxJRF9XU0lMX1VSSTsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1VOUkVTT0xWQUJMRV9XU0RMOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfVU5FWFBFQ1RFRF9FWENFUFRJT047Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9NQUxGT1JNRURfV1NETDsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1dSSVRFX1dTSUw7Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3dzaWwvV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci93c2lsL1dXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmFlMzQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3dzaWwvV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLQotcHVibGljIGNsYXNzIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uCi17Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC00OTE4MjExMDIxNjIwMzE2MDQ5TDsKLQotICBwcml2YXRlIElPRXhjZXB0aW9uIGlvZV87Ci0gIHByaXZhdGUgU3RyaW5nIHd3d0F1dGhNc2dfOwotICBwcml2YXRlIFN0cmluZyB1cmxfOwotCi0gIHB1YmxpYyBXV1dBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbihJT0V4Y2VwdGlvbiBpb2UsIFN0cmluZyB3d3dBdXRoTXNnLCBTdHJpbmcgdXJsKQotICB7Ci0gICAgc3VwZXIoaW9lLmdldE1lc3NhZ2UoKSk7Ci0gICAgaW9lXyA9IGlvZTsKLSAgICB3d3dBdXRoTXNnXyA9IHd3d0F1dGhNc2c7Ci0gICAgdXJsXyA9IHVybDsKLSAgfQotCi0gIHB1YmxpYyBJT0V4Y2VwdGlvbiBnZXRJT0V4Y2VwdGlvbigpCi0gIHsKLSAgICByZXR1cm4gaW9lXzsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V1dXQXV0aGVudGljYXRpb25Nc2coKQotICB7Ci0gICAgcmV0dXJuIHd3d0F1dGhNc2dfOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRVUkwoKQotICB7Ci0gICAgcmV0dXJuIHVybF87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci93c2lsL1dXV0F1dGhlbnRpY2F0aW9uSGFuZGxlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3dzaWwvV1dXQXV0aGVudGljYXRpb25IYW5kbGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ZGViYWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3dzaWwvV1dXQXV0aGVudGljYXRpb25IYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbDsKLQotcHVibGljIGludGVyZmFjZSBXV1dBdXRoZW50aWNhdGlvbkhhbmRsZXIKLXsKLSAgcHVibGljIHZvaWQgaGFuZGxlV1dXQXV0aGVudGljYXRpb24oV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24gd3d3YWUpOwotICBwdWJsaWMgU3RyaW5nIGdldFVzZXJuYW1lKCk7Ci0gIHB1YmxpYyBTdHJpbmcgZ2V0UGFzc3dvcmQoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci93c2lsL1dlYlNlcnZpY2VFbnRpdHkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci93c2lsL1dlYlNlcnZpY2VFbnRpdHkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkxN2JkZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvd3NpbC9XZWJTZXJ2aWNlRW50aXR5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZUVudGl0eQotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX1VOS05PV04gPSAtMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9IVE1MID0gMDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9XU0lMID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9XU0RMID0gMjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9VRERJX1NFUlZJQ0UgPSAzOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0RJU0NPID0gNDsKLQotICBwcml2YXRlIE9iamVjdCBwYXJlbnRfOwotICBwcml2YXRlIExpc3QgY2hpbGRyZW5fOwotICBwcml2YXRlIGludCB0eXBlXzsKLSAgcHJpdmF0ZSBTdHJpbmcgdXJpXzsKLSAgcHJpdmF0ZSBieXRlW10gYnl0ZXNfOwotICBwcml2YXRlIFN0cmluZyBodHRwVXNlcm5hbWVfOwotICBwcml2YXRlIFN0cmluZyBodHRwUGFzc3dvcmRfOwotICBwcml2YXRlIFN0cmluZyBkb2N1bWVudGF0aW9uXzsKLSAgcHJpdmF0ZSBPYmplY3QgbW9kZWxfOwotCi0gIHB1YmxpYyBXZWJTZXJ2aWNlRW50aXR5KCkKLSAgewotICAgIHBhcmVudF8gPSBudWxsOwotICAgIGNoaWxkcmVuXyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICB0eXBlXyA9IFRZUEVfVU5LTk9XTjsKLSAgICB1cmlfID0gbnVsbDsKLSAgICBieXRlc18gPSBudWxsOwotICAgIGh0dHBVc2VybmFtZV8gPSBudWxsOwotICAgIGh0dHBQYXNzd29yZF8gPSBudWxsOwotICAgIGRvY3VtZW50YXRpb25fID0gbnVsbDsKLSAgICBtb2RlbF8gPSBudWxsOwotICB9Ci0KLSAgcHVibGljIE9iamVjdCBnZXRQYXJlbnQoKQotICB7Ci0gICAgcmV0dXJuIHBhcmVudF87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQYXJlbnQoT2JqZWN0IHBhcmVudCkKLSAgewotICAgIHBhcmVudF8gPSBwYXJlbnQ7Ci0gIH0KLQotICBwdWJsaWMgTGlzdCBnZXRDaGlsZHJlbigpCi0gIHsKLSAgICByZXR1cm4gY2hpbGRyZW5fOwotICB9Ci0KLSAgcHVibGljIHZvaWQgYWRkQ2hpbGQoT2JqZWN0IGNoaWxkKQotICB7Ci0gICAgY2hpbGRyZW5fLmFkZChjaGlsZCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZW1vdmVDaGlsZChPYmplY3QgY2hpbGQpCi0gIHsKLSAgICBjaGlsZHJlbl8ucmVtb3ZlKGNoaWxkKTsKLSAgfQotCi0gIHB1YmxpYyBpbnQgZ2V0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gdHlwZV87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRUeXBlKGludCB0eXBlKQotICB7Ci0gICAgdHlwZV8gPSB0eXBlOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRVUkkoKQotICB7Ci0gICAgcmV0dXJuIHVyaV87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRVUkkoU3RyaW5nIHVyaSkKLSAgewotICAgIHVyaV8gPSB1cmk7Ci0gIH0KLQotICBwdWJsaWMgYnl0ZVtdIGdldEJ5dGVzKCkKLSAgewotICAgIHJldHVybiBieXRlc187Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRCeXRlcyhieXRlW10gYnl0ZXMpCi0gIHsKLSAgICBieXRlc18gPSBieXRlczsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SFRUUFVzZXJuYW1lKCkKLSAgewotICAgIHJldHVybiBodHRwVXNlcm5hbWVfOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0SFRUUFVzZXJuYW1lKFN0cmluZyBodHRwVXNlcm5hbWUpCi0gIHsKLSAgICBodHRwVXNlcm5hbWVfID0gaHR0cFVzZXJuYW1lOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRIVFRQUGFzc3dvcmQoKQotICB7Ci0gICAgcmV0dXJuIGh0dHBQYXNzd29yZF87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRIVFRQUGFzc3dvcmQoU3RyaW5nIGh0dHBQYXNzd29yZCkKLSAgewotICAgIGh0dHBQYXNzd29yZF8gPSBodHRwUGFzc3dvcmQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RG9jdW1lbnRhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gZG9jdW1lbnRhdGlvbl87Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldERvY3VtZW50YXRpb24oU3RyaW5nIGRvY3VtZW50YXRpb24pCi0gIHsKLSAgICBkb2N1bWVudGF0aW9uXyA9IGRvY3VtZW50YXRpb247Ci0gIH0KLSAgCi0gIHB1YmxpYyBPYmplY3QgZ2V0TW9kZWwoKQotICB7Ci0gICAgcmV0dXJuIG1vZGVsXzsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0TW9kZWwoT2JqZWN0IG1vZGVsKQotICB7Ci0gICAgbW9kZWxfID0gbW9kZWw7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBpc0VudGl0eVJlc29sdmVkKCkKLSAgewotICAgIHJldHVybiAoYnl0ZXNfICE9IG51bGwpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvd3NpbC9XZWJTZXJ2aWNlc1BhcnNlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGFyc2VyL3dzaWwvV2ViU2VydmljZXNQYXJzZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFhMmZlYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvd3NpbC9XZWJTZXJ2aWNlc1BhcnNlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUwNCAgIDExOTI5NiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA2MDUxNyAgIDE0MjMyNCByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNzExICAgMTUwMzAxIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwODE4ICAgMTU0MzkzIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDYwOTA2ICAgMTU2NDIwIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbDsKLQotaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7Ci1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLm5ldC5VUkxDb25uZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLmZhY3RvcnkuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFJlYWRlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlNBWFBhcnNlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5TQVhQYXJzZXJGYWN0b3J5OwotCi1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvZGVjLmJpbmFyeS5CYXNlNjQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkFic3RyYWN0OwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5EZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuSW5zcGVjdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuTGluazsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuU2VydmljZTsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuV1NJTENvbnN0YW50czsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuV1NJTERvY3VtZW50OwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5XU0lMRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5leHRlbnNpb24uRXh0ZW5zaW9uRWxlbWVudDsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLnVkZGkuU2VydmljZURlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5leHRlbnNpb24udWRkaS5VRERJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5leHRlbnNpb24ud3NkbC5XU0RMQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjby5ESVNDT0NvbnRyYWN0UmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIuZGlzY28uRElTQ09QYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci5kaXNjby5ESVNDT1JlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGx1Z2luOwotaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLQotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VzUGFyc2VyCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUlNFX05PTkUgPSAwOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJTRV9XU0lMID0gMTw8MDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSU0VfV1NETCA9IDE8PDE7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUlNFX0xJTktTID0gMTw8MjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSU0VfRElTQ08gPSAxPDwzOwotCi0gIHByaXZhdGUgU3RyaW5nIHVyaV87Ci0gIHByaXZhdGUgSGFzaHRhYmxlIHVyaVRvRW50aXR5VGFibGVfOwotCi0gIHByaXZhdGUgU3RyaW5nIGh0dHBCYXNpY0F1dGhVc2VybmFtZV87Ci0gIHByaXZhdGUgU3RyaW5nIGh0dHBCYXNpY0F1dGhQYXNzd29yZF87Ci0KLSAgcHVibGljIFdlYlNlcnZpY2VzUGFyc2VyKCkKLSAgewotICAgIHRoaXMobnVsbCk7Ci0gIH0KLQotICBwdWJsaWMgV2ViU2VydmljZXNQYXJzZXIoU3RyaW5nIHVyaSkKLSAgewotICAgIHVyaV8gPSB1cmk7Ci0gICAgdXJpVG9FbnRpdHlUYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgaHR0cEJhc2ljQXV0aFVzZXJuYW1lXyA9IG51bGw7Ci0gICAgaHR0cEJhc2ljQXV0aFBhc3N3b3JkXyA9IG51bGw7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFVSSSgpCi0gIHsKLSAgICByZXR1cm4gdXJpXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFVSSShTdHJpbmcgdXJpKQotICB7Ci0gICAgdXJpXyA9IHVyaTsKLSAgfQotCi0gIHB1YmxpYyBXZWJTZXJ2aWNlRW50aXR5IGdldFdlYlNlcnZpY2VFbnRpdHlCeVVSSShTdHJpbmcgdXJpKQotICB7Ci0gICAgaWYgKHVyaSAhPSBudWxsKQotICAgICAgcmV0dXJuIChXZWJTZXJ2aWNlRW50aXR5KXVyaVRvRW50aXR5VGFibGVfLmdldCh1cmkpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gd3NpbFVSSQotICAgKiBAcmV0dXJuCi0gICAqIEBkZXByZWNhdGVkIHJlcGxhY2VkIHdpdGggZ2V0V1NJTERvY3VtZW50VmVyYm9zZShTdHJpbmcsIFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBXU0lMRG9jdW1lbnQgZ2V0V1NJTERvY3VtZW50KFN0cmluZyB3c2lsVVJJICkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHJldHVybiBnZXRXU0lMRG9jdW1lbnRWZXJib3NlKHdzaWxVUkksICJVVEYtOCIgKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHBhcmFtIHdzaWxVUkkKLSAgICogQHJldHVybgotICAgKiBAdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbgotICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCi0gICAqIEB0aHJvd3MgV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24KLSAgICogQHRocm93cyBXU0lMRXhjZXB0aW9uCi0gICAqIEBkZXByZWNhdGVkIHJlcGxhY2VkIHdpdGggZ2V0V1NJTERvY3VtZW50VmVyYm9zZShTdHJpbmcsIFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBXU0lMRG9jdW1lbnQgZ2V0V1NJTERvY3VtZW50VmVyYm9zZShTdHJpbmcgd3NpbFVSSSApIHRocm93cyBNYWxmb3JtZWRVUkxFeGNlcHRpb24sIElPRXhjZXB0aW9uLCBXV1dBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiwgV1NJTEV4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIGdldFdTSUxEb2N1bWVudFZlcmJvc2UoIHdzaWxVUkksICJVVEYtOCIgKTsKLSAgfQotICAKLSAgcHVibGljIFdTSUxEb2N1bWVudCBnZXRXU0lMRG9jdW1lbnRWZXJib3NlKFN0cmluZyB3c2lsVVJJLCBTdHJpbmcgYnl0ZUVuY29kaW5nICkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uLCBXU0lMRXhjZXB0aW9uCi0gIHsKLSAgICBXZWJTZXJ2aWNlRW50aXR5IHdzRW50aXR5ID0gZ2V0V2ViU2VydmljZUVudGl0eUJ5VVJJKHdzaWxVUkkpOwotICAgIAotICAgIGlmICh3c0VudGl0eSA9PSBudWxsKQotICAgIHsKLSAgICAgIHdzRW50aXR5ID0gbmV3IFdlYlNlcnZpY2VFbnRpdHkoKTsKLSAgICAgIHdzRW50aXR5LnNldFVSSSh3c2lsVVJJKTsKLSAgICAgIHVyaVRvRW50aXR5VGFibGVfLnB1dCh3c2lsVVJJLCB3c0VudGl0eSk7Ci0gICAgfQotICAgIAotICAgIFdTSUxEb2N1bWVudCB3c2lsRG9jdW1lbnQgPSAoV1NJTERvY3VtZW50KXdzRW50aXR5LmdldE1vZGVsKCk7Ci0gICAgCi0gICAgaWYgKHdzaWxEb2N1bWVudCA9PSBudWxsKQotICAgIHsKLSAgICAgIC8vIEZvciBzb21lIHJlYXNvbiBXU0RMNEogaXMgbm90IHJlYWRpbmcgdGhlIGNvbnRlbnQgdHlwZSBwcm9wZXJseSBmb3IgcGxhdGZvcm0gcmVzb3VyY2VzLiAgVGhlcmVmb3JlLCB3ZSB3aWxsIGdldAotICAgICAgLy8gdGhlIHN0cmVhbSBkaXJlY3RseSBmcm9tIEVjbGlwc2UgaWYgd2UgZmluZCBhIHBsYXRmb3JtIHByb3RvY29sIHNwZWNpZmllZCBpbiB0aGUgVVJMLgotICAgICAgaWYoIHdzaWxVUkkuc3RhcnRzV2l0aCggInBsYXRmb3JtOi9yZXNvdXJjZSIgKSApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyAgICBwYXRoICAgICA9IHdzaWxVUkkuc3Vic3RyaW5nKDE4KTsKLSAgICAgICAgSVJlc291cmNlIHJlc291cmNlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5maW5kTWVtYmVyKCBwYXRoICk7Ci0gICAgICAgIAotICAgICAgICBpZiggcmVzb3VyY2UgaW5zdGFuY2VvZiBJRmlsZSApCi0gICAgICAgIHsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBJRmlsZSAgICAgICAgICAgICBmaWxlICAgPSAoSUZpbGUpcmVzb3VyY2U7Ci0gICAgICAgICAgICBJbnB1dFN0cmVhbSAgICAgICBzdHJlYW0gPSBmaWxlLmdldENvbnRlbnRzKCk7Ci0gICAgICAgICAgICBJbnB1dFN0cmVhbVJlYWRlciByZWFkZXIgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoIHN0cmVhbSwgZmlsZS5nZXRDaGFyc2V0KCkgKTsKLSAgICAgICAgICAKLSAgICAgICAgICAgIHdzaWxEb2N1bWVudCA9IFdTSUxEb2N1bWVudC5uZXdJbnN0YW5jZSgpOwotICAgICAgICAgICAgd3NpbERvY3VtZW50LnJlYWQoIHJlYWRlciApOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCggQ29yZUV4Y2VwdGlvbiBleGMgKXt9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gVE9ETyB0aGUgZm9sbG93aW5nIDMgbGluZXMgb2YgY29kZSBzaG91bGQgcHJvYmFibHkgYmUgcmVtb3ZlZCwgc2luY2UKLSAgICAgICAgLy8gdGhlIFdTREw0SiBwYXJzZXIgZG9lcyBub3QgbmVlZCBhIGJ5dGUgc3RyZWFtLgotICAgICAgICBieXRlW10gYiA9IGdldElucHV0U3RyZWFtQXNCeXRlQXJyYXkod3NpbFVSSSk7Ci0gICAgICAgIHdzRW50aXR5LnNldEJ5dGVzKGIpOwotICAgICAgICBzZXRIVFRQU2V0dGluZ3Mod3NFbnRpdHkpOwotICAgICAgCi0gICAgICAgIC8vIFRoaXMgcGFyc2VyIG9ubHkgY2hlY2tzIHRoZSBoZWFkZXIgb2YgSFRNTCBmb3IgYSBwYXJ0aWN1bGFyIGVuY29kaW5nLgotICAgICAgICAvLyBJdCBkb2Vzbid0IGNoZWNrIHRoZSBlbmNvZGluZyBmb3IgZ2VuZXJhbCBYTUwgZG9jdW1lbnRzIGxpa2UgV1NETCBhbmQgV1NJTC4KLSAgICAgICAgLy8gVGhpcyBjYXVzaW5nIHRoaXMgcGFyc2VyIHRvIGFsd2F5IHVzZSBVVEYtOCBhcyB0aGUgZW5jb2RpbmcuICBUaGVyZWZvcmUsCi0gICAgICAgIC8vIHNpbmNlIHdlIGNhbiBub3QgdHJ1c3QgdGhlIGVuY29kaW5nIHNwZWNpZmllZCB3ZSB3aWxsIG5vdCB1c2UgaXQuICBJbnN0ZWFkLAotICAgICAgICAvLyB3ZSB3aWxsIGp1c3QgbGV0IHRoZSBXU0lMIHBhcnNlciBmaWd1cmUgb3V0IHdoYXQgZW5jb2RpbmcgdG8gdXNlLgotICAgICAgCi0gICAgICAgIC8vSW5wdXRTdHJlYW1SZWFkZXIgaXNyID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShiKSwgYnl0ZUVuY29kaW5nICk7Ci0gICAgICAgIHdzaWxEb2N1bWVudCA9IFdTSUxEb2N1bWVudC5uZXdJbnN0YW5jZSgpOwotICAgICAgICB3c2lsRG9jdW1lbnQucmVhZCh3c2lsVVJJKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgd3NFbnRpdHkuc2V0VHlwZShXZWJTZXJ2aWNlRW50aXR5LlRZUEVfV1NJTCk7Ci0gICAgICB3c0VudGl0eS5zZXRNb2RlbCh3c2lsRG9jdW1lbnQpOwotICAgIH0KLSAgICByZXR1cm4gd3NpbERvY3VtZW50OwotICB9Ci0KLSAgcHVibGljIERlZmluaXRpb24gZ2V0V1NETERlZmluaXRpb24oU3RyaW5nIHdzZGxVUkkpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICByZXR1cm4gZ2V0V1NETERlZmluaXRpb25WZXJib3NlKHdzZGxVUkkpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0gICAgewotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBEZWZpbml0aW9uIGdldFdTRExEZWZpbml0aW9uVmVyYm9zZShTdHJpbmcgd3NkbFVSSSkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uLCBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBXZWJTZXJ2aWNlRW50aXR5IHdzRW50aXR5ID0gZ2V0V2ViU2VydmljZUVudGl0eUJ5VVJJKHdzZGxVUkkpOwotICAgIGlmICh3c0VudGl0eSA9PSBudWxsKQotICAgIHsKLSAgICAgIHdzRW50aXR5ID0gbmV3IFdlYlNlcnZpY2VFbnRpdHkoKTsKLSAgICAgIHdzRW50aXR5LnNldFVSSSh3c2RsVVJJKTsKLSAgICAgIHVyaVRvRW50aXR5VGFibGVfLnB1dCh3c2RsVVJJLCB3c0VudGl0eSk7Ci0gICAgfQotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IChEZWZpbml0aW9uKXdzRW50aXR5LmdldE1vZGVsKCk7Ci0gICAgaWYgKGRlZmluaXRpb24gPT0gbnVsbCkKLSAgICB7Ci0gICAgICBieXRlW10gYiA9IGdldElucHV0U3RyZWFtQXNCeXRlQXJyYXkod3NkbFVSSSk7Ci0gICAgICB3c0VudGl0eS5zZXRCeXRlcyhiKTsKLSAgICAgIHNldEhUVFBTZXR0aW5ncyh3c0VudGl0eSk7Ci0gICAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSBiYWlzID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGIpOwotICAgICAgV1NETEZhY3RvcnkgZmFjdG9yeSA9IFdTRExQbHVnaW4uSU5TVEFOQ0UuY3JlYXRlV1NETDRKRmFjdG9yeSgpOwotICAgICAgV1NETFJlYWRlciB3c2RsUmVhZGVyID0gZmFjdG9yeS5uZXdXU0RMUmVhZGVyKCk7Ci0gICAgICBkZWZpbml0aW9uID0gd3NkbFJlYWRlci5yZWFkV1NETCh3c2RsVVJJLCBuZXcgSW5wdXRTb3VyY2UoYmFpcykpOwotICAgICAgd3NFbnRpdHkuc2V0VHlwZShXZWJTZXJ2aWNlRW50aXR5LlRZUEVfV1NETCk7Ci0gICAgICB3c0VudGl0eS5zZXRNb2RlbChkZWZpbml0aW9uKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlZmluaXRpb247Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBwYXJzZSgpIHRocm93cyBNYWxmb3JtZWRVUkxFeGNlcHRpb24sIElPRXhjZXB0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICBwYXJzZVVSTChQQVJTRV9XU0lMIHwgUEFSU0VfV1NETCB8IFBBUlNFX0xJTktTIHwgUEFSU0VfRElTQ08pOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcGFyc2UoaW50IHBhcnNlT3B0aW9uKSB0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLCBXV1dBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbgotICB7Ci0gICAgcGFyc2VVUkwocGFyc2VPcHRpb24pOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHBhcnNlVVJMKGludCBwYXJzZU9wdGlvbikgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24KLSAgewotICAgIFdlYlNlcnZpY2VFbnRpdHkgd3NFbnRpdHkgPSBuZXcgV2ViU2VydmljZUVudGl0eSgpOwotICAgIAotICAgIC8vIFRoaXMgdmFyaWFibGUgbWFrZXMgdGhpcyBvYmplY3QgYSBsaXR0bGUgbW9yZSB0aHJlYWQgc2FmZSB0aGFuIGl0IHdhcwotICAgIC8vIGJlZm9yZSwgYWx0aG91Z2ggdGhpcyBvYmplY3QgaXMgbm90IGNvbXBsZXRlbHkgdGhyZWFkIHNhZmUuICBUaGUgc2NlbmFyaW8KLSAgICAvLyB0aGF0IHdlIGFyZSB0cnlpbmcgdG8gYXZvaWQgaXMgd2hlcmUgb25lIGNhbGwgdG8gdGhpcyBtZXRob2QgZ2V0cyBibG9ja2VkCi0gICAgLy8gYXQgdGhlIGdldElucHV0U3RyZWFtQXNCeXRlQXJyYXkgY2FsbC4gIFRoZW4gYSBzZWNvbmQgY2FsbCB0byB0aGUgbWV0aG9kCi0gICAgLy8gaXMgbWFkZSB0aGF0IGNoYW5nZXMgdGhlIHVyaV8gZ2xvYmFsIHZhcmlhYmxlLiAgV2hlbiB0aGUgZmlyc3QgY2FsbAotICAgIC8vIGNvbXBsZXRlcyBpdCB3b3VsZCB1c2UgdXJpXyB2YWx1ZSBmcm9tIHRoZSBzZWNvbmQgaW52b2NhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgdGhlIHZhbHVlIGZyb20gdGhlIGZpcnN0LiAgU3RvcmluZyB0aGUgdXJpXyBpbnRvIHRoaXMgdmFyaWFibGUgaGVscHMgCi0gICAgLy8gYXZvaWQgdGhpcyBiYWQgc2NlbmFyaW8uCi0gICAgU3RyaW5nIHRoZVVyaSA9IHVyaV87Ci0gICAgCi0gICAgd3NFbnRpdHkuc2V0VVJJKHRoZVVyaSk7Ci0gICAgYnl0ZVtdIGIgPSBnZXRJbnB1dFN0cmVhbUFzQnl0ZUFycmF5KHRoZVVyaSk7Ci0gICAgd3NFbnRpdHkuc2V0Qnl0ZXMoYik7Ci0gICAgc2V0SFRUUFNldHRpbmdzKHdzRW50aXR5KTsKLSAgICB1cmlUb0VudGl0eVRhYmxlXy5wdXQodGhlVXJpLCB3c0VudGl0eSk7Ci0gICAgLy8gcGFyc2UgdXJpXyBhcyBhIEhUTUwgZG9jdW1lbnQKLSAgICBIVE1MSGVhZEhhbmRsZXIgaGVhZEhhbmRsZXIgPSBuZXcgSFRNTEhlYWRIYW5kbGVyKHRoZVVyaSk7Ci0gICAgYnl0ZVtdIGhlYWQgPSBoZWFkSGFuZGxlci5oYXJ2ZXN0SGVhZFRhZ3MoYik7Ci0gICAgU3RyaW5nIGJ5dGVFbmNvZGluZyA9IGhlYWRIYW5kbGVyLmdldEJ5dGVFbmNvZGluZygpOwotICAgIFNBWFBhcnNlckZhY3RvcnkgZmFjdG9yeSA9IFNBWFBhcnNlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLSAgICBmYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKGZhbHNlKTsKLSAgICBmYWN0b3J5LnNldFZhbGlkYXRpbmcoZmFsc2UpOwotICAgIFNBWFBhcnNlciBwYXJzZXIgPSBmYWN0b3J5Lm5ld1NBWFBhcnNlcigpOwotICAgIHRyeQotICAgIHsKLSAgICAgIEJ5dGVBcnJheUlucHV0U3RyZWFtIGJhaXMgPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaGVhZCk7Ci0gICAgICBJbnB1dFN0cmVhbVJlYWRlciBpc3IgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoYmFpcywgYnl0ZUVuY29kaW5nKTsKLSAgICAgIElucHV0U291cmNlIGlzID0gbmV3IElucHV0U291cmNlKGlzcik7Ci0gICAgICBwYXJzZXIucGFyc2UoaXMsIGhlYWRIYW5kbGVyKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICB9Ci0gICAgU3RyaW5nW10gd3NpbFVSSXMgPSBoZWFkSGFuZGxlci5nZXRXc2lscygpOwotICAgIFN0cmluZ1tdIGRpc2NvVVJJcyA9IGhlYWRIYW5kbGVyLmdldERpc2NvcygpOwotICAgIC8vIHRydWUgaWYgdXJpXyBpcyBhIEhUTUwgZG9jdW1lbnQKLSAgICBpZiAod3NpbFVSSXMubGVuZ3RoID4gMCB8fCBkaXNjb1VSSXMubGVuZ3RoID4gMCkKLSAgICB7Ci0gICAgICB3c0VudGl0eS5zZXRUeXBlKFdlYlNlcnZpY2VFbnRpdHkuVFlQRV9IVE1MKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd3NpbFVSSXMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBhYnNvbHV0ZVVSSSA9IGNvbnZlcnRUb0Fic29sdXRlVVJJKHRoZVVyaSwgd3NpbFVSSXNbaV0pOwotICAgICAgICBXZWJTZXJ2aWNlRW50aXR5IHdzaWxFbnRpdHkgPSBuZXcgV2ViU2VydmljZUVudGl0eSgpOwotICAgICAgICB3c2lsRW50aXR5LnNldFR5cGUoV2ViU2VydmljZUVudGl0eS5UWVBFX1dTSUwpOwotICAgICAgICB3c2lsRW50aXR5LnNldFVSSShhYnNvbHV0ZVVSSSk7Ci0gICAgICAgIGFzc29jaWF0ZSh3c0VudGl0eSwgd3NpbEVudGl0eSk7Ci0gICAgICAgIHVyaVRvRW50aXR5VGFibGVfLnB1dChhYnNvbHV0ZVVSSSwgd3NpbEVudGl0eSk7Ci0gICAgICAgIGlmICgocGFyc2VPcHRpb24gfCBQQVJTRV9XU0lMKSA9PSBwYXJzZU9wdGlvbikKLSAgICAgICAgewotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBhcnNlV1NJTChhYnNvbHV0ZVVSSSwgcGFyc2VPcHRpb24sIGJ5dGVFbmNvZGluZyApOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0gICAgICAgICAgewotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgZm9yIChpbnQgaT0wO2k8ZGlzY29VUklzLmxlbmd0aDtpKyspCi0gICAgICB7Ci0gICAgICAgIFdlYlNlcnZpY2VFbnRpdHkgZGlzY29FbnRpdHkgPSBuZXcgV2ViU2VydmljZUVudGl0eSgpOwotICAgICAgICBkaXNjb0VudGl0eS5zZXRUeXBlKFdlYlNlcnZpY2VFbnRpdHkuVFlQRV9ESVNDTyk7Ci0gICAgICAgIGRpc2NvRW50aXR5LnNldFVSSShkaXNjb1VSSXNbaV0pOwotICAgICAgICBhc3NvY2lhdGUod3NFbnRpdHksZGlzY29FbnRpdHkpOwotICAgICAgICB1cmlUb0VudGl0eVRhYmxlXy5wdXQoZGlzY29VUklzW2ldLGRpc2NvRW50aXR5KTsKLSAgICAgICAgaWYgKChwYXJzZU9wdGlvbiB8IFBBUlNFX0RJU0NPKSA9PSBwYXJzZU9wdGlvbikKLSAgICAgICAgewotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBhcnNlRElTQ08oZGlzY29VUklzW2ldLHBhcnNlT3B0aW9uKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgICAgICAgIHsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gZmFsc2UgaWYgdXJpXyBpcyBub3QgYSBIVE1MIGRvY3VtZW50Ci0gICAgLy8gdGhlbiBwYXJzZSB1cmlfIGFzIGEgV1NJTCBkb2N1bWVudAotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgcGFyc2VXU0lMKHRoZVVyaSwgcGFyc2VPcHRpb24sIGJ5dGVFbmNvZGluZyApOwotICAgICAgICAvLyBubyBleGNlcHRpb24gdGhyb3duIGlmIHVyaV8gaXMgYSBXU0lMIGRvY3VtZW50Ci0gICAgICAgIHdzRW50aXR5LnNldFR5cGUoV2ViU2VydmljZUVudGl0eS5UWVBFX1dTSUwpOwotICAgICAgfQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgICAgewotICAgICAgICAvLyBleGNlcHRpb24gdGhyb3duIGlmIHVyaV8gaXMgbm90IGEgV1NJTCBkb2N1bWVudAotICAgICAgICAvLyB0aGVuIHBhcnNlIHVyaV8gYXMgYSBESVNDTyBkb2N1bWVudC4KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBwYXJzZURJU0NPKHRoZVVyaSwgcGFyc2VPcHRpb24pOwotICAgICAgICAgIC8vIG5vIGV4Y2VwdGlvbiB0aHJvd24gaWYgdXJpXyBpcyBhIERJU0NPIGRvY3VtZW50Ci0gICAgICAgICAgd3NFbnRpdHkuc2V0VHlwZShXZWJTZXJ2aWNlRW50aXR5LlRZUEVfRElTQ08pOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChFeGNlcHRpb24gdDIpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBleGNlcHRpb24gdGhyb3duIGlmIHVyaV8gaXMgbm90IGEgRElTQ08gZG9jdW1lbnQKLSAgICAgICAgICAvLyB0aGVuIHBhcnNlIHVyaV8gYXMgYSBXU0RMIGRvY3VtZW50Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgcGFyc2VXU0RMKHRoZVVyaSk7Ci0gICAgICAgICAgICAvLyBubyBleGNlcHRpb24gdGhyb3duIGlmIHVyaV8gaXMgYSBXU0RMIGRvY3VtZW50Ci0gICAgICAgICAgICB3c0VudGl0eS5zZXRUeXBlKFdlYlNlcnZpY2VFbnRpdHkuVFlQRV9XU0RMKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiB0MykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBleGNlcHRpb24gdGhyb3duIGlmIHVyaV8gaXMgbm90IGEgV1NETCBkb2N1bWVudAotICAgICAgICAgICAgLy8gdGhlbiBkbyBub3RoaW5nCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHBhcnNlV1NJTChTdHJpbmcgd3NpbFVSSSwgaW50IHBhcnNlT3B0aW9uLCBTdHJpbmcgYnl0ZUVuY29kaW5nICkgdGhyb3dzIFdTSUxFeGNlcHRpb24sIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFdTRExFeGNlcHRpb24sIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICBXZWJTZXJ2aWNlRW50aXR5IHdzaWxFbnRpdHkgPSBnZXRXZWJTZXJ2aWNlRW50aXR5QnlVUkkod3NpbFVSSSk7Ci0gICAgV1NJTERvY3VtZW50IHdzaWxEb2MgPSAoV1NJTERvY3VtZW50KXdzaWxFbnRpdHkuZ2V0TW9kZWwoKTsKLSAgICBpZiAod3NpbERvYyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcHMgZnJvbSBvY2N1cnJpbmcgd2hlbiBhIFdTSUwgY3ljbGVzIG9jY3VyLgotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB3c2lsRG9jID0gZ2V0V1NJTERvY3VtZW50VmVyYm9zZSh3c2lsVVJJLCBieXRlRW5jb2RpbmcgKTsKLSAgICBJbnNwZWN0aW9uIGluc3BlY3Rpb24gPSB3c2lsRG9jLmdldEluc3BlY3Rpb24oKTsKLSAgICBTZXJ2aWNlW10gc2VydmljZXMgPSBpbnNwZWN0aW9uLmdldFNlcnZpY2VzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2aWNlcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBEZXNjcmlwdGlvbltdIGRlc2NzID0gc2VydmljZXNbaV0uZ2V0RGVzY3JpcHRpb25zKCk7Ci0gICAgICAvLyBTZXQgdGhlIGRvY3VtZW50YXRpb24gdG8gdGhlIDxzZXJ2aWNlPiBlbGVtZW50J3MgZmlyc3QgYWJzdHJhY3QuCi0gICAgICBTdHJpbmcgZG9jdW1lbnRhdGlvbiA9IG51bGw7Ci0gICAgICBBYnN0cmFjdFtdIGFic3RyYWN0cyA9IHNlcnZpY2VzW2ldLmdldEFic3RyYWN0cygpOwotICAgICAgaWYgKGFic3RyYWN0cyAhPSBudWxsICYmIGFic3RyYWN0cy5sZW5ndGggPiAwKQotICAgICAgICBkb2N1bWVudGF0aW9uID0gYWJzdHJhY3RzWzBdLmdldFRleHQoKTsKLSAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZGVzY3MubGVuZ3RoOyBqKyspCi0gICAgICB7Ci0gICAgICAJU3RyaW5nIHJlZmVyZW5jZWROUyA9IGRlc2NzW2pdLmdldFJlZmVyZW5jZWROYW1lc3BhY2UoKTsKLSAgICAgIAkvLyBJZiBhIDxkZXNjcmlwdGlvbj4gZWxlbWVudCBjb250YWlucyBhbiBhYnN0cmFjdCwgdXNlIGl0IHRvIG92ZXJyaWRlIHRoZSBzZXJ2aWNlIGRvY3VtZW50YXRpb24uICAgICAgCQotICAgICAgCWFic3RyYWN0cyA9IGRlc2NzW2pdLmdldEFic3RyYWN0cygpOwotICAgICAgCWlmIChhYnN0cmFjdHMgIT0gbnVsbCAmJiBhYnN0cmFjdHMubGVuZ3RoID4gMCkKLSAgICAgIAkgIGRvY3VtZW50YXRpb24gPSBhYnN0cmFjdHNbMF0uZ2V0VGV4dCgpOwotICAgICAgICBpZiAoV1NETENvbnN0YW50cy5OU19VUklfV1NETC5lcXVhbHMocmVmZXJlbmNlZE5TKSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBsb2NhdGlvbiA9IGRlc2NzW2pdLmdldExvY2F0aW9uKCk7Ci0gICAgICAgICAgaWYgKGxvY2F0aW9uICE9IG51bGwgJiYgbG9jYXRpb24ubGVuZ3RoKCkgPiAwKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBhYnNvbHV0ZVVSSSA9IGNvbnZlcnRUb0Fic29sdXRlVVJJKHdzaWxVUkksIGxvY2F0aW9uKTsKLSAgICAgICAgICAgIFdlYlNlcnZpY2VFbnRpdHkgd3NkbEVudGl0eSA9IG5ldyBXZWJTZXJ2aWNlRW50aXR5KCk7Ci0gICAgICAgICAgICB3c2RsRW50aXR5LnNldFR5cGUoV2ViU2VydmljZUVudGl0eS5UWVBFX1dTREwpOwotICAgICAgICAgICAgd3NkbEVudGl0eS5zZXRVUkkoYWJzb2x1dGVVUkkpOwotICAgICAgICAgICAgd3NkbEVudGl0eS5zZXREb2N1bWVudGF0aW9uKGRvY3VtZW50YXRpb24pOwotICAgICAgICAgICAgYXNzb2NpYXRlKHdzaWxFbnRpdHksIHdzZGxFbnRpdHkpOwotICAgICAgICAgICAgdXJpVG9FbnRpdHlUYWJsZV8ucHV0KGFic29sdXRlVVJJLCB3c2RsRW50aXR5KTsKLSAgICAgICAgICAgIGlmICgocGFyc2VPcHRpb24gfCBQQVJTRV9XU0RMKSA9PSBwYXJzZU9wdGlvbikKLSAgICAgICAgICAgICAgcGFyc2VXU0RMKGFic29sdXRlVVJJKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVURESUNvbnN0YW50cy5OU19VUklfVURESV9WMi5lcXVhbHMocmVmZXJlbmNlZE5TKSkKLSAgICAgICAgewotICAgICAgICAgIEV4dGVuc2lvbkVsZW1lbnQgZWUgPSBkZXNjc1tqXS5nZXRFeHRlbnNpb25FbGVtZW50KCk7Ci0gICAgICAgICAgaWYgKGVlIGluc3RhbmNlb2YgU2VydmljZURlc2NyaXB0aW9uKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFNlcnZpY2VEZXNjcmlwdGlvbiBzZCA9IChTZXJ2aWNlRGVzY3JpcHRpb24pZWU7Ci0gICAgICAgICAgICBTdHJpbmcgaW5xdWlyeVVSTCA9IHNkLmdldExvY2F0aW9uKCk7Ci0gICAgICAgICAgICBTdHJpbmcgc2VydmljZUtleSA9IHNkLmdldFNlcnZpY2VLZXkoKS5nZXRUZXh0KCk7Ci0gICAgICAgICAgICBXZWJTZXJ2aWNlRW50aXR5IHVkZGlTZXJ2aWNlRW50aXR5ID0gbmV3IFdlYlNlcnZpY2VFbnRpdHkoKTsKLSAgICAgICAgICAgIHVkZGlTZXJ2aWNlRW50aXR5LnNldFR5cGUoV2ViU2VydmljZUVudGl0eS5UWVBFX1VERElfU0VSVklDRSk7Ci0gICAgICAgICAgICBTdHJpbmcgdWRkaVNlcnZpY2VLZXlVUkkgPSBVRERJVVJJSGVscGVyLmdldFNlcnZpY2VLZXlVUkkoc2VydmljZUtleSxpbnF1aXJ5VVJMKTsKLSAgICAgICAgICAgIHVkZGlTZXJ2aWNlRW50aXR5LnNldFVSSSh1ZGRpU2VydmljZUtleVVSSSk7Ci0gICAgICAgICAgICB1ZGRpU2VydmljZUVudGl0eS5zZXREb2N1bWVudGF0aW9uKGRvY3VtZW50YXRpb24pOwotICAgICAgICAgICAgYXNzb2NpYXRlKHdzaWxFbnRpdHksdWRkaVNlcnZpY2VFbnRpdHkpOwotICAgICAgICAgICAgdXJpVG9FbnRpdHlUYWJsZV8ucHV0KHVkZGlTZXJ2aWNlS2V5VVJJLHVkZGlTZXJ2aWNlRW50aXR5KTsKLSAgICAgICAgICAgIC8vIFRPRE86IHBhcnNlIFdTREwgaWYgbmVjZXNzYXJ5Li4uCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIExpbmtbXSBsaW5rcyA9IGluc3BlY3Rpb24uZ2V0TGlua3MoKTsgICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoV1NJTENvbnN0YW50cy5OU19VUklfV1NJTC5lcXVhbHMobGlua3NbaV0uZ2V0UmVmZXJlbmNlZE5hbWVzcGFjZSgpKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGRvY3VtZW50YXRpb24gPSBudWxsOwotICAgICAgICBBYnN0cmFjdFtdIGFic3RyYWN0cyA9IGxpbmtzW2ldLmdldEFic3RyYWN0cygpOwotICAgICAgICBpZiAoYWJzdHJhY3RzICE9IG51bGwgJiYgYWJzdHJhY3RzLmxlbmd0aCA+IDApCi0gICAgICAgICAgZG9jdW1lbnRhdGlvbiA9IGFic3RyYWN0c1swXS5nZXRUZXh0KCk7Ci0gICAgICAgIFN0cmluZyBsaW5rTG9jYXRpb24gPSBsaW5rc1tpXS5nZXRMb2NhdGlvbigpOwotICAgICAgICBTdHJpbmcgYWJzb2x1dGVVUkkgPSBjb252ZXJ0VG9BYnNvbHV0ZVVSSSh3c2lsVVJJLCBsaW5rTG9jYXRpb24pOwotICAgICAgICAvLyBQcmV2ZW50IGN5Y2xlcy4KLSAgICAgICAgV2ViU2VydmljZUVudGl0eSB3c2lsTGlua0VudGl0eSA9IGdldFdlYlNlcnZpY2VFbnRpdHlCeVVSSShhYnNvbHV0ZVVSSSk7Ci0gICAgICAgIGlmICh3c2lsTGlua0VudGl0eSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgd3NpbExpbmtFbnRpdHkgPSBuZXcgV2ViU2VydmljZUVudGl0eSgpOwotICAgICAgICAgIHdzaWxMaW5rRW50aXR5LnNldFR5cGUoV2ViU2VydmljZUVudGl0eS5UWVBFX1dTSUwpOwotICAgICAgICAgIHdzaWxMaW5rRW50aXR5LnNldFVSSShhYnNvbHV0ZVVSSSk7Ci0gICAgICAgICAgd3NpbExpbmtFbnRpdHkuc2V0RG9jdW1lbnRhdGlvbihkb2N1bWVudGF0aW9uKTsKLSAgICAgICAgICB1cmlUb0VudGl0eVRhYmxlXy5wdXQoYWJzb2x1dGVVUkksIHdzaWxMaW5rRW50aXR5KTsKLSAgICAgICAgICBpZiAoKHBhcnNlT3B0aW9uIHwgUEFSU0VfTElOS1MpID09IHBhcnNlT3B0aW9uKQotICAgICAgICAgICAgcGFyc2VXU0lMKGFic29sdXRlVVJJLCBwYXJzZU9wdGlvbiwgYnl0ZUVuY29kaW5nICk7Ci0gICAgICAgIH0KLSAgICAgICAgYXNzb2NpYXRlKHdzaWxFbnRpdHksd3NpbExpbmtFbnRpdHkpOwotICAgICAgfQotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIHBhcnNlRElTQ08oU3RyaW5nIGRpc2NvVVJJLCBpbnQgcGFyc2VPcHRpb24pIHRocm93cyBNYWxmb3JtZWRVUkxFeGNlcHRpb24sIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uLCBFeGNlcHRpb24KLSAgewotICAgIFdlYlNlcnZpY2VFbnRpdHkgZGlzY29FbnRpdHkgPSBnZXRXZWJTZXJ2aWNlRW50aXR5QnlVUkkoZGlzY29VUkkpOwotICAgIGJ5dGVbXSBiID0gZ2V0SW5wdXRTdHJlYW1Bc0J5dGVBcnJheShkaXNjb1VSSSk7Ci0gICAgZGlzY29FbnRpdHkuc2V0Qnl0ZXMoYik7Ci0gICAgc2V0SFRUUFNldHRpbmdzKGRpc2NvRW50aXR5KTsKLSAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSBiYWlzID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGIpOwotICAgIERJU0NPUGFyc2VyIHBhcnNlciA9IG5ldyBESVNDT1BhcnNlcigpOwotICAgIERJU0NPUmVmZXJlbmNlW10gcmVmZXJlbmNlcyA9IHBhcnNlci5wYXJzZShkaXNjb1VSSSxuZXcgSW5wdXRTb3VyY2UoYmFpcykpOwotICAgIGlmIChyZWZlcmVuY2VzICE9IG51bGwgJiYgcmVmZXJlbmNlcy5sZW5ndGggPiAwKQotICAgIHsKLSAgICAgIGZvciAoaW50IGk9MDtpPHJlZmVyZW5jZXMubGVuZ3RoO2krKykKLSAgICAgIHsKLSAgICAgICAgaWYgKHJlZmVyZW5jZXNbaV0gaW5zdGFuY2VvZiBESVNDT0NvbnRyYWN0UmVmZXJlbmNlKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gY29udHJhY3RSZWYKLSAgICAgICAgICBESVNDT0NvbnRyYWN0UmVmZXJlbmNlIHJlZmVyZW5jZSA9IChESVNDT0NvbnRyYWN0UmVmZXJlbmNlKXJlZmVyZW5jZXNbaV07Ci0gICAgICAgICAgU3RyaW5nIHJlZiA9IHJlZmVyZW5jZS5nZXRSZWYoKTsKLSAgICAgICAgICBTdHJpbmcgZG9jUmVmID0gcmVmZXJlbmNlLmdldERvY1JlZigpOwotICAgICAgICAgIFdlYlNlcnZpY2VFbnRpdHkgd3NkbEVudGl0eSA9IG5ldyBXZWJTZXJ2aWNlRW50aXR5KCk7Ci0gICAgICAgICAgd3NkbEVudGl0eS5zZXRUeXBlKFdlYlNlcnZpY2VFbnRpdHkuVFlQRV9XU0RMKTsKLSAgICAgICAgICB3c2RsRW50aXR5LnNldFVSSShyZWYpOwotICAgICAgICAgIHdzZGxFbnRpdHkuc2V0RG9jdW1lbnRhdGlvbihkb2NSZWYpOwotICAgICAgICAgIGFzc29jaWF0ZShkaXNjb0VudGl0eSx3c2RsRW50aXR5KTsKLSAgICAgICAgICB1cmlUb0VudGl0eVRhYmxlXy5wdXQocmVmLHdzZGxFbnRpdHkpOwotICAgICAgICAgIGlmICgocGFyc2VPcHRpb24gfCBQQVJTRV9XU0RMKSA9PSBwYXJzZU9wdGlvbikKLSAgICAgICAgICAgIHBhcnNlV1NETChyZWYpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIGRpc2NvdmVyeVJlZgotICAgICAgICAgIFN0cmluZyByZWYgPSByZWZlcmVuY2VzW2ldLmdldFJlZigpOwotICAgICAgICAgIC8vIFByZXZlbnQgY3ljbGVzLgotICAgICAgICAgIFdlYlNlcnZpY2VFbnRpdHkgZGlzY29MaW5rRW50aXR5ID0gZ2V0V2ViU2VydmljZUVudGl0eUJ5VVJJKHJlZik7Ci0gICAgICAgICAgaWYgKGRpc2NvTGlua0VudGl0eSA9PSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGRpc2NvTGlua0VudGl0eSA9IG5ldyBXZWJTZXJ2aWNlRW50aXR5KCk7Ci0gICAgICAgICAgICBkaXNjb0xpbmtFbnRpdHkuc2V0VHlwZShXZWJTZXJ2aWNlRW50aXR5LlRZUEVfRElTQ08pOwotICAgICAgICAgICAgZGlzY29MaW5rRW50aXR5LnNldFVSSShyZWYpOwotICAgICAgICAgICAgdXJpVG9FbnRpdHlUYWJsZV8ucHV0KHJlZixkaXNjb0xpbmtFbnRpdHkpOwotICAgICAgICAgICAgaWYgKChwYXJzZU9wdGlvbiB8IFBBUlNFX0xJTktTKSA9PSBwYXJzZU9wdGlvbikKLSAgICAgICAgICAgICAgcGFyc2VESVNDTyhyZWYscGFyc2VPcHRpb24pOwotICAgICAgICAgIH0KLSAgICAgICAgICBhc3NvY2lhdGUoZGlzY29FbnRpdHksZGlzY29MaW5rRW50aXR5KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgRGVmaW5pdGlvbiBwYXJzZVdTREwoU3RyaW5nIHdzZGxVUkkpIHRocm93cyBXU0RMRXhjZXB0aW9uLCBNYWxmb3JtZWRVUkxFeGNlcHRpb24sIElPRXhjZXB0aW9uLCBXV1dBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIGdldFdTRExEZWZpbml0aW9uVmVyYm9zZSh3c2RsVVJJKTsKLSAgfQotCi0gIHByaXZhdGUgYnl0ZVtdIGdldElucHV0U3RyZWFtQXNCeXRlQXJyYXkoU3RyaW5nIHVyaVN0cmluZykgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBUcnkgdG8gZ2V0IGEgY2FjaGVkIGNvcHkgb2YgdGhlIGJ5dGVbXQotICAgIFdlYlNlcnZpY2VFbnRpdHkgd3NFbnRpdHkgPSBnZXRXZWJTZXJ2aWNlRW50aXR5QnlVUkkodXJpU3RyaW5nKTsKLSAgICBpZiAod3NFbnRpdHkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBieXRlW10gYnl0ZXMgPSB3c0VudGl0eS5nZXRCeXRlcygpOwotICAgICAgaWYgKGJ5dGVzICE9IG51bGwpCi0gICAgICAgIHJldHVybiBieXRlczsKLSAgICB9Ci0gICAgLy8gR2V0IHRoZSBieXRlW10gYnkgb3BlbmluZyBhIHN0cmVhbSB0byB0aGUgVVJJCi0gICAgVVJMIHVybCA9IGNyZWF0ZVVSTCh1cmlTdHJpbmcpOwotICAgIFVSTENvbm5lY3Rpb24gY29ubiA9IHVybC5vcGVuQ29ubmVjdGlvbigpOwotICAgIC8vIHByb3h5IHNlcnZlciBzZXR0aW5nCi0gICAgU3RyaW5nIHByb3h5VXNlck5hbWUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImh0dHAucHJveHlVc2VyTmFtZSIpOwotICAgIFN0cmluZyBwcm94eVBhc3N3b3JkID0gU3lzdGVtLmdldFByb3BlcnR5KCJodHRwLnByb3h5UGFzc3dvcmQiKTsKLSAgICBpZiAocHJveHlVc2VyTmFtZSAhPSBudWxsICYmIHByb3h5UGFzc3dvcmQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmdCdWZmZXIgdXNlck5hbWVQYXNzd29yZCA9IG5ldyBTdHJpbmdCdWZmZXIocHJveHlVc2VyTmFtZSk7Ci0gICAgICB1c2VyTmFtZVBhc3N3b3JkLmFwcGVuZCgnOicpLmFwcGVuZChwcm94eVBhc3N3b3JkKTsKLSAgICAgIEJhc2U2NCBlbmNvZGVyID0gbmV3IEJhc2U2NCgpOwotICAgICAgU3RyaW5nIGVuY29kaW5nID0gbmV3IFN0cmluZyhlbmNvZGVyLmVuY29kZSh1c2VyTmFtZVBhc3N3b3JkLnRvU3RyaW5nKCkuZ2V0Qnl0ZXMoKSkpOwotICAgICAgdXNlck5hbWVQYXNzd29yZC5zZXRMZW5ndGgoMCk7Ci0gICAgICB1c2VyTmFtZVBhc3N3b3JkLmFwcGVuZCgiQmFzaWMgIikuYXBwZW5kKGVuY29kaW5nKTsKLSAgICAgIGNvbm4uc2V0UmVxdWVzdFByb3BlcnR5KCJQcm94eS1hdXRob3JpemF0aW9uIiwgdXNlck5hbWVQYXNzd29yZC50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgLy8gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvbiBzZXR0aW5nCi0gICAgaWYgKGh0dHBCYXNpY0F1dGhVc2VybmFtZV8gIT0gbnVsbCAmJiBodHRwQmFzaWNBdXRoUGFzc3dvcmRfICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcihodHRwQmFzaWNBdXRoVXNlcm5hbWVfKTsKLSAgICAgIHNiLmFwcGVuZCgnOicpLmFwcGVuZChodHRwQmFzaWNBdXRoUGFzc3dvcmRfKTsKLSAgICAgIEJhc2U2NCBlbmNvZGVyID0gbmV3IEJhc2U2NCgpOwotICAgICAgU3RyaW5nIGVuY29kaW5nID0gbmV3IFN0cmluZyhlbmNvZGVyLmVuY29kZShzYi50b1N0cmluZygpLmdldEJ5dGVzKCkpKTsKLSAgICAgIHNiLnNldExlbmd0aCgwKTsKLSAgICAgIHNiLmFwcGVuZCgiQmFzaWMgIikuYXBwZW5kKGVuY29kaW5nKTsKLSAgICAgIGNvbm4uc2V0UmVxdWVzdFByb3BlcnR5KCJBdXRob3JpemF0aW9uIiwgc2IudG9TdHJpbmcoKSk7Ci0gICAgfQotICAgIElucHV0U3RyZWFtIGlzID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpcyA9IGNvbm4uZ2V0SW5wdXRTdHJlYW0oKTsKLSAgICAgIFN0cmluZyB3d3dBdXRoTXNnID0gY29ubi5nZXRIZWFkZXJGaWVsZCgiV1dXLUF1dGhlbnRpY2F0ZSIpOwotICAgICAgaWYgKHd3d0F1dGhNc2cgIT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uKG5ldyBJT0V4Y2VwdGlvbigpLCB3d3dBdXRoTXNnLCB1cmlTdHJpbmcpOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKQotICAgIHsKLSAgICAgIFN0cmluZyB3d3dBdXRoTXNnID0gY29ubi5nZXRIZWFkZXJGaWVsZCgiV1dXLUF1dGhlbnRpY2F0ZSIpOwotICAgICAgaWYgKHd3d0F1dGhNc2cgIT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uKGlvZSwgd3d3QXV0aE1zZywgdXJpU3RyaW5nKTsKLSAgICAgIGVsc2UKLSAgICAgICAgdGhyb3cgaW9lOwotICAgIH0KLSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKLSAgICBieXRlW10gYiA9IG5ldyBieXRlWzEwMjRdOwotICAgIGludCBieXRlUmVhZCA9IGlzLnJlYWQoYik7Ci0gICAgd2hpbGUgKGJ5dGVSZWFkICE9IC0xKQotICAgIHsKLSAgICAgIGJhb3Mud3JpdGUoYiwgMCwgYnl0ZVJlYWQpOwotICAgICAgYnl0ZVJlYWQgPSBpcy5yZWFkKGIpOwotICAgIH0KLSAgICBpcy5jbG9zZSgpOwotICAgIHJldHVybiBiYW9zLnRvQnl0ZUFycmF5KCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgVVJMIGNyZWF0ZVVSTChTdHJpbmcgdXJsKSB0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gbmV3IFVSTCh1cmwpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGFzc29jaWF0ZShXZWJTZXJ2aWNlRW50aXR5IHBhcmVudCwgV2ViU2VydmljZUVudGl0eSBjaGlsZCkKLSAgewotICAgIHBhcmVudC5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQuc2V0UGFyZW50KHBhcmVudCk7Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBjb252ZXJ0VG9BYnNvbHV0ZVVSSShTdHJpbmcgYmFzZVVSSSxTdHJpbmcgcmVmVVJJKQotICB7Ci0gICAgaWYgKHJlZlVSSSAhPSBudWxsICYmIHJlZlVSSS5pbmRleE9mKCI6IikgPCAwKQotICAgIHsKLSAgICAgIFN0cmluZ0J1ZmZlciBhYnNvbHV0ZVVSSSA9IG5ldyBTdHJpbmdCdWZmZXIoYmFzZVVSSS5zdWJzdHJpbmcoMCxNYXRoLm1heChiYXNlVVJJLmxhc3RJbmRleE9mKCdcXCcpLGJhc2VVUkkubGFzdEluZGV4T2YoJy8nKSsxKSkpOwotICAgICAgYWJzb2x1dGVVUkkuYXBwZW5kKHJlZlVSSSk7Ci0gICAgICByZXR1cm4gYWJzb2x1dGVVUkkudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlZlVSSTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBzZXRIVFRQU2V0dGluZ3MoV2ViU2VydmljZUVudGl0eSBlbnRpdHkpCi0gIHsKLSAgICBpZiAoaHR0cEJhc2ljQXV0aFVzZXJuYW1lXyAhPSBudWxsICYmIGh0dHBCYXNpY0F1dGhQYXNzd29yZF8gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBlbnRpdHkuc2V0SFRUUFVzZXJuYW1lKGh0dHBCYXNpY0F1dGhVc2VybmFtZV8pOwotICAgICAgZW50aXR5LnNldEhUVFBQYXNzd29yZChodHRwQmFzaWNBdXRoUGFzc3dvcmRfKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEhUVFBCYXNpY0F1dGhVc2VybmFtZSgpCi0gIHsKLSAgICByZXR1cm4gaHR0cEJhc2ljQXV0aFVzZXJuYW1lXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEhUVFBCYXNpY0F1dGhVc2VybmFtZShTdHJpbmcgdXNlcm5hbWUpCi0gIHsKLSAgICBodHRwQmFzaWNBdXRoVXNlcm5hbWVfID0gdXNlcm5hbWU7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEhUVFBCYXNpY0F1dGhQYXNzd29yZCgpCi0gIHsKLSAgICByZXR1cm4gaHR0cEJhc2ljQXV0aFBhc3N3b3JkXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEhUVFBCYXNpY0F1dGhQYXNzd29yZChTdHJpbmcgcGFzc3dvcmQpCi0gIHsKLSAgICBodHRwQmFzaWNBdXRoUGFzc3dvcmRfID0gcGFzc3dvcmQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci93c2lsL3dzaWwucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BhcnNlci93c2lsL3dzaWwucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM0NTMwZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wYXJzZXIvd3NpbC93c2lsLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBNZXNzYWdlcyBmb3IgQWRkV1NETFRvV1NJTENvbW1hbmQKLSMKLU1TR19FUlJPUl9JTlZBTElEX0FSR1VNRU5UUz1JV0FCMDA1NUUgSW52YWxpZCBjb21tYW5kIGFyZ3VtZW50cy4KLU1TR19FUlJPUl9JTExFR0FMX0FSR1VNRU5UUz1JV0FCMDEwNUUgSWxsZWdhbCBhcmd1bWVudC4KLU1TR19FUlJPUl9JTlZBTElEX1dTRExfVVJJPUlXQUIwMTg1RSBJbnZhbGlkIFdTREwgVVJJLgotTVNHX0VSUk9SX0lOVkFMSURfV1NJTF9VUkk9SVdBQjAyMDZFIEludmFsaWQgV1NJTCBVUkkuCi1NU0dfRVJST1JfVU5SRVNPTFZBQkxFX1dTREw9SVdBQjA0MDVFIFdTREwgaXMgdW5yZXNvbHZhYmxlLgotTVNHX0VSUk9SX1VORVhQRUNURURfRVhDRVBUSU9OPUlXQUIwNDUxRSBBbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiBoYXMgb2NjdXJlZC4KLU1TR19FUlJPUl9NQUxGT1JNRURfV1NETD1JV0FCMDQ1MkUgV1NETCBpcyBtYWxmb3JtZWQsIGVycm9yIHBhcnNpbmcgV1NETC4KLU1TR19FUlJPUl9XUklURV9XU0lMPUlXQUIwNDUzRSBFcnJvciB3cml0aW5nIFdTSUwuCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9wYXJzZXIvUGx1Z2luTWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3BhcnNlci9QbHVnaW5NZXNzYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTM0NDBlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3BhcnNlci9QbHVnaW5NZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5wYXJzZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotCi1wdWJsaWMgY2xhc3MgUGx1Z2luTWVzc2FnZXMgZXh0ZW5kcyBOTFMKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLndzdC53cy5wYXJzZXIucGx1Z2luIjsgLy8kTk9OLU5MUy0xJAotICAKLSAgc3RhdGljCi0gIHsKLSAgICBOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBQbHVnaW5NZXNzYWdlcy5jbGFzcyk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBQVUJMSUNVRERJUkVHSVNUUllUWVBFX05BTUVfU0FQOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBQVUJMSUNVRERJUkVHSVNUUllUWVBFX05BTUVfU0FQX1RFU1Q7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFBVQkxJQ1VERElSRUdJU1RSWVRZUEVfTkFNRV9YTUVUSE9EUzsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX05UVENPTU07Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvcGFyc2VyL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvcGFyc2VyL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGI2NzRkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlci9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3BhcnNlci9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBQdWJsaWNVRERJUmVnaXN0cnlUeXBlCi0jCi1QVUJMSUNVRERJUkVHSVNUUllUWVBFX05BTUVfU0FQPVNBUCBVRERJIFJlZ2lzdHJ5Ci1QVUJMSUNVRERJUkVHSVNUUllUWVBFX05BTUVfU0FQX1RFU1Q9U0FQIFVEREkgVGVzdCBSZWdpc3RyeQotUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX1hNRVRIT0RTPVhNZXRob2RzIFJlZ2lzdHJ5Ci1QVUJMSUNVRERJUkVHSVNUUllUWVBFX05BTUVfTlRUQ09NTT1OVFQgQ29tbXVuaWNhdGlvbnMgUmVnaXN0cnkKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLy5jbGFzc3BhdGggYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDRlODYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjUiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMGRiODQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotLnNldHRpbmdzCi1qYXZhQ29tcGlsZXIuLi5hcmdzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS8ucHJvamVjdCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWMwZjQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL01FVEEtSU5GL01BTklGRVNULk1GIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2OTNjMGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTtzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuMTAyLnF1YWxpZmllcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSQotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSJbMy4zLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k7YnVuZGxlLXZlcnNpb249IlsxLjAuMCwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLnN3dDtidW5kbGUtdmVyc2lvbj0iWzMuMy4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamZhY2U7YnVuZGxlLXZlcnNpb249IlszLjMuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpO2J1bmRsZS12ZXJzaW9uPSJbMy4zLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcztidW5kbGUtdmVyc2lvbj0iWzMuMy4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9ucztidW5kbGUtdmVyc2lvbj0iWzMuMy4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UudWkuZm9ybXM7YnVuZGxlLXZlcnNpb249IlszLjMuMCw0LjAuMCkiCi1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQotQnVuZGxlLVJlcXVpcmVkRXhlY3V0aW9uRW52aXJvbm1lbnQ6IEoyU0UtMS41Ci1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLAotIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvYWJvdXQuaHRtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvYnVpbGQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhOGQzZmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotc291cmNlLi4gPSBzcmMvCi1vdXRwdXQuLiA9IGJpbi8KLWJpbi5pbmNsdWRlcyA9IE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICAuLFwKLSAgICAgICAgICAgICAgIHNjaGVtYS8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBpY29ucy8sXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvaWNvbnMvZnVsbC9vYmoxNi9maWxlX29iai5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9pY29ucy9mdWxsL29iajE2L2ZpbGVfb2JqLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYyZGVkYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9pY29ucy9mdWxsL29iajE2L2ZpbGVfb2JqLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL2ljb25zL2Z1bGwvb2JqMTYvZmxkcl9vYmouZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvaWNvbnMvZnVsbC9vYmoxNi9mbGRyX29iai5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OTFmMmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvaWNvbnMvZnVsbC9vYmoxNi9mbGRyX29iai5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9pY29ucy9mdWxsL292cjE2L2Zhdm9yaXRlX292ci5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9pY29ucy9mdWxsL292cjE2L2Zhdm9yaXRlX292ci5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYjE2NzYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvaWNvbnMvZnVsbC9vdnIxNi9mYXZvcml0ZV9vdnIuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvaWNvbnMvZnVsbC9vdnIxNi9pbnZhbGlkdHlwZV9vdnIuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvaWNvbnMvZnVsbC9vdnIxNi9pbnZhbGlkdHlwZV9vdnIuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTlkY2NjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL2ljb25zL2Z1bGwvb3ZyMTYvaW52YWxpZHR5cGVfb3ZyLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL2ljb25zL2Z1bGwvb3ZyMTYvdW5tb2RpZmlhYmxlX292ci5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9pY29ucy9mdWxsL292cjE2L3VubW9kaWZpYWJsZV9vdnIuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDkzZDgxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL2ljb25zL2Z1bGwvb3ZyMTYvdW5tb2RpZmlhYmxlX292ci5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9pY29ucy9mdWxsL292cjE2L3dhcm5pbmdfb3ZyLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL2ljb25zL2Z1bGwvb3ZyMTYvd2FybmluZ19vdnIuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTJkYWM0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL2ljb25zL2Z1bGwvb3ZyMTYvd2FybmluZ19vdnIuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvcGx1Z2luLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNhYTExYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotIyAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBJbml0aWFsIGNvZGluZy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPVNlcnZpY2UgcG9saWN5Ci1QTFVHSU5fUFJPVklERVI9RWNsaXBzZS5vcmcKLVNFUlZJQ0VfUE9MSUNZX05BTUU9U2VydmljZSBwb2xpY3kgVUkKLVBSRUZFUkVOQ0VfU0VSVklDRVBPTElDSUVTPVNlcnZpY2UgUG9saWNpZXMKLUNPTVBMSUFOQ0VfTEVWRUxfTE9OR05BTUU9Q29tcGxpYW5jZSBsZXZlbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3BsdWdpbi54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjE4MGE1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotPHBsdWdpbj4KLSAgIDxleHRlbnNpb24tcG9pbnQgaWQ9InNlcnZpY2Vwb2xpY3l1aSIgbmFtZT0iJVNFUlZJQ0VfUE9MSUNZX05BTUUiIHNjaGVtYT0ic2NoZW1hL3NlcnZpY2VQb2xpY3l1aS5leHNkIi8+Ci0gICAKLSAgPCEtLSBXZSBuZWVkIHRoaXMgcGx1Z2luIHRvIGJlIGxvYWRlZCBhdCBzdGFydHVwIHRpbWUgc28gdGhhdCB0aGUKLSAgICAgICBTZXJ2aWNlUG9saWN5UHJvcGVydHlUZXN0ZXIgY2xhc3Mgd2lsbCBhbHdheXMgYmUgbG9hZGVkLiAgSWYgdGhpcyBpcwotICAgICAgIG5vdCBkb25lIHRoZW4gdGhlIFNlcnZpY2UgUG9saWN5IHByb2plY3QgcHJvcGVydHkgcGFnZSB3aWxsIGFwcGVhcgotICAgICAgIG9uIGFsbCBwcm9qZWN0IHByb3BlcnR5IHBhZ2VzIHVudGlsIHRoZSBwbHVnaW4gaGFzIGJlZW4gbG9hZGVkLiAKLSAgICAgICAtLT4KLSAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UudWkuc3RhcnR1cCIvPgotICAgCi0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS51aS5wcmVmZXJlbmNlUGFnZXMiPgotICAgICAgPHBhZ2UgbmFtZT0iJVBSRUZFUkVOQ0VfU0VSVklDRVBPTElDSUVTIgotICAgICAgCQljbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnNlcnZpY2UucG9saWN5LnVpLnByZWZlcmVuY2VzLlNlcnZpY2VQb2xpY2llc1ByZWZlcmVuY2VQYWdlIgotICAgICAgICAgICAgY2F0ZWdvcnk9Im9yZy5lY2xpcHNlLnVpLnByZWZlcmVuY2VQYWdlcy5Xb3JrYmVuY2giCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLndzaS5wcmVmZXJlbmNlcy5XU0lDb21wbGlhbmNlUHJlZmVyZW5jZVBhZ2UiPgotICAgICAgPC9wYWdlPgotICAgPC9leHRlbnNpb24+Ci0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbGljeXVpIj4KLSAgICAgPHNlcnZpY2VQb2xpY3lVST4KLSAgICAgICA8b3BlcmF0aW9uIGlkPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbHMud3NpcHJvZmlsZWNvbXAiCi0gICAgICAgICAgICAgICAgICAgICAgcG9saWN5UGF0dGVybj0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnNlcnZpY2Vwb2xzLndzaXByb2ZpbGVjb21wLndzaS4qIj4KLSAgICAgICAgIDxkZXNjcmlwdG9yIGxvbmdOYW1lPSIlQ09NUExJQU5DRV9MRVZFTF9MT05HTkFNRSIvPgotICAgICAgICAgPGVudW1lcmF0aW9uIGlkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuc3VnZ2VzdGlvbkVudW0iLz4KLSAgICAgICAgIDxlbmFibGVkIG11bHRpc2VsZWN0PSJ0cnVlIi8+Ci0gICAgICAgPC9vcGVyYXRpb24+Ci0gICAgIDwvc2VydmljZVBvbGljeVVJPgotICAgPC9leHRlbnNpb24+Ci0gICAKLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5wcm9wZXJ0eVBhZ2VzIj4KLQotICAgICAgPHBhZ2UKLSAgICAgICAgICAgIG5hbWU9IiVQUkVGRVJFTkNFX1NFUlZJQ0VQT0xJQ0lFUyIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuc2VydmljZS5wb2xpY3kudWkucHJvcGVydGllcy5TZXJ2aWNlUG9saWNpZXNQcm9wZXJ0eVBhZ2UiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLndzaS5wcm9wZXJ0aWVzLldTSUNvbXBsaWFuY2VQcm9wZXJ0eVBhZ2UiPgotICAgICAgICAgICAKLSAgICAgICAgICAgIDxlbmFibGVkV2hlbj4KLSAgICAgICAgICAgICAgIDxhZGFwdCB0eXBlPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCI+IAotICAgICAgICAgICAgICAgICA8dGVzdCBwcm9wZXJ0eT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLmlzRW5hYmxlZCIvPgotICAgICAgICAgICAgICAgPC9hZGFwdD4gCi0gICAgICAgICAgICA8L2VuYWJsZWRXaGVuPgotICAgICAgPC9wYWdlPgotICAgPC9leHRlbnNpb24+Ci0gICAKLSAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9ucy5wcm9wZXJ0eVRlc3RlcnMiPgotICAgIDxwcm9wZXJ0eVRlc3RlcgotICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5lbmFibGVkIgotICAgICAgdHlwZT0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QiCi0gICAgICBuYW1lc3BhY2U9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSIKLSAgICAgIHByb3BlcnRpZXM9ImlzRW5hYmxlZCIKLSAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuc2VydmljZS5wb2xpY3kudWkucHJvcGVydGllcy5TZXJ2aWNlUG9saWN5UHJvcGVydHlUZXN0ZXIiPgotICAgIDwvcHJvcGVydHlUZXN0ZXI+Ci0gIDwvZXh0ZW5zaW9uPgotCi08L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zY2hlbWEvc2VydmljZVBvbGljeXVpLmV4c2QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zY2hlbWEvc2VydmljZVBvbGljeXVpLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMTA0YzkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc2NoZW1hL3NlcnZpY2VQb2xpY3l1aS5leHNkCisrKyAvZGV2L251bGwKQEAgLTEsMzMwICswLDAgQEAKLTw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+Ci08IS0tIFNjaGVtYSBmaWxlIHdyaXR0ZW4gYnkgUERFIC0tPgotPHNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Im9yZy5lY2xpcHNlLndzdC5zZXJ2aWNlLnBvbGljeS51aSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLTxhbm5vdGF0aW9uPgotICAgICAgPGFwcGluZm8+Ci0gICAgICAgICA8bWV0YS5zY2hlbWEgcGx1Z2luPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kudWkiIGlkPSJzZXJ2aWNlcG9saWN5dWkiIG5hbWU9IlNlcnZpY2UgcG9saWN5IFVJIi8+Ci0gICAgICA8L2FwcGluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBleHRlbmRlcnMgdG8gYWRkIHNlcnZpY2UgcG9saWN5IFVJIG9wZXJhdGlvbnMgZm9yIHRoZQotICAgICAgICAgc2VydmljZSBwb2xpY2llcyB0aGF0IHRoZXkgaGF2ZSBhZGRlZC4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaW9uIj4KLSAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgPGFwcGluZm8+Ci0gICAgICAgICAgICA8bWV0YS5lbGVtZW50IC8+Ci0gICAgICAgICA8L2FwcGluZm8+Ci0gICAgICA8L2Fubm90YXRpb24+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8c2VxdWVuY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9InNlcnZpY2VQb2xpY3lVSSIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotICAgICAgICAgPC9zZXF1ZW5jZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9pbnQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBpbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIHRyYW5zbGF0YWJsZT0idHJ1ZSIvPgotICAgICAgICAgICAgICAgPC9hcHBpbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJzZXJ2aWNlUG9saWN5VUkiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZXh0ZW5zaW9uIGlzIGludGVuZGVkIGZvciBleHRlbmRlcnMgd2hvIHdhbnQgdG8gYWRkIFVJIG9wZXJhdGlvbnMgdG8gdGhlIFNlcnZpY2UgcG9saWNpZXMgdGhhdCB0aGV5IGhhdmUgZGVmaW5lZC4KLSAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxjaG9pY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9Im9wZXJhdGlvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJxdWlja0ZpeCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotICAgICAgICAgPC9jaG9pY2U+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJkZXNjcmlwdG9yIj4KLSAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICBBIGRlc2NyaXB0b3IgZm9yIHRoaXMgU2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIG9yIGFjdGlvbi4KLSAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgQSBkZXNjcmlwdGlvbiBvZiB0aGlzIHNlcnZpY2Ugb3BlcmF0aW9uLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNob3J0TmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgc2hvcnQgbmFtZSBvZiB0aGlzIHNlcnZpY2Ugb3BlcmF0aW9uLiAgTm90ZTogaWYgYSBzaG9ydCBuYW1lIGlzIG5vdCBzcGVjaWZpZWQgaXQgaXMgZGVmYXVsdGVkIHRvIHRoZSB2YWx1ZSBvZiB0aGUgbG9uZyBuYW1lLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImxvbmdOYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoZSBsb25nIG5hbWUgb2YgdGhpcyBzZXJ2aWNlIG9wZXJhdGlvbi4gIE5vdGU6IGlmIGEgbG9uZyBuYW1lIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIGl0IGlzIGRlZmF1bHRlZCB0byB0aGUgc2hvcnROYW1lIHZhbHVlLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImNvbnRleHRIZWxwSWQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIGNvbnRleHQgaGVscCBpZCBmb3IgdGhpcyBzZXJ2aWNlIG9wZXJhdGlvbiBpZiBpdCBpcyByZXF1aXJlZC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpY29ucGF0aCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBBIHBsdWdpbiByZWxhdGl2ZSBwYXRoIHRvIHNvbWUgaWNvbiBmaWxlIGZvciB0aGlzIHNlcnZpY2Ugb3BlcmF0aW9uLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJvcGVyYXRpb24iPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIERlZmluZXMgYSBTZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24uCi0gICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICA8L2Fubm90YXRpb24+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8c2VxdWVuY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9ImRlc2NyaXB0b3IiLz4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0iZW5hYmxlZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4KLSAgICAgICAgICAgIDxjaG9pY2U+Ci0gICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9ImVudW1lcmF0aW9uIi8+Ci0gICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InNlbGVjdGlvbiIvPgotICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJjb21wbGV4Ii8+Ci0gICAgICAgICAgICA8L2Nob2ljZT4KLSAgICAgICAgIDwvc2VxdWVuY2U+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgdW5pcXVlIGlkIG9mIHRoaXMgc2VydmljZSBvcGVyYXRpb24uCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9saWN5UGF0dGVybiIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgYXR0cmlidXRlIHNwZWNpZmllcyB3aGljaCBzZXJ2aWNlIHBvbGljZXMgdGhpcyBvcGVyYXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoLiAgQW55IEphdmEgcmVndWxhciBleHByZXNzaW9uIG1heSBiZSBzcGVjaWZpZWQuICBUaGlzIGV4cHJlc3Npb24gd2lsbCBiZSB1c2VkIHRvIG1hdGNoIHRoZSBpZHMgb2YgYWxsIGtub3duIHNlcnZpY2UgcG9saWN5IGlkcy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ3b3Jrc3BhY2VPbmx5IiB0eXBlPSJib29sZWFuIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaWYgdGhpcyBvcGVyYXRpb24gaXMgb25seSB0byBiZSB1c2VkIGluIHRoZSB3b3Jrc3BhY2UgcHJlZmVyZW5jZSBwYWdlLiAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBpdCBpcyBkZWZhdWx0ZWQgdG8gZmFsc2UuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdGRhdGEiIHR5cGU9ImJvb2xlYW4iIHVzZT0iZGVmYXVsdCIgdmFsdWU9InRydWUiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJlbnVtZXJhdGlvbiI+Ci0gICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgVGhpcyBlbGVtZW50IGRlZmluZXMgdGhlIGVudW1lcmF0aW9uIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgaWQgb2YgdGhpcyBlbnVtZXJhdGlvbi4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0SXRlbSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBPdmVycmlkZXMgdGhlIGRlZmF1bHQgc2V0IGJ5IHRoZSBlbnVtZXJhdGlvbi4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0ic2VsZWN0aW9uIj4KLSAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICBUaGlzIGVsZW1lbnQgaW5kaWNhdGVzIHRoYXQgdGhlIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggYSBzb21lIGtpbmQgb2YgVUkgYm9vbGVhbiBzZWxlY3Rpb24uICBBbGwgc2VydmljZSBwb2xpY2llcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvcGVyYXRpb24gc2hvdWxkIHVzZSB0aGUgb3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmJvb2xlYW5FbnVtIGVudW1lcmF0aW9uLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpY29uIiB0eXBlPSJib29sZWFuIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBib29sZWFuIHNlbGVjdGlvbiBzaG91bGQgYmUgcmVuZGVyZWQgdmlhIGFuIGljb24uCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdEl0ZW0iIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgU2V0cyB0aGUgZGVmYXVsdCBmb3IgdGhpcyBib29sZWFuIHNlbGVjdGlvbiB0aGUgdmFsdWVzIGNhbiBiZSBlaXRoZXIgb3JnLmVjbGlwc2Uud3N0LnRydWUgb3Igb3JnLmVjbGlwc2Uud3N0LmZhbHNlLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJjb21wbGV4Ij4KLSAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICBUaGlzIGVsZW1lbnQgaW5kaWNhdGVzIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgY29tcGxleCB0byByZW5kZXIgYW5kIHBlcnNpc3QuICBUaGUgbGF1bmNoQ2xhc3MgYXR0cmlidXRlIGNhbiBiZSB1c2VkIHRvIGxhdW5jaCBhIGRpYWxvZyB0byBzZXQgbW9yZSBjb21wbGV4IGRhdGEuICBUaGUgZXh0ZW5kZXIgd2lsbCBuZWVkIHRvIGNhbGwgdGhlIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtIEFQSSB0byBwZXJzaXN0IGRhdGEgb24gZWFjaCBwb2xpY3kgYXMgcmVxdWlyZWQuCi0gICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICA8L2Fubm90YXRpb24+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImxhdW5jaENsYXNzIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIEEgY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCB0byBsYXVuY2ggYSBkaWFsb2cuICBUaGUgY2xhc3Mgc3BlY2lmaWVkIG11c3QgaW1wbGVtZW50IHRoZSBJTGF1bmNoT3BlcmF0aW9uIGludGVyZmFjZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0iZW5hYmxlZCI+Ci0gICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgSW5kaWNhdGVzIGlmIHRoaXMgb3BlcmF0aW9uIGlzIGVuYWJsZWQvZ3JheWVkIG91dCBvciBub3QgaW4gdGhlIFVJLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJlbmFibGVkQ2xhc3MiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIGNsYXNzIHNwZWNpZmllZCBpbiB0aGUgYXR0cmlidXRlIG11Y2ggaW1wbGVtZW50IHRoZSBJRW5hYmxlT3BlcmF0aW9uIGludGVyZmFjZS4gIFRoaXMgY2xhc3MgYWxsb3dzIGV4dGVuZGVycyB0byBwcm92aWRlIGEgbW9yZSBjb21wbGV4IGxvZ2ljIGZvciB3aGVuIHRoZSBvcGVyYXRpb24gc2hvdWxkIGJlIGVuYWJsZWQgb3Igbm90LgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im11bHRpc2VsZWN0IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIEluZGljYXRlcyBpZiB0aGlzIG9wZXJhdGlvbiBhbGxvd3MgbXVsdGlwbGUgc2VsZWN0aW9uIG9mIHBvbGljeSBvYmplY3RzIG9yIG5vdC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0icXVpY2tGaXgiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIFRoaXMgZWxlbWVudCBhbGxvd3MgZXh0ZW5kZXJzIHRvIGFkZCBxdWljayBmaXhlcyB0byB0aGUgU2VydmljZSBwb2xpY3kgVUkgZnJhbWV3b3Jrcy4KLSAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxzZXF1ZW5jZT4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0iYWN0aW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwbHVnaW5JZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgcGx1Z2luIGlkIHRoYXQgdGhlIGVuY2xvc2VkIHF1aWNrIGZpeCBhY3Rpb25zIGFwcGx5IHRvLiAgVGhpcyBpcyB0aGUgaWQgdGhhdCB3aWxsIG1hdGNoIHRoZSBwbHVnaW4gaWQgZnJvbSB0aGUgSVN0YXR1cyBvZiBhIFNlcnZpY2VQb2xpY3kgb2JqZWN0LgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImNvZGUiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIGNvZGUgdGhhdCB0aGUgZW5jbG9zZWQgcXVpY2sgZml4IGFjdGlvbnMgYXBwbHkgdG8uICBUaGlzIGlzIHRoZSBjb2RlIHRoYXQgd2lsbCBtYXRjaCB0aGUgY29kZSBmcm9tIHRoZSBJU3RhdHVzIG9mIGEgU2VydmljZVBvbGljeSBvYmplY3QuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImFjdGlvbiI+Ci0gICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgVGhlIGVsZW1lbnQgaXMgdXNlZCB0byBhZGQgYSBxdWljayBmaXggYWN0aW9uLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJkZXNjcmlwdG9yIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgY2xhc3MgdGhhdCB0aGUgZnJhbWV3b3JrIHdpbGwgY2FsbCBmb3IgYSBwYXJ0aWN1bGFyIHF1aWNrIGZpeCBhY3Rpb24uICBUaGlzIGNsYXNzIG11c3QgaW1wbGVtZW50IHRoZSBJUXVpY2tGaXhBY3Rpb24gaW50ZXJmYWNlLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBpbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJzaW5jZSIvPgotICAgICAgPC9hcHBpbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAxLjAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwaW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iZXhhbXBsZXMiLz4KLSAgICAgIDwvYXBwaW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgW0VudGVyIGV4dGVuc2lvbiBwb2ludCB1c2FnZSBleGFtcGxlIGhlcmUuXQotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBpbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJhcGlJbmZvIi8+Ci0gICAgICA8L2FwcGluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFtFbnRlciBBUEkgaW5mb3JtYXRpb24gaGVyZS5dCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcGluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImltcGxlbWVudGF0aW9uIi8+Ci0gICAgICA8L2FwcGluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFtFbnRlciBpbmZvcm1hdGlvbiBhYm91dCBzdXBwbGllZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGV4dGVuc2lvbiBwb2ludC5dCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLQotPC9zY2hlbWE+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL0Jhc2VPcGVyYXRpb25JbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL0Jhc2VPcGVyYXRpb25JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiOTBmOGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9CYXNlT3BlcmF0aW9uSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBJbml0aWFsIGNvZGluZyBvZiBzZXJ2aWNlIHBvbGljeQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5zZXJ2aWNlLnBvbGljeS51aTsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU3RhdGVFbnVtZXJhdGlvbkl0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSUVuYWJsZU9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSUxhdW5jaE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuU2VydmljZVBvbGljeUFjdGl2YXRvclVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzLlJlZ2lzdHJ5VXRpbHM7Ci0KLXB1YmxpYyBjbGFzcyBCYXNlT3BlcmF0aW9uSW1wbCAKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICAgICAgaWQ7Ci0gIHByaXZhdGUgSURlc2NyaXB0b3IgICAgICAgICAgIGRlc2NyaXB0b3I7Ci0gIHByaXZhdGUgT3BlcmF0aW9uS2luZCAgICAgICAgIG9wZXJhdGlvbktpbmQ7Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgIHBvbGljeUlkUGF0dGVybjsKLSAgcHJpdmF0ZSBib29sZWFuICAgICAgICAgICAgICAgbXVsdGlTZWxlY3QgPSBmYWxzZTsKLSAgcHJpdmF0ZSBJTGF1bmNoT3BlcmF0aW9uICAgICAgbGF1bmNoT3BlcmF0aW9uT2JqZWN0OwotICBwcml2YXRlIElFbmFibGVPcGVyYXRpb24gICAgICBlbmFibGVPcGVyYXRpb25PYmplY3Q7Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgIGVudW1JZDsKLSAgcHJpdmF0ZSBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZW5hYmxlZEVsZW1lbnQ7Ci0gIHByaXZhdGUgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNvbXBsZXhFbGVtZW50OwotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgICAgICB3b3Jrc3BhY2VPbmx5OwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgICBkZWZhdWx0SXRlbTsgIAotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgICAgICB1c2VEZWZhdWx0RGF0YTsKLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKQotICB7Ci0gICAgcmV0dXJuIGlkOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIGlkKQotICB7Ci0gICAgdGhpcy5pZCA9IGlkOwotICB9Ci0gIHB1YmxpYyBib29sZWFuIGlzV29ya3NwYWNlT25seSgpCi0gIHsKLSAgICByZXR1cm4gd29ya3NwYWNlT25seTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFdvcmtzcGFjZU9ubHkoIGJvb2xlYW4gd29ya3NwYWNlT25seSApCi0gIHsKLSAgICB0aGlzLndvcmtzcGFjZU9ubHkgPSB3b3Jrc3BhY2VPbmx5OyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlbGVjdGlvbiggYm9vbGVhbiBpc0ljb24gKQotICB7Ci0gICAgaWYoIGlzSWNvbiApCi0gICAgewotICAgICAgb3BlcmF0aW9uS2luZCA9IE9wZXJhdGlvbktpbmQuaWNvblNlbGVjdGlvbjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIG9wZXJhdGlvbktpbmQgPSBPcGVyYXRpb25LaW5kLnNlbGVjdGlvbjsgICAgIAotICAgIH0KLSAgfQotICAKLSAgcHVibGljIElEZXNjcmlwdG9yIGdldERlc2NyaXB0b3IoKQotICB7Ci0gICAgcmV0dXJuIGRlc2NyaXB0b3I7Ci0gIH0KLQotICBwdWJsaWMgT3BlcmF0aW9uS2luZCBnZXRPcGVyYXRpb25LaW5kKCkKLSAgewotICAgIHJldHVybiBvcGVyYXRpb25LaW5kOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRFbnVtZXJhdGlvbklkKCkKLSAgewotICAgIHJldHVybiBlbnVtSWQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRFbnVtZXJhdGlvbklkKCBTdHJpbmcgZW51bUlkICkKLSAgewotICAgIHRoaXMuZW51bUlkICAgPSBlbnVtSWQ7ICAKLSAgICBvcGVyYXRpb25LaW5kID0gT3BlcmF0aW9uS2luZC5lbnVtZXJhdGlvbjsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRQb2xpY3lJZFBhdHRlcm4oKQotICB7Ci0gICAgcmV0dXJuIHBvbGljeUlkUGF0dGVybjsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCggTGlzdDxJU2VydmljZVBvbGljeT4gc2VsZWN0ZWRQb2xpY2llcyApCi0gIHsKLSAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7Ci0gICAgCi0gICAgLy8gSWYgd2UgZG9uJ3QgYWxsb3cgbXVsdGkgc2VsZWN0IGFuZCBtdWx0aXBsZSBwb2xpY2llcyBoYXZlIGJlZW4gc2VsZWN0ZWQKLSAgICAvLyB0aGVuIHRoaXMgb3BlcmF0aW9uIGlzIG5vdCBlbmFibGVkLgotICAgIGlmKCAhbXVsdGlTZWxlY3QgJiYgc2VsZWN0ZWRQb2xpY2llcy5zaXplKCkgPiAxICkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYoIHJlc3VsdCAmJiBlbmFibGVkRWxlbWVudCAhPSBudWxsICkKLSAgICB7Ci0gICAgICAvLyBXZSBoYXZlIGFuIGV4dGVuc2lvbiBmb3IgdGhpcyBlbmFibGVtZW50IGNvZGUgc28gd2Ugd2lsbCBjYWxsIHRoaXMKLSAgICAgIC8vIGNvZGUuCi0gICAgICBpZiggZW5hYmxlT3BlcmF0aW9uT2JqZWN0ID09IG51bGwgKQotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBlbmFibGVkQ2xhc3NOYW1lID0gUmVnaXN0cnlVdGlscy5nZXRBdHRyaWJ1dGVOYW1lKCBlbmFibGVkRWxlbWVudCwgImVuYWJsZWRjbGFzcyIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgICAgIGVuYWJsZU9wZXJhdGlvbk9iamVjdCA9IChJRW5hYmxlT3BlcmF0aW9uKWVuYWJsZWRFbGVtZW50LmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oIGVuYWJsZWRDbGFzc05hbWUgKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgICAgIHsKLSAgICAgICAgICBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkubG9nRXJyb3IoICJFcnJvciBsb2FkaW5nIHNlcnZpY2UgcG9saWN5IHVpIFwiZW5hYmxlZFwiIGNsYXNzLiIsIGV4YyApOyAgICAgICAgICAgLy8kTk9OLU5MUy0xJAotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiggZW5hYmxlT3BlcmF0aW9uT2JqZWN0ICE9IG51bGwgKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gZW5hYmxlT3BlcmF0aW9uT2JqZWN0LmlzRW5hYmxlZCggc2VsZWN0ZWRQb2xpY2llcyApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBsYXVuY2hPcGVyYXRpb24oIElTZXJ2aWNlUG9saWN5IHRoaXNQb2xpY3ksIExpc3Q8SVNlcnZpY2VQb2xpY3k+IHNlbGVjdGVkUG9saWNpZXMgKQotICB7Ci0gICAgaWYoIGxhdW5jaE9wZXJhdGlvbk9iamVjdCA9PSBudWxsICkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGxhdW5jaENsYXNzTmFtZSA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlTmFtZSggY29tcGxleEVsZW1lbnQsICJsYXVuY2hjbGFzcyIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgICBsYXVuY2hPcGVyYXRpb25PYmplY3QgPSAoSUxhdW5jaE9wZXJhdGlvbiljb21wbGV4RWxlbWVudC5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCBsYXVuY2hDbGFzc05hbWUgKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoKCBFeGNlcHRpb24gZXhjICkKLSAgICAgIHsKLSAgICAgICAgU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmxvZ0Vycm9yKCAiRXJyb3IgbG9hZGluZyBzZXJ2aWNlIHBvbGljeSB1aSBsYXVuY2ggY2xhc3MuIiwgZXhjICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYoIGxhdW5jaE9wZXJhdGlvbk9iamVjdCAhPSBudWxsICkKLSAgICB7Ci0gICAgICBsYXVuY2hPcGVyYXRpb25PYmplY3QubGF1bmNoKCBzZWxlY3RlZFBvbGljaWVzICk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNNdWx0aVNlbGVjdCgpCi0gIHsKLSAgICByZXR1cm4gbXVsdGlTZWxlY3Q7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRNdWx0aVNlbGVjdChib29sZWFuIG11bHRpU2VsZWN0KQotICB7Ci0gICAgdGhpcy5tdWx0aVNlbGVjdCA9IG11bHRpU2VsZWN0OwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RGVzY3JpcHRvcihJRGVzY3JpcHRvciBkZXNjcmlwdG9yKQotICB7Ci0gICAgdGhpcy5kZXNjcmlwdG9yID0gZGVzY3JpcHRvcjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFBvbGljeUlkUGF0dGVybihTdHJpbmcgcG9saWN5SWRQYXR0ZXJuKQotICB7Ci0gICAgdGhpcy5wb2xpY3lJZFBhdHRlcm4gPSBwb2xpY3lJZFBhdHRlcm47Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRFbmFibGVkRWxlbWVudChJQ29uZmlndXJhdGlvbkVsZW1lbnQgZW5hYmxlZEVsZW1lbnQpCi0gIHsKLSAgICB0aGlzLmVuYWJsZWRFbGVtZW50ID0gZW5hYmxlZEVsZW1lbnQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRDb21wbGV4RWxlbWVudChJQ29uZmlndXJhdGlvbkVsZW1lbnQgY29tcGxleEVsZW1lbnQpCi0gIHsKLSAgICB0aGlzLmNvbXBsZXhFbGVtZW50ID0gY29tcGxleEVsZW1lbnQ7Ci0gICAgb3BlcmF0aW9uS2luZCA9IE9wZXJhdGlvbktpbmQuY29tcGxleDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldERlZmF1bHRJdGVtKCBTdHJpbmcgZGVmYXVsdEl0ZW0gKQotICB7Ci0gICAgdGhpcy5kZWZhdWx0SXRlbSA9IGRlZmF1bHRJdGVtOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdEl0ZW0oKQotICB7Ci0gICAgaWYoIGRlZmF1bHRJdGVtID09IG51bGwgKQotICAgIHsKLSAgICAgIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybSAgICAgICBwbGF0Zm9ybSA9IFNlcnZpY2VQb2xpY3lQbGF0Zm9ybS5nZXRJbnN0YW5jZSgpOwotICAgICAgTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IGVudW1MaXN0ID0gcGxhdGZvcm0uZ2V0U3RhdGVFbnVtZXJhdGlvbiggZW51bUlkICk7Ci0gICAgICAKLSAgICAgIGlmKCBlbnVtTGlzdCAhPSBudWxsICkKLSAgICAgIHsKLSAgICAgICAgZGVmYXVsdEl0ZW0gPSBlbnVtTGlzdC5nZXQoMCkuZ2V0SWQoKTsKLSAgICAgIAotICAgICAgICAvLyBObyBkZWZhdWx0IGl0ZW0gaGFzIGJlZW4gc3BlY2lmaWVkIHNvIHdlIHdpbGwgc2VhcmNoIHRoZSBlbnVtZXJhdGlvbiBmb3Igb25lLgotICAgICAgICAvLyBJZiBub25lIHdhcyBzcGVjaWZpZWQgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGVudW1lcmF0aW9uIGlzIHVzZWQuCi0gICAgICAgIGZvciggSVN0YXRlRW51bWVyYXRpb25JdGVtIGl0ZW0gOiBlbnVtTGlzdCApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiggaXRlbS5pc0RlZmF1bHQoKSApCi0gICAgICAgICAgewotICAgICAgICAgICAgZGVmYXVsdEl0ZW0gPSBpdGVtLmdldElkKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgICAKLSAgICByZXR1cm4gZGVmYXVsdEl0ZW07Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBpc1VzZURlZmF1bHREYXRhKCkKLSAgewotICAgIHJldHVybiB1c2VEZWZhdWx0RGF0YTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFVzZURlZmF1bHREYXRhKCBib29sZWFuIHVzZURlZmF1bHREYXRhICkKLSAgewotICAgIHRoaXMudXNlRGVmYXVsdERhdGEgPSB1c2VEZWZhdWx0RGF0YTsKLSAgfSAgCi0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9JQ29uTWFuYWdlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9JQ29uTWFuYWdlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjk0OTYyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvc2VydmljZS9wb2xpY3kvdWkvSUNvbk1hbmFnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjUgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgSW5pdGlhbCBjb2RpbmcuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnNlcnZpY2UucG9saWN5LnVpOwotCi1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuQ29tcG9zaXRlSW1hZ2VEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnJlc291cmNlLkltYWdlRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuSW1hZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5SZWN0YW5nbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotCi1wdWJsaWMgY2xhc3MgSUNvbk1hbmFnZXIKLXsKLSAgcHJpdmF0ZSBNYXA8U3RyaW5nLCBJbWFnZT4gaWNvblRhYmxlOwotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBmYXZvcml0ZSA9ICJmYXYiOyAvLyROT04tTkxTLTEkCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgaW52YWxpZCAgPSAiaW52IjsgLy8kTk9OLU5MUy0xJAotICBwdWJsaWMgZmluYWwgU3RyaW5nIHdhcm5pbmcgID0gIndhciI7IC8vJE5PTi1OTFMtMSQKLSAgcHVibGljIGZpbmFsIFN0cmluZyBsb2NrICAgICA9ICJsb2MiOyAvLyROT04tTkxTLTEkCi0gIAotICBwcml2YXRlIFN0cmluZyBmb2xkZXJCYXNlVVJMOyAKLSAgcHJpdmF0ZSBTdHJpbmcgbGVhZkJhc2VVUkw7Ci0gIHByaXZhdGUgSW1hZ2UgIGZhdm9yaXRlSW1hZ2U7Ci0gIHByaXZhdGUgSW1hZ2UgIGludmFsaWRJbWFnZTsKLSAgcHJpdmF0ZSBJbWFnZSAgd2FybmluZ0ltYWdlOwotICBwcml2YXRlIEltYWdlICBsb2NrSW1hZ2U7Ci0gIAotICBwcml2YXRlIERlY29yYXRvckRlc2NyaXB0b3IgaWNvbkNyZWF0b3I7Ci0gIAotICBwdWJsaWMgSUNvbk1hbmFnZXIoKQotICB7Ci0gICAgaWNvblRhYmxlID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBJbWFnZT4oKTsKLSAgICBhZGRPdmVybGF5SWNvbnMoKTsgIAotICAgIGljb25DcmVhdG9yID0gbmV3IERlY29yYXRvckRlc2NyaXB0b3IoKTsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRGb2xkZXJCYXNlVXJsKCkKLSAgewotICAgIHJldHVybiBmb2xkZXJCYXNlVVJMOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TGVhZkJhc2VVcmwoKQotICB7Ci0gICAgcmV0dXJuIGxlYWZCYXNlVVJMOyAgCi0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBhZGRPdmVybGF5SWNvbnMoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgQnVuZGxlIGJ1bmRsZSAgICAgID0gU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmdldERlZmF1bHQoKS5nZXRCdW5kbGUoKTsKLSAgICAgIFVSTCAgICBmb2xkZXJVcmwgICA9IEZpbGVMb2NhdG9yLmZpbmQoIGJ1bmRsZSwgbmV3IFBhdGgoICJpY29ucy9mdWxsL29iajE2L2ZsZHJfb2JqLmdpZiIgKSwgbnVsbCApOyAvLyROT04tTkxTLTEkCi0gICAgICBVUkwgICAgbGVhZlVybCAgICAgPSBGaWxlTG9jYXRvci5maW5kKCBidW5kbGUsIG5ldyBQYXRoKCAiaWNvbnMvZnVsbC9vYmoxNi9maWxlX29iai5naWYiICksIG51bGwgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgVVJMICAgIGZhdm9yaXRlVXJsID0gRmlsZUxvY2F0b3IuZmluZCggYnVuZGxlLCBuZXcgUGF0aCggImljb25zL2Z1bGwvb3ZyMTYvZmF2b3JpdGVfb3ZyLmdpZiIgKSwgbnVsbCApOyAvLyROT04tTkxTLTEkCi0gICAgICBVUkwgICAgaW52YWxpZFVybCAgPSBGaWxlTG9jYXRvci5maW5kKCBidW5kbGUsIG5ldyBQYXRoKCAiaWNvbnMvZnVsbC9vdnIxNi9pbnZhbGlkdHlwZV9vdnIuZ2lmIiApLCBudWxsICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFVSTCAgICB3YXJuaW5nVXJsICA9IEZpbGVMb2NhdG9yLmZpbmQoIGJ1bmRsZSwgbmV3IFBhdGgoICJpY29ucy9mdWxsL292cjE2L3dhcm5pbmdfb3ZyLmdpZiIgKSwgbnVsbCApOyAvLyROT04tTkxTLTEkCi0gICAgICBVUkwgICAgbG9ja1VybCAgICAgPSBGaWxlTG9jYXRvci5maW5kKCBidW5kbGUsIG5ldyBQYXRoKCAiaWNvbnMvZnVsbC9vdnIxNi91bm1vZGlmaWFibGVfb3ZyLmdpZiIgKSwgbnVsbCApOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIGdldEljb25JbWFnZSggZm9sZGVyVXJsICk7Ci0gICAgICBnZXRJY29uSW1hZ2UoIGxlYWZVcmwgKTsKLSAgICAgIGZhdm9yaXRlSW1hZ2UgICA9IGdldEljb25JbWFnZSggZmF2b3JpdGVVcmwgKTsKLSAgICAgIGludmFsaWRJbWFnZSAgICA9IGdldEljb25JbWFnZSggaW52YWxpZFVybCApOwotICAgICAgd2FybmluZ0ltYWdlICAgID0gZ2V0SWNvbkltYWdlKCB3YXJuaW5nVXJsICk7Ci0gICAgICBsb2NrSW1hZ2UgICAgICAgPSBnZXRJY29uSW1hZ2UoIGxvY2tVcmwgKTsKLSAgICAgIAotICAgICAgZm9sZGVyQmFzZVVSTCA9IGZvbGRlclVybC50b1N0cmluZygpOwotICAgICAgbGVhZkJhc2VVUkwgICA9IGxlYWZVcmwudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgY2F0Y2goIFRocm93YWJsZSBleGMgKQotICAgIHsKLSAgICAgIFNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5sb2dFcnJvciggIkVycm9yIHJlYWRpbmcgaWNvbiBvdmVybGF5cyIsIGV4YyApOyAvLyROT04tTkxTLTEkCi0gICAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBoYXNDaGFuZ2VkKCBTdHJpbmdbXSBzdHJpbmcxLCBTdHJpbmdbXSBzdHJpbmcyICkKLSAgewotICAgIGlmKCBzdHJpbmcxID09IG51bGwgfHwgc3RyaW5nMiA9PSBudWxsIHx8IHN0cmluZzEubGVuZ3RoICE9IHN0cmluZzIubGVuZ3RoICkgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHN0cmluZzEubGVuZ3RoOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBTdHJpbmcgdmFsdWUxID0gc3RyaW5nMVtpbmRleF07Ci0gICAgICBTdHJpbmcgdmFsdWUyID0gc3RyaW5nMltpbmRleF07Ci0gICAgICAKLSAgICAgIC8vIFdlIGNhbiBkbyBwb2ludGVyIGNvbXBhcmlzb24gc2luY2Ugd2UgYXJlIHVzaW5nIGNvbnN0YW50IFN0cmluZ3MuCi0gICAgICBpZiggdmFsdWUxICE9IHZhbHVlMiApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJbWFnZSBnZXRJY29uT3ZlcmxheSggU3RyaW5nIGJhc2VVcmwsIFN0cmluZ1tdIG92ZXJsYXlzICkKLSAgewotICAgIFN0cmluZyBpbWFnZVVybCAgPSBnZXRJbWFnZVVSTCggYmFzZVVybCwgb3ZlcmxheXMgKTsgCi0gICAgSW1hZ2UgIHJlc3VsdCAgICA9IChJbWFnZSlpY29uVGFibGUuZ2V0KCBpbWFnZVVybCApOwotICAgIAotICAgIGlmKCByZXN1bHQgPT0gbnVsbCApCi0gICAgewotICAgICAgSW1hZ2UgYmFzZUltYWdlID0gKEltYWdlKWljb25UYWJsZS5nZXQoIGJhc2VVcmwgKTsKLSAgICAgIAotICAgICAgaWYoIGJhc2VJbWFnZSA9PSBudWxsICkKLSAgICAgIHsKLSAgICAgICAgLy8gV2UgbmVlZCB0byBsb2FkIHRoaXMgYmFzZUltYWdlCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgYmFzZUltYWdlID0gZ2V0SWNvbkltYWdlKCBuZXcgVVJMKCBiYXNlVXJsICkgKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgICAgIHsKLSAgICAgICAgICBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkubG9nRXJyb3IoICJFcnJvciBsb2FkaW5nIGltYWdlIGZyb206IiArIGJhc2VVcmwsIGV4Yyk7IC8vJE5PTi1OTFMtMSQKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICBpY29uQ3JlYXRvci5zZXRCYXNlSW1hZ2UoIGJhc2VJbWFnZSwgb3ZlcmxheXMgKTsKLSAgICAgIAotICAgICAgcmVzdWx0ID0gaWNvbkNyZWF0b3IuY3JlYXRlSW1hZ2UoKTsKLSAgICAgIGljb25UYWJsZS5wdXQoIGltYWdlVXJsLCByZXN1bHQgKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgcHJpdmF0ZSBib29sZWFuIGhhc092ZXJsYXkoIFN0cmluZ1tdIG92ZXJsYXlzLCBTdHJpbmcgdmFsdWUgKQotICB7Ci0gICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAKLSAgICBmb3IoIFN0cmluZyBvdmVybGF5IDogb3ZlcmxheXMgKQotICAgIHsKLSAgICAgIC8vIE5vdGU6IFdlIGFyZSB1c2luZyBzdHJpbmcgcG9pbnRlciBjb21wYXJpc29uIGhlcmUgc2luY2UsIHRoZSBzdHJpbmdzCi0gICAgICAvLyBzaG91bGQgb25seSBiZSB0aGUgY29uc3RhbnRzIGRlZmluZWQgYWJvdmUuCi0gICAgICBpZiggb3ZlcmxheSA9PSB2YWx1ZSApCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfSAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGdldEltYWdlVVJMKCBTdHJpbmcgYmFzZVVybCwgU3RyaW5nW10gb3ZlcmxheXMgKQotICB7Ci0gICAgU3RyaW5nIHVybCA9IGJhc2VVcmw7Ci0gICAgCi0gICAgZm9yKCBTdHJpbmcgdmFsdWUgOiBvdmVybGF5cyApCi0gICAgewotICAgICAgaWYoIHZhbHVlICE9IG51bGwgKQotICAgICAgewotICAgICAgICB1cmwgPSB1cmwgKyAiOiIgKyB2YWx1ZTsgLy8kTk9OLU5MUy0xJAotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdXJsOwotICB9Ci0gIAotICBwdWJsaWMgSW1hZ2UgZ2V0SWNvbkltYWdlKCBVUkwgdXJsICkKLSAgewotICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1cmwudG9TdHJpbmcoKTsKLSAgICBJbWFnZSAgaW1hZ2UgICAgID0gaWNvblRhYmxlLmdldCggdXJsU3RyaW5nICk7Ci0gICAgCi0gICAgaWYoIGltYWdlID09IG51bGwgKQotICAgIHsKLSAgICAgIEltYWdlRGVzY3JpcHRvciBpbWFnZURlc2MgPSBJbWFnZURlc2NyaXB0b3IuY3JlYXRlRnJvbVVSTCh1cmwpOwotICAgICAgCi0gICAgICBpbWFnZSA9IGltYWdlRGVzYy5jcmVhdGVJbWFnZSgpOwotICAgICAgaWNvblRhYmxlLnB1dCggdXJsU3RyaW5nLCBpbWFnZSApOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gaW1hZ2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGRpc3Bvc2UoKQotICB7Ci0gICAgZm9yKCBJbWFnZSBpbWFnZSA6IGljb25UYWJsZS52YWx1ZXMoKSApCi0gICAgewotICAgICAgaW1hZ2UuZGlzcG9zZSgpOwotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSBjbGFzcyBEZWNvcmF0b3JEZXNjcmlwdG9yIGV4dGVuZHMgQ29tcG9zaXRlSW1hZ2VEZXNjcmlwdG9yCi0gIHsKLSAgICBwcml2YXRlIEltYWdlICAgIGJhc2VJbWFnZTsKLSAgICBwcml2YXRlIFBvaW50ICAgIHNpemU7Ci0gICAgcHJpdmF0ZSBTdHJpbmdbXSBvdmVybGF5czsKLSAgICAKLSAgICBwcm90ZWN0ZWQgdm9pZCBkcmF3Q29tcG9zaXRlSW1hZ2UoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAgIHsKLSAgICAgIGRyYXdJbWFnZSggYmFzZUltYWdlLmdldEltYWdlRGF0YSgpLCAwLCAwKTsKLSAgICAgIAotICAgICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IG92ZXJsYXlzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgICB7Ci0gICAgICAgIGlmKCBoYXNPdmVybGF5KG92ZXJsYXlzLCBmYXZvcml0ZSkgKQotICAgICAgICB7Ci0gICAgICAgICAgZHJhd0ltYWdlKCBmYXZvcml0ZUltYWdlLmdldEltYWdlRGF0YSgpLCBzaXplLnggLSBmYXZvcml0ZUltYWdlLmdldEJvdW5kcygpLndpZHRoLCAwICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmKCBoYXNPdmVybGF5KCBvdmVybGF5cywgd2FybmluZyApICkKLSAgICAgICAgewotICAgICAgICAgIGRyYXdJbWFnZSggd2FybmluZ0ltYWdlLmdldEltYWdlRGF0YSgpLCAwLCBzaXplLnkgLSB3YXJuaW5nSW1hZ2UuZ2V0Qm91bmRzKCkuaGVpZ2h0ICk7ICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiggaGFzT3ZlcmxheSggb3ZlcmxheXMsIGludmFsaWQgKSApCi0gICAgICAgIHsKLSAgICAgICAgICBkcmF3SW1hZ2UoIGludmFsaWRJbWFnZS5nZXRJbWFnZURhdGEoKSwgMCwgc2l6ZS55IC0gaW52YWxpZEltYWdlLmdldEJvdW5kcygpLmhlaWdodCApOyAgICAgICAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYoIGhhc092ZXJsYXkoIG92ZXJsYXlzLCBsb2NrICkgKQotICAgICAgICB7Ci0gICAgICAgICAgZHJhd0ltYWdlKCBsb2NrSW1hZ2UuZ2V0SW1hZ2VEYXRhKCksIAotICAgICAgICAgICAgICAgICAgICAgc2l6ZS54IC0gbG9ja0ltYWdlLmdldEJvdW5kcygpLndpZHRoLCAKLSAgICAgICAgICAgICAgICAgICAgIHNpemUueSAtIGxvY2tJbWFnZS5nZXRCb3VuZHMoKS5oZWlnaHQgKTsgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCYXNlSW1hZ2UoIEltYWdlIGltYWdlLCBTdHJpbmdbXSBvdmVybGF5cyApCi0gICAgeyAKLSAgICAgIFJlY3RhbmdsZSBib3VuZHMgPSBpbWFnZS5nZXRCb3VuZHMoKTsKLSAgICAgIAotICAgICAgdGhpcy5iYXNlSW1hZ2UgPSBpbWFnZTsKLSAgICAgIHRoaXMuc2l6ZSAgICAgID0gbmV3IFBvaW50KCBib3VuZHMud2lkdGgsIGJvdW5kcy5oZWlnaHQgKTsKLSAgICAgIHRoaXMub3ZlcmxheXMgID0gb3ZlcmxheXM7Ci0gICAgfQotICAgIAotICAgIHByb3RlY3RlZCBQb2ludCBnZXRTaXplKCkKLSAgICB7Ci0gICAgICByZXR1cm4gc2l6ZTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvc2VydmljZS9wb2xpY3kvdWkvUG9saWN5T3BlcmF0aW9uSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9Qb2xpY3lPcGVyYXRpb25JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZTc2MmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9Qb2xpY3lPcGVyYXRpb25JbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZQotICogYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuc2VydmljZS5wb2xpY3kudWk7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbjsKLQotcHVibGljIGNsYXNzIFBvbGljeU9wZXJhdGlvbkltcGwgaW1wbGVtZW50cyBJUG9saWN5T3BlcmF0aW9uCi17Ci0gIHByaXZhdGUgQmFzZU9wZXJhdGlvbkltcGwgYmFzZU9wZXJhdGlvbjsKLSAgcHJpdmF0ZSBJU2VydmljZVBvbGljeSAgICBwb2xpY3k7Ci0gIAotICBwdWJsaWMgUG9saWN5T3BlcmF0aW9uSW1wbCggQmFzZU9wZXJhdGlvbkltcGwgYmFzZU9wZXJhdGlvbiwgSVNlcnZpY2VQb2xpY3kgcG9saWN5ICkKLSAgewotICAgIHRoaXMuYmFzZU9wZXJhdGlvbiA9IGJhc2VPcGVyYXRpb247Ci0gICAgdGhpcy5wb2xpY3kgICAgICAgID0gcG9saWN5OwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldERlZmF1bHRJdGVtKCkKLSAgewotICAgIHJldHVybiBiYXNlT3BlcmF0aW9uLmdldERlZmF1bHRJdGVtKCk7Ci0gIH0KLQotICBwdWJsaWMgSURlc2NyaXB0b3IgZ2V0RGVzY3JpcHRvcigpCi0gIHsKLSAgICByZXR1cm4gYmFzZU9wZXJhdGlvbi5nZXREZXNjcmlwdG9yKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEVudW1lcmF0aW9uSWQoKQotICB7Ci0gICAgcmV0dXJuIGJhc2VPcGVyYXRpb24uZ2V0RW51bWVyYXRpb25JZCgpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICByZXR1cm4gYmFzZU9wZXJhdGlvbi5nZXRJZCgpOwotICB9Ci0KLSAgcHVibGljIE9wZXJhdGlvbktpbmQgZ2V0T3BlcmF0aW9uS2luZCgpCi0gIHsKLSAgICByZXR1cm4gYmFzZU9wZXJhdGlvbi5nZXRPcGVyYXRpb25LaW5kKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFBvbGljeUlkUGF0dGVybigpCi0gIHsKLSAgICByZXR1cm4gYmFzZU9wZXJhdGlvbi5nZXRQb2xpY3lJZFBhdHRlcm4oKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCggTGlzdDxJU2VydmljZVBvbGljeT4gc2VsZWN0ZWRQb2xpY2llcyApCi0gIHsKLSAgICByZXR1cm4gYmFzZU9wZXJhdGlvbi5pc0VuYWJsZWQoIHNlbGVjdGVkUG9saWNpZXMgKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzV29ya3NwYWNlT25seSgpCi0gIHsKLSAgICByZXR1cm4gYmFzZU9wZXJhdGlvbi5pc1dvcmtzcGFjZU9ubHkoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGxhdW5jaE9wZXJhdGlvbiggTGlzdDxJU2VydmljZVBvbGljeT4gc2VsZWN0ZWRQb2xpY2llcykKLSAgewotICAgIGJhc2VPcGVyYXRpb24ubGF1bmNoT3BlcmF0aW9uKCBwb2xpY3ksIHNlbGVjdGVkUG9saWNpZXMgKTsKLSAgfQotCi0gIHB1YmxpYyBJU2VydmljZVBvbGljeSBnZXRTZXJ2aWNlUG9saWN5KCkKLSAgewotICAgIHJldHVybiBwb2xpY3k7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFN0YXRlSXRlbSggSVByb2plY3QgcHJvamVjdCApCi0gIHsKLSAgICBJUG9saWN5U3RhdGUgc3RhdGUgICAgICAgPSBnZXRTdGF0ZSggcHJvamVjdCApOwotICAgIFN0cmluZyAgICAgICBrZXkgICAgICAgICA9IGJhc2VPcGVyYXRpb24uZ2V0SWQoKTsKLSAgICBTdHJpbmcgICAgICAgZGVmYXVsdEl0ZW0gPSBiYXNlT3BlcmF0aW9uLmdldERlZmF1bHRJdGVtKCk7Ci0gICAgCi0gICAgaWYoIGJhc2VPcGVyYXRpb24uaXNVc2VEZWZhdWx0RGF0YSgpICkKLSAgICB7Ci0gICAgICBrZXkgPSBJUG9saWN5U3RhdGUuRGVmYXVsdFZhbHVlS2V5OwotICAgIH0KLSAgICAKLSAgICBpZiggZGVmYXVsdEl0ZW0gIT0gbnVsbCApCi0gICAgewotICAgICAgc3RhdGUucHV0RGVmYXVsdFZhbHVlKCBrZXksIGRlZmF1bHRJdGVtLCBmYWxzZSApOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc3RhdGUuZ2V0VmFsdWUoIGtleSApOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0U3RhdGVJdGVtKCBJUHJvamVjdCBwcm9qZWN0LCBTdHJpbmcgc3RhdGVJdGVtICkKLSAgewotICAgIElQb2xpY3lTdGF0ZSBzdGF0ZSA9IGdldFN0YXRlKCBwcm9qZWN0ICk7Ci0gICAgU3RyaW5nICAgICAgIGtleSAgID0gYmFzZU9wZXJhdGlvbi5nZXRJZCgpOwotICAgIAotICAgIGlmKCBiYXNlT3BlcmF0aW9uLmlzVXNlRGVmYXVsdERhdGEoKSApCi0gICAgewotICAgICAga2V5ID0gSVBvbGljeVN0YXRlLkRlZmF1bHRWYWx1ZUtleTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGUucHV0VmFsdWUoIGtleSwgc3RhdGVJdGVtICk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgSVBvbGljeVN0YXRlIGdldFN0YXRlKCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgewotICAgIHJldHVybiBwcm9qZWN0ID09IG51bGwgPyBwb2xpY3kuZ2V0UG9saWN5U3RhdGUoKSA6IHBvbGljeS5nZXRQb2xpY3lTdGF0ZSggcHJvamVjdCApOyAgIAotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNVc2VEZWZhdWx0RGF0YSgpIAotICB7Ci0JICByZXR1cm4gYmFzZU9wZXJhdGlvbi5pc1VzZURlZmF1bHREYXRhKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvc2VydmljZS9wb2xpY3kvdWkvUXVpY2tGaXhBY3Rpb25JbmZvSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9RdWlja0ZpeEFjdGlvbkluZm9JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3OGZmYjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9RdWlja0ZpeEFjdGlvbkluZm9JbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzExMjAgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgSW5pdGlhbCBjb2RpbmcuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnNlcnZpY2UucG9saWN5LnVpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklRdWlja0ZpeEFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVF1aWNrRml4QWN0aW9uSW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuU2VydmljZVBvbGljeUFjdGl2YXRvclVJOwotCi1wdWJsaWMgY2xhc3MgUXVpY2tGaXhBY3Rpb25JbmZvSW1wbCBpbXBsZW1lbnRzIElRdWlja0ZpeEFjdGlvbkluZm8KLXsKLSAgcHJpdmF0ZSBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudDsKLSAgcHJpdmF0ZSBJRGVzY3JpcHRvciAgICAgICAgICAgZGVzY3JpcHRvcjsKLSAgCi0gIHB1YmxpYyBRdWlja0ZpeEFjdGlvbkluZm9JbXBsKCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCwgSURlc2NyaXB0b3IgZGVzY3JpcHRvciApCi0gIHsKLSAgICB0aGlzLmVsZW1lbnQgICAgPSBlbGVtZW50OwotICAgIHRoaXMuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJUXVpY2tGaXhBY3Rpb24gZ2V0QWN0aW9uKCkKLSAgewotICAgIElRdWlja0ZpeEFjdGlvbiByZXN1bHQgPSBudWxsOwotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIE9iamVjdCBhY3Rpb24gPSBlbGVtZW50LmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oICJjbGFzcyIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICBpZiggYWN0aW9uIGluc3RhbmNlb2YgSVF1aWNrRml4QWN0aW9uICkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gKElRdWlja0ZpeEFjdGlvbilhY3Rpb247Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoKCBDb3JlRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmxvZ0Vycm9yKCAiRXJyb3IgbG9hZGluZyBxdWljayBmaXggYWN0aW9uLiIsIGV4YyApOyAvLyROT04tTkxTLTEkCi0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwdWJsaWMgSURlc2NyaXB0b3IgZ2V0RGVzY3JpcHRvcigpCi0gIHsKLSAgICByZXR1cm4gZGVzY3JpcHRvcjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9TY3JvbGxlZFBhZ2VDb250ZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL1Njcm9sbGVkUGFnZUNvbnRlbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMzZTA4Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL1Njcm9sbGVkUGFnZUNvbnRlbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTEyMCAgIDIwOTg1OCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzLCBFbmhhbmNpbmcgc2VydmljZSBwb2xpY3kgZnJhbWV3b3JrIGFuZCBVSQotICogMjAwODA1MTIgICAyMzExNjEgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgRml4IHRhYiBrZXkgYWNjZXNzaWJsaXR5IHByb2JsZW0uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnNlcnZpY2UucG9saWN5LnVpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmZvcm1zLkZvcm1Db2xvcnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuZm9ybXMud2lkZ2V0cy5Gb3JtVG9vbGtpdDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5mb3Jtcy53aWRnZXRzLlNoYXJlZFNjcm9sbGVkQ29tcG9zaXRlOwotCi0KLXB1YmxpYyBjbGFzcyBTY3JvbGxlZFBhZ2VDb250ZW50IGV4dGVuZHMgU2hhcmVkU2Nyb2xsZWRDb21wb3NpdGUgewotCi0JcHJpdmF0ZSBGb3JtVG9vbGtpdCBmVG9vbGtpdDsKLQkKLQlwdWJsaWMgU2Nyb2xsZWRQYWdlQ29udGVudChDb21wb3NpdGUgcGFyZW50KSB7Ci0JCXRoaXMocGFyZW50LCBTV1QuVl9TQ1JPTEwgfCBTV1QuSF9TQ1JPTEwpOwotCX0KLQkKLQlwdWJsaWMgU2Nyb2xsZWRQYWdlQ29udGVudChDb21wb3NpdGUgcGFyZW50LCBpbnQgc3R5bGUpIHsKLQkJc3VwZXIocGFyZW50LCBzdHlsZSk7Ci0JCQotCQlzZXRGb250KHBhcmVudC5nZXRGb250KCkpOwotCQkKLQkJZlRvb2xraXQ9IGdldERpYWxvZ3NGb3JtVG9vbGtpdCgpOwotCQkKLQkJc2V0RXhwYW5kSG9yaXpvbnRhbCh0cnVlKTsKLQkJc2V0RXhwYW5kVmVydGljYWwodHJ1ZSk7Ci0JCQotCQlDb21wb3NpdGUgYm9keT0gbmV3IENvbXBvc2l0ZSh0aGlzLCBTV1QuTk9ORSk7Ci0JCWJvZHkuc2V0Rm9udChwYXJlbnQuZ2V0Rm9udCgpKTsKLQkJc2V0Q29udGVudChib2R5KTsKLQl9Ci0JCi0JcHVibGljIEZvcm1Ub29sa2l0IGdldERpYWxvZ3NGb3JtVG9vbGtpdCgpIHsKLQkJaWYgKGZUb29sa2l0ID09IG51bGwpIHsKLQkJCUZvcm1Db2xvcnMgY29sb3JzPSBuZXcgRm9ybUNvbG9ycyhEaXNwbGF5LmdldEN1cnJlbnQoKSk7Ci0JCQljb2xvcnMuc2V0QmFja2dyb3VuZChudWxsKTsKLQkJCWNvbG9ycy5zZXRGb3JlZ3JvdW5kKG51bGwpOwkKLQkJCWZUb29sa2l0PSBuZXcgRm9ybVRvb2xraXQoY29sb3JzKTsKLQkJfQotCQlyZXR1cm4gZlRvb2xraXQ7Ci0JfQotCi0JcHVibGljIHZvaWQgYWRhcHRDaGlsZChDb250cm9sIGNoaWxkQ29udHJvbCkgewotCSAgLy8gTmVlZCB0byBoYXZlIHRoZSB0cmFjayBrZXlib2FyZCBwYXJhbWV0ZXIgZmFsc2UsIHNpbmNlIGEgdHJ1ZQotCSAgLy8gdmFsdWUgY2F1c2VzIENvbXBvc2l0ZSBjb250cm9scyB0byBlYXQgdGFiIGtleXMsIHdoaWNoIGluIHR1cm4KLQkgIC8vIGNhdXNlcyB0aGUgd2hvbGUgcHJlZmVyZW5jZSBwYWdlIHRvIGJlY29tZSBpbmFjY2Vzc2libGUuCi0JCWZUb29sa2l0LmFkYXB0KGNoaWxkQ29udHJvbCwgdHJ1ZSwgZmFsc2UpOwotCX0KLQkKLQlwdWJsaWMgQ29tcG9zaXRlIGdldEJvZHkoKSB7Ci0JCXJldHVybiAoQ29tcG9zaXRlKSBnZXRDb250ZW50KCk7Ci0JfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY2llc0NvbXBvc2l0ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWNpZXNDb21wb3NpdGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNjNjllMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY2llc0NvbXBvc2l0ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTU5NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzExMDYgMTk2OTk3ICAgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIFBldGVycwotICogMjAwNzExMjAgMjA5ODU4IGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBQZXRlcnMsIEVuaGFuY2luZyBzZXJ2aWNlIHBvbGljeSBmcmFtZXdvcmsgYW5kIFVJIAotICogMjAwNzEyMTIgICAyMDk4NTggZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIFBldGVycywgRW5oYW5jaW5nIHNlcnZpY2UgcG9saWN5IGZyYW1ld29yayBhbmQgVUkKLSAqIDIwMDgwMjExICAgMjE4NTIwIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwMzI0ICAgMjIyMDk1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIFVJIG5vdyBsaXN0ZW5zIGZvciBzdGF0ZSBjaGFuZ2VzLgotICogMjAwODAzMjQgICAyMjM2MzQgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgU2VydmljZSBQb2xpY2llcyBwcmVmZXJlbmNlIHRyZWUgc2hvdWxkIGJlIDMgbGV2ZWwgdHJlZQotICogMjAwODA1MDYgICAyMTkwMDUgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgU2VydmljZSBwb2xpY3kgcHJlZmVyZW5jZSBwYWdlIG5vdCByZXN0b3JpbmcgcHJvcGVybHkKLSAqIDIwMDgwNTMwICAgMjM0OTQ0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEZpeGVkIGZvY3VzIHByb2JsZW0gZm9yIGFjdGlvbiBjb250cm9scwotICogMjAwODA3MTYgICAyMzk0NTcgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgU2VydmljZSBQb2xpY3kgVUkgUmVzdG9yZSBkZWZhdWx0cyBkb2VzIG5vdCByZWZyZXNoIHZhbGlkYXRpb24gZXJyb3IKLSAqIDIwMDkwMzA2ICAgMjI0NjMyIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIEZpeCBTZXJ2aWNlIFBvbGljaWVzIHByZWZlcmVuY2UgcGFnZSBVSQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5zZXJ2aWNlLnBvbGljeS51aTsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkZpbGVMb2NhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnJlc291cmNlLkpGYWNlUmVzb3VyY2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuY3VzdG9tLlNjcm9sbGVkQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuSW1hZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbWJvOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVHJlZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UcmVlSXRlbTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5XaWRnZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5mb3Jtcy5ldmVudHMuRXhwYW5zaW9uQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5mb3Jtcy5ldmVudHMuRXhwYW5zaW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuZm9ybXMud2lkZ2V0cy5FeHBhbmRhYmxlQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmhlbHAuSVdvcmtiZW5jaEhlbHBTeXN0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5RW51bWVyYXRpb25MaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5UmVsYXRpb25zaGlwOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5U3RhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lTdGF0ZUVudW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU3RhdGVFbnVtZXJhdGlvbkl0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklQb2xpY3lPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuU2VydmljZVBvbGljeVBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuU2VydmljZVV0aWxzOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGU7Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlUG9saWNpZXNDb21wb3NpdGUgZXh0ZW5kcyBDb21wb3NpdGUgaW1wbGVtZW50cwotCQlTZWxlY3Rpb25MaXN0ZW5lciwgSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIgIHsKLQotCXByaXZhdGUgU2Nyb2xsZWRDb21wb3NpdGUgb3BlcmF0aW9uc1Njcm9sbGVkQ29tcG9zaXRlOwotCS8vYSBzY3JvbGxhYmxlIGNvbXBvc2l0ZSBjb250YWluaW5nIG9wZXJhdGlvbnMgYXZhaWxhYmxlIGZvciB0aGUgc2VsZWN0ZWQgcG9saWNpZXMKLQlwcml2YXRlIENvbXBvc2l0ZSBvcGVyYXRpb25zQ29tcG9zaXRlOwotCXByaXZhdGUgSVdvcmtiZW5jaEhlbHBTeXN0ZW0gaGVscFN5c3RlbTsKLQlwcml2YXRlIENvbXBvc2l0ZSBtYXN0ZXJDb21wb3NpdGU7Ci0JcHJpdmF0ZSBDb21wb3NpdGUgZGV0YWlsc0NvbXBvc2l0ZTsKLQlwcml2YXRlIFRyZWUgbWFzdGVyUG9saWN5VHJlZTsKLQkvL3RlcnRpYXJ5IGFuZCBoaWdoZXIgbGV2ZWwgcG9saWN5IG5vZGVzIGluIGEgc2VwYXJhdGUgdHJlZQotCXByaXZhdGUgVHJlZSBkZXRhaWxzUG9saWN5VHJlZTsKLQlwcml2YXRlIFRleHQgdGV4dF9EZXRhaWxzUGFuZWxfZGVzY3JpcHRpb247Ci0JcHJpdmF0ZSBUZXh0IHRleHRfRGV0YWlsc1BhbmVsX2RlcGVuZGVuY2llczsKLQlwcml2YXRlIExhYmVsIGxhYmVsX0RldGFpbHNQYW5lbF9kZXNjcmlwdGlvbjsKLQlwcml2YXRlIExhYmVsIGxhYmVsX2RldGFpbHNQYW5lbF9kZXBlbmRhbmNpZXM7Ci0JcHJpdmF0ZSBIYXNodGFibGU8U3RyaW5nLCBJU3RhdHVzPiBhbGxFcnJvcnM7Ci0JcHJpdmF0ZSBJU3RhdHVzIGVycm9yOwotCXByaXZhdGUgYm9vbGVhbiBiQ29tcGxleE9wQ29tcGxldGVkID0gdHJ1ZTsKLQlwcml2YXRlIExpc3Q8Q2hpbGRDaGFuZ2VFdmVudD4gbGlzdENoaWxkQ2hhbmdlRXZlbnRzOwotCXByaXZhdGUgSUNvbk1hbmFnZXIgaWNvbk1hbmFnZXIgPSBuZXcgSUNvbk1hbmFnZXIoKTsKLQlwcml2YXRlIElQcm9qZWN0IHByb2plY3QgPSBudWxsOwotCXByaXZhdGUgU2VsZWN0aW9uTGlzdGVuZXIgbGlzdGVuZXI7Ci0JcHJpdmF0ZSBFeHBhbmRhYmxlQ29tcG9zaXRlIGV4Y29tcG9zaXRlOwotCXByaXZhdGUgU2VydmljZVBvbGljeVBsYXRmb3JtIHBsYXRmb3JtID0gU2VydmljZVBvbGljeVBsYXRmb3JtCi0JCQkuZ2V0SW5zdGFuY2UoKTsKLQlwcml2YXRlIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJIHBsYXRmb3JtVUkgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSQotCQkJLmdldEluc3RhbmNlKCk7Ci0JcHJpdmF0ZSBJUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lciBzdGF0ZUNoYW5nZUxpc3RlbmVyICA9IG5ldyBTdGF0ZUNoYW5nZUxpc3RlbmVyKCk7Ci0JcHJpdmF0ZSBib29sZWFuICAgICAgICAgICAgICAgICAgICBzdGF0ZUNoYW5nZUVuYWJsZWQgICA9IHRydWU7Ci0JcHJpdmF0ZSBIYXNoU2V0PElTZXJ2aWNlUG9saWN5PiAgICBzdGF0ZUNoYW5nZVBvbGljeVNldCA9IG5ldyBIYXNoU2V0PElTZXJ2aWNlUG9saWN5PigpOwotCXByaXZhdGUgTGlzdDxJU2VydmljZVBvbGljeT4gICAgICAgbGFzdFNlbGVjdGVkU3AgICAgICAgPSBudWxsOwotCS8qQ09OVEVYVF9JRCBQVFBQMDAwMSBmb3IgdGhlIFNlcnZpY2UgUG9saWNpZXMgUHJlZmVyZW5jZSAmIFByb3BlcnR5IFBhZ2UqLwotICAgIHByaXZhdGUgU3RyaW5nIElORk9QT1BfU1BQUF9QQUdFID0gU2VydmljZVBvbGljeUFjdGl2YXRvclVJLlBMVUdJTl9JRCArICIuU1BQUDAwMDEiOwotCi0JLyoqCi0JICogQ3JlYXRlcyBhbiBleHBhbmRhYmxlIGNvbXBvc2l0ZQotCSAqIEBwYXJhbSBwYXJlbnQKLQkgKiBAcGFyYW0gbkNvbHVtbnMKLQkgKiBAcmV0dXJuCi0JICovCi0JcHJpdmF0ZSBFeHBhbmRhYmxlQ29tcG9zaXRlIGNyZWF0ZUV4cGFuZGFibGVDb21wb3NpdGUoQ29tcG9zaXRlIHBhcmVudCwKLQkJCWludCBuQ29sdW1ucykgewotCQlFeHBhbmRhYmxlQ29tcG9zaXRlIGV4Y29tcG9zaXRlID0gbmV3IEV4cGFuZGFibGVDb21wb3NpdGUocGFyZW50LAotCQkJCVNXVC5OT05FLCBFeHBhbmRhYmxlQ29tcG9zaXRlLlRXSVNUSUUKLQkJCQkJCXwgRXhwYW5kYWJsZUNvbXBvc2l0ZS5DTElFTlRfSU5ERU5UKTsKLQkJZXhjb21wb3NpdGUuc2V0RXhwYW5kZWQoZmFsc2UpOwotCQlleGNvbXBvc2l0ZS5zZXRWaXNpYmxlKGZhbHNlKTsKLQkJZXhjb21wb3NpdGUuc2V0Rm9udChKRmFjZVJlc291cmNlcy5nZXRGb250UmVnaXN0cnkoKS5nZXRCb2xkKAotCQkJCUpGYWNlUmVzb3VyY2VzLkRJQUxPR19GT05UKSk7Ci0JCWV4Y29tcG9zaXRlLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTEwsIEdyaWREYXRhLkZJTEwsCi0JCQkJdHJ1ZSwgZmFsc2UsIG5Db2x1bW5zLCAxKSk7Ci0JCWV4Y29tcG9zaXRlLmFkZEV4cGFuc2lvbkxpc3RlbmVyKG5ldyBFeHBhbnNpb25BZGFwdGVyKCkgewotCQkJcHVibGljIHZvaWQgZXhwYW5zaW9uU3RhdGVDaGFuZ2VkKEV4cGFuc2lvbkV2ZW50IGUpIHsKLQkJCQlleHBhbmRlZFN0YXRlQ2hhbmdlZCgoRXhwYW5kYWJsZUNvbXBvc2l0ZSkgZS5nZXRTb3VyY2UoKSk7Ci0JCQl9Ci0JCX0pOwotCQltYWtlU2Nyb2xsYWJsZUNvbXBvc2l0ZUF3YXJlKGV4Y29tcG9zaXRlKTsKLQkJcmV0dXJuIGV4Y29tcG9zaXRlOwotCX0KLQkKLQkvKioKLQkgKiBAYXV0aG9yIGVyaWNkcAotCSAqIEhlbHBlciBjbGFzcyB0aGF0IGVuY2Fwc3VsYXRlcyBkYXRhIHJlcXVpcmVkIHdoZW4gYW4gYWN0aW9uIGNvbnRyb2wgY2hhbmdlcyBzdGF0ZQotCSAqCi0JICovCi0JcHJpdmF0ZSBjbGFzcyBBY3Rpb25Db250cm9sRGF0YSB7Ci0JCXByaXZhdGUgTGlzdDxJU2VydmljZVBvbGljeT4gc3BMaXN0OwotCQlwcml2YXRlIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gcG9MaXN0OwotLy8JCXByaXZhdGUgSVBvbGljeU9wZXJhdGlvbiBwbzsKLQotCQlwdWJsaWMgQWN0aW9uQ29udHJvbERhdGEoTGlzdDxJU2VydmljZVBvbGljeT4gc3BMaXN0LCBMaXN0PElQb2xpY3lPcGVyYXRpb24+IHBvTGlzdCkgewotCQkJdGhpcy5zcExpc3QgPSBzcExpc3Q7Ci0JCQl0aGlzLnBvTGlzdCA9IHBvTGlzdDsKLQkJfQotCQlwdWJsaWMgTGlzdDxJU2VydmljZVBvbGljeT4gZ2V0U3BMaXN0KCkgewotCQkJcmV0dXJuIHNwTGlzdDsKLQkJfQotCi0JCXB1YmxpYyB2b2lkIHNldFNwTGlzdChMaXN0PElTZXJ2aWNlUG9saWN5PiBzcExpc3QpIHsKLQkJCXRoaXMuc3BMaXN0ID0gc3BMaXN0OwotCQl9Ci0vLwotLy8JCXB1YmxpYyBJUG9saWN5T3BlcmF0aW9uIGdldFBvKCkgewotLy8JCQlyZXR1cm4gcG87Ci0vLwkJfQotLy8KLS8vCQlwdWJsaWMgdm9pZCBzZXRQbyhJUG9saWN5T3BlcmF0aW9uIHBvKSB7Ci0vLwkJCXRoaXMucG8gPSBwbzsKLS8vCQl9Ci0KLQkJcHVibGljIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gZ2V0UG9MaXN0KCkgewotCQkJcmV0dXJuIHBvTGlzdDsKLQkJfQotCi0JCXB1YmxpYyB2b2lkIHNldFBvTGlzdChMaXN0PElQb2xpY3lPcGVyYXRpb24+IHBvTGlzdCkgewotCQkJdGhpcy5wb0xpc3QgPSBwb0xpc3Q7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBNYWtlcyB0aGUgc2Nyb2xsYWJsZSBjb21wb3NpdGUgYXdhcmUgb2YgdGhpcyBjb250cm9sLCBzbyBleHBhbmQvY29sbGFwc2UKLQkgKiBvZiB0aGUgc2Nyb2xsYWJsZSBjb21wb3NpdGUgd2lsbCBtb3ZlIHRoaXMgY29udHJvbCBkb3duL3VwIGFjY29yZGluZ2x5Ci0JICogQHBhcmFtIGNvbnRyb2wgdGhlIGNvbnRyb2wgdG8gbWFrZSB0aGUgc2Nyb2xsYWJsZSBjb21wb3NpdGUgYXdhcmUgb2YKLQkgKi8KLQlwcml2YXRlIHZvaWQgbWFrZVNjcm9sbGFibGVDb21wb3NpdGVBd2FyZShDb250cm9sIGNvbnRyb2wpIHsKLQkJU2Nyb2xsZWRQYWdlQ29udGVudCBwYXJlbnRTY3JvbGxlZENvbXBvc2l0ZSA9IGdldFBhcmVudFNjcm9sbGVkQ29tcG9zaXRlKGNvbnRyb2wpOwotCQlpZiAocGFyZW50U2Nyb2xsZWRDb21wb3NpdGUgIT0gbnVsbCkgewotCQkJcGFyZW50U2Nyb2xsZWRDb21wb3NpdGUuYWRhcHRDaGlsZChjb250cm9sKTsKLQkJfQotCX0KLQotCXByaXZhdGUgU2Nyb2xsZWRQYWdlQ29udGVudCBnZXRQYXJlbnRTY3JvbGxlZENvbXBvc2l0ZShDb250cm9sIGNvbnRyb2wpIHsKLQkJQ29udHJvbCBwYXJlbnQgPSBjb250cm9sLmdldFBhcmVudCgpOwotCQl3aGlsZSAoIShwYXJlbnQgaW5zdGFuY2VvZiBTY3JvbGxlZFBhZ2VDb250ZW50KSAmJiBwYXJlbnQgIT0gbnVsbCkgewotCQkJcGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpOwotCQl9Ci0JCWlmIChwYXJlbnQgaW5zdGFuY2VvZiBTY3JvbGxlZFBhZ2VDb250ZW50KSB7Ci0JCQlyZXR1cm4gKFNjcm9sbGVkUGFnZUNvbnRlbnQpIHBhcmVudDsKLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQlwcml2YXRlIGZpbmFsIHZvaWQgZXhwYW5kZWRTdGF0ZUNoYW5nZWQoRXhwYW5kYWJsZUNvbXBvc2l0ZSBleHBhbmRhYmxlKSB7Ci0JCVNjcm9sbGVkUGFnZUNvbnRlbnQgcGFyZW50U2Nyb2xsZWRDb21wb3NpdGUgPSBnZXRQYXJlbnRTY3JvbGxlZENvbXBvc2l0ZShleHBhbmRhYmxlKTsKLQkJaWYgKHBhcmVudFNjcm9sbGVkQ29tcG9zaXRlICE9IG51bGwpIHsKLQkJCXBhcmVudFNjcm9sbGVkQ29tcG9zaXRlLnJlZmxvdyh0cnVlKTsKLQkJfQotCX0KLQotCS8qKgotCSAqIEBwYXJhbSBwYXJlbnQKLQkgKiBAcmV0dXJuIGEgc2Nyb2xsYWJsZSBjb21wb3NpdGUgY29udGFpbmluZyBhbiBleHBhbmRhYmxlIGNvbnRlbnQKLQkgKgotCSAqLwotCXByaXZhdGUgQ29tcG9zaXRlIGNyZWF0ZURldGFpbHNTY3JvbGxQYWdlQ29udGVudChDb21wb3NpdGUgcGFyZW50KSB7Ci0KLQkJaW50IG5Db2x1bW5zID0gMTsKLQotCQlmaW5hbCBTY3JvbGxlZFBhZ2VDb250ZW50IHBhZ2VDb250ZW50ID0gbmV3IFNjcm9sbGVkUGFnZUNvbnRlbnQocGFyZW50KTsKLQotCQlHcmlkTGF5b3V0IHBhZ2VDb250TGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoKTsKLQkJcGFnZUNvbnRMYXlvdXQubnVtQ29sdW1ucyA9IG5Db2x1bW5zOwotCQlwYWdlQ29udExheW91dC5tYXJnaW5IZWlnaHQgPSAwOwotCQlwYWdlQ29udExheW91dC5tYXJnaW5XaWR0aCA9IDA7Ci0KLQkJQ29tcG9zaXRlIGNvbXBvc2l0ZSA9IHBhZ2VDb250ZW50LmdldEJvZHkoKTsKLQkJY29tcG9zaXRlLnNldExheW91dChwYWdlQ29udExheW91dCk7Ci0KLQkJZXhjb21wb3NpdGUgPSBjcmVhdGVFeHBhbmRhYmxlQ29tcG9zaXRlKGNvbXBvc2l0ZSwgbkNvbHVtbnMpOwotCi0JCUNvbXBvc2l0ZSBpbm5lciA9IG5ldyBDb21wb3NpdGUoZXhjb21wb3NpdGUsIFNXVC5OT05FKTsKLQkJaW5uZXIuc2V0Rm9udChjb21wb3NpdGUuZ2V0Rm9udCgpKTsKLQkJaW5uZXIuc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KG5Db2x1bW5zLCBmYWxzZSkpOwotCQlleGNvbXBvc2l0ZS5zZXRDbGllbnQoaW5uZXIpOwotCQkvL2RldGFpbHMgcG9saWN5IHRyZWUgZm9yIHRlcnRpYXJ5IGFuZCBoaWdoZXIgbGV2ZWwgc2VydmljZSBwb2xpY2llcwotCQlkZXRhaWxzUG9saWN5VHJlZSA9IG5ldyBUcmVlKGlubmVyLCBTV1QuQk9SREVSIHwgU1dULk1VTFRJKTsKLQkJZGV0YWlsc1BvbGljeVRyZWUuYWRkU2VsZWN0aW9uTGlzdGVuZXIodGhpcyk7Ci0JCUdyaWREYXRhIGRldGFpbHNQcmVmVHJlZUdEID0gbmV3IEdyaWREYXRhKAotCQkJCUdyaWREYXRhLkhPUklaT05UQUxfQUxJR05fRklMTCB8IEdyaWREYXRhLkdSQUJfSE9SSVpPTlRBTCk7Ci0JCWRldGFpbHNQcmVmVHJlZUdELmhlaWdodEhpbnQgPSA1MDsKLQkJZGV0YWlsc1BvbGljeVRyZWUuc2V0TGF5b3V0RGF0YShkZXRhaWxzUHJlZlRyZWVHRCk7Ci0JCWRldGFpbHNQb2xpY3lUcmVlLnNldFRvb2xUaXBUZXh0KFdzdFNQVUlQbHVnaW5NZXNzYWdlcy5UT09MVElQX1BTUF9ERVRBSUxTVFJFRSk7Ci0JCS8vbWFrZSB0aGUgc2Nyb2xsYWJsZSBjb21wb3NpdGUgYXdhcmUgb2YgdGhlIHRyZWUgc28gZXhwYW5kL2NvbGxhcHNlIHdvcmtzIHByb3Blcmx5Ci0JCW1ha2VTY3JvbGxhYmxlQ29tcG9zaXRlQXdhcmUoZGV0YWlsc1BvbGljeVRyZWUpOwotCQkKLQkJY3JlYXRlUG9saWN5T3BlcmF0aW9uc0NvbXBvc2l0ZShjb21wb3NpdGUpOwotCQlDb21wb3NpdGUgZGVzY3JpcHRpb25BbmREZXRhaWxzQ29tcG9zaXRlID0gbmV3IENvbXBvc2l0ZShjb21wb3NpdGUsIFNXVC5OT05FKTsKLQkJZGVzY3JpcHRpb25BbmREZXRhaWxzQ29tcG9zaXRlLnNldEZvbnQoY29tcG9zaXRlLmdldEZvbnQoKSk7Ci0JCUdyaWRMYXlvdXQgbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQobkNvbHVtbnMsIGZhbHNlKTsKLQkJbGF5b3V0Lm1hcmdpbkhlaWdodCA9IDA7Ci0JCWxheW91dC5tYXJnaW5XaWR0aCA9IDA7Ci0KLQkJCi0JCWRlc2NyaXB0aW9uQW5kRGV0YWlsc0NvbXBvc2l0ZS5zZXRMYXlvdXQobGF5b3V0KTsKLQkJR3JpZERhdGEgZGV0YWlsc0dENCA9IG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkVORCwgdHJ1ZSwgdHJ1ZSk7Ci0JCQotCQlkZXNjcmlwdGlvbkFuZERldGFpbHNDb21wb3NpdGUuc2V0TGF5b3V0RGF0YShkZXRhaWxzR0Q0KTsKLQkJbWFrZVNjcm9sbGFibGVDb21wb3NpdGVBd2FyZShkZXNjcmlwdGlvbkFuZERldGFpbHNDb21wb3NpdGUpOwotCQlsYWJlbF9EZXRhaWxzUGFuZWxfZGVzY3JpcHRpb24gPSBuZXcgTGFiZWwoZGVzY3JpcHRpb25BbmREZXRhaWxzQ29tcG9zaXRlLCBTV1QuTk9ORSk7Ci0JCUdyaWREYXRhIGRldGFpbHNHRDIgPSBuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5FTkQsIHRydWUsIHRydWUpOwotCQlsYWJlbF9EZXRhaWxzUGFuZWxfZGVzY3JpcHRpb24uc2V0TGF5b3V0RGF0YShkZXRhaWxzR0QyKTsKLQkJbGFiZWxfRGV0YWlsc1BhbmVsX2Rlc2NyaXB0aW9uCi0JCQkJLnNldFRleHQoV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX1NFUlZJQ0VQT0xJQ0lFU19ERVNDUklQVElPTik7Ci0JCW1ha2VTY3JvbGxhYmxlQ29tcG9zaXRlQXdhcmUobGFiZWxfRGV0YWlsc1BhbmVsX2Rlc2NyaXB0aW9uKTsKLQkJdGV4dF9EZXRhaWxzUGFuZWxfZGVzY3JpcHRpb24gPSBuZXcgVGV4dChkZXNjcmlwdGlvbkFuZERldGFpbHNDb21wb3NpdGUsIFNXVC5XUkFQCi0JCQkJfCBTV1QuQk9SREVSIHwgU1dULlZfU0NST0xMIHwgU1dULlJFQURfT05MWSk7Ci0JCUdyaWREYXRhIGRldGFpbHNHRCA9IG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkVORCwgdHJ1ZSwgdHJ1ZSk7Ci0JCWRldGFpbHNHRC5oZWlnaHRIaW50ID0gNzU7Ci0JCWRldGFpbHNHRC53aWR0aEhpbnQgPSAyMjA7Ci0JCXRleHRfRGV0YWlsc1BhbmVsX2Rlc2NyaXB0aW9uLnNldExheW91dERhdGEoZGV0YWlsc0dEKTsKLQkJdGV4dF9EZXRhaWxzUGFuZWxfZGVzY3JpcHRpb24uc2V0VG9vbFRpcFRleHQoV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfUFNQX0RFU0NSSVBUSU9OKTsKLQotCQltYWtlU2Nyb2xsYWJsZUNvbXBvc2l0ZUF3YXJlKHRleHRfRGV0YWlsc1BhbmVsX2Rlc2NyaXB0aW9uKTsKLQkJbGFiZWxfZGV0YWlsc1BhbmVsX2RlcGVuZGFuY2llcyA9IG5ldyBMYWJlbChkZXNjcmlwdGlvbkFuZERldGFpbHNDb21wb3NpdGUsIFNXVC5OT05FKTsKLQkJR3JpZERhdGEgZGV0YWlsc0dEMyA9IG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkVORCwgdHJ1ZSwgdHJ1ZSk7Ci0JCWxhYmVsX2RldGFpbHNQYW5lbF9kZXBlbmRhbmNpZXMuc2V0TGF5b3V0RGF0YShkZXRhaWxzR0QzKTsKLQkJbWFrZVNjcm9sbGFibGVDb21wb3NpdGVBd2FyZShsYWJlbF9kZXRhaWxzUGFuZWxfZGVwZW5kYW5jaWVzKTsKLQkJbGFiZWxfZGV0YWlsc1BhbmVsX2RlcGVuZGFuY2llcwotCQkJCS5zZXRUZXh0KFdzdFNQVUlQbHVnaW5NZXNzYWdlcy5MQUJFTF9TRVJWSUNFUE9MSUNJRVNfREVQRU5ERU5DSUVTKTsKLQkJdGV4dF9EZXRhaWxzUGFuZWxfZGVwZW5kZW5jaWVzID0gbmV3IFRleHQoZGVzY3JpcHRpb25BbmREZXRhaWxzQ29tcG9zaXRlLCBTV1QuV1JBUAotCQkJCXwgU1dULkJPUkRFUiB8IFNXVC5WX1NDUk9MTCB8IFNXVC5SRUFEX09OTFkpOwotCQl0ZXh0X0RldGFpbHNQYW5lbF9kZXBlbmRlbmNpZXMuc2V0VG9vbFRpcFRleHQoV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfUFNQX0RFUEVOREVOQ0lFUyk7Ci0JCW1ha2VTY3JvbGxhYmxlQ29tcG9zaXRlQXdhcmUodGV4dF9EZXRhaWxzUGFuZWxfZGVwZW5kZW5jaWVzKTsKLQkJCi0KLQkJY29tcG9zaXRlLnNldExheW91dChwYWdlQ29udExheW91dCk7Ci0JCUdyaWREYXRhIGRlcGVuZGVuY2llc0dEID0gbmV3IEdyaWREYXRhKFNXVC5GSUxMLCBTV1QuRU5ELCB0cnVlLCB0cnVlKTsKLQkJZGVwZW5kZW5jaWVzR0QuaGVpZ2h0SGludCA9IDc1OwotCQlkZXBlbmRlbmNpZXNHRC53aWR0aEhpbnQgPSAyMjA7Ci0JCXRleHRfRGV0YWlsc1BhbmVsX2RlcGVuZGVuY2llcy5zZXRMYXlvdXREYXRhKGRlcGVuZGVuY2llc0dEKTsKLQotCQlyZXR1cm4gcGFnZUNvbnRlbnQ7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyB0aGUgc2Nyb2xsYWJsZSBjb21wb3NpdGUgdGhhdCB3aWxsIGNvbnRhaW4gd2lkZ2V0cyBhc3NvY2lhdGVkIHdpdGggYSBwb2xpY3kgb3BlcmF0aW9uCi0JICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50IGNvbXBvc2l0ZQotCSAqLwotCXByaXZhdGUgdm9pZCBjcmVhdGVQb2xpY3lPcGVyYXRpb25zQ29tcG9zaXRlKENvbXBvc2l0ZSBwYXJlbnQpIHsKLQkJb3BlcmF0aW9uc1Njcm9sbGVkQ29tcG9zaXRlID0gbmV3IFNjcm9sbGVkQ29tcG9zaXRlKHBhcmVudCwKLQkJCQlTV1QuSF9TQ1JPTEwgfCBTV1QuVl9TQ1JPTEwpOwotCQlvcGVyYXRpb25zU2Nyb2xsZWRDb21wb3NpdGUuc2V0RXhwYW5kSG9yaXpvbnRhbCh0cnVlKTsKLQkJb3BlcmF0aW9uc1Njcm9sbGVkQ29tcG9zaXRlLnNldEV4cGFuZFZlcnRpY2FsKHRydWUpOwotCQlHcmlkRGF0YSBvcGVyYXRpb25zU2Nyb2xsZWRDb21wb3NpdGVHRCA9IG5ldyBHcmlkRGF0YSgKLQkJCQlHcmlkRGF0YS5IT1JJWk9OVEFMX0FMSUdOX0ZJTEwgfCBHcmlkRGF0YS5HUkFCX0hPUklaT05UQUwpOwotCQlvcGVyYXRpb25zU2Nyb2xsZWRDb21wb3NpdGVHRC5oZWlnaHRIaW50ID03NTsKLQkJb3BlcmF0aW9uc1Njcm9sbGVkQ29tcG9zaXRlLnNldExheW91dERhdGEob3BlcmF0aW9uc1Njcm9sbGVkQ29tcG9zaXRlR0QpOwotCQlvcGVyYXRpb25zQ29tcG9zaXRlID0gbmV3IENvbXBvc2l0ZShvcGVyYXRpb25zU2Nyb2xsZWRDb21wb3NpdGUsCi0JCQkJU1dULk5PTkUpOwotCQlvcGVyYXRpb25zU2Nyb2xsZWRDb21wb3NpdGUuc2V0Q29udGVudChvcGVyYXRpb25zQ29tcG9zaXRlKTsKLQkJR3JpZExheW91dCBsYXlvdXQgPSBuZXcgR3JpZExheW91dCgpOwotCQlsYXlvdXQubnVtQ29sdW1ucyA9IDI7Ci0JCQotCQlvcGVyYXRpb25zQ29tcG9zaXRlLnNldExheW91dChsYXlvdXQpOwotCQlvcGVyYXRpb25zU2Nyb2xsZWRDb21wb3NpdGUuc2V0TWluU2l6ZShvcGVyYXRpb25zQ29tcG9zaXRlLmNvbXB1dGVTaXplKAotCQkJCTQwMCwgMTAwKSk7Ci0JCW1ha2VTY3JvbGxhYmxlQ29tcG9zaXRlQXdhcmUob3BlcmF0aW9uc1Njcm9sbGVkQ29tcG9zaXRlKTsKLQkJbWFrZVNjcm9sbGFibGVDb21wb3NpdGVBd2FyZShvcGVyYXRpb25zQ29tcG9zaXRlKTsKLQl9Ci0KLQlwdWJsaWMgU2VydmljZVBvbGljaWVzQ29tcG9zaXRlKENvbXBvc2l0ZSBwYXJlbnQsIElQcm9qZWN0IHByb2plY3QsCi0JCQlTZWxlY3Rpb25MaXN0ZW5lciBsaXN0ZW5lcikgewotCi0JCXN1cGVyKHBhcmVudCwgU1dULk5PTkUpOwotCQl0aGlzLnByb2plY3QgPSBwcm9qZWN0OwotCQl0aGlzLmxpc3RlbmVyID0gbGlzdGVuZXI7Ci0JCWFsbEVycm9ycyA9IG5ldyBIYXNodGFibGU8U3RyaW5nLCBJU3RhdHVzPigpOwotCQloZWxwU3lzdGVtID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRIZWxwU3lzdGVtKCk7Ci0JCUdyaWRMYXlvdXQgcGFyZW50TGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoKTsKLQkJcGFyZW50TGF5b3V0Lm51bUNvbHVtbnMgPSAyOwotCQlwYXJlbnRMYXlvdXQuaG9yaXpvbnRhbFNwYWNpbmcgPSAwOwotCQkKLQkJdGhpcy5zZXRMYXlvdXQocGFyZW50TGF5b3V0KTsKLQkJdGhpcy5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5GSUxMX0JPVEgpKTsKLQkJTGFiZWwgZGVzY3JpcHRpb24gPSBuZXcgTGFiZWwodGhpcywgU1dULk5PTkUpOwotCQlkZXNjcmlwdGlvbi5zZXRUZXh0KFdzdFNQVUlQbHVnaW5NZXNzYWdlcy5MQUJFTF9TRVJWSUNFUE9MSUNJRVNfUEFHRV9ERVNDUklQVElPTik7Ci0JCUdyaWREYXRhIGRlc2NHRCA9IG5ldyBHcmlkRGF0YShTV1QuQkVHSU5OSU5HLCBTV1QuVE9QLCBmYWxzZSwgZmFsc2UsIDIsMSAgKTsKLQkJZGVzY3JpcHRpb24uc2V0TGF5b3V0RGF0YShkZXNjR0QpOwotCQltYXN0ZXJDb21wb3NpdGUgPSBuZXcgQ29tcG9zaXRlKHRoaXMsIFNXVC5OT05FKTsKLQotCQlHcmlkTGF5b3V0IG1hc3RlckxheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0JCW1hc3RlckxheW91dC5udW1Db2x1bW5zID0gMTsKLQkJbWFzdGVyTGF5b3V0Lmhvcml6b250YWxTcGFjaW5nID0gMDsKLQkJbWFzdGVyQ29tcG9zaXRlLnNldExheW91dChtYXN0ZXJMYXlvdXQpOwotCQltYXN0ZXJDb21wb3NpdGUuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9WRVJUSUNBTCkpOwotCi0JCWRldGFpbHNDb21wb3NpdGUgPSBuZXcgQ29tcG9zaXRlKHRoaXMsIFNXVC5OT05FKTsKLQkJR3JpZExheW91dCBkZXRhaWxzTGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoKTsKLQkJZGV0YWlsc0xheW91dC5udW1Db2x1bW5zID0gMTsKLQkJZGV0YWlsc0xheW91dC5ob3Jpem9udGFsU3BhY2luZyA9IDA7Ci0JCWRldGFpbHNDb21wb3NpdGUuc2V0TGF5b3V0KGRldGFpbHNMYXlvdXQpOwotCQlkZXRhaWxzQ29tcG9zaXRlLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfQk9USCkpOwotCQltYXN0ZXJQb2xpY3lUcmVlID0gbmV3IFRyZWUobWFzdGVyQ29tcG9zaXRlLCBTV1QuQk9SREVSIHwgU1dULk1VTFRJKTsKLQkJbWFzdGVyUG9saWN5VHJlZS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5GSUxMX1ZFUlRJQ0FMKSk7Ci0JCW1hc3RlclBvbGljeVRyZWUuc2V0VG9vbFRpcFRleHQoV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfUFNQX1RSRUUpOwotCi0JCUNvbXBvc2l0ZSBvdGhlcnNDb21wb3NpdGUgPSBjcmVhdGVEZXRhaWxzU2Nyb2xsUGFnZUNvbnRlbnQoZGV0YWlsc0NvbXBvc2l0ZSk7Ci0JCUdyaWREYXRhIGdyaWREYXRhID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTEwsIEdyaWREYXRhLkZJTEwsIHRydWUsCi0JCQkJdHJ1ZSk7Ci0JCW90aGVyc0NvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKGdyaWREYXRhKTsKLQotCQltYXN0ZXJQb2xpY3lUcmVlLmFkZFNlbGVjdGlvbkxpc3RlbmVyKHRoaXMpOwotCi0JCUxpc3Q8SVNlcnZpY2VQb2xpY3k+IHBvbGljeUxpc3QgPSBwbGF0Zm9ybS5nZXRSb290U2VydmljZVBvbGljaWVzKG51bGwpOwotCQkKLQkJcG9saWN5TGlzdCA9IFNlcnZpY2VVdGlscy5zb3J0TGlzdCggcG9saWN5TGlzdCApOwotCQkKLQkJZm9yIChJU2VydmljZVBvbGljeSBwb2xpY3kgOiBwb2xpY3lMaXN0KSB7Ci0JCQlhZGRQb2xpY3kocG9saWN5LCBtYXN0ZXJQb2xpY3lUcmVlLCB0cnVlKTsKLQkJfQotCQlUcmVlSXRlbVtdIHRyZWVJdGVtcyA9IG1hc3RlclBvbGljeVRyZWUuZ2V0SXRlbXMoKTsKLQkJaWYgKHRyZWVJdGVtcy5sZW5ndGggPiAwKSB7Ci0JCQkvL3NlbGVjdCB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgdHJlZSAmIGZpcmUgZXZlbnQgc28gVUkgaXMgdXBkYXRlZAotCQkJbWFzdGVyUG9saWN5VHJlZS5zZXRTZWxlY3Rpb24odHJlZUl0ZW1zWzBdKTsKLQkJCW1hc3RlclBvbGljeVRyZWUubm90aWZ5TGlzdGVuZXJzKFNXVC5TZWxlY3Rpb24sIG5ldyBFdmVudCgpKTsKLQkJfQotCX0KLQotCS8qKgotCSAqIFNldHMgdGhlIGltYWdlIG9uIHRpLCBpZiBhc3NvY2lhdGVkIHNlcnZpY2UgcG9saWN5IGRlZmluZXMgYW4gaWNvbgotCSAqIGl0IHdpbGwgd2lsbCBiZSB1c2VkLCBvdGhlcndpc2UgZGVmYXVsdCBGb2xkZXIvTGVhZiBpY29ucyB3aWxsIGJlIHVzZWQKLQkgKiBAcGFyYW0gdGkgdGhlIFRyZWVJdGVtIHRvIHNldCB0aGUgaW1hZ2UgZm9yCi0JICogQHBhcmFtIHNwIHRoZSBzZXJ2aWNlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGkKLQkgKiBAcGFyYW0gaWNvbk92ZXJsYXlzIGRlc2NyaXB0aW9uIG9mIHdoaWNoIG92ZXJsYXlzIHNob3VsZCBiZSBhcHBsaWVkIAotCSAqLwotCXByaXZhdGUgdm9pZCBzZXRJbWFnZShUcmVlSXRlbSB0aSwgSVNlcnZpY2VQb2xpY3kgc3AsIFN0cmluZ1tdIGljb25PdmVybGF5cykgewotCQlJbWFnZSBpID0gKHNwLmdldENoaWxkcmVuKCkuc2l6ZSgpID09IDApID8gaWNvbk1hbmFnZXIuZ2V0SWNvbk92ZXJsYXkoCi0JCQkJaWNvbk1hbmFnZXIuZ2V0TGVhZkJhc2VVcmwoKSwgaWNvbk92ZXJsYXlzKSA6IGljb25NYW5hZ2VyCi0JCQkJLmdldEljb25PdmVybGF5KGljb25NYW5hZ2VyLmdldEZvbGRlckJhc2VVcmwoKSwgaWNvbk92ZXJsYXlzKTsKLQkJaWYgKHNwLmdldERlc2NyaXB0b3IoKSAhPSBudWxsKSB7Ci0JCQlTdHJpbmcgaWNvblBhdGhCdW5kbGVJRCA9IG51bGw7Ci0JCQlTdHJpbmcgaWNvblBhdGggPSBudWxsOwotCQkJaWNvblBhdGhCdW5kbGVJRCA9IHNwLmdldERlc2NyaXB0b3IoKS5nZXRJY29uQnVuZGxlSWQoKTsKLQkJCWljb25QYXRoID0gc3AuZ2V0RGVzY3JpcHRvcigpLmdldEljb25QYXRoKCk7Ci0JCQlpZiAoaWNvblBhdGhCdW5kbGVJRCAhPSBudWxsICYmIGljb25QYXRoICE9IG51bGwKLQkJCQkJJiYgaWNvblBhdGhCdW5kbGVJRC5sZW5ndGgoKSA+IDAgJiYgaWNvblBhdGgubGVuZ3RoKCkgPiAwKSB7Ci0JCQkJQnVuZGxlIGIgPSBQbGF0Zm9ybS5nZXRCdW5kbGUoaWNvblBhdGhCdW5kbGVJRCk7Ci0JCQkJaSA9IGljb25NYW5hZ2VyLmdldEljb25PdmVybGF5KEZpbGVMb2NhdG9yLmZpbmQoYiwKLQkJCQkJCW5ldyBQYXRoKGljb25QYXRoKSwgbnVsbCkudG9TdHJpbmcoKSwgaWNvbk92ZXJsYXlzKTsKLQkJCX0KLQkJfQotCQl0aS5zZXRJbWFnZShpKTsKLQkJLy8gaW1hZ2UgaGFzIGNoYW5nZWQsIG5vdGlmeSBjaGFuZ2UgbGlzdGVuZXJzIHNvIHRyZWUgZ2V0cyB1cGRhdGVkCi0JCXRpLm5vdGlmeUxpc3RlbmVycyhTV1QuTW9kaWZ5LCBuZXcgRXZlbnQoKSk7Ci0JfQotCQotCXByaXZhdGUgYm9vbGVhbiBpczR0aExldmVsT3JIaWdoZXJQb2xpY3kgKElTZXJ2aWNlUG9saWN5IHNwKSB7Ci0JCXJldHVybiBzcC5nZXRQYXJlbnRQb2xpY3koKSAhPSBudWxsCi0JCSYmIHNwLmdldFBhcmVudFBvbGljeSgpLmdldFBhcmVudFBvbGljeSgpICE9IG51bGwgJiYgc3AuZ2V0UGFyZW50UG9saWN5KCkuZ2V0UGFyZW50UG9saWN5KCkuZ2V0UGFyZW50UG9saWN5KCkgIT0gbnVsbDsKLQkJCi0JfQotCQotCXByaXZhdGUgYm9vbGVhbiBpczNyZExldmVsUG9sSW5NYXN0ZXJUcmVlV2l0aENoaWxkcmVuIChMaXN0PElTZXJ2aWNlUG9saWN5PiBzcExpc3RJbk1hc3RlclRyZWUpIHsKLQkJcmV0dXJuIHNwTGlzdEluTWFzdGVyVHJlZS5nZXQoMCkuZ2V0UGFyZW50UG9saWN5KCkgIT0gbnVsbCAmJiBzcExpc3RJbk1hc3RlclRyZWUuZ2V0KDApLmdldFBhcmVudFBvbGljeSgpLmdldFBhcmVudFBvbGljeSgpICE9IG51bGwKLQkJJiYgc3BMaXN0SW5NYXN0ZXJUcmVlLmdldCgwKS5nZXRDaGlsZHJlbigpLnNpemUoKSA+IDAgOwotCX0KLQkvKioKLQkgKiBBZGQgc2VydmljZSBwb2xpY3kgc3AgYW5kIGNoaWxkcmVuIG9mIHNwIHRvIHRoZSBwYXJlbnQKLQkgKiBAcGFyYW0gc3AgdGhlIHNlcnZpY2UgcG9saWN5IHRvIGFkZAotCSAqIEBwYXJhbSBwYXJlbnQgZWl0aGVyIGEgVHJlZSAobWFzdGVyUG9saWN5VHJlZSBvciBEZXRhaWxzUG9saWN5VHJlZSksIG9yIGEgVHJlZUl0ZW0KLQkgKiB0byBhZGQgc2VydmljZSBwb2xpY3kgY2hpbGRyZW4gdG8KLQkgKiBAcGFyYW0gYWRkVXBUb0xldmVsM09ubHkgZmFsc2UgaWYgc2hvdWxkIGFkZCA0dGggYW5kIGhpZ2hlciBsZXZlbAotCSAqIGNoaWxkIHBvbGljaWVzCi0JICovCi0JcHJpdmF0ZSB2b2lkIGFkZFBvbGljeShJU2VydmljZVBvbGljeSBzcCwgV2lkZ2V0IHBhcmVudCwKLQkJCWJvb2xlYW4gYWRkVXBUb0xldmVsM09ubHkpIHsKLQkJc3AuYWRkUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcih0aGlzKTsKLQkJYWRkU3RhdGVMaXN0ZW5lciggc3AgKTsKLQkJaWYgKGFkZFVwVG9MZXZlbDNPbmx5ICYmIGlzNHRoTGV2ZWxPckhpZ2hlclBvbGljeShzcCkgKQotCQkJLy8gZG9uJ3QgYWRkIDR0aCBsZXZlbCBhbmQgaGlnaGVyIGJyYW5jaGVzLCB0aGVzZSBhcmUgYWRkZWQgb24gZGVtYW5kCi0JCQkvLyB0byBhIGRpZmZlcmVudCB0cmVlCi0JCQlyZXR1cm47Ci0JCVRyZWVJdGVtIHRpOwotCQlpZiAocGFyZW50IGluc3RhbmNlb2YgVHJlZUl0ZW0pCi0JCQl0aSA9IG5ldyBUcmVlSXRlbSgoVHJlZUl0ZW0pIHBhcmVudCwgU1dULk5PTkUpOwotCQllbHNlCi0JCQl0aSA9IG5ldyBUcmVlSXRlbSgoVHJlZSkgcGFyZW50LCBTV1QuTk9ORSk7Ci0JCXRpLnNldFRleHQoc3AuZ2V0RGVzY3JpcHRvcigpLmdldExvbmdOYW1lKCkpOwotCQl0aS5zZXREYXRhKHNwKTsKLQotCQlzZXRJbWFnZSh0aSwgc3AsIGdldEljb25PdmVybGF5SW5mbyhzcCwgZmFsc2UpKTsKLQkJTGlzdDxJU2VydmljZVBvbGljeT4gY2hpbGRyZW5Qb2xpY3lMaXN0ID0gc3AuZ2V0Q2hpbGRyZW4oKTsKLQkJCi0JCWNoaWxkcmVuUG9saWN5TGlzdCA9IFNlcnZpY2VVdGlscy5zb3J0TGlzdCggY2hpbGRyZW5Qb2xpY3lMaXN0ICk7Ci0JCQotCQlmb3IgKElTZXJ2aWNlUG9saWN5IHBvbGljeSA6IGNoaWxkcmVuUG9saWN5TGlzdCkgewotCQkJYWRkUG9saWN5KHBvbGljeSwgdGksIGFkZFVwVG9MZXZlbDNPbmx5KTsKLQkJfQotCi0JfQotCi0JLyoqCi0JICogUmV0dXJucyBpY29uIG92ZXJsYXkgaW5mb3JtYXRpb24KLQkgKiBAcGFyYW0gc3AgdGhlIHNlcnZpY2UgcG9saWN5IHRoYXQgc2hvdWxkIGhhdmUgc29tZSBvdmVybGF5IGltYWdlcyBhc3NvY2lhdGVkIHdpdGggaXQKLQkgKiBAcGFyYW0gaW52YWxpZCB0cnVlIGlmIHRoZSBzZXJ2aWNlIHBvbGljeSBpcyB2YWxpZAotCSAqIEByZXR1cm4gU3RyaW5nW10gY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IG92ZXJsYXlzIHRvIGFwcGx5IHRvIHRoZSBpY29uIHRoYXQKLQkgKiBpcyBhc3NvY2lhdGVkIHdpdGggc3AKLQkgKi8KLQlwcml2YXRlIFN0cmluZ1tdIGdldEljb25PdmVybGF5SW5mbyhJU2VydmljZVBvbGljeSBzcCwgYm9vbGVhbiBpbnZhbGlkKSB7Ci0JCVN0cmluZ1tdIG92ZXJMYXlzID0gbmV3IFN0cmluZ1s0XTsKLQkJCQkKLQkJSVBvbGljeVN0YXRlIHBvbFN0YXRlID0gKHByb2plY3QgPT0gbnVsbCkgPyBzcC5nZXRQb2xpY3lTdGF0ZSgpIDogc3AKLQkJCQkuZ2V0UG9saWN5U3RhdGUocHJvamVjdCk7Ci0JCUlQb2xpY3lTdGF0ZUVudW0gcG9sRW51bSA9IChwcm9qZWN0ID09IG51bGwpID8gc3AuZ2V0UG9saWN5U3RhdGVFbnVtKCkKLQkJCQk6IHNwLmdldFBvbGljeVN0YXRlRW51bShwcm9qZWN0KTsKLQkJaWYgKCFwb2xTdGF0ZS5pc011dGFibGUoKSkKLQkJCW92ZXJMYXlzWzBdID0gaWNvbk1hbmFnZXIubG9jazsKLQkJaWYgKChzcC5nZXRTdGF0dXMoKSAhPSBudWxsICYmIHNwLmdldFN0YXR1cygpLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5FUlJPUikgfHwgaW52YWxpZCkKLQkJCW92ZXJMYXlzWzFdID0gaWNvbk1hbmFnZXIuaW52YWxpZDsKLQkJaWYgKChzcC5nZXRTdGF0dXMoKSAhPSBudWxsICYmIHNwLmdldFN0YXR1cygpLmdldFNldmVyaXR5KCkgPT0gSVN0YXR1cy5XQVJOSU5HKSkKLQkJCW92ZXJMYXlzWzJdID0gaWNvbk1hbmFnZXIud2FybmluZzsKLQkJaWYgKHBvbEVudW0gIT0gbnVsbCkgewotCQkJaWYgKHBvbEVudW0uZ2V0RW51bUlkKCkuZXF1YWxzKAotCQkJCQkib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmJvb2xlYW5FbnVtIikpIHsgLy8kTk9OLU5MUy0xJAotCQkJCWlmIChwb2xpY3lIYXNJY29uU2VsZWN0aW9uT3BlcmF0aW9uU2VsZWN0ZWQoc3ApKQotCQkJCQlvdmVyTGF5c1szXSA9IGljb25NYW5hZ2VyLmZhdm9yaXRlOwotCQkJfQotCQkJCQotCQl9Ci0JCXJldHVybiBvdmVyTGF5czsKLQl9Ci0KLQkvKioKLQkgKiBAcGFyYW0gc3AKLQkgKi8KLQlwcml2YXRlIGJvb2xlYW4gcG9saWN5SGFzSWNvblNlbGVjdGlvbk9wZXJhdGlvblNlbGVjdGVkKElTZXJ2aWNlUG9saWN5IHNwKSB7Ci0JCWJvb2xlYW4gaWNvblNlbGVjdGlvbk9wZXJhdGlvblNlbGVjdGVkID0gZmFsc2U7Ci0JCUxpc3Q8SVBvbGljeU9wZXJhdGlvbj4gb3BlcmF0aW9uTGlzdCA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9ucyhzcCwgcHJvamVjdCA9PSBudWxsKTsKLQkJZm9yIChJUG9saWN5T3BlcmF0aW9uIG9wZXJhdGlvbkl0ZW0gOiBvcGVyYXRpb25MaXN0KSB7Ci0JCQlpZiAob3BlcmF0aW9uSXRlbS5nZXRPcGVyYXRpb25LaW5kKCkuZXF1YWxzKE9wZXJhdGlvbktpbmQuaWNvblNlbGVjdGlvbikpIHsKLQkJCQlTdHJpbmcgc3RhdGVJRCA9IG9wZXJhdGlvbkl0ZW0uZ2V0U3RhdGVJdGVtKHByb2plY3QpOwotCQkJCWlmIChzdGF0ZUlELmVxdWFscygib3JnLmVjbGlwc2Uud3N0LnRydWUiKSkgIC8vJE5PTi1OTFMtMSQKLQkJCQkJcmV0dXJuIHRydWU7Ci0JCQl9Ci0JCQkKLQkJfQotCQlyZXR1cm4gaWNvblNlbGVjdGlvbk9wZXJhdGlvblNlbGVjdGVkOwotCX0KLQotCS8qKgotCSAqIERvZXMgYW55dGhpbmcgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIGRlZmF1bHQgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0JICovCi0JcHVibGljIHZvaWQgcGVyZm9ybURlZmF1bHRzKCkgewotCQlpbml0aWFsaXplRGVmYXVsdHMoKTsKLQkJTGlzdDxJU2VydmljZVBvbGljeT4gcG9saWN5TGlzdCA9IHBsYXRmb3JtLmdldFJvb3RTZXJ2aWNlUG9saWNpZXMobnVsbCk7Ci0JCQotCQlwb2xpY3lMaXN0ID0gU2VydmljZVV0aWxzLnNvcnRMaXN0KCBwb2xpY3lMaXN0ICk7Ci0JCW1hc3RlclBvbGljeVRyZWUucmVtb3ZlQWxsKCk7Ci0JCQotCQlmb3IgKElTZXJ2aWNlUG9saWN5IHBvbGljeSA6IHBvbGljeUxpc3QpIHsKLQkJCWFkZFBvbGljeShwb2xpY3ksIG1hc3RlclBvbGljeVRyZWUsIHRydWUpOwotCQl9Ci0JCVRyZWVJdGVtW10gdHJlZUl0ZW1zID0gbWFzdGVyUG9saWN5VHJlZS5nZXRJdGVtcygpOwotCQlpZiAodHJlZUl0ZW1zLmxlbmd0aCA+IDApIHsKLQkJCS8vc2VsZWN0IHRoZSBmaXJzdCBpdGVtIGluIHRoZSB0cmVlICYgZmlyZSBldmVudCBzbyBVSSBpcyB1cGRhdGVkCi0JCQltYXN0ZXJQb2xpY3lUcmVlLnNldFNlbGVjdGlvbih0cmVlSXRlbXNbMF0pOwotCQkJbWFzdGVyUG9saWN5VHJlZS5ub3RpZnlMaXN0ZW5lcnMoU1dULlNlbGVjdGlvbiwgbmV3IEV2ZW50KCkpOwotCQkJZXJyb3IgPSB2YWxpZGF0ZUFsbFBvbGljaWVzKChJU2VydmljZVBvbGljeSl0cmVlSXRlbXNbMF0uZ2V0RGF0YSgpKTsKLQkJfQotCi0JfQotCXByaXZhdGUgY2xhc3MgQ2hpbGRDaGFuZ2VFdmVudCB7Ci0JCXB1YmxpYyBDaGlsZENoYW5nZUV2ZW50KExpc3Q8SVNlcnZpY2VQb2xpY3k+IGNoYW5nZWRDaGlsZHJlbiwgTGlzdDxCb29sZWFuPiBhZGRlZCApIHsKLQkJCXRoaXMuY2hhbmdlZENoaWxkcmVuID0gY2hhbmdlZENoaWxkcmVuOwotCQkJdGhpcy5hZGRlZCA9IGFkZGVkOwotCQkJCi0JCX0KLQkJcHJpdmF0ZSBMaXN0PElTZXJ2aWNlUG9saWN5PiBjaGFuZ2VkQ2hpbGRyZW47Ci0JCXByaXZhdGUgTGlzdDxCb29sZWFuPiBhZGRlZDsKLQkJcHVibGljIExpc3Q8SVNlcnZpY2VQb2xpY3k+IGdldENoYW5nZWRDaGlsZHJlbigpIHsKLQkJCXJldHVybiBjaGFuZ2VkQ2hpbGRyZW47Ci0JCX0KLQkJcHVibGljIHZvaWQgc2V0Q2hhbmdlZENoaWxkcmVuKExpc3Q8SVNlcnZpY2VQb2xpY3k+IGNoYW5nZWRDaGlsZHJlbikgewotCQkJdGhpcy5jaGFuZ2VkQ2hpbGRyZW4gPSBjaGFuZ2VkQ2hpbGRyZW47Ci0JCX0KLQkJcHVibGljIExpc3Q8Qm9vbGVhbj4gZ2V0QWRkZWQoKSB7Ci0JCQlyZXR1cm4gYWRkZWQ7Ci0JCX0KLQkJcHVibGljIHZvaWQgc2V0QWRkZWQoTGlzdDxCb29sZWFuPiBhZGRlZCkgewotCQkJdGhpcy5hZGRlZCA9IGFkZGVkOwotCQl9Ci0JfQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIjY2hpbGRDaGFuZ2UoTGlzdDxvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k+LCBMaXN0PGphdmEubGFuZy5Cb29sZWFuPikKLQkgKi8KLQlwdWJsaWMgdm9pZCBjaGlsZENoYW5nZSggTGlzdDxJU2VydmljZVBvbGljeT4gY2hpbGQsIExpc3Q8Qm9vbGVhbj4gYWRkZWQgKSB7Ci0JCS8vaWdub3JlIGV2ZW50cyB1bmxlc3Mgd2UgYXJlIGluIGEgY29tcGxleCBvcGVyYXRpb24KLQkJaWYgKCFiQ29tcGxleE9wQ29tcGxldGVkKQotCQkJLy9jYWNoZSB0aGUgZXZlbnQgdW50aWwgY29tcGxleCBvcGVyYXRpb24gY29tcGxldGVkCi0JCQlsaXN0Q2hpbGRDaGFuZ2VFdmVudHMuYWRkKG5ldyBDaGlsZENoYW5nZUV2ZW50KGNoaWxkLCBhZGRlZCkpOwotCQkJCi0JfQotCQotCQotCS8qKgotCSAqIEBwYXJhbSBjaGlsZAotCSAqIEBwYXJhbSBhZGRlZAotCSAqLwotCXByaXZhdGUgdm9pZCBwcm9jZXNzQ2hpbGRDaGFuZ2VFdmVudChDaGlsZENoYW5nZUV2ZW50IGNjZSwKLQkJCUhhc2h0YWJsZTxTdHJpbmcsIElTZXJ2aWNlUG9saWN5PiBodFRvcExldmVsQWRkdGlvbnMpIHsKLQkJTGlzdDxJU2VydmljZVBvbGljeT4gY2hhbmdlZFNlcnZpY2VQb2xpY3lMaXN0ID0gY2NlLmdldENoYW5nZWRDaGlsZHJlbigpOwotCQlMaXN0PEJvb2xlYW4+IGNoYW5nZWRTZXJ2aWNlUG9saWN5QWRkZWRMaXN0ID0gY2NlLmdldEFkZGVkKCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgY2hhbmdlZFNlcnZpY2VQb2xpY3lMaXN0LnNpemUoKTsgaSsrKSB7Ci0JCQlJU2VydmljZVBvbGljeSBuZXh0Q2hhbmdlZFNlcnZpY2VQb2xpY3kgPSBjaGFuZ2VkU2VydmljZVBvbGljeUxpc3QuZ2V0KGkpOwotCQkJYm9vbGVhbiBhZGRlZCA9IGNoYW5nZWRTZXJ2aWNlUG9saWN5QWRkZWRMaXN0LmdldChpKTsKLQkJCWlmICghYWRkZWQpIHsKLQkJCQkvL2RlbGV0ZSBub2RlCi0JCQkJcHJvY2Vzc0NoaWxkQ2hhbmdlRXZlbnRSZW1vdmVTZXJ2aWNlUG9saWN5KG5leHRDaGFuZ2VkU2VydmljZVBvbGljeSk7Ci0JCQl9IGVsc2UgewotCQkJCS8vYW4gYWRkaXRpb24sIG9ubHkgcHJvY2VzcyB0b3AgbGV2ZWwgYWRkaXRpb25zIGFzIHRoaXMgaXMgYSByZWN1cnNpdmUgb3BlcmF0aW9uIChhZGRzIGNoaWxkcmVuIHRvbykKLQkJCQlpZiAoaHRUb3BMZXZlbEFkZHRpb25zLmNvbnRhaW5zS2V5KG5leHRDaGFuZ2VkU2VydmljZVBvbGljeS5nZXRJZCgpKSkgewotCQkJCQlwcm9jZXNzQ2hpbGRDaGFuZ2VFdmVudEFkZFNlcnZpY2VQb2xpY3kobmV4dENoYW5nZWRTZXJ2aWNlUG9saWN5KTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkKLQkvKioKLQkgKiBAcGFyYW0gbmV4dENoYW5nZWRTZXJ2aWNlUG9saWN5Ci0JICovCi0JcHJpdmF0ZSB2b2lkIHByb2Nlc3NDaGlsZENoYW5nZUV2ZW50UmVtb3ZlU2VydmljZVBvbGljeShJU2VydmljZVBvbGljeSBuZXh0Q2hhbmdlZFNlcnZpY2VQb2xpY3kpIHsKLQkJYm9vbGVhbiBpczR0aExldmVsT3JIaWdoZXIgPSBpczR0aExldmVsT3JIaWdoZXJQb2xpY3kobmV4dENoYW5nZWRTZXJ2aWNlUG9saWN5KTsKLQkJCi0JCXJlbW92ZVN0YXRlTGlzdGVuZXIoIG5leHRDaGFuZ2VkU2VydmljZVBvbGljeSApOwotCQkKLQkJaWYgKGlzNHRoTGV2ZWxPckhpZ2hlcikgewotCQkJaWYgKGRldGFpbHNQb2xpY3lUcmVlLmlzVmlzaWJsZSgpKSB7Ci0JCQkJVHJlZUl0ZW1bXSBjaGlsZHJlbiA9IGRldGFpbHNQb2xpY3lUcmVlLmdldEl0ZW1zKCk7Ci0JCQkJVHJlZUl0ZW0gZm91bmQgPSBudWxsOwotCQkJCWZvciAoaW50IGk9MDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0JCQkJCSBmb3VuZCA9IGZpbmRQb2xpY3kobmV4dENoYW5nZWRTZXJ2aWNlUG9saWN5LCBjaGlsZHJlbltpXSk7CQotCQkJCQkgaWYgKGZvdW5kICE9IG51bGwpCi0JCQkJCQkgYnJlYWs7Ci0JCQkJfQotCQkJCWlmIChmb3VuZCAhPSBudWxsICYmICFmb3VuZC5pc0Rpc3Bvc2VkKCkpIHsKLQkJCQkJcHJvY2Vzc0NoaWxkQ2hhbmdlRXZlbnREZWxldGVUcmVlSXRlbShmb3VuZCk7Ci0JCQkJfQotCQkJfQotCQl9IGVsc2UgewotCQkJVHJlZUl0ZW1bXSBjaGlsZHJlbiA9IG1hc3RlclBvbGljeVRyZWUuZ2V0SXRlbXMoKTsKLQkJCVRyZWVJdGVtIGZvdW5kID0gbnVsbDsKLQkJCWZvciAoaW50IGk9MDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0JCQkJIGZvdW5kID0gZmluZFBvbGljeShuZXh0Q2hhbmdlZFNlcnZpY2VQb2xpY3ksIGNoaWxkcmVuW2ldKTsJCi0JCQkJIGlmIChmb3VuZCAhPSBudWxsKQotCQkJCQkgYnJlYWs7Ci0JCQl9Ci0JCQlpZiAoZm91bmQgIT0gbnVsbCAmJiAhZm91bmQuaXNEaXNwb3NlZCgpKSB7Ci0JCQkJcHJvY2Vzc0NoaWxkQ2hhbmdlRXZlbnREZWxldGVUcmVlSXRlbShmb3VuZCk7Ci0JCQkJCi0JCQl9Ci0KLQkJCQotCQkJCi0JCX0KLQkJCi0JfQotCi0JLyoqCi0JICogRGVsZXRlIHRoZSBpdGVtLCBhbmQgY2hvb3NlIHNldCBhIG5ldyBzZWxlY3Rpb24gYXMgYXBwcm9wcmlhdGUgZnJvbSBvbmUgb2YgdGhlIHBvbGljeSB0cmVlcyAKLQkgKiBAcGFyYW0gZGVsZXRlSXRlbQotCSAqLwotCXByaXZhdGUgdm9pZCBwcm9jZXNzQ2hpbGRDaGFuZ2VFdmVudERlbGV0ZVRyZWVJdGVtKFRyZWVJdGVtIGRlbGV0ZUl0ZW0pIHsKLQkJVHJlZSBwYXJlbnRUcmVlID0gZGVsZXRlSXRlbS5nZXRQYXJlbnQoKTsKLQkJVHJlZSBzZWxlY3Rpb25UcmVlID0gcGFyZW50VHJlZTsKLQkJVHJlZUl0ZW0gcGFyZW50VHJlZUl0ZW0gPSBkZWxldGVJdGVtLmdldFBhcmVudEl0ZW0oKTsKLQkJLy9pbmRleCBvZiBmb3VuZCBpbiB0aGUgdHJlZQotCQlpbnQgaWR4ID0gKHBhcmVudFRyZWVJdGVtID09IG51bGwpID8gcGFyZW50VHJlZS5pbmRleE9mKGRlbGV0ZUl0ZW0pIDogcGFyZW50VHJlZUl0ZW0uaW5kZXhPZihkZWxldGVJdGVtKTsKLQkJLy9pcyBpbmRleCB0aGUgbGFzdCBpbmRleCBpbiB0aGUgdHJlZQotCQlib29sZWFuIGlzTGFzdEluZGV4ID0gKHBhcmVudFRyZWVJdGVtID09IG51bGwpID8gcGFyZW50VHJlZS5pbmRleE9mKGRlbGV0ZUl0ZW0pID09IHBhcmVudFRyZWUuZ2V0SXRlbUNvdW50KCkgLTEgOiBwYXJlbnRUcmVlSXRlbS5pbmRleE9mKGRlbGV0ZUl0ZW0pID09IHBhcmVudFRyZWVJdGVtLmdldEl0ZW1Db3VudCgpIC0xOwotCQkvL251bWJlciBvZiBzaWJsaW5ncwotCQlpbnQgc2libGluZ3NDb3VudCA9IChwYXJlbnRUcmVlSXRlbSA9PSBudWxsKSA/IHBhcmVudFRyZWUuZ2V0SXRlbUNvdW50KCkgLTEgOiBwYXJlbnRUcmVlSXRlbS5nZXRJdGVtQ291bnQoKSAtMTsKLQkJYm9vbGVhbiBoYXNQYXJlbnQgPSAocGFyZW50VHJlZUl0ZW0gPT0gbnVsbCkgPyBwYXJlbnRUcmVlLmdldEl0ZW1Db3VudCgpID09IDAgOiBwYXJlbnRUcmVlSXRlbS5nZXRJdGVtQ291bnQoKSA9PSAwOwotCQlkZWxldGVJdGVtLmRpc3Bvc2UoKTsKLQkJcGFyZW50VHJlZS5yZWRyYXcoKTsKLQkJVHJlZUl0ZW0gc2VsZWN0SXRlbSA9IG51bGw7Ci0JCWlmIChzaWJsaW5nc0NvdW50ID09IDApIHsKLQkJCWlmIChoYXNQYXJlbnQpIHsKLQkJCS8vbm8gc2libGluZ3MsIHNlbGVjdCBwYXJlbnQKLQkJCWlmICAocGFyZW50VHJlZUl0ZW0gPT0gbnVsbCkgCi0JCQkJc2VsZWN0SXRlbSA9IHBhcmVudFRyZWUuZ2V0SXRlbSgwKTsKLQkJCWVsc2UgCi0JCQkJc2VsZWN0SXRlbSA9IHBhcmVudFRyZWVJdGVtOwotCQkJfSBlbHNlIHsKLQkJCQlpZiAocGFyZW50VHJlZSA9PSBkZXRhaWxzUG9saWN5VHJlZSkKLQkJCQkJLy9zZWxlY3Qgc29tZXRoaW5nIGZyb20gbWFzdGVyIHRyZWUKLQkJCQkJaWYgKG1hc3RlclBvbGljeVRyZWUuZ2V0SXRlbXMoKS5sZW5ndGggPiAwKSB7Ci0JCQkJCQlzZWxlY3RJdGVtID0gbWFzdGVyUG9saWN5VHJlZS5nZXRJdGVtKDApOwotCQkJCQkJc2VsZWN0aW9uVHJlZSA9IG1hc3RlclBvbGljeVRyZWU7Ci0JCQkJCX0KLQkJCQkKLQkJCX0KLQkJCQotCQl9IGVsc2UgewotCQkJaWYgIChwYXJlbnRUcmVlSXRlbSA9PSBudWxsKSB7Ci0JCQkJaWYgKGlzTGFzdEluZGV4KQotCQkJCQlzZWxlY3RJdGVtID0gcGFyZW50VHJlZS5nZXRJdGVtKGlkeCAtMSk7Ci0JCQkJZWxzZSAKLQkJCQkJc2VsZWN0SXRlbSA9IHBhcmVudFRyZWUuZ2V0SXRlbShpZHgpOwotCQkJfSBlbHNlIHsKLQkJCQlpZiAoaXNMYXN0SW5kZXgpCi0JCQkJCXNlbGVjdEl0ZW0gPSBwYXJlbnRUcmVlSXRlbS5nZXRJdGVtKGlkeCAtMSk7Ci0JCQkJZWxzZSAKLQkJCQkJc2VsZWN0SXRlbSA9IHBhcmVudFRyZWVJdGVtLmdldEl0ZW0oaWR4KTsKLQotCQkJfQotCQl9Ci0JCWlmIChzZWxlY3RJdGVtICE9IG51bGwpIHsKLQkJCXNlbGVjdGlvblRyZWUuc2V0U2VsZWN0aW9uKHNlbGVjdEl0ZW0pOwotCQkJc2VsZWN0aW9uVHJlZS5ub3RpZnlMaXN0ZW5lcnMoU1dULlNlbGVjdGlvbiwgbmV3IEV2ZW50KCkpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIHBvbGljeVRvQWRkCi0JICovCi0JcHJpdmF0ZSB2b2lkIHByb2Nlc3NDaGlsZENoYW5nZUV2ZW50QWRkU2VydmljZVBvbGljeShJU2VydmljZVBvbGljeSBwb2xpY3lUb0FkZCkgewotCQlib29sZWFuIGlzNHRoTGV2ZWxPckhpZ2hlciA9IGlzNHRoTGV2ZWxPckhpZ2hlclBvbGljeShwb2xpY3lUb0FkZCk7Ci0JCUlTZXJ2aWNlUG9saWN5IHBhcmVudCA9IHBvbGljeVRvQWRkLmdldFBhcmVudFBvbGljeSgpOwotCQlpZiAoaXM0dGhMZXZlbE9ySGlnaGVyKSB7Ci0JCQlpZiAoZGV0YWlsc1BvbGljeVRyZWUuaXNWaXNpYmxlKCkpIHsKLQkJCQlUcmVlSXRlbVtdIGNoaWxkcmVuID0gZGV0YWlsc1BvbGljeVRyZWUuZ2V0SXRlbXMoKTsKLQkJCQlUcmVlSXRlbSBmb3VuZCA9IG51bGw7Ci0JCQkJZm9yIChpbnQgaT0wOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKLQkJCQkJIGZvdW5kID0gZmluZFBvbGljeShwYXJlbnQsIGNoaWxkcmVuW2ldKTsJCi0JCQkJCSBpZiAoZm91bmQgIT0gbnVsbCkKLQkJCQkJCSBicmVhazsKLQkJCQl9Ci0JCQkJaWYgKGZvdW5kICE9IG51bGwgJiYgIWZvdW5kLmlzRGlzcG9zZWQoKSkgewotCQkJCQlhZGRQb2xpY3kocG9saWN5VG9BZGQsIGZvdW5kLCBmYWxzZSk7Ci0JCQkJfQotCQkJfQotCQl9IGVsc2UgewotCQkJCS8vbGVzcyB0aGFuIDR0aCBsZXZlbCBwb2xpY3kKLQkJCQlUcmVlSXRlbVtdIGNoaWxkcmVuID0gbWFzdGVyUG9saWN5VHJlZS5nZXRJdGVtcygpOwotCQkJCVRyZWVJdGVtIGZvdW5kID0gbnVsbDsKLQkJCQlmb3IgKGludCBpPTA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgewotCQkJCQkgZm91bmQgPSBmaW5kUG9saWN5KHBhcmVudCwgY2hpbGRyZW5baV0pOwkKLQkJCQkJIGlmIChmb3VuZCAhPSBudWxsKQotCQkJCQkJIGJyZWFrOwotCQkJCX0KLQkJCQlpZiAoZm91bmQgIT0gbnVsbCAmJiAhZm91bmQuaXNEaXNwb3NlZCgpKSB7Ci0JCQkJCWFkZFBvbGljeShwb2xpY3lUb0FkZCwgZm91bmQsIGZhbHNlKTsKLQkJCQkJCi0JCQkJfQotCQl9Ci0JfQotCi0JLyoqCi0JICogRmluZCB0aGUgcG9saWN5IHdpdGhpbiB0aGUgdHJlZSB0aQotCSAqIEBwYXJhbSBwb2xpY3lUb0ZpbmQKLQkgKi8KLQlwcml2YXRlIFRyZWVJdGVtIGZpbmRQb2xpY3koSVNlcnZpY2VQb2xpY3kgcG9saWN5VG9GaW5kLCBUcmVlSXRlbSB0aSkgewotCQlUcmVlSXRlbSB0b1JldHVybiA9IG51bGw7Ci0JCWlmICh0aSA9PSBudWxsIHx8ICEodGkuZ2V0RGF0YSgpIGluc3RhbmNlb2YgSVNlcnZpY2VQb2xpY3kpKQotCQkJcmV0dXJuIHRvUmV0dXJuOwotCQlJU2VydmljZVBvbGljeSBzcCA9IChJU2VydmljZVBvbGljeSl0aS5nZXREYXRhKCk7Ci0JCWlmIChzcC5nZXRJZCgpLmVxdWFscyhwb2xpY3lUb0ZpbmQuZ2V0SWQoKSkpCi0JCQlyZXR1cm4gdGk7Ci0JCWVsc2UgewotCQkJVHJlZUl0ZW1bXSB0aUNoaWxkcmVuID0gdGkuZ2V0SXRlbXMoKTsKLQkJCWZvciAoaW50IGkgPTA7IGkgPCB0aUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0JCQkJdG9SZXR1cm4gPSBmaW5kUG9saWN5KHBvbGljeVRvRmluZCwgdGlDaGlsZHJlbltpXSk7Ci0JCQkJaWYgKHRvUmV0dXJuICE9IG51bGwpCi0JCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JCXJldHVybiB0b1JldHVybjsKLQl9Ci0JLyoqCi0JICogSW5pdGlhbGl6ZXMgc3RhdGVzIG9mIHRoZSBjb250cm9scyB1c2luZyBkZWZhdWx0IHZhbHVlcyBpbiB0aGUgcHJlZmVyZW5jZQotCSAqIHN0b3JlLgotCSAqLwotCXByaXZhdGUgdm9pZCBpbml0aWFsaXplRGVmYXVsdHMoKSB7Ci0JCWlmIChwcm9qZWN0ID09IG51bGwpCi0JCQlwbGF0Zm9ybS5yZXN0b3JlRGVmYXVsdHMoKTsKLQkJZWxzZQotCQkJcGxhdGZvcm0ucmVzdG9yZURlZmF1bHRzKHByb2plY3QpOwotCi0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lciN3aWRnZXRTZWxlY3RlZChvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50KQotCSAqLwotCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJaWYgKGUuZ2V0U291cmNlKCkgPT0gbWFzdGVyUG9saWN5VHJlZSB8fCBlLmdldFNvdXJjZSgpID09IGRldGFpbHNQb2xpY3lUcmVlKSB7Ci0JCQlUcmVlSXRlbVtdIHNlbGVjdGVkSXRlbXM7Ci0JCQlpZiAoZS5nZXRTb3VyY2UoKSA9PSBtYXN0ZXJQb2xpY3lUcmVlKQotCQkJCXNlbGVjdGVkSXRlbXMgPSBtYXN0ZXJQb2xpY3lUcmVlLmdldFNlbGVjdGlvbigpOwotCQkJZWxzZQotCQkJCXNlbGVjdGVkSXRlbXMgPSBkZXRhaWxzUG9saWN5VHJlZS5nZXRTZWxlY3Rpb24oKTsKLQkJCS8vcG9zc2libGUgdGhhdCBhbiBldmVudCBpcyBmaXJlZCBhbmQgbm8gbm9kZXMgc2VsZWN0ZWQKLQkJCWlmICghKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkpCi0JCQkJcmV0dXJuOwotCQkJTGlzdDxJU2VydmljZVBvbGljeT4gc3AgPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PigpOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBzZWxlY3RlZEl0ZW1zLmxlbmd0aDsgaSsrKSB7Ci0JCQkJc3AuYWRkKChJU2VydmljZVBvbGljeSkgc2VsZWN0ZWRJdGVtc1tpXS5nZXREYXRhKCkpOwotCQkJfQotCQkJLy91cGRhdGUgdGhlIGNvbnRleHQgc2Vuc2l0aXZlIGhlbHAKLQkJCXVwZGF0ZUNTSChzcCk7Ci0JCQl1cGRhdGVJbmZvUGFuZWxzKHNwKTsKLQotCQkJaWYgKGUuZ2V0U291cmNlKCkgPT0gbWFzdGVyUG9saWN5VHJlZSkgewotCQkJCS8vIGlmIHNlbGVjdGVkIG5vZGUgaW4gbWFzdGVyIHRyZWUgaXMgM3JkIGxldmVsICYgaGFzCi0JCQkJLy8gY2hpbGRyZW4sIHBvcHVsYXRlIGRldGFpbHMgdHJlZQotCQkJCWlmIChpczNyZExldmVsUG9sSW5NYXN0ZXJUcmVlV2l0aENoaWxkcmVuKHNwKSkgewotCQkJCQlwb3B1bGF0ZURldGFpbHNQb2xpY3lUcmVlKHNwKTsKLQkJCQl9IGVsc2UgewotCQkJCQkvL2lmIGV4cGFuZGFibGUgY29tcG9zaXRlIHdhcyB2aXNpYmxlLCBjb2xsYXBzZSBhbmQgc2V0IGludmlzaWJsZQotCQkJCQlpZiAoZXhjb21wb3NpdGUuZ2V0VmlzaWJsZSgpKSB7Ci0JCQkJCQlleGNvbXBvc2l0ZS5zZXRWaXNpYmxlKGZhbHNlKTsKLQkJCQkJCWV4Y29tcG9zaXRlLnNldEV4cGFuZGVkKGZhbHNlKTsKLQkJCQkJCWV4cGFuZGVkU3RhdGVDaGFuZ2VkKGV4Y29tcG9zaXRlKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJCWFkZEFjdGlvbkJ1dHRvbnMoc3ApOwotCQkJbGFzdFNlbGVjdGVkU3AgPSBzcDsKLQotCQl9IGVsc2UgewotCQkJLy8gYW4gYWN0aW9uIGNvbnRyb2wgZmlyZWQgYSBjaGFuZ2UgZXZlbnQKLQkJCUNvbnRyb2wgYWN0aW9uQ29udHJvbCA9IChDb250cm9sKSBlLmdldFNvdXJjZSgpOwotCQkJT2JqZWN0ICBvbGREYXRhICAgICAgID0gYWN0aW9uQ29udHJvbC5nZXREYXRhKCk7Ci0JCQkKLQkJCXVwZGF0ZVBvbGljeShhY3Rpb25Db250cm9sKTsKLQkJCQotCQkJaWYoIGxhc3RTZWxlY3RlZFNwICE9IG51bGwgKQotCQkJewotCQkJICBhZGRBY3Rpb25CdXR0b25zKGxhc3RTZWxlY3RlZFNwKTsgIAotCQkJfQotCQkJCi0JCQkvL3BvbGljeSB1cGRhdGVzIG1pZ2h0IGRlbGV0ZSBub2RlcyBpbiB0aGUgdHJlZSwgc28gbWFrZSBzdXJlIGFjdGlvbiBjb250cm9sIG5vdCBkaXNwb3NlZAotCQkJSVNlcnZpY2VQb2xpY3kgY2hhbmdlZFNQID0gbnVsbDsKLQkJCWlmICghYWN0aW9uQ29udHJvbC5pc0Rpc3Bvc2VkKCkpCi0JCQkJY2hhbmdlZFNQID0gKChBY3Rpb25Db250cm9sRGF0YSkgYWN0aW9uQ29udHJvbC5nZXREYXRhKCkpCi0JCQkJCS5nZXRTcExpc3QoKS5nZXQoMCk7Ci0JCQllcnJvciA9IHZhbGlkYXRlQWxsUG9saWNpZXMoY2hhbmdlZFNQKTsKLQkJCS8vaW5mb3JtIGxpc3RlbmVycyB0aGF0IGEgY29udHJvbCBoYXMgY2hhbmdlZCwgYXMgY29tcG9zaXRlIG1heSBiZSBpbiBlcnJvciBub3cKLQkJCWxpc3RlbmVyLndpZGdldFNlbGVjdGVkKGUpOwotCQkJCi0JCQlzZXRGb2N1c0Zvckxhc3RDb250cm9sKCBvbGREYXRhICk7Ci0JCX0KLQl9Ci0KLQkvLyBUaGUgVUkgaXMgY29udGludWFsbHkgcmVjcmVhdGluZyB0aGUgYWN0aW9uIGJ1dHRvbnMsIHNvIHRoZSBmb2N1cyBpcwotCS8vIGlzIGxvc3Qgd2hlbiBhbiBhY3Rpb24gYnV0dG9uIGlzIHNlbGVjdGVkLiAgVGhpcyBtZXRob2QgYXR0ZW1wdHMKLQkvLyB0byBmaW5kIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyb2wgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggb3BlcmF0aW9uCi0JLy8gdGhhdCB3YXMgcHJldmlvdXNseSBzZWxlY3RlZC4gIFRoZSBmb2N1cyBpcyB0aGVuIHJlZXN0YWJsaXNoZWQgZm9yIHRoaXMgCi0JLy8gY29udHJvbC4KLQlwcml2YXRlIHZvaWQgc2V0Rm9jdXNGb3JMYXN0Q29udHJvbCggT2JqZWN0IG9sZERhdGEgKQotCXsKLQkgIGlmKCBvbGREYXRhICE9IG51bGwgJiYgb2xkRGF0YSBpbnN0YW5jZW9mIEFjdGlvbkNvbnRyb2xEYXRhICkKLQkgIHsKLQkgICAgQWN0aW9uQ29udHJvbERhdGEgY29udHJvbERhdGEgICAgICAgPSAoQWN0aW9uQ29udHJvbERhdGEpb2xkRGF0YTsKLQkgICAgSVBvbGljeU9wZXJhdGlvbiAgb3BlcmF0aW9uICAgICAgICAgPSBjb250cm9sRGF0YS5nZXRQb0xpc3QoKS5nZXQoMCk7Ci0JICAgIENvbnRyb2xbXSAgICAgICAgIGNvbXBvc2l0ZUNvbnRyb2xzID0gb3BlcmF0aW9uc0NvbXBvc2l0ZS5nZXRDaGlsZHJlbigpOwotIAotCSAgICBmb3IoIENvbnRyb2wgbmV3Q29udHJvbCA6IGNvbXBvc2l0ZUNvbnRyb2xzICkKLQkgICAgewotCSAgICAgIE9iamVjdCBuZXdEYXRhID0gbmV3Q29udHJvbC5nZXREYXRhKCk7Ci0JICAgICAgCi0JICAgICAgaWYoIG5ld0RhdGEgIT0gbnVsbCAmJiBuZXdEYXRhIGluc3RhbmNlb2YgQWN0aW9uQ29udHJvbERhdGEgKQotCSAgICAgIHsKLQkgICAgICAgIElQb2xpY3lPcGVyYXRpb24gbmV3T3BlcmF0aW9uID0gKChBY3Rpb25Db250cm9sRGF0YSluZXdEYXRhKS5wb0xpc3QuZ2V0KDApOwotCSAgICAgICAgCi0JICAgICAgICBpZiggbmV3T3BlcmF0aW9uID09IG9wZXJhdGlvbiApCi0JICAgICAgICB7Ci0JICAgICAgICAgIG5ld0NvbnRyb2wuc2V0Rm9jdXMoKTsKLQkgICAgICAgICAgYnJlYWs7Ci0JICAgICAgICB9Ci0JICAgICAgfQotCSAgICB9Ci0JICB9Ci0JfQotCQotCS8qKgotCSAqIFBvcHVsYXRlIHRoZSBkZXRhaWxzIHBvbGljeSB0cmVlIHdpdGggc3AgYW5kIHRoZWlyIGNoaWxkcmVuCi0JICogQHBhcmFtIHNwIGEgbGlzdCBvZiB0b3AgbGV2ZWwgZGV0YWlscyB0cmVlIHNlcnZpY2UgcG9saWNpZXMKLQkgKi8KLQlwcml2YXRlIHZvaWQgcG9wdWxhdGVEZXRhaWxzUG9saWN5VHJlZShMaXN0PElTZXJ2aWNlUG9saWN5PiBzcCkgewotCQlMaXN0PElTZXJ2aWNlUG9saWN5PiBjaGlsZHBvbGljeUxpc3QgPSBzcC5nZXQoMCkKLQkJCQkuZ2V0Q2hpbGRyZW4oKTsKLQkJZGV0YWlsc1BvbGljeVRyZWUucmVtb3ZlQWxsKCk7Ci0JCWZvciAoSVNlcnZpY2VQb2xpY3kgcG9saWN5IDogY2hpbGRwb2xpY3lMaXN0KSB7Ci0JCQlhZGRQb2xpY3kocG9saWN5LCBkZXRhaWxzUG9saWN5VHJlZSwgZmFsc2UpOwotCQl9Ci0JCS8vIHVwZGF0ZSBkZXRhaWxzIHByZWZlcmVuY2UgdHJlZQotCQlUcmVlSXRlbVtdIHRyZWVJdGVtcyA9IGRldGFpbHNQb2xpY3lUcmVlLmdldEl0ZW1zKCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgdHJlZUl0ZW1zLmxlbmd0aDsgaSsrKSB7Ci0JCQl1cGRhdGVWYWxpZFN0YXRlcyh0cmVlSXRlbXNbaV0sIHRydWUpOwotCQl9Ci0KLQkJZXhjb21wb3NpdGUuc2V0VmlzaWJsZSh0cnVlKTsKLQkJZXhjb21wb3NpdGUuc2V0VGV4dChzcC5nZXQoMCkuZ2V0RGVzY3JpcHRvcigpLmdldExvbmdOYW1lKCkKLQkJCQkrICIgKCIgKyBXc3RTUFVJUGx1Z2luTWVzc2FnZXMuVEVYVF9ERVRBSUxTICsgIikiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0JCS8vIHRleHQgaGFzIGNoYW5nZWQsIHNvIG5lZWQgdG8gZm9yY2UgbGF5b3V0IHNvIHVwZGF0ZWQKLQkJZXhjb21wb3NpdGUubGF5b3V0KCk7Ci0JfQotCi0JLyoqCi0JICogVXBkYXRlcyB0aGUgZGV0YWlscyBhbmQgZGVwZW5kZW5jaWVzIHBhbmVscyBmb3IgdGhlIGZpcnN0IHNlcnZpY2UKLQkgKiBwb2xpY3kgaW4gc3BMaXN0Ci0JICogQHBhcmFtIHNwTGlzdCBhIGxpc3Qgb2Ygc2VsZWN0ZWQgc2VydmljZSBwb2xpY2llcwotCSAqLwotCXByaXZhdGUgdm9pZCB1cGRhdGVJbmZvUGFuZWxzKExpc3Q8SVNlcnZpY2VQb2xpY3k+IHNwTGlzdCkgewotCQlTdHJpbmcgZGVzYyA9IChzcExpc3QuZ2V0KDApID09IG51bGwKLQkJCQl8fCBzcExpc3QuZ2V0KDApLmdldERlc2NyaXB0b3IoKSA9PSBudWxsIHx8IHNwTGlzdC5nZXQoMCkKLQkJCQkuZ2V0RGVzY3JpcHRvcigpLmdldERlc2NyaXB0aW9uKCkgPT0gbnVsbCkgPyAiIiA6IHNwTGlzdC5nZXQoMCkgLy8kTk9OLU5MUy0xJAotCQkJCS5nZXREZXNjcmlwdG9yKCkuZ2V0RGVzY3JpcHRpb24oKTsKLQkJdGV4dF9EZXRhaWxzUGFuZWxfZGVzY3JpcHRpb24uc2V0VGV4dChkZXNjKTsKLQkJdGV4dF9EZXRhaWxzUGFuZWxfZGVwZW5kZW5jaWVzLnNldFRleHQoZ2V0RGVwZW5kYW5jaWVzVGV4dChzcExpc3QKLQkJCQkuZ2V0KDApKSk7Ci0JfQotCi0JLyoqCi0JICogVXBkYXRlcyB0aGUgY29udGV4dCBzZW5zaXRpdmUgaGVscCBmb3IgdGhlIGNvbXBvc2l0ZSB3aXRoIAotCSAqIHRoYXQgZGVmaW5lZCBmb3IgdGhlIGZpcnN0IHBvbGljeSBpbiBzcExpc3QgKG9yIGEgcGFyZW50IG9mIAotCSAqIGZpcnN0IHBvbGljeSBpbiBzcExpc3QgcG9saWN5IGRvZXMgbm90IGRlZmluZSBhbnkgQ1NIKQotCSAqIEBwYXJhbSBzcExpc3QgdGhlIGxpc3Qgb2Ygc2VsZWN0ZWQgc2VydmljZSBwb2xpY2llcwotCSAqLwotCXByaXZhdGUgdm9pZCB1cGRhdGVDU0goTGlzdDxJU2VydmljZVBvbGljeT4gc3BMaXN0KSB7Ci0JCVN0cmluZyBDU0hfSUQgPSAoc3BMaXN0LmdldCgwKSA9PSBudWxsIHx8IHNwTGlzdC5nZXQoMCkuZ2V0RGVzY3JpcHRvcigpID09IG51bGwpID8gbnVsbAotCQkJCTogc3BMaXN0LmdldCgwKS5nZXREZXNjcmlwdG9yKCkuZ2V0Q29udGV4dEhlbHBJZCgpOwotCQlJU2VydmljZVBvbGljeSBwYXJlbnRTUCA9IHNwTGlzdC5nZXQoMCk7Ci0JCXdoaWxlICgoQ1NIX0lEID09IG51bGwgfHwgQ1NIX0lELmxlbmd0aCgpID09IDApKSB7Ci0JCQlwYXJlbnRTUCA9IHBhcmVudFNQLmdldFBhcmVudFBvbGljeSgpOwotCQkJaWYgKHBhcmVudFNQID09IG51bGwpCi0JCQkJYnJlYWs7Ci0JCQlDU0hfSUQgPSAocGFyZW50U1AuZ2V0RGVzY3JpcHRvcigpID09IG51bGwpID8gbnVsbCA6IHBhcmVudFNQCi0JCQkJCS5nZXREZXNjcmlwdG9yKCkuZ2V0Q29udGV4dEhlbHBJZCgpOwotCQl9Ci0JCWlmIChDU0hfSUQgPT0gbnVsbCkKLQkJCUNTSF9JRCA9IElORk9QT1BfU1BQUF9QQUdFOwotCQloZWxwU3lzdGVtLnNldEhlbHAodGhpcywgQ1NIX0lEKTsKLQl9Ci0KLQkvKioKLQkgKiBWYWxpZGF0ZXMgYWxsIFNlcnZpY2UgUG9saWNpZXMgaW4gdGhlIG1vZGVsCi0JICogCi0JICogQHBhcmFtIElTZXJ2aWNlUG9saWN5Ci0JICogICAgICAgICAgICB0aGUgZm9jdXMgcG9saWN5LCBpLmUuIG9uZSB0aGF0IGNoYW5nZWQgc3RhdGUKLQkgKiBAcmV0dXJuIElTdGF0dXMgbnVsbCBpZiBubyBTZXJ2aWNlIHBvbGljaWVzIGluIGVycm9yLCBvdGhlcndpc2UgYSBTZXJ2aWNlCi0JICogICAgICAgICBQb2xpY3kgZXJyb3IgKHRoZSBmb2N1Y1BvbGljeSBlcnJvciBpZiBpdCBpcyBpbiBlcnJvcikuCi0JICogICAgICAgICBQb3N0Y29uZGl0aW9uLSB0aGUgZXJyb3IgcHJvcGVydHkgaXMgdXBkYXRlZC4KLQkgKi8KLQlwcml2YXRlIElTdGF0dXMgdmFsaWRhdGVBbGxQb2xpY2llcyhJU2VydmljZVBvbGljeSBmb2N1c1BvbGljeSkgewotCQkvLyByZW1vdmUgYWxsIGVycm9ycyBhcyBnb2luZyB0byByZS12YWxpZGF0ZQotCQlhbGxFcnJvcnMuY2xlYXIoKTsKLQkJLy8gcmUtdmFsaWRhdGUgYWxsIHBvbGljaWVzIGluIG1vZGVsCi0JCUxpc3Q8SVNlcnZpY2VQb2xpY3k+IHNlcnZpY2VQb2xpY3lMaXN0ID0gcGxhdGZvcm0KLQkJCQkuZ2V0Um9vdFNlcnZpY2VQb2xpY2llcyhudWxsKTsKLQkJZm9yIChJU2VydmljZVBvbGljeSBzZXJ2aWNlUG9saWN5SXRlbSA6IHNlcnZpY2VQb2xpY3lMaXN0KSB7Ci0JCQl2YWxpZGF0ZVBvbGljeShzZXJ2aWNlUG9saWN5SXRlbSk7Ci0JCX0KLQkJLy8gZ2V0IHRoZSBlcnJvciBmb3IgdGhlIHNlbGVjdGVkL2ZvY3VzUG9saWN5Ci0JCUlTdGF0dXMgZXJyb3IgPSAoZm9jdXNQb2xpY3kgPT0gbnVsbCkgPyBudWxsIDogYWxsRXJyb3JzCi0JCQkJLmdldChmb2N1c1BvbGljeS5nZXRJZCgpKTsKLQkJLy9pZiB0aGVyZSB3YXMgbm8gZXJyb3IgZm9yIHRoZSBzZWxlY3RlZC9mb2N1c1BvbGljeSwgZ2V0IHRoZSBmaXJzdCBlcnJvciBpbiB0aGUgbGlzdCBvZiBlcnJvcnMKLQkJaWYgKGVycm9yID09IG51bGwpCi0JCQlpZiAoIWFsbEVycm9ycy5pc0VtcHR5KCkpCi0JCQkJZXJyb3IgPSBhbGxFcnJvcnMuZ2V0KGFsbEVycm9ycy5rZXlzKCkubmV4dEVsZW1lbnQoKSk7Ci0KLQkJLy8gdXBkYXRlIG1hc3RlciBwb2xpY3kgdHJlZSBub2RlcyBkZW5vdGluZyBub2RlIGVycm9yIHN0YXR1cwotCQlUcmVlSXRlbVtdIHRyZWVJdGVtcyA9IG1hc3RlclBvbGljeVRyZWUuZ2V0SXRlbXMoKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCB0cmVlSXRlbXMubGVuZ3RoOyBpKyspIHsKLQkJCXVwZGF0ZVZhbGlkU3RhdGVzKHRyZWVJdGVtc1tpXSwgZmFsc2UpOwotCQl9Ci0JCWlmIChkZXRhaWxzUG9saWN5VHJlZS5pc1Zpc2libGUoKSkgewotCQkJLy8gdXBkYXRlIGRldGFpbHMgcHJlZmVyZW5jZSB0cmVlIG5vZGVzIGRlbm90aW5nIG5vZGUgZXJyb3Igc3RhdHVzCi0JCQl0cmVlSXRlbXMgPSBkZXRhaWxzUG9saWN5VHJlZS5nZXRJdGVtcygpOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB0cmVlSXRlbXMubGVuZ3RoOyBpKyspIHsKLQkJCQl1cGRhdGVWYWxpZFN0YXRlcyh0cmVlSXRlbXNbaV0sIGZhbHNlKTsKLQkJCX0KLQotCQl9Ci0JCXJldHVybiBlcnJvcjsKLQl9Ci0KLQkvKioKLQkgKiBVcGRhdGVzIHRoZSBwb2xpY3kgdHJlZXMgdG8gcmVmbGVjdCB2YWxpZCBvciBpbnZhbGlkIHN0YXRlcywgaW52YWxpZCBzdGF0ZXMgYXJlIAotCSAqIHByb3BhZ2F0ZWQgdXAgdGhyb3VnaCB0aGUgdHJlZSwgYW5kIHVwIHRvIG1hc3RlciB0cmVlIGlmIHVwZGF0ZURldGFpbHNPbmx5IGlzIGZhbHNlCi0JICogQHBhcmFtIHRpIHRoZSBUcmVlSXRlbSB0byB1cGRhdGUsIHVwZGF0ZXMgdGkgYW5kIGFsbCBpdCdzIGNoaWxkcmVuCi0JICogQHBhcmFtIHVwZGF0ZURldGFpbHNPbmx5IGlmIGZhbHNlIHRoZW4gcHJvcGFnYXRlIGludmFsaWQgc3RhdGVzIGludG8KLQkgKiBtYXN0ZXIgdHJlZSAKLQkgKi8KLQlwcml2YXRlIHZvaWQgdXBkYXRlVmFsaWRTdGF0ZXMoVHJlZUl0ZW0gdGksIGJvb2xlYW4gdXBkYXRlRGV0YWlsc09ubHkpIHsKLQkJLy8gYXNzdW1lIHRyZWUgaXRlbSBpcyB2YWxpZCBmb3Igbm93Ci0JCUlTZXJ2aWNlUG9saWN5IHNwID0gKElTZXJ2aWNlUG9saWN5KSB0aS5nZXREYXRhKCk7Ci0JCXNldFZhbGlkUG9saWN5U3RhdGUodGkpOwotCi0JCWlmIChhbGxFcnJvcnMuY29udGFpbnNLZXkoc3AuZ2V0SWQoKSkpCi0JCQlzZXRJbnZhbGlkUG9saWN5U3RhdGUodGksIHVwZGF0ZURldGFpbHNPbmx5KTsKLQkJVHJlZUl0ZW1bXSB0cmVlSXRlbXMgPSB0aS5nZXRJdGVtcygpOwotCQlpZiAodGkuZ2V0SXRlbXMoKS5sZW5ndGggPT0gMCkgewotCQkJaWYgKHNwLmdldENoaWxkcmVuKCkuc2l6ZSgpICE9IDAgJiYgcG9saWN5Q2hpbGRyZW5JbnZhbGlkKHNwKSkKLQkJCQlzZXRJbnZhbGlkUG9saWN5U3RhdGUodGksIHVwZGF0ZURldGFpbHNPbmx5KTsKLQkJfSBlbHNlIHsKLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgdHJlZUl0ZW1zLmxlbmd0aDsgaSsrKSB7Ci0KLQkJCQl1cGRhdGVWYWxpZFN0YXRlcyh0cmVlSXRlbXNbaV0sIHVwZGF0ZURldGFpbHNPbmx5KTsKLQkJCX0KLQkJfQotCi0JfQotCi0JLyoqCi0JICogQ2hlY2tzIHdoZXRoZXIgdGhlIHNwIGhhcyBpbnZhbGlkIGNoaWxkcmVuCi0JICogQHBhcmFtIHNwIHRoZSBzZXJ2aWNlIHBvbGljeSB3aG9zZSBjaGlsZHJlbiBtYXkgYmUgaW52YWxpZAotCSAqIEByZXR1cm4gdHJ1ZSBpZiBzcCBoYXMgYW4gaW52YWxpZCBjaGlsZAotCSAqLwotCXByaXZhdGUgYm9vbGVhbiBwb2xpY3lDaGlsZHJlbkludmFsaWQoSVNlcnZpY2VQb2xpY3kgc3ApIHsKLQkJYm9vbGVhbiB0b1JldHVybiA9IGZhbHNlOwotCQlMaXN0PElTZXJ2aWNlUG9saWN5PiBzZXJ2aWNlUG9saWN5TGlzdCA9IHNwLmdldENoaWxkcmVuKCk7Ci0JCWZvciAoSVNlcnZpY2VQb2xpY3kgc2VydmljZVBvbGljeUl0ZW0gOiBzZXJ2aWNlUG9saWN5TGlzdCkgewotCQkJaWYgKGFsbEVycm9ycy5jb250YWluc0tleShzZXJ2aWNlUG9saWN5SXRlbS5nZXRJZCgpKSkKLQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCWVsc2UKLQkJCQl0b1JldHVybiA9IHBvbGljeUNoaWxkcmVuSW52YWxpZChzZXJ2aWNlUG9saWN5SXRlbSk7Ci0JCX0KLQkJcmV0dXJuIHRvUmV0dXJuOwotCX0KLQotCS8qKgotCSAqIFZhbGlkYXRlcyB0aGUgU2VydmljZSBQb2xpY2llcyBmb3IgdGhlIHNwIGFuZCBhbGwgaXQncyBjaGlsZHJlbiwgY3JlYXRpbmcgCi0JICogZXJyb3Igc3RhdHVzIG9iamVjdHMgZm9yIGFueSB1bnNhdGlzZmllZCByZWxhdGlvbnNoaXBzCi0JICogCi0JICogQHBhcmFtIHNwCi0JICogICAgICAgICAgICB0aGUgc2VydmljZSBwb2xpY3kgdG8gdmFsaWRhdGUKLQkgKi8KLQlwcml2YXRlIHZvaWQgdmFsaWRhdGVQb2xpY3koSVNlcnZpY2VQb2xpY3kgc3ApIHsKLQkJU3RyaW5nIG9wZXJhdGlvbkxvbmdOYW1lOwotCQlTdHJpbmcgb3BlcmF0aW9uU2VsZWN0aW9uTG9uZ05hbWU7Ci0JCVN0cmluZyBkZXBlbmRhbnRQb2xpY3lTaG9ydE5hbWU7Ci0JCUxpc3Q8SVBvbGljeVJlbGF0aW9uc2hpcD4gcmVsYXRpb25TaGlwTGlzdCA9IHNwLmdldFJlbGF0aW9uc2hpcHMoKTsKLQkJU3RyaW5nIGN1cnJlbnRWYWx1ZUlEID0gbnVsbDsKLQkJaWYgKHJlbGF0aW9uU2hpcExpc3QgIT0gbnVsbCAmJiByZWxhdGlvblNoaXBMaXN0LnNpemUoKSA+IDApIHsKLQkJZm9yIChJUG9saWN5UmVsYXRpb25zaGlwIHJlbGF0aW9uU2hpcEl0ZW0gOiByZWxhdGlvblNoaXBMaXN0KSB7Ci0JCQkvL29wZXJhdGlvbnMgZm9yIHRoZSBwb2xpY3kKLQkJCUxpc3Q8SVBvbGljeU9wZXJhdGlvbj4gcG9saWN5T3BlcmF0aW9uc0xpc3QgPSBwbGF0Zm9ybVVJCi0JCQkJCS5nZXRPcGVyYXRpb25zKHJlbGF0aW9uU2hpcEl0ZW0uZ2V0UG9saWN5RW51bWVyYXRpb25MaXN0KCkKLQkJCQkJCQkuZ2V0UG9saWN5KCksIHByb2plY3QgPT0gbnVsbCk7Ci0JCQkvL2RlZmF1bHQgb3BlcmF0aW9uIG5hbWUKLQkJCW9wZXJhdGlvbkxvbmdOYW1lID0gIiI7IC8vJE5PTi1OTFMtMSQKLQkJCWZvciAoSVBvbGljeU9wZXJhdGlvbiBwb2xpY3lPcGVyYXRpb25JdGVtIDogcG9saWN5T3BlcmF0aW9uc0xpc3QpIHsKLQkJCQlpZiAocG9saWN5T3BlcmF0aW9uSXRlbS5pc1VzZURlZmF1bHREYXRhKCkpIHsKLQkJCQkJb3BlcmF0aW9uTG9uZ05hbWUgPSBwb2xpY3lPcGVyYXRpb25JdGVtLmdldERlc2NyaXB0b3IoKQotCQkJCQkJCS5nZXRMb25nTmFtZSgpOwotCQkJCQljdXJyZW50VmFsdWVJRCA9IHBvbGljeU9wZXJhdGlvbkl0ZW0uZ2V0U3RhdGVJdGVtKHByb2plY3QpOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCQkvLyBhIGxpc3Qgb2Ygc3RhdGVzCi0JCQlMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4gc3BTdGF0ZUVudW1lcmF0aW9uTGlzdCA9IHJlbGF0aW9uU2hpcEl0ZW0KLQkJCQkJLmdldFBvbGljeUVudW1lcmF0aW9uTGlzdCgpLmdldEVudW1lcmF0aW9uTGlzdCgpOwotCQkJLy8gYSBsaXN0IG9mIHJlbGF0ZWQgcG9saWNpZXMgYW5kIHRoZWlyIGFjY2VwdGFibGUgc3RhdGVzIHRvIHNhdGlzZnkgYSBzdGF0ZUVudW1lcmF0aW9uSXRlbSBpbiBzcFN0YXRlRW51bWVyYXRpb25MaXN0Ci0JCQlMaXN0PElQb2xpY3lFbnVtZXJhdGlvbkxpc3Q+IHJlbGF0ZWRQb2xpY2llcyA9IHJlbGF0aW9uU2hpcEl0ZW0KLQkJCQkJLmdldFJlbGF0ZWRQb2xpY2llcygpOwotCQkJZm9yIChJU3RhdGVFbnVtZXJhdGlvbkl0ZW0gc3RhdGVFbnVtZXJhdGlvbkl0ZW0gOiBzcFN0YXRlRW51bWVyYXRpb25MaXN0KSB7Ci0JCQkJaWYgKHN0YXRlRW51bWVyYXRpb25JdGVtLmdldElkKCkgIT0gY3VycmVudFZhbHVlSUQpCi0JCQkJCWNvbnRpbnVlOwotCQkJCS8vbG9uZyBuYW1lIG9mIHRoZSByZWxhdGVkIHBvbGljeSBvcGVyYXRpb24KLQkJCQlvcGVyYXRpb25TZWxlY3Rpb25Mb25nTmFtZSA9IHN0YXRlRW51bWVyYXRpb25JdGVtLmdldExvbmdOYW1lKCk7Ci0JCQkJZm9yIChJUG9saWN5RW51bWVyYXRpb25MaXN0IHJlbGF0ZWRQb2xpY3lFbnVtZXJhdGlvbkl0ZW0gOiByZWxhdGVkUG9saWNpZXMpIHsKLQkJCQkJZGVwZW5kYW50UG9saWN5U2hvcnROYW1lID0gcmVsYXRlZFBvbGljeUVudW1lcmF0aW9uSXRlbQotCQkJCQkJCS5nZXRQb2xpY3koKS5nZXREZXNjcmlwdG9yKCkuZ2V0U2hvcnROYW1lKCk7Ci0JCQkJCS8vdGhlIGxpc3Qgb2YgcmVsYXRlZCBzcCBzdGF0ZXMgdGhhdCBzYXRpc2Z5IHRoZSBzdGF0ZUVudW1lcmF0aW9uSXRlbQotCQkJCQlMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4gcmVsYXRlZFNQU3RhdGVFbnVtZXJhdGlvbkxpc3QgPSByZWxhdGVkUG9saWN5RW51bWVyYXRpb25JdGVtCi0JCQkJCQkJLmdldEVudW1lcmF0aW9uTGlzdCgpOwotCQkJCQkvL3RoZSBsaXN0IG9mIHZhbGlkIGlkcyBmb3IgdGhlIHJlbGF0ZWQgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uCi0JCQkJCUxpc3Q8U3RyaW5nPiB2YWxpZElkcyA9IG5ldyBWZWN0b3I8U3RyaW5nPigpOwotCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHJlbGF0ZWRTUFN0YXRlRW51bWVyYXRpb25MaXN0Ci0JCQkJCQkJLnNpemUoKTsgaSsrKSB7Ci0JCQkJCQl2YWxpZElkcwotCQkJCQkJCQkuYWRkKHJlbGF0ZWRTUFN0YXRlRW51bWVyYXRpb25MaXN0Ci0JCQkJCQkJCQkJLmdldChpKS5nZXRJZCgpKTsKLQotCQkJCQl9Ci0JCQkJCS8vZ2V0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSByZWxhdGVkIHNlcnZpY2UgcG9saWN5IGRlZmF1bHQgb3BlcmF0aW9uCi0JCQkJCVN0cmluZyBjdXJyZW50SXRlbUlEID0gIiI7IC8vJE5PTi1OTFMtMSQKLQkJCQkJTGlzdDxJUG9saWN5T3BlcmF0aW9uPiByZWxhdGVkU2VydmljZVBvbGljeVBvbGljeU9wZXJhdGlvbnNMaXN0ID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb25zKHJlbGF0ZWRQb2xpY3lFbnVtZXJhdGlvbkl0ZW0uZ2V0UG9saWN5KCksIHByb2plY3QgPT1udWxsKTsKLQkJCQkJSVBvbGljeU9wZXJhdGlvbiByZWxhdGVkUG9saWN5T3BlcmF0aW9uSXRlbSA9IG51bGw7Ci0JCQkJCWZvciAoSVBvbGljeU9wZXJhdGlvbiByZWxhdGVkU2VydmljZVBvbGljeVBvbGljeU9wZXJhdGlvbkl0ZW0gOiByZWxhdGVkU2VydmljZVBvbGljeVBvbGljeU9wZXJhdGlvbnNMaXN0KSB7Ci0JCQkJCQlpZiAocmVsYXRlZFNlcnZpY2VQb2xpY3lQb2xpY3lPcGVyYXRpb25JdGVtLmlzVXNlRGVmYXVsdERhdGEoKSkgewotCQkJCQkJCWN1cnJlbnRJdGVtSUQgPSByZWxhdGVkU2VydmljZVBvbGljeVBvbGljeU9wZXJhdGlvbkl0ZW0uZ2V0U3RhdGVJdGVtKHByb2plY3QpOwotCQkJCQkJCXJlbGF0ZWRQb2xpY3lPcGVyYXRpb25JdGVtID0gcmVsYXRlZFNlcnZpY2VQb2xpY3lQb2xpY3lPcGVyYXRpb25JdGVtOwotCQkJCQkJCWJyZWFrOwotCQkJCQkJfQotCQkJCQl9Ci0JCQkJCQotCQkJCQlpZiAoIXZhbGlkSWRzCi0JCQkJCQkJLmNvbnRhaW5zKGN1cnJlbnRJdGVtSUQpKSB7Ci0JCQkJCQkvLyBwb2xpY3kgc3RhdGUgaXMgaW52YWxpZAotCQkJCQkJSVN0YXR1cyBlcnJvciA9IGNyZWF0ZVVuc2F0aXNmaWVkUmVsYXRpb25zaGlwRXJyb3Ioc3AsCi0JCQkJCQkJCW9wZXJhdGlvbkxvbmdOYW1lLAotCQkJCQkJCQlvcGVyYXRpb25TZWxlY3Rpb25Mb25nTmFtZSwKLQkJCQkJCQkJZGVwZW5kYW50UG9saWN5U2hvcnROYW1lLAotCQkJCQkJCQlyZWxhdGVkUG9saWN5T3BlcmF0aW9uSXRlbSwKLQkJCQkJCQkJcmVsYXRlZFNQU3RhdGVFbnVtZXJhdGlvbkxpc3QpOwotCQkJCQkJYWxsRXJyb3JzLnB1dChzcC5nZXRJZCgpLCBlcnJvcik7Ci0KLQkJCQkJfQotCi0KLQkJCQl9Ci0KLQkJCX0KLQotCQl9Ci0JCX0KLQotCQlMaXN0PElTZXJ2aWNlUG9saWN5PiBzZXJ2aWNlUG9saWN5Q2hpbGRyZW5MaXN0ID0gc3AuZ2V0Q2hpbGRyZW4oKTsKLQkJZm9yIChJU2VydmljZVBvbGljeSBzZXJ2aWNlUG9saWN5Q2hpbGRyZW5JdGVtIDogc2VydmljZVBvbGljeUNoaWxkcmVuTGlzdCkgewotCQkJdmFsaWRhdGVQb2xpY3koc2VydmljZVBvbGljeUNoaWxkcmVuSXRlbSk7Ci0KLQkJfQotCi0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgaWNvbiBmb3IgdGhlIHRpIGRlbm90aW5nIGl0IGFzIHZhbGlkCi0JICogQHBhcmFtIHRpIGEgdmFsaWQgdHJlZSBpdGVtCi0JICovCi0JcHJpdmF0ZSB2b2lkIHNldFZhbGlkUG9saWN5U3RhdGUoVHJlZUl0ZW0gdGkpIHsKLQkJSVNlcnZpY2VQb2xpY3kgc3AgPSAoSVNlcnZpY2VQb2xpY3kpIHRpLmdldERhdGEoKTsKLQkJc2V0SW1hZ2UodGksIHNwLCBnZXRJY29uT3ZlcmxheUluZm8oc3AsIGZhbHNlKSk7Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgaWNvbiBmb3IgdGkgZGVub3RpbmcgaXQgYXMgaW52YWxpZCwgYXMgd2VsbCBhcyB0aSdzIHBhcmVudCB0cmVlIGl0ZW1zCi0JICogQHBhcmFtIHRpIGFuIGludmFsaWQgdHJlZSBpdGVtCi0JICogQHBhcmFtIHVwZGF0ZURldGFpbHNPbmx5IHRydWUgaW5kaWNhdGVzIGRvIG5vdCB1cGRhdGUgcGFyZW50IHRyZWUgaXRlbXMgb25seSBpbiBtYXN0ZXIgdHJlZQotCSAqLwotCXByaXZhdGUgdm9pZCBzZXRJbnZhbGlkUG9saWN5U3RhdGUoVHJlZUl0ZW0gdGksIGJvb2xlYW4gdXBkYXRlRGV0YWlsc09ubHkpIHsKLQkJSVNlcnZpY2VQb2xpY3kgU1AgPSAoSVNlcnZpY2VQb2xpY3kpIHRpLmdldERhdGEoKTsKLQkJc2V0SW1hZ2UodGksIFNQLCBnZXRJY29uT3ZlcmxheUluZm8oU1AsIHRydWUpKTsKLQkJVHJlZUl0ZW0gcGFyZW50OwotCQlpZiAodGkuZ2V0UGFyZW50KCkgPT0gbWFzdGVyUG9saWN5VHJlZSB8fCB1cGRhdGVEZXRhaWxzT25seSkKLQkJCXBhcmVudCA9IHRpLmdldFBhcmVudEl0ZW0oKTsKLQkJZWxzZQotCQkJcGFyZW50ID0gKHRpLmdldFBhcmVudEl0ZW0oKSA9PSBudWxsICYmIFNQLmdldFBhcmVudFBvbGljeSgpICE9IG51bGwpID8gZ2V0UGFyZW50SW5NYXN0ZXJUcmVlKFNQCi0JCQkJCS5nZXRJZCgpKQotCQkJCQk6IHRpLmdldFBhcmVudEl0ZW0oKTsKLQkJd2hpbGUgKHBhcmVudCAhPSBudWxsKSB7Ci0JCQlzZXRJbWFnZShwYXJlbnQsIChJU2VydmljZVBvbGljeSkgcGFyZW50LmdldERhdGEoKSwKLQkJCQkJZ2V0SWNvbk92ZXJsYXlJbmZvKChJU2VydmljZVBvbGljeSkgcGFyZW50LmdldERhdGEoKSwKLQkJCQkJCQl0cnVlKSk7Ci0JCQlpZiAodXBkYXRlRGV0YWlsc09ubHkpCi0JCQkJcGFyZW50ID0gcGFyZW50LmdldFBhcmVudEl0ZW0oKTsKLQkJCWVsc2UgewotCQkJCXBhcmVudCA9IChwYXJlbnQuZ2V0UGFyZW50SXRlbSgpID09IG51bGwgJiYgKChJU2VydmljZVBvbGljeSkgcGFyZW50Ci0JCQkJCQkuZ2V0RGF0YSgpKS5nZXRQYXJlbnRQb2xpY3koKSAhPSBudWxsKSA/IGdldFBhcmVudEluTWFzdGVyVHJlZSgoKElTZXJ2aWNlUG9saWN5KSBwYXJlbnQKLQkJCQkJCS5nZXREYXRhKCkpLmdldFBhcmVudFBvbGljeSgpLmdldElkKCkpCi0JCQkJCQk6IHBhcmVudC5nZXRQYXJlbnRJdGVtKCk7Ci0JCQl9Ci0KLQkJfQotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gZXJyb3Igc3RhdHVzIG9iamVjdCBmb3IgdGhlIHNwLiBUaGUgZXJyb3IgbWVzc2FnZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCAKLQkgKiBhbiB1bnNhdGlzZmllZCByZWxhdGlvbnNoaXAKLQkgKiBAcGFyYW0gc3AKLQkgKiBAcGFyYW0gb3BlcmF0aW9uTG9uZ05hbWUKLQkgKiBAcGFyYW0gb3BlcmF0aW9uU2VsZWN0aW9uTG9uZ05hbWUKLQkgKiBAcGFyYW0gZGVwZW5kYW50UG9saWN5U2hvcnROYW1lCi0JICogQHBhcmFtIHJlbGF0ZWRPcGVyYXRpb24KLQkgKiBAcGFyYW0gcmVsYXRlZE9wZXJhdGlvbkFjY2VwdGFibGVWYWx1ZXMKLQkgKiBAcmV0dXJuIGFuIEVycm9yIHN0YXR1cwotCSAqLwotCXByaXZhdGUgSVN0YXR1cyBjcmVhdGVVbnNhdGlzZmllZFJlbGF0aW9uc2hpcEVycm9yKElTZXJ2aWNlUG9saWN5IHNwLAotCQkJU3RyaW5nIG9wZXJhdGlvbkxvbmdOYW1lLCBTdHJpbmcgb3BlcmF0aW9uU2VsZWN0aW9uTG9uZ05hbWUsCi0JCQlTdHJpbmcgZGVwZW5kYW50UG9saWN5U2hvcnROYW1lLAotCQkJSVBvbGljeU9wZXJhdGlvbiByZWxhdGVkT3BlcmF0aW9uLAotCQkJTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IHJlbGF0ZWRPcGVyYXRpb25BY2NlcHRhYmxlVmFsdWVzKSB7Ci0JCVN0cmluZyBkZXBlbmRhbnRPcGVyYXRpb25TaG9ydE5hbWU7Ci0JCVN0cmluZyBkZXBlbmRhbnRPcGVyYXRpb25TZWxlY3Rpb25TaG9ydE5hbWVMaXN0OwotCQlkZXBlbmRhbnRPcGVyYXRpb25TaG9ydE5hbWUgPSByZWxhdGVkT3BlcmF0aW9uCi0JCQkJLmdldERlc2NyaXB0b3IoKS5nZXRTaG9ydE5hbWUoKTsKLQkJZGVwZW5kYW50T3BlcmF0aW9uU2VsZWN0aW9uU2hvcnROYW1lTGlzdCA9IG5ldyBTdHJpbmcoKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCByZWxhdGVkT3BlcmF0aW9uQWNjZXB0YWJsZVZhbHVlcy5zaXplKCk7IGkrKykgewotCQkJSVN0YXRlRW51bWVyYXRpb25JdGVtIGl0ZW0gPSByZWxhdGVkT3BlcmF0aW9uQWNjZXB0YWJsZVZhbHVlcy5nZXQoaSk7Ci0JCQlpZiAoaSAhPSAwKQotCQkJCWRlcGVuZGFudE9wZXJhdGlvblNlbGVjdGlvblNob3J0TmFtZUxpc3QgKz0gIiB8ICI7IC8vJE5PTi1OTFMtMSQKLQkJCWRlcGVuZGFudE9wZXJhdGlvblNlbGVjdGlvblNob3J0TmFtZUxpc3QgKz0gaXRlbS5nZXRTaG9ydE5hbWUoKTsKLQotCQl9Ci0JCVN0cmluZ1tdIGFyZ3MgPSB7IHNwLmdldERlc2NyaXB0b3IoKS5nZXRMb25nTmFtZSgpLCBvcGVyYXRpb25Mb25nTmFtZSwKLQkJCQlvcGVyYXRpb25TZWxlY3Rpb25Mb25nTmFtZSwgZGVwZW5kYW50UG9saWN5U2hvcnROYW1lLAotCQkJCWRlcGVuZGFudE9wZXJhdGlvblNob3J0TmFtZSwKLQkJCQlkZXBlbmRhbnRPcGVyYXRpb25TZWxlY3Rpb25TaG9ydE5hbWVMaXN0fTsKLQkJSVN0YXR1cyBlcnJvciA9IG5ldyBTdGF0dXMoU3RhdHVzLkVSUk9SLAotCQkJCVNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5QTFVHSU5fSUQsIE5MUy5iaW5kKAotCQkJCQkJV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLlNFUlZJQ0VQT0xJQ0lFU19ERVBFTkRFTkNZX0VSUk9SLAotCQkJCQkJYXJncykpOwotCQlyZXR1cm4gZXJyb3I7Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIHBhcmVudElEIHRoZSBpZCB0byBmaW5kIGluIHRoZSBtYXN0ZXIgdHJlZQotCSAqIEByZXR1cm4gYSBUcmVlSXRlbSB3aXRoIHRoZSBpZCBpbiB0aGUgbWFzdGVyIHRyZWUKLQkgKi8KLQlwcml2YXRlIFRyZWVJdGVtIGdldFBhcmVudEluTWFzdGVyVHJlZShTdHJpbmcgcGFyZW50SUQpIHsKLQkJVHJlZUl0ZW0gcGFyZW50ID0gbnVsbDsKLQkJVHJlZUl0ZW1bXSByb290Tm9kZXMgPSBtYXN0ZXJQb2xpY3lUcmVlLmdldEl0ZW1zKCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgcm9vdE5vZGVzLmxlbmd0aDsgaSsrKSB7Ci0JCQlwYXJlbnQgPSBmaW5kQ2hpbGROb2RlKHJvb3ROb2Rlc1tpXSwgcGFyZW50SUQpOwotCQkJaWYgKHBhcmVudCAhPSBudWxsKQotCQkJCWJyZWFrOwotCQl9Ci0JCXJldHVybiBwYXJlbnQ7Ci0KLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGEgVHJlZUl0ZW0gYXNzb2NpYXRlZCB3aXRoIGEgY2hpbGQgcG9saWN5IG9mIHRpCi0JICogQHBhcmFtIHRpCi0JICogQHBhcmFtIGlkIHRoZSBwb2xpY3kgaWQgb2YgYSBjaGlsZCBub2RlIG9mIHRpCi0JICogQHJldHVybiBudWxsIGlmIHRoZXJlIGlzIG5vIGNoaWxkIHBvbGljeSBtYXRjaGluZyBpZAotCSAqLwotCXByaXZhdGUgVHJlZUl0ZW0gZmluZENoaWxkTm9kZShUcmVlSXRlbSB0aSwgU3RyaW5nIGlkKSB7Ci0JCVRyZWVJdGVtIHRvUmV0dXJuID0gbnVsbDsKLQkJaWYgKCgoSVNlcnZpY2VQb2xpY3kpIHRpLmdldERhdGEoKSkuZ2V0SWQoKS5lcXVhbHMoaWQpKSB7Ci0JCQl0b1JldHVybiA9IHRpOwotCQl9IGVsc2UgewotCQkJVHJlZUl0ZW1bXSBjaGlsZEl0ZW1zID0gdGkuZ2V0SXRlbXMoKTsKLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRJdGVtcy5sZW5ndGg7IGkrKykgewotCQkJCXRvUmV0dXJuID0gZmluZENoaWxkTm9kZShjaGlsZEl0ZW1zW2ldLCBpZCk7Ci0JCQl9Ci0KLQkJfQotCQlyZXR1cm4gdG9SZXR1cm47Ci0KLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGRlcGVuZGFuY3kgaW5mb3JtYXRpb24gYWJvdXQgc3AsIHRoYXQgaXMgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBpdCdzIHJlbGF0aW9uc2hpcHMgKGlmIGFueSkgd2l0aCBvdGhlciBzZXJ2aWNlIHBvbGljaWVzCi0JICogQHBhcmFtIHNwIHRoZSBzZXJ2aWNlIHBvbGljeSB0byBnZXQgZGVwZW5kZW5jeSBpbmZvIGFib3V0Ci0JICogQHJldHVybgotCSAqLwotCXByaXZhdGUgU3RyaW5nIGdldERlcGVuZGFuY2llc1RleHQoSVNlcnZpY2VQb2xpY3kgc3ApIHsKLQkJLy8gdGhlIHJlbGF0aW9uc2hpcHMgZGVmaW5lZCBmb3IgdGhlIHBvbGljeQotCQlMaXN0PElQb2xpY3lSZWxhdGlvbnNoaXA+IHJlbGF0aW9uU2hpcExpc3QgPSBzcC5nZXRSZWxhdGlvbnNoaXBzKCk7Ci0JCWlmIChyZWxhdGlvblNoaXBMaXN0ID09IG51bGwgfHwgcmVsYXRpb25TaGlwTGlzdC5zaXplKCkgPT0gMCkKLQkJCXJldHVybiBXc3RTUFVJUGx1Z2luTWVzc2FnZXMuU0VSVklDRVBPTElDSUVTX0RFUEVOREVOQ0lFU19OT05FOwotCQlTdHJpbmcgdG9SZXR1cm4gPSBuZXcgU3RyaW5nKCk7Ci0KLQkJU3RyaW5nIG9wZXJhdGlvbkxvbmdOYW1lOwotCQlTdHJpbmcgb3BlcmF0aW9uU2VsZWN0aW9uTG9uZ05hbWU7Ci0JCVN0cmluZyBkZXBlbmRhbnRQb2xpY3lTaG9ydE5hbWU7Ci0JCVN0cmluZyBkZXBlbmRhbnRPcGVyYXRpb25TaG9ydE5hbWU7Ci0JCVN0cmluZyBkZXBlbmRhbnRPcGVyYXRpb25TZWxlY3Rpb25TaG9ydE5hbWVMaXN0OwotCi0JCWZvciAoSVBvbGljeVJlbGF0aW9uc2hpcCByZWxhdGlvblNoaXBJdGVtIDogcmVsYXRpb25TaGlwTGlzdCkgewotCQkJTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBwb2xpY3lPcGVyYXRpb25zTGlzdCA9IHBsYXRmb3JtVUkKLQkJCQkJLmdldE9wZXJhdGlvbnMocmVsYXRpb25TaGlwSXRlbS5nZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3QoKQotCQkJCQkJCS5nZXRQb2xpY3koKSwgcHJvamVjdCA9PSBudWxsKTsKLQkJCW9wZXJhdGlvbkxvbmdOYW1lID0gIiI7IC8vJE5PTi1OTFMtMSQKLQkJCWZvciAoSVBvbGljeU9wZXJhdGlvbiBwb2xpY3lPcGVyYXRpb25JdGVtIDogcG9saWN5T3BlcmF0aW9uc0xpc3QpIHsKLQkJCQlpZiAocG9saWN5T3BlcmF0aW9uSXRlbS5pc1VzZURlZmF1bHREYXRhKCkpIHsKLQkJCQkJb3BlcmF0aW9uTG9uZ05hbWUgPSBwb2xpY3lPcGVyYXRpb25JdGVtLmdldERlc2NyaXB0b3IoKQotCQkJCQkJCS5nZXRMb25nTmFtZSgpOwotCQkJCWJyZWFrOwotCQkJCX0KLQkJCX0KLQkJCS8vIHBvbGljaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVsYXRpb25zaGlwIGl0ZW0KLQkJCUxpc3Q8SVBvbGljeUVudW1lcmF0aW9uTGlzdD4gcmVsYXRlZFBvbGljaWVzID0gcmVsYXRpb25TaGlwSXRlbQotCQkJCQkuZ2V0UmVsYXRlZFBvbGljaWVzKCk7Ci0JCQlMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4gc3BTdGF0ZUVudW1lcmF0aW9uTGlzdCA9IHJlbGF0aW9uU2hpcEl0ZW0KLQkJCQkJLmdldFBvbGljeUVudW1lcmF0aW9uTGlzdCgpLmdldEVudW1lcmF0aW9uTGlzdCgpOwotCQkJZm9yIChJU3RhdGVFbnVtZXJhdGlvbkl0ZW0gc3RhdGVFbnVtZXJhdGlvbkl0ZW0gOiBzcFN0YXRlRW51bWVyYXRpb25MaXN0KSB7Ci0JCQkJb3BlcmF0aW9uU2VsZWN0aW9uTG9uZ05hbWUgPSBzdGF0ZUVudW1lcmF0aW9uSXRlbS5nZXRMb25nTmFtZSgpOwotCQkJCWZvciAoSVBvbGljeUVudW1lcmF0aW9uTGlzdCByZWxhdGVkUG9saWN5RW51bWVyYXRpb25JdGVtIDogcmVsYXRlZFBvbGljaWVzKSB7Ci0JCQkJCWRlcGVuZGFudFBvbGljeVNob3J0TmFtZSA9IHJlbGF0ZWRQb2xpY3lFbnVtZXJhdGlvbkl0ZW0KLQkJCQkJCQkuZ2V0UG9saWN5KCkuZ2V0RGVzY3JpcHRvcigpLmdldFNob3J0TmFtZSgpOwotCQkJCQlMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4gcmVsYXRlZFNQU3RhdGVFbnVtZXJhdGlvbkxpc3QgPSByZWxhdGVkUG9saWN5RW51bWVyYXRpb25JdGVtCi0JCQkJCQkJLmdldEVudW1lcmF0aW9uTGlzdCgpOwotCQkJCQlMaXN0PElQb2xpY3lPcGVyYXRpb24+IHJlbGF0ZWRQb2xpY3lPcGVyYXRpb25zTGlzdCA9IHBsYXRmb3JtVUkKLQkJCQkJCQkuZ2V0T3BlcmF0aW9ucyhyZWxhdGVkUG9saWN5RW51bWVyYXRpb25JdGVtCi0JCQkJCQkJCQkuZ2V0UG9saWN5KCksIChwcm9qZWN0ID09IG51bGwpKTsKLQkJCQkJZGVwZW5kYW50T3BlcmF0aW9uU2hvcnROYW1lID0gIiI7IC8vJE5PTi1OTFMtMSQKLQkJCQkJZm9yIChJUG9saWN5T3BlcmF0aW9uIHJlbGF0ZWRQb2xpY3lPcGVyYXRpb25JdGVtIDogcmVsYXRlZFBvbGljeU9wZXJhdGlvbnNMaXN0KSB7Ci0JCQkJCQlpZiAocmVsYXRlZFBvbGljeU9wZXJhdGlvbkl0ZW0uaXNVc2VEZWZhdWx0RGF0YSgpKQotCQkJCQkJCWRlcGVuZGFudE9wZXJhdGlvblNob3J0TmFtZSA9IHJlbGF0ZWRQb2xpY3lPcGVyYXRpb25JdGVtCi0JCQkJCQkJCQkuZ2V0RGVzY3JpcHRvcigpLmdldFNob3J0TmFtZSgpOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQotCQkJCQlkZXBlbmRhbnRPcGVyYXRpb25TZWxlY3Rpb25TaG9ydE5hbWVMaXN0ID0gbmV3IFN0cmluZygpOwotCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHJlbGF0ZWRTUFN0YXRlRW51bWVyYXRpb25MaXN0LnNpemUoKTsgaSsrKSB7Ci0JCQkJCQlJU3RhdGVFbnVtZXJhdGlvbkl0ZW0gaXRlbSA9IHJlbGF0ZWRTUFN0YXRlRW51bWVyYXRpb25MaXN0Ci0JCQkJCQkJCS5nZXQoaSk7Ci0JCQkJCQlpZiAoaSAhPSAwKQotCQkJCQkJCWRlcGVuZGFudE9wZXJhdGlvblNlbGVjdGlvblNob3J0TmFtZUxpc3QgKz0gIiB8ICI7IC8vJE5PTi1OTFMtMSQKLQkJCQkJCWRlcGVuZGFudE9wZXJhdGlvblNlbGVjdGlvblNob3J0TmFtZUxpc3QgKz0gaXRlbQotCQkJCQkJCQkuZ2V0U2hvcnROYW1lKCk7Ci0KLQkJCQkJfQotCQkJCQlTdHJpbmdbXSBhcmdzID0geyBvcGVyYXRpb25Mb25nTmFtZSwKLQkJCQkJCQlvcGVyYXRpb25TZWxlY3Rpb25Mb25nTmFtZSwKLQkJCQkJCQlkZXBlbmRhbnRQb2xpY3lTaG9ydE5hbWUsCi0JCQkJCQkJZGVwZW5kYW50T3BlcmF0aW9uU2hvcnROYW1lLAotCQkJCQkJCWRlcGVuZGFudE9wZXJhdGlvblNlbGVjdGlvblNob3J0TmFtZUxpc3QgfTsKLQkJCQkJdG9SZXR1cm4gKz0gTkxTLmJpbmQoCi0JCQkJCQkJV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLlNFUlZJQ0VQT0xJQ0lFU19ERVBFTkRFTkNJRVMsCi0JCQkJCQkJYXJncykKLQkJCQkJCQkrICJcclxuIjsgLy8kTk9OLU5MUy0xJAotCi0JCQkJfQotCi0JCQl9Ci0KLQkJfQotCQlyZXR1cm4gdG9SZXR1cm47Ci0JfQotCi0KLQkvKioKLQkgKiBTYXZlcyB0byB0aGUgcHJlZmVyZW5jZSBzdG9yZSB0aGUgd2lkZ2V0IGRhdGEgKHdpZGdldCBkYXRhIGNvbnRhaW5zIGFsbCAKLQkgKiBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb25zIHRoZSBjb250cm9sIGFwcGxpZXMgdG8pCi0JICogQHBhcmFtIGFjdGlvbkNvbnRyb2wgYSB3aWRnZXQgd2hvJ3MgZGF0YSBuZWVkcyB0byBiZSBzYXZlZCB0byB0aGUgcHJlZmVyZW5jZSBzdG9yZQotCSAqIAotCSAqLwotCXByaXZhdGUgdm9pZCB1cGRhdGVQb2xpY3koQ29udHJvbCBhY3Rpb25Db250cm9sKSB7Ci0KLQkJTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBwb2xpY3lPcGVyYXRpb25MaXN0ID0gKChBY3Rpb25Db250cm9sRGF0YSkgYWN0aW9uQ29udHJvbC5nZXREYXRhKCkpLmdldFBvTGlzdCgpOwotCQlJUG9saWN5T3BlcmF0aW9uIHBvMCA9IHBvbGljeU9wZXJhdGlvbkxpc3QuZ2V0KDApOwotCQkKLQkJTGlzdDxJU2VydmljZVBvbGljeT4gc2VydmljZVBvbGljeUxpc3QgPSAoKEFjdGlvbkNvbnRyb2xEYXRhKSBhY3Rpb25Db250cm9sCi0JCQkJLmdldERhdGEoKSkuZ2V0U3BMaXN0KCk7Ci0JCWlmIChhY3Rpb25Db250cm9sIGluc3RhbmNlb2YgQnV0dG9uCi0JCQkJJiYgcG8wLmdldE9wZXJhdGlvbktpbmQoKS5lcXVhbHMoT3BlcmF0aW9uS2luZC5jb21wbGV4KSkKLQkJCXVwZGF0ZUNvbXBsZXhPcGVyYXRpb25QcmVmZXJlbmNlKHBvMCwgc2VydmljZVBvbGljeUxpc3QpOwotCQllbHNlCi0JCQlmb3IgKElQb2xpY3lPcGVyYXRpb24gcG9saWN5T3BlcmF0aW9uSXRlbSA6IHBvbGljeU9wZXJhdGlvbkxpc3QpIHsKLQotCQkJCXVwZGF0ZVNlbGVjdGlvbk9wZXJhdGlvblByZWZlcmVuY2UoYWN0aW9uQ29udHJvbCwgcG9saWN5T3BlcmF0aW9uSXRlbSk7Ci0JCQl9Ci0KLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBva1RvTGVhdmUoKSB7Ci0JCXJldHVybiBhbGxFcnJvcnMuc2l6ZSgpID09IDA7Ci0KLQl9Ci0KLQkvKioKLQkgKiBTYXZlcyB2YWx1ZSBvZiBlbnVtZXJhdGlvbiwgc2VsZWN0aW9uLCBhbmQgaWNvbnNlbGVjdGlvbiB0eXBlIG9wZXJhdGlvbnMKLQkgKiB0byB0aGUgcHJlZmVyZW5jZSBzdG9yZQotCSAqIEBwYXJhbSBhY3Rpb25Db250cm9sIHRoZSBhY3Rpb24gY29udHJvbCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBzZXQgZm9yIHRoZSBwcmVmZXJlbmNlCi0JICogQHBhcmFtIHBvIAotCSAqIEBwYXJhbSBzcAotCSAqLwotCXByaXZhdGUgdm9pZCB1cGRhdGVTZWxlY3Rpb25PcGVyYXRpb25QcmVmZXJlbmNlKENvbnRyb2wgYWN0aW9uQ29udHJvbCwgSVBvbGljeU9wZXJhdGlvbiBwbykgewotCQlTdHJpbmcgc2VsZWN0ZWRWYWx1ZTsKLQkJCi0JCS8vIFdlIGFyZSB1cGRhdGluZyB0aGUgc3RhdGUgb2YgYSBzZXJ2aWNlIHBvbGljeS4gIFdlIGRvbid0IHdhbnQgdGhpcwotCQkvLyB1cGRhdGUgdG8gdHJpZ2dlciBvdXIgc3RhdGUgY2hhbmdlIGxpc3RlbmVyLgotCQllbmFibGVTdGF0ZUxpc3RlbmVyKCBmYWxzZSApOwotCQkKLQkJaWYgKGFjdGlvbkNvbnRyb2wgaW5zdGFuY2VvZiBDb21ibykgewotCQkJc2VsZWN0ZWRWYWx1ZSA9ICgoQ29tYm8pIGFjdGlvbkNvbnRyb2wpLmdldFRleHQoKTsKLQkJCUxpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPiBlbnVtSXRlbUxpc3QgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0KLQkJCQkJLmdldEluc3RhbmNlKCkuZ2V0U3RhdGVFbnVtZXJhdGlvbihwby5nZXRFbnVtZXJhdGlvbklkKCkpOwotCQkJZm9yIChJU3RhdGVFbnVtZXJhdGlvbkl0ZW0gZW51bUl0ZW0gOiBlbnVtSXRlbUxpc3QpIHsKLQkJCQlpZiAoZW51bUl0ZW0uZ2V0TG9uZ05hbWUoKS5lcXVhbHMoc2VsZWN0ZWRWYWx1ZSkpIHsKLQkJCQkJcG8uc2V0U3RhdGVJdGVtKHByb2plY3QsIGVudW1JdGVtLmdldElkKCkpOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0KLQkJfSBlbHNlIHsKLQkJCWlmICgoKEJ1dHRvbikgYWN0aW9uQ29udHJvbCkuZ2V0U2VsZWN0aW9uKCkpIHsKLQkJCQlwby5zZXRTdGF0ZUl0ZW0ocHJvamVjdCwgIm9yZy5lY2xpcHNlLndzdC50cnVlIik7IC8vJE5PTi1OTFMtMSQKLQkJCX0gZWxzZQotCQkJCXBvLnNldFN0YXRlSXRlbShwcm9qZWN0LCAib3JnLmVjbGlwc2Uud3N0LmZhbHNlIik7IC8vJE5PTi1OTFMtMSQKLQotCQl9Ci0KLQkJLy8gUmVlbmFibGUgb3VyIHN0YXRlIGNoYW5nZSBsaXN0ZW5lci4KLQkJZW5hYmxlU3RhdGVMaXN0ZW5lciggdHJ1ZSApOwotCX0KLQotCQotCXByaXZhdGUgdm9pZCBhZGRTdGF0ZUxpc3RlbmVyKCBJU2VydmljZVBvbGljeSBwb2xpY3kgKQotCXsKLQkgIGlmKCBzdGF0ZUNoYW5nZVBvbGljeVNldC5jb250YWlucyggcG9saWN5ICkgKSByZXR1cm47Ci0JICAKLQkgIGlmKCBwcm9qZWN0ID09IG51bGwgKQotCSAgewotCSAgICBwb2xpY3kuZ2V0UG9saWN5U3RhdGUoKS5hZGRQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKCBzdGF0ZUNoYW5nZUxpc3RlbmVyLCBmYWxzZSApOwotCSAgfQotCSAgZWxzZQotCSAgewotCSAgICBwb2xpY3kuZ2V0UG9saWN5U3RhdGUoIHByb2plY3QgKS5hZGRQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKCBzdGF0ZUNoYW5nZUxpc3RlbmVyLCBmYWxzZSApOwotCSAgfQotCSAgCi0JICBzdGF0ZUNoYW5nZVBvbGljeVNldC5hZGQoIHBvbGljeSApOwotCX0KLQkKLQlwcml2YXRlIHZvaWQgcmVtb3ZlU3RhdGVMaXN0ZW5lciggSVNlcnZpY2VQb2xpY3kgcG9saWN5ICkKLQl7Ci0gICAgaWYoIHN0YXRlQ2hhbmdlUG9saWN5U2V0LmNvbnRhaW5zKCBwb2xpY3kgKSApIHJldHVybjsKLSAgICAKLSAgICBpZiggcHJvamVjdCA9PSBudWxsICkKLSAgICB7Ci0JICAgIHBvbGljeS5nZXRQb2xpY3lTdGF0ZSgpLnJlbW92ZVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIoIHN0YXRlQ2hhbmdlTGlzdGVuZXIgKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHBvbGljeS5nZXRQb2xpY3lTdGF0ZSggcHJvamVjdCApLnJlbW92ZVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIoIHN0YXRlQ2hhbmdlTGlzdGVuZXIgKTsgICAgICAKLSAgICB9Ci0gICAgCi0JICBzdGF0ZUNoYW5nZVBvbGljeVNldC5yZW1vdmUoIHBvbGljeSApOwotCX0KLQkKLQlwcml2YXRlIHZvaWQgZW5hYmxlU3RhdGVMaXN0ZW5lciggYm9vbGVhbiBlbmFibGVkICkKLQl7Ci0JICBzdGF0ZUNoYW5nZUVuYWJsZWQgPSBlbmFibGVkOwotCX0KLQkKLQkvKioKLQkgKiBMYXVuY2hlcyB0aGUgY29tcGxleCBvcGVyYXRpb24gZm9yIHRoZSBsaXN0IG9mIHNlcnZpY2UgcG9saWNpZXMKLQkgKiBAcGFyYW0gcG8gYSAiY29tcGxleCIgcG9saWN5IG9wZXJhdGlvbiAKLQkgKiBAcGFyYW0gc3BzIGEgbGlzdCBvZiBzZXJ2aWNlIHBvbGljaWVzIHRvIGFwcGx5IHRoZSBvcGVyYXRpb24gdG8KLQkgKi8KLQlwcml2YXRlIHZvaWQgIHVwZGF0ZUNvbXBsZXhPcGVyYXRpb25QcmVmZXJlbmNlKElQb2xpY3lPcGVyYXRpb24gcG8sCi0JCQlMaXN0PElTZXJ2aWNlUG9saWN5PiBzcHMpIHsKLQkJLy9jb21wbGV4IG9wZXJhdGlvbnMgY2FuIHJlc3VsdCBpbiBhZGRlZCBhbmQgZGVsZXRlZCBub2RlcywgY2FjaGUgdGhlbSB1bnRpbCBvcGVyYXRpb24gY29tcGxldGVkCi0JCWJDb21wbGV4T3BDb21wbGV0ZWQgPSBmYWxzZTsKLQkJbGlzdENoaWxkQ2hhbmdlRXZlbnRzID0gbmV3IFZlY3RvcjxDaGlsZENoYW5nZUV2ZW50PigpOwotCQl0cnkgewotCQkJcG8ubGF1bmNoT3BlcmF0aW9uKHNwcyk7Ci0JCX0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgewotCQkJLy9qdXN0IHdhbnQgdG8gbWFrZSBzdXJlIGZpbmFsbHkgY2xhdXNlIGlzIGV4ZWN1dGVkIHNvIGNhbiB1cGRhdGUgVUkgb2YgYWRkaXRpb25zL2RlbGV0aW9ucwotCQl9IGZpbmFsbHkgewotCQkJYkNvbXBsZXhPcENvbXBsZXRlZCA9dHJ1ZTsKLQkJCUhhc2h0YWJsZTxTdHJpbmcsIElTZXJ2aWNlUG9saWN5PiB0b3BMZXZlbEFkZHMgPSBnZXRIaWdoZXN0TGV2ZWxDaGlsZHJlbihsaXN0Q2hpbGRDaGFuZ2VFdmVudHMsIHRydWUpOwotCQkJZm9yIChDaGlsZENoYW5nZUV2ZW50IGNoaWxkQ2hhbmdlRXZlbnRJdGVtIDogbGlzdENoaWxkQ2hhbmdlRXZlbnRzKSB7Ci0JCQkJcHJvY2Vzc0NoaWxkQ2hhbmdlRXZlbnQoY2hpbGRDaGFuZ2VFdmVudEl0ZW0sIHRvcExldmVsQWRkcyk7Ci0JCQl9Ci0JCQkKLQkJfQotCX0KLQlwcml2YXRlIEhhc2h0YWJsZTxTdHJpbmcsIElTZXJ2aWNlUG9saWN5PiBnZXRIaWdoZXN0TGV2ZWxDaGlsZHJlbiAoTGlzdDxDaGlsZENoYW5nZUV2ZW50PiBodENoaWxkQ2hhbmdlRXZlbnRzLCBib29sZWFuIGZvckFkZE9ubHkpIHsKLQkJSGFzaHRhYmxlPFN0cmluZywgSVNlcnZpY2VQb2xpY3k+IHRvUmV0dXJuID0gbmV3IEhhc2h0YWJsZTxTdHJpbmcsIElTZXJ2aWNlUG9saWN5PigpOwotCQlJdGVyYXRvcjxDaGlsZENoYW5nZUV2ZW50PiBlbGVtZW50cyA9IGh0Q2hpbGRDaGFuZ2VFdmVudHMuaXRlcmF0b3IoKTsKLQkJQ2hpbGRDaGFuZ2VFdmVudCBuZXh0OwotCQlIYXNodGFibGU8U3RyaW5nLCBJU2VydmljZVBvbGljeT4gYWxsU3BzID0gbmV3IEhhc2h0YWJsZTxTdHJpbmcsIElTZXJ2aWNlUG9saWN5PigpOwotCQl3aGlsZSAoZWxlbWVudHMuaGFzTmV4dCgpKSB7Ci0JCQluZXh0ID0gZWxlbWVudHMubmV4dCgpOwotCQkJTGlzdDxJU2VydmljZVBvbGljeT4gY2hhbmdlZENoaWxkcmVuTGlzdCA9IG5leHQuZ2V0Q2hhbmdlZENoaWxkcmVuKCk7Ci0JCQlMaXN0PEJvb2xlYW4+IGFkZGVkTGlzdCA9IG5leHQuZ2V0QWRkZWQoKTsKLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgY2hhbmdlZENoaWxkcmVuTGlzdC5zaXplKCk7IGkrKykgewotCQkJCWlmIChmb3JBZGRPbmx5ICYmIGFkZGVkTGlzdC5nZXQoaSkuYm9vbGVhblZhbHVlKCkgPT0gdHJ1ZSkKLQkJCQkJYWxsU3BzLnB1dChjaGFuZ2VkQ2hpbGRyZW5MaXN0LmdldChpKS5nZXRJZCgpLCBjaGFuZ2VkQ2hpbGRyZW5MaXN0LmdldChpKSk7Ci0JCQl9Ci0JCX0KLQkJRW51bWVyYXRpb248SVNlcnZpY2VQb2xpY3k+IHNlcnZpY2VQb2xpY3lFbGVtZW50cyA9IGFsbFNwcy5lbGVtZW50cygpOwotCQlJU2VydmljZVBvbGljeSBuZXh0U2VydmljZVBvbGljeUVsZW1lbnQ7Ci0JCXdoaWxlIChzZXJ2aWNlUG9saWN5RWxlbWVudHMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLQkJCW5leHRTZXJ2aWNlUG9saWN5RWxlbWVudCA9IHNlcnZpY2VQb2xpY3lFbGVtZW50cy5uZXh0RWxlbWVudCgpOwotCQkJaWYgKG5leHRTZXJ2aWNlUG9saWN5RWxlbWVudC5nZXRQYXJlbnRQb2xpY3koKSA9PSBudWxsIHx8ICFhbGxTcHMuY29udGFpbnNLZXkobmV4dFNlcnZpY2VQb2xpY3lFbGVtZW50LmdldFBhcmVudFBvbGljeSgpLmdldElkKCkpKSB7Ci0JCQkJdG9SZXR1cm4ucHV0KG5leHRTZXJ2aWNlUG9saWN5RWxlbWVudC5nZXRJZCgpLCBuZXh0U2VydmljZVBvbGljeUVsZW1lbnQpOwotCQkJfQotCQl9Ci0JCXJldHVybiB0b1JldHVybjsKLQl9Ci0JcHVibGljIHZvaWQgZGlzcG9zZSgpIHsKLQkJc3VwZXIuZGlzcG9zZSgpOwotCQlpY29uTWFuYWdlci5kaXNwb3NlKCk7Ci0JCQotCQlmb3IoIElTZXJ2aWNlUG9saWN5IHBvbGljeSA6IHN0YXRlQ2hhbmdlUG9saWN5U2V0ICkKLQkJewotCQkgIElQb2xpY3lTdGF0ZSBzdGF0ZSA9IHByb2plY3QgPT0gbnVsbCA/IHBvbGljeS5nZXRQb2xpY3lTdGF0ZSgpIDogcG9saWN5LmdldFBvbGljeVN0YXRlKCBwcm9qZWN0ICk7Ci0JCSAgCi0JCSAgc3RhdGUucmVtb3ZlUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lciggc3RhdGVDaGFuZ2VMaXN0ZW5lciApOwotCQl9Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlIFVJIHdpZGdldHMgZm9yIG9wZXJhdGlvbnMgYXBwbGljYWJsZSB0byB0aGUgbGlzdCBvZiBzZXJ2aWNlIHBvbGljaWVzIHNwCi0JICogQHBhcmFtIHNwTGlzdCB0aGUgbGlzdCBvZiBzZXJ2aWNlIHBvbGljaWVzIHRvIGNyZWF0ZSBVSSB3aWRnZXRzLCB0aGUgVUkgd2lkZ2V0cwotCSAqIHdpbGwgYmUgdXNlZCB0byBkZWZpbmUgb3BlcmF0aW9ucy9wcmVmZXJlbmNlcyB0byBhcHBseSB0byB0aGUgc2VydmljZSBwb2xpY2llcyBpbiB0aGUgbGlzdAotCSAqLwotCXByaXZhdGUgdm9pZCBhZGRBY3Rpb25CdXR0b25zKExpc3Q8SVNlcnZpY2VQb2xpY3k+IHNwTGlzdCkgewotCSAgCi0JCS8vIHJlbW92ZSBleGlzdGluZyBhY3Rpb24gY29udHJvbHMKLQkJQ29udHJvbFtdIHRvUmVtb3ZlID0gb3BlcmF0aW9uc0NvbXBvc2l0ZS5nZXRDaGlsZHJlbigpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IHRvUmVtb3ZlLmxlbmd0aDsgaSsrKSB7Ci0JCQl0b1JlbW92ZVtpXS5kaXNwb3NlKCk7Ci0JCX0KLQkJTGlzdDxMaXN0PElQb2xpY3lPcGVyYXRpb24+PiBwb2xpY3lPcGVyYXRpb25MaXN0TGlzdCA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uc0xpc3Qoc3BMaXN0LCAocHJvamVjdCA9PSBudWxsKSk7Ci0KLQkJZm9yIChMaXN0PElQb2xpY3lPcGVyYXRpb24+IHBvbGljeU9wZXJhdGlvbkxpc3QgOiBwb2xpY3lPcGVyYXRpb25MaXN0TGlzdCkgewotCQkJaWYgKHBvbGljeU9wZXJhdGlvbkxpc3Quc2l6ZSgpID4gMCkgewotCQkJaWYgKHBvbGljeU9wZXJhdGlvbkxpc3QuZ2V0KDApLmdldE9wZXJhdGlvbktpbmQoKSA9PSBJUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuY29tcGxleCkgewotCQkJCWFkZENvbXBsZXhPcGVyYXRpb25VSShwb2xpY3lPcGVyYXRpb25MaXN0LCBzcExpc3QpOwotCQkJfSBlbHNlCi0JCQkJYWRkU2VsZWN0aW9uT3BlcmF0aW9uVUkocG9saWN5T3BlcmF0aW9uTGlzdCwgc3BMaXN0KTsKLQkJCX0KLQotCQl9Ci0JCS8vIGp1c3QgcmVtb3ZlZCBhbmQgYWRkZWQgc29tZSBjb250cm9scyBzbyBmb3JjZSBjb21wb3NpdGUKLQkJLy8gdG8gcmUtbGF5b3V0IGl0J3MgY29udHJvbHMKLQkJb3BlcmF0aW9uc1Njcm9sbGVkQ29tcG9zaXRlLnNldE1pblNpemUob3BlcmF0aW9uc0NvbXBvc2l0ZS5jb21wdXRlU2l6ZSgKLQkJCQlTV1QuREVGQVVMVCwgU1dULkRFRkFVTFQpKTsKLQkJb3BlcmF0aW9uc0NvbXBvc2l0ZS5sYXlvdXQoKTsKLQl9Ci0JLyoqCi0JICogQ3JlYXRlcyBVSSB3aWRnZXRzIGZvciBwb2xpY3kgb3BlcmF0aW9ucyBvZiBlbnVtZXJhdGlvbiwgc2VsZWN0aW9uLCBhbmQgCi0JICogaWNvbnNlbGVjdGlvbiB0eXBlcwotCSAqIEBwYXJhbSBwbyB0aGUgcG9saWN5IG9wZXJhdGlvbiB0byBjcmVhdGUgYSBVSSB3aWRnZXQgZm9yCi0JICogQHBhcmFtIHNwIHRoZSBzZXJ2aWNlIHBvbGljaWVzIHRoaXMgb3BlcmF0aW9uIHdpbGwgYXBwbHkgdG8KLQkgKi8KLQlwcml2YXRlIHZvaWQgYWRkU2VsZWN0aW9uT3BlcmF0aW9uVUkoTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBwb3MsIExpc3Q8SVNlcnZpY2VQb2xpY3k+IHNwcykgewotCQkvL3VzZSB0aGUgZmlyc3Qgb3BlcmF0aW9uIGluc3RhbmNlIGluIHRoZSBsaXN0IGZvciBkYXRhCi0JCUlQb2xpY3lPcGVyYXRpb24gcG8wID0gcG9zLmdldCgwKTsKLQkJLy9JU2VydmljZVBvbGljeSBzcDAgPSBwb3MuZ2V0KDApLmdldFNlcnZpY2VQb2xpY3koKTsKLQkJSURlc2NyaXB0b3IgZCA9IHBvMC5nZXREZXNjcmlwdG9yKCk7Ci0JCUNvbnRyb2wgc2VsZWN0aW9uQ29udHJvbDsKLQkJaWYgKHBvMC5nZXRPcGVyYXRpb25LaW5kKCkgPT0gSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmVudW1lcmF0aW9uKSB7Ci0JCQlMYWJlbCBsID0gbmV3IExhYmVsKG9wZXJhdGlvbnNDb21wb3NpdGUsIFNXVC5OT05FKTsKLQkJCWwuc2V0VGV4dChkLmdldExvbmdOYW1lKCkgKyAiOiIpOyAvLyROT04tTkxTLTEkCi0JCQlHcmlkRGF0YSBjb21ib0dEID0gbmV3IEdyaWREYXRhKFNXVC5GSUxMLCBTV1QuRklMTCwgdHJ1ZSwgZmFsc2UpOwotCi0JCQlDb21ibyBjYiA9IG5ldyBDb21ibyhvcGVyYXRpb25zQ29tcG9zaXRlLCBTV1QuRFJPUF9ET1dOCi0JCQkJCXwgU1dULlJFQURfT05MWSk7Ci0JCQljYi5zZXRMYXlvdXREYXRhKGNvbWJvR0QpOwotCQkJc2VsZWN0aW9uQ29udHJvbCA9IGNiOwotCQkJY2IuYWRkU2VsZWN0aW9uTGlzdGVuZXIodGhpcyk7Ci0JCQlMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4gZW51bUl0ZW1MaXN0ID0gU2VydmljZVBvbGljeVBsYXRmb3JtCi0JCQkJCS5nZXRJbnN0YW5jZSgpLmdldFN0YXRlRW51bWVyYXRpb24ocG8wLmdldEVudW1lcmF0aW9uSWQoKSk7Ci0JCQlmb3IgKElTdGF0ZUVudW1lcmF0aW9uSXRlbSBlbnVtSXRlbSA6IGVudW1JdGVtTGlzdCkgewotCQkJCWNiLmFkZChlbnVtSXRlbS5nZXRMb25nTmFtZSgpKTsKLQkJCX0KLQkJCWwuc2V0RW5hYmxlZChwbzAuaXNFbmFibGVkKHNwcykpOwotCQkJY2Iuc2V0RW5hYmxlZChwbzAuaXNFbmFibGVkKHNwcykpOwotCQkJaWYgKGNiLmlzRW5hYmxlZCgpKQotCQkJCWNiLnNldFRleHQoZ2V0RW51bWVyYXRpb25PcGVyYXRpb25DdXJyZW50U2VsZWN0aW9uKHBvMCkpOwotCQl9IGVsc2UgewotCQkJLy8gYSBzZWxlY3Rpb24gb3IgaWNvbgotCQkJQnV0dG9uIGNoZWNrQm94ID0gbmV3IEJ1dHRvbihvcGVyYXRpb25zQ29tcG9zaXRlLCBTV1QuQ0hFQ0spOwotCQkJc2VsZWN0aW9uQ29udHJvbCA9IGNoZWNrQm94OwotCQkJY2hlY2tCb3guYWRkU2VsZWN0aW9uTGlzdGVuZXIodGhpcyk7Ci0JCQlHcmlkRGF0YSBjaGVja0JveEdEID0gbmV3IEdyaWREYXRhKCk7Ci0JCQljaGVja0JveEdELmhvcml6b250YWxTcGFuID0gMjsKLQkJCWNoZWNrQm94LnNldExheW91dERhdGEoY2hlY2tCb3hHRCk7Ci0JCQljaGVja0JveC5zZXRUZXh0KGQuZ2V0TG9uZ05hbWUoKSk7Ci0JCQljaGVja0JveC5zZXRFbmFibGVkKHBvMC5pc0VuYWJsZWQoc3BzKSk7Ci0JCQlpZiAoY2hlY2tCb3guaXNFbmFibGVkKCkpCi0JCQkJY2hlY2tCb3gKLQkJCQkJCS5zZXRTZWxlY3Rpb24oZ2V0U2VsZWN0aW9uT3BlcmF0aW9uQ3VycmVudFNlbGVjdGlvbihwbzApKTsKLQotCQl9Ci0KLQkJc2VsZWN0aW9uQ29udHJvbC5zZXREYXRhKG5ldyBBY3Rpb25Db250cm9sRGF0YShzcHMsIHBvcykpOwotCi0JfQotCS8qKgotCSAqIEBwYXJhbSBzcCBhIHNlcnZpY2UgcG9saWN5IHdpdGggYSBzZWxlY3Rpb24gb3IgaWNvbnNlbGVjdGlvbiBvcGVyYXRpb24gZGVmaW5lZAotCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIGlzIGN1cnJlbnRseSBzZWxlY3RlZAotCSAqLwotCXByaXZhdGUgYm9vbGVhbiBnZXRTZWxlY3Rpb25PcGVyYXRpb25DdXJyZW50U2VsZWN0aW9uKElQb2xpY3lPcGVyYXRpb24gcG8pIHsKLQkJcmV0dXJuIHBvLmdldFN0YXRlSXRlbShwcm9qZWN0KS5lcXVhbHMoIm9yZy5lY2xpcHNlLndzdC50cnVlIikgPyB0cnVlIDogZmFsc2U7IC8vJE5PTi1OTFMtMSQKLQotCX0KLQotCS8qKgotCSAqIEBwYXJhbSBzcCBhIHNlcnZpY2UgcG9saWN5IHdpdGggYW4gZW51bWVyYXRpb24gb3BlcmF0aW9uIGRlZmluZWQKLQkgKiBAcmV0dXJuIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZW51bWVyYXRpb24gaXRlbQotCSAqLwotCXByaXZhdGUgU3RyaW5nIGdldEVudW1lcmF0aW9uT3BlcmF0aW9uQ3VycmVudFNlbGVjdGlvbihJUG9saWN5T3BlcmF0aW9uIHBvKSB7Ci0JCVN0cmluZyBjdXJyZW50U2VsZWN0aW9uID0gIiI7IC8vJE5PTi1OTFMtMSQKLQkJTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IGVudW1JdGVtTGlzdCA9IFNlcnZpY2VQb2xpY3lQbGF0Zm9ybQotCQkuZ2V0SW5zdGFuY2UoKS5nZXRTdGF0ZUVudW1lcmF0aW9uKHBvLmdldEVudW1lcmF0aW9uSWQoKSk7Ci0JCWZvciAoSVN0YXRlRW51bWVyYXRpb25JdGVtIGVudW1JdGVtIDogZW51bUl0ZW1MaXN0KSB7Ci0JCQlpZiAoZW51bUl0ZW0uZ2V0SWQoKS5lcXVhbHMocG8uZ2V0U3RhdGVJdGVtKHByb2plY3QpKSkgewotCQkJCWN1cnJlbnRTZWxlY3Rpb24gPSBlbnVtSXRlbS5nZXRMb25nTmFtZSgpOwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JCXJldHVybiBjdXJyZW50U2VsZWN0aW9uOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgVUkgd2lkZ2V0cyBmb3IgcG9saWN5IG9wZXJhdGlvbnMgb2YgY29tcGxleCB0eXBlCi0JICogQHBhcmFtIHBvIHRoZSBwb2xpY3kgb3BlcmF0aW9uIHRvIGNyZWF0ZSBhIFVJIHdpZGdldCBmb3IKLQkgKiBAcGFyYW0gc3BzIHRoZSBzZXJ2aWNlIHBvbGljaWVzIHRoaXMgb3BlcmF0aW9uIHdpbGwgYXBwbHkgdG8KLQkgKi8KLQlwcml2YXRlIHZvaWQgYWRkQ29tcGxleE9wZXJhdGlvblVJKExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gcG9zLAotCQkJTGlzdDxJU2VydmljZVBvbGljeT4gc3BzKSB7Ci0JCUlQb2xpY3lPcGVyYXRpb24gcG8wID0gcG9zLmdldCgwKTsKLQkJSURlc2NyaXB0b3IgZCA9IHBvMC5nZXREZXNjcmlwdG9yKCk7Ci0JCUJ1dHRvbiBwdXNoQnV0dG9uID0gbmV3IEJ1dHRvbihvcGVyYXRpb25zQ29tcG9zaXRlLCBTV1QuUFVTSCk7Ci0JCUdyaWREYXRhIHB1c2hCdXR0b25HRCA9IG5ldyBHcmlkRGF0YSgpOwotCQlwdXNoQnV0dG9uR0QuaG9yaXpvbnRhbFNwYW4gPSAyOwotCQlwdXNoQnV0dG9uLnNldExheW91dERhdGEocHVzaEJ1dHRvbkdEKTsKLQkJcHVzaEJ1dHRvbi5zZXRUZXh0KGQuZ2V0TG9uZ05hbWUoKSk7Ci0JCXB1c2hCdXR0b24uYWRkU2VsZWN0aW9uTGlzdGVuZXIodGhpcyk7Ci0JCXB1c2hCdXR0b24uc2V0RGF0YShuZXcgQWN0aW9uQ29udHJvbERhdGEoc3BzLCBwb3MpKTsKLQkJcHVzaEJ1dHRvbi5zZXRFbmFibGVkKHBvMC5pc0VuYWJsZWQoc3BzKSk7Ci0gIAotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXIjd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQpCi0JICovICAKLQlwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCi0JfQotCi0JLyoqCi0JICogQHJldHVybiB0aGUgZXJyb3IgdGhhdCBzaG91bGQgYmUgc2hvd24sIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB2YWxpZGF0aW9uIGVycm9ycywKLQkgKiByZXR1cm4gdGhlIHZhbGlkYXRpb24gZXJyb3IgZm9yIGEgc2VydmljZSBwb2xpY3kgdGhhdCBqdXN0IGNoYW5nZXMgc3RhdGUgKG9mdGVuIHRoZQotCSAqIHNlbGVjdGVkIHNlcnZpY2UgcG9saWN5KQotCSAqLwotCXB1YmxpYyBJU3RhdHVzIGdldEVycm9yKCkgewotCQlyZXR1cm4gZXJyb3I7Ci0JfQotCQotCXByaXZhdGUgY2xhc3MgU3RhdGVDaGFuZ2VMaXN0ZW5lciBpbXBsZW1lbnRzIElQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyCi0JewotICAgIHB1YmxpYyB2b2lkIHBvbGljeVN0YXRlQ2hhbmdlKElTZXJ2aWNlUG9saWN5IHBvbGljeSwgU3RyaW5nIGtleSwgU3RyaW5nIG9sZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUpCi0gICAgewotICAgICAgLy8gV2UgYXJlIG5vdCBlbmFibGVkIGZvciBzdGF0ZSBjaGFuZ2UgZXZlbnRzIHNvIHdlIHdpbGwgaWdub3JlIHRoaXMgZXZlbnQuCi0gICAgICBpZiggIXN0YXRlQ2hhbmdlRW5hYmxlZCApIHJldHVybjsKLSAgICAgIAotICAgICAgZXJyb3IgPSB2YWxpZGF0ZUFsbFBvbGljaWVzKCBwb2xpY3kgKTsKLSAgICAgIAotICAgICAgLy9pbmZvcm0gbGlzdGVuZXJzIHRoYXQgYSBjb250cm9sIGhhcyBjaGFuZ2VkLCBhcyBjb21wb3NpdGUgbWF5IGJlIGluIGVycm9yIG5vdwotICAgICAgbGlzdGVuZXIud2lkZ2V0U2VsZWN0ZWQoIG51bGwgKTsKLSAgICB9CSAgCi0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZDFhOTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgSW5pdGlhbCBjb2Rpbmcgb2Ygc2VydmljZSBwb2xpY3kKLSAqIDIwMDgwMTA5ICAgMjEzNDk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwMzI1ICAgMjIyMDk1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuc2VydmljZS5wb2xpY3kudWk7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKLWltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeVBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklQb2xpY3lPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklRdWlja0ZpeEFjdGlvbkluZm87Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSUltcGwKLXsKLSAgcHJpdmF0ZSBNYXA8U3RyaW5nLCBCYXNlT3BlcmF0aW9uSW1wbD4gICAgICAgICAgICAgYmFzZU9wZXJhdGlvbk1hcDsKLSAgcHJpdmF0ZSBNYXA8SVNlcnZpY2VQb2xpY3ksIFNldDxJUG9saWN5T3BlcmF0aW9uPj4gcG9saWN5Q2FjaGU7Ci0gIHByaXZhdGUgTWFwPFN0cmluZyxMaXN0PElRdWlja0ZpeEFjdGlvbkluZm8+PiAgICAgIHF1aWNrRml4ZXM7Ci0gIAotICBwdWJsaWMgU2VydmljZVBvbGljeVBsYXRmb3JtVUlJbXBsKCkKLSAgewotICAgIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybSAgIHBsYXRmb3JtICA9IFNlcnZpY2VQb2xpY3lQbGF0Zm9ybS5nZXRJbnN0YW5jZSgpOwotICAgIFNlcnZpY2VQb2xpY3lSZWdpc3RyeVVJIHJlZ2lzdHJ5ICA9IG5ldyBTZXJ2aWNlUG9saWN5UmVnaXN0cnlVSSgpOwotICAgIFNldDxTdHJpbmc+ICAgICAgICAgICAgIHBvbGljeUlkcyA9IHBsYXRmb3JtLmdldEFsbFBvbGljeUlkcygpOwotICAgIAotICAgIGJhc2VPcGVyYXRpb25NYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIEJhc2VPcGVyYXRpb25JbXBsPigpOwotICAgIHBvbGljeUNhY2hlICAgICAgPSBuZXcgSGFzaE1hcDxJU2VydmljZVBvbGljeSwgU2V0PElQb2xpY3lPcGVyYXRpb24+PigpOwotICAgIHF1aWNrRml4ZXMgICAgICAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIExpc3Q8SVF1aWNrRml4QWN0aW9uSW5mbz4+KCk7Ci0gICAgcmVnaXN0cnkubG9hZCggYmFzZU9wZXJhdGlvbk1hcCwgcXVpY2tGaXhlcyApOwotICAgIGNyZWF0ZU9wZXJhdGlvbkNhY2hlKCBwb2xpY3lJZHMgKTsKLSAgICAKLSAgICBwbGF0Zm9ybS5hZGRDaGlsZENoYW5nZUxpc3RlbmVyKCBuZXcgQ2hpbGRMaXN0ZW5lcigpLCBmYWxzZSApOwotICB9Ci0gICAgICAKLSAgcHVibGljIExpc3Q8SVF1aWNrRml4QWN0aW9uSW5mbz4gZ2V0UXVpY2tGaXhlcyggSVN0YXR1cyBzdGF0dXMgKQotICB7Ci0gICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICBwbHVnaW5JZCA9IHN0YXR1cy5nZXRQbHVnaW4oKTsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgICAgID0gc3RhdHVzLmdldENvZGUoKTsKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgIGtleSAgICAgID0gcGx1Z2luSWQgKyAiOiIgKyBjb2RlOyAvLyROT04tTkxTLTEkCi0gICAgTGlzdDxJUXVpY2tGaXhBY3Rpb25JbmZvPiByZXN1bHQgICA9IHF1aWNrRml4ZXMuZ2V0KCBrZXkgKTsKLSAgICAKLSAgICBpZiggcmVzdWx0ID09IG51bGwgKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IG5ldyBWZWN0b3I8SVF1aWNrRml4QWN0aW9uSW5mbz4oKTsKLSAgICAgIHF1aWNrRml4ZXMucHV0KCBrZXksIHJlc3VsdCApOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0gIAotICBwdWJsaWMgTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBnZXRBbGxPcGVyYXRpb25zKCkKLSAgewotICAgIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gb3BlcmF0aW9ucyA9IG5ldyBWZWN0b3I8SVBvbGljeU9wZXJhdGlvbj4oKTsKLSAgICAKLSAgICBmb3IoIFNldDxJUG9saWN5T3BlcmF0aW9uPiBvcGVyYXRpb25TZXQgOiBwb2xpY3lDYWNoZS52YWx1ZXMoKSApCi0gICAgewotICAgICAgb3BlcmF0aW9ucy5hZGRBbGwoIG9wZXJhdGlvblNldCApOyAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBvcGVyYXRpb25zOwotICB9Ci0gIAotICBwdWJsaWMgU2V0PElQb2xpY3lPcGVyYXRpb24+IGdldE9wZXJhdGlvbnNGb3JQb2xpY3koIElTZXJ2aWNlUG9saWN5IHBvbGljeSwgYm9vbGVhbiBpc1dvcmtzcGFjZSApCi0gIHsKLSAgICBTZXQ8SVBvbGljeU9wZXJhdGlvbj4gcG9saWN5T3BlcmF0aW9ucyAgID0gcG9saWN5Q2FjaGUuZ2V0KCBwb2xpY3kgKTsKLSAgICBTZXQ8SVBvbGljeU9wZXJhdGlvbj4gcmVzdWx0ICAgICAgICAgICAgID0gbmV3IEhhc2hTZXQ8SVBvbGljeU9wZXJhdGlvbj4oKTsKLSAgICAKLSAgICBpZiggcG9saWN5T3BlcmF0aW9ucyAhPSBudWxsICkKLSAgICB7Ci0gICAgICByZXN1bHQuYWRkQWxsKCBwb2xpY3lPcGVyYXRpb25zICk7ICAKLSAgICAKLSAgICAgIGlmKCAhaXNXb3Jrc3BhY2UgKQotICAgICAgewotICAgICAgICBmb3IoIElQb2xpY3lPcGVyYXRpb24gb3BlcmF0aW9uIDogcG9saWN5T3BlcmF0aW9ucyApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiggb3BlcmF0aW9uLmlzV29ya3NwYWNlT25seSgpICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQucmVtb3ZlKCBvcGVyYXRpb24gKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgcHVibGljIExpc3Q8TGlzdDxJUG9saWN5T3BlcmF0aW9uPj4gZ2V0T3BlcmF0aW9uc0xpc3QoIExpc3Q8SVNlcnZpY2VQb2xpY3k+IHBvbGljaWVzLCBib29sZWFuIGlzV29ya3NwYWNlICkKLSAgewotICAgIE1hcDxTdHJpbmcsIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4+IG9wZXJhdGlvbk1hcCA9IG5ldyBIYXNoTWFwPFN0cmluZywgTGlzdDxJUG9saWN5T3BlcmF0aW9uPj4oKTsKLSAgICAKLSAgICBmb3IoIElTZXJ2aWNlUG9saWN5IHBvbGljeSA6IHBvbGljaWVzICkKLSAgICB7Ci0gICAgICBTZXQ8SVBvbGljeU9wZXJhdGlvbj4gb3BlcmF0aW9ucyA9IHBvbGljeUNhY2hlLmdldCggcG9saWN5ICk7Ci0KLSAgICAgIGlmKCBvcGVyYXRpb25zICE9IG51bGwgKQotICAgICAgewotICAgICAgICBmb3IoIElQb2xpY3lPcGVyYXRpb24gb3BlcmF0aW9uIDogb3BlcmF0aW9ucyApCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAgIGlkICAgICAgICA9IG9wZXJhdGlvbi5nZXRJZCgpOwotICAgICAgICAgIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gZW50cnlMaXN0ID0gb3BlcmF0aW9uTWFwLmdldCggaWQgKTsKLSAgICAgICAgCi0gICAgICAgICAgLy8gV2Ugb25seSB3YW50IHRvIGFkZCB0aGlzIG9wZXJhdGlvbiBpZiBpdCBpcyBmb3IgdGhlIHdvcmtzcGFjZSBwcmVmZXJlbmNlIHBhZ2Ugb3IKLSAgICAgICAgICAvLyBpZiB3ZSBhcmUgb24gdGhlIHByb2plY3QgcHJlZmVyZW5jZSBwYWdlIGFuZCB0aGUgb3BlcmF0aW9uIGlzIG5vdCBvbmx5Ci0gICAgICAgICAgLy8gZm9yIHRoZSB3b3Jrc3BhY2UgbGV2ZWwuCi0gICAgICAgICAgaWYoIGlzV29ya3NwYWNlIHx8ICFvcGVyYXRpb24uaXNXb3Jrc3BhY2VPbmx5KCkgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKCBlbnRyeUxpc3QgPT0gbnVsbCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGVudHJ5TGlzdCA9IG5ldyBWZWN0b3I8SVBvbGljeU9wZXJhdGlvbj4oKTsKLSAgICAgICAgICAgICAgb3BlcmF0aW9uTWFwLnB1dCggaWQsIGVudHJ5TGlzdCApOwotICAgICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAgIGVudHJ5TGlzdC5hZGQoIG9wZXJhdGlvbiApOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmV3IFZlY3RvcjxMaXN0PElQb2xpY3lPcGVyYXRpb24+Piggb3BlcmF0aW9uTWFwLnZhbHVlcygpICk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBjcmVhdGVPcGVyYXRpb25DYWNoZSggU2V0PFN0cmluZz4gcG9saWN5SWRzICkKLSAgewotICAgIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybSAgICAgICAgIHBsYXRmb3JtICAgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKTsKLSAgICBDb2xsZWN0aW9uPEJhc2VPcGVyYXRpb25JbXBsPiBvcGVyYXRpb25zID0gYmFzZU9wZXJhdGlvbk1hcC52YWx1ZXMoKTsKLSAgICAKLSAgICBmb3IoIEJhc2VPcGVyYXRpb25JbXBsIG9wZXJhdGlvbiA6IG9wZXJhdGlvbnMgKQotICAgIHsKLSAgICAgIFN0cmluZyAgcG9saWN5UGF0dGVybiA9IG9wZXJhdGlvbi5nZXRQb2xpY3lJZFBhdHRlcm4oKTsKLSAgICAgIFBhdHRlcm4gcGF0dGVybiAgICAgICA9IFBhdHRlcm4uY29tcGlsZSggcG9saWN5UGF0dGVybiApOwotICAgICAgCi0gICAgICBmb3IoIFN0cmluZyBwb2xpY3lJZCA6IHBvbGljeUlkcyApCi0gICAgICB7Ci0gICAgICAgIE1hdGNoZXIgbWF0Y2hlciA9IHBhdHRlcm4ubWF0Y2hlciggcG9saWN5SWQgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCBtYXRjaGVyLm1hdGNoZXMoKSApCi0gICAgICAgIHsKLSAgICAgICAgICBJU2VydmljZVBvbGljeSAgICAgICAgcG9saWN5ICAgICAgICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koIHBvbGljeUlkICk7Ci0gICAgICAgICAgU2V0PElQb2xpY3lPcGVyYXRpb24+IG9wZXJhdGlvbnNTZXQgPSBwb2xpY3lDYWNoZS5nZXQocG9saWN5KTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZiggb3BlcmF0aW9uc1NldCA9PSBudWxsICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBvcGVyYXRpb25zU2V0ID0gbmV3IEhhc2hTZXQ8SVBvbGljeU9wZXJhdGlvbj4oKTsKLSAgICAgICAgICAgIHBvbGljeUNhY2hlLnB1dCggcG9saWN5LCBvcGVyYXRpb25zU2V0ICk7Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIG9wZXJhdGlvbnNTZXQuYWRkKCBuZXcgUG9saWN5T3BlcmF0aW9uSW1wbCggb3BlcmF0aW9uLCBwb2xpY3kgKSApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSAgICAKLSAgfQotICAKLSAgcHJpdmF0ZSBjbGFzcyBDaGlsZExpc3RlbmVyIGltcGxlbWVudHMgSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIKLSAgewotICAgIHB1YmxpYyB2b2lkIGNoaWxkQ2hhbmdlKExpc3Q8SVNlcnZpY2VQb2xpY3k+IGNoaWxkTGlzdCwgTGlzdDxCb29sZWFuPiBhZGRlZExpc3QpCi0gICAgewotICAgICAgU2V0PFN0cmluZz4gaWRTZXQgPSBuZXcgSGFzaFNldDxTdHJpbmc+KCk7Ci0gICAgICAKLSAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBjaGlsZExpc3Quc2l6ZSgpOyBpbmRleCsrICkKLSAgICAgIHsKLSAgICAgICAgSVNlcnZpY2VQb2xpY3kgcG9saWN5ID0gY2hpbGRMaXN0LmdldCggaW5kZXggKTsKLSAgICAgICAgYm9vbGVhbiAgICAgICAgYWRkZWQgID0gYWRkZWRMaXN0LmdldCggaW5kZXggKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCBhZGRlZCApCi0gICAgICAgIHsKLSAgICAgICAgCi0gICAgICAgICAgaWRTZXQuYWRkKCBwb2xpY3kuZ2V0SWQoKSApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHBvbGljeUNhY2hlLnJlbW92ZSggcG9saWN5ICk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgICAgaWYoIGlkU2V0LnNpemUoKSA+IDAgKQotICAgICAgewotICAgICAgICBjcmVhdGVPcGVyYXRpb25DYWNoZSggaWRTZXQgKTsKLSAgICAgIH0KLSAgICB9ICAgIAotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lSZWdpc3RyeVVJLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lSZWdpc3RyeVVJLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ODE4YTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UmVnaXN0cnlVSS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjk5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDQyOCAgIDIyNzUwMSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBGaXhlZCB0b0xvd2VyQ2FzZSBMb2NhbGUgcHJvYmxlbS4KLSAqIDIwMDgwODI5ICAgMjQ1NzU0IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEFkZGVkIGRlZmF1bHRpbmcgZm9yIHNlbGVjdGlvbiBvcGVyYXRpb25zLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5zZXJ2aWNlLnBvbGljeS51aTsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5U3RhdGVFbnVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JUXVpY2tGaXhBY3Rpb25JbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzLlJlZ2lzdHJ5VXRpbHM7Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlUG9saWN5UmVnaXN0cnlVSQotewotICBwcml2YXRlIGZpbmFsIFN0cmluZyBTRVJWSUNFX1BPTElDWV9JRCA9IFNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5QTFVHSU5fSUQgKyAiLnNlcnZpY2Vwb2xpY3l1aSI7IC8vJE5PTi1OTFMtMSQKLSAgICAKLSAgcHVibGljIHZvaWQgbG9hZCggTWFwPFN0cmluZywgQmFzZU9wZXJhdGlvbkltcGw+IG9wZXJhdGlvbk1hcCwgTWFwPFN0cmluZywgTGlzdDxJUXVpY2tGaXhBY3Rpb25JbmZvPj4gcXVpY2tGaXhlcyApCi0gIHsKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBlbGVtZW50cyA9IFBsYXRmb3JtLmdldEV4dGVuc2lvblJlZ2lzdHJ5KCkuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzRm9yKFNFUlZJQ0VfUE9MSUNZX0lEKTsKLSAgICAKLSAgICBmb3IoIElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtZW50IDogZWxlbWVudHMgKQotICAgIHsKLSAgICAgIFN0cmluZyBlbGVtZW50TmFtZSA9IGVsZW1lbnQuZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCBMb2NhbGUuRU5HTElTSCApOwotICAgICAgCi0gICAgICBpZiggZWxlbWVudE5hbWUuZXF1YWxzKCAic2VydmljZXBvbGljeXVpIikgKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGNoaWxkcmVuID0gZWxlbWVudC5nZXRDaGlsZHJlbigpOwotICAgICAgICAKLSAgICAgICAgZm9yKCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgY2hpbGQgOiBjaGlsZHJlbiApCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgbmFtZSA9IGNoaWxkLmdldE5hbWUoKS50b0xvd2VyQ2FzZSggTG9jYWxlLkVOR0xJU0ggKTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZiggbmFtZS5lcXVhbHMoICJvcGVyYXRpb24iICkgKSAvLyROT04tTkxTLTEkCi0gICAgICAgICAgewotICAgICAgICAgICAgbG9hZFNlcnZpY2VQb2xpY3l1aSggY2hpbGQsIG9wZXJhdGlvbk1hcCApOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmKCBuYW1lLmVxdWFscyggInF1aWNrZml4IikgKSAvLyROT04tTkxTLTEkCi0gICAgICAgICAgewotICAgICAgICAgICAgbG9hZFF1aWNrRml4KCBjaGlsZCwgcXVpY2tGaXhlcyApOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgZXJyb3IoICJVbmRlZmluZWQgc2VydmljZSBwb2xpY3kgdWkgZWxlbWVudCwgIiArIG5hbWUgKyAiIGZvdW5kLiIgKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGVycm9yKCAiVW5kZWZpbmVkIHNlcnZpY2UgcG9saWN5IHVpIGVsZW1lbnQsICIgKyBlbGVtZW50TmFtZSArICIgZm91bmQuIiApOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQKLSAgICAgIH0KLSAgICB9IAotICB9Ci0gICAKLSAgcHJpdmF0ZSB2b2lkIGxvYWRTZXJ2aWNlUG9saWN5dWkoIElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwPFN0cmluZywgQmFzZU9wZXJhdGlvbkltcGw+IG9wZXJhdGlvbk1hcCApCi0gIHsKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgID0gUmVnaXN0cnlVdGlscy5nZXRBdHRyaWJ1dGUoIGVsZW1lbnQsICJpZCIgKTsgLy8kTk9OLU5MUy0xJAotICAgIFN0cmluZyAgICAgICAgICAgICAgICAgIHBvbGljeVBhdHRlcm4gICAgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggZWxlbWVudCwgInBvbGljeXBhdHRlcm4iICk7IC8vJE5PTi1OTFMtMSQKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VPbmx5ICAgID0gUmVnaXN0cnlVdGlscy5nZXRBdHRyaWJ1dGUoIGVsZW1lbnQsICJ3b3Jrc3BhY2Vvbmx5IiApOyAvLyROT04tTkxTLTEkCi0gICAgU3RyaW5nICAgICAgICAgICAgICAgICAgdXNlRGVmYXVsdFN0cmluZyA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBlbGVtZW50LCAiZGVmYXVsdGRhdGEiICk7IC8vJE5PTi1OTFMtMSQKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBjaGlsZHJlbiAgICAgICAgID0gZWxlbWVudC5nZXRDaGlsZHJlbigpOwotICAgIElEZXNjcmlwdG9yICAgICAgICAgICAgIGRlc2NyaXB0b3IgICAgICAgPSBudWxsOwotICAgIFN0cmluZyAgICAgICAgICAgICAgICAgIGVudW1JZCAgICAgICAgICAgPSBudWxsOwotICAgIFN0cmluZyAgICAgICAgICAgICAgICAgIGRlZmF1bHRJdGVtICAgICAgPSBudWxsOwotICAgIGJvb2xlYW4gICAgICAgICAgICAgICAgIHNlbGVjdGlvbiAgICAgICAgPSBmYWxzZTsKLSAgICBib29sZWFuICAgICAgICAgICAgICAgICBpY29uICAgICAgICAgICAgID0gZmFsc2U7Ci0gICAgYm9vbGVhbiAgICAgICAgICAgICAgICAgbXVsdGlTZWxlY3QgICAgICA9IGZhbHNlOwotICAgIElDb25maWd1cmF0aW9uRWxlbWVudCAgIGVuYWJsZWRFbGVtZW50ICAgPSBudWxsOwotICAgIElDb25maWd1cmF0aW9uRWxlbWVudCAgIGxhdW5jaEVsZW1lbnQgICAgPSBudWxsOwotICAgIGJvb2xlYW4gICAgICAgICAgICAgICAgIGVycm9yICAgICAgICAgICAgPSBmYWxzZTsKLSAgICBib29sZWFuICAgICAgICAgICAgICAgICB1c2VEZWZhdWx0RGF0YSAgID0gdHJ1ZTsKLSAgICAKLSAgICBpZiggdXNlRGVmYXVsdFN0cmluZyAhPSBudWxsICkKLSAgICB7Ci0gICAgICB1c2VEZWZhdWx0RGF0YSA9IHVzZURlZmF1bHRTdHJpbmcuZXF1YWxzKCAidHJ1ZSIgKTsgICAvLyROT04tTkxTLTEkCi0gICAgfQotICAgIAotICAgIGZvciggSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNoaWxkIDogY2hpbGRyZW4gKQotICAgIHsKLSAgICAgIFN0cmluZyBuYW1lID0gY2hpbGQuZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCBMb2NhbGUuRU5HTElTSCApOwotICAgICAgCi0gICAgICBpZiggbmFtZS5lcXVhbHMoICJkZXNjcmlwdG9yIiApICkgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBkZXNjcmlwdG9yID0gUmVnaXN0cnlVdGlscy5sb2FkRGVzY3JpcHRvciggY2hpbGQgKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoIG5hbWUuZXF1YWxzKCAiZW51bWVyYXRpb24iICkgKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIGVudW1JZCA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBjaGlsZCwgImlkIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgIGRlZmF1bHRJdGVtID0gUmVnaXN0cnlVdGlscy5nZXRBdHRyaWJ1dGUoIGNoaWxkLCAiZGVmYXVsdGl0ZW0iICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgICAgCi0gICAgICAgIGlmKCBlbnVtSWQgPT0gbnVsbCApCi0gICAgICAgIHsKLSAgICAgICAgICBlcnJvciggIlNlcnZpY2UgcG9saWN5IHVpIGVudW1lcmF0aW9uIGVsZW1lbnQgaXMgbWlzc2luZyBpZCBhdHRyaWJ1dGUuIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgICAgZXJyb3IgPSB0cnVlOwotICAgICAgICB9ICAgICAgIAotICAgICAgfQotICAgICAgZWxzZSBpZiggbmFtZS5lcXVhbHMoICJzZWxlY3Rpb24iICkgKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBpY29uVmFsdWUgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggY2hpbGQsICJpY29uIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgIAotICAgICAgICBzZWxlY3Rpb24gPSB0cnVlOwotICAgICAgICAgICAgICAgIAotICAgICAgICBpZiggaWNvblZhbHVlICE9IG51bGwgJiYgaWNvblZhbHVlLmVxdWFsc0lnbm9yZUNhc2UoICJ0cnVlIiApICkgLy8kTk9OLU5MUy0xJAotICAgICAgICB7Ci0gICAgICAgICAgaWNvbiA9IHRydWU7Ci0gICAgICAgICAgdXNlRGVmYXVsdERhdGEgPSB0cnVlOwotICAgICAgICB9ICAgCi0gICAgICAgIAotICAgICAgICBkZWZhdWx0SXRlbSA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBjaGlsZCwgImRlZmF1bHRpdGVtIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGUgZGVmYXVsdEl0ZW0KLSAgICAgICAgaWYoIGRlZmF1bHRJdGVtICE9IG51bGwgJiYgCi0gICAgICAgIAkhZGVmYXVsdEl0ZW0uZXF1YWxzKCBJUG9saWN5U3RhdGVFbnVtLkZBTFNFX0VOVU0pICYmIAotICAgICAgICAJIWRlZmF1bHRJdGVtLmVxdWFscyggSVBvbGljeVN0YXRlRW51bS5UUlVFX0VOVU0gKSApCi0gICAgICAgIHsKLSAgICAgICAgICBlcnJvciggIlRoZSBkZWZhdWx0SXRlbSBhdHRyaWJ1dGUgb2YgYSBzZWxlY3Rpb24gZWxlbWVudCBtdXN0IGJlOiAiICsgSVBvbGljeVN0YXRlRW51bS5UUlVFX0VOVU0gKyAiIG9yICIgKyBJUG9saWN5U3RhdGVFbnVtLkZBTFNFX0VOVU0gKyAiLiIgKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQKLSAgICAgICAgICBlcnJvciA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoIG5hbWUuZXF1YWxzKCAiY29tcGxleCIgKSApIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGxhdW5jaENsYXNzID0gUmVnaXN0cnlVdGlscy5nZXRBdHRyaWJ1dGUoIGNoaWxkLCAibGF1bmNoY2xhc3MiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgICAgCi0gICAgICAgIGlmKCBsYXVuY2hDbGFzcyA9PSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIGVycm9yKCAiU2VydmljZSBwb2xpY3kgdWkgZW51bWVyYXRpb24gZWxlbWVudCBpcyBtaXNzaW5nIGlkIGF0dHJpYnV0ZS4iICk7ICAgICAgICAgICAgICAgICAgICAgLy8kTk9OLU5MUy0xJAotICAgICAgICAgIGVycm9yID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbGF1bmNoRWxlbWVudCA9IGNoaWxkOwotICAgICAgfQotICAgICAgZWxzZSBpZiggbmFtZS5lcXVhbHMoICJlbmFibGVkIiApICkgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBTdHJpbmcgbXVsdGlTZWxlY3RWYWx1ZSA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBjaGlsZCwgIm11bHRpc2VsZWN0IiApLnRvTG93ZXJDYXNlKCBMb2NhbGUuRU5HTElTSCApOyAvLyROT04tTkxTLTEkCi0gICAgICAgCi0gICAgICAgIGlmKCBtdWx0aVNlbGVjdFZhbHVlICE9IG51bGwgJiYgbXVsdGlTZWxlY3RWYWx1ZS5lcXVhbHMoICJ0cnVlIiApKSAvLyROT04tTkxTLTEkCi0gICAgICAgIHsKLSAgICAgICAgICBtdWx0aVNlbGVjdCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAKLSAgICAgICAgU3RyaW5nIGVuYWJsZWRDbGFzcyA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBjaGlsZCwgImVuYWJsZWRjbGFzcyIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgICAKLSAgICAgICAgaWYoIGVuYWJsZWRDbGFzcyAhPSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIGVuYWJsZWRFbGVtZW50ID0gY2hpbGQ7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgCi0gICAgICB7Ci0gICAgICAgIGVycm9yKCAiVW5kZWZpbmVkIHNlcnZpY2UgcG9saWN5IHVpIGVsZW1lbnQsICIgKyBuYW1lICsgIiBmb3VuZC4iICk7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICAgICBlcnJvciA9IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmKCBkZXNjcmlwdG9yID09IG51bGwgKQotICAgIHsKLSAgICAgIGVycm9yKCAiU2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIGVsZW1lbnQgbXVzdCBoYXZlIGEgZGVzY3JpcHRvciBlbGVtZW50IGRlZmluZWQuIiApOyAgIC8vJE5PTi1OTFMtMSQKLSAgICAgIGVycm9yID0gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgaWYoIGlkID09IG51bGwgKQotICAgIHsKLSAgICAgIGVycm9yKCAiSWQgYXR0cmlidXRlIG5vdCBzcGVjaWZpZWQgaW4gc2VydmljZSBwb2xpY3kgdWkgb3BlcmF0aW9uIGVsZW1lbnQuIiApOyAvLyROT04tTkxTLTEkCi0gICAgICBlcnJvciA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIGlmKCBwb2xpY3lQYXR0ZXJuID09IG51bGwgKQotICAgIHsKLSAgICAgIGVycm9yKCAiSWQgYXR0cmlidXRlIG5vdCBzcGVjaWZpZWQgaW4gc2VydmljZSBwb2xpY3kgdWkgb3BlcmF0aW9uIGVsZW1lbnQuIiApOyAvLyROT04tTkxTLTEkCi0gICAgICBlcnJvciA9IHRydWU7ICAgICAKLSAgICB9Ci0gICAgCi0gICAgaWYoICggZW51bUlkID09IG51bGwgJiYgIXNlbGVjdGlvbiAmJiBsYXVuY2hFbGVtZW50ID09IG51bGwpICB8fAotICAgICAgICAoIGVudW1JZCAhPSBudWxsICYmIChzZWxlY3Rpb24gfHwgbGF1bmNoRWxlbWVudCAhPSBudWxsKSkgfHwKLSAgICAgICAgKCBzZWxlY3Rpb24gJiYgKGVudW1JZCAhPSBudWxsIHx8IGxhdW5jaEVsZW1lbnQgIT0gbnVsbCkpIHx8Ci0gICAgICAgICggbGF1bmNoRWxlbWVudCAhPSBudWxsICYmIChzZWxlY3Rpb24gJiYgZW51bUlkICE9IG51bGwpKSkKLSAgICB7Ci0gICAgICBlcnJvciggIlNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbiBlbGVtZW50IG11c3QgaGF2ZSBlaXRoZXIgYW4gZW51bWVyYXRpb24gZWxlbWVudCBvciBhIHNlbGVjdGlvbiBlbGVtZW50IG9yIGEgY29tcGxleCBlbGVtZW50IiApOyAvLyROT04tTkxTLTEkCi0gICAgICBlcnJvciA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIGlmKCAhIGVycm9yICkKLSAgICB7Ci0gICAgICBCYXNlT3BlcmF0aW9uSW1wbCBvcGVyYXRpb24gICAgICAgICAgPSBuZXcgQmFzZU9wZXJhdGlvbkltcGwoKTsKLSAgICAgIGJvb2xlYW4gICAgICAgICAgIHdvcmtzcGFjZU9ubHlWYWx1ZSA9IHdvcmtzcGFjZU9ubHkgIT0gbnVsbCAmJiB3b3Jrc3BhY2VPbmx5LmVxdWFscyggInRydWUiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgb3BlcmF0aW9uLnNldElkKCBpZCApOwotICAgICAgb3BlcmF0aW9uLnNldFBvbGljeUlkUGF0dGVybiggcG9saWN5UGF0dGVybiApOwotICAgICAgb3BlcmF0aW9uLnNldERlc2NyaXB0b3IoIGRlc2NyaXB0b3IgKTsKLSAgICAgIG9wZXJhdGlvbi5zZXRNdWx0aVNlbGVjdCggbXVsdGlTZWxlY3QgKTsKLSAgICAgIG9wZXJhdGlvbi5zZXRFbnVtZXJhdGlvbklkKCBlbnVtSWQgKTsKLSAgICAgIG9wZXJhdGlvbi5zZXRXb3Jrc3BhY2VPbmx5KCB3b3Jrc3BhY2VPbmx5VmFsdWUgKTsKLSAgICAgIG9wZXJhdGlvbi5zZXRVc2VEZWZhdWx0RGF0YSggdXNlRGVmYXVsdERhdGEgKTsKLSAgICAgIAotICAgICAgaWYoIGRlZmF1bHRJdGVtICE9IG51bGwgKQotICAgICAgewotICAgICAgICBvcGVyYXRpb24uc2V0RGVmYXVsdEl0ZW0oIGRlZmF1bHRJdGVtICk7ICAgICAgICAKLSAgICAgIH0KLSAgICAgIAotICAgICAgaWYoIHNlbGVjdGlvbiApCi0gICAgICB7Ci0gICAgICAgIG9wZXJhdGlvbi5zZXRFbnVtZXJhdGlvbklkKCAib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmJvb2xlYW5FbnVtIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgIG9wZXJhdGlvbi5zZXRTZWxlY3Rpb24oIGljb24gKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgaWYoIGxhdW5jaEVsZW1lbnQgIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIG9wZXJhdGlvbi5zZXRDb21wbGV4RWxlbWVudCggbGF1bmNoRWxlbWVudCApOwotICAgICAgfQotICAgICAgCi0gICAgICBpZiggZW5hYmxlZEVsZW1lbnQgIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIG9wZXJhdGlvbi5zZXRFbmFibGVkRWxlbWVudCggZW5hYmxlZEVsZW1lbnQgKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgb3BlcmF0aW9uTWFwLnB1dCggaWQsIG9wZXJhdGlvbiApOwotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGxvYWRRdWlja0ZpeCggSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW1lbnQsIE1hcDxTdHJpbmcsIExpc3Q8SVF1aWNrRml4QWN0aW9uSW5mbz4+IHF1aWNrRml4ZXMgKQotICB7Ci0gICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gICBjaGlsZHJlbiA9IGVsZW1lbnQuZ2V0Q2hpbGRyZW4oICJhY3Rpb24iICk7IC8vJE5PTi1OTFMtMSQKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgIHBsdWdpbklkID0gUmVnaXN0cnlVdGlscy5nZXRBdHRyaWJ1dGUoIGVsZW1lbnQsICJwbHVnaW5pZCIgKTsgLy8kTk9OLU5MUy0xJAotICAgIFN0cmluZyAgICAgICAgICAgICAgICAgICAgY29kZSAgICAgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggZWxlbWVudCwgImNvZGUiICk7IC8vJE5PTi1OTFMtMSQKLSAgICBMaXN0PElRdWlja0ZpeEFjdGlvbkluZm8+IGZpeExpc3QgID0gbmV3IFZlY3RvcjxJUXVpY2tGaXhBY3Rpb25JbmZvPigpOwotICAgIAotICAgIGZvciggSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNoaWxkIDogY2hpbGRyZW4gKQotICAgIHsKLSAgICAgIGxvYWRBY3Rpb24oIGNoaWxkLCBmaXhMaXN0ICk7Ci0gICAgfQotICAgIAotICAgIGlmKCBwbHVnaW5JZCA9PSBudWxsICkKLSAgICB7Ci0gICAgICBlcnJvciggIk1pc3NpbmcgcGx1Z2luSWQgYXR0cmlidXRlIGZvciBTZXJ2aWNlIHBvbGljeSBVSSBxdWljayBmaXggZXh0ZW5zaW9uIiApOyAvLyROT04tTkxTLTEkCi0gICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmKCBjb2RlID09IG51bGwgKQotICAgIHsKLSAgICAgIGVycm9yKCAiTWlzc2luZyBjb2RlIGF0dHJpYnV0ZSBmb3IgU2VydmljZSBwb2xpY3kgVUkgcXVpY2sgZml4IGV4dGVuc2lvbiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiggZml4TGlzdC5zaXplKCkgPT0gMCApCi0gICAgewotICAgICAgZXJyb3IoICJNaXNzaW5nIGFjdGlvbiBlbGVtZW50IGZvciBTZXJ2aWNlIHBvbGljeSBVSSBxdWljayBmaXggZXh0ZW5zaW9uIiApOyAvLyROT04tTkxTLTEkCi0gICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFN0cmluZyBrZXkgPSBwbHVnaW5JZCArICI6IiArIGNvZGU7IC8vJE5PTi1OTFMtMSQKLSAgICBxdWlja0ZpeGVzLnB1dCgga2V5LCBmaXhMaXN0ICk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBsb2FkQWN0aW9uKCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCwgTGlzdDxJUXVpY2tGaXhBY3Rpb25JbmZvPiBmaXhMaXN0ICkKLSAgewotICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGRlc2NFbGVtID0gZWxlbWVudC5nZXRDaGlsZHJlbiggImRlc2NyaXB0b3IiICk7IC8vJE5PTi1OTFMtMSQKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgICBjbGF6eiAgICA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBlbGVtZW50LCAiY2xhc3MiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAKLSAgICBpZiggZGVzY0VsZW0gPT0gbnVsbCApCi0gICAgewotICAgICAgZXJyb3IoICJNaXNzaW5nIGRlc2NyaXB0b3IgZWxlbWVudCBmb3IgU2VydmljZSBwb2xpY3kgVUkgcXVpY2sgZml4IGV4dGVuc2lvbiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgcmV0dXJuOyAgICAgIAotICAgIH0KLSAgICAKLSAgICBpZiggY2xhenogPT0gbnVsbCApCi0gICAgewotICAgICAgZXJyb3IoICJNaXNzaW5nIGNsYXNzIGF0dHJpYnV0ZSBmb3IgU2VydmljZSBwb2xpY3kgVUkgcXVpY2sgZml4IGV4dGVuc2lvbiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgcmV0dXJuOyAgICAgICAgICAgCi0gICAgfQotICAgIAotICAgIElEZXNjcmlwdG9yICAgICAgICAgICAgZGVzY3JpcHRvciA9IFJlZ2lzdHJ5VXRpbHMubG9hZERlc2NyaXB0b3IoIGVsZW1lbnQgKTsKLSAgICBRdWlja0ZpeEFjdGlvbkluZm9JbXBsIGFjdGlvbiAgICAgPSBuZXcgUXVpY2tGaXhBY3Rpb25JbmZvSW1wbCggZWxlbWVudCwgZGVzY3JpcHRvciApOwotICAgIAotICAgIGZpeExpc3QuYWRkKCBhY3Rpb24gKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGVycm9yKCBTdHJpbmcgbWVzc2FnZSApCi0gIHsKLSAgICBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkubG9nRXJyb3IoIG1lc3NhZ2UsIG51bGwgKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9Xc3RTUFVJUGx1Z2luTWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvc2VydmljZS9wb2xpY3kvdWkvV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNDVjMGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9Xc3RTUFVJUGx1Z2luTWVzc2FnZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNSAxOTY5OTcgICBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzCi0gKiAyMDA3MTEwNyAxOTY5OTcgICBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzCi0gKiAyMDA3MTEyMCAgIDIwOTg1OCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzLCBFbmhhbmNpbmcgc2VydmljZSBwb2xpY3kgZnJhbWV3b3JrIGFuZCBVSQotICogMjAwNzEyMTIgICAyMDk4NTggZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIFBldGVycywgRW5oYW5jaW5nIHNlcnZpY2UgcG9saWN5IGZyYW1ld29yayBhbmQgVUkKLSAqIDIwMDkwMzA2ICAgMjI0NjMyIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIEZpeCBTZXJ2aWNlIFBvbGljaWVzIHByZWZlcmVuY2UgcGFnZSBVSQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5zZXJ2aWNlLnBvbGljeS51aTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBXc3RTUFVJUGx1Z2luTWVzc2FnZXMgZXh0ZW5kcyBOTFMgewotCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5zZXJ2aWNlLnBvbGljeS51aS5Xc3RTUFVJUGx1Z2luTWVzc2FnZXMiOy8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgV3N0U1BVSVBsdWdpbk1lc3NhZ2VzKCkgewotCQkvLyBEbyBub3QgaW5zdGFudGlhdGUKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TRVJWSUNFUE9MSUNJRVNfREVTQ1JJUFRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTEFCRUxfU0VSVklDRVBPTElDSUVTX0RFUEVOREVOQ0lFUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BTUF9ERVNDUklQVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BTUF9ERVBFTkRFTkNJRVM7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QU1BfVFJFRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BTUF9ERVRBSUxTVFJFRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBTRVJWSUNFUE9MSUNJRVNfREVQRU5ERU5DSUVTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFNFUlZJQ0VQT0xJQ0lFU19ERVBFTkRFTkNZX0VSUk9SOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFNFUlZJQ0VQT0xJQ0lFU19ERVBFTkRFTkNJRVNfTk9ORTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMSU5LX0NPTkZJR1dPUktTUEFDRV9TRVRUSU5HUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9FTkFCTEVfUFJPSkVDVF9TRVRUSU5HUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9RRkxJTks7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVEVYVF9RRklYX05PU1VHOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRFWFRfREVUQUlMUzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9TRVJWSUNFUE9MSUNJRVNfUEFHRV9ERVNDUklQVElPTjsKLQotCi0Jc3RhdGljIHsKLQkJTkxTLmluaXRpYWxpemVNZXNzYWdlcyhCVU5ETEVfTkFNRSwgV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLmNsYXNzKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL1dzdFNQVUlQbHVnaW5NZXNzYWdlcy5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9Xc3RTUFVJUGx1Z2luTWVzc2FnZXMucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FlMDBlNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL1dzdFNQVUlQbHVnaW5NZXNzYWdlcy5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDcxMDI1IDE5Njk5NyAgIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBQZXRlcnMKLSMgMjAwNzExMDcgMTk2OTk3ICAgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIFBldGVycwotIyAyMDA3MTEyMCAgIDIwOTg1OCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzLCBFbmhhbmNpbmcgc2VydmljZSBwb2xpY3kgZnJhbWV3b3JrIGFuZCBVSQotIyAyMDA3MTIxMiAgIDIwOTg1OCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzLCBFbmhhbmNpbmcgc2VydmljZSBwb2xpY3kgZnJhbWV3b3JrIGFuZCBVSQotIyAyMDA5MDMwNiAgIDIyNDYzMiBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBGaXggU2VydmljZSBQb2xpY2llcyBwcmVmZXJlbmNlIHBhZ2UgVUkKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBTZXJ2aWNlIFBvbGljaWVzIFByZWZlcmVuY2UgcGFnZQotIwotCi1MQUJFTF9TRVJWSUNFUE9MSUNJRVNfREVTQ1JJUFRJT049RGVzY3JpcHRpb246Ci1MQUJFTF9TRVJWSUNFUE9MSUNJRVNfREVQRU5ERU5DSUVTPURlcGVuZGVuY2llczoKLSNleGFtcGxlIG1lc3NhZ2UgYmVsb3cgaXMgQ29tcGxpYW5jZSBsZXZlbCAiU3VnZ2VzdCBjb21wbGlhbmNlIiByZXF1aXJlcyBXUy1JIEFQIDEuMCAgWyBzdWdnZXN0fGlnbm9yZSBdCi1TRVJWSUNFUE9MSUNJRVNfREVQRU5ERU5DSUVTPXswfSBcInsxfVwiIHJlcXVpcmVzIHsyfSB7M30gW3s0fV0KLSNleGFtcGxlIG1lc3NhZ2UgYmVsb3cgaXMgV1MtSSBTU0JQIENvbXBsaWFuY2UgbGV2ZWwgIlN1Z2dlc3QgY29tcGxpYW5jZSIgcmVxdWlyZXMgV1MtSSBBUCAxLjAgIFsgc3VnZ2VzdHxpZ25vcmUgXQotU0VSVklDRVBPTElDSUVTX0RFUEVOREVOQ1lfRVJST1I9IHswfSB7MX0gXCJ7Mn1cIiByZXF1aXJlcyB7M30gezR9IFt7NX1dCi1TRVJWSUNFUE9MSUNJRVNfREVQRU5ERU5DSUVTX05PTkU9Tm9uZQotVE9PTFRJUF9QU1BfREVTQ1JJUFRJT049RGVzY3JpcHRpb24gb2Ygc2VsZWN0ZWQgdHJlZSBub2RlCi1UT09MVElQX1BTUF9ERVBFTkRFTkNJRVM9RGVwZW5kZW5jaWVzIG9mIHNlbGVjdGVkIHRyZWUgbm9kZQotVE9PTFRJUF9QU1BfVFJFRT1TZWxlY3QgYSB0cmVlIG5vZGUgYW5kIHVzZSB0aGUgcGFuZWwgb24gdGhlIHJpZ2h0IHRvIGRlZmluZSByZWxhdGVkIHByZWZlcmVuY2VzCi1UT09MVElQX1BTUF9ERVRBSUxTVFJFRT1TZWxlY3QgYSB0cmVlIG5vZGUgYW5kIHVzZSB0aGUgcGFuZWwgYmVsb3cgdG8gZGVmaW5lIHJlbGF0ZWQgcHJlZmVyZW5jZXMKLUxBQkVMX1FGTElOSz1RdWljayBGaXgKLVRFWFRfUUZJWF9OT1NVRz1ObyBTdWdnZXN0aW9ucy4gU2VlIHRoZSBlcnJvciBtZXNzYWdlIGFuZCBhbnkgbGlzdGVkIGRlcGVuZGVuY2llcyBmb3IgezF9IHRvIHJlc29sdmUgdGhlIGVycm9yLgotVEVYVF9ERVRBSUxTPWRldGFpbHMKLUxJTktfQ09ORklHV09SS1NQQUNFX1NFVFRJTkdTPUNvbmZpZ3VyZSBXb3Jrc3BhY2UgU2V0dGluZ3MuLi4KLUxBQkVMX0VOQUJMRV9QUk9KRUNUX1NFVFRJTkdTPUVuYWJsZSBwcm9qZWN0IHNwZWNpZmljIHNldHRpbmdzCi1MQUJFTF9TRVJWSUNFUE9MSUNJRVNfUEFHRV9ERVNDUklQVElPTj1TcGVjaWZ5IHF1YWxpdHkgb2Ygc2VydmljZSByZWxhdGVkIHNldHRpbmdzOgotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL3ByZWZlcmVuY2VzL1NlcnZpY2VQb2xpY2llc1ByZWZlcmVuY2VQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL3ByZWZlcmVuY2VzL1NlcnZpY2VQb2xpY2llc1ByZWZlcmVuY2VQYWdlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NzA2NDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9wcmVmZXJlbmNlcy9TZXJ2aWNlUG9saWNpZXNQcmVmZXJlbmNlUGFnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNSAxOTY5OTcgICBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzCi0gKiAyMDA3MTEwNyAxOTY5OTcgICBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzCi0gKiAyMDA3MTEyMCAgIDIwOTg1OCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzLCBFbmhhbmNpbmcgc2VydmljZSBwb2xpY3kgZnJhbWV3b3JrIGFuZCBVSQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5zZXJ2aWNlLnBvbGljeS51aS5wcmVmZXJlbmNlczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnByZWZlcmVuY2UuUHJlZmVyZW5jZVBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2g7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5zZXJ2aWNlLnBvbGljeS51aS5TZXJ2aWNlUG9saWNpZXNDb21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTsKLQotcHVibGljIGNsYXNzIFNlcnZpY2VQb2xpY2llc1ByZWZlcmVuY2VQYWdlIGV4dGVuZHMgUHJlZmVyZW5jZVBhZ2UgaW1wbGVtZW50cwotCQlJV29ya2JlbmNoUHJlZmVyZW5jZVBhZ2UsIFNlbGVjdGlvbkxpc3RlbmVyCi0KLXsKLQlTZXJ2aWNlUG9saWNpZXNDb21wb3NpdGUgcHJlZmVyZW5jZVBhZ2U7Ci0JQ29tcG9zaXRlIHN1cGVyUGFyZW50OwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBR0VfSUQgPSAib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLndzaS5wcmVmZXJlbmNlcy5XU0lDb21wbGlhbmNlUHJlZmVyZW5jZVBhZ2UiOyAvLyROT04tTkxTLTEkCi0KLQkvKioKLQkgKiBDcmVhdGVzIHByZWZlcmVuY2UgcGFnZSBjb250cm9scyBvbiBkZW1hbmQuCi0JICogCi0JICogQHBhcmFtIHBhcmVudENvbXBvc2l0ZQotCSAqICAgICAgICAgICAgdGhlIHBhcmVudCBmb3IgdGhlIHByZWZlcmVuY2UgcGFnZQotCSAqLwotCXByb3RlY3RlZCBDb250cm9sIGNyZWF0ZUNvbnRlbnRzKENvbXBvc2l0ZSBzdXBlcnBhcmVudCkgewotCQlwcmVmZXJlbmNlUGFnZSA9IG5ldyBTZXJ2aWNlUG9saWNpZXNDb21wb3NpdGUoc3VwZXJwYXJlbnQsIG51bGwsIHRoaXMpOwotCQlvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZy5hcHBseURpYWxvZ0ZvbnQoc3VwZXJwYXJlbnQpOwotCQl0aGlzLnN1cGVyUGFyZW50ID0gc3VwZXJwYXJlbnQ7Ci0JCXJldHVybiBwcmVmZXJlbmNlUGFnZTsKLQotCX0KLQotCS8qKgotCSAqIERvZXMgYW55dGhpbmcgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIGRlZmF1bHQgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0JICovCi0JcHJvdGVjdGVkIHZvaWQgcGVyZm9ybURlZmF1bHRzKCkgewotCQlwcmVmZXJlbmNlUGFnZS5wZXJmb3JtRGVmYXVsdHMoKTsKLQkJSVN0YXR1cyBlcnJvciA9IHByZWZlcmVuY2VQYWdlLmdldEVycm9yKCk7Ci0JCWlmIChlcnJvciA9PSBudWxsKSB7Ci0JCQlzdXBlci5zZXRWYWxpZCh0cnVlKTsKLQkJCXN1cGVyLnNldEVycm9yTWVzc2FnZShudWxsKTsKLQkJfSBlbHNlIHsKLQkJCXN1cGVyLnNldEVycm9yTWVzc2FnZShlcnJvci5nZXRNZXNzYWdlKCkpOwotCQkJc3VwZXIuc2V0VmFsaWQoZmFsc2UpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogRG8gYW55dGhpbmcgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIE9LIGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkLgotCSAqIAotCSAqIEByZXR1cm4gd2hldGhlciBpdCBpcyBva2F5IHRvIGNsb3NlIHRoZSBwcmVmZXJlbmNlIHBhZ2UKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBwZXJmb3JtT2soKSB7Ci0JCXN0b3JlVmFsdWVzKCk7Ci0JCXJldHVybiB0cnVlOwotCX0KLQotCS8qKgotCSAqIFN0b3JlcyB0aGUgdmFsdWVzIG9mIHRoZSBjb250cm9scyBiYWNrIHRvIHRoZSBwcmVmZXJlbmNlIHN0b3JlLgotCSAqLwotCXByaXZhdGUgdm9pZCBzdG9yZVZhbHVlcygpIHsKLQkJU2VydmljZVBvbGljeVBsYXRmb3JtLmdldEluc3RhbmNlKCkuY29tbWl0Q2hhbmdlcygpOwotCX0KLQotCS8qKgotCSAqIERvIGFueXRoaW5nIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBDYW5jZWwgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0JICogCi0JICogQHJldHVybiB3aGV0aGVyIGl0IGlzIG9rYXkgdG8gY2xvc2UgdGhlIHByZWZlcmVuY2UgcGFnZQotCSAqLwotCXB1YmxpYyBib29sZWFuIHBlcmZvcm1DYW5jZWwoKSB7Ci0JCVNlcnZpY2VQb2xpY3lQbGF0Zm9ybS5nZXRJbnN0YW5jZSgpLmRpc2NhcmRDaGFuZ2VzKCk7Ci0JCXJldHVybiB0cnVlOwotCX0KLQotCS8qKgotCSAqIERvIGFueXRoaW5nIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBPSyBidXR0b24gaGFzIGJlZW4gcHJlc3NlZC4KLQkgKiAKLQkgKi8KLQlwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtQXBwbHkoKSB7Ci0JCXN0b3JlVmFsdWVzKCk7Ci0JfQotCi0JLyoqCi0JICogQHNlZSBJV29ya2JlbmNoUHJlZmVyZW5jZVBhZ2UKLQkgKi8KLQlwdWJsaWMgdm9pZCBpbml0KElXb3JrYmVuY2ggd29ya2JlbmNoKSB7Ci0JfQotCi0JLyoqCi0JICogQHJldHVybiB3aGV0aGVyIGl0IGlzIG9rYXkgdG8gY2xvc2UgdGhlIHByZWZlcmVuY2UgcGFnZQotCSAqLwotCXB1YmxpYyBib29sZWFuIG9rVG9MZWF2ZSgpIHsKLQkJcmV0dXJuIHByZWZlcmVuY2VQYWdlLmdldEVycm9yKCkgPT0gbnVsbDsKLQotCX0KLQotCXB1YmxpYyB2b2lkIGRpc3Bvc2UoKSB7Ci0JCXN1cGVyLmRpc3Bvc2UoKTsKLQkJcHJlZmVyZW5jZVBhZ2UuZGlzcG9zZSgpOwotCX0KLQotCXB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7Ci0KLQl9Ci0KLQlwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7Ci0JCUlTdGF0dXMgZXJyb3IgPSBwcmVmZXJlbmNlUGFnZS5nZXRFcnJvcigpOwotCQlpZiAoZXJyb3IgPT0gbnVsbCkgewotCQkJc3VwZXIuc2V0VmFsaWQodHJ1ZSk7Ci0JCQlzdXBlci5zZXRFcnJvck1lc3NhZ2UobnVsbCk7Ci0JCX0gZWxzZSB7Ci0JCQlzdXBlci5zZXRFcnJvck1lc3NhZ2UoZXJyb3IuZ2V0TWVzc2FnZSgpKTsKLQkJCXN1cGVyLnNldFZhbGlkKGZhbHNlKTsKLQkJfQotCi0JfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL3Byb3BlcnRpZXMvU2VydmljZVBvbGljaWVzUHJvcGVydHlQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3NlcnZpY2UvcG9saWN5L3VpL3Byb3BlcnRpZXMvU2VydmljZVBvbGljaWVzUHJvcGVydHlQYWdlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjYTBhZjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9wcm9wZXJ0aWVzL1NlcnZpY2VQb2xpY2llc1Byb3BlcnR5UGFnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzExICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTEwNyAxOTY5OTcgICBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzCi0gKiAyMDA3MTEwOCAxOTY5OTcgICBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzCi0gKiAyMDA3MTEyMCAgIDIwOTg1OCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzLCBFbmhhbmNpbmcgc2VydmljZSBwb2xpY3kgZnJhbWV3b3JrIGFuZCBVSQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5zZXJ2aWNlLnBvbGljeS51aS5wcm9wZXJ0aWVzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkNvbnRyb2xFbmFibGVTdGF0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZ1BhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5JTWVzc2FnZVByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaW5rOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmRpYWxvZ3MuUHJlZmVyZW5jZXNVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmRpYWxvZ3MuUHJvcGVydHlQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5zZXJ2aWNlLnBvbGljeS51aS5TZXJ2aWNlUG9saWNpZXNDb21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnNlcnZpY2UucG9saWN5LnVpLldzdFNQVUlQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuc2VydmljZS5wb2xpY3kudWkucHJlZmVyZW5jZXMuU2VydmljZVBvbGljaWVzUHJlZmVyZW5jZVBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuU2VydmljZVBvbGljeUFjdGl2YXRvclVJOwotCi1wdWJsaWMgY2xhc3MgU2VydmljZVBvbGljaWVzUHJvcGVydHlQYWdlIGV4dGVuZHMgUHJvcGVydHlQYWdlIGltcGxlbWVudHMKLQkJU2VsZWN0aW9uTGlzdGVuZXIgewotCi0JcHJpdmF0ZSBTZXJ2aWNlUG9saWNpZXNDb21wb3NpdGUgcHJvcGVydHlQYWdlOwotCXByaXZhdGUgSVByb2plY3QgcHJvamVjdDsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQUdFX0lEID0gIm9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS53c2kucHJvcGVydGllcy5XU0lDb21wbGlhbmNlUHJvcGVydHlQYWdlIjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgQnV0dG9uIGZVc2VQcm9qZWN0U2V0dGluZ3M7Ci0JcHJpdmF0ZSBMaW5rIGZDaGFuZ2VXb3Jrc3BhY2VTZXR0aW5nczsKLQlwcml2YXRlIENvbnRyb2xFbmFibGVTdGF0ZSBmQmxvY2tFbmFibGVTdGF0ZTsKLQlwcml2YXRlIENvbnRyb2wgZkNvbmZpZ3VyYXRpb25CbG9ja0NvbnRyb2w7Ci0JcHJpdmF0ZSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gcGxhdGZvcm0gPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0KLQkJCS5nZXRJbnN0YW5jZSgpOwotCi0JcHVibGljIFNlcnZpY2VQb2xpY2llc1Byb3BlcnR5UGFnZSgpIHsKLQkJZkJsb2NrRW5hYmxlU3RhdGUgPSBudWxsOwotCX0KLQotCXByb3RlY3RlZCBDb250cm9sIGNyZWF0ZUNvbnRlbnRzKENvbXBvc2l0ZSBzdXBlcnBhcmVudCkgewotCQlwcm9qZWN0ID0gKElQcm9qZWN0KSBnZXRFbGVtZW50KCkuZ2V0QWRhcHRlcihJUHJvamVjdC5jbGFzcyk7Ci0JCWJvb2xlYW4gcHJvamVjdFByZWZzRW5hYmxlZCA9IHBsYXRmb3JtCi0JCQkJLmlzUHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChwcm9qZWN0KTsKLQkJaWYgKCFwcm9qZWN0UHJlZnNFbmFibGVkKSB7Ci0JCQkvL2VuYWJsZSB0aGVtIHNvIHRoYXQgc2VydmljZSBwb2xpY2llcyBjb21wb3NpdGUgVUkgcmVmbGVjdHMgCi0JCQkvL2N1cnJlbnRseSBzZXQgcHJvamVjdCBwcmVmZXJlbmNlcywgb3RoZXJ3aXNlIHNob3dzIHdvcmtzcGFjZSAKLQkJCS8vcHJlZmVyZW5jZXMgYW5kIHdvdWxkIG5lZWQgdG8gcmVkcmF3IHRyZWUgd2hlbiB1c2VyIGVuYWJsZXMgdGhlbSAKLQkJCXBsYXRmb3JtLnNldFByb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQocHJvamVjdCwgdHJ1ZSk7Ci0JCX0KLQkJcHJvcGVydHlQYWdlID0gbmV3IFNlcnZpY2VQb2xpY2llc0NvbXBvc2l0ZShzdXBlcnBhcmVudCwgcHJvamVjdCwgdGhpcyk7Ci0JCXBsYXRmb3JtLnNldFByb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQocHJvamVjdCwgcHJvamVjdFByZWZzRW5hYmxlZCk7Ci0JCWZDb25maWd1cmF0aW9uQmxvY2tDb250cm9sID0gcHJvcGVydHlQYWdlOwotCQllbmFibGVQcmVmZXJlbmNlQ29udGVudChwcm9qZWN0UHJlZnNFbmFibGVkKTsKLQkJZlVzZVByb2plY3RTZXR0aW5ncy5zZXRTZWxlY3Rpb24ocHJvamVjdFByZWZzRW5hYmxlZCk7Ci0JCXVwZGF0ZUxpbmtWaXNpYmlsaXR5KCk7Ci0KLQkJb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2cuYXBwbHlEaWFsb2dGb250KHN1cGVycGFyZW50KTsKLQkJcmV0dXJuIHByb3BlcnR5UGFnZTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQlwcm9wZXJ0eVBhZ2Uud2lkZ2V0RGVmYXVsdFNlbGVjdGVkKGUpOwotCX0KLQotCXB1YmxpYyB2b2lkIGRpc3Bvc2UoKSB7Ci0JCXN1cGVyLmRpc3Bvc2UoKTsKLQkJcHJvcGVydHlQYWdlLmRpc3Bvc2UoKTsKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBva1RvTGVhdmUoKSB7Ci0JCXJldHVybiBwcm9wZXJ0eVBhZ2UuZ2V0RXJyb3IoKSA9PSBudWxsOwotCi0JfQotCi0JcHJvdGVjdGVkIHZvaWQgcGVyZm9ybUFwcGx5KCkgewotCQlpZiAoIWZVc2VQcm9qZWN0U2V0dGluZ3MuZ2V0U2VsZWN0aW9uKCkpIHsKLQkJCXBsYXRmb3JtLnNldFByb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQocHJvamVjdCwgZmFsc2UpOwotCQl9Ci0JCXN0b3JlVmFsdWVzKCk7Ci0JfQotCi0JLyoqCi0JICogRG8gYW55dGhpbmcgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIENhbmNlbCBidXR0b24gaGFzIGJlZW4gcHJlc3NlZC4KLQkgKiAgQHJldHVybiB3aGV0aGVyIGl0IGlzIG9rYXkgdG8gY2xvc2UgdGhlIHByZWZlcmVuY2UgcGFnZQotCSAqLwotCXB1YmxpYyBib29sZWFuIHBlcmZvcm1DYW5jZWwoKSB7Ci0JCXBsYXRmb3JtLmRpc2NhcmRDaGFuZ2VzKHByb2plY3QpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQkvKioKLQkgKiBEb2VzIGFueXRoaW5nIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBkZWZhdWx0IGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkLgotCSAqLwotCXByb3RlY3RlZCB2b2lkIHBlcmZvcm1EZWZhdWx0cygpIHsKLQkJZW5hYmxlUHJvamVjdFNwZWNpZmljU2V0dGluZ3MoZmFsc2UpOwotCQlwbGF0Zm9ybS5zZXRQcm9qZWN0UHJlZmVyZW5jZXNFbmFibGVkKHByb2plY3QsIGZhbHNlKTsKLQkJcHJvcGVydHlQYWdlLnBlcmZvcm1EZWZhdWx0cygpOwotCQlJU3RhdHVzIGVycm9yID0gcHJvcGVydHlQYWdlLmdldEVycm9yKCk7Ci0JCWlmIChlcnJvciA9PSBudWxsKSB7Ci0JCQlzdXBlci5zZXRWYWxpZCh0cnVlKTsKLQkJCXN1cGVyLnNldEVycm9yTWVzc2FnZShudWxsKTsKLQkJfSBlbHNlIHsKLQkJCXN1cGVyLnNldEVycm9yTWVzc2FnZShlcnJvci5nZXRNZXNzYWdlKCkpOwotCQkJc3VwZXIuc2V0VmFsaWQoZmFsc2UpOwotCQl9Ci0KLQl9Ci0KLQkvKioKLQkgKiBEbyBhbnl0aGluZyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgT0sgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0JICogIEByZXR1cm4gd2hldGhlciBpdCBpcyBva2F5IHRvIGNsb3NlIHRoZSBwcmVmZXJlbmNlIHBhZ2UKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBwZXJmb3JtT2soKSB7Ci0JCWlmICghZlVzZVByb2plY3RTZXR0aW5ncy5nZXRTZWxlY3Rpb24oKSkgewotCQkJcGxhdGZvcm0uc2V0UHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChwcm9qZWN0LCBmYWxzZSk7Ci0JCX0KLQkJc3RvcmVWYWx1ZXMoKTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JLyoqCi0JICogU3RvcmVzIHRoZSB2YWx1ZXMgb2YgdGhlIGNvbnRyb2xzIGJhY2sgdG8gdGhlIHByZWZlcmVuY2Ugc3RvcmUuCi0JICovCi0JcHJpdmF0ZSB2b2lkIHN0b3JlVmFsdWVzKCkgewotCQlwbGF0Zm9ybS5jb21taXRDaGFuZ2VzKHByb2plY3QpOwotCX0KLQotCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJSVN0YXR1cyBlcnJvciA9IHByb3BlcnR5UGFnZS5nZXRFcnJvcigpOwotCQlpZiAoZXJyb3IgPT0gbnVsbCkgewotCQkJc3VwZXIuc2V0VmFsaWQodHJ1ZSk7Ci0JCQlzdXBlci5zZXRFcnJvck1lc3NhZ2UobnVsbCk7Ci0JCX0gZWxzZSB7Ci0JCQlzdXBlci5zZXRFcnJvck1lc3NhZ2UoZXJyb3IuZ2V0TWVzc2FnZSgpKTsKLQkJCXN1cGVyLnNldFZhbGlkKGZhbHNlKTsKLQkJfQotCi0JfQotCi0JcHJvdGVjdGVkIExhYmVsIGNyZWF0ZURlc2NyaXB0aW9uTGFiZWwoQ29tcG9zaXRlIHBhcmVudCkgewotCQkvLwkJCWZQYXJlbnRDb21wb3NpdGU9IHBhcmVudDsKLQkJQ29tcG9zaXRlIGNvbXBvc2l0ZSA9IG5ldyBDb21wb3NpdGUocGFyZW50LCBTV1QuTk9ORSk7Ci0JCWNvbXBvc2l0ZS5zZXRGb250KHBhcmVudC5nZXRGb250KCkpOwotCQlHcmlkTGF5b3V0IGxheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0JCWxheW91dC5tYXJnaW5IZWlnaHQgPSAwOwotCQlsYXlvdXQubWFyZ2luV2lkdGggPSAwOwotCQlsYXlvdXQubnVtQ29sdW1ucyA9IDI7Ci0JCWNvbXBvc2l0ZS5zZXRMYXlvdXQobGF5b3V0KTsKLQkJY29tcG9zaXRlCi0JCQkJLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKFNXVC5GSUxMLCBTV1QuQ0VOVEVSLCB0cnVlLCBmYWxzZSkpOwotCi0JCVNlbGVjdGlvbkxpc3RlbmVyIGxpc3RlbmVyID0gbmV3IFNlbGVjdGlvbkxpc3RlbmVyKCkgewotCQkJcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IHNlKSB7Ci0JCQl9Ci0KLQkJCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IHNlKSB7Ci0JCQkJZW5hYmxlUHJvamVjdFNwZWNpZmljU2V0dGluZ3MoZlVzZVByb2plY3RTZXR0aW5ncwotCQkJCQkJLmdldFNlbGVjdGlvbigpKTsKLQkJCQlwbGF0Zm9ybS5zZXRQcm9qZWN0UHJlZmVyZW5jZXNFbmFibGVkKHByb2plY3QsCi0JCQkJCQlmVXNlUHJvamVjdFNldHRpbmdzLmdldFNlbGVjdGlvbigpKTsKLQkJCX0KLQkJfTsKLQotCQlmVXNlUHJvamVjdFNldHRpbmdzID0gbmV3IEJ1dHRvbihjb21wb3NpdGUsIFNXVC5DSEVDSyk7Ci0JCWZVc2VQcm9qZWN0U2V0dGluZ3MuYWRkU2VsZWN0aW9uTGlzdGVuZXIobGlzdGVuZXIpOwotCQlmVXNlUHJvamVjdFNldHRpbmdzCi0JCQkJLnNldFRleHQoV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX0VOQUJMRV9QUk9KRUNUX1NFVFRJTkdTKTsKLQkJR3JpZERhdGEgZ2QgPSBuZXcgR3JpZERhdGEoKTsKLQkJZ2QuaG9yaXpvbnRhbFNwYW4gPSAxOwotCQlnZC5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLQkJZlVzZVByb2plY3RTZXR0aW5ncy5zZXRMYXlvdXREYXRhKGdkKTsKLQkJZkNoYW5nZVdvcmtzcGFjZVNldHRpbmdzID0gY3JlYXRlTGluayhjb21wb3NpdGUsCi0JCQkJV3N0U1BVSVBsdWdpbk1lc3NhZ2VzLkxJTktfQ09ORklHV09SS1NQQUNFX1NFVFRJTkdTKTsKLQkJZkNoYW5nZVdvcmtzcGFjZVNldHRpbmdzLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKFNXVC5FTkQsCi0JCQkJU1dULkNFTlRFUiwgZmFsc2UsIGZhbHNlKSk7Ci0KLQkJTGFiZWwgaG9yaXpvbnRhbExpbmUgPSBuZXcgTGFiZWwoY29tcG9zaXRlLCBTV1QuU0VQQVJBVE9SCi0JCQkJfCBTV1QuSE9SSVpPTlRBTCk7Ci0JCWhvcml6b250YWxMaW5lLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTEwsIEdyaWREYXRhLkZJTEwsCi0JCQkJdHJ1ZSwgZmFsc2UsIDIsIDEpKTsKLQkJaG9yaXpvbnRhbExpbmUuc2V0Rm9udChjb21wb3NpdGUuZ2V0Rm9udCgpKTsKLQotCQlyZXR1cm4gc3VwZXIuY3JlYXRlRGVzY3JpcHRpb25MYWJlbChwYXJlbnQpOwotCX0KLQotCXByaXZhdGUgTGluayBjcmVhdGVMaW5rKENvbXBvc2l0ZSBjb21wb3NpdGUsIFN0cmluZyB0ZXh0KSB7Ci0JCUxpbmsgbGluayA9IG5ldyBMaW5rKGNvbXBvc2l0ZSwgU1dULk5PTkUpOwotCQlsaW5rLnNldEZvbnQoY29tcG9zaXRlLmdldEZvbnQoKSk7Ci0JCWxpbmsuc2V0VGV4dCgiPEE+IiArIHRleHQgKyAiPC9BPiIpOyAvLyROT04tTkxTLTEkLy8kTk9OLU5MUy0yJAotCQlsaW5rLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25MaXN0ZW5lcigpIHsKLQkJCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJCQlvcGVuV29ya3NwYWNlUHJlZmVyZW5jZXMoKExpbmspIGUud2lkZ2V0KTsKLQkJCX0KLQotCQkJcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJCQlvcGVuV29ya3NwYWNlUHJlZmVyZW5jZXMoKExpbmspIGUud2lkZ2V0KTsKLQkJCX0KLQkJfSk7Ci0JCXJldHVybiBsaW5rOwotCX0KLQotCXByaXZhdGUgdm9pZCB1cGRhdGVMaW5rVmlzaWJpbGl0eSgpIHsKLQkJaWYgKGZDaGFuZ2VXb3Jrc3BhY2VTZXR0aW5ncyA9PSBudWxsCi0JCQkJfHwgZkNoYW5nZVdvcmtzcGFjZVNldHRpbmdzLmlzRGlzcG9zZWQoKSkgewotCQkJcmV0dXJuOwotCQl9Ci0KLQkJZkNoYW5nZVdvcmtzcGFjZVNldHRpbmdzLnNldEVuYWJsZWQoIXVzZVByb2plY3RTZXR0aW5ncygpKTsKLQl9Ci0KLQlwcm90ZWN0ZWQgYm9vbGVhbiB1c2VQcm9qZWN0U2V0dGluZ3MoKSB7Ci0JCXJldHVybiBmVXNlUHJvamVjdFNldHRpbmdzLmdldFNlbGVjdGlvbigpOwotCX0KLQotCXByb3RlY3RlZCB2b2lkIGVuYWJsZVByZWZlcmVuY2VDb250ZW50KGJvb2xlYW4gZW5hYmxlKSB7Ci0JCWlmIChlbmFibGUpIHsKLQkJCWlmIChmQmxvY2tFbmFibGVTdGF0ZSAhPSBudWxsKSB7Ci0JCQkJZkJsb2NrRW5hYmxlU3RhdGUucmVzdG9yZSgpOwotCQkJCWZCbG9ja0VuYWJsZVN0YXRlID0gbnVsbDsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCWlmIChmQmxvY2tFbmFibGVTdGF0ZSA9PSBudWxsKSB7Ci0JCQkJZkJsb2NrRW5hYmxlU3RhdGUgPSBDb250cm9sRW5hYmxlU3RhdGUKLQkJCQkJCS5kaXNhYmxlKGZDb25maWd1cmF0aW9uQmxvY2tDb250cm9sKTsKLQkJCX0KLQkJfQotCX0KLQotCXByb3RlY3RlZCB2b2lkIGVuYWJsZVByb2plY3RTcGVjaWZpY1NldHRpbmdzKAotCQkJYm9vbGVhbiB1c2VQcm9qZWN0U3BlY2lmaWNTZXR0aW5ncykgewotCQlmVXNlUHJvamVjdFNldHRpbmdzLnNldFNlbGVjdGlvbih1c2VQcm9qZWN0U3BlY2lmaWNTZXR0aW5ncyk7Ci0JCWVuYWJsZVByZWZlcmVuY2VDb250ZW50KHVzZVByb2plY3RTcGVjaWZpY1NldHRpbmdzKTsKLQkJdXBkYXRlTGlua1Zpc2liaWxpdHkoKTsKLQkJZG9TdGF0dXNDaGFuZ2VkKCk7Ci0JfQotCi0JcHJvdGVjdGVkIHZvaWQgZG9TdGF0dXNDaGFuZ2VkKCkgewotCQlpZiAodXNlUHJvamVjdFNldHRpbmdzKCkpIHsKLQkJCUlTdGF0dXMgc3RhdHVzOwotCQkJc3RhdHVzID0gKHByb3BlcnR5UGFnZS5nZXRFcnJvcigpID09IG51bGwpID8gbmV3IFN0YXR1cyhJU3RhdHVzLk9LLAotCQkJCQlTZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuUExVR0lOX0lELCAiIikgOiBwcm9wZXJ0eVBhZ2UgLy8kTk9OLU5MUy0xJAotCQkJCQkuZ2V0RXJyb3IoKTsKLQkJCXVwZGF0ZVN0YXR1cyhzdGF0dXMpOwotCQl9IGVsc2UgewotCQkJdXBkYXRlU3RhdHVzKG5ldyBTdGF0dXMoSVN0YXR1cy5PSywKLQkJCQkJU2VydmljZVBvbGljeUFjdGl2YXRvclVJLlBMVUdJTl9JRCwgIiIpKTsgLy8kTk9OLU5MUy0xJAotCQl9Ci0JfQotCi0JcHJpdmF0ZSB2b2lkIHVwZGF0ZVN0YXR1cyhJU3RhdHVzIHN0YXR1cykgewotCQlib29sZWFuIHZhbGlkID0gKHN0YXR1cyA9PSBudWxsIHx8ICFzdGF0dXMubWF0Y2hlcyhJU3RhdHVzLkVSUk9SKSk7Ci0JCXNldFZhbGlkKHZhbGlkKTsKLQkJYXBwbHlUb1N0YXR1c0xpbmUodGhpcywgc3RhdHVzKTsKLQl9Ci0KLQkvKioKLQkgKiBBcHBsaWVzIHRoZSBzdGF0dXMgdG8gdGhlIHN0YXR1cyBsaW5lIG9mIGEgZGlhbG9nIHBhZ2UuCi0JICogQHBhcmFtIHBhZ2UgdGhlIGRpYWxvZyBwYWdlCi0JICogQHBhcmFtIHN0YXR1cyB0aGUgc3RhdHVzIHRvIGFwcGx5Ci0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIGFwcGx5VG9TdGF0dXNMaW5lKERpYWxvZ1BhZ2UgcGFnZSwgSVN0YXR1cyBzdGF0dXMpIHsKLQkJU3RyaW5nIG1lc3NhZ2UgPSBzdGF0dXMuZ2V0TWVzc2FnZSgpOwotCQlpZiAobWVzc2FnZSAhPSBudWxsICYmIG1lc3NhZ2UubGVuZ3RoKCkgPT0gMCkgewotCQkJbWVzc2FnZSA9IG51bGw7Ci0JCX0KLQkJc3dpdGNoIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSkgewotCQljYXNlIElTdGF0dXMuT0s6Ci0JCQlwYWdlLnNldE1lc3NhZ2UobWVzc2FnZSwgSU1lc3NhZ2VQcm92aWRlci5OT05FKTsKLQkJCXBhZ2Uuc2V0RXJyb3JNZXNzYWdlKG51bGwpOwotCQkJYnJlYWs7Ci0JCWNhc2UgSVN0YXR1cy5XQVJOSU5HOgotCQkJcGFnZS5zZXRNZXNzYWdlKG1lc3NhZ2UsIElNZXNzYWdlUHJvdmlkZXIuV0FSTklORyk7Ci0JCQlwYWdlLnNldEVycm9yTWVzc2FnZShudWxsKTsKLQkJCWJyZWFrOwotCQljYXNlIElTdGF0dXMuSU5GTzoKLQkJCXBhZ2Uuc2V0TWVzc2FnZShtZXNzYWdlLCBJTWVzc2FnZVByb3ZpZGVyLklORk9STUFUSU9OKTsKLQkJCXBhZ2Uuc2V0RXJyb3JNZXNzYWdlKG51bGwpOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlwYWdlLnNldE1lc3NhZ2UobnVsbCk7Ci0JCQlwYWdlLnNldEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCi0JcHJvdGVjdGVkIGZpbmFsIHZvaWQgb3BlbldvcmtzcGFjZVByZWZlcmVuY2VzKE9iamVjdCBkYXRhKSB7Ci0JCVN0cmluZyBpZCA9IFNlcnZpY2VQb2xpY2llc1ByZWZlcmVuY2VQYWdlLlBBR0VfSUQ7Ci0JCVByZWZlcmVuY2VzVXRpbC5jcmVhdGVQcmVmZXJlbmNlRGlhbG9nT24oZ2V0U2hlbGwoKSwgaWQsCi0JCQkJbmV3IFN0cmluZ1tdIHsgaWQgfSwgZGF0YSkub3BlbigpOwotCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9wcm9wZXJ0aWVzL1NlcnZpY2VQb2xpY3lQcm9wZXJ0eVRlc3Rlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9zZXJ2aWNlL3BvbGljeS91aS9wcm9wZXJ0aWVzL1NlcnZpY2VQb2xpY3lQcm9wZXJ0eVRlc3Rlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDUwNWJjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvc2VydmljZS9wb2xpY3kvdWkvcHJvcGVydGllcy9TZXJ2aWNlUG9saWN5UHJvcGVydHlUZXN0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUKLSAqIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnNlcnZpY2UucG9saWN5LnVpLnByb3BlcnRpZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zLlByb3BlcnR5VGVzdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5TZXJ2aWNlUG9saWN5UGxhdGZvcm07Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlUG9saWN5UHJvcGVydHlUZXN0ZXIgZXh0ZW5kcyBQcm9wZXJ0eVRlc3RlcgotewotCi0gIHB1YmxpYyBib29sZWFuIHRlc3QoT2JqZWN0IHJlY2VpdmVyLCBTdHJpbmcgcHJvcGVydHksIE9iamVjdFtdIGFyZ3MsIE9iamVjdCBleHBlY3RlZFZhbHVlKQotICB7Ci0gICAgcmV0dXJuIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybS5nZXRJbnN0YW5jZSgpLmlzRW5hYmxlZCggcmVjZWl2ZXIgKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JRW5hYmxlT3BlcmF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc3MzE4OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBJbml0aWFsIGNvZGluZy4KLSAqIDIwMDgwNTE2ICAgMjMyNjAzIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIENsZWFuIHVwIGphdmEgZG9jCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci0KLS8qKgotICogCi0gKiBUaGlzIGludGVyZmFjZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGVuYWJsZWRDbGFzcyBhdHRyaWJ1dGUgb2YgdGhlCi0gKiBlbmFibGVkIGVsZW1lbnQuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElFbmFibGVPcGVyYXRpb24KLXsKLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciB0aGUgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdC4KLSAgICogCi0gICAqIEBwYXJhbSBzZWxlY3RlZFBvbGljaWVzIHRoZSBzZWxlY3RlZCBzZXJ2aWNlIHBvbGljaWVzLgotICAgKiBAcmV0dXJuIHJldHVybnMgd2hldGhlciB0aGUgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCggTGlzdDxJU2VydmljZVBvbGljeT4gc2VsZWN0ZWRQb2xpY2llcyApOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JTGF1bmNoT3BlcmF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE2YzNmMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBJbml0aWFsIGNvZGluZy4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeTsKLQotLyoqCi0gKiAKLSAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgbGF1bmNoQ2xhc3MgYXR0cmlidXRlIG9mCi0gKiB0aGUgY29tcGxleCBlbGVtZW50LgotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJTGF1bmNoT3BlcmF0aW9uCi17Ci0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgdGhpcyBjb21wbGV4IG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBzZWxlY3RlZFBvbGljaWVzIGEgbGlzdCBvZiB0aGUgc2VydmljZSBwb2xpY2llcyB0aGF0IHdlcmUgc2VsZWN0ZWQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBsYXVuY2goIExpc3Q8SVNlcnZpY2VQb2xpY3k+IHNlbGVjdGVkUG9saWNpZXMgKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZjVmN2UuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEluaXRpYWwgY29kaW5nLgotICogMjAwODA1MTYgICAyMzI2MDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQ2xlYW4gdXAgamF2YSBkb2MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci0KLS8qKgotICogCi0gKiBUaGlzIGludGVyZmFjZSByZXByZXNlbnRzIGEgU2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHRoYXQgaGFzIGJlZW4gZGVmaW5lZAotICogaW4gdGhlIHBsdWdpbi54bWwgbWV0YSBkYXRhLgotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJUG9saWN5T3BlcmF0aW9uCi17Ci0gIC8qKgotICAgKiAKLSAgICogSW5kaWNhdGVzIHRoZSBraW5kIG9mIFNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbiB0aGF0IHRoaXMgb2JqZWN0IHJlcHJlc2VudHMuCi0gICAqIDx1bD4KLSAgICogPGxpPmVudW1lcmF0aW9uOiBpbmRpY2F0ZXMgdGhhdCBhIGxpc3Qgb2YgZW51bWVyYXRlZCB2YWx1ZXMgaXMgYXNzb2NpYXRlZC48L2xpPgotICAgKiA8bGk+c2VsZWN0aW9uOiBpbmRpY2F0ZXMgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggc29tZQotICAgKiBib29sZWFuIG9wZXJhdGlvbjwvbGk+Ci0gICAqIDxsaT4gaWNvblNlbGVjdGlvbjogdGhpcyBvcGVyYXRpb24gaXMgc2ltaWxhciB0byB0aGUgc2VsZWN0aW9uIG9wZXJhdGlvbgotICAgKiBleGNlcHQgdGhhdCBpdCB2aXN1YWwgc3RhdGUgaXMgcmVuZGVyZWQgdmlhIGFuIGljb24uPC9saT4KLSAgICogPGxpPmNvbXBsZXg6IGluZGljYXRlcyB0aGF0IHNvbWUgY29tcGxleCBvcGVyYXRpb24gaXMgcmVxdWlyZWQgdG8gcmVuZGVyCi0gICAqIGFuZCBwZXJzaXN0IHNvbWUgcG9saWN5IGRhdGEuICBUaGlzIG9wZXJhdGlvbiB3aWxsIGJlIHJlbmRlcmVkIHZpYSBhIFVJCi0gICAqIGJ1dHRvbi4gIFdoZW4gdGhpcyBidXR0b24gaXMgc2VsZWN0ZWQgdGhlIGxhdW5jaCBjbGFzcyBhc3NvY2lhdGVkIHdpdGggdGhpcwotICAgKiBvcGVyYXRpb24gaXMgY2FsbGVkLjwvbGk+ICAgCi0gICAqIDx1bC8+IAotICAgKi8KLSAgcHVibGljIGVudW0gT3BlcmF0aW9uS2luZCB7IGVudW1lcmF0aW9uLCBzZWxlY3Rpb24sIGljb25TZWxlY3Rpb24sIGNvbXBsZXggfTsKLSAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSB1bmlxdWUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uLgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSB1bmlxdWUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRJZCgpOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSBkZXNjcmlwdG9yIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZGVzY3JpcHRvciBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24uCi0gICAqLwotICBwdWJsaWMgSURlc2NyaXB0b3IgZ2V0RGVzY3JpcHRvcigpOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBpcyBhIHdvcmtzcGFjZSBvbmx5IG9wZXJhdGlvbiBvciBub3QuCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdHJ1ZSBpZiB0aGlzIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbiBzaG91bGQgb25seSBhcHBlYXIKLSAgICogaW4gdGhlIHdvcmtzcGFjZSBzZXJ2aWNlIHBvbGljeSBwcmVmZXJlbmNlIHBhZ2UuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1dvcmtzcGFjZU9ubHkoKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB0aGUga2luZCBvZiBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24uCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGtpbmQgb2Ygc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uLgotICAgKi8KLSAgcHVibGljIE9wZXJhdGlvbktpbmQgZ2V0T3BlcmF0aW9uS2luZCgpOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSBlbnVtIElEIGZvciB0aGlzIG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZW51bWVyYXRpb24gSUQgaWYgdGhpcyBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24gaXMKLSAgICogYW4gZW51bWVyYXRpb24uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEVudW1lcmF0aW9uSWQoKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBlbnVtZXJhdGlvbiBpdGVtIGZvciB0aGlzIG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyBpZiB0aGlzIGlzIGFuIGVudW1lcmF0aW9uIGl0IHJldHVybnMgdGhlIGRlZmF1bHQgaXRlbSBmb3IgdGhpcwotICAgKiBlbnVtZXJhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdEl0ZW0oKTsKLSAgCi0gIC8qKgotICAgKiBMYXVuY2hlcyB0aGUgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIGlmIHRoaXMgaXMgYSBjb21wbGV4IG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBzZWxlY3RlZFBvbGljaWVzIHRoZSBzZWxlY3RlZCBzZXJ2aWNlIHBvbGljaWVzLgotICAgKi8KLSAgcHVibGljIHZvaWQgbGF1bmNoT3BlcmF0aW9uKCBMaXN0PElTZXJ2aWNlUG9saWN5PiBzZWxlY3RlZFBvbGljaWVzICk7Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgd2hldGhlciB0aGlzIG9wZXJhdGlvbiBzaG91bGQgYmUgZW5hYmxlZCBvciBub3QuCi0gICAqIAotICAgKiBAcGFyYW0gc2VsZWN0ZWRQb2xpY2llcyB0aGUgc2VsZWN0ZWQgc2VydmljZSBwb2xpY2llcy4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB3aGV0aGVyIHRoaXMgb3BlcmF0aW9uIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCggTGlzdDxJU2VydmljZVBvbGljeT4gc2VsZWN0ZWRQb2xpY2llcyApOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSBpZCBwYXR0ZXJuIGZvciB0aGlzIG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3BlcmF0aW9uLgotICAgKiBBbGwgc2VydmljZSBwb2xpY3kgSUQgdGhhdCBtYXRjaCB0aGlzIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aWxsIGJlIGFzc29jaWF0ZWQKLSAgICogd2l0aCB0aGlzIG9wZXJhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UG9saWN5SWRQYXR0ZXJuKCk7Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgdGhlIHNlcnZpY2UgcG9saWN5IGZvciB0aGlzIG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgc2VydmljZSBwb2xpY3kgZm9yIHRoaXMgb3BlcmF0aW9uLgotICAgKi8KLSAgcHVibGljIElTZXJ2aWNlUG9saWN5IGdldFNlcnZpY2VQb2xpY3koKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB0aGUgY3VycmVudCBlbnVtZXJhdGlvbiBpdGVtIGZvciB0aGlzIG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0IGlmIHRoaXMgaXMgcHJvamVjdCBwcm9wZXJ0eSBwYWdlIGl0ZW0uCi0gICAqIEZvciB0aGUgcHJlZmVyZW5jZSBwYWdlIGNvbnRleHQgbnVsbCBzaG91bGQgYmUgc3BlY2lmaWVkLgotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGN1cnJlbnQgZW51bWVyYXRpb24gaXRlbSBmb3IgdGhpcyBvcGVyYXRpb24uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFN0YXRlSXRlbSggSVByb2plY3QgcHJvamVjdCApOwotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIGN1cnJlbnQgZW51bWVyYXRpb24gaXRlbSBmb3IgdGhpcyBvcGVyYXRpb24uCi0gICAqIAotICAgKiBAcGFyYW0gcHJvamVjdCB0aGUgcHJvamVjdCBpZiB0aGlzIGlzIHByb2plY3QgcHJvcGVydHkgcGFnZSBpdGVtLgotICAgKiBGb3IgdGhlIHByZWZlcmVuY2UgcGFnZSBjb250ZXh0IG51bGwgc2hvdWxkIGJlIHNwZWNpZmllZC4KLSAgICogQHBhcmFtIHN0YXRlSXRlbSB0aGUgaXRlbS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFN0YXRlSXRlbSggSVByb2plY3QgcHJvamVjdCwgU3RyaW5nIHN0YXRlSXRlbSApOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBvcGVyYXRpb24gdXNlcyBkZWZhdWx0IHN0YXRlIG9yIG5vdC4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB3aGV0aGVyIHRoaXMgb3BlcmF0aW9uIHVzZXMgZGVmYXVsdCBzdGF0ZSBvciBub3QuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1VzZURlZmF1bHREYXRhKCk7IAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZmY3NGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTEyMCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBJbml0aWFsIGNvZGluZy4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci0KLS8qKgotICogCi0gKiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIGJ5IGV4dGVuZGVycyB0byBhZGQgcXVpY2sgZml4ZXMgdG8gdGhlIHNlcnZpY2UgcG9saWN5IHVpCi0gKiBmcmFtZXdvcmsuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElRdWlja0ZpeEFjdGlvbgotewotICAvKioKLSAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgaGFzIHNlbGVjdGVkIHRoaXMgYWN0aW9uIHRvIHJlc29sdmUKLSAgICogYSBwYXJ0aWN1bGFyIHNlcnZpY2UgcG9saWN5IHByb2JsZW0uCi0gICAqIAotICAgKiBAcGFyYW0gcG9saWN5IFRoZSBwb2xpY3kgdGhhdCB0aGlzIHF1aWNrIGZpeCBhcHBsaWVzIHRvLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWN0aW9uKCBJU2VydmljZVBvbGljeSBwb2xpY3kpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E3ZGYzNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTEyMCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBJbml0aWFsIGNvZGluZy4KLSAqIDIwMDgwNTE2ICAgMjMyNjAzIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIENsZWFuIHVwIGphdmEgZG9jCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklEZXNjcmlwdG9yOwotCi0vKioKLSAqIAotICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBzdG9yZSBxdWljayBmaXggYWN0aW9uIGluZm9ybWF0aW9uLgotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJUXVpY2tGaXhBY3Rpb25JbmZvCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIGEgZGVzY3JpcHRvciBmb3IgdGhpcyBxdWljayBmaXguCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgYSBkZXNjcmlwdG9yIGZvciB0aGlzIHF1aWNrIGZpeC4KLSAgICovCi0gIHB1YmxpYyBJRGVzY3JpcHRvciBnZXREZXNjcmlwdG9yKCk7Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgYWN0aW9uIGZvciB0aGlzIHF1aWNrIGZpeC4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgYWN0aW9uIGZvciB0aGlzIHF1aWNrIGZpeC4KLSAgICovCi0gIHB1YmxpYyBJUXVpY2tGaXhBY3Rpb24gZ2V0QWN0aW9uKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY2MzJhNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBJbml0aWFsIGNvZGluZy4KLSAqIDIwMDgwNTE2ICAgMjMyNjAzIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIENsZWFuIHVwIGphdmEgZG9jCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVN0YXJ0dXA7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci0KLS8qKgotICogVGhlIGFjdGl2YXRvciBjbGFzcyBjb250cm9scyB0aGUgcGx1Zy1pbiBsaWZlIGN5Y2xlCi0gKi8KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkgZXh0ZW5kcyBQbHVnaW4gaW1wbGVtZW50cyBJU3RhcnR1cCB7Ci0KLQkvLyBUaGUgcGx1Zy1pbiBJRAotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9JRCA9ICJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiOyAvLyROT04tTkxTLTEkCi0KLQkvLyBUaGUgc2hhcmVkIGluc3RhbmNlCi0JcHJpdmF0ZSBzdGF0aWMgU2VydmljZVBvbGljeUFjdGl2YXRvclVJIHBsdWdpbjsKLQkKLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IKLQkgKi8KLQlwdWJsaWMgU2VydmljZVBvbGljeUFjdGl2YXRvclVJKCkgewotCX0KLQotCS8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbnMjc3RhcnQob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpCi0JICovCi0JcHVibGljIHZvaWQgc3RhcnQoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJc3VwZXIuc3RhcnQoY29udGV4dCk7Ci0JCXBsdWdpbiA9IHRoaXM7Ci0JfQotCi0JLyoKLQkgKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luI3N0b3Aob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpCi0JICovCi0JcHVibGljIHZvaWQgc3RvcChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gewotCQlwbHVnaW4gPSBudWxsOwotCQlzdXBlci5zdG9wKGNvbnRleHQpOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgYW4gaW1hZ2UgZGVzY3JpcHRvciBmb3IgdGhlIG5hbWVkIHJlc291cmNlCi0JICogYXMgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiBpbnN0YWxsIGxvY2F0aW9uLgotCSAqIEByZXR1cm4gQW4gaW1hZ2UgZGVzY3JpcHRvciwgcG9zc2libHkgbnVsbC4KLQkgKi8KLQkJcHVibGljIHN0YXRpYyBJbWFnZURlc2NyaXB0b3IgZ2V0SW1hZ2VEZXNjcmlwdG9yKFN0cmluZyBuYW1lKSB7Ci0JCQl0cnkgewotCQkJCVVSTCBpbnN0YWxsVVJMID0gcGx1Z2luLmdldEJ1bmRsZSgpLmdldEVudHJ5KCIvIik7IC8vJE5PTi1OTFMtMSQKLQkJCQlVUkwgaW1hZ2VVUkwgPSBuZXcgVVJMKGluc3RhbGxVUkwsIG5hbWUpOwotCQkJCXJldHVybiBJbWFnZURlc2NyaXB0b3IuY3JlYXRlRnJvbVVSTChpbWFnZVVSTCk7Ci0JCQl9IGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkgewotCSAgICAgcmV0dXJuIG51bGw7Ci0JICAgfQotCSB9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UKLQkgKgotCSAqIEByZXR1cm4gdGhlIHNoYXJlZCBpbnN0YW5jZQotCSAqLwotCXB1YmxpYyBzdGF0aWMgU2VydmljZVBvbGljeUFjdGl2YXRvclVJIGdldERlZmF1bHQoKSB7Ci0JCXJldHVybiBwbHVnaW47Ci0JfQotCQotCS8qKgotCSAqIExvZ3MgZXJyb3IgbWVzc2FnZSBmb3IgdGhpcyBwbHVnaW4uCi0JICogCi0JICogQHBhcmFtIG1lc3NhZ2UKLQkgKiBAcGFyYW0gZXhjCi0JICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBsb2dFcnJvciggU3RyaW5nIG1lc3NhZ2UsIFRocm93YWJsZSBleGMgKQotICB7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBuZXcgU3RhdHVzKCBJU3RhdHVzLkVSUk9SLCBQTFVHSU5fSUQsIDAsIG1lc3NhZ2UsIGV4YyApOwotICAgIAotICAgIGdldERlZmF1bHQoKS5nZXRMb2coKS5sb2coc3RhdHVzKTsKLSAgfQotCi0gIC8qKgotICAgKiBDYWxsZWQgYnkgRWNsaXBzZSB3aGVuIGl0IHN0YXJ0cyB1cC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGVhcmx5U3RhcnR1cCgpCi0gIHsKLSAgICAvLyBETyBub3RoaW5nLiAgQWxsIHdlIHdhbnQgdG8gZG8gaXMgZ2V0IHRoZSBwbHVnaW4gbG9hZGVkIGF0IFVJIHN0YXJ0IHRpbWUuCi0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFiNTZmMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEluaXRpYWwgY29kaW5nLgotICogMjAwODA1MTYgICAyMzI2MDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQ2xlYW4gdXAgamF2YSBkb2MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci0KLS8qKgotICogCi0gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gZ2V0IFNlcnZpY2UgcG9saWN5IFVJIGluZm9ybWF0aW9uLgotICoKLSAqLwotcHVibGljIGNsYXNzIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJCi17Ci0gIHByaXZhdGUgc3RhdGljIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJIGluc3RhbmNlOwotICAKLSAgcHJpdmF0ZSBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSUltcGwgcGxhdGZvcm1VSTsKLSAgCi0gIHByaXZhdGUgU2VydmljZVBvbGljeVBsYXRmb3JtVUkoKQotICB7Ci0gICAgcGxhdGZvcm1VSSA9IG5ldyBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSUltcGwoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoaXMgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0gVUkgb2JqZWN0LgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoaXMgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0gVUkgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSSBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICBpZiggaW5zdGFuY2UgPT0gbnVsbCApCi0gICAgewotICAgICAgaW5zdGFuY2UgPSBuZXcgU2VydmljZVBvbGljeVBsYXRmb3JtVUkoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGluc3RhbmNlOwotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgYWxsIHRoZSBvcGVyYXRpb25zIGZvciBhbGwga25vd24gcG9saWNpZXMuCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgYWxsIHRoZSBvcGVyYXRpb25zIGZvciBhbGwga25vd24gcG9saWNpZXMuCi0gICAqLwotICBwdWJsaWMgTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBnZXRBbGxPcGVyYXRpb25zKCkKLSAgewotICAgIHJldHVybiBwbGF0Zm9ybVVJLmdldEFsbE9wZXJhdGlvbnMoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgYW4gb3BlcmF0aW9uIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBzZXJ2aWNlIHBvbGljeQotICAgKiBhbmQgaGFzIHRoZSBzcGVjaWZpZWQgaWQuCi0gICAqIAotICAgKiBAcGFyYW0gcG9saWN5IHRoZSBzZXJ2aWNlIHBvbGljeQotICAgKiBAcGFyYW0gaWQgdGhlIG9wZXJhdGlvbiBpZC4KLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBvcGVyYXRpb24gYmVpbmcgc2VhcmNoZWQgZm9yIG9yIG51bGwgaXMgbm90IGZvdW5kLiAKLSAgICovCi0gIHB1YmxpYyBJUG9saWN5T3BlcmF0aW9uIGdldE9wZXJhdGlvbiggSVNlcnZpY2VQb2xpY3kgcG9saWN5LCBTdHJpbmcgaWQgKQotICB7Ci0gICAgTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBvcGVyYXRpb25zID0gZ2V0T3BlcmF0aW9ucyggcG9saWN5LCB0cnVlICk7Ci0gICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICByZXN1bHQgICAgID0gbnVsbDsKLSAgICAKLSAgICBmb3IoIElQb2xpY3lPcGVyYXRpb24gb3BlcmF0aW9uIDogb3BlcmF0aW9ucyApCi0gICAgewotICAgICAgaWYoIG9wZXJhdGlvbi5nZXRJZCgpLmVxdWFscyggaWQgKSApCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IG9wZXJhdGlvbjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB0aGUgbGlzdCBvZiBvcGVyYXRpb25zIGZvciB0aGlzIHBvbGljeS4KLSAgICogCi0gICAqIEBwYXJhbSBwb2xpY3kgdGhlIHBvbGljeQotICAgKiBAcGFyYW0gaXNXb3Jrc3BhY2UgdHJ1ZSBpZiB0aGlzIGlzIGEgcHJlZmVyZW5jZSBwYWdlIGNvbnRleHQKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBsaXN0IG9mIG9wZXJhdGlvbnMgZm9yIHRoaXMgcG9saWN5LgotICAgKi8KLSAgcHVibGljIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gZ2V0T3BlcmF0aW9ucyggSVNlcnZpY2VQb2xpY3kgcG9saWN5LCBib29sZWFuIGlzV29ya3NwYWNlICkKLSAgewotICAgIHJldHVybiBuZXcgVmVjdG9yPElQb2xpY3lPcGVyYXRpb24+KCBwbGF0Zm9ybVVJLmdldE9wZXJhdGlvbnNGb3JQb2xpY3koIHBvbGljeSwgaXNXb3Jrc3BhY2UgKSApOwotICB9Ci0gICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBsaXN0IHBvbGljeSBvcGVyYXRpb25zIHdoaWNoIGFyZSBhc3NvY2lhdGVkIHdpdGgKLSAgICogdGhlIHNwZWNpZmllZCBzZXJ2aWNlIHBvbGljaWVzLgotICAgKiAKLSAgICogQHBhcmFtIHBvbGljaWVzCi0gICAqIEBwYXJhbSBpc1dvcmtzcGFjZQotICAgKiBAcmV0dXJuIHJldHVybnMgYSBsaXN0IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIG9wZXJhdGlvbnMuICBFYWNoIGxpc3QKLSAgICogYXMgdGhlIHRvcCBsZXZlbCBjb250YWlucyBsaXN0IG9mIElQb2xpY3lPcGVyYXRpb25zIHRoYXQgcmVmZXJlbmNlIHRoZSAKLSAgICogc2FtZSBiYXNlIG9wZXJhdGlvbi4gIEhvd2V2ZXIsIHRoZXkgd2lsbCBlYWNoIGhhdmUgZGlmZmVyZW50IGFzc29jaWF0ZWQKLSAgICogcG9saWNpZXMuCi0gICAqLwotICBwdWJsaWMgTGlzdDxMaXN0PElQb2xpY3lPcGVyYXRpb24+PiBnZXRPcGVyYXRpb25zTGlzdCggTGlzdDxJU2VydmljZVBvbGljeT4gcG9saWNpZXMsIGJvb2xlYW4gaXNXb3Jrc3BhY2UgKQotICB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uc0xpc3QoIHBvbGljaWVzLCBpc1dvcmtzcGFjZSApOwotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgYSBsaXN0IG9mIHF1aWNrIGZpeCBpbmZvIGZvciB0aGUgc3BlY2lmaWVkIHN0YXR1cyBvYmplY3QuCi0gICAqIAotICAgKiBAcGFyYW0gc3RhdHVzCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIGxpc3Qgb2YgcXVpY2sgZml4ZXMgZm9yIHRoaXMgc3RhdHVzIG9iamVjdC4gIElmCi0gICAqIG5vIHF1aWNrIGZpeGVzIGFyZSBhdmFpbGFibGUgYW4gZW1wdHkgbGlzdCB3aWxsIGJlIHJldHVybmVkLgotICAgKi8KLSAgcHVibGljIExpc3Q8SVF1aWNrRml4QWN0aW9uSW5mbz4gZ2V0UXVpY2tGaXhlcyggSVN0YXR1cyBzdGF0dXMgKQotICB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtVUkuZ2V0UXVpY2tGaXhlcyggc3RhdHVzICk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvQWN0aXZpdHlVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9BY3Rpdml0eVV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNjM1MjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9BY3Rpdml0eVV0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzExMjIgICAyMDk4NTggcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgSW5pdGlhbCBjb2RpbmcuCi0gKiAyMDA4MDUxNiAgIDIzMjYwMyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBDbGVhbiB1cCBqYXZhIGRvYwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2g7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5hY3Rpdml0aWVzLklBY3Rpdml0eU1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuYWN0aXZpdGllcy5JSWRlbnRpZmllcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSUZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci0KLS8qKgotICogCi0gKiBVc2VkIGJ5IHRoZSBFY2xpcHNlIGFjdGl2aXRpZXMgZnJhbWV3b3JrLgotICoKLSAqLwotcHVibGljIGNsYXNzIEFjdGl2aXR5VXRpbHMKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgYSBzZXJ2aWNlIHBvbGljeSBmaWx0ZXIgYmFzZWQgb24gdGhlIEVjbGlwc2UgYWN0aXZpdGllcyBzZXR0aW5ncy4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIHNlcnZpY2UgcG9saWN5IGZpbHRlciBiYXNlZCBvbiB0aGUgRWNsaXBzZSBhY3Rpdml0aWVzIHNldHRpbmdzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBJRmlsdGVyIGdldEN1cnJlbnRBY3Rpdml0aWVzRmlsdGVyKCkKLSAgewotICAgIGZpbmFsIElXb3JrYmVuY2ggICAgICAgd29ya2JlbmNoID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKTsKLSAgICBmaW5hbCBJQWN0aXZpdHlNYW5hZ2VyIG1hbmFnZXIgICA9IHdvcmtiZW5jaC5nZXRBY3Rpdml0eVN1cHBvcnQoKS5nZXRBY3Rpdml0eU1hbmFnZXIoKTsKLSAgICAgICAgIAotICAgIHJldHVybiBuZXcgSUZpbHRlcigpCi0gICAgewotICAgICAgcHVibGljIGJvb2xlYW4gYWNjZXB0KCBJU2VydmljZVBvbGljeSBwb2xpY3kgKQotICAgICAgeyAKLSAgICAgICAgSUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG1hbmFnZXIuZ2V0SWRlbnRpZmllciggcG9saWN5LmdldElkKCkgKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBpZGVudGlmaWVyID09IG51bGwgPyBmYWxzZSA6IGlkZW50aWZpZXIuaXNFbmFibGVkKCk7Ci0gICAgICB9ICAKLSAgICB9OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL1NlcnZpY2VVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9TZXJ2aWNlVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZiYzQ5Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL1NlcnZpY2VVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgwMjExICAgMjE4NTIwIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwNTE2ICAgMjMyNjAzIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIENsZWFuIHVwIGphdmEgZG9jCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzOwotCi1pbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeTsKLQotLyoqCi0gKiAKLSAqIFRoaXMgY2xhc3MgY29udGFpbnMgdXRpbGl0eSBtZXRob2QgZm9yIHNlcnZpY2UgcG9saWNpZXMuCi0gKgotICovCi1wdWJsaWMgY2xhc3MgU2VydmljZVV0aWxzCi17Ci0gIC8qKgotICAgKiBTb3J0cyBhIGxpc3Qgb2Ygc2VydmljZSBwb2xpY2llcy4KLSAgICogCi0gICAqIEBwYXJhbSB1bnNvcnRlZExpc3QgYW4gdW5zb3J0ZWQgbGlzdAotICAgKiBAcmV0dXJuIHJldHVybnMgYSBsaXN0IG9mIHNvcnRlZCBzZXJ2aWNlIHBvbGljaWVzIGJhc2Ugbm90IHRoZWlyIGxvbmcgbmFtZXMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIExpc3Q8SVNlcnZpY2VQb2xpY3k+IHNvcnRMaXN0KCBMaXN0PElTZXJ2aWNlUG9saWN5PiB1bnNvcnRlZExpc3QgKQotICB7Ci0gICAgVHJlZVNldDxJU2VydmljZVBvbGljeT4gc29ydGVkU2V0ID0gbmV3IFRyZWVTZXQ8SVNlcnZpY2VQb2xpY3k+KCBuZXcgQ29tcGFyZVNlcnZpY2VQb2xpY3koKSApOwotICAgIFZlY3RvcjxJU2VydmljZVBvbGljeT4gIHNvcnRlZExpc3QgPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PigpOwotICAgIAotICAgIHNvcnRlZFNldC5hZGRBbGwoIHVuc29ydGVkTGlzdCApOwotICAgIHNvcnRlZExpc3QuYWRkQWxsKCBzb3J0ZWRTZXQgKTsKLSAgICAKLSAgICByZXR1cm4gc29ydGVkTGlzdDsKLSAgfQotICAKLSAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ29tcGFyZVNlcnZpY2VQb2xpY3kgaW1wbGVtZW50cyBDb21wYXJhdG9yPElTZXJ2aWNlUG9saWN5PgotICB7Ci0gICAgcHVibGljIGludCBjb21wYXJlKElTZXJ2aWNlUG9saWN5IGFyZzAsIElTZXJ2aWNlUG9saWN5IGFyZzEpCi0gICAgewotICAgICAgU3RyaW5nIG5hbWUwID0gYXJnMC5nZXREZXNjcmlwdG9yKCkuZ2V0TG9uZ05hbWUoKTsKLSAgICAgIFN0cmluZyBuYW1lMSA9IGFyZzEuZ2V0RGVzY3JpcHRvcigpLmdldExvbmdOYW1lKCk7Ci0gICAgICAKLSAgICAgIHJldHVybiBuYW1lMC5jb21wYXJlVG8oIG5hbWUxICk7IAotICAgIH0gICAgCi0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ly5jbGFzc3BhdGggYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDRlODYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ly5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjUiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM3OTY4ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MDgxNjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0jVGh1IE5vdiAyOSAxMTo1OTozMyBFU1QgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS41Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hc3NlcnRJZGVudGlmaWVyPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS41CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTIyNGE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJVBMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k7c2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjEwMy5xdWFsaWZpZXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yCi1CdW5kbGUtVmVuZG9yOiAlUExVR0lOX1BST1ZJREVSCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWU7YnVuZGxlLXZlcnNpb249IlszLjMuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzO2J1bmRsZS12ZXJzaW9uPSJbMy4zLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zO2J1bmRsZS12ZXJzaW9uPSJbMy4zLjAsNC4wLjApIgotRWNsaXBzZS1MYXp5U3RhcnQ6IHRydWUKLUJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNQotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSwKLSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLAotIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvYWJvdXQuaHRtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvYnVpbGQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYTY3YmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotc291cmNlLi4gPSBzcmMvCi1vdXRwdXQuLiA9IGJpbi8KLWJpbi5pbmNsdWRlcyA9IC4sXAotICAgICAgICAgICAgICAgc2NoZW1hLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9wbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzBhZmM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBNZXNzYWdlcyBpbiBwbHVnaW4ueG1sLgotIwotUExVR0lOX05BTUU9U2VydmljZSBwb2xpY3kKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotU0VSVklDRV9QT0xJQ1lfTkFNRT1TZXJ2aWNlIHBvbGljeQotCi1UUlVFX1NIT1JUTkFNRT10cnVlCi1GQUxTRV9TSE9SVE5BTUU9ZmFsc2UKLUlHTk9SRV9TSE9SVE5BTUU9aWdub3JlCi1XQVJOX1NIT1JUTkFNRT13YXJuCi1FUlJPUl9TSE9SVE5BTUU9ZXJyb3IKLUlHTk9SRV9MT05HTkFNRT1JZ25vcmUKLVdBUk5fTE9OR05BTUU9V2FybgotRVJST1JfTE9OR05BTUU9RXJyb3IKLQotU1VHX0lHTk9SRV9TSE9SVE5BTUU9aWdub3JlCi1TVUdfU1VHR0VTVF9TSE9SVE5BTUU9c3VnZ2VzdAotU1VHX1JFUVVJUkVfU0hPUlROQU1FPXJlcXVpcmUKLVNVR19JR05PUkVfTE9OR05BTUU9SWdub3JlIGNvbXBsaWFuY2UKLVNVR19TVUdHRVNUX0xPTkdOQU1FPVN1Z2dlc3QgY29tcGxpYW5jZQotU1VHX1JFUVVJUkVfTE9OR05BTUU9UmVxdWlyZSBjb21wbGlhbmNlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhiYmM2Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLQotPHBsdWdpbj4KLQotICAgPGV4dGVuc2lvbi1wb2ludCBpZD0ic2VydmljZXBvbGljeSIgbmFtZT0iJVNFUlZJQ0VfUE9MSUNZX05BTUUiIHNjaGVtYT0ic2NoZW1hL3NlcnZpY2VQb2xpY3kuZXhzZCIvPgotICAgCi0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuc2VydmljZXBvbGljeSI+Ci0gICAgIDxzZXJ2aWNlUG9saWN5PgotICAgICAgICAgPGVudW1lcmF0aW9uIGlkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuYm9vbGVhbkVudW0iIAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJvcmcuZWNsaXBzZS53c3QudHJ1ZSI+Ci0gICAgICAgICA8aXRlbSBpZD0ib3JnLmVjbGlwc2Uud3N0LnRydWUiCi0gICAgICAgICAgICAgICBzaG9ydE5hbWU9IiVUUlVFX1NIT1JUTkFNRSIgLz4KLSAgICAgICAgIDxpdGVtIGlkPSJvcmcuZWNsaXBzZS53c3QuZmFsc2UiCi0gICAgICAgICAgICAgICBzaG9ydE5hbWU9IiVGQUxTRV9TSE9SVE5BTUUiIC8+Ci0gICAgICAgPC9lbnVtZXJhdGlvbj4KLSAgICAgICAKLSAgICAgICA8ZW51bWVyYXRpb24gaWQ9Im9yZy5lY2xpcHNlLndzdC5zZXJ2aWNlLnBvbGljeS5lcnJvcldhcm5FbnVtIiAKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0ib3JnLmVjbGlwc2Uud3N0Lmlnbm9yZSI+Ci0gICAgICAgICA8aXRlbSBpZD0ib3JnLmVjbGlwc2Uud3N0Lmlnbm9yZSIKLSAgICAgICAgICAgICAgIHNob3J0TmFtZT0iJUlHTk9SRV9TSE9SVE5BTUUiIGxvbmdOYW1lPSIlSUdOT1JFX0xPTkdOQU1FIiAvPgotICAgICAgICAgPGl0ZW0gaWQ9Im9yZy5lY2xpcHNlLndzdC53YXJuIgotICAgICAgICAgICAgICAgc2hvcnROYW1lPSIlV0FSTl9TSE9SVE5BTUUiIGxvbmdOYW1lPSIlV0FSTl9MT05HTkFNRSIgLz4KLSAgICAgICAgIDxpdGVtIGlkPSJvcmcuZWNsaXBzZS53c3QuZXJyb3IiCi0gICAgICAgICAgICAgICBzaG9ydE5hbWU9IiVFUlJPUl9TSE9SVE5BTUUiIGxvbmdOYW1lPSIlRVJST1JfTE9OR05BTUUiIC8+Ci0gICAgICAgPC9lbnVtZXJhdGlvbj4KLSAgICAgICAKLSAgICAgICA8ZW51bWVyYXRpb24gaWQ9Im9yZy5lY2xpcHNlLndzdC5zZXJ2aWNlLnBvbGljeS5zdWdnZXN0aW9uRW51bSIgCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Im9yZy5lY2xpcHNlLndzdC5zdWcuaWdub3JlIj4KLSAgICAgICAgIDxpdGVtIGlkPSJvcmcuZWNsaXBzZS53c3Quc3VnLmlnbm9yZSIKLSAgICAgICAgICAgICAgIHNob3J0TmFtZT0iJVNVR19JR05PUkVfU0hPUlROQU1FIiBsb25nTmFtZT0iJVNVR19JR05PUkVfTE9OR05BTUUiIC8+Ci0gICAgICAgICA8aXRlbSBpZD0ib3JnLmVjbGlwc2Uud3N0LnN1Zy5zdWdnZXN0IgotICAgICAgICAgICAgICAgc2hvcnROYW1lPSIlU1VHX1NVR0dFU1RfU0hPUlROQU1FIiBsb25nTmFtZT0iJVNVR19TVUdHRVNUX0xPTkdOQU1FIiAvPgotICAgICAgICAgPGl0ZW0gaWQ9Im9yZy5lY2xpcHNlLndzdC5zdWcucmVxdWlyZSIKLSAgICAgICAgICAgICAgIHNob3J0TmFtZT0iJVNVR19SRVFVSVJFX1NIT1JUTkFNRSIgbG9uZ05hbWU9IiVTVUdfUkVRVUlSRV9MT05HTkFNRSIgLz4KLSAgICAgICA8L2VudW1lcmF0aW9uPgotICAgICA8L3NlcnZpY2VQb2xpY3k+Ci0gICA8L2V4dGVuc2lvbj4gICAKLTwvcGx1Z2luPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc2NoZW1hL3NlcnZpY2VQb2xpY3kuZXhzZCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NjaGVtYS9zZXJ2aWNlUG9saWN5LmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNmQ1YjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc2NoZW1hL3NlcnZpY2VQb2xpY3kuZXhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/PgotPCEtLSBTY2hlbWEgZmlsZSB3cml0dGVuIGJ5IFBERSAtLT4KLTxzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kiPgotPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNjaGVtYSBwbHVnaW49Im9yZy5lY2xpcHNlLndzdC5zZXJ2aWNlLnBvbGljeSIgaWQ9InNlcnZpY2VQb2xpY3kiIG5hbWU9IlNlcnZpY2UgcG9saWN5Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBleHRlbmRlcnMgdG8gZGVmaW5lIHNlcnZpY2UgcG9saWNpZXMuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxpbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJzY2hlbWE6Ly9vcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zL3NjaGVtYS9leHByZXNzaW9uTGFuZ3VhZ2UuZXhzZCIvPgotCi0gICA8ZWxlbWVudCBuYW1lPSJleHRlbnNpb24iPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJzZXJ2aWNlUG9saWN5IiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwb2ludCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgPGFwcEluZm8+Ci0gICAgICAgICAgICAgICAgICA8bWV0YS5hdHRyaWJ1dGUgdHJhbnNsYXRhYmxlPSJ0cnVlIi8+Ci0gICAgICAgICAgICAgICA8L2FwcEluZm8+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9InNlcnZpY2VQb2xpY3kiPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJwb2xpY3kiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9ImVudW1lcmF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJsb2FkTGlzdGVuZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9ImVuYWJsZW1lbnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0icG9saWN5Ij4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxzZXF1ZW5jZT4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0iZGVzY3JpcHRvciIvPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJyZWxhdGlvbnNoaXAiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ic3RhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLSAgICAgICAgIDwvc2VxdWVuY2U+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBhcmVudFBvbGljeUlkIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGFyZW50IHBvbGljeSBpZCBmb3IgdGhpcyBwb2xpY3kuICBJZiB0aGlzIGlzIGEgcm9vdCBwb2xpY3kgdGhpcyBhdHRyaWJ1dGUgc2hvdWxkIG5vdCBiZSBzcGVjaWZpZWQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIHVuaXF1ZSBpZCBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJlbnVtTGlzdElkIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIElmIHRoaXMgcG9saWN5JmFwb3M7cyBzdGF0ZSBpcyBhc3NvY2lhdGVkIHdpdGggYW4gZW51bWVyYXRpb24gdGhlbiB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIGlkIG9mIHRoaXMgZW51bWVyYXRpb24uCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdEVudW1JZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBzaG91bGQgb25seSBiZSBzcGVjaWZpZWQgaWYgdGhlIGVudW1MaXN0SWQgaXMgYWxzbyBzcGVjaWZpZWQuICBJdCBpcyB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGVudW0gdmFsdWUgZGVmaW5lZCBieSB0aGUgZW51bWVyYXRpb24uCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibXV0YWJsZSIgdHlwZT0iYm9vbGVhbiIgdXNlPSJkZWZhdWx0IiB2YWx1ZT0iZmFsc2UiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIEluZGljYXRlcyBpZiB0aGlzIHBvbGljeSBoYXMgbXV0YWJsZSBkYXRhIG9yIG5vdC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0iZGVzY3JpcHRvciI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImRlc2NyaXB0aW9uIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIEEgZGVzY3JpcHRpb24gb2YgdGhpcyBzZXJ2aWNlIHBvbGljeS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzaG9ydE5hbWUiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIHNob3J0IG5hbWUgb2YgdGhpcyBzZXJ2aWNlIHBvbGljeS4gIE5vdGU6IGlmIGEgc2hvcnQgbmFtZSBpcyBub3Qgc3BlY2lmaWVkIGl0IGlzIGRlZmF1bHRlZCB0byB0aGUgdmFsdWUgb2YgdGhlIGxvbmcgbmFtZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsb25nTmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgbG9uZyBuYW1lIG9mIHRoaXMgc2VydmljZSBwb2xpY3kuICBOb3RlOiBpZiBhIGxvbmcgbmFtZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBpdCBpcyBkZWZhdWx0ZWQgdG8gdGhlIHNob3J0TmFtZSB2YWx1ZS4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb250ZXh0SGVscElkIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoZSBjb250ZXh0IGhlbHAgaWQgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kgaWYgaXQgaXMgcmVxdWlyZWQuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWNvblBhdGgiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgQSBwbHVnaW4gcmVsYXRpdmUgcGF0aCB0byBzb21lIGljb24gZmlsZSBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeSwgb3IgYWx0ZXJuYXRpdmVseSwgYSBjb21wbGV0ZSBwbHVnaW4gcGF0aCB0byB0aGUgaWNvbiBmaWxlLCBpbiBmb3JtYXQgcGx1Z2luOi8vcGx1Z2luTmFtZS9wbHVnaW5SZWxhdGl2ZVBhdGggKGV4YW1wbGUgcGx1Z2luOi8vY29tLm15Y29tcGFueS5teXBsdWdpbi9pY29ucy9pY29uLmdpZikKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0icmVsYXRpb25zaGlwIj4KLSAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICBTcGVjaWZpZXMgYSBzdGF0ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIHNlcnZpY2UgcG9saWN5IGFuZCB0aGUgc3RhdGVzIG9mIG90aGVyIHNlcnZpY2UgcG9saWNpZXMuCi0gICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICA8L2Fubm90YXRpb24+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8c2VxdWVuY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9InRhcmdldFBvbGljeSIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotICAgICAgICAgPC9zZXF1ZW5jZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZW51bUxpc3QiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9InRhcmdldFBvbGljeSI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Iml0ZW1MaXN0IiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJlbnVtZXJhdGlvbiI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8c2VxdWVuY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9Iml0ZW0iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLSAgICAgICAgIDwvc2VxdWVuY2U+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImRlZmF1bHQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9Iml0ZW0iPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzaG9ydE5hbWUiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibG9uZ05hbWUiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImxvYWRMaXN0ZW5lciI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImNsYXNzIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIEEgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBJUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIgaW50ZXJmYWNlLiAgVGhlIGxvYWQgbWV0aG9kIG9mIHRoaXMgY2xhc3Mgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgU2VydmljZVBvbGljeSBmcmFtZXdvcmsgaXMgZmlyc3QgbG9hZGVkLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJzdGF0ZSI+Ci0gICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgVGhpcyBlbGVtZW50IGFsbG93cyB0aGUgZXh0ZW5kZXIgdG8gZGVmaW5lIHN0YXRlIGRhdGEgZm9yIHRoaXMgcG9saWN5LgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJrZXkiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIGtleSBmb3IgdGhpcyBzdGF0ZSBkYXRhLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InZhbHVlIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGlzIHN0YXRlIGRhdGEuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9InNpbmNlIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIDEuMAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJleGFtcGxlcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBbRW50ZXIgZXh0ZW5zaW9uIHBvaW50IHVzYWdlIGV4YW1wbGUgaGVyZS5dCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImFwaUluZm8iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgW0VudGVyIEFQSSBpbmZvcm1hdGlvbiBoZXJlLl0KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iaW1wbGVtZW50YXRpb24iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgW0VudGVyIGluZm9ybWF0aW9uIGFib3V0IHN1cHBsaWVkIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZXh0ZW5zaW9uIHBvaW50Ll0KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iY29weXJpZ2h0Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvRGVzY3JpcHRvckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvRGVzY3JpcHRvckltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI0ZDM3Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvaW50ZXJuYWwvcG9saWN5L0Rlc2NyaXB0b3JJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDMwICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5pbnRlcm5hbC5wb2xpY3k7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSURlc2NyaXB0b3I7Ci0KLXB1YmxpYyBjbGFzcyBEZXNjcmlwdG9ySW1wbCBpbXBsZW1lbnRzIElEZXNjcmlwdG9yCi17Ci0gIHByaXZhdGUgU3RyaW5nICBzaG9ydE5hbWU7Ci0gIHByaXZhdGUgU3RyaW5nICBsb25nTmFtZTsKLSAgcHJpdmF0ZSBTdHJpbmcgIGRlc2NyaXB0aW9uOwotICBwcml2YXRlIFN0cmluZyAgaWNvblBhdGg7Ci0gIHByaXZhdGUgU3RyaW5nICBpY29uQnVuZGxlSWQ7Ci0gIHByaXZhdGUgU3RyaW5nICBjb250ZXh0SGVscElkOwotICBwcml2YXRlIGJvb2xlYW4gaGFzQ2hhbmdlZCA9IGZhbHNlOwotICAgIAotICBwdWJsaWMgYm9vbGVhbiBoYXNDaGFuZ2VkKCkKLSAgewotICAgIHJldHVybiBoYXNDaGFuZ2VkOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZXNldEhhc0NoYW5nZWQoKQotICB7Ci0gICAgaGFzQ2hhbmdlZCA9IGZhbHNlOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2hvcnROYW1lKCkKLSAgewotICAgIHJldHVybiBzaG9ydE5hbWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNob3J0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIHRoaXMuc2hvcnROYW1lID0gbmFtZTsKLSAgICAKLSAgICBpZiggbG9uZ05hbWUgPT0gbnVsbCApIGxvbmdOYW1lID0gc2hvcnROYW1lOwotICAgIAotICAgIGhhc0NoYW5nZWQgPSB0cnVlOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldExvbmdOYW1lKCkKLSAgewotICAgIHJldHVybiBsb25nTmFtZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldExvbmdOYW1lKFN0cmluZyBsb25nTmFtZSkKLSAgewotICAgIHRoaXMubG9uZ05hbWUgPSBsb25nTmFtZTsKLSAgICAKLSAgICBpZiggc2hvcnROYW1lID09IG51bGwgKSBzaG9ydE5hbWUgPSBsb25nTmFtZTsKLSAgICAKLSAgICBoYXNDaGFuZ2VkID0gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVzY3JpcHRpb24oKQotICB7Ci0gICAgcmV0dXJuIGRlc2NyaXB0aW9uOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXREZXNjcmlwdGlvbihTdHJpbmcgZGVzY3JpcHRpb24pCi0gIHsKLSAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247Ci0gICAgaGFzQ2hhbmdlZCA9IHRydWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SWNvblBhdGgoKQotICB7Ci0gICAgcmV0dXJuIGljb25QYXRoOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRJY29uUGF0aChTdHJpbmcgaWNvblBhdGgpCi0gIHsKLSAgICB0aGlzLmljb25QYXRoID0gaWNvblBhdGg7Ci0gICAgaGFzQ2hhbmdlZCA9IHRydWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SWNvbkJ1bmRsZUlkKCkKLSAgewotICAgIHJldHVybiBpY29uQnVuZGxlSWQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEljb25CdW5kbGVJZChTdHJpbmcgaWNvbkJ1bmRsZUlkKQotICB7Ci0gICAgdGhpcy5pY29uQnVuZGxlSWQgPSBpY29uQnVuZGxlSWQ7Ci0gICAgaGFzQ2hhbmdlZCA9IHRydWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29udGV4dEhlbHBJZCgpCi0gIHsKLSAgICByZXR1cm4gY29udGV4dEhlbHBJZDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldENvbnRleHRIZWxwSWQoU3RyaW5nIGNvbnRleHRIZWxwSWQpCi0gIHsKLSAgICB0aGlzLmNvbnRleHRIZWxwSWQgPSBjb250ZXh0SGVscElkOwotICAgIGhhc0NoYW5nZWQgPSB0cnVlOwotICB9IAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL2ludGVybmFsL3BvbGljeS9FbnVtZXJhdGlvblN0YXRlSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL2ludGVybmFsL3BvbGljeS9FbnVtZXJhdGlvblN0YXRlSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2VjOTUwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvRW51bWVyYXRpb25TdGF0ZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDYyNSAgIDIzODQ4MiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBBZGRpbmcgdGhyZWFkIHNhZmV0eSB0byB0aGUgc2VydmljZSBwbGF0Zm9ybSBhcGkuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UuaW50ZXJuYWwucG9saWN5OwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5U3RhdGVFbnVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU3RhdGVFbnVtZXJhdGlvbkl0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTsKLQotcHVibGljIGNsYXNzIEVudW1lcmF0aW9uU3RhdGVJbXBsIGltcGxlbWVudHMgSVBvbGljeVN0YXRlRW51bQotewotICBwcml2YXRlIGZpbmFsIFN0cmluZyBWQUxVRSA9IElQb2xpY3lTdGF0ZS5EZWZhdWx0VmFsdWVLZXk7ICAvLyROT04tTkxTLTEkCi0gIAotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgICAgICAgICBlbnVtSWQ7Ci0gIHByaXZhdGUgTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IGVudW1MaXN0OwotICBwcml2YXRlIElQb2xpY3lTdGF0ZSAgICAgICAgICAgICAgICBzdGF0ZTsKLSAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdElkOwotICAKLSAgcHVibGljIEVudW1lcmF0aW9uU3RhdGVJbXBsKCBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gcGxhdGZvcm0sIFN0cmluZyBlbnVtSWQsIFN0cmluZyBkZWZhdWx0SWQsIElQb2xpY3lTdGF0ZSBzdGF0ZSApCi0gIHsKLSAgICB0aGlzLmVudW1JZCAgICA9IGVudW1JZDsKLSAgICB0aGlzLmVudW1MaXN0ICA9IHBsYXRmb3JtLmdldFN0YXRlRW51bWVyYXRpb24oIGVudW1JZCApOwotICAgIHRoaXMuc3RhdGUgICAgID0gc3RhdGU7Ci0gICAgdGhpcy5kZWZhdWx0SWQgPSBlbnVtTGlzdC5nZXQoMCkuZ2V0SWQoKTsKLSAgIAotICAgIGlmKCBkZWZhdWx0SWQgIT0gbnVsbCApCi0gICAgewotICAgICAgdGhpcy5kZWZhdWx0SWQgPSBkZWZhdWx0SWQ7Ci0gICAgICBzdGF0ZS5wdXREZWZhdWx0VmFsdWUoIFZBTFVFLCBkZWZhdWx0SWQsIGZhbHNlICk7IAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgZm9yKCBJU3RhdGVFbnVtZXJhdGlvbkl0ZW0gZW51bUl0ZW0gOiBlbnVtTGlzdCApCi0gICAgICB7Ci0gICAgICAgIGlmKCBlbnVtSXRlbS5pc0RlZmF1bHQoKSApCi0gICAgICAgIHsKLSAgICAgICAgICB0aGlzLmRlZmF1bHRJZCA9IGVudW1JdGVtLmdldElkKCk7Ci0gICAgICAgICAgc3RhdGUucHV0RGVmYXVsdFZhbHVlKCBWQUxVRSwgIHRoaXMuZGVmYXVsdElkLCBmYWxzZSApOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRFbnVtSWQoKQotICB7Ci0gICAgcmV0dXJuIGVudW1JZDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdElkKCkKLSAgewotICAgIHJldHVybiBkZWZhdWx0SWQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEN1cnJlbnRJdGVtKCBTdHJpbmcgaXRlbUlkICkKLSAgewotICAgIGZvciggSVN0YXRlRW51bWVyYXRpb25JdGVtIGVudW1JdGVtIDogZW51bUxpc3QgKQotICAgIHsKLSAgICAgIFN0cmluZyBlbnVtSXRlbUlkID0gZW51bUl0ZW0uZ2V0SWQoKTsKLSAgICAgIAotICAgICAgaWYoIGVudW1JdGVtSWQuZXF1YWxzKCBpdGVtSWQgKSApCi0gICAgICB7Ci0gICAgICAgIHN0YXRlLnB1dFZhbHVlKCBWQUxVRSwgZW51bUl0ZW1JZCApOyAKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgSVN0YXRlRW51bWVyYXRpb25JdGVtIGdldEN1cnJlbnRJdGVtKCkKLSAgewotICAgIFN0cmluZyAgICAgICAgICAgICAgICBjdXJyZW50RW51bSA9IHN0YXRlLmdldFZhbHVlKCBWQUxVRSApOwotICAgIElTdGF0ZUVudW1lcmF0aW9uSXRlbSBjdXJyZW50SXRlbSA9IG51bGw7Ci0gICAgCi0gICAgZm9yKCBJU3RhdGVFbnVtZXJhdGlvbkl0ZW0gZW51bUl0ZW0gOiBlbnVtTGlzdCApCi0gICAgewotICAgICAgaWYoIGVudW1JdGVtLmdldElkKCkuZXF1YWxzKCBjdXJyZW50RW51bSApICkKLSAgICAgIHsKLSAgICAgICAgY3VycmVudEl0ZW0gPSBlbnVtSXRlbTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBjdXJyZW50SXRlbTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL2ludGVybmFsL3BvbGljeS9Mb2NhbFV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvaW50ZXJuYWwvcG9saWN5L0xvY2FsVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVlN2E0Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvaW50ZXJuYWwvcG9saWN5L0xvY2FsVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMzAgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODAzMjUgICAyMjIwOTUgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA2MjYgICAyMzg2MzUgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgTG9jYWxseSBhZGRlZCBzZXJ2aWNlIHBvbGljeSBub2RlcyBtZXRhIGRhdGEgY29saWRpbmcgd2l0aCBzdGF0ZSBkYXRhLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLmludGVybmFsLnBvbGljeTsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5wcmVmZXJlbmNlcy5JRWNsaXBzZVByZWZlcmVuY2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5wcmVmZXJlbmNlcy5JbnN0YW5jZVNjb3BlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeUVudW1lcmF0aW9uTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVJlbGF0aW9uc2hpcDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTdGF0ZUVudW1lcmF0aW9uSXRlbTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuUG9saWN5UmVsYXRpb25zaGlwSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeUFjdGl2YXRvcjsKLWltcG9ydCBvcmcub3NnaS5zZXJ2aWNlLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbjsKLQotcHVibGljIGNsYXNzIExvY2FsVXRpbHMKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJBU0VfS0VZICAgICAgPSAib3JnLmVjbGlwc2Uud3N0LmxvY2FsLiI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIExPQ0FMX0lEU19LRVkgPSAibG9jYWxJZHMiOyAvLyROT04tTkxTLTEkCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJFTlRfS0VZICAgID0gInBhcmVudElkIjsgLy8kTk9OLU5MUy0xJAotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTVVUQUJMRV9LRVkgICA9ICJtdXRhYmxlIjsgLy8kTk9OLU5MUy0xJAotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVTQ1JfS0VZICAgICA9ICJkZXNjcmlwdGlvbiI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIExPTkdOQU1FX0tFWSAgPSAibG9uZ25hbWUiOyAvLyROT04tTkxTLTEkCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTSE9SVE5BTUVfS0VZID0gInNob3J0bmFtZSI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElDT05QQVRIX0tFWSAgPSAiaWNvbnBhdGgiOyAvLyROT04tTkxTLTEkCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJQ09OQlVORF9LRVkgID0gImljb25idW5kbGVpZCI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFTFBJRF9LRVkgICAgPSAiY29udGV4dGhlbHBpZCI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVOVU1MSVNUX0tFWSAgPSAiZW51bWxpc3RpZCI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkVOVU1fS0VZICAgPSAiZGVmYXVsdGVudW1pZCI7IC8vJE5PTi1OTFMtMSQKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFJFTF9LRVkgICAgICAgPSAicmVsIjsgLy8kTk9OLU5MUy0xJAotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFSR0VUX1NVRkZJWCA9ICIudGFyZ2V0IjsgLy8kTk9OLU5MUy0xJAotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09VUkNFX1NVRkZJWCA9ICIuc291cmNlIjsgLy8kTk9OLU5MUy0xJAotICAKLSAgcHVibGljIHN0YXRpYyBMaXN0PFN0cmluZz4gZ2V0TG9jYWxQb2xpY3lJZHMoKQotICB7Ci0gICAgTGlzdDxTdHJpbmc+ICAgICAgICByZXN1bHQgICAgICA9IG5ldyBWZWN0b3I8U3RyaW5nPigpOwotICAgIElFY2xpcHNlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXMgPSBnZXRQcmVmZXJlbmNlcygpOwotICAgIFN0cmluZyAgICAgICAgICAgICAga2V5ICAgICAgICAgPSBCQVNFX0tFWSArIExPQ0FMX0lEU19LRVk7Ci0gICAgU3RyaW5nICAgICAgICAgICAgICBpZHNWYWx1ZSAgICA9IHByZWZlcmVuY2VzLmdldCgga2V5ICwgIiIgKTsgLy8kTk9OLU5MUy0xJAotICAgIAotICAgIGlmKCAhaWRzVmFsdWUuZXF1YWxzKCAiIiApICkgLy8kTk9OLU5MUy0xJAotICAgIHsKLSAgICAgIHJlc3VsdCA9IGNyZWF0ZVN0cmluZ0xpc3QoIGlkc1ZhbHVlICk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBzYXZlTG9jYWxJZHMoIExpc3Q8U3RyaW5nPiBsb2NhbElkcyApCi0gIHsgCi0gICAgSUVjbGlwc2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlcyA9IGdldFByZWZlcmVuY2VzKCk7Ci0gICAgU3RyaW5nICAgICAgICAgICAgICBrZXkgICAgICAgICA9IEJBU0VfS0VZICsgTE9DQUxfSURTX0tFWTsKLSAgICAKLSAgICBpZiggbG9jYWxJZHMuc2l6ZSgpID4gMCApCi0gICAgewotICAgICAgcHJlZmVyZW5jZXMucHV0KCBrZXksIGNyZWF0ZVNwYWNlRGVsaW1pdGVkU3RyaW5nKCBsb2NhbElkcyApICk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIHZvaWQgcmVtb3ZlQWxsUHJlZmVyZW5jZVBvbGljaWVzKCBTdHJpbmcgc3RhcnRzV2l0aCwgSUVjbGlwc2VQcmVmZXJlbmNlcyBwcmVmcyApCi0gIHsKLSAgICBpZiggc3RhcnRzV2l0aCA9PSBudWxsICkgc3RhcnRzV2l0aCA9IEJBU0VfS0VZOwotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIElFY2xpcHNlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXMgPSBwcmVmcyA9PSBudWxsID8gZ2V0UHJlZmVyZW5jZXMoKSA6IHByZWZzOwotICAgICAgU3RyaW5nW10gICAgICAgICAgICBrZXlzICAgICAgICA9IHByZWZlcmVuY2VzLmtleXMoKTsKLSAgICAgIAotICAgICAgZm9yKCBTdHJpbmcga2V5IDoga2V5cyApCi0gICAgICB7Ci0gICAgICAgIGlmKCBrZXkuc3RhcnRzV2l0aCggc3RhcnRzV2l0aCApICkKLSAgICAgICAgewotICAgICAgICAgIHByZWZlcmVuY2VzLnJlbW92ZSgga2V5ICk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goIEJhY2tpbmdTdG9yZUV4Y2VwdGlvbiBleGMgKQotICAgIHsKLSAgICAgIFNlcnZpY2VQb2xpY3lBY3RpdmF0b3IubG9nRXJyb3IoICJFcnJvciBsb2FkaW5nIHNlcnZpY2UgcG9saWN5IGxvY2FsIHByZWZlcmVuY2VzLiIsIGV4Yyk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBzYXZlTG9jYWxQb2xpY3koIFNlcnZpY2VQb2xpY3lJbXBsIHBvbGljeSApCi0gIHsKLSAgICBJRWNsaXBzZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzID0gZ2V0UHJlZmVyZW5jZXMoKTsKLSAgICBTdHJpbmcgICAgICAgICAgICAgIHBvbGljeUlkICAgID0gcG9saWN5LmdldElkKCk7Ci0gICAgSURlc2NyaXB0b3IgICAgICAgICBkZXNjcmlwdG9yICA9IHBvbGljeS5nZXREZXNjcmlwdG9yKCk7Ci0gICAgSVNlcnZpY2VQb2xpY3kgICAgICBwYXJlbnQgICAgICA9IHBvbGljeS5nZXRQYXJlbnRQb2xpY3koKTsKLSAgICAKLSAgICBzYXZlKCBwcmVmZXJlbmNlcywgcG9saWN5SWQsIFBBUkVOVF9LRVksICBwYXJlbnQgPT0gbnVsbCA/IG51bGwgOiBwYXJlbnQuZ2V0SWQoKSApOwotICAgIHNhdmUoIHByZWZlcmVuY2VzLCBwb2xpY3lJZCwgTVVUQUJMRV9LRVksICIiICsgcG9saWN5LmdldFBvbGljeVN0YXRlKCkuaXNNdXRhYmxlKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgIHNhdmUoIHByZWZlcmVuY2VzLCBwb2xpY3lJZCwgRU5VTUxJU1RfS0VZLCBwb2xpY3kuZ2V0RW51bUxpc3RJZCgpICk7Ci0gICAgc2F2ZSggcHJlZmVyZW5jZXMsIHBvbGljeUlkLCBERUZFTlVNX0tFWSwgcG9saWN5LmdldERlZmF1bHRFbnVtSWQoKSApOwotICAgIHNhdmUoIHByZWZlcmVuY2VzLCBwb2xpY3lJZCwgREVTQ1JfS0VZLCBkZXNjcmlwdG9yLmdldERlc2NyaXB0aW9uKCkgKTsKLSAgICBzYXZlKCBwcmVmZXJlbmNlcywgcG9saWN5SWQsIFNIT1JUTkFNRV9LRVksIGRlc2NyaXB0b3IuZ2V0U2hvcnROYW1lKCkgKTsKLSAgICBzYXZlKCBwcmVmZXJlbmNlcywgcG9saWN5SWQsIExPTkdOQU1FX0tFWSwgZGVzY3JpcHRvci5nZXRMb25nTmFtZSgpICk7Ci0gICAgc2F2ZSggcHJlZmVyZW5jZXMsIHBvbGljeUlkLCBJQ09OUEFUSF9LRVksIGRlc2NyaXB0b3IuZ2V0SWNvblBhdGgoKSApOwotICAgIHNhdmUoIHByZWZlcmVuY2VzLCBwb2xpY3lJZCwgSUNPTkJVTkRfS0VZLCBkZXNjcmlwdG9yLmdldEljb25CdW5kbGVJZCgpICk7Ci0gICAgc2F2ZSggcHJlZmVyZW5jZXMsIHBvbGljeUlkLCBIRUxQSURfS0VZLCBkZXNjcmlwdG9yLmdldENvbnRleHRIZWxwSWQoKSApOwotICAgIHNhdmVSZWxhdGlvbnNoaXBzKCBwcmVmZXJlbmNlcywgcG9saWN5SWQsIHBvbGljeS5nZXRSZWxhdGlvbnNoaXBzKCkgKTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyB2b2lkIGxvYWRMb2NhbFBvbGljeSggU3RyaW5nIHBvbGljeUlkLCBTZXJ2aWNlUG9saWN5UGxhdGZvcm1JbXBsIHBsYXRmb3JtICkKLSAgewotICAgIElFY2xpcHNlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXMgPSBnZXRQcmVmZXJlbmNlcygpOwotICAgIFNlcnZpY2VQb2xpY3lJbXBsICAgcG9saWN5ICAgICAgPSBwbGF0Zm9ybS5nZXRTZXJ2aWNlUG9saWN5KCBwb2xpY3lJZCApOwotICAgIERlc2NyaXB0b3JJbXBsICAgICAgZGVzY3JpcHRvciAgPSAoRGVzY3JpcHRvckltcGwpcG9saWN5LmdldERlc2NyaXB0b3IoKTsKLSAgICBTdHJpbmcgICAgICAgICAgICAgIHBhcmVudElkICAgID0gcHJlZmVyZW5jZXMuZ2V0KCBjcmVhdGVLZXkoIHBvbGljeUlkLCBQQVJFTlRfS0VZKSwgbnVsbCApOwotICAgIAotICAgIGlmKCBwYXJlbnRJZCAhPSBudWxsICkKLSAgICB7Ci0gICAgICBJU2VydmljZVBvbGljeSBwYXJlbnRQb2xpY3kgPSBwbGF0Zm9ybS5nZXRTZXJ2aWNlUG9saWN5KCBwYXJlbnRJZCApOwotICAgICAgCi0gICAgICBwb2xpY3kuc2V0UGFyZW50KCAoU2VydmljZVBvbGljeUltcGwpcGFyZW50UG9saWN5ICk7Ci0gICAgfQotICAgIAotICAgIHBvbGljeS5nZXRQb2xpY3lTdGF0ZSgpLnNldE11dGFibGUoIHByZWZlcmVuY2VzLmdldEJvb2xlYW4oIGNyZWF0ZUtleSggcG9saWN5SWQsIE1VVEFCTEVfS0VZKSwgdHJ1ZSApICk7Ci0gICAgcG9saWN5LnNldEVudW1MaXN0SWQoIHByZWZlcmVuY2VzLmdldCggY3JlYXRlS2V5KCBwb2xpY3lJZCwgRU5VTUxJU1RfS0VZKSwgbnVsbCApICk7Ci0gICAgcG9saWN5LnNldERlZmF1bHRFbnVtSWQoIHByZWZlcmVuY2VzLmdldCggY3JlYXRlS2V5KCBwb2xpY3lJZCwgREVGRU5VTV9LRVkpLCBudWxsICkgKTsKLSAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0aW9uKCBwcmVmZXJlbmNlcy5nZXQoIGNyZWF0ZUtleSggcG9saWN5SWQsIERFU0NSX0tFWSksIG51bGwgKSApOwotICAgIGRlc2NyaXB0b3Iuc2V0U2hvcnROYW1lKCBwcmVmZXJlbmNlcy5nZXQoIGNyZWF0ZUtleSggcG9saWN5SWQsIFNIT1JUTkFNRV9LRVkpLCBudWxsICkgKTsKLSAgICBkZXNjcmlwdG9yLnNldExvbmdOYW1lKCBwcmVmZXJlbmNlcy5nZXQoIGNyZWF0ZUtleSggcG9saWN5SWQsIExPTkdOQU1FX0tFWSksIG51bGwgKSApOwotICAgIGRlc2NyaXB0b3Iuc2V0SWNvblBhdGgoIHByZWZlcmVuY2VzLmdldCggY3JlYXRlS2V5KCBwb2xpY3lJZCwgSUNPTlBBVEhfS0VZKSwgbnVsbCApICk7Ci0gICAgZGVzY3JpcHRvci5zZXRJY29uQnVuZGxlSWQoIHByZWZlcmVuY2VzLmdldCggY3JlYXRlS2V5KCBwb2xpY3lJZCwgSUNPTkJVTkRfS0VZKSwgbnVsbCApICk7Ci0gICAgZGVzY3JpcHRvci5zZXRDb250ZXh0SGVscElkKCBwcmVmZXJlbmNlcy5nZXQoIGNyZWF0ZUtleSggcG9saWN5SWQsIEhFTFBJRF9LRVkpLCBudWxsICkgKTsKLSAgICBwb2xpY3kuc2V0UmVsYXRpb25zaGlwcyggbG9hZFJlbGF0aW9uc2hpcHMoIHByZWZlcmVuY2VzLCBwb2xpY3lJZCwgcGxhdGZvcm0gKSApOwotICB9Ci0gIAotICBwcml2YXRlIHN0YXRpYyBJRWNsaXBzZVByZWZlcmVuY2VzIGdldFByZWZlcmVuY2VzKCkKLSAgewotICAgIHJldHVybiBuZXcgSW5zdGFuY2VTY29wZSgpLmdldE5vZGUoIFNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuUExVR0lOX0lEICk7ICAgIAotICB9Ci0gIAotICBwcml2YXRlIHN0YXRpYyBMaXN0PFN0cmluZz4gY3JlYXRlU3RyaW5nTGlzdCggU3RyaW5nIHNwYWNlRGVsaW1pdGVkU3RyaW5nICkKLSAgewotICAgIFN0cmluZ1tdIHNwbGl0VmFsdWVzID0gc3BhY2VEZWxpbWl0ZWRTdHJpbmcuc3BsaXQoICIgIiApOyAvLyROT04tTkxTLTEkCi0gICAgCi0gICAgcmV0dXJuIEFycmF5cy5hc0xpc3QoIHNwbGl0VmFsdWVzICk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgc3RhdGljIFN0cmluZyBjcmVhdGVTcGFjZURlbGltaXRlZFN0cmluZyggTGlzdDxTdHJpbmc+IHN0cmluZ0xpc3QgKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgc3RyaW5nTGlzdC5zaXplKCk7IGluZGV4KysgKQotICAgIHsKLSAgICAgIFN0cmluZyBpZCA9IHN0cmluZ0xpc3QuZ2V0KCBpbmRleCApOwotICAgICAgCi0gICAgICBidWZmZXIuYXBwZW5kKCBpZCApOwotICAgICAgCi0gICAgICBpZiggaW5kZXggPCAoc3RyaW5nTGlzdC5zaXplKCkgLSAxKSApIGJ1ZmZlci5hcHBlbmQoICcgJyApOwotICAgIH0KLQotICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoKTsKLSAgfQotICAKLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBzYXZlUmVsYXRpb25zaGlwcyggSUVjbGlwc2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlcywgU3RyaW5nIHBvbGljeUlkLCBMaXN0PElQb2xpY3lSZWxhdGlvbnNoaXA+IHJlbGF0aW9uc2hpcHMgKQotICB7Ci0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHJlbGF0aW9uc2hpcHMuc2l6ZSgpOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBJUG9saWN5UmVsYXRpb25zaGlwICAgICAgICAgIHJlbGF0aW9uc2hpcCAgID0gcmVsYXRpb25zaGlwcy5nZXQoIGluZGV4ICk7Ci0gICAgICBJUG9saWN5RW51bWVyYXRpb25MaXN0ICAgICAgIHBvbGljeUxpc3QgICAgID0gcmVsYXRpb25zaGlwLmdldFBvbGljeUVudW1lcmF0aW9uTGlzdCgpOwotICAgICAgTGlzdDxJUG9saWN5RW51bWVyYXRpb25MaXN0PiB0YXJnZXRQb2xpY2llcyA9IHJlbGF0aW9uc2hpcC5nZXRSZWxhdGVkUG9saWNpZXMoKTsKLSAgICAgIAotICAgICAgc2F2ZVBvbGljeVJlbGF0aW9uc2hpcCggaW5kZXgrMSwgcHJlZmVyZW5jZXMsIHBvbGljeUlkLCBwb2xpY3lMaXN0LCBTT1VSQ0VfU1VGRklYICk7Ci0gICAgICAKLSAgICAgIGZvciggaW50IHRhcmdldEluZGV4ID0gMDsgdGFyZ2V0SW5kZXggPCB0YXJnZXRQb2xpY2llcy5zaXplKCk7IHRhcmdldEluZGV4KysgKQotICAgICAgewotICAgICAgICBJUG9saWN5RW51bWVyYXRpb25MaXN0IHRhcmdldFBvbGljeSA9IHRhcmdldFBvbGljaWVzLmdldCggdGFyZ2V0SW5kZXggKTsKLSAgICAgICAgU3RyaW5nICAgICAgICAgICAgICAgICB0YXJnZXRTdWZmaXggPSBUQVJHRVRfU1VGRklYICsgKHRhcmdldEluZGV4KzEpOwotICAgICAgICAKLSAgICAgICAgc2F2ZVBvbGljeVJlbGF0aW9uc2hpcCggaW5kZXgrMSwgcHJlZmVyZW5jZXMsIHBvbGljeUlkLCB0YXJnZXRQb2xpY3ksIHRhcmdldFN1ZmZpeCApOwotICAgICAgfQotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSBzdGF0aWMgTGlzdDxJUG9saWN5UmVsYXRpb25zaGlwPiBsb2FkUmVsYXRpb25zaGlwcyggSUVjbGlwc2VQcmVmZXJlbmNlcyBwcmVmZXJlbmNlcywgU3RyaW5nIHBvbGljeUlkLCBTZXJ2aWNlUG9saWN5UGxhdGZvcm1JbXBsIHBsYXRmb3JtICkKLSAgewotICAgIExpc3Q8SVBvbGljeVJlbGF0aW9uc2hpcD4gcmVsYXRpb25zaGlwcyA9IG5ldyBWZWN0b3I8SVBvbGljeVJlbGF0aW9uc2hpcD4oKTsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgIHJlbENvdW50ICAgICAgPSAxOwotICAgIElQb2xpY3lFbnVtZXJhdGlvbkxpc3QgICAgc291cmNlTGlzdCAgICA9IGxvYWRQb2xpY3lSZWxhdGlvbnNoaXAoIHJlbENvdW50LCBwcmVmZXJlbmNlcywgcGxhdGZvcm0sIHBvbGljeUlkLCBTT1VSQ0VfU1VGRklYICk7Ci0gICAgCi0gICAgd2hpbGUoIHNvdXJjZUxpc3QgIT0gbnVsbCApCi0gICAgewotICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRDb3VudCAgPSAxOwotICAgICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdWZmaXggPSBUQVJHRVRfU1VGRklYICsgdGFyZ2V0Q291bnQ7Ci0gICAgICBJUG9saWN5RW51bWVyYXRpb25MaXN0ICAgICAgIHRhcmdldExpc3QgICA9IGxvYWRQb2xpY3lSZWxhdGlvbnNoaXAoIHJlbENvdW50LCBwcmVmZXJlbmNlcywgcGxhdGZvcm0sIHBvbGljeUlkLCB0YXJnZXRTdWZmaXggKTsKLSAgICAgIExpc3Q8SVBvbGljeUVudW1lcmF0aW9uTGlzdD4gdGFyZ2V0cyAgICAgID0gbmV3IFZlY3RvcjxJUG9saWN5RW51bWVyYXRpb25MaXN0PigpOwotICAgICAgCi0gICAgICB3aGlsZSggdGFyZ2V0TGlzdCAhPSBudWxsICkKLSAgICAgIHsKLSAgICAgICAgdGFyZ2V0cy5hZGQoIHRhcmdldExpc3QgKTsKLSAgICAgICAgdGFyZ2V0Q291bnQrKzsKLSAgICAgICAgdGFyZ2V0U3VmZml4ID0gVEFSR0VUX1NVRkZJWCArIHRhcmdldENvdW50OwotICAgICAgICB0YXJnZXRMaXN0ID0gbG9hZFBvbGljeVJlbGF0aW9uc2hpcCggcmVsQ291bnQsIHByZWZlcmVuY2VzLCBwbGF0Zm9ybSwgcG9saWN5SWQsIHRhcmdldFN1ZmZpeCApOwotICAgICAgfQotICAgICAgCi0gICAgICByZWxhdGlvbnNoaXBzLmFkZCggbmV3IFBvbGljeVJlbGF0aW9uc2hpcEltcGwoIHNvdXJjZUxpc3QsIHRhcmdldHMgKSApOwotICAgICAgcmVsQ291bnQrKzsKLSAgICAgIHNvdXJjZUxpc3QgPSBsb2FkUG9saWN5UmVsYXRpb25zaGlwKCByZWxDb3VudCwgcHJlZmVyZW5jZXMsIHBsYXRmb3JtLCBwb2xpY3lJZCwgU09VUkNFX1NVRkZJWCApOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVsYXRpb25zaGlwczsKLSAgfQotICAKLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBzYXZlUG9saWN5UmVsYXRpb25zaGlwKCBpbnQgICAgICAgICAgICAgICAgICAgIHJlbENvdW50LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRWNsaXBzZVByZWZlcmVuY2VzICAgIHByZWZlcmVuY2VzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAgIHBvbGljeUlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb2xpY3lFbnVtZXJhdGlvbkxpc3QgZW51bUxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgICAgICAgICBrZXlTdWZmaXggKQotICB7Ci0gICAgU3RyaW5nIGtleSAgID0gY3JlYXRlS2V5KCBwb2xpY3lJZCwgUkVMX0tFWSArIHJlbENvdW50ICsga2V5U3VmZml4ICk7Ci0gICAgU3RyaW5nIHZhbHVlID0gY3JlYXRlUmVsYXRpb25zaGlwVmFsdWUoIGVudW1MaXN0ICk7Ci0gICAgCi0gICAgcHJlZmVyZW5jZXMucHV0KCBrZXksIHZhbHVlICk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgc3RhdGljIElQb2xpY3lFbnVtZXJhdGlvbkxpc3QgbG9hZFBvbGljeVJlbGF0aW9uc2hpcCggaW50ICAgICAgICAgICAgICAgICAgICAgICByZWxDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRWNsaXBzZVByZWZlcmVuY2VzICAgICAgIHByZWZlcmVuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybUltcGwgcGxhdGZvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICBwb2xpY3lJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgIGtleVN1ZmZpeCApCi0gIHsKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgIGtleSAgICAgID0gY3JlYXRlS2V5KCBwb2xpY3lJZCwgUkVMX0tFWSArIHJlbENvdW50ICsga2V5U3VmZml4ICk7Ci0gICAgU3RyaW5nICAgICAgICAgICAgICAgICB2YWx1ZSAgICA9IHByZWZlcmVuY2VzLmdldCgga2V5LCAiIiApOyAvLyROT04tTkxTLTEkCi0gICAgSVBvbGljeUVudW1lcmF0aW9uTGlzdCBlbnVtTGlzdCA9IG51bGw7Ci0gICAgCi0gICAgaWYoICF2YWx1ZS5lcXVhbHMoICIiICkgKSAvLyROT04tTkxTLTEkCi0gICAgewotICAgICAgU3RyaW5nW10gICAgICAgICAgICAgICAgICAgIHNwbGl0VmFsdWUgICAgID0gdmFsdWUuc3BsaXQoICIgIiApOyAvLyROT04tTkxTLTEkCi0gICAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UG9saWN5SWQgPSBzcGxpdFZhbHVlWzBdOwotICAgICAgSVNlcnZpY2VQb2xpY3kgICAgICAgICAgICAgIHRhcmdldFBvbGljeSAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggdGFyZ2V0UG9saWN5SWQgKTsKLSAgICAgIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPiBpdGVtcyAgICAgICAgICA9IG5ldyBWZWN0b3I8SVN0YXRlRW51bWVyYXRpb25JdGVtPigpOwotICAgICAgCi0gICAgICBmb3IoIGludCBpbmRleCA9IDE7IGluZGV4IDwgc3BsaXRWYWx1ZS5sZW5ndGg7IGluZGV4KysgKQotICAgICAgewotICAgICAgICBJU3RhdGVFbnVtZXJhdGlvbkl0ZW0gaXRlbSA9IHBsYXRmb3JtLmdldFN0YXRlSXRlbUVudW1lcmF0aW9uKCBzcGxpdFZhbHVlW2luZGV4XSApOwotICAgICAgICAKLSAgICAgICAgaXRlbXMuYWRkKCBpdGVtICk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIGVudW1MaXN0ID0gbmV3IFBvbGljeUVudW1lcmF0aW9uTGlzdEltcGwoIGl0ZW1zLCB0YXJnZXRQb2xpY3kgKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGVudW1MaXN0OwotICB9Ci0gIAotICAvKioKLSAgICogVGhpcyBtZXRob2Qgd2lsbCBjcmVhdGUgYSBzcGFjZSBkZWxpbWl0ZWQgc3RyaW5nIG9mIGVudW1lcmF0aW9ucyBpZC4KLSAgICogVGhlIGZpcnN0IGlkIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIHBvbGljeSBpZCBmb3IgdGhpcyByZWxhdGlvbnNoaXAuCi0gICAqIFN1YnNlcXVlbnQgaWRzIHdpbGwgYmUgZW51bWVyYXRpb24gaXRlbSBpZHMuCi0gICAqIAotICAgKiBAcGFyYW0gZW51bUxpc3QKLSAgICogQHJldHVybgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNyZWF0ZVJlbGF0aW9uc2hpcFZhbHVlKCBJUG9saWN5RW51bWVyYXRpb25MaXN0IGVudW1MaXN0ICkKLSAgewotICAgIExpc3Q8U3RyaW5nPiAgICAgICAgICAgICAgICBzdHJpbmdMaXN0ID0gbmV3IFZlY3RvcjxTdHJpbmc+KCk7Ci0gICAgTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IGl0ZW1MaXN0ICAgPSBlbnVtTGlzdC5nZXRFbnVtZXJhdGlvbkxpc3QoKTsKLSAgICAKLSAgICBzdHJpbmdMaXN0LmFkZCggZW51bUxpc3QuZ2V0UG9saWN5KCkuZ2V0SWQoKSApOwotICAgIAotICAgIGZvciggSVN0YXRlRW51bWVyYXRpb25JdGVtIGl0ZW0gOiBpdGVtTGlzdCApCi0gICAgewotICAgICAgc3RyaW5nTGlzdC5hZGQoIGl0ZW0uZ2V0SWQoKSApOyAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBjcmVhdGVTcGFjZURlbGltaXRlZFN0cmluZyggc3RyaW5nTGlzdCApOwotICB9Ci0gIAotICBwcml2YXRlIHN0YXRpYyB2b2lkIHNhdmUoIElFY2xpcHNlUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXMsIFN0cmluZyBwb2xpY3lJZCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlICkKLSAgewotICAgIGlmKCB2YWx1ZSAhPSBudWxsICYmICF2YWx1ZS5lcXVhbHMoICIiICkgKSAvLyROT04tTkxTLTEkCi0gICAgewotICAgICAgcHJlZmVyZW5jZXMucHV0KCBjcmVhdGVLZXkocG9saWN5SWQsa2V5KSwgdmFsdWUgKTsgICAgICAKLSAgICB9Ci0gIH0KLSAgCi0gIHByaXZhdGUgc3RhdGljIFN0cmluZyBjcmVhdGVLZXkoIFN0cmluZyBpZCwgU3RyaW5nIGtleSApCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcig1MCk7Ci0gICAgCi0gICAgYnVmZmVyLmFwcGVuZCggQkFTRV9LRVkgKTsKLSAgICBidWZmZXIuYXBwZW5kKCBpZCApOwotICAgIGJ1ZmZlci5hcHBlbmQoICcuJyApOwotICAgIGJ1ZmZlci5hcHBlbmQoIGtleSApOwotICAgIAotICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL2ludGVybmFsL3BvbGljeS9Qb2xpY3lTdGF0ZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvUG9saWN5U3RhdGVJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2YjdkYWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL2ludGVybmFsL3BvbGljeS9Qb2xpY3lTdGF0ZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzEyMjEgICAyMTM0OTIgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODAxMDkgICAyMTQ4MTggcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODAzMjUgICAyMjIwOTUgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA0MzAgICAyMjE1NzggcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgRml4ZWQgY29tbWl0IHByb2JsZW0uCi0gKiAyMDA4MDYyNSAgIDIzODQ4MiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBBZGRpbmcgdGhyZWFkIHNhZmV0eSB0byB0aGUgc2VydmljZSBwbGF0Zm9ybSBhcGkuCi0gKiAyMDA5MDMyNyAgIDI3MDI4MyBtYWh1dGNoQGNhLmlibS5jb20gLSBNYXJrIEh1dGNoaW5zb24sIElQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyIG5vdCBub3RpZmllZCBmaXJzdCB0aW1lIGNoYW5nZSBpcyBtYWRlCi0gKiAyMDA5MDQwMSAgIDI1ODg1OCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBTZXJ2aWNlIFBvbGljaWVzIEZyYW1ld29yazogSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIgbm90IG5vdGlmaWVkIHdoZW4gcHJvamVjdCBzcGVjaWZpYyBzZXR0aW5ncyBlbmFibGVkL2Rpc2FibGVkCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UuaW50ZXJuYWwucG9saWN5OwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUHJvamVjdFNjb3BlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUucHJlZmVyZW5jZXMuSUVjbGlwc2VQcmVmZXJlbmNlczsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUucHJlZmVyZW5jZXMuSVByZWZlcmVuY2VzU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUucHJlZmVyZW5jZXMuSW5zdGFuY2VTY29wZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeUFjdGl2YXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeVBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI7Ci0KLXB1YmxpYyBjbGFzcyBQb2xpY3lTdGF0ZUltcGwgaW1wbGVtZW50cyBJUG9saWN5U3RhdGUKLXsKLSAgcHJpdmF0ZSBMaXN0PElQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPiBzdGF0ZUNoYW5nZUxpc3RlbmVyczsKLSAgcHJpdmF0ZSBMaXN0PElQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPiBzdGF0ZUNoYW5nZUxpc3RlbmVyc09ubHlPbkNvbW1pdDsKLSAgcHJpdmF0ZSBJUHJlZmVyZW5jZXNTZXJ2aWNlICAgICAgICAgICAgICBzZXJ2aWNlOwotICBwcml2YXRlIElQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q7Ci0gIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZTsKLSAgcHJpdmF0ZSBJU2VydmljZVBvbGljeSAgICAgICAgICAgICAgICAgICBwb2xpY3k7Ci0gIHByaXZhdGUgTWFwPFN0cmluZyxUYWJsZUVudHJ5PiAgICAgICAgICAgdGFibGU7Ci0gIHByaXZhdGUgU2VydmljZVBvbGljeVBsYXRmb3JtICAgICAgICAgICAgcGxhdGZvcm07Ci0KLSAgcHVibGljIFBvbGljeVN0YXRlSW1wbCggU2VydmljZVBvbGljeVBsYXRmb3JtIHBsYXRmb3JtLCBJU2VydmljZVBvbGljeSBwb2xpY3ksIElQcm9qZWN0IHByb2plY3QpCi0gIHsKLSAgICB0aGlzLnNlcnZpY2UgICAgICAgICAgICAgID0gUGxhdGZvcm0uZ2V0UHJlZmVyZW5jZXNTZXJ2aWNlKCk7Ci0gICAgdGhpcy5wbGF0Zm9ybSAgICAgICAgICAgICA9IHBsYXRmb3JtOwotICAgIHRoaXMucHJvamVjdCAgICAgICAgICAgICAgPSBwcm9qZWN0OwotICAgIHRoaXMucG9saWN5ICAgICAgICAgICAgICAgPSBwb2xpY3k7Ci0gICAgdGhpcy5tdXRhYmxlICAgICAgICAgICAgICA9IHBvbGljeS5pc1ByZWRlZmluZWQoKSA/IGZhbHNlIDogdHJ1ZTsKLSAgICB0aGlzLnRhYmxlICAgICAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBUYWJsZUVudHJ5PigpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBjb21taXRDaGFuZ2VzKCkKLSAgewotICAgIC8vIFdlIGRvbid0IGRvIGFueXRoaW5nIGlmIHRoaXMgcG9saWN5IGlzIG5vdCBtdXRhYmxlLgotICAgIGlmKCAhbXV0YWJsZSApIHJldHVybjsKLSAgICAKLSAgICBJRWNsaXBzZVByZWZlcmVuY2VzIHByZWZlcmVuY2VzID0gbnVsbDsKLSAgICAKLSAgICBpZiggcHJvamVjdCA9PSBudWxsICB8fCBwcm9qZWN0UHJlZmVyZW5jZXNHb3REaXNhYmxlZCgpKQotICAgIHsKLSAgICAgIC8vdGhlIHByb2plY3QgcHJlZmVyZW5jZXMgYXJlIGRpc2FibGVkLCBzbyB1c2Ugd29ya3NwYWNlIHByZWZlcmVuY2VzCi0gICAgICBwcmVmZXJlbmNlcyA9IG5ldyBJbnN0YW5jZVNjb3BlKCkuZ2V0Tm9kZSggU2VydmljZVBvbGljeUFjdGl2YXRvci5QTFVHSU5fSUQgKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHByZWZlcmVuY2VzID0gbmV3IFByb2plY3RTY29wZSggcHJvamVjdCApLmdldE5vZGUoIFNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuUExVR0lOX0lEICk7Ci0gICAgfQotCi0gICAgZm9yKCBNYXAuRW50cnk8U3RyaW5nLCBUYWJsZUVudHJ5PiBlbnRyeSA6IHRhYmxlLmVudHJ5U2V0KCkgKQotICAgIHsKLSAgICAgIFN0cmluZyAgICAga2V5ICAgICAgICA9IGVudHJ5LmdldEtleSgpOwotICAgICAgU3RyaW5nICAgICBzdG9yZUtleSAgID0gbWFrZVN0b3JlS2V5KCBrZXkgKTsKLSAgICAgIFRhYmxlRW50cnkgdGFibGVFbnRyeSA9IGVudHJ5LmdldFZhbHVlKCk7Ci0gICAgICBTdHJpbmcgICAgIHZhbHVlOwotICAgICAgaWYgKHByb2plY3RQcmVmZXJlbmNlc0dvdERpc2FibGVkKCkpCi0gICAgCSAgLy90aGUgcHJvamVjdCBwcmVmZXJlbmNlcyBhcmUgZGlzYWJsZWQsIHNvIHVzZSB2YWx1ZSBmcm9tIHdvcmtzcGFjZSBwcmVmZXJlbmNlcwotICAgIAkgIHZhbHVlID0gcHJlZmVyZW5jZXMuZ2V0KHN0b3JlS2V5LCAiIik7Ci0gICAgICBlbHNlCi0gICAgCSAgdmFsdWUgPSB0YWJsZUVudHJ5LnZhbHVlOwotCi0gICAgICBpZiggdmFsdWUgIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBvbGRWYWx1ZSA9IHRhYmxlRW50cnkubGFzdENvbW1pdHRlZFZhbHVlOwotICAgICAgIAotICAgICAgICAvLyBBbHdheXMgbmVlZCB0byBwdXQgdGhlIHZhbHVlIGluIHRoZSBiYWNraW5nIHN0b3JlIGV2ZW4gaWYgaXQgaXMgdGhlIHNhbWUgdmFsdWUKLSAgICAgICAgLy8gc2luY2Ugd2UgZGVsZXRlIGFsbCBwcmVmZXJlbmNlcyBiZWZvcmUgY29tbWl0dGluZyB0aGVtLgotICAgICAgICBwcmVmZXJlbmNlcy5wdXQoIHN0b3JlS2V5LCB2YWx1ZSApOwotICAgICAgICB0YWJsZUVudHJ5Lmxhc3RDb21taXR0ZWRWYWx1ZSA9IHZhbHVlOwotICAgICAgICAKLSAgICAgICAgaWYoIG9sZFZhbHVlID09IG51bGwgKQotICAgICAgICB7IAotICAgICAgICAgIC8vaWYgdGhlIG9sZCB2YWx1ZSBpcyBudWxsLCBhbmQgdGhlIG5ldyB2YWx1ZSBpcyBub3QgbnVsbCwgbmVlZCB0byBmaXJlIGEgY2hhbmdlCi0gICAgICAgICAgZmlyZVBvbGljeVN0YXRlQ2hhbmdlKCBzdGF0ZUNoYW5nZUxpc3RlbmVyc09ubHlPbkNvbW1pdCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUgKTsKLSAgICAgICAgCQotICAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlbW92ZSB0aGUgdGFibGVFbnRyeSB2YWx1ZSBzbyB0aGF0IGdldFZhbHVlIHdpbGwgZ2V0IHRoZSBvbGQgdmFsdWUuCi0gICAgICAgICAgdGFibGVFbnRyeS52YWx1ZSA9IG51bGw7Ci0gICAgICAgICAgb2xkVmFsdWUgPSBnZXRWYWx1ZSgga2V5ICk7Ci0gICAgICAgIAotICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIHRhYmxlRW50cnkgdmFsdWU7Ci0gICAgICAgICAgdGFibGVFbnRyeS52YWx1ZSA9IHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiggIXZhbHVlLmVxdWFscyggb2xkVmFsdWUgKSApIAotICAgICAgICB7ICAgICAgICAgIAotICAgICAgICAgIGZpcmVQb2xpY3lTdGF0ZUNoYW5nZSggc3RhdGVDaGFuZ2VMaXN0ZW5lcnNPbmx5T25Db21taXQsIGtleSwgb2xkVmFsdWUsIHZhbHVlICk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotCXByaXZhdGUgYm9vbGVhbiBwcm9qZWN0UHJlZmVyZW5jZXNHb3REaXNhYmxlZCgpIHsKLQkJcmV0dXJuIHByb2plY3QgIT0gbnVsbAotCQkJCSYmICFTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKQotCQkJCQkJLmlzUHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChwcm9qZWN0KTsKLQl9Ci0gIAotICBwcml2YXRlIElFY2xpcHNlUHJlZmVyZW5jZXNbXSBnZXROb2RlcygpCi0gIHsKLSAgICBJRWNsaXBzZVByZWZlcmVuY2VzW10gcmVzdWx0ID0gbnVsbDsKLSAgICAKLSAgICBpZiggcHJvamVjdCAhPSBudWxsICYmIHBsYXRmb3JtLmlzUHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChwcm9qZWN0KSApCi0gICAgeyAKLSAgICAgIHJlc3VsdCAgICA9IG5ldyBJRWNsaXBzZVByZWZlcmVuY2VzWzJdOwotICAgICAgcmVzdWx0WzBdID0gbmV3IFByb2plY3RTY29wZSggcHJvamVjdCApLmdldE5vZGUoIFNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuUExVR0lOX0lEICk7Ci0gICAgICByZXN1bHRbMV0gPSBuZXcgSW5zdGFuY2VTY29wZSgpLmdldE5vZGUoIFNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuUExVR0lOX0lEICk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXN1bHQgPSBuZXcgSUVjbGlwc2VQcmVmZXJlbmNlc1sxXTsKLSAgICAgIHJlc3VsdFswXSA9IG5ldyBJbnN0YW5jZVNjb3BlKCkuZ2V0Tm9kZSggU2VydmljZVBvbGljeUFjdGl2YXRvci5QTFVHSU5fSUQgKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgZGlzY2FyZENoYW5nZXMoKQotICB7Ci0gICAgaWYoICFtdXRhYmxlICkgcmV0dXJuOwotICAgIAotICAgIGZvciggVGFibGVFbnRyeSBlbnRyeSA6IHRhYmxlLnZhbHVlcygpICkKLSAgICB7Ci0gICAgICBlbnRyeS52YWx1ZSA9IG51bGw7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZXN0b3JlRGVmYXVsdHMoKQotICB7Ci0gICAgLy8gV2Ugd2FudCB0byByZXN0b3JlIHRoZSBzZXR0aW5nIHRvIHRoZXJlIGRlZmF1bHQgc3RhdGUsIGJ1dCB3ZSBkb24ndAotICAgIC8vIHdhbnQgY2hhbmdlIHRoZSBiYWNrZW5kIGVjbGlwc2UgcHJlZmVyZW5jZXMsIHNpbmNlIHRoZSB1c2VyIG1pZ2h0IG5vdAotICAgIC8vIGNvbW1pdCB0aGVzZSBjaGFuZ2VzLiAgVGhlcmVmb3JlLCB3ZSB3aWxsIHNldCB0aGUgdmFsdWVzIGZvciBhbGwgdGhlCi0gICAgLy8gdGFibGUgZW50cmllcyB0byB0aGVpciBkZWZhdWx0IHZhbHVlLiAgCi0gICAgaWYoIHByb2plY3QgPT0gbnVsbCApCi0gICAgewotICAgICAgZm9yKCBUYWJsZUVudHJ5IGVudHJ5IDogdGFibGUudmFsdWVzKCkgKQotICAgICAgewotICAgICAgICAgZW50cnkudmFsdWUgPSBlbnRyeS5kZWZhdWx0VmFsdWU7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBOb3RlOiBzaW5jZSB3ZSBhcmUgcmVzdG9yaW5nIHRoZSBzdGF0ZSBmb3IgYSBwcm9qZWN0IHdlIG5lZWQgdG8gZW5zdXJlCi0gICAgICAvLyAgICAgICB0aGF0IG9ubHkgdGhlIGluc3RhbmNlIHNjb3BlIHZhbHVlcyBhcmUgdXNlZC4gIChpZS4gd2Ugd2FudCB0bwotICAgICAgLy8gICAgICAgaWdub3JlIHByb2plY3Qgc2NvcGUgdmFsdWVzLikKLSAgICAgIElFY2xpcHNlUHJlZmVyZW5jZXNbXSBub2RlcyA9IG5ldyBJRWNsaXBzZVByZWZlcmVuY2VzW117bmV3IEluc3RhbmNlU2NvcGUoKS5nZXROb2RlKCBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLlBMVUdJTl9JRCApfTsKLSAgICAgIAotICAgICAgZm9yKCBNYXAuRW50cnk8U3RyaW5nLFRhYmxlRW50cnk+IGVudHJ5IDogdGFibGUuZW50cnlTZXQoKSApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyAgICAgc3RvcmVLZXkgICAgID0gbWFrZVN0b3JlS2V5KCBlbnRyeS5nZXRLZXkoKSApOwotICAgICAgICBUYWJsZUVudHJ5IHRhYmxlRW50cnkgICA9IGVudHJ5LmdldFZhbHVlKCk7Ci0gICAgICAgIFN0cmluZyAgICAgZGVmYXVsdFZhbHVlID0gIiI7Ci0gICAgICAgIAotICAgICAgICBpZiggdGFibGVFbnRyeS5kZWZhdWx0VmFsdWUgIT0gbnVsbCApCi0gICAgICAgIHsKLSAgICAgICAgICBkZWZhdWx0VmFsdWUgPSB0YWJsZUVudHJ5LmRlZmF1bHRWYWx1ZTsgCi0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRhYmxlRW50cnkudmFsdWUgPSBzZXJ2aWNlLmdldCggc3RvcmVLZXksIGRlZmF1bHRWYWx1ZSwgbm9kZXMgKTsgICAgICAgIAotICAgICAgfQotICAgIH0KLSAgICAKLSAgfQotICAKLSAgLyoqIAotICAgKiBUaGUgbWV0aG9kIGdldHMgdGhlIHZhbHVlIGZyb20gdGhlIGZvbGxvd2luZyBwbGFjZXMgaW4gdGhlIGdpdmVuIG9yZGVyLgotICAgKiAKLSAgICogMSkgRnJvbSB0aGUgbG9jYWwgdGFibGUuCi0gICAqIDIpIEZyb20gdGhlIHByZWZlcmVuY2Ugc3RvcmUgbm9kZXMuICBOb3RlOiB0aGlzIGNvdWxkIGluY2x1ZGUgc2VhcmNoaW5nCi0gICAqICAgICAgICAgdGhlIHByb2plY3QgcHJlZmVyZW5jZSBzdG9yZSBhbmQgdGhlIHBsdWdpbiBwcmVmZXJlbmNlIHN0b3JlLgotICAgKiAzKSBGcm9tIHRoZSBkZWZhdWx0IGluIHRoZSBsb2NhbCB0YWJsZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VmFsdWUoU3RyaW5nIGtleSkKLSAgewotICAgIFN0cmluZyAgICAgcmVzdWx0ID0gbnVsbDsKLSAgICBUYWJsZUVudHJ5IGVudHJ5ICA9IHRhYmxlLmdldCgga2V5ICk7Ci0gICAgCi0gICAgaWYoIGVudHJ5ID09IG51bGwgKQotICAgIHsKLSAgICAgIGVudHJ5ID0gbmV3IFRhYmxlRW50cnkoKTsKLSAgICAgIHRhYmxlLnB1dCgga2V5LCBlbnRyeSApOwotICAgIH0KLSAgICAKLSAgICBpZiggcHJvamVjdCA9PSBudWxsIHx8Ci0gICAgICAgICggcHJvamVjdCAhPSBudWxsICYmIHBsYXRmb3JtLmlzUHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZCggcHJvamVjdCApICkgKQotICAgIHsgCi0gICAgICAgIHJlc3VsdCA9IGVudHJ5LnZhbHVlOwotICAgIH0KLSAgICAKLSAgICBpZiggcmVzdWx0ID09IG51bGwgKQotICAgIHsKLSAgICAgIC8vIFdlIGRvbid0IGhhdmUgYSBsb2NhbCB2YWx1ZSBmb3IgdGhpcyBrZXkgc28gd2Ugd2lsbCBsb29rIGluIHRoZQotICAgICAgLy8gcHJlZmVyZW5jZSBzdG9yZS4KLSAgICAgIFN0cmluZyBkZWZhdWx0VmFsdWUgPSAiIjsgLy8kTk9OLU5MUy0xJAotICAgICAgU3RyaW5nIHN0b3JlS2V5ICAgICA9IG1ha2VTdG9yZUtleSgga2V5ICk7Ci0gICAgICAKLSAgICAgIGlmKCBlbnRyeS5kZWZhdWx0VmFsdWUgIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGVudHJ5LmRlZmF1bHRWYWx1ZTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgcmVzdWx0ID0gc2VydmljZS5nZXQoIHN0b3JlS2V5LCBkZWZhdWx0VmFsdWUsIGdldE5vZGVzKCkgKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIG1ha2VTdG9yZUtleSggU3RyaW5nIGtleSApCi0gIHsKLSAgICByZXR1cm4gcG9saWN5LmdldElkKCkgKyAiLiIgKyBrZXk7ICAgIC8vJE5PTi1OTFMtMSQKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gaXNNdXRhYmxlKCkKLSAgewotICAgIHJldHVybiBtdXRhYmxlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcHV0RGVmYXVsdFZhbHVlKCBTdHJpbmcga2V5LCBTdHJpbmcgZGVmYXVsdFZhbHVlLCBib29sZWFuIG92ZXJyaWRlRXhpc3RpbmcgKQotICB7Ci0gICAgaWYoICFtdXRhYmxlICkgcmV0dXJuOwotICAgIAotICAgIFRhYmxlRW50cnkgZW50cnkgPSB0YWJsZS5nZXQoIGtleSApOwotICAgIAotICAgIGlmKCBlbnRyeSA9PSBudWxsICkKLSAgICB7Ci0gICAgICBlbnRyeSA9IG5ldyBUYWJsZUVudHJ5KCk7Ci0gICAgICB0YWJsZS5wdXQoIGtleSwgZW50cnkgKTsKLSAgICB9Ci0gICAgCi0gICAgaWYoIGVudHJ5LmRlZmF1bHRWYWx1ZSA9PSBudWxsIHx8IG92ZXJyaWRlRXhpc3RpbmcgKQotICAgIHsKLSAgICAgIGVudHJ5LmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKLSAgICB9Ci0gICAgCi0gIH0KLQotICBwdWJsaWMgdm9pZCBwdXRWYWx1ZShTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUpCi0gIHsKLSAgICBpZiggIW11dGFibGUgKSByZXR1cm47Ci0gICAgCi0gICAgVGFibGVFbnRyeSBlbnRyeSA9IHRhYmxlLmdldCgga2V5ICk7Ci0gICAgCi0gICAgaWYoIGVudHJ5ID09IG51bGwgKQotICAgIHsKLSAgICAgIGVudHJ5ID0gbmV3IFRhYmxlRW50cnkoKTsKLSAgICAgIHRhYmxlLnB1dCgga2V5LCBlbnRyeSApOwotICAgIH0KLQotICAgIFN0cmluZyBvbGRWYWx1ZSA9IGdldFZhbHVlKCBrZXkgKTsKLSAgICAKLSAgICBlbnRyeS52YWx1ZSA9IHZhbHVlOwotICAgIGZpcmVQb2xpY3lTdGF0ZUNoYW5nZSggc3RhdGVDaGFuZ2VMaXN0ZW5lcnMsIGtleSwgb2xkVmFsdWUsIHZhbHVlICk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBpbnRlcm5hbFNldE11dGFibGUoIGJvb2xlYW4gbXV0YWJsZSApCi0gIHsKLSAgICB0aGlzLm11dGFibGUgPSBtdXRhYmxlOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldE11dGFibGUoYm9vbGVhbiBtdXRhYmxlKQotICB7Ci0gICAgaWYoIHBvbGljeS5pc1ByZWRlZmluZWQoKSApCi0gICAgewotICAgICAgU2VydmljZVBvbGljeUFjdGl2YXRvci5sb2dFcnJvciggIkF0dGVtcHQgdG8gc2V0IG11dGFiaWxpdHkgb24gYSBwcmVkZWZpbmVkIHNlcnZpY2UgcG9saWN5LiIsIG51bGwgKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgdGhpcy5tdXRhYmxlID0gbXV0YWJsZTsKLSAgICB9Ci0gIH0gIAotICAKLSAgcHVibGljIHZvaWQgYWRkUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcihJUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lciwgYm9vbGVhbiBub3RpZnlPbkNvbW1pdE9ubHkgKQotICB7Ci0gICAgaWYoIG5vdGlmeU9uQ29tbWl0T25seSApCi0gICAgewotICAgICAgaWYoIHN0YXRlQ2hhbmdlTGlzdGVuZXJzT25seU9uQ29tbWl0ID09IG51bGwgKQotICAgICAgewotICAgICAgICBzdGF0ZUNoYW5nZUxpc3RlbmVyc09ubHlPbkNvbW1pdCA9IG5ldyBWZWN0b3I8SVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI+KCk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIHN0YXRlQ2hhbmdlTGlzdGVuZXJzT25seU9uQ29tbWl0LmFkZCggbGlzdGVuZXIgKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGlmKCBzdGF0ZUNoYW5nZUxpc3RlbmVycyA9PSBudWxsICkKLSAgICAgIHsKLSAgICAgICAgc3RhdGVDaGFuZ2VMaXN0ZW5lcnMgPSBuZXcgVmVjdG9yPElQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPigpOwotICAgICAgfQotICAgICAgCi0gICAgICBzdGF0ZUNoYW5nZUxpc3RlbmVycy5hZGQoIGxpc3RlbmVyICk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZW1vdmVQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKElQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyIGxpc3RlbmVyKQotICB7Ci0gICAgaWYoIHN0YXRlQ2hhbmdlTGlzdGVuZXJzICE9IG51bGwgKQotICAgIHsKLSAgICAgIHN0YXRlQ2hhbmdlTGlzdGVuZXJzLnJlbW92ZSggbGlzdGVuZXIgKTsKLSAgICB9Ci0gICAgCi0gICAgaWYoIHN0YXRlQ2hhbmdlTGlzdGVuZXJzT25seU9uQ29tbWl0ICE9IG51bGwgKQotICAgIHsKLSAgICAgIHN0YXRlQ2hhbmdlTGlzdGVuZXJzT25seU9uQ29tbWl0LnJlbW92ZSggbGlzdGVuZXIgKTsKLSAgICB9Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBmaXJlUG9saWN5U3RhdGVDaGFuZ2UoIExpc3Q8SVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI+IGxpc3RlbmVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkVmFsdWUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSApCi0gIHsKLSAgICBpZiggbGlzdGVuZXJzICE9IG51bGwgKQotICAgIHsKLSAgICAgIGZvciggSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIgOiBsaXN0ZW5lcnMgKSAgCi0gICAgICB7Ci0gICAgICAgIGxpc3RlbmVyLnBvbGljeVN0YXRlQ2hhbmdlKCBwb2xpY3ksIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlICk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIGNsYXNzIFRhYmxlRW50cnkKLSAgewotICAgIFN0cmluZyB2YWx1ZTsKLSAgICBTdHJpbmcgbGFzdENvbW1pdHRlZFZhbHVlOwotICAgIFN0cmluZyBkZWZhdWx0VmFsdWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvU2VydmljZVBvbGljeUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvU2VydmljZVBvbGljeUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRlNDY3My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvaW50ZXJuYWwvcG9saWN5L1NlcnZpY2VQb2xpY3lJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwMjE0ICAgMjE4OTk2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIENvbmN1cnJlbnQgZXhjZXB0aW9uIGZpeAotICogMjAwODA2MjUgICAyMzg0ODIgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQWRkaW5nIHRocmVhZCBzYWZldHkgdG8gdGhlIHNlcnZpY2UgcGxhdGZvcm0gYXBpLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLmludGVybmFsLnBvbGljeTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lSZWxhdGlvbnNoaXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lTdGF0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlRW51bTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTdGF0ZUVudW1lcmF0aW9uSXRlbTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuUG9saWN5UmVsYXRpb25zaGlwSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeUFjdGl2YXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVN0YXR1c0NoYW5nZUxpc3RlbmVyOwotCi1wdWJsaWMgY2xhc3MgU2VydmljZVBvbGljeUltcGwgaW1wbGVtZW50cyBJU2VydmljZVBvbGljeQotewotICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRlZmluZWQ7Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ7Ci0gIHByaXZhdGUgU2VydmljZVBvbGljeUltcGwgICAgICAgICAgICAgICAgcGFyZW50OwotICBwcml2YXRlIERlc2NyaXB0b3JJbXBsICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I7Ci0gIHByaXZhdGUgTGlzdDxJU2VydmljZVBvbGljeT4gICAgICAgICAgICAgY29tbWl0dGVkQ2hpbGRyZW47Ci0gIHByaXZhdGUgTGlzdDxJU2VydmljZVBvbGljeT4gICAgICAgICAgICAgY2hpbGRyZW47Ci0gIHByaXZhdGUgUG9saWN5U3RhdGVJbXBsICAgICAgICAgICAgICAgICAgcG9saWN5U3RhdGU7Ci0gIHByaXZhdGUgTWFwPElQcm9qZWN0LCBQb2xpY3lTdGF0ZUltcGw+ICAgcHJvamVjdFBvbGljeVN0YXRlczsKLSAgcHJpdmF0ZSBMaXN0PElQb2xpY3lSZWxhdGlvbnNoaXA+ICAgICAgICByZWxhdGlvbnNoaXBMaXN0OwotICBwcml2YXRlIExpc3Q8SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI+IGNoaWxkQ2hhbmdlTGlzdGVuZXJzOwotICBwcml2YXRlIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybUltcGwgICAgICAgIHBsYXRmb3JtOwotICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1MaXN0SWQ7Ci0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEVudW1JZDsKLSAgcHJpdmF0ZSBMaXN0PElTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4gICAgICBzdGF0dXNDaGFuZ2VMaXN0ZW5lcnM7IAotICBwcml2YXRlIElTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKLSAgCi0gIHByaXZhdGUgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5yZXNvbHZlZFBhcmVudDsKLSAgcHJpdmF0ZSBMaXN0PFVucmVzb2x2ZWRSZWxhdGlvbnNoaXA+ICAgICB1bnJlc29sdmVkUmVsYXRpb25zaGlwTGlzdDsKLSAgCi0gIHB1YmxpYyBTZXJ2aWNlUG9saWN5SW1wbCggYm9vbGVhbiBpc1ByZWRlZmluZWQsIFN0cmluZyBpZCwgU2VydmljZVBvbGljeVBsYXRmb3JtSW1wbCBwbGF0Zm9ybSApCi0gIHsKLSAgICB0aGlzLnByZWRlZmluZWQgICAgICAgICAgICAgICAgID0gaXNQcmVkZWZpbmVkOyAgCi0gICAgdGhpcy5pZCAgICAgICAgICAgICAgICAgICAgICAgICA9IGlkOwotICAgIHRoaXMuY2hpbGRyZW4gICAgICAgICAgICAgICAgICAgPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PigpOwotICAgIHRoaXMucmVsYXRpb25zaGlwTGlzdCAgICAgICAgICAgPSBuZXcgVmVjdG9yPElQb2xpY3lSZWxhdGlvbnNoaXA+KCk7Ci0gICAgdGhpcy51bnJlc29sdmVkUmVsYXRpb25zaGlwTGlzdCA9IG5ldyBWZWN0b3I8VW5yZXNvbHZlZFJlbGF0aW9uc2hpcD4oKTsKLSAgICB0aGlzLnBvbGljeVN0YXRlICAgICAgICAgICAgICAgID0gbmV3IFBvbGljeVN0YXRlSW1wbCggcGxhdGZvcm0uZ2V0QXBpUGxhdGZvcm0oKSwgdGhpcywgbnVsbCApOwotICAgIHRoaXMucGxhdGZvcm0gICAgICAgICAgICAgICAgICAgPSBwbGF0Zm9ybTsgIAotICAgIHRoaXMuY2hpbGRDaGFuZ2VMaXN0ZW5lcnMgICAgICAgPSBuZXcgVmVjdG9yPElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPigpOwotICAgIHRoaXMucHJvamVjdFBvbGljeVN0YXRlcyAgICAgICAgPSBuZXcgSGFzaE1hcDxJUHJvamVjdCwgUG9saWN5U3RhdGVJbXBsPigpOwotICAgIHRoaXMuc3RhdHVzICAgICAgICAgICAgICAgICAgICAgPSBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBpc1ByZWRlZmluZWQoKQotICB7Ci0gICAgcmV0dXJuIHByZWRlZmluZWQ7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldElkKCkKLSAgewotICAgIHJldHVybiBpZDsgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRQYXJlbnQoIFNlcnZpY2VQb2xpY3lJbXBsIHBhcmVudCApCi0gIHsKLSAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKLSAgICAKLSAgICBpZiggcGFyZW50ICE9IG51bGwgKQotICAgIHsKLSAgICAgIHBhcmVudC5hZGRDaGlsZCggdGhpcywgZmFsc2UgKTsKLSAgICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGNvbW1pdENoYW5nZXMoKQotICB7Ci0gICAgcG9saWN5U3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIAotICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBjaGlsZHJlbiBpbiB0aGUgY29tbWl0dGVkQ2hpbGRyZW4gb2JqZWN0LgotICAgIGNvbW1pdHRlZENoaWxkcmVuID0gbmV3IFZlY3RvcjxJU2VydmljZVBvbGljeT4oIGNoaWxkcmVuICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGRpc2NhcmRDaGFuZ2VzKCkKLSAgewotICAgIHBvbGljeVN0YXRlLmRpc2NhcmRDaGFuZ2VzKCk7Ci0gICAgICAgIAotICAgIGZpcmVDaGlsZENoYW5nZXNEdWV0b0Rpc2NhcmQoKTsKLSAgICAKLSAgICAvL1Jlc3RvcmUgY2hpbGRyZW4uCi0gICAgY2hpbGRyZW4gPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PiggY29tbWl0dGVkQ2hpbGRyZW4gKTsKLSAgfQotICAKLSAgcHVibGljIExpc3Q8SVNlcnZpY2VQb2xpY3k+IGdldENoaWxkcmVuKCkKLSAgewotICAgIHJldHVybiBjaGlsZHJlbjsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGFkZENoaWxkKCBTZXJ2aWNlUG9saWN5SW1wbCBjaGlsZCwgYm9vbGVhbiBmaXJlRXZlbnQgKQotICB7Ci0gICAgY2hpbGRyZW4uYWRkKCBjaGlsZCApOwotICAgICAgCi0gICAgaWYoIGZpcmVFdmVudCApCi0gICAgewotICAgICAgZmlyZUNoaWxkQ2hhbmdlRXZlbnQoIGNoaWxkLCB0cnVlICk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZW1vdmVDaGlsZChJU2VydmljZVBvbGljeSBwb2xpY3lUb1JlbW92ZSApCi0gIHsKLSAgICBpZiggIXBvbGljeVRvUmVtb3ZlLmlzUHJlZGVmaW5lZCgpICkKLSAgICB7Ci0gICAgICAvLyBSZW1vdmUgYWxsIHRoZSBjaGlsZHJlbiBvZiB0aGlzIHBvbGljeSBmaXJzdC4KLSAgICAgIExpc3Q8SVNlcnZpY2VQb2xpY3k+IGNoaWxkUG9saWNpZXMgPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PiggcG9saWN5VG9SZW1vdmUgLmdldENoaWxkcmVuKCkgKTsKLSAgICAgIAotICAgICAgZm9yKCBJU2VydmljZVBvbGljeSBjaGlsZFBvbGljeSA6IGNoaWxkUG9saWNpZXMgKQotICAgICAgewotICAgICAgICBwb2xpY3lUb1JlbW92ZS5yZW1vdmVDaGlsZCggY2hpbGRQb2xpY3kgKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgYm9vbGVhbiByZW1vdmVkID0gY2hpbGRyZW4ucmVtb3ZlKCBwb2xpY3lUb1JlbW92ZSAgKTsKLSAgICAgIAotICAgICAgaWYoIHJlbW92ZWQgKQotICAgICAgewotICAgICAgICBwbGF0Zm9ybS5yZW1vdmVQb2xpY3koIHBvbGljeVRvUmVtb3ZlICk7Ci0gICAgICAgIGZpcmVDaGlsZENoYW5nZUV2ZW50KCBwb2xpY3lUb1JlbW92ZSAsIGZhbHNlICk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIElEZXNjcmlwdG9yIGdldERlc2NyaXB0b3IoKQotICB7Ci0gICAgaWYoIGRlc2NyaXB0b3IgPT0gbnVsbCApCi0gICAgewotICAgICAgZGVzY3JpcHRvciA9IG5ldyBEZXNjcmlwdG9ySW1wbCgpOyAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBkZXNjcmlwdG9yOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXREZXNjcmlwdG9yKCBEZXNjcmlwdG9ySW1wbCBkZXNjcmlwdG9yICkKLSAgewotICAgIHRoaXMuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7Ci0gIH0KLQotICBwdWJsaWMgSVNlcnZpY2VQb2xpY3kgZ2V0UGFyZW50UG9saWN5KCkKLSAgewotICAgIHJldHVybiBwYXJlbnQ7Ci0gIH0KLQotICBwdWJsaWMgSVBvbGljeVN0YXRlIGdldFBvbGljeVN0YXRlKCkKLSAgewotICAgIHJldHVybiBwb2xpY3lTdGF0ZTsKLSAgfQotICAKLSAgcHVibGljIElQb2xpY3lTdGF0ZSBnZXRQb2xpY3lTdGF0ZSggSVByb2plY3QgcHJvamVjdCApCi0gIHsKLSAgICBQb2xpY3lTdGF0ZUltcGwgcHJvamVjdFBvbGljeVN0YXRlID0gcHJvamVjdFBvbGljeVN0YXRlcy5nZXQoIHByb2plY3QgKTsKLSAgICAKLSAgICBpZiggcHJvamVjdFBvbGljeVN0YXRlID09IG51bGwgKQotICAgIHsKLSAgICAgIHByb2plY3RQb2xpY3lTdGF0ZSA9IG5ldyBQb2xpY3lTdGF0ZUltcGwoIHBsYXRmb3JtLmdldEFwaVBsYXRmb3JtKCksIHRoaXMsIHByb2plY3QgKTsKLSAgICAgIHByb2plY3RQb2xpY3lTdGF0ZS5pbnRlcm5hbFNldE11dGFibGUoIHBvbGljeVN0YXRlLmlzTXV0YWJsZSgpICk7Ci0gICAgICBwcm9qZWN0UG9saWN5U3RhdGVzLnB1dCggcHJvamVjdCwgcHJvamVjdFBvbGljeVN0YXRlICk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBwcm9qZWN0UG9saWN5U3RhdGU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBJUG9saWN5U3RhdGVFbnVtIGdldFBvbGljeVN0YXRlRW51bSgpCi0gIHsKLSAgICBFbnVtZXJhdGlvblN0YXRlSW1wbCBuZXdFbnVtID0gbnVsbDsKLSAgICAKLSAgICBpZiggZW51bUxpc3RJZCAhPSBudWxsICkKLSAgICB7Ci0gICAgICBuZXdFbnVtID0gbmV3IEVudW1lcmF0aW9uU3RhdGVJbXBsKCBwbGF0Zm9ybS5nZXRBcGlQbGF0Zm9ybSgpLCBlbnVtTGlzdElkLCBkZWZhdWx0RW51bUlkLCBwb2xpY3lTdGF0ZSApOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmV3RW51bTsKLSAgfQotICAKLSAgcHVibGljIElQb2xpY3lTdGF0ZUVudW0gZ2V0UG9saWN5U3RhdGVFbnVtKCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgewotICAgIEVudW1lcmF0aW9uU3RhdGVJbXBsIG5ld0VudW0gPSBudWxsOwotICAgIAotICAgIGlmKCBlbnVtTGlzdElkICE9IG51bGwgKQotICAgIHsKLSAgICAgIG5ld0VudW0gPSBuZXcgRW51bWVyYXRpb25TdGF0ZUltcGwoIHBsYXRmb3JtLmdldEFwaVBsYXRmb3JtKCksIGVudW1MaXN0SWQsIGRlZmF1bHRFbnVtSWQsIGdldFBvbGljeVN0YXRlKCBwcm9qZWN0ICkgKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG5ld0VudW07Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQb2xpY3lTdGF0ZSggUG9saWN5U3RhdGVJbXBsIHBvbGljeVN0YXRlICkKLSAgewotICAgIHRoaXMucG9saWN5U3RhdGUgPSBwb2xpY3lTdGF0ZTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgcmVzdG9yZURlZmF1bHRzKCkKLSAgewotICAgIC8vIFJlbW92ZSBhbGwgbG9jYWwgY2hpbGRyZW4gZnJvbSB0aGUgdHJlZQotICAgIC8vIEphdmEgd2lsbCBub3QgbGV0IHlvdSByZW1vdmUgYW4gaXRlbSBmcm9tIGEgY29sbGVjdGlvbgotICAgIC8vIHRoYXQgaXMgYmVpbmcgaXRlcmF0ZWQgb3Zlciwgc28gd2UgbmVlZCB0byBjcmVhdGUgYSB0ZW1wb3JhcnkKLSAgICAvLyBjb3B5IG9mIHRoZSBjaGlsZHJlbiBjb2xsZWN0aW9uIHRvIGl0ZXJhdG9yIG92ZXIuCi0gICAgVmVjdG9yPElTZXJ2aWNlUG9saWN5PiB0ZW1wQ2hpbGRyZW4gPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PiggY2hpbGRyZW4gKTsKLSAgICAKLSAgICBmb3IoIElTZXJ2aWNlUG9saWN5IGNoaWxkIDogdGVtcENoaWxkcmVuICkKLSAgICB7Ci0gICAgICBpZiggIWNoaWxkLmlzUHJlZGVmaW5lZCgpICkKLSAgICAgIHsKLSAgICAgICAgcmVtb3ZlQ2hpbGQoIGNoaWxkICk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHBvbGljeVN0YXRlLnJlc3RvcmVEZWZhdWx0cygpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZXN0b3JlRGVmYXVsdHMoIElQcm9qZWN0IHByb2plY3QgKQotICB7Ci0gICAgUG9saWN5U3RhdGVJbXBsIHN0YXRlSW1wbCA9IHByb2plY3RQb2xpY3lTdGF0ZXMuZ2V0KCBwcm9qZWN0ICk7Ci0gICAgCi0gICAgaWYoIHN0YXRlSW1wbCAhPSBudWxsICkKLSAgICB7Ci0gICAgICBzdGF0ZUltcGwucmVzdG9yZURlZmF1bHRzKCk7Ci0gICAgfQotICB9Ci0gIAotICAKLSAgcHVibGljIExpc3Q8SVBvbGljeVJlbGF0aW9uc2hpcD4gZ2V0UmVsYXRpb25zaGlwcygpCi0gIHsKLSAgICByZXR1cm4gcmVsYXRpb25zaGlwTGlzdDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0UmVsYXRpb25zaGlwcyhMaXN0PElQb2xpY3lSZWxhdGlvbnNoaXA+IHJlbGF0aW9uc2hpcHMpCi0gIHsKLSAgICBpZiggIXByZWRlZmluZWQgKQotICAgIHsKLSAgICAgIHRoaXMucmVsYXRpb25zaGlwTGlzdCA9IHJlbGF0aW9uc2hpcHM7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRFbnVtTGlzdElkKCkKLSAgewotICAgIHJldHVybiBlbnVtTGlzdElkOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVudW1MaXN0SWQoU3RyaW5nIGVudW1MaXN0SWQpCi0gIHsKLSAgICB0aGlzLmVudW1MaXN0SWQgPSBlbnVtTGlzdElkOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXREZWZhdWx0RW51bUlkKCkKLSAgewotICAgIHJldHVybiBkZWZhdWx0RW51bUlkOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldERlZmF1bHRFbnVtSWQoU3RyaW5nIGRlZmF1bHRFbnVtVmFsdWUpCi0gIHsKLSAgICB0aGlzLmRlZmF1bHRFbnVtSWQgPSBkZWZhdWx0RW51bVZhbHVlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VW5yZXNvbHZlZFBhcmVudCggU3RyaW5nIHBhcmVudElkICkKLSAgewotICAgIHVucmVzb2x2ZWRQYXJlbnQgPSBwYXJlbnRJZDsgIAotICB9Ci0gICAgCi0gIHB1YmxpYyB2b2lkIHNldFVucmVzb2x2ZWRSZWxhdGlvbnNoaXBzKCBMaXN0PFVucmVzb2x2ZWRSZWxhdGlvbnNoaXA+IHJlbGF0aW9uc2hpcHMgKQotICB7Ci0gICAgdW5yZXNvbHZlZFJlbGF0aW9uc2hpcExpc3QgPSByZWxhdGlvbnNoaXBzOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZXNvbHZlKCkKLSAgewotICAgIHNldFBhcmVudCggcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggdW5yZXNvbHZlZFBhcmVudCApICk7Ci0gICAgICAgIAotICAgIGZvciggVW5yZXNvbHZlZFJlbGF0aW9uc2hpcCByZWxhdGlvbnNoaXAgOiB1bnJlc29sdmVkUmVsYXRpb25zaGlwTGlzdCApCi0gICAgewotICAgICAgTGlzdDxTdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VFbnVtSWRMaXN0ID0gcmVsYXRpb25zaGlwLmdldFNvdXJjZUVudW1lcmF0aW9uTGlzdCgpOyAKLSAgICAgIExpc3Q8VW5yZXNvbHZlZFBvbGljeVJlbGF0aW9uc2hpcD4gdGFyZ2V0RW51bUlkTGlzdCA9IHJlbGF0aW9uc2hpcC5nZXRUYXJnZXRFbnVtZXJhdGlvbkxpc3QoKTsKLSAgICAgIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPiAgICAgICAgc291cmNlRW51bUxpc3QgICA9IGdldFJlc29sdmVkRW51bUxpc3QoIHNvdXJjZUVudW1JZExpc3QgKTsKLSAgICAgIElQb2xpY3lFbnVtZXJhdGlvbkxpc3QgICAgICAgICAgICAgc291cmNlUG9saWN5TGlzdCA9IG5ldyBQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsKCBzb3VyY2VFbnVtTGlzdCwgdGhpcyApOwotICAgICAgTGlzdDxJUG9saWN5RW51bWVyYXRpb25MaXN0PiAgICAgICB0YXJnZXRQb2xpY3lMaXN0ID0gbmV3IFZlY3RvcjxJUG9saWN5RW51bWVyYXRpb25MaXN0PigpOwotICAgICAgCi0gICAgICBmb3IoIFVucmVzb2x2ZWRQb2xpY3lSZWxhdGlvbnNoaXAgdGFyZ2V0RW51bSA6IHRhcmdldEVudW1JZExpc3QgKQotICAgICAgewotICAgICAgICBJU2VydmljZVBvbGljeSAgICAgICAgICAgICAgdGFyZ2V0UG9saWN5ICAgICAgICAgPSBwbGF0Zm9ybS5nZXRTZXJ2aWNlUG9saWN5KCB0YXJnZXRFbnVtLmdldFBvbGljeUlkKCkgKTsKLSAgICAgICAgTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IHRhcmdldExpc3QgICAgICAgICAgID0gZ2V0UmVzb2x2ZWRFbnVtTGlzdCggdGFyZ2V0RW51bS5nZXRFbnVtTGlzdCgpKTsKLSAgICAgICAgSVBvbGljeUVudW1lcmF0aW9uTGlzdCAgICAgIHRhcmdldEVudW1Qb2xpY3lMaXN0ID0gbmV3IFBvbGljeUVudW1lcmF0aW9uTGlzdEltcGwoIHRhcmdldExpc3QsIHRhcmdldFBvbGljeSApOwotICAgICAgICAKLSAgICAgICAgdGFyZ2V0UG9saWN5TGlzdC5hZGQoIHRhcmdldEVudW1Qb2xpY3lMaXN0ICk7Ci0gICAgICAgIAotICAgICAgICBpZiggdGFyZ2V0UG9saWN5ID09IG51bGwgKQotICAgICAgICB7Ci0gICAgICAgICAgU2VydmljZVBvbGljeUFjdGl2YXRvci5sb2dFcnJvciggIlBvbGljeSBpZCwgIiArIHRhcmdldEVudW0uZ2V0UG9saWN5SWQoKSArICIgbm90IGZvdW5kLiIsIG51bGwgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgICAgSVBvbGljeVJlbGF0aW9uc2hpcCBwb2xpY3lSZWxhdGlvbnNoaXAgPSBuZXcgUG9saWN5UmVsYXRpb25zaGlwSW1wbCggc291cmNlUG9saWN5TGlzdCwgdGFyZ2V0UG9saWN5TGlzdCApOwotICAgICAgCi0gICAgICByZWxhdGlvbnNoaXBMaXN0LmFkZCggcG9saWN5UmVsYXRpb25zaGlwICk7Ci0gICAgfQotICAgICAgICAKLSAgICB1bnJlc29sdmVkUGFyZW50ID0gbnVsbDsKLSAgICB1bnJlc29sdmVkUmVsYXRpb25zaGlwTGlzdCA9IG51bGw7Ci0gIH0KLSAgCi0gIHByaXZhdGUgTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IGdldFJlc29sdmVkRW51bUxpc3QoIExpc3Q8U3RyaW5nPiBlbnVtSWRMaXN0ICkKLSAgewotICAgIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPiBlbnVtTGlzdCA9IG5ldyBWZWN0b3I8SVN0YXRlRW51bWVyYXRpb25JdGVtPigpOwotICAgIAotICAgIGZvciggU3RyaW5nIGVudW1JZCA6IGVudW1JZExpc3QgKQotICAgIHsKLSAgICAgIGVudW1MaXN0LmFkZCggcGxhdGZvcm0uZ2V0U3RhdGVJdGVtRW51bWVyYXRpb24oIGVudW1JZCApICk7ICAgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZW51bUxpc3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGFkZFBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIoSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIpCi0gIHsKLSAgICBjaGlsZENoYW5nZUxpc3RlbmVycy5hZGQoIGxpc3RlbmVyICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHJlbW92ZVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIoSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIpCi0gIHsKLSAgICBjaGlsZENoYW5nZUxpc3RlbmVycy5yZW1vdmUoIGxpc3RlbmVyICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGFkZFN0YXR1c0NoYW5nZUxpc3RlbmVyKCBJU3RhdHVzQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIgKQotICB7Ci0gICAgaWYoIHN0YXR1c0NoYW5nZUxpc3RlbmVycyA9PSBudWxsICkKLSAgICB7Ci0gICAgICBzdGF0dXNDaGFuZ2VMaXN0ZW5lcnMgPSBuZXcgVmVjdG9yPElTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oKTsgICAgCi0gICAgfQotICAgIAotICAgIHN0YXR1c0NoYW5nZUxpc3RlbmVycy5hZGQoIGxpc3RlbmVyICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHJlbW92ZVN0YXR1c0NoYW5nZUxpc3RlbmVyKCBJU3RhdHVzQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIgKQotICB7Ci0gICAgaWYoIHN0YXR1c0NoYW5nZUxpc3RlbmVycyAhPSBudWxsICkKLSAgICB7Ci0gICAgICBzdGF0dXNDaGFuZ2VMaXN0ZW5lcnMucmVtb3ZlKCBsaXN0ZW5lciApOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIElTdGF0dXMgZ2V0U3RhdHVzKCkKLSAgewotICAgIHJldHVybiBzdGF0dXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFN0YXR1cyggSVN0YXR1cyBzdGF0dXMgKQotICB7Ci0gICAgSVN0YXR1cyBvbGRTdGF0dXMgPSB0aGlzLnN0YXR1czsKLSAgICB0aGlzLnN0YXR1cyA9IHN0YXR1czsKLSAgICBmaXJlU3RhdHVzQ2hhbmdlRXZlbnQoIG9sZFN0YXR1cywgc3RhdHVzICk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBmaXJlU3RhdHVzQ2hhbmdlRXZlbnQoIElTdGF0dXMgb2xkU3RhdHVzLCBJU3RhdHVzIG5ld1N0YXR1cyApCi0gIHsKLSAgICBpZiggc3RhdHVzQ2hhbmdlTGlzdGVuZXJzICE9IG51bGwgKQotICAgIHsKLSAgICAgIGZvciggSVN0YXR1c0NoYW5nZUxpc3RlbmVyIGxpc3RlbmVyIDogc3RhdHVzQ2hhbmdlTGlzdGVuZXJzICkKLSAgICAgIHsKLSAgICAgICAgbGlzdGVuZXIuc3RhdHVzQ2hhbmdlKCB0aGlzLCBvbGRTdGF0dXMsIG5ld1N0YXR1cyk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgZmlyZUNoaWxkQ2hhbmdlc0R1ZXRvRGlzY2FyZCgpCi0gIHsKLSAgICBTZXQ8SVNlcnZpY2VQb2xpY3k+IGNoaWxkU2V0ID0gbmV3IEhhc2hTZXQ8SVNlcnZpY2VQb2xpY3k+KCBjaGlsZHJlbiApOwotICAgIFNldDxJU2VydmljZVBvbGljeT4gY29tbWl0dGVkQ2hpbGRTZXQgPSBuZXcgSGFzaFNldDxJU2VydmljZVBvbGljeT4oIGNvbW1pdHRlZENoaWxkcmVuICk7Ci0gICAgCi0gICAgZm9yKCBJU2VydmljZVBvbGljeSBjaGlsZCA6IGNoaWxkU2V0ICkKLSAgICB7Ci0gICAgICBpZiggY29tbWl0dGVkQ2hpbGRTZXQuY29udGFpbnMoIGNoaWxkICkgKQotICAgICAgewotICAgICAgICBjb21taXR0ZWRDaGlsZFNldC5yZW1vdmUoIGNoaWxkICk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIEEgY2hpbGQgd2FzIGFkZGVkIGFuZCBpcyBub3cgYmVpbmcgZGVsZXRlZCBieSB0aGUgZGlzY2FyZC4KLSAgICAgICAgZmlyZUNoaWxkQ2hhbmdlRXZlbnQoIGNoaWxkLCBmYWxzZSApOwotICAgICAgICBwbGF0Zm9ybS5maXJlQ2hpbGRDaGFuZ2VFdmVudCggY2hpbGQsIGZhbHNlICk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIEFueSBjaGlsZHJlbiBsZWZ0IGluIHRoZSBjb21taXR0ZWQgc2V0IG11c3QgaGF2ZSBiZWVuIGRlbGV0ZWQgYW5kIGFyZSBub3cKLSAgICAvLyBiZWluZyBhZGRlZCBiYWNrIGR1ZSB0byB0aGUgZGlzY2FyZC4KLSAgICBmb3IoIElTZXJ2aWNlUG9saWN5IGNoaWxkIDogY29tbWl0dGVkQ2hpbGRTZXQgKQotICAgIHsKLSAgICAgIGZpcmVDaGlsZENoYW5nZUV2ZW50KCBjaGlsZCwgdHJ1ZSApOwotICAgICAgcGxhdGZvcm0uZmlyZUNoaWxkQ2hhbmdlRXZlbnQoIGNoaWxkLCB0cnVlICk7Ci0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgZmlyZUNoaWxkQ2hhbmdlRXZlbnQoIElTZXJ2aWNlUG9saWN5IHBvbGljeSwgYm9vbGVhbiBpc0FkZCApCi0gIHsKLSAgICBmb3IoIElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyIGxpc3RlbmVyIDogY2hpbGRDaGFuZ2VMaXN0ZW5lcnMgKQotICAgIHsKLSAgICAgIExpc3Q8SVNlcnZpY2VQb2xpY3k+IHBvbGljeUxpc3QgPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PigxKTsKLSAgICAgIExpc3Q8Qm9vbGVhbj4gICAgICAgIGFkZGVkTGlzdCAgPSBuZXcgVmVjdG9yPEJvb2xlYW4+KDEpOwotICAgICAgCi0gICAgICBwb2xpY3lMaXN0LmFkZCggcG9saWN5ICk7Ci0gICAgICBhZGRlZExpc3QuYWRkKCBpc0FkZCApOwotICAgICAgbGlzdGVuZXIuY2hpbGRDaGFuZ2UoIHBvbGljeUxpc3QsIGFkZGVkTGlzdCApOyAgICAgCi0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvaW50ZXJuYWwvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDI1N2ZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MTExMyAgIDIwOTcwMSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDExMSAgIDIxNDkwNyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDIxNCAgIDIxODk5NiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBDb25jdXJyZW50IGV4Y2VwdGlvbiBmaXgKLSAqIDIwMDgwMzI1ICAgMjIyMDk1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwNjI1ICAgMjM4NDgyIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEFkZGluZyB0aHJlYWQgc2FmZXR5IHRvIHRoZSBzZXJ2aWNlIHBsYXRmb3JtIGFwaS4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5pbnRlcm5hbC5wb2xpY3k7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLWltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKLWltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuZXhwcmVzc2lvbnMuRXZhbHVhdGlvbkNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9ucy5FdmFsdWF0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuZXhwcmVzc2lvbnMuRXhwcmVzc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zLklFdmFsdWF0aW9uQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5Qcm9qZWN0U2NvcGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLnByZWZlcmVuY2VzLklFY2xpcHNlUHJlZmVyZW5jZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklGaWx0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU3RhdGVFbnVtZXJhdGlvbkl0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lBY3RpdmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcjsKLWltcG9ydCBvcmcub3NnaS5zZXJ2aWNlLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbjsKLQotCi1wdWJsaWMgY2xhc3MgU2VydmljZVBvbGljeVBsYXRmb3JtSW1wbCAKLXsKLSAgcHJpdmF0ZSBMaXN0PElQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcj4gICAgICAgIGxvYWRMaXN0ZW5lcnM7Ci0gIHByaXZhdGUgTWFwPFN0cmluZywgU2VydmljZVBvbGljeUltcGw+ICAgICAgICAgICBjb21taXR0ZWRQb2xpY3lNYXA7Ci0gIHByaXZhdGUgTWFwPFN0cmluZywgU2VydmljZVBvbGljeUltcGw+ICAgICAgICAgICBwb2xpY3lNYXA7Ci0gIHByaXZhdGUgTWFwPFN0cmluZywgTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+PiBlbnVtTGlzdDsKLSAgcHJpdmF0ZSBNYXA8U3RyaW5nLCBTdGF0ZUVudW1lcmF0aW9uSXRlbUltcGw+ICAgIGVudW1JdGVtTGlzdDsKLSAgcHJpdmF0ZSBNYXA8SVByb2plY3QsIFByb2plY3RFbnRyeT4gICAgICAgICAgICAgIGVuYWJsZWRQcm9qZWN0TWFwOwotICBwcml2YXRlIExpc3Q8RXhwcmVzc2lvbj4gICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZExpc3Q7Ci0gIHByaXZhdGUgTGlzdDxJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcj4gICAgICAgICBjaGlsZENoYW5nZUxpc3RlbmVyczsKLSAgcHJpdmF0ZSBMaXN0PElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPiAgICAgICAgIGNoaWxkQ2hhbmdlTGlzdGVuZXJzT25Db21taXQ7Ci0gIHByaXZhdGUgTGlzdDxJU2VydmljZVBvbGljeT4gICAgICAgICAgICAgICAgICAgICBjb21taXRDaGlsZENoYW5nZVBvbGljeTsKLSAgcHJpdmF0ZSBMaXN0PEJvb2xlYW4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdENoaWxkQ2hhbmdlQWRkZWQ7Ci0gIHByaXZhdGUgTGlzdDxJU2VydmljZVBvbGljeT4gICAgICAgICAgICAgICAgICAgICBxdWV1ZWRDaGlsZENoYW5nZVBvbGljeTsKLSAgcHJpdmF0ZSBMaXN0PEJvb2xlYW4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlZENoaWxkQ2hhbmdlQWRkZWQ7Ci0gIHByaXZhdGUgTGlzdDxJUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyPiBwcm9qZWN0UGxhdGZvcm1MaXN0ZW5lcnM7Ci0gIHByaXZhdGUgU2VydmljZVBvbGljeVBsYXRmb3JtICAgICAgICAgICAgICAgICAgICBhcGlQbGF0Zm9ybTsKLSAgCi0gIHB1YmxpYyBTZXJ2aWNlUG9saWN5UGxhdGZvcm1JbXBsKCBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gcGxhdGZvcm0gKQotICB7Ci0gICAgYXBpUGxhdGZvcm0gPSBwbGF0Zm9ybTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgbG9hZCgpCi0gIHsKLSAgICBTZXJ2aWNlUG9saWN5UmVnaXN0cnkgcmVnaXN0cnkgID0gbmV3IFNlcnZpY2VQb2xpY3lSZWdpc3RyeSggdGhpcyApOwotICAgIExpc3Q8U3RyaW5nPiAgICAgICAgICBsb2NhbElkcyAgPSBMb2NhbFV0aWxzLmdldExvY2FsUG9saWN5SWRzKCk7Ci0gICAgCi0gICAgbG9hZExpc3RlbmVycyAgICAgPSBuZXcgVmVjdG9yPElQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcj4oKTsKLSAgICBwb2xpY3lNYXAgICAgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgU2VydmljZVBvbGljeUltcGw+KCk7Ci0gICAgZW51bUxpc3QgICAgICAgICAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPj4oKTsKLSAgICBlbnVtSXRlbUxpc3QgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RhdGVFbnVtZXJhdGlvbkl0ZW1JbXBsPigpOwotICAgIGVuYWJsZWRQcm9qZWN0TWFwID0gbmV3IEhhc2hNYXA8SVByb2plY3QsIFByb2plY3RFbnRyeT4oKTsKLSAgICBlbmFibGVkTGlzdCAgICAgICA9IG5ldyBWZWN0b3I8RXhwcmVzc2lvbj4oKTsKLSAgICAKLSAgICBjaGlsZENoYW5nZUxpc3RlbmVycyAgICAgICAgID0gbmV3IFZlY3RvcjxJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcj4oKTsKLSAgICBjaGlsZENoYW5nZUxpc3RlbmVyc09uQ29tbWl0ID0gbmV3IFZlY3RvcjxJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcj4oKTsKLSAgICBjb21taXRDaGlsZENoYW5nZVBvbGljeSAgICAgID0gbmV3IFZlY3RvcjxJU2VydmljZVBvbGljeT4oKTsKLSAgICBjb21taXRDaGlsZENoYW5nZUFkZGVkICAgICAgID0gbmV3IFZlY3RvcjxCb29sZWFuPigpOwotICAgIHByb2plY3RQbGF0Zm9ybUxpc3RlbmVycyAgICAgPSBuZXcgVmVjdG9yPElQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXI+KCk7Ci0gICAgCi0gICAgcmVnaXN0cnkubG9hZCggbG9hZExpc3RlbmVycywgcG9saWN5TWFwLCBlbnVtTGlzdCwgZW51bUl0ZW1MaXN0ICk7Ci0gICAgCi0gICAgLy8gVGhpcyBmaXJzdCBsb29wIHRocm91Z2ggdGhlIGlkcyB3aWxsIG9ubHkgY3JlYXRlIHNlcnZpY2UgcG9saWN5IG9iamVjdHMKLSAgICAvLyB3aXRob3V0IHBvcHVsYXRpbmcgdGhlbSB3aXRoIHRoZXJlIHZhbHVlcy4KLSAgICBmb3IoIFN0cmluZyBsb2NhbFBvbGljeUlkIDogbG9jYWxJZHMgKQotICAgIHsKLSAgICAgIFNlcnZpY2VQb2xpY3lJbXBsIGxvY2FsUG9saWN5ID0gbmV3IFNlcnZpY2VQb2xpY3lJbXBsKCBmYWxzZSwgbG9jYWxQb2xpY3lJZCwgdGhpcyApOwotICAgICAgCi0gICAgICBwb2xpY3lNYXAucHV0KCBsb2NhbFBvbGljeUlkLCBsb2NhbFBvbGljeSApOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlzIHNlY29uZCBsb29wIHdpbGwgcG9wdWxhdGUgdGhlIHNlcnZpY2UgcG9saWN5IHZhbHVlcyBhbmQKLSAgICAvLyBjcm9zc3JlZmVyZW5jZSBwYXJlbnQgYW5kIGNoaWxkIHNlcnZpY2UgcG9saWNpZXMuCi0gICAgZm9yKCBTdHJpbmcgbG9jYWxQb2xpY3lJZCA6IGxvY2FsSWRzICkKLSAgICB7Ci0gICAgICBMb2NhbFV0aWxzLmxvYWRMb2NhbFBvbGljeSggbG9jYWxQb2xpY3lJZCwgdGhpcyApOwotICAgIH0gICAgICAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGNhbGxMb2FkTGlzdGVuZXJzKCkKLSAgewotICAgIGZvciggSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyIGxvYWRMaXN0ZW5lciA6IGxvYWRMaXN0ZW5lcnMgKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBsb2FkTGlzdGVuZXIubG9hZCgpOwotICAgICAgfQotICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgICAgewotICAgICAgICBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmxvZ0Vycm9yKCAiRXJyb3IgaW4gbG9hZCBsaXN0ZW5lcjoiICsgbG9hZExpc3RlbmVyLmdldENsYXNzKCkuZ2V0TmFtZSgpLCBleGMgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgfQotICAgIH0KLSAgICAKLSAgICBjb21taXRDaGFuZ2VzKCBmYWxzZSApOyAgIAotCi0gICAgLy8gQ29tbWl0IGFueSBwcm9qZWN0IGxldmVsIGNoYW5nZXMgdGhhdCBoYXZlIGJlZW4gbWFkZSBieSBsb2FkIGxpc3RlbmVycy4KLSAgICBmb3IoIElQcm9qZWN0IHByb2plY3QgOiBlbmFibGVkUHJvamVjdE1hcC5rZXlTZXQoKSApCi0gICAgewotICAgICAgY29tbWl0Q2hhbmdlcyggcHJvamVjdCApOwotICAgIH0gICAgCi0gIH0KLSAgCi0gIHB1YmxpYyBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gZ2V0QXBpUGxhdGZvcm0oKQotICB7Ci0gICAgcmV0dXJuIGFwaVBsYXRmb3JtOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBhZGRFbmFibGVkRXhwcmVzc2lvbiggRXhwcmVzc2lvbiBleHByZXNzaW9uICkKLSAgewotICAgIGlmKCBleHByZXNzaW9uICE9IG51bGwgKQotICAgIHsKLSAgICAgIGVuYWJsZWRMaXN0LmFkZCggZXhwcmVzc2lvbiApOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gaXNFbmFibGVkKCBPYmplY3Qgb2JqZWN0ICkKLSAgewotICAgIGJvb2xlYW4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICBJRXZhbHVhdGlvbkNvbnRleHQgY29udGV4dCA9IG5ldyBFdmFsdWF0aW9uQ29udGV4dCggbnVsbCwgb2JqZWN0ICk7Ci0gICAgY29udGV4dC5hZGRWYXJpYWJsZSggInNlbGVjdGlvbiIsIG9iamVjdCApOyAvLyROT04tTkxTLTEkCi0gICAgY29udGV4dC5zZXRBbGxvd1BsdWdpbkFjdGl2YXRpb24oIHRydWUgKTsKLSAgICAKLSAgICBmb3IoIEV4cHJlc3Npb24gZW5hYmxlZEl0ZW0gOiBlbmFibGVkTGlzdCApCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIEV2YWx1YXRpb25SZXN1bHQgZXhwUmVzdWx0ID0gZW5hYmxlZEl0ZW0uZXZhbHVhdGUoIGNvbnRleHQgKTsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIGFueSBleHByZXNzaW9uIHJldHVybnMgVFJVRSBvciBOT1RfTE9BREVEIHdlIHdpbGwgcmV0dXJuIHRydWUgYXMKLSAgICAgICAgLy8gdGhlIHJlc3VsdC4KLSAgICAgICAgaWYoIGV4cFJlc3VsdCAhPSBFdmFsdWF0aW9uUmVzdWx0LkZBTFNFICkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoKCBDb3JlRXhjZXB0aW9uIGV4YyApCi0gICAgICB7Ci0gICAgICAgIC8vIElnbm9yZSB0aGUgZXhwcmVzc2lvbiBpZiBhbiBleGNlcHRpb24gb2NjdXJzLgotICAgICAgICBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmxvZ0Vycm9yKCAiRXJyb3IgZXZhbHVhdGluZyBlbmFibGVtZW50IGV4cHJlc3Npb24uIiwgZXhjICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgY29tbWl0Q2hhbmdlcyggYm9vbGVhbiBzYXZlTG9jYWxzICkKLSAgewotICAgIExpc3Q8U3RyaW5nPiBsb2NhbElkcyA9IG5ldyBWZWN0b3I8U3RyaW5nPigpOwotICAgIAotICAgIGlmKCBzYXZlTG9jYWxzICkgTG9jYWxVdGlscy5yZW1vdmVBbGxQcmVmZXJlbmNlUG9saWNpZXMoIG51bGwsIG51bGwgKTsKLSAgICAKLSAgICAvLyBGaXJlIGNoaWxkIGNoYW5nZSBldmVudHMgZm9yIGNvbW1pdCBsaXN0ZW5lcnMKLSAgICBmb3IoIElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyIGxpc3RlbmVyIDogY2hpbGRDaGFuZ2VMaXN0ZW5lcnNPbkNvbW1pdCApCi0gICAgewotICAgICAgbGlzdGVuZXIuY2hpbGRDaGFuZ2UoIGNvbW1pdENoaWxkQ2hhbmdlUG9saWN5LCBjb21taXRDaGlsZENoYW5nZUFkZGVkICk7Ci0gICAgfQotICAgIAotICAgIHJlbW92ZURlbGV0ZWRQcmVmZXJlbmNlRGF0YSgpOwotICAgIAotICAgIGNvbW1pdENoaWxkQ2hhbmdlUG9saWN5ID0gbmV3IFZlY3RvcjxJU2VydmljZVBvbGljeT4oKTsKLSAgICBjb21taXRDaGlsZENoYW5nZUFkZGVkICA9IG5ldyBWZWN0b3I8Qm9vbGVhbj4oKTsKLSAgICAKLSAgICBmb3IoIFNlcnZpY2VQb2xpY3lJbXBsIHBvbGljeSA6IHBvbGljeU1hcC52YWx1ZXMoKSApCi0gICAgewotICAgICAgcG9saWN5LmNvbW1pdENoYW5nZXMoKTsKLSAgICAgIAotICAgICAgaWYoIHNhdmVMb2NhbHMgJiYgIXBvbGljeS5pc1ByZWRlZmluZWQoKSApCi0gICAgICB7Ci0gICAgICAgIExvY2FsVXRpbHMuc2F2ZUxvY2FsUG9saWN5KCBwb2xpY3kgKTsKLSAgICAgICAgbG9jYWxJZHMuYWRkKCBwb2xpY3kuZ2V0SWQoKSApOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiggc2F2ZUxvY2FscyApIExvY2FsVXRpbHMuc2F2ZUxvY2FsSWRzKCBsb2NhbElkcyApOwotICAgIAotICAgIGNvbW1pdHRlZFBvbGljeU1hcCA9IG5ldyBIYXNoTWFwPFN0cmluZywgU2VydmljZVBvbGljeUltcGw+KCk7Ci0gICAgY29tbWl0dGVkUG9saWN5TWFwLnB1dEFsbCggcG9saWN5TWFwICk7Ci0gICAgU2VydmljZVBvbGljeUFjdGl2YXRvci5nZXREZWZhdWx0KCkuc2F2ZVBsdWdpblByZWZlcmVuY2VzKCk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCByZW1vdmVEZWxldGVkUHJlZmVyZW5jZURhdGEoKQotICB7Ci0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGNvbW1pdENoaWxkQ2hhbmdlUG9saWN5LnNpemUoKTsgaW5kZXgrKyApCi0gICAgewotICAgICAgSVNlcnZpY2VQb2xpY3kgcG9saWN5ID0gY29tbWl0Q2hpbGRDaGFuZ2VQb2xpY3kuZ2V0KCBpbmRleCApOwotICAgICAgYm9vbGVhbiAgICAgICAgYWRkZWQgID0gY29tbWl0Q2hpbGRDaGFuZ2VBZGRlZC5nZXQoIGluZGV4ICk7Ci0gICAgICAKLSAgICAgIGlmKCAhYWRkZWQgKQotICAgICAgewotICAgICAgICAvLyBBZGQgcG9saWN5IGlzIGJlaW5nIGRlbGV0ZWQuICBXZSBuZWVkIHRvIHJlbW92ZSBhbnkgc3RhdGUgZGF0YQotICAgICAgICAvLyBmb3IgdGhpcyBwb2xpY3kgYXQgdGhlIHdvcmtzcGFjZSBsZXZlbCBhbmQgdGhlIHByb2plY3QgbGV2ZWwuCi0gICAgICAgIExvY2FsVXRpbHMucmVtb3ZlQWxsUHJlZmVyZW5jZVBvbGljaWVzKCBwb2xpY3kuZ2V0SWQoKSwgbnVsbCApOwotICAgICAgICAKLSAgICAgICAgZm9yKCBJUHJvamVjdCBwcm9qIDogZW5hYmxlZFByb2plY3RNYXAua2V5U2V0KCkgKQotICAgICAgICB7Ci0gICAgICAgICAgaWYoIHByb2ouZXhpc3RzKCkgJiYgcHJvai5pc09wZW4oKSApCi0gICAgICAgICAgewotICAgICAgICAgICAgSUVjbGlwc2VQcmVmZXJlbmNlcyBwcm9qUHJlZnMgPSBuZXcgUHJvamVjdFNjb3BlKCBwcm9qICkuZ2V0Tm9kZSggU2VydmljZVBvbGljeUFjdGl2YXRvci5QTFVHSU5fSUQgKTsKLSAgICAgICAgICAgIExvY2FsVXRpbHMucmVtb3ZlQWxsUHJlZmVyZW5jZVBvbGljaWVzKCBwb2xpY3kuZ2V0SWQoKSwgcHJvalByZWZzICk7Ci0gICAgICAgICAgCi0gICAgICAgICAgICB0cnkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcHJvalByZWZzLmZsdXNoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCggQmFja2luZ1N0b3JlRXhjZXB0aW9uIGV4YyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFNlcnZpY2VQb2xpY3lBY3RpdmF0b3IubG9nRXJyb3IoICJFcnJvciBmbHVzaGluZyBwcm9qZWN0IHByb3BlcnRpZXMuIiwgZXhjICk7IC8vJE5PTi1OTFMtMSQgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgaW50ZXJuYWxseSB0byByZW1vdmUgYSBzZXJ2aWNlIHBvbGljeS4KLSAgICogCi0gICAqIEBwYXJhbSBwb2xpY3kKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlbW92ZVBvbGljeSggSVNlcnZpY2VQb2xpY3kgcG9saWN5ICkKLSAgewotICAgIHBvbGljeU1hcC5yZW1vdmUoIHBvbGljeS5nZXRJZCgpICk7Ci0gICAgZmlyZUNoaWxkQ2hhbmdlRXZlbnQoIHBvbGljeSwgZmFsc2UgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIHBsYXRmb3JtIEFQSQotICAgKiAKLSAgICogQHBhcmFtIHBvbGljeQotICAgKi8KLSAgcHVibGljIHZvaWQgcmVtb3ZlUGxhdGZvcm1Qb2xpY3koIElTZXJ2aWNlUG9saWN5IHBvbGljeSApCi0gIHsKLSAgICBpZiggcG9saWN5LmlzUHJlZGVmaW5lZCgpICkgcmV0dXJuOwotICAgIAotICAgIElTZXJ2aWNlUG9saWN5IHBhcmVudCA9IHBvbGljeS5nZXRQYXJlbnRQb2xpY3koKTsKLSAgICAKLSAgICBpZiggcGFyZW50ID09IG51bGwgKQotICAgIHsKLSAgICAgIC8vIFJlbW92ZSBhbnkgY2hpbGRyZW4gZmlyc3QKLSAgICAgIExpc3Q8SVNlcnZpY2VQb2xpY3k+IGNoaWxkcmVuID0gbmV3IFZlY3RvcjxJU2VydmljZVBvbGljeT4oIHBvbGljeS5nZXRDaGlsZHJlbigpICk7Ci0gICAgICAKLSAgICAgIGZvciggSVNlcnZpY2VQb2xpY3kgY2hpbGQgOiBjaGlsZHJlbiApCi0gICAgICB7Ci0gICAgICAgIHBvbGljeS5yZW1vdmVDaGlsZCggY2hpbGQgKTsgIAotICAgICAgfQotICAgICAgCi0gICAgICByZW1vdmVQb2xpY3koIChTZXJ2aWNlUG9saWN5SW1wbClwb2xpY3kpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKCBwb2xpY3kgKTsKLSAgICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGFkZENoaWxkQ2hhbmdlTGlzdGVuZXIoIElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyIGxpc3RlbmVyLCBib29sZWFuIG9uQ29tbWl0ICkKLSAgewotICAgIGlmKCBvbkNvbW1pdCApCi0gICAgewotICAgICAgY2hpbGRDaGFuZ2VMaXN0ZW5lcnNPbkNvbW1pdC5hZGQoIGxpc3RlbmVyICk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBjaGlsZENoYW5nZUxpc3RlbmVycy5hZGQoIGxpc3RlbmVyICk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZW1vdmVDaGlsZENoYW5nZUxpc3RlbmVyKCBJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lciwgYm9vbGVhbiBvbkNvbW1pdCApCi0gIHsKLSAgICBpZiggb25Db21taXQgKQotICAgIHsKLSAgICAgIGNoaWxkQ2hhbmdlTGlzdGVuZXJzT25Db21taXQucmVtb3ZlKCBsaXN0ZW5lciApOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgY2hpbGRDaGFuZ2VMaXN0ZW5lcnMucmVtb3ZlKCBsaXN0ZW5lciApOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIHZvaWQgcXVldWVDaGlsZENoYW5nZUxpc3RlbmVycyggYm9vbGVhbiBxdWV1ZSApCi0gIHsKLSAgICBpZiggcXVldWUgJiYgcXVldWVkQ2hpbGRDaGFuZ2VBZGRlZCA9PSBudWxsICkKLSAgICB7Ci0gICAgICBxdWV1ZWRDaGlsZENoYW5nZUFkZGVkID0gbmV3IFZlY3RvcjxCb29sZWFuPigpOwotICAgICAgcXVldWVkQ2hpbGRDaGFuZ2VQb2xpY3kgPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PigpOwotICAgIH0KLSAgICBlbHNlIGlmKCAhcXVldWUgJiYgcXVldWVkQ2hpbGRDaGFuZ2VBZGRlZCAhPSBudWxsICkKLSAgICB7Ci0gICAgICAvLyBRdWV1aW5nIGhhcyBiZWVuIHR1cm5lZCBvZmYgc28gd2Ugd2lsbCBmaXJlIGFsbCB0aGUgcXVldWVkIGV2ZW50cy4KLSAgICAgIGZvciggSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIgOiBjaGlsZENoYW5nZUxpc3RlbmVycyApCi0gICAgICB7Ci0gICAgICAgIGxpc3RlbmVyLmNoaWxkQ2hhbmdlKCBxdWV1ZWRDaGlsZENoYW5nZVBvbGljeSwgcXVldWVkQ2hpbGRDaGFuZ2VBZGRlZCApOwotICAgICAgfQotICAgICAgCi0gICAgICBxdWV1ZWRDaGlsZENoYW5nZUFkZGVkID0gbnVsbDsKLSAgICAgIHF1ZXVlZENoaWxkQ2hhbmdlUG9saWN5ID0gbnVsbDsKLSAgICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGZpcmVDaGlsZENoYW5nZUV2ZW50KCBJU2VydmljZVBvbGljeSBwb2xpY3ksIGJvb2xlYW4gaXNBZGQgKQotICB7Ci0gICAgaWYoIHF1ZXVlZENoaWxkQ2hhbmdlQWRkZWQgPT0gbnVsbCApCi0gICAgewotICAgICAgTGlzdDxJU2VydmljZVBvbGljeT4gcG9saWN5TGlzdCA9IG5ldyBWZWN0b3I8SVNlcnZpY2VQb2xpY3k+KDEpOwotICAgICAgTGlzdDxCb29sZWFuPiAgICAgICAgYWRkZWRMaXN0ICA9IG5ldyBWZWN0b3I8Qm9vbGVhbj4oMSk7Ci0gICAgICAKLSAgICAgIHBvbGljeUxpc3QuYWRkKCBwb2xpY3kgKTsKLSAgICAgIGFkZGVkTGlzdC5hZGQoIGlzQWRkICk7Ci0gICAgICAKLSAgICAgIGZvciggSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIgOiBjaGlsZENoYW5nZUxpc3RlbmVycyApCi0gICAgICB7Ci0gICAgICAgIGxpc3RlbmVyLmNoaWxkQ2hhbmdlKCBwb2xpY3lMaXN0LCBhZGRlZExpc3QgKTsgICAgIAotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcXVldWVkQ2hpbGRDaGFuZ2VBZGRlZC5hZGQoIGlzQWRkICk7Ci0gICAgICBxdWV1ZWRDaGlsZENoYW5nZVBvbGljeS5hZGQoIHBvbGljeSApOwotICAgIH0KLSAgICAKLSAgICBjb21taXRDaGlsZENoYW5nZUFkZGVkLmFkZCggaXNBZGQgKTsKLSAgICBjb21taXRDaGlsZENoYW5nZVBvbGljeS5hZGQoIHBvbGljeSApOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBjb21taXRDaGFuZ2VzKCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgewotICAgIGZvciggU2VydmljZVBvbGljeUltcGwgcG9saWN5IDogcG9saWN5TWFwLnZhbHVlcygpICkKLSAgICB7Ci0gICAgICAoKFBvbGljeVN0YXRlSW1wbClwb2xpY3kuZ2V0UG9saWN5U3RhdGUoIHByb2plY3QgKSkuY29tbWl0Q2hhbmdlcygpOwotICAgIH0KLSAgICAKLSAgICBQcm9qZWN0RW50cnkgZW50cnkgPSBnZXRQcm9qZWN0RW50cnkoIHByb2plY3QgKTsKLSAgICAKLSAgICBlbnRyeS5pc0VuYWJsZWRDb21taXR0ZWQgPSBlbnRyeS5pc0VuYWJsZWQ7ICAKLSAgICBzZXRQcm9qZWN0RW5hYmxlZCggcHJvamVjdCwgZW50cnkuaXNFbmFibGVkQ29tbWl0dGVkICk7Ci0gICAgICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIElFY2xpcHNlUHJlZmVyZW5jZXMgcHJvamVjdFByZWZzID0gbmV3IFByb2plY3RTY29wZSggcHJvamVjdCApLmdldE5vZGUoIFNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuUExVR0lOX0lEICk7Ci0gICAgICAKLSAgICAgIHByb2plY3RQcmVmcy5mbHVzaCgpOwotICAgIH0KLSAgICBjYXRjaCggQmFja2luZ1N0b3JlRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgU2VydmljZVBvbGljeUFjdGl2YXRvci5sb2dFcnJvciggIkVycm9yIHdoaWxlIGNvbW1pdHRpbmcgcHJvamVjdCBwcmVmZXJlbmNlcy4iLCBleGMgKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgZGlzY2FyZENoYW5nZXMoKQotICB7Ci0gICAgcG9saWN5TWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTZXJ2aWNlUG9saWN5SW1wbD4oKTsKLSAgICBwb2xpY3lNYXAucHV0QWxsKCBjb21taXR0ZWRQb2xpY3lNYXAgKTsKLSAgICAKLSAgICBjb21taXRDaGlsZENoYW5nZVBvbGljeSA9IG5ldyBWZWN0b3I8SVNlcnZpY2VQb2xpY3k+KCk7Ci0gICAgY29tbWl0Q2hpbGRDaGFuZ2VBZGRlZCAgPSBuZXcgVmVjdG9yPEJvb2xlYW4+KCk7Ci0gICAgCi0gICAgZm9yKCBTZXJ2aWNlUG9saWN5SW1wbCBwb2xpY3kgOiBjb21taXR0ZWRQb2xpY3lNYXAudmFsdWVzKCkgKQotICAgIHsKLSAgICAgIHBvbGljeS5kaXNjYXJkQ2hhbmdlcygpOwotICAgIH0gICAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGRpc2NhcmRDaGFuZ2VzKCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgewotICAgIGZvciggU2VydmljZVBvbGljeUltcGwgcG9saWN5IDogcG9saWN5TWFwLnZhbHVlcygpICkKLSAgICB7Ci0gICAgICAoKFBvbGljeVN0YXRlSW1wbClwb2xpY3kuZ2V0UG9saWN5U3RhdGUoIHByb2plY3QgKSkuZGlzY2FyZENoYW5nZXMoKTsKLSAgICB9Ci0gICAgCi0gICAgUHJvamVjdEVudHJ5IGVudHJ5ID0gZ2V0UHJvamVjdEVudHJ5KCBwcm9qZWN0ICk7Ci0gICAgCi0gICAgZW50cnkuaXNFbmFibGVkID0gZW50cnkuaXNFbmFibGVkQ29tbWl0dGVkOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHJlc3RvcmVEZWZhdWx0cygpCi0gIHsKLSAgICBWZWN0b3I8U2VydmljZVBvbGljeUltcGw+IHRlbXBQb2xpY3lWYWx1ZXMgCi0gICAgICAgPSBuZXcgVmVjdG9yPFNlcnZpY2VQb2xpY3lJbXBsPiggcG9saWN5TWFwLnZhbHVlcygpICk7Ci0gICAgCi0gICAgZm9yKCBTZXJ2aWNlUG9saWN5SW1wbCBwb2xpY3kgOiB0ZW1wUG9saWN5VmFsdWVzICkKLSAgICB7Ci0gICAgICBwb2xpY3kucmVzdG9yZURlZmF1bHRzKCk7Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCByZXN0b3JlRGVmYXVsdHMoIElQcm9qZWN0IHByb2plY3QgKQotICB7Ci0gICAgZm9yKCBTZXJ2aWNlUG9saWN5SW1wbCBwb2xpY3kgOiBwb2xpY3lNYXAudmFsdWVzKCkgKQotICAgIHsKLSAgICAgIHBvbGljeS5yZXN0b3JlRGVmYXVsdHMoIHByb2plY3QgKTsKLSAgICB9ICAgIAotICB9Ci0gIAotICBwdWJsaWMgU2V0PFN0cmluZz4gZ2V0QWxsUG9saWN5SWRzKCkKLSAgewotICAgIHJldHVybiBwb2xpY3lNYXAua2V5U2V0KCk7Ci0gIH0KLSAgICAKLSAgcHVibGljIExpc3Q8SVNlcnZpY2VQb2xpY3k+IGdldFJvb3RTZXJ2aWNlUG9saWNpZXMoIElGaWx0ZXIgZmlsdGVyICkKLSAgewotICAgIExpc3Q8SVNlcnZpY2VQb2xpY3k+IHJvb3RQb2xpY2llcyA9IG5ldyBWZWN0b3I8SVNlcnZpY2VQb2xpY3k+KCk7Ci0gICAgCi0gICAgZm9yKCBTdHJpbmcgcG9saWN5SWQgOiBwb2xpY3lNYXAua2V5U2V0KCkgKQotICAgIHsKLSAgICAgIFNlcnZpY2VQb2xpY3lJbXBsIHBvbGljeSA9IHBvbGljeU1hcC5nZXQoIHBvbGljeUlkICk7Ci0gICAgICAKLSAgICAgIGlmKCBwb2xpY3kuZ2V0UGFyZW50UG9saWN5KCkgPT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIGlmKCBmaWx0ZXIgPT0gbnVsbCB8fCAoZmlsdGVyICE9IG51bGwgJiYgZmlsdGVyLmFjY2VwdCggcG9saWN5ICkpICkKLSAgICAgICAgewotICAgICAgICAgIHJvb3RQb2xpY2llcy5hZGQoIHBvbGljeSApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiByb290UG9saWNpZXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTZXJ2aWNlUG9saWN5SW1wbCBjcmVhdGVTZXJ2aWNlUG9saWN5KCBJU2VydmljZVBvbGljeSBwYXJlbnQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgaWQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nICAgICAgICAgZW51bUxpc3RJZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICBkZWZhdWx0RW51bUlkICkKLSAgewotICAgIGlmKCBpZCA9PSBudWxsICkgaWQgPSAib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LmlkIjsgLy8kTk9OLU5MUy0xJAotICAgIAotICAgIFN0cmluZyAgICAgICAgICAgIHVuaXF1ZUlkID0gbWFrZVVuaXF1ZUlkKCBpZCApOwotICAgIFNlcnZpY2VQb2xpY3lJbXBsIHBvbGljeSAgID0gbmV3IFNlcnZpY2VQb2xpY3lJbXBsKCBmYWxzZSwgdW5pcXVlSWQsIHRoaXMgKTsKLSAgICAKLSAgICBwb2xpY3kuc2V0UGFyZW50KCAoU2VydmljZVBvbGljeUltcGwpcGFyZW50ICk7Ci0gICAgcG9saWN5LnNldEVudW1MaXN0SWQoIGVudW1MaXN0SWQgKTsKLSAgICBwb2xpY3kuc2V0RGVmYXVsdEVudW1JZCggZGVmYXVsdEVudW1JZCApOwotICAgIHBvbGljeU1hcC5wdXQoIHVuaXF1ZUlkLCBwb2xpY3kgKTsKLSAgICBmaXJlQ2hpbGRDaGFuZ2VFdmVudCggcG9saWN5LCB0cnVlICk7Ci0gICAgCi0gICAgcmV0dXJuIHBvbGljeTsKLSAgfQotICAKLSAgcHVibGljIFNlcnZpY2VQb2xpY3lJbXBsIGdldFNlcnZpY2VQb2xpY3koIFN0cmluZyBpZCApCi0gIHsKLSAgICByZXR1cm4gaWQgPT0gbnVsbCA/IG51bGwgOiBwb2xpY3lNYXAuZ2V0KCBpZCApOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4gZ2V0U3RhdGVFbnVtZXJhdGlvbiggU3RyaW5nIGVudW1JZCApCi0gIHsKLSAgICByZXR1cm4gZW51bUxpc3QuZ2V0KCBlbnVtSWQgKTsgCi0gIH0KLSAgCi0gIHB1YmxpYyBJU3RhdGVFbnVtZXJhdGlvbkl0ZW0gZ2V0U3RhdGVJdGVtRW51bWVyYXRpb24oIFN0cmluZyBzdGF0ZUl0ZW1JZCApCi0gIHsKLSAgICByZXR1cm4gZW51bUl0ZW1MaXN0LmdldCggc3RhdGVJdGVtSWQgKTsKLSAgfQotICAKLSAgcHVibGljIGJvb2xlYW4gaXNQcm9qZWN0UHJlZmVyZW5jZXNFbmFibGVkKCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgewotICAgIFByb2plY3RFbnRyeSBlbnRyeSAgPSBnZXRQcm9qZWN0RW50cnkoIHByb2plY3QgKTsKLSAgICAKLSAgICByZXR1cm4gZW50cnkuaXNFbmFibGVkOwotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gZ2V0UHJvamVjdFByZWZlcmVuY2VFbmFibGVkKCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgewotICAgIFN0cmluZyAgICAgICAgICAgICAgcGx1Z2luSWQgICAgICAgICAgPSBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLlBMVUdJTl9JRDsKLSAgICBJRWNsaXBzZVByZWZlcmVuY2VzIHByb2plY3RQcmVmZXJlbmNlID0gbmV3IFByb2plY3RTY29wZSggcHJvamVjdCApLmdldE5vZGUoIHBsdWdpbklkICk7Ci0gICAgU3RyaW5nICAgICAgICAgICAgICBrZXkgICAgICAgICAgICAgICA9IHBsdWdpbklkICsgIi5wcm9qZWN0RW5hYmxlZCI7IC8vJE5PTi1OTFMtMSQKLSAgICAKLSAgICByZXR1cm4gcHJvamVjdFByZWZlcmVuY2UuZ2V0Qm9vbGVhbigga2V5LCBmYWxzZSApOyAgICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0UHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZCggSVByb2plY3QgcHJvamVjdCwgYm9vbGVhbiB2YWx1ZSApCi0gIHsKLSAgICBQcm9qZWN0RW50cnkgZW50cnkgID0gZ2V0UHJvamVjdEVudHJ5KCBwcm9qZWN0ICk7Ci0gICAgCi0gICAgZW50cnkuaXNFbmFibGVkID0gdmFsdWU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBBZGQgYSBwcm9qZWN0IHBsYXRmb3JtIGxpc3RlbmVyLiAgV2hlbiBhIHBhcnRpY3VsYXIgcHJvamVjdCBpcyByZWZlcmVuY2VkCi0gICAqIGJ5IGluIHRoZSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybSB0aGlzIGxpc3RlbmVyIHdpbGwgYmUgY2FsbGVkIHRoZSBmaXJzdAotICAgKiB0aW1lIHRoZSBwcm9qZWN0IGlzIGxvYWRlZCBpbnRvIHRoZSBzeXN0ZW0uCi0gICAqIAotICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRQcm9qZWN0TG9hZExpc3RlbmVyKCBJUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyIGxpc3RlbmVyICkKLSAgewotICAgIHByb2plY3RQbGF0Zm9ybUxpc3RlbmVycy5hZGQoIGxpc3RlbmVyICk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZW1vdmVzIGEgcHJvamVjdCBwbGF0Zm9ybSBsaXN0ZW5lci4KLSAgICogCi0gICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgbGlzdGVuZXIKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlbW92ZVByb2plY3RMb2FkTGlzdGVuZXIoIElQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIgbGlzdGVuZXIgKQotICB7Ci0gICAgcHJvamVjdFBsYXRmb3JtTGlzdGVuZXJzLnJlbW92ZSggbGlzdGVuZXIgKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIHNldFByb2plY3RFbmFibGVkKCBJUHJvamVjdCBwcm9qZWN0LCBib29sZWFuIHZhbHVlICkKLSAgewotICAgIFN0cmluZyAgICAgICAgICAgICAgcGx1Z2luSWQgICAgICAgICAgPSBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLlBMVUdJTl9JRDsKLSAgICBJRWNsaXBzZVByZWZlcmVuY2VzIHByb2plY3RQcmVmZXJlbmNlID0gbmV3IFByb2plY3RTY29wZSggcHJvamVjdCApLmdldE5vZGUoIHBsdWdpbklkICk7Ci0gICAgU3RyaW5nICAgICAgICAgICAgICBrZXkgICAgICAgICAgICAgICA9IHBsdWdpbklkICsgIi5wcm9qZWN0RW5hYmxlZCI7IC8vJE5PTi1OTFMtMSQKLQotICAgIHByb2plY3RQcmVmZXJlbmNlLnB1dEJvb2xlYW4oIGtleSwgdmFsdWUgKTsgICAgCi0gIH0KLSAgCi0gIHByaXZhdGUgUHJvamVjdEVudHJ5IGdldFByb2plY3RFbnRyeSggSVByb2plY3QgcHJvamVjdCApCi0gIHsKLSAgICBQcm9qZWN0RW50cnkgZW50cnkgID0gZW5hYmxlZFByb2plY3RNYXAuZ2V0KCBwcm9qZWN0ICk7Ci0gICAgCi0gICAgaWYoIGVudHJ5ID09IG51bGwgKQotICAgIHsKLSAgICAgIGVudHJ5ID0gbmV3IFByb2plY3RFbnRyeSgpOwotICAgICAgZW5hYmxlZFByb2plY3RNYXAucHV0KCBwcm9qZWN0LCBlbnRyeSApOwotICAgICAgZW50cnkuaXNFbmFibGVkQ29tbWl0dGVkID0gZ2V0UHJvamVjdFByZWZlcmVuY2VFbmFibGVkKCBwcm9qZWN0ICk7Ci0gICAgICBlbnRyeS5pc0VuYWJsZWQgPSBlbnRyeS5pc0VuYWJsZWRDb21taXR0ZWQ7Ci0gICAgICBmaXJlUHJvamVjdExvYWRMaXN0ZW5lciggcHJvamVjdCApOwotICAgIH0KLQotICAgIHJldHVybiBlbnRyeTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGZpcmVQcm9qZWN0TG9hZExpc3RlbmVyKCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgewotICAgIGZvciggSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lciBsaXN0ZW5lciA6IHByb2plY3RQbGF0Zm9ybUxpc3RlbmVycyApCi0gICAgewotICAgICAgbGlzdGVuZXIubG9hZCggcHJvamVjdCApOwotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgbWFrZVVuaXF1ZUlkKCBTdHJpbmcgaWQgKQotICB7Ci0gICAgU3RyaW5nICByZXN1bHQgID0gaWQ7Ci0gICAgaW50ICAgICBpZENvdW50ID0gMTsKLSAgICBQYXR0ZXJuIHBhdHRlcm4gPSBQYXR0ZXJuLmNvbXBpbGUoICJcXGQqJCIgKTsgLy8gTWF0Y2ggYW55IG51bWVyaWNhbCBkaWdpdHMgYXQgdGhlIGVuZCAvLyROT04tTkxTLTEkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBzdHJpbmcuCi0gICAgCi0gICAgd2hpbGUoIHBvbGljeU1hcC5jb250YWluc0tleSggcmVzdWx0ICkgKQotICAgIHsKLSAgICAgIE1hdGNoZXIgbWF0Y2hlciA9IHBhdHRlcm4ubWF0Y2hlciggcmVzdWx0ICk7Ci0gICAgCi0gICAgICByZXN1bHQgPSBtYXRjaGVyLnJlcGxhY2VGaXJzdCggIiIgKSArIGlkQ291bnQ7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGlkQ291bnQrKzsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgcHJpdmF0ZSBjbGFzcyBQcm9qZWN0RW50cnkKLSAgewotICAgICBib29sZWFuIGlzRW5hYmxlZENvbW1pdHRlZDsKLSAgICAgYm9vbGVhbiBpc0VuYWJsZWQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvU2VydmljZVBvbGljeVJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvaW50ZXJuYWwvcG9saWN5L1NlcnZpY2VQb2xpY3lSZWdpc3RyeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzgwMmVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvU2VydmljZVBvbGljeVJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwNDI4ICAgMjI3NTAxIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEZpeGVkIHRvTG93ZXJDYXNlIExvY2FsZSBwcm9ibGVtLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLmludGVybmFsLnBvbGljeTsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zLkV4cHJlc3Npb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9ucy5FeHByZXNzaW9uQ29udmVydGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuZXhwcmVzc2lvbnMuRXhwcmVzc2lvblRhZ05hbWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU3RhdGVFbnVtZXJhdGlvbkl0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lBY3RpdmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzLlJlZ2lzdHJ5VXRpbHM7Ci0KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlUG9saWN5UmVnaXN0cnkKLXsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU0VSVklDRV9QT0xJQ1lfSUQgPSBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLlBMVUdJTl9JRCArICIuc2VydmljZXBvbGljeSI7IC8vJE5PTi1OTFMtMSQKLSAgCi0gIHByaXZhdGUgU2VydmljZVBvbGljeVBsYXRmb3JtSW1wbCBwbGF0Zm9ybTsKLSAgCi0gIHB1YmxpYyBTZXJ2aWNlUG9saWN5UmVnaXN0cnkoIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybUltcGwgcGxhdGZvcm0gKQotICB7Ci0gICAgdGhpcy5wbGF0Zm9ybSA9IHBsYXRmb3JtOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBsb2FkKCBMaXN0PElQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcj4gICAgICAgIGxvYWRMaXN0ZW5lcnMsCi0gICAgICAgICAgICAgICAgICAgIE1hcDxTdHJpbmcsIFNlcnZpY2VQb2xpY3lJbXBsPiAgICAgICAgICAgcG9saWN5TWFwLAotICAgICAgICAgICAgICAgICAgICBNYXA8U3RyaW5nLCBMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4+IGVudW1NYXAsCi0gICAgICAgICAgICAgICAgICAgIE1hcDxTdHJpbmcsIFN0YXRlRW51bWVyYXRpb25JdGVtSW1wbD4gICAgZW51bUl0ZW1NYXAgKQotICB7Ci0gICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gZWxlbWVudHMgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpLmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcihTRVJWSUNFX1BPTElDWV9JRCk7Ci0gICAgCi0gICAgZm9yKCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCA6IGVsZW1lbnRzICkKLSAgICB7Ci0gICAgICBTdHJpbmcgZWxlbWVudE5hbWUgPSBlbGVtZW50LmdldE5hbWUoKS50b0xvd2VyQ2FzZSggTG9jYWxlLkVOR0xJU0ggKTsKLSAgICAgIAotICAgICAgaWYoIGVsZW1lbnROYW1lLmVxdWFscyggInNlcnZpY2Vwb2xpY3kiKSApIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgbG9hZFNlcnZpY2VQb2xpY3koIGVsZW1lbnQsIGxvYWRMaXN0ZW5lcnMsIHBvbGljeU1hcCwgZW51bU1hcCwgZW51bUl0ZW1NYXAgKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgZXJyb3IoICJVbmRlZmluZWQgc2VydmljZSBwb2xpY3kgZWxlbWVudCwgIiArIGVsZW1lbnROYW1lICsgIiBmb3VuZC4iICk7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBSZXNvbHZlIGFsbCBwb2xpY3kgc2VydmljZXMuCi0gICAgZm9yKCBTdHJpbmcgcG9saWN5SWQgOiBwb2xpY3lNYXAua2V5U2V0KCkgKQotICAgIHsKLSAgICAgIFNlcnZpY2VQb2xpY3lJbXBsIHBvbGljeSA9IHBvbGljeU1hcC5nZXQoIHBvbGljeUlkICk7Ci0gICAgICAKLSAgICAgIHBvbGljeS5yZXNvbHZlKCk7Ci0gICAgfQotICB9Ci0gICAKLSAgcHJpdmF0ZSB2b2lkIGxvYWRTZXJ2aWNlUG9saWN5KCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdDxJUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXI+ICAgICAgICBsb2FkTGlzdGVuZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcDxTdHJpbmcsIFNlcnZpY2VQb2xpY3lJbXBsPiAgICAgICAgICAgcG9saWN5TWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcDxTdHJpbmcsIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPj4gZW51bU1hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXA8U3RyaW5nLCBTdGF0ZUVudW1lcmF0aW9uSXRlbUltcGw+ICAgIGVudW1JdGVtTWFwICkgCi0gIHsKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBjaGlsZEVsZW1lbnRzID0gZWxlbWVudC5nZXRDaGlsZHJlbigpOwotICAgIAotICAgIGZvciggSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNoaWxkIDogY2hpbGRFbGVtZW50cyApCi0gICAgewotICAgICAgU3RyaW5nIGNoaWxkTmFtZSA9IGNoaWxkLmdldE5hbWUoKS50b0xvd2VyQ2FzZSggTG9jYWxlLkVOR0xJU0ggKTsKLSAgICAgIAotICAgICAgaWYoIGNoaWxkTmFtZS5lcXVhbHMoICJsb2FkbGlzdGVuZXIiICkgKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIGxvYWRMb2FkTGlzdGVuZXIoIGNoaWxkLCBsb2FkTGlzdGVuZXJzICk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKCBjaGlsZE5hbWUuZXF1YWxzKCAicG9saWN5IiApICkgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBsb2FkUG9saWN5KCBjaGlsZCwgcG9saWN5TWFwICk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKCBjaGlsZE5hbWUuZXF1YWxzKCAiZW51bWVyYXRpb24iICkgKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIGxvYWRFbnVtZXJhdGlvbiggY2hpbGQsIGVudW1NYXAsIGVudW1JdGVtTWFwICk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKCBjaGlsZE5hbWUuZXF1YWxzKCBFeHByZXNzaW9uVGFnTmFtZXMuRU5BQkxFTUVOVCApICkgCi0gICAgICB7Ci0gICAgICAgIGxvYWRFbmFibGVtZW50KCBjaGlsZCApOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBlcnJvciggIlVuZGVmaW5lZCBzZXJ2aWNlIHBvbGljeSBlbGVtZW50LCAiICsgY2hpbGROYW1lICsgIiBmb3VuZC4iICk7ICAgICAgICAgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgbG9hZEVuYWJsZW1lbnQoIElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtZW50ICkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIEV4cHJlc3Npb24gZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25Db252ZXJ0ZXIuZ2V0RGVmYXVsdCgpLnBlcmZvcm0oIGVsZW1lbnQgKTsKLSAgICAgIAotICAgICAgcGxhdGZvcm0uYWRkRW5hYmxlZEV4cHJlc3Npb24oIGV4cHJlc3Npb24gKTsKLSAgICB9Ci0gICAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICBlcnJvciggIkVycm9yIGxvYWRpbmcgZW5hYmxlbWVudCBleHByZXNzaW9uOiAiICsgZXhjLmdldE1lc3NhZ2UoKSApOyAvLyROT04tTkxTLTEkCi0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgbG9hZEVudW1lcmF0aW9uKCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcDxTdHJpbmcsIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPj4gZW51bU1hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwPFN0cmluZywgU3RhdGVFbnVtZXJhdGlvbkl0ZW1JbXBsPiAgICBlbnVtSXRlbU1hcCApCi0gIHsKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgZW51bUlkICAgICAgICA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBlbGVtZW50LCAiaWQiICk7IC8vJE5PTi1OTFMtMSQKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEVudW1JZCA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBlbGVtZW50LCAiZGVmYXVsdCIgKTsgLy8kTk9OLU5MUy0xJAotICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdICAgICBjaGlsZEVsZW1lbnRzID0gZWxlbWVudC5nZXRDaGlsZHJlbigpOwotICAgIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPiBlbnVtTGlzdCAgICAgID0gbmV3IFZlY3RvcjxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+KCk7Ci0gICAgCi0gICAgaWYoIGVudW1JZCA9PSBudWxsICkKLSAgICB7Ci0gICAgICBlcnJvciggIlwiSWRcIiBhdHRyaWJ1dGUgbWlzc2luZyBmcm9tIFNlcml2Y2UgUG9saWN5IEVudW1lcmF0aW9uIGVsZW1lbnQuIiApOyAvLyROT04tTkxTLTEkCi0gICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGZvciggSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNoaWxkIDogY2hpbGRFbGVtZW50cyApCi0gICAgewotICAgICAgU3RyaW5nIGNoaWxkTmFtZSA9IGNoaWxkLmdldE5hbWUoKS50b0xvd2VyQ2FzZSggTG9jYWxlLkVOR0xJU0ggKTsKLSAgICAgIAotICAgICAgaWYoIGNoaWxkTmFtZS5lcXVhbHMoICJpdGVtIiApICkgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBsb2FkSXRlbSggY2hpbGQsIGVudW1MaXN0LCBlbnVtSXRlbU1hcCApOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBlcnJvciggIlVuZGVmaW5lZCBzZXJ2aWNlIHBvbGljeSBlbnVtZXJhdGlvbiBlbGVtZW50LCAiICsgY2hpbGROYW1lICsgIiBmb3VuZC4iICk7ICAgICAgICAgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgICB9IAotICAgIH0KLSAgICAKLSAgICBpZiggZGVmYXVsdEVudW1JZCAhPSBudWxsICkKLSAgICB7Ci0gICAgICBTdGF0ZUVudW1lcmF0aW9uSXRlbUltcGwgZGVmYXVsdEVudW0gPSBlbnVtSXRlbU1hcC5nZXQoIGRlZmF1bHRFbnVtSWQgKTsKLSAgICAgIAotICAgICAgaWYoIGRlZmF1bHRFbnVtID09IG51bGwgKQotICAgICAgewotICAgICAgICBlcnJvciggIkRlZmF1bHQgZW51bSBhdHRyaWJ1dGUgZm9yIGVudW1lcmF0aW9uICIgKyBlbnVtSWQgKyAiIG5vdCBmb3VuZC4iICk7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBkZWZhdWx0RW51bS5zZXREZWZhdWx0KCB0cnVlICk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIGVudW1NYXAucHV0KCBlbnVtSWQsIGVudW1MaXN0ICk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBsb2FkSXRlbSggSUNvbmZpZ3VyYXRpb25FbGVtZW50ICAgICAgICAgICAgICAgICBlbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPiAgICAgICAgICAgZW51bUxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTWFwPFN0cmluZywgU3RhdGVFbnVtZXJhdGlvbkl0ZW1JbXBsPiBlbnVtSXRlbU1hcCkKLSAgewotICAgIFN0cmluZyBpdGVtSWQgICAgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggZWxlbWVudCwgImlkIiApOyAvLyROT04tTkxTLTEkCi0gICAgU3RyaW5nIHNob3J0TmFtZSA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBlbGVtZW50LCAic2hvcnRuYW1lIiApOyAvLyROT04tTkxTLTEkCi0gICAgU3RyaW5nIGxvbmdOYW1lICA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBlbGVtZW50LCAibG9uZ25hbWUiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAKLSAgICBpZiggaXRlbUlkID09IG51bGwgKQotICAgIHsKLSAgICAgIGVycm9yKCAiXCJJZFwiIGF0dHJpYnV0ZSBtaXNzaW5nIGZyb20gU2VyaXZjZSBQb2xpY3kgRW51bWVyYXRpb24gaXRlbSBlbGVtZW50LiIgKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICAKLSAgICBpZiggc2hvcnROYW1lID09IG51bGwgJiYgbG9uZ05hbWUgPT0gbnVsbCApCi0gICAgewotICAgICAgZXJyb3IoICJzaG9ydE5hbWUgb3IgbG9uZ05hbWUgYXR0cmlidXRlIG1pc3NpbmcgZnJvbSBTZXJ2aWNlIFBvbGljeSBFbnVtZXJhdGlvbiBpdGVtIGVsZW1lbnQuIiApOyAvLyROT04tTkxTLTEkCi0gICAgfQotICAgIGVsc2UgaWYoIHNob3J0TmFtZSA9PSBudWxsICkKLSAgICB7Ci0gICAgICBzaG9ydE5hbWUgPSBsb25nTmFtZTsKLSAgICB9Ci0gICAgZWxzZSBpZiggbG9uZ05hbWUgPT0gbnVsbCApCi0gICAgewotICAgICAgbG9uZ05hbWUgPSBzaG9ydE5hbWU7Ci0gICAgfQotICAgICAgCi0gICAgU3RhdGVFbnVtZXJhdGlvbkl0ZW1JbXBsIGl0ZW0gPSBuZXcgU3RhdGVFbnVtZXJhdGlvbkl0ZW1JbXBsKCk7Ci0gICAgCi0gICAgaXRlbS5zZXRJZCggaXRlbUlkICk7Ci0gICAgaXRlbS5zZXRTaG9ydE5hbWUoIHNob3J0TmFtZSApOwotICAgIGl0ZW0uc2V0TG9uZ05hbWUoIGxvbmdOYW1lICk7Ci0gICAgZW51bUxpc3QuYWRkKCBpdGVtICk7Ci0gICAgZW51bUl0ZW1NYXAucHV0KCBpdGVtSWQsIGl0ZW0gKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGxvYWRMb2FkTGlzdGVuZXIoIElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdDxJUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXI+IGxvYWRMaXN0ZW5lcnMgKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgT2JqZWN0IGxpc3RlbmVyID0gZWxlbWVudC5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCAiY2xhc3MiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgaWYoIGxpc3RlbmVyIGluc3RhbmNlb2YgSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyICkKLSAgICAgIHsKLSAgICAgICAgbG9hZExpc3RlbmVycy5hZGQoIChJUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIpbGlzdGVuZXIgKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgZXJyb3IoICJMb2FkIGxpc3RlbmVyLCAiICsgZWxlbWVudC5nZXRBdHRyaWJ1dGUoICJjbGFzcyIgKSArICIgZG9lcyBub3QgaW1wbGVtZW50IElQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lciIgKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmxvZ0Vycm9yKCAiRXJyb3IgbG9hZGluZyBzZXJ2aWNlIHBvbGljeSBsb2FkbGlzdGVuZXIuIiwgZXhjICk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBsb2FkUG9saWN5KCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgcG9saWN5LCBNYXA8U3RyaW5nLCBTZXJ2aWNlUG9saWN5SW1wbD4gcG9saWN5TWFwICkKLSAgewotICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdICAgICAgcG9saWN5RWxlbWVudHMgPSBwb2xpY3kuZ2V0Q2hpbGRyZW4oKTsKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkICAgICAgID0gUmVnaXN0cnlVdGlscy5nZXRBdHRyaWJ1dGUoIHBvbGljeSwgInBhcmVudHBvbGljeWlkIiApOyAvLyROT04tTkxTLTEkCi0gICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCBwb2xpY3ksICJpZCIgKTsgLy8kTk9OLU5MUy0xJAotICAgIFN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgZW51bUxpc3RJZCAgICAgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggcG9saWN5LCAiZW51bWxpc3RpZCIgKTsgLy8kTk9OLU5MUy0xJAotICAgIFN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEVudW1JZCAgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggcG9saWN5LCAiZGVmYXVsdGVudW1pZCIgKTsgLy8kTk9OLU5MUy0xJAotICAgIFN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZVZhbHVlICAgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggcG9saWN5LCAibXV0YWJsZSIgKTsgLy8kTk9OLU5MUy0xJAotICAgIGJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZSAgICAgICAgPSBtdXRhYmxlVmFsdWUgIT0gbnVsbCAmJiBtdXRhYmxlVmFsdWUuZXF1YWxzSWdub3JlQ2FzZSggInRydWUiICk7ICAgICAgICAgIC8vJE5PTi1OTFMtMSQKLSAgICBEZXNjcmlwdG9ySW1wbCAgICAgICAgICAgICAgIGRlc2NyaXB0b3IgICAgID0gbnVsbDsKLSAgICBMaXN0PFVucmVzb2x2ZWRSZWxhdGlvbnNoaXA+IHJlbGF0aW9uc2hpcHMgID0gbmV3IFZlY3RvcjxVbnJlc29sdmVkUmVsYXRpb25zaGlwPigpOwotICAgIExpc3Q8U3RyaW5nW10+ICAgICAgICAgICAgICAgc3RhdGVLZXlWYWx1ZXMgPSBuZXcgVmVjdG9yPFN0cmluZ1tdPigpOwotICAgIAotICAgIC8vIElmIHRoZSBtdXRhYmxlIGF0dHJpYnV0ZSB3YXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIGVudW1MaXN0SWQgYXR0cmlidXRlCi0gICAgLy8gYXR0cmlidXRlIHdhcyBzcGVjaWZpZWQgdGhlbiB0aGlzIHBvbGljeSBzaG91bGQgYmUgbXV0YWJsZSwgc2luY2UKLSAgICAvLyBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gYXNzb2NpYXRlIHN0YXRlIHdpdGggYSBwb2xpY3kgdGhhdCBpcyBub3QKLSAgICAvLyBjaGFuZ2VhYmxlLgotICAgIGlmKCBtdXRhYmxlVmFsdWUgPT0gbnVsbCAmJiBlbnVtTGlzdElkICE9IG51bGwgKQotICAgIHsKLSAgICAgIG11dGFibGUgPSB0cnVlOyAgCi0gICAgfQotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIGZvciggSUNvbmZpZ3VyYXRpb25FbGVtZW50IHBvbGljeUVsZW1lbnQgOiBwb2xpY3lFbGVtZW50cyApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBuYW1lID0gcG9saWN5RWxlbWVudC5nZXROYW1lKCkudG9Mb3dlckNhc2UoIExvY2FsZS5FTkdMSVNIICk7Ci0gICAgICAKLSAgICAgICAgaWYoIG5hbWUuZXF1YWxzKCAiZGVzY3JpcHRvciIpICkgLy8kTk9OLU5MUy0xJAotICAgICAgICB7Ci0gICAgICAgICAgZGVzY3JpcHRvciA9IFJlZ2lzdHJ5VXRpbHMubG9hZERlc2NyaXB0b3IoIHBvbGljeUVsZW1lbnQgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCBuYW1lLmVxdWFscyggInJlbGF0aW9uc2hpcCIgKSApIC8vJE5PTi1OTFMtMSQKLSAgICAgICAgewotICAgICAgICAgIGxvYWRSZWxhdGlvbnNoaXAoIHBvbGljeUVsZW1lbnQsIHJlbGF0aW9uc2hpcHMgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCBuYW1lLmVxdWFscyggInN0YXRlIiApICkgLy8kTk9OLU5MUy0xJAotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIGtleSAgID0gUmVnaXN0cnlVdGlscy5nZXRBdHRyaWJ1dGUoIHBvbGljeUVsZW1lbnQsICJrZXkiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggcG9saWN5RWxlbWVudCwgInZhbHVlIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgICAgCi0gICAgICAgICAgaWYoIGtleSA9PSBudWxsICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvciggIlNlcnZpY2UgcG9saWN5IHN0YXRlIG1pc3NpbmcgYXR0cmlidXRlIFwia2V5XCIuIiApOyAvLyROT04tTkxTLTEkICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgICAgaWYoIHZhbHVlID09IG51bGwgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKCAiU2VydmljZSBwb2xpY3kgc3RhdGUgbWlzc2luZyBhdHRyaWJ1dGUgXCJ2YWx1ZVwiLiIgKTsgLy8kTk9OLU5MUy0xJCAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIGlmKCBrZXkgIT0gbnVsbCAmJiB2YWx1ZSAhPSBudWxsICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0ZUtleVZhbHVlcy5hZGQoIG5ldyBTdHJpbmdbXXsga2V5LCB2YWx1ZSB9ICk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGVycm9yKCAiVW5kZWZpbmVkIHNlcnZpY2UgcG9saWN5IGVsZW1lbnQsICIgKyBuYW1lICsgIiBmb3VuZC4iICk7ICAgICAgICAgICAgICAgICAgIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIFNlcnZpY2VQb2xpY3lJbXBsIG5ld1BvbGljeSA9IG5ldyBTZXJ2aWNlUG9saWN5SW1wbCggdHJ1ZSwgaWQsIHBsYXRmb3JtICk7Ci0gICAgICAKLSAgICAgIG5ld1BvbGljeS5zZXRVbnJlc29sdmVkUGFyZW50KCBwYXJlbnRJZCApOwotICAgICAgbmV3UG9saWN5LnNldFVucmVzb2x2ZWRSZWxhdGlvbnNoaXBzKCByZWxhdGlvbnNoaXBzICk7Ci0gICAgICBuZXdQb2xpY3kuc2V0RGVzY3JpcHRvciggZGVzY3JpcHRvciApOwotICAgICAgbmV3UG9saWN5LnNldEVudW1MaXN0SWQoIGVudW1MaXN0SWQgKTsKLSAgICAgIG5ld1BvbGljeS5zZXREZWZhdWx0RW51bUlkKCBkZWZhdWx0RW51bUlkICk7Ci0gICAgICBwb2xpY3lNYXAucHV0KCBpZCwgbmV3UG9saWN5ICk7Ci0gICAgICAKLSAgICAgIFBvbGljeVN0YXRlSW1wbCBwb2xpY3lTdGF0ZSA9IChQb2xpY3lTdGF0ZUltcGwpbmV3UG9saWN5LmdldFBvbGljeVN0YXRlKCk7Ci0gICAgICAKLSAgICAgIC8vIFRlbXBvcmFyaWx5IGFsbG93IHRoZSBzdGF0ZSB0byBiZSB1cGRhdGVkIGZvciBzdGF0aWMgc3RhdGUgcHJvdmlkZWQKLSAgICAgIC8vIGJ5IHRoZSBleHRlbmRlci4KLSAgICAgIHBvbGljeVN0YXRlLmludGVybmFsU2V0TXV0YWJsZSggdHJ1ZSApOwotICAgICAgCi0gICAgICBmb3IoIFN0cmluZ1tdIGtleVZhbHVlIDogc3RhdGVLZXlWYWx1ZXMgKQotICAgICAgewotICAgICAgICBwb2xpY3lTdGF0ZS5wdXRWYWx1ZSgga2V5VmFsdWVbMF0sIGtleVZhbHVlWzFdICk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIHBvbGljeVN0YXRlLmludGVybmFsU2V0TXV0YWJsZSggbXV0YWJsZSApOwotICAgIH0KLSAgICBjYXRjaCggSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgZXJyb3IoICJBbiBlcnJvciB3YXMgZm91bmQgbG9hZGluZyBhIHNlcnZpY2UgcG9saWN5LiIgKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgfQotICAgIAotICBwcml2YXRlIHZvaWQgbG9hZFJlbGF0aW9uc2hpcCggSUNvbmZpZ3VyYXRpb25FbGVtZW50IHJlbGF0aW9uc2hpcEVsZW1lbnQsIExpc3Q8VW5yZXNvbHZlZFJlbGF0aW9uc2hpcD4gcmVsYXRpb25zaGlwcyApCi0gIHsKLSAgICBTdHJpbmcgZW51bVZhbHVlQXR0ciA9IFJlZ2lzdHJ5VXRpbHMuZ2V0QXR0cmlidXRlKCByZWxhdGlvbnNoaXBFbGVtZW50LCAiZW51bWxpc3QiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAKLSAgICBpZiggZW51bVZhbHVlQXR0ciA9PSBudWxsICkKLSAgICB7Ci0gICAgICBlcnJvciggIlNlcnZpY2UgcG9saWN5IHJlbGF0aW9uc2hpcCBtaXNzaW5nIGF0dHJpYnV0ZSBcImVudW1MaXN0XCIuIiApOyAvLyROT04tTkxTLTEkCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7Ci0gICAgfQotICAgIAotICAgIExpc3Q8U3RyaW5nPiAgICAgICAgICAgICAgICAgICAgICAgc291cmNlRW51bUxpc3QgICAgICAgICA9IEFycmF5cy5hc0xpc3QoIGVudW1WYWx1ZUF0dHIuc3BsaXQoICIgIiApICk7IC8vJE5PTi1OTFMtMSQKLSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSAgICAgICAgICAgIGNoaWxkcmVuICAgICAgICAgICAgICAgPSByZWxhdGlvbnNoaXBFbGVtZW50LmdldENoaWxkcmVuKCk7Ci0gICAgTGlzdDxVbnJlc29sdmVkUG9saWN5UmVsYXRpb25zaGlwPiB0YXJnZXRSZWxhdGlvbnNoaXBMaXN0ID0gbmV3IFZlY3RvcjxVbnJlc29sdmVkUG9saWN5UmVsYXRpb25zaGlwPigpOwotICAgIAotICAgIGZvciggSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNoaWxkIDogY2hpbGRyZW4gKQotICAgIHsKLSAgICAgIFN0cmluZyBuYW1lID0gY2hpbGQuZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCBMb2NhbGUuRU5HTElTSCApOwotICAgICAgCi0gICAgICBpZiggbmFtZS5lcXVhbHMoICJ0YXJnZXRwb2xpY3kiICkgKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIGxvYWRQb2xpY3lSZWxhdGlvbnNoaXAoIGNoaWxkLCB0YXJnZXRSZWxhdGlvbnNoaXBMaXN0ICk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGVycm9yKCAiVW5kZWZpbmVkIHNlcnZpY2UgcG9saWN5IGVsZW1lbnQsICIgKyBuYW1lICsgIiBmb3VuZC4iICk7ICAgICAgICAgICAgICAgICAgIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICAgfQotICAgIH0KLSAgICAKLSAgICBVbnJlc29sdmVkUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcCA9IG5ldyBVbnJlc29sdmVkUmVsYXRpb25zaGlwKCBzb3VyY2VFbnVtTGlzdCwgdGFyZ2V0UmVsYXRpb25zaGlwTGlzdCApOwotICAgIAotICAgIHJlbGF0aW9uc2hpcHMuYWRkKCByZWxhdGlvbnNoaXAgKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGxvYWRQb2xpY3lSZWxhdGlvbnNoaXAoIElDb25maWd1cmF0aW9uRWxlbWVudCBwb2xpY3lFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdDxVbnJlc29sdmVkUG9saWN5UmVsYXRpb25zaGlwPiBwb2xpY3lSZWxhdGlvbnNoaXBMaXN0ICkKLSAgewotICAgIFN0cmluZyBpdGVtTGlzdEF0dHIgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggcG9saWN5RWxlbWVudCwgIml0ZW1saXN0IiApOyAvLyROT04tTkxTLTEkCi0gICAgU3RyaW5nIHBvbGljeUlkICAgICAgPSBSZWdpc3RyeVV0aWxzLmdldEF0dHJpYnV0ZSggcG9saWN5RWxlbWVudCwgImlkIiApOyAvLyROT04tTkxTLTEkCi0gICAgCi0gICAgaWYoIGl0ZW1MaXN0QXR0ciA9PSBudWxsICkKLSAgICB7Ci0gICAgICBlcnJvciggIlNlcnZpY2UgcG9saWN5IHJlbGF0aW9uc2hpcCBtaXNzaW5nIGF0dHJpYnV0ZSBcImVudW1MaXN0XCIuIiApOyAvLyROT04tTkxTLTEkCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7Ci0gICAgfQotICAgIAotICAgIGlmKCBwb2xpY3lJZCA9PSBudWxsICkKLSAgICB7Ci0gICAgICBlcnJvciggIlNlcnZpY2UgcG9saWN5IHJlbGF0aW9uc2hpcCBtaXNzaW5nIGF0dHJpYnV0ZSBcImlkXCIuIiApOyAvLyROT04tTkxTLTEkCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7Ci0gICAgfQotICAgIAotICAgIExpc3Q8U3RyaW5nPiAgICAgICAgICAgICAgICAgdGFyZ2V0RW51bUxpc3QgICAgID0gQXJyYXlzLmFzTGlzdCggaXRlbUxpc3RBdHRyLnNwbGl0KCAiICIgKSApOyAvLyROT04tTkxTLTEkCi0gICAgVW5yZXNvbHZlZFBvbGljeVJlbGF0aW9uc2hpcCBwb2xpY3lSZWxhdGlvbnNoaXAgPSBuZXcgVW5yZXNvbHZlZFBvbGljeVJlbGF0aW9uc2hpcCggcG9saWN5SWQsIHRhcmdldEVudW1MaXN0ICk7Ci0gICAgCi0gICAgcG9saWN5UmVsYXRpb25zaGlwTGlzdC5hZGQoIHBvbGljeVJlbGF0aW9uc2hpcCApOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgZXJyb3IoIFN0cmluZyBtZXNzYWdlICkKLSAgewotICAgIFNlcnZpY2VQb2xpY3lBY3RpdmF0b3IubG9nRXJyb3IoIG1lc3NhZ2UsIG51bGwgKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL2ludGVybmFsL3BvbGljeS9TdGF0ZUVudW1lcmF0aW9uSXRlbUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvU3RhdGVFbnVtZXJhdGlvbkl0ZW1JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZTIyOTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL2ludGVybmFsL3BvbGljeS9TdGF0ZUVudW1lcmF0aW9uSXRlbUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UuaW50ZXJuYWwucG9saWN5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTdGF0ZUVudW1lcmF0aW9uSXRlbTsKLQotcHVibGljIGNsYXNzIFN0YXRlRW51bWVyYXRpb25JdGVtSW1wbCBpbXBsZW1lbnRzIElTdGF0ZUVudW1lcmF0aW9uSXRlbQotewotICBwcml2YXRlIFN0cmluZyAgaWQ7Ci0gIHByaXZhdGUgU3RyaW5nICBzaG9ydE5hbWU7Ci0gIHByaXZhdGUgU3RyaW5nICBsb25nTmFtZTsKLSAgcHJpdmF0ZSBib29sZWFuIGlzRGVmYXVsdCA9IGZhbHNlOwotICAKLSAgcHVibGljIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICByZXR1cm4gaWQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRJZChTdHJpbmcgaWQpCi0gIHsKLSAgICB0aGlzLmlkID0gaWQ7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNob3J0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gc2hvcnROYW1lOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRTaG9ydE5hbWUoU3RyaW5nIHNob3J0TmFtZSkKLSAgewotICAgIHRoaXMuc2hvcnROYW1lID0gc2hvcnROYW1lOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldExvbmdOYW1lKCkKLSAgewotICAgIHJldHVybiBsb25nTmFtZTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0TG9uZ05hbWUoU3RyaW5nIGxvbmdOYW1lKQotICB7Ci0gICAgdGhpcy5sb25nTmFtZSA9IGxvbmdOYW1lOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNEZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBpc0RlZmF1bHQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXREZWZhdWx0KGJvb2xlYW4gaXNEZWZhdWx0KQotICB7Ci0gICAgdGhpcy5pc0RlZmF1bHQgPSBpc0RlZmF1bHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvVW5yZXNvbHZlZFBvbGljeVJlbGF0aW9uc2hpcC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL2ludGVybmFsL3BvbGljeS9VbnJlc29sdmVkUG9saWN5UmVsYXRpb25zaGlwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyN2Q3NGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL2ludGVybmFsL3BvbGljeS9VbnJlc29sdmVkUG9saWN5UmVsYXRpb25zaGlwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLmludGVybmFsLnBvbGljeTsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1wdWJsaWMgY2xhc3MgVW5yZXNvbHZlZFBvbGljeVJlbGF0aW9uc2hpcAotewotICBwcml2YXRlIFN0cmluZyAgICAgICBwb2xpY3lJZDsKLSAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gZW51bUxpc3Q7Ci0gIAotICBwdWJsaWMgVW5yZXNvbHZlZFBvbGljeVJlbGF0aW9uc2hpcCggU3RyaW5nIHBvbGljeUlkLCBMaXN0PFN0cmluZz4gZW51bUxpc3QgKQotICB7Ci0gICAgdGhpcy5wb2xpY3lJZCA9IHBvbGljeUlkOwotICAgIHRoaXMuZW51bUxpc3QgPSBlbnVtTGlzdDsKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRQb2xpY3lJZCgpCi0gIHsKLSAgICByZXR1cm4gcG9saWN5SWQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0RW51bUxpc3QoKQotICB7Ci0gICAgcmV0dXJuIGVudW1MaXN0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvaW50ZXJuYWwvcG9saWN5L1VucmVzb2x2ZWRSZWxhdGlvbnNoaXAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvVW5yZXNvbHZlZFJlbGF0aW9uc2hpcC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTE5ZjY4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9pbnRlcm5hbC9wb2xpY3kvVW5yZXNvbHZlZFJlbGF0aW9uc2hpcC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5pbnRlcm5hbC5wb2xpY3k7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotcHVibGljIGNsYXNzIFVucmVzb2x2ZWRSZWxhdGlvbnNoaXAgCi17Ci0gIHByaXZhdGUgTGlzdDxTdHJpbmc+IHNvdXJjZUVudW1lcmF0aW9uTGlzdDsKLSAgcHJpdmF0ZSBMaXN0PFVucmVzb2x2ZWRQb2xpY3lSZWxhdGlvbnNoaXA+IHRhcmdldEVudW1lcmF0aW9uTGlzdDsKLSAgCi0gIHB1YmxpYyBVbnJlc29sdmVkUmVsYXRpb25zaGlwKCBMaXN0PFN0cmluZz4gc291cmNlRW51bWVyYXRpb25MaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdDxVbnJlc29sdmVkUG9saWN5UmVsYXRpb25zaGlwPiB0YXJnZXRFbnVtZXJhdGlvbkxpc3QgKQotICB7Ci0gICAgdGhpcy5zb3VyY2VFbnVtZXJhdGlvbkxpc3QgPSBzb3VyY2VFbnVtZXJhdGlvbkxpc3Q7Ci0gICAgdGhpcy50YXJnZXRFbnVtZXJhdGlvbkxpc3QgPSB0YXJnZXRFbnVtZXJhdGlvbkxpc3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0U291cmNlRW51bWVyYXRpb25MaXN0KCkKLSAgewotICAgIHJldHVybiBzb3VyY2VFbnVtZXJhdGlvbkxpc3Q7Ci0gIH0KLSAgCi0gIHB1YmxpYyBMaXN0PFVucmVzb2x2ZWRQb2xpY3lSZWxhdGlvbnNoaXA+IGdldFRhcmdldEVudW1lcmF0aW9uTGlzdCgpCi0gIHsKLSAgICByZXR1cm4gdGFyZ2V0RW51bWVyYXRpb25MaXN0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYWUxYTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDUxNSAgICAgICAgICBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5OwotCi0vKioKLSAqIAotICogVGhpcyBpbnRlcmZhY2UgZW5jYXBzdWxhdGVzIHRoZSBpZGVhIG9mIGEgZGVzY3JpcHRpb24gZm9yIGEgc2VydmljZSBwb2xpY3kuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElEZXNjcmlwdG9yCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzaG9ydCBuYW1lIGZvciB0aGUgZGVzY3JpcHRvcgotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIHNob3J0IG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNob3J0TmFtZSgpOwotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIHNob3J0IG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yLgotICAgKiBAcGFyYW0gbmFtZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2hvcnROYW1lKFN0cmluZyBuYW1lKTsKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBsb25nIG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yLgotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGxvbmcgbmFtZSBmb3IgdGhlIGRlc2NyaXB0b3IuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldExvbmdOYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIGxvbmcgbmFtZSBmb3IgdGhlIGRlc2NyaXB0b3IuCi0gICAqIEBwYXJhbSBsb25nTmFtZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9uZ05hbWUoU3RyaW5nIGxvbmdOYW1lKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgZGVzY3JpcHRpb24gZm9yIHRoaXMgZGVzY3JpcHRvci4KLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBkZXNjcmlwdG9yLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbigpOwotICAKLSAgLyoqCi0gICAqIFNldHMgdGhlIGRlc2NyaXB0aW9uIGZvciB0aGlzIGRlc2NyaXB0b3IuCi0gICAqIEBwYXJhbSBkZXNjcmlwdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RGVzY3JpcHRpb24oU3RyaW5nIGRlc2NyaXB0aW9uKTsKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpY29uIHBhdGggcmVsYXRpdmUgdG8gYW4gaWNvbiBidW5kbGUuCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgaWNvbiBwYXRoIGZvciB0aGlzIGRlc2NyaXB0b3IuICBUaGlzIHBhdGgKLSAgICogaXMgcmVsYXRpdmUgdG8gdGhlIHBsdWdpbiBzcGVjaWZpZWQgYnkgdGhlIGljb24gYnVuZGxlIGlkLiAgVGhpcwotICAgKiBtZXRob2QgbWF5IHJldHVybiBudWxsIGlmIHRoZXJlIGlzIG5vIGljb24gZm9yIHRoaXMgZGVzY3JpcHRvci4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SWNvblBhdGgoKTsKLSAgCi0gIC8qKgotICAgKiBTZXRzIHRoZSBpY29uIHBhdGNoIGZvciB0aGlzIGRlc2NyaXB0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gaWNvblBhdGgKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEljb25QYXRoKFN0cmluZyBpY29uUGF0aCk7Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgaWNvbiBidW5kbGUgaWQuCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgYnVuZGxlIElEIG9mIGEgcGx1Z2luIHRoYXQgY29udGFpbnMgYW4gaWNvbi4gIFRoaXMKLSAgICogbWV0aG9kIG1heSByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBpY29uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlc2NyaXB0b3IuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEljb25CdW5kbGVJZCgpOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBTZXRzIHRoZSBpY29uIGJ1bmRsZSBpZCBmb3IgdGhpcyBkZXNjcmlwdG9yLgotICAgKiAKLSAgICogQHBhcmFtIGljb25CdW5kbGVJZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SWNvbkJ1bmRsZUlkKFN0cmluZyBpY29uQnVuZGxlSWQpOwotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGNvbnRleHQgaGVscCBpZC4KLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBjb250ZXh0IGhlbHAgaWQgZm9yIHRoaXMgZGVzY3JpcHRvci4gIFRoaXMgbWV0aG9kCi0gICAqIG1heSByZXR1cm4gbnVsbCBpZiBubyBjb250ZXh0IGhhcyBiZWVuIHNwZWNpZmllZC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29udGV4dEhlbHBJZCgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBjb250ZXh0IGhlbHAgaWQgZm9yIHRoaXMgZGVzY3JpcHRvci4KLSAgICogCi0gICAqIEBwYXJhbSBjb250ZXh0SGVscElkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb250ZXh0SGVscElkKFN0cmluZyBjb250ZXh0SGVscElkKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NDhmZjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA1MTUgICAgICAgICAgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTsKLQotLyoqCi0gKiAKLSAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZmlsdGVyIHNlcnZpY2UgcG9saWNpZXMuCi0gKgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElGaWx0ZXIKLXsKLSAgLyoqCi0gICAqIERldGVybWluZXMgaWYgYSBwb2xpY3kgc2hvdWxkIGJlIGFjY2VwdGVkIG9yIG5vdC4KLSAgICogCi0gICAqIEBwYXJhbSBwb2xpY3kgdGhlIHNlcnZpY2UgcG9saWN5LgotICAgKiBAcmV0dXJuIHJldHVybnMgdHJ1ZSBpZiB0aGlzIHBvbGljeSBpcyBhY2NlcHRlZCBieSB0aGUgZmlsdGVyLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gYWNjZXB0KCBJU2VydmljZVBvbGljeSBwb2xpY3kgKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlODM5YjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA1MTUgICAgICAgICAgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi0vKioKLSAqIAotICogVGhpcyBpbnRlcmZhY2UgZW5jYXBzdWxhdGVzIHRoZSBjb21iaW5hdGlvbiBvZiBhIHBvbGljeSBhbmQgYSBsaXN0Ci0gKiBvZiBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtcy4gIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgd2l0aCB0aGUgSVBvbGljeVJlbGF0aW9uc2hpcAotICogaW50ZXJmYWNlLgotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJUG9saWN5RW51bWVyYXRpb25MaXN0Ci17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzZXJ2aWNlIHBvbGljeSBmb3IgdGhpcyBsaXN0LgotICAgKiBAcmV0dXJuIHJldHVybnMgYSBzZXJ2aWNlIHBvbGljeS4KLSAgICovCi0gIHB1YmxpYyBJU2VydmljZVBvbGljeSBnZXRQb2xpY3koKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB0aGUgc3RhdGUgZW51bWVyYXRpb24gbGlzdCBpdGVtcy4KLSAgICogQHJldHVybiByZXR1cm5zIGEgbGlzdCBvZiBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtcy4KLSAgICovCi0gIHB1YmxpYyBMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4gZ2V0RW51bWVyYXRpb25MaXN0KCk7ICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5UmVsYXRpb25zaGlwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NTQwYmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5UmVsYXRpb25zaGlwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA1MTYgICAyMzI2MDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQ2xlYW4gdXAgamF2YSBkb2MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotLyoqCi0gKiAKLSAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBiZXR3ZWVuCi0gKiBzZXJ2aWNlIHBvbGljaWVzLgotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJUG9saWN5UmVsYXRpb25zaGlwCi17Ci0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB0aGUgcG9saWN5IGVudW1lcmF0aW9uIGxpc3QgZm9yIHRoaXMgcmVsYXRpb25zaGlwLgotICAgKiAKLSAgICogQHJldHVybiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzb3VyY2Ugc2VydmljZSBwb2xpY3kgYWxvbmcgd2l0aCBhIGxpc3QKLSAgICogb2YgcG9zc2libGUgc3RhdGVzIHRoYXQgdGhpcyBzb3VyY2UgcG9saWN5IGNvdWxkIGJlIGluLgotICAgKi8KLSAgcHVibGljIElQb2xpY3lFbnVtZXJhdGlvbkxpc3QgZ2V0UG9saWN5RW51bWVyYXRpb25MaXN0KCk7Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVsYXRlZCBwb2xpY2llcyBmb3IgdGhpcyByZWxhdGlvbnNoaXAuCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgYSBsaXN0IG9mIG90aGVyIHRhcmdldCBzZXJ2aWNlIHBvbGljaWVzIGFuZCB0aGUgc3RhdGVzIHRoYXQKLSAgICogdGhlc2UgcG9saWNpZXMgbXVzdCBiZSBpbiB0byBzYXRpc2Z5IHRoZSByZWxhdGlvbnNoaXAuCi0gICAqLwotICBwdWJsaWMgTGlzdDxJUG9saWN5RW51bWVyYXRpb25MaXN0PiBnZXRSZWxhdGVkUG9saWNpZXMoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGJhZDBiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA1MTYgICAyMzI2MDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQ2xlYW4gdXAgamF2YSBkb2MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyOwotCi0vKioKLSAqIAotICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBzZXJ2aWNlIHBvbGljeSBleHRlbmRlcnMgdG8gc2F2ZSB0aGUgc3RhdGUgb2YKLSAqIHRoZXJlIHBvbGljaWVzLiAgTm90ZTogZXh0ZW5kZXJzIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGlmIHRoZXNlIGNoYW5nZXMKLSAqIGFyZSBjb21taXR0ZWQgb3IgZGlzY2FyZGVkLiAgVGhpcyBpcyBoYW5kbGVkIGJ5IHRoZSBmcmFtZXdvcmsuICBGb3IgZXhhbXBsZQotICogaWYgYW4gZXh0ZW5kZXIgbWFrZXMgYSBudW1iZXIgb2YgY2FsbHMgdG8gdGhlIHB1dFZhbHVlIG1ldGhvZCBhbmQgYXQgc29tZQotICogcG9pbnQgU2VydmljZVBvbGljeVBsYXRmb3JtLmRpc2NhcmQoKSBpcyBjYWxsZWQsIHRoZSBmcmFtZXdvcmsgd2lsbCBoYW5kbGUKLSAqIHRoZSBkaXNjYXJkaW5nIG9mIHRoZSBjaGFuZ2VzIG1hZGUgYnkgdGhlIHB1dFZhbHVlIG1ldGhvZCBjYWxscy4KLSAqIAotICogTm90ZTogdGhpcyBkYXRhIHdpbGwgZXZlbnR1YWxseSBiZSBzdG9yZWQgaW4gRWNsaXBzZSB3aXRoIHRoZSBmb2xsb3dpbmcga2V5OgotICogCi0gKiAgICAgc2VydmljZVBvbGljeUlkICsgIi4iICsga2V5Ci0gKiAgICAgCi0gKiAgICAgd2hlcmUgc2VydmljZVBvbGljeUlkIGlzIHRoZSB1bmlxdWUgaWQgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kgYW5kIHRoZSBrZXkKLSAqICAgICBpcyB0aGUga2V5IHNwZWNpZmllZCBpbiB0aGUgcHV0VmFsdWUgbWV0aG9kLgotICogCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVBvbGljeVN0YXRlCi17Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIERlZmF1bHRWYWx1ZUtleSA9ICJkZWZhdWx0LnZhbHVlLmtleSI7IC8vJE5PTi1OTFMtMSQKLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdGF0ZSBvZiB0aGlzIHBvbGljeSBpcyBtdXRpYmxlIG9yIG5vdC4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0cnVlIGlmIHRoZSBzdGF0ZSBvZiB0aGlzIHBvbGljeSBpcyBtdXRhYmxlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNNdXRhYmxlKCk7Ci0gIAotICAvKioKLSAgICogCi0gICAqIEBwYXJhbSBtdXRhYmxlIHNldHMgd2hldGhlciB0aGlzIHBvbGljeSBpcyBtdXRhYmxlIG9yIG5vdC4gIE5vdGU6Ci0gICAqIGlmIHRoZSBzZXJ2aWNlIHBvbGljeSBmb3IgdGhpcyBJUG9saWN5U3RhdGUgb2JqZWN0IGlzIHByZWRlZmluZWQgY2FsbGluZwotICAgKiB0aGlzIG1ldGhvZCB3aWxsIGhhdmUgbm8gZWZmZWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TXV0YWJsZSggYm9vbGVhbiBtdXRhYmxlICk7Ci0gIAotICAvKioKLSAgICogVGhpcyBtZXRob2Qgc2V0cyBzb21lIHN0YXRlIGZvciBhIHNlcnZpY2UgcG9saWN5LgotICAgKiAKLSAgICogQHBhcmFtIGtleSBhIGtleSBmb3IgdGhpcyBwb2xpY3kgc3RhdGUuCi0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgb2YgdGhlIHBvbGljeSBzdGF0ZS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHB1dFZhbHVlKCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUgKTsKLSAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBnZXRzIHNvbWUgc3RhdGUgZm9yIGEgc2VydmljZSBwb2xpY3kuICBJZiB0aGVyZQotICAgKiBpcyBubyBwZXJzaXN0ZWQgdmFsdWUgZm9yIHRoaXMga2V5IHRoZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUKLSAgICogcmV0dXJuZWQuICBJZiB0aGVyZSBpcyBubyBkZWZhdWx0IHZhbHVlIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KLSAgICogCi0gICAqIEBwYXJhbSBrZXkgYSBrZXkgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBrZXkgc3BlY2lmaWVkLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRWYWx1ZSggU3RyaW5nIGtleSApOwotICAKLSAgLyoqCi0gICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGRlZmF1bHQgZm9yIGEgcGFydGljdWxhciBrZXkuICAKLSAgICogCi0gICAqIEBwYXJhbSBrZXkgdGhlIGtleQotICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIHRoZSBkZWZhdWx0IHZhbHVlLgotICAgKiBAcGFyYW0gb3ZlcnJpZGVFeGlzdGluZyBpbmRpY2F0ZXMgaWYgYSBleGlzdGluZyBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSBvdmVycmlkZGVuLgotICAgKi8KLSAgcHVibGljIHZvaWQgcHV0RGVmYXVsdFZhbHVlKCBTdHJpbmcga2V5LCBTdHJpbmcgZGVmYXVsdFZhbHVlLCBib29sZWFuIG92ZXJyaWRlRXhpc3RpbmcgKTsKLSAgCi0gIC8qKgotICAgKiBBZGRzIGEgcG9saWN5IHN0YXRlIGNoYW5nZSBsaXN0ZW5lciB0byB0aGlzIHNlcnZpY2UgcG9saWN5LgotICAgKiAKLSAgICogQHBhcmFtIGxpc3RlbmVyIHRoZSBsaXN0ZW5lcgotICAgKiBAcGFyYW0gbm90aWZ5T25seU9uQ29tbWl0IGluZGljYXRlcyBpZiB0aGlzIGxpc3RlbmVyIHNob3VsZCBiZQotICAgKiBjYWxsZWQgZm9yIGFsbCBzdGF0ZSBjaGFuZ2VzIG9yIG9ubHkgd2hlbiB0aGUgc3RhdGUgZGF0YSBpcwotICAgKiBjb21taXR0ZWQuIAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lciggSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIsIGJvb2xlYW4gbm90aWZ5T25seU9uQ29tbWl0ICk7Ci0gIAotICAvKioKLSAgICogUmVtb3ZlcyBhIHBvbGljeSBzdGF0ZSBjaGFuZ2UgbGlzdGVuZXIgZnJvbSB0aGlzIHNlcnZpY2UgcG9saWN5LgotICAgKiAKLSAgICogQHBhcmFtIGxpc3RlbmVyCi0gICAqLwotICBwdWJsaWMgdm9pZCByZW1vdmVQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKCBJUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lciApOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDExNmQ3NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDMyNSAgIDIyMjA5NSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDUxNiAgIDIzMjYwMyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBDbGVhbiB1cCBqYXZhIGRvYwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTsKLQotLyoqCi0gKiAKLSAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBzdGF0ZSB3aGVuIGFuIGVudW1lcmF0aW9uIGlzIHVzZWQKLSAqIHRvIHBlcnNpc3Qgc3RhdGUuICAKLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVBvbGljeVN0YXRlRW51bQotewotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBUUlVFX0VOVU0gID0gIm9yZy5lY2xpcHNlLndzdC50cnVlIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgRkFMU0VfRU5VTSA9ICJvcmcuZWNsaXBzZS53c3QuZmFsc2UiOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSBlbnVtZXJhdGlvbiBpZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXJ2aWNlIHBvbGljeS4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgZW51bWVyYXRpb24gaWQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2VydmljZSBwb2xpY3kuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEVudW1JZCgpOwotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGRlZmF1bHQgZW51bSBpdGVtIGZvciB0aGlzIGVudW1lcmF0aW9uLgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBkZWZhdWx0IGVudW0gaXRlbSBmb3IgdGhpcyBlbnVtZXJhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdElkKCk7Ci0gIAotICAvKioKLSAgICogU2V0cyB0aGUgY3VycmVudCBlbnVtIGl0ZW0uICBUaGlzIGVudW0gaXRlbSBpZCBuZWVkcyB0byBiZSBhbmQgZW51bSBpdGVtCi0gICAqIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVudW1lcmF0aW9uLgotICAgKiBAcGFyYW0gaXRlbUlkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDdXJyZW50SXRlbSggU3RyaW5nIGl0ZW1JZCApOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGVudW0gaXRlbS4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgY3VycmVudCBlbnVtIGl0ZW0uCi0gICAqLwotICBwdWJsaWMgSVN0YXRlRW51bWVyYXRpb25JdGVtIGdldEN1cnJlbnRJdGVtKCk7IAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjRmMzIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA1MTYgICAyMzI2MDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQ2xlYW4gdXAgamF2YSBkb2MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI7Ci0KLS8qKgotICogCi0gKiBUaGlzIGludGVyZmFjZSBlbmNhcHN1bGF0ZXMgdGhlIGlkZWEgb2YgYSBzZXJ2aWNlIHBvbGljeQotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJU2VydmljZVBvbGljeQoteyAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIGlmIHRoaXMgc2VydmljZSBwb2xpY3kgaXMgZGVmaW5lZCBieSBhbiBleHRlbnNpb24gb3Igbm90LgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRydWUgaWYgdGhpcyBTZXJ2aWNlIHBvbGljeSBpcyBkZWZpbmVkIGluIHBsdWdpbi54bWwgCi0gICAqIG1ldGEgZGF0YS4gIE90aGVyd2lzZSwgZmFsc2UgaXMgcmV0dXJuZWQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1ByZWRlZmluZWQoKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB0aGUgdW5pcXVlIElEIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSB1bmlxdWUgSUQgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldElkKCk7Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgdGhlIGRlc2NyaXB0b3IgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGRlc2NyaXB0b3IgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi0gICAqLwotICBwdWJsaWMgSURlc2NyaXB0b3IgZ2V0RGVzY3JpcHRvcigpOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIGEgbGlzdCBvZiByZWxhdGlvbnNoaXBzIHRvIG90aGVyIElTZXJ2aWNlUG9saWN5IG9iamVjdHMuCi0gICAqICAgCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIGxpc3Qgb2YgcmVsYXRpb25zaGlwcyB0byBvdGhlciBJU2VydmljZVBvbGljeSBvYmplY3RzLiAgCi0gICAqICAKLSAgICovCi0gIHB1YmxpYyBMaXN0PElQb2xpY3lSZWxhdGlvbnNoaXA+IGdldFJlbGF0aW9uc2hpcHMoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgcmVsYXRpb25zaGlwcyBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS4KLSAgICogCi0gICAqIEBwYXJhbSByZWxhdGlvbnNoaXBzCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZWxhdGlvbnNoaXBzKCBMaXN0PElQb2xpY3lSZWxhdGlvbnNoaXA+IHJlbGF0aW9uc2hpcHMgKTsKLSAgCi0gIC8qKgotICAgKiBSZXN0b3JlcyB0aGUgcG9saWN5IHRvIGl0cyBvcmlnaW5hbCBzdGF0ZS4gIEFsbCBsb2NhbGx5IGFkZGVkCi0gICAqIGNoaWxkIHBvbGljaWVzIHdpbGwgYmUgcmVtb3ZlZC4gIFRoZSBzdGF0ZSBvZiBlYWNoIHBvbGljeSB3aWxsCi0gICAqIGJlIHNldCB0byBpcyBkZWZhdWx0IHZhbHVlLiAgIE5vdGU6IHRoZSBjaGFuZ2VzIG1hZGUgY2FsbGluZwotICAgKiB0aGlzIG1ldGhvZCBjYW4gYmUgdW5kb25lIGlmIHRoZSBwbGF0Zm9ybSBwZXJmb3JtcyBhIGRpc2NhcmRDaGFuZ2VzCi0gICAqIG9wZXJhdGlvbi4gIEFsdGVybmF0aXZlbHksIGlmIHRoZSBwbGFmb3JtIHBlcmZvcm1zIGEgY29tbWl0Q2hhbmdlcwotICAgKiBvcGVyYXRpb24gdGhlc2UgY2hhbmdlcyB3aWxsIGJlIHNhdmVkLgotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdG9yZURlZmF1bHRzKCk7Ci0gIAotICAvKioKLSAgICogUmVzdG9yZXMgdGhlIHBvbGljeSB0byBpdHMgb3JpZ2luYWwgc3RhdGUgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LiAgCi0gICAqIFRoZSBzdGF0ZSBvZiBlYWNoIHBvbGljeSB3aWxsIGJlIHNldCB0byBpcyBkZWZhdWx0IHZhbHVlLiAgIAotICAgKiBOb3RlOiB0aGUgY2hhbmdlcyBtYWRlIGNhbGxpbmcKLSAgICogdGhpcyBtZXRob2QgY2FuIGJlIHVuZG9uZSBpZiB0aGUgcGxhdGZvcm0gcGVyZm9ybXMgYSBkaXNjYXJkQ2hhbmdlcwotICAgKiBvcGVyYXRpb24uICBBbHRlcm5hdGl2ZWx5LCBpZiB0aGUgcGxhZm9ybSBwZXJmb3JtcyBhIGNvbW1pdENoYW5nZXMKLSAgICogb3BlcmF0aW9uIHRoZXNlIGNoYW5nZXMgd2lsbCBiZSBzYXZlZC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlc3RvcmVEZWZhdWx0cyggSVByb2plY3QgcHJvamVjdCApOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSBwb2xpY3kgc3RhdGUgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIHBvbGljeSBzdGF0ZSBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS4KLSAgICovCi0gIHB1YmxpYyBJUG9saWN5U3RhdGUgZ2V0UG9saWN5U3RhdGUoKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB0aGUgSVBvbGljeVN0YXRlIGZvciBhIHBhcnRpY3VsYXIgcHJvamVjdC4KLSAgICogCi0gICAqIEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0LgotICAgKiBAcmV0dXJuIFRoZSBJUG9saWN5U3RhdGUgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LgotICAgKi8KLSAgcHVibGljIElQb2xpY3lTdGF0ZSBnZXRQb2xpY3lTdGF0ZSggSVByb2plY3QgcHJvamVjdCApOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSBwb2xpY3kgc3RhdGUgZW51bWVyYXRpb24gb2JqZWN0LiAgTm90ZTogdGhpcyBpcyBqdXN0Ci0gICAqIGEgd3JhcHBlciBhcm91bmQgdGhlIHBvbGljeSBzdGF0ZSBvYmplY3QuCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIHN0YXRlIGVudW1lcmF0aW9uIG9iamVjdCBmb3IgdGhpcyBzZXJ2aWNlCi0gICAqIHBvbGljeS4gIElmIHRoaXMgcG9saWN5IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW4gZW51bWVyYXRpb24KLSAgICogbnVsbCB3aWxsIGJlIHJldHVybmVkLgotICAgKi8KLSAgcHVibGljIElQb2xpY3lTdGF0ZUVudW0gZ2V0UG9saWN5U3RhdGVFbnVtKCk7Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgdGhlIHBvbGljeSBzdGF0ZSBlbnVtZXJhdGlvbiBvYmplY3QgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LiAgCi0gICAqIE5vdGU6IHRoaXMgaXMganVzdCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBwb2xpY3kgc3RhdGUgb2JqZWN0LgotICAgKiAKLSAgICogQHBhcmFtIHByb2plY3QgdGhlIHByb2plY3QKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBzdGF0ZSBlbnVtZXJhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIHByb2plY3QuICBJZgotICAgKiBubyBzdGF0ZSBlbnVtZXJhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNlcnZpY2UgcG9saWN5Ci0gICAqIG51bGwgd2lsbCBiZSByZXR1cm5lZC4KLSAgICovCi0gIHB1YmxpYyBJUG9saWN5U3RhdGVFbnVtIGdldFBvbGljeVN0YXRlRW51bSggSVByb2plY3QgcHJvamVjdCApOwotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSBwYXJlbnQgc2VydmljZSBwb2xpY3kgb2JqZWN0LgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBwYXJlbnQgcG9saWN5IGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LiAgSWYgdGhpcwotICAgKiBzZXJ2aWNlIHBvbGljeSBoYXMgbm8gcGFyZW50IHRoZW4gbnVsbCBpcyByZXR1cm5lZC4KLSAgICovCi0gIHB1YmxpYyBJU2VydmljZVBvbGljeSBnZXRQYXJlbnRQb2xpY3koKTsKLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBjaGlsZCBzZXJ2aWNlIHBvbGljaWVzIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LiAgQ2hhbmdlcwotICAgKiBtYWRlIHRvIHRoZSByZXR1cm5lZCBsaXN0IGRvIG5vdCBjaGFuZ2UgdGhlIHVuZGVybHlpbmcgbnVtYmVyIG9mIGNoaWxkcmVuCi0gICAqIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotICAgKi8KLSAgcHVibGljIExpc3Q8SVNlcnZpY2VQb2xpY3k+IGdldENoaWxkcmVuKCk7Ci0gIAotICAvKioKLSAgICogUmVtb3ZlcyBhIGNoaWxkIHNlcnZpY2UgcG9saWN5IGZyb20gdGhpcyBzZXJ2aWNlIHBvbGljeS4gIElmIHRoZSBwb2xpY3kgc3BlY2lmaWVkCi0gICAqIGlzIG51bGwgb3IgaXMgbm90IGEgY2hpbGQgb2YgdGhpcyBzZXJ2aWNlIHBvbGljeSB0aGlzIG1ldGhvZCB3aWxsIGhhdmUgbm8gZWZmZWN0LgotICAgKiBBbHNvLCBpZiB0aGlzIHNlcnZpY2UgcG9saWN5IGlzIHByZWRlZmluZWQgY2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGhhdmUKLSAgICogbm8gZWZmZWN0LgotICAgKiBAcGFyYW0gcG9saWN5Ci0gICAqLwotICBwdWJsaWMgdm9pZCByZW1vdmVDaGlsZCggSVNlcnZpY2VQb2xpY3kgcG9saWN5ICk7Ci0gIAotICAvKioKLSAgICogQWRkcyBhIGNoaWxkIGxpc3RlbmVyIHRvIHRoaXMgc2VydmljZSBwb2xpY3kuCi0gICAqIAotICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyKCBJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lciApOwotICAKLSAgLyoqCi0gICAqIFJlbW92ZXMgYSBjaGlsZCBsaXN0ZW5lciBmcm9tIHRoaXMgc2VydmljZSBwb2xpY3kuCi0gICAqIEBwYXJhbSBsaXN0ZW5lcgotICAgKi8KLSAgcHVibGljIHZvaWQgcmVtb3ZlUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lciggSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIgKTsKLSAgCi0gIC8qKgotICAgKiBBZGRzIGEgc3RhdHVzIGNoYW5nZSBsaXN0ZW5lciB0byB0aGlzIHNlcnZpY2UgcG9saWN5LiBXaGVuIHRoZSBzdGF0dXMgY2hhbmdlcwotICAgKiB0aGlzIGxpc3RlbmVyIHdpbGwgYmUgbm90aWZpZWQuCi0gICAqICAKLSAgICogQHBhcmFtIGxpc3RlbmVyCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRTdGF0dXNDaGFuZ2VMaXN0ZW5lciggSVN0YXR1c0NoYW5nZUxpc3RlbmVyIGxpc3RlbmVyICk7Ci0gIAotICAvKioKLSAgICogUmVtb3ZlcyBhIHN0YXR1cyBjaGFuZ2UgbGlzdGVuZXIgZnJvbSB0aGlzIHNlcnZpY2UgcG9saWN5LgotICAgKiAKLSAgICogQHBhcmFtIGxpc3RlbmVyCi0gICAqLwotICBwdWJsaWMgdm9pZCByZW1vdmVTdGF0dXNDaGFuZ2VMaXN0ZW5lciggSVN0YXR1c0NoYW5nZUxpc3RlbmVyIGxpc3RlbmVyICk7Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgdGhlIHN0YXR1cyBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgc3RhdHVzIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotICAgKi8KLSAgcHVibGljIElTdGF0dXMgZ2V0U3RhdHVzKCk7Ci0gIAotICAvKioKLSAgICogU2V0cyB0aGUgc3RhdHVzIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotICAgKiAKLSAgICogQHBhcmFtIHN0YXR1cwotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U3RhdHVzKCBJU3RhdHVzIHN0YXR1cyApOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZTliYzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDUxNiAgIDIzMjYwMyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBDbGVhbiB1cCBqYXZhIGRvYwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTsKLQotLyoqCi0gKiAKLSAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZGVzY3JpYmUgYSBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtIHRoYXQgd2FzCi0gKiBkZWZpbmVkIGJ5IGFuIGVudW1lcmF0aW9uIGluIHBsdWdpbi54bWwgbWV0YSBkYXRhLgotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJU3RhdGVFbnVtZXJhdGlvbkl0ZW0KLXsgIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgdGhlIElEIG9mIHRoaXMgc3RhdGUgZW51bWVyYXRpb24gaXRlbS4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgSUQgb2YgdGhpcyBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRJZCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzaG9ydCBuYW1lIG9mIHRoaXMgc3RhdGUgZW51bWVyYXRpb24gaXRlbS4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0aGUgc2hvcnQgbmFtZSBvZiB0aGlzIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW0uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNob3J0TmFtZSgpOwotICAgIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgdGhlIGxvbmcgbmFtZSBvZiB0aGlzIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW0uCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGxvbmcgbmFtZSBvZiB0aGlzIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW0uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldExvbmdOYW1lKCk7Ci0KLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBpcyB0aGUgZGVmYXVsdCBpdGVtIG9yIG5vdC4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyB0cnVlIGlmIHRoaXMgZW51bWVyYXRpb24gaXRlbSBpcyB0aGUgZGVmYXVsdCBmb3IgdGhpcwotICAgKiBlbnVtZXJhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzRGVmYXVsdCgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQyMTI3OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDUxNiAgIDIzMjYwMyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBDbGVhbiB1cCBqYXZhIGRvYwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi0vKioKLSAqIAotICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVBvbGljeUVudW1lcmF0aW9uTGlzdCBpbnRlcmZhY2UuCi0gKgotICovCi1wdWJsaWMgY2xhc3MgUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbCBpbXBsZW1lbnRzIElQb2xpY3lFbnVtZXJhdGlvbkxpc3QKLXsKLSAgcHJpdmF0ZSBMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4gZW51bUxpc3Q7Ci0gIHByaXZhdGUgSVNlcnZpY2VQb2xpY3kgICAgICAgICAgICAgIHBvbGljeTsKLSAgCi0gIC8qKgotICAgKiBBIHNpbXBsZSBjb25zdHJ1Y3RvciBmb3IgdGhpcyBjbGFzcy4KLSAgICogCi0gICAqIEBwYXJhbSBlbnVtTGlzdAotICAgKiBAcGFyYW0gcG9saWN5Ci0gICAqLwotICBwdWJsaWMgUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbCggTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IGVudW1MaXN0LCBJU2VydmljZVBvbGljeSBwb2xpY3kgKQotICB7Ci0gICAgdGhpcy5lbnVtTGlzdCA9IGVudW1MaXN0OwotICAgIHRoaXMucG9saWN5ICAgPSBwb2xpY3k7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyBhIGxpc3Qgb2Ygc3RhdGUgZW51bWVyYXRpb24gaXRlbXMuCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgYSBsaXN0IG9mIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW1zLgotICAgKi8KLSAgcHVibGljIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPiBnZXRFbnVtZXJhdGlvbkxpc3QoKQotICB7Ci0gICAgcmV0dXJuIGVudW1MaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIGEgc2VydmljZSBwb2xpY3kuCi0gICAqIAotICAgKiBAcmV0dXJuIHJldHVybnMgYSBzZXJ2aWNlIHBvbGljeS4KLSAgICovCi0gIHB1YmxpYyBJU2VydmljZVBvbGljeSBnZXRQb2xpY3koKQotICB7Ci0gICAgcmV0dXJuIHBvbGljeTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M2Y2YyMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA4MDUxNiAgIDIzMjYwMyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBDbGVhbiB1cCBqYXZhIGRvYwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi0vKioKLSAqIAotICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVBvbGljeVJlbGF0aW9uc2hpcAotICogaW50ZXJmYWNlLgotICoKLSAqLwotcHVibGljIGNsYXNzIFBvbGljeVJlbGF0aW9uc2hpcEltcGwgaW1wbGVtZW50cyBJUG9saWN5UmVsYXRpb25zaGlwCi17Ci0gIHByaXZhdGUgSVBvbGljeUVudW1lcmF0aW9uTGlzdCAgICAgICBwb2xpY3lFbnVtZXJhdGlvbkxpc3Q7Ci0gIHByaXZhdGUgTGlzdDxJUG9saWN5RW51bWVyYXRpb25MaXN0PiByZWxhdGVkUG9saWNlczsKLSAgCi0gIHB1YmxpYyBQb2xpY3lSZWxhdGlvbnNoaXBJbXBsKCBJUG9saWN5RW51bWVyYXRpb25MaXN0ICAgICAgIHBvbGljeUVudW1lcmF0aW9uTGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Q8SVBvbGljeUVudW1lcmF0aW9uTGlzdD4gcmVsYXRlZFBvbGljaWVzICkKLSAgewotICAgIHRoaXMucG9saWN5RW51bWVyYXRpb25MaXN0ID0gcG9saWN5RW51bWVyYXRpb25MaXN0OwotICAgIHRoaXMucmVsYXRlZFBvbGljZXMgICAgICAgID0gcmVsYXRlZFBvbGljaWVzOwotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgdGhlIHBvbGljeSBlbnVtZXJhdGlvbiBsaXN0IGZvciB0aGlzIHJlbGF0aW9uc2hpcC4KLSAgICogCi0gICAqIEByZXR1cm4gVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc291cmNlIHNlcnZpY2UgcG9saWN5IGFsb25nIHdpdGggYSBsaXN0Ci0gICAqIG9mIHBvc3NpYmxlIHN0YXRlcyB0aGF0IHRoaXMgc291cmNlIHBvbGljeSBjb3VsZCBiZSBpbi4KLSAgICovCi0gIHB1YmxpYyBJUG9saWN5RW51bWVyYXRpb25MaXN0IGdldFBvbGljeUVudW1lcmF0aW9uTGlzdCgpCi0gIHsKLSAgICByZXR1cm4gcG9saWN5RW51bWVyYXRpb25MaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIHRoZSByZWxhdGVkIHBvbGljaWVzIGZvciB0aGlzIHJlbGF0aW9uc2hpcC4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIGxpc3Qgb2Ygb3RoZXIgdGFyZ2V0IHNlcnZpY2UgcG9saWNpZXMgYW5kIHRoZSBzdGF0ZXMgdGhhdAotICAgKiB0aGVzZSBwb2xpY2llcyBtdXN0IGJlIGluIHRvIHNhdGlzZnkgdGhlIHJlbGF0aW9uc2hpcC4KLSAgICovCi0gIHB1YmxpYyBMaXN0PElQb2xpY3lFbnVtZXJhdGlvbkxpc3Q+IGdldFJlbGF0ZWRQb2xpY2llcygpCi0gIHsKLSAgICByZXR1cm4gcmVsYXRlZFBvbGljZXM7Ci0gIH0gCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjFhNDM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci0KLS8qKgotICogVGhlIGFjdGl2YXRvciBjbGFzcyBjb250cm9scyB0aGUgcGx1Zy1pbiBsaWZlIGN5Y2xlCi0gKi8KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yIGV4dGVuZHMgUGx1Z2luIHsKLQotCS8vIFRoZSBwbHVnLWluIElECi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gIm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI7IC8vJE5PTi1OTFMtMSQKLQotCS8vIFRoZSBzaGFyZWQgaW5zdGFuY2UKLQlwcml2YXRlIHN0YXRpYyBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yIHBsdWdpbjsKLQkKLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IKLQkgKi8KLQlwdWJsaWMgU2VydmljZVBvbGljeUFjdGl2YXRvcigpIHsKLQl9Ci0KLQkvKgotCSAqIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW5zI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQotCSAqLwotCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0YXJ0KGNvbnRleHQpOwotCQlwbHVnaW4gPSB0aGlzOwotCX0KLQotCS8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbiNzdG9wKG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQotCSAqLwotCXB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJcGx1Z2luID0gbnVsbDsKLQkJc3VwZXIuc3RvcChjb250ZXh0KTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UKLQkgKgotCSAqIEByZXR1cm4gdGhlIHNoYXJlZCBpbnN0YW5jZQotCSAqLwotCXB1YmxpYyBzdGF0aWMgU2VydmljZVBvbGljeUFjdGl2YXRvciBnZXREZWZhdWx0KCkgewotCQlyZXR1cm4gcGx1Z2luOwotCX0KLQkKLQkvKioKLQkgKiBMb2dzIGFuIGVycm9yIHdpdGggdGhpcyBwbHVnaW4uCi0JICogCi0JICogQHBhcmFtIG1lc3NhZ2UKLQkgKiBAcGFyYW0gZXhjCi0JICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBsb2dFcnJvciggU3RyaW5nIG1lc3NhZ2UsIFRocm93YWJsZSBleGMgKQotICB7Ci0gICAgSVN0YXR1cyBzdGF0dXMgPSBuZXcgU3RhdHVzKCBJU3RhdHVzLkVSUk9SLCBQTFVHSU5fSUQsIDAsIG1lc3NhZ2UsIGV4YyApOwotICAgIAotICAgIGdldERlZmF1bHQoKS5nZXRMb2coKS5sb2coc3RhdHVzKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3N2Q3ODMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODAzMjUgICAyMjIwOTUgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA1MTYgICAyMzI2MDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQ2xlYW4gdXAgamF2YSBkb2MKLSAqIDIwMDgwNjI1ICAgMjM4NDgyIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEFkZGluZyB0aHJlYWQgc2FmZXR5IHRvIHRoZSBzZXJ2aWNlIHBsYXRmb3JtIGFwaS4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UuaW50ZXJuYWwucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXI7Ci0KLS8qKgotICogCi0gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gYWNjZXNzIGFuZCBhZGQgc2VydmljZSBwb2xpY2llcyB0byB0aGUgcGxhdGZvcm0uCi0gKgotICovCi1wdWJsaWMgY2xhc3MgU2VydmljZVBvbGljeVBsYXRmb3JtCi17Ci0gIHByaXZhdGUgc3RhdGljIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybSBpbnN0YW5jZVBsYXRmb3JtID0gbnVsbDsKLSAgcHJpdmF0ZSBTZXJ2aWNlUG9saWN5UGxhdGZvcm1JbXBsICAgIHBsYXRmb3JtSW1wbDsKLSAgCi0gIHByaXZhdGUgU2VydmljZVBvbGljeVBsYXRmb3JtKCkKLSAgewotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybS4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgU2VydmljZVBvbGljeVBsYXRmb3JtIGdldEluc3RhbmNlKCkKLSAgewotICAgIGlmKCBpbnN0YW5jZVBsYXRmb3JtID09IG51bGwgKQotICAgIHsKLSAgICAgIGluc3RhbmNlUGxhdGZvcm0gICAgICAgICAgICAgID0gbmV3IFNlcnZpY2VQb2xpY3lQbGF0Zm9ybSgpOyAgICAgCi0gICAgICBpbnN0YW5jZVBsYXRmb3JtLnBsYXRmb3JtSW1wbCA9IG5ldyBTZXJ2aWNlUG9saWN5UGxhdGZvcm1JbXBsKCBpbnN0YW5jZVBsYXRmb3JtICk7Ci0gICAgICBpbnN0YW5jZVBsYXRmb3JtLnBsYXRmb3JtSW1wbC5sb2FkKCk7Ci0gICAgICBpbnN0YW5jZVBsYXRmb3JtLnBsYXRmb3JtSW1wbC5jYWxsTG9hZExpc3RlbmVycygpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gaW5zdGFuY2VQbGF0Zm9ybTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEluZGljYXRlcyBpZiB0aGUgcHJvcGVydHkgcGFnZSBmb3IgYSBwcm9qZWN0IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBwb3B1cAotICAgKiBtZW51IG9yIG5vdC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmplY3QKLSAgICogQHJldHVybiByZXR1cm5zIHRydWUgaWYgdGhpcyBwbGF0Zm9ybSBpcyBlbmFibGVkIGZvciBzcGVjaWZpZWQgb2JqZWN0LiAgSW4gbW9zdAotICAgKiBjYXNlcyB0aGUgc3BlY2lmaWVkIG9iamVjdCB3aWxsIGJlIGFuIElQcm9qZWN0LiAgVGhpcyBtZXRob2QgaXMgdXN1YWxseSBjYWxsZWQKLSAgICogdG8gZGV0ZXJtaW5lIGlmIGEgdGhlIHNlcnZpY2UgcG9saWN5IGVudHJ5IHNob3VsZCBhcHBlYXIgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNFbmFibGVkKCBPYmplY3Qgb2JqZWN0ICkKLSAgewotICAgIHJldHVybiBwbGF0Zm9ybUltcGwuaXNFbmFibGVkKCBvYmplY3QgKTsgIAotICB9Ci0gIAotICAvKioKLSAgICogQ2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGNvbW1pdCBhbGwgdGhlIHN0YXRlIGNoYW5nZXMgdGhhdCB3ZXJlIG1hZGUgdG8gYWxsCi0gICAqIHRoZSBzZXJ2aWNlIHBvbGljaWVzLiAgVGhlIG1ldGhvZCBvbmx5IGFwcGxpZXMgdG8gc3RhdGUgY2hhbmdlcyBhdCB0aGUgd29ya3NwYWNlCi0gICAqIGxldmVsLgotICAgKi8KLSAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGNvbW1pdENoYW5nZXMoKQotICB7Ci0gICAgcGxhdGZvcm1JbXBsLmNvbW1pdENoYW5nZXMoIHRydWUgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIENhbGxpbmcgdGhpcyBtZXRob2Qgd2lsbCBkaXNjYXJkIGFsbCB0aGUgc3RhdGUgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSB0byBhbGwKLSAgICogdGhlIHNlcnZpY2UgcG9saWNpZXMuICBUaGUgbWV0aG9kIG9ubHkgYXBwbGllcyB0byBzdGF0ZSBjaGFuZ2VzIGF0IHRoZSB3b3Jrc3BhY2UKLSAgICogbGV2ZWwuCi0gICAqLwotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgZGlzY2FyZENoYW5nZXMoKQotICB7Ci0gICAgcGxhdGZvcm1JbXBsLmRpc2NhcmRDaGFuZ2VzKCk7IAotICB9Ci0gIAotICAvKioKLSAgICogQ2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGNvbW1pdCBhbGwgdGhlIHN0YXRlIGNoYW5nZXMgdGhhdCB3ZXJlIG1hZGUgdG8gYWxsCi0gICAqIHRoZSBzZXJ2aWNlIHBvbGljaWVzIGZvciBhIHBhcnRpY3VsYXIgcHJvamVjdC4gIFRoZSBtZXRob2Qgb25seSBhcHBsaWVzIHRvIAotICAgKiBzdGF0ZSBjaGFuZ2VzIGF0IHRoZSBwcm9qZWN0IGxldmVsLgotICAgKi8KLSAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGNvbW1pdENoYW5nZXMoIElQcm9qZWN0IHByb2plY3QgKQotICB7Ci0gICAgcGxhdGZvcm1JbXBsLmNvbW1pdENoYW5nZXMoIHByb2plY3QgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIENhbGxpbmcgdGhpcyBtZXRob2Qgd2lsbCBkaXNjYXJkIGFsbCB0aGUgc3RhdGUgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSB0byBhbGwKLSAgICogdGhlIHNlcnZpY2UgcG9saWNpZXMgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LiAgVGhlIG1ldGhvZCBvbmx5IGFwcGxpZXMgdG8gCi0gICAqIHN0YXRlIGNoYW5nZXMgYXQgdGhlIHByb2plY3QgbGV2ZWwuCi0gICAqLwotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgZGlzY2FyZENoYW5nZXMoIElQcm9qZWN0IHByb2plY3QgKQotICB7IAotICAgIHBsYXRmb3JtSW1wbC5kaXNjYXJkQ2hhbmdlcyggcHJvamVjdCApOyAKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIGFsbCBzZXJ2aWNlIHBvbGljeSBJRHMgdGhhdCBhcmUgZGVmaW5lZC4KLSAgICogCi0gICAqIEByZXR1cm4gcmV0dXJucyBhbGwgc2VydmljZSBwb2xpY3kgSURzIHRoYXQgYXJlIGRlZmluZWQuCi0gICAqLwotICBwdWJsaWMgU2V0PFN0cmluZz4gZ2V0QWxsUG9saWN5SWRzKCkKLSAgewotICAgIHJldHVybiBwbGF0Zm9ybUltcGwuZ2V0QWxsUG9saWN5SWRzKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogUmV0dXJucyB0aGUgbGlzdCBvZiByb290IHBvbGljaWVzIGZvciB0aGUgcGxhdGZvcm0gZ2l2ZW4gYSBmaWx0ZXIuCi0gICAqIAotICAgKiBAcGFyYW0gZmlsdGVyIGEgZmlsdGVyIGEgdGhlIHNlcnZpY2UgcG9saWNpZXMuICBUaGlzIG1ldGhvZCBtYXkgYmUgbnVsbCBpZgotICAgKiBubyBmaWx0ZXIgaXMgcmVxdWlyZWQuCi0gICAqIEByZXR1cm4gcmV0dXJucyBhbGwgcm9vdCBsZXZlbCBzZXJ2aWNlIHBvbGljaWVzLiAgSWYgYSBmaWx0ZXIgaXMgc3BlY2lmaWVkCi0gICAqIHNvbWUgc2VydmljZSBwb2xpY2llcyBtYXkgYmUgcmVtb3ZlZCBmcm9tIHRoZSByZXR1cm5lZCBsaXN0LiAgQSByb290Ci0gICAqIGxldmVsIHNlcnZpY2UgcG9saWN5IGlzIGRlZmluZWQgdG8gYmUgYSBzZXJ2aWNlIHBvbGljeSB3aXRoIG5vIHBhcmVudC4KLSAgICogCi0gICAqLwotICBwdWJsaWMgTGlzdDxJU2VydmljZVBvbGljeT4gZ2V0Um9vdFNlcnZpY2VQb2xpY2llcyggSUZpbHRlciBmaWx0ZXIgKQotICB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtSW1wbC5nZXRSb290U2VydmljZVBvbGljaWVzKCBmaWx0ZXIgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXR1cm5zIGEgc2VydmljZSBwb2xpY3kgZ2l2ZW4gaXQncyB1bmlxdWUgSUQuCi0gICAqIAotICAgKiBAcGFyYW0gaWQKLSAgICogQHJldHVybiByZXR1cm5zIGEgc2VydmljZSBwb2xpY3kgZ2l2ZW4gaXQncyB1bmlxdWUgSUQuCi0gICAqLwotICBwdWJsaWMgSVNlcnZpY2VQb2xpY3kgZ2V0U2VydmljZVBvbGljeSggU3RyaW5nIGlkICkKLSAgewotICAgIHJldHVybiBwbGF0Zm9ybUltcGwuZ2V0U2VydmljZVBvbGljeSggaWQgKTsgIAotICB9Ci0gIAotICAvKioKLSAgICogCi0gICAqIFJldHVybnMgaWYgdGhlIHBhcnRpY3VsYXIgcHJvamVjdCBoYXMgYmVlbiBlbmFibGVkIG9yIG5vdCBvbiBpdCdzCi0gICAqIHNlcnZpY2UgcG9saWN5IHByb3BlcnR5IHBhZ2UuCi0gICAqIAotICAgKiBAcGFyYW0gcHJvamVjdAotICAgKiBAcmV0dXJuIHJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHByb2plY3QgaGFzIGJlZW4gZW5hYmxlZCBmb3IKLSAgICogcHJvamVjdCBzcGVjaWZpYyBwb2xpY3kgcHJlZmVyZW5jZXMuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1Byb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQoIElQcm9qZWN0IHByb2plY3QgKQotICB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtSW1wbC5pc1Byb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQoIHByb2plY3QgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldHMgd2hldGhlciBhIHByb2plY3Qgc3BlY2lmaWMgc2VydmljZSBwb2xpY3kgcHJlZmVyZW5jZXMgaXMgZW5hYmxlZCBvciBub3QuCi0gICAqIAotICAgKiBAcGFyYW0gcHJvamVjdAotICAgKiBAcGFyYW0gdmFsdWUKLSAgICovCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXRQcm9qZWN0UHJlZmVyZW5jZXNFbmFibGVkKCBJUHJvamVjdCBwcm9qZWN0LCBib29sZWFuIHZhbHVlICkKLSAgewotICAgIHBsYXRmb3JtSW1wbC5zZXRQcm9qZWN0UHJlZmVyZW5jZXNFbmFibGVkKCBwcm9qZWN0LCB2YWx1ZSApOyAKLSAgfQotICAKLSAgLyoqCi0gICAqIFJlc3RvcmVzIHRoZSB3b3Jrc3BhY2UgbGV2ZWwgZGVmYXVsdHMuICBOb3RlOiB0aGUgc3RhdGUgY2hhbmdlcyBtYWRlIGJ5IAotICAgKiBjYWxsaW5nIHRoaXMgbWV0aG9kIG5lZWQgdG8gYmUgY29tbWl0dGVkIG9yIGRpc2NhcmRlZCBieSB0aGUgcGxhdGZvcm0uCi0gICAqLwotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcmVzdG9yZURlZmF1bHRzKCkKLSAgewotICAgIHBsYXRmb3JtSW1wbC5yZXN0b3JlRGVmYXVsdHMoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBSZXN0b3JlcyB0aGUgcHJvamVjdCBsZXZlbCBkZWZhdWx0cy4gIE5vdGU6IHRoZSBzdGF0ZSBjaGFuZ2VzIG1hZGUgYnkgCi0gICAqIGNhbGxpbmcgdGhpcyBtZXRob2QgbmVlZCB0byBiZSBjb21taXR0ZWQgb3IgZGlzY2FyZGVkIGJ5IHRoZSBwbGF0Zm9ybS4KLSAgICogCi0gICAqIEBwYXJhbSBwcm9qZWN0Ci0gICAqLwotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcmVzdG9yZURlZmF1bHRzKCBJUHJvamVjdCBwcm9qZWN0ICkKLSAgewotICAgIHBsYXRmb3JtSW1wbC5yZXN0b3JlRGVmYXVsdHMoIHByb2plY3QgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gSVNlcnZpY2VQb2xpY3kgb2JqZWN0LgotICAgKiAKLSAgICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50IHBvbGljeSBmb3IgdGhpcyBwb2xpY3kuICBJZiB0aGlzIHBvbGljeSBoYXMgbm8gCi0gICAqIHBhcmVudCBudWxsIG1heSBiZSBzcGVjaWZpZWQuCi0gICAqIEBwYXJhbSBpZCBUaGlzIGlzIGEgdW5pcXVlIGlkIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LiAgSWYgdGhlIGlkIHNwZWNpZmllZAotICAgKiBpcyBub3QgdW5pcXVlIHRyYWlsaW5nIG51bWVyaWNhbCBkaWdpdHMgaW4gdGhlIGlkIHdpbGwgYmUgc3RyaXBwZWQgb2ZmLiAgCi0gICAqIE51bWVyaWNhbCBkaWdpdHMgd2lsbCB0aGVuIGJlIGFkZGVkIHRvIGVuZCBvZiB0aGUgaWQgdG8gbWFrZSBpdCB1bmlxdWUuCi0gICAqIElmIHRoZSBpZCBpcyBlbXB0eSBvciBudWxsIHRoZSBmcmFtZXdvcmsgd2lsbCBhc3NpZ24gYSB1bmlxdWUgaWQuCi0gICAqIEBwYXJhbSBlbnVtTGlzdElkIElmIHRoaXMgcG9saWN5J3Mgc3RhdGUgaXMgZGVmaW5lZCBieSBhbiBlbnVtZXJhdGlvbgotICAgKiB0aGUgZW51bWVyYXRpb24gaWQgc2hvdWxkIGJlIHNwZWNpZmllZCBoZXJlLiAgT3RoZXJ3aXNlIG51bGwgc2hvdWxkIGJlCi0gICAqIHNwZWNpZmllZC4KLSAgICogQHBhcmFtIGRlZmF1bHRFbnVtSWQgSWYgdGhpcyBwb2xpY3kncyBzdGF0ZSBpcyBkZWZpbmVkIGJ5IGFuIGVudW1lcmF0aW9uCi0gICAqIHRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgZGVmYXVsdCB2YWx1ZS4gIFRoaXMgdmFsdWUgbWF5IGJlIG51bGwgCi0gICAqIGlmIG5vdCB1c2luZyBhbiBlbnVtZXJhdGlvbiBvciBpZiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgZW51bWVyYXRpb24KLSAgICogc2hvdWxkIGJlIHVzZWQuCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIHNlcnZpY2UgcG9saWN5IG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgSVNlcnZpY2VQb2xpY3kgY3JlYXRlU2VydmljZVBvbGljeSggSVNlcnZpY2VQb2xpY3kgcGFyZW50LCBTdHJpbmcgaWQsIFN0cmluZyBlbnVtTGlzdElkLCBTdHJpbmcgZGVmYXVsdEVudW1JZCApCi0gIHsKLSAgICByZXR1cm4gcGxhdGZvcm1JbXBsLmNyZWF0ZVNlcnZpY2VQb2xpY3koIHBhcmVudCwgaWQsIGVudW1MaXN0SWQsIGRlZmF1bHRFbnVtSWQgKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJlbW92ZXMgYSBzZXJ2aWNlIHBvbGljeSBmcm9tIHRoZSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybS4KLSAgICogCi0gICAqIEBwYXJhbSBwb2xpY3kgdGhlIHNlcnZpY2UgcG9saWN5Ci0gICAqLwotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcmVtb3ZlU2VydmljZVBvbGljeSggSVNlcnZpY2VQb2xpY3kgcG9saWN5ICkKLSAgewotICAgIHBsYXRmb3JtSW1wbC5yZW1vdmVQbGF0Zm9ybVBvbGljeSggcG9saWN5ICk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgY2FsbHMgdG8gbGlzdGVuZXIgdG8gYW55IGNoaWxkIGNoYW5nZSB0aGF0IGlzCi0gICAqIG1hZGUgaW4gdGhlIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUgaXQgaXMgCi0gICAqIGxvY2F0ZWQgaW4gdGhlIHRyZWUgb2Ygc2VydmljZSBwb2xpY2llcy4KLSAgICogCi0gICAqIEBwYXJhbSBsaXN0ZW5lcgotICAgKiBAcGFyYW0gb25Db21taXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBsaXN0ZW5lciBzaG91bGQgYmUgaW52b2tlZCB3aGVuCi0gICAqIHRoZSB0aGUgcGxhdGZvcm0gY2hhbmdlcyBhcmUgY29tbWl0dGVkLgotICAgKi8KLSAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGFkZENoaWxkQ2hhbmdlTGlzdGVuZXIoIElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyIGxpc3RlbmVyLCBib29sZWFuIG9uQ29tbWl0ICkKLSAgewotICAgIHBsYXRmb3JtSW1wbC5hZGRDaGlsZENoYW5nZUxpc3RlbmVyKCBsaXN0ZW5lciwgb25Db21taXQgKTsgIAotICB9Ci0gIAotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgY2hpbGQgY2hhbmdlIGxpc3RlbmVycyBzaG91bGQgYmUgcXVldWVkIG9yIG5vdC4gIElmCi0gICAqIHRoZXkgYXJlIHF1ZXVlZCB0aGVuIGNoaWxkIGNoYW5nZSBldmVudHMgd2lsbCBiZSBxdWV1ZSB1cCB1bnRpbCB0aGlzCi0gICAqIG1ldGhvZCBpcyBjYWxsZWQgd2l0aCBhIGZhbHNlIHBhcmFtZXRlci4gIFdoZW4gdGhpcyBoYXBwZW5zIHRoZSBjaGlsZAotICAgKiBjaGFuZ2UgZXZlbnQgbGlzdGVuZXJzIGFyZSBub3RpY2VkIG9mIGFkZCB0aGUgZXZlbnRzIHRoYXQgaGF2ZSBvY2N1cnJlZC4KLSAgICogCi0gICAqIEBwYXJhbSBxdWV1ZQotICAgKi8KLSAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHF1ZXVlQ2hpbGRDaGFuZ2VMaXN0ZW5lcnMoIGJvb2xlYW4gcXVldWUgKQotICB7Ci0gICAgcGxhdGZvcm1JbXBsLnF1ZXVlQ2hpbGRDaGFuZ2VMaXN0ZW5lcnMoIHF1ZXVlICk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZW1vdmVzIGEgY2hpbGQgY2hhbmdlIGxpc3RlbmVyIGZyb20gdGhlIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtLgotICAgKiAKLSAgICogQHBhcmFtIGxpc3RlbmVyCi0gICAqIEBwYXJhbSBvbkNvbW1pdCBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIGNoYW5nZSBsaXN0ZW5lciBzaG91bGQgYmUgcmVtb3ZlZAotICAgKiBmcm9tIHRoZSBvbkNvbW1pdCBsaXN0LgotICAgKi8KLSAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHJlbW92ZUNoaWxkQ2hhbmdlTGlzdGVuZXIoIElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyIGxpc3RlbmVyLCBib29sZWFuIG9uQ29tbWl0ICkKLSAgewotICAgIHBsYXRmb3JtSW1wbC5yZW1vdmVDaGlsZENoYW5nZUxpc3RlbmVyKCBsaXN0ZW5lciwgb25Db21taXQgKTsgICAKLSAgfQotICAKLSAgLyoqCi0gICAqIEFkZCBhIHByb2plY3QgcGxhdGZvcm0gbGlzdGVuZXIuICBXaGVuIGEgcGFydGljdWxhciBwcm9qZWN0IGlzIHJlZmVyZW5jZWQKLSAgICogYnkgaW4gdGhlIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtIHRoaXMgbGlzdGVuZXIgd2lsbCBiZSBjYWxsZWQgdGhlIGZpcnN0Ci0gICAqIHRpbWUgdGhlIHByb2plY3QgaXMgbG9hZGVkIGludG8gdGhlIHN5c3RlbS4KLSAgICogCi0gICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgbGlzdGVuZXIKLSAgICovCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBhZGRQcm9qZWN0TG9hZExpc3RlbmVyKCBJUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyIGxpc3RlbmVyICkKLSAgewotICAgIHBsYXRmb3JtSW1wbC5hZGRQcm9qZWN0TG9hZExpc3RlbmVyKCBsaXN0ZW5lciApOwotICB9Ci0gIAotICAvKioKLSAgICogUmVtb3ZlcyBhIHByb2plY3QgcGxhdGZvcm0gbGlzdGVuZXIuCi0gICAqIAotICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyCi0gICAqLwotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcmVtb3ZlUHJvamVjdExvYWRMaXN0ZW5lciggSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lciBsaXN0ZW5lciApCi0gIHsKLSAgICBwbGF0Zm9ybUltcGwucmVtb3ZlUHJvamVjdExvYWRMaXN0ZW5lciggbGlzdGVuZXIgKTsgICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHBhcmFtIGVudW1JZAotICAgKiBAcmV0dXJuIHJldHVybnMgYSBsaXN0IG9mIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW1zIGdpdmVuIHRoZSB1bmlxdWUKLSAgICogZW51bWVyYXRpb24gSUQgZm9yIHRoaXMgZW51bWVyYXRpb24uCi0gICAqLwotICBwdWJsaWMgTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IGdldFN0YXRlRW51bWVyYXRpb24oIFN0cmluZyBlbnVtSWQgKQotICB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtSW1wbC5nZXRTdGF0ZUVudW1lcmF0aW9uKCBlbnVtSWQgKTsgCi0gIH0KLSAgCi0gIC8qKgotICAgKiAKLSAgICogQHBhcmFtIHN0YXRlSXRlbUlkCi0gICAqIEByZXR1cm4gcmV0dXJucyBhIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW0gZ2l2ZW4gdGhpcyBJRCBmb3IgdGhpcyBlbnVtZXJhdGlvbgotICAgKiBpdGVtLgotICAgKi8KLSAgcHVibGljIElTdGF0ZUVudW1lcmF0aW9uSXRlbSBnZXRTdGF0ZUl0ZW1FbnVtZXJhdGlvbiggU3RyaW5nIHN0YXRlSXRlbUlkICkKLSAgewotICAgIHJldHVybiBwbGF0Zm9ybUltcGwuZ2V0U3RhdGVJdGVtRW51bWVyYXRpb24oIHN0YXRlSXRlbUlkICk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTEzNjA0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeTsKLQotcHVibGljIGludGVyZmFjZSBJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcgotewotICAvKioKLSAgICogVGhlIG1ldGhvZCBpcyBjYWxsZWQgd2l0aCBhbiBhcnJheSBvZiBjaGlsZCBjaGFuZ2VzLiAgRWFjaCBjaGlsZCBpdGVtCi0gICAqIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWRkZWQgaXRlbSBhdCB0aGUgc2FtZSBpbmRleCB2YWx1ZS4KLSAgICogCi0gICAqIEBwYXJhbSBjaGlsZCBzZXJ2aWNlIHBvbGljaWVzIHRoYXQgaGF2ZSBjaGFuZ2VkLgotICAgKiBAcGFyYW0gYWRkZWQgaW5kaWNhdGVzIGlmIHRoZSBhc3NvY2lhdGUgcG9saWN5IHdhcyBhZGRlZCBvciByZW1vdmVkLgotICAgKi8KLSAgcHVibGljIHZvaWQgY2hpbGRDaGFuZ2UoIExpc3Q8SVNlcnZpY2VQb2xpY3k+IGNoaWxkLCBMaXN0PEJvb2xlYW4+IGFkZGVkICk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDkyOWMwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwNTE2ICAgMjMyNjAzIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIENsZWFuIHVwIGphdmEgZG9jCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczsKLQotCi0vKioKLSAqIAotICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byByZWdpc3RlciBjb2RlIHRoYXQgbmVlZHMgdG8gZXhlY3V0ZSB3aGVuIHRoZQotICogc2VydmljZSBwb2xpY3kgcGxhdGZvcm0gaXMgbG9hZGVkLgotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIKLXsKLSAgLyoqCi0gICAqIENhbGxlZCBvbmNlIHdoZW4gdGhlIHNlcnZpY2UgcGxhdGZvcm0gaXMgbG9hZGVkIGluIHRoZSBzeXN0ZW0uICBUaGlzCi0gICAqIG1heSBub3QgbmVjZXNzYXJpbHkgaGFwcGVuIHdoZW4gRWNsaXBzZSBpbml0aWFsbHkgc3RhcnRzLgotICAgKi8KLSAgcHVibGljIHZvaWQgbG9hZCgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMmI1YTk0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDMyNCAgIDIyMjA5NSBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drLCBVSSBub3cgbGlzdGVucyBmb3Igc3RhdGUgY2hhbmdlcy4KLSAqIDIwMDgwNTE2ICAgMjMyNjAzIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIENsZWFuIHVwIGphdmEgZG9jCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotCi0vKioKLSAqIAotICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byByZWdpc3RlciBjb2RlIHRoYXQgbmVlZHMgdG8gbG9hZGVkIHdoZW4gYSBwYXJ0aWN1bGFyCi0gKiBwcm9qZWN0IGlzIGxvYWRlZCBpbnRvIHRoZSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybS4KLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcgotewotICAvKioKLSAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uY2Ugd2hlbiBhIHByb2plY3QgbG9hZGVkIGludG8gdGhlIHNlcnZpY2UgcG9saWN5Ci0gICAqIHBsYXRmb3JtLgotICAgKiAKLSAgICogQHBhcmFtIHByb2plY3QgdGhlIHByb2plY3QKLSAgICovCi0gIHB1YmxpYyB2b2lkIGxvYWQoIElQcm9qZWN0IHByb2plY3QgKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGFkZDExLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA1MTYgICAyMzI2MDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQ2xlYW4gdXAgamF2YSBkb2MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5OwotCi0vKioKLSAqIAotICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB3aGVuIHRoZSBkZXZlbG9wZXIgd2FudHMgdG8gbGlzdGVuZXIgdG8gc3RhdGUKLSAqIGNoYW5nZXMgZm9yIGEgcGFydGljdWxhciBzZXJ2aWNlIHBvbGljeS4KLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIKLXsKLSAgLyoqCi0gICAqIENhbGxlZCB3aGVuIGEgc3RhdGUgY2hhbmdlIGV2ZW50IG9jY3VycyBmb3IgYSBzZXJ2aWNlIHBvbGljeS4KLSAgICogCi0gICAqIEBwYXJhbSBwb2xpY3kgdGhlIHNlcnZpY2UgcG9saWN5Ci0gICAqIEBwYXJhbSBrZXkgdGhlIGtleSBvZiB0aGUgc3RhdGUgdGhhdCBjaGFuZ2VkLgotICAgKiBAcGFyYW0gb2xkVmFsdWUgdGhlIG9sZCB2YWx1ZSBvZiB0aGUgc3RhdGUgdGhhdCBjaGFuZ2VkLgotICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgc3RhdGUgdGhhdCBjaGFuZ2VkLgotICAgKi8KLSAgcHVibGljIHZvaWQgcG9saWN5U3RhdGVDaGFuZ2UoIElTZXJ2aWNlUG9saWN5IHBvbGljeSwgU3RyaW5nIGtleSwgU3RyaW5nIG9sZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUgKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lTdGF0dXNDaGFuZ2VMaXN0ZW5lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNWIzMTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODA1MTYgICAyMzI2MDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQ2xlYW4gdXAgamF2YSBkb2MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5OwotCi0vKioKLSAqIAotICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBjb2RlIHRoYXQgaXMgaW50ZXJlc3RlZCBpbiBsaXN0ZW5pbmcgdG8gc3RhdHVzCi0gKiBjaGFuZ2UgZXZlbnRzIG9mIHNlcnZpY2UgcG9saWNpZXMuIAotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJU3RhdHVzQ2hhbmdlTGlzdGVuZXIKLXsKLSAgLyoqCi0gICAqIENhbGxlZCB3aGVuIGEgc3RhdHVzIGNoYW5nZSBldmVudCBvY2N1cnMuCi0gICAqIAotICAgKiBAcGFyYW0gcG9saWN5IHRoZSBzZXJ2aWNlIHBvbGljeS4KLSAgICogQHBhcmFtIG9sZFN0YXR1cyB0aGUgb2xkIHN0YXR1cy4KLSAgICogQHBhcmFtIG5ld1N0YXR1cyB0aGUgbmV3IHN0YXR1cy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0YXR1c0NoYW5nZSggSVNlcnZpY2VQb2xpY3kgcG9saWN5LCBJU3RhdHVzIG9sZFN0YXR1cywgSVN0YXR1cyBuZXdTdGF0dXMgKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZWM4MzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDgwNDI4ICAgMjI3NTAxIHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEZpeGVkIHRvTG93ZXJDYXNlIExvY2FsZSBwcm9ibGVtLgotICogMjAwODA1MTYgICAyMzI2MDMgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29naywgQ2xlYW4gdXAgamF2YSBkb2MKLSAqIDIwMDgwOTA1ICAgMjQ2NDI4IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEFkZGVkIGljb25CdW5kbGVJZCBwYXJzaW5nLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlsczsKLQotaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLmludGVybmFsLnBvbGljeS5EZXNjcmlwdG9ySW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeUFjdGl2YXRvcjsKLQotLyoqCi0gKiAKLSAqIFRoaXMgY2xhc3MgaXMgb25seSBpbnRlbmRlZCBmb3Igb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIHBsdWdpbiB0byB1c2UuCi0gKiBJdCBjb250YWlucyBjb252ZW5pZW5jZSBtZXRob2QgZm9yIHBhcnNpbmcgdGhlIHNlcnZpY2UgcG9saWN5IGV4dGVuc2lvbiBwb2ludC4KLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBSZWdpc3RyeVV0aWxzCi17Ci0gIC8qKgotICAgKiBMb2FkcyB0aGUgYXR0cmlidXRlcyBmb3IgYSBkZXNjcmlwdG9yIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBlbGVtZW50IHRoZSBkZXNjcmlwdG9yIGVsZW1lbnQKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBkYXRhIGZvciB0aGlzIGVsZW1lbnQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIERlc2NyaXB0b3JJbXBsIGxvYWREZXNjcmlwdG9yKCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCApCi0gIHsKLSAgICBEZXNjcmlwdG9ySW1wbCBkZXNjcmlwdG9yID0gbmV3IERlc2NyaXB0b3JJbXBsKCk7Ci0gICAgCi0gICAgU3RyaW5nIHNob3J0TmFtZSAgID0gZ2V0QXR0cmlidXRlKCBlbGVtZW50LCAic2hvcnRuYW1lIiApOyAvLyROT04tTkxTLTEkCi0gICAgU3RyaW5nIGxvbmdOYW1lICAgID0gZ2V0QXR0cmlidXRlKCBlbGVtZW50LCAibG9uZ25hbWUiICk7IC8vJE5PTi1OTFMtMSQKLSAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBnZXRBdHRyaWJ1dGUoIGVsZW1lbnQsICJkZXNjcmlwdGlvbiIgKTsgLy8kTk9OLU5MUy0xJAotICAgIFN0cmluZyBpY29uUGF0aCAgICA9IGdldEF0dHJpYnV0ZSggZWxlbWVudCwgImljb25wYXRoIiApOyAvLyROT04tTkxTLTEkCi0gICAgU3RyaW5nIGNvbnRleHRIZWxwID0gZ2V0QXR0cmlidXRlKCBlbGVtZW50LCAiY29udGV4dGhlbHBpZCIgKTsgLy8kTk9OLU5MUy0xJAotICAgIAotICAgIGlmKCBzaG9ydE5hbWUgPT0gbnVsbCAmJiBsb25nTmFtZSA9PSBudWxsICkKLSAgICB7Ci0gICAgICBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmxvZ0Vycm9yKCAiU2hvcnQgbmFtZSBvciBMb25nIG5hbWUgbWlzc2luZyBmcm9tIHNlcnZpY2UgcG9saWN5IGRlc2NyaXB0b3IuIiwgbnVsbCApOyAvLyROT04tTkxTLTEkCi0gICAgfQotICAgIGVsc2UgaWYoIHNob3J0TmFtZSA9PSBudWxsICkKLSAgICB7Ci0gICAgICBzaG9ydE5hbWUgPSBsb25nTmFtZTsKLSAgICB9Ci0gICAgZWxzZSBpZiggbG9uZ05hbWUgPT0gbnVsbCApCi0gICAgewotICAgICAgbG9uZ05hbWUgPSBzaG9ydE5hbWU7Ci0gICAgfQotICAgIAotICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRpb24oIGRlc2NyaXB0aW9uICk7Ci0gICAgZGVzY3JpcHRvci5zZXRTaG9ydE5hbWUoIHNob3J0TmFtZSApOwotICAgIGRlc2NyaXB0b3Iuc2V0TG9uZ05hbWUoIGxvbmdOYW1lICk7Ci0gICAgZGVzY3JpcHRvci5zZXRDb250ZXh0SGVscElkKCBjb250ZXh0SGVscCApOwotICAgIAotICAgIGlmKCBpY29uUGF0aCAhPSBudWxsICkKLSAgICB7ICAJCi0gICAgICBTdHJpbmcgaWNvbkJ1bmRsZUlkID0gZWxlbWVudC5nZXRDb250cmlidXRvcigpLmdldE5hbWUoKTsKLSAgICAgIFN0cmluZyBwbHVnaW5QcmVmaXggPSAicGx1Z2luOi8vIjsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICBpZiggaWNvblBhdGguc3RhcnRzV2l0aCggcGx1Z2luUHJlZml4ICkgJiYgaWNvblBhdGgubGVuZ3RoKCkgPiBwbHVnaW5QcmVmaXgubGVuZ3RoKCkgKSAKLSAgICAgIHsKLSAgICAJIGludCBwbHVnaW5TbGFzaCA9IGljb25QYXRoLmluZGV4T2YoICcvJywgcGx1Z2luUHJlZml4Lmxlbmd0aCgpICk7Ci0gICAgCSAKLSAgICAJIGljb25CdW5kbGVJZCA9IGljb25QYXRoLnN1YnN0cmluZyggcGx1Z2luUHJlZml4Lmxlbmd0aCgpLCBwbHVnaW5TbGFzaCApOwotICAgIAkgaWNvblBhdGggICAgID0gaWNvblBhdGguc3Vic3RyaW5nKCBwbHVnaW5TbGFzaCArIDEgKTsgICAgICAgIAotICAgICAgfQotICAgICAgCi0gICAgICBkZXNjcmlwdG9yLnNldEljb25QYXRoKCBpY29uUGF0aCApOyAgICAgIAotICAgICAgZGVzY3JpcHRvci5zZXRJY29uQnVuZGxlSWQoIGljb25CdW5kbGVJZCApOwotICAgIH0KLSAgICAKLSAgICBkZXNjcmlwdG9yLnJlc2V0SGFzQ2hhbmdlZCgpOwotICAgIHJldHVybiBkZXNjcmlwdG9yOwotICB9Ci0gIAotICAvKioKLSAgICogVGhpcyBtZXRob2QgdGFrZXMgaW4gYSBsb3dlciBjYXNlIGF0dHJpYnV0ZSBuYW1lLiAgSXQgd2lsbCB0aGVuIHJldHVybgotICAgKiB0aGUgc2FtZSBhdHRyaWJ1dGUgbmFtZSB0aGF0IGluY2x1ZGVzIHBvdGVudGlhbGx5IHVwcGVyY2FzZSBjaGFyYWN0ZXJzLgotICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgY2xpZW50cyB0byBzcGVjaWZ5IGF0dHJpYnV0ZSBuYW1lcyBpbiBhIGNhc2UgaW5zZW5zaXRpdmUKLSAgICogZmFzaGlvbi4KLSAgICogIAotICAgKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudAotICAgKiBAcGFyYW0gYXR0cmlidXRlIHRoZSBhdHRyaWJ1dGUKLSAgICogQHJldHVybiByZXR1cm5zIHRoZSBsb3dlcmNhc2UgYXR0cmlidXRlIG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBdHRyaWJ1dGVOYW1lKCBJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIGF0dHJpYnV0ZSApCi0gIHsKLSAgICBTdHJpbmdbXSBuYW1lcyAgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5hbWVzKCk7Ci0gICAgU3RyaW5nICAgcmVzdWx0ID0gbnVsbDsKLSAgICAKLSAgICBmb3IoIFN0cmluZyBuYW1lIDogbmFtZXMgKQotICAgIHsKLSAgICAgIGlmKCBuYW1lLnRvTG93ZXJDYXNlKCBMb2NhbGUuRU5HTElTSCApLmVxdWFscyggYXR0cmlidXRlICkgKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBuYW1lOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXRzIGEgYXR0cmlidXRlIHZhbHVlIHdoZXJlIHRoZSBhdHRyaWJ1dGUgbmFtZSBpcyBjYXNlIGluc2Vuc2l0aXZlLgotICAgKiAKLSAgICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBhdHRyaWJ1dGUgdGhlIGF0dHJpYnV0ZSB0byBnZXQuCi0gICAqIEByZXR1cm4gdGhlIHZhbHVlIGZvciB0aGlzIGF0dHJpYnV0ZSBvciBudWxsIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEF0dHJpYnV0ZSggSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW1lbnQsIFN0cmluZyBhdHRyaWJ1dGUgKQotICB7Ci0gICAgU3RyaW5nW10gbmFtZXMgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5hbWVzKCk7Ci0gICAgU3RyaW5nICAgdmFsdWUgPSBudWxsOwotICAgIAotICAgIGZvciggU3RyaW5nIG5hbWUgOiBuYW1lcyApCi0gICAgewotICAgICAgaWYoIG5hbWUudG9Mb3dlckNhc2UoIExvY2FsZS5FTkdMSVNIICkuZXF1YWxzKCBhdHRyaWJ1dGUgKSApCi0gICAgICB7Ci0gICAgICAgIHZhbHVlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoIG5hbWUgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgICAgICAKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpLy5jbGFzc3BhdGggYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTczOTMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjQiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ODY3YmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotYmluCi10ZW1wLmZvbGRlcgotd3N1aS5qYXIKLWJ1aWxkLnhtbAotQGRvdAotc3JjLnppcAotamF2YUNvbXBpbGVyLi4uYXJncwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE0ODdkMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53cy51aTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNjU0YmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6Mzg6MTUgRVNUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbkluRGVwcmVjYXRlZENvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25XaGVuT3ZlcnJpZGluZ0RlcHJlY2F0ZWRNZXRob2Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGlzY291cmFnZWRSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVtcHR5U3RhdGVtZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmhpZGRlbkNhdGNoQmxvY2s9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBhdGlibGVOb25Jbmhlcml0ZWRJbnRlcmZhY2VNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBsZXRlRW51bVN3aXRjaD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5kaXJlY3RTdGF0aWNBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmxvY2FsVmFyaWFibGVIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nRGVwcmVjYXRlZEFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdTZXJpYWxWZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9FZmZlY3RBc3NpZ25tZW50PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9JbXBsaWNpdFN0cmluZ0NvbnZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub25FeHRlcm5hbGl6ZWRTdHJpbmdMaXRlcmFsPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3BlY2lhbFBhcmFtZXRlckhpZGluZ0ZpZWxkPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN0YXRpY0FjY2Vzc1JlY2VpdmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN5bnRoZXRpY0FjY2Vzc0VtdWxhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udHlwZVBhcmFtZXRlckhpZGluZz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuY2hlY2tlZFR5cGVPcGVyYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmRvY3VtZW50ZWRFbXB0eUJsb2NrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeUVsc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5VHlwZUNoZWNrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnF1YWxpZmllZEZpZWxkQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb25XaGVuT3ZlcnJpZGluZz1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRJbXBvcnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5PdmVycmlkaW5nQ29uY3JldGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUHJpdmF0ZU1lbWJlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzk2OTBjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jTW9uIEphbiAzMCAxMDozOTo0NiBFU1QgMjAwNgotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0xCi1jb21waWxlcnMucC5uby1yZXF1aXJlZC1hdHQ9MAotY29tcGlsZXJzLnAubm90LWV4dGVybmFsaXplZC1hdHQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1hdHRyaWJ1dGU9MAotY29tcGlsZXJzLnAudW5rbm93bi1jbGFzcz0wCi1jb21waWxlcnMucC51bmtub3duLWVsZW1lbnQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1yZXNvdXJjZT0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWV4LXBvaW50cz0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWltcG9ydD0wCi1jb21waWxlcnMudXNlLXByb2plY3Q9dHJ1ZQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL01FVEEtSU5GL01BTklGRVNULk1GIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYWEyMzkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLndzdC53cy51aTsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4xLjEwMC5xdWFsaWZpZXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS5wbHVnaW4uV1NVSVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLmNvbW1hbmQ7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkucGx1Z2luO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLnByZWZlcmVuY2VzO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLnV0aWxzLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS53c2kucHJlZmVyZW5jZXM7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkud3NydDt4LWludGVybmFsOj10cnVlCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UudWk7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3M7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuY29tbW9uO2J1bmRsZS12ZXJzaW9uPSJbMi4yLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS51aS5pZGU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiCi1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQotQnVuZGxlLVJlcXVpcmVkRXhlY3V0aW9uRW52aXJvbm1lbnQ6IEoyU0UtMS40CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9hYm91dC5odG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9idWlsZC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3ZWNkNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1zb3VyY2UuLiA9IHNyYy8KLW91dHB1dC4uID0gYmluLwotYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICAuLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9wbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDkyMjBkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDcwODIwICAgMTkxNTg1IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSMgMjAwNzExMDIgICAyMDg0OTEgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jCi0jIE1lc3NhZ2VzIGluIHBsdWdpbi54bWwuCi0jCi1QTFVHSU5fTkFNRT1XZWIgU2VydmljZXMgVUkKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotCi1QTFVHSU5fTkVXX0NBVEVHT1JZX05BTUVfV1M9V2ViIFNlcnZpY2VzCi1QUkVGRVJFTkNFX0NBVEVHT1JZX1dTST1XaXphcmQgVmFsaWRhdGlvbgotCi0jCi0jIFBvcHVwIGFjdGlvbiBDYXRlZ29yeQotIwotTEFCRUxfUE9QVVBfQ0FURUdPUllfV0VCX1NFUlZJQ0VTPVdlYiBTZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvcGx1Z2luLnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MTc4ZGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci08cGx1Z2luPgotCi0gICAgCTxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5wcmVmZXJlbmNlUGFnZXMiPgotCi0gICAgICA8cGFnZQotICAgICAgICAgICAgbmFtZT0iJVBMVUdJTl9ORVdfQ0FURUdPUllfTkFNRV9XUyIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkucHJlZmVyZW5jZXMuV2ViU2VydmljZXNQcmVmZXJlbmNlUGFnZSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkucHJlZmVyZW5jZXMubmFtZSI+Ci0gICAgICA8L3BhZ2U+Ci0gICAgICAKLSAgICAgIDxwYWdlCi0gICAgICAgICAgICBuYW1lPSIlUFJFRkVSRU5DRV9DQVRFR09SWV9XU0kiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLnByZWZlcmVuY2VzLm5hbWUiCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLndzaS5wcmVmZXJlbmNlcy5XU0lDb21wbGlhbmNlUHJlZmVyZW5jZVBhZ2UiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLndzaS5wcmVmZXJlbmNlcy5XaXphcmRWYWxpZGF0aW9uIj4KLSAgICAgIDwvcGFnZT4KLQotICAgPC9leHRlbnNpb24+Ci0KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5wb3B1cE1lbnVzIj4KLQotICAgICAgPCEtLSBUaGUgaWQgZm9yIHRoaXMgY2F0ZWdvcnkgc2hvdWxkIGJlIGNoYW5nZWQgZnJvbSBqc3QgdG8gd3N0IGluIHZlcnNpb24gMy4wLi0tPgotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZSIKLSAgICAgICAgICAgIGFkYXB0YWJsZT0idHJ1ZSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MudWkud2Vic2VydmljZS5jYXRlZ29yeS5wb3B1cE1lbnUiPgotICAgICAgICAgPG1lbnUKLSAgICAgICAgICAgICAgIGxhYmVsPSIlTEFCRUxfUE9QVVBfQ0FURUdPUllfV0VCX1NFUlZJQ0VTIgotICAgICAgICAgICAgICAgcGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53cy51aS53ZWJzZXJ2aWNlLmNhdGVnb3J5LnBvcHVwTWVudSI+Ci0gICAgICAgICAgICA8c2VwYXJhdG9yCi0gICAgICAgICAgICAgICAgICBuYW1lPSJwb3B1cEFjdGlvbnMiPgotICAgICAgICAgICAgPC9zZXBhcmF0b3I+Ci0gICAgICAgICA8L21lbnU+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLSAgIDwvZXh0ZW5zaW9uPiAgIAotPC9wbHVnaW4+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL1dzdFdTVUlQbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdWkvV3N0V1NVSVBsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTQ4MWIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdWkvV3N0V1NVSVBsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDYwODE2ICAgMTUxNjMyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuLCBSZW1vdmVkIHVudXNlZCBwcm9wZXJ0aWVzIGZvciAiV2FpdCBmb3Igd2l6YXJkIFdTREwgdmFsaWRhdGlvbiIKLSMgMjAwNzA0MjQgICAxODIzNzYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotIyAyMDA3MTEyMCAgIDIwOTg1OCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzLCBFbmhhbmNpbmcgc2VydmljZSBwb2xpY3kgZnJhbWV3b3JrIGFuZCBVSQotIyAyMDA4MDIwOSAgIDI1MzY4MyBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBQSUktICBDb25mdXNpbmcgZGVzY3JpcHRpb24gaW4gcHJlZmVyZW5jZXMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBNZXNzYWdlcyBpbiBwbHVnaW4ueG1sLgotIwotUExVR0lOX05BTUU9V2ViIFNlcnZpY2VzIFVJCi1QTFVHSU5fVkVORE9SPUVjbGlwc2Uub3JnCi1QTFVHSU5fREVTQz1cCi1UaGUgV2ViIHNlcnZpY2VzIEdVSSBwbHVnaW4gZGVsaXZlcnMgdGhlIGdyYXBoaWNhbCBcCi11c2VyIGludGVyZmFjZSB0byB0aGUgV2ViIHNlcnZpY2VzIGZ1bmN0aW9uIGluIHRoZSBXU1Qgc3VicHJvamVjdC4KLQotUExVR0lOX05FV19DQVRFR09SWV9OQU1FX1dTPVdlYiBTZXJ2aWNlcwotCi0KLSMKLSMgIFdTLUkgUHJlZmVyZW5jZSBwYWdlcwotIwotIyBXUy1JIENvbXBsaWFuY2UgUGFnZQotIwotUFJFRkVSRU5DRV9DQVRFR09SWV9XU0k9V1MtSSBDb21wbGlhbmNlCi1TVE9QX05PTl9XU0k9UmVxdWlyZSBjb21wbGlhbmNlCi1XQVJOX05PTl9XU0k9U3VnZ2VzdCBjb21wbGlhbmNlCi1JR05PUkVfTk9OX1dTST1JZ25vcmUgY29tcGxpYW5jZQotRk9MTE9XX1dTSV9QUkVGRVJFTkNFPUZvbGxvdyBQcmVmZXJlbmNlCi0KLVRPT0xUSVBfUFdTSV9QQUdFPVdlYiBTZXJ2aWNlcyBJbnRlcm9wZXJhYmlsaXR5Ci1UT09MVElQX1BXU0lfUkFESU9fU1RPUF9OT05fV1NJPVN0b3AgYW5kIHByb2R1Y2UgYW4gZXJyb3IgbWVzc2FnZSBpZiB5b3UgbWFrZSBhIGNob2ljZSB0aGF0IGRvZXMgbm90IGNvbXBseSB3aXRoIFdTLUkuCi1UT09MVElQX1BXU0lfUkFESU9fV0FSTklOR19OT05fV1NJPVByb2R1Y2UgYSB3YXJuaW5nIG1lc3NhZ2UgaWYgeW91IG1ha2UgYSBjaG9pY2UgdGhhdCBkb2VzIG5vdCBjb21wbHkgd2l0aCBXUy1JLgotVE9PTFRJUF9QV1NJX1JBRElPX0lHTk9SRV9OT05fV1NJPVNpbGVudGx5IGFsbG93IGNob2ljZXMgdGhhdCBkbyBub3QgY29tcGx5IHdpdGggV1MtSS4KLVRPT0xUSVBfUFdTSV9SQURJT19GT0xMT1dfV1NJX1BSRUZFUkVOQ0U9UHJvamVjdCB3b3VsZCB1c2UgV1MtSSBjb21wbGlhbmNlIGxldmVsIHNldCBpbiBXb3Jrc3BhY2UgUHJlZmVyZW5jZS4KLQotTEFCRUxfV1NJX1NTQlA9V1MtSSBTJlNCUCBjb21wbGlhbmNlIGxldmVsCi1UT09MVElQX1BXU0lfU1NCUF9MQUJFTD1XUy1JIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSBjb21wbGlhbmNlIGxldmVsCi1UT09MVElQX1BXU0lfU1NCUF9DT01CTz1DaG9vc2UgdGhlIFdTLUkgU2ltcGxlIFNPQVAgQmluZGluZyBQcm9maWxlIGNvbXBsaWFuY2UgbGV2ZWwKLQotTEFCRUxfV1NJX0FQPVdTLUkgQSZQIGNvbXBsaWFuY2UgbGV2ZWwKLVRPT0xUSVBfUFdTSV9BUF9MQUJFTD1XUy1JIEF0dGFjaG1lbnQgUHJvZmlsZSBjb21wbGlhbmNlIGxldmVsCi1UT09MVElQX1BXU0lfQVBfQ09NQk89Q2hvb3NlIHRoZSBXUy1JIEF0dGFjaG1lbnQgUHJvZmlsZSBjb21wbGlhbmNlIGxldmVsCi0KLSMKLSMJV1NETCBWYWxpZGF0aW9uCi0jCi1MQUJFTF9XU0RMVkFMPVNlbGVjdCB3aGV0aGVyIFdTREwgdmFsaWRhdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkIGJ5IHdpemFyZHMgdGhhdCBjb25zdW1lIFdTREwgZmlsZXMKLUxBQkVMX1dTRExWQUxfTk9ORT0mTm8gd2l6YXJkIFdTREwgdmFsaWRhdGlvbgotTEFCRUxfV1NETFZBTF9SRU1PVEU9V2l6YXJkIFdTREwgdmFsaWRhdGlvbiBmb3IgJnJlbW90ZSBmaWxlcyBvbmx5Ci1MQUJFTF9XU0RMVkFMX0FMTD1XaXphcmQgV1NETCB2YWxpZGF0aW9uIGZvciAmYWxsIFdTREwgZmlsZXMKLVRPT0xUSVBfUFdTSV9SQURJT19XU0RMVkFMX05PTkU9RG8gbm90IHBlcmZvcm0gV1NETCB2YWxpZGF0aW9uIG9uIHRoZSBXU0RMIGZpbGUgb3IgVVJMIGlucHV0IHRvIHRoZSBXZWIgU2VydmljZXMgd2l6YXJkCi1UT09MVElQX1BXU0lfUkFESU9fV1NETFZBTF9SRU1PVEU9T25seSBwZXJmb3JtIFdTREwgdmFsaWRhdGlvbiBvbiByZW1vdGUgV1NETCBmaWxlIG9yIFVSTCBpbnB1dCB0byB0aGUgV2ViIFNlcnZpY2VzIHdpemFyZAotVE9PTFRJUF9QV1NJX1JBRElPX1dTRExWQUxfQUxMPVBlcmZvcm0gV1NETCB2YWxpZGF0aW9uIG9uIGFsbCBXU0RMIGZpbGUgb3IgVVJMIGlucHV0IHRvIHRoZSBXZWIgU2VydmljZXMgd2l6YXJkCi1UT09MVElQX1BXU0lfV1NETFZBTF9MQUJFTD1TZWxlY3Qgd2hldGhlciBXU0RMIHZhbGlkYXRpb24gc2hvdWxkIGJlIHBlcmZvcm1lZCBieSB3aXphcmRzIHRoYXQgY29uc3VtZSBXU0RMIGZpbGVzLCBcbmZvciBleGFtcGxlLCBXZWIgU2VydmljZSB3aXphcmQgaW4gc2tlbGV0b24gc2NlbmFyaW8gYW5kIFdlYiBTZXJ2aWNlIENsaWVudCB3aXphcmQuCi0KLQotV0VCU0VSVklDRV9DQVRFR09SWV9QUkVGPUV4cGFuZCB0aGlzIHByZWZlcmVuY2VzIGNhdGVnb3J5IHRvIHNldCBzcGVjaWZpYyBXZWIgc2VydmljZXMgcHJlZmVyZW5jZXMuCi1XRUJTRVJWSUNFX0NBVEVHT1JZX1BSRUZfTElOSz1TZWUgPGEgaHJlZj1cIm9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS53c2kucHJlZmVyZW5jZXMuV1NJQ29tcGxpYW5jZVByZWZlcmVuY2VQYWdlXCI+J1NlcnZpY2UgUG9saWNpZXMnPC9hPiBmb3IgV1MtSSBjb21wbGlhbmNlIHByZWZlcmVuY2VzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdWkvV3N0V1NVSVBsdWdpbk1lc3NhZ2VzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL1dzdFdTVUlQbHVnaW5NZXNzYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDNlYzhhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdWkvV3N0V1NVSVBsdWdpbk1lc3NhZ2VzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA3MjggICAxNTE2MzIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcwNDI0ICAgMTgyMzc2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotCi1wdWJsaWMgZmluYWwgY2xhc3MgV3N0V1NVSVBsdWdpbk1lc3NhZ2VzIGV4dGVuZHMgTkxTIHsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCVU5ETEVfTkFNRSA9ICJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkuV3N0V1NVSVBsdWdpbiI7Ly8kTk9OLU5MUy0xJAotCi0JcHJpdmF0ZSBXc3RXU1VJUGx1Z2luTWVzc2FnZXMoKSB7Ci0JCS8vIERvIG5vdCBpbnN0YW50aWF0ZQotCX0KLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBMVUdJTl9OQU1FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBMVUdJTl9WRU5ET1I7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUExVR0lOX0RFU0M7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgUExVR0lOX05FV19DQVRFR09SWV9OQU1FX1dTOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdFQlNFUlZJQ0VfQ0FURUdPUllfUFJFRl9MSU5LOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFBSRUZFUkVOQ0VfQ0FURUdPUllfV1NJOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFNUT1BfTk9OX1dTSTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXQVJOX05PTl9XU0k7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgSUdOT1JFX05PTl9XU0k7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRk9MTE9XX1dTSV9QUkVGRVJFTkNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTSV9QQUdFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTSV9SQURJT19TVE9QX05PTl9XU0k7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1NJX1JBRElPX1dBUk5JTkdfTk9OX1dTSTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXU0lfUkFESU9fSUdOT1JFX05PTl9XU0k7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1NJX1JBRElPX0ZPTExPV19XU0lfUFJFRkVSRU5DRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9XU0lfU1NCUDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXU0lfU1NCUF9MQUJFTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXU0lfU1NCUF9DT01CTzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9XU0lfQVA7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1NJX0FQX0xBQkVMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTSV9BUF9DT01CTzsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9XU0RMVkFMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExBQkVMX1dTRExWQUxfTk9ORTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9XU0RMVkFMX1JFTU9URTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBMQUJFTF9XU0RMVkFMX0FMTDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXU0lfUkFESU9fV1NETFZBTF9OT05FOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFRPT0xUSVBfUFdTSV9SQURJT19XU0RMVkFMX1JFTU9URTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBUT09MVElQX1BXU0lfUkFESU9fV1NETFZBTF9BTEw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgVE9PTFRJUF9QV1NJX1dTRExWQUxfTEFCRUw7Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFdFQlNFUlZJQ0VfQ0FURUdPUllfUFJFRjsKLQotCXN0YXRpYyB7Ci0JCU5MUy5pbml0aWFsaXplTWVzc2FnZXMoQlVORExFX05BTUUsIFdzdFdTVUlQbHVnaW5NZXNzYWdlcy5jbGFzcyk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC91aS9jb21tYW5kL09wZW5FZGl0b3JDb21tYW5kLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL2NvbW1hbmQvT3BlbkVkaXRvckNvbW1hbmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBlNmEwNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL2NvbW1hbmQvT3BlbkVkaXRvckNvbW1hbmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA4MTAgICAxMzUzOTUgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEVuYWJsZSBXVFAgV2ViIHNlcnZpY2UgZnJhbWV3b3JrIG9wZW5pbmcgSmF2YSBlZGl0b3IKLSAqIDIwMDYxMDI1ICAgMTYyMjg4IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCB3b3Jrc3BhY2UgcGF0aHMgd2l0aCBzcGFjZXMgYnJlYWsgSmF2YSBFZGl0b3IgTGF1bmNoCi0gKiAyMDA4MDQxMSAgIDIyNjc2NyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgVW5pdmVyc2FsUGF0aFRyYW5zZm9ybWVyIGRvZXMgbm90IGhhbmRsZSBwYXRocyB3LyBzcGFjZXMgdGhhdCBhcmUgZW5jb2RlZAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS5jb21tYW5kOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmlkZS5JREU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkucGx1Z2luLldTVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnV0aWwuVW5pdmVyc2FsUGF0aFRyYW5zZm9ybWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklXZWJTZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VTY2VuYXJpbzsKLQotLyoqCi0gKiBBIGNvbW1hbmQgd2hpY2gsIHdoZW4gZ2l2ZW4gYW4gYXJyYXkgb2YgaW1wbGVtZW50YXRpb24gVVJMcywgd2lsbAotICogb3BlbiB0aGVtIHdpdGhpbiBFY2xpcHNlIHVzaW5nIHRoZSBlZGl0b3IgcmVnaXN0ZXJlZCB3aXRoIHRoZQotICogZmlsZSBleHRlbnNpb25zLgotICovCi1wdWJsaWMgY2xhc3MgT3BlbkVkaXRvckNvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbiB7Ci0KLQlwcml2YXRlIElXZWJTZXJ2aWNlIHdlYlNlcnZpY2U7Ci0JcHJpdmF0ZSBJQ29udGV4dAljb250ZXh0OwotIAotCS8qKgotCSAqIFNldHRlciBmb3IgdGhlIElXZWJTZXJ2aWNlCi0JICogCi0JICogQHBhcmFtIHdlYlNlcnZpY2UgVGhlIElXZWJTZXJ2aWNlCi0JICovCi0JcHVibGljIHZvaWQgc2V0V2ViU2VydmljZShJV2ViU2VydmljZSB3ZWJTZXJ2aWNlKSB7Ci0JCXRoaXMud2ViU2VydmljZSA9IHdlYlNlcnZpY2U7ICAKLQl9Ci0JICAKLQkvKioKLQkgKiBTZXR0ZXIgZm9yIHRoZSBJQ29udGV4dAotCSAqIAotCSAqIEBwYXJhbSBjb250ZXh0IFRoZSBJQ29udGV4dAotCSAqLwotCXB1YmxpYyB2b2lkIHNldENvbnRleHQgKElDb250ZXh0IGNvbnRleHQpIHsKLQkJdGhpcy5jb250ZXh0ID0gY29udGV4dDsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5vcGVyYXRpb25zLkFic3RyYWN0T3BlcmF0aW9uI2V4ZWN1dGUob3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3IsIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlKQotCSAqLwotCXB1YmxpYyBJU3RhdHVzIGV4ZWN1dGUoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pCi0JCQl0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsKLQkKLQkJaWYgKGNvbnRleHQuZ2V0U2NlbmFyaW8oKS5nZXRWYWx1ZSgpICE9IFdlYlNlcnZpY2VTY2VuYXJpby5UT1BET1dOKQotCQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JCQotCQlTdHJpbmdbXSBpbXBsVVJMcyA9IHdlYlNlcnZpY2UuZ2V0V2ViU2VydmljZUluZm8oKS5nZXRJbXBsVVJMcygpOwotCQkJCi0JCS8vIG5vdGhpbmcgdG8gb3BlbgotCQlpZiAoaW1wbFVSTHMgPT0gbnVsbCkKLQkJCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCQkKLQkJSUZpbGUgZmlsZTsKLQkJCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgaW1wbFVSTHMubGVuZ3RoOyBpKyspIHsKLQkJCXRyeSB7ICAgIAkJCQkJCQotCQkJCVN0cmluZyBpbXBsVVJMID0gaW1wbFVSTHNbaV07Ci0JCQkJZmlsZSA9IFVuaXZlcnNhbFBhdGhUcmFuc2Zvcm1lci50b0ZpbGUoaW1wbFVSTCk7Ci0JCQkJCQkKLQkJCQlpZiAoZmlsZSA9PSBudWxsIHx8ICFmaWxlLmV4aXN0cygpKQotCQkJCQljb250aW51ZTsKLQkJCQkKLQkJCQlJV29ya2JlbmNoUGFnZSBwYWdlID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKS5nZXRBY3RpdmVQYWdlKCk7Ci0JCQkJCi0JCQkJaWYgKHBhZ2UgPT0gbnVsbCkKLQkJCQkJY29udGludWU7Ci0JCQkJCQkJCQotCQkJCUlERS5vcGVuRWRpdG9yKHBhZ2UsIGZpbGUsIHRydWUpOwotCQkJfQotCQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJLy9UT0RPOiBmb3IgV1RQIDIuMCwgcmV0dXJuIHByb3BlciBzdGF0dXMgKHdpdGggTkxTKQotCQkJCVdTVUlQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRMb2coKS5sb2coCi0JCQkJCQluZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIFdTVUlQbHVnaW4uSUQsIDAsIGUuZ2V0TWVzc2FnZSgpLCBlKSk7Ci0JCQl9CQkJCi0JCX0KLQkJCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL3BsdWdpbi9XU1VJUGx1Z2luLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL3BsdWdpbi9XU1VJUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMDk5MDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC91aS9wbHVnaW4vV1NVSVBsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkucGx1Z2luOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0qIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0qIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0qIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0qIAotKiBDb250cmlidXRvcnM6Ci0qICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOwotCi0KLS8qKgotKiBUaGlzIGlzIHRoZSBwbHVnaW4gY2xhc3MgZm9yIHRoZSBXZWIgU2VydmljZXMgcGx1Z2luLgotKiA8cD4KLSogVGhpcyBwbHVnaW4gY29udGFpbnMgdGhlIGdyYXBoaWMgdXNlciBpbnRlcmZhY2UgdG8gdGhlCi0qIFdlYiBTZXJ2aWNlcyBydW50aW1lIGZvdW5kIGluIG9yZy5lY2xpcHNlLmpzdC53cy4KLSovCi1wdWJsaWMgY2xhc3MgV1NVSVBsdWdpbiBleHRlbmRzIEFic3RyYWN0VUlQbHVnaW4KLXsKLQotIC8qKgotICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRlc2NyaXB0b3Igb2YgdGhpcyBwbHVnaW4gaW4gcGx1Z2luLnhtbC4KLSAqLwotIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElEID0gIm9yZy5lY2xpcHNlLndzdC53cy51aSI7Ci0KLSAvKioKLSAqIFRoZSByZWZlcmVuY2UgdG8gdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIHBsdWdpbi4KLSAqLwotIHByaXZhdGUgc3RhdGljIFdTVUlQbHVnaW4gaW5zdGFuY2VfOwotIAotIC8qKgotICAqIENvbnN0cnVjdHMgYSBydW50aW1lIHBsdWdpbiBvYmplY3QgZm9yIHRoaXMgcGx1Z2luLgotICAqLwotIHB1YmxpYyBXU1VJUGx1Z2luKCkgewotCXN1cGVyKCk7Ci0JaW5zdGFuY2VfID0gdGhpczsKLSB9Ci0KLSAvKioKLSAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGlzIHBsdWdpbi4gRXF1aXZhbGVudCB0byBjYWxsaW5nCi0gKiAoV1NVSVBsdWdpbilQbGF0Zm9ybS5nZXRQbHVnaW4oIm9yZy5lY2xpcHNlLndzdC53cy51aSIpOwotICogQHJldHVybiBUaGUgV1NVSVBsdWdpbiBzaW5nbGV0b24uCi0gKi8KLSBzdGF0aWMgcHVibGljIFdTVUlQbHVnaW4gZ2V0SW5zdGFuY2UoKSB7Ci0gICByZXR1cm4gaW5zdGFuY2VfOwotIH0KLQotIC8qKgotICogUmV0dXJucyBhbiBpbWFnZSBkZXNjcmlwdG9yIGZvciB0aGUgbmFtZWQgcmVzb3VyY2UKLSAqIGFzIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gaW5zdGFsbCBsb2NhdGlvbi4KLSAqIEByZXR1cm4gQW4gaW1hZ2UgZGVzY3JpcHRvciwgcG9zc2libHkgbnVsbC4KLSAqLwotCXB1YmxpYyBzdGF0aWMgSW1hZ2VEZXNjcmlwdG9yIGdldEltYWdlRGVzY3JpcHRvcihTdHJpbmcgbmFtZSkgewotCQl0cnkgewotCQkJVVJMIGluc3RhbGxVUkwgPSBpbnN0YW5jZV8uZ2V0QnVuZGxlKCkuZ2V0RW50cnkoIi8iKTsKLQkJCVVSTCBpbWFnZVVSTCA9IG5ldyBVUkwoaW5zdGFsbFVSTCwgbmFtZSk7Ci0JCQlyZXR1cm4gSW1hZ2VEZXNjcmlwdG9yLmNyZWF0ZUZyb21VUkwoaW1hZ2VVUkwpOwotCQl9IGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkgewotICAgICByZXR1cm4gbnVsbDsKLSAgIH0KLSB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdWkvcHJlZmVyZW5jZXMvV2ViU2VydmljZXNQcmVmZXJlbmNlUGFnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC91aS9wcmVmZXJlbmNlcy9XZWJTZXJ2aWNlc1ByZWZlcmVuY2VQYWdlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxNzk0N2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC91aS9wcmVmZXJlbmNlcy9XZWJTZXJ2aWNlc1ByZWZlcmVuY2VQYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA0MjQgMTgyMzc2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDcxMTIwICAgMjA5ODU4IGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBQZXRlcnMsIEVuaGFuY2luZyBzZXJ2aWNlIHBvbGljeSBmcmFtZXdvcmsgYW5kIFVJCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLnByZWZlcmVuY2VzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucHJlZmVyZW5jZS5QcmVmZXJlbmNlUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaW5rOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2g7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmRpYWxvZ3MuUHJlZmVyZW5jZXNVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS5Xc3RXU1VJUGx1Z2luTWVzc2FnZXM7Ci0KLS8qKgotICogVGhlIFdlYlNlcnZpY2VzUHJlZmVyZW5jZVBhZ2UKLSAqLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VzUHJlZmVyZW5jZVBhZ2UgZXh0ZW5kcyBQcmVmZXJlbmNlUGFnZSBpbXBsZW1lbnRzIElXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZSB7Ci0JcHJpdmF0ZSBDb21wb3NpdGUgcGFyZW50Q29tcG9zaXRlID0gbnVsbDsKLS8qKgotICogQ3JlYXRlcyBhbmQgcmV0dXJucyB0aGUgU1dUIGNvbnRyb2wgZm9yIHRoZSBjdXN0b21pemVkIGJvZHkgCi0gKiBvZiB0aGlzIHByZWZlcmVuY2UgcGFnZSB1bmRlciB0aGUgZ2l2ZW4gcGFyZW50IGNvbXBvc2l0ZS4KLSAqIDxwPgotICogVGhpcyBmcmFtZXdvcmsgbWV0aG9kIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgY29uY3JldGUKLSAqIHN1YmNsYXNzZXMuCi0gKiA8L3A+Ci0gKgotICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50IGNvbXBvc2l0ZQotICogQHJldHVybiB0aGUgbmV3IGNvbnRyb2wKLSAqLwotCXByb3RlY3RlZCBDb250cm9sIGNyZWF0ZUNvbnRlbnRzKG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZSBwYXJlbnQpIHsKLQkJcGFyZW50Q29tcG9zaXRlID0gcGFyZW50OwotCQlDb21wb3NpdGUgY29tcG9zaXRlID0gbmV3IENvbXBvc2l0ZShwYXJlbnQsIFNXVC5OT05FKTsKLQkJY29tcG9zaXRlLnNldExheW91dChuZXcgR3JpZExheW91dCgpKTsKLQkJTGFiZWwgbWVzc2FnZSA9IG5ldyBMYWJlbChjb21wb3NpdGUsIFNXVC5XUkFQKTsKLQkJbWVzc2FnZS5zZXRUZXh0KFdzdFdTVUlQbHVnaW5NZXNzYWdlcy5XRUJTRVJWSUNFX0NBVEVHT1JZX1BSRUYpOwotCQlMaW5rIGxpbmsgPSBuZXcgTGluayhjb21wb3NpdGUsIFNXVC5XUkFQKTsKLQkJbGluay5zZXRUZXh0KFdzdFdTVUlQbHVnaW5NZXNzYWdlcy5XRUJTRVJWSUNFX0NBVEVHT1JZX1BSRUZfTElOSyk7Ci0JCWxpbmsuYWRkU2VsZWN0aW9uTGlzdGVuZXIobmV3IFNlbGVjdGlvbkFkYXB0ZXIoKSB7Ci0JCQlwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7Ci0JCQkJUHJlZmVyZW5jZXNVdGlsLmNyZWF0ZVByZWZlcmVuY2VEaWFsb2dPbihwYXJlbnRDb21wb3NpdGUKLQkJCQkJCS5nZXRTaGVsbCgpLCBlLnRleHQsIG51bGwsIG51bGwpOwotCQkJCXBhcmVudENvbXBvc2l0ZS5sYXlvdXQoKTsKLQkJCX0KLQkJfSk7Ci0KLQkJbm9EZWZhdWx0QW5kQXBwbHlCdXR0b24oKTsKLQkJRGlhbG9nLmFwcGx5RGlhbG9nRm9udChjb21wb3NpdGUpOwotCQlyZXR1cm4gcGFyZW50OwotCX0KLQotCS8qKgotCSAqIERvIGFueSBpbml0aWFsaXphdGlvbiByZXF1aXJlZCBieSB0aGUgZGVza3RvcC4gQnkgZGVmYXVsdCBkbyBub3RoaW5nLgotCSAqLwotcHVibGljIHZvaWQgaW5pdChJV29ya2JlbmNoIGRlc2t0b3ApIHt9Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdWkvdXRpbHMvQWRhcHRlclV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL3V0aWxzL0FkYXB0ZXJVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmI4ZDEyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdWkvdXRpbHMvQWRhcHRlclV0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMjcgICAxNzIzMzkga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcwNzE2ICAgMTkxMzU3IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDIyMCAgIDIxOTUzNyBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1hawotICogMjAwODA0MjEgICAyMjc4MjQgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIEFkYXB0ZXJVdGlscyBhZGFwdCB0byBJRmlsZSBiZWZvcmUgU3RyaW5nCi0gKiAyMDA5MDMxMCAgIDI0MjQ0MCB5ZW5sdUBjYS5pYm0uY29tIC0gWWVuIEx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnVpLnV0aWxzOwotCi1pbXBvcnQgamF2YS5uZXQuVVJJOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb252ZXJ0ZXIuSUlGaWxlMlVyaUNvbnZlcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotCi0vKioKLSAqIFRoZSBBZGFwdGVyVXRpbHMgY2xhc3MgcHJvdmlkZXMgdXRpbGl0eSBtZXRob2RzIHRvIGdldCBvYmplY3RzIGZyb20gdGhlIFBsYXRmb3JtJ3MgYWRhcHRlciBleHRlbnNpb24uCi0gKgotICovCi1wdWJsaWMgY2xhc3MgQWRhcHRlclV0aWxzIHsJCi0JCi0JLyoqCi0JICogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBvYmplY3QgaGFzIGFuIElGaWxlIG9yIFN0cmluZyBhZGFwdGVyLgotCSAqIAotCSAqIEBwYXJhbSBvYmplY3QgVGhlIG9iamVjdC4KLQkgKiBAcmV0dXJuIFRydWUgdGhlIG9iamVjdCBpcyBhZGFwdGFibGUgdG8gSUZpbGUgb3IgU3RyaW5nLCBmYWxzZSBvdGhlcndpc2UuCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGhhc0FkYXB0ZXIoT2JqZWN0IG9iamVjdCkgewotCQlpZiAob2JqZWN0ID09IG51bGwpCi0JCQlyZXR1cm4gZmFsc2U7Ci0JCWJvb2xlYW4gaGFzQWRhcHRlciA9IFBsYXRmb3JtLmdldEFkYXB0ZXJNYW5hZ2VyKCkuaGFzQWRhcHRlcihvYmplY3QsICJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlLklGaWxlIik7Ci0JCWlmICghaGFzQWRhcHRlcikKLQkJCWhhc0FkYXB0ZXIgPSBQbGF0Zm9ybS5nZXRBZGFwdGVyTWFuYWdlcigpLmhhc0FkYXB0ZXIob2JqZWN0LCAiamF2YS5sYW5nLlN0cmluZyIpOwotCQlyZXR1cm4gaGFzQWRhcHRlcjsKLQl9Ci0JCi0JLyoqCi0JICogQHBhcmFtIG9iamVjdCBPYmplY3QgdG8gYWRhcHQKLQkgKiBAcmV0dXJuIFRoZSBhZGFwdGVkIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGZpbGUgb3IgU3RyaW5nIGlmIGFuIGFkYXB0ZXIgaXMgZm91bmQuIAotCSAqICAgICAgICAgUmV0dXJucyBudWxsIGlmIGFuIGFkYXB0ZXIgaXMgbm90IGZvdW5kLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgT2JqZWN0IGdldEFkYXB0ZWRPYmplY3QgKE9iamVjdCBvYmplY3QpIHsgCi0JCWlmIChvYmplY3QgPT0gbnVsbCkgCi0JCQlyZXR1cm4gbnVsbDsKLQkJT2JqZWN0IGFkYXB0ZWRPYmplY3QgPSBQbGF0Zm9ybS5nZXRBZGFwdGVyTWFuYWdlcigpLmxvYWRBZGFwdGVyKG9iamVjdCwgImphdmEubGFuZy5TdHJpbmciKTsKLQkJaWYgKGFkYXB0ZWRPYmplY3QgPT0gbnVsbCkgewotCQkJYWRhcHRlZE9iamVjdCA9IFBsYXRmb3JtLmdldEFkYXB0ZXJNYW5hZ2VyKCkubG9hZEFkYXB0ZXIob2JqZWN0LCAib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiKTsKLQkJfQotCQlyZXR1cm4gYWRhcHRlZE9iamVjdDsKLQl9Ci0JCi0JLyoqCi0JICAgKiBAcGFyYW0gb2JqZWN0IExvb2sgdXAgYW4gYWRhcHRlciBtYXBwaW5nIHRoZSBvYmplY3QgdG8gSUZpbGUgb3IgU3RyaW5nLgotCSAgICogQHJldHVybiBUaGUgV1NETCB1cmkgcmV0dXJuZWQgYnkgdGhlIGFkYXB0ZXIgb3IgbnVsbCBpZiBubyBhZGFwdGVyIGlzIGZvdW5kLgotCSAgICovCi0JICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBZGFwdGVkV1NETCAoT2JqZWN0IG9iamVjdCkgewotCQkgIFN0cmluZyB3c2RsVVJJID0gbnVsbDsKLQkJICBPYmplY3QgYWRhcHRlZE9iamVjdCA9IEFkYXB0ZXJVdGlscy5nZXRBZGFwdGVkT2JqZWN0KG9iamVjdCk7Ci0JCSAgaWYgKCBhZGFwdGVkT2JqZWN0ICE9IG51bGwpIHsKLQkJCSAgaWYgKGFkYXB0ZWRPYmplY3QgaW5zdGFuY2VvZiBJRmlsZSkKLQkJCSAgewotCQkJCSAgSUZpbGUgZmlsZSA9IChJRmlsZSlhZGFwdGVkT2JqZWN0OwotCQkJCSAgYm9vbGVhbiBhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlID0gdHJ1ZTsKLQkJCQkgIElJRmlsZTJVcmlDb252ZXJ0ZXIgY29udmVydGVyID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRJRmlsZTJVcmlDb252ZXJ0ZXIoKTsKLQkJCQkgIGlmIChjb252ZXJ0ZXIgIT0gbnVsbCkKLQkJCQkgIHsKLQkJCQkJICB3c2RsVVJJID0gY29udmVydGVyLmNvbnZlcnQoZmlsZSk7Ci0JCQkJCSAgYWxsb3dCYXNlQ29udmVyc2lvbk9uRmFpbHVyZSA9IGNvbnZlcnRlci5hbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlKCk7Ci0JCQkJICB9Ci0JCQkJICBpZiAod3NkbFVSSSA9PSBudWxsICYmIGFsbG93QmFzZUNvbnZlcnNpb25PbkZhaWx1cmUpCi0JCQkJICB7Ci0JCQkJICAgIFVSSSB1cmkgPSBmaWxlLmdldExvY2F0aW9uVVJJKCk7Ci0JCQkJICAgIGlmICh1cmkgIT0gbnVsbCkgewotCQkJCQkgIHdzZGxVUkkgPSB1cmkudG9TdHJpbmcoKTsKLQkJCQkgICAgfQotCQkJCSAgfQotCQkJICB9IGVsc2UgaWYgKGFkYXB0ZWRPYmplY3QgaW5zdGFuY2VvZiBTdHJpbmcpIHsKLQkJCQkgIHdzZGxVUkkgPSAoU3RyaW5nKSBhZGFwdGVkT2JqZWN0OwotCQkJICB9Ci0JCSAgfQotCQkgIHJldHVybiB3c2RsVVJJOwotCSAgfQotCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC91aS93c2kvcHJlZmVyZW5jZXMvV1NJQ29tcGxpYW5jZVByZWZlcmVuY2VQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL3dzaS9wcmVmZXJlbmNlcy9XU0lDb21wbGlhbmNlUHJlZmVyZW5jZVBhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlmNzFkOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL3dzaS9wcmVmZXJlbmNlcy9XU0lDb21wbGlhbmNlUHJlZmVyZW5jZVBhZ2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMTAgICAxMzEzNTIgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNjA3MjggICAxNTE2MzIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcxMDI1ICAgICAgICAgIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBQZXRlcnMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkud3NpLnByZWZlcmVuY2VzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucHJlZmVyZW5jZS5QcmVmZXJlbmNlUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmhlbHAuSVdvcmtiZW5jaEhlbHBTeXN0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudWkuV3N0V1NVSVBsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS5wbHVnaW4uV1NVSVBsdWdpbjsKLQotCi0KLXB1YmxpYyBjbGFzcyBXU0lDb21wbGlhbmNlUHJlZmVyZW5jZVBhZ2UgZXh0ZW5kcyBQcmVmZXJlbmNlUGFnZSBpbXBsZW1lbnRzIElXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZSwgU2VsZWN0aW9uTGlzdGVuZXIsIExpc3RlbmVyCi0KLXsKLQkgIAotICAvKkNPTlRFWFRfSUQgUFdTSTAwMDEgZm9yIHRoZSBXUy1JIFByZWZlcmVuY2UgUGFnZSovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdTSV9QQUdFID0gV1NVSVBsdWdpbi5JRCArICIuUFdTSTAwMDAiOwotICAKLSAgcHJpdmF0ZSBUZXh0IHdzZGxWYWxpZGF0aW9uTGFiZWxfOwotICAvKkNPTlRFWFRfSUQgUFdTSTAwMDkgZm9yIHRoZSBObyBXaXphcmQgV1NETCB2YWxpZGF0aW9uIGJ1dHRvbiBvbiB0aGUgUHJvZmlsZSBDb21wbGlhbmNlIGFuZCBWYWxpZGF0aW9uIHBhZ2UqLwotICBwcml2YXRlIEJ1dHRvbiB2YWxpZGF0ZU5vV3NkbEJ1dHRvbl87Ci0gIC8qQ09OVEVYVF9JRCBQV1NJMDAwMTAgZm9yIHRoZSBXaXphcmQgV1NETCB2YWxpZGF0aW9uIGZvciByZW1vdGUgZmlsZXMgb25seSBidXR0b24gb24gdGhlIFByb2ZpbGUgQ29tcGxpYW5jZSBhbmQgVmFsaWRhdGlvbiBwYWdlKi8KLSAgcHJpdmF0ZSBCdXR0b24gdmFsaWRhdGVSZW1vdGVXc2RsQnV0dG9uXzsKLSAgLypDT05URVhUX0lEIFBXU0kwMDAxMSBmb3IgdGhlIFdpemFyZCBXU0RMIHZhbGlkYXRpb24gZm9yIGFsbCBmaWxlcyBidXR0b24gb24gdGhlIFByb2ZpbGUgQ29tcGxpYW5jZSBhbmQgVmFsaWRhdGlvbiBwYWdlKi8KLSAgcHJpdmF0ZSBCdXR0b24gdmFsaWRhdGVBbGxXc2RsQnV0dG9uXzsKLSAgCi0KLSAgLyoKLSAgICogQ09OVEVYVF9JRCBQV1JTMDAwOSBmb3IgdGhlIG5vIHdzZGwgdmFsaWRhdGlvbiByYWRpbyBidXR0b24gb2YgdGhlIHByb2ZpbGUgdmFsaWRhdGlvbiBwcmVmZXJlbmNlIHBhZ2UKLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdTSV9SQURJT19XU0RMVkFMX05PTkUgPSBXU1VJUGx1Z2luLklEICsgIi5QV1NJMDAwOSI7Ci0gIC8qCi0gICAqIENPTlRFWFRfSUQgUFdSUzAwMTAgZm9yIHRoZSB3c2RsIHZhbGlkYXRpb24gb24gcmVtb3RlIGRvY3VtZW50IHJhZGlvIGJ1dHRvbiBvZiB0aGUgcHJvZmlsZSB2YWxpZGF0aW9uIHByZWZlcmVuY2UgcGFnZQotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgSU5GT1BPUF9QV1NJX1JBRElPX1dTRExWQUxfUkVNT1RFID0gV1NVSVBsdWdpbi5JRCArICIuUFdTSTAwMDEwIjsKLSAgLyoKLSAgICogQ09OVEVYVF9JRCBQV1JTMDAxMSBmb3IgdGhlIHdzZGwgdmFsaWRhdGlvbiBvbiBhbGwgZG9jdW1lbnQgcmFkaW8gYnV0dG9uIG9mIHRoZSBwcm9maWxlIHZhbGlkYXRpb24gcHJlZmVyZW5jZSBwYWdlCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBJTkZPUE9QX1BXU0lfUkFESU9fV1NETFZBTF9BTEwgPSBXU1VJUGx1Z2luLklEICsgIi5QV1NJMDAxMSI7Ci0gIC8qCi0gICAqIENPTlRFWFRfSUQgUFdSUzAwMTIgZm9yIHRoZSB3c2RsIHZhbGlkYXRpb24gbGFiZWwgb2YgdGhlIHByb2ZpbGUgdmFsaWRhdGlvbiBwcmVmZXJlbmNlIHBhZ2UKLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIElORk9QT1BfUFdTSV9XU0RMVkFMX0xBQkVMID0gV1NVSVBsdWdpbi5JRCArICIuUFdTSTAwMTIiOwotCi0gLyoqCi0gICAqIENyZWF0ZXMgcHJlZmVyZW5jZSBwYWdlIGNvbnRyb2xzIG9uIGRlbWFuZC4KLSAgICogICBAcGFyYW0gcGFyZW50Q29tcG9zaXRlICB0aGUgcGFyZW50IGZvciB0aGUgcHJlZmVyZW5jZSBwYWdlCi0gICAqLwotICBwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVDb250ZW50cyhDb21wb3NpdGUgc3VwZXJwYXJlbnQpCi0gIHsKLSAgIAotICAgIElXb3JrYmVuY2hIZWxwU3lzdGVtIGhlbHBTeXN0ZW0gPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEhlbHBTeXN0ZW0oKTsKLQkKLSAgICBDb21wb3NpdGUgICBwYXJlbnQgPSBuZXcgQ29tcG9zaXRlKCBzdXBlcnBhcmVudCwgU1dULk5PTkUgKTsJCi0gICAgR3JpZExheW91dCBsYXlvdXQgPSBuZXcgR3JpZExheW91dCgpOwotICAgIGxheW91dC5udW1Db2x1bW5zID0gMTsKLSAgICBwYXJlbnQuc2V0TGF5b3V0KCBsYXlvdXQgKTsKLSAgICBwYXJlbnQuc2V0TGF5b3V0RGF0YSggbmV3IEdyaWREYXRhKCBHcmlkRGF0YS5GSUxMX1ZFUlRJQ0FMICkgKTsKLSAgICBwYXJlbnQuc2V0VG9vbFRpcFRleHQoV3N0V1NVSVBsdWdpbk1lc3NhZ2VzLlRPT0xUSVBfUFdTSV9QQUdFKTsKLSAgICBoZWxwU3lzdGVtLnNldEhlbHAocGFyZW50LElORk9QT1BfUFdTSV9QQUdFKTsKLQotICAgIEdyaWRMYXlvdXQgZ2wgPSBuZXcgR3JpZExheW91dCgpOwotICAgIGdsLm51bUNvbHVtbnMgPSAxOwotICAgIGdsLm1hcmdpbkhlaWdodCA9IDA7Ci0gICAgZ2wubWFyZ2luV2lkdGggPSAwOwotCi0gICAgCi0gICAgd3NkbFZhbGlkYXRpb25MYWJlbF8gPSBuZXcgVGV4dChwYXJlbnQsIFNXVC5SRUFEX09OTFkpOwotICAgIHdzZGxWYWxpZGF0aW9uTGFiZWxfLnNldFRleHQoV3N0V1NVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX1dTRExWQUwpOwotICAgIHdzZGxWYWxpZGF0aW9uTGFiZWxfLnNldFRvb2xUaXBUZXh0KFdzdFdTVUlQbHVnaW5NZXNzYWdlcy5UT09MVElQX1BXU0lfV1NETFZBTF9MQUJFTCk7Ci0gICAgaGVscFN5c3RlbS5zZXRIZWxwKHdzZGxWYWxpZGF0aW9uTGFiZWxfLCBJTkZPUE9QX1BXU0lfV1NETFZBTF9MQUJFTCk7Ci0gICAgCi0gICAgdmFsaWRhdGVOb1dzZGxCdXR0b25fID0gbmV3IEJ1dHRvbihwYXJlbnQsIFNXVC5SQURJTyk7Ci0gICAgdmFsaWRhdGVOb1dzZGxCdXR0b25fLnNldFRleHQoV3N0V1NVSVBsdWdpbk1lc3NhZ2VzLkxBQkVMX1dTRExWQUxfTk9ORSk7Ci0gICAgdmFsaWRhdGVOb1dzZGxCdXR0b25fLmFkZExpc3RlbmVyKFNXVC5TZWxlY3Rpb24sIHRoaXMpOwotICAgIHZhbGlkYXRlTm9Xc2RsQnV0dG9uXy5zZXRUb29sVGlwVGV4dChXc3RXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9QV1NJX1JBRElPX1dTRExWQUxfTk9ORSk7Ci0gICAgaGVscFN5c3RlbS5zZXRIZWxwKHZhbGlkYXRlTm9Xc2RsQnV0dG9uXywgSU5GT1BPUF9QV1NJX1JBRElPX1dTRExWQUxfTk9ORSk7Ci0gICAgCi0gICAgdmFsaWRhdGVSZW1vdGVXc2RsQnV0dG9uXyA9IG5ldyBCdXR0b24ocGFyZW50LCBTV1QuUkFESU8pOwotICAgIHZhbGlkYXRlUmVtb3RlV3NkbEJ1dHRvbl8uc2V0VGV4dChXc3RXU1VJUGx1Z2luTWVzc2FnZXMuTEFCRUxfV1NETFZBTF9SRU1PVEUpOwotICAgIHZhbGlkYXRlUmVtb3RlV3NkbEJ1dHRvbl8uYWRkTGlzdGVuZXIoU1dULlNlbGVjdGlvbiwgdGhpcyk7Ci0gICAgdmFsaWRhdGVSZW1vdGVXc2RsQnV0dG9uXy5zZXRUb29sVGlwVGV4dChXc3RXU1VJUGx1Z2luTWVzc2FnZXMuVE9PTFRJUF9QV1NJX1JBRElPX1dTRExWQUxfUkVNT1RFKTsKLSAgICBoZWxwU3lzdGVtLnNldEhlbHAodmFsaWRhdGVSZW1vdGVXc2RsQnV0dG9uXywgSU5GT1BPUF9QV1NJX1JBRElPX1dTRExWQUxfUkVNT1RFKTsKLSAgICAKLSAgICB2YWxpZGF0ZUFsbFdzZGxCdXR0b25fID0gbmV3IEJ1dHRvbihwYXJlbnQsIFNXVC5SQURJTyk7Ci0gICAgdmFsaWRhdGVBbGxXc2RsQnV0dG9uXy5zZXRUZXh0KFdzdFdTVUlQbHVnaW5NZXNzYWdlcy5MQUJFTF9XU0RMVkFMX0FMTCk7Ci0gICAgdmFsaWRhdGVBbGxXc2RsQnV0dG9uXy5hZGRMaXN0ZW5lcihTV1QuU2VsZWN0aW9uLCB0aGlzKTsKLSAgICB2YWxpZGF0ZUFsbFdzZGxCdXR0b25fLnNldFRvb2xUaXBUZXh0KFdzdFdTVUlQbHVnaW5NZXNzYWdlcy5UT09MVElQX1BXU0lfUkFESU9fV1NETFZBTF9BTEwpOwotICAgIGhlbHBTeXN0ZW0uc2V0SGVscCh2YWxpZGF0ZUFsbFdzZGxCdXR0b25fLCBJTkZPUE9QX1BXU0lfUkFESU9fV1NETFZBTF9BTEwpOwotICAgIAotICAgIGluaXRpYWxpemVWYWx1ZXMoKTsKLSAgICBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZy5hcHBseURpYWxvZ0ZvbnQoc3VwZXJwYXJlbnQpOyAgICAKLSAgICByZXR1cm4gcGFyZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIERvZXMgYW55dGhpbmcgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIGRlZmF1bHQgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtRGVmYXVsdHMoKQotICB7Ci0gICAgc3VwZXIucGVyZm9ybURlZmF1bHRzKCk7Ci0gICAgaW5pdGlhbGl6ZURlZmF1bHRzKCk7Ci0gIH0KLQotICAvKioKLSAgICogRG8gYW55dGhpbmcgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIE9LIGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkLgotICAgKiAgQHJldHVybiB3aGV0aGVyIGl0IGlzIG9rYXkgdG8gY2xvc2UgdGhlIHByZWZlcmVuY2UgcGFnZQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gcGVyZm9ybU9rKCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybUFwcGx5KCkKLSAgewotICAgIHBlcmZvcm1PaygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KElXb3JrYmVuY2ggd29ya2JlbmNoKSAgIHsgfQotCi0gIC8qKgotICAgKiBJbml0aWFsaXplcyBzdGF0ZXMgb2YgdGhlIGNvbnRyb2xzIHVzaW5nIGRlZmF1bHQgdmFsdWVzCi0gICAqIGluIHRoZSBwcmVmZXJlbmNlIHN0b3JlLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVEZWZhdWx0cygpCi0gIHsKLQotICAgIFBlcnNpc3RlbnRXU0RMVmFsaWRhdGlvbkNvbnRleHQgd3NkbFZhbGlkYXRpb25Db250ZXh0ID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRXU0RMVmFsaWRhdGlvbkNvbnRleHQoKTsKLSAgICBTdHJpbmcgdmFsaWRhdGlvblNlbGVjdGlvbiA9IHdzZGxWYWxpZGF0aW9uQ29udGV4dC5nZXREZWZhdWx0KCk7Ci0gICAgd3NkbFZhbGlkYXRpb25Db250ZXh0LnVwZGF0ZVdTRExWYWxpZGF0aW9uKHZhbGlkYXRpb25TZWxlY3Rpb24pOwotICAgIHZhbGlkYXRlTm9Xc2RsQnV0dG9uXy5zZXRTZWxlY3Rpb24oZmFsc2UpOwotICAgIHZhbGlkYXRlUmVtb3RlV3NkbEJ1dHRvbl8uc2V0U2VsZWN0aW9uKGZhbHNlKTsKLSAgICB2YWxpZGF0ZUFsbFdzZGxCdXR0b25fLnNldFNlbGVjdGlvbihmYWxzZSk7Ci0gICAgcHJvY2Vzc1dTRExWYWxpZGF0aW9uU2VsZWN0aW9uKHZhbGlkYXRpb25TZWxlY3Rpb24pOwotICAgIAotICAgIFdTUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0V2FpdEZvcldTRExWYWxpZGF0aW9uQ29udGV4dCgpLnNldFdhaXRGb3JXU0RMVmFsaWRhdGlvbihXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFdhaXRGb3JXU0RMVmFsaWRhdGlvbkNvbnRleHQoKS5nZXREZWZhdWx0KCkpOwotICAgIAotICB9Ci0KLSAgLyoqCi0gICAqIEluaXRpYWxpemVzIHN0YXRlcyBvZiB0aGUgY29udHJvbHMgZnJvbSB0aGUgcHJlZmVyZW5jZSBzdG9yZS4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBpbml0aWFsaXplVmFsdWVzKCkKLSAgewotICAgIFN0cmluZyB2YWxpZGF0aW9uU2VsZWN0aW9uID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRXU0RMVmFsaWRhdGlvbkNvbnRleHQoKS5nZXRQZXJzaXN0ZW50V1NETFZhbGlkYXRpb24oKTsKLSAgICBwcm9jZXNzV1NETFZhbGlkYXRpb25TZWxlY3Rpb24odmFsaWRhdGlvblNlbGVjdGlvbik7Ci0gICAgCi0gIH0KLQotICBwcml2YXRlIHZvaWQgcHJvY2Vzc1dTRExWYWxpZGF0aW9uU2VsZWN0aW9uKFN0cmluZyB2YWxpZGF0aW9uU2VsZWN0aW9uKSB7Ci0KLQkJaWYgKFBlcnNpc3RlbnRXU0RMVmFsaWRhdGlvbkNvbnRleHQuVkFMSURBVEVfTk9fV1NETC5lcXVhbHModmFsaWRhdGlvblNlbGVjdGlvbikpIHsKLQkJCXZhbGlkYXRlTm9Xc2RsQnV0dG9uXy5zZXRTZWxlY3Rpb24odHJ1ZSk7Ci0JCX0gZWxzZSBpZiAoUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dC5WQUxJREFURV9SRU1PVEVfV1NETC5lcXVhbHModmFsaWRhdGlvblNlbGVjdGlvbikpIHsKLQkJCXZhbGlkYXRlUmVtb3RlV3NkbEJ1dHRvbl8uc2V0U2VsZWN0aW9uKHRydWUpOwotCQl9IGVsc2UgaWYgKFBlcnNpc3RlbnRXU0RMVmFsaWRhdGlvbkNvbnRleHQuVkFMSURBVEVfQUxMX1dTREwuZXF1YWxzKHZhbGlkYXRpb25TZWxlY3Rpb24pKSB7Ci0JCQl2YWxpZGF0ZUFsbFdzZGxCdXR0b25fLnNldFNlbGVjdGlvbih0cnVlKTsKLQkJfQotCi0JfQotCi0gIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7Ci0JCi0gIH0KLSAgCi0gIC8qKgotICAgKiBDYWxsZWQgd2hlbiBhbiBldmVudCBvY2N1cnMgb24gdGhlIHBhZ2UuIEhhbmRsZXMgdGhlIGV2ZW50IGFuZCByZXZhbGlkYXRlcyB0aGUgcGFnZS4KLSAgICogCi0gICAqIEBwYXJhbSBldmVudAotICAgKiAgICAgICAgICBUaGUgZXZlbnQgdGhhdCBvY2N1cmVkLgotICAgKi8KLSAgcHVibGljIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQgZXZlbnQpIHsKLQkgIAotCSAgU3RyaW5nIHdzZGxWYWxkYXRpb25TZWxlY3Rpb24gPSBudWxsOwotCSAgaWYgKHZhbGlkYXRlTm9Xc2RsQnV0dG9uXyA9PSBldmVudC53aWRnZXQpIHsKLQkJICB3c2RsVmFsZGF0aW9uU2VsZWN0aW9uID0gUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dC5WQUxJREFURV9OT19XU0RMOwotCSAgfQotCSAgZWxzZSBpZiAodmFsaWRhdGVSZW1vdGVXc2RsQnV0dG9uXyA9PSBldmVudC53aWRnZXQpIHsKLQkJICB3c2RsVmFsZGF0aW9uU2VsZWN0aW9uID0gUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dC5WQUxJREFURV9SRU1PVEVfV1NETDsKLQkgIH0KLQkgIGVsc2UgaWYgKHZhbGlkYXRlQWxsV3NkbEJ1dHRvbl8gPT0gZXZlbnQud2lkZ2V0KSB7Ci0JCSAgd3NkbFZhbGRhdGlvblNlbGVjdGlvbiA9IFBlcnNpc3RlbnRXU0RMVmFsaWRhdGlvbkNvbnRleHQuVkFMSURBVEVfQUxMX1dTREw7Ci0JICB9Ci0JICBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFdTRExWYWxpZGF0aW9uQ29udGV4dCgpLnVwZGF0ZVdTRExWYWxpZGF0aW9uKHdzZGxWYWxkYXRpb25TZWxlY3Rpb24pOwotCSAgCi0gIH0KLQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL3dzcnQvSU9iamVjdFNlbGVjdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3VpL3dzcnQvSU9iamVjdFNlbGVjdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1OWU2OGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC91aS93c3J0L0lPYmplY3RTZWxlY3Rvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51aS53c3J0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLldpZGdldERhdGFFdmVudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVNlbGVjdGlvbjsKLQotcHVibGljIGludGVyZmFjZSBJT2JqZWN0U2VsZWN0b3IgewotCQotCXB1YmxpYyB2b2lkIHNldEluaXRpYWxTZWxlY3Rpb24oSVNlbGVjdGlvbiBzZWwpOwotCXB1YmxpYyBJU2VsZWN0aW9uIGdldFNlbGVjdGlvbigpOwotCXB1YmxpYyBTdHJpbmcgZ2V0UHJvamVjdCgpOwotCXB1YmxpYyBJU3RhdHVzIHZhbGlkYXRlU2VsZWN0aW9uKElTZWxlY3Rpb24gc2VsKTsKLQlwdWJsaWMgV2lkZ2V0RGF0YUV2ZW50cyBhZGRDb250cm9scyhDb21wb3NpdGUgcGFyZW50LCBMaXN0ZW5lciBzdGF0dXNMaXN0ZW5lcik7Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLy5jbGFzc3BhdGggYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDRlODYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjUiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMTg4ZDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotYmluCi10ZW1wLmZvbGRlcgotYnVpbGQueG1sCi13cy5qYXIKLUBkb3QKLXNyYy56aXAKLWphdmFDb21waWxlci4uLmFyZ3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLy5wcm9qZWN0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0OTRlMmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS53c3Qud3M8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDEyNTE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSNUaHUgTWF5IDMxIDEzOjEyOjUzIEVEVCAyMDA3Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS41Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFubm90YXRpb25TdXBlckludGVyZmFjZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXV0b2JveGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uSW5EZXByZWNhdGVkQ29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbldoZW5PdmVycmlkaW5nRGVwcmVjYXRlZE1ldGhvZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kaXNjb3VyYWdlZFJlZmVyZW5jZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW1wdHlTdGF0ZW1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmhpZGRlbkNhdGNoQmxvY2s9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBhdGlibGVOb25Jbmhlcml0ZWRJbnRlcmZhY2VNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBsZXRlRW51bVN3aXRjaD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5kaXJlY3RTdGF0aWNBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmxvY2FsVmFyaWFibGVIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nRGVwcmVjYXRlZEFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdTZXJpYWxWZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9FZmZlY3RBc3NpZ25tZW50PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9JbXBsaWNpdFN0cmluZ0NvbnZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub25FeHRlcm5hbGl6ZWRTdHJpbmdMaXRlcmFsPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3BlY2lhbFBhcmFtZXRlckhpZGluZ0ZpZWxkPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN0YXRpY0FjY2Vzc1JlY2VpdmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN5bnRoZXRpY0FjY2Vzc0VtdWxhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udHlwZVBhcmFtZXRlckhpZGluZz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuY2hlY2tlZFR5cGVPcGVyYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmRvY3VtZW50ZWRFbXB0eUJsb2NrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeUVsc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5VHlwZUNoZWNrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnF1YWxpZmllZEZpZWxkQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb25XaGVuT3ZlcnJpZGluZz1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRJbXBvcnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5PdmVycmlkaW5nQ29uY3JldGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUHJpdmF0ZU1lbWJlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmU1NmUwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jTW9uIEphbiAzMCAxMDo0MDoxMiBFU1QgMjAwNgotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0xCi1jb21waWxlcnMucC5uby1yZXF1aXJlZC1hdHQ9MAotY29tcGlsZXJzLnAubm90LWV4dGVybmFsaXplZC1hdHQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1hdHRyaWJ1dGU9MAotY29tcGlsZXJzLnAudW5rbm93bi1jbGFzcz0wCi1jb21waWxlcnMucC51bmtub3duLWVsZW1lbnQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1yZXNvdXJjZT0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWV4LXBvaW50cz0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWltcG9ydD0wCi1jb21waWxlcnMudXNlLXByb2plY3Q9dHJ1ZQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL01FVEEtSU5GL01BTklGRVNULk1GIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YjI0ZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLndzdC53czsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4xLjEwMy5xdWFsaWZpZXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW4KLUJ1bmRsZS1WZW5kb3I6ICVQTFVHSU5fUFJPVklERVIKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb21tb247eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuY29udmVydGVyLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHQ7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9uczt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnk7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LnV0aWw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXg7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC51dGlsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkudXRpbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5O3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuaW1wbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LnV0aWw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9uaXRvcjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW47eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXM7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnk7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwudXRpbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlcjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2lsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7eC1pbnRlcm5hbDo9dHJ1ZQotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmludGVybmV0Lm1vbml0b3IuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDIsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAyLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmU7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAxLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlcjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDAsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuY29tbW9uO2J1bmRsZS12ZXJzaW9uPSJbMi4yLjAsMy4wLjApIiwKLSBqYXZheC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS41LjAsMS42LjApIiwKLSBvcmcuYXBhY2hlLndzaWw0ajtidW5kbGUtdmVyc2lvbj0iWzEuMC4wLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudjtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3M7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQ7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMS4wKSIsCi0gb3JnLmVjbGlwc2UuZW1mLmVjb3JlO2J1bmRsZS12ZXJzaW9uPSJbMi4yLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1pO2J1bmRsZS12ZXJzaW9uPSJbMi4yLjAsMy4wLjApIiwKLSBvcmcuZWNsaXBzZS54c2Q7YnVuZGxlLXZlcnNpb249IlsyLjMuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24udXJpcmVzb2x2ZXI7YnVuZGxlLXZlcnNpb249IlsxLjEuMzAxLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGw7YnVuZGxlLXZlcnNpb249IlsxLjIuMCwxLjMuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTtidW5kbGUtdmVyc2lvbj0iWzEuMC4wLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9ucztidW5kbGUtdmVyc2lvbj0iWzMuMy4wLDQuMC4wKSIKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL1JULmdlbm1vZGVsIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvUlQuZ2VubW9kZWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhYWE0ZjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvUlQuZ2VubW9kZWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxnZW5tb2RlbDpHZW5Nb2RlbCB4bWk6dmVyc2lvbj0iMi4wIgotICAgIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6ZWNvcmU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUiCi0gICAgeG1sbnM6Z2VubW9kZWw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiIG1vZGVsRGlyZWN0b3J5PSIvUmVnaXN0cnlNb2RlbDIvc3JjIgotICAgIGVkaXREaXJlY3Rvcnk9Ii9SZWdpc3RyeU1vZGVsMi5lZGl0L3NyYyIgZWRpdG9yRGlyZWN0b3J5PSIvUmVnaXN0cnlNb2RlbDIuZWRpdG9yL3NyYyIKLSAgICBtb2RlbFBsdWdpbklEPSJSZWdpc3RyeU1vZGVsMiIgcnVudGltZUphcj0idHJ1ZSIgbW9kZWxOYW1lPSJSVCIgZWRpdFBsdWdpbkNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXgucHJvdmlkZXIuUlRFZGl0UGx1Z2luIgotICAgIGVkaXRvclBsdWdpbkNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXgucHJlc2VudGF0aW9uLlJURWRpdG9yUGx1Z2luIgotICAgIHJ1bnRpbWVDb21wYXRpYmlsaXR5PSJmYWxzZSI+Ci0gIDxmb3JlaWduTW9kZWw+SW5kZXgueHNkPC9mb3JlaWduTW9kZWw+Ci0gIDxmb3JlaWduTW9kZWw+UmVnaXN0cnkueHNkPC9mb3JlaWduTW9kZWw+Ci0gIDxmb3JlaWduTW9kZWw+VURESVJlZ2lzdHJ5LnhzZDwvZm9yZWlnbk1vZGVsPgotICA8Zm9yZWlnbk1vZGVsPlRheG9ub215LnhzZDwvZm9yZWlnbk1vZGVsPgotICA8Z2VuUGFja2FnZXMgcHJlZml4PSJSVEluZGV4IiBiYXNlUGFja2FnZT0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMCIKLSAgICAgIHJlc291cmNlPSJYTUwiIGVjb3JlUGFja2FnZT0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlIy8iPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0Rlc2NyaXB0aW9uIj4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9EZXNjcmlwdGlvbi92YWx1ZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0Rlc2NyaXB0aW9uL2xhbmciLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlIy8vRG9jdW1lbnRSb290Ij4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0RvY3VtZW50Um9vdC9taXhlZCIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0RvY3VtZW50Um9vdC94TUxOU1ByZWZpeE1hcCIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0RvY3VtZW50Um9vdC94U0lTY2hlbWFMb2NhdGlvbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0RvY3VtZW50Um9vdC9kZXNjcmlwdGlvbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0RvY3VtZW50Um9vdC9pbmRleCIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0RvY3VtZW50Um9vdC9uYW1lIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0luZGV4Ij4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlIy8vSW5kZXgvbmFtZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9JbmRleC9kZXNjcmlwdGlvbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9JbmRleC9yZWdpc3RyeSIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9JbmRleC90YXhvbm9teSIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9OYW1lIj4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9OYW1lL3ZhbHVlIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlIy8vTmFtZS9sYW5nIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICA8L2dlblBhY2thZ2VzPgotICA8Z2VuUGFja2FnZXMgcHJlZml4PSJUYXhvbm9teSIgYmFzZVBhY2thZ2U9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAiCi0gICAgICByZXNvdXJjZT0iWE1MIiBlY29yZVBhY2thZ2U9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLyI+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL0NhdGVnb3J5Ij4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL0NhdGVnb3J5L25sbmFtZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vQ2F0ZWdvcnkvY2F0ZWdvcnkiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vQ2F0ZWdvcnkvY29kZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9DYXRlZ29yeS9uYW1lIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9Eb2N1bWVudFJvb3QiPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL0RvY3VtZW50Um9vdC9taXhlZCIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9Eb2N1bWVudFJvb3QveE1MTlNQcmVmaXhNYXAiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vRG9jdW1lbnRSb290L3hTSVNjaGVtYUxvY2F0aW9uIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL0RvY3VtZW50Um9vdC9jYXRlZ29yeSIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvbmFtZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvdGF4b25vbXkiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL05hbWUiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9OYW1lL3ZhbHVlIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL05hbWUvbGFuZyIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vVGF4b25vbXkiPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vVGF4b25vbXkvbmxuYW1lIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9UYXhvbm9teS9jYXRlZ29yeSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9UYXhvbm9teS9pZCIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9UYXhvbm9teS9sb2NhdGlvbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9UYXhvbm9teS9uYW1lIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL1RheG9ub215L3JlZiIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9UYXhvbm9teS90bW9kZWxLZXkiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gIDwvZ2VuUGFja2FnZXM+Ci0gIDxnZW5QYWNrYWdlcyBwcmVmaXg9IlJlZ2lzdHJ5IiBiYXNlUGFja2FnZT0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMCIKLSAgICAgIHJlc291cmNlPSJYTUwiIGVjb3JlUGFja2FnZT0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSMvIj4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vRGVzY3JpcHRpb24iPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9EZXNjcmlwdGlvbi92YWx1ZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9EZXNjcmlwdGlvbi9sYW5nIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QiPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSMvL0RvY3VtZW50Um9vdC9taXhlZCIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QveE1MTlNQcmVmaXhNYXAiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vRG9jdW1lbnRSb290L3hTSVNjaGVtYUxvY2F0aW9uIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSMvL0RvY3VtZW50Um9vdC9kZXNjcmlwdGlvbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvbmFtZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvcmVnaXN0cnkiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSMvL05hbWUiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9OYW1lL3ZhbHVlIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSMvL05hbWUvbGFuZyIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vUmVnaXN0cnkiPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vUmVnaXN0cnkvbmFtZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vUmVnaXN0cnkvZGVzY3JpcHRpb24iLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vUmVnaXN0cnkvaWQiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vUmVnaXN0cnkvbG9jYXRpb24iLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vUmVnaXN0cnkvcmVmIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICA8L2dlblBhY2thZ2VzPgotICA8Z2VuUGFja2FnZXMgcHJlZml4PSJVRERJUmVnaXN0cnkiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwIgotICAgICAgcmVzb3VyY2U9IlhNTCIgZWNvcmVQYWNrYWdlPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZSMvIj4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZSMvL0RvY3VtZW50Um9vdCI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZSMvL0RvY3VtZW50Um9vdC9taXhlZCIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vRG9jdW1lbnRSb290L3hNTE5TUHJlZml4TWFwIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QveFNJU2NoZW1hTG9jYXRpb24iLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZSMvL0RvY3VtZW50Um9vdC90YXhvbm9taWVzIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvdWRkaVJlZ2lzdHJ5Ii8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVGF4b25vbWllcyI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVGF4b25vbWllcy90YXhvbm9teSIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZSMvL1VERElSZWdpc3RyeSI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUjLy9VRERJUmVnaXN0cnkvdmVyc2lvbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L2Rpc2NvdmVyeVVSTCIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L3B1YmxpY2F0aW9uVVJMIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUjLy9VRERJUmVnaXN0cnkvc2VjdXJlZERpc2NvdmVyeVVSTCIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L3NlY3VyZWRQdWJsaWNhdGlvblVSTCIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L2RlZmF1bHRMb2dpbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L2RlZmF1bHRQYXNzd29yZCIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZSMvL1VERElSZWdpc3RyeS90YXhvbm9taWVzIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICA8L2dlblBhY2thZ2VzPgotPC9nZW5tb2RlbDpHZW5Nb2RlbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL1JULnhzZDJlY29yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL1JULnhzZDJlY29yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JkYWU4MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9SVC54c2QyZWNvcmUKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iQVNDSUkiPz4KLTx4c2QyZWNvcmU6WFNEMkVjb3JlTWFwcGluZ1Jvb3QgeG1pOnZlcnNpb249IjIuMCIKLSAgICB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiIHhtbG5zOnhzZDJlY29yZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9YU0QyRWNvcmUiIGlucHV0cz0iSW5kZXgueHNkIy8gaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwueHNkIy8gVGF4b25vbXkueHNkIy8gUmVnaXN0cnkueHNkIy8gVURESVJlZ2lzdHJ5LnhzZCMvIgotICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLyBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlIy8gb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUjLyIKLSAgICB0b3BUb0JvdHRvbT0idHJ1ZSI+Ci0gIDxuZXN0ZWQgaW5wdXRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QjLy9iYXNlO1hTREF0dHJpYnV0ZURlY2xhcmF0aW9uPTIiCi0gICAgICBvdXRwdXRzPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UjLy9YTUxOYW1lc3BhY2VEb2N1bWVudFJvb3QvYmFzZSIvPgotICA8bmVzdGVkIGlucHV0cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwueHNkIy8vaWQ7WFNEQXR0cmlidXRlRGVjbGFyYXRpb249MyIgb3V0cHV0cz0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIy8vWE1MTmFtZXNwYWNlRG9jdW1lbnRSb290L2lkIi8+Ci0gIDxuZXN0ZWQgaW5wdXRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QjLy9sYW5nO1hTREF0dHJpYnV0ZURlY2xhcmF0aW9uIiBvdXRwdXRzPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UjLy9YTUxOYW1lc3BhY2VEb2N1bWVudFJvb3QvbGFuZyIvPgotICA8bmVzdGVkIGlucHV0cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwueHNkIy8vbGFuZztYU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbi9YU0RTaW1wbGVUeXBlRGVmaW5pdGlvbiIKLSAgICAgIG91dHB1dHM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL0xhbmd1YWdlIi8+Ci0gIDxuZXN0ZWQgaW5wdXRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QjLy9zcGFjZTtYU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbj0xIgotICAgICAgb3V0cHV0cz0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIy8vWE1MTmFtZXNwYWNlRG9jdW1lbnRSb290L3NwYWNlIi8+Ci0gIDxuZXN0ZWQgaW5wdXRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QjLy9zcGFjZTtYU0RBdHRyaWJ1dGVEZWNsYXJhdGlvbj0xL1hTRFNpbXBsZVR5cGVEZWZpbml0aW9uIgotICAgICAgb3V0cHV0cz0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIy8vU3BhY2VUeXBlIi8+Ci0gIDxuZXN0ZWQgaW5wdXRzPSJidW5kbGVlbnRyeTovLzE4MzkvY2FjaGUvd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS54c2QjLy9zdHJpbmc7WFNEU2ltcGxlVHlwZURlZmluaXRpb249NyIKLSAgICAgIG91dHB1dHM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL1N0cmluZyIvPgotICA8bmVzdGVkIGlucHV0cz0iVGF4b25vbXkueHNkIy8vTmFtZTtYU0RDb21wbGV4VHlwZURlZmluaXRpb249MiIgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL05hbWUiPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJUYXhvbm9teS54c2QjLy9OYW1lO1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0yL1hTREF0dHJpYnV0ZVVzZSIKLSAgICAgICAgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL05hbWUvbGFuZyIvPgotICA8L25lc3RlZD4KLSAgPG5lc3RlZCBpbnB1dHM9IlRheG9ub215LnhzZCMvL0NhdGVnb3J5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0xIiBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vQ2F0ZWdvcnkiPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJUYXhvbm9teS54c2QjLy9DYXRlZ29yeTtYU0RDb21wbGV4VHlwZURlZmluaXRpb249MS9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlIgotICAgICAgICBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vQ2F0ZWdvcnkvbmxuYW1lIi8+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IlRheG9ub215LnhzZCMvL0NhdGVnb3J5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0xL1hTRFBhcnRpY2xlL1hTRE1vZGVsR3JvdXAvWFNEUGFydGljbGU9MSIKLSAgICAgICAgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL0NhdGVnb3J5L2NhdGVnb3J5Ii8+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IlRheG9ub215LnhzZCMvL0NhdGVnb3J5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0xL1hTREF0dHJpYnV0ZVVzZT0xIgotICAgICAgICBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vQ2F0ZWdvcnkvY29kZSIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJUYXhvbm9teS54c2QjLy9DYXRlZ29yeTtYU0RDb21wbGV4VHlwZURlZmluaXRpb249MS9YU0RBdHRyaWJ1dGVVc2UiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9DYXRlZ29yeS9uYW1lIi8+Ci0gIDwvbmVzdGVkPgotICA8bmVzdGVkIGlucHV0cz0iVGF4b25vbXkueHNkIy8vY2F0ZWdvcnk7WFNERWxlbWVudERlY2xhcmF0aW9uPTEiIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvY2F0ZWdvcnkiLz4KLSAgPG5lc3RlZCBpbnB1dHM9IlJlZ2lzdHJ5LnhzZCMvL0Rlc2NyaXB0aW9uO1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0yIiBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vRGVzY3JpcHRpb24iPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJSZWdpc3RyeS54c2QjLy9EZXNjcmlwdGlvbjtYU0RDb21wbGV4VHlwZURlZmluaXRpb249Mi9YU0RBdHRyaWJ1dGVVc2UiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9EZXNjcmlwdGlvbi9sYW5nIi8+Ci0gIDwvbmVzdGVkPgotICA8bmVzdGVkIGlucHV0cz0iUmVnaXN0cnkueHNkIy8vZGVzY3JpcHRpb247WFNERWxlbWVudERlY2xhcmF0aW9uPTIiIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvZGVzY3JpcHRpb24iLz4KLSAgPG5lc3RlZCBpbnB1dHM9IkluZGV4LnhzZCMvL0Rlc2NyaXB0aW9uO1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0yIiBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9EZXNjcmlwdGlvbiI+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IkluZGV4LnhzZCMvL0Rlc2NyaXB0aW9uO1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0yL1hTREF0dHJpYnV0ZVVzZSIKLSAgICAgICAgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlIy8vRGVzY3JpcHRpb24vbGFuZyIvPgotICA8L25lc3RlZD4KLSAgPG5lc3RlZCBpbnB1dHM9IkluZGV4LnhzZCMvL2Rlc2NyaXB0aW9uO1hTREVsZW1lbnREZWNsYXJhdGlvbj0yIiBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9Eb2N1bWVudFJvb3QvZGVzY3JpcHRpb24iLz4KLSAgPG5lc3RlZCBpbnB1dHM9IkluZGV4LnhzZCMvL05hbWU7WFNEQ29tcGxleFR5cGVEZWZpbml0aW9uPTEiIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL05hbWUiPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJJbmRleC54c2QjLy9OYW1lO1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0xL1hTREF0dHJpYnV0ZVVzZSIgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlIy8vTmFtZS9sYW5nIi8+Ci0gIDwvbmVzdGVkPgotICA8bmVzdGVkIGlucHV0cz0iUmVnaXN0cnkueHNkIy8vTmFtZTtYU0RDb21wbGV4VHlwZURlZmluaXRpb249MSIgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSMvL05hbWUiPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJSZWdpc3RyeS54c2QjLy9OYW1lO1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0xL1hTREF0dHJpYnV0ZVVzZSIKLSAgICAgICAgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSMvL05hbWUvbGFuZyIvPgotICA8L25lc3RlZD4KLSAgPG5lc3RlZCBpbnB1dHM9ImJ1bmRsZWVudHJ5Oi8vMTgzOS9jYWNoZS93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLnhzZCMvL2FueVVSSTtYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbj0yMyIKLSAgICAgIG91dHB1dHM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL0FueVVSSSIvPgotICA8bmVzdGVkIGlucHV0cz0iUmVnaXN0cnkueHNkIy8vUmVnaXN0cnk7WFNEQ29tcGxleFR5cGVEZWZpbml0aW9uIiBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vUmVnaXN0cnkiPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJSZWdpc3RyeS54c2QjLy9SZWdpc3RyeTtYU0RDb21wbGV4VHlwZURlZmluaXRpb24vWFNEUGFydGljbGUvWFNETW9kZWxHcm91cC9YU0RQYXJ0aWNsZSIKLSAgICAgICAgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSMvL1JlZ2lzdHJ5L25hbWUiLz4KLSAgICA8bmVzdGVkIGlucHV0cz0iUmVnaXN0cnkueHNkIy8vUmVnaXN0cnk7WFNEQ29tcGxleFR5cGVEZWZpbml0aW9uL1hTRFBhcnRpY2xlL1hTRE1vZGVsR3JvdXAvWFNEUGFydGljbGU9MSIKLSAgICAgICAgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSMvL1JlZ2lzdHJ5L2Rlc2NyaXB0aW9uIi8+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IlJlZ2lzdHJ5LnhzZCMvL1JlZ2lzdHJ5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RBdHRyaWJ1dGVVc2UiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9SZWdpc3RyeS9pZCIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJSZWdpc3RyeS54c2QjLy9SZWdpc3RyeTtYU0RDb21wbGV4VHlwZURlZmluaXRpb24vWFNEQXR0cmlidXRlVXNlPTIiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9SZWdpc3RyeS9sb2NhdGlvbiIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJSZWdpc3RyeS54c2QjLy9SZWdpc3RyeTtYU0RDb21wbGV4VHlwZURlZmluaXRpb24vWFNEQXR0cmlidXRlVXNlPTEiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9SZWdpc3RyeS9yZWYiLz4KLSAgPC9uZXN0ZWQ+Ci0gIDxuZXN0ZWQgaW5wdXRzPSJUYXhvbm9teS54c2QjLy9UYXhvbm9teTtYU0RDb21wbGV4VHlwZURlZmluaXRpb24iIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9UYXhvbm9teSI+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IlRheG9ub215LnhzZCMvL1RheG9ub215O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlIgotICAgICAgICBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vVGF4b25vbXkvbmxuYW1lIi8+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IlRheG9ub215LnhzZCMvL1RheG9ub215O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTEiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9UYXhvbm9teS9jYXRlZ29yeSIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJUYXhvbm9teS54c2QjLy9UYXhvbm9teTtYU0RDb21wbGV4VHlwZURlZmluaXRpb24vWFNEQXR0cmlidXRlVXNlIgotICAgICAgICBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vVGF4b25vbXkvaWQiLz4KLSAgICA8bmVzdGVkIGlucHV0cz0iVGF4b25vbXkueHNkIy8vVGF4b25vbXk7WFNEQ29tcGxleFR5cGVEZWZpbml0aW9uL1hTREF0dHJpYnV0ZVVzZT0yIgotICAgICAgICBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vVGF4b25vbXkvbG9jYXRpb24iLz4KLSAgICA8bmVzdGVkIGlucHV0cz0iVGF4b25vbXkueHNkIy8vVGF4b25vbXk7WFNEQ29tcGxleFR5cGVEZWZpbml0aW9uL1hTREF0dHJpYnV0ZVVzZT0zIgotICAgICAgICBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vVGF4b25vbXkvbmFtZSIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJUYXhvbm9teS54c2QjLy9UYXhvbm9teTtYU0RDb21wbGV4VHlwZURlZmluaXRpb24vWFNEQXR0cmlidXRlVXNlPTEiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9UYXhvbm9teS9yZWYiLz4KLSAgICA8bmVzdGVkIGlucHV0cz0iVGF4b25vbXkueHNkIy8vVGF4b25vbXk7WFNEQ29tcGxleFR5cGVEZWZpbml0aW9uL1hTREF0dHJpYnV0ZVVzZT00IgotICAgICAgICBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vVGF4b25vbXkvdG1vZGVsS2V5Ii8+Ci0gIDwvbmVzdGVkPgotICA8bmVzdGVkIGlucHV0cz0iSW5kZXgueHNkIy8vSW5kZXg7WFNEQ29tcGxleFR5cGVEZWZpbml0aW9uIiBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9JbmRleCI+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IkluZGV4LnhzZCMvL0luZGV4O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlIgotICAgICAgICBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9JbmRleC9uYW1lIi8+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IkluZGV4LnhzZCMvL0luZGV4O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTEiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0luZGV4L2Rlc2NyaXB0aW9uIi8+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IkluZGV4LnhzZCMvL0luZGV4O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTIiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0luZGV4L3JlZ2lzdHJ5Ii8+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IkluZGV4LnhzZCMvL0luZGV4O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTMiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZSMvL0luZGV4L3RheG9ub215Ii8+Ci0gIDwvbmVzdGVkPgotICA8bmVzdGVkIGlucHV0cz0iSW5kZXgueHNkIy8vaW5kZXg7WFNERWxlbWVudERlY2xhcmF0aW9uIiBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguZWNvcmUjLy9Eb2N1bWVudFJvb3QvaW5kZXgiLz4KLSAgPG5lc3RlZCBpbnB1dHM9IlJlZ2lzdHJ5LnhzZCMvL25hbWU7WFNERWxlbWVudERlY2xhcmF0aW9uPTEiIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvbmFtZSIvPgotICA8bmVzdGVkIGlucHV0cz0iSW5kZXgueHNkIy8vbmFtZTtYU0RFbGVtZW50RGVjbGFyYXRpb249MSIgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlIy8vRG9jdW1lbnRSb290L25hbWUiLz4KLSAgPG5lc3RlZCBpbnB1dHM9IlRheG9ub215LnhzZCMvL25hbWU7WFNERWxlbWVudERlY2xhcmF0aW9uPTIiIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvbmFtZSIvPgotICA8bmVzdGVkIGlucHV0cz0iUmVnaXN0cnkueHNkIy8vcmVnaXN0cnk7WFNERWxlbWVudERlY2xhcmF0aW9uIiBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vRG9jdW1lbnRSb290L3JlZ2lzdHJ5Ii8+Ci0gIDxuZXN0ZWQgaW5wdXRzPSJUYXhvbm9teS54c2QjLy90YXhvbm9teTtYU0RFbGVtZW50RGVjbGFyYXRpb24iIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvdGF4b25vbXkiLz4KLSAgPG5lc3RlZCBpbnB1dHM9IlVERElSZWdpc3RyeS54c2QjLy9UYXhvbm9taWVzO1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbj0xIiBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZSMvL1RheG9ub21pZXMiPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJVRERJUmVnaXN0cnkueHNkIy8vVGF4b25vbWllcztYU0RDb21wbGV4VHlwZURlZmluaXRpb249MS9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlIgotICAgICAgICBvdXRwdXRzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZSMvL1RheG9ub21pZXMvdGF4b25vbXkiLz4KLSAgPC9uZXN0ZWQ+Ci0gIDxuZXN0ZWQgaW5wdXRzPSJVRERJUmVnaXN0cnkueHNkIy8vdGF4b25vbWllcztYU0RFbGVtZW50RGVjbGFyYXRpb249MSIgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvdGF4b25vbWllcyIvPgotICA8bmVzdGVkIGlucHV0cz0iVURESVJlZ2lzdHJ5LnhzZCMvL1VERElSZWdpc3RyeTtYU0RDb21wbGV4VHlwZURlZmluaXRpb24iIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5Ij4KLSAgICA8bmVzdGVkIGlucHV0cz0iVURESVJlZ2lzdHJ5LnhzZCMvL1VERElSZWdpc3RyeTtYU0RDb21wbGV4VHlwZURlZmluaXRpb24vWFNEUGFydGljbGUvWFNETW9kZWxHcm91cC9YU0RQYXJ0aWNsZSIKLSAgICAgICAgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUjLy9VRERJUmVnaXN0cnkvdmVyc2lvbiIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJVRERJUmVnaXN0cnkueHNkIy8vVURESVJlZ2lzdHJ5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTEiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L2Rpc2NvdmVyeVVSTCIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJVRERJUmVnaXN0cnkueHNkIy8vVURESVJlZ2lzdHJ5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTIiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L3B1YmxpY2F0aW9uVVJMIi8+Ci0gICAgPG5lc3RlZCBpbnB1dHM9IlVERElSZWdpc3RyeS54c2QjLy9VRERJUmVnaXN0cnk7WFNEQ29tcGxleFR5cGVEZWZpbml0aW9uL1hTRFBhcnRpY2xlL1hTRE1vZGVsR3JvdXAvWFNEUGFydGljbGU9MyIKLSAgICAgICAgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUjLy9VRERJUmVnaXN0cnkvc2VjdXJlZERpc2NvdmVyeVVSTCIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJVRERJUmVnaXN0cnkueHNkIy8vVURESVJlZ2lzdHJ5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTQiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L3NlY3VyZWRQdWJsaWNhdGlvblVSTCIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJVRERJUmVnaXN0cnkueHNkIy8vVURESVJlZ2lzdHJ5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTUiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L2RlZmF1bHRMb2dpbiIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJVRERJUmVnaXN0cnkueHNkIy8vVURESVJlZ2lzdHJ5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTYiCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L2RlZmF1bHRQYXNzd29yZCIvPgotICAgIDxuZXN0ZWQgaW5wdXRzPSJVRERJUmVnaXN0cnkueHNkIy8vVURESVJlZ2lzdHJ5O1hTRENvbXBsZXhUeXBlRGVmaW5pdGlvbi9YU0RQYXJ0aWNsZS9YU0RNb2RlbEdyb3VwL1hTRFBhcnRpY2xlPTciCi0gICAgICAgIG91dHB1dHM9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmVjb3JlIy8vVURESVJlZ2lzdHJ5L3RheG9ub21pZXMiLz4KLSAgPC9uZXN0ZWQ+Ci0gIDxuZXN0ZWQgaW5wdXRzPSJVRERJUmVnaXN0cnkueHNkIy8vdWRkaVJlZ2lzdHJ5O1hTREVsZW1lbnREZWNsYXJhdGlvbiIgb3V0cHV0cz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUjLy9Eb2N1bWVudFJvb3QvdWRkaVJlZ2lzdHJ5Ii8+Ci08L3hzZDJlY29yZTpYU0QyRWNvcmVNYXBwaW5nUm9vdD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2Fib3V0Lmh0bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2J1aWxkLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2E3M2I2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1zb3VyY2UuLiA9IHNyYy8KLW91dHB1dC4uID0gYmluLwotYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICAuLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIGptZXJnZXIvLFwKLSAgICAgICAgICAgICAgIGljb25zLwotc3JjLmluY2x1ZGVzID0gY29tcG9uZW50LnhtbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvY29tcG9uZW50LnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2NvbXBvbmVudC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZTM1YzYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvY29tcG9uZW50LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y29tcG9uZW50IHhtbG5zPSJodHRwOi8vZWNsaXBzZS5vcmcvd3RwL3JlbGVuZy90b29scy9jb21wb25lbnQtbW9kZWwiIG5hbWU9Im9yZy5lY2xpcHNlLndzdC53cyI+Ci0gICA8Y29tcG9uZW50LWRlcGVuZHMgdW5yZXN0cmljdGVkPSJ0cnVlIj4KLSAgIDwvY29tcG9uZW50LWRlcGVuZHM+Ci0gICA8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MiIGZyYWdtZW50PSJmYWxzZSIvPgotICAgPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLnBhcnNlciIgZnJhZ21lbnQ9ImZhbHNlIi8+Ci0gICA8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MudWkiIGZyYWdtZW50PSJmYWxzZSIvPgotICAgPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmV4cGxvcmVyIiBmcmFnbWVudD0iZmFsc2UiLz4KLSAgIDxwbHVnaW4gaWQ9Im9yZy5hcGFjaGUuYXhpcyIgZnJhZ21lbnQ9ImZhbHNlIi8+Ci0gICA8cGx1Z2luIGlkPSJvcmcuYXBhY2hlLndzaWw0aiIgZnJhZ21lbnQ9ImZhbHNlIi8+Ci0gICA8cGx1Z2luIGlkPSJvcmcudWRkaTRqIiBmcmFnbWVudD0iZmFsc2UiLz4KLTwvY29tcG9uZW50PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvaWNvbnMvZnVsbC9vYmoxNi93c2ljYXQuZ2lmIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvaWNvbnMvZnVsbC9vYmoxNi93c2ljYXQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Njk5ODNiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2ljb25zL2Z1bGwvb2JqMTYvd3NpY2F0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2ljb25zL2Z1bGwvb2JqMTYvd3NpY2F0X2NoaWxkLmdpZiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2ljb25zL2Z1bGwvb2JqMTYvd3NpY2F0X2NoaWxkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRhOWYzZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9pY29ucy9mdWxsL29iajE2L3dzaWNhdF9jaGlsZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9qbWVyZ2VyL21lcmdlLnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2ptZXJnZXIvbWVyZ2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWUyMTM0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL2ptZXJnZXIvbWVyZ2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhLS0gTWVyZ2UgcnVsZXMgdXNlZCBieSBKTWVyZ2VyIC0tPgotPG1lcmdlOm9wdGlvbnMgCi0JeG1sbnM6bWVyZ2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2VjbGlwc2UvZW1mL2NvZGVnZW4vam1lcmdlL09wdGlvbnMiPgotCTxtZXJnZTpwdWxsIAotCQlzb3VyY2VHZXQ9Ik1ldGhvZC9nZXRSZXR1cm5UeXBlIiAKLQkJdGFyZ2V0UHV0PSJNZXRob2Qvc2V0UmV0dXJuVHlwZSIvPgotCTxtZXJnZTpwdWxsIAotCQlzb3VyY2VHZXQ9Ik1ldGhvZC9nZXRFeGNlcHRpb25zIiAKLQkJdGFyZ2V0UHV0PSJNZXRob2QvYWRkRXhjZXB0aW9uIi8+Ci0KLTwhLS0gTWVyZ2UgcnVsZXMgdG8gaGFuZGxlIGFubm90YXRpb246Ci0JLSBXaXRoIHRoaXMgcHVsbCBydWxlLCBhbm5vdGF0aW9ucyBpbiB0aGUgdGFyZ2V0IGlzIHJlcGxhY2VkIGJ5IGFubm90YXRpb25zIG9mIHRoZSAKLQlzYW1lIG5hbWUgaW4gdGhlIHNvdXJjZS4KLQktIFdpdGggdGhpcyBzd2VlcCBydWxlLCBhbnkgYW5ub3RhdGlvbiBpbiB0aGUgdGFyZ2V0IHRoYXQgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgCi0gIAlzb3VyY2UgaXMgY29tbWVudGVkIG91dC4gCi0gIAktIEJ5IGRlZmF1bHQsIGFueSBhbm5vdGF0aW9uIGluIHRoZSBzb3VyY2UgdGhhdCBpcyBub3QgaW4gdGhlIHRhcmdldCBhcmUgcHVsbGVkIGludG8gdGhlIHRhcmdldC4KLS0tPgotCi0JPG1lcmdlOnB1bGwgCi0gICAgCXNvdXJjZUdldD0iQW5ub3RhdGlvbi9nZXRDb250ZW50cyIKLSAgICAJdGFyZ2V0UHV0PSJBbm5vdGF0aW9uL3NldENvbnRlbnRzIi8+Ci0gICAKLSAgCTxtZXJnZTpzd2VlcCBzZWxlY3Q9IkFubm90YXRpb24iIGFjdGlvbj0iY29tbWVudCIvPgotCQkKLTwvbWVyZ2U6b3B0aW9ucz4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL21vZGVsL0luZGV4LnhzZCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL21vZGVsL0luZGV4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRjZjU0MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9tb2RlbC9JbmRleC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHhzZDpzY2hlbWEKLXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi14bWxuczpydGk9Imh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgiCi14bWxuczpyZWc9Imh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5IgoteG1sbnM6dGF4PSJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teSIKLXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2VjbGlwc2Uub3JnL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleCI+Ci0KLQk8eHNkOmltcG9ydAotCW5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIgotCXNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QiLz4KLQotCTx4c2Q6aW1wb3J0Ci0JbmFtZXNwYWNlPSJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeSIKLQlzY2hlbWFMb2NhdGlvbj0iLi9SZWdpc3RyeS54c2QiLz4KLQotCTx4c2Q6aW1wb3J0Ci0JbmFtZXNwYWNlPSJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teSIKLQlzY2hlbWFMb2NhdGlvbj0iLi9UYXhvbm9teS54c2QiLz4KLQotCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbmRleCIgdHlwZT0icnRpOkluZGV4Ii8+Ci0JCi0JPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJJbmRleCI+Ci0JCTx4c2Q6c2VxdWVuY2U+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0ibmFtZSIgdHlwZT0icnRpOk5hbWUiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0icnRpOkRlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0JCQk8eHNkOmVsZW1lbnQgcmVmPSJyZWc6cmVnaXN0cnkiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLQkJCTx4c2Q6ZWxlbWVudCByZWY9InRheDp0YXhvbm9teSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotCQk8L3hzZDpzZXF1ZW5jZT4KLQk8L3hzZDpjb21wbGV4VHlwZT4KLQotCTx4c2Q6ZWxlbWVudCBuYW1lPSJuYW1lIiB0eXBlPSJydGk6TmFtZSIvPgotCi0JPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJOYW1lIj4KLQkJPHhzZDpzaW1wbGVDb250ZW50PgotCQkJPHhzZDpleHRlbnNpb24gYmFzZT0ieHNkOnN0cmluZyI+Ci0JCQkJPHhzZDphdHRyaWJ1dGUgcmVmPSJ4bWw6bGFuZyIgdXNlPSJvcHRpb25hbCIvPgotCQkJPC94c2Q6ZXh0ZW5zaW9uPgotCQk8L3hzZDpzaW1wbGVDb250ZW50PgotCTwveHNkOmNvbXBsZXhUeXBlPgotCi0JPHhzZDplbGVtZW50IG5hbWU9ImRlc2NyaXB0aW9uIiB0eXBlPSJydGk6RGVzY3JpcHRpb24iLz4KLQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iRGVzY3JpcHRpb24iPgotCQk8eHNkOnNpbXBsZUNvbnRlbnQ+Ci0JCQk8eHNkOmV4dGVuc2lvbiBiYXNlPSJ4c2Q6c3RyaW5nIj4KLQkJCQk8eHNkOmF0dHJpYnV0ZSByZWY9InhtbDpsYW5nIiB1c2U9Im9wdGlvbmFsIi8+Ci0JCQk8L3hzZDpleHRlbnNpb24+Ci0JCTwveHNkOnNpbXBsZUNvbnRlbnQ+Ci0JPC94c2Q6Y29tcGxleFR5cGU+Ci0KLTwveHNkOnNjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9tb2RlbC9SZWdpc3RyeS54c2QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9tb2RlbC9SZWdpc3RyeS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZTE5NjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvbW9kZWwvUmVnaXN0cnkueHNkCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2Q6c2NoZW1hCi14bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgoteG1sbnM6cmVnPSJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeSIKLXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2VjbGlwc2Uub3JnL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkiPgotCi0JPHhzZDppbXBvcnQKLQluYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIKLQlzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwueHNkIi8+Ci0KLQk8eHNkOmVsZW1lbnQgbmFtZT0icmVnaXN0cnkiIHR5cGU9InJlZzpSZWdpc3RyeSIvPgotCQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iUmVnaXN0cnkiPgotCQk8eHNkOnNlcXVlbmNlPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Im5hbWUiIHR5cGU9InJlZzpOYW1lIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9InJlZzpEZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotCQk8L3hzZDpzZXF1ZW5jZT4KLQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzZDphbnlVUkkiIHVzZT0ib3B0aW9uYWwiLz4KLQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0icmVmIiB0eXBlPSJ4c2Q6YW55VVJJIiB1c2U9Im9wdGlvbmFsIi8+Ci0JCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJ4c2Q6YW55VVJJIiB1c2U9Im9wdGlvbmFsIi8+Ci0JPC94c2Q6Y29tcGxleFR5cGU+Ci0KLQk8eHNkOmVsZW1lbnQgbmFtZT0ibmFtZSIgdHlwZT0icmVnOk5hbWUiLz4KLQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iTmFtZSI+Ci0JCTx4c2Q6c2ltcGxlQ29udGVudD4KLQkJCTx4c2Q6ZXh0ZW5zaW9uIGJhc2U9InhzZDpzdHJpbmciPgotCQkJCTx4c2Q6YXR0cmlidXRlIHJlZj0ieG1sOmxhbmciIHVzZT0ib3B0aW9uYWwiLz4KLQkJCTwveHNkOmV4dGVuc2lvbj4KLQkJPC94c2Q6c2ltcGxlQ29udGVudD4KLQk8L3hzZDpjb21wbGV4VHlwZT4KLQotCTx4c2Q6ZWxlbWVudCBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0icmVnOkRlc2NyaXB0aW9uIi8+Ci0KLQk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkRlc2NyaXB0aW9uIj4KLQkJPHhzZDpzaW1wbGVDb250ZW50PgotCQkJPHhzZDpleHRlbnNpb24gYmFzZT0ieHNkOnN0cmluZyI+Ci0JCQkJPHhzZDphdHRyaWJ1dGUgcmVmPSJ4bWw6bGFuZyIgdXNlPSJvcHRpb25hbCIvPgotCQkJPC94c2Q6ZXh0ZW5zaW9uPgotCQk8L3hzZDpzaW1wbGVDb250ZW50PgotCTwveHNkOmNvbXBsZXhUeXBlPgotCi08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvbW9kZWwvVGF4b25vbXkueHNkIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvbW9kZWwvVGF4b25vbXkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjU2YWVjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL21vZGVsL1RheG9ub215LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYQoteG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLXhtbG5zOnRheD0iaHR0cDovL2VjbGlwc2Uub3JnL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkiCi10YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215Ij4KLQotCTx4c2Q6aW1wb3J0Ci0JbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiCi0Jc2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZCIvPgotCi0JPHhzZDplbGVtZW50IG5hbWU9InRheG9ub215IiB0eXBlPSJ0YXg6VGF4b25vbXkiLz4KLQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iVGF4b25vbXkiPgotCQk8eHNkOnNlcXVlbmNlPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Im5sbmFtZSIgdHlwZT0idGF4Ok5hbWUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJjYXRlZ29yeSIgdHlwZT0idGF4OkNhdGVnb3J5IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0JCTwveHNkOnNlcXVlbmNlPgotCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ieHNkOmFueVVSSSIgdXNlPSJvcHRpb25hbCIvPgotCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJyZWYiIHR5cGU9InhzZDphbnlVUkkiIHVzZT0ib3B0aW9uYWwiLz4KLQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0ibG9jYXRpb24iIHR5cGU9InhzZDphbnlVUkkiIHVzZT0ib3B0aW9uYWwiLz4KLQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHNkOnN0cmluZyIgdXNlPSJvcHRpb25hbCIvPgotCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJ0bW9kZWxLZXkiIHR5cGU9InhzZDpzdHJpbmciIHVzZT0icmVxdWlyZWQiLz4KLQk8L3hzZDpjb21wbGV4VHlwZT4KLQotCTx4c2Q6ZWxlbWVudCBuYW1lPSJjYXRlZ29yeSIgdHlwZT0idGF4OkNhdGVnb3J5Ii8+Ci0KLQk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkNhdGVnb3J5Ij4KLQkJPHhzZDpzZXF1ZW5jZT4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJubG5hbWUiIHR5cGU9InRheDpOYW1lIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9InRheDpDYXRlZ29yeSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotCQk8L3hzZDpzZXF1ZW5jZT4KLQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJjb2RlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0JPC94c2Q6Y29tcGxleFR5cGU+Ci0KLQk8eHNkOmVsZW1lbnQgbmFtZT0ibmFtZSIgdHlwZT0idGF4Ok5hbWUiLz4KLQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iTmFtZSI+Ci0JCTx4c2Q6c2ltcGxlQ29udGVudD4KLQkJCTx4c2Q6ZXh0ZW5zaW9uIGJhc2U9InhzZDpzdHJpbmciPgotCQkJCTx4c2Q6YXR0cmlidXRlIHJlZj0ieG1sOmxhbmciIHVzZT0ib3B0aW9uYWwiLz4KLQkJCTwveHNkOmV4dGVuc2lvbj4KLQkJPC94c2Q6c2ltcGxlQ29udGVudD4KLQk8L3hzZDpjb21wbGV4VHlwZT4KLQotPC94c2Q6c2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL21vZGVsL1VERElSZWdpc3RyeS54c2QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9tb2RlbC9VRERJUmVnaXN0cnkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzM2MjYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL21vZGVsL1VERElSZWdpc3RyeS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHhzZDpzY2hlbWEKLXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi14bWxuczp1cmc9Imh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeSIKLXhtbG5zOnJlZz0iaHR0cDovL2VjbGlwc2Uub3JnL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkiCi14bWxuczp0YXg9Imh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215IgotdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkiPgotCi0JPHhzZDppbXBvcnQKLQluYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIKLQlzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwueHNkIi8+Ci0JCi0JPHhzZDppbXBvcnQKLQluYW1lc3BhY2U9Imh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5IgotCXNjaGVtYUxvY2F0aW9uPSIuL1JlZ2lzdHJ5LnhzZCIvPgotCi0JPHhzZDppbXBvcnQKLQluYW1lc3BhY2U9Imh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215IgotCXNjaGVtYUxvY2F0aW9uPSIuL1RheG9ub215LnhzZCIvPgotCi0JPHhzZDplbGVtZW50IG5hbWU9InVkZGlSZWdpc3RyeSIgdHlwZT0idXJnOlVERElSZWdpc3RyeSIvPgotCQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iVURESVJlZ2lzdHJ5Ij4KLQkJPHhzZDpjb21wbGV4Q29udGVudD4KLQkJCTx4c2Q6ZXh0ZW5zaW9uIGJhc2U9InJlZzpSZWdpc3RyeSI+Ci0JCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJPHhzZDplbGVtZW50IG5hbWU9InZlcnNpb24iIHR5cGU9InhzZDpzdHJpbmciIG1pbk9jY3Vycz0iMSIvPgotCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iZGlzY292ZXJ5VVJMIiB0eXBlPSJ4c2Q6YW55VVJJIiBtaW5PY2N1cnM9IjEiLz4KLQkJCQkJPHhzZDplbGVtZW50IG5hbWU9InB1YmxpY2F0aW9uVVJMIiB0eXBlPSJ4c2Q6YW55VVJJIiBtaW5PY2N1cnM9IjEiLz4KLQkJCQkJPHhzZDplbGVtZW50IG5hbWU9InNlY3VyZWREaXNjb3ZlcnlVUkwiIHR5cGU9InhzZDphbnlVUkkiIG1pbk9jY3Vycz0iMSIvPgotCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ic2VjdXJlZFB1YmxpY2F0aW9uVVJMIiB0eXBlPSJ4c2Q6YW55VVJJIiBtaW5PY2N1cnM9IjEiLz4KLQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImRlZmF1bHRMb2dpbiIgdHlwZT0ieHNkOnN0cmluZyIgbWluT2NjdXJzPSIxIi8+Ci0JCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJkZWZhdWx0UGFzc3dvcmQiIHR5cGU9InhzZDpzdHJpbmciIG1pbk9jY3Vycz0iMSIvPgotCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0idGF4b25vbWllcyIgdHlwZT0idXJnOlRheG9ub21pZXMiIG1pbk9jY3Vycz0iMCIvPgotCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJPC94c2Q6ZXh0ZW5zaW9uPgotCQk8L3hzZDpjb21wbGV4Q29udGVudD4KLQk8L3hzZDpjb21wbGV4VHlwZT4KLQkKLQk8eHNkOmVsZW1lbnQgbmFtZT0idGF4b25vbWllcyIgdHlwZT0idXJnOlRheG9ub21pZXMiLz4KLQkKLQk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IlRheG9ub21pZXMiPgotCQk8eHNkOnNlcXVlbmNlPgotCQkJPHhzZDplbGVtZW50IHJlZj0idGF4OnRheG9ub215IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0JCTwveHNkOnNlcXVlbmNlPgotCTwveHNkOmNvbXBsZXhUeXBlPgotCi08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL29yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuZWNvcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MDQyZDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5lY29yZQorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGVjb3JlOkVQYWNrYWdlIHhtaTp2ZXJzaW9uPSIyLjAiCi0gICAgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICAgIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiBuYW1lPSJyZWdpc3RyeSIKLSAgICBuc1VSST0iaHR0cDovL2VjbGlwc2Uub3JnL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkiIG5zUHJlZml4PSJyZWdpc3RyeSI+Ci0gIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSImI3hEOyYjeEE7ICAgU2VlIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS5odG1sIGFuZCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG5hbWVzcGFjZS4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICBUaGlzIHNjaGVtYSBkb2N1bWVudCBkZXNjcmliZXMgdGhlIFhNTCBuYW1lc3BhY2UsIGluIGEgZm9ybSYjeEQ7JiN4QTsgICAgc3VpdGFibGUgZm9yIGltcG9ydCBieSBvdGhlciBzY2hlbWEgZG9jdW1lbnRzLiAgJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgTm90ZSB0aGF0IGxvY2FsIG5hbWVzIGluIHRoaXMgbmFtZXNwYWNlIGFyZSBpbnRlbmRlZCB0byBiZSBkZWZpbmVkJiN4RDsmI3hBOyAgICBvbmx5IGJ5IHRoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIG9yIGl0cyBzdWJncm91cHMuICBUaGUmI3hEOyYjeEE7ICAgIGZvbGxvd2luZyBuYW1lcyBhcmUgY3VycmVudGx5IGRlZmluZWQgaW4gdGhpcyBuYW1lc3BhY2UgYW5kIHNob3VsZCYjeEQ7JiN4QTsgICAgbm90IGJlIHVzZWQgd2l0aCBjb25mbGljdGluZyBzZW1hbnRpY3MgYnkgYW55IFdvcmtpbmcgR3JvdXAsJiN4RDsmI3hBOyAgICBzcGVjaWZpY2F0aW9uLCBvciBkb2N1bWVudCBpbnN0YW5jZTomI3hEOyYjeEE7JiN4RDsmI3hBOyAgICBiYXNlIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlJiN4RDsmI3hBOyAgICAgICAgIHByb3ZpZGVzIGEgVVJJIHRvIGJlIHVzZWQgYXMgdGhlIGJhc2UgZm9yIGludGVycHJldGluZyBhbnkmI3hEOyYjeEE7ICAgICAgICAgcmVsYXRpdmUgVVJJcyBpbiB0aGUgc2NvcGUgb2YgdGhlIGVsZW1lbnQgb24gd2hpY2ggaXQmI3hEOyYjeEE7ICAgICAgICAgYXBwZWFyczsgaXRzIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCYjeEQ7JiN4QTsgICAgICAgICBieSB2aXJ0dWUgb2YgaXRzIGRlZmluaXRpb24gaW4gdGhlIFhNTCBCYXNlIHNwZWNpZmljYXRpb24uJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgaWQgICAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSYjeEQ7JiN4QTsgICAgICAgICBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgaWYgZGVjbGFyZWQgdG8gYmUgb2YgdHlwZSBJRC4mI3hEOyYjeEE7ICAgICAgICAgVGhlIHhtbDppZCBzcGVjaWZpY2F0aW9uIGlzIG5vdCB5ZXQgYSBXM0MgUmVjb21tZW5kYXRpb24sJiN4RDsmI3hBOyAgICAgICAgIGJ1dCB0aGlzIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBoZXJlIHRvIGZhY2lsaXRhdGUgZXhwZXJpbWVudGF0aW9uJiN4RDsmI3hBOyAgICAgICAgIHdpdGggdGhlIG1lY2hhbmlzbXMgaXQgcHJvcG9zZXMuICBOb3RlIHRoYXQgaXQgaXMgX25vdF8gaW5jbHVkZWQmI3hEOyYjeEE7ICAgICAgICAgaW4gdGhlIHNwZWNpYWxBdHRycyBhdHRyaWJ1dGUgZ3JvdXAuJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgbGFuZyAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSYjeEQ7JiN4QTsgICAgICAgICBpcyBhIGxhbmd1YWdlIGNvZGUgZm9yIHRoZSBuYXR1cmFsIGxhbmd1YWdlIG9mIHRoZSBjb250ZW50IG9mJiN4RDsmI3hBOyAgICAgICAgIGFueSBlbGVtZW50OyBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkJiN4RDsmI3hBOyAgICAgICAgIGJ5IHZpcnR1ZSBvZiBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIHNwZWNpZmljYXRpb24uJiN4RDsmI3hBOyAgJiN4RDsmI3hBOyAgICBzcGFjZSAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSYjeEQ7JiN4QTsgICAgICAgICB2YWx1ZSBpcyBhIGtleXdvcmQgaW5kaWNhdGluZyB3aGF0IHdoaXRlc3BhY2UgcHJvY2Vzc2luZyYjeEQ7JiN4QTsgICAgICAgICBkaXNjaXBsaW5lIGlzIGludGVuZGVkIGZvciB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudDsgaXRzJiN4RDsmI3hBOyAgICAgICAgIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCBieSB2aXJ0dWUgb2YgaXRzJiN4RDsmI3hBOyAgICAgICAgIGRlZmluaXRpb24gaW4gdGhlIFhNTCBzcGVjaWZpY2F0aW9uLiYjeEQ7JiN4QTsmI3hEOyYjeEE7ICAgIEZhdGhlciAoaW4gYW55IGNvbnRleHQgYXQgYWxsKTogZGVub3RlcyBKb24gQm9zYWssIHRoZSBjaGFpciBvZiAmI3hEOyYjeEE7ICAgICAgICAgdGhlIG9yaWdpbmFsIFhNTCBXb3JraW5nIEdyb3VwLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkIGJ5ICYjeEQ7JiN4QTsgICAgICAgICB0aGUgZm9sbG93aW5nIGRlY2lzaW9uIG9mIHRoZSBXM0MgWE1MIFBsZW5hcnkgYW5kICYjeEQ7JiN4QTsgICAgICAgICBYTUwgQ29vcmRpbmF0aW9uIGdyb3VwczomI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgICAgICBJbiBhcHByZWNpYXRpb24gZm9yIGhpcyB2aXNpb24sIGxlYWRlcnNoaXAgYW5kIGRlZGljYXRpb24mI3hEOyYjeEE7ICAgICAgICAgICAgIHRoZSBXM0MgWE1MIFBsZW5hcnkgb24gdGhpcyAxMHRoIGRheSBvZiBGZWJydWFyeSwgMjAwMCYjeEQ7JiN4QTsgICAgICAgICAgICAgcmVzZXJ2ZXMgZm9yIEpvbiBCb3NhayBpbiBwZXJwZXR1aXR5IHRoZSBYTUwgbmFtZSYjeEQ7JiN4QTsgICAgICAgICAgICAgeG1sOkZhdGhlciYjeEQ7JiN4QTsgICYjeEQ7JiN4QTtUaGlzIHNjaGVtYSBkZWZpbmVzIGF0dHJpYnV0ZXMgYW5kIGFuIGF0dHJpYnV0ZSBncm91cCYjeEQ7JiN4QTsgICAgICAgIHN1aXRhYmxlIGZvciB1c2UgYnkmI3hEOyYjeEE7ICAgICAgICBzY2hlbWFzIHdpc2hpbmcgdG8gYWxsb3cgeG1sOmJhc2UsIHhtbDpsYW5nLCB4bWw6c3BhY2Ugb3IgeG1sOmlkJiN4RDsmI3hBOyAgICAgICAgYXR0cmlidXRlcyBvbiBlbGVtZW50cyB0aGV5IGRlZmluZS4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHN1Y2ggYSBzY2hlbWEgbXVzdCBpbXBvcnQgdGhpcyBzY2hlbWEmI3hEOyYjeEE7ICAgICAgICBmb3IgdGhlIFhNTCBuYW1lc3BhY2UsIGUuZy4gYXMgZm9sbG93czomI3hEOyYjeEE7ICAgICAgICAmYW1wO2x0O3NjaGVtYSAuIC4gLiZhbXA7Z3Q7JiN4RDsmI3hBOyAgICAgICAgIC4gLiAuJiN4RDsmI3hBOyAgICAgICAgICZhbXA7bHQ7aW1wb3J0IG5hbWVzcGFjZT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UmcXVvdDsmI3hEOyYjeEE7ICAgICAgICAgICAgICAgICAgICBzY2hlbWFMb2NhdGlvbj0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QmcXVvdDsvJmFtcDtndDsmI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgU3Vic2VxdWVudGx5LCBxdWFsaWZpZWQgcmVmZXJlbmNlIHRvIGFueSBvZiB0aGUgYXR0cmlidXRlcyYjeEQ7JiN4QTsgICAgICAgIG9yIHRoZSBncm91cCBkZWZpbmVkIGJlbG93IHdpbGwgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QsIGUuZy4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgJmFtcDtsdDt0eXBlIC4gLiAuJmFtcDtndDsmI3hEOyYjeEE7ICAgICAgICAgLiAuIC4mI3hEOyYjeEE7ICAgICAgICAgJmFtcDtsdDthdHRyaWJ1dGVHcm91cCByZWY9JnF1b3Q7eG1sOnNwZWNpYWxBdHRycyZxdW90Oy8mYW1wO2d0OyYjeEQ7JiN4QTsgJiN4RDsmI3hBOyAgICAgICAgIHdpbGwgZGVmaW5lIGEgdHlwZSB3aGljaCB3aWxsIHNjaGVtYS12YWxpZGF0ZSBhbiBpbnN0YW5jZSYjeEQ7JiN4QTsgICAgICAgICBlbGVtZW50IHdpdGggYW55IG9mIHRob3NlIGF0dHJpYnV0ZXMmI3hEOyYjeEE7SW4ga2VlcGluZyB3aXRoIHRoZSBYTUwgU2NoZW1hIFdHJ3Mgc3RhbmRhcmQgdmVyc2lvbmluZyYjeEQ7JiN4QTsgICBwb2xpY3ksIHRoaXMgc2NoZW1hIGRvY3VtZW50IHdpbGwgcGVyc2lzdCBhdCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L3htbC54c2QuJiN4RDsmI3hBOyAgIEF0IHRoZSBkYXRlIG9mIGlzc3VlIGl0IGNhbiBhbHNvIGJlIGZvdW5kIGF0JiN4RDsmI3hBOyAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZC4mI3hEOyYjeEE7ICAgVGhlIHNjaGVtYSBkb2N1bWVudCBhdCB0aGF0IFVSSSBtYXkgaG93ZXZlciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwmI3hEOyYjeEE7ICAgaW4gb3JkZXIgdG8gcmVtYWluIGNvbXBhdGlibGUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgWE1MIFNjaGVtYSYjeEQ7JiN4QTsgICBpdHNlbGYsIG9yIHdpdGggdGhlIFhNTCBuYW1lc3BhY2UgaXRzZWxmLiAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBYTUwmI3hEOyYjeEE7ICAgU2NoZW1hIG9yIFhNTCBuYW1lc3BhY2VzIGNoYW5nZSwgdGhlIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudCBhdCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2Qgd2lsbCBjaGFuZ2UmI3hEOyYjeEE7ICAgYWNjb3JkaW5nbHk7IHRoZSB2ZXJzaW9uIGF0JiN4RDsmI3hBOyAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgveG1sLnhzZCB3aWxsIG5vdCBjaGFuZ2UuJiN4RDsmI3hBOyAgIi8+Ci0gIDwvZUFubm90YXRpb25zPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkRlc2NyaXB0aW9uIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9IkRlc2NyaXB0aW9uIi8+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJzaW1wbGUiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0idmFsdWUiIHVuaXF1ZT0iZmFsc2UiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMy9YTUxUeXBlIy8vU3RyaW5nIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSI6MCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJzaW1wbGUiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibGFuZyIgdW5pcXVlPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9MYW5ndWFnZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImxhbmciLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iRG9jdW1lbnRSb290Ij4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9IiIvPgotICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0ibWl4ZWQiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibWl4ZWQiIHVuaXF1ZT0iZmFsc2UiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FRmVhdHVyZU1hcEVudHJ5Ij4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50V2lsZGNhcmQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iOm1peGVkIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InhNTE5TUHJlZml4TWFwIiB1bmlxdWU9ImZhbHNlIgotICAgICAgICB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiCi0gICAgICAgIHRyYW5zaWVudD0idHJ1ZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9InhtbG5zOnByZWZpeCIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJ4U0lTY2hlbWFMb2NhdGlvbiIgdW5pcXVlPSJmYWxzZSIKLSAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmdUb1N0cmluZ01hcEVudHJ5IgotICAgICAgICB0cmFuc2llbnQ9InRydWUiIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImF0dHJpYnV0ZSIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJ4c2k6c2NoZW1hTG9jYXRpb24iLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZGVzY3JpcHRpb24iIHVwcGVyQm91bmQ9Ii0yIgotICAgICAgICBlVHlwZT0iIy8vRGVzY3JpcHRpb24iIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgICAgICByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iZGVzY3JpcHRpb24iLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSIjI3RhcmdldE5hbWVzcGFjZSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJuYW1lIiB1cHBlckJvdW5kPSItMiIgZVR5cGU9IiMvL05hbWUiCi0gICAgICAgIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0ibmFtZSIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWVzcGFjZSIgdmFsdWU9IiMjdGFyZ2V0TmFtZXNwYWNlIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InJlZ2lzdHJ5IiB1cHBlckJvdW5kPSItMiIKLSAgICAgICAgZVR5cGU9IiMvL1JlZ2lzdHJ5IiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIiBjb250YWlubWVudD0idHJ1ZSIKLSAgICAgICAgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50Ii8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9InJlZ2lzdHJ5Ii8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZXNwYWNlIiB2YWx1ZT0iIyN0YXJnZXROYW1lc3BhY2UiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iTmFtZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJOYW1lIi8+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJzaW1wbGUiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0idmFsdWUiIHVuaXF1ZT0iZmFsc2UiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMy9YTUxUeXBlIy8vU3RyaW5nIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSI6MCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJzaW1wbGUiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibGFuZyIgdW5pcXVlPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9MYW5ndWFnZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImxhbmciLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iUmVnaXN0cnkiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iUmVnaXN0cnkiLz4KLSAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnRPbmx5Ii8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9Im5hbWUiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vTmFtZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJuYW1lIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImRlc2NyaXB0aW9uIiBsb3dlckJvdW5kPSIxIgotICAgICAgICB1cHBlckJvdW5kPSItMSIgZVR5cGU9IiMvL0Rlc2NyaXB0aW9uIiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50Ii8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImRlc2NyaXB0aW9uIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImlkIiB1bmlxdWU9ImZhbHNlIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL0FueVVSSSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImlkIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImxvY2F0aW9uIiB1bmlxdWU9ImZhbHNlIgotICAgICAgICBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL0FueVVSSSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImxvY2F0aW9uIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InJlZiIgdW5pcXVlPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9BbnlVUkkiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImF0dHJpYnV0ZSIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJyZWYiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci08L2Vjb3JlOkVQYWNrYWdlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmVjb3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTA5NWM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL29yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5lY29yZQorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGVjb3JlOkVQYWNrYWdlIHhtaTp2ZXJzaW9uPSIyLjAiCi0gICAgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICAgIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiBuYW1lPSJydGluZGV4IgotICAgIG5zVVJJPSJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4IiBuc1ByZWZpeD0icnRpbmRleCI+Ci0gIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSImI3hEOyYjeEE7ICAgU2VlIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS5odG1sIGFuZCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG5hbWVzcGFjZS4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICBUaGlzIHNjaGVtYSBkb2N1bWVudCBkZXNjcmliZXMgdGhlIFhNTCBuYW1lc3BhY2UsIGluIGEgZm9ybSYjeEQ7JiN4QTsgICAgc3VpdGFibGUgZm9yIGltcG9ydCBieSBvdGhlciBzY2hlbWEgZG9jdW1lbnRzLiAgJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgTm90ZSB0aGF0IGxvY2FsIG5hbWVzIGluIHRoaXMgbmFtZXNwYWNlIGFyZSBpbnRlbmRlZCB0byBiZSBkZWZpbmVkJiN4RDsmI3hBOyAgICBvbmx5IGJ5IHRoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIG9yIGl0cyBzdWJncm91cHMuICBUaGUmI3hEOyYjeEE7ICAgIGZvbGxvd2luZyBuYW1lcyBhcmUgY3VycmVudGx5IGRlZmluZWQgaW4gdGhpcyBuYW1lc3BhY2UgYW5kIHNob3VsZCYjeEQ7JiN4QTsgICAgbm90IGJlIHVzZWQgd2l0aCBjb25mbGljdGluZyBzZW1hbnRpY3MgYnkgYW55IFdvcmtpbmcgR3JvdXAsJiN4RDsmI3hBOyAgICBzcGVjaWZpY2F0aW9uLCBvciBkb2N1bWVudCBpbnN0YW5jZTomI3hEOyYjeEE7JiN4RDsmI3hBOyAgICBiYXNlIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlJiN4RDsmI3hBOyAgICAgICAgIHByb3ZpZGVzIGEgVVJJIHRvIGJlIHVzZWQgYXMgdGhlIGJhc2UgZm9yIGludGVycHJldGluZyBhbnkmI3hEOyYjeEE7ICAgICAgICAgcmVsYXRpdmUgVVJJcyBpbiB0aGUgc2NvcGUgb2YgdGhlIGVsZW1lbnQgb24gd2hpY2ggaXQmI3hEOyYjeEE7ICAgICAgICAgYXBwZWFyczsgaXRzIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCYjeEQ7JiN4QTsgICAgICAgICBieSB2aXJ0dWUgb2YgaXRzIGRlZmluaXRpb24gaW4gdGhlIFhNTCBCYXNlIHNwZWNpZmljYXRpb24uJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgaWQgICAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSYjeEQ7JiN4QTsgICAgICAgICBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgaWYgZGVjbGFyZWQgdG8gYmUgb2YgdHlwZSBJRC4mI3hEOyYjeEE7ICAgICAgICAgVGhlIHhtbDppZCBzcGVjaWZpY2F0aW9uIGlzIG5vdCB5ZXQgYSBXM0MgUmVjb21tZW5kYXRpb24sJiN4RDsmI3hBOyAgICAgICAgIGJ1dCB0aGlzIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBoZXJlIHRvIGZhY2lsaXRhdGUgZXhwZXJpbWVudGF0aW9uJiN4RDsmI3hBOyAgICAgICAgIHdpdGggdGhlIG1lY2hhbmlzbXMgaXQgcHJvcG9zZXMuICBOb3RlIHRoYXQgaXQgaXMgX25vdF8gaW5jbHVkZWQmI3hEOyYjeEE7ICAgICAgICAgaW4gdGhlIHNwZWNpYWxBdHRycyBhdHRyaWJ1dGUgZ3JvdXAuJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgbGFuZyAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSYjeEQ7JiN4QTsgICAgICAgICBpcyBhIGxhbmd1YWdlIGNvZGUgZm9yIHRoZSBuYXR1cmFsIGxhbmd1YWdlIG9mIHRoZSBjb250ZW50IG9mJiN4RDsmI3hBOyAgICAgICAgIGFueSBlbGVtZW50OyBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkJiN4RDsmI3hBOyAgICAgICAgIGJ5IHZpcnR1ZSBvZiBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIHNwZWNpZmljYXRpb24uJiN4RDsmI3hBOyAgJiN4RDsmI3hBOyAgICBzcGFjZSAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSYjeEQ7JiN4QTsgICAgICAgICB2YWx1ZSBpcyBhIGtleXdvcmQgaW5kaWNhdGluZyB3aGF0IHdoaXRlc3BhY2UgcHJvY2Vzc2luZyYjeEQ7JiN4QTsgICAgICAgICBkaXNjaXBsaW5lIGlzIGludGVuZGVkIGZvciB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudDsgaXRzJiN4RDsmI3hBOyAgICAgICAgIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCBieSB2aXJ0dWUgb2YgaXRzJiN4RDsmI3hBOyAgICAgICAgIGRlZmluaXRpb24gaW4gdGhlIFhNTCBzcGVjaWZpY2F0aW9uLiYjeEQ7JiN4QTsmI3hEOyYjeEE7ICAgIEZhdGhlciAoaW4gYW55IGNvbnRleHQgYXQgYWxsKTogZGVub3RlcyBKb24gQm9zYWssIHRoZSBjaGFpciBvZiAmI3hEOyYjeEE7ICAgICAgICAgdGhlIG9yaWdpbmFsIFhNTCBXb3JraW5nIEdyb3VwLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkIGJ5ICYjeEQ7JiN4QTsgICAgICAgICB0aGUgZm9sbG93aW5nIGRlY2lzaW9uIG9mIHRoZSBXM0MgWE1MIFBsZW5hcnkgYW5kICYjeEQ7JiN4QTsgICAgICAgICBYTUwgQ29vcmRpbmF0aW9uIGdyb3VwczomI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgICAgICBJbiBhcHByZWNpYXRpb24gZm9yIGhpcyB2aXNpb24sIGxlYWRlcnNoaXAgYW5kIGRlZGljYXRpb24mI3hEOyYjeEE7ICAgICAgICAgICAgIHRoZSBXM0MgWE1MIFBsZW5hcnkgb24gdGhpcyAxMHRoIGRheSBvZiBGZWJydWFyeSwgMjAwMCYjeEQ7JiN4QTsgICAgICAgICAgICAgcmVzZXJ2ZXMgZm9yIEpvbiBCb3NhayBpbiBwZXJwZXR1aXR5IHRoZSBYTUwgbmFtZSYjeEQ7JiN4QTsgICAgICAgICAgICAgeG1sOkZhdGhlciYjeEQ7JiN4QTsgICYjeEQ7JiN4QTtUaGlzIHNjaGVtYSBkZWZpbmVzIGF0dHJpYnV0ZXMgYW5kIGFuIGF0dHJpYnV0ZSBncm91cCYjeEQ7JiN4QTsgICAgICAgIHN1aXRhYmxlIGZvciB1c2UgYnkmI3hEOyYjeEE7ICAgICAgICBzY2hlbWFzIHdpc2hpbmcgdG8gYWxsb3cgeG1sOmJhc2UsIHhtbDpsYW5nLCB4bWw6c3BhY2Ugb3IgeG1sOmlkJiN4RDsmI3hBOyAgICAgICAgYXR0cmlidXRlcyBvbiBlbGVtZW50cyB0aGV5IGRlZmluZS4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHN1Y2ggYSBzY2hlbWEgbXVzdCBpbXBvcnQgdGhpcyBzY2hlbWEmI3hEOyYjeEE7ICAgICAgICBmb3IgdGhlIFhNTCBuYW1lc3BhY2UsIGUuZy4gYXMgZm9sbG93czomI3hEOyYjeEE7ICAgICAgICAmYW1wO2x0O3NjaGVtYSAuIC4gLiZhbXA7Z3Q7JiN4RDsmI3hBOyAgICAgICAgIC4gLiAuJiN4RDsmI3hBOyAgICAgICAgICZhbXA7bHQ7aW1wb3J0IG5hbWVzcGFjZT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UmcXVvdDsmI3hEOyYjeEE7ICAgICAgICAgICAgICAgICAgICBzY2hlbWFMb2NhdGlvbj0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QmcXVvdDsvJmFtcDtndDsmI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgU3Vic2VxdWVudGx5LCBxdWFsaWZpZWQgcmVmZXJlbmNlIHRvIGFueSBvZiB0aGUgYXR0cmlidXRlcyYjeEQ7JiN4QTsgICAgICAgIG9yIHRoZSBncm91cCBkZWZpbmVkIGJlbG93IHdpbGwgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QsIGUuZy4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgJmFtcDtsdDt0eXBlIC4gLiAuJmFtcDtndDsmI3hEOyYjeEE7ICAgICAgICAgLiAuIC4mI3hEOyYjeEE7ICAgICAgICAgJmFtcDtsdDthdHRyaWJ1dGVHcm91cCByZWY9JnF1b3Q7eG1sOnNwZWNpYWxBdHRycyZxdW90Oy8mYW1wO2d0OyYjeEQ7JiN4QTsgJiN4RDsmI3hBOyAgICAgICAgIHdpbGwgZGVmaW5lIGEgdHlwZSB3aGljaCB3aWxsIHNjaGVtYS12YWxpZGF0ZSBhbiBpbnN0YW5jZSYjeEQ7JiN4QTsgICAgICAgICBlbGVtZW50IHdpdGggYW55IG9mIHRob3NlIGF0dHJpYnV0ZXMmI3hEOyYjeEE7SW4ga2VlcGluZyB3aXRoIHRoZSBYTUwgU2NoZW1hIFdHJ3Mgc3RhbmRhcmQgdmVyc2lvbmluZyYjeEQ7JiN4QTsgICBwb2xpY3ksIHRoaXMgc2NoZW1hIGRvY3VtZW50IHdpbGwgcGVyc2lzdCBhdCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L3htbC54c2QuJiN4RDsmI3hBOyAgIEF0IHRoZSBkYXRlIG9mIGlzc3VlIGl0IGNhbiBhbHNvIGJlIGZvdW5kIGF0JiN4RDsmI3hBOyAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZC4mI3hEOyYjeEE7ICAgVGhlIHNjaGVtYSBkb2N1bWVudCBhdCB0aGF0IFVSSSBtYXkgaG93ZXZlciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwmI3hEOyYjeEE7ICAgaW4gb3JkZXIgdG8gcmVtYWluIGNvbXBhdGlibGUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgWE1MIFNjaGVtYSYjeEQ7JiN4QTsgICBpdHNlbGYsIG9yIHdpdGggdGhlIFhNTCBuYW1lc3BhY2UgaXRzZWxmLiAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBYTUwmI3hEOyYjeEE7ICAgU2NoZW1hIG9yIFhNTCBuYW1lc3BhY2VzIGNoYW5nZSwgdGhlIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudCBhdCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2Qgd2lsbCBjaGFuZ2UmI3hEOyYjeEE7ICAgYWNjb3JkaW5nbHk7IHRoZSB2ZXJzaW9uIGF0JiN4RDsmI3hBOyAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgveG1sLnhzZCB3aWxsIG5vdCBjaGFuZ2UuJiN4RDsmI3hBOyAgIi8+Ci0gIDwvZUFubm90YXRpb25zPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkRlc2NyaXB0aW9uIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9IkRlc2NyaXB0aW9uIi8+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJzaW1wbGUiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0idmFsdWUiIHVuaXF1ZT0iZmFsc2UiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMy9YTUxUeXBlIy8vU3RyaW5nIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSI6MCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJzaW1wbGUiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibGFuZyIgdW5pcXVlPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9MYW5ndWFnZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImxhbmciLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iRG9jdW1lbnRSb290Ij4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9IiIvPgotICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0ibWl4ZWQiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibWl4ZWQiIHVuaXF1ZT0iZmFsc2UiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FRmVhdHVyZU1hcEVudHJ5Ij4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50V2lsZGNhcmQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iOm1peGVkIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InhNTE5TUHJlZml4TWFwIiB1bmlxdWU9ImZhbHNlIgotICAgICAgICB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiCi0gICAgICAgIHRyYW5zaWVudD0idHJ1ZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9InhtbG5zOnByZWZpeCIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJ4U0lTY2hlbWFMb2NhdGlvbiIgdW5pcXVlPSJmYWxzZSIKLSAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmdUb1N0cmluZ01hcEVudHJ5IgotICAgICAgICB0cmFuc2llbnQ9InRydWUiIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImF0dHJpYnV0ZSIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJ4c2k6c2NoZW1hTG9jYXRpb24iLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZGVzY3JpcHRpb24iIHVwcGVyQm91bmQ9Ii0yIgotICAgICAgICBlVHlwZT0iIy8vRGVzY3JpcHRpb24iIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgICAgICByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iZGVzY3JpcHRpb24iLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSIjI3RhcmdldE5hbWVzcGFjZSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJpbmRleCIgdXBwZXJCb3VuZD0iLTIiCi0gICAgICAgIGVUeXBlPSIjLy9JbmRleCIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgY29udGFpbm1lbnQ9InRydWUiCi0gICAgICAgIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJpbmRleCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWVzcGFjZSIgdmFsdWU9IiMjdGFyZ2V0TmFtZXNwYWNlIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9Im5hbWUiIHVwcGVyQm91bmQ9Ii0yIiBlVHlwZT0iIy8vTmFtZSIKLSAgICAgICAgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJuYW1lIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZXNwYWNlIiB2YWx1ZT0iIyN0YXJnZXROYW1lc3BhY2UiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSW5kZXgiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iSW5kZXgiLz4KLSAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnRPbmx5Ii8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9Im5hbWUiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vTmFtZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJuYW1lIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImRlc2NyaXB0aW9uIiBsb3dlckJvdW5kPSIxIgotICAgICAgICB1cHBlckJvdW5kPSItMSIgZVR5cGU9IiMvL0Rlc2NyaXB0aW9uIiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50Ii8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImRlc2NyaXB0aW9uIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InJlZ2lzdHJ5IiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vUmVnaXN0cnkiCi0gICAgICAgIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0icmVnaXN0cnkiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJ0YXhvbm9teSIgdXBwZXJCb3VuZD0iLTEiCi0gICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSMvL1RheG9ub215IgotICAgICAgICBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50Ii8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9InRheG9ub215Ii8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZXNwYWNlIiB2YWx1ZT0iaHR0cDovL2VjbGlwc2Uub3JnL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iTmFtZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJOYW1lIi8+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJzaW1wbGUiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0idmFsdWUiIHVuaXF1ZT0iZmFsc2UiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMy9YTUxUeXBlIy8vU3RyaW5nIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSI6MCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJzaW1wbGUiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibGFuZyIgdW5pcXVlPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9MYW5ndWFnZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImxhbmciLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci08L2Vjb3JlOkVQYWNrYWdlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL29yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuZWNvcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxODg5YjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5lY29yZQorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGVjb3JlOkVQYWNrYWdlIHhtaTp2ZXJzaW9uPSIyLjAiCi0gICAgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICAgIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiBuYW1lPSJ0YXhvbm9teSIKLSAgICBuc1VSST0iaHR0cDovL2VjbGlwc2Uub3JnL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkiIG5zUHJlZml4PSJ0YXhvbm9teSI+Ci0gIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSImI3hEOyYjeEE7ICAgU2VlIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS5odG1sIGFuZCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG5hbWVzcGFjZS4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICBUaGlzIHNjaGVtYSBkb2N1bWVudCBkZXNjcmliZXMgdGhlIFhNTCBuYW1lc3BhY2UsIGluIGEgZm9ybSYjeEQ7JiN4QTsgICAgc3VpdGFibGUgZm9yIGltcG9ydCBieSBvdGhlciBzY2hlbWEgZG9jdW1lbnRzLiAgJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgTm90ZSB0aGF0IGxvY2FsIG5hbWVzIGluIHRoaXMgbmFtZXNwYWNlIGFyZSBpbnRlbmRlZCB0byBiZSBkZWZpbmVkJiN4RDsmI3hBOyAgICBvbmx5IGJ5IHRoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIG9yIGl0cyBzdWJncm91cHMuICBUaGUmI3hEOyYjeEE7ICAgIGZvbGxvd2luZyBuYW1lcyBhcmUgY3VycmVudGx5IGRlZmluZWQgaW4gdGhpcyBuYW1lc3BhY2UgYW5kIHNob3VsZCYjeEQ7JiN4QTsgICAgbm90IGJlIHVzZWQgd2l0aCBjb25mbGljdGluZyBzZW1hbnRpY3MgYnkgYW55IFdvcmtpbmcgR3JvdXAsJiN4RDsmI3hBOyAgICBzcGVjaWZpY2F0aW9uLCBvciBkb2N1bWVudCBpbnN0YW5jZTomI3hEOyYjeEE7JiN4RDsmI3hBOyAgICBiYXNlIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlJiN4RDsmI3hBOyAgICAgICAgIHByb3ZpZGVzIGEgVVJJIHRvIGJlIHVzZWQgYXMgdGhlIGJhc2UgZm9yIGludGVycHJldGluZyBhbnkmI3hEOyYjeEE7ICAgICAgICAgcmVsYXRpdmUgVVJJcyBpbiB0aGUgc2NvcGUgb2YgdGhlIGVsZW1lbnQgb24gd2hpY2ggaXQmI3hEOyYjeEE7ICAgICAgICAgYXBwZWFyczsgaXRzIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCYjeEQ7JiN4QTsgICAgICAgICBieSB2aXJ0dWUgb2YgaXRzIGRlZmluaXRpb24gaW4gdGhlIFhNTCBCYXNlIHNwZWNpZmljYXRpb24uJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgaWQgICAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSYjeEQ7JiN4QTsgICAgICAgICBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgaWYgZGVjbGFyZWQgdG8gYmUgb2YgdHlwZSBJRC4mI3hEOyYjeEE7ICAgICAgICAgVGhlIHhtbDppZCBzcGVjaWZpY2F0aW9uIGlzIG5vdCB5ZXQgYSBXM0MgUmVjb21tZW5kYXRpb24sJiN4RDsmI3hBOyAgICAgICAgIGJ1dCB0aGlzIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBoZXJlIHRvIGZhY2lsaXRhdGUgZXhwZXJpbWVudGF0aW9uJiN4RDsmI3hBOyAgICAgICAgIHdpdGggdGhlIG1lY2hhbmlzbXMgaXQgcHJvcG9zZXMuICBOb3RlIHRoYXQgaXQgaXMgX25vdF8gaW5jbHVkZWQmI3hEOyYjeEE7ICAgICAgICAgaW4gdGhlIHNwZWNpYWxBdHRycyBhdHRyaWJ1dGUgZ3JvdXAuJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgbGFuZyAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSYjeEQ7JiN4QTsgICAgICAgICBpcyBhIGxhbmd1YWdlIGNvZGUgZm9yIHRoZSBuYXR1cmFsIGxhbmd1YWdlIG9mIHRoZSBjb250ZW50IG9mJiN4RDsmI3hBOyAgICAgICAgIGFueSBlbGVtZW50OyBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkJiN4RDsmI3hBOyAgICAgICAgIGJ5IHZpcnR1ZSBvZiBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIHNwZWNpZmljYXRpb24uJiN4RDsmI3hBOyAgJiN4RDsmI3hBOyAgICBzcGFjZSAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSYjeEQ7JiN4QTsgICAgICAgICB2YWx1ZSBpcyBhIGtleXdvcmQgaW5kaWNhdGluZyB3aGF0IHdoaXRlc3BhY2UgcHJvY2Vzc2luZyYjeEQ7JiN4QTsgICAgICAgICBkaXNjaXBsaW5lIGlzIGludGVuZGVkIGZvciB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudDsgaXRzJiN4RDsmI3hBOyAgICAgICAgIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCBieSB2aXJ0dWUgb2YgaXRzJiN4RDsmI3hBOyAgICAgICAgIGRlZmluaXRpb24gaW4gdGhlIFhNTCBzcGVjaWZpY2F0aW9uLiYjeEQ7JiN4QTsmI3hEOyYjeEE7ICAgIEZhdGhlciAoaW4gYW55IGNvbnRleHQgYXQgYWxsKTogZGVub3RlcyBKb24gQm9zYWssIHRoZSBjaGFpciBvZiAmI3hEOyYjeEE7ICAgICAgICAgdGhlIG9yaWdpbmFsIFhNTCBXb3JraW5nIEdyb3VwLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkIGJ5ICYjeEQ7JiN4QTsgICAgICAgICB0aGUgZm9sbG93aW5nIGRlY2lzaW9uIG9mIHRoZSBXM0MgWE1MIFBsZW5hcnkgYW5kICYjeEQ7JiN4QTsgICAgICAgICBYTUwgQ29vcmRpbmF0aW9uIGdyb3VwczomI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgICAgICBJbiBhcHByZWNpYXRpb24gZm9yIGhpcyB2aXNpb24sIGxlYWRlcnNoaXAgYW5kIGRlZGljYXRpb24mI3hEOyYjeEE7ICAgICAgICAgICAgIHRoZSBXM0MgWE1MIFBsZW5hcnkgb24gdGhpcyAxMHRoIGRheSBvZiBGZWJydWFyeSwgMjAwMCYjeEQ7JiN4QTsgICAgICAgICAgICAgcmVzZXJ2ZXMgZm9yIEpvbiBCb3NhayBpbiBwZXJwZXR1aXR5IHRoZSBYTUwgbmFtZSYjeEQ7JiN4QTsgICAgICAgICAgICAgeG1sOkZhdGhlciYjeEQ7JiN4QTsgICYjeEQ7JiN4QTtUaGlzIHNjaGVtYSBkZWZpbmVzIGF0dHJpYnV0ZXMgYW5kIGFuIGF0dHJpYnV0ZSBncm91cCYjeEQ7JiN4QTsgICAgICAgIHN1aXRhYmxlIGZvciB1c2UgYnkmI3hEOyYjeEE7ICAgICAgICBzY2hlbWFzIHdpc2hpbmcgdG8gYWxsb3cgeG1sOmJhc2UsIHhtbDpsYW5nLCB4bWw6c3BhY2Ugb3IgeG1sOmlkJiN4RDsmI3hBOyAgICAgICAgYXR0cmlidXRlcyBvbiBlbGVtZW50cyB0aGV5IGRlZmluZS4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHN1Y2ggYSBzY2hlbWEgbXVzdCBpbXBvcnQgdGhpcyBzY2hlbWEmI3hEOyYjeEE7ICAgICAgICBmb3IgdGhlIFhNTCBuYW1lc3BhY2UsIGUuZy4gYXMgZm9sbG93czomI3hEOyYjeEE7ICAgICAgICAmYW1wO2x0O3NjaGVtYSAuIC4gLiZhbXA7Z3Q7JiN4RDsmI3hBOyAgICAgICAgIC4gLiAuJiN4RDsmI3hBOyAgICAgICAgICZhbXA7bHQ7aW1wb3J0IG5hbWVzcGFjZT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UmcXVvdDsmI3hEOyYjeEE7ICAgICAgICAgICAgICAgICAgICBzY2hlbWFMb2NhdGlvbj0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QmcXVvdDsvJmFtcDtndDsmI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgU3Vic2VxdWVudGx5LCBxdWFsaWZpZWQgcmVmZXJlbmNlIHRvIGFueSBvZiB0aGUgYXR0cmlidXRlcyYjeEQ7JiN4QTsgICAgICAgIG9yIHRoZSBncm91cCBkZWZpbmVkIGJlbG93IHdpbGwgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QsIGUuZy4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgJmFtcDtsdDt0eXBlIC4gLiAuJmFtcDtndDsmI3hEOyYjeEE7ICAgICAgICAgLiAuIC4mI3hEOyYjeEE7ICAgICAgICAgJmFtcDtsdDthdHRyaWJ1dGVHcm91cCByZWY9JnF1b3Q7eG1sOnNwZWNpYWxBdHRycyZxdW90Oy8mYW1wO2d0OyYjeEQ7JiN4QTsgJiN4RDsmI3hBOyAgICAgICAgIHdpbGwgZGVmaW5lIGEgdHlwZSB3aGljaCB3aWxsIHNjaGVtYS12YWxpZGF0ZSBhbiBpbnN0YW5jZSYjeEQ7JiN4QTsgICAgICAgICBlbGVtZW50IHdpdGggYW55IG9mIHRob3NlIGF0dHJpYnV0ZXMmI3hEOyYjeEE7SW4ga2VlcGluZyB3aXRoIHRoZSBYTUwgU2NoZW1hIFdHJ3Mgc3RhbmRhcmQgdmVyc2lvbmluZyYjeEQ7JiN4QTsgICBwb2xpY3ksIHRoaXMgc2NoZW1hIGRvY3VtZW50IHdpbGwgcGVyc2lzdCBhdCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L3htbC54c2QuJiN4RDsmI3hBOyAgIEF0IHRoZSBkYXRlIG9mIGlzc3VlIGl0IGNhbiBhbHNvIGJlIGZvdW5kIGF0JiN4RDsmI3hBOyAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZC4mI3hEOyYjeEE7ICAgVGhlIHNjaGVtYSBkb2N1bWVudCBhdCB0aGF0IFVSSSBtYXkgaG93ZXZlciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwmI3hEOyYjeEE7ICAgaW4gb3JkZXIgdG8gcmVtYWluIGNvbXBhdGlibGUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgWE1MIFNjaGVtYSYjeEQ7JiN4QTsgICBpdHNlbGYsIG9yIHdpdGggdGhlIFhNTCBuYW1lc3BhY2UgaXRzZWxmLiAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBYTUwmI3hEOyYjeEE7ICAgU2NoZW1hIG9yIFhNTCBuYW1lc3BhY2VzIGNoYW5nZSwgdGhlIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudCBhdCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2Qgd2lsbCBjaGFuZ2UmI3hEOyYjeEE7ICAgYWNjb3JkaW5nbHk7IHRoZSB2ZXJzaW9uIGF0JiN4RDsmI3hBOyAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgveG1sLnhzZCB3aWxsIG5vdCBjaGFuZ2UuJiN4RDsmI3hBOyAgIi8+Ci0gIDwvZUFubm90YXRpb25zPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkNhdGVnb3J5Ij4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9IkNhdGVnb3J5Ii8+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50T25seSIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJubG5hbWUiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vTmFtZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJubG5hbWUiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iY2F0ZWdvcnkiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vQ2F0ZWdvcnkiIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iY2F0ZWdvcnkiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0iY29kZSIgdW5pcXVlPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9TdHJpbmciPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImF0dHJpYnV0ZSIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJjb2RlIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9Im5hbWUiIHVuaXF1ZT0iZmFsc2UiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMy9YTUxUeXBlIy8vU3RyaW5nIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJhdHRyaWJ1dGUiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0ibmFtZSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJEb2N1bWVudFJvb3QiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iIi8+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJtaXhlZCIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJtaXhlZCIgdW5pcXVlPSJmYWxzZSIgdXBwZXJCb3VuZD0iLTEiCi0gICAgICAgIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VGZWF0dXJlTWFwRW50cnkiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnRXaWxkY2FyZCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSI6bWl4ZWQiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0ieE1MTlNQcmVmaXhNYXAiIHVuaXF1ZT0iZmFsc2UiCi0gICAgICAgIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iZWNvcmU6RUNsYXNzIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSIKLSAgICAgICAgdHJhbnNpZW50PSJ0cnVlIiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJhdHRyaWJ1dGUiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0ieG1sbnM6cHJlZml4Ii8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InhTSVNjaGVtYUxvY2F0aW9uIiB1bmlxdWU9ImZhbHNlIgotICAgICAgICB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiCi0gICAgICAgIHRyYW5zaWVudD0idHJ1ZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9InhzaTpzY2hlbWFMb2NhdGlvbiIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJjYXRlZ29yeSIgdXBwZXJCb3VuZD0iLTIiCi0gICAgICAgIGVUeXBlPSIjLy9DYXRlZ29yeSIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgY29udGFpbm1lbnQ9InRydWUiCi0gICAgICAgIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJjYXRlZ29yeSIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWVzcGFjZSIgdmFsdWU9IiMjdGFyZ2V0TmFtZXNwYWNlIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9Im5hbWUiIHVwcGVyQm91bmQ9Ii0yIiBlVHlwZT0iIy8vTmFtZSIKLSAgICAgICAgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJuYW1lIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZXNwYWNlIiB2YWx1ZT0iIyN0YXJnZXROYW1lc3BhY2UiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0idGF4b25vbXkiIHVwcGVyQm91bmQ9Ii0yIgotICAgICAgICBlVHlwZT0iIy8vVGF4b25vbXkiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgICAgICByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0idGF4b25vbXkiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSIjI3RhcmdldE5hbWVzcGFjZSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJOYW1lIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9Ik5hbWUiLz4KLSAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9InNpbXBsZSIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJ2YWx1ZSIgdW5pcXVlPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9TdHJpbmciPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9IjowIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9InNpbXBsZSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJsYW5nIiB1bmlxdWU9ImZhbHNlIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL0xhbmd1YWdlIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJhdHRyaWJ1dGUiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0ibGFuZyIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWVzcGFjZSIgdmFsdWU9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJUYXhvbm9teSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJUYXhvbm9teSIvPgotICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudE9ubHkiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0ibmxuYW1lIiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9IiMvL05hbWUiIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0ibmxuYW1lIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImNhdGVnb3J5IiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9IiMvL0NhdGVnb3J5IiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50Ii8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImNhdGVnb3J5Ii8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImlkIiB1bmlxdWU9ImZhbHNlIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL0FueVVSSSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImlkIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImxvY2F0aW9uIiB1bmlxdWU9ImZhbHNlIgotICAgICAgICBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL0FueVVSSSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iYXR0cmlidXRlIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9ImxvY2F0aW9uIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9Im5hbWUiIHVuaXF1ZT0iZmFsc2UiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMy9YTUxUeXBlIy8vU3RyaW5nIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJhdHRyaWJ1dGUiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0ibmFtZSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJyZWYiIHVuaXF1ZT0iZmFsc2UiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMy9YTUxUeXBlIy8vQW55VVJJIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJhdHRyaWJ1dGUiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0icmVmIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InRtb2RlbEtleSIgdW5pcXVlPSJmYWxzZSIKLSAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9TdHJpbmciPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImF0dHJpYnV0ZSIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJ0bW9kZWxLZXkiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci08L2Vjb3JlOkVQYWNrYWdlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuZWNvcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThjZTYwMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9vcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5lY29yZQorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGVjb3JlOkVQYWNrYWdlIHhtaTp2ZXJzaW9uPSIyLjAiCi0gICAgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICAgIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiBuYW1lPSJ1ZGRpcmVnaXN0cnkiCi0gICAgbnNVUkk9Imh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeSIgbnNQcmVmaXg9InVkZGlyZWdpc3RyeSI+Ci0gIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSImI3hEOyYjeEE7ICAgU2VlIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS5odG1sIGFuZCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG5hbWVzcGFjZS4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICBUaGlzIHNjaGVtYSBkb2N1bWVudCBkZXNjcmliZXMgdGhlIFhNTCBuYW1lc3BhY2UsIGluIGEgZm9ybSYjeEQ7JiN4QTsgICAgc3VpdGFibGUgZm9yIGltcG9ydCBieSBvdGhlciBzY2hlbWEgZG9jdW1lbnRzLiAgJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgTm90ZSB0aGF0IGxvY2FsIG5hbWVzIGluIHRoaXMgbmFtZXNwYWNlIGFyZSBpbnRlbmRlZCB0byBiZSBkZWZpbmVkJiN4RDsmI3hBOyAgICBvbmx5IGJ5IHRoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIG9yIGl0cyBzdWJncm91cHMuICBUaGUmI3hEOyYjeEE7ICAgIGZvbGxvd2luZyBuYW1lcyBhcmUgY3VycmVudGx5IGRlZmluZWQgaW4gdGhpcyBuYW1lc3BhY2UgYW5kIHNob3VsZCYjeEQ7JiN4QTsgICAgbm90IGJlIHVzZWQgd2l0aCBjb25mbGljdGluZyBzZW1hbnRpY3MgYnkgYW55IFdvcmtpbmcgR3JvdXAsJiN4RDsmI3hBOyAgICBzcGVjaWZpY2F0aW9uLCBvciBkb2N1bWVudCBpbnN0YW5jZTomI3hEOyYjeEE7JiN4RDsmI3hBOyAgICBiYXNlIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlJiN4RDsmI3hBOyAgICAgICAgIHByb3ZpZGVzIGEgVVJJIHRvIGJlIHVzZWQgYXMgdGhlIGJhc2UgZm9yIGludGVycHJldGluZyBhbnkmI3hEOyYjeEE7ICAgICAgICAgcmVsYXRpdmUgVVJJcyBpbiB0aGUgc2NvcGUgb2YgdGhlIGVsZW1lbnQgb24gd2hpY2ggaXQmI3hEOyYjeEE7ICAgICAgICAgYXBwZWFyczsgaXRzIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCYjeEQ7JiN4QTsgICAgICAgICBieSB2aXJ0dWUgb2YgaXRzIGRlZmluaXRpb24gaW4gdGhlIFhNTCBCYXNlIHNwZWNpZmljYXRpb24uJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgaWQgICAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSYjeEQ7JiN4QTsgICAgICAgICBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgaWYgZGVjbGFyZWQgdG8gYmUgb2YgdHlwZSBJRC4mI3hEOyYjeEE7ICAgICAgICAgVGhlIHhtbDppZCBzcGVjaWZpY2F0aW9uIGlzIG5vdCB5ZXQgYSBXM0MgUmVjb21tZW5kYXRpb24sJiN4RDsmI3hBOyAgICAgICAgIGJ1dCB0aGlzIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBoZXJlIHRvIGZhY2lsaXRhdGUgZXhwZXJpbWVudGF0aW9uJiN4RDsmI3hBOyAgICAgICAgIHdpdGggdGhlIG1lY2hhbmlzbXMgaXQgcHJvcG9zZXMuICBOb3RlIHRoYXQgaXQgaXMgX25vdF8gaW5jbHVkZWQmI3hEOyYjeEE7ICAgICAgICAgaW4gdGhlIHNwZWNpYWxBdHRycyBhdHRyaWJ1dGUgZ3JvdXAuJiN4RDsmI3hBOyYjeEQ7JiN4QTsgICAgbGFuZyAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSYjeEQ7JiN4QTsgICAgICAgICBpcyBhIGxhbmd1YWdlIGNvZGUgZm9yIHRoZSBuYXR1cmFsIGxhbmd1YWdlIG9mIHRoZSBjb250ZW50IG9mJiN4RDsmI3hBOyAgICAgICAgIGFueSBlbGVtZW50OyBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkJiN4RDsmI3hBOyAgICAgICAgIGJ5IHZpcnR1ZSBvZiBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIHNwZWNpZmljYXRpb24uJiN4RDsmI3hBOyAgJiN4RDsmI3hBOyAgICBzcGFjZSAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSYjeEQ7JiN4QTsgICAgICAgICB2YWx1ZSBpcyBhIGtleXdvcmQgaW5kaWNhdGluZyB3aGF0IHdoaXRlc3BhY2UgcHJvY2Vzc2luZyYjeEQ7JiN4QTsgICAgICAgICBkaXNjaXBsaW5lIGlzIGludGVuZGVkIGZvciB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudDsgaXRzJiN4RDsmI3hBOyAgICAgICAgIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCBieSB2aXJ0dWUgb2YgaXRzJiN4RDsmI3hBOyAgICAgICAgIGRlZmluaXRpb24gaW4gdGhlIFhNTCBzcGVjaWZpY2F0aW9uLiYjeEQ7JiN4QTsmI3hEOyYjeEE7ICAgIEZhdGhlciAoaW4gYW55IGNvbnRleHQgYXQgYWxsKTogZGVub3RlcyBKb24gQm9zYWssIHRoZSBjaGFpciBvZiAmI3hEOyYjeEE7ICAgICAgICAgdGhlIG9yaWdpbmFsIFhNTCBXb3JraW5nIEdyb3VwLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkIGJ5ICYjeEQ7JiN4QTsgICAgICAgICB0aGUgZm9sbG93aW5nIGRlY2lzaW9uIG9mIHRoZSBXM0MgWE1MIFBsZW5hcnkgYW5kICYjeEQ7JiN4QTsgICAgICAgICBYTUwgQ29vcmRpbmF0aW9uIGdyb3VwczomI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgICAgICBJbiBhcHByZWNpYXRpb24gZm9yIGhpcyB2aXNpb24sIGxlYWRlcnNoaXAgYW5kIGRlZGljYXRpb24mI3hEOyYjeEE7ICAgICAgICAgICAgIHRoZSBXM0MgWE1MIFBsZW5hcnkgb24gdGhpcyAxMHRoIGRheSBvZiBGZWJydWFyeSwgMjAwMCYjeEQ7JiN4QTsgICAgICAgICAgICAgcmVzZXJ2ZXMgZm9yIEpvbiBCb3NhayBpbiBwZXJwZXR1aXR5IHRoZSBYTUwgbmFtZSYjeEQ7JiN4QTsgICAgICAgICAgICAgeG1sOkZhdGhlciYjeEQ7JiN4QTsgICYjeEQ7JiN4QTtUaGlzIHNjaGVtYSBkZWZpbmVzIGF0dHJpYnV0ZXMgYW5kIGFuIGF0dHJpYnV0ZSBncm91cCYjeEQ7JiN4QTsgICAgICAgIHN1aXRhYmxlIGZvciB1c2UgYnkmI3hEOyYjeEE7ICAgICAgICBzY2hlbWFzIHdpc2hpbmcgdG8gYWxsb3cgeG1sOmJhc2UsIHhtbDpsYW5nLCB4bWw6c3BhY2Ugb3IgeG1sOmlkJiN4RDsmI3hBOyAgICAgICAgYXR0cmlidXRlcyBvbiBlbGVtZW50cyB0aGV5IGRlZmluZS4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHN1Y2ggYSBzY2hlbWEgbXVzdCBpbXBvcnQgdGhpcyBzY2hlbWEmI3hEOyYjeEE7ICAgICAgICBmb3IgdGhlIFhNTCBuYW1lc3BhY2UsIGUuZy4gYXMgZm9sbG93czomI3hEOyYjeEE7ICAgICAgICAmYW1wO2x0O3NjaGVtYSAuIC4gLiZhbXA7Z3Q7JiN4RDsmI3hBOyAgICAgICAgIC4gLiAuJiN4RDsmI3hBOyAgICAgICAgICZhbXA7bHQ7aW1wb3J0IG5hbWVzcGFjZT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UmcXVvdDsmI3hEOyYjeEE7ICAgICAgICAgICAgICAgICAgICBzY2hlbWFMb2NhdGlvbj0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QmcXVvdDsvJmFtcDtndDsmI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgU3Vic2VxdWVudGx5LCBxdWFsaWZpZWQgcmVmZXJlbmNlIHRvIGFueSBvZiB0aGUgYXR0cmlidXRlcyYjeEQ7JiN4QTsgICAgICAgIG9yIHRoZSBncm91cCBkZWZpbmVkIGJlbG93IHdpbGwgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QsIGUuZy4mI3hEOyYjeEE7JiN4RDsmI3hBOyAgICAgICAgJmFtcDtsdDt0eXBlIC4gLiAuJmFtcDtndDsmI3hEOyYjeEE7ICAgICAgICAgLiAuIC4mI3hEOyYjeEE7ICAgICAgICAgJmFtcDtsdDthdHRyaWJ1dGVHcm91cCByZWY9JnF1b3Q7eG1sOnNwZWNpYWxBdHRycyZxdW90Oy8mYW1wO2d0OyYjeEQ7JiN4QTsgJiN4RDsmI3hBOyAgICAgICAgIHdpbGwgZGVmaW5lIGEgdHlwZSB3aGljaCB3aWxsIHNjaGVtYS12YWxpZGF0ZSBhbiBpbnN0YW5jZSYjeEQ7JiN4QTsgICAgICAgICBlbGVtZW50IHdpdGggYW55IG9mIHRob3NlIGF0dHJpYnV0ZXMmI3hEOyYjeEE7SW4ga2VlcGluZyB3aXRoIHRoZSBYTUwgU2NoZW1hIFdHJ3Mgc3RhbmRhcmQgdmVyc2lvbmluZyYjeEQ7JiN4QTsgICBwb2xpY3ksIHRoaXMgc2NoZW1hIGRvY3VtZW50IHdpbGwgcGVyc2lzdCBhdCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L3htbC54c2QuJiN4RDsmI3hBOyAgIEF0IHRoZSBkYXRlIG9mIGlzc3VlIGl0IGNhbiBhbHNvIGJlIGZvdW5kIGF0JiN4RDsmI3hBOyAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZC4mI3hEOyYjeEE7ICAgVGhlIHNjaGVtYSBkb2N1bWVudCBhdCB0aGF0IFVSSSBtYXkgaG93ZXZlciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwmI3hEOyYjeEE7ICAgaW4gb3JkZXIgdG8gcmVtYWluIGNvbXBhdGlibGUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgWE1MIFNjaGVtYSYjeEQ7JiN4QTsgICBpdHNlbGYsIG9yIHdpdGggdGhlIFhNTCBuYW1lc3BhY2UgaXRzZWxmLiAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBYTUwmI3hEOyYjeEE7ICAgU2NoZW1hIG9yIFhNTCBuYW1lc3BhY2VzIGNoYW5nZSwgdGhlIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudCBhdCYjeEQ7JiN4QTsgICBodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2Qgd2lsbCBjaGFuZ2UmI3hEOyYjeEE7ICAgYWNjb3JkaW5nbHk7IHRoZSB2ZXJzaW9uIGF0JiN4RDsmI3hBOyAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgveG1sLnhzZCB3aWxsIG5vdCBjaGFuZ2UuJiN4RDsmI3hBOyAgIi8+Ci0gIDwvZUFubm90YXRpb25zPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkRvY3VtZW50Um9vdCI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSIiLz4KLSAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9Im1peGVkIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9Im1peGVkIiB1bmlxdWU9ImZhbHNlIiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRUZlYXR1cmVNYXBFbnRyeSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudFdpbGRjYXJkIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9IjptaXhlZCIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJ4TUxOU1ByZWZpeE1hcCIgdW5pcXVlPSJmYWxzZSIKLSAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmdUb1N0cmluZ01hcEVudHJ5IgotICAgICAgICB0cmFuc2llbnQ9InRydWUiIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImF0dHJpYnV0ZSIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJ4bWxuczpwcmVmaXgiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0ieFNJU2NoZW1hTG9jYXRpb24iIHVuaXF1ZT0iZmFsc2UiCi0gICAgICAgIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iZWNvcmU6RUNsYXNzIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSIKLSAgICAgICAgdHJhbnNpZW50PSJ0cnVlIiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJhdHRyaWJ1dGUiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0ieHNpOnNjaGVtYUxvY2F0aW9uIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InRheG9ub21pZXMiIHVwcGVyQm91bmQ9Ii0yIgotICAgICAgICBlVHlwZT0iIy8vVGF4b25vbWllcyIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgY29udGFpbm1lbnQ9InRydWUiCi0gICAgICAgIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJ0YXhvbm9taWVzIi8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZXNwYWNlIiB2YWx1ZT0iIyN0YXJnZXROYW1lc3BhY2UiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0idWRkaVJlZ2lzdHJ5IiB1cHBlckJvdW5kPSItMiIKLSAgICAgICAgZVR5cGU9IiMvL1VERElSZWdpc3RyeSIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgY29udGFpbm1lbnQ9InRydWUiCi0gICAgICAgIHJlc29sdmVQcm94aWVzPSJmYWxzZSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJ1ZGRpUmVnaXN0cnkiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSIjI3RhcmdldE5hbWVzcGFjZSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJUYXhvbm9taWVzIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9IlRheG9ub21pZXMiLz4KLSAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnRPbmx5Ii8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InRheG9ub215IiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmVjb3JlIy8vVGF4b25vbXkiCi0gICAgICAgIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0idGF4b25vbXkiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lc3BhY2UiIHZhbHVlPSJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJVRERJUmVnaXN0cnkiIGVTdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmVjb3JlIy8vUmVnaXN0cnkiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iVURESVJlZ2lzdHJ5Ii8+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50T25seSIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJ2ZXJzaW9uIiB1bmlxdWU9ImZhbHNlIgotICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL1N0cmluZyI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJ2ZXJzaW9uIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImRpc2NvdmVyeVVSTCIgdW5pcXVlPSJmYWxzZSIKLSAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9BbnlVUkkiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iZGlzY292ZXJ5VVJMIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InB1YmxpY2F0aW9uVVJMIiB1bmlxdWU9ImZhbHNlIgotICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL0FueVVSSSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJwdWJsaWNhdGlvblVSTCIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJzZWN1cmVkRGlzY292ZXJ5VVJMIiB1bmlxdWU9ImZhbHNlIgotICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZSMvL0FueVVSSSI+Ci0gICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIj4KLSAgICAgICAgPGRldGFpbHMga2V5PSJraW5kIiB2YWx1ZT0iZWxlbWVudCIvPgotICAgICAgICA8ZGV0YWlscyBrZXk9Im5hbWUiIHZhbHVlPSJzZWN1cmVkRGlzY292ZXJ5VVJMIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InNlY3VyZWRQdWJsaWNhdGlvblVSTCIKLSAgICAgICAgdW5pcXVlPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9BbnlVUkkiPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0ic2VjdXJlZFB1YmxpY2F0aW9uVVJMIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImRlZmF1bHRMb2dpbiIgdW5pcXVlPSJmYWxzZSIKLSAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9TdHJpbmciPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iZGVmYXVsdExvZ2luIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImRlZmF1bHRQYXNzd29yZCIgdW5pcXVlPSJmYWxzZSIKLSAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAzL1hNTFR5cGUjLy9TdHJpbmciPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ia2luZCIgdmFsdWU9ImVsZW1lbnQiLz4KLSAgICAgICAgPGRldGFpbHMga2V5PSJuYW1lIiB2YWx1ZT0iZGVmYXVsdFBhc3N3b3JkIi8+Ci0gICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InRheG9ub21pZXMiIGVUeXBlPSIjLy9UYXhvbm9taWVzIgotICAgICAgICBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIj4KLSAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vL29yZy9lY2xpcHNlL2VtZi9lY29yZS91dGlsL0V4dGVuZGVkTWV0YURhdGEiPgotICAgICAgICA8ZGV0YWlscyBrZXk9ImtpbmQiIHZhbHVlPSJlbGVtZW50Ii8+Ci0gICAgICAgIDxkZXRhaWxzIGtleT0ibmFtZSIgdmFsdWU9InRheG9ub21pZXMiLz4KLSAgICAgIDwvZUFubm90YXRpb25zPgotICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci08L2Vjb3JlOkVQYWNrYWdlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvcGx1Z2luLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk2NWM2Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotIyAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAyMDA3MTEyMiAgIDIwOTg1OCBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0jIDIwMDgwMzI0ICAgMjIwNzM5IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBUZXh0IERlc2NyaXB0aW9uIG1pc3NpbmcgZm9yIFByb2ZpbGUgQ29tcGxhaW5jZSBub2RlcwotIyAyMDA4MDQwMyAgIDIyNTQ4MCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotIyAyMDA4MDcxNSAgIDI0MDcyMiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQ2Fubm90IHNldHVwIFRDUC9JUCBNb25pdG9yIGZvciBzb2FwMTIgZW5kcG9pbnRzCi0jIDIwMDkwMzEwICAgMjQyNDQwIHllbmx1QGNhLmlibS5jb20gLSBZZW4gTHUsIFBsdWdnYWJsZSBJRmlsZSB0byBVUkkgQ29udmVydGVyCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPVdlYiBTZXJ2aWNlcwotUExVR0lOX1BST1ZJREVSPUVjbGlwc2Uub3JnCi0KLSMgRXh0ZW5zaW9uIHBvaW50IG5hbWVzCi1YUF9XRUJfU0VSVklDRV9MT0NBVE9SPVdlYiBTZXJ2aWNlIExvY2F0b3IKLVhfV0VCX1NFUlZJQ0VfTE9DQVRPUl9XT1JLU1BBQ0U9V29ya3NwYWNlIFdlYiBTZXJ2aWNlIExvY2F0b3IKLVhfV0VCX1NFUlZJQ0VfTE9DQVRPUl9DQVRFR09SWV9XT1JLU1BBQ0U9V29ya3NwYWNlIFdTREwgZG9jdW1lbnRzCi1YX1dTSUxfQ09OVEVOVF9UWVBFPVdlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIERvY3VtZW50Ci1YUF9FWFRFTlNJQklMSVRZX0VMRU1FTlRfVFJBTlNGT1JNRVI9RXh0ZW5zaWJpbGl0eSBFbGVtZW50IFRyYW5zZm9ybWVyCi1YUF9JRklMRV8yX1VSSV9DT05WRVJURVI9SUZpbGUgdG8gVVJJIENvbnZlcnRlcgotCi1NU0dfRVJST1JfVU5BQkxFX1RPX1NUQVJUX01PTklUT1I9SVdBQjAwMDFFIFVuYWJsZSB0byBtb25pdG9yIHBvcnQgezB9IG9mIHsxfS4KLQotIyBDdXJyZW50bHkga25vd24gcHVibGljIFVEREkgcmVnaXN0cmllcwotUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX1NBUD1TQVAgVURESSBSZWdpc3RyeQotUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX1NBUF9URVNUPVNBUCBVRERJIFRlc3QgUmVnaXN0cnkKLVBVQkxJQ1VERElSRUdJU1RSWVRZUEVfTkFNRV9YTUVUSE9EUz1YTWV0aG9kcyBSZWdpc3RyeQotUFVCTElDVURESVJFR0lTVFJZVFlQRV9OQU1FX05UVENPTU09TlRUIENvbW11bmljYXRpb25zIFJlZ2lzdHJ5Ci0KLQotUFJFRkVSRU5DRV9TRVJWSUNFUE9MSUNJRVNfQ09OVEFJTkVSX1dTSV9DT01QTElBTkNFPVByb2ZpbGUgQ29tcGxpYW5jZQotTEFCRUxfV1NJX1NTQlA9V1MtSSBCUCAxLjEgKyBTU0JQIDEuMAotTEFCRUxfV1NJX0FQPVdTLUkgQVAgMS4wCi0KLSMgU2VydmljZSBwb2xpY3kgZGVzY3JpcHRpb25zCi1ERVNDUklQVElPTl9XU0lfQ09NUExJQU5DRT1XZWIgc2VydmljZXMgaW50ZXJvcGVyYWJpbGl0eSAoV1MtSSkgcHJvZmlsZXMgY29tcGxpYW5jZSBsZXZlbHMuCi1ERVNDUklQVElPTl9XU0lfQVA9V1MtSSBBdHRhY2htZW50cyBQcm9maWxlIDEuMFxuXAotUmVxdWlyZW1lbnRzIGZvciBzdXBwb3J0aW5nIGludGVyb3BlcmFibGUgU09BUCBtZXNzYWdlcyB3aXRoIGF0dGFjaG1lbnRzLWJhc2VkIFdlYiBzZXJ2aWNlcy4KLURFU0NSSVBUSU9OX1dTSV9TU0JQPVdTLUkgQmFzaWMgUHJvZmlsZSAxLjEgYW5kIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSAxLjBcblwKLUJhc2ljIHByb2ZpbGUgYW5kIHJlcXVpcmVtZW50cyByZWxhdGVkIHRvIHRoZSBzZXJpYWxpemF0aW9uIG9mIGFuIGVudmVsb3BlIGFuZCBpdHMgcmVwcmVzZW50YXRpb24gaW4gYSBTT0FQIG1lc3NhZ2UuCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3MvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJmMmU1Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci0KLTxwbHVnaW4+Ci0KLSAgIDwhLS0gVGhlIGZvbGxvd2luZyBleHRlbnNpb24gcG9pbnQgaXMgaW50ZXJuYWwsIHRob3VnaCBsaWtlbHkgdG8gYmUgcHJvbW90ZWQgZm9yIHB1YmxpYyB1c2UsIHBvc3NpYmx5IHdpdGggY2hhbmdlcywgaW4gYSBmdXR1cmUgcmVsZWFzZS4gLS0+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJsb2NhdG9yIiBuYW1lPSIlWFBfV0VCX1NFUlZJQ0VfTE9DQVRPUiIgc2NoZW1hPSJzY2hlbWEvd2ViU2VydmljZUxvY2F0b3IuZXhzZCIvPgotICAgCi0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyIiBuYW1lPSIlWFBfRVhURU5TSUJJTElUWV9FTEVNRU5UX1RSQU5TRk9STUVSIiBzY2hlbWE9InNjaGVtYS9FeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyLmV4c2QiLz4KLSAgIDxleHRlbnNpb24tcG9pbnQgaWQ9ImlmaWxlMnVyaWNvbnZlcnRlciIgbmFtZT0iJVhQX0lGSUxFXzJfVVJJX0NPTlZFUlRFUiIgc2NoZW1hPSJzY2hlbWEvaWZpbGUydXJpY29udmVydGVyLmV4c2QiLz4KLQotICAgPCEtLSBFeHRlbnNpb24gcHJvdmlkaW5nIHdvcmtzcGFjZSBXU0RMIGRpc2NvdmVyeSAtLT4gICAKLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS53c3Qud3MubG9jYXRvciI+Ci0KLSAgICAgIDx3ZWJTZXJ2aWNlTG9jYXRvckNhdGVnb3J5Ci0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzZmluZGVyLmNhdGVnb3J5LndvcmtzcGFjZSIKLSAgICAgICAgICAgIGxhYmVsPSIlWF9XRUJfU0VSVklDRV9MT0NBVE9SX0NBVEVHT1JZX1dPUktTUEFDRSIvPgotCi0gICAgICA8d2ViU2VydmljZUxvY2F0b3IKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NmaW5kZXIuV29ya3NwYWNlV1NETExvY2F0b3IiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzZmluZGVyLldvcmtzcGFjZVdTRExMb2NhdG9yIgotICAgICAgICAgICAgY2F0ZWdvcnk9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlci5jYXRlZ29yeS53b3Jrc3BhY2UiCi0gICAgICAgICAgICBsYWJlbD0iJVhfV0VCX1NFUlZJQ0VfTE9DQVRPUl9XT1JLU1BBQ0UiPgotICAgICAgPC93ZWJTZXJ2aWNlTG9jYXRvcj4KLQotICAgPC9leHRlbnNpb24+Ci0gICAKLSAgIDwhLS0gRXh0ZW5zaW9uIHRvIGJpbmQgYSBmaWxlIHR5cGUgdG8gV1NJTCBmaWxlcyAtLT4KLSAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLnRlYW0uY29yZS5maWxlVHlwZXMiPgotICAgICAgPGZpbGVUeXBlcwotICAgICAgICAgICAgdHlwZT0idGV4dCIKLSAgICAgICAgICAgIGV4dGVuc2lvbj0id3NpbCIvPgotICAgPC9leHRlbnNpb24+Ci0KLSAgIDwhLS0gRXh0ZW5zaW9uIHRvIGRlZmluZSBhIGNvbnRlbnQgdHlwZSBmb3IgV1NJTCBmaWxlcyAtLT4KLSAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5jb250ZW50VHlwZXMiPgotICAgICAgPGNvbnRlbnQtdHlwZQotICAgICAgICAgICAgcHJpb3JpdHk9ImhpZ2giCi0gICAgICAgICAgICBuYW1lPSIlWF9XU0lMX0NPTlRFTlRfVFlQRSIKLSAgICAgICAgICAgIGlkPSJ3c2lsc291cmNlIgotICAgICAgICAgICAgYmFzZS10eXBlPSJvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUueG1sIgotICAgICAgICAgICAgZGVmYXVsdC1jaGFyc2V0PSJVVEYtOCIKLSAgICAgICAgICAgIGZpbGUtZXh0ZW5zaW9ucz0id3NpbCIvPgotICAgPC9leHRlbnNpb24+Ci0gICAKLSAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5zZXJ2aWNlcG9saWN5Ij4KLSAgICAgPHNlcnZpY2VQb2xpY3k+Ci0gICAgICAgICA8bG9hZExpc3RlbmVyIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuTWlncmF0ZVdTSXByZWZlcmVuY2VzTG9hZExpc3RlbmVyIi8+Ci0gICAgIDwvc2VydmljZVBvbGljeT4KLSAgIDwvZXh0ZW5zaW9uPiAKLSAgIAotICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zLnByb3BlcnR5VGVzdGVycyI+Ci0gICAgPHByb3BlcnR5VGVzdGVyCi0gICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2Uud3Muc2VydmljZS5wb2xpY3kiCi0gICAgICB0eXBlPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCIKLSAgICAgIG5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2Uud3Muc2VydmljZS5wb2xpY3kiCi0gICAgICBwcm9wZXJ0aWVzPSJwcm9qZWN0SGFzV1NETGZpbGVzIgotICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlcy5XU0RMRmlsZVByb3BlcnR5VGVzdGVyIj4KLSAgICA8L3Byb3BlcnR5VGVzdGVyPgotICA8L2V4dGVuc2lvbj4KLSAgCi0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuc2VydmljZXBvbGljeSI+Ci0gICAgIDxzZXJ2aWNlUG9saWN5PgotICAgICAgIDxlbmFibGVtZW50PgotICAgICAgICAgICA8b3I+Ci0gICAgICAgICAgICAgPHRlc3QgcHJvcGVydHk9Im9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnByb2plY3RGYWNldCIKLSAgICAgICAgICAgICAgICAgICB2YWx1ZT0ianN0LndlYiIvPgotICAgICAgICAgICAgIDx0ZXN0IHByb3BlcnR5PSJvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5wcm9qZWN0RmFjZXQiCi0gICAgICAgICAgICAgICAgICAgdmFsdWU9ImpzdC5lamIiLz4KLSAgICAgICAgICAgICA8dGVzdCBwcm9wZXJ0eT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2Uud3Muc2VydmljZS5wb2xpY3kucHJvamVjdEhhc1dTRExmaWxlcyIvPgotICAgICAgICAgICA8L29yPgotICAgICAgIDwvZW5hYmxlbWVudD4KLSAgICAgICAKLSAgICAgICA8cG9saWN5IGlkPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbHMud3NpcHJvZmlsZWNvbXAiPgotICAgICAgICAgPCEtLSBDT05URVhUX0lEIFBTUFcwMDAxIGZvciB0aGUgU2VydmljZSBQb2xpY2llcyBXUy1JIFByZWZlcmVuY2VzIGNhdGVnb3J5IC0tPgotICAgICAgICAgPGRlc2NyaXB0b3IgbG9uZ05hbWU9IiVQUkVGRVJFTkNFX1NFUlZJQ0VQT0xJQ0lFU19DT05UQUlORVJfV1NJX0NPTVBMSUFOQ0UiIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L3dzaWNhdC5naWYiIGNvbnRleHRIZWxwSWQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5QU1BXMDAwMSIKLSAgICAgICAgIAlkZXNjcmlwdGlvbj0iJURFU0NSSVBUSU9OX1dTSV9DT01QTElBTkNFIi8+Ci0gICAgICAgPC9wb2xpY3k+Ci0gICAgICAgPHBvbGljeSBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnNlcnZpY2Vwb2xzLndzaXByb2ZpbGVjb21wLndzaWFwIiBwYXJlbnRQb2xpY3lJZD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnNlcnZpY2Vwb2xzLndzaXByb2ZpbGVjb21wIiBlbnVtTGlzdElkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuc3VnZ2VzdGlvbkVudW0iIGRlZmF1bHRFbnVtSWQ9Im9yZy5lY2xpcHNlLndzdC5zdWcuc3VnZ2VzdCI+Ci0gICAgICAgICA8IS0tIENPTlRFWFRfSUQgUFNQVzAwMDIgZm9yIHRoZSBTZXJ2aWNlIFBvbGljaWVzIFdTLUkgQVAgMS4wIFByZWZlcmVuY2UgLS0+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBsb25nTmFtZT0iJUxBQkVMX1dTSV9BUCIgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvd3NpY2F0X2NoaWxkLmdpZiIgY29udGV4dEhlbHBJZD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlBTUFcwMDAyIgotICAgICAgICAgCWRlc2NyaXB0aW9uPSIlREVTQ1JJUFRJT05fV1NJX0FQIi8+Ci0gICAgICAgICA8cmVsYXRpb25zaGlwIGVudW1MaXN0PSJvcmcuZWNsaXBzZS53c3Quc3VnLnN1Z2dlc3QiPgotICAgICAgICAgICA8dGFyZ2V0UG9saWN5IGlkPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbHMud3NpcHJvZmlsZWNvbXAud3Npc3NicCIKLSAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD0ib3JnLmVjbGlwc2Uud3N0LnN1Zy5zdWdnZXN0IG9yZy5lY2xpcHNlLndzdC5zdWcucmVxdWlyZSIvPgotICAgICAgICAgPC9yZWxhdGlvbnNoaXA+Ci0gICAgICAgICA8cmVsYXRpb25zaGlwIGVudW1MaXN0PSJvcmcuZWNsaXBzZS53c3Quc3VnLnJlcXVpcmUiPgotICAgICAgICAgICA8dGFyZ2V0UG9saWN5IGlkPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbHMud3NpcHJvZmlsZWNvbXAud3Npc3NicCIKLSAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD0ib3JnLmVjbGlwc2Uud3N0LnN1Zy5yZXF1aXJlIi8+Ci0gICAgICAgICA8L3JlbGF0aW9uc2hpcD4KLSAgICAgICAgIDxzdGF0ZSBrZXk9ImRlZmF1bHRQcm90b2NvbCIgdmFsdWU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iLz4KLSAgICAgICA8L3BvbGljeT4KLSAgICAgICA8cG9saWN5IGlkPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbHMud3NpcHJvZmlsZWNvbXAud3Npc3NicCIgcGFyZW50UG9saWN5SWQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5zZXJ2aWNlcG9scy53c2lwcm9maWxlY29tcCIgZW51bUxpc3RJZD0ib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LnN1Z2dlc3Rpb25FbnVtIiBkZWZhdWx0RW51bUlkPSJvcmcuZWNsaXBzZS53c3Quc3VnLnN1Z2dlc3QiPgotICAgICAgICAgPCEtLSBDT05URVhUX0lEIFBTUFcwMDAzIGZvciB0aGUgU2VydmljZSBQb2xpY2llcyBXUy1JIFNTQlAgMS4wIFByZWZlcmVuY2UgLS0+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBsb25nTmFtZT0iJUxBQkVMX1dTSV9TU0JQIiBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi93c2ljYXRfY2hpbGQuZ2lmIiBjb250ZXh0SGVscElkPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuUFNQVzAwMDMiCi0gICAgICAgICAJZGVzY3JpcHRpb249IiVERVNDUklQVElPTl9XU0lfU1NCUCIvPgotICAgICAgICAgPHN0YXRlIGtleT0iZGVmYXVsdFByb3RvY29sIiB2YWx1ZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIvPgotICAgICAgIDwvcG9saWN5PgotICAgICA8L3NlcnZpY2VQb2xpY3k+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgCi08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NjaGVtYS9FeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyLmV4c2QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zY2hlbWEvRXh0ZW5zaWJpbGl0eUVsZW1lbnRUcmFuc2Zvcm1lci5leHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmQ0NTNiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NjaGVtYS9FeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LndzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotPGFubm90YXRpb24+Ci0gICAgICA8YXBwaW5mbz4KLSAgICAgICAgIDxtZXRhLnNjaGVtYSBwbHVnaW49Im9yZy5lY2xpcHNlLndzdC53cyIgaWQ9IkV4dGVuc2liaWxpdHlFbGVtZW50VHJhbnNmb3JtZXIiIG5hbWU9IkV4dGVuc2liaWxpdHkgRWxlbWVudCBUcmFuc2Zvcm1lciIvPgotICAgICAgPC9hcHBpbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGlzIGV4dGVuc2lvbiBwb2ludCBpcyBwcm92aWRlZCBmb3IgYWRkaW5nIFRDUC9JUCBtb25pdG9yIHN1cHBvcnQgZm9yIG5vbi1zdGFuZGFyZCBlbmRwb2ludHMuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImV4dGVuc2lvbiI+Ci0gICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgIDxhcHBpbmZvPgotICAgICAgICAgICAgPG1ldGEuZWxlbWVudCAvPgotICAgICAgICAgPC9hcHBpbmZvPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ0cmFuc2Zvcm1lciIvPgotICAgICAgICAgPC9zZXF1ZW5jZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9pbnQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBpbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIHRyYW5zbGF0YWJsZT0idHJ1ZSIvPgotICAgICAgICAgICAgICAgPC9hcHBpbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJ0cmFuc2Zvcm1lciI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImNsYXNzIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUgdHJhbnNmb3JtZXIgY2xhc3Mgd2hpY2ggZXh0ZW5kcyBJRXh0ZW5zaWJpbGl0eUVsZW1lbnRUcmFuc2Zvcm1lci4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBpbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIGtpbmQ9ImphdmEiIGJhc2VkT249IjpvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9uaXRvci5JRXh0ZW5zaWJpbGl0eUVsZW1lbnRUcmFuc2Zvcm1lciIvPgotICAgICAgICAgICAgICAgPC9hcHBpbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBpbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJzaW5jZSIvPgotICAgICAgPC9hcHBpbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBbRW50ZXIgdGhlIGZpcnN0IHJlbGVhc2UgaW4gd2hpY2ggdGhpcyBleHRlbnNpb24gcG9pbnQgYXBwZWFycy5dCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcGluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+Ci0gICAgICA8L2FwcGluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFtFbnRlciBleHRlbnNpb24gcG9pbnQgdXNhZ2UgZXhhbXBsZSBoZXJlLl0KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwaW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpaW5mbyIvPgotICAgICAgPC9hcHBpbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBFeHRlbmRlcnMgc2hvdWxkIGltcGxlbWVudCAmbHQ7Y29kZSZndDsvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9uaXRvci9JRXh0ZW5zaWJpbGl0eUVsZW1lbnRUcmFuc2Zvcm1lciZsdDsvY29kZSZndDsuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcGluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImltcGxlbWVudGF0aW9uIi8+Ci0gICAgICA8L2FwcGluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFtFbnRlciBpbmZvcm1hdGlvbiBhYm91dCBzdXBwbGllZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGV4dGVuc2lvbiBwb2ludC5dCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcGluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImNvcHlyaWdodCIvPgotICAgICAgPC9hcHBpbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0O2JyJmd0OwotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSAKLWF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyAKLXRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICZsdDthCi1ocmVmPSZxdW90O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJnF1b3Q7Jmd0O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJmx0Oy9hJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NjaGVtYS9pZmlsZTJ1cmljb252ZXJ0ZXIuZXhzZCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NjaGVtYS9pZmlsZTJ1cmljb252ZXJ0ZXIuZXhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMzMmI1Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zY2hlbWEvaWZpbGUydXJpY29udmVydGVyLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LndzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotPGFubm90YXRpb24+Ci0gICAgICA8YXBwaW5mbz4KLSAgICAgICAgIDxtZXRhLnNjaGVtYSBwbHVnaW49Im9yZy5lY2xpcHNlLndzdC53cyIgaWQ9ImlmaWxlMnVyaWNvbnZlcnRlciIgbmFtZT0iSUZpbGUgdG8gVVJJIENvbnZlcnRlciIvPgotICAgICAgPC9hcHBpbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGlzIGV4dGVuc2lvbiBwb2ludCBpcyBwcm92aWRlZCB0byByZWdpc3RlciBJRmlsZSB0byBVUkkgY29udmVydGVycyB3aGljaCBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgZWl0aGVyIGZpbGU6IG9yIHBsYXRmb3JtOiBVUklzIHByb3ZpZGVkIGJ5IHRoZSBXZWIgU2VydmljZXMgdG9vbHMuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImV4dGVuc2lvbiI+Ci0gICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgIDxhcHBpbmZvPgotICAgICAgICAgICAgPG1ldGEuZWxlbWVudCAvPgotICAgICAgICAgPC9hcHBpbmZvPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJjb252ZXJ0ZXIiLz4KLSAgICAgICAgIDwvc2VxdWVuY2U+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBvaW50IiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIElEIG9mIHRoZSBJRmlsZSB0byBVUkkgQ29udmVydGVyIGV4dGVuc2lvbi4gSWYgdGhlIGV4dGVuc2lvbiB3aWxsIHNlcnZlIHRoZSBwcm9kdWN0IHRoZW4gdGhpcyBpcyB0aGUgSUQgdGhhdCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBwcm9kdWN0JmFwb3M7cyBwbHVnaW5fY3VzdG9taXphdGlvbi5pbmkgdmlhIHRoZSBzZXR0aW5nOgotCi0mbHQ7Y29kZSZndDtvcmcuZWNsaXBzZS53c3Qud3MvSUZpbGUyVXJpQ29udmVydGVyID0gW3ZhbHVlIG9mIGlkXSZsdDsvY29kZSZndDsKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgPGFwcGluZm8+Ci0gICAgICAgICAgICAgICAgICA8bWV0YS5hdHRyaWJ1dGUgdHJhbnNsYXRhYmxlPSJ0cnVlIi8+Ci0gICAgICAgICAgICAgICA8L2FwcGluZm8+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImNvbnZlcnRlciI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImNsYXNzIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUgSUZpbGUgdG8gVVJJIGNvbnZlcnRlciBwcm92aWRlZCBmb3IgdGhpcyBwcm9kdWN0LgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgPGFwcGluZm8+Ci0gICAgICAgICAgICAgICAgICA8bWV0YS5hdHRyaWJ1dGUga2luZD0iamF2YSIgYmFzZWRPbj0ib3JnLmVjbGlwc2Uud3N0LmludGVybmFsLmNvbnZlcnRlci5BYnN0cmFjdElGaWxlMlVyaUNvbnZlcnRlcjoiLz4KLSAgICAgICAgICAgICAgIDwvYXBwaW5mbz4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwaW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0ic2luY2UiLz4KLSAgICAgIDwvYXBwaW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgW0VudGVyIHRoZSBmaXJzdCByZWxlYXNlIGluIHdoaWNoIHRoaXMgZXh0ZW5zaW9uIHBvaW50IGFwcGVhcnMuXQotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBpbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJleGFtcGxlcyIvPgotICAgICAgPC9hcHBpbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAmbHQ7ZXh0ZW5zaW9uIHBvaW50PSZxdW90O29yZy5lY2xpcHNlLndzdC53cy5pZmlsZTJ1cmljb252ZXJ0ZXImcXVvdDsgaWQ9JnF1b3Q7Y29tLmV4YW1wbGUuY29udmVydGVycGx1Z2luLmNvbnZlcnRlcmV4dGVuc2lvbiZxdW90OyZndDsKLSAgJmx0O2NvbnZlcnRlciBjbGFzcz0mcXVvdDtjb20uZXhhbXBsZS5jb252ZXJ0ZXJwbHVnaW4uaW1wbC5NeUlGaWxlMlVyaUNvbnZlcnRlciZxdW90Oy8mZ3Q7Ci0mbHQ7L2V4dGVuc2lvbiZndDsKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwaW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpaW5mbyIvPgotICAgICAgPC9hcHBpbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBFeHRlbmRlcnMgc2hvdWxkIHN1YmNsYXNzICZsdDtjb2RlJmd0O29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2NvbnZlcnRlci9BYnN0cmFjdElGaWxlMlVyaUNvbnZlcnRlciZsdDsvY29kZSZndDsKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwaW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iaW1wbGVtZW50YXRpb24iLz4KLSAgICAgIDwvYXBwaW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgW0VudGVyIGluZm9ybWF0aW9uIGFib3V0IHN1cHBsaWVkIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZXh0ZW5zaW9uIHBvaW50Ll0KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NjaGVtYS93ZWJTZXJ2aWNlTG9jYXRvci5leHNkIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc2NoZW1hL3dlYlNlcnZpY2VMb2NhdG9yLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkOTdkMGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc2NoZW1hL3dlYlNlcnZpY2VMb2NhdG9yLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxOTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LndzIj4KLTxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zY2hlbWEgcGx1Z2luPSJvcmcuZWNsaXBzZS53c3Qud3MiIGlkPSJ3ZWJTZXJ2aWNlTG9jYXRvciIgbmFtZT0iV2ViIFNlcnZpY2UgTG9jYXRvciIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGlzIGV4dGVuc2lvbiBwb2ludCBpcyBwcm92aWRlZCB0byByZWdpc3RlciBsb2NhdG9ycyB0aGF0IGV4dGVuZCBBYnN0cmFjdFdlYlNlcnZpY2VMb2NhdG9yLgotICAgICAgICAgVGhlc2UgbG9jYXRvcnMgYXJlIHVzZWQgYnkgV2ViU2VydmljZUZpbmRlciB0byBsb2NhdGUgV2ViIHNlcnZpY2VzIGZvciB0aGUgcHVycG9zZSBvZiBXZWIgc2VydmljZSBkaXNjb3ZlcnkuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImV4dGVuc2lvbiI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YWxsPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ3ZWJTZXJ2aWNlTG9jYXRvciIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ3ZWJTZXJ2aWNlTG9jYXRvckNhdGVnb3J5IiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+Ci0gICAgICAgICA8L2FsbD4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9pbnQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgQSBmdWxseSBxdWFsaWZpZWQgaWRlbnRpZmllciBvZiB0aGUgdGFyZ2V0IGV4dGVuc2lvbiBwb2ludC4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBBbiBvcHRpb25hbCBpZGVudGlmaWVyIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBBbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICA8YXBwSW5mbz4KLSAgICAgICAgICAgICAgICAgIDxtZXRhLmF0dHJpYnV0ZSB0cmFuc2xhdGFibGU9InRydWUiLz4KLSAgICAgICAgICAgICAgIDwvYXBwSW5mbz4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0id2ViU2VydmljZUxvY2F0b3IiPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgV2ViIFNlcnZpY2UgTG9jYXRvci4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWUgZm9yIHRoZSBsb2NhdG9yIGNsYXNzIHdoaWNoIGV4dGVuZHMgQWJzdHJhY3RXZWJTZXJ2aWNlTG9jYXRvci4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBBIHNob3J0IGxhYmVsIHRvIGlkZW50aWZ5IHRoZSBXZWIgU2VydmljZSBMb2NhdG9yLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgPGFwcEluZm8+Ci0gICAgICAgICAgICAgICAgICA8bWV0YS5hdHRyaWJ1dGUgdHJhbnNsYXRhYmxlPSJ0cnVlIi8+Ci0gICAgICAgICAgICAgICA8L2FwcEluZm8+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgT3B0aW9uYWxseSwgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUgV2ViIFNlcnZpY2UgTG9jYXRvci4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIHRyYW5zbGF0YWJsZT0idHJ1ZSIvPgotICAgICAgICAgICAgICAgPC9hcHBJbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Imljb24iIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgT3B0aW9uYWxseSwgYW4gaWNvbiB0aGF0IHJlcHJlc2VudHMgdGhlIFdlYiBTZXJ2aWNlIExvY2F0b3IuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgT3B0aW9uYWxseSwgYSBjYXRlZ29yeSB0byB3aGljaCB0aGUgV2ViIFNlcnZpY2UgTG9jYXRvciBzaG91bGQgYmVsb25nLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJ3ZWJTZXJ2aWNlTG9jYXRvckNhdGVnb3J5Ij4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNhdGVnb3J5IG9mIFdlYiBTZXJ2aWNlIExvY2F0b3JzLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIEEgc2hvcnQgbGFiZWwgZm9yIHRoZSBjYXRlZ29yeSBvZiBXZWIgU2VydmljZSBMb2NhdG9ycy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIHRyYW5zbGF0YWJsZT0idHJ1ZSIvPgotICAgICAgICAgICAgICAgPC9hcHBJbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImRlc2NyaXB0aW9uIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIGEgZGVzY3JpcHRpb24gb2YgdGhlIGNhdGVnb3J5IG9mIFdlYiBTZXJ2aWNlIExvY2F0b3JzLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgPGFwcEluZm8+Ci0gICAgICAgICAgICAgICAgICA8bWV0YS5hdHRyaWJ1dGUgdHJhbnNsYXRhYmxlPSJ0cnVlIi8+Ci0gICAgICAgICAgICAgICA8L2FwcEluZm8+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWNvbiIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBPcHRpb25hbGx5LCBhbiBpY29uIHRoYXQgcmVwcmVzZW50cyB0aGUgY2F0ZWdvcnkgb2YgV2ViIFNlcnZpY2UgTG9jYXRvcnMuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgT3B0aW9uYWxseSwgYSBwYXJlbnQgY2F0ZWdvcnkgdW5kZXIgd2hpY2ggdGhlIFdlYiBTZXJ2aWNlIExvY2F0b3IKLSAgICAgICAgICAgICAgICAgIGNhdGVnb3J5IHNob3VsZCBiZSBncm91cGVkLiBJZiBhYnNlbnQsIHRoZSBjYXRlZ29yeSBpcyBjb25zaWRlcmVkCi0gICAgICAgICAgICAgICAgICB0byBiZSBhIHJvb3QgY2F0ZWdvcnkuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9InNpbmNlIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICZsdDtiJmd0O1RoaXMgZXh0ZW5zaW9uIHBvaW50IGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuJmx0Oy9iJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJleGFtcGxlcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpSW5mbyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBFeHRlbmRlcnMgc2hvdWxkIGltcGxlbWVudCAmbHQ7Y29kZSZndDtvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NmaW5kZXIuQWJzdHJhY3RXZWJTZXJ2aWNlTG9jYXRvciZsdDsvY29kZSZndDsuICBUaGUgV2ViU2VydmljZUxvY2F0b3JSZWdpc3RyeSB1c2VzIHRoaXMgZXh0ZW5zaW9uIHBvaW50IHRvIHJldHJpZXZlIGFsbCBsb2NhdG9ycy4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iaW1wbGVtZW50YXRpb24iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImNvcHlyaWdodCIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0O2JyJmd0OwotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSAKLWF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyAKLXRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICZsdDthCi1ocmVmPSZxdW90O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJnF1b3Q7Jmd0O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJmx0Oy9hJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvV3N0V1NQbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvV3N0V1NQbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgwMzY2OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL1dzdFdTUGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNjA0MjAgICAxMjA3MTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMgMjAwNzAxMjUgICAxNzEwNzEgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWsKLSMgMjAwNzA0MDkgICAxODE2MzUgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWsKLSMgMjAwODA0MDMgICAyMjU0ODAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBHZXRNb25pdG9yQ29tbWFuZAotIwotTVNHX0VSUk9SX1VOQUJMRV9UT19TVEFSVF9NT05JVE9SPUlXQUIwMDAxRSBVbmFibGUgdG8gbW9uaXRvciBwb3J0IHswfSBvZiB7MX0uCi0KLSMKLSMgV1NETFV0aWxpdHkKLSMKLU1TR19VTkFCTEVfVE9fUkVTT0xWRV9IVFRQPUNvdWxkIG5vdCByZXNvbHZlIHNlcnZpY2UgZGVmaW5pdGlvbiBodHRwOi8vezB9LiAgU2VydmljZSBtYXkgbm90IGJlIHJ1bm5pbmcgb24gdGhlIHNlcnZlci4KLU1TR19VTkFCTEVfVE9fUkVTT0xWRV9QTEFURk9STV9VUkk9Q291bGQgbm90IHBhcnNlIHBsYXRmb3JtOi9yZXNvdXJjZXswfS4KLQotIwotIyBXU0lDb21wbGlhbmNlVXRpbHMKLSMKLUlHTk9SRV9MQUJFTD1JZ25vcmUKLUlHTk9SRV9ERVNDUklQVElPTj1JZ25vcmUgdGhlIFdTLUkgbm9uLWNvbXBsaWFuY2UgYW5kIGNvbnRpbnVlCi1JR05PUkVfQUxMX0xBQkVMPUlnbm9yZSBBbGwKLUlHTk9SRV9BTExfREVTQ1JJUFRJT049QWx3YXlzIGlnbm9yZSB0aGUgV1MtSSBub24tY29tcGxpYW5jZSBhbmQgY29udGludWUKLUNBTkNFTF9MQUJFTD1DYW5jZWwKLUNBTkNFTF9ERVNDUklQVElPTj1DYW5jZWwKLQotIwotIwlXUy1JIENvbXBsaWFuY2UgTWVzc2FnZXMKLSMKLVdTSV9TU0JQX0VSUk9SPVlvdSBoYXZlIG1hZGUgYSBjaG9pY2UgdGhhdCBtYXkgcmVzdWx0IGluIGEgV2ViIHNlcnZpY2UgdGhhdCBkb2VzIG5vdCBjb21wbHkgd2l0aCB0aGUgV1MtSSBCYXNpYyBQcm9maWxlIDEuMSBhbmQgU2ltcGxlIFNPQVAgQmluZGluZyBQcm9maWxlIDEuMC4gWW91ciBjdXJyZW50IFdlYiBzZXJ2aWNlcyBwcmVmZXJlbmNlIGlzIHNldCB0byByZXF1aXJlIGNvbXBsaWFuY2UuCi1XU0lfU1NCUF9XQVJOSU5HPVlvdSBoYXZlIG1hZGUgYSBjaG9pY2UgdGhhdCBtYXkgcmVzdWx0IGluIGEgV2ViIHNlcnZpY2UgdGhhdCBkb2VzIG5vdCBjb21wbHkgd2l0aCB0aGUgV1MtSSBCYXNpYyBQcm9maWxlIDEuMSBhbmQgU2ltcGxlIFNPQVAgQmluZGluZyBQcm9maWxlIDEuMC4gRG8geW91IHdpc2ggdG8gaWdub3JlIHRoaXMgd2FybmluZyBhbmQgY29udGludWU/Ci1XU0lfU1NCUF9JTkNPTVBMSUFOVF9SVU5USU1FPVRoZSBzZWxlY3RlZCBXZWIgU2VydmljZSBydW50aW1lIGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSBXUy1JIEJhc2ljIFByb2ZpbGUgMS4xIGFuZCBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGUgMS4wLgotV1NJX0FQX0VSUk9SPVlvdSBoYXZlIG1hZGUgYSBjaG9pY2UgdGhhdCBtYXkgcmVzdWx0IGluIGEgV2ViIHNlcnZpY2UgdGhhdCBkb2VzIG5vdCBjb21wbHkgd2l0aCB0aGUgV1MtSSBBdHRhY2htZW50IFByb2ZpbGUgMS4wLiBZb3VyIGN1cnJlbnQgV2ViIHNlcnZpY2VzIHByZWZlcmVuY2UgaXMgc2V0IHRvIHJlcXVpcmUgY29tcGxpYW5jZS4KLVdTSV9BUF9XQVJOSU5HPVlvdSBoYXZlIG1hZGUgYSBjaG9pY2UgdGhhdCBtYXkgcmVzdWx0IGluIGEgV2ViIHNlcnZpY2UgdGhhdCBkb2VzIG5vdCBjb21wbHkgd2l0aCB0aGUgV1MtSSBBdHRhY2htZW50IFByb2ZpbGUgMS4wLiBEbyB5b3Ugd2lzaCB0byBpZ25vcmUgdGhpcyB3YXJuaW5nIGFuZCBjb250aW51ZT8KLVdTSV9BUF9JTkNPTVBMSUFOVF9SVU5USU1FPVRoZSBzZWxlY3RlZCBXZWIgU2VydmljZSBydW50aW1lIGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSBXUy1JIEF0dGFjaG1lbnQgUHJvZmlsZSAxLjAuCi0KLQotIwotIyBXU0RMQ29waWVyIE1lc3NhZ2VzCi0jCi1NU0dfRVJST1JfQ09QWV9XU0RMPUZhaWxlZCB0byBjb3B5IFdTREwgInswfSIgdG8gInsxfSIuCi1NU0dfRVJST1JfVEFSR0VUX0ZPTERFUl9OT1RfU1BFQ0lGSUVEPUEgdGFyZ2V0IGZvbGRlciB3YXMgbm90IHNwZWNpZmllZC4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvV3N0V1NQbHVnaW5NZXNzYWdlcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9Xc3RXU1BsdWdpbk1lc3NhZ2VzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYjIzODQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9Xc3RXU1BsdWdpbk1lc3NhZ2VzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MjAgICAxMjA3MTQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcwMTI1ICAgMTcxMDcxIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrCi0gKiAyMDA3MDQwOSAgIDE4MTYzNSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NETENvcGllciB1dGlsaXR5IHNob3VsZCBjcmVhdGUgdGFyZ2V0IGZvbGRlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLXB1YmxpYyBmaW5hbCBjbGFzcyBXc3RXU1BsdWdpbk1lc3NhZ2VzIGV4dGVuZHMgTkxTIHsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCVU5ETEVfTkFNRSA9ICJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuV3N0V1NQbHVnaW4iOy8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgV3N0V1NQbHVnaW5NZXNzYWdlcygpIHsKLQkJLy8gRG8gbm90IGluc3RhbnRpYXRlCi0JfQotCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX0VSUk9SX1VOQUJMRV9UT19TVEFSVF9NT05JVE9SOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19VTkFCTEVfVE9fUkVTT0xWRV9QTEFURk9STV9VUkk7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgTVNHX1VOQUJMRV9UT19SRVNPTFZFX0hUVFA7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgSUdOT1JFX0xBQkVMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIElHTk9SRV9ERVNDUklQVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBJR05PUkVfQUxMX0xBQkVMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIElHTk9SRV9BTExfREVTQ1JJUFRJT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQ0FOQ0VMX0xBQkVMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIENBTkNFTF9ERVNDUklQVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXU0lfU1NCUF9FUlJPUjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXU0lfU1NCUF9XQVJOSU5HOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTSV9TU0JQX0lOQ09NUExJQU5UX1JVTlRJTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NJX0FQX0VSUk9SOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTSV9BUF9XQVJOSU5HOwkKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXU0lfQVBfSU5DT01QTElBTlRfUlVOVElNRTsKLQkKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBNU0dfRVJST1JfQ09QWV9XU0RMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIE1TR19FUlJPUl9UQVJHRVRfRk9MREVSX05PVF9TUEVDSUZJRUQ7Ci0KLQlzdGF0aWMgewotCQlOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBXc3RXU1BsdWdpbk1lc3NhZ2VzLmNsYXNzKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2NvbW1vbi9CdW5kbGVVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9jb21tb24vQnVuZGxlVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc0NzE2Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2NvbW1vbi9CdW5kbGVVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMywgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNTAxICAgMTg0NTA1IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA4MDMyNiAgIDIyNDE0OCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViIHNlcnZpY2Ugc2NlbmFyaW9zIGJyb2tlIGluIGxhdGVzdCBidWlsZHMgd2l0aCBFcXVpbm94IHAyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmNvbW1vbjsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5WZXJzaW9uOwotCi1wdWJsaWMgY2xhc3MgQnVuZGxlVXRpbHMKLXsKLQlzdGF0aWMgcHVibGljIFVSTCBnZXRVUkxGcm9tQnVuZGxlKCBTdHJpbmcgYnVuZGxlSWQsIFN0cmluZyBwYXRoICkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbgotCXsKLQkJQnVuZGxlICAgICAgYnVuZGxlICAgICA9IFBsYXRmb3JtLmdldEJ1bmRsZSggYnVuZGxlSWQgKTsKLQkJVVJMICAgICAgICAgaW5zdGFsbFVSTCA9IGJ1bmRsZS5nZXRFbnRyeSgiLyIpOwotCQlVUkwgICAgICAgICBmaWxlVVJMICAgID0gbmV3IFVSTChpbnN0YWxsVVJMLCBwYXRoICk7Ci0KLQkJcmV0dXJuIGZpbGVVUkw7Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIGJ1bmRsZUlkCi0JICogQHJldHVybiBSZXR1cm5zIHRoZSBwYXRoIGZvciB0aGUgSmFycmVkIHBsdWdpbi4gIFJldHVybnMgbnVsbCBpZiBwYXRoIG5vdCBmb3VuZC4KLQkgKi8KLQlzdGF0aWMgcHVibGljIElQYXRoIGdldEphcnJlZFBsdWdpblBhdGgoU3RyaW5nIGJ1bmRsZUlkKSB7Ci0JCUlQYXRoIHJlc3VsdCA9IG51bGw7Ci0JCUJ1bmRsZSBidW5kbGUgPSBQbGF0Zm9ybS5nZXRCdW5kbGUoYnVuZGxlSWQpOwotCQlpZiAoYnVuZGxlICE9IG51bGwpIHsKLQkJCXRyeSB7Ci0JCQkJRmlsZSBmaWxlID0gRmlsZUxvY2F0b3IuZ2V0QnVuZGxlRmlsZShidW5kbGUpOwotCQkJCXJlc3VsdCA9IG5ldyBQYXRoKGZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKLQkJCX0KLQkJCWNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JCQkJLy8gaWdub3JlLCByZXR1cm4gbnVsbAotCQkJfQotCQl9Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotCi0JLyoqCi0JICogQHBhcmFtIGJ1bmRsZUlkCi0JICogQHJldHVybiBUaGUgdmVyc29pbiBvZiB0aGUgcGx1Z2luIHdpdGggdGhhdCBidW5kbGUgSUQKLQkgKi8KLQlzdGF0aWMgcHVibGljIFZlcnNpb24gZ2V0VmVyc2lvbihTdHJpbmcgYnVuZGxlSWQpIHsKLQkJVmVyc2lvbiByZXN1bHQgPSBudWxsOwotCQlCdW5kbGUgYnVuZGxlID0gUGxhdGZvcm0uZ2V0QnVuZGxlKGJ1bmRsZUlkKTsKLQkJU3RyaW5nIHZlcnNpb25TdHJpbmcgPSAoU3RyaW5nKSBidW5kbGUuZ2V0SGVhZGVycygpLmdldCgiQnVuZGxlLVZlcnNpb24iKTsKLQkJcmVzdWx0ID0gbmV3IFZlcnNpb24odmVyc2lvblN0cmluZyk7Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2NvbW1vbi9IVFRQVXRpbGl0eS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9jb21tb24vSFRUUFV0aWxpdHkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY1MTEyZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2NvbW1vbi9IVFRQVXRpbGl0eS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMTI0ICAgMTY3NDg3IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuY29tbW9uOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5IdHRwVVJMQ29ubmVjdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS5uZXQuVVJMQ29ubmVjdGlvbjsKLQotcHVibGljIGNsYXNzIEhUVFBVdGlsaXR5IHsKLQotCXB1YmxpYyBTdHJpbmcgaGFuZGxlUmVkaXJlY3QoU3RyaW5nIHVybFN0cmluZyl7Ci0JCVVSTENvbm5lY3Rpb24gY29ubiA9IG51bGw7Ci0JCVN0cmluZyB1cmxSZWRpcmVjdCA9IHVybFN0cmluZzsKLQkJaW50IHRpbWUgPSAwOwotCQl3aGlsZSh1cmxSZWRpcmVjdCE9IG51bGwpewotCQkJaWYgKHRpbWUgPT0gNikgcmV0dXJuIHVybFJlZGlyZWN0OwotCQkJdHJ5ewotCQkJCVVSTCB1cmwgPSBuZXcgVVJMKHVybFJlZGlyZWN0KTsKLQkJCQljb25uID0gdXJsLm9wZW5Db25uZWN0aW9uKCk7Ci0JCQl9Y2F0Y2goRXhjZXB0aW9uIGV4Yyl7Ci0JCQkJcmV0dXJuIHVybFJlZGlyZWN0OwotCQkJfQotCQkJaWYgKGNvbm4gaW5zdGFuY2VvZiBIdHRwVVJMQ29ubmVjdGlvbikKLQkJCQl7Ci0JCQkJSHR0cFVSTENvbm5lY3Rpb24gaHR0cCA9IChIdHRwVVJMQ29ubmVjdGlvbikgY29ubjsKLQkJCQlodHRwLnNldEluc3RhbmNlRm9sbG93UmVkaXJlY3RzKGZhbHNlKTsKLQkgICAgICAgICAKLQkJCQl0cnl7Ci0JCQkJCWludCBjb2RlID0gaHR0cC5nZXRSZXNwb25zZUNvZGUoKTsKLQkJCQkJaWYgKGNvZGUgPj0gMzAwICYmIGNvZGUgPD0gMzA3ICYmIGNvZGUgIT0gMzA2ICYmCi0JICAgICAgICAJCQkgY29kZSAhPSBIdHRwVVJMQ29ubmVjdGlvbi5IVFRQX05PVF9NT0RJRklFRCkKLQkJCQkJewotCQkJCQkJU3RyaW5nIHVybFJlZGlyZWN0MiA9IGNoYW5nZVNsYXNoKGh0dHAuZ2V0SGVhZGVyRmllbGQoIkxvY2F0aW9uIikpOwotCSAgICAgICAgICAgCSAJCWlmICh1cmxSZWRpcmVjdDIgPT0gbnVsbCB8fCB1cmxSZWRpcmVjdC5lcXVhbHModXJsUmVkaXJlY3QyKSkgcmV0dXJuIHVybFJlZGlyZWN0OwotCSAgICAgICAgICAJIAkJZWxzZSB1cmxSZWRpcmVjdCA9IHVybFJlZGlyZWN0MjsKLQkJCQkJfWVsc2UgcmV0dXJuIHVybFJlZGlyZWN0OwotCQkJCQotCQkJCQotCQkJCX1jYXRjaChJT0V4Y2VwdGlvbiBleGMpewotCQkJCQlyZXR1cm4gdXJsUmVkaXJlY3Q7IAotCQkJCX0KLQkJCX0KLQkJCWVsc2UgcmV0dXJuIHVybFJlZGlyZWN0OwotCQkJdGltZSsrOwotCQl9Ci0JCXJldHVybiB1cmxTdHJpbmc7Ci0JfQotCi0JcHVibGljIFN0cmluZyBjaGFuZ2VTbGFzaChTdHJpbmcgdXJsKXsKLQkJU3RyaW5nIHRlbXAgPSAiIjsKLQkJdHJ5ewotCQkJdGVtcCA9IHVybC5yZXBsYWNlKCdcXCcsICcvJyk7Ci0JCX1jYXRjaChFeGNlcHRpb24gZXhjKXsKLQkJCXJldHVybiB1cmw7Ci0JCX0KLQkJcmV0dXJuIHRlbXA7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9jb21tb24vTGl2ZVdTRExGaWx0ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvY29tbW9uL0xpdmVXU0RMRmlsdGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZGM2MGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9jb21tb24vTGl2ZVdTRExGaWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuY29tbW9uOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQWRkcmVzczsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5XZWJTZXJ2aWNlc1BhcnNlckV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb247Ci0KLXB1YmxpYyBjbGFzcyBMaXZlV1NETEZpbHRlciBleHRlbmRzIFRocmVhZAotewotICBwcml2YXRlIFN0cmluZyB3c2RsVVJMXzsKLSAgcHJpdmF0ZSBib29sZWFuIGZpbmlzaF87Ci0gIHByaXZhdGUgYm9vbGVhbiBsaXZlXzsKLQotICBwdWJsaWMgTGl2ZVdTRExGaWx0ZXIoU3RyaW5nIHdzZGxVUkwpCi0gIHsKLSAgICB3c2RsVVJMXyA9IHdzZGxVUkw7Ci0gICAgZmluaXNoXyA9IGZhbHNlOwotICAgIGxpdmVfID0gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdTRExVUkwoKQotICB7Ci0gICAgcmV0dXJuIHdzZGxVUkxfOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNGaW5pc2goKQotICB7Ci0gICAgcmV0dXJuIGZpbmlzaF87Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBpc1dTRExMaXZlKCkKLSAgewotICAgIHJldHVybiBsaXZlXzsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJ1bigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBsaXZlXyA9IHZhbGlkYXRlV1NETCgpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0gICAgewotICAgIAlTeXN0ZW0ub3V0LnByaW50bG4oIlRocm93aW5nIGV4Y2VwdGlvbiAiICsgdC5nZXRNZXNzYWdlKCkpOwotICAgICAgbGl2ZV8gPSBmYWxzZTsKLSAgICB9Ci0gICAgZmluYWxseQotICAgIHsKLSAgICAgIGZpbmlzaF8gPSB0cnVlOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiB2YWxpZGF0ZVdTREwoKSB0aHJvd3MgV1NETEV4Y2VwdGlvbiwgTWFsZm9ybWVkVVJMRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwgV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24KLSAgewotICAJV2ViU2VydmljZXNQYXJzZXJFeHQgcGFyc2VyID0gbmV3IFdlYlNlcnZpY2VzUGFyc2VyRXh0KCk7Ci0gIAlEZWZpbml0aW9uIGRlZmluaXRpb24gPSBwYXJzZXIuZ2V0V1NETERlZmluaXRpb25WZXJib3NlKHdzZGxVUkxfKTsKLSAgCVN5c3RlbS5vdXQucHJpbnRsbigid3NkbFVSTF8gIiArIHdzZGxVUkxfLnRvU3RyaW5nKCkpOwotICAgIE1hcCBzZXJ2aWNlcyA9IGRlZmluaXRpb24uZ2V0U2VydmljZXMoKTsKLSAgICBJdGVyYXRvciBzZXJ2aWNlSXRlcmF0b3IgPSBzZXJ2aWNlcy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigic2VydmljZUl0ZXJhdG9yICIgKyBzZXJ2aWNlSXRlcmF0b3IudG9TdHJpbmcoKSk7Ci0gICAgd2hpbGUgKHNlcnZpY2VJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2Upc2VydmljZUl0ZXJhdG9yLm5leHQoKTsKLSAgICAgIE1hcCBwb3J0cyA9IHNlcnZpY2UuZ2V0UG9ydHMoKTsKLSAgICAgIEl0ZXJhdG9yIHBvcnRJdGVyYXRvciA9IHBvcnRzLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAocG9ydEl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgUG9ydCBwb3J0ID0gKFBvcnQpcG9ydEl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgTGlzdCBleHRlbnNpYmlsaXR5RWxlbWVudHMgPSBwb3J0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICBJdGVyYXRvciBleHRlbnNpYmlsaXR5RWxlbWVudHNJdGVyYXRvciA9IGV4dGVuc2liaWxpdHlFbGVtZW50cy5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoZXh0ZW5zaWJpbGl0eUVsZW1lbnRzSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZXh0ZW5zaWJpbGl0eUVsZW1lbnRzSXRlcmF0b3IubmV4dCgpOwotICAgICAgICAgIGlmICgoZXh0ZW5zaWJpbGl0eUVsZW1lbnQgaW5zdGFuY2VvZiBTT0FQQWRkcmVzcykgfHwgKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgSFRUUEFkZHJlc3MpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2NvbW1vbi9XU0RMVXRpbGl0eS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9jb21tb24vV1NETFV0aWxpdHkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYxNjBjNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2NvbW1vbi9XU0RMVXRpbGl0eS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb21tb247Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5Xc3RXU1BsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLQotLyoqCi0gKiBVdGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBhIHdvcmtzcGFjZSBXU0RMIGZpbGUgcmVzb3VyY2UuCi0gKiAKLSAqIEBhdXRob3Igam9hbgotICoKLSAqLwotCi1wdWJsaWMgY2xhc3MgV1NETFV0aWxpdHkgewotCi0JcHJvdGVjdGVkIERlZmluaXRpb24gZGVmaW5pdGlvbl8gPSBudWxsOwotCXByb3RlY3RlZCBJUmVzb3VyY2UgcmVzb3VyY2VfID0gbnVsbDsKLQlwcm90ZWN0ZWQgU3RyaW5nIHNlcnZpY2VOYW1lXyA9ICIiOwotCXByb3RlY3RlZCBVUkwgdXJsXyA9IG51bGw7Ci0JCi0JcHVibGljIFdTRExVdGlsaXR5KElSZXNvdXJjZSByZXMpCi0JewotIAkJc3VwZXIoKTsKLQkJcmVzb3VyY2VfID0gcmVzOwotCQlidWlsZERlZmluaXRpb24oKTsJCQotCX0KLQkKLQlwcm90ZWN0ZWQgYm9vbGVhbiBidWlsZERlZmluaXRpb24oKQotCXsJCQotCQlpZiAocmVzb3VyY2VfLmdldFR5cGUoKSA9PSBJUmVzb3VyY2UuRklMRSkKLQkgICAgeyAgICAgICAgCi0JICAgICAgICBTdHJpbmcgZXh0ID0gcmVzb3VyY2VfLmdldEZpbGVFeHRlbnNpb24oKTsKLQkgICAgICAgIFN0cmluZyByZXNQYXRoID0gcmVzb3VyY2VfLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKTsKLQkgICAgICAgIGlmIChleHQgIT0gbnVsbCkKLQkgICAgICAgIHsKLQkJICAgICAgCQotCQkgICAgICAgIFdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlciA9IG5ldyBXZWJTZXJ2aWNlc1BhcnNlcigpOwotCQkgICAgICAJCQkgICAgICAJCi0JCSAgICAgIAl0cnkgewotCQkgICAgICAJCWRlZmluaXRpb25fID0gcGFyc2VyLmdldFdTRExEZWZpbml0aW9uKCJwbGF0Zm9ybToiICsgcmVzUGF0aCk7Ci0JCSAgICAgIAkgICBpZiAoZGVmaW5pdGlvbl8gPT0gbnVsbCl7CQkgICAgICAJCSAgIAotCQkgICAgICAJCSB0aHJvdyBuZXcgRXhjZXB0aW9uKE5MUy5iaW5kKFdzdFdTUGx1Z2luTWVzc2FnZXMuTVNHX1VOQUJMRV9UT19SRVNPTFZFX1BMQVRGT1JNX1VSSSwgcmVzUGF0aCkpOwkJICAgICAgCQkgCi0JCSAgICAgIAkgICB9Ci0JCSAgICAgIAl9Ci0JCSAgICAgIAljYXRjaCAoRXhjZXB0aW9uIGUpewotCQkgICAgICAJCXJldHVybiBmYWxzZTsKLQkJICAgICAgCX0KLQkgICAgICAgIH0KLQkgICAgICAgIGVsc2UgaWYgKHJlc1BhdGguaW5kZXhPZignPycpID4gMCkgIC8vZGVwbG95ZWQgcmVzb3VyY2UKLQkgICAgICAgIHsKLQkgICAgICAgIAlXZWJTZXJ2aWNlc1BhcnNlciBwYXJzZXIgPSBuZXcgV2ViU2VydmljZXNQYXJzZXIoKTsKLQkJICAgICAgCQkJICAgICAgCQotCQkgICAgICAJdHJ5IHsKLQkJICAgICAgCQlkZWZpbml0aW9uXyA9IHBhcnNlci5nZXRXU0RMRGVmaW5pdGlvbigiaHR0cDoiICsgcmVzUGF0aCk7Ci0JCSAgICAgIAkgICBpZiAoZGVmaW5pdGlvbl8gPT0gbnVsbCl7Ci0JCSAgICAgIAkJIHRocm93IG5ldyBFeGNlcHRpb24oTkxTLmJpbmQoV3N0V1NQbHVnaW5NZXNzYWdlcy5NU0dfVU5BQkxFX1RPX1JFU09MVkVfSFRUUCwgcmVzUGF0aCkpOwkJICAgICAgCQkKLQotCQkgICAgICAJICAgfQotCQkgICAgICAJfQotCQkgICAgICAJY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLQkJICAgICAgCQlyZXR1cm4gZmFsc2U7Ci0JCSAgICAgIAl9Ci0JICAgICAgICB9Ci0JICAgIH0KLQkJc2VydmljZU5hbWVfID0gIiI7CQkKLQkJcmV0dXJuIHRydWU7Ci0JfQotCQotCS8qKgotCSAqIERldGVybWluZXMgdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgZGVmaW5lZCBpbiB0aGUgV1NETCBmaWxlCi0JICogCi0JICogQHBhcmFtIHJlc291cmNlIFRoZSB3b3Jrc3BhY2UgcmVzb3VyY2UgZm9yIHRoZSBXU0RMIGZpbGUKLQkgKiBAcmV0dXJuIFJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgdmFsdWUgb2YgdGhlIG5hbWUgYXR0cmlidXRlIG9mIHRoZSBzZXJ2aWNlIGVsZW1lbnQgCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlTmFtZSgpCi0JewotCQlpZiAoc2VydmljZU5hbWVfLmVxdWFscygiIikpCi0JCXsKLQkJCWlmIChkZWZpbml0aW9uXyAhPSBudWxsKQotCQkJewotCQkJCSAgIE1hcCBzZXJ2aWNlc01hcCA9IGRlZmluaXRpb25fLmdldFNlcnZpY2VzKCk7ICAvL2p2aCAtIG5lZWQgdG8gaGFuZGxlIG51bGwgZGVmaW5pdGlvbiBoZXJlLi4uLgotCQkJICAJICAgT2JqZWN0W10gc2VydmljZXMgPSBzZXJ2aWNlc01hcC52YWx1ZXMoKS50b0FycmF5KCk7Ci0JCQkgIAkgICAKLQkJCSAgCSAgIC8vIFRPRE86IGhlcmUgY2FuIGRldGVjdCBpZiBubyBzZXJ2aWNlIHRhZyAtIHNlbmQgYXBwcm9wcmlhdGUgbWVzc2FnZQotCQkJICAJICAgLy8gVE9ETzogd2hhdCBpZiA+IDEgc2VydmljZSBkZWZpbmVkIGluIHRoZSBXU0RMPwotCQkJICAJICAgLy8gZm9yIG5vdyByZXR1cm4gdGhlIGZpcnN0IHNlcnZpY2UgbmFtZSBmb3VuZC4uLgotCQkJICAJICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2aWNlcy5sZW5ndGg7IGkrKykgewotCQkJCQkgICBTZXJ2aWNlIHMgPSAoU2VydmljZSlzZXJ2aWNlc1tpXTsKLQkJCQkJICAgU3RyaW5nIHFTdHJpbmcgPSBzLmdldFFOYW1lKCkudG9TdHJpbmcoKTsKLQkJCQkJICAgCi0JCQkJCSAgIC8vZ2V0IG5hbWUgb25seSBmcm9tIHF1YWxpZmllZCBzdHJpbmcKLQkJCQkJICAgaW50IGluZGV4MSA9IHFTdHJpbmcuaW5kZXhPZigifSIpKzE7ICAvLyROT04tTkxTLTEkCi0JCQkJCSAgIGludCBpbmRleDIgPSBxU3RyaW5nLmxlbmd0aCgpOwotCQkJCQkgICAKLQkJCQkJICAgc2VydmljZU5hbWVfID0gcVN0cmluZy5zdWJzdHJpbmcoaW5kZXgxLCBpbmRleDIpOwkJCQkgICAKLQkJCSAgCSAgIH0gIAkKLQkJCX0JCQkJICAKLQkJfQotCSAgCXJldHVybiBzZXJ2aWNlTmFtZV87Ci0JfQotCQotCXB1YmxpYyBVUkwgZ2V0V1NETEFkZHJlc3MoKSAKLSAgICB7Ci0JICAgaWYgKHVybF8gPT0gbnVsbCkKLQkgICB7CSAgIAotCSAgICAgICBTdHJpbmcgbG9jYXRpb25VUkkgPSBudWxsOwotCSAgICAgICBpZiAoZGVmaW5pdGlvbl8gIT0gbnVsbCkKLQkgICAgICAgewotCSAgICAJICAgTWFwIHNlcnZpY2VzTWFwID0gZGVmaW5pdGlvbl8uZ2V0U2VydmljZXMoKTsKLQkJICAJICAgT2JqZWN0W10gc2VydmljZXMgPSBzZXJ2aWNlc01hcC52YWx1ZXMoKS50b0FycmF5KCk7Ci0JCSAgCSAgIAotCQkgIAkgICAvLyBUT0RPOiBoZXJlIGNhbiBkZXRlY3QgaWYgbm8gc2VydmljZSB0YWcgLSBzZW5kIGFwcHJvcHJpYXRlIG1lc3NhZ2UKLQkJICAJICAgLy8gVE9ETzogd2hhdCBpZiA+IDEgc2VydmljZSBkZWZpbmVkIGluIHRoZSBXU0RMPwotCQkgIAkgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZpY2VzLmxlbmd0aDsgaSsrKSB7Ci0JCQkJICAgU2VydmljZSBzID0gKFNlcnZpY2Upc2VydmljZXNbaV07Ci0JCQkJICAgTWFwIHBvcnRzTWFwID0gcy5nZXRQb3J0cygpOwotCQkJCSAgIE9iamVjdFtdIHBvcnRzID0gcG9ydHNNYXAudmFsdWVzKCkudG9BcnJheSgpOwotCQkKLQkJCQkgICAvLyBUT0RPOiBoZXJlIGNhbiBkZXRlY3QgaWYgPiAxIHBvcnQgZm9yIHRoZSBzZXJ2aWNlIC0gZGV0ZXJtaW5lIGhvdyB0byBoYW5kbGUKLQkJCQkgICBmb3IgKGludCBqID0gMDsgaiA8IHBvcnRzLmxlbmd0aDsgaisrKSB7Ci0JCQkJCQlQb3J0IHAgPSAoUG9ydClwb3J0c1tqXTsKLQkJCQkJCUxpc3QgZXh0TGlzdCA9IHAuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0JCQkJCQkKLQkJCQkJCWZvciAoaW50IGsgPSAwOyBqIDwgZXh0TGlzdC5zaXplKCk7IGorKyl7Ci0JCQkJCQkgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtZW50ID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWV4dExpc3QuZ2V0KGspOwotCQkJCQkJICAgICAgaWYgKGV4dEVsZW1lbnQgaW5zdGFuY2VvZiBTT0FQQWRkcmVzcykKLQkJCQkJCSAgICAgIHsgIAotCQkJCQkJICAgICAgICBsb2NhdGlvblVSSSA9ICgoU09BUEFkZHJlc3MpZXh0RWxlbWVudCkuZ2V0TG9jYXRpb25VUkkoKTsKLQkJCQkJCSAgICAgIH0KLQkJCQkJCSAgICAgIGVsc2UgaWYgKGV4dEVsZW1lbnQgaW5zdGFuY2VvZiBIVFRQQWRkcmVzcykKLQkJCQkJCSAgICAgICB7Ci0JCQkJCQkgICAgICAgIGxvY2F0aW9uVVJJID0gKChIVFRQQWRkcmVzcylleHRFbGVtZW50KS5nZXRMb2NhdGlvblVSSSgpOwkJCQkJCSAgICAgICAgCi0JCQkJCQkgICAgICB9Ci0JCQkJCQkgICAgICBlbHNlCi0JCQkJCQkgICAgICB7Ci0JCQkJCQkgICAgCSAgLy9UT0RPOiBpZiBub3QgU09BUCBvciBIVFRQIC0gaG93IGRvIHdlIHdhbnQgdG8gaGFuZGxlIGl0Li4uIAotCQkJCQkJICAgICAgfQotCQkJCQkJIH0JCQkJCQotCQkJCSAgIH0KLQkJICAJICAgfSAgCQkgICAgCQotCQkgIAkgCi0JCQkgICAgdHJ5IHsKLQkJCSAgICAgICAgIHVybF8gPSBuZXcgVVJMKGxvY2F0aW9uVVJJICsgIj8iICsgcmVzb3VyY2VfLmdldEZpbGVFeHRlbnNpb24oKSk7CSAgICAgICAgIAotCQkJICAgIH0KLQkJCSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG1hbEV4Yyl7fQotICAgICAgICAgICAgfQkgIAkJICAgICAgCi0JICAgIH0KLQkgICByZXR1cm4gdXJsXzsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2NvbnZlcnRlci9BYnN0cmFjdElGaWxlMlVyaUNvbnZlcnRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9jb252ZXJ0ZXIvQWJzdHJhY3RJRmlsZTJVcmlDb252ZXJ0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdhMjY2MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2NvbnZlcnRlci9BYnN0cmFjdElGaWxlMlVyaUNvbnZlcnRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDkwMzEwICAgMjQyNDQwIHllbmx1QGNhLmlibS5jb20gLSBZZW4gTHUsIFBsdWdnYWJsZSBJRmlsZSB0byBVUkkgQ29udmVydGVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmNvbnZlcnRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotCi0vKioKLSAqIDxwPgotICogVGhlIGFic3RyYWN0IGltcGxlbWVudGF0aW9uIG9mIGFuIElGaWxlIHRvIFVSSSBjb252ZXJ0ZXIuIEFkb3B0ZXJzIHdobyB3aXNoIHRvCi0gKiBwcm92aWRlIHRoZWlyIG93biBjb252ZXJ0ZXIgc2hvdWxkIHN1YmNsYXNzIHRoaXMgYWJzdHJhY3QgY2xhc3MgcmF0aGVyIHRoYW4gaW1wbGVtZW50aW5nIElJRmlsZTJVcmlDb252ZXJ0ZXIuIAotICoKLSAqIEBzZWUgSUlGaWxlMlVyaUNvbnZlcnRlcgotICovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RJRmlsZTJVcmlDb252ZXJ0ZXIgaW1wbGVtZW50cyBJSUZpbGUyVXJpQ29udmVydGVyIHsKLQotCXB1YmxpYyBTdHJpbmcgY29udmVydChJRmlsZSBmaWxlKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQkKLQlwdWJsaWMgYm9vbGVhbiBhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlKCkKLQl7Ci0JCXJldHVybiB0cnVlOwotCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9jb252ZXJ0ZXIvSUlGaWxlMlVyaUNvbnZlcnRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9jb252ZXJ0ZXIvSUlGaWxlMlVyaUNvbnZlcnRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmFkMDY3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvY29udmVydGVyL0lJRmlsZTJVcmlDb252ZXJ0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA5MDMxMCAgIDI0MjQ0MCB5ZW5sdUBjYS5pYm0uY29tIC0gWWVuIEx1LCBQbHVnZ2FibGUgSUZpbGUgdG8gVVJJIENvbnZlcnRlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb252ZXJ0ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLQotLyoqCi0gKiA8cD4KLSAqIFRoZSBpbnRlcmZhY2UgZm9yIGFuIEVjbGlwc2UgSUZpbGUgdG8gVVJJIGNvbnZlcnRlci4gQWRvcHRlcnMgc2hvdWxkCi0gKiBzdWJjbGFzcyBBYnN0cmFjdElGaWxlMlVyaUNvbnZlcnRlciBpbnN0ZWFkLgotICogCi0gKiBAc2VlIEFic3RyYWN0SUZpbGUyVXJpQ29udmVydGVyCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSUlGaWxlMlVyaUNvbnZlcnRlciB7Ci0JLyoqCi0JICogPHA+Ci0JICogUHJvZHVjZSBhIFN0cmluZyBVUkkgZnJvbSBhIGdpdmVuIElGaWxlLiBUaGUgSUZpbGUgaXMgZnJvbSB0aGUgd29ya2JlbmNoLiBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwsCi0JICogdGhlIHJlc3VsdCBpcyBjb25zaWRlcmVkIGEgZmFpbHVyZSBhbmQgdGhlCi0JICoge0BsaW5rICNhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlIGFsbG93QmFzZUNvbnZlcnNpb25PbkZhaWx1cmV9IG1ldGhvZCB3aWxsIGJlIGNvbnN1bHRlZCB0byBkZXRlcm1pbmUKLQkgKiB3aGV0aGVyIG9yIG5vdCBiYXNlIGNvbnZlcnNpb24gc2hvdWxkIGJlIHVzZWQgYXMgYSBiYWNrdXAuCi0JICogQHBhcmFtIGZpbGUgQW4gSUZpbGUgcmVmZXJlbmNlLgotCSAqIEByZXR1cm4gVGhlIFN0cmluZyBVUkkgY29ycmVzcG9uZGluZyB0byB0aGUgSUZpbGUgcmVmZXJlbmNlLgotCSAqIDxwPgotCSAqIEBzaW5jZSAzLjEKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGNvbnZlcnQoSUZpbGUgZmlsZSk7Ci0JCi0JLyoqCi0JICogPHA+Ci0JICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBhIGNvbnZlcnRlciB3aWxsIGFsbG93IGJhc2UgY29udmVyc2lvbiByb3V0aW5lcyB0byBiZSBwZXJmb3JtZWQKLQkgKiB3aGVuIGEgZmFpbHVyZSBvY2N1cnMuCi0JICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBiYXNlIGNvbnZlcnNpb24gc2hvdWxkIGJlIHBlcmZvcm1lZCB3aGVuIGEgZmFpbHVyZSBvY2N1cnMuCi0JICogPHA+Ci0JICogQHNpbmNlIDMuMQotCSAqLwotCXB1YmxpYyBib29sZWFuIGFsbG93QmFzZUNvbnZlcnNpb25PbkZhaWx1cmUoKTsJCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGEvTGFiZWxzQW5kSWRzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGEvTGFiZWxzQW5kSWRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MjhkNjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhL0xhYmVsc0FuZElkcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YTsKLQotcHVibGljIGNsYXNzIExhYmVsc0FuZElkcwotewotICBwcml2YXRlIFN0cmluZ1tdIGxhYmVsc187Ci0gIHByaXZhdGUgU3RyaW5nW10gaWRzXzsKLSAgCi0gIC8qKgotICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGlkc18uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nW10gZ2V0SWRzXygpCi0gIHsKLSAgICByZXR1cm4gaWRzXzsKLSAgfQotICAvKioKLSAgICogQHBhcmFtIGlkc18gVGhlIGlkc18gdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SWRzXyhTdHJpbmdbXSBpZHNfKQotICB7Ci0gICAgdGhpcy5pZHNfID0gaWRzXzsKLSAgfQotICAvKioKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBsYWJlbHNfLgotICAgKi8KLSAgcHVibGljIFN0cmluZ1tdIGdldExhYmVsc18oKQotICB7Ci0gICAgcmV0dXJuIGxhYmVsc187Ci0gIH0KLSAgLyoqCi0gICAqIEBwYXJhbSBsYWJlbHNfIFRoZSBsYWJlbHNfIHRvIHNldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExhYmVsc18oU3RyaW5nW10gbGFiZWxzXykKLSAgewotICAgIHRoaXMubGFiZWxzXyA9IGxhYmVsc187Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL0Jhc2ljQ29ubmVjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvQmFzaWNDb25uZWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZjEyZGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvQmFzaWNDb25uZWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsOwotCi1wdWJsaWMgY2xhc3MgQmFzaWNDb25uZWN0aW9uIGltcGxlbWVudHMgQ29ubmVjdGlvbgotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIHByaXZhdGUgUmVsIGZSZWw7Ci0gIHByaXZhdGUgRWxlbWVudCBmRWxlbWVudDsKLSAgcHJpdmF0ZSBDb25uZWN0aW9uIGZPcHBvc2luZ0Nvbm5lY3Rpb247Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1VUQk9VTkQgPSAwOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTkJPVU5EID0gMTsKLQotICBwdWJsaWMgc3RhdGljIENvbm5lY3Rpb25bXSBjcmVhdGVQYWlyICggUmVsIG91dGJvdW5kUmVsLCBFbGVtZW50IHRhcmdldEVsZW1lbnQsIFJlbCBpbmJvdW5kUmVsLCBFbGVtZW50IHNvdXJjZUVsZW1lbnQgKQotICB7Ci0gICAgQmFzaWNDb25uZWN0aW9uIG91dGJvdW5kQ29ubmVjdGlvbiA9IG5ldyBCYXNpY0Nvbm5lY3Rpb24ob3V0Ym91bmRSZWwsdGFyZ2V0RWxlbWVudCk7Ci0gICAgQmFzaWNDb25uZWN0aW9uIGluYm91bmRDb25uZWN0aW9uID0gbmV3IEJhc2ljQ29ubmVjdGlvbihpbmJvdW5kUmVsLHNvdXJjZUVsZW1lbnQpOwotICAgIG91dGJvdW5kQ29ubmVjdGlvbi5mT3Bwb3NpbmdDb25uZWN0aW9uID0gaW5ib3VuZENvbm5lY3Rpb247Ci0gICAgaW5ib3VuZENvbm5lY3Rpb24uZk9wcG9zaW5nQ29ubmVjdGlvbiA9IG91dGJvdW5kQ29ubmVjdGlvbjsKLSAgICByZXR1cm4gbmV3IENvbm5lY3Rpb25bXSB7b3V0Ym91bmRDb25uZWN0aW9uLGluYm91bmRDb25uZWN0aW9ufTsKLSAgfQotCi0gIHB1YmxpYyBCYXNpY0Nvbm5lY3Rpb24gKCBSZWwgcmVsLCBFbGVtZW50IGVsZW1lbnQgKQotICB7Ci0gICAgZlJlbCA9IHJlbDsKLSAgICBmRWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgZk9wcG9zaW5nQ29ubmVjdGlvbiA9IG51bGw7Ci0gIH0KLQotICBwdWJsaWMgUmVsIGdldFJlbCAoKQotICB7Ci0gICAgcmV0dXJuIGZSZWw7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudCBnZXRFbGVtZW50ICgpCi0gIHsKLSAgICByZXR1cm4gZkVsZW1lbnQ7Ci0gIH0KLQotICBwdWJsaWMgQ29ubmVjdGlvbiBnZXRPcHBvc2luZ0Nvbm5lY3Rpb24gKCkKLSAgewotICAgIHJldHVybiBmT3Bwb3NpbmdDb25uZWN0aW9uOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZyAoKQotICB7Ci0gICAgcmV0dXJuIGZFbGVtZW50LmdldE5hbWUoKTsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9CYXNpY0VsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL0Jhc2ljRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWRmYjhjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL0Jhc2ljRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1wdWJsaWMgY2xhc3MgQmFzaWNFbGVtZW50IGltcGxlbWVudHMgRWxlbWVudAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIHByaXZhdGUgU3RyaW5nIGZOYW1lOwotICBwcml2YXRlIFN0cmluZyBmTVVJRDsKLSAgcHJpdmF0ZSBNb2RlbCBmTW9kZWw7Ci0gIHByaXZhdGUgSGFzaHRhYmxlIGZSZWxzOwotICBwcml2YXRlIEhhc2h0YWJsZSBmUHJvcGVydGllczsKLSAgcHJpdmF0ZSBWZWN0b3IgZkxpc3RlbmVyczsKLQotICBwdWJsaWMgQmFzaWNFbGVtZW50ICggU3RyaW5nIG5hbWUsIE1vZGVsIG1vZGVsICkKLSAgewotICAgIGZOYW1lID0gbmFtZTsKLSAgICBzZXRNVUlEKG1vZGVsLm1ha2VNVUlEKG5hbWUpKTsKLSAgICBtb2RlbC5hZGRFbGVtZW50KHRoaXMpOwotICAgIGZNb2RlbCA9IG1vZGVsOwotICAgIGZSZWxzID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGZMaXN0ZW5lcnMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgZlByb3BlcnRpZXMgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgZlByb3BlcnRpZXMucHV0KFByb3BlcnR5Lk5BTUUsbmV3IEJhc2ljUHJvcGVydHkoUHJvcGVydHkuTkFNRSxmTmFtZSkpOwotICB9Ci0KLSAgcHVibGljIEJhc2ljRWxlbWVudCAoIFN0cmluZyBuYW1lLCBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBvdXRib3VuZFJlbE5hbWUsIFN0cmluZyBpbmJvdW5kUmVsTmFtZSApCi0gIHsKLSAgICB0aGlzKG5hbWUsZWxlbWVudC5nZXRNb2RlbCgpKTsKLSAgICBjb25uZWN0KGVsZW1lbnQsb3V0Ym91bmRSZWxOYW1lLGluYm91bmRSZWxOYW1lKTsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgYSBjbG9uZSBvZiB0aGlzIDxjb2RlPkVsZW1lbnQ8L2NvZGU+Ci0gICogb2YgdGhlIHNhbWUgY2xhc3MgYW5kIHdpdGggdGhlIHNhbWUgbmFtZSBhbmQgbW9kZWwsCi0gICogYnV0IHdpdGggbm8gUHJvcGVydGllcywgUmVscyBvciBMaXN0ZW5lcnMgZXhjZXB0IGZvcgotICAqIHRoZSB7QGxpbmsgUHJvcGVydHkjTkFNRSBOQU1FfSBwcm9wZXJ0eS4KLSAgKiBAcmV0dXJuIE9iamVjdCBBIG5ldyBFbGVtZW50LgotICAqLwotICBwdWJsaWMgRWxlbWVudCBzaGFsbG93Q2xvbmUgKCkKLSAgewotICAgIHJldHVybiBuZXcgQmFzaWNFbGVtZW50KGZOYW1lLGZNb2RlbCk7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIGEgY2xvbmUgb2YgdGhpcyA8Y29kZT5FbGVtZW50PC9jb2RlPgotICAqIG9mIHRoZSBzYW1lIGNsYXNzIGFuZCB3aXRoIHRoZSBzYW1lIG5hbWUgYW5kIG1vZGVsCi0gICogYW5kIHdpdGggYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBFbGVtZW50J3MgUHJvcGVydGllcy4KLSAgKiBUaGUgUmVscyBhbmQgTGlzdGVuZXJzIGFyZSBub3QgY2xvbmVkLgotICAqIEByZXR1cm4gRWxlbWVudCBBIG5ldyBFbGVtZW50LgotICAqLwotICBwdWJsaWMgZmluYWwgRWxlbWVudCBkZWVwQ2xvbmUgKCkKLSAgewotICAgIEVsZW1lbnQgbmV3RWxlbWVudCA9IHNoYWxsb3dDbG9uZSgpOwotICAgIEVudW1lcmF0aW9uIGUgPSBnZXRQcm9wZXJ0aWVzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgUHJvcGVydHkgcHJvcGVydHkgPSAoUHJvcGVydHkpZS5uZXh0RWxlbWVudCgpOwotICAgICAgUHJvcGVydHkgbmV3UHJvcGVydHkgPSAoUHJvcGVydHkpcHJvcGVydHkuc2hhbGxvd0Nsb25lKCk7Ci0gICAgICBuZXdFbGVtZW50LnNldFByb3BlcnR5KG5ld1Byb3BlcnR5KTsKLSAgICB9Ci0gICAgcmV0dXJuIG5ld0VsZW1lbnQ7Ci0gIH0KLQotICAvKioKLSAgKiBNb2RlbC1WaWV3LUNvbnRyb2xsZXI6IEFsbCBwcm9wZXJ0eSBjaGFuZ2VzIHRvIHRoZSBtb2RlbAotICAqIChzdWNoIGFzIHRob3NlIG1hZGUgYnkgYSB3aXphcmQgaW4gdGhlIHJvbGUgb2YgYSBDb250cm9sbGVyKQotICAqIHNob3VsZCB5aWVsZCBldmVudHMgdG8gd2hpY2ggYW4gaW50ZXJlc3RlZCBwYXJ0eSBjYW4gbGlzdGVuCi0gICogKHN1Y2ggYXMgYSB3aXphcmQgaW4gdGhlIHJvbGUgb2YgYSBWaWV3ZXIpLgotICAqIEBwYXJhbSB0bWwgVGhlIGxpc3RlbmVyIHRvIGFkZC4KLSAgKi8KLSAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIgKCBFbGVtZW50TGlzdGVuZXIgbGlzdGVuZXIgKQotICB7Ci0gICAgZkxpc3RlbmVycy5hZGQobGlzdGVuZXIpOwotICB9Ci0KLSAgcHVibGljIE1vZGVsIGdldE1vZGVsICgpCi0gIHsKLSAgICByZXR1cm4gZk1vZGVsOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNWYWxpZCAoKQotICB7Ci0gICAgcmV0dXJuIChmTW9kZWwgIT0gbnVsbCAmJiBmTW9kZWwuY29udGFpbnNFbGVtZW50KHRoaXMpKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIHJlbW92ZSAoKQotICB7Ci0gICAgcmV0dXJuIGZNb2RlbC5yZW1vdmVFbGVtZW50KHRoaXMpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0TmFtZSAoIFN0cmluZyBuYW1lICkKLSAgewotICAgIGZOYW1lID0gbmFtZTsKLSAgICBmUHJvcGVydGllcy5wdXQoUHJvcGVydHkuTkFNRSxuZXcgQmFzaWNQcm9wZXJ0eShQcm9wZXJ0eS5OQU1FLGZOYW1lKSk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUgKCkKLSAgewotICAgIHJldHVybiBmTmFtZTsKLSAgfQotCi0gIC8qCi0gICogVGhlIGdldHRlciBmb3IgdGhlIE1VSUQKLSAgKiBUaGUgTVVJRCBpcyB0aGUgTW9kZWwgVW5pcXVlIElkZW50aWZpZXIsIG1hZGUgZnJvbSB0aGUgbmFtZSBhbmQgYW4KLSAgKiBhcHBlbmRlZCB1bmlxdWUgbnVtYmVyIAotICAqIEByZXR1cm4gU3RyaW5nIGEgdW5pcXVlIGlkIGZvciB0aGlzIGVsZW1lbnQgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBtb2RlbCAKLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRNVUlEKCkKLSAgewotICAgIHJldHVybiBmTVVJRDsKLSAgfQotCi0gIC8qCi0gICoKLSAgKgotICAqLwotICBwdWJsaWMgaW50IGdldE51bWJlcklEKCkKLSAgewotICAgIFN0cmluZyBudW1iZXIgPSBnZXRNVUlEKCkuc3Vic3RyaW5nKGdldE5hbWUoKS5sZW5ndGgoKSk7ICAKLSAgICByZXR1cm4gSW50ZWdlci5wYXJzZUludChudW1iZXIpOwotICB9Ci0KLSAgLyoKLSAgKiBTZXQgdGhlIE1VSUQgd2hpY2ggd2FzIG1hZGUgYnkgdGhlIG1vZGVsCi0gICogU2hvdWxkIG9ubHkgYmUgc2V0dGFibGUgd2l0aGluIHRoaXMgZWxlbWVudAotICAqIFNldCBvbmNlIHVwb24gY3JlYXRpb24sIHlvdSBjYW4gY2hhbmdlIHRoZSBuYW1lCi0gICogYnV0IHRoZSBpZCB3aWxsIHJlbWFpbiBjb25zdGFudC4KLSAgKi8KLSAgcHJpdmF0ZSB2b2lkIHNldE1VSUQoU3RyaW5nIE1VSUQpCi0gIHsKLSAgICBmTVVJRCA9IE1VSUQ7Ci0gIH0KLSAKLSAgcHVibGljIHZvaWQgc2V0UHJvcGVydHkgKCBQcm9wZXJ0eSBwcm9wZXJ0eSApCi0gIHsKLSAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0gcHJvcGVydHkuZ2V0TmFtZSgpOwotICAgIFByb3BlcnR5IG9sZFByb3BlcnR5ID0gZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKTsKLSAgICBmUHJvcGVydGllcy5wdXQocHJvcGVydHlOYW1lLHByb3BlcnR5KTsKLSAgICBpZiAob2xkUHJvcGVydHkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBQcm9wZXJ0eUFkZEV2ZW50IGV2ZW50ID0gbmV3IFByb3BlcnR5QWRkRXZlbnQodGhpcyxwcm9wZXJ0eSk7Ci0gICAgICBFbnVtZXJhdGlvbiBlID0gZkxpc3RlbmVycy5lbGVtZW50cygpOwotICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICB7Ci0gICAgICAgICgoRWxlbWVudExpc3RlbmVyKWUubmV4dEVsZW1lbnQoKSkucHJvcGVydHlBZGRlZChldmVudCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBPYmplY3Qgb2xkVmFsdWUgPSBvbGRQcm9wZXJ0eS5nZXRWYWx1ZSgpOwotICAgICAgT2JqZWN0IG5ld1ZhbHVlID0gcHJvcGVydHkuZ2V0VmFsdWUoKTsKLSAgICAgIGlmIChvbGRWYWx1ZSAhPSBuZXdWYWx1ZSkKLSAgICAgIHsKLSAgICAgICAgaWYgKG9sZFZhbHVlID09IG51bGwgfHwgbmV3VmFsdWUgPT0gbnVsbCB8fCAoIW9sZFZhbHVlLmVxdWFscyhuZXdWYWx1ZSkpKQotICAgICAgICB7Ci0gICAgICAgICAgUHJvcGVydHlDaGFuZ2VFdmVudCBldmVudCA9IG5ldyBQcm9wZXJ0eUNoYW5nZUV2ZW50KHRoaXMscHJvcGVydHksb2xkUHJvcGVydHkpOwotICAgICAgICAgIEVudW1lcmF0aW9uIGUgPSBmTGlzdGVuZXJzLmVsZW1lbnRzKCk7Ci0gICAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgKChFbGVtZW50TGlzdGVuZXIpZS5uZXh0RWxlbWVudCgpKS5wcm9wZXJ0eUNoYW5nZWQoZXZlbnQpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBpZiAocHJvcGVydHlOYW1lLmVxdWFscyhQcm9wZXJ0eS5OQU1FKSkgZk5hbWUgPSBwcm9wZXJ0eS5nZXRWYWx1ZSgpLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQcm9wZXJ0eUFzT2JqZWN0ICggU3RyaW5nIG5hbWUsIE9iamVjdCB2YWx1ZSApCi0gIHsKLSAgICBzZXRQcm9wZXJ0eShuZXcgQmFzaWNQcm9wZXJ0eShuYW1lLHZhbHVlKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRQcm9wZXJ0eUFzU3RyaW5nICggU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSApCi0gIHsKLSAgICBzZXRQcm9wZXJ0eShuZXcgQmFzaWNQcm9wZXJ0eShuYW1lLHZhbHVlKSk7Ci0gIH0KLQotICBwdWJsaWMgUHJvcGVydHkgZ2V0UHJvcGVydHkgKCBTdHJpbmcgbmFtZSApCi0gIHsKLSAgICByZXR1cm4gKFByb3BlcnR5KWZQcm9wZXJ0aWVzLmdldChuYW1lKTsKLSAgfQotCi0gIHB1YmxpYyBPYmplY3QgZ2V0UHJvcGVydHlBc09iamVjdCAoIFN0cmluZyBuYW1lICkKLSAgewotICAgIFByb3BlcnR5IHByb3BlcnR5ID0gZ2V0UHJvcGVydHkobmFtZSk7Ci0gICAgcmV0dXJuIChwcm9wZXJ0eSA9PSBudWxsID8gbnVsbCA6IHByb3BlcnR5LmdldFZhbHVlKCkpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQcm9wZXJ0eUFzU3RyaW5nICggU3RyaW5nIG5hbWUgKQotICB7Ci0gICAgUHJvcGVydHkgcHJvcGVydHkgPSBnZXRQcm9wZXJ0eShuYW1lKTsKLSAgICByZXR1cm4gKHByb3BlcnR5ID09IG51bGwgPyBudWxsIDogcHJvcGVydHkuZ2V0VmFsdWVBc1N0cmluZygpKTsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRQcm9wZXJ0aWVzICgpCi0gIHsKLSAgICByZXR1cm4gZlByb3BlcnRpZXMuZWxlbWVudHMoKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGNvbm5lY3QgKCBFbGVtZW50IHRhcmdldEVsZW1lbnQsIFN0cmluZyBvdXRib3VuZFJlbE5hbWUsIFN0cmluZyBpbmJvdW5kUmVsTmFtZSApCi0gIHsKLSAgICBpZiAoZk1vZGVsID09IG51bGwgfHwgZk1vZGVsICE9IHRhcmdldEVsZW1lbnQuZ2V0TW9kZWwoKSkgcmV0dXJuIGZhbHNlOwotCi0gICAgRWxlbWVudCBzb3VyY2VFbGVtZW50ID0gdGhpczsKLSAgICBSZWwgb3V0Ym91bmRSZWwgPSBzb3VyY2VFbGVtZW50LmdldFJlbChvdXRib3VuZFJlbE5hbWUpOwotICAgIFJlbCBpbmJvdW5kUmVsID0gdGFyZ2V0RWxlbWVudC5nZXRSZWwoaW5ib3VuZFJlbE5hbWUpOwotICAgIENvbm5lY3Rpb25bXSBwYWlyID0gQmFzaWNDb25uZWN0aW9uLmNyZWF0ZVBhaXIob3V0Ym91bmRSZWwsdGFyZ2V0RWxlbWVudCxpbmJvdW5kUmVsLHNvdXJjZUVsZW1lbnQpOwotICAgIG91dGJvdW5kUmVsLmFkZENvbm5lY3Rpb24ocGFpcltCYXNpY0Nvbm5lY3Rpb24uT1VUQk9VTkRdKTsKLSAgICBpbmJvdW5kUmVsLmFkZENvbm5lY3Rpb24ocGFpcltCYXNpY0Nvbm5lY3Rpb24uSU5CT1VORF0pOwotICAgIFJlbEFkZEV2ZW50IGV2ZW50ID0gbmV3IFJlbEFkZEV2ZW50KHBhaXIpOwotICAgIEVudW1lcmF0aW9uIGVTb3VyY2UgPSBnZXRMaXN0ZW5lcnMoKTsKLSAgICBFbnVtZXJhdGlvbiBlVGFyZ2V0ID0gdGFyZ2V0RWxlbWVudC5nZXRMaXN0ZW5lcnMoKTsKLSAgICB3aGlsZSAoZVNvdXJjZS5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICAoKEVsZW1lbnRMaXN0ZW5lcillU291cmNlLm5leHRFbGVtZW50KCkpLnJlbEFkZGVkKGV2ZW50KTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoZVRhcmdldC5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICAoKEVsZW1lbnRMaXN0ZW5lcillVGFyZ2V0Lm5leHRFbGVtZW50KCkpLnJlbEFkZGVkKGV2ZW50KTsKLSAgICB9Ci0KLQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdCAoIEVsZW1lbnQgdGFyZ2V0RWxlbWVudCwgU3RyaW5nIG91dGJvdW5kUmVsTmFtZSApCi0gIHsKLSAgICByZXR1cm4gZGlzY29ubmVjdCh0YXJnZXRFbGVtZW50LGdldFJlbChvdXRib3VuZFJlbE5hbWUpKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGRpc2Nvbm5lY3RSZWwgKCBTdHJpbmcgb3V0Ym91bmRSZWxOYW1lICkKLSAgewotICAgIHJldHVybiBkaXNjb25uZWN0UmVsKGdldFJlbChvdXRib3VuZFJlbE5hbWUpKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGRpc2Nvbm5lY3RBbGwgKCkKLSAgewotICAgIGlmIChmTW9kZWwgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwotICAgIEVudW1lcmF0aW9uIGUgPSBmUmVscy5lbGVtZW50cygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFJlbCByZWwgPSAoUmVsKWUubmV4dEVsZW1lbnQoKTsKLSAgICAgIGRpc2Nvbm5lY3RSZWwocmVsKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0RWxlbWVudHMgKCBTdHJpbmcgcmVsTmFtZSApCi0gIHsKLSAgICByZXR1cm4gZ2V0UmVsKHJlbE5hbWUpLmdldFRhcmdldEVsZW1lbnRzKCk7Ci0gIH0KLQotICBwdWJsaWMgaW50IGdldE51bWJlck9mRWxlbWVudHMgKCBTdHJpbmcgcmVsTmFtZSApCi0gIHsKLSAgICByZXR1cm4gZ2V0UmVsKHJlbE5hbWUpLmdldE51bWJlck9mVGFyZ2V0RWxlbWVudHMoKTsKLSAgfQotCi0gIHB1YmxpYyBSZWwgZ2V0UmVsICggU3RyaW5nIHJlbE5hbWUgKQotICB7Ci0gICAgUmVsIHJlbCA9IChSZWwpZlJlbHMuZ2V0KHJlbE5hbWUpOwotICAgIGlmIChyZWwgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZWwgPSBuZXcgQmFzaWNSZWwocmVsTmFtZSx0aGlzKTsKLSAgICAgIGZSZWxzLnB1dChyZWxOYW1lLHJlbCk7Ci0gICAgfQotICAgIHJldHVybiByZWw7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0UmVscyAoKQotICB7Ci0gICAgcmV0dXJuIGZSZWxzLmVsZW1lbnRzKCk7Ci0gIH0KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0TGlzdGVuZXJzKCkKLSAgewotICAgIHJldHVybiBmTGlzdGVuZXJzLmVsZW1lbnRzKCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBkaXNjb25uZWN0ICggRWxlbWVudCB0YXJnZXRFbGVtZW50LCBSZWwgb3V0Ym91bmRSZWwgKQotICB7Ci0gICAgaWYgKGZNb2RlbCA9PSBudWxsIHx8IGZNb2RlbCAhPSB0YXJnZXRFbGVtZW50LmdldE1vZGVsKCkgfHwgb3V0Ym91bmRSZWwgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwotICAgIENvbm5lY3Rpb24gb3V0Ym91bmRDb25uZWN0aW9uID0gb3V0Ym91bmRSZWwuZ2V0Q29ubmVjdGlvblRvKHRhcmdldEVsZW1lbnQpOwotICAgIGlmIChvdXRib3VuZENvbm5lY3Rpb24gPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwotICAgIENvbm5lY3Rpb24gaW5ib3VuZENvbm5lY3Rpb24gPSBvdXRib3VuZENvbm5lY3Rpb24uZ2V0T3Bwb3NpbmdDb25uZWN0aW9uKCk7Ci0gICAgUmVsUmVtb3ZlRXZlbnQgZXZlbnQgPSBuZXcgUmVsUmVtb3ZlRXZlbnQobmV3IENvbm5lY3Rpb24gW10ge291dGJvdW5kQ29ubmVjdGlvbixpbmJvdW5kQ29ubmVjdGlvbn0pOwotICAgICAgRW51bWVyYXRpb24gZSA9IGZMaXN0ZW5lcnMuZWxlbWVudHMoKTsKLSAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgewotICAgICAgICAoKEVsZW1lbnRMaXN0ZW5lcillLm5leHRFbGVtZW50KCkpLnJlbFJlbW92ZWQoZXZlbnQpOwotICAgICAgfQotCi0gICAgRW51bWVyYXRpb24gZVRhcmdldCA9IHRhcmdldEVsZW1lbnQuZ2V0TGlzdGVuZXJzKCk7Ci0gICAgd2hpbGUgKGVUYXJnZXQuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgKChFbGVtZW50TGlzdGVuZXIpZVRhcmdldC5uZXh0RWxlbWVudCgpKS5yZWxSZW1vdmVkKGV2ZW50KTsKLSAgICB9Ci0KLSAgICBSZWwgaW5ib3VuZFJlbCA9IGluYm91bmRDb25uZWN0aW9uLmdldFJlbCgpOwotICAgIGJvb2xlYW4gZG9uZSA9IG91dGJvdW5kUmVsLnJlbW92ZUNvbm5lY3Rpb24ob3V0Ym91bmRDb25uZWN0aW9uKTsKLSAgICBpbmJvdW5kUmVsLnJlbW92ZUNvbm5lY3Rpb24oaW5ib3VuZENvbm5lY3Rpb24pOwotICAgIHJldHVybiBkb25lOwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gZGlzY29ubmVjdFJlbCAoIFJlbCBvdXRib3VuZFJlbCApCi0gIHsKLSAgICBpZiAoZk1vZGVsID09IG51bGwgfHwgb3V0Ym91bmRSZWwgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwotICAgIEVsZW1lbnRbXSBlbGVtZW50cyA9IG5ldyBFbGVtZW50W291dGJvdW5kUmVsLmdldE51bWJlck9mVGFyZ2V0RWxlbWVudHMoKV07Ci0gICAgaW50IGkgPSAwOwotICAgIEVudW1lcmF0aW9uIGUgPSBvdXRib3VuZFJlbC5nZXRUYXJnZXRFbGVtZW50cygpOwotICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIGVsZW1lbnRzW2krK10gPSAoRWxlbWVudCllLm5leHRFbGVtZW50KCk7Ci0gICAgfQotICAgIHdoaWxlIChpLS0gPiAwKQotICAgIHsKLSAgICAgIGRpc2Nvbm5lY3QoZWxlbWVudHNbaV0sb3V0Ym91bmRSZWwpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcgKCkKLSAgewotICAgIHJldHVybiBnZXROYW1lKCk7Ci0gIH0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvQmFzaWNNb2RlbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvQmFzaWNNb2RlbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmQyMDYwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL0Jhc2ljTW9kZWwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotcHVibGljIGNsYXNzIEJhc2ljTW9kZWwgaW1wbGVtZW50cyBNb2RlbAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIHByaXZhdGUgU3RyaW5nIGZOYW1lOwotICBwcml2YXRlIEhhc2h0YWJsZSBmRWxlbWVudHM7Ci0gIHByaXZhdGUgRWxlbWVudCBmUm9vdDsKLSAgLy9UaGlzIGlzIHVzZWQgYnkgdGhlIE1VSUQKLSAgcHJpdmF0ZSBpbnQgZlVuaXF1ZU51bWJlckNvdW50ZXI7Ci0KLSAgcHVibGljIEJhc2ljTW9kZWwgKCBTdHJpbmcgbmFtZSApCi0gIHsKLSAgICBmTmFtZSA9IG5hbWU7Ci0gICAgZkVsZW1lbnRzID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGZSb290ID0gbnVsbDsKLSAgICBmVW5pcXVlTnVtYmVyQ291bnRlciA9IDA7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXROYW1lICggU3RyaW5nIG5hbWUgKQotICB7Ci0gICAgZk5hbWUgPSBuYW1lOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXROYW1lICgpCi0gIHsKLSAgICByZXR1cm4gZk5hbWU7Ci0gIH0KLQotCi0gIC8qCi0gICogc2ltcGxlIGNvdW50ZXIgdGhhdCBpbmNyZW1lbnRzIGVhY2ggY2FsbCAKLSAgKi8KLSAgcHVibGljIGludCBnZXRVbmlxdWVOdW1iZXIoKQotICB7Ci0gICAgZlVuaXF1ZU51bWJlckNvdW50ZXIrKzsKLSAgICByZXR1cm4gZlVuaXF1ZU51bWJlckNvdW50ZXI7Ci0gIH0KLQotICAvKgotICAqIFRoaXMgd2lsbCB1c2UgYSB1bmlxdWUgbnVtYmVyIGFuZCBhcHBlbmQgaXQgdG8gdGhlIGVuZCBvZiB0aGUgbmFtZSAKLSAgKiBAcGFyYW0gU3RyaW5nIG5hbWUgb2YgdGhlIGVsZW1lbnQKLSAgKiBAcmV0dXJuIFN0cmluZyBNVUlECi0gICovCi0gIHB1YmxpYyBTdHJpbmcgbWFrZU1VSUQoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBTdHJpbmcgbnVtID0gU3RyaW5nLnZhbHVlT2YoZ2V0VW5pcXVlTnVtYmVyKCkpOwotICAgIFN0cmluZyBtdWlkID0gbmFtZSArIG51bTsKLSAgICByZXR1cm4gbXVpZDsKLSAgfQotCi0KLSAgcHVibGljIGJvb2xlYW4gc2V0Um9vdEVsZW1lbnQgKCBFbGVtZW50IHJvb3QgKQotICB7Ci0gICAgaWYgKHJvb3QuZ2V0TW9kZWwoKSA9PSBudWxsKQotICAgICAgYWRkRWxlbWVudChyb290KTsKLSAgICBlbHNlIGlmIChyb290LmdldE1vZGVsKCkgIT0gdGhpcykKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmUm9vdCA9IHJvb3Q7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudCBnZXRSb290RWxlbWVudCAoKQotICB7Ci0gICAgaWYgKGZSb290ID09IG51bGwpIGZSb290ID0gZ2V0Rmlyc3RFbGVtZW50KCk7Ci0gICAgcmV0dXJuIGZSb290OwotICB9Ci0KLQotICAvKioKLSAgKiBHZXQgdGhlIGVsZW1lbnRzIHRoYXQgaGF2ZSB0aGlzIG5hbWUKLSAgKiBAcGFyYW0gU3RyaW5nIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQgCi0gICogQHJldHVybiBWZWN0b3IgYSB2ZWN0b3Igb2YgZWxlbWVudHMgdGhhdCBoYXZlIHRoaXMgbmFtZQotICAqIFRoZXNlIGVsZW1lbnRzIG1heSBiZSBvZiBkaWZmZXJlbnQgdHlwZXMKLSAgKiovCi0KLSAgcHVibGljIFZlY3RvciBnZXRFbGVtZW50c0J5TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIFZlY3RvciB2ZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgRW51bWVyYXRpb24gZSA9IGZFbGVtZW50cy5rZXlzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpewotICAgICAgIEVsZW1lbnQgZWxlbWVudCA9IChFbGVtZW50KWUubmV4dEVsZW1lbnQoKTsKLSAgICAgICBpZiAoZWxlbWVudC5nZXROYW1lKCkuZXF1YWxzKG5hbWUpKSB2ZWN0b3IuYWRkRWxlbWVudChlbGVtZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIHZlY3RvcjsKLSAgfQotCi0gCi0KLSAgcHVibGljIGJvb2xlYW4gYWRkRWxlbWVudCAoIEVsZW1lbnQgZWxlbWVudCApCi0gIHsKLSAgICBpZiAoZWxlbWVudC5nZXRNb2RlbCgpICE9IG51bGwpIHJldHVybiBmYWxzZTsKLSAgICBmRWxlbWVudHMucHV0KGVsZW1lbnQsZWxlbWVudCk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZW1vdmVFbGVtZW50ICggRWxlbWVudCBlbGVtZW50ICkKLSAgewotICAgIGlmIChlbGVtZW50LmdldE1vZGVsKCkgIT0gdGhpcykgcmV0dXJuIGZhbHNlOwotICAgIGVsZW1lbnQuZGlzY29ubmVjdEFsbCgpOwotICAgIGlmIChmUm9vdCA9PSBlbGVtZW50KSBmUm9vdCA9IG51bGw7Ci0gICAgcmV0dXJuIChmRWxlbWVudHMucmVtb3ZlKGVsZW1lbnQpID09IGVsZW1lbnQpOwotICB9Ci0KLSAgcHVibGljIEVudW1lcmF0aW9uIGdldEVsZW1lbnRzICgpCi0gIHsKLSAgICByZXR1cm4gZkVsZW1lbnRzLmVsZW1lbnRzKCk7Ci0gIH0KLQotICBwdWJsaWMgaW50IGdldE51bWJlck9mRWxlbWVudHMgKCkKLSAgewotICAgIHJldHVybiBmRWxlbWVudHMuc2l6ZSgpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gY29udGFpbnNFbGVtZW50ICggRWxlbWVudCBlbGVtZW50ICkKLSAgewotICAgIHJldHVybiBmRWxlbWVudHMuY29udGFpbnMoZWxlbWVudCk7Ci0gIH0KLQotICBwcml2YXRlIEVsZW1lbnQgZ2V0Rmlyc3RFbGVtZW50ICgpCi0gIHsKLSAgICBFbnVtZXJhdGlvbiBlID0gZ2V0RWxlbWVudHMoKTsKLSAgICByZXR1cm4gKGUuaGFzTW9yZUVsZW1lbnRzKCkgPyAoRWxlbWVudCllLm5leHRFbGVtZW50KCkgOiBudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcgKCkKLSAgewotICAgIHJldHVybiBnZXROYW1lKCk7Ci0gIH0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvQmFzaWNQcm9wZXJ0eS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvQmFzaWNQcm9wZXJ0eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTRjM2QxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL0Jhc2ljUHJvcGVydHkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWw7Ci0KLXB1YmxpYyBjbGFzcyBCYXNpY1Byb3BlcnR5IGltcGxlbWVudHMgUHJvcGVydHkKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICBwcml2YXRlIFN0cmluZyBmTmFtZTsKLSAgcHJpdmF0ZSBPYmplY3QgZlZhbHVlOwotCi0gIHB1YmxpYyBCYXNpY1Byb3BlcnR5ICggU3RyaW5nIG5hbWUgKQotICB7Ci0gICAgZk5hbWUgPSBuYW1lOwotICB9Ci0KLSAgcHVibGljIEJhc2ljUHJvcGVydHkgKCBTdHJpbmcgbmFtZSwgT2JqZWN0IHZhbHVlICkKLSAgewotICAgIGZOYW1lID0gbmFtZTsKLSAgICBmVmFsdWUgPSB2YWx1ZTsKLSAgfQotCi0gIC8qKgotICAqIFJldHVybnMgYSBzaGFsbG93IGNsb25lIG9mIHRoaXMgPGNvZGU+UHJvcGVydHk8L2NvZGU+LgotICAqIFByb3BlcnR5IGtleSBhbmQgdmFsdWUgcmVmZXJlbmNlcyBhcmUgY2xvbmVkLAotICAqIGJ1dCB0aGUgdmFsdWUgb2JqZWN0cyB0aGVtc2VsdmVzIGFyZSBub3QgY2xvbmVkLgotICAqIEByZXR1cm4gUHJvcGVydHkgQSBuZXcgUHJvcGVydHkuCi0gICovCi0gIHB1YmxpYyBQcm9wZXJ0eSBzaGFsbG93Q2xvbmUgKCkKLSAgewotICAgIHJldHVybiBuZXcgQmFzaWNQcm9wZXJ0eShmTmFtZSxmVmFsdWUpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXROYW1lICgpCi0gIHsKLSAgICByZXR1cm4gZk5hbWU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRWYWx1ZSAoIE9iamVjdCB2YWx1ZSApCi0gIHsKLSAgICBmVmFsdWUgPSB2YWx1ZTsKLSAgfQotCi0gIHB1YmxpYyBPYmplY3QgZ2V0VmFsdWUgKCkKLSAgewotICAgIHJldHVybiBmVmFsdWU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRWYWx1ZUFzU3RyaW5nICggU3RyaW5nIHZhbHVlICkKLSAgewotICAgIGZWYWx1ZSA9IHZhbHVlOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRWYWx1ZUFzU3RyaW5nICgpCi0gIHsKLSAgICByZXR1cm4gKGZWYWx1ZSAhPSBudWxsID8gZlZhbHVlLnRvU3RyaW5nKCkgOiBudWxsKTsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9CYXNpY1JlbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvQmFzaWNSZWwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA1ZjA4NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9CYXNpY1JlbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotcHVibGljIGNsYXNzIEJhc2ljUmVsIGltcGxlbWVudHMgUmVsCi17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZk5hbWU7Ci0gIHByaXZhdGUgRWxlbWVudCBmU291cmNlRWxlbWVudDsKLSAgcHJpdmF0ZSBWZWN0b3IgZkNvbm5lY3Rpb25zOwotCi0gIHB1YmxpYyBCYXNpY1JlbCAoIFN0cmluZyBuYW1lLCBFbGVtZW50IHNvdXJjZUVsZW1lbnQgKQotICB7Ci0gICAgZk5hbWUgPSBuYW1lOwotICAgIGZTb3VyY2VFbGVtZW50ID0gc291cmNlRWxlbWVudDsKLSAgICBmQ29ubmVjdGlvbnMgPSBuZXcgVmVjdG9yKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUgKCkKLSAgewotICAgIHJldHVybiBmTmFtZTsKLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50IGdldFNvdXJjZUVsZW1lbnQgKCkKLSAgewotICAgIHJldHVybiBmU291cmNlRWxlbWVudDsKLSAgfQotCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRUYXJnZXRFbGVtZW50cyAoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBFbGVtZW50RW51bWVyYXRpb24oZkNvbm5lY3Rpb25zLmVsZW1lbnRzKCkpOwotICB9Ci0KLSAgcHVibGljIGludCBnZXROdW1iZXJPZlRhcmdldEVsZW1lbnRzICgpCi0gIHsKLSAgICByZXR1cm4gZkNvbm5lY3Rpb25zLnNpemUoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGFkZENvbm5lY3Rpb24gKCBDb25uZWN0aW9uIGNvbm5lY3Rpb24gKQotICB7Ci0gICAgZkNvbm5lY3Rpb25zLmFkZEVsZW1lbnQoY29ubmVjdGlvbik7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiByZW1vdmVDb25uZWN0aW9uICggQ29ubmVjdGlvbiBjb25uZWN0aW9uICkKLSAgewotICAgIHJldHVybiBmQ29ubmVjdGlvbnMucmVtb3ZlRWxlbWVudChjb25uZWN0aW9uKTsKLSAgfQotCi0gIHB1YmxpYyBDb25uZWN0aW9uIGdldENvbm5lY3Rpb25UbyAoIEVsZW1lbnQgdGFyZ2V0RWxlbWVudCApCi0gIHsKLSAgICBFbnVtZXJhdGlvbiBlID0gZkNvbm5lY3Rpb25zLmVsZW1lbnRzKCk7Ci0gICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgQ29ubmVjdGlvbiBjID0gKENvbm5lY3Rpb24pZS5uZXh0RWxlbWVudCgpOwotICAgICAgaWYgKGMuZ2V0RWxlbWVudCgpID09IHRhcmdldEVsZW1lbnQpIHJldHVybiBjOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcgKCkKLSAgewotICAgIHJldHVybiBnZXROYW1lKCk7Ci0gIH0KLQotICBwcml2YXRlIGNsYXNzIEVsZW1lbnRFbnVtZXJhdGlvbiBpbXBsZW1lbnRzIEVudW1lcmF0aW9uCi0gIHsKLSAgICBwcml2YXRlIEVudW1lcmF0aW9uIGZDb25uZWN0aW9uRW51bWVyYXRpb247Ci0KLSAgICBwdWJsaWMgRWxlbWVudEVudW1lcmF0aW9uICggRW51bWVyYXRpb24gY29ubmVjdGlvbkVudW1lcmF0aW9uICkKLSAgICB7Ci0gICAgICBmQ29ubmVjdGlvbkVudW1lcmF0aW9uID0gY29ubmVjdGlvbkVudW1lcmF0aW9uOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGhhc01vcmVFbGVtZW50cyAoKQotICAgIHsKLSAgICAgIHJldHVybiBmQ29ubmVjdGlvbkVudW1lcmF0aW9uLmhhc01vcmVFbGVtZW50cygpOwotICAgIH0KLQotICAgIHB1YmxpYyBPYmplY3QgbmV4dEVsZW1lbnQgKCkKLSAgICB7Ci0gICAgICByZXR1cm4gKChDb25uZWN0aW9uKWZDb25uZWN0aW9uRW51bWVyYXRpb24ubmV4dEVsZW1lbnQoKSkuZ2V0RWxlbWVudCgpOwotICAgIH0KLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9Db25uZWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9Db25uZWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZGNmNmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvQ29ubmVjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbDsKLQotLyoqCi0qIFRoaXMgaXMgdGhlIGFic3RyYWN0IGNsYXNzIGZvciBhIGNvbm5lY3Rpb24gdGhhdCB0aWVzIGEgUmVsIHRvIGEgTm9kZS4KLSogTm9ybWFsbHkgQ29ubmVjdGlvbiBvYmplY3RzIGFyZSBtYW51ZmFjdHVyZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoZQotKiBkZXJpdmVkIGNsYXNzZXMgb2YgdGhlIE1vZGVsIGZyYW1ld29yaywgYW5kIGFyZSBub3QgbWFuaXB1bGF0ZWQgYnkKLSogdGhlIGNhbGxlciBkaXJlY3RseS4KLSovCi1wdWJsaWMgaW50ZXJmYWNlIENvbm5lY3Rpb24KLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBSZWwgdGhhdCBvd25zIHRoaXMgY29ubmVjdGlvbi4KLSAgKiBAcmV0dXJuIFJlbCBUaGUgUmVsIHRoYXQgb3ducyB0aGlzIGNvbm5lY3Rpb24uCi0gICogVGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBudWxsLCB0aGF0IGlzLCBhIENvbm5lY3Rpb24KLSAgKiBjYW5ub3QgZXhpc3Qgd2l0aG91dCBhIFJlbCB0byBvd24gaXQuCi0gICovCi0gIHB1YmxpYyBSZWwgZ2V0UmVsICgpOwotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIE5vZGUgdGhhdCB0aGlzIGNvbm5lY3Rpb24gcG9pbnRzIHRvLgotICAqIEByZXR1cm4gTm9kZSBUaGUgTm9kZSB0aGlzIGNvbm5lY3Rpb24gcG9pbnRzIHRvLgotICAqIFRoaXMgbWV0aG9kIG5ldmVyIHJldHVybnMgbnVsbCwgdGhhdCBpcywgYSBDb25uZWN0aW9uCi0gICogY2Fubm90IGV4aXN0IHdpdGhvdXQgYSBOb2RlIHRvIHBvaW50IHRvLgotICAqLwotICBwdWJsaWMgRWxlbWVudCBnZXRFbGVtZW50ICgpOwotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIG9wcG9zaW5nIGNvbm5lY3Rpb24gdG8gdGhpcyBjb25uZWN0aW9uLgotICAqIENvbm5lY3Rpb24gb2JqZWN0cyBhbHdheXMgZXhpc3QgaW4gcGFpcnMsIHRoYXQgaXMsCi0gICogaWYgbm9kZSAiUGFyZW50IiBoYXMgYSByZWxhdGlvbnNoaXAgbmFtZWQgIkNoaWxkcmVuIgotICAqIGNvbnRhaW5pbmcgYSBjb25uZWN0aW9uIHRvIG5vZGUgIkNoaWxkIiwgdGhlbiB0aGVyZQotICAqIG11c3QgZXhpc3QgYW4gb3Bwb3NpbmcgY29ubmVjdGlvbiBmcm9tICJDaGlsZCIgdG8KLSAgKiAiUGFyZW50IiBpbiBzb21lIHJlbGF0aW9uc2hpcCBvZiAiQ2hpbGQiIChmb3IgZXhhbXBsZSwKLSAgKiBpbiBhIHJlbGF0aW9uc2hpcCBjYWxsZWQgIlBhcmVudHMiKS4KLSAgKiBAcmV0dXJuIENvbm5lY3Rpb24gVGhlIG9wcG9zaW5nIGNvbm5lY3Rpb24uCi0gICogQXMgYSBnZW5lcmFsIHJ1bGUsIHRoaXMgbWV0aG9kIHNob3VsZCBuZXZlciByZXR1cm4gbnVsbC4KLSAgKiBJdCBtYXkgb25seSByZXR1cm4gbnVsbCBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRoZSBwYWlyCi0gICogb2YgY29ubmVjdGlvbnMuCi0gICovCi0gIHB1YmxpYyBDb25uZWN0aW9uIGdldE9wcG9zaW5nQ29ubmVjdGlvbiAoKTsKLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTA1N2MwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL0VsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotCi0vKioKLSogVGhpcyBpcyB0aGUgYWJzdHJhY3QgY2xhc3MgZm9yIGVsZW1lbnRzIHRoYXQgY2FuIGJlIG1hbmFnZWQgYnkgYSBNb2RlbC4KLSogRXZlcnkgZWxlbWVudCBoYXMgYSBuYW1lLCBhIHNldCBvZiBwcm9wZXJ0aWVzLCBhbmQgYSBzZXQgb2YgcmVsYXRpb25zaGlwcwotKiB0byBvdGhlciBlbGVtZW50cy4KLSovCi1wdWJsaWMgaW50ZXJmYWNlIEVsZW1lbnQKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAvKioKLSAgKiBSZXR1cm5zIGEgY2xvbmUgb2YgdGhpcyA8Y29kZT5FbGVtZW50PC9jb2RlPgotICAqIG9mIHRoZSBzYW1lIGNsYXNzIGFuZCB3aXRoIHRoZSBzYW1lIG5hbWUgYW5kIG1vZGVsLAotICAqIGJ1dCB3aXRoIG5vIFByb3BlcnRpZXMsIFJlbHMgb3IgTGlzdGVuZXJzIGV4Y2VwdCBmb3IKLSAgKiB0aGUge0BsaW5rIFByb3BlcnR5I05BTUUgTkFNRX0gcHJvcGVydHkuCi0gICogQHJldHVybiBPYmplY3QgQSBuZXcgRWxlbWVudC4KLSAgKi8KLSAgcHVibGljIEVsZW1lbnQgc2hhbGxvd0Nsb25lICgpOwotCi0gIC8qKgotICAqIFJldHVybnMgYSBjbG9uZSBvZiB0aGlzIDxjb2RlPkVsZW1lbnQ8L2NvZGU+Ci0gICogb2YgdGhlIHNhbWUgY2xhc3MgYW5kIHdpdGggdGhlIHNhbWUgbmFtZSBhbmQgbW9kZWwKLSAgKiBhbmQgd2l0aCBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIEVsZW1lbnQncyBQcm9wZXJ0aWVzLgotICAqIFRoZSBSZWxzIGFuZCBMaXN0ZW5lcnMgYXJlIG5vdCBjbG9uZWQuCi0gICogQHJldHVybiBFbGVtZW50IEEgbmV3IEVsZW1lbnQuCi0gICovCi0gIHB1YmxpYyBFbGVtZW50IGRlZXBDbG9uZSAoKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBtb2RlbCB0aGlzIGVsZW1lbnQgYmVsb25ncyB0bywgb3IgbnVsbCBpZiB0aGUgZWxlbWVudAotICAqIGhhcyBub3QgYmVlbiBhZGRlZCB0byBhIG1vZGVsLiBTZWUgYWxzbyB7QGxpbmsgI2lzVmFsaWQgaXNWYWxpZCgpfS4KLSAgKiBAcmV0dXJuIE1vZGVsIFRoZSBtb2RlbCB0aGlzIGVsZW1lbnQgYmVsb25ncyB0bywgb3IgbnVsbCBpZiBub25lLgotICAqLwotICBwdWJsaWMgTW9kZWwgZ2V0TW9kZWwgKCk7Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoaXMgZWxlbWVudCBiZWxvbmdzIHRvIGEgbW9kZWwuCi0gICogU2VlIGFsc28ge0BsaW5rICNnZXRNb2RlbCBnZXRNb2RlbCgpfS4KLSAgKiBAcmV0dXJuIGJvb2xlYW4gVHJ1ZSBpZiBhbmQgb25seSBpZiB0aGlzIGVsZW1lbnQgYmVsb25ncyB0byBhIG1vZGVsLgotICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1ZhbGlkICgpOwotCi0gIC8qKgotICAqIFJlbW92ZXMgdGhpcyBlbGVtZW50IGZyb20gdGhlIG1vZGVsIHRvIHdoaWNoIGl0IGN1cnJlbnRseSBiZWxvbmdzLgotICAqIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIHtAbGluayAjZ2V0TW9kZWwgZ2V0TW9kZWwoKX0gd2lsbCByZXR1cm4KLSAgKiBudWxsIGFuZCB7QGxpbmsgI2lzVmFsaWQgaXNWYWxpZCgpfSB3aWxsIHJldHVybiBmYWxzZS4KLSAgKiBAcmV0dXJuIGJvb2xlYW4gVHJ1ZSBpZiB0aGUgZWxlbWVudCB3YXMgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQgZnJvbQotICAqIGl0cyBtb2RlbC4gVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBiZWxvbmcKLSAgKiB0byBhbnkgbW9kZWwuCi0gICovCi0gIHB1YmxpYyBib29sZWFuIHJlbW92ZSAoKTsKLQotICAvKioKLSAgKiBTZXRzIHRoZSBuYW1lIG9mIHRoaXMgZWxlbWVudCBhbmQgdXBkYXRlcyB0aGUgIm5hbWUiIHByb3BlcnR5LgotICAqIEV2ZXJ5IGVsZW1lbnQgaW5jbHVkZXMgYSBwcm9wZXJ0eSBjYWxsZWQgIm5hbWUiIChzZWUgUHJvcGVydHkuTkFNRSkKLSAgKiB3aG9zZSB2YWx1ZSBpcyB0aGUgc2FtZSBzdHJpbmcgYXMgcGFzc2VkIGludG8gc2V0TmFtZSgpLgotICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoaXMgZWxlbWVudC4KLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZSAoIFN0cmluZyBuYW1lICk7Ci0KLSAgLyoqCi0gICoKLSAgKi8KLSAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIgKCBFbGVtZW50TGlzdGVuZXIgbGlzdGVuZXIgKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoaXMgZWxlbWVudC4KLSAgKiBAcmV0dXJuIFN0cmluZyBUaGUgbmFtZSBvZiB0aGlzIGVsZW1lbnQuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSAoKTsKLQotICAvKioKLSAgKiBBZGRzIG9yIHNldHMgYSBwcm9wZXJ0eSBvZiB0aGlzIGVsZW1lbnQuCi0gICogUHJvcGVydGllcyBzZXQgdXNpbmcgdGhpcyBtZXRob2QgY2FuIGJlIHJldHJpZXZlZCB1c2luZyBlaXRoZXIKLSAgKiB7QGxpbmsgI2dldFByb3BlcnR5IGdldFByb3BlcnR5KCl9IG9yCi0gICoge0BsaW5rICNnZXRQcm9wZXJ0eUFzT2JqZWN0IGdldFByb3BlcnR5QXNPYmplY3QoKX0uCi0gICogRXZlcnkgZWxlbWVudCBpbmNsdWRlcyBhIHByb3BlcnR5IGNhbGxlZCAibmFtZSIgKHNlZSBQcm9wZXJ0eS5OQU1FKQotICAqIHdob3NlIHZhbHVlIGlzIHRoZSBzYW1lIHN0cmluZyBhcyBwYXNzZWQgaW50byB7QGxpbmsgI3NldE5hbWUgc2V0TmFtZSgpfS4KLSAgKiBBbnkgcHJldmlvdXMgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBuYW1lIGlzIHJlcGxhY2VkLgotICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gc2V0LgotICAqLwotICBwdWJsaWMgdm9pZCBzZXRQcm9wZXJ0eSAoIFByb3BlcnR5IHByb3BlcnR5ICk7Ci0KLSAgLyoqCi0gICogQWRkcyBvciBzZXRzIGEgcHJvcGVydHkgb2YgdGhpcyBlbGVtZW50LgotICAqIFByb3BlcnRpZXMgc2V0IHVzaW5nIHRoaXMgbWV0aG9kIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgZWl0aGVyCi0gICoge0BsaW5rICNnZXRQcm9wZXJ0eSBnZXRQcm9wZXJ0eSgpfSBvcgotICAqIHtAbGluayAjZ2V0UHJvcGVydHlBc09iamVjdCBnZXRQcm9wZXJ0eUFzT2JqZWN0KCl9LgotICAqIEV2ZXJ5IGVsZW1lbnQgaW5jbHVkZXMgYSBwcm9wZXJ0eSBjYWxsZWQgIm5hbWUiIChzZWUgUHJvcGVydHkuTkFNRSkKLSAgKiB3aG9zZSB2YWx1ZSBpcyB0aGUgc2FtZSBzdHJpbmcgYXMgcGFzc2VkIGludG8ge0BsaW5rICNzZXROYW1lIHNldE5hbWUoKX0uCi0gICogQW55IHByZXZpb3VzIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZSBpcyByZXBsYWNlZC4KLSAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LgotICAqIEBwYXJhbSB2YWx1ZSBUaGUgT2JqZWN0IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFByb3BlcnR5QXNPYmplY3QgKCBTdHJpbmcgbmFtZSwgT2JqZWN0IHZhbHVlICk7Ci0KLSAgLyoqCi0gICogQWRkcyBvciBzZXRzIGEgU3RyaW5nIHByb3BlcnR5IG9mIHRoaXMgZWxlbWVudC4KLSAgKiBQcm9wZXJ0aWVzIHNldCB1c2luZyB0aGlzIG1ldGhvZCBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIGVpdGhlcgotICAqIHtAbGluayAjZ2V0UHJvcGVydHkgZ2V0UHJvcGVydHkoKX0sCi0gICoge0BsaW5rICNnZXRQcm9wZXJ0eUFzT2JqZWN0IGdldFByb3BlcnR5QXNPYmplY3QoKX0gb3IKLSAgKiB7QGxpbmsgI2dldFByb3BlcnR5QXNTdHJpbmcgZ2V0UHJvcGVydHlBc1N0cmluZygpfS4KLSAgKiBFdmVyeSBlbGVtZW50IGluY2x1ZGVzIGEgcHJvcGVydHkgY2FsbGVkICJuYW1lIiAoc2VlIFByb3BlcnR5Lk5BTUUpCi0gICogd2hvc2UgdmFsdWUgaXMgdGhlIHNhbWUgc3RyaW5nIGFzIHBhc3NlZCBpbnRvIHtAbGluayAjc2V0TmFtZSBzZXROYW1lKCl9LgotICAqIEFueSBwcmV2aW91cyBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIG5hbWUgaXMgcmVwbGFjZWQuCi0gICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHNldC4KLSAgKiBAcGFyYW0gdmFsdWUgVGhlIFN0cmluZyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LgotICAqLwotICBwdWJsaWMgdm9pZCBzZXRQcm9wZXJ0eUFzU3RyaW5nICggU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSApOwotCi0gIC8qKgotICAqIFJldHVybnMgYSBwcm9wZXJ0eSBvZiB0aGUgZ2l2ZW4gbmFtZSBvciBudWxsIGlmIHRoZXJlIGlzIG5vbmUuCi0gICogRXZlcnkgZWxlbWVudCBpbmNsdWRlcyBhIHByb3BlcnR5IGNhbGxlZCAibmFtZSIgKHNlZSBQcm9wZXJ0eS5OQU1FKQotICAqIHdob3NlIHZhbHVlIGlzIHRoZSBzYW1lIHN0cmluZyBhcyBwYXNzZWQgaW50byB7QGxpbmsgI3NldE5hbWUgc2V0TmFtZSgpfS4KLSAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gcmV0dXJuLgotICAqIEByZXR1cm4gUHJvcGVydHkgVGhlIHByb3BlcnR5LCBvciBudWxsIGlmIG5vbmUuCi0gICovCi0gIHB1YmxpYyBQcm9wZXJ0eSBnZXRQcm9wZXJ0eSAoIFN0cmluZyBuYW1lICk7Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgT2JqZWN0IHZhbHVlIG9mIGEgcHJvcGVydHkgb2YgdGhlIGdpdmVuIG5hbWUgb3IgbnVsbAotICAqIGlmIHRoZXJlIGlzIG5vbmUuCi0gICogRXZlcnkgZWxlbWVudCBpbmNsdWRlcyBhIHByb3BlcnR5IGNhbGxlZCAibmFtZSIgKHNlZSBQcm9wZXJ0eS5OQU1FKQotICAqIHdob3NlIHZhbHVlIGlzIHRoZSBzYW1lIHN0cmluZyBhcyBwYXNzZWQgaW50byB7QGxpbmsgI3NldE5hbWUgc2V0TmFtZSgpfS4KLSAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gcmV0dXJuLgotICAqIEByZXR1cm4gT2JqZWN0IFRoZSBwcm9wZXJ0eSB2YWx1ZSBhcyBhbiBPYmplY3QsIG9yIG51bGwgaWYgbm9uZS4KLSAgKi8KLSAgcHVibGljIE9iamVjdCBnZXRQcm9wZXJ0eUFzT2JqZWN0ICggU3RyaW5nIG5hbWUgKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBTdHJpbmcgdmFsdWUgb2YgYSBwcm9wZXJ0eSBvZiB0aGUgZ2l2ZW4gbmFtZSBvciBudWxsCi0gICogaWYgdGhlcmUgaXMgbm9uZS4KLSAgKiBFdmVyeSBlbGVtZW50IGluY2x1ZGVzIGEgcHJvcGVydHkgY2FsbGVkICJuYW1lIiAoc2VlIFByb3BlcnR5Lk5BTUUpCi0gICogd2hvc2UgdmFsdWUgaXMgdGhlIHNhbWUgc3RyaW5nIGFzIHBhc3NlZCBpbnRvIHtAbGluayAjc2V0TmFtZSBzZXROYW1lKCl9LgotICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byByZXR1cm4uCi0gICogQHJldHVybiBTdHJpbmcgVGhlIHByb3BlcnR5IHZhbHVlIGFzIGEgU3RyaW5nLCBvciBudWxsIGlmIG5vbmUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJvcGVydHlBc1N0cmluZyAoIFN0cmluZyBuYW1lICk7Ci0KLSAgLyoqCi0gICogUmV0dXJucyBhbiBlbnVtZXJhdGlvbiBvZiBhbGwgcHJvcGVydGllcyBvZiB0aGlzIGVsZW1lbnQuCi0gICogVGhlcmUgaXMgYWx3YXlzIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSB0aGF0IGNhcnJpZXMgdGhlCi0gICogbmFtZSBvZiB0aGlzIGVsZW1lbnQgKHNlZSB7QGxpbmsgI3NldE5hbWUgc2V0TmFtZSgpfSkuCi0gICogQHJldHVybiBFbnVtZXJhdGlvbiBBbiBlbnVtZXJhdGlvbiBvZiBhbGwgcHJvcGVydGllcyBvZiB0aGlzIGVsZW1lbnQuCi0gICovCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRQcm9wZXJ0aWVzICgpOwotCi0gIC8qKgotICAqIENyZWF0ZXMgYSBiaWRpcmVjdGlvbmFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgZWxlbWVudCBhbmQgYW5vdGhlci4KLSAgKiBCb3RoIHJlbGF0aW9uc2hpcHMgYXJlIGlkZW50aWZpZWQgYnkgbmFtZXMuIFRoZSBuYW1lcyBvZiBhbGwgdGhlCi0gICogb3V0Ym91bmQgcmVsYXRpb25zaGlwcyBvZiBhIGVsZW1lbnQgbXVzdCBiZSBtdXR1YWxseSB1bmlxdWUuCi0gICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gY29ubmVjdCB0by4KLSAgKiBAcGFyYW0gb3V0Ym91bmRSZWxOYW1lIFRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAgdG8gY29udGFpbiB0aGUKLSAgKiBjb25uZWN0aW9uIHRvIHRoZSBlbGVtZW50LgotICAqIEBwYXJhbSBpbmJvdW5kUmVsTmFtZSBUaGUgbmFtZSBvZiB0aGUgcmVsYXRpb25zaGlwIHRvIGNvbnRhaW4gdGhlCi0gICogaW52ZXJzZSBjb25uZWN0aW9uIGJhY2sgdG8gdGhpcyBlbGVtZW50LgotICAqIEByZXR1cm4gYm9vbGVhbiBUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgotICAqIEJvdGggZWxlbWVudHMgbXVzdCBiZWxvbmcgdG8gdGhlIHNhbWUgbW9kZWwsIG90aGVyIGZhbHNlIGlzIHJldHVybmVkLgotICAqLwotICBwdWJsaWMgYm9vbGVhbiBjb25uZWN0ICggRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgb3V0Ym91bmRSZWxOYW1lLCBTdHJpbmcgaW5ib3VuZFJlbE5hbWUgKTsKLQotICAvKioKLSAgKiBEaXNtYW50bGVzIHRoZSBjb25uZWN0aW9uIHRvIGFub3RoZXIgZWxlbWVudCBpbiBhIGdpdmVuIHJlbGF0aW9uc2hpcC4KLSAgKiBUaGUgaW52ZXJzZSBjb25uZWN0aW9uIGlzIGFsc28gYXV0b21hdGljYWxseSBkaXNtYW50bGVkLgotICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGRpc2Nvbm5lY3QgZnJvbS4KLSAgKiBAcGFyYW0gb3V0Ym91bmRSZWxOYW1lIFRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAgY29udGFpbmluZwotICAqIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBlbGVtZW50LgotICAqIEByZXR1cm4gYm9vbGVhbiBUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHJlbW92ZWQgc3VjY2Vzc2Z1bGx5LgotICAqIEJvdGggZWxlbWVudHMgbXVzdCBiZWxvbmcgdG8gdGhlIHNhbWUgbW9kZWwsIG90aGVyIGZhbHNlIGlzIHJldHVybmVkLgotICAqIElmIHRoZSBlbGVtZW50cyBhcmUgbm90IGNvbm5lY3RlZCB0aHJvdWdoIHRoZSBnaXZlbiByZWxhdGlvbnNoaXAsIHRoZW4KLSAgKiBmYWxzZSBpcyByZXR1cm5lZC4KLSAgKi8KLSAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdCAoIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIG91dGJvdW5kUmVsTmFtZSApOwotCi0gIC8qKgotICAqIERpc21hbnRsZXMgdGhlIGNvbm5lY3Rpb24gdG8gYWxsIGVsZW1lbnRzIGluIHRoZSBnaXZlbiByZWxhdGlvbnNoaXAuCi0gICogVGhlIGludmVyc2UgY29ubmVjdGlvbnMgYXJlIGFsc28gYXV0b21hdGljYWxseSBkaXNtYW50bGVkLgotICAqIEBwYXJhbSBvdXRib3VuZFJlbE5hbWUgVGhlIG5hbWUgb2YgdGhlIHJlbGF0aW9uc2hpcC4KLSAgKiBAcmV0dXJuIGJvb2xlYW4gVHJ1ZSBpZiBhbGwgY29ubmVjdGlvbnMgYXJlIHJlbW92ZWQgc3VjY2Vzc2Z1bGx5LgotICAqIFRoaXMgbWV0aG9kIHJldHVybnMgZmFsc2UgaWYgdGhlIGVsZW1lbnQgZG9lcyBub3QgYmVsb25nIHRvIGEgbW9kZWwuCi0gICovCi0gIHB1YmxpYyBib29sZWFuIGRpc2Nvbm5lY3RSZWwgKCBTdHJpbmcgb3V0Ym91bmRSZWxOYW1lICk7Ci0KLSAgLyoqCi0gICogRGlzbWFudGxlcyBhbGwgY29ubmVjdGlvbnMgZnJvbSB0aGlzIGVsZW1lbnQuCi0gICogQHJldHVybiBib29sZWFuIFRydWUgaWYgYWxsIGNvbm5lY3Rpb25zIGFyZSByZW1vdmVkIHN1Y2Nlc3NmdWxseS4KLSAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGZhbHNlIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGJlbG9uZyB0byBhIG1vZGVsLgotICAqLwotICBwdWJsaWMgYm9vbGVhbiBkaXNjb25uZWN0QWxsICgpOwotCi0gIC8qKgotICAqIFJldHVybnMgYW4gZW51bWVyYXRpb24gb2YgYWxsIGVsZW1lbnRzCi0gICogY29ubmVjdGVkIHRocnUgdGhlIGdpdmVuIHJlbGF0aW9uc2hpcC4KLSAgKiBAcGFyYW0gcmVsTmFtZSBUaGUgbmFtZSBvZiB0aGUgcmVsYXRpb25zaGlwLgotICAqIEByZXR1cm4gRW51bWVyYXRpb24gVGhlIGVsZW1lbnRzIGluIHRoZSByZWxhdGlvbnNoaXAuCi0gICogVGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBudWxsLgotICAqLwotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0RWxlbWVudHMgKCBTdHJpbmcgcmVsTmFtZSApOwotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgZ2l2ZW4gcmVsYXRpb25zaGlwLgotICAqIEBwYXJhbSByZWxOYW1lIFRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAuCi0gICogQHJldHVybiBpbnQgVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcmVsYXRpb25zaGlwLgotICAqIFRoaXMgbWV0aG9kIG5ldmVyIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4KLSAgKi8KLQotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0TGlzdGVuZXJzKCk7Ci0KLSAgcHVibGljIGludCBnZXROdW1iZXJPZkVsZW1lbnRzICggU3RyaW5nIHJlbE5hbWUgKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSByZWxhdGlvbnNoaXAgb2JqZWN0IG9mIHRoZSBnaXZlbiBuYW1lLgotICAqIEBwYXJhbSByZWxOYW1lIFRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAuCi0gICogQHJldHVybiBpbnQgVGhlIHJlbGF0aW9uc2hpcC4gVGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBudWxsLgotICAqIEluIG90aGVyIHdvcmRzLCBhbnkgcmVmZXJlbmNlIHRvIGEgcmVsYXRpb25zaGlwIG5hbWUgYXV0b21hdGljYWxseQotICAqIGJyaW5ncyBhIGNvcnJlc3BvbmRpbmcgUmVsIG9iamVjdCBpbnRvIGV4aXN0ZW5jZS4gQ2FyZWxlc3MgbmFtaW5nCi0gICogbWF5IHJlc3VsdCBpbiB0aGUge0BsaW5rICNnZXRSZWxzIGdldFJlbHMoKX0gbWV0aG9kIHJldHVybmluZyBhbiBlbnVtZXJhdGlvbiBvZgotICAqIG1vcmUgcmVsYXRpb25zaGlwcyB0aGFuIHdvdWxkIGJlIG1lYW5pbmdmdWwsIGVmZmljaWVudCBvciB1c2VmdWwuCi0gICovCi0gIHB1YmxpYyBSZWwgZ2V0UmVsICggU3RyaW5nIHJlbE5hbWUgKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIGFuIGVudW1lcmF0aW9uIG9mIGFsbCBrbm93biByZWxhdGlvbnNoaXBzLgotICAqIEByZXR1cm4gRW51bWVyYXRpb24gVGhlIG91dGJvdW5kIHJlbGF0aW9uc2hpcHMgb2YgdGhlIGVsZW1lbnQuCi0gICogVGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBudWxsLgotICAqLwotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0UmVscyAoKTsKLQotCi0gIC8qCi0gICogVGhlcmUgaXMgYSBuZWVkIHNvbWV0aW1lcyBmb3IgZWFjaCBlbGVtZW50IGluIGEgbW9kZWwgdG8gaGF2ZSBhIHVuaXF1ZSBpZGVudGlmaWVyLgotICAqIE5vcm1hbGx5IHRoaXMgd291bGQgYmUgbGVmdCB0byBhIG5hbWUsIGJ1dCBzaW5jZSB0aGUgZWxlbWVudCBtYWtlciBnaXZlcyBpdCBpdHMgbmFtZQotICAqIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgYSBtb2RlbCBjb3VsZCBoYXZlIHR3byBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUuIElmIHRoZXkgCi0gICogYXJlIHRoZSBzYW1lIGVsZW1lbnQgdHlwZSB0aGVuIHRoZXJlIHdvdWxkIGJlIG5vIHdheSB0byBkaWZmZXJlbmNpYXRlIGJldHdlZW4gdGhlIHR3by4KLSAgKiBUaGUgZm9sbG93aW5nIGdldHRlciBhbmQgc2V0dGVyIHdpbGwgcHJvdmlkZSBhIHVuaXF1ZSBpZGVudGlmaWVyLiBUaGlzIGlkZW50aWZpZXIgd2lsbCBiZSBrbm93biAKLSAgKiBhcyB0aGUgbXVpZCBvciBNb2RlbCBVbmlxdWUgSWRlbnRpZmllci4gVW5saWtlIGEgdXVpZCBpdCB3aWxsIG9ubHkgYmUgYXNzdXJlZCB1bmlxdWVuZXNzIAotICAqIHdpdGhpbiBpdHMgb3duIG1vZGVsLiBUaGUgaW50ZW50aW9uIGlzIHRvIHVzZSBhIHVuaXF1ZSBudW1iZXIgYXBwZW5kZWQgdG8gdGhlIGVuZCAKLSAgKiBvZiB0aGUgbmFtZS4KLSAgKiBUaGUgZm9sbG93aW5nIGlzIHRoZSBnZXR0ZXIKLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgdW5pcXVlIGlkZW50aWZpZXIKLSAgKi8KLQotICBwdWJsaWMgU3RyaW5nIGdldE1VSUQoKTsKLSAgCi0gIAotCi0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvRWxlbWVudEFkYXB0ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL0VsZW1lbnRBZGFwdGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YmMxN2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvRWxlbWVudEFkYXB0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWw7Ci0KLS8qKgotKiBUaGlzIGlzIHdoZXJlIHdlIHN0b3JlIGFsbCB0aGUgc3RhdGUgZGF0YSB0aGF0IHZhcmlvdXMgVUlzCi0qIChzdWNoIGFzIHRoZSBOZXdXU0RMQ3JlYXRpb25XaXphcmQpIGNhcHR1cmUgZnJvbSB0aGUgdXNlcgotKiBhbmQgdGhlbiBuZWVkIHRvIHByb2Nlc3MuCi0qLwotcHVibGljIGNsYXNzIEVsZW1lbnRBZGFwdGVyIGltcGxlbWVudHMgRWxlbWVudExpc3RlbmVyCi17Ci0gIC8qKgotICAqIENhbGxlZCB3aGVuIGEgcHJvcGVydHkgaXMgYWRkZWQgdG8gdGhlIG1vZGVsLgotICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgY29udGFpbmluZyB0aGUgbW9kZWwsIHByb3BlcnR5IGFuZCB2YWx1ZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgcHJvcGVydHlBZGRlZCAoIFByb3BlcnR5QWRkRXZlbnQgZXZlbnQgKQotICB7Ci0gIH0KLQotICAvKioKLSAgKiBDYWxsZWQgd2hlbiBhIHByb3BlcnR5IGluIHRoZSBtb2RlbCBjaGFuZ2VzLgotICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgY29udGFpbmluZyB0aGUgbW9kZWwsIHByb3BlcnR5LCBvbGQgdmFsdWUKLSAgKiBhbmQgbmV3IHZhbHVlLgotICAqLwotICBwdWJsaWMgdm9pZCBwcm9wZXJ0eUNoYW5nZWQgKCBQcm9wZXJ0eUNoYW5nZUV2ZW50IGV2ZW50ICkKLSAgewotICB9Ci0KLSAgLyoqCi0gICogQ2FsbGVkIHdoZW4gYSBwcm9wZXJ0eSBpbiB0aGUgbW9kZWwgaXMgcmVtb3ZlZC4KLSAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IGNvbnRhaW5pbmcgdGhlIG1vZGVsLCBwcm9wZXJ0eSBhbmQgb2xkIHZhbHVlLgotICAqLwotICBwdWJsaWMgdm9pZCBwcm9wZXJ0eVJlbW92ZWQgKCBQcm9wZXJ0eVJlbW92ZUV2ZW50IGV2ZW50ICkKLSAgewotICB9Ci0KLSAgLyoqCi0gICogQ2FsbGVkIHdoZW4gYSBwcm9wZXJ0eSBpcyBhZGRlZCB0byB0aGUgbW9kZWwuCi0gICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBjb250YWluaW5nIHRoZSBtb2RlbCwgcHJvcGVydHkgYW5kIHZhbHVlLgotICAqLwotICBwdWJsaWMgdm9pZCByZWxBZGRlZCAoIFJlbEFkZEV2ZW50IGV2ZW50ICkKLSAgewotICB9Ci0KLSAgLyoqCi0gICogQ2FsbGVkIHdoZW4gYSBwcm9wZXJ0eSBpcyBhZGRlZCB0byB0aGUgbW9kZWwuCi0gICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBjb250YWluaW5nIHRoZSBtb2RlbCwgcHJvcGVydHkgYW5kIHZhbHVlLgotICAqLwotICBwdWJsaWMgdm9pZCByZWxSZW1vdmVkICggUmVsUmVtb3ZlRXZlbnQgZXZlbnQgKQotICB7Ci0gIH0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvRWxlbWVudExpc3RlbmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9FbGVtZW50TGlzdGVuZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQwOTZmOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9FbGVtZW50TGlzdGVuZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWw7Ci0KLS8qKgotKiBUaGlzIGlzIHdoZXJlIHdlIHN0b3JlIGFsbCB0aGUgc3RhdGUgZGF0YSB0aGF0IHZhcmlvdXMgVUlzCi0qIChzdWNoIGFzIHRoZSBOZXdXU0RMQ3JlYXRpb25XaXphcmQpIGNhcHR1cmUgZnJvbSB0aGUgdXNlcgotKiBhbmQgdGhlbiBuZWVkIHRvIHByb2Nlc3MuCi0qLwotcHVibGljIGludGVyZmFjZSBFbGVtZW50TGlzdGVuZXIKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAvKioKLSAgKiBDYWxsZWQgd2hlbiBhIHByb3BlcnR5IGlzIGFkZGVkIHRvIHRoZSBtb2RlbC4KLSAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IGNvbnRhaW5pbmcgdGhlIG1vZGVsLCBwcm9wZXJ0eSBhbmQgdmFsdWUuCi0gICovCi0gIHB1YmxpYyB2b2lkIHByb3BlcnR5QWRkZWQgKCBQcm9wZXJ0eUFkZEV2ZW50IGV2ZW50ICk7Ci0KLSAgLyoqCi0gICogQ2FsbGVkIHdoZW4gYSBwcm9wZXJ0eSBpbiB0aGUgbW9kZWwgY2hhbmdlcy4KLSAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IGNvbnRhaW5pbmcgdGhlIG1vZGVsLCBwcm9wZXJ0eSwgb2xkIHZhbHVlCi0gICogYW5kIG5ldyB2YWx1ZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgcHJvcGVydHlDaGFuZ2VkICggUHJvcGVydHlDaGFuZ2VFdmVudCBldmVudCApOwotCi0gIC8qKgotICAqIENhbGxlZCB3aGVuIGEgcHJvcGVydHkgaW4gdGhlIG1vZGVsIGlzIHJlbW92ZWQuCi0gICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBjb250YWluaW5nIHRoZSBtb2RlbCwgcHJvcGVydHkgYW5kIG9sZCB2YWx1ZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgcHJvcGVydHlSZW1vdmVkICggUHJvcGVydHlSZW1vdmVFdmVudCBldmVudCApOwotCi0gIC8qKgotICAqIENhbGxlZCB3aGVuIGEgcHJvcGVydHkgaXMgYWRkZWQgdG8gdGhlIG1vZGVsLgotICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgY29udGFpbmluZyB0aGUgbW9kZWwsIHByb3BlcnR5IGFuZCB2YWx1ZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgcmVsQWRkZWQgKCBSZWxBZGRFdmVudCBldmVudCApOwotCi0gIC8qKgotICAqIENhbGxlZCB3aGVuIGEgcHJvcGVydHkgaXMgYWRkZWQgdG8gdGhlIG1vZGVsLgotICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgY29udGFpbmluZyB0aGUgbW9kZWwsIHByb3BlcnR5IGFuZCB2YWx1ZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgcmVsUmVtb3ZlZCAoIFJlbFJlbW92ZUV2ZW50IGV2ZW50ICk7Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL01vZGVsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9Nb2RlbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWE1ZGY1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL01vZGVsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbDsKLQotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi0vKioKLSogVGhpcyBpcyB0aGUgYWJzdHJhY3QgY2xhc3MgZm9yIGEgc2ltcGxlIGRhdGEgbW9kZWwgY29uc2lzdGluZyBvZgotKiBhIG5ldHdvcmsgb2YgbmFtZWQgbm9kZXMgKGNsYXNzIE5vZGUpLiBFdmVyeSBub2RlIGNhcnJpZXMgYSBzZXQKLSogb2YgbmFtZWQgcHJvcGVydGllcyAoY2xhc3MgUHJvcGVydHkpLiBOb2RlcyBhcmUgaW50ZXJyZWxhdGVkIGJ5Ci0qIHJlbGF0aW9uc2hpcHMgKGNsYXNzIFJlbCkgYW5kIGNvbm5lY3Rpb25zIChjbGFzcyBDb25uZWN0aW9uKS4KLSogRWFjaCBNb2RlbCBrZWVwcyBhIHJlZ2lzdHJ5IG9mIGFsbCBvZiBpdHMgbm9kZXMsIGFuZCBrZWVwcyBhCi0qIHJlZmVyZW5jZSB0byBvbmUgInJvb3QiIG5vZGUgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHN0YXJ0aW5nCi0qIHBvaW50IGZvciBuYXZpZ2F0aW9uLgotKi8KLXB1YmxpYyBpbnRlcmZhY2UgTW9kZWwKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAvKioKLSAgKiBTZXRzIHRoZSBuYW1lIG9mIHRoZSBtb2RlbC4KLSAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kZWwuCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldE5hbWUgKCBTdHJpbmcgbmFtZSApOwotCi0gIC8qKgotICAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIG1vZGVsLgotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBuYW1lIG9mIHRoZSBtb2RlbC4gVGhpcyBtdXN0IG5vdCBiZSBudWxsLgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUgKCk7Ci0KLSAgLyoqCi0gICogU2V0cyBhIG5vZGUgYXMgdGhlIHJvb3Qgb2YgdGhlIG1vZGVsLiBJZiB0aGUgbm9kZSBkb2VzIG5vdAotICAqIGJlbG9uZyB0byBhIG1vZGVsLCB0aGVuIGl0IGlzIGFkZGVkIGF1dG9tYXRpY2FsbHkuIElmIHRoZQotICAqIG5vZGUgYWxyZWFkeSBiZWxvbmdzIHRvIGFub3RoZXIgbW9kZWwsIHRoZW4gdGhlIHJvb3Qgbm9kZQotICAqIGlzIG5vdCBzZXQgYW5kIG1ldGhvZCByZXR1cm5zIGZhbHNlLgotICAqIEBwYXJhbSByb290IFRoZSBub2RlIHRvIHNldCBhcyB0aGUgcm9vdC4gVGhlIG5vZGUgbXVzdAotICAqIGJlbG9uZyBlaXRoZXIgdG8gdGhpcyBtb2RlbCBvciB0byBubyBtb2RlbC4gVGhpcyBtdXN0Ci0gICogbm90IGJlIG51bGwuCi0gICogQHJldHVybiBib29sZWFuIFRydWUgaWYgdGhlIG5vZGUgd2FzIHNldCBhcyB0aGUgcm9vdC4KLSAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGZhbHNlIGlmIHRoZSBnaXZlbiBub2RlIGFscmVhZHkgYmVsb25ncwotICAqIHRvIGFub3RoZXIgbW9kZWwuCi0gICovCi0gIHB1YmxpYyBib29sZWFuIHNldFJvb3RFbGVtZW50ICggRWxlbWVudCByb290ICk7Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgcm9vdCBub2RlLiBUaGlzIG1ldGhvZCBhbHdheXMgcmV0dXJucyBhIG5vZGUKLSAgKiBleGNlcHQgb24gYW4gZW1wdHkgTW9kZWwuIElmIHNldFJvb3ROb2RlKCkgaGFzIG5vdCBiZWVuCi0gICogY2FsbGVkLCBvciBpZiB0aGUgbGFzdCByb290IG5vZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgbW9kZWwsCi0gICogdGhlbiB0aGUgbWV0aG9kIHdpbGwgc2VsZWN0IGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5IG5vZGUgYXMKLSAgKiB0aGUgcm9vdC4gVGhpcyBtZXRob2Qgd2lsbCBjb25zaXN0ZW50bHkgcmV0dXJuIHRoZSBzYW1lIG5vZGUKLSAgKiB1bnRpbCBlaXRoZXIKLSAgKiAoYSkgc2V0Um9vdE5vZGUoKSBpcyBjYWxsZWQgd2l0aCBhIGRpZmZlcmVudCBub2RlIG9yCi0gICogKGIpIHJlbW92ZU5vZGUoKSBpcyBjYWxsZWQgdG8gcmVtb3ZlIHRoZSBub2RlIGZyb20gdGhlIG1vZGVsLgotICAqIEByZXR1cm4gTm9kZSBUaGUgY3VycmVudCByb290IG5vZGUsIG9yIG51bGwgaWYgdGhlIG1vZGVsIGlzIGVtcHR5LgotICAqLwotCi0gIHB1YmxpYyBFbGVtZW50IGdldFJvb3RFbGVtZW50ICgpOwotCi0gIC8qKgotICAqIEdldCB0aGUgZWxlbWVudHMgdGhhdCBoYXZlIHRoaXMgbmFtZQotICAqIEBwYXJhbSBTdHJpbmcgbmFtZSB0aGUgbmFtZSBvZiB0aGUgZWxlbWVudCAKLSAgKiBAcmV0dXJuIFZlY3RvciBhIHZlY3RvciBvZiBlbGVtZW50cyB0aGF0IGhhdmUgdGhpcyBuYW1lCi0gICogVGhlc2UgZWxlbWVudHMgbWF5IGJlIG9mIGRpZmZlcmVudCB0eXBlcwotICAqKi8KLQotICBwdWJsaWMgVmVjdG9yIGdldEVsZW1lbnRzQnlOYW1lKFN0cmluZyBuYW1lKTsKLQotICAvKioKLSAgKiBBZGRzIGEgbm9kZSB0byB0aGUgbW9kZWwuIElmIHRoZSBub2RlIGFscmVhZHkgYmVsb25ncyB0byBhbm90aGVyCi0gICogbW9kZWwgdGhlbiBpdCB3aWxsIG5vdCBiZSBhZGRlZC4KLSAgKiBAcGFyYW0gbm9kZSBUaGUgbm9kZSB0byBhZGQuIFRoaXMgbXVzdCBub3QgYmUgbnVsbC4KLSAgKiBAcmV0dXJuIGJvb2xlYW4gVHJ1ZSBpZiB0aGUgbm9kZSB3YXMgYWRkZWQgc3VjY2Vzc2Z1bGx5LgotICAqIFRoaXMgbWV0aG9kIHJldHVybnMgZmFsc2UgaWYgdGhlIGdpdmVuIG5vZGUgYWxyZWFkeSBiZWxvbmdzIHRvCi0gICogdGhlIGN1cnJlbnQgbW9kZWwgb3IgdG8gYW5vdGhlciBtb2RlbC4KLSAgKi8KLSAgcHVibGljIGJvb2xlYW4gYWRkRWxlbWVudCAoIEVsZW1lbnQgZWxlbWVudCApOwotCi0gIC8qKgotICAqIFJlbW92ZXMgYSBub2RlIGZyb20gdGhlIG1vZGVsLgotICAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIHJlbW92ZS4gVGhpcyBtdXN0IG5vdCBiZSBudWxsLgotICAqIEByZXR1cm4gYm9vbGVhbiBUcnVlIGlmIHRoZSBub2RlIHdhcyByZW1vdmVkIHN1Y2Nlc3NmdWxseS4KLSAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGZhbHNlIGlmIHRoZSBnaXZlbiBub2RlIGRvZXMgbm90IGJlbG9uZwotICAqIHRvIHRoaXMgbW9kZWwuCi0gICovCi0gIHB1YmxpYyBib29sZWFuIHJlbW92ZUVsZW1lbnQgKCBFbGVtZW50IGVsZW1lbnQgKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIGFuIGVudW1lcmF0aW9uIG9mIGFsbCBub2RlcyBpbiB0aGUgbW9kZWwgYW5kIGluIG5vCi0gICogcGFydGljdWxhciBvcmRlciwKLSAgKiBAcmV0dXJuIEVudW1lcmF0aW9uIEFuIGVudW1lcmF0aW9uIG9mIGFsbCBub2RlcyBpbiB0aGUgbW9kZWwuCi0gICogVGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBudWxsLgotICAqLwotICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0RWxlbWVudHMgKCk7Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIG5vZGVzIGluIHRoZSBtb2RlbC4KLSAgKiBAcmV0dXJuIGludCBUaGUgbnVtYmVyIG9mIG5vZGVzIGluIHRoZSBtb2RlbC4KLSAgKiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuCi0gICovCi0gIHB1YmxpYyBpbnQgZ2V0TnVtYmVyT2ZFbGVtZW50cyAoKTsKLQotICAvKioKLSAgKiBEZXRlcm1pbmVzIGlmIHRoaXMgbW9kZWwgY29udGFpbnMgdGhlIGdpdmVuIG5vZGUuCi0gICogQHBhcmFtIG5vZGUgVGhlIG5vZGUgdG8gY2hlY2sgZm9yLiBUaGlzIG11c3Qgbm90IGJlIG51bGwuCi0gICogQHJldHVybiBib29sZWFuIFRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIG1vZGVsIGNvbnRhaW5zIHRoZSBub2RlLgotICAqLwotICBwdWJsaWMgYm9vbGVhbiBjb250YWluc0VsZW1lbnQgKCBFbGVtZW50IGVsZW1lbnQgKTsKLQotICAvKgotICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBwcm92aWRlIHRoZSBuZXh0IG51bWJlciBpbiB0aGUgcXVldWUgZm9yIHRoZSBNVUlECi0gICoKLSAgKi8KLSAgcHVibGljIGludCBnZXRVbmlxdWVOdW1iZXIoKTsKLQotICAvKgotICAqIGhlcmVzIHdoYXQgd2UgY2FsbCBmcm9tIHRoZSBlbGVtZW50Ci0gICovCi0gIHB1YmxpYyBTdHJpbmcgbWFrZU1VSUQoU3RyaW5nIG5hbWUpOwotCi0KLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUHJvcGVydHkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL1Byb3BlcnR5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2M2QyMWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUHJvcGVydHkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWw7Ci0KLS8qKgotKiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBjbGFzcyBmb3IgcHJvcGVydGllcyBvZiBhIE5vZGUuCi0qIEV2ZXJ5IHByb3BlcnR5IGhhcyBhbiBpbW11dGFibGUgbmFtZSBhbmQgYSB2YWx1ZSBvZiB0eXBlIE9iamVjdC4KLSovCi1wdWJsaWMgaW50ZXJmYWNlIFByb3BlcnR5Ci17Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgLyoqCi0gICogRXZlcnkgTm9kZSBoYXMgYSBwcm9wZXJ0eSBjYWxsZWQgIm5hbWUiIHRoYXQgaXMgZXF1aXZhbGVudAotICAqIHRvIGFuZCBrZXB0IHN5bmNocm9uaXplZCB3aXRoIE5vZGUuZ2V0TmFtZSgpIGFuZCBOb2RlLnNldE5hbWUoKS4KLSAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRSA9ICJuYW1lIjsKLQotICAvKioKLSAgKiBSZXR1cm5zIGEgc2hhbGxvdyBjbG9uZSBvZiB0aGlzIDxjb2RlPlByb3BlcnR5PC9jb2RlPi4KLSAgKiBQcm9wZXJ0eSBrZXkgYW5kIHZhbHVlIHJlZmVyZW5jZXMgYXJlIGNsb25lZCwKLSAgKiBidXQgdGhlIHZhbHVlIG9iamVjdHMgdGhlbXNlbHZlcyBhcmUgbm90IGNsb25lZC4KLSAgKiBAcmV0dXJuIFByb3BlcnR5IEEgbmV3IFByb3BlcnR5LgotICAqLwotICBwdWJsaWMgUHJvcGVydHkgc2hhbGxvd0Nsb25lICgpOwotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhpcyBub2RlLgotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBuYW1lIG9mIHRoaXMgbm9kZS4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lICgpOwotCi0gIC8qKgotICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoaXMgcHJvcGVydHkuCi0gICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuIEFueSBwcmV2aW91cyB2YWx1ZSBpcyByZXBsYWNlZC4KLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0VmFsdWUgKCBPYmplY3QgdmFsdWUgKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5LgotICAqIEByZXR1cm4gT2JqZWN0IFRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5LCBwb3NzaWJseSBudWxsLgotICAqLwotICBwdWJsaWMgT2JqZWN0IGdldFZhbHVlICgpOwotCi0gIC8qKgotICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgYXMgYSBzdHJpbmcuCi0gICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdG8gc2V0LiBBbnkgcHJldmlvdXMgdmFsdWUgaXMgcmVwbGFjZWQuCi0gICogVGhlIHR5cGUgb2YgdGhlIHByZXZpb3VzIHZhbHVlLCBpZiBhbnksIGlzIG9mIG5vIGNvbnNlcXVlbmNlLgotICAqLwotICBwdWJsaWMgdm9pZCBzZXRWYWx1ZUFzU3RyaW5nICggU3RyaW5nIHZhbHVlICk7Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSBhcyBhIHN0cmluZy4KLSAgKiBAcmV0dXJuIFN0cmluZyB0aGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSBhcyBhIHN0cmluZywgcG9zc2libHkgbnVsbC4KLSAgKiBJZiB0aGUgc2V0IHZhbHVlIGlzIGFuIGFyYml0cmFyeSBPYmplY3QsIHRoZW4gT2JqZWN0LnRvU3RyaW5nKCkgaXMKLSAgKiByZXR1cm5lZC4KLSAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRWYWx1ZUFzU3RyaW5nICgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUHJvcGVydHlBZGRFdmVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUHJvcGVydHlBZGRFdmVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTI3Y2ExLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL1Byb3BlcnR5QWRkRXZlbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWw7Ci0KLS8qKgotKiBDYXJyaWVzIGRhdGEgcmVsZXZhbnQgdG8gd2hlbiBhIHByb3BlcnR5IGlzIGFkZGVkIHRvIHRoZSBtb2RlbC4KLSovCi1wdWJsaWMgY2xhc3MgUHJvcGVydHlBZGRFdmVudAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIC8qKgotICAqIFRoZSBtb2RlbCB0aGUgY2hhbmdlZC4KLSAgKi8KLSAgcHJvdGVjdGVkIEJhc2ljRWxlbWVudCBmRWxlbWVudDsKLQotICAvKioKLSAgKiBUaGUgcHJvcGVydHkgdGhhdCB3YXMgYWRkZWQuCi0gICovCi0gIHByb3RlY3RlZCBQcm9wZXJ0eSBmUHJvcGVydHk7Ci0KLSAKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHRoYXQgY2hhbmdlZC4KLSAgICogQHBhcmFtIHByb3BlcnR5IFRoZSBwcm9wZXJ0eSB0aGF0IHdhcyBhZGRlZC4KLSAgICogQHBhcmFtIHZhbHVlIFRoZSBwcm9wZXJ0eSdzIHZhbHVlLgotICAgKi8KLSAgcHVibGljIFByb3BlcnR5QWRkRXZlbnQgKCBCYXNpY0VsZW1lbnQgZWxlbWVudCwgUHJvcGVydHkgcHJvcGVydHkpCi0gIHsKLSAgICBmRWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgZlByb3BlcnR5ID0gcHJvcGVydHk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbW9kZWwgdGhhdCBjaGFuZ2VkICh0aGF0IHByb2R1Y2VkIHRoaXMgZXZlbnQpLgotICAgKiBAcmV0dXJuIFRpbnlNb2RlbCBUaGUgbW9kZWwgdGhhdCBjaGFuZ2VkLgotICAgKi8KLSAgcHVibGljIEJhc2ljRWxlbWVudCBnZXRFbGVtZW50ICgpCi0gIHsKLSAgICByZXR1cm4gZkVsZW1lbnQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbW9kZWwgcHJvcGVydHkgdGhhdCB3YXMgYWRkZWQuCi0gICAqIEByZXR1cm4gVGlueU1vZGVsIFRoZSBwcm9wZXJ0eSB0aGF0IHdhcyBhZGRlZC4KLSAgICovCi0gIHB1YmxpYyBQcm9wZXJ0eSBnZXRQcm9wZXJ0eSAoKQotICB7Ci0gICAgcmV0dXJuIGZQcm9wZXJ0eTsKLSAgfQotCi0gIAotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9Qcm9wZXJ0eUNoYW5nZUV2ZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9Qcm9wZXJ0eUNoYW5nZUV2ZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZjAxMzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUHJvcGVydHlDaGFuZ2VFdmVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbDsKLQotLyoqCi0qIENhcnJpZXMgZGF0YSByZWxldmFudCB0byB3aGVuIGEgcHJvcGVydHkgaXMgY2hhbmdlZCBpbiB0aGUgbW9kZWwuCi0qLwotcHVibGljIGNsYXNzIFByb3BlcnR5Q2hhbmdlRXZlbnQKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAvKioKLSAgKiBUaGUgbW9kZWwgdGhlIGNoYW5nZWQuCi0gICovCi0gIHByb3RlY3RlZCBCYXNpY0VsZW1lbnQgZkVsZW1lbnQ7Ci0KLSAgLyoqCi0gICogVGhlIHByb3BlcnR5IHRoYXQgY2hhbmdlZC4KLSAgKi8KLSAgcHJvdGVjdGVkIFByb3BlcnR5IGZQcm9wZXJ0eTsKLQotICAvKioKLSAgKiBUaGUgcHJvcGVydHkncyBvbGQgdmFsdWUuCi0gICovCi0gIHByb3RlY3RlZCBQcm9wZXJ0eSBmT2xkUHJvcGVydHk7Ci0KLSAgIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogQHBhcmFtIG1vZGVsIFRoZSBtb2RlbCB0aGF0IGNoYW5nZWQuCi0gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgdGhhdCBjaGFuZ2VkLgotICAgKiBAcGFyYW0gb2xkVmFsdWUgVGhlIHByb3BlcnR5J3Mgb2xkIHZhbHVlLgotICAgKiBAcGFyYW0gbmV3VmFsdWUgVGhlIHByb3BlcnR5J3MgbmV3IHZhbHVlLgotICAgKi8KLSAgcHVibGljIFByb3BlcnR5Q2hhbmdlRXZlbnQgKCBCYXNpY0VsZW1lbnQgZWxlbWVudCAsIFByb3BlcnR5IHByb3BlcnR5LCBQcm9wZXJ0eSBvbGRQcm9wZXJ0eSApCi0gIHsKLSAgICBmRWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgZlByb3BlcnR5ID0gcHJvcGVydHk7Ci0gICAgZk9sZFByb3BlcnR5ID0gb2xkUHJvcGVydHk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbW9kZWwgdGhhdCBjaGFuZ2VkICh0aGF0IHByb2R1Y2VkIHRoaXMgZXZlbnQpLgotICAgKiBAcmV0dXJuIFRpbnlNb2RlbCBUaGUgbW9kZWwgdGhhdCBjaGFuZ2VkLgotICAgKi8KLSAgcHVibGljIEJhc2ljRWxlbWVudCBnZXRFbGVtZW50ICgpCi0gIHsKLSAgICByZXR1cm4gZkVsZW1lbnQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbW9kZWwgcHJvcGVydHkgdGhhdCBjaGFuZ2VkLgotICAgKiBAcmV0dXJuIFRpbnlNb2RlbCBUaGUgcHJvcGVydHkgdGhhdCBjaGFuZ2VkLgotICAgKi8KLSAgcHVibGljIFByb3BlcnR5IGdldFByb3BlcnR5ICgpCi0gIHsKLSAgICByZXR1cm4gZlByb3BlcnR5OwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1vZGVsIHByb3BlcnR5J3Mgb2xkIHZhbHVlLgotICAgKiBAcmV0dXJuIFRpbnlNb2RlbCBUaGUgcHJvcGVydHkncyBvbGQgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgUHJvcGVydHkgZ2V0T2xkUHJvcGVydHkgKCkKLSAgewotICAgIHJldHVybiBmT2xkUHJvcGVydHk7Ci0gIH0KLQotICAKLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUHJvcGVydHlSZW1vdmVFdmVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUHJvcGVydHlSZW1vdmVFdmVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODFhMTgzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL1Byb3BlcnR5UmVtb3ZlRXZlbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWw7Ci0KLS8qKgotKiBDYXJyaWVzIGRhdGEgcmVsZXZhbnQgdG8gd2hlbiBhIHByb3BlcnR5IGlzIHJlbW92ZWQgZnJvbSB0aGUgbW9kZWwuCi0qLwotcHVibGljIGNsYXNzIFByb3BlcnR5UmVtb3ZlRXZlbnQKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAvKioKLSAgKiBUaGUgbW9kZWwgdGhlIGNoYW5nZWQuCi0gICovCi0gIHByb3RlY3RlZCBCYXNpY0VsZW1lbnQgZkVsZW1lbnQ7Ci0KLSAgLyoqCi0gICogVGhlIHByb3BlcnR5IHRoYXQgd2FzIHJlbW92ZWQuCi0gICovCi0gIHByb3RlY3RlZCBQcm9wZXJ0eSBmUHJvcGVydHk7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHRoYXQgY2hhbmdlZC4KLSAgICogQHBhcmFtIHByb3BlcnR5IFRoZSBwcm9wZXJ0eSB0aGF0IHdhcyByZW1vdmVkLgotICAgKiBAcGFyYW0gdmFsdWUgVGhlIHByb3BlcnR5J3MgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgUHJvcGVydHlSZW1vdmVFdmVudCAoIEJhc2ljRWxlbWVudCBlbGVtZW50LCBQcm9wZXJ0eSBwcm9wZXJ0eSkKLSAgewotICAgIGZFbGVtZW50ID0gZWxlbWVudDsKLSAgICBmUHJvcGVydHkgPSBwcm9wZXJ0eTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtb2RlbCB0aGF0IGNoYW5nZWQgKHRoYXQgcHJvZHVjZWQgdGhpcyBldmVudCkuCi0gICAqIEByZXR1cm4gVGlueU1vZGVsIFRoZSBtb2RlbCB0aGF0IGNoYW5nZWQuCi0gICAqLwotICBwdWJsaWMgQmFzaWNFbGVtZW50IGdldEVsZW1lbnQgKCkKLSAgewotICAgIHJldHVybiBmRWxlbWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtb2RlbCBwcm9wZXJ0eSB0aGF0IHdhcyByZW1vdmVkLgotICAgKiBAcmV0dXJuIFRpbnlNb2RlbCBUaGUgcHJvcGVydHkgdGhhdCB3YXMgcmVtb3ZlZC4KLSAgICovCi0gIHB1YmxpYyBQcm9wZXJ0eSBnZXRQcm9wZXJ0eSAoKQotICB7Ci0gICAgcmV0dXJuIGZQcm9wZXJ0eTsKLSAgfQotCi19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL1JlbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUmVsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmYjI5MmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUmVsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZGF0YW1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotCi0vKioKLSogVGhpcyBpcyB0aGUgYWJzdHJhY3QgY2xhc3MgZm9yIHJlbGF0aW9uc2hpcHMgaW4gYSBNb2RlbC4KLSovCi1wdWJsaWMgaW50ZXJmYWNlIFJlbAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIC8qKgotICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhpcyByZWxhdGlvbnNoaXAuIFJlbGF0aW9uc2hpcCBuYW1lcwotICAqIGNhbm5vdCBiZSBjaGFuZ2VkLgotICAqIEByZXR1cm4gU3RyaW5nIFRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSAoKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBub2RlIHRoYXQgb3ducyB0aGlzIHJlbGF0aW9uc2hpcC4KLSAgKiBAcmV0dXJuIE5vZGUgVGhlIG5vZGUgdGhhdCBvd25zIHRoaXMgcmVsYXRpb25zaGlwLgotICAqIFRoaXMgbWV0aG9kIG5ldmVyIHJldHVybnMgbnVsbCwgdGhhdCBpcywgcmVsYXRpb25zaGlwcwotICAqIGNhbm5vdCBleGlzdCBpbiB0aGUgYWJzZW5jZSBvZiBhIG5vZGUuCi0gICovCi0gIHB1YmxpYyBFbGVtZW50IGdldFNvdXJjZUVsZW1lbnQoKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIGFuIGVudW1lcmF0aW9uIG9mIGFsbCBub2RlcyBpbiB0aGlzIHJlbGF0aW9uc2hpcC4KLSAgKiBAcmV0dXJuIEVudW1lcmF0aW9uIFRoZSBub2RlcyBpbiB0aGlzIHJlbGF0aW9uc2hpcC4KLSAgKiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIG51bGwuCi0gICovCi0gIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRUYXJnZXRFbGVtZW50cyAoKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhpcyByZWxhdGlvbnNoaXAuCi0gICogQHJldHVybiBpbnQgVGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGlzIHJlbGF0aW9uc2hpcC4KLSAgKiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuCi0gICovCi0gIHB1YmxpYyBpbnQgZ2V0TnVtYmVyT2ZUYXJnZXRFbGVtZW50cyAoKTsKLQotICAvKioKLSAgKiBBZGRzIGEgY29ubmVjdGlvbiB0byB0aGlzIHJlbGF0aW9uc2hpcC4gVGhpcyBtZXRob2QgaXMKLSAgKiBpbnRlbmRlZCBmb3IgdXNlIGJ5IGRlcml2YXRpb25zIG9mIHRoZSBNb2RlbCBmcmFtZXdvcmssCi0gICogbm90IGJ5IHVzZXJzIG9mIHRoZSBmcmFtZXdvcmsuIENvbm5lY3Rpb24gb2JqZWN0cyBzaG91bGQKLSAgKiBvbmx5IGJlIGNvbnN0cnVjdGVkLCBhZGRlZCwgcmVtb3ZlZCBhbmQgcmV0cmlldmVkIGJ5Ci0gICogaW1wbGVtZW50YXRpb25zIG9mIHRoZSBOb2RlIGFuZCBSZWwgaW50ZXJmYWNlcy4KLSAgKiBAcGFyYW0gY29ubmVjdGlvbiBUaGUgY29ubmVjdGlvbiB0byBhZGQuCi0gICovCi0gIHB1YmxpYyB2b2lkIGFkZENvbm5lY3Rpb24gKCBDb25uZWN0aW9uIGNvbm5lY3Rpb24gKTsKLQotICAvKioKLSAgKiBSZW1vdmVzIGEgY29ubmVjdGlvbiBmcm9tIHRoaXMgcmVsYXRpb25zaGlwLiBUaGlzIG1ldGhvZCBpcwotICAqIGludGVuZGVkIGZvciB1c2UgYnkgZGVyaXZhdGlvbnMgb2YgdGhlIE1vZGVsIGZyYW1ld29yaywKLSAgKiBub3QgYnkgdXNlcnMgb2YgdGhlIGZyYW1ld29yay4gQ29ubmVjdGlvbiBvYmplY3RzIHNob3VsZAotICAqIG9ubHkgYmUgY29uc3RydWN0ZWQsIGFkZGVkLCByZW1vdmVkIGFuZCByZXRyaWV2ZWQgYnkKLSAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIE5vZGUgYW5kIFJlbCBpbnRlcmZhY2VzLgotICAqIEBwYXJhbSBjb25uZWN0aW9uIFRoZSBjb25uZWN0aW9uIHRvIHJlbW92ZS4KLSAgKiBAcmV0dXJuIGJvb2xlYW4gVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiB3YXMgZm91bmQgYW5kIHJlbW92ZWQuCi0gICovCi0gIHB1YmxpYyBib29sZWFuIHJlbW92ZUNvbm5lY3Rpb24gKCBDb25uZWN0aW9uIGNvbm5lY3Rpb24gKTsKLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBDb25uZWN0aW9uIG9iamVjdCBmb3IgdGhlIGdpdmVuIHRhcmdldCBub2RlLgotICAqIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIGZvciB1c2UgYnkgZGVyaXZhdGlvbnMgb2YgdGhlIE1vZGVsCi0gICogZnJhbWV3b3JrLCBub3QgYnkgdXNlcnMgb2YgdGhlIGZyYW1ld29yay4gQ29ubmVjdGlvbiBvYmplY3RzCi0gICogc2hvdWxkIG9ubHkgYmUgY29uc3RydWN0ZWQsIGFkZGVkLCByZW1vdmVkIGFuZCByZXRyaWV2ZWQgYnkKLSAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIE5vZGUgYW5kIFJlbCBpbnRlcmZhY2VzLgotICAqIEBwYXJhbSB0YXJnZXROb2RlIFRoZSBub2RlIHRvIGZpbmQgdGhlIENvbm5lY3Rpb24gdG8uCi0gICogQHJldHVybiBDb25uZWN0aW9uIFRoZSBjb25uZWN0aW9uLCBvciBudWxsIGlmIG5vbmUuCi0gICovCi0gIHB1YmxpYyBDb25uZWN0aW9uIGdldENvbm5lY3Rpb25UbyAoIEVsZW1lbnQgdGFyZ2V0RWxlbWVudCApOwotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9SZWxBZGRFdmVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUmVsQWRkRXZlbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNjYzQ5ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2RhdGFtb2RlbC9SZWxBZGRFdmVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5kYXRhbW9kZWw7Ci0KLS8qKgotKiBDYXJyaWVzIGRhdGEgcmVsZXZhbnQgdG8gd2hlbiBhIHByb3BlcnR5IGlzIGFkZGVkIHRvIHRoZSBtb2RlbC4KLSovCi1wdWJsaWMgY2xhc3MgUmVsQWRkRXZlbnQKLXsKLQotICAvLyBDb3B5cmlnaHQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIihjKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDIuIjsKLQotICAvKioKLSAgKiBUaGUgbW9kZWwgdGhlIGNoYW5nZWQuCi0gICovCi0gIHByb3RlY3RlZCBDb25uZWN0aW9uIGZPdXRCb3VuZDsKLQotICAvKioKLSAgKiBUaGUgbW9kZWwgdGhlIGNoYW5nZWQuCi0gICovCi0gIHByb3RlY3RlZCBDb25uZWN0aW9uIGZJbkJvdW5kOwotCi0gIC8qKgotICAqIFRoZSBwcm9wZXJ0eSB0aGF0IHdhcyBhZGRlZC4KLSAgKi8KLSAgcHJvdGVjdGVkIFByb3BlcnR5IGZQcm9wZXJ0eTsKLQotIAotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIEBwYXJhbSBtb2RlbCBUaGUgbW9kZWwgdGhhdCBjaGFuZ2VkLgotICAgKiBAcGFyYW0gcHJvcGVydHkgVGhlIHByb3BlcnR5IHRoYXQgd2FzIGFkZGVkLgotICAgKiBAcGFyYW0gdmFsdWUgVGhlIHByb3BlcnR5J3MgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgUmVsQWRkRXZlbnQgKENvbm5lY3Rpb25bXSBwYWlyKQotICB7Ci0gICAgIGZPdXRCb3VuZCA9IHBhaXJbQmFzaWNDb25uZWN0aW9uLk9VVEJPVU5EXTsKLSAgICAgZkluQm91bmQgPSBwYWlyW0Jhc2ljQ29ubmVjdGlvbi5JTkJPVU5EXTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBvdXRib3VuZCBjb25uZWN0aW9uIHRoYXQgY2hhbmdlZCAKLSAgKiovCi0gIHB1YmxpYyBDb25uZWN0aW9uIGdldE91dEJvdW5kQ29ubmVjdGlvbiAoKQotICB7Ci0gICAgcmV0dXJuIGZPdXRCb3VuZDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBjaGFuZ2VkIHJlbCBuYW1lIAotICAqKi8KLSAgcHVibGljIFN0cmluZyBnZXRPdXRCb3VuZFJlbE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGZPdXRCb3VuZC5nZXRSZWwoKS5nZXROYW1lKCk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgY2hhbmdlZCByZWwKLSAgKiovCi0gIHB1YmxpYyBSZWwgZ2V0T3V0Qm91bmRSZWwoKQotICB7Ci0gICAgcmV0dXJuIGZPdXRCb3VuZC5nZXRSZWwoKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBjaGFuZ2VkIHJlbCBuYW1lIAotICAqKi8KLSAgcHVibGljIFN0cmluZyBnZXRJbkJvdW5kUmVsTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gZkluQm91bmQuZ2V0UmVsKCkuZ2V0TmFtZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGNoYW5nZWQgcmVsCi0gICoqLwotICBwdWJsaWMgUmVsIGdldEluQm91bmRSZWwoKQotICB7Ci0gICAgcmV0dXJuIGZJbkJvdW5kLmdldFJlbCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG91dGJvdW5kIGVsZW1lbnQgdGhhdCBjaGFuZ2VkIAotICAqKi8KLSAgcHVibGljIEVsZW1lbnQgZ2V0UGFyZW50RWxlbWVudCAoKQotICB7Ci0gICAgcmV0dXJuIGZPdXRCb3VuZC5nZXRFbGVtZW50KCk7Ci0gIH0KLQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGluYm91bmQgY29ubmVjdGlvbiB0aGF0IGNoYW5nZWQgCi0gICoqLwotICBwdWJsaWMgRWxlbWVudCBnZXRDaGlsZEVsZW1lbnQgKCkKLSAgewotICAgIHJldHVybiBmSW5Cb3VuZC5nZXRFbGVtZW50KCk7Ci0gIH0KLQotICAKLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUmVsUmVtb3ZlRXZlbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZGF0YW1vZGVsL1JlbFJlbW92ZUV2ZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlOWE2YjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9kYXRhbW9kZWwvUmVsUmVtb3ZlRXZlbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGFtb2RlbDsKLQotLyoqCi0qIENhcnJpZXMgZGF0YSByZWxldmFudCB0byB3aGVuIGEgcHJvcGVydHkgaXMgYWRkZWQgdG8gdGhlIG1vZGVsLgotKi8KLXB1YmxpYyBjbGFzcyBSZWxSZW1vdmVFdmVudAotewotCi0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIC8qKgotICAqIFRoZSBtb2RlbCB0aGUgY2hhbmdlZC4KLSAgKi8KLSAgcHJvdGVjdGVkIENvbm5lY3Rpb24gZk91dEJvdW5kOwotCi0gIC8qKgotICAqIFRoZSBtb2RlbCB0aGUgY2hhbmdlZC4KLSAgKi8KLSAgcHJvdGVjdGVkIENvbm5lY3Rpb24gZkluQm91bmQ7Ci0KLSAgLyoqCi0gICogVGhlIHByb3BlcnR5IHRoYXQgd2FzIGFkZGVkLgotICAqLwotICBwcm90ZWN0ZWQgUHJvcGVydHkgZlByb3BlcnR5OwotCi0gCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogQHBhcmFtIG1vZGVsIFRoZSBtb2RlbCB0aGF0IGNoYW5nZWQuCi0gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgdGhhdCB3YXMgYWRkZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSBUaGUgcHJvcGVydHkncyB2YWx1ZS4KLSAgICovCi0gIHB1YmxpYyBSZWxSZW1vdmVFdmVudCAoQ29ubmVjdGlvbltdIHBhaXIpCi0gIHsKLSAgICAgZk91dEJvdW5kID0gcGFpcltCYXNpY0Nvbm5lY3Rpb24uT1VUQk9VTkRdOwotICAgICBmSW5Cb3VuZCA9IHBhaXJbQmFzaWNDb25uZWN0aW9uLklOQk9VTkRdOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1vZGVsIHRoYXQgY2hhbmdlZCAodGhhdCBwcm9kdWNlZCB0aGlzIGV2ZW50KS4KLSAgICogQHJldHVybiBUaW55TW9kZWwgVGhlIG1vZGVsIHRoYXQgY2hhbmdlZC4KLSAgICovCi0gIHB1YmxpYyBDb25uZWN0aW9uIGdldE91dEJvdW5kICgpCi0gIHsKLSAgICByZXR1cm4gZk91dEJvdW5kOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1vZGVsIHByb3BlcnR5IHRoYXQgd2FzIGFkZGVkLgotICAgKiBAcmV0dXJuIFRpbnlNb2RlbCBUaGUgcHJvcGVydHkgdGhhdCB3YXMgYWRkZWQuCi0gICAqLwotICBwdWJsaWMgQ29ubmVjdGlvbiBnZXRJbkJvdW5kICgpCi0gIHsKLSAgICByZXR1cm4gZkluQm91bmQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgY2hhbmdlZCByZWwgbmFtZSAKLSAgKiovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0T3V0Qm91bmRSZWxOYW1lKCkKLSAgewotICAgIHJldHVybiBmT3V0Qm91bmQuZ2V0UmVsKCkuZ2V0TmFtZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGNoYW5nZWQgcmVsCi0gICoqLwotICBwdWJsaWMgUmVsIGdldE91dEJvdW5kUmVsKCkKLSAgewotICAgIHJldHVybiBmT3V0Qm91bmQuZ2V0UmVsKCk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgY2hhbmdlZCByZWwgbmFtZSAKLSAgKiovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5Cb3VuZFJlbE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGZJbkJvdW5kLmdldFJlbCgpLmdldE5hbWUoKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBjaGFuZ2VkIHJlbAotICAqKi8KLSAgcHVibGljIFJlbCBnZXRJbkJvdW5kUmVsKCkKLSAgewotICAgIHJldHVybiBmSW5Cb3VuZC5nZXRSZWwoKTsKLSAgfQotICAKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgb3V0Ym91bmQgZWxlbWVudCB0aGF0IGNoYW5nZWQgCi0gICoqLwotICBwdWJsaWMgRWxlbWVudCBnZXRPdXRCb3VuZEVsZW1lbnQgKCkKLSAgewotICAgIHJldHVybiBmT3V0Qm91bmQuZ2V0RWxlbWVudCgpOwotICB9Ci0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpbmJvdW5kIGNvbm5lY3Rpb24gdGhhdCBjaGFuZ2VkIAotICAqKi8KLSAgcHVibGljIEVsZW1lbnQgZ2V0SW5ib3VuZEVsZW1lbnQgKCkKLSAgewotICAgIHJldHVybiBmSW5Cb3VuZC5nZXRFbGVtZW50KCk7Ci0gIH0KLSAgCi0KLSAgCi19Ci0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4ZWN1dGFibGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeGVjdXRhYmxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NGE2ODUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4ZWN1dGFibGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotCi0vKioKLSogQWxsIEV4dGVuc2lvbnMgd2l0aCBleGVjdHV0YWJsZSBleHRlbnNpb25zIHNob3VsZCBpbXBsZW1lbnQgdGhpcyAKLSogdG8gZml0IG91ciBmcmFtZXdvcmsKLSovCi1wdWJsaWMgaW50ZXJmYWNlIFdlYlNlcnZpY2VFeGVjdXRhYmxlCi17Ci0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotICAvKioKLSAgKlJldHVybnMgYSB3aXphcmQgZnJhZ21lbnQgZm9yIHRoaXMgZXhlbnRpb24gdHlwZSAKLSAgKgotICAqLwotICBwdWJsaWMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24gZ2V0RmluaXNoQ29tbWFuZCgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDA2OTIxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeHRlbnNpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotCi0KLS8qKgotKiBUaGlzIHJlcHJlc2VudHMgYW4gZXh0ZW5zaW9uIGluIHRoZSBwbHVnaW4gcmVnaXN0cnkgCi0qIEl0IGpvYiBpcyB0byBhY3QgYXMgYSBwcm94eSB0byB0aGUgaWNvbmZpZ2VsZW1lbnQKLSovCi1wdWJsaWMgaW50ZXJmYWNlIFdlYlNlcnZpY2VFeHRlbnNpb24KLXsKLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgLyoqCi0gICogSWYgdGhlIGV4dGVuc2lvbiBoYXMgY29kZSB0aGF0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkIG9yIGEgZnJhZ21lbnQgYWRkZWQKLSAgKiBAcmV0dXJuIFdlYlNlcnZpY2VFeGVjdXRhYmxlIHRoaXMgaW50ZXJmYWNlIGhvbGRzIGV4ZWN1dGFibGUgY29kZSBhbmQgYSAKLSAgKiBmcmFnbWVudAotICAqLwotICBwdWJsaWMgT2JqZWN0IGdldFdlYlNlcnZpY2VFeGVjdXRhYmxlRXh0ZW5zaW9uKCk7Ci0KLSAgLyoqCi0gICogVGhpcyBpcyB0aGUgY29uZmlnIGVsZW1lbnQgdGhhdCBob2xkcyB0aGUgZXh0ZW5zaW9uIGluZm8KLSAgKiBAcGFyYW0gSUNvbmZpZ3VyYXRpb25FbGVtZW50IEV4dGVuc2lvbiBlbGVtZW50Ci0gICovCi0gIHB1YmxpYyB2b2lkIHNldENvbmZpZ0VsZW1lbnQoSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNvbmZpZ0VsZW1lbnQpOwotIAotICAvKioKLSAgKiBJZiB0aGUgZXh0ZW5zaW9uIGhhcyBjb2RlIHRoYXQgCi0gICogQHJldHVybiBJQ29uZmlndXJhdGlvbkVsZW1lbnQgRXh0ZW5zaW9uIGVsZW1lbnQKLSAgKi8KLSAgcHVibGljIElDb25maWd1cmF0aW9uRWxlbWVudCBnZXRDb25maWdFbGVtZW50KCk7Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvbkltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeHRlbnNpb25JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2MmY3ZGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvbkltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkVudmlyb25tZW50U2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklMb2c7Ci0KLQotCi0KLQotLyoqCi0qIFRoaXMgcmVwcmVzZW50cyBhbiBleHRlbnNpb24gaW4gdGhlIHBsdWdpbiByZWdpc3RyeSAKLSogSXQgam9iIGlzIHRvIGFjdCBhcyBhIHByb3h5IHRvIHRoZSBpY29uZmlnZWxlbWVudAotKi8KLXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlRXh0ZW5zaW9uSW1wbCBpbXBsZW1lbnRzIFdlYlNlcnZpY2VFeHRlbnNpb24KLXsKLQotCXByaXZhdGUgSUxvZwlsb2dfOwotCQotICAvKgotICAqIFRoZSBDb25maWdFbGVtZW50IHRoYXQgaG9sZHMgZXh0ZW5zaW9uIGluZm8KLSAgKi8KLSAgcHJvdGVjdGVkIElDb25maWd1cmF0aW9uRWxlbWVudCBjb25maWdFbGVtZW50XzsKLQotICAvKgotICAqIFRoZSBleHRlbnNpb24gZXhlY3V0YWJsZSAKLSAgKi8KLSAgcHJvdGVjdGVkIFdlYlNlcnZpY2VFeGVjdXRhYmxlIHdlYlNlcnZpY2VFeGVjdXRhYmxlXzsKLSAgCi0KLSAgcHVibGljIFdlYlNlcnZpY2VFeHRlbnNpb25JbXBsKElDb25maWd1cmF0aW9uRWxlbWVudCBjb25maWdFbGVtZW50KQotICB7Ci0gICAgY29uZmlnRWxlbWVudF8gPSBjb25maWdFbGVtZW50OwotICAgIGxvZ18gPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZUxvZygpOwotICB9Ci0KLSAgLy8gQ29weXJpZ2h0Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0KLSAgLyoqCi0gICogSWYgdGhlIGV4dGVuc2lvbiBoYXMgY29kZSB0aGF0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkIG9yIGEgZnJhZ21lbnQgYWRkZWQKLSAgKiBAcmV0dXJuIFdlYlNlcnZpY2VFeGVjdXRhYmxlIHRoaXMgaW50ZXJmYWNlIGhvbGRzIGV4ZWN1dGFibGUgY29kZSBhbmQgYSAKLSAgKiBmcmFnbWVudAotICAqLwotICBwdWJsaWMgT2JqZWN0IGdldFdlYlNlcnZpY2VFeGVjdXRhYmxlRXh0ZW5zaW9uKCkKLSAgewotICAgIGlmKHdlYlNlcnZpY2VFeGVjdXRhYmxlXyAhPSBudWxsKSByZXR1cm4gd2ViU2VydmljZUV4ZWN1dGFibGVfOwotCi0gICAgdHJ5ewotICAgICAgcmV0dXJuIGNvbmZpZ0VsZW1lbnRfLmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oImNsYXNzIik7Ci0gICAgfWNhdGNoIChDb3JlRXhjZXB0aW9uIGUpewotICAgICAgbG9nXy5sb2coSUxvZy5FUlJPUiwgNTAyOSwgdGhpcywgImdldFdlYlNlcnZpY2VFeGVjdXRhYmxlRXh0ZW5zaW9uIixlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAqIFRoaXMgaXMgdGhlIGNvbmZpZyBlbGVtZW50IHRoYXQgaG9sZHMgdGhlIGV4dGVuc2lvbiBpbmZvCi0gICogQHBhcmFtIElDb25maWd1cmF0aW9uRWxlbWVudCBFeHRlbnNpb24gZWxlbWVudAotICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb25maWdFbGVtZW50KElDb25maWd1cmF0aW9uRWxlbWVudCBjb25maWdFbGVtZW50KQotICB7Ci0gICAgY29uZmlnRWxlbWVudF8gPSBjb25maWdFbGVtZW50OwotICB9CQotCi0gIC8qKgotICAqIFRoaXMgaXMgdGhlIGNvbmZpZyBlbGVtZW50IHRoYXQgaG9sZHMgdGhlIGV4dGVuc2lvbiBpbmZvCi0gICogQHJldHVybiBJQ29uZmlndXJhdGlvbkVsZW1lbnQgRXh0ZW5zaW9uIGVsZW1lbnQKLSAgKi8KLSAgcHVibGljIElDb25maWd1cmF0aW9uRWxlbWVudCBnZXRDb25maWdFbGVtZW50KCkKLSAgewotICAgIHJldHVybiBjb25maWdFbGVtZW50XzsKLSAgfQotICAKLSAgLyoqCi0gICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBiZWluZyB1c2VkCi0gICogQHJldHVybiBTdHJpbmcgbmFtZSBvZiB0aGlzIGV4dGVuc2lvbgotICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGdldENvbmZpZ0VsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoICJuYW1lIiApOwotICB9Ci0KLQotfQotCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeHRlbnNpb25SZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2NmVjY2UuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0OwotCi0KLS8qKgotKiBSZXR1cm5zIHRoZSBuYW1lcyBvZiB0aGUgZXh0ZW5zaW9ucyBmb3IgYSBnaXZlbiBleHRlbnNpb24tcG9pbnQgCi0qIGFsc28gcmV0dXJucyB0aGUgZXh0ZW5zaW9uIG9iamVjdHMgCi0qCi0qLwotcHVibGljIGludGVyZmFjZSBXZWJTZXJ2aWNlRXh0ZW5zaW9uUmVnaXN0cnkKLXsKLSAgCi0gIC8qKgotICAqIFJldHVybnMgdGhlIG5hbWVzIG9mIGFsbCByZWdpc3RlcmVkIGV4dGVuc2lvbnMKLSAgKiBAcmV0dXJuIFRoZSBuYW1lcyBvZiBhbGwgcmVnaXN0ZXJlZCBleHRlbnNpb25zLgotICAqLwotICBwdWJsaWMgU3RyaW5nW10gZ2V0V2ViU2VydmljZUV4dGVuc2lvbk5hbWVzICgpOwotICAKLSAgLyoqCi0gICogUmV0dXJucyB0aGUgZXh0ZW5zaW9uIG9iamVjdCBvZiB0aGUgZ2l2ZW4gbmFtZQotICAqQHJldHVybiBXZWJTZXJ2aWNlRXh0ZW5zaW9uIG9iamVjdAotICAqLwotICBwdWJsaWMgV2ViU2VydmljZUV4dGVuc2lvbiBnZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5TmFtZSggU3RyaW5nIG5hbWUpOwotCi0gIC8qKgotICAqIFJldHVybnMgQWxsIGV4dGVudGlvbiBvYmplY3RzIGluIHRoaXMgcmVnaXN0cnkKLSAgKkByZXR1cm4gV2ViU2VydmljZUV4dGVuc2lvbiBvYmplY3RzCi0gICovCi0gIHB1YmxpYyBXZWJTZXJ2aWNlRXh0ZW5zaW9uW10gZ2V0V2ViU2VydmljZUV4dGVuc2lvbnMoKTsKLSAgCi0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHQvV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWQ0ZGY1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0L1dlYlNlcnZpY2VFeHRlbnNpb25SZWdpc3RyeUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0OwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmRhdGEuTGFiZWxzQW5kSWRzOwotCi0KLS8qKgotKiBUaGlzIGlzIGEgZ2VuZXJpYyByZWdpc3RyeSB3aGljaCBzZXRzIHVwIGdlbmVyYWwgY29kZSBpbiBoYW5kbGluZyAgIAotKiBJQ29uZmlnRWxlbWVudHMgZm9yIGFuIGV4dGVuc2lvbgotKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBXZWJTZXJ2aWNlRXh0ZW5zaW9uUmVnaXN0cnlJbXBsIGltcGxlbWVudHMgV2ViU2VydmljZUV4dGVuc2lvblJlZ2lzdHJ5Ci17Ci0gIC8vIENvcHlyaWdodAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotICAKLSAgcHJpdmF0ZSBIYXNodGFibGUgbmFtZUV4dGVuc2lvblRhYmxlXzsKLSAgcHJpdmF0ZSBWZWN0b3IgaWRfOwotICBwcml2YXRlIFZlY3RvciBsYWJlbF87Ci0gIHByaXZhdGUgTGFiZWxzQW5kSWRzIGxhYmVsc2FuZGlkc187Ci0gICAgCi0gIHB1YmxpYyBXZWJTZXJ2aWNlRXh0ZW5zaW9uUmVnaXN0cnlJbXBsKCkKLSAgewotICAgIG5hbWVFeHRlbnNpb25UYWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgbGFiZWxfID0gbmV3IFZlY3RvcigpOwotICAgIGlkXyA9IG5ldyBWZWN0b3IoKTsKLSAgICBsb2FkRXh0ZW5zaW9ucygpOwotICB9Ci0gIAotICAvKioKLSAgKiBDaGlsZHJlbiByZWdpc3RyaWVzIHdpbGwgaGF2ZSBkaWZmZXJlbnQgZXh0ZW5zaW9uIHR5cGVzIAotICAqIEByZXR1cm4gV2Vic2VydmljZUV4dGVuc2lvbiBob2xkcyBhIGNvbmZpZyBlbGVtCi0gICogZm9yIHRoYXQgZXh0ZW5zaW9uIGNhcGFibGUgb2YgY3JlYXRpbmcgYW4gZXhlY3V0YWJsZSBmaWxlCi0gICovCi0gIHB1YmxpYyBhYnN0cmFjdCBXZWJTZXJ2aWNlRXh0ZW5zaW9uIGNyZWF0ZVdlYlNlcnZpY2VFeHRlbnNpb24oSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNvbmZpZ0VsZW1lbnQpOwotCi0gIC8qKgotICAqIENoaWxkcmVuIG11c3QgaW1wbGVtZW50IGhvdyB0aGV5IGdldCB0aGUgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gCi0gICogQHJldHVybiBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBhbiBhcnJheSBvZiBlbGVtZW50cyBwYXJ0aWN1bGFyIHRvIHRoYXQKLSAgKiBleHRlbnNpb24KLSAgKi8KLSAgcHVibGljIGFic3RyYWN0IElDb25maWd1cmF0aW9uRWxlbWVudFtdIGdldENvbmZpZ0VsZW1lbnRzKCk7Ci0KLSAgLyoKLSAgKiBMb2FkcyBXZWJTZXJ2aWNlRXh0ZW5zaW9ucyBmb3IgV2ViU2VydmljZUNsaWVudFRlc3QgaW50byB0aGlzIHJlZ2lzdHJ5LgotICAqIFRoaXMgaXMgZG9uZSBieSBxdWVyeWluZyB0aGUgcGx1Z2luIHJlZ2lzdHJ5IGZvciBhbGwgZXh0ZW5zaW9ucwotICAqIHRoYXQgZXh0ZW5kIHdlYlNlcnZpY2VDbGllbnRUZXN0ICAKLSAgKi8KLSAgcHJpdmF0ZSB2b2lkIGxvYWRFeHRlbnNpb25zICgpCi0gIHsgICAgCi0gICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY29uZmlnID0gZ2V0Q29uZmlnRWxlbWVudHMoKTsKLQotICAgIGZvcihpbnQgaWR4PTA7IGlkeDxjb25maWcubGVuZ3RoOyBpZHgrKykgCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW0gPSBjb25maWdbaWR4XTsKLSAgICAgIFN0cmluZyBsYWJlbCA9IGVsZW0uZ2V0QXR0cmlidXRlKCAibGFiZWwiICk7Ci0gICAgICBTdHJpbmcgaWQgPSAgIGVsZW0uZ2V0QXR0cmlidXRlKCAiaWQiICk7ICAgICAgCi0gICAgICBXZWJTZXJ2aWNlRXh0ZW5zaW9uIHdlYlNlcnZpY2VFeHRlbnNpb24gPSBjcmVhdGVXZWJTZXJ2aWNlRXh0ZW5zaW9uKGVsZW0pOwkKLSAgICAgIG5hbWVFeHRlbnNpb25UYWJsZV8ucHV0KGxhYmVsLHdlYlNlcnZpY2VFeHRlbnNpb24pOwotICAgICAgbGFiZWxfLmFkZChsYWJlbCk7Ci0gICAgICBpZF8uYWRkKGlkKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBuYW1lcyBvZiBhbGwgcmVnaXN0ZXJlZCBleHRlbnNpb25zCi0gICogQHJldHVybiBUaGUgbmFtZXMgb2YgYWxsIHJlZ2lzdGVyZWQgZXh0ZW5zaW9ucy4KLSAgKi8KLSAgcHVibGljIFN0cmluZ1tdIGdldFdlYlNlcnZpY2VFeHRlbnNpb25OYW1lcyAoKQotICB7Ci0gICAgcmV0dXJuIChTdHJpbmdbXSluYW1lRXh0ZW5zaW9uVGFibGVfLmtleVNldCgpLnRvQXJyYXkoIG5ldyBTdHJpbmdbMF0gKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIG5hbWVzIGFuZCBJZHMgCi0gICAqLwotICBwdWJsaWMgTGFiZWxzQW5kSWRzIGdldExhYmVsc0FuZElEcygpCi0gIHsKLSAgCWxhYmVsc2FuZGlkc18gPSBuZXcgTGFiZWxzQW5kSWRzKCk7Ci0gIAlsYWJlbHNhbmRpZHNfLnNldExhYmVsc18oKFN0cmluZ1tdKWxhYmVsXy50b0FycmF5KCBuZXcgU3RyaW5nWzBdICkpOwotICAJbGFiZWxzYW5kaWRzXy5zZXRJZHNfKChTdHJpbmdbXSlpZF8udG9BcnJheSggbmV3IFN0cmluZ1swXSApKTsKLSAgCXJldHVybiBsYWJlbHNhbmRpZHNfOwotICB9Ci0gIAotICAvKioKLSAgKiBSZXR1cm5zIHRoZSBleHRlbnNpb24gb2JqZWN0IG9mIHRoZSBnaXZlbiBuYW1lCi0gICogQHJldHVybiBXZWJTZXJ2aWNlRXh0ZW5zaW9uIG9iamVjdAotICAqLwotICBwdWJsaWMgV2ViU2VydmljZUV4dGVuc2lvbiBnZXRXZWJTZXJ2aWNlRXh0ZW5zaW9uc0J5TmFtZSggU3RyaW5nIG5hbWUpCi0gIHsKLSAgICByZXR1cm4gKFdlYlNlcnZpY2VFeHRlbnNpb24pbmFtZUV4dGVuc2lvblRhYmxlXy5nZXQobmFtZSk7Ci0gIH0KLQotICAvKioKLSAgKiBSZXR1cm5zIEFsbCBleHRlbnRpb24gb2JqZWN0cyBpbiB0aGlzIHJlZ2lzdHJ5Ci0gICpAcmV0dXJuIFdlYlNlcnZpY2VFeHRlbnNpb24gb2JqZWN0cwotICAqLwotICBwdWJsaWMgV2ViU2VydmljZUV4dGVuc2lvbltdIGdldFdlYlNlcnZpY2VFeHRlbnNpb25zKCkKLSAgewotICAgIHJldHVybiAoV2ViU2VydmljZUV4dGVuc2lvbltdKW5hbWVFeHRlbnNpb25UYWJsZV8udmFsdWVzKCkudG9BcnJheSggbmV3IFdlYlNlcnZpY2VFeHRlbnNpb25bMF0gKTsKLSAgfQotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9BYnN0cmFjdENsaWVudEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvQWJzdHJhY3RDbGllbnRGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTI3N2ZmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9BYnN0cmFjdENsaWVudEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRmFjdG9yeUZyYWdtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVdlYlNlcnZpY2VDbGllbnQ7Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENsaWVudEZyYWdtZW50IGV4dGVuZHMgQ29tbWFuZEZhY3RvcnlGcmFnbWVudAotewotICBwcm90ZWN0ZWQgSVdlYlNlcnZpY2VDbGllbnQgd2ViU2VydmljZUNsaWVudF87Ci0gIHByb3RlY3RlZCBJRW52aXJvbm1lbnQgICAgICAgZW52aXJvbm1lbnRfOwotICBwcm90ZWN0ZWQgSUNvbnRleHQgICAgICAgICAgY29udGV4dF87Ci0gIHByb3RlY3RlZCBJU2VsZWN0aW9uICAgICAgICBzZWxlY3Rpb25fOwotICBwcm90ZWN0ZWQgU3RyaW5nICAgICAgICAgICAgcHJvamVjdF87Ci0gIHByb3RlY3RlZCBTdHJpbmcgICAgICAgICAgICBtb2R1bGVfOwotICBwcm90ZWN0ZWQgU3RyaW5nICAgICAgICAgICAgZWFyUHJvamVjdF87Ci0gIHByb3RlY3RlZCBTdHJpbmcgICAgICAgICAgICBlYXJfOwotICAgIAotICBwdWJsaWMgQWJzdHJhY3RDbGllbnRGcmFnbWVudCgpCi0gIHsKLSAgfQotICAKLSAgcHJvdGVjdGVkIEFic3RyYWN0Q2xpZW50RnJhZ21lbnQoIEFic3RyYWN0Q2xpZW50RnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0Jc3VwZXIoIGZyYWdtZW50ICk7IAotCQotCXdlYlNlcnZpY2VDbGllbnRfID0gZnJhZ21lbnQud2ViU2VydmljZUNsaWVudF87Ci0JZW52aXJvbm1lbnRfICAgICAgPSBmcmFnbWVudC5lbnZpcm9ubWVudF87Ci0JY29udGV4dF8gICAgICAgICAgPSBmcmFnbWVudC5jb250ZXh0XzsKLQlzZWxlY3Rpb25fICAgICAgICA9IGZyYWdtZW50LnNlbGVjdGlvbl87Ci0JbW9kdWxlXyAgICAgICAgICAgPSBmcmFnbWVudC5tb2R1bGVfOwotCWVhcl8gICAgICAgICAgICAgID0gZnJhZ21lbnQuZWFyXzsKLSAgfQotICAgIAotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlKCBJV2ViU2VydmljZUNsaWVudCB3ZWJTZXJ2aWNlICkKLSAgewotCXdlYlNlcnZpY2VDbGllbnRfID0gd2ViU2VydmljZTsgIAotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RW52aXJvbm1lbnQoIElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCApCi0gIHsKLQllbnZpcm9ubWVudF8gPSBlbnZpcm9ubWVudDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q29udGV4dCggSUNvbnRleHQgY29udGV4dCApCi0gIHsJICAKLQljb250ZXh0XyA9IGNvbnRleHQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlbGVjdGlvbiggSVNlbGVjdGlvbiBzZWxlY3Rpb24gKQotICB7Ci0Jc2VsZWN0aW9uXyA9IHNlbGVjdGlvbjsgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KCBTdHJpbmcgcHJvamVjdCkKLSAgewotICAgIHByb2plY3RfID0gcHJvamVjdDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0TW9kdWxlKCBTdHJpbmcgbW9kdWxlICkKLSAgewotCW1vZHVsZV8gPSBtb2R1bGU7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVhclByb2plY3QoU3RyaW5nIGVhclByb2plY3QpCi0gIHsKLSAgICBlYXJQcm9qZWN0XyA9IGVhclByb2plY3Q7ICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RWFyKCBTdHJpbmcgZWFyICkKLSAgewotCWVhcl8gPSBlYXI7ICAKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL0Fic3RyYWN0U2VydmljZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvQWJzdHJhY3RTZXJ2aWNlRnJhZ21lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdmNmQ3Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvQWJzdHJhY3RTZXJ2aWNlRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmZyYWdtZW50LkNvbW1hbmRGYWN0b3J5RnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JV2ViU2VydmljZTsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U2VydmljZUZyYWdtZW50IGV4dGVuZHMgQ29tbWFuZEZhY3RvcnlGcmFnbWVudAotewotICBwcm90ZWN0ZWQgSVdlYlNlcnZpY2Ugd2ViU2VydmljZV87Ci0gIHByb3RlY3RlZCBJRW52aXJvbm1lbnQgZW52aXJvbm1lbnRfOwotICBwcm90ZWN0ZWQgSUNvbnRleHQgICAgY29udGV4dF87Ci0gIHByb3RlY3RlZCBJU2VsZWN0aW9uICBzZWxlY3Rpb25fOwotICBwcm90ZWN0ZWQgU3RyaW5nICAgICAgcHJvamVjdF87Ci0gIHByb3RlY3RlZCBTdHJpbmcgICAgICBtb2R1bGVfOwotICBwcm90ZWN0ZWQgU3RyaW5nICAgICAgZWFyUHJvamVjdF87Ci0gIHByb3RlY3RlZCBTdHJpbmcgICAgICBlYXJfOwotICAgIAotICBwdWJsaWMgQWJzdHJhY3RTZXJ2aWNlRnJhZ21lbnQoKQotICB7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBBYnN0cmFjdFNlcnZpY2VGcmFnbWVudCggQWJzdHJhY3RTZXJ2aWNlRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0Jc3VwZXIoIGZyYWdtZW50ICk7IAotCQotCXdlYlNlcnZpY2VfICA9IGZyYWdtZW50LndlYlNlcnZpY2VfOwotCWVudmlyb25tZW50XyA9IGZyYWdtZW50LmVudmlyb25tZW50XzsKLQljb250ZXh0XyAgICAgPSBmcmFnbWVudC5jb250ZXh0XzsKLQlzZWxlY3Rpb25fICAgPSBmcmFnbWVudC5zZWxlY3Rpb25fOwotCW1vZHVsZV8gICAgICA9IGZyYWdtZW50Lm1vZHVsZV87Ci0JZWFyXyAgICAgICAgID0gZnJhZ21lbnQuZWFyXzsKLSAgfQotICAgIAotICBwdWJsaWMgdm9pZCBzZXRXZWJTZXJ2aWNlKCBJV2ViU2VydmljZSB3ZWJTZXJ2aWNlICkKLSAgewotCXdlYlNlcnZpY2VfID0gd2ViU2VydmljZTsgIAotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RW52aXJvbm1lbnQoIElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCApCi0gIHsKLQllbnZpcm9ubWVudF8gPSBlbnZpcm9ubWVudDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q29udGV4dCggSUNvbnRleHQgY29udGV4dCApCi0gIHsJICAKLQljb250ZXh0XyA9IGNvbnRleHQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFNlbGVjdGlvbiggSVNlbGVjdGlvbiBzZWxlY3Rpb24gKQotICB7Ci0Jc2VsZWN0aW9uXyA9IHNlbGVjdGlvbjsgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRQcm9qZWN0KCBTdHJpbmcgcHJvamVjdCkKLSAgewotICAgIHByb2plY3RfID0gcHJvamVjdDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0TW9kdWxlKCBTdHJpbmcgbW9kdWxlICkKLSAgewotCW1vZHVsZV8gPSBtb2R1bGU7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVhclByb2plY3QoU3RyaW5nIGVhclByb2plY3QpCi0gIHsKLSAgICBlYXJQcm9qZWN0XyA9IGVhclByb2plY3Q7ICAKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RWFyKCBTdHJpbmcgZWFyICkKLSAgewotCWVhcl8gPSBlYXI7ICAKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL0Fzc2VtYmxlQ2xpZW50RnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9Bc3NlbWJsZUNsaWVudEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMmI1M2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL0Fzc2VtYmxlQ2xpZW50RnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUyOSAgIDE0MTQyMiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuSUNvbW1hbmRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLlNpbXBsZUNvbW1hbmRGYWN0b3J5OwotCi1wdWJsaWMgY2xhc3MgQXNzZW1ibGVDbGllbnRGcmFnbWVudCBleHRlbmRzIEFic3RyYWN0Q2xpZW50RnJhZ21lbnQgCi17Ci0gIHB1YmxpYyBBc3NlbWJsZUNsaWVudEZyYWdtZW50KCkKLSAgewotICB9Ci0gIAotICBwcm90ZWN0ZWQgQXNzZW1ibGVDbGllbnRGcmFnbWVudCggQXNzZW1ibGVDbGllbnRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLQlzdXBlciggZnJhZ21lbnQgKTsgIAotICB9Ci0gIAotICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgCi0gIHsKLQlyZXR1cm4gbmV3IEFzc2VtYmxlQ2xpZW50RnJhZ21lbnQoKTsKLSAgfQotCi0gIHB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgZ2V0SUNvbW1hbmRGYWN0b3J5KCkgCi0gIHsKLQlJQ29tbWFuZEZhY3RvcnkgZmFjdG9yeSA9IG51bGw7Ci0JCi0JaWYoIHdlYlNlcnZpY2VDbGllbnRfID09IG51bGwgfHwgY29udGV4dF8gPT0gbnVsbCB8fCAhY29udGV4dF8uZ2V0QXNzZW1ibGUoKSkKLQl7Ci0JICBmYWN0b3J5ID0gbmV3IFNpbXBsZUNvbW1hbmRGYWN0b3J5KCBuZXcgVmVjdG9yKCkgKTsKLQl9Ci0JZWxzZQotCXsKLQkgIGZhY3RvcnkgPSB3ZWJTZXJ2aWNlQ2xpZW50Xy5hc3NlbWJsZSggZW52aXJvbm1lbnRfLCBjb250ZXh0Xywgc2VsZWN0aW9uXywgcHJvamVjdF8sIGVhclByb2plY3RfKTsJCi0JfQotCQotCXJldHVybiBmYWN0b3J5OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvQXNzZW1ibGVTZXJ2aWNlRnJhZ21lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9Bc3NlbWJsZVNlcnZpY2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2M5ZDg5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9Bc3NlbWJsZVNlcnZpY2VGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuU2ltcGxlQ29tbWFuZEZhY3Rvcnk7Ci0KLXB1YmxpYyBjbGFzcyBBc3NlbWJsZVNlcnZpY2VGcmFnbWVudCBleHRlbmRzIEFic3RyYWN0U2VydmljZUZyYWdtZW50IAotewotICBwdWJsaWMgQXNzZW1ibGVTZXJ2aWNlRnJhZ21lbnQoKQotICB7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBBc3NlbWJsZVNlcnZpY2VGcmFnbWVudCggQXNzZW1ibGVTZXJ2aWNlRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0Jc3VwZXIoIGZyYWdtZW50ICk7ICAKLSAgfQotICAKLSAgcHVibGljIE9iamVjdCBjbG9uZSgpIAotICB7Ci0JcmV0dXJuIG5ldyBBc3NlbWJsZVNlcnZpY2VGcmFnbWVudCgpOwotICB9Ci0KLSAgcHVibGljIElDb21tYW5kRmFjdG9yeSBnZXRJQ29tbWFuZEZhY3RvcnkoKSAKLSAgewotCUlDb21tYW5kRmFjdG9yeSBmYWN0b3J5ID0gbnVsbDsKLQkKLQlpZiggd2ViU2VydmljZV8gPT0gbnVsbCB8fCBjb250ZXh0XyA9PSBudWxsIHx8ICFjb250ZXh0Xy5nZXRBc3NlbWJsZSgpKQotCXsKLQkgIGZhY3RvcnkgPSBuZXcgU2ltcGxlQ29tbWFuZEZhY3RvcnkoIG5ldyBWZWN0b3IoKSApOwotCX0KLQllbHNlCi0JewotCSAgZmFjdG9yeSA9IHdlYlNlcnZpY2VfLmFzc2VtYmxlKCBlbnZpcm9ubWVudF8sIGNvbnRleHRfLCBzZWxlY3Rpb25fLCBwcm9qZWN0XywgZWFyUHJvamVjdF8pOwkKLQl9Ci0JCi0JcmV0dXJuIGZhY3Rvcnk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9EZXBsb3lDbGllbnRGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL0RlcGxveUNsaWVudEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ZWZjMjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL0RlcGxveUNsaWVudEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAyMjEgICAxMTkxMTEgcnNpbmhhQGNhLmlibS5jb20gLSBSdXBhbSBLdWVobmVyCi0gKiAyMDA2MDUyOSAgIDE0MTQyMiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4dGVuc2lvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuSUNvbW1hbmRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLlNpbXBsZUNvbW1hbmRGYWN0b3J5OwotCi1wdWJsaWMgY2xhc3MgRGVwbG95Q2xpZW50RnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdENsaWVudEZyYWdtZW50IAotewotICBwdWJsaWMgRGVwbG95Q2xpZW50RnJhZ21lbnQoKQotICB7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBEZXBsb3lDbGllbnRGcmFnbWVudCggRGVwbG95Q2xpZW50RnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0Jc3VwZXIoIGZyYWdtZW50ICk7ICAKLSAgfQotICAKLSAgcHVibGljIE9iamVjdCBjbG9uZSgpIAotICB7Ci0JcmV0dXJuIG5ldyBEZXBsb3lDbGllbnRGcmFnbWVudCgpOwotICB9Ci0KLSAgcHVibGljIElDb21tYW5kRmFjdG9yeSBnZXRJQ29tbWFuZEZhY3RvcnkoKSAKLSAgewotCUlDb21tYW5kRmFjdG9yeSBmYWN0b3J5ID0gbnVsbDsKLQkKLQlpZiggd2ViU2VydmljZUNsaWVudF8gPT0gbnVsbCB8fCBjb250ZXh0XyA9PSBudWxsIHx8ICFjb250ZXh0Xy5nZXREZXBsb3koKSkKLQl7Ci0JICBmYWN0b3J5ID0gbmV3IFNpbXBsZUNvbW1hbmRGYWN0b3J5KCBuZXcgVmVjdG9yKCkgKTsKLQl9Ci0JZWxzZQotCXsKLQkgIGZhY3RvcnkgPSB3ZWJTZXJ2aWNlQ2xpZW50Xy5kZXBsb3koIGVudmlyb25tZW50XywgY29udGV4dF8sIHNlbGVjdGlvbl8sIHByb2plY3RfLCBlYXJQcm9qZWN0Xyk7CQotCX0KLQkKLQlyZXR1cm4gZmFjdG9yeTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL0RlcGxveVNlcnZpY2VGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL0RlcGxveVNlcnZpY2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWJlOTlmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9EZXBsb3lTZXJ2aWNlRnJhZ21lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDIyMSAgIDExOTExMSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuU2ltcGxlQ29tbWFuZEZhY3Rvcnk7Ci0KLXB1YmxpYyBjbGFzcyBEZXBsb3lTZXJ2aWNlRnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdFNlcnZpY2VGcmFnbWVudCAKLXsKLSAgcHVibGljIERlcGxveVNlcnZpY2VGcmFnbWVudCgpCi0gIHsKLSAgfQotICAKLSAgcHJvdGVjdGVkIERlcGxveVNlcnZpY2VGcmFnbWVudCggRGVwbG95U2VydmljZUZyYWdtZW50IGZyYWdtZW50ICkKLSAgewotCXN1cGVyKCBmcmFnbWVudCApOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBPYmplY3QgY2xvbmUoKSAKLSAgewotCXJldHVybiBuZXcgRGVwbG95U2VydmljZUZyYWdtZW50KCk7Ci0gIH0KLQotICBwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGdldElDb21tYW5kRmFjdG9yeSgpIAotICB7Ci0JSUNvbW1hbmRGYWN0b3J5IGZhY3RvcnkgPSBudWxsOwotCQotCWlmKCB3ZWJTZXJ2aWNlXyA9PSBudWxsIHx8IGNvbnRleHRfID09IG51bGwgfHwgIWNvbnRleHRfLmdldERlcGxveSgpKQotCXsKLQkgIGZhY3RvcnkgPSBuZXcgU2ltcGxlQ29tbWFuZEZhY3RvcnkoIG5ldyBWZWN0b3IoKSApOwotCX0KLQllbHNlCi0JewotCSAgZmFjdG9yeSA9IHdlYlNlcnZpY2VfLmRlcGxveSggZW52aXJvbm1lbnRfLCBjb250ZXh0Xywgc2VsZWN0aW9uXywgcHJvamVjdF8sIGVhclByb2plY3RfKTsJCi0JfQotCQotCXJldHVybiBmYWN0b3J5OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvRGV2ZWxvcENsaWVudEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvRGV2ZWxvcENsaWVudEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZjhlMjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL0RldmVsb3BDbGllbnRGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuU2ltcGxlQ29tbWFuZEZhY3Rvcnk7Ci0KLXB1YmxpYyBjbGFzcyBEZXZlbG9wQ2xpZW50RnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdENsaWVudEZyYWdtZW50IAotewotICBwdWJsaWMgRGV2ZWxvcENsaWVudEZyYWdtZW50KCkKLSAgewotICB9Ci0gIAotICBwcm90ZWN0ZWQgRGV2ZWxvcENsaWVudEZyYWdtZW50KCBEZXZlbG9wQ2xpZW50RnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0Jc3VwZXIoIGZyYWdtZW50ICk7ICAKLSAgfQotICAKLSAgcHVibGljIE9iamVjdCBjbG9uZSgpIAotICB7Ci0JcmV0dXJuIG5ldyBEZXZlbG9wQ2xpZW50RnJhZ21lbnQoKTsKLSAgfQotCi0gIHB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgZ2V0SUNvbW1hbmRGYWN0b3J5KCkgCi0gIHsKLQlJQ29tbWFuZEZhY3RvcnkgZmFjdG9yeSA9IG51bGw7Ci0JCi0JaWYoIHdlYlNlcnZpY2VDbGllbnRfID09IG51bGwgfHwgY29udGV4dF8gPT0gbnVsbCB8fCAhY29udGV4dF8uZ2V0RGV2ZWxvcCgpICkKLQl7Ci0JICBmYWN0b3J5ID0gbmV3IFNpbXBsZUNvbW1hbmRGYWN0b3J5KCBuZXcgVmVjdG9yKCkgKTsKLQl9Ci0JZWxzZQotCXsKLQkgIGZhY3RvcnkgPSB3ZWJTZXJ2aWNlQ2xpZW50Xy5kZXZlbG9wKCBlbnZpcm9ubWVudF8sIGNvbnRleHRfLCBzZWxlY3Rpb25fLCBwcm9qZWN0XywgZWFyUHJvamVjdF8pOwkKLQl9Ci0JCi0JcmV0dXJuIGZhY3Rvcnk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9EZXZlbG9wU2VydmljZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvRGV2ZWxvcFNlcnZpY2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzUzODZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9EZXZlbG9wU2VydmljZUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHRlbnNpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLklDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5TaW1wbGVDb21tYW5kRmFjdG9yeTsKLQotcHVibGljIGNsYXNzIERldmVsb3BTZXJ2aWNlRnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdFNlcnZpY2VGcmFnbWVudCAKLXsKLSAgcHVibGljIERldmVsb3BTZXJ2aWNlRnJhZ21lbnQoKQotICB7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBEZXZlbG9wU2VydmljZUZyYWdtZW50KCBEZXZlbG9wU2VydmljZUZyYWdtZW50IGZyYWdtZW50ICkKLSAgewotCXN1cGVyKCBmcmFnbWVudCApOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBPYmplY3QgY2xvbmUoKSAKLSAgewotCXJldHVybiBuZXcgRGV2ZWxvcFNlcnZpY2VGcmFnbWVudCgpOwotICB9Ci0KLSAgcHVibGljIElDb21tYW5kRmFjdG9yeSBnZXRJQ29tbWFuZEZhY3RvcnkoKSAKLSAgewotCUlDb21tYW5kRmFjdG9yeSBmYWN0b3J5ID0gbnVsbDsKLQkKLQlpZiggd2ViU2VydmljZV8gPT0gbnVsbCB8fCBjb250ZXh0XyA9PSBudWxsIHx8ICFjb250ZXh0Xy5nZXREZXZlbG9wKCkpCi0JewotCSAgZmFjdG9yeSA9IG5ldyBTaW1wbGVDb21tYW5kRmFjdG9yeSggbmV3IFZlY3RvcigpICk7Ci0JfQotCWVsc2UKLQl7Ci0JICBmYWN0b3J5ID0gd2ViU2VydmljZV8uZGV2ZWxvcCggZW52aXJvbm1lbnRfLCBjb250ZXh0Xywgc2VsZWN0aW9uXywgcHJvamVjdF8sIGVhclByb2plY3RfKTsJCi0JfQotCQotCXJldHVybiBmYWN0b3J5OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvSW5zdGFsbENsaWVudEZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvSW5zdGFsbENsaWVudEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNjM3ZWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL0luc3RhbGxDbGllbnRGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuU2ltcGxlQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci0KLXB1YmxpYyBjbGFzcyBJbnN0YWxsQ2xpZW50RnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdENsaWVudEZyYWdtZW50IAotewotCXByaXZhdGUgSUNvbnRleHQgY29udGV4dF87Ci0JCi0gIHB1YmxpYyBJbnN0YWxsQ2xpZW50RnJhZ21lbnQoKQotICB7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBJbnN0YWxsQ2xpZW50RnJhZ21lbnQoIEluc3RhbGxDbGllbnRGcmFnbWVudCBmcmFnbWVudCApCi0gIHsKLQlzdXBlciggZnJhZ21lbnQgKTsgIAotICB9Ci0gIAotICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgCi0gIHsKLQlyZXR1cm4gbmV3IEluc3RhbGxDbGllbnRGcmFnbWVudCgpOwotICB9Ci0KLSAgcHVibGljIElDb21tYW5kRmFjdG9yeSBnZXRJQ29tbWFuZEZhY3RvcnkoKSAKLSAgewotCUlDb21tYW5kRmFjdG9yeSBmYWN0b3J5ID0gbnVsbDsKLQkKLQlpZiggd2ViU2VydmljZUNsaWVudF8gPT0gbnVsbCB8fCBjb250ZXh0XyA9PSBudWxsIHx8ICFjb250ZXh0Xy5nZXRJbnN0YWxsKCkpCi0JewotCSAgZmFjdG9yeSA9IG5ldyBTaW1wbGVDb21tYW5kRmFjdG9yeSggbmV3IFZlY3RvcigpICk7Ci0JfQotCWVsc2UKLQl7Ci0JICBmYWN0b3J5ID0gd2ViU2VydmljZUNsaWVudF8uaW5zdGFsbCggZW52aXJvbm1lbnRfLCBjb250ZXh0Xywgc2VsZWN0aW9uXywgcHJvamVjdF8sIGVhclByb2plY3RfKTsJCi0JfQotCQotCXJldHVybiBmYWN0b3J5OwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRDb250ZXh0KElDb250ZXh0IGNvbnRleHQpCi0gIHsKLQkgIGNvbnRleHRfPWNvbnRleHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9JbnN0YWxsU2VydmljZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvSW5zdGFsbFNlcnZpY2VGcmFnbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDdlNjQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9JbnN0YWxsU2VydmljZUZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHRlbnNpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLklDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5TaW1wbGVDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JQ29udGV4dDsKLQotcHVibGljIGNsYXNzIEluc3RhbGxTZXJ2aWNlRnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdFNlcnZpY2VGcmFnbWVudCAKLXsKLQlwcml2YXRlIElDb250ZXh0IGNvbnRleHRfOwotCQotICBwdWJsaWMgSW5zdGFsbFNlcnZpY2VGcmFnbWVudCgpCi0gIHsKLSAgfQotICAKLSAgcHJvdGVjdGVkIEluc3RhbGxTZXJ2aWNlRnJhZ21lbnQoIEluc3RhbGxTZXJ2aWNlRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0Jc3VwZXIoIGZyYWdtZW50ICk7ICAKLSAgfQotICAKLSAgcHVibGljIE9iamVjdCBjbG9uZSgpIAotICB7Ci0JcmV0dXJuIG5ldyBJbnN0YWxsU2VydmljZUZyYWdtZW50KCk7Ci0gIH0KLQotICBwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGdldElDb21tYW5kRmFjdG9yeSgpIAotICB7Ci0JSUNvbW1hbmRGYWN0b3J5IGZhY3RvcnkgPSBudWxsOwotCQotCWlmKCB3ZWJTZXJ2aWNlXyA9PSBudWxsIHx8IGNvbnRleHRfID09IG51bGwgfHwgIWNvbnRleHRfLmdldEluc3RhbGwoKSkKLQl7Ci0JICBmYWN0b3J5ID0gbmV3IFNpbXBsZUNvbW1hbmRGYWN0b3J5KCBuZXcgVmVjdG9yKCkgKTsKLQl9Ci0JZWxzZQotCXsKLQkgIGZhY3RvcnkgPSB3ZWJTZXJ2aWNlXy5pbnN0YWxsKCBlbnZpcm9ubWVudF8sIGNvbnRleHRfLCBzZWxlY3Rpb25fLCBwcm9qZWN0XywgZWFyUHJvamVjdF8pOwkKLQl9Ci0JCi0JcmV0dXJuIGZhY3Rvcnk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENvbnRleHQoSUNvbnRleHQgY29udGV4dCkKLSAgewotCSAgY29udGV4dF89Y29udGV4dDsKLSAgfQotICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvZXh0ZW5zaW9ucy9SdW5DbGllbnRGcmFnbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL1J1bkNsaWVudEZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMTliNjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL1J1bkNsaWVudEZyYWdtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA1MjkgICAxNDE0MjIga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHRlbnNpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLklDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5TaW1wbGVDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5JQ29udGV4dDsKLQotcHVibGljIGNsYXNzIFJ1bkNsaWVudEZyYWdtZW50IGV4dGVuZHMgQWJzdHJhY3RDbGllbnRGcmFnbWVudCAKLXsKLQlwcml2YXRlIElDb250ZXh0IGNvbnRleHRfOwotCQotICBwdWJsaWMgUnVuQ2xpZW50RnJhZ21lbnQoKQotICB7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBSdW5DbGllbnRGcmFnbWVudCggUnVuQ2xpZW50RnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0Jc3VwZXIoIGZyYWdtZW50ICk7ICAKLSAgfQotICAKLSAgcHVibGljIE9iamVjdCBjbG9uZSgpIAotICB7Ci0JcmV0dXJuIG5ldyBSdW5DbGllbnRGcmFnbWVudCgpOwotICB9Ci0KLSAgcHVibGljIElDb21tYW5kRmFjdG9yeSBnZXRJQ29tbWFuZEZhY3RvcnkoKSAKLSAgewotCUlDb21tYW5kRmFjdG9yeSBmYWN0b3J5ID0gbnVsbDsKLQkKLQlpZiggd2ViU2VydmljZUNsaWVudF8gPT0gbnVsbCB8fCBjb250ZXh0XyA9PSBudWxsIHx8ICFjb250ZXh0Xy5nZXRSdW4oKSkKLQl7Ci0JICBmYWN0b3J5ID0gbmV3IFNpbXBsZUNvbW1hbmRGYWN0b3J5KCBuZXcgVmVjdG9yKCkgKTsKLQl9Ci0JZWxzZQotCXsKLQkgIGZhY3RvcnkgPSB3ZWJTZXJ2aWNlQ2xpZW50Xy5ydW4oIGVudmlyb25tZW50XywgY29udGV4dF8sIHNlbGVjdGlvbl8sIHByb2plY3RfLCBlYXJQcm9qZWN0Xyk7CQotCX0KLQkKLQlyZXR1cm4gZmFjdG9yeTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0Q29udGV4dChJQ29udGV4dCBjb250ZXh0KQotICB7Ci0JICBjb250ZXh0Xz1jb250ZXh0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvUnVuU2VydmljZUZyYWdtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL2V4dGVuc2lvbnMvUnVuU2VydmljZUZyYWdtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZmU4OTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9leHRlbnNpb25zL1J1blNlcnZpY2VGcmFnbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTI5ICAgMTQxNDIyIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0ZW5zaW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuU2ltcGxlQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuSUNvbnRleHQ7Ci0KLXB1YmxpYyBjbGFzcyBSdW5TZXJ2aWNlRnJhZ21lbnQgZXh0ZW5kcyBBYnN0cmFjdFNlcnZpY2VGcmFnbWVudCAKLXsKLQkKLQlwcml2YXRlIElDb250ZXh0IGNvbnRleHRfOwotCQotICBwdWJsaWMgUnVuU2VydmljZUZyYWdtZW50KCkKLSAgewotICB9Ci0gIAotICBwcm90ZWN0ZWQgUnVuU2VydmljZUZyYWdtZW50KCBSdW5TZXJ2aWNlRnJhZ21lbnQgZnJhZ21lbnQgKQotICB7Ci0Jc3VwZXIoIGZyYWdtZW50ICk7ICAKLSAgfQotICAKLSAgcHVibGljIE9iamVjdCBjbG9uZSgpIAotICB7Ci0JcmV0dXJuIG5ldyBSdW5TZXJ2aWNlRnJhZ21lbnQoKTsKLSAgfQotCi0gIHB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgZ2V0SUNvbW1hbmRGYWN0b3J5KCkgCi0gIHsKLQlJQ29tbWFuZEZhY3RvcnkgZmFjdG9yeSA9IG51bGw7Ci0JCi0JaWYoIHdlYlNlcnZpY2VfID09IG51bGwgfHwgY29udGV4dF8gPT0gbnVsbCB8fCAhY29udGV4dF8uZ2V0UnVuKCkpCi0JewotCSAgZmFjdG9yeSA9IG5ldyBTaW1wbGVDb21tYW5kRmFjdG9yeSggbmV3IFZlY3RvcigpICk7Ci0JfQotCWVsc2UKLQl7Ci0JICBmYWN0b3J5ID0gd2ViU2VydmljZV8ucnVuKCBlbnZpcm9ubWVudF8sIGNvbnRleHRfLCBzZWxlY3Rpb25fLCBwcm9qZWN0XywgZWFyUHJvamVjdF8pOwkKLQl9Ci0JCi0JcmV0dXJuIGZhY3Rvcnk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldENvbnRleHQoSUNvbnRleHQgY29udGV4dCkKLSAgewotCSAgY29udGV4dF89Y29udGV4dDsJICAKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvRGVzY3JpcHRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L0Rlc2NyaXB0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwODA3NDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvRGVzY3JpcHRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogRGVzY3JpcHRpb24uamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ5IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5EZXNjcmlwdGlvbjwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRlc2NyaXB0aW9uI2dldFZhbHVlIDxlbT5WYWx1ZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5EZXNjcmlwdGlvbiNnZXRMYW5nIDxlbT5MYW5nPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZSNnZXREZXNjcmlwdGlvbigpCi0gKiBAbW9kZWwgCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRGVzY3JpcHRpb24gZXh0ZW5kcyBFT2JqZWN0IHsKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5WYWx1ZTwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VmFsdWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+VmFsdWU8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI3NldFZhbHVlKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlI2dldERlc2NyaXB0aW9uX1ZhbHVlKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5TdHJpbmciCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRWYWx1ZSgpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5EZXNjcmlwdGlvbiNnZXRWYWx1ZSA8ZW0+VmFsdWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlZhbHVlPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNnZXRWYWx1ZSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0VmFsdWUoU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkxhbmc8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkxhbmc8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TGFuZzwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0TGFuZyhTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZSNnZXREZXNjcmlwdGlvbl9MYW5nKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5MYW5ndWFnZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JU3RyaW5nIGdldExhbmcoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRGVzY3JpcHRpb24jZ2V0TGFuZyA8ZW0+TGFuZzwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TGFuZzwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0TGFuZygpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0TGFuZyhTdHJpbmcgdmFsdWUpOwotCi19IC8vIERlc2NyaXB0aW9uCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS9Eb2N1bWVudFJvb3QuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L0RvY3VtZW50Um9vdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzA4ODI2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L0RvY3VtZW50Um9vdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogRG9jdW1lbnRSb290LmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OSBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRU1hcDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRmVhdHVyZU1hcDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RG9jdW1lbnQgUm9vdDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRNaXhlZCA8ZW0+TWl4ZWQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290I2dldFhNTE5TUHJlZml4TWFwIDxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRYU0lTY2hlbWFMb2NhdGlvbiA8ZW0+WFNJIFNjaGVtYSBMb2NhdGlvbjwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0RGVzY3JpcHRpb24gPGVtPkRlc2NyaXB0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXROYW1lIDxlbT5OYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRSZWdpc3RyeSA8ZW0+UmVnaXN0cnk8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlI2dldERvY3VtZW50Um9vdCgpCi0gKiBAbW9kZWwgCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRG9jdW1lbnRSb290IGV4dGVuZHMgRU9iamVjdCB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TWl4ZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5GZWF0dXJlTWFwLkVudHJ5fS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk1peGVkPC9lbT4nIGF0dHJpYnV0ZSBsaXN0IGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TWl4ZWQ8L2VtPicgYXR0cmlidXRlIGxpc3QuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZSNnZXREb2N1bWVudFJvb3RfTWl4ZWQoKQotCSAqIEBtb2RlbCB1bmlxdWU9ImZhbHNlIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVGZWF0dXJlTWFwRW50cnkiIG1hbnk9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUZlYXR1cmVNYXAgZ2V0TWl4ZWQoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlhNTE5TIFByZWZpeCBNYXA8L2I+PC9lbT4nIG1hcC4KLQkgKiBUaGUga2V5IGlzIG9mIHR5cGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9LAotCSAqIGFuZCB0aGUgdmFsdWUgaXMgb2YgdHlwZSB7QGxpbmsgamF2YS5sYW5nLlN0cmluZ30sCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT4nIG1hcCBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlhNTE5TIFByZWZpeCBNYXA8L2VtPicgbWFwLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeVBhY2thZ2UjZ2V0RG9jdW1lbnRSb290X1hNTE5TUHJlZml4TWFwKCkKLQkgKiBAbW9kZWwgbWFwVHlwZT0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVTdHJpbmdUb1N0cmluZ01hcEVudHJ5IiBrZXlUeXBlPSJqYXZhLmxhbmcuU3RyaW5nIiB2YWx1ZVR5cGU9ImphdmEubGFuZy5TdHJpbmciIHRyYW5zaWVudD0idHJ1ZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRU1hcCBnZXRYTUxOU1ByZWZpeE1hcCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+WFNJIFNjaGVtYSBMb2NhdGlvbjwvYj48L2VtPicgbWFwLgotCSAqIFRoZSBrZXkgaXMgb2YgdHlwZSB7QGxpbmsgamF2YS5sYW5nLlN0cmluZ30sCi0JICogYW5kIHRoZSB2YWx1ZSBpcyBvZiB0eXBlIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfSwKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPicgbWFwIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+WFNJIFNjaGVtYSBMb2NhdGlvbjwvZW0+JyBtYXAuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZSNnZXREb2N1bWVudFJvb3RfWFNJU2NoZW1hTG9jYXRpb24oKQotCSAqIEBtb2RlbCBtYXBUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiIGtleVR5cGU9ImphdmEubGFuZy5TdHJpbmciIHZhbHVlVHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdHJhbnNpZW50PSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTWFwIGdldFhTSVNjaGVtYUxvY2F0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5EZXNjcmlwdGlvbjwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RGVzY3JpcHRpb248L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RGVzY3JpcHRpb248L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI3NldERlc2NyaXB0aW9uKERlc2NyaXB0aW9uKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeVBhY2thZ2UjZ2V0RG9jdW1lbnRSb290X0Rlc2NyaXB0aW9uKCkKLQkgKiBAbW9kZWwgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSIgdHJhbnNpZW50PSJ0cnVlIiB2b2xhdGlsZT0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRGVzY3JpcHRpb24gZ2V0RGVzY3JpcHRpb24oKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290I2dldERlc2NyaXB0aW9uIDxlbT5EZXNjcmlwdGlvbjwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RGVzY3JpcHRpb248L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI2dldERlc2NyaXB0aW9uKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXREZXNjcmlwdGlvbihEZXNjcmlwdGlvbiB2YWx1ZSk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI3NldE5hbWUoTmFtZSkKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlI2dldERvY3VtZW50Um9vdF9OYW1lKCkKLQkgKiBAbW9kZWwgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSIgdHJhbnNpZW50PSJ0cnVlIiB2b2xhdGlsZT0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JTmFtZSBnZXROYW1lKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXROYW1lIDxlbT5OYW1lPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiBAc2VlICNnZXROYW1lKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXROYW1lKE5hbWUgdmFsdWUpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UmVnaXN0cnk8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlJlZ2lzdHJ5PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlJlZ2lzdHJ5PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiBAc2VlICNzZXRSZWdpc3RyeShSZWdpc3RyeSkKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlI2dldERvY3VtZW50Um9vdF9SZWdpc3RyeSgpCi0JICogQG1vZGVsIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVJlZ2lzdHJ5IGdldFJlZ2lzdHJ5KCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRSZWdpc3RyeSA8ZW0+UmVnaXN0cnk8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlJlZ2lzdHJ5PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiBAc2VlICNnZXRSZWdpc3RyeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0UmVnaXN0cnkoUmVnaXN0cnkgdmFsdWUpOwotCi19IC8vIERvY3VtZW50Um9vdApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvTmFtZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvTmFtZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzNkZDM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L05hbWUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogTmFtZS5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDkgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5OYW1lI2dldFZhbHVlIDxlbT5WYWx1ZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5OYW1lI2dldExhbmcgPGVtPkxhbmc8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlI2dldE5hbWVfKCkKLSAqIEBtb2RlbCAKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBOYW1lIGV4dGVuZHMgRU9iamVjdCB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VmFsdWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlZhbHVlPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlZhbHVlPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNzZXRWYWx1ZShTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZSNnZXROYW1lX1ZhbHVlKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5TdHJpbmciCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRWYWx1ZSgpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5OYW1lI2dldFZhbHVlIDxlbT5WYWx1ZTwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VmFsdWU8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI2dldFZhbHVlKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXRWYWx1ZShTdHJpbmcgdmFsdWUpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TGFuZzwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TGFuZzwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5MYW5nPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNzZXRMYW5nKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlI2dldE5hbWVfTGFuZygpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuTGFuZ3VhZ2UiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRMYW5nKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5Lk5hbWUjZ2V0TGFuZyA8ZW0+TGFuZzwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TGFuZzwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0TGFuZygpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0TGFuZyhTdHJpbmcgdmFsdWUpOwotCi19IC8vIE5hbWUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L1JlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS9SZWdpc3RyeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTkyZGEwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L1JlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBSZWdpc3RyeS5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDkgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlJlZ2lzdHJ5PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnkjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeSNnZXREZXNjcmlwdGlvbiA8ZW0+RGVzY3JpcHRpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnkjZ2V0SWQgPGVtPklkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5I2dldExvY2F0aW9uIDxlbT5Mb2NhdGlvbjwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeSNnZXRSZWYgPGVtPlJlZjwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeVBhY2thZ2UjZ2V0UmVnaXN0cnkoKQotICogQG1vZGVsIAotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIFJlZ2lzdHJ5IGV4dGVuZHMgRU9iamVjdCB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuTmFtZX0uCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlI2dldFJlZ2lzdHJ5X05hbWUoKQotCSAqIEBtb2RlbCB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5Lk5hbWUiIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiIHJlcXVpcmVkPSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTGlzdCBnZXROYW1lKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5EZXNjcmlwdGlvbjwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRGVzY3JpcHRpb259LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RGVzY3JpcHRpb248L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5EZXNjcmlwdGlvbjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlI2dldFJlZ2lzdHJ5X0Rlc2NyaXB0aW9uKCkKLQkgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5EZXNjcmlwdGlvbiIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSIgcmVxdWlyZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVMaXN0IGdldERlc2NyaXB0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5JZDwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+SWQ8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+SWQ8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI3NldElkKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlI2dldFJlZ2lzdHJ5X0lkKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5BbnlVUkkiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRJZCgpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeSNnZXRJZCA8ZW0+SWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPklkPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNnZXRJZCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0SWQoU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkxvY2F0aW9uPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Mb2NhdGlvbjwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0TG9jYXRpb24oU3RyaW5nKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeVBhY2thZ2UjZ2V0UmVnaXN0cnlfTG9jYXRpb24oKQotCSAqIEBtb2RlbCB1bmlxdWU9ImZhbHNlIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtbC50eXBlLkFueVVSSSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JU3RyaW5nIGdldExvY2F0aW9uKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5I2dldExvY2F0aW9uIDxlbT5Mb2NhdGlvbjwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TG9jYXRpb248L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI2dldExvY2F0aW9uKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXRMb2NhdGlvbihTdHJpbmcgdmFsdWUpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UmVmPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5SZWY8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+UmVmPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNzZXRSZWYoU3RyaW5nKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeVBhY2thZ2UjZ2V0UmVnaXN0cnlfUmVmKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5BbnlVUkkiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRSZWYoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnkjZ2V0UmVmIDxlbT5SZWY8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlJlZjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0UmVmKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXRSZWYoU3RyaW5nIHZhbHVlKTsKLQotfSAvLyBSZWdpc3RyeQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvUmVnaXN0cnlGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS9SZWdpc3RyeUZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGMyNDEzMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS9SZWdpc3RyeUZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogUmVnaXN0cnlGYWN0b3J5LmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OSBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUZhY3Rvcnk7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5GYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLgotICogSXQgcHJvdmlkZXMgYSBjcmVhdGUgbWV0aG9kIGZvciBlYWNoIG5vbi1hYnN0cmFjdCBjbGFzcyBvZiB0aGUgbW9kZWwuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeVBhY2thZ2UKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBSZWdpc3RyeUZhY3RvcnkgZXh0ZW5kcyBFRmFjdG9yeSB7Ci0JLyoqCi0JICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlSZWdpc3RyeUZhY3RvcnkgZUlOU1RBTkNFID0gbmV3IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuaW1wbC5SZWdpc3RyeUZhY3RvcnlJbXBsKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRlc2NyaXB0aW9uPC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5EZXNjcmlwdGlvbjwvZW0+Jy4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRGVzY3JpcHRpb24gY3JlYXRlRGVzY3JpcHRpb24oKTsKLQotCS8qKgotCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+Jy4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRG9jdW1lbnRSb290IGNyZWF0ZURvY3VtZW50Um9vdCgpOwotCi0JLyoqCi0JICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5OYW1lPC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5OYW1lPC9lbT4nLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlOYW1lIGNyZWF0ZU5hbWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UmVnaXN0cnk8L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlJlZ2lzdHJ5PC9lbT4nLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlSZWdpc3RyeSBjcmVhdGVSZWdpc3RyeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5LgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlSZWdpc3RyeVBhY2thZ2UgZ2V0UmVnaXN0cnlQYWNrYWdlKCk7Ci0KLX0gLy9SZWdpc3RyeUZhY3RvcnkKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L1JlZ2lzdHJ5UGFja2FnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvUmVnaXN0cnlQYWNrYWdlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwOGYxZTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvUmVnaXN0cnlQYWNrYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NzAgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBSZWdpc3RyeVBhY2thZ2UuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ5IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4KLSAqIEl0IGNvbnRhaW5zIGFjY2Vzc29ycyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0byByZXByZXNlbnQKLSAqIDx1bD4KLSAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4KLSAqICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+Ci0gKiAgIDxsaT5lYWNoIGVudW0sPC9saT4KLSAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+Ci0gKiA8L3VsPgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIAotICogICAgU2VlIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS5odG1sIGFuZAotICogICAgaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBuYW1lc3BhY2UuCi0gKiAKLSAqICAgICBUaGlzIHNjaGVtYSBkb2N1bWVudCBkZXNjcmliZXMgdGhlIFhNTCBuYW1lc3BhY2UsIGluIGEgZm9ybQotICogICAgIHN1aXRhYmxlIGZvciBpbXBvcnQgYnkgb3RoZXIgc2NoZW1hIGRvY3VtZW50cy4gIAotICogCi0gKiAgICAgTm90ZSB0aGF0IGxvY2FsIG5hbWVzIGluIHRoaXMgbmFtZXNwYWNlIGFyZSBpbnRlbmRlZCB0byBiZSBkZWZpbmVkCi0gKiAgICAgb25seSBieSB0aGUgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSBvciBpdHMgc3ViZ3JvdXBzLiAgVGhlCi0gKiAgICAgZm9sbG93aW5nIG5hbWVzIGFyZSBjdXJyZW50bHkgZGVmaW5lZCBpbiB0aGlzIG5hbWVzcGFjZSBhbmQgc2hvdWxkCi0gKiAgICAgbm90IGJlIHVzZWQgd2l0aCBjb25mbGljdGluZyBzZW1hbnRpY3MgYnkgYW55IFdvcmtpbmcgR3JvdXAsCi0gKiAgICAgc3BlY2lmaWNhdGlvbiwgb3IgZG9jdW1lbnQgaW5zdGFuY2U6Ci0gKiAKLSAqICAgICBiYXNlIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlCi0gKiAgICAgICAgICBwcm92aWRlcyBhIFVSSSB0byBiZSB1c2VkIGFzIHRoZSBiYXNlIGZvciBpbnRlcnByZXRpbmcgYW55Ci0gKiAgICAgICAgICByZWxhdGl2ZSBVUklzIGluIHRoZSBzY29wZSBvZiB0aGUgZWxlbWVudCBvbiB3aGljaCBpdAotICogICAgICAgICAgYXBwZWFyczsgaXRzIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZAotICogICAgICAgICAgYnkgdmlydHVlIG9mIGl0cyBkZWZpbml0aW9uIGluIHRoZSBYTUwgQmFzZSBzcGVjaWZpY2F0aW9uLgotICogCi0gKiAgICAgaWQgICAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZQotICogICAgICAgICAgc2hvdWxkIGJlIGludGVycHJldGVkIGFzIGlmIGRlY2xhcmVkIHRvIGJlIG9mIHR5cGUgSUQuCi0gKiAgICAgICAgICBUaGUgeG1sOmlkIHNwZWNpZmljYXRpb24gaXMgbm90IHlldCBhIFczQyBSZWNvbW1lbmRhdGlvbiwKLSAqICAgICAgICAgIGJ1dCB0aGlzIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBoZXJlIHRvIGZhY2lsaXRhdGUgZXhwZXJpbWVudGF0aW9uCi0gKiAgICAgICAgICB3aXRoIHRoZSBtZWNoYW5pc21zIGl0IHByb3Bvc2VzLiAgTm90ZSB0aGF0IGl0IGlzIF9ub3RfIGluY2x1ZGVkCi0gKiAgICAgICAgICBpbiB0aGUgc3BlY2lhbEF0dHJzIGF0dHJpYnV0ZSBncm91cC4KLSAqIAotICogICAgIGxhbmcgKGFzIGFuIGF0dHJpYnV0ZSBuYW1lKTogZGVub3RlcyBhbiBhdHRyaWJ1dGUgd2hvc2UgdmFsdWUKLSAqICAgICAgICAgIGlzIGEgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIG5hdHVyYWwgbGFuZ3VhZ2Ugb2YgdGhlIGNvbnRlbnQgb2YKLSAqICAgICAgICAgIGFueSBlbGVtZW50OyBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkCi0gKiAgICAgICAgICBieSB2aXJ0dWUgb2YgaXRzIGRlZmluaXRpb24gaW4gdGhlIFhNTCBzcGVjaWZpY2F0aW9uLgotICogICAKLSAqICAgICBzcGFjZSAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZQotICogICAgICAgICAgdmFsdWUgaXMgYSBrZXl3b3JkIGluZGljYXRpbmcgd2hhdCB3aGl0ZXNwYWNlIHByb2Nlc3NpbmcKLSAqICAgICAgICAgIGRpc2NpcGxpbmUgaXMgaW50ZW5kZWQgZm9yIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50OyBpdHMKLSAqICAgICAgICAgIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCBieSB2aXJ0dWUgb2YgaXRzCi0gKiAgICAgICAgICBkZWZpbml0aW9uIGluIHRoZSBYTUwgc3BlY2lmaWNhdGlvbi4KLSAqIAotICogICAgIEZhdGhlciAoaW4gYW55IGNvbnRleHQgYXQgYWxsKTogZGVub3RlcyBKb24gQm9zYWssIHRoZSBjaGFpciBvZiAKLSAqICAgICAgICAgIHRoZSBvcmlnaW5hbCBYTUwgV29ya2luZyBHcm91cC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCBieSAKLSAqICAgICAgICAgIHRoZSBmb2xsb3dpbmcgZGVjaXNpb24gb2YgdGhlIFczQyBYTUwgUGxlbmFyeSBhbmQgCi0gKiAgICAgICAgICBYTUwgQ29vcmRpbmF0aW9uIGdyb3VwczoKLSAqIAotICogICAgICAgICAgICAgIEluIGFwcHJlY2lhdGlvbiBmb3IgaGlzIHZpc2lvbiwgbGVhZGVyc2hpcCBhbmQgZGVkaWNhdGlvbgotICogICAgICAgICAgICAgIHRoZSBXM0MgWE1MIFBsZW5hcnkgb24gdGhpcyAxMHRoIGRheSBvZiBGZWJydWFyeSwgMjAwMAotICogICAgICAgICAgICAgIHJlc2VydmVzIGZvciBKb24gQm9zYWsgaW4gcGVycGV0dWl0eSB0aGUgWE1MIG5hbWUKLSAqICAgICAgICAgICAgICB4bWw6RmF0aGVyCi0gKiAgIAotICogVGhpcyBzY2hlbWEgZGVmaW5lcyBhdHRyaWJ1dGVzIGFuZCBhbiBhdHRyaWJ1dGUgZ3JvdXAKLSAqICAgICAgICAgc3VpdGFibGUgZm9yIHVzZSBieQotICogICAgICAgICBzY2hlbWFzIHdpc2hpbmcgdG8gYWxsb3cgeG1sOmJhc2UsIHhtbDpsYW5nLCB4bWw6c3BhY2Ugb3IgeG1sOmlkCi0gKiAgICAgICAgIGF0dHJpYnV0ZXMgb24gZWxlbWVudHMgdGhleSBkZWZpbmUuCi0gKiAKLSAqICAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHN1Y2ggYSBzY2hlbWEgbXVzdCBpbXBvcnQgdGhpcyBzY2hlbWEKLSAqICAgICAgICAgZm9yIHRoZSBYTUwgbmFtZXNwYWNlLCBlLmcuIGFzIGZvbGxvd3M6Ci0gKiAgICAgICAgICZsdDtzY2hlbWEgLiAuIC4mZ3Q7Ci0gKiAgICAgICAgICAuIC4gLgotICogICAgICAgICAgJmx0O2ltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIKLSAqICAgICAgICAgICAgICAgICAgICAgc2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZCIvJmd0OwotICogCi0gKiAgICAgICAgIFN1YnNlcXVlbnRseSwgcXVhbGlmaWVkIHJlZmVyZW5jZSB0byBhbnkgb2YgdGhlIGF0dHJpYnV0ZXMKLSAqICAgICAgICAgb3IgdGhlIGdyb3VwIGRlZmluZWQgYmVsb3cgd2lsbCBoYXZlIHRoZSBkZXNpcmVkIGVmZmVjdCwgZS5nLgotICogCi0gKiAgICAgICAgICZsdDt0eXBlIC4gLiAuJmd0OwotICogICAgICAgICAgLiAuIC4KLSAqICAgICAgICAgICZsdDthdHRyaWJ1dGVHcm91cCByZWY9InhtbDpzcGVjaWFsQXR0cnMiLyZndDsKLSAqICAKLSAqICAgICAgICAgIHdpbGwgZGVmaW5lIGEgdHlwZSB3aGljaCB3aWxsIHNjaGVtYS12YWxpZGF0ZSBhbiBpbnN0YW5jZQotICogICAgICAgICAgZWxlbWVudCB3aXRoIGFueSBvZiB0aG9zZSBhdHRyaWJ1dGVzCi0gKiBJbiBrZWVwaW5nIHdpdGggdGhlIFhNTCBTY2hlbWEgV0cncyBzdGFuZGFyZCB2ZXJzaW9uaW5nCi0gKiAgICBwb2xpY3ksIHRoaXMgc2NoZW1hIGRvY3VtZW50IHdpbGwgcGVyc2lzdCBhdAotICogICAgaHR0cDovL3d3dy53My5vcmcvMjAwNS8wOC94bWwueHNkLgotICogICAgQXQgdGhlIGRhdGUgb2YgaXNzdWUgaXQgY2FuIGFsc28gYmUgZm91bmQgYXQKLSAqICAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZC4KLSAqICAgIFRoZSBzY2hlbWEgZG9jdW1lbnQgYXQgdGhhdCBVUkkgbWF5IGhvd2V2ZXIgY2hhbmdlIGluIHRoZSBmdXR1cmUsCi0gKiAgICBpbiBvcmRlciB0byByZW1haW4gY29tcGF0aWJsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYTUwgU2NoZW1hCi0gKiAgICBpdHNlbGYsIG9yIHdpdGggdGhlIFhNTCBuYW1lc3BhY2UgaXRzZWxmLiAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBYTUwKLSAqICAgIFNjaGVtYSBvciBYTUwgbmFtZXNwYWNlcyBjaGFuZ2UsIHRoZSB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQgYXQKLSAqICAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZCB3aWxsIGNoYW5nZQotICogICAgYWNjb3JkaW5nbHk7IHRoZSB2ZXJzaW9uIGF0Ci0gKiAgICBodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L3htbC54c2Qgd2lsbCBub3QgY2hhbmdlLgotICogICAKLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeUZhY3RvcnkKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBSZWdpc3RyeVBhY2thZ2UgZXh0ZW5kcyBFUGFja2FnZSB7Ci0JLyoqCi0JICogVGhlIHBhY2thZ2UgbmFtZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZU5BTUUgPSAicmVnaXN0cnkiOwotCi0JLyoqCi0JICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIFVSSS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZU5TX1VSSSA9ICJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeSI7Ci0KLQkvKioKLQkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZU5TX1BSRUZJWCA9ICJyZWdpc3RyeSI7Ci0KLQkvKioKLQkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCVJlZ2lzdHJ5UGFja2FnZSBlSU5TVEFOQ0UgPSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGwuUmVnaXN0cnlQYWNrYWdlSW1wbC5pbml0KCk7Ci0KLQkvKioKLQkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuaW1wbC5EZXNjcmlwdGlvbkltcGwgPGVtPkRlc2NyaXB0aW9uPC9lbT59JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLkRlc2NyaXB0aW9uSW1wbAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLlJlZ2lzdHJ5UGFja2FnZUltcGwjZ2V0RGVzY3JpcHRpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlpbnQgREVTQ1JJUFRJT04gPSAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlZhbHVlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgREVTQ1JJUFRJT05fX1ZBTFVFID0gMDsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5MYW5nPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgREVTQ1JJUFRJT05fX0xBTkcgPSAxOwotCi0JLyoqCi0JICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSB0aGUgJzxlbT5EZXNjcmlwdGlvbjwvZW0+JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBERVNDUklQVElPTl9GRUFUVVJFX0NPVU5UID0gMjsKLQotCS8qKgotCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLkRvY3VtZW50Um9vdEltcGwgPGVtPkRvY3VtZW50IFJvb3Q8L2VtPn0nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGwuRG9jdW1lbnRSb290SW1wbAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLlJlZ2lzdHJ5UGFja2FnZUltcGwjZ2V0RG9jdW1lbnRSb290KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1QgPSAxOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1peGVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX19NSVhFRCA9IDA7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+WE1MTlMgUHJlZml4IE1hcDwvYj48L2VtPicgbWFwLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfX1hNTE5TX1BSRUZJWF9NQVAgPSAxOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlhTSSBTY2hlbWEgTG9jYXRpb248L2I+PC9lbT4nIG1hcC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OID0gMjsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5EZXNjcmlwdGlvbjwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfX0RFU0NSSVBUSU9OID0gMzsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgRE9DVU1FTlRfUk9PVF9fTkFNRSA9IDQ7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVnaXN0cnk8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX19SRUdJU1RSWSA9IDU7Ci0KLQkvKioKLQkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlIHRoZSAnPGVtPkRvY3VtZW50IFJvb3Q8L2VtPicgY2xhc3MuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgRE9DVU1FTlRfUk9PVF9GRUFUVVJFX0NPVU5UID0gNjsKLQotCS8qKgotCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLk5hbWVJbXBsIDxlbT5OYW1lPC9lbT59JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLk5hbWVJbXBsCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGwuUmVnaXN0cnlQYWNrYWdlSW1wbCNnZXROYW1lXygpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCWludCBOQU1FID0gMjsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5WYWx1ZTwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IE5BTUVfX1ZBTFVFID0gMDsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5MYW5nPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgTkFNRV9fTEFORyA9IDE7Ci0KLQkvKioKLQkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlIHRoZSAnPGVtPk5hbWU8L2VtPicgY2xhc3MuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgTkFNRV9GRUFUVVJFX0NPVU5UID0gMjsKLQotCS8qKgotCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLlJlZ2lzdHJ5SW1wbCA8ZW0+UmVnaXN0cnk8L2VtPn0nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGwuUmVnaXN0cnlJbXBsCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGwuUmVnaXN0cnlQYWNrYWdlSW1wbCNnZXRSZWdpc3RyeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCWludCBSRUdJU1RSWSA9IDM7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgUkVHSVNUUllfX05BTUUgPSAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRlc2NyaXB0aW9uPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBSRUdJU1RSWV9fREVTQ1JJUFRJT04gPSAxOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPklkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgUkVHSVNUUllfX0lEID0gMjsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbjwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IFJFR0lTVFJZX19MT0NBVElPTiA9IDM7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVmPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgUkVHSVNUUllfX1JFRiA9IDQ7Ci0KLQkvKioKLQkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlIHRoZSAnPGVtPlJlZ2lzdHJ5PC9lbT4nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IFJFR0lTVFJZX0ZFQVRVUkVfQ09VTlQgPSA1OwotCi0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRlc2NyaXB0aW9uIDxlbT5EZXNjcmlwdGlvbjwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5EZXNjcmlwdGlvbjwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRGVzY3JpcHRpb24KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUNsYXNzIGdldERlc2NyaXB0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRGVzY3JpcHRpb24jZ2V0VmFsdWUgPGVtPlZhbHVlPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VmFsdWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRlc2NyaXB0aW9uI2dldFZhbHVlKCkKLQkgKiBAc2VlICNnZXREZXNjcmlwdGlvbigpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVBdHRyaWJ1dGUgZ2V0RGVzY3JpcHRpb25fVmFsdWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5EZXNjcmlwdGlvbiNnZXRMYW5nIDxlbT5MYW5nPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TGFuZzwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRGVzY3JpcHRpb24jZ2V0TGFuZygpCi0JICogQHNlZSAjZ2V0RGVzY3JpcHRpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldERlc2NyaXB0aW9uX0xhbmcoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290IDxlbT5Eb2N1bWVudCBSb290PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkRvY3VtZW50IFJvb3Q8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdAotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQ2xhc3MgZ2V0RG9jdW1lbnRSb290KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0TWl4ZWQgPGVtPk1peGVkPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJzxlbT5NaXhlZDwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290I2dldE1peGVkKCkKLQkgKiBAc2VlICNnZXREb2N1bWVudFJvb3QoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldERvY3VtZW50Um9vdF9NaXhlZCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBtYXAgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRYTUxOU1ByZWZpeE1hcCA8ZW0+WE1MTlMgUHJlZml4IE1hcDwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIG1hcCAnPGVtPlhNTE5TIFByZWZpeCBNYXA8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRYTUxOU1ByZWZpeE1hcCgpCi0JICogQHNlZSAjZ2V0RG9jdW1lbnRSb290KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfWE1MTlNQcmVmaXhNYXAoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgbWFwICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0WFNJU2NoZW1hTG9jYXRpb24gPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBtYXAgJzxlbT5YU0kgU2NoZW1hIExvY2F0aW9uPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0WFNJU2NoZW1hTG9jYXRpb24oKQotCSAqIEBzZWUgI2dldERvY3VtZW50Um9vdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X1hTSVNjaGVtYUxvY2F0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290I2dldERlc2NyaXB0aW9uIDxlbT5EZXNjcmlwdGlvbjwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPGVtPkRlc2NyaXB0aW9uPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0RGVzY3JpcHRpb24oKQotCSAqIEBzZWUgI2dldERvY3VtZW50Um9vdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X0Rlc2NyaXB0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5OYW1lPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0TmFtZSgpCi0JICogQHNlZSAjZ2V0RG9jdW1lbnRSb290KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfTmFtZSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRSZWdpc3RyeSA8ZW0+UmVnaXN0cnk8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5SZWdpc3RyeTwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290I2dldFJlZ2lzdHJ5KCkKLQkgKiBAc2VlICNnZXREb2N1bWVudFJvb3QoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9SZWdpc3RyeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5OYW1lIDxlbT5OYW1lPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPk5hbWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5Lk5hbWUKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUNsYXNzIGdldE5hbWVfKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuTmFtZSNnZXRWYWx1ZSA8ZW0+VmFsdWU8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5WYWx1ZTwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuTmFtZSNnZXRWYWx1ZSgpCi0JICogQHNlZSAjZ2V0TmFtZV8oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldE5hbWVfVmFsdWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5OYW1lI2dldExhbmcgPGVtPkxhbmc8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5MYW5nPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5OYW1lI2dldExhbmcoKQotCSAqIEBzZWUgI2dldE5hbWVfKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXROYW1lX0xhbmcoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnkgPGVtPlJlZ2lzdHJ5PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlJlZ2lzdHJ5PC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQ2xhc3MgZ2V0UmVnaXN0cnkoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPk5hbWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5I2dldE5hbWUoKQotCSAqIEBzZWUgI2dldFJlZ2lzdHJ5KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXRSZWdpc3RyeV9OYW1lKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeSNnZXREZXNjcmlwdGlvbiA8ZW0+RGVzY3JpcHRpb248L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkRlc2NyaXB0aW9uPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeSNnZXREZXNjcmlwdGlvbigpCi0JICogQHNlZSAjZ2V0UmVnaXN0cnkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldFJlZ2lzdHJ5X0Rlc2NyaXB0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnkjZ2V0SWQgPGVtPklkPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+SWQ8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5I2dldElkKCkKLQkgKiBAc2VlICNnZXRSZWdpc3RyeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVBdHRyaWJ1dGUgZ2V0UmVnaXN0cnlfSWQoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeSNnZXRMb2NhdGlvbiA8ZW0+TG9jYXRpb248L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Mb2NhdGlvbjwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnkjZ2V0TG9jYXRpb24oKQotCSAqIEBzZWUgI2dldFJlZ2lzdHJ5KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXRSZWdpc3RyeV9Mb2NhdGlvbigpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5I2dldFJlZiA8ZW0+UmVmPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+UmVmPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeSNnZXRSZWYoKQotCSAqIEBzZWUgI2dldFJlZ2lzdHJ5KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXRSZWdpc3RyeV9SZWYoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVJlZ2lzdHJ5RmFjdG9yeSBnZXRSZWdpc3RyeUZhY3RvcnkoKTsKLQotfSAvL1JlZ2lzdHJ5UGFja2FnZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvaW1wbC9EZXNjcmlwdGlvbkltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L2ltcGwvRGVzY3JpcHRpb25JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMWQ5NDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvaW1wbC9EZXNjcmlwdGlvbkltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IERlc2NyaXB0aW9uSW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDcgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FU3RydWN0dXJhbEZlYXR1cmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FT2JqZWN0SW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeVBhY2thZ2U7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5EZXNjcmlwdGlvbjwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLkRlc2NyaXB0aW9uSW1wbCNnZXRWYWx1ZSA8ZW0+VmFsdWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuaW1wbC5EZXNjcmlwdGlvbkltcGwjZ2V0TGFuZyA8ZW0+TGFuZzwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIERlc2NyaXB0aW9uSW1wbCBleHRlbmRzIEVPYmplY3RJbXBsIGltcGxlbWVudHMgRGVzY3JpcHRpb24gewotCS8qKgotCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRWYWx1ZSgpIDxlbT5WYWx1ZTwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0VmFsdWUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFZBTFVFX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFZhbHVlKCkgPGVtPlZhbHVlPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRWYWx1ZSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyB2YWx1ZSA9IFZBTFVFX0VERUZBVUxUOwotCi0JLyoqCi0JICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExhbmcoKSA8ZW0+TGFuZzwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TGFuZygpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgTEFOR19FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMYW5nKCkgPGVtPkxhbmc8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldExhbmcoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgbGFuZyA9IExBTkdfRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRGVzY3JpcHRpb25JbXBsKCkgewotCQlzdXBlcigpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgewotCQlyZXR1cm4gUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXREZXNjcmlwdGlvbigpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0VmFsdWUoKSB7Ci0JCXJldHVybiB2YWx1ZTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRWYWx1ZShTdHJpbmcgbmV3VmFsdWUpIHsKLQkJU3RyaW5nIG9sZFZhbHVlID0gdmFsdWU7Ci0JCXZhbHVlID0gbmV3VmFsdWU7Ci0JCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFJlZ2lzdHJ5UGFja2FnZS5ERVNDUklQVElPTl9fVkFMVUUsIG9sZFZhbHVlLCB2YWx1ZSkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0TGFuZygpIHsKLQkJcmV0dXJuIGxhbmc7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0TGFuZyhTdHJpbmcgbmV3TGFuZykgewotCQlTdHJpbmcgb2xkTGFuZyA9IGxhbmc7Ci0JCWxhbmcgPSBuZXdMYW5nOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSZWdpc3RyeVBhY2thZ2UuREVTQ1JJUFRJT05fX0xBTkcsIG9sZExhbmcsIGxhbmcpKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGVHZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBib29sZWFuIHJlc29sdmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ERVNDUklQVElPTl9fVkFMVUU6Ci0JCQkJcmV0dXJuIGdldFZhbHVlKCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ERVNDUklQVElPTl9fTEFORzoKLQkJCQlyZXR1cm4gZ2V0TGFuZygpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0dldChlRmVhdHVyZSwgcmVzb2x2ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIE9iamVjdCBuZXdWYWx1ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRFU0NSSVBUSU9OX19WQUxVRToKLQkJCQlzZXRWYWx1ZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ERVNDUklQVElPTl9fTEFORzoKLQkJCQlzZXRMYW5nKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJfQotCQllRHluYW1pY1NldChlRmVhdHVyZSwgbmV3VmFsdWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGVVbnNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ERVNDUklQVElPTl9fVkFMVUU6Ci0JCQkJc2V0VmFsdWUoVkFMVUVfRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRFU0NSSVBUSU9OX19MQU5HOgotCQkJCXNldExhbmcoTEFOR19FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljVW5zZXQoZUZlYXR1cmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBib29sZWFuIGVJc1NldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ERVNDUklQVElPTl9fVkFMVUU6Ci0JCQkJcmV0dXJuIFZBTFVFX0VERUZBVUxUID09IG51bGwgPyB2YWx1ZSAhPSBudWxsIDogIVZBTFVFX0VERUZBVUxULmVxdWFscyh2YWx1ZSk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ERVNDUklQVElPTl9fTEFORzoKLQkJCQlyZXR1cm4gTEFOR19FREVGQVVMVCA9PSBudWxsID8gbGFuZyAhPSBudWxsIDogIUxBTkdfRURFRkFVTFQuZXF1YWxzKGxhbmcpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0lzU2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotCQlpZiAoZUlzUHJveHkoKSkgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLQkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0JCXJlc3VsdC5hcHBlbmQoIiAodmFsdWU6ICIpOwotCQlyZXN1bHQuYXBwZW5kKHZhbHVlKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCBsYW5nOiAiKTsKLQkJcmVzdWx0LmFwcGVuZChsYW5nKTsKLQkJcmVzdWx0LmFwcGVuZCgnKScpOwotCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0JfQotCi19IC8vRGVzY3JpcHRpb25JbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS9pbXBsL0RvY3VtZW50Um9vdEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L2ltcGwvRG9jdW1lbnRSb290SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTMyZTM4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L2ltcGwvRG9jdW1lbnRSb290SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzY3ICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogRG9jdW1lbnRSb290SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDcgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbkNoYWluOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVNYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FU3RydWN0dXJhbEZlYXR1cmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVjb3JlUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU9iamVjdEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRVN0cmluZ1RvU3RyaW5nTWFwRW50cnlJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuQmFzaWNGZWF0dXJlTWFwOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVjb3JlRU1hcDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5GZWF0dXJlTWFwOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkludGVybmFsRUxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuTmFtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RG9jdW1lbnQgUm9vdDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0TWl4ZWQgPGVtPk1peGVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGwuRG9jdW1lbnRSb290SW1wbCNnZXRYTUxOU1ByZWZpeE1hcCA8ZW0+WE1MTlMgUHJlZml4IE1hcDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0WFNJU2NoZW1hTG9jYXRpb24gPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuaW1wbC5Eb2N1bWVudFJvb3RJbXBsI2dldERlc2NyaXB0aW9uIDxlbT5EZXNjcmlwdGlvbjwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0UmVnaXN0cnkgPGVtPlJlZ2lzdHJ5PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgRG9jdW1lbnRSb290SW1wbCBleHRlbmRzIEVPYmplY3RJbXBsIGltcGxlbWVudHMgRG9jdW1lbnRSb290IHsKLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRNaXhlZCgpIDxlbT5NaXhlZDwvZW0+fScgYXR0cmlidXRlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRNaXhlZCgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIEZlYXR1cmVNYXAgbWl4ZWQgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0WE1MTlNQcmVmaXhNYXAoKSA8ZW0+WE1MTlMgUHJlZml4IE1hcDwvZW0+fScgbWFwLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0WE1MTlNQcmVmaXhNYXAoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBFTWFwIHhNTE5TUHJlZml4TWFwID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFhTSVNjaGVtYUxvY2F0aW9uKCkgPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPn0nIG1hcC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFhTSVNjaGVtYUxvY2F0aW9uKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRU1hcCB4U0lTY2hlbWFMb2NhdGlvbiA9IG51bGw7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRG9jdW1lbnRSb290SW1wbCgpIHsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsKLQkJcmV0dXJuIFJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290KCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEZlYXR1cmVNYXAgZ2V0TWl4ZWQoKSB7Ci0JCWlmIChtaXhlZCA9PSBudWxsKSB7Ci0JCQltaXhlZCA9IG5ldyBCYXNpY0ZlYXR1cmVNYXAodGhpcywgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEKTsKLQkJfQotCQlyZXR1cm4gbWl4ZWQ7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVNYXAgZ2V0WE1MTlNQcmVmaXhNYXAoKSB7Ci0JCWlmICh4TUxOU1ByZWZpeE1hcCA9PSBudWxsKSB7Ci0JCQl4TUxOU1ByZWZpeE1hcCA9IG5ldyBFY29yZUVNYXAoRWNvcmVQYWNrYWdlLmVJTlNUQU5DRS5nZXRFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSgpLCBFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeUltcGwuY2xhc3MsIHRoaXMsIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQKTsKLQkJfQotCQlyZXR1cm4geE1MTlNQcmVmaXhNYXA7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVNYXAgZ2V0WFNJU2NoZW1hTG9jYXRpb24oKSB7Ci0JCWlmICh4U0lTY2hlbWFMb2NhdGlvbiA9PSBudWxsKSB7Ci0JCQl4U0lTY2hlbWFMb2NhdGlvbiA9IG5ldyBFY29yZUVNYXAoRWNvcmVQYWNrYWdlLmVJTlNUQU5DRS5nZXRFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSgpLCBFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeUltcGwuY2xhc3MsIHRoaXMsIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OKTsKLQkJfQotCQlyZXR1cm4geFNJU2NoZW1hTG9jYXRpb247Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIERlc2NyaXB0aW9uIGdldERlc2NyaXB0aW9uKCkgewotCQlyZXR1cm4gKERlc2NyaXB0aW9uKWdldE1peGVkKCkuZ2V0KFJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X0Rlc2NyaXB0aW9uKCksIHRydWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldERlc2NyaXB0aW9uKERlc2NyaXB0aW9uIG5ld0Rlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCXJldHVybiAoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuYmFzaWNBZGQoUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfRGVzY3JpcHRpb24oKSwgbmV3RGVzY3JpcHRpb24sIG51bGwpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldERlc2NyaXB0aW9uKERlc2NyaXB0aW9uIG5ld0Rlc2NyaXB0aW9uKSB7Ci0JCSgoRmVhdHVyZU1hcC5JbnRlcm5hbClnZXRNaXhlZCgpKS5zZXQoUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfRGVzY3JpcHRpb24oKSwgbmV3RGVzY3JpcHRpb24pOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOYW1lIGdldE5hbWUoKSB7Ci0JCXJldHVybiAoTmFtZSlnZXRNaXhlZCgpLmdldChSZWdpc3RyeVBhY2thZ2UuZUlOU1RBTkNFLmdldERvY3VtZW50Um9vdF9OYW1lKCksIHRydWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldE5hbWUoTmFtZSBuZXdOYW1lLCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCXJldHVybiAoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuYmFzaWNBZGQoUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfTmFtZSgpLCBuZXdOYW1lLCBudWxsKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXROYW1lKE5hbWUgbmV3TmFtZSkgewotCQkoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuc2V0KFJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X05hbWUoKSwgbmV3TmFtZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFJlZ2lzdHJ5IGdldFJlZ2lzdHJ5KCkgewotCQlyZXR1cm4gKFJlZ2lzdHJ5KWdldE1peGVkKCkuZ2V0KFJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X1JlZ2lzdHJ5KCksIHRydWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldFJlZ2lzdHJ5KFJlZ2lzdHJ5IG5ld1JlZ2lzdHJ5LCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCXJldHVybiAoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuYmFzaWNBZGQoUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfUmVnaXN0cnkoKSwgbmV3UmVnaXN0cnksIG51bGwpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldFJlZ2lzdHJ5KFJlZ2lzdHJ5IG5ld1JlZ2lzdHJ5KSB7Ci0JCSgoRmVhdHVyZU1hcC5JbnRlcm5hbClnZXRNaXhlZCgpKS5zZXQoUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfUmVnaXN0cnkoKSwgbmV3UmVnaXN0cnkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBlSW52ZXJzZVJlbW92ZShJbnRlcm5hbEVPYmplY3Qgb3RoZXJFbmQsIGludCBmZWF0dXJlSUQsIENsYXNzIGJhc2VDbGFzcywgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykgewotCQlpZiAoZmVhdHVyZUlEID49IDApIHsKLQkJCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGZlYXR1cmVJRCwgYmFzZUNsYXNzKSkgewotCQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldE1peGVkKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldFhNTE5TUHJlZml4TWFwKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldFhTSVNjaGVtYUxvY2F0aW9uKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19ERVNDUklQVElPTjoKLQkJCQkJcmV0dXJuIGJhc2ljU2V0RGVzY3JpcHRpb24obnVsbCwgbXNncyk7Ci0JCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTkFNRToKLQkJCQkJcmV0dXJuIGJhc2ljU2V0TmFtZShudWxsLCBtc2dzKTsKLQkJCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19SRUdJU1RSWToKLQkJCQkJcmV0dXJuIGJhc2ljU2V0UmVnaXN0cnkobnVsbCwgbXNncyk7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJcmV0dXJuIGVEeW5hbWljSW52ZXJzZVJlbW92ZShvdGhlckVuZCwgZmVhdHVyZUlELCBiYXNlQ2xhc3MsIG1zZ3MpOwotCQkJfQotCQl9Ci0JCXJldHVybiBlQmFzaWNTZXRDb250YWluZXIobnVsbCwgZmVhdHVyZUlELCBtc2dzKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGVHZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBib29sZWFuIHJlc29sdmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19NSVhFRDoKLQkJCQlyZXR1cm4gZ2V0TWl4ZWQoKTsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1hNTE5TX1BSRUZJWF9NQVA6Ci0JCQkJcmV0dXJuIGdldFhNTE5TUHJlZml4TWFwKCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCXJldHVybiBnZXRYU0lTY2hlbWFMb2NhdGlvbigpOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fREVTQ1JJUFRJT046Ci0JCQkJcmV0dXJuIGdldERlc2NyaXB0aW9uKCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19OQU1FOgotCQkJCXJldHVybiBnZXROYW1lKCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19SRUdJU1RSWToKLQkJCQlyZXR1cm4gZ2V0UmVnaXN0cnkoKTsKLQkJfQotCQlyZXR1cm4gZUR5bmFtaWNHZXQoZUZlYXR1cmUsIHJlc29sdmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGVTZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBPYmplY3QgbmV3VmFsdWUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19NSVhFRDoKLQkJCQlnZXRNaXhlZCgpLmNsZWFyKCk7Ci0JCQkJZ2V0TWl4ZWQoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1hNTE5TX1BSRUZJWF9NQVA6Ci0JCQkJZ2V0WE1MTlNQcmVmaXhNYXAoKS5jbGVhcigpOwotCQkJCWdldFhNTE5TUHJlZml4TWFwKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCWdldFhTSVNjaGVtYUxvY2F0aW9uKCkuY2xlYXIoKTsKLQkJCQlnZXRYU0lTY2hlbWFMb2NhdGlvbigpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fREVTQ1JJUFRJT046Ci0JCQkJc2V0RGVzY3JpcHRpb24oKERlc2NyaXB0aW9uKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19OQU1FOgotCQkJCXNldE5hbWUoKE5hbWUpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1JFR0lTVFJZOgotCQkJCXNldFJlZ2lzdHJ5KChSZWdpc3RyeSluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljU2V0KGVGZWF0dXJlLCBuZXdWYWx1ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVVuc2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEOgotCQkJCWdldE1peGVkKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCWdldFhNTE5TUHJlZml4TWFwKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCWdldFhTSVNjaGVtYUxvY2F0aW9uKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19ERVNDUklQVElPTjoKLQkJCQlzZXREZXNjcmlwdGlvbigoRGVzY3JpcHRpb24pbnVsbCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTkFNRToKLQkJCQlzZXROYW1lKChOYW1lKW51bGwpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1JFR0lTVFJZOgotCQkJCXNldFJlZ2lzdHJ5KChSZWdpc3RyeSludWxsKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNVbnNldChlRmVhdHVyZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIGJvb2xlYW4gZUlzU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEOgotCQkJCXJldHVybiBtaXhlZCAhPSBudWxsICYmICFtaXhlZC5pc0VtcHR5KCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCXJldHVybiB4TUxOU1ByZWZpeE1hcCAhPSBudWxsICYmICF4TUxOU1ByZWZpeE1hcC5pc0VtcHR5KCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCXJldHVybiB4U0lTY2hlbWFMb2NhdGlvbiAhPSBudWxsICYmICF4U0lTY2hlbWFMb2NhdGlvbi5pc0VtcHR5KCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19ERVNDUklQVElPTjoKLQkJCQlyZXR1cm4gZ2V0RGVzY3JpcHRpb24oKSAhPSBudWxsOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTkFNRToKLQkJCQlyZXR1cm4gZ2V0TmFtZSgpICE9IG51bGw7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19SRUdJU1RSWToKLQkJCQlyZXR1cm4gZ2V0UmVnaXN0cnkoKSAhPSBudWxsOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0lzU2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotCQlpZiAoZUlzUHJveHkoKSkgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLQkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0JCXJlc3VsdC5hcHBlbmQoIiAobWl4ZWQ6ICIpOwotCQlyZXN1bHQuYXBwZW5kKG1peGVkKTsKLQkJcmVzdWx0LmFwcGVuZCgnKScpOwotCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0JfQotCi19IC8vRG9jdW1lbnRSb290SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvaW1wbC9OYW1lSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvaW1wbC9OYW1lSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2NlZjc2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L2ltcGwvTmFtZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IE5hbWVJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0NyBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVTdHJ1Y3R1cmFsRmVhdHVyZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVPYmplY3RJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5OYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TmFtZTwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLk5hbWVJbXBsI2dldFZhbHVlIDxlbT5WYWx1ZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLk5hbWVJbXBsI2dldExhbmcgPGVtPkxhbmc8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBOYW1lSW1wbCBleHRlbmRzIEVPYmplY3RJbXBsIGltcGxlbWVudHMgTmFtZSB7Ci0JLyoqCi0JICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFZhbHVlKCkgPGVtPlZhbHVlPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRWYWx1ZSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkFMVUVfRURFRkFVTFQgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VmFsdWUoKSA8ZW0+VmFsdWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFZhbHVlKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgU3RyaW5nIHZhbHVlID0gVkFMVUVfRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TGFuZygpIDxlbT5MYW5nPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRMYW5nKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBMQU5HX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExhbmcoKSA8ZW0+TGFuZzwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TGFuZygpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyBsYW5nID0gTEFOR19FREVGQVVMVDsKLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBOYW1lSW1wbCgpIHsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsKLQkJcmV0dXJuIFJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0UuZ2V0TmFtZV8oKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkgewotCQlyZXR1cm4gdmFsdWU7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0VmFsdWUoU3RyaW5nIG5ld1ZhbHVlKSB7Ci0JCVN0cmluZyBvbGRWYWx1ZSA9IHZhbHVlOwotCQl2YWx1ZSA9IG5ld1ZhbHVlOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSZWdpc3RyeVBhY2thZ2UuTkFNRV9fVkFMVUUsIG9sZFZhbHVlLCB2YWx1ZSkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0TGFuZygpIHsKLQkJcmV0dXJuIGxhbmc7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0TGFuZyhTdHJpbmcgbmV3TGFuZykgewotCQlTdHJpbmcgb2xkTGFuZyA9IGxhbmc7Ci0JCWxhbmcgPSBuZXdMYW5nOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSZWdpc3RyeVBhY2thZ2UuTkFNRV9fTEFORywgb2xkTGFuZywgbGFuZykpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgZUdldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIGJvb2xlYW4gcmVzb2x2ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLk5BTUVfX1ZBTFVFOgotCQkJCXJldHVybiBnZXRWYWx1ZSgpOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuTkFNRV9fTEFORzoKLQkJCQlyZXR1cm4gZ2V0TGFuZygpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0dldChlRmVhdHVyZSwgcmVzb2x2ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIE9iamVjdCBuZXdWYWx1ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLk5BTUVfX1ZBTFVFOgotCQkJCXNldFZhbHVlKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLk5BTUVfX0xBTkc6Ci0JCQkJc2V0TGFuZygoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNTZXQoZUZlYXR1cmUsIG5ld1ZhbHVlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBlVW5zZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuTkFNRV9fVkFMVUU6Ci0JCQkJc2V0VmFsdWUoVkFMVUVfRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLk5BTUVfX0xBTkc6Ci0JCQkJc2V0TGFuZyhMQU5HX0VERUZBVUxUKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNVbnNldChlRmVhdHVyZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIGJvb2xlYW4gZUlzU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLk5BTUVfX1ZBTFVFOgotCQkJCXJldHVybiBWQUxVRV9FREVGQVVMVCA9PSBudWxsID8gdmFsdWUgIT0gbnVsbCA6ICFWQUxVRV9FREVGQVVMVC5lcXVhbHModmFsdWUpOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuTkFNRV9fTEFORzoKLQkJCQlyZXR1cm4gTEFOR19FREVGQVVMVCA9PSBudWxsID8gbGFuZyAhPSBudWxsIDogIUxBTkdfRURFRkFVTFQuZXF1YWxzKGxhbmcpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0lzU2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotCQlpZiAoZUlzUHJveHkoKSkgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLQkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0JCXJlc3VsdC5hcHBlbmQoIiAodmFsdWU6ICIpOwotCQlyZXN1bHQuYXBwZW5kKHZhbHVlKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCBsYW5nOiAiKTsKLQkJcmVzdWx0LmFwcGVuZChsYW5nKTsKLQkJcmVzdWx0LmFwcGVuZCgnKScpOwotCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0JfQotCi19IC8vTmFtZUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L2ltcGwvUmVnaXN0cnlGYWN0b3J5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvaW1wbC9SZWdpc3RyeUZhY3RvcnlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZjJjMTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvaW1wbC9SZWdpc3RyeUZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBSZWdpc3RyeUZhY3RvcnlJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0NyBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FRmFjdG9yeUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5Lio7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5GYWN0b3J5PC9iPi4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgUmVnaXN0cnlGYWN0b3J5SW1wbCBleHRlbmRzIEVGYWN0b3J5SW1wbCBpbXBsZW1lbnRzIFJlZ2lzdHJ5RmFjdG9yeSB7Ci0JLyoqCi0JICogQ3JlYXRlcyBhbmQgaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFJlZ2lzdHJ5RmFjdG9yeUltcGwoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVPYmplY3QgY3JlYXRlKEVDbGFzcyBlQ2xhc3MpIHsKLQkJc3dpdGNoIChlQ2xhc3MuZ2V0Q2xhc3NpZmllcklEKCkpIHsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRFU0NSSVBUSU9OOiByZXR1cm4gY3JlYXRlRGVzY3JpcHRpb24oKTsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1Q6IHJldHVybiBjcmVhdGVEb2N1bWVudFJvb3QoKTsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLk5BTUU6IHJldHVybiBjcmVhdGVOYW1lKCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWTogcmV0dXJuIGNyZWF0ZVJlZ2lzdHJ5KCk7Ci0JCQlkZWZhdWx0OgotCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBjbGFzcyAnIiArIGVDbGFzcy5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRGVzY3JpcHRpb24gY3JlYXRlRGVzY3JpcHRpb24oKSB7Ci0JCURlc2NyaXB0aW9uSW1wbCBkZXNjcmlwdGlvbiA9IG5ldyBEZXNjcmlwdGlvbkltcGwoKTsKLQkJcmV0dXJuIGRlc2NyaXB0aW9uOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBEb2N1bWVudFJvb3QgY3JlYXRlRG9jdW1lbnRSb290KCkgewotCQlEb2N1bWVudFJvb3RJbXBsIGRvY3VtZW50Um9vdCA9IG5ldyBEb2N1bWVudFJvb3RJbXBsKCk7Ci0JCXJldHVybiBkb2N1bWVudFJvb3Q7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE5hbWUgY3JlYXRlTmFtZSgpIHsKLQkJTmFtZUltcGwgbmFtZSA9IG5ldyBOYW1lSW1wbCgpOwotCQlyZXR1cm4gbmFtZTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgUmVnaXN0cnkgY3JlYXRlUmVnaXN0cnkoKSB7Ci0JCVJlZ2lzdHJ5SW1wbCByZWdpc3RyeSA9IG5ldyBSZWdpc3RyeUltcGwoKTsKLQkJcmV0dXJuIHJlZ2lzdHJ5OwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBSZWdpc3RyeVBhY2thZ2UgZ2V0UmVnaXN0cnlQYWNrYWdlKCkgewotCQlyZXR1cm4gKFJlZ2lzdHJ5UGFja2FnZSlnZXRFUGFja2FnZSgpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGRlcHJlY2F0ZWQKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHN0YXRpYyBSZWdpc3RyeVBhY2thZ2UgZ2V0UGFja2FnZSgpIHsKLQkJcmV0dXJuIFJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0U7Ci0JfQotCi19IC8vUmVnaXN0cnlGYWN0b3J5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvaW1wbC9SZWdpc3RyeUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L2ltcGwvUmVnaXN0cnlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNzFlN2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvaW1wbC9SZWdpc3RyeUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2OCArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJlZ2lzdHJ5SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDcgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb25DaGFpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVTdHJ1Y3R1cmFsRmVhdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU9iamVjdEltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0Q29udGFpbm1lbnRFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5EZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5Lk5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZTsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlJlZ2lzdHJ5PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGwuUmVnaXN0cnlJbXBsI2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuaW1wbC5SZWdpc3RyeUltcGwjZ2V0RGVzY3JpcHRpb24gPGVtPkRlc2NyaXB0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LmltcGwuUmVnaXN0cnlJbXBsI2dldElkIDxlbT5JZDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLlJlZ2lzdHJ5SW1wbCNnZXRMb2NhdGlvbiA8ZW0+TG9jYXRpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuaW1wbC5SZWdpc3RyeUltcGwjZ2V0UmVmIDxlbT5SZWY8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBSZWdpc3RyeUltcGwgZXh0ZW5kcyBFT2JqZWN0SW1wbCBpbXBsZW1lbnRzIFJlZ2lzdHJ5IHsKLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TmFtZSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIEVMaXN0IG5hbWUgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RGVzY3JpcHRpb24oKSA8ZW0+RGVzY3JpcHRpb248L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0RGVzY3JpcHRpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBFTGlzdCBkZXNjcmlwdGlvbiA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0SWQoKSA8ZW0+SWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldElkKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBJRF9FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRJZCgpIDxlbT5JZDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0SWQoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgaWQgPSBJRF9FREVGQVVMVDsKLQotCS8qKgotCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMb2NhdGlvbigpIDxlbT5Mb2NhdGlvbjwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TG9jYXRpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIExPQ0FUSU9OX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExvY2F0aW9uKCkgPGVtPkxvY2F0aW9uPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRMb2NhdGlvbigpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyBsb2NhdGlvbiA9IExPQ0FUSU9OX0VERUZBVUxUOwotCi0JLyoqCi0JICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFJlZigpIDxlbT5SZWY8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFJlZigpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVGX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFJlZigpIDxlbT5SZWY8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFJlZigpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyByZWYgPSBSRUZfRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgUmVnaXN0cnlJbXBsKCkgewotCQlzdXBlcigpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgewotCQlyZXR1cm4gUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXRSZWdpc3RyeSgpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFTGlzdCBnZXROYW1lKCkgewotCQlpZiAobmFtZSA9PSBudWxsKSB7Ci0JCQluYW1lID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KE5hbWUuY2xhc3MsIHRoaXMsIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fTkFNRSk7Ci0JCX0KLQkJcmV0dXJuIG5hbWU7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVMaXN0IGdldERlc2NyaXB0aW9uKCkgewotCQlpZiAoZGVzY3JpcHRpb24gPT0gbnVsbCkgewotCQkJZGVzY3JpcHRpb24gPSBuZXcgRU9iamVjdENvbnRhaW5tZW50RUxpc3QoRGVzY3JpcHRpb24uY2xhc3MsIHRoaXMsIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fREVTQ1JJUFRJT04pOwotCQl9Ci0JCXJldHVybiBkZXNjcmlwdGlvbjsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldElkKCkgewotCQlyZXR1cm4gaWQ7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIG5ld0lkKSB7Ci0JCVN0cmluZyBvbGRJZCA9IGlkOwotCQlpZCA9IG5ld0lkOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0lELCBvbGRJZCwgaWQpKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldExvY2F0aW9uKCkgewotCQlyZXR1cm4gbG9jYXRpb247Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0TG9jYXRpb24oU3RyaW5nIG5ld0xvY2F0aW9uKSB7Ci0JCVN0cmluZyBvbGRMb2NhdGlvbiA9IGxvY2F0aW9uOwotCQlsb2NhdGlvbiA9IG5ld0xvY2F0aW9uOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0xPQ0FUSU9OLCBvbGRMb2NhdGlvbiwgbG9jYXRpb24pKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFJlZigpIHsKLQkJcmV0dXJuIHJlZjsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRSZWYoU3RyaW5nIG5ld1JlZikgewotCQlTdHJpbmcgb2xkUmVmID0gcmVmOwotCQlyZWYgPSBuZXdSZWY7Ci0JCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fUkVGLCBvbGRSZWYsIHJlZikpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBlSW52ZXJzZVJlbW92ZShJbnRlcm5hbEVPYmplY3Qgb3RoZXJFbmQsIGludCBmZWF0dXJlSUQsIENsYXNzIGJhc2VDbGFzcywgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykgewotCQlpZiAoZmVhdHVyZUlEID49IDApIHsKLQkJCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGZlYXR1cmVJRCwgYmFzZUNsYXNzKSkgewotCQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLlJFR0lTVFJZX19OQU1FOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldE5hbWUoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotCQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLlJFR0lTVFJZX19ERVNDUklQVElPTjoKLQkJCQkJcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXREZXNjcmlwdGlvbigpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJcmV0dXJuIGVEeW5hbWljSW52ZXJzZVJlbW92ZShvdGhlckVuZCwgZmVhdHVyZUlELCBiYXNlQ2xhc3MsIG1zZ3MpOwotCQkJfQotCQl9Ci0JCXJldHVybiBlQmFzaWNTZXRDb250YWluZXIobnVsbCwgZmVhdHVyZUlELCBtc2dzKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGVHZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBib29sZWFuIHJlc29sdmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fTkFNRToKLQkJCQlyZXR1cm4gZ2V0TmFtZSgpOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0RFU0NSSVBUSU9OOgotCQkJCXJldHVybiBnZXREZXNjcmlwdGlvbigpOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0lEOgotCQkJCXJldHVybiBnZXRJZCgpOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0xPQ0FUSU9OOgotCQkJCXJldHVybiBnZXRMb2NhdGlvbigpOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX1JFRjoKLQkJCQlyZXR1cm4gZ2V0UmVmKCk7Ci0JCX0KLQkJcmV0dXJuIGVEeW5hbWljR2V0KGVGZWF0dXJlLCByZXNvbHZlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBlU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSwgT2JqZWN0IG5ld1ZhbHVlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX05BTUU6Ci0JCQkJZ2V0TmFtZSgpLmNsZWFyKCk7Ci0JCQkJZ2V0TmFtZSgpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0RFU0NSSVBUSU9OOgotCQkJCWdldERlc2NyaXB0aW9uKCkuY2xlYXIoKTsKLQkJCQlnZXREZXNjcmlwdGlvbigpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0lEOgotCQkJCXNldElkKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLlJFR0lTVFJZX19MT0NBVElPTjoKLQkJCQlzZXRMb2NhdGlvbigoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fUkVGOgotCQkJCXNldFJlZigoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNTZXQoZUZlYXR1cmUsIG5ld1ZhbHVlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBlVW5zZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX05BTUU6Ci0JCQkJZ2V0TmFtZSgpLmNsZWFyKCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0RFU0NSSVBUSU9OOgotCQkJCWdldERlc2NyaXB0aW9uKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fSUQ6Ci0JCQkJc2V0SWQoSURfRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLlJFR0lTVFJZX19MT0NBVElPTjoKLQkJCQlzZXRMb2NhdGlvbihMT0NBVElPTl9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX1JFRjoKLQkJCQlzZXRSZWYoUkVGX0VERUZBVUxUKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNVbnNldChlRmVhdHVyZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIGJvb2xlYW4gZUlzU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLlJFR0lTVFJZX19OQU1FOgotCQkJCXJldHVybiBuYW1lICE9IG51bGwgJiYgIW5hbWUuaXNFbXB0eSgpOwotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0RFU0NSSVBUSU9OOgotCQkJCXJldHVybiBkZXNjcmlwdGlvbiAhPSBudWxsICYmICFkZXNjcmlwdGlvbi5pc0VtcHR5KCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fSUQ6Ci0JCQkJcmV0dXJuIElEX0VERUZBVUxUID09IG51bGwgPyBpZCAhPSBudWxsIDogIUlEX0VERUZBVUxULmVxdWFscyhpZCk7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fTE9DQVRJT046Ci0JCQkJcmV0dXJuIExPQ0FUSU9OX0VERUZBVUxUID09IG51bGwgPyBsb2NhdGlvbiAhPSBudWxsIDogIUxPQ0FUSU9OX0VERUZBVUxULmVxdWFscyhsb2NhdGlvbik7Ci0JCQljYXNlIFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fUkVGOgotCQkJCXJldHVybiBSRUZfRURFRkFVTFQgPT0gbnVsbCA/IHJlZiAhPSBudWxsIDogIVJFRl9FREVGQVVMVC5lcXVhbHMocmVmKTsKLQkJfQotCQlyZXR1cm4gZUR5bmFtaWNJc1NldChlRmVhdHVyZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLQkJaWYgKGVJc1Byb3h5KCkpIHJldHVybiBzdXBlci50b1N0cmluZygpOwotCi0JCVN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotCQlyZXN1bHQuYXBwZW5kKCIgKGlkOiAiKTsKLQkJcmVzdWx0LmFwcGVuZChpZCk7Ci0JCXJlc3VsdC5hcHBlbmQoIiwgbG9jYXRpb246ICIpOwotCQlyZXN1bHQuYXBwZW5kKGxvY2F0aW9uKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCByZWY6ICIpOwotCQlyZXN1bHQuYXBwZW5kKHJlZik7Ci0JCXJlc3VsdC5hcHBlbmQoJyknKTsKLQkJcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotCX0KLQotfSAvL1JlZ2lzdHJ5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvaW1wbC9SZWdpc3RyeVBhY2thZ2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS9pbXBsL1JlZ2lzdHJ5UGFja2FnZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNmOWJlZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS9pbXBsL1JlZ2lzdHJ5UGFja2FnZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU4NiArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJlZ2lzdHJ5UGFja2FnZUltcGwuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ3IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FUGFja2FnZUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuWE1MVHlwZVBhY2thZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuaW1wbC5YTUxUeXBlUGFja2FnZUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LkRlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuTmFtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLlJUSW5kZXhQYWNrYWdlSW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLlRheG9ub215UGFja2FnZUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuaW1wbC5VRERJUmVnaXN0cnlQYWNrYWdlSW1wbDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBSZWdpc3RyeVBhY2thZ2VJbXBsIGV4dGVuZHMgRVBhY2thZ2VJbXBsIGltcGxlbWVudHMgUmVnaXN0cnlQYWNrYWdlIHsKLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcml2YXRlIEVDbGFzcyBkZXNjcmlwdGlvbkVDbGFzcyA9IG51bGw7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcml2YXRlIEVDbGFzcyBkb2N1bWVudFJvb3RFQ2xhc3MgPSBudWxsOwotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBFQ2xhc3MgbmFtZUVDbGFzcyA9IG51bGw7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcml2YXRlIEVDbGFzcyByZWdpc3RyeUVDbGFzcyA9IG51bGw7Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPiwgcmVnaXN0ZXJlZCB3aXRoCi0JICoge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeSBFUGFja2FnZS5SZWdpc3RyeX0gYnkgdGhlIHBhY2thZ2UKLQkgKiBwYWNrYWdlIFVSSSB2YWx1ZS4KLQkgKiA8cD5Ob3RlOiB0aGUgY29ycmVjdCB3YXkgdG8gY3JlYXRlIHRoZSBwYWNrYWdlIGlzIHZpYSB0aGUgc3RhdGljCi0JICogZmFjdG9yeSBtZXRob2Qge0BsaW5rICNpbml0IGluaXQoKX0sIHdoaWNoIGFsc28gcGVyZm9ybXMKLQkgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLAotCSAqIGlmIG9uZSBhbHJlYWR5IGV4aXN0cy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZSNlTlNfVVJJCi0JICogQHNlZSAjaW5pdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgUmVnaXN0cnlQYWNrYWdlSW1wbCgpIHsKLQkJc3VwZXIoZU5TX1VSSSwgUmVnaXN0cnlGYWN0b3J5LmVJTlNUQU5DRSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0luaXRlZCA9IGZhbHNlOwotCi0JLyoqCi0JICogQ3JlYXRlcywgcmVnaXN0ZXJzLCBhbmQgaW5pdGlhbGl6ZXMgdGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGlzCi0JICogbW9kZWwsIGFuZCBmb3IgYW55IG90aGVycyB1cG9uIHdoaWNoIGl0IGRlcGVuZHMuICBTaW1wbGUKLQkgKiBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCBieSBjYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGFsbAotCSAqIGRlcGVuZGVudCBwYWNrYWdlcyBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4gIFRoaXMgbWV0aG9kIGRyaXZlcwotCSAqIGluaXRpYWxpemF0aW9uIGZvciBpbnRlcmRlcGVuZGVudCBwYWNrYWdlcyBkaXJlY3RseSwgaW4gcGFyYWxsZWwKLQkgKiB3aXRoIHRoaXMgcGFja2FnZSwgaXRzZWxmLgotCSAqIDxwPk9mIHRoaXMgcGFja2FnZSBhbmQgaXRzIGludGVyZGVwZW5kZW5jaWVzLCBhbGwgcGFja2FnZXMgd2hpY2gKLQkgKiBoYXZlIG5vdCB5ZXQgYmVlbiByZWdpc3RlcmVkIGJ5IHRoZWlyIFVSSSB2YWx1ZXMgYXJlIGZpcnN0IGNyZWF0ZWQKLQkgKiBhbmQgcmVnaXN0ZXJlZC4gIFRoZSBwYWNrYWdlcyBhcmUgdGhlbiBpbml0aWFsaXplZCBpbiB0d28gc3RlcHM6Ci0JICogbWV0YS1tb2RlbCBvYmplY3RzIGZvciBhbGwgb2YgdGhlIHBhY2thZ2VzIGFyZSBjcmVhdGVkIGJlZm9yZSBhbnkKLQkgKiBhcmUgaW5pdGlhbGl6ZWQsIHNpbmNlIG9uZSBwYWNrYWdlJ3MgbWV0YS1tb2RlbCBvYmplY3RzIG1heSByZWZlciB0bwotCSAqIHRob3NlIG9mIGFub3RoZXIuCi0JICogPHA+SW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCB3aWxsIG5vdCBhZmZlY3QgYW55IHBhY2thZ2VzIHRoYXQgaGF2ZQotCSAqIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2VOU19VUkkKLQkgKiBAc2VlICNjcmVhdGVQYWNrYWdlQ29udGVudHMoKQotCSAqIEBzZWUgI2luaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIFJlZ2lzdHJ5UGFja2FnZSBpbml0KCkgewotCQlpZiAoaXNJbml0ZWQpIHJldHVybiAoUmVnaXN0cnlQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJlZ2lzdHJ5UGFja2FnZS5lTlNfVVJJKTsKLQotCQkvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBwYWNrYWdlCi0JCVJlZ2lzdHJ5UGFja2FnZUltcGwgdGhlUmVnaXN0cnlQYWNrYWdlID0gKFJlZ2lzdHJ5UGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKGVOU19VUkkpIGluc3RhbmNlb2YgUmVnaXN0cnlQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKGVOU19VUkkpIDogbmV3IFJlZ2lzdHJ5UGFja2FnZUltcGwoKSk7Ci0KLQkJaXNJbml0ZWQgPSB0cnVlOwotCi0JCS8vIEluaXRpYWxpemUgc2ltcGxlIGRlcGVuZGVuY2llcwotCQlYTUxUeXBlUGFja2FnZUltcGwuaW5pdCgpOwotCi0JCS8vIE9idGFpbiBvciBjcmVhdGUgYW5kIHJlZ2lzdGVyIGludGVyZGVwZW5kZW5jaWVzCi0JCVJUSW5kZXhQYWNrYWdlSW1wbCB0aGVSVEluZGV4UGFja2FnZSA9IChSVEluZGV4UGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJUSW5kZXhQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUlRJbmRleFBhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUlRJbmRleFBhY2thZ2UuZU5TX1VSSSkgOiBSVEluZGV4UGFja2FnZUltcGwuZUlOU1RBTkNFKTsKLQkJVGF4b25vbXlQYWNrYWdlSW1wbCB0aGVUYXhvbm9teVBhY2thZ2UgPSAoVGF4b25vbXlQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVGF4b25vbXlQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgVGF4b25vbXlQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFRheG9ub215UGFja2FnZS5lTlNfVVJJKSA6IFRheG9ub215UGFja2FnZUltcGwuZUlOU1RBTkNFKTsKLQkJVURESVJlZ2lzdHJ5UGFja2FnZUltcGwgdGhlVURESVJlZ2lzdHJ5UGFja2FnZSA9IChVRERJUmVnaXN0cnlQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVURESVJlZ2lzdHJ5UGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIFVERElSZWdpc3RyeVBhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVURESVJlZ2lzdHJ5UGFja2FnZS5lTlNfVVJJKSA6IFVERElSZWdpc3RyeVBhY2thZ2VJbXBsLmVJTlNUQU5DRSk7Ci0KLQkJLy8gQ3JlYXRlIHBhY2thZ2UgbWV0YS1kYXRhIG9iamVjdHMKLQkJdGhlUmVnaXN0cnlQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVSVEluZGV4UGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsKLQkJdGhlVGF4b25vbXlQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVVRERJUmVnaXN0cnlQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOwotCi0JCS8vIEluaXRpYWxpemUgY3JlYXRlZCBtZXRhLWRhdGEKLQkJdGhlUmVnaXN0cnlQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsKLQkJdGhlUlRJbmRleFBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVUYXhvbm9teVBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVVRERJUmVnaXN0cnlQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsKLQotCQkvLyBNYXJrIG1ldGEtZGF0YSB0byBpbmRpY2F0ZSBpdCBjYW4ndCBiZSBjaGFuZ2VkCi0JCXRoZVJlZ2lzdHJ5UGFja2FnZS5mcmVlemUoKTsKLQotCQlyZXR1cm4gdGhlUmVnaXN0cnlQYWNrYWdlOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQ2xhc3MgZ2V0RGVzY3JpcHRpb24oKSB7Ci0JCXJldHVybiBkZXNjcmlwdGlvbkVDbGFzczsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXREZXNjcmlwdGlvbl9WYWx1ZSgpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKWRlc2NyaXB0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0RGVzY3JpcHRpb25fTGFuZygpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKWRlc2NyaXB0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVDbGFzcyBnZXREb2N1bWVudFJvb3QoKSB7Ci0JCXJldHVybiBkb2N1bWVudFJvb3RFQ2xhc3M7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0RG9jdW1lbnRSb290X01peGVkKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X1hNTE5TUHJlZml4TWFwKCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X1hTSVNjaGVtYUxvY2F0aW9uKCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X0Rlc2NyaXB0aW9uKCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X05hbWUoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSlkb2N1bWVudFJvb3RFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg0KTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfUmVnaXN0cnkoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSlkb2N1bWVudFJvb3RFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg1KTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUNsYXNzIGdldE5hbWVfKCkgewotCQlyZXR1cm4gbmFtZUVDbGFzczsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXROYW1lX1ZhbHVlKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpbmFtZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQXR0cmlidXRlIGdldE5hbWVfTGFuZygpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKW5hbWVFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUNsYXNzIGdldFJlZ2lzdHJ5KCkgewotCQlyZXR1cm4gcmVnaXN0cnlFQ2xhc3M7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0UmVnaXN0cnlfTmFtZSgpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKXJlZ2lzdHJ5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0UmVnaXN0cnlfRGVzY3JpcHRpb24oKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSlyZWdpc3RyeUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQXR0cmlidXRlIGdldFJlZ2lzdHJ5X0lkKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpcmVnaXN0cnlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRSZWdpc3RyeV9Mb2NhdGlvbigpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKXJlZ2lzdHJ5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0UmVnaXN0cnlfUmVmKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpcmVnaXN0cnlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg0KTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgUmVnaXN0cnlGYWN0b3J5IGdldFJlZ2lzdHJ5RmFjdG9yeSgpIHsKLQkJcmV0dXJuIChSZWdpc3RyeUZhY3RvcnkpZ2V0RUZhY3RvcnlJbnN0YW5jZSgpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgYm9vbGVhbiBpc0NyZWF0ZWQgPSBmYWxzZTsKLQotCS8qKgotCSAqIENyZWF0ZXMgdGhlIG1ldGEtbW9kZWwgb2JqZWN0cyBmb3IgdGhlIHBhY2thZ2UuICBUaGlzIG1ldGhvZCBpcwotCSAqIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBjcmVhdGVQYWNrYWdlQ29udGVudHMoKSB7Ci0JCWlmIChpc0NyZWF0ZWQpIHJldHVybjsKLQkJaXNDcmVhdGVkID0gdHJ1ZTsKLQotCQkvLyBDcmVhdGUgY2xhc3NlcyBhbmQgdGhlaXIgZmVhdHVyZXMKLQkJZGVzY3JpcHRpb25FQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoREVTQ1JJUFRJT04pOwotCQljcmVhdGVFQXR0cmlidXRlKGRlc2NyaXB0aW9uRUNsYXNzLCBERVNDUklQVElPTl9fVkFMVUUpOwotCQljcmVhdGVFQXR0cmlidXRlKGRlc2NyaXB0aW9uRUNsYXNzLCBERVNDUklQVElPTl9fTEFORyk7Ci0KLQkJZG9jdW1lbnRSb290RUNsYXNzID0gY3JlYXRlRUNsYXNzKERPQ1VNRU5UX1JPT1QpOwotCQljcmVhdGVFQXR0cmlidXRlKGRvY3VtZW50Um9vdEVDbGFzcywgRE9DVU1FTlRfUk9PVF9fTUlYRUQpOwotCQljcmVhdGVFUmVmZXJlbmNlKGRvY3VtZW50Um9vdEVDbGFzcywgRE9DVU1FTlRfUk9PVF9fWE1MTlNfUFJFRklYX01BUCk7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShkb2N1bWVudFJvb3RFQ2xhc3MsIERPQ1VNRU5UX1JPT1RfX0RFU0NSSVBUSU9OKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShkb2N1bWVudFJvb3RFQ2xhc3MsIERPQ1VNRU5UX1JPT1RfX05BTUUpOwotCQljcmVhdGVFUmVmZXJlbmNlKGRvY3VtZW50Um9vdEVDbGFzcywgRE9DVU1FTlRfUk9PVF9fUkVHSVNUUlkpOwotCi0JCW5hbWVFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoTkFNRSk7Ci0JCWNyZWF0ZUVBdHRyaWJ1dGUobmFtZUVDbGFzcywgTkFNRV9fVkFMVUUpOwotCQljcmVhdGVFQXR0cmlidXRlKG5hbWVFQ2xhc3MsIE5BTUVfX0xBTkcpOwotCi0JCXJlZ2lzdHJ5RUNsYXNzID0gY3JlYXRlRUNsYXNzKFJFR0lTVFJZKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShyZWdpc3RyeUVDbGFzcywgUkVHSVNUUllfX05BTUUpOwotCQljcmVhdGVFUmVmZXJlbmNlKHJlZ2lzdHJ5RUNsYXNzLCBSRUdJU1RSWV9fREVTQ1JJUFRJT04pOwotCQljcmVhdGVFQXR0cmlidXRlKHJlZ2lzdHJ5RUNsYXNzLCBSRUdJU1RSWV9fSUQpOwotCQljcmVhdGVFQXR0cmlidXRlKHJlZ2lzdHJ5RUNsYXNzLCBSRUdJU1RSWV9fTE9DQVRJT04pOwotCQljcmVhdGVFQXR0cmlidXRlKHJlZ2lzdHJ5RUNsYXNzLCBSRUdJU1RSWV9fUkVGKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcml2YXRlIGJvb2xlYW4gaXNJbml0aWFsaXplZCA9IGZhbHNlOwotCi0JLyoqCi0JICogQ29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwYWNrYWdlIGFuZCBpdHMgbWV0YS1tb2RlbC4gIFRoaXMKLQkgKiBtZXRob2QgaXMgZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKSB7Ci0JCWlmIChpc0luaXRpYWxpemVkKSByZXR1cm47Ci0JCWlzSW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0JCS8vIEluaXRpYWxpemUgcGFja2FnZQotCQlzZXROYW1lKGVOQU1FKTsKLQkJc2V0TnNQcmVmaXgoZU5TX1BSRUZJWCk7Ci0JCXNldE5zVVJJKGVOU19VUkkpOwotCi0JCS8vIE9idGFpbiBvdGhlciBkZXBlbmRlbnQgcGFja2FnZXMKLQkJWE1MVHlwZVBhY2thZ2VJbXBsIHRoZVhNTFR5cGVQYWNrYWdlID0gKFhNTFR5cGVQYWNrYWdlSW1wbClFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShYTUxUeXBlUGFja2FnZS5lTlNfVVJJKTsKLQotCQkvLyBBZGQgc3VwZXJ0eXBlcyB0byBjbGFzc2VzCi0KLQkJLy8gSW5pdGlhbGl6ZSBjbGFzc2VzIGFuZCBmZWF0dXJlczsgYWRkIG9wZXJhdGlvbnMgYW5kIHBhcmFtZXRlcnMKLQkJaW5pdEVDbGFzcyhkZXNjcmlwdGlvbkVDbGFzcywgRGVzY3JpcHRpb24uY2xhc3MsICJEZXNjcmlwdGlvbiIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0RGVzY3JpcHRpb25fVmFsdWUoKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0U3RyaW5nKCksICJ2YWx1ZSIsIG51bGwsIDAsIDEsIERlc2NyaXB0aW9uLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0RGVzY3JpcHRpb25fTGFuZygpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRMYW5ndWFnZSgpLCAibGFuZyIsIG51bGwsIDAsIDEsIERlc2NyaXB0aW9uLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQotCQlpbml0RUNsYXNzKGRvY3VtZW50Um9vdEVDbGFzcywgRG9jdW1lbnRSb290LmNsYXNzLCAiRG9jdW1lbnRSb290IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOwotCQlpbml0RUF0dHJpYnV0ZShnZXREb2N1bWVudFJvb3RfTWl4ZWQoKSwgZWNvcmVQYWNrYWdlLmdldEVGZWF0dXJlTWFwRW50cnkoKSwgIm1peGVkIiwgbnVsbCwgMCwgLTEsIG51bGwsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RVJlZmVyZW5jZShnZXREb2N1bWVudFJvb3RfWE1MTlNQcmVmaXhNYXAoKSwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmdUb1N0cmluZ01hcEVudHJ5KCksIG51bGwsICJ4TUxOU1ByZWZpeE1hcCIsIG51bGwsIDAsIC0xLCBudWxsLCBJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RVJlZmVyZW5jZShnZXREb2N1bWVudFJvb3RfWFNJU2NoZW1hTG9jYXRpb24oKSwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmdUb1N0cmluZ01hcEVudHJ5KCksIG51bGwsICJ4U0lTY2hlbWFMb2NhdGlvbiIsIG51bGwsIDAsIC0xLCBudWxsLCBJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RVJlZmVyZW5jZShnZXREb2N1bWVudFJvb3RfRGVzY3JpcHRpb24oKSwgdGhpcy5nZXREZXNjcmlwdGlvbigpLCBudWxsLCAiZGVzY3JpcHRpb24iLCBudWxsLCAwLCAtMiwgbnVsbCwgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVSZWZlcmVuY2UoZ2V0RG9jdW1lbnRSb290X05hbWUoKSwgdGhpcy5nZXROYW1lXygpLCBudWxsLCAibmFtZSIsIG51bGwsIDAsIC0yLCBudWxsLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RVJlZmVyZW5jZShnZXREb2N1bWVudFJvb3RfUmVnaXN0cnkoKSwgdGhpcy5nZXRSZWdpc3RyeSgpLCBudWxsLCAicmVnaXN0cnkiLCBudWxsLCAwLCAtMiwgbnVsbCwgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQotCQlpbml0RUNsYXNzKG5hbWVFQ2xhc3MsIE5hbWUuY2xhc3MsICJOYW1lIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOwotCQlpbml0RUF0dHJpYnV0ZShnZXROYW1lX1ZhbHVlKCksIHRoZVhNTFR5cGVQYWNrYWdlLmdldFN0cmluZygpLCAidmFsdWUiLCBudWxsLCAwLCAxLCBOYW1lLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0TmFtZV9MYW5nKCksIHRoZVhNTFR5cGVQYWNrYWdlLmdldExhbmd1YWdlKCksICJsYW5nIiwgbnVsbCwgMCwgMSwgTmFtZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0KLQkJaW5pdEVDbGFzcyhyZWdpc3RyeUVDbGFzcywgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeS5jbGFzcywgIlJlZ2lzdHJ5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOwotCQlpbml0RVJlZmVyZW5jZShnZXRSZWdpc3RyeV9OYW1lKCksIHRoaXMuZ2V0TmFtZV8oKSwgbnVsbCwgIm5hbWUiLCBudWxsLCAxLCAtMSwgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVSZWZlcmVuY2UoZ2V0UmVnaXN0cnlfRGVzY3JpcHRpb24oKSwgdGhpcy5nZXREZXNjcmlwdGlvbigpLCBudWxsLCAiZGVzY3JpcHRpb24iLCBudWxsLCAxLCAtMSwgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0UmVnaXN0cnlfSWQoKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0QW55VVJJKCksICJpZCIsIG51bGwsIDAsIDEsIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RUF0dHJpYnV0ZShnZXRSZWdpc3RyeV9Mb2NhdGlvbigpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRBbnlVUkkoKSwgImxvY2F0aW9uIiwgbnVsbCwgMCwgMSwgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFQXR0cmlidXRlKGdldFJlZ2lzdHJ5X1JlZigpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRBbnlVUkkoKSwgInJlZiIsIG51bGwsIDAsIDEsIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCi0JCS8vIENyZWF0ZSByZXNvdXJjZQotCQljcmVhdGVSZXNvdXJjZShlTlNfVVJJKTsKLQotCQkvLyBDcmVhdGUgYW5ub3RhdGlvbnMKLQkJLy8gaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhCi0JCWNyZWF0ZUV4dGVuZGVkTWV0YURhdGFBbm5vdGF0aW9ucygpOwotCX0KLQotCS8qKgotCSAqIEluaXRpYWxpemVzIHRoZSBhbm5vdGF0aW9ucyBmb3IgPGI+aHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhPC9iPi4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgdm9pZCBjcmVhdGVFeHRlbmRlZE1ldGFEYXRhQW5ub3RhdGlvbnMoKSB7Ci0JCVN0cmluZyBzb3VyY2UgPSAiaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIjsJCQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChkZXNjcmlwdGlvbkVDbGFzcywgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgIm5hbWUiLCAiRGVzY3JpcHRpb24iLAotCQkJICJraW5kIiwgInNpbXBsZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXREZXNjcmlwdGlvbl9WYWx1ZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAibmFtZSIsICI6MCIsCi0JCQkgImtpbmQiLCAic2ltcGxlIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERlc2NyaXB0aW9uX0xhbmcoKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiYXR0cmlidXRlIiwKLQkJCSAibmFtZSIsICJsYW5nIiwKLQkJCSAibmFtZXNwYWNlIiwgImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChkb2N1bWVudFJvb3RFQ2xhc3MsIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJuYW1lIiwgIiIsCi0JCQkgImtpbmQiLCAibWl4ZWQiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0RG9jdW1lbnRSb290X01peGVkKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnRXaWxkY2FyZCIsCi0JCQkgIm5hbWUiLCAiOm1peGVkIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERvY3VtZW50Um9vdF9YTUxOU1ByZWZpeE1hcCgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgInhtbG5zOnByZWZpeCIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXREb2N1bWVudFJvb3RfWFNJU2NoZW1hTG9jYXRpb24oKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiYXR0cmlidXRlIiwKLQkJCSAibmFtZSIsICJ4c2k6c2NoZW1hTG9jYXRpb24iCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0RG9jdW1lbnRSb290X0Rlc2NyaXB0aW9uKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgImRlc2NyaXB0aW9uIiwKLQkJCSAibmFtZXNwYWNlIiwgIiMjdGFyZ2V0TmFtZXNwYWNlIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERvY3VtZW50Um9vdF9OYW1lKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgIm5hbWUiLAotCQkJICJuYW1lc3BhY2UiLCAiIyN0YXJnZXROYW1lc3BhY2UiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0RG9jdW1lbnRSb290X1JlZ2lzdHJ5KCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgInJlZ2lzdHJ5IiwKLQkJCSAibmFtZXNwYWNlIiwgIiMjdGFyZ2V0TmFtZXNwYWNlIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKG5hbWVFQ2xhc3MsIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJuYW1lIiwgIk5hbWUiLAotCQkJICJraW5kIiwgInNpbXBsZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXROYW1lX1ZhbHVlKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJuYW1lIiwgIjowIiwKLQkJCSAia2luZCIsICJzaW1wbGUiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0TmFtZV9MYW5nKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImF0dHJpYnV0ZSIsCi0JCQkgIm5hbWUiLCAibGFuZyIsCi0JCQkgIm5hbWVzcGFjZSIsICJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAocmVnaXN0cnlFQ2xhc3MsIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJuYW1lIiwgIlJlZ2lzdHJ5IiwKLQkJCSAia2luZCIsICJlbGVtZW50T25seSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRSZWdpc3RyeV9OYW1lKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgIm5hbWUiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0UmVnaXN0cnlfRGVzY3JpcHRpb24oKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiZWxlbWVudCIsCi0JCQkgIm5hbWUiLCAiZGVzY3JpcHRpb24iCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0UmVnaXN0cnlfSWQoKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiYXR0cmlidXRlIiwKLQkJCSAibmFtZSIsICJpZCIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRSZWdpc3RyeV9Mb2NhdGlvbigpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgImxvY2F0aW9uIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldFJlZ2lzdHJ5X1JlZigpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgInJlZiIKLQkJICAgfSk7Ci0JfQotCi19IC8vUmVnaXN0cnlQYWNrYWdlSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvdXRpbC9SZWdpc3RyeUFkYXB0ZXJGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS91dGlsL1JlZ2lzdHJ5QWRhcHRlckZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFiMjA1MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS91dGlsL1JlZ2lzdHJ5QWRhcHRlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJlZ2lzdHJ5QWRhcHRlckZhY3RvcnkuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjUxIGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS51dGlsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmllcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LmltcGwuQWRhcHRlckZhY3RvcnlJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5Lio7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5BZGFwdGVyIEZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuCi0gKiBJdCBwcm92aWRlcyBhbiBhZGFwdGVyIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgUmVnaXN0cnlBZGFwdGVyRmFjdG9yeSBleHRlbmRzIEFkYXB0ZXJGYWN0b3J5SW1wbCB7Ci0JLyoqCi0JICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgUmVnaXN0cnlQYWNrYWdlIG1vZGVsUGFja2FnZTsKLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGFkYXB0ZXIgZmFjdG9yeS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgUmVnaXN0cnlBZGFwdGVyRmFjdG9yeSgpIHsKLQkJaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKSB7Ci0JCQltb2RlbFBhY2thZ2UgPSBSZWdpc3RyeVBhY2thZ2UuZUlOU1RBTkNFOwotCQl9Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBvYmplY3QgaXMgZWl0aGVyIHRoZSBtb2RlbCdzIHBhY2thZ2Ugb3IgaXMgYW4gaW5zdGFuY2Ugb2JqZWN0IG9mIHRoZSBtb2RlbC4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzRmFjdG9yeUZvclR5cGUoT2JqZWN0IG9iamVjdCkgewotCQlpZiAob2JqZWN0ID09IG1vZGVsUGFja2FnZSkgewotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVPYmplY3QpIHsKLQkJCXJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsKLQkJfQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyoqCi0JICogVGhlIHN3aXRjaCB0aGUgZGVsZWdhdGVzIHRvIHRoZSA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZHMuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIFJlZ2lzdHJ5U3dpdGNoIG1vZGVsU3dpdGNoID0KLQkJbmV3IFJlZ2lzdHJ5U3dpdGNoKCkgewotCQkJcHVibGljIE9iamVjdCBjYXNlRGVzY3JpcHRpb24oRGVzY3JpcHRpb24gb2JqZWN0KSB7Ci0JCQkJcmV0dXJuIGNyZWF0ZURlc2NyaXB0aW9uQWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBjYXNlRG9jdW1lbnRSb290KERvY3VtZW50Um9vdCBvYmplY3QpIHsKLQkJCQlyZXR1cm4gY3JlYXRlRG9jdW1lbnRSb290QWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBjYXNlTmFtZShOYW1lIG9iamVjdCkgewotCQkJCXJldHVybiBjcmVhdGVOYW1lQWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBjYXNlUmVnaXN0cnkoUmVnaXN0cnkgb2JqZWN0KSB7Ci0JCQkJcmV0dXJuIGNyZWF0ZVJlZ2lzdHJ5QWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgewotCQkJCXJldHVybiBjcmVhdGVFT2JqZWN0QWRhcHRlcigpOwotCQkJfQotCQl9OwotCi0JLyoqCi0JICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4KLQkgKiBAcmV0dXJuIHRoZSBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlQWRhcHRlcihOb3RpZmllciB0YXJnZXQpIHsKLQkJcmV0dXJuIChBZGFwdGVyKW1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7Ci0JfQotCi0KLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRGVzY3JpcHRpb24gPGVtPkRlc2NyaXB0aW9uPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLQkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRGVzY3JpcHRpb24KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlRGVzY3JpcHRpb25BZGFwdGVyKCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290IDxlbT5Eb2N1bWVudCBSb290PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLQkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZURvY3VtZW50Um9vdEFkYXB0ZXIoKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5OYW1lIDxlbT5OYW1lPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLQkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuTmFtZQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgQWRhcHRlciBjcmVhdGVOYW1lQWRhcHRlcigpIHsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5IDxlbT5SZWdpc3RyeTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0JICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVJlZ2lzdHJ5QWRhcHRlcigpIHsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciB0aGUgZGVmYXVsdCBjYXNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbC4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlRU9iamVjdEFkYXB0ZXIoKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotfSAvL1JlZ2lzdHJ5QWRhcHRlckZhY3RvcnkKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L3V0aWwvUmVnaXN0cnlSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS91dGlsL1JlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Mjc4NzIzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L3V0aWwvUmVnaXN0cnlSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NTEgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRXh0ZW5kZWRNZXRhRGF0YTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWkuWE1MUmVzb3VyY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1pLmltcGwuWE1MUmVzb3VyY2VGYWN0b3J5SW1wbDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlJlc291cmNlIEZhY3Rvcnk8L2I+IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFja2FnZS4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LnV0aWwuUmVnaXN0cnlSZXNvdXJjZUltcGwKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFJlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbCBleHRlbmRzIFhNTFJlc291cmNlRmFjdG9yeUltcGwgewotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBFeHRlbmRlZE1ldGFEYXRhIGV4dGVuZGVkTWV0YURhdGE7Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZSBmYWN0b3J5LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBSZWdpc3RyeVJlc291cmNlRmFjdG9yeUltcGwoKSB7Ci0JCXN1cGVyKCk7Ci0JCWV4dGVuZGVkTWV0YURhdGEgPSBFeHRlbmRlZE1ldGFEYXRhLklOU1RBTkNFOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHJlc291cmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBSZXNvdXJjZSBjcmVhdGVSZXNvdXJjZShVUkkgdXJpKSB7Ci0JCVhNTFJlc291cmNlIHJlc3VsdCA9IG5ldyBSZWdpc3RyeVJlc291cmNlSW1wbCh1cmkpOwotCQlyZXN1bHQuZ2V0RGVmYXVsdFNhdmVPcHRpb25zKCkucHV0KFhNTFJlc291cmNlLk9QVElPTl9FWFRFTkRFRF9NRVRBX0RBVEEsIGV4dGVuZGVkTWV0YURhdGEpOwotCQlyZXN1bHQuZ2V0RGVmYXVsdExvYWRPcHRpb25zKCkucHV0KFhNTFJlc291cmNlLk9QVElPTl9FWFRFTkRFRF9NRVRBX0RBVEEsIGV4dGVuZGVkTWV0YURhdGEpOwotCi0JCXJlc3VsdC5nZXREZWZhdWx0U2F2ZU9wdGlvbnMoKS5wdXQoWE1MUmVzb3VyY2UuT1BUSU9OX1NDSEVNQV9MT0NBVElPTiwgQm9vbGVhbi5UUlVFKTsKLQkJcmVzdWx0LmdldERlZmF1bHRTYXZlT3B0aW9ucygpLnB1dChYTUxSZXNvdXJjZS5PUFRJT05fVVNFX0VOQ09ERURfQVRUUklCVVRFX1NUWUxFLCBCb29sZWFuLlRSVUUpOwotCi0JCXJlc3VsdC5nZXREZWZhdWx0TG9hZE9wdGlvbnMoKS5wdXQoWE1MUmVzb3VyY2UuT1BUSU9OX1VTRV9MRVhJQ0FMX0hBTkRMRVIsIEJvb2xlYW4uVFJVRSk7Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotCi19IC8vUmVnaXN0cnlSZXNvdXJjZUZhY3RvcnlJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS91dGlsL1JlZ2lzdHJ5UmVzb3VyY2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9yZWdpc3RyeS91dGlsL1JlZ2lzdHJ5UmVzb3VyY2VJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYmZjMDAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvdXRpbC9SZWdpc3RyeVJlc291cmNlSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBSZWdpc3RyeVJlc291cmNlSW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NTEgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaS5pbXBsLlhNTFJlc291cmNlSW1wbDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlJlc291cmNlIDwvYj4gYXNzb2NpYXRlZCB3aXRoIHRoZSBwYWNrYWdlLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkudXRpbC5SZWdpc3RyeVJlc291cmNlRmFjdG9yeUltcGwKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFJlZ2lzdHJ5UmVzb3VyY2VJbXBsIGV4dGVuZHMgWE1MUmVzb3VyY2VJbXBsIHsKLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB1cmkgdGhlIFVSSSBvZiB0aGUgbmV3IHJlc291cmNlLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgUmVnaXN0cnlSZXNvdXJjZUltcGwoVVJJIHVyaSkgewotCQlzdXBlcih1cmkpOwotCX0KLQotfSAvL1JlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvdXRpbC9SZWdpc3RyeVN3aXRjaC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcmVnaXN0cnkvdXRpbC9SZWdpc3RyeVN3aXRjaC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzkzNzBlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5L3V0aWwvUmVnaXN0cnlTd2l0Y2guamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJlZ2lzdHJ5U3dpdGNoLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo1MSBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkudXRpbDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuKjsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlN3aXRjaDwvYj4gZm9yIHRoZSBtb2RlbCdzIGluaGVyaXRhbmNlIGhpZXJhcmNoeS4KLSAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2goRU9iamVjdCkgZG9Td2l0Y2gob2JqZWN0KX0KLSAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwKLSAqIHN0YXJ0aW5nIHdpdGggdGhlIGFjdHVhbCBjbGFzcyBvZiB0aGUgb2JqZWN0Ci0gKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5Ci0gKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwKLSAqIHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgdGhlIHN3aXRjaC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgUmVnaXN0cnlTd2l0Y2ggewotCS8qKgotCSAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZQotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgUmVnaXN0cnlQYWNrYWdlIG1vZGVsUGFja2FnZTsKLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN3aXRjaC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgUmVnaXN0cnlTd2l0Y2goKSB7Ci0JCWlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkgewotCQkJbW9kZWxQYWNrYWdlID0gUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRTsKLQkJfQotCX0KLQotCS8qKgotCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBkb1N3aXRjaChFT2JqZWN0IHRoZUVPYmplY3QpIHsKLQkJcmV0dXJuIGRvU3dpdGNoKHRoZUVPYmplY3QuZUNsYXNzKCksIHRoZUVPYmplY3QpOwotCX0KLQotCS8qKgotCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIE9iamVjdCBkb1N3aXRjaChFQ2xhc3MgdGhlRUNsYXNzLCBFT2JqZWN0IHRoZUVPYmplY3QpIHsKLQkJaWYgKHRoZUVDbGFzcy5lQ29udGFpbmVyKCkgPT0gbW9kZWxQYWNrYWdlKSB7Ci0JCQlyZXR1cm4gZG9Td2l0Y2godGhlRUNsYXNzLmdldENsYXNzaWZpZXJJRCgpLCB0aGVFT2JqZWN0KTsKLQkJfQotCQllbHNlIHsKLQkJCUxpc3QgZVN1cGVyVHlwZXMgPSB0aGVFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKTsKLQkJCXJldHVybgotCQkJCWVTdXBlclR5cGVzLmlzRW1wdHkoKSA/Ci0JCQkJCWRlZmF1bHRDYXNlKHRoZUVPYmplY3QpIDoKLQkJCQkJZG9Td2l0Y2goKEVDbGFzcyllU3VwZXJUeXBlcy5nZXQoMCksIHRoZUVPYmplY3QpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgT2JqZWN0IGRvU3dpdGNoKGludCBjbGFzc2lmaWVySUQsIEVPYmplY3QgdGhlRU9iamVjdCkgewotCQlzd2l0Y2ggKGNsYXNzaWZpZXJJRCkgewotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuREVTQ1JJUFRJT046IHsKLQkJCQlEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiA9IChEZXNjcmlwdGlvbil0aGVFT2JqZWN0OwotCQkJCU9iamVjdCByZXN1bHQgPSBjYXNlRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwotCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0JCQkJcmV0dXJuIHJlc3VsdDsKLQkJCX0KLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1Q6IHsKLQkJCQlEb2N1bWVudFJvb3QgZG9jdW1lbnRSb290ID0gKERvY3VtZW50Um9vdCl0aGVFT2JqZWN0OwotCQkJCU9iamVjdCByZXN1bHQgPSBjYXNlRG9jdW1lbnRSb290KGRvY3VtZW50Um9vdCk7Ci0JCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLQkJCQlyZXR1cm4gcmVzdWx0OwotCQkJfQotCQkJY2FzZSBSZWdpc3RyeVBhY2thZ2UuTkFNRTogewotCQkJCU5hbWUgbmFtZSA9IChOYW1lKXRoZUVPYmplY3Q7Ci0JCQkJT2JqZWN0IHJlc3VsdCA9IGNhc2VOYW1lKG5hbWUpOwotCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0JCQkJcmV0dXJuIHJlc3VsdDsKLQkJCX0KLQkJCWNhc2UgUmVnaXN0cnlQYWNrYWdlLlJFR0lTVFJZOiB7Ci0JCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSAoUmVnaXN0cnkpdGhlRU9iamVjdDsKLQkJCQlPYmplY3QgcmVzdWx0ID0gY2FzZVJlZ2lzdHJ5KHJlZ2lzdHJ5KTsKLQkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotCQkJCXJldHVybiByZXN1bHQ7Ci0JCQl9Ci0JCQlkZWZhdWx0OiByZXR1cm4gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGVzY3JpcHRpb248L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLQkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLQkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGVzY3JpcHRpb248L2VtPicuCi0JICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgY2FzZURlc2NyaXB0aW9uKERlc2NyaXB0aW9uIG9iamVjdCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGNhc2VEb2N1bWVudFJvb3QoRG9jdW1lbnRSb290IG9iamVjdCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+TmFtZTwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5OYW1lPC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGNhc2VOYW1lKE5hbWUgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5SZWdpc3RyeTwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5SZWdpc3RyeTwvZW0+Jy4KLQkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBjYXNlUmVnaXN0cnkoUmVnaXN0cnkgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0JICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2gsIGJ1dCB0aGlzIGlzIHRoZSBsYXN0IGNhc2UgYW55d2F5LgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGRlZmF1bHRDYXNlKEVPYmplY3Qgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotfSAvL1JlZ2lzdHJ5U3dpdGNoCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L0Rlc2NyaXB0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L0Rlc2NyaXB0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1Nzc2MzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9EZXNjcmlwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBEZXNjcmlwdGlvbi5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDggY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXg7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGVzY3JpcHRpb248L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRlc2NyaXB0aW9uI2dldFZhbHVlIDxlbT5WYWx1ZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRlc2NyaXB0aW9uI2dldExhbmcgPGVtPkxhbmc8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZSNnZXREZXNjcmlwdGlvbigpCi0gKiBAbW9kZWwgCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRGVzY3JpcHRpb24gZXh0ZW5kcyBFT2JqZWN0IHsKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5WYWx1ZTwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VmFsdWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+VmFsdWU8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI3NldFZhbHVlKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZSNnZXREZXNjcmlwdGlvbl9WYWx1ZSgpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuU3RyaW5nIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZ2V0VmFsdWUoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5EZXNjcmlwdGlvbiNnZXRWYWx1ZSA8ZW0+VmFsdWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlZhbHVlPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNnZXRWYWx1ZSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0VmFsdWUoU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkxhbmc8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkxhbmc8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TGFuZzwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0TGFuZyhTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2UjZ2V0RGVzY3JpcHRpb25fTGFuZygpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuTGFuZ3VhZ2UiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRMYW5nKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb24jZ2V0TGFuZyA8ZW0+TGFuZzwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TGFuZzwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0TGFuZygpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0TGFuZyhTdHJpbmcgdmFsdWUpOwotCi19IC8vIERlc2NyaXB0aW9uCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L0RvY3VtZW50Um9vdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9Eb2N1bWVudFJvb3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzMzg4Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L0RvY3VtZW50Um9vdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogRG9jdW1lbnRSb290LmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5GZWF0dXJlTWFwOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Eb2N1bWVudCBSb290PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3QjZ2V0TWl4ZWQgPGVtPk1peGVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290I2dldFhNTE5TUHJlZml4TWFwIDxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290I2dldFhTSVNjaGVtYUxvY2F0aW9uIDxlbT5YU0kgU2NoZW1hIExvY2F0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290I2dldERlc2NyaXB0aW9uIDxlbT5EZXNjcmlwdGlvbjwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdCNnZXRJbmRleCA8ZW0+SW5kZXg8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3QjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhQYWNrYWdlI2dldERvY3VtZW50Um9vdCgpCi0gKiBAbW9kZWwgCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRG9jdW1lbnRSb290IGV4dGVuZHMgRU9iamVjdCB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TWl4ZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5GZWF0dXJlTWFwLkVudHJ5fS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk1peGVkPC9lbT4nIGF0dHJpYnV0ZSBsaXN0IGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TWl4ZWQ8L2VtPicgYXR0cmlidXRlIGxpc3QuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2UjZ2V0RG9jdW1lbnRSb290X01peGVkKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRmVhdHVyZU1hcEVudHJ5IiBtYW55PSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlGZWF0dXJlTWFwIGdldE1peGVkKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5YTUxOUyBQcmVmaXggTWFwPC9iPjwvZW0+JyBtYXAuCi0JICogVGhlIGtleSBpcyBvZiB0eXBlIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfSwKLQkgKiBhbmQgdGhlIHZhbHVlIGlzIG9mIHR5cGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9LAotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+WE1MTlMgUHJlZml4IE1hcDwvZW0+JyBtYXAgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT4nIG1hcC4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZSNnZXREb2N1bWVudFJvb3RfWE1MTlNQcmVmaXhNYXAoKQotCSAqIEBtb2RlbCBtYXBUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiIGtleVR5cGU9ImphdmEubGFuZy5TdHJpbmciIHZhbHVlVHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdHJhbnNpZW50PSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTWFwIGdldFhNTE5TUHJlZml4TWFwKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5YU0kgU2NoZW1hIExvY2F0aW9uPC9iPjwvZW0+JyBtYXAuCi0JICogVGhlIGtleSBpcyBvZiB0eXBlIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfSwKLQkgKiBhbmQgdGhlIHZhbHVlIGlzIG9mIHR5cGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9LAotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+WFNJIFNjaGVtYSBMb2NhdGlvbjwvZW0+JyBtYXAgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5YU0kgU2NoZW1hIExvY2F0aW9uPC9lbT4nIG1hcC4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZSNnZXREb2N1bWVudFJvb3RfWFNJU2NoZW1hTG9jYXRpb24oKQotCSAqIEBtb2RlbCBtYXBUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiIGtleVR5cGU9ImphdmEubGFuZy5TdHJpbmciIHZhbHVlVHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdHJhbnNpZW50PSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTWFwIGdldFhTSVNjaGVtYUxvY2F0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5EZXNjcmlwdGlvbjwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RGVzY3JpcHRpb248L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RGVzY3JpcHRpb248L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI3NldERlc2NyaXB0aW9uKERlc2NyaXB0aW9uKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhQYWNrYWdlI2dldERvY3VtZW50Um9vdF9EZXNjcmlwdGlvbigpCi0JICogQG1vZGVsIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCURlc2NyaXB0aW9uIGdldERlc2NyaXB0aW9uKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290I2dldERlc2NyaXB0aW9uIDxlbT5EZXNjcmlwdGlvbjwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RGVzY3JpcHRpb248L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI2dldERlc2NyaXB0aW9uKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXREZXNjcmlwdGlvbihEZXNjcmlwdGlvbiB2YWx1ZSk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5JbmRleDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+SW5kZXg8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+SW5kZXg8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI3NldEluZGV4KEluZGV4KQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhQYWNrYWdlI2dldERvY3VtZW50Um9vdF9JbmRleCgpCi0JICogQG1vZGVsIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUluZGV4IGdldEluZGV4KCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290I2dldEluZGV4IDxlbT5JbmRleDwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+SW5kZXg8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI2dldEluZGV4KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXRJbmRleChJbmRleCB2YWx1ZSk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI3NldE5hbWUoTmFtZSkKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZSNnZXREb2N1bWVudFJvb3RfTmFtZSgpCi0JICogQG1vZGVsIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCU5hbWUgZ2V0TmFtZSgpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdCNnZXROYW1lIDxlbT5OYW1lPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiBAc2VlICNnZXROYW1lKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXROYW1lKE5hbWUgdmFsdWUpOwotCi19IC8vIERvY3VtZW50Um9vdApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9JbmRleC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9JbmRleC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGFhNGFhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvSW5kZXguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogSW5kZXguamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ4IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkluZGV4PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5JbmRleCNnZXROYW1lIDxlbT5OYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXgjZ2V0RGVzY3JpcHRpb24gPGVtPkRlc2NyaXB0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXgjZ2V0UmVnaXN0cnkgPGVtPlJlZ2lzdHJ5PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXgjZ2V0VGF4b25vbXkgPGVtPlRheG9ub215PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2UjZ2V0SW5kZXgoKQotICogQG1vZGVsIAotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIEluZGV4IGV4dGVuZHMgRU9iamVjdCB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5OYW1lfS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhQYWNrYWdlI2dldEluZGV4X05hbWUoKQotCSAqIEBtb2RlbCB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguTmFtZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSIgcmVxdWlyZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVMaXN0IGdldE5hbWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkRlc2NyaXB0aW9uPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRlc2NyaXB0aW9ufS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkRlc2NyaXB0aW9uPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RGVzY3JpcHRpb248L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2UjZ2V0SW5kZXhfRGVzY3JpcHRpb24oKQotCSAqIEBtb2RlbCB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb24iIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiIHJlcXVpcmVkPSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTGlzdCBnZXREZXNjcmlwdGlvbigpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UmVnaXN0cnk8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5fS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlJlZ2lzdHJ5PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+UmVnaXN0cnk8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2UjZ2V0SW5kZXhfUmVnaXN0cnkoKQotCSAqIEBtb2RlbCB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5IiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTGlzdCBnZXRSZWdpc3RyeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VGF4b25vbXk8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215fS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlRheG9ub215PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+VGF4b25vbXk8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2UjZ2V0SW5kZXhfVGF4b25vbXkoKQotCSAqIEBtb2RlbCB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215IiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTGlzdCBnZXRUYXhvbm9teSgpOwotCi19IC8vIEluZGV4CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L05hbWUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvTmFtZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTQ1ZmIzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvTmFtZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBOYW1lLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5OYW1lPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5OYW1lI2dldFZhbHVlIDxlbT5WYWx1ZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4Lk5hbWUjZ2V0TGFuZyA8ZW0+TGFuZzwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhQYWNrYWdlI2dldE5hbWVfKCkKLSAqIEBtb2RlbCAKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBOYW1lIGV4dGVuZHMgRU9iamVjdCB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VmFsdWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlZhbHVlPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlZhbHVlPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNzZXRWYWx1ZShTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2UjZ2V0TmFtZV9WYWx1ZSgpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuU3RyaW5nIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZ2V0VmFsdWUoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5OYW1lI2dldFZhbHVlIDxlbT5WYWx1ZTwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VmFsdWU8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI2dldFZhbHVlKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXRWYWx1ZShTdHJpbmcgdmFsdWUpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TGFuZzwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TGFuZzwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5MYW5nPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNzZXRMYW5nKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZSNnZXROYW1lX0xhbmcoKQotCSAqIEBtb2RlbCB1bmlxdWU9ImZhbHNlIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtbC50eXBlLkxhbmd1YWdlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZ2V0TGFuZygpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4Lk5hbWUjZ2V0TGFuZyA8ZW0+TGFuZzwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TGFuZzwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0TGFuZygpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0TGFuZyhTdHJpbmcgdmFsdWUpOwotCi19IC8vIE5hbWUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvUlRJbmRleEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvUlRJbmRleEZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRkYjcwOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L1JUSW5kZXhGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJUSW5kZXhGYWN0b3J5LmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRmFjdG9yeTsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuCi0gKiBJdCBwcm92aWRlcyBhIGNyZWF0ZSBtZXRob2QgZm9yIGVhY2ggbm9uLWFic3RyYWN0IGNsYXNzIG9mIHRoZSBtb2RlbC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2UKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBSVEluZGV4RmFjdG9yeSBleHRlbmRzIEVGYWN0b3J5IHsKLQkvKioKLQkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCVJUSW5kZXhGYWN0b3J5IGVJTlNUQU5DRSA9IG5ldyBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5SVEluZGV4RmFjdG9yeUltcGwoKTsKLQotCS8qKgotCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RGVzY3JpcHRpb248L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRlc2NyaXB0aW9uPC9lbT4nLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlEZXNjcmlwdGlvbiBjcmVhdGVEZXNjcmlwdGlvbigpOwotCi0JLyoqCi0JICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlEb2N1bWVudFJvb3QgY3JlYXRlRG9jdW1lbnRSb290KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkluZGV4PC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5JbmRleDwvZW0+Jy4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JSW5kZXggY3JlYXRlSW5kZXgoKTsKLQotCS8qKgotCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+TmFtZTwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+TmFtZTwvZW0+Jy4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JTmFtZSBjcmVhdGVOYW1lKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVJUSW5kZXhQYWNrYWdlIGdldFJUSW5kZXhQYWNrYWdlKCk7Ci0KLX0gLy9SVEluZGV4RmFjdG9yeQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9SVEluZGV4UGFja2FnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9SVEluZGV4UGFja2FnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWQyYmQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvUlRJbmRleFBhY2thZ2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU1MCArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJUSW5kZXhQYWNrYWdlLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4KLSAqIEl0IGNvbnRhaW5zIGFjY2Vzc29ycyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0byByZXByZXNlbnQKLSAqIDx1bD4KLSAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4KLSAqICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+Ci0gKiAgIDxsaT5lYWNoIGVudW0sPC9saT4KLSAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+Ci0gKiA8L3VsPgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIAotICogICAgU2VlIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS5odG1sIGFuZAotICogICAgaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBuYW1lc3BhY2UuCi0gKiAKLSAqICAgICBUaGlzIHNjaGVtYSBkb2N1bWVudCBkZXNjcmliZXMgdGhlIFhNTCBuYW1lc3BhY2UsIGluIGEgZm9ybQotICogICAgIHN1aXRhYmxlIGZvciBpbXBvcnQgYnkgb3RoZXIgc2NoZW1hIGRvY3VtZW50cy4gIAotICogCi0gKiAgICAgTm90ZSB0aGF0IGxvY2FsIG5hbWVzIGluIHRoaXMgbmFtZXNwYWNlIGFyZSBpbnRlbmRlZCB0byBiZSBkZWZpbmVkCi0gKiAgICAgb25seSBieSB0aGUgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSBvciBpdHMgc3ViZ3JvdXBzLiAgVGhlCi0gKiAgICAgZm9sbG93aW5nIG5hbWVzIGFyZSBjdXJyZW50bHkgZGVmaW5lZCBpbiB0aGlzIG5hbWVzcGFjZSBhbmQgc2hvdWxkCi0gKiAgICAgbm90IGJlIHVzZWQgd2l0aCBjb25mbGljdGluZyBzZW1hbnRpY3MgYnkgYW55IFdvcmtpbmcgR3JvdXAsCi0gKiAgICAgc3BlY2lmaWNhdGlvbiwgb3IgZG9jdW1lbnQgaW5zdGFuY2U6Ci0gKiAKLSAqICAgICBiYXNlIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlCi0gKiAgICAgICAgICBwcm92aWRlcyBhIFVSSSB0byBiZSB1c2VkIGFzIHRoZSBiYXNlIGZvciBpbnRlcnByZXRpbmcgYW55Ci0gKiAgICAgICAgICByZWxhdGl2ZSBVUklzIGluIHRoZSBzY29wZSBvZiB0aGUgZWxlbWVudCBvbiB3aGljaCBpdAotICogICAgICAgICAgYXBwZWFyczsgaXRzIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZAotICogICAgICAgICAgYnkgdmlydHVlIG9mIGl0cyBkZWZpbml0aW9uIGluIHRoZSBYTUwgQmFzZSBzcGVjaWZpY2F0aW9uLgotICogCi0gKiAgICAgaWQgICAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZQotICogICAgICAgICAgc2hvdWxkIGJlIGludGVycHJldGVkIGFzIGlmIGRlY2xhcmVkIHRvIGJlIG9mIHR5cGUgSUQuCi0gKiAgICAgICAgICBUaGUgeG1sOmlkIHNwZWNpZmljYXRpb24gaXMgbm90IHlldCBhIFczQyBSZWNvbW1lbmRhdGlvbiwKLSAqICAgICAgICAgIGJ1dCB0aGlzIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBoZXJlIHRvIGZhY2lsaXRhdGUgZXhwZXJpbWVudGF0aW9uCi0gKiAgICAgICAgICB3aXRoIHRoZSBtZWNoYW5pc21zIGl0IHByb3Bvc2VzLiAgTm90ZSB0aGF0IGl0IGlzIF9ub3RfIGluY2x1ZGVkCi0gKiAgICAgICAgICBpbiB0aGUgc3BlY2lhbEF0dHJzIGF0dHJpYnV0ZSBncm91cC4KLSAqIAotICogICAgIGxhbmcgKGFzIGFuIGF0dHJpYnV0ZSBuYW1lKTogZGVub3RlcyBhbiBhdHRyaWJ1dGUgd2hvc2UgdmFsdWUKLSAqICAgICAgICAgIGlzIGEgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIG5hdHVyYWwgbGFuZ3VhZ2Ugb2YgdGhlIGNvbnRlbnQgb2YKLSAqICAgICAgICAgIGFueSBlbGVtZW50OyBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkCi0gKiAgICAgICAgICBieSB2aXJ0dWUgb2YgaXRzIGRlZmluaXRpb24gaW4gdGhlIFhNTCBzcGVjaWZpY2F0aW9uLgotICogICAKLSAqICAgICBzcGFjZSAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZQotICogICAgICAgICAgdmFsdWUgaXMgYSBrZXl3b3JkIGluZGljYXRpbmcgd2hhdCB3aGl0ZXNwYWNlIHByb2Nlc3NpbmcKLSAqICAgICAgICAgIGRpc2NpcGxpbmUgaXMgaW50ZW5kZWQgZm9yIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50OyBpdHMKLSAqICAgICAgICAgIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCBieSB2aXJ0dWUgb2YgaXRzCi0gKiAgICAgICAgICBkZWZpbml0aW9uIGluIHRoZSBYTUwgc3BlY2lmaWNhdGlvbi4KLSAqIAotICogICAgIEZhdGhlciAoaW4gYW55IGNvbnRleHQgYXQgYWxsKTogZGVub3RlcyBKb24gQm9zYWssIHRoZSBjaGFpciBvZiAKLSAqICAgICAgICAgIHRoZSBvcmlnaW5hbCBYTUwgV29ya2luZyBHcm91cC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZCBieSAKLSAqICAgICAgICAgIHRoZSBmb2xsb3dpbmcgZGVjaXNpb24gb2YgdGhlIFczQyBYTUwgUGxlbmFyeSBhbmQgCi0gKiAgICAgICAgICBYTUwgQ29vcmRpbmF0aW9uIGdyb3VwczoKLSAqIAotICogICAgICAgICAgICAgIEluIGFwcHJlY2lhdGlvbiBmb3IgaGlzIHZpc2lvbiwgbGVhZGVyc2hpcCBhbmQgZGVkaWNhdGlvbgotICogICAgICAgICAgICAgIHRoZSBXM0MgWE1MIFBsZW5hcnkgb24gdGhpcyAxMHRoIGRheSBvZiBGZWJydWFyeSwgMjAwMAotICogICAgICAgICAgICAgIHJlc2VydmVzIGZvciBKb24gQm9zYWsgaW4gcGVycGV0dWl0eSB0aGUgWE1MIG5hbWUKLSAqICAgICAgICAgICAgICB4bWw6RmF0aGVyCi0gKiAgIAotICogVGhpcyBzY2hlbWEgZGVmaW5lcyBhdHRyaWJ1dGVzIGFuZCBhbiBhdHRyaWJ1dGUgZ3JvdXAKLSAqICAgICAgICAgc3VpdGFibGUgZm9yIHVzZSBieQotICogICAgICAgICBzY2hlbWFzIHdpc2hpbmcgdG8gYWxsb3cgeG1sOmJhc2UsIHhtbDpsYW5nLCB4bWw6c3BhY2Ugb3IgeG1sOmlkCi0gKiAgICAgICAgIGF0dHJpYnV0ZXMgb24gZWxlbWVudHMgdGhleSBkZWZpbmUuCi0gKiAKLSAqICAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHN1Y2ggYSBzY2hlbWEgbXVzdCBpbXBvcnQgdGhpcyBzY2hlbWEKLSAqICAgICAgICAgZm9yIHRoZSBYTUwgbmFtZXNwYWNlLCBlLmcuIGFzIGZvbGxvd3M6Ci0gKiAgICAgICAgICZsdDtzY2hlbWEgLiAuIC4mZ3Q7Ci0gKiAgICAgICAgICAuIC4gLgotICogICAgICAgICAgJmx0O2ltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIKLSAqICAgICAgICAgICAgICAgICAgICAgc2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZCIvJmd0OwotICogCi0gKiAgICAgICAgIFN1YnNlcXVlbnRseSwgcXVhbGlmaWVkIHJlZmVyZW5jZSB0byBhbnkgb2YgdGhlIGF0dHJpYnV0ZXMKLSAqICAgICAgICAgb3IgdGhlIGdyb3VwIGRlZmluZWQgYmVsb3cgd2lsbCBoYXZlIHRoZSBkZXNpcmVkIGVmZmVjdCwgZS5nLgotICogCi0gKiAgICAgICAgICZsdDt0eXBlIC4gLiAuJmd0OwotICogICAgICAgICAgLiAuIC4KLSAqICAgICAgICAgICZsdDthdHRyaWJ1dGVHcm91cCByZWY9InhtbDpzcGVjaWFsQXR0cnMiLyZndDsKLSAqICAKLSAqICAgICAgICAgIHdpbGwgZGVmaW5lIGEgdHlwZSB3aGljaCB3aWxsIHNjaGVtYS12YWxpZGF0ZSBhbiBpbnN0YW5jZQotICogICAgICAgICAgZWxlbWVudCB3aXRoIGFueSBvZiB0aG9zZSBhdHRyaWJ1dGVzCi0gKiBJbiBrZWVwaW5nIHdpdGggdGhlIFhNTCBTY2hlbWEgV0cncyBzdGFuZGFyZCB2ZXJzaW9uaW5nCi0gKiAgICBwb2xpY3ksIHRoaXMgc2NoZW1hIGRvY3VtZW50IHdpbGwgcGVyc2lzdCBhdAotICogICAgaHR0cDovL3d3dy53My5vcmcvMjAwNS8wOC94bWwueHNkLgotICogICAgQXQgdGhlIGRhdGUgb2YgaXNzdWUgaXQgY2FuIGFsc28gYmUgZm91bmQgYXQKLSAqICAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZC4KLSAqICAgIFRoZSBzY2hlbWEgZG9jdW1lbnQgYXQgdGhhdCBVUkkgbWF5IGhvd2V2ZXIgY2hhbmdlIGluIHRoZSBmdXR1cmUsCi0gKiAgICBpbiBvcmRlciB0byByZW1haW4gY29tcGF0aWJsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYTUwgU2NoZW1hCi0gKiAgICBpdHNlbGYsIG9yIHdpdGggdGhlIFhNTCBuYW1lc3BhY2UgaXRzZWxmLiAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBYTUwKLSAqICAgIFNjaGVtYSBvciBYTUwgbmFtZXNwYWNlcyBjaGFuZ2UsIHRoZSB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQgYXQKLSAqICAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZCB3aWxsIGNoYW5nZQotICogICAgYWNjb3JkaW5nbHk7IHRoZSB2ZXJzaW9uIGF0Ci0gKiAgICBodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L3htbC54c2Qgd2lsbCBub3QgY2hhbmdlLgotICogICAKLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhGYWN0b3J5Ci0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgUlRJbmRleFBhY2thZ2UgZXh0ZW5kcyBFUGFja2FnZSB7Ci0JLyoqCi0JICogVGhlIHBhY2thZ2UgbmFtZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZU5BTUUgPSAicnRpbmRleCI7Ci0KLQkvKioKLQkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgVVJJLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBlTlNfVVJJID0gImh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgiOwotCi0JLyoqCi0JICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIG5hbWUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JU3RyaW5nIGVOU19QUkVGSVggPSAicnRpbmRleCI7Ci0KLQkvKioKLQkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCVJUSW5kZXhQYWNrYWdlIGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLlJUSW5kZXhQYWNrYWdlSW1wbC5pbml0KCk7Ci0KLQkvKioKLQkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLkRlc2NyaXB0aW9uSW1wbCA8ZW0+RGVzY3JpcHRpb248L2VtPn0nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5EZXNjcmlwdGlvbkltcGwKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLlJUSW5kZXhQYWNrYWdlSW1wbCNnZXREZXNjcmlwdGlvbigpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCWludCBERVNDUklQVElPTiA9IDA7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VmFsdWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBERVNDUklQVElPTl9fVkFMVUUgPSAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxhbmc8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBERVNDUklQVElPTl9fTEFORyA9IDE7Ci0KLQkvKioKLQkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlIHRoZSAnPGVtPkRlc2NyaXB0aW9uPC9lbT4nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERFU0NSSVBUSU9OX0ZFQVRVUkVfQ09VTlQgPSAyOwotCi0JLyoqCi0JICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5Eb2N1bWVudFJvb3RJbXBsIDxlbT5Eb2N1bWVudCBSb290PC9lbT59JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuRG9jdW1lbnRSb290SW1wbAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuUlRJbmRleFBhY2thZ2VJbXBsI2dldERvY3VtZW50Um9vdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UID0gMTsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5NaXhlZDwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgRE9DVU1FTlRfUk9PVF9fTUlYRUQgPSAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlhNTE5TIFByZWZpeCBNYXA8L2I+PC9lbT4nIG1hcC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQID0gMTsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5YU0kgU2NoZW1hIExvY2F0aW9uPC9iPjwvZW0+JyBtYXAuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgRE9DVU1FTlRfUk9PVF9fWFNJX1NDSEVNQV9MT0NBVElPTiA9IDI7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RGVzY3JpcHRpb248L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX19ERVNDUklQVElPTiA9IDM7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+SW5kZXg8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX19JTkRFWCA9IDQ7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfX05BTUUgPSA1OwotCi0JLyoqCi0JICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSB0aGUgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfRkVBVFVSRV9DT1VOVCA9IDY7Ci0KLQkvKioKLQkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLkluZGV4SW1wbCA8ZW0+SW5kZXg8L2VtPn0nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5JbmRleEltcGwKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLlJUSW5kZXhQYWNrYWdlSW1wbCNnZXRJbmRleCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCWludCBJTkRFWCA9IDI7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgSU5ERVhfX05BTUUgPSAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRlc2NyaXB0aW9uPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBJTkRFWF9fREVTQ1JJUFRJT04gPSAxOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlZ2lzdHJ5PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBJTkRFWF9fUkVHSVNUUlkgPSAyOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRheG9ub215PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBJTkRFWF9fVEFYT05PTVkgPSAzOwotCi0JLyoqCi0JICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSB0aGUgJzxlbT5JbmRleDwvZW0+JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBJTkRFWF9GRUFUVVJFX0NPVU5UID0gNDsKLQotCS8qKgotCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuTmFtZUltcGwgPGVtPk5hbWU8L2VtPn0nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5OYW1lSW1wbAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuUlRJbmRleFBhY2thZ2VJbXBsI2dldE5hbWVfKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JaW50IE5BTUUgPSAzOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlZhbHVlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgTkFNRV9fVkFMVUUgPSAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxhbmc8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBOQU1FX19MQU5HID0gMTsKLQotCS8qKgotCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgdGhlICc8ZW0+TmFtZTwvZW0+JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBOQU1FX0ZFQVRVUkVfQ09VTlQgPSAyOwotCi0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb24gPGVtPkRlc2NyaXB0aW9uPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkRlc2NyaXB0aW9uPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRlc2NyaXB0aW9uCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVDbGFzcyBnZXREZXNjcmlwdGlvbigpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb24jZ2V0VmFsdWUgPGVtPlZhbHVlPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VmFsdWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb24jZ2V0VmFsdWUoKQotCSAqIEBzZWUgI2dldERlc2NyaXB0aW9uKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXREZXNjcmlwdGlvbl9WYWx1ZSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb24jZ2V0TGFuZyA8ZW0+TGFuZzwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkxhbmc8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb24jZ2V0TGFuZygpCi0JICogQHNlZSAjZ2V0RGVzY3JpcHRpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldERlc2NyaXB0aW9uX0xhbmcoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3QgPGVtPkRvY3VtZW50IFJvb3Q8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3QKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUNsYXNzIGdldERvY3VtZW50Um9vdCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3QjZ2V0TWl4ZWQgPGVtPk1peGVkPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJzxlbT5NaXhlZDwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3QjZ2V0TWl4ZWQoKQotCSAqIEBzZWUgI2dldERvY3VtZW50Um9vdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVBdHRyaWJ1dGUgZ2V0RG9jdW1lbnRSb290X01peGVkKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIG1hcCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3QjZ2V0WE1MTlNQcmVmaXhNYXAgPGVtPlhNTE5TIFByZWZpeCBNYXA8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBtYXAgJzxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdCNnZXRYTUxOU1ByZWZpeE1hcCgpCi0JICogQHNlZSAjZ2V0RG9jdW1lbnRSb290KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfWE1MTlNQcmVmaXhNYXAoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgbWFwICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdCNnZXRYU0lTY2hlbWFMb2NhdGlvbiA8ZW0+WFNJIFNjaGVtYSBMb2NhdGlvbjwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIG1hcCAnPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290I2dldFhTSVNjaGVtYUxvY2F0aW9uKCkKLQkgKiBAc2VlICNnZXREb2N1bWVudFJvb3QoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9YU0lTY2hlbWFMb2NhdGlvbigpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290I2dldERlc2NyaXB0aW9uIDxlbT5EZXNjcmlwdGlvbjwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPGVtPkRlc2NyaXB0aW9uPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdCNnZXREZXNjcmlwdGlvbigpCi0JICogQHNlZSAjZ2V0RG9jdW1lbnRSb290KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfRGVzY3JpcHRpb24oKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdCNnZXRJbmRleCA8ZW0+SW5kZXg8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5JbmRleDwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3QjZ2V0SW5kZXgoKQotCSAqIEBzZWUgI2dldERvY3VtZW50Um9vdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X0luZGV4KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3QjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPGVtPk5hbWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290I2dldE5hbWUoKQotCSAqIEBzZWUgI2dldERvY3VtZW50Um9vdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X05hbWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5JbmRleCA8ZW0+SW5kZXg8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SW5kZXg8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXgKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUNsYXNzIGdldEluZGV4KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkluZGV4I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPk5hbWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXgjZ2V0TmFtZSgpCi0JICogQHNlZSAjZ2V0SW5kZXgoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldEluZGV4X05hbWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXgjZ2V0RGVzY3JpcHRpb24gPGVtPkRlc2NyaXB0aW9uPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5EZXNjcmlwdGlvbjwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5JbmRleCNnZXREZXNjcmlwdGlvbigpCi0JICogQHNlZSAjZ2V0SW5kZXgoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldEluZGV4X0Rlc2NyaXB0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkluZGV4I2dldFJlZ2lzdHJ5IDxlbT5SZWdpc3RyeTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+UmVnaXN0cnk8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXgjZ2V0UmVnaXN0cnkoKQotCSAqIEBzZWUgI2dldEluZGV4KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXRJbmRleF9SZWdpc3RyeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5JbmRleCNnZXRUYXhvbm9teSA8ZW0+VGF4b25vbXk8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPlRheG9ub215PC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkluZGV4I2dldFRheG9ub215KCkKLQkgKiBAc2VlICNnZXRJbmRleCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0SW5kZXhfVGF4b25vbXkoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5OYW1lIDxlbT5OYW1lPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPk5hbWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguTmFtZQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQ2xhc3MgZ2V0TmFtZV8oKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4Lk5hbWUjZ2V0VmFsdWUgPGVtPlZhbHVlPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VmFsdWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguTmFtZSNnZXRWYWx1ZSgpCi0JICogQHNlZSAjZ2V0TmFtZV8oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldE5hbWVfVmFsdWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4Lk5hbWUjZ2V0TGFuZyA8ZW0+TGFuZzwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkxhbmc8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguTmFtZSNnZXRMYW5nKCkKLQkgKiBAc2VlICNnZXROYW1lXygpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVBdHRyaWJ1dGUgZ2V0TmFtZV9MYW5nKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlSVEluZGV4RmFjdG9yeSBnZXRSVEluZGV4RmFjdG9yeSgpOwotCi19IC8vUlRJbmRleFBhY2thZ2UKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvaW1wbC9EZXNjcmlwdGlvbkltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvaW1wbC9EZXNjcmlwdGlvbkltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY4Y2I1Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L2ltcGwvRGVzY3JpcHRpb25JbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBEZXNjcmlwdGlvbkltcGwuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ4IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FU3RydWN0dXJhbEZlYXR1cmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FT2JqZWN0SW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5EZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2U7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5EZXNjcmlwdGlvbjwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuRGVzY3JpcHRpb25JbXBsI2dldFZhbHVlIDxlbT5WYWx1ZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuRGVzY3JpcHRpb25JbXBsI2dldExhbmcgPGVtPkxhbmc8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBEZXNjcmlwdGlvbkltcGwgZXh0ZW5kcyBFT2JqZWN0SW1wbCBpbXBsZW1lbnRzIERlc2NyaXB0aW9uIHsKLQkvKioKLQkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VmFsdWUoKSA8ZW0+VmFsdWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFZhbHVlKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBWQUxVRV9FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRWYWx1ZSgpIDxlbT5WYWx1ZTwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0VmFsdWUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgdmFsdWUgPSBWQUxVRV9FREVGQVVMVDsKLQotCS8qKgotCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMYW5nKCkgPGVtPkxhbmc8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldExhbmcoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIExBTkdfRURFRkFVTFQgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TGFuZygpIDxlbT5MYW5nPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRMYW5nKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgU3RyaW5nIGxhbmcgPSBMQU5HX0VERUZBVUxUOwotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIERlc2NyaXB0aW9uSW1wbCgpIHsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsKLQkJcmV0dXJuIFJUSW5kZXhQYWNrYWdlLmVJTlNUQU5DRS5nZXREZXNjcmlwdGlvbigpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0VmFsdWUoKSB7Ci0JCXJldHVybiB2YWx1ZTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRWYWx1ZShTdHJpbmcgbmV3VmFsdWUpIHsKLQkJU3RyaW5nIG9sZFZhbHVlID0gdmFsdWU7Ci0JCXZhbHVlID0gbmV3VmFsdWU7Ci0JCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFJUSW5kZXhQYWNrYWdlLkRFU0NSSVBUSU9OX19WQUxVRSwgb2xkVmFsdWUsIHZhbHVlKSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRMYW5nKCkgewotCQlyZXR1cm4gbGFuZzsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRMYW5nKFN0cmluZyBuZXdMYW5nKSB7Ci0JCVN0cmluZyBvbGRMYW5nID0gbGFuZzsKLQkJbGFuZyA9IG5ld0xhbmc7Ci0JCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFJUSW5kZXhQYWNrYWdlLkRFU0NSSVBUSU9OX19MQU5HLCBvbGRMYW5nLCBsYW5nKSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBlR2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSwgYm9vbGVhbiByZXNvbHZlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ERVNDUklQVElPTl9fVkFMVUU6Ci0JCQkJcmV0dXJuIGdldFZhbHVlKCk7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRFU0NSSVBUSU9OX19MQU5HOgotCQkJCXJldHVybiBnZXRMYW5nKCk7Ci0JCX0KLQkJcmV0dXJuIGVEeW5hbWljR2V0KGVGZWF0dXJlLCByZXNvbHZlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBlU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSwgT2JqZWN0IG5ld1ZhbHVlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ERVNDUklQVElPTl9fVkFMVUU6Ci0JCQkJc2V0VmFsdWUoKFN0cmluZyluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ERVNDUklQVElPTl9fTEFORzoKLQkJCQlzZXRMYW5nKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJfQotCQllRHluYW1pY1NldChlRmVhdHVyZSwgbmV3VmFsdWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGVVbnNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRFU0NSSVBUSU9OX19WQUxVRToKLQkJCQlzZXRWYWx1ZShWQUxVRV9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ERVNDUklQVElPTl9fTEFORzoKLQkJCQlzZXRMYW5nKExBTkdfRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJfQotCQllRHluYW1pY1Vuc2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ERVNDUklQVElPTl9fVkFMVUU6Ci0JCQkJcmV0dXJuIFZBTFVFX0VERUZBVUxUID09IG51bGwgPyB2YWx1ZSAhPSBudWxsIDogIVZBTFVFX0VERUZBVUxULmVxdWFscyh2YWx1ZSk7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRFU0NSSVBUSU9OX19MQU5HOgotCQkJCXJldHVybiBMQU5HX0VERUZBVUxUID09IG51bGwgPyBsYW5nICE9IG51bGwgOiAhTEFOR19FREVGQVVMVC5lcXVhbHMobGFuZyk7Ci0JCX0KLQkJcmV0dXJuIGVEeW5hbWljSXNTZXQoZUZlYXR1cmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0JCWlmIChlSXNQcm94eSgpKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotCQlTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLQkJcmVzdWx0LmFwcGVuZCgiICh2YWx1ZTogIik7Ci0JCXJlc3VsdC5hcHBlbmQodmFsdWUpOwotCQlyZXN1bHQuYXBwZW5kKCIsIGxhbmc6ICIpOwotCQlyZXN1bHQuYXBwZW5kKGxhbmcpOwotCQlyZXN1bHQuYXBwZW5kKCcpJyk7Ci0JCXJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLQl9Ci0KLX0gLy9EZXNjcmlwdGlvbkltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvaW1wbC9Eb2N1bWVudFJvb3RJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L2ltcGwvRG9jdW1lbnRSb290SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDhkYmMxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvaW1wbC9Eb2N1bWVudFJvb3RJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNjcgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBEb2N1bWVudFJvb3RJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsOwotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb25DaGFpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVN0cnVjdHVyYWxGZWF0dXJlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FY29yZVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVPYmplY3RJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVTdHJpbmdUb1N0cmluZ01hcEVudHJ5SW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkJhc2ljRmVhdHVyZU1hcDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FY29yZUVNYXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRmVhdHVyZU1hcDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5Eb2N1bWVudFJvb3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkluZGV4OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5OYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZTsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRvY3VtZW50IFJvb3Q8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0TWl4ZWQgPGVtPk1peGVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5Eb2N1bWVudFJvb3RJbXBsI2dldFhNTE5TUHJlZml4TWFwIDxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5Eb2N1bWVudFJvb3RJbXBsI2dldFhTSVNjaGVtYUxvY2F0aW9uIDxlbT5YU0kgU2NoZW1hIExvY2F0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5Eb2N1bWVudFJvb3RJbXBsI2dldERlc2NyaXB0aW9uIDxlbT5EZXNjcmlwdGlvbjwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuRG9jdW1lbnRSb290SW1wbCNnZXRJbmRleCA8ZW0+SW5kZXg8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIERvY3VtZW50Um9vdEltcGwgZXh0ZW5kcyBFT2JqZWN0SW1wbCBpbXBsZW1lbnRzIERvY3VtZW50Um9vdCB7Ci0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TWl4ZWQoKSA8ZW0+TWl4ZWQ8L2VtPn0nIGF0dHJpYnV0ZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TWl4ZWQoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBGZWF0dXJlTWFwIG1peGVkID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFhNTE5TUHJlZml4TWFwKCkgPGVtPlhNTE5TIFByZWZpeCBNYXA8L2VtPn0nIG1hcC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFhNTE5TUHJlZml4TWFwKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRU1hcCB4TUxOU1ByZWZpeE1hcCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRYU0lTY2hlbWFMb2NhdGlvbigpIDxlbT5YU0kgU2NoZW1hIExvY2F0aW9uPC9lbT59JyBtYXAuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRYU0lTY2hlbWFMb2NhdGlvbigpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIEVNYXAgeFNJU2NoZW1hTG9jYXRpb24gPSBudWxsOwotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIERvY3VtZW50Um9vdEltcGwoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7Ci0JCXJldHVybiBSVEluZGV4UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290KCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEZlYXR1cmVNYXAgZ2V0TWl4ZWQoKSB7Ci0JCWlmIChtaXhlZCA9PSBudWxsKSB7Ci0JCQltaXhlZCA9IG5ldyBCYXNpY0ZlYXR1cmVNYXAodGhpcywgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTUlYRUQpOwotCQl9Ci0JCXJldHVybiBtaXhlZDsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRU1hcCBnZXRYTUxOU1ByZWZpeE1hcCgpIHsKLQkJaWYgKHhNTE5TUHJlZml4TWFwID09IG51bGwpIHsKLQkJCXhNTE5TUHJlZml4TWFwID0gbmV3IEVjb3JlRU1hcChFY29yZVBhY2thZ2UuZUlOU1RBTkNFLmdldEVTdHJpbmdUb1N0cmluZ01hcEVudHJ5KCksIEVTdHJpbmdUb1N0cmluZ01hcEVudHJ5SW1wbC5jbGFzcywgdGhpcywgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fWE1MTlNfUFJFRklYX01BUCk7Ci0JCX0KLQkJcmV0dXJuIHhNTE5TUHJlZml4TWFwOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFTWFwIGdldFhTSVNjaGVtYUxvY2F0aW9uKCkgewotCQlpZiAoeFNJU2NoZW1hTG9jYXRpb24gPT0gbnVsbCkgewotCQkJeFNJU2NoZW1hTG9jYXRpb24gPSBuZXcgRWNvcmVFTWFwKEVjb3JlUGFja2FnZS5lSU5TVEFOQ0UuZ2V0RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkoKSwgRVN0cmluZ1RvU3RyaW5nTWFwRW50cnlJbXBsLmNsYXNzLCB0aGlzLCBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OKTsKLQkJfQotCQlyZXR1cm4geFNJU2NoZW1hTG9jYXRpb247Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIERlc2NyaXB0aW9uIGdldERlc2NyaXB0aW9uKCkgewotCQlyZXR1cm4gKERlc2NyaXB0aW9uKWdldE1peGVkKCkuZ2V0KFJUSW5kZXhQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfRGVzY3JpcHRpb24oKSwgdHJ1ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE5vdGlmaWNhdGlvbkNoYWluIGJhc2ljU2V0RGVzY3JpcHRpb24oRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpIHsKLQkJcmV0dXJuICgoRmVhdHVyZU1hcC5JbnRlcm5hbClnZXRNaXhlZCgpKS5iYXNpY0FkZChSVEluZGV4UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X0Rlc2NyaXB0aW9uKCksIG5ld0Rlc2NyaXB0aW9uLCBudWxsKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXREZXNjcmlwdGlvbihEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbikgewotCQkoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuc2V0KFJUSW5kZXhQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfRGVzY3JpcHRpb24oKSwgbmV3RGVzY3JpcHRpb24pOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBJbmRleCBnZXRJbmRleCgpIHsKLQkJcmV0dXJuIChJbmRleClnZXRNaXhlZCgpLmdldChSVEluZGV4UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X0luZGV4KCksIHRydWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldEluZGV4KEluZGV4IG5ld0luZGV4LCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCXJldHVybiAoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuYmFzaWNBZGQoUlRJbmRleFBhY2thZ2UuZUlOU1RBTkNFLmdldERvY3VtZW50Um9vdF9JbmRleCgpLCBuZXdJbmRleCwgbnVsbCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0SW5kZXgoSW5kZXggbmV3SW5kZXgpIHsKLQkJKChGZWF0dXJlTWFwLkludGVybmFsKWdldE1peGVkKCkpLnNldChSVEluZGV4UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X0luZGV4KCksIG5ld0luZGV4KTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgTmFtZSBnZXROYW1lKCkgewotCQlyZXR1cm4gKE5hbWUpZ2V0TWl4ZWQoKS5nZXQoUlRJbmRleFBhY2thZ2UuZUlOU1RBTkNFLmdldERvY3VtZW50Um9vdF9OYW1lKCksIHRydWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldE5hbWUoTmFtZSBuZXdOYW1lLCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCXJldHVybiAoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuYmFzaWNBZGQoUlRJbmRleFBhY2thZ2UuZUlOU1RBTkNFLmdldERvY3VtZW50Um9vdF9OYW1lKCksIG5ld05hbWUsIG51bGwpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldE5hbWUoTmFtZSBuZXdOYW1lKSB7Ci0JCSgoRmVhdHVyZU1hcC5JbnRlcm5hbClnZXRNaXhlZCgpKS5zZXQoUlRJbmRleFBhY2thZ2UuZUlOU1RBTkNFLmdldERvY3VtZW50Um9vdF9OYW1lKCksIG5ld05hbWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBlSW52ZXJzZVJlbW92ZShJbnRlcm5hbEVPYmplY3Qgb3RoZXJFbmQsIGludCBmZWF0dXJlSUQsIENsYXNzIGJhc2VDbGFzcywgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykgewotCQlpZiAoZmVhdHVyZUlEID49IDApIHsKLQkJCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGZlYXR1cmVJRCwgYmFzZUNsYXNzKSkgewotCQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTUlYRUQ6Ci0JCQkJCXJldHVybiAoKEludGVybmFsRUxpc3QpZ2V0TWl4ZWQoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotCQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fWE1MTlNfUFJFRklYX01BUDoKLQkJCQkJcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRYTUxOU1ByZWZpeE1hcCgpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0JCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldFhTSVNjaGVtYUxvY2F0aW9uKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX0RFU0NSSVBUSU9OOgotCQkJCQlyZXR1cm4gYmFzaWNTZXREZXNjcmlwdGlvbihudWxsLCBtc2dzKTsKLQkJCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX0lOREVYOgotCQkJCQlyZXR1cm4gYmFzaWNTZXRJbmRleChudWxsLCBtc2dzKTsKLQkJCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX05BTUU6Ci0JCQkJCXJldHVybiBiYXNpY1NldE5hbWUobnVsbCwgbXNncyk7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJcmV0dXJuIGVEeW5hbWljSW52ZXJzZVJlbW92ZShvdGhlckVuZCwgZmVhdHVyZUlELCBiYXNlQ2xhc3MsIG1zZ3MpOwotCQkJfQotCQl9Ci0JCXJldHVybiBlQmFzaWNTZXRDb250YWluZXIobnVsbCwgZmVhdHVyZUlELCBtc2dzKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGVHZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBib29sZWFuIHJlc29sdmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEOgotCQkJCXJldHVybiBnZXRNaXhlZCgpOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCXJldHVybiBnZXRYTUxOU1ByZWZpeE1hcCgpOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCXJldHVybiBnZXRYU0lTY2hlbWFMb2NhdGlvbigpOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19ERVNDUklQVElPTjoKLQkJCQlyZXR1cm4gZ2V0RGVzY3JpcHRpb24oKTsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fSU5ERVg6Ci0JCQkJcmV0dXJuIGdldEluZGV4KCk7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX05BTUU6Ci0JCQkJcmV0dXJuIGdldE5hbWUoKTsKLQkJfQotCQlyZXR1cm4gZUR5bmFtaWNHZXQoZUZlYXR1cmUsIHJlc29sdmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGVTZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBPYmplY3QgbmV3VmFsdWUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEOgotCQkJCWdldE1peGVkKCkuY2xlYXIoKTsKLQkJCQlnZXRNaXhlZCgpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCWdldFhNTE5TUHJlZml4TWFwKCkuY2xlYXIoKTsKLQkJCQlnZXRYTUxOU1ByZWZpeE1hcCgpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCWdldFhTSVNjaGVtYUxvY2F0aW9uKCkuY2xlYXIoKTsKLQkJCQlnZXRYU0lTY2hlbWFMb2NhdGlvbigpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19ERVNDUklQVElPTjoKLQkJCQlzZXREZXNjcmlwdGlvbigoRGVzY3JpcHRpb24pbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fSU5ERVg6Ci0JCQkJc2V0SW5kZXgoKEluZGV4KW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX05BTUU6Ci0JCQkJc2V0TmFtZSgoTmFtZSluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljU2V0KGVGZWF0dXJlLCBuZXdWYWx1ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVVuc2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTUlYRUQ6Ci0JCQkJZ2V0TWl4ZWQoKS5jbGVhcigpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fWE1MTlNfUFJFRklYX01BUDoKLQkJCQlnZXRYTUxOU1ByZWZpeE1hcCgpLmNsZWFyKCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCWdldFhTSVNjaGVtYUxvY2F0aW9uKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX0RFU0NSSVBUSU9OOgotCQkJCXNldERlc2NyaXB0aW9uKChEZXNjcmlwdGlvbiludWxsKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX0lOREVYOgotCQkJCXNldEluZGV4KChJbmRleCludWxsKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX05BTUU6Ci0JCQkJc2V0TmFtZSgoTmFtZSludWxsKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNVbnNldChlRmVhdHVyZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIGJvb2xlYW4gZUlzU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTUlYRUQ6Ci0JCQkJcmV0dXJuIG1peGVkICE9IG51bGwgJiYgIW1peGVkLmlzRW1wdHkoKTsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fWE1MTlNfUFJFRklYX01BUDoKLQkJCQlyZXR1cm4geE1MTlNQcmVmaXhNYXAgIT0gbnVsbCAmJiAheE1MTlNQcmVmaXhNYXAuaXNFbXB0eSgpOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCXJldHVybiB4U0lTY2hlbWFMb2NhdGlvbiAhPSBudWxsICYmICF4U0lTY2hlbWFMb2NhdGlvbi5pc0VtcHR5KCk7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX0RFU0NSSVBUSU9OOgotCQkJCXJldHVybiBnZXREZXNjcmlwdGlvbigpICE9IG51bGw7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX0lOREVYOgotCQkJCXJldHVybiBnZXRJbmRleCgpICE9IG51bGw7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX05BTUU6Ci0JCQkJcmV0dXJuIGdldE5hbWUoKSAhPSBudWxsOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0lzU2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotCQlpZiAoZUlzUHJveHkoKSkgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLQkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0JCXJlc3VsdC5hcHBlbmQoIiAobWl4ZWQ6ICIpOwotCQlyZXN1bHQuYXBwZW5kKG1peGVkKTsKLQkJcmVzdWx0LmFwcGVuZCgnKScpOwotCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0JfQotCi19IC8vRG9jdW1lbnRSb290SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9pbXBsL0luZGV4SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9pbXBsL0luZGV4SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGRjMDhlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvaW1wbC9JbmRleEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IEluZGV4SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDggY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uQ2hhaW47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FU3RydWN0dXJhbEZlYXR1cmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVPYmplY3RJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdENvbnRhaW5tZW50RUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuSW50ZXJuYWxFTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkluZGV4OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5OYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXk7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5JbmRleDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuSW5kZXhJbXBsI2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLkluZGV4SW1wbCNnZXREZXNjcmlwdGlvbiA8ZW0+RGVzY3JpcHRpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLkluZGV4SW1wbCNnZXRSZWdpc3RyeSA8ZW0+UmVnaXN0cnk8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5pbXBsLkluZGV4SW1wbCNnZXRUYXhvbm9teSA8ZW0+VGF4b25vbXk8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBJbmRleEltcGwgZXh0ZW5kcyBFT2JqZWN0SW1wbCBpbXBsZW1lbnRzIEluZGV4IHsKLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TmFtZSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIEVMaXN0IG5hbWUgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RGVzY3JpcHRpb24oKSA8ZW0+RGVzY3JpcHRpb248L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0RGVzY3JpcHRpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBFTGlzdCBkZXNjcmlwdGlvbiA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRSZWdpc3RyeSgpIDxlbT5SZWdpc3RyeTwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRSZWdpc3RyeSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIEVMaXN0IHJlZ2lzdHJ5ID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFRheG9ub215KCkgPGVtPlRheG9ub215PC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFRheG9ub215KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRUxpc3QgdGF4b25vbXkgPSBudWxsOwotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIEluZGV4SW1wbCgpIHsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsKLQkJcmV0dXJuIFJUSW5kZXhQYWNrYWdlLmVJTlNUQU5DRS5nZXRJbmRleCgpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFTGlzdCBnZXROYW1lKCkgewotCQlpZiAobmFtZSA9PSBudWxsKSB7Ci0JCQluYW1lID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KE5hbWUuY2xhc3MsIHRoaXMsIFJUSW5kZXhQYWNrYWdlLklOREVYX19OQU1FKTsKLQkJfQotCQlyZXR1cm4gbmFtZTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUxpc3QgZ2V0RGVzY3JpcHRpb24oKSB7Ci0JCWlmIChkZXNjcmlwdGlvbiA9PSBudWxsKSB7Ci0JCQlkZXNjcmlwdGlvbiA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChEZXNjcmlwdGlvbi5jbGFzcywgdGhpcywgUlRJbmRleFBhY2thZ2UuSU5ERVhfX0RFU0NSSVBUSU9OKTsKLQkJfQotCQlyZXR1cm4gZGVzY3JpcHRpb247Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVMaXN0IGdldFJlZ2lzdHJ5KCkgewotCQlpZiAocmVnaXN0cnkgPT0gbnVsbCkgewotCQkJcmVnaXN0cnkgPSBuZXcgRU9iamVjdENvbnRhaW5tZW50RUxpc3QoUmVnaXN0cnkuY2xhc3MsIHRoaXMsIFJUSW5kZXhQYWNrYWdlLklOREVYX19SRUdJU1RSWSk7Ci0JCX0KLQkJcmV0dXJuIHJlZ2lzdHJ5OwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFTGlzdCBnZXRUYXhvbm9teSgpIHsKLQkJaWYgKHRheG9ub215ID09IG51bGwpIHsKLQkJCXRheG9ub215ID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KFRheG9ub215LmNsYXNzLCB0aGlzLCBSVEluZGV4UGFja2FnZS5JTkRFWF9fVEFYT05PTVkpOwotCQl9Ci0JCXJldHVybiB0YXhvbm9teTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gZUludmVyc2VSZW1vdmUoSW50ZXJuYWxFT2JqZWN0IG90aGVyRW5kLCBpbnQgZmVhdHVyZUlELCBDbGFzcyBiYXNlQ2xhc3MsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpIHsKLQkJaWYgKGZlYXR1cmVJRCA+PSAwKSB7Ci0JCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChmZWF0dXJlSUQsIGJhc2VDbGFzcykpIHsKLQkJCQljYXNlIFJUSW5kZXhQYWNrYWdlLklOREVYX19OQU1FOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldE5hbWUoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotCQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuSU5ERVhfX0RFU0NSSVBUSU9OOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldERlc2NyaXB0aW9uKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFJUSW5kZXhQYWNrYWdlLklOREVYX19SRUdJU1RSWToKLQkJCQkJcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRSZWdpc3RyeSgpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0JCQkJY2FzZSBSVEluZGV4UGFja2FnZS5JTkRFWF9fVEFYT05PTVk6Ci0JCQkJCXJldHVybiAoKEludGVybmFsRUxpc3QpZ2V0VGF4b25vbXkoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotCQkJCWRlZmF1bHQ6Ci0JCQkJCXJldHVybiBlRHluYW1pY0ludmVyc2VSZW1vdmUob3RoZXJFbmQsIGZlYXR1cmVJRCwgYmFzZUNsYXNzLCBtc2dzKTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gZUJhc2ljU2V0Q29udGFpbmVyKG51bGwsIGZlYXR1cmVJRCwgbXNncyk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBlR2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSwgYm9vbGVhbiByZXNvbHZlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5JTkRFWF9fTkFNRToKLQkJCQlyZXR1cm4gZ2V0TmFtZSgpOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5JTkRFWF9fREVTQ1JJUFRJT046Ci0JCQkJcmV0dXJuIGdldERlc2NyaXB0aW9uKCk7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLklOREVYX19SRUdJU1RSWToKLQkJCQlyZXR1cm4gZ2V0UmVnaXN0cnkoKTsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuSU5ERVhfX1RBWE9OT01ZOgotCQkJCXJldHVybiBnZXRUYXhvbm9teSgpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0dldChlRmVhdHVyZSwgcmVzb2x2ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIE9iamVjdCBuZXdWYWx1ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuSU5ERVhfX05BTUU6Ci0JCQkJZ2V0TmFtZSgpLmNsZWFyKCk7Ci0JCQkJZ2V0TmFtZSgpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5JTkRFWF9fREVTQ1JJUFRJT046Ci0JCQkJZ2V0RGVzY3JpcHRpb24oKS5jbGVhcigpOwotCQkJCWdldERlc2NyaXB0aW9uKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLklOREVYX19SRUdJU1RSWToKLQkJCQlnZXRSZWdpc3RyeSgpLmNsZWFyKCk7Ci0JCQkJZ2V0UmVnaXN0cnkoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuSU5ERVhfX1RBWE9OT01ZOgotCQkJCWdldFRheG9ub215KCkuY2xlYXIoKTsKLQkJCQlnZXRUYXhvbm9teSgpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljU2V0KGVGZWF0dXJlLCBuZXdWYWx1ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVVuc2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuSU5ERVhfX05BTUU6Ci0JCQkJZ2V0TmFtZSgpLmNsZWFyKCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5JTkRFWF9fREVTQ1JJUFRJT046Ci0JCQkJZ2V0RGVzY3JpcHRpb24oKS5jbGVhcigpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuSU5ERVhfX1JFR0lTVFJZOgotCQkJCWdldFJlZ2lzdHJ5KCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLklOREVYX19UQVhPTk9NWToKLQkJCQlnZXRUYXhvbm9teSgpLmNsZWFyKCk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljVW5zZXQoZUZlYXR1cmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBib29sZWFuIGVJc1NldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLklOREVYX19OQU1FOgotCQkJCXJldHVybiBuYW1lICE9IG51bGwgJiYgIW5hbWUuaXNFbXB0eSgpOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5JTkRFWF9fREVTQ1JJUFRJT046Ci0JCQkJcmV0dXJuIGRlc2NyaXB0aW9uICE9IG51bGwgJiYgIWRlc2NyaXB0aW9uLmlzRW1wdHkoKTsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuSU5ERVhfX1JFR0lTVFJZOgotCQkJCXJldHVybiByZWdpc3RyeSAhPSBudWxsICYmICFyZWdpc3RyeS5pc0VtcHR5KCk7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLklOREVYX19UQVhPTk9NWToKLQkJCQlyZXR1cm4gdGF4b25vbXkgIT0gbnVsbCAmJiAhdGF4b25vbXkuaXNFbXB0eSgpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0lzU2V0KGVGZWF0dXJlKTsKLQl9Ci0KLX0gLy9JbmRleEltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvaW1wbC9OYW1lSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9pbXBsL05hbWVJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNjg1MjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9pbXBsL05hbWVJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBOYW1lSW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDggY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVTdHJ1Y3R1cmFsRmVhdHVyZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVPYmplY3RJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4Lk5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhQYWNrYWdlOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TmFtZTwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuTmFtZUltcGwjZ2V0VmFsdWUgPGVtPlZhbHVlPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5OYW1lSW1wbCNnZXRMYW5nIDxlbT5MYW5nPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgTmFtZUltcGwgZXh0ZW5kcyBFT2JqZWN0SW1wbCBpbXBsZW1lbnRzIE5hbWUgewotCS8qKgotCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRWYWx1ZSgpIDxlbT5WYWx1ZTwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0VmFsdWUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFZBTFVFX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFZhbHVlKCkgPGVtPlZhbHVlPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRWYWx1ZSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyB2YWx1ZSA9IFZBTFVFX0VERUZBVUxUOwotCi0JLyoqCi0JICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExhbmcoKSA8ZW0+TGFuZzwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TGFuZygpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgTEFOR19FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMYW5nKCkgPGVtPkxhbmc8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldExhbmcoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgbGFuZyA9IExBTkdfRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgTmFtZUltcGwoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7Ci0JCXJldHVybiBSVEluZGV4UGFja2FnZS5lSU5TVEFOQ0UuZ2V0TmFtZV8oKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkgewotCQlyZXR1cm4gdmFsdWU7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0VmFsdWUoU3RyaW5nIG5ld1ZhbHVlKSB7Ci0JCVN0cmluZyBvbGRWYWx1ZSA9IHZhbHVlOwotCQl2YWx1ZSA9IG5ld1ZhbHVlOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSVEluZGV4UGFja2FnZS5OQU1FX19WQUxVRSwgb2xkVmFsdWUsIHZhbHVlKSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRMYW5nKCkgewotCQlyZXR1cm4gbGFuZzsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRMYW5nKFN0cmluZyBuZXdMYW5nKSB7Ci0JCVN0cmluZyBvbGRMYW5nID0gbGFuZzsKLQkJbGFuZyA9IG5ld0xhbmc7Ci0JCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFJUSW5kZXhQYWNrYWdlLk5BTUVfX0xBTkcsIG9sZExhbmcsIGxhbmcpKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGVHZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBib29sZWFuIHJlc29sdmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLk5BTUVfX1ZBTFVFOgotCQkJCXJldHVybiBnZXRWYWx1ZSgpOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5OQU1FX19MQU5HOgotCQkJCXJldHVybiBnZXRMYW5nKCk7Ci0JCX0KLQkJcmV0dXJuIGVEeW5hbWljR2V0KGVGZWF0dXJlLCByZXNvbHZlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBlU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSwgT2JqZWN0IG5ld1ZhbHVlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5OQU1FX19WQUxVRToKLQkJCQlzZXRWYWx1ZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLk5BTUVfX0xBTkc6Ci0JCQkJc2V0TGFuZygoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNTZXQoZUZlYXR1cmUsIG5ld1ZhbHVlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBlVW5zZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5OQU1FX19WQUxVRToKLQkJCQlzZXRWYWx1ZShWQUxVRV9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5OQU1FX19MQU5HOgotCQkJCXNldExhbmcoTEFOR19FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljVW5zZXQoZUZlYXR1cmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBib29sZWFuIGVJc1NldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLk5BTUVfX1ZBTFVFOgotCQkJCXJldHVybiBWQUxVRV9FREVGQVVMVCA9PSBudWxsID8gdmFsdWUgIT0gbnVsbCA6ICFWQUxVRV9FREVGQVVMVC5lcXVhbHModmFsdWUpOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5OQU1FX19MQU5HOgotCQkJCXJldHVybiBMQU5HX0VERUZBVUxUID09IG51bGwgPyBsYW5nICE9IG51bGwgOiAhTEFOR19FREVGQVVMVC5lcXVhbHMobGFuZyk7Ci0JCX0KLQkJcmV0dXJuIGVEeW5hbWljSXNTZXQoZUZlYXR1cmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0JCWlmIChlSXNQcm94eSgpKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotCQlTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLQkJcmVzdWx0LmFwcGVuZCgiICh2YWx1ZTogIik7Ci0JCXJlc3VsdC5hcHBlbmQodmFsdWUpOwotCQlyZXN1bHQuYXBwZW5kKCIsIGxhbmc6ICIpOwotCQlyZXN1bHQuYXBwZW5kKGxhbmcpOwotCQlyZXN1bHQuYXBwZW5kKCcpJyk7Ci0JCXJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLQl9Ci0KLX0gLy9OYW1lSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9pbXBsL1JUSW5kZXhGYWN0b3J5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC9pbXBsL1JUSW5kZXhGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWZhMzNhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvaW1wbC9SVEluZGV4RmFjdG9yeUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJUSW5kZXhGYWN0b3J5SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDggY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FRmFjdG9yeUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguKjsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPkZhY3Rvcnk8L2I+LgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBSVEluZGV4RmFjdG9yeUltcGwgZXh0ZW5kcyBFRmFjdG9yeUltcGwgaW1wbGVtZW50cyBSVEluZGV4RmFjdG9yeSB7Ci0JLyoqCi0JICogQ3JlYXRlcyBhbmQgaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFJUSW5kZXhGYWN0b3J5SW1wbCgpIHsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRU9iamVjdCBjcmVhdGUoRUNsYXNzIGVDbGFzcykgewotCQlzd2l0Y2ggKGVDbGFzcy5nZXRDbGFzc2lmaWVySUQoKSkgewotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5ERVNDUklQVElPTjogcmV0dXJuIGNyZWF0ZURlc2NyaXB0aW9uKCk7Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLkRPQ1VNRU5UX1JPT1Q6IHJldHVybiBjcmVhdGVEb2N1bWVudFJvb3QoKTsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuSU5ERVg6IHJldHVybiBjcmVhdGVJbmRleCgpOwotCQkJY2FzZSBSVEluZGV4UGFja2FnZS5OQU1FOiByZXR1cm4gY3JlYXRlTmFtZSgpOwotCQkJZGVmYXVsdDoKLQkJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUaGUgY2xhc3MgJyIgKyBlQ2xhc3MuZ2V0TmFtZSgpICsgIicgaXMgbm90IGEgdmFsaWQgY2xhc3NpZmllciIpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIERlc2NyaXB0aW9uIGNyZWF0ZURlc2NyaXB0aW9uKCkgewotCQlEZXNjcmlwdGlvbkltcGwgZGVzY3JpcHRpb24gPSBuZXcgRGVzY3JpcHRpb25JbXBsKCk7Ci0JCXJldHVybiBkZXNjcmlwdGlvbjsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRG9jdW1lbnRSb290IGNyZWF0ZURvY3VtZW50Um9vdCgpIHsKLQkJRG9jdW1lbnRSb290SW1wbCBkb2N1bWVudFJvb3QgPSBuZXcgRG9jdW1lbnRSb290SW1wbCgpOwotCQlyZXR1cm4gZG9jdW1lbnRSb290OwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBJbmRleCBjcmVhdGVJbmRleCgpIHsKLQkJSW5kZXhJbXBsIGluZGV4ID0gbmV3IEluZGV4SW1wbCgpOwotCQlyZXR1cm4gaW5kZXg7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE5hbWUgY3JlYXRlTmFtZSgpIHsKLQkJTmFtZUltcGwgbmFtZSA9IG5ldyBOYW1lSW1wbCgpOwotCQlyZXR1cm4gbmFtZTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgUlRJbmRleFBhY2thZ2UgZ2V0UlRJbmRleFBhY2thZ2UoKSB7Ci0JCXJldHVybiAoUlRJbmRleFBhY2thZ2UpZ2V0RVBhY2thZ2UoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBkZXByZWNhdGVkCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBzdGF0aWMgUlRJbmRleFBhY2thZ2UgZ2V0UGFja2FnZSgpIHsKLQkJcmV0dXJuIFJUSW5kZXhQYWNrYWdlLmVJTlNUQU5DRTsKLQl9Ci0KLX0gLy9SVEluZGV4RmFjdG9yeUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvaW1wbC9SVEluZGV4UGFja2FnZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvaW1wbC9SVEluZGV4UGFja2FnZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk5NzU1ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L2ltcGwvUlRJbmRleFBhY2thZ2VJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NzMgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBSVEluZGV4UGFja2FnZUltcGwuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ4IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVQYWNrYWdlSW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5YTUxUeXBlUGFja2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5pbXBsLlhNTFR5cGVQYWNrYWdlSW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLlJlZ2lzdHJ5UGFja2FnZUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXg7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4Lk5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5SVEluZGV4UGFja2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLlRheG9ub215UGFja2FnZUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuaW1wbC5VRERJUmVnaXN0cnlQYWNrYWdlSW1wbDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBSVEluZGV4UGFja2FnZUltcGwgZXh0ZW5kcyBFUGFja2FnZUltcGwgaW1wbGVtZW50cyBSVEluZGV4UGFja2FnZSB7Ci0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBFQ2xhc3MgZGVzY3JpcHRpb25FQ2xhc3MgPSBudWxsOwotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBFQ2xhc3MgZG9jdW1lbnRSb290RUNsYXNzID0gbnVsbDsKLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgRUNsYXNzIGluZGV4RUNsYXNzID0gbnVsbDsKLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgRUNsYXNzIG5hbWVFQ2xhc3MgPSBudWxsOwotCi0JLyoqCi0JICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4sIHJlZ2lzdGVyZWQgd2l0aAotCSAqIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2UuUmVnaXN0cnkgRVBhY2thZ2UuUmVnaXN0cnl9IGJ5IHRoZSBwYWNrYWdlCi0JICogcGFja2FnZSBVUkkgdmFsdWUuCi0JICogPHA+Tm90ZTogdGhlIGNvcnJlY3Qgd2F5IHRvIGNyZWF0ZSB0aGUgcGFja2FnZSBpcyB2aWEgdGhlIHN0YXRpYwotCSAqIGZhY3RvcnkgbWV0aG9kIHtAbGluayAjaW5pdCBpbml0KCl9LCB3aGljaCBhbHNvIHBlcmZvcm1zCi0JICogaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UsIG9yIHJldHVybnMgdGhlIHJlZ2lzdGVyZWQgcGFja2FnZSwKLQkgKiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhQYWNrYWdlI2VOU19VUkkKLQkgKiBAc2VlICNpbml0KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBSVEluZGV4UGFja2FnZUltcGwoKSB7Ci0JCXN1cGVyKGVOU19VUkksIFJUSW5kZXhGYWN0b3J5LmVJTlNUQU5DRSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0luaXRlZCA9IGZhbHNlOwotCi0JLyoqCi0JICogQ3JlYXRlcywgcmVnaXN0ZXJzLCBhbmQgaW5pdGlhbGl6ZXMgdGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGlzCi0JICogbW9kZWwsIGFuZCBmb3IgYW55IG90aGVycyB1cG9uIHdoaWNoIGl0IGRlcGVuZHMuICBTaW1wbGUKLQkgKiBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCBieSBjYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGFsbAotCSAqIGRlcGVuZGVudCBwYWNrYWdlcyBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4gIFRoaXMgbWV0aG9kIGRyaXZlcwotCSAqIGluaXRpYWxpemF0aW9uIGZvciBpbnRlcmRlcGVuZGVudCBwYWNrYWdlcyBkaXJlY3RseSwgaW4gcGFyYWxsZWwKLQkgKiB3aXRoIHRoaXMgcGFja2FnZSwgaXRzZWxmLgotCSAqIDxwPk9mIHRoaXMgcGFja2FnZSBhbmQgaXRzIGludGVyZGVwZW5kZW5jaWVzLCBhbGwgcGFja2FnZXMgd2hpY2gKLQkgKiBoYXZlIG5vdCB5ZXQgYmVlbiByZWdpc3RlcmVkIGJ5IHRoZWlyIFVSSSB2YWx1ZXMgYXJlIGZpcnN0IGNyZWF0ZWQKLQkgKiBhbmQgcmVnaXN0ZXJlZC4gIFRoZSBwYWNrYWdlcyBhcmUgdGhlbiBpbml0aWFsaXplZCBpbiB0d28gc3RlcHM6Ci0JICogbWV0YS1tb2RlbCBvYmplY3RzIGZvciBhbGwgb2YgdGhlIHBhY2thZ2VzIGFyZSBjcmVhdGVkIGJlZm9yZSBhbnkKLQkgKiBhcmUgaW5pdGlhbGl6ZWQsIHNpbmNlIG9uZSBwYWNrYWdlJ3MgbWV0YS1tb2RlbCBvYmplY3RzIG1heSByZWZlciB0bwotCSAqIHRob3NlIG9mIGFub3RoZXIuCi0JICogPHA+SW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCB3aWxsIG5vdCBhZmZlY3QgYW55IHBhY2thZ2VzIHRoYXQgaGF2ZQotCSAqIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2VOU19VUkkKLQkgKiBAc2VlICNjcmVhdGVQYWNrYWdlQ29udGVudHMoKQotCSAqIEBzZWUgI2luaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIFJUSW5kZXhQYWNrYWdlIGluaXQoKSB7Ci0JCWlmIChpc0luaXRlZCkgcmV0dXJuIChSVEluZGV4UGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSVEluZGV4UGFja2FnZS5lTlNfVVJJKTsKLQotCQkvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBwYWNrYWdlCi0JCVJUSW5kZXhQYWNrYWdlSW1wbCB0aGVSVEluZGV4UGFja2FnZSA9IChSVEluZGV4UGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKGVOU19VUkkpIGluc3RhbmNlb2YgUlRJbmRleFBhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoZU5TX1VSSSkgOiBuZXcgUlRJbmRleFBhY2thZ2VJbXBsKCkpOwotCi0JCWlzSW5pdGVkID0gdHJ1ZTsKLQotCQkvLyBJbml0aWFsaXplIHNpbXBsZSBkZXBlbmRlbmNpZXMKLQkJWE1MVHlwZVBhY2thZ2VJbXBsLmluaXQoKTsKLQotCQkvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBpbnRlcmRlcGVuZGVuY2llcwotCQlUYXhvbm9teVBhY2thZ2VJbXBsIHRoZVRheG9ub215UGFja2FnZSA9IChUYXhvbm9teVBhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShUYXhvbm9teVBhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBUYXhvbm9teVBhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVGF4b25vbXlQYWNrYWdlLmVOU19VUkkpIDogVGF4b25vbXlQYWNrYWdlSW1wbC5lSU5TVEFOQ0UpOwotCQlSZWdpc3RyeVBhY2thZ2VJbXBsIHRoZVJlZ2lzdHJ5UGFja2FnZSA9IChSZWdpc3RyeVBhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZWdpc3RyeVBhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBSZWdpc3RyeVBhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUmVnaXN0cnlQYWNrYWdlLmVOU19VUkkpIDogUmVnaXN0cnlQYWNrYWdlSW1wbC5lSU5TVEFOQ0UpOwotCQlVRERJUmVnaXN0cnlQYWNrYWdlSW1wbCB0aGVVRERJUmVnaXN0cnlQYWNrYWdlID0gKFVERElSZWdpc3RyeVBhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShVRERJUmVnaXN0cnlQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgVURESVJlZ2lzdHJ5UGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShVRERJUmVnaXN0cnlQYWNrYWdlLmVOU19VUkkpIDogVURESVJlZ2lzdHJ5UGFja2FnZUltcGwuZUlOU1RBTkNFKTsKLQotCQkvLyBDcmVhdGUgcGFja2FnZSBtZXRhLWRhdGEgb2JqZWN0cwotCQl0aGVSVEluZGV4UGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsKLQkJdGhlVGF4b25vbXlQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVSZWdpc3RyeVBhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7Ci0JCXRoZVVERElSZWdpc3RyeVBhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7Ci0KLQkJLy8gSW5pdGlhbGl6ZSBjcmVhdGVkIG1ldGEtZGF0YQotCQl0aGVSVEluZGV4UGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7Ci0JCXRoZVRheG9ub215UGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7Ci0JCXRoZVJlZ2lzdHJ5UGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7Ci0JCXRoZVVERElSZWdpc3RyeVBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCi0JCS8vIE1hcmsgbWV0YS1kYXRhIHRvIGluZGljYXRlIGl0IGNhbid0IGJlIGNoYW5nZWQKLQkJdGhlUlRJbmRleFBhY2thZ2UuZnJlZXplKCk7Ci0KLQkJcmV0dXJuIHRoZVJUSW5kZXhQYWNrYWdlOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQ2xhc3MgZ2V0RGVzY3JpcHRpb24oKSB7Ci0JCXJldHVybiBkZXNjcmlwdGlvbkVDbGFzczsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXREZXNjcmlwdGlvbl9WYWx1ZSgpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKWRlc2NyaXB0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0RGVzY3JpcHRpb25fTGFuZygpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKWRlc2NyaXB0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVDbGFzcyBnZXREb2N1bWVudFJvb3QoKSB7Ci0JCXJldHVybiBkb2N1bWVudFJvb3RFQ2xhc3M7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0RG9jdW1lbnRSb290X01peGVkKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X1hNTE5TUHJlZml4TWFwKCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X1hTSVNjaGVtYUxvY2F0aW9uKCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X0Rlc2NyaXB0aW9uKCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X0luZGV4KCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X05hbWUoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSlkb2N1bWVudFJvb3RFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg1KTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUNsYXNzIGdldEluZGV4KCkgewotCQlyZXR1cm4gaW5kZXhFQ2xhc3M7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0SW5kZXhfTmFtZSgpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKWluZGV4RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0SW5kZXhfRGVzY3JpcHRpb24oKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSlpbmRleEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldEluZGV4X1JlZ2lzdHJ5KCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpaW5kZXhFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRVJlZmVyZW5jZSBnZXRJbmRleF9UYXhvbm9teSgpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKWluZGV4RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVDbGFzcyBnZXROYW1lXygpIHsKLQkJcmV0dXJuIG5hbWVFQ2xhc3M7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0TmFtZV9WYWx1ZSgpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKW5hbWVFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXROYW1lX0xhbmcoKSB7Ci0JCXJldHVybiAoRUF0dHJpYnV0ZSluYW1lRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFJUSW5kZXhGYWN0b3J5IGdldFJUSW5kZXhGYWN0b3J5KCkgewotCQlyZXR1cm4gKFJUSW5kZXhGYWN0b3J5KWdldEVGYWN0b3J5SW5zdGFuY2UoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcml2YXRlIGJvb2xlYW4gaXNDcmVhdGVkID0gZmFsc2U7Ci0KLQkvKioKLQkgKiBDcmVhdGVzIHRoZSBtZXRhLW1vZGVsIG9iamVjdHMgZm9yIHRoZSBwYWNrYWdlLiAgVGhpcyBtZXRob2QgaXMKLQkgKiBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkgewotCQlpZiAoaXNDcmVhdGVkKSByZXR1cm47Ci0JCWlzQ3JlYXRlZCA9IHRydWU7Ci0KLQkJLy8gQ3JlYXRlIGNsYXNzZXMgYW5kIHRoZWlyIGZlYXR1cmVzCi0JCWRlc2NyaXB0aW9uRUNsYXNzID0gY3JlYXRlRUNsYXNzKERFU0NSSVBUSU9OKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZShkZXNjcmlwdGlvbkVDbGFzcywgREVTQ1JJUFRJT05fX1ZBTFVFKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZShkZXNjcmlwdGlvbkVDbGFzcywgREVTQ1JJUFRJT05fX0xBTkcpOwotCi0JCWRvY3VtZW50Um9vdEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhET0NVTUVOVF9ST09UKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZShkb2N1bWVudFJvb3RFQ2xhc3MsIERPQ1VNRU5UX1JPT1RfX01JWEVEKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShkb2N1bWVudFJvb3RFQ2xhc3MsIERPQ1VNRU5UX1JPT1RfX1hNTE5TX1BSRUZJWF9NQVApOwotCQljcmVhdGVFUmVmZXJlbmNlKGRvY3VtZW50Um9vdEVDbGFzcywgRE9DVU1FTlRfUk9PVF9fWFNJX1NDSEVNQV9MT0NBVElPTik7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19ERVNDUklQVElPTik7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19JTkRFWCk7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19OQU1FKTsKLQotCQlpbmRleEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJTkRFWCk7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoaW5kZXhFQ2xhc3MsIElOREVYX19OQU1FKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShpbmRleEVDbGFzcywgSU5ERVhfX0RFU0NSSVBUSU9OKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShpbmRleEVDbGFzcywgSU5ERVhfX1JFR0lTVFJZKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShpbmRleEVDbGFzcywgSU5ERVhfX1RBWE9OT01ZKTsKLQotCQluYW1lRUNsYXNzID0gY3JlYXRlRUNsYXNzKE5BTUUpOwotCQljcmVhdGVFQXR0cmlidXRlKG5hbWVFQ2xhc3MsIE5BTUVfX1ZBTFVFKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZShuYW1lRUNsYXNzLCBOQU1FX19MQU5HKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcml2YXRlIGJvb2xlYW4gaXNJbml0aWFsaXplZCA9IGZhbHNlOwotCi0JLyoqCi0JICogQ29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwYWNrYWdlIGFuZCBpdHMgbWV0YS1tb2RlbC4gIFRoaXMKLQkgKiBtZXRob2QgaXMgZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKSB7Ci0JCWlmIChpc0luaXRpYWxpemVkKSByZXR1cm47Ci0JCWlzSW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0JCS8vIEluaXRpYWxpemUgcGFja2FnZQotCQlzZXROYW1lKGVOQU1FKTsKLQkJc2V0TnNQcmVmaXgoZU5TX1BSRUZJWCk7Ci0JCXNldE5zVVJJKGVOU19VUkkpOwotCi0JCS8vIE9idGFpbiBvdGhlciBkZXBlbmRlbnQgcGFja2FnZXMKLQkJWE1MVHlwZVBhY2thZ2VJbXBsIHRoZVhNTFR5cGVQYWNrYWdlID0gKFhNTFR5cGVQYWNrYWdlSW1wbClFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShYTUxUeXBlUGFja2FnZS5lTlNfVVJJKTsKLQkJUmVnaXN0cnlQYWNrYWdlSW1wbCB0aGVSZWdpc3RyeVBhY2thZ2UgPSAoUmVnaXN0cnlQYWNrYWdlSW1wbClFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZWdpc3RyeVBhY2thZ2UuZU5TX1VSSSk7Ci0JCVRheG9ub215UGFja2FnZUltcGwgdGhlVGF4b25vbXlQYWNrYWdlID0gKFRheG9ub215UGFja2FnZUltcGwpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVGF4b25vbXlQYWNrYWdlLmVOU19VUkkpOwotCi0JCS8vIEFkZCBzdXBlcnR5cGVzIHRvIGNsYXNzZXMKLQotCQkvLyBJbml0aWFsaXplIGNsYXNzZXMgYW5kIGZlYXR1cmVzOyBhZGQgb3BlcmF0aW9ucyBhbmQgcGFyYW1ldGVycwotCQlpbml0RUNsYXNzKGRlc2NyaXB0aW9uRUNsYXNzLCBEZXNjcmlwdGlvbi5jbGFzcywgIkRlc2NyaXB0aW9uIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOwotCQlpbml0RUF0dHJpYnV0ZShnZXREZXNjcmlwdGlvbl9WYWx1ZSgpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRTdHJpbmcoKSwgInZhbHVlIiwgbnVsbCwgMCwgMSwgRGVzY3JpcHRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RUF0dHJpYnV0ZShnZXREZXNjcmlwdGlvbl9MYW5nKCksIHRoZVhNTFR5cGVQYWNrYWdlLmdldExhbmd1YWdlKCksICJsYW5nIiwgbnVsbCwgMCwgMSwgRGVzY3JpcHRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCi0JCWluaXRFQ2xhc3MoZG9jdW1lbnRSb290RUNsYXNzLCBEb2N1bWVudFJvb3QuY2xhc3MsICJEb2N1bWVudFJvb3QiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7Ci0JCWluaXRFQXR0cmlidXRlKGdldERvY3VtZW50Um9vdF9NaXhlZCgpLCBlY29yZVBhY2thZ2UuZ2V0RUZlYXR1cmVNYXBFbnRyeSgpLCAibWl4ZWQiLCBudWxsLCAwLCAtMSwgbnVsbCwgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldERvY3VtZW50Um9vdF9YTUxOU1ByZWZpeE1hcCgpLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkoKSwgbnVsbCwgInhNTE5TUHJlZml4TWFwIiwgbnVsbCwgMCwgLTEsIG51bGwsIElTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldERvY3VtZW50Um9vdF9YU0lTY2hlbWFMb2NhdGlvbigpLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkoKSwgbnVsbCwgInhTSVNjaGVtYUxvY2F0aW9uIiwgbnVsbCwgMCwgLTEsIG51bGwsIElTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldERvY3VtZW50Um9vdF9EZXNjcmlwdGlvbigpLCB0aGlzLmdldERlc2NyaXB0aW9uKCksIG51bGwsICJkZXNjcmlwdGlvbiIsIG51bGwsIDAsIC0yLCBudWxsLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RVJlZmVyZW5jZShnZXREb2N1bWVudFJvb3RfSW5kZXgoKSwgdGhpcy5nZXRJbmRleCgpLCBudWxsLCAiaW5kZXgiLCBudWxsLCAwLCAtMiwgbnVsbCwgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVSZWZlcmVuY2UoZ2V0RG9jdW1lbnRSb290X05hbWUoKSwgdGhpcy5nZXROYW1lXygpLCBudWxsLCAibmFtZSIsIG51bGwsIDAsIC0yLCBudWxsLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsIElTX09SREVSRUQpOwotCi0JCWluaXRFQ2xhc3MoaW5kZXhFQ2xhc3MsIEluZGV4LmNsYXNzLCAiSW5kZXgiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldEluZGV4X05hbWUoKSwgdGhpcy5nZXROYW1lXygpLCBudWxsLCAibmFtZSIsIG51bGwsIDEsIC0xLCBJbmRleC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVSZWZlcmVuY2UoZ2V0SW5kZXhfRGVzY3JpcHRpb24oKSwgdGhpcy5nZXREZXNjcmlwdGlvbigpLCBudWxsLCAiZGVzY3JpcHRpb24iLCBudWxsLCAxLCAtMSwgSW5kZXguY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldEluZGV4X1JlZ2lzdHJ5KCksIHRoZVJlZ2lzdHJ5UGFja2FnZS5nZXRSZWdpc3RyeSgpLCBudWxsLCAicmVnaXN0cnkiLCBudWxsLCAwLCAtMSwgSW5kZXguY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldEluZGV4X1RheG9ub215KCksIHRoZVRheG9ub215UGFja2FnZS5nZXRUYXhvbm9teSgpLCBudWxsLCAidGF4b25vbXkiLCBudWxsLCAwLCAtMSwgSW5kZXguY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0KLQkJaW5pdEVDbGFzcyhuYW1lRUNsYXNzLCBOYW1lLmNsYXNzLCAiTmFtZSIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0TmFtZV9WYWx1ZSgpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRTdHJpbmcoKSwgInZhbHVlIiwgbnVsbCwgMCwgMSwgTmFtZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFQXR0cmlidXRlKGdldE5hbWVfTGFuZygpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRMYW5ndWFnZSgpLCAibGFuZyIsIG51bGwsIDAsIDEsIE5hbWUuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCi0JCS8vIENyZWF0ZSByZXNvdXJjZQotCQljcmVhdGVSZXNvdXJjZShlTlNfVVJJKTsKLQotCQkvLyBDcmVhdGUgYW5ub3RhdGlvbnMKLQkJLy8gaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhCi0JCWNyZWF0ZUV4dGVuZGVkTWV0YURhdGFBbm5vdGF0aW9ucygpOwotCX0KLQotCS8qKgotCSAqIEluaXRpYWxpemVzIHRoZSBhbm5vdGF0aW9ucyBmb3IgPGI+aHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhPC9iPi4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgdm9pZCBjcmVhdGVFeHRlbmRlZE1ldGFEYXRhQW5ub3RhdGlvbnMoKSB7Ci0JCVN0cmluZyBzb3VyY2UgPSAiaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIjsJCQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChkZXNjcmlwdGlvbkVDbGFzcywgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgIm5hbWUiLCAiRGVzY3JpcHRpb24iLAotCQkJICJraW5kIiwgInNpbXBsZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXREZXNjcmlwdGlvbl9WYWx1ZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAibmFtZSIsICI6MCIsCi0JCQkgImtpbmQiLCAic2ltcGxlIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERlc2NyaXB0aW9uX0xhbmcoKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiYXR0cmlidXRlIiwKLQkJCSAibmFtZSIsICJsYW5nIiwKLQkJCSAibmFtZXNwYWNlIiwgImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChkb2N1bWVudFJvb3RFQ2xhc3MsIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJuYW1lIiwgIiIsCi0JCQkgImtpbmQiLCAibWl4ZWQiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0RG9jdW1lbnRSb290X01peGVkKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnRXaWxkY2FyZCIsCi0JCQkgIm5hbWUiLCAiOm1peGVkIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERvY3VtZW50Um9vdF9YTUxOU1ByZWZpeE1hcCgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgInhtbG5zOnByZWZpeCIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXREb2N1bWVudFJvb3RfWFNJU2NoZW1hTG9jYXRpb24oKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiYXR0cmlidXRlIiwKLQkJCSAibmFtZSIsICJ4c2k6c2NoZW1hTG9jYXRpb24iCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0RG9jdW1lbnRSb290X0Rlc2NyaXB0aW9uKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgImRlc2NyaXB0aW9uIiwKLQkJCSAibmFtZXNwYWNlIiwgIiMjdGFyZ2V0TmFtZXNwYWNlIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERvY3VtZW50Um9vdF9JbmRleCgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJpbmRleCIsCi0JCQkgIm5hbWVzcGFjZSIsICIjI3RhcmdldE5hbWVzcGFjZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXREb2N1bWVudFJvb3RfTmFtZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJuYW1lIiwKLQkJCSAibmFtZXNwYWNlIiwgIiMjdGFyZ2V0TmFtZXNwYWNlIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGluZGV4RUNsYXNzLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAibmFtZSIsICJJbmRleCIsCi0JCQkgImtpbmQiLCAiZWxlbWVudE9ubHkiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0SW5kZXhfTmFtZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJuYW1lIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldEluZGV4X0Rlc2NyaXB0aW9uKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgImRlc2NyaXB0aW9uIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldEluZGV4X1JlZ2lzdHJ5KCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgInJlZ2lzdHJ5IiwKLQkJCSAibmFtZXNwYWNlIiwgImh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3JlZ2lzdHJ5IgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldEluZGV4X1RheG9ub215KCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgInRheG9ub215IiwKLQkJCSAibmFtZXNwYWNlIiwgImh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215IgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKG5hbWVFQ2xhc3MsIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJuYW1lIiwgIk5hbWUiLAotCQkJICJraW5kIiwgInNpbXBsZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXROYW1lX1ZhbHVlKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJuYW1lIiwgIjowIiwKLQkJCSAia2luZCIsICJzaW1wbGUiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0TmFtZV9MYW5nKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImF0dHJpYnV0ZSIsCi0JCQkgIm5hbWUiLCAibGFuZyIsCi0JCQkgIm5hbWVzcGFjZSIsICJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiCi0JCSAgIH0pOwotCX0KLQotfSAvL1JUSW5kZXhQYWNrYWdlSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC91dGlsL1JUSW5kZXhBZGFwdGVyRmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvcnRpbmRleC91dGlsL1JUSW5kZXhBZGFwdGVyRmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWRlNDE1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvdXRpbC9SVEluZGV4QWRhcHRlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJUSW5kZXhBZGFwdGVyRmFjdG9yeS5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDcgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXgudXRpbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5pbXBsLkFkYXB0ZXJGYWN0b3J5SW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4Lio7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5BZGFwdGVyIEZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuCi0gKiBJdCBwcm92aWRlcyBhbiBhZGFwdGVyIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2UKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFJUSW5kZXhBZGFwdGVyRmFjdG9yeSBleHRlbmRzIEFkYXB0ZXJGYWN0b3J5SW1wbCB7Ci0JLyoqCi0JICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgUlRJbmRleFBhY2thZ2UgbW9kZWxQYWNrYWdlOwotCi0JLyoqCi0JICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgYWRhcHRlciBmYWN0b3J5LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBSVEluZGV4QWRhcHRlckZhY3RvcnkoKSB7Ci0JCWlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkgewotCQkJbW9kZWxQYWNrYWdlID0gUlRJbmRleFBhY2thZ2UuZUlOU1RBTkNFOwotCQl9Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBvYmplY3QgaXMgZWl0aGVyIHRoZSBtb2RlbCdzIHBhY2thZ2Ugb3IgaXMgYW4gaW5zdGFuY2Ugb2JqZWN0IG9mIHRoZSBtb2RlbC4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzRmFjdG9yeUZvclR5cGUoT2JqZWN0IG9iamVjdCkgewotCQlpZiAob2JqZWN0ID09IG1vZGVsUGFja2FnZSkgewotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVPYmplY3QpIHsKLQkJCXJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsKLQkJfQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyoqCi0JICogVGhlIHN3aXRjaCB0aGUgZGVsZWdhdGVzIHRvIHRoZSA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZHMuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIFJUSW5kZXhTd2l0Y2ggbW9kZWxTd2l0Y2ggPQotCQluZXcgUlRJbmRleFN3aXRjaCgpIHsKLQkJCXB1YmxpYyBPYmplY3QgY2FzZURlc2NyaXB0aW9uKERlc2NyaXB0aW9uIG9iamVjdCkgewotCQkJCXJldHVybiBjcmVhdGVEZXNjcmlwdGlvbkFkYXB0ZXIoKTsKLQkJCX0KLQkJCXB1YmxpYyBPYmplY3QgY2FzZURvY3VtZW50Um9vdChEb2N1bWVudFJvb3Qgb2JqZWN0KSB7Ci0JCQkJcmV0dXJuIGNyZWF0ZURvY3VtZW50Um9vdEFkYXB0ZXIoKTsKLQkJCX0KLQkJCXB1YmxpYyBPYmplY3QgY2FzZUluZGV4KEluZGV4IG9iamVjdCkgewotCQkJCXJldHVybiBjcmVhdGVJbmRleEFkYXB0ZXIoKTsKLQkJCX0KLQkJCXB1YmxpYyBPYmplY3QgY2FzZU5hbWUoTmFtZSBvYmplY3QpIHsKLQkJCQlyZXR1cm4gY3JlYXRlTmFtZUFkYXB0ZXIoKTsKLQkJCX0KLQkJCXB1YmxpYyBPYmplY3QgZGVmYXVsdENhc2UoRU9iamVjdCBvYmplY3QpIHsKLQkJCQlyZXR1cm4gY3JlYXRlRU9iamVjdEFkYXB0ZXIoKTsKLQkJCX0KLQkJfTsKLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdGFyZ2V0IHRoZSBvYmplY3QgdG8gYWRhcHQuCi0JICogQHJldHVybiB0aGUgYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUFkYXB0ZXIoTm90aWZpZXIgdGFyZ2V0KSB7Ci0JCXJldHVybiAoQWRhcHRlciltb2RlbFN3aXRjaC5kb1N3aXRjaCgoRU9iamVjdCl0YXJnZXQpOwotCX0KLQotCi0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRGVzY3JpcHRpb24gPGVtPkRlc2NyaXB0aW9uPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLQkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5EZXNjcmlwdGlvbgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgQWRhcHRlciBjcmVhdGVEZXNjcmlwdGlvbkFkYXB0ZXIoKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdCA8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0JICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZURvY3VtZW50Um9vdEFkYXB0ZXIoKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkluZGV4IDxlbT5JbmRleDwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0JICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXgKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlSW5kZXhBZGFwdGVyKCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5OYW1lIDxlbT5OYW1lPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLQkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC5OYW1lCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZU5hbWVBZGFwdGVyKCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIHRoZSBkZWZhdWx0IGNhc2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgQWRhcHRlciBjcmVhdGVFT2JqZWN0QWRhcHRlcigpIHsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi19IC8vUlRJbmRleEFkYXB0ZXJGYWN0b3J5CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L3V0aWwvUlRJbmRleFJlc291cmNlRmFjdG9yeUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvdXRpbC9SVEluZGV4UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDA5ZmNjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvdXRpbC9SVEluZGV4UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBSVEluZGV4UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDcgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXgudXRpbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FeHRlbmRlZE1ldGFEYXRhOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaS5YTUxSZXNvdXJjZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWkuaW1wbC5YTUxSZXNvdXJjZUZhY3RvcnlJbXBsOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBUaGUgPGI+UmVzb3VyY2UgRmFjdG9yeTwvYj4gYXNzb2NpYXRlZCB3aXRoIHRoZSBwYWNrYWdlLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC51dGlsLlJUSW5kZXhSZXNvdXJjZUltcGwKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFJUSW5kZXhSZXNvdXJjZUZhY3RvcnlJbXBsIGV4dGVuZHMgWE1MUmVzb3VyY2VGYWN0b3J5SW1wbCB7Ci0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIEV4dGVuZGVkTWV0YURhdGEgZXh0ZW5kZWRNZXRhRGF0YTsKLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHJlc291cmNlIGZhY3RvcnkuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFJUSW5kZXhSZXNvdXJjZUZhY3RvcnlJbXBsKCkgewotCQlzdXBlcigpOwotCQlleHRlbmRlZE1ldGFEYXRhID0gRXh0ZW5kZWRNZXRhRGF0YS5JTlNUQU5DRTsKLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgUmVzb3VyY2UgY3JlYXRlUmVzb3VyY2UoVVJJIHVyaSkgewotCQlYTUxSZXNvdXJjZSByZXN1bHQgPSBuZXcgUlRJbmRleFJlc291cmNlSW1wbCh1cmkpOwotCQlyZXN1bHQuZ2V0RGVmYXVsdFNhdmVPcHRpb25zKCkucHV0KFhNTFJlc291cmNlLk9QVElPTl9FWFRFTkRFRF9NRVRBX0RBVEEsIGV4dGVuZGVkTWV0YURhdGEpOwotCQlyZXN1bHQuZ2V0RGVmYXVsdExvYWRPcHRpb25zKCkucHV0KFhNTFJlc291cmNlLk9QVElPTl9FWFRFTkRFRF9NRVRBX0RBVEEsIGV4dGVuZGVkTWV0YURhdGEpOwotCi0JCXJlc3VsdC5nZXREZWZhdWx0U2F2ZU9wdGlvbnMoKS5wdXQoWE1MUmVzb3VyY2UuT1BUSU9OX1NDSEVNQV9MT0NBVElPTiwgQm9vbGVhbi5UUlVFKTsKLQkJcmVzdWx0LmdldERlZmF1bHRTYXZlT3B0aW9ucygpLnB1dChYTUxSZXNvdXJjZS5PUFRJT05fVVNFX0VOQ09ERURfQVRUUklCVVRFX1NUWUxFLCBCb29sZWFuLlRSVUUpOwotCi0JCXJlc3VsdC5nZXREZWZhdWx0TG9hZE9wdGlvbnMoKS5wdXQoWE1MUmVzb3VyY2UuT1BUSU9OX1VTRV9MRVhJQ0FMX0hBTkRMRVIsIEJvb2xlYW4uVFJVRSk7Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotCi19IC8vUlRJbmRleFJlc291cmNlRmFjdG9yeUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvdXRpbC9SVEluZGV4UmVzb3VyY2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L3V0aWwvUlRJbmRleFJlc291cmNlSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTMxNjQ4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvdXRpbC9SVEluZGV4UmVzb3VyY2VJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFJUSW5kZXhSZXNvdXJjZUltcGwuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ3IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaS5pbXBsLlhNTFJlc291cmNlSW1wbDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlJlc291cmNlIDwvYj4gYXNzb2NpYXRlZCB3aXRoIHRoZSBwYWNrYWdlLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC51dGlsLlJUSW5kZXhSZXNvdXJjZUZhY3RvcnlJbXBsCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBSVEluZGV4UmVzb3VyY2VJbXBsIGV4dGVuZHMgWE1MUmVzb3VyY2VJbXBsIHsKLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB1cmkgdGhlIFVSSSBvZiB0aGUgbmV3IHJlc291cmNlLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgUlRJbmRleFJlc291cmNlSW1wbChVUkkgdXJpKSB7Ci0JCXN1cGVyKHVyaSk7Ci0JfQotCi19IC8vUlRJbmRleFJlc291cmNlRmFjdG9yeUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvdXRpbC9SVEluZGV4U3dpdGNoLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC9ydGluZGV4L3V0aWwvUlRJbmRleFN3aXRjaC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTg1YmUzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3J0aW5kZXgvdXRpbC9SVEluZGV4U3dpdGNoLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBSVEluZGV4U3dpdGNoLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0NyBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucnRpbmRleC51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4Lio7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5Td2l0Y2g8L2I+IGZvciB0aGUgbW9kZWwncyBpbmhlcml0YW5jZSBoaWVyYXJjaHkuCi0gKiBJdCBzdXBwb3J0cyB0aGUgY2FsbCB7QGxpbmsgI2RvU3dpdGNoKEVPYmplY3QpIGRvU3dpdGNoKG9iamVjdCl9Ci0gKiB0byBpbnZva2UgdGhlIDxjb2RlPmNhc2VYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwsCi0gKiBzdGFydGluZyB3aXRoIHRoZSBhY3R1YWwgY2xhc3Mgb2YgdGhlIG9iamVjdAotICogYW5kIHByb2NlZWRpbmcgdXAgdGhlIGluaGVyaXRhbmNlIGhpZXJhcmNoeQotICogdW50aWwgYSBub24tbnVsbCByZXN1bHQgaXMgcmV0dXJuZWQsCi0gKiB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBzd2l0Y2guCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhQYWNrYWdlCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBSVEluZGV4U3dpdGNoIHsKLQkvKioKLQkgKiBUaGUgY2FjaGVkIG1vZGVsIHBhY2thZ2UKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIFJUSW5kZXhQYWNrYWdlIG1vZGVsUGFja2FnZTsKLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN3aXRjaC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgUlRJbmRleFN3aXRjaCgpIHsKLQkJaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKSB7Ci0JCQltb2RlbFBhY2thZ2UgPSBSVEluZGV4UGFja2FnZS5lSU5TVEFOQ0U7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBDYWxscyA8Y29kZT5jYXNlWFhYPC9jb2RlPiBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwgdW50aWwgb25lIHJldHVybnMgYSBub24gbnVsbCByZXN1bHQ7IGl0IHlpZWxkcyB0aGF0IHJlc3VsdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIGZpcnN0IG5vbi1udWxsIHJlc3VsdCByZXR1cm5lZCBieSBhIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGNhbGwuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgZG9Td2l0Y2goRU9iamVjdCB0aGVFT2JqZWN0KSB7Ci0JCXJldHVybiBkb1N3aXRjaCh0aGVFT2JqZWN0LmVDbGFzcygpLCB0aGVFT2JqZWN0KTsKLQl9Ci0KLQkvKioKLQkgKiBDYWxscyA8Y29kZT5jYXNlWFhYPC9jb2RlPiBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwgdW50aWwgb25lIHJldHVybnMgYSBub24gbnVsbCByZXN1bHQ7IGl0IHlpZWxkcyB0aGF0IHJlc3VsdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIGZpcnN0IG5vbi1udWxsIHJlc3VsdCByZXR1cm5lZCBieSBhIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGNhbGwuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBPYmplY3QgZG9Td2l0Y2goRUNsYXNzIHRoZUVDbGFzcywgRU9iamVjdCB0aGVFT2JqZWN0KSB7Ci0JCWlmICh0aGVFQ2xhc3MuZUNvbnRhaW5lcigpID09IG1vZGVsUGFja2FnZSkgewotCQkJcmV0dXJuIGRvU3dpdGNoKHRoZUVDbGFzcy5nZXRDbGFzc2lmaWVySUQoKSwgdGhlRU9iamVjdCk7Ci0JCX0KLQkJZWxzZSB7Ci0JCQlMaXN0IGVTdXBlclR5cGVzID0gdGhlRUNsYXNzLmdldEVTdXBlclR5cGVzKCk7Ci0JCQlyZXR1cm4KLQkJCQllU3VwZXJUeXBlcy5pc0VtcHR5KCkgPwotCQkJCQlkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KSA6Ci0JCQkJCWRvU3dpdGNoKChFQ2xhc3MpZVN1cGVyVHlwZXMuZ2V0KDApLCB0aGVFT2JqZWN0KTsKLQkJfQotCX0KLQotCS8qKgotCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIE9iamVjdCBkb1N3aXRjaChpbnQgY2xhc3NpZmllcklELCBFT2JqZWN0IHRoZUVPYmplY3QpIHsKLQkJc3dpdGNoIChjbGFzc2lmaWVySUQpIHsKLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuREVTQ1JJUFRJT046IHsKLQkJCQlEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiA9IChEZXNjcmlwdGlvbil0aGVFT2JqZWN0OwotCQkJCU9iamVjdCByZXN1bHQgPSBjYXNlRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwotCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0JCQkJcmV0dXJuIHJlc3VsdDsKLQkJCX0KLQkJCWNhc2UgUlRJbmRleFBhY2thZ2UuRE9DVU1FTlRfUk9PVDogewotCQkJCURvY3VtZW50Um9vdCBkb2N1bWVudFJvb3QgPSAoRG9jdW1lbnRSb290KXRoZUVPYmplY3Q7Ci0JCQkJT2JqZWN0IHJlc3VsdCA9IGNhc2VEb2N1bWVudFJvb3QoZG9jdW1lbnRSb290KTsKLQkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotCQkJCXJldHVybiByZXN1bHQ7Ci0JCQl9Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLklOREVYOiB7Ci0JCQkJSW5kZXggaW5kZXggPSAoSW5kZXgpdGhlRU9iamVjdDsKLQkJCQlPYmplY3QgcmVzdWx0ID0gY2FzZUluZGV4KGluZGV4KTsKLQkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotCQkJCXJldHVybiByZXN1bHQ7Ci0JCQl9Ci0JCQljYXNlIFJUSW5kZXhQYWNrYWdlLk5BTUU6IHsKLQkJCQlOYW1lIG5hbWUgPSAoTmFtZSl0aGVFT2JqZWN0OwotCQkJCU9iamVjdCByZXN1bHQgPSBjYXNlTmFtZShuYW1lKTsKLQkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotCQkJCXJldHVybiByZXN1bHQ7Ci0JCQl9Ci0JCQlkZWZhdWx0OiByZXR1cm4gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGVzY3JpcHRpb248L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLQkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLQkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGVzY3JpcHRpb248L2VtPicuCi0JICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgY2FzZURlc2NyaXB0aW9uKERlc2NyaXB0aW9uIG9iamVjdCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGNhc2VEb2N1bWVudFJvb3QoRG9jdW1lbnRSb290IG9iamVjdCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SW5kZXg8L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLQkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLQkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SW5kZXg8L2VtPicuCi0JICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgY2FzZUluZGV4KEluZGV4IG9iamVjdCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+TmFtZTwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5OYW1lPC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGNhc2VOYW1lKE5hbWUgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0JICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2gsIGJ1dCB0aGlzIGlzIHRoZSBsYXN0IGNhc2UgYW55d2F5LgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGRlZmF1bHRDYXNlKEVPYmplY3Qgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotfSAvL1JUSW5kZXhTd2l0Y2gKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L0NhdGVnb3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9DYXRlZ29yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTNkOTY3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L0NhdGVnb3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBDYXRlZ29yeS5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDkgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkNhdGVnb3J5PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnkjZ2V0TmxuYW1lIDxlbT5ObG5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnkjZ2V0Q2F0ZWdvcnkgPGVtPkNhdGVnb3J5PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5I2dldENvZGUgPGVtPkNvZGU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnkjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teVBhY2thZ2UjZ2V0Q2F0ZWdvcnkoKQotICogQG1vZGVsIAotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIENhdGVnb3J5IGV4dGVuZHMgRU9iamVjdCB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmxuYW1lPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5OYW1lfS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5sbmFtZTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5sbmFtZTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlI2dldENhdGVnb3J5X05sbmFtZSgpCi0JICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUxpc3QgZ2V0TmxuYW1lKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5DYXRlZ29yeTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnl9LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+Q2F0ZWdvcnk8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5DYXRlZ29yeTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlI2dldENhdGVnb3J5X0NhdGVnb3J5KCkKLQkgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5DYXRlZ29yeSIgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUxpc3QgZ2V0Q2F0ZWdvcnkoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkNvZGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkNvZGU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+Q29kZTwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0Q29kZShTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXRDYXRlZ29yeV9Db2RlKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5TdHJpbmciCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRDb2RlKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5I2dldENvZGUgPGVtPkNvZGU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkNvZGU8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI2dldENvZGUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQl2b2lkIHNldENvZGUoU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0TmFtZShTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXRDYXRlZ29yeV9OYW1lKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5TdHJpbmciCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXROYW1lKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI2dldE5hbWUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQl2b2lkIHNldE5hbWUoU3RyaW5nIHZhbHVlKTsKLQotfSAvLyBDYXRlZ29yeQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvRG9jdW1lbnRSb290LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9Eb2N1bWVudFJvb3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDcwMjRlNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9Eb2N1bWVudFJvb3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IERvY3VtZW50Um9vdC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDkgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVNYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkZlYXR1cmVNYXA7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRvY3VtZW50IFJvb3Q8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QjZ2V0TWl4ZWQgPGVtPk1peGVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdCNnZXRYTUxOU1ByZWZpeE1hcCA8ZW0+WE1MTlMgUHJlZml4IE1hcDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QjZ2V0WFNJU2NoZW1hTG9jYXRpb24gPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuRG9jdW1lbnRSb290I2dldENhdGVnb3J5IDxlbT5DYXRlZ29yeTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QjZ2V0VGF4b25vbXkgPGVtPlRheG9ub215PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXREb2N1bWVudFJvb3QoKQotICogQG1vZGVsIAotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIERvY3VtZW50Um9vdCBleHRlbmRzIEVPYmplY3QgewotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk1peGVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLQkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRmVhdHVyZU1hcC5FbnRyeX0uCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5NaXhlZDwvZW0+JyBhdHRyaWJ1dGUgbGlzdCBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk1peGVkPC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teVBhY2thZ2UjZ2V0RG9jdW1lbnRSb290X01peGVkKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRmVhdHVyZU1hcEVudHJ5IiBtYW55PSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlGZWF0dXJlTWFwIGdldE1peGVkKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5YTUxOUyBQcmVmaXggTWFwPC9iPjwvZW0+JyBtYXAuCi0JICogVGhlIGtleSBpcyBvZiB0eXBlIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfSwKLQkgKiBhbmQgdGhlIHZhbHVlIGlzIG9mIHR5cGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9LAotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+WE1MTlMgUHJlZml4IE1hcDwvZW0+JyBtYXAgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT4nIG1hcC4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlI2dldERvY3VtZW50Um9vdF9YTUxOU1ByZWZpeE1hcCgpCi0JICogQG1vZGVsIG1hcFR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5FU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSIga2V5VHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdmFsdWVUeXBlPSJqYXZhLmxhbmcuU3RyaW5nIiB0cmFuc2llbnQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVNYXAgZ2V0WE1MTlNQcmVmaXhNYXAoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlhTSSBTY2hlbWEgTG9jYXRpb248L2I+PC9lbT4nIG1hcC4KLQkgKiBUaGUga2V5IGlzIG9mIHR5cGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9LAotCSAqIGFuZCB0aGUgdmFsdWUgaXMgb2YgdHlwZSB7QGxpbmsgamF2YS5sYW5nLlN0cmluZ30sCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5YU0kgU2NoZW1hIExvY2F0aW9uPC9lbT4nIG1hcCBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPicgbWFwLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teVBhY2thZ2UjZ2V0RG9jdW1lbnRSb290X1hTSVNjaGVtYUxvY2F0aW9uKCkKLQkgKiBAbW9kZWwgbWFwVHlwZT0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVTdHJpbmdUb1N0cmluZ01hcEVudHJ5IiBrZXlUeXBlPSJqYXZhLmxhbmcuU3RyaW5nIiB2YWx1ZVR5cGU9ImphdmEubGFuZy5TdHJpbmciIHRyYW5zaWVudD0idHJ1ZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRU1hcCBnZXRYU0lTY2hlbWFMb2NhdGlvbigpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+Q2F0ZWdvcnk8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkNhdGVnb3J5PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkNhdGVnb3J5PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiBAc2VlICNzZXRDYXRlZ29yeShDYXRlZ29yeSkKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlI2dldERvY3VtZW50Um9vdF9DYXRlZ29yeSgpCi0JICogQG1vZGVsIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUNhdGVnb3J5IGdldENhdGVnb3J5KCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdCNnZXRDYXRlZ29yeSA8ZW0+Q2F0ZWdvcnk8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkNhdGVnb3J5PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiBAc2VlICNnZXRDYXRlZ29yeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnkgdmFsdWUpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiBAc2VlICNzZXROYW1lKE5hbWUpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXREb2N1bWVudFJvb3RfTmFtZSgpCi0JICogQG1vZGVsIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCU5hbWUgZ2V0TmFtZSgpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogQHNlZSAjZ2V0TmFtZSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0TmFtZShOYW1lIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlRheG9ub215PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5UYXhvbm9teTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5UYXhvbm9teTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogQHNlZSAjc2V0VGF4b25vbXkoVGF4b25vbXkpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXREb2N1bWVudFJvb3RfVGF4b25vbXkoKQotCSAqIEBtb2RlbCBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIiB0cmFuc2llbnQ9InRydWUiIHZvbGF0aWxlPSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlUYXhvbm9teSBnZXRUYXhvbm9teSgpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QjZ2V0VGF4b25vbXkgPGVtPlRheG9ub215PC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5UYXhvbm9teTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogQHNlZSAjZ2V0VGF4b25vbXkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQl2b2lkIHNldFRheG9ub215KFRheG9ub215IHZhbHVlKTsKLQotfSAvLyBEb2N1bWVudFJvb3QKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L05hbWUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L05hbWUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAxZWNlYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9OYW1lLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IE5hbWUuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ5IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5OYW1lPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZSNnZXRWYWx1ZSA8ZW0+VmFsdWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZSNnZXRMYW5nIDxlbT5MYW5nPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXROYW1lXygpCi0gKiBAbW9kZWwgCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTmFtZSBleHRlbmRzIEVPYmplY3QgewotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlZhbHVlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5WYWx1ZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5WYWx1ZTwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0VmFsdWUoU3RyaW5nKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teVBhY2thZ2UjZ2V0TmFtZV9WYWx1ZSgpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuU3RyaW5nIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZ2V0VmFsdWUoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZSNnZXRWYWx1ZSA8ZW0+VmFsdWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlZhbHVlPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNnZXRWYWx1ZSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0VmFsdWUoU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkxhbmc8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkxhbmc8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TGFuZzwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0TGFuZyhTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXROYW1lX0xhbmcoKQotCSAqIEBtb2RlbCB1bmlxdWU9ImZhbHNlIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtbC50eXBlLkxhbmd1YWdlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZ2V0TGFuZygpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5OYW1lI2dldExhbmcgPGVtPkxhbmc8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkxhbmc8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI2dldExhbmcoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQl2b2lkIHNldExhbmcoU3RyaW5nIHZhbHVlKTsKLQotfSAvLyBOYW1lCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9UYXhvbm9teS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvVGF4b25vbXkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE0YmUwNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9UYXhvbm9teS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogVGF4b25vbXkuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ5IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5UYXhvbm9teTwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldE5sbmFtZSA8ZW0+TmxuYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldENhdGVnb3J5IDxlbT5DYXRlZ29yeTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teSNnZXRJZCA8ZW0+SWQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXkjZ2V0TG9jYXRpb24gPGVtPkxvY2F0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXkjZ2V0UmVmIDxlbT5SZWY8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXkjZ2V0VG1vZGVsS2V5IDxlbT5UbW9kZWwgS2V5PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXRUYXhvbm9teSgpCi0gKiBAbW9kZWwgCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgVGF4b25vbXkgZXh0ZW5kcyBFT2JqZWN0IHsKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5ObG5hbWU8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215Lk5hbWV9LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TmxuYW1lPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmxuYW1lPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teVBhY2thZ2UjZ2V0VGF4b25vbXlfTmxuYW1lKCkKLQkgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5OYW1lIiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTGlzdCBnZXRObG5hbWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkNhdGVnb3J5PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5DYXRlZ29yeX0uCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5DYXRlZ29yeTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkNhdGVnb3J5PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teVBhY2thZ2UjZ2V0VGF4b25vbXlfQ2F0ZWdvcnkoKQotCSAqIEBtb2RlbCB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5IiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTGlzdCBnZXRDYXRlZ29yeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+SWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPklkPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPklkPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNzZXRJZChTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXRUYXhvbm9teV9JZCgpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuQW55VVJJIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZ2V0SWQoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXkjZ2V0SWQgPGVtPklkPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5JZDwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0SWQoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQl2b2lkIHNldElkKFN0cmluZyB2YWx1ZSk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Mb2NhdGlvbjwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TG9jYXRpb248L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TG9jYXRpb248L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI3NldExvY2F0aW9uKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlI2dldFRheG9ub215X0xvY2F0aW9uKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5BbnlVUkkiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRMb2NhdGlvbigpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teSNnZXRMb2NhdGlvbiA8ZW0+TG9jYXRpb248L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkxvY2F0aW9uPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNnZXRMb2NhdGlvbigpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0TG9jYXRpb24oU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0TmFtZShTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXRUYXhvbm9teV9OYW1lKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5TdHJpbmciCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXROYW1lKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI2dldE5hbWUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQl2b2lkIHNldE5hbWUoU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlJlZjwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UmVmPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlJlZjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0UmVmKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlI2dldFRheG9ub215X1JlZigpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuQW55VVJJIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZ2V0UmVmKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldFJlZiA8ZW0+UmVmPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5SZWY8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI2dldFJlZigpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0UmVmKFN0cmluZyB2YWx1ZSk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5UbW9kZWwgS2V5PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5UbW9kZWwgS2V5PC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlRtb2RlbCBLZXk8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI3NldFRtb2RlbEtleShTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZSNnZXRUYXhvbm9teV9UbW9kZWxLZXkoKQotCSAqIEBtb2RlbCB1bmlxdWU9ImZhbHNlIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtbC50eXBlLlN0cmluZyIgcmVxdWlyZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRUbW9kZWxLZXkoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXkjZ2V0VG1vZGVsS2V5IDxlbT5UbW9kZWwgS2V5PC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5UbW9kZWwgS2V5PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNnZXRUbW9kZWxLZXkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQl2b2lkIHNldFRtb2RlbEtleShTdHJpbmcgdmFsdWUpOwotCi19IC8vIFRheG9ub215CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9UYXhvbm9teUZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L1RheG9ub215RmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDZmZGJmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L1RheG9ub215RmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBUYXhvbm9teUZhY3RvcnkuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ5IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRmFjdG9yeTsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuCi0gKiBJdCBwcm92aWRlcyBhIGNyZWF0ZSBtZXRob2QgZm9yIGVhY2ggbm9uLWFic3RyYWN0IGNsYXNzIG9mIHRoZSBtb2RlbC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIFRheG9ub215RmFjdG9yeSBleHRlbmRzIEVGYWN0b3J5IHsKLQkvKioKLQkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCVRheG9ub215RmFjdG9yeSBlSU5TVEFOQ0UgPSBuZXcgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLlRheG9ub215RmFjdG9yeUltcGwoKTsKLQotCS8qKgotCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q2F0ZWdvcnk8L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkNhdGVnb3J5PC9lbT4nLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlDYXRlZ29yeSBjcmVhdGVDYXRlZ29yeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlEb2N1bWVudFJvb3QgY3JlYXRlRG9jdW1lbnRSb290KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk5hbWU8L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk5hbWU8L2VtPicuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCU5hbWUgY3JlYXRlTmFtZSgpOwotCi0JLyoqCi0JICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5UYXhvbm9teTwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VGF4b25vbXk8L2VtPicuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVRheG9ub215IGNyZWF0ZVRheG9ub215KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVRheG9ub215UGFja2FnZSBnZXRUYXhvbm9teVBhY2thZ2UoKTsKLQotfSAvL1RheG9ub215RmFjdG9yeQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvVGF4b25vbXlQYWNrYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9UYXhvbm9teVBhY2thZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJkOTZmOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9UYXhvbm9teVBhY2thZ2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY1MCArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFRheG9ub215UGFja2FnZS5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDkgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLgotICogSXQgY29udGFpbnMgYWNjZXNzb3JzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRvIHJlcHJlc2VudAotICogPHVsPgotICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPgotICogICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4KLSAqICAgPGxpPmVhY2ggZW51bSw8L2xpPgotICogICA8bGk+YW5kIGVhY2ggZGF0YSB0eXBlPC9saT4KLSAqIDwvdWw+Ci0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogCi0gKiAgICBTZWUgaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlLmh0bWwgYW5kCi0gKiAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG5hbWVzcGFjZS4KLSAqIAotICogICAgIFRoaXMgc2NoZW1hIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgWE1MIG5hbWVzcGFjZSwgaW4gYSBmb3JtCi0gKiAgICAgc3VpdGFibGUgZm9yIGltcG9ydCBieSBvdGhlciBzY2hlbWEgZG9jdW1lbnRzLiAgCi0gKiAKLSAqICAgICBOb3RlIHRoYXQgbG9jYWwgbmFtZXMgaW4gdGhpcyBuYW1lc3BhY2UgYXJlIGludGVuZGVkIHRvIGJlIGRlZmluZWQKLSAqICAgICBvbmx5IGJ5IHRoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIG9yIGl0cyBzdWJncm91cHMuICBUaGUKLSAqICAgICBmb2xsb3dpbmcgbmFtZXMgYXJlIGN1cnJlbnRseSBkZWZpbmVkIGluIHRoaXMgbmFtZXNwYWNlIGFuZCBzaG91bGQKLSAqICAgICBub3QgYmUgdXNlZCB3aXRoIGNvbmZsaWN0aW5nIHNlbWFudGljcyBieSBhbnkgV29ya2luZyBHcm91cCwKLSAqICAgICBzcGVjaWZpY2F0aW9uLCBvciBkb2N1bWVudCBpbnN0YW5jZToKLSAqIAotICogICAgIGJhc2UgKGFzIGFuIGF0dHJpYnV0ZSBuYW1lKTogZGVub3RlcyBhbiBhdHRyaWJ1dGUgd2hvc2UgdmFsdWUKLSAqICAgICAgICAgIHByb3ZpZGVzIGEgVVJJIHRvIGJlIHVzZWQgYXMgdGhlIGJhc2UgZm9yIGludGVycHJldGluZyBhbnkKLSAqICAgICAgICAgIHJlbGF0aXZlIFVSSXMgaW4gdGhlIHNjb3BlIG9mIHRoZSBlbGVtZW50IG9uIHdoaWNoIGl0Ci0gKiAgICAgICAgICBhcHBlYXJzOyBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkCi0gKiAgICAgICAgICBieSB2aXJ0dWUgb2YgaXRzIGRlZmluaXRpb24gaW4gdGhlIFhNTCBCYXNlIHNwZWNpZmljYXRpb24uCi0gKiAKLSAqICAgICBpZCAgIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlCi0gKiAgICAgICAgICBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgaWYgZGVjbGFyZWQgdG8gYmUgb2YgdHlwZSBJRC4KLSAqICAgICAgICAgIFRoZSB4bWw6aWQgc3BlY2lmaWNhdGlvbiBpcyBub3QgeWV0IGEgVzNDIFJlY29tbWVuZGF0aW9uLAotICogICAgICAgICAgYnV0IHRoaXMgYXR0cmlidXRlIGlzIGluY2x1ZGVkIGhlcmUgdG8gZmFjaWxpdGF0ZSBleHBlcmltZW50YXRpb24KLSAqICAgICAgICAgIHdpdGggdGhlIG1lY2hhbmlzbXMgaXQgcHJvcG9zZXMuICBOb3RlIHRoYXQgaXQgaXMgX25vdF8gaW5jbHVkZWQKLSAqICAgICAgICAgIGluIHRoZSBzcGVjaWFsQXR0cnMgYXR0cmlidXRlIGdyb3VwLgotICogCi0gKiAgICAgbGFuZyAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZQotICogICAgICAgICAgaXMgYSBsYW5ndWFnZSBjb2RlIGZvciB0aGUgbmF0dXJhbCBsYW5ndWFnZSBvZiB0aGUgY29udGVudCBvZgotICogICAgICAgICAgYW55IGVsZW1lbnQ7IGl0cyB2YWx1ZSBpcyBpbmhlcml0ZWQuICBUaGlzIG5hbWUgaXMgcmVzZXJ2ZWQKLSAqICAgICAgICAgIGJ5IHZpcnR1ZSBvZiBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIHNwZWNpZmljYXRpb24uCi0gKiAgIAotICogICAgIHNwYWNlIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlCi0gKiAgICAgICAgICB2YWx1ZSBpcyBhIGtleXdvcmQgaW5kaWNhdGluZyB3aGF0IHdoaXRlc3BhY2UgcHJvY2Vzc2luZwotICogICAgICAgICAgZGlzY2lwbGluZSBpcyBpbnRlbmRlZCBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQ7IGl0cwotICogICAgICAgICAgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkIGJ5IHZpcnR1ZSBvZiBpdHMKLSAqICAgICAgICAgIGRlZmluaXRpb24gaW4gdGhlIFhNTCBzcGVjaWZpY2F0aW9uLgotICogCi0gKiAgICAgRmF0aGVyIChpbiBhbnkgY29udGV4dCBhdCBhbGwpOiBkZW5vdGVzIEpvbiBCb3NhaywgdGhlIGNoYWlyIG9mIAotICogICAgICAgICAgdGhlIG9yaWdpbmFsIFhNTCBXb3JraW5nIEdyb3VwLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkIGJ5IAotICogICAgICAgICAgdGhlIGZvbGxvd2luZyBkZWNpc2lvbiBvZiB0aGUgVzNDIFhNTCBQbGVuYXJ5IGFuZCAKLSAqICAgICAgICAgIFhNTCBDb29yZGluYXRpb24gZ3JvdXBzOgotICogCi0gKiAgICAgICAgICAgICAgSW4gYXBwcmVjaWF0aW9uIGZvciBoaXMgdmlzaW9uLCBsZWFkZXJzaGlwIGFuZCBkZWRpY2F0aW9uCi0gKiAgICAgICAgICAgICAgdGhlIFczQyBYTUwgUGxlbmFyeSBvbiB0aGlzIDEwdGggZGF5IG9mIEZlYnJ1YXJ5LCAyMDAwCi0gKiAgICAgICAgICAgICAgcmVzZXJ2ZXMgZm9yIEpvbiBCb3NhayBpbiBwZXJwZXR1aXR5IHRoZSBYTUwgbmFtZQotICogICAgICAgICAgICAgIHhtbDpGYXRoZXIKLSAqICAgCi0gKiBUaGlzIHNjaGVtYSBkZWZpbmVzIGF0dHJpYnV0ZXMgYW5kIGFuIGF0dHJpYnV0ZSBncm91cAotICogICAgICAgICBzdWl0YWJsZSBmb3IgdXNlIGJ5Ci0gKiAgICAgICAgIHNjaGVtYXMgd2lzaGluZyB0byBhbGxvdyB4bWw6YmFzZSwgeG1sOmxhbmcsIHhtbDpzcGFjZSBvciB4bWw6aWQKLSAqICAgICAgICAgYXR0cmlidXRlcyBvbiBlbGVtZW50cyB0aGV5IGRlZmluZS4KLSAqIAotICogICAgICAgICBUbyBlbmFibGUgdGhpcywgc3VjaCBhIHNjaGVtYSBtdXN0IGltcG9ydCB0aGlzIHNjaGVtYQotICogICAgICAgICBmb3IgdGhlIFhNTCBuYW1lc3BhY2UsIGUuZy4gYXMgZm9sbG93czoKLSAqICAgICAgICAgJmx0O3NjaGVtYSAuIC4gLiZndDsKLSAqICAgICAgICAgIC4gLiAuCi0gKiAgICAgICAgICAmbHQ7aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIgotICogICAgICAgICAgICAgICAgICAgICBzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwueHNkIi8mZ3Q7Ci0gKiAKLSAqICAgICAgICAgU3Vic2VxdWVudGx5LCBxdWFsaWZpZWQgcmVmZXJlbmNlIHRvIGFueSBvZiB0aGUgYXR0cmlidXRlcwotICogICAgICAgICBvciB0aGUgZ3JvdXAgZGVmaW5lZCBiZWxvdyB3aWxsIGhhdmUgdGhlIGRlc2lyZWQgZWZmZWN0LCBlLmcuCi0gKiAKLSAqICAgICAgICAgJmx0O3R5cGUgLiAuIC4mZ3Q7Ci0gKiAgICAgICAgICAuIC4gLgotICogICAgICAgICAgJmx0O2F0dHJpYnV0ZUdyb3VwIHJlZj0ieG1sOnNwZWNpYWxBdHRycyIvJmd0OwotICogIAotICogICAgICAgICAgd2lsbCBkZWZpbmUgYSB0eXBlIHdoaWNoIHdpbGwgc2NoZW1hLXZhbGlkYXRlIGFuIGluc3RhbmNlCi0gKiAgICAgICAgICBlbGVtZW50IHdpdGggYW55IG9mIHRob3NlIGF0dHJpYnV0ZXMKLSAqIEluIGtlZXBpbmcgd2l0aCB0aGUgWE1MIFNjaGVtYSBXRydzIHN0YW5kYXJkIHZlcnNpb25pbmcKLSAqICAgIHBvbGljeSwgdGhpcyBzY2hlbWEgZG9jdW1lbnQgd2lsbCBwZXJzaXN0IGF0Ci0gKiAgICBodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L3htbC54c2QuCi0gKiAgICBBdCB0aGUgZGF0ZSBvZiBpc3N1ZSBpdCBjYW4gYWxzbyBiZSBmb3VuZCBhdAotICogICAgaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwueHNkLgotICogICAgVGhlIHNjaGVtYSBkb2N1bWVudCBhdCB0aGF0IFVSSSBtYXkgaG93ZXZlciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwKLSAqICAgIGluIG9yZGVyIHRvIHJlbWFpbiBjb21wYXRpYmxlIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhNTCBTY2hlbWEKLSAqICAgIGl0c2VsZiwgb3Igd2l0aCB0aGUgWE1MIG5hbWVzcGFjZSBpdHNlbGYuICBJbiBvdGhlciB3b3JkcywgaWYgdGhlIFhNTAotICogICAgU2NoZW1hIG9yIFhNTCBuYW1lc3BhY2VzIGNoYW5nZSwgdGhlIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudCBhdAotICogICAgaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwueHNkIHdpbGwgY2hhbmdlCi0gKiAgICBhY2NvcmRpbmdseTsgdGhlIHZlcnNpb24gYXQKLSAqICAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgveG1sLnhzZCB3aWxsIG5vdCBjaGFuZ2UuCi0gKiAgIAotICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215RmFjdG9yeQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIFRheG9ub215UGFja2FnZSBleHRlbmRzIEVQYWNrYWdlIHsKLQkvKioKLQkgKiBUaGUgcGFja2FnZSBuYW1lLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBlTkFNRSA9ICJ0YXhvbm9teSI7Ci0KLQkvKioKLQkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgVVJJLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBlTlNfVVJJID0gImh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215IjsKLQotCS8qKgotCSAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBuYW1lLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBlTlNfUFJFRklYID0gInRheG9ub215IjsKLQotCS8qKgotCSAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JVGF4b25vbXlQYWNrYWdlIGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5UYXhvbm9teVBhY2thZ2VJbXBsLmluaXQoKTsKLQotCS8qKgotCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLkNhdGVnb3J5SW1wbCA8ZW0+Q2F0ZWdvcnk8L2VtPn0nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuQ2F0ZWdvcnlJbXBsCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuVGF4b25vbXlQYWNrYWdlSW1wbCNnZXRDYXRlZ29yeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCWludCBDQVRFR09SWSA9IDA7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmxuYW1lPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBDQVRFR09SWV9fTkxOQU1FID0gMDsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5DYXRlZ29yeTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgQ0FURUdPUllfX0NBVEVHT1JZID0gMTsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Db2RlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgQ0FURUdPUllfX0NPREUgPSAyOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBDQVRFR09SWV9fTkFNRSA9IDM7Ci0KLQkvKioKLQkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlIHRoZSAnPGVtPkNhdGVnb3J5PC9lbT4nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IENBVEVHT1JZX0ZFQVRVUkVfQ09VTlQgPSA0OwotCi0JLyoqCi0JICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuRG9jdW1lbnRSb290SW1wbCA8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+fScgY2xhc3MuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5Eb2N1bWVudFJvb3RJbXBsCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuVGF4b25vbXlQYWNrYWdlSW1wbCNnZXREb2N1bWVudFJvb3QoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlpbnQgRE9DVU1FTlRfUk9PVCA9IDE7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TWl4ZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfX01JWEVEID0gMDsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5YTUxOUyBQcmVmaXggTWFwPC9iPjwvZW0+JyBtYXAuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgRE9DVU1FTlRfUk9PVF9fWE1MTlNfUFJFRklYX01BUCA9IDE7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+WFNJIFNjaGVtYSBMb2NhdGlvbjwvYj48L2VtPicgbWFwLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfX1hTSV9TQ0hFTUFfTE9DQVRJT04gPSAyOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkNhdGVnb3J5PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgRE9DVU1FTlRfUk9PVF9fQ0FURUdPUlkgPSAzOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX19OQU1FID0gNDsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXhvbm9teTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfX1RBWE9OT01ZID0gNTsKLQotCS8qKgotCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgdGhlICc8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX0ZFQVRVUkVfQ09VTlQgPSA2OwotCi0JLyoqCi0JICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuTmFtZUltcGwgPGVtPk5hbWU8L2VtPn0nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuTmFtZUltcGwKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5UYXhvbm9teVBhY2thZ2VJbXBsI2dldE5hbWVfKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JaW50IE5BTUUgPSAyOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlZhbHVlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgTkFNRV9fVkFMVUUgPSAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxhbmc8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBOQU1FX19MQU5HID0gMTsKLQotCS8qKgotCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgdGhlICc8ZW0+TmFtZTwvZW0+JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBOQU1FX0ZFQVRVUkVfQ09VTlQgPSAyOwotCi0JLyoqCi0JICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuVGF4b25vbXlJbXBsIDxlbT5UYXhvbm9teTwvZW0+fScgY2xhc3MuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5UYXhvbm9teUltcGwKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5UYXhvbm9teVBhY2thZ2VJbXBsI2dldFRheG9ub215KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JaW50IFRBWE9OT01ZID0gMzsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5ObG5hbWU8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IFRBWE9OT01ZX19OTE5BTUUgPSAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkNhdGVnb3J5PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBUQVhPTk9NWV9fQ0FURUdPUlkgPSAxOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPklkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgVEFYT05PTVlfX0lEID0gMjsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbjwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IFRBWE9OT01ZX19MT0NBVElPTiA9IDM7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IFRBWE9OT01ZX19OQU1FID0gNDsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZWY8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBUQVhPTk9NWV9fUkVGID0gNTsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UbW9kZWwgS2V5PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgVEFYT05PTVlfX1RNT0RFTF9LRVkgPSA2OwotCi0JLyoqCi0JICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSB0aGUgJzxlbT5UYXhvbm9teTwvZW0+JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBUQVhPTk9NWV9GRUFUVVJFX0NPVU5UID0gNzsKLQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5DYXRlZ29yeSA8ZW0+Q2F0ZWdvcnk8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+Q2F0ZWdvcnk8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCUVDbGFzcyBnZXRDYXRlZ29yeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnkjZ2V0TmxuYW1lIDxlbT5ObG5hbWU8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPk5sbmFtZTwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnkjZ2V0TmxuYW1lKCkKLQkgKiBAc2VlICNnZXRDYXRlZ29yeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0Q2F0ZWdvcnlfTmxuYW1lKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5DYXRlZ29yeSNnZXRDYXRlZ29yeSA8ZW0+Q2F0ZWdvcnk8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkNhdGVnb3J5PC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5DYXRlZ29yeSNnZXRDYXRlZ29yeSgpCi0JICogQHNlZSAjZ2V0Q2F0ZWdvcnkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldENhdGVnb3J5X0NhdGVnb3J5KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnkjZ2V0Q29kZSA8ZW0+Q29kZTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkNvZGU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5I2dldENvZGUoKQotCSAqIEBzZWUgI2dldENhdGVnb3J5KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXRDYXRlZ29yeV9Db2RlKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnkjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5I2dldE5hbWUoKQotCSAqIEBzZWUgI2dldENhdGVnb3J5KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXRDYXRlZ29yeV9OYW1lKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdCA8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUNsYXNzIGdldERvY3VtZW50Um9vdCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuRG9jdW1lbnRSb290I2dldE1peGVkIDxlbT5NaXhlZDwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICc8ZW0+TWl4ZWQ8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdCNnZXRNaXhlZCgpCi0JICogQHNlZSAjZ2V0RG9jdW1lbnRSb290KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXREb2N1bWVudFJvb3RfTWl4ZWQoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgbWFwICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QjZ2V0WE1MTlNQcmVmaXhNYXAgPGVtPlhNTE5TIFByZWZpeCBNYXA8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBtYXAgJzxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QjZ2V0WE1MTlNQcmVmaXhNYXAoKQotCSAqIEBzZWUgI2dldERvY3VtZW50Um9vdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X1hNTE5TUHJlZml4TWFwKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIG1hcCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuRG9jdW1lbnRSb290I2dldFhTSVNjaGVtYUxvY2F0aW9uIDxlbT5YU0kgU2NoZW1hIExvY2F0aW9uPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgbWFwICc8ZW0+WFNJIFNjaGVtYSBMb2NhdGlvbjwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuRG9jdW1lbnRSb290I2dldFhTSVNjaGVtYUxvY2F0aW9uKCkKLQkgKiBAc2VlICNnZXREb2N1bWVudFJvb3QoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9YU0lTY2hlbWFMb2NhdGlvbigpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdCNnZXRDYXRlZ29yeSA8ZW0+Q2F0ZWdvcnk8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5DYXRlZ29yeTwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuRG9jdW1lbnRSb290I2dldENhdGVnb3J5KCkKLQkgKiBAc2VlICNnZXREb2N1bWVudFJvb3QoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9DYXRlZ29yeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdCNnZXROYW1lIDxlbT5OYW1lPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8ZW0+TmFtZTwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuRG9jdW1lbnRSb290I2dldE5hbWUoKQotCSAqIEBzZWUgI2dldERvY3VtZW50Um9vdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X05hbWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QjZ2V0VGF4b25vbXkgPGVtPlRheG9ub215PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8ZW0+VGF4b25vbXk8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdCNnZXRUYXhvbm9teSgpCi0JICogQHNlZSAjZ2V0RG9jdW1lbnRSb290KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfVGF4b25vbXkoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZSA8ZW0+TmFtZTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5OYW1lPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5OYW1lCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVDbGFzcyBnZXROYW1lXygpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215Lk5hbWUjZ2V0VmFsdWUgPGVtPlZhbHVlPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VmFsdWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215Lk5hbWUjZ2V0VmFsdWUoKQotCSAqIEBzZWUgI2dldE5hbWVfKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXROYW1lX1ZhbHVlKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZSNnZXRMYW5nIDxlbT5MYW5nPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TGFuZzwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZSNnZXRMYW5nKCkKLQkgKiBAc2VlICNnZXROYW1lXygpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVBdHRyaWJ1dGUgZ2V0TmFtZV9MYW5nKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215IDxlbT5UYXhvbm9teTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5UYXhvbm9teTwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUNsYXNzIGdldFRheG9ub215KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teSNnZXRObG5hbWUgPGVtPk5sbmFtZTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+TmxuYW1lPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teSNnZXRObG5hbWUoKQotCSAqIEBzZWUgI2dldFRheG9ub215KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXRUYXhvbm9teV9ObG5hbWUoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldENhdGVnb3J5IDxlbT5DYXRlZ29yeTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+Q2F0ZWdvcnk8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldENhdGVnb3J5KCkKLQkgKiBAc2VlICNnZXRUYXhvbm9teSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0VGF4b25vbXlfQ2F0ZWdvcnkoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teSNnZXRJZCA8ZW0+SWQ8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5JZDwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXkjZ2V0SWQoKQotCSAqIEBzZWUgI2dldFRheG9ub215KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXRUYXhvbm9teV9JZCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldExvY2F0aW9uIDxlbT5Mb2NhdGlvbjwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkxvY2F0aW9uPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teSNnZXRMb2NhdGlvbigpCi0JICogQHNlZSAjZ2V0VGF4b25vbXkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldFRheG9ub215X0xvY2F0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXkjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldE5hbWUoKQotCSAqIEBzZWUgI2dldFRheG9ub215KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXRUYXhvbm9teV9OYW1lKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXkjZ2V0UmVmIDxlbT5SZWY8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5SZWY8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldFJlZigpCi0JICogQHNlZSAjZ2V0VGF4b25vbXkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldFRheG9ub215X1JlZigpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldFRtb2RlbEtleSA8ZW0+VG1vZGVsIEtleTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlRtb2RlbCBLZXk8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215I2dldFRtb2RlbEtleSgpCi0JICogQHNlZSAjZ2V0VGF4b25vbXkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldFRheG9ub215X1Rtb2RlbEtleSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JVGF4b25vbXlGYWN0b3J5IGdldFRheG9ub215RmFjdG9yeSgpOwotCi19IC8vVGF4b25vbXlQYWNrYWdlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9pbXBsL0NhdGVnb3J5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvaW1wbC9DYXRlZ29yeUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzViMmUzYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9pbXBsL0NhdGVnb3J5SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzEzICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogQ2F0ZWdvcnlJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbkNoYWluOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVN0cnVjdHVyYWxGZWF0dXJlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FT2JqZWN0SW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVPYmplY3RDb250YWlubWVudEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkludGVybmFsRUxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZTsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkNhdGVnb3J5PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuQ2F0ZWdvcnlJbXBsI2dldE5sbmFtZSA8ZW0+TmxuYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuQ2F0ZWdvcnlJbXBsI2dldENhdGVnb3J5IDxlbT5DYXRlZ29yeTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLkNhdGVnb3J5SW1wbCNnZXRDb2RlIDxlbT5Db2RlPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuQ2F0ZWdvcnlJbXBsI2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBDYXRlZ29yeUltcGwgZXh0ZW5kcyBFT2JqZWN0SW1wbCBpbXBsZW1lbnRzIENhdGVnb3J5IHsKLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRObG5hbWUoKSA8ZW0+TmxuYW1lPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldE5sbmFtZSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIEVMaXN0IG5sbmFtZSA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRDYXRlZ29yeSgpIDxlbT5DYXRlZ29yeTwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRDYXRlZ29yeSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIEVMaXN0IGNhdGVnb3J5ID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRDb2RlKCkgPGVtPkNvZGU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldENvZGUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIENPREVfRURFRkFVTFQgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0Q29kZSgpIDxlbT5Db2RlPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRDb2RlKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgU3RyaW5nIGNvZGUgPSBDT0RFX0VERUZBVUxUOwotCi0JLyoqCi0JICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWUoKSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TmFtZSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldE5hbWUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgbmFtZSA9IE5BTUVfRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgQ2F0ZWdvcnlJbXBsKCkgewotCQlzdXBlcigpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgewotCQlyZXR1cm4gVGF4b25vbXlQYWNrYWdlLmVJTlNUQU5DRS5nZXRDYXRlZ29yeSgpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFTGlzdCBnZXRObG5hbWUoKSB7Ci0JCWlmIChubG5hbWUgPT0gbnVsbCkgewotCQkJbmxuYW1lID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KE5hbWUuY2xhc3MsIHRoaXMsIFRheG9ub215UGFja2FnZS5DQVRFR09SWV9fTkxOQU1FKTsKLQkJfQotCQlyZXR1cm4gbmxuYW1lOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFTGlzdCBnZXRDYXRlZ29yeSgpIHsKLQkJaWYgKGNhdGVnb3J5ID09IG51bGwpIHsKLQkJCWNhdGVnb3J5ID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KENhdGVnb3J5LmNsYXNzLCB0aGlzLCBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX0NBVEVHT1JZKTsKLQkJfQotCQlyZXR1cm4gY2F0ZWdvcnk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRDb2RlKCkgewotCQlyZXR1cm4gY29kZTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRDb2RlKFN0cmluZyBuZXdDb2RlKSB7Ci0JCVN0cmluZyBvbGRDb2RlID0gY29kZTsKLQkJY29kZSA9IG5ld0NvZGU7Ci0JCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFRheG9ub215UGFja2FnZS5DQVRFR09SWV9fQ09ERSwgb2xkQ29kZSwgY29kZSkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLQkJcmV0dXJuIG5hbWU7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmV3TmFtZSkgewotCQlTdHJpbmcgb2xkTmFtZSA9IG5hbWU7Ci0JCW5hbWUgPSBuZXdOYW1lOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX05BTUUsIG9sZE5hbWUsIG5hbWUpKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gZUludmVyc2VSZW1vdmUoSW50ZXJuYWxFT2JqZWN0IG90aGVyRW5kLCBpbnQgZmVhdHVyZUlELCBDbGFzcyBiYXNlQ2xhc3MsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpIHsKLQkJaWYgKGZlYXR1cmVJRCA+PSAwKSB7Ci0JCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChmZWF0dXJlSUQsIGJhc2VDbGFzcykpIHsKLQkJCQljYXNlIFRheG9ub215UGFja2FnZS5DQVRFR09SWV9fTkxOQU1FOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldE5sbmFtZSgpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0JCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX0NBVEVHT1JZOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldENhdGVnb3J5KCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQlkZWZhdWx0OgotCQkJCQlyZXR1cm4gZUR5bmFtaWNJbnZlcnNlUmVtb3ZlKG90aGVyRW5kLCBmZWF0dXJlSUQsIGJhc2VDbGFzcywgbXNncyk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGVCYXNpY1NldENvbnRhaW5lcihudWxsLCBmZWF0dXJlSUQsIG1zZ3MpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgZUdldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIGJvb2xlYW4gcmVzb2x2ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkNBVEVHT1JZX19OTE5BTUU6Ci0JCQkJcmV0dXJuIGdldE5sbmFtZSgpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX0NBVEVHT1JZOgotCQkJCXJldHVybiBnZXRDYXRlZ29yeSgpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX0NPREU6Ci0JCQkJcmV0dXJuIGdldENvZGUoKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkNBVEVHT1JZX19OQU1FOgotCQkJCXJldHVybiBnZXROYW1lKCk7Ci0JCX0KLQkJcmV0dXJuIGVEeW5hbWljR2V0KGVGZWF0dXJlLCByZXNvbHZlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBlU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSwgT2JqZWN0IG5ld1ZhbHVlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX05MTkFNRToKLQkJCQlnZXRObG5hbWUoKS5jbGVhcigpOwotCQkJCWdldE5sbmFtZSgpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX0NBVEVHT1JZOgotCQkJCWdldENhdGVnb3J5KCkuY2xlYXIoKTsKLQkJCQlnZXRDYXRlZ29yeSgpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX0NPREU6Ci0JCQkJc2V0Q29kZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5DQVRFR09SWV9fTkFNRToKLQkJCQlzZXROYW1lKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJfQotCQllRHluYW1pY1NldChlRmVhdHVyZSwgbmV3VmFsdWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGVVbnNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5DQVRFR09SWV9fTkxOQU1FOgotCQkJCWdldE5sbmFtZSgpLmNsZWFyKCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX0NBVEVHT1JZOgotCQkJCWdldENhdGVnb3J5KCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5DQVRFR09SWV9fQ09ERToKLQkJCQlzZXRDb2RlKENPREVfRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkNBVEVHT1JZX19OQU1FOgotCQkJCXNldE5hbWUoTkFNRV9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljVW5zZXQoZUZlYXR1cmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBib29sZWFuIGVJc1NldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5DQVRFR09SWV9fTkxOQU1FOgotCQkJCXJldHVybiBubG5hbWUgIT0gbnVsbCAmJiAhbmxuYW1lLmlzRW1wdHkoKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkNBVEVHT1JZX19DQVRFR09SWToKLQkJCQlyZXR1cm4gY2F0ZWdvcnkgIT0gbnVsbCAmJiAhY2F0ZWdvcnkuaXNFbXB0eSgpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUllfX0NPREU6Ci0JCQkJcmV0dXJuIENPREVfRURFRkFVTFQgPT0gbnVsbCA/IGNvZGUgIT0gbnVsbCA6ICFDT0RFX0VERUZBVUxULmVxdWFscyhjb2RlKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkNBVEVHT1JZX19OQU1FOgotCQkJCXJldHVybiBOQU1FX0VERUZBVUxUID09IG51bGwgPyBuYW1lICE9IG51bGwgOiAhTkFNRV9FREVGQVVMVC5lcXVhbHMobmFtZSk7Ci0JCX0KLQkJcmV0dXJuIGVEeW5hbWljSXNTZXQoZUZlYXR1cmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0JCWlmIChlSXNQcm94eSgpKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotCQlTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLQkJcmVzdWx0LmFwcGVuZCgiIChjb2RlOiAiKTsKLQkJcmVzdWx0LmFwcGVuZChjb2RlKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCBuYW1lOiAiKTsKLQkJcmVzdWx0LmFwcGVuZChuYW1lKTsKLQkJcmVzdWx0LmFwcGVuZCgnKScpOwotCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0JfQotCi19IC8vQ2F0ZWdvcnlJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9pbXBsL0RvY3VtZW50Um9vdEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L2ltcGwvRG9jdW1lbnRSb290SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Nzc4NzQ0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L2ltcGwvRG9jdW1lbnRSb290SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzY3ICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogRG9jdW1lbnRSb290SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDggY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbkNoYWluOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVNYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FU3RydWN0dXJhbEZlYXR1cmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVjb3JlUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU9iamVjdEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRVN0cmluZ1RvU3RyaW5nTWFwRW50cnlJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuQmFzaWNGZWF0dXJlTWFwOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVjb3JlRU1hcDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5GZWF0dXJlTWFwOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkludGVybmFsRUxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuRG9jdW1lbnRSb290OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RG9jdW1lbnQgUm9vdDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0TWl4ZWQgPGVtPk1peGVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuRG9jdW1lbnRSb290SW1wbCNnZXRYTUxOU1ByZWZpeE1hcCA8ZW0+WE1MTlMgUHJlZml4IE1hcDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0WFNJU2NoZW1hTG9jYXRpb24gPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5Eb2N1bWVudFJvb3RJbXBsI2dldENhdGVnb3J5IDxlbT5DYXRlZ29yeTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0VGF4b25vbXkgPGVtPlRheG9ub215PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgRG9jdW1lbnRSb290SW1wbCBleHRlbmRzIEVPYmplY3RJbXBsIGltcGxlbWVudHMgRG9jdW1lbnRSb290IHsKLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRNaXhlZCgpIDxlbT5NaXhlZDwvZW0+fScgYXR0cmlidXRlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRNaXhlZCgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIEZlYXR1cmVNYXAgbWl4ZWQgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0WE1MTlNQcmVmaXhNYXAoKSA8ZW0+WE1MTlMgUHJlZml4IE1hcDwvZW0+fScgbWFwLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0WE1MTlNQcmVmaXhNYXAoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBFTWFwIHhNTE5TUHJlZml4TWFwID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFhTSVNjaGVtYUxvY2F0aW9uKCkgPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPn0nIG1hcC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFhTSVNjaGVtYUxvY2F0aW9uKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRU1hcCB4U0lTY2hlbWFMb2NhdGlvbiA9IG51bGw7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRG9jdW1lbnRSb290SW1wbCgpIHsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsKLQkJcmV0dXJuIFRheG9ub215UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290KCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEZlYXR1cmVNYXAgZ2V0TWl4ZWQoKSB7Ci0JCWlmIChtaXhlZCA9PSBudWxsKSB7Ci0JCQltaXhlZCA9IG5ldyBCYXNpY0ZlYXR1cmVNYXAodGhpcywgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEKTsKLQkJfQotCQlyZXR1cm4gbWl4ZWQ7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVNYXAgZ2V0WE1MTlNQcmVmaXhNYXAoKSB7Ci0JCWlmICh4TUxOU1ByZWZpeE1hcCA9PSBudWxsKSB7Ci0JCQl4TUxOU1ByZWZpeE1hcCA9IG5ldyBFY29yZUVNYXAoRWNvcmVQYWNrYWdlLmVJTlNUQU5DRS5nZXRFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSgpLCBFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeUltcGwuY2xhc3MsIHRoaXMsIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQKTsKLQkJfQotCQlyZXR1cm4geE1MTlNQcmVmaXhNYXA7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVNYXAgZ2V0WFNJU2NoZW1hTG9jYXRpb24oKSB7Ci0JCWlmICh4U0lTY2hlbWFMb2NhdGlvbiA9PSBudWxsKSB7Ci0JCQl4U0lTY2hlbWFMb2NhdGlvbiA9IG5ldyBFY29yZUVNYXAoRWNvcmVQYWNrYWdlLmVJTlNUQU5DRS5nZXRFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSgpLCBFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeUltcGwuY2xhc3MsIHRoaXMsIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OKTsKLQkJfQotCQlyZXR1cm4geFNJU2NoZW1hTG9jYXRpb247Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIENhdGVnb3J5IGdldENhdGVnb3J5KCkgewotCQlyZXR1cm4gKENhdGVnb3J5KWdldE1peGVkKCkuZ2V0KFRheG9ub215UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X0NhdGVnb3J5KCksIHRydWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldENhdGVnb3J5KENhdGVnb3J5IG5ld0NhdGVnb3J5LCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCXJldHVybiAoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuYmFzaWNBZGQoVGF4b25vbXlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfQ2F0ZWdvcnkoKSwgbmV3Q2F0ZWdvcnksIG51bGwpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldENhdGVnb3J5KENhdGVnb3J5IG5ld0NhdGVnb3J5KSB7Ci0JCSgoRmVhdHVyZU1hcC5JbnRlcm5hbClnZXRNaXhlZCgpKS5zZXQoVGF4b25vbXlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfQ2F0ZWdvcnkoKSwgbmV3Q2F0ZWdvcnkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOYW1lIGdldE5hbWUoKSB7Ci0JCXJldHVybiAoTmFtZSlnZXRNaXhlZCgpLmdldChUYXhvbm9teVBhY2thZ2UuZUlOU1RBTkNFLmdldERvY3VtZW50Um9vdF9OYW1lKCksIHRydWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldE5hbWUoTmFtZSBuZXdOYW1lLCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCXJldHVybiAoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuYmFzaWNBZGQoVGF4b25vbXlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfTmFtZSgpLCBuZXdOYW1lLCBudWxsKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXROYW1lKE5hbWUgbmV3TmFtZSkgewotCQkoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuc2V0KFRheG9ub215UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X05hbWUoKSwgbmV3TmFtZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFRheG9ub215IGdldFRheG9ub215KCkgewotCQlyZXR1cm4gKFRheG9ub215KWdldE1peGVkKCkuZ2V0KFRheG9ub215UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X1RheG9ub215KCksIHRydWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldFRheG9ub215KFRheG9ub215IG5ld1RheG9ub215LCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCXJldHVybiAoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuYmFzaWNBZGQoVGF4b25vbXlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfVGF4b25vbXkoKSwgbmV3VGF4b25vbXksIG51bGwpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldFRheG9ub215KFRheG9ub215IG5ld1RheG9ub215KSB7Ci0JCSgoRmVhdHVyZU1hcC5JbnRlcm5hbClnZXRNaXhlZCgpKS5zZXQoVGF4b25vbXlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfVGF4b25vbXkoKSwgbmV3VGF4b25vbXkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBlSW52ZXJzZVJlbW92ZShJbnRlcm5hbEVPYmplY3Qgb3RoZXJFbmQsIGludCBmZWF0dXJlSUQsIENsYXNzIGJhc2VDbGFzcywgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykgewotCQlpZiAoZmVhdHVyZUlEID49IDApIHsKLQkJCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGZlYXR1cmVJRCwgYmFzZUNsYXNzKSkgewotCQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldE1peGVkKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldFhNTE5TUHJlZml4TWFwKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldFhTSVNjaGVtYUxvY2F0aW9uKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19DQVRFR09SWToKLQkJCQkJcmV0dXJuIGJhc2ljU2V0Q2F0ZWdvcnkobnVsbCwgbXNncyk7Ci0JCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTkFNRToKLQkJCQkJcmV0dXJuIGJhc2ljU2V0TmFtZShudWxsLCBtc2dzKTsKLQkJCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19UQVhPTk9NWToKLQkJCQkJcmV0dXJuIGJhc2ljU2V0VGF4b25vbXkobnVsbCwgbXNncyk7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJcmV0dXJuIGVEeW5hbWljSW52ZXJzZVJlbW92ZShvdGhlckVuZCwgZmVhdHVyZUlELCBiYXNlQ2xhc3MsIG1zZ3MpOwotCQkJfQotCQl9Ci0JCXJldHVybiBlQmFzaWNTZXRDb250YWluZXIobnVsbCwgZmVhdHVyZUlELCBtc2dzKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGVHZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBib29sZWFuIHJlc29sdmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19NSVhFRDoKLQkJCQlyZXR1cm4gZ2V0TWl4ZWQoKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1hNTE5TX1BSRUZJWF9NQVA6Ci0JCQkJcmV0dXJuIGdldFhNTE5TUHJlZml4TWFwKCk7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCXJldHVybiBnZXRYU0lTY2hlbWFMb2NhdGlvbigpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fQ0FURUdPUlk6Ci0JCQkJcmV0dXJuIGdldENhdGVnb3J5KCk7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19OQU1FOgotCQkJCXJldHVybiBnZXROYW1lKCk7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19UQVhPTk9NWToKLQkJCQlyZXR1cm4gZ2V0VGF4b25vbXkoKTsKLQkJfQotCQlyZXR1cm4gZUR5bmFtaWNHZXQoZUZlYXR1cmUsIHJlc29sdmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGVTZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBPYmplY3QgbmV3VmFsdWUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19NSVhFRDoKLQkJCQlnZXRNaXhlZCgpLmNsZWFyKCk7Ci0JCQkJZ2V0TWl4ZWQoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1hNTE5TX1BSRUZJWF9NQVA6Ci0JCQkJZ2V0WE1MTlNQcmVmaXhNYXAoKS5jbGVhcigpOwotCQkJCWdldFhNTE5TUHJlZml4TWFwKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCWdldFhTSVNjaGVtYUxvY2F0aW9uKCkuY2xlYXIoKTsKLQkJCQlnZXRYU0lTY2hlbWFMb2NhdGlvbigpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fQ0FURUdPUlk6Ci0JCQkJc2V0Q2F0ZWdvcnkoKENhdGVnb3J5KW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19OQU1FOgotCQkJCXNldE5hbWUoKE5hbWUpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1RBWE9OT01ZOgotCQkJCXNldFRheG9ub215KChUYXhvbm9teSluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljU2V0KGVGZWF0dXJlLCBuZXdWYWx1ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVVuc2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEOgotCQkJCWdldE1peGVkKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCWdldFhNTE5TUHJlZml4TWFwKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCWdldFhTSVNjaGVtYUxvY2F0aW9uKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19DQVRFR09SWToKLQkJCQlzZXRDYXRlZ29yeSgoQ2F0ZWdvcnkpbnVsbCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTkFNRToKLQkJCQlzZXROYW1lKChOYW1lKW51bGwpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1RBWE9OT01ZOgotCQkJCXNldFRheG9ub215KChUYXhvbm9teSludWxsKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNVbnNldChlRmVhdHVyZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIGJvb2xlYW4gZUlzU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEOgotCQkJCXJldHVybiBtaXhlZCAhPSBudWxsICYmICFtaXhlZC5pc0VtcHR5KCk7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCXJldHVybiB4TUxOU1ByZWZpeE1hcCAhPSBudWxsICYmICF4TUxOU1ByZWZpeE1hcC5pc0VtcHR5KCk7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCXJldHVybiB4U0lTY2hlbWFMb2NhdGlvbiAhPSBudWxsICYmICF4U0lTY2hlbWFMb2NhdGlvbi5pc0VtcHR5KCk7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19DQVRFR09SWToKLQkJCQlyZXR1cm4gZ2V0Q2F0ZWdvcnkoKSAhPSBudWxsOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTkFNRToKLQkJCQlyZXR1cm4gZ2V0TmFtZSgpICE9IG51bGw7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5ET0NVTUVOVF9ST09UX19UQVhPTk9NWToKLQkJCQlyZXR1cm4gZ2V0VGF4b25vbXkoKSAhPSBudWxsOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0lzU2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotCQlpZiAoZUlzUHJveHkoKSkgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLQkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0JCXJlc3VsdC5hcHBlbmQoIiAobWl4ZWQ6ICIpOwotCQlyZXN1bHQuYXBwZW5kKG1peGVkKTsKLQkJcmVzdWx0LmFwcGVuZCgnKScpOwotCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0JfQotCi19IC8vRG9jdW1lbnRSb290SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvaW1wbC9OYW1lSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvaW1wbC9OYW1lSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzU1YmQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L2ltcGwvTmFtZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IE5hbWVJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVTdHJ1Y3R1cmFsRmVhdHVyZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVPYmplY3RJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5OYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TmFtZTwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLk5hbWVJbXBsI2dldFZhbHVlIDxlbT5WYWx1ZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLk5hbWVJbXBsI2dldExhbmcgPGVtPkxhbmc8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBOYW1lSW1wbCBleHRlbmRzIEVPYmplY3RJbXBsIGltcGxlbWVudHMgTmFtZSB7Ci0JLyoqCi0JICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFZhbHVlKCkgPGVtPlZhbHVlPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRWYWx1ZSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkFMVUVfRURFRkFVTFQgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VmFsdWUoKSA8ZW0+VmFsdWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFZhbHVlKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgU3RyaW5nIHZhbHVlID0gVkFMVUVfRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TGFuZygpIDxlbT5MYW5nPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRMYW5nKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBMQU5HX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExhbmcoKSA8ZW0+TGFuZzwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TGFuZygpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyBsYW5nID0gTEFOR19FREVGQVVMVDsKLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBOYW1lSW1wbCgpIHsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsKLQkJcmV0dXJuIFRheG9ub215UGFja2FnZS5lSU5TVEFOQ0UuZ2V0TmFtZV8oKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkgewotCQlyZXR1cm4gdmFsdWU7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0VmFsdWUoU3RyaW5nIG5ld1ZhbHVlKSB7Ci0JCVN0cmluZyBvbGRWYWx1ZSA9IHZhbHVlOwotCQl2YWx1ZSA9IG5ld1ZhbHVlOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBUYXhvbm9teVBhY2thZ2UuTkFNRV9fVkFMVUUsIG9sZFZhbHVlLCB2YWx1ZSkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0TGFuZygpIHsKLQkJcmV0dXJuIGxhbmc7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0TGFuZyhTdHJpbmcgbmV3TGFuZykgewotCQlTdHJpbmcgb2xkTGFuZyA9IGxhbmc7Ci0JCWxhbmcgPSBuZXdMYW5nOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBUYXhvbm9teVBhY2thZ2UuTkFNRV9fTEFORywgb2xkTGFuZywgbGFuZykpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgZUdldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIGJvb2xlYW4gcmVzb2x2ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLk5BTUVfX1ZBTFVFOgotCQkJCXJldHVybiBnZXRWYWx1ZSgpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuTkFNRV9fTEFORzoKLQkJCQlyZXR1cm4gZ2V0TGFuZygpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0dldChlRmVhdHVyZSwgcmVzb2x2ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIE9iamVjdCBuZXdWYWx1ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLk5BTUVfX1ZBTFVFOgotCQkJCXNldFZhbHVlKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLk5BTUVfX0xBTkc6Ci0JCQkJc2V0TGFuZygoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNTZXQoZUZlYXR1cmUsIG5ld1ZhbHVlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBlVW5zZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuTkFNRV9fVkFMVUU6Ci0JCQkJc2V0VmFsdWUoVkFMVUVfRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLk5BTUVfX0xBTkc6Ci0JCQkJc2V0TGFuZyhMQU5HX0VERUZBVUxUKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNVbnNldChlRmVhdHVyZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIGJvb2xlYW4gZUlzU2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLk5BTUVfX1ZBTFVFOgotCQkJCXJldHVybiBWQUxVRV9FREVGQVVMVCA9PSBudWxsID8gdmFsdWUgIT0gbnVsbCA6ICFWQUxVRV9FREVGQVVMVC5lcXVhbHModmFsdWUpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuTkFNRV9fTEFORzoKLQkJCQlyZXR1cm4gTEFOR19FREVGQVVMVCA9PSBudWxsID8gbGFuZyAhPSBudWxsIDogIUxBTkdfRURFRkFVTFQuZXF1YWxzKGxhbmcpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0lzU2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotCQlpZiAoZUlzUHJveHkoKSkgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLQkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0JCXJlc3VsdC5hcHBlbmQoIiAodmFsdWU6ICIpOwotCQlyZXN1bHQuYXBwZW5kKHZhbHVlKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCBsYW5nOiAiKTsKLQkJcmVzdWx0LmFwcGVuZChsYW5nKTsKLQkJcmVzdWx0LmFwcGVuZCgnKScpOwotCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0JfQotCi19IC8vTmFtZUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L2ltcGwvVGF4b25vbXlGYWN0b3J5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvaW1wbC9UYXhvbm9teUZhY3RvcnlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmNWI1NGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvaW1wbC9UYXhvbm9teUZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBUYXhvbm9teUZhY3RvcnlJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FRmFjdG9yeUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215Lio7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5GYWN0b3J5PC9iPi4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVGF4b25vbXlGYWN0b3J5SW1wbCBleHRlbmRzIEVGYWN0b3J5SW1wbCBpbXBsZW1lbnRzIFRheG9ub215RmFjdG9yeSB7Ci0JLyoqCi0JICogQ3JlYXRlcyBhbmQgaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFRheG9ub215RmFjdG9yeUltcGwoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVPYmplY3QgY3JlYXRlKEVDbGFzcyBlQ2xhc3MpIHsKLQkJc3dpdGNoIChlQ2xhc3MuZ2V0Q2xhc3NpZmllcklEKCkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkNBVEVHT1JZOiByZXR1cm4gY3JlYXRlQ2F0ZWdvcnkoKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1Q6IHJldHVybiBjcmVhdGVEb2N1bWVudFJvb3QoKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLk5BTUU6IHJldHVybiBjcmVhdGVOYW1lKCk7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5UQVhPTk9NWTogcmV0dXJuIGNyZWF0ZVRheG9ub215KCk7Ci0JCQlkZWZhdWx0OgotCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBjbGFzcyAnIiArIGVDbGFzcy5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgQ2F0ZWdvcnkgY3JlYXRlQ2F0ZWdvcnkoKSB7Ci0JCUNhdGVnb3J5SW1wbCBjYXRlZ29yeSA9IG5ldyBDYXRlZ29yeUltcGwoKTsKLQkJcmV0dXJuIGNhdGVnb3J5OwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBEb2N1bWVudFJvb3QgY3JlYXRlRG9jdW1lbnRSb290KCkgewotCQlEb2N1bWVudFJvb3RJbXBsIGRvY3VtZW50Um9vdCA9IG5ldyBEb2N1bWVudFJvb3RJbXBsKCk7Ci0JCXJldHVybiBkb2N1bWVudFJvb3Q7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE5hbWUgY3JlYXRlTmFtZSgpIHsKLQkJTmFtZUltcGwgbmFtZSA9IG5ldyBOYW1lSW1wbCgpOwotCQlyZXR1cm4gbmFtZTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgVGF4b25vbXkgY3JlYXRlVGF4b25vbXkoKSB7Ci0JCVRheG9ub215SW1wbCB0YXhvbm9teSA9IG5ldyBUYXhvbm9teUltcGwoKTsKLQkJcmV0dXJuIHRheG9ub215OwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBUYXhvbm9teVBhY2thZ2UgZ2V0VGF4b25vbXlQYWNrYWdlKCkgewotCQlyZXR1cm4gKFRheG9ub215UGFja2FnZSlnZXRFUGFja2FnZSgpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGRlcHJlY2F0ZWQKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHN0YXRpYyBUYXhvbm9teVBhY2thZ2UgZ2V0UGFja2FnZSgpIHsKLQkJcmV0dXJuIFRheG9ub215UGFja2FnZS5lSU5TVEFOQ0U7Ci0JfQotCi19IC8vVGF4b25vbXlGYWN0b3J5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvaW1wbC9UYXhvbm9teUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L2ltcGwvVGF4b25vbXlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1Nzg5NTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvaW1wbC9UYXhvbm9teUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ3NiArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFRheG9ub215SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NDggY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb25DaGFpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVTdHJ1Y3R1cmFsRmVhdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU9iamVjdEltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0Q29udGFpbm1lbnRFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5DYXRlZ29yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215Lk5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZTsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlRheG9ub215PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuVGF4b25vbXlJbXBsI2dldE5sbmFtZSA8ZW0+TmxuYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuVGF4b25vbXlJbXBsI2dldENhdGVnb3J5IDxlbT5DYXRlZ29yeTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsLlRheG9ub215SW1wbCNnZXRJZCA8ZW0+SWQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5UYXhvbm9teUltcGwjZ2V0TG9jYXRpb24gPGVtPkxvY2F0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LmltcGwuVGF4b25vbXlJbXBsI2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5UYXhvbm9teUltcGwjZ2V0UmVmIDxlbT5SZWY8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5UYXhvbm9teUltcGwjZ2V0VG1vZGVsS2V5IDxlbT5UbW9kZWwgS2V5PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVGF4b25vbXlJbXBsIGV4dGVuZHMgRU9iamVjdEltcGwgaW1wbGVtZW50cyBUYXhvbm9teSB7Ci0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmxuYW1lKCkgPGVtPk5sbmFtZTwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRObG5hbWUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBFTGlzdCBubG5hbWUgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0Q2F0ZWdvcnkoKSA8ZW0+Q2F0ZWdvcnk8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0Q2F0ZWdvcnkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBFTGlzdCBjYXRlZ29yeSA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0SWQoKSA8ZW0+SWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldElkKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBJRF9FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRJZCgpIDxlbT5JZDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0SWQoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgaWQgPSBJRF9FREVGQVVMVDsKLQotCS8qKgotCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMb2NhdGlvbigpIDxlbT5Mb2NhdGlvbjwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TG9jYXRpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIExPQ0FUSU9OX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExvY2F0aW9uKCkgPGVtPkxvY2F0aW9uPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRMb2NhdGlvbigpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyBsb2NhdGlvbiA9IExPQ0FUSU9OX0VERUZBVUxUOwotCi0JLyoqCi0JICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWUoKSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0TmFtZSgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldE5hbWUoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgbmFtZSA9IE5BTUVfRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0UmVmKCkgPGVtPlJlZjwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0UmVmKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBSRUZfRURFRkFVTFQgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0UmVmKCkgPGVtPlJlZjwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0UmVmKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgU3RyaW5nIHJlZiA9IFJFRl9FREVGQVVMVDsKLQotCS8qKgotCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRUbW9kZWxLZXkoKSA8ZW0+VG1vZGVsIEtleTwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0VG1vZGVsS2V5KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBUTU9ERUxfS0VZX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFRtb2RlbEtleSgpIDxlbT5UbW9kZWwgS2V5PC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRUbW9kZWxLZXkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgdG1vZGVsS2V5ID0gVE1PREVMX0tFWV9FREVGQVVMVDsKLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBUYXhvbm9teUltcGwoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7Ci0JCXJldHVybiBUYXhvbm9teVBhY2thZ2UuZUlOU1RBTkNFLmdldFRheG9ub215KCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVMaXN0IGdldE5sbmFtZSgpIHsKLQkJaWYgKG5sbmFtZSA9PSBudWxsKSB7Ci0JCQlubG5hbWUgPSBuZXcgRU9iamVjdENvbnRhaW5tZW50RUxpc3QoTmFtZS5jbGFzcywgdGhpcywgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19OTE5BTUUpOwotCQl9Ci0JCXJldHVybiBubG5hbWU7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVMaXN0IGdldENhdGVnb3J5KCkgewotCQlpZiAoY2F0ZWdvcnkgPT0gbnVsbCkgewotCQkJY2F0ZWdvcnkgPSBuZXcgRU9iamVjdENvbnRhaW5tZW50RUxpc3QoQ2F0ZWdvcnkuY2xhc3MsIHRoaXMsIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fQ0FURUdPUlkpOwotCQl9Ci0JCXJldHVybiBjYXRlZ29yeTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldElkKCkgewotCQlyZXR1cm4gaWQ7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIG5ld0lkKSB7Ci0JCVN0cmluZyBvbGRJZCA9IGlkOwotCQlpZCA9IG5ld0lkOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX0lELCBvbGRJZCwgaWQpKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldExvY2F0aW9uKCkgewotCQlyZXR1cm4gbG9jYXRpb247Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0TG9jYXRpb24oU3RyaW5nIG5ld0xvY2F0aW9uKSB7Ci0JCVN0cmluZyBvbGRMb2NhdGlvbiA9IGxvY2F0aW9uOwotCQlsb2NhdGlvbiA9IG5ld0xvY2F0aW9uOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX0xPQ0FUSU9OLCBvbGRMb2NhdGlvbiwgbG9jYXRpb24pKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0JCXJldHVybiBuYW1lOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5ld05hbWUpIHsKLQkJU3RyaW5nIG9sZE5hbWUgPSBuYW1lOwotCQluYW1lID0gbmV3TmFtZTsKLQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19OQU1FLCBvbGROYW1lLCBuYW1lKSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRSZWYoKSB7Ci0JCXJldHVybiByZWY7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0UmVmKFN0cmluZyBuZXdSZWYpIHsKLQkJU3RyaW5nIG9sZFJlZiA9IHJlZjsKLQkJcmVmID0gbmV3UmVmOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX1JFRiwgb2xkUmVmLCByZWYpKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFRtb2RlbEtleSgpIHsKLQkJcmV0dXJuIHRtb2RlbEtleTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRUbW9kZWxLZXkoU3RyaW5nIG5ld1Rtb2RlbEtleSkgewotCQlTdHJpbmcgb2xkVG1vZGVsS2V5ID0gdG1vZGVsS2V5OwotCQl0bW9kZWxLZXkgPSBuZXdUbW9kZWxLZXk7Ci0JCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fVE1PREVMX0tFWSwgb2xkVG1vZGVsS2V5LCB0bW9kZWxLZXkpKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gZUludmVyc2VSZW1vdmUoSW50ZXJuYWxFT2JqZWN0IG90aGVyRW5kLCBpbnQgZmVhdHVyZUlELCBDbGFzcyBiYXNlQ2xhc3MsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpIHsKLQkJaWYgKGZlYXR1cmVJRCA+PSAwKSB7Ci0JCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChmZWF0dXJlSUQsIGJhc2VDbGFzcykpIHsKLQkJCQljYXNlIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fTkxOQU1FOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldE5sbmFtZSgpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0JCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX0NBVEVHT1JZOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldENhdGVnb3J5KCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQlkZWZhdWx0OgotCQkJCQlyZXR1cm4gZUR5bmFtaWNJbnZlcnNlUmVtb3ZlKG90aGVyRW5kLCBmZWF0dXJlSUQsIGJhc2VDbGFzcywgbXNncyk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGVCYXNpY1NldENvbnRhaW5lcihudWxsLCBmZWF0dXJlSUQsIG1zZ3MpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgZUdldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIGJvb2xlYW4gcmVzb2x2ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19OTE5BTUU6Ci0JCQkJcmV0dXJuIGdldE5sbmFtZSgpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX0NBVEVHT1JZOgotCQkJCXJldHVybiBnZXRDYXRlZ29yeSgpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX0lEOgotCQkJCXJldHVybiBnZXRJZCgpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX0xPQ0FUSU9OOgotCQkJCXJldHVybiBnZXRMb2NhdGlvbigpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX05BTUU6Ci0JCQkJcmV0dXJuIGdldE5hbWUoKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19SRUY6Ci0JCQkJcmV0dXJuIGdldFJlZigpOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX1RNT0RFTF9LRVk6Ci0JCQkJcmV0dXJuIGdldFRtb2RlbEtleSgpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0dldChlRmVhdHVyZSwgcmVzb2x2ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIE9iamVjdCBuZXdWYWx1ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19OTE5BTUU6Ci0JCQkJZ2V0TmxuYW1lKCkuY2xlYXIoKTsKLQkJCQlnZXRObG5hbWUoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19DQVRFR09SWToKLQkJCQlnZXRDYXRlZ29yeSgpLmNsZWFyKCk7Ci0JCQkJZ2V0Q2F0ZWdvcnkoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19JRDoKLQkJCQlzZXRJZCgoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fTE9DQVRJT046Ci0JCQkJc2V0TG9jYXRpb24oKFN0cmluZyluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX05BTUU6Ci0JCQkJc2V0TmFtZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fUkVGOgotCQkJCXNldFJlZigoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fVE1PREVMX0tFWToKLQkJCQlzZXRUbW9kZWxLZXkoKFN0cmluZyluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljU2V0KGVGZWF0dXJlLCBuZXdWYWx1ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVVuc2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19OTE5BTUU6Ci0JCQkJZ2V0TmxuYW1lKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fQ0FURUdPUlk6Ci0JCQkJZ2V0Q2F0ZWdvcnkoKS5jbGVhcigpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19JRDoKLQkJCQlzZXRJZChJRF9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX0xPQ0FUSU9OOgotCQkJCXNldExvY2F0aW9uKExPQ0FUSU9OX0VERUZBVUxUKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fTkFNRToKLQkJCQlzZXROYW1lKE5BTUVfRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19SRUY6Ci0JCQkJc2V0UmVmKFJFRl9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX1RNT0RFTF9LRVk6Ci0JCQkJc2V0VG1vZGVsS2V5KFRNT0RFTF9LRVlfRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJfQotCQllRHluYW1pY1Vuc2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuVEFYT05PTVlfX05MTkFNRToKLQkJCQlyZXR1cm4gbmxuYW1lICE9IG51bGwgJiYgIW5sbmFtZS5pc0VtcHR5KCk7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fQ0FURUdPUlk6Ci0JCQkJcmV0dXJuIGNhdGVnb3J5ICE9IG51bGwgJiYgIWNhdGVnb3J5LmlzRW1wdHkoKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19JRDoKLQkJCQlyZXR1cm4gSURfRURFRkFVTFQgPT0gbnVsbCA/IGlkICE9IG51bGwgOiAhSURfRURFRkFVTFQuZXF1YWxzKGlkKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19MT0NBVElPTjoKLQkJCQlyZXR1cm4gTE9DQVRJT05fRURFRkFVTFQgPT0gbnVsbCA/IGxvY2F0aW9uICE9IG51bGwgOiAhTE9DQVRJT05fRURFRkFVTFQuZXF1YWxzKGxvY2F0aW9uKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19OQU1FOgotCQkJCXJldHVybiBOQU1FX0VERUZBVUxUID09IG51bGwgPyBuYW1lICE9IG51bGwgOiAhTkFNRV9FREVGQVVMVC5lcXVhbHMobmFtZSk7Ci0JCQljYXNlIFRheG9ub215UGFja2FnZS5UQVhPTk9NWV9fUkVGOgotCQkJCXJldHVybiBSRUZfRURFRkFVTFQgPT0gbnVsbCA/IHJlZiAhPSBudWxsIDogIVJFRl9FREVGQVVMVC5lcXVhbHMocmVmKTsKLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZX19UTU9ERUxfS0VZOgotCQkJCXJldHVybiBUTU9ERUxfS0VZX0VERUZBVUxUID09IG51bGwgPyB0bW9kZWxLZXkgIT0gbnVsbCA6ICFUTU9ERUxfS0VZX0VERUZBVUxULmVxdWFscyh0bW9kZWxLZXkpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0lzU2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotCQlpZiAoZUlzUHJveHkoKSkgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLQkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0JCXJlc3VsdC5hcHBlbmQoIiAoaWQ6ICIpOwotCQlyZXN1bHQuYXBwZW5kKGlkKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCBsb2NhdGlvbjogIik7Ci0JCXJlc3VsdC5hcHBlbmQobG9jYXRpb24pOwotCQlyZXN1bHQuYXBwZW5kKCIsIG5hbWU6ICIpOwotCQlyZXN1bHQuYXBwZW5kKG5hbWUpOwotCQlyZXN1bHQuYXBwZW5kKCIsIHJlZjogIik7Ci0JCXJlc3VsdC5hcHBlbmQocmVmKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCB0bW9kZWxLZXk6ICIpOwotCQlyZXN1bHQuYXBwZW5kKHRtb2RlbEtleSk7Ci0JCXJlc3VsdC5hcHBlbmQoJyknKTsKLQkJcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotCX0KLQotfSAvL1RheG9ub215SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvaW1wbC9UYXhvbm9teVBhY2thZ2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9pbXBsL1RheG9ub215UGFja2FnZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZmN2RhOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS9pbXBsL1RheG9ub215UGFja2FnZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY1OCArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFRheG9ub215UGFja2FnZUltcGwuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ4IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FUGFja2FnZUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuWE1MVHlwZVBhY2thZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuaW1wbC5YTUxUeXBlUGFja2FnZUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuaW1wbC5SZWdpc3RyeVBhY2thZ2VJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhQYWNrYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LmltcGwuUlRJbmRleFBhY2thZ2VJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5DYXRlZ29yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215Lk5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeVBhY2thZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLlVERElSZWdpc3RyeVBhY2thZ2VJbXBsOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4uCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFRheG9ub215UGFja2FnZUltcGwgZXh0ZW5kcyBFUGFja2FnZUltcGwgaW1wbGVtZW50cyBUYXhvbm9teVBhY2thZ2UgewotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgRUNsYXNzIGNhdGVnb3J5RUNsYXNzID0gbnVsbDsKLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgRUNsYXNzIGRvY3VtZW50Um9vdEVDbGFzcyA9IG51bGw7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcml2YXRlIEVDbGFzcyBuYW1lRUNsYXNzID0gbnVsbDsKLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgRUNsYXNzIHRheG9ub215RUNsYXNzID0gbnVsbDsKLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LCByZWdpc3RlcmVkIHdpdGgKLQkgKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5IEVQYWNrYWdlLlJlZ2lzdHJ5fSBieSB0aGUgcGFja2FnZQotCSAqIHBhY2thZ2UgVVJJIHZhbHVlLgotCSAqIDxwPk5vdGU6IHRoZSBjb3JyZWN0IHdheSB0byBjcmVhdGUgdGhlIHBhY2thZ2UgaXMgdmlhIHRoZSBzdGF0aWMKLQkgKiBmYWN0b3J5IG1ldGhvZCB7QGxpbmsgI2luaXQgaW5pdCgpfSwgd2hpY2ggYWxzbyBwZXJmb3JtcwotCSAqIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwYWNrYWdlLCBvciByZXR1cm5zIHRoZSByZWdpc3RlcmVkIHBhY2thZ2UsCi0JICogaWYgb25lIGFscmVhZHkgZXhpc3RzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2UuUmVnaXN0cnkKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXlQYWNrYWdlI2VOU19VUkkKLQkgKiBAc2VlICNpbml0KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBUYXhvbm9teVBhY2thZ2VJbXBsKCkgewotCQlzdXBlcihlTlNfVVJJLCBUYXhvbm9teUZhY3RvcnkuZUlOU1RBTkNFKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzSW5pdGVkID0gZmFsc2U7Ci0KLQkvKioKLQkgKiBDcmVhdGVzLCByZWdpc3RlcnMsIGFuZCBpbml0aWFsaXplcyB0aGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoaXMKLQkgKiBtb2RlbCwgYW5kIGZvciBhbnkgb3RoZXJzIHVwb24gd2hpY2ggaXQgZGVwZW5kcy4gIFNpbXBsZQotCSAqIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkIGJ5IGNhbGxpbmcgdGhpcyBtZXRob2Qgb24gYWxsCi0JICogZGVwZW5kZW50IHBhY2thZ2VzIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlLiAgVGhpcyBtZXRob2QgZHJpdmVzCi0JICogaW5pdGlhbGl6YXRpb24gZm9yIGludGVyZGVwZW5kZW50IHBhY2thZ2VzIGRpcmVjdGx5LCBpbiBwYXJhbGxlbAotCSAqIHdpdGggdGhpcyBwYWNrYWdlLCBpdHNlbGYuCi0JICogPHA+T2YgdGhpcyBwYWNrYWdlIGFuZCBpdHMgaW50ZXJkZXBlbmRlbmNpZXMsIGFsbCBwYWNrYWdlcyB3aGljaAotCSAqIGhhdmUgbm90IHlldCBiZWVuIHJlZ2lzdGVyZWQgYnkgdGhlaXIgVVJJIHZhbHVlcyBhcmUgZmlyc3QgY3JlYXRlZAotCSAqIGFuZCByZWdpc3RlcmVkLiAgVGhlIHBhY2thZ2VzIGFyZSB0aGVuIGluaXRpYWxpemVkIGluIHR3byBzdGVwczoKLQkgKiBtZXRhLW1vZGVsIG9iamVjdHMgZm9yIGFsbCBvZiB0aGUgcGFja2FnZXMgYXJlIGNyZWF0ZWQgYmVmb3JlIGFueQotCSAqIGFyZSBpbml0aWFsaXplZCwgc2luY2Ugb25lIHBhY2thZ2UncyBtZXRhLW1vZGVsIG9iamVjdHMgbWF5IHJlZmVyIHRvCi0JICogdGhvc2Ugb2YgYW5vdGhlci4KLQkgKiA8cD5JbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIHdpbGwgbm90IGFmZmVjdCBhbnkgcGFja2FnZXMgdGhhdCBoYXZlCi0JICogYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZU5TX1VSSQotCSAqIEBzZWUgI2NyZWF0ZVBhY2thZ2VDb250ZW50cygpCi0JICogQHNlZSAjaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBzdGF0aWMgVGF4b25vbXlQYWNrYWdlIGluaXQoKSB7Ci0JCWlmIChpc0luaXRlZCkgcmV0dXJuIChUYXhvbm9teVBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVGF4b25vbXlQYWNrYWdlLmVOU19VUkkpOwotCi0JCS8vIE9idGFpbiBvciBjcmVhdGUgYW5kIHJlZ2lzdGVyIHBhY2thZ2UKLQkJVGF4b25vbXlQYWNrYWdlSW1wbCB0aGVUYXhvbm9teVBhY2thZ2UgPSAoVGF4b25vbXlQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoZU5TX1VSSSkgaW5zdGFuY2VvZiBUYXhvbm9teVBhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoZU5TX1VSSSkgOiBuZXcgVGF4b25vbXlQYWNrYWdlSW1wbCgpKTsKLQotCQlpc0luaXRlZCA9IHRydWU7Ci0KLQkJLy8gSW5pdGlhbGl6ZSBzaW1wbGUgZGVwZW5kZW5jaWVzCi0JCVhNTFR5cGVQYWNrYWdlSW1wbC5pbml0KCk7Ci0KLQkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgaW50ZXJkZXBlbmRlbmNpZXMKLQkJUlRJbmRleFBhY2thZ2VJbXBsIHRoZVJUSW5kZXhQYWNrYWdlID0gKFJUSW5kZXhQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUlRJbmRleFBhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBSVEluZGV4UGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSVEluZGV4UGFja2FnZS5lTlNfVVJJKSA6IFJUSW5kZXhQYWNrYWdlSW1wbC5lSU5TVEFOQ0UpOwotCQlSZWdpc3RyeVBhY2thZ2VJbXBsIHRoZVJlZ2lzdHJ5UGFja2FnZSA9IChSZWdpc3RyeVBhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZWdpc3RyeVBhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBSZWdpc3RyeVBhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUmVnaXN0cnlQYWNrYWdlLmVOU19VUkkpIDogUmVnaXN0cnlQYWNrYWdlSW1wbC5lSU5TVEFOQ0UpOwotCQlVRERJUmVnaXN0cnlQYWNrYWdlSW1wbCB0aGVVRERJUmVnaXN0cnlQYWNrYWdlID0gKFVERElSZWdpc3RyeVBhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShVRERJUmVnaXN0cnlQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgVURESVJlZ2lzdHJ5UGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShVRERJUmVnaXN0cnlQYWNrYWdlLmVOU19VUkkpIDogVURESVJlZ2lzdHJ5UGFja2FnZUltcGwuZUlOU1RBTkNFKTsKLQotCQkvLyBDcmVhdGUgcGFja2FnZSBtZXRhLWRhdGEgb2JqZWN0cwotCQl0aGVUYXhvbm9teVBhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7Ci0JCXRoZVJUSW5kZXhQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVSZWdpc3RyeVBhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7Ci0JCXRoZVVERElSZWdpc3RyeVBhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7Ci0KLQkJLy8gSW5pdGlhbGl6ZSBjcmVhdGVkIG1ldGEtZGF0YQotCQl0aGVUYXhvbm9teVBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVSVEluZGV4UGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7Ci0JCXRoZVJlZ2lzdHJ5UGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7Ci0JCXRoZVVERElSZWdpc3RyeVBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCi0JCS8vIE1hcmsgbWV0YS1kYXRhIHRvIGluZGljYXRlIGl0IGNhbid0IGJlIGNoYW5nZWQKLQkJdGhlVGF4b25vbXlQYWNrYWdlLmZyZWV6ZSgpOwotCi0JCXJldHVybiB0aGVUYXhvbm9teVBhY2thZ2U7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVDbGFzcyBnZXRDYXRlZ29yeSgpIHsKLQkJcmV0dXJuIGNhdGVnb3J5RUNsYXNzOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldENhdGVnb3J5X05sbmFtZSgpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKWNhdGVnb3J5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0Q2F0ZWdvcnlfQ2F0ZWdvcnkoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSljYXRlZ29yeUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQXR0cmlidXRlIGdldENhdGVnb3J5X0NvZGUoKSB7Ci0JCXJldHVybiAoRUF0dHJpYnV0ZSljYXRlZ29yeUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDIpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQXR0cmlidXRlIGdldENhdGVnb3J5X05hbWUoKSB7Ci0JCXJldHVybiAoRUF0dHJpYnV0ZSljYXRlZ29yeUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDMpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQ2xhc3MgZ2V0RG9jdW1lbnRSb290KCkgewotCQlyZXR1cm4gZG9jdW1lbnRSb290RUNsYXNzOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQXR0cmlidXRlIGdldERvY3VtZW50Um9vdF9NaXhlZCgpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKWRvY3VtZW50Um9vdEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9YTUxOU1ByZWZpeE1hcCgpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKWRvY3VtZW50Um9vdEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9YU0lTY2hlbWFMb2NhdGlvbigpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKWRvY3VtZW50Um9vdEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDIpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9DYXRlZ29yeSgpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKWRvY3VtZW50Um9vdEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDMpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9OYW1lKCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X1RheG9ub215KCkgewotCQlyZXR1cm4gKEVSZWZlcmVuY2UpZG9jdW1lbnRSb290RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVDbGFzcyBnZXROYW1lXygpIHsKLQkJcmV0dXJuIG5hbWVFQ2xhc3M7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0TmFtZV9WYWx1ZSgpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKW5hbWVFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXROYW1lX0xhbmcoKSB7Ci0JCXJldHVybiAoRUF0dHJpYnV0ZSluYW1lRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVDbGFzcyBnZXRUYXhvbm9teSgpIHsKLQkJcmV0dXJuIHRheG9ub215RUNsYXNzOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldFRheG9ub215X05sbmFtZSgpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKXRheG9ub215RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0VGF4b25vbXlfQ2F0ZWdvcnkoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSl0YXhvbm9teUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQXR0cmlidXRlIGdldFRheG9ub215X0lkKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpdGF4b25vbXlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRUYXhvbm9teV9Mb2NhdGlvbigpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKXRheG9ub215RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0VGF4b25vbXlfTmFtZSgpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKXRheG9ub215RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0VGF4b25vbXlfUmVmKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpdGF4b25vbXlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg1KTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRUYXhvbm9teV9UbW9kZWxLZXkoKSB7Ci0JCXJldHVybiAoRUF0dHJpYnV0ZSl0YXhvbm9teUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDYpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBUYXhvbm9teUZhY3RvcnkgZ2V0VGF4b25vbXlGYWN0b3J5KCkgewotCQlyZXR1cm4gKFRheG9ub215RmFjdG9yeSlnZXRFRmFjdG9yeUluc3RhbmNlKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBib29sZWFuIGlzQ3JlYXRlZCA9IGZhbHNlOwotCi0JLyoqCi0JICogQ3JlYXRlcyB0aGUgbWV0YS1tb2RlbCBvYmplY3RzIGZvciB0aGUgcGFja2FnZS4gIFRoaXMgbWV0aG9kIGlzCi0JICogZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGNyZWF0ZVBhY2thZ2VDb250ZW50cygpIHsKLQkJaWYgKGlzQ3JlYXRlZCkgcmV0dXJuOwotCQlpc0NyZWF0ZWQgPSB0cnVlOwotCi0JCS8vIENyZWF0ZSBjbGFzc2VzIGFuZCB0aGVpciBmZWF0dXJlcwotCQljYXRlZ29yeUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhDQVRFR09SWSk7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoY2F0ZWdvcnlFQ2xhc3MsIENBVEVHT1JZX19OTE5BTUUpOwotCQljcmVhdGVFUmVmZXJlbmNlKGNhdGVnb3J5RUNsYXNzLCBDQVRFR09SWV9fQ0FURUdPUlkpOwotCQljcmVhdGVFQXR0cmlidXRlKGNhdGVnb3J5RUNsYXNzLCBDQVRFR09SWV9fQ09ERSk7Ci0JCWNyZWF0ZUVBdHRyaWJ1dGUoY2F0ZWdvcnlFQ2xhc3MsIENBVEVHT1JZX19OQU1FKTsKLQotCQlkb2N1bWVudFJvb3RFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoRE9DVU1FTlRfUk9PVCk7Ci0JCWNyZWF0ZUVBdHRyaWJ1dGUoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19NSVhFRCk7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShkb2N1bWVudFJvb3RFQ2xhc3MsIERPQ1VNRU5UX1JPT1RfX1hTSV9TQ0hFTUFfTE9DQVRJT04pOwotCQljcmVhdGVFUmVmZXJlbmNlKGRvY3VtZW50Um9vdEVDbGFzcywgRE9DVU1FTlRfUk9PVF9fQ0FURUdPUlkpOwotCQljcmVhdGVFUmVmZXJlbmNlKGRvY3VtZW50Um9vdEVDbGFzcywgRE9DVU1FTlRfUk9PVF9fTkFNRSk7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19UQVhPTk9NWSk7Ci0KLQkJbmFtZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhOQU1FKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZShuYW1lRUNsYXNzLCBOQU1FX19WQUxVRSk7Ci0JCWNyZWF0ZUVBdHRyaWJ1dGUobmFtZUVDbGFzcywgTkFNRV9fTEFORyk7Ci0KLQkJdGF4b25vbXlFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoVEFYT05PTVkpOwotCQljcmVhdGVFUmVmZXJlbmNlKHRheG9ub215RUNsYXNzLCBUQVhPTk9NWV9fTkxOQU1FKTsKLQkJY3JlYXRlRVJlZmVyZW5jZSh0YXhvbm9teUVDbGFzcywgVEFYT05PTVlfX0NBVEVHT1JZKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZSh0YXhvbm9teUVDbGFzcywgVEFYT05PTVlfX0lEKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZSh0YXhvbm9teUVDbGFzcywgVEFYT05PTVlfX0xPQ0FUSU9OKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZSh0YXhvbm9teUVDbGFzcywgVEFYT05PTVlfX05BTUUpOwotCQljcmVhdGVFQXR0cmlidXRlKHRheG9ub215RUNsYXNzLCBUQVhPTk9NWV9fUkVGKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZSh0YXhvbm9teUVDbGFzcywgVEFYT05PTVlfX1RNT0RFTF9LRVkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgYm9vbGVhbiBpc0luaXRpYWxpemVkID0gZmFsc2U7Ci0KLQkvKioKLQkgKiBDb21wbGV0ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UgYW5kIGl0cyBtZXRhLW1vZGVsLiAgVGhpcwotCSAqIG1ldGhvZCBpcyBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpIHsKLQkJaWYgKGlzSW5pdGlhbGl6ZWQpIHJldHVybjsKLQkJaXNJbml0aWFsaXplZCA9IHRydWU7Ci0KLQkJLy8gSW5pdGlhbGl6ZSBwYWNrYWdlCi0JCXNldE5hbWUoZU5BTUUpOwotCQlzZXROc1ByZWZpeChlTlNfUFJFRklYKTsKLQkJc2V0TnNVUkkoZU5TX1VSSSk7Ci0KLQkJLy8gT2J0YWluIG90aGVyIGRlcGVuZGVudCBwYWNrYWdlcwotCQlYTUxUeXBlUGFja2FnZUltcGwgdGhlWE1MVHlwZVBhY2thZ2UgPSAoWE1MVHlwZVBhY2thZ2VJbXBsKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFhNTFR5cGVQYWNrYWdlLmVOU19VUkkpOwotCi0JCS8vIEFkZCBzdXBlcnR5cGVzIHRvIGNsYXNzZXMKLQotCQkvLyBJbml0aWFsaXplIGNsYXNzZXMgYW5kIGZlYXR1cmVzOyBhZGQgb3BlcmF0aW9ucyBhbmQgcGFyYW1ldGVycwotCQlpbml0RUNsYXNzKGNhdGVnb3J5RUNsYXNzLCBDYXRlZ29yeS5jbGFzcywgIkNhdGVnb3J5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOwotCQlpbml0RVJlZmVyZW5jZShnZXRDYXRlZ29yeV9ObG5hbWUoKSwgdGhpcy5nZXROYW1lXygpLCBudWxsLCAibmxuYW1lIiwgbnVsbCwgMCwgLTEsIENhdGVnb3J5LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RVJlZmVyZW5jZShnZXRDYXRlZ29yeV9DYXRlZ29yeSgpLCB0aGlzLmdldENhdGVnb3J5KCksIG51bGwsICJjYXRlZ29yeSIsIG51bGwsIDAsIC0xLCBDYXRlZ29yeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0Q2F0ZWdvcnlfQ29kZSgpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRTdHJpbmcoKSwgImNvZGUiLCBudWxsLCAwLCAxLCBDYXRlZ29yeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFQXR0cmlidXRlKGdldENhdGVnb3J5X05hbWUoKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0U3RyaW5nKCksICJuYW1lIiwgbnVsbCwgMCwgMSwgQ2F0ZWdvcnkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCi0JCWluaXRFQ2xhc3MoZG9jdW1lbnRSb290RUNsYXNzLCBEb2N1bWVudFJvb3QuY2xhc3MsICJEb2N1bWVudFJvb3QiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7Ci0JCWluaXRFQXR0cmlidXRlKGdldERvY3VtZW50Um9vdF9NaXhlZCgpLCBlY29yZVBhY2thZ2UuZ2V0RUZlYXR1cmVNYXBFbnRyeSgpLCAibWl4ZWQiLCBudWxsLCAwLCAtMSwgbnVsbCwgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldERvY3VtZW50Um9vdF9YTUxOU1ByZWZpeE1hcCgpLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkoKSwgbnVsbCwgInhNTE5TUHJlZml4TWFwIiwgbnVsbCwgMCwgLTEsIG51bGwsIElTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldERvY3VtZW50Um9vdF9YU0lTY2hlbWFMb2NhdGlvbigpLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkoKSwgbnVsbCwgInhTSVNjaGVtYUxvY2F0aW9uIiwgbnVsbCwgMCwgLTEsIG51bGwsIElTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldERvY3VtZW50Um9vdF9DYXRlZ29yeSgpLCB0aGlzLmdldENhdGVnb3J5KCksIG51bGwsICJjYXRlZ29yeSIsIG51bGwsIDAsIC0yLCBudWxsLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RVJlZmVyZW5jZShnZXREb2N1bWVudFJvb3RfTmFtZSgpLCB0aGlzLmdldE5hbWVfKCksIG51bGwsICJuYW1lIiwgbnVsbCwgMCwgLTIsIG51bGwsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldERvY3VtZW50Um9vdF9UYXhvbm9teSgpLCB0aGlzLmdldFRheG9ub215KCksIG51bGwsICJ0YXhvbm9teSIsIG51bGwsIDAsIC0yLCBudWxsLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsIElTX09SREVSRUQpOwotCi0JCWluaXRFQ2xhc3MobmFtZUVDbGFzcywgTmFtZS5jbGFzcywgIk5hbWUiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7Ci0JCWluaXRFQXR0cmlidXRlKGdldE5hbWVfVmFsdWUoKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0U3RyaW5nKCksICJ2YWx1ZSIsIG51bGwsIDAsIDEsIE5hbWUuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RUF0dHJpYnV0ZShnZXROYW1lX0xhbmcoKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0TGFuZ3VhZ2UoKSwgImxhbmciLCBudWxsLCAwLCAxLCBOYW1lLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQotCQlpbml0RUNsYXNzKHRheG9ub215RUNsYXNzLCBUYXhvbm9teS5jbGFzcywgIlRheG9ub215IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOwotCQlpbml0RVJlZmVyZW5jZShnZXRUYXhvbm9teV9ObG5hbWUoKSwgdGhpcy5nZXROYW1lXygpLCBudWxsLCAibmxuYW1lIiwgbnVsbCwgMCwgLTEsIFRheG9ub215LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RVJlZmVyZW5jZShnZXRUYXhvbm9teV9DYXRlZ29yeSgpLCB0aGlzLmdldENhdGVnb3J5KCksIG51bGwsICJjYXRlZ29yeSIsIG51bGwsIDAsIC0xLCBUYXhvbm9teS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0VGF4b25vbXlfSWQoKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0QW55VVJJKCksICJpZCIsIG51bGwsIDAsIDEsIFRheG9ub215LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0VGF4b25vbXlfTG9jYXRpb24oKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0QW55VVJJKCksICJsb2NhdGlvbiIsIG51bGwsIDAsIDEsIFRheG9ub215LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0VGF4b25vbXlfTmFtZSgpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRTdHJpbmcoKSwgIm5hbWUiLCBudWxsLCAwLCAxLCBUYXhvbm9teS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFQXR0cmlidXRlKGdldFRheG9ub215X1JlZigpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRBbnlVUkkoKSwgInJlZiIsIG51bGwsIDAsIDEsIFRheG9ub215LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0VGF4b25vbXlfVG1vZGVsS2V5KCksIHRoZVhNTFR5cGVQYWNrYWdlLmdldFN0cmluZygpLCAidG1vZGVsS2V5IiwgbnVsbCwgMSwgMSwgVGF4b25vbXkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCi0JCS8vIENyZWF0ZSByZXNvdXJjZQotCQljcmVhdGVSZXNvdXJjZShlTlNfVVJJKTsKLQotCQkvLyBDcmVhdGUgYW5ub3RhdGlvbnMKLQkJLy8gaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhCi0JCWNyZWF0ZUV4dGVuZGVkTWV0YURhdGFBbm5vdGF0aW9ucygpOwotCX0KLQotCS8qKgotCSAqIEluaXRpYWxpemVzIHRoZSBhbm5vdGF0aW9ucyBmb3IgPGI+aHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhPC9iPi4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgdm9pZCBjcmVhdGVFeHRlbmRlZE1ldGFEYXRhQW5ub3RhdGlvbnMoKSB7Ci0JCVN0cmluZyBzb3VyY2UgPSAiaHR0cDovLy9vcmcvZWNsaXBzZS9lbWYvZWNvcmUvdXRpbC9FeHRlbmRlZE1ldGFEYXRhIjsJCQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChjYXRlZ29yeUVDbGFzcywgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgIm5hbWUiLCAiQ2F0ZWdvcnkiLAotCQkJICJraW5kIiwgImVsZW1lbnRPbmx5IgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldENhdGVnb3J5X05sbmFtZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJubG5hbWUiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0Q2F0ZWdvcnlfQ2F0ZWdvcnkoKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiZWxlbWVudCIsCi0JCQkgIm5hbWUiLCAiY2F0ZWdvcnkiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0Q2F0ZWdvcnlfQ29kZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgImNvZGUiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0Q2F0ZWdvcnlfTmFtZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgIm5hbWUiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZG9jdW1lbnRSb290RUNsYXNzLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAibmFtZSIsICIiLAotCQkJICJraW5kIiwgIm1peGVkIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERvY3VtZW50Um9vdF9NaXhlZCgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50V2lsZGNhcmQiLAotCQkJICJuYW1lIiwgIjptaXhlZCIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXREb2N1bWVudFJvb3RfWE1MTlNQcmVmaXhNYXAoKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiYXR0cmlidXRlIiwKLQkJCSAibmFtZSIsICJ4bWxuczpwcmVmaXgiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0RG9jdW1lbnRSb290X1hTSVNjaGVtYUxvY2F0aW9uKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImF0dHJpYnV0ZSIsCi0JCQkgIm5hbWUiLCAieHNpOnNjaGVtYUxvY2F0aW9uIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERvY3VtZW50Um9vdF9DYXRlZ29yeSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJjYXRlZ29yeSIsCi0JCQkgIm5hbWVzcGFjZSIsICIjI3RhcmdldE5hbWVzcGFjZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXREb2N1bWVudFJvb3RfTmFtZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJuYW1lIiwKLQkJCSAibmFtZXNwYWNlIiwgIiMjdGFyZ2V0TmFtZXNwYWNlIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERvY3VtZW50Um9vdF9UYXhvbm9teSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJ0YXhvbm9teSIsCi0JCQkgIm5hbWVzcGFjZSIsICIjI3RhcmdldE5hbWVzcGFjZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChuYW1lRUNsYXNzLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAibmFtZSIsICJOYW1lIiwKLQkJCSAia2luZCIsICJzaW1wbGUiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0TmFtZV9WYWx1ZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAibmFtZSIsICI6MCIsCi0JCQkgImtpbmQiLCAic2ltcGxlIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldE5hbWVfTGFuZygpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgImxhbmciLAotCQkJICJuYW1lc3BhY2UiLCAiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKHRheG9ub215RUNsYXNzLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAibmFtZSIsICJUYXhvbm9teSIsCi0JCQkgImtpbmQiLCAiZWxlbWVudE9ubHkiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0VGF4b25vbXlfTmxuYW1lKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgIm5sbmFtZSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRUYXhvbm9teV9DYXRlZ29yeSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJjYXRlZ29yeSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRUYXhvbm9teV9JZCgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgImlkIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldFRheG9ub215X0xvY2F0aW9uKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImF0dHJpYnV0ZSIsCi0JCQkgIm5hbWUiLCAibG9jYXRpb24iCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0VGF4b25vbXlfTmFtZSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgIm5hbWUiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0VGF4b25vbXlfUmVmKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImF0dHJpYnV0ZSIsCi0JCQkgIm5hbWUiLCAicmVmIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldFRheG9ub215X1Rtb2RlbEtleSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJhdHRyaWJ1dGUiLAotCQkJICJuYW1lIiwgInRtb2RlbEtleSIKLQkJICAgfSk7Ci0JfQotCi19IC8vVGF4b25vbXlQYWNrYWdlSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvdXRpbC9UYXhvbm9teUFkYXB0ZXJGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS91dGlsL1RheG9ub215QWRhcHRlckZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMyYjcwZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS91dGlsL1RheG9ub215QWRhcHRlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFRheG9ub215QWRhcHRlckZhY3RvcnkuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjUwIGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS51dGlsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmllcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LmltcGwuQWRhcHRlckZhY3RvcnlJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215Lio7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5BZGFwdGVyIEZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuCi0gKiBJdCBwcm92aWRlcyBhbiBhZGFwdGVyIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVGF4b25vbXlBZGFwdGVyRmFjdG9yeSBleHRlbmRzIEFkYXB0ZXJGYWN0b3J5SW1wbCB7Ci0JLyoqCi0JICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgVGF4b25vbXlQYWNrYWdlIG1vZGVsUGFja2FnZTsKLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGFkYXB0ZXIgZmFjdG9yeS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgVGF4b25vbXlBZGFwdGVyRmFjdG9yeSgpIHsKLQkJaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKSB7Ci0JCQltb2RlbFBhY2thZ2UgPSBUYXhvbm9teVBhY2thZ2UuZUlOU1RBTkNFOwotCQl9Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBvYmplY3QgaXMgZWl0aGVyIHRoZSBtb2RlbCdzIHBhY2thZ2Ugb3IgaXMgYW4gaW5zdGFuY2Ugb2JqZWN0IG9mIHRoZSBtb2RlbC4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzRmFjdG9yeUZvclR5cGUoT2JqZWN0IG9iamVjdCkgewotCQlpZiAob2JqZWN0ID09IG1vZGVsUGFja2FnZSkgewotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVPYmplY3QpIHsKLQkJCXJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsKLQkJfQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyoqCi0JICogVGhlIHN3aXRjaCB0aGUgZGVsZWdhdGVzIHRvIHRoZSA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZHMuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIFRheG9ub215U3dpdGNoIG1vZGVsU3dpdGNoID0KLQkJbmV3IFRheG9ub215U3dpdGNoKCkgewotCQkJcHVibGljIE9iamVjdCBjYXNlQ2F0ZWdvcnkoQ2F0ZWdvcnkgb2JqZWN0KSB7Ci0JCQkJcmV0dXJuIGNyZWF0ZUNhdGVnb3J5QWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBjYXNlRG9jdW1lbnRSb290KERvY3VtZW50Um9vdCBvYmplY3QpIHsKLQkJCQlyZXR1cm4gY3JlYXRlRG9jdW1lbnRSb290QWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBjYXNlTmFtZShOYW1lIG9iamVjdCkgewotCQkJCXJldHVybiBjcmVhdGVOYW1lQWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBjYXNlVGF4b25vbXkoVGF4b25vbXkgb2JqZWN0KSB7Ci0JCQkJcmV0dXJuIGNyZWF0ZVRheG9ub215QWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgewotCQkJCXJldHVybiBjcmVhdGVFT2JqZWN0QWRhcHRlcigpOwotCQkJfQotCQl9OwotCi0JLyoqCi0JICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4KLQkgKiBAcmV0dXJuIHRoZSBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlQWRhcHRlcihOb3RpZmllciB0YXJnZXQpIHsKLQkJcmV0dXJuIChBZGFwdGVyKW1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7Ci0JfQotCi0KLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnkgPGVtPkNhdGVnb3J5PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLQkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuQ2F0ZWdvcnkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlQ2F0ZWdvcnlBZGFwdGVyKCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuRG9jdW1lbnRSb290IDxlbT5Eb2N1bWVudCBSb290PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLQkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuRG9jdW1lbnRSb290Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZURvY3VtZW50Um9vdEFkYXB0ZXIoKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5OYW1lIDxlbT5OYW1lPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLQkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuTmFtZQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgQWRhcHRlciBjcmVhdGVOYW1lQWRhcHRlcigpIHsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215IDxlbT5UYXhvbm9teTwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0JICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVRheG9ub215QWRhcHRlcigpIHsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciB0aGUgZGVmYXVsdCBjYXNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbC4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlRU9iamVjdEFkYXB0ZXIoKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotfSAvL1RheG9ub215QWRhcHRlckZhY3RvcnkKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L3V0aWwvVGF4b25vbXlSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS91dGlsL1RheG9ub215UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWQ1Y2M2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L3V0aWwvVGF4b25vbXlSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFRheG9ub215UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NTAgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRXh0ZW5kZWRNZXRhRGF0YTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWkuWE1MUmVzb3VyY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1pLmltcGwuWE1MUmVzb3VyY2VGYWN0b3J5SW1wbDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlJlc291cmNlIEZhY3Rvcnk8L2I+IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFja2FnZS4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LnV0aWwuVGF4b25vbXlSZXNvdXJjZUltcGwKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFRheG9ub215UmVzb3VyY2VGYWN0b3J5SW1wbCBleHRlbmRzIFhNTFJlc291cmNlRmFjdG9yeUltcGwgewotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBFeHRlbmRlZE1ldGFEYXRhIGV4dGVuZGVkTWV0YURhdGE7Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZSBmYWN0b3J5LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBUYXhvbm9teVJlc291cmNlRmFjdG9yeUltcGwoKSB7Ci0JCXN1cGVyKCk7Ci0JCWV4dGVuZGVkTWV0YURhdGEgPSBFeHRlbmRlZE1ldGFEYXRhLklOU1RBTkNFOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHJlc291cmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBSZXNvdXJjZSBjcmVhdGVSZXNvdXJjZShVUkkgdXJpKSB7Ci0JCVhNTFJlc291cmNlIHJlc3VsdCA9IG5ldyBUYXhvbm9teVJlc291cmNlSW1wbCh1cmkpOwotCQlyZXN1bHQuZ2V0RGVmYXVsdFNhdmVPcHRpb25zKCkucHV0KFhNTFJlc291cmNlLk9QVElPTl9FWFRFTkRFRF9NRVRBX0RBVEEsIGV4dGVuZGVkTWV0YURhdGEpOwotCQlyZXN1bHQuZ2V0RGVmYXVsdExvYWRPcHRpb25zKCkucHV0KFhNTFJlc291cmNlLk9QVElPTl9FWFRFTkRFRF9NRVRBX0RBVEEsIGV4dGVuZGVkTWV0YURhdGEpOwotCi0JCXJlc3VsdC5nZXREZWZhdWx0U2F2ZU9wdGlvbnMoKS5wdXQoWE1MUmVzb3VyY2UuT1BUSU9OX1NDSEVNQV9MT0NBVElPTiwgQm9vbGVhbi5UUlVFKTsKLQkJcmVzdWx0LmdldERlZmF1bHRTYXZlT3B0aW9ucygpLnB1dChYTUxSZXNvdXJjZS5PUFRJT05fVVNFX0VOQ09ERURfQVRUUklCVVRFX1NUWUxFLCBCb29sZWFuLlRSVUUpOwotCi0JCXJlc3VsdC5nZXREZWZhdWx0TG9hZE9wdGlvbnMoKS5wdXQoWE1MUmVzb3VyY2UuT1BUSU9OX1VTRV9MRVhJQ0FMX0hBTkRMRVIsIEJvb2xlYW4uVFJVRSk7Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotCi19IC8vVGF4b25vbXlSZXNvdXJjZUZhY3RvcnlJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS91dGlsL1RheG9ub215UmVzb3VyY2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teS91dGlsL1RheG9ub215UmVzb3VyY2VJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYmVkOWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvdXRpbC9UYXhvbm9teVJlc291cmNlSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBUYXhvbm9teVJlc291cmNlSW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NTAgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaS5pbXBsLlhNTFJlc291cmNlSW1wbDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlJlc291cmNlIDwvYj4gYXNzb2NpYXRlZCB3aXRoIHRoZSBwYWNrYWdlLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkudXRpbC5UYXhvbm9teVJlc291cmNlRmFjdG9yeUltcGwKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFRheG9ub215UmVzb3VyY2VJbXBsIGV4dGVuZHMgWE1MUmVzb3VyY2VJbXBsIHsKLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB1cmkgdGhlIFVSSSBvZiB0aGUgbmV3IHJlc291cmNlLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgVGF4b25vbXlSZXNvdXJjZUltcGwoVVJJIHVyaSkgewotCQlzdXBlcih1cmkpOwotCX0KLQotfSAvL1RheG9ub215UmVzb3VyY2VGYWN0b3J5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvdXRpbC9UYXhvbm9teVN3aXRjaC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdGF4b25vbXkvdXRpbC9UYXhvbm9teVN3aXRjaC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmRkYzc5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3RheG9ub215L3V0aWwvVGF4b25vbXlTd2l0Y2guamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFRheG9ub215U3dpdGNoLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo1MCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkudXRpbDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuKjsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlN3aXRjaDwvYj4gZm9yIHRoZSBtb2RlbCdzIGluaGVyaXRhbmNlIGhpZXJhcmNoeS4KLSAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2goRU9iamVjdCkgZG9Td2l0Y2gob2JqZWN0KX0KLSAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwKLSAqIHN0YXJ0aW5nIHdpdGggdGhlIGFjdHVhbCBjbGFzcyBvZiB0aGUgb2JqZWN0Ci0gKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5Ci0gKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwKLSAqIHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgdGhlIHN3aXRjaC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVGF4b25vbXlTd2l0Y2ggewotCS8qKgotCSAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZQotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgVGF4b25vbXlQYWNrYWdlIG1vZGVsUGFja2FnZTsKLQotCS8qKgotCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN3aXRjaC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgVGF4b25vbXlTd2l0Y2goKSB7Ci0JCWlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkgewotCQkJbW9kZWxQYWNrYWdlID0gVGF4b25vbXlQYWNrYWdlLmVJTlNUQU5DRTsKLQkJfQotCX0KLQotCS8qKgotCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBkb1N3aXRjaChFT2JqZWN0IHRoZUVPYmplY3QpIHsKLQkJcmV0dXJuIGRvU3dpdGNoKHRoZUVPYmplY3QuZUNsYXNzKCksIHRoZUVPYmplY3QpOwotCX0KLQotCS8qKgotCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIE9iamVjdCBkb1N3aXRjaChFQ2xhc3MgdGhlRUNsYXNzLCBFT2JqZWN0IHRoZUVPYmplY3QpIHsKLQkJaWYgKHRoZUVDbGFzcy5lQ29udGFpbmVyKCkgPT0gbW9kZWxQYWNrYWdlKSB7Ci0JCQlyZXR1cm4gZG9Td2l0Y2godGhlRUNsYXNzLmdldENsYXNzaWZpZXJJRCgpLCB0aGVFT2JqZWN0KTsKLQkJfQotCQllbHNlIHsKLQkJCUxpc3QgZVN1cGVyVHlwZXMgPSB0aGVFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKTsKLQkJCXJldHVybgotCQkJCWVTdXBlclR5cGVzLmlzRW1wdHkoKSA/Ci0JCQkJCWRlZmF1bHRDYXNlKHRoZUVPYmplY3QpIDoKLQkJCQkJZG9Td2l0Y2goKEVDbGFzcyllU3VwZXJUeXBlcy5nZXQoMCksIHRoZUVPYmplY3QpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgT2JqZWN0IGRvU3dpdGNoKGludCBjbGFzc2lmaWVySUQsIEVPYmplY3QgdGhlRU9iamVjdCkgewotCQlzd2l0Y2ggKGNsYXNzaWZpZXJJRCkgewotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuQ0FURUdPUlk6IHsKLQkJCQlDYXRlZ29yeSBjYXRlZ29yeSA9IChDYXRlZ29yeSl0aGVFT2JqZWN0OwotCQkJCU9iamVjdCByZXN1bHQgPSBjYXNlQ2F0ZWdvcnkoY2F0ZWdvcnkpOwotCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0JCQkJcmV0dXJuIHJlc3VsdDsKLQkJCX0KLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLkRPQ1VNRU5UX1JPT1Q6IHsKLQkJCQlEb2N1bWVudFJvb3QgZG9jdW1lbnRSb290ID0gKERvY3VtZW50Um9vdCl0aGVFT2JqZWN0OwotCQkJCU9iamVjdCByZXN1bHQgPSBjYXNlRG9jdW1lbnRSb290KGRvY3VtZW50Um9vdCk7Ci0JCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLQkJCQlyZXR1cm4gcmVzdWx0OwotCQkJfQotCQkJY2FzZSBUYXhvbm9teVBhY2thZ2UuTkFNRTogewotCQkJCU5hbWUgbmFtZSA9IChOYW1lKXRoZUVPYmplY3Q7Ci0JCQkJT2JqZWN0IHJlc3VsdCA9IGNhc2VOYW1lKG5hbWUpOwotCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0JCQkJcmV0dXJuIHJlc3VsdDsKLQkJCX0KLQkJCWNhc2UgVGF4b25vbXlQYWNrYWdlLlRBWE9OT01ZOiB7Ci0JCQkJVGF4b25vbXkgdGF4b25vbXkgPSAoVGF4b25vbXkpdGhlRU9iamVjdDsKLQkJCQlPYmplY3QgcmVzdWx0ID0gY2FzZVRheG9ub215KHRheG9ub215KTsKLQkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotCQkJCXJldHVybiByZXN1bHQ7Ci0JCQl9Ci0JCQlkZWZhdWx0OiByZXR1cm4gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q2F0ZWdvcnk8L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLQkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLQkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q2F0ZWdvcnk8L2VtPicuCi0JICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgY2FzZUNhdGVnb3J5KENhdGVnb3J5IG9iamVjdCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGNhc2VEb2N1bWVudFJvb3QoRG9jdW1lbnRSb290IG9iamVjdCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0dGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+TmFtZTwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5OYW1lPC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGNhc2VOYW1lKE5hbWUgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5UYXhvbm9teTwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5UYXhvbm9teTwvZW0+Jy4KLQkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBjYXNlVGF4b25vbXkoVGF4b25vbXkgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0JICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2gsIGJ1dCB0aGlzIGlzIHRoZSBsYXN0IGNhc2UgYW55d2F5LgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGRlZmF1bHRDYXNlKEVPYmplY3Qgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotfSAvL1RheG9ub215U3dpdGNoCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvRG9jdW1lbnRSb290LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvRG9jdW1lbnRSb290LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5OGRjYjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L0RvY3VtZW50Um9vdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogRG9jdW1lbnRSb290LmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OSBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVNYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkZlYXR1cmVNYXA7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRvY3VtZW50IFJvb3Q8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuRG9jdW1lbnRSb290I2dldE1peGVkIDxlbT5NaXhlZDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuRG9jdW1lbnRSb290I2dldFhNTE5TUHJlZml4TWFwIDxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0WFNJU2NoZW1hTG9jYXRpb24gPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRUYXhvbm9taWVzIDxlbT5UYXhvbm9taWVzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0VWRkaVJlZ2lzdHJ5IDxlbT5VZGRpIFJlZ2lzdHJ5PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlI2dldERvY3VtZW50Um9vdCgpCi0gKiBAbW9kZWwgCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRG9jdW1lbnRSb290IGV4dGVuZHMgRU9iamVjdCB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TWl4ZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5GZWF0dXJlTWFwLkVudHJ5fS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk1peGVkPC9lbT4nIGF0dHJpYnV0ZSBsaXN0IGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TWl4ZWQ8L2VtPicgYXR0cmlidXRlIGxpc3QuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlI2dldERvY3VtZW50Um9vdF9NaXhlZCgpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUZlYXR1cmVNYXBFbnRyeSIgbWFueT0idHJ1ZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRmVhdHVyZU1hcCBnZXRNaXhlZCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+WE1MTlMgUHJlZml4IE1hcDwvYj48L2VtPicgbWFwLgotCSAqIFRoZSBrZXkgaXMgb2YgdHlwZSB7QGxpbmsgamF2YS5sYW5nLlN0cmluZ30sCi0JICogYW5kIHRoZSB2YWx1ZSBpcyBvZiB0eXBlIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfSwKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlhNTE5TIFByZWZpeCBNYXA8L2VtPicgbWFwIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+WE1MTlMgUHJlZml4IE1hcDwvZW0+JyBtYXAuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlI2dldERvY3VtZW50Um9vdF9YTUxOU1ByZWZpeE1hcCgpCi0JICogQG1vZGVsIG1hcFR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5FU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSIga2V5VHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdmFsdWVUeXBlPSJqYXZhLmxhbmcuU3RyaW5nIiB0cmFuc2llbnQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVNYXAgZ2V0WE1MTlNQcmVmaXhNYXAoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlhTSSBTY2hlbWEgTG9jYXRpb248L2I+PC9lbT4nIG1hcC4KLQkgKiBUaGUga2V5IGlzIG9mIHR5cGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9LAotCSAqIGFuZCB0aGUgdmFsdWUgaXMgb2YgdHlwZSB7QGxpbmsgamF2YS5sYW5nLlN0cmluZ30sCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5YU0kgU2NoZW1hIExvY2F0aW9uPC9lbT4nIG1hcCBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPicgbWFwLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5UGFja2FnZSNnZXREb2N1bWVudFJvb3RfWFNJU2NoZW1hTG9jYXRpb24oKQotCSAqIEBtb2RlbCBtYXBUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiIGtleVR5cGU9ImphdmEubGFuZy5TdHJpbmciIHZhbHVlVHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdHJhbnNpZW50PSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTWFwIGdldFhTSVNjaGVtYUxvY2F0aW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5UYXhvbm9taWVzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5UYXhvbm9taWVzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlRheG9ub21pZXM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI3NldFRheG9ub21pZXMoVGF4b25vbWllcykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeVBhY2thZ2UjZ2V0RG9jdW1lbnRSb290X1RheG9ub21pZXMoKQotCSAqIEBtb2RlbCBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIiB0cmFuc2llbnQ9InRydWUiIHZvbGF0aWxlPSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlUYXhvbm9taWVzIGdldFRheG9ub21pZXMoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRUYXhvbm9taWVzIDxlbT5UYXhvbm9taWVzPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5UYXhvbm9taWVzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiBAc2VlICNnZXRUYXhvbm9taWVzKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXRUYXhvbm9taWVzKFRheG9ub21pZXMgdmFsdWUpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VWRkaSBSZWdpc3RyeTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VWRkaSBSZWdpc3RyeTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5VZGRpIFJlZ2lzdHJ5PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiBAc2VlICNzZXRVZGRpUmVnaXN0cnkoVURESVJlZ2lzdHJ5KQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5UGFja2FnZSNnZXREb2N1bWVudFJvb3RfVWRkaVJlZ2lzdHJ5KCkKLQkgKiBAbW9kZWwgY29udGFpbm1lbnQ9InRydWUiIHJlc29sdmVQcm94aWVzPSJmYWxzZSIgdHJhbnNpZW50PSJ0cnVlIiB2b2xhdGlsZT0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JVURESVJlZ2lzdHJ5IGdldFVkZGlSZWdpc3RyeSgpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuRG9jdW1lbnRSb290I2dldFVkZGlSZWdpc3RyeSA8ZW0+VWRkaSBSZWdpc3RyeTwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VWRkaSBSZWdpc3RyeTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogQHNlZSAjZ2V0VWRkaVJlZ2lzdHJ5KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXRVZGRpUmVnaXN0cnkoVURESVJlZ2lzdHJ5IHZhbHVlKTsKLQotfSAvLyBEb2N1bWVudFJvb3QKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9UYXhvbm9taWVzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvVGF4b25vbWllcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzdlYmNlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9UYXhvbm9taWVzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFRheG9ub21pZXMuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ5IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VGF4b25vbWllczwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5UYXhvbm9taWVzI2dldFRheG9ub215IDxlbT5UYXhvbm9teTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5UGFja2FnZSNnZXRUYXhvbm9taWVzKCkKLSAqIEBtb2RlbCAKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBUYXhvbm9taWVzIGV4dGVuZHMgRU9iamVjdCB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VGF4b25vbXk8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215fS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlRheG9ub215PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+VGF4b25vbXk8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlI2dldFRheG9ub21pZXNfVGF4b25vbXkoKQotCSAqIEBtb2RlbCB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215IiBjb250YWlubWVudD0idHJ1ZSIgcmVzb2x2ZVByb3hpZXM9ImZhbHNlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTGlzdCBnZXRUYXhvbm9teSgpOwotCi19IC8vIFRheG9ub21pZXMKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9VRERJUmVnaXN0cnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9VRERJUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNmMjExNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvVURESVJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDMgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBVRERJUmVnaXN0cnkuamF2YSx2IDEuMiAyMDA1LzEyLzAzIDA0OjA2OjQ5IGNicmVhbGV5IEV4cCAkCi0gKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5OwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VRERJUmVnaXN0cnk8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldFZlcnNpb24gPGVtPlZlcnNpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXREaXNjb3ZlcnlVUkwgPGVtPkRpc2NvdmVyeSBVUkw8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXRQdWJsaWNhdGlvblVSTCA8ZW0+UHVibGljYXRpb24gVVJMPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0U2VjdXJlZERpc2NvdmVyeVVSTCA8ZW0+U2VjdXJlZCBEaXNjb3ZlcnkgVVJMPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0U2VjdXJlZFB1YmxpY2F0aW9uVVJMIDxlbT5TZWN1cmVkIFB1YmxpY2F0aW9uIFVSTDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldERlZmF1bHRMb2dpbiA8ZW0+RGVmYXVsdCBMb2dpbjwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldERlZmF1bHRQYXNzd29yZCA8ZW0+RGVmYXVsdCBQYXNzd29yZDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldFRheG9ub21pZXMgPGVtPlRheG9ub21pZXM8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeVBhY2thZ2UjZ2V0VURESVJlZ2lzdHJ5KCkKLSAqIEBtb2RlbCAKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBVRERJUmVnaXN0cnkgZXh0ZW5kcyBSZWdpc3RyeSB7Ci0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VmVyc2lvbjwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VmVyc2lvbjwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5WZXJzaW9uPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNzZXRWZXJzaW9uKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeVBhY2thZ2UjZ2V0VURESVJlZ2lzdHJ5X1ZlcnNpb24oKQotCSAqIEBtb2RlbCB1bmlxdWU9ImZhbHNlIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtbC50eXBlLlN0cmluZyIgcmVxdWlyZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRWZXJzaW9uKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0VmVyc2lvbiA8ZW0+VmVyc2lvbjwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VmVyc2lvbjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0VmVyc2lvbigpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0VmVyc2lvbihTdHJpbmcgdmFsdWUpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RGlzY292ZXJ5IFVSTDwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RGlzY292ZXJ5IFVSTDwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5EaXNjb3ZlcnkgVVJMPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNzZXREaXNjb3ZlcnlVUkwoU3RyaW5nKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5UGFja2FnZSNnZXRVRERJUmVnaXN0cnlfRGlzY292ZXJ5VVJMKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5BbnlVUkkiIHJlcXVpcmVkPSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZ2V0RGlzY292ZXJ5VVJMKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0RGlzY292ZXJ5VVJMIDxlbT5EaXNjb3ZlcnkgVVJMPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5EaXNjb3ZlcnkgVVJMPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNnZXREaXNjb3ZlcnlVUkwoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQl2b2lkIHNldERpc2NvdmVyeVVSTChTdHJpbmcgdmFsdWUpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UHVibGljYXRpb24gVVJMPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5QdWJsaWNhdGlvbiBVUkw8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+UHVibGljYXRpb24gVVJMPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNzZXRQdWJsaWNhdGlvblVSTChTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlI2dldFVERElSZWdpc3RyeV9QdWJsaWNhdGlvblVSTCgpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuQW55VVJJIiByZXF1aXJlZD0idHJ1ZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JU3RyaW5nIGdldFB1YmxpY2F0aW9uVVJMKCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0UHVibGljYXRpb25VUkwgPGVtPlB1YmxpY2F0aW9uIFVSTDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+UHVibGljYXRpb24gVVJMPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNnZXRQdWJsaWNhdGlvblVSTCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXZvaWQgc2V0UHVibGljYXRpb25VUkwoU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlNlY3VyZWQgRGlzY292ZXJ5IFVSTDwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U2VjdXJlZCBEaXNjb3ZlcnkgVVJMPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlNlY3VyZWQgRGlzY292ZXJ5IFVSTDwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0U2VjdXJlZERpc2NvdmVyeVVSTChTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlI2dldFVERElSZWdpc3RyeV9TZWN1cmVkRGlzY292ZXJ5VVJMKCkKLQkgKiBAbW9kZWwgdW5pcXVlPSJmYWxzZSIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5BbnlVUkkiIHJlcXVpcmVkPSJ0cnVlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZ2V0U2VjdXJlZERpc2NvdmVyeVVSTCgpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldFNlY3VyZWREaXNjb3ZlcnlVUkwgPGVtPlNlY3VyZWQgRGlzY292ZXJ5IFVSTDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+U2VjdXJlZCBEaXNjb3ZlcnkgVVJMPC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiBAc2VlICNnZXRTZWN1cmVkRGlzY292ZXJ5VVJMKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXRTZWN1cmVkRGlzY292ZXJ5VVJMKFN0cmluZyB2YWx1ZSk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5TZWN1cmVkIFB1YmxpY2F0aW9uIFVSTDwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U2VjdXJlZCBQdWJsaWNhdGlvbiBVUkw8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+U2VjdXJlZCBQdWJsaWNhdGlvbiBVUkw8L2VtPicgYXR0cmlidXRlLgotCSAqIEBzZWUgI3NldFNlY3VyZWRQdWJsaWNhdGlvblVSTChTdHJpbmcpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlI2dldFVERElSZWdpc3RyeV9TZWN1cmVkUHVibGljYXRpb25VUkwoKQotCSAqIEBtb2RlbCB1bmlxdWU9ImZhbHNlIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtbC50eXBlLkFueVVSSSIgcmVxdWlyZWQ9InRydWUiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBnZXRTZWN1cmVkUHVibGljYXRpb25VUkwoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXRTZWN1cmVkUHVibGljYXRpb25VUkwgPGVtPlNlY3VyZWQgUHVibGljYXRpb24gVVJMPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5TZWN1cmVkIFB1YmxpY2F0aW9uIFVSTDwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0U2VjdXJlZFB1YmxpY2F0aW9uVVJMKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXRTZWN1cmVkUHVibGljYXRpb25VUkwoU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkRlZmF1bHQgTG9naW48L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkRlZmF1bHQgTG9naW48L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RGVmYXVsdCBMb2dpbjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0RGVmYXVsdExvZ2luKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeVBhY2thZ2UjZ2V0VURESVJlZ2lzdHJ5X0RlZmF1bHRMb2dpbigpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuU3RyaW5nIiByZXF1aXJlZD0idHJ1ZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JU3RyaW5nIGdldERlZmF1bHRMb2dpbigpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldERlZmF1bHRMb2dpbiA8ZW0+RGVmYXVsdCBMb2dpbjwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RGVmYXVsdCBMb2dpbjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0RGVmYXVsdExvZ2luKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXREZWZhdWx0TG9naW4oU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkRlZmF1bHQgUGFzc3dvcmQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkRlZmF1bHQgUGFzc3dvcmQ8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RGVmYXVsdCBQYXNzd29yZDwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjc2V0RGVmYXVsdFBhc3N3b3JkKFN0cmluZykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeVBhY2thZ2UjZ2V0VURESVJlZ2lzdHJ5X0RlZmF1bHRQYXNzd29yZCgpCi0JICogQG1vZGVsIHVuaXF1ZT0iZmFsc2UiIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuU3RyaW5nIiByZXF1aXJlZD0idHJ1ZSIKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JU3RyaW5nIGdldERlZmF1bHRQYXNzd29yZCgpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldERlZmF1bHRQYXNzd29yZCA8ZW0+RGVmYXVsdCBQYXNzd29yZDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RGVmYXVsdCBQYXNzd29yZDwvZW0+JyBhdHRyaWJ1dGUuCi0JICogQHNlZSAjZ2V0RGVmYXVsdFBhc3N3b3JkKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0Jdm9pZCBzZXREZWZhdWx0UGFzc3dvcmQoU3RyaW5nIHZhbHVlKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlRheG9ub21pZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDxwPgotCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlRheG9ub21pZXM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLQkgKiA8L3A+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+VGF4b25vbWllczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogQHNlZSAjc2V0VGF4b25vbWllcyhUYXhvbm9taWVzKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5UGFja2FnZSNnZXRVRERJUmVnaXN0cnlfVGF4b25vbWllcygpCi0JICogQG1vZGVsIGNvbnRhaW5tZW50PSJ0cnVlIiByZXNvbHZlUHJveGllcz0iZmFsc2UiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVRheG9ub21pZXMgZ2V0VGF4b25vbWllcygpOwotCi0JLyoqCi0JICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldFRheG9ub21pZXMgPGVtPlRheG9ub21pZXM8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlRheG9ub21pZXM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIEBzZWUgI2dldFRheG9ub21pZXMoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQl2b2lkIHNldFRheG9ub21pZXMoVGF4b25vbWllcyB2YWx1ZSk7Ci0KLX0gLy8gVURESVJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvVURESVJlZ2lzdHJ5RmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L1VERElSZWdpc3RyeUZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIxMGM3Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvVURESVJlZ2lzdHJ5RmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBVRERJUmVnaXN0cnlGYWN0b3J5LmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OSBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVGYWN0b3J5OwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBUaGUgPGI+RmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4KLSAqIEl0IHByb3ZpZGVzIGEgY3JlYXRlIG1ldGhvZCBmb3IgZWFjaCBub24tYWJzdHJhY3QgY2xhc3Mgb2YgdGhlIG1vZGVsLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeVBhY2thZ2UKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBVRERJUmVnaXN0cnlGYWN0b3J5IGV4dGVuZHMgRUZhY3RvcnkgewotCS8qKgotCSAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JVURESVJlZ2lzdHJ5RmFjdG9yeSBlSU5TVEFOQ0UgPSBuZXcgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuaW1wbC5VRERJUmVnaXN0cnlGYWN0b3J5SW1wbCgpOwotCi0JLyoqCi0JICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlEb2N1bWVudFJvb3QgY3JlYXRlRG9jdW1lbnRSb290KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlRheG9ub21pZXM8L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlRheG9ub21pZXM8L2VtPicuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCVRheG9ub21pZXMgY3JlYXRlVGF4b25vbWllcygpOwotCi0JLyoqCi0JICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5VRERJUmVnaXN0cnk8L2VtPicuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlVERElSZWdpc3RyeTwvZW0+Jy4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JVURESVJlZ2lzdHJ5IGNyZWF0ZVVERElSZWdpc3RyeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5LgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlVRERJUmVnaXN0cnlQYWNrYWdlIGdldFVERElSZWdpc3RyeVBhY2thZ2UoKTsKLQotfSAvL1VERElSZWdpc3RyeUZhY3RvcnkKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9VRERJUmVnaXN0cnlQYWNrYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvVURESVJlZ2lzdHJ5UGFja2FnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWU1YWUxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9VRERJUmVnaXN0cnlQYWNrYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NjggKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBVRERJUmVnaXN0cnlQYWNrYWdlLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo0OSBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZTsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGUgbW9kZWwuCi0gKiBJdCBjb250YWlucyBhY2Nlc3NvcnMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdG8gcmVwcmVzZW50Ci0gKiA8dWw+Ci0gKiAgIDxsaT5lYWNoIGNsYXNzLDwvbGk+Ci0gKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPgotICogICA8bGk+ZWFjaCBlbnVtLDwvbGk+Ci0gKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPgotICogPC91bD4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+Ci0gKiAKLSAqICAgIFNlZSBodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UuaHRtbCBhbmQKLSAqICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgbmFtZXNwYWNlLgotICogCi0gKiAgICAgVGhpcyBzY2hlbWEgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBYTUwgbmFtZXNwYWNlLCBpbiBhIGZvcm0KLSAqICAgICBzdWl0YWJsZSBmb3IgaW1wb3J0IGJ5IG90aGVyIHNjaGVtYSBkb2N1bWVudHMuICAKLSAqIAotICogICAgIE5vdGUgdGhhdCBsb2NhbCBuYW1lcyBpbiB0aGlzIG5hbWVzcGFjZSBhcmUgaW50ZW5kZWQgdG8gYmUgZGVmaW5lZAotICogICAgIG9ubHkgYnkgdGhlIFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0gb3IgaXRzIHN1Ymdyb3Vwcy4gIFRoZQotICogICAgIGZvbGxvd2luZyBuYW1lcyBhcmUgY3VycmVudGx5IGRlZmluZWQgaW4gdGhpcyBuYW1lc3BhY2UgYW5kIHNob3VsZAotICogICAgIG5vdCBiZSB1c2VkIHdpdGggY29uZmxpY3Rpbmcgc2VtYW50aWNzIGJ5IGFueSBXb3JraW5nIEdyb3VwLAotICogICAgIHNwZWNpZmljYXRpb24sIG9yIGRvY3VtZW50IGluc3RhbmNlOgotICogCi0gKiAgICAgYmFzZSAoYXMgYW4gYXR0cmlidXRlIG5hbWUpOiBkZW5vdGVzIGFuIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZQotICogICAgICAgICAgcHJvdmlkZXMgYSBVUkkgdG8gYmUgdXNlZCBhcyB0aGUgYmFzZSBmb3IgaW50ZXJwcmV0aW5nIGFueQotICogICAgICAgICAgcmVsYXRpdmUgVVJJcyBpbiB0aGUgc2NvcGUgb2YgdGhlIGVsZW1lbnQgb24gd2hpY2ggaXQKLSAqICAgICAgICAgIGFwcGVhcnM7IGl0cyB2YWx1ZSBpcyBpbmhlcml0ZWQuICBUaGlzIG5hbWUgaXMgcmVzZXJ2ZWQKLSAqICAgICAgICAgIGJ5IHZpcnR1ZSBvZiBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIEJhc2Ugc3BlY2lmaWNhdGlvbi4KLSAqIAotICogICAgIGlkICAgKGFzIGFuIGF0dHJpYnV0ZSBuYW1lKTogZGVub3RlcyBhbiBhdHRyaWJ1dGUgd2hvc2UgdmFsdWUKLSAqICAgICAgICAgIHNob3VsZCBiZSBpbnRlcnByZXRlZCBhcyBpZiBkZWNsYXJlZCB0byBiZSBvZiB0eXBlIElELgotICogICAgICAgICAgVGhlIHhtbDppZCBzcGVjaWZpY2F0aW9uIGlzIG5vdCB5ZXQgYSBXM0MgUmVjb21tZW5kYXRpb24sCi0gKiAgICAgICAgICBidXQgdGhpcyBhdHRyaWJ1dGUgaXMgaW5jbHVkZWQgaGVyZSB0byBmYWNpbGl0YXRlIGV4cGVyaW1lbnRhdGlvbgotICogICAgICAgICAgd2l0aCB0aGUgbWVjaGFuaXNtcyBpdCBwcm9wb3Nlcy4gIE5vdGUgdGhhdCBpdCBpcyBfbm90XyBpbmNsdWRlZAotICogICAgICAgICAgaW4gdGhlIHNwZWNpYWxBdHRycyBhdHRyaWJ1dGUgZ3JvdXAuCi0gKiAKLSAqICAgICBsYW5nIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlCi0gKiAgICAgICAgICBpcyBhIGxhbmd1YWdlIGNvZGUgZm9yIHRoZSBuYXR1cmFsIGxhbmd1YWdlIG9mIHRoZSBjb250ZW50IG9mCi0gKiAgICAgICAgICBhbnkgZWxlbWVudDsgaXRzIHZhbHVlIGlzIGluaGVyaXRlZC4gIFRoaXMgbmFtZSBpcyByZXNlcnZlZAotICogICAgICAgICAgYnkgdmlydHVlIG9mIGl0cyBkZWZpbml0aW9uIGluIHRoZSBYTUwgc3BlY2lmaWNhdGlvbi4KLSAqICAgCi0gKiAgICAgc3BhY2UgKGFzIGFuIGF0dHJpYnV0ZSBuYW1lKTogZGVub3RlcyBhbiBhdHRyaWJ1dGUgd2hvc2UKLSAqICAgICAgICAgIHZhbHVlIGlzIGEga2V5d29yZCBpbmRpY2F0aW5nIHdoYXQgd2hpdGVzcGFjZSBwcm9jZXNzaW5nCi0gKiAgICAgICAgICBkaXNjaXBsaW5lIGlzIGludGVuZGVkIGZvciB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudDsgaXRzCi0gKiAgICAgICAgICB2YWx1ZSBpcyBpbmhlcml0ZWQuICBUaGlzIG5hbWUgaXMgcmVzZXJ2ZWQgYnkgdmlydHVlIG9mIGl0cwotICogICAgICAgICAgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIHNwZWNpZmljYXRpb24uCi0gKiAKLSAqICAgICBGYXRoZXIgKGluIGFueSBjb250ZXh0IGF0IGFsbCk6IGRlbm90ZXMgSm9uIEJvc2FrLCB0aGUgY2hhaXIgb2YgCi0gKiAgICAgICAgICB0aGUgb3JpZ2luYWwgWE1MIFdvcmtpbmcgR3JvdXAuICBUaGlzIG5hbWUgaXMgcmVzZXJ2ZWQgYnkgCi0gKiAgICAgICAgICB0aGUgZm9sbG93aW5nIGRlY2lzaW9uIG9mIHRoZSBXM0MgWE1MIFBsZW5hcnkgYW5kIAotICogICAgICAgICAgWE1MIENvb3JkaW5hdGlvbiBncm91cHM6Ci0gKiAKLSAqICAgICAgICAgICAgICBJbiBhcHByZWNpYXRpb24gZm9yIGhpcyB2aXNpb24sIGxlYWRlcnNoaXAgYW5kIGRlZGljYXRpb24KLSAqICAgICAgICAgICAgICB0aGUgVzNDIFhNTCBQbGVuYXJ5IG9uIHRoaXMgMTB0aCBkYXkgb2YgRmVicnVhcnksIDIwMDAKLSAqICAgICAgICAgICAgICByZXNlcnZlcyBmb3IgSm9uIEJvc2FrIGluIHBlcnBldHVpdHkgdGhlIFhNTCBuYW1lCi0gKiAgICAgICAgICAgICAgeG1sOkZhdGhlcgotICogICAKLSAqIFRoaXMgc2NoZW1hIGRlZmluZXMgYXR0cmlidXRlcyBhbmQgYW4gYXR0cmlidXRlIGdyb3VwCi0gKiAgICAgICAgIHN1aXRhYmxlIGZvciB1c2UgYnkKLSAqICAgICAgICAgc2NoZW1hcyB3aXNoaW5nIHRvIGFsbG93IHhtbDpiYXNlLCB4bWw6bGFuZywgeG1sOnNwYWNlIG9yIHhtbDppZAotICogICAgICAgICBhdHRyaWJ1dGVzIG9uIGVsZW1lbnRzIHRoZXkgZGVmaW5lLgotICogCi0gKiAgICAgICAgIFRvIGVuYWJsZSB0aGlzLCBzdWNoIGEgc2NoZW1hIG11c3QgaW1wb3J0IHRoaXMgc2NoZW1hCi0gKiAgICAgICAgIGZvciB0aGUgWE1MIG5hbWVzcGFjZSwgZS5nLiBhcyBmb2xsb3dzOgotICogICAgICAgICAmbHQ7c2NoZW1hIC4gLiAuJmd0OwotICogICAgICAgICAgLiAuIC4KLSAqICAgICAgICAgICZsdDtpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiCi0gKiAgICAgICAgICAgICAgICAgICAgIHNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QiLyZndDsKLSAqIAotICogICAgICAgICBTdWJzZXF1ZW50bHksIHF1YWxpZmllZCByZWZlcmVuY2UgdG8gYW55IG9mIHRoZSBhdHRyaWJ1dGVzCi0gKiAgICAgICAgIG9yIHRoZSBncm91cCBkZWZpbmVkIGJlbG93IHdpbGwgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QsIGUuZy4KLSAqIAotICogICAgICAgICAmbHQ7dHlwZSAuIC4gLiZndDsKLSAqICAgICAgICAgIC4gLiAuCi0gKiAgICAgICAgICAmbHQ7YXR0cmlidXRlR3JvdXAgcmVmPSJ4bWw6c3BlY2lhbEF0dHJzIi8mZ3Q7Ci0gKiAgCi0gKiAgICAgICAgICB3aWxsIGRlZmluZSBhIHR5cGUgd2hpY2ggd2lsbCBzY2hlbWEtdmFsaWRhdGUgYW4gaW5zdGFuY2UKLSAqICAgICAgICAgIGVsZW1lbnQgd2l0aCBhbnkgb2YgdGhvc2UgYXR0cmlidXRlcwotICogSW4ga2VlcGluZyB3aXRoIHRoZSBYTUwgU2NoZW1hIFdHJ3Mgc3RhbmRhcmQgdmVyc2lvbmluZwotICogICAgcG9saWN5LCB0aGlzIHNjaGVtYSBkb2N1bWVudCB3aWxsIHBlcnNpc3QgYXQKLSAqICAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgveG1sLnhzZC4KLSAqICAgIEF0IHRoZSBkYXRlIG9mIGlzc3VlIGl0IGNhbiBhbHNvIGJlIGZvdW5kIGF0Ci0gKiAgICBodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QuCi0gKiAgICBUaGUgc2NoZW1hIGRvY3VtZW50IGF0IHRoYXQgVVJJIG1heSBob3dldmVyIGNoYW5nZSBpbiB0aGUgZnV0dXJlLAotICogICAgaW4gb3JkZXIgdG8gcmVtYWluIGNvbXBhdGlibGUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgWE1MIFNjaGVtYQotICogICAgaXRzZWxmLCBvciB3aXRoIHRoZSBYTUwgbmFtZXNwYWNlIGl0c2VsZi4gIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgWE1MCi0gKiAgICBTY2hlbWEgb3IgWE1MIG5hbWVzcGFjZXMgY2hhbmdlLCB0aGUgdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50IGF0Ci0gKiAgICBodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2Qgd2lsbCBjaGFuZ2UKLSAqICAgIGFjY29yZGluZ2x5OyB0aGUgdmVyc2lvbiBhdAotICogICAgaHR0cDovL3d3dy53My5vcmcvMjAwNS8wOC94bWwueHNkIHdpbGwgbm90IGNoYW5nZS4KLSAqICAgCi0gKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeUZhY3RvcnkKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBVRERJUmVnaXN0cnlQYWNrYWdlIGV4dGVuZHMgRVBhY2thZ2UgewotCS8qKgotCSAqIFRoZSBwYWNrYWdlIG5hbWUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JU3RyaW5nIGVOQU1FID0gInVkZGlyZWdpc3RyeSI7Ci0KLQkvKioKLQkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgVVJJLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCVN0cmluZyBlTlNfVVJJID0gImh0dHA6Ly9lY2xpcHNlLm9yZy93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeSI7Ci0KLQkvKioKLQkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlTdHJpbmcgZU5TX1BSRUZJWCA9ICJ1ZGRpcmVnaXN0cnkiOwotCi0JLyoqCi0JICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGFja2FnZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlVRERJUmVnaXN0cnlQYWNrYWdlIGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuVURESVJlZ2lzdHJ5UGFja2FnZUltcGwuaW5pdCgpOwotCi0JLyoqCi0JICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLkRvY3VtZW50Um9vdEltcGwgPGVtPkRvY3VtZW50IFJvb3Q8L2VtPn0nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLkRvY3VtZW50Um9vdEltcGwKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuVURESVJlZ2lzdHJ5UGFja2FnZUltcGwjZ2V0RG9jdW1lbnRSb290KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1QgPSAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1peGVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX19NSVhFRCA9IDA7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+WE1MTlMgUHJlZml4IE1hcDwvYj48L2VtPicgbWFwLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfX1hNTE5TX1BSRUZJWF9NQVAgPSAxOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlhTSSBTY2hlbWEgTG9jYXRpb248L2I+PC9lbT4nIG1hcC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OID0gMjsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXhvbm9taWVzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgRE9DVU1FTlRfUk9PVF9fVEFYT05PTUlFUyA9IDM7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VWRkaSBSZWdpc3RyeTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfX1VERElfUkVHSVNUUlkgPSA0OwotCi0JLyoqCi0JICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSB0aGUgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IERPQ1VNRU5UX1JPT1RfRkVBVFVSRV9DT1VOVCA9IDU7Ci0KLQkvKioKLQkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuVGF4b25vbWllc0ltcGwgPGVtPlRheG9ub21pZXM8L2VtPn0nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLlRheG9ub21pZXNJbXBsCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLlVERElSZWdpc3RyeVBhY2thZ2VJbXBsI2dldFRheG9ub21pZXMoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlpbnQgVEFYT05PTUlFUyA9IDE7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VGF4b25vbXk8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IFRBWE9OT01JRVNfX1RBWE9OT01ZID0gMDsKLQotCS8qKgotCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgdGhlICc8ZW0+VGF4b25vbWllczwvZW0+JyBjbGFzcy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBUQVhPTk9NSUVTX0ZFQVRVUkVfQ09VTlQgPSAxOwotCi0JLyoqCi0JICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLlVERElSZWdpc3RyeUltcGwgPGVtPlVERElSZWdpc3RyeTwvZW0+fScgY2xhc3MuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuVURESVJlZ2lzdHJ5SW1wbAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuaW1wbC5VRERJUmVnaXN0cnlQYWNrYWdlSW1wbCNnZXRVRERJUmVnaXN0cnkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlpbnQgVURESV9SRUdJU1RSWSA9IDI7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgVURESV9SRUdJU1RSWV9fTkFNRSA9IFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fTkFNRTsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5EZXNjcmlwdGlvbjwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgVURESV9SRUdJU1RSWV9fREVTQ1JJUFRJT04gPSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0RFU0NSSVBUSU9OOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPklkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgVURESV9SRUdJU1RSWV9fSUQgPSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0lEOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgVURESV9SRUdJU1RSWV9fTE9DQVRJT04gPSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfX0xPQ0FUSU9OOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlZjwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IFVERElfUkVHSVNUUllfX1JFRiA9IFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9fUkVGOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlZlcnNpb248L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBVRERJX1JFR0lTVFJZX19WRVJTSU9OID0gUmVnaXN0cnlQYWNrYWdlLlJFR0lTVFJZX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRpc2NvdmVyeSBVUkw8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBVRERJX1JFR0lTVFJZX19ESVNDT1ZFUllfVVJMID0gUmVnaXN0cnlQYWNrYWdlLlJFR0lTVFJZX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0JLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlB1YmxpY2F0aW9uIFVSTDwvYj48L2VtPicgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IFVERElfUkVHSVNUUllfX1BVQkxJQ0FUSU9OX1VSTCA9IFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9GRUFUVVJFX0NPVU5UICsgMjsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TZWN1cmVkIERpc2NvdmVyeSBVUkw8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBVRERJX1JFR0lTVFJZX19TRUNVUkVEX0RJU0NPVkVSWV9VUkwgPSBSZWdpc3RyeVBhY2thZ2UuUkVHSVNUUllfRkVBVFVSRV9DT1VOVCArIDM7Ci0KLQkvKioKLQkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U2VjdXJlZCBQdWJsaWNhdGlvbiBVUkw8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCWludCBVRERJX1JFR0lTVFJZX19TRUNVUkVEX1BVQkxJQ0FUSU9OX1VSTCA9IFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9GRUFUVVJFX0NPVU5UICsgNDsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5EZWZhdWx0IExvZ2luPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgVURESV9SRUdJU1RSWV9fREVGQVVMVF9MT0dJTiA9IFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9GRUFUVVJFX0NPVU5UICsgNTsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5EZWZhdWx0IFBhc3N3b3JkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgVURESV9SRUdJU1RSWV9fREVGQVVMVF9QQVNTV09SRCA9IFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9GRUFUVVJFX0NPVU5UICsgNjsKLQotCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXhvbm9taWVzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlpbnQgVURESV9SRUdJU1RSWV9fVEFYT05PTUlFUyA9IFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9GRUFUVVJFX0NPVU5UICsgNzsKLQotCS8qKgotCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgdGhlICc8ZW0+VURESVJlZ2lzdHJ5PC9lbT4nIGNsYXNzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IFVERElfUkVHSVNUUllfRkVBVFVSRV9DT1VOVCA9IFJlZ2lzdHJ5UGFja2FnZS5SRUdJU1RSWV9GRUFUVVJFX0NPVU5UICsgODsKLQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuRG9jdW1lbnRSb290IDxlbT5Eb2N1bWVudCBSb290PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkRvY3VtZW50IFJvb3Q8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5Eb2N1bWVudFJvb3QKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUNsYXNzIGdldERvY3VtZW50Um9vdCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRNaXhlZCA8ZW0+TWl4ZWQ8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAnPGVtPk1peGVkPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuRG9jdW1lbnRSb290I2dldE1peGVkKCkKLQkgKiBAc2VlICNnZXREb2N1bWVudFJvb3QoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldERvY3VtZW50Um9vdF9NaXhlZCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBtYXAgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0WE1MTlNQcmVmaXhNYXAgPGVtPlhNTE5TIFByZWZpeCBNYXA8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBtYXAgJzxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuRG9jdW1lbnRSb290I2dldFhNTE5TUHJlZml4TWFwKCkKLQkgKiBAc2VlICNnZXREb2N1bWVudFJvb3QoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9YTUxOU1ByZWZpeE1hcCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBtYXAgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0WFNJU2NoZW1hTG9jYXRpb24gPGVtPlhTSSBTY2hlbWEgTG9jYXRpb248L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBtYXAgJzxlbT5YU0kgU2NoZW1hIExvY2F0aW9uPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuRG9jdW1lbnRSb290I2dldFhTSVNjaGVtYUxvY2F0aW9uKCkKLQkgKiBAc2VlICNnZXREb2N1bWVudFJvb3QoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9YU0lTY2hlbWFMb2NhdGlvbigpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0VGF4b25vbWllcyA8ZW0+VGF4b25vbWllczwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPGVtPlRheG9ub21pZXM8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0VGF4b25vbWllcygpCi0JICogQHNlZSAjZ2V0RG9jdW1lbnRSb290KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfVGF4b25vbWllcygpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5Eb2N1bWVudFJvb3QjZ2V0VWRkaVJlZ2lzdHJ5IDxlbT5VZGRpIFJlZ2lzdHJ5PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8ZW0+VWRkaSBSZWdpc3RyeTwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LkRvY3VtZW50Um9vdCNnZXRVZGRpUmVnaXN0cnkoKQotCSAqIEBzZWUgI2dldERvY3VtZW50Um9vdCgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVSZWZlcmVuY2UgZ2V0RG9jdW1lbnRSb290X1VkZGlSZWdpc3RyeSgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVGF4b25vbWllcyA8ZW0+VGF4b25vbWllczwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5UYXhvbm9taWVzPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVGF4b25vbWllcwotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQ2xhc3MgZ2V0VGF4b25vbWllcygpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlRheG9ub21pZXMjZ2V0VGF4b25vbXkgPGVtPlRheG9ub215PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5UYXhvbm9teTwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlRheG9ub21pZXMjZ2V0VGF4b25vbXkoKQotCSAqIEBzZWUgI2dldFRheG9ub21pZXMoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldFRheG9ub21pZXNfVGF4b25vbXkoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSA8ZW0+VURESVJlZ2lzdHJ5PC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlVERElSZWdpc3RyeTwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQ2xhc3MgZ2V0VURESVJlZ2lzdHJ5KCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXRWZXJzaW9uIDxlbT5WZXJzaW9uPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VmVyc2lvbjwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXRWZXJzaW9uKCkKLQkgKiBAc2VlICNnZXRVRERJUmVnaXN0cnkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldFVERElSZWdpc3RyeV9WZXJzaW9uKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXREaXNjb3ZlcnlVUkwgPGVtPkRpc2NvdmVyeSBVUkw8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5EaXNjb3ZlcnkgVVJMPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldERpc2NvdmVyeVVSTCgpCi0JICogQHNlZSAjZ2V0VURESVJlZ2lzdHJ5KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRUF0dHJpYnV0ZSBnZXRVRERJUmVnaXN0cnlfRGlzY292ZXJ5VVJMKCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXRQdWJsaWNhdGlvblVSTCA8ZW0+UHVibGljYXRpb24gVVJMPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+UHVibGljYXRpb24gVVJMPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldFB1YmxpY2F0aW9uVVJMKCkKLQkgKiBAc2VlICNnZXRVRERJUmVnaXN0cnkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFQXR0cmlidXRlIGdldFVERElSZWdpc3RyeV9QdWJsaWNhdGlvblVSTCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0U2VjdXJlZERpc2NvdmVyeVVSTCA8ZW0+U2VjdXJlZCBEaXNjb3ZlcnkgVVJMPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+U2VjdXJlZCBEaXNjb3ZlcnkgVVJMPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldFNlY3VyZWREaXNjb3ZlcnlVUkwoKQotCSAqIEBzZWUgI2dldFVERElSZWdpc3RyeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVBdHRyaWJ1dGUgZ2V0VURESVJlZ2lzdHJ5X1NlY3VyZWREaXNjb3ZlcnlVUkwoKTsKLQotCS8qKgotCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5I2dldFNlY3VyZWRQdWJsaWNhdGlvblVSTCA8ZW0+U2VjdXJlZCBQdWJsaWNhdGlvbiBVUkw8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5TZWN1cmVkIFB1YmxpY2F0aW9uIFVSTDwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXRTZWN1cmVkUHVibGljYXRpb25VUkwoKQotCSAqIEBzZWUgI2dldFVERElSZWdpc3RyeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVBdHRyaWJ1dGUgZ2V0VURESVJlZ2lzdHJ5X1NlY3VyZWRQdWJsaWNhdGlvblVSTCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0RGVmYXVsdExvZ2luIDxlbT5EZWZhdWx0IExvZ2luPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+RGVmYXVsdCBMb2dpbjwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXREZWZhdWx0TG9naW4oKQotCSAqIEBzZWUgI2dldFVERElSZWdpc3RyeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVBdHRyaWJ1dGUgZ2V0VURESVJlZ2lzdHJ5X0RlZmF1bHRMb2dpbigpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0RGVmYXVsdFBhc3N3b3JkIDxlbT5EZWZhdWx0IFBhc3N3b3JkPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+RGVmYXVsdCBQYXNzd29yZDwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeSNnZXREZWZhdWx0UGFzc3dvcmQoKQotCSAqIEBzZWUgI2dldFVERElSZWdpc3RyeSgpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVBdHRyaWJ1dGUgZ2V0VURESVJlZ2lzdHJ5X0RlZmF1bHRQYXNzd29yZCgpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0VGF4b25vbWllcyA8ZW0+VGF4b25vbWllczwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPGVtPlRheG9ub21pZXM8L2VtPicuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnkjZ2V0VGF4b25vbWllcygpCi0JICogQHNlZSAjZ2V0VURESVJlZ2lzdHJ5KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXRVRERJUmVnaXN0cnlfVGF4b25vbWllcygpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JVURESVJlZ2lzdHJ5RmFjdG9yeSBnZXRVRERJUmVnaXN0cnlGYWN0b3J5KCk7Ci0KLX0gLy9VRERJUmVnaXN0cnlQYWNrYWdlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvaW1wbC9Eb2N1bWVudFJvb3RJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvaW1wbC9Eb2N1bWVudFJvb3RJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MDJkM2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L2ltcGwvRG9jdW1lbnRSb290SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzI2ICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogRG9jdW1lbnRSb290SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NTAgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsOwotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb25DaGFpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVN0cnVjdHVyYWxGZWF0dXJlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FY29yZVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVPYmplY3RJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVTdHJpbmdUb1N0cmluZ01hcEVudHJ5SW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkJhc2ljRmVhdHVyZU1hcDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FY29yZUVNYXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRmVhdHVyZU1hcDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuRG9jdW1lbnRSb290OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlRheG9ub21pZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeVBhY2thZ2U7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Eb2N1bWVudCBSb290PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0TWl4ZWQgPGVtPk1peGVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLkRvY3VtZW50Um9vdEltcGwjZ2V0WE1MTlNQcmVmaXhNYXAgPGVtPlhNTE5TIFByZWZpeCBNYXA8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuRG9jdW1lbnRSb290SW1wbCNnZXRYU0lTY2hlbWFMb2NhdGlvbiA8ZW0+WFNJIFNjaGVtYSBMb2NhdGlvbjwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuaW1wbC5Eb2N1bWVudFJvb3RJbXBsI2dldFRheG9ub21pZXMgPGVtPlRheG9ub21pZXM8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuRG9jdW1lbnRSb290SW1wbCNnZXRVZGRpUmVnaXN0cnkgPGVtPlVkZGkgUmVnaXN0cnk8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBEb2N1bWVudFJvb3RJbXBsIGV4dGVuZHMgRU9iamVjdEltcGwgaW1wbGVtZW50cyBEb2N1bWVudFJvb3QgewotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE1peGVkKCkgPGVtPk1peGVkPC9lbT59JyBhdHRyaWJ1dGUgbGlzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldE1peGVkKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRmVhdHVyZU1hcCBtaXhlZCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRYTUxOU1ByZWZpeE1hcCgpIDxlbT5YTUxOUyBQcmVmaXggTWFwPC9lbT59JyBtYXAuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRYTUxOU1ByZWZpeE1hcCgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIEVNYXAgeE1MTlNQcmVmaXhNYXAgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0WFNJU2NoZW1hTG9jYXRpb24oKSA8ZW0+WFNJIFNjaGVtYSBMb2NhdGlvbjwvZW0+fScgbWFwLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0WFNJU2NoZW1hTG9jYXRpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBFTWFwIHhTSVNjaGVtYUxvY2F0aW9uID0gbnVsbDsKLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBEb2N1bWVudFJvb3RJbXBsKCkgewotCQlzdXBlcigpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgewotCQlyZXR1cm4gVURESVJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290KCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEZlYXR1cmVNYXAgZ2V0TWl4ZWQoKSB7Ci0JCWlmIChtaXhlZCA9PSBudWxsKSB7Ci0JCQltaXhlZCA9IG5ldyBCYXNpY0ZlYXR1cmVNYXAodGhpcywgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19NSVhFRCk7Ci0JCX0KLQkJcmV0dXJuIG1peGVkOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFTWFwIGdldFhNTE5TUHJlZml4TWFwKCkgewotCQlpZiAoeE1MTlNQcmVmaXhNYXAgPT0gbnVsbCkgewotCQkJeE1MTlNQcmVmaXhNYXAgPSBuZXcgRWNvcmVFTWFwKEVjb3JlUGFja2FnZS5lSU5TVEFOQ0UuZ2V0RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkoKSwgRVN0cmluZ1RvU3RyaW5nTWFwRW50cnlJbXBsLmNsYXNzLCB0aGlzLCBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1hNTE5TX1BSRUZJWF9NQVApOwotCQl9Ci0JCXJldHVybiB4TUxOU1ByZWZpeE1hcDsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRU1hcCBnZXRYU0lTY2hlbWFMb2NhdGlvbigpIHsKLQkJaWYgKHhTSVNjaGVtYUxvY2F0aW9uID09IG51bGwpIHsKLQkJCXhTSVNjaGVtYUxvY2F0aW9uID0gbmV3IEVjb3JlRU1hcChFY29yZVBhY2thZ2UuZUlOU1RBTkNFLmdldEVTdHJpbmdUb1N0cmluZ01hcEVudHJ5KCksIEVTdHJpbmdUb1N0cmluZ01hcEVudHJ5SW1wbC5jbGFzcywgdGhpcywgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OKTsKLQkJfQotCQlyZXR1cm4geFNJU2NoZW1hTG9jYXRpb247Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFRheG9ub21pZXMgZ2V0VGF4b25vbWllcygpIHsKLQkJcmV0dXJuIChUYXhvbm9taWVzKWdldE1peGVkKCkuZ2V0KFVERElSZWdpc3RyeVBhY2thZ2UuZUlOU1RBTkNFLmdldERvY3VtZW50Um9vdF9UYXhvbm9taWVzKCksIHRydWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldFRheG9ub21pZXMoVGF4b25vbWllcyBuZXdUYXhvbm9taWVzLCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCXJldHVybiAoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuYmFzaWNBZGQoVURESVJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X1RheG9ub21pZXMoKSwgbmV3VGF4b25vbWllcywgbnVsbCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0VGF4b25vbWllcyhUYXhvbm9taWVzIG5ld1RheG9ub21pZXMpIHsKLQkJKChGZWF0dXJlTWFwLkludGVybmFsKWdldE1peGVkKCkpLnNldChVRERJUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXREb2N1bWVudFJvb3RfVGF4b25vbWllcygpLCBuZXdUYXhvbm9taWVzKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgVURESVJlZ2lzdHJ5IGdldFVkZGlSZWdpc3RyeSgpIHsKLQkJcmV0dXJuIChVRERJUmVnaXN0cnkpZ2V0TWl4ZWQoKS5nZXQoVURESVJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0UuZ2V0RG9jdW1lbnRSb290X1VkZGlSZWdpc3RyeSgpLCB0cnVlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gYmFzaWNTZXRVZGRpUmVnaXN0cnkoVURESVJlZ2lzdHJ5IG5ld1VkZGlSZWdpc3RyeSwgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykgewotCQlyZXR1cm4gKChGZWF0dXJlTWFwLkludGVybmFsKWdldE1peGVkKCkpLmJhc2ljQWRkKFVERElSZWdpc3RyeVBhY2thZ2UuZUlOU1RBTkNFLmdldERvY3VtZW50Um9vdF9VZGRpUmVnaXN0cnkoKSwgbmV3VWRkaVJlZ2lzdHJ5LCBudWxsKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRVZGRpUmVnaXN0cnkoVURESVJlZ2lzdHJ5IG5ld1VkZGlSZWdpc3RyeSkgewotCQkoKEZlYXR1cmVNYXAuSW50ZXJuYWwpZ2V0TWl4ZWQoKSkuc2V0KFVERElSZWdpc3RyeVBhY2thZ2UuZUlOU1RBTkNFLmdldERvY3VtZW50Um9vdF9VZGRpUmVnaXN0cnkoKSwgbmV3VWRkaVJlZ2lzdHJ5KTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gZUludmVyc2VSZW1vdmUoSW50ZXJuYWxFT2JqZWN0IG90aGVyRW5kLCBpbnQgZmVhdHVyZUlELCBDbGFzcyBiYXNlQ2xhc3MsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpIHsKLQkJaWYgKGZlYXR1cmVJRCA+PSAwKSB7Ci0JCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChmZWF0dXJlSUQsIGJhc2VDbGFzcykpIHsKLQkJCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fTUlYRUQ6Ci0JCQkJCXJldHVybiAoKEludGVybmFsRUxpc3QpZ2V0TWl4ZWQoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotCQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCQlyZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldFhNTE5TUHJlZml4TWFwKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fWFNJX1NDSEVNQV9MT0NBVElPTjoKLQkJCQkJcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRYU0lTY2hlbWFMb2NhdGlvbigpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0JCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1RBWE9OT01JRVM6Ci0JCQkJCXJldHVybiBiYXNpY1NldFRheG9ub21pZXMobnVsbCwgbXNncyk7Ci0JCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1VERElfUkVHSVNUUlk6Ci0JCQkJCXJldHVybiBiYXNpY1NldFVkZGlSZWdpc3RyeShudWxsLCBtc2dzKTsKLQkJCQlkZWZhdWx0OgotCQkJCQlyZXR1cm4gZUR5bmFtaWNJbnZlcnNlUmVtb3ZlKG90aGVyRW5kLCBmZWF0dXJlSUQsIGJhc2VDbGFzcywgbXNncyk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGVCYXNpY1NldENvbnRhaW5lcihudWxsLCBmZWF0dXJlSUQsIG1zZ3MpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgZUdldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIGJvb2xlYW4gcmVzb2x2ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19NSVhFRDoKLQkJCQlyZXR1cm4gZ2V0TWl4ZWQoKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCXJldHVybiBnZXRYTUxOU1ByZWZpeE1hcCgpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1hTSV9TQ0hFTUFfTE9DQVRJT046Ci0JCQkJcmV0dXJuIGdldFhTSVNjaGVtYUxvY2F0aW9uKCk7Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fVEFYT05PTUlFUzoKLQkJCQlyZXR1cm4gZ2V0VGF4b25vbWllcygpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1VERElfUkVHSVNUUlk6Ci0JCQkJcmV0dXJuIGdldFVkZGlSZWdpc3RyeSgpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0dldChlRmVhdHVyZSwgcmVzb2x2ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIE9iamVjdCBuZXdWYWx1ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19NSVhFRDoKLQkJCQlnZXRNaXhlZCgpLmNsZWFyKCk7Ci0JCQkJZ2V0TWl4ZWQoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQOgotCQkJCWdldFhNTE5TUHJlZml4TWFwKCkuY2xlYXIoKTsKLQkJCQlnZXRYTUxOU1ByZWZpeE1hcCgpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1hTSV9TQ0hFTUFfTE9DQVRJT046Ci0JCQkJZ2V0WFNJU2NoZW1hTG9jYXRpb24oKS5jbGVhcigpOwotCQkJCWdldFhTSVNjaGVtYUxvY2F0aW9uKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fVEFYT05PTUlFUzoKLQkJCQlzZXRUYXhvbm9taWVzKChUYXhvbm9taWVzKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fVURESV9SRUdJU1RSWToKLQkJCQlzZXRVZGRpUmVnaXN0cnkoKFVERElSZWdpc3RyeSluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQl9Ci0JCWVEeW5hbWljU2V0KGVGZWF0dXJlLCBuZXdWYWx1ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVVuc2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19NSVhFRDoKLQkJCQlnZXRNaXhlZCgpLmNsZWFyKCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1hNTE5TX1BSRUZJWF9NQVA6Ci0JCQkJZ2V0WE1MTlNQcmVmaXhNYXAoKS5jbGVhcigpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19YU0lfU0NIRU1BX0xPQ0FUSU9OOgotCQkJCWdldFhTSVNjaGVtYUxvY2F0aW9uKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fVEFYT05PTUlFUzoKLQkJCQlzZXRUYXhvbm9taWVzKChUYXhvbm9taWVzKW51bGwpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19VRERJX1JFR0lTVFJZOgotCQkJCXNldFVkZGlSZWdpc3RyeSgoVURESVJlZ2lzdHJ5KW51bGwpOwotCQkJCXJldHVybjsKLQkJfQotCQllRHluYW1pY1Vuc2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX01JWEVEOgotCQkJCXJldHVybiBtaXhlZCAhPSBudWxsICYmICFtaXhlZC5pc0VtcHR5KCk7Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuRE9DVU1FTlRfUk9PVF9fWE1MTlNfUFJFRklYX01BUDoKLQkJCQlyZXR1cm4geE1MTlNQcmVmaXhNYXAgIT0gbnVsbCAmJiAheE1MTlNQcmVmaXhNYXAuaXNFbXB0eSgpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1RfX1hTSV9TQ0hFTUFfTE9DQVRJT046Ci0JCQkJcmV0dXJuIHhTSVNjaGVtYUxvY2F0aW9uICE9IG51bGwgJiYgIXhTSVNjaGVtYUxvY2F0aW9uLmlzRW1wdHkoKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19UQVhPTk9NSUVTOgotCQkJCXJldHVybiBnZXRUYXhvbm9taWVzKCkgIT0gbnVsbDsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UX19VRERJX1JFR0lTVFJZOgotCQkJCXJldHVybiBnZXRVZGRpUmVnaXN0cnkoKSAhPSBudWxsOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0lzU2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotCQlpZiAoZUlzUHJveHkoKSkgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLQkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0JCXJlc3VsdC5hcHBlbmQoIiAobWl4ZWQ6ICIpOwotCQlyZXN1bHQuYXBwZW5kKG1peGVkKTsKLQkJcmVzdWx0LmFwcGVuZCgnKScpOwotCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0JfQotCi19IC8vRG9jdW1lbnRSb290SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L2ltcGwvVGF4b25vbWllc0ltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9pbXBsL1RheG9ub21pZXNJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNzViZjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L2ltcGwvVGF4b25vbWllc0ltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFRheG9ub21pZXNJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo1MCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbkNoYWluOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVN0cnVjdHVyYWxGZWF0dXJlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FT2JqZWN0SW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVPYmplY3RDb250YWlubWVudEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkludGVybmFsRUxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVGF4b25vbWllczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VGF4b25vbWllczwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuaW1wbC5UYXhvbm9taWVzSW1wbCNnZXRUYXhvbm9teSA8ZW0+VGF4b25vbXk8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBUYXhvbm9taWVzSW1wbCBleHRlbmRzIEVPYmplY3RJbXBsIGltcGxlbWVudHMgVGF4b25vbWllcyB7Ci0JLyoqCi0JICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VGF4b25vbXkoKSA8ZW0+VGF4b25vbXk8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0VGF4b25vbXkoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBFTGlzdCB0YXhvbm9teSA9IG51bGw7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgVGF4b25vbWllc0ltcGwoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7Ci0JCXJldHVybiBVRERJUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXRUYXhvbm9taWVzKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVMaXN0IGdldFRheG9ub215KCkgewotCQlpZiAodGF4b25vbXkgPT0gbnVsbCkgewotCQkJdGF4b25vbXkgPSBuZXcgRU9iamVjdENvbnRhaW5tZW50RUxpc3QoVGF4b25vbXkuY2xhc3MsIHRoaXMsIFVERElSZWdpc3RyeVBhY2thZ2UuVEFYT05PTUlFU19fVEFYT05PTVkpOwotCQl9Ci0JCXJldHVybiB0YXhvbm9teTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gZUludmVyc2VSZW1vdmUoSW50ZXJuYWxFT2JqZWN0IG90aGVyRW5kLCBpbnQgZmVhdHVyZUlELCBDbGFzcyBiYXNlQ2xhc3MsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpIHsKLQkJaWYgKGZlYXR1cmVJRCA+PSAwKSB7Ci0JCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChmZWF0dXJlSUQsIGJhc2VDbGFzcykpIHsKLQkJCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVEFYT05PTUlFU19fVEFYT05PTVk6Ci0JCQkJCXJldHVybiAoKEludGVybmFsRUxpc3QpZ2V0VGF4b25vbXkoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotCQkJCWRlZmF1bHQ6Ci0JCQkJCXJldHVybiBlRHluYW1pY0ludmVyc2VSZW1vdmUob3RoZXJFbmQsIGZlYXR1cmVJRCwgYmFzZUNsYXNzLCBtc2dzKTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gZUJhc2ljU2V0Q29udGFpbmVyKG51bGwsIGZlYXR1cmVJRCwgbXNncyk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBlR2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSwgYm9vbGVhbiByZXNvbHZlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlRBWE9OT01JRVNfX1RBWE9OT01ZOgotCQkJCXJldHVybiBnZXRUYXhvbm9teSgpOwotCQl9Ci0JCXJldHVybiBlRHluYW1pY0dldChlRmVhdHVyZSwgcmVzb2x2ZSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgZVNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUsIE9iamVjdCBuZXdWYWx1ZSkgewotCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChlRmVhdHVyZSkpIHsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5UQVhPTk9NSUVTX19UQVhPTk9NWToKLQkJCQlnZXRUYXhvbm9teSgpLmNsZWFyKCk7Ci0JCQkJZ2V0VGF4b25vbXkoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJfQotCQllRHluYW1pY1NldChlRmVhdHVyZSwgbmV3VmFsdWUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGVVbnNldChFU3RydWN0dXJhbEZlYXR1cmUgZUZlYXR1cmUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVEFYT05PTUlFU19fVEFYT05PTVk6Ci0JCQkJZ2V0VGF4b25vbXkoKS5jbGVhcigpOwotCQkJCXJldHVybjsKLQkJfQotCQllRHluYW1pY1Vuc2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlRBWE9OT01JRVNfX1RBWE9OT01ZOgotCQkJCXJldHVybiB0YXhvbm9teSAhPSBudWxsICYmICF0YXhvbm9teS5pc0VtcHR5KCk7Ci0JCX0KLQkJcmV0dXJuIGVEeW5hbWljSXNTZXQoZUZlYXR1cmUpOwotCX0KLQotfSAvL1RheG9ub21pZXNJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvaW1wbC9VRERJUmVnaXN0cnlGYWN0b3J5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L2ltcGwvVURESVJlZ2lzdHJ5RmFjdG9yeUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU4MDMzYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvaW1wbC9VRERJUmVnaXN0cnlGYWN0b3J5SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBVRERJUmVnaXN0cnlGYWN0b3J5SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NTAgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVGYWN0b3J5SW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5Lio7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5GYWN0b3J5PC9iPi4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVURESVJlZ2lzdHJ5RmFjdG9yeUltcGwgZXh0ZW5kcyBFRmFjdG9yeUltcGwgaW1wbGVtZW50cyBVRERJUmVnaXN0cnlGYWN0b3J5IHsKLQkvKioKLQkgKiBDcmVhdGVzIGFuZCBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgVURESVJlZ2lzdHJ5RmFjdG9yeUltcGwoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVPYmplY3QgY3JlYXRlKEVDbGFzcyBlQ2xhc3MpIHsKLQkJc3dpdGNoIChlQ2xhc3MuZ2V0Q2xhc3NpZmllcklEKCkpIHsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5ET0NVTUVOVF9ST09UOiByZXR1cm4gY3JlYXRlRG9jdW1lbnRSb290KCk7Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVEFYT05PTUlFUzogcmV0dXJuIGNyZWF0ZVRheG9ub21pZXMoKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZOiByZXR1cm4gY3JlYXRlVURESVJlZ2lzdHJ5KCk7Ci0JCQlkZWZhdWx0OgotCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBjbGFzcyAnIiArIGVDbGFzcy5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRG9jdW1lbnRSb290IGNyZWF0ZURvY3VtZW50Um9vdCgpIHsKLQkJRG9jdW1lbnRSb290SW1wbCBkb2N1bWVudFJvb3QgPSBuZXcgRG9jdW1lbnRSb290SW1wbCgpOwotCQlyZXR1cm4gZG9jdW1lbnRSb290OwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBUYXhvbm9taWVzIGNyZWF0ZVRheG9ub21pZXMoKSB7Ci0JCVRheG9ub21pZXNJbXBsIHRheG9ub21pZXMgPSBuZXcgVGF4b25vbWllc0ltcGwoKTsKLQkJcmV0dXJuIHRheG9ub21pZXM7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFVERElSZWdpc3RyeSBjcmVhdGVVRERJUmVnaXN0cnkoKSB7Ci0JCVVERElSZWdpc3RyeUltcGwgdWRkaVJlZ2lzdHJ5ID0gbmV3IFVERElSZWdpc3RyeUltcGwoKTsKLQkJcmV0dXJuIHVkZGlSZWdpc3RyeTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgVURESVJlZ2lzdHJ5UGFja2FnZSBnZXRVRERJUmVnaXN0cnlQYWNrYWdlKCkgewotCQlyZXR1cm4gKFVERElSZWdpc3RyeVBhY2thZ2UpZ2V0RVBhY2thZ2UoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBkZXByZWNhdGVkCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBzdGF0aWMgVURESVJlZ2lzdHJ5UGFja2FnZSBnZXRQYWNrYWdlKCkgewotCQlyZXR1cm4gVURESVJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0U7Ci0JfQotCi19IC8vVURESVJlZ2lzdHJ5RmFjdG9yeUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9pbXBsL1VERElSZWdpc3RyeUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9pbXBsL1VERElSZWdpc3RyeUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhlMzhiMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvaW1wbC9VRERJUmVnaXN0cnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MzEgKzAsMCBAQAotLyoqCi0gKiA8Y29weXJpZ2h0PgotICogPC9jb3B5cmlnaHQ+Ci0gKgotICogJElkOiBVRERJUmVnaXN0cnlJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo1MCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb25DaGFpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVTdHJ1Y3R1cmFsRmVhdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLlJlZ2lzdHJ5SW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlRheG9ub21pZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeVBhY2thZ2U7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VRERJUmVnaXN0cnk8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuVURESVJlZ2lzdHJ5SW1wbCNnZXRWZXJzaW9uIDxlbT5WZXJzaW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLlVERElSZWdpc3RyeUltcGwjZ2V0RGlzY292ZXJ5VVJMIDxlbT5EaXNjb3ZlcnkgVVJMPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5pbXBsLlVERElSZWdpc3RyeUltcGwjZ2V0UHVibGljYXRpb25VUkwgPGVtPlB1YmxpY2F0aW9uIFVSTDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuaW1wbC5VRERJUmVnaXN0cnlJbXBsI2dldFNlY3VyZWREaXNjb3ZlcnlVUkwgPGVtPlNlY3VyZWQgRGlzY292ZXJ5IFVSTDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuaW1wbC5VRERJUmVnaXN0cnlJbXBsI2dldFNlY3VyZWRQdWJsaWNhdGlvblVSTCA8ZW0+U2VjdXJlZCBQdWJsaWNhdGlvbiBVUkw8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuVURESVJlZ2lzdHJ5SW1wbCNnZXREZWZhdWx0TG9naW4gPGVtPkRlZmF1bHQgTG9naW48L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuVURESVJlZ2lzdHJ5SW1wbCNnZXREZWZhdWx0UGFzc3dvcmQgPGVtPkRlZmF1bHQgUGFzc3dvcmQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGwuVURESVJlZ2lzdHJ5SW1wbCNnZXRUYXhvbm9taWVzIDxlbT5UYXhvbm9taWVzPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVURESVJlZ2lzdHJ5SW1wbCBleHRlbmRzIFJlZ2lzdHJ5SW1wbCBpbXBsZW1lbnRzIFVERElSZWdpc3RyeSB7Ci0JLyoqCi0JICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFZlcnNpb24oKSA8ZW0+VmVyc2lvbjwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0VmVyc2lvbigpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkVSU0lPTl9FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRWZXJzaW9uKCkgPGVtPlZlcnNpb248L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFZlcnNpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgdmVyc2lvbiA9IFZFUlNJT05fRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RGlzY292ZXJ5VVJMKCkgPGVtPkRpc2NvdmVyeSBVUkw8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldERpc2NvdmVyeVVSTCgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgRElTQ09WRVJZX1VSTF9FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXREaXNjb3ZlcnlVUkwoKSA8ZW0+RGlzY292ZXJ5IFVSTDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0RGlzY292ZXJ5VVJMKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgU3RyaW5nIGRpc2NvdmVyeVVSTCA9IERJU0NPVkVSWV9VUkxfRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0UHVibGljYXRpb25VUkwoKSA8ZW0+UHVibGljYXRpb24gVVJMPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXRQdWJsaWNhdGlvblVSTCgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFVCTElDQVRJT05fVVJMX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFB1YmxpY2F0aW9uVVJMKCkgPGVtPlB1YmxpY2F0aW9uIFVSTDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0UHVibGljYXRpb25VUkwoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgcHVibGljYXRpb25VUkwgPSBQVUJMSUNBVElPTl9VUkxfRURFRkFVTFQ7Ci0KLQkvKioKLQkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0U2VjdXJlZERpc2NvdmVyeVVSTCgpIDxlbT5TZWN1cmVkIERpc2NvdmVyeSBVUkw8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFNlY3VyZWREaXNjb3ZlcnlVUkwoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFNFQ1VSRURfRElTQ09WRVJZX1VSTF9FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRTZWN1cmVkRGlzY292ZXJ5VVJMKCkgPGVtPlNlY3VyZWQgRGlzY292ZXJ5IFVSTDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0U2VjdXJlZERpc2NvdmVyeVVSTCgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyBzZWN1cmVkRGlzY292ZXJ5VVJMID0gU0VDVVJFRF9ESVNDT1ZFUllfVVJMX0VERUZBVUxUOwotCi0JLyoqCi0JICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFNlY3VyZWRQdWJsaWNhdGlvblVSTCgpIDxlbT5TZWN1cmVkIFB1YmxpY2F0aW9uIFVSTDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0U2VjdXJlZFB1YmxpY2F0aW9uVVJMKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBTRUNVUkVEX1BVQkxJQ0FUSU9OX1VSTF9FREVGQVVMVCA9IG51bGw7Ci0KLQkvKioKLQkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRTZWN1cmVkUHVibGljYXRpb25VUkwoKSA8ZW0+U2VjdXJlZCBQdWJsaWNhdGlvbiBVUkw8L2VtPn0nIGF0dHJpYnV0ZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgI2dldFNlY3VyZWRQdWJsaWNhdGlvblVSTCgpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyBzZWN1cmVkUHVibGljYXRpb25VUkwgPSBTRUNVUkVEX1BVQkxJQ0FUSU9OX1VSTF9FREVGQVVMVDsKLQotCS8qKgotCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXREZWZhdWx0TG9naW4oKSA8ZW0+RGVmYXVsdCBMb2dpbjwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0RGVmYXVsdExvZ2luKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0xPR0lOX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldERlZmF1bHRMb2dpbigpIDxlbT5EZWZhdWx0IExvZ2luPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXREZWZhdWx0TG9naW4oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgZGVmYXVsdExvZ2luID0gREVGQVVMVF9MT0dJTl9FREVGQVVMVDsKLQotCS8qKgotCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXREZWZhdWx0UGFzc3dvcmQoKSA8ZW0+RGVmYXVsdCBQYXNzd29yZDwvZW0+fScgYXR0cmlidXRlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0RGVmYXVsdFBhc3N3b3JkKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICogQG9yZGVyZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1BBU1NXT1JEX0VERUZBVUxUID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldERlZmF1bHRQYXNzd29yZCgpIDxlbT5EZWZhdWx0IFBhc3N3b3JkPC9lbT59JyBhdHRyaWJ1dGUuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNnZXREZWZhdWx0UGFzc3dvcmQoKQotCSAqIEBnZW5lcmF0ZWQKLQkgKiBAb3JkZXJlZAotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgZGVmYXVsdFBhc3N3b3JkID0gREVGQVVMVF9QQVNTV09SRF9FREVGQVVMVDsKLQotCS8qKgotCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFRheG9ub21pZXMoKSA8ZW0+VGF4b25vbWllczwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHNlZSAjZ2V0VGF4b25vbWllcygpCi0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JcHJvdGVjdGVkIFRheG9ub21pZXMgdGF4b25vbWllcyA9IG51bGw7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgVURESVJlZ2lzdHJ5SW1wbCgpIHsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsKLQkJcmV0dXJuIFVERElSZWdpc3RyeVBhY2thZ2UuZUlOU1RBTkNFLmdldFVERElSZWdpc3RyeSgpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0VmVyc2lvbigpIHsKLQkJcmV0dXJuIHZlcnNpb247Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0VmVyc2lvbihTdHJpbmcgbmV3VmVyc2lvbikgewotCQlTdHJpbmcgb2xkVmVyc2lvbiA9IHZlcnNpb247Ci0JCXZlcnNpb24gPSBuZXdWZXJzaW9uOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1ZFUlNJT04sIG9sZFZlcnNpb24sIHZlcnNpb24pKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldERpc2NvdmVyeVVSTCgpIHsKLQkJcmV0dXJuIGRpc2NvdmVyeVVSTDsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXREaXNjb3ZlcnlVUkwoU3RyaW5nIG5ld0Rpc2NvdmVyeVVSTCkgewotCQlTdHJpbmcgb2xkRGlzY292ZXJ5VVJMID0gZGlzY292ZXJ5VVJMOwotCQlkaXNjb3ZlcnlVUkwgPSBuZXdEaXNjb3ZlcnlVUkw7Ci0JCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fRElTQ09WRVJZX1VSTCwgb2xkRGlzY292ZXJ5VVJMLCBkaXNjb3ZlcnlVUkwpKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFB1YmxpY2F0aW9uVVJMKCkgewotCQlyZXR1cm4gcHVibGljYXRpb25VUkw7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0UHVibGljYXRpb25VUkwoU3RyaW5nIG5ld1B1YmxpY2F0aW9uVVJMKSB7Ci0JCVN0cmluZyBvbGRQdWJsaWNhdGlvblVSTCA9IHB1YmxpY2F0aW9uVVJMOwotCQlwdWJsaWNhdGlvblVSTCA9IG5ld1B1YmxpY2F0aW9uVVJMOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1BVQkxJQ0FUSU9OX1VSTCwgb2xkUHVibGljYXRpb25VUkwsIHB1YmxpY2F0aW9uVVJMKSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRTZWN1cmVkRGlzY292ZXJ5VVJMKCkgewotCQlyZXR1cm4gc2VjdXJlZERpc2NvdmVyeVVSTDsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTZWN1cmVkRGlzY292ZXJ5VVJMKFN0cmluZyBuZXdTZWN1cmVkRGlzY292ZXJ5VVJMKSB7Ci0JCVN0cmluZyBvbGRTZWN1cmVkRGlzY292ZXJ5VVJMID0gc2VjdXJlZERpc2NvdmVyeVVSTDsKLQkJc2VjdXJlZERpc2NvdmVyeVVSTCA9IG5ld1NlY3VyZWREaXNjb3ZlcnlVUkw7Ci0JCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fU0VDVVJFRF9ESVNDT1ZFUllfVVJMLCBvbGRTZWN1cmVkRGlzY292ZXJ5VVJMLCBzZWN1cmVkRGlzY292ZXJ5VVJMKSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRTZWN1cmVkUHVibGljYXRpb25VUkwoKSB7Ci0JCXJldHVybiBzZWN1cmVkUHVibGljYXRpb25VUkw7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0U2VjdXJlZFB1YmxpY2F0aW9uVVJMKFN0cmluZyBuZXdTZWN1cmVkUHVibGljYXRpb25VUkwpIHsKLQkJU3RyaW5nIG9sZFNlY3VyZWRQdWJsaWNhdGlvblVSTCA9IHNlY3VyZWRQdWJsaWNhdGlvblVSTDsKLQkJc2VjdXJlZFB1YmxpY2F0aW9uVVJMID0gbmV3U2VjdXJlZFB1YmxpY2F0aW9uVVJMOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1NFQ1VSRURfUFVCTElDQVRJT05fVVJMLCBvbGRTZWN1cmVkUHVibGljYXRpb25VUkwsIHNlY3VyZWRQdWJsaWNhdGlvblVSTCkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdExvZ2luKCkgewotCQlyZXR1cm4gZGVmYXVsdExvZ2luOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldERlZmF1bHRMb2dpbihTdHJpbmcgbmV3RGVmYXVsdExvZ2luKSB7Ci0JCVN0cmluZyBvbGREZWZhdWx0TG9naW4gPSBkZWZhdWx0TG9naW47Ci0JCWRlZmF1bHRMb2dpbiA9IG5ld0RlZmF1bHRMb2dpbjsKLQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19ERUZBVUxUX0xPR0lOLCBvbGREZWZhdWx0TG9naW4sIGRlZmF1bHRMb2dpbikpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdFBhc3N3b3JkKCkgewotCQlyZXR1cm4gZGVmYXVsdFBhc3N3b3JkOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldERlZmF1bHRQYXNzd29yZChTdHJpbmcgbmV3RGVmYXVsdFBhc3N3b3JkKSB7Ci0JCVN0cmluZyBvbGREZWZhdWx0UGFzc3dvcmQgPSBkZWZhdWx0UGFzc3dvcmQ7Ci0JCWRlZmF1bHRQYXNzd29yZCA9IG5ld0RlZmF1bHRQYXNzd29yZDsKLQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19ERUZBVUxUX1BBU1NXT1JELCBvbGREZWZhdWx0UGFzc3dvcmQsIGRlZmF1bHRQYXNzd29yZCkpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBUYXhvbm9taWVzIGdldFRheG9ub21pZXMoKSB7Ci0JCXJldHVybiB0YXhvbm9taWVzOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldFRheG9ub21pZXMoVGF4b25vbWllcyBuZXdUYXhvbm9taWVzLCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKSB7Ci0JCVRheG9ub21pZXMgb2xkVGF4b25vbWllcyA9IHRheG9ub21pZXM7Ci0JCXRheG9ub21pZXMgPSBuZXdUYXhvbm9taWVzOwotCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpIHsKLQkJCUVOb3RpZmljYXRpb25JbXBsIG5vdGlmaWNhdGlvbiA9IG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1RBWE9OT01JRVMsIG9sZFRheG9ub21pZXMsIG5ld1RheG9ub21pZXMpOwotCQkJaWYgKG1zZ3MgPT0gbnVsbCkgbXNncyA9IG5vdGlmaWNhdGlvbjsgZWxzZSBtc2dzLmFkZChub3RpZmljYXRpb24pOwotCQl9Ci0JCXJldHVybiBtc2dzOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldFRheG9ub21pZXMoVGF4b25vbWllcyBuZXdUYXhvbm9taWVzKSB7Ci0JCWlmIChuZXdUYXhvbm9taWVzICE9IHRheG9ub21pZXMpIHsKLQkJCU5vdGlmaWNhdGlvbkNoYWluIG1zZ3MgPSBudWxsOwotCQkJaWYgKHRheG9ub21pZXMgIT0gbnVsbCkKLQkJCQltc2dzID0gKChJbnRlcm5hbEVPYmplY3QpdGF4b25vbWllcykuZUludmVyc2VSZW1vdmUodGhpcywgRU9QUE9TSVRFX0ZFQVRVUkVfQkFTRSAtIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fVEFYT05PTUlFUywgbnVsbCwgbXNncyk7Ci0JCQlpZiAobmV3VGF4b25vbWllcyAhPSBudWxsKQotCQkJCW1zZ3MgPSAoKEludGVybmFsRU9iamVjdCluZXdUYXhvbm9taWVzKS5lSW52ZXJzZUFkZCh0aGlzLCBFT1BQT1NJVEVfRkVBVFVSRV9CQVNFIC0gVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19UQVhPTk9NSUVTLCBudWxsLCBtc2dzKTsKLQkJCW1zZ3MgPSBiYXNpY1NldFRheG9ub21pZXMobmV3VGF4b25vbWllcywgbXNncyk7Ci0JCQlpZiAobXNncyAhPSBudWxsKSBtc2dzLmRpc3BhdGNoKCk7Ci0JCX0KLQkJZWxzZSBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0JCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1RBWE9OT01JRVMsIG5ld1RheG9ub21pZXMsIG5ld1RheG9ub21pZXMpKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gZUludmVyc2VSZW1vdmUoSW50ZXJuYWxFT2JqZWN0IG90aGVyRW5kLCBpbnQgZmVhdHVyZUlELCBDbGFzcyBiYXNlQ2xhc3MsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpIHsKLQkJaWYgKGZlYXR1cmVJRCA+PSAwKSB7Ci0JCQlzd2l0Y2ggKGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChmZWF0dXJlSUQsIGJhc2VDbGFzcykpIHsKLQkJCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fTkFNRToKLQkJCQkJcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXROYW1lKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLQkJCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fREVTQ1JJUFRJT046Ci0JCQkJCXJldHVybiAoKEludGVybmFsRUxpc3QpZ2V0RGVzY3JpcHRpb24oKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotCQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19UQVhPTk9NSUVTOgotCQkJCQlyZXR1cm4gYmFzaWNTZXRUYXhvbm9taWVzKG51bGwsIG1zZ3MpOwotCQkJCWRlZmF1bHQ6Ci0JCQkJCXJldHVybiBlRHluYW1pY0ludmVyc2VSZW1vdmUob3RoZXJFbmQsIGZlYXR1cmVJRCwgYmFzZUNsYXNzLCBtc2dzKTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gZUJhc2ljU2V0Q29udGFpbmVyKG51bGwsIGZlYXR1cmVJRCwgbXNncyk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBlR2V0KEVTdHJ1Y3R1cmFsRmVhdHVyZSBlRmVhdHVyZSwgYm9vbGVhbiByZXNvbHZlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX05BTUU6Ci0JCQkJcmV0dXJuIGdldE5hbWUoKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19ERVNDUklQVElPTjoKLQkJCQlyZXR1cm4gZ2V0RGVzY3JpcHRpb24oKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19JRDoKLQkJCQlyZXR1cm4gZ2V0SWQoKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19MT0NBVElPTjoKLQkJCQlyZXR1cm4gZ2V0TG9jYXRpb24oKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19SRUY6Ci0JCQkJcmV0dXJuIGdldFJlZigpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1ZFUlNJT046Ci0JCQkJcmV0dXJuIGdldFZlcnNpb24oKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19ESVNDT1ZFUllfVVJMOgotCQkJCXJldHVybiBnZXREaXNjb3ZlcnlVUkwoKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19QVUJMSUNBVElPTl9VUkw6Ci0JCQkJcmV0dXJuIGdldFB1YmxpY2F0aW9uVVJMKCk7Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fU0VDVVJFRF9ESVNDT1ZFUllfVVJMOgotCQkJCXJldHVybiBnZXRTZWN1cmVkRGlzY292ZXJ5VVJMKCk7Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fU0VDVVJFRF9QVUJMSUNBVElPTl9VUkw6Ci0JCQkJcmV0dXJuIGdldFNlY3VyZWRQdWJsaWNhdGlvblVSTCgpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX0RFRkFVTFRfTE9HSU46Ci0JCQkJcmV0dXJuIGdldERlZmF1bHRMb2dpbigpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX0RFRkFVTFRfUEFTU1dPUkQ6Ci0JCQkJcmV0dXJuIGdldERlZmF1bHRQYXNzd29yZCgpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1RBWE9OT01JRVM6Ci0JCQkJcmV0dXJuIGdldFRheG9ub21pZXMoKTsKLQkJfQotCQlyZXR1cm4gZUR5bmFtaWNHZXQoZUZlYXR1cmUsIHJlc29sdmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGVTZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlLCBPYmplY3QgbmV3VmFsdWUpIHsKLQkJc3dpdGNoIChlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoZUZlYXR1cmUpKSB7Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fTkFNRToKLQkJCQlnZXROYW1lKCkuY2xlYXIoKTsKLQkJCQlnZXROYW1lKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fREVTQ1JJUFRJT046Ci0JCQkJZ2V0RGVzY3JpcHRpb24oKS5jbGVhcigpOwotCQkJCWdldERlc2NyaXB0aW9uKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fSUQ6Ci0JCQkJc2V0SWQoKFN0cmluZyluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX0xPQ0FUSU9OOgotCQkJCXNldExvY2F0aW9uKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19SRUY6Ci0JCQkJc2V0UmVmKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19WRVJTSU9OOgotCQkJCXNldFZlcnNpb24oKFN0cmluZyluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX0RJU0NPVkVSWV9VUkw6Ci0JCQkJc2V0RGlzY292ZXJ5VVJMKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19QVUJMSUNBVElPTl9VUkw6Ci0JCQkJc2V0UHVibGljYXRpb25VUkwoKFN0cmluZyluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1NFQ1VSRURfRElTQ09WRVJZX1VSTDoKLQkJCQlzZXRTZWN1cmVkRGlzY292ZXJ5VVJMKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19TRUNVUkVEX1BVQkxJQ0FUSU9OX1VSTDoKLQkJCQlzZXRTZWN1cmVkUHVibGljYXRpb25VUkwoKFN0cmluZyluZXdWYWx1ZSk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX0RFRkFVTFRfTE9HSU46Ci0JCQkJc2V0RGVmYXVsdExvZ2luKChTdHJpbmcpbmV3VmFsdWUpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19ERUZBVUxUX1BBU1NXT1JEOgotCQkJCXNldERlZmF1bHRQYXNzd29yZCgoU3RyaW5nKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fVEFYT05PTUlFUzoKLQkJCQlzZXRUYXhvbm9taWVzKChUYXhvbm9taWVzKW5ld1ZhbHVlKTsKLQkJCQlyZXR1cm47Ci0JCX0KLQkJZUR5bmFtaWNTZXQoZUZlYXR1cmUsIG5ld1ZhbHVlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBlVW5zZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX05BTUU6Ci0JCQkJZ2V0TmFtZSgpLmNsZWFyKCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX0RFU0NSSVBUSU9OOgotCQkJCWdldERlc2NyaXB0aW9uKCkuY2xlYXIoKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fSUQ6Ci0JCQkJc2V0SWQoSURfRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19MT0NBVElPTjoKLQkJCQlzZXRMb2NhdGlvbihMT0NBVElPTl9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1JFRjoKLQkJCQlzZXRSZWYoUkVGX0VERUZBVUxUKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fVkVSU0lPTjoKLQkJCQlzZXRWZXJzaW9uKFZFUlNJT05fRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19ESVNDT1ZFUllfVVJMOgotCQkJCXNldERpc2NvdmVyeVVSTChESVNDT1ZFUllfVVJMX0VERUZBVUxUKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fUFVCTElDQVRJT05fVVJMOgotCQkJCXNldFB1YmxpY2F0aW9uVVJMKFBVQkxJQ0FUSU9OX1VSTF9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1NFQ1VSRURfRElTQ09WRVJZX1VSTDoKLQkJCQlzZXRTZWN1cmVkRGlzY292ZXJ5VVJMKFNFQ1VSRURfRElTQ09WRVJZX1VSTF9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1NFQ1VSRURfUFVCTElDQVRJT05fVVJMOgotCQkJCXNldFNlY3VyZWRQdWJsaWNhdGlvblVSTChTRUNVUkVEX1BVQkxJQ0FUSU9OX1VSTF9FREVGQVVMVCk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX0RFRkFVTFRfTE9HSU46Ci0JCQkJc2V0RGVmYXVsdExvZ2luKERFRkFVTFRfTE9HSU5fRURFRkFVTFQpOwotCQkJCXJldHVybjsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19ERUZBVUxUX1BBU1NXT1JEOgotCQkJCXNldERlZmF1bHRQYXNzd29yZChERUZBVUxUX1BBU1NXT1JEX0VERUZBVUxUKTsKLQkJCQlyZXR1cm47Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fVEFYT05PTUlFUzoKLQkJCQlzZXRUYXhvbm9taWVzKChUYXhvbm9taWVzKW51bGwpOwotCQkJCXJldHVybjsKLQkJfQotCQllRHluYW1pY1Vuc2V0KGVGZWF0dXJlKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoRVN0cnVjdHVyYWxGZWF0dXJlIGVGZWF0dXJlKSB7Ci0JCXN3aXRjaCAoZURlcml2ZWRTdHJ1Y3R1cmFsRmVhdHVyZUlEKGVGZWF0dXJlKSkgewotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX05BTUU6Ci0JCQkJcmV0dXJuIG5hbWUgIT0gbnVsbCAmJiAhbmFtZS5pc0VtcHR5KCk7Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fREVTQ1JJUFRJT046Ci0JCQkJcmV0dXJuIGRlc2NyaXB0aW9uICE9IG51bGwgJiYgIWRlc2NyaXB0aW9uLmlzRW1wdHkoKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19JRDoKLQkJCQlyZXR1cm4gSURfRURFRkFVTFQgPT0gbnVsbCA/IGlkICE9IG51bGwgOiAhSURfRURFRkFVTFQuZXF1YWxzKGlkKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19MT0NBVElPTjoKLQkJCQlyZXR1cm4gTE9DQVRJT05fRURFRkFVTFQgPT0gbnVsbCA/IGxvY2F0aW9uICE9IG51bGwgOiAhTE9DQVRJT05fRURFRkFVTFQuZXF1YWxzKGxvY2F0aW9uKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19SRUY6Ci0JCQkJcmV0dXJuIFJFRl9FREVGQVVMVCA9PSBudWxsID8gcmVmICE9IG51bGwgOiAhUkVGX0VERUZBVUxULmVxdWFscyhyZWYpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1ZFUlNJT046Ci0JCQkJcmV0dXJuIFZFUlNJT05fRURFRkFVTFQgPT0gbnVsbCA/IHZlcnNpb24gIT0gbnVsbCA6ICFWRVJTSU9OX0VERUZBVUxULmVxdWFscyh2ZXJzaW9uKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19ESVNDT1ZFUllfVVJMOgotCQkJCXJldHVybiBESVNDT1ZFUllfVVJMX0VERUZBVUxUID09IG51bGwgPyBkaXNjb3ZlcnlVUkwgIT0gbnVsbCA6ICFESVNDT1ZFUllfVVJMX0VERUZBVUxULmVxdWFscyhkaXNjb3ZlcnlVUkwpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1BVQkxJQ0FUSU9OX1VSTDoKLQkJCQlyZXR1cm4gUFVCTElDQVRJT05fVVJMX0VERUZBVUxUID09IG51bGwgPyBwdWJsaWNhdGlvblVSTCAhPSBudWxsIDogIVBVQkxJQ0FUSU9OX1VSTF9FREVGQVVMVC5lcXVhbHMocHVibGljYXRpb25VUkwpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX1NFQ1VSRURfRElTQ09WRVJZX1VSTDoKLQkJCQlyZXR1cm4gU0VDVVJFRF9ESVNDT1ZFUllfVVJMX0VERUZBVUxUID09IG51bGwgPyBzZWN1cmVkRGlzY292ZXJ5VVJMICE9IG51bGwgOiAhU0VDVVJFRF9ESVNDT1ZFUllfVVJMX0VERUZBVUxULmVxdWFscyhzZWN1cmVkRGlzY292ZXJ5VVJMKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19TRUNVUkVEX1BVQkxJQ0FUSU9OX1VSTDoKLQkJCQlyZXR1cm4gU0VDVVJFRF9QVUJMSUNBVElPTl9VUkxfRURFRkFVTFQgPT0gbnVsbCA/IHNlY3VyZWRQdWJsaWNhdGlvblVSTCAhPSBudWxsIDogIVNFQ1VSRURfUFVCTElDQVRJT05fVVJMX0VERUZBVUxULmVxdWFscyhzZWN1cmVkUHVibGljYXRpb25VUkwpOwotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlVERElfUkVHSVNUUllfX0RFRkFVTFRfTE9HSU46Ci0JCQkJcmV0dXJuIERFRkFVTFRfTE9HSU5fRURFRkFVTFQgPT0gbnVsbCA/IGRlZmF1bHRMb2dpbiAhPSBudWxsIDogIURFRkFVTFRfTE9HSU5fRURFRkFVTFQuZXF1YWxzKGRlZmF1bHRMb2dpbik7Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWV9fREVGQVVMVF9QQVNTV09SRDoKLQkJCQlyZXR1cm4gREVGQVVMVF9QQVNTV09SRF9FREVGQVVMVCA9PSBudWxsID8gZGVmYXVsdFBhc3N3b3JkICE9IG51bGwgOiAhREVGQVVMVF9QQVNTV09SRF9FREVGQVVMVC5lcXVhbHMoZGVmYXVsdFBhc3N3b3JkKTsKLQkJCWNhc2UgVURESVJlZ2lzdHJ5UGFja2FnZS5VRERJX1JFR0lTVFJZX19UQVhPTk9NSUVTOgotCQkJCXJldHVybiB0YXhvbm9taWVzICE9IG51bGw7Ci0JCX0KLQkJcmV0dXJuIGVEeW5hbWljSXNTZXQoZUZlYXR1cmUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0JCWlmIChlSXNQcm94eSgpKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotCQlTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLQkJcmVzdWx0LmFwcGVuZCgiICh2ZXJzaW9uOiAiKTsKLQkJcmVzdWx0LmFwcGVuZCh2ZXJzaW9uKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCBkaXNjb3ZlcnlVUkw6ICIpOwotCQlyZXN1bHQuYXBwZW5kKGRpc2NvdmVyeVVSTCk7Ci0JCXJlc3VsdC5hcHBlbmQoIiwgcHVibGljYXRpb25VUkw6ICIpOwotCQlyZXN1bHQuYXBwZW5kKHB1YmxpY2F0aW9uVVJMKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCBzZWN1cmVkRGlzY292ZXJ5VVJMOiAiKTsKLQkJcmVzdWx0LmFwcGVuZChzZWN1cmVkRGlzY292ZXJ5VVJMKTsKLQkJcmVzdWx0LmFwcGVuZCgiLCBzZWN1cmVkUHVibGljYXRpb25VUkw6ICIpOwotCQlyZXN1bHQuYXBwZW5kKHNlY3VyZWRQdWJsaWNhdGlvblVSTCk7Ci0JCXJlc3VsdC5hcHBlbmQoIiwgZGVmYXVsdExvZ2luOiAiKTsKLQkJcmVzdWx0LmFwcGVuZChkZWZhdWx0TG9naW4pOwotCQlyZXN1bHQuYXBwZW5kKCIsIGRlZmF1bHRQYXNzd29yZDogIik7Ci0JCXJlc3VsdC5hcHBlbmQoZGVmYXVsdFBhc3N3b3JkKTsKLQkJcmVzdWx0LmFwcGVuZCgnKScpOwotCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0JfQotCi19IC8vVURESVJlZ2lzdHJ5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L2ltcGwvVURESVJlZ2lzdHJ5UGFja2FnZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS9pbXBsL1VERElSZWdpc3RyeVBhY2thZ2VJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NzUyOGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L2ltcGwvVURESVJlZ2lzdHJ5UGFja2FnZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU0MiArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFVERElSZWdpc3RyeVBhY2thZ2VJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo1MCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVQYWNrYWdlSW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5YTUxUeXBlUGFja2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5pbXBsLlhNTFR5cGVQYWNrYWdlSW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnlQYWNrYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5pbXBsLlJlZ2lzdHJ5UGFja2FnZUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguaW1wbC5SVEluZGV4UGFja2FnZUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuaW1wbC5UYXhvbm9teVBhY2thZ2VJbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuRG9jdW1lbnRSb290OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlRheG9ub21pZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeUZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5UGFja2FnZTsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBVRERJUmVnaXN0cnlQYWNrYWdlSW1wbCBleHRlbmRzIEVQYWNrYWdlSW1wbCBpbXBsZW1lbnRzIFVERElSZWdpc3RyeVBhY2thZ2UgewotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgRUNsYXNzIGRvY3VtZW50Um9vdEVDbGFzcyA9IG51bGw7Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcml2YXRlIEVDbGFzcyB0YXhvbm9taWVzRUNsYXNzID0gbnVsbDsKLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgRUNsYXNzIHVkZGlSZWdpc3RyeUVDbGFzcyA9IG51bGw7Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPiwgcmVnaXN0ZXJlZCB3aXRoCi0JICoge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeSBFUGFja2FnZS5SZWdpc3RyeX0gYnkgdGhlIHBhY2thZ2UKLQkgKiBwYWNrYWdlIFVSSSB2YWx1ZS4KLQkgKiA8cD5Ob3RlOiB0aGUgY29ycmVjdCB3YXkgdG8gY3JlYXRlIHRoZSBwYWNrYWdlIGlzIHZpYSB0aGUgc3RhdGljCi0JICogZmFjdG9yeSBtZXRob2Qge0BsaW5rICNpbml0IGluaXQoKX0sIHdoaWNoIGFsc28gcGVyZm9ybXMKLQkgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLAotCSAqIGlmIG9uZSBhbHJlYWR5IGV4aXN0cy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBzZWUgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlI2VOU19VUkkKLQkgKiBAc2VlICNpbml0KCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBVRERJUmVnaXN0cnlQYWNrYWdlSW1wbCgpIHsKLQkJc3VwZXIoZU5TX1VSSSwgVURESVJlZ2lzdHJ5RmFjdG9yeS5lSU5TVEFOQ0UpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNJbml0ZWQgPSBmYWxzZTsKLQotCS8qKgotCSAqIENyZWF0ZXMsIHJlZ2lzdGVycywgYW5kIGluaXRpYWxpemVzIHRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhpcwotCSAqIG1vZGVsLCBhbmQgZm9yIGFueSBvdGhlcnMgdXBvbiB3aGljaCBpdCBkZXBlbmRzLiAgU2ltcGxlCi0JICogZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQgYnkgY2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhbGwKLQkgKiBkZXBlbmRlbnQgcGFja2FnZXMgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuICBUaGlzIG1ldGhvZCBkcml2ZXMKLQkgKiBpbml0aWFsaXphdGlvbiBmb3IgaW50ZXJkZXBlbmRlbnQgcGFja2FnZXMgZGlyZWN0bHksIGluIHBhcmFsbGVsCi0JICogd2l0aCB0aGlzIHBhY2thZ2UsIGl0c2VsZi4KLQkgKiA8cD5PZiB0aGlzIHBhY2thZ2UgYW5kIGl0cyBpbnRlcmRlcGVuZGVuY2llcywgYWxsIHBhY2thZ2VzIHdoaWNoCi0JICogaGF2ZSBub3QgeWV0IGJlZW4gcmVnaXN0ZXJlZCBieSB0aGVpciBVUkkgdmFsdWVzIGFyZSBmaXJzdCBjcmVhdGVkCi0JICogYW5kIHJlZ2lzdGVyZWQuICBUaGUgcGFja2FnZXMgYXJlIHRoZW4gaW5pdGlhbGl6ZWQgaW4gdHdvIHN0ZXBzOgotCSAqIG1ldGEtbW9kZWwgb2JqZWN0cyBmb3IgYWxsIG9mIHRoZSBwYWNrYWdlcyBhcmUgY3JlYXRlZCBiZWZvcmUgYW55Ci0JICogYXJlIGluaXRpYWxpemVkLCBzaW5jZSBvbmUgcGFja2FnZSdzIG1ldGEtbW9kZWwgb2JqZWN0cyBtYXkgcmVmZXIgdG8KLQkgKiB0aG9zZSBvZiBhbm90aGVyLgotCSAqIDxwPkludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgd2lsbCBub3QgYWZmZWN0IGFueSBwYWNrYWdlcyB0aGF0IGhhdmUKLQkgKiBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAc2VlICNlTlNfVVJJCi0JICogQHNlZSAjY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkKLQkgKiBAc2VlICNpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIHN0YXRpYyBVRERJUmVnaXN0cnlQYWNrYWdlIGluaXQoKSB7Ci0JCWlmIChpc0luaXRlZCkgcmV0dXJuIChVRERJUmVnaXN0cnlQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFVERElSZWdpc3RyeVBhY2thZ2UuZU5TX1VSSSk7Ci0KLQkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgcGFja2FnZQotCQlVRERJUmVnaXN0cnlQYWNrYWdlSW1wbCB0aGVVRERJUmVnaXN0cnlQYWNrYWdlID0gKFVERElSZWdpc3RyeVBhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShlTlNfVVJJKSBpbnN0YW5jZW9mIFVERElSZWdpc3RyeVBhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoZU5TX1VSSSkgOiBuZXcgVURESVJlZ2lzdHJ5UGFja2FnZUltcGwoKSk7Ci0KLQkJaXNJbml0ZWQgPSB0cnVlOwotCi0JCS8vIEluaXRpYWxpemUgc2ltcGxlIGRlcGVuZGVuY2llcwotCQlYTUxUeXBlUGFja2FnZUltcGwuaW5pdCgpOwotCi0JCS8vIE9idGFpbiBvciBjcmVhdGUgYW5kIHJlZ2lzdGVyIGludGVyZGVwZW5kZW5jaWVzCi0JCVJUSW5kZXhQYWNrYWdlSW1wbCB0aGVSVEluZGV4UGFja2FnZSA9IChSVEluZGV4UGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJUSW5kZXhQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUlRJbmRleFBhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUlRJbmRleFBhY2thZ2UuZU5TX1VSSSkgOiBSVEluZGV4UGFja2FnZUltcGwuZUlOU1RBTkNFKTsKLQkJVGF4b25vbXlQYWNrYWdlSW1wbCB0aGVUYXhvbm9teVBhY2thZ2UgPSAoVGF4b25vbXlQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVGF4b25vbXlQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgVGF4b25vbXlQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFRheG9ub215UGFja2FnZS5lTlNfVVJJKSA6IFRheG9ub215UGFja2FnZUltcGwuZUlOU1RBTkNFKTsKLQkJUmVnaXN0cnlQYWNrYWdlSW1wbCB0aGVSZWdpc3RyeVBhY2thZ2UgPSAoUmVnaXN0cnlQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUmVnaXN0cnlQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUmVnaXN0cnlQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJlZ2lzdHJ5UGFja2FnZS5lTlNfVVJJKSA6IFJlZ2lzdHJ5UGFja2FnZUltcGwuZUlOU1RBTkNFKTsKLQotCQkvLyBDcmVhdGUgcGFja2FnZSBtZXRhLWRhdGEgb2JqZWN0cwotCQl0aGVVRERJUmVnaXN0cnlQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVSVEluZGV4UGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsKLQkJdGhlVGF4b25vbXlQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVSZWdpc3RyeVBhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7Ci0KLQkJLy8gSW5pdGlhbGl6ZSBjcmVhdGVkIG1ldGEtZGF0YQotCQl0aGVVRERJUmVnaXN0cnlQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsKLQkJdGhlUlRJbmRleFBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVUYXhvbm9teVBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCQl0aGVSZWdpc3RyeVBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCi0JCS8vIE1hcmsgbWV0YS1kYXRhIHRvIGluZGljYXRlIGl0IGNhbid0IGJlIGNoYW5nZWQKLQkJdGhlVURESVJlZ2lzdHJ5UGFja2FnZS5mcmVlemUoKTsKLQotCQlyZXR1cm4gdGhlVURESVJlZ2lzdHJ5UGFja2FnZTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUNsYXNzIGdldERvY3VtZW50Um9vdCgpIHsKLQkJcmV0dXJuIGRvY3VtZW50Um9vdEVDbGFzczsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXREb2N1bWVudFJvb3RfTWl4ZWQoKSB7Ci0JCXJldHVybiAoRUF0dHJpYnV0ZSlkb2N1bWVudFJvb3RFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfWE1MTlNQcmVmaXhNYXAoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSlkb2N1bWVudFJvb3RFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfWFNJU2NoZW1hTG9jYXRpb24oKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSlkb2N1bWVudFJvb3RFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRVJlZmVyZW5jZSBnZXREb2N1bWVudFJvb3RfVGF4b25vbWllcygpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKWRvY3VtZW50Um9vdEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDMpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldERvY3VtZW50Um9vdF9VZGRpUmVnaXN0cnkoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSlkb2N1bWVudFJvb3RFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg0KTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUNsYXNzIGdldFRheG9ub21pZXMoKSB7Ci0JCXJldHVybiB0YXhvbm9taWVzRUNsYXNzOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldFRheG9ub21pZXNfVGF4b25vbXkoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSl0YXhvbm9taWVzRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVDbGFzcyBnZXRVRERJUmVnaXN0cnkoKSB7Ci0JCXJldHVybiB1ZGRpUmVnaXN0cnlFQ2xhc3M7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0VURESVJlZ2lzdHJ5X1ZlcnNpb24oKSB7Ci0JCXJldHVybiAoRUF0dHJpYnV0ZSl1ZGRpUmVnaXN0cnlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRVRERJUmVnaXN0cnlfRGlzY292ZXJ5VVJMKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpdWRkaVJlZ2lzdHJ5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0VURESVJlZ2lzdHJ5X1B1YmxpY2F0aW9uVVJMKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpdWRkaVJlZ2lzdHJ5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0VURESVJlZ2lzdHJ5X1NlY3VyZWREaXNjb3ZlcnlVUkwoKSB7Ci0JCXJldHVybiAoRUF0dHJpYnV0ZSl1ZGRpUmVnaXN0cnlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgzKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRVRERJUmVnaXN0cnlfU2VjdXJlZFB1YmxpY2F0aW9uVVJMKCkgewotCQlyZXR1cm4gKEVBdHRyaWJ1dGUpdWRkaVJlZ2lzdHJ5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEVBdHRyaWJ1dGUgZ2V0VURESVJlZ2lzdHJ5X0RlZmF1bHRMb2dpbigpIHsKLQkJcmV0dXJuIChFQXR0cmlidXRlKXVkZGlSZWdpc3RyeUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDUpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBFQXR0cmlidXRlIGdldFVERElSZWdpc3RyeV9EZWZhdWx0UGFzc3dvcmQoKSB7Ci0JCXJldHVybiAoRUF0dHJpYnV0ZSl1ZGRpUmVnaXN0cnlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg2KTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgRVJlZmVyZW5jZSBnZXRVRERJUmVnaXN0cnlfVGF4b25vbWllcygpIHsKLQkJcmV0dXJuIChFUmVmZXJlbmNlKXVkZGlSZWdpc3RyeUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDcpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBVRERJUmVnaXN0cnlGYWN0b3J5IGdldFVERElSZWdpc3RyeUZhY3RvcnkoKSB7Ci0JCXJldHVybiAoVURESVJlZ2lzdHJ5RmFjdG9yeSlnZXRFRmFjdG9yeUluc3RhbmNlKCk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBib29sZWFuIGlzQ3JlYXRlZCA9IGZhbHNlOwotCi0JLyoqCi0JICogQ3JlYXRlcyB0aGUgbWV0YS1tb2RlbCBvYmplY3RzIGZvciB0aGUgcGFja2FnZS4gIFRoaXMgbWV0aG9kIGlzCi0JICogZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIGNyZWF0ZVBhY2thZ2VDb250ZW50cygpIHsKLQkJaWYgKGlzQ3JlYXRlZCkgcmV0dXJuOwotCQlpc0NyZWF0ZWQgPSB0cnVlOwotCi0JCS8vIENyZWF0ZSBjbGFzc2VzIGFuZCB0aGVpciBmZWF0dXJlcwotCQlkb2N1bWVudFJvb3RFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoRE9DVU1FTlRfUk9PVCk7Ci0JCWNyZWF0ZUVBdHRyaWJ1dGUoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19NSVhFRCk7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19YTUxOU19QUkVGSVhfTUFQKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShkb2N1bWVudFJvb3RFQ2xhc3MsIERPQ1VNRU5UX1JPT1RfX1hTSV9TQ0hFTUFfTE9DQVRJT04pOwotCQljcmVhdGVFUmVmZXJlbmNlKGRvY3VtZW50Um9vdEVDbGFzcywgRE9DVU1FTlRfUk9PVF9fVEFYT05PTUlFUyk7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoZG9jdW1lbnRSb290RUNsYXNzLCBET0NVTUVOVF9ST09UX19VRERJX1JFR0lTVFJZKTsKLQotCQl0YXhvbm9taWVzRUNsYXNzID0gY3JlYXRlRUNsYXNzKFRBWE9OT01JRVMpOwotCQljcmVhdGVFUmVmZXJlbmNlKHRheG9ub21pZXNFQ2xhc3MsIFRBWE9OT01JRVNfX1RBWE9OT01ZKTsKLQotCQl1ZGRpUmVnaXN0cnlFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoVURESV9SRUdJU1RSWSk7Ci0JCWNyZWF0ZUVBdHRyaWJ1dGUodWRkaVJlZ2lzdHJ5RUNsYXNzLCBVRERJX1JFR0lTVFJZX19WRVJTSU9OKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZSh1ZGRpUmVnaXN0cnlFQ2xhc3MsIFVERElfUkVHSVNUUllfX0RJU0NPVkVSWV9VUkwpOwotCQljcmVhdGVFQXR0cmlidXRlKHVkZGlSZWdpc3RyeUVDbGFzcywgVURESV9SRUdJU1RSWV9fUFVCTElDQVRJT05fVVJMKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZSh1ZGRpUmVnaXN0cnlFQ2xhc3MsIFVERElfUkVHSVNUUllfX1NFQ1VSRURfRElTQ09WRVJZX1VSTCk7Ci0JCWNyZWF0ZUVBdHRyaWJ1dGUodWRkaVJlZ2lzdHJ5RUNsYXNzLCBVRERJX1JFR0lTVFJZX19TRUNVUkVEX1BVQkxJQ0FUSU9OX1VSTCk7Ci0JCWNyZWF0ZUVBdHRyaWJ1dGUodWRkaVJlZ2lzdHJ5RUNsYXNzLCBVRERJX1JFR0lTVFJZX19ERUZBVUxUX0xPR0lOKTsKLQkJY3JlYXRlRUF0dHJpYnV0ZSh1ZGRpUmVnaXN0cnlFQ2xhc3MsIFVERElfUkVHSVNUUllfX0RFRkFVTFRfUEFTU1dPUkQpOwotCQljcmVhdGVFUmVmZXJlbmNlKHVkZGlSZWdpc3RyeUVDbGFzcywgVURESV9SRUdJU1RSWV9fVEFYT05PTUlFUyk7Ci0JfQotCi0JLyoqCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJpdmF0ZSBib29sZWFuIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKLQotCS8qKgotCSAqIENvbXBsZXRlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSBhbmQgaXRzIG1ldGEtbW9kZWwuICBUaGlzCi0JICogbWV0aG9kIGlzIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkgewotCQlpZiAoaXNJbml0aWFsaXplZCkgcmV0dXJuOwotCQlpc0luaXRpYWxpemVkID0gdHJ1ZTsKLQotCQkvLyBJbml0aWFsaXplIHBhY2thZ2UKLQkJc2V0TmFtZShlTkFNRSk7Ci0JCXNldE5zUHJlZml4KGVOU19QUkVGSVgpOwotCQlzZXROc1VSSShlTlNfVVJJKTsKLQotCQkvLyBPYnRhaW4gb3RoZXIgZGVwZW5kZW50IHBhY2thZ2VzCi0JCVRheG9ub215UGFja2FnZUltcGwgdGhlVGF4b25vbXlQYWNrYWdlID0gKFRheG9ub215UGFja2FnZUltcGwpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVGF4b25vbXlQYWNrYWdlLmVOU19VUkkpOwotCQlSZWdpc3RyeVBhY2thZ2VJbXBsIHRoZVJlZ2lzdHJ5UGFja2FnZSA9IChSZWdpc3RyeVBhY2thZ2VJbXBsKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJlZ2lzdHJ5UGFja2FnZS5lTlNfVVJJKTsKLQkJWE1MVHlwZVBhY2thZ2VJbXBsIHRoZVhNTFR5cGVQYWNrYWdlID0gKFhNTFR5cGVQYWNrYWdlSW1wbClFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShYTUxUeXBlUGFja2FnZS5lTlNfVVJJKTsKLQotCQkvLyBBZGQgc3VwZXJ0eXBlcyB0byBjbGFzc2VzCi0JCXVkZGlSZWdpc3RyeUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVSZWdpc3RyeVBhY2thZ2UuZ2V0UmVnaXN0cnkoKSk7Ci0KLQkJLy8gSW5pdGlhbGl6ZSBjbGFzc2VzIGFuZCBmZWF0dXJlczsgYWRkIG9wZXJhdGlvbnMgYW5kIHBhcmFtZXRlcnMKLQkJaW5pdEVDbGFzcyhkb2N1bWVudFJvb3RFQ2xhc3MsIERvY3VtZW50Um9vdC5jbGFzcywgIkRvY3VtZW50Um9vdCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0RG9jdW1lbnRSb290X01peGVkKCksIGVjb3JlUGFja2FnZS5nZXRFRmVhdHVyZU1hcEVudHJ5KCksICJtaXhlZCIsIG51bGwsIDAsIC0xLCBudWxsLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVSZWZlcmVuY2UoZ2V0RG9jdW1lbnRSb290X1hNTE5TUHJlZml4TWFwKCksIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSgpLCBudWxsLCAieE1MTlNQcmVmaXhNYXAiLCBudWxsLCAwLCAtMSwgbnVsbCwgSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVSZWZlcmVuY2UoZ2V0RG9jdW1lbnRSb290X1hTSVNjaGVtYUxvY2F0aW9uKCksIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSgpLCBudWxsLCAieFNJU2NoZW1hTG9jYXRpb24iLCBudWxsLCAwLCAtMSwgbnVsbCwgSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVSZWZlcmVuY2UoZ2V0RG9jdW1lbnRSb290X1RheG9ub21pZXMoKSwgdGhpcy5nZXRUYXhvbm9taWVzKCksIG51bGwsICJ0YXhvbm9taWVzIiwgbnVsbCwgMCwgLTIsIG51bGwsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldERvY3VtZW50Um9vdF9VZGRpUmVnaXN0cnkoKSwgdGhpcy5nZXRVRERJUmVnaXN0cnkoKSwgbnVsbCwgInVkZGlSZWdpc3RyeSIsIG51bGwsIDAsIC0yLCBudWxsLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsIElTX09SREVSRUQpOwotCi0JCWluaXRFQ2xhc3ModGF4b25vbWllc0VDbGFzcywgVGF4b25vbWllcy5jbGFzcywgIlRheG9ub21pZXMiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldFRheG9ub21pZXNfVGF4b25vbXkoKSwgdGhlVGF4b25vbXlQYWNrYWdlLmdldFRheG9ub215KCksIG51bGwsICJ0YXhvbm9teSIsIG51bGwsIDAsIC0xLCBUYXhvbm9taWVzLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCi0JCWluaXRFQ2xhc3ModWRkaVJlZ2lzdHJ5RUNsYXNzLCBVRERJUmVnaXN0cnkuY2xhc3MsICJVRERJUmVnaXN0cnkiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7Ci0JCWluaXRFQXR0cmlidXRlKGdldFVERElSZWdpc3RyeV9WZXJzaW9uKCksIHRoZVhNTFR5cGVQYWNrYWdlLmdldFN0cmluZygpLCAidmVyc2lvbiIsIG51bGwsIDEsIDEsIFVERElSZWdpc3RyeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFQXR0cmlidXRlKGdldFVERElSZWdpc3RyeV9EaXNjb3ZlcnlVUkwoKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0QW55VVJJKCksICJkaXNjb3ZlcnlVUkwiLCBudWxsLCAxLCAxLCBVRERJUmVnaXN0cnkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RUF0dHJpYnV0ZShnZXRVRERJUmVnaXN0cnlfUHVibGljYXRpb25VUkwoKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0QW55VVJJKCksICJwdWJsaWNhdGlvblVSTCIsIG51bGwsIDEsIDEsIFVERElSZWdpc3RyeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFQXR0cmlidXRlKGdldFVERElSZWdpc3RyeV9TZWN1cmVkRGlzY292ZXJ5VVJMKCksIHRoZVhNTFR5cGVQYWNrYWdlLmdldEFueVVSSSgpLCAic2VjdXJlZERpc2NvdmVyeVVSTCIsIG51bGwsIDEsIDEsIFVERElSZWdpc3RyeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFQXR0cmlidXRlKGdldFVERElSZWdpc3RyeV9TZWN1cmVkUHVibGljYXRpb25VUkwoKSwgdGhlWE1MVHlwZVBhY2thZ2UuZ2V0QW55VVJJKCksICJzZWN1cmVkUHVibGljYXRpb25VUkwiLCBudWxsLCAxLCAxLCBVRERJUmVnaXN0cnkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOwotCQlpbml0RUF0dHJpYnV0ZShnZXRVRERJUmVnaXN0cnlfRGVmYXVsdExvZ2luKCksIHRoZVhNTFR5cGVQYWNrYWdlLmdldFN0cmluZygpLCAiZGVmYXVsdExvZ2luIiwgbnVsbCwgMSwgMSwgVURESVJlZ2lzdHJ5LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQkJaW5pdEVBdHRyaWJ1dGUoZ2V0VURESVJlZ2lzdHJ5X0RlZmF1bHRQYXNzd29yZCgpLCB0aGVYTUxUeXBlUGFja2FnZS5nZXRTdHJpbmcoKSwgImRlZmF1bHRQYXNzd29yZCIsIG51bGwsIDEsIDEsIFVERElSZWdpc3RyeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7Ci0JCWluaXRFUmVmZXJlbmNlKGdldFVERElSZWdpc3RyeV9UYXhvbm9taWVzKCksIHRoaXMuZ2V0VGF4b25vbWllcygpLCBudWxsLCAidGF4b25vbWllcyIsIG51bGwsIDAsIDEsIFVERElSZWdpc3RyeS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsKLQotCQkvLyBDcmVhdGUgcmVzb3VyY2UKLQkJY3JlYXRlUmVzb3VyY2UoZU5TX1VSSSk7Ci0KLQkJLy8gQ3JlYXRlIGFubm90YXRpb25zCi0JCS8vIGh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YQotCQljcmVhdGVFeHRlbmRlZE1ldGFEYXRhQW5ub3RhdGlvbnMoKTsKLQl9Ci0KLQkvKioKLQkgKiBJbml0aWFsaXplcyB0aGUgYW5ub3RhdGlvbnMgZm9yIDxiPmh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YTwvYj4uCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIHZvaWQgY3JlYXRlRXh0ZW5kZWRNZXRhRGF0YUFubm90YXRpb25zKCkgewotCQlTdHJpbmcgc291cmNlID0gImh0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YSI7CQkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZG9jdW1lbnRSb290RUNsYXNzLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAibmFtZSIsICIiLAotCQkJICJraW5kIiwgIm1peGVkIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERvY3VtZW50Um9vdF9NaXhlZCgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50V2lsZGNhcmQiLAotCQkJICJuYW1lIiwgIjptaXhlZCIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXREb2N1bWVudFJvb3RfWE1MTlNQcmVmaXhNYXAoKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiYXR0cmlidXRlIiwKLQkJCSAibmFtZSIsICJ4bWxuczpwcmVmaXgiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0RG9jdW1lbnRSb290X1hTSVNjaGVtYUxvY2F0aW9uKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImF0dHJpYnV0ZSIsCi0JCQkgIm5hbWUiLCAieHNpOnNjaGVtYUxvY2F0aW9uIgotCQkgICB9KTsJCQotCQlhZGRBbm5vdGF0aW9uCi0JCSAgKGdldERvY3VtZW50Um9vdF9UYXhvbm9taWVzKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgInRheG9ub21pZXMiLAotCQkJICJuYW1lc3BhY2UiLCAiIyN0YXJnZXROYW1lc3BhY2UiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0RG9jdW1lbnRSb290X1VkZGlSZWdpc3RyeSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJ1ZGRpUmVnaXN0cnkiLAotCQkJICJuYW1lc3BhY2UiLCAiIyN0YXJnZXROYW1lc3BhY2UiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAodGF4b25vbWllc0VDbGFzcywgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgIm5hbWUiLCAiVGF4b25vbWllcyIsCi0JCQkgImtpbmQiLCAiZWxlbWVudE9ubHkiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0VGF4b25vbWllc19UYXhvbm9teSgpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJ0YXhvbm9teSIsCi0JCQkgIm5hbWVzcGFjZSIsICJodHRwOi8vZWNsaXBzZS5vcmcvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC90YXhvbm9teSIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgICh1ZGRpUmVnaXN0cnlFQ2xhc3MsIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJuYW1lIiwgIlVERElSZWdpc3RyeSIsCi0JCQkgImtpbmQiLCAiZWxlbWVudE9ubHkiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0VURESVJlZ2lzdHJ5X1ZlcnNpb24oKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiZWxlbWVudCIsCi0JCQkgIm5hbWUiLCAidmVyc2lvbiIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRVRERJUmVnaXN0cnlfRGlzY292ZXJ5VVJMKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgImRpc2NvdmVyeVVSTCIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRVRERJUmVnaXN0cnlfUHVibGljYXRpb25VUkwoKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiZWxlbWVudCIsCi0JCQkgIm5hbWUiLCAicHVibGljYXRpb25VUkwiCi0JCSAgIH0pOwkJCi0JCWFkZEFubm90YXRpb24KLQkJICAoZ2V0VURESVJlZ2lzdHJ5X1NlY3VyZWREaXNjb3ZlcnlVUkwoKSwgCi0JCSAgIHNvdXJjZSwgCi0JCSAgIG5ldyBTdHJpbmdbXSB7Ci0JCQkgImtpbmQiLCAiZWxlbWVudCIsCi0JCQkgIm5hbWUiLCAic2VjdXJlZERpc2NvdmVyeVVSTCIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRVRERJUmVnaXN0cnlfU2VjdXJlZFB1YmxpY2F0aW9uVVJMKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgInNlY3VyZWRQdWJsaWNhdGlvblVSTCIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRVRERJUmVnaXN0cnlfRGVmYXVsdExvZ2luKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgImRlZmF1bHRMb2dpbiIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRVRERJUmVnaXN0cnlfRGVmYXVsdFBhc3N3b3JkKCksIAotCQkgICBzb3VyY2UsIAotCQkgICBuZXcgU3RyaW5nW10gewotCQkJICJraW5kIiwgImVsZW1lbnQiLAotCQkJICJuYW1lIiwgImRlZmF1bHRQYXNzd29yZCIKLQkJICAgfSk7CQkKLQkJYWRkQW5ub3RhdGlvbgotCQkgIChnZXRVRERJUmVnaXN0cnlfVGF4b25vbWllcygpLCAKLQkJICAgc291cmNlLCAKLQkJICAgbmV3IFN0cmluZ1tdIHsKLQkJCSAia2luZCIsICJlbGVtZW50IiwKLQkJCSAibmFtZSIsICJ0YXhvbm9taWVzIgotCQkgICB9KTsKLQl9Ci0KLX0gLy9VRERJUmVnaXN0cnlQYWNrYWdlSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L3V0aWwvVURESVJlZ2lzdHJ5QWRhcHRlckZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS91dGlsL1VERElSZWdpc3RyeUFkYXB0ZXJGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjOGUwYzYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L3V0aWwvVURESVJlZ2lzdHJ5QWRhcHRlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0vKioKLSAqIDxjb3B5cmlnaHQ+Ci0gKiA8L2NvcHlyaWdodD4KLSAqCi0gKiAkSWQ6IFVERElSZWdpc3RyeUFkYXB0ZXJGYWN0b3J5LmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo1MCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuaW1wbC5BZGFwdGVyRmFjdG9yeUltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS4qOwotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBUaGUgPGI+QWRhcHRlciBGYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLgotICogSXQgcHJvdmlkZXMgYW4gYWRhcHRlciA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5UGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVURESVJlZ2lzdHJ5QWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBBZGFwdGVyRmFjdG9yeUltcGwgewotCS8qKgotCSAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIFVERElSZWdpc3RyeVBhY2thZ2UgbW9kZWxQYWNrYWdlOwotCi0JLyoqCi0JICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgYWRhcHRlciBmYWN0b3J5LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBVRERJUmVnaXN0cnlBZGFwdGVyRmFjdG9yeSgpIHsKLQkJaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKSB7Ci0JCQltb2RlbFBhY2thZ2UgPSBVRERJUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRTsKLQkJfQotCX0KLQotCS8qKgotCSAqIFJldHVybnMgd2hldGhlciB0aGlzIGZhY3RvcnkgaXMgYXBwbGljYWJsZSBmb3IgdGhlIHR5cGUgb2YgdGhlIG9iamVjdC4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgb2JqZWN0IGlzIGVpdGhlciB0aGUgbW9kZWwncyBwYWNrYWdlIG9yIGlzIGFuIGluc3RhbmNlIG9iamVjdCBvZiB0aGUgbW9kZWwuCi0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0LgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBpc0ZhY3RvcnlGb3JUeXBlKE9iamVjdCBvYmplY3QpIHsKLQkJaWYgKG9iamVjdCA9PSBtb2RlbFBhY2thZ2UpIHsKLQkJCXJldHVybiB0cnVlOwotCQl9Ci0JCWlmIChvYmplY3QgaW5zdGFuY2VvZiBFT2JqZWN0KSB7Ci0JCQlyZXR1cm4gKChFT2JqZWN0KW9iamVjdCkuZUNsYXNzKCkuZ2V0RVBhY2thZ2UoKSA9PSBtb2RlbFBhY2thZ2U7Ci0JCX0KLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCS8qKgotCSAqIFRoZSBzd2l0Y2ggdGhlIGRlbGVnYXRlcyB0byB0aGUgPGNvZGU+Y3JlYXRlWFhYPC9jb2RlPiBtZXRob2RzLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBVRERJUmVnaXN0cnlTd2l0Y2ggbW9kZWxTd2l0Y2ggPQotCQluZXcgVURESVJlZ2lzdHJ5U3dpdGNoKCkgewotCQkJcHVibGljIE9iamVjdCBjYXNlRG9jdW1lbnRSb290KERvY3VtZW50Um9vdCBvYmplY3QpIHsKLQkJCQlyZXR1cm4gY3JlYXRlRG9jdW1lbnRSb290QWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBjYXNlVGF4b25vbWllcyhUYXhvbm9taWVzIG9iamVjdCkgewotCQkJCXJldHVybiBjcmVhdGVUYXhvbm9taWVzQWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBjYXNlVURESVJlZ2lzdHJ5KFVERElSZWdpc3RyeSBvYmplY3QpIHsKLQkJCQlyZXR1cm4gY3JlYXRlVURESVJlZ2lzdHJ5QWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBjYXNlUmVnaXN0cnkoUmVnaXN0cnkgb2JqZWN0KSB7Ci0JCQkJcmV0dXJuIGNyZWF0ZVJlZ2lzdHJ5QWRhcHRlcigpOwotCQkJfQotCQkJcHVibGljIE9iamVjdCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgewotCQkJCXJldHVybiBjcmVhdGVFT2JqZWN0QWRhcHRlcigpOwotCQkJfQotCQl9OwotCi0JLyoqCi0JICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4KLQkgKiBAcmV0dXJuIHRoZSBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlQWRhcHRlcihOb3RpZmllciB0YXJnZXQpIHsKLQkJcmV0dXJuIChBZGFwdGVyKW1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7Ci0JfQotCi0KLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LkRvY3VtZW50Um9vdCA8ZW0+RG9jdW1lbnQgUm9vdDwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0JICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5Eb2N1bWVudFJvb3QKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlRG9jdW1lbnRSb290QWRhcHRlcigpIHsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5UYXhvbm9taWVzIDxlbT5UYXhvbm9taWVzPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLQkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LlRheG9ub21pZXMKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIEFkYXB0ZXIgY3JlYXRlVGF4b25vbWllc0FkYXB0ZXIoKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5IDxlbT5VRERJUmVnaXN0cnk8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVVERElSZWdpc3RyeUFkYXB0ZXIoKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeSA8ZW0+UmVnaXN0cnk8L2VtPn0nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgQWRhcHRlciBjcmVhdGVSZWdpc3RyeUFkYXB0ZXIoKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgdGhlIGRlZmF1bHQgY2FzZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwuCi0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCkgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLX0gLy9VRERJUmVnaXN0cnlBZGFwdGVyRmFjdG9yeQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L3V0aWwvVURESVJlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L3V0aWwvVURESVJlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTMxNWFmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS91dGlsL1VERElSZWdpc3RyeVJlc291cmNlRmFjdG9yeUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogVURESVJlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhLHYgMS4yIDIwMDUvMTIvMDMgMDQ6MDY6NTAgY2JyZWFsZXkgRXhwICQKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS51dGlsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkV4dGVuZGVkTWV0YURhdGE7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1pLlhNTFJlc291cmNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaS5pbXBsLlhNTFJlc291cmNlRmFjdG9yeUltcGw7Ci0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5SZXNvdXJjZSBGYWN0b3J5PC9iPiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2thZ2UuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkudXRpbC5VRERJUmVnaXN0cnlSZXNvdXJjZUltcGwKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFVERElSZWdpc3RyeVJlc291cmNlRmFjdG9yeUltcGwgZXh0ZW5kcyBYTUxSZXNvdXJjZUZhY3RvcnlJbXBsIHsKLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgRXh0ZW5kZWRNZXRhRGF0YSBleHRlbmRlZE1ldGFEYXRhOwotCi0JLyoqCi0JICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgcmVzb3VyY2UgZmFjdG9yeS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgVURESVJlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbCgpIHsKLQkJc3VwZXIoKTsKLQkJZXh0ZW5kZWRNZXRhRGF0YSA9IEV4dGVuZGVkTWV0YURhdGEuSU5TVEFOQ0U7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgcmVzb3VyY2UuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFJlc291cmNlIGNyZWF0ZVJlc291cmNlKFVSSSB1cmkpIHsKLQkJWE1MUmVzb3VyY2UgcmVzdWx0ID0gbmV3IFVERElSZWdpc3RyeVJlc291cmNlSW1wbCh1cmkpOwotCQlyZXN1bHQuZ2V0RGVmYXVsdFNhdmVPcHRpb25zKCkucHV0KFhNTFJlc291cmNlLk9QVElPTl9FWFRFTkRFRF9NRVRBX0RBVEEsIGV4dGVuZGVkTWV0YURhdGEpOwotCQlyZXN1bHQuZ2V0RGVmYXVsdExvYWRPcHRpb25zKCkucHV0KFhNTFJlc291cmNlLk9QVElPTl9FWFRFTkRFRF9NRVRBX0RBVEEsIGV4dGVuZGVkTWV0YURhdGEpOwotCi0JCXJlc3VsdC5nZXREZWZhdWx0U2F2ZU9wdGlvbnMoKS5wdXQoWE1MUmVzb3VyY2UuT1BUSU9OX1NDSEVNQV9MT0NBVElPTiwgQm9vbGVhbi5UUlVFKTsKLQkJcmVzdWx0LmdldERlZmF1bHRTYXZlT3B0aW9ucygpLnB1dChYTUxSZXNvdXJjZS5PUFRJT05fVVNFX0VOQ09ERURfQVRUUklCVVRFX1NUWUxFLCBCb29sZWFuLlRSVUUpOwotCi0JCXJlc3VsdC5nZXREZWZhdWx0TG9hZE9wdGlvbnMoKS5wdXQoWE1MUmVzb3VyY2UuT1BUSU9OX1VTRV9MRVhJQ0FMX0hBTkRMRVIsIEJvb2xlYW4uVFJVRSk7Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotCi19IC8vVURESVJlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb2RlbC92MTAvdWRkaXJlZ2lzdHJ5L3V0aWwvVURESVJlZ2lzdHJ5UmVzb3VyY2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvdXRpbC9VRERJUmVnaXN0cnlSZXNvdXJjZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQwMjljNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvdXRpbC9VRERJUmVnaXN0cnlSZXNvdXJjZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogVURESVJlZ2lzdHJ5UmVzb3VyY2VJbXBsLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo1MCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaS5pbXBsLlhNTFJlc291cmNlSW1wbDsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlJlc291cmNlIDwvYj4gYXNzb2NpYXRlZCB3aXRoIHRoZSBwYWNrYWdlLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LnV0aWwuVURESVJlZ2lzdHJ5UmVzb3VyY2VGYWN0b3J5SW1wbAotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVURESVJlZ2lzdHJ5UmVzb3VyY2VJbXBsIGV4dGVuZHMgWE1MUmVzb3VyY2VJbXBsIHsKLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZS4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSB1cmkgdGhlIFVSSSBvZiB0aGUgbmV3IHJlc291cmNlLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgVURESVJlZ2lzdHJ5UmVzb3VyY2VJbXBsKFVSSSB1cmkpIHsKLQkJc3VwZXIodXJpKTsKLQl9Ci0KLX0gLy9VRERJUmVnaXN0cnlSZXNvdXJjZUZhY3RvcnlJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vZGVsL3YxMC91ZGRpcmVnaXN0cnkvdXRpbC9VRERJUmVnaXN0cnlTd2l0Y2guamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS91dGlsL1VERElSZWdpc3RyeVN3aXRjaC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDNkOGFlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9kZWwvdjEwL3VkZGlyZWdpc3RyeS91dGlsL1VERElSZWdpc3RyeVN3aXRjaC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8qKgotICogPGNvcHlyaWdodD4KLSAqIDwvY29weXJpZ2h0PgotICoKLSAqICRJZDogVURESVJlZ2lzdHJ5U3dpdGNoLmphdmEsdiAxLjIgMjAwNS8xMi8wMyAwNDowNjo1MCBjYnJlYWxleSBFeHAgJAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudWRkaXJlZ2lzdHJ5LnV0aWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuKjsKLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlN3aXRjaDwvYj4gZm9yIHRoZSBtb2RlbCdzIGluaGVyaXRhbmNlIGhpZXJhcmNoeS4KLSAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2goRU9iamVjdCkgZG9Td2l0Y2gob2JqZWN0KX0KLSAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwKLSAqIHN0YXJ0aW5nIHdpdGggdGhlIGFjdHVhbCBjbGFzcyBvZiB0aGUgb2JqZWN0Ci0gKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5Ci0gKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwKLSAqIHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgdGhlIHN3aXRjaC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBVRERJUmVnaXN0cnlTd2l0Y2ggewotCS8qKgotCSAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZQotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwotCXByb3RlY3RlZCBzdGF0aWMgVURESVJlZ2lzdHJ5UGFja2FnZSBtb2RlbFBhY2thZ2U7Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBzd2l0Y2guCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIFVERElSZWdpc3RyeVN3aXRjaCgpIHsKLQkJaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKSB7Ci0JCQltb2RlbFBhY2thZ2UgPSBVRERJUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRTsKLQkJfQotCX0KLQotCS8qKgotCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBkb1N3aXRjaChFT2JqZWN0IHRoZUVPYmplY3QpIHsKLQkJcmV0dXJuIGRvU3dpdGNoKHRoZUVPYmplY3QuZUNsYXNzKCksIHRoZUVPYmplY3QpOwotCX0KLQotCS8qKgotCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHJvdGVjdGVkIE9iamVjdCBkb1N3aXRjaChFQ2xhc3MgdGhlRUNsYXNzLCBFT2JqZWN0IHRoZUVPYmplY3QpIHsKLQkJaWYgKHRoZUVDbGFzcy5lQ29udGFpbmVyKCkgPT0gbW9kZWxQYWNrYWdlKSB7Ci0JCQlyZXR1cm4gZG9Td2l0Y2godGhlRUNsYXNzLmdldENsYXNzaWZpZXJJRCgpLCB0aGVFT2JqZWN0KTsKLQkJfQotCQllbHNlIHsKLQkJCUxpc3QgZVN1cGVyVHlwZXMgPSB0aGVFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKTsKLQkJCXJldHVybgotCQkJCWVTdXBlclR5cGVzLmlzRW1wdHkoKSA/Ci0JCQkJCWRlZmF1bHRDYXNlKHRoZUVPYmplY3QpIDoKLQkJCQkJZG9Td2l0Y2goKEVDbGFzcyllU3VwZXJUeXBlcy5nZXQoMCksIHRoZUVPYmplY3QpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwcm90ZWN0ZWQgT2JqZWN0IGRvU3dpdGNoKGludCBjbGFzc2lmaWVySUQsIEVPYmplY3QgdGhlRU9iamVjdCkgewotCQlzd2l0Y2ggKGNsYXNzaWZpZXJJRCkgewotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLkRPQ1VNRU5UX1JPT1Q6IHsKLQkJCQlEb2N1bWVudFJvb3QgZG9jdW1lbnRSb290ID0gKERvY3VtZW50Um9vdCl0aGVFT2JqZWN0OwotCQkJCU9iamVjdCByZXN1bHQgPSBjYXNlRG9jdW1lbnRSb290KGRvY3VtZW50Um9vdCk7Ci0JCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLQkJCQlyZXR1cm4gcmVzdWx0OwotCQkJfQotCQkJY2FzZSBVRERJUmVnaXN0cnlQYWNrYWdlLlRBWE9OT01JRVM6IHsKLQkJCQlUYXhvbm9taWVzIHRheG9ub21pZXMgPSAoVGF4b25vbWllcyl0aGVFT2JqZWN0OwotCQkJCU9iamVjdCByZXN1bHQgPSBjYXNlVGF4b25vbWllcyh0YXhvbm9taWVzKTsKLQkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotCQkJCXJldHVybiByZXN1bHQ7Ci0JCQl9Ci0JCQljYXNlIFVERElSZWdpc3RyeVBhY2thZ2UuVURESV9SRUdJU1RSWTogewotCQkJCVVERElSZWdpc3RyeSB1ZGRpUmVnaXN0cnkgPSAoVURESVJlZ2lzdHJ5KXRoZUVPYmplY3Q7Ci0JCQkJT2JqZWN0IHJlc3VsdCA9IGNhc2VVRERJUmVnaXN0cnkodWRkaVJlZ2lzdHJ5KTsKLQkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VSZWdpc3RyeSh1ZGRpUmVnaXN0cnkpOwotCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0JCQkJcmV0dXJuIHJlc3VsdDsKLQkJCX0KLQkJCWRlZmF1bHQ6IHJldHVybiBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLQkJfQotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Eb2N1bWVudCBSb290PC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0JICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0JICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldHRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkRvY3VtZW50IFJvb3Q8L2VtPicuCi0JICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgY2FzZURvY3VtZW50Um9vdChEb2N1bWVudFJvb3Qgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5UYXhvbm9taWVzPC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0JICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0JICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldHRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlRheG9ub21pZXM8L2VtPicuCi0JICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgY2FzZVRheG9ub21pZXMoVGF4b25vbWllcyBvYmplY3QpIHsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldHRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlVERElSZWdpc3RyeTwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5VRERJUmVnaXN0cnk8L2VtPicuCi0JICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0JICogQGdlbmVyYXRlZAotCSAqLwotCXB1YmxpYyBPYmplY3QgY2FzZVVERElSZWdpc3RyeShVRERJUmVnaXN0cnkgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5SZWdpc3RyeTwvZW0+Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5SZWdpc3RyeTwvZW0+Jy4KLQkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JcHVibGljIE9iamVjdCBjYXNlUmVnaXN0cnkoUmVnaXN0cnkgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0JICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2gsIGJ1dCB0aGlzIGlzIHRoZSBsYXN0IGNhc2UgYW55d2F5LgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXR0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGRlZmF1bHRDYXNlKEVPYmplY3Qgb2JqZWN0KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotfSAvL1VERElSZWdpc3RyeVN3aXRjaApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb25pdG9yL0V4dGVuc2liaWxpdHlFbGVtZW50VHJhbnNmb3JtZXJSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb25pdG9yL0V4dGVuc2liaWxpdHlFbGVtZW50VHJhbnNmb3JtZXJSZWdpc3RyeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzExZGEyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9uaXRvci9FeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDcxNSAgIDI0MDcyMiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQ2Fubm90IHNldHVwIFRDUC9JUCBNb25pdG9yIGZvciBzb2FwMTIgZW5kcG9pbnRzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9uaXRvcjsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci0KLXB1YmxpYyBjbGFzcyBFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyUmVnaXN0cnkgewotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyUmVnaXN0cnkgSU5TVEFOQ0UgPQotCQluZXcgRXh0ZW5zaWJpbGl0eUVsZW1lbnRUcmFuc2Zvcm1lclJlZ2lzdHJ5KCk7Ci0JCi0JcHJpdmF0ZSBMaXN0PElFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyPiB0cmFuc2Zvcm1lcnM7Ci0JCi0JcHJpdmF0ZSBFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyUmVnaXN0cnkoKSB7Ci0JCQotCQl0cmFuc2Zvcm1lcnMgPSBuZXcgQXJyYXlMaXN0PElFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyPigpOwotCQkKLQkJSUV4dGVuc2lvblJlZ2lzdHJ5IGV4dGVuc2lvblJlZ2lzdHJ5ID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLQkJSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY29uZmlncyA9IAotCQkJZXh0ZW5zaW9uUmVnaXN0cnkuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzRm9yKCJvcmcuZWNsaXBzZS53c3Qud3MuRXh0ZW5zaWJpbGl0eUVsZW1lbnRUcmFuc2Zvcm1lciIpOwotCQkKLQkJZm9yIChJQ29uZmlndXJhdGlvbkVsZW1lbnQgY29uZmlnIDogY29uZmlncykgewotCQkJCi0JCQl0cnkgewotCQkJCUlFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyID0gKElFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyKSAKLQkJCQkJY29uZmlnLmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oImNsYXNzIik7CQkJCi0JCQkKLQkJCQl0cmFuc2Zvcm1lcnMuYWRkKHRyYW5zZm9ybWVyKTsKLQkJCX0KLQkJCWNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLQkJCQlXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldExvZygpLmxvZyhlLmdldFN0YXR1cygpKTsKLQkJCX0KLQkJfQotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIHRyYW5zZm9ybShFeHRlbnNpYmlsaXR5RWxlbWVudCBlbGVtZW50KSB7Ci0JCQotCQlmb3IgKElFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyIDogdHJhbnNmb3JtZXJzKSB7Ci0JCQlTdHJpbmcgc3RyID0gdHJhbnNmb3JtZXIudHJhbnNmb3JtKGVsZW1lbnQpOwotCQkJaWYgKHN0ciAhPSBudWxsKQotCQkJCXJldHVybiBzdHI7CQkJCi0JCX0KLQotCQlyZXR1cm4gbnVsbDsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL21vbml0b3IvR2V0TW9uaXRvckNvbW1hbmQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9uaXRvci9HZXRNb25pdG9yQ29tbWFuZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzdjMTY5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9uaXRvci9HZXRNb25pdG9yQ29tbWFuZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDcwOSAgIDIzNzExNiBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV2ViIHNlcnZpY2UgbW9uaXRvcmluZyBmYWlscyBvbiBodHRwcyBlbmRwb2ludAotICogMjAwODA3MTUgICAyNDA3MjIgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIENhbm5vdCBzZXR1cCBUQ1AvSVAgTW9uaXRvciBmb3Igc29hcDEyIGVuZHBvaW50cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb25pdG9yOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LlN0YXR1c0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MuZGF0YW1vZGVsLkFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLmNvcmUuaW50ZXJuYWwucHJvdmlzaW9uYWwuSU1vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmludGVybmV0Lm1vbml0b3IuY29yZS5pbnRlcm5hbC5wcm92aXNpb25hbC5JTW9uaXRvcldvcmtpbmdDb3B5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLmNvcmUuaW50ZXJuYWwucHJvdmlzaW9uYWwuTW9uaXRvckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLnV0aWwuU29ja2V0VXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuV3N0V1NQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV2ViU2VydmljZXNQYXJzZXI7Ci0KLXB1YmxpYyBjbGFzcyBHZXRNb25pdG9yQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0RGF0YU1vZGVsT3BlcmF0aW9uIHsKLQlwcml2YXRlIGJvb2xlYW4gbW9uaXRvclNlcnZpY2U7Ci0KLQlwcml2YXRlIGJvb2xlYW4gY3JlYXRlOwotCi0JcHJpdmF0ZSBXZWJTZXJ2aWNlc1BhcnNlciB3ZWJTZXJ2aWNlc1BhcnNlcjsKLQotCXByaXZhdGUgU3RyaW5nIHdzZGxVUkk7Ci0KLQlwcml2YXRlIExpc3QgZW5kcG9pbnRzOwotCQotCXByaXZhdGUgU3RyaW5nIHByb3h5RW5kcG9pbnQ7Ci0KLQlwdWJsaWMgR2V0TW9uaXRvckNvbW1hbmQoKSB7Ci0JCW1vbml0b3JTZXJ2aWNlID0gdHJ1ZTsKLQkJY3JlYXRlID0gdHJ1ZTsKLQl9Ci0KLQlwdWJsaWMgSVN0YXR1cyBleGVjdXRlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBhZGFwdGFibGUpIHsKLQkJSUVudmlyb25tZW50IGVudiA9IGdldEVudmlyb25tZW50KCk7Ci0KLQkJZW5kcG9pbnRzID0gbmV3IFZlY3RvcigpOwotCQlpZiAobW9uaXRvclNlcnZpY2UgJiYgd2ViU2VydmljZXNQYXJzZXIgIT0gbnVsbCAmJiB3c2RsVVJJICE9IG51bGwgJiYgd3NkbFVSSS5sZW5ndGgoKSA+IDApIHsKLQkJCURlZmluaXRpb24gZGVmaW5pdGlvbiA9IHdlYlNlcnZpY2VzUGFyc2VyLmdldFdTRExEZWZpbml0aW9uKHdzZGxVUkkpOwotCQkJaWYgKGRlZmluaXRpb24gIT0gbnVsbCkgewotCQkJCU1hcCBzZXJ2aWNlcyA9IGRlZmluaXRpb24uZ2V0U2VydmljZXMoKTsKLQkJCQlmb3IgKEl0ZXJhdG9yIHNlcnZpY2VzSXQgPSBzZXJ2aWNlcy52YWx1ZXMoKS5pdGVyYXRvcigpOyBzZXJ2aWNlc0l0Lmhhc05leHQoKTspIHsKLQkJCQkJU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2UpIHNlcnZpY2VzSXQubmV4dCgpOwotCQkJCQlNYXAgcG9ydHMgPSBzZXJ2aWNlLmdldFBvcnRzKCk7Ci0JCQkJCWZvciAoSXRlcmF0b3IgcG9ydHNJdCA9IHBvcnRzLnZhbHVlcygpLml0ZXJhdG9yKCk7IHBvcnRzSXQuaGFzTmV4dCgpOykgewotCQkJCQkJUG9ydCB3c2RsUG9ydCA9IChQb3J0KSBwb3J0c0l0Lm5leHQoKTsKLQkJCQkJCUxpc3QgZXh0RWxlbWVudHMgPSB3c2RsUG9ydC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQkJCQkJCWZvciAoSXRlcmF0b3IgZXh0RWxlbWVudHNJdCA9IGV4dEVsZW1lbnRzLml0ZXJhdG9yKCk7IGV4dEVsZW1lbnRzSXQuaGFzTmV4dCgpOykgewotCQkJCQkJCUV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzSXQubmV4dCgpOwotCQkJCQkJCVN0cmluZyBlbmRwb2ludCA9IG51bGw7Ci0JCQkJCQkJVVJMIGVuZHBvaW50VVJMID0gbnVsbDsKLQkJCQkJCQlpZiAoZXh0RWxlbWVudCBpbnN0YW5jZW9mIFNPQVBBZGRyZXNzKQotCQkJCQkJCQllbmRwb2ludCA9ICgoU09BUEFkZHJlc3MpIGV4dEVsZW1lbnQpLmdldExvY2F0aW9uVVJJKCk7Ci0JCQkJCQkJZWxzZSBpZiAoZXh0RWxlbWVudCBpbnN0YW5jZW9mIEhUVFBBZGRyZXNzKQotCQkJCQkJCQllbmRwb2ludCA9ICgoSFRUUEFkZHJlc3MpIGV4dEVsZW1lbnQpLmdldExvY2F0aW9uVVJJKCk7Ci0JCQkJCQkJZWxzZQotCQkJCQkJCQllbmRwb2ludCA9IEV4dGVuc2liaWxpdHlFbGVtZW50VHJhbnNmb3JtZXJSZWdpc3RyeS5JTlNUQU5DRS50cmFuc2Zvcm0oZXh0RWxlbWVudCk7Ci0JCQkJCQkJaWYgKGVuZHBvaW50ICE9IG51bGwpIHsKLQkJCQkJCQkJdHJ5IHsKLQkJCQkJCQkJCWVuZHBvaW50VVJMID0gbmV3IFVSTChlbmRwb2ludCk7Ci0JCQkJCQkJCX0KLQkJCQkJCQkJY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBtdXJsZSkgewotCQkJCQkJCQl9Ci0JCQkJCQkJfQotCQkJCQkJCWlmIChlbmRwb2ludFVSTCAhPSBudWxsKSB7Ci0JCQkJCQkJCVN0cmluZyBwcm90b2NvbCA9IGVuZHBvaW50VVJMLmdldFByb3RvY29sKCk7Ci0JCQkJCQkJCVN0cmluZyBob3N0ID0gZW5kcG9pbnRVUkwuZ2V0SG9zdCgpOwotCQkJCQkJCQlpbnQgcG9ydCA9IGVuZHBvaW50VVJMLmdldFBvcnQoKTsKLQkJCQkJCQkJaWYgKHBvcnQgPT0gLTEpIHsKLQkJCQkJCQkJCWlmICgiaHR0cCIuZXF1YWxzSWdub3JlQ2FzZShwcm90b2NvbCkpCi0JCQkJCQkJCQkJcG9ydCA9IDgwOwotCQkJCQkJCQkJZWxzZSBpZiAoImh0dHBzIi5lcXVhbHNJZ25vcmVDYXNlKHByb3RvY29sKSkKLQkJCQkJCQkJCQlwb3J0ID0gNDQzOwotCQkJCQkJCQl9Ci0JCQkJCQkJCWlmICgiaHR0cHMiLmVxdWFsc0lnbm9yZUNhc2UocHJvdG9jb2wpKQotCQkJCSAgICAgICAgICAgICAgICB7Ci0JCQkJICAgICAgICAgICAgICAgIAlJU3RhdHVzIHdhcm5pbmcgPSBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKCBOTFMuYmluZChXc3RXU1BsdWdpbk1lc3NhZ2VzLk1TR19FUlJPUl9VTkFCTEVfVE9fU1RBUlRfTU9OSVRPUiwgbmV3IE9iamVjdFtde1N0cmluZy52YWx1ZU9mKHBvcnQpLCBlbmRwb2ludH0pKTsKLQkJCQkgICAgICAgICAgICAgICAgCXRyeQotCQkJCSAgICAgICAgICAgICAgICAgICAgewotCQkJCSAgICAgICAgICAgICAgICAgICAgICBpZiAoZW52ICE9IG51bGwpCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgZW52LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnQod2FybmluZyk7Ci0JCQkJICAgICAgICAgICAgICAgICAgICB9Ci0JCQkJICAgICAgICAgICAgICAgICAgICBjYXRjaCAoU3RhdHVzRXhjZXB0aW9uIHNlKQotCQkJCSAgICAgICAgICAgICAgICAgICAgewotCQkJCSAgICAgICAgICAgICAgICAgICAgfQotCQkJCSAgICAgICAgICAgICAgICB9Ci0JCQkJICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3RvY29sICE9IG51bGwgJiYgcHJvdG9jb2wuZXF1YWxzSWdub3JlQ2FzZSgiaHR0cCIpICYmIGhvc3QgIT0gbnVsbCAmJiBob3N0Lmxlbmd0aCgpID4gMCAmJiBwb3J0ICE9IC0xKSB7Ci0JCQkJCQkJCQlJTW9uaXRvciBtID0gbnVsbDsKLQkJCQkJCQkJCUlNb25pdG9yW10gbW9uaXRvcnMgPSBNb25pdG9yQ29yZS5nZXRNb25pdG9ycygpOwotCQkJCQkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBtb25pdG9ycy5sZW5ndGg7IGkrKykgewotCQkJCQkJCQkJCWlmIChob3N0LmVxdWFsc0lnbm9yZUNhc2UobW9uaXRvcnNbaV0uZ2V0UmVtb3RlSG9zdCgpKSAmJiBwb3J0ID09IG1vbml0b3JzW2ldLmdldFJlbW90ZVBvcnQoKSkgewotCQkJCQkJCQkJCQltID0gbW9uaXRvcnNbaV07Ci0JCQkJCQkJCQkJCWJyZWFrOwotCQkJCQkJCQkJCX0KLQkJCQkJCQkJCX0KLQkJCQkJCQkJCWlmIChtID09IG51bGwgJiYgY3JlYXRlKSB7Ci0JCQkJCQkJCQkJaW50IG1vbml0b3JlZFBvcnQgPSBTb2NrZXRVdGlsLmZpbmRVbnVzZWRQb3J0KDUwMDAsIDE1MDAwKTsKLQkJCQkJCQkJCQlJTW9uaXRvcldvcmtpbmdDb3B5IG1vbml0b3JXb3JraW5nQ29weSA9IE1vbml0b3JDb3JlLmNyZWF0ZU1vbml0b3IoKTsKLQkJCQkJCQkJCQltb25pdG9yV29ya2luZ0NvcHkuc2V0TG9jYWxQb3J0KG1vbml0b3JlZFBvcnQpOwotCQkJCQkJCQkJCW1vbml0b3JXb3JraW5nQ29weS5zZXRSZW1vdGVIb3N0KGhvc3QpOwotCQkJCQkJCQkJCW1vbml0b3JXb3JraW5nQ29weS5zZXRSZW1vdGVQb3J0KHBvcnQpOwotCQkJCQkJCQkJCW1vbml0b3JXb3JraW5nQ29weS5zZXRQcm90b2NvbCgiSFRUUCIpOwotCQkJCQkJCQkJCXRyeSB7Ci0JCQkJCQkJCQkJCW0gPSBtb25pdG9yV29ya2luZ0NvcHkuc2F2ZSgpOwotCQkJCQkJCQkJCX0KLQkJCQkJCQkJCQljYXRjaCAoRXhjZXB0aW9uIHQpIHsKLQkJCQkJCQkJCQkJSVN0YXR1cyB3YXJuaW5nID0gU3RhdHVzVXRpbHMud2FybmluZ1N0YXR1cyhOTFMuYmluZChXc3RXU1BsdWdpbk1lc3NhZ2VzLk1TR19FUlJPUl9VTkFCTEVfVE9fU1RBUlRfTU9OSVRPUiwgbmV3IE9iamVjdFtde1N0cmluZy52YWx1ZU9mKHBvcnQpLCBlbmRwb2ludH0pLCB0KTsKLQkJCQkJCQkJCQkJdHJ5IHsKLQkJCQkJCQkJCQkJCWlmIChlbnYgIT0gbnVsbCkKLQkJCQkJCQkJCQkJCQllbnYuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydCh3YXJuaW5nKTsKLQkJCQkJCQkJCQkJfQotCQkJCQkJCQkJCQljYXRjaCAoU3RhdHVzRXhjZXB0aW9uIHNlKSB7Ci0JCQkJCQkJCQkJCX0KLQkJCQkJCQkJCQl9Ci0JCQkJCQkJCQl9Ci0JCQkJCQkJCQlpZiAobSAhPSBudWxsKSB7Ci0JCQkJCQkJCQkJdHJ5IHsKLQkJCQkJCQkJCQkJaWYgKCFtLmlzUnVubmluZygpKQotCQkJCQkJCQkJCQkJbS5zdGFydCgpOwotCQkJCQkJCQkJCQkvLyBVc2UgdGhlIGVuZHBvaW50IHRoYXQgbWF0Y2hlcyB3aXRoIHRoZSBwcm94eSB0aGUgZXh0ZW5zaW9uIHBhc3NlcyB0byB1cyBpZiBpdCBpcyBzZXQKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgCQlpZiAocHJveHlFbmRwb2ludCAhPSBudWxsKSB7Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgIAkJCXRyeSB7Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgIAkJCQllbmRwb2ludFVSTCA9IG5ldyBVUkwocHJveHlFbmRwb2ludCk7Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgIAkJCX0gY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBtdXJsZSkKLQkJCQkgICAgCQkJICAgICAgICAgICAgICAgIHsgCi0JCQkJICAgICAgICAgICAgICAgICAgICAgIAkJCQkvLyBpZ25vcmUgcHJveHkgZW5kcG9pbnQgCi0JCQkJICAgIAkJCSAgICAgICAgICAgICAgICB9Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgIAkJfQotCQkJCQkJCQkJCQlTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKGVuZHBvaW50VVJMLmdldFByb3RvY29sKCkpOwotCQkJCQkJCQkJCQlzYi5hcHBlbmQoIjovL2xvY2FsaG9zdDoiKTsKLQkJCQkJCQkJCQkJc2IuYXBwZW5kKFN0cmluZy52YWx1ZU9mKG0uZ2V0TG9jYWxQb3J0KCkpKTsKLQkJCQkJCQkJCQkJc2IuYXBwZW5kKGVuZHBvaW50VVJMLmdldEZpbGUoKSk7Ci0JCQkJCQkJCQkJCWVuZHBvaW50cy5hZGQoc2IudG9TdHJpbmcoKSk7Ci0JCQkJCQkJCQkJfQotCQkJCQkJCQkJCWNhdGNoIChFeGNlcHRpb24gdCkgewotCQkJCQkJCQkJCQlJU3RhdHVzIHdhcm5pbmcgPSBTdGF0dXNVdGlscy53YXJuaW5nU3RhdHVzKE5MUy5iaW5kKFdzdFdTUGx1Z2luTWVzc2FnZXMuTVNHX0VSUk9SX1VOQUJMRV9UT19TVEFSVF9NT05JVE9SLCBuZXcgT2JqZWN0W117U3RyaW5nLnZhbHVlT2YocG9ydCksIGVuZHBvaW50fSksIHQpOwotCQkJCQkJCQkJCQl0cnkgewotCQkJCQkJCQkJCQkJaWYgKGVudiAhPSBudWxsKQotCQkJCQkJCQkJCQkJCWVudi5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0KHdhcm5pbmcpOwotCQkJCQkJCQkJCQl9Ci0JCQkJCQkJCQkJCWNhdGNoIChTdGF0dXNFeGNlcHRpb24gc2UpIHsKLQkJCQkJCQkJCQkJfQotCQkJCQkJCQkJCX0KLQkJCQkJCQkJCX0KLQkJCQkJCQkJfQotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRNb25pdG9yU2VydmljZShib29sZWFuIG1vbml0b3JTZXJ2aWNlKSB7Ci0JCXRoaXMubW9uaXRvclNlcnZpY2UgPSBtb25pdG9yU2VydmljZTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXREZWZpbml0aW9uKERlZmluaXRpb24gZGVmaW5pdGlvbikgewotCX0KLQotCXB1YmxpYyB2b2lkIHNldFdlYlNlcnZpY2VzUGFyc2VyKFdlYlNlcnZpY2VzUGFyc2VyIHdlYlNlcnZpY2VzUGFyc2VyKSB7Ci0JCXRoaXMud2ViU2VydmljZXNQYXJzZXIgPSB3ZWJTZXJ2aWNlc1BhcnNlcjsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRXc2RsVVJJKFN0cmluZyB3c2RsVVJJKSB7Ci0JCXRoaXMud3NkbFVSSSA9IHdzZGxVUkk7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0Q3JlYXRlKGJvb2xlYW4gY3JlYXRlKSB7Ci0JCXRoaXMuY3JlYXRlID0gY3JlYXRlOwotCX0KLQotCXB1YmxpYyBMaXN0IGdldEVuZHBvaW50cygpIHsKLQkJcmV0dXJuIGVuZHBvaW50czsKLQl9Ci0JCi0JLyoqCi0JICogQHBhcmFtIHByb3h5RW5kcG9pbnQgVGhlIHByb3h5RW5kcG9pbnQgdG8gc2V0LgotCSAqLwotCXB1YmxpYyB2b2lkIHNldFByb3h5RW5kcG9pbnQoU3RyaW5nIHByb3h5RW5kcG9pbnQpIHsKLQkgIAl0aGlzLnByb3h5RW5kcG9pbnQgPSBwcm94eUVuZHBvaW50OwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvbW9uaXRvci9JRXh0ZW5zaWJpbGl0eUVsZW1lbnRUcmFuc2Zvcm1lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb25pdG9yL0lFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyY2Y2NGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9tb25pdG9yL0lFeHRlbnNpYmlsaXR5RWxlbWVudFRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwODA3MTUgICAyNDA3MjIgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIENhbm5vdCBzZXR1cCBUQ1AvSVAgTW9uaXRvciBmb3Igc29hcDEyIGVuZHBvaW50cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vbml0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLS8qKgotICogQSB0cmFuc2Zvcm1lciB0aGF0IHRha2VzIGFuIGVuZHBvaW50IGV4dGVuc2liaWxpdHkgZWxlbWVudCBhbmQgcmV0dXJucwotICogdGhlIGVuZHBvaW50IGxvY2F0aW9uIFVSTCBhcyBhIFN0cmluZy4KLSAqLwotcHVibGljIGludGVyZmFjZSBJRXh0ZW5zaWJpbGl0eUVsZW1lbnRUcmFuc2Zvcm1lciB7Ci0KLQkvKioKLQkgKiBHaXZlbiBhbiBlbmRwb2ludCBpbiB0aGUgZm9ybSBvZiBhIFdTREwgZXh0ZW5zaWJpbGl0eSBlbGVtZW50LCByZXR1cm5zCi0JICogdGhlIGVuZHBvaW50IGxvY2F0aW9uIFVSTCBhcyBhIFN0cmluZy4KLQkgKiAKLQkgKiBAcGFyYW0gZWxlbWVudCBBbiBlbmRwb2ludCBleHRlbnNpYmlsaXR5IGVsZW1lbnQuCi0JICogQHJldHVybiBUaGUgZW5kcG9pbnQgbG9jYXRpb24gVVJMLgotCSAqLwotCXB1YmxpYyBTdHJpbmcgdHJhbnNmb3JtKEV4dGVuc2liaWxpdHlFbGVtZW50IGVsZW1lbnQpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wbHVnaW4vV1NQbHVnaW4uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGx1Z2luL1dTUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMzAzNzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wbHVnaW4vV1NQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MDMgMTI4ODI3ICAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDYwNDI0ICAgMTE1NjkwIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwOTAzMTAgICAyNDI0NDAgeWVubHVAY2EuaWJtLmNvbSAtIFllbiBMdSwgUGx1Z2dhYmxlIElGaWxlIHRvIFVSSSBDb252ZXJ0ZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb252ZXJ0ZXIuSUlGaWxlMlVyaUNvbnZlcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudE1lcmdlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUFQQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lTU0JQQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdhaXRGb3JXU0RMVmFsaWRhdGlvbkNvbnRleHQ7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci0KLS8qKgotICogVGhlIG1haW4gcGx1Z2luIGNsYXNzIHRvIGJlIHVzZWQgaW4gdGhlIGRlc2t0b3AuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU1BsdWdpbiBleHRlbmRzIFBsdWdpbiB7Ci0KLQkvLyBUaGUgc2hhcmVkIGluc3RhbmNlLgotCXByaXZhdGUgc3RhdGljIFdTUGx1Z2luIHBsdWdpbjsKLQkKLQlwcml2YXRlIFBlcnNpc3RlbnRXU0lTU0JQQ29udGV4dCB3c2lTU0JQQ29udGV4dF87Ci0JcHJpdmF0ZSBQZXJzaXN0ZW50V1NJQVBDb250ZXh0IHdzaUFQQ29udGV4dF87Ci0JcHJpdmF0ZSBQZXJzaXN0ZW50V1NETFZhbGlkYXRpb25Db250ZXh0IHdzZGxWYWxpZGF0aW9uQ29udGV4dF87Ci0JcHJpdmF0ZSBQZXJzaXN0ZW50V2FpdEZvcldTRExWYWxpZGF0aW9uQ29udGV4dCB3YWl0Rm9yV3NkbFZhbGlkYXRpb25Db250ZXh0XzsKLQlwcml2YXRlIFBlcnNpc3RlbnRNZXJnZUNvbnRleHQgbWVyZ2VDb250ZXh0XzsKLQlwcml2YXRlIElJRmlsZTJVcmlDb252ZXJ0ZXIgaUZpbGUyVXJpQ29udmVydGVyXzsKLQlwcml2YXRlIGJvb2xlYW4gaXNJRmlsZTJVcmlDb252ZXJ0ZXJJbml0aWFsaXplZF8gPSBmYWxzZTsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElEID0gIm9yZy5lY2xpcHNlLndzdC53cyI7Ci0JCi0JLyoqCi0JICogVGhlIGNvbnN0cnVjdG9yLgotCSAqLwotCXB1YmxpYyBXU1BsdWdpbigpIHsKLQkJc3VwZXIoKTsKLQkJcGx1Z2luID0gdGhpczsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4uIEVxdWl2YWxlbnQgdG8gY2FsbGluZwotCSAqIChXU1BsdWdpbilQbGF0Zm9ybS5nZXRQbHVnaW4oIm9yZy5lY2xpcHNlLndzdC53cyIpOwotCSAqIEByZXR1cm4gVGhlIFdTUGx1Z2luIHNpbmdsZXRvbi4KLQkgKi8KLQkgc3RhdGljIHB1YmxpYyBXU1BsdWdpbiBnZXRJbnN0YW5jZSgpIHsKLQkgICByZXR1cm4gcGx1Z2luOwotCSB9Ci0JIAotCS8qKgotCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB1cG9uIHBsdWctaW4gYWN0aXZhdGlvbgotCSAqLwotCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0YXJ0KGNvbnRleHQpOwotCX0KLQotCS8qKgotCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBwbHVnLWluIGlzIHN0b3BwZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0b3AoY29udGV4dCk7Ci0JCXBsdWdpbiA9IG51bGw7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgV1NQbHVnaW4gZ2V0RGVmYXVsdCgpIHsKLQkJcmV0dXJuIHBsdWdpbjsKLQl9Ci0KLQotCS8qKgotCSAqIEdldCBXU0kgQ29udGV4dAotCSAqIEBkZXByZWNhdGVkIHVzZSBnZXRXU0lTU0JQQ29udGV4dCBvciBnZXRXU0lBUENvbnRleHQgaW5zdGVhZAotCSAqIAotCSAqLyAKLSBwdWJsaWMgUGVyc2lzdGVudFdTSUNvbnRleHQgZ2V0V1NJQ29udGV4dCgpIAotIAl7IC8vIGRlZmF1bHRpbmcgdG8gZ2V0IFdTSSBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGUgY29udGV4dAotIAkgIHJldHVybiBnZXRXU0lTU0JQQ29udGV4dCgpOwotIAl9Ci0gCi0gLyoqCi0JICogR2V0IFdTSSBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGUgQ29udGV4dAotCSAqIAotCSAqLyAKLSBwdWJsaWMgUGVyc2lzdGVudFdTSVNTQlBDb250ZXh0IGdldFdTSVNTQlBDb250ZXh0KCkgCi0JewotCSAgaWYgKHdzaVNTQlBDb250ZXh0XyA9PSBudWxsKQotCSAgCXsKLQkgIAkJd3NpU1NCUENvbnRleHRfID0gbmV3IFBlcnNpc3RlbnRXU0lTU0JQQ29udGV4dCgpOwotCSAgCQl3c2lTU0JQQ29udGV4dF8ubG9hZCgpOwotCSAgCX0KLQkgIHJldHVybiB3c2lTU0JQQ29udGV4dF87Ci0JfQotIAotIC8qKgotCSAqIEdldCBXU0kgQXR0YWNobWVudCBQcm9maWxlIENvbnRleHQKLQkgKiAKLQkgKi8gCi0gcHVibGljIFBlcnNpc3RlbnRXU0lBUENvbnRleHQgZ2V0V1NJQVBDb250ZXh0KCkgCi0JewotCSAgaWYgKHdzaUFQQ29udGV4dF8gPT0gbnVsbCkKLQkgIAl7Ci0JICAJCXdzaUFQQ29udGV4dF8gPSBuZXcgUGVyc2lzdGVudFdTSUFQQ29udGV4dCgpOwotCSAgCQl3c2lBUENvbnRleHRfLmxvYWQoKTsKLQkgIAl9Ci0JICByZXR1cm4gd3NpQVBDb250ZXh0XzsKLQl9Ci0KLQkgLyoqCi0JICogR2V0IFdTREwgVmFsaWF0aW9uIENvbnRleHQKLQkgKiAKLQkgKi8gCi0KLQlwdWJsaWMgUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dCBnZXRXU0RMVmFsaWRhdGlvbkNvbnRleHQoKSB7Ci0JCWlmICh3c2RsVmFsaWRhdGlvbkNvbnRleHRfID09IG51bGwpIHsKLQkJCXdzZGxWYWxpZGF0aW9uQ29udGV4dF8gPSBuZXcgUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dCgpOwotCQkJd3NkbFZhbGlkYXRpb25Db250ZXh0Xy5sb2FkKCk7Ci0JCX0KLQkJcmV0dXJuIHdzZGxWYWxpZGF0aW9uQ29udGV4dF87Ci0JfQotCQotCS8qKgotCSAqIEdldCBXYWl0IGZvciBXU0RMIFZhbGlhdGlvbiBDb250ZXh0Ci0JICogCi0JICovIAotCi0JcHVibGljIFBlcnNpc3RlbnRXYWl0Rm9yV1NETFZhbGlkYXRpb25Db250ZXh0IGdldFdhaXRGb3JXU0RMVmFsaWRhdGlvbkNvbnRleHQoKSB7Ci0JCWlmICh3YWl0Rm9yV3NkbFZhbGlkYXRpb25Db250ZXh0XyA9PSBudWxsKSB7Ci0JCQl3YWl0Rm9yV3NkbFZhbGlkYXRpb25Db250ZXh0XyA9IG5ldyBQZXJzaXN0ZW50V2FpdEZvcldTRExWYWxpZGF0aW9uQ29udGV4dCgpOwotCQkJd2FpdEZvcldzZGxWYWxpZGF0aW9uQ29udGV4dF8ubG9hZCgpOwotCQl9Ci0JCXJldHVybiB3YWl0Rm9yV3NkbFZhbGlkYXRpb25Db250ZXh0XzsKLQl9Ci0JCi0JLyoqCi0JICogR2V0IFNrZWxldG9uIE1lcmdlIENvbnRleHQKLQkgKiAKLQkgKi8gCi0gcHVibGljIFBlcnNpc3RlbnRNZXJnZUNvbnRleHQgZ2V0TWVyZ2VDb250ZXh0KCkgCi0JewotCSAgaWYgKG1lcmdlQ29udGV4dF8gPT0gbnVsbCkKLQkgIAl7Ci0JCSAgbWVyZ2VDb250ZXh0XyA9IG5ldyBQZXJzaXN0ZW50TWVyZ2VDb250ZXh0KCk7Ci0JCSAgbWVyZ2VDb250ZXh0Xy5sb2FkKCk7Ci0JICAJfQotCSAgcmV0dXJuIG1lcmdlQ29udGV4dF87Ci0JfQotIAotIC8qKgotICAqIDxwPgotICAqIEdldCB0aGUgcHJvZHVjdCdzIHJlZ2lzdGVyZWQgSUZpbGUgdG8gVVJJIGNvbnZlcnRlci4gSWYgdGhlcmUgaXMgbm8gY29udmVydGVyIHJlZ2lzdGVyZWQgdGhlbiB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBudWxsLgotICAqIEByZXR1cm4gVGhlIElGaWxlIHRvIFVSSSBjb252ZXJ0ZXIgcmVnaXN0ZXJlZCB3aXRoIHRoZSA8Y29kZT5vcmcuZWNsaXBzZS53c3Qud3MvSUZpbGUyVXJpQ29udmVydGVySWQ8L2NvZGU+IHByZWZlcmVuY2UgaW4gcGx1Z2luX2N1c3RvbWl6YXRpb24uaW5pCi0gICovCi0gcHVibGljIElJRmlsZTJVcmlDb252ZXJ0ZXIgZ2V0SUZpbGUyVXJpQ29udmVydGVyKCkKLSB7Ci0JIGlmICghaXNJRmlsZTJVcmlDb252ZXJ0ZXJJbml0aWFsaXplZF8pCi0JIHsKLQkJIFN0cmluZyBwcm9kdWN0Q29udmVydGVySWQgPSBnZXRQbHVnaW5QcmVmZXJlbmNlcygpLmdldERlZmF1bHRTdHJpbmcoIklGaWxlMlVyaUNvbnZlcnRlcklkIik7Ci0JCSBpZiAocHJvZHVjdENvbnZlcnRlcklkLmxlbmd0aCgpID4gMCkKLQkJIHsKLQkJCSBJRXh0ZW5zaW9uIGV4dGVuc2lvbiA9IFBsYXRmb3JtLmdldEV4dGVuc2lvblJlZ2lzdHJ5KCkuZ2V0RXh0ZW5zaW9uKHByb2R1Y3RDb252ZXJ0ZXJJZCk7Ci0JCQkgaWYgKGV4dGVuc2lvbiAhPSBudWxsKQotCQkJIHsKLQkJCSAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGNvbmZpZ0VsZW1lbnRzID0gZXh0ZW5zaW9uLmdldENvbmZpZ3VyYXRpb25FbGVtZW50cygpOwotCQkJICAgaWYgKGNvbmZpZ0VsZW1lbnRzLmxlbmd0aCA+IDApCi0JCQkgICB7Ci0JCQkJIHRyeQotCQkJCSB7Ci0JCQkJICAgaUZpbGUyVXJpQ29udmVydGVyXyA9IChJSUZpbGUyVXJpQ29udmVydGVyKWNvbmZpZ0VsZW1lbnRzWzBdLmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oImNsYXNzIik7Ci0JCQkJIH0KLQkJCQkgY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkKLQkJCQkgewotCQkJCQkgZ2V0TG9nKCkubG9nKGUuZ2V0U3RhdHVzKCkpOwotCQkJCSB9Ci0JCQkgICB9Ci0JCQkgfQotCQkgfQotCQkgaXNJRmlsZTJVcmlDb252ZXJ0ZXJJbml0aWFsaXplZF8gPSB0cnVlOwotCSB9Ci0JIHJldHVybiBpRmlsZTJVcmlDb252ZXJ0ZXJfOwotIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvTWVyZ2VEZWZhdWx0cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9NZXJnZURlZmF1bHRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MjU5OTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9NZXJnZURlZmF1bHRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MDMgICAxMjg4Mjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcxMTA5ICAgMjA5MDc1IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzOwotCi1wdWJsaWMgY2xhc3MgTWVyZ2VEZWZhdWx0cwotewotIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gUFJFRkVSRU5DRV9TS0VMRVRPTl9NRVJHRV9ERUZBVUxUID0gdHJ1ZTsKLSAKLSAvKioKLSAgKiAKLSAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGRlZmF1bHQgc2V0dGluZyBmb3Igc2tlbGV0b24gbWVyZ2UuCi0gICovCi0gcHVibGljIHN0YXRpYyBib29sZWFuIGdldFNrZWxldG9uTWVyZ2VEZWZhdWx0KCkKLSB7Ci0JcmV0dXJuIFBSRUZFUkVOQ0VfU0tFTEVUT05fTUVSR0VfREVGQVVMVDsKLSB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3ByZWZlcmVuY2VzL01pZ3JhdGVXU0lwcmVmZXJlbmNlc0xvYWRMaXN0ZW5lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9NaWdyYXRlV1NJcHJlZmVyZW5jZXNMb2FkTGlzdGVuZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkxMGIxYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3ByZWZlcmVuY2VzL01pZ3JhdGVXU0lwcmVmZXJlbmNlc0xvYWRMaXN0ZW5lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTEwNSAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MTIxOCAgIDIwOTg1OCBlcGV0ZXJzQGNhLmlibS5jb20gLSBFcmljIFBldGVycywgRW5oYW5jaW5nIHNlcnZpY2UgcG9saWN5IGZyYW1ld29yayBhbmQgVUkKLSAqIDIwMDgwMzE4ICAgMjIzMTE4IGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIG1ldGFkYXRhIHJlcXVpcmVkIGluIFdTLUkgcHJvZmlsZXMgdG8gc3VwcG9ydCBlZGl0b3JzICYgdmFsaWRhdG9ycwotICogMjAwODAzMTggICAyMjE1NzggcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUHJlZmVyZW5jZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlF1YWxpZmllZE5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLnByZWZlcmVuY2VzLklFY2xpcHNlUHJlZmVyZW5jZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLnByZWZlcmVuY2VzLkluc3RhbmNlU2NvcGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeUFjdGl2YXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeVBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyOwotCi1wdWJsaWMgY2xhc3MgTWlncmF0ZVdTSXByZWZlcmVuY2VzTG9hZExpc3RlbmVyIGltcGxlbWVudHMgSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyCi17Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIEVOVU1fSURfVkFMVUVTID0geyAib3JnLmVjbGlwc2Uud3N0LnN1Zy5yZXF1aXJlIiwgIm9yZy5lY2xpcHNlLndzdC5zdWcuc3VnZ2VzdCIsICJvcmcuZWNsaXBzZS53c3Quc3VnLmlnbm9yZSJ9OyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJAotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBDT05URVhUX0lEUyAgICA9IHsgUGVyc2lzdGVudFdTSUNvbnRleHQuU1RPUF9OT05fV1NJLCBQZXJzaXN0ZW50V1NJQ29udGV4dC5XQVJOX05PTl9XU0ksIFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJIH07Ci0gIAotICBwdWJsaWMgdm9pZCBsb2FkKCkKLSAgewotICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZSB1c2VyIGhhcyBzZXQgYW55IFdTSSBwcmVmZXJlbmNlcy4KLSAgICAvLyBJZiBub3Qgd2Ugd2FudCB0byBkZWZhdWx0IFdTSSBwcmVmZXJlbmNlcyB0byBhbnkgb2xkIFdTSSBwcmVmZXJlbmNlcyB0aGF0Ci0gICAgLy8gaGF2ZSBiZWVuIHNldC4KLSAgICAKLSAgICBJRWNsaXBzZVByZWZlcmVuY2VzICAgcHJlZmVyZW5jZXMgID0gbmV3IEluc3RhbmNlU2NvcGUoKS5nZXROb2RlKCBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLlBMVUdJTl9JRCApOyAgICAKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgYXBWYWx1ZSAgICAgID0gcHJlZmVyZW5jZXMuZ2V0KCBXU0lTZXJ2aWNlUG9saWNpZXNDb25zdGFudHMuU2VydmljZVBvbGljeUlEX0FQMTAgKyAiLiIgKyBJUG9saWN5U3RhdGUuRGVmYXVsdFZhbHVlS2V5LCBudWxsICk7IC8vJE5PTi1OTFMtMSQKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgc3NicFZhbHVlICAgID0gcHJlZmVyZW5jZXMuZ2V0KCBXU0lTZXJ2aWNlUG9saWNpZXNDb25zdGFudHMuU2VydmljZVBvbGljeUlEX1NTQlAxMCArICIuIiArIElQb2xpY3lTdGF0ZS5EZWZhdWx0VmFsdWVLZXksIG51bGwgKTsgLy8kTk9OLU5MUy0xJAotICAgIFByZWZlcmVuY2VzICAgICAgICAgICBvbGRQcmVmcyAgICAgPSBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFBsdWdpblByZWZlcmVuY2VzKCk7Ci0gICAgU3RyaW5nW10gICAgICAgICAgICAgIG9sZFByb3BOYW1lcyA9IG9sZFByZWZzLnByb3BlcnR5TmFtZXMoKTsKLSAgICAKLSAgICBpZiggYXBWYWx1ZSA9PSBudWxsICkKLSAgICB7Ci0gICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gcGxhdGZvcm0gICAgID0gU2VydmljZVBvbGljeVBsYXRmb3JtLmdldEluc3RhbmNlKCk7Ci0gICAgICBJU2VydmljZVBvbGljeSAgICAgICAgYXBQb2xpY3kgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggV1NJU2VydmljZVBvbGljaWVzQ29uc3RhbnRzLlNlcnZpY2VQb2xpY3lJRF9BUDEwICk7Ci0gICAgICBJUG9saWN5U3RhdGUgICAgICAgICAgYXBTdGF0ZSAgICAgID0gYXBQb2xpY3kuZ2V0UG9saWN5U3RhdGUoKTsKLSAgICAgIAotICAgICAgaWYoIGluZGV4T2ZTdHJpbmcoICJub25XU0lBUENvbXBsaWFuY2UiLCBvbGRQcm9wTmFtZXMgKSAhPSAtMSApIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgLy8gV2UgaGF2ZSBhbiBvbGQgQVAgdmFsdWUgc28gd2Ugd2lsbCB1c2UgaXQncyB2YWx1ZSBhcyB0aGUgZGVmYXVsdCBmb3Igc2V0dGluZ3MuCi0gICAgICAgIFN0cmluZyBvbGRBcFZhbHVlID0gb2xkUHJlZnMuZ2V0U3RyaW5nKCAibm9uV1NJQVBDb21wbGlhbmNlIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgIGludCAgICBvbGRBcEluZGV4ID0gaW5kZXhPZlN0cmluZyggb2xkQXBWYWx1ZSwgQ09OVEVYVF9JRFMgKTsKLSAgICAgICAgU3RyaW5nIG5ld0FwVmFsdWUgPSBudWxsOwotICAgICAgICAKLSAgICAgICAgaWYoIG9sZEFwSW5kZXggPCBFTlVNX0lEX1ZBTFVFUy5sZW5ndGggKQotICAgICAgICB7Ci0gICAgICAgICAgbmV3QXBWYWx1ZSA9IEVOVU1fSURfVkFMVUVTW29sZEFwSW5kZXhdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiggbmV3QXBWYWx1ZSAhPSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIGFwU3RhdGUucHV0VmFsdWUoIElQb2xpY3lTdGF0ZS5EZWZhdWx0VmFsdWVLZXksIG5ld0FwVmFsdWUgKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCQkvLyBhbHNvIG5lZWQgdG8gY2hlY2sgaWYgYW55IHByb2plY3Qgc3BlY2lmaWMgcHJlZmVyZW5jZXMgd2VyZSBzZXQKLQkJCVF1YWxpZmllZE5hbWUgbmFtZSA9IG5ldyBRdWFsaWZpZWROYW1lKFdTUGx1Z2luLklELAotCQkJCQkibm9uV1NJQVBDb21wbGlhbmNlIik7IC8vJE5PTi1OTFMtMSQKLQkJCUlQcm9qZWN0W10gcHJvamVjdHMgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpCi0JCQkJCS5nZXRQcm9qZWN0cygpOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBwcm9qZWN0cy5sZW5ndGg7IGkrKykgewotCQkJCXRyeSB7Ci0JCQkJCUlQcm9qZWN0IHByb2plY3QgPSBwcm9qZWN0c1tpXTsKLQkJCQkJU3RyaW5nIG9sZFByb3BlcnR5ID0gbnVsbDsKLQkJCQkJCW9sZFByb3BlcnR5ID0gcHJvamVjdC5nZXRQZXJzaXN0ZW50UHJvcGVydHkobmFtZSk7Ci0JCQkJCWlmIChvbGRQcm9wZXJ0eSAhPSBudWxsICYmICFvbGRQcm9wZXJ0eS5lcXVhbHMoIiIpKSB7IC8vJE5PTi1OTFMtMSQKLQkJCQkJCWludCBvbGRBcEluZGV4ID0gaW5kZXhPZlN0cmluZyhvbGRQcm9wZXJ0eSwgQ09OVEVYVF9JRFMpOwotCQkJCQkJU3RyaW5nIG5ld0FwVmFsdWUgPSBudWxsOwotCQkJCQkJaWYgKG9sZEFwSW5kZXggIT0gLTEgJiYgb2xkQXBJbmRleCA8IEVOVU1fSURfVkFMVUVTLmxlbmd0aCkgewotCQkJCQkJCW5ld0FwVmFsdWUgPSBFTlVNX0lEX1ZBTFVFU1tvbGRBcEluZGV4XTsKLQkJCQkJCX0KLQotCQkJCQkJaWYgKG5ld0FwVmFsdWUgIT0gbnVsbCkgewotCQkJCQkJCWFwU3RhdGUgPSBhcFBvbGljeS5nZXRQb2xpY3lTdGF0ZShwcm9qZWN0KTsKLQkJCQkJCQlwbGF0Zm9ybS5zZXRQcm9qZWN0UHJlZmVyZW5jZXNFbmFibGVkKHByb2plY3QsIHRydWUpOwotCQkJCQkgICAgICAgIGFwU3RhdGUucHV0VmFsdWUoIElQb2xpY3lTdGF0ZS5EZWZhdWx0VmFsdWVLZXksIG5ld0FwVmFsdWUgKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotCQkJCQkvL2lnbm9yZSB0aGlzIHByb2plY3QKLQkJCQl9Ci0JCQl9Ci0gICAgfQotCi0KLSAgICAKLSAgICBpZiggc3NicFZhbHVlID09IG51bGwgKQotICAgIHsKLSAgICAgIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybSBwbGF0Zm9ybSAgICAgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKTsKLSAgICAgIElTZXJ2aWNlUG9saWN5ICAgICAgICBzc2JwUG9saWN5ICAgPSBwbGF0Zm9ybS5nZXRTZXJ2aWNlUG9saWN5KCBXU0lTZXJ2aWNlUG9saWNpZXNDb25zdGFudHMuU2VydmljZVBvbGljeUlEX1NTQlAxMCApOwotICAgICAgSVBvbGljeVN0YXRlICAgICAgICAgIHNzYnBTdGF0ZSAgICA9IHNzYnBQb2xpY3kuZ2V0UG9saWN5U3RhdGUoKTsKLSAgICAgIAotICAgICAgaWYoIGluZGV4T2ZTdHJpbmcoICJub25XU0lTU0JQQ29tcGxpYW5jZSIsIG9sZFByb3BOYW1lcyApICE9IC0xICkgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICAvLyBXZSBoYXZlIGFuIG9sZCBTU0JQIHZhbHVlIHNvIHdlIHdpbGwgdXNlIGl0J3MgdmFsdWUgYXMgdGhlIGRlZmF1bHQgZm9yIHNldHRpbmdzLgotICAgICAgICBTdHJpbmcgb2xkU1NCUFZhbHVlID0gb2xkUHJlZnMuZ2V0U3RyaW5nKCAibm9uV1NJU1NCUENvbXBsaWFuY2UiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgICAgaW50ICAgIG9sZFNTQlBJbmRleCA9IGluZGV4T2ZTdHJpbmcoIG9sZFNTQlBWYWx1ZSwgQ09OVEVYVF9JRFMgKTsKLSAgICAgICAgU3RyaW5nIG5ld1NTQlBWYWx1ZSA9IG51bGw7Ci0gICAgICAgIAotICAgICAgICBpZiggb2xkU1NCUEluZGV4IDwgRU5VTV9JRF9WQUxVRVMubGVuZ3RoICkKLSAgICAgICAgewotICAgICAgICAgIG5ld1NTQlBWYWx1ZSA9IEVOVU1fSURfVkFMVUVTW29sZFNTQlBJbmRleF07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmKCBuZXdTU0JQVmFsdWUgIT0gbnVsbCApCi0gICAgICAgIHsKLSAgICAgICAgCXNzYnBTdGF0ZS5wdXRWYWx1ZSggSVBvbGljeVN0YXRlLkRlZmF1bHRWYWx1ZUtleSwgbmV3U1NCUFZhbHVlICk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQkJLy8gYWxzbyBuZWVkIHRvIGNoZWNrIGlmIGFueSBwcm9qZWN0IHNwZWNpZmljIHByZWZlcmVuY2VzIHdlcmUgc2V0Ci0JCVF1YWxpZmllZE5hbWUgbmFtZSA9IG5ldyBRdWFsaWZpZWROYW1lKFdTUGx1Z2luLklELAotCQkJCSJub25XU0lTU0JQQ29tcGxpYW5jZSIpOyAvLyROT04tTkxTLTEkCi0JCUlQcm9qZWN0W10gcHJvamVjdHMgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpCi0JCQkJLmdldFByb2plY3RzKCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgcHJvamVjdHMubGVuZ3RoOyBpKyspIHsKLQkJCXRyeSB7Ci0JCQkJSVByb2plY3QgcHJvamVjdCA9IHByb2plY3RzW2ldOwotCQkJCVN0cmluZyBvbGRQcm9wZXJ0eSA9IG51bGw7Ci0JCQkJCW9sZFByb3BlcnR5ID0gcHJvamVjdC5nZXRQZXJzaXN0ZW50UHJvcGVydHkobmFtZSk7Ci0JCQkJaWYgKG9sZFByb3BlcnR5ICE9IG51bGwgJiYgIW9sZFByb3BlcnR5LmVxdWFscygiIikpIHsgLy8kTk9OLU5MUy0xJAotCQkJCQlpbnQgb2xkU1NCUEluZGV4ID0gaW5kZXhPZlN0cmluZyhvbGRQcm9wZXJ0eSwgQ09OVEVYVF9JRFMpOwotCQkJCQlTdHJpbmcgbmV3U1NCUFZhbHVlID0gbnVsbDsKLQkJCQkJaWYgKG9sZFNTQlBJbmRleCAhPSAtMSAmJiBvbGRTU0JQSW5kZXggPCBFTlVNX0lEX1ZBTFVFUy5sZW5ndGgpIHsKLQkJCQkJCW5ld1NTQlBWYWx1ZSA9IEVOVU1fSURfVkFMVUVTW29sZFNTQlBJbmRleF07Ci0JCQkJCX0KLQotCQkJCQlpZiAobmV3U1NCUFZhbHVlICE9IG51bGwpIHsKLQkJCQkJCXNzYnBTdGF0ZSA9IHNzYnBQb2xpY3kuZ2V0UG9saWN5U3RhdGUocHJvamVjdCk7Ci0JCQkJCQlwbGF0Zm9ybS5zZXRQcm9qZWN0UHJlZmVyZW5jZXNFbmFibGVkKHByb2plY3QsIHRydWUpOwotCQkJCQkJc3NicFN0YXRlLnB1dFZhbHVlKCBJUG9saWN5U3RhdGUuRGVmYXVsdFZhbHVlS2V5LCBuZXdTU0JQVmFsdWUgKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotCQkJCS8vaWdub3JlIHRoaXMgcHJvamVjdAotCQkJfQotCQl9Ci0KLSAgICB9Ci0gIH0KLSAgCi0gIHByaXZhdGUgaW50IGluZGV4T2ZTdHJpbmcoIFN0cmluZyB0YXJnZXQsIFN0cmluZ1tdIHZhbHVlcyApCi0gIHsKLSAgICBpbnQgcmVzdWx0ID0gLTE7Ci0gICAgCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleDwgdmFsdWVzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgewotICAgICAgU3RyaW5nIHZhbHVlID0gdmFsdWVzW2luZGV4XTsKLSAgICAgIAotICAgICAgaWYoIHZhbHVlLmVxdWFscyggdGFyZ2V0ICkgKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBpbmRleDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvUGVyc2lzdGVudE1lcmdlQ29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9QZXJzaXN0ZW50TWVyZ2VDb250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYzA3Y2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9QZXJzaXN0ZW50TWVyZ2VDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjA0MDMgICAxMjg4Mjcga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dC5QZXJzaXN0ZW50Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotCi0KLXB1YmxpYyBjbGFzcyBQZXJzaXN0ZW50TWVyZ2VDb250ZXh0IGV4dGVuZHMgUGVyc2lzdGVudENvbnRleHQKLXsKLQkgLyoqCi0JICAqIFRoaXMgY29uc3RhbnQgc3RyaW5nIGlzIHVzZWQgdG8gbG9va3VwIHRoZSBlbmFibGUgc2tlbGV0b24gbWVyZ2UgZ2VuZXJhbCBwcmVmZXJlbmNlIGZyb20KLQkgICogdGhlIHBsdWdpbnMgbG9jYWwgcHJlZmVyZW5jZXMgc3RvcmUuCi0JKiovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRkVSRU5DRV9TS0VMRVRPTl9NRVJHRSA9ICJza2VsZXRvbk1lcmdlIjsKLQkKLSAgcHJpdmF0ZSBzdGF0aWMgUGVyc2lzdGVudE1lcmdlQ29udGV4dCBjb250ZXh0XyA9IG51bGw7Ci0gIAotICBwdWJsaWMgc3RhdGljIFBlcnNpc3RlbnRNZXJnZUNvbnRleHQgZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgaWYoIGNvbnRleHRfID09IG51bGwgKQotICAgIHsKLSAgICAgIGNvbnRleHRfID0gbmV3IFBlcnNpc3RlbnRNZXJnZUNvbnRleHQoKTsKLSAgICAgIGNvbnRleHRfLmxvYWQoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGNvbnRleHRfOwotICB9Ci0gIAotICBwdWJsaWMgUGVyc2lzdGVudE1lcmdlQ29udGV4dCgpCi0gIHsKLQkgIHN1cGVyKFdTUGx1Z2luLmdldEluc3RhbmNlKCkpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgbG9hZCgpCi0gIHsKLSAgICBzZXREZWZhdWx0KFBSRUZFUkVOQ0VfU0tFTEVUT05fTUVSR0UsIE1lcmdlRGVmYXVsdHMuZ2V0U2tlbGV0b25NZXJnZURlZmF1bHQoKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRTa2VsZXRvbk1lcmdlRW5hYmxlZChib29sZWFuIGVuYWJsZSkKLSAgewotICAgIHNldFZhbHVlKFBSRUZFUkVOQ0VfU0tFTEVUT05fTUVSR0UsIGVuYWJsZSk7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBpc1NrZWxldG9uTWVyZ2VFbmFibGVkKCkKLSAgewotICAgIHJldHVybiBnZXRWYWx1ZUFzQm9vbGVhbihQUkVGRVJFTkNFX1NLRUxFVE9OX01FUkdFKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3ByZWZlcmVuY2VzL1BlcnNpc3RlbnRXU0RMVmFsaWRhdGlvbkNvbnRleHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjFjMDQ3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0LlBlcnNpc3RlbnRDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci0KLQotCi1wdWJsaWMgY2xhc3MgUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dCBleHRlbmRzIFBlcnNpc3RlbnRDb250ZXh0Ci17Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkFMSURBVEVfTk9fV1NETCA9ICIwIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBWQUxJREFURV9SRU1PVEVfV1NETCA9ICIxIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBWQUxJREFURV9BTExfV1NETCA9ICIyIjsKLQotCXByaXZhdGUgU3RyaW5nIHdzZGxfdmFsaWRhdGlvbiA9ICJXU0RMX1ZBTElEQVRJT04iOwotCi1wdWJsaWMgUGVyc2lzdGVudFdTRExWYWxpZGF0aW9uQ29udGV4dCAoKSAKLXsKLQlzdXBlciggIFdTUGx1Z2luLmdldEluc3RhbmNlKCkpOwotCQotfQotCi1wdWJsaWMgdm9pZCBsb2FkKCkgCi17Ci0Jc2V0RGVmYXVsdCh3c2RsX3ZhbGlkYXRpb24sIFZBTElEQVRFX05PX1dTREwpOwotfQotCi0vLyB0byBiZSB1c2VkIG9ubHkgYnkgdGhlIHByZWZlcmVuY2UgcGFnZQotcHVibGljIHZvaWQgdXBkYXRlV1NETFZhbGlkYXRpb24gKCBTdHJpbmcgdmFsdWUpCi17Ci0gCQlzZXRWYWx1ZSggd3NkbF92YWxpZGF0aW9uLCB2YWx1ZSk7Ci19Ci0KLXB1YmxpYyBTdHJpbmcgZ2V0UGVyc2lzdGVudFdTRExWYWxpZGF0aW9uICgpCi17Ci0JU3RyaW5nIHByb3BlcnR5ID0gZ2V0VmFsdWVBc1N0cmluZyh3c2RsX3ZhbGlkYXRpb24pOwotLy8JIGRlZmF1bHQgdG8gSWdub3JlIGlmIG5vIGluaXQgaGFzIGJlZW4gZG9uZSBmcm9tIGluaSBmaWxlCi0JaWYgKHByb3BlcnR5ID09IG51bGwgfHwgcHJvcGVydHkuZXF1YWxzKCIiKSkgewotCQlzZXRWYWx1ZSggd3NkbF92YWxpZGF0aW9uLCBWQUxJREFURV9OT19XU0RMKTsKLQkJcmV0dXJuIFZBTElEQVRFX05PX1dTREw7Ci0JfQotCWVsc2UKLQkJcmV0dXJuIHByb3BlcnR5OwotfQotCi1wdWJsaWMgU3RyaW5nIGdldERlZmF1bHQoKQotewotCXJldHVybiBnZXREZWZhdWx0U3RyaW5nKHdzZGxfdmFsaWRhdGlvbik7Ci19Ci0KLXB1YmxpYyBib29sZWFuIFZhbGlkYXRlTm9XU0RMKCkKLXsKLQkgcmV0dXJuIFZBTElEQVRFX05PX1dTREwuZXF1YWxzKGdldFBlcnNpc3RlbnRXU0RMVmFsaWRhdGlvbigpKTsKLX0KLQotcHVibGljIGJvb2xlYW4gV2Fybk5vbldTSUNvbXBsaWFuY2VzKCkKLXsKLQkgcmV0dXJuIFZBTElEQVRFX1JFTU9URV9XU0RMLmVxdWFscyhnZXRQZXJzaXN0ZW50V1NETFZhbGlkYXRpb24oKSk7Ci19Ci0KLXB1YmxpYyBib29sZWFuIElnbm9yZU5vbldTSUNvbXBsaWFuY2VzKCkKLXsKLQkgcmV0dXJuIFZBTElEQVRFX0FMTF9XU0RMLmVxdWFscyhnZXRQZXJzaXN0ZW50V1NETFZhbGlkYXRpb24oKSk7Ci19Ci0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9QZXJzaXN0ZW50V1NJQVBDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3ByZWZlcmVuY2VzL1BlcnNpc3RlbnRXU0lBUENvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U1NWI3Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3ByZWZlcmVuY2VzL1BlcnNpc3RlbnRXU0lBUENvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDMxOCAgIDIyMzExOCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBtZXRhZGF0YSByZXF1aXJlZCBpbiBXUy1JIHByb2ZpbGVzIHRvIHN1cHBvcnQgZWRpdG9ycyAmIHZhbGlkYXRvcnMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5RdWFsaWZpZWROYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5Xc3RXU1BsdWdpbk1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci0KLQotCi1wdWJsaWMgY2xhc3MgUGVyc2lzdGVudFdTSUFQQ29udGV4dCBleHRlbmRzIFBlcnNpc3RlbnRXU0lDb250ZXh0Ci17Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5PTl9XU0lfQVBfQ09NUExJQU5DRSA9ICJub25XU0lBUENvbXBsaWFuY2UiOwotCi1wdWJsaWMgUGVyc2lzdGVudFdTSUFQQ29udGV4dCAoKSAKLXsKLQlzdXBlcigpOwotCW5vbl93c2lfY29tcGxpYW5jZSA9IE5PTl9XU0lfQVBfQ09NUExJQU5DRTsKLQluYW1lID0gbmV3IFF1YWxpZmllZE5hbWUoV1NQbHVnaW4uSUQgLCBub25fd3NpX2NvbXBsaWFuY2UpOwotCXdzaVdhcm5pbmdfID0gV3N0V1NQbHVnaW5NZXNzYWdlcy5XU0lfQVBfV0FSTklORzsKLQl3c2lFcnJvcl8gPSBXc3RXU1BsdWdpbk1lc3NhZ2VzLldTSV9BUF9FUlJPUjsKLX0KLQotcHVibGljIFN0cmluZyBnZXRQZXJzaXN0ZW50V1NJQ29tcGxpYW5jZSAoKQotewotCVN0cmluZyBwcm9wZXJ0eSA9IGdldFZhbHVlQXNTdHJpbmcobm9uX3dzaV9jb21wbGlhbmNlKTsKLQkvLyBkZWZhdWx0IHRvIFdhcm5pbmcgaWYgbm8gaW5pdCBoYXMgYmVlbiBkb25lIGZyb20gaW5pIGZpbGUKLQlpZiAocHJvcGVydHkgPT0gbnVsbCB8fCBwcm9wZXJ0eS5lcXVhbHMoIiIpKSB7Ci0JCXNldFZhbHVlKCBub25fd3NpX2NvbXBsaWFuY2UsIFdBUk5fTk9OX1dTSSk7Ci0JCXJldHVybiBXQVJOX05PTl9XU0k7Ci0JfQotCWVsc2UKLQkJcmV0dXJuIHByb3BlcnR5OwotfQotCi1wcm90ZWN0ZWQgU3RyaW5nIGdldFNlcnZpY2VQb2xpY3lJZCgpCi17Ci0gIHJldHVybiBXU0lTZXJ2aWNlUG9saWNpZXNDb25zdGFudHMuU2VydmljZVBvbGljeUlEX0FQMTA7Ci19ICAKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9QZXJzaXN0ZW50V1NJQ29udGV4dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9QZXJzaXN0ZW50V1NJQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTYyNGYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFdTSUNvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzExMDggICAyMDkyNjcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwODAzMTggICAyMjMxMTggZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgbWV0YWRhdGEgcmVxdWlyZWQgaW4gV1MtSSBwcm9maWxlcyB0byBzdXBwb3J0IGVkaXRvcnMgJiB2YWxpZGF0b3JzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUXVhbGlmaWVkTmFtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29udGV4dC5QZXJzaXN0ZW50Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LkVudmlyb25tZW50U2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklMb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLldzdFdTUGx1Z2luTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTsKLQotCi0KLXB1YmxpYyBjbGFzcyBQZXJzaXN0ZW50V1NJQ29udGV4dCBleHRlbmRzIFBlcnNpc3RlbnRDb250ZXh0Ci17Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RPUF9OT05fV1NJID0gIjAiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdBUk5fTk9OX1dTSSA9ICIxIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJR05PUkVfTk9OX1dTSSA9ICIyIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT0xMT1dfV1NJX1BSRUZFUkVOQ0UgPSAiMyI7Ci0JCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gRU5VTV9JRF9WQUxVRVMgPSB7ICJvcmcuZWNsaXBzZS53c3Quc3VnLnJlcXVpcmUiLCAib3JnLmVjbGlwc2Uud3N0LnN1Zy5zdWdnZXN0IiwgIm9yZy5lY2xpcHNlLndzdC5zdWcuaWdub3JlIn07Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIENPTlRFWFRfSURTICAgID0geyBTVE9QX05PTl9XU0ksIFdBUk5fTk9OX1dTSSwgSUdOT1JFX05PTl9XU0kgfTsKLQkKLQlwcm90ZWN0ZWQgUXVhbGlmaWVkTmFtZSBuYW1lID0gbnVsbDsgLy8gc2V0IGluIHN1YmNsYXNzCi0JcHJvdGVjdGVkIFN0cmluZyBub25fd3NpX2NvbXBsaWFuY2U7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5PTl9XU0lfU1NCUF9DT01QTElBTkNFID0gIm5vbldTSVNTQlBDb21wbGlhbmNlIjsKLQlwcm90ZWN0ZWQgU3RyaW5nIHdzaVdhcm5pbmdfOyAvLyBzZXQgaW4gc3ViY2xhc3MKLQlwcm90ZWN0ZWQgU3RyaW5nIHdzaUVycm9yXzsgLy8gc2V0IGluIHN1YmNsYXNzCi0KLXB1YmxpYyBQZXJzaXN0ZW50V1NJQ29udGV4dCAoKSAKLXsKLQlzdXBlciggIFdTUGx1Z2luLmdldEluc3RhbmNlKCkpOwotCQotLy8gIE5PVEU6ICBuYW1lLCB3c2lXYXJuaW5nXyBhbmQgd3NpRXJyb3JfIHNob3VsZCBiZSBzZXQgaW4gdGhlIHN1YmNsYXNzZXMuICBUaGlzIGlzIHByb3ZpZGluZyBkZWZhdWx0aW5nIG9ubHkuCi0Jbm9uX3dzaV9jb21wbGlhbmNlID0gTk9OX1dTSV9TU0JQX0NPTVBMSUFOQ0U7Ci0JbmFtZSA9IG5ldyBRdWFsaWZpZWROYW1lKFdTUGx1Z2luLklEICwgbm9uX3dzaV9jb21wbGlhbmNlKTsKLQl3c2lXYXJuaW5nXyA9IFdzdFdTUGx1Z2luTWVzc2FnZXMuV1NJX1NTQlBfV0FSTklORzsKLQl3c2lFcnJvcl8gPSBXc3RXU1BsdWdpbk1lc3NhZ2VzLldTSV9TU0JQX0VSUk9SOwotfQotCi1wdWJsaWMgdm9pZCBsb2FkKCkgCi17Ci0JLy8gbGV0IHRoZSBkZWZhdWx0IGJlIHJlYWQgZnJvbSBwbHVnaW5fY29zdG9taXphdGlvbi5pbmkgZmlsZQotCS8vIHNldERlZmF1bHQobm9uX3dzaV9jb21wbGlhbmNlLCBXQVJOX05PTl9XU0kpOwotfQotCi0vLyB0byBiZSB1c2VkIG9ubHkgYnkgdGhlIHByZWZlcmVuY2UgcGFnZQotcHVibGljIHZvaWQgdXBkYXRlV1NJQ29tcGxpYW5jZXMgKCBTdHJpbmcgdmFsdWUpCi17Ci0gCQlzZXRWYWx1ZSggbm9uX3dzaV9jb21wbGlhbmNlLCB2YWx1ZSk7Ci19Ci0KLXB1YmxpYyBTdHJpbmcgZ2V0UGVyc2lzdGVudFdTSUNvbXBsaWFuY2UgKCkKLXsKLQlTdHJpbmcgcHJvcGVydHkgPSBnZXRWYWx1ZUFzU3RyaW5nKG5vbl93c2lfY29tcGxpYW5jZSk7Ci0vLwkgZGVmYXVsdCB0byBXYXJuaW5nIGlmIG5vIGluaXQgaGFzIGJlZW4gZG9uZSBmcm9tIGluaSBmaWxlCi0JaWYgKHByb3BlcnR5ID09IG51bGwgfHwgcHJvcGVydHkuZXF1YWxzKCIiKSkgewotCQlzZXRWYWx1ZSggbm9uX3dzaV9jb21wbGlhbmNlLCBXQVJOX05PTl9XU0kpOwotCQlyZXR1cm4gV0FSTl9OT05fV1NJOwotCX0KLQllbHNlCi0JCXJldHVybiBwcm9wZXJ0eTsKLX0KLQotcHVibGljIGJvb2xlYW4gU3RvcE5vbldTSUNvbXBsaWFuY2VzKCkKLXsKLQkgcmV0dXJuIFNUT1BfTk9OX1dTSS5lcXVhbHMoZ2V0UGVyc2lzdGVudFdTSUNvbXBsaWFuY2UoKSk7Ci19Ci0KLXB1YmxpYyBib29sZWFuIFdhcm5Ob25XU0lDb21wbGlhbmNlcygpCi17Ci0JIHJldHVybiBXQVJOX05PTl9XU0kuZXF1YWxzKGdldFBlcnNpc3RlbnRXU0lDb21wbGlhbmNlKCkpOwotfQotCi1wdWJsaWMgYm9vbGVhbiBJZ25vcmVOb25XU0lDb21wbGlhbmNlcygpCi17Ci0JIHJldHVybiBJR05PUkVfTk9OX1dTSS5lcXVhbHMoZ2V0UGVyc2lzdGVudFdTSUNvbXBsaWFuY2UoKSk7Ci19Ci0KLS8vIHRvIGJlIHVzZWQgb25seSBieSB0aGUgcHJvcGVydHkgcGFnZQotcHVibGljIHZvaWQgdXBkYXRlUHJvamVjdFdTSUNvbXBsaWFuY2VzICggSVByb2plY3QgcHJvamVjdCwgU3RyaW5nIHZhbHVlKQotewotICAgIHRyeSB7Ci0JCXByb2plY3Quc2V0UGVyc2lzdGVudFByb3BlcnR5KG5hbWUsIHZhbHVlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgeyAKLSAgICAJU3lzdGVtLm91dC5wcmludGxuKCJObyBzdWNoIFByb2plY3QiKTsKLSAgICAJSUxvZyBsb2cgPSBFbnZpcm9ubWVudFNlcnZpY2UuZ2V0RWNsaXBzZUxvZygpOwotICAgIAlsb2cubG9nKElMb2cuSU5GTywgNTA4NCwgdGhpcywgInVwZGF0ZVByb2plY3RXU0lDb21wbGlhbmNlcyIsICJObyBzdWNoIFByb2plY3QgIitwcm9qZWN0KTsKLSAgICB9Ci19Ci0KLXB1YmxpYyBib29sZWFuIHByb2plY3RTdG9wTm9uV1NJQ29tcGxpYW5jZXMoSVByb2plY3QgcHJvamVjdCkKLXsKLSAJcmV0dXJuIFNUT1BfTk9OX1dTSS5lcXVhbHMoZ2V0UHJvamVjdFBlcnNpc3RlbnRQcm9wZXJ0eShwcm9qZWN0KSk7ICAgIAotfQotCi1wdWJsaWMgYm9vbGVhbiBwcm9qZWN0V2Fybk5vbldTSUNvbXBsaWFuY2VzKElQcm9qZWN0IHByb2plY3QpCi17Ci0gCXJldHVybiBXQVJOX05PTl9XU0kuZXF1YWxzKGdldFByb2plY3RQZXJzaXN0ZW50UHJvcGVydHkocHJvamVjdCkpOyAgICAKLX0KLQotcHVibGljIGJvb2xlYW4gcHJvamVjdElnbm9yZU5vbldTSUNvbXBsaWFuY2VzKElQcm9qZWN0IHByb2plY3QpCi17Ci0gCXJldHVybiBJR05PUkVfTk9OX1dTSS5lcXVhbHMoZ2V0UHJvamVjdFBlcnNpc3RlbnRQcm9wZXJ0eShwcm9qZWN0KSk7ICAgIAotfQotCi0KLS8vIHRvIGJlIHVzZWQgb25seSBieSB0aGUgcHJvcGVydHkgcGFnZQotcHVibGljIGJvb2xlYW4gcHJvamVjdEZvbGxvd1dTSVByZWZlcmFuY2UoSVByb2plY3QgcHJvamVjdCkKLXsKLSAgICB0cnkgewotIAlTdHJpbmcgcHJvcGVydHkgPSBwcm9qZWN0LmdldFBlcnNpc3RlbnRQcm9wZXJ0eShuYW1lKTsKLSAgICByZXR1cm4gKHByb3BlcnR5ID09IG51bGwgfHwgcHJvcGVydHkuZXF1YWxzKCIiKSB8fCBwcm9wZXJ0eS5lcXVhbHMoRk9MTE9XX1dTSV9QUkVGRVJFTkNFKSk7Ci0gICAgCX0KLSAgICBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSAgICAgewotICAgIAlyZXR1cm4gdHJ1ZTsKLSAgICAgfSAgICAgCi19Ci0KLXByaXZhdGUgU3RyaW5nIGdldFByb2plY3RQZXJzaXN0ZW50UHJvcGVydHkoSVByb2plY3QgcHJvamVjdCkKLXsKLQlTdHJpbmcgcHJvcGVydHkgPSBnZXRQcm9qZWN0V1NJQ29tcGxpYW5jZShwcm9qZWN0KTsKLQlpZiAocHJvcGVydHkuZXF1YWxzKEZPTExPV19XU0lfUFJFRkVSRU5DRSkpIHsKLQkJcHJvcGVydHkgPSBnZXRQZXJzaXN0ZW50V1NJQ29tcGxpYW5jZSgpOwotCX0KLQlyZXR1cm4gcHJvcGVydHk7Ci0gfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJvamVjdFdTSUNvbXBsaWFuY2UoSVByb2plY3QgcHJvamVjdCkKLSAgewotCi0gICAgU2VydmljZVBvbGljeVBsYXRmb3JtIHBsYXRmb3JtICAgICAgID0gU2VydmljZVBvbGljeVBsYXRmb3JtLmdldEluc3RhbmNlKCk7Ci0gICAgSVNlcnZpY2VQb2xpY3kgICAgICAgIHNlcnZpY2VQb2xpY3kgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggZ2V0U2VydmljZVBvbGljeUlkKCkgKTsKLSAgICBTdHJpbmcgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlSUQgPSBzZXJ2aWNlUG9saWN5LmdldFBvbGljeVN0YXRlRW51bShwcm9qZWN0KS5nZXRDdXJyZW50SXRlbSgpLmdldElkKCk7Ci0JCVN0cmluZyAgICAgICAgICAgICAgICBwcm9wZXJ0eSAgICAgICA9IEZPTExPV19XU0lfUFJFRkVSRU5DRTsKLQkJCi0JCWZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBFTlVNX0lEX1ZBTFVFUy5sZW5ndGg7IGluZGV4KysgKQotCQl7Ci0JCSAgaWYoIEVOVU1fSURfVkFMVUVTW2luZGV4XS5lcXVhbHMoIGN1cnJlbnRTdGF0ZUlEICkgKQotCQkgIHsKLQkJICAgIHByb3BlcnR5ID0gQ09OVEVYVF9JRFNbaW5kZXhdOwotCQkgICAgYnJlYWs7Ci0JCSAgfQotCQl9Ci0JCQotCQlyZXR1cm4gcHJvcGVydHk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGdldFNlcnZpY2VQb2xpY3lJZCgpCi0gIHsKLSAgICByZXR1cm4gV1NJU2VydmljZVBvbGljaWVzQ29uc3RhbnRzLlNlcnZpY2VQb2xpY3lJRF9TU0JQMTA7Ci0gIH0KLSAgCi0gIHB1YmxpYyBRdWFsaWZpZWROYW1lIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIG5hbWU7ICAKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRXYXJuaW5nKCkKLSAgewotCSAgcmV0dXJuIHdzaVdhcm5pbmdfOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRFcnJvcigpCi0gIHsKLQkgIHJldHVybiB3c2lFcnJvcl87Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFdTSVNTQlBDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3ByZWZlcmVuY2VzL1BlcnNpc3RlbnRXU0lTU0JQQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTA4MjczLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFdTSVNTQlBDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwODAzMTggICAyMjMxMTggZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgbWV0YWRhdGEgcmVxdWlyZWQgaW4gV1MtSSBwcm9maWxlcyB0byBzdXBwb3J0IGVkaXRvcnMgJiB2YWxpZGF0b3JzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUXVhbGlmaWVkTmFtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuV3N0V1NQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotCi0KLQotcHVibGljIGNsYXNzIFBlcnNpc3RlbnRXU0lTU0JQQ29udGV4dCBleHRlbmRzIFBlcnNpc3RlbnRXU0lDb250ZXh0Ci17Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5PTl9XU0lfU1NCUF9DT01QTElBTkNFID0gIm5vbldTSVNTQlBDb21wbGlhbmNlIjsKLQotICBwdWJsaWMgUGVyc2lzdGVudFdTSVNTQlBDb250ZXh0ICgpIAotICB7Ci0JICBzdXBlcigpOwotCSAgbm9uX3dzaV9jb21wbGlhbmNlID0gTk9OX1dTSV9TU0JQX0NPTVBMSUFOQ0U7Ci0JICBuYW1lID0gbmV3IFF1YWxpZmllZE5hbWUoV1NQbHVnaW4uSUQgLCBub25fd3NpX2NvbXBsaWFuY2UpOwotCSAgd3NpV2FybmluZ18gPSBXc3RXU1BsdWdpbk1lc3NhZ2VzLldTSV9TU0JQX1dBUk5JTkc7Ci0JICB3c2lFcnJvcl8gPSBXc3RXU1BsdWdpbk1lc3NhZ2VzLldTSV9TU0JQX0VSUk9SOwotICB9Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRTZXJ2aWNlUG9saWN5SWQoKQotICB7Ci0gICAgcmV0dXJuIFdTSVNlcnZpY2VQb2xpY2llc0NvbnN0YW50cy5TZXJ2aWNlUG9saWN5SURfU1NCUDEwOwotICB9ICAKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFdhaXRGb3JXU0RMVmFsaWRhdGlvbkNvbnRleHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFdhaXRGb3JXU0RMVmFsaWRhdGlvbkNvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNlZDIxMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3ByZWZlcmVuY2VzL1BlcnNpc3RlbnRXYWl0Rm9yV1NETFZhbGlkYXRpb25Db250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbnRleHQuUGVyc2lzdGVudENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLQotCi0KLXB1YmxpYyBjbGFzcyBQZXJzaXN0ZW50V2FpdEZvcldTRExWYWxpZGF0aW9uQ29udGV4dCBleHRlbmRzIFBlcnNpc3RlbnRDb250ZXh0Ci17Ci0KLQlwcml2YXRlIFN0cmluZyB3YWl0X2Zvcl93c2RsX3ZhbGlkYXRpb24gPSAiV0FJVF9GT1JfV1NETF9WQUxJREFUSU9OIjsKLQotcHVibGljIFBlcnNpc3RlbnRXYWl0Rm9yV1NETFZhbGlkYXRpb25Db250ZXh0ICgpIAotewotCXN1cGVyKCAgV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKSk7Ci0JCi19Ci0KLXB1YmxpYyB2b2lkIGxvYWQoKSAKLXsKLQlzZXREZWZhdWx0KHdhaXRfZm9yX3dzZGxfdmFsaWRhdGlvbiwgdHJ1ZSk7Ci19Ci0KLS8vIHRvIGJlIHVzZWQgb25seSBieSB0aGUgcHJlZmVyZW5jZSBwYWdlCi1wdWJsaWMgdm9pZCBzZXRXYWl0Rm9yV1NETFZhbGlkYXRpb24gKCBib29sZWFuIHZhbHVlKQotewotIAkJc2V0VmFsdWUoIHdhaXRfZm9yX3dzZGxfdmFsaWRhdGlvbiwgdmFsdWUpOwotfQotCi1wdWJsaWMgYm9vbGVhbiBnZXRQZXJzaXN0ZW50V2FpdEZvcldTRExWYWxpZGF0aW9uICgpCi17Ci0JcmV0dXJuIGdldFZhbHVlQXNCb29sZWFuKHdhaXRfZm9yX3dzZGxfdmFsaWRhdGlvbik7Ci0KLX0KLQotcHVibGljIGJvb2xlYW4gZ2V0RGVmYXVsdCgpCi17Ci0JcmV0dXJuIGdldERlZmF1bHRCb29sZWFuKHdhaXRfZm9yX3dzZGxfdmFsaWRhdGlvbik7Ci19Ci0KLQotCi0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvV1NETEZpbGVQcm9wZXJ0eVRlc3Rlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9XU0RMRmlsZVByb3BlcnR5VGVzdGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZWZlNDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9XU0RMRmlsZVByb3BlcnR5VGVzdGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzExMjAgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzEyMTkgICAyMTM0NDcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuZXhwcmVzc2lvbnMuUHJvcGVydHlUZXN0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUNvbnRhaW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci0KLXB1YmxpYyBjbGFzcyBXU0RMRmlsZVByb3BlcnR5VGVzdGVyIGV4dGVuZHMgUHJvcGVydHlUZXN0ZXIKLXsKLSAgcHVibGljIGJvb2xlYW4gdGVzdChPYmplY3QgcmVjZWl2ZXIsIFN0cmluZyBwcm9wZXJ0eSwgT2JqZWN0W10gYXJncywgT2JqZWN0IGV4cGVjdGVkVmFsdWUpCi0gIHsKLSAgICBib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotICAgIAotICAgIGlmKCByZWNlaXZlciBpbnN0YW5jZW9mIElDb250YWluZXIpCi0gICAgewotICAgICAgcmVzdWx0ID0gaGFzV1NETGZpbGUoIChJQ29udGFpbmVyKSByZWNlaXZlciApOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gaGFzV1NETGZpbGUoIElDb250YWluZXIgY29udGFpbmVyICkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ICAgPSBmYWxzZTsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICBJUmVzb3VyY2VbXSBjaGlsZHJlbiA9IGNvbnRhaW5lci5tZW1iZXJzKCk7Ci0gICAgICAKLSAgICAgIGZvciggSVJlc291cmNlIGNoaWxkIDogY2hpbGRyZW4gKQotICAgICAgewotICAgICAgICBpZiggY2hpbGQgaW5zdGFuY2VvZiBJQ29udGFpbmVyICkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IGhhc1dTRExmaWxlKCAoSUNvbnRhaW5lcikgY2hpbGQgKTsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCBjaGlsZCBpbnN0YW5jZW9mIElGaWxlICkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBleHRlbnNpb24gPSBjaGlsZC5nZXRGaWxlRXh0ZW5zaW9uKCk7Ci0gICAgICAgICAgCi0gICAgICAgICAgaWYoIGV4dGVuc2lvbiAhPSBudWxsICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBleHRlbnNpb24uZXF1YWxzKCAid3NkbCIgKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIElmIHdlIGZvdW5kIGEgc2luZ2xlIHdzZGwgZmlsZSB3ZSB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KLSAgICAgICAgaWYoIHJlc3VsdCApIGJyZWFrOwotICAgICAgfSAgICAKLSAgICB9Ci0gICAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICAvLyBJZ25vcmUgZXhjZXB0aW9uIGFuZCByZXR1cm4gZmFsc2UuICAKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9XU0lDb21wbGlhbmNlVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvV1NJQ29tcGxpYW5jZVV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ODg0MDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9XU0lDb21wbGlhbmNlVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA4MDgyNyAgIDI0NTQzOSBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBVc2FiaWxpdHkgaXNzdWUgd2l0aCB0aGUgY29tcGxpYW5jZSB3YXJuaW5nIGRpYWxvZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5DaG9pY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuV3N0V1NQbHVnaW5NZXNzYWdlczsKLQotCi1wdWJsaWMgY2xhc3MgV1NJQ29tcGxpYW5jZVV0aWxzCi17Ci0KLS8qKgotICogQHBhcmFtIHByb2plY3QKLSAqIEBwYXJhbSBjb250ZXh0Ci0gKiBAcmV0dXJuCi0gKi8KLXB1YmxpYyBzdGF0aWMgaW50IGdldFdTSVNldmVyaXR5IChJUHJvamVjdCBwcm9qZWN0LCBQZXJzaXN0ZW50V1NJQ29udGV4dCBjb250ZXh0KQotewotCWlmIChjb250ZXh0LnByb2plY3RTdG9wTm9uV1NJQ29tcGxpYW5jZXMocHJvamVjdCkpCi0JCXJldHVybiBTdGF0dXMuRVJST1I7Ci0JZWxzZSBpZiAoY29udGV4dC5wcm9qZWN0V2Fybk5vbldTSUNvbXBsaWFuY2VzKHByb2plY3QpKQotCQlyZXR1cm4gU3RhdHVzLldBUk5JTkc7Ci0JZWxzZQotCQlyZXR1cm4gU3RhdHVzLklORk87Ci19Ci0KLS8qKgotICogQHBhcmFtIG1vbml0b3IgSVN0YXR1c0hhbmRsZXIKLSAqIEBwYXJhbSBzdGF0dXMgU3RhdHVzW10KLSAqIEBwYXJhbSBwcm9qZWN0IElQcm9qZWN0Ci0gKiBAcGFyYW0gY29udGV4dCBQZXJzaXN0ZW50V1NJQ29udGV4dAotICogQHJldHVybiBib29sZWFuIHRydWUgaWYgdG8gY29udGludWUKLSAqLwotcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrV1NJQ29tcGxpYW5jZSAoIElTdGF0dXNIYW5kbGVyIG1vbml0b3IsIFN0YXR1c1tdIHN0YXR1cywgSVByb2plY3QgcHJvamVjdCwgUGVyc2lzdGVudFdTSUNvbnRleHQgY29udGV4dCkKLXsKLSAgCWlmIChjb250ZXh0LnByb2plY3RTdG9wTm9uV1NJQ29tcGxpYW5jZXMocHJvamVjdCkpCi0gIAkJewotICAgICAgCi0gIAkJCS8vIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSBhbmQgcmV0dXJuIGZhbHNlCi0gIAkJCUlTdGF0dXMgc3RhdHVzXyA9IFN0YXR1c1V0aWxzLm11bHRpU3RhdHVzKCBjb250ZXh0LmdldEVycm9yKCksIHN0YXR1cyApOwotCQkJbW9uaXRvci5yZXBvcnRFcnJvcihzdGF0dXNfKTsKLSAgCQkJcmV0dXJuIGZhbHNlOwotICAJCX0KLSAgCWVsc2UgaWYgKGNvbnRleHQucHJvamVjdFdhcm5Ob25XU0lDb21wbGlhbmNlcyhwcm9qZWN0KSkKLSAgCQl7Ci0gIAkJCS8vIGdpdmUgYSB3YXJuaW5nIG1lc3NhZ2Ugd2l0aCB0aGUgb3B0aW9ucyB0byBzdG9wLCBpZ25vcmUgdGhpcyBvbmUsIG9yIGlnbm9yZSBhbGwgY29taW5nIG1lc3NhZ2VzCi0gIAkJCUlTdGF0dXMgc3RhdHVzXyA9IFN0YXR1c1V0aWxzLm11bHRpU3RhdHVzKCBjb250ZXh0LmdldFdhcm5pbmcoKSwgc3RhdHVzKTsKLQotICAJCQlDaG9pY2UgaWdub3JlQ2hvaWNlID0gbmV3IENob2ljZSgnSScsIFdzdFdTUGx1Z2luTWVzc2FnZXMuSUdOT1JFX0xBQkVMLCBXc3RXU1BsdWdpbk1lc3NhZ2VzLklHTk9SRV9ERVNDUklQVElPTik7Ci0gIAkJCUNob2ljZSBpZ25vcmVBbGxDaG9pY2UgPSBuZXcgQ2hvaWNlKCdBJywgV3N0V1NQbHVnaW5NZXNzYWdlcy5JR05PUkVfQUxMX0xBQkVMLCBXc3RXU1BsdWdpbk1lc3NhZ2VzLklHTk9SRV9BTExfREVTQ1JJUFRJT04pOwotICAJCQlDaG9pY2UgY2FuY2VsQ2hvaWNlID0gbmV3IENob2ljZSgnQycsIFdzdFdTUGx1Z2luTWVzc2FnZXMuQ0FOQ0VMX0xBQkVMLCBXc3RXU1BsdWdpbk1lc3NhZ2VzLkNBTkNFTF9ERVNDUklQVElPTik7Ci0gIAkJCUNob2ljZSByZXN1bHQgPSBtb25pdG9yLnJlcG9ydChzdGF0dXNfLCBuZXcgQ2hvaWNlW117aWdub3JlQ2hvaWNlLCBpZ25vcmVBbGxDaG9pY2UsIGNhbmNlbENob2ljZX0pOwotICAJCQkKLSAgCQkJLy8gaWYgdGhlIHVzZXIgc2VsZWN0cyB0byBjYW5jZWwsIG9yIGNsb3Nlcy9lc2NhcGVzIHRoZSBtZXNzYWdlIGJveCwgZG8gbm90IGNvbnRpbnVlIHdpdGggdGhlIGNvbW1hbmQKLSAgICAgICAgCWlmIChyZXN1bHQgPT0gbnVsbCB8fCByZXN1bHQuZ2V0TGFiZWwoKS5lcXVhbHMoY2FuY2VsQ2hvaWNlLmdldExhYmVsKCkpKQotCQkJCQlyZXR1cm4gZmFsc2U7Ci0gIAkJCS8vIGlmIHRoZSB1c2VyIHNlbGVjdHMgaWdub3JlLCBjb250aW51ZQotICAJCQllbHNlIGlmIChyZXN1bHQuZ2V0TGFiZWwoKS5lcXVhbHMoaWdub3JlQ2hvaWNlLmdldExhYmVsKCkpKQotICAgICAgICAJCQlyZXR1cm4gdHJ1ZTsKLSAgCQkJLy8gaWYgdGhlIHVzZXIgc2VsZWN0cyBpZ25vcmUgYWxsLCBjaGFuZ2UgdGhlIHByZWZlcmVuY2UKLQkgICAgICAgIGVsc2UgIGlmIChyZXN1bHQuZ2V0TGFiZWwoKS5lcXVhbHMoaWdub3JlQWxsQ2hvaWNlLmdldExhYmVsKCkpKQotCSAgICAgICAgCXsKLQkgICAgICAgIAkJY29udGV4dC51cGRhdGVQcm9qZWN0V1NJQ29tcGxpYW5jZXMocHJvamVjdCwgUGVyc2lzdGVudFdTSUNvbnRleHQuSUdOT1JFX05PTl9XU0kpOwotCSAgICAgICAgCQlyZXR1cm4gdHJ1ZTsKLQkgICAgICAgIAl9Ci0JCQkKLSAgCQl9Ci0gIHJldHVybiB0cnVlOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvV1NJU2VydmljZVBvbGljaWVzQ29uc3RhbnRzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3ByZWZlcmVuY2VzL1dTSVNlcnZpY2VQb2xpY2llc0NvbnN0YW50cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzIzNmNjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvV1NJU2VydmljZVBvbGljaWVzQ29uc3RhbnRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwODAzMTggICAyMjMxMTggZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgbWV0YWRhdGEgcmVxdWlyZWQgaW4gV1MtSSBwcm9maWxlcyB0byBzdXBwb3J0IGVkaXRvcnMgJiB2YWxpZGF0b3JzCi0gKiAyMDA4MDMyNCAgIDIyMzExOCBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgRC4gUGV0ZXJzLCBtZXRhZGF0YSByZXF1aXJlZCBpbiBXUy1JIHByb2ZpbGVzIHRvIHN1cHBvcnQgZWRpdG9ycyAmIHZhbGlkYXRvcnMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXM7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgV1NJU2VydmljZVBvbGljaWVzQ29uc3RhbnRzIHsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzdGF0ZUtleURlZmF1bHRQcm90b2NvbCA9ICJkZWZhdWx0UHJvdG9jb2wiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHN0YXRlS2V5RGVmYXVsdFByb3RvY29sX1ZBTFVFX1NPQVAgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc3RhdGVLZXlEZWZhdWx0UHJvdG9jb2xfVkFMVUVfU09BUDEyID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcDEyLyI7Ci0JCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU2VydmljZVBvbGljeUlEX1NTQlAxMCA9ICJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbHMud3NpcHJvZmlsZWNvbXAud3Npc3NicCI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU2VydmljZVBvbGljeUlEX0FQMTAgPSAib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnNlcnZpY2Vwb2xzLndzaXByb2ZpbGVjb21wLndzaWFwIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTZXJ2aWNlUG9saWN5SURfV1NJUHJvZmlsZVJvb3QgPSAib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnNlcnZpY2Vwb2xzLndzaXByb2ZpbGVjb21wIjsKLQkKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzdGF0ZUVudW1SZXF1aXJlID0gIm9yZy5lY2xpcHNlLndzdC5zdWcucmVxdWlyZSI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc3RhdGVFbnVtU3VnZ2VzdCA9ICJvcmcuZWNsaXBzZS53c3Quc3VnLnN1Z2dlc3QiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHN0YXRlRW51bUlnbm9yZSA9ICJvcmcuZWNsaXBzZS53c3Quc3VnLmlnbm9yZSI7Ci0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9yZWdpc3RyeS9HZW5lcmljUmVzb3VyY2VGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3JlZ2lzdHJ5L0dlbmVyaWNSZXNvdXJjZUZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUzNmQwZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3JlZ2lzdHJ5L0dlbmVyaWNSZXNvdXJjZUZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FeHRlbmRlZE1ldGFEYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWkuWE1MUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaS5pbXBsLlhNTFJlc291cmNlRmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaS5pbXBsLlhNTFJlc291cmNlSW1wbDsKLQotLyoqCi0gKiBQYXR0ZXJuZWQgYWZ0ZXIgdGhlIFJlc291cmNlRmFjdG9yeSBjbGFzc2VzIGdlbmVyYXRlZAotICogYnkgdGhlIEVNRiB0b29scywgdGhpcyBnZW5lcmljIGZhY3RvcnkgaGFuZGxlcyBjcmVhdGlvbgotICogb2YgRU1GIHJlc291cmNlcyBmb3IgWE1MIGRvY3VtZW50cyBpbiBnZW5lcmFsLgotICovCi1wdWJsaWMgY2xhc3MgR2VuZXJpY1Jlc291cmNlRmFjdG9yeSBleHRlbmRzIFhNTFJlc291cmNlRmFjdG9yeUltcGwKLXsKLQkvKioKLQkgKiBIb2xkcyBhbiBpbnN0YW5jZSBvZiA8Y29kZT5FeHRlbmRlZE1ldGFEYXRhPC9jb2RlPgotCSAqIGZvciBhc3NvY2lhdGluZyBleHRlbmRlZCBtZXRhZGF0YSB3aXRoIHRoZQotCSAqIDxjb2RlPlJlc291cmNlPC9jb2RlPiByZXR1cm5lZCBieSA8Y29kZT5jcmVhdGVSZXNvdXJjZTwvY29kZT4uCi0JICovCi0JcHJvdGVjdGVkIEV4dGVuZGVkTWV0YURhdGEgZXh0ZW5kZWRNZXRhRGF0YTsKLQotCS8qKgotCSAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+R2VuZXJpY1Jlc291cmNlRmFjdG9yeTwvY29kZT4uCi0JICovCi0JcHVibGljIEdlbmVyaWNSZXNvdXJjZUZhY3RvcnkoKQotCXsKLQkJc3VwZXIoKTsKLQkJZXh0ZW5kZWRNZXRhRGF0YSA9IEV4dGVuZGVkTWV0YURhdGEuSU5TVEFOQ0U7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlJEZhY3RvcnkjY3JlYXRlUmVzb3VyY2Uob3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSSkKLQkgKi8KLQlwdWJsaWMgUmVzb3VyY2UgY3JlYXRlUmVzb3VyY2UoVVJJIHVyaSkKLQl7Ci0JCVhNTFJlc291cmNlIHJlc3VsdCA9IG5ldyBYTUxSZXNvdXJjZUltcGwodXJpKTsKLQkJcmVzdWx0LmdldERlZmF1bHRTYXZlT3B0aW9ucygpLnB1dChYTUxSZXNvdXJjZS5PUFRJT05fRVhURU5ERURfTUVUQV9EQVRBLCBleHRlbmRlZE1ldGFEYXRhKTsKLQkJcmVzdWx0LmdldERlZmF1bHRMb2FkT3B0aW9ucygpLnB1dChYTUxSZXNvdXJjZS5PUFRJT05fRVhURU5ERURfTUVUQV9EQVRBLCBleHRlbmRlZE1ldGFEYXRhKTsKLQkJcmVzdWx0LmdldERlZmF1bHRTYXZlT3B0aW9ucygpLnB1dChYTUxSZXNvdXJjZS5PUFRJT05fU0NIRU1BX0xPQ0FUSU9OLCBCb29sZWFuLlRSVUUpOwotCQlyZXN1bHQuZ2V0RGVmYXVsdFNhdmVPcHRpb25zKCkucHV0KFhNTFJlc291cmNlLk9QVElPTl9VU0VfRU5DT0RFRF9BVFRSSUJVVEVfU1RZTEUsIEJvb2xlYW4uVFJVRSk7Ci0JCXJlc3VsdC5nZXREZWZhdWx0TG9hZE9wdGlvbnMoKS5wdXQoWE1MUmVzb3VyY2UuT1BUSU9OX1VTRV9MRVhJQ0FMX0hBTkRMRVIsIEJvb2xlYW4uVFJVRSk7Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9yZWdpc3RyeS9JUmVnaXN0cnlNYW5hZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3JlZ2lzdHJ5L0lSZWdpc3RyeU1hbmFnZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThiNzkwMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3JlZ2lzdHJ5L0lSZWdpc3RyeU1hbmFnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwOTA2ICAgMTQxNzk2IGdpbGJlcnRhQGNhLmlibS5jb20gLSBHaWxiZXJ0IEFuZHJld3MKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeTsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXk7Ci0KLS8qKgotICogQW4gSVJlZ2lzdHJ5TWFuYWdlciBtYW5hZ2VzIGEgZmFtaWx5IG9mIDxjb2RlPlJlZ2lzdHJ5PC9jb2RlPgotICogYW5kIDxjb2RlPlRheG9ub215PC9jb2RlPiBtb2RlbHMgcGVyc2lzdGVkIHdpdGhpbiBzb21lCi0gKiBhZGRyZXNzYWJsZSBsb2NhdGlvbiBzdWNoIGFzIHVuZGVyIGEgZGlyZWN0b3J5IGluIHRoZQotICogZmlsZXN5c3RlbSBvciB1bmRlciBhIGZvbGRlciBpbiB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UsCi0gKiBhbmQgcmVmZXJlbmNlZCBmcm9tIGFuIGluZGV4IGRvY3VtZW50IGF0IHRoZSBzYW1lIGxvY2F0aW9uLiAKLSAqIDxwPgotICogQ2FsbCA8Y29kZT5SZWdpc3RlcnlTZXJ2aWNlLmdldERlZmF1bHRSZWdpc3RyeU1hbmFnZXIoKTwvY29kZT4KLSAqIG9yIDxjb2RlPlJlZ2lzdGVyeVNlcnZpY2UuZ2V0UmVnaXN0cnlNYW5hZ2VyKFVSTCk8L2NvZGU+IHRvCi0gKiBnZXQgYSBuZXcgSVJlZ2lzdHJ5TWFuYWdlci4KLSAqIAotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuUmVnaXN0cnlTZXJ2aWNlI2luc3RhbmNlKCkKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeQotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215Ci0gKiBAYXV0aG9yIGNicmVhbGV5Ci0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVJlZ2lzdHJ5TWFuYWdlcgotewotCS8qKgotCSAqIEEgY29uc3RhbnQgZm9yIHVzZSBpbiB0aGUgPGNvZGU+cmVtb3ZlUmVnaXN0cnkoLi4uKTwvY29kZT4KLQkgKiBhbmQgPGNvZGU+cmVtb3ZlVGF4b25vbXkoLi4uKTwvY29kZT4gbWV0aG9kcyB0aGF0IHdpbGwKLQkgKiBjYXVzZSB0aGUgZ2l2ZW4gcmVnaXN0cnkgb3IgdGF4b25vbXkgZG9jdW1lbnQgdG8gYmUgcmVtb3ZlZAotCSAqIGZyb20gdGhlIGluZGV4LCBidXQgbm90IGRlbGV0ZWQuCi0JICogCi0JICogQHNlZSAjcmVtb3ZlUmVnaXN0cnkoU3RyaW5nLCBib29sZWFuKQotCSAqIEBzZWUgI3JlbW92ZVRheG9ub215KFN0cmluZywgYm9vbGVhbikKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBLRUVQX0RPQ1VNRU5UID0gZmFsc2U7Ci0KLQkvKioKLQkgKiBBIGNvbnN0YW50IGZvciB1c2UgaW4gdGhlIDxjb2RlPnJlbW92ZVJlZ2lzdHJ5KC4uLik8L2NvZGU+Ci0JICogYW5kIDxjb2RlPnJlbW92ZVRheG9ub215KC4uLik8L2NvZGU+IG1ldGhvZHMgdGhhdCB3aWxsCi0JICogY2F1c2UgdGhlIGdpdmVuIHJlZ2lzdHJ5IG9yIHRheG9ub215IGRvY3VtZW50IHRvIGJlIHJlbW92ZWQKLQkgKiBmcm9tIHRoZSBpbmRleCBhbmQgZGVsZXRlZC4KLQkgKiAKLQkgKiBAc2VlICNyZW1vdmVSZWdpc3RyeShTdHJpbmcsIGJvb2xlYW4pCi0JICogQHNlZSAjcmVtb3ZlVGF4b25vbXkoU3RyaW5nLCBib29sZWFuKQotCSAqLwotCXB1YmxpYyBib29sZWFuIERFTEVURV9ET0NVTUVOVCA9IHRydWU7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBVUkwgb2YgdGhlIFhNTCBpbmRleCBkb2N1bWVudCB0aGF0IHJlZmVyZW5jZXMKLQkgKiB0aGUgWE1MIHJlZ2lzdHJ5IGFuZCB0YXhvbm9teSBtb2RlbHMgbWFuYWdlZCBieSB0aGlzCi0JICogUmVnaXN0cnkgTWFuYWdlci4KLQkgKiAKLQkgKiBAcmV0dXJuIFRoZSBVUkwgb2YgdGhlIG1hbmFnaW5nIGRvY3VtZW50LgotCSAqIEB0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uIElmIGEgVVJMIHRvIHRoZSBtYW5hZ2luZwotCSAqIGRvY3VtZW50IGNhbm5vdCBiZSBkZXRlcm1pbmVkIG9yIGNyZWF0ZWQuCi0JICovCi0JcHVibGljIFVSTCBnZXRVUkwgKCkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLQotCS8qKgotCSAqIEFkZHMgYW4gPGNvZGU+SVRheG9ub215RmluZGVyPC9jb2RlPiB0aGF0IHRoZQotCSAqIDxjb2RlPklSZWdpc3RyeU1hbmFnZXI8L2NvZGU+IGNhbiB1c2UgdG8gZmluZAotCSAqIHRoZSBzZXQgb2YgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVscyB1c2VkCi0JICogYnkgYSBnaXZlbiA8Y29kZT5SZWdpc3RyeTwvY29kZT4gbW9kZWwuCi0JICogPGNvZGU+SVJlZ2lzdHJ5TWFuYWdlci5zYXZlKHJlZ2lzdHJ5KTwvY29kZT4gbmVlZHMgaGVscCBmaW5kaW5nCi0JICogdGhlIDxjb2RlPlRheG9ub215PC9jb2RlPiBtb2RlbHMgdXNlZCBieSBhIDxjb2RlPlJlZ2lzdHJ5PC9jb2RlPiwKLQkgKiBpZiBhbnkuCi0JICogCi0JICogQHBhcmFtIGNsYXNzTmFtZSBUaGUgbmFtZSBvZiB0aGUgY29uY3JldGUgPGNvZGU+UmVnaXN0cnk8Y29kZT4KLQkgKiBjbGFzcyBmb3Igd2hpY2ggdGhlIDxjb2RlPklUYXhvbm9teUZpbmRlcjwvY29kZT4gaXMgYmVpbmcgYWRkZWQuCi0JICogQHBhcmFtIHRheG9ub215RmluZGVyIEFuIDxjb2RlPklUYXhvbm9teUZpbmRlcjwvY29kZT4gdGhhdCBrbm93cwotCSAqIGhvdyB0byBkZXRlcm1pbmUgdGhlIHNldCBvZiA8Y29kZT5UYXhvbm9teTwvY29kZT4gbW9kZWxzIGEgZ2l2ZW4KLQkgKiBjb25jcmV0ZSA8Y29kZT5SZWdpc3RyeTwvY29kZT4gbW9kZWwgaXMgdXNpbmcuCi0JICogQHNlZSBJVGF4b25vbXlGaW5kZXIKLQkgKiBAc2VlICNzYXZlUmVnaXN0cnkoUmVnaXN0cnkpCi0JICovCi0JcHVibGljIHZvaWQgYWRkVGF4b25vbXlGaW5kZXIgKCBTdHJpbmcgY2xhc3NOYW1lLCBJVGF4b25vbXlGaW5kZXIgdGF4b25vbXlGaW5kZXIgKTsKLQotICAgIC8qKgotICAgICAqIERlc3Ryb3lzIHRoZSBpbmRleCBvZiByZWdpc3RyaWVzIGFuZCB0YXhvbm9taWVzIGluIG1lbW9yeS4KLSAgICAgKiBTdWJzZXF1ZW50IGNhbGxzIHRvIDxjb2RlPmdldEluZGV4KCk8L2NvZGU+IGFuZCBvdGhlciBtZXRob2RzCi0gICAgICogb2YgdGhpcyBpbnRlcmZhY2Ugd2lsbCBjYXVzZSB0aGUgaW5kZXggdG8gYmUgcmVsb2FkZWQuCi0gICAgICogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBhbnl0aW1lIHRoZSBjYWxsZXIgc3VzcGVjdHMgdGhlCi0gICAgICogcGVyc2lzdGVudCBpbmRleCBoYXMgY2hhbmdlZCBhbmQgd2lzaGVzIHRvIGxvYWQgdGhlIGNoYW5nZXMKLSAgICAgKiBpbnRvIHRoZSBjdXJyZW50IDxjb2RlPklSZWdpc3RyeU1hbmFnZXI8L2NvZGU+LgotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHJlZnJlc2hNYW5hZ2VyICgpOwotCi0JLyoqCi0JICogU2F2ZXMgYSA8Y29kZT5UYXhvbm9teTwvY29kZT4gbW9kZWwgdG8gYW4gWE1MIGRvY3VtZW50Ci0JICogbG9jYXRlZCByZWxhdGl2ZSB0byB0aGUgaW5kZXggWE1MIGRvY3VtZW50IGFzIGlkZW50aWZpZWQgYnkKLQkgKiA8Y29kZT5nZXRVUkwoKTwvY29kZT4sIGFuZCB1cGRhdGVzIHRoZSBpbmRleCBYTUwgZG9jdW1lbnQKLQkgKiB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHNhdmVkIHRheG9ub215IGRvY3VtZW50LgotCSAqIFRoZSByZWxhdGl2ZSBwYXRobmFtZSB0byB0aGUgdGF4b25vbXkgWE1MIGRvY3VtZW50IGlzCi0JICogY29tcHV0ZWQgYnkgdGhlIDxjb2RlPklSZWdpc3RyeU1hbmFnZXI8L2NvZGU+IGFuZCBjYW5ub3QKLQkgKiBiZSBpbmZsdWVuY2VkIGJ5IHRoZSBjYWxsZXIuCi0JICogCi0JICogQHBhcmFtIHJlZ2lzdHJ5IFRoZSA8Y29kZT5SZWdpc3RyeTwvY29kZT4gbW9kZWwgKGFuZAotCSAqIHJlZmVyZW5jZWQgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVscykgdG8gc2F2ZS4KLQkgKiBAcmV0dXJuIEEgPGNvZGU+UmVnaXN0cnk8L2NvZGU+IHJlZmVyZW5jZS4KLQkgKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gSWYgdGhlIG9wZXJhdGlvbiBmYWlscyBmb3IgYW55IHJlYXNvbiwKLQkgKiBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIG1hbGZvcm1lZCBsb2NhdGlvbiBVUklzIGluIHRoZQotCSAqIGluZGV4IG9yIGdlbmVyYWwgaW5wdXQvb3V0cHV0IGVycm9yIGNvbmRpdGlvbnMuCi0JICogQHNlZSBSZWdpc3RyeQotCSAqIEBzZWUgI2FkZFRheG9ub215RmluZGVyKFN0cmluZywgSVRheG9ub215RmluZGVyKQotCSAqLwotCXB1YmxpYyBSZWdpc3RyeSBzYXZlUmVnaXN0cnkgKCBSZWdpc3RyeSByZWdpc3RyeSApIHRocm93cyBDb3JlRXhjZXB0aW9uOwotCi0JLyoqCi0JICogTG9hZHMgYXMgbmVjZXNzYXJ5IGFuZCByZXR1cm5zIGEgZnVsbCA8Y29kZT5SZWdpc3RyeTwvY29kZT4KLQkgKiBtb2RlbCBhcyBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBVUkkgYW5kIHJlZmVyZW5jZWQgZnJvbQotCSAqIHRoZSBpbmRleCBYTUwgZG9jdW1lbnQgbG9jYXRlZCBhdCA8Y29kZT5nZXRVUkwoKTwvY29kZT4uCi0JICogCi0JICogQHBhcmFtIHVyaSBUaGUgVVJJIGlkZW50aWZpZXIgb2YgdGhlIHJlZ2lzdHJ5LgotCSAqIEByZXR1cm4gVGhlIDxjb2RlPlJlZ2lzdHJ5PC9jb2RlPiBtb2RlbAotCSAqIG9yIG51bGwgaWYgbm8gc3VjaCBtb2RlbCBjYW4gYmUgZm91bmQuCi0JICogQHRocm93cyBDb3JlRXhjZXB0aW9uIElmIHRoZSBvcGVyYXRpb24gZmFpbHMgZm9yIGFueSByZWFzb24sCi0JICogaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBtYWxmb3JtZWQgbG9jYXRpb24gVVJJcyBpbiB0aGUKLQkgKiBpbmRleCBvciBnZW5lcmFsIGlucHV0L291dHB1dCBlcnJvciBjb25kaXRpb25zLgotCSAqIEBzZWUgUmVnaXN0cnkKLQkgKi8KLQlwdWJsaWMgUmVnaXN0cnkgbG9hZFJlZ2lzdHJ5ICggU3RyaW5nIHVyaSApIHRocm93cyBDb3JlRXhjZXB0aW9uOwotCi0JLyoqCi0JICogTG9hZHMgYXMgbmVjZXNzYXJ5IGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIGZ1bGwgPGNvZGU+UmVnaXN0cnk8L2NvZGU+Ci0JICogbW9kZWxzIGFzIGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIGFycmF5IG9mIFVSSXMgYW5kIHJlZmVyZW5jZWQgZnJvbQotCSAqIHRoZSBpbmRleCBYTUwgZG9jdW1lbnQgbG9jYXRlZCBhdCA8Y29kZT5nZXRVUkwoKTwvY29kZT4uCi0JICogVXNlZnVsIGluIGNvbmp1bmN0aW9uIHdpdGggPGNvZGU+Z2V0UmVnaXN0cnlVUklzKCk8L2NvZGU+LgotCSAqIE5vdGUgdGhhdCB0aGUgbGVuZ3RoIG9mIHRoZSByZXR1cm5lZCBhcnJheSBtYXkgYmUgbGVzcyB0aGFuCi0JICogdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgb2YgVVJJcyBpbiBjYXNlcyB3aGVyZSBvbmUgb3IgbW9yZQotCSAqIFVSSXMgZmFpbCB0byByZXNvbHZlIHRvIGEgbG9hZGFibGUgbW9kZWwuCi0JICogCi0JICogQHBhcmFtIHVyaXMgVGhlIFVSSSBpZGVudGlmaWVycyBvZiB0aGUgcmVnaXN0cmllcy4KLQkgKiBAcmV0dXJuIFRoZSBhcnJheSBvZiA8Y29kZT5SZWdpc3RyeTwvY29kZT4gbW9kZWxzLAotCSAqIG5ldmVyIG51bGwsIGJ1dCBwb3NzaWJseSBlbXB0eS4KLQkgKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gSWYgdGhlIG9wZXJhdGlvbiBmYWlscyBmb3IgYW55IHJlYXNvbiwKLQkgKiBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIG1hbGZvcm1lZCBsb2NhdGlvbiBVUklzIGluIHRoZQotCSAqIGluZGV4IG9yIGdlbmVyYWwgaW5wdXQvb3V0cHV0IGVycm9yIGNvbmRpdGlvbnMuCi0JICogQHNlZSBSZWdpc3RyeQotCSAqLwotCXB1YmxpYyBSZWdpc3RyeVtdIGxvYWRSZWdpc3RyaWVzICggU3RyaW5nW10gdXJpcyApIHRocm93cyBDb3JlRXhjZXB0aW9uOwotCi0JLyoqCi0JICogUmV0dXJucyBhbiBhcnJheSBvZiBVUkkgaWRlbnRpZmllcnMgdG8gPGNvZGU+UmVnaXN0cnk8L2NvZGU+Ci0JICogbW9kZWxzIGluIHRoZSBpbmRleCBtYW5hZ2VkIGJ5IHRoaXMgPGNvZGU+SVJlZ2lzdHJ5TWFuYWdlcjwvY29kZT4uCi0JICogCi0JICogQHJldHVybiBBbiBhcnJheSBvZiBVUkkgaWRlbnRpZmllcnMsIHBvc3NpYmx5IGVtcHR5IGJ1dCBuZXZlciBudWxsLAotCSAqIHRvIHJlZ2lzdGVyZWQgPGNvZGU+UmVnaXN0cnk8L2NvZGU+IG1vZGVscy4KLQkgKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gSWYgdGhlIG9wZXJhdGlvbiBmYWlscyBmb3IgYW55IHJlYXNvbiwKLQkgKiBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIG1hbGZvcm1lZCBsb2NhdGlvbiBVUklzIGluIHRoZQotCSAqIGluZGV4IG9yIGdlbmVyYWwgaW5wdXQvb3V0cHV0IGVycm9yIGNvbmRpdGlvbnMuCi0JICogQHNlZSBSZWdpc3RyeQotCSAqLwotCXB1YmxpYyBTdHJpbmdbXSBnZXRSZWdpc3RyeVVSSXMgKCkgdGhyb3dzIENvcmVFeGNlcHRpb247Ci0KLQkvKioKLQkgKiBSZW1vdmVzIHRoZSA8Y29kZT5SZWdpc3RyeTwvY29kZT4gbW9kZWwgaWRlbnRpZmllZCBieSB0aGUKLQkgKiBnaXZlbiA8Y29kZT51cmk8L2NvZGU+IGZyb20gdGhlIGluZGV4IGFuZCBlaXRoZXIga2VlcHMgb3IKLQkgKiBkZWxldGVzIHRoZSBjb3JyZXNwb25kaW5nIDxjb2RlPlJlZ2lzdHJ5PC9jb2RlPiBkb2N1bWVudAotCSAqIGJhc2VkIG9uIHRoZSB2YWx1ZSBnaXZlbiBmb3IgPGNvZGU+ZGVsZXRlRG9jdW1lbnQ8L2NvZGU+LgotCSAqIAotCSAqIEBwYXJhbSB1cmkgVGhlIFVSSSBpZGVudGlmaWVyIG9mIHRoZSBtb2RlbCB0byBkZWxldGUuCi0JICogQHBhcmFtIGRlbGV0ZURvY3VtZW50IEVpdGhlciA8Y29kZT5LRUVQX0RPQ1VNRU5UPC9jb2RlPgotCSAqIG9yIDxjb2RlPkRFTEVURV9ET0NVTUVOVDwvY29kZT4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCi0JICogbW9kZWwgZG9jdW1lbnQgc2hvdWxkIGJlIGtlcHQgb3IgZGVsZXRlZC4KLQkgKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gSWYgdGhlIG9wZXJhdGlvbiBmYWlscyBmb3IgYW55IHJlYXNvbiwKLQkgKiBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIG1hbGZvcm1lZCBsb2NhdGlvbiBVUklzIGluIHRoZQotCSAqIGluZGV4IG9yIGdlbmVyYWwgaW5wdXQvb3V0cHV0IGVycm9yIGNvbmRpdGlvbnMuCi0JICogQHNlZSBSZWdpc3RyeQotCSAqIEBzZWUgI0tFRVBfRE9DVU1FTlQKLQkgKiBAc2VlICNERUxFVEVfRE9DVU1FTlQKLQkgKi8KLQlwdWJsaWMgdm9pZCByZW1vdmVSZWdpc3RyeSAoIFN0cmluZyB1cmksIGJvb2xlYW4gZGVsZXRlRG9jdW1lbnQgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbjsKLQotCS8qKgotCSAqIFNhdmVzIGEgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVsIHRvIGFuIFhNTCBkb2N1bWVudAotCSAqIGxvY2F0ZWQgcmVsYXRpdmUgdG8gdGhlIGluZGV4IFhNTCBkb2N1bWVudCBhcyBpZGVudGlmaWVkIGJ5Ci0JICogPGNvZGU+Z2V0VVJMKCk8L2NvZGU+LCBhbmQgdXBkYXRlcyB0aGUgaW5kZXggWE1MIGRvY3VtZW50Ci0JICogd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzYXZlZCB0YXhvbm9teSBkb2N1bWVudC4KLQkgKiBUaGUgcmVsYXRpdmUgcGF0aG5hbWUgdG8gdGhlIHRheG9ub215IFhNTCBkb2N1bWVudCBpcwotCSAqIGNvbXB1dGVkIGJ5IHRoZSA8Y29kZT5JUmVnaXN0cnlNYW5hZ2VyPC9jb2RlPiBhbmQgY2Fubm90Ci0JICogYmUgaW5mbHVlbmNlZCBieSB0aGUgY2FsbGVyLgotCSAqIAotCSAqIEBwYXJhbSB0YXhvbm9teSBUaGUgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVsIHRvIHNhdmUuCi0JICogQHJldHVybiBBIDxjb2RlPlRheG9ub215PC9jb2RlPiByZWZlcmVuY2UuCi0JICogQHRocm93cyBDb3JlRXhjZXB0aW9uIElmIHRoZSBvcGVyYXRpb24gZmFpbHMgZm9yIGFueSByZWFzb24sCi0JICogaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBtYWxmb3JtZWQgbG9jYXRpb24gVVJJcyBpbiB0aGUKLQkgKiBpbmRleCBvciBnZW5lcmFsIGlucHV0L291dHB1dCBlcnJvciBjb25kaXRpb25zLgotCSAqIEBzZWUgVGF4b25vbXkKLQkgKi8KLQlwdWJsaWMgVGF4b25vbXkgc2F2ZVRheG9ub215ICggVGF4b25vbXkgdGF4b25vbXkgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbjsKLQotCS8qKgotCSAqIExvYWRzIGFzIG5lY2Vzc2FyeSBhbmQgcmV0dXJucyBhIGZ1bGwgPGNvZGU+VGF4b25vbXk8L2NvZGU+Ci0JICogbW9kZWwgYXMgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gVVJJIGFuZCByZWZlcmVuY2VkIGZyb20KLQkgKiB0aGUgaW5kZXggWE1MIGRvY3VtZW50IGxvY2F0ZWQgYXQgPGNvZGU+Z2V0VVJMKCk8L2NvZGU+LgotCSAqIAotCSAqIEBwYXJhbSB1cmkgVGhlIFVSSSBpZGVudGlmaWVyIG9mIHRoZSB0YXhvbm9teS4KLQkgKiBAcmV0dXJuIFRoZSA8Y29kZT5UYXhvbm9teTwvY29kZT4gbW9kZWwKLQkgKiBvciBudWxsIGlmIG5vIHN1Y2ggbW9kZWwgY2FuIGJlIGZvdW5kLgotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBJZiB0aGUgb3BlcmF0aW9uIGZhaWxzIGZvciBhbnkgcmVhc29uLAotCSAqIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gbWFsZm9ybWVkIGxvY2F0aW9uIFVSSXMgaW4gdGhlCi0JICogaW5kZXggb3IgZ2VuZXJhbCBpbnB1dC9vdXRwdXQgZXJyb3IgY29uZGl0aW9ucy4KLQkgKiBAc2VlIFRheG9ub215Ci0JICovCi0JcHVibGljIFRheG9ub215IGxvYWRUYXhvbm9teSAoIFN0cmluZyB1cmkgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbjsKLQotCS8qKgotCSAqIExvYWRzIGFzIG5lY2Vzc2FyeSBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBmdWxsIDxjb2RlPlRheG9ub215PC9jb2RlPgotCSAqIG1vZGVscyBhcyBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBhcnJheSBvZiBVUklzIGFuZCByZWZlcmVuY2VkIGZyb20KLQkgKiB0aGUgaW5kZXggWE1MIGRvY3VtZW50IGxvY2F0ZWQgYXQgPGNvZGU+Z2V0VVJMKCk8L2NvZGU+LgotCSAqIFVzZWZ1bCBpbiBjb25qdW5jdGlvbiB3aXRoIDxjb2RlPmdldFRheG9ub215VVJJcygpPC9jb2RlPi4KLQkgKiBOb3RlIHRoYXQgdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgYXJyYXkgbWF5IGJlIGxlc3MgdGhhbgotCSAqIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IG9mIFVSSXMgaW4gY2FzZXMgd2hlcmUgb25lIG9yIG1vcmUKLQkgKiBVUklzIGZhaWwgdG8gcmVzb2x2ZSB0byBhIGxvYWRhYmxlIG1vZGVsLiAKLQkgKiAKLQkgKiBAcGFyYW0gdXJpcyBUaGUgVVJJIGlkZW50aWZpZXJzIG9mIHRoZSB0YXhvbm9taWVzLgotCSAqIEByZXR1cm4gVGhlIGFycmF5IG9mIDxjb2RlPlRheG9ub215PC9jb2RlPiBtb2RlbHMsCi0JICogbmV2ZXIgbnVsbCwgYnV0IHBvc3NpYmx5IGVtcHR5LgotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBJZiB0aGUgb3BlcmF0aW9uIGZhaWxzIGZvciBhbnkgcmVhc29uLAotCSAqIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gbWFsZm9ybWVkIGxvY2F0aW9uIFVSSXMgaW4gdGhlCi0JICogaW5kZXggb3IgZ2VuZXJhbCBpbnB1dC9vdXRwdXQgZXJyb3IgY29uZGl0aW9ucy4KLQkgKiBAc2VlIFJlZ2lzdHJ5Ci0JICovCi0JcHVibGljIFRheG9ub215W10gbG9hZFRheG9ub21pZXMgKCBTdHJpbmdbXSB1cmlzICkgdGhyb3dzIENvcmVFeGNlcHRpb247Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIFVSSSBpZGVudGlmaWVycyB0byA8Y29kZT5UYXhvbm9teTwvY29kZT4KLQkgKiBtb2RlbHMgaW4gdGhlIGluZGV4IG1hbmFnZWQgYnkgdGhpcyA8Y29kZT5JUmVnaXN0cnlNYW5hZ2VyPC9jb2RlPi4KLQkgKiAKLQkgKiBAcmV0dXJuIEFuIGFycmF5IG9mIFVSSSBpZGVudGlmaWVycywgcG9zc2libHkgZW1wdHkgYnV0IG5ldmVyIG51bGwsCi0JICogdG8gcmVnaXN0ZXJlZCA8Y29kZT5UYXhvbm9teTwvY29kZT4gbW9kZWxzLgotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBJZiB0aGUgb3BlcmF0aW9uIGZhaWxzIGZvciBhbnkgcmVhc29uLAotCSAqIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gbWFsZm9ybWVkIGxvY2F0aW9uIFVSSXMgaW4gdGhlCi0JICogaW5kZXggb3IgZ2VuZXJhbCBpbnB1dC9vdXRwdXQgZXJyb3IgY29uZGl0aW9ucy4KLQkgKiBAc2VlIFRheG9ub215Ci0JICovCi0JcHVibGljIFN0cmluZ1tdIGdldFRheG9ub215VVJJcyAoKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbjsKLQotCS8qKgotCSAqIFJlbW92ZXMgdGhlIDxjb2RlPlRheG9ub215PC9jb2RlPiBtb2RlbCBpZGVudGlmaWVkIGJ5IHRoZQotCSAqIGdpdmVuIDxjb2RlPnVyaTwvY29kZT4gZnJvbSB0aGUgaW5kZXggYW5kIGVpdGhlciBrZWVwcyBvcgotCSAqIGRlbGV0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgPGNvZGU+VGF4b25vbXk8L2NvZGU+IGRvY3VtZW50Ci0JICogYmFzZWQgb24gdGhlIHZhbHVlIGdpdmVuIGZvciA8Y29kZT5kZWxldGVEb2N1bWVudDwvY29kZT4uCi0JICogCi0JICogQHBhcmFtIHVyaSBUaGUgVVJJIGlkZW50aWZpZXIgb2YgdGhlIG1vZGVsIHRvIGRlbGV0ZS4KLQkgKiBAcGFyYW0gZGVsZXRlRG9jdW1lbnQgRWl0aGVyIDxjb2RlPktFRVBfRE9DVU1FTlQ8L2NvZGU+Ci0JICogb3IgPGNvZGU+REVMRVRFX0RPQ1VNRU5UPC9jb2RlPiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUKLQkgKiBtb2RlbCBkb2N1bWVudCBzaG91bGQgYmUga2VwdCBvciBkZWxldGVkLgotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBJZiB0aGUgb3BlcmF0aW9uIGZhaWxzIGZvciBhbnkgcmVhc29uLAotCSAqIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gbWFsZm9ybWVkIGxvY2F0aW9uIFVSSXMgaW4gdGhlCi0JICogaW5kZXggb3IgZ2VuZXJhbCBpbnB1dC9vdXRwdXQgZXJyb3IgY29uZGl0aW9ucy4KLQkgKiBAc2VlIFRheG9ub215Ci0JICogQHNlZSAjS0VFUF9ET0NVTUVOVAotCSAqIEBzZWUgI0RFTEVURV9ET0NVTUVOVAotCSAqLwotCXB1YmxpYyB2b2lkIHJlbW92ZVRheG9ub215ICggU3RyaW5nIHVyaSwgYm9vbGVhbiBkZWxldGVEb2N1bWVudCApIHRocm93cyBDb3JlRXhjZXB0aW9uOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9yZWdpc3RyeS9JVGF4b25vbXlGaW5kZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcmVnaXN0cnkvSVRheG9ub215RmluZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3OGZjYzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9yZWdpc3RyeS9JVGF4b25vbXlGaW5kZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXk7Ci0KLS8qKgotICogQW4gPGNvZGU+SVRheG9ub215RmluZGVyPC9jb2RlPiBjb21wdXRlcyB0aGUgc2V0IG9mCi0gKiA8Y29kZT5UYXhvbm9teTwvY29kZT4gbW9kZWxzIHJlZmVyZW5jZWQgb3IgdXNlZCBieSBhCi0gKiA8Y29kZT5SZWdpc3RyeTwvY29kZT4uCi0gKiBAYXV0aG9yIGdpbGJlcnRhQGNhLmlibS5jb20KLSAqIEBzZWUgSVJlZ2lzdHJ5TWFuYWdlcgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElUYXhvbm9teUZpbmRlcgotewotCS8qKgotCSAqIFJldHVybnMgYW4gYXJyYXkgdGF4b25vbWllcyB1c2VkIGJ5IHRoZSBnaXZlbgotCSAqIDxjb2RlPnJlZ2lzdHJ5PC9jb2RlPi4gVGhpcyBtZXRob2QgbmV2ZXIgcmV0dXJucyBudWxsLgotCSAqCi0JICogQHBhcmFtIHJlZ2lzdHJ5IFRoZSA8Y29kZT5SZWdpc3RyeTwvY29kZT4gZm9yIHdoaWNoCi0JICogYSBzZXQgb2YgdGF4b25vbWllcyBtaWdodCBiZSBmb3VuZC4KLQkgKiBAcmV0dXJuIFRoZSBhcnJheSBvZiB0YXhvbm9taWVzLCBwb3NzaWJseSBlbXB0eS4KLQkgKi8KLQlwdWJsaWMgVGF4b25vbXlbXSB0YXhvbm9taWVzICggUmVnaXN0cnkgcmVnaXN0cnkgKTsJCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9yZWdpc3RyeS9SZWdpc3RyeU1hbmFnZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcmVnaXN0cnkvUmVnaXN0cnlNYW5hZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4M2NjZDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9yZWdpc3RyeS9SZWdpc3RyeU1hbmFnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUzMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwNTE3ICAgMTMxNTgyIG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbgotICogMjAwNjA5MDYgICAxNDE3OTYgZ2lsYmVydGFAY2EuaWJtLmNvbSAtIEdpbGJlcnQgQW5kcmV3cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5OwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguSW5kZXg7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LlJUSW5kZXhGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLQotLyoqCi0gKiBBIHR5cGljYWwgaW1wbGVtZW50YXRpb24gb2YgPGNvZGU+SVJlZ2lzdHJ5TWFuYWdlcjwvY29kZT4uCi0gKiBAYXV0aG9yIGNicmVhbGV5Ci0gKiBAc2VlIElSZWdpc3RyeU1hbmFnZXIKLSAqLwotcHVibGljIGNsYXNzIFJlZ2lzdHJ5TWFuYWdlciBpbXBsZW1lbnRzIElSZWdpc3RyeU1hbmFnZXIKLXsKLQlwcml2YXRlIHN0YXRpYyBTdHJpbmcgUkVHSVNUUlkgPSAiUmVnaXN0cnkiOwotCXByaXZhdGUgc3RhdGljIFN0cmluZyBUQVhPTk9NWSA9ICJUYXhvbm9teSI7Ci0JcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIFhNTCA9ICJ4bWwiOwotCXByaXZhdGUgSGFzaHRhYmxlIHRheG9ub215RmluZGVyc187Ci0JcHJpdmF0ZSBJbmRleCBpbmRleF87Ci0JcHJpdmF0ZSBHZW5lcmljUmVzb3VyY2VGYWN0b3J5IHJlc291cmNlRmFjdG9yeV8gPSBuZXcgR2VuZXJpY1Jlc291cmNlRmFjdG9yeSgpOwotCXByaXZhdGUgVVJMIHJlZ2lzdHJ5VVJMXz0gbnVsbDsKLQlwcml2YXRlIFN0cmluZyByZWdpc3RyeVBhdGhuYW1lXyA9IG51bGw7Ci0KLQkvKioKLQkgKiBDb25zdHJ1Y3RzIGEgbmV3IFJlZ2lzdHJ5TWFuYWdlciBmb3IgdGhlIGluZGV4IFhNTCBmaWxlCi0JICogYXQgdGhlIGdpdmVuIDxjb2RlPnVybDwvY29kZT4uCi0JICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIHRoZSBpbmRleCBYTUwgZmlsZS4KLQkgKi8KLQlSZWdpc3RyeU1hbmFnZXIgKCBVUkwgdXJsICkKLQl7Ci0JCXJlZ2lzdHJ5VVJMXyA9IHVybDsKLQkJdGF4b25vbXlGaW5kZXJzXyA9IG5ldyBIYXNodGFibGUoKTsKLQl9Ci0KLQkvKioKLQkgKiBDb25zdHJ1Y3RzIGEgbmV3IFJlZ2lzdHJ5TWFuYWdlciBmb3IgdGhlIGluZGV4IFhNTCBmaWxlCi0JICogYXQgdGhlIGdpdmVuIDxjb2RlPnBhdGhuYW1lPC9jb2RlPi4KLQkgKiBAcGFyYW0gcGF0aG5hbWUgVGhlIHBhdGhuYW1lIHRvIHRoZSBpbmRleCBYTUwgZmlsZS4KLQkgKi8KLQlSZWdpc3RyeU1hbmFnZXIgKCBTdHJpbmcgcGF0aG5hbWUgKQotCXsKLQkJcmVnaXN0cnlQYXRobmFtZV8gPSBwYXRobmFtZTsKLQkJdGF4b25vbXlGaW5kZXJzXyA9IG5ldyBIYXNodGFibGUoKTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuSVJlZ2lzdHJ5TWFuYWdlciNnZXRVUkwoKQotCSAqLwotCXB1YmxpYyBVUkwgZ2V0VVJMICgpIHRocm93cyBNYWxmb3JtZWRVUkxFeGNlcHRpb24KLQl7Ci0JCWlmIChyZWdpc3RyeVVSTF8gPT0gbnVsbCkKLQkJewotCQkJcmVnaXN0cnlVUkxfID0gbmV3IEZpbGUocmVnaXN0cnlQYXRobmFtZV8pLnRvVVJMKCk7Ci0JCX0KLQkJcmV0dXJuIHJlZ2lzdHJ5VVJMXzsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFic29sdXRlIFVSTCBjb21wdXRlZCBmcm9tIHRoZSBhYnNvbHV0ZSBVUkwgb2YgdGhlCi0JICogaW5kZXggWE1MIGRvY3VtZW50IG1hbmFnZWQgYnkgdGhpcyA8Y29kZT5SZWdpc3RyeU1hbmFnZXI8L2NvZGU+Ci0JICogYW5kIHRoZSBnaXZlbiA8Y29kZT5pZDwvY29kZT4uIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZGV0ZXJtaW5lCi0JICogYSByZWFzb25hYmxlIGxvY2F0aW9uIFVSTCBmb3IgcmVnaXN0cnkgYW5kIHRheG9ub215IGRvY3VtZW50cwotCSAqIHdoZW4gcmVmZXJlbmNlcyB0byB0aGVtIGFyZSBmaXJzdCB0byBiZSBhZGRlZCB0byB0aGUgaW5kZXggWE1MCi0JICogZG9jdW1lbnQuIFRoaXMgbWV0aG9kIGlzIGlkZW1wb3RlbnQgaW5zb2ZhciBhcyBpdCB3aWxsIGFsd2F5cwotCSAqIGNvbXB1dGUgdGhlIHNhbWUgVVJMIGZvciBhIGdpdmVuIDxjb2RlPlJlZ2lzdHJ5TWFuYWdlcjwvY29kZT4KLQkgKiBhbmQgYSBnaXZlbiA8Y29kZT5pZDwvY29kZT4uCi0JICogCi0JICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgcmVmZXJlbmNlZCByZWdpc3RyeSBvciB0YXhvbm9teSBkb2N1bWVudC4gCi0JICogQHJldHVybiBUaGUgYWJzb2x1dGUgVVJMIHRvIHRoZSByZWZlcmVuY2VkIGRvY3VtZW50LgotCSAqIEB0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uIElmIGEgdmlhYmxlIGFic29sdXRlIFVSTCBjYW5ub3QKLQkgKiBiZSBjb21wdXRlZC4KLQkgKi8KLQlwcml2YXRlIFVSTCBnZXRVUkwgKCBTdHJpbmcgaWQgKSB0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uCi0JewotCQlTdHJpbmcgYmFzZVVybCA9ICIiOyAKLQkJVVJMIGluZGV4VXJsID0gZ2V0VVJMKCk7Ci0JCVN0cmluZyBpbmRleFN0cmluZyA9IGluZGV4VXJsLnRvU3RyaW5nKCk7Ci0JCWludCBpbmRleCA9IGluZGV4U3RyaW5nLmxhc3RJbmRleE9mKCIvIik7IAotCQliYXNlVXJsID0gaW5kZXhTdHJpbmcuc3Vic3RyaW5nKDAsaW5kZXggKyAxKTsKLQkJU3RyaW5nIHVybFN0cmluZyA9IGJhc2VVcmwgKyBpZCArICIuIiArIFhNTDsKLQkJcmV0dXJuIG5ldyBVUkwodXJsU3RyaW5nKTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuSVJlZ2lzdHJ5TWFuYWdlciNyZWZyZXNoTWFuYWdlcigpCi0JICovCi0JcHVibGljIHZvaWQgcmVmcmVzaE1hbmFnZXIgKCkKLQl7Ci0JCWluZGV4XyA9IG51bGw7Ci0JfQotCQotCS8qKgotCSAqIENhY2hlcyBhbmQgcmV0dXJucyB0aGUgaW5kZXggbW9kZWwuIE9uIGZpcnN0IGNhbGwsCi0JICogaWYgYW4gaW5kZXggZG9jdW1lbnQgZXhpc3RzLCB0aGUgaW5kZXggaXMgbG9hZGVkCi0JICogZnJvbSBpdCwgb3RoZXJ3aXNlLCBhIG5ldyBpbmRleCBpcyByZXR1cm5lZC4KLQkgKiBAcmV0dXJuIFRoZSBpbmRleC4KLQkgKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gSWYgdGhlIGluZGV4IGNhbm5vdCBiZSBsb2FkZWQgZm9yIGFueSByZWFzb24uCi0JICovCi0JcHJpdmF0ZSBJbmRleCBnZXRJbmRleCAoKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJaWYgKGluZGV4XyA9PSBudWxsKQotCQl7Ci0JCQl0cnkKLQkJCXsKLQkJCQlVUkwgaW5kZXhVUkwgPSBnZXRVUkwoKTsKLQkJCQlpZiAoUmVnaXN0cnlTZXJ2aWNlLmV4aXN0cyhpbmRleFVSTCkpCi0JCQkJewotCQkJCQlSZXNvdXJjZSByZXNvdXJjZSA9IHJlc291cmNlRmFjdG9yeV8uY3JlYXRlUmVzb3VyY2UoVVJJLmNyZWF0ZVVSSSgiKi54bWwiKSk7Ci0JCQkJCXJlc291cmNlLmxvYWQoUmVnaXN0cnlTZXJ2aWNlLmdldElucHV0U3RyZWFtRm9yKGluZGV4VVJMKSxudWxsKTsKLQkJCQkJb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdCBkb2N1bWVudCA9IChvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguRG9jdW1lbnRSb290KXJlc291cmNlLmdldENvbnRlbnRzKCkuZ2V0KDApOwotCQkJCQlpbmRleF8gPSBkb2N1bWVudC5nZXRJbmRleCgpOwotCQkJCX0KLQkJCQllbHNlCi0JCQkJewotCQkJCQlpbmRleF8gPSBSVEluZGV4RmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlSW5kZXgoKTsKLQkJCQl9Ci0JCQl9Ci0JCQljYXRjaCAoSU9FeGNlcHRpb24gZSkKLQkJCXsKLQkJCQkvL1RPRE86IE5lZWQgYSBtZXNzYWdlIGZvciB0aGlzIFN0YXR1cy4KLQkJCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsV1NQbHVnaW4uSUQsMCwiIixlKSk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGluZGV4XzsKLQl9Ci0KLQkvKioKLQkgKiBTYXZlcyB0aGUgaW5kZXggbW9kZWwgdG8gYW4gWE1MIGRvY3VtZW50LgkKLQkgKiBAdGhyb3dzIENvcmVFeGNlcHRpb24gSWYgdGhlIHNhdmUgZmFpbHMgZm9yIGFueSByZWFzb24uCi0JICovCi0JcHJpdmF0ZSB2b2lkIHNhdmVJbmRleCAoKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5ydGluZGV4LkRvY3VtZW50Um9vdCBkb2N1bWVudCA9IFJUSW5kZXhGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVEb2N1bWVudFJvb3QoKTsKLQkJZG9jdW1lbnQuc2V0SW5kZXgoZ2V0SW5kZXgoKSk7Ci0JCVJlc291cmNlIHJlc291cmNlID0gcmVzb3VyY2VGYWN0b3J5Xy5jcmVhdGVSZXNvdXJjZShVUkkuY3JlYXRlVVJJKCIqLnhtbCIpKTsKLQkJcmVzb3VyY2UuZ2V0Q29udGVudHMoKS5hZGQoZG9jdW1lbnQpOwotCQl0cnkKLQkJewotCQkJcmVzb3VyY2Uuc2F2ZShSZWdpc3RyeVNlcnZpY2UuZ2V0T3V0cHV0U3RyZWFtRm9yKGdldFVSTCgpKSxudWxsKTsKLQkJfQotCQljYXRjaCAoSU9FeGNlcHRpb24gZSkKLQkJewotCQkJLy9UT0RPOiBOZWVkIGEgbWVzc2FnZSBmb3IgdGhpcyBTdGF0dXMuCi0JCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsV1NQbHVnaW4uSUQsMCwiIixlKSk7Ci0JCX0KLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5LklSZWdpc3RyeU1hbmFnZXIjYWRkVGF4b25vbXlGaW5kZXIoamF2YS5sYW5nLlN0cmluZywgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5LklUYXhvbm9teUZpbmRlcikKLQkgKi8KLQlwdWJsaWMgdm9pZCBhZGRUYXhvbm9teUZpbmRlcihTdHJpbmcgY2xhc3NOYW1lLCBJVGF4b25vbXlGaW5kZXIgdGF4b25vbXlGaW5kZXIpCi0JewotCQl0YXhvbm9teUZpbmRlcnNfLnB1dChjbGFzc05hbWUsdGF4b25vbXlGaW5kZXIpOwotCX0KLQkKLQkvKioKLQkgKiBBZGRzIHRoZSBnaXZlbiA8Y29kZT5yZWdpc3RyeTwvY29kZT4gYXMtaXMsIHdoZXRoZXIgZnVsbCBtb2RlbAotCSAqIG9yIHJlZmVyZW5jZSwgdG8gdGhlIGluZGV4IG9ubHkgaWYgYSByZWdpc3RyeSB3aXRoIHRoZSBzYW1lIElECi0JICogb3IgcmVmZXJlbmNlIGlzIG5vdCBhbHJlYWR5IHN0b3JlZCB0aGVyZS4KLQkgKiBAcGFyYW0gcmVnaXN0cnkgVGhlIHJlZ2lzdHJ5IHRvIGFkZC4KLQkgKi8KLQlwcml2YXRlIHZvaWQgYWRkUmVnaXN0cnlUb0luZGV4KFJlZ2lzdHJ5IHJlZ2lzdHJ5KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJU3RyaW5nIGlkID0gcmVnaXN0cnkuZ2V0SWQoKTsKLQkJaWYgKGlkID09IG51bGwpIGlkID0gcmVnaXN0cnkuZ2V0UmVmKCk7Ci0JCWlmIChpZCAhPSBudWxsICYmIGdldFJlZ2lzdHJ5KGlkKSA9PSBudWxsKQotCQl7Ci0JCQlnZXRJbmRleCgpLmdldFJlZ2lzdHJ5KCkuYWRkKHJlZ2lzdHJ5KTsKLQkJfQotCX0KLQkKLQkvKioKLQkgKiBBZGRzIHRoZSBnaXZlbiA8Y29kZT50YXhvbm9teTwvY29kZT4gYXMtaXMsIHdoZXRoZXIgZnVsbCBtb2RlbAotCSAqIG9yIHJlZmVyZW5jZSwgdG8gdGhlIGluZGV4IG9ubHkgaWYgYSB0YXhvbm9teSB3aXRoIHRoZSBzYW1lIElECi0JICogb3IgcmVmZXJlbmNlIGlzIG5vdCBhbHJlYWR5IHN0b3JlZCB0aGVyZS4KLQkgKiBAcGFyYW0gdGF4b25vbXkgVGhlIHRheG9ub215IHRvIGFkZC4KLQkgKi8KLQlwcml2YXRlIHZvaWQgYWRkVGF4b25vbXlUb0luZGV4KFRheG9ub215IHRheG9ub215KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJU3RyaW5nIGlkID0gdGF4b25vbXkuZ2V0SWQoKTsKLQkJaWYgKGlkID09IG51bGwpIGlkID0gdGF4b25vbXkuZ2V0UmVmKCk7Ci0JCWlmIChpZCAhPSBudWxsICYmIGdldFRheG9ub215KGlkKSA9PSBudWxsKQotCQl7Ci0JCSAJZ2V0SW5kZXgoKS5nZXRUYXhvbm9teSgpLmFkZCh0YXhvbm9teSk7CQotCQl9Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeS5JUmVnaXN0cnlNYW5hZ2VyI3NhdmVSZWdpc3RyeShvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5KQotCSAqLwotCXB1YmxpYyBSZWdpc3RyeSBzYXZlUmVnaXN0cnkgKCBSZWdpc3RyeSByZWdpc3RyeSApIHRocm93cyBDb3JlRXhjZXB0aW9uCi0JewotCQlSZWdpc3RyeVNlcnZpY2UgcmVnaXN0cnlTZXJ2aWNlID0gUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk7Ci0JCVJlZ2lzdHJ5IHJlZ2lzdHJ5UmVmID0gbnVsbDsKLQkJdHJ5Ci0JCXsKLQkJCVVSTCB1cmwgPSBnZXRVUkwoUkVHSVNUUlkgKyByZWdpc3RyeS5nZXRJZCgpKTsKLQkJCXJlZ2lzdHJ5U2VydmljZS5zYXZlUmVnaXN0cnkodXJsLHJlZ2lzdHJ5KTsKLQkJCXJlZ2lzdHJ5UmVmID0gcmVnaXN0cnlTZXJ2aWNlLm5ld1JlZ2lzdHJ5UmVmZXJlbmNlKHJlZ2lzdHJ5KTsKLQkJCXJlZ2lzdHJ5UmVmLnNldExvY2F0aW9uKHVybC50b1N0cmluZygpKTsKLQkJCWFkZFJlZ2lzdHJ5VG9JbmRleChyZWdpc3RyeVJlZik7Ci0JCQlzYXZlSW5kZXgoKTsKLQkJCS8qCi0JCQkgKiBUT0RPOiBUaGUgZm9sbG93aW5nIHBpbGUgb2YgY29kZSBpcyBjb21tZW50ZWQgb3V0Ci0JCQkgKiBzaW5jZSB0aGVyZSBpc24ndCBhIHJlbGlhYmxlIHdheSB1bmRlciB0aGUgY3VycmVudAotCQkJICogZGVzaWduIHRvIHNhdmUgdGF4b25vbXkgbW9kZWxzIGhlbGQgaW4gYSByZWdpc3RyeSBtb2RlbAotCQkJICogCi0JCQlJVGF4b25vbXlGaW5kZXIgZmluZGVyID0gKElUYXhvbm9teUZpbmRlcil0YXhvbm9teUZpbmRlcnNfLmdldChyZWdpc3RyeS5nZXRDbGFzcygpLmdldE5hbWUoKSk7Ci0JCQlpZiAoZmluZGVyICE9IG51bGwpCi0JCQl7Ci0JCQkJVGF4b25vbXlbXSB0YXhvbm9taWVzID0gZmluZGVyLnRheG9ub21pZXMocmVnaXN0cnkpOwotCQkJCWZvciAoaW50IGk9MDsgaTx0YXhvbm9taWVzLmxlbmd0aDsgaSsrKQotCQkJCXsKLQkJCQkJU3RyaW5nIGlkID0gdGF4b25vbWllc1tpXS5nZXRJZCgpOwotCQkJCQlTdHJpbmcgcmVmID0gdGF4b25vbWllc1tpXS5nZXRSZWYoKTsKLQkJCQkJaWYgKGlkICE9IG51bGwpCi0JCQkJCXsKLQkJCQkJCVVSTCB0YXhvbm9teVVSTCA9IGdldFVSTChUQVhPTk9NWSArIGlkKTsKLQkJCQkJCXJlZ2lzdHJ5U2VydmljZS5zYXZlVGF4b25vbXkodGF4b25vbXlVUkwsdGF4b25vbWllc1tpXSk7Ci0JCQkJCQlUYXhvbm9teSB0YXhvbm9teVJlZiA9IHJlZ2lzdHJ5U2VydmljZS5uZXdUYXhvbm9teVJlZmVyZW5jZSh0YXhvbm9taWVzW2ldKTsKLQkJCQkJCXRheG9ub215UmVmLnNldExvY2F0aW9uKHRheG9ub215VVJMLnRvU3RyaW5nKCkpOwotCQkJCQkJYWRkVGF4b25vbXlUb0luZGV4KHRheG9ub215UmVmKTsKLQkJCQkJfQotCQkJCQllbHNlIGlmIChyZWYgIT0gbnVsbCkKLQkJCQkJewotCQkJCQkJaWYgKHRheG9ub21pZXNbaV0uZ2V0TG9jYXRpb24oKSA9PSBudWxsKQotCQkJCQkJewotCQkJCQkJCVN0cmluZyBsb2NhdGlvbiA9IG51bGw7Ci0JCQkJCQkJVGF4b25vbXkgdGF4b25vbXkgPSBnZXRUYXhvbm9teShyZWYpOwotCQkJCQkJCWlmICh0YXhvbm9teSAhPSBudWxsKSBsb2NhdGlvbiA9IHRheG9ub215LmdldExvY2F0aW9uKCk7Ci0JCQkJCQkJaWYgKGxvY2F0aW9uID09IG51bGwpIGxvY2F0aW9uID0gZ2V0VVJMKFRBWE9OT01ZICsgcmVmKS50b1N0cmluZygpOwotCQkJCQkJCXRheG9ub21pZXNbaV0uc2V0TG9jYXRpb24obG9jYXRpb24pOwotCQkJCQkJCWlmICh0YXhvbm9teSA9PSBudWxsKQotCQkJCQkJCXsKLQkJCQkJCQkJYWRkVGF4b25vbXlUb0luZGV4KHJlZ2lzdHJ5U2VydmljZS5uZXdUYXhvbm9teVJlZmVyZW5jZSh0YXhvbm9taWVzW2ldKSk7Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQkgICAgKi8KLQkJfQotCQljYXRjaCAoIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBtZSApCi0JCXsKLQkJCS8vVE9ETzogTWVzc2FnZSB0ZXh0IHJlcXVpcmVkLgotCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24obmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLFdTUGx1Z2luLklELDAsIiIsbWUpKTsKLQkJfQotCQlyZXR1cm4gcmVnaXN0cnlTZXJ2aWNlLm5ld1JlZ2lzdHJ5UmVmZXJlbmNlKHJlZ2lzdHJ5UmVmKTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuSVJlZ2lzdHJ5TWFuYWdlciNsb2FkUmVnaXN0cnkoamF2YS5sYW5nLlN0cmluZykKLQkgKi8KLQlwdWJsaWMgUmVnaXN0cnkgbG9hZFJlZ2lzdHJ5ICggU3RyaW5nIHVyaSApIHRocm93cyBDb3JlRXhjZXB0aW9uCi0JewotCQlSZWdpc3RyeVNlcnZpY2UgcmVnaXN0cnlTZXJ2aWNlID0gUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk7Ci0JCXRyeQotCQl7Ci0JCQlSZWdpc3RyeSByZWdpc3RyeSA9IGdldFJlZ2lzdHJ5KHVyaSk7Ci0JCQlpZiAocmVnaXN0cnkgPT0gbnVsbCkgcmV0dXJuIG51bGw7Ci0KLQkJCS8vIElmIHRoZSBSZWdpc3RyeSBoYXMgYW4gSUQsIGl0J3MgYSBmdWxsIG1vZGVsCi0JCQkvLyBpbmxpbmVkIHdpdGhpbiB0aGUgSW5kZXggYW5kIGlzIHJldHVybmVkIGFzLWlzLgotCQkJaWYgKHJlZ2lzdHJ5LmdldElkKCkgIT0gbnVsbCkgcmV0dXJuIHJlZ2lzdHJ5OwotCi0JCQkvLyBPdGhlcndpc2UgaXQncyBhIHJlZmVyZW5jZSB0byBhIGZ1bGwgbW9kZWwKLQkJCS8vIHdoaWNoIHdlIGxvYWQgZnJvbSB0aGUgcmVmZXJlbmNlJ3MgbG9jYXRpb24uCi0JCQlTdHJpbmcgdXJsU3RyaW5nID0gcmVnaXN0cnkuZ2V0TG9jYXRpb24oKTsKLQkJCWlmICh1cmxTdHJpbmcgPT0gbnVsbCkgcmV0dXJuIG51bGw7Ci0JCQlVUkwgdXJsID0gbmV3IFVSTCh1cmxTdHJpbmcpOwotCQkJcmV0dXJuIHJlZ2lzdHJ5U2VydmljZS5sb2FkUmVnaXN0cnkodXJsKTsKLQkJfQotCQljYXRjaCAoIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBtZSApCi0JCXsKLQkJCS8vVE9ETzogTWVzc2FnZSB0ZXh0IHJlcXVpcmVkLgotCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24obmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLFdTUGx1Z2luLklELDAsIiIsbWUpKTsKLQkJfQotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuSVJlZ2lzdHJ5TWFuYWdlciNsb2FkUmVnaXN0cmllcyhqYXZhLmxhbmcuU3RyaW5nW10pCi0JICovCi0JcHVibGljIFJlZ2lzdHJ5W10gbG9hZFJlZ2lzdHJpZXMgKCBTdHJpbmdbXSB1cmlzICkgdGhyb3dzIENvcmVFeGNlcHRpb24KLQl7Ci0JCUxpc3QgbGlzdCA9IG5ldyBBcnJheUxpc3QodXJpcy5sZW5ndGgpOwotCQlmb3IgKGludCBpPTA7IGk8dXJpcy5sZW5ndGg7IGkrKykKLQkJewotCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBsb2FkUmVnaXN0cnkodXJpc1tpXSk7Ci0JCQlpZiAocmVnaXN0cnkgIT0gbnVsbCkKLQkJCXsKLQkJCQlsaXN0LmFkZChyZWdpc3RyeSk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIChSZWdpc3RyeVtdKWxpc3QudG9BcnJheShuZXcgUmVnaXN0cnlbMF0pOwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeS5JUmVnaXN0cnlNYW5hZ2VyI2dldFJlZ2lzdHJ5VVJJcygpCi0JICovCi0JcHVibGljIFN0cmluZ1tdIGdldFJlZ2lzdHJ5VVJJcyAoKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJRUxpc3QgbGlzdCA9IGdldEluZGV4KCkuZ2V0UmVnaXN0cnkoKTsKLQkJTGlzdCByZWdpc3RyeVVSSXMgPSBuZXcgQXJyYXlMaXN0KGxpc3Quc2l6ZSgpKTsKLQkJSXRlcmF0b3IgaXRlcmF0b3IgPSBsaXN0Lml0ZXJhdG9yKCk7Ci0JCXdoaWxlKGl0ZXJhdG9yLmhhc05leHQoKSkKLQkJewotCQkJLy8gRWFjaCBSZWdpc3RyeSBmb3VuZCBpbiB0aGUgaW5kZXggbWF5IGJlCi0JCQkvLyBlaXRoZXIgYSBmdWxsIG1vZGVsIG9yIGEgcmVmZXJlbmNlIHRvIG9uZS4KLQkJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gKFJlZ2lzdHJ5KWl0ZXJhdG9yLm5leHQoKTsKLQkJCWlmIChyZWdpc3RyeS5nZXRJZCgpICE9IG51bGwpCi0JCQl7Ci0JCQkJcmVnaXN0cnlVUklzLmFkZChyZWdpc3RyeS5nZXRJZCgpKTsKLQkJCX0KLQkJCWVsc2UgaWYgKHJlZ2lzdHJ5LmdldFJlZigpICE9IG51bGwpCi0JCQl7Ci0JCQkJcmVnaXN0cnlVUklzLmFkZChyZWdpc3RyeS5nZXRSZWYoKSk7Ci0JCQl9Ci0JCX0JCi0JCXJldHVybiAoU3RyaW5nW10pcmVnaXN0cnlVUklzLnRvQXJyYXkobmV3IFN0cmluZ1swXSk7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5LklSZWdpc3RyeU1hbmFnZXIjcmVtb3ZlUmVnaXN0cnkoamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikKLQkgKi8KLQlwdWJsaWMgdm9pZCByZW1vdmVSZWdpc3RyeSAoIFN0cmluZyB1cmksIGJvb2xlYW4gZGVsZXRlRG9jdW1lbnQgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJRUxpc3QgbGlzdCA9IGdldEluZGV4KCkuZ2V0UmVnaXN0cnkoKTsKLQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBnZXRSZWdpc3RyeSh1cmkpOwotCQlpZiAocmVnaXN0cnkgIT0gbnVsbCkKLQkJewotCQkJbGlzdC5yZW1vdmUocmVnaXN0cnkpOwotCQkJc2F2ZUluZGV4KCk7Ci0JCQkvLyBUaGUgaWRlbnRpZmllZCBSZWdpc3RyeSBtYXkgYmUgZWl0aGVyIGEgZnVsbCBtb2RlbAotCQkJLy8gKGllLiBpbmxpbmVkIGluIHRoZSBJbmRleCkgb3IgYSByZWZlcmVuY2UgdG8gb25lLgotCQkJLy8gT25seSBpbiB0aGUgbGF0dGVyIGNhc2UgaXMgdGhlcmUgYSBmaWxlIHRvIGRlbGV0ZS4KLQkJCWlmIChkZWxldGVEb2N1bWVudCAmJiByZWdpc3RyeS5nZXRMb2NhdGlvbigpICE9IG51bGwpCi0JCQl7Ci0JCQkJLy9UT0RPOiBJbXBsZW1lbnQgbWUuCi0JCQl9Ci0JCX0KLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuSVJlZ2lzdHJ5TWFuYWdlciNzYXZlVGF4b25vbXkob3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teSkKLQkgKi8KLQlwdWJsaWMgVGF4b25vbXkgc2F2ZVRheG9ub215ICggVGF4b25vbXkgdGF4b25vbXkgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJUmVnaXN0cnlTZXJ2aWNlIHJlZ2lzdHJ5U2VydmljZSA9IFJlZ2lzdHJ5U2VydmljZS5pbnN0YW5jZSgpOwotCQlUYXhvbm9teSB0YXhvbm9teVJlZiA9IG51bGw7Ci0JCXRyeQotCQl7Ci0JCQlVUkwJdXJsID0gZ2V0VVJMKFRBWE9OT01ZICsgdGF4b25vbXkuZ2V0SWQoKSk7Ci0JCSAgICByZWdpc3RyeVNlcnZpY2Uuc2F2ZVRheG9ub215KHVybCx0YXhvbm9teSk7Ci0JCQl0YXhvbm9teVJlZiA9IHJlZ2lzdHJ5U2VydmljZS5uZXdUYXhvbm9teVJlZmVyZW5jZSh0YXhvbm9teSk7Ci0JCQl0YXhvbm9teVJlZi5zZXRMb2NhdGlvbih1cmwudG9TdHJpbmcoKSk7Ci0JCQlhZGRUYXhvbm9teVRvSW5kZXgodGF4b25vbXlSZWYpOwotCQkJc2F2ZUluZGV4KCk7Ci0JCX0KLQkJY2F0Y2ggKCBNYWxmb3JtZWRVUkxFeGNlcHRpb24gbWUgKQotCQl7Ci0JCQkvL1RPRE86IE1lc3NhZ2UgdGV4dCByZXF1aXJlZC4KLQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUixXU1BsdWdpbi5JRCwwLCIiLG1lKSk7Ci0JCX0KLQkJcmV0dXJuIHJlZ2lzdHJ5U2VydmljZS5uZXdUYXhvbm9teVJlZmVyZW5jZSh0YXhvbm9teVJlZik7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeS5JUmVnaXN0cnlNYW5hZ2VyI2xvYWRUYXhvbm9teShqYXZhLmxhbmcuU3RyaW5nKQotCSAqLwotCXB1YmxpYyBUYXhvbm9teSBsb2FkVGF4b25vbXkgKCBTdHJpbmcgdXJpICkgdGhyb3dzIENvcmVFeGNlcHRpb24KLQl7Ci0JCVJlZ2lzdHJ5U2VydmljZSByZWdpc3RyeVNlcnZpY2UgPSBSZWdpc3RyeVNlcnZpY2UuaW5zdGFuY2UoKTsKLQkJdHJ5Ci0JCXsKLQkJCVRheG9ub215IHRheG9ub215ID0gZ2V0VGF4b25vbXkodXJpKTsKLQkJCWlmICh0YXhvbm9teSA9PSBudWxsKSByZXR1cm4gbnVsbDsKLQotCQkJLy8gSWYgdGhlIFRheG9ub215IGhhcyBhbiBJRCwgaXQncyBhIGZ1bGwgbW9kZWwKLQkJCS8vIGlubGluZWQgd2l0aGluIHRoZSBJbmRleCBhbmQgaXMgcmV0dXJuZWQgYXMtaXMuCi0JCQlpZiAodGF4b25vbXkuZ2V0SWQoKSAhPSBudWxsKSByZXR1cm4gdGF4b25vbXk7Ci0KLQkJCS8vIE90aGVyd2lzZSBpdCdzIGEgcmVmZXJlbmNlIHRvIGEgZnVsbCBtb2RlbAotCQkJLy8gd2hpY2ggd2UgbG9hZCBmcm9tIHRoZSByZWZlcmVuY2UncyBsb2NhdGlvbi4KLQkJCVN0cmluZyB1cmxTdHJpbmcgPSB0YXhvbm9teS5nZXRMb2NhdGlvbigpOwotCQkJaWYgKHVybFN0cmluZyA9PSBudWxsKSByZXR1cm4gbnVsbDsKLQkJCVVSTCB1cmwgPSBuZXcgVVJMKHVybFN0cmluZyk7Ci0JCQlyZXR1cm4gcmVnaXN0cnlTZXJ2aWNlLmxvYWRUYXhvbm9teSh1cmwpOwotCQl9Ci0JCWNhdGNoICggTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG1lICkKLQkJewotCQkJLy9UT0RPOiBNZXNzYWdlIHRleHQgcmVxdWlyZWQuCi0JCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsV1NQbHVnaW4uSUQsMCwiIixtZSkpOwotCQl9Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeS5JUmVnaXN0cnlNYW5hZ2VyI2xvYWRUYXhvbm9taWVzKGphdmEubGFuZy5TdHJpbmdbXSkKLQkgKi8KLQlwdWJsaWMgVGF4b25vbXlbXSBsb2FkVGF4b25vbWllcyAoIFN0cmluZ1tdIHVyaXMgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCh1cmlzLmxlbmd0aCk7Ci0JCWZvciAoaW50IGk9MDsgaTx1cmlzLmxlbmd0aDsgaSsrKQotCQl7Ci0JCQlUYXhvbm9teSB0YXhvbm9teSA9IGxvYWRUYXhvbm9teSh1cmlzW2ldKTsKLQkJCWlmICh0YXhvbm9teSAhPSBudWxsKQotCQkJewotCQkJCWxpc3QuYWRkKHRheG9ub215KTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gKFRheG9ub215W10pbGlzdC50b0FycmF5KG5ldyBUYXhvbm9teVswXSk7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5LklSZWdpc3RyeU1hbmFnZXIjZ2V0VGF4b25vbXlVUklzKCkKLQkgKi8KLQlwdWJsaWMgU3RyaW5nW10gZ2V0VGF4b25vbXlVUklzICgpIHRocm93cyBDb3JlRXhjZXB0aW9uCi0JewotCQlFTGlzdCBsaXN0ID0gZ2V0SW5kZXgoKS5nZXRUYXhvbm9teSgpOwotCQlMaXN0IHRheG9ub215VVJJcyA9IG5ldyBBcnJheUxpc3QobGlzdC5zaXplKCkpOwotCQlJdGVyYXRvciBpdGVyYXRvciA9IGxpc3QuaXRlcmF0b3IoKTsKLQkJd2hpbGUoaXRlcmF0b3IuaGFzTmV4dCgpKQotCQl7Ci0JCQkvLyBFYWNoIFRheG9ub215IGZvdW5kIGluIHRoZSBpbmRleCBtYXkgYmUKLQkJCS8vIGVpdGhlciBhIGZ1bGwgbW9kZWwgb3IgYSByZWZlcmVuY2UgdG8gb25lLgotCQkJVGF4b25vbXkgdGF4b25vbXkgPSAoVGF4b25vbXkpaXRlcmF0b3IubmV4dCgpOwotCQkJaWYgKHRheG9ub215LmdldElkKCkgIT0gbnVsbCkKLQkJCXsKLQkJCQl0YXhvbm9teVVSSXMuYWRkKHRheG9ub215LmdldElkKCkpOwotCQkJfQotCQkJZWxzZSBpZiAodGF4b25vbXkuZ2V0UmVmKCkgIT0gbnVsbCkKLQkJCXsKLQkJCQl0YXhvbm9teVVSSXMuYWRkKHRheG9ub215LmdldFJlZigpKTsKLQkJCX0KLQkJfQkKLQkJcmV0dXJuIChTdHJpbmdbXSl0YXhvbm9teVVSSXMudG9BcnJheShuZXcgU3RyaW5nWzBdKTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuSVJlZ2lzdHJ5TWFuYWdlciNyZW1vdmVUYXhvbm9teShqYXZhLmxhbmcuU3RyaW5nLCBib29sZWFuKQotCSAqLwotCXB1YmxpYyB2b2lkIHJlbW92ZVRheG9ub215ICggU3RyaW5nIHVyaSwgYm9vbGVhbiBkZWxldGVEb2N1bWVudCApIHRocm93cyBDb3JlRXhjZXB0aW9uCi0JewotCQlFTGlzdCBsaXN0ID0gZ2V0SW5kZXgoKS5nZXRUYXhvbm9teSgpOwotCQlUYXhvbm9teSB0YXhvbm9teSA9IGdldFRheG9ub215KHVyaSk7Ci0JCWlmICh0YXhvbm9teSAhPSBudWxsKQotCQl7Ci0JCQlsaXN0LnJlbW92ZSh0YXhvbm9teSk7Ci0JCQlzYXZlSW5kZXgoKTsKLQkJCS8vIFRoZSBpZGVudGlmaWVkIFRheG9ub215IG1heSBiZSBlaXRoZXIgYSBmdWxsIG1vZGVsCi0JCQkvLyAoaWUuIGlubGluZWQgaW4gdGhlIEluZGV4KSBvciBhIHJlZmVyZW5jZSB0byBvbmUuCi0JCQkvLyBPbmx5IGluIHRoZSBsYXR0ZXIgY2FzZSBpcyB0aGVyZSBhIGZpbGUgdG8gZGVsZXRlLgotCQkJaWYgKGRlbGV0ZURvY3VtZW50ICYmIHRheG9ub215LmdldExvY2F0aW9uKCkgIT0gbnVsbCkKLQkJCXsKLQkJCQkvL1RPRE86IEltcGxlbWVudCBtZS4KLQkJCX0KLQkJfQotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIFJlZ2lzdHJ5IGZyb20gdGhlIGluZGV4IHdob3NlIElEIG9yIFJlZmVyZW5jZQotCSAqIG1hdGNoZXMgdGhlIGdpdmVuIFVSSS4gQXMgc3VjaCwgdGhpcyBtZXRob2QgbWF5IHJldHVybiBhCi0JICogZnVsbCBtb2RlbCBvciBhIHJlZmVyZW5jZSB0byBhIGZ1bGwgbW9kZWwuCi0JICogQHBhcmFtIHVyaSBUaGUgVVJJIGlkZW50aWZpZXIgb2YgdGhlIFJlZ2lzdHJ5Ci0JICogQHJldHVybiBUaGUgPGNvZGU+UmVnaXN0cnk8L2NvZGU+IG9iamVjdCB3aG9zZSBJRCBvciByZWZlcmVuY2UKLQkgKiBtYXRjaGVzIHRoZSBnaXZlbiA8Y29kZT51cmk8L2NvZGU+LCBvciBudWxsIGlmIG5vbmUgbWF0Y2guCi0JICovCi0gICAgcHJpdmF0ZSBSZWdpc3RyeSBnZXRSZWdpc3RyeSAoIFN0cmluZyB1cmkgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICAgIHsKLQkJRUxpc3QgbGlzdCA9IGdldEluZGV4KCkuZ2V0UmVnaXN0cnkoKTsJCi0JCUl0ZXJhdG9yIGl0ID0gbGlzdC5pdGVyYXRvcigpOwotCQl3aGlsZSAoaXQuaGFzTmV4dCgpKXsKLQkJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gKFJlZ2lzdHJ5KWl0Lm5leHQoKTsKLQkJCWlmICh1cmkuZXF1YWxzKHJlZ2lzdHJ5LmdldElkKCkpIHx8IHVyaS5lcXVhbHMocmVnaXN0cnkuZ2V0UmVmKCkpKXsKLQkJCQlyZXR1cm4gcmVnaXN0cnk7ICAKLQkJCX0KLQkJfQkKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIFRheG9ub215IGZyb20gdGhlIGluZGV4IHdob3NlIElEIG9yIFJlZmVyZW5jZQotCSAqIG1hdGNoZXMgdGhlIGdpdmVuIFVSSS4gQXMgc3VjaCwgdGhpcyBtZXRob2QgbWF5IHJldHVybiBhCi0JICogZnVsbCBtb2RlbCBvciBhIHJlZmVyZW5jZSB0byBhIGZ1bGwgbW9kZWwuCi0JICogQHBhcmFtIHVyaSBUaGUgVVJJIGlkZW50aWZpZXIgb2YgdGhlIFRheG9ub215Ci0JICogQHJldHVybiBUaGUgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG9iamVjdCB3aG9zZSBJRCBvciByZWZlcmVuY2UKLQkgKiBtYXRjaGVzIHRoZSBnaXZlbiA8Y29kZT51cmk8L2NvZGU+LCBvciBudWxsIGlmIG5vbmUgbWF0Y2guCi0JICovCi0gICAgcHJpdmF0ZSBUYXhvbm9teSBnZXRUYXhvbm9teSAoIFN0cmluZyB1cmkgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICAgIHsKLQkJRUxpc3QgbGlzdCA9IGdldEluZGV4KCkuZ2V0VGF4b25vbXkoKTsJCi0JCUl0ZXJhdG9yIGl0ID0gbGlzdC5pdGVyYXRvcigpOwotCQl3aGlsZSAoaXQuaGFzTmV4dCgpKXsKLQkJCVRheG9ub215IHRheG9ub215ID0gKFRheG9ub215KWl0Lm5leHQoKTsKLQkJCWlmICh1cmkuZXF1YWxzKHRheG9ub215LmdldElkKCkpIHx8IHVyaS5lcXVhbHModGF4b25vbXkuZ2V0UmVmKCkpKXsKLQkJCQlyZXR1cm4gdGF4b25vbXk7Ci0JCQl9Ci0JCX0JCi0gICAgICAgIHJldHVybiBudWxsOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcmVnaXN0cnkvUmVnaXN0cnlTZXJ2aWNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3JlZ2lzdHJ5L1JlZ2lzdHJ5U2VydmljZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZThjODE4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcmVnaXN0cnkvUmVnaXN0cnlTZXJ2aWNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeTsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLm5ldC5VUkxDb25uZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5UGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJ0aW5kZXguUlRJbmRleFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215UGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotCi0vKioKLSAqIFJlZ2lzdHJ5U2VydmljZSBpcyB0aGUgc3RhcnRpbmcgY2xhc3Mgb2YgdGhlIFdlYiBzZXJ2aWNlIHJlZ2lzdHJ5Ci0gKiBwcm9ncmFtbWluZyBtb2RlbC4gQ2FsbCB0aGUgPGNvZGU+UmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk8L2NvZGU+Ci0gKiBzdGF0aWMgbWV0aG9kIHRvIGdldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCi0gKiA8cD4KLSAqIFJlZ2lzdHJ5U2VydmljZSBwcm92aWRlcyBmYWN0b3J5IG1ldGhvZHMgZm9yIGdldHRpbmcgbmV3Ci0gKiBpbnN0YW5jZXMgb2YgPGNvZGU+SVJlZ2lzdHJ5TWFuYWdlcjwvY29kZT4gb2JqZWN0cyB3aGljaCwKLSAqIGluIHR1cm4sIHByb3ZpZGUgdGhlIG1lYW5zIGZvciByZWdpc3RlcmluZyBhbmQgdW5yZWdpc3RlcmluZwotICogZ3JvdXBzIG9mIDxjb2RlPlJlZ2lzdHJ5PC9jb2RlPiBhbmQgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVscwotICogYXQgVVJMIGFkZHJlc3NhYmxlIGxvY2F0aW9ucyBpbiB0aGUgZmlsZXN5c3RlbSBvciBlbHNld2hlcmUuCi0gKiA8cD4KLSAqIFJlZ2lzdHJ5U2VydmljZSBwcm92aWRlcyB1dGlsaXR5IG1ldGhvZHMgdG8gZWFzZSB0aGUgY3JlYXRpb24sCi0gKiBsb2FkaW5nIGFuZCBzYXZpbmcgcmF3IGluc3RhbmNlcyBvZiB0aGUgPGNvZGU+UmVnaXN0cnk8L2NvZGU+Ci0gKiBhbmQgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVscywgYW5kIHRvIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mCi0gKiBjb21wb3NpbmcgYW5kIGZpbmRpbmcgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVscyBpbgotICogPGNvZGU+UmVnaXN0cnk8L2NvZGU+IG1vZGVscy4KLSAqIDxwPgotICogQSB0eXBpY2FsIHVzZSBvZiA8Y29kZT5SZWdpc3RyeVNlcnZpY2U8L2NvZGU+IGFuZCBpdHMgcmVsYXRlZAotICogY2xhc3NlcyB0byBjcmVhdGUgYW5kIHNhdmUgYSBuZXcgZmFtaWx5IG9mIG1vZGVscyBpczoKLSAqIDxibG9ja3F1b3RlPgotICogPGNvZGU+Ci0gKiBSZWdpc3RyeVNlcnZpY2UgcmVnaXN0cnlTZXJ2aWNlID0gUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk7Ci0gKiBNeVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gTXlSZWdpc3RyeUZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZU15UmVnaXN0cnkoKTsKLSAqIC8vIGJ1aWxkIHVwIHlvdXIgcmVnaXN0cnkgbW9kZWwgaGVyZQotICogVGF4b25vbXkgdGF4b25vbXkgPSByZWdpc3RyeVNlcnZpY2UubmV3VGF4b25vbXkoKTsKLSAqIC8vIGJ1aWxkIHVwIHlvdXIgdGF4b25vbXkgbW9kZWwgaGVyZQotICogcmVnaXN0cnlTZXJ2aWNlLmFkZFRheG9ub215KHJlZ2lzdHJ5LHRheG9ub215KTsKLSAqIElSZWdpc3RyeU1hbmFnZXIgcmVnaXN0cnlNYW5hZ2VyID0gcmVnaXN0cnlTZXJ2aWNlLmdldERlZmF1bHRSZWdpc3RyeU1hbmFnZXIoKTsKLSAqIHJlZ2lzdHJ5TWFuYWdlci5zYXZlUmVnaXN0cnkocmVnaXN0cnkpOwotICogPC9jb2RlPgotICogPC9ibG9ja3F1b3RlPgotICogQHNlZSAjaW5zdGFuY2UoKQotICogQHNlZSBJUmVnaXN0cnlNYW5hZ2VyCi0gKiBAc2VlIFJlZ2lzdHJ5Ci0gKiBAc2VlIFRheG9ub215Ci0gKiBAYXV0aG9yIGNicmVhbGV5Ci0gKi8KLXB1YmxpYyBjbGFzcyBSZWdpc3RyeVNlcnZpY2UKLXsKLQlwcml2YXRlIHN0YXRpYyBSZWdpc3RyeVNlcnZpY2UgaW5zdGFuY2VfOwotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0lOREVYX1hNTF9GSUxFID0gIkRlZmF1bHRJbmRleC54bWwiOwotCXByaXZhdGUgSGFzaHRhYmxlIHJlZ2lzdHJ5TWFuYWdlcnNfID0gbmV3IEhhc2h0YWJsZSgpOwotCXByaXZhdGUgSVJlZ2lzdHJ5TWFuYWdlciBkZWZhdWx0UmVnaXN0cnlNYW5hZ2VyXyA9IG51bGw7Ci0JcHJpdmF0ZSBHZW5lcmljUmVzb3VyY2VGYWN0b3J5IHJlc291cmNlRmFjdG9yeV8gPSBuZXcgR2VuZXJpY1Jlc291cmNlRmFjdG9yeSgpOwotCi0JLyoqCi0JICogQSBSZWdpc3RyeVNlcnZpY2UgY2Fubm90IGJlIGRpcmVjdGx5IGNvbnN0cnVjdGVkLgotCSAqIFVzZSBAbGluayAjaW5zdGFuY2UoKSB0byBnZXQgdGhlIHNpbmdsZXRvbiBvZiB0aGlzIGNsYXNzLgotCSAqLwotCXByaXZhdGUgUmVnaXN0cnlTZXJ2aWNlICgpCi0JewotCQlSZXNvdXJjZS5GYWN0b3J5LlJlZ2lzdHJ5LklOU1RBTkNFLmdldEV4dGVuc2lvblRvRmFjdG9yeU1hcCgpLnB1dCgieG1sIixyZXNvdXJjZUZhY3RvcnlfKTsKLQkJUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXRDbGFzcygpOwotCQlUYXhvbm9teVBhY2thZ2UuZUlOU1RBTkNFLmdldENsYXNzKCk7Ci0JCVJUSW5kZXhQYWNrYWdlLmVJTlNUQU5DRS5nZXRDbGFzcygpOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBvZiB0aGlzIGNsYXNzLgotCSAqIEByZXR1cm4gVGhlIHNpbmdsZXRvbiBvZiB0aGlzIGNsYXNzLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgUmVnaXN0cnlTZXJ2aWNlIGluc3RhbmNlICgpCi0JewotCQlpZiAoaW5zdGFuY2VfID09IG51bGwpCi0JCXsKLQkJCWluc3RhbmNlXyA9IG5ldyBSZWdpc3RyeVNlcnZpY2UoKTsKLQkJfQotCQlyZXR1cm4gaW5zdGFuY2VfOwotCX0KLQkKLQkvKioKLQkgKiBDcmVhdGVzIGEgZGVmYXVsdCA8Y29kZT5JUmVnaXN0cnlNYW5hZ2VyPC9jb2RlPiBmb3IgdGhlIHN5c3RlbS4KLQkgKiBAcmV0dXJuIFRoZSBkZWZhdWx0IDxjb2RlPklSZWdpc3RyeU1hbmFnZXI8L2NvZGU+IGZvciB0aGUgc3lzdGVtLgotCSAqIEBzZWUgSVJlZ2lzdHJ5TWFuYWdlcgotCSAqLwotCXB1YmxpYyBJUmVnaXN0cnlNYW5hZ2VyIGdldERlZmF1bHRSZWdpc3RyeU1hbmFnZXIgKCkKLQl7Ci0JCWlmIChkZWZhdWx0UmVnaXN0cnlNYW5hZ2VyXyA9PSBudWxsKQotCQl7Ci0JCQlTdHJpbmcgaW5kZXhGaWxlbmFtZSA9IFdTUGx1Z2luLmdldERlZmF1bHQoKS5nZXRTdGF0ZUxvY2F0aW9uKCkuYXBwZW5kKERFRkFVTFRfSU5ERVhfWE1MX0ZJTEUpLnRvU3RyaW5nKCk7Ci0JCQlkZWZhdWx0UmVnaXN0cnlNYW5hZ2VyXyA9IG5ldyBSZWdpc3RyeU1hbmFnZXIoaW5kZXhGaWxlbmFtZSk7Ci0JCX0KLQkJcmV0dXJuIGRlZmF1bHRSZWdpc3RyeU1hbmFnZXJfOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgb3IgZXhpc3RpbmcgPGNvZGU+SVJlZ2lzdHJ5TWFuYWdlcjwvY29kZT4gZm9yIHRoZSBnaXZlbiBVUkwuCi0JICogQHBhcmFtIHVybCBBIFVSTCB0byB0aGUgWE1MIGRvY3VtZW50IHRoYXQgcGVyc2lzdHMKLQkgKiB0aGUgc2V0IG9mIHJlZ2lzdHJpZXMgbWFuYWdlZCBieSB0aGlzIDxjb2RlPklSZWdpc3RyeU1hbmFnZXI8L2NvZGU+LgotCSAqIEByZXR1cm4gVGhlIG5ldyBvciBleGlzdGluZyA8Y29kZT5SZWdpc3RyeU1hbmFnZXI8L2NvZGU+IGZvciB0aGUgZ2l2ZW4gVVJMLgotCSAqIEBzZWUgSVJlZ2lzdHJ5TWFuYWdlcgotCSAqLwotCXB1YmxpYyBJUmVnaXN0cnlNYW5hZ2VyIGdldFJlZ2lzdHJ5TWFuYWdlciAoIFVSTCB1cmwgKQotCXsKLQkJSVJlZ2lzdHJ5TWFuYWdlciByZWdpc3RyeU1hbmFnZXIgPSAoSVJlZ2lzdHJ5TWFuYWdlcilyZWdpc3RyeU1hbmFnZXJzXy5nZXQodXJsKTsKLQkJaWYgKHJlZ2lzdHJ5TWFuYWdlciA9PSBudWxsKQotCQl7Ci0JCQlyZWdpc3RyeU1hbmFnZXIgPSBuZXcgUmVnaXN0cnlNYW5hZ2VyKHVybCk7Ci0JCQlyZWdpc3RyeU1hbmFnZXJzXy5wdXQodXJsLHJlZ2lzdHJ5TWFuYWdlcik7Ci0JCX0KLQkJcmV0dXJuIHJlZ2lzdHJ5TWFuYWdlcjsKLQl9Ci0JCi0JLyoqCi0JICogUmVtb3ZlcyB0aGUgPGNvZGU+SVJlZ2lzdHJ5TWFuYWdlcjwvY29kZT4gZm9yIHRoZSBnaXZlbiBVUkwuCi0JICogTm8gcGh5c2ljYWwgcmVzb3VyY2VzIGFyZSBkZWxldGVkLgotCSAqIEBwYXJhbSB1cmwgQSBVUkwgdG8gdGhlIFhNTCBkb2N1bWVudCB0aGF0IHBlcnNpc3RzCi0JICogdGhlIHNldCBvZiByZWdpc3RyaWVzIG1hbmFnZWQgYnkgdGhpcyA8Y29kZT5JUmVnaXN0cnlNYW5hZ2VyPC9jb2RlPi4KLQkgKiBAc2VlIElSZWdpc3RyeU1hbmFnZXIKLQkgKi8KLQlwdWJsaWMgdm9pZCByZW1vdmVSZWdpc3RyeU1hbmFnZXIgKCBVUkwgdXJsICkKLQl7Ci0JCXJlZ2lzdHJ5TWFuYWdlcnNfLnJlbW92ZSh1cmwpOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgPGNvZGU+UmVnaXN0cnk8L2NvZGU+IG1vZGVsLgotCSAqIEFzIGEgZ2VuZXJhbCBydWxlLCB0aGlzIG1ldGhvZCBoYXMgbGl0dGxlIGFjdHVhbCB2YWx1ZSBhcwotCSAqIG1vc3QgY29uY3JldGUgcmVnaXN0cnkgbW9kZWxzIHdpbGwgYmUgb2YgdHlwZXMgdGhhdCBleHRlbmQKLQkgKiB0aGUgYmFzZSBSZWdpc3RyeSBtb2RlbCwgc3VjaCBhcyA8Y29kZT5VRERJUmVnaXN0cnk8L2NvZGU+LgotCSAqIEZvciBleGFtcGxlLCA8Y29kZT5VRERJUmVnaXN0cnlTZXJ2aWNlLm5ld1VERElSZWdpc3RyeSgpPC9jb2RlPgotCSAqIHJldHVybnMgYSBuZXcgPGNvZGU+VURESVJlZ2lzdHJ5PC9jb2RlPi4gUHJvdmlkZXJzIG9mIG90aGVyCi0JICogY29uY3JldGUgdHlwZXMgb2YgcmVnaXN0cmllcyBtYXkgcHJvdmlkZSBzaW1pbGFyIGZhY2lsaXRpZXMuCi0JICogQHJldHVybiBBIG5ldyA8Y29kZT5SZWdpc3RyeTwvY29kZT4gbW9kZWwuIE5ldmVyIHJldHVybnMgbnVsbC4KLQkgKiBAc2VlIFJlZ2lzdHJ5Ci0JICogQHNlZSBVRERJUmVnaXN0cnlTZXJ2aWNlI25ld1VERElSZWdpc3RyeSgpCi0JICovCi0JcHVibGljIFJlZ2lzdHJ5IG5ld1JlZ2lzdHJ5ICgpCi0JewotCQlyZXR1cm4gUmVnaXN0cnlGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVSZWdpc3RyeSgpOwotCX0KLQkKLQkvKioKLQkgKiBMb2FkcyB0aGUgPGNvZGU+UmVnaXN0cnk8L2NvZGU+IG1vZGVsIGZyb20gYW4gWE1MIGRvY3VtZW50LgotCSAqIElmIGxvYWRpbmcgdGhlIG1vZGVsIG9mIGEgcmVnaXN0cnkgdGhhdCBleHRlbmRzIHRoZSBiYXNlCi0JICogUmVnaXN0cnkgaW50ZXJmYWNlIGFuZCBTY2hlbWEsIHlvdSBtdXN0IGluaXRpYWxpemUgdGhlIEVNRgotCSAqIGVDb3JlIHBhY2thZ2UgKGVnLiA8Y29kZT5NeVJlZ2lzdHJ5UGFja2FnZS5lSU5TVEFOQ0U8L2NvZGU+Ci0JICogZm9yIHlvdXIgbW9kZWwgYmVmb3JlIGNhbGxpbmcgdGhpcyBsb2FkIG1ldGhvZC4KLQkgKiBGb3IgVURESSBSZWdpc3RyeSBtb2RlbHMsIHRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IGJ5Ci0JICogY2FsbGluZyA8Y29kZT5VRERJUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk8L2NvZGU+LgotCSAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byB0aGUgWE1MIGRvY3VtZW50IHRvIGxvYWQuCi0JICogQHJldHVybiBUaGUgPGNvZGU+UmVnaXN0cnk8L2NvZGU+IG1vZGVsLgotCSAqIEB0aHJvd3MgPGNvZGU+Q29yZUV4Y2VwdGlvbjwvY29kZT4gSWYgdGhlIG1vZGVsIGNhbm5vdCBiZSBsb2FkZWQuCi0JICogQHNlZSBSZWdpc3RyeQotCSAqIEBzZWUgVURESVJlZ2lzdHJ5U2VydmljZSNpbnN0YW5jZSgpCi0JICovCi0JcHVibGljIFJlZ2lzdHJ5IGxvYWRSZWdpc3RyeSAoIFVSTCB1cmwgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJUmVzb3VyY2UgcmVzb3VyY2UgPSByZXNvdXJjZUZhY3RvcnlfLmNyZWF0ZVJlc291cmNlKFVSSS5jcmVhdGVVUkkoIioueG1sIikpOwotCQl0cnkKLQkJewotCQkJcmVzb3VyY2UubG9hZChnZXRJbnB1dFN0cmVhbUZvcih1cmwpLG51bGwpOwotCQl9Ci0JCWNhdGNoIChJT0V4Y2VwdGlvbiBlKQotCQl7Ci0JCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsV1NQbHVnaW4uSUQsMCwiIixlKSk7Ci0JCX0KLQkJb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5Eb2N1bWVudFJvb3QgZG9jdW1lbnQgPSAob3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5Eb2N1bWVudFJvb3QpcmVzb3VyY2UuZ2V0Q29udGVudHMoKS5nZXQoMCk7Ci0JCXJldHVybiBkb2N1bWVudC5nZXRSZWdpc3RyeSgpOwotCX0KLQotCS8qKgotCSAqIFNhdmVzIHRoZSA8Y29kZT5SZWdpc3RyeTwvY29kZT4gbW9kZWwgdG8gYW4gWE1MIGRvY3VtZW50LgotCSAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byB0aGUgWE1MIGRvY3VtZW50IHRvIHNhdmUuCi0JICogQHBhcmFtIHJlZ2lzdHJ5IFRoZSA8Y29kZT5SZWdpc3RyeTwvY29kZT4gbW9kZWwgdG8gc2F2ZS4KLQkgKiBAdGhyb3dzIDxjb2RlPkNvcmVFeGNlcHRpb248L2NvZGU+IElmIHRoZSBtb2RlbCBjYW5ub3QgYmUgc2F2ZWQuCi0JICogQHNlZSBSZWdpc3RyeQotCSAqLwotCXB1YmxpYyB2b2lkIHNhdmVSZWdpc3RyeSAoIFVSTCB1cmwsIFJlZ2lzdHJ5IHJlZ2lzdHJ5ICkgdGhyb3dzIENvcmVFeGNlcHRpb24KLQl7Ci0JCW9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuRG9jdW1lbnRSb290IGRvY3VtZW50ID0gUmVnaXN0cnlGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVEb2N1bWVudFJvb3QoKTsKLQkJZG9jdW1lbnQuc2V0UmVnaXN0cnkocmVnaXN0cnkpOwotCQlSZXNvdXJjZSByZXNvdXJjZSA9IHJlc291cmNlRmFjdG9yeV8uY3JlYXRlUmVzb3VyY2UoVVJJLmNyZWF0ZVVSSSgiKi54bWwiKSk7Ci0JCXJlc291cmNlLmdldENvbnRlbnRzKCkuYWRkKGRvY3VtZW50KTsKLQkJdHJ5Ci0JCXsKLQkJCXJlc291cmNlLnNhdmUoZ2V0T3V0cHV0U3RyZWFtRm9yKHVybCksbnVsbCk7Ci0JCX0KLQkJY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0JCXsKLQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUixXU1BsdWdpbi5JRCwwLCIiLGUpKTsKLQkJfQotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVsLgotCSAqIEByZXR1cm4gQSBuZXcgPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVsLiBOZXZlciByZXR1cm5zIG51bGwuCi0JICogQHNlZSBUYXhvbm9teQotCSAqLwotCXB1YmxpYyBUYXhvbm9teSBuZXdUYXhvbm9teSAoKQotCXsKLQkJcmV0dXJuIFRheG9ub215RmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlVGF4b25vbXkoKTsKLQl9Ci0JCi0JLyoqCi0JICogTG9hZHMgdGhlIDxjb2RlPlRheG9ub215PC9jb2RlPiBtb2RlbCBmcm9tIGFuIFhNTCBkb2N1bWVudC4KLQkgKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gdGhlIFhNTCBkb2N1bWVudCB0byBsb2FkLgotCSAqIEByZXR1cm4gdGhlIDxjb2RlPlRheG9ub215PC9jb2RlPiBtb2RlbC4KLQkgKiBAdGhyb3dzIDxjb2RlPkNvcmVFeGNlcHRpb248L2NvZGU+IElmIHRoZSBtb2RlbCBjYW5ub3QgYmUgbG9hZGVkLgotCSAqIEBzZWUgVGF4b25vbXkKLQkgKi8KLQlwdWJsaWMgVGF4b25vbXkgbG9hZFRheG9ub215ICggVVJMIHVybCApIHRocm93cyBDb3JlRXhjZXB0aW9uCi0JewotCQlSZXNvdXJjZSByZXNvdXJjZSA9IHJlc291cmNlRmFjdG9yeV8uY3JlYXRlUmVzb3VyY2UoVVJJLmNyZWF0ZVVSSSgiKi54bWwiKSk7Ci0JCXRyeQotCQl7Ci0JCQlyZXNvdXJjZS5sb2FkKGdldElucHV0U3RyZWFtRm9yKHVybCksbnVsbCk7Ci0JCX0KLQkJY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0JCXsKLQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUixXU1BsdWdpbi5JRCwwLCIiLGUpKTsKLQkJfQotCQlvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdCBkb2N1bWVudCA9IChvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkRvY3VtZW50Um9vdClyZXNvdXJjZS5nZXRDb250ZW50cygpLmdldCgwKTsKLQkJcmV0dXJuIGRvY3VtZW50LmdldFRheG9ub215KCk7Ci0JfQotCi0JLyoqCi0JICogU2F2ZXMgdGhlIDxjb2RlPlRheG9ub215PC9jb2RlPiBtb2RlbCB0byBhbiBYTUwgZG9jdW1lbnQuCi0JICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIHRoZSBYTUwgZG9jdW1lbnQgdG8gc2F2ZS4KLQkgKiBAcGFyYW0gdGF4b25vbXkgVGhlIDxjb2RlPlRheG9ub215PC9jb2RlPiBtb2RlbCB0byBzYXZlLgotCSAqIEB0aHJvd3MgPGNvZGU+Q29yZUV4Y2VwdGlvbjwvY29kZT4gSWYgdGhlIG1vZGVsIGNhbm5vdCBiZSBzYXZlZC4KLQkgKiBAc2VlIFRheG9ub215Ci0JICovCi0JcHVibGljIHZvaWQgc2F2ZVRheG9ub215ICggVVJMIHVybCwgVGF4b25vbXkgdGF4b25vbXkgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5Eb2N1bWVudFJvb3QgZG9jdW1lbnQgPSBUYXhvbm9teUZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZURvY3VtZW50Um9vdCgpOwotCQlkb2N1bWVudC5zZXRUYXhvbm9teSh0YXhvbm9teSk7Ci0JCVJlc291cmNlIHJlc291cmNlID0gcmVzb3VyY2VGYWN0b3J5Xy5jcmVhdGVSZXNvdXJjZShVUkkuY3JlYXRlVVJJKCIqLnhtbCIpKTsKLQkJcmVzb3VyY2UuZ2V0Q29udGVudHMoKS5hZGQoZG9jdW1lbnQpOwotCQl0cnkKLQkJewotCQkJcmVzb3VyY2Uuc2F2ZShnZXRPdXRwdXRTdHJlYW1Gb3IodXJsKSxudWxsKTsKLQkJfQotCQljYXRjaCAoSU9FeGNlcHRpb24gZSkKLQkJewotCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24obmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLFdTUGx1Z2luLklELDAsIiIsZSkpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogQ29uc3RydWN0cyBhbmQgcmV0dXJucyBhIG5ldyBSZWdpc3RyeSBtb2RlbCBjb25maWd1cmVkCi0JICogdG8gcmVmZXJlbmNlIHRoZSBnaXZlbiA8Y29kZT5yZWdpc3RyeTwvY29kZT4uCi0JICogPHA+Ci0JICogVGhlIGdpdmVuIDxjb2RlPnJlZ2lzdHJ5PC9jb2RlPiBjYW4gYmUgZWl0aGVyIGEgZnVsbAotCSAqIG1vZGVsIGFzIHNpZ25pZmllZCBieSBoYXZpbmcgYSBub24tbnVsbCwgbm9uLWVtcHR5Ci0JICogaWRlbnRpZmllciAoPGNvZGU+cmVnaXN0cnkuZ2V0SWQoKTwvY29kZT4pLCBvciBhCi0JICogcmVmZXJlbmNlIGl0c2VsZiBhcyBzaWduaWZpZWQgYnkgaGF2aW5nIGEgbm9uLW51bGwsCi0JICogbm9uLWVtcHR5IHJlZmVyZW5jZSAoPGNvZGU+cmVnaXN0cnkuZ2V0UmVmKCk8L2NvZGU+KS4KLQkgKiA8cD4KLQkgKiBJZiB0aGUgZ2l2ZW4gPGNvZGU+cmVnaXN0cnk8L2NvZGU+IGlzIGEgZnVsbCBtb2RlbCwKLQkgKiB0aGVuIGEgbmV3IDxjb2RlPlJlZ2lzdHJ5PC9jb2RlPiBpcyByZXR1cm5lZCBzdWNoIHRoYXQKLQkgKiA8dWw+Ci0JICogPGxpPjxjb2RlPmdldFJlZigpPC9jb2RlPiBlcXVhbHMgPGNvZGU+cmVnaXN0cnkuZ2V0SWQoKTwvY29kZT48L2xpPgotCSAqIDxsaT48Y29kZT5nZXRMb2NhdGlvbigpPC9jb2RlPiBpcyBudWxsPC9saT4KLQkgKiA8bGk+PGNvZGU+Z2V0SWQoKTwvY29kZT4gaXMgbnVsbDwvbGk+Ci0JICogPC91bD4KLQkgKiA8cD4KLQkgKiBJbiB0aGUgZ2l2ZW4gPGNvZGU+cmVnaXN0cnk8L2NvZGU+IGlzIGl0c2VsZiBhIHJlZmVyZW5jZSwKLQkgKiB0aGVuIGEgbmV3IDxjb2RlPlJlZ2lzdHJ5PC9jb2RlPiBpcyByZXR1cm5lZCBzdWNoIHRoYXQKLQkgKiA8dWw+Ci0JICogPGxpPjxjb2RlPmdldFJlZigpPC9jb2RlPiBlcXVhbHMgPGNvZGU+cmVnaXN0cnkuZ2V0UmVmKCk8L2NvZGU+PC9saT4KLQkgKiA8bGk+PGNvZGU+Z2V0TG9jYXRpb24oKTwvY29kZT4gZXF1YWxzIDxjb2RlPnJlZ2lzdHJ5LmdldExvY2F0aW9uKCk8L2NvZGU+PC9saT4KLQkgKiA8bGk+PGNvZGU+Z2V0SWQoKTwvY29kZT4gaXMgbnVsbDwvbGk+Ci0JICogPC91bD4KLQkgKiAKLQkgKiBAcGFyYW0gcmVnaXN0cnkgVGhlIDxjb2RlPlJlZ2lzdHJ5PC9jb2RlPiBtb2RlbCB0byBjbG9uZSBvcgotCSAqIHJlZmVyIHRvIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBnaXZlbiA8Y29kZT5yZWdpc3RyeTwvY29kZT4KLQkgKiBpcyBhIGZ1bGwgbW9kZWwgb3IgYSByZWZlcmVuY2UuCi0JICogQHJldHVybiBBIG5ldyA8Y29kZT5SZWdpc3RyeTwvY29kZT4sIGd1YXJhbnRlZWQgdG8gYmUgYSByZWZlcmVuY2UuCi0JICovCi0JcHVibGljIFJlZ2lzdHJ5IG5ld1JlZ2lzdHJ5UmVmZXJlbmNlICggUmVnaXN0cnkgcmVnaXN0cnkgKQotCXsKLQkJU3RyaW5nIGlkID0gcmVnaXN0cnkuZ2V0SWQoKTsKLQkJU3RyaW5nIHJlZiA9IHJlZ2lzdHJ5LmdldFJlZigpOwotCQlSZWdpc3RyeSByZWdpc3RyeVJlZiA9IG5ld1JlZ2lzdHJ5KCk7Ci0JCWlmIChyZWYgPT0gbnVsbCB8fCAiIi5lcXVhbHMocmVmKSkKLQkJewotCQkJcmVnaXN0cnlSZWYuc2V0UmVmKGlkKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXJlZ2lzdHJ5UmVmLnNldFJlZihyZWYpOwotCQkJcmVnaXN0cnlSZWYuc2V0TG9jYXRpb24ocmVnaXN0cnkuZ2V0TG9jYXRpb24oKSk7Ci0JCX0KLQkJcmV0dXJuIHJlZ2lzdHJ5UmVmOwotCX0KLQotCS8qKgotCSAqIENvbnN0cnVjdHMgYW5kIHJldHVybnMgYSBuZXcgVGF4b25vbXkgbW9kZWwgY29uZmlndXJlZAotCSAqIHRvIHJlZmVyZW5jZSB0aGUgZ2l2ZW4gPGNvZGU+dGF4b25vbXk8L2NvZGU+LgotCSAqIDxwPgotCSAqIFRoZSBnaXZlbiA8Y29kZT50YXhvbm9teTwvY29kZT4gY2FuIGJlIGVpdGhlciBhIGZ1bGwKLQkgKiBtb2RlbCBhcyBzaWduaWZpZWQgYnkgaGF2aW5nIGEgbm9uLW51bGwsIG5vbi1lbXB0eQotCSAqIGlkZW50aWZpZXIgKDxjb2RlPnRheG9ub215LmdldElkKCk8L2NvZGU+KSwgb3IgYQotCSAqIHJlZmVyZW5jZSBpdHNlbGYgYXMgc2lnbmlmaWVkIGJ5IGhhdmluZyBhIG5vbi1udWxsLAotCSAqIG5vbi1lbXB0eSByZWZlcmVuY2UgKDxjb2RlPnRheG9ub215LmdldFJlZigpPC9jb2RlPikuCi0JICogPHA+Ci0JICogSWYgdGhlIGdpdmVuIDxjb2RlPnRheG9ub215PC9jb2RlPiBpcyBhIGZ1bGwgbW9kZWwsCi0JICogdGhlbiBhIG5ldyA8Y29kZT5UYXhvbm9teTwvY29kZT4gaXMgcmV0dXJuZWQgc3VjaCB0aGF0Ci0JICogPHVsPgotCSAqIDxsaT48Y29kZT5nZXRSZWYoKTwvY29kZT4gZXF1YWxzIDxjb2RlPnRheG9ub215LmdldElkKCk8L2NvZGU+PC9saT4KLQkgKiA8bGk+PGNvZGU+Z2V0TG9jYXRpb24oKTwvY29kZT4gaXMgbnVsbDwvbGk+Ci0JICogPGxpPjxjb2RlPmdldElkKCk8L2NvZGU+IGlzIG51bGw8L2xpPgotCSAqIDwvdWw+Ci0JICogPHA+Ci0JICogSW4gdGhlIGdpdmVuIDxjb2RlPnRheG9ub215PC9jb2RlPiBpcyBpdHNlbGYgYSByZWZlcmVuY2UsCi0JICogdGhlbiBhIG5ldyA8Y29kZT5UYXhvbm9teTwvY29kZT4gaXMgcmV0dXJuZWQgc3VjaCB0aGF0Ci0JICogPHVsPgotCSAqIDxsaT48Y29kZT5nZXRSZWYoKTwvY29kZT4gZXF1YWxzIDxjb2RlPnRheG9ub215LmdldFJlZigpPC9jb2RlPjwvbGk+Ci0JICogPGxpPjxjb2RlPmdldExvY2F0aW9uKCk8L2NvZGU+IGVxdWFscyA8Y29kZT50YXhvbm9teS5nZXRMb2NhdGlvbigpPC9jb2RlPjwvbGk+Ci0JICogPGxpPjxjb2RlPmdldElkKCk8L2NvZGU+IGlzIG51bGw8L2xpPgotCSAqIDwvdWw+Ci0JICogCi0JICogQHBhcmFtIHRheG9ub215IFRoZSA8Y29kZT5UYXhvbm9teTwvY29kZT4gbW9kZWwgdG8gY2xvbmUgb3IKLQkgKiByZWZlciB0byBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgZ2l2ZW4gPGNvZGU+dGF4b25vbXk8L2NvZGU+Ci0JICogaXMgYSBmdWxsIG1vZGVsIG9yIGEgcmVmZXJlbmNlLgotCSAqIEByZXR1cm4gQSBuZXcgPGNvZGU+VGF4b25vbXk8L2NvZGU+LCBndWFyYW50ZWVkIHRvIGJlIGEgcmVmZXJlbmNlLgotCSAqLwotCXB1YmxpYyBUYXhvbm9teSBuZXdUYXhvbm9teVJlZmVyZW5jZSAoIFRheG9ub215IHRheG9ub215ICkKLQl7Ci0JCVN0cmluZyBpZCA9IHRheG9ub215LmdldElkKCk7Ci0JCVN0cmluZyByZWYgPSB0YXhvbm9teS5nZXRSZWYoKTsKLQkJVGF4b25vbXkgdGF4b25vbXlSZWYgPSBuZXdUYXhvbm9teSgpOwotCQlpZiAocmVmID09IG51bGwgfHwgIiIuZXF1YWxzKHJlZikpCi0JCXsKLQkJCXRheG9ub215UmVmLnNldFJlZihpZCk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQl0YXhvbm9teVJlZi5zZXRSZWYocmVmKTsKLQkJCXRheG9ub215UmVmLnNldExvY2F0aW9uKHRheG9ub215LmdldExvY2F0aW9uKCkpOwotCQl9Ci0JCXJldHVybiB0YXhvbm9teVJlZjsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGdpdmVuIFVSTCBpZGVudGlmaWVzCi0JICogYSByZXNvdXJjZSB0aGF0IGV4aXN0cyBhbmQgaXMgYSBmaWxlLgotCSAqIEBwYXJhbSB1cmwgVGhlIFVSTCBvZiB0aGUgcmVzb3VyY2UgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZS4KLQkgKiBAcmV0dXJuIFRydWUgaWYgdGhlIFVSTCByZXNvdXJjZSBleGlzdHMgYW5kIGlzIGEgZmlsZSwKLQkgKiBvciBmYWxzZSBvdGhlcndpc2UuCi0JICovCi0Jc3RhdGljIGJvb2xlYW4gZXhpc3RzICggVVJMIHVybCApCi0JewotCQlpZiAoInBsYXRmb3JtIi5lcXVhbHModXJsLmdldFByb3RvY29sKCkpKQotCQl7Ci0JCQlTdHJpbmcgdXJsRmlsZSA9IHVybC5nZXRGaWxlKCkudHJpbSgpOwotCQkJSVBhdGggcGF0aCA9IG5ldyBQYXRoKHVybEZpbGUpLnJlbW92ZUZpcnN0U2VnbWVudHMoMSk7Ci0JCQlpZiAocGF0aC5zZWdtZW50Q291bnQoKSA8PSAxKQotCQkJewotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0KLQkJCUlQYXRoIG9zUGF0aCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0RmlsZShwYXRoKS5nZXRMb2NhdGlvbigpOwotCQkJaWYgKG9zUGF0aCA9PSBudWxsKQotCQkJewotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0KLQkJCUZpbGUgZmlsZSA9IG5ldyBGaWxlKG9zUGF0aC50b1N0cmluZygpKTsKLQkJCXJldHVybiAoZmlsZS5leGlzdHMoKSAmJiAhZmlsZS5pc0RpcmVjdG9yeSgpKTsKLQkJfQotCQllbHNlIGlmICgiZmlsZSIuZXF1YWxzKHVybC5nZXRQcm90b2NvbCgpKSkKLQkJewotCQkJRmlsZSBmaWxlID0gbmV3IEZpbGUodXJsLmdldEZpbGUoKS50cmltKCkpOwotCQkJcmV0dXJuIChmaWxlLmV4aXN0cygpICYmICFmaWxlLmlzRGlyZWN0b3J5KCkpOwotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKioKLQkgKiBPcGVucyBhbiA8Y29kZT5PdXRwdXRTdHJlYW08L2NvZGU+IGZvciB3cml0aW5nIHRvCi0JICogdGhlIGdpdmVuIDxjb2RlPnVybDwvY29kZT4uCi0JICogQHBhcmFtIHVybCBUaGUgVVJMIG9mIHRoZSByZXNvdXJjZSB0byB3cml0ZS4KLQkgKiBAcmV0dXJuIEFuIE91cHR1dFN0cmVhbSB0byB3cml0ZSB0by4KLQkgKiBAdGhyb3dzIElPRXhjZXB0aW9uIElmIHRoZSBzdHJlYW0gY291bGQgbm90IGJlIG9wZW5lZC4KLQkgKi8KLQlzdGF0aWMgT3V0cHV0U3RyZWFtIGdldE91dHB1dFN0cmVhbUZvciAoIFVSTCB1cmwgKSB0aHJvd3MgSU9FeGNlcHRpb24KLQl7Ci0JCU91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0gPSBudWxsOwotCQlpZiAoInBsYXRmb3JtIi5lcXVhbHModXJsLmdldFByb3RvY29sKCkpKQotCQl7Ci0JCQlTdHJpbmcgdXJsRmlsZSA9IHVybC5nZXRGaWxlKCkudHJpbSgpOwotCQkJSVBhdGggcGF0aCA9IG5ldyBQYXRoKHVybEZpbGUpLnJlbW92ZUZpcnN0U2VnbWVudHMoMSk7Ci0JCQlpZiAocGF0aC5zZWdtZW50Q291bnQoKSA8PSAxKQotCQkJewotCQkJCXRocm93IG5ldyBJT0V4Y2VwdGlvbigiVGhlIFBsYXRmb3JtIFVSTCB7MH0gaXMgbm90IGJvdW5kIHRvIGEgbG9jYWwsIHdyaXRhYmxlIGZpbGUuIik7Ci0JCQl9Ci0JCQlJUGF0aCBvc1BhdGggPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldEZpbGUocGF0aCkuZ2V0TG9jYXRpb24oKTsKLQkJCWlmIChvc1BhdGggPT0gbnVsbCkKLQkJCXsKLQkJCQl0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlRoZSBQbGF0Zm9ybSBVUkwgezB9IGlzIG5vdCBib3VuZCB0byBhIGxvY2FsLCB3cml0YWJsZSBmaWxlLiIpOwotCQkJfQotCQkJRmlsZSBmaWxlID0gbmV3IEZpbGUob3NQYXRoLnRvU3RyaW5nKCkpOwotCQkJaWYgKGZpbGUuaXNEaXJlY3RvcnkoKSkKLQkJCXsKLQkJCQl0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlRoZSBQbGF0Zm9ybSBVUkwgezB9IGlzIGJvdW5kIHRvIGEgZm9sZGVyLiIpOwotCQkJfQotCQkJb3V0cHV0U3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZSk7Ci0JCX0KLQkJZWxzZSBpZiAoImZpbGUiLmVxdWFscyh1cmwuZ2V0UHJvdG9jb2woKSkpCi0JCXsKLQkJCUZpbGUgZmlsZSA9IG5ldyBGaWxlKHVybC5nZXRGaWxlKCkudHJpbSgpKTsKLQkJCWlmIChmaWxlLmlzRGlyZWN0b3J5KCkpCi0JCQl7Ci0JCQkJdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJUaGUgRmlsZSBVUkwgezB9IGlzIGJvdW5kIHRvIGEgZGlyZWN0b3J5LiIpOwotCQkJfQotCQkJb3V0cHV0U3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlVUkxDb25uZWN0aW9uIGNvbm5lY3Rpb24gPSB1cmwub3BlbkNvbm5lY3Rpb24oKTsKLQkJCWNvbm5lY3Rpb24uc2V0RG9PdXRwdXQodHJ1ZSk7Ci0JCQlvdXRwdXRTdHJlYW0gPSBjb25uZWN0aW9uLmdldE91dHB1dFN0cmVhbSgpOwotCQl9Ci0JCXJldHVybiBvdXRwdXRTdHJlYW07Ci0JfQotCi0JLyoqCi0JICogT3BlbnMgYW4gPGNvZGU+SW5wdXRTdHJlYW08L2NvZGU+IGZvciByZWFkaW5nIGZyb20KLQkgKiB0aGUgZ2l2ZW4gPGNvZGU+dXJsPC9jb2RlPi4KLQkgKiBAcGFyYW0gdXJsIFRoZSBVUkwgb2YgdGhlIHJlc291cmNlIHRvIHJlYWQuCi0JICogQHJldHVybiBBbiBJbnB1dFN0cmVhbSB0byByZWFkIGZyb20uCi0JICogQHRocm93cyBJT0V4Y2VwdGlvbiBJZiB0aGUgc3RyZWFtIGNvdWxkIG5vdCBiZSBvcGVuZWQuCi0JICovCi0Jc3RhdGljIElucHV0U3RyZWFtIGdldElucHV0U3RyZWFtRm9yICggVVJMIHVybCApIHRocm93cyBJT0V4Y2VwdGlvbgotCXsKLQkJcmV0dXJuIHVybC5vcGVuU3RyZWFtKCk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9yZWdpc3RyeS9VRERJUmVnaXN0cnlTZXJ2aWNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3JlZ2lzdHJ5L1VERElSZWdpc3RyeVNlcnZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIzY2ExYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3JlZ2lzdHJ5L1VERElSZWdpc3RyeVNlcnZpY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIzMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5OwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVGF4b25vbWllczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnlQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci0KLS8qKgotICogVURESVJlZ2lzdHJ5U2VydmljZSBpcyBhbiBhZGp1bmN0IHRvIDxjb2RlPlJlZ2lzdHJ5U2VydmljZTwvY29kZT4uCi0gKiBDYWxsIHRoZSA8Y29kZT5SZWdpc3RyeVNlcnZpY2UuaW5zdGFuY2UoKTwvY29kZT4gc3RhdGljIG1ldGhvZCB0bwotICogZ2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KLSAqIDxwPgotICogVURESVJlZ2lzdHJ5U2VydmljZSBwcm92aWRlcyB1dGlsaXR5IG1ldGhvZHMgdG8gZWFzZSB0aGUgY3JlYXRpb24KLSAqIG9mIG5ldyA8Y29kZT5VRERJUmVnaXN0cnk8L2NvZGU+IG1vZGVscyBhbmQgdGhlIG1hbmFnZW1lbnQgb2YgdGhlaXIKLSAqIHJlbGF0aW9uc2hpcHMgdG8gPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVscy4KLSAqIDxwPgotICogVXRpbGl0eSBtZXRob2RzIGZvciBsb2FkaW5nIGFuZCBzYXZpbmcgPGNvZGU+UmVnaXN0cnk8L2NvZGU+IGFuZAotICogPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVscyBhcmUgb24gPGNvZGU+UmVnaXN0cnlTZXJ2aWNlPC9jb2RlPi4KLSAqIE1ldGhvZHMgZm9yIG1hbmFnaW5nIGFuIGluZGV4ZWQgZmFtaWx5IG9mIDxjb2RlPlJlZ2lzdHJ5PC9jb2RlPiBhbmQKLSAqIDxjb2RlPlRheG9ub215PC9jb2RlPiBtb2RlbHMgYXJlIG9uIDxjb2RlPklSZWdpc3RyeU1hbmFnZXI8L2NvZGU+LgotICogPHA+Ci0gKiBBIHR5cGljYWwgdXNlIG9mIDxjb2RlPlVERElSZWdpc3RyeVNlcnZpY2U8L2NvZGU+IGFuZCBpdHMgcmVsYXRlZAotICogY2xhc3NlcyB0byBjcmVhdGUgYW5kIHNhdmUgYSBuZXcgZmFtaWx5IG9mIG1vZGVscyBpczoKLSAqIDxibG9ja3F1b3RlPgotICogPGNvZGU+Ci0gKiBSZWdpc3RyeVNlcnZpY2UgcmVnaXN0cnlTZXJ2aWNlID0gUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk7Ci0gKiBVRERJUmVnaXN0cnlTZXJ2aWNlIHVkZGlSZWdpc3RyeVNlcnZpY2UgPSBVRERJUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk7Ci0gKiBVRERJUmVnaXN0cnkgdWRkaVJlZ2lzdHJ5ID0gdWRkaVJlZ2lzdHJ5U2VydmljZS5uZXdVRERJUmVnaXN0cnkoKTsKLSAqIC8vIGJ1aWxkIHVwIHlvdXIgcmVnaXN0cnkgbW9kZWwgaGVyZQotICogVGF4b25vbXkgdGF4b25vbXkgPSByZWdpc3RyeVNlcnZpY2UubmV3VGF4b25vbXkoKTsKLSAqIC8vIGJ1aWxkIHVwIHlvdXIgdGF4b25vbXkgbW9kZWwgaGVyZQotICogdWRkaVJlZ2lzdHJ5U2VydmljZS5hZGRUYXhvbm9teSh1ZGRpUmVnaXN0cnksdGF4b25vbXkpOwotICogSVJlZ2lzdHJ5TWFuYWdlciByZWdpc3RyeU1hbmFnZXIgPSByZWdpc3RyeVNlcnZpY2UuZ2V0RGVmYXVsdFJlZ2lzdHJ5TWFuYWdlcigpOwotICogcmVnaXN0cnlNYW5hZ2VyLnNhdmVSZWdpc3RyeSh1ZGRpUmVnaXN0cnkpOwotICogPC9jb2RlPgotICogPC9ibG9ja3F1b3RlPgotICogQHNlZSAjaW5zdGFuY2UoKQotICogQHNlZSBSZWdpc3RyeVNlcnZpY2UKLSAqIEBzZWUgSVJlZ2lzdHJ5TWFuYWdlcgotICogQHNlZSBVRERJUmVnaXN0cnkKLSAqIEBzZWUgVGF4b25vbXkKLSAqIEBhdXRob3IgY2JyZWFsZXkKLSAqLwotcHVibGljIGNsYXNzIFVERElSZWdpc3RyeVNlcnZpY2UKLXsKLQlwcml2YXRlIHN0YXRpYyBVRERJUmVnaXN0cnlTZXJ2aWNlIGluc3RhbmNlXzsKLQotCS8qKgotCSAqIEEgVURESVJlZ2lzdHJ5U2VydmljZSBjYW5ub3QgYmUgZGlyZWN0bHkgY29uc3RydWN0ZWQuCi0JICogVXNlIEBsaW5rICNpbnN0YW5jZSgpIHRvIGdldCB0aGUgc2luZ2xldG9uIG9mIHRoaXMgY2xhc3MuCi0JICovCi0JcHJpdmF0ZSBVRERJUmVnaXN0cnlTZXJ2aWNlICgpCi0JewotCQlVRERJUmVnaXN0cnlQYWNrYWdlLmVJTlNUQU5DRS5nZXRDbGFzcygpOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBvZiB0aGlzIGNsYXNzLgotCSAqIEByZXR1cm4gVGhlIHNpbmdsZXRvbiBvZiB0aGlzIGNsYXNzLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgVURESVJlZ2lzdHJ5U2VydmljZSBpbnN0YW5jZSAoKQotCXsKLQkJaWYgKGluc3RhbmNlXyA9PSBudWxsKQotCQl7Ci0JCQlpbnN0YW5jZV8gPSBuZXcgVURESVJlZ2lzdHJ5U2VydmljZSgpOwotCQl9Ci0JCXJldHVybiBpbnN0YW5jZV87Ci0JfQotCQotCS8qKgotCSAqIEFkZHMgYSByZWZlcmVuY2UgZnJvbSB0aGUgZ2l2ZW4gPGNvZGU+VURESVJlZ2lzdHJ5PC9jb2RlPgotCSAqIHRvIHRoZSBnaXZlbiA8Y29kZT5UYXhvbm9teTwvY29kZT4gb2JqZWN0LgotCSAqIEBwYXJhbSB1ZGRpUmVnaXN0cnkgVGhlIDxjb2RlPlVERElSZWdpc3RyeTwvY29kZT4gdG8gd2hpY2ggdGhlIHJlZmVyZW5jZQotCSAqIHRvIHRoZSBnaXZlbiA8Y29kZT5UYXhvbm9teTwvY29kZT4gb2JqZWN0IHNob3VsZCBiZSBhZGRlZC4KLQkgKiBAcGFyYW0gdGF4b25vbXkgVGhlIDxjb2RlPlRheG9ub215PC9jb2RlPiBvYmplY3QgdG8gYWRkLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vdmVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215Ci0JICovCi0JcHVibGljIHZvaWQgYWRkVGF4b25vbXkgKCBVRERJUmVnaXN0cnkgdWRkaVJlZ2lzdHJ5LCBUYXhvbm9teSB0YXhvbm9teSApCi0JewotCQlhZGRUYXhvbm9taWVzKHVkZGlSZWdpc3RyeSxuZXcgVGF4b25vbXlbXSB7dGF4b25vbXl9KTsKLQl9Ci0KLQkvKioKLQkgKiBBZGRzIHRoZSBnaXZlbiA8Y29kZT5UYXhvbm9teTwvY29kZT4gb2JqZWN0cyBhcy1pcwotCSAqICh3aGV0aGVyIHRoZXkgYXJlIHJlZmVyZW5jZXMgb3IgZnVsbCBtb2RlbHMpCi0JICogdG8gdGhlIGdpdmVuIDxjb2RlPlVERElSZWdpc3RyeTwvY29kZT4uCi0JICogQHBhcmFtIHVkZGlSZWdpc3RyeSBUaGUgPGNvZGU+VURESVJlZ2lzdHJ5PC9jb2RlPiB0byB3aGljaAotCSAqIHRoZSBnaXZlbiA8Y29kZT5UYXhvbm9teTwvY29kZT4gb2JqZWN0cyBzaG91bGQgYmUgYWRkZWQuCi0JICogQHBhcmFtIHRheG9ub21pZXMgVGhlIGFycmF5IG9mIDxjb2RlPlRheG9ub215PC9jb2RlPiBvYmplY3RzIHRvIGFkZC4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb3ZlbC52MTAudWRkaXJlZ2lzdHJ5LlVERElSZWdpc3RyeQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teQotCSAqLwotCXB1YmxpYyB2b2lkIGFkZFRheG9ub21pZXMgKCBVRERJUmVnaXN0cnkgdWRkaVJlZ2lzdHJ5LCBUYXhvbm9teVtdIHRheG9ub21pZXMgKQotCXsKLQkJaWYgKHRheG9ub21pZXMubGVuZ3RoID4gMCkKLQkJewotCQkJVGF4b25vbWllcyB0YXhvbm9teVNldCA9IHVkZGlSZWdpc3RyeS5nZXRUYXhvbm9taWVzKCk7Ci0JCQlpZiAodGF4b25vbXlTZXQgPT0gbnVsbCkKLQkJCXsKLQkJCQl0YXhvbm9teVNldCA9IFVERElSZWdpc3RyeUZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVRheG9ub21pZXMoKTsKLQkJCQl1ZGRpUmVnaXN0cnkuc2V0VGF4b25vbWllcyh0YXhvbm9teVNldCk7Ci0JCQl9Ci0JCQlFTGlzdCBsaXN0ID0gdGF4b25vbXlTZXQuZ2V0VGF4b25vbXkoKTsKLQkJCWZvciAoaW50IGk9MDsgaTx0YXhvbm9taWVzLmxlbmd0aDsgaSsrKQotCQkJewotCQkJCWxpc3QuYWRkKHRheG9ub21pZXNbaV0pOwotCQkJfQotCQl9Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgYW4gYXJyYXkgb2YgVVJJIGlkZW50aWZpZXJzIHRvIDxjb2RlPlRheG9ub215PC9jb2RlPgotCSAqIG1vZGVscyBjb250YWluZWQgaW4gb3IgcmVmZXJlbmNlZCBieSB0aGUgPGNvZGU+dWRkaVJlZ2lzdHJ5PC9jb2RlPi4KLQkgKiBQYXNzaW5nIHRoZSByZXN1bHQgdG8gPGNvZGU+SVJlZ2lzdHJ5TWFuYWdlci5sb2FkVGF4b25vbWllcygpPC9jb2RlPgotCSAqIGlzIGEgaGFuZHkgd2F5IHRvIHJlc29sdmUgYW5kIGxvYWQgdGhlIGZ1bGwgdGF4b25vbXkgbW9kZWxzIHVzZWQKLQkgKiBieSB0aGUgVURESSByZWdpc3RyeS4KLQkgKiAKLQkgKiBAcmV0dXJuIEFuIGFycmF5IG9mIFVSSSBpZGVudGlmaWVycywgcG9zc2libHkgZW1wdHkgYnV0IG5ldmVyIG51bGwsCi0JICogdG8gPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVscy4KLQkgKiBAc2VlIFRheG9ub215Ci0JICogQHNlZSBJUmVnaXN0cnlNYW5hZ2VyI2xvYWRUYXhvbm9taWVzKFN0cmluZ1tdKQotCSAqLwotCXB1YmxpYyBTdHJpbmdbXSBnZXRUYXhvbm9teVVSSXMgKCBVRERJUmVnaXN0cnkgdWRkaVJlZ2lzdHJ5ICkKLQl7Ci0JCVRheG9ub21pZXMgdGF4b25vbWllcyA9IHVkZGlSZWdpc3RyeS5nZXRUYXhvbm9taWVzKCk7Ci0JCWlmICh0YXhvbm9taWVzID09IG51bGwpIHJldHVybiBuZXcgU3RyaW5nWzBdOwotCQlFTGlzdCB0YXhvbm9teUxpc3QgPSB0YXhvbm9taWVzLmdldFRheG9ub215KCk7Ci0JCUxpc3QgdGF4b25vbXlVUklzID0gbmV3IEFycmF5TGlzdCh0YXhvbm9teUxpc3Quc2l6ZSgpKTsKLQkJSXRlcmF0b3IgaSA9IHRheG9ub215TGlzdC5pdGVyYXRvcigpOwotCQl3aGlsZSAoaS5oYXNOZXh0KCkpCi0JCXsKLQkJCVRheG9ub215IHRheG9ub215ID0gKFRheG9ub215KWkubmV4dCgpOwotCQkJaWYgKHRheG9ub215LmdldElkKCkgIT0gbnVsbCkKLQkJCXsKLQkJCQl0YXhvbm9teVVSSXMuYWRkKHRheG9ub215LmdldElkKCkpOwotCQkJfQotCQkJZWxzZSBpZiAodGF4b25vbXkuZ2V0UmVmKCkgIT0gbnVsbCkKLQkJCXsKLQkJCQl0YXhvbm9teVVSSXMuYWRkKHRheG9ub215LmdldFJlZigpKTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gKFN0cmluZ1tdKXRheG9ub215VVJJcy50b0FycmF5KG5ldyBTdHJpbmdbMF0pOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgYW4gYXJyYXkgb2YgZnVsbCA8Y29kZT5UYXhvbm9teTwvY29kZT4gbW9kZWxzCi0JICogY29udGFpbmVkIGluIG9yIHJlZmVyZW5jZWQgYnkgdGhlIGdpdmVuIDxjb2RlPnVkZGlSZWdpc3RyeTwvY29kZT4uCi0JICogSW5saW5lIHRheG9ub21pZXMgYXJlIHJldHVybmVkIGFzLWlzLiBSZWZlcmVuY2VzIHRvIHRheG9ub21pZXMgYXJlCi0JICogcmVzb2x2ZWQgYnkgZm9sbG93aW5nIHRoZSBsb2NhdGlvbnMgb2YgdGhlIHJlZmVyZW5jZXMgYW5kIGxvYWRpbmcKLQkgKiB0aGUgbW9kZWxzIGF0IHRoZSBsb2NhdGlvbiBVUkxzLgotCSAqIFRoaXMgbWV0aG9kIG5ldmVyIHJldHVybnMgbnVsbCwgYnV0IG1heSByZXR1cm4gYW4gZW1wdHkgYXJyYXkuCi0JICogQHBhcmFtIHJlZ2lzdHJ5IFRoZSA8Y29kZT5VRERJUmVnaXN0cnk8L2NvZGU+IHdob3NlCi0JICogPGNvZGU+VGF4b25vbXk8L2NvZGU+IG1vZGVscyB0byBmaW5kLgotCSAqIEByZXR1cm4gVGhlIGFycmF5LCBuZXZlciBudWxsIGJ1dCBwb3NzaWJseSBsZW5ndGggemVybywKLQkgKiBvZiA8Y29kZT5UYXhvbm9teTwvY29kZT4gbW9kZWxzLgotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vdmVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5Ci0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LlRheG9ub215Ci0JICogQHNlZSAjZ2V0VGF4b25vbXlVUklzKFVERElSZWdpc3RyeSkKLQkgKiBAc2VlIElSZWdpc3RyeU1hbmFnZXIjbG9hZFRheG9ub21pZXMoU3RyaW5nW10pCi0JICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2Qgc3VmZmVycyBmcm9tIGEgbGFjayBvZiBhd2FyZW5lc3Mgb2YgdGhlCi0JICogSW5kZXggWE1MIGRvY3VtZW50IHRoYXQgaXMgb2Z0ZW4gcmVzcG9uc2libGUgZm9yIG1hcHBpbmcgVVJJcwotCSAqIHRvIGxvY2F0aW9uIFVSTHMuIFVzZQotCSAqIDxjb2RlPklSZWdpc3RyeU1hbmFnZXIubG9hZFRheG9ub21pZXMoZ2V0VGF4b25vbXlVUklzKHVkZGlSZWdpc3RyeSkpPC9jb2RlPgotCSAqIGluc3RlYWQuCi0JICovCi0JcHVibGljIFRheG9ub215W10gZ2V0VGF4b25vbWllcyAoIFVERElSZWdpc3RyeSB1ZGRpUmVnaXN0cnkgKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJUmVnaXN0cnlTZXJ2aWNlIHJlZ2lzdHJ5U2VydmljZSA9IFJlZ2lzdHJ5U2VydmljZS5pbnN0YW5jZSgpOwotCQlUYXhvbm9taWVzIHRheG9ub21pZXMgPSB1ZGRpUmVnaXN0cnkuZ2V0VGF4b25vbWllcygpOwotCQlpZiAodGF4b25vbWllcyA9PSBudWxsKSByZXR1cm4gbmV3IFRheG9ub215WzBdOwotCQlFTGlzdCBsaXRlcmFsVGF4b25vbXlMaXN0ID0gdGF4b25vbWllcy5nZXRUYXhvbm9teSgpOwotCQlMaXN0IHJlc29sdmVkVGF4b25vbXlMaXN0ID0gbmV3IEFycmF5TGlzdChsaXRlcmFsVGF4b25vbXlMaXN0LnNpemUoKSk7Ci0JCUl0ZXJhdG9yIGkgPSBsaXRlcmFsVGF4b25vbXlMaXN0Lml0ZXJhdG9yKCk7Ci0JCXdoaWxlIChpLmhhc05leHQoKSkKLQkJewotCQkJVGF4b25vbXkgbGl0ZXJhbFRheG9ub215ID0gKFRheG9ub215KWkubmV4dCgpOwotCQkJaWYgKGxpdGVyYWxUYXhvbm9teS5nZXRJZCgpICE9IG51bGwpCi0JCQl7Ci0JCQkJcmVzb2x2ZWRUYXhvbm9teUxpc3QuYWRkKGxpdGVyYWxUYXhvbm9teSk7Ci0JCQl9Ci0JCQllbHNlIGlmIChsaXRlcmFsVGF4b25vbXkuZ2V0TG9jYXRpb24oKSAhPSBudWxsKQotCQkJewotCQkJCXRyeQotCQkJCXsKLQkJCQkJVGF4b25vbXkgcmVzb2x2ZWRUYXhvbm9teSA9IHJlZ2lzdHJ5U2VydmljZS5sb2FkVGF4b25vbXkobmV3IFVSTChsaXRlcmFsVGF4b25vbXkuZ2V0TG9jYXRpb24oKSkpOwotCQkJCQlyZXNvbHZlZFRheG9ub215TGlzdC5hZGQocmVzb2x2ZWRUYXhvbm9teSk7Ci0JCQkJfQotCQkJCWNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLQkJCQl7Ci0JCQkJCS8vVE9ETzogTmVlZCBtZXNzYWdlIHRleHQgaGVyZQotCQkJCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIFdTUGx1Z2luLklELCAwLCAiIiwgZSkpOwotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gKFRheG9ub215W10pcmVzb2x2ZWRUYXhvbm9teUxpc3QudG9BcnJheShuZXcgVGF4b25vbXlbMF0pOwotCX0KLQkKLQkvKioKLQkgKiBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IDxjb2RlPlVERElSZWdpc3RyeTwvY29kZT4gbW9kZWwuCi0JICogQHJldHVybiBBIG5ldyA8Y29kZT5VRERJUmVnaXN0cnk8L2NvZGU+IG1vZGVsLCBuZXZlciBudWxsLgotCSAqLwotCXB1YmxpYyBVRERJUmVnaXN0cnkgbmV3VURESVJlZ2lzdHJ5ICgpCi0JewotCQlyZXR1cm4gVURESVJlZ2lzdHJ5RmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlVURESVJlZ2lzdHJ5KCk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9yZWdpc3RyeS9VRERJVGF4b25vbXlGaW5kZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcmVnaXN0cnkvVURESVRheG9ub215RmluZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNGNlODQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9yZWdpc3RyeS9VRERJVGF4b25vbXlGaW5kZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5OwotCi0vKioKLSAqIFRoaXMgPGNvZGU+SVRheG9ub215RmluZGVyPC9jb2RlPiBmb3IgVURESSByZWdpc3RyaWVzCi0gKiByZXR1cm5zIGFuIGFycmF5IG9mIDxjb2RlPlRheG9ub215PC9jb2RlPgotICogbW9kZWxzIHVzZWQgKHN1cHBvcnRlZCBieSkgdGhlIHJlZ2lzdHJ5LgotICogQGF1dGhvciBnaWxiZXJ0YUBjYS5pYm0uY29tCi0gKiBAc2VlIFVERElSZWdpc3RyeQotICovCi1wdWJsaWMgY2xhc3MgVURESVRheG9ub215RmluZGVyIGltcGxlbWVudHMgSVRheG9ub215RmluZGVyCi17Ci0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnJlZ2lzdHJ5LklUYXhvbm9teUZpbmRlciN0YXhvbm9taWVzKG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAucmVnaXN0cnkuUmVnaXN0cnkpCi0JICovCi0JcHVibGljIFRheG9ub215W10gdGF4b25vbWllcyAoIFJlZ2lzdHJ5IHJlZ2lzdHJ5ICkKLQl7Ci0JCWlmICggcmVnaXN0cnkgaW5zdGFuY2VvZiBVRERJUmVnaXN0cnkgKQotCQl7Ci0JCQlVRERJUmVnaXN0cnkgdWRkaVJlZ2lzdHJ5ID0gKFVERElSZWdpc3RyeSlyZWdpc3RyeTsJICAKLQkJCXJldHVybiAoVGF4b25vbXlbXSl1ZGRpUmVnaXN0cnkuZ2V0VGF4b25vbWllcygpLmdldFRheG9ub215KCkudG9BcnJheShuZXcgVGF4b25vbXlbMF0pOwotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdXRpbC9Vbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdXRpbC9Vbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y2MWQzNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3V0aWwvVW5pdmVyc2FsUGF0aFRyYW5zZm9ybWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwOCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwODI1ICAgMTM1NTcwIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBTZXJ2aWNlIGltcGxlbWVudGF0aW9uIFVSTCBub3QgZGlzcGxheWVkIHByb3Blcmx5IG9uIGZpcnN0IHBhZ2UKLSAqIDIwMDcwMTI1ICAgMTcxMDcxIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBDcmVhdGUgcHVibGljIHV0aWxpdHkgbWV0aG9kIGZvciBjb3B5aW5nIFdTREwgZmlsZXMgCi0gKiAyMDA3MDUwOSAgIDE4MjI3NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwODA0MTEgICAyMjY3NjcgbWFrYW5kcmVAY2EuaWJtLmNvbSAtIEFuZHJldyBNYWssIFVuaXZlcnNhbFBhdGhUcmFuc2Zvcm1lciBkb2VzIG5vdCBoYW5kbGUgcGF0aHMgdy8gc3BhY2VzIHRoYXQgYXJlIGVuY29kZWQKLSAqIDIwMDkwMTI4ICAgMjYyNjM5IGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIFdTRExDb3BpZXIgZ2l2ZXMgTlBFIGluIHByb2plY3RzIHdpdGggc3BhY2VzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnV0aWw7Ci0KLWltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMRGVjb2RlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnVyaXJlc29sdmVyLmludGVybmFsLnV0aWwuVVJJRW5jb2RlcjsKLQotLyoqCi0gKiA8cD5BIHV0aWxpdHkgY2xhc3MgZm9yIHRyYW5zZm9ybWluZyBhIHBhdGggdG8gYW5kIGZyb20gdGhlIGZvbGxvd2luZyBmb3JtYXRzOjwvcD4KLSAqIDx1bD4KLSAqIDxsaT5BbiBhYnNvbHV0ZSBlY2xpcHNlIHBhdGggKGkuZS4gc3RhcnRzIHdpdGggL1Byb2plY3ROYW1lLy4uLik8L2xpPgotICogPGxpPkFuIGFic29sdXRlIGZpbGVzeXN0ZW0gVVJJIHBhdGggKGkuZS4gZmlsZTovQzovTXlXb3Jrc3BhY2UvUHJvamVjdE5hbWUvLi4uKTwvbGk+Ci0gKiA8bGk+QSBwbGF0Zm9ybSBVUkkgcGF0aCAoaS5lLiBwbGF0Zm9ybTovcmVzb3VyY2UvUHJvamVjdE5hbWUvLi4uKTwvbGk+IAotICogPC91bD4gCi0gKiA8cD5JbiBhbGwgY2FzZXMsIGlmIHRoZSB0cmFuc2Zvcm1lciBjb3VsZCBub3QgY29udmVydCB0aGUgcGF0aCwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLjwvcD4KLSAqLwotcHVibGljIGNsYXNzIFVuaXZlcnNhbFBhdGhUcmFuc2Zvcm1lciB7Ci0JCi0JLyoqCi0JICogUHJlZml4IG9mIHBsYXRmb3JtIFVSSXMuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExBVEZPUk1fUFJFRklYID0gInBsYXRmb3JtOi9yZXNvdXJjZS8iOwotCQotCS8qKgotCSAqIFByZWZpeCBvZiBmaWxlc3lzdGVtIFVSSXMuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9DQVRJT05fUFJFRklYID0gImZpbGU6LyI7Ci0KLQlwcml2YXRlIHN0YXRpYyBTdHJpbmcgUFJPVE9DT0xfTUFSS0VSID0gIjoiOwotCXByaXZhdGUgc3RhdGljIGNoYXIgUEFUSF9TRVBBUkFUT1IgICAgPSAnLyc7Ci0gCQotCS8qKgotCSAqIERldGVybWluZXMgaWYgYSBVUkkgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBwcmVmaXguICBUaGlzIG1ldGhvZCBpcyBjYXNlLWluc2Vuc2l0aXZlLiAKLQkgKiAKLQkgKiBAcGFyYW0gdXJpIFRoZSBVUkkgc3RyaW5nIHRvIGNoZWNrLgotCSAqIEBwYXJhbSBwcmVmaXggVGhlIHByZWZpeC4KLQkgKiBAcmV0dXJuIHRydWUgaWZmIHByZWZpeCBpcyBhIHN0cmljdCBwcmVmaXggb2YgdGhlIFVSSSBzdHJpbmcgKGkuZS4gcHJlZml4ICE9IHVyaSksIGZhbHNlCi0JICogaXMgcmV0dXJuZWQgb3RoZXJ3aXNlLgotCSAqLwotCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNQcmVmaXgoU3RyaW5nIHVyaSwgU3RyaW5nIHByZWZpeCkgewotCQlpZiAocHJlZml4Lmxlbmd0aCgpID49IHVyaS5sZW5ndGgoKSkKLQkJCXJldHVybiBmYWxzZTsKLQkJCi0JCXJldHVybiB1cmkuc3Vic3RyaW5nKDAsIHByZWZpeC5sZW5ndGgoKSkuZXF1YWxzSWdub3JlQ2FzZShwcmVmaXgpOwotCX0KLQotCS8qKgotCSAqIFRyYW5zZm9ybSB0aGUgZ2l2ZW4gcGF0aCB0byBhbiBlY2xpcHNlIHBhdGguICBJZiB0aGUgZ2l2ZW4gcGF0aCBpcyBhIGZpbGVzeXN0ZW0gVVJJLCBpdCBtdXN0IG1hcCB0bwotCSAqIGEgcmVhbCByZXNvdXJjZSBpbiB0aGUgd29ya3NwYWNlLgotCSAqIAotCSAqIEBwYXJhbSBzdHIgVGhlIHBhdGggdG8gdHJhbnNmb3JtLgotCSAqIEByZXR1cm4gUmV0dXJucyBhbiBlY2xpcHNlIHBhdGggZXF1aXZhbGVudCBvZiB0aGUgZ2l2ZW4gcGF0aC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyB0b1BhdGgoU3RyaW5nIHN0cikgewotCQkKLQkJaWYgKHN0ciA9PSBudWxsIHx8IHN0ci5sZW5ndGgoKSA9PSAwKQotCQkJcmV0dXJuIHN0cjsKLQkJCi0JCWlmIChpc1ByZWZpeChzdHIsIFBMQVRGT1JNX1BSRUZJWCkpIHsKLQkJCXN0ciA9IHN0ci5zdWJzdHJpbmcoUExBVEZPUk1fUFJFRklYLmxlbmd0aCgpIC0gMSk7Ci0JCX0KLQkJZWxzZSBpZiAoaXNQcmVmaXgoc3RyLCBMT0NBVElPTl9QUkVGSVgpKSB7Ci0JCQlJRmlsZSBmaWxlID0gdG9GaWxlKHN0cik7Ci0JCQlpZiAoZmlsZSAhPSBudWxsKQotCQkJCXN0ciA9IGZpbGUuZ2V0RnVsbFBhdGgoKS5tYWtlQWJzb2x1dGUoKS50b1N0cmluZygpOwotCQl9Ci0JCQotCQlyZXR1cm4gc3RyOwotCX0KLQotCS8qKgotCSAqIFRyYW5zZm9ybSB0aGUgZ2l2ZW4gcGF0aCB0byBhIHBsYXRmb3JtIFVSSSBwYXRoLiAgSWYgdGhlIGdpdmVuIHBhdGggaXMgYSBmaWxlc3lzdGVtIFVSSSwgaXQgbXVzdCBtYXAgdG8KLQkgKiBhIHJlYWwgcmVzb3VyY2UgaW4gdGhlIHdvcmtzcGFjZS4KLQkgKiAKLQkgKiBAcGFyYW0gc3RyIFRoZSBwYXRoIHRvIHRyYW5zZm9ybS4KLQkgKiBAcmV0dXJuIFJldHVybnMgYSBwbGF0Zm9ybSBVUkkgcGF0aCBlcXVpdmFsZW50IG9mIHRoZSBnaXZlbiBwYXRoLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvUGxhdGZvcm1QYXRoKFN0cmluZyBzdHIpIHsKLQotCQlpZiAoc3RyID09IG51bGwgfHwgc3RyLmxlbmd0aCgpID09IDApCi0JCQlyZXR1cm4gc3RyOwkJCi0JCQotCQlpZiAoaXNQcmVmaXgoc3RyLCBMT0NBVElPTl9QUkVGSVgpKSB7Ci0JCQlJRmlsZSBmaWxlID0gdG9GaWxlKHN0cik7Ci0JCQlpZiAoZmlsZSAhPSBudWxsKQotCQkJCXN0ciA9IFBMQVRGT1JNX1BSRUZJWCArIGZpbGUuZ2V0RnVsbFBhdGgoKS5tYWtlUmVsYXRpdmUoKTsKLQkJfQkJCQotCQllbHNlIGlmIChzdHIuaW5kZXhPZihQUk9UT0NPTF9NQVJLRVIpID09IC0xKSB7Ci0JCQlpZiAoc3RyLmNoYXJBdCgwKSA9PSBQQVRIX1NFUEFSQVRPUikKLQkJCQlzdHIgPSBQTEFURk9STV9QUkVGSVggKyBzdHIuc3Vic3RyaW5nKDEpOwotCQkJZWxzZQotCQkJCXN0ciA9IFBMQVRGT1JNX1BSRUZJWCArIHN0cjsKLQkJfQotCQkKLQkJcmV0dXJuIHN0cjsKLQl9Ci0JCi0JLyoqCi0JICogVHJhbnNmb3JtIHRoZSBnaXZlbiBwYXRoIHRvIGEgZmlsZXN5c3RlbSBVUkkgcGF0aC4gIFRoZSBwYXRoIG11c3QgYmUgYSB2YWxpZAotCSAqIGVjbGlwc2UgcmVzb3VyY2UuCi0JICogCi0JICogQHBhcmFtIHN0ciBUaGUgcGF0aCB0byB0cmFuc2Zvcm0uCi0JICogQHJldHVybiBSZXR1cm5zIGEgZmlsZXN5c3RlbSBVUkkgcGF0aCBlcXVpdmFsZW50IG9mIHRoZSBnaXZlbiBwYXRoLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvTG9jYXRpb24oU3RyaW5nIHN0cikgewotCQkKLQkJaWYgKHN0ciA9PSBudWxsIHx8IHN0ci5sZW5ndGgoKSA9PSAwKQotCQkJcmV0dXJuIHN0cjsKLQkJCi0JCVN0cmluZyBzID0gc3RyOwotCQkKLQkJaWYgKGlzUHJlZml4KHMsIFBMQVRGT1JNX1BSRUZJWCkpCi0JCQlzID0gdG9QYXRoKHMpOwotCQkKLQkJaWYgKHMuaW5kZXhPZihQUk9UT0NPTF9NQVJLRVIpID09IC0xKSB7CQkJCi0JCQlJRmlsZSBmaWxlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRGaWxlKG5ldyBQYXRoKHMpKTsKLQkJCWlmIChmaWxlICE9IG51bGwpCi0JCQkJc3RyID0gZmlsZS5nZXRMb2NhdGlvblVSSSgpLnRvU3RyaW5nKCk7Ci0JCX0KLQkJCQkKLQkJcmV0dXJuIHN0cjsKLQl9CQotCQotCS8qKgotCSAqIFRyYW5zZm9ybSB0aGUgZ2l2ZW4gVVJJIHRvIGFuIElGaWxlLiAgUmV0dXJucyBudWxsIGlmIHRoZSBVUkkgaXMgbm90IGluIHRoZSB3b3Jrc3BhY2UuCi0JICogCi0JICogQHBhcmFtIHN0ciBUaGUgVVJJIHRvIHRyYW5zZm9ybS4KLQkgKiBAcmV0dXJuIFJldHVybnMgSUZpbGUKLQkgKi8KLQlwdWJsaWMgc3RhdGljIElGaWxlIHRvRmlsZShTdHJpbmcgc3RyKSB7Ci0JCQotCQlJRmlsZSBmaWxlID0gbnVsbDsKLQkJCi0JCS8vIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aAotCQlpZiAoaXNQcmVmaXgoc3RyLCBMT0NBVElPTl9QUkVGSVgpKSB7Ci0JCQlzdHIgPSBzdHIuc3Vic3RyaW5nKExPQ0FUSU9OX1BSRUZJWC5sZW5ndGgoKSkucmVwbGFjZUFsbCgiJTIwIiwgIiAiKTsKLQkJCWZpbGUgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldEZpbGVGb3JMb2NhdGlvbihuZXcgUGF0aChzdHIpKTsKLQkJfQotCQllbHNlIHsJCi0JCQkvLyBwbGF0Zm9ybSBwYXRoCi0JCQlpZiAoc3RyLnN0YXJ0c1dpdGgoUExBVEZPUk1fUFJFRklYKSkKLQkJCQlzdHIgPSBzdHIuc3Vic3RyaW5nKFBMQVRGT1JNX1BSRUZJWC5sZW5ndGgoKSk7Ci0JCQotCQkJaWYgKHN0ci5pbmRleE9mKFBST1RPQ09MX01BUktFUikgPT0gLTEpIHsJCQkKLQkJCQlmaWxlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRGaWxlKG5ldyBQYXRoKHN0cikpOwotCQkJfQotCQl9Ci0JCQkJCQkJCQotCQlyZXR1cm4gZmlsZTsKLQl9CQotCQotCS8qKgotCSAqIFRyYW5zZm9ybSB0aGUgZ2l2ZW4gVVJJcyB0byBhbiBJRmlsZXMuICAKLQkgKiBJRmlsZSBzZXQgdG8gbnVsbCBpZiB0aGUgVVJJIGlzIG5vdCBpbiB0aGUgd29ya3NwYWNlLgotCSAqIAotCSAqIEBwYXJhbSBzdHIgVGhlIFVSSXMgdG8gdHJhbnNmb3JtLgotCSAqIEByZXR1cm4gUmV0dXJucyBJRmlsZVtdCi0JICovCi0JcHVibGljIHN0YXRpYyBJRmlsZVtdIHRvRmlsZXMoU3RyaW5nW10gdXJpcykgewotCQkKLQkJSUZpbGVbXSBmaWxlcyA9IG51bGw7Ci0JCWlmICh1cmlzICE9IG51bGwpIHsKLQkJCWZpbGVzID0gbmV3IElGaWxlW3VyaXMubGVuZ3RoXTsJCQotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB1cmlzLmxlbmd0aDsgaSsrKSB7Ci0JCQkJU3RyaW5nIHVyaSA9IHVyaXNbaV07Ci0JCQkJZmlsZXNbaV0gPSBVbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXIudG9GaWxlKHVyaSk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGZpbGVzOwotCX0KLQotCS8qKgotCSAqIFRyYW5zZm9ybSB0aGUgZ2l2ZW4gZW5jb2RlZCBVUkkgdG8gYSBmaWxlOiBwcm90b2NvbCBVUkkuICBUaGUgVVJJIG11c3QgYmUgYSB2YWxpZAotCSAqIGVjbGlwc2UgcmVzb3VyY2UuCi0JICogCi0JICogQHBhcmFtIHN0ciBUaGUgVVJJIHRvIHRyYW5zZm9ybS4KLQkgKiBAcmV0dXJuIFJldHVybnMgYSBmaWxlOiBwcm90b2NvbCBVUkkgZXF1aXZhbGVudCBvZiB0aGUgZ2l2ZW4gVVJJLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIHVyaVRvTG9jYXRpb24oU3RyaW5nIHN0cikgewotCQkKLQkJaWYgKHN0ciA9PSBudWxsIHx8IHN0ci5sZW5ndGgoKSA9PSAwKQotCQkJcmV0dXJuIHN0cjsKLQkJCi0JCVN0cmluZyBzID0gc3RyOwotCQlpZiAoaXNQcmVmaXgocywgUExBVEZPUk1fUFJFRklYKSkKLQkJCXMgPSBVbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXIudG9QYXRoKHMpOwotCQkKLQkJaWYgKHMuaW5kZXhPZihQUk9UT0NPTF9NQVJLRVIpID09IC0xKSB7CQkKLQkJCXRyeSB7Ci0JCQlJRmlsZSBmaWxlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRGaWxlKG5ldyBQYXRoKFVSTERlY29kZXIuZGVjb2RlKHMsICJVVEYtOCIpKSk7Ci0JCQlpZiAoZmlsZSAhPSBudWxsKSAKLQkJCQlzdHIgPSB1cmlDcmVhdGUoVVJMRGVjb2Rlci5kZWNvZGUoZmlsZS5nZXRMb2NhdGlvblVSSSgpLnRvU3RyaW5nKCksICJVVEYtOCIpKS50b1N0cmluZygpOwotCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCQkJLy9ub3RoaW5nIHRvIGRvIGhlcmUsIGp1c3QgcmV0dXJuIHNhbWUgc3RyaW5nCi0JCQl9Ci0JCX0KLQkJCQkKLQkJcmV0dXJuIHN0cjsKLQl9Ci0KLQlwcml2YXRlIHN0YXRpYyBqYXZhLm5ldC5VUkkgdXJpQ3JlYXRlKFN0cmluZyB1cmkpIHsKLQkJaWYgKHVyaSAhPSBudWxsKQotCQkJdXJpID0gdXJpLnJlcGxhY2UoJ1xcJywgJy8nKTsKLQkJdHJ5IHsKLQkJCXRyeSB7Ci0JCQkJcmV0dXJuIGphdmEubmV0LlVSSS5jcmVhdGUodXJpKTsKLQkJCX0KLQkJCWNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgewkJCQkKLQkJCQlyZXR1cm4gamF2YS5uZXQuVVJJLmNyZWF0ZShVUklFbmNvZGVyLmVuY29kZSh1cmksICJVVEYtOCIpKTsKLQkJCX0KLQkJfQotCQljYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKSB7Ci0JCQlyZXR1cm4gamF2YS5uZXQuVVJJLmNyZWF0ZSgiIik7Ci0JCX0JCi0JfQkKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdXRpbC9XU0RMQ29waWVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3V0aWwvV1NETENvcGllci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWEwMTJiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvdXRpbC9XU0RMQ29waWVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwMTI1ICAgMTcxMDcxIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBDcmVhdGUgcHVibGljIHV0aWxpdHkgbWV0aG9kIGZvciBjb3B5aW5nIFdTREwgZmlsZXMKLSAqIDIwMDcwNDA5ICAgMTgxNjM1IG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0RMQ29waWVyIHV0aWxpdHkgc2hvdWxkIGNyZWF0ZSB0YXJnZXQgZm9sZGVyCi0gKiAyMDA3MTIwNSAgIDIxMTI2MiBlcmljZHBAY2EuaWJtLmNvbSAtIEVyaWMgUGV0ZXJzLCBDb3B5V1NETFRyZWVDb21tYW5kIGZhaWxzIHRvIGNvcHkgP3dzZGwKLSAqIDIwMDgwMzI0ICAgMjE1NTUyIG1ha2FuZHJlQGNhLmlibS5jb20gLSBBbmRyZXcgTWFrLCBXU0RMQ29waWVyIGV4cGVjdHMgbm90IGVuY29kZWQgVVJJCi0gKiAyMDA4MDUwMSAgIDIyOTcyOCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgdXBwZXJjYXNlIC5XU0RMIGNhbm5vdCBiZSBmb3VuZCBieSB0aGUgV2ViIFNlcnZpY2UgQ2xpZW50IHdpemFyZAotICogMjAwOTAxMjggICAyNjI2MzkgZXJpY2RwQGNhLmlibS5jb20gLSBFcmljIEQuIFBldGVycywgV1NETENvcGllciBnaXZlcyBOUEUgaW4gcHJvamVjdHMgd2l0aCBzcGFjZXMKLSAqIDIwMDkwMjA0ICAgMjYyOTEzIGVyaWNkcEBjYS5pYm0uY29tIC0gRXJpYyBELiBQZXRlcnMsIFRvcC1kb3duIFdTIGZhaWxzIHdoZW4gLndzZGwgaW1wb3J0cyAueHNkIG9yIC53c2RsIHdoaWNoIHJlc2lkZXMgaW4gZm9sZGVyIGNvbnRhaW5pbmcgVVJJIGVuY29kZWQgY2hhcnMgbGlrZSAiICIsICIpIgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnV0aWw7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkk7Ci1pbXBvcnQgamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuSW1wb3J0OwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hOwotaW1wb3J0IGphdmF4LndzZGwuZmFjdG9yeS5XU0RMRmFjdG9yeTsKLWltcG9ydCBqYXZheC53c2RsLnhtbC5XU0RMV3JpdGVyOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uT3V0cHV0S2V5czsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2VSdW5uYWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC51cmkuSVVSSVNjaGVtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LnVyaS5TaW1wbGVVUklGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQudXJpLlVSSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnVyaXJlc29sdmVyLmludGVybmFsLnV0aWwuVVJJRW5jb2RlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuV3N0V1NQbHVnaW5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLmRpc2NvdmVyeS5OZXRVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBhcnNlci53c2lsLldlYlNlcnZpY2VzUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwud3NkbDRqLldTRExGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWFEaXJlY3RpdmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLmltcGwuWFNEU2NoZW1hSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5YU0RQYXJzZXI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotLyoqCi0gKiA8cD5UaGlzIGlzIGEgdXRpbGl0eSBjbGFzcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvcHkgYSBXU0RMIGZpbGUgYW5kIGl0cyByZWxhdGl2ZSBpbXBvcnRzCi0gKiAoYm90aCB3c2RsOmltcG9ydCBhbmQgeHNkOmltcG9ydCkgdG8gYSBmb2xkZXIgaW4gdGhlIGZpbGVzeXN0ZW0uICBUaGUgY29kZSB3aWxsIGFuYWx5emUKLSAqIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGFuZCBkb2VzIHRoZSBmb2xsb3dpbmc6Ci0gKiA8b2w+Ci0gKiAgICA8bGk+ZmluZCBhbGwgZmlsZXMgdGhhdCBuZWVkcyB0byBiZSBjb3BpZWQgYW5kIHRhZyB0aGVtIGFzIHN1Y2guPC9saT4KLSAqICAgIDxsaT5maW5kIHRoZSBjb21tb24gcGFyZW50IGRpcmVjdG9yeSBvZiBhbGwgdGhlIGZpbGVzIHRoYXQgYXJlIHRhZ2dlZDsgdGhpcyBpcyB0aGUgCi0gKiAgICByb290IG9mIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLjwvbGk+Ci0gKiA8L29sPgotICogRHVyaW5nIHRoZSBjb3B5LCB0aGUgcm9vdCBvZiB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBpcyBiZSBtYXBwZWQgdG8gdGhlIAotICogc3BlY2lmaWVkIHRhcmdldCBmb2xkZXIgYW5kIGFsbCB0YWdnZWQgZmlsZXMgd2lsbCBiZSBkdXBsaWNhdGVkIHVuZGVyIGl0LjwvcD4KLSAqIAotICogPHA+SWYgdGhlIFdTREwgc291cmNlIGFuZCB0aGUgdGFyZ2V0IGxvY2F0aW9uIGFyZSB0aGUgc2FtZSwgdGhpcyB1dGlsaXR5IG9ubHkgZ3VhcmFudGVlcwotICogdGhhdCB0aGUgc3RhcnRpbmcgV1NETCBmaWxlIGlzICJyZS1jb3BpZWQiIG9udG8gaXRzZWxmIChzaW5jZSB0aGUgV1NETCBkZWZpbml0aW9uIGNvdWxkIAotICogaGF2ZSBiZWVuIGFsdGVyZWQpLiAgTm8gZ3VhcmFudGVlIGlzIG1hZGUgZm9yIHRoZSBvdGhlciBmaWxlcyB0aGF0IHRoZSBXU0RMIGZpbGUgaW1wb3J0cy48L3A+Ci0gKiAKLSAqIDxwPk5vdGUgdGhhdCBXU0RMQ29waWVyIGRvZXMgbm90IGRvIGEgZGlyZWN0IGZpbGUgY29weS4gIFRoZSBzb3VyY2UgZmlsZXMgYXJlIHJlYWQgaW50bwotICogYSBtb2RlbCBhbmQgdGhlbiB3cml0dGVuIG91dCB0byB0aGUgdGFyZ2V0IGZvbGRlciwgaGVuY2UgdGhlIG91dHB1dCBmaWxlIG1pZ2h0IG5vdCBiZQotICogc3ludGFjdGljYWxseSBpZGVudGljYWwgdG8gdGhlIHNvdXJjZSBmaWxlIGJ1dCB0aGV5IHdpbGwgYmUgc3RydWN0dXJhbGx5IGlkZW50aWNhbC48L3A+Ci0gKiAKLSAqIDxwPlNpbmNlIHRoaXMgdXRpbGl0eSBpbXBsZW1lbnRzIElXb3Jrc3BhY2VSdW5uYWJsZSwgaXQgY2FuIGJlIHJ1biBieSB0aGUgd29ya3NwYWNlIGFzCi0gKiBhbiBhdG9taWMgd29ya3NwYWNlIG9wZXJhdGlvbi48L3A+Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMQ29waWVyIGltcGxlbWVudHMgSVdvcmtzcGFjZVJ1bm5hYmxlIHsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBYU0QgPSAiLnhzZCI7Ci0JCi0JLyoqCi0JICogSGVscGVyIGNsYXNzIGhvbGRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbGVzIHdlIG5lZWQgdG8gY29weQotCSAqLwotCXByaXZhdGUgY2xhc3MgWE1MT2JqZWN0SW5mbyB7Ci0JICAJCi0JCXB1YmxpYyBJUGF0aCAgcGF0aDsKLQkgIAlwdWJsaWMgT2JqZWN0IGNvbnRlbnQ7Ci0JICAJICAJCi0JICAJLyoqCi0JICAJICogQ29uc3RydWN0b3IuCi0JICAJICogCi0JICAJICogQHBhcmFtIHBhdGggVGhlIHBhdGggb2YgdGhlIHNvdXJjZSBmaWxlLgotCSAgCSAqIEBwYXJhbSBjb250ZW50IEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNvdXJjZSBmaWxlIChlaXRoZXIgd3NkbCBvciB4c2QpCi0JICAJICovCi0JICAJcHVibGljIFhNTE9iamVjdEluZm8oSVBhdGggcGF0aCwgT2JqZWN0IGNvbnRlbnQpIHsKLQkgIAkJdGhpcy5wYXRoICAgID0gcGF0aC5zZXREZXZpY2UobnVsbCk7IC8vIHdlIHdhbnQgYSBkZXZpY2UgaW5kZXBlbmRlbnQgcGF0aCAgCQkKLQkgIAkJdGhpcy5jb250ZW50ID0gY29udGVudDsKLQkgIAl9Ci0JfQkgIAotCQotCXByaXZhdGUgV2ViU2VydmljZXNQYXJzZXIgcGFyc2VyCT0gbnVsbDsJCQkJCS8vIHBhcnNlciB0byBwYXJzZSB0aGUgd3NkbCBhbmQgeHNkIGZpbGVzCi0JCi0JcHJpdmF0ZSBVUkkgc291cmNlVVJJCQkJCT0gVVJJLmNyZWF0ZSgiIik7CQkvLyB1cmkgb2YgdGhlIHN0YXJ0aW5nIHdzZGwKLQlwcml2YXRlIERlZmluaXRpb24gZGVmaW5pdGlvbgkJPSBudWxsOwkJCQkJLy8gcmVwcmVzZW50YXRpb24gb2YgdGhlIHN0YXJ0aW5nIHdzZGwKLQkKLQlwcml2YXRlIFVSSSB0YXJnZXRGb2xkZXJVUkkJCQk9IG51bGw7CQkJCQkvLyB1cmkgb2YgdGhlIGZvbGRlciB0byBjb3B5IHRvCi0JcHJpdmF0ZSBTdHJpbmcgdGFyZ2V0RmlsZW5hbWUJCT0gbnVsbDsJCQkJCS8vIG9wdGlvbmFsIG5ldyBmaWxlbmFtZSBmb3IgdGhlIHN0YXJ0aW5nIHdzZGwKLQkKLQlwcml2YXRlIElQYXRoIHBhdGhQcmVmaXgJCQk9IG51bGw7ICAJCQkJLy8gdGhlIHNob3J0ZXN0IGNvbW1vbiBwYXRoIG9mIGFsbCBmaWxlcyB3ZSBuZWVkIHRvIGNvcHkKLQlwcml2YXRlIElQYXRoIHdzZGxSZWxQYXRoCQkJPSBudWxsOwkJCQkJLy8gcmVsYXRpdmUgcGF0aCBvZiB0aGUgc3RhcnRpbmcgd3NkbCB0byB0aGUgdGFyZ2V0IGZvbGRlcgotCQkKLQlwcml2YXRlIE1hcCB4bWxPYmplY3RJbmZvcwkJCT0gbmV3IExpbmtlZEhhc2hNYXAoKTsJLy8gdGFibGUgdG8gc3RvcmUgaW5mbyBhYm91dCB0aGUgZmlsZXMgd2UgbmVlZCB0byBjb3B5Ci0JCi0JcHJpdmF0ZSBTaW1wbGVVUklGYWN0b3J5IHVyaUZhY3RvcnkgPSBudWxsOwotCQotCS8qKgotCSAqIERlZmF1bHQgY29uc3RydWN0b3IuICBBIG5ldyBXZWJTZXJ2aWNlc1BhcnNlciBpcyBjb25zdHJ1Y3RlZCBmb3IgdXNlLgotCSAqLwotCXB1YmxpYyBXU0RMQ29waWVyKCkgewotCQl0aGlzKG51bGwpOwotCX0KLQkKLQkvKioKLQkgKiBDb25zdHJ1Y3Rvci4gIFRoZSBnaXZlbiBXZWJTZXJ2aWNlc1BhcnNlciB3aWxsIGJlIHVzZWQuCi0JICogCi0JICogQHBhcmFtIHBhcnNlciBBIFdlYlNlcnZpY2VzUGFyc2VyIGZvciBXU0RMQ29waWVyIHRvIHVzZS4gIElmIG51bGwsIGEgbmV3IG9uZSB3aWxsIGJlIGNvbnN0cnVjdGVkLgotCSAqLwotCXB1YmxpYyBXU0RMQ29waWVyKFdlYlNlcnZpY2VzUGFyc2VyIHBhcnNlcikgewotCQlpZiAocGFyc2VyID09IG51bGwpCi0JCQl0aGlzLnBhcnNlciA9IG5ldyBXZWJTZXJ2aWNlc1BhcnNlcigpOwotCQllbHNlCi0JCQl0aGlzLnBhcnNlciA9IHBhcnNlcjsKLQkJCi0JCUlVUklTY2hlbWUgZWNsaXBzZVNjaGVtZSA9IEVudmlyb25tZW50U2VydmljZS5nZXRFY2xpcHNlU2NoZW1lKCk7Ci0JICAgIElVUklTY2hlbWUgZmlsZVNjaGVtZSAgICA9IEVudmlyb25tZW50U2VydmljZS5nZXRGaWxlU2NoZW1lKCk7Ci0JICAgIHVyaUZhY3RvcnkgPSBuZXcgU2ltcGxlVVJJRmFjdG9yeSgpOwotCSAgICB1cmlGYWN0b3J5LnJlZ2lzdGVyU2NoZW1lKCJwbGF0Zm9ybSIsIGVjbGlwc2VTY2hlbWUpOwotCSAgICB1cmlGYWN0b3J5LnJlZ2lzdGVyU2NoZW1lKCJmaWxlIiwgZmlsZVNjaGVtZSk7Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgVVJJIG9mIHRoZSBzdGFydGluZyB3c2RsIGRvY3VtZW50LiAgVGhlIFVSSSBtdXN0IGJlIGFuIGFic29sdXRlIFVSSQotCSAqIHdpdGggYSB2YWxpZCBwcm90b2NvbC4gIEZvciBsb2NhbCBmaWxlcywgYm90aCBmaWxlOi8gYW5kIHBsYXRmb3JtOi9yZXNvdXJjZSAKLQkgKiBwcm90b2NvbCBhcmUgYWNjZXB0YWJsZS4gCi0JICogCi0JICogQHBhcmFtIHVyaSBUaGUgVVJJIG9mIHRoZSBzdGFydGluZyB3c2RsIGRvY3VtZW50LgotCSAqIAotCSAqIEBkZXByZWNhdGVkCi0JICovCi0JcHVibGljIHZvaWQgc2V0U291cmNlVVJJKFN0cmluZyB1cmkpIHsKLQkJc2V0U291cmNlVVJJKHVyaSwgbnVsbCk7Ci0JfQotCQotCS8qKgotCSAqIFNldHMgdGhlIFVSSSBvZiB0aGUgc3RhcnRpbmcgd3NkbCBkb2N1bWVudC4gIFRoZSBVUkkgbXVzdCBiZSBhbiBhYnNvbHV0ZSBVUkkKLQkgKiB3aXRoIGEgdmFsaWQgcHJvdG9jb2wuICBGb3IgbG9jYWwgZmlsZXMsIGJvdGggZmlsZTovIGFuZCBwbGF0Zm9ybTovcmVzb3VyY2UgCi0JICogcHJvdG9jb2wgYXJlIGFjY2VwdGFibGUuIAotCSAqIAotCSAqIEBwYXJhbSB1cmkgVGhlIFVSSSBvZiB0aGUgc3RhcnRpbmcgd3NkbCBkb2N1bWVudC4gCi0JICovCi0JcHVibGljIHZvaWQgc2V0U291cmNlVVJJKFVSSSB1cmkpIHsKLQkJc2V0U291cmNlVVJJKHVyaSwgbnVsbCk7Ci0JfQotCQotCS8qKgotCSAqIFNhbWUgYXMgc2V0U291cmNlVVJJKFN0cmluZyB1cmkpIHZlcnNpb24sIGV4Y2VwdCB0aGF0IGFuIGFscmVhZHkgcGFyc2VkCi0JICogcmVwcmVzZW50YXRpb24gb2YgdGhlIHdzZGwgZG9jdW1lbnQgY2FuIGJlIHBhc3NlZCB0byB0aGlzIG1ldGhvZCB0byBhdm9pZAotCSAqIGhhdmluZyB0byBwYXJzZSBpdCBhIHNlY29uZCB0aW1lLgotCSAqIAotCSAqIEBwYXJhbSB1cmkgVGhlIFVSSSBvZiB0aGUgc3RhcnRpbmcgd3NkbCBkb2N1bWVudC4KLQkgKiBAcGFyYW0gZGVmaW5pdGlvbiBBIHBhcnNlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3RhcnRpbmcgd3NkbCBkb2N1bWVudC4KLQkgKiAKLQkgKiBAZGVwcmVjYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldFNvdXJjZVVSSShTdHJpbmcgdXJpLCBEZWZpbml0aW9uIGRlZmluaXRpb24pIHsKLQkJaWYgKHVyaSAhPSBudWxsKQotCQkJdXJpID0gdXJpLnJlcGxhY2UoJ1xcJywgJy8nKTsKLQkJVVJJIHVyaU9iaiA9IG51bGw7CQkKLQkJdHJ5IHsKLQkJCXRyeSB7Ci0JCQkJdXJpT2JqID0gbmV3IFVSSSh1cmkpOwotCQkJfQotCQkJY2F0Y2ggKFVSSVN5bnRheEV4Y2VwdGlvbiBlKSB7CQkJCQotCQkJCXVyaU9iaiA9IFVSSS5jcmVhdGUoVVJJRW5jb2Rlci5lbmNvZGUodXJpLCAiVVRGLTgiKSk7Ci0JCQl9Ci0JCQlzZXRTb3VyY2VVUkkodXJpT2JqLCBkZWZpbml0aW9uKTsJCQotCQl9Ci0JCWNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGUpIHsKLQkJCS8vIGlnbm9yZSwgZGVmYXVsdCBVUkkoIiIpIGlzIHVzZWQsIG9wZXJhdGlvbiB3aWxsIGJlIGEgbm8tb3AKLQkJfQkJCi0JfQotCQotCS8qKgotCSAqIFNhbWUgYXMgc2V0U291cmNlVVJJKFN0cmluZyB1cmkpIHZlcnNpb24sIGV4Y2VwdCB0aGF0IGFuIGFscmVhZHkgcGFyc2VkCi0JICogcmVwcmVzZW50YXRpb24gb2YgdGhlIHdzZGwgZG9jdW1lbnQgY2FuIGJlIHBhc3NlZCB0byB0aGlzIG1ldGhvZCB0byBhdm9pZAotCSAqIGhhdmluZyB0byBwYXJzZSBpdCBhIHNlY29uZCB0aW1lLgotCSAqIAotCSAqIEBwYXJhbSB1cmkgVGhlIFVSSSBvZiB0aGUgc3RhcnRpbmcgd3NkbCBkb2N1bWVudC4KLQkgKiBAcGFyYW0gZGVmaW5pdGlvbiBBIHBhcnNlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3RhcnRpbmcgd3NkbCBkb2N1bWVudC4gCi0JICovCi0JcHVibGljIHZvaWQgc2V0U291cmNlVVJJKFVSSSB1cmksIERlZmluaXRpb24gZGVmaW5pdGlvbikgewotCQlzb3VyY2VVUkkgPSB1cmk7Ci0JCXRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247Ci0JfQotCQotCS8qKgotCSAqIFNwZWNpZnkgdGhlIHRhcmdldCBmb2xkZXIgVVJJIGZvciBXU0RMQ29waWVyIHRvIGNvcHkgdGhlIHdzZGwgdG8uICBUaGUgVVJJIG11c3QgYmUKLQkgKiBhbiBhYnNvbHV0ZSBVUkkgd2l0aCBhIHZhbGlkIHByb3RvY29sLiAgQm90aCBmaWxlOi8gYW5kIHBsYXRmb3JtOi9yZXNvdXJjZSBwcm90b2NvbAotCSAqIGFyZSBhY2NlcHRhYmxlLiAgVGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHdpdGggYWxsIHRoZSBmaWxlcyB0aGF0IHRoZSB3c2RsIAotCSAqIGltcG9ydHMgd2lsbCBiZSBkdXBsaWNhdGVkIHVuZGVyIHRoaXMgZm9sZGVyLiAgSWYgdGhlIHRhcmdldCBmb2xkZXIgZG9lcyBub3QgZXhpc3QsIAotCSAqIGl0IHdpbGwgYmUgY3JlYXRlZC4gCi0JICogCi0JICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IGZvbGRlciBVUkkgd2hlcmUgdGhlIHdzZGwgc3RydWN0dXJlIGlzIGNvcGllZCB0by4KLQkgKiAKLQkgKiBAZGVwcmVjYXRlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldFRhcmdldEZvbGRlclVSSShTdHJpbmcgdXJpKSB7Ci0JCWlmICh1cmkgIT0gbnVsbCkKLQkJCXVyaSA9IHVyaS5yZXBsYWNlKCdcXCcsICcvJyk7Ci0JCVVSSSB1cmlPYmogPSBudWxsOwkJCi0JCXRyeSB7Ci0JCQl0cnkgewotCQkJCXVyaU9iaiA9IG5ldyBVUkkodXJpKTsKLQkJCX0KLQkJCWNhdGNoIChVUklTeW50YXhFeGNlcHRpb24gZSkgewkJCQkKLQkJCQl1cmlPYmogPSBVUkkuY3JlYXRlKFVSSUVuY29kZXIuZW5jb2RlKHVyaSwgIlVURi04IikpOwotCQkJfQotCQkJc2V0VGFyZ2V0Rm9sZGVyVVJJKHVyaU9iaik7CQkKLQkJfQotCQljYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKSB7Ci0JCQkvLyBpZ25vcmUsIHRhcmdldEZvbGRlclVSSSB3aWxsIGJlIGNoZWNrZWQgZm9yIG51bGwgbGF0ZXIKLQkJfQkJCi0JfQotCQotCS8qKgotCSAqIFNwZWNpZnkgdGhlIHRhcmdldCBmb2xkZXIgVVJJIGZvciBXU0RMQ29waWVyIHRvIGNvcHkgdGhlIHdzZGwgdG8uICBUaGUgVVJJIG11c3QgYmUKLQkgKiBhbiBhYnNvbHV0ZSBVUkkgd2l0aCBhIHZhbGlkIHByb3RvY29sLiAgQm90aCBmaWxlOi8gYW5kIHBsYXRmb3JtOi9yZXNvdXJjZSBwcm90b2NvbAotCSAqIGFyZSBhY2NlcHRhYmxlLiAgVGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHdpdGggYWxsIHRoZSBmaWxlcyB0aGF0IHRoZSB3c2RsIAotCSAqIGltcG9ydHMgd2lsbCBiZSBkdXBsaWNhdGVkIHVuZGVyIHRoaXMgZm9sZGVyLiAgSWYgdGhlIHRhcmdldCBmb2xkZXIgZG9lcyBub3QgZXhpc3QsIAotCSAqIGl0IHdpbGwgYmUgY3JlYXRlZC4gCi0JICogCi0JICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IGZvbGRlciBVUkkgd2hlcmUgdGhlIHdzZGwgc3RydWN0dXJlIGlzIGNvcGllZCB0by4gCi0JICovCi0JcHVibGljIHZvaWQgc2V0VGFyZ2V0Rm9sZGVyVVJJKFVSSSB1cmkpIHsJCQotCQl0YXJnZXRGb2xkZXJVUkkgPSB1cmk7Ci0JfQotCQotCS8qKgotCSAqIE9wdGlvbmFsbHkgc2V0IGEgbmV3IGZpbGVuYW1lIGZvciB0aGUgc3RhcnRpbmcgd3NkbCBkb2N1bWVudCB0byB1c2UgYWZ0ZXIgaXQgaXMKLQkgKiBjb3BpZWQuICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgb3JpZ2luYWwgbmFtZSBvZiB0aGUgd3NkbCBpcyB1c2VkLgotCSAqIAotCSAqIEBwYXJhbSBmaWxlbmFtZSBBIGZpbGVuYW1lLgotCSAqLwotCXB1YmxpYyB2b2lkIHNldFRhcmdldEZpbGVuYW1lKFN0cmluZyBmaWxlbmFtZSkgewotCQl0YXJnZXRGaWxlbmFtZSA9IGZpbGVuYW1lOwotCX0gCi0JCi0JLyoKLQkgKiBDb21wYXJlIHRoZSBwYXRoIHByZWZpeCB3aXRoIHRoZSBwYXRoIGluIHRoZSBpbmZvIG9iamVjdCwKLQkgKiBtb2RpZnkgdGhlIHBhdGggcHJlZml4IGFjY29yZGluZ2x5LgotCSAqLwotCXByaXZhdGUgdm9pZCB1cGRhdGVQYXRoUHJlZml4KFhNTE9iamVjdEluZm8gaW5mbykgewotCSAgCWlmIChwYXRoUHJlZml4ID09IG51bGwpCi0JICAgICAgICBwYXRoUHJlZml4ID0gaW5mby5wYXRoLnJlbW92ZUxhc3RTZWdtZW50cygxKTsKLQkgICAgZWxzZSB7Ci0JICAgIAlpbnQgbWF0Y2hpbmcgPSBwYXRoUHJlZml4Lm1hdGNoaW5nRmlyc3RTZWdtZW50cyhpbmZvLnBhdGgpOwotCSAgICAJCi0JICAgIAlpZiAobWF0Y2hpbmcgPCBwYXRoUHJlZml4LnNlZ21lbnRDb3VudCgpKQotCSAgICAJCXBhdGhQcmVmaXggPSBwYXRoUHJlZml4LnVwdG9TZWdtZW50KG1hdGNoaW5nKTsKLQkgICAgfQotCX0gICAgCQotCQotCS8qCi0JICogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBVUkkgaXMgYSByZWxhdGl2ZSBVUkkuIAotCSAqLwotCXByaXZhdGUgYm9vbGVhbiBpc1JlbGF0aXZlKFN0cmluZyB1cmkpIHsKLQkJcmV0dXJuIHVyaS5pbmRleE9mKCc6JykgPT0gLTE7Ci0JfQotCi0JLyoKLQkgKiBBbmFseXplIHRoZSB3c2RsIGRvY3VtZW50IGF0IHRoZSBnaXZlbiBVUkksIGFuZCB0cmF2ZXJzZSBhbnkgcmVsYXRpdmUgZmlsZXMgdGhhdAotCSAqIGl0IGltcG9ydHMuIENhbiBvcHRpb25hbGx5IHBhc3MgaW4gYSBwYXJzZWQgRGVmaW5pdGlvbiBpZiBvbmUncyBhdmFpbGFibGUgc28KLQkgKiB3ZSBkb24ndCBoYXZlIHRvIHBhcnNlIHRoZSB3c2RsIGFnYWluIChvdGhlcndpc2UganVzdCBwYXNzIGluIG51bGwpLiAKLQkgKi8KLQlwcml2YXRlIHZvaWQgYW5hbHl6ZVdTREwoVVJJIHVyaSwgRGVmaW5pdGlvbiBkZWZpbml0aW9uKSB0aHJvd3MgCi0JCU1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFdTRExFeGNlcHRpb24sIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIHsKLQkJCi0JCXVyaSA9IHVyaS5ub3JtYWxpemUoKTsKLQkJCi0JCS8vIGFscmVhZHkgc2VlbiB0aGlzIHdzZGwsIHNraXAKLQkJaWYgKHhtbE9iamVjdEluZm9zLmNvbnRhaW5zS2V5KHVyaS50b1N0cmluZygpKSkKLQkJCXJldHVybjsKLQkJCQkKLQkJLy8gbmVlZCB0byBwYXJzZSB0aGUgd3NkbCBvdXJzZWx2ZXMKLQkJaWYgKGRlZmluaXRpb24gPT0gbnVsbCkKLQkJCWRlZmluaXRpb24gPSBwYXJzZXIuZ2V0V1NETERlZmluaXRpb25WZXJib3NlKHVyaS50b1N0cmluZygpKTsKLQkJCi0JCS8vIHNhdmUgYSByZWZlcmVuY2UgdG8gdGhlIHN0YXJ0aW5nIHdzZGwKLQkJaWYgKHRoaXMuZGVmaW5pdGlvbiA9PSBudWxsKQotCQkJdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjsKLQkJCi0JCUlQYXRoIHBhdGggPSBuZXcgUGF0aCh1cmkuZ2V0UGF0aCgpKTsKLQkJCi0JCS8vIGEgdGFyZ2V0IGZpbGVuYW1lIHdhcyBnaXZlbiwgc28gd2UgbmVlZCB0byBtb2RpZnkgdGhlIHBhdGggd2l0aCB0aGUgbmV3IG5hbWUKLQkJaWYgKGRlZmluaXRpb24gPT0gdGhpcy5kZWZpbml0aW9uICYmIHRhcmdldEZpbGVuYW1lICE9IG51bGwpCi0JCQlwYXRoID0gcGF0aC5yZW1vdmVMYXN0U2VnbWVudHMoMSkuYXBwZW5kKHRhcmdldEZpbGVuYW1lKTsKLQkJIAkJCi0JICAgIFhNTE9iamVjdEluZm8gaW5mbyA9IG5ldyBYTUxPYmplY3RJbmZvKHBhdGgsIGRlZmluaXRpb24pOwkgICAgCi0JICAgIHhtbE9iamVjdEluZm9zLnB1dCh1cmkudG9TdHJpbmcoKSwgaW5mbyk7Ci0JICAgIHVwZGF0ZVBhdGhQcmVmaXgoaW5mbyk7Ci0JCQotCSAgICAvLyBub3cgbG9vayBhdCB3c2RsIGltcG9ydHMKLQkgICAgCi0JICAgIGZvciAoSXRlcmF0b3IgaXQgPSBkZWZpbml0aW9uLmdldEltcG9ydHMoKS52YWx1ZXMoKS5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KSB7Ci0KLQkgICAgCUxpc3QgbGlzdCA9IChMaXN0KSBpdC5uZXh0KCk7Ci0JICAgICAgCi0JICAgIAlmb3IgKEl0ZXJhdG9yIGxpc3RJdCA9IGxpc3QuaXRlcmF0b3IoKTsgbGlzdEl0Lmhhc05leHQoKTspIHsKLQkgICAgCQkKLQkJICAgICAgICBJbXBvcnQgd3NkbEltcG9ydCA9IChJbXBvcnQpIGxpc3RJdC5uZXh0KCk7Ci0JCSAgICAgICAgU3RyaW5nIHdzZGxJbXBvcnRMb2NhdGlvbiA9IHdzZGxJbXBvcnQuZ2V0TG9jYXRpb25VUkkoKTsKLQotCQkgICAgICAgIC8vIGFuYWx5emUgYW55IHJlbGF0aXZlIGltcG9ydHMgd2UgZmluZAotCQkgICAgICAgIGlmICh3c2RsSW1wb3J0TG9jYXRpb24gIT0gbnVsbCAmJiBpc1JlbGF0aXZlKHdzZGxJbXBvcnRMb2NhdGlvbikpIHsKLQotCQkgICAgICAgIAkvLyBiYWQgZm9ybSwgaW1wb3J0aW5nIHhzZCB3aXRoIHdzZGw6aW1wb3J0LCBidXQgbmVlZCB0byBoYW5kbGUKLQkJICAgICAgICAJaWYgKHdzZGxJbXBvcnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKFhTRCkpCi0JCSAgICAgICAgCQlhbmFseXplWFNEKHVyaS5yZXNvbHZlKHVyaUNyZWF0ZSh3c2RsSW1wb3J0TG9jYXRpb24pKSk7Ci0JCSAgICAgICAgCWVsc2UJCi0JCSAgICAgICAgCQlhbmFseXplV1NETCh1cmkucmVzb2x2ZSh1cmlDcmVhdGUod3NkbEltcG9ydExvY2F0aW9uKSksIG51bGwpOwotCQkgICAgICAgIH0KLQkgICAgCX0KLQkgICAgfQotCSAgICAKLQkgICAgLy8gbm93IGxvb2sgYXQgeHNkIGltcG9ydHMKLQotCSAgICBUeXBlcyB0eXBlcyA9IGRlZmluaXRpb24uZ2V0VHlwZXMoKTsKLQkgICAgCi0JICAgIC8vIHRoZXJlJ3Mgbm8gd3NkbDp0eXBlcywgd2UncmUgZG9uZQotCSAgICBpZiAodHlwZXMgPT0gbnVsbCkKLQkgICAgCXJldHVybjsKLQkgICAgICAgIAkKLSAgICAJZm9yIChJdGVyYXRvciBpdCA9IHR5cGVzLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsJCQkKLQkJCQotICAgIAkJRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaXQubmV4dCgpOyAgICAJCQotICAgIAkJRWxlbWVudCBlbGVtZW50OwotICAgIAkJCi0gICAgCQkvLyB3ZSdsbCB0cnkgdG8gcGFyc2UgYW55IFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudHMgYW5kCi0gICAgCQkvLyBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudHMgaW50byBhbiBYU0Qgc2NoZW1hICAgIAkJCi0gICAgCQkKLSAgICAJCWlmIChleHRFbGVtZW50IGluc3RhbmNlb2YgVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KQotICAgIAkJCWVsZW1lbnQgPSAoKFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbWVudCkuZ2V0RWxlbWVudCgpOwotICAgCQkJZWxzZSBpZiAoZXh0RWxlbWVudCBpbnN0YW5jZW9mIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KQotICAgCQkJCWVsZW1lbnQgPSAoKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50KS5nZXRFbGVtZW50KCk7Ci0gICAJCQllbHNlIGlmIChleHRFbGVtZW50IGluc3RhbmNlb2YgU2NoZW1hKQotICAgCQkJCWVsZW1lbnQgPSAoKFNjaGVtYSkgZXh0RWxlbWVudCkuZ2V0RWxlbWVudCgpOwotICAgCQkJZWxzZQotICAgCQkJCWNvbnRpbnVlOwotICAgIAkJCSAgICAJCQkKLQkJCXRyeSB7Ci0JCQkJWFNEU2NoZW1hIHhzZFNjaGVtYSA9IFhTRFNjaGVtYUltcGwuY3JlYXRlU2NoZW1hKGVsZW1lbnQpOwotCQkJCQotCQkJCS8vIGFuYWx5emUgdGhlIGlubGluZWQgc2NoZW1hIGF0IHRoZSBjdXJyZW50IHVyaQotCQkJCWFuYWx5emVYU0QodXJpLCB4c2RTY2hlbWEpOwotCQkJfQotCQkJY2F0Y2ggKEV4Y2VwdGlvbiB0KSB7Ci0JCQkJLy8gaWdub3JlIGFueSBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIHRoYXQgY2Fubm90IGJlIHBhcnNlZCBpbnRvIGEKLQkJCQkvLyBYU0RTY2hlbWEgaW5zdGFuY2UKLQkJCX0KLSAgICAgICAgfQotCX0KLQkKLQkvKgotCSAqIEFuYWx5emUgdGhlIHNjaGVtYSBhdCB0aGUgZ2l2ZW4gVVJJLCB0cmF2ZXJzZSBpdHMgaW1wb3J0cyBhbmQgaW5jbHVkZXMuCi0JICogVGhlIHNjaGVtYSBpbmZvcm1hdGlvbiBpcyBub3Qgc3RvcmVkIGluIFhNTE9iamVjdEluZm9zIGJlY2F1c2UgaXQncwotCSAqIGVpdGhlciBub3QgbmVjY2Vzc2FyeSAoc2NoZW1hIGlubGluZWQgaW4gYSB3c2RsKSBvciBpdCBoYXMgYWxyZWFkeQotCSAqIGJlZW4gc3RvcmVkLgotCSAqLwotCXByaXZhdGUgdm9pZCBhbmFseXplWFNEKFVSSSB1cmksIFhTRFNjaGVtYSBzY2hlbWEpIHsKLQkJCi0JCWlmIChzY2hlbWEgPT0gbnVsbCkKLQkJCXJldHVybjsKLQkJCi0JCS8vIGxvb2sgYXQgdGhlIGltcG9ydHMgYW5kIGluY2x1ZGVzCi0JICAgIAotCQlmb3IgKEl0ZXJhdG9yIGl0ID0gc2NoZW1hLmdldENvbnRlbnRzKCkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgewotCSAgICAgICAgCi0JCQlPYmplY3QgY29udGVudCA9IGl0Lm5leHQoKTsKLQkgICAgICAgIAotCQkJaWYgKCEoY29udGVudCBpbnN0YW5jZW9mIFhTRFNjaGVtYURpcmVjdGl2ZSkpCi0JCQkJY29udGludWU7Ci0JCQkJCSAgICAgICAgCi0JCQlYU0RTY2hlbWFEaXJlY3RpdmUgeHNkU2NoZW1hRGlyZWN0aXZlID0gKFhTRFNjaGVtYURpcmVjdGl2ZSkgY29udGVudDsKLQkJCVN0cmluZyB4c2RTY2hlbWFEaXJlY3RpdmVMb2NhdGlvbiA9IHhzZFNjaGVtYURpcmVjdGl2ZS5nZXRTY2hlbWFMb2NhdGlvbigpOwotCSAgICAgICAgICAKLQkJCS8vIGFuYWx5emUgYW55IHJlbGF0aXZlIGltcG9ydHMgYW5kIGluY2x1ZGVzIHdlIGZpbmQKLQkJCWlmICh4c2RTY2hlbWFEaXJlY3RpdmVMb2NhdGlvbiAhPSBudWxsICYmIGlzUmVsYXRpdmUoeHNkU2NoZW1hRGlyZWN0aXZlTG9jYXRpb24pKQotCQkJCXRyeSB7Ci0JCQkJCWFuYWx5emVYU0QodXJpLnJlc29sdmUodXJpQ3JlYXRlKHhzZFNjaGVtYURpcmVjdGl2ZUxvY2F0aW9uKSkpOwotCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJCS8vIGlnbm9yZSBhbnkgeHNkJ3Mgd2UgY2Fubm90IHJlc29sdmUKLQkJCQl9Ci0JCX0KLQl9Ci0JCi0JLyoKLQkgKiBBbmFseXplIHRoZSBzY2hlbWEgYXQgdGhlIGdpdmVuIFVSSSwgdGhlIHNjaGVtYSBpcyBwYXJzZWQgYW5kIHN0b3JlZCBpbgotCSAqIFhNTE9iamVjdEluZm9zLgotCSAqLwotCXByaXZhdGUgdm9pZCBhbmFseXplWFNEKFVSSSB1cmkpIHsKLQkJCi0JCXVyaSA9IHVyaS5ub3JtYWxpemUoKTsKLQkJCi0JCS8vIGFscmVhZHkgc2VlbiB0aGlzIHhzZCwgc2tpcCBpdAotCQlpZiAoeG1sT2JqZWN0SW5mb3MuY29udGFpbnNLZXkodXJpLnRvU3RyaW5nKCkpKQotCQkJcmV0dXJuOwotCQkKLQkJWFNEU2NoZW1hIHhzZFNjaGVtYSA9IFhTRFNjaGVtYUltcGwuZ2V0U2NoZW1hRm9yU2NoZW1hKHVyaS50b1N0cmluZygpKTsKLQotCQkvLyBpZiBzY2hlbWEgaXMgbm90IGNhY2hlZCwgcGFyc2UgaXQKLQkgICAgaWYgKHhzZFNjaGVtYSA9PSBudWxsKSB7Ci0JICAgIAlYU0RQYXJzZXIgcCA9IG5ldyBYU0RQYXJzZXIobnVsbCk7Ci0JICAgIAlJbnB1dFN0cmVhbSBpcyA9IE5ldFV0aWxzLmdldFVSTElucHV0U3RyZWFtKHVyaS50b1N0cmluZygpKTsKLQkgICAgICAKLQkgICAgCWlmIChpcyAhPSBudWxsKSB7Ci0JICAgIAkJcC5wYXJzZShpcyk7Ci0JICAgIAkJeHNkU2NoZW1hID0gcC5nZXRTY2hlbWEoKTsKLQkgICAgCX0KLQkgICAgfQotCSAgICAKLQkgICAgaWYgKHhzZFNjaGVtYSAhPSBudWxsKSB7Ci0JICAgICAgICAKLQkgICAgCVhNTE9iamVjdEluZm8gaW5mbyA9IG5ldyBYTUxPYmplY3RJbmZvKG5ldyBQYXRoKHVyaS5nZXRQYXRoKCkpLCB4c2RTY2hlbWEpOwkgICAgCQotCSAgICAJeG1sT2JqZWN0SW5mb3MucHV0KHVyaS50b1N0cmluZygpLCBpbmZvKTsKLQkgICAgCXVwZGF0ZVBhdGhQcmVmaXgoaW5mbyk7Ci0JICAgICAgCi0JICAgIAkvLyBhbmFseXplIGl0cyBpbXBvcnRzIGFuZCBpbmNsdWRlcwotCSAgICAJYW5hbHl6ZVhTRCh1cmksIHhzZFNjaGVtYSk7Ci0JICAgIH0KLQl9Ci0JCQotCS8qCi0JICogQXBwZW5kcyBhIHBhdGggdG8gYSBVUkkgYW5kIHJldHVybnMgdGhlIG5ldyBjb21iaW5lZCBVUkkgaW4gYW4gYXJyYXkgb2YgMiBlbGVtZW50cywKLQkgKiB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBpcyBpbiBkZWNvZGVkIGZvcm0gYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBpcyBpbiBlbmNvZGVkIGZvcm0uCi0JICovCi0JcHJpdmF0ZSBTdHJpbmdbXSBhcHBlbmRQYXRoVG9VUkkoVVJJIHVyaU9iaiwgSVBhdGggcGF0aCkgewotCQkKLQkJU3RyaW5nIHNjaGVtZVNwZWNpZmljUGFydCA9IHVyaU9iai5nZXRTY2hlbWVTcGVjaWZpY1BhcnQoKTsgCi0JCQotCQlpZiAoc2NoZW1lU3BlY2lmaWNQYXJ0LmVuZHNXaXRoKCIvIikpCi0JCQlwYXRoID0gcGF0aC5tYWtlUmVsYXRpdmUoKTsKLQkJZWxzZQotCQkJcGF0aCA9IHBhdGgubWFrZUFic29sdXRlKCk7Ci0JCQotCQlyZXR1cm4gbmV3IFN0cmluZ1tdIHsKLQkJCQl1cmlPYmouZ2V0U2NoZW1lKCkgKyAnOicgKyBzY2hlbWVTcGVjaWZpY1BhcnQgKyBwYXRoLAotCQkJCXVyaU9iai5nZXRTY2hlbWUoKSArICc6JyArIHVyaU9iai5nZXRSYXdTY2hlbWVTcGVjaWZpY1BhcnQoKSArIHBhdGgKLQkJfTsKLQl9Ci0JCi0JLyoKLQkgKiBXcml0ZXMgdGhlIHdzZGwgZGVmaW5pdGlvbiB0byB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHRhcmdldCBmb2xkZXIuCi0JICovCi0JcHJpdmF0ZSBTdHJpbmcgd3JpdGVYTUxPYmooSVBhdGggcGF0aCwgRGVmaW5pdGlvbiBkZWZpbml0aW9uLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cwotCQlXU0RMRXhjZXB0aW9uLCBVUklFeGNlcHRpb24sIElPRXhjZXB0aW9uLCBDb3JlRXhjZXB0aW9uIHsJCQkJCi0JCQkgIAotCSAgICBXU0RMRmFjdG9yeSB3c2RsRmFjdG9yeSA9IG5ldyBXU0RMRmFjdG9yeUltcGwoKTsJICAgIAotCSAgICBXU0RMV3JpdGVyIHdzZGxXcml0ZXIgPSB3c2RsRmFjdG9yeS5uZXdXU0RMV3JpdGVyKCk7Ci0JICAgIAotCSAgICBTdHJpbmdbXSB0YXJnZXRVUkkgPSBhcHBlbmRQYXRoVG9VUkkodGFyZ2V0Rm9sZGVyVVJJLCBwYXRoKTsKLQkgICAgCi0JICAgIE91dHB1dFN0cmVhbSBvcyA9IHVyaUZhY3RvcnkubmV3VVJJKHRhcmdldFVSSVswXSkuZ2V0T3V0cHV0U3RyZWFtKCk7CSAgICAKLQkgICAgd3NkbFdyaXRlci53cml0ZVdTREwoZGVmaW5pdGlvbiwgb3MpOwotCSAgICBvcy5jbG9zZSgpOwotCSAgICAKLQkgICAgcmV0dXJuIHRhcmdldFVSSVsxXTsKLQl9Ci0gIAotCS8qCi0JICogV3JpdGVzIHRoZSB4c2Qgc2NoZW1hIHRvIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBwYXRoLCByZWxhdGl2ZSB0byB0aGUgdGFyZ2V0IGZvbGRlci4KLQkgKi8KLQlwcml2YXRlIFN0cmluZyB3cml0ZVhNTE9iaihJUGF0aCBwYXRoLCBYU0RTY2hlbWEgeHNkU2NoZW1hLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cwotCQlUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uLCBVUklFeGNlcHRpb24sIElPRXhjZXB0aW9uLCBDb3JlRXhjZXB0aW9uIHsJCQkKLQkJCi0JCVRyYW5zZm9ybWVyIHNlcmlhbGl6ZXIgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdUcmFuc2Zvcm1lcigpOwotCQlzZXJpYWxpemVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuSU5ERU5ULCAieWVzIik7Ci0JCXNlcmlhbGl6ZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5FTkNPRElORywgIlVURi04Iik7Ci0JCXNlcmlhbGl6ZXIuc2V0T3V0cHV0UHJvcGVydHkoIntodHRwOi8veG1sLmFwYWNoZS5vcmcveHNsdH1pbmRlbnQtYW1vdW50IiwgIjIiKTsKLQkJCi0JCUVsZW1lbnQgZSA9IHhzZFNjaGVtYS5nZXRFbGVtZW50KCk7Ci0JCURPTVNvdXJjZSBkb21Tb3VyY2UgPSBuZXcgRE9NU291cmNlKGUpOwkJCi0JCQotCQlTdHJpbmdbXSB0YXJnZXRVUkkgPSBhcHBlbmRQYXRoVG9VUkkodGFyZ2V0Rm9sZGVyVVJJLCBwYXRoKTsKLQkJCi0JCU91dHB1dFN0cmVhbSBvcyA9IHVyaUZhY3RvcnkubmV3VVJJKHRhcmdldFVSSVswXSkuZ2V0T3V0cHV0U3RyZWFtKCk7Ci0JCXNlcmlhbGl6ZXIudHJhbnNmb3JtKGRvbVNvdXJjZSwgbmV3IFN0cmVhbVJlc3VsdChvcykpOwotCQlvcy5jbG9zZSgpOwotCQkKLQkJcmV0dXJuIHRhcmdldFVSSVsxXTsKLQl9ICAKLQotCS8qCi0JICogQ29tcGFyZXMgdGhlIDIgdXJpcyBhbmQgc2VlIGlmIHRoZXkgcG9pbnQgdG8gdGhlIHNhbWUgZmlsZS4gCi0JICogV2UgbmVlZCB0byBjb252ZXJ0IGJvdGggdXJpcyB0byBmaWxlOiBwcm90b2NhbCB1cmlzIGluIG9yZGVyIHRvIGNvbXBhcmUuCi0JICovCQotCXByaXZhdGUgYm9vbGVhbiBpc1NhbWVMb2NhdGlvbihTdHJpbmcgdXJpMSwgU3RyaW5nIHVyaTIpIHsKLQotCQkvLyBpZiBlaXRoZXIgdXJpIGlzIG51bGwsIHdlIGNhbm5vdCBtYWtlIGFueSBtZWFuaW5nZnVsIGNvbXBhcmlzb24KLQkJaWYgKHVyaTEgPT0gbnVsbCB8fCB1cmkyID09IG51bGwpCi0JCQlyZXR1cm4gZmFsc2U7Ci0JCXRyeSB7Ci0JCQkvL3dlIGhhdmUgYW4gZW5jb2RlZCBVUkkgYW5kIHdhbnQgdG8gY29tcGFyZSBpZiB0aGV5IHJlc29sdmUgdG8gdGhlIHNhbWUgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0KLQkJCXVyaTEgPSBVbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXIudXJpVG9Mb2NhdGlvbih1cmkxKTsKLQkJCXVyaTIgPSBVbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXIudXJpVG9Mb2NhdGlvbih1cmkyKTsKLQkJCWlmICh1cmkxID09IG51bGwgfHwgdXJpMiA9PSBudWxsIHx8IHVyaTEubGVuZ3RoKCkgPT0gMCB8fCB1cmkyLmxlbmd0aCgpID09IDApCi0JCQkJcmV0dXJuIGZhbHNlOwotCQkJcmV0dXJuIHVyaTEuZXF1YWxzKHVyaTIpOwotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JfQotCQotCS8qKgotCSAqIEV4ZWN1dGVzIHRoZSBjb3B5aW5nIGFjdGlvbi4KLQkgKiAKLQkgKiBAcGFyYW0gbW9uaXRvciBBbiBvcHRpb25hbCBwcm9ncmVzcyBtb25pdG9yLgotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBUaHJvd24gaWYgdGhlIGNvcHlpbmcgaXMgdW5zdWNjZXNzZnVsLiAgUG9zc2libGUgY2F1c2VzIGluY2x1ZGU6Ci0JICogdGFyZ2V0IGZvbGRlciBVUkkgd2FzIG5vdCBzcGVjaWZpZWQ7IHNvdXJjZSBVUkkgaGFzIGluY29ycmVjdCBmb3JtYXQ7IHByb2JsZW0gcGFyc2luZyB3c2RsIAotCSAqIG9yIHhzZCBkb2N1bWVudHM7IHByb2JsZW0gd3JpdGluZyB0byBmaWxlc3lzdGVtLgotCSAqLwotCXB1YmxpYyB2b2lkIHJ1bihJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpIHRocm93cyBDb3JlRXhjZXB0aW9uIHsKLQkJCi0JCXhtbE9iamVjdEluZm9zLmNsZWFyKCk7Ci0KLQkJLy8gdGFyZ2V0IGZvbGRlciBtdXN0IGJlIHNldAotCQlpZiAodGFyZ2V0Rm9sZGVyVVJJID09IG51bGwpCi0JCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhXc3RXU1BsdWdpbk1lc3NhZ2VzLk1TR19FUlJPUl9UQVJHRVRfRk9MREVSX05PVF9TUEVDSUZJRUQpKTsJCQotCQkJCQotICAJCXRyeSB7Ci0gIAkJCWFuYWx5emVXU0RMKHNvdXJjZVVSSSwgZGVmaW5pdGlvbik7ICAJCQkgCi0gIAkJCQotICAJCQkvLyBiZWdpbiB3cml0aW5nIG91dCBmaWxlcwotICAJCQkKLSAgCQkJSXRlcmF0b3IgaXRlciA9IHhtbE9iamVjdEluZm9zLnZhbHVlcygpLml0ZXJhdG9yKCk7IAkJCSAgCQkJCi0gIAkJCQotICAJCQl3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKLSAgCQkJCVhNTE9iamVjdEluZm8gaW5mbyA9IChYTUxPYmplY3RJbmZvKSBpdGVyLm5leHQoKTsgIAkJCQkKLSAgCQkJCUlQYXRoIHJlbFBhdGggPSBpbmZvLnBhdGgucmVtb3ZlRmlyc3RTZWdtZW50cyhwYXRoUHJlZml4LnNlZ21lbnRDb3VudCgpKTsKLSAgCQkJCQotICAJCQkJaWYgKGluZm8uY29udGVudCBpbnN0YW5jZW9mIERlZmluaXRpb24pIHsKLSAgCQkJCQlEZWZpbml0aW9uIGRlZmluaXRpb24gPSAoRGVmaW5pdGlvbikgaW5mby5jb250ZW50OwotICAJCQkJCQotICAJCQkJCS8vIGlmIHRoaXMgaXMgdGhlIHN0YXJ0aW5nIHdzZGwsIHJlbWVtYmVyIGl0cyBwYXRoIHJlbGF0aXZlIHRvIHRoZSB0YXJnZXQgZm9sZGVyCi0gIAkJCQkJaWYgKGRlZmluaXRpb24gPT0gdGhpcy5kZWZpbml0aW9uKQotICAJCQkJCQl3c2RsUmVsUGF0aCA9IHJlbFBhdGg7Ci0KLSAgCQkJCQlTdHJpbmcgdGFyZ2V0VVJJID0gd3JpdGVYTUxPYmoocmVsUGF0aCwgZGVmaW5pdGlvbiwgbW9uaXRvcik7Ci0gIAkJCQkJCi0gIAkJCQkJaWYgKGRlZmluaXRpb24gPT0gdGhpcy5kZWZpbml0aW9uICYmIGlzU2FtZUxvY2F0aW9uKHNvdXJjZVVSSS50b1N0cmluZygpLCB0YXJnZXRVUkkpKQotICAJCQkJCQlyZXR1cm47Ci0gIAkJCQl9Ci0gIAkJCQllbHNlCi0gIAkJCQkJd3JpdGVYTUxPYmoocmVsUGF0aCwgKFhTRFNjaGVtYSkgaW5mby5jb250ZW50LCBtb25pdG9yKTsgIAkJCQkJCi0gIAkJCX0gIAkJCQotICAJCX0gY2F0Y2ggKEV4Y2VwdGlvbiB0KSB7Ci0gIAkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKAotICAJCQkJCU5MUy5iaW5kKFdzdFdTUGx1Z2luTWVzc2FnZXMuTVNHX0VSUk9SX0NPUFlfV1NETCwgbmV3IFN0cmluZ1tdIHtzb3VyY2VVUkkudG9TdHJpbmcoKSwgdGFyZ2V0Rm9sZGVyVVJJLnRvU3RyaW5nKCl9KSwgdCkpOwotICAJCX0KLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcGF0aCBvZiB0aGUgc3RhcnRpbmcgd3NkbCBkb2N1bWVudCwgcmVsYXRpdmUgdG8gdGhlIHRhcmdldCBmb2xkZXIgYWZ0ZXIKLQkgKiBjb3B5aW5nIGNvbXBsZXRlcy4KLQkgKiAKLQkgKiBAcmV0dXJuIFRoZSByZWxhdGl2ZSBwYXRoIG9mIHRoZSBzdGFydGluZyB3c2RsIGRvY3VtZW50LgotCSAqLwotCXB1YmxpYyBJUGF0aCBnZXRSZWxhdGl2ZVBhdGgoKSB7Ci0JCXJldHVybiB3c2RsUmVsUGF0aDsKLQl9Ci0KLQlwcml2YXRlIHN0YXRpYyBqYXZhLm5ldC5VUkkgdXJpQ3JlYXRlKFN0cmluZyB1cmkpIHsKLQkJaWYgKHVyaSAhPSBudWxsKQotCQkJdXJpID0gdXJpLnJlcGxhY2UoJ1xcJywgJy8nKTsKLQkJdHJ5IHsKLQkJCXRyeSB7Ci0JCQkJcmV0dXJuIGphdmEubmV0LlVSSS5jcmVhdGUodXJpKTsKLQkJCX0KLQkJCWNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgewkJCQkKLQkJCQlyZXR1cm4gamF2YS5uZXQuVVJJLmNyZWF0ZShVUklFbmNvZGVyLmVuY29kZSh1cmksICJVVEYtOCIpKTsKLQkJCX0KLQkJfQotCQljYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKSB7Ci0JCQlyZXR1cm4gamF2YS5uZXQuVVJJLmNyZWF0ZSgiIik7Ci0JCX0JCi0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2ZpbmRlci9BYnN0cmFjdFdlYlNlcnZpY2VMb2NhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL0Fic3RyYWN0V2ViU2VydmljZUxvY2F0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0NDY3MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL0Fic3RyYWN0V2ViU2VydmljZUxvY2F0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxNyAgIDEyNzQ1NiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA2MjAgICAxNDc4NjIgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlcjsKLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotCi0vKioKLSAqIEBhdXRob3Igam9hbgotICogCi0gKiBJbXBsZW1lbnRhdGlvbiBvZiBJV2ViU2VydmljZUxvY2F0b3IuICBFeHRlbmRlcnMgbXVzdCBpbXBsZW1lbnQgdGhlIGFic3RyYWN0IG1ldGhvZCBnZXRXZWJTZXJ2aWNlcygpLiAgCi0gKiBUaGlzIGNsYXNzIHdpbGwgYmUgdXNlZCB0byBwcm92aWRlIG1ldGhvZHMgdXNlZnVsIHRvIGxvY2F0b3IgaW1wbGVtZW50ZXJzLiAgRXh0ZW5kZXJzIHNob3VsZCByZWdpc3RlciB0aGVpcgotICogbG9jYXRvciBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZWlyIHBsdWdpbiB1c2luZyB0aGUgb3JnLmVjbGlwc2Uud3N0LndzLmxvY2F0b3IgZXh0ZW5zaW9uIHBvaW50LiAKLSAqCi0gKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFdlYlNlcnZpY2VMb2NhdG9yIGltcGxlbWVudHMgSVdlYlNlcnZpY2VMb2NhdG9yIHsKLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KLQkgKi8KLQlwdWJsaWMgQWJzdHJhY3RXZWJTZXJ2aWNlTG9jYXRvciAoKQotCXsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGEgbGlzdCBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzLgotCSAqIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kJ3MKLQkgKiBkZWZhdWx0IGJlaGF2aW91ciBvZiByZXR1cm5pbmcgYW4gZW1wdHkgbGlzdC4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsCi0JICogb3IgbnVsbCBpZiBwcm9ncmVzcyBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqIEByZXR1cm4gQSBub24tbnVsbCBidXQgcG9zc2libHkgZW1wdHkgbGlzdCBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzCi0JICovCi0JcHVibGljIExpc3QgZ2V0V2ViU2VydmljZUNsaWVudHMgKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotCXsKLQkJcmV0dXJuIENvbGxlY3Rpb25zLkVNUFRZX0xJU1Q7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhIGxpc3Qgb2YgV2ViU2VydmljZUNsaWVudEluZm8gb2JqZWN0cy4KLQkgKiBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCdzCi0JICogZGVmYXVsdCBiZWhhdmlvdXIgb2YgcmV0dXJuaW5nIGFuIGVtcHR5IGxpc3QuCi0JICogQHBhcmFtIHByb2plY3RzIE9uZSBvciBtb3JlIHByb2plY3RzIHRvIHdoaWNoCi0JICogdGhlIHNlYXJjaCBzaG91bGQgYmUgbGltaXRlZC4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsCi0JICogb3IgbnVsbCBpZiBwcm9ncmVzcyBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqIEByZXR1cm4gQSBub24tbnVsbCBidXQgcG9zc2libHkgZW1wdHkgbGlzdCBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzCi0JICovCi0JcHVibGljIExpc3QgZ2V0V2ViU2VydmljZUNsaWVudHMgKCBJUHJvamVjdFtdIHByb2plY3RzLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotCXsKLQkJcmV0dXJuIENvbGxlY3Rpb25zLkVNUFRZX0xJU1Q7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhIGxpc3Qgb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cy4gCi0JICogU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QncwotCSAqIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHJldHVybmluZyBhbiBlbXB0eSBsaXN0LgotCSAqIEBwYXJhbSBtb25pdG9yIEEgcHJvZ3Jlc3MgbW9uaXRvciwKLQkgKiBvciBudWxsIGlmIHByb2dyZXNzIG1vbml0b3JpbmcgaXMgbm90IGRlc2lyZWQuCi0JICogQHJldHVybiBBIG5vbi1udWxsIGJ1dCBwb3NzaWJseSBlbXB0eSBsaXN0IG9mIFdlYlNlcnZpY2VJbmZvIG9iamVjdHMKLQkgKi8KLQlwdWJsaWMgTGlzdCBnZXRXZWJTZXJ2aWNlcyAoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0JewotCQlyZXR1cm4gQ29sbGVjdGlvbnMuRU1QVFlfTElTVDsgCi0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhIGxpc3Qgb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cy4gCi0JICogU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QncwotCSAqIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHJldHVybmluZyBhbiBlbXB0eSBsaXN0LgotCSAqIEBwYXJhbSBwcm9qZWN0cyBPbmUgb3IgbW9yZSBwcm9qZWN0cyB0byB3aGljaAotCSAqIHRoZSBzZWFyY2ggc2hvdWxkIGJlIGxpbWl0ZWQuCi0JICogQHBhcmFtIG1vbml0b3IgQSBwcm9ncmVzcyBtb25pdG9yLAotCSAqIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIEEgbm9uLW51bGwgYnV0IHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cwotCSAqLwotCXB1YmxpYyBMaXN0IGdldFdlYlNlcnZpY2VzICggSVByb2plY3RbXSBwcm9qZWN0cywgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLQl7Ci0JCXJldHVybiBDb2xsZWN0aW9ucy5FTVBUWV9MSVNUOyAKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL0lXZWJTZXJ2aWNlTG9jYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2ZpbmRlci9JV2ViU2VydmljZUxvY2F0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1MzMxYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL0lXZWJTZXJ2aWNlTG9jYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxNyAgIDEyNzQ1NiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA2MjAgICAxNDc4NjIgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlcjsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci0KLS8qKgotICogQGF1dGhvciBqb2FuCi0gKgotICogSW50ZXJmYWNlIGZvciBXZWIgc2VydmljZSBsb2NhdG9ycyB0aGF0IHdpbGwgYmUgcmV0cmlldmVkCi0gKiBieSB0aGUgV2ViU2VydmljZUZpbmRlci4gVGhpcyBpbnRlcmZhY2Ugc2hvdWxkIG5vdCBiZQotICogaW1wbGVtZW50ZWQgZGlyZWN0bHkuIEluc3RlYWQsIHN1YmNsYXNzZXMgc2hvdWxkIGV4dGVuZAotICogQWJzdHJhY3RXZWJTZXJ2aWNlTG9jYXRvciBhbmQgaW1wbGVtZW50IHRoZQotICogZ2V0V2ViU2VydmljZXMoKSBhbmQgZ2V0V2ViU2VydmljZUNsaWVudHMoKSBtZXRob2RzLiAKLSAqLwotcHVibGljIGludGVyZmFjZSBJV2ViU2VydmljZUxvY2F0b3IKLXsKLQkvKioKLQkgKiBSZXR1cm5zIGEgbGlzdCBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzLgotCSAqIFRoaXMgb3BlcmF0aW9uIG1heSBiZSBsb25nIHJ1bm5pbmcuCi0JICogQHBhcmFtIG1vbml0b3IgQSBwcm9ncmVzcyBtb25pdG9yLAotCSAqIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIEEgbGlzdCBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzLgotCSAqIHBvc3NpYmx5IGVtcHR5LCBwb3NzaWJseSBudWxsLgotCSAqLwotCXB1YmxpYyBMaXN0IGdldFdlYlNlcnZpY2VDbGllbnRzICggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICk7Ci0JCi0JLyoqCi0JICogUmV0dXJucyBhIGxpc3Qgb2YgV2ViU2VydmljZUNsaWVudEluZm8gb2JqZWN0cy4KLQkgKiBUaGlzIG9wZXJhdGlvbiBtYXkgYmUgbG9uZyBydW5uaW5nLgotCSAqIEBwYXJhbSBwcm9qZWN0cyBPbmUgb3IgbW9yZSBwcm9qZWN0cyB0byB3aGljaCB0aGUKLQkgKiBzZWFyY2ggc2hvdWxkIGJlIGxpbWl0ZWQuCi0JICogQHBhcmFtIG1vbml0b3IgQSBwcm9ncmVzcyBtb25pdG9yLAotCSAqIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIEEgbGlzdCBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzLgotCSAqIHBvc3NpYmx5IGVtcHR5LCBwb3NzaWJseSBudWxsLgotCSAqLwotCXB1YmxpYyBMaXN0IGdldFdlYlNlcnZpY2VDbGllbnRzICggSVByb2plY3RbXSBwcm9qZWN0cywgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICk7Ci0JCi0JLyoqCi0JICogUmV0dXJucyBhIGxpc3Qgb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cy4KLQkgKiBUaGlzIG9wZXJhdGlvbiBtYXkgYmUgbG9uZyBydW5uaW5nLgotCSAqIEBwYXJhbSBtb25pdG9yIEEgcHJvZ3Jlc3MgbW9uaXRvciwKLQkgKiBvciBudWxsIGlmIHByb2dyZXNzIG1vbml0b3JpbmcgaXMgbm90IGRlc2lyZWQuCi0JICogQHJldHVybiBBIGxpc3Qgb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cywKLQkgKiBwb3NzaWJseSBlbXB0eSwgcG9zc2libHkgbnVsbC4KLQkgKi8KLQlwdWJsaWMgTGlzdCBnZXRXZWJTZXJ2aWNlcyAoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApOwotCi0JLyoqCi0JICogUmV0dXJucyBhIGxpc3Qgb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cy4KLQkgKiBUaGlzIG9wZXJhdGlvbiBtYXkgYmUgbG9uZyBydW5uaW5nLgotCSAqIEBwYXJhbSBwcm9qZWN0cyBPbmUgb3IgbW9yZSBwcm9qZWN0cyB0byB3aGljaCB0aGUKLQkgKiBzZWFyY2ggc2hvdWxkIGJlIGxpbWl0ZWQuCi0JICogQHBhcmFtIG1vbml0b3IgQSBwcm9ncmVzcyBtb25pdG9yLAotCSAqIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIEEgbGlzdCBvZiBXZWJTZXJ2aWNlSW5mbyBvYmplY3RzLAotCSAqIHBvc3NpYmx5IGVtcHR5LCBwb3NzaWJseSBudWxsLgotCSAqLwotCXB1YmxpYyBMaXN0IGdldFdlYlNlcnZpY2VzICggSVByb2plY3RbXSBwcm9qZWN0cywgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL1dTRExVUkxTdHJpbmdXcmFwcGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL1dTRExVUkxTdHJpbmdXcmFwcGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YWJhODkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2ZpbmRlci9XU0RMVVJMU3RyaW5nV3JhcHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDgxMjA4ICAgMjU3NjE4IG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgQWRkIE1lY2hhbmlzbSBmb3IgQWRvcHRlcnMgdG8gbWFwIFNlcnZpY2VzIHRvIFdTREwgVVJMcwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlcjsKLQotcHVibGljIGNsYXNzIFdTRExVUkxTdHJpbmdXcmFwcGVyIHsKLQotCXB1YmxpYyBTdHJpbmcgd3NkbFVSTDsKLQkKLQlwdWJsaWMgV1NETFVSTFN0cmluZ1dyYXBwZXIoU3RyaW5nIHdzZGxVUkwpIHsKLQkJdGhpcy53c2RsVVJMID0gd3NkbFVSTDsKLQl9Ci0JCi0JcHVibGljIFN0cmluZyBnZXRXU0RMVVJMU3RyaW5nKCkgewotCQlyZXR1cm4gd3NkbFVSTDsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL1dlYlNlcnZpY2VDYXRlZ29yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2ZpbmRlci9XZWJTZXJ2aWNlQ2F0ZWdvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1ODUzZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL1dlYlNlcnZpY2VDYXRlZ29yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMTcgICAxMjc0NTYgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci0KLS8qKgotICogQGF1dGhvciBjYnJlYWxleQotICogQSBXZWJTZXJ2aWNlQ2F0ZWdvcnkgcmVwcmVzZW50cyBhIGRlZmluZWQgY2F0ZWdvcnkgb2YKLSAqIFdlYiBzZXJ2aWNlIGxvY2F0b3JzIHBsdWdnZWQgaW50byB0aGUgV2ViU2VydmljZUZpbmRlcgotICogZnJhbWV3b3JrLiBFYWNoIGNhdGVnb3J5IGhhcyBhIG5vbi10cmFuc2xhdGFibGUgaWRlbnRpZmllciwKLSAqIGFuIG9wdGlvbmFsIG5vbi10cmFuc2xhdGFibGUgcGFyZW50IGNhdGVnb3J5IGlkZW50aWZpZXIKLSAqIChhYnNlbnQgZm9yIHJvb3QgY2F0ZWdvcmllcyksIGEgdHJhbnNsYXRhYmxlIHNob3J0IGxhYmVsLAotICogYSB0cmFuc2xhdGFibGUgbG9uZyBkZXNjcmlwdGlvbiBhbmQgYW4gaWNvbi4KLSAqIEBzZWUgV2ViU2VydmljZUZpbmRlciNnZXRXZWJTZXJ2aWNlQ2F0ZWdvcmllcygpIAotICovCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZUNhdGVnb3J5Ci17Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJJQlVURV9JRCA9ICJpZCI7IC8vJE5PTi1OTFMtMSQKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUklCVVRFX0NBVEVHT1JZID0gImNhdGVnb3J5IjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSSUJVVEVfTEFCRUwgPSAibGFiZWwiOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJJQlVURV9ERVNDUklQVElPTiA9ICJkZXNjcmlwdGlvbiI7IC8vJE5PTi1OTFMtMSQKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUklCVVRFX0lDT04gPSAiaWNvbiI7IC8vJE5PTi1OTFMtMSQKLQkKLQlwcml2YXRlIElDb25maWd1cmF0aW9uRWxlbWVudCBpY2VfOwotCQotCS8qKgotCSAqIENvbnN0cnVjdHMgYSBuZXcgV2ViU2VydmljZUNhdGVnb3J5IGZvciB0aGUgZ2l2ZW4KLQkgKiBjb25maWd1cmF0aW9uIGVsZW1lbnQgZnJvbSB0aGUgZXh0ZW5zaW9uIHJlZ2lzdHJ5LgotCSAqIEBwYXJhbSBpY2UgVGhlIGNvbmZpZ3VyYXRpb24gZWxlbWVudCBvbiB3aGljaCB0aGlzCi0JICogbmV3IFdlYlNlcnZpY2VDYXRlZ29yeSBpcyBiYXNlZC4gCi0JICovCi0JcHVibGljIFdlYlNlcnZpY2VDYXRlZ29yeSAoIElDb25maWd1cmF0aW9uRWxlbWVudCBpY2UgKQotCXsKLQkJaWNlXyA9IGljZTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbm9uLXRyYW5zbGF0YWJsZSBpZGVudGlmaWVyIG9mIHRoaXMgY2F0ZWdvcnkuCi0JICogQHJldHVybiBUaGUgbm9uLXRyYW5zbGF0YWJsZSBpZGVudGlmaWVyIG9mIHRoaXMgY2F0ZWdvcnkuCi0JICogVGhpcyBzaG91bGQgbmV2ZXIgYmUgbnVsbC4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldElkICgpCi0JewotCQlyZXR1cm4gaWNlXy5nZXRBdHRyaWJ1dGVBc0lzKEFUVFJJQlVURV9JRCk7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIG5vbi10cmFuc2xhdGFibGUgaWRlbnRpZmllciBvZiB0aGlzIGNhdGVnb3J5J3MKLQkgKiBpbW1lZGlhdGUgcGFyZW50IGNhdGVnb3J5LCBvciBudWxsIGlmIHRoaXMgaXMgYSByb290IGNhdGVnb3J5Ci0JICogYW5kLCBhcyBzdWNoLCBoYXMgbm8gcGFyZW50IGNhdGVnb3J5LgotCSAqIEByZXR1cm4gVGhlIG5vbi10cmFuc2xhdGFibGUgaWRlbnRpZmllciBvZiB0aGlzIGNhdGVnb3J5J3MKLQkgKiBwYXJlbnQsIG9yIG51bGwgaWYgdGhlcmUgaXMgbm9uZS4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFBhcmVudElkICgpCi0JewotCQlyZXR1cm4gaWNlXy5nZXRBdHRyaWJ1dGVBc0lzKEFUVFJJQlVURV9DQVRFR09SWSk7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdGhpcyBjYXRlZ29yeSdzIGltbWVkaWF0ZSBwYXJlbnQgV2ViU2VydmljZUNhdGVnb3J5LCBvcgotCSAqIG51bGwgaWYgdGhpcyBpcyBhIHJvb3QgY2F0ZWdvcnkgYW5kLCBhcyBzdWNoLCBoYXMgbm8gcGFyZW50IGNhdGVnb3J5LgotCSAqIEByZXR1cm4gVGhpcyBjYXRlZ29yeSdzIGltbWVkaWF0ZSBwYXJlbnQgV2ViU2VydmljZUNhdGVnb3J5LCBvcgotCSAqIG51bGwgaWYgdGhlcmUgaXMgbm9uZS4KLQkgKi8KLQlwdWJsaWMgV2ViU2VydmljZUNhdGVnb3J5IGdldFBhcmVudCAoKQotCXsKLQkJcmV0dXJuIFdlYlNlcnZpY2VGaW5kZXIuaW5zdGFuY2UoKS5nZXRXZWJTZXJ2aWNlQ2F0ZWdvcnlCeUlkKGdldFBhcmVudElkKCkpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBpbnRlcm5hdGlvbmFsaXplZCBzaG9ydCBsYWJlbCBvZiB0aGlzIGNhdGVnb3J5LAotCSAqIG9yIG51bGwgaWYgdGhlcmUgaXMgbm9uZS4gTm90ZSB0aGF0IHVzZXIgaW50ZXJmYWNlcyBtYXkKLQkgKiBjaG9vc2UgdG8gYnlwYXNzIGNhdGVnb3JpZXMgdGhhdCBkbyBub3QgaGF2ZSBhIGxhYmVsLgotCSAqIEByZXR1cm4gVGhlIGludGVybmF0aW9uYWxpemVkIHNob3J0IGxhYmVsIG9mIHRoaXMgY2F0ZWdvcnksCi0JICogb3IgbnVsbCBpZiB0aGVyZSBpcyBub25lLgotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0TGFiZWwgKCkKLQl7Ci0JCXJldHVybiBpY2VfLmdldEF0dHJpYnV0ZUFzSXMoQVRUUklCVVRFX0xBQkVMKTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgaW50ZXJuYXRpb25hbGl6ZWQgZGVzY3JpcHRpb24gb2YgdGhpcyBjYXRlZ29yeSwKLQkgKiBvciBudWxsIGlmIHRoZXJlIGlzIG5vbmUuCi0JICogQHJldHVybiBUaGUgaW50ZXJuYXRpb25hbGl6ZWQgZGVzY3JpcHRpb24gb2YgdGhpcyBjYXRlZ29yeSwKLQkgKiBvciBudWxsIGlmIHRoZXJlIGlzIG5vbmUuCi0JICovCi0JcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbiAoKQotCXsKLQkJcmV0dXJuIGljZV8uZ2V0QXR0cmlidXRlQXNJcyhBVFRSSUJVVEVfREVTQ1JJUFRJT04pOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBpY29uIG9mIHRoaXMgY2F0ZWdvcnksIG9yIG51bGwgaWYgdGhlcmUgaXMgbm9uZS4KLQkgKiBAcmV0dXJuIFRoZSBpY29uIG9mIHRoaXMgY2F0ZWdvcnksIG9yIG51bGwgaWYgdGhlcmUgaXMgbm9uZS4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldEljb24gKCkKLQl7Ci0JCXJldHVybiBpY2VfLmdldEF0dHJpYnV0ZUFzSXMoQVRUUklCVVRFX0lDT04pOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NmaW5kZXIvV2ViU2VydmljZUZpbmRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2ZpbmRlci9XZWJTZXJ2aWNlRmluZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMGQ5OWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2ZpbmRlci9XZWJTZXJ2aWNlRmluZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxNyAgIDEyNzQ1NiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA2MjAgICAxNDc4NjIgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlcjsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci0KLS8qKgotICogQGF1dGhvciBqb2FuCi0gKgotICogV2ViU2VydmljZUZpbmRlciBpcyBhIHNpbmdsZXRvbiB3aGljaCBmaW5kcyBhbGwgZXh0ZW5kZXJzIGFuZCByZXR1cm5zIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIFdlYlNlcnZpY2VJbmZvIG9iamVjdHMuCi0gKiBGaW5kcyB3ZWIgc2VydmljZXMgYnkgY2FsbGluZyBsb2NhdG9ycyBleHRlbmRpbmcge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlci5BYnN0cmFjdFdlYlNlcnZpY2VMb2NhdG9yfSAKLSAqIHdoaWNoIGhhdmUgYmVlbiByZWdpc3RlcmVkIHdpdGgge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2ZpbmRlci5XZWJTZXJ2aWNlTG9jYXRvclJlZ2lzdHJ5fS4KLSAqLwotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VGaW5kZXIgewotCi0JcHJpdmF0ZSBzdGF0aWMgV2ViU2VydmljZUZpbmRlciBpbnN0YW5jZSA9IG51bGw7Ci0KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTUVOVF9MT0NBVE9SID0gIndlYlNlcnZpY2VMb2NhdG9yIjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNRU5UX0NBVEVHT1JZID0gIndlYlNlcnZpY2VMb2NhdG9yQ2F0ZWdvcnkiOyAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJJQlVURV9JRCA9ICJpZCI7IC8vJE5PTi1OTFMtMSQKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUklCVVRFX0NMQVNTID0gImNsYXNzIjsgLy8kTk9OLU5MUy0xJAotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSSUJVVEVfQ0FURUdPUlkgPSAiY2F0ZWdvcnkiOyAvLyROT04tTkxTLTEkCi0vLwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUklCVVRFX0xBQkVMID0gImxhYmVsIjsgLy8kTk9OLU5MUy0xJAotLy8JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJJQlVURV9ERVNDUklQVElPTiA9ICJkZXNjcmlwdGlvbiI7IC8vJE5PTi1OTFMtMSQKLS8vCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSSUJVVEVfSUNPTiA9ICJpY29uIjsgLy8kTk9OLU5MUy0xJAotCi0JLyoKLQkgKiBQdWJsaWMgY29uc3RydWN0aW9uIGlzIG5vdCBhbGxvd2VkLgotCSAqIFVzZSBXZWJTZXJ2aWNlRmluZGVyLmluc3RhbmNlKCkuCi0JICovCi0JcHJpdmF0ZSBXZWJTZXJ2aWNlRmluZGVyICgpCQotCXsKLQkJc3VwZXIoKTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gb2YgPGNvZGU+V2ViU2VydmljZUZpbmRlcjwvY29kZT4uCi0JICogQHJldHVybiBUaGUgc2luZ2xldG9uIG9mIDxjb2RlPldlYlNlcnZpY2VGaW5kZXI8L2NvZGU+LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgV2ViU2VydmljZUZpbmRlciBpbnN0YW5jZSAoKQotCXsKLQkJaWYgKGluc3RhbmNlID09IG51bGwpCi0JCXsKLQkJCWluc3RhbmNlID0gbmV3IFdlYlNlcnZpY2VGaW5kZXIoKTsKLQkJfQotCQlyZXR1cm4gaW5zdGFuY2U7Ci0JfQotCQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIG9mIFdlYlNlcnZpY2VJbmZvIG9iamVjdHMgd2hpY2ggcmVwcmVzZW50IHdlYiBzZXJ2aWNlcyBmb3VuZCBieSBsb2NhdG9ycyB0aGF0Ci0JICogaGF2ZSByZWdpc3RlcmVkIHVzaW5nIHRoZSBvcmcuZWNsaXBzZS53c3Qud3MubG9jYXRvciBleHRlbnNpb24gcG9pbnQuICBDdXJyZW50bHkgcmV0dXJucyBhbGwgd2ViIAotCSAqIHNlcnZpY2VzIGZvdW5kIGZvciBhbGwgcmVnaXN0ZXJlZCBsb2NhdG9ycy4gIExvY2F0b3JzIG11c3QgZXh0ZW5kIHtAbGluayBBYnN0cmFjdFdlYlNlcnZpY2VMb2NhdG9yfS4KLQkgKiBDYWxsZXJzIGNhbiB1c2UgdGhlIGdldHRlciBtZXRob2RzIG9uIHRoZSBXZWJTZXJ2aWNlSW5mbyBvYmplY3QgdG8gcmV0cmlldmUgaW5mb3JtYXRpb24gb24gdGhlIAotCSAqIHdlYiBzZXJ2aWNlcyBmb3VuZC4gIFRoZSBXZWJTZXJ2aWNlRmluZGVyIGNhbm5vdCBndWFyYW50ZWUgdGhlIGxldmVsIG9mIGRldGFpbCBjb250YWluZWQgaW4gV2ViU2VydmljZUluZm8KLQkgKiBvYmplY3RzIHJldHVybmVkLiAgVGhpcyBpcyBsZWZ0IHRvIHRoZSBsb2NhdG9yIGltcGxlbWVudGF0aW9ucy4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIEFuIGl0ZXJhdG9yIG9mIFdlYlNlcnZpY2VJbmZvIG9iamVjdHMsIG5ldmVyIG51bGwuCi0JICovCi0JcHVibGljIEl0ZXJhdG9yIGdldFdlYlNlcnZpY2VzICggSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLQl7Ci0JCXJldHVybiBnZXRXZWJTZXJ2aWNlc0J5Q2F0ZWdvcnlJZChudWxsLG1vbml0b3IpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIG9mIFdlYlNlcnZpY2VJbmZvIG9iamVjdHMgd2hpY2ggcmVwcmVzZW50IHdlYiBzZXJ2aWNlcyBmb3VuZCBieSBsb2NhdG9ycyB0aGF0Ci0JICogaGF2ZSByZWdpc3RlcmVkIHVzaW5nIHRoZSBvcmcuZWNsaXBzZS53c3Qud3MubG9jYXRvciBleHRlbnNpb24gcG9pbnQuICBDdXJyZW50bHkgcmV0dXJucyBhbGwgd2ViIAotCSAqIHNlcnZpY2VzIGZvdW5kIGluIHRoZSBjb250ZXh0IG9mIHRoZSBnaXZlbiBwcm9qZWN0cyBmb3IgYWxsIHJlZ2lzdGVyZWQgbG9jYXRvcnMuCi0JICogTG9jYXRvcnMgbXVzdCBleHRlbmQge0BsaW5rIEFic3RyYWN0V2ViU2VydmljZUxvY2F0b3J9LgotCSAqIENhbGxlcnMgY2FuIHVzZSB0aGUgZ2V0dGVyIG1ldGhvZHMgb24gdGhlIFdlYlNlcnZpY2VJbmZvIG9iamVjdCB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgCi0JICogd2ViIHNlcnZpY2VzIGZvdW5kLiAgVGhlIFdlYlNlcnZpY2VGaW5kZXIgY2Fubm90IGd1YXJhbnRlZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGNvbnRhaW5lZCBpbiBXZWJTZXJ2aWNlSW5mbwotCSAqIG9iamVjdHMgcmV0dXJuZWQuICBUaGlzIGlzIGxlZnQgdG8gdGhlIGxvY2F0b3IgaW1wbGVtZW50YXRpb25zLgotCSAqIEBwYXJhbSBtb25pdG9yIEEgcHJvZ3Jlc3MgbW9uaXRvciwgb3IgbnVsbCBpZiBwcm9ncmVzcyBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqIEByZXR1cm4gQW4gaXRlcmF0b3Igb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cywgbmV2ZXIgbnVsbC4KLQkgKi8KLQlwdWJsaWMgSXRlcmF0b3IgZ2V0V2ViU2VydmljZXMgKCBJUHJvamVjdFtdIHByb2plY3RzLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotCXsKLQkJcmV0dXJuIGdldFdlYlNlcnZpY2VzQnlDYXRlZ29yeUlkKG51bGwscHJvamVjdHMsbW9uaXRvcik7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgYW4gaXRlcmF0b3Igb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cyB3aGljaCByZXByZXNlbnQgd2ViIHNlcnZpY2VzIGZvdW5kIGJ5IGxvY2F0b3JzIHRoYXQKLQkgKiBoYXZlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlIG9yZy5lY2xpcHNlLndzdC53cy5sb2NhdG9yIGV4dGVuc2lvbiBwb2ludCB1bmRlciB0aGUgZ2l2ZW4gY2F0ZWdvcnkuCi0JICogTG9jYXRvcnMgbXVzdCBleHRlbmQge0BsaW5rIEFic3RyYWN0V2ViU2VydmljZUxvY2F0b3J9LgotCSAqIENhbGxlcnMgY2FuIHVzZSB0aGUgZ2V0dGVyIG1ldGhvZHMgb24gdGhlIFdlYlNlcnZpY2VJbmZvIG9iamVjdCB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgCi0JICogd2ViIHNlcnZpY2VzIGZvdW5kLiAgVGhlIFdlYlNlcnZpY2VGaW5kZXIgY2Fubm90IGd1YXJhbnRlZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGNvbnRhaW5lZCBpbiBXZWJTZXJ2aWNlSW5mbwotCSAqIG9iamVjdHMgcmV0dXJuZWQuICBUaGlzIGlzIGxlZnQgdG8gdGhlIGxvY2F0b3IgaW1wbGVtZW50YXRpb25zLgotCSAqIEBwYXJhbSBjYXRlZ29yeSBUaGUgY2F0ZWdvcnkgb2YgbG9jYXRvcnMgdG8gdXNlLgotCSAqIEBwYXJhbSBtb25pdG9yIEEgcHJvZ3Jlc3MgbW9uaXRvciwgb3IgbnVsbCBpZiBwcm9ncmVzcyBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqIEByZXR1cm4gQW4gaXRlcmF0b3Igb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cywgbmV2ZXIgbnVsbC4KLQkgKi8KLQlwdWJsaWMgSXRlcmF0b3IgZ2V0V2ViU2VydmljZXNCeUNhdGVnb3J5ICggV2ViU2VydmljZUNhdGVnb3J5IGNhdGVnb3J5LCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgICkKLQl7Ci0JCXJldHVybiBnZXRXZWJTZXJ2aWNlc0J5Q2F0ZWdvcnlJZChjYXRlZ29yeSA9PSBudWxsID8gbnVsbCA6IGNhdGVnb3J5LmdldElkKCksbW9uaXRvcik7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlSW5mbyBvYmplY3RzIHdoaWNoIHJlcHJlc2VudCB3ZWIgc2VydmljZXMgZm91bmQgYnkgbG9jYXRvcnMgdGhhdAotCSAqIGhhdmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUgb3JnLmVjbGlwc2Uud3N0LndzLmxvY2F0b3IgZXh0ZW5zaW9uIHBvaW50IHVuZGVyIHRoZSBnaXZlbiBjYXRlZ29yeS4KLQkgKiBUaGUgc2VhcmNoIGlzIGNvbnN0cmFpbmVkIHRvIHRoZSBnaXZlbiBzZXQgb2Ygb25lIG9yIG1vcmUgcHJvamVjdHMuCi0JICogTG9jYXRvcnMgbXVzdCBleHRlbmQge0BsaW5rIEFic3RyYWN0V2ViU2VydmljZUxvY2F0b3J9LgotCSAqIENhbGxlcnMgY2FuIHVzZSB0aGUgZ2V0dGVyIG1ldGhvZHMgb24gdGhlIFdlYlNlcnZpY2VJbmZvIG9iamVjdCB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgCi0JICogd2ViIHNlcnZpY2VzIGZvdW5kLiAgVGhlIFdlYlNlcnZpY2VGaW5kZXIgY2Fubm90IGd1YXJhbnRlZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGNvbnRhaW5lZCBpbiBXZWJTZXJ2aWNlSW5mbwotCSAqIG9iamVjdHMgcmV0dXJuZWQuICBUaGlzIGlzIGxlZnQgdG8gdGhlIGxvY2F0b3IgaW1wbGVtZW50YXRpb25zLgotCSAqIEBwYXJhbSBjYXRlZ29yeSBUaGUgY2F0ZWdvcnkgb2YgbG9jYXRvcnMgdG8gdXNlLgotCSAqIEBwYXJhbSBtb25pdG9yIEEgcHJvZ3Jlc3MgbW9uaXRvciwgb3IgbnVsbCBpZiBwcm9ncmVzcyBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqIEByZXR1cm4gQW4gaXRlcmF0b3Igb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cywgbmV2ZXIgbnVsbC4KLQkgKi8KLQlwdWJsaWMgSXRlcmF0b3IgZ2V0V2ViU2VydmljZXNCeUNhdGVnb3J5ICggV2ViU2VydmljZUNhdGVnb3J5IGNhdGVnb3J5LCBJUHJvamVjdFtdIHByb2plY3RzLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgICkKLQl7Ci0JCXJldHVybiBnZXRXZWJTZXJ2aWNlc0J5Q2F0ZWdvcnlJZChjYXRlZ29yeSA9PSBudWxsID8gbnVsbCA6IGNhdGVnb3J5LmdldElkKCkscHJvamVjdHMsbW9uaXRvcik7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlSW5mbyBvYmplY3RzIHdoaWNoIHJlcHJlc2VudCB3ZWIgc2VydmljZXMgZm91bmQgYnkgbG9jYXRvcnMgdGhhdAotCSAqIGhhdmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUgb3JnLmVjbGlwc2Uud3N0LndzLmxvY2F0b3IgZXh0ZW5zaW9uIHBvaW50IHVuZGVyIHRoZSBnaXZlbiBjYXRlZ29yeS4KLQkgKiBMb2NhdG9ycyBtdXN0IGV4dGVuZCB7QGxpbmsgQWJzdHJhY3RXZWJTZXJ2aWNlTG9jYXRvcn0uCi0JICogQ2FsbGVycyBjYW4gdXNlIHRoZSBnZXR0ZXIgbWV0aG9kcyBvbiB0aGUgV2ViU2VydmljZUluZm8gb2JqZWN0IHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIG9uIHRoZSAKLQkgKiB3ZWIgc2VydmljZXMgZm91bmQuICBUaGUgV2ViU2VydmljZUZpbmRlciBjYW5ub3QgZ3VhcmFudGVlIHRoZSBsZXZlbCBvZiBkZXRhaWwgY29udGFpbmVkIGluIFdlYlNlcnZpY2VJbmZvCi0JICogb2JqZWN0cyByZXR1cm5lZC4gIFRoaXMgaXMgbGVmdCB0byB0aGUgbG9jYXRvciBpbXBsZW1lbnRhdGlvbnMuCi0JICogQHBhcmFtIGNhdGVnb3J5SWQgVGhlIGNhdGVnb3J5IG9mIGxvY2F0b3JzIHRvIHVzZS4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIEFuIGl0ZXJhdG9yIG9mIFdlYlNlcnZpY2VJbmZvIG9iamVjdHMsIG5ldmVyIG51bGwuCi0JICovCi0JcHVibGljIEl0ZXJhdG9yIGdldFdlYlNlcnZpY2VzQnlDYXRlZ29yeUlkICggU3RyaW5nIGNhdGVnb3J5SWQsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0JewotCQlyZXR1cm4gZ2V0V2ViU2VydmljZXNCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZCxudWxsLG1vbml0b3IpOwkKLQl9IAotCi0JLyoqCi0JICogUmV0dXJucyBhbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlSW5mbyBvYmplY3RzIHdoaWNoIHJlcHJlc2VudCB3ZWIgc2VydmljZXMgZm91bmQgYnkgbG9jYXRvcnMgdGhhdAotCSAqIGhhdmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUgb3JnLmVjbGlwc2Uud3N0LndzLmxvY2F0b3IgZXh0ZW5zaW9uIHBvaW50IHVuZGVyIHRoZSBnaXZlbiBjYXRlZ29yeS4KLQkgKiBUaGUgc2VhcmNoIGlzIGNvbnN0cmFpbmVkIHRvIHRoZSBnaXZlbiBzZXQgb2Ygb25lIG9yIG1vcmUgcHJvamVjdHMuCi0JICogTG9jYXRvcnMgbXVzdCBleHRlbmQge0BsaW5rIEFic3RyYWN0V2ViU2VydmljZUxvY2F0b3J9LgotCSAqIENhbGxlcnMgY2FuIHVzZSB0aGUgZ2V0dGVyIG1ldGhvZHMgb24gdGhlIFdlYlNlcnZpY2VJbmZvIG9iamVjdCB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgCi0JICogd2ViIHNlcnZpY2VzIGZvdW5kLiAgVGhlIFdlYlNlcnZpY2VGaW5kZXIgY2Fubm90IGd1YXJhbnRlZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGNvbnRhaW5lZCBpbiBXZWJTZXJ2aWNlSW5mbwotCSAqIG9iamVjdHMgcmV0dXJuZWQuICBUaGlzIGlzIGxlZnQgdG8gdGhlIGxvY2F0b3IgaW1wbGVtZW50YXRpb25zLgotCSAqIEBwYXJhbSBjYXRlZ29yeUlkIFRoZSBjYXRlZ29yeSBvZiBsb2NhdG9ycyB0byB1c2UuCi0JICogQHBhcmFtIG1vbml0b3IgQSBwcm9ncmVzcyBtb25pdG9yLCBvciBudWxsIGlmIHByb2dyZXNzIG1vbml0b3JpbmcgaXMgbm90IGRlc2lyZWQuCi0JICogQHJldHVybiBBbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlSW5mbyBvYmplY3RzLCBuZXZlciBudWxsLgotCSAqLwotCXB1YmxpYyBJdGVyYXRvciBnZXRXZWJTZXJ2aWNlc0J5Q2F0ZWdvcnlJZCAoIFN0cmluZyBjYXRlZ29yeUlkLCBJUHJvamVjdFtdIHByb2plY3RzLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotCXsKLQkJTGlua2VkTGlzdCB3ZWJTZXJ2aWNlcyA9IG5ldyBMaW5rZWRMaXN0KCk7Ci0JCVdlYlNlcnZpY2VMb2NhdG9yUmVnaXN0cnkgd3NsciA9IFdlYlNlcnZpY2VMb2NhdG9yUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKTsKLQkJSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gcmVnRWxlbWVudHMgPSB3c2xyLmdldENvbmZpZ0VsZW1lbnRzKCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgcmVnRWxlbWVudHMubGVuZ3RoOyBpKyspCi0JCXsKLQkJCWlmIChFTEVNRU5UX0xPQ0FUT1IuZXF1YWxzKHJlZ0VsZW1lbnRzW2ldLmdldE5hbWUoKSkpCi0JCQl7Ci0JCQkJdHJ5Ci0JCQkJewotCQkJCQlpZiAoY2F0ZWdvcnlJZCA9PSBudWxsIHx8IGNhdGVnb3J5SWQuZXF1YWxzKHJlZ0VsZW1lbnRzW2ldLmdldEF0dHJpYnV0ZUFzSXMoQVRUUklCVVRFX0NBVEVHT1JZKSkpCi0JCQkJCXsKLQkJCQkJCU9iamVjdCBvYmogPSByZWdFbGVtZW50c1tpXS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKEFUVFJJQlVURV9DTEFTUyk7Ci0JCQkJCQlpZiAob2JqIGluc3RhbmNlb2YgSVdlYlNlcnZpY2VMb2NhdG9yKQotCQkJCQkJewotCQkJCQkJCUlXZWJTZXJ2aWNlTG9jYXRvciB3c2wgPSAoSVdlYlNlcnZpY2VMb2NhdG9yKW9iajsKLQkJCQkJCQlMaXN0IHdzTGlzdCA9IHByb2plY3RzID09IG51bGwgPyB3c2wuZ2V0V2ViU2VydmljZXMobW9uaXRvcikgOiB3c2wuZ2V0V2ViU2VydmljZXMocHJvamVjdHMsbW9uaXRvcik7Ci0JCQkJCQkJaWYgKHdzTGlzdCAhPSBudWxsKQotCQkJCQkJCXsKLQkJCQkJCQkJd2ViU2VydmljZXMuYWRkQWxsKHdzTGlzdCk7Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQl9Ci0JCQkJfSAKLQkJCQljYXRjaCAoQ29yZUV4Y2VwdGlvbiBleCkKLQkJCQl7Ci0JCQkJCS8vIFF1aWV0bHkgYnlwYXNzIGFueSBJV2ViU2VydmljZUxvY2F0b3JzIHRoYXQgZmFpbGVkIHRvIGJlIGxvYWRlZC4KLQkJCQl9Ci0JCQl9Ci0JCX0gCi0JCXJldHVybiB3ZWJTZXJ2aWNlcy5pdGVyYXRvcigpOwkKLQl9IAotCi0JLyoqCi0JICogUmV0dXJucyBhbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzIHdoaWNoIHJlcHJlc2VudCB3ZWIgc2VydmljZSBjbGllbnRzIGZvdW5kIGJ5IGxvY2F0b3JzIHRoYXQKLQkgKiBoYXZlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlIG9yZy5lY2xpcHNlLndzdC53cy5sb2NhdG9yIGV4dGVuc2lvbiBwb2ludC4gIEN1cnJlbnRseSByZXR1cm5zIGFsbCB3ZWIgCi0JICogc2VydmljZSBjbGllbnRzIGZvdW5kIGZvciBhbGwgcmVnaXN0ZXJlZCBsb2NhdG9ycy4gIExvY2F0b3JzIG11c3QgZXh0ZW5kIHtAbGluayBBYnN0cmFjdFdlYlNlcnZpY2VMb2NhdG9yfS4KLQkgKiBDYWxsZXJzIGNhbiB1c2UgdGhlIGdldHRlciBtZXRob2RzIG9uIHRoZSBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3QgdG8gcmV0cmlldmUgaW5mb3JtYXRpb24gb24gdGhlIAotCSAqIHdlYiBzZXJ2aWNlIGNsaWVudHMgZm91bmQuICBUaGUgV2ViU2VydmljZUZpbmRlciBjYW5ub3QgZ3VhcmFudGVlIHRoZSBsZXZlbCBvZiBkZXRhaWwgY29udGFpbmVkIGluIFdlYlNlcnZpY2VDbGllbnRJbmZvCi0JICogb2JqZWN0cyByZXR1cm5lZC4gIFRoaXMgaXMgbGVmdCB0byB0aGUgbG9jYXRvciBpbXBsZW1lbnRhdGlvbnMuCi0JICogQHBhcmFtIG1vbml0b3IgQSBwcm9ncmVzcyBtb25pdG9yLCBvciBudWxsIGlmIHByb2dyZXNzIG1vbml0b3JpbmcgaXMgbm90IGRlc2lyZWQuCi0JICogQHJldHVybiBBbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzLCBuZXZlciBudWxsLgotCSAqLwotCXB1YmxpYyBJdGVyYXRvciBnZXRXZWJTZXJ2aWNlQ2xpZW50cyAoIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0JewotCQlyZXR1cm4gZ2V0V2ViU2VydmljZUNsaWVudHNCeUNhdGVnb3J5SWQobnVsbCxtb25pdG9yKTsKLQl9Ci0JCi0JLyoqCi0JICogUmV0dXJucyBhbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzIHdoaWNoIHJlcHJlc2VudCB3ZWIgc2VydmljZSBjbGllbnRzIGZvdW5kIGJ5IGxvY2F0b3JzIHRoYXQKLQkgKiBoYXZlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlIG9yZy5lY2xpcHNlLndzdC53cy5sb2NhdG9yIGV4dGVuc2lvbiBwb2ludC4gIEN1cnJlbnRseSByZXR1cm5zIGFsbCB3ZWIgCi0JICogc2VydmljZSBjbGllbnRzIGZvdW5kIGZvciBhbGwgcmVnaXN0ZXJlZCBsb2NhdG9ycyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZ2l2ZW4gcHJvamVjdHMuCi0JICogTG9jYXRvcnMgbXVzdCBleHRlbmQge0BsaW5rIEFic3RyYWN0V2ViU2VydmljZUxvY2F0b3J9LgotCSAqIENhbGxlcnMgY2FuIHVzZSB0aGUgZ2V0dGVyIG1ldGhvZHMgb24gdGhlIFdlYlNlcnZpY2VDbGllbnRJbmZvIG9iamVjdCB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgCi0JICogd2ViIHNlcnZpY2UgY2xpZW50cyBmb3VuZC4gIFRoZSBXZWJTZXJ2aWNlRmluZGVyIGNhbm5vdCBndWFyYW50ZWUgdGhlIGxldmVsIG9mIGRldGFpbCBjb250YWluZWQgaW4gV2ViU2VydmljZUNsaWVudEluZm8KLQkgKiBvYmplY3RzIHJldHVybmVkLiAgVGhpcyBpcyBsZWZ0IHRvIHRoZSBsb2NhdG9yIGltcGxlbWVudGF0aW9ucy4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIEFuIGl0ZXJhdG9yIG9mIFdlYlNlcnZpY2VDbGllbnRJbmZvIG9iamVjdHMsIG5ldmVyIG51bGwuCi0JICovCi0JcHVibGljIEl0ZXJhdG9yIGdldFdlYlNlcnZpY2VDbGllbnRzICggSVByb2plY3RbXSBwcm9qZWN0cywgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLQl7Ci0JCXJldHVybiBnZXRXZWJTZXJ2aWNlQ2xpZW50c0J5Q2F0ZWdvcnlJZChudWxsLHByb2plY3RzLG1vbml0b3IpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIG9mIFdlYlNlcnZpY2VDbGllbnRJbmZvIG9iamVjdHMgd2hpY2ggcmVwcmVzZW50IHdlYiBzZXJ2aWNlIGNsaWVudHMgZm91bmQgYnkgbG9jYXRvcnMgdGhhdAotCSAqIGhhdmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUgb3JnLmVjbGlwc2Uud3N0LndzLmxvY2F0b3IgZXh0ZW5zaW9uIHBvaW50IHVuZGVyIHRoZSBnaXZlbiBjYXRlZ29yeS4KLQkgKiBMb2NhdG9ycyBtdXN0IGV4dGVuZCB7QGxpbmsgQWJzdHJhY3RXZWJTZXJ2aWNlTG9jYXRvcn0uIAotCSAqIENhbGxlcnMgY2FuIHVzZSB0aGUgZ2V0dGVyIG1ldGhvZHMgb24gdGhlIFdlYlNlcnZpY2VDbGllbnRJbmZvIG9iamVjdCB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgCi0JICogd2ViIHNlcnZpY2UgY2xpZW50cyBmb3VuZC4gIFRoZSBXZWJTZXJ2aWNlRmluZGVyIGNhbm5vdCBndWFyYW50ZWUgdGhlIGxldmVsIG9mIGRldGFpbCBjb250YWluZWQgaW4gV2ViU2VydmljZUNsaWVudEluZm8KLQkgKiBvYmplY3RzIHJldHVybmVkLiAgVGhpcyBpcyBsZWZ0IHRvIHRoZSBsb2NhdG9yIGltcGxlbWVudGF0aW9ucy4KLQkgKiBAcGFyYW0gY2F0ZWdvcnkgVGhlIGNhdGVnb3J5IG9mIGxvY2F0b3JzIHRvIHVzZS4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIEFuIGl0ZXJhdG9yIG9mIFdlYlNlcnZpY2VDbGllbnRJbmZvIG9iamVjdHMsIG5ldmVyIG51bGwuCi0JICovCi0JcHVibGljIEl0ZXJhdG9yIGdldFdlYlNlcnZpY2VDbGllbnRzQnlDYXRlZ29yeSAoIFdlYlNlcnZpY2VDYXRlZ29yeSBjYXRlZ29yeSwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkKLQl7Ci0JCXJldHVybiBnZXRXZWJTZXJ2aWNlQ2xpZW50c0J5Q2F0ZWdvcnlJZChjYXRlZ29yeSA9PSBudWxsID8gbnVsbCA6IGNhdGVnb3J5LmdldElkKCksbW9uaXRvcik7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzIHdoaWNoIHJlcHJlc2VudCB3ZWIgc2VydmljZSBjbGllbnRzIGZvdW5kIGJ5IGxvY2F0b3JzIHRoYXQKLQkgKiBoYXZlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlIG9yZy5lY2xpcHNlLndzdC53cy5sb2NhdG9yIGV4dGVuc2lvbiBwb2ludCB1bmRlciB0aGUgZ2l2ZW4gY2F0ZWdvcnkuCi0JICogVGhlIHNlYXJjaCBpcyBjb25zdHJhaW5lZCB0byB0aGUgZ2l2ZW4gc2V0IG9mIG9uZSBvciBtb3JlIHByb2plY3RzLgotCSAqIExvY2F0b3JzIG11c3QgZXh0ZW5kIHtAbGluayBBYnN0cmFjdFdlYlNlcnZpY2VMb2NhdG9yfS4gCi0JICogQ2FsbGVycyBjYW4gdXNlIHRoZSBnZXR0ZXIgbWV0aG9kcyBvbiB0aGUgV2ViU2VydmljZUNsaWVudEluZm8gb2JqZWN0IHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIG9uIHRoZSAKLQkgKiB3ZWIgc2VydmljZSBjbGllbnRzIGZvdW5kLiAgVGhlIFdlYlNlcnZpY2VGaW5kZXIgY2Fubm90IGd1YXJhbnRlZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGNvbnRhaW5lZCBpbiBXZWJTZXJ2aWNlQ2xpZW50SW5mbwotCSAqIG9iamVjdHMgcmV0dXJuZWQuICBUaGlzIGlzIGxlZnQgdG8gdGhlIGxvY2F0b3IgaW1wbGVtZW50YXRpb25zLgotCSAqIEBwYXJhbSBjYXRlZ29yeSBUaGUgY2F0ZWdvcnkgb2YgbG9jYXRvcnMgdG8gdXNlLgotCSAqIEBwYXJhbSBtb25pdG9yIEEgcHJvZ3Jlc3MgbW9uaXRvciwgb3IgbnVsbCBpZiBwcm9ncmVzcyBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqIEByZXR1cm4gQW4gaXRlcmF0b3Igb2YgV2ViU2VydmljZUNsaWVudEluZm8gb2JqZWN0cywgbmV2ZXIgbnVsbC4KLQkgKi8KLQlwdWJsaWMgSXRlcmF0b3IgZ2V0V2ViU2VydmljZUNsaWVudHNCeUNhdGVnb3J5ICggV2ViU2VydmljZUNhdGVnb3J5IGNhdGVnb3J5LCBJUHJvamVjdFtdIHByb2plY3RzLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotCXsKLQkJcmV0dXJuIGdldFdlYlNlcnZpY2VDbGllbnRzQnlDYXRlZ29yeUlkKGNhdGVnb3J5ID09IG51bGwgPyBudWxsIDogY2F0ZWdvcnkuZ2V0SWQoKSxwcm9qZWN0cyxtb25pdG9yKTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIG9mIFdlYlNlcnZpY2VDbGllbnRJbmZvIG9iamVjdHMgd2hpY2ggcmVwcmVzZW50IHdlYiBzZXJ2aWNlIGNsaWVudHMgZm91bmQgYnkgbG9jYXRvcnMgdGhhdAotCSAqIGhhdmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUgb3JnLmVjbGlwc2Uud3N0LndzLmxvY2F0b3IgZXh0ZW5zaW9uIHBvaW50IHVuZGVyIHRoZSBnaXZlbiBjYXRlZ29yeS4KLQkgKiBMb2NhdG9ycyBtdXN0IGV4dGVuZCB7QGxpbmsgQWJzdHJhY3RXZWJTZXJ2aWNlTG9jYXRvcn0uCi0JICogQ2FsbGVycyBjYW4gdXNlIHRoZSBnZXR0ZXIgbWV0aG9kcyBvbiB0aGUgV2ViU2VydmljZUNsaWVudEluZm8gb2JqZWN0IHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIG9uIHRoZSAKLQkgKiB3ZWIgc2VydmljZSBjbGllbnRzIGZvdW5kLiAgVGhlIFdlYlNlcnZpY2VGaW5kZXIgY2Fubm90IGd1YXJhbnRlZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGNvbnRhaW5lZCBpbiBXZWJTZXJ2aWNlQ2xpZW50SW5mbwotCSAqIG9iamVjdHMgcmV0dXJuZWQuICBUaGlzIGlzIGxlZnQgdG8gdGhlIGxvY2F0b3IgaW1wbGVtZW50YXRpb25zLgotCSAqIEBwYXJhbSBjYXRlZ29yeUlkIFRoZSBjYXRlZ29yeSBvZiBsb2NhdG9ycyB0byB1c2UuCi0JICogQHBhcmFtIG1vbml0b3IgQSBwcm9ncmVzcyBtb25pdG9yLCBvciBudWxsIGlmIHByb2dyZXNzIG1vbml0b3JpbmcgaXMgbm90IGRlc2lyZWQuCi0JICogQHJldHVybiBBbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzLCBuZXZlciBudWxsLgotCSAqLwotCXB1YmxpYyBJdGVyYXRvciBnZXRXZWJTZXJ2aWNlQ2xpZW50c0J5Q2F0ZWdvcnlJZCAoIFN0cmluZyBjYXRlZ29yeUlkLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKQotCXsKLQkJcmV0dXJuIGdldFdlYlNlcnZpY2VDbGllbnRzQnlDYXRlZ29yeUlkKGNhdGVnb3J5SWQsbnVsbCxtb25pdG9yKTsKLQl9IAotCi0JLyoqCi0JICogUmV0dXJucyBhbiBpdGVyYXRvciBvZiBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3RzIHdoaWNoIHJlcHJlc2VudCB3ZWIgc2VydmljZSBjbGllbnRzIGZvdW5kIGJ5IGxvY2F0b3JzIHRoYXQKLQkgKiBoYXZlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlIG9yZy5lY2xpcHNlLndzdC53cy5sb2NhdG9yIGV4dGVuc2lvbiBwb2ludCB1bmRlciB0aGUgZ2l2ZW4gY2F0ZWdvcnkuCi0JICogVGhlIHNlYXJjaCBpcyBjb25zdHJhaW5lZCB0byB0aGUgZ2l2ZW4gc2V0IG9mIG9uZSBvciBtb3JlIHByb2plY3RzLgotCSAqIExvY2F0b3JzIG11c3QgZXh0ZW5kIHtAbGluayBBYnN0cmFjdFdlYlNlcnZpY2VMb2NhdG9yfS4KLQkgKiBDYWxsZXJzIGNhbiB1c2UgdGhlIGdldHRlciBtZXRob2RzIG9uIHRoZSBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBvYmplY3QgdG8gcmV0cmlldmUgaW5mb3JtYXRpb24gb24gdGhlIAotCSAqIHdlYiBzZXJ2aWNlIGNsaWVudHMgZm91bmQuICBUaGUgV2ViU2VydmljZUZpbmRlciBjYW5ub3QgZ3VhcmFudGVlIHRoZSBsZXZlbCBvZiBkZXRhaWwgY29udGFpbmVkIGluIFdlYlNlcnZpY2VDbGllbnRJbmZvCi0JICogb2JqZWN0cyByZXR1cm5lZC4gIFRoaXMgaXMgbGVmdCB0byB0aGUgbG9jYXRvciBpbXBsZW1lbnRhdGlvbnMuCi0JICogQHBhcmFtIGNhdGVnb3J5SWQgVGhlIGNhdGVnb3J5IG9mIGxvY2F0b3JzIHRvIHVzZS4KLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIEFuIGl0ZXJhdG9yIG9mIFdlYlNlcnZpY2VDbGllbnRJbmZvIG9iamVjdHMsIG5ldmVyIG51bGwuCi0JICovCi0JcHVibGljIEl0ZXJhdG9yIGdldFdlYlNlcnZpY2VDbGllbnRzQnlDYXRlZ29yeUlkICggU3RyaW5nIGNhdGVnb3J5SWQsIElQcm9qZWN0W10gcHJvamVjdHMsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApCi0JewotCQlMaW5rZWRMaXN0IHdlYlNlcnZpY2VDbGllbnRzID0gbmV3IExpbmtlZExpc3QoKTsKLQkJV2ViU2VydmljZUxvY2F0b3JSZWdpc3RyeSB3c2xyID0gV2ViU2VydmljZUxvY2F0b3JSZWdpc3RyeS5nZXRJbnN0YW5jZSgpOwotCQlJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSByZWdFbGVtZW50cyA9IHdzbHIuZ2V0Q29uZmlnRWxlbWVudHMoKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCByZWdFbGVtZW50cy5sZW5ndGg7IGkrKykKLQkJewotCQkJaWYgKEVMRU1FTlRfTE9DQVRPUi5lcXVhbHMocmVnRWxlbWVudHNbaV0uZ2V0TmFtZSgpKSkKLQkJCXsKLQkJCQl0cnkKLQkJCQl7Ci0JCQkJCWlmIChjYXRlZ29yeUlkID09IG51bGwgfHwgY2F0ZWdvcnlJZC5lcXVhbHMocmVnRWxlbWVudHNbaV0uZ2V0QXR0cmlidXRlQXNJcyhBVFRSSUJVVEVfQ0FURUdPUlkpKSkKLQkJCQkJewotCQkJCQkJT2JqZWN0IG9iaiA9IHJlZ0VsZW1lbnRzW2ldLmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oQVRUUklCVVRFX0NMQVNTKTsKLQkJCQkJCWlmIChvYmogaW5zdGFuY2VvZiBJV2ViU2VydmljZUxvY2F0b3IpCi0JCQkJCQl7Ci0JCQkJCQkJSVdlYlNlcnZpY2VMb2NhdG9yIHdzbCA9IChJV2ViU2VydmljZUxvY2F0b3Ipb2JqOwotCQkJCQkJCUxpc3Qgd3NMaXN0ID0gcHJvamVjdHMgPT0gbnVsbCA/IHdzbC5nZXRXZWJTZXJ2aWNlQ2xpZW50cyhtb25pdG9yKSA6IHdzbC5nZXRXZWJTZXJ2aWNlQ2xpZW50cyhwcm9qZWN0cyxtb25pdG9yKTsKLQkJCQkJCQlpZiAod3NMaXN0ICE9IG51bGwpCi0JCQkJCQkJewotCQkJCQkJCQl3ZWJTZXJ2aWNlQ2xpZW50cy5hZGRBbGwod3NMaXN0KTsKLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9IAotCQkJCWNhdGNoIChDb3JlRXhjZXB0aW9uIGV4KQotCQkJCXsKLQkJCQkJLy8gUXVpZXRseSBieXBhc3MgYW55IElXZWJTZXJ2aWNlTG9jYXRvcnMgdGhhdCBmYWlsZWQgdG8gYmUgbG9hZGVkLgotCQkJCX0KLQkJCX0KLQkJfSAKLQkJcmV0dXJuIHdlYlNlcnZpY2VDbGllbnRzLml0ZXJhdG9yKCk7CQotCX0gCi0KLQkvKioKLQkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHJlZ2lzdGVyZWQgV2ViIFNlcnZpY2UgQ2F0ZWdvcnkgSURzLgotCSAqIEByZXR1cm4gQW4gYXJyYXksIG5ldmVyIG51bGwgYnV0IHBvc3NpYmx5IGVtcHR5LAotCSAqIG9mIHJlZ2lzdGVyZWQgV2ViIFNlcnZpY2UgQ2F0ZWdvcnkgZGVzY3JpcHRvcnMuCi0JICovCi0JcHVibGljIFdlYlNlcnZpY2VDYXRlZ29yeVtdIGdldFdlYlNlcnZpY2VDYXRlZ29yaWVzICgpCi0JewotCQlMaW5rZWRMaXN0IGNhdGVnb3JpZXMgPSBuZXcgTGlua2VkTGlzdCgpOwotCQlXZWJTZXJ2aWNlTG9jYXRvclJlZ2lzdHJ5IHdzbHIgPSBXZWJTZXJ2aWNlTG9jYXRvclJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0JCUlDb25maWd1cmF0aW9uRWxlbWVudFtdIHJlZ0VsZW1lbnRzID0gd3Nsci5nZXRDb25maWdFbGVtZW50cygpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IHJlZ0VsZW1lbnRzLmxlbmd0aDsgaSsrKQotCQl7Ci0JCQlpZiAoRUxFTUVOVF9DQVRFR09SWS5lcXVhbHMocmVnRWxlbWVudHNbaV0uZ2V0TmFtZSgpKSkKLQkJCXsKLQkJCQljYXRlZ29yaWVzLmFkZChuZXcgV2ViU2VydmljZUNhdGVnb3J5KHJlZ0VsZW1lbnRzW2ldKSk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIChXZWJTZXJ2aWNlQ2F0ZWdvcnlbXSljYXRlZ29yaWVzLnRvQXJyYXkobmV3IFdlYlNlcnZpY2VDYXRlZ29yeVswXSk7Ci0KLQl9CQotCi0JLyoqCi0JICogUmV0dXJucyBhbiBhcnJheSBvZiByZWdpc3RlcmVkIFdlYiBTZXJ2aWNlIENhdGVnb3J5IElEcy4KLQkgKiBAcmV0dXJuIEFuIGFycmF5LCBuZXZlciBudWxsIGJ1dCBwb3NzaWJseSBlbXB0eSwKLQkgKiBvZiByZWdpc3RlcmVkIFdlYiBTZXJ2aWNlIENhdGVnb3J5IElEcy4KLQkgKi8KLQlwdWJsaWMgU3RyaW5nW10gZ2V0V2ViU2VydmljZUNhdGVnb3J5SWRzICgpCi0JewotCQlMaW5rZWRMaXN0IGNhdGVnb3JpZXMgPSBuZXcgTGlua2VkTGlzdCgpOwotCQlXZWJTZXJ2aWNlTG9jYXRvclJlZ2lzdHJ5IHdzbHIgPSBXZWJTZXJ2aWNlTG9jYXRvclJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0JCUlDb25maWd1cmF0aW9uRWxlbWVudFtdIHJlZ0VsZW1lbnRzID0gd3Nsci5nZXRDb25maWdFbGVtZW50cygpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IHJlZ0VsZW1lbnRzLmxlbmd0aDsgaSsrKQotCQl7Ci0JCQlpZiAoRUxFTUVOVF9DQVRFR09SWS5lcXVhbHMocmVnRWxlbWVudHNbaV0uZ2V0TmFtZSgpKSkKLQkJCXsKLQkJCQlTdHJpbmcgaWQgPSByZWdFbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGVBc0lzKEFUVFJJQlVURV9JRCk7Ci0JCQkJaWYgKGlkICE9IG51bGwpCi0JCQkJewotCQkJCQljYXRlZ29yaWVzLmFkZChpZCk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiAoU3RyaW5nW10pY2F0ZWdvcmllcy50b0FycmF5KG5ldyBTdHJpbmdbMF0pOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBXZWJTZXJ2aWNlQ2F0ZWdvcnkgd2l0aCB0aGUgZ2l2ZW4gSUQsCi0JICogb3IgbnVsbCBpZiB0aGVyZSBpcyBub25lLgotCSAqIEBwYXJhbSBjYXRlZ29yeUlkIFRoZSBJRCBvZiB0aGUgY2F0ZWdvcnkgdG8gZmluZC4KLQkgKiBAcmV0dXJuIFRoZSBtYXRjaGluZyBjYXRlZ29yeSBkZXNjcmlwdG9yLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vbmUuCi0JICovCi0JcHVibGljIFdlYlNlcnZpY2VDYXRlZ29yeSBnZXRXZWJTZXJ2aWNlQ2F0ZWdvcnlCeUlkICggU3RyaW5nIGNhdGVnb3J5SWQgKQotCXsKLQkJV2ViU2VydmljZUNhdGVnb3J5IGNhdGVnb3J5ID0gbnVsbDsKLQkJaWYgKGNhdGVnb3J5SWQgIT0gbnVsbCkKLQkJewotCQkJV2ViU2VydmljZUxvY2F0b3JSZWdpc3RyeSB3c2xyID0gV2ViU2VydmljZUxvY2F0b3JSZWdpc3RyeS5nZXRJbnN0YW5jZSgpOwotCQkJSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gcmVnRWxlbWVudHMgPSB3c2xyLmdldENvbmZpZ0VsZW1lbnRzKCk7Ci0JCQlmb3IgKGludCBpID0gMDsgaSA8IHJlZ0VsZW1lbnRzLmxlbmd0aDsgaSsrKQotCQkJewotCQkJCWlmIChFTEVNRU5UX0NBVEVHT1JZLmVxdWFscyhyZWdFbGVtZW50c1tpXS5nZXROYW1lKCkpKQotCQkJCXsKLQkJCQkJU3RyaW5nIGlkID0gcmVnRWxlbWVudHNbaV0uZ2V0QXR0cmlidXRlQXNJcyhBVFRSSUJVVEVfSUQpOwotCQkJCQlpZiAoY2F0ZWdvcnlJZC5lcXVhbHMoaWQpKQotCQkJCQl7Ci0JCQkJCQlyZXR1cm4gbmV3IFdlYlNlcnZpY2VDYXRlZ29yeShyZWdFbGVtZW50c1tpXSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGNhdGVnb3J5OwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NmaW5kZXIvV2ViU2VydmljZUxvY2F0b3JFeHRlbnNpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NmaW5kZXIvV2ViU2VydmljZUxvY2F0b3JFeHRlbnNpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU0MmIwMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL1dlYlNlcnZpY2VMb2NhdG9yRXh0ZW5zaW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzZmluZGVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0LldlYlNlcnZpY2VFeHRlbnNpb25JbXBsOwotCi0vKioKLSAqIEBhdXRob3Igam9hbgotICogCi0gKiBUaGlzIGNsYXNzIGlzIHByb3ZpZGVkIGZvciB0aGUgYWRkaXRpb24gb2YgbG9jYXRvciBleHRlbnNpb24gc3BlY2lmaWMgZnVuY3Rpb25zCi0gKiAKLSAqLwotCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZUxvY2F0b3JFeHRlbnNpb24gZXh0ZW5kcyBXZWJTZXJ2aWNlRXh0ZW5zaW9uSW1wbCB7Ci0JCi0vLwkgQ29weXJpZ2h0Ci0JICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCQotCSBwdWJsaWMgV2ViU2VydmljZUxvY2F0b3JFeHRlbnNpb24oSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNvbmZpZ0VsZW1lbnQpCi0JICB7Ci0JICAgIHN1cGVyKGNvbmZpZ0VsZW1lbnQpOwotCSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2ZpbmRlci9XZWJTZXJ2aWNlTG9jYXRvclJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL1dlYlNlcnZpY2VMb2NhdG9yUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNkNmJmZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL1dlYlNlcnZpY2VMb2NhdG9yUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NmaW5kZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHQuV2ViU2VydmljZUV4dGVuc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuZXh0LldlYlNlcnZpY2VFeHRlbnNpb25SZWdpc3RyeUltcGw7Ci0KLS8qKgotICogQGF1dGhvciBqb2FuCi0gKgotICogUmV0cmlldmVzIGxvY2F0b3JzIHdoaWNoIGV4dGVuZCB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzZmluZGVyLkFic3RyYWN0V2ViU2VydmljZUxvY2F0b3J9LgotICogTG9jYXRvcnMgbXVzdCBjcmVhdGUgYW4gZXh0ZW5zaW9uIGZvciB0aGUgb3JnLmVjbGlwc2Uud3N0LndzLmxvY2F0b3IgZXh0ZW5zaW9uIHBvaW50IGluIG9yZGVyIHRvIGJlIHJldHJpZXZlZCBieQotICogdGhlIHJlZ2lzdHJ5LgotICovCi0KLQotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VMb2NhdG9yUmVnaXN0cnkgZXh0ZW5kcyBXZWJTZXJ2aWNlRXh0ZW5zaW9uUmVnaXN0cnlJbXBsIHsKLQotCSAvLyBDb3B5cmlnaHQKLQkgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICIoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDAyLiI7Ci0JICAvKgotCSAgICogVGhpcyBpcyBhIHNpbmdsZXRvbiBiZWNhc3VlIGl0IHdhcyBkZWNpZGVkIHRoYXQgdGhlIG1lbW9yeSBmb290IHByaW50IAotCSAgICogaXMgbm90IGFzIGV4cGVuc2l2ZSBhcyB0aGUgdGltZSB0YWtlbiByZXRyaWV2aW5nIHRoZSBkYXRhCi0JICAgKiAKLQkgICAqLwotCSAgCi0JICAKLQkgIHByaXZhdGUgc3RhdGljIFdlYlNlcnZpY2VMb2NhdG9yUmVnaXN0cnkgd3NscjsKLQkgIAotCSAgcHVibGljIHN0YXRpYyBXZWJTZXJ2aWNlTG9jYXRvclJlZ2lzdHJ5IGdldEluc3RhbmNlKCkKLQkgIHsKLQkgIAlpZih3c2xyID09IG51bGwpIHdzbHIgPSBuZXcgV2ViU2VydmljZUxvY2F0b3JSZWdpc3RyeSgpOwotCSAgICByZXR1cm4gd3NscjsKLQkgIH0KLQkgIAotCSAgcHJpdmF0ZSBXZWJTZXJ2aWNlTG9jYXRvclJlZ2lzdHJ5KCkKLQkgIHsKLQkgICAgc3VwZXIoKTsKLQkgIH0KLQkgIAotCSAgLyoqCi0JICAqIENoaWxkcmVuIHJlZ2lzdHJpZXMgd2lsbCBoYXZlIGRpZmZlcmVudCBleHRlbnNpb24gdHlwZXMgCi0JICAqIEByZXR1cm4gV2Vic2VydmljZUV4dGVuc2lvbiBob2xkcyBhIGNvbmZpZyBlbGVtCi0JICAqIGZvciB0aGF0IGV4dGVuc2lvbiBjYXBhYmxlIG9mIGNyZWF0aW5nIGFuIGV4ZWN1dGFibGUgZmlsZQotCSAgKi8KLQkgIHB1YmxpYyBXZWJTZXJ2aWNlRXh0ZW5zaW9uIGNyZWF0ZVdlYlNlcnZpY2VFeHRlbnNpb24oSUNvbmZpZ3VyYXRpb25FbGVtZW50IGNvbmZpZ0VsZW1lbnQpCi0JICB7Ci0JICAgIHJldHVybiBuZXcgV2ViU2VydmljZUxvY2F0b3JFeHRlbnNpb24oY29uZmlnRWxlbWVudCk7Ci0JICB9Ci0KLQkgIC8qKgotCSAgKiBDb250YWN0cyBwbGF0Zm9ybSByZWdpc3RyeSBhbmQgZ2V0cyBhbGwgbG9jYXRvcnMgd2hpY2ggaGF2ZSByZWdpc3RlcmVkIAotCSAgKiAgdXNpbmcgdGhlIG9yZy5lY2xpcHNlLndzdC53cy5sb2NhdG9yIGV4dGVuc2lvbiBwb2ludC4KLQkgICogQHJldHVybiBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBhbiBhcnJheSBvZiBlbGVtZW50cyB3aGljaCBjb250YWluIGxvY2F0b3JzIAotCSAgKiBleHRlbmRpbmcgQWJzdHJhY3RXZWJTZXJ2aWNlTG9jYXRvci4KLQkgICovCi0JICBwdWJsaWMgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gZ2V0Q29uZmlnRWxlbWVudHMoKQotCSAgewotCSAgICBJRXh0ZW5zaW9uUmVnaXN0cnkgcmVnID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLQkgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY29uZmlnID0gcmVnLmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcigKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5lY2xpcHNlLndzdC53cyIsCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIik7Ci0JICAgIHJldHVybiBjb25maWc7ICAgIAotCSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL1dvcmtzcGFjZVdTRExMb2NhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzZmluZGVyL1dvcmtzcGFjZVdTRExMb2NhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZGMwNjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2ZpbmRlci9Xb3Jrc3BhY2VXU0RMTG9jYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxNyAgIDEyNzQ1NiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA2MjAgICAxNDc4NjIgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqIDIwMDkwMzEwICAgMjQyNDQwIHllbmx1QGNhLmlibS5jb20gLSBZZW4gTHUsIFBsdWdnYWJsZSBJRmlsZSB0byBVUkkgQ29udmVydGVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NmaW5kZXI7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZVZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVdvcmtzcGFjZVJvb3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5jb252ZXJ0ZXIuSUlGaWxlMlVyaUNvbnZlcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VJbmZvOwotCi0vKioKLSAqIEV4dGVuZHMgdGhlIFdlYiBTZXJ2aWNlcyBGaW5kZXIgRnJhbWV3b3JrLgotICogRmluZHMgYWxsIC53c2RsIGZpbGVzIGluIHRoZSB3b3Jrc3BhY2UuCi0gKiBOb3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseS4gIFdvcmtzcGFjZVdTRExMb2NhdG9yIHJlZ2lzdGVycyB3aXRoIFdlYlNlcnZpY2VMb2NhdG9yUmVnaXN0cnkgCi0gKiBhbmQgaXMgYWNjZXNzZWQgYnkgdGhlIHtAbGluayBXZWJTZXJ2aWNlRmluZGVyfS4gCi0gKi8KLQotcHVibGljIGNsYXNzIFdvcmtzcGFjZVdTRExMb2NhdG9yIGV4dGVuZHMgQWJzdHJhY3RXZWJTZXJ2aWNlTG9jYXRvcgotewotCi0JcHJvdGVjdGVkIExpc3Qgd3NkbFNlcnZpY2VzID0gbnVsbDsKLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExBVEZPUk1fUkVTID0gInBsYXRmb3JtOi9yZXNvdXJjZSI7ICAvLyROT04tTkxTLTEkCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfRVhUID0gIndzZGwiOyAgLy8kTk9OLU5MUy0xJAotCi0JcHVibGljIFdvcmtzcGFjZVdTRExMb2NhdG9yKCkKLQl7Ci0JCXN1cGVyKCk7CQotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGNvbGxlY3Rpb24gb2YgYWxsIC53c2RsIGZpbGVzIGluIHRoZSB3b3Jrc3BhY2UuICBDdXJyZW50bHkgZG9lcyBub3QgZWxpbWluYXRlIG11bHRpcGxlIAotCSAqIG9jY3VyZW5jZXMgb2YgdGhlIHNhbWUgd2ViIHNlcnZpY2UuIAotCSAqIAotCSAqIFRPRE86IGFkZCBhIGxpc3RlbmVyIHRvIHRoZSB3b3Jrc3BhY2UgcmVzb3VyY2UgdHJlZSBzbyB0aGF0IGdldFdlYlNlcnZpY2VzIGRvZXNuJ3QgYWx3YXlzCi0JICogdXNlIHRoZSBXU0RMVmlzaXRvciB0byB3YWxrIHRoZSBlbnRpcmUgcmVzb3VyY2UgdHJlZS4gIFRoYXQgc2hvdWxkIG9ubHkgaGFwcGVuIG9uY2UuICBBZnRlcgotCSAqIHRoYXQgdGhlIHJlc291cmNlIHRyZWUgY2FuIGJlIG1vbml0b3JlZCBmb3IgbW9kaWZpY2F0aW9ucyB0byAud3NkbCBmaWxlcyBhbmQgY2hhbmdlcyBtYWRlIHRvIGEgY2FjaGUuIAotCSAqIAotCSAqIEBwYXJhbSBtb25pdG9yIEEgcHJvZ3Jlc3MgbW9uaXRvciwgb3IgbnVsbCBpZiBwcm9ncmVzcyBtb25pdG9yaW5nIGlzIG5vdCBkZXNpcmVkLgotCSAqIEByZXR1cm4gbGlzdCBvZiBXZWJTZXJ2aWNlSW5mbyBvYmplY3RzLCBwb3NzaWJseSBudWxsLgotCSAqLwotCXB1YmxpYyBMaXN0IGdldFdlYlNlcnZpY2VzIChJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCi0JewkKLQkJaWYgKHdzZGxTZXJ2aWNlcyA9PSBudWxsKQotCQl7Ci0JCQl0cnkKLQkJCXsKLQkJCQlJV29ya3NwYWNlUm9vdCByb290ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKTsKLQkJCQlXU0RMVmlzaXRvciB2aXNpdG9yID0gbmV3IFdTRExWaXNpdG9yKCk7Ci0JCQkJcm9vdC5hY2NlcHQodmlzaXRvcik7CQkKLQkJCQl3c2RsU2VydmljZXMgPSB2aXNpdG9yLmdldFdTREwoKTsKLQkJCX0KLQkJCWNhdGNoIChFeGNlcHRpb24gZXgpCi0JCQl7Ci0JCQkJLy8gRG8gbm90aGluZy4KLQkJCX0KLQkJfQotCQlyZXR1cm4gd3NkbFNlcnZpY2VzOwkJCi0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgY29sbGVjdGlvbiBvZiBhbGwgLndzZGwgZmlsZXMgaW4gdGhlIGdpdmVuIHByb2plY3QuCi0JICogQ3VycmVudGx5IGRvZXMgbm90IGVsaW1pbmF0ZSBtdWx0aXBsZSBvY2N1cmVuY2VzIG9mIHRoZSBzYW1lIHdlYiBzZXJ2aWNlLiAKLQkgKiAKLQkgKiBUT0RPOiBhZGQgYSBsaXN0ZW5lciB0byB0aGUgd29ya3NwYWNlIHJlc291cmNlIHRyZWUgc28gdGhhdCBnZXRXZWJTZXJ2aWNlcyBkb2Vzbid0IGFsd2F5cwotCSAqIHVzZSB0aGUgV1NETFZpc2l0b3IgdG8gd2FsayB0aGUgZW50aXJlIHJlc291cmNlIHRyZWUuICBUaGF0IHNob3VsZCBvbmx5IGhhcHBlbiBvbmNlLiAgQWZ0ZXIKLQkgKiB0aGF0IHRoZSByZXNvdXJjZSB0cmVlIGNhbiBiZSBtb25pdG9yZWQgZm9yIG1vZGlmaWNhdGlvbnMgdG8gLndzZGwgZmlsZXMgYW5kIGNoYW5nZXMgbWFkZSB0byBhIGNhY2hlLiAKLQkgKiAKLQkgKiBAcGFyYW0gbW9uaXRvciBBIHByb2dyZXNzIG1vbml0b3IsIG9yIG51bGwgaWYgcHJvZ3Jlc3MgbW9uaXRvcmluZyBpcyBub3QgZGVzaXJlZC4KLQkgKiBAcmV0dXJuIGxpc3Qgb2YgV2ViU2VydmljZUluZm8gb2JqZWN0cwotCSAqLwotCXB1YmxpYyBMaXN0IGdldFdlYlNlcnZpY2VzIChJUHJvamVjdFtdIHByb2plY3RzLCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCi0JewotCQlXU0RMVmlzaXRvciB2aXNpdG9yID0gbmV3IFdTRExWaXNpdG9yKCk7Ci0JCWlmIChwcm9qZWN0cyAhPSBudWxsKQotCQl7Ci0JCQlmb3IgKGludCBwPTA7IHA8cHJvamVjdHMubGVuZ3RoOyBwKyspCi0JCQl7Ci0JCQkJdHJ5Ci0JCQkJewotCQkJCQlwcm9qZWN0c1twXS5hY2NlcHQodmlzaXRvcik7Ci0JCQkJfQotCQkJCWNhdGNoIChDb3JlRXhjZXB0aW9uIGV4KQotCQkJCXsKLQkJCQkJLy8gRG8gbm90aGluZy4KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIHZpc2l0b3IuZ2V0V1NETCgpOwotCX0KLQotCS8qKgotCSAqICBVc2VzIHRoZSBWaXNpdG9yIHBhdHRlcm4gdG8gd2FsayB0aGUgd29ya3NwYWNlIHJlc291cmNlIHRyZWUKLQkgKi8KLQlwcml2YXRlIGNsYXNzIFdTRExWaXNpdG9yIGltcGxlbWVudHMgSVJlc291cmNlVmlzaXRvcgotCXsKLQotCQlwcml2YXRlIFZlY3RvciB3c2RsID0gbmV3IFZlY3RvcigpOwotCi0JCS8qKgotCQkgKiB2aXNpdHMgZXZlcnkgbm9kZSBvbiB0aGUgcmVzb3VyY2UgdHJlZSBzdG9wcGluZyBhIGZpbGUgcmVzb3VyY2VzCi0JCSAqIGlmIGZpbGUgcmVzb3VyY2UgaGFzIGV4dGVuc2lvbiAud3NkbCBhIFdlYlNlcnZpY2VJbmZvIG9iamVjdCBpcyBjcmVhdGVkIGFuZCBhZGRlZCB0byBhIHZlY3RvciAKLQkJICogIFRPRE86IGxvb2sgYXQgY2FjaGluZyB0byBlbGltaW5hdGUgZHVwbGljYXRlIHdlYiBzZXJ2aWNlIGRlZmluaXRpb25zIGluIHRoZSB2ZWN0b3IgcmV0dXJuZWQKLQkJICogIFRPRE86IGFkZCBtb3JlIGluZm9ybWF0aW9uIHRvIHRoZSBXZWJTZXJ2aWNlSW5mbyBvYmplY3QuICBDdXJyZW50bHkgb25seSB0aGUgcXVhbGlmaWVkIGZpbGVuYW1lIGlzIGFkZGVkLgotCQkgKi8KLQkJcHVibGljIGJvb2xlYW4gdmlzaXQoSVJlc291cmNlIHJlc291cmNlKQotCQl7Ci0JCQlpZiAocmVzb3VyY2UuZ2V0VHlwZSgpID09IElSZXNvdXJjZS5GSUxFKQotCQkJewotCQkJCVN0cmluZyB3c2RsVVJMID0gbnVsbDsKLQkJCQlJSUZpbGUyVXJpQ29udmVydGVyIGNvbnZlcnRlciA9IFdTUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0SUZpbGUyVXJpQ29udmVydGVyKCk7Ci0JCQkJYm9vbGVhbiBhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlID0gdHJ1ZTsKLQkJCQlpZiAoY29udmVydGVyICE9IG51bGwpCi0JCQkJewotCQkJCSAgd3NkbFVSTCA9IGNvbnZlcnRlci5jb252ZXJ0KChJRmlsZSlyZXNvdXJjZSk7Ci0JCQkJICBpZiAod3NkbFVSTCA9PSBudWxsKQotCQkJCQlhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlID0gY29udmVydGVyLmFsbG93QmFzZUNvbnZlcnNpb25PbkZhaWx1cmUoKTsKLQkJCQl9Ci0JCQkJaWYgKHdzZGxVUkwgPT0gbnVsbCAmJiBhbGxvd0Jhc2VDb252ZXJzaW9uT25GYWlsdXJlKQotCQkJCXsKLQkJCQkgIFN0cmluZyBleHQgPSByZXNvdXJjZS5nZXRGaWxlRXh0ZW5zaW9uKCk7Ci0JCQkJICBpZiAoZXh0ICE9IG51bGwgJiYgZXh0LmVxdWFsc0lnbm9yZUNhc2UoV1NETF9FWFQpKQotCQkJCQl3c2RsVVJMID0gUExBVEZPUk1fUkVTICsgcmVzb3VyY2UuZ2V0RnVsbFBhdGgoKS50b1N0cmluZygpOwotCQkJCX0KLQkJCQlpZiAod3NkbFVSTCAhPSBudWxsKQotCQkJCXsKLQkJCQkgIFdlYlNlcnZpY2VJbmZvIHdzSW5mbyA9IG5ldyBXZWJTZXJ2aWNlSW5mbygpOwotCQkJCSAgd3NJbmZvLnNldFdzZGxVUkwod3NkbFVSTCk7ICAgICAgICAgICAKLQkJCQkgIHdzZGwuYWRkKHdzSW5mbyk7Ci0JCQkJfQotCQkJfQotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKioKLQkJICogUmV0dXJucyBhIHZlY3RvciBvZiBXZWJTZXJ2aWNlSW5mbyBvYmplY3RzLgotCQkgKiBAcmV0dXJuIHZlY3RvciBvZiBXZWJTZXJ2aWNlSW5mbyBvYmplY3RzCi0JCSAqLwotCQlwdWJsaWMgVmVjdG9yIGdldFdTREwoKQotCQl7Ci0JCQlyZXR1cm4gd3NkbDsKLQkJfQotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NpbC9BZGRXU0RMVG9XU0lMQ29tbWFuZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2lsL0FkZFdTRExUb1dTSUxDb21tYW5kLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMDhjYmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c2lsL0FkZFdTRExUb1dTSUxDb21tYW5kLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c2lsOwotCi1pbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5PdXRwdXRLZXlzOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXI7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0OwotCi1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLkFic3RyYWN0OwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5EZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuSW5zcGVjdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuUU5hbWU7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLldTSUxEb2N1bWVudDsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuV1NJTEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLkV4dGVuc2lvbkJ1aWxkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS53c2lsLmV4dGVuc2lvbi53c2RsLkltcGxlbWVudGVkQmluZGluZzsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLndzZGwuUmVmZXJlbmNlOwotaW1wb3J0IG9yZy5hcGFjaGUud3NpbC5leHRlbnNpb24ud3NkbC5SZWZlcmVuY2VkU2VydmljZTsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwuZXh0ZW5zaW9uLndzZGwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcuYXBhY2hlLndzaWwueG1sLlhNTFdyaXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LnVyaS5JVVJJRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LnVyaS5VUklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLmRhdGFtb2RlbC5BYnN0cmFjdERhdGFNb2RlbE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuSWxsZWdhbEFyZ3VtZW50c0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV1NJTE1lc3NhZ2VzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XV1dBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGFyc2VyLndzaWwuV1dXQXV0aGVudGljYXRpb25IYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wYXJzZXIud3NpbC5XZWJTZXJ2aWNlc1BhcnNlcjsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLQotcHVibGljIGNsYXNzIEFkZFdTRExUb1dTSUxDb21tYW5kIGV4dGVuZHMgQWJzdHJhY3REYXRhTW9kZWxPcGVyYXRpb24KLXsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVJHX1dTSUwgPSAiLXdzaWwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBUkdfV1NETCA9ICItd3NkbCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFSR19SRVNPTFZFX1dTREwgPSAiLXJlc29sdmV3c2RsIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVJHX0hUVFBfQkFTSUNfQVVUSF9VU0VSTkFNRSA9ICItaHR0cHVzZXJuYW1lIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVJHX0hUVFBfQkFTSUNfQVVUSF9QQVNTV09SRCA9ICItaHR0cHBhc3N3b3JkIjsKLSAgcHJpdmF0ZSBXV1dBdXRoZW50aWNhdGlvbkhhbmRsZXIgd3d3QXV0aEhhbmRsZXJfOwotICBwcml2YXRlIFN0cmluZ1tdIGFyZ3NfOwotICBwcml2YXRlIFN0cmluZyB3c2lsXzsKLSAgcHJpdmF0ZSBBcnJheUxpc3Qgd3NkbHNfOwotICBwcml2YXRlIGJvb2xlYW4gcmVzb2x2ZVdTRExfOwotICBwcml2YXRlIFN0cmluZyBodHRwVXNlcm5hbWVfOwotICBwcml2YXRlIFN0cmluZyBodHRwUGFzc3dvcmRfOwotCi0gIHB1YmxpYyBBZGRXU0RMVG9XU0lMQ29tbWFuZCgpCi0gIHsKLSAgICB3d3dBdXRoSGFuZGxlcl8gPSBudWxsOwotICAgIGFyZ3NfID0gbmV3IFN0cmluZ1swXTsKLSAgICBjbGVhclBhcnNlZEFyZ3MoKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBjbGVhclBhcnNlZEFyZ3MoKQotICB7Ci0gICAgd3NpbF8gPSBudWxsOwotICAgIGlmICh3c2Rsc18gPT0gbnVsbCkKLSAgICAgIHdzZGxzXyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBlbHNlCi0gICAgICB3c2Rsc18uY2xlYXIoKTsKLSAgICByZXNvbHZlV1NETF8gPSBmYWxzZTsKLSAgICBodHRwVXNlcm5hbWVfID0gbnVsbDsKLSAgICBodHRwUGFzc3dvcmRfID0gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBFeGVjdXRlcyB0aGUgQ29tbWFuZC4KLSAgICogCi0gICAqIEBwYXJhbSBlbnZpcm9ubWVudAotICAgKiAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudC4gTXVzdCBub3QgYmUgbnVsbC4KLSAgICogQHJldHVybiBBIDxjb2RlPlN0YXR1czwvY29kZT4gb2JqZWN0IGluZGljYXRpbmcgdGhlIGRlZ3JlZSB0byB3aGljaCB0aGUKLSAgICogICAgICAgICA8Y29kZT5leGVjdXRlPC9jb2RlPiBtZXRob2Qgd2FzIHN1Y2Nlc3NmdWwuIEEgdmFsdWQgb2YgPGNvZGU+bnVsbDwvY29kZT4sCi0gICAqICAgICAgICAgb3IgYSBTdGF0dXMgd2l0aCBhIHNldmVyaXR5IG9mIGxlc3MgdGhhbiA8Y29kZT5TdGF0dXMuRVJST1I8L2NvZGU+Ci0gICAqICAgICAgICAgc2lnbmlmaWVzIHN1Y2Nlc3MuCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyBleGVjdXRlKCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIElBZGFwdGFibGUgYWRhcHRhYmxlICkKLSAgewotICAgIElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7Ci0gICAgCi0gICAgSVVSSUZhY3RvcnkgdXJpRmFjdG9yeSA9IGVudmlyb25tZW50LmdldFVSSUZhY3RvcnkoKTsKLSAgICAvLyBQYXJzZSBhcmd1bWVudHMKLSAgICB0cnkKLSAgICB7Ci0gICAgICBwYXJzZUFyZ3VtZW50cygpOwotICAgIH0KLSAgICBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50c0V4Y2VwdGlvbiBpYWUpCi0gICAgewotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBXU0lMTWVzc2FnZXMuTVNHX0VSUk9SX0lMTEVHQUxfQVJHVU1FTlRTLCBpYWUpOwotICAgIH0KLSAgICBjYXRjaCAoQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBXU0lMTWVzc2FnZXMuTVNHX0VSUk9SX0lOVkFMSURfQVJHVU1FTlRTLCBlKTsKLSAgICB9Ci0gICAgLy8gQ3JlYXRlIG5ldyBXU0lMIGRvY3VtZW50Ci0gICAgV1NJTERvY3VtZW50IHdzaWxEb2N1bWVudCA9IG51bGw7Ci0gICAgVVJMIHdzaWxVUkwgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIHdzaWxEb2N1bWVudCA9IFdTSUxEb2N1bWVudC5uZXdJbnN0YW5jZSgpOwotICAgICAgd3NpbFVSTCA9IG5ldyBVUkwod3NpbF8pOwotICAgIH0KLSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11cmxlKQotICAgIHsKLSAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTSUxNZXNzYWdlcy5NU0dfRVJST1JfSU5WQUxJRF9XU0lMX1VSSSwgbXVybGUpOwotICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgICBjYXRjaCAoV1NJTEV4Y2VwdGlvbiB3c2lsZSkKLSAgICB7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBXU0lMTWVzc2FnZXMuTVNHX0VSUk9SX1VORVhQRUNURURfRVhDRVBUSU9OLCB3c2lsZSk7Ci0gICAgICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotICAgIC8vIFJlYWQgV1NJTAotICAgIHRyeQotICAgIHsKLSAgICAgIElucHV0U3RyZWFtIGlzID0gdXJpRmFjdG9yeS5uZXdVUkkod3NpbFVSTCkuZ2V0SW5wdXRTdHJlYW0oKTsKLSAgICAgIGlmIChpcyAhPSBudWxsKQotICAgICAgewotICAgICAgICB3c2lsRG9jdW1lbnQucmVhZChuZXcgSW5wdXRTdHJlYW1SZWFkZXIoaXMpKTsKLSAgICAgICAgaXMuY2xvc2UoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKFVSSUV4Y2VwdGlvbiB1cmllKQotICAgIHsKLSAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTSUxNZXNzYWdlcy5NU0dfRVJST1JfVU5FWFBFQ1RFRF9FWENFUFRJT04sIHVyaWUpOwotICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKQotICAgIHsKLSAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTSUxNZXNzYWdlcy5NU0dfRVJST1JfVU5FWFBFQ1RFRF9FWENFUFRJT04sIGlvZSk7Ci0gICAgICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotICAgIGNhdGNoIChXU0lMRXhjZXB0aW9uIHdzaWxlKQotICAgIHsKLSAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTSUxNZXNzYWdlcy5NU0dfRVJST1JfVU5FWFBFQ1RFRF9FWENFUFRJT04sIHdzaWxlKTsKLSAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0gICAgLy8gaW50ZXJuYWxFeGVjdXRlCi0gICAgU3RyaW5nIGh0dHBVc2VybmFtZSA9IG51bGw7Ci0gICAgU3RyaW5nIGh0dHBQYXNzd29yZCA9IG51bGw7Ci0gICAgaWYgKHdzZGxzXy5zaXplKCkgPT0gMSAmJiBodHRwVXNlcm5hbWVfICE9IG51bGwgJiYgaHR0cFBhc3N3b3JkXyAhPSBudWxsKQotICAgIHsKLSAgICAgIGh0dHBVc2VybmFtZSA9IGh0dHBVc2VybmFtZV87Ci0gICAgICBodHRwUGFzc3dvcmQgPSBodHRwUGFzc3dvcmRfOwotICAgIH0KLSAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gd3NkbHNfLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgewotICAgICAgU3RyaW5nIHdzZGwgPSAoU3RyaW5nKSBpdC5uZXh0KCk7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IG51bGw7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgc3RhdHVzID0gaW50ZXJuYWxFeGVjdXRlKGVudmlyb25tZW50LCB3c2lsRG9jdW1lbnQsIHBsYXRmb3JtMkZpbGUodXJpRmFjdG9yeSwgd3NpbF8pLCB3c2RsLCBodHRwVXNlcm5hbWUsIGh0dHBQYXNzd29yZCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoV1dXQXV0aGVudGljYXRpb25FeGNlcHRpb24gd3d3YWUpCi0gICAgICB7Ci0gICAgICAgIGlmICh3d3dBdXRoSGFuZGxlcl8gIT0gbnVsbCAmJiBodHRwVXNlcm5hbWUgPT0gbnVsbCAmJiBodHRwUGFzc3dvcmQgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHd3d0F1dGhIYW5kbGVyXy5oYW5kbGVXV1dBdXRoZW50aWNhdGlvbih3d3dhZSk7Ci0gICAgICAgICAgU3RyaW5nIGhhbmRsZXJVc2VybmFtZSA9IHd3d0F1dGhIYW5kbGVyXy5nZXRVc2VybmFtZSgpOwotICAgICAgICAgIFN0cmluZyBoYW5kbGVyUGFzc3dvcmQgPSB3d3dBdXRoSGFuZGxlcl8uZ2V0UGFzc3dvcmQoKTsKLSAgICAgICAgICBpZiAoaGFuZGxlclVzZXJuYW1lICE9IG51bGwgJiYgaGFuZGxlclBhc3N3b3JkICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHN0YXR1cyA9IGludGVybmFsRXhlY3V0ZShlbnZpcm9ubWVudCwgd3NpbERvY3VtZW50LCBwbGF0Zm9ybTJGaWxlKHVyaUZhY3RvcnksIHdzaWxfKSwgd3NkbCwgaGFuZGxlclVzZXJuYW1lLCBoYW5kbGVyUGFzc3dvcmQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2F0Y2ggKFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIHd3d2FlMikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgSVN0YXR1cyB3d3dhZVN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBXU0lMTWVzc2FnZXMuTVNHX0VSUk9SX1VOUkVTT0xWQUJMRV9XU0RMLCB3d3dhZTIuZ2V0SU9FeGNlcHRpb24oKSk7Ci0gICAgICAgICAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcih3d3dhZVN0YXR1cyk7Ci0gICAgICAgICAgICAgIHJldHVybiB3d3dhZVN0YXR1czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0YXR1cyA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgSVN0YXR1cyBzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTSUxNZXNzYWdlcy5NU0dfRVJST1JfVU5SRVNPTFZBQkxFX1dTREwsIHd3d2FlLmdldElPRXhjZXB0aW9uKCkpOwotICAgICAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzKTsKLSAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKHN0YXR1cy5nZXRTZXZlcml0eSgpICE9IFN0YXR1cy5PSykKLSAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0gICAgLy8gV3JpdGUgV1NJTAotICAgIHRyeQotICAgIHsKLSAgICAgIFhNTFdyaXRlciB4bWxXcml0ZXIgPSBuZXcgWE1MV3JpdGVyKCk7Ci0gICAgICBPdXRwdXRTdHJlYW0gb3MgPSB1cmlGYWN0b3J5Lm5ld1VSSSh3c2lsVVJMKS5nZXRPdXRwdXRTdHJlYW0oKTsKLSAgICAgIGlmIChvcyAhPSBudWxsKQotICAgICAgICB4bWxXcml0ZXIud3JpdGVEb2N1bWVudCh3c2lsRG9jdW1lbnQsIG9zKTsKLSAgICAgIGVsc2UKLSAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7Ci0gICAgICBvcy5jbG9zZSgpOwotICAgIH0KLSAgICBjYXRjaCAoVVJJRXhjZXB0aW9uIHVyaWUpCi0gICAgewotICAgICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggV1NJTE1lc3NhZ2VzLk1TR19FUlJPUl9XUklURV9XU0lMLCB1cmllKTsKLSAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0gICAgY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkKLSAgICB7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBXU0lMTWVzc2FnZXMuTVNHX0VSUk9SX1dSSVRFX1dTSUwsIGlvZSk7Ci0gICAgICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgfQotICAgIGNhdGNoIChXU0lMRXhjZXB0aW9uIHdzaWxlKQotICAgIHsKLSAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTSUxNZXNzYWdlcy5NU0dfRVJST1JfV1JJVEVfV1NJTCwgd3NpbGUpOwotICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotCi0gIHByaXZhdGUgSVN0YXR1cyBpbnRlcm5hbEV4ZWN1dGUoSUVudmlyb25tZW50IGVudmlyb25tZW50LCBXU0lMRG9jdW1lbnQgd3NpbERvY3VtZW50LCBTdHJpbmcgd3NpbCwgU3RyaW5nIHdzZGwsIFN0cmluZyBodHRwVXNlcm5hbWUsIFN0cmluZyBodHRwUGFzc3dvcmQpIHRocm93cyBXV1dBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbgotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLSAgICBBcnJheUxpc3Qgd3NkbFNlcnZpY2UgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgQXJyYXlMaXN0IHdzZGxCaW5kaW5nID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGlmIChyZXNvbHZlV1NETF8pCi0gICAgewotICAgICAgLy8gUGFyc2UgV1NETAotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGRlZmluaXRpb24gPSBwYXJzZVdTREwod3NkbCwgd3NkbFNlcnZpY2UsIHdzZGxCaW5kaW5nLCBodHRwVXNlcm5hbWUsIGh0dHBQYXNzd29yZCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11cmxlKQotICAgICAgewotICAgICAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBXU0lMTWVzc2FnZXMuTVNHX0VSUk9SX0lOVkFMSURfV1NETF9VUkksIG11cmxlKTsKLSAgICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKQotICAgICAgewotICAgICAgICBJU3RhdHVzIHN0YXR1cyA9IFN0YXR1c1V0aWxzLmVycm9yU3RhdHVzKCBXU0lMTWVzc2FnZXMuTVNHX0VSUk9SX1VOUkVTT0xWQUJMRV9XU0RMLCBpb2UpOwotICAgICAgICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIHBjZSkKLSAgICAgIHsKLSAgICAgICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXNVdGlscy5lcnJvclN0YXR1cyggV1NJTE1lc3NhZ2VzLk1TR19FUlJPUl9VTkVYUEVDVEVEX0VYQ0VQVElPTiwgcGNlKTsKLSAgICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBzdGF0dXM7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoU0FYRXhjZXB0aW9uIHNheGUpCi0gICAgICB7Ci0gICAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTSUxNZXNzYWdlcy5NU0dfRVJST1JfTUFMRk9STUVEX1dTREwsIHNheGUpOwotICAgICAgICBlbnZpcm9ubWVudC5nZXRTdGF0dXNIYW5kbGVyKCkucmVwb3J0RXJyb3Ioc3RhdHVzKTsKLSAgICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gQWRkIFdTREwgdG8gV1NJTAotICAgIHRyeQotICAgIHsKLSAgICAgIEluc3BlY3Rpb24gaW5zcGVjdGlvbiA9IHdzaWxEb2N1bWVudC5nZXRJbnNwZWN0aW9uKCk7Ci0gICAgICBTZXJ2aWNlIHNlcnZpY2UgPSB3c2lsRG9jdW1lbnQuY3JlYXRlU2VydmljZSgpOwotICAgICAgaWYgKGRlZmluaXRpb24gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgRWxlbWVudCBkb2N1bWVudGF0aW9uID0gZGVmaW5pdGlvbi5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpOwotICAgICAgICBBYnN0cmFjdCBzZXJ2aWNlQWJzdHJhY3QgPSB3c2lsRG9jdW1lbnQuY3JlYXRlQWJzdHJhY3QoKTsKLSAgICAgICAgc2VydmljZUFic3RyYWN0LnNldFRleHQoRWxlbWVudDJTdHJpbmcoZG9jdW1lbnRhdGlvbikpOwotICAgICAgICBzZXJ2aWNlLmFkZEFic3RyYWN0KHNlcnZpY2VBYnN0cmFjdCk7Ci0gICAgICB9Ci0gICAgICBEZXNjcmlwdGlvbiBkZXNjID0gd3NpbERvY3VtZW50LmNyZWF0ZURlc2NyaXB0aW9uKCk7Ci0gICAgICBkZXNjLnNldFJlZmVyZW5jZWROYW1lc3BhY2UoV1NETENvbnN0YW50cy5OU19VUklfV1NETCk7Ci0gICAgICBkZXNjLnNldExvY2F0aW9uKGdldFJlbGF0aXZlVVJJKHdzaWwsIHdzZGwpKTsKLSAgICAgIEV4dGVuc2lvbkJ1aWxkZXIgZXh0QnVpbGRlciA9IHdzaWxEb2N1bWVudC5nZXRFeHRlbnNpb25SZWdpc3RyeSgpLmdldEJ1aWxkZXIoV1NETENvbnN0YW50cy5OU19VUklfV1NJTF9XU0RMKTsKLSAgICAgIGlmIChkZWZpbml0aW9uID09IG51bGwgfHwgZW5kcG9pbnRQcmVzZW50KGRlZmluaXRpb24pKQotICAgICAgewotICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gd3NkbFNlcnZpY2UuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgICAgewotICAgICAgICAgIFJlZmVyZW5jZSByZWZlcmVuY2UgPSAoUmVmZXJlbmNlKSBleHRCdWlsZGVyLmNyZWF0ZUVsZW1lbnQobmV3IFFOYW1lKFdTRExDb25zdGFudHMuTlNfVVJJX1dTSUxfV1NETCwgV1NETENvbnN0YW50cy5FTEVNX1JFRkVSRU5DRSkpOwotICAgICAgICAgIHJlZmVyZW5jZS5zZXRFbmRwb2ludFByZXNlbnQobmV3IEJvb2xlYW4odHJ1ZSkpOwotICAgICAgICAgIFJlZmVyZW5jZWRTZXJ2aWNlIHJlZlNlcnZpY2UgPSAoUmVmZXJlbmNlZFNlcnZpY2UpIGV4dEJ1aWxkZXIuY3JlYXRlRWxlbWVudChuZXcgUU5hbWUoV1NETENvbnN0YW50cy5OU19VUklfV1NJTF9XU0RMLCBXU0RMQ29uc3RhbnRzLkVMRU1fUkVGX1NFUlZJQ0UpKTsKLSAgICAgICAgICByZWZTZXJ2aWNlLnNldFJlZmVyZW5jZWRTZXJ2aWNlTmFtZSgoUU5hbWUpIGl0Lm5leHQoKSk7Ci0gICAgICAgICAgcmVmZXJlbmNlLnNldFJlZmVyZW5jZWRTZXJ2aWNlKHJlZlNlcnZpY2UpOwotICAgICAgICAgIGRlc2Muc2V0RXh0ZW5zaW9uRWxlbWVudChyZWZlcmVuY2UpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIFJlZmVyZW5jZSByZWZlcmVuY2UgPSAoUmVmZXJlbmNlKSBleHRCdWlsZGVyLmNyZWF0ZUVsZW1lbnQobmV3IFFOYW1lKFdTRExDb25zdGFudHMuTlNfVVJJX1dTSUxfV1NETCwgV1NETENvbnN0YW50cy5FTEVNX1JFRkVSRU5DRSkpOwotICAgICAgICByZWZlcmVuY2Uuc2V0RW5kcG9pbnRQcmVzZW50KG5ldyBCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSB3c2RsQmluZGluZy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KQotICAgICAgICB7Ci0gICAgICAgICAgSW1wbGVtZW50ZWRCaW5kaW5nIGJpbmRpbmcgPSAoSW1wbGVtZW50ZWRCaW5kaW5nKSBleHRCdWlsZGVyLmNyZWF0ZUVsZW1lbnQobmV3IFFOYW1lKFdTRExDb25zdGFudHMuTlNfVVJJX1dTSUxfV1NETCwgV1NETENvbnN0YW50cy5FTEVNX0lNUExfQklORElORykpOwotICAgICAgICAgIGJpbmRpbmcuc2V0QmluZGluZ05hbWUoKFFOYW1lKSBpdC5uZXh0KCkpOwotICAgICAgICAgIHJlZmVyZW5jZS5hZGRJbXBsZW1lbnRlZEJpbmRpbmcoYmluZGluZyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHNlcnZpY2UuYWRkRGVzY3JpcHRpb24oZGVzYyk7Ci0gICAgICBpbnNwZWN0aW9uLmFkZFNlcnZpY2Uoc2VydmljZSk7Ci0gICAgfQotICAgIGNhdGNoIChXU0lMRXhjZXB0aW9uIHdzaWxlKQotICAgIHsKLSAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTSUxNZXNzYWdlcy5NU0dfRVJST1JfVU5FWFBFQ1RFRF9FWENFUFRJT04sIHdzaWxlKTsKLSAgICAgIGVudmlyb25tZW50LmdldFN0YXR1c0hhbmRsZXIoKS5yZXBvcnRFcnJvcihzdGF0dXMpOwotICAgICAgcmV0dXJuIHN0YXR1czsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIFdTSUxNZXNzYWdlcy5NU0dfRVJST1JfVU5FWFBFQ1RFRF9FWENFUFRJT04sIHQpOwotICAgICAgZW52aXJvbm1lbnQuZ2V0U3RhdHVzSGFuZGxlcigpLnJlcG9ydEVycm9yKHN0YXR1cyk7Ci0gICAgICByZXR1cm4gc3RhdHVzOwotICAgIH0KLSAgICByZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmLCBhbmQgb25seSBpZiwgdGhlIENvbW1hbmQncyA8Y29kZT51bmRvPC9jb2RlPgotICAgKiBtZXRob2QgaXMgc3VwcG9ydGVkLgotICAgKiAKLSAgICogQHJldHVybiBUcnVlIGlmIHRoZSBDb21tYW5kIHN1cHBvcnRzIGJlaW5nIHVuZG9uZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzVW5kb2FibGUoKQotICB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIFVuZG9lcyB0aGUgQ29tbWFuZC4KLSAgICogCi0gICAqIEBwYXJhbSBlbnZpcm9ubWVudAotICAgKiAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudC4gTXVzdCBub3QgYmUgbnVsbC4KLSAgICogQHJldHVybiBBIDxjb2RlPlN0YXR1czwvY29kZT4gb2JqZWN0IGluZGljYXRpbmcgdGhlIGRlZ3JlZSB0byB3aGljaCB0aGUKLSAgICogICAgICAgICA8Y29kZT51bmRvPC9jb2RlPiBtZXRob2Qgd2FzIHN1Y2Nlc3NmdWwuIEEgdmFsdWQgb2YgPGNvZGU+bnVsbDwvY29kZT4sCi0gICAqICAgICAgICAgb3IgYSBTdGF0dXMgd2l0aCBhIHNldmVyaXR5IG9mIGxlc3MgdGhhbiA8Y29kZT5TdGF0dXMuRVJST1I8L2NvZGU+Ci0gICAqICAgICAgICAgc2lnbmlmaWVzIHN1Y2Nlc3MuCi0gICAqLwotICBwdWJsaWMgSVN0YXR1cyB1bmRvKElFbnZpcm9ubWVudCBlbnZpcm9ubWVudCkKLSAgewotICAgIHJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotICB9Ci0KLSAgcHJpdmF0ZSBEZWZpbml0aW9uIHBhcnNlV1NETChTdHJpbmcgd3NkbCwgQXJyYXlMaXN0IHdzZGxTZXJ2aWNlLCBBcnJheUxpc3Qgd3NkbEJpbmRpbmcsIFN0cmluZyBodHRwVXNlcm5hbWUsIFN0cmluZyBodHRwUGFzc3dvcmQpIHRocm93cyBNYWxmb3JtZWRVUkxFeGNlcHRpb24sIElPRXhjZXB0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sIFdXV0F1dGhlbnRpY2F0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICBXZWJTZXJ2aWNlc1BhcnNlciB3c1BhcnNlciA9IG5ldyBXZWJTZXJ2aWNlc1BhcnNlcih3c2RsKTsKLSAgICBpZiAoaHR0cFVzZXJuYW1lICE9IG51bGwgJiYgaHR0cFBhc3N3b3JkICE9IG51bGwpCi0gICAgewotICAgICAgd3NQYXJzZXIuc2V0SFRUUEJhc2ljQXV0aFVzZXJuYW1lKGh0dHBVc2VybmFtZSk7Ci0gICAgICB3c1BhcnNlci5zZXRIVFRQQmFzaWNBdXRoUGFzc3dvcmQoaHR0cFBhc3N3b3JkKTsKLSAgICB9Ci0gICAgd3NQYXJzZXIucGFyc2UoV2ViU2VydmljZXNQYXJzZXIuUEFSU0VfTk9ORSk7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gd3NQYXJzZXIuZ2V0V1NETERlZmluaXRpb24od3NkbCk7Ci0gICAgaWYgKGRlZmluaXRpb24gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBNYXAgc2VydmljZXMgPSBkZWZpbml0aW9uLmdldFNlcnZpY2VzKCk7Ci0gICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gc2VydmljZXMua2V5U2V0KCkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgICAgd3NkbFNlcnZpY2UuYWRkKHBhcnNlUU5hbWUoKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIGl0Lm5leHQoKSkpOwotICAgICAgTWFwIGJpbmRpbmdzID0gZGVmaW5pdGlvbi5nZXRCaW5kaW5ncygpOwotICAgICAgZm9yIChJdGVyYXRvciBpdCA9IGJpbmRpbmdzLmtleVNldCgpLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspCi0gICAgICAgIHdzZGxCaW5kaW5nLmFkZChwYXJzZVFOYW1lKChqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSBpdC5uZXh0KCkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlZmluaXRpb247Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gZW5kcG9pbnRQcmVzZW50KERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgIHJldHVybiAoZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpLnNpemUoKSA+IDApOwotICB9Ci0KLSAgcHVibGljIFN0cmluZ1tdIGdldEFyZ3VtZW50cygpCi0gIHsKLSAgICByZXR1cm4gYXJnc187Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRBcmd1bWVudHMoU3RyaW5nW10gYXJncykKLSAgewotICAgIGFyZ3NfID0gYXJnczsKLSAgfQotCi0gIHB1YmxpYyBXV1dBdXRoZW50aWNhdGlvbkhhbmRsZXIgZ2V0V1dXQXV0aGVudGljYXRpb25IYW5kbGVyKCkKLSAgewotICAgIHJldHVybiB3d3dBdXRoSGFuZGxlcl87Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRXV1dBdXRoZW50aWNhdGlvbkhhbmRsZXIoV1dXQXV0aGVudGljYXRpb25IYW5kbGVyIHd3d0F1dGhIYW5kbGVyKQotICB7Ci0gICAgd3d3QXV0aEhhbmRsZXJfID0gd3d3QXV0aEhhbmRsZXI7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgcGFyc2VBcmd1bWVudHMoKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50c0V4Y2VwdGlvbgotICB7Ci0gICAgY2xlYXJQYXJzZWRBcmdzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzXy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoQVJHX1dTSUwuZXF1YWxzKGFyZ3NfW2ldKSkKLSAgICAgICAgd3NpbF8gPSBhcmdzX1srK2ldOwotICAgICAgZWxzZSBpZiAoQVJHX1dTREwuZXF1YWxzKGFyZ3NfW2ldKSkKLSAgICAgICAgd3NkbHNfLmFkZChhcmdzX1srK2ldKTsKLSAgICAgIGVsc2UgaWYgKEFSR19SRVNPTFZFX1dTREwuZXF1YWxzKGFyZ3NfW2ldKSkKLSAgICAgICAgcmVzb2x2ZVdTRExfID0gdHJ1ZTsKLSAgICAgIGVsc2UgaWYgKEFSR19IVFRQX0JBU0lDX0FVVEhfVVNFUk5BTUUuZXF1YWxzKGFyZ3NfW2ldKSkKLSAgICAgICAgaHR0cFVzZXJuYW1lXyA9IGFyZ3NfWysraV07Ci0gICAgICBlbHNlIGlmIChBUkdfSFRUUF9CQVNJQ19BVVRIX1BBU1NXT1JELmVxdWFscyhhcmdzX1tpXSkpCi0gICAgICAgIGh0dHBQYXNzd29yZF8gPSBhcmdzX1srK2ldOwotICAgICAgZWxzZQotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50c0V4Y2VwdGlvbihhcmdzX1tpXSk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBRTmFtZSBwYXJzZVFOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUgcW5hbWUpCi0gIHsKLSAgICByZXR1cm4gbmV3IFFOYW1lKHFuYW1lLmdldE5hbWVzcGFjZVVSSSgpLCBxbmFtZS5nZXRMb2NhbFBhcnQoKSk7Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBFbGVtZW50MlN0cmluZyhFbGVtZW50IGUpIHRocm93cyBUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbgotICB7Ci0gICAgYnl0ZVtdIGIgPSBuZXcgYnl0ZVswXTsKLSAgICBpZiAoZSAhPSBudWxsKQotICAgIHsKLSAgICAgIERPTVNvdXJjZSBkb21Tb3VyY2UgPSBuZXcgRE9NU291cmNlKGUpOwotICAgICAgVHJhbnNmb3JtZXIgc2VyaWFsaXplciA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld1RyYW5zZm9ybWVyKCk7Ci0gICAgICBzZXJpYWxpemVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuSU5ERU5ULCAieWVzIik7Ci0gICAgICBzZXJpYWxpemVyLnNldE91dHB1dFByb3BlcnR5KCJ7aHR0cDovL3htbC5hcGFjaGUub3JnL3hzbHR9aW5kZW50LWFtb3VudCIsICIyIik7Ci0gICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKLSAgICAgIHNlcmlhbGl6ZXIudHJhbnNmb3JtKGRvbVNvdXJjZSwgbmV3IFN0cmVhbVJlc3VsdChiYW9zKSk7Ci0gICAgICBiYW9zLmNsb3NlKCk7Ci0gICAgICBiID0gYmFvcy50b0J5dGVBcnJheSgpOwotICAgIH0KLSAgICByZXR1cm4gbmV3IFN0cmluZyhiKTsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIHBsYXRmb3JtMkZpbGUoSVVSSUZhY3RvcnkgdXJpRmFjdG9yeSwgU3RyaW5nIHVyaSkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHJldHVybiB1cmlGYWN0b3J5Lm5ld1VSSSh1cmkpLmFzRmlsZSgpLnRvVVJMKCkudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIHQucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotICAgIHJldHVybiB1cmk7Ci0gIH0KLQotICBwcml2YXRlIGZpbmFsIGNoYXIgRldEX1NMQVNIID0gJy8nOwotICBwcml2YXRlIGZpbmFsIGNoYXIgQldEX1NMQVNIID0gJ1xcJzsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgcGFyZW50RGlyID0gIi4uLyI7Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0UmVsYXRpdmVVUkkoU3RyaW5nIGJhc2VVUkksIFN0cmluZyB0YXJnZXRVUkkpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBTdHJpbmcgYmFzZVVSSUNvcHkgPSBiYXNlVVJJLnJlcGxhY2UoQldEX1NMQVNILCBGV0RfU0xBU0gpOwotICAgICAgU3RyaW5nIHRhcmdldFVSSUNvcHkgPSB0YXJnZXRVUkkucmVwbGFjZShCV0RfU0xBU0gsIEZXRF9TTEFTSCk7Ci0gICAgICBpbnQgbWF0Y2hpbmdJbmRleCA9IC0xOwotICAgICAgaW50IGluZGV4ID0gdGFyZ2V0VVJJQ29weS5pbmRleE9mKEZXRF9TTEFTSCk7Ci0gICAgICB3aGlsZSAoaW5kZXggIT0gLTEpCi0gICAgICB7Ci0gICAgICAgIGlmIChiYXNlVVJJQ29weS5zdGFydHNXaXRoKHRhcmdldFVSSUNvcHkuc3Vic3RyaW5nKDAsIGluZGV4ICsgMSkpKQotICAgICAgICB7Ci0gICAgICAgICAgbWF0Y2hpbmdJbmRleCA9IGluZGV4OwotICAgICAgICAgIGluZGV4ID0gdGFyZ2V0VVJJQ29weS5pbmRleE9mKEZXRF9TTEFTSCwgaW5kZXggKyAxKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZiAobWF0Y2hpbmdJbmRleCAhPSAtMSkKLSAgICAgIHsKLSAgICAgICAgaW50IHNsYXNoQ291bnQgPSAtMTsKLSAgICAgICAgaW50IGZyb21JbmRleCA9IG1hdGNoaW5nSW5kZXg7Ci0gICAgICAgIHdoaWxlIChmcm9tSW5kZXggIT0gLTEpCi0gICAgICAgIHsKLSAgICAgICAgICBzbGFzaENvdW50Kys7Ci0gICAgICAgICAgZnJvbUluZGV4ID0gYmFzZVVSSUNvcHkuaW5kZXhPZihGV0RfU0xBU0gsIGZyb21JbmRleCArIDEpOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZ0J1ZmZlciByZWxhdGl2ZVVSSSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzbGFzaENvdW50OyBpKyspCi0gICAgICAgICAgcmVsYXRpdmVVUkkuYXBwZW5kKHBhcmVudERpcik7Ci0gICAgICAgIHJlbGF0aXZlVVJJLmFwcGVuZCh0YXJnZXRVUkkuc3Vic3RyaW5nKG1hdGNoaW5nSW5kZXggKyAxLCB0YXJnZXRVUkkubGVuZ3RoKCkpKTsKLSAgICAgICAgcmV0dXJuIHJlbGF0aXZlVVJJLnRvU3RyaW5nKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLSAgICB7Ci0gICAgfQotICAgIHJldHVybiB0YXJnZXRVUkk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9BYnN0cmFjdFdlYlNlcnZpY2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9BYnN0cmFjdFdlYlNlcnZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUxNjhiYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvQWJzdHJhY3RXZWJTZXJ2aWNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci0KLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0V2ViU2VydmljZSBpbXBsZW1lbnRzIElXZWJTZXJ2aWNlIHsKLQkKLQlwcml2YXRlIFdlYlNlcnZpY2VJbmZvIGluZm87Ci0KLQlwdWJsaWMgQWJzdHJhY3RXZWJTZXJ2aWNlKFdlYlNlcnZpY2VJbmZvIGluZm8pIHsKLQkJdGhpcy5pbmZvID0gaW5mbzsKLQl9Ci0JCi0KLQlwdWJsaWMgV2ViU2VydmljZUluZm8gZ2V0V2ViU2VydmljZUluZm8oKSB7Ci0JCXJldHVybiBpbmZvOwotCX0KLQotCXB1YmxpYyBhYnN0cmFjdCBJQ29tbWFuZEZhY3RvcnkgYXNzZW1ibGUoSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwKLQkJCVN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCk7Ci0JCi0KLQlwdWJsaWMgYWJzdHJhY3QgSUNvbW1hbmRGYWN0b3J5IGRlcGxveShJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotICAgICAgU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KTsKLQkKLQotCXB1YmxpYyBhYnN0cmFjdCBJQ29tbWFuZEZhY3RvcnkgZGV2ZWxvcChJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotICAgICAgU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KTsKLQkJCi0KLQlwdWJsaWMgYWJzdHJhY3QgSUNvbW1hbmRGYWN0b3J5IGluc3RhbGwoSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwKLSAgICAgIFN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCk7Ci0JCi0KLQlwdWJsaWMgYWJzdHJhY3QgSUNvbW1hbmRGYWN0b3J5IHJ1bihJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotICAgICAgU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9BYnN0cmFjdFdlYlNlcnZpY2VDbGllbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9BYnN0cmFjdFdlYlNlcnZpY2VDbGllbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZjYTU3MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvQWJzdHJhY3RXZWJTZXJ2aWNlQ2xpZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci0KLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0V2ViU2VydmljZUNsaWVudCBpbXBsZW1lbnRzIElXZWJTZXJ2aWNlQ2xpZW50IHsKLQkKLQlwcml2YXRlIFdlYlNlcnZpY2VDbGllbnRJbmZvIGluZm87Ci0KLQlwdWJsaWMgQWJzdHJhY3RXZWJTZXJ2aWNlQ2xpZW50KFdlYlNlcnZpY2VDbGllbnRJbmZvIGluZm8pIHsKLQkJdGhpcy5pbmZvID0gaW5mbzsKLQl9Ci0JCi0KLQlwdWJsaWMgV2ViU2VydmljZUNsaWVudEluZm8gZ2V0V2ViU2VydmljZUNsaWVudEluZm8oKSB7Ci0JCXJldHVybiBpbmZvOwotCX0KLQotCXB1YmxpYyBhYnN0cmFjdCBJQ29tbWFuZEZhY3RvcnkgYXNzZW1ibGUoSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwKLSAgICAgIFN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCk7Ci0JCi0KLQlwdWJsaWMgYWJzdHJhY3QgSUNvbW1hbmRGYWN0b3J5IGRlcGxveShJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotICAgICAgU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KTsKLQkKLQotCXB1YmxpYyBhYnN0cmFjdCBJQ29tbWFuZEZhY3RvcnkgZGV2ZWxvcChJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotICAgICAgU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KTsKLQkJCi0KLQlwdWJsaWMgYWJzdHJhY3QgSUNvbW1hbmRGYWN0b3J5IGluc3RhbGwoSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwKLSAgICAgIFN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCk7Ci0JCi0KLQlwdWJsaWMgYWJzdHJhY3QgSUNvbW1hbmRGYWN0b3J5IHJ1bihJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLAotICAgICAgU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KTsKLX0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0Fic3RyYWN0V2ViU2VydmljZVJ1bnRpbWUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9BYnN0cmFjdFdlYlNlcnZpY2VSdW50aW1lLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3OTAzM2UuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0Fic3RyYWN0V2ViU2VydmljZVJ1bnRpbWUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLklDb21tYW5kRmFjdG9yeTsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0V2ViU2VydmljZVJ1bnRpbWUgaW1wbGVtZW50cyBJV2ViU2VydmljZVJ1bnRpbWUgewotCi0JcHVibGljIGFic3RyYWN0IElXZWJTZXJ2aWNlIGdldFdlYlNlcnZpY2UoV2ViU2VydmljZUluZm8gaW5mbyk7Ci0JLyoqCi0JICovCi0JcHVibGljIGFic3RyYWN0IElXZWJTZXJ2aWNlQ2xpZW50IGdldFdlYlNlcnZpY2VDbGllbnQoV2ViU2VydmljZUNsaWVudEluZm8gaW5mbyk7Ci0JLyoqCi0JICovCi0JcHVibGljIElDb21tYW5kRmFjdG9yeSBhbm5vdW5jZShJV2ViU2VydmljZSB3ZWJTZXJ2aWNlKQotCXsKLQkJLy9UT0RPIHByb3ZpZGUgYSBib2lsZXItcGxhdGUgYW5ub3VuY2UgaW1wbGVtZW50YXRpb24uCi0JCXJldHVybiBudWxsOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9BYnN0cmFjdFdlYlNlcnZpY2VSdW50aW1lQ2hlY2tlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0Fic3RyYWN0V2ViU2VydmljZVJ1bnRpbWVDaGVja2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwY2U1MTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0Fic3RyYWN0V2ViU2VydmljZVJ1bnRpbWVDaGVja2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzExMDcgMjAzODI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MTEzMCAyMDM4MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMzI2ICAgMTk4NDM5IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci0KLXB1YmxpYyBjbGFzcyBBYnN0cmFjdFdlYlNlcnZpY2VSdW50aW1lQ2hlY2tlciBpbXBsZW1lbnRzCi0JCUlXZWJTZXJ2aWNlUnVudGltZUNoZWNrZXIgewotCi0JcHVibGljIElTdGF0dXMgY2hlY2tSdW50aW1lQ29tcGF0aWJpbGl0eShTdHJpbmcgc2VydmVyVHlwZUlkLCBTdHJpbmcgc2VydmVySW5zdGFuY2VJZCwKLQkJCVN0cmluZyBwcm9qZWN0TmFtZSwgU3RyaW5nIHByb2plY3RUeXBlSWQsIFN0cmluZyBlYXJQcm9qZWN0TmFtZSkgewotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0JCi0JcHVibGljIElTdGF0dXMgY2hlY2tTZXJ2aWNlQ2xpZW50Q29tcGF0aWJpbGl0eShib29sZWFuIHNlcnZpY2VOZWVkRUFSLAotCQkJU3RyaW5nIHNlcnZpY2VFQVJOYW1lLCBTdHJpbmcgc2VydmljZVByb2plY3ROYW1lLAotCQkJYm9vbGVhbiBjbGllbnROZWVkRUFSLCBTdHJpbmcgY2xpZW50RUFSTmFtZSwKLQkJCVN0cmluZyBjbGllbnRQcm9qZWN0TmFtZSkgewotCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQl9Ci0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSUNvbnRleHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTM3MThmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0OwotCi1wdWJsaWMgaW50ZXJmYWNlIElDb250ZXh0IHsKLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRBc3NlbWJsZSgpOwotCQotCXB1YmxpYyBib29sZWFuIGdldENoZWNrT3V0RmlsZXMoKTsKLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRDbGllbnQoKTsKLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRDcmVhdGVGb2xkZXJzKCk7Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0RGVwbG95KCk7Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0RGV2ZWxvcCgpOwotCQotCXB1YmxpYyBib29sZWFuIGdldEluc3RhbGwoKTsKLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRPdmVyV3JpdGVGaWxlcygpOwotCQotCXB1YmxpYyBib29sZWFuIGdldFB1Ymxpc2goKTsKLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRSdW4oKTsKLQkKLQlwdWJsaWMgV2ViU2VydmljZVNjZW5hcmlvIGdldFNjZW5hcmlvKCk7Ci0JCi0JcHVibGljIGJvb2xlYW4gZ2V0VGVzdCgpOwotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSU1lcmdlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0lNZXJnZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZkYzcyNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSU1lcmdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNTA5ICAgMTgyMjc0IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklTdGF0dXNIYW5kbGVyOwotCi0vKgotICogVGhlIElNZXJnZXIgaW50ZXJmYWNlIGhhbmRsZXMgbWVyZ2luZyBvZiB0aGUgYXJyYXkgb2YgSUZpbGVzLiAgVXNlcnMgb2YgdGhlIElNZXJnZXIgaW50ZXJmYWNlIHNob3VsZDoKLSAqIDEuIENhbGwgbG9hZCgpIHdpdGggdGhlIGFycmF5IG9mIElGaWxlcyB0byBsb2FkIGFuZCBzdG9yZWQgaW4gbWVyZ2UgbW9kZWxzCi0gKiAyLiBDYWxsIG1lcmdlKCkgdG8gbWVyZ2UgdGhlIGN1cnJlbnQgY29udGVudHMgb2YgdGhlIElGaWxlcyB3aXRoIHRoZSBtZXJnZWQgbW9kZWxzIHRoYXQgaGFkIGJlZW4gc3RvcmVkIAotICogcHJldmlvdXNseSAoYXQgdGhlIHRpbWUgbG9hZCB3YXMgY2FsbGVkKS4KLSAqIAotICogVGhpcyBjbGFzcyBpcyBub3QgbWVhbnQgdG8gYmUgaW1wbGVtZW50ZWQgZGlyZWN0bHkuICBJbXBsZW1lbnRlcnMgc2hvdWxkIHN1YmNsYXNzIHRoZSBNZXJnZXIgY2xhc3MgaW5zdGVhZC4KLSAqLwotcHVibGljIGludGVyZmFjZSBJTWVyZ2VyIHsgCi0JCi0JLyoqCi0JICogTG9hZCB0aGUgdXJpcyBzcGVjaWZpZWQgc28gdGhhdCBhIG1lcmdlIGNhbiBiZSBkb25lIGxhdGVyIG9uCi0JICogQHBhcmFtIHVybHMKLQkgKiBAcmV0dXJuIElTdGF0dXMKLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBsb2FkKElGaWxlW10gZmlsZXMpOwotCQotCS8qKgotCSAqIE1lcmdlIHRoZSBjdXJyZW50IGNvbnRlbnQgb2YgdGhlIGFycmF5IG9mIElGaWxlcyB3aXRoIHdoYXQgaGFkIGJlZW4gc3RvcmVkIHdoZW4gbG9hZCB3YXMgZmlyc3QgY2FsbGVkIGFuZCB3cml0ZSAKLQkgKiB0aGUgbWVyZ2VkIGNvbnRlbnQgYmFjayBpbiB0aGUgZmlsZXMuIAotCSAqIEBwYXJhbSBtb25pdG9yIFByb2dyZXNzIG1vbml0b3IKLQkgKiBAcGFyYW0gc3RhdHVzSGFuZGxlciBUaGUgc3RhdHVzIGhhbmRsZXIgdXNlZCB0byBoYW5kbGUgdGhlIHdyaXRpbmcgb2YgdGhlIG1lcmdlZCBjb250ZW50Ci0JICogQHJldHVybiBJU3RhdHVzCi0JICovCi0JcHVibGljIElTdGF0dXMgbWVyZ2UoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yLCBJU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JU2VsZWN0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSVNlbGVjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODkzYjVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JU2VsZWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVNlbGVjdGlvbiB7Ci0JCi0JT2JqZWN0W10gZ2V0U2VsZWN0aW9uKCk7Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JV2ViU2VydmljZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0lXZWJTZXJ2aWNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyM2U2MWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0lXZWJTZXJ2aWNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0OwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci0KLQotcHVibGljIGludGVyZmFjZSBJV2ViU2VydmljZSB7Ci0KLQkvKioKLQkgKi8KLQlwdWJsaWMgV2ViU2VydmljZUluZm8gZ2V0V2ViU2VydmljZUluZm8oKTsKLQkKLQlwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGRldmVsb3AoSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwgU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KTsKLQlwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGRlcGxveShJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLCBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpOwotCXB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgYXNzZW1ibGUoSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwgU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KTsKLQlwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGluc3RhbGwoSUVudmlyb25tZW50IGVudiwgSUNvbnRleHQgY3R4LCBJU2VsZWN0aW9uIHNlbCwgU3RyaW5nIHByb2plY3QsIFN0cmluZyBlYXJQcm9qZWN0KTsKLQlwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IHJ1bihJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLCBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0lXZWJTZXJ2aWNlQ2xpZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSVdlYlNlcnZpY2VDbGllbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMyMWVjYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSVdlYlNlcnZpY2VDbGllbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JRW52aXJvbm1lbnQ7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVdlYlNlcnZpY2VDbGllbnQgewotCQotCS8qKgotCSAqLwotCXB1YmxpYyBXZWJTZXJ2aWNlQ2xpZW50SW5mbyBnZXRXZWJTZXJ2aWNlQ2xpZW50SW5mbygpOwotCQotCXB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgZGV2ZWxvcChJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLCBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpOwotCXB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgZGVwbG95KElFbnZpcm9ubWVudCBlbnYsIElDb250ZXh0IGN0eCwgSVNlbGVjdGlvbiBzZWwsIFN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCk7Ci0JcHVibGljIElDb21tYW5kRmFjdG9yeSBhc3NlbWJsZShJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLCBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpOwotCXB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgaW5zdGFsbChJRW52aXJvbm1lbnQgZW52LCBJQ29udGV4dCBjdHgsIElTZWxlY3Rpb24gc2VsLCBTdHJpbmcgcHJvamVjdCwgU3RyaW5nIGVhclByb2plY3QpOwotCXB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgcnVuKElFbnZpcm9ubWVudCBlbnYsIElDb250ZXh0IGN0eCwgSVNlbGVjdGlvbiBzZWwsIFN0cmluZyBwcm9qZWN0LCBTdHJpbmcgZWFyUHJvamVjdCk7CQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSVdlYlNlcnZpY2VQdWJsaXNoZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JV2ViU2VydmljZVB1Ymxpc2hlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmRjNWU4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JV2ViU2VydmljZVB1Ymxpc2hlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLklDb21tYW5kRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLQotcHVibGljIGludGVyZmFjZSBJV2ViU2VydmljZVB1Ymxpc2hlciB7Ci0JCi0JcHVibGljIElDb21tYW5kRmFjdG9yeSBwdWJsaXNoKElFbnZpcm9ubWVudCBlbnYsIElXZWJTZXJ2aWNlIHdzKTsKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0lXZWJTZXJ2aWNlUnVudGltZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0lXZWJTZXJ2aWNlUnVudGltZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjhjMmU4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JV2ViU2VydmljZVJ1bnRpbWUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci0KLQotcHVibGljIGludGVyZmFjZSBJV2ViU2VydmljZVJ1bnRpbWUgewotCQotCS8qKgotCSAqLwotCXB1YmxpYyBJV2ViU2VydmljZSBnZXRXZWJTZXJ2aWNlKFdlYlNlcnZpY2VJbmZvIGluZm8pOwotCS8qKgotCSAqLwotCXB1YmxpYyBJV2ViU2VydmljZUNsaWVudCBnZXRXZWJTZXJ2aWNlQ2xpZW50KFdlYlNlcnZpY2VDbGllbnRJbmZvIGluZm8pOwotCS8qKgotCSAqLwotCXB1YmxpYyBJQ29tbWFuZEZhY3RvcnkgYW5ub3VuY2UoSVdlYlNlcnZpY2Ugd2ViU2VydmljZSk7Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSVdlYlNlcnZpY2VSdW50aW1lQ2hlY2tlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ZiZjgwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9JV2ViU2VydmljZVJ1bnRpbWVDaGVja2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzExMDcgMjAzODI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MTEzMCAyMDM4MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDgwMzI2ICAgMTk4NDM5IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotCi0vKgotICogVGhlIElXZWJTZXJ2aWNlUnVudGltZUNoZWNrZXIgaW50ZXJmYWNlIGFsbG93IHRoZSBleHRlbmRlciB0byBoYXZlIGEgd2F5IHRvIGNoZWNrIHRoZSAKLSAqIHRoZSBXZWIgc2VydmljZSBydW50aW1lJ3MgY29tcGF0aWJpbGl0eSB3aXRoIHNlcnZlciB0eXBlLCBwcm9qZWN0LCBwcm9qZWN0IHR5cGUgYW5kIEVBUi4KLSAqIFRoaXMgY2xhc3MgY2FuIGJlIHByb3ZpZGVkIGFzIHRoZSBydW50aW1lQ2hlY2tlciBhdHRyaWJ1dGUgaW4gdGhlIAotICogIm9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5jbGllbnRSdW50aW1lcyIgYW5kCi0gKiAib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLnNlcnZpY2VSdW50aW1lcyIgZXh0ZW5zaW9uIHBvaW50cy4KLSAqLwotCi1wdWJsaWMgaW50ZXJmYWNlIElXZWJTZXJ2aWNlUnVudGltZUNoZWNrZXIgewotCi0JLyoqCi0JICogQHBhcmFtIHNlcnZlclR5cGVJZCBzZXJ2ZXIgdHlwZSBJRAotCSAqIEBwYXJhbSBzZXJ2ZXJJbnN0YW5hY2VJZCBzZXJ2ZXIgaW5zdGFuY2UgSUQKLQkgKiBAcGFyYW0gcHJvamVjdE5hbWUgcHJvamVjdCBuYW1lIAotCSAqIEBwYXJhbSBwcm9qZWN0VHlwZUlkIHByb2plY3QgdGVtcGxhdGUgSUQsIHNldCB0byAiIiBpZiB0aGUgcHJvamVjdCBzcGVjaWZpZWQgYnkgcHJvamVjdE5hbWUgYWxyZWFkeSBleGlzdCAKLQkgKiBAcGFyYW0gZWFyUHJvamVjdE5hbWUgRUFSIHByb2plY3QgbmFtZQotCSAqIEByZXR1cm4gSVN0YXR1cwotCSAqLwotCXB1YmxpYyBJU3RhdHVzIGNoZWNrUnVudGltZUNvbXBhdGliaWxpdHkoU3RyaW5nIHNlcnZlclR5cGVJZCwgU3RyaW5nIHNlcnZlckluc3RhbmNlSWQsIAotCQkJU3RyaW5nIHByb2plY3ROYW1lLCBTdHJpbmcgcHJvamVjdFR5cGVJZCwgU3RyaW5nIGVhclByb2plY3ROYW1lKTsKLQkKLQkvKioKLQkgKiBAcGFyYW0gc2VydmljZU5lZWRFQVIKLQkgKiBAcGFyYW0gc2VydmljZUVBUk5hbWUKLQkgKiBAcGFyYW0gc2VydmljZVByb2plY3ROYW1lCi0JICogQHBhcmFtIGNsaWVudE5lZWRFQVIKLQkgKiBAcGFyYW0gY2xpZW50RUFSTmFtZQotCSAqIEBwYXJhbSBjbGllbnRQcm9qZWN0TmFtZQotCSAqIEByZXR1cm4KLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBjaGVja1NlcnZpY2VDbGllbnRDb21wYXRpYmlsaXR5KGJvb2xlYW4gc2VydmljZU5lZWRFQVIsIFN0cmluZyBzZXJ2aWNlRUFSTmFtZSwgU3RyaW5nIHNlcnZpY2VQcm9qZWN0TmFtZSwgCi0JCQlib29sZWFuIGNsaWVudE5lZWRFQVIsIFN0cmluZyBjbGllbnRFQVJOYW1lLCBTdHJpbmcgY2xpZW50UHJvamVjdE5hbWUpOwotCQotCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L0lXZWJTZXJ2aWNlVGVzdGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSVdlYlNlcnZpY2VUZXN0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ3NDhhYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvSVdlYlNlcnZpY2VUZXN0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5JQ29tbWFuZEZhY3Rvcnk7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgSVdlYlNlcnZpY2VUZXN0ZXIgewotICBwdWJsaWMgSUNvbW1hbmRGYWN0b3J5IGdlbmVyYXRlKFRlc3RJbmZvIHRlc3RJbmZvKTsKLSAgcHVibGljIElDb21tYW5kRmFjdG9yeSBsYXVuY2goVGVzdEluZm8gdGVzdEluZm8pOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L01lcmdlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L01lcmdlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzk1N2ZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9NZXJnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDUwOSAgIDE4MjI3NCBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklTdGF0dXNIYW5kbGVyOwotCi0vKgotICogTWVyZ2VyIGlzIHRoZSBBYnN0cmFjdCBjbGFzcyB0aGF0IHNob3VsZCBiZSBzdWJjbGFzc2VkLiAKLSAqLwotcHVibGljIGNsYXNzIE1lcmdlciBpbXBsZW1lbnRzIElNZXJnZXIgewotCi0JcHVibGljIElTdGF0dXMgbG9hZChJRmlsZVtdIGZpbGVzKSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCXB1YmxpYyBJU3RhdHVzIG1lcmdlKElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSVN0YXR1c0hhbmRsZXIgc3RhdHVzSGFuZGxlcikgewotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9TaW1wbGVDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvU2ltcGxlQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjg0YjRhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9TaW1wbGVDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0OwotCi0KLXB1YmxpYyBjbGFzcyBTaW1wbGVDb250ZXh0IGltcGxlbWVudHMgSUNvbnRleHQgewotCi0JYm9vbGVhbiBkZXZlbG9wOwotCWJvb2xlYW4gYXNzZW1ibGU7Ci0JYm9vbGVhbiBkZXBsb3k7Ci0JYm9vbGVhbiBpbnN0YWxsOwotCWJvb2xlYW4gcnVuOwotCWJvb2xlYW4gY2xpZW50OwotCWJvb2xlYW4gdGVzdDsKLQlib29sZWFuIHB1Ymxpc2g7Ci0JCi0JV2ViU2VydmljZVNjZW5hcmlvIHNjZW5hcmlvOwotCQotCWJvb2xlYW4gb3ZlcndyaXRlRmlsZXM7Ci0JYm9vbGVhbiBjcmVhdGVGb2xkZXJzOwotCWJvb2xlYW4gY2hlY2tPdXRGaWxlczsKLQkKLQkKLQkKLQkKLQlwdWJsaWMgU2ltcGxlQ29udGV4dCgpCi0JewotCQlzdXBlcigpOwotCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNvbnN0cnVjdG9yIHN0dWIKLQl9Ci0KLQlwdWJsaWMgU2ltcGxlQ29udGV4dChib29sZWFuIGRldmVsb3AsIGJvb2xlYW4gYXNzZW1ibGUsIGJvb2xlYW4gZGVwbG95LCBib29sZWFuIGluc3RhbGwsIGJvb2xlYW4gcnVuLCBib29sZWFuIGNsaWVudCwgYm9vbGVhbiB0ZXN0LCBib29sZWFuIHB1Ymxpc2gsIFdlYlNlcnZpY2VTY2VuYXJpbyBzY2VuYXJpbywgYm9vbGVhbiBvdmVyd3JpdGVGaWxlcywgYm9vbGVhbiBmb2xkZXJzLCBib29sZWFuIGNoZWNrT3V0RmlsZXMpIHsKLQkJc3VwZXIoKTsJCQotCQl0aGlzLmRldmVsb3AgPSBkZXZlbG9wOwotCQl0aGlzLmFzc2VtYmxlID0gYXNzZW1ibGU7Ci0JCXRoaXMuZGVwbG95ID0gZGVwbG95OwotCQl0aGlzLmluc3RhbGwgPSBpbnN0YWxsOwotCQl0aGlzLnJ1biA9IHJ1bjsKLQkJdGhpcy5jbGllbnQgPSBjbGllbnQ7Ci0JCXRoaXMudGVzdCA9IHRlc3Q7Ci0JCXRoaXMucHVibGlzaCA9IHB1Ymxpc2g7Ci0JCXRoaXMuc2NlbmFyaW8gPSBzY2VuYXJpbzsKLQkJdGhpcy5vdmVyd3JpdGVGaWxlcyA9IG92ZXJ3cml0ZUZpbGVzOwotCQl0aGlzLmNyZWF0ZUZvbGRlcnMgPSBmb2xkZXJzOwotCQl0aGlzLmNoZWNrT3V0RmlsZXMgPSBjaGVja091dEZpbGVzOwotCX0KLQkKLQlwdWJsaWMgYm9vbGVhbiBnZXRBc3NlbWJsZSgpIHsKLQkJcmV0dXJuIGFzc2VtYmxlOwotCX0KLQlwdWJsaWMgdm9pZCBzZXRBc3NlbWJsZShib29sZWFuIGFzc2VtYmxlKSB7Ci0JCXRoaXMuYXNzZW1ibGUgPSBhc3NlbWJsZTsKLQl9Ci0JcHVibGljIGJvb2xlYW4gZ2V0Q2hlY2tPdXRGaWxlcygpIHsKLQkJcmV0dXJuIGNoZWNrT3V0RmlsZXM7Ci0JfQotCXB1YmxpYyB2b2lkIHNldENoZWNrT3V0RmlsZXMoYm9vbGVhbiBjaGVja091dEZpbGVzKSB7Ci0JCXRoaXMuY2hlY2tPdXRGaWxlcyA9IGNoZWNrT3V0RmlsZXM7Ci0JfQotCXB1YmxpYyBib29sZWFuIGdldENsaWVudCgpIHsKLQkJcmV0dXJuIGNsaWVudDsKLQl9Ci0JcHVibGljIHZvaWQgc2V0Q2xpZW50KGJvb2xlYW4gY2xpZW50KSB7Ci0JCXRoaXMuY2xpZW50ID0gY2xpZW50OwotCX0KLQlwdWJsaWMgYm9vbGVhbiBnZXRDcmVhdGVGb2xkZXJzKCkgewotCQlyZXR1cm4gY3JlYXRlRm9sZGVyczsKLQl9Ci0JcHVibGljIHZvaWQgc2V0Q3JlYXRlRm9sZGVycyhib29sZWFuIGNyZWF0ZUZvbGRlcnMpIHsKLQkJdGhpcy5jcmVhdGVGb2xkZXJzID0gY3JlYXRlRm9sZGVyczsKLQl9Ci0JcHVibGljIGJvb2xlYW4gZ2V0RGVwbG95KCkgewotCQlyZXR1cm4gZGVwbG95OwotCX0KLQlwdWJsaWMgdm9pZCBzZXREZXBsb3koYm9vbGVhbiBkZXBsb3kpIHsKLQkJdGhpcy5kZXBsb3kgPSBkZXBsb3k7Ci0JfQotCXB1YmxpYyBib29sZWFuIGdldERldmVsb3AoKSB7Ci0JCXJldHVybiBkZXZlbG9wOwotCX0KLQlwdWJsaWMgdm9pZCBzZXREZXZlbG9wKGJvb2xlYW4gZGV2ZWxvcCkgewotCQl0aGlzLmRldmVsb3AgPSBkZXZlbG9wOwotCX0KLQlwdWJsaWMgYm9vbGVhbiBnZXRJbnN0YWxsKCkgewotCQlyZXR1cm4gaW5zdGFsbDsKLQl9Ci0JcHVibGljIHZvaWQgc2V0SW5zdGFsbChib29sZWFuIGluc3RhbGwpIHsKLQkJdGhpcy5pbnN0YWxsID0gaW5zdGFsbDsKLQl9Ci0JcHVibGljIGJvb2xlYW4gZ2V0T3ZlcldyaXRlRmlsZXMoKSB7Ci0JCXJldHVybiBvdmVyd3JpdGVGaWxlczsKLQl9Ci0JcHVibGljIHZvaWQgc2V0T3ZlcldyaXRlRmlsZXMoYm9vbGVhbiBvdmVyd3JpdGVGaWxlcykgewotCQl0aGlzLm92ZXJ3cml0ZUZpbGVzID0gb3ZlcndyaXRlRmlsZXM7Ci0JfQotCXB1YmxpYyBib29sZWFuIGdldFB1Ymxpc2goKSB7Ci0JCXJldHVybiBwdWJsaXNoOwotCX0KLQlwdWJsaWMgdm9pZCBzZXRQdWJsaXNoKGJvb2xlYW4gcHVibGlzaCkgewotCQl0aGlzLnB1Ymxpc2ggPSBwdWJsaXNoOwotCX0KLQlwdWJsaWMgYm9vbGVhbiBnZXRSdW4oKSB7Ci0JCXJldHVybiBydW47Ci0JfQotCXB1YmxpYyB2b2lkIHNldFJ1bihib29sZWFuIHJ1bikgewotCQl0aGlzLnJ1biA9IHJ1bjsKLQl9Ci0JcHVibGljIFdlYlNlcnZpY2VTY2VuYXJpbyBnZXRTY2VuYXJpbygpIHsKLQkJcmV0dXJuIHNjZW5hcmlvOwotCX0KLQlwdWJsaWMgdm9pZCBzZXRTY2VuYXJpbyhXZWJTZXJ2aWNlU2NlbmFyaW8gc2NlbmFyaW8pIHsKLQkJdGhpcy5zY2VuYXJpbyA9IHNjZW5hcmlvOwotCX0KLQlwdWJsaWMgYm9vbGVhbiBnZXRUZXN0KCkgewotCQlyZXR1cm4gdGVzdDsKLQl9Ci0JcHVibGljIHZvaWQgc2V0VGVzdChib29sZWFuIHRlc3QpIHsKLQkJdGhpcy50ZXN0ID0gdGVzdDsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvVGVzdEluZm8uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9UZXN0SW5mby5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGY4ZDA4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9UZXN0SW5mby5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDYwOCAgIDE0NTUyOSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLnNlbGVjdGlvbi5Cb29sZWFuU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwotLyoqCi0gKiBUaGlzIGhvbGRzIGluZm8gdGhhdCBjb21lcyBmcm9tIHVzZXIgaW5wdXQgb3Igc29tZSBjYWxjdWxhdGlvbnMgdGhhdCAKLSAqIHdoaWNoIG1pZ2h0IGJlIHVzZWZ1bCB0byBhbnkgdGVzdCBleHRlbmRlcnMKLSAqLwotCi1wdWJsaWMgY2xhc3MgVGVzdEluZm8gewotICBwcml2YXRlIFN0cmluZyBqc3BGb2xkZXI7Ci0gIHByaXZhdGUgU3RyaW5nIGdlbmVyYXRpb25Qcm9qZWN0OwotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlUHJvamVjdDsKLSAgcHJpdmF0ZSBTdHJpbmcgcHJveHlCZWFuOwotICBwcml2YXRlIFN0cmluZyBzZXRFbmRwb2ludE1ldGhvZDsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50UHJvamVjdDsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50TW9kdWxlOwotICBwcml2YXRlIGJvb2xlYW4gY2xpZW50TmVlZEVBUjsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50RUFSUHJvamVjdDsKLSAgcHJpdmF0ZSBTdHJpbmcgY2xpZW50RUFSTW9kdWxlOwotICBwcml2YXRlIEJvb2xlYW5TZWxlY3Rpb25bXSBtZXRob2RzOwotICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlU2VydmVyVHlwZUlEOwotICBwcml2YXRlIFN0cmluZyBjbGllbnRTZXJ2ZXJUeXBlSUQ7Ci0gIHByaXZhdGUgSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXI7Ci0gIHByaXZhdGUgSVNlcnZlciBjbGllbnRFeGlzdGluZ1NlcnZlcjsKLSAgcHJpdmF0ZSBMaXN0IGVuZHBvaW50czsKLSAgcHJpdmF0ZSBTdHJpbmcgd3NkbFNlcnZpY2VVUkw7Ci0gIHByaXZhdGUgYm9vbGVhbiBleHRlcm5hbEJyb3dzZXI7ICAKLSAgcHJpdmF0ZSBib29sZWFuIHJ1blRlc3RDbGllbnQ7Ci0KLSAgLyoqCi0gICogVGhpcyBpcyB0aGUgZm9sZGVyIHRoZSB1c2VyIGhhcyBjaG9zZW4gdG8gZ2VuZXJhdGUgYW55IGpzcHMgCi0gICogQHBhcmFtIGpzcEZvbGRlcgotICAqLwotICBwdWJsaWMgdm9pZCBzZXRKc3BGb2xkZXIoU3RyaW5nIGpzcEZvbGRlcil7Ci0JdGhpcy5qc3BGb2xkZXIgPSBqc3BGb2xkZXI7ICAKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRKc3BGb2xkZXIoKXsKLSAgICByZXR1cm4ganNwRm9sZGVyOyAgCi0gIH0KLSAgCi0gIC8qKgotICAqIFRoaXMgaXMgdGhlIHByb2plY3QgdGhlIHVzZXIgaGFzIGNob3NlbiB0byBnZW5lcmF0ZSBhcnRpZmFjdHMgdG8gIAotICAqIEBwYXJhbSBnZW5lcmF0aW9uUHJvamVjdAotICAqLwotICBwdWJsaWMgdm9pZCBzZXRHZW5lcmF0aW9uUHJvamVjdChTdHJpbmcgZ2VuZXJhdGlvblByb2plY3QpewotICAgIHRoaXMuZ2VuZXJhdGlvblByb2plY3QgPSBnZW5lcmF0aW9uUHJvamVjdDsJICAKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRHZW5lcmF0aW9uUHJvamVjdCgpewotICAgIHJldHVybiBnZW5lcmF0aW9uUHJvamVjdDsJICAKLSAgfQotICAKLSAgLyoqCi0gICogVGhlIHByb3h5IGJlYW4gd2FzIGdlbmVyYXRlZCBieSB1cyB0aGlzIGlzIHRoZSBuYW1lIG9mIGl0ICAKLSAgKiBAcGFyYW0gcHJveHlCZWFuCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFByb3h5QmVhbihTdHJpbmcgcHJveHlCZWFuKXsKLSAgICB0aGlzLnByb3h5QmVhbiA9IHByb3h5QmVhbjsJICAKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRQcm94eUJlYW4oKXsKLSAgICByZXR1cm4gcHJveHlCZWFuOwkgIAotICB9Ci0JICAKLSAgLyoqCi0gICogVGhpcyBpcyB0aGUgU2V0RW5kcG9pbnRNZXRob2QgICAKLSAgKiBAcGFyYW0gCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldFNldEVuZHBvaW50TWV0aG9kKFN0cmluZyBzZXRFbmRwb2ludE1ldGhvZCl7Ci0JdGhpcy5zZXRFbmRwb2ludE1ldGhvZCA9IHNldEVuZHBvaW50TWV0aG9kOyAgCi0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2V0RW5kcG9pbnRNZXRob2QoKXsKLSAgICByZXR1cm4gc2V0RW5kcG9pbnRNZXRob2Q7ICAKLSAgfQotICAKLSAgLyoqCi0gICogVGhlIGNsaWVudFByb2plY3QgY29udGFpbnMgdGhlIGNsaWVudCBhcnRpZmFjdHMgaW5jbHVkaW5nIHRoZSAKLSAgKiBnZW5lcmF0ZWQgcHJveHkgYmVhbiAgIAotICAqIEBwYXJhbSBjbGllbnRQcm9qZWN0IFN0cmluZwotICAqLwotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRQcm9qZWN0KFN0cmluZyBjbGllbnRQcm9qZWN0KXsKLSAgICB0aGlzLmNsaWVudFByb2plY3QgPSBjbGllbnRQcm9qZWN0OwkgIAotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFByb2plY3QoKXsKLSAgICByZXR1cm4gY2xpZW50UHJvamVjdDsJICAKLSAgfQotCSAgCi0gIC8qKgotICAgKiBUaGUgY2xpZW50TW9kdWxlIGNvbnRhaW5zIHRoZSBjbGllbnQgYXJ0aWZhY3RzIGluY2x1ZGluZyB0aGUgCi0gICAqIG1vZHVsZSAgIAotICAgKiBAcGFyYW0gY2xpZW50UHJvamVjdCBTdHJpbmcKLSAgICovCi0gICBwdWJsaWMgdm9pZCBzZXRDbGllbnRNb2R1bGUoU3RyaW5nIGNsaWVudE1vZHVsZSl7Ci0gICAgIHRoaXMuY2xpZW50TW9kdWxlID0gY2xpZW50TW9kdWxlOwkgIAotICAgfQotICAgCi0gICBwdWJsaWMgU3RyaW5nIGdldENsaWVudE1vZHVsZSgpewotICAgICByZXR1cm4gY2xpZW50TW9kdWxlOwkgIAotICAgfQotICAKLSAgLyoqCi0gICogVGhlc2UgYXJlIG1ldGhvZHMgb24gdGhlIHByb3h5YmVhbiB0aGUgdXNlciBoYXMgY2hlY2tlZCBvbmVzIAotICAqIHRoZXkgd2FudCBpbmNsdWRlZCBpbiB0aGUgdGVzdCBjbGllbnQgICAgIAotICAqIEBwYXJhbSBtZXRob2RzCi0gICovCi0gIHB1YmxpYyB2b2lkIHNldE1ldGhvZHMoQm9vbGVhblNlbGVjdGlvbltdIG1ldGhvZHMpewotCXRoaXMubWV0aG9kcyA9IG1ldGhvZHM7ICAKLSAgfQotICAKLSAgcHVibGljIEJvb2xlYW5TZWxlY3Rpb25bXSBnZXRNZXRob2RzKCl7Ci0gICAgcmV0dXJuIG1ldGhvZHM7ICAKLSAgfQotICAKLSAgLyoqCi0gICogSWYgdGhlIGNvbW1hbmQgbmVlZHMgYSBzZXJ2ZXIgdGhpcyBpcyB0aGUgY2hvc2VuIAotICAqIGNsaWVudCBzZXJ2ZXJJRAotICAqIEBwYXJhbSBzYW1wbGVTZXJ2ZXJUeXBlSUQKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVNlcnZlclR5cGVJRChTdHJpbmcgc2VydmljZVNlcnZlclR5cGVJRCl7Ci0gICAgdGhpcy5zZXJ2aWNlU2VydmVyVHlwZUlEID0gc2VydmljZVNlcnZlclR5cGVJRDsgIAotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VTZXJ2ZXJUeXBlSUQoKXsKLSAgICByZXR1cm4gc2VydmljZVNlcnZlclR5cGVJRDsgIAotICB9Ci0gIAotICAvKioKLSAgKiBJZiB0aGUgY29tbWFuZCBuZWVkcyBhIHNlcnZlciB0aGlzIGlzIHRoZSBjaG9zZW4gCi0gICogY2xpZW50IHNlcnZlcklECi0gICogQHBhcmFtIHNhbXBsZVNlcnZlclR5cGVJRAotICAqLwotICAgcHVibGljIHZvaWQgc2V0Q2xpZW50U2VydmVyVHlwZUlEKFN0cmluZyBjbGllbnRTZXJ2ZXJUeXBlSUQpewotICAgICB0aGlzLmNsaWVudFNlcnZlclR5cGVJRCA9IGNsaWVudFNlcnZlclR5cGVJRDsgIAotICAgfQotICAgCi0gICBwdWJsaWMgU3RyaW5nIGdldENsaWVudFNlcnZlclR5cGVJRCgpewotICAgICByZXR1cm4gY2xpZW50U2VydmVyVHlwZUlEOyAgCi0gICB9Ci0JICAKLSAgLyoqCi0gICogVGhpcyBpcyB0aGUgSVNlcnZlciBpZiByZXF1aXJlZAotICAqIEBwYXJhbSBzYW1wbGVFeGlzdGluZ1NlcnZlcgotICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIoSVNlcnZlciBzZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIpewotCXRoaXMuc2VydmljZUV4aXN0aW5nU2VydmVyID0gc2VydmljZUV4aXN0aW5nU2VydmVyOyAgIAotICB9Ci0gIAotICBwdWJsaWMgSVNlcnZlciBnZXRTZXJ2aWNlRXhpc3RpbmdTZXJ2ZXIoKXsKLSAgICByZXR1cm4gc2VydmljZUV4aXN0aW5nU2VydmVyOyAgIAotICB9Ci0gIAotICAvKioKLSAgICogVGhpcyBpcyB0aGUgU3RyaW5nIGlmIHJlcXVpcmVkCi0gICAqIEBwYXJhbSBjbGllbnRFQVJQcm9qZWN0Ci0gICAqLwotICAgcHVibGljIHZvaWQgc2V0Q2xpZW50RUFSUHJvamVjdChTdHJpbmcgY2xpZW50RUFSUHJvamVjdCl7Ci0gCXRoaXMuY2xpZW50RUFSUHJvamVjdCA9IGNsaWVudEVBUlByb2plY3Q7ICAgCi0gICB9Ci0gICAKLSAgIHB1YmxpYyBTdHJpbmcgZ2V0Q2xpZW50RUFSUHJvamVjdCgpewotICAgICByZXR1cm4gY2xpZW50RUFSUHJvamVjdDsgICAKLSAgIH0KLSAgIAotICAgCi0gICAvKioKLSAgICAqIFRoaXMgaXMgdGhlIFN0cmluZyBpZiByZXF1aXJlZAotICAgICogQHBhcmFtIGNsaWVudEVBUlByb2plY3QKLSAgICAqLwotICAgIHB1YmxpYyB2b2lkIHNldENsaWVudEVBUk1vZHVsZShTdHJpbmcgY2xpZW50RUFSTW9kdWxlKXsKLSAgCXRoaXMuY2xpZW50RUFSTW9kdWxlID0gY2xpZW50RUFSTW9kdWxlOyAgIAotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgU3RyaW5nIGdldENsaWVudEVBUk1vZHVsZSgpewotICAgICAgcmV0dXJuIGNsaWVudEVBUk1vZHVsZTsgICAKLSAgICB9Ci0gICAKLSAgLyoqCi0gICogVGhpcyBpcyB0aGUgSVNlcnZlciBpZiByZXF1aXJlZAotICAqIEBwYXJhbSBzYW1wbGVFeGlzdGluZ1NlcnZlcgotICAqLwotICBwdWJsaWMgdm9pZCBzZXRDbGllbnRFeGlzdGluZ1NlcnZlcihJU2VydmVyIGNsaWVudEV4aXN0aW5nU2VydmVyKXsKLSAgICB0aGlzLmNsaWVudEV4aXN0aW5nU2VydmVyID0gY2xpZW50RXhpc3RpbmdTZXJ2ZXI7ICAgCi0gIH0KLSAgIAotICBwdWJsaWMgSVNlcnZlciBnZXRDbGllbnRFeGlzdGluZ1NlcnZlcigpewotICAgIHJldHVybiBjbGllbnRFeGlzdGluZ1NlcnZlcjsgICAKLSAgfQotICAgCi0gIC8qKgotICAqIFRoaXMgaXMgdGhlIGVuZHBvaW50cyBpZiBtb25pdG9yIHNlcnZpY2UgaXMgZW5hYmxlZAotICAqIEBwYXJhbSBlbmRwb2ludHMKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0RW5kcG9pbnQoTGlzdCBlbmRwb2ludHMpewotCXRoaXMuZW5kcG9pbnRzID0gZW5kcG9pbnRzOyAgCi0gIH0KLSAgcHVibGljIExpc3QgZ2V0RW5kcG9pbnQoKXsKLSAgICByZXR1cm4gZW5kcG9pbnRzOyAgCi0gIH0gCi0KLSAgLyoqCi0gICogVGhpcyBpcyB0aGUgcHJvamVjdCB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gZGVhbGluZyB3aXRoCi0gICogd3NkbAotICAqIEBwYXJhbSBzZXJ2aWNlUHJvamVjdAotICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlUHJvamVjdChTdHJpbmcgc2VydmljZVByb2plY3QpewotICAgIHRoaXMuc2VydmljZVByb2plY3QgPSBzZXJ2aWNlUHJvamVjdDsgICAgCSAgCi0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VQcm9qZWN0KCl7Ci0gICAgcmV0dXJuIHNlcnZpY2VQcm9qZWN0OwotICB9Ci0KLSAgLyoqCi0gICogV1NETCBVUkwKLSAgKi8KLSAgcHVibGljIHZvaWQgc2V0V3NkbFNlcnZpY2VVUkwoU3RyaW5nIHdzZGxTZXJ2aWNlVVJMKXsKLQl0aGlzLndzZGxTZXJ2aWNlVVJMID0gd3NkbFNlcnZpY2VVUkw7ICAKLSAgfQotICAKLSAgcHVibGljIFN0cmluZyBnZXRXc2RsU2VydmljZVVSTCgpewotICAgIHJldHVybiB3c2RsU2VydmljZVVSTDsgIAotICB9Ci0gIAotICAvKioKLSAgICogY2xpZW50TmVlZEVBUgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0Q2xpZW50TmVlZEVBUigpIHsKLQkJcmV0dXJuIGNsaWVudE5lZWRFQVI7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRDbGllbnROZWVkRUFSKGJvb2xlYW4gY2xpZW50TmVlZEVBUikgewotCQl0aGlzLmNsaWVudE5lZWRFQVIgPSBjbGllbnROZWVkRUFSOwotICB9Ci0KLSAgLyoqCi0gICAqIGV4dGVybmFsIGJyb3dzZXIKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldEV4dGVybmFsQnJvd3NlcigpIAotICB7Ci0JICByZXR1cm4gZXh0ZXJuYWxCcm93c2VyOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RXh0ZXJuYWxCcm93c2VyKGJvb2xlYW4gZXh0ZXJuYWxCcm93c2VyKSB7Ci0JICB0aGlzLmV4dGVybmFsQnJvd3NlciA9IGV4dGVybmFsQnJvd3NlcjsKLSAgfQotCi1wdWJsaWMgYm9vbGVhbiBnZXRSdW5UZXN0Q2xpZW50KCkgewotCXJldHVybiBydW5UZXN0Q2xpZW50OwotfQotCi1wdWJsaWMgdm9pZCBzZXRSdW5UZXN0Q2xpZW50KGJvb2xlYW4gcnVuVGVzdENsaWVudCkgewotCXRoaXMucnVuVGVzdENsaWVudCA9IHJ1blRlc3RDbGllbnQ7Ci19Ci0KLQotCQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L1dlYlNlcnZpY2VDbGllbnRJbmZvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvV2ViU2VydmljZUNsaWVudEluZm8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiYjdkMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvV2ViU2VydmljZUNsaWVudEluZm8uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDcyOCAgIDE0NTQyNiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzA4MTUgICAxOTk2MjYga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcxMTMwICAgMjAzODI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydDsKLQotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VDbGllbnRJbmZvIHsKLQotCXByaXZhdGUgV2ViU2VydmljZVN0YXRlIHN0YXRlOwotCXByaXZhdGUgU3RyaW5nIHNlcnZlckZhY3RvcnlJZDsKLQlwcml2YXRlIFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkOwotCXByaXZhdGUgU3RyaW5nIHNlcnZlclJ1bnRpbWVJZDsKLQlwcml2YXRlIFN0cmluZyB3ZWJTZXJ2aWNlUnVudGltZUlkOwotCXByaXZhdGUgU3RyaW5nIHdzZGxVUkw7Ci0JcHJpdmF0ZSBTdHJpbmcgaW1wbFVSTDsKLQlwcml2YXRlIFN0cmluZyBwcm94eUVuZHBvaW50ID0gbnVsbDsKLQlwcml2YXRlIGJvb2xlYW4gc2VydmVyQ3JlYXRlZCA9IGZhbHNlOwotCQotCXB1YmxpYyBTdHJpbmcgZ2V0SW1wbFVSTCgpIHsKLQkJcmV0dXJuIGltcGxVUkw7Ci0JfQotCXB1YmxpYyB2b2lkIHNldEltcGxVUkwoU3RyaW5nIGltcGxVUkwpIHsKLQkJdGhpcy5pbXBsVVJMID0gaW1wbFVSTDsKLQl9Ci0JcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJGYWN0b3J5SWQoKSB7Ci0JCXJldHVybiBzZXJ2ZXJGYWN0b3J5SWQ7Ci0JfQotCXB1YmxpYyB2b2lkIHNldFNlcnZlckZhY3RvcnlJZChTdHJpbmcgc2VydmVyRmFjdG9yeUlkKSB7Ci0JCXRoaXMuc2VydmVyRmFjdG9yeUlkID0gc2VydmVyRmFjdG9yeUlkOwotCX0KLQlwdWJsaWMgU3RyaW5nIGdldFNlcnZlckluc3RhbmNlSWQoKSB7Ci0JCXJldHVybiBzZXJ2ZXJJbnN0YW5jZUlkOwotCX0KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJJbnN0YW5jZUlkKFN0cmluZyBzZXJ2ZXJJbnN0YW5jZUlkKSB7Ci0JCXRoaXMuc2VydmVySW5zdGFuY2VJZCA9IHNlcnZlckluc3RhbmNlSWQ7Ci0JfQotCXB1YmxpYyBXZWJTZXJ2aWNlU3RhdGUgZ2V0U3RhdGUoKSB7Ci0JCXJldHVybiBzdGF0ZTsKLQl9Ci0JcHVibGljIHZvaWQgc2V0U3RhdGUoV2ViU2VydmljZVN0YXRlIHN0YXRlKSB7Ci0JCXRoaXMuc3RhdGUgPSBzdGF0ZTsKLQl9Ci0JcHVibGljIFN0cmluZyBnZXRXZWJTZXJ2aWNlUnVudGltZUlkKCkgewotCQlyZXR1cm4gd2ViU2VydmljZVJ1bnRpbWVJZDsKLQl9Ci0JcHVibGljIHZvaWQgc2V0V2ViU2VydmljZVJ1bnRpbWVJZChTdHJpbmcgd2ViU2VydmljZVJ1bnRpbWVJZCkgewotCQl0aGlzLndlYlNlcnZpY2VSdW50aW1lSWQgPSB3ZWJTZXJ2aWNlUnVudGltZUlkOwotCX0KLQlwdWJsaWMgU3RyaW5nIGdldFdzZGxVUkwoKSB7Ci0JCXJldHVybiB3c2RsVVJMOwotCX0KLQlwdWJsaWMgdm9pZCBzZXRXc2RsVVJMKFN0cmluZyB3c2RsVVJMKSB7Ci0JCXRoaXMud3NkbFVSTCA9IHdzZGxVUkw7Ci0JfQotCXB1YmxpYyBTdHJpbmcgZ2V0UHJveHlFbmRwb2ludCgpIHsKLQkJcmV0dXJuIHByb3h5RW5kcG9pbnQ7Ci0JfQotCXB1YmxpYyB2b2lkIHNldFByb3h5RW5kcG9pbnQoU3RyaW5nIHByb3h5RW5kcG9pbnQpIHsKLQkJdGhpcy5wcm94eUVuZHBvaW50ID0gcHJveHlFbmRwb2ludDsKLQl9Ci0JCi0JLyoqCi0JICogQHJldHVybiBJbmRpY2F0ZWQgd2hldGhlciB0aGUgZnJhbWV3b3JrIGhhZCBjcmVhdGVkIAotCSAqIHRoZSBzZXJ2ZXIgaW5zdGFuY2UgcmVmZXJlbmNlZCBieSBnZXRTZXJ2ZXJJbnN0YW5jZUlkCi0JICovCi0JcHVibGljIGJvb2xlYW4gaXNTZXJ2ZXJDcmVhdGVkKCkgewotCQlyZXR1cm4gc2VydmVyQ3JlYXRlZDsKLQl9Ci0JCi0JLyoqCi0JICogQHBhcmFtIHNlcnZlckNyZWF0ZWQgVHJ1ZSBpZiB0aGUgZnJhbWV3b3JrIGhhZCBjcmVhdGVkIAotCSAqIHRoZSBzZXJ2ZXIgaW5zdGFuY2UgcmVmZXJlbmNlZCBieSBnZXRTZXJ2ZXJJbnN0YW5jZUlkCi0JICovCi0JcHVibGljIHZvaWQgc2V0U2VydmVyQ3JlYXRlZChib29sZWFuIHNlcnZlckNyZWF0ZWQpIHsKLQkJdGhpcy5zZXJ2ZXJDcmVhdGVkID0gc2VydmVyQ3JlYXRlZDsKLQl9Ci0JcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJSdW50aW1lSWQoKSB7Ci0JCXJldHVybiBzZXJ2ZXJSdW50aW1lSWQ7Ci0JfQotCXB1YmxpYyB2b2lkIHNldFNlcnZlclJ1bnRpbWVJZChTdHJpbmcgc2VydmVyUnVudGltZUlkKSB7Ci0JCXRoaXMuc2VydmVyUnVudGltZUlkID0gc2VydmVyUnVudGltZUlkOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9XZWJTZXJ2aWNlSW5mby5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L1dlYlNlcnZpY2VJbmZvLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NjkxYTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L1dlYlNlcnZpY2VJbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMjIxICAgMTI4OTA1IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA2MDMzMCAgIDEyODgyNyBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICogMjAwNzA1MDkgICAxODIyNzQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcwODE1ICAgMTk5NjI2IGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0gKiAyMDA3MTEzMCAgIDIwMzgyNiBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlcy5QZXJzaXN0ZW50TWVyZ2VDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51dGlsLlVuaXZlcnNhbFBhdGhUcmFuc2Zvcm1lcjsKLQotCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZUluZm8gewotCi0JcHJpdmF0ZSBXZWJTZXJ2aWNlU3RhdGUgc3RhdGU7Ci0JcHJpdmF0ZSBTdHJpbmcgc2VydmVyRmFjdG9yeUlkOwotCXByaXZhdGUgU3RyaW5nIHNlcnZlckluc3RhbmNlSWQ7Ci0JcHJpdmF0ZSBTdHJpbmcgc2VydmVyUnVudGltZUlkOwotCXByaXZhdGUgU3RyaW5nIHdlYlNlcnZpY2VSdW50aW1lSWQ7Ci0JcHJpdmF0ZSBTdHJpbmcgd3NkbFVSTDsKLQlwcml2YXRlIFN0cmluZyBlbmRQb2ludFVSTDsKLQlwcml2YXRlIFN0cmluZyBpbXBsVVJMOwotCXByaXZhdGUgU3RyaW5nW10gaW1wbFVSTHM7Ci0JcHJpdmF0ZSBib29sZWFuIHNlcnZlckNyZWF0ZWQgPSBmYWxzZTsKLQkKLQlwcml2YXRlIElNZXJnZXIgbWVyZ2VyOwotCQotCXB1YmxpYyBTdHJpbmcgZ2V0RW5kUG9pbnRVUkwoKQotCXsKLQkJcmV0dXJuIGVuZFBvaW50VVJMOwotCX0KLQlwdWJsaWMgdm9pZCBzZXRFbmRQb2ludFVSTChTdHJpbmcgZW5kUG9pbnRVUkwpCi0JewotCQl0aGlzLmVuZFBvaW50VVJMID0gZW5kUG9pbnRVUkw7Ci0JfQotCXB1YmxpYyBTdHJpbmcgZ2V0SW1wbFVSTCgpCi0JewotCQlyZXR1cm4gaW1wbFVSTDsKLQl9Ci0JcHVibGljIHZvaWQgc2V0SW1wbFVSTChTdHJpbmcgaW1wbFVSTCkKLQl7Ci0JCXRoaXMuaW1wbFVSTCA9IGltcGxVUkw7Ci0JfQotCXB1YmxpYyBTdHJpbmcgZ2V0U2VydmVyRmFjdG9yeUlkKCkKLQl7Ci0JCXJldHVybiBzZXJ2ZXJGYWN0b3J5SWQ7Ci0JfQotCXB1YmxpYyB2b2lkIHNldFNlcnZlckZhY3RvcnlJZChTdHJpbmcgc2VydmVyRmFjdG9yeUlkKQotCXsKLQkJdGhpcy5zZXJ2ZXJGYWN0b3J5SWQgPSBzZXJ2ZXJGYWN0b3J5SWQ7Ci0JfQotCXB1YmxpYyBTdHJpbmcgZ2V0U2VydmVySW5zdGFuY2VJZCgpCi0JewotCQlyZXR1cm4gc2VydmVySW5zdGFuY2VJZDsKLQl9Ci0JcHVibGljIHZvaWQgc2V0U2VydmVySW5zdGFuY2VJZChTdHJpbmcgc2VydmVySW5zdGFuY2VJZCkKLQl7Ci0JCXRoaXMuc2VydmVySW5zdGFuY2VJZCA9IHNlcnZlckluc3RhbmNlSWQ7Ci0JfQotCXB1YmxpYyBXZWJTZXJ2aWNlU3RhdGUgZ2V0U3RhdGUoKQotCXsKLQkJcmV0dXJuIHN0YXRlOwotCX0KLQlwdWJsaWMgdm9pZCBzZXRTdGF0ZShXZWJTZXJ2aWNlU3RhdGUgc3RhdGUpCi0JewotCQl0aGlzLnN0YXRlID0gc3RhdGU7Ci0JfQotCXB1YmxpYyBTdHJpbmcgZ2V0V2ViU2VydmljZVJ1bnRpbWVJZCgpCi0JewotCQlyZXR1cm4gd2ViU2VydmljZVJ1bnRpbWVJZDsKLQl9Ci0JcHVibGljIHZvaWQgc2V0V2ViU2VydmljZVJ1bnRpbWVJZChTdHJpbmcgd2ViU2VydmljZVJ1bnRpbWVJZCkKLQl7Ci0JCXRoaXMud2ViU2VydmljZVJ1bnRpbWVJZCA9IHdlYlNlcnZpY2VSdW50aW1lSWQ7Ci0JfQotCXB1YmxpYyBTdHJpbmcgZ2V0V3NkbFVSTCgpCi0JewotCQlyZXR1cm4gd3NkbFVSTDsKLQl9Ci0JcHVibGljIHZvaWQgc2V0V3NkbFVSTChTdHJpbmcgd3NkbFVSTCkKLQl7Ci0JCXRoaXMud3NkbFVSTCA9IHdzZGxVUkw7Ci0JfQotCXB1YmxpYyBTdHJpbmdbXSBnZXRJbXBsVVJMcygpCi0JewotCQlyZXR1cm4gaW1wbFVSTHM7Ci0JfQotCXB1YmxpYyB2b2lkIHNldEltcGxVUkxzKFN0cmluZ1tdIGltcGxVUkxzKQotCXsKLQkJdGhpcy5pbXBsVVJMcyA9IGltcGxVUkxzOwotCQlsb2FkTWVyZ2VyKCk7Ci0JCQotCX0KLQlwdWJsaWMgSU1lcmdlciBnZXRNZXJnZXIoKSB7Ci0JCXJldHVybiBtZXJnZXI7Ci0JfQotCXB1YmxpYyB2b2lkIHNldE1lcmdlcihJTWVyZ2VyIG1lcmdlcikgewotCQl0aGlzLm1lcmdlciA9IG1lcmdlcjsKLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIGxvYWRNZXJnZXIoKSB7Ci0JCWlmIChtZXJnZXIgIT0gbnVsbCkgewotCQkJUGVyc2lzdGVudE1lcmdlQ29udGV4dCBtZXJnZUNvbnRleHQgPSBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldE1lcmdlQ29udGV4dCgpOwotCQkJaWYgKG1lcmdlQ29udGV4dC5pc1NrZWxldG9uTWVyZ2VFbmFibGVkKCkpIHsKLQkJCQltZXJnZXIubG9hZChVbml2ZXJzYWxQYXRoVHJhbnNmb3JtZXIudG9GaWxlcyhpbXBsVVJMcykpOwotCQkJfQotCQl9Ci0JfQotCQotCS8qKgotCSAqIEByZXR1cm4gSW5kaWNhdGVkIHdoZXRoZXIgdGhlIGZyYW1ld29yayBoYWQgY3JlYXRlZCAKLQkgKiB0aGUgc2VydmVyIGluc3RhbmNlIHJlZmVyZW5jZWQgYnkgZ2V0U2VydmVySW5zdGFuY2VJZAotCSAqLwotCXB1YmxpYyBib29sZWFuIGlzU2VydmVyQ3JlYXRlZCgpIHsKLQkJcmV0dXJuIHNlcnZlckNyZWF0ZWQ7Ci0JfQotCQotCS8qKgotCSAqIEBwYXJhbSBzZXJ2ZXJDcmVhdGVkIFRydWUgaWYgdGhlIGZyYW1ld29yayBoYWQgY3JlYXRlZCAKLQkgKiB0aGUgc2VydmVyIGluc3RhbmNlIHJlZmVyZW5jZWQgYnkgZ2V0U2VydmVySW5zdGFuY2VJZAotCSAqLwotCXB1YmxpYyB2b2lkIHNldFNlcnZlckNyZWF0ZWQoYm9vbGVhbiBzZXJ2ZXJDcmVhdGVkKSB7Ci0JCXRoaXMuc2VydmVyQ3JlYXRlZCA9IHNlcnZlckNyZWF0ZWQ7Ci0JfQotCXB1YmxpYyBTdHJpbmcgZ2V0U2VydmVyUnVudGltZUlkKCkgewotCQlyZXR1cm4gc2VydmVyUnVudGltZUlkOwotCX0KLQlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJSdW50aW1lSWQoU3RyaW5nIHNlcnZlclJ1bnRpbWVJZCkgewotCQl0aGlzLnNlcnZlclJ1bnRpbWVJZCA9IHNlcnZlclJ1bnRpbWVJZDsKLQl9Ci0JCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvV2ViU2VydmljZVNjZW5hcmlvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3dzcnQvV2ViU2VydmljZVNjZW5hcmlvLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlY2NmMWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L1dlYlNlcnZpY2VTY2VuYXJpby5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDYwMzI0ICAgMTE2NzUwIHJzaW5oYUBjYS5pYm0uY29tIC0gUnVwYW0gS3VlaG5lcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC53c3J0OwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQWJzdHJhY3RFbnVtZXJhdG9yOwotCi0KLXB1YmxpYyBmaW5hbCBjbGFzcyBXZWJTZXJ2aWNlU2NlbmFyaW8gZXh0ZW5kcyBBYnN0cmFjdEVudW1lcmF0b3IKLXsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCT1RUT01VUCA9IDA7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRPUERPV04gPSAxOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDTElFTlQgPSAyOwotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBXZWJTZXJ2aWNlU2NlbmFyaW8gQk9UVE9NVVBfTElURVJBTCA9IG5ldyBXZWJTZXJ2aWNlU2NlbmFyaW8oQk9UVE9NVVAsICJCT1RUT01VUCIpOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFdlYlNlcnZpY2VTY2VuYXJpbyBUT1BET1dOX0xJVEVSQUwgPSBuZXcgV2ViU2VydmljZVNjZW5hcmlvKFRPUERPV04sICJUT1BET1dOIik7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgV2ViU2VydmljZVNjZW5hcmlvIENMSUVOVF9MSVRFUkFMID0gbmV3IFdlYlNlcnZpY2VTY2VuYXJpbyhDTElFTlQsICJDTElFTlQiKTsKLQotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFdlYlNlcnZpY2VTY2VuYXJpb1tdIFZBTFVFU19BUlJBWSA9Ci0gICAgbmV3IFdlYlNlcnZpY2VTY2VuYXJpb1tdCi0gICAgewotCSAgQk9UVE9NVVBfTElURVJBTCwKLQkgIFRPUERPV05fTElURVJBTCwKLQkgIENMSUVOVF9MSVRFUkFMLAotICAgIH07Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBMaXN0IFZBTFVFUyA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUxpc3QoQXJyYXlzLmFzTGlzdChWQUxVRVNfQVJSQVkpKTsKLQotCi0gIHB1YmxpYyBzdGF0aWMgV2ViU2VydmljZVNjZW5hcmlvIGdldChTdHJpbmcgbmFtZSkKLSAgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVkFMVUVTX0FSUkFZLmxlbmd0aDsgKytpKQotICAgIHsKLSAgICAgIFdlYlNlcnZpY2VTY2VuYXJpbyByZXN1bHQgPSBWQUxVRVNfQVJSQVlbaV07Ci0gICAgICBpZiAocmVzdWx0LnRvU3RyaW5nKCkuZXF1YWxzKG5hbWUpKQotICAgICAgewotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0KLSAgcHVibGljIHN0YXRpYyBXZWJTZXJ2aWNlU2NlbmFyaW8gZ2V0KGludCB2YWx1ZSkKLSAgewotICAgIHN3aXRjaCAodmFsdWUpCi0gICAgewotICAgICAgY2FzZSBCT1RUT01VUDogcmV0dXJuIEJPVFRPTVVQX0xJVEVSQUw7Ci0gICAgICBjYXNlIFRPUERPV046IHJldHVybiBUT1BET1dOX0xJVEVSQUw7Ci0gICAgICBjYXNlIENMSUVOVDogcmV0dXJuIENMSUVOVF9MSVRFUkFMOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsJCi0gIH0KLQotICAvKioKLSAgICogT25seSB0aGlzIGNsYXNzIGNhbiBjb25zdHJ1Y3QgaW5zdGFuY2VzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlU2NlbmFyaW8oaW50IHZhbHVlLCBTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKHZhbHVlLCBuYW1lKTsKLSAgfQotICAKLQotfSAvL1dlYlNlcnZpY2VTY2VuYXJpbwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L1dlYlNlcnZpY2VTdGF0ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3Mvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC93c3J0L1dlYlNlcnZpY2VTdGF0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjIwYzBkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvd3NydC9XZWJTZXJ2aWNlU3RhdGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQWJzdHJhY3RFbnVtZXJhdG9yOwotCi0KLXB1YmxpYyBmaW5hbCBjbGFzcyBXZWJTZXJ2aWNlU3RhdGUgZXh0ZW5kcyBBYnN0cmFjdEVudW1lcmF0b3IKLXsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTktOT1dOID0gMDsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVWRUxPUEVEID0gMTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVNTRU1CTEVEID0gMjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVQTE9ZRUQgPSAzOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTlNUQUxMRUQgPSA0OwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSVU5OSU5HID0gNTsKLSAgCi0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFdlYlNlcnZpY2VTdGF0ZSBVTktOT1dOX0xJVEVSQUwgPSBuZXcgV2ViU2VydmljZVN0YXRlKFVOS05PV04sICJVTktOT1dOIik7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgV2ViU2VydmljZVN0YXRlIERFVkVMT1BFRF9MSVRFUkFMID0gbmV3IFdlYlNlcnZpY2VTdGF0ZShERVZFTE9QRUQsICJERVZFTE9QRUQiKTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBXZWJTZXJ2aWNlU3RhdGUgQVNTRU1CTEVEX0xJVEVSQUwgPSBuZXcgV2ViU2VydmljZVN0YXRlKEFTU0VNQkxFRCwgIkFTU0VNQkxFRCIpOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFdlYlNlcnZpY2VTdGF0ZSBERVBMT1lFRF9MSVRFUkFMID0gbmV3IFdlYlNlcnZpY2VTdGF0ZShERVBMT1lFRCwgIkRFUExPWUVEIik7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgV2ViU2VydmljZVN0YXRlIElOU1RBTExFRF9MSVRFUkFMID0gbmV3IFdlYlNlcnZpY2VTdGF0ZShJTlNUQUxMRUQsICJJTlNUQUxMRUQiKTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBXZWJTZXJ2aWNlU3RhdGUgUlVOTklOR19MSVRFUkFMID0gbmV3IFdlYlNlcnZpY2VTdGF0ZShSVU5OSU5HLCAiUlVOTklORyIpOwotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFdlYlNlcnZpY2VTdGF0ZVtdIFZBTFVFU19BUlJBWSA9Ci0gICAgbmV3IFdlYlNlcnZpY2VTdGF0ZVtdCi0gICAgewotCSAgVU5LTk9XTl9MSVRFUkFMLAotCSAgREVWRUxPUEVEX0xJVEVSQUwsCi0JICBBU1NFTUJMRURfTElURVJBTCwKLQkgIERFUExPWUVEX0xJVEVSQUwsCi0JICBJTlNUQUxMRURfTElURVJBTCwKLQkgIFJVTk5JTkdfTElURVJBTCwKLSAgICB9OwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgTGlzdCBWQUxVRVMgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KEFycmF5cy5hc0xpc3QoVkFMVUVTX0FSUkFZKSk7Ci0KLQotICBwdWJsaWMgc3RhdGljIFdlYlNlcnZpY2VTdGF0ZSBnZXQoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IFZBTFVFU19BUlJBWS5sZW5ndGg7ICsraSkKLSAgICB7Ci0gICAgICBXZWJTZXJ2aWNlU3RhdGUgcmVzdWx0ID0gVkFMVUVTX0FSUkFZW2ldOwotICAgICAgaWYgKHJlc3VsdC50b1N0cmluZygpLmVxdWFscyhuYW1lKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotCi0gIHB1YmxpYyBzdGF0aWMgV2ViU2VydmljZVN0YXRlIGdldChpbnQgdmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKHZhbHVlKQotICAgIHsKLSAgICAgIGNhc2UgVU5LTk9XTjogcmV0dXJuIFVOS05PV05fTElURVJBTDsKLSAgICAgIGNhc2UgREVWRUxPUEVEOiByZXR1cm4gREVWRUxPUEVEX0xJVEVSQUw7Ci0gICAgICBjYXNlIEFTU0VNQkxFRDogcmV0dXJuIEFTU0VNQkxFRF9MSVRFUkFMOwotCSAgY2FzZSBERVBMT1lFRDogcmV0dXJuIERFUExPWUVEX0xJVEVSQUw7Ci0JICBjYXNlIElOU1RBTExFRDogcmV0dXJuIElOU1RBTExFRF9MSVRFUkFMOwotCSAgY2FzZSBSVU5OSU5HOiByZXR1cm4gUlVOTklOR19MSVRFUkFMOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsJCi0gIH0KLQotICAvKioKLSAgICogT25seSB0aGlzIGNsYXNzIGNhbiBjb25zdHJ1Y3QgaW5zdGFuY2VzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBXZWJTZXJ2aWNlU3RhdGUoaW50IHZhbHVlLCBTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKHZhbHVlLCBuYW1lKTsKLSAgfQotCi19IC8vV2ViU2VydmljZVN0YXRlCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi8uY2xhc3NwYXRoIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlODdhZGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkgZXhjbHVkaW5nPSJ3c2RsdmFsaWRhdGV1aS98d3NkbHZhbGlkYXRlLyIga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ij4KLQkJPGFjY2Vzc3J1bGVzPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0ib3JnL2FwYWNoZS94ZXJjZXMvKioiLz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49ImphdmF4L3htbC9uYW1lc3BhY2UvUU5hbWUiLz4KLQkJPC9hY2Nlc3NydWxlcz4KLQk8L2NsYXNzcGF0aGVudHJ5PgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyI+Ci0JCTxhY2Nlc3NydWxlcz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49Im9yZy9lY2xpcHNlL3dzdC94bWwvY29yZS9pbnRlcm5hbC92YWxpZGF0aW9uLyoqIi8+Ci0JCQk8YWNjZXNzcnVsZSBraW5kPSJhY2Nlc3NpYmxlIiBwYXR0ZXJuPSJvcmcvZWNsaXBzZS93c3QvdmFsaWRhdGlvbi9pbnRlcm5hbC9kZWxlZ2F0ZXMvRGVsZWdhdGluZ1ZhbGlkYXRvciIvPgotCQk8L2FjY2Vzc3J1bGVzPgotCTwvY2xhc3NwYXRoZW50cnk+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4MDMyZWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1iaW4KLWJ1aWxkLnhtbAotdGVtcC5mb2xkZXIKLXdzZGx2YWxpZGF0ZS5qYXIKLXdzZGx2YWxpZGF0ZXVpLmphcgotd3NkbHZhbGlkYXRlc3JjLnppcAotd3NkbHZhbGlkYXRldWlzcmMuemlwCi1AZG90Ci1zcmMuemlwCi1qYXZhQ29tcGlsZXIuLi5hcmdzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxOTBjMzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbjwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJiZmNhZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotI1R1ZSBBcHIgMTggMTI6MzA6MjkgRURUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW1wdHlTdGF0ZW1lbnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmhpZGRlbkNhdGNoQmxvY2s9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBhdGlibGVOb25Jbmhlcml0ZWRJbnRlcmZhY2VNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBsZXRlRW51bVN3aXRjaD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5kaXJlY3RTdGF0aWNBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmxvY2FsVmFyaWFibGVIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nRGVwcmVjYXRlZEFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdTZXJpYWxWZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9FZmZlY3RBc3NpZ25tZW50PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9JbXBsaWNpdFN0cmluZ0NvbnZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub25FeHRlcm5hbGl6ZWRTdHJpbmdMaXRlcmFsPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3BlY2lhbFBhcmFtZXRlckhpZGluZ0ZpZWxkPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN0YXRpY0FjY2Vzc1JlY2VpdmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN5bnRoZXRpY0FjY2Vzc0VtdWxhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udHlwZVBhcmFtZXRlckhpZGluZz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuY2hlY2tlZFR5cGVPcGVyYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmRvY3VtZW50ZWRFbXB0eUJsb2NrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeUVsc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5VHlwZUNoZWNrPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVucXVhbGlmaWVkRmllbGRBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbldoZW5PdmVycmlkaW5nPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZEltcG9ydD1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXI9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5JbXBsZW1lbnRpbmdBYnN0cmFjdD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuT3ZlcnJpZGluZ0NvbmNyZXRlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFByaXZhdGVNZW1iZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udmFyYXJnc0FyZ3VtZW50TmVlZENhc3Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuMwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E1Y2VjNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotI1R1ZSBBcHIgMTggMTI6MzA6MjkgRURUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1pbnRlcm5hbC5kZWZhdWx0LmNvbXBsaWFuY2U9ZGVmYXVsdApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL01FVEEtSU5GL01BTklGRVNULk1GIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjNhZDE0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVfUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb247IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMS40MDEucXVhbGlmaWVyCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2UuVmFsaWRhdGVXU0RMUGx1Z2luCi1CdW5kbGUtVmVuZG9yOiAlX1BST1ZJREVSX05BTUUKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWw7eC1mcmllbmRzOj0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cyxvcmcuZWNsaXBzZS53c3Qud3NpIiwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2U7eC1mcmllbmRzOj0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cyxvcmcuZWNsaXBzZS53c3Qud3NpIiwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmV4Y2VwdGlvbjt4LWZyaWVuZHM6PSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLG9yZy5lY2xpcHNlLndzdC53c2kiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZzt4LWZyaWVuZHM6PSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLG9yZy5lY2xpcHNlLndzdC53c2kiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXI7eC1mcmllbmRzOj0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cyxvcmcuZWNsaXBzZS53c3Qud3NpIiwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLmFudDt4LWZyaWVuZHM6PSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLG9yZy5lY2xpcHNlLndzdC53c2kiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudWkudGV4dDt4LWZyaWVuZHM6PSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLG9yZy5lY2xpcHNlLndzdC53c2kiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudXRpbDt4LWZyaWVuZHM6PSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLG9yZy5lY2xpcHNlLndzdC53c2kiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExO3gtZnJpZW5kczo9Im9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMsb3JnLmVjbGlwc2Uud3N0LndzaSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuaHR0cDt4LWZyaWVuZHM6PSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLG9yZy5lY2xpcHNlLndzdC53c2kiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLm1pbWU7eC1mcmllbmRzOj0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cyxvcmcuZWNsaXBzZS53c3Qud3NpIiwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5zb2FwO3gtZnJpZW5kczo9Im9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMsb3JnLmVjbGlwc2Uud3N0LndzaSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkO3gtZnJpZW5kczo9Im9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMsb3JnLmVjbGlwc2Uud3N0LndzaSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWw7eC1mcmllbmRzOj0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cyxvcmcuZWNsaXBzZS53c3Qud3NpIgotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuYXBhY2hlLmFudDtidW5kbGUtdmVyc2lvbj0iWzEuNi41LDIuMC4wKSI7cmVzb2x1dGlvbjo9b3B0aW9uYWwsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi51cmlyZXNvbHZlcjtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb247YnVuZGxlLXZlcnNpb249IlsxLjIuMCwxLjMuMCkiLAotIGphdmF4LndzZGw7YnVuZGxlLXZlcnNpb249IlsxLjUuMCwxLjYuMCkiLAotIG9yZy5hcGFjaGUueGVyY2VzO2J1bmRsZS12ZXJzaW9uPSJbMi44LjAsMy4wLjApIjt2aXNpYmlsaXR5Oj1yZWV4cG9ydCwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWU7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC54bWwuY29yZTtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIKLUJ1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5Ci1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9hYm91dC5odG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9idWlsZC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkYjI0YzYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXNvdXJjZS4uID0gc3JjLwotb3V0cHV0Li4gPSBiaW4vCi1iaW4uaW5jbHVkZXMgPSBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICAuLFwKLSAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXAotICAgICAgICAgICAgICAgZXhzZC8KLXNyYy5pbmNsdWRlcyA9IGJ1aWxkLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9leHNkL2V4dHZhbGlkYXRvci5leHNkIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2V4c2QvZXh0dmFsaWRhdG9yLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZThkZDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2V4c2QvZXh0dmFsaWRhdG9yLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbiI+Ci08YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2NoZW1hIHBsdWdpbj0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbiIgaWQ9ImV4dHZhbGlkYXRvciIgbmFtZT0iV1NETCBFeHRlbnNpb24gVmFsaWRhdG9yIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoZSBXU0RMIEV4dGVuc2lvbiBWYWxpZGF0b3IgZXh0ZW5zaW9uIHBvaW50IGFsbG93cyBjbGllbnRzIHRvIGNvbnRyaWJ1dGUgYSB2YWxpZGF0b3IgdGhhdCBwcm92aWRlcyBjdXN0b20gdmFsaWRhdGlvbiBsb2dpYyBmb3IgV1NETCAxLjEgZG9jdW1lbnRzLgotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8ZWxlbWVudCBuYW1lPSJleHRlbnNpb24iPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJleHR2YWxpZGF0b3IiLz4KLSAgICAgICAgIDwvc2VxdWVuY2U+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBvaW50IiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGEgZnVsbHkgcXVhbGlmaWVkIGlkZW50aWZpZXIgb2YgdGhlIHRhcmdldCBleHRlbnNpb24gcG9pbnQKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhbiBvcHRpb25hbCBpZGVudGlmaWVyIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZQotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJleHR2YWxpZGF0b3IiPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzICZsdDtjb2RlJmd0O29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVdTRExWYWxpZGF0b3ImbHQ7L2NvZGUmZ3Q7LgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgPGFwcEluZm8+Ci0gICAgICAgICAgICAgICAgICA8bWV0YS5hdHRyaWJ1dGUga2luZD0iamF2YSIgYmFzZWRPbj0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JV1NETFZhbGlkYXRvciIvPgotICAgICAgICAgICAgICAgPC9hcHBJbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgV1NETCBuYW1lc3BhY2UgZm9yIHdoaWNoIHRoaXMgdmFsaWRhdG9yIHNob3VsZCBydW4uIEN1cnJlbnRseSB0aGUgb25seSBhY2NlcHRlZCB2YWx1ZSBpcyBodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0ic2luY2UiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgJmx0O2ImZ3Q7VGhpcyBleHRlbnNpb24gcG9pbnQgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBleHBlY3RlZCB0byBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sgZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4gKHJlcGVhdGVkbHkpIGFzIHRoZSBBUEkgZXZvbHZlcy4mbHQ7L2ImZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIFdTREwgRXh0ZW5zaW9uIFZhbGlkYXRvciBjb250cmlidXRpb246Ci0mbHQ7cHJlJmd0OwotICAgJmx0O2V4dGVuc2lvbgotICAgICAgICAgaWQ9JnF1b3Q7d3NkbFdTSVZhbGlkYXRvciZxdW90OwotICAgICAgICAgbmFtZT0mcXVvdDtXU0RMIFdTLUkgVmFsaWRhdG9yJnF1b3Q7Ci0gICAgICAgICBwb2ludD0mcXVvdDtvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmV4dHZhbGlkYXRvciZxdW90OyZndDsKLSAgICAgICZsdDtleHR2YWxpZGF0b3IKLSAgICAgICAgICAgIG5hbWVzcGFjZT0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyZxdW90OwotICAgICAgICAgICAgY2xhc3M9JnF1b3Q7b3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC52YWxpZGF0ZS53c2RsLldTRExWYWxpZGF0b3ImcXVvdDsmZ3Q7Ci0gICAgICAmbHQ7L2V4dHZhbGlkYXRvciZndDsKLSAgICZsdDsvZXh0ZW5zaW9uJmd0OwotJmx0Oy9wcmUmZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImFwaUluZm8iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgVGhlIHN1cHBsaWVkIGNsYXNzIG11c3QgaW1wbGVtZW50ICZsdDtjb2RlJmd0O29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVdTRExWYWxpZGF0b3ImbHQ7L2NvZGUmZ3Q7LgotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJpbXBsZW1lbnRhdGlvbiIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAmbHQ7Y29kZSZndDsKLW9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwudmFsaWRhdGUud3NkbC5XU0RMVmFsaWRhdG9yCi0mbHQ7L2NvZGUmZ3Q7Ci1Db250cmlidXRlcyBXUy1JIHZhbGlkYXRpb24gbG9naWMgZm9yIHRoZSBuYW1lc3BhY2UgaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8uCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImNvcHlyaWdodCIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0O2JyJmd0OwotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSAKLWF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyAKLXRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICZsdDthCi1ocmVmPSZxdW90O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJnF1b3Q7Jmd0O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJmx0Oy9hJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9leHNkL3dzZGwxMXZhbGlkYXRvci5leHNkIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2V4c2Qvd3NkbDExdmFsaWRhdG9yLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YjYwZWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2V4c2Qvd3NkbDExdmFsaWRhdG9yLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbiI+Ci08YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2NoZW1hIHBsdWdpbj0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbiIgaWQ9IndzZGwxMXZhbGlkYXRvciIgbmFtZT0iV1NETCAxLjEgRXh0ZW5zaW9uIFZhbGlkYXRvciIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGUgV1NETCAxLjEgRXh0ZW5zaW9uIFZhbGlkYXRvciBleHRlbnNpb24gcG9pbnQgYWxsb3dzIGNsaWVudHMgdG8gY29udHJpYnV0ZSBhIHZhbGlkYXRvciBmb3IgYSBzcGVjaWZpYyBuYW1lc3BhY2UgdG8gV1NETCAxLjEgdmFsaWRhdGlvbi4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaW9uIj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxzZXF1ZW5jZT4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0idmFsaWRhdG9yIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwb2ludCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhIGZ1bGx5IHF1YWxpZmllZCBpZGVudGlmaWVyIG9mIHRoZSB0YXJnZXQgZXh0ZW5zaW9uIHBvaW50Ci0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYW4gb3B0aW9uYWwgaWRlbnRpZmllciBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0idmFsaWRhdG9yIj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIGNsYXNzIHRoYXQgaW1wbGVtZW50cyAmbHQ7Y29kZSZndDtvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdG9yJmx0Oy9jb2RlJmd0Oy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIGtpbmQ9ImphdmEiIGJhc2VkT249Im9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLklXU0RMMTFWYWxpZGF0b3IiLz4KLSAgICAgICAgICAgICAgIDwvYXBwSW5mbz4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgVGhlIG5hbWVzcGFjZSB0aGlzIHZhbGlkYXRvciB3aWxsIHZhbGlkYXRlLgotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJzaW5jZSIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAmbHQ7YiZndDtUaGlzIGV4dGVuc2lvbiBwb2ludCBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjayBmcm9tIHBpb25lZXJpbmcgYWRvcHRlcnMgb24gdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBhbnkgY29kZSB0aGF0IHVzZXMgdGhpcyBBUEkgd2lsbCBhbG1vc3QgY2VydGFpbmx5IGJlIGJyb2tlbiAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLiZsdDsvYiZndDsKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iZXhhbXBsZXMiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGEgV1NETCAxLjEgRXh0ZW5zaW9uIFZhbGlkYXRvciBjb250cmlidXRpb246Ci0mbHQ7cHJlJmd0OwotICAgJmx0O2V4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9JnF1b3Q7b3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi53c2RsMTF2YWxpZGF0b3ImcXVvdDsmZ3Q7Ci0gICAgICAmbHQ7dmFsaWRhdG9yCi0gICAgICAgICAgICBjbGFzcz0mcXVvdDtvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5odHRwLkhUVFBWYWxpZGF0b3ImcXVvdDsKLSAgICAgICAgICAgIG5hbWVzcGFjZT0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL2h0dHAvJnF1b3Q7LyZndDsKLSAgICZsdDsvZXh0ZW5zaW9uJmd0OwotJmx0Oy9wcmUmZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImFwaUluZm8iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgVGhlIHN1cHBsaWVkIGNsYXNzIG11c3QgaW1wbGVtZW50ICZsdDtjb2RlJmd0O29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLldTREwxMVZhbGlkYXRvciZsdDsvY29kZSZndDsuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImltcGxlbWVudGF0aW9uIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICZsdDtjb2RlJmd0Owotb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuaHR0cC5IVFRQVmFsZGlhdG9yCi0mbHQ7L2NvZGUmZ3Q7Ci1Db250cmlidXRlcyB2YWxpZGF0aW9uIGxvZ2ljIGZvciB0aGUgbmFtZXNwYWNlIGh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8uCi0mbHQ7Y29kZSZndDsKLW9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLm1pbWUuTUlNRVZhbGRpYXRvcgotJmx0Oy9jb2RlJmd0OwotQ29udHJpYnV0ZXMgdmFsaWRhdGlvbiBsb2dpYyBmb3IgdGhlIG5hbWVzcGFjZSBodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL21pbWUvLgotJmx0O2NvZGUmZ3Q7Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5zb2FwLlNPQVBWYWxkaWF0b3IKLSZsdDsvY29kZSZndDsKLUNvbnRyaWJ1dGVzIHZhbGlkYXRpb24gbG9naWMgZm9yIHRoZSBuYW1lc3BhY2UgaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLy4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iY29weXJpZ2h0Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4mbHQ7YnImZ3Q7Ci1BbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIAotYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIAotdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgJmx0O2EKLWhyZWY9JnF1b3Q7aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwmcXVvdDsmZ3Q7aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwmbHQ7L2EmZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLTwvc2NoZW1hPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2xpYi8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL2xpYi8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzkyZjBlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9saWIvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSouamFyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vcGx1Z2luLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NWEzOGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSEtLSBwcm9wZXJ0aWVzIGZpbGUgZm9yIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24KLSEtLSBUb29sIE5hbWUKLQotX1BMVUdJTl9OQU1FICAgICAgID0gV1NETCBWYWxpZGF0b3IKLV9QUk9WSURFUl9OQU1FICAgICA9IEVjbGlwc2Uub3JnCi0KLV9VSV9XU0RMNEpfVkFMSURBVE9SX0RFTEVHQVRFID0gV1NETDRKLWJhc2VkIFdTREwgVmFsaWRhdG9yCi1fVUlfV1NETF9WQUxJREFUT1IgPSBXU0RMIFZhbGlkYXRvcgotX1VJX1dTRExfVkFMSURBVE9SX01BUktFUiA9IFdTREwgUHJvYmxlbQotCi0hLS0gRXh0ZW5zaW9uIHBvaW50cwotX1dTRExfRVhURU5TSU9OX1ZBTElEQVRPUl9OQU1FICAgPSBXU0RMIEV4dGVuc2lvbiBWYWxpZGF0b3IKLV9XU0RMMTFfVkFMSURBVE9SX05BTUUgPSBXU0RMIDEuMSBWYWxpZGF0b3IKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxZTExNDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotPHBsdWdpbj4KLQotICAgPGV4dGVuc2lvbi1wb2ludCBpZD0iZXh0dmFsaWRhdG9yIiBuYW1lPSIlX1dTRExfRVhURU5TSU9OX1ZBTElEQVRPUl9OQU1FIiBzY2hlbWE9ImV4c2QvZXh0dmFsaWRhdG9yLmV4c2QiLz4KLSAgIAotICAgPGV4dGVuc2lvbi1wb2ludCBpZD0id3NkbDExdmFsaWRhdG9yIiBuYW1lPSIlV1NETDExX1ZBTElEQVRPUl9OQU1FIiBzY2hlbWE9ImV4c2Qvd3NkbDExdmFsaWRhdG9yLmV4c2QiLz4KLSAgIAotCTxleHRlbnNpb24KLSAgICAJcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLnZhbGlkYXRvckRlbGVnYXRlcyI+Ci0gICAgICAgIDxkZWxlZ2F0ZQotICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5lY2xpcHNlLlZhbGlkYXRvciIKLSAgICAgICAgICAgICAgbmFtZT0iJV9VSV9XU0RMNEpfVkFMSURBVE9SX0RFTEVHQVRFIgotICAgICAgICAgICAgICB0YXJnZXQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZWNsaXBzZS5XU0RMRGVsZWdhdGluZ1ZhbGlkYXRvciIvPgotICAgICA8L2V4dGVuc2lvbj4JCi0KLSAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotICAgPCEtLSBBbiBleHRlbnNpb24gZm9yIGFkZGluZyB0aGUgV1NETCB2YWxpZGF0b3IgdG8gdGhlICAgICAgLS0+Ci0gICA8IS0tIHZhbGlkYXRpb24gZnJhbWV3b3JrLiAJCQkJCQkgICAgICAgICAgIC0tPgkJCQkJCQkJCQkgICAtLT4KLSAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotICAgPCEtLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgaWQ9IndzZGxWYWxpZGF0b3IiCi0gICAgICAgICBuYW1lPSIlX1VJX1dTRExfVkFMSURBVE9SIgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLnZhbGlkYXRvciI+Ci0gICAgICA8dmFsaWRhdG9yPgotICAgICAgICAgPGZpbHRlcgotICAgICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlIgotICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZT0iZmFsc2UiCi0gICAgICAgICAgICAgICBuYW1lRmlsdGVyPSIqLndzZGwiPgotICAgICAgICAgPC9maWx0ZXI+Ci0gICAgICAgICA8aGVscGVyCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5IZWxwZXIiPgotICAgICAgICAgPC9oZWxwZXI+Ci0gICAgICAgICA8cnVuCi0gICAgICAgICAgICAgICBhc3luYz0idHJ1ZSIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2UuV1NETERlbGVnYXRpbmdWYWxpZGF0b3IiCi0gICAgICAgICAgICAgICBlbmFibGVkPSJ0cnVlIgotICAgICAgICAgICAgICAgZnVsbEJ1aWxkPSJ0cnVlIgotICAgICAgICAgICAgICAgaW5jcmVtZW50YWw9InRydWUiPgotICAgICAgICAgPC9ydW4+Ci0gICAgICAgICA8bWFya2VySWQgbWFya2VySWRWYWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi52YWxpZGF0aW9uTWFya2VyIi8+Ci0gICAgICA8L3ZhbGlkYXRvcj4KLSAgIDwvZXh0ZW5zaW9uPgotICAgLS0+Ci0gICAKLSAgIDxleHRlbnNpb24gaWQ9IndzZGwiIG5hbWU9IiVfVUlfV1NETF9WQUxJREFUT1IiIHBvaW50PSJvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbi52YWxpZGF0b3JWMiI+Ci0gICAgICA8dmFsaWRhdG9yCi0gICAgICAgICAgICBidWlsZD0idHJ1ZSIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2UuV1NETERlbGVnYXRpbmdWYWxpZGF0b3IiCi0gICAgICAgICAgICBtYW51YWw9InRydWUiCi0gICAgICAgICAgICBzb3VyY2VpZD0ib3JnLmVjbGlwc2Uud3N0LndzZGwudWkuaW50ZXJuYWwudmFsaWRhdGlvbi5EZWxlZ2F0aW5nU291cmNlVmFsaWRhdG9yRm9yV1NETCIKLSAgICAgICAgICAgIHZlcnNpb249IjIiCi0gICAgICAgICAgICBtYXJrZXJJZD0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi52YWxpZGF0aW9uTWFya2VyIj4KLSAgICAgICAgIDxpbmNsdWRlPgotICAgICAgICAgICAgPHJ1bGVzPgotICAgICAgICAgICAgICAgPGZpbGVleHQgY2FzZVNlbnNpdGl2ZT0iZmFsc2UiIGV4dD0id3NkbCI+PC9maWxlZXh0PgotICAgICAgICAgICAgPC9ydWxlcz4KLSAgICAgICAgIDwvaW5jbHVkZT4KLSAgICAgIDwvdmFsaWRhdG9yPgotICAgPC9leHRlbnNpb24+Ci0gICAKLSAgIDxleHRlbnNpb24KLSAgICAgICAgIGlkPSJ2YWxpZGF0aW9uTWFya2VyIgotICAgICAgICAgbmFtZT0iJV9VSV9XU0RMX1ZBTElEQVRPUl9NQVJLRVIiCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMubWFya2VycyI+Ci0gICAgICA8c3VwZXIgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24ucHJvYmxlbW1hcmtlciIvPgotICAgICAgPHBlcnNpc3RlbnQgdmFsdWU9InRydWUiLz4KLSAgIDwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvQ2xhc3Nsb2FkZXJXU0RMVmFsaWRhdG9yRGVsZWdhdGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9DbGFzc2xvYWRlcldTRExWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODdjYTk1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9DbGFzc2xvYWRlcldTRExWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuTG9nZ2VyRmFjdG9yeTsKLQotCi0KLS8qKgotICogQSBkZWxlZ2F0ZSBob2xkcyBhIHZhbGlkYXRvcidzIGluZm9ybWF0aW9uIGFuZCBjYW4gaW5zdGFudGlhdGUgaXQKLSAqIHdoZW4gcmVxdWVzdGVkIHRvLgotICovCi1wdWJsaWMgY2xhc3MgQ2xhc3Nsb2FkZXJXU0RMVmFsaWRhdG9yRGVsZWdhdGUgZXh0ZW5kcyBXU0RMVmFsaWRhdG9yRGVsZWdhdGUKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgdmFsaWRhdG9yQ2xhc3NuYW1lID0gbnVsbDsKLSAgcHJpdmF0ZSBDbGFzc0xvYWRlciBjbGFzc0xvYWRlciA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIGRlbGVnYXRlIGZvciBhIHZhbGlkYXRvciBieSBpdHMgY2xhc3MgbmFtZS4KLSAgICogCi0gICAqIEBwYXJhbSB2YWxpZGF0b3JDbGFzc25hbWUgVGhlIG5hbWUgb2YgdGhlIHZhbGlkYXRvciBjbGFzcy4KLSAgICovCi0gIHB1YmxpYyBDbGFzc2xvYWRlcldTRExWYWxpZGF0b3JEZWxlZ2F0ZShTdHJpbmcgdmFsaWRhdG9yQ2xhc3NuYW1lKQotICB7Ci0gICAgdGhpcy52YWxpZGF0b3JDbGFzc25hbWUgPSB2YWxpZGF0b3JDbGFzc25hbWU7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgZGVsZWdhdGUgZm9yIGEgdmFsaWRhdG9yIGJ5IGl0cyBjbGFzcyBuYW1lIGFuZCAKLSAgICogYSBjbGFzcyBsb2FkZXIgdG8gbG9hZCB0aGUgdmFsaWRhdG9yLgotICAgKiAKLSAgICogQHBhcmFtIHZhbGlkYXRvckNsYXNzbmFtZSBUaGUgbmFtZSBvZiB0aGUgdmFsaWRhdG9yIGNsYXNzLgotICAgKiBAcGFyYW0gY2xhc3NMb2FkZXIgVGhlIGNsYXNzIGxvYWRlciB0byB1c2UgdG8gbG9hZCB0aGUgdmFsaWRhdG9yLgotICAgKi8KLSAgcHVibGljIENsYXNzbG9hZGVyV1NETFZhbGlkYXRvckRlbGVnYXRlKFN0cmluZyB2YWxpZGF0b3JDbGFzc25hbWUsIENsYXNzTG9hZGVyIGNsYXNzTG9hZGVyKQotICB7Ci0gICAgdGhpcyh2YWxpZGF0b3JDbGFzc25hbWUpOwotICAgIHRoaXMuY2xhc3NMb2FkZXIgPSBjbGFzc0xvYWRlcjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLldTRExWYWxpZGF0b3JEZWxlZ2F0ZSNsb2FkVmFsaWRhdG9yKCkKLSAgICovCi0gIHByb3RlY3RlZCBJV1NETFZhbGlkYXRvciBsb2FkVmFsaWRhdG9yKCkKLSAgewotCUlXU0RMVmFsaWRhdG9yIHZhbGlkYXRvciA9IG51bGw7Ci0gICAgaWYoY2xhc3NMb2FkZXIgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBjbGFzc0xvYWRlciA9IGdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKTsKLSAgICB9Ci0gICAgdHJ5Ci0gICAgewotICAgICAgQ2xhc3MgdmFsaWRhdG9yQ2xhc3MgPQotICAgICAgY2xhc3NMb2FkZXIgIT0gbnVsbCA/IGNsYXNzTG9hZGVyLmxvYWRDbGFzcyh2YWxpZGF0b3JDbGFzc25hbWUpIDogQ2xhc3MuZm9yTmFtZSh2YWxpZGF0b3JDbGFzc25hbWUpOwotCi0gICAgICB2YWxpZGF0b3IgPSAoSVdTRExWYWxpZGF0b3IpdmFsaWRhdG9yQ2xhc3MubmV3SW5zdGFuY2UoKTsKLSAgICB9Ci0gICAgY2F0Y2goVGhyb3dhYmxlIHQpCi0gICAgewotICAgIAlMb2dnZXJGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0TG9nZ2VyKCkubG9nKCJVbmFibGUgdG8gbG9hZCB2YWxpZGF0b3IgIiArIHZhbGlkYXRvckNsYXNzbmFtZSwgSUxvZ2dlci5TRVZfRVJST1IsIHQpOwotICAgIH0KLSAgICByZXR1cm4gdmFsaWRhdG9yOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5XU0RMVmFsaWRhdG9yRGVsZWdhdGUjZ2V0VmFsaWRhdG9yTmFtZSgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFZhbGlkYXRvck5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHZhbGlkYXRvckNsYXNzbmFtZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL0NvbnN0YW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL0NvbnN0YW50cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjYzZjJmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9Db25zdGFudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsOwotCi0vKioKLSAqIFNldCBjb25zdGFudHMgdGhhdCB0aGUgdmFsaWRhdG9yIG1ha2VzIHVzZSBvZi4KLSAqLwotcHVibGljIGludGVyZmFjZSBDb25zdGFudHMKLXsKLSAgLyoqCi0gICAqIFRoZSBuYW1lIG9mIHRoZSB2YWxpZGF0b3IgcHJvcGVydGllcyBmaWxlLgotICAgKi8KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV1NETF9WQUxJREFUT1JfUFJPUEVSVElFU19GSUxFID0gInZhbGlkYXRld3NkbCI7Ci0KLSAgLyoqCi0gICAqIFRoZSBTT0FQIDEuMSBuYW1lc3BhY2UuCi0gICAqLwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBOU19TT0FQMTEgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI7Ci0KLSAgLyoqCi0gICAqIFRoZSBIVFRQIG5hbWVzcGFjZS4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5TX0hUVFAgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9odHRwLyI7Ci0KLSAgLyoqCi0gICAqIFRoZSBNSU1FIG5hbWVzcGFjZS4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5TX01JTUUgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyI7Ci0gIAotICAvKioKLSAgICogVGhlIFdTREwgc2NoZW1hIGNhY2hlIGF0dHJpYnV0ZSBhbGxvd3MgYW4gWE1MR3JhbW1hclBvb2wgb2JqZWN0IHRvIGJlIHNldCBmb3IgdXNlIGluIAotICAgKiBpbmxpbmUgc2NoZW1hIHZhbGlkYXRpb24uCi0gICAqLwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBYTUxTQ0hFTUFfQ0FDSEVfQVRUUklCVVRFID0gImh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvd3NkbC9zY2hlbWFjYWNoZSI7Ci0gIAotICAvKioKLSAgICogVGhlIFdTREwgc2NoZW1hIGNhY2hlIGF0dHJpYnV0ZSBhbGxvd3MgYW4gWE1MR3JhbW1hclBvb2wgb2JqZWN0IHRvIGJlIHNldCBmb3IgdXNlIGluIAotICAgKiBYTUwgY29uZm9ybWFuY2UgdmFsaWRhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFhNTF9DQUNIRV9BVFRSSUJVVEUgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy93c2RsL3htbGNhY2hlIjsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9Db250cm9sbGVyVmFsaWRhdGlvbkluZm8uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9Db250cm9sbGVyVmFsaWRhdGlvbkluZm8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIzMGE4ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvQ29udHJvbGxlclZhbGlkYXRpb25JbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbDsKLQotCi0vKioKLSAqIEFuIGludGVyZmFjZSBmb3IgdGhlIHZhbGlkYXRpb24gaW5mbyB0aGF0IGFsbG93cyBmb3Igc3RhcnRpbmcgYW5kCi0gKiBjb21wbGV0aW5nIFdTREwgYW5kIFdTLUkgdmFsaWRhdGlvbi4KLSAqLwotcHVibGljIGludGVyZmFjZSBDb250cm9sbGVyVmFsaWRhdGlvbkluZm8gZXh0ZW5kcyBJVmFsaWRhdGlvbkluZm8KLXsKLSAgCi0gIC8qKgotICAgKiBQZXJmb3JtIHRoZSBuZWNlc3Nhcnkgc3RlcHMgdG8gY29tcGxldGUgV1NETCB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHVibGljIHZvaWQgY29tcGxldGVXU0RMVmFsaWRhdGlvbigpOwotICAKLS8vICAvKioKLS8vICAgKiBQZXJmb3JtIHRoZSBuZWNlc3Nhcnkgc3RlcHMgdG8gY29tcGxldGUgV1MtSSBXU0RMIHZhbGlkYXRpb24uCi0vLyAgICovCi0vLyAgcHVibGljIHZvaWQgY29tcGxldGVXU0lWYWxpZGF0aW9uKCk7Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL0lWYWxpZGF0aW9uSW5mby5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL0lWYWxpZGF0aW9uSW5mby5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjk0ZTYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9JVmFsaWRhdGlvbkluZm8uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlci5VUklSZXNvbHZlcjsKLQotCi0vKioKLSAqIEFuIGludGVyZmFjZSByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBpbmZvcm1hdGlvbi4KLSAqIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBtZWFudCB0byBiZSBpbXBsZW1lbnRlZCBieSBjbGllbnRzLgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElWYWxpZGF0aW9uSW5mbyBleHRlbmRzIElWYWxpZGF0aW9uUmVwb3J0Ci17Ci0gIAotICAvKioKLSAgICogQWRkIGFuIGVycm9yIG1lc3NhZ2UgZm9yIHRoaXMgZmlsZS4gKFVzZXMgdGhlIFVSSSBmcm9tIHRoaXMgdmFsaWRhdGlvbiBpbmZvIG9iamVjdC4pCi0gICAqIAotICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSBmb3IgdGhlIGVycm9yLgotICAgKiBAcGFyYW0gbGluZSBUaGUgbGluZSBsb2NhdGlvbiBvZiB0aGUgZXJyb3IgaW4gdGhlIGZpbGUuCi0gICAqIEBwYXJhbSBjb2x1bW4gVGhlIGNvbHVtbiBsb2NhdGlvbiBvZiB0aGUgZXJyb3IgaW4gdGhlIGZpbGUuCi0gICAqIEBkZXByZWNhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRFcnJvcihTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4pOwotICAKLSAgLyoqCi0gICAqIEFkZCBhbiBlcnJvciBtZXNzYWdlLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgZm9yIHRoZSBlcnJvci4KLSAgICogQHBhcmFtIGxpbmUgVGhlIGxpbmUgbG9jYXRpb24gb2YgdGhlIGVycm9yIGluIHRoZSBmaWxlLgotICAgKiBAcGFyYW0gY29sdW1uIFRoZSBjb2x1bW4gbG9jYXRpb24gb2YgdGhlIGVycm9yIGluIHRoZSBmaWxlLgotICAgKiBAcGFyYW0gdXJpIFRoZSBVUkkgb2YgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgZXJyb3IuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRFcnJvcihTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4sIFN0cmluZyB1cmkpOwotICAKLSAgLyoqCi0gICAqIEFkZCBhIHdhcm5pbmcgbWVzc2FnZSBmb3IgdGhpcyBmaWxlLiAoVXNlcyB0aGUgVVJJIGZyb20gdGhpcyB2YWxpZGF0aW9uIGluZm8gb2JqZWN0LikKLSAgICogCi0gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIGZvciB0aGUgd2FybmluZy4KLSAgICogQHBhcmFtIGxpbmUgVGhlIGxpbmUgbG9jYXRpb24gb2YgdGhlIHdhcm5pbmcgaW4gdGhlIGZpbGUuCi0gICAqIEBwYXJhbSBjb2x1bW4gVGhlIGNvbHVtbiBsb2NhdGlvbiBvZiB0aGUgd2FybmluZyBpbiB0aGUgZmlsZS4KLSAgICogQGRlcHJlY2F0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFdhcm5pbmcoU3RyaW5nIG1lc3NhZ2UsIGludCBsaW5lLCBpbnQgY29sdW1uKTsKLSAgCi0gIC8qKgotICAgKiBBZGQgYSB3YXJuaW5nIG1lc3NhZ2UuCi0gICAqIAotICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSBmb3IgdGhlIHdhcm5pbmcuCi0gICAqIEBwYXJhbSBsaW5lIFRoZSBsaW5lIGxvY2F0aW9uIG9mIHRoZSB3YXJuaW5nIGluIHRoZSBmaWxlLgotICAgKiBAcGFyYW0gY29sdW1uIFRoZSBjb2x1bW4gbG9jYXRpb24gb2YgdGhlIHdhcm5pbmcgaW4gdGhlIGZpbGUuCi0gICAqIEBwYXJhbSB1cmkgVGhlIFVSSSBvZiB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBlcnJvci4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFdhcm5pbmcoU3RyaW5nIG1lc3NhZ2UsIGludCBsaW5lLCBpbnQgY29sdW1uLCBTdHJpbmcgdXJpKTsKLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIFVSSSByZXNvbHZlciBpbiB1c2UgZm9yIHRoaXMgdmFsaWRhdGlvbi4gVGhlIFVSSSByZXNvbHZlcgotICAgKiByZXR1cm5lZCBpcyBhY3R1YWxseSBhIFVSSSByZXNvbHZlciBoYW5kbGVyIHRoYXQgd2lsbCAKLSAgICogaXRlcmF0ZSB0aHJvdWdoIGFsbCBvZiB0aGUgcmVnaXN0ZXJlZCBVUkkgcmVzb2x2ZXJzLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgVVJJIHJlc29sdmVyIGhhbmRsZXIuCi0gICAqLwotICBwdWJsaWMgVVJJUmVzb2x2ZXIgZ2V0VVJJUmVzb2x2ZXIoKTsKLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIGF0dHJpYnV0ZSB3aXRoIHRoZSBnaXZlbiBuYW1lLiBJZiB0aGUgYXR0cmlidXRlCi0gICAqIGhhcyBub3QgYmVlbiByZWdpc3RlcmVkLCByZXR1cm4gbnVsbC4KLSAgICogCi0gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgYmVpbmcgcmVxdWVzdGVkLgotICAgKiBAcmV0dXJuIFRoZSBhdHRyaWJ1dGUgdmFsdWUgaWYgdGhlIGF0dHJpYnV0ZSBoYXMgYmVlbiByZWdpc3RlcmVkLCBudWxsIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZ2V0QXR0cmlidXRlKFN0cmluZyBuYW1lKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9JVmFsaWRhdGlvbk1lc3NhZ2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9JVmFsaWRhdGlvbk1lc3NhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRmY2M0Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvSVZhbGlkYXRpb25NZXNzYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlF1YWxpZmllZE5hbWU7Ci0KLS8qKgotICogQW4gaW50ZXJmYWNlIGZvciBhIHZhbGlkYXRpb24gbWVzc2FnZS4gQSB2YWxpZGF0aW9uIG1lc3NhZ2UgY29udGFpbnMgaW5mb3JtYXRpb24KLSAqIGZvciB0aGUgbWVzc2FnZSwgaXRzIHNldmVyaXR5IGFuZCB3aGVyZSBpdCdzIGxvY2F0ZWQuCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVZhbGlkYXRpb25NZXNzYWdlCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgUXVhbGlmaWVkTmFtZSBFUlJPUl9NRVNTQUdFX01BUF9RVUFMSUZJRURfTkFNRSA9IG5ldyBRdWFsaWZpZWROYW1lKCJvcmcuZWNsaXBzZS53c2RsLnZhbGlkYXRlIiwgImVycm9yTWVzc2FnZU1hcCIpOwotICAvKioKLSAgICogU2V2ZXJpdHkgZXJyb3IuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRVZfRVJST1IgPSAwOwotICAvKioKLSAgICogU2V2ZXJpdHkgd2FybmluZy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFVl9XQVJOSU5HID0gMTsKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBVUkkgZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHZhbGlkYXRpb24gbWVzc2FnZS4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIFVSSSBmb3IgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRVUkkoKTsKLSAgCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIG1lc3NhZ2UgZm9yIHRoaXMgdmFsaWRhdGlvbiBtZXNzYWdlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgbWVzc2FnZSBmb3IgdGhpcyB2YWxpZGF0aW9uIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UoKTsKLSAgCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIHNldmVyaXR5IG9mIHRoaXMgdmFsaWRhdGlvbiBtZXNzYWdlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgc2V2ZXJpdHkgb2YgdGhpcyB2YWxpZGF0aW9uIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgaW50IGdldFNldmVyaXR5KCk7Ci0gIAotICAvKioKLSAgICogUmV0dXJuIHRoZSBsaW5lIHdoZXJlIHRoaXMgdmFsaWRhdGlvbiBtZXNzYWdlIGlzIGxvY2F0ZWQuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBsaW5lIHdoZXJlIHRoaXMgdmFsaWRhdGlvbiBtZXNzYWdlIGlzIGxvY2F0ZWQuCi0gICAqLwotICBwdWJsaWMgaW50IGdldExpbmUoKTsKLSAgCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIGNvbHVtbiB3aGVyZSB0aGlzIHZhbGlkYXRpb24gbWVzc2FnZSBpcyBsb2NhdGVkLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgY29sdW1uIHdoZXJlIHRoaXMgdmFsaWRhdGlvbiBtZXNzYWdlIGlzIGxvY2F0ZWQuCi0gICAqLwotICBwdWJsaWMgaW50IGdldENvbHVtbigpOwotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgbGlzdCBvZiBuZXN0ZWQgdmFsaWRhdGlvbiBtZXNzYWdlcy4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGxpc3Qgb2YgbmVzdGVkIHZhbGlkYXRpb24gbWVzc2FnZXMuCi0gICAqLwotICBwdWJsaWMgTGlzdCBnZXROZXN0ZWRNZXNzYWdlcygpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL0lWYWxpZGF0aW9uUmVwb3J0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvSVZhbGlkYXRpb25SZXBvcnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI3Mjk5Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvSVZhbGlkYXRpb25SZXBvcnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci0KLS8qKgotICogQW4gaW50ZXJmYWNlIGZvciBhIFdTREwgdmFsaWRhdGlvbiByZXBvcnQuCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVZhbGlkYXRpb25SZXBvcnQKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIFVSSSBmb3IgdGhlIGZpbGUgdGhlIHJlcG9ydCByZWZlcnMgdG8uCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBVUkkgZm9yIHRoZSBmaWxlIHRoZSByZXBvcnQgcmVmZXJzIHRvLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRGaWxlVVJJKCk7Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBmaWxlIGlzIHZhbGlkIGFjY29yZGluZyB0byB0aGUgV1NETCBzcGVjaWZpY2F0aW9uLgotICAgKiAKLSAgICogQHJldHVybiBUcnVlIGlmIHRoZSBmaWxlIGlzIFdTREwgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzV1NETFZhbGlkKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgdmFsaWRhdGlvbiBtZXNzYWdlcy4KLSAgICogCi0gICAqIEByZXR1cm4gQW4gYXJyYXkgb2YgdmFsaWRhdGlvbiBtZXNzYWdlcy4KLSAgICovCi0gIHB1YmxpYyBJVmFsaWRhdGlvbk1lc3NhZ2VbXSBnZXRWYWxpZGF0aW9uTWVzc2FnZXMoKTsKLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIGVycm9ycywgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKiAKLSAgICogQHJldHVybiBUcnVlIGlmIHRoZXJlIGFyZSBlcnJvcnMsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGhhc0Vycm9ycygpOwotICAKLSAgcHVibGljIEhhc2hNYXAgZ2V0TmVzdGVkTWVzc2FnZXMoKTsKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL0lXU0RMVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvSVdTRExWYWxpZGF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc5MDJlNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvSVdTRExWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5leGNlcHRpb24uVmFsaWRhdGVXU0RMRXhjZXB0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotCi0vKioKLSAqIEFuIGludGVyZmFjZSBmb3IgYSBXU0RMIHZhbGlkYXRvci4gVGhpcyBpcyB0aGUgaW50ZXJmYWNlIGZvciBhIHRvcCBsZXZlbCB2YWxpZGF0b3IgCi0gKiBjb21wb25lbnQgc3VjaCBhcyBhIFdTREwgMS4xIHZhbGlkYXRvciwgV1NETCAxLjIgdmFsaWRhdG9yIG9yIFdTLUkgQmFzaWMgUHJvZmlsZSB2YWxpZGF0b3IuCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVdTRExWYWxpZGF0b3IKLXsKLSAgLyoqCi0gICAqIFZhbGlkYXRlIHRoZSBmaWxlIHdpdGggdGhlIGdpdmVuIG5hbWUuCi0gICAqIAotICAgKiBAcGFyYW0gZG9tTW9kZWwgQSBET00gbW9kZWwgb2YgdGhlIGZpbGUgdG8gYmUgdmFsaWRhdGVkLgotICAgKiBAcGFyYW0gdmFsSW5mbyBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSB2YWxpZGF0aW9uIHRoYXQgaXMgYmVpbmcgcGVyZm9ybWVkLgotICAgKiBAdGhyb3dzIFZhbGlkYXRlV1NETEV4Y2VwdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGUoRG9jdW1lbnQgZG9tTW9kZWwsIElWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKSB0aHJvd3MgVmFsaWRhdGVXU0RMRXhjZXB0aW9uOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL1ZhbGlkYXRpb25Db250cm9sbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvVmFsaWRhdGlvbkNvbnRyb2xsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEwZGZmMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvVmFsaWRhdGlvbkNvbnRyb2xsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbDsKLQotaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLmltcGwuWE1MRXJyb3JSZXBvcnRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5wYXJzZXJzLkRPTVBhcnNlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5wYXJzZXJzLlN0YW5kYXJkUGFyc2VyQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE5JRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5YTUxHcmFtbWFyUG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmV4Y2VwdGlvbi5WYWxpZGF0ZVdTRExFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLklMb2dnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLkxvZ2dlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlci5VUklSZXNvbHZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnV0aWwuTWVzc2FnZUdlbmVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5BYnN0cmFjdFhNTENvbmZvcm1hbmNlRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5EZWZhdWx0WE1MVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sLklYTUxWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWwuTGluZU51bWJlckRPTVBhcnNlcjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOwotCi0vKioKLSAqIFRoaXMgaXMgdGhlIG1haW4gZW50cnlwb2ludCB0byB0aGUgV1NETCBWYWxpZGF0b3IuIFRoZSBjb250cm9sbGVyIGlzCi0gKiByZXNwb25zaWJsZSBmb3IgY2FsbGluZyB0aGUgcmVhZGVyLCB0aGUgWE1MIGNvbmZvcm1hbmNlIGNoZWNrLCB0aGUgV1NETAotICogdmFsaWRhdGlvbiBhbmQgdGhlIFdTLUkgdmFsaWRhdGlvbiBpZiBzZWxlY3RlZC4gVGhlIGNvbnRyb2xsZXIgY29udGFpbnMgYW55Ci0gKiBlcnJvcnMgYW5kIHdhcm5pbmdzIGdlbmVyYXRlZCBhcyB3ZWxsLgotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGlvbkNvbnRyb2xsZXIKLXsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBfRVJST1JfUFJPQkxFTV9XU0RMX1ZBTElEQVRPUiA9ICJfRVJST1JfUFJPQkxFTV9XU0RMX1ZBTElEQVRPUiI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgX0VSUk9SX05PX1dTRExfVkFMSURBVE9SID0gIl9FUlJPUl9OT19XU0RMX1ZBTElEQVRPUiI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgX0VSUk9SX1BST0JMRU1fRVhUX1ZBTElEQVRPUiA9ICJfRVJST1JfUFJPQkxFTV9FWFRfVkFMSURBVE9SIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBfRVJST1JfRE9DVU1FTlRfTE9DQVRJT04gPSAiX0VSUk9SX0RPQ1VNRU5UX0xPQ0FUSU9OIjsKLQotICBwcm90ZWN0ZWQgVmFsaWRhdG9yUmVnaXN0cnkgdmVyOwotICBwcm90ZWN0ZWQgUmVzb3VyY2VCdW5kbGUgcmVzb3VyY2VidW5kbGU7Ci0gIHByb3RlY3RlZCBNZXNzYWdlR2VuZXJhdG9yIG1lc3NhZ2VnZW5lcmF0b3I7Ci0gIHByb3RlY3RlZCBVUklSZXNvbHZlciB1cmlSZXNvbHZlcjsKLQotICAvL3Byb3RlY3RlZCBTdHJpbmcgd3NkbE5hbWVzcGFjZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBSZXNvdXJjZUJ1bmRsZSBuZWVkcyB0byBiZSBzZXQgc28gaXQgY2FuIGJlIHBhc3NlZCB0byB0aGUgcmVhZGVyLgotICAgKiAKLSAgICogQHBhcmFtIHJiCi0gICAqICAgICAgICAgICAgVGhlIHJlc291cmNlIGJ1bmRsZSBmb3IgdGhpcyB2YWxpZGF0b3IuCi0gICAqLwotICBwdWJsaWMgVmFsaWRhdGlvbkNvbnRyb2xsZXIoUmVzb3VyY2VCdW5kbGUgcmIsIFVSSVJlc29sdmVyIHVyaVJlc29sdmVyKQotICB7Ci0gICAgcmVzb3VyY2VidW5kbGUgPSByYjsKLSAgICBtZXNzYWdlZ2VuZXJhdG9yID0gbmV3IE1lc3NhZ2VHZW5lcmF0b3IocmVzb3VyY2VidW5kbGUpOwotICAgIHRoaXMudXJpUmVzb2x2ZXIgPSB1cmlSZXNvbHZlcjsKLQotICAgIHZlciA9IFZhbGlkYXRvclJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBWYWxpZGF0ZSB0aGUgV1NETCBmaWxlIHdpdGggdGhlIHN0cmVhbS4gVGhpcyBtZXRob2Qgd2lsbCBydW4gdGhlIGNoZWNrIG9mIHRoZSAKLSAgICogV1NETCBkb2N1bWVudC4gVGhlIHZhbGlkYXRpb24gaXMgYnJva2VuIHVwIGludG8gdGhyZWUgc3RhZ2VzOiBYTUwgY29uZm9ybWFuY2UsCi0gICAqIFdTREwgc2VtYW50aWMsIGFuZCBwb3N0IHZhbGlkYXRpb24uCi0gICAqIAotICogQHBhcmFtIHVyaSAKLSAqIAkJCVRoZSBVUkkgb2YgdGhlIFdTREwgZG9jdW1lbnQgdG8gYmUgdmFsaWRhdGVkLgotICogQHBhcmFtIGlucHV0U3RyZWFtIAotICogCQkJVGhlIGNvbnRlbnRzIG9mIHRoZSBXU0RMIGRvY3VtZW50IHRvIGJlIHZhbGlkYXRlZC4KLSAqIEBwYXJhbSBjb25maWd1cmF0aW9uCi0gKiAJCQlUaGUgV1NETCB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gdG8gYmUgdXNlZCB3aGlsZSB2YWxpZGF0aW5nIHRoaXMgVVJJLgotICogQHJldHVybiBBIHZhbGlkYXRpb24gcmVwb3J0IHdpdGggdGhlIHZhbGlkYXRpb24gaW5mbyBmb3IgdGhlIGZpbGUuCi0gKi8KLSAgcHVibGljIElWYWxpZGF0aW9uUmVwb3J0IHZhbGlkYXRlKFN0cmluZyB1cmksIElucHV0U3RyZWFtIGlucHV0U3RyZWFtLCBXU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKLSAgewotICAgIAotICAgIElucHV0U3RyZWFtIHhtbFZhbGlkYXRlU3RyZWFtID0gbnVsbDsKLSAgICBJbnB1dFN0cmVhbSB3c2RsVmFsaWRhdGVTdHJlYW0gPSBudWxsOwotICAgIGlmIChpbnB1dFN0cmVhbSAhPSBudWxsKQotICAgIHsgLy9jb3B5IHRoZSBpbnB1dFN0cmVhbSBzbyB3ZSBjYW4gdXNlIGl0IG1vcmUgdGhhbiBvbmNlCi0gICAgICBTdHJpbmcgY29udGVudHMgPSBjcmVhdGVTdHJpbmdGb3JJbnB1dFN0cmVhbShpbnB1dFN0cmVhbSk7Ci0gICAgICB4bWxWYWxpZGF0ZVN0cmVhbSA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShjb250ZW50cy5nZXRCeXRlcygpKTsKLSAgICAgIHdzZGxWYWxpZGF0ZVN0cmVhbSA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShjb250ZW50cy5nZXRCeXRlcygpKTsKLSAgICB9Ci0gICAgCi0gICAgQ29udHJvbGxlclZhbGlkYXRpb25JbmZvIHZhbEluZm8gPSBuZXcgVmFsaWRhdGlvbkluZm9JbXBsKHVyaSwgbWVzc2FnZWdlbmVyYXRvcik7Ci0gICAgKChWYWxpZGF0aW9uSW5mb0ltcGwpdmFsSW5mbykuc2V0VVJJUmVzb2x2ZXIodXJpUmVzb2x2ZXIpOwotICAgICgoVmFsaWRhdGlvbkluZm9JbXBsKXZhbEluZm8pLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7Ci0KLSAgICBpZiAodmFsaWRhdGVYTUwodmFsSW5mbywgeG1sVmFsaWRhdGVTdHJlYW0pKQotICAgIHsKLSAgICAgIERvY3VtZW50IHdzZGxkb2MgPSBnZXREb2N1bWVudCh1cmksIHdzZGxWYWxpZGF0ZVN0cmVhbSwgdmFsSW5mbyk7Ci0KLSAgICAgIGlmKCF2YWxJbmZvLmhhc0Vycm9ycygpKQotICAgICAgewotICAgICAgICBTdHJpbmcgd3NkbG5zID0gZ2V0V1NETE5hbWVzcGFjZSh3c2RsZG9jKTsKLSAgICAgICAgaWYod3NkbG5zICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAodmFsaWRhdGVXU0RMKHdzZGxkb2MsIHZhbEluZm8sIHdzZGxucykpCi0gICAgICAgICAgewotICAgICAgICAgICAgdmFsaWRhdGVFeHRlbnNpb25WYWxpZGF0b3JzKHdzZGxkb2MsIHZhbEluZm8sIHdzZGxucyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB2YWxJbmZvOwotICB9Ci0KLSAgLyoqCi0gICAqIFZhbGlkYXRlIHRoZSBmaWxlIGZvciBYTUwgY29uZm9ybWFuY2UuCi0JICogQHBhcmFtIHZhbEluZm8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhbGlkYXRpb24KLSAgICogQHBhcmFtIGlucHV0U3RyZWFtIHRoZSBpbnB1dFN0cmVhbSB0byB2YWxpZGF0ZQotICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIGZpbGUgaXMgY29uZm9ybWFudCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gdmFsaWRhdGVYTUwoQ29udHJvbGxlclZhbGlkYXRpb25JbmZvIHZhbEluZm8sIElucHV0U3RyZWFtIGlucHV0U3RyZWFtKQotICB7Ci0gICAgSVhNTFZhbGlkYXRvciB4bWxWYWxpZGF0b3IgPSBBYnN0cmFjdFhNTENvbmZvcm1hbmNlRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldFhNTFZhbGlkYXRvcigpOwotICAgIHhtbFZhbGlkYXRvci5zZXRVUklSZXNvbHZlcih1cmlSZXNvbHZlcik7Ci0gICAgeG1sVmFsaWRhdG9yLnNldEZpbGUodmFsSW5mby5nZXRGaWxlVVJJKCkpOwotICAgIGlmICh4bWxWYWxpZGF0b3IgaW5zdGFuY2VvZiBEZWZhdWx0WE1MVmFsaWRhdG9yKQotICAgIHsKLSAgICAgICAgKChEZWZhdWx0WE1MVmFsaWRhdG9yKXhtbFZhbGlkYXRvcikuc2V0SW5wdXRTdHJlYW0oaW5wdXRTdHJlYW0pOwotICAgICAgICBYTUxHcmFtbWFyUG9vbCBncmFtbWFyUG9vbCA9IChYTUxHcmFtbWFyUG9vbCl2YWxJbmZvLmdldEF0dHJpYnV0ZShDb25zdGFudHMuWE1MX0NBQ0hFX0FUVFJJQlVURSk7Ci0gICAgICAgIGlmKGdyYW1tYXJQb29sICE9IG51bGwpCi0gICAgICAgICAgKChEZWZhdWx0WE1MVmFsaWRhdG9yKXhtbFZhbGlkYXRvcikuc2V0R3JhbW1hclBvb2woZ3JhbW1hclBvb2wpOwotICAgIH0KLSAgICAvL3htbFZhbGlkYXRvci5zZXRWYWxpZGF0aW9uSW5mbyh2YWxJbmZvKTsKLSAgICB4bWxWYWxpZGF0b3IucnVuKCk7Ci0gICAgLy8gaWYgdGhlcmUgYXJlIG5vIHhtbCBjb25mb3JtYW5jZSBwcm9ibGVtcyBnbyBvbiB0byBjaGVjayB0aGUgd3NkbCBzdHVmZgotICAgIGlmICh4bWxWYWxpZGF0b3IuaGFzRXJyb3JzKCkpCi0gICAgewotICAgICAgLy8gdGVtcCBoYW5kbGluZyBvZiBYTUwgZXJyb3JzIHVudGlsIHZhbGlkYXRvciBpcyB1cGRhdGVkLgotICAgICAgTGlzdCBlcnJvcnMgPSB4bWxWYWxpZGF0b3IuZ2V0RXJyb3JzKCk7Ci0gICAgICBJdGVyYXRvciBlcnJvcnNJdGVyID0gZXJyb3JzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoZXJyb3JzSXRlci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIElWYWxpZGF0aW9uTWVzc2FnZSB2YWxNZXMgPSAoSVZhbGlkYXRpb25NZXNzYWdlKWVycm9yc0l0ZXIubmV4dCgpOwotICAgICAgICAKLSAgICAgICAgaWYgKHZhbE1lcyBpbnN0YW5jZW9mIFZhbGlkYXRpb25NZXNzYWdlSW1wbCAmJiB2YWxJbmZvIGluc3RhbmNlb2YgVmFsaWRhdGlvbkluZm9JbXBsKQotICAgICAgICB7ICAgU3RyaW5nIGVycm9yS2V5ID0gKChWYWxpZGF0aW9uTWVzc2FnZUltcGwpdmFsTWVzKS5nZXRFcnJvcktleSgpOwotICAgICAgICAgICAgT2JqZWN0W10gbWVzc2FnZUFyZ3MgPSAoKFZhbGlkYXRpb25NZXNzYWdlSW1wbCl2YWxNZXMpLmdldE1lc3NhZ2VBcmd1bWVudHMoKTsKLSAgICAgICAgICAgICgoVmFsaWRhdGlvbkluZm9JbXBsKXZhbEluZm8pLmFkZEVycm9yKHZhbE1lcy5nZXRNZXNzYWdlKCksIHZhbE1lcy5nZXRMaW5lKCksIHZhbE1lcy5nZXRDb2x1bW4oKSwgdmFsTWVzLmdldFVSSSgpLCBlcnJvcktleSwgbWVzc2FnZUFyZ3MpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgdmFsSW5mby5hZGRFcnJvcih2YWxNZXMuZ2V0TWVzc2FnZSgpLCB2YWxNZXMuZ2V0TGluZSgpLCB2YWxNZXMuZ2V0Q29sdW1uKCksIHZhbE1lcy5nZXRVUkkoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy93c2RsTmFtZXNwYWNlID0geG1sVmFsaWRhdG9yLmdldFdTRExOYW1lc3BhY2UoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFZhbGlkYXRlIHRoZSBmaWxlIGZvciBYTUwgY29uZm9ybWFuY2UuCi0JICogQHBhcmFtIHZhbEluZm8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhbGlkYXRpb24KLSAgICogQHJldHVybiBUcnVlIGlmIHRoZSBmaWxlIGlzIGNvbmZvcm1hbnQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIHZhbGlkYXRlWE1MKENvbnRyb2xsZXJWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKQotICB7IHJldHVybiB2YWxpZGF0ZVhNTCh2YWxJbmZvLCBudWxsKTsKLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZSB0aGUgV1NETCBmaWxlLiBTZXQgdGhlIGVycm9ycyBhbmQgd2FybmluZyBhcHByb3ByaWF0ZWx5LgotICAgKiAKLSAgICogQHBhcmFtIHdzZGxkb2MgQSBXM0MgZG9jdW1lbnQgcmVwcmVzZW50YXRpb24gb2YgdGhlIFdTREwgZG9jdW1lbnQuCi0gICAqIEBwYXJhbSB2YWxJbmZvIFRoZSBjdXJyZW50IHZhbGlkYXRpb24gaW5mb3JtYXRpb24uCi0gICAqIEBwYXJhbSB3c2RsTmFtZXNwYWNlIFRoZSBXU0RMIG5hbWVzcGFjZSB0byB2YWxpZGF0ZS4KLSAgICogQHJldHVybiBUcnVlIGlmIHRoZSBmaWxlIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiB2YWxpZGF0ZVdTREwoRG9jdW1lbnQgd3NkbGRvYywgQ29udHJvbGxlclZhbGlkYXRpb25JbmZvIHZhbEluZm8sIFN0cmluZyB3c2RsTmFtZXNwYWNlKQotICB7Ci0gICAgV1NETFZhbGlkYXRvckRlbGVnYXRlW10gd3NkbFZhbHMgPSB2ZXIucXVlcnlWYWxpZGF0b3JSZWdpc3RyeSh3c2RsTmFtZXNwYWNlLCBWYWxpZGF0b3JSZWdpc3RyeS5XU0RMX1ZBTElEQVRPUik7Ci0gICAgaWYgKHdzZGxWYWxzICE9IG51bGwpCi0gICAgewotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3c2RsVmFscy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgV1NETFZhbGlkYXRvckRlbGVnYXRlIHdzZGx2YWxkZWwgPSB3c2RsVmFsc1tpXTsKLSAgICAgICAgSVdTRExWYWxpZGF0b3Igd3NkbFZhbCA9IHdzZGx2YWxkZWwuZ2V0VmFsaWRhdG9yKCk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIHdzZGwgdmFsaWRhdG9yIGlzbid0IG51bGwsIHZhbGlkYXRlLgotICAgICAgICBpZiAod3NkbFZhbCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgd3NkbFZhbC52YWxpZGF0ZSh3c2RsZG9jLCB2YWxJbmZvKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKFZhbGlkYXRlV1NETEV4Y2VwdGlvbiBlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX1BST0JMRU1fV1NETF9WQUxJREFUT1IsIHdzZGxOYW1lc3BhY2UpLCAxLCAxLCB2YWxJbmZvLmdldEZpbGVVUkkoKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vIElmIHRoZSB2YWxpZGF0b3IgaXMgbnVsbCBhbmQgdGhlIG5hbWVzcGFjZSBpc24ndCBjcmVhdGUgYW4gZXJyb3IuCi0gICAgICAgIC8vIElmIHRoZSBuYW1lc3BhY2UgaXMgbnVsbCB0aGUgZmlsZSBpcyBlbXB0eSAoYW5kIHRoZSBYTUwgdmFsaWRhdG9yCi0gICAgICAgIC8vIGhhcyBsZXQgaXQgZ28pCi0gICAgICAgIC8vIHNvIGl0IGlzIHZhbGlkIGJ1dCBkb2VzIG5vdCBuZWVkIHRvIGJlIHZhbGlkYXRlZC4KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9OT19XU0RMX1ZBTElEQVRPUiwgd3NkbE5hbWVzcGFjZSksCi0gICAgICAgICAgICAxLAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIHZhbEluZm8uZ2V0RmlsZVVSSSgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAvLyBObyB2YWxpZGF0b3JzIHJlZ2lzdGVyZWQuCi0gICAgZWxzZQotICAgIHsKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX05PX1dTRExfVkFMSURBVE9SLCB3c2RsTmFtZXNwYWNlKSwgMSwgMSwgdmFsSW5mby5nZXRGaWxlVVJJKCkpOwotICAgIH0KLSAgICB2YWxJbmZvLmNvbXBsZXRlV1NETFZhbGlkYXRpb24oKTsKLQotICAgIHJldHVybiB2YWxJbmZvLmlzV1NETFZhbGlkKCk7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGUgdGhlIFdTREwgZmlsZSB3aXRoIHRoZSBleHRlbnNpb24gdmFsaWRhdG9yLiBTZXQgdGhlIGVycm9ycyBhbmQgd2FybmluZyBhcHByb3ByaWF0ZWx5LgotICAgKiAKLSAgICogQHBhcmFtIHdzZGxkb2MgQSBXM0MgZG9jdW1lbnQgcmVwcmVzZW50YXRpb24gb2YgdGhlIFdTREwgZG9jdW1lbnQuCi0gICAqIEBwYXJhbSB2YWxJbmZvIFRoZSBjdXJyZW50IHZhbGlkYXRpb24gaW5mb3JtYXRpb24uCi0gICAqIEBwYXJhbSB3c2RsTmFtZXNwYWNlIFRoZSBXU0RMIG5hbWVzcGFjZSB0byB2YWxpZGF0ZS4KLSAgICogQHJldHVybiBUcnVlIGlmIHRoZSBmaWxlIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2YWxpZGF0ZUV4dGVuc2lvblZhbGlkYXRvcnMoRG9jdW1lbnQgd3NkbGRvYywgQ29udHJvbGxlclZhbGlkYXRpb25JbmZvIHZhbEluZm8sIFN0cmluZyB3c2RsTmFtZXNwYWNlKQotICB7Ci0gICAgV1NETFZhbGlkYXRvckRlbGVnYXRlW10gZXh0VmFscyA9IHZlci5xdWVyeVZhbGlkYXRvclJlZ2lzdHJ5KHdzZGxOYW1lc3BhY2UsIFZhbGlkYXRvclJlZ2lzdHJ5LkVYVF9WQUxJREFUT1IpOwotICAgIGlmKGV4dFZhbHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpbnQgbnVtdmFscyA9IGV4dFZhbHMubGVuZ3RoOwotICAgICAgZm9yKGludCBpID0gMDsgaSA8IG51bXZhbHM7IGkrKykKLSAgICAgIHsKLSAgICAgICAgV1NETFZhbGlkYXRvckRlbGVnYXRlIGV4dHZhbGRlbCA9IGV4dFZhbHNbaV07Ci0gICAgICAgIElXU0RMVmFsaWRhdG9yIGV4dHZhbCA9IGV4dHZhbGRlbC5nZXRWYWxpZGF0b3IoKTsKLSAgICAgICAgaWYoZXh0dmFsICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgZXh0dmFsLnZhbGlkYXRlKHdzZGxkb2MsIHZhbEluZm8pOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaChUaHJvd2FibGUgIHQpCi0gICAgICAgICAgewotICAgICAgICAgICAgdmFsSW5mby5hZGRXYXJuaW5nKG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9QUk9CTEVNX0VYVF9WQUxJREFUT1IsICBleHR2YWxkZWwuZ2V0VmFsaWRhdG9yTmFtZSgpLCB3c2RsTmFtZXNwYWNlKSwgMSwgMSwgdmFsSW5mby5nZXRGaWxlVVJJKCkpOwotICAgICAgICAgICAgTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldExvZ2dlcigpLmxvZyhtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfUFJPQkxFTV9FWFRfVkFMSURBVE9SLCAgZXh0dmFsZGVsLmdldFZhbGlkYXRvck5hbWUoKSwgd3NkbE5hbWVzcGFjZSksIElMb2dnZXIuU0VWX0VSUk9SLCB0KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogU2V0IHRoZSBSZXNvdXJjZUJ1bmRsZSBmb3IgdGhpcyBWYWxpZGF0b3JNYW5hZ2VyLgotICAgKiAKLSAgICogQHBhcmFtIHJiCi0gICAqICAgICAgICAgICAgVGhlIHJlc291cmNlIGJ1bmRsZSB0byBzZXQuCi0gICAqIEBzZWUgI2dldFJlc291cmNlQnVuZGxlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZUJ1bmRsZShSZXNvdXJjZUJ1bmRsZSByYikKLSAgewotICAgIHJlc291cmNlYnVuZGxlID0gcmI7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBSZXNvdXJjZUJ1bmRsZSBmb3IgdGhpcyBWYWxpZGF0aW9uQ29udHJvbGxlci4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIHJlc291cmNlIGJ1bmRsZSBzZXQgZm9yIHRoaXMgVmFsaWRhdGlvbkNvbnRyb2xsZXIuCi0gICAqIEBzZWUgI3NldFJlc291cmNlQnVuZGxlCi0gICAqLwotICBwdWJsaWMgUmVzb3VyY2VCdW5kbGUgZ2V0UmVzb3VyY2VCdW5kbGUoKQotICB7Ci0gICAgcmV0dXJuIHJlc291cmNlYnVuZGxlOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IGEgRE9NIGRvY3VtZW50IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBXU0RMIGRvY3VtZW50LgotICAgKiAKLSAgICogQHBhcmFtIHVyaSAKLSAgICogCQlUaGUgdXJpIG9mIHRoZSBmaWxlIHRvIHJlYWQKLSAgICogQHBhcmFtIGlucHV0U3RyZWFtCi0gICAqIAkJQW4gb3B0aW9uYWwgSW5wdXRTdHJlYW0gdG8gcmVhZCB0aGUgZG9jdW1lbnQgZnJvbS4KLSAgICogQHBhcmFtIHZhbGluZm8KLSAgICogCQlBIHZhbGlkYXRpb24gaW5mbyBvYmplY3QgdXNlZCBmb3IgcmVwb3J0aW5nIG1lc3NhZ2VzLgotICAgKiBAcmV0dXJuIFRoZSBET00gbW9kZWwgb2YgdGhlIFdTREwgZG9jdW1lbnQgb3IgbnVsbCBpZiB0aGUgZG9jdW1lbnQgY2FuJ3QgYmUgcmVhZC4KLSAgICovCi0gIHByaXZhdGUgRG9jdW1lbnQgZ2V0RG9jdW1lbnQoU3RyaW5nIHVyaSwgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0sIENvbnRyb2xsZXJWYWxpZGF0aW9uSW5mbyB2YWxpbmZvKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gQ2F0Y2ggYSBwcmVtYXR1cmUgRU9GIGVycm9yIHRvIGFsbG93IGVtcHR5IFdTREwgZmlsZXMgdG8gYmUgY29uc2lkZXJlZCB2YWxpZC4KLSAgICAgIFN0YW5kYXJkUGFyc2VyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gbmV3IFN0YW5kYXJkUGFyc2VyQ29uZmlndXJhdGlvbigpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCBYTUxFcnJvclJlcG9ydGVyIGNyZWF0ZUVycm9yUmVwb3J0ZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIG5ldyBYTUxFcnJvclJlcG9ydGVyKCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwdWJsaWMgdm9pZCByZXBvcnRFcnJvcihTdHJpbmcgZG9tYWluLCBTdHJpbmcga2V5LCBPYmplY3RbXSBhcmd1bWVudHMsIHNob3J0IHNldmVyaXR5KSB0aHJvd3MgWE5JRXhjZXB0aW9uCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGJvb2xlYW4gcmVwb3J0RXJyb3IgPSB0cnVlOwotICAgICAgICAgICAgICBpZiAoa2V5LmVxdWFscygiUHJlbWF0dXJlRU9GIikpCi0gICAgICAgICAgICAgIHsgICAgICAgICAKLSAgICAgICAgICAgICAgICByZXBvcnRFcnJvciA9IGZhbHNlOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgaWYgKHJlcG9ydEVycm9yKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3VwZXIucmVwb3J0RXJyb3IoZG9tYWluLCBrZXksIGFyZ3VtZW50cywgc2V2ZXJpdHkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgfTsKLSAgICAgIAotICAgICAgSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UgPSBudWxsOwotICAgICAgaWYgKGlucHV0U3RyZWFtICE9IG51bGwpCi0gICAgICB7IC8vdGhlbiB3ZSB3YW50IHRvIGNyZWF0ZSBhIERPTSBmcm9tIHRoZSBpbnB1dHN0cmVhbQotICAgICAgICBpbnB1dFNvdXJjZSA9IG5ldyBJbnB1dFNvdXJjZShpbnB1dFN0cmVhbSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7IGlucHV0U291cmNlID0gbmV3IElucHV0U291cmNlKHVyaSk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIERPTVBhcnNlciBidWlsZGVyID0gbmV3IExpbmVOdW1iZXJET01QYXJzZXIoY29uZmlndXJhdGlvbik7Ci0gICAgICBidWlsZGVyLnBhcnNlKGlucHV0U291cmNlKTsKLSAgICAgIERvY3VtZW50IGRvYyA9IGJ1aWxkZXIuZ2V0RG9jdW1lbnQoKTsKLQotICAgICAgcmV0dXJuIGRvYzsKLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgIHsKLSAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgdmFsaWRhdG9yIHdpbGwgZmFpbCB3aXRoIGFuIHVuZXhwbGFpbmVkIGVycm9yIG1lc3NhZ2UKLSAgICAgIC8vIGFib3V0IGEgbnVsbCBXU0RMIG5hbWVzcGFjZS4gVGhpcyBlcnJvciBzaG91bGQgYmUgYWRkcmVzc2VkIGFzIHdlbGwuCi0gICAgIHZhbGluZm8uYWRkRXJyb3IobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX0RPQ1VNRU5UX0xPQ0FUSU9OLCB1cmkpLCAwLCAwLCB1cmkpOwotICAgICAgCi0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0gIAotICBwcml2YXRlIFN0cmluZyBnZXRXU0RMTmFtZXNwYWNlKERvY3VtZW50IGRvYykKLSAgewotICAgIFN0cmluZyB3c2RsbnMgPSBudWxsOwotICAgIGlmKGRvYyAhPSBudWxsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgcm9vdGRvYyA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIGlmKHJvb3Rkb2MgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgd3NkbG5zID0gcm9vdGRvYy5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHdzZGxuczsKLSAgfQotICAKLSAgCi0gIAotICBwcml2YXRlIGZpbmFsIFN0cmluZyBjcmVhdGVTdHJpbmdGb3JJbnB1dFN0cmVhbShJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSkKLSAgewotICAgIC8vIEhlcmUgd2UgYXJlIHJlYWRpbmcgdGhlIGZpbGUgYW5kIHN0b3JpbmcgdG8gYSBzdHJpbmdidWZmZXIuCi0gICAgU3RyaW5nQnVmZmVyIGZpbGVTdHJpbmcgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgSW5wdXRTdHJlYW1SZWFkZXIgaW5wdXRSZWFkZXIgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoaW5wdXRTdHJlYW0pOwotICAgICAgQnVmZmVyZWRSZWFkZXIgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKGlucHV0UmVhZGVyKTsKLSAgICAgIGNoYXJbXSBjaGFycyA9IG5ldyBjaGFyWzEwMjRdOwotICAgICAgaW50IG51bWJlclJlYWQgPSByZWFkZXIucmVhZChjaGFycyk7Ci0gICAgICB3aGlsZSAobnVtYmVyUmVhZCAhPSAtMSkKLSAgICAgIHsKLSAgICAgICAgZmlsZVN0cmluZy5hcHBlbmQoY2hhcnMsIDAsIG51bWJlclJlYWQpOwotICAgICAgICBudW1iZXJSZWFkID0gcmVhZGVyLnJlYWQoY2hhcnMpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy9UT0RPOiBsb2cgZXJyb3IgbWVzc2FnZQotICAgICAgLy9lLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgICByZXR1cm4gZmlsZVN0cmluZy50b1N0cmluZygpOwotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL1ZhbGlkYXRpb25JbmZvSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL1ZhbGlkYXRpb25JbmZvSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWNkMjc1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9WYWxpZGF0aW9uSW5mb0ltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbDsKLQotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuVVJJUmVzb2x2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51dGlsLk1lc3NhZ2VHZW5lcmF0b3I7Ci0KLS8qKgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHZhbGlkYXRpb24gaW5mbyBpbnRlcmZhY2UuCi0gKi8KLXB1YmxpYyBjbGFzcyBWYWxpZGF0aW9uSW5mb0ltcGwgaW1wbGVtZW50cyBJVmFsaWRhdGlvblJlcG9ydCwgQ29udHJvbGxlclZhbGlkYXRpb25JbmZvCi17Ci0gIHByaXZhdGUgYm9vbGVhbiBXUkFQUEVSX0VSUk9SX1NVUFBPUlRfRU5BQkxFRCA9IHRydWU7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9XQVJOX05PX1ZBTERJQVRPUiA9ICJfV0FSTl9OT19WQUxESUFUT1IiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfUkVGX0ZJTEVfRVJST1JfTUVTU0FHRSA9ICJfUkVGX0ZJTEVfRVJST1JfTUVTU0FHRSI7Ci0gIHByaXZhdGUgU3RyaW5nIHZhbGlkYXRpbmdfZmlsZV91cmkgPSBudWxsOwotICBwcml2YXRlIFVSTCB2YWxpZGF0aW5nX2ZpbGVfdXJsID0gbnVsbDsKLSAgcHJpdmF0ZSBib29sZWFuIHdzZGxWYWxpZCA9IGZhbHNlOwotICBwcml2YXRlIExpc3QgbWVzc2FnZXMgPSBuZXcgVmVjdG9yKCk7Ci0gIC8vcHJpdmF0ZSBMaXN0IHNjaGVtYXMgPSBuZXcgVmVjdG9yKCk7Ci0gIHByaXZhdGUgTGlzdCBuc05vVmFscyA9IG5ldyBWZWN0b3IoKTsKLSAgcHJpdmF0ZSBNZXNzYWdlR2VuZXJhdG9yIG1lc3NhZ2VnZW5lcmF0b3IgPSBudWxsOwotICBwcml2YXRlIGJvb2xlYW4gaGFzZXJyb3JzID0gZmFsc2U7Ci0gIHByaXZhdGUgSGFzaE1hcCBuZXN0ZWRNZXNzYWdlcyA9IG5ldyBIYXNoTWFwKCk7Ci0gIHByaXZhdGUgVVJJUmVzb2x2ZXIgdXJpUmVzb2x2ZXIgPSBudWxsOwotICBwcml2YXRlIFdTRExWYWxpZGF0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogCi0gICAqIEBwYXJhbSB1cmkKLSAgICogICAgICAgICAgICBUaGUgVVJJIG9mIHRoZSBmaWxlIGZvciB0aGUgdmFsaWRhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0aW9uSW5mb0ltcGwoU3RyaW5nIHVyaSwgTWVzc2FnZUdlbmVyYXRvciBtZXNzYWdlZ2VuZXJhdG9yKQotICB7Ci0gICAgdGhpcy52YWxpZGF0aW5nX2ZpbGVfdXJpID0gdXJpOwotICAgIGlmKHVyaSAhPSBudWxsKQotICAgIHsKLSAgICAgIHVyaSA9IHVyaS5yZXBsYWNlQWxsKCIlMjAiLCIgIik7Ci0gICAgICB0aGlzLnZhbGlkYXRpbmdfZmlsZV91cmkgPSB1cmk7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgdGhpcy52YWxpZGF0aW5nX2ZpbGVfdXJsID0gbmV3IFVSTCh1cmkpOwotICAgICAgfSBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfQotICAgIHRoaXMubWVzc2FnZWdlbmVyYXRvciA9IG1lc3NhZ2VnZW5lcmF0b3I7Ci0gIH0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvblJlcG9ydCNnZXRGaWxlVVJJKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RmlsZVVSSSgpCi0gIHsKLSAgICByZXR1cm4gdmFsaWRhdGluZ19maWxlX3VyaTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25SZXBvcnQjaXNXU0RMVmFsaWQoKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNXU0RMVmFsaWQoKQotICB7Ci0gICAgcmV0dXJuIHdzZGxWYWxpZDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25JbmZvI2FkZEVycm9yKGphdmEubGFuZy5TdHJpbmcsCi0gICAqICAgICAgaW50LCBpbnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRFcnJvcihTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4pCi0gIHsKLSAgICBhZGRFcnJvcihtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHZhbGlkYXRpbmdfZmlsZV91cmkpOwotICB9Ci0gIAotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uSW5mbyNhZGRFcnJvcihqYXZhLmxhbmcuU3RyaW5nLAotICAgKiAgICAgIGludCwgaW50KQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkRXJyb3IoU3RyaW5nIG1lc3NhZ2UsIGludCBsaW5lLCBpbnQgY29sdW1uLCBTdHJpbmcgdXJpKQotICB7Ci0gICAgaWYoYWRkTWVzc2FnZShtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHVyaSwgVmFsaWRhdGlvbk1lc3NhZ2VJbXBsLlNFVl9FUlJPUikpCi0gICAgewotICAgICAgaGFzZXJyb3JzID0gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRFcnJvcihTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4sIFN0cmluZyB1cmksIFN0cmluZyBlcnJvcktleSwgT2JqZWN0W10gbWVzc2FnZUFyZ3VtZW50cykKLSAgewotICAgIGlmKGFkZE1lc3NhZ2UobWVzc2FnZSwgbGluZSwgY29sdW1uLCB1cmksIFZhbGlkYXRpb25NZXNzYWdlSW1wbC5TRVZfRVJST1IsIGVycm9yS2V5LCBtZXNzYWdlQXJndW1lbnRzKSkKLSAgICB7Ci0gICAgICBoYXNlcnJvcnMgPSB0cnVlOwotICAgIH0KLSAgfQotICAKLSAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25JbmZvI2FkZFdhcm5pbmcoamF2YS5sYW5nLlN0cmluZywKLSAgICogICAgICBpbnQsIGludCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFdhcm5pbmcoU3RyaW5nIG1lc3NhZ2UsIGludCBsaW5lLCBpbnQgY29sdW1uKQotICB7Ci0gICAgYWRkV2FybmluZyhtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHZhbGlkYXRpbmdfZmlsZV91cmkpOwotICB9Ci0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25JbmZvI2FkZFdhcm5pbmcoamF2YS5sYW5nLlN0cmluZywKLSAgICogICAgICBpbnQsIGludCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFdhcm5pbmcoU3RyaW5nIG1lc3NhZ2UsIGludCBsaW5lLCBpbnQgY29sdW1uLCBTdHJpbmcgdXJpKQotICB7Ci0gICAgYWRkTWVzc2FnZShtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHVyaSwgVmFsaWRhdGlvbk1lc3NhZ2VJbXBsLlNFVl9XQVJOSU5HKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEFkZCBhIG1lc3NhZ2UgdG8gdGhlIGxpc3QuIEEgbWVzc2FnZSBtYXkgbm90IGJlIGFkZGVkIHRvIHRoZSBsaXN0IGluIAotICAgKiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgc3VjaCBhcyB3aGVuIHRoZSBVUkkgaXMgaW52YWxpZCBvciB0aGUgbWVzc2FnZSAKLSAgICogaXMgbnVsbC4KLSAgICogCi0gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGFkZC4KLSAgICogQHBhcmFtIGxpbmUgVGhlIGxpbmUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBjb2x1bW4gVGhlIGNvbHVtbiBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZS4KLSAgICogQHBhcmFtIHVyaSBUaGUgVVJJIG9mIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBzZXZlcml0eSBUaGUgc2V2ZXJpdHkgb2YgdGhlIG1lc3NhZ2UuCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgbWVzc2FnZSB3YXMgYWJsZSB0byBiZSBhZGRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGFkZE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2UsIGludCBsaW5lLCBpbnQgY29sdW1uLCBTdHJpbmcgdXJpLCBpbnQgc2V2ZXJpdHkpCi0gIHsKLSAgICAgIHJldHVybiB0aGlzLmFkZE1lc3NhZ2UobWVzc2FnZSwgbGluZSwgY29sdW1uLCB1cmksIHNldmVyaXR5LCBudWxsLCBudWxsKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEFkZCBhIG1lc3NhZ2UgdG8gdGhlIGxpc3QuIEEgbWVzc2FnZSBtYXkgbm90IGJlIGFkZGVkIHRvIHRoZSBsaXN0IGluIAotICAgKiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgc3VjaCBhcyB3aGVuIHRoZSBVUkkgaXMgaW52YWxpZCBvciB0aGUgbWVzc2FnZSAKLSAgICogaXMgbnVsbC4KLSAgICogCi0gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGFkZC4KLSAgICogQHBhcmFtIGxpbmUgVGhlIGxpbmUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBjb2x1bW4gVGhlIGNvbHVtbiBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZS4KLSAgICogQHBhcmFtIHVyaSBUaGUgVVJJIG9mIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBzZXZlcml0eSBUaGUgc2V2ZXJpdHkgb2YgdGhlIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBlcnJvcktleSBUaGUgWGVyY2VzIEVycm9yIEtleQotICAgKiBAcGFyYW0gbWVzc2FnZUFyZ3VtZW50cyBUaGUgWGVyY2VzIGFyZ3VtZW50cyB1c2VkIHRvIGNyZWF0ZSB0aGUgZXJyb3IgbWVzc2FnZQotICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIG1lc3NhZ2Ugd2FzIGFibGUgdG8gYmUgYWRkZWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGRNZXNzYWdlKFN0cmluZyBtZXNzYWdlLCBpbnQgbGluZSwgaW50IGNvbHVtbiwgU3RyaW5nIHVyaSwgaW50IHNldmVyaXR5LCBTdHJpbmcgZXJyb3JLZXksIE9iamVjdFtdIG1lc3NhZ2VBcmd1bWVudHMpCi0gIHsKLSAgICBib29sZWFuIHN1Y2Nlc3NmdWxseUFkZGVkID0gZmFsc2U7Ci0gICAgLy8gSWYgdGhlIG1lc3NhZ2UgaXMgbnVsbCB0aGVyZSBpcyBub3RoaW5nIHRvIHJlcG9ydC4KLSAgICBpZihtZXNzYWdlID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseUFkZGVkOwotICAgIH0KLSAgICBTdHJpbmcgZXJyb3JVUkkgPSB1cmk7Ci0gICAgVVJMIGVycm9yVVJMID0gbnVsbDsKLSAgICBpZiAoZXJyb3JVUkkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgZXJyb3JVUkkgPSBlcnJvclVSSS5yZXBsYWNlQWxsKCIlMjAiLCAiICIpOwotICAgICAgICBlcnJvclVSTCA9IG5ldyBVUkwoZXJyb3JVUkkpOwotICAgICAgfSBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgICAvL2Vycm9yVVJJID0gbm9ybWFsaXplVVJJKGVycm9yVVJJKTsKLSAgICB9Ci0vLyAgICBlbHNlCi0vLyAgICB7Ci0vLyAgICAgIGVycm9yVVJJID0gdmFsaWRhdGluZ19maWxlX3VyaTsKLS8vICAgICAgZXJyb3JVUkwgPSB2YWxpZGF0aW5nX2ZpbGVfdXJsOwotLy8gICAgfQotICAgIC8vYm9vbGVhbiBkb0RpYWxvZyA9IHRydWU7Ci0gICAgaWYgKGVycm9yVVJMICE9IG51bGwpCi0gICAgewotICAgICAgc3VjY2Vzc2Z1bGx5QWRkZWQgPSB0cnVlOwotICAgICAgLy8gQWRkIHRvIHRoZSBhcHByb3ByaWF0ZSBsaXN0IGlmIG5lc3RlZCBlcnJvciBzdXBwb3J0IGlzIG9mZiBvcgotICAgICAgLy8gdGhpcyBtZXNzYWdlIGlzIGZvciB0aGUgY3VycmVudCBmaWxlLgotICAgICAgaWYgKCFXUkFQUEVSX0VSUk9SX1NVUFBPUlRfRU5BQkxFRCB8fCB2YWxpZGF0aW5nX2ZpbGVfdXJsLnNhbWVGaWxlKGVycm9yVVJMKSkKLSAgICAgIHsKLQotICAgICAgICBWYWxpZGF0aW9uTWVzc2FnZUltcGwgdmFsbWVzID0gbmV3IFZhbGlkYXRpb25NZXNzYWdlSW1wbChtZXNzYWdlLCBsaW5lLAotICAgICAgICAgICAgY29sdW1uLCBzZXZlcml0eSwgdXJpLCBlcnJvcktleSwgbWVzc2FnZUFyZ3VtZW50cyk7Ci0gICAgICAgIG1lc3NhZ2VzLmFkZCh2YWxtZXMpOwotICAgICAgfQotICAgICAgLy8gSWYgbmVzdGVkIGVycm9yIHN1cHBvcnQgaXMgZW5hYmxlZCBjcmVhdGUgYSBuZXN0ZWQgZXJyb3IuCi0gICAgICBlbHNlIGlmIChXUkFQUEVSX0VSUk9SX1NVUFBPUlRfRU5BQkxFRCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG5lc3RlZHVyaSA9IGVycm9yVVJMLnRvRXh0ZXJuYWxGb3JtKCk7Ci0gICAgICAgIFZhbGlkYXRpb25NZXNzYWdlSW1wbCBuZXN0ZWRtZXNzID0gbmV3IFZhbGlkYXRpb25NZXNzYWdlSW1wbChtZXNzYWdlLCBsaW5lLAotICAgICAgICAgICAgY29sdW1uLCBzZXZlcml0eSwgbmVzdGVkdXJpKTsKLQotICAgICAgICBWYWxpZGF0aW9uTWVzc2FnZUltcGwgY29udGFpbmVyID0gKFZhbGlkYXRpb25NZXNzYWdlSW1wbCkgbmVzdGVkTWVzc2FnZXMuZ2V0KG5lc3RlZHVyaSk7Ci0gICAgICAgIGlmKGNvbnRhaW5lciA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gSW5pdGlhbGx5IHNldCB0aGUgbmVzdGVkIGVycm9yIHRvIGEgd2FybmluZy4gVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY2hhbmdlZAotICAgICAgICAgIC8vIHRvIGFuIGVycm9yIGlmIGEgbmVzdGVkIG1lc3NhZ2UgaGFzIGEgc2V2ZXJpdHkgb2YgZXJyb3IuCi0gICAgICAgICAgY29udGFpbmVyID0gbmV3IFZhbGlkYXRpb25NZXNzYWdlSW1wbChtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfUkVGX0ZJTEVfRVJST1JfTUVTU0FHRSwgbmVzdGVkdXJpKSwgMSwgMCwgSVZhbGlkYXRpb25NZXNzYWdlLlNFVl9XQVJOSU5HLCBuZXN0ZWR1cmkpOwotICAgICAgICAgIG5lc3RlZE1lc3NhZ2VzLnB1dChuZXN0ZWR1cmksIGNvbnRhaW5lcik7Ci0gICAgICAgICAgbWVzc2FnZXMuYWRkKGNvbnRhaW5lcik7Ci0gICAgICAgIH0KLSAgICAgICAgY29udGFpbmVyLmFkZE5lc3RlZE1lc3NhZ2UobmVzdGVkbWVzcyk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHN1Y2Nlc3NmdWxseUFkZGVkOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvblJlcG9ydCNnZXRWYWxpZGF0aW9uTWVzc2FnZXMoKQotICAgKi8KLSAgcHVibGljIElWYWxpZGF0aW9uTWVzc2FnZVtdIGdldFZhbGlkYXRpb25NZXNzYWdlcygpCi0gIHsKLSAgICByZXR1cm4gKElWYWxpZGF0aW9uTWVzc2FnZVtdKW1lc3NhZ2VzLnRvQXJyYXkobmV3IElWYWxpZGF0aW9uTWVzc2FnZVttZXNzYWdlcy5zaXplKCldKTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25JbmZvI2FkZE5hbWVzcGFjZVdpdGhOb1ZhbGlkYXRvcihqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkTmFtZXNwYWNlV2l0aE5vVmFsaWRhdG9yKFN0cmluZyBuYW1lc3BhY2UpCi0gIHsKLSAgICAvLyBJZiB0aGUgbGlzdCBkb2Vzbid0IGFscmVhZHkgY29udGFpbiB0aGlzIG5hbWVzcGFjZSwgYWRkIGl0IHRvIHRoZSBsaXN0Ci0gICAgLy8gYW5kIGNyZWF0ZSBhIHdhcm5pbmcgbWVzc2FnZS4KLSAgICBpZiAoIW5zTm9WYWxzLmNvbnRhaW5zKG5hbWVzcGFjZSkpCi0gICAgewotICAgICAgbnNOb1ZhbHMuYWRkKG5hbWVzcGFjZSk7Ci0gICAgICBhZGRXYXJuaW5nKG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9XQVJOX05PX1ZBTERJQVRPUiwgbmFtZXNwYWNlKSwgMSwgMCk7Ci0KLSAgICB9Ci0KLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuQ29udHJvbGxlclZhbGlkYXRpb25JbmZvI2NvbXBsZXRlV1NETFZhbGlkYXRpb24oKQotICAgKi8KLSAgcHVibGljIHZvaWQgY29tcGxldGVXU0RMVmFsaWRhdGlvbigpCi0gIHsKLSAgICBpZiAoaGFzZXJyb3JzKQotICAgIHsKLSAgICAgIHdzZGxWYWxpZCA9IGZhbHNlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgd3NkbFZhbGlkID0gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uUmVwb3J0I2hhc0Vycm9ycygpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBoYXNFcnJvcnMoKQotICB7Ci0gICAgcmV0dXJuIGhhc2Vycm9yczsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzZGwudmFsaWRhdGUuVmFsaWRhdGlvblJlcG9ydCNnZXROZXN0ZWRNZXNzYWdlcygpCi0gICAqLwotICBwdWJsaWMgSGFzaE1hcCBnZXROZXN0ZWRNZXNzYWdlcygpCi0gIHsKLSAgICByZXR1cm4gbmVzdGVkTWVzc2FnZXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldFVSSVJlc29sdmVyKFVSSVJlc29sdmVyIHVyaVJlc29sdmVyKQotICB7Ci0gIAl0aGlzLnVyaVJlc29sdmVyID0gdXJpUmVzb2x2ZXI7Ci0gIH0KLSAgCi0gIHB1YmxpYyBVUklSZXNvbHZlciBnZXRVUklSZXNvbHZlcigpCi0gIHsKLSAgCXJldHVybiB1cmlSZXNvbHZlcjsKLSAgfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3NkbC52YWxpZGF0ZS5WYWxpZGF0aW9uSW5mbyNnZXRBdHRyaWJ1dGUoamF2YS5sYW5nLlN0cmluZykKLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGdldEF0dHJpYnV0ZShTdHJpbmcgbmFtZSkgCi0JewotCQlpZihjb25maWd1cmF0aW9uID09IG51bGwpCi0JCXsKLQkJCXJldHVybiBudWxsOwotCQl9Ci0JCXJldHVybiBjb25maWd1cmF0aW9uLmdldFByb3BlcnR5KG5hbWUpOwotCX0KLQkKLQlwdWJsaWMgdm9pZCBzZXRDb25maWd1cmF0aW9uKFdTRExWYWxpZGF0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQotCXsKLQkJdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsKLQl9Ci0JcHVibGljIGJvb2xlYW4gaXNWYWxpZCgpIHsKLQkJcmV0dXJuICFoYXNFcnJvcnMoKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvVmFsaWRhdGlvbk1lc3NhZ2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvVmFsaWRhdGlvbk1lc3NhZ2VJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZmQ2NGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL1ZhbGlkYXRpb25NZXNzYWdlSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLQotLyoqCi0gKiBBIHZhbGlkYXRpb24gbWVzc2FnZSBpcyBjcmVhdGVkIHdoZW4gdGhlcmUgaXMgaW5mb3JtYXRpb24gdG8gcmVwb3J0IGZyb20KLSAqIHZhbGlkYXRpbmcgYSBXU0RMIGRvY3VtZW50LgotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VJbXBsIGltcGxlbWVudHMgSVZhbGlkYXRpb25NZXNzYWdlCi17Ci0gIHByb3RlY3RlZCBTdHJpbmcgbWVzc2FnZTsKLSAgcHJvdGVjdGVkIGludCBsaW5lTnVtYmVyOwotICBwcm90ZWN0ZWQgaW50IGNvbHVtbk51bWJlcjsKLSAgcHJvdGVjdGVkIFN0cmluZyB1cmk7Ci0gIHByb3RlY3RlZCBpbnQgc2V2ZXJpdHkgPSBTRVZfRVJST1I7Ci0gIHByb3RlY3RlZCBMaXN0IG5lc3RlZEVycm9yczsKLSAgcHJvdGVjdGVkIFN0cmluZyBlcnJvcktleSA9IG51bGw7Ci0gIHByb3RlY3RlZCBPYmplY3RbXSBtZXNzYWdlQXJndW1lbnRzID0gbnVsbDsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlLgotICAgKiBAcGFyYW0gbGluZU51bWJlciBUaGUgbGluZSB3aGVyZSB0aGUgbWVzc2FnZSBzaG91bGQgYmUgZGlzcGxheWVkLgotICAgKiBAcGFyYW0gY29sdW1uTnVtYmVyIFRoZSBjb2x1bW4gd2hlcmUgdGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGRpc3BsYXllZC4KLSAgICogQGRlcHJlY2F0ZWQgVXNlIGNvbnRydWN0b3Igd2l0aCBVUkkgcGFyYW1ldGVyLgotICAgKi8KLSAgcHVibGljIFZhbGlkYXRpb25NZXNzYWdlSW1wbChTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCBzZXZlcml0eSkKLSAgewotICAgIHRoaXMobWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzZXZlcml0eSwgbnVsbCk7Ci0gIH0KLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIEFsbG93cyBzcGVjaWZ5aW5nIGEgdXJpIGZvciB0aGUgcmVmZXJlbmNlIHRoYXQgdGhlIG1lc3NhZ2UgcmVmZXJzIHRvLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIHZhbGlkYXRpb24gbWVzc2FnZS4KLSAgICogQHBhcmFtIGxpbmVOdW1iZXIgVGhlIGxpbmUgd2hlcmUgdGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGRpc3BsYXllZC4KLSAgICogQHBhcmFtIGNvbHVtbk51bWJlciBUaGUgY29sdW1uIHdoZXJlIHRoZSBtZXNzYWdlIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0gICAqIEBwYXJhbSB1cmkgVGhlIHVyaSBvZiB0aGUgcmVmZXJlbmNlIGZpbGUgZm9yIHRoZSBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIFZhbGlkYXRpb25NZXNzYWdlSW1wbChTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCBzZXZlcml0eSwgU3RyaW5nIHVyaSkKLSAgewotICAgICAgdGhpcyhtZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNldmVyaXR5LCB1cmksIG51bGwsIG51bGwpOwotICB9Ci0gIAotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIEFsbG93cyBzcGVjaWZ5aW5nIGEgdXJpIGZvciB0aGUgcmVmZXJlbmNlIHRoYXQgdGhlIG1lc3NhZ2UgcmVmZXJzIHRvLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIHZhbGlkYXRpb24gbWVzc2FnZS4KLSAgICogQHBhcmFtIGxpbmVOdW1iZXIgVGhlIGxpbmUgd2hlcmUgdGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGRpc3BsYXllZC4KLSAgICogQHBhcmFtIGNvbHVtbk51bWJlciBUaGUgY29sdW1uIHdoZXJlIHRoZSBtZXNzYWdlIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0gICAqIEBwYXJhbSB1cmkgVGhlIHVyaSBvZiB0aGUgcmVmZXJlbmNlIGZpbGUgZm9yIHRoZSBtZXNzYWdlLgotICAgKiBAcGFyYW0gZXJyb3JLZXkgVGhlIFhlcmNlcyBFcnJvciBrZXkKLSAgICogQHBhcmFtIG1lc3NhZ2VBcmd1bWVudHMgVGhlIHZhbHVlcyB1c2VkIHRvICJmaWxsIGluIHRoZSBibGFua3MiIG9mIGEgWGVyY2VzIGVycm9yIE1lc3NhZ2UKLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0aW9uTWVzc2FnZUltcGwoU3RyaW5nIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgc2V2ZXJpdHksIFN0cmluZyB1cmksIFN0cmluZyBlcnJvcktleSwgT2JqZWN0W10gbWVzc2FnZUFyZ3VtZW50cykKLSAgewotICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgdGhpcy5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKLSAgICB0aGlzLmNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlcjsKLSAgICB0aGlzLnNldmVyaXR5ID0gc2V2ZXJpdHk7Ci0gICAgdGhpcy51cmkgPSB1cmk7Ci0gICAgdGhpcy5lcnJvcktleSA9IGVycm9yS2V5OwotICAgIHRoaXMubWVzc2FnZUFyZ3VtZW50cyA9IG1lc3NhZ2VBcmd1bWVudHM7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGNvbHVtbiBudW1iZXIuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBjb2x1bW4gbnVtYmVyIHdoZXJlIHRoZSBtZXNzYWdlIGlzIGxvY2F0ZWQuCi0gICAqLwotICBwdWJsaWMgaW50IGdldENvbHVtbigpCi0gIHsKLSAgICByZXR1cm4gY29sdW1uTnVtYmVyOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGxpbmUgbnVtYmVyLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgbGluZSBudW1iZXIgd2hlcmUgdGhlIG1lc3NhZ2UgaXMgbG9jYXRlZC4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0TGluZSgpCi0gIHsKLSAgICByZXR1cm4gbGluZU51bWJlcjsKLSAgfQotCi0gIC8qKgotICAgKiByZXR1cm5zIHRoZSB1cmkgb2YgdGhlIHJlZmVyZW5jZSBmaWxlIGZvciB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgdXJpIG9mIHRoZSByZXNvdXJjZSB0aGF0IHRoZSBtZXNzYWdlIHJlZmVycyB0by4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VVJJKCkKLSAgewotICAgIHJldHVybiB1cmk7Ci0gIH0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvbk1lc3NhZ2UjZ2V0U2V2ZXJpdHkoKQotICAgKi8KLSAgcHVibGljIGludCBnZXRTZXZlcml0eSgpCi0gIHsKLSAgICByZXR1cm4gc2V2ZXJpdHk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXQgdGhlIHNldmVyaXR5IG9mIHRoZSBtZXNzYWdlLgotICAgKiAKLSAgICogQHBhcmFtIHNldmVyaXR5IFRoZSBzZXZlcml0eSBvZiB0aGUgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNldmVyaXR5KGludCBzZXZlcml0eSkKLSAgewotICAgIGlmKHNldmVyaXR5ID09IFNFVl9FUlJPUiB8fCBzZXZlcml0eSA9PSBTRVZfV0FSTklORykKLSAgICB7Ci0gICAgICB0aGlzLnNldmVyaXR5ID0gc2V2ZXJpdHk7Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogQWRkIGEgbmVzdGVkIHZhbGlkYXRpb24gbWVzc2FnZSB0byB0aGlzIHZhbGlkYXRpb24gbWVzc2FnZS4KLSAgICogCi0gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlIHRvIGFkZCBhcyBhIG5lc3RlZCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkTmVzdGVkTWVzc2FnZShJVmFsaWRhdGlvbk1lc3NhZ2UgdmFsaWRhdGlvbk1lc3NhZ2UpCi0gIHsKLSAgICBpZiAobmVzdGVkRXJyb3JzID09IG51bGwpCi0gICAgewotICAgICAgbmVzdGVkRXJyb3JzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIH0KLSAgICBuZXN0ZWRFcnJvcnMuYWRkKHZhbGlkYXRpb25NZXNzYWdlKTsKLSAgICBpbnQgdmFsaWRhaXRvbm1lc3NhZ2VTZXZlcml0eSA9IHZhbGlkYXRpb25NZXNzYWdlLmdldFNldmVyaXR5KCk7Ci0gICAgaWYodmFsaWRhaXRvbm1lc3NhZ2VTZXZlcml0eSA9PSBTRVZfRVJST1IpCi0gICAgewotICAgICAgc2V0U2V2ZXJpdHkoU0VWX0VSUk9SKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBsaXN0IG9mIG5lc3RlZCB2YWxpZGF0aW9uIG1lc3NhZ2VzLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgbGlzdCBvZiBuZXN0ZWQgdmFsaWRhdGlvbiBtZXNzYWdlcy4KLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldE5lc3RlZE1lc3NhZ2VzKCkKLSAgewotICAgIHJldHVybiBuZXN0ZWRFcnJvcnMgIT0gbnVsbCA/IG5lc3RlZEVycm9ycyA6IENvbGxlY3Rpb25zLkVNUFRZX0xJU1Q7Ci0gIH0KLSAgLyoqCi0gICAqIEByZXR1cm4gdGhlIGVycm9yIGtleQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRFcnJvcktleSgpCi0gIHsKLSAgICByZXR1cm4gZXJyb3JLZXk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcGFyYW0gZXJyb3JLZXkgdGhlIGVycm9yIGtleSB0byBzZXQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVycm9yS2V5KFN0cmluZyBlcnJvcktleSkKLSAgewotICAgIHRoaXMuZXJyb3JLZXkgPSBlcnJvcktleTsKLSAgfQotICAvKioKLSAgICogQHJldHVybiB0aGUgWGVyY2VzIG1lc3NhZ2UgYXJndW1lbnRzIHVzZWQgdG8gImZpbGwgaW4gdGhlIGJsYW5rcyIgb2YgdGhlIG1lc3NhZ2VzCi0gICAqLwotICBwdWJsaWMgT2JqZWN0W10gZ2V0TWVzc2FnZUFyZ3VtZW50cygpCi0gIHsKLSAgICByZXR1cm4gbWVzc2FnZUFyZ3VtZW50czsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL1ZhbGlkYXRvclJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvVmFsaWRhdG9yUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIzMDVlNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvVmFsaWRhdG9yUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotCi0vKioKLSAqIEEgcmVnaXN0cnkgb2YgSVdTRExWYWxpZGF0b3IgdmFsaWRhdG9ycy4gVGhpcyBob2xkcyB0aGUgdG9wIGxldmVsIFdTREwgYW5kIFdTLUkgdmFsaWRhdG9ycy4KLSAqIFZhbGlkYXRvcnMgYXJlIHJlZ2lzdGVyZWQgYnkgdGhlIG5hbWVzcGFjZSB0aGV5IHZhbGlkYXRlLgotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdG9yUmVnaXN0cnkKLXsKLSAgLyoqCi0gICAqIFRoZSBXU0RMIHZhbGlkYXRvciB0eXBlLgotICAgKi8KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBJbnRlZ2VyIFdTRExfVkFMSURBVE9SID0gbmV3IEludGVnZXIoMCk7Ci0gIC8qKgotICAgKiBUaGUgV1MtSSB2YWxpZGF0b3IgdHlwZS4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgSW50ZWdlciBFWFRfVkFMSURBVE9SID0gbmV3IEludGVnZXIoMSk7Ci0gIHByb3RlY3RlZCBzdGF0aWMgVmFsaWRhdG9yUmVnaXN0cnkgdmVySW5zdGFuY2U7Ci0gIC8qCi0gICAgVGhpcyBpcyBhIE1hcCBvZiBNYXBzLiBUaGUgdG9wLWxldmVsIE1hcCBpcyBrZXllZCBieSAoQ2xhc3MpcGFyZW50VHlwZSwKLSAgICBhbmQgdGhlIGlubmVyIE1hcHMgYXJlIGtleWVkIGJ5IChRTmFtZSllbGVtZW50VHlwZS4KLSAgICBUaGlzIGlkZWEgaXMgdGhlIHNhbWUgYXMgaXMgZG9uZSBpbiBXU0RMNEoKLSAgKi8KLSAgcHJvdGVjdGVkIE1hcCB2YWxpZGF0b3JSZWcgPSBuZXcgSGFzaHRhYmxlKCk7Ci0KLSAgcHJvdGVjdGVkIEl0ZXJhdG9yIGRlZmF1bHRWYWxpZGF0b3JJdGVyYXRvcjsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwcm90ZWN0ZWQgVmFsaWRhdG9yUmVnaXN0cnkoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIHJlZ2lzdHJ5LgotICAgKiAKLSAgICogQHJldHVybiBUaGUgaW5zdGFuY2Ugb2YgdGhlIHJlZ2lzdHJ5LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBWYWxpZGF0b3JSZWdpc3RyeSBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICBpZiAodmVySW5zdGFuY2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB2ZXJJbnN0YW5jZSA9IG5ldyBWYWxpZGF0b3JSZWdpc3RyeSgpOwotICAgIH0KLSAgICByZXR1cm4gdmVySW5zdGFuY2U7Ci0gIH0KLSAgLyoqCi0gICAqIFJlZ2lzdGVyIHRoaXMgdmFsaWRhdG9yIG9mIHRoZSBnaXZlbiB0eXBlIHdpdGggdGhlIGdpdmVuIG5hbWVzcGFjZS4KLSAgICogCi0gICAqIEBwYXJhbSBuYW1lc3BhY2UgVGhlIG5hbWVzcGFjZSB0aGUgdmFsaWRhdG9yIHZhbGlkYXRlcy4KLSAgICogQHBhcmFtIHZhbERlbGVnYXRlIFRoZSB2YWxpZGF0b3IgZGVsZWdhdGUgdG8gcmVnaXN0ZXIuCi0gICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHZhbGlkYXRvci4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyVmFsaWRhdG9yKFN0cmluZyBuYW1lc3BhY2UsIFdTRExWYWxpZGF0b3JEZWxlZ2F0ZSB2YWxEZWxlZ2F0ZSwgSW50ZWdlciB0eXBlKQotICB7Ci0gICAgLy8gYWxsb3cgdGhlIG51bGwgbmFtZXNwYWNlIGJ1dCBtYWtlIGl0IHRoZSBlbXB0eSBzdHJpbmcKLSAgICBpZiAobmFtZXNwYWNlID09IG51bGwpCi0gICAgewotICAgICAgbmFtZXNwYWNlID0gIiI7Ci0gICAgfQotCi0gICAgLy8gZ2V0IHRoZSBoYXN0YWJsZSBmb3IgdGhlIHR5cGUgb2YgdmFsaWRhdG9yIHdlIHdhbnQKLSAgICBIYXNodGFibGUgdHlwZVZhbGlkYXRvclJlZyA9IChIYXNodGFibGUpdmFsaWRhdG9yUmVnLmdldCh0eXBlKTsKLSAgICAvLyBpZiBpdCdzIG51bGwgaWYgbWVhbnMgd2UgaGF2ZW4ndCBkZWZpbmVkIHRoaXMgdHlwZSBvZiB2YWxpZGF0b3IgeWV0Ci0gICAgaWYgKHR5cGVWYWxpZGF0b3JSZWcgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0eXBlVmFsaWRhdG9yUmVnID0gbmV3IEhhc2h0YWJsZSgpOwotICAgICAgdmFsaWRhdG9yUmVnLnB1dCh0eXBlLCB0eXBlVmFsaWRhdG9yUmVnKTsKLSAgICB9Ci0gICAgCi0gICAgICBMaXN0IG5hbWVzcGFjZXZhbHMgPSAoTGlzdCl0eXBlVmFsaWRhdG9yUmVnLmdldChuYW1lc3BhY2UpOwotICAgICAgaWYobmFtZXNwYWNldmFscyA9PSBudWxsKQotICAgICAgewotICAgICAgICBuYW1lc3BhY2V2YWxzID0gbmV3IFZlY3RvcigpOwotICAgICAgICB0eXBlVmFsaWRhdG9yUmVnLnB1dChuYW1lc3BhY2UsIG5hbWVzcGFjZXZhbHMpOwotICAgICAgfQotICAgICAgbmFtZXNwYWNldmFscy5hZGQodmFsRGVsZWdhdGUpOwotCi0gIH0KLSAgLyoqCi0gICAqIEFzayBmb3IgdGhlIHZhbGlkYXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBuYW1lc3BhY2UuIElmIG5vbmUgaXMgZm91bmQKLSAgICogcmV0dXJuIG51bGwuCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlIFRoZSBuYW1lc3BhY2UgZm9yIHRoZSB2YWxpZGF0b3IgdGhhdCBpcyBiZWluZyByZXF1ZXN0ZWQuCi0gICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHZhbGlkYXRvciB0aGF0IGlzIGJlaW5nIHJlcXVlc3RlZC4KLSAgICogQHJldHVybiBBbiBhcnJheSBvZiB2YWxpZGF0b3IgZGVsZWdhdGVzIGlmIGF0IGxlYXN0IG9uZSBpcyByZWdpc3RlcmVkLCBudWxsIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBXU0RMVmFsaWRhdG9yRGVsZWdhdGVbXSBxdWVyeVZhbGlkYXRvclJlZ2lzdHJ5KFN0cmluZyBuYW1lc3BhY2UsIEludGVnZXIgdHlwZSkKLSAgewotICAgIC8vIGlmIHRoZSBuYW1lc3BhY2UgaXMgbnVsbCBhbGxvdyBpdCBhbmQgdHJlYXQgaXQgYXMgdGhlIGVtcHR5IHN0cmluZwotICAgIGlmIChuYW1lc3BhY2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBuYW1lc3BhY2UgPSAiIjsKLSAgICB9Ci0gICAgSGFzaHRhYmxlIHR5cGVWYWxpZGF0b3JSZWcgPSAoSGFzaHRhYmxlKXZhbGlkYXRvclJlZy5nZXQodHlwZSk7Ci0gICAgaWYgKHR5cGVWYWxpZGF0b3JSZWcgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLQotICAgIH0KLQotICAgIExpc3QgdmFsZGVscyA9IChMaXN0KXR5cGVWYWxpZGF0b3JSZWcuZ2V0KG5hbWVzcGFjZSk7Ci0gICAgaWYodmFsZGVscyAhPSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiAoV1NETFZhbGlkYXRvckRlbGVnYXRlW10pdmFsZGVscy50b0FycmF5KG5ldyBXU0RMVmFsaWRhdG9yRGVsZWdhdGVbdmFsZGVscy5zaXplKCldKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYSB2YWxpZGF0b3IgcmVnaXN0ZXJlZCBvZiB0aGUgZ2l2ZW4gdHlwZSB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2UuCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIHZhbGlkYXRvci4KLSAgICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIHZhbGlkYXRvci4KLSAgICogQHJldHVybiBUcnVlIGlmIHRoZXJlIGlzIGEgdmFsaWRhdG9yIHJlZ2lzdGVyZWQgZm9yIHRoZSBuYW1lc3BhY2UsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGhhc1JlZ2lzdGVyZWRWYWxpZGF0b3IoU3RyaW5nIG5hbWVzcGFjZSwgSW50ZWdlciB0eXBlKQotICB7Ci0gICAgaWYgKHF1ZXJ5VmFsaWRhdG9yUmVnaXN0cnkobmFtZXNwYWNlLCB0eXBlKSAhPSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9XU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9XU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JiODAyZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvV1NETFZhbGlkYXRpb25Db25maWd1cmF0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi0vKioKLSAqIENvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHZhbGlkYXRpb24gb2YgYSBzcGVjaWZpYwotICogZmlsZS4KLSAqLwotcHVibGljIGNsYXNzIFdTRExWYWxpZGF0aW9uQ29uZmlndXJhdGlvbiAKLXsKLSAgcHJvdGVjdGVkIEhhc2h0YWJsZSBwcm9wZXJ0aWVzID0gbmV3IEhhc2h0YWJsZSgpOwotICAKLSAgLyoqCi0gICAqIFNldCBhbiBhdHRyaWJ1dGUgb24gdGhlIHZhbGlkYXRvci4gQW4gYXR0cmlidXRlIGlzCi0gICAqIGRlZmluZWQgYnkgYSBuYW1lIGFuZCBhIHZhbHVlIHBhaXIuIEFuIGF0dHJpYnV0ZSBtYXkKLSAgICogYmUgZGVmaW5lZCBmb3IgYW55IHZhbGlkYXRvciwgYnVpbHQgaW4gb3IgYW4gZXh0ZW5zaW9uLgotICAgKiBFeHRlbnNpb24gdmFsaWRhdG9ycyBjYW4gcHJvYmUgdGhlIGF0dHJpYnV0ZXMgc2V0IG9uCi0gICAqIHRoZSBXU0RMIHZhbGlkYXRvciB0byBjdXN0b21pemUgdGhlIHdheSBpbiB3aGljaCB0aGV5Ci0gICAqIHZhbGlkYXRlLiBBIG51bGwgdmFsdWUgd2lsbCB1bnNldCBhbiBhdHRyaWJ1dGUuCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZSBUaGUgYXR0cmlidXRlIGlkZW50aWZpZXIuCi0gICAqIEBwYXJhbSB2YWx1ZSBUaGUgYXR0cmlidXRlIGl0c2VsZi4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFByb3BlcnR5KFN0cmluZyBuYW1lLCBPYmplY3QgdmFsdWUpCi0gIHsKLQlpZih2YWx1ZSA9PSBudWxsKQotCXsKLQkgIHByb3BlcnRpZXMucmVtb3ZlKG5hbWUpOwotCX0KLQllbHNlCi0JewotICAJICBwcm9wZXJ0aWVzLnB1dChuYW1lLCB2YWx1ZSk7Ci0JfQotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSB2YWx1ZSBzZXQgZm9yIGEgZ2l2ZW4gcHJvcGVydHkuCi0gICAqIAotICAgKiBAcmV0dXJuCi0gICAqIAkJVGhlIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IG9yIG51bGwgaWYgdGhlIHByb3BlcnR5IGhhcyBub3QgYmVlbiBzcGVjaWZpZWQuCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGdldFByb3BlcnR5KFN0cmluZyBuYW1lKQotICB7Ci0JaWYobmFtZSAhPSBudWxsKQotCSAgcmV0dXJuIHByb3BlcnRpZXMuZ2V0KG5hbWUpOwotCXJldHVybiBudWxsOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9XU0RMVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvV1NETFZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDMyYjFjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9XU0RMVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWw7Ci0KLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuSUV4dGVuc2libGVVUklSZXNvbHZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyLlVSSVJlc29sdmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLkNsYXNzbG9hZGVyV1NETDExVmFsaWRhdG9yRGVsZWdhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuV1NETDExQmFzaWNWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuV1NETDExVmFsaWRhdG9yQ29udHJvbGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5XU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5odHRwLkhUVFBWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEubWltZS5NSU1FVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnNvYXAuU09BUFZhbGlkYXRvcjsKLQotaW1wb3J0IGNvbS5pYm0ud3NkbC5Db25zdGFudHM7Ci0KLS8qKgotICogQW4gbWFpbiBXU0RMIHZhbGlkYXRvciBjbGFzcy4gVGhlIFdTREwgdmFsaWRhdG9yIHZhbGlkYXRlcyBXU0RMIGRvY3VtZW50cy4KLSAqLwotcHVibGljIGNsYXNzIFdTRExWYWxpZGF0b3IKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIFZBTElEQVRPUl9SRVNPVVJDRV9CVU5ETEUgPSAidmFsaWRhdGV3c2RsIjsKLSAgcHJpdmF0ZSBWYWxpZGF0aW9uQ29udHJvbGxlciB2YWxpZGF0aW9uQ29udHJvbGxlcjsKLSAgcHJvdGVjdGVkIFVSSVJlc29sdmVyIHVyaVJlc29sdmVyOwotICAKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIFdTRExWYWxpZGF0b3IoKQotICB7Ci0gICAgUmVzb3VyY2VCdW5kbGUgcmIgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoVkFMSURBVE9SX1JFU09VUkNFX0JVTkRMRSk7Ci0gICAgdXJpUmVzb2x2ZXIgPSBuZXcgVVJJUmVzb2x2ZXIoKTsKLSAgICB2YWxpZGF0aW9uQ29udHJvbGxlciA9IG5ldyBWYWxpZGF0aW9uQ29udHJvbGxlcihyYiwgdXJpUmVzb2x2ZXIpOwotICAgIAotICAgIC8vUmVnaXN0ZXIgdGhlIGRlZmF1bHQgdmFsaWRhdG9ycy4KLSAgICBWYWxpZGF0b3JSZWdpc3RyeSByZWdpc3RyeSA9IFZhbGlkYXRvclJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0gICAgLy8gUmVnaXN0ZXIgdGhlIFdTREwgMS4xIHZhbGlkYXRvciBjb250cm9sbGVyIGFuZCB2YWxpZGF0b3JzLgotICAgIFdTRExWYWxpZGF0b3JEZWxlZ2F0ZSBkZWxlZ2F0ZSA9IG5ldyBDbGFzc2xvYWRlcldTRExWYWxpZGF0b3JEZWxlZ2F0ZShXU0RMMTFWYWxpZGF0b3JDb250cm9sbGVyLmNsYXNzLmdldE5hbWUoKSwgZ2V0Q2xhc3MoKS5nZXRDbGFzc0xvYWRlcigpKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlclZhbGlkYXRvcihDb25zdGFudHMuTlNfVVJJX1dTREwsIGRlbGVnYXRlLCBWYWxpZGF0b3JSZWdpc3RyeS5XU0RMX1ZBTElEQVRPUik7Ci0gICAgV1NETDExVmFsaWRhdG9yRGVsZWdhdGUgZGVsZWdhdGUxID0gbmV3IENsYXNzbG9hZGVyV1NETDExVmFsaWRhdG9yRGVsZWdhdGUoV1NETDExQmFzaWNWYWxpZGF0b3IuY2xhc3MuZ2V0TmFtZSgpLCBnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkpOwotICAgIHJlZ2lzdGVyV1NETDExVmFsaWRhdG9yKENvbnN0YW50cy5OU19VUklfV1NETCwgZGVsZWdhdGUxKTsKLSAgICBkZWxlZ2F0ZTEgPSBuZXcgQ2xhc3Nsb2FkZXJXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZShIVFRQVmFsaWRhdG9yLmNsYXNzLmdldE5hbWUoKSwgZ2V0Q2xhc3MoKS5nZXRDbGFzc0xvYWRlcigpKTsKLSAgICByZWdpc3RlcldTREwxMVZhbGlkYXRvcihvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLkNvbnN0YW50cy5OU19IVFRQLCBkZWxlZ2F0ZTEpOwotICAgIGRlbGVnYXRlMSA9IG5ldyBDbGFzc2xvYWRlcldTREwxMVZhbGlkYXRvckRlbGVnYXRlKFNPQVBWYWxpZGF0b3IuY2xhc3MuZ2V0TmFtZSgpLCBnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkpOwotICAgIHJlZ2lzdGVyV1NETDExVmFsaWRhdG9yKG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuQ29uc3RhbnRzLk5TX1NPQVAxMSwgZGVsZWdhdGUxKTsKLSAgICBkZWxlZ2F0ZTEgPSBuZXcgQ2xhc3Nsb2FkZXJXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZShNSU1FVmFsaWRhdG9yLmNsYXNzLmdldE5hbWUoKSwgZ2V0Q2xhc3MoKS5nZXRDbGFzc0xvYWRlcigpKTsKLSAgICByZWdpc3RlcldTREwxMVZhbGlkYXRvcihvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLkNvbnN0YW50cy5OU19NSU1FLCBkZWxlZ2F0ZTEpOwotICAgCi0gICAgLy8gVGhlIFdTREwgMS4xIHNjaGVtYSB2YWxpZGF0b3IgaXMgYSBzcGVjaWFsIGNhc2UgYXMgaXQgaXMgcmVnaXN0ZXJlZCBmb3IgdGhyZWUgbmFtZXNwYWNlcy4KLS8vICAgIGRlbGVnYXRlMSA9IG5ldyBXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZShJbmxpbmVTY2hlbWFWYWxpZGF0b3IuY2xhc3MuZ2V0TmFtZSgpLCBWQUxJREFUT1JfUkVTT1VSQ0VfQlVORExFLCBnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkpOwotLy8gICAgcmVnaXN0ZXJXU0RMMTFWYWxpZGF0b3IoQ29uc3RhbnRzLk5TX1VSSV9YU0RfMTk5OSwgZGVsZWdhdGUxKTsKLS8vICAgIHJlZ2lzdGVyV1NETDExVmFsaWRhdG9yKENvbnN0YW50cy5OU19VUklfWFNEXzIwMDAsIGRlbGVnYXRlMSk7Ci0vLyAgICByZWdpc3RlcldTREwxMVZhbGlkYXRvcihDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxLCBkZWxlZ2F0ZTEpOwotICB9Ci0gIAotICAvKioKLSAgICogVmFsaWRhdGUgdGhlIFdTREwgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uCi0gICAqIAotICAgKiBAcGFyYW0gdXJpIFRoZSBsb2NhdGlvbiBvZiB0aGUgV1NETCBmaWxlIHRvIHZhbGlkYXRlLgotICAgKiBAcmV0dXJuIEEgdmFsaWRhdGlvbiByZXBvcnQgc3VtbWFyaXppbmcgdGhlIHJlc3VsdHMgb2YgdGhlIHZhbGlkYXRpb24uCi0gICAqLwotICBwdWJsaWMgSVZhbGlkYXRpb25SZXBvcnQgdmFsaWRhdGUoU3RyaW5nIHVyaSkKLSAgewotICAgcmV0dXJuIHZhbGlkYXRlKHVyaSwgbnVsbCwgbmV3IFdTRExWYWxpZGF0aW9uQ29uZmlndXJhdGlvbigpKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBWYWxpZGF0ZSB0aGUgaW5wdXRTdHJlYW0KLSAgICogQHBhcmFtIHVyaSBUaGUgbG9jYXRpb24gb2YgdGhlIFdTREwgZmlsZSBiZWluZyB2YWxpZGF0ZWQKLSAgICogQHBhcmFtIGlucHV0U3RyZWFtIFRoZSBzdHJlYW0gdG8gdmFsaWRhdGUKLSAgICogQHJldHVybiBBIFZhbGlkYXRpb24gcmVwb3J0IHN1bW1hcml6aW5nIHRoZSByZXN1bHRzIG9mIHRoZSB2YWxpZGF0aW9uCi0gICAqLwotICBwdWJsaWMgSVZhbGlkYXRpb25SZXBvcnQgdmFsaWRhdGUoU3RyaW5nIHVyaSwgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0sIFdTRExWYWxpZGF0aW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQotICB7Ci0gICAgaWYodXJpID09IG51bGwpIAotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgaWYoY29uZmlndXJhdGlvbiA9PSBudWxsKQotICAgICAgY29uZmlndXJhdGlvbiA9IG5ldyBXU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24oKTsKLSAgICByZXR1cm4gdmFsaWRhdGlvbkNvbnRyb2xsZXIudmFsaWRhdGUodXJpLCBpbnB1dFN0cmVhbSwgY29uZmlndXJhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBBZGQgYSBVUkkgcmVzb2x2ZXIgdG8gdGhlIFdTREwgdmFsaWRhdG9yLgotICAgKiAKLSAgICogQHBhcmFtIHVyaVJlc29sdmVyIFRoZSBVUkkgcmVzb2x2ZXIgdG8gYWRkIHRvIHRoZSBXU0RMIHZhbGlkYXRvci4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFVSSVJlc29sdmVyKElFeHRlbnNpYmxlVVJJUmVzb2x2ZXIgdXJpUmVzb2x2ZXIpCi0gIHsKLSAgCXRoaXMudXJpUmVzb2x2ZXIuYWRkVVJJUmVzb2x2ZXIodXJpUmVzb2x2ZXIpOwotICB9Ci0gIAotICAvKioKLSAgICogUmVnaXN0ZXIgYW4gZXh0ZW5zaW9uIFdTREwgdmFsaWRhdG9yIGRlbGVnYXRlIHdpdGggdGhpcyB2YWxpZGF0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlIFRoZSBuYW1lc3BhY2UgdGhlIHZhbGlkYXRvciB2YWxpZGF0ZXMgZm9yLiBUaGlzIGlzIHRoZSBXU0RMIG5hbWVzcGFjZS4KLSAgICogQHBhcmFtIGRlbGVnYXRlIFRoZSBkZWxlZ2F0ZSB0aGF0IGhvbGRzIHRoZSB2YWxpZGF0b3IuCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlcldTRExFeHRlbnNpb25WYWxpZGF0b3IoU3RyaW5nIG5hbWVzcGFjZSwgV1NETFZhbGlkYXRvckRlbGVnYXRlIGRlbGVnYXRlKQotICB7Ci0gICAgVmFsaWRhdG9yUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5yZWdpc3RlclZhbGlkYXRvcihuYW1lc3BhY2UsIGRlbGVnYXRlLCBWYWxpZGF0b3JSZWdpc3RyeS5FWFRfVkFMSURBVE9SKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJlZ2lzdGVyIGEgV1NETCAxLjEgdmFsaWRhdG9yIGRlbGVnYXRlIHdpdGggdGhpcyB2YWxpZGF0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlIFRoZSBuYW1lc3BhY2UgdGhlIHZhbGlkYXRvciB2YWxpZGF0ZXMgZm9yLgotICAgKiBAcGFyYW0gZGVsZWdhdGUgVGhlIGRlbGVnYXRlIHRoYXQgaG9sZHMgdGhlIHZhbGlkYXRvci4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyV1NETDExVmFsaWRhdG9yKFN0cmluZyBuYW1lc3BhY2UsIFdTREwxMVZhbGlkYXRvckRlbGVnYXRlIGRlbGVnYXRlKQotICB7Ci0gICAgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuVmFsaWRhdG9yUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5yZWdpc3RlclZhbGlkYXRvcihuYW1lc3BhY2UsIGRlbGVnYXRlKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL1dTRExWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL1dTRExWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmFlMDI1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9XU0RMVmFsaWRhdG9yRGVsZWdhdGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsOwotCi0vKioKLSAqIEEgV1NETFZhbGlkYXRvckRlbGVnYXRlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIGEgV1NETCB2YWxpZGF0b3IuCi0gKiBBIGRlbGVnYXRlIGlzIHVzZWQgdG8gbGF6eSBsb2FkIGV4dGVuc2lvbiB2YWxpZGF0b3JzLgotICovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgV1NETFZhbGlkYXRvckRlbGVnYXRlIAotewotICBwcml2YXRlIElXU0RMVmFsaWRhdG9yIHZhbGlkYXRvciA9IG51bGw7Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSB2YWxpZGF0b3Igc3BlY2lmaWVkIGluIHRoaXMgZGVsZWdhdGUuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBXU0RMIHZhbGlkYXRvciBzcGVjaWZpZWQgYnkgdGhpcyBkZWxlZ2F0ZS4KLSAgICovCi0gIHB1YmxpYyBJV1NETFZhbGlkYXRvciBnZXRWYWxpZGF0b3IoKQotICB7Ci0gICAgaWYgKHZhbGlkYXRvciA9PSBudWxsKQotICAgIHsKLSAgICAgIHZhbGlkYXRvciA9IGxvYWRWYWxpZGF0b3IoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHZhbGlkYXRvcjsKLSAgfQotICAKLSAgLyoqCi0gICAqIExvYWQgdGhlIHZhbGlkYXRvciBzcGVjaWZpZWQgaW4gdGhpcyBkZWxlZ2F0ZS4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIFdTREwgdmFsaWRhdG9yIHNwZWNpZmllZCBieSB0aGlzIGRlbGVnYXRlLgotICAgKi8KLSAgcHJvdGVjdGVkIGFic3RyYWN0IElXU0RMVmFsaWRhdG9yIGxvYWRWYWxpZGF0b3IoKTsKLSAgCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHZhbGlkYXRvci4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIHZhbGlkYXRvciBuYW1lLgotICAgKi8KLSAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRWYWxpZGF0b3JOYW1lKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9FY2xpcHNlTG9nZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9FY2xpcHNlTG9nZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkODJmNGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvRWNsaXBzZUxvZ2dlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5JTG9nZ2VyOwotCi0vKioKLSAqIEEgbG9nZ2VyIHRoYXQgd2lsbCBsb2cgdG8gdGhlIGxvZyBmaWxlIGluIHRoZSBFY2xpcHNlIG1ldGFkYXRhIGRpcmVjdG9yeS4KLSAqLwotcHVibGljIGNsYXNzIEVjbGlwc2VMb2dnZXIgaW1wbGVtZW50cyBJTG9nZ2VyCi17Ci0KLQkKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5JTG9nZ2VyI2xvZyhqYXZhLmxhbmcuU3RyaW5nLCBpbnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBsb2coU3RyaW5nIG1lc3NhZ2UsIGludCBzZXZlcml0eSkgCi0gIHsKLSAgICBsb2cobWVzc2FnZSwgc2V2ZXJpdHksIG51bGwpOwkKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlciNsb2coamF2YS5sYW5nLlN0cmluZywgaW50LCBqYXZhLmxhbmcuVGhyb3dhYmxlKQotICAgKi8KLSAgcHVibGljIHZvaWQgbG9nKFN0cmluZyBtZXNzYWdlLCBpbnQgc2V2ZXJpdHksIFRocm93YWJsZSB0aHJvd2FibGUpCi0gIHsKLQkvLyBEb24ndCBsb2cgdmVyYm9zZSBpbmZvcm1hdGlvbiBpbiB0aGUgRWNsaXBzZSBsb2cuCi0JaWYoc2V2ZXJpdHkgPT0gSUxvZ2dlci5TRVZfVkVSQk9TRSkKLQl7Ci0JICByZXR1cm47Ci0JfQotCWludCBzdGF0dXMgPSBJU3RhdHVzLklORk87Ci0JaWYoc2V2ZXJpdHkgPT0gSUxvZ2dlci5TRVZfV0FSTklORykKLQl7Ci0JICBzdGF0dXMgPSBJU3RhdHVzLldBUk5JTkc7Ci0JfQotCWVsc2UgaWYoc2V2ZXJpdHkgPT0gSUxvZ2dlci5TRVZfRVJST1IpCi0JewotCSAgc3RhdHVzID0gSVN0YXR1cy5FUlJPUjsKLQl9Ci0gICAgVmFsaWRhdGVXU0RMUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0TG9nKCkubG9nKG5ldyBTdGF0dXMoc3RhdHVzLCBWYWxpZGF0ZVdTRExQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRCdW5kbGUoKS5nZXRTeW1ib2xpY05hbWUoKSwgSVN0YXR1cy5PSywgbWVzc2FnZSwgdGhyb3dhYmxlKSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9lY2xpcHNlL0VjbGlwc2VXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvRWNsaXBzZVdTREwxMVZhbGlkYXRvckRlbGVnYXRlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YWI2YjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvRWNsaXBzZVdTREwxMVZhbGlkYXRvckRlbGVnYXRlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5lY2xpcHNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLklMb2dnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLkxvZ2dlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuSVdTREwxMVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5XU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZTsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotCi1wdWJsaWMgY2xhc3MgRWNsaXBzZVdTREwxMVZhbGlkYXRvckRlbGVnYXRlIGV4dGVuZHMgV1NETDExVmFsaWRhdG9yRGVsZWdhdGUKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgdmFsaWRhdG9yQ2xhc3NuYW1lID0gbnVsbDsKLSAgcHJpdmF0ZSBCdW5kbGUgYnVuZGxlID0gbnVsbDsKLQotICAvKioKLSAgICogQ3JlYXRlIGEgZGVsZWdhdGUgZm9yIGEgdmFsaWRhdG9yIGJ5IGl0cyBjbGFzcyBuYW1lIGFuZCAKLSAgICogYSBjbGFzcyBsb2FkZXIgdG8gbG9hZCB0aGUgdmFsaWRhdG9yLgotICAgKiAKLSAgICogQHBhcmFtIHZhbGlkYXRvckNsYXNzbmFtZSBUaGUgbmFtZSBvZiB0aGUgdmFsaWRhdG9yIGNsYXNzLgotICAgKiBAcGFyYW0gYnVuZGxlIFRoZSBidW5kbGUgdG8gdXNlIHRvIGxvYWQgdGhlIHZhbGlkYXRvci4KLSAgICovCi0gIHB1YmxpYyBFY2xpcHNlV1NETDExVmFsaWRhdG9yRGVsZWdhdGUoU3RyaW5nIHZhbGlkYXRvckNsYXNzbmFtZSwgQnVuZGxlIGJ1bmRsZSkKLSAgewotCXRoaXMudmFsaWRhdG9yQ2xhc3NuYW1lID0gdmFsaWRhdG9yQ2xhc3NuYW1lOwotICAgIHRoaXMuYnVuZGxlID0gYnVuZGxlOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuV1NETDExVmFsaWRhdG9yRGVsZWdhdGUjbG9hZFZhbGlkYXRvcigpCi0gICAqLwotICBwcm90ZWN0ZWQgSVdTREwxMVZhbGlkYXRvciBsb2FkVmFsaWRhdG9yKCkKLSAgewotCUlXU0RMMTFWYWxpZGF0b3IgdmFsaWRhdG9yID0gbnVsbDsKLQlpZihidW5kbGUgIT0gbnVsbCkKLQl7Ci0JICB0cnkKLQkgIHsKLSAgICAgICAgQ2xhc3MgdmFsaWRhdG9yQ2xhc3MgPSBidW5kbGUubG9hZENsYXNzKHZhbGlkYXRvckNsYXNzbmFtZSk7Ci0KLSAgICAgICAgdmFsaWRhdG9yID0gKElXU0RMMTFWYWxpZGF0b3IpdmFsaWRhdG9yQ2xhc3MubmV3SW5zdGFuY2UoKTsKLSAgICAgIAotICAgICAgfQotICAgICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgICAgewotICAgIAlMb2dnZXJGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0TG9nZ2VyKCkubG9nKCJVbmFibGUgdG8gbG9hZCB2YWxpZGF0b3IgIiArIHZhbGlkYXRvckNsYXNzbmFtZSwgSUxvZ2dlci5TRVZfRVJST1IsIHQpOwotICAgICAgfQotCX0KLQlyZXR1cm4gdmFsaWRhdG9yOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9FY2xpcHNlV1NETFZhbGlkYXRvckRlbGVnYXRlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9FY2xpcHNlV1NETFZhbGlkYXRvckRlbGVnYXRlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZTE4MWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvRWNsaXBzZVdTRExWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZWNsaXBzZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuV1NETFZhbGlkYXRvckRlbGVnYXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVdTRExWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLklMb2dnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLkxvZ2dlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZTsKLQotCi0vKioKLSAqIEEgZGVsZWdhdGUgaG9sZHMgYSB2YWxpZGF0b3IncyBpbmZvcm1hdGlvbiBhbmQgY2FuIGluc3RhbnRpYXRlIGl0Ci0gKiB3aGVuIHJlcXVlc3RlZCB0by4KLSAqLwotcHVibGljIGNsYXNzIEVjbGlwc2VXU0RMVmFsaWRhdG9yRGVsZWdhdGUgZXh0ZW5kcyBXU0RMVmFsaWRhdG9yRGVsZWdhdGUKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgdmFsaWRhdG9yQ2xhc3NuYW1lID0gbnVsbDsKLSAgcHJpdmF0ZSBCdW5kbGUgYnVuZGxlID0gbnVsbDsKLQotICAvKioKLSAgICogQ3JlYXRlIGEgZGVsZWdhdGUgZm9yIGEgdmFsaWRhdG9yIGJ5IGl0cyBjbGFzcyBuYW1lIGFuZCAKLSAgICogYW4gT1NHSSBidW5kbGUgdG8gbG9hZCB0aGUgdmFsaWRhdG9yLgotICAgKiAKLSAgICogQHBhcmFtIHZhbGlkYXRvckNsYXNzbmFtZSBUaGUgbmFtZSBvZiB0aGUgdmFsaWRhdG9yIGNsYXNzLgotICAgKiBAcGFyYW0gYnVuZGxlIFRoZSBPU0dJIGJ1bmRsZSB0byB1c2UgdG8gbG9hZCB0aGUgdmFsaWRhdG9yLgotICAgKi8KLSAgcHVibGljIEVjbGlwc2VXU0RMVmFsaWRhdG9yRGVsZWdhdGUoU3RyaW5nIHZhbGlkYXRvckNsYXNzbmFtZSwgQnVuZGxlIGJ1bmRsZSkKLSAgewotCXRoaXMudmFsaWRhdG9yQ2xhc3NuYW1lID0gdmFsaWRhdG9yQ2xhc3NuYW1lOwotICAgIHRoaXMuYnVuZGxlID0gYnVuZGxlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuQWJzdHJhY3RXU0RMVmFsaWRhdG9yRGVsZWdhdGUjbG9hZFZhbGlkYXRvcigpCi0gICAqLwotICBwcm90ZWN0ZWQgSVdTRExWYWxpZGF0b3IgbG9hZFZhbGlkYXRvcigpCi0gIHsKLQlJV1NETFZhbGlkYXRvciB2YWxpZGF0b3IgPSBudWxsOwotICAgIGlmKGJ1bmRsZSAhPSBudWxsKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgIAlDbGFzcyB2YWxpZGF0b3JDbGFzcyA9IGJ1bmRsZS5sb2FkQ2xhc3ModmFsaWRhdG9yQ2xhc3NuYW1lKTsKLQotICAgICAgICB2YWxpZGF0b3IgPSAoSVdTRExWYWxpZGF0b3IpdmFsaWRhdG9yQ2xhc3MubmV3SW5zdGFuY2UoKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoKFRocm93YWJsZSB0KQotICAgICAgewotICAgIAlMb2dnZXJGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0TG9nZ2VyKCkubG9nKCJVbmFibGUgdG8gbG9hZCB2YWxpZGF0b3IgIiArIHZhbGlkYXRvckNsYXNzbmFtZSwgSUxvZ2dlci5TRVZfRVJST1IsIHQpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdmFsaWRhdG9yOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5BYnN0cmFjdFdTRExWYWxpZGF0b3JEZWxlZ2F0ZSNnZXRWYWxpZGF0b3JOYW1lKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VmFsaWRhdG9yTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gdmFsaWRhdG9yQ2xhc3NuYW1lOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9JbmxpbmVTY2hlbWFNb2RlbEdyYW1tYXJQb29sSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvSW5saW5lU2NoZW1hTW9kZWxHcmFtbWFyUG9vbEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA4OWJiNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9JbmxpbmVTY2hlbWFNb2RlbEdyYW1tYXJQb29sSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZWNsaXBzZTsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnV0aWwuWE1MR3JhbW1hclBvb2xJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5HcmFtbWFyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5YTUxHcmFtbWFyRGVzY3JpcHRpb247Ci0KLS8qKgotICogQSBncmFtbWFyIHBvb2wgZm9yIGlubGluZSBzY2hlbWFzLiBUaGlzIGdyYW1tYXIgcG9vbCByZXN0cmljdHMgaW5saW5lIHNjaGVtYXMKLSAqIGZyb20gYmVpbmcgY2FjaGVkLgotICovCi1wdWJsaWMgY2xhc3MgSW5saW5lU2NoZW1hTW9kZWxHcmFtbWFyUG9vbEltcGwgZXh0ZW5kcyBYTUxHcmFtbWFyUG9vbEltcGwgCi17Ci0gIHB1YmxpYyB2b2lkIHB1dEdyYW1tYXIoR3JhbW1hciBncmFtbWFyKSAKLSAgewotCWlmIChncmFtbWFyID09IG51bGwpCi0JICByZXR1cm47Ci0JLy8gd2Ugb3ZlcmlkZSB0aGlzIG1ldGhvZCB0byBwZXJmb3JtICdzZWxlY3RpdmUnIGNhY2hpbmcgb2Ygc2NoZW1hcwotCVhNTEdyYW1tYXJEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiA9IGdyYW1tYXIuZ2V0R3JhbW1hckRlc2NyaXB0aW9uKCk7Ci0JaWYgKCFmUG9vbElzTG9ja2VkICYmICFjb250YWluc0dyYW1tYXIoZ3JhbW1hci5nZXRHcmFtbWFyRGVzY3JpcHRpb24oKSkpIAotCXsKLQkgIC8vIGluIG9yZGVyIHRvIGF2b2lkIGNhY2hpbmcgdGhlIGlubGluZSBzY2hlbWFzCi0JICAvLyB3ZSBlbnN1cmUgdGhlIGxpdGVyYWwgc3lzdGVtIGlkIGRvZXMgbm90IGVuZCB3aXRoIHdzZGwKLQkgIC8vIGJlZm9yZSB3ZSBhdHRlbXB0IHRvICdwdXQnIHRoZSBncmFtbWFyCi0JICBTdHJpbmcgbGl0U3lzSWQgPSBkZXNjcmlwdGlvbi5nZXRMaXRlcmFsU3lzdGVtSWQoKTsKLQkgIFN0cmluZyBiYXNTeXNJZCA9IGRlc2NyaXB0aW9uLmdldEJhc2VTeXN0ZW1JZCgpOwotCSAgaWYgKGxpdFN5c0lkICE9IG51bGwgJiYgbGl0U3lzSWQuZW5kc1dpdGgoInhzZCIpCi0JCQkmJiBiYXNTeXNJZCAhPSBudWxsICYmIGJhc1N5c0lkLmVuZHNXaXRoKCJ3c2RsIikpIAotCSAgewotCQkJCS8qCi0JCQkJICogU3lzdGVtLm91dC5wcmludGxuKCJwdXRHcmFtYW1yIDogIiArCi0JCQkJICogc2NoZW1hRGVzY3JpcHRpb24uZ2V0TmFtZXNwYWNlKCkgKyAiLCAiICsKLQkJCQkgKiBzY2hlbWFEZXNjcmlwdGlvbi5nZXRFeHBhbmRlZFN5c3RlbUlkKCkgKyAiLCAiICsKLQkJCQkgKiBzY2hlbWFEZXNjcmlwdGlvbi5nZXRCYXNlU3lzdGVtSWQoKSk7Ci0JCQkJICovCi0JICAgIHN1cGVyLnB1dEdyYW1tYXIoZ3JhbW1hcik7Ci0JICB9Ci0JfQotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvVVJJUmVzb2x2ZXJXcmFwcGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9VUklSZXNvbHZlcldyYXBwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFhNmJiNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9VUklSZXNvbHZlcldyYXBwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2U7Ci0KLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi51cmlyZXNvbHZlci5pbnRlcm5hbC5wcm92aXNpb25hbC5VUklSZXNvbHZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnVyaXJlc29sdmVyLmludGVybmFsLnByb3Zpc2lvbmFsLlVSSVJlc29sdmVyUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuSUV4dGVuc2libGVVUklSZXNvbHZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyLklVUklSZXNvbHV0aW9uUmVzdWx0OwotCi0vKioKLSAqIEFuIHdyYXBwZXIgVVJJIHJlc29sdmVyIHRoYXQgd3JhcHMgdGhlIFdlYiBTdGFuZGFyZCBUb29scyBVUkkgcmVzb2x2ZXIKLSAqIGluIGEgV1NETCB2YWxpZGF0b3IgVVJJIHJlc29sdmVyLgotICovCi1wdWJsaWMgY2xhc3MgVVJJUmVzb2x2ZXJXcmFwcGVyIGltcGxlbWVudHMgSUV4dGVuc2libGVVUklSZXNvbHZlcgotewotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgVVJJUmVzb2x2ZXJXcmFwcGVyKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlci5JRXh0ZW5zaWJsZVVSSVJlc29sdmVyI3Jlc29sdmUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlci5JVVJJUmVzb2x1dGlvblJlc3VsdCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlc29sdmUoU3RyaW5nIGJhc2VMb2NhdGlvbiwgU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQsIElVUklSZXNvbHV0aW9uUmVzdWx0IHJlc3VsdCkKLSAgewotICAgIFVSSVJlc29sdmVyIHJlc29sdmVyID0gVVJJUmVzb2x2ZXJQbHVnaW4uY3JlYXRlUmVzb2x2ZXIoKTsKLSAgICBTdHJpbmcgcmVzb2x2ZWRTeXN0ZW1JZCA9IHJlc29sdmVQbGF0Zm9ybVVSTChzeXN0ZW1JZCk7Ci0gICAgU3RyaW5nIGxvY2F0aW9uID0gbnVsbDsKLSAgICBpZiAocHVibGljSWQgIT0gbnVsbCB8fCByZXNvbHZlZFN5c3RlbUlkICE9IG51bGwpCi0gICAgeyAgCi0gICAgICBsb2NhdGlvbiA9IHJlc29sdmVyLnJlc29sdmUoYmFzZUxvY2F0aW9uLCBwdWJsaWNJZCwgcmVzb2x2ZWRTeXN0ZW1JZCk7Ci0gICAgfSAgCi0gICAgCi0gICAgaWYgKGxvY2F0aW9uICE9IG51bGwpCi0gICAgeyAgICAgICAKLSAgICAgIHJlc3VsdC5zZXRMb2dpY2FsTG9jYXRpb24obG9jYXRpb24pOwotICAgICAgU3RyaW5nIHBoeXNpY2FsID0gcmVzb2x2ZXIucmVzb2x2ZVBoeXNpY2FsTG9jYXRpb24oYmFzZUxvY2F0aW9uLCBwdWJsaWNJZCwgbG9jYXRpb24pOwotICAgICAgaWYocGh5c2ljYWwgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0LnNldFBoeXNpY2FsTG9jYXRpb24ocGh5c2ljYWwpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXN1bHQuc2V0UGh5c2ljYWxMb2NhdGlvbihsb2NhdGlvbik7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogUmVzb2x2ZSBwbGF0Zm9ybSBVUkxzIHRvIHN0YW5kYXJkIFVSTHMuIFRoaXMgbWV0aG9kIGhhcyB0aGUKLSAgICogcHJhY3RpY2FsIGVmZmVjdCBvZiB0cmFuc2Zvcm1pbmcgYSBVUkwgc3VjaCBhcwotICAgKiBwbGF0Zm9ybTovcmVzb3VyY2UvdGVzdC90ZXN0LndzZGwKLSAgICogaW50bwotICAgKiBmaWxlOi9jOi93dHAvd29ya3NwYWNlL3Rlc3QvdGVzdC53c2RsCi0gICAqIAotICAgKiBAcGFyYW0gdXJsIFRoZSBVUkwgdGhhdCBtYXkgY29udGFpbiB0aGUgcGxhdGZvcm0gc2NoZW1lLgotICAgKiBAcmV0dXJuIEEgcmVzb2x2ZWQgVVJMIHRoYXQgZG9lcyBub3QgY29udGFpbiB0aGUgcGxhdGZvcm0gc2NoZW1lLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyByZXNvbHZlUGxhdGZvcm1VUkwoU3RyaW5nIHVybCkKLSAgewotCSAgU3RyaW5nIHJlc3VsdCA9IHVybDsKLQkgIGlmKHVybCAhPSBudWxsICYmIHVybC5zdGFydHNXaXRoKCJwbGF0Zm9ybToiKSkKLSAgICAgIHsKLSAgICAJICB0cnkKLSAgICAJICB7Ci0gICAgCQkgIFVSTCBmaWxlVVJMID0gRmlsZUxvY2F0b3IudG9GaWxlVVJMKG5ldyBVUkwodXJsKSk7Ci0gICAgCQkgIHJlc3VsdCA9IGZpbGVVUkwudG9FeHRlcm5hbEZvcm0oKTsKLSAgICAJICB9Ci0gICAgCSAgY2F0Y2goRXhjZXB0aW9uIGUpCi0gICAgCSAgewotICAgIAkJICAvLyBDYW4ndCByZXNvbHZlIHVzaW5nIHRoZSBGaWxlTG9jYXRvciBpbiB0aGlzCi0gICAgCQkgIC8vIGNhc2Ugc28gZG8gbm90aGluZy4KLSAgICAJICB9Ci0gICAgICB9Ci0JICByZXR1cm4gcmVzdWx0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9WYWxpZGF0ZVdTRExQbHVnaW4uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9lY2xpcHNlL1ZhbGlkYXRlV1NETFBsdWdpbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmNkMWNkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9lY2xpcHNlL1ZhbGlkYXRlV1NETFBsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzA3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2U7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5GaWxlTG9jYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUG9pbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb25SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLkNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuTG9nZ2VyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5XU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5YTUxDYXRhbG9nOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGU7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci0KLS8qKgotICogVGhlIG1haW4gcGx1Z2luIGNsYXNzIHJlcXVpcmVkIGZvciBlY2xpcHNlLgotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVXU0RMUGx1Z2luIGV4dGVuZHMgUGx1Z2luCi17Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgUFJPUEVSVElFU19GSUxFID0gInZhbGlkYXRld3NkbHVpIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBWYWxpZGF0ZVdTRExQbHVnaW4gaW5zdGFuY2U7Ci0gIHByb3RlY3RlZCBSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZWJ1bmRsZSA9IG51bGw7Ci0gIHByb3RlY3RlZCBSZXNvdXJjZUJ1bmRsZSB3c2RsVmFsaWRhdG9yUmVzb3VyY2VCdW5kbGUgPSBudWxsOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0ZVdTRExQbHVnaW4oKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQWN0aXZhdG9yI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgc3RhcnQoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBzdXBlci5zdGFydChjb250ZXh0KTsKLSAgICBpbnN0YW5jZSA9IHRoaXM7Ci0gICAgd3NkbFZhbGlkYXRvclJlc291cmNlQnVuZGxlID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKENvbnN0YW50cy5XU0RMX1ZBTElEQVRPUl9QUk9QRVJUSUVTX0ZJTEUpOwotICAgIHJlc291cmNlYnVuZGxlID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKFBST1BFUlRJRVNfRklMRSk7Ci0gICAgCi0gICAgTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLnNldExvZ2dlcihuZXcgRWNsaXBzZUxvZ2dlcigpKTsKLQotICAgIG5ldyBXU0RMVmFsaWRhdG9yUGx1Z2luUmVnaXN0cnlSZWFkZXIoCi0gICAgICAiZXh0dmFsaWRhdG9yIiwKLSAgICAgICJleHR2YWxpZGF0b3IiLAotICAgICAgV1NETFZhbGlkYXRvclBsdWdpblJlZ2lzdHJ5UmVhZGVyLkVYVF9WQUxJREFUT1IpCi0gICAgICAucmVhZFJlZ2lzdHJ5KCk7Ci0KLSAgICAvLyByZWdpc3RlciBhbnkgV1NETCAxLjEgdmFsaWRhdG9ycyBkZWZpbmVkCi0gICAgbmV3IFdTREwxMVZhbGlkYXRvclBsdWdpblJlZ2lzdHJ5UmVhZGVyKCJ3c2RsMTF2YWxpZGF0b3IiLCAidmFsaWRhdG9yIikucmVhZFJlZ2lzdHJ5KCk7Ci0gIH0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVBY3RpdmF0b3Ijc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBzdXBlci5zdG9wKGNvbnRleHQpOwotICAgIFhNTENhdGFsb2cucmVzZXQoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybiB0aGUgaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4gb2JqZWN0LgotICAgKiAKLSAgICogQHJldHVybiB0aGUgaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW4gb2JqZWN0Ci0gICAqLwotICBwdWJsaWMgc3RhdGljIFZhbGlkYXRlV1NETFBsdWdpbiBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBpbnN0YWxsIFVSTCBvZiB0aGlzIHBsdWdpbi4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIGluc3RhbGwgdXJsIG9mIHRoaXMgcGx1Z2luCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEluc3RhbGxVUkwoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgcmV0dXJuIEZpbGVMb2NhdG9yLnJlc29sdmUoZ2V0QnVuZGxlKCkuZ2V0RW50cnkoIi8iKSkuZ2V0RmlsZSgpOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gIH0KLQotICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgKiBSZXNvdXJjZUJ1bmRsZSBoZWxwZXIgbWV0aG9kcwotICAgKiAKLSAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXNvdXJjZSBidW5kbGUgZm9yIHRoaXMgcGx1Z2luLgotICAgKiAKLSAgICogQHJldHVybiB0aGUgcmVzb3VyY2UgYnVuZGxlIGZvciB0aGlzIHBsdWdpbgotICAgKi8KLSAgcHVibGljIFJlc291cmNlQnVuZGxlIGdldFJlc291cmNlQnVuZGxlKCkKLSAgewotICAgIHJldHVybiByZXNvdXJjZWJ1bmRsZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXNvdXJjZSBidW5kbGUgZm9yIHRoZSBXU0RMIHZhbGlkYXRvci4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIHJlc291cmNlIGJ1bmRsZSBmb3IgdGhlIFdTREwgdmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgUmVzb3VyY2VCdW5kbGUgZ2V0V1NETFZhbGlkYXRvclJlc291cmNlQnVuZGxlKCkKLSAgewotICAgIHJldHVybiB3c2RsVmFsaWRhdG9yUmVzb3VyY2VCdW5kbGU7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gaWQuCi0gICAqIAotICAgKiBAcGFyYW0gc3RyaW5nSUQgLSB0aGUgaWQgZm9yIHRoZSBzdHJpbmcKLSAgICogQHJldHVybiB0aGUgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gaWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RyaW5nKFN0cmluZyBzdHJpbmdJRCkKLSAgewotICAgIHJldHVybiBnZXRSZXNvdXJjZUJ1bmRsZSgpLmdldFN0cmluZyhzdHJpbmdJRCk7Ci0gIH0KLX0KLQotLyoqCi0gKiBUaGlzIGNsYXNzIHJlYWRzIHRoZSBwbHVnaW4gbWFuaWZlc3RzIGFuZCByZWdpc3RlcnMgZWFjaCBXU0RMRXh0ZW5zaW9uVmFsaWRhdG9yCi0gKi8KLWNsYXNzIFdTRExWYWxpZGF0b3JQbHVnaW5SZWdpc3RyeVJlYWRlcgotewotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBQTFVHSU5fSUQgPSAib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbiI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVF9DTEFTUyA9ICJjbGFzcyI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVF9OQU1FU1BBQ0UgPSAibmFtZXNwYWNlIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgV1NETF9WQUxJREFUT1IgPSAwOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBFWFRfVkFMSURBVE9SID0gMTsKLSAgcHJvdGVjdGVkIFN0cmluZyBleHRlbnNpb25Qb2ludElkOwotICBwcm90ZWN0ZWQgU3RyaW5nIHRhZ05hbWU7Ci0gIHByb3RlY3RlZCBpbnQgdmFsaWRhdG9yVHlwZTsKLQotICAvKioKLSAgICogCi0gICAqLwotICBwdWJsaWMgV1NETFZhbGlkYXRvclBsdWdpblJlZ2lzdHJ5UmVhZGVyKFN0cmluZyBleHRlbnNpb25Qb2ludElkLCBTdHJpbmcgdGFnTmFtZSwgaW50IHZhbGlkYXRvclR5cGUpCi0gIHsKLSAgICB0aGlzLmV4dGVuc2lvblBvaW50SWQgPSBleHRlbnNpb25Qb2ludElkOwotICAgIHRoaXMudGFnTmFtZSA9IHRhZ05hbWU7Ci0gICAgdGhpcy52YWxpZGF0b3JUeXBlID0gdmFsaWRhdG9yVHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiByZWFkIGZyb20gcGx1Z2luIHJlZ2lzdHJ5IGFuZCBwYXJzZSBpdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlYWRSZWdpc3RyeSgpCi0gIHsKLSAgICBJRXh0ZW5zaW9uUmVnaXN0cnkgcGx1Z2luUmVnaXN0cnkgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotICAgIElFeHRlbnNpb25Qb2ludCBwb2ludCA9IHBsdWdpblJlZ2lzdHJ5LmdldEV4dGVuc2lvblBvaW50KFBMVUdJTl9JRCwgZXh0ZW5zaW9uUG9pbnRJZCk7Ci0gICAgaWYgKHBvaW50ICE9IG51bGwpCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gZWxlbWVudHMgPSBwb2ludC5nZXRDb25maWd1cmF0aW9uRWxlbWVudHMoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIHJlYWRFbGVtZW50KGVsZW1lbnRzW2ldKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogcmVhZEVsZW1lbnQoKSAtIHBhcnNlIGFuZCBkZWFsIHdpdGggYW4gZXh0ZW5zaW9uIGxpa2U6Ci0gICAqCi0gICAqIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLnZhbGlkYXRlLndzZGwuV1NETEV4dGVuc2lvblZhbGlkYXRvciIKLSAgICogICAgICAgICAgICBpZD0ic29hcFZhbGlkYXRvciIKLSAgICogICAgICAgICAgICBuYW1lPSJTT0FQIFZhbGlkYXRvciI+PgotICAgKiAgIDx2YWxpZGF0b3I+Ci0gICAqICAgICAgICA8cnVuIGNsYXNzPSIgb3JnLmVjbGlwc2UudmFsaWRhdGUud3NkbC5zb2FwLlNPQVBWYWxpZGF0b3IiLz4KLSAgICogICA8L3ZhbGlkYXRvcj4KLSAgICogICA8YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIgdmFsdWU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iLz4KLSAgICogPC9leHRlbnNpb24+Ci0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCByZWFkRWxlbWVudChJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCkKLSAgewotICAgIGlmIChlbGVtZW50LmdldE5hbWUoKS5lcXVhbHModGFnTmFtZSkpCi0gICAgewotICAgICAgU3RyaW5nIHZhbGlkYXRvckNsYXNzID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoQVRUX0NMQVNTKTsKLSAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShBVFRfTkFNRVNQQUNFKTsKLQotICAgICAgaWYgKHZhbGlkYXRvckNsYXNzICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgLy8gICAgICAgICAgQ2xhc3NMb2FkZXIgcGx1Z2luTG9hZGVyID0KLSAgICAgICAgICAvLyAgICAgICAgICAgIGVsZW1lbnQuZ2V0RGVjbGFyaW5nRXh0ZW5zaW9uKCkuZ2V0RGVjbGFyaW5nUGx1Z2luRGVzY3JpcHRvcigpLmdldFBsdWdpbigpLmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKTsKLSAgICAgICAgICAvLwkJCQltb2RpZmllZCB0byByZXNvbHZlIGNlcnRhaW4gc2l0dWF0aW9ucyB3aGVyZSB0aGUgcGx1Z2luIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZAotCi0gICAgICAgICAgQnVuZGxlIHBsdWdpbkJ1bmRsZSA9IFBsYXRmb3JtLmdldEJ1bmRsZShlbGVtZW50LmdldERlY2xhcmluZ0V4dGVuc2lvbigpLmdldENvbnRyaWJ1dG9yKCkuZ2V0TmFtZSgpKTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZiAodmFsaWRhdG9yVHlwZSA9PSBFWFRfVkFMSURBVE9SKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICBFY2xpcHNlV1NETFZhbGlkYXRvckRlbGVnYXRlIGRlbGVnYXRlID0gbmV3IEVjbGlwc2VXU0RMVmFsaWRhdG9yRGVsZWdhdGUodmFsaWRhdG9yQ2xhc3MsIHBsdWdpbkJ1bmRsZSk7Ci0gICAgICAgICAgICBXU0RMVmFsaWRhdG9yLmdldEluc3RhbmNlKCkucmVnaXN0ZXJXU0RMRXh0ZW5zaW9uVmFsaWRhdG9yKG5hbWVzcGFjZSwgZGVsZWdhdGUpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotfQotCi0vKioKLSAqIFJlYWQgV1NEbCAxLjEgZXh0ZW5zaW9uIHZhbGlkYXRvcnMuCi0gKiAKLSAqICA8ZXh0ZW5zaW9uCi0gKiAgICAgcG9pbnQ9ImNvbS5pYm0uZXRvb2xzLnZhbGlkYXRpb24udmFsaWRhdG9yIgotICogICAgIGlkPSJ3c2RsVmFsaWRhdG9yIgotICogICAgIG5hbWU9IiVfVUlfV1NETF9WQUxJREFUT1IiPgotICogICAgPHdzZGwxMXZhbGlkYXRvcgotICogICAgICAgbmFtZXNwYWNlPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotICogICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzZGwudmFsaWRhdGUuc29hcC53c2RsMTEuU09BUFZhbGlkYXRvciIKLSAqICAgICAgIHJlc291cmNlYnVuZGxlPSJ2YWxpZGF0ZXdzZGxzb2FwIi8+Ci0gKiAgIDwvZXh0ZW5zaW9uPgotICogIAotICovCi1jbGFzcyBXU0RMMTFWYWxpZGF0b3JQbHVnaW5SZWdpc3RyeVJlYWRlcgotewotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBQTFVHSU5fSUQgPSAib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbiI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVF9DTEFTUyA9ICJjbGFzcyI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVF9OQU1FU1BBQ0UgPSAibmFtZXNwYWNlIjsKLSAgcHJvdGVjdGVkIFN0cmluZyBleHRlbnNpb25Qb2ludElkOwotICBwcm90ZWN0ZWQgU3RyaW5nIHRhZ05hbWU7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiAKLSAgICogQHBhcmFtIGV4dGVuc2lvblBvaW50SWQgLSB0aGUgaWQgb2YgdGhlIGV4dGVuc2lvbiBwb2ludAotICAgKiBAcGFyYW0gdGFnTmFtZSAtIHRoZSB0YWcgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHBvaW50Ci0gICAqLwotICBwdWJsaWMgV1NETDExVmFsaWRhdG9yUGx1Z2luUmVnaXN0cnlSZWFkZXIoU3RyaW5nIGV4dGVuc2lvblBvaW50SWQsIFN0cmluZyB0YWdOYW1lKQotICB7Ci0gICAgdGhpcy5leHRlbnNpb25Qb2ludElkID0gZXh0ZW5zaW9uUG9pbnRJZDsKLSAgICB0aGlzLnRhZ05hbWUgPSB0YWdOYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlYWQgZnJvbSBwbHVnaW4gcmVnaXN0cnkgYW5kIGhhbmRsZSB0aGUgY29uZmlndXJhdGlvbiBlbGVtZW50cyB0aGF0IG1hdGNoCi0gICAqIHRoZSBzcGVkaWZpZWQgZWxlbWVudHMuCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWFkUmVnaXN0cnkoKQotICB7Ci0gICAgSUV4dGVuc2lvblJlZ2lzdHJ5IHBsdWdpblJlZ2lzdHJ5ID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLSAgICBJRXh0ZW5zaW9uUG9pbnQgcG9pbnQgPSBwbHVnaW5SZWdpc3RyeS5nZXRFeHRlbnNpb25Qb2ludChQTFVHSU5fSUQsIGV4dGVuc2lvblBvaW50SWQpOwotICAgIGlmIChwb2ludCAhPSBudWxsKQotICAgIHsKLSAgICAgIElDb25maWd1cmF0aW9uRWxlbWVudFtdIGVsZW1lbnRzID0gcG9pbnQuZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICByZWFkRWxlbWVudChlbGVtZW50c1tpXSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIGFuZCBkZWFsIHdpdGggdGhlIGV4dGVuc2lvbiBwb2ludHMuCi0gICAqIAotICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgZXh0ZW5zaW9uIHBvaW50IGVsZW1lbnQuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCByZWFkRWxlbWVudChJQ29uZmlndXJhdGlvbkVsZW1lbnQgZWxlbWVudCkKLSAgewotICAgIGlmIChlbGVtZW50LmdldE5hbWUoKS5lcXVhbHModGFnTmFtZSkpCi0gICAgewotICAgICAgU3RyaW5nIHZhbGlkYXRvckNsYXNzID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoQVRUX0NMQVNTKTsKLSAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShBVFRfTkFNRVNQQUNFKTsKLQotICAgICAgaWYgKHZhbGlkYXRvckNsYXNzICE9IG51bGwgJiYgbmFtZXNwYWNlICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgQnVuZGxlIHBsdWdpbkJ1bmRsZSA9IFBsYXRmb3JtLmdldEJ1bmRsZShlbGVtZW50LmdldERlY2xhcmluZ0V4dGVuc2lvbigpLmdldENvbnRyaWJ1dG9yKCkuZ2V0TmFtZSgpKTsKLSAgICAgICAgICBXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZSBkZWxlZ2F0ZSA9IG5ldyBFY2xpcHNlV1NETDExVmFsaWRhdG9yRGVsZWdhdGUodmFsaWRhdG9yQ2xhc3MsIHBsdWdpbkJ1bmRsZSk7Ci0gICAgICAgICAgV1NETFZhbGlkYXRvci5nZXRJbnN0YW5jZSgpLnJlZ2lzdGVyV1NETDExVmFsaWRhdG9yKG5hbWVzcGFjZSwgZGVsZWdhdGUpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci19Ci0KLQotCi0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9lY2xpcHNlL1ZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NDU3NTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2U7Ci0KLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnV0aWwuWE1MR3JhbW1hclBvb2xJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5YTUxHcmFtbWFyUG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLkNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uUmVwb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuV1NETFZhbGlkYXRpb25Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuQWJzdHJhY3ROZXN0ZWRWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5OZXN0ZWRWYWxpZGF0b3JDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuVmFsaWRhdGlvbkluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5WYWxpZGF0aW9uUmVwb3J0OwotCi0vKioKLSAqIEEgV1NETCB2YWxpZGF0b3IgdG8gY29udHJpYnV0ZSB0byB0aGUgV1RQIHZhbGlkYXRpb24gZnJhbWV3b3JrLgotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdG9yIGV4dGVuZHMgQWJzdHJhY3ROZXN0ZWRWYWxpZGF0b3IgCi17Ci0gIHByb3RlY3RlZCBIYXNoTWFwIHhzZEdyYW1tYXJQb29scyA9IG5ldyBIYXNoTWFwKCk7Ci0gIHByb3RlY3RlZCBIYXNoTWFwIHhtbEdyYW1tYXJQb29scyA9IG5ldyBIYXNoTWFwKCk7Ci0KLSAgLyoqIAotICAgKiBDcmVhdGUgYW5kIGNvbmZpZ3VyZSB0aGUgdHdvIGdyYW1tYXIgcG9vbHMgZm9yIHRoaXMgV1NETCB2YWxpZGF0aW9uIGNvbnRleHQuCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuQWJzdHJhY3ROZXN0ZWRWYWxpZGF0b3Ijc2V0dXBWYWxpZGF0aW9uKG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuTmVzdGVkVmFsaWRhdG9yQ29udGV4dCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldHVwVmFsaWRhdGlvbihOZXN0ZWRWYWxpZGF0b3JDb250ZXh0IGNvbnRleHQpIAotICB7Ci0Jc3VwZXIuc2V0dXBWYWxpZGF0aW9uKGNvbnRleHQpOwotICAgIAotCVhNTEdyYW1tYXJQb29sIHhzZEdyYW1tYXJQb29sID0gbmV3IElubGluZVNjaGVtYU1vZGVsR3JhbW1hclBvb2xJbXBsKCk7Ci0JWE1MR3JhbW1hclBvb2wgeG1sR3JhbW1hclBvb2wgPSBuZXcgWE1MR3JhbW1hclBvb2xJbXBsKCk7Ci0JCi0JeHNkR3JhbW1hclBvb2xzLnB1dChjb250ZXh0LCB4c2RHcmFtbWFyUG9vbCk7Ci0JeG1sR3JhbW1hclBvb2xzLnB1dChjb250ZXh0LCB4bWxHcmFtbWFyUG9vbCk7Ci0gIH0KLQotICAvKioKLSAgICogUmVtb3ZlIHR3byBncmFtbWFyIHBvb2xzIGZvciB0aGlzIFdTREwgdmFsaWRhdGlvbiBjb250ZXh0LgotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QueG1sLmNvcmUuaW50ZXJuYWwudmFsaWRhdGlvbi5jb3JlLkFic3RyYWN0TmVzdGVkVmFsaWRhdG9yI3RlYXJkb3duVmFsaWRhdGlvbihvcmcuZWNsaXBzZS53c3QueG1sLmNvcmUuaW50ZXJuYWwudmFsaWRhdGlvbi5jb3JlLk5lc3RlZFZhbGlkYXRvckNvbnRleHQpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB0ZWFyZG93blZhbGlkYXRpb24oTmVzdGVkVmFsaWRhdG9yQ29udGV4dCBjb250ZXh0KSAKLSAgewotICAgIFhNTEdyYW1tYXJQb29sIHhzZEdyYW1tYXJQb29sID0gKFhNTEdyYW1tYXJQb29sKXhzZEdyYW1tYXJQb29scy5yZW1vdmUoY29udGV4dCk7Ci0gICAgaWYoeHNkR3JhbW1hclBvb2wgIT0gbnVsbCkKLSAgICAgIHhzZEdyYW1tYXJQb29sLmNsZWFyKCk7Ci0gICAgWE1MR3JhbW1hclBvb2wgeG1sR3JhbW1hclBvb2wgPSAoWE1MR3JhbW1hclBvb2wpeG1sR3JhbW1hclBvb2xzLnJlbW92ZShjb250ZXh0KTsKLSAgICBpZih4bWxHcmFtbWFyUG9vbCAhPSBudWxsKQotICAgICAgeG1sR3JhbW1hclBvb2wuY2xlYXIoKTsKLSAgICAKLSAgICBzdXBlci50ZWFyZG93blZhbGlkYXRpb24oY29udGV4dCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5BYnN0cmFjdE5lc3RlZFZhbGlkYXRvciN2YWxpZGF0ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmlvLklucHV0U3RyZWFtLCBvcmcuZWNsaXBzZS53c3QueG1sLmNvcmUuaW50ZXJuYWwudmFsaWRhdGlvbi5jb3JlLk5lc3RlZFZhbGlkYXRvckNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgVmFsaWRhdGlvblJlcG9ydCB2YWxpZGF0ZShTdHJpbmcgdXJpLCBJbnB1dFN0cmVhbSBpbnB1dHN0cmVhbSwgTmVzdGVkVmFsaWRhdG9yQ29udGV4dCBjb250ZXh0KSAKLSAgewotCVhNTEdyYW1tYXJQb29sIHhzZEdyYW1tYXJQb29sID0gKFhNTEdyYW1tYXJQb29sKXhzZEdyYW1tYXJQb29scy5nZXQoY29udGV4dCk7Ci0JWE1MR3JhbW1hclBvb2wgeG1sR3JhbW1hclBvb2wgPSAoWE1MR3JhbW1hclBvb2wpeG1sR3JhbW1hclBvb2xzLmdldChjb250ZXh0KTsKLQkKLQlXU0RMVmFsaWRhdG9yIHZhbGlkYXRvciA9IFdTRExWYWxpZGF0b3IuZ2V0SW5zdGFuY2UoKTsKLQkKLQlXU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IG5ldyBXU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24oKTsKLQljb25maWd1cmF0aW9uLnNldFByb3BlcnR5KENvbnN0YW50cy5YTUxTQ0hFTUFfQ0FDSEVfQVRUUklCVVRFLCB4c2RHcmFtbWFyUG9vbCk7Ci0gICAgY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eShDb25zdGFudHMuWE1MX0NBQ0hFX0FUVFJJQlVURSwgeG1sR3JhbW1hclBvb2wpOwotCi0JSVZhbGlkYXRpb25SZXBvcnQgdmFscmVwb3J0ID0gbnVsbDsKLQlpZiAoaW5wdXRzdHJlYW0gIT0gbnVsbCkKLQl7Ci0JICB2YWxyZXBvcnQgPSB2YWxpZGF0b3IudmFsaWRhdGUodXJpLCBpbnB1dHN0cmVhbSwgY29uZmlndXJhdGlvbik7Ci0JfQotCWVsc2UKLQl7Ci0JICB2YWxyZXBvcnQgPSB2YWxpZGF0b3IudmFsaWRhdGUodXJpLCBudWxsLCBjb25maWd1cmF0aW9uKTsKLQl9Ci0JCQkgICAgICAgIAotCXJldHVybiBjb252ZXJ0UmVwb3J0VG9YTUxSZXBvcnQodmFscmVwb3J0KTsKLSAgfQotICAKLSAgLyoqCi0gICAqIENvbnZlcnQgYSBXU0RMIElWYWxpZGF0aW9uUmVwb3J0IHRvIGFuIFhNTCBWYWxpZGF0aW9uIFJlcG9ydC4KLSAgICogCi0gICAqIEBwYXJhbSByZXBvcnQgCi0gICAqIAkJVGhlIFdTREwgSVZhbGlkYXRpb25SZXBvcnQgdG8gY29udmVydC4KLSAgICogQHJldHVybiAKLSAgICogCQlBbiBYTUwgVmFsaWRhdGlvbiBSZXBvcnQgcmVwcmVzZW50aW5nIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhlIElWYWxpZGF0aW9uUmVwb3J0LgotICAgKi8KLSAgcHJvdGVjdGVkIFZhbGlkYXRpb25SZXBvcnQgY29udmVydFJlcG9ydFRvWE1MUmVwb3J0KElWYWxpZGF0aW9uUmVwb3J0IHJlcG9ydCkKLSAgewotCVZhbGlkYXRpb25JbmZvIGNvbnZlcnRlZFJlcG9ydCA9IG5ldyBWYWxpZGF0aW9uSW5mbyhyZXBvcnQuZ2V0RmlsZVVSSSgpKTsKLQlJVmFsaWRhdGlvbk1lc3NhZ2VbXSBtZXNzYWdlcyA9IHJlcG9ydC5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKTsKLQlpbnQgbnVtTWVzc2FnZXMgPSBtZXNzYWdlcy5sZW5ndGg7Ci0JZm9yKGludCBpID0gMDsgaSA8IG51bU1lc3NhZ2VzOyBpKyspCi0JewotCSAgY29udmVydE1lc3NhZ2UobWVzc2FnZXNbaV0sIGNvbnZlcnRlZFJlcG9ydCk7Ci0JfQotCi0JcmV0dXJuIGNvbnZlcnRlZFJlcG9ydDsKLSAgfQotICAKLSAgLyoqCi0gICAqIENvbnZlcnQgYSBXU0RMIElWYWxpZGF0aW9uTWVzc2FnZSBieSByZXBvcnRpbmcgaXQgaW4gdGhlIFZhbGlkYXRpb25JbmZvIG9iamVjdC4KLSAgICogCi0gICAqIEBwYXJhbSBtZXNzYWdlCi0gICAqIAkJVGhlIElWYWxpZGF0aW9uTWVzc2FnZSB0byBjb252ZXJ0LgotICAgKiBAcGFyYW0gY29udmVydGVkUmVwb3J0Ci0gICAqIAkJVGhlIFZhbGlkYXRpb25JbmZvIG9iamVjdCByZXByZXN0aW5nIHRoZSBjb252ZXJ0ZWQgcmVwb3J0LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgY29udmVydE1lc3NhZ2UoSVZhbGlkYXRpb25NZXNzYWdlIG1lc3NhZ2UsIFZhbGlkYXRpb25JbmZvIGNvbnZlcnRlZFJlcG9ydCkKLSAgewotCUxpc3QgbmVzdGVkTWVzc2FnZXMgPSBtZXNzYWdlLmdldE5lc3RlZE1lc3NhZ2VzKCk7Ci0JaWYobmVzdGVkTWVzc2FnZXMgIT0gbnVsbCAmJiBuZXN0ZWRNZXNzYWdlcy5zaXplKCkgPiAwKQotCXsKLQkgIEl0ZXJhdG9yIG1lc3NhZ2VJdGVyID0gbmVzdGVkTWVzc2FnZXMuaXRlcmF0b3IoKTsKLQkgIHdoaWxlKG1lc3NhZ2VJdGVyLmhhc05leHQoKSkKLQkgIHsKLQkJY29udmVydE1lc3NhZ2UoKElWYWxpZGF0aW9uTWVzc2FnZSltZXNzYWdlSXRlci5uZXh0KCksIGNvbnZlcnRlZFJlcG9ydCk7Ci0JICB9Ci0JfQotCWVsc2UKLQl7Ci0JICBpZihtZXNzYWdlLmdldFNldmVyaXR5KCkgPT0gSVZhbGlkYXRpb25NZXNzYWdlLlNFVl9XQVJOSU5HKQotCSAgICBjb252ZXJ0ZWRSZXBvcnQuYWRkV2FybmluZyhtZXNzYWdlLmdldE1lc3NhZ2UoKSwgbWVzc2FnZS5nZXRMaW5lKCksIG1lc3NhZ2UuZ2V0Q29sdW1uKCksIG1lc3NhZ2UuZ2V0VVJJKCkpOwotCSAgZWxzZQotCQljb252ZXJ0ZWRSZXBvcnQuYWRkRXJyb3IobWVzc2FnZS5nZXRNZXNzYWdlKCksIG1lc3NhZ2UuZ2V0TGluZSgpLCBtZXNzYWdlLmdldENvbHVtbigpLCBtZXNzYWdlLmdldFVSSSgpKTsKLQl9Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5BYnN0cmFjdE5lc3RlZFZhbGlkYXRvciNnZXRWYWxpZGF0b3JJRCgpCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGdldFZhbGlkYXRvcklEKCkKLSAgewotICAgIC8vIEJlY2F1c2UgdGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgZGVsZWdhdGUsIHJldHVybiB0aGUgaWQgb2YgdGhlIHZhbGlkYXRvcgotICAgIC8vIHdoaWNoIGRlbGVnYXRlcyB0byB0aGlzIGNsYXNzLgotIAotICAgIHJldHVybiBXU0RMRGVsZWdhdGluZ1ZhbGlkYXRvci5jbGFzcy5nZXROYW1lKCk7IC8vJE5PTi1OTFMtMSQKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvV1NETERlbGVnYXRpbmdWYWxpZGF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9lY2xpcHNlL1dTRExEZWxlZ2F0aW5nVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMjBkNGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvV1NETERlbGVnYXRpbmdWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5lY2xpcHNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwuZGVsZWdhdGVzLkRlbGVnYXRpbmdWYWxpZGF0b3I7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHVuaXF1ZSBuYW1lIChjbGFzcyBuYW1lKSB3aGljaCB0aGUgdmFsaWRhdGlvbiBmcmFtZXdvcmsKLSAqIHdpbGwgdXNlIHRvIGlkZW50aWZ5IHRoZSBXU0RMIHZhbGlkYXRvci4gVGhlIGFjdHVhbCBkZWxlZ2F0aW5nIHZhbGlkYXRvcgotICogZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBieSB0aGUgYmFzZSBjbGFzcy4gVGhlIGFjdHVhbCB2YWxpZGF0aW9uCi0gKiBmdW5jdGlvbmFsaXR5IGlzIHByb3ZpZGVkIGJ5IHRoZSBkZWxlZ2F0ZXMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgY2xhc3MgYXMKLSAqIHRoZWlyIHRhcmdldC4KLSAqLwotcHVibGljIGNsYXNzIFdTRExEZWxlZ2F0aW5nVmFsaWRhdG9yIGV4dGVuZHMgRGVsZWdhdGluZ1ZhbGlkYXRvcgotewotICAvKioKLSAgICogRGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgICovCi0gIHB1YmxpYyBXU0RMRGVsZWdhdGluZ1ZhbGlkYXRvcigpCi0gIHsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvV1NETFZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvV1NETFZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTM1YjZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9lY2xpcHNlL1dTRExWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2U7Ci0KLQotCi0vKioKLSAqIEFuIEVjbGlwc2UgV1NETCB2YWxpZGF0b3IuIFRoaXMgdmFsaWRhdG9yIGlzIHRoZSBkZWZhdWx0IHZhbGlkYXRvcgotICogdXNlZCBpbiB0aGUgdmFsaWRhdGlvbiBmcmFtZXdvcmsuIFRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgaW5zdGFuY2Ugb2YKLSAqIHRoaXMgdmFsaWRhdG9yLiBXaGVuIGNyZWF0ZWQsIHRoaXMgdmFsaWRhdG9yIHJlZ2lzdGVycyBhbGwgZXh0ZW5zaW9uCi0gKiBVUkkgcmVzb2x2ZXJzLgotICovCi1wdWJsaWMgY2xhc3MgV1NETFZhbGlkYXRvciBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuV1NETFZhbGlkYXRvcgotewotCXByaXZhdGUgc3RhdGljIFdTRExWYWxpZGF0b3IgaW5zdGFuY2UgPSBudWxsOwotCi0JLyoqCi0JICogVGhlIGNvbnN0cnVjdG9yIHJlZ2lzdGVycyBhbGwgb2YgdGhlIFVSSSByZXNvbHZlcnMgZGVmaW5lZCB2aWEgdGhlCi0JICogV1NETCBVUkkgcmVzb2x2ZXIgZXh0ZW5zaW9uIHBvaW50IHdpdGggdGhlIFdTREwgdmFsaWRhdG9yLiAKLQkgKiAKLQkgKi8KLQlwcm90ZWN0ZWQgV1NETFZhbGlkYXRvcigpCi0JewotICAgICAgc3VwZXIoKTsKLSAgICAgIFVSSVJlc29sdmVyV3JhcHBlciByZXNvbHZlciA9IG5ldyBVUklSZXNvbHZlcldyYXBwZXIoKTsKLSAgICAgIGFkZFVSSVJlc29sdmVyKHJlc29sdmVyKTsKLQl9Ci0JCi0JLyoqCi0JICogR2V0IHRoZSBvbmUgYW5kIG9ubHkgaW5zdGFuY2Ugb2YgdGhpcyBFY2xpcHNlIFdTREwgdmFsaWRhdG9yLgotCSAqIAotCSAqIEByZXR1cm4gVGhlIG9uZSBhbmQgb25seSBpbnN0YW5jZSBvZiB0aGlzIEVjbGlwc2UgV1NETCB2YWxpZGF0b3IuCi0JICovCi0JcHVibGljIHN0YXRpYyBXU0RMVmFsaWRhdG9yIGdldEluc3RhbmNlKCkKLQl7Ci0JCWlmKGluc3RhbmNlID09IG51bGwpCi0JCXsKLQkJCWluc3RhbmNlID0gbmV3IFdTRExWYWxpZGF0b3IoKTsKLQkJfQotCQlyZXR1cm4gaW5zdGFuY2U7Ci0JfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZXhjZXB0aW9uL1ZhbGlkYXRlV1NETEV4Y2VwdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2V4Y2VwdGlvbi9WYWxpZGF0ZVdTRExFeGNlcHRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNkMWI0OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZXhjZXB0aW9uL1ZhbGlkYXRlV1NETEV4Y2VwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5leGNlcHRpb247Ci0KLS8qKgotICogQ3VzdG9tIGV4Y2VwdGlvbiBmb3IgV1NETCB2YWxpZGF0aW9uLgotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVXU0RMRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uCi17Ci0JLyoqCi0gICAqIFJlcXVpcmVkIHNlcmlhbCB2ZXJzaW9uIHVpZC4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogCi0gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBleGNlcHRpb24gbWVzc2FnZQotICAgKi8KLSAgcHVibGljIFZhbGlkYXRlV1NETEV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkKLQl7Ci0JICBzdXBlcihtZXNzYWdlKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvbG9nZ2luZy9JTG9nZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvbG9nZ2luZy9JTG9nZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2YWU4OTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2xvZ2dpbmcvSUxvZ2dlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmc7Ci0KLS8qKgotICogVGhlIGludGVyZmFjZSBmb3IgYSBzdGFuZGFyZCBsb2dnZXIgZm9yIHRoZSBXU0RMIHZhbGlkYXRvci4gCi0gKiBBbGxvd3MgZm9yIGxvZ2dpbmcgZXJyb3JzIGFuZCB3YXJuaW5ncy4KLSAqLwotcHVibGljIGludGVyZmFjZSBJTG9nZ2VyCi17Ci0gIC8qKgotICAgKiBTZXZlcml0eSBlcnJvciBmb3IgbG9nZ2luZy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IFNFVl9FUlJPUiA9IDA7Ci0gIAotICAvKioKLSAgICogU2V2ZXJpdHkgd2FybmluZyBmb3IgbG9nZ2luZy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IFNFVl9XQVJOSU5HID0gMTsKLSAgCi0gIC8qKgotICAgKiBTZXZlcml0eSBpbmZvIGZvciBsb2dnaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBpbnQgU0VWX0lORk8gPSAyOwotICAKLSAgLyoqCi0gICAqIFNldmVyaXR5IHZlcmJvc2UgZm9yIGxvZ2dpbmcuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGludCBTRVZfVkVSQk9TRSA9IDM7Ci0gIAotICAvKioKLSAgICogTG9nIGEgbWVzc2FnZS4KLSAgICogCi0gICAqIEBwYXJhbSBtZXNzYWdlIAotICAgKiAJCVRoZSBtZXNzYWdlIHRvIGxvZy4KLSAgICogQHBhcmFtIHNldmVyaXR5Ci0gICAqIAkJVGhlIHNldmVyaXR5IG9mIHRoZSBtZXNzYWdlIHRvIGxvZy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGxvZyhTdHJpbmcgbWVzc2FnZSwgaW50IHNldmVyaXR5KTsKLSAgCi0gIC8qKgotICAgKiBMb2cgYSBtZXNzYWdlLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2UgCi0gICAqIAkJVGhlIG1lc3NhZ2UgdG8gbG9nLgotICAgKiBAcGFyYW0gc2V2ZXJpdHkKLSAgICogCQlUaGUgc2V2ZXJpdHkgb2YgdGhlIG1lc3NhZ2UgdG8gbG9nLgotICAgKiBAcGFyYW0gdGhyb3dhYmxlIAotICAgKiAJCVRoZSBleGNlcHRpb24gdG8gbG9nLgotICAgKi8KLSAgcHVibGljIHZvaWQgbG9nKFN0cmluZyBtZXNzYWdlLCBpbnQgc2V2ZXJpdHksIFRocm93YWJsZSB0aHJvd2FibGUpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2xvZ2dpbmcvTG9nZ2VyRmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2xvZ2dpbmcvTG9nZ2VyRmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2E5ZDVmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9sb2dnaW5nL0xvZ2dlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nOwotCi0vKioKLSAqIFRoZSBsb2dnZXIgZmFjdG9yeSBhbGxvd3MgZm9yIHNpbXBsZSB1c2Ugb2Ygd2hhdGV2ZXIgbG9nZ2luZyBtZWNoYW5pc20gaXMgaW4KLSAqIHBsYWNlLiBUaGUgdG9vbCBjYW4gc3BlY2lmeSBhIGN1c3RvbSBJTG9nZ2VyLiBUaGUgV1NETCB2YWxpZGF0b3Igd2lsbCByZXF1ZXN0IHRoZQotICogbG9nZ2VyIGZyb20gdGhpcyBjbGFzcy4KLSAqLwotcHVibGljIGNsYXNzIExvZ2dlckZhY3RvcnkKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyRmFjdG9yeSBmYWN0b3J5ID0gbnVsbDsKLSAgcHJpdmF0ZSBJTG9nZ2VyIGxvZ2dlciAgPSBudWxsOwotCi0gIC8qKgotICAgKiBHZXQgdGhlIG9uZSBhbmQgb25seSBpbnN0YW5jZSBvZiB0aGUgbG9nZ2VyIGZhY3RvcnkuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBvbmUgYW5kIG9ubHkgaW5zdGFuY2Ugb2YgdGhlIGxvZ2dlci4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgTG9nZ2VyRmFjdG9yeSBnZXRJbnN0YW5jZSgpCi0gIHsKLQlpZihmYWN0b3J5ID09IG51bGwpCi0JewotCSAgZmFjdG9yeSA9IG5ldyBMb2dnZXJGYWN0b3J5KCk7Ci0JfQotCXJldHVybiBmYWN0b3J5OwotICB9Ci0gIAotICAvKioKLSAgICogU2V0IHRoZSBsb2dnZXIgaW1wbGVtZW50YXRpb24gdG8gYmUgdXNlZC4KLSAgICogCi0gICAqIEBwYXJhbSBsb2dnZXIKLSAgICogICAgICAgICAgICBUaGUgSUxvZ2dlciB0byB1c2UuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMb2dnZXIoSUxvZ2dlciBsb2dnZXIpCi0gIHsKLSAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgbG9nZ2VyLgotICAgKiAKLSAgICogQHJldHVybgotICAgKiAJCVRoZSBsb2dnZXIuCi0gICAqLwotICBwdWJsaWMgSUxvZ2dlciBnZXRMb2dnZXIoKQotICB7Ci0JaWYobG9nZ2VyID09IG51bGwpCi0JewotCSAgbG9nZ2VyID0gbmV3IFN0YW5kYXJkTG9nZ2VyKCk7Ci0JfQotCXJldHVybiBsb2dnZXI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9sb2dnaW5nL1N0YW5kYXJkTG9nZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvbG9nZ2luZy9TdGFuZGFyZExvZ2dlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGMxYjIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9sb2dnaW5nL1N0YW5kYXJkTG9nZ2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nOwotCi1pbXBvcnQgamF2YS5pby5QcmludFN0cmVhbTsKLQotLyoqCi0gKiBBIGxvZ2dlciB0aGF0IHdpbGwgcHJpbnQgbG9nIGluZm8gdG8gc3RhbmRhcmQgc3lzdGVtIG91dHB1dHMuCi0gKi8KLXB1YmxpYyBjbGFzcyBTdGFuZGFyZExvZ2dlciBpbXBsZW1lbnRzIElMb2dnZXIKLXsgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlciNsb2coamF2YS5sYW5nLlN0cmluZywgaW50KQotICAgKi8KLSAgcHVibGljIHZvaWQgbG9nKFN0cmluZyBtZXNzYWdlLCBpbnQgc2V2ZXJpdHkpIAotICB7ICAKLQlQcmludFN0cmVhbSBvdXRwdXRTdHJlYW0gPSBTeXN0ZW0ub3V0OwotCWlmKHNldmVyaXR5ID09IElMb2dnZXIuU0VWX0VSUk9SKQotCXsKLQkgIG91dHB1dFN0cmVhbSA9IFN5c3RlbS5lcnI7Ci0JfQotICAgIG91dHB1dFN0cmVhbS5wcmludGxuKG1lc3NhZ2UpOwotICB9Ci0KLS8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlciNsb2coamF2YS5sYW5nLlN0cmluZywgaW50LCBqYXZhLmxhbmcuVGhyb3dhYmxlKQotICAgKi8KLSAgcHVibGljIHZvaWQgbG9nKFN0cmluZyBlcnJvciwgaW50IHNldmVyaXR5LCBUaHJvd2FibGUgdGhyb3dhYmxlKQotICB7Ci0JbG9nKGVycm9yLCBzZXZlcml0eSk7Ci0JbG9nKHRocm93YWJsZS50b1N0cmluZygpLCBzZXZlcml0eSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9yZXNvbHZlci9JRXh0ZW5zaWJsZVVSSVJlc29sdmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvcmVzb2x2ZXIvSUV4dGVuc2libGVVUklSZXNvbHZlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjlmZGY3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9yZXNvbHZlci9JRXh0ZW5zaWJsZVVSSVJlc29sdmVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlcjsKLQotLyoqCi0gKiBBbiBpbnRlcmZhY2UgZm9yIHRoZSBXU0RMIHZhbGlkYXRvcidzIFVSSSByZXNvbHZlciBtZWNoYW5pc20uIFRoZSBVUkkgcmVzb2x2ZXIKLSAqIGlzIHVzZWQgdG8gZmluZCB0aGUgbG9jYXRpb24gb2YgYW4gZW50aXR5LgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElFeHRlbnNpYmxlVVJJUmVzb2x2ZXIKLXsKLSAvKioKLSAgKiBSZXNvbHZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZW50aXR5IGRlc2NyaWJlZCBieSB0aGUgcHVibGljSWQgYW5kIHN5c3RlbUlkLgotICAqIAotICAqIEBwYXJhbSBiYXNlTG9jYXRpb24gVGhlIGxvY2F0aW9uIG9mIHRoZSByZXNvdXJjZSB0aGF0IGNvbnRhaW5zIHRoZSB1cmkuCi0gICogQHBhcmFtIHB1YmxpY0lkIEFuIG9wdGlvbmFsIHB1YmxpYyBpZGVudGlmaWVyIChpLmUuIG5hbWVzcGFjZSBuYW1lKSwgb3IgbnVsbCBpZiBub25lLgotICAqIEBwYXJhbSBzeXN0ZW1JZCBBbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkksIG9yIG51bGwgaWYgbm9uZS4KLSAgKiBAcGFyYW0gcmVzdWx0IFRoZSByZXN1bHQgb2YgdGhlIHJlc29sdXRpb24uCi0gICovCi0gIHB1YmxpYyB2b2lkIHJlc29sdmUoU3RyaW5nIGJhc2VMb2NhdGlvbiwgU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQsIElVUklSZXNvbHV0aW9uUmVzdWx0IHJlc3VsdCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvcmVzb2x2ZXIvSVVSSVJlc29sdXRpb25SZXN1bHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9yZXNvbHZlci9JVVJJUmVzb2x1dGlvblJlc3VsdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmJmODZjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9yZXNvbHZlci9JVVJJUmVzb2x1dGlvblJlc3VsdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyOwotCi0vKioKLSAqIFRoZSByZXByZXNlbnRhdGlvbiBvZiBhIFVSSSByZXNvbHV0aW9uIHJlc3VsdC4gVGhpcyBpbnRlcmZhY2UgaXMgbm90IG1lYW50IHRvCi0gKiBiZSBpbXBsZW1lbnRlZCBieSBjbGllbnRzLgotICoKLSAqLwotcHVibGljIGludGVyZmFjZSBJVVJJUmVzb2x1dGlvblJlc3VsdCAKLXsKLSAgLyoqCi0gICAqIEdldCB0aGUgbG9naWNhbCBsb2NhdGlvbiBvZiB0aGUgcmVzb2x1dGlvbiByZXN1bHQuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBsb2dpY2FsIGxvY2F0aW9uIG9mIHRoZSByZXNvbHV0aW9uIHJlc3VsdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9naWNhbExvY2F0aW9uKCk7Ci0gIAotICAvKioKLSAgICogU2V0IHRoZSBsb2dpY2FsIGxvY2F0aW9uIG9mIHRoZSByZXNvbHV0aW9uIHJlc3VsdC4KLSAgICogCi0gICAqIEBwYXJhbSBsb2dpY2FsTG9jYXRpb24gVGhlIGxvZ2ljYWwgbG9jYXRpb24gb2YgdGhlIHJlc29sdXRpb24gcmVzdWx0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9naWNhbExvY2F0aW9uKFN0cmluZyBsb2dpY2FsTG9jYXRpb24pOwotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgcGh5c2ljYWwgbG9jYXRpb24gb2YgdGhlIHJlc29sdXRpb24gcmVzdWx0LgotICAgKiAKLSAgICogQHJldHVybiBUaGUgcGh5c2ljYWwgbG9jYXRpb24gb2YgdGhlIHJlc29sdXRpb24gcmVzdWx0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRQaHlzaWNhbExvY2F0aW9uKCk7Ci0gIAotICAvKioKLSAgICogU2V0IHRoZSBwaHlzaWNhbCBsb2NhdGlvbiBvZiB0aGUgcmVzb2x1dGlvbiByZXN1bHQuCi0gICAqIAotICAgKiBAcGFyYW0gcGh5c2ljYWxMb2NhdGlvbiBUaGUgcGh5c2ljYWwgbG9jYXRpb24gb2YgdGhlIHJlc29sdXRpb24gcmVzdWx0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UGh5c2ljYWxMb2NhdGlvbihTdHJpbmcgcGh5c2ljYWxMb2NhdGlvbik7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvcmVzb2x2ZXIvVVJJUmVzb2x1dGlvblJlc3VsdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3Jlc29sdmVyL1VSSVJlc29sdXRpb25SZXN1bHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk4ODk0ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvcmVzb2x2ZXIvVVJJUmVzb2x1dGlvblJlc3VsdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaG9sZHMgdGhlIFVSSSByZXNvbHV0aW9uIHJlc3VsdHMuCi0gKgotICovCi1wdWJsaWMgY2xhc3MgVVJJUmVzb2x1dGlvblJlc3VsdCBpbXBsZW1lbnRzIElVUklSZXNvbHV0aW9uUmVzdWx0Ci17Ci0gIHByaXZhdGUgU3RyaW5nIGxvZ2ljYWxMb2NhdGlvbiA9IG51bGw7Ci0gIHByaXZhdGUgU3RyaW5nIHBoeXNpY2FsTG9jYXRpb24gPSBudWxsOwotICAKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIFVSSVJlc29sdXRpb25SZXN1bHQoKQotICB7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuSVVSSVJlc29sdXRpb25SZXN1bHQjZ2V0TG9naWNhbExvY2F0aW9uKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9naWNhbExvY2F0aW9uKCkKLSAgewotCXJldHVybiBsb2dpY2FsTG9jYXRpb247Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuSVVSSVJlc29sdXRpb25SZXN1bHQjc2V0TG9naWNhbExvY2F0aW9uKGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb24oU3RyaW5nIGxvZ2ljYWxMb2NhdGlvbikKLSAgewotCXRoaXMubG9naWNhbExvY2F0aW9uID0gbG9naWNhbExvY2F0aW9uOwotICB9Ci0gIAotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyLklVUklSZXNvbHV0aW9uUmVzdWx0I2dldFBoeXNpY2FsTG9jYXRpb24oKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRQaHlzaWNhbExvY2F0aW9uKCkKLSAgewotCXJldHVybiBwaHlzaWNhbExvY2F0aW9uOwotICB9Ci0gIAotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyLklVUklSZXNvbHV0aW9uUmVzdWx0I3NldFBoeXNpY2FsTG9jYXRpb24oamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFBoeXNpY2FsTG9jYXRpb24oU3RyaW5nIHBoeXNpY2FsTG9jYXRpb24pCi0gIHsKLQl0aGlzLnBoeXNpY2FsTG9jYXRpb24gPSBwaHlzaWNhbExvY2F0aW9uOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9yZXNvbHZlci9VUklSZXNvbHZlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3Jlc29sdmVyL1VSSVJlc29sdmVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZjM2MzguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3Jlc29sdmVyL1VSSVJlc29sdmVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyODMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXI7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlhNTFJlc291cmNlSWRlbnRpZmllcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE5JRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MRW50aXR5UmVzb2x2ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxJbnB1dFNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnV0aWwuTGF6eVVSTElucHV0U3RyZWFtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sLlhNTENhdGFsb2c7Ci0KLS8qKgotICogVGhpcyBpcyB0aGUgbWFpbiBVUkkgcmVzb2x2ZXIgdGhhdCBjYWxscyBvdXQgdG8gYWxsIG9mIHRoZSByZWdpc3RlcmVkCi0gKiBleHRlcm5hbCBVUkkgcmVzb2x2ZXJzIHRvIGxvY2F0ZSBhbiBlbnRpdHkuIElmIG5vbmUgb2YgdGhlIGV4dGVybmFsIHJlc29sdmVycwotICogY2FuIGxvY2F0ZSB0aGUgZW50aXR5IHRoZSByZXNvbHZlciB3aWxsIGFzayB0aGUgaW50ZXJuYWwgV1NETCB2YWxpZGF0b3IgWE1MCi0gKiBjYXRhbG9nIHRvIHJlc29sdmUgdGhlIGxvY2F0aW9uLgotICovCi1wdWJsaWMgY2xhc3MgVVJJUmVzb2x2ZXIgaW1wbGVtZW50cyBJRXh0ZW5zaWJsZVVSSVJlc29sdmVyLCBYTUxFbnRpdHlSZXNvbHZlcgotewotICBwcml2YXRlIExpc3QgZXh0VVJJUmVzb2x2ZXJzTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuIAotICAgKi8KLSAgcHVibGljIFVSSVJlc29sdmVyKCkKLSAgewotICB9Ci0KLQotICAvKioKLSAgICogQWRkIGFuIGV4dGVuc2lvbiBVUkkgcmVzb2x2ZXIuCi0gICAqIAotICAgKiBAcGFyYW0gdXJpUmVzb2x2ZXIKLSAgICogICAgICAgICAgVGhlIGV4dGVuc2lvbiBVUkkgcmVzb2x2ZXIuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRVUklSZXNvbHZlcihJRXh0ZW5zaWJsZVVSSVJlc29sdmVyIHVyaVJlc29sdmVyKQotICB7Ci0gICAgZXh0VVJJUmVzb2x2ZXJzTGlzdC5hZGQodXJpUmVzb2x2ZXIpOwotICB9Ci0KLSAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuSUV4dGVuc2libGVVUklSZXNvbHZlciNyZXNvbHZlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuSVVSSVJlc29sdXRpb25SZXN1bHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXNvbHZlKFN0cmluZyBiYXNlTG9jYXRpb24sIFN0cmluZyBwdWJsaWNJZCwgU3RyaW5nIHN5c3RlbUlkLCBJVVJJUmVzb2x1dGlvblJlc3VsdCByZXN1bHQpCi0gIHsKLSAgICBJdGVyYXRvciByZXNvbHZlckl0ZXIgPSBleHRVUklSZXNvbHZlcnNMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUocmVzb2x2ZXJJdGVyLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBJRXh0ZW5zaWJsZVVSSVJlc29sdmVyIHJlc29sdmVyID0gKElFeHRlbnNpYmxlVVJJUmVzb2x2ZXIpcmVzb2x2ZXJJdGVyLm5leHQoKTsKLSAgICAgIGlmIChyZXNvbHZlciA9PSBudWxsKQotICAgICAgewotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIHJlc29sdmVyLnJlc29sdmUoYmFzZUxvY2F0aW9uLCBwdWJsaWNJZCwgc3lzdGVtSWQsIHJlc3VsdCk7Ci0gICAgICBpZiAocmVzdWx0LmdldExvZ2ljYWxMb2NhdGlvbigpICE9IG51bGwgJiYgIXJlc3VsdC5nZXRQaHlzaWNhbExvY2F0aW9uKCkuZXF1YWxzKHN5c3RlbUlkKSkKLSAgICAgIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gbG9jYXRlIHRoZSByZXN1bHQgeWV0IGFzayB0aGUgaW50ZXJuYWwgWE1MCi0gICAgLy8gY2F0YWxvZy4KLSAgICBpZiAocmVzdWx0LmdldExvZ2ljYWxMb2NhdGlvbigpID09IG51bGwgJiYgKHB1YmxpY0lkICE9IG51bGwgfHwgc3lzdGVtSWQgIT0gbnVsbCkpCi0gICAgewotICAgICAgU3RyaW5nIHRlbXByZXN1bHQgPSBYTUxDYXRhbG9nLmdldEluc3RhbmNlKCkucmVzb2x2ZUVudGl0eUxvY2F0aW9uKHB1YmxpY0lkLCBzeXN0ZW1JZCk7Ci0gICAgICBpZih0ZW1wcmVzdWx0ICE9IG51bGwpCi0gICAgICB7Ci0gICAgCXJlc3VsdC5zZXRMb2dpY2FsTG9jYXRpb24odGVtcHJlc3VsdCk7Ci0gICAgCXJlc3VsdC5zZXRQaHlzaWNhbExvY2F0aW9uKHRlbXByZXN1bHQpOwotICAgICAgfQotICAgIH0KLSAgICBpZihyZXN1bHQuZ2V0TG9naWNhbExvY2F0aW9uKCkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXN1bHQuc2V0TG9naWNhbExvY2F0aW9uKG5vcm1hbGl6ZShiYXNlTG9jYXRpb24sIHN5c3RlbUlkKSk7Ci0gICAgICByZXN1bHQuc2V0UGh5c2ljYWxMb2NhdGlvbihyZXN1bHQuZ2V0TG9naWNhbExvY2F0aW9uKCkpOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIElVUklSZXNvbHV0aW9uUmVzdWx0IHJlc29sdmUoU3RyaW5nIGJhc2VMb2NhdGlvbiwgU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQpCi0gIHsKLQlJVVJJUmVzb2x1dGlvblJlc3VsdCByZXN1bHQ9IG5ldyBVUklSZXNvbHV0aW9uUmVzdWx0KCk7Ci0JcmVzb2x2ZShiYXNlTG9jYXRpb24sIHB1YmxpY0lkLCBzeXN0ZW1JZCwgcmVzdWx0KTsKLQlyZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTEVudGl0eVJlc29sdmVyI3Jlc29sdmVFbnRpdHkob3JnLmFwYWNoZS54ZXJjZXMueG5pLlhNTFJlc291cmNlSWRlbnRpZmllcikKLSAgICovCi0gIHB1YmxpYyBYTUxJbnB1dFNvdXJjZSByZXNvbHZlRW50aXR5KFhNTFJlc291cmNlSWRlbnRpZmllciByZXNvdXJjZUlkZW50aWZpZXIpIHRocm93cyBYTklFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgcHVibGljSWQgPSByZXNvdXJjZUlkZW50aWZpZXIuZ2V0UHVibGljSWQoKTsKLSAgICBTdHJpbmcgc3lzdGVtSWQgPSByZXNvdXJjZUlkZW50aWZpZXIuZ2V0TGl0ZXJhbFN5c3RlbUlkKCk7Ci0gICAgaWYgKHB1YmxpY0lkID09IG51bGwgfHwgcHVibGljSWQuZXF1YWxzKCIiKSkKLSAgICB7Ci0gICAgICBwdWJsaWNJZCA9IHJlc291cmNlSWRlbnRpZmllci5nZXROYW1lc3BhY2UoKTsKLSAgICB9Ci0gICAgSVVSSVJlc29sdXRpb25SZXN1bHQgcmVzdWx0ID0gcmVzb2x2ZShyZXNvdXJjZUlkZW50aWZpZXIuZ2V0QmFzZVN5c3RlbUlkKCksIHB1YmxpY0lkLCBzeXN0ZW1JZCk7Ci0gICAgWE1MSW5wdXRTb3VyY2UgeG1sSW5wdXRTb3VyY2UgPSBudWxsOwotICAgIGlmIChyZXN1bHQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMYXp5VVJMSW5wdXRTdHJlYW0gaXMgPSBuZXcgTGF6eVVSTElucHV0U3RyZWFtKHJlc3VsdC5nZXRQaHlzaWNhbExvY2F0aW9uKCkpOwotICAgICAgeG1sSW5wdXRTb3VyY2UgPSBuZXcgWE1MSW5wdXRTb3VyY2UocHVibGljSWQsIHJlc3VsdC5nZXRMb2dpY2FsTG9jYXRpb24oKSwgcmVzdWx0LmdldExvZ2ljYWxMb2NhdGlvbigpLCBpcywgbnVsbCk7Ci0gICAgfQotICAgIHJldHVybiB4bWxJbnB1dFNvdXJjZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIE5vcm1hbGl6ZSB0aGUgc3lzdGVtSWQuIE1ha2UgaXQgYWJzb2x1dGUgd2l0aCByZXNwZWN0IHRvIHRoZQotICAgKiBiYXNlTG9jYXRpb24gaWYgbmVjZXNzYXJ5LgotICAgKiAKLSAgICogQHBhcmFtIGJhc2VMb2NhdGlvbiBUaGUgYmFzZSBsb2NhdGlvbiBvZiB0aGUgZmlsZS4KLSAgICogQHBhcmFtIHN5c3RlbUlkIFRoZSBzeXN0ZW0gaWQgb2YgdGhlIGZpbGUuCi0gICAqIEByZXR1cm4gQSBub3JtYWxpemVkIHZlcnNpb24gb2YgdGhlIHN5c3RlbSBpZC4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgbm9ybWFsaXplKFN0cmluZyBiYXNlTG9jYXRpb24sIFN0cmluZyBzeXN0ZW1JZCkKLSAgewotICAJaWYoc3lzdGVtSWQgPT0gbnVsbCkKLSAgCXsKLSAgCSAgcmV0dXJuIHN5c3RlbUlkOwotICAJfQotICAJLy8gVHJ5IHRvIGZpbmQgYSBzY2hlbWUgaW4gdGhlIHN5c3RlbUlkLgotICAJaW50IHNjaGVtYUxvYyA9IHN5c3RlbUlkLmluZGV4T2YoJzonKTsKLSAgCWlmKHNjaGVtYUxvYyAhPSAtMSAmJiBzeXN0ZW1JZC5jaGFyQXQoc2NoZW1hTG9jKzEpID09ICcvJykKLSAgCXsKLSAgCSAgLy8gQSBzY2hlbWUgaGFzIGJlZW4gZm91bmQuIFRoZSBzeXN0ZW1JZCBpcyBhbgotICAJICAvLyBhYnNvbHV0ZSBsb2NhdGlvbiBzbyByZXR1cm4gaXQuCi0gIAkgIHJldHVybiBzeXN0ZW1JZDsKLSAgCX0KLSAgCWlmKGJhc2VMb2NhdGlvbiA9PSBudWxsKQotICAJewotICAJICByZXR1cm4gYmFzZUxvY2F0aW9uOwotICAJfQotICAJCi0gIAlTdHJpbmcgcmVzdWx0ID0gIiI7Ci0gIAkKLSAgCS8vIEVuc3VyZSBhbGwgc2xhc2hlcyBpbiB0aGUgbG9jYXRpb25zIGFyZSAvLgotICAJYmFzZUxvY2F0aW9uID0gYmFzZUxvY2F0aW9uLnJlcGxhY2UoJ1xcJywnLycpOwotICAJc3lzdGVtSWQgPSBzeXN0ZW1JZC5yZXBsYWNlKCdcXCcsJy8nKTsKLSAgCQotICAJLy8gUmVtb3ZlIHRoZSB0cmFpbGluZyBzZWN0aW9uIG9mIHRoZSBiYXNlTG9jYXRpb24uCi0JaW50IGxhc3RTbGFzaCA9IGJhc2VMb2NhdGlvbi5sYXN0SW5kZXhPZignLycpOwotICAJU3RyaW5nIHRlbXByZXN1bHQgPSBiYXNlTG9jYXRpb24uc3Vic3RyaW5nKDAsIGxhc3RTbGFzaCsxKTsKLSAgCQotICAJaWYoc3lzdGVtSWQuc3RhcnRzV2l0aCgiLyIpKQotICAJewotICAJICBzeXN0ZW1JZCA9IHN5c3RlbUlkLnN1YnN0cmluZygxKTsKLSAgCX0KLSAgCQotICAJLy8gSm9pbiB0aGUgYmFzZSBsb2NhdGlvbiB3aXRoIHRoZSBzeXN0ZW1pZAotICAJdGVtcHJlc3VsdCA9IHRlbXByZXN1bHQgKyBzeXN0ZW1JZDsKLSAgCQotICAJLy8gV2hpbGUgdGhlIHJlbGF0aXZlIGxvY2F0aW9uIHN0YXJ0cyB3aXRoIGEgLi4vIG9yIC4vIGNoYW5nZQotICAJLy8gdGhlIHJlc3VsdCBhbmQgdGhlIHJlbGF0aXZlIGxvY2F0aW9uLgotICAJaW50IGxvYzsKLSAgCXdoaWxlKChsb2MgPSB0ZW1wcmVzdWx0Lmxhc3RJbmRleE9mKCIuLyIpKSAhPSAtMSkKLSAgCXsKLSAgCSAgcmVzdWx0ID0gdGVtcHJlc3VsdC5zdWJzdHJpbmcobG9jICsgMikgKyByZXN1bHQ7Ci0gIAkgIGlmKHRlbXByZXN1bHQuY2hhckF0KGxvYyAtIDEpID09ICcuJykKLSAgCSAgewotICAJICAJaWYodGVtcHJlc3VsdC5jaGFyQXQobG9jIC0gMikgPT0gJy8nKQotICAJICAJewotICAJICAJICBTdHJpbmcgdGVtcCA9IHRlbXByZXN1bHQuc3Vic3RyaW5nKDAsIGxvYyAtIDIpOwotICAJICAJICBpbnQgbG9jMiA9IHRlbXAubGFzdEluZGV4T2YoJy8nKTsKLSAgCSAgCSAgaWYobG9jMiA9PSAtMSkKLSAgCSAgCSAgewotICAJICAJICAJLy8gSWYgdGhlcmUgaXMgbm8gb3RoZXIgLyBiZWZvcmUgdGhpcyB0aGUgVVJMIG11c3Qgc3RhcnQgd2l0aCBzY2hlbWU6Ly4uLwotICAJICAJICAJcmVzdWx0ID0gIi4uLyIgKyByZXN1bHQ7Ci0gIAkgIAkgIAl0ZW1wcmVzdWx0ID0gdGVtcHJlc3VsdC5zdWJzdHJpbmcoMCwgbG9jIC0gMSk7Ci0gIAkgIAkgIH0KLSAgCSAgCSAgZWxzZQotICAJICAJICB7Ci0gIAkgIAkgIAkvLyBSZW1vdmUgdGhlIHNlY3Rpb24gdGhhdCBjb21lcyBiZWZvcmUgdGhpcyBvbmUgZnJvbSB0ZW1wcmVzdWx0IHVubGVzcyBpdCdzIC4uLy4KLSAgCSAgCSAgICB0ZW1wcmVzdWx0ID0gdGVtcHJlc3VsdC5zdWJzdHJpbmcoMCwgbG9jIC0gMSk7Ci0gIAkgIAkgICAgaW50IG51bVNlY3RzVG9SZW1vdmUgPSAxOwotICAJICAJICAgIAotICAJICAJICAgIHdoaWxlKHRlbXByZXN1bHQuZW5kc1dpdGgoIi4vIikpCi0gIAkgIAkgICAgewotICAJICAJICAgICAgaW50IHRlbXByZXNsZW4gPSB0ZW1wcmVzdWx0Lmxlbmd0aCgpOwotICAJICAJICAgICAgaWYodGVtcHJlc2xlbiA+IDIgJiYgdGVtcHJlc3VsdC5jaGFyQXQodGVtcHJlc2xlbiAtMykgPT0gJy4nKQotICAJICAJICAgICAgewotICAJICAJICAgICAgCWlmKHRlbXByZXNsZW4gPiAzICYmIHRlbXByZXN1bHQuY2hhckF0KHRlbXByZXNsZW4gLSA0KSA9PSAnLycpCi0gIAkgIAkgICAgICAJewotICAJICAJICAgICAgCSAgbnVtU2VjdHNUb1JlbW92ZSsrOwotICAJICAJICAgICAgCSAgdGVtcHJlc3VsdCA9IHRlbXByZXN1bHQuc3Vic3RyaW5nKDAsIHRlbXByZXN1bHQubGVuZ3RoKCkgLTMpOwotICAJICAJICAgICAgICB9Ci0gIAkgIAkgICAgICAJZWxzZQotICAJICAJICAgICAgCXsKLSAgCSAgCSAgICAgIAkgIGJyZWFrOwotICAJICAJICAgICAgCX0KLSAgCSAgCSAgICAgIH0KLSAgCSAgCSAgICAgIGVsc2UKLSAgCSAgCSAgICAgIHsKLSAgCSAgCSAgICAgIAlpZih0ZW1wcmVzdWx0LmNoYXJBdCh0ZW1wcmVzdWx0Lmxlbmd0aCgpIC0yKSA9PSAnLycpCi0gIAkgIAkgICAgICAJewotICAJICAJICAgICAgCSAgdGVtcHJlc3VsdCA9IHRlbXByZXN1bHQuc3Vic3RyaW5nKDAsIHRlbXByZXN1bHQubGVuZ3RoKCkgLTIpOwotICAJICAJICAgICAgCX0KLSAgCSAgCSAgICAgIAllbHNlCi0gIAkgIAkgICAgICAJewotICAJICAJICAgICAgCSAgYnJlYWs7Ci0gIAkgIAkgICAgICAJfQotICAJICAJICAgICAgfQotICAJICAJICAgIH0KLSAgCSAgCSAgICAvLyBSZW1vdmUgdGhlIHNlY3Rpb25zLgotICAJICAJICAgIGZvcihpbnQgaSA9IDA7IGkgPCBudW1TZWN0c1RvUmVtb3ZlOyBpKyspCi0gIAkgIAkgICAgewotICAJICAJICAgICAgU3RyaW5nIHRlbXAyID0gdGVtcHJlc3VsdC5zdWJzdHJpbmcoMCx0ZW1wcmVzdWx0Lmxlbmd0aCgpLTEpOwotICAJICAJICAgICAgaW50IGxvYzMgPSB0ZW1wMi5sYXN0SW5kZXhPZignLycpOwotICAJICAJICAgICAgaWYobG9jMyA9PSAtMSkKLSAgCSAgCSAgICAgIHsKLSAgCSAgCSAgICAgIAlicmVhazsKLSAgCSAgCSAgICAgIH0KLSAgCSAgCSAgICAgIHRlbXByZXN1bHQgPSB0ZW1wcmVzdWx0LnN1YnN0cmluZygwLCBsb2MzKzEpOwotICAJICAJICAgIH0KLSAgCSAgCSAgfSAKLSAgCSAgCX0KLSAgCSAgCWVsc2UKLSAgCSAgCXsKLSAgCSAgCSAgLy8gVGhlIFVSSSBpcyBvZiB0aGUgZm9ybSBmaWxlOi8vc29tZWRpci4uLyBzbyBjb3B5IGl0IGFzIGlzCi0gIAkgIAkgIFN0cmluZyB0ZW1wID0gdGVtcHJlc3VsdC5zdWJzdHJpbmcoMCwgbG9jIC0gMSk7Ci0JICAJICBpbnQgbG9jMiA9IHRlbXAubGFzdEluZGV4T2YoJy8nKTsKLQkgIAkgIGlmKGxvYzIgPT0gLTEpCi0JICAJICB7Ci0JICAJICAJLy8gVGhlIFVSSSBtdXN0IGxvb2sgbGlrZSBmaWxlOi4uLyBvciAuLi8gc28gY29weSBvdmVyIHRoZSB3aG9sZSB0ZW1wcmVzdWx0LgotCSAgCSAgCXJlc3VsdCA9IHRlbXByZXN1bHQuc3Vic3RyaW5nKDAsbG9jKzIpICsgcmVzdWx0OwotCSAgCSAgCXRlbXByZXN1bHQgPSAiIjsKLQkgIAkgIH0KLQkgIAkgIGVsc2UKLQkgIAkgIHsKLQkgIAkgIAkvLyBDb3B5IG92ZXIgdGhlIHdob2xlIHNvbWVkaXIuLi8KLQkgIAkgIAlyZXN1bHQgPSB0ZW1wcmVzdWx0LnN1YnN0cmluZyhsb2MyICsgMSwgdGVtcHJlc3VsdC5sZW5ndGgoKSk7Ci0JICAJICAgIHRlbXByZXN1bHQgPSB0ZW1wcmVzdWx0LnN1YnN0cmluZygwLCBsb2MyKzEpOwotCSAgCSAgfQotICAJICAJfQotICAJICB9Ci0gIAkgIGVsc2UKLSAgCSAgewotICAJICAgIGlmKHRlbXByZXN1bHQuY2hhckF0KGxvYyAtMSApID09ICcvJykKLQkgIAl7Ci0gIAkgIAkgIC8vIFJlc3VsdCBpcyBvZiB0aGUgZm9ybSBmaWxlOi8vc29tZXRoaW5nLy4vc29tZXRoaW5nIHNvIHJlbW92ZSB0aGUgLi8KLSAgCSAgICAgIHRlbXByZXN1bHQgPSB0ZW1wcmVzdWx0LnN1YnN0cmluZygwLGxvYyk7Ci0JICAJfQotICAJICAgIGVsc2UKLSAgCSAgICB7Ci0gIAkgICAgICAvLyBSZXN1bHQgVVJJIGlzIG9mIGZvcm0gZmlsZTovL3NvbWVkaXIuLyBzbyBjb3B5IG92ZXIgdGhlIHdob2xlIHNlY3Rpb24uCi0gICAgCSAgU3RyaW5nIHRlbXAgPSB0ZW1wcmVzdWx0LnN1YnN0cmluZygwLCBsb2MgLSAxKTsKLSAgCSAgCSAgaW50IGxvYzIgPSB0ZW1wLmxhc3RJbmRleE9mKCcvJyk7Ci0gIAkgIAkgIGlmKGxvYzIgPT0gLTEpCi0gIAkgIAkgIHsKLSAgCSAgCSAgCS8vIFRoZSBVUkkgbXVzdCBsb29rIGxpa2UgZmlsZTouLyBvciAuLyBzbyBjb3B5IG92ZXIgdGhlIHdob2xlIHRlbXByZXN1bHQuCi0gIAkgIAkgIAlyZXN1bHQgPSB0ZW1wcmVzdWx0LnN1YnN0cmluZygwLCBsb2MpICsgcmVzdWx0OwotICAJICAJICAJdGVtcHJlc3VsdCA9ICIiOwotICAJICAJICB9Ci0gIAkgIAkgIGVsc2UKLSAgCSAgCSAgewotICAJICAJICAJLy8gQ29weSBvdmVyIHRoZSB3aG9sZSBzb21lZGlyLi8KLSAgCSAgCSAgCXJlc3VsdCA9IHRlbXByZXN1bHQuc3Vic3RyaW5nKGxvYzIgKyAxLCB0ZW1wcmVzdWx0Lmxlbmd0aCgpKTsKLSAgCSAgCSAgICB0ZW1wcmVzdWx0ID0gdGVtcHJlc3VsdC5zdWJzdHJpbmcoMCwgbG9jMisxKTsKLSAgCSAgCSAgfQotICAJICAgIH0KLSAgCSAgfQotICAJfQotICAJcmVzdWx0ID0gdGVtcHJlc3VsdCArIHJlc3VsdDsKLSAgCXJldHVybiByZXN1bHQ7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3Jlc29sdmVyL1VSSVJlc29sdmVyRGVsZWdhdGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9yZXNvbHZlci9VUklSZXNvbHZlckRlbGVnYXRlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMjY2YzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3Jlc29sdmVyL1VSSVJlc29sdmVyRGVsZWdhdGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyOwotCi0KLS8qKgotICogQSBkZWxlZ2F0ZSB0byBob2xkIGluZm9ybWF0aW9uIGFib3V0IGFuIGV4dGVuc2lvbiBVUkkgcmVzb2x2ZXIuCi0gKi8KLXB1YmxpYyBjbGFzcyBVUklSZXNvbHZlckRlbGVnYXRlCi17Ci0gIHByaXZhdGUgU3RyaW5nIGNsYXNzbmFtZTsKLSAgcHJpdmF0ZSBDbGFzc0xvYWRlciBjbGFzc2xvYWRlcjsKLSAgcHJpdmF0ZSBJRXh0ZW5zaWJsZVVSSVJlc29sdmVyIHJlc29sdmVyID0gbnVsbDsKLSAgCi0gIAotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gY2xhc3NuYW1lIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBVUkkgcmVzb2x2ZXIuCi0gICAqIEBwYXJhbSBjbGFzc2xvYWRlciBUaGUgY2xhc3MgbG9hZGVyIHRvIHVzZSB0byBsb2FkIHRoZSBVUkkgcmVzb2x2ZXIuCi0gICAqLwotICBwdWJsaWMgVVJJUmVzb2x2ZXJEZWxlZ2F0ZShTdHJpbmcgY2xhc3NuYW1lLCBDbGFzc0xvYWRlciBjbGFzc2xvYWRlcikKLSAgewotICAgIHRoaXMuY2xhc3NuYW1lID0gY2xhc3NuYW1lOwotICAgIHRoaXMuY2xhc3Nsb2FkZXIgPSBjbGFzc2xvYWRlcjsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgVVJJIHJlc29sdmVyIGRlc2NyaWJlZCBieSB0aGlzIGRlbGVnYXRlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgVVJJIHJlc29sdmVyIGRlc2NyaWJlZCBieSB0aGlzIGRlbGVnYXRlLgotICAgKi8KLSAgcHVibGljIElFeHRlbnNpYmxlVVJJUmVzb2x2ZXIgZ2V0VVJJUmVzb2x2ZXIoKQotICB7Ci0gICAgaWYocmVzb2x2ZXIgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgcmVzb2x2ZXIgPSAoSUV4dGVuc2libGVVUklSZXNvbHZlciljbGFzc2xvYWRlci5sb2FkQ2xhc3MoY2xhc3NuYW1lKS5uZXdJbnN0YW5jZSgpOwotICAgICAgfQotICAgICAgY2F0Y2goRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgcmVzb2x2ZXIgPSAoSUV4dGVuc2libGVVUklSZXNvbHZlcilnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkubG9hZENsYXNzKGNsYXNzbmFtZSkubmV3SW5zdGFuY2UoKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaChFeGNlcHRpb24gZTIpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzb2x2ZXI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS9hbnQvQW50TG9nZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L0FudExvZ2dlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODRmN2M2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS9hbnQvQW50TG9nZ2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudWkuYW50OwotCi1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQuUHJvamVjdDsKLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5UYXNrOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5JTG9nZ2VyOwotCi0vKioKLSAqIEEgbG9nZ2VyIHRoYXQgbG9ncyB1c2luZyBBbnQncyBsb2cgbWV0aG9kLgotICovCi1wdWJsaWMgY2xhc3MgQW50TG9nZ2VyIGltcGxlbWVudHMgSUxvZ2dlciAKLXsKLSAgcHJpdmF0ZSBUYXNrIHRhc2sgPSBudWxsOwotCQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gYW50VGFzawotICAgKiAJCVRoZSBBbnQgdGFzayB0aGlzIGxvZ2dlciB3aWxsIGFjdCBmb3IuCi0gICAqLwotICBwdWJsaWMgQW50TG9nZ2VyKFRhc2sgYW50VGFzaykKLSAgewotICAgIHRhc2sgPSBhbnRUYXNrOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLklMb2dnZXIjbG9nKGphdmEubGFuZy5TdHJpbmcsIGludCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGxvZyhTdHJpbmcgbWVzc2FnZSwgaW50IHNldmVyaXR5KSAKLSAgewotICAgIGludCBtc2dMZXZlbCA9IFByb2plY3QuTVNHX0VSUjsKLSAgICBpZihzZXZlcml0eSA9PSBJTG9nZ2VyLlNFVl9XQVJOSU5HKQotICAgIHsKLSAgICAgIG1zZ0xldmVsID0gUHJvamVjdC5NU0dfV0FSTjsKLSAgICB9Ci0gICAgZWxzZSBpZihzZXZlcml0eSA9PSBJTG9nZ2VyLlNFVl9JTkZPKQotICAgIHsKLSAgICAgIG1zZ0xldmVsID0gUHJvamVjdC5NU0dfSU5GTzsKLSAgICB9Ci0gICAgZWxzZSBpZihzZXZlcml0eSA9PSBJTG9nZ2VyLlNFVl9WRVJCT1NFKQotICAgIHsKLSAgICAgIG1zZ0xldmVsID0gUHJvamVjdC5NU0dfVkVSQk9TRTsKLSAgICB9Ci0gICAgdGFzay5sb2cobWVzc2FnZSwgbXNnTGV2ZWwpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5JTG9nZ2VyI2xvZyhqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5UaHJvd2FibGUpCi0gICAqLwotICBwdWJsaWMgdm9pZCBsb2coU3RyaW5nIG1lc3NhZ2UsIGludCBzZXZlcml0eSwgVGhyb3dhYmxlIHRocm93YWJsZSkgCi0gIHsKLQlsb2cobWVzc2FnZSwgc2V2ZXJpdHkpOwotCWxvZyh0aHJvd2FibGUudG9TdHJpbmcoKSwgc2V2ZXJpdHkpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS9hbnQvRXh0ZW5zaW9uVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L0V4dGVuc2lvblZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjQ5NDQ4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS9hbnQvRXh0ZW5zaW9uVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51aS5hbnQ7Ci0KLS8qKgotICogQW4gZXh0ZW5zaW9uIEFudCBXU0RMIHZhbGlkYXRvci4KLSAqLwotcHVibGljIGNsYXNzIEV4dGVuc2lvblZhbGlkYXRvcgotewotICBwcml2YXRlIFN0cmluZyBjbGFzc25hbWUgPSBudWxsOwotICBwcml2YXRlIFN0cmluZyBuYW1lc3BhY2UgPSBudWxsOwotICAKLSAgcHVibGljIHZvaWQgc2V0Q2xhc3MoU3RyaW5nIGNsYXNzbmFtZSkKLSAgewotICAgIHRoaXMuY2xhc3NuYW1lID0gY2xhc3NuYW1lOwotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldENsYXNzTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5jbGFzc25hbWU7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldE5hbWVzcGFjZShTdHJpbmcgbmFtZXNwYWNlKQotICB7Ci0gICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZXNwYWNlKCkKLSAgewotICAgIHJldHVybiB0aGlzLm5hbWVzcGFjZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9Qcm9wZXJ0eS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9Qcm9wZXJ0eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjA2NTQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS9hbnQvUHJvcGVydHkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51aS5hbnQ7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5UYXNrOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHByb3BlcnR5IHNldCBvbiB0aGUgV1NETCB2YWxpZGF0b3IuCi0gKi8KLXB1YmxpYyBjbGFzcyBQcm9wZXJ0eSBleHRlbmRzIFRhc2sgCi17Ci0gIHByaXZhdGUgU3RyaW5nIG5hbWUgPSBudWxsOwotICBwcml2YXRlIFN0cmluZyB2YWx1ZSA9IG51bGw7Ci0gIAotICAvKioKLSAgICogU2V0IHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS4KLSAgICogCi0gICAqIEBwYXJhbSBuYW1lCi0gICAqIAkJVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIHRoaXMubmFtZSA9IG5hbWU7Ci0gIH0KLQkgIAotICAvKioKLSAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS4KLSAgICogCi0gICAqIEByZXR1cm4KLSAgICogCQlUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIG5hbWU7Ci0gIH0KLQkgIAotICAvKioKLSAgICogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuCi0gICAqIAotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogCQlUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VmFsdWUoU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgdGhpcy52YWx1ZSA9IHZhbHVlOwotICB9Ci0JICAKLSAgLyoqCi0gICAqIEdldCB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5LgotICAgKiAKLSAgICogQHJldHVybgotICAgKiAJCVRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkKLSAgewotICAgIHJldHVybiB2YWx1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9VUklSZXNvbHZlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9VUklSZXNvbHZlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTQ0YTdhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS9hbnQvVVJJUmVzb2x2ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLmFudDsKLQotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LlRhc2s7Ci0KLS8qKgotICogVGhlIFVSSVJlc29sdmVyIHRhc2sgYWxsb3dzIHNwZWNpZnlpbmcgYW4gZXh0ZW5zaW9uIFVSSSByZXNvbHZlciB3aXRoCi0gKiB0aGUgV1NETFZhbGlkYXRlIEFudCB0YXNrLgotICovCi1wdWJsaWMgY2xhc3MgVVJJUmVzb2x2ZXIgZXh0ZW5kcyBUYXNrCi17Ci0gIHByaXZhdGUgU3RyaW5nIGNsYXp6ID0gbnVsbDsKLSAgCi0gIC8qKgotICAgKiBTZXQgdGhlIGNsYXNzIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBVUkkgcmVzb2x2ZXIuCi0gICAqIAotICAgKiBAcGFyYW0gY2xhenogVGhlIGNsYXNzIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBVUkkgcmVzb2x2ZXIuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDbGFzc05hbWUoU3RyaW5nIGNsYXp6KQotICB7Ci0gICAgdGhpcy5jbGF6eiA9IGNsYXp6OwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBjbGFzcyBuYW1lIG9mIHRoZSBleHRlbnNpb24gVVJJIHJlc29sdmVyLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgY2xhc3MgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIFVSSSByZXNvbHZlci4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q2xhc3NOYW1lKCkKLSAgewotICAgIHJldHVybiBjbGF6ejsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9XU0RMVmFsaWRhdGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS9hbnQvV1NETFZhbGlkYXRlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NGY3NDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9XU0RMVmFsaWRhdGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51aS5hbnQ7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQuQnVpbGRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQuRGlyZWN0b3J5U2Nhbm5lcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5Qcm9qZWN0OwotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LlRhc2s7Ci1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQudHlwZXMuRFRETG9jYXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQudHlwZXMuRmlsZVNldDsKLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC50eXBlcy5QYXRoOwotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LnR5cGVzLlhNTENhdGFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5DbGFzc2xvYWRlcldTRExWYWxpZGF0b3JEZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uUmVwb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuV1NETFZhbGlkYXRpb25Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuV1NETFZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuTG9nZ2VyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyLlVSSVJlc29sdmVyRGVsZWdhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51dGlsLk1lc3NhZ2VHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuQ2xhc3Nsb2FkZXJXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5XU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZTsKLQotLyoqCi0gKiBBbiBBbnQgdGFzayB0byBydW4gV1NETCB2YWxpZGF0aW9uIG9uIGEgZmlsZSBvciBhIHNldCBvZiBmaWxlcy4KLSAqIAotICogT3B0aW9ucwotICogLSBmaWxlIC0gdGhlIGZpbGUgdG8gcnVuIHZhbGlkYXRpb24gb24gKG9wdGlvbmFsIGlmIGZpbGVzZXQgaXMgdXNlZCkKLSAqIC0gZmFpbG9uZXJyb3IgLSBmYWlsIHRoZSBidWlsZCBwcm9jZXNzIG9uIHRoZSBmaXJzdCBmaWxlIHdpdGggYW4gZXJyb3IKLSAqIAotICogU3VwcG9ydGVkIE5lc3RlZCBFbGVtZW50cwotICogLSB4bWxjYXRhbG9nIC0gYW4geG1sIGNhdGFsb2cKLSAqIC0gZHRkICAgICAgICAtIGEgZHRkIHNwZWNpZmljYXRpb24gYXMgd291bGQgYXBwZWFyIGluIGFuIHhtbGNhdGFsb2cKLSAqIC0gc2NoZW1hICAgICAtIGEgc2NoZW1hIHNwZWNpZmljYXRpb24gYXMgd291bGQgYXBwZWFyIGluIGFuIHhtbGNhdGFsb2cKLSAqIC0gZW50aXR5ICAgICAtIGFuIGVudGl0eSBzcGVjaWZpY2F0aW9uIGFzIHdvdWxkIGFwcGVhciBpbiBhbiB4bWxjYXRhbG9nCi0gKiAtIGZpbGVzZXQgICAgLSBhIHNldCBvZiBmaWxlcyB0byB2YWxpZGF0ZQotICogLSB3c2RsMTF2YWxpZGF0b3IgLSBhbiBleHRlbnNpb24gV1NETCAxLjEgdmFsaWRhdG9yCi0gKiAtIHVyaXJlc29sdmVyIC0gYW4gZXh0ZW5zaW9uIFVSSSByZXNvbHZlcgotICogCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMVmFsaWRhdGUgZXh0ZW5kcyBUYXNrCi17Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgVUlfUFJPUEVSVElFUyA9ICJ2YWxpZGF0ZXdzZGx1aSI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgVkFMSURBVE9SX1BST1BFUlRJRVMgPSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLkNvbnN0YW50cy5XU0RMX1ZBTElEQVRPUl9QUk9QRVJUSUVTX0ZJTEU7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgX0VSUk9SX05PX0ZJTEVfU1BFQ0lGSUVEID0gIl9FUlJPUl9OT19GSUxFX1NQRUNJRklFRCI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgX1VJX0lORk9STUFUSU9OX0RFTElNSVRFUiA9ICJfVUlfSU5GT1JNQVRJT05fREVMSU1JVEVSIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBfVUlfQUNUSU9OX1ZBTElEQVRJTkdfRklMRSA9ICJfVUlfQUNUSU9OX1ZBTElEQVRJTkdfRklMRSI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgX1VJX0VSUk9SX01BUktFUiA9ICJfVUlfRVJST1JfTUFSS0VSIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBfVUlfV0FSTklOR19NQVJLRVIgPSAiX1VJX1dBUk5JTkdfTUFSS0VSIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBfVUlfVkFMSUQgPSAiX1VJX1ZBTElEIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBfVUlfSU5WQUxJRCA9ICJfVUlfSU5WQUxJRCI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgX0VYQ19VTkFCTEVfVE9fVkFMSURBVEVfRklMRSA9ICJfRVhDX1VOQUJMRV9UT19WQUxJREFURV9GSUxFIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBfRVhDX1dTRExfRkFJTF9PTl9FUlJPUiA9ICJfRVhDX1dTRExfRkFJTF9PTl9FUlJPUiI7Ci0gIAotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIEZJTEVfUFJPVE9DT0wgPSAiZmlsZTovLy8iOwotCi0gIC8vIEdsb2JhbCBWYXJzCi0gIHByb3RlY3RlZCBMaXN0IGZpbGVzZXRzID0gbmV3IEFycmF5TGlzdCgpOwotICBwcm90ZWN0ZWQgU3RyaW5nIGZpbGUgPSBudWxsOwotICBwcm90ZWN0ZWQgUGF0aCBjbGFzc3BhdGg7Ci0gIHByb3RlY3RlZCBTdHJpbmcgeHNkRGlyZWN0b3J5ID0gbnVsbDsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gZmFpbE9uRXJyb3IgPSBmYWxzZTsKLSAgcHJvdGVjdGVkIFhNTENhdGFsb2cgZ2xvYmFsWE1MQ2F0YWxvZyA9IG5ldyBYTUxDYXRhbG9nKCk7Ci0gIHByb3RlY3RlZCBMaXN0IHdzZGwxMXZhbGlkYXRvcnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIHByb3RlY3RlZCBMaXN0IGV4dHZhbGlkYXRvcnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIHByb3RlY3RlZCBMaXN0IGV4dFVSSVJlc29sdmVycyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgcHJvdGVjdGVkIExpc3QgcHJvcGVydGllcyA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAvKioKLSAgICogQ29uc3R1Y3Rvci4KLSAgICovCi0gIHB1YmxpYyBXU0RMVmFsaWRhdGUoKQotICB7Ci0JTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLnNldExvZ2dlcihuZXcgQW50TG9nZ2VyKHRoaXMpKTsKLSAgfQotCi0gIC8qKgotICAgKiBUZWxscyB0aGUgV1NETCB2YWxpZGF0ZSB0YXNrIHRvIGZhaWwgdGhlIGJ1aWxkIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLgotICAgKiAKLSAgICogQHBhcmFtIGZhaWxPbkVycm9yIFdoZXRoZXIgdG8gZmFpbCBvbiBlcnJvciBvciBub3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGYWlsT25FcnJvcihib29sZWFuIGZhaWxPbkVycm9yKQotICB7Ci0gICAgdGhpcy5mYWlsT25FcnJvciA9IGZhaWxPbkVycm9yOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBiYXNlIHNjaGVtYSBmaWxlcyBmb3IgdGhlIGNhdGFsb2cgYXJlIGxvY2F0ZWQuCi0gICAqIAotICAgKiBAcGFyYW0gZGlyIC0gdGhlIGRpcmVjdG9yeSBvZiB0aGUgYmFzZSBzY2hlbWEgZmlsZXMKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNjaGVtYURpcihTdHJpbmcgZGlyKQotICB7Ci0gICAgeHNkRGlyZWN0b3J5ID0gZGlyOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBhIGZpbGUgdG8gcnVuIFdTREwgdmFsaWRhdGlvbiBvbi4KLSAgICogCi0gICAqIEBwYXJhbSBmaWxlIC0gYSBmaWxlIHRvIHJ1biB2YWxpZGF0aW9uIG9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGaWxlKFN0cmluZyBmaWxlKQotICB7Ci0gICAgdGhpcy5maWxlID0gZmlsZTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBzZXQgb2YgZmlsZXMgdG8gcnVuIFdTREwgdmFsaWRhdGlvbiBvbi4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIEZpbGVTZXQgb2YgZmlsZXMgdG8gcnVuIFdTREwgdmFsaWRhdGlvbiBvbgotICAgKi8KLSAgcHVibGljIEZpbGVTZXQgY3JlYXRlRmlsZXNldCgpCi0gIHsKLSAgICBGaWxlU2V0IGZpbGVzZXQgPSBuZXcgRmlsZVNldCgpOwotICAgIGZpbGVzZXRzLmFkZChmaWxlc2V0KTsKLSAgICByZXR1cm4gZmlsZXNldDsKLSAgfQotCi0gIC8qKgotICAgKiBBZGQgYW4gWE1MIGNhdGFsb2cgdG8gdGhlIHZhbGlkYXRvci4KLSAgICogCi0gICAqIEBwYXJhbSBjYXRhbG9nIC0gdGhlIGNhdGFsb2cgdG8gYWRkIHRvIHRoZSB2YWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZENvbmZpZ3VyZWRYTUxDYXRhbG9nKFhNTENhdGFsb2cgY2F0YWxvZykKLSAgewotICAgIGdsb2JhbFhNTENhdGFsb2cuYWRkQ29uZmlndXJlZFhNTENhdGFsb2coY2F0YWxvZyk7Ci0gIH0KLSAgLyoqCi0gICAqIEFkZCBhbiBleHRlbnNpb24gdmFsaWRhdG9yLgotICAgKiAKLSAgICogQHBhcmFtIGV4dFZhbCBUaGUgZXh0ZW5zaW9uIHZhbGlkYXRvciB0byBhZGQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRDb25maWd1cmVkRXh0ZW5zaW9uVmFsaWRhdG9yKEV4dGVuc2lvblZhbGlkYXRvciBleHRWYWwpCi0gIHsKLSAgICBleHR2YWxpZGF0b3JzLmFkZChleHRWYWwpOwotICB9Ci0gIAotICAvKioKLSAgICogQWRkIGFuIGV4dGVuc2lvbiBXU0RMIDEuMSB2YWxpZGF0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gZXh0VmFsIFRoZSBleHRlbnNpb24gV1NETCAxLjEgdmFsaWRhdG9yIHRvIGFkZC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZENvbmZpZ3VyZWRXU0RMMTFWYWxpZGF0b3IoRXh0ZW5zaW9uVmFsaWRhdG9yIGV4dFZhbCkKLSAgewotICAgIHdzZGwxMXZhbGlkYXRvcnMuYWRkKGV4dFZhbCk7Ci0gIH0KLQotICAvKioKLSAgICogQWxsb3cgc3BlY2lmaWNhdGlvbiBvZiBhbiBlbnRpdHkgb3V0c2lkZSBvZiBhbiBYTUxDYXRhbG9nLgotICAgKiAKLSAgICogQHJldHVybiBhIERURExvY2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBlbnRpdHkKLSAgICoqLwotICBwdWJsaWMgRFRETG9jYXRpb24gY3JlYXRlRW50aXR5KCkKLSAgewotICAgIERURExvY2F0aW9uIGR0ZExvYyA9IG5ldyBEVERMb2NhdGlvbigpOwotICAgIGdsb2JhbFhNTENhdGFsb2cuYWRkRW50aXR5KGR0ZExvYyk7Ci0gICAgcmV0dXJuIGR0ZExvYzsKLSAgfQotCi0gIC8qKgotICAgKiBBbGxvdyBzcGVjaWZpY2F0aW9uIG9mIGEgRFREIG91dHNpZGUgb2YgYW4gWE1MQ2F0YWxvZy4KLSAgICogCi0gICAqIEByZXR1cm4gYSBEVERMb2NhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgRFRECi0gICAqKi8KLSAgcHVibGljIERURExvY2F0aW9uIGNyZWF0ZURURCgpCi0gIHsKLSAgICBEVERMb2NhdGlvbiBkdGRMb2MgPSBuZXcgRFRETG9jYXRpb24oKTsKLSAgICBnbG9iYWxYTUxDYXRhbG9nLmFkZEVudGl0eShkdGRMb2MpOwotICAgIHJldHVybiBkdGRMb2M7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYSBVUklSZXNvbHZlciBleHRlbnNpb24uCi0gICAqIAotICAgKiBAcmV0dXJuIEEgVVJJUmVzb2x2ZXIuCi0gICAqLwotICBwdWJsaWMgVVJJUmVzb2x2ZXIgY3JlYXRlVVJJUmVzb2x2ZXIoKQotICB7Ci0gICAgVVJJUmVzb2x2ZXIgdXJpcmVzID0gbmV3IFVSSVJlc29sdmVyKCk7Ci0gICAgZXh0VVJJUmVzb2x2ZXJzLmFkZCh1cmlyZXMuZ2V0Q2xhc3NOYW1lKCkpOwotICAgIHJldHVybiB1cmlyZXM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBBZGQgYSBwcm9wZXJ0eSB0byB0aGUgV1NETCB2YWxpZGF0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gcHJvcGVydHkgCi0gICAqIAkJVGhlIHByb3BlcnR5IHRvIGFkZC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZENvbmZpZ3VyZWRQcm9wZXJ0eShQcm9wZXJ0eSBwcm9wZXJ0eSkKLSAgewotICAgIHByb3BlcnRpZXMuYWRkKHByb3BlcnR5KTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgYSBsaXN0IG9mIGFsbCB0aGUgZmlsZXMgdG8gcnVuIFdTREwgdmFsaWRhdGlvbiBvbi4gVGFrZXMgdGhlIGZpbGUgYW5kIGZpbGVzZXQKLSAgICogYW5kIGNyZWF0ZXMgdGhlIGxpc3QuCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSBsaXN0IG9mIGZpbGVzIHRvIGJlIHZhbGlkYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIExpc3QgZ2V0RmlsZUxpc3QoKQotICB7Ci0gICAgTGlzdCBmaWxlcyA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgIC8vIGlmIGEgc3BlY2lmaWMgZmlsZSB3YXMgc3BlY2lmaWVkIGFkZCBpdCB0byB0aGUgbGlzdAotICAgIGlmIChmaWxlICE9IG51bGwpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIFVSTCB1cmwgPSBuZXcgVVJMKGZpbGUpOwotICAgICAgICBmaWxlcy5hZGQodXJsLnRvRXh0ZXJuYWxGb3JtKCkpOwotICAgICAgfQotICAgICAgY2F0Y2goRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIEZpbGUgdGhlRmlsZSA9IG5ldyBGaWxlKGZpbGUpOwotICAgICAgICBpZighdGhlRmlsZS5pc0Fic29sdXRlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICB0aGVGaWxlID0gbmV3IEZpbGUoZ2V0UHJvamVjdCgpLmdldEJhc2VEaXIoKSwgZmlsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgU3RyaW5nIGFic0ZpbGUgPSB0aGVGaWxlLnRvU3RyaW5nKCk7IAotICAgICAgICBpZighYWJzRmlsZS5zdGFydHNXaXRoKCJmaWxlOiIpKQotICAgICAgICB7Ci0gICAgICAgICAgYWJzRmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBhYnNGaWxlOwotICAgICAgICB9Ci0gICAgICAgIGFic0ZpbGUgPSBhYnNGaWxlLnJlcGxhY2UoJ1xcJywnLycpOwotICAgICAgICBmaWxlcy5hZGQoYWJzRmlsZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gZ28gdGhyb3VnaCBhbGwgZmlsZXNldHMgc3BlY2lmaWVkIGFuZCBhZGQgYWxsIHRoZSBmaWxlcyB0byB0aGUgbGlzdAotICAgIEl0ZXJhdG9yIGZzSXRlciA9IGZpbGVzZXRzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGZzSXRlci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgRmlsZVNldCBmaWxlc2V0ID0gKEZpbGVTZXQpZnNJdGVyLm5leHQoKTsKLSAgICAgIERpcmVjdG9yeVNjYW5uZXIgZHMgPSBmaWxlc2V0LmdldERpcmVjdG9yeVNjYW5uZXIoZmlsZXNldC5nZXRQcm9qZWN0KCkpOwotICAgICAgU3RyaW5nIGJhc2VkaXIgPSBkcy5nZXRCYXNlZGlyKCkudG9TdHJpbmcoKSArIEZpbGUuc2VwYXJhdG9yOwotCi0gICAgICBTdHJpbmdbXSBmaWxlbGlzdCA9IGRzLmdldEluY2x1ZGVkRmlsZXMoKTsKLSAgICAgIGludCBudW1GaWxlcyA9IGZpbGVsaXN0Lmxlbmd0aDsKLSAgICAgIGlmIChmaWxlcyAhPSBudWxsICYmIG51bUZpbGVzID4gMCkKLSAgICAgIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1GaWxlczsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIGFic0ZpbGUgPSBGSUxFX1BST1RPQ09MICsgYmFzZWRpciArIGZpbGVsaXN0W2ldOwotICAgICAgICAgIGFic0ZpbGUgPSBhYnNGaWxlLnJlcGxhY2UoJ1xcJywnLycpOwotICAgICAgICAgIGZpbGVzLmFkZChhYnNGaWxlKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmlsZXM7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmFwYWNoZS50b29scy5hbnQuVGFzayNleGVjdXRlKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGV4ZWN1dGUoKSB0aHJvd3MgQnVpbGRFeGNlcHRpb24KLSAgewotICAgIC8vIHRoZSByZXNvdXJjZSBidW5kbGVzIGZvciB0aGUgdWkgYW5kIHZhbGlkYXRvciBhcmUgbmVlZGVkCi0gICAgTWVzc2FnZUdlbmVyYXRvciBtZXNzR2VuID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBSZXNvdXJjZUJ1bmRsZSB1aVJCID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKFVJX1BST1BFUlRJRVMpOwotICAgICAgbWVzc0dlbiA9IG5ldyBNZXNzYWdlR2VuZXJhdG9yKHVpUkIpOwotICAgIH0KLSAgICBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gaWYgdGhlIHJlc291cmNlIGJ1bmRsZXMgY2FuJ3QgYmUgb3BlbmVkIHdlIGNhbid0IHJlcG9ydCBlcnJvciBzbyB0aHJvdyBhbiBleGNlcHRpb24KLSAgICAgIHRocm93IG5ldyBCdWlsZEV4Y2VwdGlvbigiVW5hYmxlIHRvIG9wZW4gcmVzb3VyY2UgYnVuZGxlLiAiICsgZSk7Ci0gICAgfQotCi0gICAgLy8gU2V0IHRoZSBYTUwgY2F0YWxvZy4KLSAgICBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5YTUxDYXRhbG9nLnNldEV4dGVuc2lvblhNTENhdGFsb2coWE1MQ2F0YWxvZ0ltcGwuY2xhc3MuZ2V0TmFtZSgpLCBnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkpOwotICAgIFhNTENhdGFsb2dJbXBsIHhtbENhdGFsb2cgPSAoWE1MQ2F0YWxvZ0ltcGwpb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWwuWE1MQ2F0YWxvZy5nZXRFeHRlbnNpb25DYXRhbG9nSW5zdGFuY2UoKTsKLSAgICB4bWxDYXRhbG9nLmFkZFhNTENhdGFsb2coZ2xvYmFsWE1MQ2F0YWxvZyk7Ci0gICAgCi0gICAgV1NETFZhbGlkYXRvciB3c2RsVmFsaWRhdG9yID0gbmV3IFdTRExWYWxpZGF0b3IoKTsKLSAgICAKLSAgICBXU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IG5ldyBXU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24oKTsKLSAgICAvLyBTZXQgdGhlIHByb3BlcnRpZXMuCi0gICAgSXRlcmF0b3IgcHJvcGVydHlJdGVyID0gcHJvcGVydGllcy5pdGVyYXRvcigpOwotICAgIHdoaWxlKHByb3BlcnR5SXRlci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgUHJvcGVydHkgcHJvcGVydHkgPSAoUHJvcGVydHkpcHJvcGVydHlJdGVyLm5leHQoKTsKLSAgICAgIGNvbmZpZ3VyYXRpb24uc2V0UHJvcGVydHkocHJvcGVydHkuZ2V0TmFtZSgpLCBwcm9wZXJ0eS5nZXRWYWx1ZSgpKTsKLSAgICB9Ci0gICAgCQotICAgIC8vIFNldCB0aGUgZXh0ZW5zaW9uIFVSSVJlc29sdmVycy4KLSAgICBJdGVyYXRvciByZXNvbHZlcnNJdGVyID0gZXh0VVJJUmVzb2x2ZXJzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUocmVzb2x2ZXJzSXRlci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgU3RyaW5nIHJlc29sdmVyQ2xhc3MgPSAoU3RyaW5nKXJlc29sdmVyc0l0ZXIubmV4dCgpOwotICAgICAgd3NkbFZhbGlkYXRvci5hZGRVUklSZXNvbHZlcihuZXcgVVJJUmVzb2x2ZXJEZWxlZ2F0ZShyZXNvbHZlckNsYXNzLCBnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkpLmdldFVSSVJlc29sdmVyKCkpOwotICAgIH0KLSAgICAKLSAgICAvLyBHZXQgdGhlIGxpc3Qgb2YgZmlsZXMgdG8gdmFsaWRhdGUuCi0gICAgTGlzdCBmaWxlcyA9IGdldEZpbGVMaXN0KCk7Ci0gICAgCi0gICAgLy8gUmVnaXN0ZXIgdGhlIFdTREwgMS4xIGV4dGVuc2lvbiB2YWxpZGF0b3JzLgotICAgIEl0ZXJhdG9yIHdzZGwxMWV4dEl0ZXIgPSB3c2RsMTF2YWxpZGF0b3JzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUod3NkbDExZXh0SXRlci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgRXh0ZW5zaW9uVmFsaWRhdG9yIGV4dFZhbCA9IChFeHRlbnNpb25WYWxpZGF0b3Ipd3NkbDExZXh0SXRlci5uZXh0KCk7Ci0gICAgICBXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZSBkZWxlZ2F0ZSA9IG5ldyBDbGFzc2xvYWRlcldTREwxMVZhbGlkYXRvckRlbGVnYXRlKGV4dFZhbC5nZXRDbGFzc05hbWUoKSk7Ci0gICAgICB3c2RsVmFsaWRhdG9yLnJlZ2lzdGVyV1NETDExVmFsaWRhdG9yKGV4dFZhbC5nZXROYW1lc3BhY2UoKSwgZGVsZWdhdGUpOwotICAgIH0KLSAgICAKLSAgICAvLyBSZWdpc3RlciB0aGUgZXh0ZW5zaW9uIHZhbGlkYXRvcnMuCi0gICAgSXRlcmF0b3IgZXh0SXRlciA9IGV4dHZhbGlkYXRvcnMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZShleHRJdGVyLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBFeHRlbnNpb25WYWxpZGF0b3IgZXh0VmFsID0gKEV4dGVuc2lvblZhbGlkYXRvcilleHRJdGVyLm5leHQoKTsKLSAgICAgIENsYXNzbG9hZGVyV1NETFZhbGlkYXRvckRlbGVnYXRlIGRlbGVnYXRlID0gbmV3IENsYXNzbG9hZGVyV1NETFZhbGlkYXRvckRlbGVnYXRlKGV4dFZhbC5nZXRDbGFzc05hbWUoKSk7Ci0gICAgICB3c2RsVmFsaWRhdG9yLnJlZ2lzdGVyV1NETEV4dGVuc2lvblZhbGlkYXRvcihleHRWYWwuZ2V0TmFtZXNwYWNlKCksIGRlbGVnYXRlKTsKLSAgICB9Ci0KLSAgICAvLyBUaGUgdXNlciBkaWRuJ3Qgc3BlY2lmeSBhbnkgZmlsZXMgdG8gdmFsaWRhdGUuCi0gICAgaWYgKGZpbGVzID09IG51bGwgfHwgZmlsZXMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIGxvZyhtZXNzR2VuLmdldFN0cmluZyhfRVJST1JfTk9fRklMRV9TUEVDSUZJRUQpLCBQcm9qZWN0Lk1TR19FUlIpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh4c2REaXJlY3RvcnkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5YTUxDYXRhbG9nLmFkZFNjaGVtYURpcih4c2REaXJlY3RvcnkpOwotICAgIH0KLQotICAgIC8vIFZhbGlkYXRlIGFsbCB0aGUgZmlsZXMgc3BlY2lmaWVkLgotICAgIEl0ZXJhdG9yIGlGaWxlcyA9IGZpbGVzLml0ZXJhdG9yKCk7Ci0KLSAgICAvLyBDb21tb24gc3RyaW5ncyBuZWVkZWQgaW4gdmFsaWRhdGlvbiBvdXRwdXQuCi0gICAgU3RyaW5nIGluZm9EZWxpbSA9IG1lc3NHZW4uZ2V0U3RyaW5nKF9VSV9JTkZPUk1BVElPTl9ERUxJTUlURVIpOwotICAgIFN0cmluZyB2YWxpZCA9IG1lc3NHZW4uZ2V0U3RyaW5nKF9VSV9WQUxJRCk7Ci0gICAgU3RyaW5nIGludmFsaWQgPSBtZXNzR2VuLmdldFN0cmluZyhfVUlfSU5WQUxJRCk7Ci0gICAgU3RyaW5nIGVycm9ybWFya2VyID0gbWVzc0dlbi5nZXRTdHJpbmcoX1VJX0VSUk9SX01BUktFUik7Ci0gICAgU3RyaW5nIHdhcm5pbmdtYXJrZXIgPSBtZXNzR2VuLmdldFN0cmluZyhfVUlfV0FSTklOR19NQVJLRVIpOwotCi0gICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG51bGw7Ci0gICAgYm9vbGVhbiBub3R2YWxpZCA9IHRydWU7Ci0gICAgd2hpbGUgKGlGaWxlcy5oYXNOZXh0KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgbm90dmFsaWQgPSBmYWxzZTsKLSAgICAgIFN0cmluZyBmaWxlbmFtZSA9IChTdHJpbmcpaUZpbGVzLm5leHQoKTsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICByZXN1bHQuYXBwZW5kKGluZm9EZWxpbSkuYXBwZW5kKCJcbiIpOwotICAgICAgICByZXN1bHQuYXBwZW5kKG1lc3NHZW4uZ2V0U3RyaW5nKF9VSV9BQ1RJT05fVkFMSURBVElOR19GSUxFLCBmaWxlbmFtZSkpLmFwcGVuZCgiIC0gIik7Ci0KLSAgICAgICAgSVZhbGlkYXRpb25SZXBvcnQgdmFsUmVwb3J0ID0gd3NkbFZhbGlkYXRvci52YWxpZGF0ZShmaWxlbmFtZSwgbnVsbCwgY29uZmlndXJhdGlvbik7Ci0KLSAgICAgICAgSVZhbGlkYXRpb25NZXNzYWdlW10gbWVzc2FnZXMgPSB2YWxSZXBvcnQuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKCk7Ci0KLSAgICAgICAgaWYgKCF2YWxSZXBvcnQuaGFzRXJyb3JzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQuYXBwZW5kKHZhbGlkKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQuYXBwZW5kKGludmFsaWQpOwotICAgICAgICAgIG5vdHZhbGlkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXN1bHQuYXBwZW5kKCJcbiIpLmFwcGVuZChpbmZvRGVsaW0pLmFwcGVuZCgiXG4iKTsKLQotICAgICAgICByZXN1bHQuYXBwZW5kKHJlcG9ydE1lc3NhZ2VzKG1lc3NhZ2VzLCBlcnJvcm1hcmtlciwgd2FybmluZ21hcmtlcikpOwotCi0gICAgICAgIGlmKG5vdHZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgbG9nKHJlc3VsdC50b1N0cmluZygpLCBQcm9qZWN0Lk1TR19FUlIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGxvZyhyZXN1bHQudG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgbG9nKG1lc3NHZW4uZ2V0U3RyaW5nKF9FWENfVU5BQkxFX1RPX1ZBTElEQVRFX0ZJTEUsIGZpbGVuYW1lLCBlKSwgUHJvamVjdC5NU0dfRVJSKTsKLSAgICAgIH0KLSAgICAgIGZpbmFsbHkKLSAgICAgIHsKLSAgICAgICAgaWYgKG5vdHZhbGlkICYmIGZhaWxPbkVycm9yKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gVG8gZmFpbCBvbiBlcnJvciwgdGhyb3cgYSBidWlsZCBleGNlcHRpb24uCi0gICAgICAgICAgdGhyb3cgbmV3IEJ1aWxkRXhjZXB0aW9uKG1lc3NHZW4uZ2V0U3RyaW5nKF9FWENfV1NETF9GQUlMX09OX0VSUk9SKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5YTUxDYXRhbG9nLnJlc2V0KCk7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gYSBzdHJpbmcgd2l0aCBmb3JtYXR0ZWQgb3V0cHV0IGZvciB0aGUgbWVzc2FnZXMuCi0gICAqIAotICAgKiBAcGFyYW0gbWVzc2FnZXMgVGhlIG1lc3NhZ2VzIHRvIHJlcG9ydC4KLSAgICogQHBhcmFtIGVycm9ybWFya2VyIFRoZSBtYXJrZXIgdG8gdXNlIGZvciBlcnJvciBtZXNzYWdlcy4KLSAgICogQHBhcmFtIHdhcm5pbmdtYXJrZXIgVGhlIG1hcmtlciB0byB1c2UgZm9yIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqIEByZXR1cm4gQSBzdHJpbmcgd2l0aCB0aGUgZm9ybWF0dGVkIG91dHB1dC4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgcmVwb3J0TWVzc2FnZXMoSVZhbGlkYXRpb25NZXNzYWdlW10gbWVzc2FnZXMsIFN0cmluZyBlcnJvcm1hcmtlciwgU3RyaW5nIHdhcm5pbmdtYXJrZXIpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgcmV0dXJuQnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCi0gICAgaWYgKG1lc3NhZ2VzID09IG51bGwpCi0gICAgICByZXR1cm4gcmV0dXJuQnVmZmVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmcgcHJlZml4ID0gbnVsbDsKLSAgICBpbnQgbnVtTWVzc2FnZXMgPSBtZXNzYWdlcy5sZW5ndGg7Ci0gICAgZm9yKGludCBpID0gMDsgaSA8IG51bU1lc3NhZ2VzOyBpKyspCi0gICAgewotICAgICAgSVZhbGlkYXRpb25NZXNzYWdlIG1lc3NhZ2UgPSBtZXNzYWdlc1tpXTsKLQotICAgICAgaWYobWVzc2FnZS5nZXRTZXZlcml0eSgpID09IElWYWxpZGF0aW9uTWVzc2FnZS5TRVZfRVJST1IpCi0gICAgICAgewotICAgICAgICBwcmVmaXggPSBlcnJvcm1hcmtlcjsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYobWVzc2FnZS5nZXRTZXZlcml0eSgpID09IElWYWxpZGF0aW9uTWVzc2FnZS5TRVZfV0FSTklORykKLSAgICAgICB7Ci0gICAgICAgIHByZWZpeCA9IHdhcm5pbmdtYXJrZXI7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgewotICAgICAgICBwcmVmaXggPSAiIjsKLSAgICAgIH1pZihtZXNzYWdlLmdldFNldmVyaXR5KCkgPT0gSVZhbGlkYXRpb25NZXNzYWdlLlNFVl9FUlJPUikKLSAgICAgICB7Ci0gICAgICAgIHByZWZpeCA9IGVycm9ybWFya2VyOwotICAgICAgfQotICAgICAgZWxzZSBpZihtZXNzYWdlLmdldFNldmVyaXR5KCkgPT0gSVZhbGlkYXRpb25NZXNzYWdlLlNFVl9XQVJOSU5HKQotICAgICAgIHsKLSAgICAgICAgcHJlZml4ID0gd2FybmluZ21hcmtlcjsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICB7Ci0gICAgICAgIHByZWZpeCA9ICIiOwotICAgICAgfWlmKG1lc3NhZ2UuZ2V0U2V2ZXJpdHkoKSA9PSBJVmFsaWRhdGlvbk1lc3NhZ2UuU0VWX0VSUk9SKQotICAgICAgIHsKLSAgICAgICAgcHJlZml4ID0gZXJyb3JtYXJrZXI7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKG1lc3NhZ2UuZ2V0U2V2ZXJpdHkoKSA9PSBJVmFsaWRhdGlvbk1lc3NhZ2UuU0VWX1dBUk5JTkcpCi0gICAgICAgewotICAgICAgICBwcmVmaXggPSB3YXJuaW5nbWFya2VyOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgIHsKLSAgICAgICAgcHJlZml4ID0gIiI7Ci0gICAgICB9aWYobWVzc2FnZS5nZXRTZXZlcml0eSgpID09IElWYWxpZGF0aW9uTWVzc2FnZS5TRVZfRVJST1IpCi0gICAgICAgewotICAgICAgICBwcmVmaXggPSBlcnJvcm1hcmtlcjsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYobWVzc2FnZS5nZXRTZXZlcml0eSgpID09IElWYWxpZGF0aW9uTWVzc2FnZS5TRVZfV0FSTklORykKLSAgICAgICB7Ci0gICAgICAgIHByZWZpeCA9IHdhcm5pbmdtYXJrZXI7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgewotICAgICAgICBwcmVmaXggPSAiIjsKLSAgICAgIH0KLSAgICAgIHJldHVybkJ1ZmZlcgotICAgICAgICAuYXBwZW5kKHByZWZpeCkKLSAgICAgICAgLmFwcGVuZCgiICIpCi0gICAgICAgIC5hcHBlbmQobWVzc2FnZS5nZXRMaW5lKCkpCi0gICAgICAgIC5hcHBlbmQoIjoiKQotICAgICAgICAuYXBwZW5kKG1lc3NhZ2UuZ2V0Q29sdW1uKCkpCi0gICAgICAgIC5hcHBlbmQoIjoiKQotICAgICAgICAuYXBwZW5kKG1lc3NhZ2UuZ2V0TWVzc2FnZSgpKQotICAgICAgICAuYXBwZW5kKCJcbiIpOwotICAgIH0KLSAgICByZXR1cm4gcmV0dXJuQnVmZmVyLnRvU3RyaW5nKCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L1hNTENhdGFsb2dJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L1hNTENhdGFsb2dJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmY2JkZTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9YTUxDYXRhbG9nSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudWkuYW50OwotCi1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQudHlwZXMuRFRETG9jYXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQudHlwZXMuWE1MQ2F0YWxvZzsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLQotLyoqCi0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV1NETCBWYWxpZGF0b3IncyBYTUwgQ2F0YWxvZyB0aGF0IHVzZXMgdGhlIFhNTCBDYXRhbG9nCi0gKiBmcm9tIGFudC4KLSAqLwotcHVibGljIGNsYXNzIFhNTENhdGFsb2dJbXBsIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWwuWE1MQ2F0YWxvZwotewotICBwcm90ZWN0ZWQgWE1MQ2F0YWxvZyB4bWxDYXRhbG9nID0gbmV3IFhNTENhdGFsb2coKTsKLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5YTUxDYXRhbG9nI2FkZEVudHJ5VG9DYXRhbG9nKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRFbnRyeVRvQ2F0YWxvZyhTdHJpbmcgcHVibGljSWQsIFN0cmluZyBzeXN0ZW1JZCkKLSAgewotICAgIERURExvY2F0aW9uIHJlc0xvYyA9IG5ldyBEVERMb2NhdGlvbigpOwotICAgIHJlc0xvYy5zZXRMb2NhdGlvbihzeXN0ZW1JZCk7Ci0gICAgcmVzTG9jLnNldFB1YmxpY0lkKHB1YmxpY0lkKTsKLSAgICB4bWxDYXRhbG9nLmFkZEVudGl0eShyZXNMb2MpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWwuWE1MQ2F0YWxvZyNyZXNvbHZlRW50aXR5TG9jYXRpb24oamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgcmVzb2x2ZUVudGl0eUxvY2F0aW9uKFN0cmluZyBwdWJsaWNJZCwgU3RyaW5nIHN5c3RlbUlkKQotICB7Ci0gICAgU3RyaW5nIHJlc29sdmVkSWQgPSBudWxsOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgSW5wdXRTb3VyY2UgaXMgPSB4bWxDYXRhbG9nLnJlc29sdmVFbnRpdHkocHVibGljSWQsIHN5c3RlbUlkKTsKLSAgICAgIGlmIChpcyAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXNvbHZlZElkID0gaXMuZ2V0U3lzdGVtSWQoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIERvIG5vdGhpbmcgaWYgdGhlIHJlc291cmNlIGNhbid0IGJlIHJlc29sdmVkLgotICAgIH0KLSAgICAvLyBuZWVkcyB0byByZXR1cm4gbnVsbCBpZiBpdCBjYW4ndCByZXNvbHZlIHRoZSBpZAotICAgIGlmIChyZXNvbHZlZElkICE9IG51bGwgJiYgcmVzb2x2ZWRJZC5lcXVhbHMoIiIpKQotICAgIHsKLSAgICAgIHJlc29sdmVkSWQgPSBudWxsOwotICAgIH0KLSAgICByZXR1cm4gcmVzb2x2ZWRJZDsKLSAgfQotCi0gIC8qKgotICAgKiBBZGQgYSBjb25maWd1cmVkIFhNTCBDYXRhbG9nIHRvIHRoaXMgY2F0YWxvZy4KLSAgICogCi0gICAqIEBwYXJhbSBjYXRhbG9nIEEgY29uZmlndXJlZCBYTUwgY2F0YWxvZyB0byBhZGQgdG8gdGhpcyBjYXRhbG9nLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkWE1MQ2F0YWxvZyhYTUxDYXRhbG9nIGNhdGFsb2cpCi0gIHsKLSAgICB4bWxDYXRhbG9nLmFkZENvbmZpZ3VyZWRYTUxDYXRhbG9nKGNhdGFsb2cpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L0xvZzRqTG9nZ2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvdGV4dC9Mb2c0akxvZ2dlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGEyMjRiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L0xvZzRqTG9nZ2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLnRleHQ7Ci0KLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5JTG9nZ2VyOwotCi0vKioKLSAqIEEgY3VzdG9tIFdTREwgdmFsaWRhdG9yIGxvZ2dlciB0aGF0IHBhc3NlcyBsb2dnaW5nIGV2ZW50cyB0byBsb2c0ai4KLSAqLwotcHVibGljIGNsYXNzIExvZzRqTG9nZ2VyIGltcGxlbWVudHMgSUxvZ2dlciAKLXsKLSAgLy8gVGhpcyBjbGFzcyBpcyBpbXBsZW1lbnRlZCB1c2luZyByZWZsZWN0aW9uIHRvIGF2b2lkIGEgY29taWxhdGlvbiBkZXBlbmRlbmN5Ci0gIC8vIG9uIGxvZzRqLgotICBwcm90ZWN0ZWQgT2JqZWN0IGxvZ2dlciA9IG51bGw7Ci0gIHByb3RlY3RlZCBNZXRob2QgZXJyb3IxID0gbnVsbDsKLSAgcHJvdGVjdGVkIE1ldGhvZCB3YXJuMSA9IG51bGw7Ci0gIHByb3RlY3RlZCBNZXRob2QgaW5mbzEgPSBudWxsOwotICBwcm90ZWN0ZWQgTWV0aG9kIGRlYnVnMSA9IG51bGw7Ci0gIHByb3RlY3RlZCBNZXRob2QgZXJyb3IyID0gbnVsbDsKLSAgcHJvdGVjdGVkIE1ldGhvZCB3YXJuMiA9IG51bGw7Ci0gIHByb3RlY3RlZCBNZXRob2QgaW5mbzIgPSBudWxsOwotICBwcm90ZWN0ZWQgTWV0aG9kIGRlYnVnMiA9IG51bGw7Ci0gIAotICBwdWJsaWMgTG9nNGpMb2dnZXIoKQotICB7Ci0JdHJ5Ci0gICAgewotCSAgQ2xhc3MgbG9nZ2VyQ2xhc3MgPSBnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkubG9hZENsYXNzKCJvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlciIpOwotCSAgQ2xhc3MgY2F0ZWdvcnlDbGFzcyA9IGdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKS5sb2FkQ2xhc3MoIm9yZy5hcGFjaGUubG9nNGouQ2F0ZWdvcnkiKTsKLQkgIE1ldGhvZCBnZXRMb2dnZXIgPSBsb2dnZXJDbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgiZ2V0TG9nZ2VyIiAsIG5ldyBDbGFzc1tde0NsYXNzLmNsYXNzfSk7Ci0JICBsb2dnZXIgPSBnZXRMb2dnZXIuaW52b2tlKGxvZ2dlckNsYXNzLCBuZXcgT2JqZWN0W117V1NETFZhbGlkYXRlLmNsYXNzfSk7Ci0JICBlcnJvcjEgPSBjYXRlZ29yeUNsYXNzLmdldERlY2xhcmVkTWV0aG9kKCJlcnJvciIgLCBuZXcgQ2xhc3NbXXtPYmplY3QuY2xhc3N9KTsKLQkgIHdhcm4xID0gY2F0ZWdvcnlDbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgid2FybiIgLCBuZXcgQ2xhc3NbXXtPYmplY3QuY2xhc3N9KTsKLQkgIGluZm8xID0gY2F0ZWdvcnlDbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgiaW5mbyIgLCBuZXcgQ2xhc3NbXXtPYmplY3QuY2xhc3N9KTsKLQkgIGRlYnVnMSA9IGNhdGVnb3J5Q2xhc3MuZ2V0RGVjbGFyZWRNZXRob2QoImRlYnVnIiAsIG5ldyBDbGFzc1tde09iamVjdC5jbGFzc30pOwotCSAgZXJyb3IyID0gY2F0ZWdvcnlDbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgiZXJyb3IiICwgbmV3IENsYXNzW117T2JqZWN0LmNsYXNzLCBUaHJvd2FibGUuY2xhc3N9KTsKLQkgIHdhcm4yID0gY2F0ZWdvcnlDbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgid2FybiIgLCBuZXcgQ2xhc3NbXXtPYmplY3QuY2xhc3MsIFRocm93YWJsZS5jbGFzc30pOwotCSAgaW5mbzIgPSBjYXRlZ29yeUNsYXNzLmdldERlY2xhcmVkTWV0aG9kKCJpbmZvIiAsIG5ldyBDbGFzc1tde09iamVjdC5jbGFzcywgVGhyb3dhYmxlLmNsYXNzfSk7Ci0JICBkZWJ1ZzIgPSBjYXRlZ29yeUNsYXNzLmdldERlY2xhcmVkTWV0aG9kKCJkZWJ1ZyIgLCBuZXcgQ2xhc3NbXXtPYmplY3QuY2xhc3MsIFRocm93YWJsZS5jbGFzc30pOwotCX0KLQljYXRjaChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpCi0JewotCSAgU3lzdGVtLmVyci5wcmludGxuKCJVbmFibGUgdG8gY3JlYXRlIExvZzRqIExvZ2dlci4gRW5zdXJlIExvZzRKIGlzIG9uIHRoZSBjbGFzc3BhdGguIik7IAotCX0KLQljYXRjaChOb1N1Y2hNZXRob2RFeGNlcHRpb24gZSkKLQl7Ci0JCQotCX0KLQljYXRjaChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGUpCi0JewotCQkKLQl9Ci0JY2F0Y2goSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBlKQotCXsKLQkJCi0JfQotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLklMb2dnZXIjbG9nKGphdmEubGFuZy5TdHJpbmcsIGludCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGxvZyhTdHJpbmcgbWVzc2FnZSwgaW50IHNldmVyaXR5KSAKLSAgewotCWlmKGxvZ2dlciAhPSBudWxsKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBpZihzZXZlcml0eSA9PSBJTG9nZ2VyLlNFVl9FUlJPUikKLSAgICAgICAgewotICAgICAgICAgIGVycm9yMS5pbnZva2UobG9nZ2VyLCBuZXcgT2JqZWN0W117bWVzc2FnZX0pOwotCQl9Ci0gICAgICAgIGVsc2UgaWYoc2V2ZXJpdHkgPT0gSUxvZ2dlci5TRVZfV0FSTklORykKLSAgICAgICAgewotICAgICAgICAgIHdhcm4xLmludm9rZShsb2dnZXIsIG5ldyBPYmplY3RbXXttZXNzYWdlfSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihzZXZlcml0eSA9PSBJTG9nZ2VyLlNFVl9JTkZPKQotICAgICAgICB7Ci0gICAgICAgICAgaW5mbzEuaW52b2tlKGxvZ2dlciwgbmV3IE9iamVjdFtde21lc3NhZ2V9KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHNldmVyaXR5ID09IElMb2dnZXIuU0VWX1ZFUkJPU0UpCi0gICAgICAgIHsKLSAgICAgICAgICBkZWJ1ZzEuaW52b2tlKGxvZ2dlciwgbmV3IE9iamVjdFtde21lc3NhZ2V9KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2goSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICAvLyBEbyBub3RoaW5nLgotICAgICAgfQotICAgICAgY2F0Y2goSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICAvLyBEbyBub3RoaW5nLiAgCi0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5JTG9nZ2VyI2xvZyhqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGphdmEubGFuZy5UaHJvd2FibGUpCi0gICAqLwotICBwdWJsaWMgdm9pZCBsb2coU3RyaW5nIG1lc3NhZ2UsIGludCBzZXZlcml0eSwgVGhyb3dhYmxlIHRocm93YWJsZSkgCi0gIHsKLQlpZihsb2dnZXIgIT0gbnVsbCkKLQl7Ci0JICB0cnkKLQkgIHsKLQkgICAgaWYoc2V2ZXJpdHkgPT0gSUxvZ2dlci5TRVZfRVJST1IpCi0JICAgIHsKLQkJICBlcnJvcjIuaW52b2tlKGxvZ2dlciwgbmV3IE9iamVjdFtde21lc3NhZ2UsIHRocm93YWJsZX0pOwotCSAgICB9Ci0JICAgIGVsc2UgaWYoc2V2ZXJpdHkgPT0gSUxvZ2dlci5TRVZfV0FSTklORykKLQkgICAgewotCQkgIHdhcm4yLmludm9rZShsb2dnZXIsIG5ldyBPYmplY3RbXXttZXNzYWdlLCB0aHJvd2FibGV9KTsKLQkgICAgfQotCSAgICBlbHNlIGlmKHNldmVyaXR5ID09IElMb2dnZXIuU0VWX0lORk8pCi0JICAgIHsKLQkJICBpbmZvMi5pbnZva2UobG9nZ2VyLCBuZXcgT2JqZWN0W117bWVzc2FnZSwgdGhyb3dhYmxlfSk7Ci0JICAgIH0KLQkgICAgZWxzZSBpZihzZXZlcml0eSA9PSBJTG9nZ2VyLlNFVl9WRVJCT1NFKQotCSAgICB7Ci0JICAgICAgZGVidWcyLmludm9rZShsb2dnZXIsIG5ldyBPYmplY3RbXXttZXNzYWdlLCB0aHJvd2FibGV9KTsKLQkgICAgfQotCSAgfQotCSAgY2F0Y2goSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBlKQotCSAgewotCQkvLyBEbyBub3RoaW5nLgotCSAgfQotCSAgY2F0Y2goSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBlKQotCSAgewotCQkvLyBEbyBub3RoaW5nLiAgCi0JICB9Ci0JfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvdGV4dC9XU0RMVmFsaWRhdGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L1dTRExWYWxpZGF0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTU3YmY3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L1dTRExWYWxpZGF0ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLnRleHQ7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5DbGFzc2xvYWRlcldTRExWYWxpZGF0b3JEZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uUmVwb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuV1NETFZhbGlkYXRpb25Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuV1NETFZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuTG9nZ2VyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyLlVSSVJlc29sdmVyRGVsZWdhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuQ2xhc3Nsb2FkZXJXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5XU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5YTUxDYXRhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sLlhNTENhdGFsb2dFbnRpdHlIb2xkZXI7Ci0KLWltcG9ydCBjb20uaWJtLndzZGwudXRpbC5TdHJpbmdVdGlsczsKLQotLyoqCi0gKiBBIGNvbW1hbmRlIGxpbmUgdG9vbCB0byBydW4gV1NETCBWYWxpZGF0aW9uIG9uIGEgc2luZ2xlIG9yIG11bHRpcGxlIGZpbGVzLgotICogCi0gKiBPcHRpb25zCi0gKiAtc2NoZW1hRGlyIGRpcmVjdG9yeSAgICAgICA6IGEgZGlyZWN0b3J5IG9mIHNjaGVtYXMgdG8gbG9hZCBpbnRvIHRoZSBjYXRhbG9nCi0gKiAtc2NoZW1hIG5hbWVzcGFjZSBsb2NhdGlvbiA6IGEgc2NoZW1hIHRvIGxvYWQgaW50byB0aGUgcmVnaXN0cnkKLSAqIC13c2RsMTF2IGNsYXNzbmFtZSBuYW1lc3BhY2UgcmVzb3VyY2VidW5kbGUgOiByZWdpc3RlciBhIFdTREwgMS4xIGV4dGVuc2lvbiB2YWxpZGF0b3IKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbG9hZCBmb3IgdGhlIGdpdmVuIG5hbWVzcGFjZSB3aXRoIHRoZSBnaXZlbiByZXNvdXJjZWJ1bmRsZQotICogLXdzaXYgdmFsaWRhdG9yQ2xhc3MgbmFtZXNwYWNlIHByb3BlcnRpZXNmaWxlIDogcmVnaXN0ZXIgYSBXUy1JIHZhbGlkYXRvcgotICogLXVyaXJlc29sdmVyIFVSSVJlc29sdmVyQ2xhc3MgOiByZWdpc3RlciBhbiBleHRlbnNpb24gVVJJIHJlc29sdmVyCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMVmFsaWRhdGUKLXsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgRklMRV9QUkVGSVggPSAiZmlsZTovLy8iOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkFMSURBVE9SX1BST1BFUlRJRVMgPQotICAgIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuQ29uc3RhbnRzLldTRExfVkFMSURBVE9SX1BST1BFUlRJRVNfRklMRTsKLSAgCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUkFNX1dTREwxMVZBTCA9ICItd3NkbDExdiI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUkFNX0VYVFZBTCA9ICItZXh0diI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUkFNX1NDSEVNQURJUiA9ICItc2NoZW1hRGlyIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSQU1fU0NIRU1BID0gIi1zY2hlbWEiOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJBTV9VUklSRVNPTFZFUiA9ICItdXJpcmVzb2x2ZXIiOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJBTV9MT0dHRVIgPSAiLWxvZ2dlciI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUkFNX1BST1BFUlRZID0gIi1EIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSQU1fVkVSQk9TRSA9ICItdmVyYm9zZSI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUkFNX1ZFUkJPU0VfU0hPUlQgPSAiLXYiOwotICAKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNUUklOR19FTVBUWSA9ICIiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RSSU5HX1NQQUNFID0gIiAiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RSSU5HX0RBU0ggPSAiLSI7Ci0gIAotICBTdHJpbmcgd29ya2luZ2RpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgidXNlci5kaXIiKTsKLSAgCi0gIC8vcHJvdGVjdGVkIFJlc291cmNlQnVuZGxlIHJlc291cmNlQnVuZGxlOwotCi0gIHByb3RlY3RlZCBXU0RMVmFsaWRhdG9yIHdzZGxWYWxpZGF0b3IgPSBudWxsOwotICBwcm90ZWN0ZWQgV1NETFZhbGlkYXRpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBudWxsOwotICBwcm90ZWN0ZWQgTGlzdCB3c2RsRmlsZXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIHByb3RlY3RlZCBib29sZWFuIHZlcmJvc2UgPSBmYWxzZTsKLSAgcHJvdGVjdGVkIFJlc291cmNlQnVuZGxlIHZhbGlkYXRvclJCID0gbnVsbDsKLQotICAvKioKLSAgICogQ29uc3R1Y3Rvci4KLSAgICovCi0gIHByb3RlY3RlZCBXU0RMVmFsaWRhdGUoKQotICB7Ci0gIAl3c2RsVmFsaWRhdG9yID0gbmV3IFdTRExWYWxpZGF0b3IoKTsKLSAgCWNvbmZpZ3VyYXRpb24gPSBuZXcgV1NETFZhbGlkYXRpb25Db25maWd1cmF0aW9uKCk7Ci0gIAkKLSAgICB0cnkKLSAgICB7Ci0gICAgICB2YWxpZGF0b3JSQiA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShWQUxJREFUT1JfUFJPUEVSVElFUyk7Ci0gICAgfQotICAgIGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBMb2dnZXJGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0TG9nZ2VyKCkubG9nKCJWYWxpZGF0aW9uIGZhaWxlZDogVW5hYmxlIHRvIGxvYWQgdGhlIFdTREwgdmFsaWRhdG9yIHByb3BlcnRpZXMgZmlsZS4iLCBJTG9nZ2VyLlNFVl9FUlJPUiwgZSk7Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogVmFsaWRhdGUgdGhlIGZpbGVzIHNwZWNpZmllZC4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZhbGlkYXRlKCkKLSAgewotCUlMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldExvZ2dlcigpOwotCQotCWludCBudW1JbnZhbGlkID0gMDsKLQotCUl0ZXJhdG9yIGZpbGVzSXRlciA9IHdzZGxGaWxlcy5pdGVyYXRvcigpOwotICAgIHdoaWxlIChmaWxlc0l0ZXIuaGFzTmV4dCgpKQotCXsKLQkgIFN0cmluZyB3c2RsRmlsZSA9IChTdHJpbmcpZmlsZXNJdGVyLm5leHQoKTsKLQkgIElWYWxpZGF0aW9uUmVwb3J0IHZhbFJlcG9ydCA9IHZhbGlkYXRlRmlsZSh3c2RsRmlsZSk7Ci0KLQkgIGlmKHZhbFJlcG9ydC5oYXNFcnJvcnMoKSkKLQkgIHsKLQkgICAgbnVtSW52YWxpZCsrOwotCSAgICBsb2dnZXIubG9nKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KFdTRExWYWxpZGF0ZVRleHRVSU1lc3NhZ2VzLl9VSV9GSUxFX0lOVkFMSUQsIG5ldyBPYmplY3RbXXt3c2RsRmlsZX0pLCBJTG9nZ2VyLlNFVl9JTkZPKTsKLQkgICAgLy9sb2dnZXIubG9nKFdTRExWYWxpZGF0ZVRleHRVSU1lc3NhZ2VzLl9VSV9JTkZPUk1BVElPTl9ERUxJTUlURVIsIElMb2dnZXIuU0VWX0VSUk9SKTsKLQkgICAgbG9nZ2VyLmxvZyhnZXRNZXNzYWdlcyh2YWxSZXBvcnQuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKCkpLCBJTG9nZ2VyLlNFVl9JTkZPKTsKLQkgIH0KLQkgIGVsc2UgaWYodmVyYm9zZSkKLQkgIHsKLQkgICAgbG9nZ2VyLmxvZyhNZXNzYWdlRm9ybWF0LmZvcm1hdChXU0RMVmFsaWRhdGVUZXh0VUlNZXNzYWdlcy5fVUlfRklMRV9WQUxJRCwgbmV3IE9iamVjdFtde3dzZGxGaWxlfSksIElMb2dnZXIuU0VWX1ZFUkJPU0UpOwotCSAgfQotCX0KLSAgICAKLSAgICAvLyBMb2cgdGhlIHN1bW1hcnkuCi0gICAgbG9nZ2VyLmxvZyhNZXNzYWdlRm9ybWF0LmZvcm1hdChXU0RMVmFsaWRhdGVUZXh0VUlNZXNzYWdlcy5fVUlfVkFMSURBVElPTl9TVU1NQVJZLCBuZXcgT2JqZWN0W117bmV3IEludGVnZXIod3NkbEZpbGVzLnNpemUoKSksIG5ldyBJbnRlZ2VyKG51bUludmFsaWQpfSksIElMb2dnZXIuU0VWX0lORk8pOwotICB9Ci0KLSAgLyoqCi0gICAqIFJ1biBXU0RMIHZhbGlkYXRpb24gb24gYSBnaXZlbiBmaWxlLgotICAgKiAKLSAgICogQHBhcmFtIGZpbGVuYW1lIAotICAgKiAJCVRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHZhbGlkYXRlLgotICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgotICAgKi8KLSAgcHJvdGVjdGVkIElWYWxpZGF0aW9uUmVwb3J0IHZhbGlkYXRlRmlsZShTdHJpbmcgZmlsZW5hbWUpCi0gIHsJCi0gICAgLy8gUmVzb2x2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGUuCi0gICAgU3RyaW5nIGZpbGVsb2NhdGlvbiA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgVVJMIGZpbGVVUkwgPSBTdHJpbmdVdGlscy5nZXRVUkwobmV3IFVSTChGSUxFX1BSRUZJWCArIHdvcmtpbmdkaXIgKyAiLyIpLCBmaWxlbmFtZSk7Ci0gICAgICBmaWxlbG9jYXRpb24gPSBmaWxlVVJMLnRvRXh0ZXJuYWxGb3JtKCk7Ci0gICAgfQotICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBEbyBub3RoaW5nLiBUaGUgV1NETCB2YWxpZGF0b3Igd2lsbCBoYW5kbGUgdGhlIGVycm9yLgotICAgICAgLy9Mb2dnZXJGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0TG9nZ2VyKCkubG9nKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KFdTRExWYWxpZGF0ZVRleHRVSU1lc3NhZ2VzLl9FUlJPUl9VTkFCTEVfVE9fUkVBRF9GSUxFLCBuZXcgT2JqZWN0W117ZmlsZW5hbWV9KSwgSUxvZ2dlci5TRVZfRVJST1IpOwotICAgIH0KLSAgICAKLSAgICAvLyBSdW4gdmFsaWRhdGlvbiBvbiB0aGUgZmlsZS4KLSAgICBJVmFsaWRhdGlvblJlcG9ydCB2YWxSZXBvcnQgPSB3c2RsVmFsaWRhdG9yLnZhbGlkYXRlKGZpbGVsb2NhdGlvbiwgbnVsbCwgY29uZmlndXJhdGlvbik7Ci0gICAgcmV0dXJuIHZhbFJlcG9ydDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgU3RyaW5nIHdpdGggZm9ybWF0dGVkIG91dHB1dCBmb3IgYSBsaXN0IG9mIG1lc3NhZ2VzLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2VzIAotICAgKiAJCVRoZSBtZXNzYWdlcyB0byBnZXQuCi0gICAqIEByZXR1cm4gCi0gICAqIAkJQSBzdHJpbmcgd2l0aCBhIGZvcm1hdHRlZCBsaXN0IG9mIHRoZSBtZXNzYWdlcy4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0TWVzc2FnZXMoSVZhbGlkYXRpb25NZXNzYWdlW10gbWVzc2FnZXMpCi0gIHsKLSAgICBTdHJpbmdCdWZmZXIgb3V0cHV0QnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIGlmIChtZXNzYWdlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIGNyZWF0ZSBhIGxpc3Qgb2YgbWVzc2FnZXMgdGhhdCBsb29rcyBsaWtlCi0gICAgICAvLyBFUlJPUiAxOjEgRXJyb3IgbWVzc2FnZSBjb250ZW50Ci0gICAgICBpbnQgbnVtTWVzc2FnZXMgPSBtZXNzYWdlcy5sZW5ndGg7Ci0gICAgICBTdHJpbmcgbWFya2VyID0gbnVsbDsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtTWVzc2FnZXM7IGkrKykKLSAgICAgIHsKLSAgICAgICAgSVZhbGlkYXRpb25NZXNzYWdlIG1lc3NhZ2UgPSBtZXNzYWdlc1tpXTsKLSAgICAgICAgaW50IHNldmVyaXR5ID0gbWVzc2FnZS5nZXRTZXZlcml0eSgpOwotICAgICAgICBpZiAoc2V2ZXJpdHkgPT0gSVZhbGlkYXRpb25NZXNzYWdlLlNFVl9FUlJPUikKLSAgICAgICAgewotICAgICAgICAgIG1hcmtlciA9IFdTRExWYWxpZGF0ZVRleHRVSU1lc3NhZ2VzLl9VSV9FUlJPUl9NQVJLRVI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc2V2ZXJpdHkgPT0gSVZhbGlkYXRpb25NZXNzYWdlLlNFVl9XQVJOSU5HKQotICAgICAgICB7Ci0gICAgICAgICAgbWFya2VyID0gV1NETFZhbGlkYXRlVGV4dFVJTWVzc2FnZXMuX1VJX1dBUk5JTkdfTUFSS0VSOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIG1hcmtlciA9IFNUUklOR19FTVBUWTsKLSAgICAgICAgfQotICAgICAgICBvdXRwdXRCdWZmZXIKLSAgICAgICAgICAuYXBwZW5kKG1hcmtlcikKLSAgICAgICAgICAuYXBwZW5kKFNUUklOR19TUEFDRSkKLSAgICAgICAgICAuYXBwZW5kKG1lc3NhZ2UuZ2V0TGluZSgpKQotICAgICAgICAgIC5hcHBlbmQoIjoiKQotICAgICAgICAgIC5hcHBlbmQobWVzc2FnZS5nZXRDb2x1bW4oKSkKLSAgICAgICAgICAuYXBwZW5kKFNUUklOR19TUEFDRSkKLSAgICAgICAgICAuYXBwZW5kKG1lc3NhZ2UuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgaWYoaSAhPSBudW1NZXNzYWdlcyAtMSkKLSAgICAgICAgewotICAgICAgICAgIG91dHB1dEJ1ZmZlci5hcHBlbmQoIlxuIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dEJ1ZmZlci50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtYWluIGVudHJ5IHBvaW50IGludG8gdGhlIGNvbW1hbmQgbGluZSB0b29sLiAKLSAgICogQ2hlY2tzIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLCByZWdpc3RlcnMgdGhlIGRlZmF1bHQgdmFsaWRhdG9ycyBhbmQgcnVucyB2YWxpZGF0aW9uIG9uIHRoZQotICAgKiBsaXN0IG9mIGZpbGVzLgotICAgKiAKLSAgICogQHBhcmFtIGFyZ3MgLSB0aGUgYXJndW1lbnRzIHRvIHRoZSB2YWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCi0gIHsKLSAgICAvLyBObyBhcmd1bWVudHMgc3BlY2lmaWVkLiBQcmludCB1c2FnZS4KLQlpZiAoYXJncy5sZW5ndGggPCAxKQotICAgIHsKLQkgIFN5c3RlbS5lcnIucHJpbnRsbihXU0RMVmFsaWRhdGVUZXh0VUlNZXNzYWdlcy5fRVJST1JfV1JPTkdfQVJHVU1FTlRTKTsKLQkgIFN5c3RlbS5leGl0KDApOwotCX0KLQkKLQlXU0RMVmFsaWRhdGUgd3NkbFZhbGlkYXRlID0gbmV3IFdTRExWYWxpZGF0ZSgpOwotCXdzZGxWYWxpZGF0ZS5wYXJzZUFyZ3VtZW50cyhhcmdzKTsKLQl3c2RsVmFsaWRhdGUudmFsaWRhdGUoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFBhcnNlIHRoZSBhcmd1bWVudHMgc3BlY2lmaWVkIGZvciB0aGlzIFdTRExWYWxpZGF0ZSB0YXNrIGFuZAotICAgKiBjb25maWd1cmUgdmFsaWRhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBhcmdzCi0gICAqIAkJVGhlIGFyZ3VtZW50cyBzcGVjaWZpZWQgZm9yIHRoaXMgdGFzay4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHBhcnNlQXJndW1lbnRzKFN0cmluZ1tdIGFyZ3MpCi0gIHsKLQlpbnQgbnVtYXJncyA9IGFyZ3MubGVuZ3RoOwotCi0JZm9yIChpbnQgaSA9IDA7IGkgPCBudW1hcmdzOyBpKyspCi0JewotCSAgU3RyaW5nIHBhcmFtID0gYXJnc1tpXTsKLQotCSAgLy8gUmVnaXN0ZXJpbmcgYW4gZXh0ZW5zaW9uIHZhbGlkYXRvciBvciBXU0RMIDEuMSBleHRlbnNpb24gdmFsaWRhdG9yLgotCSAgaWYgKHBhcmFtLmVxdWFscyhXU0RMVmFsaWRhdGUuUEFSQU1fV1NETDExVkFMKSAKLQkJCSAgfHwgcGFyYW0uZXF1YWxzKFdTRExWYWxpZGF0ZS5QQVJBTV9FWFRWQUwpKQotCSAgewotCSAgICBTdHJpbmcgbmFtZXNwYWNlID0gYXJnc1srK2ldOwotCSAgICBpZiAoIW5hbWVzcGFjZS5zdGFydHNXaXRoKFdTRExWYWxpZGF0ZS5TVFJJTkdfREFTSCkpCi0JICAgIHsKLQkgICAgICBTdHJpbmcgdmFsaWRhdG9yQ2xhc3MgPSBhcmdzWysraV07Ci0KLQkgICAgICBpZiAoIXZhbGlkYXRvckNsYXNzLnN0YXJ0c1dpdGgoV1NETFZhbGlkYXRlLlNUUklOR19EQVNIKSkKLQkgICAgICB7Ci0JICAgICAgICBpZihwYXJhbS5lcXVhbHNJZ25vcmVDYXNlKFdTRExWYWxpZGF0ZS5QQVJBTV9XU0RMMTFWQUwpKQotCSAgICAgICAgeyAgCi0JICAgICAgICAgIFdTREwxMVZhbGlkYXRvckRlbGVnYXRlIGRlbGVnYXRlID0gbmV3IENsYXNzbG9hZGVyV1NETDExVmFsaWRhdG9yRGVsZWdhdGUodmFsaWRhdG9yQ2xhc3MpOwotCSAgICAgICAgICB3c2RsVmFsaWRhdG9yLnJlZ2lzdGVyV1NETDExVmFsaWRhdG9yKG5hbWVzcGFjZSwgZGVsZWdhdGUpOwotCSAgICAgICAgfQotCSAgICAgICAgZWxzZSBpZihwYXJhbS5lcXVhbHNJZ25vcmVDYXNlKFdTRExWYWxpZGF0ZS5QQVJBTV9FWFRWQUwpKQotCSAgICAgICAgewotCSAgICAgICAgICBDbGFzc2xvYWRlcldTRExWYWxpZGF0b3JEZWxlZ2F0ZSBkZWxlZ2F0ZSA9IG5ldyBDbGFzc2xvYWRlcldTRExWYWxpZGF0b3JEZWxlZ2F0ZSh2YWxpZGF0b3JDbGFzcyk7Ci0JICAgICAgICAgIHdzZGxWYWxpZGF0b3IucmVnaXN0ZXJXU0RMRXh0ZW5zaW9uVmFsaWRhdG9yKG5hbWVzcGFjZSwgZGVsZWdhdGUpOwotCSAgICAgICAgfQotCSAgICAgIH0KLQkgICAgICBlbHNlCi0JICAgICAgewotCSAgICAgICAgaS0tOwotCSAgICAgIH0KLQkgICAgfQotCSAgICBlbHNlCi0JICAgIHsKLQkgICAgICBpLS07Ci0JICAgIH0gIAotCSAgfQotCSAgLy8gUmVnaXN0ZXIgYSBkaXJlY3Rvcnkgd2l0aCBzY2hlbWFzLgotCSAgZWxzZSBpZiAocGFyYW0uZXF1YWxzSWdub3JlQ2FzZShXU0RMVmFsaWRhdGUuUEFSQU1fU0NIRU1BRElSKSkKLQkgIHsKLQkgICAgU3RyaW5nIHhzZERpciA9IGFyZ3NbKytpXTsKLQkgICAgWE1MQ2F0YWxvZy5hZGRTY2hlbWFEaXIoeHNkRGlyKTsKLQkgIH0KLQkgIC8vIFJlZ2lzdGVyIGEgc2NoZW1hLgotCSAgLy8gVE9ETzogUmVwbGFjZSB0aGlzIHdpdGggYW4gWE1MIGNhdGFsb2cuCi0JICBlbHNlIGlmIChwYXJhbS5lcXVhbHNJZ25vcmVDYXNlKFdTRExWYWxpZGF0ZS5QQVJBTV9TQ0hFTUEpKQotCSAgewotCSAgICBTdHJpbmcgcHVibGljaWQgPSBhcmdzWysraV07Ci0JICAgIFN0cmluZyBzeXN0ZW1pZCA9IGFyZ3NbKytpXTsKLQkgICAgWE1MQ2F0YWxvZy5hZGRFbnRpdHkobmV3IFhNTENhdGFsb2dFbnRpdHlIb2xkZXIocHVibGljaWQsIHN5c3RlbWlkKSk7Ci0JICB9Ci0JICAvLyBSZWdpc3RlciBhIFVSSSByZXNvbHZlci4gCi0JICAvLyBUT0RPOiBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhcHByb3ByaWF0ZSBmb3IgdGhlIHRleHQgVUkuCi0JICBlbHNlIGlmKHBhcmFtLmVxdWFsc0lnbm9yZUNhc2UoUEFSQU1fVVJJUkVTT0xWRVIpKQotCSAgewotCSAgICBTdHJpbmcgcmVzb2x2ZXJDbGFzcyA9IGFyZ3NbKytpXTsKLQkgICAgd3NkbFZhbGlkYXRvci5hZGRVUklSZXNvbHZlcihuZXcgVVJJUmVzb2x2ZXJEZWxlZ2F0ZShyZXNvbHZlckNsYXNzLCBudWxsKS5nZXRVUklSZXNvbHZlcigpKTsKLQkgIH0KLQkgIC8vIENvbmZpZ3VyZSB0aGUgbG9nZ2VyLgotCSAgZWxzZSBpZihwYXJhbS5lcXVhbHMoUEFSQU1fTE9HR0VSKSkKLQkgIHsKLQkgICAgU3RyaW5nIGxvZ2dlckNsYXNzU3RyaW5nID0gYXJnc1srK2ldOwotCSAgICB0cnkKLQkgICAgewotCSAgICAgIENsYXNzIGxvZ2dlckNsYXNzID0gV1NETFZhbGlkYXRlLmNsYXNzLmdldENsYXNzTG9hZGVyKCkubG9hZENsYXNzKGxvZ2dlckNsYXNzU3RyaW5nKTsKLQkgICAgICBJTG9nZ2VyIGxvZ2dlciA9IChJTG9nZ2VyKWxvZ2dlckNsYXNzLm5ld0luc3RhbmNlKCk7Ci0JICAgICAgTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLnNldExvZ2dlcihsb2dnZXIpOwotCSAgICB9Ci0JICAgIGNhdGNoKEV4Y2VwdGlvbiBlKQotCSAgICB7Ci0JICAgICAgU3lzdGVtLmVyci5wcmludGxuKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KFdTRExWYWxpZGF0ZVRleHRVSU1lc3NhZ2VzLl9FUlJPUl9MT0FESU5HX0xPR0dFUiwgbmV3IE9iamVjdFtde2xvZ2dlckNsYXNzU3RyaW5nfSkpOwotCSAgICB9Ci0JICB9Ci0JICAvLyBTZXQgcHJvcGVydGllcy4KLQkgIGVsc2UgaWYocGFyYW0uc3RhcnRzV2l0aChQQVJBTV9QUk9QRVJUWSkpCi0JICB7Ci0JICAgIGludCBzZXBhcmF0b3IgPSBwYXJhbS5pbmRleE9mKCc9Jyk7Ci0JICAgIFN0cmluZyBuYW1lID0gcGFyYW0uc3Vic3RyaW5nKDIsIHNlcGFyYXRvcik7Ci0JICAgIFN0cmluZyB2YWx1ZSA9IHBhcmFtLnN1YnN0cmluZyhzZXBhcmF0b3IrMSk7Ci0JICAgIGNvbmZpZ3VyYXRpb24uc2V0UHJvcGVydHkobmFtZSwgdmFsdWUpOwotCSAgfQotCSAgLy8gU2V0IHZlcmJvc2U7Ci0JICBlbHNlIGlmKHBhcmFtLmVxdWFscyhQQVJBTV9WRVJCT1NFKSB8fCBwYXJhbS5lcXVhbHMoIFBBUkFNX1ZFUkJPU0VfU0hPUlQpKQotCSAgewotCQl2ZXJib3NlID0gdHJ1ZTsKLQkgIH0KLQkgIC8vIGEgZmlsZSB0byB2YWxpZGF0ZQotCSAgZWxzZQotCSAgewotCSAgICBpZighcGFyYW0uc3RhcnRzV2l0aChXU0RMVmFsaWRhdGUuU1RSSU5HX0RBU0gpKQotCSAgICB7ICAKLQkgICAgICB3c2RsRmlsZXMuYWRkKHBhcmFtKTsKLQkgICAgfQotCSAgfQotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL3RleHQvV1NETFZhbGlkYXRlVGV4dFVJTWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L1dTRExWYWxpZGF0ZVRleHRVSU1lc3NhZ2VzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YWM4ZTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL3RleHQvV1NETFZhbGlkYXRlVGV4dFVJTWVzc2FnZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDb21tb24gUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiAKLSAqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLnRleHQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci0KLS8qKgotICogU3RyaW5ncyB1c2VkIGJ5IHRoZSBXU0RMVmFsaWRhdGUgdGV4dCBVSS4KLSAqIFRoaXMgY2xhc3MgbWltaWNzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIE9TR0kgTkxTIGNsYXNzIGZvciBjb252ZW5pZW5jZS4KLSAqLwotcHVibGljIGNsYXNzIFdTRExWYWxpZGF0ZVRleHRVSU1lc3NhZ2VzCi17Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudWkudGV4dC53c2RsdmFsaWRhdGV0ZXh0dWkiOy8vJE5PTi1OTFMtMSQKLQotCS8vIEVycm9yIG1lc3NhZ2VzLgotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIF9FUlJPUl9XUk9OR19BUkdVTUVOVFMgPSAiX0VSUk9SX1dST05HX0FSR1VNRU5UUyI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgX0VSUk9SX0xPQURJTkdfTE9HR0VSID0gIl9FUlJPUl9MT0FESU5HX0xPR0dFUiI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgX0VSUk9SX1VOQUJMRV9UT19SRUFEX0ZJTEUgPSAiX0VSUk9SX1VOQUJMRV9UT19SRUFEX0ZJTEUiOwotCQotCS8vIFZhbGlkYXRpb24gbWVzc2FnZXMuCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgX1VJX0lORk9STUFUSU9OX0RFTElNSVRFUiA9ICJfVUlfSU5GT1JNQVRJT05fREVMSU1JVEVSIjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBfVUlfRklMRV9WQUxJRCA9ICJfVUlfRklMRV9WQUxJRCI7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgX1VJX0ZJTEVfSU5WQUxJRCA9ICJfVUlfRklMRV9JTlZBTElEIjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBfVUlfRVJST1JfTUFSS0VSID0gIl9VSV9FUlJPUl9NQVJLRVIiOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIF9VSV9XQVJOSU5HX01BUktFUiA9ICJfVUlfV0FSTklOR19NQVJLRVIiOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIF9VSV9WQUxJREFUSU9OX1NVTU1BUlkgPSAiX1VJX1ZBTElEQVRJT05fU1VNTUFSWSI7Ci0KLQlzdGF0aWMgCi0JewotCQkvLyBsb2FkIG1lc3NhZ2UgdmFsdWVzIGZyb20gYnVuZGxlIGZpbGUKLQkJUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKEJVTkRMRV9OQU1FKTsKLQkJX0VSUk9SX1dST05HX0FSR1VNRU5UUyA9IGJ1bmRsZS5nZXRTdHJpbmcoU3RyaW5nLnZhbHVlT2YoX0VSUk9SX1dST05HX0FSR1VNRU5UUykpOwotCQlfRVJST1JfTE9BRElOR19MT0dHRVIgPSBidW5kbGUuZ2V0U3RyaW5nKF9FUlJPUl9MT0FESU5HX0xPR0dFUik7Ci0JCV9FUlJPUl9VTkFCTEVfVE9fUkVBRF9GSUxFID0gYnVuZGxlLmdldFN0cmluZyhfRVJST1JfVU5BQkxFX1RPX1JFQURfRklMRSk7Ci0JCV9VSV9JTkZPUk1BVElPTl9ERUxJTUlURVIgPSBidW5kbGUuZ2V0U3RyaW5nKF9VSV9JTkZPUk1BVElPTl9ERUxJTUlURVIpOwotCQlfVUlfRklMRV9WQUxJRCA9IGJ1bmRsZS5nZXRTdHJpbmcoX1VJX0ZJTEVfVkFMSUQpOwotCQlfVUlfRklMRV9JTlZBTElEID0gYnVuZGxlLmdldFN0cmluZyhfVUlfRklMRV9JTlZBTElEKTsKLQkJX1VJX0VSUk9SX01BUktFUiA9IGJ1bmRsZS5nZXRTdHJpbmcoX1VJX0VSUk9SX01BUktFUik7Ci0JCV9VSV9XQVJOSU5HX01BUktFUiA9IGJ1bmRsZS5nZXRTdHJpbmcoX1VJX1dBUk5JTkdfTUFSS0VSKTsKLQkJX1VJX1ZBTElEQVRJT05fU1VNTUFSWSA9IGJ1bmRsZS5nZXRTdHJpbmcoX1VJX1ZBTElEQVRJT05fU1VNTUFSWSk7Ci0JfQotCi0JcHJpdmF0ZSBXU0RMVmFsaWRhdGVUZXh0VUlNZXNzYWdlcygpIAotCXsKLQkJLy8gY2Fubm90IGNyZWF0ZSBuZXcgaW5zdGFuY2UKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvdGV4dC93c2RsdmFsaWRhdGV0ZXh0dWkucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L3dzZGx2YWxpZGF0ZXRleHR1aS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGVkODJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L3dzZGx2YWxpZGF0ZXRleHR1aS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBNZXNzYWdlcyBmb3IgdGhlIFdTRExWYWxpZGF0ZSB0ZXh0IFVJIGludGVyZmFjZS4KLQotIyBFcnJvciBtZXNzYWdlcwotX0VSUk9SX1dST05HX0FSR1VNRU5UUyAgICAgPSBVc2FnZTogV1NETFZhbGlkYXRlIFstd3NkbDExdiBuYW1lc3BhY2UgY2xhc3NuYW1lXSBbLWV4dHYgbmFtZXNwYWNlIGNsYXNzbmFtZV0gWy1EbmFtZT12YWx1ZV0gZmlsZW5hbWVcblwKLVwgIC13c2RsMTF2XHRSZWdpc3RlciB0aGUgV1NETCAxLjEgdmFsaWRhdG9yIHNwZWNpZmllZCBieSBjbGFzc25hbWVcblwKLVx0XHRmb3IgbmFtZXNwYWNlLlxuXAotXCAgLWV4dHZcdFx0UmVnaXN0ZXIgdGhlIFdTREwgZXh0ZW5zaW9uIHZhbGlkYXRvciBzcGVjaWZpZWQgYnlcblwKLVx0XHRjbGFzc25hbWUgZm9yIG5hbWVzcGFjZS5cblwKLVwgIC12ZXJib3NlLCAtdlx0UHJpbnQgb3V0IHZlcmJvc2UgaW5mb3JtYXRpb24uXG5cCi1cICAtbG9nZ2VyXHRTcGVjaWZ5IGFuIGFsdGVybmF0ZSBsb2dnZXIgdGhhdCBpbXBsZW1lbnRzXG5cCi1cdFx0b3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLklMb2dnZXJcblwKLVwgIC1EXHRcdFNwZWNpZnkgYSBwcm9wZXJ0eSB3aXRoIG5hbWUgYW5kIHZhbHVlLiAgCi1fRVJST1JfTE9BRElOR19MT0dHRVIgICAgICA9IFVuYWJsZSB0byBsb2FkIGxvZ2dlciBjbGFzcyB7MH0uCi1fRVJST1JfVU5BQkxFX1RPX1JFQURfRklMRSA9IFVuYWJsZSB0byByZWFkIGZpbGUgezB9LgotCi0jIFZhbGlkYXRpb24gbWVzc2FnZXMKLV9VSV9JTkZPUk1BVElPTl9ERUxJTUlURVIgID0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1fVUlfRklMRV9JTlZBTElEICAgICAgICAgICA9IHswfSAtIE5vdCB2YWxpZAotX1VJX0ZJTEVfVkFMSUQgICAgICAgICAgICAgPSB7MH0gLSBWYWxpZAotX1VJX0VSUk9SX01BUktFUiAgICAgICAgICAgPSBFUlJPUgotX1VJX1dBUk5JTkdfTUFSS0VSICAgICAgICAgPSBXQVJOSU5HCi1fVUlfVkFMSURBVElPTl9TVU1NQVJZICAgICA9IHswfSBmaWxlcyB2YWxpZGF0ZWQuIHsxfSBmaWxlcyByZXBvcnRlZCBlcnJvcnMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3V0aWwvRXJyb3JNZXNzYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdXRpbC9FcnJvck1lc3NhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhhMTRiZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdXRpbC9FcnJvck1lc3NhZ2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51dGlsOwotCi0vKioKLSAqIEEgY2xhc3MgdG8gaG9sZCB2YWxpZGF0aW9uIG1lc3NhZ2VzLiBJbiB0aGlzIGNhc2UgYW4gZXJyb3IgbWVzc2FnZSBpcyBhIGdlbmVyaWMKLSAqIHRlcm0gZm9yIGFueSBraW5kIG9mIHZhbGlkYXRpb24gbWVzc2FnZS4KLSAqLwotcHVibGljIGNsYXNzIEVycm9yTWVzc2FnZQotewotICBwcml2YXRlIGludCBlcnJvckxpbmUsIGVycm9yQ29sdW1uLCBzZXZlcml0eTsKLSAgcHJpdmF0ZSBTdHJpbmcgZXJyb3JTdHJpbmcsIHVyaTsKLSAgcHJpdmF0ZSBpbnQgc3RhcnRPZmZzZXQgPSAtMTsKLSAgcHJpdmF0ZSBpbnQgZW5kT2Zmc2V0ID0gLTE7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIEVycm9yTWVzc2FnZSgpCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBtZXNzYWdlLgotICAgKiAKLSAgICogQHBhcmFtIGVycm9yIFRoZSBtZXNzYWdlIHRvIHNldC4KLSAgICogQHNlZSAjZ2V0RXJyb3JNZXNzYWdlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFcnJvck1lc3NhZ2UoU3RyaW5nIGVycm9yKQotICB7Ci0gICAgZXJyb3JTdHJpbmcgPSBlcnJvcjsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBzZXZlcml0eSBvZiB0aGUgbWVzc2FnZS4KLSAgICogCi0gICAqIEBwYXJhbSBzZXZlcml0eSBUaGUgc2V2ZXJpdHkgb2YgdGhlIG1lc3NhZ2UuCi0gICAqIEBzZWUgI2dldFNldmVyaXR5Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZXZlcml0eShpbnQgc2V2ZXJpdHkpCi0gIHsKLSAgICB0aGlzLnNldmVyaXR5ID0gc2V2ZXJpdHk7Ci0gIH0KLQotICAvKioKLSAgICogU2V0cyB0aGUgc2V2ZXJpdHkgb2YgdGhlIG1lc3NhZ2UgdXNpbmcgc3RyaW5nIG5hbWVzIGZvciB0aGUgc2V2ZXJpdHkuCi0gICAqIAotICAgKiBAcGFyYW0gc2V2ZXJpdHkgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2V2ZXJpdHkuCi0gICAqIEBzZWUgI2dldFNldmVyaXR5Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZXZlcml0eShTdHJpbmcgc2V2ZXJpdHkpCi0gIHsKLSAgICBpZiAoc2V2ZXJpdHkuZXF1YWxzKCJ3YXJuaW5nIikpCi0gICAgewotICAgICAgdGhpcy5zZXZlcml0eSA9IDA7Ci0gICAgfQotICAgIGVsc2UgaWYgKHNldmVyaXR5LmVxdWFscygiZXJyb3IiKSkKLSAgICB7Ci0gICAgICB0aGlzLnNldmVyaXR5ID0gMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2V2ZXJpdHkuZXF1YWxzKCJmYXRhbCIpKQotICAgIHsKLSAgICAgIHRoaXMuc2V2ZXJpdHkgPSAyOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBsaW5lIHdoZXJlIHRoZSBlcnJvciBpcyBsb2NhdGVkLgotICAgKiAKLSAgICogQHBhcmFtIGxpbmUgVGhlIGxpbmUgd2hlcmUgdGhlIGVycm9yIGlzIGxvY2F0ZWQuCi0gICAqIEBzZWUgI2dldEVycm9yTGluZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RXJyb3JMaW5lKGludCBsaW5lKQotICB7Ci0gICAgZXJyb3JMaW5lID0gbGluZTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBjb2x1bW4gd2hlcmUgdGhlIGVycm9yIGlzIGxvY2F0ZWQuCi0gICAqIAotICAgKiBAcGFyYW0gY29sdW1uIFRoZSBjb2x1bW4gd2hlcmUgdGhlIGVycm9yIGlzIGxvY2F0ZWQuCi0gICAqIEBzZWUgI2dldEVycm9yQ29sdW1uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFcnJvckNvbHVtbihpbnQgY29sdW1uKQotICB7Ci0gICAgZXJyb3JDb2x1bW4gPSBjb2x1bW47Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZS4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGVycm9yIG1lc3NhZ2UuCi0gICAqIEBzZWUgI3NldEVycm9yTWVzc2FnZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRFcnJvck1lc3NhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGVycm9yU3RyaW5nOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHNldmVyaXR5IG9mIHRoZSBlcnJvci4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIHNldmVyaXR5IG9mIHRoZSBlcnJvci4KLSAgICogQHNlZSAjc2V0U2V2ZXJpdHkKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0U2V2ZXJpdHkoKQotICB7Ci0gICAgcmV0dXJuIHNldmVyaXR5OwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGxpbmUgbG9jYXRpb24gb2YgdGhlIGVycm9yLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgbGluZSBsb2NhdGlvbiBvZiB0aGUgZXJyb3IuCi0gICAqIEBzZWUgI3NldEVycm9yTGluZQotICAgKi8KLSAgcHVibGljIGludCBnZXRFcnJvckxpbmUoKQotICB7Ci0gICAgcmV0dXJuIGVycm9yTGluZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBjb2x1bW4gbG9jYXRpb24gb2YgdGhlIGVycm9yLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgY29sdW1uIGxvY2F0aW9uIG9mIHRoZSBlcnJvci4KLSAgICogQHNlZSAjc2V0RXJyb3JDb2x1bW4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0RXJyb3JDb2x1bW4oKQotICB7Ci0gICAgcmV0dXJuIGVycm9yQ29sdW1uOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHN0YXJ0IG9mZnNldC4KLSAgICogCi0gICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2Zmc2V0LgotICAgKiBAc2VlICNnZXRFcnJvclN0YXJ0T2Zmc2V0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFcnJvclN0YXJ0T2Zmc2V0KGludCBzdGFydCkKLSAgewotICAgIHN0YXJ0T2Zmc2V0ID0gc3RhcnQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgZXJyb3Igc3RhcnQgb2Zmc2V0LgotICAgKiAKLSAgICogQHJldHVybiBUaGUgZXJyb3Igc3RhcnQgb2Zmc2V0LgotICAgKiBAc2VlICNzZXRFcnJvclN0YXJ0T2Zmc2V0Ci0gICAqLwotICBwdWJsaWMgaW50IGdldEVycm9yU3RhcnRPZmZzZXQoKQotICB7Ci0gICAgcmV0dXJuIHN0YXJ0T2Zmc2V0OwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIGVuZCBvZmZzZXQuCi0gICAqIAotICAgKiBAcGFyYW0gZW5kIFRoZSBlbmQgb2Zmc2V0LgotICAgKiBAc2VlICNnZXRFcnJvckVuZE9mZnNldAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RXJyb3JFbmRPZmZzZXQoaW50IGVuZCkKLSAgewotICAgIGVuZE9mZnNldCA9IGVuZDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBlcnJvciBlbmQgb2Zmc2V0LgotICAgKiAKLSAgICogQHJldHVybiBUaGUgZXJyb3IgZW5kIG9mZnNldC4KLSAgICogQHNlZSAjc2V0RXJyb3JFbmRPZmZzZXQKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0RXJyb3JFbmRPZmZzZXQoKQotICB7Ci0gICAgcmV0dXJuIGVuZE9mZnNldDsKLSAgfQotCi0gIC8qKgotICAgKiBBZGRzIGEgbmV3IGxpbmUgb3QgdGhlIGVycm9yIG1lc3NhZ2UuCi0gICAqIAotICAgKiBAcGFyYW0gbmV3TGluZSBUaGUgbmV3IGxpbmUgdG8gYWRkIHRvIHRoZSBlcnJvciBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkTmV3RXJyb3JNZXNzYWdlTGluZShTdHJpbmcgbmV3TGluZSkKLSAgewotICAgIGVycm9yU3RyaW5nICs9ICJcbiIgKyBuZXdMaW5lOwotICB9Ci0gIAotICAvKioKLSAgICogU2V0IHRoZSBVUkkgb2YgdGhlIGVycm9yIG1lc3NhZ2UuCi0gICAqIAotICAgKiBAcGFyYW0gdXJpIFRoZSBVUkkgdG8gc2V0LgotICAgKi8KLSAKLSAgcHVibGljIHZvaWQgc2V0VVJJKFN0cmluZyB1cmkpCi0gIHsKLSAgICB0aGlzLnVyaSA9IHVyaTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgVVJJIG9mIHRoZSBlcnJvciBtZXNzYWdlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgVVJJIG9mIHRoZSBlcnJvciBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRVUkkoKQotICB7Ci0gICAgcmV0dXJuIHVyaTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3V0aWwvTGF6eVVSTElucHV0U3RyZWFtLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdXRpbC9MYXp5VVJMSW5wdXRTdHJlYW0uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc2MGFmOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdXRpbC9MYXp5VVJMSW5wdXRTdHJlYW0uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51dGlsOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuTG9nZ2VyRmFjdG9yeTsKLQotCi0vKioKLSAqIFRoaXMgY2xhc3MgYWxsb3dzIElucHV0U3RyZWFtcyB0byBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZCB0byB4ZXJjZXMgd2l0aG91dAotICogYWN0dWFsbHkgb3BlbmluZyBmaWxlIGhhbmRsZXMgb3IgbmV0d29yayBjb25uZWN0aW9ucyB1bnRpbCBpdCBpcyBhYnNvbHV0ZWx5Ci0gKiBuZWNjZXNzYXJ5LgotICovCi1wdWJsaWMgY2xhc3MgTGF6eVVSTElucHV0U3RyZWFtIGV4dGVuZHMgSW5wdXRTdHJlYW0KLXsgIAotICBwcml2YXRlIHN0YXRpYyBpbnQgZGVidWdUb3RhbE9wZW5TdHJlYW1Db3VudCA9IDA7IAotICBwcm90ZWN0ZWQgSW5wdXRTdHJlYW0gaW5uZXI7Ci0gIHByb3RlY3RlZCBTdHJpbmcgdXJsOwotICBwcm90ZWN0ZWQgYm9vbGVhbiBlcnJvcjsKLSAgYm9vbGVhbiBoYXNNYXJrczsKLSAgYm9vbGVhbiBwcmV0ZW5kRmlsZUlzU3RpbGxPcGVuOwotCi0gIHB1YmxpYyBMYXp5VVJMSW5wdXRTdHJlYW0oU3RyaW5nIHVybCkKLSAgewotICAgIHRoaXMudXJsID0gdXJsOwotCWlubmVyID0gbnVsbDsKLQlwcmV0ZW5kRmlsZUlzU3RpbGxPcGVuID0gZmFsc2U7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgY3JlYXRlSW5uZXJTdHJlYW1JZlJlcXVpcmVkKCkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBpZiAoaW5uZXIgPT0gbnVsbCAmJiAhZXJyb3IpCi0gICAgewotICAgICAgZGVidWdUb3RhbE9wZW5TdHJlYW1Db3VudCsrOwotICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIkNyZWF0aW5nIHN0cmVhbSAoIiArIGRlYnVnVG90YWxPcGVuU3RyZWFtQ291bnQgKyAiKS0tICIgKyB1cmwpOwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGlubmVyID0gbmV3IFVSTCh1cmwpLm9wZW5TdHJlYW0oKTsKLQkJcHJldGVuZEZpbGVJc1N0aWxsT3BlbiA9IGZhbHNlOwotCQloYXNNYXJrcyA9IGZhbHNlOwotICAgICAgfQotICAgICAgZmluYWxseSAKLSAgICAgIHsKLSAgICAgICAgaWYgKGlubmVyID09IG51bGwpCi0gICAgICAgIHsgIAotICAgICAgICAgIGVycm9yID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0JcHJvdGVjdGVkIHZvaWQgY2xvc2VTdHJlYW0oKSB0aHJvd3MgSU9FeGNlcHRpb24gewotCQlpZiAoaW5uZXIgIT0gbnVsbCAmJiAhcHJldGVuZEZpbGVJc1N0aWxsT3BlbikgewotCQkJaW5uZXIuY2xvc2UoKTsKLQkJCXByZXRlbmRGaWxlSXNTdGlsbE9wZW4gPSB0cnVlOwotCQl9Ci0gIAl9Ci0KLSAgcHVibGljIGludCBhdmFpbGFibGUoKSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotCWlmIChwcmV0ZW5kRmlsZUlzU3RpbGxPcGVuKSByZXR1cm4gMDsKLQljcmVhdGVJbm5lclN0cmVhbUlmUmVxdWlyZWQoKTsKLQlpZiAoaW5uZXIgPT0gbnVsbCkgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJTdHJlYW0gbm90IGF2YWlsYWJsZSIpOwotCXJldHVybiBpbm5lci5hdmFpbGFibGUoKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLQlpZiAocHJldGVuZEZpbGVJc1N0aWxsT3BlbikgewotCQkvLyBTdG9wIGJlaGF2aW5nIGFzIGlmIHRoZSBzdHJlYW0gd2VyZSBzdGlsbCBvcGVuLgotCQlwcmV0ZW5kRmlsZUlzU3RpbGxPcGVuID0gZmFsc2U7Ci0JfSBlbHNlIHsKLQkJaWYgKGlubmVyICE9IG51bGwpIHsKLQkJCWRlYnVnVG90YWxPcGVuU3RyZWFtQ291bnQtLTsKLQkJICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIkNsb3Npbmcgc3RyZWFtICgiICsgZGVidWdUb3RhbE9wZW5TdHJlYW1Db3VudCArICIpIC0tICIgKyB1cmwpOwotCQkJaW5uZXIuY2xvc2UoKTsKLQkJfQotCX0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIG1hcmsoaW50IHJlYWRsaW1pdCkKLSAgewotCWlmIChwcmV0ZW5kRmlsZUlzU3RpbGxPcGVuKSByZXR1cm47Ci0JaGFzTWFya3MgPSB0cnVlOwotCXRyeSB7Ci0JCWNyZWF0ZUlubmVyU3RyZWFtSWZSZXF1aXJlZCgpOwotCQlpbm5lci5tYXJrKHJlYWRsaW1pdCk7Ci0JfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewotCSAgTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldExvZ2dlcigpLmxvZygiVGhlIGZvbGxvd2luZyBJT0V4Y2VwdGlvbiBvY2N1cnJlZCBpbiB0aGUgV1NETCB2YWxpZGF0b3IncyBMYXp5VVJMSW5wdXRTdHJlYW0uIiwgSUxvZ2dlci5TRVZfRVJST1IsIGUpOwotCX0KLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIG1hcmtTdXBwb3J0ZWQoKQotICB7Ci0JaWYgKHByZXRlbmRGaWxlSXNTdGlsbE9wZW4pIHJldHVybiBmYWxzZTsKLQl0cnkgewotCQljcmVhdGVJbm5lclN0cmVhbUlmUmVxdWlyZWQoKTsKLQkJaWYgKGlubmVyID09IG51bGwpIHJldHVybiBmYWxzZTsKLQkJcmV0dXJuIGlubmVyLm1hcmtTdXBwb3J0ZWQoKTsKLQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JICBMb2dnZXJGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0TG9nZ2VyKCkubG9nKCJUaGUgZm9sbG93aW5nIElPRXhjZXB0aW9uIG9jY3VycmVkIGluIHRoZSBXU0RMIHZhbGlkYXRvcidzIExhenlVUkxJbnB1dFN0cmVhbS4iLCBJTG9nZ2VyLlNFVl9FUlJPUiwgZSk7Ci0JfQotCXJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBpbnQgcmVhZCgpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0JaWYgKHByZXRlbmRGaWxlSXNTdGlsbE9wZW4pIHJldHVybiAtMTsKLQljcmVhdGVJbm5lclN0cmVhbUlmUmVxdWlyZWQoKTsKLQlpZiAoaW5uZXIgPT0gbnVsbCkgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJTdHJlYW0gbm90IGF2YWlsYWJsZSIpOwotCWludCBieXRlc1JlYWQgPSBpbm5lci5yZWFkKCk7Ci0JaWYgKGJ5dGVzUmVhZCA9PSAtMSAmJiAhaGFzTWFya3MpIGNsb3NlU3RyZWFtKCk7Ci0JcmV0dXJuIGJ5dGVzUmVhZDsKLSAgfQotCi0KLQlwdWJsaWMgaW50IHJlYWQoYnl0ZVtdIGIpIHRocm93cyBJT0V4Y2VwdGlvbiB7Ci0JCWlmIChwcmV0ZW5kRmlsZUlzU3RpbGxPcGVuKSByZXR1cm4gLTE7Ci0JCWNyZWF0ZUlubmVyU3RyZWFtSWZSZXF1aXJlZCgpOwotCQlpZiAoaW5uZXIgPT0gbnVsbCkgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJTdHJlYW0gbm90IGF2YWlsYWJsZSIpOwotCQlpbnQgYnl0ZXNSZWFkID0gaW5uZXIucmVhZChiKTsKLQkJaWYgKGJ5dGVzUmVhZCA9PSAtMSAmJiAhaGFzTWFya3MpIGNsb3NlU3RyZWFtKCk7Ci0JCXJldHVybiBieXRlc1JlYWQ7Ci0JfQotCi0gIHB1YmxpYyBpbnQgcmVhZChieXRlW10gYiwgaW50IG9mZiwgaW50IGxlbikgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsgICAgCi0JaWYgKHByZXRlbmRGaWxlSXNTdGlsbE9wZW4pIHJldHVybiAtMTsKLQljcmVhdGVJbm5lclN0cmVhbUlmUmVxdWlyZWQoKTsKLQlpZiAoaW5uZXIgPT0gbnVsbCkgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJTdHJlYW0gbm90IGF2YWlsYWJsZSIpOwotCWludCBieXRlc1JlYWQgPSBpbm5lci5yZWFkKGIsIG9mZiwgbGVuKTsKLQlpZiAoYnl0ZXNSZWFkID09IC0xICYmICFoYXNNYXJrcykgY2xvc2VTdHJlYW0oKTsKLQlyZXR1cm4gYnl0ZXNSZWFkOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVzZXQoKSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotCWlmIChwcmV0ZW5kRmlsZUlzU3RpbGxPcGVuKSByZXR1cm47Ci0JY3JlYXRlSW5uZXJTdHJlYW1JZlJlcXVpcmVkKCk7Ci0JaWYgKGlubmVyID09IG51bGwpIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiU3RyZWFtIG5vdCBhdmFpbGFibGUiKTsKLQlpbm5lci5yZXNldCgpOwotICB9Ci0KLSAgcHVibGljIGxvbmcgc2tpcChsb25nIG4pIHRocm93cyBJT0V4Y2VwdGlvbgotICB7ICAgCi0JaWYgKHByZXRlbmRGaWxlSXNTdGlsbE9wZW4pIHJldHVybiAwOwotCWNyZWF0ZUlubmVyU3RyZWFtSWZSZXF1aXJlZCgpOwotCWlmIChpbm5lciA9PSBudWxsKSB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlN0cmVhbSBub3QgYXZhaWxhYmxlIik7Ci0JcmV0dXJuIGlubmVyLnNraXAobik7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91dGlsL01lc3NhZ2VHZW5lcmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91dGlsL01lc3NhZ2VHZW5lcmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUyMzQ3Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdXRpbC9NZXNzYWdlR2VuZXJhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOwotaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OwotCi0vKioKLSAqIEEgY29udmVuaWVuY2UgY2xhc3MgZm9yIHdvcmtpbmcgd2l0aCByZXNvdXJjZXMgaW4gYSByZXNvdXJjZSBidW5kbGUuCi0gKi8KLXB1YmxpYyBjbGFzcyBNZXNzYWdlR2VuZXJhdG9yCi17Ci0gIHByb3RlY3RlZCBSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZWJ1bmRsZTsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gcmIgVGhlIHJlc291cmNlIGJ1bmRsZSB0byB3b3JrIHdpdGguCi0gICAqLwotICBwdWJsaWMgTWVzc2FnZUdlbmVyYXRvcihSZXNvdXJjZUJ1bmRsZSByYikKLSAgewotICAgIHJlc291cmNlYnVuZGxlID0gcmI7Ci0gIH0KLQotICAvKioKLSAgKiBTZXQgdGhlIHJlc291cmNlYnVuZGxlIHRvIHRoZSBvbmUgc3BlY2lmaWVkLgotICAqIAotICAqIEBwYXJhbSByYiBUaGUgcmVzb3VyY2UgYnVuZGxlIHRvIHNldC4KLSAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgc2V0UmVzb3VyY2VCdW5kbGUoUmVzb3VyY2VCdW5kbGUgcmIpCi0gIHsKLSAgICByZXNvdXJjZWJ1bmRsZSA9IHJiOwotICB9Ci0KLSAgLyoqCi0gICogR2V0cyB0aGUgc3RyaW5nIHJlc291cmNlIGZvciB0aGUgZ2l2ZW4ga2V5LgotICAqIAotICAqIEBwYXJhbSBrZXkgVGhlIGtleSBmb3IgdGhlIHJlc291cmNlLgotICAqIEByZXR1cm4gVGhlIHN0cmluZyBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGUuCi0gICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RyaW5nKFN0cmluZyBrZXkpCi0gIHsKLSAgICByZXR1cm4gcmVzb3VyY2VidW5kbGUuZ2V0U3RyaW5nKGtleSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyB0aGUgc3RyaW5nIHJlc291cmNlIGZvciB0aGUgZ2l2ZW4ga2V5IGFuZCBkb2VzIG9uZSBzdWJzdGl0dXRpb24uCi0gICAqIAotICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgZm9yIHRoZSByZXNvdXJjZS4KLSAgICogQHBhcmFtIHMxIFRoZSBzdWJzdGl0dXRpb24gdG8gcGVyZm9ybS4KLSAgICogQHJldHVybiBUaGUgc3RyaW5nIGZyb20gdGhlIHJlc291cmNlIGJ1bmRsZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RyaW5nKFN0cmluZyBrZXksIE9iamVjdCBzMSkKLSAgewotICAgIHJldHVybiBNZXNzYWdlRm9ybWF0LmZvcm1hdChnZXRTdHJpbmcoa2V5KSwgbmV3IE9iamVjdFtdIHsgczEgfSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyB0aGUgc3RyaW5nIHJlc291cmNlIGZvciB0aGUgZ2l2ZW4ga2V5IGFuZCBkb2VzIHR3byBzdWJzdGl0dXRpb25zLgotICAgKiAKLSAgICogQHBhcmFtIGtleSBUaGUga2V5IGZvciB0aGUgcmVzb3VyY2UuCi0gICAqIEBwYXJhbSBzMSBUaGUgZmlyc3Qgc3Vic3RpdHV0aW9uIHRvIHBlcmZvcm0uCi0gICAqIEBwYXJhbSBzMiBUaGUgc2Vjb25kIHN1YnN0aXR1dGlvbiB0byBwZXJmb3JtLgotICAgKiBAcmV0dXJuIFRoZSBzdHJpbmcgZnJvbSB0aGUgcmVzb3VyY2UgYnVuZGxlLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTdHJpbmcoU3RyaW5nIGtleSwgT2JqZWN0IHMxLCBPYmplY3QgczIpCi0gIHsKLSAgICByZXR1cm4gTWVzc2FnZUZvcm1hdC5mb3JtYXQoZ2V0U3RyaW5nKGtleSksIG5ldyBPYmplY3RbXSB7IHMxLCBzMiB9KTsKLSAgfQotCi0gIC8qKgotICAgKiAgR2V0cyB0aGUgc3RyaW5nIHJlc291cmNlIGZvciB0aGUgZ2l2ZW4ga2V5IGFuZCBkb2VzIHRocmVlIHN1YnN0aXR1dGlvbnMuCi0gICAqIAotICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgZm9yIHRoZSByZXNvdXJjZS4KLSAgICogQHBhcmFtIHMxIFRoZSBmaXJzdCBzdWJzdGl0dXRpb24gdG8gcGVyZm9ybS4KLSAgICogQHBhcmFtIHMyIFRoZSBzZWNvbmQgc3Vic3RpdHV0aW9uIHRvIHBlcmZvcm0uCi0gICAqIEBwYXJhbSBzMyBUaGUgdGhpcmQgc3Vic3RpdHV0aW9uIHRvIHBlcmZvcm0uCi0gICAqIEByZXR1cm4gVGhlIHN0cmluZyBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGUuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFN0cmluZyhTdHJpbmcga2V5LCBPYmplY3QgczEsIE9iamVjdCBzMiwgT2JqZWN0IHMzKQotICB7Ci0gICAgcmV0dXJuIE1lc3NhZ2VGb3JtYXQuZm9ybWF0KGdldFN0cmluZyhrZXkpLCBuZXcgT2JqZWN0W10geyBzMSwgczIsIHMzIH0pOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL0NsYXNzbG9hZGVyV1NETDExVmFsaWRhdG9yRGVsZWdhdGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvQ2xhc3Nsb2FkZXJXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmI3ZjY4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvQ2xhc3Nsb2FkZXJXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLklMb2dnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLkxvZ2dlckZhY3Rvcnk7Ci0KLXB1YmxpYyBjbGFzcyBDbGFzc2xvYWRlcldTREwxMVZhbGlkYXRvckRlbGVnYXRlIGV4dGVuZHMgV1NETDExVmFsaWRhdG9yRGVsZWdhdGUKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgdmFsaWRhdG9yQ2xhc3NuYW1lID0gbnVsbDsKLSAgcHJpdmF0ZSBDbGFzc0xvYWRlciBjbGFzc0xvYWRlciA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIGRlbGVnYXRlIGZvciBhIHZhbGlkYXRvciBieSBpdHMgY2xhc3MgbmFtZS4KLSAgICogCi0gICAqIEBwYXJhbSB2YWxpZGF0b3JDbGFzc25hbWUgVGhlIG5hbWUgb2YgdGhlIHZhbGlkYXRvciBjbGFzcy4KLSAgICovCi0gIHB1YmxpYyBDbGFzc2xvYWRlcldTREwxMVZhbGlkYXRvckRlbGVnYXRlKFN0cmluZyB2YWxpZGF0b3JDbGFzc25hbWUpCi0gIHsKLQl0aGlzLnZhbGlkYXRvckNsYXNzbmFtZSA9IHZhbGlkYXRvckNsYXNzbmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBkZWxlZ2F0ZSBmb3IgYSB2YWxpZGF0b3IgYnkgaXRzIGNsYXNzIG5hbWUgYW5kIAotICAgKiBhIGNsYXNzIGxvYWRlciB0byBsb2FkIHRoZSB2YWxpZGF0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gdmFsaWRhdG9yQ2xhc3NuYW1lIFRoZSBuYW1lIG9mIHRoZSB2YWxpZGF0b3IgY2xhc3MuCi0gICAqIEBwYXJhbSBjbGFzc0xvYWRlciBUaGUgY2xhc3MgbG9hZGVyIHRvIHVzZSB0byBsb2FkIHRoZSB2YWxpZGF0b3IuCi0gICAqLwotICBwdWJsaWMgQ2xhc3Nsb2FkZXJXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZShTdHJpbmcgdmFsaWRhdG9yQ2xhc3NuYW1lLCBDbGFzc0xvYWRlciBjbGFzc0xvYWRlcikKLSAgewotICAgIHRoaXModmFsaWRhdG9yQ2xhc3NuYW1lKTsKLSAgICB0aGlzLmNsYXNzTG9hZGVyID0gY2xhc3NMb2FkZXI7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5XU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZSNsb2FkVmFsaWRhdG9yKCkKLSAgICovCi0gIHByb3RlY3RlZCBJV1NETDExVmFsaWRhdG9yIGxvYWRWYWxpZGF0b3IoKQotICB7Ci0JSVdTREwxMVZhbGlkYXRvciB2YWxpZGF0b3IgPSBudWxsOwotCWlmKGNsYXNzTG9hZGVyID09IG51bGwpCi0JewotCSAgY2xhc3NMb2FkZXIgPSBnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCk7Ci0JfQotCXRyeQotCXsKLSAgICAgIENsYXNzIHZhbGlkYXRvckNsYXNzID0KLSAgICAgIGNsYXNzTG9hZGVyICE9IG51bGwgPyBjbGFzc0xvYWRlci5sb2FkQ2xhc3ModmFsaWRhdG9yQ2xhc3NuYW1lKSA6IENsYXNzLmZvck5hbWUodmFsaWRhdG9yQ2xhc3NuYW1lKTsKLQotICAgICAgdmFsaWRhdG9yID0gKElXU0RMMTFWYWxpZGF0b3IpdmFsaWRhdG9yQ2xhc3MubmV3SW5zdGFuY2UoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgIHsKLSAgICAgIExvZ2dlckZhY3RvcnkuZ2V0SW5zdGFuY2UoKS5nZXRMb2dnZXIoKS5sb2coIlVuYWJsZSB0byBsb2FkIHZhbGlkYXRvciAiICsgdmFsaWRhdG9yQ2xhc3NuYW1lLCBJTG9nZ2VyLlNFVl9FUlJPUiwgdCk7Ci0gICAgfQotCXJldHVybiB2YWxpZGF0b3I7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvSVdTREwxMVZhbGlkYXRpb25JbmZvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL0lXU0RMMTFWYWxpZGF0aW9uSW5mby5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGE2OTJkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvSVdTREwxMVZhbGlkYXRpb25JbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5YTUxHcmFtbWFyUG9vbDsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU01vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuVVJJUmVzb2x2ZXI7Ci0KLS8qKgotICogQW4gaW50ZXJmYWNlIGZvciBXU0RMIDEuMSB2YWxpZGF0aW9uIGluZm9ybWF0aW9uLiBVc2VzIGFuIGV4aXN0aW5nCi0gKiB2YWxpZGF0aW9uIGluZm8gb2JqZWN0IGFuZCBwcm92aWRlcyBtZXRob2RzIHRvIHNldCBhbmQgcmV0cmlldmUKLSAqIHNjaGVtYXMgYW5kIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIHNldHRpbmcgZXJyb3JzIHdpdGggb2JqZWN0cy4KLSAqLwotcHVibGljIGludGVyZmFjZSBJV1NETDExVmFsaWRhdGlvbkluZm8KLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIFVSSSBvZiB0aGUgZmlsZSBiZWluZyB2YWxpZGF0ZWQuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBVUkkgb2YgdGhlIGZpbGUgYmVpbmcgdmFsaWRhdGVkLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRGaWxlVVJJKCk7Ci0gIAotICAvKioKLSAgICogQWRkIGEgc2NoZW1hIHRvIHRoZSBsaXN0IG9mIHNjaGVtYXMgYXZhaWxhYmxlIGZvciB0aGlzIFdTREwgZG9jdW1lbnQuCi0gICAqIAotICAgKiBAcGFyYW0geHNNb2RlbCBUaGUgc2NoZW1hIHRvIGFkZCB0byB0aGUgbGlzdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFNjaGVtYShYU01vZGVsIHhzTW9kZWwpOwotICAKLSAgLyoqCi0gICAqIEdldCBhbiBhcnJheSBvZiBhbGwgdGhlIHNjaGVtYXMgYXZhaWxhYmxlIGZvciB0aGlzIFdTREwgZG9jdW1lbnQuCi0gICAqIAotICAgKiBAcmV0dXJuIEFuIGFycmF5IG9mIGFsbCB0aGUgc2NoZW1hcyBhdmFpbGFibGUgZm9yIHRoaXMgV1NETCBkb2N1bWVudC4KLSAgICovCi0gIHB1YmxpYyBYU01vZGVsW10gZ2V0U2NoZW1hcygpOwotICAKLSAgLyoqCi0gICAqIENsZWFyIGFsbCB0aGUgc3RvcmVkIHNjaGVtYXMuCi0gICAqLwotICBwdWJsaWMgdm9pZCBjbGVhclNjaGVtYXMoKTsKLSAgCi0gIC8qKgotICAgKiBTZXQgdGhlIGVsZW1lbnQgbG9jYXRpb25zIGhhc2h0YWJsZS4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtZW50TG9jYXRpb25zIFRoZSBoYXNodGFibGUgdG8gc2V0IHdpdGggdGhlIGVsZW1lbnQgbG9jYXRpb25zLgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RWxlbWVudExvY2F0aW9ucyhIYXNodGFibGUgZWxlbWVudExvY2F0aW9ucyk7Ci0gIAotICAvKioKLSAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBleHRlbnNpYmx5IHZhbGlkYXRvcnMgdG8gYWRkIGVycm9yIG1lc3NhZ2VzLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIGVycm9yIHRvIGFkZC4KLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIG9iamVjdCB0byBhZGQgdGhlIGVycm9yIGZvci4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEVycm9yKFN0cmluZyBtZXNzYWdlLCBPYmplY3QgZWxlbWVudCk7Ci0gIAotICAvKioKLSAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBleHRlbnNpYmx5IHZhbGlkYXRvcnMgdG8gYWRkIGVycm9yIG1lc3NhZ2VzLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIGVycm9yIHRvIGFkZC4KLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIG9iamVjdCB0byBhZGQgdGhlIGVycm9yIGZvci4KLSAgICogQHBhcmFtIGVycm9yS2V5IFRoZSBlcnJvciBrZXkgZm9yIHRoaXMgbWVzc2FnZQotICAgKiBAcGFyYW0gbWVzc2FnZUFyZ3VtZW50cyBUaGUgc3RyaW5ncyB1c2VkIHRvIGNyZWF0ZSB0aGUgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEVycm9yKFN0cmluZyBtZXNzYWdlLCBPYmplY3QgZWxlbWVudCwgU3RyaW5nIGVycm9yS2V5LCBPYmplY3RbXSBtZXNzYWdlQXJndW1lbnRzKTsKLSAgCi0gIC8qKgotICAgKiBBZGQgYW4gZXJyb3IgbWVzc2FnZSBhdCB0aGUgZ2l2ZW4gbGluZSBhbmQgY29sdW1uLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIGVycm9yIHRvIGFkZC4KLSAgICogQHBhcmFtIGxpbmUgVGhlIGxpbmUgbG9jYXRpb24gb2YgdGhlIGVycm9yLgotICAgKiBAcGFyYW0gY29sdW1uIFRoZSBjb2x1bW4gbG9jYXRpb24gb2YgdGhlIGVycm9yLgotICAgKiBAcGFyYW0gdXJpIFRoZSB1cmkgb2YgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgZXJyb3IuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRFcnJvcihTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4sIFN0cmluZyB1cmkpOwotICAKLSAgLyoqCi0gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgZXh0ZW5zaWJseSB2YWxpZGF0b3JzIHRvIGFkZCB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIHdhcm5pbmcgdG8gYWRkLgotICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgb2JqZWN0IHRvIGFkZCB0aGUgd2FybmluZyBmb3IuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRXYXJuaW5nKFN0cmluZyBtZXNzYWdlLCBPYmplY3QgZWxlbWVudCk7Ci0gIAotICAvKioKLSAgICogQWRkIGEgd2FybmluZyBtZXNzYWdlIGF0IHRoZSBnaXZlbiBsaW5lIGFuZCBjb2x1bW4uCi0gICAqIAotICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgd2FybmluZyB0byBhZGQuCi0gICAqIEBwYXJhbSBsaW5lIFRoZSBsaW5lIGxvY2F0aW9uIG9mIHRoZSB3YXJuaW5nLgotICAgKiBAcGFyYW0gY29sdW1uIFRoZSBjb2x1bW4gbG9jYXRpb24gb2YgdGhlIHdhcm5pbmcuCi0gICAqIEBwYXJhbSB1cmkgVGhlIHVyaSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSB3YXJuaW5nLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkV2FybmluZyhTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4sIFN0cmluZyB1cmkpOwotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgVVJJIHJlc29sdmVyIGluIHVzZSBmb3IgdGhpcyB2YWxpZGF0aW9uLiBUaGUgVVJJIHJlc29sdmVyCi0gICAqIHJldHVybmVkIGlzIGFjdHVhbGx5IGEgVVJJIHJlc29sdmVyIGhhbmRsZXIgdGhhdCB3aWxsIAotICAgKiBpdGVyYXRlIHRocm91Z2ggYWxsIG9mIHRoZSByZWdpc3RlcmVkIFVSSSByZXNvbHZlcnMuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBVUkkgcmVzb2x2ZXIgaGFuZGxlci4KLSAgICovCi0gIHB1YmxpYyBVUklSZXNvbHZlciBnZXRVUklSZXNvbHZlcigpOwotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgc2NoZW1hIGNhY2hlIGlmIG9uZSBpcyBzcGVjaWZpZWQuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBzY2hlbWEgY2FjaGUgaWYgb25lIGlzIHNwZWNpZmllZCwgbnVsbCBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgWE1MR3JhbW1hclBvb2wgZ2V0U2NoZW1hQ2FjaGUoKTsKLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIFhNTCBjYWNoZSBpZiBvbmUgaXMgc3BlY2lmaWVkLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgWE1MIGNhY2hlIGlmIG9uZSBpcyBzcGVjaWZpZWQsIG51bGwgb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIFhNTEdyYW1tYXJQb29sIGdldFhNTENhY2hlKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvSVdTREwxMVZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9JV1NETDExVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYWJjZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9JV1NETDExVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTE7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotLyoqCi0gKiBJbnRlcmZhY2UgZm9yIGEgdmFsaWRhdG9yIHBsdWdnZWQgaW50byB0aGUgV1NETCAxLjEgdmFsaWRhdG9yLgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElXU0RMMTFWYWxpZGF0b3IKLXsKLSAgLyoqCi0gICAqIFZhbGlkYXRlIHRoZSBnaXZlbiBlbGVtZW50LgotICAgKiAKLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gdmFsaWRhdGUuCi0gICAqIEBwYXJhbSBwYXJlbnRzIEEgbGlzdCBvZiBwYXJlbnRzIG9mIHRoaXMgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbEluZm8gVGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBpbmZvcm1hdGlvbi4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZhbGlkYXRlKE9iamVjdCBlbGVtZW50LCBMaXN0IHBhcmVudHMsIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvSW1wb3J0SG9sZGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL0ltcG9ydEhvbGRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDViZTkwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvSW1wb3J0SG9sZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLmdyYW1tYXJzLlhNTEdyYW1tYXJQb29sOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhzLlhTTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvbk1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlci5JVVJJUmVzb2x1dGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnV0aWwuRXJyb3JNZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudXRpbC5NZXNzYWdlR2VuZXJhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZC5YU0RWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWwuQWJzdHJhY3RYTUxDb25mb3JtYW5jZUZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWwuRGVmYXVsdFhNTFZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5JWE1MVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sLlhNTENhdGFsb2dSZXNvbHZlcjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOwotCi1pbXBvcnQgY29tLmlibS53c2RsLkNvbnN0YW50czsKLWltcG9ydCBjb20uaWJtLndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hQ29uc3RhbnRzOwotaW1wb3J0IGNvbS5pYm0ud3NkbC51dGlsLlN0cmluZ1V0aWxzOwotaW1wb3J0IGNvbS5pYm0ud3NkbC51dGlsLnhtbC5ET01VdGlsczsKLWltcG9ydCBjb20uaWJtLndzZGwudXRpbC54bWwuUU5hbWVVdGlsczsKLQotLyoqCi0gKiBBIGNsYXNzIHRvIGhvbGQgYW5kIHBhcnNlIGFuIGltcG9ydCBlbGVtZW50LgotICovCi1wdWJsaWMgY2xhc3MgSW1wb3J0SG9sZGVyIGltcGxlbWVudHMgQ29tcGFyYWJsZQotewotICBwcml2YXRlIE1lc3NhZ2VHZW5lcmF0b3IgbWVzc2FnZWdlbmVyYXRvcjsKLSAgCi0gIHByaXZhdGUgV1NETERvY3VtZW50IGltcG9ydGluZ1dTRExEb2MgPSBudWxsOwotICBwcml2YXRlIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQgPSBudWxsOwotICBwcml2YXRlIERlZmluaXRpb24gaW1wb3J0aW5nRGVmID0gbnVsbDsKLSAgcHJpdmF0ZSBFbGVtZW50IGltcG9ydGluZ0RvY0ltcG9ydEVsZW1lbnQgPSBudWxsOwotICBwcml2YXRlIFN0cmluZyBuYW1lc3BhY2UgPSBudWxsOwotICBwcml2YXRlIFN0cmluZyBsb2NhdGlvbiA9IG51bGw7Ci0gIHByaXZhdGUgU3RyaW5nIGNsYXNzcGF0aFVSSSA9IG51bGw7Ci0gIHByaXZhdGUgU3RyaW5nIGNvbnRleHRVUkkgPSBudWxsOwotICBwcml2YXRlIGludCBkZXB0aDsKLSAgcHJpdmF0ZSBFbGVtZW50IGVsZW1lbnQgPSBudWxsOwotICBwcml2YXRlIExpc3Qgc2NoZW1hcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgcHJpdmF0ZSBib29sZWFuIGlzV1NETEZpbGVJbXBvcnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gaW1wb3J0SW52YWxpZCA9IGZhbHNlOwotICBwcml2YXRlIEltcG9ydCBpbXBvcnREZWYgPSBudWxsOwotICBwcml2YXRlIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxpbmZvOwotICAKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiAKLSAgICogQHBhcmFtIG5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIG9mIHRoZSBpbXBvcnQuCi0gICAqIEBwYXJhbSBsb2NhdGlvbiBUaGUgbG9jYXRpb24gb2YgdGhlIGltcG9ydC4KLSAgICogQHBhcmFtIGNvbnRleHRVUkkgVGhlIGNvbnRleHQgVVJJIGZvciByZXNvbHZpbmcgdGhlIGltcG9ydCBsb2NhdGlvbi4KLSAgICogQHBhcmFtIHdzZGxEb2MgVGhlIFdTRExEb2N1bWVudCB0aGF0IGNvbnRhaW5zIHRoZSBpbXBvcnQuCi0gICAqIEBwYXJhbSBkZXB0aCBUaGUgZGVwdGggb2YgdGhlIGltcG9ydC4KLSAgICogQHBhcmFtIGltcG9ydGluZ0RvY0ltcG9ydEVsZW1lbnQgVGhlIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBpbXBvcnQgaW4gdGhlIGVuY2Fwc3VsYXRpbmcgV1NETERvY3VtZW50LgotICAgKiBAcGFyYW0gbWVzc2FnZWdlbmVyYXRvciBBIG1lc3NhZ2VnZW5lcmF0b3IgZm9yIG9idGFpbmluZyBzdHJpbmdzLgotICAgKiBAcGFyYW0gdmFsaW5mbyBUaGUgV1NETDExVmFsaWRhdGlvbkluZm8gZm9yIHJlcG9ydGluZyBtZXNzYWdlcy4KLSAgICovCi0gIHB1YmxpYyBJbXBvcnRIb2xkZXIoU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIGxvY2F0aW9uLCBTdHJpbmcgY29udGV4dFVSSSwgV1NETERvY3VtZW50IGltcG9ydGluZ1dTRExEb2MsIGludCBkZXB0aCwgRWxlbWVudCBpbXBvcnRpbmdEb2NJbXBvcnRFbGVtZW50LCBNZXNzYWdlR2VuZXJhdG9yIG1lc3NhZ2VnZW5lcmF0b3IsIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxpbmZvKQotICB7Ci0gICAgdGhpcy5tZXNzYWdlZ2VuZXJhdG9yID0gbWVzc2FnZWdlbmVyYXRvcjsKLSAgICB0aGlzLnZhbGluZm8gPSB2YWxpbmZvOwotICAgIHRoaXMuaW1wb3J0aW5nV1NETERvYyA9IGltcG9ydGluZ1dTRExEb2M7Ci0gICAgaWYoaW1wb3J0aW5nV1NETERvYyAhPSBudWxsKQotICAgIHsKLSAgICAgIHRoaXMuaW1wb3J0aW5nRGVmID0gaW1wb3J0aW5nV1NETERvYy5nZXREZWZpbml0aW9uKCk7Ci0gICAgfQotICAgIHRoaXMuaW1wb3J0aW5nRG9jSW1wb3J0RWxlbWVudCA9IGltcG9ydGluZ0RvY0ltcG9ydEVsZW1lbnQ7Ci0gICAgdGhpcy5kZXB0aCA9IGRlcHRoOwotICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlOwotICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICAKLSAgICAvLyAgQWxsb3cgV1NETCBpbXBvcnRzIHRvIGhhdmUgbm8gbG9jYXRpb24gYXR0cmlidXRlIGV2ZW4gdGhvdWdoIGl0IGlzIHJlcXVpcmVkLgotICAgIC8vIFNjaGVtYSB3aWxsIG5vcm1hbGx5IGNhdGNoIHRoZSBwcm9ibGVtIGJ1dCB0aGlzIGFsbG93cyB1c2VycyB0byBvdmVycmlkZSB0aGUKLSAgICAvLyBzY2hlbWEgYW5kIGhhdmUgdGhlIHZhbGlkYXRvciBydW4uCi0gICAgaWYgKHRoaXMubG9jYXRpb24gPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0aGlzLmxvY2F0aW9uID0gbmFtZXNwYWNlOwotICAgIH0KLSAgICB0aGlzLmNvbnRleHRVUkkgPSBjb250ZXh0VVJJOwotICAgIAotICAgIHRoaXMubG9jYXRpb24gPSB0aGlzLmxvY2F0aW9uLnJlcGxhY2UoJ1xcJywnLycpOwotICAgIElVUklSZXNvbHV0aW9uUmVzdWx0IGNsYXNzcGF0aFVSSSA9IHZhbGluZm8uZ2V0VVJJUmVzb2x2ZXIoKS5yZXNvbHZlKHRoaXMuY29udGV4dFVSSSwgdGhpcy5uYW1lc3BhY2UsIHRoaXMubG9jYXRpb24pOwotICAgIGlmKGNsYXNzcGF0aFVSSS5nZXRMb2dpY2FsTG9jYXRpb24oKSAhPSBudWxsKQotICAgIHsKLSAgICAgIHRoaXMubG9jYXRpb24gPSBjbGFzc3BhdGhVUkkuZ2V0TG9naWNhbExvY2F0aW9uKCk7Ci0gICAgfQotICAgIGlmKGNsYXNzcGF0aFVSSS5nZXRQaHlzaWNhbExvY2F0aW9uKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICB0aGlzLmNsYXNzcGF0aFVSSSA9IGNsYXNzcGF0aFVSSS5nZXRQaHlzaWNhbExvY2F0aW9uKCk7Ci0gICAgICB0aGlzLmNvbnRleHRVUkkgPSBudWxsOwotICAgIH0gCi0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoKQotICB7Ci0gICAgRWxlbWVudCBkb2N1bWVudEVsZW1lbnQgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIGRvY3VtZW50RWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICB9Ci0gICAgY2F0Y2goV1NETEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICB9Ci0gICAgaWYoZG9jdW1lbnRFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAJICAvLyBIYW5kbGUgV1NETCBpbXBvcnRzLgotICAgICAgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX0RFRklOSVRJT05TLCBkb2N1bWVudEVsZW1lbnQpKQotICAgICAgewotICAgICAgICBpZihpc1hNTFZhbGlkKHRoaXMuY2xhc3NwYXRoVVJJKSkKLSAgICAgICAgewotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHdzZGxEb2N1bWVudCA9IG5ldyBXU0RMRG9jdW1lbnQodGhpcy5sb2NhdGlvbiwgZG9jdW1lbnRFbGVtZW50LCB0aGlzLmRlcHRoLCB0aGlzLm1lc3NhZ2VnZW5lcmF0b3IsIHRoaXMudmFsaW5mbyk7Ci0gICAgICAgICAgICBjcmVhdGVXU0RMSW1wb3J0KHdzZGxEb2N1bWVudCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoKFdTRExFeGNlcHRpb24gZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB2YWxpbmZvLmFkZEVycm9yKG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKCJfVU5BQkxFX1RPX0lNUE9SVF9CQURfTE9DQVRJT04iLCAiJyIgKyBpbXBvcnREZWYuZ2V0TG9jYXRpb25VUkkoKSArICInIiksIGltcG9ydGluZ0RvY0ltcG9ydEVsZW1lbnQpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgLy8gSGFuZGxlIHNjaGVtYSBpbXBvcnRzLgotICAgICAgZWxzZSBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKFNjaGVtYUNvbnN0YW50cy5RX0VMRU1fWFNEXzIwMDEsIGRvY3VtZW50RWxlbWVudCkpCi0gICAgICB7Ci0gICAgICAgIGNyZWF0ZVhTREltcG9ydCgpOwotICAgICAgfQotICAgIH0KLSAgfQotICAKLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNYTUxWYWxpZChTdHJpbmcgdXJpKQotICB7Ci0gICAgSVhNTFZhbGlkYXRvciB4bWxWYWxpZGF0b3IgPSBBYnN0cmFjdFhNTENvbmZvcm1hbmNlRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldFhNTFZhbGlkYXRvcigpOwotICAgIHhtbFZhbGlkYXRvci5zZXRGaWxlKHVyaSk7Ci0gICAgeG1sVmFsaWRhdG9yLnNldFVSSVJlc29sdmVyKHZhbGluZm8uZ2V0VVJJUmVzb2x2ZXIoKSk7Ci0gICAgLy94bWxWYWxpZGF0b3Iuc2V0VmFsaWRhdGlvbkluZm8odmFsSW5mbyk7Ci0gICAgaWYoeG1sVmFsaWRhdG9yIGluc3RhbmNlb2YgRGVmYXVsdFhNTFZhbGlkYXRvcikKLSAgICB7Ci0gICAgCVhNTEdyYW1tYXJQb29sIGdyYW1tYXJQb29sID0gdmFsaW5mby5nZXRYTUxDYWNoZSgpOwotICAgICAgICBpZihncmFtbWFyUG9vbCAhPSBudWxsKQotICAgICAgICAgICgoRGVmYXVsdFhNTFZhbGlkYXRvcil4bWxWYWxpZGF0b3IpLnNldEdyYW1tYXJQb29sKGdyYW1tYXJQb29sKTsKLSAgICB9Ci0gICAgeG1sVmFsaWRhdG9yLnJ1bigpOwotICAgIC8vIGlmIHRoZXJlIGFyZSBubyB4bWwgY29uZm9ybWFuY2UgcHJvYmxlbXMgZ28gb24gdG8gY2hlY2sgdGhlIHdzZGwgc3R1ZmYKLSAgICBpZiAoeG1sVmFsaWRhdG9yLmhhc0Vycm9ycygpKQotICAgIHsKLSAgICAgIC8vIHRlbXAgaGFuZGxpbmcgb2YgWE1MIGVycm9ycyB1bnRpbCB2YWxpZGF0b3IgaXMgdXBkYXRlZC4KLSAgICAgIExpc3QgZXJyb3JzID0geG1sVmFsaWRhdG9yLmdldEVycm9ycygpOwotICAgICAgSXRlcmF0b3IgZXJyb3JzSXRlciA9IGVycm9ycy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGVycm9yc0l0ZXIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBJVmFsaWRhdGlvbk1lc3NhZ2UgdmFsTWVzID0gKElWYWxpZGF0aW9uTWVzc2FnZSllcnJvcnNJdGVyLm5leHQoKTsKLSAgICAgICAgdmFsaW5mby5hZGRFcnJvcih2YWxNZXMuZ2V0TWVzc2FnZSgpLCB2YWxNZXMuZ2V0TGluZSgpLCB2YWxNZXMuZ2V0Q29sdW1uKCksIHZhbE1lcy5nZXRVUkkoKSk7Ci0gICAgICB9Ci0gICAgICBpbXBvcnRJbnZhbGlkID0gdHJ1ZTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIGltcG9ydGluZyBXU0RMRG9jdW1lbnQuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBpbXBvcnRpbmcgV1NETERvY3VtZW50LgotICAgKi8KLSAgcHVibGljIFdTRExEb2N1bWVudCBnZXRJbXBvcnRpbmdEb2N1bWVudCgpCi0gIHsKLSAgICByZXR1cm4gaW1wb3J0aW5nV1NETERvYzsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgV1NETCBkb2N1bWVudCB0aGlzIGltcG9ydCByZXByZXNlbnRzLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgV1NETCBkb2N1bWVudCB0aGlzIGltcG9ydCByZXByZXNlbnRzLgotICAgKi8KLSAgcHVibGljIFdTRExEb2N1bWVudCBnZXRXU0RMRG9jdW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIHdzZGxEb2N1bWVudDsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgbmFtZXNwYWNlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgbmFtZXNwYWNlLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lc3BhY2UoKQotICB7Ci0gICAgcmV0dXJuIG5hbWVzcGFjZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgbG9jYXRpb24uCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBsb2NhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9jYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGxvY2F0aW9uOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBjb250ZXh0IFVSSS4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGNvbnRleHQgVVJJLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRDb250ZXh0VVJJKCkKLSAgewotICAgIHJldHVybiBjb250ZXh0VVJJOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBkZXB0aCBpbiB0aGUgV1NETCB0cmVlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgZGVwdGggaW4gdGhlIFdTREwgdHJlZS4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0RGVwdGgoKQotICB7Ci0gICAgcmV0dXJuIGRlcHRoOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBjb250YWluaW5nIGRlZmludGlvbnMgZWxlbWVudC4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGNvbnRhaW5pbmcgZGVmaW5pdGlvbnMgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBEZWZpbml0aW9uIGdldEltcG9ydGluZ0RlZmluaXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGltcG9ydGluZ0RlZjsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgZWxlbWVudCBmb3IgdGhpcyBpbXBvcnQuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBlbGVtZW50IGZvciB0aGlzIGltcG9ydC4KLSAgICogQHRocm93cyBXU0RMRXhjZXB0aW9uCi0gICAqLwotICBwdWJsaWMgRWxlbWVudCBnZXRFbGVtZW50KCkgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIGlmKGVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0gICAgCi0gICAgU3RyaW5nIGxvY2F0aW9uVVJJID0gbG9jYXRpb247Ci0gICAgLy9JbXBvcnQgaW1wb3J0RGVmID0gaW1wb3J0aW5nRGVmLmNyZWF0ZUltcG9ydCgpOwotICAgIAotICAgIC8vICBBbGxvdyBsb2NhdGluZyBXU0RMIGRvY3VtZW50cyB1c2luZyBhbnkgcmVnaXN0ZXJlZCBVUkkgcmVzb2x2ZXIuCi0gICAgLy9TdHJpbmcgY2xhc3NwYXRoVVJJID0gVVJJUmVzb2x2ZXIuZ2V0SW5zdGFuY2UoKS5yZXNvbHZlKGNvbnRleHRVUkksIG5hbWVzcGFjZVVSSSwgbG9jYXRpb25VUkkpOwotLy8gICAgaWYgKCFjbGFzc3BhdGhVUkkuZXF1YWxzKGxvY2F0aW9uVVJJKSkKLS8vICAgIHsKLS8vICAgICAgbG9jYXRpb25VUkkgPSBjbGFzc3BhdGhVUkk7Ci0vLyAgICAgIGNvbnRleHRVUkkgPSBudWxsOwotLy8gICAgfQotICAgIElucHV0U3RyZWFtIHJlYWRlciA9IG51bGw7Ci0gICAgaWYgKGxvY2F0aW9uVVJJICE9IG51bGwpCi0gICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIC8vU3RyaW5nIGNvbnRleHRVUkkgPSBkZWYuZ2V0RG9jdW1lbnRCYXNlVVJJKCk7Ci0gICAgICAgICAgLy9EZWZpbml0aW9uIGltcG9ydGVkRGVmID0gbnVsbDsKLSAgICAgICAgICAKLSAgICAgICAgICBJbnB1dFNvdXJjZSBpbnB1dFNvdXJjZSA9IG51bGw7Ci0gICAgICAgICAgVVJMIHVybCA9IG51bGw7Ci0KLSAgICAgICAgICAKLSAgICAgICAgICAgIFVSTCBjb250ZXh0VVJMID0gKGNvbnRleHRVUkkgIT0gbnVsbCkgPyBTdHJpbmdVdGlscy5nZXRVUkwobnVsbCwgY29udGV4dFVSSSkgOiBudWxsOwotCi0gICAgICAgICAgICB1cmwgPSBTdHJpbmdVdGlscy5nZXRVUkwoY29udGV4dFVSTCwgbG9jYXRpb25VUkkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBIYW5kbGUgZmlsZTovLyB1cmxzLiBUaGUgY29ycmVjdCBmb3JtYXQgc2hvdWxkIGJlIGZpbGU6Ly8vIG9yIGZpbGU6Ly4KLSAgICAgICAgICAgIFN0cmluZyB1cmxBdXRob3JpdHkgPSB1cmwuZ2V0QXV0aG9yaXR5KCk7Ci0gICAgICAgICAgICBTdHJpbmcgdXJsUHJvdG9jb2wgPSB1cmwuZ2V0UHJvdG9jb2woKTsKLSAgICAgICAgICAgIGlmKHVybEF1dGhvcml0eSAhPW51bGwgJiYgdXJsUHJvdG9jb2wuZXF1YWxzSWdub3JlQ2FzZSgiZmlsZSIpICYmICF1cmxBdXRob3JpdHkuZXF1YWxzKCIiKSkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHVybCA9IG5ldyBVUkwodXJsUHJvdG9jb2wsIiIsIi8iICsgdXJsQXV0aG9yaXR5ICsgdXJsLmdldEZpbGUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1cmwudG9TdHJpbmcoKTsKLQkJCS8vIFRlc3QgZm9yIGNhc2Ugc2Vuc2l0aXZpdHkgb24gbG9jYWwgZmlsZXMuCi0JCQlpZih1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmlsZToiKSkKLQkJCXsKLQkJCSAgRmlsZSB0ZXN0ZmlsZSA9IG5ldyBGaWxlKHVybC5nZXRGaWxlKCkpOwotCQkJICBTdHJpbmcgdGVzdGZpbGVTdHJpbmcgPSB0ZXN0ZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKTsKLQkJCSAgU3RyaW5nIGNhbm9uaWNhbGZpbGVTdHJpbmcgPSB0ZXN0ZmlsZS5nZXRDYW5vbmljYWxQYXRoKCk7Ci0KLSAgICAgICAgICAgICAgaWYgKCF0ZXN0ZmlsZVN0cmluZy5lcXVhbHMoY2Fub25pY2FsZmlsZVN0cmluZykpCi0gICAgICAgICAgICAgIHsKLQkJCQlpZiAoIVN0cmluZy52YWx1ZU9mKHRlc3RmaWxlU3RyaW5nLmNoYXJBdCgwKSkuZXF1YWxzSWdub3JlQ2FzZQotCQkJCSAgICAoU3RyaW5nLnZhbHVlT2YoY2Fub25pY2FsZmlsZVN0cmluZy5jaGFyQXQoMCkpKQotCQkJCSAgICB8fCAhdGVzdGZpbGVTdHJpbmcuc3Vic3RyaW5nKDEsdGVzdGZpbGVTdHJpbmcubGVuZ3RoKCkpLmVxdWFscwotCQkJCQkoY2Fub25pY2FsZmlsZVN0cmluZy5zdWJzdHJpbmcoMSxjYW5vbmljYWxmaWxlU3RyaW5nLmxlbmd0aCgpKSkpCi0JCQkJewotICAgICAgICAgICAgICAgICAgdXJsU3RyaW5nID0gIiI7Ci0gICAgICAgICAgICAgICAgICB1cmwgPSBudWxsOwotCQkJCX0KLSAgICAgICAgICAgICAgfQotCQkJfQotCQkJaWYodXJsICE9IG51bGwpCi0JCQl7Ci0JCQkgIHRyeQotCQkJICB7Ci0gICAgICAgICAgICAgICAgcmVhZGVyID0gU3RyaW5nVXRpbHMuZ2V0Q29udGVudEFzSW5wdXRTdHJlYW0odXJsKTsKLQkJCSAgfQotCQkJICBjYXRjaChJT0V4Y2VwdGlvbiBlKQotCQkJICB7Ci0JCQkgICAgLy8gTm8gbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlLiBUaGUgZXJyb3Igd2lsbCBiZSBoYW5kbGVkIGJlbG93LgotCQkJICB9Ci0JCQl9Ci0gICAgICAgICAgICBpZiAocmVhZGVyICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlucHV0U291cmNlID0gbmV3IElucHV0U291cmNlKHJlYWRlcik7Ci0gICAgICAgICAgICAgIGlmKGNsYXNzcGF0aFVSSSAhPSBudWxsICYmICFjbGFzc3BhdGhVUkkuZXF1YWxzKGxvY2F0aW9uKSkKLSAgCQkJICB7Ci0gIAkJCSAgICBpbnB1dFNvdXJjZS5zZXRCeXRlU3RyZWFtKG5ldyBVUkwoY2xhc3NwYXRoVVJJKS5vcGVuU3RyZWFtKCkpOwotICAJCQkgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGlucHV0U291cmNlID09IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIGxvY2F0aW9uIGZyb20gdGhlIGVsZW1lbnQuCi0gICAgICAgICAgICAgIFN0cmluZyBhY3R1YWxMb2NhdGlvbiA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZShpbXBvcnRpbmdEb2NJbXBvcnRFbGVtZW50LCBDb25zdGFudHMuQVRUUl9MT0NBVElPTik7Ci0gICAgICAgICAgICAgIGlmKGFjdHVhbExvY2F0aW9uID09IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgCWFjdHVhbExvY2F0aW9uID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKGltcG9ydGluZ0RvY0ltcG9ydEVsZW1lbnQsICJzY2hlbWFMb2NhdGlvbiIpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGlmKGFjdHVhbExvY2F0aW9uID09IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgCWFjdHVhbExvY2F0aW9uID0gbmFtZXNwYWNlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGltcG9ydGluZ1dTRExEb2MuYWRkUmVhZGVyV2FybmluZygKLSAgICAgICAgICAgICAgICAgIGltcG9ydGluZ0RlZiwKLSAgICAgICAgICAgICAgICAgIGltcG9ydGluZ0RvY0ltcG9ydEVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygiX1VOQUJMRV9UT19JTVBPUlRfQkFEX0xPQ0FUSU9OIiwgIiciICsgYWN0dWFsTG9jYXRpb24gKyAiJyIpKTsKLSAgICAgICAgICAgICAgaW1wb3J0SW52YWxpZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgLy8gVE9ETzogbW9kaWZ5IHRoZSByZWFkZXIgZXJyb3IgdG8gc2hvdyBpbiBhbGwgdGhlIGNvcnJlY3QgbG9jYXRpb25zLgotICAgICAgICAgICAgICB0aHJvdyBuZXcgV1NETEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBXU0RMRXhjZXB0aW9uLk9USEVSX0VSUk9SLAotICAgICAgICAgICAgICAgICJVbmFibGUgdG8gbG9jYXRlIGltcG9ydGVkIGRvY3VtZW50ICIKLSAgICAgICAgICAgICAgICAgICsgImF0ICciCi0gICAgICAgICAgICAgICAgICArIGxvY2F0aW9uVVJJCi0gICAgICAgICAgICAgICAgICArICInIgotICAgICAgICAgICAgICAgICAgKyAoY29udGV4dFVSSSA9PSBudWxsID8gIi4iIDogIiwgcmVsYXRpdmUgdG8gJyIgKyBjb250ZXh0VVJJICsgIicuIikpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gbnVsbDsKLSAgICAgICAgICAgIHRyeQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBkb2MgPSBXU0RMUmVhZGVySW1wbC5nZXREb2N1bWVudChpbnB1dFNvdXJjZSwgbG9jYXRpb25VUkkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2F0Y2goV1NETEV4Y2VwdGlvbiBlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBUaGUgRmlsZSBpcyBpbnZhbGlkIGFuZCBjYW5ub3QgYmUgcmVhZC4gCi0gICAgICAgICAgICAgIC8vIFBlcmZvcm0gWE1MIHZhbGlkYXRpb24uCi0gICAgICAgICAgICAgIGlzWE1MVmFsaWQobG9jYXRpb25VUkkpOwotLy8gICAgICAgICAgICAgIGltcG9ydGluZ1dTRExEb2MuYWRkUmVhZGVyRXJyb3IoCi0vLyAgICAgICAgICAgICAgICAgIGltcG9ydGluZ0RlZiwKLS8vICAgICAgICAgICAgICAgICAgaW1wb3J0aW5nRG9jSW1wb3J0RWxlbWVudCwKLS8vICAgICAgICAgICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoIl9VTkFCTEVfVE9fSU1QT1JUX0lOVkFMSUQiLCAiJyIgKyBsb2NhdGlvbiArICInIikpOwotICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxlbWVudCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmKCFRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ERUZJTklUSU9OUywgZWxlbWVudCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlzV1NETEZpbGVJbXBvcnQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBpbXBvcnRlZCBkb2N1bWVudCBoYXMgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHRoZSBpbXBvcnQgZWxlbWVudCBzdGF0ZXMuCi0gICAgICAgICAgICBTdHJpbmcgaW1wb3J0VGFyZ2V0TlMgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShDb25zdGFudHMuQVRUUl9UQVJHRVRfTkFNRVNQQUNFKTsKLSAgICAgICAgICAgIGlmKCFpbXBvcnRUYXJnZXROUy5lcXVhbHMobmFtZXNwYWNlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaW1wb3J0aW5nV1NETERvYy5hZGRSZWFkZXJXYXJuaW5nKAotICAgICAgICAgICAgICAgICAgaW1wb3J0aW5nRGVmLAotICAgICAgICAgICAgICAgICAgaW1wb3J0aW5nRG9jSW1wb3J0RWxlbWVudCwKLSAgICAgICAgICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKCJfV0FSTl9XUk9OR19OU19PTl9JTVBPUlQiLCAiJyIgKyBuYW1lc3BhY2UgKyAiJyIsICInIiArIGltcG9ydFRhcmdldE5TICsgIiciKSk7Ci0gICAgICAgICAgICAgIGVsZW1lbnQgPSBudWxsOwotICAgICAgICAgICAgICBpbXBvcnRJbnZhbGlkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjYXRjaChFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIGZpbmFsbHkKLSAgICAgICAgewotICAgICAgICAgIGlmKHJlYWRlciAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRyeQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZWFkZXIuY2xvc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpCi0gICAgICAgICAgICB7fQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgCi0gICAgfQotICAgIHJldHVybiBlbGVtZW50OwotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGFuIGltcG9ydCBlbGVtZW50IGZvciBhIFdTREwgaW1wb3J0IG9mIGEgV1NETCBkb2N1bWVudC4KLSAgICogCi0gICAqIEBwYXJhbSB3c2RsRG9jdW1lbnQgVGhlIGRvY3VtZW50IG9mIHRoZSBpbXBvcnQuCi0gICAqIEByZXR1cm4gVGhlIG5ld2x5IGNyZWF0ZWQgaW1wb3J0IGVsZW1lbnQuCi0gICAqLwotICBwdWJsaWMgSW1wb3J0IGNyZWF0ZVdTRExJbXBvcnQoV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCkKLSAgewotICAgIGlmKGltcG9ydERlZiAhPSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBpbXBvcnREZWY7Ci0gICAgfQotICAgIGltcG9ydERlZiA9IGdldE5ld0ltcG9ydCgpOwotICAKLSAgICBpZiAoaW1wb3J0RGVmICE9IG51bGwpCi0gICAgewotICAgICAgaW1wb3J0RGVmLnNldERlZmluaXRpb24od3NkbERvY3VtZW50LmdldERlZmluaXRpb24oKSk7Ci0gICAgICBzY2hlbWFzLmFkZEFsbCh3c2RsRG9jdW1lbnQuZ2V0U2NoZW1hcygpKTsKLSAgICAgIGltcG9ydGluZ1dTRExEb2MuYWRkU2NoZW1hcyhzY2hlbWFzKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gaW1wb3J0RGVmOwotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGFuIGltcG9ydCBlbGVtZW50IGZvciBhIFdTREwgaW1wb3J0IG9mIGEgc2NoZW1hIGltcG9ydCBvZiBhIHNjaGVtYSBkb2N1bWVudC4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIG5ld2x5IGNyZWF0ZWQgaW1wb3J0IGVsZW1lbnQuCi0gICAqLwotICBwdWJsaWMgSW1wb3J0IGNyZWF0ZVhTREltcG9ydCgpCi0gIHsKLSAgICBpZihpbXBvcnREZWYgIT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gaW1wb3J0RGVmOwotICAgIH0KLSAgICBpbXBvcnREZWYgPSBnZXROZXdJbXBvcnQoKTsKLSAgICBYU0RWYWxpZGF0b3IgeHNkdmFsaWRhdG9yID0gbmV3IFhTRFZhbGlkYXRvcigpOwotCi0gICAgeHNkdmFsaWRhdG9yLnZhbGlkYXRlKGxvY2F0aW9uLCBYTUxDYXRhbG9nUmVzb2x2ZXIuZ2V0SW5zdGFuY2UoKSwgdmFsaW5mby5nZXRTY2hlbWFDYWNoZSgpKTsKLSAgICBpZiAoeHNkdmFsaWRhdG9yLmlzVmFsaWQoKSkKLSAgICB7Ci0gICAgICBYU01vZGVsIHNjaGVtYSA9IHhzZHZhbGlkYXRvci5nZXRYU01vZGVsKCk7Ci0gICAgICBpZiAoc2NoZW1hICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHNjaGVtYXMuYWRkKHNjaGVtYSk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgIC8vIGFkZFJlYWRlcldhcm5pbmcoCi0vLyAgICAgICAgZGVmLAotLy8gICAgICAgIGltcG9ydERlZiwKLS8vICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygiX1VOQUJMRV9UT19JTVBPUlRfSU5WQUxJRCIsICInIiArIGltcG9ydERlZi5nZXRMb2NhdGlvblVSSSgpICsgIiciKSk7Ci0gICAgICBJdGVyYXRvciBlcnJvcnMgPSB4c2R2YWxpZGF0b3IuZ2V0RXJyb3JzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChlcnJvcnMuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBFcnJvck1lc3NhZ2UgZXJyID0gKEVycm9yTWVzc2FnZSkgZXJyb3JzLm5leHQoKTsKLSAgICAgICAgU3RyaW5nIHVyaSA9IGVyci5nZXRVUkkoKTsKLSAgICAgICAgaW50IGxpbmUgPSBlcnIuZ2V0RXJyb3JMaW5lKCk7Ci0gICAgICAgIFN0cmluZyBlcnJtZXNzID0gZXJyLmdldEVycm9yTWVzc2FnZSgpOwotICAgICAgICB2YWxpbmZvLmFkZEVycm9yKGVycm1lc3MsIGxpbmUsIGVyci5nZXRFcnJvckNvbHVtbigpLCB1cmkpOwotICAgICAgfQotICAgIH0KLSAgICBpbXBvcnRpbmdXU0RMRG9jLmFkZFNjaGVtYXMoc2NoZW1hcyk7Ci0gICAgcmV0dXJuIGltcG9ydERlZjsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgaW1wb3J0IGVsZW1lbnQgaWYgaXQgaGFzIGJlZW4gY3JlYXRlZC4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGltcG9ydCBlbGVtZW50IGlmIGl0IGhhcyBiZWVuIGNyZWF0ZWQgb3IgbnVsbC4KLSAgICovCi0gIHB1YmxpYyBJbXBvcnQgZ2V0SW1wb3J0KCkKLSAgewotICAgIHJldHVybiBpbXBvcnREZWY7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgYSBuZXcgaW1wb3J0IGVsZW1lbnQuCi0gICAqIAotICAgKiBAcmV0dXJuIEEgbmV3IGltcG9ydCBlbGVtZW50LgotICAgKi8KLSAgcHJpdmF0ZSBJbXBvcnQgZ2V0TmV3SW1wb3J0KCkKLSAgewotICAgIGlmKGltcG9ydEludmFsaWQpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIEltcG9ydCBpbXBvcnREZWYgPSBpbXBvcnRpbmdEZWYuY3JlYXRlSW1wb3J0KCk7IAotICAgIAotICAgIGlmIChuYW1lc3BhY2UgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpbXBvcnREZWYuc2V0TmFtZXNwYWNlVVJJKG5hbWVzcGFjZSk7Ci0gICAgfQotCi0gICAgaWYgKGxvY2F0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgaW1wb3J0RGVmLnNldExvY2F0aW9uVVJJKGxvY2F0aW9uKTsKLSAgICB9Ci0gICAgCi0gICAgaWYoZWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgdGVtcEVsID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQoZWxlbWVudCk7Ci0KLSAgICAgIHdoaWxlICh0ZW1wRWwgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX0RPQ1VNRU5UQVRJT04sIHRlbXBFbCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpbXBvcnREZWYuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQodGVtcEVsKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBFbCA9IERPTVV0aWxzLmdldE5leHRTaWJsaW5nRWxlbWVudCh0ZW1wRWwpOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBpbXBvcnREZWY7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIHNjaGVtYXMgY29ycmVzcG9uZGluZyB0byB0aGlzIGltcG9ydC4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIHNjaGVtYXMgY29ycmVzcG9uZGluZyB0byB0aGlzIGltcG9ydC4KLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldFNjaGVtYXMoKQotICB7Ci0gICAgcmV0dXJuIHNjaGVtYXM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBpbXBvcnQgaW1wb3J0cyBhIFdTREwgZG9jdW1lbnQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICogCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGlzIGltcG9ydCBpbXBvcnRzIGEgV1NETCBkb2N1bWVudCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNXU0RMRmlsZUltcG9ydCgpCi0gIHsKLSAgICByZXR1cm4gaXNXU0RMRmlsZUltcG9ydDsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikKLSAgewotICAgIGlmKG9iai5nZXRDbGFzcygpID09IEltcG9ydEhvbGRlci5jbGFzcykKLSAgICB7Ci0gICAgICBJbXBvcnRIb2xkZXIgb3RoZXJJbXBvcnQgPSAoSW1wb3J0SG9sZGVyKW9iajsKLSAgICAgIAotICAgICAgaWYoZ2V0TmFtZXNwYWNlKCkuZXF1YWxzKG90aGVySW1wb3J0LmdldE5hbWVzcGFjZSgpKSAmJiBnZXRMb2NhdGlvbigpLmVxdWFscyhvdGhlckltcG9ydC5nZXRMb2NhdGlvbigpKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGphdmEubGFuZy5Db21wYXJhYmxlI2NvbXBhcmVUbyhqYXZhLmxhbmcuT2JqZWN0KQotICAgKi8KLSAgcHVibGljIGludCBjb21wYXJlVG8oT2JqZWN0IG9iaikKLSAgewotICAgIGlmKG9iaiA9PSBudWxsKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOwotICAgIH0KLSAgICAKLSAgICBJbXBvcnRIb2xkZXIgb3RoZXJJbXBvcnQgPSAoSW1wb3J0SG9sZGVyKW9iajsKLSAgICAgIAotICAgIHJldHVybiAoZ2V0TmFtZXNwYWNlKCkrZ2V0TG9jYXRpb24oKSkuY29tcGFyZVRvKChvdGhlckltcG9ydC5nZXROYW1lc3BhY2UoKStvdGhlckltcG9ydC5nZXRMb2NhdGlvbigpKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXQgdGhlIG1lc3NhZ2VnZW5lcmF0b3IgZm9yIHRoZSBpbXBvcnQgaG9sZGVyLgotICAgKiAKLSAgICogQHBhcmFtIG1nIFRoZSBtZXNzYWdlIGdlbmVyYXRvciB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNZXNzYWdlR2VuZXJhdG9yKE1lc3NhZ2VHZW5lcmF0b3IgbWcpCi0gIHsKLSAgICBtZXNzYWdlZ2VuZXJhdG9yID0gbWc7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW1wb3J0IGlzIGludmFsaWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICogCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgaW1wb3J0IGlzIGludmFsaWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzSW1wb3J0SW52YWxpZCgpCi0gIHsKLSAgICByZXR1cm4gaW1wb3J0SW52YWxpZDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9Mb2NhdGlvbkhvbGRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9Mb2NhdGlvbkhvbGRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmVjY2M5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvTG9jYXRpb25Ib2xkZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMTsKLQotLyoqCi0gKiBIb2xkcyB0aGUgbG9jYXRpb24gaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQgaW4gYSBkb2N1bWVudC4KLSAqLwotcHVibGljIGNsYXNzIExvY2F0aW9uSG9sZGVyCi17Ci0gIHByaXZhdGUgaW50IGxpbmU7Ci0gIHByaXZhdGUgaW50IGNvbHVtbjsKLSAgcHJpdmF0ZSBTdHJpbmcgdXJpOwotICAKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiAKLSAgICogQHBhcmFtIGxpbmUgVGhlIGxpbmUgbnVtYmVyLgotICAgKiBAcGFyYW0gY29sdW1uIFRoZSBjb2x1bW4gbnVtYmVyLgotICAgKiBAcGFyYW0gdXJpIFRoZSBVUkkgb2YgdGhlIGRvY3VtZW50LgotICAgKi8KLSAgcHVibGljIExvY2F0aW9uSG9sZGVyKGludCBsaW5lLCBpbnQgY29sdW1uLCBTdHJpbmcgdXJpKQotICB7Ci0gICAgdGhpcy5saW5lID0gbGluZTsKLSAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjsKLSAgICB0aGlzLnVyaSA9IHVyaTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgbGluZSBudW1iZXIuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBsaW5lIG51bWJlci4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0TGluZSgpCi0gIHsKLSAgICByZXR1cm4gbGluZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgY29sdW1uIG51bWJlci4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGNvbHVtbiBudW1iZXIuCi0gICAqLwotICBwdWJsaWMgaW50IGdldENvbHVtbigpCi0gIHsKLSAgICByZXR1cm4gY29sdW1uOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBmaWxlIFVSSS4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGZpbGUgVVJJLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRVUkkoKQotICB7Ci0gICAgcmV0dXJuIHVyaTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9SZWFkZXJFcnJvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9SZWFkZXJFcnJvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWZlNzgzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvUmVhZGVyRXJyb3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMTsKLQotLyoqCi0gKiBIb2xkcyBhbiBlcnJvciBjcmVhdGVkIHdoZW4gcmVhZGluZyBhIFdTREwgZG9jdW1lbnQuCi0gKi8KLXB1YmxpYyBjbGFzcyBSZWFkZXJFcnJvcgotewotICBwcm90ZWN0ZWQgT2JqZWN0IHBhcmVudE9iamVjdDsgLy8gdGhlIG9iamVjdCBvZiB0aGUgcGFyZW50IG9mIHRoZSBvYmplY3Qgd2l0aCB0aGUgZXJyb3IKLSAgcHJvdGVjdGVkIE9iamVjdCBvYmplY3Q7IC8vIHRoZSBvYmplY3QgdGhlIGVycm9yIGlzIGFzc29jaWF0ZWQgd2l0aAotICBwcm90ZWN0ZWQgU3RyaW5nIGVycm9yOyAvLyB0aGUgZXJyb3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmplY3QgCi0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiAKLSAgICogQHBhcmFtIHBhcmVudE9iamVjdCB0aGUgcGFyZW50IG9iamVjdCBvZiB0aGUgb2JqZWN0IHdpdGggdGhlIGVycm9yCi0gICAqIEBwYXJhbSBvYmplY3QgdGhlIG9iamVjdCB3aXRoIHRoZSBlcnJvcgotICAgKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yCi0gICAqLwotICBwdWJsaWMgUmVhZGVyRXJyb3IoT2JqZWN0IHBhcmVudE9iamVjdCwgT2JqZWN0IG9iamVjdCwgU3RyaW5nIGVycm9yKQotICB7Ci0gICAgdGhpcy5wYXJlbnRPYmplY3QgPSBwYXJlbnRPYmplY3Q7Ci0gICAgdGhpcy5vYmplY3QgPSBvYmplY3Q7Ci0gICAgdGhpcy5lcnJvciA9IGVycm9yOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHBhcmVudCBvYmplY3Qgb2YgdGhlIG9iamVjdCB3aXRoIHRoZSBlcnJvci4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIHBhcmVudCBvYmplY3Qgb2YgdGhlIG9iamVjdCB3aXRoIHRoZSBlcnJvcgotICAgKi8KLSAgcHVibGljIE9iamVjdCBnZXRQYXJlbnRPYmplY3QoKQotICB7Ci0gICAgcmV0dXJuIHBhcmVudE9iamVjdDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBvYmplY3Qgd2l0aCB0aGUgZXJyb3IuCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSBvYmplY3Qgd2l0aCB0aGUgZXJyb3IKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZ2V0T2JqZWN0KCkKLSAgewotICAgIHJldHVybiBvYmplY3Q7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZS4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2UKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RXJyb3IoKQotICB7Ci0gICAgcmV0dXJuIGVycm9yOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL1ZhbGlkYXRvclJlZ2lzdHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL1ZhbGlkYXRvclJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YzZjY2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9WYWxpZGF0b3JSZWdpc3RyeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMTsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci0KLQotLyoqCi0gKiBBIHJlZ2lzdHJ5IHRvIGhvbGQgYWxsIHRoZSBXU0RMIDEuMSB2YWxpZGF0b3JzLgotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdG9yUmVnaXN0cnkKLXsKLQotICBwcm90ZWN0ZWQgc3RhdGljIFZhbGlkYXRvclJlZ2lzdHJ5IHZlckluc3RhbmNlOwotCi0gIHByb3RlY3RlZCBNYXAgdmFsaWRhdG9yUmVnID0gbmV3IEhhc2h0YWJsZSgpOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICovCi0gIHByb3RlY3RlZCBWYWxpZGF0b3JSZWdpc3RyeSgpCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiB0aGlzIHJlZ2lzdHJ5LgotICAgKiAKLSAgICogQHJldHVybiBUaGUgaW5zdGFuY2Ugb2YgdGhpcyByZWdpc3RyeS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgVmFsaWRhdG9yUmVnaXN0cnkgZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgaWYgKHZlckluc3RhbmNlID09IG51bGwpCi0gICAgewotICAgICAgdmVySW5zdGFuY2UgPSBuZXcgVmFsaWRhdG9yUmVnaXN0cnkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHZlckluc3RhbmNlOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlZ2lzdGVyIHRoaXMgdmFsaWRhdG9yIGRlbGVnYXRlIHdpdGggdGhlIGdpdmVuIG5hbWVzcGFjZS4KLSAgICogCi0gICAqIEBwYXJhbSBuYW1lc3BhY2UgVGhlIG5hbWVzcGFjZSB0aGUgdmFsaWRhdG9yIGlzIGFzc29jaWF0ZWQgd2l0aC4KLSAgICogQHBhcmFtIHZhbERlbGVnYXRlIFRoZSB2YWxpZGF0b3IgZGVsZWdhdGUgdG8gcmVnaXN0ZXIuCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWdpc3RlclZhbGlkYXRvcihTdHJpbmcgbmFtZXNwYWNlLCBXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZSB2YWxEZWxlZ2F0ZSkKLSAgewotICAgIC8vIGFsbG93IHRoZSBudWxsIG5hbWVzcGFjZSBidXQgbWFrZSBpdCB0aGUgZW1wdHkgc3RyaW5nCi0gICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsKQotICAgIHsKLSAgICAgIG5hbWVzcGFjZSA9ICIiOwotICAgIH0KLQotICAgIC8vIGFkZCB0aGUgdmFsaWRhdG9yIHRvIHRoZSBoYXNodGFibGUKLSAgICBpZighdmFsaWRhdG9yUmVnLmNvbnRhaW5zS2V5KG5hbWVzcGFjZSkpCi0gICAgewotICAgICAgdmFsaWRhdG9yUmVnLnB1dChuYW1lc3BhY2UsIG5ldyBXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZUNvbnRhaW5lcigpKTsKLSAgICB9Ci0gICAgKChXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZUNvbnRhaW5lcil2YWxpZGF0b3JSZWcuZ2V0KG5hbWVzcGFjZSkpLmFkZFZhbGlkYXRvcih2YWxEZWxlZ2F0ZSk7Ci0gICAgLy92YWxpZGF0b3JSZWcucHV0KG5hbWVzcGFjZSwgdmFsRGVsZWdhdGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFzayBmb3IgdGhlIHZhbGlkYXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBuYW1lc3BhY2UuIElmIG5vbmUgaXMgZm91bmQKLSAgICogcmV0dXJuIG51bGwuCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIHZhbGlkYXRvci4KLSAgICogQHJldHVybiBUaGUgV1NETCAxLjEgdmFsaWRhdG9yIGZvciB0aGUgZ2l2ZW4gbmFtZXNwYWNlLgotICAgKi8KLSAgcHVibGljIElXU0RMMTFWYWxpZGF0b3IgcXVlcnlWYWxpZGF0b3JSZWdpc3RyeShTdHJpbmcgbmFtZXNwYWNlKQotICB7Ci0gICAgLy8gaWYgdGhlIG5hbWVzcGFjZSBpcyBudWxsIGFsbG93IGl0IGFuZCB0cmVhdCBpdCBhcyB0aGUgZW1wdHkgc3RyaW5nCi0gICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsKQotICAgIHsKLSAgICAgIG5hbWVzcGFjZSA9ICIiOwotICAgIH0KLSAgICByZXR1cm4gKElXU0RMMTFWYWxpZGF0b3IpdmFsaWRhdG9yUmVnLmdldChuYW1lc3BhY2UpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnZlbmllbmNlIG1ldGhvZCB0aGF0IHRlbGxzIHdoZXRoZXIgYSB2YWxpZGF0b3IgZm9yIGEgZ2l2ZW4gbmFtZXNwYWNlIGlzIHJlZ2lzdGVyZWQuCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlIFRoZSBuYW1lc3BhY2UgdG8gY2hlY2suCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGVyZSBpcyBhIHZhbGlkYXRvciByZWdpc3RlcmVkLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBoYXNSZWdpc3RlcmVkVmFsaWRhdG9yKFN0cmluZyBuYW1lc3BhY2UpCi0gIHsKLSAgICBpZiAocXVlcnlWYWxpZGF0b3JSZWdpc3RyeShuYW1lc3BhY2UpICE9IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIGNsYXNzIFdTREwxMVZhbGlkYXRvckRlbGVnYXRlQ29udGFpbmVyIGltcGxlbWVudHMgSVdTREwxMVZhbGlkYXRvcgotICB7Ci0JcHJpdmF0ZSBMaXN0IHZhbGlkYXRvckRlbGVnYXRlcyA9IG5ldyBBcnJheUxpc3QoKTsKLQkKLQlwdWJsaWMgdm9pZCBhZGRWYWxpZGF0b3IoV1NETDExVmFsaWRhdG9yRGVsZWdhdGUgZGVsZWdhdGUpCi0JewotCSAgdmFsaWRhdG9yRGVsZWdhdGVzLmFkZChkZWxlZ2F0ZSk7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0UmVzb3VyY2VCdW5kbGUoUmVzb3VyY2VCdW5kbGUgcmIpIHsKLQkJLy9Ob3RoaW5nIHRvIGRvCi0JCQotCX0KLQotCXB1YmxpYyB2b2lkIHZhbGlkYXRlKE9iamVjdCBlbGVtZW50LCBMaXN0IHBhcmVudHMsIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKSB7Ci0JCUl0ZXJhdG9yIHZhbERlbEl0ZXIgPSB2YWxpZGF0b3JEZWxlZ2F0ZXMuaXRlcmF0b3IoKTsKLQkJd2hpbGUodmFsRGVsSXRlci5oYXNOZXh0KCkpCi0JCXsKLQkJICBXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZSBkZWxlZ2F0ZSA9IChXU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZSl2YWxEZWxJdGVyLm5leHQoKTsKLQkJICBkZWxlZ2F0ZS5nZXRWYWxpZGF0b3IoKS52YWxpZGF0ZShlbGVtZW50LCBwYXJlbnRzLCB2YWxJbmZvKTsKLQkJfQotCQkKLQl9Ci0JICAKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9XU0RMMTFCYXNpY1ZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9XU0RMMTFCYXNpY1ZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTliMDlmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvV1NETDExQmFzaWNWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY4MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTE7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5GYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLklucHV0OwotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk91dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU01vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5JTG9nZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5Mb2dnZXJGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudXRpbC5NZXNzYWdlR2VuZXJhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZC5TY2hlbWFBdHRyaWJ1dGVUYWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS54c2QuWFNEVmFsaWRhdG9yOwotCi1pbXBvcnQgY29tLmlibS53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYUNvbnN0YW50czsKLS8qKgotICogVmFsaWRhdGUgdGhlIGVsZW1lbnRzIGRlZmluZWQgaW4gYSBXU0RMIDEuMSBEb2N1bWVudC4KLSAqLwotcHVibGljIGNsYXNzIFdTREwxMUJhc2ljVmFsaWRhdG9yIGltcGxlbWVudHMgSVdTREwxMVZhbGlkYXRvcgotewotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgVkFMSURBVE9SX1JFU09VUkNFX0JVTkRMRV9OQU1FID0gInZhbGlkYXRld3NkbCI7Ci0JCi0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgTkFNRVNQQUNFU19GRUFUVVJFX0lEID0gImh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy9uYW1lc3BhY2VzIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBWQUxJREFUSU9OX0ZFQVRVUkVfSUQgPSAiaHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL3ZhbGlkYXRpb24iOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIFNDSEVNQV9WQUxJREFUSU9OX0ZFQVRVUkVfSUQgPSAiaHR0cDovL2FwYWNoZS5vcmcveG1sL2ZlYXR1cmVzL3ZhbGlkYXRpb24vc2NoZW1hIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBTQ0hFTUFfRlVMTF9DSEVDS0lOR19GRUFUVVJFX0lEID0KLSAgICAiaHR0cDovL2FwYWNoZS5vcmcveG1sL2ZlYXR1cmVzL3ZhbGlkYXRpb24vc2NoZW1hLWZ1bGwtY2hlY2tpbmciOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIENPTlRJTlVFX0FGVEVSX0ZBVEFMX0VSUk9SX0lEID0gImh0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy9jb250aW51ZS1hZnRlci1mYXRhbC1lcnJvciI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgU09BUF9FTkNPRElOR19VUkkgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iOwotICAKLSAgLy8gRXJyb3IgYW5kIFdhcm5pbmcgS2V5cwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfUE9SVF9OQU1FX05PVF9VTklRVUUgPSAiX1BPUlRfTkFNRV9OT1RfVU5JUVVFIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX05PX0JJTkRJTkdfRk9SX1BPUlQgPSAiX05PX0JJTkRJTkdfRk9SX1BPUlQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfTk9fQUREUkVTU19QT1JUID0gIl9OT19BRERSRVNTX1BPUlQiOwotLy8gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9NT1JFX1RIRU5fT05FX0FERFJFU1NfUE9SVCA9ICJfTU9SRV9USEVOX09ORV9BRERSRVNTX1BPUlQiOyAvL1RPRE8gc2hvdWxkIGJlIF9NT1JFX1RIQU5fT05FX0FERFJFU1NfUE9SVCwgbm90IFRIRU4KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX1BPUlRUWVBFX1VOREVGSU5FRF9GT1JfQklORElORyA9ICJfUE9SVFRZUEVfVU5ERUZJTkVEX0ZPUl9CSU5ESU5HIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX09QRVJBVElPTl9VTkRFRklORURfRk9SX1BPUlRUWVBFID0gIl9PUEVSQVRJT05fVU5ERUZJTkVEX0ZPUl9QT1JUVFlQRSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9PUEVSQVRJT05fTk9fSU5QVVRfT1JfT1VUUFVUID0gIl9PUEVSQVRJT05fTk9fSU5QVVRfT1JfT1VUUFVUIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0lOUFVUX05BTUVfTk9UX1VOSVFVRSA9ICJfSU5QVVRfTkFNRV9OT1RfVU5JUVVFIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX01FU1NBR0VfVU5ERUZJTkVEX0ZPUl9JTlBVVCA9ICJfTUVTU0FHRV9VTkRFRklORURfRk9SX0lOUFVUIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX09VVFBVVF9OQU1FX05PVF9VTklRVUUgPSAiX09VVFBVVF9OQU1FX05PVF9VTklRVUUiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfTUVTU0FHRV9VTkRFRklORURfRk9SX09VVFBVVCA9ICJfTUVTU0FHRV9VTkRFRklORURfRk9SX09VVFBVVCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9NRVNTQUdFX1VOREVGSU5FRF9GT1JfRkFVTFQgPSAiX01FU1NBR0VfVU5ERUZJTkVEX0ZPUl9GQVVMVCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9QQVJUX05PX0VMRU1FTlRfT1JfVFlQRSA9ICJfUEFSVF9OT19FTEVNRU5UX09SX1RZUEUiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfUEFSVF9CT1RIX0VMRU1FTlRfQU5EX1RZUEUgPSAiX1BBUlRfQk9USF9FTEVNRU5UX0FORF9UWVBFIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX1BBUlRfSU5WQUxJRF9FTEVNRU5UID0gIl9QQVJUX0lOVkFMSURfRUxFTUVOVCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9QQVJUX0lOVkFMSURfVFlQRSA9ICJfUEFSVF9JTlZBTElEX1RZUEUiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfV0FSTl9TT0FQRU5DX0lNUE9SVEVEX1BBUlQgPSAiX1dBUk5fU09BUEVOQ19JTVBPUlRFRF9QQVJUIjsKLQotICBwcml2YXRlIGZpbmFsIGludCBFTEVNRU5UID0gMDsKLSAgcHJpdmF0ZSBmaW5hbCBpbnQgVFlQRSA9IDE7Ci0gIAotICBwcml2YXRlIGZpbmFsIFN0cmluZyBSRVFVRVNUID0gIlJlcXVlc3QiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBSRVNQT05TRSA9ICJSZXNwb25zZSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFFVT1RFID0gIiciOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBFTVBUWV9TVFJJTkcgPSAiIjsKLSAgCi0KLSAgLy9wcm90ZWN0ZWQgV1NETDExVmFsaWRhdG9yQ29udHJvbGxlciB2YWxpZGF0b3Jjb250cm9sbGVyOwotICBwcm90ZWN0ZWQgTWVzc2FnZUdlbmVyYXRvciBtZXNzYWdlZ2VuZXJhdG9yOwotCi0gIHB1YmxpYyBXU0RMMTFCYXNpY1ZhbGlkYXRvcigpCi0gIHsKLQlSZXNvdXJjZUJ1bmRsZSByYiA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShWQUxJREFUT1JfUkVTT1VSQ0VfQlVORExFX05BTUUsIExvY2FsZS5nZXREZWZhdWx0KCkpOwotICAgIG1lc3NhZ2VnZW5lcmF0b3IgPSBuZXcgTWVzc2FnZUdlbmVyYXRvcihyYik7Ci0gIH0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuSVdTREwxMVZhbGlkYXRvciN2YWxpZGF0ZShqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLnV0aWwuTGlzdCwgb3JnLmVjbGlwc2Uud3NkbC52YWxpZGF0ZS53c2RsMTEuSVdTREwxMVZhbGlkYXRpb25JbmZvKQotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGUoT2JqZWN0IGVsZW1lbnQsIExpc3QgcGFyZW50cywgSVdTREwxMVZhbGlkYXRpb25JbmZvIHZhbEluZm8pCi0gIHsKLSAgICAvL3RoaXMudmFsaWRhdG9yY29udHJvbGxlciA9IHZhbGlkYXRvcmNvbnRyb2xsZXI7Ci0gICAgLy9zZXREZWZhdWx0UmVzb3VyY2VCdW5kbGVJZk5lZWRlZCh2YWxpZGF0b3Jjb250cm9sbGVyKTsKLSAgICBEZWZpbml0aW9uIHdzZGxEZWZpbml0aW9uID0gKERlZmluaXRpb24pZWxlbWVudDsKLSAgICB2YWxpZGF0ZVR5cGVzKHdzZGxEZWZpbml0aW9uLCB2YWxJbmZvKTsKLSAgICB2YWxpZGF0ZVNlcnZpY2VzKHdzZGxEZWZpbml0aW9uLCB2YWxJbmZvKTsKLSAgICB2YWxpZGF0ZUJpbmRpbmdzKHdzZGxEZWZpbml0aW9uLCB2YWxJbmZvKTsKLSAgICB2YWxpZGF0ZVBvcnRUeXBlcyh3c2RsRGVmaW5pdGlvbiwgdmFsSW5mbyk7Ci0gICAgdmFsaWRhdGVNZXNzYWdlcyh3c2RsRGVmaW5pdGlvbiwgdmFsSW5mbyk7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBUYWtlcyBhIGxpc3Qgb2YgRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIGFuZCBjaGVja3MgaWYgdGhlcmUncyBhIHZhbGlkYXRvciAKLSAgICogYXNzb2NpYXRlZCB3aXRoIGVhY2ggZWxlbWVudCBhbmQgaWYgc28gY2FsbHMgdGhlIHZhbGlkYXRvci4KLSAgICogCi0gICAqIEBwYXJhbSBwYXJlbnRzIFRoZSBsaXN0IG9mIHBhcmVudHMgb2YgdGhlIGVsZW1lbnRzLgotICAgKiBAcGFyYW0gZXh0ZW5zaWJpbGl0eUVsZW1lbnRzIFRoZSBsaXN0IG9mIGVsZW1lbnRzIHRvIHZhbGlkYXRlLgotICAgKiBAcGFyYW0gdmFsaWRhdG9yY29udHJvbGxlciBUaGUgdmFsaWRhdG9yIGNvbnRyb2xsZXIuCi0gICAqIEBwYXJhbSB3c2RsRGVmaW5pdGlvbiBUaGUgZGVmbmludGlvbnMgZWxlbWVudCBmb3IgdGhpcyBkb2N1bWVudC4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZhbGlkYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnRMaXN0KAotICAgIExpc3QgcGFyZW50cywKLSAgICBMaXN0IGV4dGVuc2liaWxpdHlFbGVtZW50cywKLSAgICBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotICAgIFZhbGlkYXRvclJlZ2lzdHJ5IHZlciA9IFZhbGlkYXRvclJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0gICAgSXRlcmF0b3IgZXh0RWxlbXMgPSBleHRlbnNpYmlsaXR5RWxlbWVudHMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoZXh0RWxlbXMuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZXh0RWxlbXMubmV4dCgpOwotICAgICAgU3RyaW5nIG5hbWVzcGFjZSA9IGVsZW1lbnQuZ2V0RWxlbWVudFR5cGUoKS5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgIElXU0RMMTFWYWxpZGF0b3IgdmFsID0gdmVyLnF1ZXJ5VmFsaWRhdG9yUmVnaXN0cnkobmFtZXNwYWNlKTsKLSAgICAgIGlmICh2YWwgIT0gbnVsbCkKLSAgICAgICB7Ci0gICAgICAgIHZhbC52YWxpZGF0ZShlbGVtZW50LCBwYXJlbnRzLCB2YWxJbmZvKTsKLSAgICAgIH0KLS8vICAgICAgZWxzZQotLy8gICAgICAgewotLy8gICAgICAgIHZhbEluZm8uYWRkTmFtZXNwYWNlV2l0aE5vVmFsaWRhdG9yKG5hbWVzcGFjZSk7Ci0vLyAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogRW5zdXJlIHRoYXQgdGhlIFR5cGVzIGVsZW1lbnQgaXMgY29ycmVjdC4gCi0gICAqIAotICAgKiBAcGFyYW0gd3NkbERlZmluaXRpb24gVGhlIGRlZmluaXRpb25zIGVsZW1lbnQgZnJvbSB0aGUgY3VycmVudCBkb2N1bWVudC4KLSAgICovCi0KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVUeXBlcyhEZWZpbml0aW9uIHdzZGxEZWZpbml0aW9uLCBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotICAgIFR5cGVzIHR5cGVzID0gd3NkbERlZmluaXRpb24uZ2V0VHlwZXMoKTsKLSAgICAvLyBlbnN1cmUgdGhhdCB0eXBlcyBpcyBkZWZpbmVkCi0gICAgaWYgKHR5cGVzICE9IG51bGwpCi0gICAgewotICAgICAgTGlzdCBwYXJlbnRzID0gbmV3IFZlY3RvcigpOwotICAgICAgcGFyZW50cy5hZGQod3NkbERlZmluaXRpb24pOwotICAgICAgcGFyZW50cy5hZGQoMCwgdHlwZXMpOwotICAgICAgdmFsaWRhdGVFeHRlbnNpYmlsaXR5RWxlbWVudExpc3QocGFyZW50cywgdHlwZXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCksIHZhbEluZm8pOwotICAgICAgcGFyZW50cy5yZW1vdmUoMCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFZhbGlkYXRlcyBhbGwgb2YgdGhlIGRlY2xhcmVkIHNlcnZpY2VzIGZvciB0aGUgZGVmaW5pdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSB3c2RsRGVmaW5pdGlvbiBUaGUgV1NETCBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVTZXJ2aWNlcyhEZWZpbml0aW9uIHdzZGxEZWZpbml0aW9uLCBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotICAgIGlmICh3c2RsRGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgT2JqZWN0IHNlcnZpY2VzW10gPSB3c2RsRGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpLnZhbHVlcygpLnRvQXJyYXkoKTsKLSAgICBMaXN0IHBhcmVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgcGFyZW50cy5hZGQod3NkbERlZmluaXRpb24pOwotICAgIEhhc2h0YWJsZSBhbGxQb3J0cyA9IG5ldyBIYXNodGFibGUoKTsKLQotICAgIC8vVE9ETzogY2hlY2sgdGhhdCBwb3J0cyBpbiBvdGhlciBpbXBvcnRlZCBmaWxlcyBkb24ndCBjb25mbGljdCB3aXRoIHBvcnRzIGluIHRoaXMgb25lCi0gICAgLy8gICAgLy8gcmVnaXN0ZXIgYWxsIG9mIHRoZSBpbXBvcnRlZCBwb3J0cwotICAgIC8vICAgIEl0ZXJhdG9yIGltcG9ydHMgPSB3c2RsRGVmaW5pdGlvbi5nZXRJbXBvcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAvLyAgICB3aGlsZShpbXBvcnRzLmhhc05leHQoKSkKLSAgICAvLyAgICB7Ci0gICAgLy8gICAgICBJdGVyYXRvciBpbXBzZXJ2aWNlcyA9ICgoSW1wb3J0KWltcG9ydHMubmV4dCgpKS5nZXREZWZpbml0aW9uKCkuZ2V0U2VydmljZXMoKS52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIC8vICAgICAgd2hpbGUoaW1wc2VydmljZXMuaGFzTmV4dCgpKQotICAgIC8vICAgICAgewotICAgIC8vICAgICAgICBJdGVyYXRvciBpbXBwb3J0cyA9ICgoU2VydmljZSlpbXBzZXJ2aWNlcy5uZXh0KCkpLmdldFBvcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAvLyAgICAgICAgd2hpbGUoaW1wcG9ydHMuaGFzTmV4dCgpKQotICAgIC8vICAgICAgICB7Ci0gICAgLy8gICAgICAgICAgUG9ydCB0ZW1wUCA9IChQb3J0KWltcHBvcnRzLm5leHQoKTsKLSAgICAvLyAgICAgICAgICBhbGxQb3J0cy5wdXQodGVtcFAuZ2V0TmFtZSgpLHRlbXBQKTsJCi0gICAgLy8gICAgICAgIH0KLSAgICAvLyAgICAgIH0KLSAgICAvLyAgICB9Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXJ2aWNlcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBTZXJ2aWNlIHMgPSAoU2VydmljZSlzZXJ2aWNlc1tpXTsKLSAgICAgIHBhcmVudHMuYWRkKDAsIHMpOwotICAgICAgT2JqZWN0IHBvcnRzW10gPSBzLmdldFBvcnRzKCkudmFsdWVzKCkudG9BcnJheSgpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwb3J0cy5sZW5ndGg7IGorKykKLSAgICAgIHsKLSAgICAgICAgUG9ydCBwID0gKFBvcnQpcG9ydHNbal07Ci0gICAgICAgIHBhcmVudHMuYWRkKDAsIHApOwotICAgICAgICAvLyBhIFBvcnQgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGVudGlyZSBXRFNMIGRvY3VtZW50Ci0gICAgICAgIGlmIChhbGxQb3J0cy5jb250YWlucyhwLmdldE5hbWUoKSkpCi0gICAgICAgIHsgIFN0cmluZ1tdIGFyZ3MgPSB7cC5nZXROYW1lKCl9OwotICAgICAgICAgIAotICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX1BPUlRfTkFNRV9OT1RfVU5JUVVFLCBRVU9URSArIGFyZ3NbMF0gKyBRVU9URSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgX1BPUlRfTkFNRV9OT1RfVU5JUVVFLCBhcmdzKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBhbGxQb3J0cy5wdXQocC5nZXROYW1lKCksIHApOwotCi0gICAgICAgICAgLy8gZ2V0IHRoZSBiaW5kaW5nIGZvciB0aGlzIHBvcnQgYW5kIHNlZSBpZiB0aGUgUG9ydFR5cGUgZm9yIHRoZSBiaW5kaW5nCi0gICAgICAgICAgLy8gaXMgZGVmaW5lZAotICAgICAgICAgIGlmIChwLmdldEJpbmRpbmcoKSA9PSBudWxsIHx8IHAuZ2V0QmluZGluZygpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nIGJpbmRpbmdOYW1lID0gRU1QVFlfU1RSSU5HOwotICAgICAgICAgICAgaWYgKHAuZ2V0QmluZGluZygpICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGJpbmRpbmdOYW1lID0gcC5nZXRCaW5kaW5nKCkuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFN0cmluZyBhcmdzW10gPSB7cC5nZXROYW1lKCl9OwotICAgICAgICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX05PX0JJTkRJTkdfRk9SX1BPUlQsIFFVT1RFICsgYXJnc1swXSArIFFVT1RFLCBRVU9URSArIGJpbmRpbmdOYW1lICsgUVVPVEUpLAotICAgICAgICAgICAgICBwLCBfTk9fQklORElOR19GT1JfUE9SVCwgYXJncyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUT0RPOiBDaGVjayB0aGF0IHRoZSBvdXRwdXQgb2Ygb25lIHBvcnQgaXNuJ3QgdGhlIGlucHV0IG9mIGFub3RoZXIgYW5kIHZpY2UgdmVyc2EKLSAgICAgICAgICAgIC8vIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgdGhlIHBvcnQKLSAgICAgICAgICAgIC8vIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBhbmQgbXVzdCBiZSBvbmUgZXh0ZW5zaWJpbGl0eSBlbGVtZW50IGRlZmluZWQgZm9yIGEgcG9ydAotICAgICAgICAgICAgLy8gVE9ETzogUmV2aXNpdC4gVGhlcmUgaXMgbm8gc3RhbmRhcmQgd2F5IHRvIGRldGVybWluZSB3aGljaCBleHRlbnNpYmlsaXR5IGVsZW1lbnQKLSAgICAgICAgICAgIC8vIHNwZWNpZmllcyB0aGUgYWRkcmVzcy4gRXZlbiB3aGVuIHRoZSBwb3J0IGhhcyBhdCBsZWFzdCBvbmUgZXh0ZW5zaWJpbGl0eSBlbGVtZW50LAotICAgICAgICAgICAgLy8gdGhlcmUgaXMgbm8gd2F5IHRvIGVuc3VyZSB0aGF0IGlzICJ0aGUiIGFkZHJlc3Mgb25lLgotICAgICAgICAgICAgTGlzdCBleHRlbGVtcyA9IHAuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICAgICAgICBpZiAoZXh0ZWxlbXMuc2l6ZSgpIDwgMSkKLSAgICAgICAgICAgIHsgU3RyaW5nIGFyZ3NbXT0ge3AuZ2V0TmFtZSgpfTsKLSAgICAgICAgICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfTk9fQUREUkVTU19QT1JULCBRVU9URSArIGFyZ3NbMF0gKyBRVU9URSksCi0gICAgICAgICAgICAgICAgICBwLCBfTk9fQUREUkVTU19QT1JULCBhcmdzKTsKLSAgICAgICAgICAgIH0KLS8vIFNlZSBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTczODU0ICAgICAgICAgICAgCi0vLyBUaGUgV1MtSSBiYXNpYyBwcm9maWxlIGhhcyByZWxheGVkIHRoZSBudW1iZXIgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyBhbGxvd2VkIGZvciBwb3J0cy4KLS8vIEEgbnVtYmVyIG9mIFdTIHNwZWNpZmljYXRpb25zIGxpa2UgSkFYLVdTIGFuZCBXUyBQb2xpY3kgZGVmaW5lIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgZm9yIHBvcnRzLgotLy8gVGhpcyBjb2RlIGlzIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSBpdCBpcyB0b28gcmVzdHJpY3RpdmUgYW5kIGdlbmVyYXRlcyBlcnJvcnMgdGhhdCBhcHBlYXIgaW52YWxpZC4gICAgICAgICAgICAKLS8vICAgICAgICAgICAgZWxzZSBpZiAoZXh0ZWxlbXMuc2l6ZSgpID4gMSkKLS8vICAgICAgICAgICAgewotLy8gICAgICAgICAgICAgIGZvciAoaW50IGsgPSAxOyBrIDwgZXh0ZWxlbXMuc2l6ZSgpOyBrKyspCi0vLyAgICAgICAgICAgICAgewotLy8gICAgICAgICAgICAgICAgU3RyaW5nW10gYXJncyA9IHtwLmdldE5hbWUoKX07Ci0vLyAgICAgICAgICAgICAgICB2YWxJbmZvLmFkZEVycm9yKAotLy8gICAgICAgICAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfTU9SRV9USEVOX09ORV9BRERSRVNTX1BPUlQsIFFVT1RFICsgYXJnc1swXSArIFFVT1RFKSwKLS8vICAgICAgICAgICAgICAgICAgZXh0ZWxlbXMuZ2V0KGspLCBfTU9SRV9USEVOX09ORV9BRERSRVNTX1BPUlQsIGFyZ3MpOwotLy8gICAgICAgICAgICAgIH0KLS8vICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFsaWRhdGVFeHRlbnNpYmlsaXR5RWxlbWVudExpc3QocGFyZW50cywgcC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSwgdmFsSW5mbyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcGFyZW50cy5yZW1vdmUoMCk7Ci0gICAgICB9Ci0gICAgICAvLyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIGZvciB0aGUgc2VydmljZQotICAgICAgdmFsaWRhdGVFeHRlbnNpYmlsaXR5RWxlbWVudExpc3QocGFyZW50cywgcy5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSwgdmFsSW5mbyk7Ci0gICAgICBwYXJlbnRzLnJlbW92ZSgwKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2tzIHRoYXQgdGhlIGJpbmRpbmdzIHJlZmVyIHRvIHZhbGlkIFBvcnRUeXBlcyBhbmQgYWxsIG9mIHRoZSBvcGVyYXRpb25zCi0gIC8vIGluIGEgZ2l2ZW4gYmluZGluZyByZWZlciB0byBhIGRlZmluZWQgb3BlcmF0aW9uIHdpdGhpbiB0aGUgY29ycmVzcG9uZGluZwotICAvLyBQb3J0VHlwZS4KLSAgICogCi0gICAqIEBwYXJhbSB3c2RsRGVmaW5pdGlvbiBUaGUgV1NETCBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVCaW5kaW5ncyhEZWZpbml0aW9uIHdzZGxEZWZpbml0aW9uLCBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotICAgIGlmICh3c2RsRGVmaW5pdGlvbi5nZXRCaW5kaW5ncygpID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgT2JqZWN0IGJpbmRpbmdzW10gPSB3c2RsRGVmaW5pdGlvbi5nZXRCaW5kaW5ncygpLnZhbHVlcygpLnRvQXJyYXkoKTsKLSAgICBMaXN0IHBhcmVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgcGFyZW50cy5hZGQod3NkbERlZmluaXRpb24pOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYmluZGluZ3MubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgQmluZGluZyBiID0gKEJpbmRpbmcpYmluZGluZ3NbaV07Ci0gICAgICBwYXJlbnRzLmFkZCgwLCBiKTsKLSAgICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gYi5nZXRQb3J0VHlwZSgpOwotCi0gICAgICBpZiAocG9ydFR5cGUgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICAvLyB0aGUgUG9ydFR5cGUgaXMgbm90IGRlZmluZWQgc28gZG9uJ3QgYm90aGVyIGNoZWNraW5nIHRoZSBvcGVyYXRpb25zCi0gICAgICBpZiAocG9ydFR5cGUuaXNVbmRlZmluZWQoKSkKLSAgICAgIHsgU3RyaW5nW10gYXJncyA9IHtwb3J0VHlwZS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpLCBiLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCl9OwotICAgICAgICB2YWxJbmZvLmFkZEVycm9yKAotICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKAotICAgICAgICAgICAgX1BPUlRUWVBFX1VOREVGSU5FRF9GT1JfQklORElORywKLSAgICAgICAgICAgIFFVT1RFICsgYXJnc1swXSArIFFVT1RFLAotICAgICAgICAgICAgUVVPVEUgKyBhcmdzWzFdICsgUVVPVEUpLAotICAgICAgICAgIGIsIF9QT1JUVFlQRV9VTkRFRklORURfRk9SX0JJTkRJTkcsIGFyZ3MpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyB0aGUgUG9ydFR5cGUgaXMgZGVmaW5lZCBzbyBub3cgd2UgaGF2ZSB0byBjaGVjayB0aGF0IHRoZSBvcGVyYXRpb25zIGFyZSBkZWZpbmVkCi0gICAgICAgIE9iamVjdCBiaW5kaW5nT3BlcmF0aW9uc1tdID0gYi5nZXRCaW5kaW5nT3BlcmF0aW9ucygpLnRvQXJyYXkoKTsKLQotICAgICAgICAvLyBjaGVjayBpZiB0aGUgb3BlcmF0aW9uIGlzIGRlZmluZWQgZm9yIGVhY2ggQmluZGluZ09wZXJhdGlvbgotICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IGJpbmRpbmdPcGVyYXRpb25zLmxlbmd0aDsgaysrKQotICAgICAgICB7Ci0gICAgICAgICAgQmluZGluZ09wZXJhdGlvbiBibyA9IChCaW5kaW5nT3BlcmF0aW9uKWJpbmRpbmdPcGVyYXRpb25zW2tdOwotICAgICAgICAgIHBhcmVudHMuYWRkKDAsIGJvKTsKLSAgICAgICAgICBpZiAoYm8uZ2V0T3BlcmF0aW9uKCkgPT0gbnVsbCB8fCBiby5nZXRPcGVyYXRpb24oKS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ1tdIGFyZ3MgPSB7Yi5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpLCBwb3J0VHlwZS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpfTsKLSAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKAotICAgICAgICAgICAgICAgIF9PUEVSQVRJT05fVU5ERUZJTkVEX0ZPUl9QT1JUVFlQRSwKLSAgICAgICAgICAgICAgICBRVU9URSArIGFyZ3NbMF0gKyBRVU9URSwKLSAgICAgICAgICAgICAgICBRVU9URSArIGFyZ3NbMV0gKyBRVU9URSksCi0gICAgICAgICAgICAgIGJvLCBfT1BFUkFUSU9OX1VOREVGSU5FRF9GT1JfUE9SVFRZUEUsIGFyZ3MpOwotICAgICAgICAgICAgLy8gbmljZSBpZGVhIHRvIGFkZCBzdWdnZXN0aW9ucyB0byBvdGhlciBlbGVtZW50cyB0byBmaXggdGhlIGVycm9yCi0gICAgICAgICAgICAvLyBidXQgaXQgZG9lc24ndCB3b3JrIHdpdGggbXVsdGlwZSBmaWxlcyBsaWtlIHRoaXMKLSAgICAgICAgICAgIC8vYWRkVmFsaWRhdGlvbk1lc3NhZ2Uod2FybmluZ0xpc3QscG9ydFR5cGUscG9ydFR5cGUuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSArICJEZWZpbmUgYW4gb3BlcmF0aW9uIGhlcmUgdG8gY29ycmVzcG9uZCB3aXRoIHRoZSBvcGVyYXRpb24gaW46ICIgKyBiby5nZXROYW1lKCkpOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyB0YWtlIGNhcmUgb2YgYWxsIHRoZSBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIGluIHRoZSBiaW5kaW5nIG9wZXJhdGlvbiwgYmluZGluZyBpbnB1dHMsIG91dHB1dHMgYW5kIGZhdWx0cwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBCaW5kaW5nSW5wdXQgYmlucHV0ID0gYm8uZ2V0QmluZGluZ0lucHV0KCk7Ci0gICAgICAgICAgICBpZiAoYmlucHV0ICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHBhcmVudHMuYWRkKDAsIGJpbnB1dCk7Ci0gICAgICAgICAgICAgIC8vIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgZm9yIGJpbmRpbmcgb3BlcmF0aW9uIGlucHV0Ci0gICAgICAgICAgICAgIHZhbGlkYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnRMaXN0KAotICAgICAgICAgICAgICAgIHBhcmVudHMsCi0gICAgICAgICAgICAgICAgYm8uZ2V0QmluZGluZ0lucHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCksCi0gICAgICAgICAgICAgICAgdmFsSW5mbyk7Ci0gICAgICAgICAgICAgIHBhcmVudHMucmVtb3ZlKDApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQmluZGluZ091dHB1dCBib3V0cHV0ID0gYm8uZ2V0QmluZGluZ091dHB1dCgpOwotICAgICAgICAgICAgaWYgKGJvdXRwdXQgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcGFyZW50cy5hZGQoMCwgYm91dHB1dCk7Ci0gICAgICAgICAgICAgIC8vIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgZm9yIGJpbmRpbmcgb3BlcmF0aW9uIG91dHB1dAotICAgICAgICAgICAgICB2YWxpZGF0ZUV4dGVuc2liaWxpdHlFbGVtZW50TGlzdCgKLSAgICAgICAgICAgICAgICBwYXJlbnRzLAotICAgICAgICAgICAgICAgIGJvLmdldEJpbmRpbmdPdXRwdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSwKLSAgICAgICAgICAgICAgICB2YWxJbmZvKTsKLSAgICAgICAgICAgICAgcGFyZW50cy5yZW1vdmUoMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBubyBpbnB1dCBvciBvdXRwdXQgaGFzIGJlZW4gZGVmaW5lZCBmb3IgdGhlIG9wZXJhdGlvbgotICAgICAgICAgICAgaWYgKGJpbnB1dCA9PSBudWxsICYmIGJvdXRwdXQgPT0gbnVsbCkKLSAgICAgICAgICAgIHsgU3RyaW5nW10gYXJncyA9IHsgYm8uZ2V0TmFtZSgpIH07Ci0gICAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX09QRVJBVElPTl9OT19JTlBVVF9PUl9PVVRQVVQsIFFVT1RFICsgYXJnc1swXSArIFFVT1RFKSwKLSAgICAgICAgICAgICAgICBibywgX09QRVJBVElPTl9OT19JTlBVVF9PUl9PVVRQVVQsIGFyZ3MpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyBmb3IgZWFjaCBiaW5kaW5nIG9wZXJhdGlvbiBmYXVsdAotICAgICAgICAgICAgSXRlcmF0b3IgZmF1bHRzID0gYm8uZ2V0QmluZGluZ0ZhdWx0cygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICB3aGlsZSAoZmF1bHRzLmhhc05leHQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgQmluZGluZ0ZhdWx0IGJmID0gKEJpbmRpbmdGYXVsdClmYXVsdHMubmV4dCgpOwotICAgICAgICAgICAgICBwYXJlbnRzLmFkZCgwLCBiZik7Ci0gICAgICAgICAgICAgIHZhbGlkYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnRMaXN0KHBhcmVudHMsIGJmLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLCB2YWxJbmZvKTsKLSAgICAgICAgICAgICAgcGFyZW50cy5yZW1vdmUoMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgZm9yIGJpbmRpbmcgb3BlcmF0aW9uCi0gICAgICAgICAgdmFsaWRhdGVFeHRlbnNpYmlsaXR5RWxlbWVudExpc3QocGFyZW50cywgYm8uZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCksIHZhbEluZm8pOwotICAgICAgICAgIHBhcmVudHMucmVtb3ZlKDApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIGZvciB0aGUgYmluZGluZwotICAgICAgdmFsaWRhdGVFeHRlbnNpYmlsaXR5RWxlbWVudExpc3QocGFyZW50cywgYi5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSwgdmFsSW5mbyk7Ci0gICAgICBwYXJlbnRzLnJlbW92ZSgwKTsKLSAgICB9Ci0KLSAgfQotCi0gIC8qKgotICAgKiBDaGVjayB0aGF0IGFsbCBvZiB0aGUgUG9ydFR5cGVzIGhhdmUgdmFsaWQgbWVzc2FnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZWlyCi0gIC8vIG9wZXJhdGlvbiBpbnB1dCwgb3V0cHV0IGFuZCBmYXVsdCB0eXBlcy4KLSAgICogCi0gICAqIEBwYXJhbSB3c2RsRGVmaW5pdGlvbiBUaGUgV1NETCBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVQb3J0VHlwZXMoRGVmaW5pdGlvbiB3c2RsRGVmaW5pdGlvbiwgSVdTREwxMVZhbGlkYXRpb25JbmZvIHZhbEluZm8pCi0gIHsKLSAgICBpZiAod3NkbERlZmluaXRpb24uZ2V0UG9ydFR5cGVzKCkgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBPYmplY3QgcG9ydHR5cGVzW10gPSB3c2RsRGVmaW5pdGlvbi5nZXRQb3J0VHlwZXMoKS52YWx1ZXMoKS50b0FycmF5KCk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHBvcnR0eXBlcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBQb3J0VHlwZSBwID0gKFBvcnRUeXBlKXBvcnR0eXBlc1tpXTsKLSAgICAgIE9iamVjdCBvcGVyYXRpb25zW10gPSBwLmdldE9wZXJhdGlvbnMoKS50b0FycmF5KCk7Ci0gICAgICBMaXN0IGluQW5kT3V0TmFtZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IG9wZXJhdGlvbnMubGVuZ3RoOyBqKyspCi0gICAgICB7Ci0gICAgICAgIE9wZXJhdGlvbiBvID0gKE9wZXJhdGlvbilvcGVyYXRpb25zW2pdOwotICAgICAgICBpZiAobyA9PSBudWxsIHx8IG8uaXNVbmRlZmluZWQoKSkKLSAgICAgICAgewotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gY2hlY2sgdGhhdCB0aGUgbWVzc2FnZXMgYXJlIGRlZmluZWQgZm9yIHRoZSBpbnB1dCwgb3V0cHV0IGFuZCBmYXVsdHMKLSAgICAgICAgTWVzc2FnZSBtOwotICAgICAgICBJbnB1dCBpbnB1dCA9IG8uZ2V0SW5wdXQoKTsKLSAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgaW5wdXROYW1lID0gaW5wdXQuZ2V0TmFtZSgpOwotICAgICAgICAgIC8vIGlmIHRoZSBuYW1lIGlzbid0IGRlZmluZWQgaXQgZGVmYXVsdHMgdG8gdGhpcwotICAgICAgICAgIGlmIChpbnB1dE5hbWUgPT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnB1dE5hbWUgPSBvLmdldE5hbWUoKSArIFJFUVVFU1Q7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChpbkFuZE91dE5hbWVzLmNvbnRhaW5zKGlucHV0TmFtZSkpCi0gICAgICAgICAgeyBTdHJpbmdbXSBhcmdzID0ge2lucHV0TmFtZSwgcC5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpIH07Ci0gICAgICAgICAgICB2YWxJbmZvLmFkZEVycm9yKAotICAgICAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygKLSAgICAgICAgICAgICAgICBfSU5QVVRfTkFNRV9OT1RfVU5JUVVFLAotICAgICAgICAgICAgICAgIFFVT1RFICsgYXJnc1swXSArIFFVT1RFLAotICAgICAgICAgICAgICAgIFFVT1RFICsgYXJnc1sxXSArIFFVT1RFKSwKLSAgICAgICAgICAgICAgaW5wdXQsIF9JTlBVVF9OQU1FX05PVF9VTklRVUUsIGFyZ3MpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgaW5BbmRPdXROYW1lcy5hZGQoaW5wdXROYW1lKTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBtID0gaW5wdXQuZ2V0TWVzc2FnZSgpOwotICAgICAgICAgIGlmIChtICE9IG51bGwgJiYgbS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBtZXNzTmFtZSA9IEVNUFRZX1NUUklORzsKLSAgICAgICAgICAgIFFOYW1lIG1lc3NRTmFtZSA9IG0uZ2V0UU5hbWUoKTsKLSAgICAgICAgICAgIGlmIChtZXNzUU5hbWUgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbWVzc05hbWUgPSBtZXNzUU5hbWUuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTdHJpbmdbXSBhcmdzID0ge21lc3NOYW1lfTsKLSAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX01FU1NBR0VfVU5ERUZJTkVEX0ZPUl9JTlBVVCwgUVVPVEUgKyBhcmdzWzBdICsgUVVPVEUpLAotICAgICAgICAgICAgICAgIGlucHV0LCBfTUVTU0FHRV9VTkRFRklORURfRk9SX0lOUFVULCBhcmdzKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgT3V0cHV0IG91dHB1dCA9IG8uZ2V0T3V0cHV0KCk7Ci0gICAgICAgIGlmIChvdXRwdXQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBvdXRwdXROYW1lID0gb3V0cHV0LmdldE5hbWUoKTsKLSAgICAgICAgICAvLyBpZiB0aGUgbmFtZSBpc24ndCBkZWZpbmVkIGl0IGRlZmF1bHRzIHRvIHRoaXMKLSAgICAgICAgICBpZiAob3V0cHV0TmFtZSA9PSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG91dHB1dE5hbWUgPSBvLmdldE5hbWUoKSArIFJFU1BPTlNFOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChpbkFuZE91dE5hbWVzLmNvbnRhaW5zKG91dHB1dE5hbWUpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ1tdIGFyZ3MgPSB7b3V0cHV0TmFtZSwgcC5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpfTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoCi0gICAgICAgICAgICAgICAgX09VVFBVVF9OQU1FX05PVF9VTklRVUUsCi0gICAgICAgICAgICAgICAgUVVPVEUgKyBhcmdzWzBdICsgUVVPVEUsCi0gICAgICAgICAgICAgICAgUVVPVEUgKyBhcmdzWzFdICsgUVVPVEUpLAotICAgICAgICAgICAgICBvdXRwdXQsIF9PVVRQVVRfTkFNRV9OT1RfVU5JUVVFLCBhcmdzKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGluQW5kT3V0TmFtZXMuYWRkKG91dHB1dE5hbWUpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIG0gPSBvdXRwdXQuZ2V0TWVzc2FnZSgpOwotICAgICAgICAgIGlmIChtICE9IG51bGwgJiYgbS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBtZXNzTmFtZSA9IEVNUFRZX1NUUklORzsKLSAgICAgICAgICAgIFFOYW1lIG1lc3NRTmFtZSA9IG0uZ2V0UU5hbWUoKTsKLSAgICAgICAgICAgIGlmIChtZXNzUU5hbWUgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbWVzc05hbWUgPSBtZXNzUU5hbWUuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTdHJpbmdbXSBhcmdzID0ge21lc3NOYW1lfTsKLSAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX01FU1NBR0VfVU5ERUZJTkVEX0ZPUl9PVVRQVVQsIFFVT1RFICsgYXJnc1swXSArIFFVT1RFKSwKLSAgICAgICAgICAgICAgICBvdXRwdXQsIF9NRVNTQUdFX1VOREVGSU5FRF9GT1JfT1VUUFVULCBhcmdzKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBPYmplY3QgZmF1bHRzW10gPSBvLmdldEZhdWx0cygpLnZhbHVlcygpLnRvQXJyYXkoKTsKLQotICAgICAgICAvL0xpc3QgZmF1bHROYW1lcyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBmYXVsdHMubGVuZ3RoOyBrKyspCi0gICAgICAgIHsKLSAgICAgICAgICBGYXVsdCBmID0gKEZhdWx0KWZhdWx0c1trXTsKLSAgICAgICAgICBtID0gZi5nZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgaWYgKG0gIT0gbnVsbCAmJiBtLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nIG1lc3NOYW1lID0gRU1QVFlfU1RSSU5HOwotICAgICAgICAgICAgUU5hbWUgbWVzc1FOYW1lID0gbS5nZXRRTmFtZSgpOwotICAgICAgICAgICAgaWYgKG1lc3NRTmFtZSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBtZXNzTmFtZSA9IG1lc3NRTmFtZS5nZXRMb2NhbFBhcnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFN0cmluZyBhcmdzW10gPSB7bWVzc05hbWV9OwotICAgICAgICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfTUVTU0FHRV9VTkRFRklORURfRk9SX0ZBVUxULCBRVU9URSArIGFyZ3NbMF0gKyBRVU9URSksCi0gICAgICAgICAgICAgICAgZiwgX01FU1NBR0VfVU5ERUZJTkVEX0ZPUl9GQVVMVCwgYXJncyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrIHRoYXQgYWxsIHRoZSBtZXNzYWdlcyBkZWZpbmVkIGluIHRoZSBXU0RMIGRvY3VtZW50IGFyZSB2YWxpZC4KLSAgICogCi0gICAqIEBwYXJhbSB3c2RsRGVmaW5pdGlvbiBUaGUgV1NETCBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVNZXNzYWdlcyhEZWZpbml0aW9uIHdzZGxEZWZpbml0aW9uLCBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotICAgIGlmICh3c2RsRGVmaW5pdGlvbi5nZXRNZXNzYWdlcygpID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgSXRlcmF0b3IgbWVzc2FnZXMgPSB3c2RsRGVmaW5pdGlvbi5nZXRNZXNzYWdlcygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0KLSAgICB3aGlsZSAobWVzc2FnZXMuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIE1lc3NhZ2UgbSA9IChNZXNzYWdlKW1lc3NhZ2VzLm5leHQoKTsKLSAgICAgIGlmICghbS5pc1VuZGVmaW5lZCgpKQotICAgICAgewotICAgICAgICAvLyBpZiB0aGUgbWVzc2FnZSBoYXMgYSBwYXJ0IChhbmQgaXQgZG9lc24ndCBoYXZlIHRvKQotICAgICAgICAvLyBlbnN1cmUgZWFjaCBtZXNzYWdlIHBhcnQgaGFzIGVpdGhlciBhbiBlbGVtZW50IG9yIGEgdHlwZQotICAgICAgICBpZiAoIW0uZ2V0UGFydHMoKS5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBJdGVyYXRvciBwYXJ0cyA9IG0uZ2V0UGFydHMoKS52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICAgIHdoaWxlIChwYXJ0cy5oYXNOZXh0KCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgUGFydCBwID0gKFBhcnQpcGFydHMubmV4dCgpOwotICAgICAgICAgICAgUU5hbWUgZWxlbWVudE5hbWUgPSBwLmdldEVsZW1lbnROYW1lKCk7Ci0gICAgICAgICAgICBRTmFtZSB0eXBlTmFtZSA9IHAuZ2V0VHlwZU5hbWUoKTsKLSAgICAgICAgICAgIE1hcCBleHRBdHRzID0gcC5nZXRFeHRlbnNpb25BdHRyaWJ1dGVzKCk7Ci0gICAgICAgICAgICAvLyBUT0RPOlRoaXMgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkIGFzIHBhcnRzIGNhbiBoYXZlIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICAgICAgICAgIC8vZW5zdXJlIHRoZSBwYXJ0IGhhcyBhIHR5cGUgb3IgYW4gZWxlbWVudCBkZWZpbmVkCi0gICAgICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gbnVsbCAmJiB0eXBlTmFtZSA9PSBudWxsICYmIChleHRBdHRzID09IG51bGwgfHwgZXh0QXR0cy5pc0VtcHR5KCkpKQotICAgICAgICAgICAgeyBTdHJpbmdbXSBhcmdzID0geyBwLmdldE5hbWUoKX07Ci0gICAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX1BBUlRfTk9fRUxFTUVOVF9PUl9UWVBFLCBRVU9URSArIGFyZ3NbMF0gKyBRVU9URSksCi0gICAgICAgICAgICAgICAgICBwLCBfUEFSVF9OT19FTEVNRU5UX09SX1RZUEUsIGFyZ3MpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy9oZXJlIHRoZSBwYXJ0IGhhcyBib3RoIHRoZSBlbGVtZW50IGFuZCB0eXBlIGRlZmluZWQgYW5kIGl0IGNhbiBvbmx5IGhhdmUgb25lIGRlZmluZWQJCi0gICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50TmFtZSAhPSBudWxsICYmIHR5cGVOYW1lICE9IG51bGwpCi0gICAgICAgICAgICB7IFN0cmluZ1tdIGFyZ3MgPSB7cC5nZXROYW1lKCl9OwotICAgICAgICAgICAgICB2YWxJbmZvLmFkZEVycm9yKG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9QQVJUX0JPVEhfRUxFTUVOVF9BTkRfVFlQRSwgUVVPVEUgKyBhcmdzWzBdICsgUVVPVEUpLAotICAgICAgICAgICAgICAgICAgcCwgX1BBUlRfQk9USF9FTEVNRU5UX0FORF9UWVBFLCBhcmdzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnROYW1lICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmICghY2hlY2tQYXJ0Q29uc3RpdHVlbnQoZWxlbWVudE5hbWUuZ2V0TmFtZXNwYWNlVVJJKCksCi0gICAgICAgICAgICAgICAgZWxlbWVudE5hbWUuZ2V0TG9jYWxQYXJ0KCksCi0gICAgICAgICAgICAgICAgRUxFTUVOVCwKLSAgICAgICAgICAgICAgICBwLAotICAgICAgICAgICAgICAgIHZhbEluZm8pKQotICAgICAgICAgICAgICB7IFN0cmluZ1tdIGFyZ3MgPSB7cC5nZXROYW1lKCksIGVsZW1lbnROYW1lLmdldExvY2FsUGFydCgpfTsKLSAgICAgICAgICAgICAgICB2YWxJbmZvLmFkZEVycm9yKAotICAgICAgICAgICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgIF9QQVJUX0lOVkFMSURfRUxFTUVOVCwKLSAgICAgICAgICAgICAgICAgICAgUVVPVEUgKyBhcmdzWzBdICsgUVVPVEUsCi0gICAgICAgICAgICAgICAgICAgIFFVT1RFICsgYXJnc1sxXSArIFFVT1RFKSwKLSAgICAgICAgICAgICAgICAgIHAsIF9QQVJUX0lOVkFMSURfRUxFTUVOVCwgYXJncyk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVOYW1lICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vIGNoZWNrIHRoYXQgdGhlIHR5cGUgaXRzZWxmIGlzIGRlZmluZWQgcHJvcGVybHkKLSAgICAgICAgICAgICAgaWYgKCFjaGVja1BhcnRDb25zdGl0dWVudCh0eXBlTmFtZS5nZXROYW1lc3BhY2VVUkkoKSwgdHlwZU5hbWUuZ2V0TG9jYWxQYXJ0KCksIFRZUEUsIHAsIHZhbEluZm8pKQotICAgICAgICAgICAgICB7IFN0cmluZ1tdIGFyZ3MgPSB7cC5nZXROYW1lKCksIHR5cGVOYW1lLmdldExvY2FsUGFydCgpIH07IAotICAgICAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygKLSAgICAgICAgICAgICAgICAgICAgX1BBUlRfSU5WQUxJRF9UWVBFLAotICAgICAgICAgICAgICAgICAgICBRVU9URSArIGFyZ3NbMF0gKyBRVU9URSwKLSAgICAgICAgICAgICAgICAgICAgUVVPVEUgKyBhcmdzWzFdICsgUVVPVEUpLAotICAgICAgICAgICAgICAgICAgcCwgX1BBUlRfSU5WQUxJRF9UWVBFLCBhcmdzKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gbmFtZSBpcyBkZWZpbmVkIGluIHRoZSBuYW1lc3BhY2UgZm9yIHRoZSBwYXJ0LiAgQSBwYXJ0IGlzIGFuCi0gICAqIEVMRU1FTlQgb3IgYSBUWVBFLgotICAgKiAKLSAgICogQHBhcmFtIG5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIHRvIGNoZWNrLgotICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSB0byBjaGVjay4KLSAgICogQHBhcmFtIHBhcnQgVGhlIHBhcnQgdG8gY2hlY2ssIGVpdGhlciBFTEVNRU5UIG9yIFRZUEUuCi0gICAqIEBwYXJhbSBwYXJ0T2JqZWN0IFRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiBwYXJ0LgotICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIHBhcnQgZWxlbWVudCBvZiB0eXBlIGlzIGRlZmluZWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIGNoZWNrUGFydENvbnN0aXR1ZW50KAotICAgIFN0cmluZyBuYW1lc3BhY2UsCi0gICAgU3RyaW5nIG5hbWUsCi0gICAgaW50IHBhcnQsCi0gICAgUGFydCBwYXJ0T2JqZWN0LAotICAgIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKQotICB7Ci0KLSAgICBib29sZWFuIHBhcnR2YWxpZCA9IGZhbHNlOwotICAgIC8vIEZpcnN0IHRha2UgY2FyZSBvZiB0aGUgc2l0dWF0aW9uIHdoZXJlIGl0J3MgZnJvbSB0aGUgc2NoZW1hIG5hbWVzcGFjZS4KLSAgICAvLyBUaGUgMTk5OSwgMjAwMCBhbmQgMjAwMSBzY2hlbWEgbmFtZXNwYWNlcyBhcmUgYWxsIGFjY2VwdGVkLgotICAgIGlmIChuYW1lc3BhY2UuZXF1YWxzKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEpCi0gICAgICB8fCBuYW1lc3BhY2UuZXF1YWxzKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzE5OTkpCi0gICAgICB8fCBuYW1lc3BhY2UuZXF1YWxzKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDApKQotICAgIHsKLSAgICAgIFNjaGVtYUF0dHJpYnV0ZVRhYmxlIHhzZFRhYmxlID0gbmV3IFNjaGVtYUF0dHJpYnV0ZVRhYmxlKCk7Ci0gICAgICBpZiAoeHNkVGFibGUuY29udGFpbnNTeW1ib2wobmFtZSkpCi0gICAgICB7Ci0gICAgICAgIHBhcnR2YWxpZCA9IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIGNoZWNrIGlubGluZSBhbmQgaW1wb3J0ZWQgc2NoZW1hCi0gICAgZWxzZQotICAgIHsKLSAgICAgIFhTTW9kZWxbXSBzY2hlbWFzID0gdmFsSW5mby5nZXRTY2hlbWFzKCk7Ci0gICAgICBpbnQgbnVtU2NoZW1hcyA9IHNjaGVtYXMubGVuZ3RoOwotICAgICAgLy9JdGVyYXRvciBzY2hlbWFzSXRlciA9IHNjaGVtYXMuaXRlcmF0b3IoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtU2NoZW1hczsgaSsrKQotICAgICAgewotICAgICAgICBYU01vZGVsIHNjaGVtYSA9IHNjaGVtYXNbaV07Ci0gICAgICAgIGlmIChzY2hlbWEgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChwYXJ0ID09IEVMRU1FTlQgJiYgc2NoZW1hLmdldEVsZW1lbnREZWNsYXJhdGlvbihuYW1lLCBuYW1lc3BhY2UpICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgcGFydHZhbGlkID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChwYXJ0ID09IFRZUEUgJiYgc2NoZW1hLmdldFR5cGVEZWZpbml0aW9uKG5hbWUsIG5hbWVzcGFjZSkgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwYXJ0dmFsaWQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIElmIHRoZSBTT0FQIGVuY29kaW5nIG5hbWVzcGFjZSBoYXNuJ3QgYmVlbiBleHBsaWNpdGx5IGltcG9ydGVkIGRvIHNvCi0JLy8gbm93LgotICAgIC8vIEFsbG93IHRoZSBTT0FQIGVuY29kaW5nIG5hbWVzcGFjZSB0byBiZSBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIGJ1dCBtYXJrCi0JLy8gaXQgYXMgYSB3YXJuaW5nLgotICAgIGlmICghcGFydHZhbGlkICYmIG5hbWVzcGFjZS5lcXVhbHMoU09BUF9FTkNPRElOR19VUkkpKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBYU0RWYWxpZGF0b3IgeHNkVmFsID0gbmV3IFhTRFZhbGlkYXRvcigpOwotICAgICAgICBTdHJpbmcgc29hcEVuYyA9IHZhbEluZm8uZ2V0VVJJUmVzb2x2ZXIoKS5yZXNvbHZlKCIiLCBTT0FQX0VOQ09ESU5HX1VSSSwgbnVsbCkuZ2V0UGh5c2ljYWxMb2NhdGlvbigpOwotICAgICAgICBpZihzb2FwRW5jICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICB4c2RWYWwudmFsaWRhdGUoc29hcEVuYywgbnVsbCwgdmFsSW5mby5nZXRTY2hlbWFDYWNoZSgpKTsKLSAgICAgICAgICAvLyBzYW5pdHkgY2hlY2sgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZwotICAgICAgICAgIGlmICh4c2RWYWwuaXNWYWxpZCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFhTTW9kZWwgeHNNb2RlbCA9IHhzZFZhbC5nZXRYU01vZGVsKCk7Ci0KLSAgICAgICAgICAgIGlmIChwYXJ0ID09IEVMRU1FTlQgJiYgeHNNb2RlbC5nZXRFbGVtZW50RGVjbGFyYXRpb24obmFtZSwgbmFtZXNwYWNlKSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBwYXJ0dmFsaWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAocGFydCA9PSBUWVBFICYmIHhzTW9kZWwuZ2V0VHlwZURlZmluaXRpb24obmFtZSwgbmFtZXNwYWNlKSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBwYXJ0dmFsaWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFsSW5mby5hZGRXYXJuaW5nKG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9XQVJOX1NPQVBFTkNfSU1QT1JURURfUEFSVCwgUVVPVEUgKyBuYW1lICsgUVVPVEUpLCBwYXJ0T2JqZWN0KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAJTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldExvZ2dlcigpLmxvZygiQW4gZXhjZXB0aW9uIG9jY3VycmVkIHdoaWxlIHBlcmZvcm1pbmcgV1NETCB2YWxpZGF0aW9uIG9mIGEgcGFydCB3aXRoIHRoZSBTT0FQIGVuY29kaW5nIG5hbWVzcGFjZS4iLCBJTG9nZ2VyLlNFVl9FUlJPUiwgZSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBwYXJ0dmFsaWQ7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9XU0RMMTFWYWxpZGF0aW9uSW5mb0ltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvV1NETDExVmFsaWRhdGlvbkluZm9JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMzRhNDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9XU0RMMTFWYWxpZGF0aW9uSW5mb0ltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTE7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuZ3JhbW1hcnMuWE1MR3JhbW1hclBvb2w7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNNb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLkNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uSW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLlZhbGlkYXRpb25JbmZvSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyLlVSSVJlc29sdmVyOwotCi0vKioKLSAqIEFuIGltcGxlbWVuYXRpb24gb2YgV1NETDExVmFsaWRhdGlvbkluZm8uCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMMTFWYWxpZGF0aW9uSW5mb0ltcGwgaW1wbGVtZW50cyBJV1NETDExVmFsaWRhdGlvbkluZm8KLXsKLSAgcHJpdmF0ZSBJVmFsaWRhdGlvbkluZm8gdmFsaW5mbyA9IG51bGw7Ci0gIHByaXZhdGUgSGFzaHRhYmxlIGVsZW1lbnRsb2NhdGlvbnMgPSBudWxsOwotICBwcml2YXRlIExpc3Qgc2NoZW1hcyA9IG5ldyBWZWN0b3IoKTsKLSAgCi0gIHB1YmxpYyBXU0RMMTFWYWxpZGF0aW9uSW5mb0ltcGwoSVZhbGlkYXRpb25JbmZvIHZhbGluZm8pCi0gIHsKLSAgICB0aGlzLnZhbGluZm8gPSB2YWxpbmZvOwotICB9Ci0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLklXU0RMMTFWYWxpZGF0aW9uSW5mbyNnZXRGaWxlVVJJKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RmlsZVVSSSgpCi0gIHsKLSAgICByZXR1cm4gdmFsaW5mby5nZXRGaWxlVVJJKCk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm8jYWRkU2NoZW1hKG9yZy5hcGFjaGUueGVyY2VzLnhzLlhTTW9kZWwpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRTY2hlbWEoWFNNb2RlbCB4c01vZGVsKQotICB7Ci0gICAgaWYgKHhzTW9kZWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBzY2hlbWFzLmFkZCh4c01vZGVsKTsKLSAgICB9Ci0KLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLklXU0RMMTFWYWxpZGF0aW9uSW5mbyNnZXRTY2hlbWFzKCkKLSAgICovCi0gIHB1YmxpYyBYU01vZGVsW10gZ2V0U2NoZW1hcygpCi0gIHsKLSAgICByZXR1cm4gKFhTTW9kZWxbXSlzY2hlbWFzLnRvQXJyYXkobmV3IFhTTW9kZWxbc2NoZW1hcy5zaXplKCldKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c2RsLnZhbGlkYXRlLndzZGwxMS5XU0RMMTFWYWxpZGF0aW9uSW5mbyNjbGVhcmRTY2hlbWFzKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNsZWFyU2NoZW1hcygpCi0gIHsKLSAgICBzY2hlbWFzLmNsZWFyKCk7Ci0gIH0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuSVdTREwxMVZhbGlkYXRpb25JbmZvI3NldEVsZW1lbnRMb2NhdGlvbnMoamF2YS51dGlsLkhhc2h0YWJsZSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVsZW1lbnRMb2NhdGlvbnMoSGFzaHRhYmxlIGVsZW1lbnRMb2NhdGlvbnMpCi0gIHsKLSAgICB0aGlzLmVsZW1lbnRsb2NhdGlvbnMgPSBlbGVtZW50TG9jYXRpb25zOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuSVdTREwxMVZhbGlkYXRpb25JbmZvI2FkZEVycm9yKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRFcnJvcihTdHJpbmcgbWVzc2FnZSwgT2JqZWN0IGVsZW1lbnQpCi0gIHsKLSAgICBhZGRFcnJvcihtZXNzYWdlLCBlbGVtZW50LCBudWxsLCBudWxsKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuSVdTREwxMVZhbGlkYXRpb25JbmZvI2FkZEVycm9yKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3RbXSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEVycm9yKFN0cmluZyBtZXNzYWdlLCBPYmplY3QgZWxlbWVudCwgU3RyaW5nIGVycm9yS2V5LCBPYmplY3RbXSBtZXNzYWdlQXJndW1lbnRzKQotICB7Ci0gICAgTG9jYXRpb25Ib2xkZXIgbG9jYXRpb247Ci0gICAgaWYgKGVsZW1lbnRsb2NhdGlvbnMuY29udGFpbnNLZXkoZWxlbWVudCkpCi0gICAgewotICAgICAgbG9jYXRpb24gPSAoTG9jYXRpb25Ib2xkZXIpZWxlbWVudGxvY2F0aW9ucy5nZXQoZWxlbWVudCk7Ci0gICAgICBhZGRFcnJvcihtZXNzYWdlLCBsb2NhdGlvbi5nZXRMaW5lKCksIGxvY2F0aW9uLmdldENvbHVtbigpLCBsb2NhdGlvbi5nZXRVUkkoKSwgZXJyb3JLZXksIG1lc3NhZ2VBcmd1bWVudHMpOwotICAgIH0KLSAgICAvLyBpZiB3ZSBnaXZlIGl0IGFuIGVsZW1lbnQgdGhhdCBoYXNuJ3QgYmVlbiBkZWZpbmVkIHdlJ2xsIHNldCB0aGUgbG9jYXRpb24KLSAgICAvLyBhdCAoMCwwKSBzbyB0aGUgZXJyb3Igc2hvd3MgdXAgYnV0IG5vIGxpbmUgbWFya2VyIGluIHRoZSBlZGl0b3IKLSAgICBlbHNlCi0gICAgewotICAgICAgYWRkRXJyb3IobWVzc2FnZSwgMCwgMSwgZ2V0RmlsZVVSSSgpKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm8jYWRkV2FybmluZyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0KQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkV2FybmluZyhTdHJpbmcgbWVzc2FnZSwgT2JqZWN0IGVsZW1lbnQpCi0gIHsKLSAgICBMb2NhdGlvbkhvbGRlciBsb2NhdGlvbjsKLSAgICBpZiAoZWxlbWVudGxvY2F0aW9ucy5jb250YWluc0tleShlbGVtZW50KSkKLSAgICB7Ci0gICAgICBsb2NhdGlvbiA9IChMb2NhdGlvbkhvbGRlcillbGVtZW50bG9jYXRpb25zLmdldChlbGVtZW50KTsKLSAgICAgIGFkZFdhcm5pbmcobWVzc2FnZSwgbG9jYXRpb24uZ2V0TGluZSgpLCBsb2NhdGlvbi5nZXRDb2x1bW4oKSwgbG9jYXRpb24uZ2V0VVJJKCkpOwotICAgIH0KLSAgICAvLyBpZiB3ZSBnaXZlIGl0IGFuIGVsZW1lbnQgdGhhdCBoYXNuJ3QgYmVlbiBkZWZpbmVkIHdlJ2xsIHNldCB0aGUgbG9jYXRpb24KLSAgICAvLyBhdCAoMCwwKSBzbyB0aGUgZXJyb3Igc2hvd3MgdXAgYnV0IG5vIGxpbmUgbWFya2VyIGluIHRoZSBlZGl0b3IKLSAgICBlbHNlCi0gICAgewotICAgICAgYWRkV2FybmluZyhtZXNzYWdlLCAwLCAxLCBnZXRGaWxlVVJJKCkpOwotICAgIH0KLQotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3NkbC52YWxpZGF0ZS53c2RsMTEuV1NETDExVmFsaWRhdGlvbkluZm8jYWRkTmFtZXNwYWNlV2l0aE5vVmFsaWRhdG9yKGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotLy8gIHB1YmxpYyB2b2lkIGFkZE5hbWVzcGFjZVdpdGhOb1ZhbGlkYXRvcihTdHJpbmcgbmFtZXNwYWNlKQotLy8gIHsKLS8vICAgIHZhbGluZm8uYWRkTmFtZXNwYWNlV2l0aE5vVmFsaWRhdG9yKG5hbWVzcGFjZSk7Ci0vLwotLy8gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm8jYWRkRXJyb3IoamF2YS5sYW5nLlN0cmluZywgaW50LCBpbnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRFcnJvcihTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4sIFN0cmluZyB1cmkpCi0gIHsKLSAgICBhZGRFcnJvcihtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHVyaSwgbnVsbCwgbnVsbCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhZGRFcnJvcihTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4sIFN0cmluZyB1cmksIFN0cmluZyBlcnJvcktleSwgT2JqZWN0W10gbWVzc2FnZUFyZ3VtZW50cykKLSAgeyAKLSAgICB0cnkKLSAgICB7ICgoVmFsaWRhdGlvbkluZm9JbXBsKXZhbGluZm8pLmFkZEVycm9yKG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgdXJpLCBlcnJvcktleSwgbWVzc2FnZUFyZ3VtZW50cyk7Ci0gICAgfQotICAgIGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICB2YWxpbmZvLmFkZEVycm9yKG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgdXJpKTsKLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLklXU0RMMTFWYWxpZGF0aW9uSW5mbyNhZGRXYXJuaW5nKGphdmEubGFuZy5TdHJpbmcsIGludCwgaW50KQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkV2FybmluZyhTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4sIFN0cmluZyB1cmkpCi0gIHsKLSAgICB2YWxpbmZvLmFkZFdhcm5pbmcobWVzc2FnZSwgbGluZSwgY29sdW1uLCB1cmkpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzZGwudmFsaWRhdGUud3NkbDExLldTREwxMVZhbGlkYXRpb25JbmZvI2dldFVSSVJlc29sdmVyKCkKLSAgICovCi0gIHB1YmxpYyBVUklSZXNvbHZlciBnZXRVUklSZXNvbHZlcigpIAotICB7Ci0JcmV0dXJuIHZhbGluZm8uZ2V0VVJJUmVzb2x2ZXIoKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLklXU0RMMTFWYWxpZGF0aW9uSW5mbyNnZXRTY2hlbWFDYWNoZSgpCi0gICAqLwotICBwdWJsaWMgWE1MR3JhbW1hclBvb2wgZ2V0U2NoZW1hQ2FjaGUoKSAKLSAgewotCVhNTEdyYW1tYXJQb29sIGdyYW1tYXJQb29sID0gKFhNTEdyYW1tYXJQb29sKXZhbGluZm8uZ2V0QXR0cmlidXRlKENvbnN0YW50cy5YTUxTQ0hFTUFfQ0FDSEVfQVRUUklCVVRFKTsKLQlyZXR1cm4gZ3JhbW1hclBvb2w7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm8jZ2V0WE1MQ2FjaGUoKQotICAgKi8KLSAgcHVibGljIFhNTEdyYW1tYXJQb29sIGdldFhNTENhY2hlKCkgCi0gIHsKLQlYTUxHcmFtbWFyUG9vbCBncmFtbWFyUG9vbCA9IChYTUxHcmFtbWFyUG9vbCl2YWxpbmZvLmdldEF0dHJpYnV0ZShDb25zdGFudHMuWE1MX0NBQ0hFX0FUVFJJQlVURSk7Ci0JcmV0dXJuIGdyYW1tYXJQb29sOwotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9XU0RMMTFWYWxpZGF0b3JDb250cm9sbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL1dTREwxMVZhbGlkYXRvckNvbnRyb2xsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg5NzE5YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL1dTREwxMVZhbGlkYXRvckNvbnRyb2xsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTE7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLldTRExFeGNlcHRpb247Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU01vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVdTRExWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvbkluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5leGNlcHRpb24uVmFsaWRhdGVXU0RMRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudXRpbC5NZXNzYWdlR2VuZXJhdG9yOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotCi1pbXBvcnQgY29tLmlibS53c2RsLkNvbnN0YW50czsKLQotLyoqCi0gKiBUaGUgdmFsaWRhdG9yIGNvbnRyb2xsZXIgaXMgdGhlIGhlYWQgb2YgdmFsaWRhdGlvbi4gCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMMTFWYWxpZGF0b3JDb250cm9sbGVyIGltcGxlbWVudHMgSVdTRExWYWxpZGF0b3IKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIFZBTElEQVRPUl9SRVNPVVJDRV9CVU5ETEVfTkFNRSA9ICJ2YWxpZGF0ZXdzZGwiOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIF9XQVJOX05PX1ZBTERJQVRPUiA9ICJfV0FSTl9OT19WQUxESUFUT1IiOwotLy8gIHByb3RlY3RlZCBmaW5hbCBpbnQgRVJST1JfTUVTU0FHRSA9IDA7Ci0vLyAgcHJvdGVjdGVkIGZpbmFsIGludCBXQVJOSU5HX01FU1NBR0UgPSAxOwotLy8gIHByb3RlY3RlZCBTdHJpbmcgZmlsZVVSSTsKLS8vICBwcm90ZWN0ZWQgTGlzdCBzY2hlbWFzID0gbmV3IFZlY3RvcigpOwotLy8gIHByb3RlY3RlZCBEZWZpbml0aW9uIHdzZGxEZWZpbml0aW9uOwotICBwcm90ZWN0ZWQgTWVzc2FnZUdlbmVyYXRvciBtZXNzYWdlZ2VuZXJhdG9yID0gbnVsbDsKLSAgLy9wcm90ZWN0ZWQgVmFsaWRhdGlvbkNvbnRyb2xsZXIgdmFsaWRhdGlvbkNvbnRyb2xsZXI7Ci0gIHByb3RlY3RlZCBWYWxpZGF0b3JSZWdpc3RyeSB2ZXIgPSBWYWxpZGF0b3JSZWdpc3RyeS5nZXRJbnN0YW5jZSgpOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICovCi0gIHB1YmxpYyBXU0RMMTFWYWxpZGF0b3JDb250cm9sbGVyKCkKLSAgewotICAgIFJlc291cmNlQnVuZGxlIHJiID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKFZBTElEQVRPUl9SRVNPVVJDRV9CVU5ETEVfTkFNRSwgTG9jYWxlLmdldERlZmF1bHQoKSk7Ci0JbWVzc2FnZWdlbmVyYXRvciA9IG5ldyBNZXNzYWdlR2VuZXJhdG9yKHJiKTsKLSAgfQotCi0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzZGwudmFsaWRhdGUuSVdTRExWYWxpZGF0b3IjdmFsaWRhdGUob3JnLnczYy5kb20uRG9jdW1lbnQsIG9yZy5lY2xpcHNlLndzZGwudmFsaWRhdGUuVmFsaWRhdGlvbkluZm8pCi0gICAqLwotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZShEb2N1bWVudCBkb21Nb2RlbCwgSVZhbGlkYXRpb25JbmZvIHZhbEluZm8pIHRocm93cyBWYWxpZGF0ZVdTRExFeGNlcHRpb24KLSAgewotICAgIC8vIHJlc2V0IHRoZSB2YXJpYWJsZXMKLS8vICAgIHJlc2V0KCk7Ci0vLyAgICBmaWxlVVJJID0gdmFsSW5mby5nZXRGaWxlVVJJKCk7Ci0gICAgLy90aGlzLnZhbGlkYXRpb25Db250cm9sbGVyID0gdmFsaWRhdGlvbmNvbnRyb2xsZXI7Ci0KLSAgICBJV1NETDExVmFsaWRhdGlvbkluZm8gd3NkbHZhbGluZm8gPSBuZXcgV1NETDExVmFsaWRhdGlvbkluZm9JbXBsKHZhbEluZm8pOwotICAgIFdTRExEb2N1bWVudFtdIHdzZGxEb2NzID0gcmVhZFdTRExEb2N1bWVudChkb21Nb2RlbCwgdmFsSW5mby5nZXRGaWxlVVJJKCksIGdldE1lc3NhZ2VHZW5lcmF0b3IoKSwgd3NkbHZhbGluZm8pOwotICAgIC8vIERvbid0IHZhbGlkYXRlIGFuIG51bGwgZGVmaW5pdGlvbnMgZWxlbWVudC4gRWl0aGVyIHRoZSBmaWxlIGlzIGVtdHB5IGFuZCB2YWxpZCBvcgotICAgIC8vIGhhZCBhbiBlcnJvciB3aGVuIHJlYWRpbmcuCi0gICAgaWYod3NkbERvY3MgIT0gbnVsbCkKLSAgICB7ICAKLSAgICAgIGludCBudW1XU0RMRG9jcyA9IHdzZGxEb2NzLmxlbmd0aDsKLSAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBudW1XU0RMRG9jczsgaSsrKQotICAgICAgewotICAgICAgICBXU0RMRG9jdW1lbnQgdGVtcERvYyA9IHdzZGxEb2NzW2ldOwotICAgICAgICBEZWZpbml0aW9uIHdzZGxEZWZpbml0aW9uID0gdGVtcERvYy5nZXREZWZpbml0aW9uKCk7Ci0gICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBzY2hlbWFzLgotICAgICAgICBMaXN0IHhzZExpc3QgPSB0ZW1wRG9jLmdldFNjaGVtYXMoKTsKLSAgICAgICAgSXRlcmF0b3IgeHNkSXRlciA9IHhzZExpc3QuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKHhzZEl0ZXIuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgd3NkbHZhbGluZm8uYWRkU2NoZW1hKChYU01vZGVsKXhzZEl0ZXIubmV4dCgpKTsKLSAgICAgICAgfQotICAgICAgICAvLyBTZXQgdGhlIGVsZW1lbnQgbG9jYXRpb25zIHRhYmxlLgotICAgICAgICB3c2RsdmFsaW5mby5zZXRFbGVtZW50TG9jYXRpb25zKHRlbXBEb2MuZ2V0RWxlbWVudExvY2F0aW9ucygpKTsKLSAgICAgICAgLy8gU2V0IGFueSByZWFkZXIgZXJyb3JzLiBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYWZ0ZXIgdGhlIGVsZW1lbnQgbG9jYXRpb25zIHRhYmxlIGlzIHNldC4KLSAgICAgICAgTGlzdCByZWFkZXJFcnJvcnMgPSB0ZW1wRG9jLmdldFJlYWRlckVycm9ycygpOwotICAgICAgICBpZiAocmVhZGVyRXJyb3JzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBJdGVyYXRvciByZWFkZXJFcnJvcnNJID0gcmVhZGVyRXJyb3JzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKHJlYWRlckVycm9yc0kuaGFzTmV4dCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFJlYWRlckVycm9yIHJlID0gKFJlYWRlckVycm9yKXJlYWRlckVycm9yc0kubmV4dCgpOwotICAgICAgICAgICAgd3NkbHZhbGluZm8uYWRkRXJyb3IocmUuZ2V0RXJyb3IoKSwgcmUuZ2V0T2JqZWN0KCkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBMaXN0IHJlYWRlcldhcm5pbmdzID0gdGVtcERvYy5nZXRSZWFkZXJXYXJuaW5ncygpOwotICAgICAgICBpZiAocmVhZGVyV2FybmluZ3MgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIEl0ZXJhdG9yIHJlYWRlcldhcm5pbmdzSSA9IHJlYWRlcldhcm5pbmdzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKHJlYWRlcldhcm5pbmdzSS5oYXNOZXh0KCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgUmVhZGVyRXJyb3IgcmUgPSAoUmVhZGVyRXJyb3IpcmVhZGVyV2FybmluZ3NJLm5leHQoKTsKLSAgICAgICAgICAgIHdzZGx2YWxpbmZvLmFkZFdhcm5pbmcocmUuZ2V0RXJyb3IoKSwgcmUuZ2V0T2JqZWN0KCkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB2YWxpZGF0ZVdTRExFbGVtZW50KENvbnN0YW50cy5OU19VUklfV1NETCwgd3NkbERlZmluaXRpb24sIG5ldyBWZWN0b3IoKSwgd3NkbHZhbGluZm8pOwotICAgICAgICB3c2RsdmFsaW5mby5jbGVhclNjaGVtYXMoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBSZWFkIGluIHRoZSBXU0RMIGRvY3VtZW50IGFuZCBzZXQgdGhlIG1vZGVsIGFuZCBpbXBvcnRlZCBzY2hlbWFzLgotICAgKiAKLSAgICogQHBhcmFtIGRvbU1vZGVsIEEgRE9NIG1vZGVsIG9mIHRoZSBkb2N1bWVudCB0byBiZSByZWFkLgotICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byByZWFkLgotICAgKiBAcGFyYW0gbWVzc2FnZWdlbmVyYXRvciBUaGUgbWVzc2FnZWdlbmVyYXRvciB0aGUgcmVhZGVyIHNob3VsZCB1c2UgZm9yIGFueSBtZXNzYWdlcyBwcm9kdWNlZC4KLSAgICogQHBhcmFtIHdzZGx2YWxpbmZvIFRoZSB2YWxpZGF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCB2YWxpZGF0aW9uLgotICAgKiBAcmV0dXJuIFRoZSBkZWZpbml0aW9ucyBlbGVtZW50IGZvciB0aGUgV1NETCBkb2N1bWVudC4KLSAgICogQHRocm93cyBWYWxpZGF0ZVdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBXU0RMRG9jdW1lbnRbXSByZWFkV1NETERvY3VtZW50KERvY3VtZW50IGRvbU1vZGVsLCBTdHJpbmcgZmlsZSwgTWVzc2FnZUdlbmVyYXRvciBtZXNzYWdlZ2VuZXJhdG9yLCBJV1NETDExVmFsaWRhdGlvbkluZm8gd3NkbHZhbGluZm8pIHRocm93cyBWYWxpZGF0ZVdTRExFeGNlcHRpb24KLSAgewotICAgIFdTRExEb2N1bWVudFtdIHdzZGxEb2NzID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0KLSAgICAgIFdTRExSZWFkZXJJbXBsIHdzZGxSZWFkZXIgPSBuZXcgV1NETFJlYWRlckltcGwod3NkbHZhbGluZm8pOwotICAgICAgd3NkbFJlYWRlci5zZXRNZXNzYWdlR2VuZXJhdG9yKG1lc3NhZ2VnZW5lcmF0b3IpOwotICAgICAgaWYoZG9tTW9kZWwgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgd3NkbERvY3MgPSB3c2RsUmVhZGVyLnJlYWRXU0RMKGZpbGUsIGRvbU1vZGVsKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsgIAotICAgICAgICB3c2RsRG9jcyA9IHdzZGxSZWFkZXIucmVhZFdTREwoZmlsZSk7Ci0gICAgICB9Ci0gICAgICAvL3dzZGx2YWxpbmZvLnNldEVsZW1lbnRMb2NhdGlvbnMod3NkbFJlYWRlci5nZXRFbGVtZW50TG9jYXRpb25zSGFzaHRhYmxlKCkpOwotLy8gICAgICBMaXN0IHJlYWRlckVycm9ycyA9IHdzZGxSZWFkZXIuZ2V0UmVhZGVyRXJyb3JzKCk7Ci0vLyAgICAgIGlmIChyZWFkZXJFcnJvcnMgIT0gbnVsbCkKLS8vICAgICAgIHsKLS8vICAgICAgICBJdGVyYXRvciByZWFkZXJFcnJvcnNJID0gcmVhZGVyRXJyb3JzLml0ZXJhdG9yKCk7Ci0vLyAgICAgICAgd2hpbGUgKHJlYWRlckVycm9yc0kuaGFzTmV4dCgpKQotLy8gICAgICAgICB7Ci0vLyAgICAgICAgICBSZWFkZXJFcnJvciByZSA9IChSZWFkZXJFcnJvcilyZWFkZXJFcnJvcnNJLm5leHQoKTsKLS8vICAgICAgICAgIHdzZGx2YWxpbmZvLmFkZEVycm9yKHJlLmdldEVycm9yKCksIHJlLmdldE9iamVjdCgpKTsKLS8vICAgICAgICB9Ci0vLyAgICAgIH0KLS8vICAgICAgaWYgKHdzZGxSZWFkZXIuaGFzSW1wb3J0U2NoZW1hcygpKQotLy8gICAgICB7Ci0vLyAgICAgICAgTGlzdCB4c2RMaXN0ID0gd3NkbFJlYWRlci5nZXRJbXBvcnRTY2hlbWFzKCk7Ci0vLyAgICAgICAgSXRlcmF0b3IgeHNkSXRlciA9IHhzZExpc3QuaXRlcmF0b3IoKTsKLS8vICAgICAgICB3aGlsZSAoeHNkSXRlci5oYXNOZXh0KCkpCi0vLyAgICAgICAgewotLy8gICAgICAgICAgd3NkbHZhbGluZm8uYWRkU2NoZW1hKChYU01vZGVsKXhzZEl0ZXIubmV4dCgpKTsKLS8vICAgICAgICB9Ci0vLwotLy8gICAgICB9Ci0KLSAgICB9Ci0gICAgY2F0Y2ggKFdTRExFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgVmFsaWRhdGVXU0RMRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpICsgIiAiICsgZS5nZXRGYXVsdENvZGUoKSk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBWYWxpZGF0ZVdTRExFeGNlcHRpb24oInVuYWJsZSB0byByZWFkIGZpbGUiICsgZS5nZXRNZXNzYWdlKCkgKyAiICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICByZXR1cm4gd3NkbERvY3M7Ci0gIH0KLQotICAvKioKLSAgICogR2l2ZW4gYSBXU0RMIGVsZW1lbnQsIGNhbGwgVmFsaWRhdGVFbGVtZW50IGZvciBpdC4KLSAgICogCi0gICAqIEBwYXJhbSBuYW1lc3BhY2UgVGhlIG5hbWVzcGFjZSBvZiB0aGUgZWxlbWVudCB0byB2YWxpZGF0ZS4KLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gdmFsaWRhdGUuCi0gICAqIEBwYXJhbSBwYXJlbnRzIFRoZSBsaXN0IG9mIHBhcmVudHMgZm9yIHRoaXMgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZhbGlkYXRlV1NETEVsZW1lbnQoU3RyaW5nIG5hbWVzcGFjZSwgT2JqZWN0IGVsZW1lbnQsIExpc3QgcGFyZW50cywgSVdTREwxMVZhbGlkYXRpb25JbmZvIHdzZGx2YWxpbmZvKQotICB7Ci0gICAgSVdTREwxMVZhbGlkYXRvciB2YWwgPSB2ZXIucXVlcnlWYWxpZGF0b3JSZWdpc3RyeShuYW1lc3BhY2UpOwotICAgIGlmICh2YWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICB2YWwudmFsaWRhdGUoZWxlbWVudCwgcGFyZW50cywgd3NkbHZhbGluZm8pOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotCSAgLy9UT0RPOiBBZGQgdGhpcyBhcyBhIHByZWZlcmVuY2UuCi0gICAgICAvL3dzZGx2YWxpbmZvLmFkZFdhcm5pbmcobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX1dBUk5fTk9fVkFMRElBVE9SLCBuYW1lc3BhY2UpLCBlbGVtZW50KTsKLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXQgdGhlIG1lc3NhZ2UgZ2VuZXJhdG9yIGZvciB0aGlzIGNvbnRyb2xsZXIuCi0gICAqIAotICAgKiBAcGFyYW0gbWVzZ2VuIFRoZSBtZXNzYWdlIGdlbmVyYXRvciB0byBzZXQgZm9yIHRoaXMgY29udHJvbGxlci4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE1lc3NhZ2VHZW5lcmF0b3IoTWVzc2FnZUdlbmVyYXRvciBtZXNnZW4pCi0gIHsKLSAgICBtZXNzYWdlZ2VuZXJhdG9yID0gbWVzZ2VuOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgbWVzc2FnZSBnZW5lcmF0b3IgcmVnaXN0ZXJlZCBmb3IgdGhpcyBjb250cm9sbGVyLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgbWVzc2FnZSBnZW5lcmF0b3IgcmVnaXN0ZXJlZCBmb3IgdGhpcyBjb250cm9sbGVyLgotICAgKi8KLSAgcHVibGljIE1lc3NhZ2VHZW5lcmF0b3IgZ2V0TWVzc2FnZUdlbmVyYXRvcigpCi0gIHsKLSAgICByZXR1cm4gbWVzc2FnZWdlbmVyYXRvcjsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIGZpbGVuYW1lIGZvciB0aGUgZmlsZSBjdXJyZW50bHkgYmVpbmcgdmFsaWRhdGVkLiBTb21lIHZhbGlkYXRvcnMgcmVxdWlyZSB0aGlzLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgZmlsZW5hbWUgZm9yIHRoZSBmaWxlIGJlaW5nIHZhbGlkYXRlZC4KLSAgICovCi0vLyAgcHVibGljIFN0cmluZyBnZXRGaWxlbmFtZSgpCi0vLyAgewotLy8gICAgcmV0dXJuIGZpbGVVUkk7Ci0vLyAgfQotCi0gIC8qKgotICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGV4dGVuc2libHkgdmFsaWRhdG9ycyB0byBhZGQgZXJyb3IgbWVzc2FnZXMuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqZWN0IFRoZSBvYmplY3QgdG8gYWRkIHRoZSBlcnJvciBmb3IuCi0gICAqIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgdG8gYWRkLgotICAgKi8KLS8vICBwdWJsaWMgdm9pZCBhZGRFcnJvck1lc3NhZ2UoT2JqZWN0IG9iamVjdCwgU3RyaW5nIGVycm9yKQotLy8gIHsKLS8vICAgIGFkZFZhbGlkYXRpb25NZXNzYWdlKEVSUk9SX01FU1NBR0UsIG9iamVjdCwgZXJyb3IpOwotLy8gICAgZXJyb3JzID0gdHJ1ZTsKLS8vICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBmb3IgZXh0ZW5zaWJseSB2YWxpZGF0b3JzIHRvIGFkZCBlcnJvciBtZXNzYWdlcyB3aGVuIHRoZXkga25vdwotICAgKiBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycy4KLSAgICogCi0gICAqIEBwYXJhbSBsaW5lIFRoZSBsaW5lIHdoZXJlIHRoZSBlcnJvciBtZXNzYWdlIGlzIGxvY2F0ZWQuCi0gICAqIEBwYXJhbSBjb2x1bW4gVGhlIGNvbHVtbiB3aGVyZSB0aGUgZXJyb3IgbWVzc2FnZSBpcyBsb2NhdGVkLgotICAgKiBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIG1lc3NhZ2UuCi0gICAqLwotLy8gIHB1YmxpYyB2b2lkIGFkZEVycm9yTWVzc2FnZShpbnQgbGluZSwgaW50IGNvbHVtbiwgU3RyaW5nIGVycm9yKQotLy8gIHsKLS8vICAgIGFkZFZhbGlkYXRpb25NZXNzYWdlKEVSUk9SX01FU1NBR0UsIGxpbmUsIGNvbHVtbiwgZXJyb3IpOwotLy8gICAgZXJyb3JzID0gdHJ1ZTsKLS8vICB9Ci0KLSAgLyoqCi0gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgZXh0ZW5zaWJseSB2YWxpZGF0b3JzIHRvIGFkZCB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKiAKLSAgICogQHBhcmFtIG9iamVjdCBUaGUgb2JqZWN0IHRvIGFkZCB0aGUgd2FybmluZyBtZXNzYWdlLgotICAgKiBAcGFyYW0gd2FybmluZyBUaGUgd2FybmluZyBtZXNzYWdlLgotICAgKi8KLS8vICBwdWJsaWMgdm9pZCBhZGRXYXJuaW5nTWVzc2FnZShPYmplY3Qgb2JqZWN0LCBTdHJpbmcgd2FybmluZykKLS8vICB7Ci0vLyAgICBhZGRWYWxpZGF0aW9uTWVzc2FnZShXQVJOSU5HX01FU1NBR0UsIG9iamVjdCwgd2FybmluZyk7Ci0vLyAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZm9yIGV4dGVuc2libHkgdmFsaWRhdG9ycyB0byBhZGQgd2FybmluZyBtZXNzYWdlcyB3aGVuIHRoZXkga25vdwotICAgKiBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycy4KLSAgICogCi0gICAqIEBwYXJhbSBsaW5lIFRoZSBsaW5lIHdoZXJlIHRoZSBlcnJvciBtZXNzYWdlIGlzIGxvY2F0ZWQuCi0gICAqIEBwYXJhbSBjb2x1bW4gVGhlIGNvbHVtbiB3aGVyZSB0aGUgZXJyb3IgbWVzc2FnZSBpcyBsb2NhdGVkLgotICAgKiBAcGFyYW0gd2FybmluZyBUaGUgd2FybmluZyBtZXNzYWdlLgotICAgKi8KLS8vICBwdWJsaWMgdm9pZCBhZGRXYXJuaW5nTWVzc2FnZShpbnQgbGluZSwgaW50IGNvbHVtbiwgU3RyaW5nIHdhcm5pbmcpCi0vLyAgewotLy8gICAgYWRkVmFsaWRhdGlvbk1lc3NhZ2UoV0FSTklOR19NRVNTQUdFLCBsaW5lLCBjb2x1bW4sIHdhcm5pbmcpOwotLy8gIH0KLQotICAvKioKLSAgICogSWYgeW91IGhhdmUgYW4gb2JqZWN0IHJlYWQgaW4gYnkgdGhlIHJlYWRlciBmb3IgdGhpcwotICAgKiB2YWxpZGF0b3Jjb250cm9sbGVyIHRoZSBvYmplY3QgY2FuIGJlIHBhc3NlZCBpbiBoZXJlIGFuZCB0aGUgbGluZSBhbmQgY29sdW1uCi0gICAqIGluZm9ybWF0aW9uIHdpbGwgYmUgYWJzdHJhY3RlZCBmcm9tIGl0LgotICAgKiAKLSAgICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgbWVzc2FnZSB0byBhZGQuCi0gICAqIEBwYXJhbSBvIFRoZSBvYmplY3QgdGhhdCBoYXMgdGhlIGVycm9yICh1c2VkIHRvIGdldCB0aGUgbG9jYXRpb24pLgotICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBhZGQuCi0gICAqLwotLy8gIHByb3RlY3RlZCB2b2lkIGFkZFZhbGlkYXRpb25NZXNzYWdlKGludCB0eXBlLCBPYmplY3QgbywgU3RyaW5nIG1lc3NhZ2UpCi0vLyAgewotLy8gICAgaW50W10gbG9jYXRpb247Ci0vLyAgICBpZiAoZWxlbWVudExvY2F0aW9ucy5jb250YWluc0tleShvKSkKLS8vICAgIHsKLS8vICAgICAgbG9jYXRpb24gPSAoaW50W10pZWxlbWVudExvY2F0aW9ucy5nZXQobyk7Ci0vLyAgICB9Ci0vLyAgICAvLyBpZiB3ZSBnaXZlIGl0IGFuIGVsZW1lbnQgdGhhdCBoYXNuJ3QgYmVlbiBkZWZpbmVkIHdlJ2xsIHNldCB0aGUgbG9jYXRpb24KLS8vICAgIC8vIGF0ICgwLDApIHNvIHRoZSBlcnJvciBzaG93cyB1cCBidXQgbm8gbGluZSBtYXJrZXIgaW4gdGhlIGVkaXRvcgotLy8gICAgZWxzZQotLy8gICAgewotLy8gICAgICBsb2NhdGlvbiA9IG5ldyBpbnRbXSB7IDAsIDAgfTsKLS8vICAgIH0KLS8vICAgIGFkZFZhbGlkYXRpb25NZXNzYWdlKHR5cGUsIGxvY2F0aW9uWzBdLCBsb2NhdGlvblsxXSwgbWVzc2FnZSk7Ci0vLyAgfQotCi0gIC8qKgotICAgICogQ3JlYXRlcyBhIHZhbGlkYXRpb24gbWVzc2FnZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuCi0gICAgKiAKLSAgCSogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdmFsaWRhdGlvbiBtZXNzYWdlIHRvIGFkZC4KLSAgCSogQHBhcmFtIGxpbmUgVGhlIGxpbmUgd2hlcmUgdGhlIGVycm9yIG1lc3NhZ2UgaXMgbG9jYXRlZC4KLSAgCSogQHBhcmFtIGNvbHVtbiBUaGUgbGluZSB3aGVyZSB0aGUgY29sdW1uIG1lc3NhZ2UgaXMgbG9jYXRlZC4KLSAgCSogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gYWRkLgotICAJKi8KLS8vICBwcm90ZWN0ZWQgdm9pZCBhZGRWYWxpZGF0aW9uTWVzc2FnZShpbnQgdHlwZSwgaW50IGxpbmUsIGludCBjb2x1bW4sIFN0cmluZyBtZXNzYWdlKQotLy8gIHsKLS8vICAgIGlmIChtZXNzYWdlICE9IG51bGwpCi0vLyAgICB7Ci0vLyAgICAgIGlmICh0eXBlID09IEVSUk9SX01FU1NBR0UpCi0vLyAgICAgIHsKLS8vICAgICAgICB2YWxpZGF0aW9uQ29udHJvbGxlci5hZGRFcnJvck1lc3NhZ2UobGluZSwgY29sdW1uLCBtZXNzYWdlKTsKLS8vICAgICAgfQotLy8gICAgICBlbHNlIGlmICh0eXBlID09IFdBUk5JTkdfTUVTU0FHRSkKLS8vICAgICAgewotLy8gICAgICAgIHZhbGlkYXRpb25Db250cm9sbGVyLmFkZFdhcm5pbmdNZXNzYWdlKGxpbmUsIGNvbHVtbiwgbWVzc2FnZSk7Ci0vLyAgICAgIH0KLS8vICAgIH0KLS8vICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3NkbC52YWxpZGF0ZS5jb250cm9sbGVyLklXU0RMVmFsaWRhdG9yI2lzVmFsaWQoKQotICAgKi8KLS8vICBwdWJsaWMgYm9vbGVhbiBpc1ZhbGlkKCkKLS8vICB7Ci0vLyAgICByZXR1cm4gIWVycm9yczsKLS8vICB9Ci0KLSAgLyoqCi0gICAqIFJlc2V0IHRoZSB2YWxpZGF0b3IgY29udHJvbGxlci4KLSAgICovCi0vLyAgcHJvdGVjdGVkIHZvaWQgcmVzZXQoKQotLy8gIHsKLS8vICAgIHNjaGVtYXMgPSBuZXcgVmVjdG9yKCk7Ci0vLyAgICBmaWxlVVJJID0gIiI7Ci0vLyAgICB3c2RsRGVmaW5pdGlvbiA9IG51bGw7Ci0vLyAgICBlbGVtZW50TG9jYXRpb25zID0gbnVsbDsKLS8vICAgIHJlc291cmNlYnVuZGxlID0gbnVsbDsKLS8vICAgIC8vdmFsaWRhdGlvbkNvbnRyb2xsZXIgPSBudWxsOwotLy8gICAgZXJyb3JzID0gZmFsc2U7Ci0vLyAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9XU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9XU0RMMTFWYWxpZGF0b3JEZWxlZ2F0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjEzNWU0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvV1NETDExVmFsaWRhdG9yRGVsZWdhdGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMTsKLQotLyoqCi0gKiBUaGUgV1NETCAxLjEgdmFsaWRhdG9yIGRlbGVnYXRlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIGEgdmFsaWRhdG9yIHRvIGJlIGluc3RhbnRpYXRlZCBhdAotICogYSBsYXRlciBwb2ludC4KLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIFdTREwxMVZhbGlkYXRvckRlbGVnYXRlCi17Ci0gIHByaXZhdGUgSVdTREwxMVZhbGlkYXRvciB2YWxpZGF0b3IgPSBudWxsOwotCi0KLSAgLyoqCi0gICAqIEdldCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBpbiB0aGlzIGRlbGVnYXRlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgV1NETCAxLjEgdmFsaWRhdG9yIHNwZWNpZmllZCBieSB0aGlzIGRlbGVnYXRlLgotICAgKi8KLSAgcHVibGljIElXU0RMMTFWYWxpZGF0b3IgZ2V0VmFsaWRhdG9yKCkKLSAgewotICAgIGlmICh2YWxpZGF0b3IgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB2YWxpZGF0b3IgPSBsb2FkVmFsaWRhdG9yKCk7Ci0gICAgfQotICAgIHJldHVybiB2YWxpZGF0b3I7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBhYnN0cmFjdCBJV1NETDExVmFsaWRhdG9yIGxvYWRWYWxpZGF0b3IoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvV1NETERvY3VtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL1dTRExEb2N1bWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTk0NWQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvV1NETERvY3VtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMTsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uVHlwZTsKLWltcG9ydCBqYXZheC53c2RsLk91dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uRGVzZXJpYWxpemVyOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpb25SZWdpc3RyeTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hOwotaW1wb3J0IGphdmF4LndzZGwuZmFjdG9yeS5XU0RMRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMuZG9tLkVsZW1lbnRJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLmRvbS5FbGVtZW50TlNJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhzLlhTTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51dGlsLk1lc3NhZ2VHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkLklubGluZVNjaGVtYVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5FbGVtZW50TG9jYXRpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi1pbXBvcnQgY29tLmlibS53c2RsLkNvbnN0YW50czsKLWltcG9ydCBjb20uaWJtLndzZGwudXRpbC5TdHJpbmdVdGlsczsKLWltcG9ydCBjb20uaWJtLndzZGwudXRpbC54bWwuRE9NVXRpbHM7Ci1pbXBvcnQgY29tLmlibS53c2RsLnV0aWwueG1sLlFOYW1lVXRpbHM7Ci1pbXBvcnQgY29tLmlibS53c2RsLnV0aWwueG1sLlhQYXRoVXRpbHM7Ci0KLS8qKgotICogQSBXU0RMIGRvY3VtZW50IHRoYXQga25vd3MgaG93IHRvIHBhcnNlIGl0c2VsZi4KLSAqLwotcHVibGljIGNsYXNzIFdTRExEb2N1bWVudAotewotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMaXN0IFNUWUxFX09ORV9XQVkgPSBBcnJheXMuYXNMaXN0KG5ldyBTdHJpbmdbXSB7IENvbnN0YW50cy5FTEVNX0lOUFVUIH0pOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMaXN0IFNUWUxFX1JFUVVFU1RfUkVTUE9OU0UgPQotICAgIEFycmF5cy5hc0xpc3QobmV3IFN0cmluZ1tdIHsgQ29uc3RhbnRzLkVMRU1fSU5QVVQsIENvbnN0YW50cy5FTEVNX09VVFBVVCB9KTsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTGlzdCBTVFlMRV9TT0xJQ0lUX1JFU1BPTlNFID0KLSAgICBBcnJheXMuYXNMaXN0KG5ldyBTdHJpbmdbXSB7IENvbnN0YW50cy5FTEVNX09VVFBVVCwgQ29uc3RhbnRzLkVMRU1fSU5QVVQgfSk7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIExpc3QgU1RZTEVfTk9USUZJQ0FUSU9OID0gQXJyYXlzLmFzTGlzdChuZXcgU3RyaW5nW10geyBDb25zdGFudHMuRUxFTV9PVVRQVVQgfSk7Ci0gIAotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0VSUk9SX01VTFRJUExFX1RZUEVTX0RFRklORUQgPSAiX0VSUk9SX01VTFRJUExFX1RZUEVTX0RFRklORUQiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1VOQUJMRV9UT19JTVBPUlRfTk9fTE9DQVRJT04gPSAiX1VOQUJMRV9UT19JTVBPUlRfTk9fTE9DQVRJT04iOwotCi0gIHByb3RlY3RlZCBFeHRlbnNpb25SZWdpc3RyeSBleHRSZWcgPSBudWxsOwotICBwcm90ZWN0ZWQgU3RyaW5nIGZhY3RvcnlJbXBsTmFtZSA9IG51bGw7Ci0KLSAgLy8gc3RvcmUgdGhlIGVsZW1lbnQgbG9jYXRpb25zIHdpdGhpbiB0aGUgZmlsZSAtIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzCi0gIC8vIHRoZSBsb2NhdGlvbiBpbmZvIGlzIHN0b3JlZCBhcyBhbiBpbnQgYXJyYXkgb2YgbGVuZ3RoIDIge2xpbmVudW1iZXIsIGNvbG51bWJlcn0KLSAgcHJvdGVjdGVkIEhhc2h0YWJsZSBlbGVtZW50TG9jYXRpb25zID0gbmV3IEhhc2h0YWJsZSgpOwotICAKLSAgLy8gaG9sZCB0aGUgcmVhZGVyIGVycm9ycwotICBwcm90ZWN0ZWQgTGlzdCByZWFkZXJFcnJvcnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIHByb3RlY3RlZCBMaXN0IHJlYWRlcldhcm5pbmdzID0gbmV3IEFycmF5TGlzdCgpOwotICBwcm90ZWN0ZWQgTWVzc2FnZUdlbmVyYXRvciBtZXNzYWdlZ2VuZXJhdG9yOwotICAKLSAgcHJpdmF0ZSBEZWZpbml0aW9uIGRlZiA9IG51bGw7Ci0gIHByaXZhdGUgU2V0IGltcG9ydGVkRGVmcyA9IG5ldyBUcmVlU2V0KCk7Ci0gIHByaXZhdGUgRWxlbWVudCB0eXBlc0VsID0gbnVsbDsKLSAgcHJpdmF0ZSBMaXN0IG1lc3NhZ2VzID0gbmV3IEFycmF5TGlzdCgpOwotICBwcml2YXRlIExpc3QgcG9ydHR5cGVzID0gbmV3IEFycmF5TGlzdCgpOwotICBwcml2YXRlIExpc3QgYmluZGluZ3MgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIHByaXZhdGUgTGlzdCBzZXJ2aWNlcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgcHJpdmF0ZSBMaXN0IGV4dGVsZW1lbnRzID0gbmV3IEFycmF5TGlzdCgpOwotICBwcml2YXRlIGludCBkZXB0aDsKLSAgLy8gSG9sZCB0aGUgc2NoZW1hcyB0aGF0IGFyZSBpbXBvcnRlZCBvciBkZWNsYXJlZCBpbmxpbmUgaW4gdGhpcyB3c2RsIGRvY3VtZW50LgotICBwcml2YXRlIExpc3Qgc2NoZW1hcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgcHJpdmF0ZSBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsaW5mbzsKLSAgCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4gUGVyZm9ybXMgYSBwcmVwYXJzZSBvZiB0aGUgZG9jdW1lbnQgYW5kIGhhbmRsZXMgaW1wb3J0cyBhbmQgdHlwZXMuCi0gICAqIAotICAgKiBAcGFyYW0gZG9jdW1lbnRCYXNlVVJJIFRoZSBVUkkgb2YgdGhpcyBXU0RMIGRvY3VtZW50LgotICAgKiBAcGFyYW0gZGVmRWwgVGhlIGRlZmluaXRpb25zIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBkZXB0aCBUaGUgZGVwdGggb2YgdGhpcyBkb2N1bWVudCBpbiBhIGRvY3VtZW50IHRyZWUuCi0gICAqIEBwYXJhbSBtZXNzYWdlZ2VuZXJhdG9yIEEgbWVzc2FnZWdlbmVyYXRvciB1c2VkIGZvciByZXRyaWV2aW5nIHN0cmluZ3MuCi0gICAqIEBwYXJhbSB2YWxpbmZvIEEgV1NETDExVmFsaWRhdGlvbkluZm8gb2JqZWN0IGZvciByZXBvcnRpbmcgbWVzc2FnZXMuCi0gICAqIEB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICAgKi8KLSAgcHVibGljIFdTRExEb2N1bWVudChTdHJpbmcgZG9jdW1lbnRCYXNlVVJJLCBFbGVtZW50IGRlZkVsLCBpbnQgZGVwdGgsIE1lc3NhZ2VHZW5lcmF0b3IgbWVzc2FnZWdlbmVyYXRvciwgSVdTREwxMVZhbGlkYXRpb25JbmZvIHZhbGluZm8pIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICB0aGlzLm1lc3NhZ2VnZW5lcmF0b3IgPSBtZXNzYWdlZ2VuZXJhdG9yOwotICAgIHRoaXMudmFsaW5mbyA9IHZhbGluZm87Ci0gICAgdGhpcy5kZXB0aCA9IGRlcHRoOwotICAgIAotICAgIGNoZWNrRWxlbWVudE5hbWUoZGVmRWwsIENvbnN0YW50cy5RX0VMRU1fREVGSU5JVElPTlMpOwotICAgIAotICAgIFdTRExGYWN0b3J5IGZhY3RvcnkgPQotICAgICAgKGZhY3RvcnlJbXBsTmFtZSAhPSBudWxsKSA/IFdTRExGYWN0b3J5Lm5ld0luc3RhbmNlKGZhY3RvcnlJbXBsTmFtZSkgOiBXU0RMRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotICAgIGRlZiA9IGZhY3RvcnkubmV3RGVmaW5pdGlvbigpOwotICAgIC8vIEZpeCBmb3IgV1NETDRKIGFkZGluZyBkZWZhdWx0IFdTREwgbmFtZXNwYWNlIHdoZW4gbm8gZGVmYXVsdAotICAgIC8vIG5hbWVzcGFjZSBoYXMgYmVlbiBkZWNsYXJlZC4KLSAgICAvLyBUT0RPOiBSZW1vdmUgdGhpcyBmaXggb25jZSBmaXhlZCBpbiBXU0RMNEouCi0gICAgaWYoZGVmLmdldE5hbWVzcGFjZSgiIikgIT0gbnVsbCkKLSAgICAJZGVmLmdldE5hbWVzcGFjZXMoKS5yZW1vdmUoIiIpOwotCi0gICAgaWYgKGV4dFJlZyAhPSBudWxsKQotICAgIHsKLSAgICAgIGRlZi5zZXRFeHRlbnNpb25SZWdpc3RyeShleHRSZWcpOwotICAgIH0KLQotICAgIFN0cmluZyBuYW1lID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKGRlZkVsLCBDb25zdGFudHMuQVRUUl9OQU1FKTsKLSAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKGRlZkVsLCBDb25zdGFudHMuQVRUUl9UQVJHRVRfTkFNRVNQQUNFKTsKLSAgICBOYW1lZE5vZGVNYXAgYXR0cnMgPSBkZWZFbC5nZXRBdHRyaWJ1dGVzKCk7Ci0KLSAgICBpZiAoZG9jdW1lbnRCYXNlVVJJICE9IG51bGwpCi0gICAgewotICAgICAgZGVmLnNldERvY3VtZW50QmFzZVVSSShkb2N1bWVudEJhc2VVUkkpOwotICAgIH0KLQotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgewotICAgICAgZGVmLnNldFFOYW1lKG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsIG5hbWUpKTsKLSAgICB9Ci0KLSAgICBpZiAodGFyZ2V0TmFtZXNwYWNlICE9IG51bGwpCi0gICAgewotICAgICAgZGVmLnNldFRhcmdldE5hbWVzcGFjZSh0YXJnZXROYW1lc3BhY2UpOwotICAgIH0KLQotICAgIGludCBzaXplID0gYXR0cnMuZ2V0TGVuZ3RoKCk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICB7Ci0gICAgICBBdHRyIGF0dHIgPSAoQXR0cilhdHRycy5pdGVtKGkpOwotICAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IGF0dHIuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICBTdHJpbmcgbG9jYWxQYXJ0ID0gYXR0ci5nZXRMb2NhbE5hbWUoKTsKLSAgICAgIFN0cmluZyB2YWx1ZSA9IGF0dHIuZ2V0VmFsdWUoKTsKLQotICAgICAgaWYgKG5hbWVzcGFjZVVSSSAhPSBudWxsICYmIG5hbWVzcGFjZVVSSS5lcXVhbHMoQ29uc3RhbnRzLk5TX1VSSV9YTUxOUykpCi0gICAgICB7Ci0gICAgICAgIGlmIChsb2NhbFBhcnQgIT0gbnVsbCAmJiAhbG9jYWxQYXJ0LmVxdWFscyhDb25zdGFudHMuQVRUUl9YTUxOUykpCi0gICAgICAgIHsKLSAgICAgICAgICBkZWYuYWRkTmFtZXNwYWNlKGxvY2FsUGFydCwgdmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGRlZi5hZGROYW1lc3BhY2UobnVsbCwgdmFsdWUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhlcmUgYXJlIHByb2JsZW1zIHdoZW4gdGhlIG1vZGVsIGlzIGNyZWF0ZWQgYW5kIHRoZSBvcmRlciBvZiBlbGVtZW50cyBpcyBub3QKLSAgICAvLyBJbXBvcnQgLSBUeXBlcyAtIE1lc3NhZ2UgLSBQb3J0VHlwZSAtIEJpbmRpbmcgLSBTZXJ2aWNlIHNvIHdlIG5lZWQgdG8gcmVhZCB0aGVtCi0gICAgLy8gaW50byB0aGUgbW9kZWwgaW4gdGhhdCBvcmRlcgotICAgIC8vIFBlcmZvcm1hbmNlIHdpc2UgdGhpcyBzaG91bGQgYmUgbW9kaWZpZWQgYXMgd2UgaGF2ZSB0byBtYWtlIDUgZXh0cmEgbG9vcHMgdGhyb3VnaAotICAgIC8vIGFsbCBvZiB0aGUgZWxlbWVudHMgYXMgYSByZXN1bHQKLQotICAgIC8vIHRha2UgY2FyZSBvZiBJbXBvcnRzLCBUeXBlcywgRG9jdW1lbnRhdGlvbiBhbmQgZXh0ZW5zaWJsZWVsZW1lbnRzIHRvZ2V0aGVyIC0gc2F2ZXMgYSBwYXNzIGZvciBEb2N1bWVudGF0aW9uIAotICAgIC8vIGxhdGVyIGFuZCBEb2NzIGRvbid0IGVmZmVjdCBhbnl0aGluZyBlbHNlIC0gSW1wb3J0cyBhbmQgVHlwZXMgYXJlIGVzc2VudGlhbGx5IHRoZSBzYW1lIHRoaW5nCi0gICAgLy8gbm8gcHJlY29uY2VpdmVkIGlkZWFzIGFib3V0IGV4dGVuc2libGUgZWxlbWVudHMKLSAgICBFbGVtZW50IHRlbXBFbCA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KGRlZkVsKTsKLQotICAgIHdoaWxlICh0ZW1wRWwgIT0gbnVsbCkKLSAgICB7Ci0KLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9JTVBPUlQsIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBET01VdGlscy5nZXRBdHRyaWJ1dGUodGVtcEVsLCBDb25zdGFudHMuQVRUUl9OQU1FU1BBQ0UpOwotICAgICAgICBTdHJpbmcgbG9jYXRpb25VUkkgPSBET01VdGlscy5nZXRBdHRyaWJ1dGUodGVtcEVsLCBDb25zdGFudHMuQVRUUl9MT0NBVElPTik7Ci0gICAgICAgIGlmKGxvY2F0aW9uVVJJID09IG51bGwgfHwgbG9jYXRpb25VUkkuZXF1YWxzKCIiKSkKLSAgICAgICAgewotICAgICAgICAgIGFkZFJlYWRlckVycm9yKGRlZiwgdGVtcEVsLCBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfVU5BQkxFX1RPX0lNUE9SVF9OT19MT0NBVElPTikpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIEltcG9ydEhvbGRlciBpaCA9IG5ldyBJbXBvcnRIb2xkZXIobmFtZXNwYWNlVVJJLCBsb2NhdGlvblVSSSwgZGVmLmdldERvY3VtZW50QmFzZVVSSSgpLCB0aGlzLCBkZXB0aCsxLCB0ZW1wRWwsIG1lc3NhZ2VnZW5lcmF0b3IsIHZhbGluZm8pOwotICAgICAgICAgIC8vIE9ubHkgYWRkIHRoZSBpbXBvcnQgdG8gdGhlIGxpc3QgaWYgaXQgaXMgbm90IGFuIGltcG9ydCBmb3IgdGhpcyBkb2N1bWVudC4KLSAgICAgICAgICBpZighZG9jdW1lbnRCYXNlVVJJLmVxdWFscyhpaC5nZXRMb2NhdGlvbigpKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbXBvcnRlZERlZnMuYWRkKGloKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgc2V0TG9jYXRpb24odGVtcEVsLCB0ZW1wRWwpOwotLy8gICAgICAgIGlmIChpbXBvcnRlZERlZnMgPT0gbnVsbCkKLS8vICAgICAgICB7Ci0vLyAgICAgICAgICBpbXBvcnRlZERlZnMgPSBuZXcgSGFzaHRhYmxlKCk7Ci0vLyAgICAgICAgfQotLy8gICAgICAgIGlmIChkb2N1bWVudEJhc2VVUkkgIT0gbnVsbCkKLS8vICAgICAgICB7Ci0vLyAgICAgICAgICBpbXBvcnRlZERlZnMucHV0KGRvY3VtZW50QmFzZVVSSSwgZGVmKTsKLS8vICAgICAgICB9Ci0vLyAgICAgICAgZGVmLmFkZEltcG9ydChwYXJzZUltcG9ydCh0ZW1wRWwsIGRlZiwgaW1wb3J0ZWREZWZzKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBkZWYuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQodGVtcEVsKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX1RZUEVTLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBpZih0eXBlc0VsICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBzZXRMb2NhdGlvbih0ZW1wRWwsIHRlbXBFbCk7Ci0gICAgICAgICAgYWRkUmVhZGVyRXJyb3IoZGVmLCB0ZW1wRWwsIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9NVUxUSVBMRV9UWVBFU19ERUZJTkVEKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZXNFbCA9IHRlbXBFbDsKLSAgICAgICAgICBwYXJzZVR5cGVzKCk7Ci0gICAgICAgIH0KLS8vICAgICAgICBkZWYuc2V0VHlwZXMocGFyc2VUeXBlcyh0ZW1wRWwsIGRlZikpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKENvbnN0YW50cy5RX0VMRU1fTUVTU0FHRSwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZXMuYWRkKHRlbXBFbCk7Ci0gICAgICAgIC8vZGVmLmFkZE1lc3NhZ2UocGFyc2VNZXNzYWdlKHRlbXBFbCwgZGVmKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9QT1JUX1RZUEUsIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIHBvcnR0eXBlcy5hZGQodGVtcEVsKTsKLSAgICAgICAgLy8gICAgICAgICAgICAgUG9ydFR5cGUgcHQgPSBwYXJzZVBvcnRUeXBlKHRlbXBFbCwgZGVmKTsKLSAgICAgICAgLy8gICAgICAgICAgICAgaWYocHQgIT0gbnVsbCkKLSAgICAgICAgLy8gICAgICAgICAgICAgewotICAgICAgICAvLyAgICAgICAgICBkZWYuYWRkUG9ydFR5cGUocHQpOwotICAgICAgICAvLyAgICAgICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9CSU5ESU5HLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBiaW5kaW5ncy5hZGQodGVtcEVsKTsKLSAgICAgICAgLy9kZWYuYWRkQmluZGluZyhwYXJzZUJpbmRpbmcodGVtcEVsLCBkZWYpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX1NFUlZJQ0UsIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIHNlcnZpY2VzLmFkZCh0ZW1wRWwpOwotICAgICAgICAvL2RlZi5hZGRTZXJ2aWNlKHBhcnNlU2VydmljZSh0ZW1wRWwsIGRlZikpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBleHRlbGVtZW50cy5hZGQodGVtcEVsKTsKLSAgICAgICAgLy8gICAgICAgIGRlZi5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudCgKLSAgICAgICAgLy8gICAgICAgICAgcGFyc2VFeHRlbnNpYmlsaXR5RWxlbWVudChEZWZpbml0aW9uLmNsYXNzLCB0ZW1wRWwsIGRlZikpOwotICAgICAgfQotICAgICAgdGVtcEVsID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KHRlbXBFbCk7Ci0gICAgfQotCi0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIGRlZmluaXRpb25zIGVsZW1lbnQgZm9yIHRoaXMgZG9jdW1lbnQuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBkZWZpbml0aW9ucyBlbGVtZW50IGZvciB0aGlzIGRvY3VtZW50LgotICAgKi8KLSAgcHVibGljIERlZmluaXRpb24gZ2V0RGVmaW5pdGlvbigpCi0gIHsKLSAgICByZXR1cm4gZGVmOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IGEgc2V0IG9mIHRoZSBpbXBvcnRzIGluIHRoaXMgZG9jdW1lbnQuCi0gICAqIAotICAgKiBAcmV0dXJuIEEgc2V0IG9mIHRoZSBpbXBvcnRzIGluIHRoaXMgZG9jdW1lbnQuCi0gICAqLwotICBwdWJsaWMgU2V0IGdldEltcG9ydHMoKQotICB7Ci0gICAgcmV0dXJuIGltcG9ydGVkRGVmczsKLSAgfQotICAKLSAgLyoqCi0gICAqIAotICAgKiBAcGFyYW0gZGVmCi0gICAqIEBwYXJhbSBkb2MKLSAgICogQHBhcmFtIG5hbWVzcGFjZQotICAgKiBAcGFyYW0gbG9jYXRpb24KLSAgICovCi0vLyAgcHVibGljIHZvaWQgc2V0SW1wb3J0KERlZmluaXRpb24gZGVmLCBFbGVtZW50IGRvYywgU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIGxvY2F0aW9uKQotLy8gIHsKLS8vICAgIGlmKGxvY2F0aW9uID09IG51bGwgfHwgbG9jYXRpb24uZXF1YWxzKCIiKSkKLS8vICAgIHsKLS8vICAgICAgdmFsaW5mby5hZGRFcnJvcigpX1VOQUJMRV9UT19JTVBPUlRfTk9fTE9DQVRJT04gCi0vLyAgICB9Ci0vLyAgICBJbXBvcnQgaW1wID0gZGVmLmNyZWF0ZUltcG9ydCgpOwotLy8gICAgaW1wLnNldERlZmluaXRpb24oZGVmKTsKLS8vICAgIGltcC5zZXREb2N1bWVudGF0aW9uRWxlbWVudChkb2MpOwotLy8gICAgaW1wLnNldE5hbWVzcGFjZVVSSShuYW1lc3BhY2UpOwotLy8gICAgaW1wLnNldExvY2F0aW9uVVJJKGxvY2F0aW9uKTsKLS8vICAgIGRlZi5hZGRJbXBvcnQoaW1wKTsKLS8vICB9Ci0gIAotICAvKioKLSAgICogUGFyc2UgdGhlIHR5cGVzIGluIHRoZSBXU0RMIGRvY3VtZW50LiBIYW5kbGVzIGRvY3VtZW50YXRpb24sIGltcG9ydCBhbmQgc2NoZW1hCi0gICAqIGVsZW1lbnRzLgotICAgKi8KLSAgcHVibGljIHZvaWQgcGFyc2VUeXBlcygpCi0gIHsKLSAgICBUeXBlcyB0eXBlcyA9IGRlZi5jcmVhdGVUeXBlcygpOwotCi0gICAgRWxlbWVudCB0ZW1wRWwgPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudCh0eXBlc0VsKTsKLQotICAgIHdoaWxlICh0ZW1wRWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKENvbnN0YW50cy5RX0VMRU1fRE9DVU1FTlRBVElPTiwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgdHlwZXMuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQodGVtcEVsKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHRlbXBFbC5nZXRMb2NhbE5hbWUoKS5lcXVhbHNJZ25vcmVDYXNlKCJpbXBvcnQiKSkKLSAgICAgICAgLy9lbHNlIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9JTVBPUlQsIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIC8vIHRoaXMgc2hvdWxkbid0IHJlYWxseSBiZSB1c2VkIGhlcmUgYnV0IGEgbGl0dGxlIGhhY2sgd2lsbCBtYWtlCi0gICAgICAgIC8vIGxpZmUgZWFzaWVyCi0gICAgICAgIC8vcGFyc2VJbXBvcnQodGVtcEVsLCBkZWYsIChNYXApbmV3IEhhc2h0YWJsZSgpKTsKLSAgICAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZSh0ZW1wRWwsIENvbnN0YW50cy5BVFRSX05BTUVTUEFDRSk7Ci0gICAgICAgIFN0cmluZyBsb2NhdGlvblVSSSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZSh0ZW1wRWwsICJzY2hlbWFMb2NhdGlvbiIpOwotICAgICAgICBpbXBvcnRlZERlZnMuYWRkKG5ldyBJbXBvcnRIb2xkZXIobmFtZXNwYWNlVVJJLCBsb2NhdGlvblVSSSwgZGVmLmdldERvY3VtZW50QmFzZVVSSSgpLCB0aGlzLCBkZXB0aCsxLCB0ZW1wRWwsIG1lc3NhZ2VnZW5lcmF0b3IsIHZhbGluZm8pKTsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICB0eXBlcy5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChwYXJzZUV4dGVuc2liaWxpdHlFbGVtZW50KFR5cGVzLmNsYXNzLCB0ZW1wRWwsIGRlZikpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKFdTRExFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWxlbSA9IHBhcnNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoVHlwZXMuY2xhc3MsIHRlbXBFbCwgZGVmKTsKLSAgICAgICAgICB0eXBlcy5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChleHRFbGVtKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaChXU0RMRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICB0ZW1wRWwgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodGVtcEVsKTsKLSAgICB9Ci0gICAgZGVmLnNldFR5cGVzKHR5cGVzKTsKLSAgICAKLSAgICB2YWxpbmZvLnNldEVsZW1lbnRMb2NhdGlvbnMoZWxlbWVudExvY2F0aW9ucyk7Ci0gICAgTGlzdCB0eXBlc0VsZW1zID0gdHlwZXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgaWYodHlwZXNFbGVtcyAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIHR5cGVzRWxlbXNJdGVyID0gdHlwZXNFbGVtcy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUodHlwZXNFbGVtc0l0ZXIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCB0eXBlRWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCl0eXBlc0VsZW1zSXRlci5uZXh0KCk7Ci0gICAgICAgIAotICAgICAgICBJbmxpbmVTY2hlbWFWYWxpZGF0b3IgeHNkVmFsID0gbmV3IElubGluZVNjaGVtYVZhbGlkYXRvcigpOwotICAgICAgICB4c2RWYWwuc2V0TWVzc2FnZUdlbmVyYXRvcihtZXNzYWdlZ2VuZXJhdG9yKTsKLSAgICAKLSAgICAgICAgTGlzdCBwYXJlbnRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgICBwYXJlbnRzLmFkZChkZWYpOwotICAgICAgICBwYXJlbnRzLmFkZCgwLHR5cGVzKTsKLSAgICAgICAgeHNkVmFsLnZhbGlkYXRlKHR5cGVFbGVtZW50LCBwYXJlbnRzLHZhbGluZm8pOwotICAgICAgICBYU01vZGVsW10gdHlwZXNTY2hlbWFzID0gdmFsaW5mby5nZXRTY2hlbWFzKCk7Ci0gICAgICAgIExpc3QgdHlwZXNTY2hlbWFMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgdHlwZXNTY2hlbWFzLmxlbmd0aDsgaSsrKQotICAgICAgICB7ICAKLSAgICAgICAgICB0eXBlc1NjaGVtYUxpc3QuYWRkKHR5cGVzU2NoZW1hc1tpXSk7Ci0gICAgICAgIH0KLSAgICAgICAgc2NoZW1hcy5hZGRBbGwodHlwZXNTY2hlbWFMaXN0KTsKLSAgICAgICAgdmFsaW5mby5jbGVhclNjaGVtYXMoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgdmFsaW5mby5zZXRFbGVtZW50TG9jYXRpb25zKG51bGwpOwotICB9Ci0gIAotICAvKioKLSAgICogUGFyc2UgdGhlIG1lc3NhZ2VzIGluIHRoaXMgZG9jdW1lbnQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBwYXJzZU1lc3NhZ2VzKCkKLSAgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWVzc2FnZXMuc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGRlZi5hZGRNZXNzYWdlKHBhcnNlTWVzc2FnZSgoRWxlbWVudCltZXNzYWdlcy5nZXQoaSksIGRlZikpOwotICAgICAgfQotICAgICAgY2F0Y2goV1NETEV4Y2VwdGlvbiBlKQotICAgICAge30KLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBQYXJzZSB0aGUgcG9ydFR5cGVzIGluIHRoaXMgZG9jdW1lbnQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBwYXJzZVBvcnR0eXBlcygpCi0gIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHBvcnR0eXBlcy5zaXplKCk7IGkrKykKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgUG9ydFR5cGUgcHQgPSBwYXJzZVBvcnRUeXBlKChFbGVtZW50KXBvcnR0eXBlcy5nZXQoaSksIGRlZik7Ci0gICAgICAgIGlmIChwdCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgZGVmLmFkZFBvcnRUeXBlKHB0KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2goV1NETEV4Y2VwdGlvbiBlKQotICAgICAge30KLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBQYXJzZSB0aGUgYmluZGluZ3MgaW4gdGhpcyBkb2N1bWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHBhcnNlQmluZGluZ3MoKQotICB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBiaW5kaW5ncy5zaXplKCk7IGkrKykKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgZGVmLmFkZEJpbmRpbmcocGFyc2VCaW5kaW5nKChFbGVtZW50KWJpbmRpbmdzLmdldChpKSwgZGVmKSk7Ci0gICAgICB9Ci0gICAgICBjYXRjaChXU0RMRXhjZXB0aW9uIGUpCi0gICAgICB7fQotICAgIH0KLSAgfQotICAKLSAgLyoqCi0gICAqIFBhcnNlIHRoZSBzZXJ2aWNlcyBpbiB0aGlzIGRvY3VtZW50LgotICAgKi8KLSAgcHVibGljIHZvaWQgcGFyc2VTZXJ2aWNlcygpCi0gIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcnZpY2VzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBkZWYuYWRkU2VydmljZShwYXJzZVNlcnZpY2UoKEVsZW1lbnQpc2VydmljZXMuZ2V0KGkpLCBkZWYpKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoKFdTRExFeGNlcHRpb24gZSkKLSAgICAgIHt9Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogUGFyc2UgdGhlIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgaW4gdGhpcyBkb2N1bWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHBhcnNlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0ZWxlbWVudHMuc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGRlZi5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChwYXJzZUV4dGVuc2liaWxpdHlFbGVtZW50KERlZmluaXRpb24uY2xhc3MsIChFbGVtZW50KWV4dGVsZW1lbnRzLmdldChpKSwgZGVmKSk7Ci0gICAgICB9Ci0gICAgICBjYXRjaChXU0RMRXhjZXB0aW9uIGUpCi0gICAgICB7fQotICAgIH0KLSAgfQotICAKLSAgLyoqCi0gICAqIEFkZCB0aGUgZ2l2ZW4gbGlzdCBvZiBzY2hlbWFzIHRvIHRoZSBzY2hlbWFzIGZvciB0aGlzIGRvY3VtZW50LgotICAgKiAKLSAgICogQHBhcmFtIHNjaGVtYXMgVGhlIGxpc3Qgb2Ygc2NoZW1hcyB0byBhZGQgdG8gdGhpcyBkb2N1bWVudCdzIHNjaGVtYXMuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRTY2hlbWFzKExpc3Qgc2NoZW1hcykKLSAgewotICAgIHRoaXMuc2NoZW1hcy5hZGRBbGwoc2NoZW1hcyk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZG9jdW1lbnQuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRvY3VtZW50LgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0U2NoZW1hcygpCi0gIHsKLSAgICByZXR1cm4gc2NoZW1hczsKLSAgfQotICAKLSAgLyoqCi0gICAqIFBhcnNlIHRoZSBzcGVjaWZpZWQgYmluZGluZy4KLSAgICogCi0gICAqIEBwYXJhbSBiaW5kaW5nRWwgVGhlIGJpbmRpbmcgZWxlbWVudC4KLSAgICogQHBhcmFtIGRlZiBUaGUgZGVmaW5pdGlvbnMgZWxlbWVudC4KLSAgICogQHJldHVybiBBIFdTREwgYmluZGluZyBlbGVtZW50LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBCaW5kaW5nIHBhcnNlQmluZGluZyhFbGVtZW50IGJpbmRpbmdFbCwgRGVmaW5pdGlvbiBkZWYpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBCaW5kaW5nIGJpbmRpbmcgPSBudWxsOwotICAgIFN0cmluZyBuYW1lID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKGJpbmRpbmdFbCwgQ29uc3RhbnRzLkFUVFJfTkFNRSk7Ci0gICAgUU5hbWUgcG9ydFR5cGVOYW1lOwotICAgIHRyeQotICAgIHsKLSAgICAgIHBvcnRUeXBlTmFtZSA9IERPTVV0aWxzLmdldFF1YWxpZmllZEF0dHJpYnV0ZVZhbHVlKGJpbmRpbmdFbCwgQ29uc3RhbnRzLkFUVFJfVFlQRSwgQ29uc3RhbnRzLkVMRU1fQklORElORywgZmFsc2UsIGRlZik7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvL3RoZSBjYWxsIGFib3ZlIGZhaWxzIGlmIHRoZXJlIGlzIG5vIHF1YWxpZmllZCBuYW1lc3BhY2UgZm9yIHRoZSBtZXNzYWdlIG5hbWUKLSAgICAgIHBvcnRUeXBlTmFtZSA9IG5ldyBRTmFtZShudWxsLCBET01VdGlscy5nZXRBdHRyaWJ1dGUoYmluZGluZ0VsLCAidHlwZSIpKTsKLSAgICB9Ci0KLSAgICBQb3J0VHlwZSBwb3J0VHlwZSA9IG51bGw7Ci0KLSAgICBpZiAobmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIFFOYW1lIGJpbmRpbmdOYW1lID0gbmV3IFFOYW1lKGRlZi5nZXRUYXJnZXROYW1lc3BhY2UoKSwgbmFtZSk7Ci0KLSAgICAgIGJpbmRpbmcgPSBkZWYuZ2V0QmluZGluZyhiaW5kaW5nTmFtZSk7Ci0KLSAgICAgIGlmIChiaW5kaW5nID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGJpbmRpbmcgPSBkZWYuY3JlYXRlQmluZGluZygpOwotICAgICAgICBiaW5kaW5nLnNldFFOYW1lKGJpbmRpbmdOYW1lKTsKLSAgICAgIH0KLSAgICAgIC8vIHJlcG9ydCBhbiBlcnJvciBpZiBhIGJpbmRpbmcgd2l0aCB0aGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkCi0gICAgICBlbHNlIGlmICghYmluZGluZy5pc1VuZGVmaW5lZCgpKQotICAgICAgewotICAgICAgICAvL2FkZFJlYWRlckVycm9yKGRlZixiaW5kaW5nRWwsICJfQklORElOR19OQU1FX0FMUkVBRFlfREVGSU5FRCIpOyAgICAgICAKLSAgICAgICAgYWRkUmVhZGVyRXJyb3IoCi0gICAgICAgICAgZGVmLAotICAgICAgICAgIGJpbmRpbmdFbCwKLSAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygiX0JJTkRJTkdfTkFNRV9BTFJFQURZX0RFRklORUQiLCAiJyIgKyBiaW5kaW5nLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCkgKyAiJyIpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGJpbmRpbmcgPSBkZWYuY3JlYXRlQmluZGluZygpOwotICAgIH0KLQotICAgIC8vIFdoZXRoZXIgaXQgd2FzIHJldHJpZXZlZCBvciBjcmVhdGVkLCB0aGUgZGVmaW5pdGlvbiBoYXMgYmVlbiBmb3VuZC4KLSAgICBiaW5kaW5nLnNldFVuZGVmaW5lZChmYWxzZSk7Ci0KLSAgICBpZiAocG9ydFR5cGVOYW1lICE9IG51bGwpCi0gICAgewotICAgICAgcG9ydFR5cGUgPSBkZWYuZ2V0UG9ydFR5cGUocG9ydFR5cGVOYW1lKTsKLQotICAgICAgaWYgKHBvcnRUeXBlID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHBvcnRUeXBlID0gZGVmLmNyZWF0ZVBvcnRUeXBlKCk7Ci0gICAgICAgIHBvcnRUeXBlLnNldFFOYW1lKHBvcnRUeXBlTmFtZSk7Ci0gICAgICAgIGRlZi5hZGRQb3J0VHlwZShwb3J0VHlwZSk7Ci0gICAgICB9Ci0KLSAgICAgIGJpbmRpbmcuc2V0UG9ydFR5cGUocG9ydFR5cGUpOwotICAgIH0KLQotICAgIEVsZW1lbnQgdGVtcEVsID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQoYmluZGluZ0VsKTsKLQotICAgIHdoaWxlICh0ZW1wRWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKENvbnN0YW50cy5RX0VMRU1fRE9DVU1FTlRBVElPTiwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgYmluZGluZy5zZXREb2N1bWVudGF0aW9uRWxlbWVudCh0ZW1wRWwpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKENvbnN0YW50cy5RX0VMRU1fT1BFUkFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBiaW5kaW5nLmFkZEJpbmRpbmdPcGVyYXRpb24ocGFyc2VCaW5kaW5nT3BlcmF0aW9uKHRlbXBFbCwgcG9ydFR5cGUsIGRlZikpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBiaW5kaW5nLmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHBhcnNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoQmluZGluZy5jbGFzcywgdGVtcEVsLCBkZWYpKTsKLSAgICAgIH0KLQotICAgICAgdGVtcEVsID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KHRlbXBFbCk7Ci0gICAgfQotCi0gICAgLy8gYWRkIHRoZSBsb2NhdGlvbiBvZiB0aGlzIGVsZW1lbnQgdG8gZWxlbWVudExvY2F0aW9ucyAKLSAgICBzZXRMb2NhdGlvbihiaW5kaW5nLCBiaW5kaW5nRWwpOwotCi0gICAgcmV0dXJuIGJpbmRpbmc7Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2UgYSBzcGVjaWZpYyBiaW5kaW5nIG9wZXJhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBiaW5kaW5nT3BlcmF0aW9uRWwgVGhlIGJpbmRpbmcgb3BlcmF0aW9uIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBwb3J0VHlwZSBUaGUgcG9ydFR5cGUgdGhlIGJpbmRpbmcgcmVmZXJlbmNlcy4KLSAgICogQHBhcmFtIGRlZiBUaGUgZGVmaW5pdGlvbnMgZWxlbWVudC4KLSAgICogQHJldHVybiBBIFdTREwgYmluZGluZyBvcGVyYXRpb24gZWxlbWVudC4KLSAgICogQHRocm93cyBXU0RMRXhjZXB0aW9uCi0gICAqLwotICBwcm90ZWN0ZWQgQmluZGluZ09wZXJhdGlvbiBwYXJzZUJpbmRpbmdPcGVyYXRpb24oRWxlbWVudCBiaW5kaW5nT3BlcmF0aW9uRWwsIFBvcnRUeXBlIHBvcnRUeXBlLCBEZWZpbml0aW9uIGRlZikKLSAgICB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gZGVmLmNyZWF0ZUJpbmRpbmdPcGVyYXRpb24oKTsKLSAgICBTdHJpbmcgbmFtZSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZShiaW5kaW5nT3BlcmF0aW9uRWwsIENvbnN0YW50cy5BVFRSX05BTUUpOwotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBiaW5kaW5nT3BlcmF0aW9uLnNldE5hbWUobmFtZSk7Ci0gICAgfQotCi0gICAgRWxlbWVudCB0ZW1wRWwgPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChiaW5kaW5nT3BlcmF0aW9uRWwpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLnNldERvY3VtZW50YXRpb25FbGVtZW50KHRlbXBFbCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9JTlBVVCwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgYmluZGluZ09wZXJhdGlvbi5zZXRCaW5kaW5nSW5wdXQocGFyc2VCaW5kaW5nSW5wdXQodGVtcEVsLCBkZWYpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX09VVFBVVCwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgYmluZGluZ09wZXJhdGlvbi5zZXRCaW5kaW5nT3V0cHV0KHBhcnNlQmluZGluZ091dHB1dCh0ZW1wRWwsIGRlZikpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKENvbnN0YW50cy5RX0VMRU1fRkFVTFQsIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIGJpbmRpbmdPcGVyYXRpb24uYWRkQmluZGluZ0ZhdWx0KHBhcnNlQmluZGluZ0ZhdWx0KHRlbXBFbCwgZGVmKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGJpbmRpbmdPcGVyYXRpb24uYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQocGFyc2VFeHRlbnNpYmlsaXR5RWxlbWVudChCaW5kaW5nT3BlcmF0aW9uLmNsYXNzLCB0ZW1wRWwsIGRlZikpOwotICAgICAgfQotCi0gICAgICB0ZW1wRWwgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodGVtcEVsKTsKLSAgICB9Ci0KLSAgICBpZiAocG9ydFR5cGUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0ID0gYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKTsKLSAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpOwotICAgICAgLy9TdHJpbmcgaW5wdXROYW1lID0gKGJpbmRpbmdJbnB1dCAhPSBudWxsID8gYmluZGluZ0lucHV0LmdldE5hbWUoKSA6IG51bGwpOwotICAgICAgLy9TdHJpbmcgb3V0cHV0TmFtZSA9IChiaW5kaW5nT3V0cHV0ICE9IG51bGwgPyBiaW5kaW5nT3V0cHV0LmdldE5hbWUoKSA6IG51bGwpOwotCi0gICAgICAvLyBoYWNrIGNvZGUgdG8gZ2V0IGF0IG9wZXJhdGlvbnMgdGhhdCBhcmUgZGVmaW5lZCB3aXRoIHRoZSBzYW1lIG5hbWUgYnV0IGRpZmZlcmVudAotICAgICAgLy8gaW5wdXRzIGFuZCBvdXRwdXRzIAotICAgICAgT3BlcmF0aW9uIG9wID0gbnVsbDsKLSAgICAgIExpc3Qgb3BlcmF0aW9ucyA9IHBvcnRUeXBlLmdldE9wZXJhdGlvbnMoKTsKLSAgICAgIC8vIGdldCBhIGxpc3Qgb2YgYWxsIG9wZXJhdGlvbnMgd2l0aCBtYXRjaGluZyBuYW1lcwotICAgICAgTGlzdCBtYXRjaGluZ09wZXJhdGlvbnMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBJdGVyYXRvciBpT3BlcmF0aW9ucyA9IG9wZXJhdGlvbnMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpT3BlcmF0aW9ucy5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIE9wZXJhdGlvbiBvcGVyID0gKE9wZXJhdGlvbilpT3BlcmF0aW9ucy5uZXh0KCk7Ci0gICAgICAgIGlmIChvcGVyLmdldE5hbWUoKS5lcXVhbHNJZ25vcmVDYXNlKGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpKSkKLSAgICAgICAgewotICAgICAgICAgIG1hdGNoaW5nT3BlcmF0aW9ucy5hZGQob3Blcik7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKG1hdGNoaW5nT3BlcmF0aW9ucyAhPSBudWxsKQotICAgICAgewotICAgICAgICAvLyBJZiB0aGVyZSdzIG9ubHkgb25lIG1hdGNoaW5nIG9wZXJhdGlvbiB0aGlzIGlzIHdoYXQgd2UncmUgcmVmZXJyaW5nIHRvLgotICAgICAgICAvLyBPbmx5IG1hdGNoaW5nIGlmIGJpbmRpbmcgb3BlcmF0aW9uIGlucHV0IG5hbWUgYW5kIG91dHB1dCBuYW1lIGFyZQotICAgICAgICAvLyBib3RoIG51bGwgb3IgdGhlIHNhbWUgYXMgdGhlIHBvcnRUeXBlIG9wZXJhdGlvbiBpbnB1dCBhbmQgb3V0cHV0IG5hbWVzLgotICAgICAgICAvLyB0aGUgcG9ydFR5cGUgb3BlcmF0aW9uIG5hbWUKLSAgICAgICAgaWYgKG1hdGNoaW5nT3BlcmF0aW9ucy5zaXplKCkgPT0gMSkKLSAgICAgICAgewotICAgICAgICAgIC8vIG9ubHkgc2F5IHRoZSBzaW5nbGUgb3BlcmF0aW9uIGlzIHRoZSBvbmUgd2UncmUgbG9va2luZyBmb3IgaWYgdGhlIG5hbWVzCi0gICAgICAgICAgLy8gb2YgdGhlIGJpbmRpbmcgaW5wdXQgYW5kIG91dHB1dCBhcmUgbm90IHNwZWNpZmllZAotICAgICAgICAgIE9wZXJhdGlvbiB0ZW1wT3AgPSAoT3BlcmF0aW9uKW1hdGNoaW5nT3BlcmF0aW9ucy5nZXQoMCk7Ci0gICAgICAgICAgYm9vbGVhbiBpbnB1dE9LID0gZmFsc2U7Ci0gICAgICAgICAgYm9vbGVhbiBvdXRwdXRPSyA9IGZhbHNlOwotICAgICAgICAgIElucHV0IHRlbXBJbnB1dCA9IHRlbXBPcC5nZXRJbnB1dCgpOwotICAgICAgICAgIE91dHB1dCB0ZW1wT3V0cHV0ID0gdGVtcE9wLmdldE91dHB1dCgpOwotCi0gICAgICAgICAgLy8gb3JkZXIgaXMgaW1wb3J0YW50IGluIHRoZXNlIGNvbmRpdGlvbnMuIGNvbmRpdGlvbiAyIG11c3QgZmFpbCBmb3IgMyB0byB3b3JrCi0gICAgICAgICAgLy8gY2hlY2sgdGhlIGlucHV0Ci0gICAgICAgICAgaWYgKHRlbXBJbnB1dCA9PSBudWxsICYmIGJpbmRpbmdJbnB1dCA9PSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlucHV0T0sgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChiaW5kaW5nSW5wdXQgPT0gbnVsbCB8fCBiaW5kaW5nSW5wdXQuZ2V0TmFtZSgpID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgaW5wdXRPSyA9IHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHRlbXBJbnB1dCAhPSBudWxsICYmIGJpbmRpbmdJbnB1dC5nZXROYW1lKCkuZXF1YWxzKHRlbXBJbnB1dC5nZXROYW1lKCkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlucHV0T0sgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBjaGVjayB0aGUgb3V0cHV0Ci0gICAgICAgICAgaWYgKHRlbXBPdXRwdXQgPT0gbnVsbCAmJiBiaW5kaW5nT3V0cHV0ID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgb3V0cHV0T0sgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChiaW5kaW5nT3V0cHV0ID09IG51bGwgfHwgYmluZGluZ091dHB1dC5nZXROYW1lKCkgPT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBvdXRwdXRPSyA9IHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHRlbXBPdXRwdXQgIT0gbnVsbCAmJiBiaW5kaW5nT3V0cHV0LmdldE5hbWUoKS5lcXVhbHModGVtcE91dHB1dC5nZXROYW1lKCkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG91dHB1dE9LID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGlucHV0T0sgJiYgb3V0cHV0T0spCi0gICAgICAgICAgewotICAgICAgICAgICAgb3AgPSB0ZW1wT3A7Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vICAgICAgICAgIG9wID0gKE9wZXJhdGlvbikgbWF0Y2hpbmdPcGVyYXRpb25zLmdldCgwKTsKLSAgICAgICAgfQotICAgICAgICAvLyBvdGhlcndpc2UgZmluZCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSwgaW5wdXRuYW1lLCBvdXRwdXRuYW1lIHNpZ25hdHVyZQotICAgICAgICBpZiAobWF0Y2hpbmdPcGVyYXRpb25zICE9IG51bGwgJiYgb3AgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIEl0ZXJhdG9yIGlNYXRjaGluZ09wZXJhdGlvbnMgPSBtYXRjaGluZ09wZXJhdGlvbnMuaXRlcmF0b3IoKTsKLSAgICAgICAgICB3aGlsZSAoaU1hdGNoaW5nT3BlcmF0aW9ucy5oYXNOZXh0KCkpCi0gICAgICAgICAgewotCi0gICAgICAgICAgICBib29sZWFuIGlucHV0TmFtZXNFcXVhbCA9IGZhbHNlOwotICAgICAgICAgICAgYm9vbGVhbiBvdXRwdXROYW1lc0VxdWFsID0gZmFsc2U7Ci0gICAgICAgICAgICBPcGVyYXRpb24gb3BlciA9IChPcGVyYXRpb24paU1hdGNoaW5nT3BlcmF0aW9ucy5uZXh0KCk7Ci0gICAgICAgICAgICAvLyAgICAgICAgICBpZiAob3Blci5nZXROYW1lKCkuZXF1YWxzSWdub3JlQ2FzZShiaW5kaW5nT3BlcmF0aW9uLmdldE5hbWUoKSkpCi0gICAgICAgICAgICAvLyAgICAgICAgICB7Ci0gICAgICAgICAgICBJbnB1dCBvcElucHV0ID0gb3Blci5nZXRJbnB1dCgpOwotICAgICAgICAgICAgaWYgKG9wSW5wdXQgIT0gbnVsbCAmJiBiaW5kaW5nSW5wdXQgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgU3RyaW5nIG9wSW5wdXROYW1lID0gb3BJbnB1dC5nZXROYW1lKCk7Ci0gICAgICAgICAgICAgIFN0cmluZyBiaW5kaW5nSW5wdXROYW1lID0gYmluZGluZ0lucHV0LmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgaWYgKG9wSW5wdXROYW1lICE9IG51bGwgJiYgb3BJbnB1dE5hbWUuZXF1YWxzSWdub3JlQ2FzZShiaW5kaW5nSW5wdXROYW1lKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlucHV0TmFtZXNFcXVhbCA9IHRydWU7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZSBpZiAob3BJbnB1dE5hbWUgPT0gbnVsbCAmJiBiaW5kaW5nSW5wdXROYW1lID09IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnB1dE5hbWVzRXF1YWwgPSB0cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChvcElucHV0ID09IG51bGwgJiYgYmluZGluZ0lucHV0ID09IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlucHV0TmFtZXNFcXVhbCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBPdXRwdXQgb3BPdXRwdXQgPSBvcGVyLmdldE91dHB1dCgpOwotICAgICAgICAgICAgaWYgKG9wT3V0cHV0ICE9IG51bGwgJiYgYmluZGluZ091dHB1dCAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBTdHJpbmcgb3BPdXRwdXROYW1lID0gb3BPdXRwdXQuZ2V0TmFtZSgpOwotICAgICAgICAgICAgICBTdHJpbmcgYmluZGluZ091dHB1dE5hbWUgPSBiaW5kaW5nT3V0cHV0LmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgaWYgKG9wT3V0cHV0TmFtZSAhPSBudWxsICYmIG9wT3V0cHV0TmFtZS5lcXVhbHNJZ25vcmVDYXNlKGJpbmRpbmdPdXRwdXROYW1lKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dE5hbWVzRXF1YWwgPSB0cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgaWYgKG9wT3V0cHV0TmFtZSA9PSBudWxsICYmIGJpbmRpbmdPdXRwdXROYW1lID09IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXROYW1lc0VxdWFsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAob3BPdXRwdXQgPT0gbnVsbCAmJiBiaW5kaW5nT3V0cHV0ID09IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG91dHB1dE5hbWVzRXF1YWwgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlucHV0TmFtZXNFcXVhbCAmJiBvdXRwdXROYW1lc0VxdWFsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBvcCA9IG9wZXI7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy99Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvL09wZXJhdGlvbiBvcCA9IHBvcnRUeXBlLmdldE9wZXJhdGlvbihuYW1lLCBpbnB1dE5hbWUsIG91dHB1dE5hbWUpOwotCi0gICAgICBpZiAob3AgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgb3AgPSBkZWYuY3JlYXRlT3BlcmF0aW9uKCk7Ci0gICAgICAgIG9wLnNldE5hbWUobmFtZSk7Ci0gICAgICAgIHBvcnRUeXBlLmFkZE9wZXJhdGlvbihvcCk7Ci0gICAgICB9Ci0KLSAgICAgIGJpbmRpbmdPcGVyYXRpb24uc2V0T3BlcmF0aW9uKG9wKTsKLSAgICB9Ci0KLSAgICAvLyBhZGQgdGhlIGxvY2F0aW9uIG9mIHRoaXMgZWxlbWVudCB0byBlbGVtZW50TG9jYXRpb25zIAotICAgIHNldExvY2F0aW9uKGJpbmRpbmdPcGVyYXRpb24sIGJpbmRpbmdPcGVyYXRpb25FbCk7Ci0KLSAgICByZXR1cm4gYmluZGluZ09wZXJhdGlvbjsKLSAgfQotICAKLSAgLyoqCi0gICAqIFBhcnNlIGEgc3BlY2lmaWMgYmluZGluZyBpbnB1dCBlbGVtZW50LgotICAgKiAKLSAgICogQHBhcmFtIGJpbmRpbmdJbnB1dEVsIFRoZSBiaW5kaW5nIGlucHV0IGVsZW1lbnQuCi0gICAqIEBwYXJhbSBkZWYgVGhlIGRlZmluaXRpb25zIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gQSBXU0RMIGJpbmRpbmcgaW5wdXQgZWxlbWVudC4KLSAgICogQHRocm93cyBXU0RMRXhjZXB0aW9uCi0gICAqLwotICBwcm90ZWN0ZWQgQmluZGluZ0lucHV0IHBhcnNlQmluZGluZ0lucHV0KEVsZW1lbnQgYmluZGluZ0lucHV0RWwsIERlZmluaXRpb24gZGVmKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IGRlZi5jcmVhdGVCaW5kaW5nSW5wdXQoKTsKLSAgICBTdHJpbmcgbmFtZSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZShiaW5kaW5nSW5wdXRFbCwgQ29uc3RhbnRzLkFUVFJfTkFNRSk7Ci0KLSAgICBpZiAobmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGJpbmRpbmdJbnB1dC5zZXROYW1lKG5hbWUpOwotICAgIH0KLQotICAgIEVsZW1lbnQgdGVtcEVsID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQoYmluZGluZ0lucHV0RWwpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBiaW5kaW5nSW5wdXQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQodGVtcEVsKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgYmluZGluZ0lucHV0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHBhcnNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoQmluZGluZ0lucHV0LmNsYXNzLCB0ZW1wRWwsIGRlZikpOwotICAgICAgfQotCi0gICAgICB0ZW1wRWwgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodGVtcEVsKTsKLSAgICB9Ci0KLSAgICAvLyBhZGQgdGhlIGxvY2F0aW9uIG9mIHRoaXMgZWxlbWVudCB0byBlbGVtZW50TG9jYXRpb25zIAotICAgIHNldExvY2F0aW9uKGJpbmRpbmdJbnB1dCwgYmluZGluZ0lucHV0RWwpOwotCi0gICAgcmV0dXJuIGJpbmRpbmdJbnB1dDsKLSAgfQotCi0gIC8qKgotICAgKiBQYXJzZSBhIHNwZWNpZmljIGJpbmRpbmcgb3V0cHV0IGVsZW1lbnQuCi0gICAqIAotICAgKiBAcGFyYW0gYmluZGluZ091dHB1dEVsIFRoZSBiaW5kaW5nIG91dHB1dCBlbGVtZW50LgotICAgKiBAcGFyYW0gZGVmIFRoZSBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKiBAcmV0dXJuIEEgV1NETCBiaW5kaW5nIG91dHB1dCBlbGVtZW50LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBCaW5kaW5nT3V0cHV0IHBhcnNlQmluZGluZ091dHB1dChFbGVtZW50IGJpbmRpbmdPdXRwdXRFbCwgRGVmaW5pdGlvbiBkZWYpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBCaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQgPSBkZWYuY3JlYXRlQmluZGluZ091dHB1dCgpOwotICAgIFN0cmluZyBuYW1lID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKGJpbmRpbmdPdXRwdXRFbCwgQ29uc3RhbnRzLkFUVFJfTkFNRSk7Ci0KLSAgICBpZiAobmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGJpbmRpbmdPdXRwdXQuc2V0TmFtZShuYW1lKTsKLSAgICB9Ci0KLSAgICBFbGVtZW50IHRlbXBFbCA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KGJpbmRpbmdPdXRwdXRFbCk7Ci0KLSAgICB3aGlsZSAodGVtcEVsICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX0RPQ1VNRU5UQVRJT04sIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIGJpbmRpbmdPdXRwdXQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQodGVtcEVsKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgYmluZGluZ091dHB1dC5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChwYXJzZUV4dGVuc2liaWxpdHlFbGVtZW50KEJpbmRpbmdPdXRwdXQuY2xhc3MsIHRlbXBFbCwgZGVmKSk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBFbCA9IERPTVV0aWxzLmdldE5leHRTaWJsaW5nRWxlbWVudCh0ZW1wRWwpOwotICAgIH0KLQotICAgIC8vIGFkZCB0aGUgbG9jYXRpb24gb2YgdGhpcyBlbGVtZW50IHRvIGVsZW1lbnRMb2NhdGlvbnMgCi0gICAgc2V0TG9jYXRpb24oYmluZGluZ091dHB1dCwgYmluZGluZ091dHB1dEVsKTsKLQotICAgIHJldHVybiBiaW5kaW5nT3V0cHV0OwotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIGEgc3BlY2lmaWMgYmluZGluZyBmYXVsdCBlbGVtZW50LgotICAgKiAKLSAgICogQHBhcmFtIGJpbmRpbmdGYXVsdEVsIFRoZSBiaW5kaW5nIGZhdWx0IGVsZW1lbnQuCi0gICAqIEBwYXJhbSBkZWYgVGhlIGRlZmluaXRpb25zIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gQSBXU0RMIGJpbmRpbmcgZmF1bHQgZWxlbWVudC4KLSAgICogQHRocm93cyBXU0RMRXhjZXB0aW9uCi0gICAqLwotICBwcm90ZWN0ZWQgQmluZGluZ0ZhdWx0IHBhcnNlQmluZGluZ0ZhdWx0KEVsZW1lbnQgYmluZGluZ0ZhdWx0RWwsIERlZmluaXRpb24gZGVmKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdCA9IGRlZi5jcmVhdGVCaW5kaW5nRmF1bHQoKTsKLSAgICBTdHJpbmcgbmFtZSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZShiaW5kaW5nRmF1bHRFbCwgQ29uc3RhbnRzLkFUVFJfTkFNRSk7Ci0KLSAgICBpZiAobmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGJpbmRpbmdGYXVsdC5zZXROYW1lKG5hbWUpOwotICAgIH0KLQotICAgIEVsZW1lbnQgdGVtcEVsID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQoYmluZGluZ0ZhdWx0RWwpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBiaW5kaW5nRmF1bHQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQodGVtcEVsKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgYmluZGluZ0ZhdWx0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHBhcnNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoQmluZGluZ0ZhdWx0LmNsYXNzLCB0ZW1wRWwsIGRlZikpOwotICAgICAgfQotCi0gICAgICB0ZW1wRWwgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodGVtcEVsKTsKLSAgICB9Ci0KLSAgICAvLyBhZGQgdGhlIGxvY2F0aW9uIG9mIHRoaXMgZWxlbWVudCB0byBlbGVtZW50TG9jYXRpb25zIAotICAgIHNldExvY2F0aW9uKGJpbmRpbmdGYXVsdCwgYmluZGluZ0ZhdWx0RWwpOwotCi0gICAgcmV0dXJuIGJpbmRpbmdGYXVsdDsKLSAgfQotCi0gIC8qKgotICAgKiBQYXJzZSBhIHNwZWNpZmljIG1lc3NhZ2UgZWxlbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSBtc2dFbCBUaGUgbWVzc2FnZSBlbGVtZW50LgotICAgKiBAcGFyYW0gZGVmIFRoZSBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKiBAcmV0dXJuIEEgV1NETCBtZXNzYWdlIGVsZW1lbnQuCi0gICAqIEB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICAgKi8KLSAgcHJvdGVjdGVkIE1lc3NhZ2UgcGFyc2VNZXNzYWdlKEVsZW1lbnQgbXNnRWwsIERlZmluaXRpb24gZGVmKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgTWVzc2FnZSBtc2cgPSBudWxsOwotICAgIFN0cmluZyBuYW1lID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKG1zZ0VsLCBDb25zdGFudHMuQVRUUl9OQU1FKTsKLQotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgewotICAgICAgUU5hbWUgbWVzc2FnZU5hbWUgPSBuZXcgUU5hbWUoZGVmLmdldFRhcmdldE5hbWVzcGFjZSgpLCBuYW1lKTsKLQotICAgICAgbXNnID0gZGVmLmdldE1lc3NhZ2UobWVzc2FnZU5hbWUpOwotCi0gICAgICBpZiAobXNnID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIG1zZyA9IGRlZi5jcmVhdGVNZXNzYWdlKCk7Ci0gICAgICAgIG1zZy5zZXRRTmFtZShtZXNzYWdlTmFtZSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmICghbXNnLmlzVW5kZWZpbmVkKCkpCi0gICAgICB7Ci0gICAgICAgIC8vIHByb2R1Y2UgYW4gZXJyb3IgbWVzc2FnZSBhcyBhIG1lc3NhZ2Ugd2l0aCB0aGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkCi0gICAgICAgIGFkZFJlYWRlckVycm9yKAotICAgICAgICAgIGRlZiwKLSAgICAgICAgICBtc2dFbCwKLSAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygiX01FU1NBR0VfTkFNRV9BTFJFQURZX0RFRklORUQiLCAiJyIgKyBtc2cuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSArICInIikpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgbXNnID0gZGVmLmNyZWF0ZU1lc3NhZ2UoKTsKLSAgICB9Ci0KLSAgICAvLyBXaGV0aGVyIGl0IHdhcyByZXRyaWV2ZWQgb3IgY3JlYXRlZCwgdGhlIGRlZmluaXRpb24gaGFzIGJlZW4gZm91bmQuCi0gICAgbXNnLnNldFVuZGVmaW5lZChmYWxzZSk7Ci0KLSAgICBFbGVtZW50IHRlbXBFbCA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KG1zZ0VsKTsKLQotICAgIHdoaWxlICh0ZW1wRWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKENvbnN0YW50cy5RX0VMRU1fRE9DVU1FTlRBVElPTiwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgbXNnLnNldERvY3VtZW50YXRpb25FbGVtZW50KHRlbXBFbCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9QQVJULCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBtc2cuYWRkUGFydChwYXJzZVBhcnQodGVtcEVsLCBkZWYpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gbWVzc2FnZSBhbGxvd3MgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cwotICAgICAgICBtc2cuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQocGFyc2VFeHRlbnNpYmlsaXR5RWxlbWVudChNZXNzYWdlLmNsYXNzLCB0ZW1wRWwsIGRlZikpOwotICAgICAgfQotCi0gICAgICB0ZW1wRWwgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodGVtcEVsKTsKLSAgICB9Ci0KLSAgICAvLyBhZGQgdGhlIGxvY2F0aW9uIG9mIHRoaXMgZWxlbWVudCB0byBlbGVtZW50TG9jYXRpb25zIAotICAgIHNldExvY2F0aW9uKG1zZywgbXNnRWwpOwotCi0gICAgcmV0dXJuIG1zZzsKLSAgfQotCi0gIC8qKgotICAgKiBQYXJzZSBhIHNwZWNpZmljIHBhcnQgZWxlbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSBwYXJ0RWwgVGhlIHBhcnQgZWxlbWVudC4KLSAgICogQHBhcmFtIGRlZiBUaGUgZGVmaW5pdGlvbnMgZWxlbWVudC4KLSAgICogQHJldHVybiBBIFdTREwgcGFydCBlbGVtZW50LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBQYXJ0IHBhcnNlUGFydChFbGVtZW50IHBhcnRFbCwgRGVmaW5pdGlvbiBkZWYpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBQYXJ0IHBhcnQgPSBkZWYuY3JlYXRlUGFydCgpOwotICAgIFN0cmluZyBuYW1lID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKHBhcnRFbCwgQ29uc3RhbnRzLkFUVFJfTkFNRSk7Ci0KLSAgICBRTmFtZSBlbGVtZW50TmFtZTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBlbGVtZW50TmFtZSA9IERPTVV0aWxzLmdldFF1YWxpZmllZEF0dHJpYnV0ZVZhbHVlKHBhcnRFbCwgQ29uc3RhbnRzLkFUVFJfRUxFTUVOVCwgQ29uc3RhbnRzLkVMRU1fTUVTU0FHRSwgZmFsc2UsIGRlZik7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvL3RoZSBjYWxsIGFib3ZlIGZhaWxzIGlmIHRoZXJlIGlzIG5vIHF1YWxpZmllZCBuYW1lc3BhY2UgZm9yIHRoZSBlbGVtZW50IG5hbWUKLSAgICAgIGVsZW1lbnROYW1lID0gbmV3IFFOYW1lKG51bGwsIERPTVV0aWxzLmdldEF0dHJpYnV0ZShwYXJ0RWwsIENvbnN0YW50cy5BVFRSX0VMRU1FTlQpKTsKLSAgICB9Ci0KLSAgICBRTmFtZSB0eXBlTmFtZTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICB0eXBlTmFtZSA9IERPTVV0aWxzLmdldFF1YWxpZmllZEF0dHJpYnV0ZVZhbHVlKHBhcnRFbCwgQ29uc3RhbnRzLkFUVFJfVFlQRSwKLSAgICAgICAgLy8gQ29ycmVjdGVkIC0gd2FzIEFUVFJfRUxFTUVOVAotICBDb25zdGFudHMuRUxFTV9NRVNTQUdFLCBmYWxzZSwgZGVmKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vdGhlIGNhbGwgYWJvdmUgZmFpbHMgaWYgdGhlcmUgaXMgbm8gcXVhbGlmaWVkIG5hbWVzcGFjZSBmb3IgdGhlIGVsZW1lbnQgYXR0cmlidXRlCi0gICAgICB0eXBlTmFtZSA9IG5ldyBRTmFtZShudWxsLCBET01VdGlscy5nZXRBdHRyaWJ1dGUocGFydEVsLCBDb25zdGFudHMuQVRUUl9UWVBFKSk7Ci0gICAgfQotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwYXJ0LnNldE5hbWUobmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKGVsZW1lbnROYW1lICE9IG51bGwpCi0gICAgewotICAgICAgcGFydC5zZXRFbGVtZW50TmFtZShlbGVtZW50TmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKHR5cGVOYW1lICE9IG51bGwpCi0gICAgewotICAgICAgcGFydC5zZXRUeXBlTmFtZSh0eXBlTmFtZSk7Ci0gICAgfQotCi0gICAgRWxlbWVudCB0ZW1wRWwgPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChwYXJ0RWwpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBwYXJ0LnNldERvY3VtZW50YXRpb25FbGVtZW50KHRlbXBFbCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIFhNTCBWYWxpZGF0aW9uIHdpbGwgY2F0Y2ggdGhpcwotICAgICAgICBET01VdGlscy50aHJvd1dTRExFeGNlcHRpb24odGVtcEVsKTsKLSAgICAgIH0KLQotICAgICAgdGVtcEVsID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KHRlbXBFbCk7Ci0gICAgfQotCi0gICAgTWFwIGV4dGVuc2lvbkF0dHJpYnV0ZXMgPSBwYXJ0LmdldEV4dGVuc2lvbkF0dHJpYnV0ZXMoKTsKLQotICAgIGV4dGVuc2lvbkF0dHJpYnV0ZXMucHV0QWxsKGdldFBhcnRBdHRyaWJ1dGVzKHBhcnRFbCwgZGVmKSk7Ci0KLSAgICAvLyBOZWVkIHRvIGRvIHNvbWV0aGluZyBoZXJlIHRvIGxvY2F0ZSBwYXJ0IGRlZmluaXRpb24uCi0KLSAgICAvLyBhZGQgdGhlIGxvY2F0aW9uIG9mIHRoaXMgZWxlbWVudCB0byBlbGVtZW50TG9jYXRpb25zIAotICAgIHNldExvY2F0aW9uKHBhcnQsIHBhcnRFbCk7Ci0KLSAgICByZXR1cm4gcGFydDsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgYSBtYXAgb2YgdGhlIHBhcnQgYXR0cmlidXRlcy4KLSAgICogCi0gICAqIEBwYXJhbSBlbCBUaGUgcGFydCBhdHRyaWJ1dGVzIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBkZWYgVGhlIGRlZmludGlvbnMgZWxlbWVudC4KLSAgICogQHJldHVybiBBIG1hcCBjb250YWluaW5nIHRoZSBwYXJ0IGF0dHJpYnV0ZXMuCi0gICAqIEB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICAgKi8KLSAgcHJvdGVjdGVkIE1hcCBnZXRQYXJ0QXR0cmlidXRlcyhFbGVtZW50IGVsLCBEZWZpbml0aW9uIGRlZikgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIE1hcCBhdHRyaWJ1dGVzID0gbmV3IEhhc2hNYXAoKTsKLSAgICBOYW1lZE5vZGVNYXAgbm9kZU1hcCA9IGVsLmdldEF0dHJpYnV0ZXMoKTsKLSAgICBpbnQgYXR0cyA9IG5vZGVNYXAuZ2V0TGVuZ3RoKCk7Ci0KLSAgICBmb3IgKGludCBhID0gMDsgYSA8IGF0dHM7IGErKykKLSAgICB7Ci0gICAgICBBdHRyIGF0dHJpYnV0ZSA9IChBdHRyKW5vZGVNYXAuaXRlbShhKTsKLSAgICAgIFN0cmluZyBsTmFtZSA9IGF0dHJpYnV0ZS5nZXRMb2NhbE5hbWUoKTsKLSAgICAgIFN0cmluZyBuU3BhY2UgPSBhdHRyaWJ1dGUuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICBTdHJpbmcgcHJlZml4ID0gYXR0cmlidXRlLmdldFByZWZpeCgpOwotICAgICAgUU5hbWUgbmFtZSA9IG5ldyBRTmFtZShuU3BhY2UsIGxOYW1lKTsKLQotICAgICAgaWYgKG5TcGFjZSAhPSBudWxsICYmICFuU3BhY2UuZXF1YWxzKENvbnN0YW50cy5OU19VUklfV1NETCkpCi0gICAgICB7Ci0gICAgICAgIGlmICghblNwYWNlLmVxdWFscyhDb25zdGFudHMuTlNfVVJJX1hNTE5TKSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBzdHJWYWx1ZSA9IGF0dHJpYnV0ZS5nZXRWYWx1ZSgpOwotICAgICAgICAgIFFOYW1lIHFWYWx1ZSA9IG51bGw7Ci0KLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBxVmFsdWUgPSBET01VdGlscy5nZXRRTmFtZShzdHJWYWx1ZSwgZWwsIGRlZik7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgcVZhbHVlID0gbmV3IFFOYW1lKHN0clZhbHVlKTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBhdHRyaWJ1dGVzLnB1dChuYW1lLCBxVmFsdWUpOwotCi0gICAgICAgICAgU3RyaW5nIHRlbXBOU1VyaSA9IGRlZi5nZXROYW1lc3BhY2UocHJlZml4KTsKLQotICAgICAgICAgIHdoaWxlICh0ZW1wTlNVcmkgIT0gbnVsbCAmJiAhdGVtcE5TVXJpLmVxdWFscyhuU3BhY2UpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHByZWZpeCArPSAiXyI7Ci0gICAgICAgICAgICB0ZW1wTlNVcmkgPSBkZWYuZ2V0TmFtZXNwYWNlKHByZWZpeCk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgZGVmLmFkZE5hbWVzcGFjZShwcmVmaXgsIG5TcGFjZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAhbE5hbWUuZXF1YWxzKENvbnN0YW50cy5BVFRSX05BTUUpCi0gICAgICAgICAgJiYgIWxOYW1lLmVxdWFscyhDb25zdGFudHMuQVRUUl9FTEVNRU5UKQotICAgICAgICAgICYmICFsTmFtZS5lcXVhbHMoQ29uc3RhbnRzLkFUVFJfVFlQRSkpCi0gICAgICB7Ci0gICAgICAgIFdTRExFeGNlcHRpb24gd3NkbEV4YyA9Ci0gICAgICAgICAgbmV3IFdTRExFeGNlcHRpb24oCi0gICAgICAgICAgICBXU0RMRXhjZXB0aW9uLklOVkFMSURfV1NETCwKLSAgICAgICAgICAgICJFbmNvdW50ZXJlZCBpbGxlZ2FsICIKLSAgICAgICAgICAgICAgKyAicGFydCBleHRlbnNpb24gIgotICAgICAgICAgICAgICArICJhdHRyaWJ1dGUgJyIKLSAgICAgICAgICAgICAgKyBuYW1lCi0gICAgICAgICAgICAgICsgIicuIEV4dGVuc2lvbiAiCi0gICAgICAgICAgICAgICsgImF0dHJpYnV0ZXMgbXVzdCBiZSBpbiAiCi0gICAgICAgICAgICAgICsgImEgbmFtZXNwYWNlIG90aGVyIHRoYW4gIgotICAgICAgICAgICAgICArICJXU0RMJ3MuIik7Ci0KLSAgICAgICAgd3NkbEV4Yy5zZXRMb2NhdGlvbihYUGF0aFV0aWxzLmdldFhQYXRoRXhwckZyb21Ob2RlKGVsKSk7Ci0gICAgICAgIC8vdGhyb3cgd3NkbEV4YzsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBhZGQgdGhlIGxvY2F0aW9uIG9mIHRoaXMgZWxlbWVudCB0byBlbGVtZW50TG9jYXRpb25zIAotICAgIHNldExvY2F0aW9uKGF0dHJpYnV0ZXMsIGVsKTsKLQotICAgIHJldHVybiBhdHRyaWJ1dGVzOwotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIGEgc3BlY2lmaWMgcG9ydFR5cGUgZWxlbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSBwb3J0VHlwZUVsIFRoZSBwb3J0VHlwZSBlbGVtZW50LgotICAgKiBAcGFyYW0gZGVmIFRoZSBkZWZpbnRpb25zIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gQSBXU0RMIHBvcnRUeXBlIGVsZW1lbnQuCi0gICAqIEB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICAgKi8KLSAgcHJvdGVjdGVkIFBvcnRUeXBlIHBhcnNlUG9ydFR5cGUoRWxlbWVudCBwb3J0VHlwZUVsLCBEZWZpbml0aW9uIGRlZikgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotCi0gICAgUG9ydFR5cGUgcG9ydFR5cGUgPSBudWxsOwotICAgIFN0cmluZyBuYW1lID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKHBvcnRUeXBlRWwsIENvbnN0YW50cy5BVFRSX05BTUUpOwotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBRTmFtZSBwb3J0VHlwZU5hbWUgPSBuZXcgUU5hbWUoZGVmLmdldFRhcmdldE5hbWVzcGFjZSgpLCBuYW1lKTsKLQotICAgICAgcG9ydFR5cGUgPSBkZWYuZ2V0UG9ydFR5cGUocG9ydFR5cGVOYW1lKTsKLQotICAgICAgaWYgKHBvcnRUeXBlID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHBvcnRUeXBlID0gZGVmLmNyZWF0ZVBvcnRUeXBlKCk7Ci0gICAgICAgIHBvcnRUeXBlLnNldFFOYW1lKHBvcnRUeXBlTmFtZSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmICghcG9ydFR5cGUuaXNVbmRlZmluZWQoKSkKLSAgICAgIHsKLSAgICAgICAgLy8gaWYgdGhlIFBvcnRUeXBlIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBwcm9kdWNlIGFuIGVycm9yIGFuZCByZXR1cm4gbnVsbAotICAgICAgICBhZGRSZWFkZXJFcnJvcigKLSAgICAgICAgICBkZWYsCi0gICAgICAgICAgcG9ydFR5cGVFbCwKLSAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygiX1BPUlRUWVBFX05BTUVfQUxSRUFEWV9ERUZJTkVEIiwgIiciICsgcG9ydFR5cGUuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSArICInIikpOwotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHBvcnRUeXBlID0gZGVmLmNyZWF0ZVBvcnRUeXBlKCk7Ci0gICAgfQotCi0gICAgLy8gV2hldGhlciBpdCB3YXMgcmV0cmlldmVkIG9yIGNyZWF0ZWQsIHRoZSBkZWZpbml0aW9uIGhhcyBiZWVuIGZvdW5kLgotICAgIHBvcnRUeXBlLnNldFVuZGVmaW5lZChmYWxzZSk7Ci0KLSAgICBFbGVtZW50IHRlbXBFbCA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KHBvcnRUeXBlRWwpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBwb3J0VHlwZS5zZXREb2N1bWVudGF0aW9uRWxlbWVudCh0ZW1wRWwpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKENvbnN0YW50cy5RX0VMRU1fT1BFUkFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICAvLyBtb2RpZmllZCBzbyBkdXBsaWNhdGUgb3BlcmF0aW9ucyB3aWxsIG5vdCBiZSBhZGRlZCB0byBwb3J0dHlwZSAKLSAgICAgICAgT3BlcmF0aW9uIG9wID0gcGFyc2VPcGVyYXRpb24odGVtcEVsLCBwb3J0VHlwZSwgZGVmKTsKLSAgICAgICAgaWYgKG9wICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBwb3J0VHlwZS5hZGRPcGVyYXRpb24ob3ApOwotICAgICAgICB9Ci0gICAgICAgIC8vcG9ydFR5cGUuYWRkT3BlcmF0aW9uKHBhcnNlT3BlcmF0aW9uKHRlbXBFbCwgcG9ydFR5cGUsIGRlZikpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBzb21ldGhpbmcgZWxzZSB0aGF0IHNob3VsZG4ndCBiZSBoZXJlCi0gICAgICAgIC8vIE5FRUQgVE8gQUREIFRPIEVSUk9SIExJU1QKLSAgICAgICAgLy9ET01VdGlscy50aHJvd1dTRExFeGNlcHRpb24odGVtcEVsKTsKLSAgICAgIH0KLQotICAgICAgdGVtcEVsID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KHRlbXBFbCk7Ci0gICAgfQotCi0gICAgLy8gYWRkIHRoZSBsb2NhdGlvbiBvZiB0aGlzIGVsZW1lbnQgdG8gZWxlbWVudExvY2F0aW9ucyAKLSAgICBzZXRMb2NhdGlvbihwb3J0VHlwZSwgcG9ydFR5cGVFbCk7Ci0KLSAgICByZXR1cm4gcG9ydFR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2UgYSBzcGVjaWZpYyBvcGVyYXRpb24gZWxlbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSBvcEVsIFRoZSBvcGVyYXRpb24gZWxlbWVudC4KLSAgICogQHBhcmFtIHBvcnRUeXBlIFRoZSBwb3J0VHlwZSBlbGVtZW50LgotICAgKiBAcGFyYW0gZGVmIFRoZSBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKiBAcmV0dXJuIEEgV1NETCBvcGVyYXRpb24gZWxlbWVudC4KLSAgICogQHRocm93cyBXU0RMRXhjZXB0aW9uCi0gICAqLwotICBwcm90ZWN0ZWQgT3BlcmF0aW9uIHBhcnNlT3BlcmF0aW9uKEVsZW1lbnQgb3BFbCwgUG9ydFR5cGUgcG9ydFR5cGUsIERlZmluaXRpb24gZGVmKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgT3BlcmF0aW9uIG9wID0gbnVsbDsKLSAgICBTdHJpbmcgbmFtZSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZShvcEVsLCBDb25zdGFudHMuQVRUUl9OQU1FKTsKLSAgICBTdHJpbmcgcGFyYW1ldGVyT3JkZXJTdHIgPSBET01VdGlscy5nZXRBdHRyaWJ1dGUob3BFbCwgQ29uc3RhbnRzLkFUVFJfUEFSQU1FVEVSX09SREVSKTsKLSAgICBFbGVtZW50IHRlbXBFbCA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KG9wRWwpOwotICAgIExpc3QgbWVzc2FnZU9yZGVyID0gbmV3IFZlY3RvcigpOwotICAgIEVsZW1lbnQgZG9jRWwgPSBudWxsOwotICAgIElucHV0IGlucHV0ID0gbnVsbDsKLSAgICBPdXRwdXQgb3V0cHV0ID0gbnVsbDsKLSAgICBMaXN0IGZhdWx0cyA9IG5ldyBWZWN0b3IoKTsKLSAgICBMaXN0IGV4dEVsZW1lbnRzID0gbmV3IEFycmF5TGlzdCgpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBkb2NFbCA9IHRlbXBFbDsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX0lOUFVULCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBpbnB1dCA9IHBhcnNlSW5wdXQodGVtcEVsLCBkZWYpOwotICAgICAgICBtZXNzYWdlT3JkZXIuYWRkKENvbnN0YW50cy5FTEVNX0lOUFVUKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX09VVFBVVCwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgb3V0cHV0ID0gcGFyc2VPdXRwdXQodGVtcEVsLCBkZWYpOwotICAgICAgICBtZXNzYWdlT3JkZXIuYWRkKENvbnN0YW50cy5FTEVNX09VVFBVVCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9GQVVMVCwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgZmF1bHRzLmFkZChwYXJzZUZhdWx0KHRlbXBFbCwgZGVmKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIG9wZXJhdGlvbiBhbGxvd3MgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cwotICAgICAgICBleHRFbGVtZW50cy5hZGQocGFyc2VFeHRlbnNpYmlsaXR5RWxlbWVudChPcGVyYXRpb24uY2xhc3MsIHRlbXBFbCwgZGVmKSk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBFbCA9IERPTVV0aWxzLmdldE5leHRTaWJsaW5nRWxlbWVudCh0ZW1wRWwpOwotICAgIH0KLQotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGlucHV0TmFtZSA9IChpbnB1dCAhPSBudWxsID8gaW5wdXQuZ2V0TmFtZSgpIDogbnVsbCk7Ci0gICAgICBTdHJpbmcgb3V0cHV0TmFtZSA9IChvdXRwdXQgIT0gbnVsbCA/IG91dHB1dC5nZXROYW1lKCkgOiBudWxsKTsKLQotICAgICAgYm9vbGVhbiBvcERlZmluZWQgPSBmYWxzZTsKLQotICAgICAgdHJ5Ci0gICAgICB7Ci0KLSAgICAgICAgLy9vcCA9IHBvcnRUeXBlLmdldE9wZXJhdGlvbihuYW1lLCBpbnB1dE5hbWUsIG91dHB1dE5hbWUpOwotCi0gICAgICAgIC8vT3BlcmF0aW9uIG9wID0gbnVsbDsKLSAgICAgICAgTGlzdCBvcGVyYXRpb25zID0gcG9ydFR5cGUuZ2V0T3BlcmF0aW9ucygpOwotICAgICAgICBpZiAob3BlcmF0aW9ucyAhPSBudWxsKQotICAgICAgICB7Ci0KLSAgICAgICAgICBJdGVyYXRvciBpT3BlcmF0aW9ucyA9IG9wZXJhdGlvbnMuaXRlcmF0b3IoKTsKLSAgICAgICAgICB3aGlsZSAoaU9wZXJhdGlvbnMuaGFzTmV4dCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGJvb2xlYW4gaW5wdXROYW1lc0VxdWFsID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sZWFuIG91dHB1dE5hbWVzRXF1YWwgPSBmYWxzZTsKLSAgICAgICAgICAgIE9wZXJhdGlvbiBvcGVyID0gKE9wZXJhdGlvbilpT3BlcmF0aW9ucy5uZXh0KCk7Ci0gICAgICAgICAgICBpZiAob3Blci5nZXROYW1lKCkuZXF1YWxzKG5hbWUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBJbnB1dCBvcElucHV0ID0gb3Blci5nZXRJbnB1dCgpOwotICAgICAgICAgICAgICBpZiAob3BJbnB1dCAhPSBudWxsICYmIGlucHV0ICE9IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgb3BJbnB1dE5hbWUgPSBvcElucHV0LmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgICBpZiAob3BJbnB1dE5hbWUgIT0gbnVsbCAmJiBpbnB1dE5hbWUgIT0gbnVsbCAmJiBvcElucHV0TmFtZS5lcXVhbHMoaW5wdXROYW1lKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpbnB1dE5hbWVzRXF1YWwgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChvcElucHV0TmFtZSA9PSBudWxsICYmIGlucHV0TmFtZSA9PSBudWxsKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlucHV0TmFtZXNFcXVhbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgaWYgKG9wSW5wdXQgPT0gbnVsbCAmJiBpbnB1dCA9PSBudWxsKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW5wdXROYW1lc0VxdWFsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBPdXRwdXQgb3BPdXRwdXQgPSBvcGVyLmdldE91dHB1dCgpOwotICAgICAgICAgICAgICBpZiAob3BPdXRwdXQgIT0gbnVsbCAmJiBvdXRwdXQgIT0gbnVsbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFN0cmluZyBvcE91dHB1dE5hbWUgPSBvcE91dHB1dC5nZXROYW1lKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wT3V0cHV0TmFtZSAhPSBudWxsICYmIG91dHB1dE5hbWUgIT0gbnVsbCAmJiBvcE91dHB1dE5hbWUuZXF1YWxzKG91dHB1dE5hbWUpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIG91dHB1dE5hbWVzRXF1YWwgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChvcE91dHB1dE5hbWUgPT0gbnVsbCAmJiBvdXRwdXROYW1lID09IG51bGwpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgb3V0cHV0TmFtZXNFcXVhbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgaWYgKG9wT3V0cHV0ID09IG51bGwgJiYgb3V0cHV0ID09IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXROYW1lc0VxdWFsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBpZiAoaW5wdXROYW1lc0VxdWFsICYmIG91dHB1dE5hbWVzRXF1YWwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvcCA9IG9wZXI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgb3BEZWZpbmVkID0gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgaWYgKG9wICE9IG51bGwgLyomJiAhb3AuaXNVbmRlZmluZWQoKSovCi0gICAgICAgICkKLSAgICAgIHsKLSAgICAgICAgLy9vcCA9IG51bGw7Ci0gICAgICAgIG9wRGVmaW5lZCA9IHRydWU7Ci0KLSAgICAgIH0KLQotICAgICAgaWYgKG9wICE9IG51bGwgJiYgIW9wRGVmaW5lZCkKLSAgICAgIHsKLSAgICAgICAgaWYgKGlucHV0TmFtZSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgSW5wdXQgdGVtcEluID0gb3AuZ2V0SW5wdXQoKTsKLQotICAgICAgICAgIGlmICh0ZW1wSW4gIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGVtcEluLmdldE5hbWUoKSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvL29wID0gbnVsbDsKLSAgICAgICAgICAgICAgb3BEZWZpbmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKG9wICE9IG51bGwgJiYgIW9wRGVmaW5lZCkKLSAgICAgIHsKLSAgICAgICAgaWYgKG91dHB1dE5hbWUgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIE91dHB1dCB0ZW1wT3V0ID0gb3AuZ2V0T3V0cHV0KCk7Ci0KLSAgICAgICAgICBpZiAodGVtcE91dCAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0ZW1wT3V0LmdldE5hbWUoKSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvL29wID0gbnVsbDsKLSAgICAgICAgICAgICAgb3BEZWZpbmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKG9wRGVmaW5lZCkKLSAgICAgIHsKLSAgICAgICAgLy8gaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUgd2l0aCB0aGUgc2FtZSBuYW1lIHdlJ3JlIGdvaW5nIHRvIHJldHVybiBudWxsLgotICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIFdTREwgMS4yIHdvcmtpbmcgZHJhZnQgb3BlcmF0aW9uIG92ZXJsb2FkaW5nIGlzIG5vIGxvbmdlciBhbGxvd2VkLgotICAgICAgICAvLyBHb2luZyB0byB1c2UgdGhhdCBoZXJlIHRvIHNhdmUgYSBsb3Qgb2Ygd29yawotICAgICAgICBzZXRMb2NhdGlvbihvcCwgb3BFbCk7Ci0gICAgICAgIGFkZFJlYWRlckVycm9yKAotICAgICAgICAgIHBvcnRUeXBlLAotICAgICAgICAgIG9wLAotICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKAotICAgICAgICAgICAgIl9EVVBMSUNBVEVfT1BFUkFUSU9OX0ZPUl9QT1JUVFlQRSIsCi0gICAgICAgICAgICAiJyIgKyBvcC5nZXROYW1lKCkgKyAiJyIsCi0gICAgICAgICAgICAiJyIgKyBwb3J0VHlwZS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpICsgIiciKSk7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgICAgfQotICAgICAgaWYgKG9wID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIG9wID0gZGVmLmNyZWF0ZU9wZXJhdGlvbigpOwotICAgICAgICBvcC5zZXROYW1lKG5hbWUpOwotCi0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBvcCA9IGRlZi5jcmVhdGVPcGVyYXRpb24oKTsKLSAgICB9Ci0KLSAgICAvLyBXaGV0aGVyIGl0IHdhcyByZXRyaWV2ZWQgb3IgY3JlYXRlZCwgdGhlIGRlZmluaXRpb24gaGFzIGJlZW4gZm91bmQuCi0gICAgb3Auc2V0VW5kZWZpbmVkKGZhbHNlKTsKLQotICAgIGlmIChwYXJhbWV0ZXJPcmRlclN0ciAhPSBudWxsKQotICAgIHsKLSAgICAgIG9wLnNldFBhcmFtZXRlck9yZGVyaW5nKFN0cmluZ1V0aWxzLnBhcnNlTk1Ub2tlbnMocGFyYW1ldGVyT3JkZXJTdHIpKTsKLSAgICB9Ci0KLSAgICBpZiAoZG9jRWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBvcC5zZXREb2N1bWVudGF0aW9uRWxlbWVudChkb2NFbCk7Ci0gICAgfQotCi0gICAgaWYgKGlucHV0ICE9IG51bGwpCi0gICAgewotICAgICAgb3Auc2V0SW5wdXQoaW5wdXQpOwotICAgIH0KLQotICAgIGlmIChvdXRwdXQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBvcC5zZXRPdXRwdXQob3V0cHV0KTsKLSAgICB9Ci0KLSAgICBpZiAoZmF1bHRzLnNpemUoKSA+IDApCi0gICAgewotICAgICAgSXRlcmF0b3IgZmF1bHRJdGVyYXRvciA9IGZhdWx0cy5pdGVyYXRvcigpOwotCi0gICAgICB3aGlsZSAoZmF1bHRJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIEZhdWx0IGYgPSAoRmF1bHQpZmF1bHRJdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgIC8vIGlmIHRoZSBmYXVsdCBpc24ndCBkZWZpbmVkIHlldAotICAgICAgICBpZiAob3AuZ2V0RmF1bHQoZi5nZXROYW1lKCkpID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBvcC5hZGRGYXVsdChmKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBhZGRSZWFkZXJFcnJvcigKLSAgICAgICAgICAgIG9wLAotICAgICAgICAgICAgZiwKLSAgICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKCJfRFVQTElDQVRFX0ZBVUxUX05BTUUiLCAiJyIgKyBmLmdldE5hbWUoKSArICInIiwgIiciICsgb3AuZ2V0TmFtZSgpICsgIiciKSk7Ci0gICAgICAgICAgLy9mYXVsdEVycm9ycy5hZGQobmV3IE9iamVjdFtde2YsIkR1cGxpY2F0ZSBOYW1lIixvcH0pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChleHRFbGVtZW50cy5zaXplKCkgPiAwKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGV4dEVsZW1lbnRzSXRlcmF0b3IgPSBleHRFbGVtZW50cy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGV4dEVsZW1lbnRzSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICAgIG9wLmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KChFeHRlbnNpYmlsaXR5RWxlbWVudClleHRFbGVtZW50c0l0ZXJhdG9yLm5leHQoKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgT3BlcmF0aW9uVHlwZSBzdHlsZSA9IG51bGw7Ci0KLSAgICBpZiAobWVzc2FnZU9yZGVyLmVxdWFscyhTVFlMRV9PTkVfV0FZKSkKLSAgICB7Ci0gICAgICBzdHlsZSA9IE9wZXJhdGlvblR5cGUuT05FX1dBWTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobWVzc2FnZU9yZGVyLmVxdWFscyhTVFlMRV9SRVFVRVNUX1JFU1BPTlNFKSkKLSAgICB7Ci0gICAgICBzdHlsZSA9IE9wZXJhdGlvblR5cGUuUkVRVUVTVF9SRVNQT05TRTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobWVzc2FnZU9yZGVyLmVxdWFscyhTVFlMRV9TT0xJQ0lUX1JFU1BPTlNFKSkKLSAgICB7Ci0gICAgICBzdHlsZSA9IE9wZXJhdGlvblR5cGUuU09MSUNJVF9SRVNQT05TRTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobWVzc2FnZU9yZGVyLmVxdWFscyhTVFlMRV9OT1RJRklDQVRJT04pKQotICAgIHsKLSAgICAgIHN0eWxlID0gT3BlcmF0aW9uVHlwZS5OT1RJRklDQVRJT047Ci0gICAgfQotCi0gICAgaWYgKHN0eWxlICE9IG51bGwpCi0gICAgewotICAgICAgb3Auc2V0U3R5bGUoc3R5bGUpOwotICAgIH0KLQotICAgIC8vIGFkZCB0aGUgbG9jYXRpb24gb2YgdGhpcyBlbGVtZW50IHRvIGVsZW1lbnRMb2NhdGlvbnMgCi0gICAgc2V0TG9jYXRpb24ob3AsIG9wRWwpOwotCi0gICAgLy8gbW9kaWZpZWQgdG8gcmVtb3ZlIGR1cGxpY2F0ZSBvcGVyYXRpb25zCi0gICAgLy8gICAgaWYob3BEZWZpbmVkKQotICAgIC8vICAgIHsKLSAgICAvLyAgICAgIGFkZFJlYWRlckVycm9yKHBvcnRUeXBlLG9wLFZhbGlkYXRlV1NETFBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFN0cmluZygiX0RVUExJQ0FURV9PUEVSQVRJT05fRk9SX1BPUlRUWVBFIiwiJyIrb3AuZ2V0TmFtZSgpKyInIiwiJyIrcG9ydFR5cGUuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSsiJyIpKTsKLSAgICAvLyAgICAgIHJldHVybiBudWxsOwotICAgIC8vICAgIH0KLSAgICByZXR1cm4gb3A7Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2UgYSBzcGVjaWZpYyBzZXJ2aWNlIGVsZW1lbnQuCi0gICAqIAotICAgKiBAcGFyYW0gc2VydmljZUVsIFRoZSBzZXJ2aWNlIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBkZWYgVGhlIGRlZmludGlvbnMgZWxlbWVudC4KLSAgICogQHJldHVybiBBIFdTREwgc2VydmljZSBlbGVtZW50LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBTZXJ2aWNlIHBhcnNlU2VydmljZShFbGVtZW50IHNlcnZpY2VFbCwgRGVmaW5pdGlvbiBkZWYpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBTZXJ2aWNlIHNlcnZpY2UgPSBkZWYuY3JlYXRlU2VydmljZSgpOwotICAgIFN0cmluZyBuYW1lID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKHNlcnZpY2VFbCwgQ29uc3RhbnRzLkFUVFJfTkFNRSk7Ci0KLSAgICBpZiAobmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIHNlcnZpY2Uuc2V0UU5hbWUobmV3IFFOYW1lKGRlZi5nZXRUYXJnZXROYW1lc3BhY2UoKSwgbmFtZSkpOwotICAgIH0KLSAgICBTZXJ2aWNlIHM7Ci0gICAgLy8gYSBzZXJ2aWNlIHdpdGggdGhpcyBuYW1lIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZAotICAgIGlmICgocyA9IGRlZi5nZXRTZXJ2aWNlKHNlcnZpY2UuZ2V0UU5hbWUoKSkpICE9IG51bGwpCi0gICAgewotICAgICAgYWRkUmVhZGVyRXJyb3IoCi0gICAgICAgIGRlZiwKLSAgICAgICAgc2VydmljZUVsLAotICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygiX1NFUlZJQ0VfTkFNRV9BTFJFQURZX0RFRklORUQiLCAiJyIgKyBzLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCkgKyAiJyIpKTsKLSAgICAgIHJldHVybiBzOwotICAgIH0KLSAgICBFbGVtZW50IHRlbXBFbCA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KHNlcnZpY2VFbCk7Ci0KLSAgICB3aGlsZSAodGVtcEVsICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX0RPQ1VNRU5UQVRJT04sIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIHNlcnZpY2Uuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQodGVtcEVsKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX1BPUlQsIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIHNlcnZpY2UuYWRkUG9ydChwYXJzZVBvcnQodGVtcEVsLCBkZWYpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgc2VydmljZS5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChwYXJzZUV4dGVuc2liaWxpdHlFbGVtZW50KFNlcnZpY2UuY2xhc3MsIHRlbXBFbCwgZGVmKSk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBFbCA9IERPTVV0aWxzLmdldE5leHRTaWJsaW5nRWxlbWVudCh0ZW1wRWwpOwotICAgIH0KLQotICAgIC8vIGFkZCB0aGUgbG9jYXRpb24gb2YgdGhpcyBlbGVtZW50IHRvIGVsZW1lbnRMb2NhdGlvbnMgCi0gICAgc2V0TG9jYXRpb24oc2VydmljZSwgc2VydmljZUVsKTsKLQotICAgIHJldHVybiBzZXJ2aWNlOwotICB9Ci0gIAotICAvKioKLSAgICogUGFyc2UgYSBzcGVjaWZpYyBwb3J0IGVsZW1lbnQuCi0gICAqIAotICAgKiBAcGFyYW0gcG9ydEVsIFRoZSBwb3J0IGVsZW1lbnQuCi0gICAqIEBwYXJhbSBkZWYgVGhlIGRlZmluaXRpb25zIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gQSBXU0RMIHBvcnQgZWxlbWVudC4KLSAgICogQHRocm93cyBXU0RMRXhjZXB0aW9uCi0gICAqLwotICBwcm90ZWN0ZWQgUG9ydCBwYXJzZVBvcnQoRWxlbWVudCBwb3J0RWwsIERlZmluaXRpb24gZGVmKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgUG9ydCBwb3J0ID0gZGVmLmNyZWF0ZVBvcnQoKTsKLSAgICBTdHJpbmcgbmFtZSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZShwb3J0RWwsIENvbnN0YW50cy5BVFRSX05BTUUpOwotICAgIFFOYW1lIGJpbmRpbmdTdHI7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgYmluZGluZ1N0ciA9IERPTVV0aWxzLmdldFF1YWxpZmllZEF0dHJpYnV0ZVZhbHVlKHBvcnRFbCwgQ29uc3RhbnRzLkFUVFJfQklORElORywgQ29uc3RhbnRzLkVMRU1fUE9SVCwgZmFsc2UsIGRlZik7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvL3RoZSBjYWxsIGFib3ZlIGZhaWxzIGlmIHRoZXJlIGlzIG5vIHF1YWxpZmllZCBuYW1lc3BhY2UgZm9yIHRoZSBtZXNzYWdlIG5hbWUKLSAgICAgIGJpbmRpbmdTdHIgPSBuZXcgUU5hbWUobnVsbCwgRE9NVXRpbHMuZ2V0QXR0cmlidXRlKHBvcnRFbCwgImJpbmRpbmciKSk7Ci0gICAgfQotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwb3J0LnNldE5hbWUobmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKGJpbmRpbmdTdHIgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSBkZWYuZ2V0QmluZGluZyhiaW5kaW5nU3RyKTsKLQotICAgICAgaWYgKGJpbmRpbmcgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgYmluZGluZyA9IGRlZi5jcmVhdGVCaW5kaW5nKCk7Ci0gICAgICAgIGJpbmRpbmcuc2V0UU5hbWUoYmluZGluZ1N0cik7Ci0gICAgICAgIGRlZi5hZGRCaW5kaW5nKGJpbmRpbmcpOwotICAgICAgfQotCi0gICAgICBwb3J0LnNldEJpbmRpbmcoYmluZGluZyk7Ci0gICAgfQotCi0gICAgRWxlbWVudCB0ZW1wRWwgPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChwb3J0RWwpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBwb3J0LnNldERvY3VtZW50YXRpb25FbGVtZW50KHRlbXBFbCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHBvcnQuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQocGFyc2VFeHRlbnNpYmlsaXR5RWxlbWVudChQb3J0LmNsYXNzLCB0ZW1wRWwsIGRlZikpOwotICAgICAgfQotCi0gICAgICB0ZW1wRWwgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodGVtcEVsKTsKLSAgICB9Ci0KLSAgICAvLyBhZGQgdGhlIGxvY2F0aW9uIG9mIHRoaXMgZWxlbWVudCB0byBlbGVtZW50TG9jYXRpb25zIAotICAgIHNldExvY2F0aW9uKHBvcnQsIHBvcnRFbCk7Ci0KLSAgICByZXR1cm4gcG9ydDsKLSAgfQotCi0gIC8qKgotICAgKiBQYXJzZSBhIHNwZWNpZmljIGV4dGVuc2liaWxpdHkgZWxlbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSBwYXJlbnRUeXBlIFRoZSBwYXJlbnQgdHlwZSBvZiB0aGUgZXh0ZW5zaWJpbGl0eSBlbGVtZW50LgotICAgKiBAcGFyYW0gZWwgVGhlIGV4dGVuc2liaWxpdHkgZWxlbWVudC4KLSAgICogQHBhcmFtIGRlZiBUaGUgZGVmaW5pdGlvbnMgZWxlbWVudC4KLSAgICogQHJldHVybiBBIFdTREwgZXh0ZW5zaWJpbGl0eSBlbGVtZW50LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBFeHRlbnNpYmlsaXR5RWxlbWVudCBwYXJzZUV4dGVuc2liaWxpdHlFbGVtZW50KENsYXNzIHBhcmVudFR5cGUsIEVsZW1lbnQgZWwsIERlZmluaXRpb24gZGVmKQotICAgIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBRTmFtZSBlbGVtZW50VHlwZSA9IFFOYW1lVXRpbHMubmV3UU5hbWUoZWwpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgRXh0ZW5zaW9uUmVnaXN0cnkgZXh0UmVnID0gZGVmLmdldEV4dGVuc2lvblJlZ2lzdHJ5KCk7Ci0KLSAgICAgIGlmIChleHRSZWcgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IFdTRExFeGNlcHRpb24oCi0gICAgICAgICAgV1NETEV4Y2VwdGlvbi5DT05GSUdVUkFUSU9OX0VSUk9SLAotICAgICAgICAgICJObyBFeHRlbnNpb25SZWdpc3RyeSBzZXQgZm9yIHRoaXMgIgotICAgICAgICAgICAgKyAiRGVmaW5pdGlvbiwgc28gdW5hYmxlIHRvIGRlc2VyaWFsaXplICIKLSAgICAgICAgICAgICsgImEgJyIKLSAgICAgICAgICAgICsgZWxlbWVudFR5cGUKLSAgICAgICAgICAgICsgIicgZWxlbWVudCBpbiB0aGUgIgotICAgICAgICAgICAgKyAiY29udGV4dCBvZiBhICciCi0gICAgICAgICAgICArIHBhcmVudFR5cGUuZ2V0TmFtZSgpCi0gICAgICAgICAgICArICInLiIpOwotICAgICAgfQotCi0gICAgICBFeHRlbnNpb25EZXNlcmlhbGl6ZXIgZXh0RFMgPSBleHRSZWcucXVlcnlEZXNlcmlhbGl6ZXIocGFyZW50VHlwZSwgZWxlbWVudFR5cGUpOwotCi0gICAgICAvLyBhc2lnbiB0aGUgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgdG8gYSB2YXIgc28gd2UgY2FuIGFkZCBpdCB0byB0aGUgbG9jYXRpb25zCi0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtID0gZXh0RFMudW5tYXJzaGFsbChwYXJlbnRUeXBlLCBlbGVtZW50VHlwZSwgZWwsIGRlZiwgZXh0UmVnKTsKLSAgICAgIC8vIGFkZCB0aGUgbG9jYXRpb24gb2YgdGhpcyBlbGVtZW50IHRvIGVsZW1lbnRMb2NhdGlvbnMgCi0gICAgICAvLyB0aGlzIG1pZ2h0IG5vdCB3b3JrIHByb3Blcmx5Ci0gICAgICBzZXRMb2NhdGlvbihleHRFbGVtLCBlbCk7Ci0KLSAgICAgIC8vIHJlZ2lzdGVyIGFsbCBvZiB0aGUgY2hpbGQgRWxlbWVudHMgc28gd2UgY2FuIGZpbmQgdGhlbSBsYXRlcgotICAgICAgLy8gdXNlZCBmb3IgaW5saW5lIHNjaGVtYSB2YWxpZGF0aW9uCi0gICAgICByZWdpc3RlckNoaWxkRWxlbWVudHMoZXh0RWxlbSk7Ci0KLSAgICAgIHJldHVybiBleHRFbGVtOwotICAgIH0KLSAgICBjYXRjaCAoV1NETEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGlmIChlLmdldExvY2F0aW9uKCkgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZS5zZXRMb2NhdGlvbihYUGF0aFV0aWxzLmdldFhQYXRoRXhwckZyb21Ob2RlKGVsKSk7Ci0gICAgICB9Ci0gICAgICB0aHJvdyBlOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBQYXJzZSBhIHNwZWNpZmljIGlucHV0IGVsZW1lbnQuCi0gICAqIAotICAgKiBAcGFyYW0gaW5wdXRFbCBUaGUgaW5wdXQgZWxlbWVudC4KLSAgICogQHBhcmFtIGRlZiBUaGUgZGVmaW50aW9ucyBlbGVtZW50LgotICAgKiBAcmV0dXJuIEEgV1NETCBpbnB1dCBlbGVtZW50LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBJbnB1dCBwYXJzZUlucHV0KEVsZW1lbnQgaW5wdXRFbCwgRGVmaW5pdGlvbiBkZWYpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLQotICAgIElucHV0IGlucHV0ID0gZGVmLmNyZWF0ZUlucHV0KCk7Ci0gICAgU3RyaW5nIG5hbWUgPSBET01VdGlscy5nZXRBdHRyaWJ1dGUoaW5wdXRFbCwgQ29uc3RhbnRzLkFUVFJfTkFNRSk7Ci0gICAgUU5hbWUgbWVzc2FnZU5hbWUgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIG1lc3NhZ2VOYW1lID0gRE9NVXRpbHMuZ2V0UXVhbGlmaWVkQXR0cmlidXRlVmFsdWUoaW5wdXRFbCwgQ29uc3RhbnRzLkFUVFJfTUVTU0FHRSwgQ29uc3RhbnRzLkVMRU1fSU5QVVQsIGZhbHNlLCBkZWYpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy90aGUgY2FsbCBhYm92ZSBmYWlscyBpZiB0aGVyZSBpcyBubyBxdWFsaWZpZWQgbmFtZXNwYWNlIGZvciB0aGUgbWVzc2FnZSBuYW1lCi0gICAgICBtZXNzYWdlTmFtZSA9IG5ldyBRTmFtZShudWxsLCBET01VdGlscy5nZXRBdHRyaWJ1dGUoaW5wdXRFbCwgIm1lc3NhZ2UiKSk7Ci0gICAgfQotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpbnB1dC5zZXROYW1lKG5hbWUpOwotICAgIH0KLQotICAgIGlmIChtZXNzYWdlTmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIE1lc3NhZ2UgbWVzc2FnZSA9IGRlZi5nZXRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKLQotICAgICAgaWYgKG1lc3NhZ2UgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZSA9IGRlZi5jcmVhdGVNZXNzYWdlKCk7Ci0gICAgICAgIG1lc3NhZ2Uuc2V0UU5hbWUobWVzc2FnZU5hbWUpOwotICAgICAgICBkZWYuYWRkTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgIH0KLQotICAgICAgaW5wdXQuc2V0TWVzc2FnZShtZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBFbGVtZW50IHRlbXBFbCA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KGlucHV0RWwpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBpbnB1dC5zZXREb2N1bWVudGF0aW9uRWxlbWVudCh0ZW1wRWwpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBYTUwgVmFsaWRhdGlvbiB3aWxsIGNhdGNoIHRoaXMKLSAgICAgICAgRE9NVXRpbHMudGhyb3dXU0RMRXhjZXB0aW9uKHRlbXBFbCk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBFbCA9IERPTVV0aWxzLmdldE5leHRTaWJsaW5nRWxlbWVudCh0ZW1wRWwpOwotICAgIH0KLQotICAgIC8vIGFkZCB0aGUgbG9jYXRpb24gb2YgdGhpcyBlbGVtZW50IHRvIGVsZW1lbnRMb2NhdGlvbnMgCi0gICAgc2V0TG9jYXRpb24oaW5wdXQsIGlucHV0RWwpOwotCi0gICAgcmV0dXJuIGlucHV0OwotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIGEgc3BlY2lmaWMgb3V0cHV0IGVsZW1lbnQuCi0gICAqIAotICAgKiBAcGFyYW0gb3V0cHV0RWwgVGhlIG91dHB1dCBlbGVtZW50LgotICAgKiBAcGFyYW0gZGVmIFRoZSBkZWZpbnRpb25zIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gQSBXU0RMIG91dHB1dCBlbGVtZW50LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBPdXRwdXQgcGFyc2VPdXRwdXQoRWxlbWVudCBvdXRwdXRFbCwgRGVmaW5pdGlvbiBkZWYpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBPdXRwdXQgb3V0cHV0ID0gZGVmLmNyZWF0ZU91dHB1dCgpOwotICAgIFN0cmluZyBuYW1lID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKG91dHB1dEVsLCBDb25zdGFudHMuQVRUUl9OQU1FKTsKLSAgICBRTmFtZSBtZXNzYWdlTmFtZSA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgbWVzc2FnZU5hbWUgPSBET01VdGlscy5nZXRRdWFsaWZpZWRBdHRyaWJ1dGVWYWx1ZShvdXRwdXRFbCwgQ29uc3RhbnRzLkFUVFJfTUVTU0FHRSwgQ29uc3RhbnRzLkVMRU1fT1VUUFVULCBmYWxzZSwgZGVmKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vdGhlIGNhbGwgYWJvdmUgZmFpbHMgaWYgdGhlcmUgaXMgbm8gcXVhbGlmaWVkIG5hbWVzcGFjZSBmb3IgdGhlIG1lc3NhZ2UgbmFtZQotICAgICAgbWVzc2FnZU5hbWUgPSBuZXcgUU5hbWUobnVsbCwgRE9NVXRpbHMuZ2V0QXR0cmlidXRlKG91dHB1dEVsLCAibWVzc2FnZSIpKTsKLSAgICB9Ci0KLSAgICBpZiAobmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIG91dHB1dC5zZXROYW1lKG5hbWUpOwotICAgIH0KLQotICAgIGlmIChtZXNzYWdlTmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIE1lc3NhZ2UgbWVzc2FnZSA9IGRlZi5nZXRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKLQotICAgICAgaWYgKG1lc3NhZ2UgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZSA9IGRlZi5jcmVhdGVNZXNzYWdlKCk7Ci0gICAgICAgIG1lc3NhZ2Uuc2V0UU5hbWUobWVzc2FnZU5hbWUpOwotICAgICAgICBkZWYuYWRkTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgIH0KLQotICAgICAgb3V0cHV0LnNldE1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgfQotCi0gICAgRWxlbWVudCB0ZW1wRWwgPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChvdXRwdXRFbCk7Ci0KLSAgICB3aGlsZSAodGVtcEVsICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX0RPQ1VNRU5UQVRJT04sIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIG91dHB1dC5zZXREb2N1bWVudGF0aW9uRWxlbWVudCh0ZW1wRWwpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBYTUwgVmFsaWRhdGlvbiB3aWxsIGNhdGNoIHRoaXMKLSAgICAgICAgRE9NVXRpbHMudGhyb3dXU0RMRXhjZXB0aW9uKHRlbXBFbCk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBFbCA9IERPTVV0aWxzLmdldE5leHRTaWJsaW5nRWxlbWVudCh0ZW1wRWwpOwotICAgIH0KLQotICAgIC8vIGFkZCB0aGUgbG9jYXRpb24gb2YgdGhpcyBlbGVtZW50IHRvIGVsZW1lbnRMb2NhdGlvbnMgCi0gICAgc2V0TG9jYXRpb24ob3V0cHV0LCBvdXRwdXRFbCk7Ci0KLSAgICByZXR1cm4gb3V0cHV0OwotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIGEgc3BlY2lmaWMgZmF1bHQgZWxlbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSBmYXVsdEVsIFRoZSBmYXVsdCBlbGVtZW50IHRvIHBhcnNlLgotICAgKiBAcGFyYW0gZGVmIFRoZSBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKiBAcmV0dXJuIEEgV1NETCBmYXVsdCBlbGVtZW50LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBGYXVsdCBwYXJzZUZhdWx0KEVsZW1lbnQgZmF1bHRFbCwgRGVmaW5pdGlvbiBkZWYpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBGYXVsdCBmYXVsdCA9IGRlZi5jcmVhdGVGYXVsdCgpOwotICAgIFN0cmluZyBuYW1lID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKGZhdWx0RWwsIENvbnN0YW50cy5BVFRSX05BTUUpOwotICAgIFFOYW1lIG1lc3NhZ2VOYW1lID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBtZXNzYWdlTmFtZSA9IERPTVV0aWxzLmdldFF1YWxpZmllZEF0dHJpYnV0ZVZhbHVlKGZhdWx0RWwsIENvbnN0YW50cy5BVFRSX01FU1NBR0UsIENvbnN0YW50cy5FTEVNX0lOUFVULCBmYWxzZSwgZGVmKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vdGhlIGNhbGwgYWJvdmUgZmFpbHMgaWYgdGhlcmUgaXMgbm8gcXVhbGlmaWVkIG5hbWVzcGFjZSBmb3IgdGhlIG1lc3NhZ2UgbmFtZQotICAgICAgbWVzc2FnZU5hbWUgPSBuZXcgUU5hbWUobnVsbCwgRE9NVXRpbHMuZ2V0QXR0cmlidXRlKGZhdWx0RWwsICJtZXNzYWdlIikpOwotICAgIH0KLQotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgewotICAgICAgZmF1bHQuc2V0TmFtZShuYW1lKTsKLSAgICB9Ci0KLSAgICBpZiAobWVzc2FnZU5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBNZXNzYWdlIG1lc3NhZ2UgPSBkZWYuZ2V0TWVzc2FnZShtZXNzYWdlTmFtZSk7Ci0KLSAgICAgIGlmIChtZXNzYWdlID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIG1lc3NhZ2UgPSBkZWYuY3JlYXRlTWVzc2FnZSgpOwotICAgICAgICBtZXNzYWdlLnNldFFOYW1lKG1lc3NhZ2VOYW1lKTsKLSAgICAgICAgZGVmLmFkZE1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICB9Ci0KLSAgICAgIGZhdWx0LnNldE1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgfQotCi0gICAgRWxlbWVudCB0ZW1wRWwgPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChmYXVsdEVsKTsKLQotICAgIHdoaWxlICh0ZW1wRWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKENvbnN0YW50cy5RX0VMRU1fRE9DVU1FTlRBVElPTiwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgZmF1bHQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQodGVtcEVsKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gWE1MIFZhbGlkYXRpb24gd2lsbCBjYXRjaCB0aGlzCi0gICAgICAgIERPTVV0aWxzLnRocm93V1NETEV4Y2VwdGlvbih0ZW1wRWwpOwotICAgICAgfQotCi0gICAgICB0ZW1wRWwgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodGVtcEVsKTsKLSAgICB9Ci0KLSAgICAvLyBhZGQgdGhlIGxvY2F0aW9uIG9mIHRoaXMgZWxlbWVudCB0byBlbGVtZW50TG9jYXRpb25zIAotICAgIHNldExvY2F0aW9uKGZhdWx0LCBmYXVsdEVsKTsKLQotICAgIHJldHVybiBmYXVsdDsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldCB0aGUgbWVzc2FnZWdlbmVyYXRvciBmb3IgdGhlIHJlYWRlci4KLSAgICogCi0gICAqIEBwYXJhbSBtZyBUaGUgbWVzc2FnZSBnZW5lcmF0b3IgdG8gc2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TWVzc2FnZUdlbmVyYXRvcihNZXNzYWdlR2VuZXJhdG9yIG1nKQotICB7Ci0gICAgbWVzc2FnZWdlbmVyYXRvciA9IG1nOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCB0aGUgcmVmT2JqZWN0IHRvIHRoZSBlbGVtZW50TG9jYXRpb24gaGFzaHRhYmxlIHdpdGggdGhlIGxvY2F0aW9uIGRlZmluZWQgaW4gZWxlbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSByZWZPYmplY3QgVGhlIG9iamVjdCB0byBhZGQuCi0gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIGxvY2F0aW9uIGluZm9ybWF0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgc2V0TG9jYXRpb24oT2JqZWN0IHJlZk9iamVjdCwgRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRWxlbWVudEltcGwgZWxlbWVudEltcGwgPSAoRWxlbWVudEltcGwpZWxlbWVudDsKLSAgICAgIEVsZW1lbnRMb2NhdGlvbiBlbGVtZW50TG9jYXRpb24gPSAoRWxlbWVudExvY2F0aW9uKWVsZW1lbnRJbXBsLmdldFVzZXJEYXRhKCk7Ci0gICAgICBpZiAoZWxlbWVudExvY2F0aW9uICE9IG51bGwpCi0gICAgICB7Ci0KLSAgICAgICAgZWxlbWVudExvY2F0aW9ucy5wdXQoCi0gICAgICAgICAgcmVmT2JqZWN0LAotICAgICAgICAgIG5ldyBMb2NhdGlvbkhvbGRlcihlbGVtZW50TG9jYXRpb24uZ2V0TGluZU51bWJlcigpLCBlbGVtZW50TG9jYXRpb24uZ2V0Q29sdW1uTnVtYmVyKCksIGRlZi5nZXREb2N1bWVudEJhc2VVUkkoKSkpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgfQotICAvKioKLSAgICogQWRkIGEgcmVhZGVyIGVycm9yIHRvIHRoZSBsaXN0LgotICAgKiAKLSAgICogQHBhcmFtIHBhcmVudG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiB0aGUgb2JqZWN0IHdpdGggdGhlIGVycm9yLgotICAgKiBAcGFyYW0gb2JqZWN0IFRoZSBvYmplY3Qgd2l0aCB0aGUgZXJyb3IuCi0gICAqIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgbWVzc2FnZS4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGFkZFJlYWRlckVycm9yKE9iamVjdCBwYXJlbnRvYmplY3QsIE9iamVjdCBvYmplY3QsIFN0cmluZyBlcnJvcikKLSAgewotICAgIHJlYWRlckVycm9ycy5hZGQobmV3IFJlYWRlckVycm9yKHBhcmVudG9iamVjdCwgb2JqZWN0LCBlcnJvcikpOwotICB9Ci0gIAotICAvKioKLSAgICogQWRkIGEgcmVhZGVyIHdhcm5pbmcgdG8gdGhlIGxpc3QuCi0gICAqIAotICAgKiBAcGFyYW0gcGFyZW50b2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIHRoZSBvYmplY3Qgd2l0aCB0aGUgZXJyb3IuCi0gICAqIEBwYXJhbSBvYmplY3QgVGhlIG9iamVjdCB3aXRoIHRoZSBlcnJvci4KLSAgICogQHBhcmFtIHdhcm5pbmcgVGhlIHdhcm5pbmcgbWVzc2FnZS4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGFkZFJlYWRlcldhcm5pbmcoT2JqZWN0IHBhcmVudG9iamVjdCwgT2JqZWN0IG9iamVjdCwgU3RyaW5nIHdhcm5pbmcpCi0gIHsKLSAgICByZWFkZXJXYXJuaW5ncy5hZGQobmV3IFJlYWRlckVycm9yKHBhcmVudG9iamVjdCwgb2JqZWN0LCB3YXJuaW5nKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZWdpc3RlciBhbGwgb2YgdGhlIGxvY2F0aW9ucyBvZiB0aGUgY2hpbGQgZWxlbWVudHMgb2YgdGhlIGV4dGVuc2liaWxpdHkKLSAgICogZWxlbWVudCBnaXZlbi4KLSAgICogCi0gICAqIEBwYXJhbSBleHRFbGVtIFRoZSBleHRlbnNpYmlsaXR5IGVsZW1lbnQgd2hvc2UgY2hpbGQgZWxlbWVudHMgd2lsbCBiZSByZWdpc3RlcmVkLgotICAgKi8KLQotICBwcm90ZWN0ZWQgdm9pZCByZWdpc3RlckNoaWxkRWxlbWVudHMoRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWxlbSkKLSAgewotICAgIC8vIG9ubHkgYWRkIHRob3NlIHRoYXQgYXJlIG9mIHR5cGUgdW5rbm93bi4gaWYgdGhleSdyZSBrbm93biB0aGV5IAotICAgIC8vIHdpbGwgdGFrZSBjYXJlIG9mIHRoZW1zZWx2ZXMKLSAgICBpZiAoZXh0RWxlbSBpbnN0YW5jZW9mIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgICB7Ci0gICAgICBFbGVtZW50IGVsZW0gPSAoKFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudClleHRFbGVtKS5nZXRFbGVtZW50KCk7Ci0gICAgICByZWdpc3RlckNoaWxkRWxlbWVudHNSZWN1cnNpdmVseShlbGVtKTsKLSAgICB9IGVsc2UgaWYgKGV4dEVsZW0gaW5zdGFuY2VvZiBTY2hlbWEpCi0gICAgewotICAgICAgICBFbGVtZW50IGVsZW0gPSAoKFNjaGVtYSlleHRFbGVtKS5nZXRFbGVtZW50KCk7Ci0gICAgICAgIHJlZ2lzdGVyQ2hpbGRFbGVtZW50c1JlY3Vyc2l2ZWx5KGVsZW0pOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBSZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgYWxsIG9mIHRoZSBjaGlsZCBlbGVtZW50cyBvZiBlbGVtLgotICAgKiAKLSAgICogQHBhcmFtIGVsZW0gVGhlIGVsZW1lbnQgd2hvc2UgY2hpbGQgZWxlbWVudHMgd2lsbCBiZSByZWdpc3RlcmVkLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgcmVnaXN0ZXJDaGlsZEVsZW1lbnRzUmVjdXJzaXZlbHkoRWxlbWVudCBlbGVtKQotICB7Ci0gICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBFbGVtZW50TlNJbXBsKQotICAgIHsKLSAgICAgIHNldExvY2F0aW9uKGVsZW0sIGVsZW0pOwotCi0gICAgICAvLyBjYWxsIHRoZSBtZXRob2QgcmVjdXJzaXZlbHkgZm9yIGVhY2ggY2hpbGQgZWxlbWVudAotICAgICAgTm9kZUxpc3QgY2hpbGROb2RlcyA9IGVsZW0uZ2V0Q2hpbGROb2RlcygpOwotCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkTm9kZXMuZ2V0TGVuZ3RoKCkgfHwgaSA8IDU7IGkrKykKLSAgICAgIHsKLSAgICAgICAgTm9kZSBuID0gY2hpbGROb2Rlcy5pdGVtKGkpOwotICAgICAgICAvLyB3ZSBvbmx5IHdhbnQgbm9kZXMgdGhhdCBhcmUgRWxlbWVudHMKLSAgICAgICAgaWYgKG4gaW5zdGFuY2VvZiBFbGVtZW50KQotICAgICAgICB7Ci0gICAgICAgICAgRWxlbWVudCBjaGlsZCA9IChFbGVtZW50KW47Ci0gICAgICAgICAgcmVnaXN0ZXJDaGlsZEVsZW1lbnRzUmVjdXJzaXZlbHkoY2hpbGQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIC8qKgotICAgKiBDaGVjayB0aGF0IGFuIGVsZW1lbnQgbmFtZSBtYXRjaGVzIHRoZSBleHBlY3RlZCBuYW1lLgotICAgKiAKLSAgICogQHBhcmFtIGVsIFRoZSBlbGVtZW50IHdpdGggdGhlIG5hbWUgdG8gY2hlY2suCi0gICAqIEBwYXJhbSBxbmFtZSBUaGUgbmFtZSB0byBjaGVjayBhZ2FpbnN0LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIHZvaWQgY2hlY2tFbGVtZW50TmFtZShFbGVtZW50IGVsLCBRTmFtZSBxbmFtZSkgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIGlmICghUU5hbWVVdGlscy5tYXRjaGVzKHFuYW1lLCBlbCkpCi0gICAgewotICAgICAgV1NETEV4Y2VwdGlvbiB3c2RsRXhjID0gbmV3IFdTRExFeGNlcHRpb24oV1NETEV4Y2VwdGlvbi5JTlZBTElEX1dTREwsICJFeHBlY3RlZCBlbGVtZW50ICciICsgcW5hbWUgKyAiJy4iKTsKLQotICAgICAgd3NkbEV4Yy5zZXRMb2NhdGlvbihYUGF0aFV0aWxzLmdldFhQYXRoRXhwckZyb21Ob2RlKGVsKSk7Ci0KLSAgICAgIHRocm93IHdzZGxFeGM7Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBlbGVtZW50IGxvY2F0aW9ucyBoYXNodGFibGUuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBlbGVtZW50IGxvY2F0aW9ucyBoYXNodGFibGUuCi0gICAqLwotICBwdWJsaWMgSGFzaHRhYmxlIGdldEVsZW1lbnRMb2NhdGlvbnMoKQotICB7Ci0gICAgcmV0dXJuIGVsZW1lbnRMb2NhdGlvbnM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIHJlYWRlciBlcnJvcnMuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSByZWFkZXIgZXJyb3JzLgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0UmVhZGVyRXJyb3JzKCkKLSAgewotICAgIHJldHVybiByZWFkZXJFcnJvcnM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgcmVhZGVyIHdhcm5pbmdzLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgcmVhZGVyIHdhcm5pbmdzLgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0UmVhZGVyV2FybmluZ3MoKQotICB7Ci0gICAgcmV0dXJuIHJlYWRlcldhcm5pbmdzOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9XU0RMUmVhZGVySW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9XU0RMUmVhZGVySW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTcwNzJmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvV1NETFJlYWRlckltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTE7Ci0KLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZhLnV0aWwuU29ydGVkU2V0OwotaW1wb3J0IGphdmEudXRpbC5UcmVlU2V0OwotCi1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMuaW1wbC5YTUxFcnJvclJlcG9ydGVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnBhcnNlcnMuRE9NUGFyc2VyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnBhcnNlcnMuU3RhbmRhcmRQYXJzZXJDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51dGlsLk1lc3NhZ2VHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWwuTGluZU51bWJlckRPTVBhcnNlcjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy54bWwuc2F4LkVycm9ySGFuZGxlcjsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb247Ci0KLWltcG9ydCBjb20uaWJtLndzZGwuRGVmaW5pdGlvbkltcGw7Ci1pbXBvcnQgY29tLmlibS53c2RsLnV0aWwuU3RyaW5nVXRpbHM7Ci0KLS8qKgotICogQSBXU0RMIHJlYWRlciB0aGF0IHN1cHBvcnRzIGN5Y2xpYyBXU0RMIGltcG9ydHMsIHNjaGVtYSBpbXBvcnRzIGFuZCBpbmxpbmUgc2NoZW1hcy4KLSAqIFRoaXMgcmVhZGVyIGlzIGJhc2VkIG9uIHRoZSBXU0RMUmVhZGVySW1wbCBmcm9tIFdTREw0Si4gCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMUmVhZGVySW1wbAotewotICBwcm90ZWN0ZWQgTWVzc2FnZUdlbmVyYXRvciBtZXNzYWdlZ2VuZXJhdG9yOwotICBwcm90ZWN0ZWQgSVdTREwxMVZhbGlkYXRpb25JbmZvIHdzZGx2YWxpbmZvOwotICAKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiAKLSAgICogQHBhcmFtIHdzZGx2YWxpbmZvIFRoZSBXU0RMIDEuMSB2YWxpZGF0aW9uIGluZm8gb2JqZWN0IHRvIHVzZS4KLSAgICovCi0gIHB1YmxpYyBXU0RMUmVhZGVySW1wbChJV1NETDExVmFsaWRhdGlvbkluZm8gd3NkbHZhbGluZm8pCi0gIHsKLSAgICB0aGlzLndzZGx2YWxpbmZvID0gd3NkbHZhbGluZm87Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBQYXJzZSB0aGUgcm9vdCBkb2N1bWVudC4gVGhpcyBtZXRob2Qgd2lsbCBmaW5kIGFsbCBpbXBvcnRzIGFuZCBwYXJzZSB0aGVtIGFzIAotICAgKiB3ZWxsIGNyZWF0aW5nIGEgV1NETERvY3VtZW50IGZvciBlYWNoIHVuaXF1ZSBXU0RMIGZpbGUuIFRoaXMgbWV0aG9kIHN1cHBvcnRzCi0gICAqIGN5Y2xpYyBXU0RMIGltcG9ydCBzdGF0ZW1lbnRzIHN1Y2ggdGhhdCBmaWxlIEEgY2FuIGltcG9ydCBmaWxlIEIgYW5kIGZpbGUgQgotICAgKiBjYW4gaW1wb3J0IGZpbGUgQS4KLSAgICogCi0gICAqIEBwYXJhbSBkb2N1bWVudEJhc2VVUkkgVGhlIGJhc2UgVVJJIG9mIHRoZSByb290IGRvY3VtZW50LgotICAgKiBAcGFyYW0gZGVmRWwgVGhlIGRlZmluaXRpb24gZWxlbWVudCBvZiB0aGUgcm9vdCBkb2N1bWVudC4KLSAgICogQHJldHVybiBBbiBhcnJheSBvZiBXU0RMRG9jdW1lbnRzIGNvbnRhaW5pbmcgYWxsIG9mIHRoZSB1bmlxdWUgZmlsZXMgaW4gdGhlIGRlc2NyaXB0aW9uLgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBXU0RMRG9jdW1lbnRbXSBwYXJzZURvY3VtZW50KFN0cmluZyBkb2N1bWVudEJhc2VVUkksIEVsZW1lbnQgZGVmRWwpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBpbnQgaW5pdGlhbEltcG9ydEFycmF5U2l6ZSA9IDIwOwotICAgIExpc3RbXSBmaWxlc0F0RGVwdGggPSBuZXcgQXJyYXlMaXN0W2luaXRpYWxJbXBvcnRBcnJheVNpemVdOwotICAgIE1hcCBmaWxlc0ltcG9ydGluZyA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBTb3J0ZWRTZXQgcGFyc2VkSW1wb3J0cyA9IG5ldyBUcmVlU2V0KCk7Ci0gICAgU29ydGVkU2V0IGltcG9ydHNUb1BhcnNlID0gbmV3IFRyZWVTZXQoKTsKLSAgICBpbnQgbWF4ZGVwdGggPSAwOwotCi0gICAgV1NETERvY3VtZW50IHJvb3Rkb2MgPSBuZXcgV1NETERvY3VtZW50KGRvY3VtZW50QmFzZVVSSSwgZGVmRWwsIDAsIG1lc3NhZ2VnZW5lcmF0b3IsIHdzZGx2YWxpbmZvKTsKLSAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gcm9vdGRvYy5nZXREZWZpbml0aW9uKCkuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0gICAgSW1wb3J0SG9sZGVyIHJvb3RJbXBvcnQgPSBuZXcgSW1wb3J0SG9sZGVyKHRhcmdldE5hbWVzcGFjZSwgZG9jdW1lbnRCYXNlVVJJLCBkb2N1bWVudEJhc2VVUkksIHJvb3Rkb2MsIDAsIG51bGwsIG1lc3NhZ2VnZW5lcmF0b3IsIHdzZGx2YWxpbmZvKTsKLSAgICByb290SW1wb3J0LmNyZWF0ZVdTRExJbXBvcnQocm9vdGRvYyk7Ci0gICAgcGFyc2VkSW1wb3J0cy5hZGQocm9vdEltcG9ydCk7Ci0gICAgTGlzdCByb290TGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBmaWxlc0ltcG9ydGluZy5wdXQocm9vdEltcG9ydC5nZXRMb2NhdGlvbigpLCBuZXcgQXJyYXlMaXN0KCkpOwotICAgIHJvb3RMaXN0LmFkZChyb290ZG9jKTsKLSAgICBmaWxlc0F0RGVwdGhbMF0gPSByb290TGlzdDsKLSAgICBpbXBvcnRzVG9QYXJzZS5hZGRBbGwocm9vdGRvYy5nZXRJbXBvcnRzKCkpOwotICAgIFNldCBpbXBzID0gcm9vdGRvYy5nZXRJbXBvcnRzKCk7Ci0gICAgSXRlcmF0b3IgaW1wSXRlciA9IGltcHMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZShpbXBJdGVyLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBJbXBvcnRIb2xkZXIgaW1wID0gKEltcG9ydEhvbGRlcilpbXBJdGVyLm5leHQoKTsKLSAgICAgIExpc3QgdGVtcExpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgICB0ZW1wTGlzdC5hZGQoaW1wLmdldEltcG9ydGluZ0RvY3VtZW50KCkpOwotICAgICAgZmlsZXNJbXBvcnRpbmcucHV0KGltcC5nZXRMb2NhdGlvbigpLCB0ZW1wTGlzdCk7Ci0gICAgfQotICAgIAotICAgIHdoaWxlKCFpbXBvcnRzVG9QYXJzZS5pc0VtcHR5KCkpCi0gICAgewotICAgICAgSW1wb3J0SG9sZGVyIGltcCA9IChJbXBvcnRIb2xkZXIpaW1wb3J0c1RvUGFyc2UuZmlyc3QoKTsKLSAgICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGluaXRpYWxpemUgdGhlIGltcG9ydCBoZXJlIHNvIGVhY2ggaW1wb3J0Ci0gICAgICAvLyBpcyBvbmx5IGNyZWF0ZWQgb25jZS4gSW4gdGhlIGNhc2Ugb2YgcmVjaXByaWNhbCBpbXBvcnRzIHRoaXMKLSAgICAgIC8vIGF2b2lkcyBhbiBpbmZpbml0ZSBsb29wLgotICAgICAgaW1wLmluaXRpYWxpemUoKTsKLSAgICAgIFdTRExEb2N1bWVudCBpbXBEb2MgPSBpbXAuZ2V0V1NETERvY3VtZW50KCk7Ci0gICAgICAKLSAgICAgIGltcG9ydHNUb1BhcnNlLnJlbW92ZShpbXApOwotICAgICAgCi0gICAgICBwYXJzZWRJbXBvcnRzLmFkZChpbXApOwotICAgICAgCi0gICAgICAvLyBBZGQgbmV3IGltcG9ydHMgdG8gdGhlIGxpc3Qgb2YgaW1wb3J0cyB0byBwYXJzZS4KLSAgICAgIC8vIFJlbW92ZSBhbGwgdGhlIGltcG9ydHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBwYXJzZWQuCi0gICAgICBpZihpbXBEb2MgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gSW5jcmVhdGUgaW1wb3J0IGFycmF5IGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgaWYoaW1wLmdldERlcHRoKCkgPj0gaW5pdGlhbEltcG9ydEFycmF5U2l6ZSkKLSAgICAgICAgewotICAgICAgICAgIExpc3RbXSB0ZW1wQXJyYXkgPSBuZXcgTGlzdFtmaWxlc0F0RGVwdGgubGVuZ3RoICsgaW5pdGlhbEltcG9ydEFycmF5U2l6ZV07Ci0gICAgICAgICAgU3lzdGVtLmFycmF5Y29weShmaWxlc0F0RGVwdGgsIDAsIHRlbXBBcnJheSwgMCwgZmlsZXNBdERlcHRoLmxlbmd0aCk7Ci0gICAgICAgICAgZmlsZXNBdERlcHRoID0gdGVtcEFycmF5OwotICAgICAgICB9Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgbGlzdCBmb3IgdGhlIGRlcHRoIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgaW50IGltcERlcHRoID0gaW1wLmdldERlcHRoKCk7Ci0gICAgICAgIGlmKGZpbGVzQXREZXB0aFtpbXBEZXB0aF0gPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlmKG1heGRlcHRoIDwgaW1wRGVwdGgpCi0gICAgICAgICAgewotICAgICAgICAgICAgbWF4ZGVwdGggPSBpbXBEZXB0aDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZmlsZXNBdERlcHRoW2ltcERlcHRoXSA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgfQotICAgICAgICBmaWxlc0F0RGVwdGhbaW1wLmdldERlcHRoKCldLmFkZChpbXBEb2MpOwotICAgICAgICAKLSAgICAgICAgU2V0IGltcG9ydHMgPSBpbXBEb2MuZ2V0SW1wb3J0cygpOwotICAgICAgICBJbXBvcnRIb2xkZXJbXSBpbXBvcnRzQXJyYXkgPSAoSW1wb3J0SG9sZGVyW10paW1wb3J0cy50b0FycmF5KG5ldyBJbXBvcnRIb2xkZXJbaW1wb3J0cy5zaXplKCldKTsKLSAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGltcG9ydHNBcnJheS5sZW5ndGg7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIEltcG9ydEhvbGRlciBpaCA9IGltcG9ydHNBcnJheVtpXTsKLSAgICAgICAgICAvLyBJZiBhbHJlYWR5IHBhcnNlZCwgYWRkIHRoZSBkZWZpbml0aW9uIGltcG9ydGluZyB0aGlzIGZpbGUgdG8gdGhlIGxpc3QuCi0gICAgICAgICAgaWYoZmlsZXNJbXBvcnRpbmcuY29udGFpbnNLZXkoaWguZ2V0TG9jYXRpb24oKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgKChMaXN0KWZpbGVzSW1wb3J0aW5nLmdldChpaC5nZXRMb2NhdGlvbigpKSkuYWRkKGloLmdldEltcG9ydGluZ0RvY3VtZW50KCkpOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGl0IHRvIHRoZSBsaXN0IHRvIHBhcnNlLgotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBZGQgdGhpcyBpbXBvcnQgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgaW1wb3J0aW5nIGxpc3QuCi0gICAgICAgICAgICBMaXN0IHRlbXBMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgICAgICAgdGVtcExpc3QuYWRkKGloLmdldEltcG9ydGluZ0RvY3VtZW50KCkpOwotICAgICAgICAgICAgZmlsZXNJbXBvcnRpbmcucHV0KGloLmdldExvY2F0aW9uKCksIHRlbXBMaXN0KTsKLSAgICAgICAgICAgIGltcG9ydHNUb1BhcnNlLmFkZChpaCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIEFkZCBhbGwgb2YgdGhlIGltcG9ydHMgdG8gdGhlIHJlc3BlY3RpdmUgZG9jdW1lbnRzLgotICAgIEl0ZXJhdG9yIGltcG9ydEVsZW1lbnRzSXRlciA9IHBhcnNlZEltcG9ydHMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZShpbXBvcnRFbGVtZW50c0l0ZXIuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIEltcG9ydEhvbGRlciBpbXAgPSAoSW1wb3J0SG9sZGVyKWltcG9ydEVsZW1lbnRzSXRlci5uZXh0KCk7Ci0gICAgICBMaXN0IGZpbGVzID0gKExpc3QpZmlsZXNJbXBvcnRpbmcuZ2V0KGltcC5nZXRMb2NhdGlvbigpKTsKLSAgICAgIEl0ZXJhdG9yIGZpbGVzSXRlciA9IGZpbGVzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZShmaWxlc0l0ZXIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBXU0RMRG9jdW1lbnQgZG9jID0gKFdTRExEb2N1bWVudClmaWxlc0l0ZXIubmV4dCgpOwotICAgICAgICAKLSAgICAgICAgRGVmaW5pdGlvbkltcGwgZGVmID0gKERlZmluaXRpb25JbXBsKWRvYy5nZXREZWZpbml0aW9uKCk7Ci0gICAgICAgIEltcG9ydCBpbXBFbGVtID0gaW1wLmdldEltcG9ydCgpOwotICAgICAgICBpZihpbXBFbGVtICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBkZWYuYWRkSW1wb3J0KGltcEVsZW0pOwotICAgICAgICAgIGlmKCFpbXAuaXNXU0RMRmlsZUltcG9ydCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGRvYy5hZGRTY2hlbWFzKGltcC5nZXRTY2hlbWFzKCkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy8gUGFyc2UgdGhlIFdTREwgZG9jdW1lbnRzLgotICAgIC8vIFBhcnNlIHRoZSBNZXNzYWdlcy4KLSAgICBmb3IoaW50IGkgPSBtYXhkZXB0aDsgaSA+PTA7IGktLSkKLSAgICB7Ci0gICAgICBMaXN0IGRvY3MgPSBmaWxlc0F0RGVwdGhbaV07Ci0gICAgICBJdGVyYXRvciBkb2NzSXRlciA9IGRvY3MuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlKGRvY3NJdGVyLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgV1NETERvY3VtZW50IGRvYyA9IChXU0RMRG9jdW1lbnQpZG9jc0l0ZXIubmV4dCgpOwotICAgICAgICBkb2MucGFyc2VNZXNzYWdlcygpOwotICAgICAgfQotICAgIH0KLSAgICAvLyBQYXJzZSB0aGUgUG9ydHR5cGVzLgotICAgIGZvcihpbnQgaSA9IG1heGRlcHRoOyBpID49MDsgaS0tKQotICAgIHsKLSAgICAgIExpc3QgZG9jcyA9IGZpbGVzQXREZXB0aFtpXTsKLSAgICAgIEl0ZXJhdG9yIGRvY3NJdGVyID0gZG9jcy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUoZG9jc0l0ZXIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBXU0RMRG9jdW1lbnQgZG9jID0gKFdTRExEb2N1bWVudClkb2NzSXRlci5uZXh0KCk7Ci0gICAgICAgIGRvYy5wYXJzZVBvcnR0eXBlcygpOwotICAgICAgfQotICAgIH0KLSAgICAvLyBQYXJzZSB0aGUgQmluZGluZ3MuCi0gICAgZm9yKGludCBpID0gbWF4ZGVwdGg7IGkgPj0wOyBpLS0pCi0gICAgewotICAgICAgTGlzdCBkb2NzID0gZmlsZXNBdERlcHRoW2ldOwotICAgICAgSXRlcmF0b3IgZG9jc0l0ZXIgPSBkb2NzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZShkb2NzSXRlci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFdTRExEb2N1bWVudCBkb2MgPSAoV1NETERvY3VtZW50KWRvY3NJdGVyLm5leHQoKTsKLSAgICAgICAgZG9jLnBhcnNlQmluZGluZ3MoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gUGFyc2UgdGhlIFNlcnZpY2VzLgotICAgIGZvcihpbnQgaSA9IG1heGRlcHRoOyBpID49MDsgaS0tKQotICAgIHsKLSAgICAgIExpc3QgZG9jcyA9IGZpbGVzQXREZXB0aFtpXTsKLSAgICAgIEl0ZXJhdG9yIGRvY3NJdGVyID0gZG9jcy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUoZG9jc0l0ZXIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBXU0RMRG9jdW1lbnQgZG9jID0gKFdTRExEb2N1bWVudClkb2NzSXRlci5uZXh0KCk7Ci0gICAgICAgIGRvYy5wYXJzZVNlcnZpY2VzKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIFBhcnNlIHRoZSBFeHRlbnNpYmlsaXR5IEVsZW1lbnRzLgotICAgIGZvcihpbnQgaSA9IG1heGRlcHRoOyBpID49MDsgaS0tKQotICAgIHsKLSAgICAgIExpc3QgZG9jcyA9IGZpbGVzQXREZXB0aFtpXTsKLSAgICAgIEl0ZXJhdG9yIGRvY3NJdGVyID0gZG9jcy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUoZG9jc0l0ZXIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBXU0RMRG9jdW1lbnQgZG9jID0gKFdTRExEb2N1bWVudClkb2NzSXRlci5uZXh0KCk7Ci0gICAgICAgIGRvYy5wYXJzZUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICBMaXN0IHdzZGxEb2NzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGZvcihpbnQgaSA9IG1heGRlcHRoOyBpID49MDsgaS0tKQotICAgIHsKLSAgICAgIExpc3QgZG9jcyA9IGZpbGVzQXREZXB0aFtpXTsKLSAgICAgIEl0ZXJhdG9yIGRvY3NJdGVyID0gZG9jcy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUoZG9jc0l0ZXIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBXU0RMRG9jdW1lbnQgZG9jID0gKFdTRExEb2N1bWVudClkb2NzSXRlci5uZXh0KCk7Ci0gICAgICAgIHdzZGxEb2NzLmFkZChkb2MpOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gKFdTRExEb2N1bWVudFtdKXdzZGxEb2NzLnRvQXJyYXkobmV3IFdTRExEb2N1bWVudFt3c2RsRG9jcy5zaXplKCldKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgV1NETCBkb2N1bWVudC4KLSAgICogCi0gICAqIEBwYXJhbSBpbnB1dFNvdXJjZSBUaGUgc291cmNlIG9mIHRoZSBkb2N1bWVudCBiZWluZyByZXRyaWV2ZWQuCi0gICAqIEBwYXJhbSBkZXNjIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZG9jdW1lbnQgYmVpbmcgcmV0cmlldmVkLgotICAgKiBAcmV0dXJuIFRoZSBXU0RMIGRvY3VtZW50LgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgZ2V0RG9jdW1lbnQoSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UsIFN0cmluZyBkZXNjKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgU3RhbmRhcmRQYXJzZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBuZXcgU3RhbmRhcmRQYXJzZXJDb25maWd1cmF0aW9uKCkKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIFhNTEVycm9yUmVwb3J0ZXIgY3JlYXRlRXJyb3JSZXBvcnRlcigpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbmV3IFhNTEVycm9yUmVwb3J0ZXIoKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlcG9ydEVycm9yKFN0cmluZyBkb21haW4sIFN0cmluZyBrZXksIE9iamVjdFtdIGFyZ3VtZW50cywgc2hvcnQgc2V2ZXJpdHkpIHRocm93cyBYTklFeGNlcHRpb24KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgYm9vbGVhbiByZXBvcnRFcnJvciA9IHRydWU7Ci0gICAgICAgICAgICAgIGlmIChrZXkuZXF1YWxzKCJQcmVtYXR1cmVFT0YiKSkKLSAgICAgICAgICAgICAgIHsgICAgICAgICAKLSAgICAgICAgICAgICAgICByZXBvcnRFcnJvciA9IGZhbHNlOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgaWYgKHJlcG9ydEVycm9yKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN1cGVyLnJlcG9ydEVycm9yKGRvbWFpbiwga2V5LCBhcmd1bWVudHMsIHNldmVyaXR5KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgIH07Ci0gICAgICAKLSAgICAgIEVycm9ySGFuZGxlciBlcnJvckhhbmRsZXIgPSBuZXcgRXJyb3JIYW5kbGVyKCkKLSAgICAgIHsKLSAgICAgICAgICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgICAgICAgKiBAc2VlIG9yZy54bWwuc2F4LkVycm9ySGFuZGxlciNlcnJvcihvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbikKLSAgICAgICAgICAgKi8KLSAgICAgICAgICBwdWJsaWMgdm9pZCBlcnJvcihTQVhQYXJzZUV4Y2VwdGlvbiBleGNlcHRpb24pIHRocm93cyBTQVhFeGNlcHRpb24KLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLSAgICAgICAgICB9Ci0gICAgICAgICAgLyogKG5vbi1KYXZhZG9jKQotICAgICAgICAgICAqIEBzZWUgb3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyI2ZhdGFsRXJyb3Iob3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24pCi0gICAgICAgICAgICovCi0gICAgICAgICAgcHVibGljIHZvaWQgZmF0YWxFcnJvcihTQVhQYXJzZUV4Y2VwdGlvbiBleGNlcHRpb24pIHRocm93cyBTQVhFeGNlcHRpb24KLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLSAgICAgICAgICB9Ci0gICAgICAgICAgLyogKG5vbi1KYXZhZG9jKQotICAgICAgICAgICAqIEBzZWUgb3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyI3dhcm5pbmcob3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24pCi0gICAgICAgICAgICovCi0gICAgICAgICAgcHVibGljIHZvaWQgd2FybmluZyhTQVhQYXJzZUV4Y2VwdGlvbiBleGNlcHRpb24pIHRocm93cyBTQVhFeGNlcHRpb24KLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLSAgICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICBET01QYXJzZXIgYnVpbGRlciA9IG5ldyBMaW5lTnVtYmVyRE9NUGFyc2VyKGNvbmZpZ3VyYXRpb24pOwotICAgICAgYnVpbGRlci5zZXRFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKTsKLSAgICAgIGJ1aWxkZXIucGFyc2UoaW5wdXRTb3VyY2UpOwotICAgICAgRG9jdW1lbnQgZG9jID0gYnVpbGRlci5nZXREb2N1bWVudCgpOwotCi0gICAgICByZXR1cm4gZG9jOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTRExFeGNlcHRpb24oV1NETEV4Y2VwdGlvbi5QQVJTRVJfRVJST1IsICJQcm9ibGVtIHBhcnNpbmcgJyIgKyBkZXNjICsgIicuIiwgdCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFJlYWQgYSBXU0RMIGRvY3VtZW50IHVzaW5nIGEgY29udGV4dCBVUkkgYW5kIGZpbGUgVVJJLgotICAgKiAKLSAgICogQHBhcmFtIGNvbnRleHRVUkkgVGhlIGNvbnRleHQgVVJJIHRvIHVzZS4KLSAgICogQHBhcmFtIHdzZGxVUkkgVGhlIFdTREwgVVJJIHRvIHVzZS4KLSAgICogQHJldHVybiBBbiBhcnJheSBvZiBXU0RMRG9jdW1lbnRzLgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHB1YmxpYyBXU0RMRG9jdW1lbnRbXSByZWFkV1NETChTdHJpbmcgY29udGV4dFVSSSwgU3RyaW5nIHdzZGxVUkkpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBVUkwgY29udGV4dFVSTCA9IChjb250ZXh0VVJJICE9IG51bGwpID8gU3RyaW5nVXRpbHMuZ2V0VVJMKG51bGwsIGNvbnRleHRVUkkpIDogbnVsbDsKLSAgICAgIFVSTCB1cmwgPSBTdHJpbmdVdGlscy5nZXRVUkwoY29udGV4dFVSTCwgd3NkbFVSSSk7Ci0gICAgICBJbnB1dFN0cmVhbSByZWFkZXIgPSBTdHJpbmdVdGlscy5nZXRDb250ZW50QXNJbnB1dFN0cmVhbSh1cmwpOwotICAgICAgSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UgPSBuZXcgSW5wdXRTb3VyY2UocmVhZGVyKTsKLSAgICAgIERvY3VtZW50IGRvYyA9IGdldERvY3VtZW50KGlucHV0U291cmNlLCB3c2RsVVJJKTsKLSAgICAgIHJlYWRlci5jbG9zZSgpOwotICAgICAgV1NETERvY3VtZW50W10gd3NkbERvY3MgPSBudWxsOwotICAgICAgLy8gb25seSBwYXJzZSB0aGUgZG9jdW1lbnQgaWYgaXQgaXNuJ3QgZW1wdHkKLSAgICAgIGlmKGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSAhPSBudWxsKQotICAgICAgIHsgICAgICAKLSAgICAgICAgd3NkbERvY3MgPSByZWFkV1NETCh1cmwudG9TdHJpbmcoKSwgZG9jKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB3c2RsRG9jczsKLSAgICB9Ci0gICAgY2F0Y2ggKFdTRExFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICB0aHJvdyBlOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTRExFeGNlcHRpb24oCi0gICAgICAgIFdTRExFeGNlcHRpb24uT1RIRVJfRVJST1IsCi0gICAgICAgICJVbmFibGUgdG8gcmVzb2x2ZSBpbXBvcnRlZCBkb2N1bWVudCBhdCAnIiArIHdzZGxVUkkgKyAiJy4iLAotICAgICAgICB0KTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogU2V0IHRoZSBtZXNzYWdlZ2VuZXJhdG9yIGZvciB0aGUgcmVhZGVyLgotICAgKiAKLSAgICogQHBhcmFtIG1nIFRoZSBtZXNzYWdlIGdlbmVyYXRvciB0byBzZXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNZXNzYWdlR2VuZXJhdG9yKE1lc3NhZ2VHZW5lcmF0b3IgbWcpCi0gIHsKLSAgICBtZXNzYWdlZ2VuZXJhdG9yID0gbWc7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZWFkIHRoZSBXU0RMIGRvY3VtZW50IGFjY2Vzc2libGUgdmlhIHRoZSBzcGVjaWZpZWQKLSAgICogVVJJIGludG8gYSBXU0RMIGRlZmluaXRpb24uCi0gICAqCi0gICAqIEBwYXJhbSB3c2RsVVJJIEEgVVJJIHBvaW50aW5nIHRvIGEgV1NETCBmaWxlLgotICAgKiBAcmV0dXJuIEFuIGFycmF5IG9mIFdTRExEb2N1bWVudHMuCi0gICAqLwotICBwdWJsaWMgV1NETERvY3VtZW50W10gcmVhZFdTREwoU3RyaW5nIHdzZGxVUkkpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gcmVhZFdTREwobnVsbCwgd3NkbFVSSSk7Ci0gIH0KLQotICAvKioKLSAgICogUmVhZCB0aGUgV1NETCBkb2N1bWVudCBkZXNjcmliZWQgYnkgYSBVUkkgYW5kIGl0cyBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKiAKLSAgICogQHBhcmFtIGRvY3VtZW50QmFzZVVSSSBUaGUgVVJJIG9mIHRoZSBXU0RMIGRvY3VtZW50LgotICAgKiBAcGFyYW0gZGVmaW5pdGlvbnNFbGVtZW50IFRoZSBkZWZpbml0aW9ucyBlbGVtZW50IGZvciB0aGUgV1NETCBkb2N1bWVudC4KLSAgICogQHJldHVybiBBbiBhcnJheSBvZiBXU0RMRG9jdW1lbnRzLgotICAgKiBAdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgICovCi0gIHByb3RlY3RlZCBXU0RMRG9jdW1lbnRbXSByZWFkV1NETChTdHJpbmcgZG9jdW1lbnRCYXNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50IGRlZmluaXRpb25zRWxlbWVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIHBhcnNlRG9jdW1lbnQoZG9jdW1lbnRCYXNlVVJJLCBkZWZpbml0aW9uc0VsZW1lbnQpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlYWQgdGhlIHNwZWNpZmllZCBXU0RMIGRvY3VtZW50LgotICAgKgotICAgKiBAcGFyYW0gZG9jdW1lbnRCYXNlVVJJIFRoZSBkb2N1bWVudCBiYXNlIFVSSS4KLSAgICogQHBhcmFtIHdzZGxEb2N1bWVudCBUaGUgV1NETCBkb2N1bWVudC4KLSAgICogQHJldHVybiBBbiBhcnJheSBvZiBXU0RMRG9jdW1lbnRzLgotICAgKi8KLSAgcHVibGljIFdTRExEb2N1bWVudFtdIHJlYWRXU0RMKFN0cmluZyBkb2N1bWVudEJhc2VVUkksIERvY3VtZW50IHdzZGxEb2N1bWVudCkKLSAgICB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIHJlYWRXU0RMKGRvY3VtZW50QmFzZVVSSSwgd3NkbERvY3VtZW50LmdldERvY3VtZW50RWxlbWVudCgpKTsKLSAgfQotICAKLSAgCi0gIAotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL2h0dHAvSFRUUFZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9odHRwL0hUVFBWYWxpZGF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzNGUzMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL2h0dHAvSFRUUFZhbGlkYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5odHRwOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7Ci1pbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnV0aWwuTWVzc2FnZUdlbmVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuSVdTREwxMVZhbGlkYXRvcjsKLQotaW1wb3J0IGNvbS5pYm0ud3NkbC5CaW5kaW5nSW1wbDsKLWltcG9ydCBjb20uaWJtLndzZGwuQmluZGluZ0lucHV0SW1wbDsKLWltcG9ydCBjb20uaWJtLndzZGwuQmluZGluZ09wZXJhdGlvbkltcGw7Ci1pbXBvcnQgY29tLmlibS53c2RsLlBvcnRJbXBsOwotaW1wb3J0IGNvbS5pYm0ud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3NJbXBsOwotaW1wb3J0IGNvbS5pYm0ud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmdJbXBsOwotaW1wb3J0IGNvbS5pYm0ud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbkltcGw7Ci1pbXBvcnQgY29tLmlibS53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsRW5jb2RlZEltcGw7Ci1pbXBvcnQgY29tLmlibS53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnRJbXBsOwotCi0vKioKLSAqIFRoZSBIVFRQIHZhbGlkYXRvciBpcyBhbiBleHRlbnNpb24gV1NETCB2YWxpZGF0b3IgdGhhdCB2YWxpZGF0ZXMgYWxsIGVsZW1lbnRzIGluIHRoZSBIVFRQCi0gKiBuYW1lc3BhY2UuCi0gKi8KLXB1YmxpYyBjbGFzcyBIVFRQVmFsaWRhdG9yIGltcGxlbWVudHMgSVdTREwxMVZhbGlkYXRvcgotewotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgSFRUUF9SRVNPVVJDRV9CVU5ETEVfTkFNRSA9ICJ2YWxpZGF0ZXdzZGxodHRwIjsKLQkKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0lOVkFMSURfUE9SVF9FTEVNRU5UID0gIl9FUlJPUl9JTlZBTElEX1BPUlRfRUxFTUVOVCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9JTlZBTElEX0JJTkRJTkdfRUxFTUVOVCA9ICJfRVJST1JfSU5WQUxJRF9CSU5ESU5HX0VMRU1FTlQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9CSU5ESU5HX09QRVJBVElPTl9FTEVNRU5UID0gIl9FUlJPUl9JTlZBTElEX0JJTkRJTkdfT1BFUkFUSU9OX0VMRU1FTlQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9CSU5ESU5HX0lOUFVUX0VMRU1FTlQgPSAiX0VSUk9SX0lOVkFMSURfQklORElOR19JTlBVVF9FTEVNRU5UIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0lOVkFMSURfSFRUUF9FTEVNRU5UX0ZPUl9MT0NBVElPTiA9ICJfRVJST1JfSU5WQUxJRF9IVFRQX0VMRU1FTlRfRk9SX0xPQ0FUSU9OIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX05PX0xPQ0FUSU9OX0ZPUl9BRERSRVNTID0gIl9FUlJPUl9OT19MT0NBVElPTl9GT1JfQUREUkVTUyI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9OT19IVFRQQklORElOR19GT1JfQUREUkVTUyA9ICJfRVJST1JfTk9fSFRUUEJJTkRJTkdfRk9SX0FERFJFU1MiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9CSU5ESU5HX1ZFUkIgPSAiX0VSUk9SX0lOVkFMSURfQklORElOR19WRVJCIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0lOVkFMSURfTE9DQVRJT05fVVJJID0gIl9FUlJPUl9JTlZBTElEX0xPQ0FUSU9OX1VSSSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9OT19IVFRQQklORElOR19GT1JfT1BFUkFUSU9OID0gIl9FUlJPUl9OT19IVFRQQklORElOR19GT1JfT1BFUkFUSU9OIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX05PVF9PTkxZX0VMRU1FTlRfREVGSU5FRCA9ICJfRVJST1JfTk9UX09OTFlfRUxFTUVOVF9ERUZJTkVEIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX05PX0hUVFBPUEVSQVRJT05fRk9SX1VSTCA9ICJfRVJST1JfTk9fSFRUUE9QRVJBVElPTl9GT1JfVVJMIjsKLQotICBwcml2YXRlIGZpbmFsIFN0cmluZyBHRVQgPSAiR0VUIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgUE9TVCA9ICJQT1NUIjsKLQotICBwcml2YXRlIGZpbmFsIFN0cmluZyBRVU9URSA9ICInIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgRU1QVFlfU1RSSU5HID0gIiI7Ci0KLSAgcHJpdmF0ZSBNZXNzYWdlR2VuZXJhdG9yIG1lc3NhZ2VnZW5lcmF0b3I7Ci0KLSAgLyoqCi0gICAqIERlZmF1bHQgY29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgSFRUUFZhbGlkYXRvcigpCi0gIHsKLQlSZXNvdXJjZUJ1bmRsZSByYiA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShIVFRQX1JFU09VUkNFX0JVTkRMRV9OQU1FLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKLQltZXNzYWdlZ2VuZXJhdG9yID0gbmV3IE1lc3NhZ2VHZW5lcmF0b3IocmIpOwotICB9Ci0gIAotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdG9yI3ZhbGlkYXRlKGphdmEubGFuZy5PYmplY3QsIGphdmEudXRpbC5MaXN0LCBvcmcuZWNsaXBzZS53c2RsLnZhbGlkYXRlLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm8pCi0gICAqLwotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZShPYmplY3QgZWxlbWVudCwgTGlzdCBwYXJlbnRzLCBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotICAgIC8vIFBvcnQgSFRUUCBkZWZpbml0aW9uCi0gICAgLy8gbWFrZSBzdXJlIGV2ZXJ5IHBvcnQgaGFzIG9ubHkgb25lIGFkZHJlc3MgZWxlbWVudCBkZWZpbmVkCi0gICAgLy8gaWYgaXQgaXMgYW4gYWRkcmVzcyBlbGVtZW50LCB2YWxpZGF0ZSBpdAotICAgIGlmIChwYXJlbnRzLmdldCgwKS5nZXRDbGFzcygpID09IFBvcnRJbXBsLmNsYXNzKQotICAgIHsKLSAgICAgIGlmIChlbGVtZW50LmdldENsYXNzKCkgPT0gSFRUUEFkZHJlc3NJbXBsLmNsYXNzKQotICAgICAgewotICAgICAgICB2YWxpZGF0ZUFkZHJlc3MoZWxlbWVudCwgcGFyZW50cywgdmFsSW5mbyk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGUgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZWxlbWVudDsKLSAgICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfSU5WQUxJRF9QT1JUX0VMRU1FTlQsIFFVT1RFICsgZS5nZXRFbGVtZW50VHlwZSgpLmdldExvY2FsUGFydCgpICsgUVVPVEUpLAotICAgICAgICAgIGVsZW1lbnQpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIEJpbmRpbmcgSFRUUCBkZWZpbml0aW9uCi0gICAgLy8gQSBIVFRQIEJpbmRpbmcgbXVzdCBoYXZlIGEgdmVyYiBvZiBHRVQgb3IgUE9TVAotICAgIGVsc2UgaWYgKHBhcmVudHMuZ2V0KDApLmdldENsYXNzKCkgPT0gQmluZGluZ0ltcGwuY2xhc3MpCi0gICAgewotICAgICAgaWYgKGVsZW1lbnQuZ2V0Q2xhc3MoKSA9PSBIVFRQQmluZGluZ0ltcGwuY2xhc3MpCi0gICAgICB7Ci0gICAgICAgIHZhbGlkYXRlQmluZGluZyhlbGVtZW50LCBwYXJlbnRzLCB2YWxJbmZvKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCllbGVtZW50OwotICAgICAgICB2YWxJbmZvLmFkZEVycm9yKAotICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9JTlZBTElEX0JJTkRJTkdfRUxFTUVOVCwgUVVPVEUgKyBlLmdldEVsZW1lbnRUeXBlKCkuZ2V0TG9jYWxQYXJ0KCkgKyBRVU9URSksCi0gICAgICAgICAgZWxlbWVudCk7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIEJpbmRpbmcgT3BlcmF0aW9uIEhUVFAgZGVmaW5pdGlvbgotICAgIC8vIEEgSFRUUCBPcGVyYXRpb24gaGFzIGEgbG9jYXRpb24gdXJpIGRlZmluZWQKLSAgICBlbHNlIGlmIChwYXJlbnRzLmdldCgwKS5nZXRDbGFzcygpID09IEJpbmRpbmdPcGVyYXRpb25JbXBsLmNsYXNzKQotICAgIHsKLSAgICAgIGlmIChlbGVtZW50LmdldENsYXNzKCkgPT0gSFRUUE9wZXJhdGlvbkltcGwuY2xhc3MpCi0gICAgICB7Ci0gICAgICAgIHZhbGlkYXRlT3BlcmF0aW9uKGVsZW1lbnQsIHBhcmVudHMsIHZhbEluZm8pOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWVsZW1lbnQ7Ci0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoCi0gICAgICAgICAgICBfRVJST1JfSU5WQUxJRF9CSU5ESU5HX09QRVJBVElPTl9FTEVNRU5ULAotICAgICAgICAgICAgUVVPVEUgKyBlLmdldEVsZW1lbnRUeXBlKCkuZ2V0TG9jYWxQYXJ0KCkgKyBRVU9URSksCi0gICAgICAgICAgZWxlbWVudCk7Ci0gICAgICB9Ci0KLSAgICB9Ci0gICAgZWxzZSBpZiAocGFyZW50cy5nZXQoMCkuZ2V0Q2xhc3MoKSA9PSBCaW5kaW5nSW5wdXRJbXBsLmNsYXNzKQotICAgIHsKLSAgICAgIC8vIHZhbGlkYXRlIHRoZSBIVFRQIHVybEVuY29kZWQgYW5kIHVybFJlcGxhY2VtZW50Ci0gICAgICBpZiAoZWxlbWVudC5nZXRDbGFzcygpID09IEhUVFBVcmxFbmNvZGVkSW1wbC5jbGFzcyB8fCBlbGVtZW50LmdldENsYXNzKCkgPT0gSFRUUFVybFJlcGxhY2VtZW50SW1wbC5jbGFzcykKLSAgICAgIHsKLSAgICAgICAgdmFsaWRhdGVIdHRwVXJsKGVsZW1lbnQsIHBhcmVudHMsIHZhbEluZm8pOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWVsZW1lbnQ7Ci0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX0lOVkFMSURfQklORElOR19JTlBVVF9FTEVNRU5ULCBRVU9URSArIGUuZ2V0RWxlbWVudFR5cGUoKS5nZXRMb2NhbFBhcnQoKSArIFFVT1RFKSwKLSAgICAgICAgICBlbGVtZW50KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBpbiB0aGlzIGNhc2UgdGhlcmUgaGFzIGJlZW4gYSBIVFRQIGVsZW1lbnQgZGVmaW5lZCB0aGF0IGlzIG5vdCBkZWZpbmVkIGZvciB0aGlzIHBvaW50IGluIHRoZSBIVFRQIG5hbWVzcGFjZQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWVsZW1lbnQ7Ci0gICAgICB2YWxJbmZvLmFkZEVycm9yKAotICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygKLSAgICAgICAgICBfRVJST1JfSU5WQUxJRF9IVFRQX0VMRU1FTlRfRk9SX0xPQ0FUSU9OLAotICAgICAgICAgIFFVT1RFICsgZS5nZXRFbGVtZW50VHlwZSgpLmdldExvY2FsUGFydCgpICsgUVVPVEUpLAotICAgICAgICBlbGVtZW50KTsKLSAgICB9Ci0KLSAgfQotCi0gIC8qKgotICAgKiBFbnN1cmUgdGhhdCB0aGUgSFRUUCBhZGRyZXNzIGhhcyBhIHZhbHVlIHNwZWNpZmllZCBmb3IgaXQncyB1cmkgYW5kIHRoYXQgdGhlcmUgaXMgYSBIVFRQIEJpbmRpbmcgZGVmaW5lZAotICAgKiBmb3IgdGhlIEJpbmRpbmcgc3BlY2lmaWVkIGluIHRoZSBwb3J0LgotICAgKiAKLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIEhUVFAgYWRkcmVzcyBlbGVtZW50LgotICAgKiBAcGFyYW0gcGFyZW50cyBUaGUgbGlzdCBvZiBwYXJlbnRzIG9mIHRoZSBIVFRQIGFkZHJlc3MgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbGlkYXRvcmNvbnRyb2xsZXIgVGhlIHZhbGlkYXRvciBjb250cm9sbGVyIGluIGNoYXJnZSBvZiB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVBZGRyZXNzKE9iamVjdCBlbGVtZW50LCBMaXN0IHBhcmVudHMsIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKQotICB7Ci0gICAgSFRUUEFkZHJlc3NJbXBsIGhhID0gKEhUVFBBZGRyZXNzSW1wbCllbGVtZW50OwotCi0gICAgU3RyaW5nIHVyaSA9IGhhLmdldExvY2F0aW9uVVJJKCk7Ci0gICAgaWYgKHVyaSA9PSBudWxsIHx8IHVyaS5lcXVhbHNJZ25vcmVDYXNlKEVNUFRZX1NUUklORykpCi0gICAgewotICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfTk9fTE9DQVRJT05fRk9SX0FERFJFU1MpLCBoYSk7Ci0gICAgfQotCi0gICAgUG9ydCBwb3J0ID0gKFBvcnQpcGFyZW50cy5nZXQoMCk7Ci0KLSAgICBCaW5kaW5nIGJpbmRpbmcgPSBwb3J0LmdldEJpbmRpbmcoKTsKLQotICAgIGlmICghaGFzSHR0cEJpbmRpbmcoYmluZGluZykpCi0gICAgewotICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoCi0gICAgICAgICAgX0VSUk9SX05PX0hUVFBCSU5ESU5HX0ZPUl9BRERSRVNTLAotICAgICAgICAgIFFVT1RFICsgYmluZGluZy5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpICsgUVVPVEUsCi0gICAgICAgICAgUVVPVEUgKyBwb3J0LmdldE5hbWUoKSArIFFVT1RFKSwKLSAgICAgICAgaGEpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBFbnN1cmUgdGhlIEhUVFAgQmluZGluZyBkZWZpbmVkIGlzIHZhbGlkLiBBIEhUVFAgQmluZGluZyBtdXN0IGhhdmUgYSB2ZXJiIG9mIEdFVCBvciBQT1NULgotICAgKiAKLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIEhUVFAgYmluZGluZyBlbGVtZW50LgotICAgKiBAcGFyYW0gcGFyZW50cyBUaGUgbGlzdCBvZiBwYXJlbnRzIG9mIHRoZSBIVFRQIGJpbmRpbmcgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbGlkYXRvcmNvbnRyb2xsZXIgVGhlIHZhbGlkYXRvciBjb250cm9sbGVyIGluIGNoYXJnZSBvZiB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVCaW5kaW5nKE9iamVjdCBlbGVtZW50LCBMaXN0IHBhcmVudHMsIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKQotICB7Ci0gICAgSFRUUEJpbmRpbmdJbXBsIGhiID0gKEhUVFBCaW5kaW5nSW1wbCllbGVtZW50OwotCi0gICAgU3RyaW5nIHZlcmIgPSBoYi5nZXRWZXJiKCk7Ci0KLSAgICBpZiAodmVyYiAhPSBudWxsICYmICF2ZXJiLmVxdWFscyhHRVQpICYmICF2ZXJiLmVxdWFscyhQT1NUKSkKLSAgICB7Ci0gICAgICB2YWxJbmZvLmFkZEVycm9yKG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9JTlZBTElEX0JJTkRJTkdfVkVSQiwgUVVPVEUgKyB2ZXJiICsgUVVPVEUpLCBlbGVtZW50KTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQW4gb3BlcmF0aW9uIG11c3QgaGF2ZSBhIGxvY2F0aW9uIGRlZmluZWQuIEEgSFRUUCBCaW5kaW5nIG11c3QgYmUgc3BlY2lmaWVkIHRvIHVzZSBhbiBvcGVyYXRpb24uCi0gICAqIAotICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgSFRUUCBvcGVyYXRpb24gZWxlbWVudC4KLSAgICogQHBhcmFtIHBhcmVudHMgVGhlIGxpc3Qgb2YgcGFyZW50cyBvZiB0aGUgSFRUUCBvcGVyYXRpb24gZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbGlkYXRvcmNvbnRyb2xsZXIgVGhlIHZhbGlkYXRvciBjb250cm9sbGVyIGluIGNoYXJnZSBvZiB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVPcGVyYXRpb24oT2JqZWN0IGVsZW1lbnQsIExpc3QgcGFyZW50cywgSVdTREwxMVZhbGlkYXRpb25JbmZvIHZhbEluZm8pCi0gIHsKLSAgICBIVFRQT3BlcmF0aW9uIGhvID0gKEhUVFBPcGVyYXRpb24pZWxlbWVudDsKLQotICAgIFN0cmluZyBsb2NhdGlvblVSSSA9IGhvLmdldExvY2F0aW9uVVJJKCk7Ci0KLSAgICBpZiAobG9jYXRpb25VUkkgIT0gbnVsbCAmJiBsb2NhdGlvblVSSS5lcXVhbHNJZ25vcmVDYXNlKEVNUFRZX1NUUklORykpCi0gICAgewotICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfSU5WQUxJRF9MT0NBVElPTl9VUkkpLCBlbGVtZW50KTsKLSAgICB9Ci0KLSAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZylwYXJlbnRzLmdldCgxKTsKLSAgICBpZiAoIWhhc0h0dHBCaW5kaW5nKGJpbmRpbmcpKQotICAgIHsKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9OT19IVFRQQklORElOR19GT1JfT1BFUkFUSU9OLCBRVU9URSArIGJpbmRpbmcuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSArIFFVT1RFKSwKLSAgICAgICAgaG8pOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZSB0aGUgSFRUUCB1cmxSZXBsYWNlbWVudCBvciB1cmxFbmNvZGVkLiBFbnN1cmUgdGhlIEhUVFAgb3BlcmF0aW9uIGhhcyBiZWVuIGRlZmluZWQuIAotICAgKiBFbnN1cmUgdGhhdCBlaXRoZXIgZWxlbWVudCBpcyB0aGUgb25seSBlbGVtZW50IHNwZWNpZmllZC4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBIVFRQIGJpbmRpbmcgb3BlcmF0aW9uIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBwYXJlbnRzIFRoZSBsaXN0IG9mIHBhcmVudHMgb2YgdGhlIEhUVFAgYmluZGluZyBvcGVyYXRpb24gZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbGlkYXRvcmNvbnRyb2xsZXIgVGhlIHZhbGlkYXRvciBjb250cm9sbGVyIGluIGNoYXJnZSBvZiB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVIdHRwVXJsKE9iamVjdCBlbGVtZW50LCBMaXN0IHBhcmVudHMsIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKQotICB7Ci0gICAgQmluZGluZ09wZXJhdGlvbiBvcGVyYXRpb24gPSAoQmluZGluZ09wZXJhdGlvbilwYXJlbnRzLmdldCgxKTsKLQotICAgIFN0cmluZyBlbGVtZW50TmFtZTsKLSAgICBpZiAoZWxlbWVudC5nZXRDbGFzcygpID09IEhUVFBVcmxFbmNvZGVkSW1wbC5jbGFzcykKLSAgICB7Ci0gICAgICBlbGVtZW50TmFtZSA9ICJ1cmxFbmNvZGVkIjsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZWxlbWVudC5nZXRDbGFzcygpID09IEhUVFBVcmxSZXBsYWNlbWVudEltcGwuY2xhc3MpCi0gICAgewotICAgICAgZWxlbWVudE5hbWUgPSAidXJsUmVwbGFjZW1lbnQiOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgZWxlbWVudE5hbWUgPSBFTVBUWV9TVFJJTkc7Ci0gICAgfQotCi0gICAgQmluZGluZ0lucHV0IGlucHV0ID0gKEJpbmRpbmdJbnB1dClwYXJlbnRzLmdldCgwKTsKLSAgICBpZiAoaW5wdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuc2l6ZSgpICE9IDEpCi0gICAgewotICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfTk9UX09OTFlfRUxFTUVOVF9ERUZJTkVELCBlbGVtZW50TmFtZSksIGVsZW1lbnQpOwotICAgIH0KLQotICAgIGlmICghaGFzSHR0cE9wZXJhdGlvbihvcGVyYXRpb24pKQotICAgIHsKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9OT19IVFRQT1BFUkFUSU9OX0ZPUl9VUkwsIFFVT1RFICsgb3BlcmF0aW9uLmdldE5hbWUoKSArIFFVT1RFLCBlbGVtZW50TmFtZSksCi0gICAgICAgIGVsZW1lbnQpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBHaXZlbiBhIEJpbmRpbmdPcGVyYXRpb24gdGVsbHMgd2hldGhlciBpdCBoYXMgYSBIVFRQIG9wZXJhdGlvbiBkZWZpbmVkIGZvciBpdC4KLSAgICogCi0gICAqIEBwYXJhbSBiaW5kaW5nIFRoZSBIVFRQIGJpbmRpbmcgb3BlcmF0aW9uIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGVyZSBpcyBhbiBIVFRQIG9wZXJhdGlvbiBkZWZpbmVkLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBoYXNIdHRwT3BlcmF0aW9uKEJpbmRpbmdPcGVyYXRpb24gb3BlcmF0aW9uKQotICB7Ci0gICAgaWYgKG9wZXJhdGlvbiAhPSBudWxsKQotICAgIHsKLSAgICAgIExpc3QgZXh0ZWxlbXMgPSBvcGVyYXRpb24uZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICBpZiAoZXh0ZWxlbXMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgSXRlcmF0b3IgaWV4dGVsZW1zID0gZXh0ZWxlbXMuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKGlleHRlbGVtcy5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoaWV4dGVsZW1zLm5leHQoKS5nZXRDbGFzcygpID09IEhUVFBPcGVyYXRpb25JbXBsLmNsYXNzKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogR2l2ZW4gYSBiaW5kaW5nIHJldHVybnMgdHJ1ZSBpZiBpdCBoYXMgYSBIVFRQIGJpbmRpbmcgZGVmaW5lZC4KLSAgICogCi0gICAqIEBwYXJhbSBiaW5kaW5nIFRoZSBiaW5kaW5nIHRvIGNoZWNrLgotICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlcmUgaXMgYW4gSFRUUCBiaW5kaW5nIGRlZmluZWQuCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBoYXNIdHRwQmluZGluZyhCaW5kaW5nIGJpbmRpbmcpCi0gIHsKLSAgICBpZiAoYmluZGluZyAhPSBudWxsKQotICAgIHsKLSAgICAgIExpc3QgZXh0ZWxlbXMgPSBiaW5kaW5nLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgaWYgKGV4dGVsZW1zICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIEl0ZXJhdG9yIGlleHRlbGVtcyA9IGV4dGVsZW1zLml0ZXJhdG9yKCk7Ci0gICAgICAgIHdoaWxlIChpZXh0ZWxlbXMuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGlleHRlbGVtcy5uZXh0KCkuZ2V0Q2xhc3MoKSA9PSBIVFRQQmluZGluZ0ltcGwuY2xhc3MpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9taW1lL01JTUVWYWxpZGF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvbWltZS9NSU1FVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMmEzYjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS9taW1lL01JTUVWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5taW1lOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnV0aWwuTWVzc2FnZUdlbmVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLklXU0RMMTFWYWxpZGF0aW9uSW5mbzsKLQotLyoqCi0gKiBUaGUgTUlNRSB2YWxpZGF0b3IgcGx1Z3MgaW50byB0aGUgV1NETCB2YWxpZGF0b3IgdG8gcHJvdmlkZQotICogdmFsaWRhdGlvbiBmb3IgYWxsIGVsZW1lbnRzIGluIGEgV1NETCBkb2N1bWVudCB3aXRoaW4gdGhlIE1JTUUgbmFtZXNwYWNlLgotICovCi1wdWJsaWMgY2xhc3MgTUlNRVZhbGlkYXRvciBpbXBsZW1lbnRzIElXU0RMMTFWYWxpZGF0b3IKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIE1JTUVfUkVTT1VSQ0VfQlVORExFX05BTUUgPSAidmFsaWRhdGV3c2RsbWltZSI7Ci0gIHByb3RlY3RlZCBNZXNzYWdlR2VuZXJhdG9yIG1lc3NhZ2VnZW5lcmF0b3I7Ci0KLSAgcHVibGljIE1JTUVWYWxpZGF0b3IoKQotICB7Ci0JUmVzb3VyY2VCdW5kbGUgcmIgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoTUlNRV9SRVNPVVJDRV9CVU5ETEVfTkFNRSwgTG9jYWxlLmdldERlZmF1bHQoKSk7Ci0JbWVzc2FnZWdlbmVyYXRvciA9IG5ldyBNZXNzYWdlR2VuZXJhdG9yKHJiKTsKLSAgfQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdG9yI3ZhbGlkYXRlKGphdmEubGFuZy5PYmplY3QsIGphdmEudXRpbC5MaXN0LCBvcmcuZWNsaXBzZS53c2RsLnZhbGlkYXRlLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm8pCi0gICAqLwotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZShPYmplY3QgZWxlbWVudCwgTGlzdCBwYXJlbnRzLCBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotCi0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvc29hcC9TT0FQVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3NvYXAvU09BUFZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2Y4NTcwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEvc29hcC9TT0FQVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnNvYXA7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLklucHV0OwotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk91dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnV0aWwuTWVzc2FnZUdlbmVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuSVdTREwxMVZhbGlkYXRvcjsKLQotaW1wb3J0IGNvbS5pYm0ud3NkbC5CaW5kaW5nRmF1bHRJbXBsOwotaW1wb3J0IGNvbS5pYm0ud3NkbC5CaW5kaW5nSW1wbDsKLWltcG9ydCBjb20uaWJtLndzZGwuQmluZGluZ0lucHV0SW1wbDsKLWltcG9ydCBjb20uaWJtLndzZGwuQmluZGluZ09wZXJhdGlvbkltcGw7Ci1pbXBvcnQgY29tLmlibS53c2RsLkJpbmRpbmdPdXRwdXRJbXBsOwotaW1wb3J0IGNvbS5pYm0ud3NkbC5Qb3J0SW1wbDsKLWltcG9ydCBjb20uaWJtLndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzSW1wbDsKLWltcG9ydCBjb20uaWJtLndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nSW1wbDsKLWltcG9ydCBjb20uaWJtLndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5SW1wbDsKLWltcG9ydCBjb20uaWJtLndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdEltcGw7Ci1pbXBvcnQgY29tLmlibS53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHRJbXBsOwotaW1wb3J0IGNvbS5pYm0ud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckltcGw7Ci1pbXBvcnQgY29tLmlibS53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uSW1wbDsKLQotLyoqCi0gKiBUaGUgU09BUCB2YWxpZGF0b3IgcGx1Z3MgaW50byB0aGUgV1NETCB2YWxpZGF0b3IgdG8gcHJvdmlkZQotICogdmFsaWRhdGlvbiBmb3IgYWxsIGVsZW1lbnRzIGluIGEgV1NETCBkb2N1bWVudCB3aXRoaW4gdGhlIFNPQVAgbmFtZXNwYWNlLgotICoKLSAqLwotcHVibGljIGNsYXNzIFNPQVBWYWxpZGF0b3IgaW1wbGVtZW50cyBJV1NETDExVmFsaWRhdG9yCi17Ci0gIHByaXZhdGUgc3RhdGljIFN0cmluZyBTT0FQX1JFU09VUkNFX0JVTkRMRV9OQU1FID0gInZhbGlkYXRld3NkbHNvYXAiOwotCSAgCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9JTlZBTElEX1BPUlRfRUxFTUVOVCA9ICJfRVJST1JfSU5WQUxJRF9QT1JUX0VMRU1FTlQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9CSU5ESU5HX0VMRU1FTlQgPSAiX0VSUk9SX0lOVkFMSURfQklORElOR19FTEVNRU5UIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0lOVkFMSURfQklORElOR19PUEVSQVRJT05fRUxFTUVOVCA9ICJfRVJST1JfSU5WQUxJRF9CSU5ESU5HX09QRVJBVElPTl9FTEVNRU5UIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0lOVkFMSURfSEVBREVSX0JPRFlfRUxFTUVOVCA9ICJfRVJST1JfSU5WQUxJRF9IRUFERVJfQk9EWV9FTEVNRU5UIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0lOVkFMSURfRkFVTFRfRUxFTUVOVCA9ICJfRVJST1JfSU5WQUxJRF9GQVVMVF9FTEVNRU5UIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0lOVkFMSURfU09BUF9FTEVNRU5UX0ZPUl9MT0NBVElPTiA9ICJfRVJST1JfSU5WQUxJRF9TT0FQX0VMRU1FTlRfRk9SX0xPQ0FUSU9OIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX05PX0xPQ0FUSU9OX0ZPUl9BRERSRVNTID0gIl9FUlJPUl9OT19MT0NBVElPTl9GT1JfQUREUkVTUyI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9OT19TT0FQQklORElOR19GT1JfQUREUkVTUyA9ICJfRVJST1JfTk9fU09BUEJJTkRJTkdfRk9SX0FERFJFU1MiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9CSU5ESU5HX1NUWUxFID0gIl9FUlJPUl9JTlZBTElEX0JJTkRJTkdfU1RZTEUiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9CSU5ESU5HX1VSSSA9ICJfRVJST1JfSU5WQUxJRF9CSU5ESU5HX1VSSSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9JTlZBTElEX09QRVJBVElPTl9TVFlMRSA9ICJfRVJST1JfSU5WQUxJRF9PUEVSQVRJT05fU1RZTEUiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfTk9fU09BUEJJTkRJTkdfRk9SX09QRVJBVElPTiA9ICJfRVJST1JfTk9fU09BUEJJTkRJTkdfRk9SX09QRVJBVElPTiI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9JTlZBTElEX0JPRFlfRU5DT0RJTkdfU1RZTEUgPSAiX0VSUk9SX0lOVkFMSURfQk9EWV9FTkNPRElOR19TVFlMRSI7Ci0gIC8vcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0lOVkFMSURfQk9EWV9OQU1FU1BBQ0VfRk9SX0VOQ09ERUQgPSAiX0VSUk9SX0lOVkFMSURfQk9EWV9OQU1FU1BBQ0VfRk9SX0VOQ09ERUQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9CT0RZX1VTRSA9ICJfRVJST1JfSU5WQUxJRF9CT0RZX1VTRSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9JTlZBTElEX0JPRFlfUEFSVF9OT1RfVFlQRSA9ICJfRVJST1JfSU5WQUxJRF9CT0RZX1BBUlRfTk9UX1RZUEUiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9CT0RZX1BBUlRfVU5ERUZJTkVEID0gIl9FUlJPUl9JTlZBTElEX0JPRFlfUEFSVF9VTkRFRklORUQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfTk9fU09BUEJJTkRJTkdfRk9SX0JPRFkgPSAiX0VSUk9SX05PX1NPQVBCSU5ESU5HX0ZPUl9CT0RZIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0hFQURFUl9NRVNTQUdFX1VOREVGSU5FRCA9ICJfRVJST1JfSEVBREVSX01FU1NBR0VfVU5ERUZJTkVEIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0hFQURFUl9QQVJUX1VOREVGSU5FRCA9ICJfRVJST1JfSEVBREVSX1BBUlRfVU5ERUZJTkVEIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0hFQURFUl9VU0VfVU5ERUZJTkVEID0gIl9FUlJPUl9IRUFERVJfVVNFX1VOREVGSU5FRCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9IRUFERVJfRU5DT0RJTkdTVFlMRV9VTkRFRklORUQgPSAiX0VSUk9SX0hFQURFUl9FTkNPRElOR1NUWUxFX1VOREVGSU5FRCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9IRUFERVJfTkFNRVNQQUNFX1VOREVGSU5FRCA9ICJfRVJST1JfSEVBREVSX05BTUVTUEFDRV9VTkRFRklORUQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfTk9fU09BUEJJTkRJTkdfRk9SX0hFQURFUiA9ICJfRVJST1JfTk9fU09BUEJJTkRJTkdfRk9SX0hFQURFUiI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9IRUFERVJGQVVMVF9NRVNTQUdFX1VOREVGSU5FRCA9ICJfRVJST1JfSEVBREVSRkFVTFRfTUVTU0FHRV9VTkRFRklORUQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSEVBREVSRkFVTFRfUEFSVF9VTkRFRklORUQgPSAiX0VSUk9SX0hFQURFUkZBVUxUX1BBUlRfVU5ERUZJTkVEIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0hFQURFUkZBVUxUX1VTRV9VTkRFRklORUQgPSAiX0VSUk9SX0hFQURFUkZBVUxUX1VTRV9VTkRFRklORUQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSEVBREVSRkFVTFRfRU5DT0RJTkdTVFlMRV9VTkRFRklORUQgPSAiX0VSUk9SX0hFQURFUkZBVUxUX0VOQ09ESU5HU1RZTEVfVU5ERUZJTkVEIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX0VSUk9SX0hFQURFUkZBVUxUX05BTUVTUEFDRV9VTkRFRklORUQgPSAiX0VSUk9SX0hFQURFUkZBVUxUX05BTUVTUEFDRV9VTkRFRklORUQiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9GQVVMVF9OQU1FID0gIl9FUlJPUl9JTlZBTElEX0ZBVUxUX05BTUUiOwotICAvL3ByaXZhdGUgZmluYWwgU3RyaW5nIF9FUlJPUl9JTlZBTElEX0ZBVUxUX0VOQ09ESU5HX1NUWUxFID0gIl9FUlJPUl9JTlZBTElEX0ZBVUxUX0VOQ09ESU5HX1NUWUxFIjsKLSAgLy9wcml2YXRlIGZpbmFsIFN0cmluZyBfRVJST1JfSU5WQUxJRF9GQVVMVF9OQU1FU1BBQ0VfRk9SX0VOQ09ERUQgPSAiX0VSUk9SX0lOVkFMSURfRkFVTFRfTkFNRVNQQUNFX0ZPUl9FTkNPREVEIjsKLSAgCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEVOQ09ERUQgPSAiZW5jb2RlZCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIExJVEVSQUwgPSAibGl0ZXJhbCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFJQQyA9ICJycGMiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBET0NVTUVOVCA9ICJkb2N1bWVudCI7Ci0gIAotICBwcml2YXRlIGZpbmFsIFN0cmluZyBRVU9URSA9ICInIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgRU1QVFlfU1RSSU5HID0gIiI7Ci0KLSAgcHJvdGVjdGVkIE1lc3NhZ2VHZW5lcmF0b3IgbWVzc2FnZWdlbmVyYXRvcjsKLSAKLSAgLyoqCi0gICAqIERlZmF1bHQgY29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgU09BUFZhbGlkYXRvcigpCi0gIHsKLQlSZXNvdXJjZUJ1bmRsZSByYiA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShTT0FQX1JFU09VUkNFX0JVTkRMRV9OQU1FLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKLQltZXNzYWdlZ2VuZXJhdG9yID0gbmV3IE1lc3NhZ2VHZW5lcmF0b3IocmIpOwotICB9Ci0gIAotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdG9yI3ZhbGlkYXRlKGphdmEubGFuZy5PYmplY3QsIGphdmEudXRpbC5MaXN0LCBvcmcuZWNsaXBzZS53c2RsLnZhbGlkYXRlLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm8pCi0gICAqLwotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZShPYmplY3QgZWxlbWVudCwgTGlzdCBwYXJlbnRzLCBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotICAgIC8vIFBvcnQgU09BUCBkZWZpbml0aW9uCi0gICAgLy8gbWFrZSBzdXJlIGV2ZXJ5IHBvcnQgaGFzIG9ubHkgb25lIGFkZHJlc3MgZWxlbWVudCBkZWZpbmVkCi0gICAgLy8gaWYgaXQgaXMgYW4gYWRkcmVzcyBlbGVtZW50LCB2YWxpZGF0ZSBpdAotICAgIGlmIChwYXJlbnRzLmdldCgwKS5nZXRDbGFzcygpID09IFBvcnRJbXBsLmNsYXNzKQotICAgIHsKLSAgICAgIGlmIChlbGVtZW50LmdldENsYXNzKCkgPT0gU09BUEFkZHJlc3NJbXBsLmNsYXNzKQotICAgICAgewotICAgICAgICB2YWxpZGF0ZUFkZHJlc3MoZWxlbWVudCwgcGFyZW50cywgdmFsSW5mbyk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGUgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZWxlbWVudDsKLSAgICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfSU5WQUxJRF9QT1JUX0VMRU1FTlQsIFFVT1RFICsgZS5nZXRFbGVtZW50VHlwZSgpLmdldExvY2FsUGFydCgpICsgUVVPVEUpLCBlbGVtZW50KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBCaW5kaW5nIFNPQVAgZGVmaW5pdGlvbgotICAgIC8vIEEgU09BUCBCaW5kaW5nIG11c3QgaGF2ZSBhIHN0eWxlIG9yIHJwYyBvciBkb2N1bWVudCBvciBubyBzdHlsZSBkZWZpbmVkIC0gZGVmYXVsdHMgdG8gZG9jdW1lbnQKLSAgICAvLyBNdXN0IGhhdmUgYSB0cmFuc3BvcnQgdXJpIGRlZmluZWQgLSBjaGVjayBpZiB0aGUgdXJpIGlzIGVtcHR5Ci0gICAgZWxzZSBpZiAocGFyZW50cy5nZXQoMCkuZ2V0Q2xhc3MoKSA9PSBCaW5kaW5nSW1wbC5jbGFzcykKLSAgICB7Ci0gICAgICBpZiAoZWxlbWVudC5nZXRDbGFzcygpID09IFNPQVBCaW5kaW5nSW1wbC5jbGFzcykKLSAgICAgIHsKLSAgICAgICAgdmFsaWRhdGVCaW5kaW5nKGVsZW1lbnQsIHBhcmVudHMsIHZhbEluZm8pOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWVsZW1lbnQ7Ci0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX0lOVkFMSURfQklORElOR19FTEVNRU5ULCBRVU9URSArIGUuZ2V0RWxlbWVudFR5cGUoKS5nZXRMb2NhbFBhcnQoKSArIFFVT1RFKSwgZWxlbWVudCk7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIEJpbmRpbmcgT3BlcmF0aW9uIFNPQVAgZGVmaW5pdGlvbgotICAgIC8vIEEgU09BUCBPcGVyYXRpb24gbWF5IGhhdmUgYSBzdHlsZSBkZWZpbmVkIGluIHdoaWNoIGNhc2UgaXQgbXVzdCBiZSBkb2N1bWVudCBvciBycGMKLSAgICAvLyBhbmQgbWF5IGhhdmUgYSBzb2FwQWN0aW9uIHVyaSBkZWZpbmVkCi0gICAgZWxzZSBpZiAocGFyZW50cy5nZXQoMCkuZ2V0Q2xhc3MoKSA9PSBCaW5kaW5nT3BlcmF0aW9uSW1wbC5jbGFzcykKLSAgICB7Ci0gICAgICBpZiAoZWxlbWVudC5nZXRDbGFzcygpID09IFNPQVBPcGVyYXRpb25JbXBsLmNsYXNzKQotICAgICAgewotICAgICAgICB2YWxpZGF0ZU9wZXJhdGlvbihlbGVtZW50LCBwYXJlbnRzLCB2YWxJbmZvKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCllbGVtZW50OwotICAgICAgICB2YWxJbmZvLmFkZEVycm9yKAotICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKAotICAgICAgICAgICAgICBfRVJST1JfSU5WQUxJRF9CSU5ESU5HX09QRVJBVElPTl9FTEVNRU5ULAotICAgICAgICAgICAgUVVPVEUgKyBlLmdldEVsZW1lbnRUeXBlKCkuZ2V0TG9jYWxQYXJ0KCkgKyBRVU9URSksIGVsZW1lbnQpOwotICAgICAgfQotCi0gICAgfQotICAgIGVsc2UgaWYgKAotICAgICAgcGFyZW50cy5nZXQoMCkuZ2V0Q2xhc3MoKSA9PSBCaW5kaW5nSW5wdXRJbXBsLmNsYXNzIHx8IHBhcmVudHMuZ2V0KDApLmdldENsYXNzKCkgPT0gQmluZGluZ091dHB1dEltcGwuY2xhc3MpCi0gICAgewotICAgICAgLy8gdmFsaWRhdGUgdGhlIFNPQVAgYm9keQotICAgICAgaWYgKGVsZW1lbnQuZ2V0Q2xhc3MoKSA9PSBTT0FQQm9keUltcGwuY2xhc3MpCi0gICAgICB7Ci0gICAgICAgIHZhbGlkYXRlQm9keShlbGVtZW50LCBwYXJlbnRzLCB2YWxJbmZvKTsKLSAgICAgIH0KLSAgICAgIC8vIHZhbGlhdGUgdGhlIFNPQVAgaGVhZGVyCi0gICAgICBlbHNlIGlmIChlbGVtZW50LmdldENsYXNzKCkgPT0gU09BUEhlYWRlckltcGwuY2xhc3MpCi0gICAgICB7Ci0gICAgICAgIHZhbGlkYXRlSGVhZGVyKGVsZW1lbnQsIHBhcmVudHMsIHZhbEluZm8pOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWVsZW1lbnQ7Ci0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX0lOVkFMSURfSEVBREVSX0JPRFlfRUxFTUVOVCwgUVVPVEUgKyBlLmdldEVsZW1lbnRUeXBlKCkuZ2V0TG9jYWxQYXJ0KCkgKyBRVU9URSksIGVsZW1lbnQpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChwYXJlbnRzLmdldCgwKS5nZXRDbGFzcygpID09IEJpbmRpbmdGYXVsdEltcGwuY2xhc3MpCi0gICAgewotICAgICAgaWYgKGVsZW1lbnQuZ2V0Q2xhc3MoKSA9PSBTT0FQRmF1bHRJbXBsLmNsYXNzKQotICAgICAgewotICAgICAgICB2YWxpZGF0ZUZhdWx0KGVsZW1lbnQsIHBhcmVudHMsIHZhbEluZm8pOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWVsZW1lbnQ7Ci0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX0lOVkFMSURfRkFVTFRfRUxFTUVOVCwgUVVPVEUgKyBlLmdldEVsZW1lbnRUeXBlKCkuZ2V0TG9jYWxQYXJ0KCkgKyBRVU9URSksIGVsZW1lbnQpOwotICAgICAgfQotICAgIH0KLSAgICAvLyBpbiB0aGlzIGNhc2UgdGhlcmUgaGFzIGJlZW4gYSBTT0FQIGVsZW1lbnQgZGVmaW5lZCB0aGF0IGlzIG5vdCBkZWZpbmVkIGZvciB0aGlzIHBvaW50IGluIHRoZSBTT0FQIG5hbWVzcGFjZQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWVsZW1lbnQ7Ci0gICAgICB2YWxJbmZvLmFkZEVycm9yKAotICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZygKLSAgICAgICAgICBfRVJST1JfSU5WQUxJRF9TT0FQX0VMRU1FTlRfRk9SX0xPQ0FUSU9OLAotICAgICAgICAgIFFVT1RFICsgZS5nZXRFbGVtZW50VHlwZSgpLmdldExvY2FsUGFydCgpICsgUVVPVEUpLCBlbGVtZW50KTsKLSAgICB9Ci0KLSAgfQotCi0gIC8qKgotICAgKiBFbnN1cmUgdGhhdCB0aGUgU09BUCBhZGRyZXNzIGhhcyBhIHZhbHVlIHNwZWNpZmllZCBmb3IgaXQncyB1cmkgYW5kIHRoYXQgdGhlIGJpbmRpbmcgaGFzIGEgU09BUAotICAgKiBCaW5kaW5nIGRlZmluZWQuCi0gICAqIAotICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgU09BUCBhZGRyZXNzIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBwYXJlbnRzIEEgbGlzdCBvZiBwYXJlbnRzIG9mIHRoZSBTT0FQIGFkZHJlc3MgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbEluZm8gVGhlIHZhbGlkYXRpb24gaW5mbyBmb3IgdGhpcyB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVBZGRyZXNzKE9iamVjdCBlbGVtZW50LCBMaXN0IHBhcmVudHMsIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKQotICB7Ci0gICAgU09BUEFkZHJlc3NJbXBsIHNhID0gKFNPQVBBZGRyZXNzSW1wbCllbGVtZW50OwotCi0gICAgU3RyaW5nIHVyaSA9IHNhLmdldExvY2F0aW9uVVJJKCk7Ci0gICAgaWYgKHVyaSA9PSBudWxsIHx8IHVyaS5lcXVhbHNJZ25vcmVDYXNlKEVNUFRZX1NUUklORykpCi0gICAgewotICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfTk9fTE9DQVRJT05fRk9SX0FERFJFU1MpLCBzYSk7Ci0gICAgfQotCi0gICAgUG9ydCBwb3J0ID0gKFBvcnQpcGFyZW50cy5nZXQoMCk7Ci0KLSAgICBCaW5kaW5nIGJpbmRpbmcgPSBwb3J0LmdldEJpbmRpbmcoKTsKLQotICAgIGlmICghaGFzU29hcEJpbmRpbmcoYmluZGluZykpCi0gICAgewotICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoCi0gICAgICAgICAgX0VSUk9SX05PX1NPQVBCSU5ESU5HX0ZPUl9BRERSRVNTLAotICAgICAgICAgIFFVT1RFICsgYmluZGluZy5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpICsgUVVPVEUsCi0gICAgICAgICAgUVVPVEUgKyBwb3J0LmdldE5hbWUoKSArIFFVT1RFKSwgc2EpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBFbnN1cmUgdGhlIFNPQVAgQmluZGluZyBkZWZpbmVkIGlzIHZhbGlkLiBBIFNPQVAgQmluZGluZyBtdXN0IGhhdmUgYSBzdHlsZSBvZiBycGMgb3IgZG9jdW1lbnQKLSAgICogb3Igbm8gc3R5bGUgZGVmaW5lZCAoZGVmYXVsdHMgdG8gZG9jdW1lbnQuKSAgQSB2YWxpZCAobm9uIGVtcHR5KSBVUkkgbXVzdCBhbHNvIGJlIHNwZWNpZmllZC4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBTT0FQIGJpbmRpbmcgZWxlbWVudC4KLSAgICogQHBhcmFtIHBhcmVudHMgQSBsaXN0IG9mIHBhcmVudHMgb2YgdGhlIFNPQVAgYmluZGluZyBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsSW5mbyBUaGUgdmFsaWRhdGlvbiBpbmZvIGZvciB0aGlzIHZhbGlkYXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2YWxpZGF0ZUJpbmRpbmcoT2JqZWN0IGVsZW1lbnQsIExpc3QgcGFyZW50cywgSVdTREwxMVZhbGlkYXRpb25JbmZvIHZhbEluZm8pCi0gIHsKLSAgICBTT0FQQmluZGluZ0ltcGwgc2IgPSAoU09BUEJpbmRpbmdJbXBsKWVsZW1lbnQ7Ci0KLSAgICBTdHJpbmcgc3R5bGUgPSBzYi5nZXRTdHlsZSgpOwotICAgIFN0cmluZyB1cmkgPSBzYi5nZXRUcmFuc3BvcnRVUkkoKTsKLQotICAgIGlmIChzdHlsZSAhPSBudWxsICYmICFzdHlsZS5lcXVhbHNJZ25vcmVDYXNlKFJQQykgJiYgIXN0eWxlLmVxdWFsc0lnbm9yZUNhc2UoRE9DVU1FTlQpKQotICAgIHsKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9JTlZBTElEX0JJTkRJTkdfU1RZTEUsIFFVT1RFICsgc2IuZ2V0U3R5bGUoKSArIFFVT1RFKSwgZWxlbWVudCk7Ci0gICAgfQotICAgIGlmICh1cmkuZXF1YWxzSWdub3JlQ2FzZShFTVBUWV9TVFJJTkcpKQotICAgIHsKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX0lOVkFMSURfQklORElOR19VUkkpLCBlbGVtZW50KTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQW4gb3BlcmF0aW9uIG1heSBoYXZlIGEgc3R5bGUgZGVmaW5lZC4gSWYgaXQgaXMgZGVmaW5lZCBpdCBtdXN0IGJlIHJwYyBvciBkb2N1bWVudC4gSXQgbWF5IGFsc28gaGF2ZSBhCi0gICAqIHVyaSBkZWZpbmVkIHdoaWNoIG11c3QgYmUgbm9uIGVtcHR5LiAgSXQgbWF5IGhhdmUgYSBzb2FwQWN0aW9uIGRlZmluZWQgYXMgd2VsbC4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBTT0FQIG9wZXJhdGlvbiBlbGVtZW50LgotICAgKiBAcGFyYW0gcGFyZW50cyBBIGxpc3Qgb2YgcGFyZW50cyBvZiB0aGUgU09BUCBvcGVyYXRpb24gZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbEluZm8gVGhlIHZhbGlkYXRpb24gaW5mbyBmb3IgdGhpcyB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVPcGVyYXRpb24oT2JqZWN0IGVsZW1lbnQsIExpc3QgcGFyZW50cywgSVdTREwxMVZhbGlkYXRpb25JbmZvIHZhbEluZm8pCi0gIHsKLSAgICBTT0FQT3BlcmF0aW9uIHNvID0gKFNPQVBPcGVyYXRpb24pZWxlbWVudDsKLQotICAgIFN0cmluZyBzb2FwU3R5bGUgPSBzby5nZXRTdHlsZSgpOwotCi0gICAgaWYgKHNvYXBTdHlsZSAhPSBudWxsICYmICFzb2FwU3R5bGUuZXF1YWxzSWdub3JlQ2FzZShSUEMpICYmICFzb2FwU3R5bGUuZXF1YWxzSWdub3JlQ2FzZShET0NVTUVOVCkpCi0gICAgewotICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfSU5WQUxJRF9PUEVSQVRJT05fU1RZTEUpLCBlbGVtZW50KTsKLSAgICB9Ci0KLSAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZylwYXJlbnRzLmdldCgxKTsKLSAgICBpZiAoIWhhc1NvYXBCaW5kaW5nKGJpbmRpbmcpKQotICAgIHsKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9OT19TT0FQQklORElOR19GT1JfT1BFUkFUSU9OLCBRVU9URSArIGJpbmRpbmcuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSArIFFVT1RFKSwgc28pOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZSB0aGUgU09BUCBib2R5LiBJZiBlbmNvZGVkIGEgYm9keSBtdXN0IGhhdmUgYW4gZW5jb2RpbmdTdHlsZS4gQWxzbywKLSAgICogaWYgc3BlY2lmaWVkLCBhbGwgb2YgdGhlIHBhcnRzIGxpc3RlZCBtdXN0IGJlIGRlZmluZWQgcGFydHMgYW5kIGluIHRoZSBlbmNvZGluZyB1c2UgY2FzZSwgdGhlIHBhcnRzCi0gICAqIG11c3QgaGF2ZSB0eXBlcyBkZWZpbmVkLgotICAgKiAKLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIFNPQVAgYm9keSBlbGVtZW50LgotICAgKiBAcGFyYW0gcGFyZW50cyBBIGxpc3Qgb2YgcGFyZW50cyBvZiB0aGUgU09BUCBib2R5IGVsZW1lbnQuCi0gICAqIEBwYXJhbSB2YWxJbmZvIFRoZSB2YWxpZGF0aW9uIGluZm8gZm9yIHRoaXMgdmFsaWRhdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZhbGlkYXRlQm9keShPYmplY3QgZWxlbWVudCwgTGlzdCBwYXJlbnRzLCBJV1NETDExVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotICAgIFNPQVBCb2R5SW1wbCBzYiA9IChTT0FQQm9keUltcGwpZWxlbWVudDsKLQotICAgIFN0cmluZyB1c2UgPSBzYi5nZXRVc2UoKTsKLQotICAgIC8vIGlmIHRoZSB1c2UgPSBlbmNvZGVkIHRoZW4gdGhlcmUgbXVzdCBiZSBlbmNvZGluZ1N0eWxlcy4KLSAgICBpZiAodXNlICE9IG51bGwgJiYgdXNlLmVxdWFsc0lnbm9yZUNhc2UoRU5DT0RFRCkpCi0gICAgewotICAgICAgTGlzdCBlbmNvZGluZ1N0eWxlcyA9IHNiLmdldEVuY29kaW5nU3R5bGVzKCk7Ci0gICAgICBpZiAoZW5jb2RpbmdTdHlsZXMgPT0gbnVsbCB8fCBlbmNvZGluZ1N0eWxlcy5zaXplKCkgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfSU5WQUxJRF9CT0RZX0VOQ09ESU5HX1NUWUxFKSwgc2IpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmICh1c2UgIT0gbnVsbCAmJiAhdXNlLmVxdWFsc0lnbm9yZUNhc2UoTElURVJBTCkpCi0gICAgewotICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfSU5WQUxJRF9CT0RZX1VTRSwgUVVPVEUgKyB1c2UgKyBRVU9URSksIHNiKTsKLSAgICB9Ci0KLSAgICAvL0NoZWNrIHRoYXQgdGhlIHBhcnRzIGFyZSB2YWxpZAotICAgIC8vIHBhcnRzIG11c3QgYmUgZGVmaW5lZCBpbiB0aGUgbWVzc2FnZSBzcGVjaWZpZWQgZm9yIHRoZSBvcGVyYXRpb24KLSAgICBMaXN0IHBhcnRzID0gc2IuZ2V0UGFydHMoKTsKLQotICAgIGlmIChwYXJ0cyAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIHBhcnRzSXRlcmF0b3IgPSBwYXJ0cy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKHBhcnRzSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBTdHJpbmcgcGFydCA9IChTdHJpbmcpcGFydHNJdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgIEJpbmRpbmdPcGVyYXRpb24gYm8gPSAoQmluZGluZ09wZXJhdGlvbilwYXJlbnRzLmdldCgxKTsKLSAgICAgICAgT3BlcmF0aW9uIG8gPSBiby5nZXRPcGVyYXRpb24oKTsKLQotICAgICAgICBpZiAobyAhPSBudWxsICYmICFvLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBnZXQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgaW5wdXQgb3Igb3V0cHV0IGlmIGl0IGV4aXN0cwotICAgICAgICAgIE1lc3NhZ2UgbWVzcyA9IG51bGw7Ci0gICAgICAgICAgaWYgKHBhcmVudHMuZ2V0KDApLmdldENsYXNzKCkgPT0gQmluZGluZ0lucHV0SW1wbC5jbGFzcykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBJbnB1dCBpbnB1dCA9IG8uZ2V0SW5wdXQoKTsKLQotICAgICAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG1lc3MgPSBpbnB1dC5nZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHBhcmVudHMuZ2V0KDApLmdldENsYXNzKCkgPT0gQmluZGluZ091dHB1dEltcGwuY2xhc3MpCi0gICAgICAgICAgewotICAgICAgICAgICAgT3V0cHV0IG91dHB1dCA9IG8uZ2V0T3V0cHV0KCk7Ci0KLSAgICAgICAgICAgIGlmIChvdXRwdXQgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbWVzcyA9IG91dHB1dC5nZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKG1lc3MgIT0gbnVsbCAmJiAhbWVzcy5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFBhcnQgcCA9IG1lc3MuZ2V0UGFydChwYXJ0KTsKLQotICAgICAgICAgICAgaWYgKHAgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy8gaWYgdGhlIHVzZSBpcyBlbmNvZGVkIHRoZSBwYXJ0cyBtdXN0IGFsbCBoYXZlIGEgdHlwZSBkZWZpbmVkCi0gICAgICAgICAgICAgIGlmICh1c2UgIT0gbnVsbCAmJiB1c2UuZXF1YWxzSWdub3JlQ2FzZShFTkNPREVEKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChwLmdldFR5cGVOYW1lKCkgPT0gbnVsbCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAvLyBwYXJ0IGVycm9yIC0gcGFydCBuZWVkcyB0byBiZSB0eXBlIGFuZCBpc24ndAkKLSAgICAgICAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9JTlZBTElEX0JPRFlfUEFSVF9OT1RfVFlQRSwgUVVPVEUgKyBwYXJ0ICsgUVVPVEUpLCBzYik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vcGFydCBlcnJvciAtIHBhcnQgaXNuJ3QgZGVmaW5lZAkKLSAgICAgICAgICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfSU5WQUxJRF9CT0RZX1BBUlRfVU5ERUZJTkVELCBRVU9URSArIHBhcnQgKyBRVU9URSksIHNiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vcGFydCBlcnJvciAtIGlucHV0IGlzbid0IGRlZmluZWQKLSAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9JTlZBTElEX0JPRFlfUEFSVF9VTkRFRklORUQsIFFVT1RFICsgcGFydCArIFFVT1RFKSwgc2IpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBwYXJ0cyBlcnJvciAtIG9wZXJhdGlvbiBpc24ndCBkZWZpbmVkCi0gICAgICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9JTlZBTElEX0JPRFlfUEFSVF9VTkRFRklORUQsIFFVT1RFICsgcGFydCArIFFVT1RFKSwgc2IpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpcGFyZW50cy5nZXQoMik7Ci0gICAgaWYgKCFoYXNTb2FwQmluZGluZyhiaW5kaW5nKSkKLSAgICB7Ci0gICAgICB2YWxJbmZvLmFkZEVycm9yKAotICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfTk9fU09BUEJJTkRJTkdfRk9SX0JPRFksIFFVT1RFICsgYmluZGluZy5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpICsgUVVPVEUpLCBzYik7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEEgU09BUCBoZWFkZXIgbXVzdCBoYXZlIGEgbWVzc2FnZSwgcGFydCBhbmQgdXNlIGRlZmluZWQuIElmIHRoZSB1c2UgaXMgZW5jb2RlZCwgbXVzdAotICAgKiBhbHNvIGhhdmUgYSBub24tZW1wdHkgZW5jb2RpbmdTdHlsZSBhbmQgbmFtZXNwYWNlIGRlZmluZWQuCi0gICAqIEEgU09BUCBoZWFkZXIgbWF5IGhhdmUgaGVhZGVyZmF1bHRzIGRlZmluZWQgYXMgd2VsbC4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBTT0FQIGhlYWRlciBlbGVtZW50LgotICAgKiBAcGFyYW0gcGFyZW50cyBBIGxpc3Qgb2YgcGFyZW50cyBvZiB0aGUgU09BUCBoZWFkZXIgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbEluZm8gVGhlIHZhbGlkYXRpb24gaW5mbyBmb3IgdGhpcyB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVIZWFkZXIoT2JqZWN0IGVsZW1lbnQsIExpc3QgcGFyZW50cywgSVdTREwxMVZhbGlkYXRpb25JbmZvIHZhbEluZm8pCi0gIHsKLSAgICBTT0FQSGVhZGVySW1wbCBzb2FwSGVhZGVyID0gKFNPQVBIZWFkZXJJbXBsKWVsZW1lbnQ7Ci0KLSAgICBRTmFtZSBtZXNzYWdlUU5hbWUgPSBzb2FwSGVhZGVyLmdldE1lc3NhZ2UoKTsKLSAgICBNZXNzYWdlIG1lc3NhZ2UgPSAoKERlZmluaXRpb24pcGFyZW50cy5nZXQocGFyZW50cy5zaXplKCkgLSAxKSkuZ2V0TWVzc2FnZShtZXNzYWdlUU5hbWUpOwotICAgIGlmIChtZXNzYWdlID09IG51bGwpCi0gICAgewotICAgICAgLy8gbWVzc2FnZSB1bmRlZmluZWQKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9IRUFERVJfTUVTU0FHRV9VTkRFRklORUQsIFFVT1RFICsgbWVzc2FnZVFOYW1lLmdldExvY2FsUGFydCgpICsgUVVPVEUpLCBzb2FwSGVhZGVyKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFN0cmluZyBwYXJ0bmFtZSA9IHNvYXBIZWFkZXIuZ2V0UGFydCgpOwotICAgICAgUGFydCBwYXJ0ID0gbWVzc2FnZS5nZXRQYXJ0KHBhcnRuYW1lKTsKLSAgICAgIGlmIChwYXJ0ID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIHBhcnQgdW5kZWZpbmVkCi0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoCi0gICAgICAgICAgICBfRVJST1JfSEVBREVSX1BBUlRfVU5ERUZJTkVELAotICAgICAgICAgICAgUVVPVEUgKyBwYXJ0bmFtZSArIFFVT1RFLAotICAgICAgICAgICAgUVVPVEUgKyBtZXNzYWdlUU5hbWUuZ2V0TG9jYWxQYXJ0KCkgKyBRVU9URSksIHNvYXBIZWFkZXIpOwotICAgICAgfQotICAgIH0KLQotICAgIFN0cmluZyB1c2UgPSBzb2FwSGVhZGVyLmdldFVzZSgpOwotICAgIGlmICh1c2UgIT0gbnVsbCAmJiAhdXNlLmVxdWFsc0lnbm9yZUNhc2UoTElURVJBTCkgJiYgIXVzZS5lcXVhbHNJZ25vcmVDYXNlKEVOQ09ERUQpKQotICAgIHsKLSAgICAgIC8vIHVzZSB1bmRlZmluZWQKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9IRUFERVJfVVNFX1VOREVGSU5FRCwgUVVPVEUgKyB1c2UgKyBRVU9URSksIHNvYXBIZWFkZXIpOwotICAgIH0KLQotICAgIGlmICh1c2UuZXF1YWxzSWdub3JlQ2FzZShFTkNPREVEKSkKLSAgICB7Ci0gICAgICBMaXN0IGVuY29kaW5nU3R5bGVzID0gc29hcEhlYWRlci5nZXRFbmNvZGluZ1N0eWxlcygpOwotICAgICAgaWYgKGVuY29kaW5nU3R5bGVzID09IG51bGwgfHwgZW5jb2RpbmdTdHlsZXMuaXNFbXB0eSgpKQotICAgICAgewotICAgICAgICAvLyBubyBlbmNvZGluZ1N0eWxlIGRlZmluZWQKLSAgICAgICAgdmFsSW5mby5hZGRFcnJvcihtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfSEVBREVSX0VOQ09ESU5HU1RZTEVfVU5ERUZJTkVEKSwgc29hcEhlYWRlcik7Ci0gICAgICB9Ci0KLSAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBzb2FwSGVhZGVyLmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsIHx8IG5hbWVzcGFjZS5lcXVhbHNJZ25vcmVDYXNlKEVNUFRZX1NUUklORykpCi0gICAgICB7Ci0gICAgICAgIC8vIG5vIG5hbWVzcGFjZSBkZWZpbmVkCi0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IobWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX0hFQURFUl9OQU1FU1BBQ0VfVU5ERUZJTkVEKSwgc29hcEhlYWRlcik7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgTGlzdCBoZWFkZXJGYXVsdHMgPSBzb2FwSGVhZGVyLmdldFNPQVBIZWFkZXJGYXVsdHMoKTsKLSAgICBpZiAoaGVhZGVyRmF1bHRzICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaWhlYWRlckZhdWx0cyA9IGhlYWRlckZhdWx0cy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGloZWFkZXJGYXVsdHMuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICB2YWxpZGF0ZUhlYWRlckZhdWx0KGloZWFkZXJGYXVsdHMubmV4dCgpLCBwYXJlbnRzLCB2YWxJbmZvKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZylwYXJlbnRzLmdldCgyKTsKLSAgICBpZiAoIWhhc1NvYXBCaW5kaW5nKGJpbmRpbmcpKQotICAgIHsKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9OT19TT0FQQklORElOR19GT1JfSEVBREVSLCBRVU9URSArIGJpbmRpbmcuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSArIFFVT1RFKSwgc29hcEhlYWRlcik7Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogQSBTT0FQIGhlYWRlcmZhdWx0IG11c3QgaGF2ZSBhIG1lc3NhZ2UsIHBhcnQgYW5kIHVzZSBkZWZpbmVkLiBJZiB0aGUgdXNlIGlzIGVuY29kZWQsIG11c3QKLSAgICogYWxzbyBoYXZlIGEgbm9uLWVtcHR5IGVuY29kaW5nU3R5bGUgYW5kIG5hbWVzcGFjZSBkZWZpbmVkLgotICAgKiAKLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIFNPQVAgaGVhZGVyIGZhdWx0IGVsZW1lbnQuCi0gICAqIEBwYXJhbSBwYXJlbnRzIEEgbGlzdCBvZiBwYXJlbnRzIG9mIHRoZSBTT0FQIGhlYWRlciBmYXVsdCBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsSW5mbyBUaGUgdmFsaWRhdGlvbiBpbmZvIGZvciB0aGlzIHZhbGlkYXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2YWxpZGF0ZUhlYWRlckZhdWx0KE9iamVjdCBlbGVtZW50LCBMaXN0IHBhcmVudHMsIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKQotICB7Ci0gICAgU09BUEhlYWRlckZhdWx0SW1wbCBzb2FwSGVhZGVyRmF1bHQgPSAoU09BUEhlYWRlckZhdWx0SW1wbCllbGVtZW50OwotCi0gICAgUU5hbWUgbWVzc2FnZVFOYW1lID0gc29hcEhlYWRlckZhdWx0LmdldE1lc3NhZ2UoKTsKLSAgICBNZXNzYWdlIG1lc3NhZ2UgPSAoKERlZmluaXRpb24pcGFyZW50cy5nZXQocGFyZW50cy5zaXplKCkgLSAxKSkuZ2V0TWVzc2FnZShtZXNzYWdlUU5hbWUpOwotICAgIGlmIChtZXNzYWdlID09IG51bGwpCi0gICAgewotICAgICAgLy8gbWVzc2FnZSB1bmRlZmluZWQKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9IRUFERVJGQVVMVF9NRVNTQUdFX1VOREVGSU5FRCwgUVVPVEUgKyBtZXNzYWdlUU5hbWUuZ2V0TG9jYWxQYXJ0KCkgKyBRVU9URSksIHNvYXBIZWFkZXJGYXVsdCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBTdHJpbmcgcGFydG5hbWUgPSBzb2FwSGVhZGVyRmF1bHQuZ2V0UGFydCgpOwotICAgICAgUGFydCBwYXJ0ID0gbWVzc2FnZS5nZXRQYXJ0KHBhcnRuYW1lKTsKLSAgICAgIGlmIChwYXJ0ID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIHBhcnQgdW5kZWZpbmVkCi0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoCi0gICAgICAgICAgICBfRVJST1JfSEVBREVSRkFVTFRfUEFSVF9VTkRFRklORUQsCi0gICAgICAgICAgICBRVU9URSArIHBhcnRuYW1lICsgUVVPVEUsCi0gICAgICAgICAgICBRVU9URSArIG1lc3NhZ2VRTmFtZS5nZXRMb2NhbFBhcnQoKSArIFFVT1RFKSwgc29hcEhlYWRlckZhdWx0KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBTdHJpbmcgdXNlID0gc29hcEhlYWRlckZhdWx0LmdldFVzZSgpOwotICAgIGlmICh1c2UgIT0gbnVsbCAmJiAhdXNlLmVxdWFsc0lnbm9yZUNhc2UoTElURVJBTCkgJiYgIXVzZS5lcXVhbHNJZ25vcmVDYXNlKEVOQ09ERUQpKQotICAgIHsKLSAgICAgIC8vIHVzZSB1bmRlZmluZWQKLSAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9FUlJPUl9IRUFERVJGQVVMVF9VU0VfVU5ERUZJTkVELCBRVU9URSArIHVzZSArIFFVT1RFKSwgc29hcEhlYWRlckZhdWx0KTsKLSAgICB9Ci0KLSAgICBpZiAodXNlLmVxdWFsc0lnbm9yZUNhc2UoRU5DT0RFRCkpCi0gICAgewotICAgICAgTGlzdCBlbmNvZGluZ1N0eWxlcyA9IHNvYXBIZWFkZXJGYXVsdC5nZXRFbmNvZGluZ1N0eWxlcygpOwotICAgICAgaWYgKGVuY29kaW5nU3R5bGVzID09IG51bGwgfHwgZW5jb2RpbmdTdHlsZXMuaXNFbXB0eSgpKQotICAgICAgewotICAgICAgICAvLyBubyBlbmNvZGluZ1N0eWxlIGRlZmluZWQKLSAgICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgICBtZXNzYWdlZ2VuZXJhdG9yLmdldFN0cmluZyhfRVJST1JfSEVBREVSRkFVTFRfRU5DT0RJTkdTVFlMRV9VTkRFRklORUQpLCBzb2FwSGVhZGVyRmF1bHQpOwotICAgICAgfQotCi0gICAgICBTdHJpbmcgbmFtZXNwYWNlID0gc29hcEhlYWRlckZhdWx0LmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsIHx8IG5hbWVzcGFjZS5lcXVhbHNJZ25vcmVDYXNlKEVNUFRZX1NUUklORykpCi0gICAgICB7Ci0gICAgICAgIC8vIG5vIG5hbWVzcGFjZSBkZWZpbmVkCi0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX0hFQURFUkZBVUxUX05BTUVTUEFDRV9VTkRFRklORUQpLCBzb2FwSGVhZGVyRmF1bHQpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAqIFZhbGlkYXRlIHRoZSBTT0FQIGZhdWx0LiBBIFNPQVAgZmF1bHQgbXVzdCBoYXZlIGEgbmFtZSBkZWZpbmVkIHRoYXQgY29ycmVzcG9uZHMgd2l0aCB0aGUgbmFtZQotICAqIHNwZWNpZmllZCBpbiB0aGUgcG9ydFR5cGUuICBJZiBlbmNvZGVkIGEgZmF1bHQgbXVzdCBoYXZlIGFuIGVuY29kaW5nU3R5bGUgYW5kIGEgbmFtZXNwYWNlVVJJLiAKLSAgKiAKLSAgKiBAcGFyYW0gZWxlbWVudCBUaGUgU09BUCBmYXVsdCBlbGVtZW50LgotICAgKiBAcGFyYW0gcGFyZW50cyBBIGxpc3Qgb2YgcGFyZW50cyBvZiB0aGUgU09BUCBmYXVsdCBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsaWRhdGlvbkluZm8gVGhlIHZhbGlkYXRpb24gaW5mbyBmb3IgdGhpcyB2YWxpZGF0aW9uLgotICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2YWxpZGF0ZUZhdWx0KE9iamVjdCBlbGVtZW50LCBMaXN0IHBhcmVudHMsIElXU0RMMTFWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKQotICB7Ci0gICAgU09BUEZhdWx0SW1wbCBmYXVsdCA9IChTT0FQRmF1bHRJbXBsKWVsZW1lbnQ7Ci0KLSAgICBTdHJpbmcgbmFtZSA9IGZhdWx0LmdldE5hbWUoKTsKLQotICAgIFN0cmluZyBwYXJlbnROYW1lID0gKChCaW5kaW5nRmF1bHQpcGFyZW50cy5nZXQoMCkpLmdldE5hbWUoKTsKLQotICAgIGlmICghbmFtZS5lcXVhbHMocGFyZW50TmFtZSkpCi0gICAgewotICAgICAgdmFsSW5mby5hZGRFcnJvcigKLSAgICAgICAgbWVzc2FnZWdlbmVyYXRvci5nZXRTdHJpbmcoX0VSUk9SX0lOVkFMSURfRkFVTFRfTkFNRSwgUVVPVEUgKyBuYW1lICsgUVVPVEUsIFFVT1RFICsgcGFyZW50TmFtZSArIFFVT1RFKSwgZmF1bHQpOwotICAgIH0KLQotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBoYXNTb2FwQmluZGluZy4gLSBoZWxwZXIgTWV0aG9kCi0gICAqIEdpdmVuIGEgYmluZGluZyByZXR1cm5zIHRydWUgaWYgaXQgaGFzIGEgU09BUCBiaW5kaW5nIGRlZmluZWQuCi0gICAqIAotICAgKiBAcGFyYW0gYmluZGluZyAtIHRoZSBTT0FQIGJpbmRpbmcgdG8gY2hlY2sKLSAgICogQHJldHVybiB0cnVlIGlmIGEgYmluZGluZyBoYXMgYSBTT0FQIGJpbmRpbmcgZGVmaW5lZCwgZmFsc2Ugb3RoZXJ3aXNlCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBoYXNTb2FwQmluZGluZyhCaW5kaW5nIGJpbmRpbmcpCi0gIHsKLSAgICBpZiAoYmluZGluZyAhPSBudWxsKQotICAgIHsKLSAgICAgIExpc3QgZXh0ZWxlbXMgPSBiaW5kaW5nLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgaWYgKGV4dGVsZW1zICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIEl0ZXJhdG9yIGlleHRlbGVtcyA9IGV4dGVsZW1zLml0ZXJhdG9yKCk7Ci0gICAgICAgIHdoaWxlIChpZXh0ZWxlbXMuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGlleHRlbGVtcy5uZXh0KCkuZ2V0Q2xhc3MoKSA9PSBTT0FQQmluZGluZ0ltcGwuY2xhc3MpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvRE9NRXJyb3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEveHNkL0RPTUVycm9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyOWIxMTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvRE9NRXJyb3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiAgICAgCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS54c2Q7Ci0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBzaWduaWZ5IGVycm9yIGxldmVscyB0aGF0IGFyZSB0aGUgcmVzdWx0IG9mCi0gKiBYTUxQYXJzZUV4Y2VwdGlvbi4gVGhleSBjb25jZXB0dWFsbHkgY29ycmVzcG9uZCB0byBvcmcudzNjLmRvbS5ET01FcnJvciBidXQKLSAqIHdlIHVzZSBvdXIgb3duIGludGVyZmFjZSwgc2luY2UgRE9NRXJyb3IgaXMgbm90IGluIEphdmEgMS40LCBhbmQgaXRzCi0gKiBwYWNrYWdlIGNoYW5nZXMgZnJvbSBYZXJjZXMgMi42LjIgYW5kIFhlcmNlcyAyLjcuMC4KLSAqLwotCi1wdWJsaWMgaW50ZXJmYWNlIERPTUVycm9yIHsKLQlpbnQgU0VWRVJJVFlfV0FSTklORyA9IDE7Ci0JaW50IFNFVkVSSVRZX0VSUk9SID0gMjsKLQlpbnQgU0VWRVJJVFlfRkFUQUxfRVJST1IgPSAzOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvRmlsZUVudGl0eVJlc29sdmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9GaWxlRW50aXR5UmVzb2x2ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY1MzkyZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9GaWxlRW50aXR5UmVzb2x2ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS54c2Q7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MUmVzb3VyY2VJZGVudGlmaWVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFbnRpdHlSZXNvbHZlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTElucHV0U291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudXRpbC5MYXp5VVJMSW5wdXRTdHJlYW07Ci0KLS8qKgotICogRW50aXR5IHJlc29sdmUgdG8gcmVzb2x2ZSBmaWxlIGVudGl0aWVzLgotICovCi1wdWJsaWMgY2xhc3MgRmlsZUVudGl0eVJlc29sdmVyIGltcGxlbWVudHMgWE1MRW50aXR5UmVzb2x2ZXIKLXsKLQotICAvKioKLSAgICogQHNlZSBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTEVudGl0eVJlc29sdmVyI3Jlc29sdmVFbnRpdHkob3JnLmFwYWNoZS54ZXJjZXMueG5pLlhNTFJlc291cmNlSWRlbnRpZmllcikKLSAgICovCi0gIHB1YmxpYyBYTUxJbnB1dFNvdXJjZSByZXNvbHZlRW50aXR5KFhNTFJlc291cmNlSWRlbnRpZmllciByZXNvdXJjZSkgdGhyb3dzIFhOSUV4Y2VwdGlvbiwgSU9FeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBwdWJsaWNJZCA9IHJlc291cmNlLmdldFB1YmxpY0lkKCk7Ci0gICAgU3RyaW5nIHN5c3RlbUlkID0gcmVzb3VyY2UuZ2V0RXhwYW5kZWRTeXN0ZW1JZCgpOwotICAgIFN0cmluZyBuYW1lc3BhY2UgPSByZXNvdXJjZS5nZXROYW1lc3BhY2UoKTsKLSAgICBTdHJpbmcgdXJsID0gbnVsbDsKLSAgICBpZihzeXN0ZW1JZCAhPSBudWxsKQotICAgIHsKLSAgICAgIHVybCA9IHN5c3RlbUlkOwotICAgIH0KLSAgICBlbHNlIGlmKHB1YmxpY0lkICE9IG51bGwpCi0gICAgewotICAgICAgdXJsID0gcHVibGljSWQ7Ci0gICAgfQotICAgIGVsc2UgaWYobmFtZXNwYWNlICE9IG51bGwpCi0gICAgewotICAgICAgdXJsID0gbmFtZXNwYWNlOwotICAgIH0KLSAgICBpZih1cmwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJbnB1dFN0cmVhbSBpcyA9IG5ldyBMYXp5VVJMSW5wdXRTdHJlYW0odXJsKTsKLSAgICAgIHJldHVybiBuZXcgWE1MSW5wdXRTb3VyY2UocHVibGljSWQsIHJlc291cmNlLmdldEV4cGFuZGVkU3lzdGVtSWQoKSwgcmVzb3VyY2UuZ2V0RXhwYW5kZWRTeXN0ZW1JZCgpLCBpcywgbnVsbCk7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEveHNkL0lubGluZVNjaGVtYUdlbmVyYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvSW5saW5lU2NoZW1hR2VuZXJhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYTE5MzAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvSW5saW5lU2NoZW1hR2VuZXJhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2ODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLWltcG9ydCBjb20uaWJtLndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hQ29uc3RhbnRzOwotCi0vKioKLSAqIEdlbmVyYXRlIGEgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgc2NoZW1hIGZvciBhbiBpbmxpbmUgc2NoZW1hLiBXaWxsIGFkZCBpbXBvcnRzIGZvciB1bnJlc29sdmVkCi0gKiBuYW1lc3BhY2VzLgotICovCi1wdWJsaWMgY2xhc3MgSW5saW5lU2NoZW1hR2VuZXJhdG9yCi17Ci0gIC8qKgotICAgKiBHZW5lcmF0aW5nIGltcG9ydCBzdGF0ZW1lbnRzIGZvciBpbmxpbmUgc2NoZW1hIHJlZmVyZW5jZXMgaXMgCi0gICAqIGludmFsaWQgYWNjb3JkaW5nIHRvIHRoZSBXU0RMIHNwZWMuIEFzIHNvbWUgb2xkZXIgY2xpZW50cyAoV1NWVCkgbWF5Ci0gICAqIGRlcGVuZCBvbiB0aGlzIGZ1bmN0aW9uYWxpdHkgdGhlIG9wdGlvbiB0byBhbGxvdyB0aGlzIGlzIGxlZnQKLSAgICogaW4uIFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgcG9zdCAxLjUuCi0gICAqIFRPRE86IFJldmlldyByZW1vdmluZyB0aGlzIHByZWZlcmVuY2UuCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGJvb2xlYW4gR0VORVJBVEVfSU5MSU5FX0lNUE9SVFMgPSBmYWxzZTsKLSAgCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFNPQVBfRU5DT0RJTkdfVVJJID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgRklMRV9QUkVGSVggPSAiZmlsZTovLy8iOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBYTUxOUyA9ICJ4bWxucyI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFRBUkdFVE5BTUVTUEFDRSA9ICJ0YXJnZXROYW1lc3BhY2UiOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FU1BBQ0UgPSAibmFtZXNwYWNlIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU1QT1JUID0gImltcG9ydCI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIElOQ0xVREUgPSAiaW5jbHVkZSI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFNDSEVNQSA9ICJzY2hlbWEiOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0hFTUFMT0NBVElPTiA9ICJzY2hlbWFMb2NhdGlvbiI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEUgPSAidHlwZSI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUUgPSAibmFtZSI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nW10gaWdub3JlTmFtZXNwYWNlcyA9Ci0gICAgeyBTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8xOTk5LCBTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAwLCBTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxIH07Ci0KLSAgcHJvdGVjdGVkIHN0YXRpYyBJbmxpbmVTY2hlbWFHZW5lcmF0b3IgaW5zdGFuY2UgPSBudWxsOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICovCi0gIHByb3RlY3RlZCBJbmxpbmVTY2hlbWFHZW5lcmF0b3IoKQotICB7Ci0JU3RyaW5nIGdlbklubGluZUltcG9ydHMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIndzZGwucmVxdWlyZS5pbmxpbmUuaW1wb3J0cyIpOwotCWlmKGdlbklubGluZUltcG9ydHMgIT0gbnVsbCAmJiBnZW5JbmxpbmVJbXBvcnRzLmVxdWFscygiZmFsc2UiKSkKLQl7Ci0JICBHRU5FUkFURV9JTkxJTkVfSU1QT1JUUyA9IHRydWU7Ci0JfQotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgaW5zdGFuY2Ugb2YgdGhlIElubGluZVNjaGVtYUdlbmVyYXRvci4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGluc3RhbmNlIG9mIHRoZSBpbmxpbmUgc2NoZW1hIGdlbmVyYXRvci4KLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgSW5saW5lU2NoZW1hR2VuZXJhdG9yIGdldEluc3RhbmNlKCkKLSAgewotICAgIGlmIChpbnN0YW5jZSA9PSBudWxsKQotICAgIHsKLSAgICAgIGluc3RhbmNlID0gbmV3IElubGluZVNjaGVtYUdlbmVyYXRvcigpOwotICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzY2hlbWEgZnJvbSB0aGUgZWxlbWVudCBwcm92aWRlZC4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtZW50IFRoZSByb290IGVsZW1lbnQgb2YgdGhlIHNjaGVtYS4KLSAgICogQHBhcmFtIGVsZW1lbnRzIEEgbGlzdCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNjaGVtYSBpbiBvcmRlci4KLSAgICogQHBhcmFtIGZpbGVsb2NhdGlvbiBUaGUgVVJJIG9mIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHNjaGVtYS4KLSAgICogQHBhcmFtIHZhbGlkSW1wb3J0TlNzIEEgc2V0IG9mIG5hbWVzcGFjZXMgZm9yIHdoaWNoIGl0J3MgdmFsaWQgdG8gY3JlYXRlIGltcG9ydCBzdGF0ZW1lbnRzLgotICAgKiBAcmV0dXJuIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgc2NoZW1hLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgY3JlYXRlWFNEU3RyaW5nKEVsZW1lbnQgZWxlbWVudCwgTGlzdCBlbGVtZW50cywgU3RyaW5nIGZpbGVsb2NhdGlvbiwgU2V0IHZhbGlkSW1wb3J0TlNzKQotICB7Ci0JICByZXR1cm4gSW5saW5lU2NoZW1hR2VuZXJhdG9yLmNyZWF0ZVhTRFN0cmluZyhlbGVtZW50LCBlbGVtZW50cywgZmlsZWxvY2F0aW9uLCBuZXcgSGFzaHRhYmxlKCksIHZhbGlkSW1wb3J0TlNzKTsKLSAgfQotICAKLSAgLyoqCi0gIAkqIENyZWF0ZXMgYSBTdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzY2hlbWEgbW9kZWwgd2l0aCB0aGUgcm9vdCBlbGVtZW50IG9mCi0gIAkqIGV4dEVsZW0uIENhbGxzIGNyZWF0ZVhTRFN0cmluZ1JlY3Vyc2l2ZWx5IHRvIHRha2UgY2FyZSBvZiBidWlsZGluZyB0aGUgU3RyaW5nCi0gIAkqIGFmdGVyIGl0IG9idGFpbnMgdGhlIEVsZW1lbnQgZnJvbSB0aGUgVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50LgotICAJKiAKLSAgCSogQHBhcmFtIGVsZW1lbnQgVGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgc2NoZW1hLgotICAJKiBAcGFyYW0gZWxlbWVudHMgQSBsaXN0IHRvIGNvbnRhaW4gdGhlIGVsZW1lbnRzIGluIHRoZSBzY2hlbWEgaW4gb3JkZXIuCi0gIAkqIEBwYXJhbSBmaWxlbG9jYXRpb24gVGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlIHRoZSBzY2hlbWEgaXMgbG9jYXRlZCBpbi4KLSAgCSogQHBhcmFtIHBhcmVudE5TcyBBIGhhc2h0YWJsZSBvZiBwYXJlbnQgbmFtZXNwYWNlcyB0byB1c2VkIHRvIHJlc29sdmUgcHJlZml4ZXMuCi0gIAkqIEBwYXJhbSB2YWxpZEltcG9ydE5TcyBBIHNldCBvZiBuYW1lc3BhY2VzIGZvciB3aGljaCBpdCdzIHZhbGlkIHRvIGNyZWF0ZSBpbXBvcnQgc3RhdGVtZW50cy4KLSAgCSogQHJldHVybiBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2NoZW1hIHdpdGggdGhlIHJvb3QgZWxlbWVudCAnZWxlbWVudCcuCi0gIAkqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBjcmVhdGVYU0RTdHJpbmcoRWxlbWVudCBlbGVtZW50LCBMaXN0IGVsZW1lbnRzLCBTdHJpbmcgZmlsZWxvY2F0aW9uLCBIYXNodGFibGUgcGFyZW50TlNzLCBTZXQgdmFsaWRJbXBvcnROU3MpCi0gIHsKLQlTZXQgaW1wb3J0TlNzID0gbmV3IFRyZWVTZXQoKTsgCi0gICAgaW1wb3J0TlNzLmFkZEFsbCh2YWxpZEltcG9ydE5Tcyk7IAotICAgIGltcG9ydE5Tcy5hZGQoU09BUF9FTkNPRElOR19VUkkpOyAKLQotICAgIElubGluZVNjaGVtYUdlbmVyYXRvciBzY2hlbWFHZW5lcmF0b3IgPSBJbmxpbmVTY2hlbWFHZW5lcmF0b3IuZ2V0SW5zdGFuY2UoKTsKLSAgICBIYXNodGFibGUgbnNSZXNvbHZlciA9IHNjaGVtYUdlbmVyYXRvci5nZXROU1Jlc29sdmVyKGVsZW1lbnQpOwotICAgIExpc3QgcmVxbnMgPSBzY2hlbWFHZW5lcmF0b3IuZ2V0TmFtZXNwYWNlUHJlZml4ZXMoZWxlbWVudCk7Ci0gICAgSGFzaHRhYmxlIHJlcU5TRGVjbCA9IHNjaGVtYUdlbmVyYXRvci5yZXNvbHZlTmFtZXNwYWNlcyhyZXFucywgbnNSZXNvbHZlciwgcGFyZW50TlNzKTsKLSAgICAvL0hhc2h0YWJsZSByZXFOU0RlY2wgPSBzY2hlbWFHZW5lcmF0b3IuZ2V0UmVxdWlyZWROU0RlY2xhcmF0aW9ucyhyZXFucywgbnNSZXNvbHZlciwgcGFyZW50TlNzKTsKLSAgICBpZihHRU5FUkFURV9JTkxJTkVfSU1QT1JUUykKLSAgICB7Ci0gICAgICBMaXN0IGltcG9ydE5TID0gc2NoZW1hR2VuZXJhdG9yLmdldEltcG9ydE5hbWVzcGFjZXMoZWxlbWVudCk7Ci0gICAgICByZXFucyA9IHNjaGVtYUdlbmVyYXRvci5yZW1vdmVJbXBvcnRzKHJlcW5zLCBpbXBvcnROUyk7Ci0gICAgICByZXFucyA9IHNjaGVtYUdlbmVyYXRvci5yZW1vdmVMb2NhbE5hbWVzcGFjZXMocmVxbnMsIGVsZW1lbnQpOwotCSAgcmVxbnMgPSBzY2hlbWFHZW5lcmF0b3IucmVzdHJpY3RJbXBvcnRzKHJlcW5zLCB2YWxpZEltcG9ydE5Tcyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXFucy5jbGVhcigpOwotICAgIH0KLSAgICByZXR1cm4gc2NoZW1hR2VuZXJhdG9yLmNyZWF0ZVhTRFN0cmluZ1JlY3Vyc2l2ZWx5KGVsZW1lbnQsIGVsZW1lbnRzLCByZXFucywgcmVxTlNEZWNsLCBmaWxlbG9jYXRpb24pOwotICB9Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIFNPQVAgZW5jb2RpbmcgbmFtZXNwYWNlIGlzIHJlcXVpcmVkIGJ1dCBub3QgaW1wb3J0ZWQuCi0gICAqIAotICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgcm9vdCBlbGVtZW50IG9mIHRoZSBzY2hlbWEuCi0gICAqIEBwYXJhbSBmaWxlbG9jYXRpb24gVGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIHNjaGVtYS4KLSAgICogQHBhcmFtIHBhcmVudE5TcyBBIGhhc2h0YWJsZSBvZiB0aGUgcGFyZW50IG5hbWVzcGFjZXMuCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgc29hcCBlbmNvZGluZyBuYW1lc3BhY2UgaXMgcmVxdWlyZWQgYnV0IG5vdCBpbXBvcnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIHNvYXBFbmNvZGluZ1JlcXVpcmVkTm90SW1wb3J0ZWQoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgZmlsZWxvY2F0aW9uLCBIYXNodGFibGUgcGFyZW50TlNzKQotICB7Ci0gICAgSW5saW5lU2NoZW1hR2VuZXJhdG9yIHNjaGVtYUdlbmVyYXRvciA9IElubGluZVNjaGVtYUdlbmVyYXRvci5nZXRJbnN0YW5jZSgpOwotICAgIEhhc2h0YWJsZSBuc1Jlc29sdmVyID0gc2NoZW1hR2VuZXJhdG9yLmdldE5TUmVzb2x2ZXIoZWxlbWVudCk7Ci0gICAgTGlzdCByZXFucyA9IG51bGw7Ci0KLSAgICByZXFucyA9IHNjaGVtYUdlbmVyYXRvci5nZXROYW1lc3BhY2VQcmVmaXhlcyhlbGVtZW50KTsKLSAgICBzY2hlbWFHZW5lcmF0b3IucmVzb2x2ZU5hbWVzcGFjZXMocmVxbnMsIG5zUmVzb2x2ZXIsIHBhcmVudE5Tcyk7Ci0gICAgLy9zY2hlbWFHZW5lcmF0b3IucmVzb2x2ZVVuZGVjbGFyZWROYW1lc3BhY2VzKHJlcW5zLCBwYXJlbnROU3MpOwotICAgIExpc3QgaW1wb3J0TlMgPSBzY2hlbWFHZW5lcmF0b3IuZ2V0SW1wb3J0TmFtZXNwYWNlcyhlbGVtZW50KTsKLSAgICByZXFucyA9IHNjaGVtYUdlbmVyYXRvci5yZW1vdmVJbXBvcnRzKHJlcW5zLCBpbXBvcnROUyk7Ci0gICAgcmVxbnMgPSBzY2hlbWFHZW5lcmF0b3IucmVtb3ZlTG9jYWxOYW1lc3BhY2VzKHJlcW5zLCBlbGVtZW50KTsKLSAgICByZXR1cm4gc2NoZW1hR2VuZXJhdG9yLmNoZWNrU09BUEVuY29kaW5nUmVxdWlyZWQocmVxbnMpOwotICB9Ci0gIC8qKgotICAgKiBSZXNvbHZlIHRoZSB1bmRlY2xhcmVkIG5hbWVzcGFjZXMuCi0gICAqIAotICAgKiBAcGFyYW0gdW5yZXNvbHZlZE5TcyBBIGxpc3Qgb2YgdW5yZXNvbHZlZCBuYW1lc3BhY2VzLgotICAgKiBAcGFyYW0gbnNSZXNvbHZlciBUaGUgbmFtZXNwYWNlIHJlc29sdmVyIHRvIHVzZS4KLSAgICogQHJldHVybiBBIGhhc2h0YWJsZSBvZiBwcmVmaXhlcyBhbmQgbmFtZXNwYWNlcy4KLSAgICovCi0vLyAgcHJvdGVjdGVkIEhhc2h0YWJsZSByZXNvbHZlVW5kZWNsYXJlZE5hbWVzcGFjZXMoTGlzdCB1bnJlc29sdmVkTlNzLCBIYXNodGFibGUgbnNSZXNvbHZlcikKLS8vICB7Ci0vLyAgICBIYXNodGFibGUgbmFtZXNwYWNlcyA9IG5ldyBIYXNodGFibGUoKTsKLS8vICAgIGlmICh1bnJlc29sdmVkTlNzICE9IG51bGwgJiYgIXVucmVzb2x2ZWROU3MuaXNFbXB0eSgpICYmIG5zUmVzb2x2ZXIgIT0gbnVsbCkKLS8vICAgIHsKLS8vICAgICAgZm9yIChpbnQgaSA9IHVucmVzb2x2ZWROU3Muc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pCi0vLyAgICAgIHsKLS8vICAgICAgICBTdHJpbmcgbnMgPSAoU3RyaW5nKXVucmVzb2x2ZWROU3MuZ2V0KGkpOwotLy8gICAgICAgIGlmIChucy5lcXVhbHMoIiIpKQotLy8gICAgICAgIHsKLS8vICAgICAgICAgIG5zID0gWE1MTlM7Ci0vLyAgICAgICAgfQotLy8gICAgICAgIGVsc2UKLS8vICAgICAgICB7Ci0vLyAgICAgICAgICBucyA9IFhNTE5TICsgIjoiICsgbnM7Ci0vLyAgICAgICAgfQotLy8gICAgICAgIGlmIChuc1Jlc29sdmVyLmNvbnRhaW5zS2V5KG5zKSkKLS8vICAgICAgICB7Ci0vLyAgICAgICAgICAvL25hbWVzcGFjZXMucmVtb3ZlKGkpOwotLy8gICAgICAgICAgLy9uYW1lc3BhY2VzLmFkZChpLCBuc1Jlc29sdmVyLmdldChucykpOwotLy8gICAgICAgICAgbmFtZXNwYWNlcy5wdXQobnMsIG5zUmVzb2x2ZXIuZ2V0KG5zKSk7Ci0vLyAgICAgICAgICB1bnJlc29sdmVkTlNzLnJlbW92ZShpKTsKLS8vICAgICAgICAgIHVucmVzb2x2ZWROU3MuYWRkKGksIG5zUmVzb2x2ZXIuZ2V0KG5zKSk7Ci0vLyAgICAgICAgfQotLy8gICAgICB9Ci0vLyAgICB9Ci0vLyAgICByZXR1cm4gbmFtZXNwYWNlczsKLS8vICB9Ci0KLSAgLyoqCi0gICAqIFRoaXMgcmVjdXJzaXZlIG1ldGhvZCBjcmVhdGVzIHRoZSBzY2hlbWEgU3RyaW5nIGZyb20gdGhlIHJvb3QgRWxlbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtIFRoZSByb290IGVsZW1lbnQgb2YgdGhlIHNjaGVtYS4KLSAgICogQHBhcmFtIGVsZW1lbnRzIEEgbGlzdCB0byBiZSBjcmVhdGVkIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgc2NoZW1hIGluIG9yZGVyLgotICAgKiBAcGFyYW0gcmVxdWlyZWROYW1lc3BhY2VzIEEgbGlzdCBvZiByZXF1aXJlZCBuYW1lc3BhY2VzLgotICAgKiBAcGFyYW0gcmVxTlNEZWNsIEEgaGFzaHRhYmxlIG9mIHJlcXVpcmVkIG5hbWVzcGFjZSBkZWNsYXJhdGlvbnMuCi0gICAqIEBwYXJhbSBmaWxlbG9jYXRpb24gVGhlIHVyaSBvZiB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoaXMgc2NoZW1hLgotICAgKiBAcmV0dXJuIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2NoZW1hLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBjcmVhdGVYU0RTdHJpbmdSZWN1cnNpdmVseSgKLSAgICBFbGVtZW50IGVsZW0sCi0gICAgTGlzdCBlbGVtZW50cywKLSAgICBMaXN0IHJlcXVpcmVkTmFtZXNwYWNlcywKLSAgICBIYXNodGFibGUgcmVxTlNEZWNsLAotICAgIFN0cmluZyBmaWxlbG9jYXRpb24pCi0gIHsKLSAgICBpZiAoZWxlbSA9PSBudWxsKQotICAgICAgcmV0dXJuICIiOyAvLyBqdXN0IGluIGNhc2UKLQotICAgIGVsZW1lbnRzLmFkZChlbGVtKTsKLQotICAgIFN0cmluZ0J1ZmZlciB4c2RTdHJpbmcgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgU3RyaW5nIGVsZW1lbnROYW1lID0gZWxlbS5nZXRUYWdOYW1lKCk7Ci0gICAgeHNkU3RyaW5nLmFwcGVuZCgiPCIpLmFwcGVuZChlbGVtZW50TmFtZSk7Ci0KLSAgICBTdHJpbmcgbmFtZVByZWZpeCA9ICIiOyAvLyB0aGUgeG1sbnMgcHJlZml4IHVzZWQgZm9yIHRoZSBlbGVtZW50cwotICAgIC8vIEdldCBhbGwgb2YgdGhlIGF0dHJpYnV0ZXMgZm9yIHRoaXMgZWxlbWVudCBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIHhzZFN0cmluZwotICAgIE5hbWVkTm9kZU1hcCBhdHRzID0gZWxlbS5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRzLmdldExlbmd0aCgpOyBpKyspCi0gICAgewotICAgICAgTm9kZSBuID0gYXR0cy5pdGVtKGkpOwotICAgICAgeHNkU3RyaW5nLmFwcGVuZCgiICIpLmFwcGVuZChuLmdldE5vZGVOYW1lKCkpLmFwcGVuZCgiPVwiIik7Ci0gICAgICBTdHJpbmcgbm9kZU5hbWUgPSBuLmdldE5vZGVOYW1lKCk7Ci0gICAgICBpZiAobm9kZU5hbWUuZXF1YWxzSWdub3JlQ2FzZShTQ0hFTUFMT0NBVElPTikgJiYgZmlsZWxvY2F0aW9uICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyByZWxhdGl2ZVBhdGggPSBuLmdldE5vZGVWYWx1ZSgpOwotICAgICAgICB4c2RTdHJpbmcuYXBwZW5kKHJlbGF0aXZlUGF0aCkuYXBwZW5kKCJcIiIpOyAgIAotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBTdHJpbmcgbm9kZVZhbHVlID0gbi5nZXROb2RlVmFsdWUoKTsKLSAgICAgICAgLy8gZ2V0IHRoZSBuYW1lIHByZWZpeCBmb3IgdGhpcyBzY2hlbWEgdG8gdXNlIGluIGdlbmVyYXRpbmcgaW1wb3J0IHN0YXRlbWVudHMKLSAgICAgICAgaWYgKG5vZGVOYW1lLmluZGV4T2YoWE1MTlMpICE9IC0xKQotICAgICAgICB7Ci0KLSAgICAgICAgICBpZiAobm9kZVZhbHVlLmVxdWFsc0lnbm9yZUNhc2UoZWxlbS5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgbmFtZVByZWZpeCA9IG5vZGVOYW1lOwotICAgICAgICAgICAgaWYgKG5hbWVQcmVmaXguZXF1YWxzSWdub3JlQ2FzZShYTUxOUykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG5hbWVQcmVmaXggPSAiIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbmFtZVByZWZpeCA9IG5hbWVQcmVmaXguc3Vic3RyaW5nKDYpICsgIjoiOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBSZXBsYWNlIG9sZCBzY2hlbWEgbmFtZXNwYWNlcyB3aXRoIHRoZSBuZXcgc2NoZW1hIG5hbWVzcGFjZS4KLSAgICAgICAgaWYobm9kZVZhbHVlLmVxdWFscyhTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8xOTk5KSB8fCBub2RlVmFsdWUuZXF1YWxzKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDApKQotICAgICAgICAgewotICAgICAgICAgIG5vZGVWYWx1ZSA9IFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDE7Ci0gICAgICAgIH0KLSAgICAgICAgeHNkU3RyaW5nLmFwcGVuZChub2RlVmFsdWUpLmFwcGVuZCgiXCIiKTsKLSAgICAgIH0KLSAgICB9Ci0vLyAgICBpZiAoZWxlbWVudE5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiaW1wb3J0IikgJiYgIWZvdW5kU2NoZW1hTG9jYXRpb24pCi0vLyAgICB7Ci0vLyAgICAgIHhzZFN0cmluZy5hcHBlbmQoIiAiKS5hcHBlbmQoU0NIRU1BTE9DQVRJT04pLmFwcGVuZCgiPVwiIikuYXBwZW5kKG5hbWVzcGFjZSkuYXBwZW5kKCJcIiIpOwotLy8gICAgfQotICAgIC8vIGFkZCBpbiBhbnkgcmVxdWlyZWQgTlMgZGVjbGFyYXRpb25zIGZyb20gcGFyZW50IGVsZW1lbnRzCi0gICAgaWYgKHJlcU5TRGVjbCAhPSBudWxsKQotICAgIHsKLSAgICAgIEVudW1lcmF0aW9uIGtleXMgPSByZXFOU0RlY2wua2V5cygpOwotICAgICAgd2hpbGUgKGtleXMuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKWtleXMubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgU3RyaW5nIGRlY2xOUyA9IChTdHJpbmcpcmVxTlNEZWNsLmdldChrZXkpOwotICAgICAgICBpZihkZWNsTlMuZXF1YWxzKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzE5OTkpIHx8IGRlY2xOUy5lcXVhbHMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgZGVjbE5TID0gU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMTsKLSAgICAgICAgfQotICAgICAgICB4c2RTdHJpbmcuYXBwZW5kKCIgIikuYXBwZW5kKGtleSkuYXBwZW5kKCI9XCIiKS5hcHBlbmQoZGVjbE5TKS5hcHBlbmQoIlwiIik7Ci0gICAgICB9Ci0KLSAgICB9Ci0gICAgeHNkU3RyaW5nLmFwcGVuZCgiPiIpOwotICAgIGlmIChyZXF1aXJlZE5hbWVzcGFjZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpUmVxdWlyZWROYW1lc3BhY2VzID0gcmVxdWlyZWROYW1lc3BhY2VzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaVJlcXVpcmVkTmFtZXNwYWNlcy5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBucyA9IChTdHJpbmcpaVJlcXVpcmVkTmFtZXNwYWNlcy5uZXh0KCk7Ci0KLSAgICAgICAgeHNkU3RyaW5nCi0gICAgICAgICAgLmFwcGVuZCgiPCIpCi0gICAgICAgICAgLmFwcGVuZChuYW1lUHJlZml4KQotICAgICAgICAgIC5hcHBlbmQoSU1QT1JUKQotICAgICAgICAgIC5hcHBlbmQoIiAiKQotICAgICAgICAgIC5hcHBlbmQoTkFNRVNQQUNFKQotICAgICAgICAgIC5hcHBlbmQoIj1cIiIpCi0gICAgICAgICAgLmFwcGVuZChucykKLSAgICAgICAgICAuYXBwZW5kKCJcIiAiKQotICAgICAgICAgIC5hcHBlbmQoU0NIRU1BTE9DQVRJT04pCi0gICAgICAgICAgLmFwcGVuZCgiPVwiIikKLSAgICAgICAgICAuYXBwZW5kKG5zKQotICAgICAgICAgIC5hcHBlbmQoIlwiLz4iKTsKLSAgICAgIH0KLQotICAgIH0KLSAgICB4c2RTdHJpbmcuYXBwZW5kKCJcbiIpOwotCi0gICAgLy8gY2FsbCB0aGUgbWV0aG9kIHJlY3Vyc2l2ZWx5IGZvciBlYWNoIGNoaWxkIGVsZW1lbnQKLSAgICBOb2RlTGlzdCBjaGlsZE5vZGVzID0gZWxlbS5nZXRDaGlsZE5vZGVzKCk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkTm9kZXMuZ2V0TGVuZ3RoKCkgfHwgaSA8IDU7IGkrKykKLSAgICB7Ci0gICAgICBOb2RlIG4gPSBjaGlsZE5vZGVzLml0ZW0oaSk7Ci0gICAgICAvLyB3ZSBvbmx5IHdhbnQgbm9kZXMgdGhhdCBhcmUgRWxlbWVudHMKLSAgICAgIGlmIChuIGluc3RhbmNlb2YgRWxlbWVudCkKLSAgICAgIHsKLSAgICAgICAgRWxlbWVudCBjaGlsZCA9IChFbGVtZW50KW47Ci0gICAgICAgIHhzZFN0cmluZy5hcHBlbmQoY3JlYXRlWFNEU3RyaW5nUmVjdXJzaXZlbHkoY2hpbGQsIGVsZW1lbnRzLCBudWxsLCBudWxsLCBmaWxlbG9jYXRpb24pKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICB4c2RTdHJpbmcuYXBwZW5kKCI8LyIpLmFwcGVuZChlbGVtLmdldFRhZ05hbWUoKSkuYXBwZW5kKCI+Iik7Ci0KLSAgICByZXR1cm4geHNkU3RyaW5nLnRvU3RyaW5nKCk7Ci0KLSAgfQotICAvKioKLSAgICogR2V0IGEgbGlzdCBvZiBhbGwgdGhlIG5hbWVzcGFjZSBwcmVmaXhlcyB0aGF0IGFyZSB1c2VkIGZvciBlbGVtZW50cyBvciB0eXBlcyBpbiB0aGUgc2NoZW1hLgotICAgKiAgCi0gICAqIEBwYXJhbSBlbGVtIFRoZSByb290IGVsZW1lbnQgb2YgdGhlIHNjaGVtYSB0byBjaGVjayBmb3IgbmFtZXNwYWNlIHByZWZpeGVzLgotICAgKiBAcmV0dXJuIEEgbGlzdCBvZiBuYW1lc3BhY2UgcHJlZml4ZXMgZm9yIHRoZSBlbGVtZW50IGFuZCBhbGwgaXRzIGNoaWxkcmVuLgotICAgKi8KLSAgcHJvdGVjdGVkIExpc3QgZ2V0TmFtZXNwYWNlUHJlZml4ZXMoRWxlbWVudCBlbGVtKQotICB7Ci0gICAgTGlzdCBuYW1lc3BhY2UgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICAvLyBjYWxsIHRoZSBtZXRob2QgcmVjdXJzaXZlbHkgZm9yIGVhY2ggY2hpbGQgZWxlbWVudAotICAgIC8vIHJlZ2lzdGVyIGFsbCB0aGUgY2hpbGQgdHlwZXMgZmlyc3QKLSAgICBOb2RlTGlzdCBjaGlsZE5vZGVzID0gZWxlbS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgaW50IG51bUNoaWxkcmVuID0gY2hpbGROb2Rlcy5nZXRMZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyBpKyspCi0gICAgewotICAgICAgTm9kZSBuID0gY2hpbGROb2Rlcy5pdGVtKGkpOwotICAgICAgLy8gd2Ugb25seSB3YW50IG5vZGVzIHRoYXQgYXJlIEVsZW1lbnRzCi0gICAgICBpZiAobiBpbnN0YW5jZW9mIEVsZW1lbnQpCi0gICAgICB7Ci0gICAgICAgIEVsZW1lbnQgY2hpbGQgPSAoRWxlbWVudCluOwotICAgICAgICBMaXN0IGNoaWxkbnMgPSBnZXROYW1lc3BhY2VQcmVmaXhlcyhjaGlsZCk7Ci0gICAgICAgIGZvciAoaW50IGogPSBjaGlsZG5zLnNpemUoKSAtIDE7IGogPj0gMDsgai0tKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIG5zID0gKFN0cmluZyljaGlsZG5zLmdldChqKTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZiAoIW5hbWVzcGFjZS5jb250YWlucyhucykpCi0gICAgICAgICAgewotICAgICAgICAgICAgbmFtZXNwYWNlLmFkZChucyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIEFkZCB0aGUgbmFtZXNwYWNlIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQKLSAgICBTdHJpbmcgZWxlbU5TID0gZWxlbS5nZXRQcmVmaXgoKTsKLSAgICAvLyBpZiB0aGVyZSBpcyBubyBuYW1lc3BhY2UgcHJlZml4IHNldCBpdCB0byB0aGUgZW1wdHkgcHJlZml4LgotICAgIGlmKGVsZW1OUyA9PSBudWxsKQotICAgIHsKLSAgICAgIGVsZW1OUyA9ICIiOwotICAgIH0KLSAgICBpZiAoIW5hbWVzcGFjZS5jb250YWlucyhlbGVtTlMpKQotICAgICB7Ci0gICAgICBuYW1lc3BhY2UuYWRkKGVsZW1OUyk7Ci0gICAgfQotICAgIC8vIG5vdyBhZGQgYWxsIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQncyBuYW1lc3BhY2VzCi0gICAgLy8gZG9uJ3QgaW5jbHVkZSBpbXBvcnQgYW5kIHNjaGVtYSBlbGVtZW50cwotICAgIFN0cmluZyBsb2NhbG5hbWUgPSBlbGVtLmdldExvY2FsTmFtZSgpOwotICAgIGlmICghbG9jYWxuYW1lLmVxdWFscyhJTVBPUlQpICYmICFsb2NhbG5hbWUuZXF1YWxzKElOQ0xVREUpICYmICFsb2NhbG5hbWUuZXF1YWxzKFNDSEVNQSkpCi0gICAgewotICAgICAgTmFtZWROb2RlTWFwIGF0dHMgPSBlbGVtLmdldEF0dHJpYnV0ZXMoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0cy5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgewotICAgICAgICBOb2RlIG4gPSBhdHRzLml0ZW0oaSk7Ci0KLSAgICAgICAgU3RyaW5nIG5vZGVOYW1lID0gbi5nZXROb2RlTmFtZSgpOwotICAgICAgICAvLyByZW1vdmVkIHJlc3RyaWN0aW9uIHRoYXQgd2UncmUgb25seSBsb29raW5nIGF0IHR5cGVzCi0gICAgICAgIC8vCQlpZiAobm9kZU5hbWUuZXF1YWxzSWdub3JlQ2FzZShUWVBFKSkKLSAgICAgICAgLy8JCXsKLSAgICAgICAgLy8gZG9uJ3QgdGFrZSBuYW1lc3BhY2UgaW5mbyBmcm9tIGF0dHJpYnV0ZXMgZGVmaW5pbmcgbmFtZXNwYWNlcy4KLSAgICAgICAgLy8gdGhhdCBpbmNsdWRlcyB4bWxucywgdGFyZ2V0TmFtZXNwYWNlCi0gICAgICAgIGlmIChub2RlTmFtZS5pbmRleE9mKFhNTE5TKSAhPSAtMSB8fCBub2RlTmFtZS5lcXVhbHMoVEFSR0VUTkFNRVNQQUNFKSB8fCBub2RlTmFtZS5lcXVhbHMoTkFNRSkpCi0gICAgICAgIHsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICAvLyBHcmFiIG5hbWVzcGFjZSBwcmVmaXhlcyBmcm9tIGF0dHJpYnV0ZXMuCi0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGludCBjb2xvbkluZGV4ID0gbm9kZU5hbWUuaW5kZXhPZigiOiIpOwotICAgICAgICAgIGlmKGNvbG9uSW5kZXggIT0gLTEgJiYgKGNvbG9uSW5kZXggKyAxIDwgbm9kZU5hbWUubGVuZ3RoKCkgJiYgbm9kZU5hbWUuY2hhckF0KGNvbG9uSW5kZXggKyAxKSAhPSAnLycpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBwcmVmaXggPSBub2RlTmFtZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWVzcGFjZS5jb250YWlucyhwcmVmaXgpKQotICAgICAgICAgICAgewotCi0gICAgICAgICAgICAgIG5hbWVzcGFjZS5hZGQocHJlZml4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgU3RyaW5nIG5vZGVWYWx1ZSA9IG4uZ2V0Tm9kZVZhbHVlKCk7Ci0gICAgICAgIAotICAgICAgICAKLSAgICAgICAgaW50IGNvbG9uSW5kZXggPSBub2RlVmFsdWUuaW5kZXhPZigiOiIpOwotICAgICAgICAvLyBEb24ndCB0YWtlIG5hbWVzcGFjZSBpbmZvIGZyb20gYXR0cmlidXRlcyB3aXRoIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSwgdGhhdCBpcyBhdHRyaWJ1dGVzCi0gICAgICAgIC8vIHRoYXQgYXJlIG5vdCBwcmVmaXhlZC4gKGNvbG9uSW5kZXggPT0gLTEpCi0gICAgICAgIC8vIElmIHRoZSBjb2xvbkluZGV4IGlzIGZvbGxvd2VkIGJ5IGEgLyB0aGVuIGl0IGlzIGEgVVJJIGFuZCBub3QKLSAgICAgICAgLy8gbmFtZXNwYWNlIHF1YWxpZmllZC4KLQkJaWYgKGNvbG9uSW5kZXggPT0gLTEgfHwgKGNvbG9uSW5kZXggKyAxIDwgbm9kZVZhbHVlLmxlbmd0aCgpICYmIG5vZGVWYWx1ZS5jaGFyQXQoY29sb25JbmRleCArIDEpID09ICcvJykpCi0gICAgICAgIHsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICAvLyBoZXJlIHdlIGhhdmUgZm91bmQgYSBjb2xvbiBkZWxpbWl0ZXIgc28gd2UgbmVlZCB0aGUgbmFtZXNwYWNlIGRlZmluZWQgaGVyZQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBub2RlVmFsdWUgPSBub2RlVmFsdWUuc3Vic3RyaW5nKDAsIGNvbG9uSW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghbmFtZXNwYWNlLmNvbnRhaW5zKG5vZGVWYWx1ZSkpCi0gICAgICAgIHsKLQotICAgICAgICAgIG5hbWVzcGFjZS5hZGQobm9kZVZhbHVlKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBuYW1lc3BhY2U7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBHZXQgYSBsaXN0IG9mIGFsbCB0aGUgbmFtZXNwYWNlcyB0aGF0IGhhdmUgYW4gaW1wb3J0IHN0YXRlbWVudC4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtIFRoZSByb290IGVsZW1lbnQgb2YgdGhlIHNjaGVtYS4KLSAgICogQHJldHVybiBBIGxpc3Qgb2YgYWxsIHRoZSBuYW1lc3BhY2VzIHRoYXQgYXJlIGltcG9ydGVkLgotICAgKi8KLSAgcHJvdGVjdGVkIExpc3QgZ2V0SW1wb3J0TmFtZXNwYWNlcyhFbGVtZW50IGVsZW0pCi0gIHsKLSAgICBMaXN0IG5hbWVzcGFjZSA9IG5ldyBWZWN0b3IoKTsKLQotICAgIC8vIGNhbGwgdGhlIG1ldGhvZCByZWN1cnNpdmVseSBmb3IgZWFjaCBjaGlsZCBlbGVtZW50Ci0gICAgLy8gcmVnaXN0ZXIgYWxsIHRoZSBjaGlsZCB0eXBlcyBmaXJzdAotICAgIE5vZGVMaXN0IGNoaWxkTm9kZXMgPSBlbGVtLmdldENoaWxkTm9kZXMoKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGROb2Rlcy5nZXRMZW5ndGgoKSB8fCBpIDwgNTsgaSsrKQotICAgIHsKLSAgICAgIE5vZGUgbiA9IGNoaWxkTm9kZXMuaXRlbShpKTsKLSAgICAgIC8vIHdlIG9ubHkgd2FudCBub2RlcyB0aGF0IGFyZSBFbGVtZW50cwotICAgICAgaWYgKG4gaW5zdGFuY2VvZiBFbGVtZW50KQotICAgICAgewotICAgICAgICBFbGVtZW50IGNoaWxkID0gKEVsZW1lbnQpbjsKLSAgICAgICAgTGlzdCBjaGlsZG5zID0gZ2V0SW1wb3J0TmFtZXNwYWNlcyhjaGlsZCk7Ci0gICAgICAgIGZvciAoaW50IGogPSBjaGlsZG5zLnNpemUoKSAtIDE7IGogPj0gMDsgai0tKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIG5zID0gKFN0cmluZyljaGlsZG5zLmdldChqKTsKLSAgICAgICAgICBpZiAoIW5hbWVzcGFjZS5jb250YWlucyhucykpCi0gICAgICAgICAgewotICAgICAgICAgICAgbmFtZXNwYWNlLmFkZChucyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIGlmIHRoaXMgaXMgYW4gaW1wb3J0IGVsZW1lbnQgZ2V0IHRoZSBuYW1lc3BhY2UgYW5kIGFkZCBpdCB0byB0aGUgbGlzdAotICAgIGlmIChlbGVtLmdldExvY2FsTmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoSU1QT1JUKSkKLSAgICB7Ci0gICAgICBOYW1lZE5vZGVNYXAgYXR0cyA9IGVsZW0uZ2V0QXR0cmlidXRlcygpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRzLmdldExlbmd0aCgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIE5vZGUgbiA9IGF0dHMuaXRlbShpKTsKLQotICAgICAgICBTdHJpbmcgbm9kZU5hbWUgPSBuLmdldE5vZGVOYW1lKCk7Ci0gICAgICAgIGlmIChub2RlTmFtZS5lcXVhbHNJZ25vcmVDYXNlKE5BTUVTUEFDRSkpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgbm9kZVZhbHVlID0gbi5nZXROb2RlVmFsdWUoKTsKLSAgICAgICAgICBpZiAoIW5hbWVzcGFjZS5jb250YWlucyhub2RlVmFsdWUpKQotICAgICAgICAgIHsKLQotICAgICAgICAgICAgbmFtZXNwYWNlLmFkZChub2RlVmFsdWUpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBuYW1lc3BhY2U7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gYSBIYXNodGFibGUgd2l0aCBuYW1lc3BhY2UgcHJlZml4ZXMgYXMga2V5cyBmcm9tIHRoZSBnaXZlbiBlbGVtZW50LgotICAgKiAKLSAgICogQHBhcmFtIGVsZW0gVGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgc2NoZW1hLgotICAgKiBAcmV0dXJuIEEgaGFzaHRhYmxlIHdpdGggbmFtZXNwYWNlIHByZWZpeGVzIG1hcHBlZCB0byBuYW1lc3BhY2VzLgotICAgKi8KLSAgcHJvdGVjdGVkIEhhc2h0YWJsZSBnZXROU1Jlc29sdmVyKEVsZW1lbnQgZWxlbSkKLSAgewotICAgIEhhc2h0YWJsZSBuc1Jlc29sdmVyID0gbmV3IEhhc2h0YWJsZSgpOwotCi0gICAgTmFtZWROb2RlTWFwIGF0dHMgPSBlbGVtLmdldEF0dHJpYnV0ZXMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dHMuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICB7Ci0gICAgICBOb2RlIG4gPSBhdHRzLml0ZW0oaSk7Ci0KLSAgICAgIFN0cmluZyBub2RlTmFtZSA9IG4uZ2V0Tm9kZU5hbWUoKTsKLSAgICAgIGlmIChub2RlTmFtZS5pbmRleE9mKFhNTE5TKSAhPSAtMSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG5vZGVWYWx1ZSA9IG4uZ2V0Tm9kZVZhbHVlKCk7Ci0gICAgICAgIFN0cmluZyBuYW1lUHJlZml4ID0gbm9kZU5hbWU7Ci0KLSAgICAgICAgaWYgKG5hbWVQcmVmaXguZXF1YWxzSWdub3JlQ2FzZShYTUxOUykpCi0gICAgICAgIHsKLSAgICAgICAgICBuYW1lUHJlZml4ID0gIiI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgbmFtZVByZWZpeCA9IG5hbWVQcmVmaXguc3Vic3RyaW5nKDYpOwotICAgICAgICB9Ci0gICAgICAgIG5zUmVzb2x2ZXIucHV0KG5hbWVQcmVmaXgsIG5vZGVWYWx1ZSk7Ci0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5zUmVzb2x2ZXI7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBSZXNvbHZlIHRoZSBuYW1lc3BhY2VzIGluIHRoZSBnaXZlbiBuYW1lc3BhY2VzIGxpc3Qgd2l0aCB0aGUgdHdvIG5hbWVzcGFjZQotICAgKiByZXNvbHZlciBoYXNodGFibGVzIHByb3ZpZGVkLiBSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgbmFtZXNwYWNlIHRoYXQgbmVlZAotICAgKiB0byBiZSBkZWNsYXJlZC4KLSAgICogRmlyc3QgcmVzb2x2ZSBhZ2FpbnN0IHRoZSBsb2NhbCBuYW1lc3BhY2VzIHdpdGggbnNSZXNvbHZlci4KLSAgICogTmV4dCByZXNvbHZlIGFnYWluc3QgdGhlIHBhcmVudCBuYW1lc3BhY2Ugd2l0aCBwYXJlbnROU1Jlc29sdmVyLgotICAgKiBBIHNpZGUgYWZmZWN0IG9mIHRoaXMgbWV0aG9kIGlzIHRoZSBuYW1lc3BhY2VzIGxpc3QgaXMgbGVmdCB3aXRoIG9ubHkgdGhvc2UgCi0gICAqIG5hbWVzcGFjZXMgdGhhdCBhcmUgcmVzb2x2ZWQgYW5kIHRoZSByZXNvbHZlZCBlbnRpdGllcyBhcmUgcGxhY2VkIGluIHRoZSAKLSAgICogbGlzdCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBlbnRyaWVzLgotICAgKiBGb3IgZXguIElmIHlvdSBwcm92aWRlIGEgbGlzdCBzdWNoIGFzIHt4c2QsIGludGZ9IGFuZCBvbmx5IHhzZCBjYW4gYmUgcmVzb2x2ZWQKLSAgICogeW91IHdpbGwgZW5kIHVwIHdpdGggdGhlIGxpc3Qge2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfQotICAgKiAKLSAgICogQHBhcmFtIG5hbWVzcGFjZXMgVGhlIGxpc3Qgb2YgbmFtZXNwYWNlcyB0byByZXNvbHZlLgotICAgKiBAcGFyYW0gbnNSZXNvbHZlciBUaGUgaGFzaHRhYmxlIHRvIGJlIHVzZWQgYXMgdGhlIGxvY2FsIHJlc29sdmVyLgotICAgKiBAcGFyYW0gcGFyZW50TlNSZXNvbHZlciBUaGUgaGFzaHRhYmxlIHRvIGJlIHVzZWQgYXMgdGhlIHBhcmVudCBuYW1lc3BhY2UgcmVzb2x2ZXIuCi0gICAqIEByZXR1cm4gQSBIYXNodGFibGUgb2YgbmFtZXNwYWNlcyB0aGF0IG11c3QgYmUgZGVjbGFyZWQuCi0gICAqLwotICBwcm90ZWN0ZWQgSGFzaHRhYmxlIHJlc29sdmVOYW1lc3BhY2VzKExpc3QgbmFtZXNwYWNlcywgSGFzaHRhYmxlIG5zUmVzb2x2ZXIsIEhhc2h0YWJsZSBwYXJlbnROU1Jlc29sdmVyKQotICB7Ci0gIAlIYXNodGFibGUgcmVxTlNEZWNsID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIGlmIChuYW1lc3BhY2VzICE9IG51bGwgJiYgIW5hbWVzcGFjZXMuaXNFbXB0eSgpICYmIG5zUmVzb2x2ZXIgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmb3IgKGludCBpID0gbmFtZXNwYWNlcy5zaXplKCkgLSAxOyBpID49IDA7IGktLSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG5zID0gKFN0cmluZyluYW1lc3BhY2VzLmdldChpKTsKLSAgICAgICAgLy8gUmVtb3ZlIHRoZSBuYW1lc3BhY2UgZnJvbSB0aGUgbGlzdC4KLSAgICAgICAgbmFtZXNwYWNlcy5yZW1vdmUoaSk7Ci0gICAgICAgIC8vIEZpcnN0IHRyeSB0byByZXNvbHZlIGFnYWluc3QgdGhlIGxvY2FsIG5hbWVzcGFjZSByZXNvbHZlci4KLSAgICAgICAgaWYgKG5zUmVzb2x2ZXIuY29udGFpbnNLZXkobnMpKQotICAgICAgICB7Ci0gICAgICAgICAgT2JqZWN0IHJlc29sdmVkTlMgPSBuc1Jlc29sdmVyLmdldChucyk7Ci0gICAgICAgICAgLy8gT25seSBhZGQgdGhlIG5hbWVzcGFjZSBpZiBpdCdzIG5vdCBhbHJlYWR5IGluIHRoZSBsaXN0LgotICAgICAgICAgIGlmKCFuYW1lc3BhY2VzLmNvbnRhaW5zKHJlc29sdmVkTlMpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG5hbWVzcGFjZXMuYWRkKGksIG5zUmVzb2x2ZXIuZ2V0KG5zKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vIE5leHQgdHJ5IHRvIHJlc29sdmUgYWdhaW5zdCB0aGUgcGFyZW50IG5hbWVzcGFjZSByZXNvbHZlci4KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgIAlpZiAobnMuZXF1YWxzKCIiKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbnMgPSBYTUxOUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbnMgPSBYTUxOUyArICI6IiArIG5zOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHBhcmVudE5TUmVzb2x2ZXIuY29udGFpbnNLZXkobnMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBPYmplY3QgcmVzb2x2ZWROUyA9IHBhcmVudE5TUmVzb2x2ZXIuZ2V0KG5zKTsKLSAgICAgICAgICAgICAgLy8gT25seSBhZGQgdGhlIG5hbWVzcGFjZSBpZiBpdCdzIG5vdCBhbHJlYWR5IGluIHRoZSBsaXN0LgotICAgICAgICAgICAgICBpZighbmFtZXNwYWNlcy5jb250YWlucyhyZXNvbHZlZE5TKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG5hbWVzcGFjZXMuYWRkKGksIHJlc29sdmVkTlMpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIC8vIFN0aWxsIG5lZWQgdG8gZGVjbGFyZSB0aGUgbmFtZXNwYWNlIHRob3VnaC4KLSAgICAgICAgICAgICAgcmVxTlNEZWNsLnB1dChucywgcmVzb2x2ZWROUyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVxTlNEZWNsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlbW92ZSBhbnkgbmFtZXNwYWNlIGZyb20gdGhlIG5hbWVzcGFjZXMgbGlzdCBpZiBpdCBpcyBpbiB0aGUgaW1wb3J0IGxpc3QuCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlcyBUaGUgbmFtZXNwYWNlcyBsaXN0LgotICAgKiBAcGFyYW0gaW1wb3J0ZWROYW1lc3BhY2VzIEEgbGlzdCBvZiBpbXBvcnRlZCBuYW1lc3BhY2VzLgotICAgKiBAcmV0dXJuIFRoZSBsaXN0IG9mIG5hbWVzcGFjZXMgd2l0aG91dCB0aGUgaW1wb3J0ZWQgbmFtZXNwYWNlcy4KLSAgICovCi0gIHByb3RlY3RlZCBMaXN0IHJlbW92ZUltcG9ydHMoTGlzdCBuYW1lc3BhY2VzLCBMaXN0IGltcG9ydGVkTmFtZXNwYWNlcykKLSAgewotICAgIGlmIChuYW1lc3BhY2VzICE9IG51bGwgJiYgaW1wb3J0ZWROYW1lc3BhY2VzICE9IG51bGwgJiYgIWltcG9ydGVkTmFtZXNwYWNlcy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgSXRlcmF0b3IgaUltcG9ydGVkTlMgPSBpbXBvcnRlZE5hbWVzcGFjZXMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpSW1wb3J0ZWROUy5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBpTlMgPSAoU3RyaW5nKWlJbXBvcnRlZE5TLm5leHQoKTsKLQotICAgICAgICBuYW1lc3BhY2VzLnJlbW92ZShpTlMpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbmFtZXNwYWNlczsKLSAgfQotCi0gIC8qKgotICAgKiBSZW1vdmUgdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIHNjaGVtYSBhbmQgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoZSBpZ25vcmVOYW1lc3BhY2VzCi0gICAqIGxpc3QgZnJvbSB0aGUgbmFtZXNwYWNlcyBsaXN0IHByb3ZpZGVkLgotICAgKiAKLSAgICogQHBhcmFtIG5hbWVzcGFjZXMgVGhlIGxpc3Qgb2YgbG9jYWwgbmFtZXNwYWNlcy4KLSAgICogQHBhcmFtIGVsZW0gVGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgc2NoZW1hLgotICAgKiBAcmV0dXJuIFRoZSBsaXN0IG9mIG5hbWVzcGFjZXMgd2l0aCB0aGUgbG9jYWwgbmFtZXNwYWNlcyByZW1vdmVkLgotICAgKi8KLSAgcHJvdGVjdGVkIExpc3QgcmVtb3ZlTG9jYWxOYW1lc3BhY2VzKExpc3QgbmFtZXNwYWNlcywgRWxlbWVudCBlbGVtKQotICB7Ci0gICAgaWYgKG5hbWVzcGFjZXMgIT0gbnVsbCAmJiBlbGVtICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIG5zID0gZWxlbS5nZXRBdHRyaWJ1dGUoVEFSR0VUTkFNRVNQQUNFKTsKLSAgICAgIG5hbWVzcGFjZXMucmVtb3ZlKG5zKTsKLQotICAgICAgZm9yIChpbnQgaSA9IGlnbm9yZU5hbWVzcGFjZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCi0gICAgICB7Ci0gICAgICAgIC8vIGtlZXAgcmVtb3ZpbmcgdGhlIG5hbWVzcGFjZSB1bnRpbCBpdCBpcyBub3QgaW4gdGhlIGxpc3QKLSAgICAgICAgaWYgKG5hbWVzcGFjZXMucmVtb3ZlKGlnbm9yZU5hbWVzcGFjZXNbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAgaSsrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBuYW1lc3BhY2VzOwotICB9Ci0gIAotICAvKiogCi0gICAqIFJlbW92ZSBhbGwgdGhlIG5hbWVzcGFjZXMgaW4gdGhlIG5hbWVzcGFjZXMgbGlzdCB0aGF0IGFyZW4ndCBjb250YWluZWQgaW4gdGhlIAotICAgKiB2YWxpZEltcG9ydE5TcyBzZXQuIAotICAgKiAKLSAgICogQHBhcmFtIG5hbWVzcGFjZXMgQSBsaXN0IG9mIG5hbWVzcGFjZXMuIAotICAgKiBAcGFyYW0gdmFsaWRJbXBvcnROU3MgQSBzZXQgb2YgdmFsaWQgbmFtZXNwYWNlcy4gCi0gICAqIEByZXR1cm4gQSBsaXN0IG9mIG5hbWVzcGFjZXMgdGhhdCBkb2VzIG5vdCBjb250YWluIGFueSBtZW1iZXJzIHdoaWNoIGFyZW4ndCBpbiB0aGUgdmFsaWRJbXBvcnROU3Mgc2V0LiAKLSAgICovIAotICBwcm90ZWN0ZWQgTGlzdCByZXN0cmljdEltcG9ydHMoTGlzdCBuYW1lc3BhY2VzLCBTZXQgdmFsaWRJbXBvcnROU3MpIAotICB7IAotICAgICAgICBJdGVyYXRvciBuc0l0ZXIgPSBuYW1lc3BhY2VzLml0ZXJhdG9yKCk7IAotICAgICAgICB3aGlsZShuc0l0ZXIuaGFzTmV4dCgpKSAKLSAgICAgICAgeyAKLSAgICAgICAgICBTdHJpbmcgbnMgPSAoU3RyaW5nKW5zSXRlci5uZXh0KCk7IAotICAgICAgICAgIGlmKCF2YWxpZEltcG9ydE5Tcy5jb250YWlucyhucykpIAotICAgICAgICAgIHsgCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlcy5yZW1vdmUobnMpOyAKLQkJCQluc0l0ZXIgPSBuYW1lc3BhY2VzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgfSAKLSAgICAgICAgfSAKLSAgICAgICAgcmV0dXJuIG5hbWVzcGFjZXM7IAotICB9IAotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIFNPQVAgZW5jb2RpbmcgbmFtZXNwYWNlIGlzIGluIHRoZSBsaXN0IG9mIHJlcXVpcmVkIG5hbWVzcGFjZXMsCi0gICAqIGZhbHNlIG90aGVyd2lzZS4KLSAgICogCi0gICAqIEBwYXJhbSByZXFucyBUaGUgbGlzdCBvZiBuYW1lc3BhY2VzIHRvIGNoZWNrIGZvciB0aGUgU09BUCBlbmNvZGluZyBuYW1lc3BhY2UuCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgU09BUCBlbmNvZGluZyBuYW1lc3BhY2VzIGlzIGluIHRoZSBsaXN0LCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBjaGVja1NPQVBFbmNvZGluZ1JlcXVpcmVkKExpc3QgcmVxbnMpCi0gIHsKLSAgICBpZiAocmVxbnMuY29udGFpbnMoU09BUF9FTkNPRElOR19VUkkpKQotICAgIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEveHNkL0lubGluZVNjaGVtYVZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvSW5saW5lU2NoZW1hVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YTc3OGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvSW5saW5lU2NoZW1hVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNDEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5UeXBlczsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhzLlhTTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51dGlsLkVycm9yTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnV0aWwuTWVzc2FnZUdlbmVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5JV1NETDExVmFsaWRhdGlvbkluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuSVdTREwxMVZhbGlkYXRvcjsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotCi1pbXBvcnQgY29tLmlibS53c2RsLkNvbnN0YW50czsKLWltcG9ydCBjb20uaWJtLndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hQ29uc3RhbnRzOwotCi0vKioKLSAqIFBsdWdpbiB2YWxpZGF0b3IgZm9yIHRoZSBXU0RMIFZhbGlkYXRpb24gZnJhbWV3b3JrLiBWYWxpZGF0ZXMgaW5saW5lIHNjaGVtYSBmb3VuZCBpbiBhIFdTREwgZG9jdW1lbnQuCi0gKi8KLXB1YmxpYyBjbGFzcyBJbmxpbmVTY2hlbWFWYWxpZGF0b3IgaW1wbGVtZW50cyBJV1NETDExVmFsaWRhdG9yCi17Ci0gIC8qKgotICAgKiBQcm9wZXJ0eSB0byBhbGxvdyB0aGUgV1NETCB2YWxpZGF0b3IgdG8gdXNlIHRoZSB0YXJnZXQgbmFtZXNwYWNlCi0gICAqIGRlZmluZWQgb24gdGhlIFdTREwgZG9jdW1lbnQgZm9yIHNjaGVtYXMgd2l0aCBubyB0YXJnZXQgbmFtZXNwYWNlLgotICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgYWxsb3cgY2xpZW50cyB3aG8gZGVwZW5kIG9uIHRoaXMgZnVuY3Rpb25hbGl0eQotICAgKiB0byBjb250aW51ZSB0byB1c2UgaXQgYW5kIHNob3VsZCBiZSByZW1vdmVkIHBvc3QgMS41LgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIFVTRV9XU0RMX1RBUkdFVE5BTUVTUEFDRSA9IGZhbHNlOwotICAKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgX1dBUk5fT0xEX1NDSEVNQV9OQU1FU1BBQ0UgPSAiX1dBUk5fT0xEX1NDSEVNQV9OQU1FU1BBQ0UiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBfV0FSTl9TT0FQRU5DX0lNUE9SVEVEX1NDSEVNQSA9ICJfV0FSTl9TT0FQRU5DX0lNUE9SVEVEX1NDSEVNQSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEVNUFRZX1NUUklORyA9ICIiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBRVU9URSA9ICInIjsKLSAgTWVzc2FnZUdlbmVyYXRvciBtZXNzYWdlZ2VuZXJhdG9yID0gbnVsbDsKLSAgCi0gIHB1YmxpYyBJbmxpbmVTY2hlbWFWYWxpZGF0b3IoKQotICB7Ci0JU3RyaW5nIHVzZU5TID0gU3lzdGVtLmdldFByb3BlcnR5KCJ1c2Uud3NkbC50YXJnZXRuYW1lc3BhY2UiKTsKLQlpZih1c2VOUyAhPSBudWxsICYmIHVzZU5TLmVxdWFscygidHJ1ZSIpKQotCXsKLQkgIFVTRV9XU0RMX1RBUkdFVE5BTUVTUEFDRSA9IHRydWU7Ci0JfQotICB9Ci0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLklXU0RMMTFWYWxpZGF0b3IjdmFsaWRhdGUoamF2YS5sYW5nLk9iamVjdCwgamF2YS51dGlsLkxpc3QsIG9yZy5lY2xpcHNlLndzZGwudmFsaWRhdGUud3NkbDExLldTREwxMVZhbGlkYXRpb25JbmZvKQotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGUoT2JqZWN0IGVsZW1lbnQsIExpc3QgcGFyZW50cywgSVdTREwxMVZhbGlkYXRpb25JbmZvIHZhbEluZm8pCi0gIHsKLSAgCUxpc3QgZWxlbWVudHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIAlTY2hlbWEgZWxlbSA9IChTY2hlbWEpIGVsZW1lbnQ7Ci0gICAgRGVmaW5pdGlvbiB3c2RsRGVmaW5pdGlvbiA9IChEZWZpbml0aW9uKSBwYXJlbnRzLmdldChwYXJlbnRzLnNpemUoKSAtIDEpOwotICAgIFN0cmluZyBiYXNlTG9jYXRpb24gPSB3c2RsRGVmaW5pdGlvbi5nZXREb2N1bWVudEJhc2VVUkkoKTsKLSAgICAvLyBBZGQgaW4gdGhlIG5hbWVzcGFjZXMgZGVmaW5lZCBpbiB0aGUgZG9jIGFscmVhZHkgdGhhdCBhcmVuJ3QgZGVmaW5lZCBsb2NhbGx5IGluIHRoaXMgc2NoZW1hLgotICAgIC8vIFRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgZm9yIG5hbWVzcGFjZXMgb3RoZXIgdGhlbiBpbiB0aGUgZGVmaW50aW9ucyBhbmQgdHlwZXMgZWxlbWVudHMgYXMKLSAgICAvLyBpbmxpbmUgc2NoZW1hIGNhbiBub3QgaGF2ZSBhbnkgb3RoZXIgcGFyZW50cyBhbmQgbXVzdCBoYXZlIHRoZXJlIHR3byBwYXJlbnRzLgotICAgIC8vIEZpcnN0IHRha2UgY2FyZSBvZiB0aGUgZGVmaW5pdGlvbnMgZWxlbWVudAotICAgIAotICAgIC8vIGNyZWF0ZSB0aGUgaW5saW5lIHNjaGVtYSBzdHJpbmcKLQlFbGVtZW50IHczY2VsZW1lbnQgPSBlbGVtLmdldEVsZW1lbnQoKTsKLQlIYXNodGFibGUgcGFyZW50bmFtZXNwYWNlcyA9IGdldE5hbWVzcGFjZURlY2xhcmF0aW9uc0Zyb21QYXJlbnRzKHdzZGxEZWZpbml0aW9uLHczY2VsZW1lbnQpOwotCVN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSB3M2NlbGVtZW50LmdldEF0dHJpYnV0ZShDb25zdGFudHMuQVRUUl9UQVJHRVRfTkFNRVNQQUNFKTsKLQkvLyBpZiB0aGUgdGFyZ2V0TmFtZXNwYWNlIGhhc24ndCBiZWVuIGRlZmluZWQgZm9yIHRoZSBzY2hlbWEgdXNlIHRoZSAKLQkvLyB0YXJnZXROYW1lc3BhY2Ugb2YgdGhlIGRlZmluaXRpb25zIGVsZW1lbnQKLQlpZihVU0VfV1NETF9UQVJHRVROQU1FU1BBQ0UgJiYgKHRhcmdldE5hbWVzcGFjZSA9PSBudWxsIHx8IHRhcmdldE5hbWVzcGFjZS5lcXVhbHMoRU1QVFlfU1RSSU5HKSkpCi0JIHsKLQkgIHRhcmdldE5hbWVzcGFjZSA9IHdzZGxEZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpOwotCSAgdzNjZWxlbWVudC5zZXRBdHRyaWJ1dGUoQ29uc3RhbnRzLkFUVFJfVEFSR0VUX05BTUVTUEFDRSx0YXJnZXROYW1lc3BhY2UpOwotCX0KLQkKLSAgICAvLyBJZiB0aGUgbmFtZXNwYWNlIGdpdmVuIGlzIG9uZSBvZiB0aGUgb2xkIHNjaGVtYSBuYW1lc3BhY2VzIHByb2R1Y2UgYSB3YXJuaW5nLgotCVN0cmluZyBuYW1lc3BhY2UgPSB3M2NlbGVtZW50LmdldE5hbWVzcGFjZVVSSSgpOwotCWlmKG5hbWVzcGFjZS5lcXVhbHMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMTk5OSkgfHwgbmFtZXNwYWNlLmVxdWFscyhTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAwKSkKLQkgewotCSAgdmFsSW5mby5hZGRXYXJuaW5nKAotCSAgICAgIG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9XQVJOX09MRF9TQ0hFTUFfTkFNRVNQQUNFLCBRVU9URSArIFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEgKyBRVU9URSksIGVsZW1lbnQpOwotCX0KLQkKLSAgICAvLyBub3cgY3JlYXRlIGFuZCBjYWxsIHRoZSB2YWxpZGF0b3IgZm9yIHRoZSBpbmxpbmUgc2NoZW1hCi0gICAgWFNEVmFsaWRhdG9yIHNjaGVtYXYgPSBuZXcgWFNEVmFsaWRhdG9yKCk7Ci0gICAgCi0gICAgLy9TdHJpbmcgZmlsZUxvY2F0aW9uID0gbmV3IFVSTCh2YWxpZGF0b3JtYW5hZ2VyLmdldEZpbGVuYW1lKCkpLmdldFBhdGgoKTsKLSAgICBJbmxpbmVYU0RSZXNvbHZlciBpbmxpbmVFbnRpdHlSZXNvbHZlciA9Ci0gICAgICBnZXRFbnRpdHlSZXNvbHZlcih3c2RsRGVmaW5pdGlvbiwgKFR5cGVzKSBwYXJlbnRzLmdldCgwKSwgYmFzZUxvY2F0aW9uLCB0YXJnZXROYW1lc3BhY2UpOwotICAgIC8vCWFkZCBpbiB0aGUgZXh0ZXJuYWwgWFNEIENhdGFsb2cgdG8gcmVzb2x2ZSBzY2hlbWFzIG9mZmxpbmUKLSAgICBYTUxFbnRpdHlSZXNvbHZlckNoYWluIGVudGl0eVJlc29sdmVyQ2hhaW4gPSBuZXcgWE1MRW50aXR5UmVzb2x2ZXJDaGFpbigpOwotICAgIGVudGl0eVJlc29sdmVyQ2hhaW4uYWRkRW50aXR5UmVzb2x2ZXIoaW5saW5lRW50aXR5UmVzb2x2ZXIpOwotICAgIGVudGl0eVJlc29sdmVyQ2hhaW4uYWRkRW50aXR5UmVzb2x2ZXIodmFsSW5mby5nZXRVUklSZXNvbHZlcigpKTsKLSAgICAvL2VudGl0eVJlc29sdmVyQ2hhaW4uYWRkRW50aXR5UmVzb2x2ZXIoWE1MQ2F0YWxvZ1Jlc29sdmVyLmdldEluc3RhbmNlKCkpOwotICAgIGVudGl0eVJlc29sdmVyQ2hhaW4uYWRkRW50aXR5UmVzb2x2ZXIobmV3IEZpbGVFbnRpdHlSZXNvbHZlcigpKTsKLQkKLSAgICAvLwkgQ3JlYXRlIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlubGluZSBzY2hlbWEuIAotICAgIFN0cmluZyB4c2QgPSBJbmxpbmVTY2hlbWFHZW5lcmF0b3IuY3JlYXRlWFNEU3RyaW5nKHczY2VsZW1lbnQsIGVsZW1lbnRzLCBiYXNlTG9jYXRpb24sIHBhcmVudG5hbWVzcGFjZXMsIGlubGluZUVudGl0eVJlc29sdmVyLmdldElubGluZVNjaGVtYU5TcygpKTsgCi0KLQkKLSAgICBzY2hlbWF2LnZhbGlkYXRlSW5saW5lU2NoZW1hKHhzZCwgdGFyZ2V0TmFtZXNwYWNlLCBiYXNlTG9jYXRpb24sIGVudGl0eVJlc29sdmVyQ2hhaW4sIGlubGluZUVudGl0eVJlc29sdmVyLCB2YWxJbmZvLmdldFNjaGVtYUNhY2hlKCkpOwotICAgIAotLy8JY2hlY2sgaWYgdGhlIFNPQVAgRW5jb2RpbmcgbmFtZXNwYWNlIGlzIHJlcXVpcmVkIGJ1dCBub3QgaW1wb3J0ZWQKLQkJIGlmIChJbmxpbmVTY2hlbWFHZW5lcmF0b3Iuc29hcEVuY29kaW5nUmVxdWlyZWROb3RJbXBvcnRlZChlbGVtLmdldEVsZW1lbnQoKSwgYmFzZUxvY2F0aW9uLCBwYXJlbnRuYW1lc3BhY2VzKSkKLQkJIHsKLQkJICAgdmFsSW5mby5hZGRXYXJuaW5nKG1lc3NhZ2VnZW5lcmF0b3IuZ2V0U3RyaW5nKF9XQVJOX1NPQVBFTkNfSU1QT1JURURfU0NIRU1BKSwgZWxlbWVudCk7Ci0JCSB9Ci0KLSAgICAvLyBJZiB0aGUgc2NoZW1hIGlzbid0IHZhbGlkIGFkZCB0aGUgZXJyb3IgbWVzc2FnZXMgcHJvZHVjZWQgdG8gdmFsaW5mby4KLSAgICAvLyBEb24ndCBhZGQgdGhlIGVycm9ycyBpZiB0aGV5IGFyZSBsb2NhdGVkIG9uIGFub3RoZXIgaW5saW5lIHNjaGVtYS4gVGhlc2UKLQkvLyB3aWxsIGJlIHJlcG9ydGVkIHdoZW4gdGhlIG90aGVyIHNjaGVtYSBpcyB2YWxpZGF0ZWQuCi0JCSAKLSAgICBpZiAoIXNjaGVtYXYuaXNWYWxpZCgpKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGVycm9ycyA9IHNjaGVtYXYuZ2V0RXJyb3JzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChlcnJvcnMuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBFcnJvck1lc3NhZ2UgZXJyID0gKEVycm9yTWVzc2FnZSkgZXJyb3JzLm5leHQoKTsKLSAgICAgICAgU3RyaW5nIHVyaSA9IGVyci5nZXRVUkkoKTsKLSAgICAgICAgaW50IGxpbmUgPSBlcnIuZ2V0RXJyb3JMaW5lKCk7Ci0gICAgICAgIFN0cmluZyBlcnJtZXNzID0gZXJyLmdldEVycm9yTWVzc2FnZSgpOwotICAgICAgICBlcnJtZXNzID0gcmVwbGFjZU5hbWVzcGFjZShlcnJtZXNzLCBuYW1lc3BhY2UpOwotICAgICAgICBpbnQgc2V2ZXJpdHkgPSBlcnIuZ2V0U2V2ZXJpdHkoKTsKLSAgICAgICAgaWYobGluZSA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZih1cmkgPT0gbnVsbCB8fCB1cmkuZXF1YWxzKHZhbEluZm8uZ2V0RmlsZVVSSSgpKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBPYmplY3Qgb2JqZWN0QXRMaW5lID0gZ2V0T2JqZWN0QXRMaW5lKGxpbmUgLSAxLCBlbGVtZW50cyk7Ci0gICAgICAgICAgICBpZiAoc2V2ZXJpdHkgPT0gRE9NRXJyb3IuU0VWRVJJVFlfV0FSTklORykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdmFsSW5mby5hZGRXYXJuaW5nKGVycm1lc3MsIG9iamVjdEF0TGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IoZXJybWVzcywgb2JqZWN0QXRMaW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0JCSAgZWxzZSBpZighaW5saW5lRW50aXR5UmVzb2x2ZXIuaXNJbmxpbmVTY2hlbWEodXJpKSAmJiAhdXJpLmVxdWFscyh2YWxJbmZvLmdldEZpbGVVUkkoKSArIElubGluZVhTRFJlc29sdmVyLklOTElORV9TQ0hFTUFfSUQpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGludCBlcnJvckNvbHVtbiA9IGVyci5nZXRFcnJvckNvbHVtbigpOwotICAgICAgICAgICAgaWYgKHNldmVyaXR5ID09IERPTUVycm9yLlNFVkVSSVRZX1dBUk5JTkcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHZhbEluZm8uYWRkV2FybmluZyhlcnJtZXNzLCBsaW5lLCBlcnJvckNvbHVtbiwgdXJpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdmFsSW5mby5hZGRFcnJvcihlcnJtZXNzLCBsaW5lLCBlcnJvckNvbHVtbiwgdXJpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQkJZWxzZSBpZih1cmkgIT0gbnVsbCAmJiAhaW5saW5lRW50aXR5UmVzb2x2ZXIuaXNJbmxpbmVTY2hlbWEodXJpKSAmJiAhdXJpLmVxdWFscyh2YWxJbmZvLmdldEZpbGVVUkkoKSArIElubGluZVhTRFJlc29sdmVyLklOTElORV9TQ0hFTUFfSUQpKQotICAgICAgICB7Ci0JCSAgaWYgKHNldmVyaXR5ID09IERPTUVycm9yLlNFVkVSSVRZX1dBUk5JTkcpCi0JCSAgewotCSAgICAgICAgdmFsSW5mby5hZGRXYXJuaW5nKGVycm1lc3MsIDAsMCwgdXJpKTsKLQkJICB9Ci0JCSAgZWxzZQotCQkgIHsKLSAgICAgICAgICAgIHZhbEluZm8uYWRkRXJyb3IoZXJybWVzcywgMCwwLCB1cmkpOwotCQkgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAvLyBJZiB0aGUgcGFyc2VyIHdhcyBhYmxlIHRvIGNyZWF0ZSBhIHNjaGVtYSBtb2RlbCBhc3NpZ24gaXQgZm9yIHVzZS4gCi0gICAgLy8gSWYgdGhlIHNjaGVtYSBpcyBpbnZhbGlkIHdlIHN0aWxsIHdhbnQgdG8gbWFrZSB1c2Ugb2YgdGhlIG1vZGVsCi0gICAgLy8gd2hlcmUgcG9zc2libGUgdG8gYXZvaWQgY2FzY2FkaW5nIGVycm9yIG1lc3NhZ2VzIHRvIG1lc3NhZ2UgcGFydHMuCi0gICAgWFNNb2RlbCB4c01vZGVsID0gc2NoZW1hdi5nZXRYU01vZGVsKCk7Ci0gICAgaWYoeHNNb2RlbCAhPSBudWxsKQotICAgIHsKLSAgICAgIHZhbEluZm8uYWRkU2NoZW1hKHhzTW9kZWwpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBHZXQgYW4gZW50aXR5IHJlc29sdmVyIHRoYXQgd2lsbCByZXNvbHZlIGlubGluZSBzY2hlbWFzLiAgRXZlcnkgaW5saW5lIHNjaGVtYSBpcyBwcmVyZWdpc3RlcmVkIHdpdGgKLSAgICogdGhlIHJlc29sdmVyLgotICAgKiAKLSAgICogQHBhcmFtIHdzZGxEZWZpbml0aW9uIFRoZSBXU0RMIGRlZmluaXRpb25zIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB0eXBlcyBUaGUgdHlwZXMgZWxlbWVudC4KLSAgICogQHBhcmFtIHJlZmVyZW5jZUxvY2F0aW9uIFRoZSBsb2NhdGlvbiBvZiB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoaXMgc2NoZW1hLgotICAgKiBAcGFyYW0gdGFyZ2V0TmFtZXNwYWNlIFRoZSB0YXJnZXROYW1lc3BhY2Ugb2YgdGhlIHNjaGVtYS4KLSAgICogQHJldHVybiBBbiBlbnRpdHkgcmVzb2x2ZXIgdGhhdCBjYW4gcmVzb2x2ZSBpbmxpbmUgc2NoZW1hcy4KLSAgICovCi0gIHByb3RlY3RlZCBJbmxpbmVYU0RSZXNvbHZlciBnZXRFbnRpdHlSZXNvbHZlcihEZWZpbml0aW9uIHdzZGxEZWZpbml0aW9uLCBUeXBlcyB0eXBlcywgU3RyaW5nIHJlZmVyZW5jZUxvY2F0aW9uLCBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlKQotICB7Ci0gICAgSW5saW5lWFNEUmVzb2x2ZXIgZW50aXR5UmVzb2x2ZXIgPSBuZXcgSW5saW5lWFNEUmVzb2x2ZXIoKTsKLS8vICAgIGVudGl0eVJlc29sdmVyLnNldFJlZmVyZW5jZUxvY2F0aW9uKHJlZmVyZW5jZUxvY2F0aW9uKTsKLSAgICBMaXN0IHNjaGVtYXMgPSB0eXBlcy5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICBpZiAoc2NoZW1hcyAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGlTY2hlbWFzID0gc2NoZW1hcy5pdGVyYXRvcigpOwotCSAgU2V0IG5hbWVzcGFjZXMgPSBuZXcgVHJlZVNldCgpOyAKLSAgICAgIHdoaWxlIChpU2NoZW1hcy5oYXNOZXh0KCkpIAotICAgICAgeyAKLSAgICAgICAgU2NoZW1hIGV4dEVsZW0gPSAoU2NoZW1hKSBpU2NoZW1hcy5uZXh0KCk7IAotICAgICAgICBTdHJpbmcgdGhpc05hbWVzcGFjZSA9IGV4dEVsZW0uZ2V0RWxlbWVudCgpLmdldEF0dHJpYnV0ZShDb25zdGFudHMuQVRUUl9UQVJHRVRfTkFNRVNQQUNFKTsgCi0gICAgICAgIGlmKHRoaXNOYW1lc3BhY2UgIT0gbnVsbCkgCi0gICAgICAgIHsgCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlcy5hZGQodGhpc05hbWVzcGFjZSk7IAotICAgICAgICB9IAotICAgICAgfSAKLSAgICAgIGlTY2hlbWFzID0gc2NoZW1hcy5pdGVyYXRvcigpOyAKLQotICAgICAgd2hpbGUgKGlTY2hlbWFzLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAJICBTY2hlbWEgZXh0RWxlbSA9IChTY2hlbWEpIGlTY2hlbWFzLm5leHQoKTsKLSAgICAgICAgU3RyaW5nIHRoaXNOYW1lc3BhY2UgPSBleHRFbGVtLmdldEVsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoQ29uc3RhbnRzLkFUVFJfVEFSR0VUX05BTUVTUEFDRSk7Ci0gICAgICAgIGlmICh0aGlzTmFtZXNwYWNlICE9IG51bGwgJiYgIXRoaXNOYW1lc3BhY2UuZXF1YWxzSWdub3JlQ2FzZSh0YXJnZXROYW1lc3BhY2UpKQotICAgICAgICB7Ci0gICAgICAgIAkKLSAgICAgICAgCUVsZW1lbnQgZWxlbWVudCA9IGV4dEVsZW0uZ2V0RWxlbWVudCgpOwotCQkJCi0vLwkJCWNyZWF0ZSB0aGUgaW5saW5lIHNjaGVtYSBzdHJpbmcKLQkJCSAvL0VsZW1lbnQgdzNjZWxlbWVudCA9IGVsZW0uZ2V0RWxlbWVudCgpOwotCQkJIEhhc2h0YWJsZSBwYXJlbnRuYW1lc3BhY2VzID0gZ2V0TmFtZXNwYWNlRGVjbGFyYXRpb25zRnJvbVBhcmVudHMod3NkbERlZmluaXRpb24sZWxlbWVudCk7Ci0JCQkgU3RyaW5nIHhzZCA9IElubGluZVNjaGVtYUdlbmVyYXRvci5jcmVhdGVYU0RTdHJpbmcoZWxlbWVudCwgbmV3IEFycmF5TGlzdCgpLCByZWZlcmVuY2VMb2NhdGlvbiwgcGFyZW50bmFtZXNwYWNlcywgbmFtZXNwYWNlcyk7Ci0gICAgICAgIAkvL2FkZE5hbWVzcGFjZURlY2xhcmF0aW9uc0Zyb21QYXJlbnRzKHdzZGxEZWZpbml0aW9uLGVsZW1lbnQpOwotICAgICAgICAgIGVudGl0eVJlc29sdmVyLmFkZCh0aGlzTmFtZXNwYWNlLCB4c2QpOwotICAgICAgICB9Ci0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVudGl0eVJlc29sdmVyOwotICB9Ci0gIAotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS52YWxpZGF0b3IuSVdTREwxMVZhbGlkYXRvciNzZXRSZXNvdXJjZUJ1bmRsZShqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZUJ1bmRsZShSZXNvdXJjZUJ1bmRsZSByYikKLSAgewotICAJbWVzc2FnZWdlbmVyYXRvciA9IG5ldyBNZXNzYWdlR2VuZXJhdG9yKHJiKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0TWVzc2FnZUdlbmVyYXRvcihNZXNzYWdlR2VuZXJhdG9yIG1lc3NnZW4pCi0gIHsKLSAgICBtZXNzYWdlZ2VuZXJhdG9yID0gbWVzc2dlbjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIG5hbWVzcGFjZSBkZWNsYXJhdGlvbnMgYXMgaW4gdGhlIGZvcm0gCi0gICAqIHhtbG5zPSJzb21lbmFtZXNwYWNlIgotICAgKiBmcm9tIHRoZSBkZWZpbml0aW9ucyBhbmQgdHlwZXMgZWxlbWVudHMgYW5kIGFkZCB0aGVtIHRvIHRoZSBzY2hlbWEgZWxlbWVudCBzbyB0aGUgc2NoZW1hIAotICAgKiB2YWxpZGF0b3Igd2lsbCBoYXZlIGFjY2VzcyB0byB0aGVtLgotICAgKiAKLSAgICogQHBhcmFtIHdzZGxEZWZpbml0aW9uIFRoZSBXU0RMIGRlZmluaXRpb25zIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBlbGVtZW50IFRoZSB0eXBlcyBlbGVtZW50LgotICAgKiBAcmV0dXJuIEEgaGFzaHRhYmxlIHdpdGggdGhlIG5hbWVzcGFjZSBlbGVtZW50cyBmcm9tIHRoZSBlbGVtZW50cyBwcm92aWRlZC4KLSAgICovCi0gIHByb3RlY3RlZCBIYXNodGFibGUgZ2V0TmFtZXNwYWNlRGVjbGFyYXRpb25zRnJvbVBhcmVudHMoRGVmaW5pdGlvbiB3c2RsRGVmaW5pdGlvbiwgRWxlbWVudCBlbGVtZW50KQotICB7Ci0gIAlIYXNodGFibGUgbnNzID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIEl0ZXJhdG9yIG5hbWVTcGFjZXMgPSB3c2RsRGVmaW5pdGlvbi5nZXROYW1lc3BhY2VzKCkua2V5U2V0KCkuaXRlcmF0b3IoKTsKLQotICAgIFN0cmluZyBYTUxOUyA9IENvbnN0YW50cy5BVFRSX1hNTE5TOwotICAgIAotICAgIHdoaWxlIChuYW1lU3BhY2VzLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgbnNwcmVmaXggPSBYTUxOUzsKLSAgICAgIFN0cmluZyBucyA9IChTdHJpbmcpIG5hbWVTcGFjZXMubmV4dCgpOwotICAgICAgaWYgKCFucy5lcXVhbHNJZ25vcmVDYXNlKCIiKSkKLSAgICAgIHsKLSAgICAgICAgbnNwcmVmaXggKz0gIjoiOwotICAgICAgfQotICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZShuc3ByZWZpeCArIG5zKSkKLSAgICAgIHsKLSAgICAgIAluc3MucHV0KG5zcHJlZml4ICsgbnMsIHdzZGxEZWZpbml0aW9uLmdldE5hbWVzcGFjZShucykpOwotLy8gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5zcHJlZml4ICsgbnMsIHdzZGxEZWZpbml0aW9uLmdldE5hbWVzcGFjZShucykpOwotICAgICAgfQotCi0gICAgfQotICAgIC8vIE5leHQgaGFuZGxlIHRoZSBwYXJlbnQgdHlwZXMgZWxlbWVudAotICAgIE5hbWVkTm9kZU1hcCBhdHRzID0gZWxlbWVudC5nZXRQYXJlbnROb2RlKCkuZ2V0QXR0cmlidXRlcygpOwotICAgIGludCBhdHRzbGVuZ3RoID0gYXR0cy5nZXRMZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dHNsZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBOb2RlIHRlbXBub2RlID0gYXR0cy5pdGVtKGkpOwotICAgICAgU3RyaW5nIG5vZGVuYW1lID0gdGVtcG5vZGUuZ2V0Tm9kZU5hbWUoKTsKLSAgICAgIC8vIGlmIHRoaXMgaXMgYSBuYW1lc3BhY2UgYXR0cmlidXRlCi0gICAgICBpZiAobm9kZW5hbWUuaW5kZXhPZihYTUxOUykgIT0gLTEpCi0gICAgICB7Ci0JCW5zcy5wdXQobm9kZW5hbWUsICB0ZW1wbm9kZS5nZXROb2RlVmFsdWUoKSk7Ci0gICAgICAgIC8vZWxlbWVudC5zZXRBdHRyaWJ1dGUobm9kZW5hbWUsIHRlbXBub2RlLmdldE5vZGVWYWx1ZSgpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5zczsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdpdmVuIGEgbGluZSBudW1iZXIgZm9yIHRoZSBzY2hlbWEgcmV0dXJucyB0aGUgZWxlbWVudCBmb3VuZCBvbiB0aGF0IGxpbmUuIAotICAgKiBVc2VmdWwgZm9yIG9idGFpbmluZyBlbGVtZW50cyBmcm9tIHNjaGVtYSBTdHJpbmdzLgotICAgKiAKLSAgICogQHBhcmFtIGxpbmUgVGhlIGxpbmUgbnVtYmVyIGZvciB0aGUgc2NoZW1hLgotICAgKiBAcGFyYW0gZWxlbWVudHMgVGhlIGxpc3Qgb2YgZWxlbWVudHMgdG8gY2hlY2suCi0gICAqIEByZXR1cm4gVGhlIG9iamVjdCBsb2NhdGVkIGF0IHRoZSBsaW5lIG9yIGF0IGxpbmUgMCBpZiB0aGUgbGluZSBpcyBpbnZhbGlkLgotICAgKi8KLSAgIHByb3RlY3RlZCBPYmplY3QgZ2V0T2JqZWN0QXRMaW5lKGludCBsaW5lLCBMaXN0IGVsZW1lbnRzKQotICAgewotICAgCWlmKGxpbmUgPCAwIHx8IGxpbmUgPj0gZWxlbWVudHMuc2l6ZSgpKQotICAgCXsKLSAgIAkgIGxpbmUgPSAwOwotICAgCX0KLQlyZXR1cm4gZWxlbWVudHMuZ2V0KGxpbmUpOwotICAgfQotICAgCi0gIC8qKgotICAgKiBSZXBsYWNlIGFueSBpbnN0YW5jZSBvZiB0aGUgMjAwMSBzY2hlbWEgbmFtZXNwYWNlIGluIHRoZSBnaXZlbiBtZXNzYWdlIHdpdGgKLSAgICogdGhlIGdpdmVuIG5hbWVzcGFjZS4KLSAgICogCi0gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIHJlcGxhY2UgdGhlIG5hbWVzcGFjZSBpbi4KLSAgICogQHBhcmFtIG5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIHVzZWQgZm9yIHJlcGxhY2VtZW50LgotICAgKiBAcmV0dXJuIFRoZSBtZXNzYWdlIHdpdGggdGhlIDIwMDEgc2NoZW1hIG5hbWVzcGFjZSByZXBsYWNlZCBieSB0aGUgZ2l2ZW4gbmFtZXNwYWNlLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgcmVwbGFjZU5hbWVzcGFjZShTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIG5hbWVzcGFjZSkKLSAgIHsKLSAgICAgU3RyaW5nIHhzZDIwMDEgPSBTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxOwotICAgICBpbnQgc3RhcnQgPSBtZXNzYWdlLmluZGV4T2YoeHNkMjAwMSk7Ci0gICAgIGludCBlbmQgPSBzdGFydCArIHhzZDIwMDEubGVuZ3RoKCk7Ci0gICAgIGlmKHN0YXJ0IDwgMCkKLSAgICAgewotICAgICAgIHJldHVybiBtZXNzYWdlOwotICAgICB9Ci0gICAgIFN0cmluZyBzdGFydFN0cmluZyA9IG1lc3NhZ2Uuc3Vic3RyaW5nKDAsc3RhcnQpOwotICAgICBTdHJpbmcgZW5kU3RyaW5nID0gbWVzc2FnZS5zdWJzdHJpbmcoZW5kLG1lc3NhZ2UubGVuZ3RoKCkpOwotICAgICByZXR1cm4gc3RhcnRTdHJpbmcgKyBuYW1lc3BhY2UgKyBlbmRTdHJpbmc7Ci0gICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9JbmxpbmVYU0RSZXNvbHZlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvSW5saW5lWFNEUmVzb2x2ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNkNTM2Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9JbmxpbmVYU0RSZXNvbHZlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS54c2Q7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nUmVhZGVyOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxSZXNvdXJjZUlkZW50aWZpZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlhOSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTEVudGl0eVJlc29sdmVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MSW5wdXRTb3VyY2U7Ci0KLS8qKgotICogQW4gWE1MRW50aXR5UmVzb2x2ZXIgdGhhdCBhbGxvd3MgaW5saW5lIHNjaGVtYXMgdG8gcmVzb2x2ZSBlYWNoIG90aGVyIHRocm91Z2ggaW1wb3J0cy4KLSAqLwotcHVibGljIGNsYXNzIElubGluZVhTRFJlc29sdmVyIGltcGxlbWVudHMgWE1MRW50aXR5UmVzb2x2ZXIKLXsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5MSU5FX1NDSEVNQV9JRCA9ICIjaW5saW5lc2NoZW1hIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBGSUxFX1BSRUZJWCA9ICJmaWxlOiI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgWE1MTlMgPSAieG1sbnMiOwotICBwcm90ZWN0ZWQgSGFzaHRhYmxlIGVudGl0aWVzID0gbmV3IEhhc2h0YWJsZSgpOwotLy8gIHByb3RlY3RlZCBTdHJpbmcgcmVmTG9jYXRpb24gPSBudWxsOwotICBwcm90ZWN0ZWQgWE1MRW50aXR5UmVzb2x2ZXIgZXh0ZXJuYWxSZXNvbHZlciA9IG51bGw7Ci0gIHByb3RlY3RlZCBYTUxJbnB1dFNvdXJjZSByZWZlcnJpbmdTY2hlbWFJbnB1dFNvdXJjZSA9IG51bGw7Ci0gIHByb3RlY3RlZCBTdHJpbmcgcmVmZXJyaW5nU2NoZW1hTmFtZXNwYWNlID0gbnVsbDsKLSAgCi0gIC8qKgotICAgKiBDb25zdHVjdG9yLgotICAgKi8KLSAgcHVibGljIElubGluZVhTRFJlc29sdmVyKCkKLSAgewotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MRW50aXR5UmVzb2x2ZXIjcmVzb2x2ZUVudGl0eShvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MUmVzb3VyY2VJZGVudGlmaWVyKQotICAgKi8KLSAgcHVibGljIFhNTElucHV0U291cmNlIHJlc29sdmVFbnRpdHkoWE1MUmVzb3VyY2VJZGVudGlmaWVyIHJlc291cmNlSWRlbnRpZmllcikKLQkJIHRocm93cyBYTklFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsKLQlTdHJpbmcgc3lzdGVtSWQgPSByZXNvdXJjZUlkZW50aWZpZXIuZ2V0RXhwYW5kZWRTeXN0ZW1JZCgpOwkgCi0JU3RyaW5nIHB1YmxpY0lkID0gcmVzb3VyY2VJZGVudGlmaWVyLmdldFB1YmxpY0lkKCk7CQotCVN0cmluZyBuYW1lc3BhY2UgPSByZXNvdXJjZUlkZW50aWZpZXIuZ2V0TmFtZXNwYWNlKCk7Ci0JWE1MSW5wdXRTb3VyY2UgaXMgPSBudWxsOwotCVN0cmluZyBzY2hlbWEgPSBudWxsOwotCWlmIChzeXN0ZW1JZCA9PSBudWxsKQotCXsKLQkgIGlmKHB1YmxpY0lkID09IG51bGwpCi0JICB7Ci0JICAJaWYobmFtZXNwYWNlID09IG51bGwpCi0JICAJewkKLQkgICAgICByZXR1cm4gbnVsbDsKLQkgIAl9Ci0JICAJZWxzZQotCSAgCXsKLQkgIAkJc3lzdGVtSWQgPSBuYW1lc3BhY2U7Ci0JICAJfQotCSAgfQotCSAgZWxzZQotCSAgewkKLQkgICAgc3lzdGVtSWQgPSBwdWJsaWNJZDsKLQkgIH0KLQl9Ci0JICAKLQlpZihyZWZlcnJpbmdTY2hlbWFOYW1lc3BhY2UgIT0gbnVsbCAmJiByZWZlcnJpbmdTY2hlbWFOYW1lc3BhY2UuZXF1YWxzKHN5c3RlbUlkKSkKLQl7Ci0JCWlmKHJlZmVycmluZ1NjaGVtYUlucHV0U291cmNlIT1udWxsKQotCQl7Ci0JCQlyZXR1cm4gcmVmZXJyaW5nU2NoZW1hSW5wdXRTb3VyY2U7Ci0JCX0KLQl9Ci0JZWxzZSBpZiAoKHNjaGVtYSA9IChTdHJpbmcpIGVudGl0aWVzLmdldChzeXN0ZW1JZCkpICE9IG51bGwgJiYgIXNjaGVtYS5lcXVhbHMoIiIpKQotCXsKLQkJaXMgPSBuZXcgWE1MSW5wdXRTb3VyY2UocHVibGljSWQsIHJlZmVycmluZ1NjaGVtYUlucHV0U291cmNlLmdldFN5c3RlbUlkKCkgKyBJTkxJTkVfU0NIRU1BX0lELCBudWxsLCBuZXcgU3RyaW5nUmVhZGVyKHNjaGVtYSksbnVsbCk7Ci0JfQotCQotICAgIC8vaWYoaXMgPT0gbnVsbCkKLSAgICAvL3sKLSAgICAvLwl0aHJvdyBuZXcgSU9FeGNlcHRpb24oKTsKLSAgICAvL30KLQlyZXR1cm4gaXM7Ci0gIH0KLQotICAvKioKLSAgICogQWRkIGFuIGlubGluZSBzY2hlbWEuCi0gICAqIAotICAgKiBAcGFyYW0gdGFyZ2V0TmFtZXNwYWNlIC0gdGhlIHRhcmdldCBuYW1lc3BhY2Ugb2YgdGhlIHNjaGVtYQotICAgKiBAcGFyYW0gc2NoZW1hIC0gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNjaGVtYQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkKFN0cmluZyB0YXJnZXROYW1lc3BhY2UsIFN0cmluZyBzY2hlbWEpCi0gIHsKLSAgICBlbnRpdGllcy5wdXQodGFyZ2V0TmFtZXNwYWNlLCBzY2hlbWEpOwotICB9Ci0gIAotICAvKioKLSAgICogQWRkIHRoZSByZWZlcnJpbmcgaW5saW5lIHNjaGVtYS4gCi0gICAqIAotICAgKiBAcGFyYW0gaW5wdXRTb3VyY2UgLSBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbmxpbmUgc2NoZW1hCi0gICAqIEBwYXJhbSBuYW1lc3BhY2UgLSB0aGUgbmFtZXNwYWNlIG9mIHRoZSBpbmxpbmUgc2NoZW1hCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRSZWZlcnJpbmdTY2hlbWEoWE1MSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UsIFN0cmluZyBuYW1lc3BhY2UpCi0gIHsKLSAgICByZWZlcnJpbmdTY2hlbWFJbnB1dFNvdXJjZSA9IGlucHV0U291cmNlOwotICAgIHJlZmVycmluZ1NjaGVtYU5hbWVzcGFjZSA9IG5hbWVzcGFjZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybiB0cnVlIGlmIHRoZSBuYW1lc3BhY2UgY29ycmVzcG9uZHMgdG8gYW4gaW5saW5lIHNjaGVtYSwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKiAKLSAgICogQHBhcmFtIG5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIG9mIHRoZSBzY2hlbWEuCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgbmFtZXNwYWNlIGNvcnJlc3BvbmRzIHRvIGFuIGlubGluZSBzY2hlbWEsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzSW5saW5lU2NoZW1hKFN0cmluZyBuYW1lc3BhY2UpCi0gIHsKLSAgICByZXR1cm4gZW50aXRpZXMuY29udGFpbnNLZXkobmFtZXNwYWNlKTsKLSAgfQotICAKLSAgLyoqIAotICAgKiBHZXQgdGhlIHNldCBvZiB0aGUgaW5saW5lIHNjaGVtYSBuYW1lc3BhY2VzLiAKLSAgICogCi0gICAqIEByZXR1cm4gVGhlIHNldCBvZiB0aGUgaW5saW5lIHNjaGVtYSBuYW1lc3BhY2VzLiAKLSAgICovIAotICBwdWJsaWMgU2V0IGdldElubGluZVNjaGVtYU5TcygpIAotICB7IAotICAgICAgICByZXR1cm4gZW50aXRpZXMua2V5U2V0KCk7IAotICB9IAotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9TY2hlbWFBdHRyaWJ1dGVUYWJsZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvU2NoZW1hQXR0cmlidXRlVGFibGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg4MTEzNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9TY2hlbWFBdHRyaWJ1dGVUYWJsZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS54c2Q7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5pbXBsLnhzLlNjaGVtYVN5bWJvbHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMudXRpbC5TeW1ib2xUYWJsZTsKLS8qKgotICogVGhpcyBjbGFzcyB3aWxsIGFsbG93IHRoZSBjYWxsaW5nIGNvZGUgdG8gc2VlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgZGVmaW5lZCBpbiBzY2hlbWEuCi0gKiBUaGlzIHNlcnZlcyBhcyBzY2hlbWEgZm9yIHNjaGVtYS4KLSAqLwotcHVibGljIGNsYXNzIFNjaGVtYUF0dHJpYnV0ZVRhYmxlIGV4dGVuZHMgU3ltYm9sVGFibGUKLXsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgU2NoZW1hQXR0cmlidXRlVGFibGUoKQotICB7Ci0gICAgLy8gYWRkIGFsbCBvZiB0aGUgc3lib2xzIHRvIHRoZSB0YWJsZS4gU2NoZW1hU3ltYm9scyBwcm9iYWJseSBzaG91bGQgaGF2ZQotICAgIC8vIGEgU3ltYm9sVGFibGUgZm9yIHRoZXNlIGJ1dCBpdCBkb2Vzbid0Ci0KLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfVFdPUE9VTkRBTlkpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9UV09QT1VORExPQ0FMKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfVFdPUE9VTkRPVEhFUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1RXT1BPVU5EVEFSR0VUTlMpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9QT1VOREFMTCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0ZBTFNFXzApOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9UUlVFXzEpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9BTllTSU1QTEVUWVBFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfQU5ZVFlQRSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0FOWVVSSSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0JBU0U2NEJJTkFSWSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0JPT0xFQU4pOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9CWVRFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfQ09MTEFQU0UpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9EQVRFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfREFURVRJTUUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9EQVkpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9ERUNJTUFMKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfRE9VQkxFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfRFVSQVRJT04pOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9FTlRJVFkpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9FTlRJVElFUyk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0VYVEVOU0lPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0ZBTFNFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfRkxPQVQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9IRVhCSU5BUlkpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9JRCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0lEUkVGKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfSURSRUZTKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfSU5UKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfSU5URUdFUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0xBTkdVQUdFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfTEFYKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfTElTVCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0xPTkcpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9OQU1FKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfTkVHQVRJVkVJTlRFR0VSKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfTU9OVEgpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9NT05USERBWSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05DTkFNRSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05NVE9LRU4pOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9OTVRPS0VOUyk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05PTk5FR0FUSVZFSU5URUdFUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05PTlBPU0lUSVZFSU5URUdFUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05PUk1BTElaRURTVFJJTkcpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9OT1RBVElPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX09QVElPTkFMKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfUE9TSVRJVkVJTlRFR0VSKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfUFJFU0VSVkUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9QUk9ISUJJVEVEKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfUU5BTUUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9RVUFMSUZJRUQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9SRVBMQUNFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfUkVRVUlSRUQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9SRVNUUklDVElPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1NIT1JUKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfU0tJUCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1NUUklDVCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1NUUklORyk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1NVQlNUSVRVVElPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1RJTUUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9UT0tFTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1RSVUUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9VTkJPVU5ERUQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9VTklPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1VOUVVBTElGSUVEKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfVU5TSUdORURCWVRFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfVU5TSUdORURJTlQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9VTlNJR05FRExPTkcpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9VTlNJR05FRFNIT1JUKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfWUVBUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1lFQVJNT05USCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEveHNkL1ZhbGlkYXRlRXJyb3JIYW5kbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9WYWxpZGF0ZUVycm9ySGFuZGxlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTJkYzQyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEveHNkL1ZhbGlkYXRlRXJyb3JIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFcnJvckhhbmRsZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxQYXJzZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnV0aWwuRXJyb3JNZXNzYWdlOwotCi0vKioKLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIFhNTEVycm9ySGFuZGxlciB0aGF0IGNhcHR1cmVzIGVycm9yIGZyb20gWGVyY2VzLgotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVFcnJvckhhbmRsZXIgaW1wbGVtZW50cyBYTUxFcnJvckhhbmRsZXIKLXsKLSAgQXJyYXlMaXN0IGVycm9yTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAKLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIGVycm9yIG1lc3NhZ2VzIGNyZWF0ZWQgYnkgWGVyY2VzLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgZXJyb3JzIGxpc3QuCi0gICAqLwotICBwdWJsaWMgTGlzdCBnZXRFcnJvck1lc3NhZ2VzKCkKLSAgewotICAgIHJldHVybiBlcnJvckxpc3Q7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgdmFsaWRhdGlvbiBtZXNzYWdlIGZyb20gdGhlIGV4Y2VwdGlvbiBhbmQgc2V2ZXJpdHkuCi0gICAqIAotICAgKiBAcGFyYW0ga2V5IFRoZSBYZXJjZXMgZXJyb3Iga2V5LgotICAgKiBAcGFyYW0gZXJyb3IgVGhlIGVycm9yLgotICAgKiBAcGFyYW0gc2V2ZXJpdHkgVGhlIHNldmVyaXR5LgotICAgKiBAcmV0dXJuIEFuIGVycm9yIG1lc3NhZ2UuCi0gICAqLwotICBwcm90ZWN0ZWQgRXJyb3JNZXNzYWdlIGNyZWF0ZVZhbGlkYXRpb25NZXNzYWdlRm9yRXhjZXB0aW9uKFN0cmluZyBrZXksIFhNTFBhcnNlRXhjZXB0aW9uIGVycm9yLCBpbnQgc2V2ZXJpdHkpCi0gIHsKLSAgICBTdHJpbmcgdXJpID0gZXJyb3IuZ2V0TGl0ZXJhbFN5c3RlbUlkKCk7Ci0gICAgaWYodXJpID09IG51bGwpCi0gICAgewotICAgICAgdXJpID0gZXJyb3IuZ2V0UHVibGljSWQoKTsKLSAgICB9Ci0gICAgRXJyb3JNZXNzYWdlIGVycm9yTWVzc2FnZSA9IG5ldyBFcnJvck1lc3NhZ2UoKTsKLSAgICBlcnJvck1lc3NhZ2Uuc2V0RXJyb3JMaW5lKGVycm9yLmdldExpbmVOdW1iZXIoKSk7Ci0gICAgZXJyb3JNZXNzYWdlLnNldEVycm9yTWVzc2FnZShlcnJvci5nZXRNZXNzYWdlKCkpOwotICAgIGVycm9yTWVzc2FnZS5zZXRFcnJvckNvbHVtbihlcnJvci5nZXRDb2x1bW5OdW1iZXIoKSk7Ci0gICAgZXJyb3JNZXNzYWdlLnNldFVSSSh1cmkpOwotICAgIGVycm9yTWVzc2FnZS5zZXRTZXZlcml0eShzZXZlcml0eSk7Ci0gICAgcmV0dXJuIGVycm9yTWVzc2FnZTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MRXJyb3JIYW5kbGVyI2Vycm9yKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MUGFyc2VFeGNlcHRpb24pCi0gICAqLwotICBwdWJsaWMgdm9pZCBlcnJvcihTdHJpbmcgZG9tYWluLCBTdHJpbmcga2V5LCBYTUxQYXJzZUV4Y2VwdGlvbiBleGNlcHRpb24pIHRocm93cyBYTklFeGNlcHRpb24KLSAgewotICAgIGVycm9yTGlzdC5hZGQoY3JlYXRlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFeGNlcHRpb24oa2V5LCBleGNlcHRpb24sIERPTUVycm9yLlNFVkVSSVRZX0VSUk9SKSk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTEVycm9ySGFuZGxlciNmYXRhbEVycm9yKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MUGFyc2VFeGNlcHRpb24pCi0gICAqLwotICBwdWJsaWMgdm9pZCBmYXRhbEVycm9yKFN0cmluZyBkb21haW4sIFN0cmluZyBrZXksIFhNTFBhcnNlRXhjZXB0aW9uIGV4Y2VwdGlvbikgdGhyb3dzIFhOSUV4Y2VwdGlvbgotICB7Ci0gICAgZXJyb3JMaXN0LmFkZChjcmVhdGVWYWxpZGF0aW9uTWVzc2FnZUZvckV4Y2VwdGlvbihrZXksIGV4Y2VwdGlvbiwgRE9NRXJyb3IuU0VWRVJJVFlfRkFUQUxfRVJST1IpKTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MRXJyb3JIYW5kbGVyI3dhcm5pbmcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxQYXJzZUV4Y2VwdGlvbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHdhcm5pbmcoU3RyaW5nIGRvbWFpbiwgU3RyaW5nIGtleSwgWE1MUGFyc2VFeGNlcHRpb24gZXhjZXB0aW9uKSB0aHJvd3MgWE5JRXhjZXB0aW9uCi0gIHsKLSAgICBlcnJvckxpc3QuYWRkKGNyZWF0ZVZhbGlkYXRpb25NZXNzYWdlRm9yRXhjZXB0aW9uKGtleSwgZXhjZXB0aW9uLCBET01FcnJvci5TRVZFUklUWV9XQVJOSU5HKSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEveHNkL1hNTEVudGl0eVJlc29sdmVyQ2hhaW4uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEveHNkL1hNTEVudGl0eVJlc29sdmVyQ2hhaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFlYjg1Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9YTUxFbnRpdHlSZXNvbHZlckNoYWluLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxSZXNvdXJjZUlkZW50aWZpZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlhOSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTEVudGl0eVJlc29sdmVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MSW5wdXRTb3VyY2U7Ci0KLS8qKgotICogSGFuZGxlIGEgY2hhaW4gb2YgZW50aXR5IHJlc29sdmVycy4KLSAqLwotcHVibGljIGNsYXNzIFhNTEVudGl0eVJlc29sdmVyQ2hhaW4gaW1wbGVtZW50cyBYTUxFbnRpdHlSZXNvbHZlcgotewotICBwcml2YXRlIExpc3QgZW50aXR5UmVzb2x2ZXJzID0gbmV3IFZlY3RvcigpOwotICAKLSAgLyoqCi0gICAqIEBzZWUgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFbnRpdHlSZXNvbHZlciNyZXNvbHZlRW50aXR5KG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAqLwotICBwdWJsaWMgWE1MSW5wdXRTb3VyY2UgcmVzb2x2ZUVudGl0eShYTUxSZXNvdXJjZUlkZW50aWZpZXIgeG1sUmVzb3VyY2VJZGVudGlmaWVyKSB0aHJvd3MgWE5JRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbgotICB7Ci0gICAgWE1MSW5wdXRTb3VyY2UgaXMgPSBudWxsOwotICAgIAotICAgIC8vIFRPRE86IFRoaXMgZml4IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhpcyBwcm9ibGVtIGlzIGZpeGVkIGluIFhlcmNlcy4KLSAgICAvLyBYZXJjZXMgY3VycmVudGx5ICh2ZXJzaW9uIDIuNykgaGFzIGEgcHJvYmxlbSB3aGVuIHRoZSBob25vdXIgYWxsIHNjaGVtYSBsb2NhdGlvbnMKLSAgICAvLyBwcm9wZXJ0eSBpcyBzZXQgYW5kIHRoZSBzYW1lIHNjaGVtYSBpcyBpbXBvcnRlZCBieSB0d28gZGlmZmVyZW50IGZpbGVzIGFuZCBvbmUKLSAgICAvLyBvZiB0aGUgaW1wb3J0cyB1c2VzIFwgYW5kIGFub3RoZXIgdXNlcyAvIGluIHBhcnQgb2YgdGhlIGxvY2F0aW9uLgotICAgIGlmKHhtbFJlc291cmNlSWRlbnRpZmllci5nZXRMaXRlcmFsU3lzdGVtSWQoKSAhPSBudWxsKQotICAgIAl4bWxSZXNvdXJjZUlkZW50aWZpZXIuc2V0TGl0ZXJhbFN5c3RlbUlkKHhtbFJlc291cmNlSWRlbnRpZmllci5nZXRMaXRlcmFsU3lzdGVtSWQoKS5yZXBsYWNlKCdcXCcsJy8nKSk7Ci0gICAgCi0gICAgSXRlcmF0b3IgZW50aXR5UmVzb2x2ZXJJdGVyID0gZW50aXR5UmVzb2x2ZXJzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGVudGl0eVJlc29sdmVySXRlci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgWE1MRW50aXR5UmVzb2x2ZXIgZW50aXR5UmVzb2x2ZXIgPSAoWE1MRW50aXR5UmVzb2x2ZXIpZW50aXR5UmVzb2x2ZXJJdGVyLm5leHQoKTsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBpcyA9IGVudGl0eVJlc29sdmVyLnJlc29sdmVFbnRpdHkoeG1sUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChYTklFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgfQotICAgICAgaWYgKGlzICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICAvLyBUaHJvdyBhbmQgSU9FeGNlcHRpb24gaWYgdGhlIGZpbGUgaXNuJ3QgZm91bmQKLSAgICBpZiAoaXMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlVuYWJsZSB0byBsb2NhdGUgZmlsZSIpOwotICAgIH0KLSAgICByZXR1cm4gaXM7Ci0gIH0KLQotICAvKioKLSAgICogQWRkIGFuIGVudGl0eSByZXNvbHZlciB0byB0aGlzIGNoYWluLgotICAgKiAKLSAgICogQHBhcmFtIGVudGl0eVJlc29sdmVyIFRoZSByZXNvbHZlciB0byBhZGQgdG8gdGhlIGNoYWluLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkRW50aXR5UmVzb2x2ZXIoWE1MRW50aXR5UmVzb2x2ZXIgZW50aXR5UmVzb2x2ZXIpCi0gIHsKLSAgICBlbnRpdHlSZXNvbHZlcnMuYWRkKGVudGl0eVJlc29sdmVyKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvWFNEVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9YU0RWYWxpZGF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY3MGEzZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvd3NkbDExL3hzZC9YU0RWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkOwotCi1pbXBvcnQgamF2YS5pby5SZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdSZWFkZXI7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLmltcGwuQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLmltcGwueHMuWFNERGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMucGFyc2Vycy5YTUxHcmFtbWFyUHJlcGFyc2VyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnV0aWwuWE1MR3JhbW1hclBvb2xJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5HcmFtbWFyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5YTUxHcmFtbWFyRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLmdyYW1tYXJzLlhNTEdyYW1tYXJQb29sOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5YU0dyYW1tYXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFbnRpdHlSZXNvbHZlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTElucHV0U291cmNlOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhzLlN0cmluZ0xpc3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNNb2RlbDsKLQotCi0vKioKLSAqIFZhbGlkYXRlIHNjaGVtYXMgZnJvbSBmaWxlcyBvciBTdHJpbmcuCi0gKi8KLXB1YmxpYyBjbGFzcyBYU0RWYWxpZGF0b3IKLXsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBIT05PVVJfQUxMX1NDSEVNQV9MT0NBVElPTlNfRkVBVFVSRV9JRCA9ICJodHRwOi8vYXBhY2hlLm9yZy94bWwvZmVhdHVyZXMvaG9ub3VyLWFsbC1zY2hlbWFMb2NhdGlvbnMiOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIEZJTEVfUFJFRklYID0gImZpbGU6IjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBYTUxOUyA9ICJ4bWxucyI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgVEFSR0VUTkFNRVNQQUNFID0gInRhcmdldE5hbWVzcGFjZSI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgTkFNRVNQQUNFID0gIm5hbWVzcGFjZSI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgSU1QT1JUID0gImltcG9ydCI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgU0NIRU1BTE9DQVRJT04gPSAic2NoZW1hTG9jYXRpb24iOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIFRZUEUgPSAidHlwZSI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmdbXSBpZ25vcmVOYW1lc3BhY2VzID0KLSAgICB7ICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIsICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hNTFNjaGVtYSIgfTsKLQotICBwcm90ZWN0ZWQgWFNNb2RlbCB4c01vZGVsOwotICBwcm90ZWN0ZWQgYm9vbGVhbiBpc1ZhbGlkWFNEOwotICBwcm90ZWN0ZWQgTGlzdCBlcnJvcnM7Ci0gIHByb3RlY3RlZCBTdHJpbmcgZmlsZWxvY2F0aW9uOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICovCi0gIHB1YmxpYyBYU0RWYWxpZGF0b3IoKQotICB7Ci0gICAgeHNNb2RlbCA9IG51bGw7Ci0gICAgaXNWYWxpZFhTRCA9IGZhbHNlOwotICAgIGVycm9ycyA9IG51bGw7Ci0gIH0KLSAgLyoqCi0gICAqIFZhbGlkYXRlIGFuIGlubGluZSBzY2hlbWEuCi0gICAqIAotICAgKiBAcGFyYW0gc2NoZW1hIEEgc2NoZW1hIHJlcHJlc2VudGVkIGFzIGEgc3RyaW5nLgotICAgKiBAcGFyYW0gdGFyZ2V0TmFtZXNwYWNlIFRoZSB0YXJnZXQgbmFtZXNwYWNlIG9mIHRoZSBzY2hlbWEuCi0gICAqIEBwYXJhbSBmaWxlbG9jIFRoZSB1cmkgb2YgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgc2NoZW1hLgotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGVJbmxpbmVTY2hlbWEoU3RyaW5nIHNjaGVtYSwgU3RyaW5nIHRhcmdldE5hbWVzcGFjZSwgU3RyaW5nIGZpbGVsb2MpCi0gIHsKLSAgICB2YWxpZGF0ZUlubGluZVNjaGVtYShzY2hlbWEsIHRhcmdldE5hbWVzcGFjZSwgZmlsZWxvYywgbnVsbCwgbnVsbCwgbnVsbCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBWYWxpZGF0ZSBhbiBpbmxpbmUgc2NoZW1hIGFuZCBzcGVjaWZ5IGFuIGVudGl0eSByZXNvbHZlci4KLSAgICogCi0gICAqIEBwYXJhbSBzY2hlbWEgVGhpcyBzY2hlbWEgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcuCi0gICAqIEBwYXJhbSB0YXJnZXROYW1lc3BhY2UgVGhlIHRhcmdldCBuYW1lc3BhY2Ugb2YgdGhlIHNjaGVtYS4KLSAgICogQHBhcmFtIGZpbGVsb2MgVGhlIHVyaSBvZiB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoaXMgc2NoZW1hLgotICAgKiBAcGFyYW0gZW50aXR5UmVzb2x2ZXJDaGFpbiBUaGUgZW50aXR5IHJlc29sdmVyIGNoYWluLgotICAgKiBAcGFyYW0gaW5saW5lU2NoZW1hRW50aXR5UmVzb2x2ZXIgQW4gaW5saW5lIHNjaGVtYSByZXNvbHZlciBmb3IgdGhpcyBzY2hlbWEuCi0gICAqIEBwYXJhbSBncmFtbWFyUG9vbCBBIFhlcmNlcyBYTUxHcmFtbWFyUG9vbCB0aGF0IGhvbGRzIHByZWNhY2hlZCBzY2hlbWFzLgotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGVJbmxpbmVTY2hlbWEoCi0gICAgU3RyaW5nIHNjaGVtYSwKLSAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlLAotICAgIFN0cmluZyBmaWxlbG9jLAotICAgIFhNTEVudGl0eVJlc29sdmVyIGVudGl0eVJlc29sdmVyQ2hhaW4sCi0gICAgWE1MRW50aXR5UmVzb2x2ZXIgaW5saW5lU2NoZW1hRW50aXR5UmVzb2x2ZXIsCi0gICAgWE1MR3JhbW1hclBvb2wgZ3JhbW1hclBvb2wpCi0gIHsKLSAgICBmaWxlbG9jYXRpb24gPSBmaWxlbG9jOwotICAgIAotICAgIHZhbGlkYXRlWFNEKHNjaGVtYSwgdHJ1ZSwgZW50aXR5UmVzb2x2ZXJDaGFpbix0YXJnZXROYW1lc3BhY2UsIGlubGluZVNjaGVtYUVudGl0eVJlc29sdmVyLCBncmFtbWFyUG9vbCk7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGUgdGhlIGZpbGUgbG9jYXRlZCBhdCB0aGUgdXJpIHNwZWNpZmllZCB3aXRoIHRoZSBnaXZlbiBlbnRpdHkgcmVzb2x2ZXIuCi0gICAqIAotICAgKiBAcGFyYW0gdXJpIEFuIGFic29sdXRlIHVyaSBmb3IgdGhlIHNjaGVtYSBsb2NhdGlvbi4KLSAgICogQHBhcmFtIGVudGl0eVJlc29sdmVyIEFuIGVudGl0eSByZXNvbHZlciB0byBiZSB1c2VkLgotICAgKiBAcGFyYW0gZ3JhbW1hclBvb2wgQSBYZXJjZXMgWE1MR3JhbW1hclBvb2wgdGhhdCBob2xkcyBwcmVjYWNoZWQgc2NoZW1hcy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZhbGlkYXRlKFN0cmluZyB1cmksIFhNTEVudGl0eVJlc29sdmVyIGVudGl0eVJlc29sdmVyLCBYTUxHcmFtbWFyUG9vbCBncmFtbWFyUG9vbCkKLSAgewotICAgIHZhbGlkYXRlWFNEKHVyaSwgZmFsc2UsIGVudGl0eVJlc29sdmVyLCBudWxsLCBudWxsLCBncmFtbWFyUG9vbCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBWYWxpZGF0ZSB0aGUgc2NoZW1hLgotICAgKiAKLSAgICogQHBhcmFtIHNjaGVtYSBUaGUgc2NoZW1hIG9yIGl0J3MgbG9jYXRpb24uCi0gICAqIEBwYXJhbSBpbmxpbmVYU0QgVHJ1ZSBpZiBhbiBpbmxpbmUgc2NoZW1hLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqIEBwYXJhbSBlbnRpdHlSZXNvbHZlciBBbiBlbnRpdHkgcmVzb2x2ZXIgdG8gdXNlLgotICAgKiBAcGFyYW0gdGFyZ2V0TmFtZXNwYWNlIFRoZSB0YXJnZXQgbmFtZXNwYWNlIG9mIHRoZSBzY2hlbWEgYmVpbmcgdmFsaWRhdGVkLgotICAgKiBAcGFyYW0gaW5saW5lU2NoZW1hRW50aXR5UmVzb2x2ZXIgQW4gaW5saW5lIHNjaGVtYSBlbnRpdHkgcmVzb2x2ZXIuCi0gICAqIEBwYXJhbSBncmFtbWFyUG9vbCBBIFhlcmNlcyBYTUxHcmFtbWFyUG9vbCB0aGF0IGhvbGRzIHByZWNhY2hlZCBzY2hlbWFzLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVYU0QoU3RyaW5nIHNjaGVtYSwgYm9vbGVhbiBpbmxpbmVYU0QsIFhNTEVudGl0eVJlc29sdmVyIGVudGl0eVJlc29sdmVyLCBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlLCBYTUxFbnRpdHlSZXNvbHZlciBpbmxpbmVTY2hlbWFFbnRpdHlSZXNvbHZlciwgWE1MR3JhbW1hclBvb2wgZ3JhbW1hclBvb2wpCi0gIHsKLQlWYWxpZGF0ZUVycm9ySGFuZGxlciBlcnJvckhhbmRsZXIgPSBuZXcgVmFsaWRhdGVFcnJvckhhbmRsZXIoKTsKLQkvL2Vycm9ySGFuZGxlci5nZXRFcnJvck1lc3NhZ2VzKCkuY2xlYXIoKTsKLQl0cnkKLQl7Ci0JICBYTUxHcmFtbWFyUHJlcGFyc2VyIGdyYW1tYXJQcmVwYXJzZXIgPSBuZXcgWE1MR3JhbW1hclByZXBhcnNlcigpOwotCSAgZ3JhbW1hclByZXBhcnNlci5yZWdpc3RlclByZXBhcnNlcihYTUxHcmFtbWFyRGVzY3JpcHRpb24uWE1MX1NDSEVNQSxudWxsLypzY2hlbWFMb2FkZXIqLyk7Ci0JCQotCSAgZ3JhbW1hclByZXBhcnNlci5zZXRGZWF0dXJlKENvbnN0YW50cy5YRVJDRVNfRkVBVFVSRV9QUkVGSVggKyBDb25zdGFudHMuQ09OVElOVUVfQUZURVJfRkFUQUxfRVJST1JfRkVBVFVSRSwgZmFsc2UpOwotICAgICAgZ3JhbW1hclByZXBhcnNlci5zZXRGZWF0dXJlKENvbnN0YW50cy5YRVJDRVNfRkVBVFVSRV9QUkVGSVggKyBDb25zdGFudHMuTkFNRVNQQUNFU19GRUFUVVJFLCB0cnVlKTsKLSAgICAgIGdyYW1tYXJQcmVwYXJzZXIuc2V0RmVhdHVyZShDb25zdGFudHMuWEVSQ0VTX0ZFQVRVUkVfUFJFRklYICsgQ29uc3RhbnRzLk5BTUVTUEFDRV9QUkVGSVhFU19GRUFUVVJFLCB0cnVlKTsKLQkgIGdyYW1tYXJQcmVwYXJzZXIuc2V0RmVhdHVyZShDb25zdGFudHMuWEVSQ0VTX0ZFQVRVUkVfUFJFRklYICsgQ29uc3RhbnRzLlZBTElEQVRJT05fRkVBVFVSRSwgdHJ1ZSk7Ci0JICBncmFtbWFyUHJlcGFyc2VyLnNldEZlYXR1cmUoQ29uc3RhbnRzLlhFUkNFU19GRUFUVVJFX1BSRUZJWCArIENvbnN0YW50cy5TQ0hFTUFfVkFMSURBVElPTl9GRUFUVVJFLCB0cnVlKTsKLSAgICAgIGdyYW1tYXJQcmVwYXJzZXIuc2V0RmVhdHVyZShDb25zdGFudHMuWEVSQ0VTX0ZFQVRVUkVfUFJFRklYICsgQ29uc3RhbnRzLlNDSEVNQV9GVUxMX0NIRUNLSU5HLCBmYWxzZSk7Ci0JICBncmFtbWFyUHJlcGFyc2VyLnNldEZlYXR1cmUoQ29uc3RhbnRzLlhFUkNFU19GRUFUVVJFX1BSRUZJWCArIENvbnN0YW50cy5FWFRFUk5BTF9HRU5FUkFMX0VOVElUSUVTX0ZFQVRVUkUsIHRydWUpOwotCSAgZ3JhbW1hclByZXBhcnNlci5zZXRGZWF0dXJlKENvbnN0YW50cy5YRVJDRVNfRkVBVFVSRV9QUkVGSVggKyBDb25zdGFudHMuRVhURVJOQUxfUEFSQU1FVEVSX0VOVElUSUVTX0ZFQVRVUkUsIHRydWUpOwotCSAgZ3JhbW1hclByZXBhcnNlci5zZXRGZWF0dXJlKENvbnN0YW50cy5YRVJDRVNfRkVBVFVSRV9QUkVGSVggKyBDb25zdGFudHMuV0FSTl9PTl9EVVBMSUNBVEVfQVRUREVGX0ZFQVRVUkUsIHRydWUpOwotCSAgICAgIAotCSAgdHJ5Ci0JICB7Ci0JCWdyYW1tYXJQcmVwYXJzZXIuc2V0RmVhdHVyZShIT05PVVJfQUxMX1NDSEVNQV9MT0NBVElPTlNfRkVBVFVSRV9JRCwgdHJ1ZSk7Ci0JICB9Ci0JICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0JICB7Ci0JICAgIC8vIENhdGNoIHRoZSBleGNlcHRpb24gYW5kIGlnbm9yZSBpZiB3ZSBjYW4ndCBzZXQgdGhpcyBmZWF0dXJlLgotCSAgfQotCi0JICAvLyBjcyA6IHRvZ2dsZSB0aGUgY29tbWVudHMgb24gdGhlc2UgMiBsaW5lcyB0byBlYXNpbHkgZGlzYWJsZSBjYWNoaW5nCi0gICAgICAvLyBncmFtbWFyUHJlcGFyc2VyLnNldEdyYW1tYXJQb29sKG5ldyBYTUxHcmFtbWFyUG9vbEltcGwoKSk7IAkJCi0JICBncmFtbWFyUHJlcGFyc2VyLnNldEdyYW1tYXJQb29sKGdyYW1tYXJQb29sICE9IG51bGwgPyBncmFtbWFyUG9vbCA6IG5ldyBYTUxHcmFtbWFyUG9vbEltcGwoKSk7IAotCSAgZ3JhbW1hclByZXBhcnNlci5zZXRFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKTsKLQkgIGlmIChlbnRpdHlSZXNvbHZlciAhPSBudWxsKQotCSAgewotCSAgICBncmFtbWFyUHJlcGFyc2VyLnNldEVudGl0eVJlc29sdmVyKGVudGl0eVJlc29sdmVyKTsKLQkgIH0KLQotCSAgdHJ5Ci0JICB7Ci0JICAgIFhNTElucHV0U291cmNlIGlzID0gbnVsbDsKLQkgICAgTGlzdCBvbGRHcmFtbWFycyA9IG51bGw7Ci0JICAgIFhNTEdyYW1tYXJQb29sSW1wbCBwb29sID0gbnVsbDsKLQkgICAgLy8gVGhpcyBhbGxvd3Mgc3VwcG9ydCBmb3IgdGhlIGlubGluZSBzY2hlbWEgaW4gV1NETCBkb2N1bWVudHMuCi0JICAgIGlmIChpbmxpbmVYU0QpCi0JICAgIHsgICAgICAgCi0JICAgICAgUmVhZGVyIHJlYWRlciA9IG5ldyBTdHJpbmdSZWFkZXIoc2NoZW1hKTsKLQkJICBpcyA9IG5ldyBYTUxJbnB1dFNvdXJjZShudWxsLGZpbGVsb2NhdGlvbixmaWxlbG9jYXRpb24scmVhZGVyLG51bGwpOwotCQkJCQotCQkgICgoSW5saW5lWFNEUmVzb2x2ZXIpaW5saW5lU2NoZW1hRW50aXR5UmVzb2x2ZXIpLmFkZFJlZmVycmluZ1NjaGVtYShpcyx0YXJnZXROYW1lc3BhY2UpOwotCQkgIC8vIEluIHRoZSBjYXNlIHRoYXQgJ3NoYXJlZCcgZ3JhbW1hciBwb29sIGlzIHVzZWQgd2UgbmVlZCB0byBjb25zaWRlcgotCQkgIC8vIHRoYXQgd2UgbWlnaHQgaGF2ZSBhbHJlYWR5IGFkZGVkIGEgc2NoZW1hIHRvIHRoZSBwb29sIHdpdGggdGhlIHNhbWUgdGFyZ2V0IG5hbWVzcGFjZQotCQkgIC8vIGFzIHRoZSBpbmxpbmUgc2NoZW1hIHdlJ3JlIGhvcGluZyB0byBjb25zdHJ1Y3QuICBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byByZW1vdmUKLQkJICAvLyB0aGUgc2NoZW1hIGZyb20gdGhlIHBvb2wgYmVmb3JlIGNvbnN0cnVjdGluZyBvdXIgaW5saW5lIHNjaGVtYS4gIFdlIGNhbiBhZGQgaXQgCi0JCSAgLy8gYmFjayB3aGVuIHdlJ3JlIGFsbCBkb25lLgotCQkgIHBvb2wgPSAoWE1MR3JhbW1hclBvb2xJbXBsKWdyYW1tYXJQcmVwYXJzZXIuZ2V0R3JhbW1hclBvb2woKTsgICAgICAgIAkgICAgICAKLQkJICBvbGRHcmFtbWFycyA9IG5ldyBBcnJheUxpc3QoKTsKLQkJICAvLyBSZW1vdmUgdGhlIGlubGluZSBzY2hlbWEgbmFtZXNwYWNlIGlmIGl0IGlzIGxpc3RlZCBkaXJlY3RseQotCQkgIC8vIGluIHRoZSBwb29sLiBJZiBpdCBpcyBpbmRpcmVjdGx5IGxpc3RlZCBhcyBhbiBpbXBvcnQgb2YgYSBncmFtbWFyIGxpc3RlZAotCQkgIC8vIGRpcmVjdGx5IGluIHRoZSBwb29sIGhpZGUgdGhlIGdyYW1tYXIgdG8gY29udGludWUgdG8gZ2V0IGNhY2hpbmcgYmVuZWZpdHMKLQkJICAvLyBmcm9tIHRoZSBjYWNoZWQgZ3JhbW1hci4KLQkJICBHcmFtbWFyW10gZ3JhbW1hcnMgPSBwb29sLnJldHJpZXZlSW5pdGlhbEdyYW1tYXJTZXQoWE1MR3JhbW1hckRlc2NyaXB0aW9uLlhNTF9TQ0hFTUEpOwotCQkgIGludCBudW1HcmFtbWFycyA9IGdyYW1tYXJzLmxlbmd0aDsKLQkJICBmb3IoaW50IGkgPSAwOyBpIDwgbnVtR3JhbW1hcnM7IGkrKykKLQkJICB7Ci0JCSAgICBYTUxHcmFtbWFyRGVzY3JpcHRpb24gZGVzYyA9IGdyYW1tYXJzW2ldLmdldEdyYW1tYXJEZXNjcmlwdGlvbigpOwotCQkgICAgaWYodGFyZ2V0TmFtZXNwYWNlLmVxdWFscyhkZXNjLmdldE5hbWVzcGFjZSgpKSkKLQkJICAgIHsKLQkJICAgICAgb2xkR3JhbW1hcnMuYWRkKHBvb2wucmVtb3ZlR3JhbW1hcihkZXNjKSk7Ci0JCSAgICB9Ci0JCSAgICBlbHNlCi0JCSAgICB7Ci0JCSAgICAgIGlmKGdyYW1tYXJzW2ldIGluc3RhbmNlb2YgWFNHcmFtbWFyKQotCQkgICAgICB7Ci0JCSAgICAJWFNHcmFtbWFyIGdyYW1tYXIgPSAoWFNHcmFtbWFyKWdyYW1tYXJzW2ldOwotCQkgICAgCSAgCSAgCi0JCSAgICAJU3RyaW5nTGlzdCBuYW1lc3BhY2VzID0gZ3JhbW1hci50b1hTTW9kZWwoKS5nZXROYW1lc3BhY2VzKCk7Ci0JCSAgICAJaWYobmFtZXNwYWNlcy5jb250YWlucyh0YXJnZXROYW1lc3BhY2UpKQotCQkgICAgCXsKLQkJICAgIAkgIG9sZEdyYW1tYXJzLmFkZChwb29sLnJlbW92ZUdyYW1tYXIoZGVzYykpOwotCQkgICAgCSAgCSAgICAvL3Bvb2wucHV0R3JhbW1hcihuZXcgWFNHcmFtbWFySGlkZXIoZ3JhbW1hciwgdGFyZ2V0TmFtZXNwYWNlKSk7Ci0JCSAgICAJfQotCQkgICAgICB9Ci0JCSAgICB9Ci0JCSAgfQotCQkgICAgCQotCQkgIFNldCBpbmxpbmVOU3MgPSAoKElubGluZVhTRFJlc29sdmVyKWlubGluZVNjaGVtYUVudGl0eVJlc29sdmVyKS5nZXRJbmxpbmVTY2hlbWFOU3MoKTsKLQkJICBJdGVyYXRvciBuc2l0ZXIgPSBpbmxpbmVOU3MuaXRlcmF0b3IoKTsKLQkJICB3aGlsZShuc2l0ZXIuaGFzTmV4dCgpKQotCQkgIHsKLQkJICAgIFhTRERlc2NyaXB0aW9uIGRlc2MgPSBuZXcgWFNERGVzY3JpcHRpb24oKTsKLQkJICAgIGRlc2Muc2V0TmFtZXNwYWNlKChTdHJpbmcpbnNpdGVyLm5leHQoKSk7ICAgICAgCi0JCSAgICBHcmFtbWFyIG9sZEdyYW1tYXIgPSBwb29sLnJlbW92ZUdyYW1tYXIoZGVzYyk7Ci0JCSAgICBpZihvbGRHcmFtbWFyICE9IG51bGwpCi0JCSAgICAgIG9sZEdyYW1tYXJzLmFkZChvbGRHcmFtbWFyKTsKLQkJICB9Ci0KLQkgICAgfQotCSAgICAvLyBnZXQgdGhlIGlucHV0IHNvdXJjZSBmb3IgYW4gZXh0ZXJuYWwgc2NoZW1hIGZpbGUKLQkgICAgZWxzZQotCSAgICB7Ci0JICAgICAgaXMgPSBuZXcgWE1MSW5wdXRTb3VyY2UobnVsbCxzY2hlbWEsc2NoZW1hKTsKLQkgICAgfQotCi0JICAgIFhTR3JhbW1hciBncmFtbWFyID0gKFhTR3JhbW1hcilncmFtbWFyUHJlcGFyc2VyLnByZXBhcnNlR3JhbW1hcihYTUxHcmFtbWFyRGVzY3JpcHRpb24uWE1MX1NDSEVNQSxpcyk7Ci0JICAgIHhzTW9kZWwgPSBncmFtbWFyLnRvWFNNb2RlbCgpOwotCQkJCi0JICAgIC8vIEhlcmUgd2UgYWRkIHRoZSB0ZW1wb3JpbGl5IHJlbW92ZWQgc2NoZW1hIGJhY2suCi0JCWlmIChpbmxpbmVYU0QgJiYgb2xkR3JhbW1hcnMgIT0gbnVsbCkKLQkJewotCQkgIFhTRERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gbmV3IFhTRERlc2NyaXB0aW9uKCk7Ci0JCSAgZGVzY3JpcHRpb24uc2V0TmFtZXNwYWNlKHRhcmdldE5hbWVzcGFjZSk7IAotCQkgIHBvb2wucmVtb3ZlR3JhbW1hcihkZXNjcmlwdGlvbik7Ci0JCQkJCi0JCSAgU2V0IGlubGluZU5TcyA9ICgoSW5saW5lWFNEUmVzb2x2ZXIpaW5saW5lU2NoZW1hRW50aXR5UmVzb2x2ZXIpLmdldElubGluZVNjaGVtYU5TcygpOwotCQkgIEl0ZXJhdG9yIG5zaXRlciA9IGlubGluZU5Tcy5pdGVyYXRvcigpOwotCQkgIHdoaWxlKG5zaXRlci5oYXNOZXh0KCkpCi0JCSAgewotCQkJWFNERGVzY3JpcHRpb24gZGVzYyA9IG5ldyBYU0REZXNjcmlwdGlvbigpOwotCQkgICAgZGVzYy5zZXROYW1lc3BhY2UoKFN0cmluZyluc2l0ZXIubmV4dCgpKTsgICAKLQkJICAgIHBvb2wucmVtb3ZlR3JhbW1hcihkZXNjKTsKLQkJICB9Ci0JCSAgCi0JCSAgSXRlcmF0b3Igb2xkR0l0ZXIgPSBvbGRHcmFtbWFycy5pdGVyYXRvcigpOwotCSAgICAgIHdoaWxlKG9sZEdJdGVyLmhhc05leHQoKSkKLQkJICB7Ci0JCQkgR3JhbW1hciBvbGRHcmFtbWFyID0gKEdyYW1tYXIpb2xkR0l0ZXIubmV4dCgpOwotCQkJIGlmKG9sZEdyYW1tYXIgIT0gbnVsbCkKLQkJCSAgIHBvb2wucHV0R3JhbW1hcihvbGRHcmFtbWFyKTsKLQkJICB9Ci0JCX0gIAotCSAgfQotCSAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCSAgewotCSAgICAgICAgLy8gUGFyc2VyIHdpbGwgcmV0dXJuIG51bGwgcG9pbnRlciBleGNlcHRpb24gaWYgdGhlIGRvY3VtZW50IGlzIHN0cnVjdHVyYWxseSBpbnZhbGlkLgotCSAgICAgIAkvLyBJbiB0aGlzIGNhc2Ugd2Ugc2ltcGx5IGlnbm9yZSB0aGUgZXJyb3IuCi0JICAgICAgCS8vU3lzdGVtLm91dC5wcmludGxuKGUpOwotCSAgfQotCSAgZXJyb3JzID0gZXJyb3JIYW5kbGVyLmdldEVycm9yTWVzc2FnZXMoKTsKLQl9Ci0JY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCXsKLQkgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKLQl9Ci0JaWYgKGVycm9ycy5pc0VtcHR5KCkpCi0JewotCSAgaXNWYWxpZFhTRCA9IHRydWU7Ci0JfQotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIFhTTW9kZWwgY3JlYXRlZC4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIFhTTW9kZWwgY3JlYXRlZC4KLSAgICovCi0KLSAgcHVibGljIFhTTW9kZWwgZ2V0WFNNb2RlbCgpCi0gIHsKLSAgCXJldHVybiB4c01vZGVsOwotICB9Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNjaGVtYSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKiAKLSAgICogQHJldHVybiBUcnVlIGlmIHRoZSBzY2hlbWEgaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzVmFsaWQoKQotICB7Ci0gICAgcmV0dXJuIGlzVmFsaWRYU0Q7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJuIHRoZSBlcnJvciBsaXN0LgotICAgKiAKLSAgICogQHJldHVybiBBIGxpc3Qgb2YgZXJyb3IgZnJvbSB0aGUgc2NoZW1hLgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0RXJyb3JzKCkKLSAgewotICAgIHJldHVybiBlcnJvcnM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvQWJzdHJhY3RYTUxDb25mb3JtYW5jZUZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvQWJzdHJhY3RYTUxDb25mb3JtYW5jZUZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU5OWVjZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL0Fic3RyYWN0WE1MQ29uZm9ybWFuY2VGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWw7Ci0KLS8qKgotICogRmFjdG9yeSBmb3IgZ2VuZXJhdGluZyBvYmplY3RzIG5lZWRlZCBmb3IgWE1MIENvbmZvcm1hbmNlIHZhbGlkYXRpb24uCi0gKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFhNTENvbmZvcm1hbmNlRmFjdG9yeQotewotICBwcm90ZWN0ZWQgc3RhdGljIEFic3RyYWN0WE1MQ29uZm9ybWFuY2VGYWN0b3J5IGluc3RhbmNlOwotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoaXMgZmFjdG9yeS4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIGluc3RhbmNlIG9mIHRoaXMgZmFjdG9yeQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBBYnN0cmFjdFhNTENvbmZvcm1hbmNlRmFjdG9yeSBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpbnN0YW5jZSA9IG5ldyBEZWZhdWx0WE1MQ29uZm9ybWFuY2VGYWN0b3J5KCk7Ci0gICAgfQotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNldCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgZmFjdG9yeSB0byB1c2UuCi0gICAqIAotICAgKiBAcGFyYW0gZmFjdG9yeSAtIHRoZSBpbXBsZW1lbnRhdGlvbiB0aGlzIGZhY3Rvcnkgd2lsbCB1c2UKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRJbXBsZW1lbnRhdGlvbihBYnN0cmFjdFhNTENvbmZvcm1hbmNlRmFjdG9yeSBmYWN0b3J5KQotICB7Ci0gICAgaW5zdGFuY2UgPSBmYWN0b3J5OwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJuIGFuIFhNTCB2YWxpZGF0b3IuCi0gICAqIAotICAgKiBAcmV0dXJuIGFuIFhNTCB2YWxpZGF0b3IKLSAgICovCi0gIGFic3RyYWN0IHB1YmxpYyBJWE1MVmFsaWRhdG9yIGdldFhNTFZhbGlkYXRvcigpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9EZWZhdWx0WE1MQ29uZm9ybWFuY2VGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL0RlZmF1bHRYTUxDb25mb3JtYW5jZUZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY4MGZiNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL0RlZmF1bHRYTUxDb25mb3JtYW5jZUZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbDsKLQotCi0vKioKLSAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIEFic3RyYWN0WE1MQ29uZm9ybWFuY2VGYWN0b3J5LgotICovCi1wdWJsaWMgY2xhc3MgRGVmYXVsdFhNTENvbmZvcm1hbmNlRmFjdG9yeSBleHRlbmRzIEFic3RyYWN0WE1MQ29uZm9ybWFuY2VGYWN0b3J5Ci17Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIERlZmF1bHRYTUxDb25mb3JtYW5jZUZhY3RvcnkoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbC5BYnN0cmFjdFhNTENvbmZvcm1hbmNlRmFjdG9yeSNnZXRYTUxWYWxpZGF0b3IoKQotICAgKi8KLSAgcHVibGljIElYTUxWYWxpZGF0b3IgZ2V0WE1MVmFsaWRhdG9yKCkKLSAgewotICAgIHJldHVybiBuZXcgRGVmYXVsdFhNTFZhbGlkYXRvcigpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvRGVmYXVsdFhNTFZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9EZWZhdWx0WE1MVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZjVhOGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9EZWZhdWx0WE1MVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sOwotCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLlJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmEudXRpbC5TdGFjazsKLWltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLmltcGwuWE1MRXJyb3JSZXBvcnRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5wYXJzZXJzLlNBWFBhcnNlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5wYXJzZXJzLlN0YW5kYXJkUGFyc2VyQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MUmVzb3VyY2VJZGVudGlmaWVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLmdyYW1tYXJzLlhNTEdyYW1tYXJQb29sOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MRW50aXR5UmVzb2x2ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxJbnB1dFNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLlZhbGlkYXRpb25NZXNzYWdlSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuTG9nZ2VyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyLklVUklSZXNvbHV0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuVVJJUmVzb2x2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkLlhTRFZhbGlkYXRvcjsKLWltcG9ydCBvcmcueG1sLnNheC5BdHRyaWJ1dGVzOwotaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOwotaW1wb3J0IG9yZy54bWwuc2F4LkxvY2F0b3I7Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy54bWwuc2F4LlhNTFJlYWRlcjsKLWltcG9ydCBvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyOwotCi1pbXBvcnQgY29tLmlibS53c2RsLkNvbnN0YW50czsKLWltcG9ydCBjb20uaWJtLndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hQ29uc3RhbnRzOwotCi0vKioKLSAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIElYTUxWYWxpZGF0b3IuCi0gKi8KLXB1YmxpYyBjbGFzcyBEZWZhdWx0WE1MVmFsaWRhdG9yIGltcGxlbWVudHMgSVhNTFZhbGlkYXRvcgotewotICBwcm90ZWN0ZWQgU3RyaW5nIHVyaTsKLSAgcHJvdGVjdGVkIFVSSVJlc29sdmVyIHVyaVJlc29sdmVyID0gbnVsbDsKLSAgcHJvdGVjdGVkIExpc3QgZXJyb3JzID0gbmV3IEFycmF5TGlzdCgpOwotICAvL3Byb3RlY3RlZCBTdHJpbmdCdWZmZXIgc2NoZW1hTG9jYXRpb25TdHJpbmcgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gIHByb3RlY3RlZCBMaXN0IGlnbm9yZWROYW1lc3BhY2VMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAKLSAgcHJvdGVjdGVkIElucHV0U3RyZWFtIGlucHV0U3RyZWFtID0gbnVsbDsKLSAgCi0gIHByb3RlY3RlZCBTdHJpbmcgY3VycmVudEVycm9yS2V5ID0gbnVsbDsKLSAgcHJvdGVjdGVkIE9iamVjdFtdIGN1cnJlbnRNZXNzYWdlQXJndW1lbnRzID0gbnVsbDsKLSAgCi0gIHByb3RlY3RlZCBib29sZWFuIGlzQ2hpbGRPZkRvYyA9IGZhbHNlOwotICBwcm90ZWN0ZWQgWE1MR3JhbW1hclBvb2wgZ3JhbW1hclBvb2wgPSBudWxsOyAKLSAgCi0gIC8qKgotICAgKiBBIHN0YWNrIG9mIHN0YXJ0IHRhZyBsb2NhdGlvbnMsIHVzZWQgdG8gbW92ZSBlcnJvcnMKLSAgICogcmVwb3J0ZWQgYXQgdGhlIGNsb3NlIHRhZyB0byBiZSByZXBvcnRlZCBhdCB0aGUgc3RhcnQgdGFnLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0YWNrIHN0YXJ0RWxlbWVudExvY2F0aW9ucyA9IG5ldyBTdGFjaygpOwotICBwcm90ZWN0ZWQgU2V0IGFkanVzdExvY2F0aW9uRXJyb3JLZXlTZXQgPSBuZXcgVHJlZVNldCgpOwotCi0vKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgRGVmYXVsdFhNTFZhbGlkYXRvcigpCi0gIHsKLSAgICBzdXBlcigpOwotICAgIAotICAgIGlnbm9yZWROYW1lc3BhY2VMaXN0LmFkZChTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8xOTk5KTsKLSAgICBpZ25vcmVkTmFtZXNwYWNlTGlzdC5hZGQoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMCk7Ci0gICAgaWdub3JlZE5hbWVzcGFjZUxpc3QuYWRkKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEpOwotICAgIAotICAgIGFkanVzdExvY2F0aW9uRXJyb3JLZXlTZXQuYWRkKCJjdmMtY29tcGxleC10eXBlLjIuNC5iIik7Ci0gICAgYWRqdXN0TG9jYXRpb25FcnJvcktleVNldC5hZGQoImN2Yy1jb21wbGV4LXR5cGUuMi4zIik7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWwuSVhNTFZhbGlkYXRvciNzZXRGaWxlKGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGaWxlKFN0cmluZyB1cmkpCi0gIHsKLSAgICB0aGlzLnVyaSA9IHVyaTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sLklYTUxWYWxpZGF0b3Ijc2V0VVJJUmVzb2x2ZXIob3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlci5VUklSZXNvbHZlcikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFVSSVJlc29sdmVyKFVSSVJlc29sdmVyIHVyaVJlc29sdmVyKQotICB7Ci0gIAl0aGlzLnVyaVJlc29sdmVyID0gdXJpUmVzb2x2ZXI7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcGFyYW0gZ3JhbW1hclBvb2wKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEdyYW1tYXJQb29sKFhNTEdyYW1tYXJQb29sIGdyYW1tYXJQb29sKQotICB7Ci0JdGhpcy5ncmFtbWFyUG9vbCA9IGdyYW1tYXJQb29sOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sLklYTUxWYWxpZGF0b3IjcnVuKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJ1bigpCi0gIHsKLSAgICAvLyBWYWxpZGF0ZSB0aGUgWE1MIGZpbGUuCi0gICAgdHJ5Ci0gICAgewotICAgICAgUmVhZGVyIHJlYWRlcjEgPSBudWxsOyAvLyBVc2VkIGZvciB2YWxpZGF0aW9uIHBhcnNlLgotICAgICAgCi0gICAgICBJbnB1dFNvdXJjZSB2YWxpZGF0ZUlucHV0U291cmNlOyAKLSAgICAgCi0gICAgICB2YWxpZGF0ZUlucHV0U291cmNlID0gbmV3IElucHV0U291cmNlKHVyaSk7Ci0gICAgICBpZiAodGhpcy5pbnB1dFN0cmVhbSAhPSBudWxsKQotICAgICAgeyAgICAKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IGNyZWF0ZVN0cmluZ0ZvcklucHV0U3RyZWFtKGlucHV0U3RyZWFtKTsKLSAgICAgICAgcmVhZGVyMSA9IG5ldyBTdHJpbmdSZWFkZXIoc3RyaW5nKTsKLSAgICAgICAgICAKLSAgICAgICAgdmFsaWRhdGVJbnB1dFNvdXJjZS5zZXRCeXRlU3RyZWFtKGlucHV0U3RyZWFtKTsKLSAgICAgICAgdmFsaWRhdGVJbnB1dFNvdXJjZS5zZXRDaGFyYWN0ZXJTdHJlYW0ocmVhZGVyMSk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIFhNTFJlYWRlciByZWFkZXIgPSBjcmVhdGVYTUxSZWFkZXIoKTsKLSAgICAgIHJlYWRlci5wYXJzZSh2YWxpZGF0ZUlucHV0U291cmNlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFNBWFBhcnNlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gTm8gbmVlZCB0byBhZGQgYW4gZXJyb3IgaGVyZS4gU0FYUGFyc2VFeGNlcHRpb25zIGFyZSByZXBvcnRlZCBieSB0aGUgZXJyb3IgcmVwb3J0ZXIuCi0gICAgfQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIE5vIG5lZWQgdG8gbG9nIHRoaXMgZXJyb3IuIFRoZSBXU0RMIHZhbGlkYXRvciB3aWxsIGNhdGNoIHRoaXMgZXJyb3Igd2hlbiBjcmVhdGluZyB0aGUgZG9tIG1vZGVsLgotICAgICAgLy9Mb2dnZXJGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0TG9nZ2VyKCkubG9nKCJUaGUgV1NETCB2YWxpZGF0b3Igd2FzIHVuYWJsZSB0byByZWFkIGZpbGUgIiArIHVyaSArICIuIiwgSUxvZ2dlci5TRVZfRVJST1IsIGUpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldExvZ2dlcigpLmxvZygiQW4gZXhjZXB0aW9uIG9jY3VycmVkIHdoaWxlIHBlcmZvcm1pbmcgV1NETCBYTUwgY29uZm9ybWFuY2UgdmFsaWRhdGlvbiBmb3IgZmlsZSAiICsgdXJpICsgIi4iLCBJTG9nZ2VyLlNFVl9FUlJPUiwgZSk7Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogQHBhcmFtIGlucHV0U3RyZWFtCi0gICAqIEByZXR1cm4KLSAgICovCi0gIGZpbmFsIFN0cmluZyBjcmVhdGVTdHJpbmdGb3JJbnB1dFN0cmVhbShJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSkKLSAgewotICAgIC8vIEhlcmUgd2UgYXJlIHJlYWRpbmcgdGhlIGZpbGUgYW5kIHN0b3JpbmcgdG8gYSBzdHJpbmdidWZmZXIuCi0gICAgU3RyaW5nQnVmZmVyIGZpbGVTdHJpbmcgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgSW5wdXRTdHJlYW1SZWFkZXIgaW5wdXRSZWFkZXIgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoaW5wdXRTdHJlYW0pOwotICAgICAgQnVmZmVyZWRSZWFkZXIgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKGlucHV0UmVhZGVyKTsKLSAgICAgIGNoYXJbXSBjaGFycyA9IG5ldyBjaGFyWzEwMjRdOwotICAgICAgaW50IG51bWJlclJlYWQgPSByZWFkZXIucmVhZChjaGFycyk7Ci0gICAgICB3aGlsZSAobnVtYmVyUmVhZCAhPSAtMSkKLSAgICAgIHsKLSAgICAgICAgZmlsZVN0cmluZy5hcHBlbmQoY2hhcnMsIDAsIG51bWJlclJlYWQpOwotICAgICAgICBudW1iZXJSZWFkID0gcmVhZGVyLnJlYWQoY2hhcnMpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldExvZ2dlcigpLmxvZygiVGhlIFdTREwgdmFsZGlhdG9yIHdhcyB1bmFibGUgdG8gY3JlYXRlIHRvIGNyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnB1dCBzdHJlYW0uIFdTREwgWE1MIHZhbGlkYXRpb24gbWF5IG5vdCBoYXZlIHJ1biBjb3JyZWN0bHkuIiwgSUxvZ2dlci5TRVZfRVJST1IsIGUpOwotICAgIH0KLSAgICByZXR1cm4gZmlsZVN0cmluZy50b1N0cmluZygpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sLklYTUxWYWxpZGF0b3IjaGFzRXJyb3JzKCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGhhc0Vycm9ycygpCi0gIHsKLSAgICByZXR1cm4gIWVycm9ycy5pc0VtcHR5KCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWwuSVhNTFZhbGlkYXRvciNnZXRFcnJvcnMoKQotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0RXJyb3JzKCkKLSAgewotICAgIHJldHVybiBlcnJvcnM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBAcGFyYW0gbWVzc2FnZQotICAgKiBAcGFyYW0gbGluZQotICAgKiBAcGFyYW0gY29sdW1uCi0gICAqIEBwYXJhbSB1cmkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEVycm9yKFN0cmluZyBtZXNzYWdlLCBpbnQgbGluZSwgaW50IGNvbHVtbiwgU3RyaW5nIHVyaSkKLSAgewotCS8vIEZvciB0aGUgZm9sbG93aW5nIGVycm9ycyB0aGUgbGluZSBudW1iZXIgd2lsbCBiZSBtb2RpZmllZCB0byB1c2UgdGhhdCBvZiB0aGUgc3RhcnQKLSAgCS8vIHRhZyBpbnN0ZWFkIG9mIHRoZSBlbmQgdGFnLgotICAJaWYgKGN1cnJlbnRFcnJvcktleSAhPSBudWxsICYmIGFkanVzdExvY2F0aW9uRXJyb3JLZXlTZXQuY29udGFpbnMoY3VycmVudEVycm9yS2V5KSkgIAotICAJewotICAJICBMb2NhdGlvbkNvb3JkaW5hdGUgYWRqdXN0ZWRDb29yZGluYXRlcyA9IChMb2NhdGlvbkNvb3JkaW5hdGUpc3RhcnRFbGVtZW50TG9jYXRpb25zLnBlZWsoKTsKLSAgCSAgbGluZSA9IGFkanVzdGVkQ29vcmRpbmF0ZXMuZ2V0TGluZU51bWJlcigpOwotICAJICBjb2x1bW4gPSBhZGp1c3RlZENvb3JkaW5hdGVzLmdldENvbHVtbk51bW5lcigpOwotICAJfQotICAJCi0JZXJyb3JzLmFkZChuZXcgVmFsaWRhdGlvbk1lc3NhZ2VJbXBsKG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgVmFsaWRhdGlvbk1lc3NhZ2VJbXBsLlNFVl9XQVJOSU5HLCB1cmksIGN1cnJlbnRFcnJvcktleSwgY3VycmVudE1lc3NhZ2VBcmd1bWVudHMpKTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgaGFuZGxlciBmb3IgdGhlIFNBWCBwYXJzZXIuIFRoaXMgaGFuZGxlciB3aWxsIG9idGFpbiB0aGUgV1NETAotICAgKiBuYW1lc3BhY2UsIGhhbmRsZSBlcnJvcnMgYW5kIHJlc29sdmUgZW50aXRpZXMuCi0gICAqLwotICBwcm90ZWN0ZWQgY2xhc3MgWE1MQ29uZm9ybWFuY2VEZWZhdWx0SGFuZGxlciBleHRlbmRzIERlZmF1bHRIYW5kbGVyCi0gIHsKLQlwcml2YXRlIExvY2F0b3IgbG9jYXRvciA9IG51bGw7Ci0JCi0gICAgcHVibGljIHZvaWQgc2V0RG9jdW1lbnRMb2NhdG9yKExvY2F0b3IgbG9jYXRvcikgCi0gICAgewotCQl0aGlzLmxvY2F0b3IgPSBsb2NhdG9yOwotCQlzdXBlci5zZXREb2N1bWVudExvY2F0b3IobG9jYXRvcik7Ci0JfQotCi0JLyoqCi0gICAgICogQHNlZSBvcmcueG1sLnNheC5FcnJvckhhbmRsZXIjZXJyb3IoU0FYUGFyc2VFeGNlcHRpb24pCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgZXJyb3IoU0FYUGFyc2VFeGNlcHRpb24gYXJnMCkgdGhyb3dzIFNBWEV4Y2VwdGlvbgotICAgIHsKLSAgICAgU3RyaW5nIHRlbXBVUkkgPSBhcmcwLmdldFN5c3RlbUlkKCk7Ci0gICAgIGlmIChpbnB1dFN0cmVhbSE9IG51bGwgJiYgYXJnMC5nZXRTeXN0ZW1JZCgpID09IG51bGwpCi0gICAgIHsKLSAgICAgICAvL21oOiBJbiB0aGlzIGNhc2Ugd2UgYXJlIHZhbGlkYXRpbmcgYSBzdHJlYW0gc28gdGhlIFVSSSBtYXkgYmUgbnVsbCBpbiB0aGlzIGV4Y2VwdGlvbgotICAgICAgIHRlbXBVUkkgPSB1cmk7ICAgICAgIAotICAgICB9Ci0gICAgIGFkZEVycm9yKGFyZzAuZ2V0TWVzc2FnZSgpLCBhcmcwLmdldExpbmVOdW1iZXIoKSwgYXJnMC5nZXRDb2x1bW5OdW1iZXIoKSwgdGVtcFVSSSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHNlZSBvcmcueG1sLnNheC5FcnJvckhhbmRsZXIjZmF0YWxFcnJvcihTQVhQYXJzZUV4Y2VwdGlvbikKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBmYXRhbEVycm9yKFNBWFBhcnNlRXhjZXB0aW9uIGFyZzApIHRocm93cyBTQVhFeGNlcHRpb24KLSAgICB7Ci0gICAgICBhZGRFcnJvcihhcmcwLmdldE1lc3NhZ2UoKSwgYXJnMC5nZXRMaW5lTnVtYmVyKCksIGFyZzAuZ2V0Q29sdW1uTnVtYmVyKCksIGFyZzAuZ2V0U3lzdGVtSWQoKSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHNlZSBvcmcueG1sLnNheC5FcnJvckhhbmRsZXIjd2FybmluZyhTQVhQYXJzZUV4Y2VwdGlvbikKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB3YXJuaW5nKFNBWFBhcnNlRXhjZXB0aW9uIGFyZzApIHRocm93cyBTQVhFeGNlcHRpb24KLSAgICB7Ci0gICAgICBhZGRFcnJvcihhcmcwLmdldE1lc3NhZ2UoKSwgYXJnMC5nZXRMaW5lTnVtYmVyKCksIGFyZzAuZ2V0Q29sdW1uTnVtYmVyKCksIGFyZzAuZ2V0U3lzdGVtSWQoKSk7Ci0gICAgfQotCQotCS8qKgotCSAqIEBzZWUgb3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIjZW5kRWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKQotCSAqLwotCXB1YmxpYyB2b2lkIGVuZEVsZW1lbnQoU3RyaW5nIHVyaSwgU3RyaW5nIGxvY2FsTmFtZSwgU3RyaW5nIHFOYW1lKQotCQkJdGhyb3dzIFNBWEV4Y2VwdGlvbiB7Ci0JCWlmKGxvY2FsTmFtZS5lcXVhbHMoImRvY3VtZW50YXRpb24iKSAmJiAodXJpLmVxdWFscyhDb25zdGFudHMuTlNfVVJJX1dTREwpIHx8IHVyaS5lcXVhbHMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMSl8fCB1cmkuZXF1YWxzKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzE5OTkpIHx8IHVyaS5lcXVhbHMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMCkpKQotCQl7Ci0JCSAgaXNDaGlsZE9mRG9jID0gZmFsc2U7Ci0JCX0KLQkJc3VwZXIuZW5kRWxlbWVudCh1cmksIGxvY2FsTmFtZSwgcU5hbWUpOwotCQlzdGFydEVsZW1lbnRMb2NhdGlvbnMucG9wKCk7Ci0JfQotCS8qKgotCSAqIEBzZWUgb3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIjc3RhcnRFbGVtZW50KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIG9yZy54bWwuc2F4LkF0dHJpYnV0ZXMpCi0JICovCi0JcHVibGljIHZvaWQgc3RhcnRFbGVtZW50KFN0cmluZyB1cmksIFN0cmluZyBsb2NhbE5hbWUsIFN0cmluZyBxTmFtZSwKLQkJCUF0dHJpYnV0ZXMgYXR0cykgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7Ci0JCXN0YXJ0RWxlbWVudExvY2F0aW9ucy5wdXNoKG5ldyBMb2NhdGlvbkNvb3JkaW5hdGUobG9jYXRvci5nZXRMaW5lTnVtYmVyKCksIGxvY2F0b3IuZ2V0Q29sdW1uTnVtYmVyKCkpKTsKLQkJaWYobG9jYWxOYW1lLmVxdWFscygiZG9jdW1lbnRhdGlvbiIpICYmICh1cmkuZXF1YWxzKENvbnN0YW50cy5OU19VUklfV1NETCkgfHwgdXJpLmVxdWFscyhTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxKXx8IHVyaS5lcXVhbHMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMTk5OSkgfHwgdXJpLmVxdWFscyhTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAwKSkpCi0JCXsKLQkJICBpc0NoaWxkT2ZEb2MgPSB0cnVlOwotCQl9Ci0JCXN1cGVyLnN0YXJ0RWxlbWVudCh1cmksIGxvY2FsTmFtZSwgcU5hbWUsIGF0dHMpOwotCX0KLSAgfQotICAKLSAgLyoqCi0gICAqIEBwYXJhbSBpbnB1dFN0cmVhbSAtIHNldCB0aGUgaW5wdXRTdHJlYW0gdG8gdmFsaWRhdGUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldElucHV0U3RyZWFtKElucHV0U3RyZWFtIGlucHV0U3RyZWFtKQotICB7Ci0gICAgICB0aGlzLmlucHV0U3RyZWFtID0gaW5wdXRTdHJlYW07Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCBjbGFzcyBYTUxWYWxpZGF0b3JQYXJzZXJDb25maWd1cmF0aW9uIGV4dGVuZHMgU3RhbmRhcmRQYXJzZXJDb25maWd1cmF0aW9uCi0gIHsKLQkvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcuYXBhY2hlLnhlcmNlcy5wYXJzZXJzLkRURENvbmZpZ3VyYXRpb24jY3JlYXRlRXJyb3JSZXBvcnRlcigpCi0gICAgICovCi0gICAgcHJvdGVjdGVkIFhNTEVycm9yUmVwb3J0ZXIgY3JlYXRlRXJyb3JSZXBvcnRlcigpCi0gICAgewotICAgICAgcmV0dXJuIG5ldyBYTUxFcnJvclJlcG9ydGVyKCkKLSAgICAgIHsKLSAgICAgICAgLyogKG5vbi1KYXZhZG9jKQotICAgICAgICAgKiBAc2VlIG9yZy5hcGFjaGUueGVyY2VzLmltcGwuWE1MRXJyb3JSZXBvcnRlciNyZXBvcnRFcnJvcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0W10sIHNob3J0KQotICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIHZvaWQgcmVwb3J0RXJyb3IoU3RyaW5nIGRvbWFpbiwgU3RyaW5nIGtleSwgT2JqZWN0W10gYXJndW1lbnRzLAotICAgICAgICAgICAgc2hvcnQgc2V2ZXJpdHkpIHRocm93cyBYTklFeGNlcHRpb24KLSAgICAgICAgewotICAgICAgICAgIGN1cnJlbnRFcnJvcktleSA9IGtleTsKLSAgICAgICAgICBjdXJyZW50TWVzc2FnZUFyZ3VtZW50cyA9IGFyZ3VtZW50czsKLSAgICAgICAgICBzdXBlci5yZXBvcnRFcnJvcihkb21haW4sIGtleSwgYXJndW1lbnRzLCBzZXZlcml0eSk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGFuIFhNTCBSZWFkZXIuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBuZXdseSBjcmVhdGVkIFhNTCByZWFkZXIgb3IgbnVsbCBpZiB1bnN1Y2Nlc3NmdWwuCi0gICAqIEB0aHJvd3MgRXhjZXB0aW9uCi0gICAqLwotICBwcm90ZWN0ZWQgWE1MUmVhZGVyIGNyZWF0ZVhNTFJlYWRlcigpIHRocm93cyBFeGNlcHRpb24KLSAgeyAgICAgCi0gICAgU0FYUGFyc2VyIHJlYWRlciA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgcmVhZGVyID0gbmV3IG9yZy5hcGFjaGUueGVyY2VzLnBhcnNlcnMuU0FYUGFyc2VyKG5ldyBYTUxWYWxpZGF0b3JQYXJzZXJDb25maWd1cmF0aW9uKCkpOwotICAgICAgCi0gICAgICBYTUxDb25mb3JtYW5jZURlZmF1bHRIYW5kbGVyIGNvbmZvcm1hbmNlRGVmYXVsdEhhbmRsZXIgPSBuZXcgWE1MQ29uZm9ybWFuY2VEZWZhdWx0SGFuZGxlcigpOwotICAgICAgcmVhZGVyLnNldEVycm9ySGFuZGxlcihjb25mb3JtYW5jZURlZmF1bHRIYW5kbGVyKTsKLSAgICAgIHJlYWRlci5zZXRDb250ZW50SGFuZGxlcihjb25mb3JtYW5jZURlZmF1bHRIYW5kbGVyKTsKLSAgICAgIAotICAgICAgLy8gT2xkZXIgWGVyY2VzIHZlcnNpb25zIHdpbGwgdGhyb3duIGEgTlBFIGlmIGEgbnVsbCBncmFtbWFyIHBvb2wgaXMgc2V0LgotICAgICAgaWYoZ3JhbW1hclBvb2wgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcmVhZGVyLnNldFByb3BlcnR5KG9yZy5hcGFjaGUueGVyY2VzLmltcGwuQ29uc3RhbnRzLlhFUkNFU19QUk9QRVJUWV9QUkVGSVggKyBvcmcuYXBhY2hlLnhlcmNlcy5pbXBsLkNvbnN0YW50cy5YTUxHUkFNTUFSX1BPT0xfUFJPUEVSVFksIGdyYW1tYXJQb29sKTsKLSAgICAgIH0KLSAgICAgIHJlYWRlci5zZXRQcm9wZXJ0eShvcmcuYXBhY2hlLnhlcmNlcy5pbXBsLkNvbnN0YW50cy5YRVJDRVNfUFJPUEVSVFlfUFJFRklYICsgb3JnLmFwYWNoZS54ZXJjZXMuaW1wbC5Db25zdGFudHMuRU5USVRZX1JFU09MVkVSX1BST1BFUlRZLCBuZXcgTXlFbnRpdHlSZXNvbHZlcih1cmlSZXNvbHZlcikpOwotICAgICAgcmVhZGVyLnNldEZlYXR1cmUob3JnLmFwYWNoZS54ZXJjZXMuaW1wbC5Db25zdGFudHMuWEVSQ0VTX0ZFQVRVUkVfUFJFRklYICsgb3JnLmFwYWNoZS54ZXJjZXMuaW1wbC5Db25zdGFudHMuQ09OVElOVUVfQUZURVJfRkFUQUxfRVJST1JfRkVBVFVSRSwgZmFsc2UpOwotICAgICAgcmVhZGVyLnNldEZlYXR1cmUob3JnLmFwYWNoZS54ZXJjZXMuaW1wbC5Db25zdGFudHMuU0FYX0ZFQVRVUkVfUFJFRklYICsgb3JnLmFwYWNoZS54ZXJjZXMuaW1wbC5Db25zdGFudHMuTkFNRVNQQUNFU19GRUFUVVJFLCB0cnVlKTsKLSAgICAgIHJlYWRlci5zZXRGZWF0dXJlKG9yZy5hcGFjaGUueGVyY2VzLmltcGwuQ29uc3RhbnRzLlNBWF9GRUFUVVJFX1BSRUZJWCArIG9yZy5hcGFjaGUueGVyY2VzLmltcGwuQ29uc3RhbnRzLk5BTUVTUEFDRV9QUkVGSVhFU19GRUFUVVJFLCB0cnVlKTsKLQkgIHJlYWRlci5zZXRGZWF0dXJlKG9yZy5hcGFjaGUueGVyY2VzLmltcGwuQ29uc3RhbnRzLlNBWF9GRUFUVVJFX1BSRUZJWCArIG9yZy5hcGFjaGUueGVyY2VzLmltcGwuQ29uc3RhbnRzLlZBTElEQVRJT05fRkVBVFVSRSwgdHJ1ZSk7Ci0JICByZWFkZXIuc2V0RmVhdHVyZShvcmcuYXBhY2hlLnhlcmNlcy5pbXBsLkNvbnN0YW50cy5YRVJDRVNfRkVBVFVSRV9QUkVGSVggKyBvcmcuYXBhY2hlLnhlcmNlcy5pbXBsLkNvbnN0YW50cy5TQ0hFTUFfVkFMSURBVElPTl9GRUFUVVJFLCB0cnVlKTsKLSAgICB9IAotICAgIGNhdGNoKEV4Y2VwdGlvbiBlKQotICAgIHsgCi0gICAgICBMb2dnZXJGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0TG9nZ2VyKCkubG9nKCJFcnJvciBjcmVhdGluZyBYTUwgcmVhZGVyIGZvciBXU0RMIFhNTCBjb25mb3JtYW5jZSB2YWxpZGF0aW9uLiIsIElMb2dnZXIuU0VWX0VSUk9SLCBlKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlYWRlcjsKLSAgfSAKLSAgCi0gIC8qKgotICAgKiBBIGN1c3RvbSBlbnRpdHkgcmVzb2x2ZXIgdGhhdCB1c2VzIHRoZSBVUkkgcmVzb2x2ZXIgc3BlY2lmaWVkIHRvIHJlc29sdmUgZW50aXRpZXMuCi0gICAqLwotICBwcm90ZWN0ZWQgY2xhc3MgTXlFbnRpdHlSZXNvbHZlciBpbXBsZW1lbnRzIFhNTEVudGl0eVJlc29sdmVyIAotICB7Ci0gICAgcHJpdmF0ZSBVUklSZXNvbHZlciB1cmlSZXNvbHZlcjsKLSAgICAKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3Rvci4KLSAgICAgKiAKLSAgICAgKiBAcGFyYW0gdXJpUmVzb2x2ZXIgVGhlIFVSSSByZXNvbHZlciB0byB1c2Ugd2l0aCB0aGlzIGVudGl0eSByZXNvbHZlci4KLSAgICAgKi8KLSAgICBwdWJsaWMgTXlFbnRpdHlSZXNvbHZlcihVUklSZXNvbHZlciB1cmlSZXNvbHZlcikKLSAgICB7Ci0gICAgICB0aGlzLnVyaVJlc29sdmVyID0gdXJpUmVzb2x2ZXI7Ci0gICAgfQotICAgIAotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MRW50aXR5UmVzb2x2ZXIjcmVzb2x2ZUVudGl0eShvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAqLwotICAgIHB1YmxpYyBYTUxJbnB1dFNvdXJjZSByZXNvbHZlRW50aXR5KFhNTFJlc291cmNlSWRlbnRpZmllciByaWQpIHRocm93cyBYTklFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0gICAgewotICAgICAgLy8gSWYgd2UncmUgY3VycmVudGx5IGV4YW1pbmluZyBhIHN1YmVsZW1lbnQgb2YgdGhlIAotCSAgLy8gV1NETCBvciBzY2hlbWEgZG9jdW1lbnRhdGlvbiBlbGVtZW50IHdlIGRvbid0IHdhbnQgdG8gcmVzb2x2ZSBpdAotCSAgLy8gYXMgYW55dGhpbmcgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIGRvY3VtZW50YXRpb24uCi0JICBpZihpc0NoaWxkT2ZEb2MpCi0JICB7Ci0JICAgIHJldHVybiBuZXcgWE1MSW5wdXRTb3VyY2UocmlkKTsKLQkgIH0KLQkgIAotCSAgYm9vbGVhbiBuc1VzZWQgPSBmYWxzZTsKLQkgIAotCSAgU3RyaW5nIG5zID0gcmlkLmdldE5hbWVzcGFjZSgpOwotCSAgaWYobnMgIT0gbnVsbCAmJiBpZ25vcmVkTmFtZXNwYWNlTGlzdC5jb250YWlucyhucykpCi0JICB7Ci0JCXJldHVybiBuZXcgWE1MSW5wdXRTb3VyY2UocmlkKTsKLQkgIH0KLQkgIAotCSAgU3RyaW5nIHN5c3RlbUlkID0gcmlkLmdldExpdGVyYWxTeXN0ZW1JZCgpOwotCSAgaWYoc3lzdGVtSWQgPT0gbnVsbCkKLQkgIHsKLQkJc3lzdGVtSWQgPSBuczsKLQkJbnNVc2VkID0gdHJ1ZTsKLQkgIH0KLQkgIFN0cmluZyBwdWJsaWNJZCA9IHJpZC5nZXRQdWJsaWNJZCgpOwotICAgICAgaWYocHVibGljSWQgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcHVibGljSWQgPSBzeXN0ZW1JZDsKLSAgICAgIH0KLSAgICAgIAotICAgICAgLy8gWGVyY2VzIHRlbmRzIHRvIHRyeSB0byByZXNvbHZlIGxvY2F0aW9ucyB3aXRoIG5vIGluZm9ybWF0aW9uLgotICAgICAgLy8gTm8gbmVlZCB0byBkbyBhbnkgcHJvY2Vzc2luZyBpZiB3ZSBoYXZlIG5vIGluZm9ybWF0aW9uLgotICAgICAgaWYocHVibGljSWQgIT0gbnVsbCB8fCBzeXN0ZW1JZCAhPSBudWxsKQotICAgICAgewotICAgICAgICBJVVJJUmVzb2x1dGlvblJlc3VsdCByZXN1bHQgPSB1cmlSZXNvbHZlci5yZXNvbHZlKCIiLCBwdWJsaWNJZCwgc3lzdGVtSWQpOwotICAgICAgICBTdHJpbmcgdXJpID0gcmVzdWx0LmdldFBoeXNpY2FsTG9jYXRpb24oKTsKLSAgICAgICAgaWYgKHVyaSAhPSBudWxsICYmICF1cmkuZXF1YWxzKCIiKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIElmIHRoZSBuYW1lc3BhY2Ugd2FzIHVzZWQgdG8gcmVzb2x2ZSB0aGlzIHJlZmVyZW5jZSBlbnN1cmUgYSBzY2hlbWEKLSAgICAgICAgICAvLyBoYXMgYmVlbiByZXR1cm5lZC4gTmFtZXNwYWNlcyB0ZW5kIHRvIHBvaW50IHRvIFdlYiByZXNvdXJjZXMgdGhhdAotICAgICAgICAgIC8vIG1heSBvciBtYXkgbm90IGJlIHNjaGVtYXMuCi0gICAgICAgICAgYm9vbGVhbiBjcmVhdGVFbnRpdHlSZXN1bHQgPSB0cnVlOwotICAgICAgICAgIGlmKG5zVXNlZCkKLSAgICAgICAgICB7Ci0gICAgICAgIAlYU0RWYWxpZGF0b3IgeHNkVmFsID0gbmV3IFhTRFZhbGlkYXRvcigpOwotICAgICAgICAJeHNkVmFsLnZhbGlkYXRlKHVyaSwgdXJpUmVzb2x2ZXIsIG51bGwpOwotICAgICAgICAJaWYoIXhzZFZhbC5pc1ZhbGlkKCkpCi0gICAgICAgIAkgIGNyZWF0ZUVudGl0eVJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgICAKLSAgICAgICAgICBpZihjcmVhdGVFbnRpdHlSZXN1bHQpCi0gICAgICAgICAgewotCSAgICAgICAgdHJ5Ci0JICAgICAgICB7Ci0JCSAgICAgIFVSTCBlbnRpdHlVUkwgPSBuZXcgVVJMKHVyaSk7Ci0gICAgICAgICAgICAgIFhNTElucHV0U291cmNlIGlzID0gbmV3IFhNTElucHV0U291cmNlKHJpZC5nZXRQdWJsaWNJZCgpLCBzeXN0ZW1JZCwgcmVzdWx0LmdldExvZ2ljYWxMb2NhdGlvbigpKTsKLQkJICAgICAgaXMuc2V0Qnl0ZVN0cmVhbShlbnRpdHlVUkwub3BlblN0cmVhbSgpKTsKLSAgICAgICAgICAgICAgaWYgKGlzICE9IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaXM7Ci0gICAgICAgICAgICAgIH0KLQkgICAgICAgIH0KLQkgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKQotCSAgICAgICAgewotCQkgICAgICAvLyBObyBuZWVkIHRvIHJlcG9ydCB0aGlzIGVycm9yLiBTaW1wbHkgY29udGludWUgYmVsb3cuCi0JICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gIH0gIAotICAKLSAgLyoqIAotICAgKiBBIGxpbmUgYW5kIGNvbHVtbiBudW1iZXIgY29vcmRpbmF0ZS4KLSAgICovCi0gIHByb3RlY3RlZCBjbGFzcyBMb2NhdGlvbkNvb3JkaW5hdGUKLSAgewkKLQlwcml2YXRlIGludCBsaW5lTm8gPSAtMTsKLSAgICBwcml2YXRlIGludCBjb2x1bW5ObyA9IC0xOwotICAgIAotICAgIHB1YmxpYyBMb2NhdGlvbkNvb3JkaW5hdGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCi0gICAgewotICAgICAgdGhpcy5saW5lTm8gPSBsaW5lTnVtYmVyOwotICAgICAgdGhpcy5jb2x1bW5ObyA9IGNvbHVtbk51bWJlcjsKLSAgICB9Ci0gICAgCQotICAgIHB1YmxpYyBpbnQgZ2V0TGluZU51bWJlcigpCi0gICAgeyAKLSAgICAgIHJldHVybiB0aGlzLmxpbmVObzsKLSAgICB9Ci0gICAgCQotICAgIHB1YmxpYyBpbnQgZ2V0Q29sdW1uTnVtbmVyKCkKLSAgICB7IAotICAgICAgcmV0dXJuIHRoaXMuY29sdW1uTm87Ci0gICAgfSAKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9FbGVtZW50TG9jYXRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvRWxlbWVudExvY2F0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiOTM5NDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9FbGVtZW50TG9jYXRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbDsKLQotLyoqCi0gKiBIb2xkcyB0aGUgbG9jYXRpb24gaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQgaW4gdGhlIG1vZGVsLgotICovCi1wdWJsaWMgY2xhc3MgRWxlbWVudExvY2F0aW9uCi17ICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSUQgPSAibG9jYXRpb24iOwotICBwcm90ZWN0ZWQgaW50IGxpbmU7Ci0gIHByb3RlY3RlZCBpbnQgY29sdW1uOwotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gbGluZSAtIHRoZSBsaW5lIGxvY2F0aW9uIG9mIHRoZSBlbGVtZW50Ci0gICAqIEBwYXJhbSBjb2x1bW4gLSB0aGUgY29sdW1uIGxvY2F0aW9uIG9mIHRoZSBlbGVtZW50Ci0gICAqLwotICBwdWJsaWMgRWxlbWVudExvY2F0aW9uKGludCBsaW5lLCBpbnQgY29sdW1uKQotICB7Ci0gICAgdGhpcy5saW5lID0gbGluZTsKLSAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybiB0aGUgbGluZSBudW1iZXIgZm9yIHRoaXMgZWxlbWVudC4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIGxpbmUgbnVtYmVyIGZvciB0aGlzIGVsZW1lbnQKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0TGluZU51bWJlcigpCi0gIHsKLSAgCXJldHVybiBsaW5lOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJuIHRoZSBjb2x1bW4gbnVtYmVyIGZvciB0aGlzIGVsZW1lbnQuCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSBjb2x1bW4gbnVtYmVyIGZvciB0aGlzIGVsZW1lbnQKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0Q29sdW1uTnVtYmVyKCkKLSAgewotICAJcmV0dXJuIGNvbHVtbjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9JWE1MQ2F0YWxvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9JWE1MQ2F0YWxvZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGNiZjgzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvSVhNTENhdGFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbDsKLQotLyoqCi0gKiBBbiBpbnRlcmZhY2UgZm9yIGFuIFhNTCBjYXRhbG9nLgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElYTUxDYXRhbG9nCi17Ci0KLSAgLyoqCi0gICAqIEFkZCBhIHB1YmxpYyBpZCBhbmQgYSBsb2NhdGlvbiB0byB0aGUgY2F0YWxvZy4KLSAgICogCi0gICAqIEBwYXJhbSBwdWJsaWNJZCAtCi0gICAqICAgICAgICAgIHRoZSBwdWJsaWMgaWQgb2YgdGhlIGVudHJ5Ci0gICAqIEBwYXJhbSBzeXN0ZW1JZCAtCi0gICAqICAgICAgICAgIHRoZSBzeXN0ZW0gaWQgb2YgdGhlIGVudHJ5Ci0gICAqLwotICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBhZGRFbnRyeVRvQ2F0YWxvZyhTdHJpbmcgcHVibGljSWQsIFN0cmluZyBzeXN0ZW1JZCk7Ci0KLSAgLyoqCi0gICAqIFJlc29sdmUgdGhlIGxvY2F0aW9uIG9mIGFuIGVudGl0eSBnaXZlbiBwdWJsaWMgYW5kIHN5c3RlbSBpZHMuCi0gICAqIAotICAgKiBAcGFyYW0gcHVibGljSWQgLQotICAgKiAgICAgICAgICB0aGUgcHVibGljIGlkIG9mIHRoZSBlbnRpdHkgdG8gYmUgcmVzb2x2ZWQKLSAgICogQHBhcmFtIHN5c3RlbUlkIC0KLSAgICogICAgICAgICAgdGhlIHN5c3RlbSBpZCBvZiB0aGUgZW50aXR5IHRvIGJlIHJlc29sdmVkCi0gICAqIEByZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBlbnRpdHkKLSAgICovCi0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgcmVzb2x2ZUVudGl0eUxvY2F0aW9uKFN0cmluZyBwdWJsaWNJZCwgU3RyaW5nIHN5c3RlbUlkKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvSVhNTFZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9JWE1MVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MDQxNGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9JWE1MVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXIuVVJJUmVzb2x2ZXI7Ci0KLS8qKgotICogQW4gaW50ZXJmYWNlIGZvciBhbiBYTUwgdmFsaWRhdG9yLgotICovCi1wdWJsaWMgaW50ZXJmYWNlIElYTUxWYWxpZGF0b3IKLXsKLSAgLyoqCi0gICAqIFNldCB0aGUgZmlsZSB0byBiZSB2YWxpZGF0ZWQuCi0gICAqIAotICAgKiBAcGFyYW0gdXJpIC0gdGhlIHVyaSBvZiB0aGUgZmlsZSB0byBiZSB2YWxpZGF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEZpbGUoU3RyaW5nIHVyaSk7Ci0gIAotICAvKioKLSAgICogVmFsaWRhdGUgdGhlIGZpbGUuCi0gICAqLwotICBwdWJsaWMgdm9pZCBydW4oKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdlcmUgdmFsaWRhdGlvbiBlcnJvcnMsIGZhbHNlIG90aGVyd2lzZS4KLSAgICogCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSB3ZXJlIHZhbGlkYXRpb24gZXJyb3JzLCBmYWxzZSBvdGhlcndpc2UKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGhhc0Vycm9ycygpOwotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgZXJyb3JzLgotICAgKiAKLSAgICogQHJldHVybiB0aGUgbGlzdCBvZiBlcnJvcnMKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEVycm9ycygpOwotICAKLSAgLyoqCi0gICAqIFNldCB0aGUgVVJJIHJlc29sdmVyIHRvIHVzZS4KLSAgICogCi0gICAqIEBwYXJhbSB1cmlSZXNvbHZlciBUaGUgVVJJIHJlc29sdmVyIHRvIHVzZS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFVSSVJlc29sdmVyKFVSSVJlc29sdmVyIHVyaVJlc29sdmVyKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvTGluZU51bWJlckRPTVBhcnNlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9MaW5lTnVtYmVyRE9NUGFyc2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZjhiNjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9MaW5lTnVtYmVyRE9NUGFyc2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sOwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMuZG9tLkVsZW1lbnRJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnBhcnNlcnMuRE9NUGFyc2VyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnV0aWwuU3ltYm9sVGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLkF1Z21lbnRhdGlvbnM7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLk5hbWVzcGFjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlFOYW1lOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxBdHRyaWJ1dGVzOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxMb2NhdG9yOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLmdyYW1tYXJzLlhNTEdyYW1tYXJQb29sOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MUGFyc2VyQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uOwotCi1pbXBvcnQgY29tLmlibS53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYUNvbnN0YW50czsKLQotLyoqCi0gKiBBIERPTSBwYXJzZXIgdGhhdCB3aWxsIHJlZ2lzdGVyIGxvY2F0aW9uIGluZm9ybWF0aW9uIHdpdGggdGhlIGVsZW1lbnRzIGluIHRoZSBtb2RlbC4KLSAqLwotcHVibGljIGNsYXNzIExpbmVOdW1iZXJET01QYXJzZXIgZXh0ZW5kcyBET01QYXJzZXIKLXsKLSAgWE1MTG9jYXRvciBsb2NhdG9yID0gbnVsbDsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgTGluZU51bWJlckRPTVBhcnNlcigpCi0gIHsKLSAgICBzdXBlcigpOwotICAgIHRyeQotICAgIHsKLSAgICAgIHNldEZlYXR1cmUoREVGRVJfTk9ERV9FWFBBTlNJT04sIGZhbHNlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZSk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0dWN0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gYXJnMCBUaGUgcGFyc2VyIGNvbmZpZ3VyYXRpb24uCi0gICAqLwotICBwdWJsaWMgTGluZU51bWJlckRPTVBhcnNlcihYTUxQYXJzZXJDb25maWd1cmF0aW9uIGFyZzApCi0gIHsKLSAgICBzdXBlcihhcmcwKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzZXRGZWF0dXJlKERFRkVSX05PREVfRVhQQU5TSU9OLCBmYWxzZSk7Ci0gICAgfQotICAgIGNhdGNoIChTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZSk7Ci0gICAgfQotICAgIGNhdGNoIChTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogCi0gICAqIEBwYXJhbSBhcmcwIEEgc3ltYm9sIHRhYmxlIGZvciB0aGUgcGFyc2VyLgotICAgKi8KLSAgcHVibGljIExpbmVOdW1iZXJET01QYXJzZXIoU3ltYm9sVGFibGUgYXJnMCkKLSAgewotICAgIHN1cGVyKGFyZzApOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiAKLSAgICogQHBhcmFtIGFyZzAgQSBzeW1ib2wgdGFibGUgZm9yIHRoZSBwYXJzZXIuCi0gICAqIEBwYXJhbSBhcmcxIEEgZ3JhbW1hciBwb29sIGZvciB0aGUgcGFyc2VyLgotICAgKi8KLSAgcHVibGljIExpbmVOdW1iZXJET01QYXJzZXIoU3ltYm9sVGFibGUgYXJnMCwgWE1MR3JhbW1hclBvb2wgYXJnMSkKLSAgewotICAgIHN1cGVyKGFyZzAsIGFyZzEpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlhNTERvY3VtZW50SGFuZGxlciNzdGFydEVsZW1lbnQob3JnLmFwYWNoZS54ZXJjZXMueG5pLlFOYW1lLCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MQXR0cmlidXRlcywgb3JnLmFwYWNoZS54ZXJjZXMueG5pLkF1Z21lbnRhdGlvbnMpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzdGFydEVsZW1lbnQoUU5hbWUgYXJnMCwgWE1MQXR0cmlidXRlcyBhcmcxLCBBdWdtZW50YXRpb25zIGFyZzIpIHRocm93cyBYTklFeGNlcHRpb24KLSAgewotICAgIEVsZW1lbnQgZWxlbWVudDsKLSAgICAvLyBGb3IgZWxlbWVudHMgZnJvbSB0aGUgU2NoZW1hIG5hbWVzcGFjZSB3ZSB3YW50IHRvIHByZXNlcnZlIHRoZW0KLSAgICAvLyB0aGUgd2F5IHRoZXkgd2VyZSBlbnRlcmVkLiBSZXZlcnQgdGhlIHZhbHVlcyB0byB0aGUgbm9uLW5vcm1hbGl6ZWQgdmFsdWVzLgotICAgIFN0cmluZyBucyA9IGFyZzAudXJpOwotICAgIGlmKG5zICE9IG51bGwgJiYgKG5zLmVxdWFscyhTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxKSB8fCBucy5lcXVhbHMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMTk5OSkgfHwgbnMuZXF1YWxzKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDApKSkKLSAgICB7Ci0gICAgICBpbnQgbnVtYXR0cyA9IGFyZzEuZ2V0TGVuZ3RoKCk7Ci0gICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbnVtYXR0czsgaSsrKQotICAgICAgewotICAgICAgICBTdHJpbmcgbm9uTm9ybWFsaXplZFZhbHVlID0gYXJnMS5nZXROb25Ob3JtYWxpemVkVmFsdWUoaSk7Ci0gICAgICAgIGFyZzEuc2V0VmFsdWUoaSwgbm9uTm9ybWFsaXplZFZhbHVlKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgc3VwZXIuc3RhcnRFbGVtZW50KGFyZzAsIGFyZzEsIGFyZzIpOwotICAgIHRyeQotICAgIHsKLSAgICAgIGVsZW1lbnQgPSAoRWxlbWVudClnZXRQcm9wZXJ0eShDVVJSRU5UX0VMRU1FTlRfTk9ERSk7Ci0gICAgICBFbGVtZW50SW1wbCBlbGVtZW50SW1wbCA9IChFbGVtZW50SW1wbCllbGVtZW50OwotICAgICAgLy8gU2V0dGluZyB0aGUgdXNlciBkYXRhIHdpdGggYW4gaWRlbnRpZmllciBzdWNoIGFzIEVsZW1lbnRMb2NhdGlvbi5LRVlfTkFNRQotICAgICAgLy8gbWF5IGJlIGEgbG9uZyB0ZXJtIGdvb2QgaWRlYS4gVGhlIHNldFVzZXJEYXRhIG1ldGhvZCB3aXRoIG5vIGlkIGlzIHVzZWQgCi0gICAgICAvLyB0byBzdXBwb3J0IEpWTXMgd2l0aCBhbHRlcm5hdGUgdmVyc2lvbnMgb2YgWGVyY2VzLgotICAgICAgZWxlbWVudEltcGwuc2V0VXNlckRhdGEobmV3IEVsZW1lbnRMb2NhdGlvbihsb2NhdG9yLmdldExpbmVOdW1iZXIoKSwgbG9jYXRvci5nZXRDb2x1bW5OdW1iZXIoKSkpOwotICAgIH0KLSAgICAvLyBjYXRjaCBTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIGFuZCBTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24gaWYgY2FuJ3QgZ2V0IGVsZW1lbnQKLSAgICBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oZSk7Ci0gICAgfQotICAgIGNhdGNoIChTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oZSk7Ci0gICAgfQotICAgIGNhdGNoIChTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihlKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MRG9jdW1lbnRIYW5kbGVyI3N0YXJ0RG9jdW1lbnQob3JnLmFwYWNoZS54ZXJjZXMueG5pLlhNTExvY2F0b3IsIGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5OYW1lc3BhY2VDb250ZXh0LCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuQXVnbWVudGF0aW9ucykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0YXJ0RG9jdW1lbnQoWE1MTG9jYXRvciBhcmcwLCBTdHJpbmcgYXJnMSwgTmFtZXNwYWNlQ29udGV4dCBhcmcyLCBBdWdtZW50YXRpb25zIGFyZzMpCi0gICAgdGhyb3dzIFhOSUV4Y2VwdGlvbgotICB7Ci0gICAgbG9jYXRvciA9IGFyZzA7Ci0gICAgc3VwZXIuc3RhcnREb2N1bWVudChhcmcwLCBhcmcxLCBhcmcyLCBhcmczKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9YTUxDYXRhbG9nLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL1hNTENhdGFsb2cuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTljNjMxMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL1hNTENhdGFsb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbDsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5GYWN0b3J5Q29uZmlndXJhdGlvbkVycm9yOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuU0FYUGFyc2VyOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlNBWFBhcnNlckZhY3Rvcnk7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5qYXhwLlNBWFBhcnNlckZhY3RvcnlJbXBsOwotaW1wb3J0IG9yZy54bWwuc2F4LkF0dHJpYnV0ZXM7Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uOwotaW1wb3J0IG9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXI7Ci0KLS8qKgotICogWE1MQ2F0YWxvZyBUaGlzIGNsYXNzIGNhbiBiZSB1c2VkIHRvIHJlZ2lzdGVyLCBvYnRhaW4gYW5kIGRlbGV0ZSBhbiBpbnN0YW5jZQotICogb2YgYW4gWE1MIGNhdGFsb2cuIE1ldGhvZCBkZWZpbml0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIHRoZSBjYXRhbG9nIHRvIHNldCBhCi0gKiBsb2NhdGlvbiBpbiB0aGUgY2F0YWxvZyBhbmQgcmVzb2x2ZSBhbiBlbnRpdHkgZnJvbSB0aGUgY2F0YWxvZy4KLSAqLwotcHVibGljIGNsYXNzIFhNTENhdGFsb2cgaW1wbGVtZW50cyBJWE1MQ2F0YWxvZwotewotICAvL3ByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBfQVBBQ0hFX0ZFQVRVUkVfQ09OVElOVUVfQUZURVJfRkFUQUxfRVJST1IgPSAiaHR0cDovL2FwYWNoZS5vcmcveG1sL2ZlYXR1cmVzL2NvbnRpbnVlLWFmdGVyLWZhdGFsLWVycm9yIjsKLQotICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgX0FQQUNIRV9GRUFUVVJFX05BTUVTUEFDRV9QUkVGSVhFUyA9ICJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlLXByZWZpeGVzIjsKLQotICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgX0FQQUNIRV9GRUFUVVJFX05BTUVTUEFDRVMgPSAiaHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL25hbWVzcGFjZXMiOwotCi0gIC8vcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIF9BUEFDSEVfRkVBVFVSRV9WQUxJREFUSU9OID0gImh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy92YWxpZGF0aW9uIjsKLQotICAvL3ByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBfQVBBQ0hFX0ZFQVRVUkVfVkFMSURBVElPTl9TQ0hFTUEgPSAiaHR0cDovL2FwYWNoZS5vcmcveG1sL2ZlYXR1cmVzL3ZhbGlkYXRpb24vc2NoZW1hIjsKLSAgCi0gIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBGSUxFX1BST1RPQ09MID0gImZpbGU6Ly8vIjsKLQotICBwcml2YXRlIHN0YXRpYyBJWE1MQ2F0YWxvZyBpbnN0YW5jZSA9IG51bGw7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGV4dHhtbGNhdGFsb2djbGFzcyA9IG51bGw7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgQ2xhc3NMb2FkZXIgZXh0Y2xhc3NMb2FkZXIgPSBudWxsOwotCi0gIHByaXZhdGUgc3RhdGljIElYTUxDYXRhbG9nIGV4dFhNTENhdGFsb2dJbnN0YW5jZSA9IG51bGw7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgTGlzdCBzY2hlbWFkaXJzID0gbmV3IEFycmF5TGlzdCgpOwotCi0gIHByaXZhdGUgc3RhdGljIExpc3QgZW50aXRpZXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgLyoqCi0gICAqIEEgaGFzaHRhYmxlIHRvIGhvbGQgdGhlIFhNTCBjYXRhbG9nIGVudHJpZXMuCi0gICAqLwotICBwcm90ZWN0ZWQgTWFwIGNhdGFsb2cgPSBuZXcgSGFzaHRhYmxlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybiBhbiBpbnN0YW5jZSBvZiB0aGUgWE1MIGNhdGFsb2cuIEFzc2lnbnMgYWxsIHJlZ2lzdGVyZWQgc2NoZW1hcyB0bwotICAgKiB0aGUgWE1MIGNhdGFsb2cuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBpbnN0YW5jZSBvZiB0aGUgWE1MIGNhdGFsb2cuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIElYTUxDYXRhbG9nIGdldEluc3RhbmNlKCkKLSAgewotICAgIGlmIChpbnN0YW5jZSA9PSBudWxsKQotICAgIHsKLSAgICAgIGluc3RhbmNlID0gbmV3IFhNTENhdGFsb2coKTsKLQotICAgICAgLy8gQWRkIHRoZSByZWdpc3RlcmVkIGVudGl0aWVzIHRvIHRoZSBjYXRhbG9nLgotICAgICAgSXRlcmF0b3IgZW50aXR5SXRlciA9IGVudGl0aWVzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoZW50aXR5SXRlci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFhNTENhdGFsb2dFbnRpdHlIb2xkZXIgZW50aXR5ID0gKFhNTENhdGFsb2dFbnRpdHlIb2xkZXIpIGVudGl0eUl0ZXIubmV4dCgpOwotICAgICAgICBpbnN0YW5jZS5hZGRFbnRyeVRvQ2F0YWxvZyhlbnRpdHkuZ2V0UHVibGljSWQoKSwgZW50aXR5LmdldFN5c3RlbUlkKCkpOwotICAgICAgfQotCi0gICAgICAvLyBBZGQgdGhlIHNjaGVtYXMgaW4gdGhlIHNjaGVtYSBkaXJlY3RvcmllcyB0byB0aGUgY2F0YWxvZy4KLSAgICAgIGlmIChzY2hlbWFkaXJzLnNpemUoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIFNBWFBhcnNlciBzYXhQYXJzZXIgPSBudWxsOwotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIFNBWFBhcnNlckZhY3RvcnkgcGFyc2VyZmFjdG9yeSA9IG5ldyBTQVhQYXJzZXJGYWN0b3J5SW1wbCgpOwotICAgICAgICAgIHBhcnNlcmZhY3Rvcnkuc2V0RmVhdHVyZShfQVBBQ0hFX0ZFQVRVUkVfTkFNRVNQQUNFX1BSRUZJWEVTLCB0cnVlKTsKLSAgICAgICAgICBwYXJzZXJmYWN0b3J5LnNldEZlYXR1cmUoX0FQQUNIRV9GRUFUVVJFX05BTUVTUEFDRVMsIHRydWUpOwotICAgICAgICAgIHNheFBhcnNlciA9IHBhcnNlcmZhY3RvcnkubmV3U0FYUGFyc2VyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKEZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IgZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKFNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKFNBWEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgSXRlcmF0b3Igc2NoZW1hZGlySXRlciA9IHNjaGVtYWRpcnMuaXRlcmF0b3IoKTsKLSAgICAgICAgU2NoZW1hTmFtZXNwYWNlSGFuZGxlciBoYW5kbGVyID0gKChYTUxDYXRhbG9nKSBpbnN0YW5jZSkubmV3IFNjaGVtYU5hbWVzcGFjZUhhbmRsZXIoKTsKLSAgICAgICAgd2hpbGUgKHNjaGVtYWRpckl0ZXIuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIHNjaGVtYWRpciA9IChTdHJpbmcpIHNjaGVtYWRpckl0ZXIubmV4dCgpOwotICAgICAgICAgIHJlZ2lzdGVyU2NoZW1hc0ZvckRpcihpbnN0YW5jZSwgc2NoZW1hZGlyLCBzYXhQYXJzZXIsIGhhbmRsZXIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZWdpc3RlciB0aGUgc2NoZW1hcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IGFuZCBhbGwgc3ViZGlyZWN0b3JpZXMgd2l0aCB0aGUKLSAgICogWE1MIGNhdGFsb2cuCi0gICAqIAotICAgKiBAcGFyYW0gY2F0YWxvZwotICAgKiAgICAgICAgICBUaGUgY2F0YWxvZyB0byByZWdpc3RlciB0aGUgc2NoZW1hcyB3aXRoLgotICAgKiBAcGFyYW0gc2NoZW1hZGlyCi0gICAqICAgICAgICAgIFRoZSBzY2hlbWEgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3Igc2NoZW1hIGZpbGVzLgotICAgKiBAcGFyYW0gcGFyc2VyCi0gICAqICAgICAgICAgIFRoZSBTQVhQYXJzZXIgdG8gdXNlIHRvIHBhcnNlIHRoZSBzY2hlbWFzIGZvciB0aGVpcgotICAgKiAgICAgICAgICB0YXJnZXROYW1lc3BhY2UuCi0gICAqIEBwYXJhbSBoYW5kbGVyCi0gICAqICAgICAgICAgIFRoZSBoYW5kbGVyIHRvIHVzZSB0byBnZXQgdGhlIHRhcmdldE5hbWVzcGFjZS4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIHZvaWQgcmVnaXN0ZXJTY2hlbWFzRm9yRGlyKElYTUxDYXRhbG9nIGNhdGFsb2csIFN0cmluZyBzY2hlbWFkaXIsIFNBWFBhcnNlciBwYXJzZXIsCi0gICAgICBTY2hlbWFOYW1lc3BhY2VIYW5kbGVyIGhhbmRsZXIpCi0gIHsKLSAgICAvLyBSZW1vdmUgZmlsZTogYW5kIGZpbGU6LyBmcm9tIGJlZ2lubmluZyBvZiBmaWxlIGxvY2F0aW9uIGlmIHRoZXkgYXJlIHByZXNlbnQuCi0gICAgaWYoc2NoZW1hZGlyLnN0YXJ0c1dpdGgoImZpbGU6IikpCi0gICAgewotICAgICAgc2NoZW1hZGlyID0gc2NoZW1hZGlyLnN1YnN0cmluZyg1KTsKLSAgICB9Ci0gICAgd2hpbGUoc2NoZW1hZGlyLnN0YXJ0c1dpdGgoIi8vIikpCi0gICAgewotICAgICAgc2NoZW1hZGlyID0gc2NoZW1hZGlyLnN1YnN0cmluZygxKTsKLSAgICB9Ci0gICAgCi0gICAgRmlsZSBkaXIgPSBuZXcgRmlsZShzY2hlbWFkaXIpOwotICAgIGlmIChkaXIuaXNEaXJlY3RvcnkoKSkKLSAgICB7Ci0gICAgICBGaWxlW10gZmlsZXMgPSBkaXIubGlzdEZpbGVzKCk7Ci0gICAgICBpbnQgbnVtZmlsZXMgPSBmaWxlcy5sZW5ndGg7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWZpbGVzOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEZpbGUgdGVtcGZpbGUgPSBmaWxlc1tpXTsKLSAgICAgICAgU3RyaW5nIHRlbXBmaWxlcGF0aCA9IHRlbXBmaWxlLmdldEFic29sdXRlUGF0aCgpOwotICAgICAgICB0ZW1wZmlsZXBhdGggPSB0ZW1wZmlsZXBhdGgucmVwbGFjZSgnXFwnLCcvJyk7Ci0gICAgICAgIHdoaWxlKHRlbXBmaWxlcGF0aC5zdGFydHNXaXRoKCIvIikpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZW1wZmlsZXBhdGggPSB0ZW1wZmlsZXBhdGguc3Vic3RyaW5nKDEpOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBmaWxlcGF0aCA9IEZJTEVfUFJPVE9DT0wgKyB0ZW1wZmlsZXBhdGg7Ci0gICAgICAgIGlmICh0ZW1wZmlsZS5pc0RpcmVjdG9yeSgpKQotICAgICAgICB7Ci0gICAgICAgICAgcmVnaXN0ZXJTY2hlbWFzRm9yRGlyKGNhdGFsb2csIHRlbXBmaWxlcGF0aCwgcGFyc2VyLCBoYW5kbGVyKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBoYW5kbGVyLnJlc2V0KCk7Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgcGFyc2VyLnBhcnNlKHRlbXBmaWxlcGF0aCwgaGFuZGxlcik7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUT0RPOiBsb2cgZXJyb3IuCi0gICAgICAgICAgfQotICAgICAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSBoYW5kbGVyLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgICAgIGlmICh0YXJnZXROYW1lc3BhY2UgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBjYXRhbG9nLmFkZEVudHJ5VG9DYXRhbG9nKHRhcmdldE5hbWVzcGFjZSwgdGVtcGZpbGVwYXRoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBpbnN0YW5jZSBvZiB0aGUgZXh0ZW5zaW9uIFhNTCBjYXRhbG9nLiBSZXR1cm5zIHRoZSBpbnN0YW5jZSBpZiBvbmUKLSAgICogaXMgcmVnaXN0ZXJlZCBhbmQgY2FuIGJlIGNyZWF0ZWQsIG51bGwgb3RoZXJ3aXNlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgaW5zdGFuY2Ugb2YgdGhlIGV4dGVuc2lvbiBYTUwgY2F0YWxvZyBpZiBvbmUgaXMgcmVnaXN0ZXJlZCwKLSAgICogICAgICAgICBudWxsIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgSVhNTENhdGFsb2cgZ2V0RXh0ZW5zaW9uQ2F0YWxvZ0luc3RhbmNlKCkKLSAgewotICAgIGlmIChleHRYTUxDYXRhbG9nSW5zdGFuY2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZXh0eG1sY2F0YWxvZ2NsYXNzICE9IG51bGwgJiYgZXh0Y2xhc3NMb2FkZXIgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBDbGFzcyBjYXRhbG9nQ2xhc3MgPSBleHRjbGFzc0xvYWRlciAhPSBudWxsID8gZXh0Y2xhc3NMb2FkZXIubG9hZENsYXNzKGV4dHhtbGNhdGFsb2djbGFzcykgOiBDbGFzcwotICAgICAgICAgICAgICAuZm9yTmFtZShleHR4bWxjYXRhbG9nY2xhc3MpOwotICAgICAgICAgIGV4dFhNTENhdGFsb2dJbnN0YW5jZSA9IChJWE1MQ2F0YWxvZykgY2F0YWxvZ0NsYXNzLm5ld0luc3RhbmNlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgLy9UT0RPOiBMb2cgZXJyb3IKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZXh0WE1MQ2F0YWxvZ0luc3RhbmNlOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCB0aGUgY2xhc3Mgb2YgdGhlIFhNTCBjYXRhbG9nIHRvIGJlIHVzZWQuCi0gICAqIAotICAgKiBAcGFyYW0geG1sY2F0YWxvZwotICAgKiAgICAgICAgICBUaGUgY2xhc3Mgb2YgdGhlIFhNTCBjYXRhbG9nIHRvIGJlIHVzZWQuCi0gICAqIEBwYXJhbSBjbGFzc2xvYWRlcgotICAgKiAgICAgICAgICBUaGUgY2xhc3Nsb2FkZXIgdG8gdXNlIHRvIGxvYWQgdGhlIGNhdGFsb2cuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0RXh0ZW5zaW9uWE1MQ2F0YWxvZyhTdHJpbmcgeG1sY2F0YWxvZywgQ2xhc3NMb2FkZXIgY2xhc3Nsb2FkZXIpCi0gIHsKLSAgICBleHR4bWxjYXRhbG9nY2xhc3MgPSB4bWxjYXRhbG9nOwotICAgIGV4dGNsYXNzTG9hZGVyID0gY2xhc3Nsb2FkZXI7Ci0gIH0KLQotICAvKioKLSAgICogUmVzZXRzIHRoZSBpbnN0YW5jZSBvZiB0aGUgWE1MIGNhdGFsb2cgdG8gbnVsbC4gRm9yIGRlbGV0aW5nIHRoZSBjYXRhbG9nIGlmCi0gICAqIG5lY2Vzc2FyeS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCByZXNldCgpCi0gIHsKLSAgICBpbnN0YW5jZSA9IG51bGw7Ci0gICAgZXh0eG1sY2F0YWxvZ2NsYXNzID0gbnVsbDsKLSAgICBleHRjbGFzc0xvYWRlciA9IG51bGw7Ci0gICAgZXh0WE1MQ2F0YWxvZ0luc3RhbmNlID0gbnVsbDsKLSAgICBlbnRpdGllcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBzY2hlbWFkaXJzID0gbmV3IEFycmF5TGlzdCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCBhIHNjaGVtYSBkaXJlY3RvcnkgdG8gYmUgY2hlY2tlZCBmb3Igc2NoZW1hcyB0byByZWdpc3RlciBpbiB0aGUKLSAgICogY2F0YWxvZy4KLSAgICogCi0gICAqIEBwYXJhbSBzY2hlbWFkaXIKLSAgICogICAgICAgICAgVGhlIGRpcmVjdG9yeSB0byBjaGVjayBmb3Igc2NoZW1hcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBhZGRTY2hlbWFEaXIoU3RyaW5nIHNjaGVtYWRpcikKLSAgewotICAgIHNjaGVtYWRpcnMuYWRkKHNjaGVtYWRpcik7Ci0gIH0KLQotICAvKioKLSAgICogQWRkIGFuIGVudGl0eSB0byB0aGUgY2F0YWxvZy4KLSAgICogCi0gICAqIEBwYXJhbSBlbnRpdHkKLSAgICogICAgICAgICAgVGhlIGVudGl0eSB0byBhZGQgdG8gdGhlIGNhdGFsb2cuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIHZvaWQgYWRkRW50aXR5KFhNTENhdGFsb2dFbnRpdHlIb2xkZXIgZW50aXR5KQotICB7Ci0gICAgZW50aXRpZXMuYWRkKGVudGl0eSk7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzZGwudmFsaWRhdGUuaW50ZXJuYWwueG1sLklYTUxDYXRhbG9nI2FkZEVudHJ5VG9DYXRhbG9nKGphdmEubGFuZy5TdHJpbmcsCi0gICAqICAgICAgamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEVudHJ5VG9DYXRhbG9nKFN0cmluZyBwdWJsaWNJZCwgU3RyaW5nIHN5c3RlbUlkKQotICB7Ci0gICAgY2F0YWxvZy5wdXQocHVibGljSWQsIHN5c3RlbUlkKTsKLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3NkbC52YWxpZGF0ZS5pbnRlcm5hbC54bWwuSVhNTENhdGFsb2cjcmVzb2x2ZUVudGl0eUxvY2F0aW9uKGphdmEubGFuZy5TdHJpbmcsCi0gICAqICAgICAgamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgcmVzb2x2ZUVudGl0eUxvY2F0aW9uKFN0cmluZyBwdWJsaWNJZCwgU3RyaW5nIHN5c3RlbUlkKQotICB7Ci0gICAgU3RyaW5nIHJlc29sdmVkbG9jYXRpb24gPSBudWxsOwotICAgIC8vIEZpcnN0IHRyeSB0byByZXNvbHZlIHVzaW5nIHRoZSBleHQgY2F0YWxvZy4KLSAgICBJWE1MQ2F0YWxvZyBleHRjYXRhbG9nID0gZ2V0RXh0ZW5zaW9uQ2F0YWxvZ0luc3RhbmNlKCk7Ci0gICAgaWYgKGV4dGNhdGFsb2cgIT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXNvbHZlZGxvY2F0aW9uID0gZXh0Y2F0YWxvZy5yZXNvbHZlRW50aXR5TG9jYXRpb24ocHVibGljSWQsIHN5c3RlbUlkKTsKLSAgICB9Ci0gICAgaWYgKHJlc29sdmVkbG9jYXRpb24gPT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBpZiB0aGVyZSdzIG5vIHN5c3RlbSBpZCB1c2UgdGhlIHB1YmxpYyBpZAotICAgICAgaWYgKHN5c3RlbUlkID09IG51bGwgfHwgc3lzdGVtSWQuZXF1YWxzKCIiKSkKLSAgICAgIHsKLSAgICAgICAgc3lzdGVtSWQgPSBwdWJsaWNJZDsKLSAgICAgIH0KLSAgICAgIHJlc29sdmVkbG9jYXRpb24gPSAoU3RyaW5nKSBjYXRhbG9nLmdldChzeXN0ZW1JZCk7Ci0gICAgfQotICAgIHJldHVybiByZXNvbHZlZGxvY2F0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIEEgaGFuZGxlciB1c2VkIGluIHBhcnNpbmcgdG8gZ2V0IHRoZSB0YXJnZXROYW1lc3BhY2Ugc3RyaW5nIG9mIGEgc2NoZW1hLgotICAgKi8KLSAgcHJvdGVjdGVkIGNsYXNzIFNjaGVtYU5hbWVzcGFjZUhhbmRsZXIgZXh0ZW5kcyBEZWZhdWx0SGFuZGxlcgotICB7Ci0gICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEFSR0VUX05BTUVTUEFDRSA9ICJ0YXJnZXROYW1lc3BhY2UiOwotCi0gICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU0NIRU1BID0gInNjaGVtYSI7Ci0KLSAgICBwcml2YXRlIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSBudWxsOwotCi0gICAgLyoqCi0gICAgICogQHNlZSBvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciNzdGFydEVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywKLSAgICAgKiAgICAgIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIG9yZy54bWwuc2F4LkF0dHJpYnV0ZXMpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgc3RhcnRFbGVtZW50KFN0cmluZyB1cmksIFN0cmluZyBsb2NhbG5hbWUsIFN0cmluZyBhcmcyLCBBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpIHRocm93cyBTQVhFeGNlcHRpb24KLSAgICB7Ci0gICAgICBpZiAobG9jYWxuYW1lLmVxdWFscyhTQ0hFTUEpKQotICAgICAgewotCi0gICAgICAgIGludCBudW1BdHRzID0gYXR0cmlidXRlcy5nZXRMZW5ndGgoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCi0gICAgICAgIHsKLQotICAgICAgICAgIFN0cmluZyBhdHRuYW1lID0gYXR0cmlidXRlcy5nZXRRTmFtZShpKTsKLSAgICAgICAgICBpZiAoYXR0bmFtZS5lcXVhbHMoVEFSR0VUX05BTUVTUEFDRSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGFyZ2V0TmFtZXNwYWNlID0gYXR0cmlidXRlcy5nZXRWYWx1ZShpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgfQotICAgICAgc3VwZXIuc3RhcnRFbGVtZW50KHVyaSwgbG9jYWxuYW1lLCBhcmcyLCBhdHRyaWJ1dGVzKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm4gdGhlIHRhcmdldE5hbWVzcGFjZSBmb3VuZCBieSBwYXJzaW5nIHRoZSBmaWxlLgotICAgICAqIAotICAgICAqIEByZXR1cm4gVGhlIHRhcmdldE5hbWVzcGFjZSBmb3VuZCBieSBwYXJzaW5nIHRoZSBmaWxlLgotICAgICAqLwotICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGFyZ2V0TmFtZXNwYWNlKCkKLSAgICB7Ci0gICAgICByZXR1cm4gdGFyZ2V0TmFtZXNwYWNlOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgaGFuZGxlciBzbyBpdCBjYW4gYmUgcmV1c2VkLgotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkKLSAgICB7Ci0gICAgICB0YXJnZXROYW1lc3BhY2UgPSBudWxsOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9YTUxDYXRhbG9nRW50aXR5SG9sZGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL1hNTENhdGFsb2dFbnRpdHlIb2xkZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVmOTZkNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL1hNTENhdGFsb2dFbnRpdHlIb2xkZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbDsKLQotLyoqCi0gKiBBIGNvbnRhaW5lciB0byBob2xkIHRoZSBlbnRpdHkgaW5mb3JtYXRpb24gdW50aWwgYW4gWE1MIGNhdGFsb2cgaXMKLSAqIHRvIGJlIGluaXRpYWxpemVkLgotICovCi1wdWJsaWMgY2xhc3MgWE1MQ2F0YWxvZ0VudGl0eUhvbGRlcgotewotICBwcml2YXRlIFN0cmluZyBwdWJsaWNJZDsKLSAgcHJpdmF0ZSBTdHJpbmcgc3lzdGVtSWQ7Ci0gIAotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gcHVibGljSWQgVGhlIHB1YmxpYyBpZCBvZiB0aGUgZW50aXR5LgotICAgKiBAcGFyYW0gc3lzdGVtSWQgVGhlIHN5c3RlbSBpZCBvZiB0aGUgZW50aXR5LgotICAgKi8KLSAgcHVibGljIFhNTENhdGFsb2dFbnRpdHlIb2xkZXIoU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQpCi0gIHsKLSAgICB0aGlzLnB1YmxpY0lkID0gcHVibGljSWQ7Ci0gICAgdGhpcy5zeXN0ZW1JZCA9IHN5c3RlbUlkOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgcHVibGljIGlkIG9mIHRoZSBlbnRpdHkuCi0gICAqIEByZXR1cm4gVGhlIHB1YmxpYyBpZCBvZiB0aGUgZW50aXR5LgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRQdWJsaWNJZCgpCi0gIHsKLSAgICByZXR1cm4gcHVibGljSWQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzeXN0ZW0gaWQgb2YgdGhlIGVudGl0eS4KLSAgICogQHJldHVybiBUaGUgc3lzdGVtIGlkIG9mIHRoZSBlbnRpdHkuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFN5c3RlbUlkKCkKLSAgewotICAgIHJldHVybiBzeXN0ZW1JZDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9YTUxDYXRhbG9nUmVzb2x2ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvWE1MQ2F0YWxvZ1Jlc29sdmVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZDBlNjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9YTUxDYXRhbG9nUmVzb2x2ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbDsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MUmVzb3VyY2VJZGVudGlmaWVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFbnRpdHlSZXNvbHZlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTElucHV0U291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudXRpbC5MYXp5VVJMSW5wdXRTdHJlYW07Ci0KLS8qKgotICogQSByZXNvbHZlciB0byByZXNvbHZlciBlbnRpdGllcyBmcm9tIHRoZSBYTUwgY2F0YWxvZy4KLSAqLwotcHVibGljIGNsYXNzIFhNTENhdGFsb2dSZXNvbHZlciBpbXBsZW1lbnRzIFhNTEVudGl0eVJlc29sdmVyCi17Ci0gIHByb3RlY3RlZCBzdGF0aWMgWE1MQ2F0YWxvZ1Jlc29sdmVyIHhtbENhdGFsb2c7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKi8KLSAgcHJvdGVjdGVkIFhNTENhdGFsb2dSZXNvbHZlcigpCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIGluc3RhbmNlIG9mIHRoaXMgcmVzb2x2ZXIuCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSBpbnN0YW5jZSBvZiB0aGlzIHJlc29sdmVyCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFhNTENhdGFsb2dSZXNvbHZlciBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICBpZiAoeG1sQ2F0YWxvZyA9PSBudWxsKQotICAgIHsKLSAgICAgIHhtbENhdGFsb2cgPSBuZXcgWE1MQ2F0YWxvZ1Jlc29sdmVyKCk7Ci0gICAgfQotICAgIHJldHVybiB4bWxDYXRhbG9nOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIjcmVzb2x2ZUVudGl0eShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFhNTElucHV0U291cmNlIHJlc29sdmVFbnRpdHkoWE1MUmVzb3VyY2VJZGVudGlmaWVyIHJlc291cmNlSWRlbnRpZmllcikgdGhyb3dzIFhOSUV4Y2VwdGlvbiwgSU9FeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBwdWJsaWNJZCA9IHJlc291cmNlSWRlbnRpZmllci5nZXRQdWJsaWNJZCgpOwotICAgIGlmKHB1YmxpY0lkID09IG51bGwpCi0gICAgewotICAgICAgcHVibGljSWQgPSByZXNvdXJjZUlkZW50aWZpZXIuZ2V0TmFtZXNwYWNlKCk7Ci0gICAgfQotICAgIFN0cmluZyBzeXN0ZW1JZCA9IHJlc291cmNlSWRlbnRpZmllci5nZXRMaXRlcmFsU3lzdGVtSWQoKTsKLSAgICBTdHJpbmcgbG9jYXRpb24gPSBYTUxDYXRhbG9nLmdldEluc3RhbmNlKCkucmVzb2x2ZUVudGl0eUxvY2F0aW9uKHB1YmxpY0lkLCBzeXN0ZW1JZCk7Ci0gICAgaWYgKGxvY2F0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgTGF6eVVSTElucHV0U3RyZWFtIGlzID0gbmV3IExhenlVUkxJbnB1dFN0cmVhbShsb2NhdGlvbik7Ci0gICAgICBYTUxJbnB1dFNvdXJjZSBpbnB1dFNvdXJjZSA9IG5ldyBYTUxJbnB1dFNvdXJjZShwdWJsaWNJZCwgc3lzdGVtSWQsIHN5c3RlbUlkLCBpcywgbnVsbCk7Ci0gICAgICByZXR1cm4gaW5wdXRTb3VyY2U7Ci0gICAgfQotICAgIC8vIG90aGVyd2lzZSByZXR1cm4gbnVsbCB0byB0ZWxsIHRoZSBwYXJzZXIgdG8gbG9jYXRlIHRoZSBzeXN0ZW1JZCBhcyBhIFVSSQotICAgIHJldHVybiBudWxsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL1hNTE1lc3NhZ2VJbmZvSGVscGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL1hNTE1lc3NhZ2VJbmZvSGVscGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0M2FiODQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3htbC9YTUxNZXNzYWdlSW5mb0hlbHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnhtbDsKLQotcHVibGljIGNsYXNzIFhNTE1lc3NhZ2VJbmZvSGVscGVyCi17Ci0gIAotICAvL3NlZSBvcmcuZWNsaXBzZS53c3QueG1sLnVpLnJlY29uY2lsZS5EZWxlZ2F0aW5nU291cmNlVmFsaWRhdG9yCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEFMTF9BVFRSSUJVVEVTID0gIkFMTF9BVFRSSUJVVEVTIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUklCVVRFX05BTUUgPSJBVFRSSUJVVEVfTkFNRSI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJJQlVURV9WQUxVRSA9ICJBVFRSSUJVVEVfVkFMVUUiOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBTVEFSVF9UQUcgPSAiU1RBUlRfVEFHIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEVYVCA9ICJURVhUIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgRklSU1RfTk9OX1dISVRFU1BBQ0VfVEVYVCA9ICJGSVJTVF9OT05fV0hJVEVTUEFDRV9URVhUIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEVYVF9FTlRJVFlfUkVGRVJFTkNFID0gIlRFWFRfRU5USVRZX1JFRkVSRU5DRSI7IAotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBWQUxVRV9PRl9BVFRSSUJVVEVfV0lUSF9HSVZFTl9WQUxVRSA9ICJWQUxVRV9PRl9BVFRSSUJVVEVfV0lUSF9HSVZFTl9WQUxVRSI7Ci0gIAotICAKLSAgcHVibGljIFhNTE1lc3NhZ2VJbmZvSGVscGVyKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogIHJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IHNob3VsZCBiZSB1bmRlcmxpbmVkIHdpdGggdGhlIHJlZCAic3F1aWdnbGVzIgotICAgKiAgdXNpbmcgdGhlIGVycm9yS2V5LCBhbmQgdGhlIG1lc3NhZ2VBcmd1bWVudHMKLSAgICogIDxicj5Qb3NpdGlvbiAwIG9mIHRoZSBhcnJheSByZXR1cm5lZCBjb250YWlucyB0aGUgc2VsZWN0aW9uIFN0cmF0ZWd5LG9yIHdoYXQgRE9NIEVsZW1lbnQgdG8gdW5kZXJsaW5lLiAgCi0gICAqICBGb3IgZXhhbXBsZSAiQVRUUklCVVRFX05BTUUiICAKLSAgICogIDxicj5Qb3NpdGlvbiAxIGNvbnRhaW5zIHRoZSBuYW1lIG9yIHZhbHVlIHRvIHNxdWlnZ2xlLgotICAgKiAgPHA+Rm9yIGV4YW1wbGUsIGlmIHdlIHdhbnRlZCB0byBzcXVpZ2dsZSB0aGUgYXR0cmlidXRlIG5hbWUgb2YgYW4gYXR0cmlidXRlIG5hbWUKLSAgICogIGZvbyB0aGlzIG1ldGhvZCB3b3VsZCByZXR1cm4geyJBVFRSSUJVVEVfTkFNRSIsICJmb28ifQotICAgKiAgPC9wPgotICAgKiAgQHBhcmFtIGVycm9yS2V5IHRoZSBlcnJvciBrZXkgZ2l2ZW4gYnkgdGhlIFhlcmNlcyBwYXJzZXIKLSAgICogIEBwYXJhbSBtZXNzYWdlQXJndW1lbnRzIHRoZSBhcmd1bWVudHMgdXNlZCBieSBYZXJjZXMgdG8gImZpbGwgaW4gdGhlIGJsYW5rcyIgb2YgdGhlaXIgbWVzc2FnZXMKLSAgICogIEByZXR1cm4gYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3F1aWdnbGUgaW5mb3JtYXRpb24KLSAgICogIEBzZWUgb3JnLmVjbGlwc2Uud3N0LnhtbC51aS5yZWNvbmNpbGUuRGVsZWdhdGluZ1JlY29uY2lsZVZhbGlkYXRvcgotICAgKiAgCi0gICAqLwotICBwdWJsaWMgU3RyaW5nW10gY3JlYXRlTWVzc2FnZUluZm8oU3RyaW5nIGVycm9yS2V5LCBPYmplY3RbXSBtZXNzYWdlQXJndW1lbnRzKQotICB7IAotICAgIFN0cmluZyBzZWxlY3Rpb25TdHJhdGVneSA9IG51bGw7Ci0gICAgU3RyaW5nIG5hbWVPclZhbHVlID0gbnVsbDsKLQotICAgIC8vWE1MIEVycm9ycwotICAgIGlmIChlcnJvcktleS5lcXVhbHMoImN2Yy1jb21wbGV4LXR5cGUuMi40LmEiKSB8fCBlcnJvcktleS5lcXVhbHMoImN2Yy1jb21wbGV4LXR5cGUuMi40LmQiKSB8fCBlcnJvcktleS5lcXVhbHMoImN2Yy1jb21wbGV4LXR5cGUuMi40LmIiKSB8fCBlcnJvcktleS5lcXVhbHMoIk1TR19DT05URU5UX0lOVkFMSUQiKQotICAgICAgICB8IGVycm9yS2V5LmVxdWFscygiTVNHX0NPTlRFTlRfSU5DT01QTEVURSIpIHx8IGVycm9yS2V5LmVxdWFscygiTVNHX1JFUVVJUkVEX0FUVFJJQlVURV9OT1RfU1BFQ0lGSUVEIikgfHwgZXJyb3JLZXkuZXF1YWxzKCJjdmMtY29tcGxleC10eXBlLjQiKSkKLSAgICB7Ci0gICAgICBzZWxlY3Rpb25TdHJhdGVneSA9IFNUQVJUX1RBRzsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZXJyb3JLZXkuZXF1YWxzKCJjdmMtdHlwZS4zLjEuMyIpKQotICAgIHsKLSAgICAgIHNlbGVjdGlvblN0cmF0ZWd5ID0gVEVYVDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZXJyb3JLZXkuZXF1YWxzKCJjdmMtY29tcGxleC10eXBlLjIuMyIpKQotICAgIHsKLSAgICAJc2VsZWN0aW9uU3RyYXRlZ3kgPSBGSVJTVF9OT05fV0hJVEVTUEFDRV9URVhUOwotICAgIH0KLSAgICBlbHNlIGlmIChlcnJvcktleS5lcXVhbHMoImN2Yy10eXBlLjMuMS4xIikpCi0gICAgewotICAgICAgc2VsZWN0aW9uU3RyYXRlZ3kgPSBBTExfQVRUUklCVVRFUzsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZXJyb3JLZXkuZXF1YWxzKCJjdmMtY29tcGxleC10eXBlLjMuMi4yIikgfHwgZXJyb3JLZXkuZXF1YWxzKCJNU0dfQVRUUklCVVRFX05PVF9ERUNMQVJFRCIpKQotICAgIHsKLSAgICAgIHNlbGVjdGlvblN0cmF0ZWd5ID0gQVRUUklCVVRFX05BTUU7Ci0JICAvL2luIHRoaXMgY2FzZSB3ZSBuZWVkIG5hbWVPclZhbHVlIHRvIGJlIHRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gdW5kZXJsaW5lCi0JICBuYW1lT3JWYWx1ZSA9IChTdHJpbmcpbWVzc2FnZUFyZ3VtZW50c1sxXTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZXJyb3JLZXkuZXF1YWxzKCJjdmMtYXR0cmlidXRlLjMiKSB8fCBlcnJvcktleS5lcXVhbHMoIk1TR19BVFRSSUJVVEVfVkFMVUVfTk9UX0lOX0xJU1QiKSkKLSAgICB7CQotICAgIAlzZWxlY3Rpb25TdHJhdGVneSA9IEFUVFJJQlVURV9WQUxVRTsgIAotCQkvL2luIHRoaXMgY2FzZSB3ZSBuZWVkIG5hbWVPclZhbHVlIHRvIGJlIHRoZSBuYW1lIG9mIHRoZSBBdHRyaWJ1dGUKLSAgICAJaWYgKGVycm9yS2V5LmVxdWFscygiY3ZjLWF0dHJpYnV0ZS4zIikpCi0gICAgCXsgbmFtZU9yVmFsdWUgPSAoU3RyaW5nKW1lc3NhZ2VBcmd1bWVudHNbMV07Ci0gICAgCX0KLSAgICAJZWxzZSBpZiAoZXJyb3JLZXkuZXF1YWxzKCJNU0dfQVRUUklCVVRFX1ZBTFVFX05PVF9JTl9MSVNUIikpCi0gICAgCXsJbmFtZU9yVmFsdWUgPSAoU3RyaW5nKW1lc3NhZ2VBcmd1bWVudHNbMF07Ci0gICAgCX0KLSAgICB9Ci0gICAgZWxzZSBpZiAoZXJyb3JLZXkuZXF1YWxzKCJjdmMtZWx0LjQuMiIpKQotICAgIHsJc2VsZWN0aW9uU3RyYXRlZ3k9VkFMVUVfT0ZfQVRUUklCVVRFX1dJVEhfR0lWRU5fVkFMVUU7Ci0JCS8vaW4gdGhpcyBjYXNlIHdlIG5lZWQgbmFtZU9yVmFsdWUgdG8gYmUgdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgd2Ugd2FudCB0byB1bmVybGluZQotICAgIAluYW1lT3JWYWx1ZSA9IChTdHJpbmcpbWVzc2FnZUFyZ3VtZW50c1sxXTsJCi0gICAgfQotICAgIGVsc2UgaWYgKGVycm9yS2V5LmVxdWFscygiRW50aXR5Tm90RGVjbGFyZWQiKSkKLSAgICB7ICAJc2VsZWN0aW9uU3RyYXRlZ3k9VEVYVF9FTlRJVFlfUkVGRVJFTkNFOwotICAgIH0KLSAgICAKLSAgICAKLSAgICAvL1dTREwgRXJyb3JzCi0gICAgZWxzZSBpZiAoZXJyb3JLZXkuZXF1YWxzKCJfTUVTU0FHRV9VTkRFRklORURfRk9SX09VVFBVVCIpIHx8Ci0gICAgICAgICAgICAgICBlcnJvcktleS5lcXVhbHMoIl9NRVNTQUdFX1VOREVGSU5FRF9GT1JfSU5QVVQiKSB8fAotICAgICAgICAgICAgICAgZXJyb3JLZXkuZXF1YWxzKCJfTUVTU0FHRV9VTkRFRklORURfRk9SX0ZBVUxUIikpCi0gICAgewotICAgICAgc2VsZWN0aW9uU3RyYXRlZ3k9QVRUUklCVVRFX1ZBTFVFOwotICAgICAgbmFtZU9yVmFsdWU9ICJtZXNzYWdlIjsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZXJyb3JLZXkuZXF1YWxzKCJfUE9SVFRZUEVfVU5ERUZJTkVEX0ZPUl9CSU5ESU5HIikpCi0gICAgewotICAgICAgc2VsZWN0aW9uU3RyYXRlZ3k9QVRUUklCVVRFX1ZBTFVFOwotICAgICAgbmFtZU9yVmFsdWU9InR5cGUiOwotICAgIH0KLSAgICBlbHNlIGlmIChlcnJvcktleS5lcXVhbHMoIl9PUEVSQVRJT05fVU5ERUZJTkVEX0ZPUl9QT1JUVFlQRSIpKQotICAgIHsKLSAgICAgIHNlbGVjdGlvblN0cmF0ZWd5PUFUVFJJQlVURV9WQUxVRTsKLSAgICAgIG5hbWVPclZhbHVlPSJuYW1lIjsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZXJyb3JLZXkuZXF1YWxzKCJfUEFSVF9JTlZBTElEX0VMRU1FTlQiKSkKLSAgICB7Ci0gICAgICBzZWxlY3Rpb25TdHJhdGVneT1BVFRSSUJVVEVfVkFMVUU7Ci0gICAgICBuYW1lT3JWYWx1ZT0iZWxlbWVudCI7Ci0gICAgfQotICAgIGVsc2UgaWYgKGVycm9yS2V5LmVxdWFscygiX05PX0JJTkRJTkdfRk9SX1BPUlQiKSkKLSAgICB7Ci0gICAgICBzZWxlY3Rpb25TdHJhdGVneT1BVFRSSUJVVEVfVkFMVUU7Ci0gICAgICBuYW1lT3JWYWx1ZT0iYmluZGluZyI7Ci0gICAgfQotICAgIAotICAgIFN0cmluZyBtZXNzYWdlSW5mb1tdID0gbmV3IFN0cmluZ1syXTsKLSAgICBtZXNzYWdlSW5mb1swXSA9IHNlbGVjdGlvblN0cmF0ZWd5OwotICAgIG1lc3NhZ2VJbmZvWzFdID0gbmFtZU9yVmFsdWU7Ci0gICAgcmV0dXJuIG1lc3NhZ2VJbmZvOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL3ZhbGlkYXRld3NkbC5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy92YWxpZGF0ZXdzZGwucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJhY2EyZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL3ZhbGlkYXRld3NkbC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSEtLSBDb25zdGFudHMgZm9yIHN0cmluZ3MgIAotCi0hLS0gRXJyb3Igd2l0aCBkb2N1bWVudCBsb2NhdGlvbgotX0VSUk9SX0RPQ1VNRU5UX0xPQ0FUSU9OICAgICAgICAgICAgICAgICAgID0gVGhlIFdTREwgZG9jdW1lbnQgezB9IGNvdWxkIG5vdCBiZSByZWFkLgotIS0tIFdhcm5pbmcgTWVzc2FnZXMKLV9XQVJOX05PX1ZBTERJQVRPUiAgICAgICAgICAgICAgICAgICAgICAgICA9IFRoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgdmFsaWRhdG9yIGZvciB0aGUgbmFtZXNwYWNlIHswfS4KLQotX0VSUk9SX1BST0JMRU1fV1NETF9WQUxJREFUT1IgICAgICAgICAgICAgID0gQSBwcm9ibGVtIG9jY3VycmVkIHdoaWxlIHJ1bm5pbmcgdGhlIFdTREwgdmFsaWRhdG9yIGZvciBuYW1lc3BhY2UgezB9LgotX0VSUk9SX05PX1dTRExfVkFMSURBVE9SICAgICAgICAgICAgICAgICAgID0gVGhlIG5hbWVzcGFjZSB7MH0gc3BlY2lmaWVkIGlzIG5vdCBhIHZhbGlkIFdTREwgbmFtZXNwYWNlLgotX0VSUk9SX1BST0JMRU1fRVhUX1ZBTElEQVRPUiAgICAgICAgICAgICAgID0gQSBwcm9ibGVtIG9jY3VycmVkIHdoaWxlIHJ1bm5pbmcgdGhlIEV4dGVuc2lvbiB2YWxpZGF0b3IgezB9IGZvciBuYW1lc3BhY2UgezF9LgotCi0hLS0gU3RyaW5ncyBmb3IgV1NETCAxLjEgdmFsaWRhdG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi1fVU5BQkxFX1RPX0lNUE9SVF9CQURfTE9DQVRJT04gICAgICAgICAgICAgPSBUaGUgezB9IGRvY3VtZW50IGNvdWxkIG5vdCBiZSBpbXBvcnRlZC4gQ2hlY2sgdGhhdCB0aGUgZG9jdW1lbnQgZXhpc3RzIGFuZCB0aGF0IHRoZSBsb2NhdGlvbiBpcyBjb3JyZWN0LgotX1VOQUJMRV9UT19JTVBPUlRfTk9fTE9DQVRJT04gICAgICAgICAgICAgID0gVGhlIGxvY2F0aW9uIGF0dHJpYnV0ZSBpcyBlbXB0eS4gQSBsb2NhdGlvbiBtdXN0IGJlIHNwZWNpZmllZCBmb3IgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KLV9VTkFCTEVfVE9fSU1QT1JUX0lOVkFMSUQgICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gZG9jdW1lbnQgY291bGQgbm90IGJlIGltcG9ydGVkIGJlY2F1c2UgaXQgaXMgbm90IHZhbGlkLiBUaGUgZG9jdW1lbnQgbXVzdCBiZSBjb3JyZWN0ZWQgYmVmb3JlIGl0IGNhbiBiZSBpbXBvcnRlZC4KLV9OT19CSU5ESU5HX0ZPUl9QT1JUICAgICAgICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gcG9ydCBoYXMgYW4gaW52YWxpZCBiaW5kaW5nIC0gezF9LiBDaGVjayB0aGF0IHRoZSB7MX0gYmluZGluZyBpcyBkZWZpbmVkLgotX1BPUlRUWVBFX1VOREVGSU5FRF9GT1JfQklORElORyAgICAgICAgICAgID0gVGhlIHswfSBwb3J0IHR5cGUgc3BlY2lmaWVkIGZvciB0aGUgezF9IGJpbmRpbmcgaXMgdW5kZWZpbmVkLiBDaGVjayB0aGUgezB9IHBvcnQgdHlwZSBuYW1lIGFuZCBlbnN1cmUgaXQgaXMgZGVmaW5lZC4KLV9PUEVSQVRJT05fVU5ERUZJTkVEX0ZPUl9QT1JUVFlQRSAgICAgICAgICA9IFRoZSBvcGVyYXRpb24gc3BlY2lmaWVkIGZvciB0aGUgezB9IGJpbmRpbmcgaXMgbm90IGRlZmluZWQgZm9yIHBvcnQgdHlwZSB7MX0uIEFsbCBvcGVyYXRpb25zIHNwZWNpZmllZCBpbiB0aGlzIGJpbmRpbmcgbXVzdCBiZSBkZWZpbmVkIGluIHBvcnQgdHlwZSB7MX0uCi1fSU5QVVRfTkFNRV9OT1RfVU5JUVVFICAgICAgICAgICAgICAgICAgICAgPSBUaGUgbmFtZSB7MH0gc3BlY2lmaWVkIGZvciB0aGlzIGlucHV0IGVsZW1lbnQgaXMgbm90IHVuaXF1ZS4gVGhlIG5hbWUgb2YgYW4gaW5wdXQgZWxlbWVudCBtdXN0IGJlIHVuaXF1ZSBmcm9tIHRoZSBuYW1lcyBvZiBhbGwgb3RoZXIgaW5wdXQgYW5kIG91dHB1dCBlbGVtZW50cyBkZWZpbmVkIGluIHRoZSB7MX0gcG9ydCB0eXBlLgotX09VVFBVVF9OQU1FX05PVF9VTklRVUUgICAgICAgICAgICAgICAgICAgID0gVGhlIG5hbWUgezB9IHNwZWNpZmllZCBmb3IgdGhpcyBvdXRwdXQgZWxlbWVudCBpcyBub3QgdW5pcXVlLiBUaGUgbmFtZSBvZiBhbiBvdXRwdXQgZWxlbWVudCBtdXN0IGJlIHVuaXF1ZSBmcm9tIHRoZSBuYW1lcyBvZiBhbGwgb3RoZXIgaW5wdXRzIGFuZCBvdXRwdXQgZWxlbWVudHMgZGVmaW5lZCBpbiB0aGUgezF9IHBvcnQgdHlwZS4KLV9NRVNTQUdFX1VOREVGSU5FRF9GT1JfSU5QVVQgICAgICAgICAgICAgICA9IFRoZSBpbnB1dCBlbGVtZW50IGlzIHJlZmVyZW5jaW5nIGFuIHVuZGVmaW5lZCBtZXNzYWdlIHswfS4gQ2hlY2sgdGhhdCB0aGUgbWVzc2FnZSBuYW1lIGFuZCBuYW1lc3BhY2UgYXJlIGNvcnJlY3QgYW5kIHRoYXQgdGhlIG1lc3NhZ2UgaGFzIGJlZW4gZGVmaW5lZC4KLV9NRVNTQUdFX1VOREVGSU5FRF9GT1JfT1VUUFVUICAgICAgICAgICAgICA9IFRoZSBvdXRwdXQgZWxlbWVudCBpcyByZWZlcmVuY2luZyBhbiB1bmRlZmluZWQgbWVzc2FnZSB7MH0uIENoZWNrIHRoYXQgdGhlIG1lc3NhZ2UgbmFtZSBhbmQgbmFtZXNwYWNlIGFyZSBjb3JyZWN0IGFuZCB0aGF0IHRoZSBtZXNzYWdlIGhhcyBiZWVuIGRlZmluZWQuCi1fTUVTU0FHRV9VTkRFRklORURfRk9SX0ZBVUxUICAgICAgICAgICAgICAgPSBUaGUgZmF1bHQgZWxlbWVudCBpcyByZWZlcmVuY2luZyBhbiB1bmRlZmluZWQgbWVzc2FnZSB7MH0uIENoZWNrIHRoYXQgdGhlIG1lc3NhZ2UgbmFtZSBhbmQgbmFtZXNwYWNlIGFyZSBjb3JyZWN0IGFuZCB0aGF0IHRoZSBtZXNzYWdlIGhhcyBiZWVuIGRlZmluZWQuCi1fRFVQTElDQVRFX0ZBVUxUX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBBIGZhdWx0IHdpdGggdGhlIG5hbWUgezB9IGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBmb3IgdGhlIHsxfSAwcGVyYXRpb24uIENoZWNrIHRoYXQgZXZlcnkgZmF1bHQgZGVmaW5lZCBmb3IgdGhpcyBvcGVyYXRpb24gaGFzIGEgdW5pcXVlIG5hbWUuCi1fUEFSVF9OT19FTEVNRU5UX09SX1RZUEUgICAgICAgICAgICAgICAgICAgPSBUaGUgcGFydCB7MH0gZG9lcyBub3QgaGF2ZSBhIHR5cGUgZGVmaW5lZC4gRXZlcnkgcGFydCBtdXN0IHNwZWNpZnkgYSB0eXBlIGZyb20gc29tZSB0eXBlIHN5c3RlbS4gVGhlIHR5cGUgY2FuIGJlIHNwZWNpZmllZCB1c2luZyB0aGUgYnVpbHQgaW4gImVsZW1lbnQiIG9yICJ0eXBlIiBhdHRyaWJ1dGVzIG9yIG1heSBiZSBzcGVjaWZpZWQgdXNpbmcgYW4gZXh0ZW5zaW9uIGF0dHJpYnV0ZS4KLV9QQVJUX0JPVEhfRUxFTUVOVF9BTkRfVFlQRSAgICAgICAgICAgICAgICA9IFRoZSBwYXJ0IHswfSBoYXMgYm90aCBhbiBlbGVtZW50IGFuZCBhIHR5cGUgZGVmaW5lZC4gRXZlcnkgcGFydCBtdXN0IG9ubHkgaGF2ZSBhbiBlbGVtZW50IG9yIGEgdHlwZSBkZWZpbmVkLgotX1BBUlRfSU5WQUxJRF9FTEVNRU5UICAgICAgICAgICAgICAgICAgICAgID0gVGhlIHBhcnQgezB9IGhhcyBhbiBpbnZhbGlkIHZhbHVlIHsxfSBkZWZpbmVkIGZvciBpdHMgZWxlbWVudC4gRWxlbWVudCBkZWNsYXJhdGlvbnMgbXVzdCByZWZlciB0byB2YWxpZCB2YWx1ZXMgZGVmaW5lZCBpbiBhIHNjaGVtYS4KLV9QQVJUX0lOVkFMSURfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgICA9IFRoZSBwYXJ0IHswfSBoYXMgYW4gaW52YWxpZCB2YWx1ZSB7MX0gZGVmaW5lZCBmb3IgaXRzIHR5cGUuIFR5cGUgZGVjbGFyYXRpb25zIG11c3QgcmVmZXIgdG8gdmFsaWQgdmFsdWVzIGRlZmluZWQgaW4gYSBzY2hlbWEuCi1fRFVQTElDQVRFX09QRVJBVElPTl9GT1JfUE9SVFRZUEUgICAgICAgICAgPSBBbiBvcGVyYXRpb24gd2l0aCB0aGUgbmFtZSB7MH0gaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGZvciB0aGUgezF9IHBvcnQgdHlwZS4gRXZlcnkgb3BlcmF0aW9uIGRlZmluZWQgZm9yIGEgcG9ydCB0eXBlIG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lLiAKLV9TRVJWSUNFX05BTUVfQUxSRUFEWV9ERUZJTkVEICAgICAgICAgICAgICA9IEEgU2VydmljZSB3aXRoIHRoZSBuYW1lIHswfSBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQuIEV2ZXJ5IHNlcnZpY2UgaW4gdGhlIFdTREwgZG9jdW1lbnQgbXVzdCBoYXZlIGEgdW5pcXVlIG5hbWUuCi1fQklORElOR19OQU1FX0FMUkVBRFlfREVGSU5FRCAgICAgICAgICAgICAgPSBBIGJpbmRpbmcgd2l0aCB0aGUgbmFtZSB7MH0gaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkLiBFdmVyeSBiaW5kaW5nIGluIHRoZSBXU0RMIGRvY3VtZW50IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lLgotX01FU1NBR0VfTkFNRV9BTFJFQURZX0RFRklORUQgICAgICAgICAgICAgID0gQSBtZXNzYWdlIHdpdGggdGhlIG5hbWUgezB9IGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZC4gRXZlcnkgbWVzc2FnZSBpbiB0aGUgV1NETCBkb2N1bWVudCBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4KLV9QT1JUVFlQRV9OQU1FX0FMUkVBRFlfREVGSU5FRCAgICAgICAgICAgICA9IEEgcG9ydCB0eXBlIHdpdGggdGhlIG5hbWUgezB9IGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZC4gRXZlcnkgcG9ydCB0eXBlIGluIHRoZSBXU0RMIGRvY3VtZW50IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lLgotX01PUkVfVEhFTl9PTkVfQUREUkVTU19QT1JUICAgICAgICAgICAgICAgID0gQW4gYWRkcmVzcyBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgZm9yIHBvcnQgezB9LiBFYWNoIHBvcnQgY2FuIGhhdmUgb25seSBvbmUgYWRkcmVzcyBkZWZpbmVkLgotX05PX0FERFJFU1NfUE9SVCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVGhlIHBvcnQgezB9IGhhcyBubyBhZGRyZXNzIGRlZmluZWQuIEVhY2ggcG9ydCBtdXN0IGRlZmluZSBvbmUgYWRkcmVzcy4KLV9QT1JUX05BTUVfTk9UX1VOSVFVRSAgICAgICAgICAgICAgICAgICAgICA9IEEgcG9ydCB3aXRoIHRoZSBuYW1lIHswfSBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQuIEV2ZXJ5IHBvcnQgaW4gdGhlIFdTREwgZG9jdW1lbnQgbXVzdCBoYXZlIGEgdW5pcXVlIG5hbWUuCi1fT1BFUkFUSU9OX05PX0lOUFVUX09SX09VVFBVVCAgICAgICAgICAgICAgPSBObyBpbnB1dCBvciBvdXRwdXQgZWxlbWVudCBoYXMgYmVlbiBkZWZpbmVkIGZvciB0aGUgezB9IG9wZXJhdGlvbi4gQW4gaW5wdXQgZWxlbWVudCwgYW4gb3V0cHV0IGVsZW1lbnQsIG9yIGJvdGggbXVzdCBiZSBkZWZpbmVkIGZvciBldmVyeSBvcGVyYXRpb24uCi1fV0FSTl9TT0FQRU5DX0lNUE9SVEVEX1BBUlQgICAgICAgICAgICAgICAgPSBUaGUgcGFydCB7MH0gdXNlcyBhbiBlbGVtZW50IG9yIHR5cGUgZnJvbSB0aGUgU09BUCBlbmNvZGluZyBuYW1lc3BhY2UgYnV0IHRoZSBuYW1lc3BhY2UgaGFzIG5vdCBiZWVuIGltcG9ydGVkLiBUaGUgU09BUCBlbmNvZGluZyBuYW1lc3BhY2Ugc2hvdWxkIGJlIGltcG9ydGVkIHdpdGggYW4gaW1wb3J0IHN0YXRlbWVudCBiZWZvcmUgaXQgaXMgdXNlZC4KLV9XQVJOX1NPQVBFTkNfSU1QT1JURURfU0NIRU1BICAgICAgICAgICAgICA9IFRoZSBpbmxpbmUgc2NoZW1hIHVzZXMgYW4gZWxlbWVudCBvciB0eXBlIGZyb20gdGhlIFNPQVAgZW5jb2RpbmcgbmFtZXNwYWNlIGJ1dCB0aGUgbmFtZXNwYWNlIGhhcyBub3QgYmVlbiBpbXBvcnRlZC4gVGhlIFNPQVAgZW5jb2RpbmcgbmFtZXNwYWNlIHNob3VsZCBiZSBpbXBvcnRlZCB3aXRoIGFuIGltcG9ydCBzdGF0ZW1lbnQgYmVmb3JlIGl0IGlzIHVzZWQuCi1fUkVGRVJFTkNFRF9GSUxFX0NPTlRBSU5TX0VSUk9SUyAgICAgICAgICAgPSBSZWZlcmVuY2VkIGZpbGUgY29udGFpbnMgZXJyb3JzICh7MH0pLgotX1dBUk5fT0xEX1NDSEVNQV9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgID0gQW4gb2xkIHZlcnNpb24gb2YgdGhlIHNjaGVtYSBuYW1lc3BhY2UgaGFzIGJlZW4gc3BlY2lmaWVkLiB7MH0gaXMgdGhlIHNjaGVtYSBuYW1lc3BhY2UgdGhhdCBzaG91bGQgYmUgdXNlZC4KLV9FUlJPUl9NVUxUSVBMRV9UWVBFU19ERUZJTkVEICAgICAgICAgICAgICA9IEEgdHlwZXMgc2VjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQuIE9ubHkgb25lIHR5cGVzIGVsZW1lbnQgaXMgYWxsb3dlZC4KLV9XQVJOX1dST05HX05TX09OX0lNUE9SVCAgICAgICAgICAgICAgICAgICA9IFRoZSBmaWxlIGNhbm5vdCBiZSBpbXBvcnRlZCBiZWNhdXNlIHRoZSBuYW1lc3BhY2UgezB9IGRvZXMgbm90IG1hdGNoIHRoZSB0YXJnZXQgbmFtZXNwYWNlIHsxfSBvZiB0aGUgaW1wb3J0ZWQgZG9jdW1lbnQuCi0hLS0gUmVmZXJlbmNlZCBmaWxlIGVycm9yCi0hLS0gTm90ZSB0byB0cmFuc2xhdG9yIC0gX1JFRl9GSUxFX0VSUk9SX01FU1NBR0UgbmVlZHMgYSB0cmFpbGluZyBzcGFjZSBhcyBhbm90aGVyIG1lc3NhZ2UgbWF5IGZvbGxvdy4KLV9SRUZfRklMRV9FUlJPUl9NRVNTQUdFICAgICAgICAgID0gUmVmZXJlbmNlZCBmaWxlIGNvbnRhaW5zIGVycm9ycyAoezB9KS4gCi0KLQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy92YWxpZGF0ZXdzZGxodHRwLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL3ZhbGlkYXRld3NkbGh0dHAucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M5MzkwYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL3ZhbGlkYXRld3NkbGh0dHAucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLV9FUlJPUl9OT19MT0NBVElPTl9GT1JfQUREUkVTUyAgICAgICAgICAgICAgICAgICA9IE5vIGxvY2F0aW9uIGhhcyBiZWVuIHNwZWNpZmllZCBmb3IgdGhpcyBhZGRyZXNzLiBFdmVyeSBhZGRyZXNzIG11c3QgaGF2ZSBhIHZhbGlkIGxvY2F0aW9uIHNwZWNpZmllZC4KLV9FUlJPUl9JTlZBTElEX1BPUlRfRUxFTUVOVCAgICAgICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gZWxlbWVudCBkZWZpbmVkIGhlcmUgaXMgdW5kZWZpbmVkIGZvciB0aGUgSFRUUCBuYW1lc3BhY2UuIFRoZSBvbmx5IHZhbGlkIGVsZW1lbnQgaXMgImFkZHJlc3MiLgotX0VSUk9SX0lOVkFMSURfQklORElOR19FTEVNRU5UICAgICAgICAgICAgICAgICAgID0gVGhlIHswfSBlbGVtZW50IGRlZmluZWQgaGVyZSBpcyB1bmRlZmluZWQgZm9yIHRoZSBIVFRQIG5hbWVzcGFjZS4gVGhlIG9ubHkgdmFsaWQgZWxlbWVudCBpcyAiYmluZGluZyIuCi1fRVJST1JfSU5WQUxJRF9CSU5ESU5HX09QRVJBVElPTl9FTEVNRU5UICAgICAgICAgPSBUaGUgezB9IGVsZW1lbnQgZGVmaW5lZCBoZXJlIGlzIHVuZGVmaW5lZCBmb3IgdGhlIEhUVFAgbmFtZXNwYWNlLiBUaGUgb25seSB2YWxpZCBlbGVtZW50IGlzICJvcGVyYXRpb24iLgotX0VSUk9SX0lOVkFMSURfQklORElOR19JTlBVVF9FTEVNRU5UICAgICAgICAgICAgID0gVGhlIHswfSBlbGVtZW50IGRlZmluZWQgaGVyZSBpcyB1bmRlZmluZWQgZm9yIHRoZSBIVFRQIG5hbWVzcGFjZS4gVGhlIG9ubHkgdmFsaWQgZWxlbWVudHMgYXJlICJ1cmxSZXBsYWNlbWVudCIgYW5kICJ1cmxFbmNvZGVkIi4KLV9FUlJPUl9JTlZBTElEX0hUVFBfRUxFTUVOVF9GT1JfTE9DQVRJT04gICAgICAgICA9IFRoZSB7MH0gZWxlbWVudCBjYW5ub3QgYmUgc3BlY2lmaWVkIGhlcmUuIFRoaXMgZWxlbWVudCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgSFRUUCBuYW1lc3BhY2UgZm9yIHVzZSBhdCB0aGlzIHBvaW50LgotX0VSUk9SX05PX0hUVFBCSU5ESU5HX0ZPUl9BRERSRVNTICAgICAgICAgICAgICAgID0gQW4gSFRUUCBhZGRyZXNzIGNhbm5vdCBiZSBzcGVjaWZpZWQgaGVyZSBhcyB0aGUgezB9IGJpbmRpbmcgdGhhdCB0aGUgezF9IHBvcnQgcmVmZXJzIHRvIGRvZXMgbm90IGhhdmUgYW4gSFRUUCBiaW5kaW5nIGVsZW1lbnQgZGVmaW5lZC4gVGhlcmUgbXVzdCBiZSBhbiBIVFRQIGJpbmRpbmcgZWxlbWVudCBkZWZpbmVkIGluIG9yZGVyIHRvIHNwZWNpZnkgYW4gSFRUUCBhZGRyZXNzIGZvciBhIGJpbmRpbmcuCi1fRVJST1JfSU5WQUxJRF9CSU5ESU5HX1ZFUkIgICAgICAgICAgICAgICAgICAgICAgPSBUaGUgezB9IHZlcmIgZGVmaW5lZCBmb3IgdGhlIEhUVFAgYmluZGluZyBpcyBpbnZhbGlkLiBUaGUgSFRUUCBiaW5kaW5nIHZlcmIgbXVzdCBiZSAiR0VUIiBvciAiUE9TVCIgYW5kIGlzIGNhc2Ugc2Vuc2l0aXZlLgotX0VSUk9SX0lOVkFMSURfTE9DQVRJT05fVVJJICAgICAgICAgICAgICAgICAgICAgID0gVGhlIGxvY2F0aW9uIFVSSSBpcyBpbnZhbGlkIGZvciB0aGUgSFRUUCBvcGVyYXRpb24uIFlvdSBtdXN0IHNwZWNpZnkgYSB2YWxpZCBsb2NhdGlvbiBVUkkgZm9yIGV2ZXJ5IEhUVFAgT3BlcmF0aW9uLgotX0VSUk9SX05PX0hUVFBCSU5ESU5HX0ZPUl9PUEVSQVRJT04gICAgICAgICAgICAgID0gVGhlIHswfSBiaW5kaW5nIHRoYXQgdGhlIEhUVFAgb3BlcmF0aW9uIGlzIHNwZWNpZmllZCBmb3IgZG9lcyBub3QgaGF2ZSBhbiBIVFRQIGJpbmRpbmcgZGVmaW5lZC4gQW4gSFRUUCBiaW5kaW5nIG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byBkZWZpbmUgYW4gSFRUUCBvcGVyYXRpb24gaGVyZS4KLV9FUlJPUl9OT19IVFRQT1BFUkFUSU9OX0ZPUl9VUkwgICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gb3BlcmF0aW9uIHRoYXQgdGhlIHsxfSBIVFRQIGVsZW1lbnQgaXMgc3BlY2lmaWVkIGZvciBkb2VzIG5vdCBoYXZlIGFuIEhUVFAgb3BlcmF0aW9uIGRlZmluZWQuIEEgSFRUUCBvcGVyYXRpb24gbXVzdCBiZSBkZWZpbmVkIGluIG9yZGVyIHRvIGRlZmluZSBhIHsxfSBIVFRQIGVsZW1lbnQgaGVyZS4KLV9FUlJPUl9OT1RfT05MWV9FTEVNRU5UX0RFRklORUQgICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gSFRUUCBlbGVtZW50IGRlZmluZWQgaXMgbm90IHRoZSBvbmx5IGVsZW1lbnQgZGVmaW5lZCBmb3IgdGhlIGlucHV0IGVsZW1lbnQuIFdoZW4gezB9IGlzIGRlZmluZWQgaXQgbXVzdCBiZSB0aGUgb25seSBjaGlsZCBlbGVtZW50IGRlZmluZWQgZm9yIHRoZSBpbnB1dCBlbGVtZW50LgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy92YWxpZGF0ZXdzZGxtaW1lLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL3ZhbGlkYXRld3NkbG1pbWUucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMzZTdiZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL3ZhbGlkYXRld3NkbG1pbWUucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy92YWxpZGF0ZXdzZGxzb2FwLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL3ZhbGlkYXRld3NkbHNvYXAucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FmMDNkNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24vc3JjL3ZhbGlkYXRld3NkbHNvYXAucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotX0VSUk9SX05PX0xPQ0FUSU9OX0ZPUl9BRERSRVNTICAgICAgICAgICAgICAgICAgID0gTm8gbG9jYXRpb24gaGFzIGJlZW4gc3BlY2lmaWVkIGZvciB0aGlzIGFkZHJlc3MuIEV2ZXJ5IGFkZHJlc3MgbXVzdCBoYXZlIGEgdmFsaWQgbG9jYXRpb24gc3BlY2lmaWVkLgotX0VSUk9SX0lOVkFMSURfUE9SVF9FTEVNRU5UICAgICAgICAgICAgICAgICAgICAgID0gVGhlICB7MH0gZWxlbWVudCBkZWZpbmVkIGhlcmUgaXMgdW5kZWZpbmVkIGZvciB0aGUgU09BUCBuYW1lc3BhY2UuIFRoZSBvbmx5IHZhbGlkIGVsZW1lbnQgaXMgImFkZHJlc3MiLgotX0VSUk9SX0lOVkFMSURfQklORElOR19TVFlMRSAgICAgICAgICAgICAgICAgICAgID0gVGhlIHswfSBzdHlsZSBkZWZpbmVkIGZvciB0aGUgU09BUCBiaW5kaW5nIGluIGludmFsaWQuIFRoZSBTT0FQIGJpbmRpbmcgc3R5bGUgbXVzdCBiZSAicnBjIiBvciAiZG9jdW1lbnQiLgotX0VSUk9SX0lOVkFMSURfQklORElOR19VUkkgICAgICAgICAgICAgICAgICAgICAgID0gVGhlIHRyYW5zcG9ydCBVUkkgaGFzIG5vdCBiZWVuIGRlZmluZWQgZm9yIHRoZSBTT0FQIGJpbmRpbmcuIFlvdSBtdXN0IHNwZWNpZnkgYSB0cmFuc3BvcnQgVVJJIGZvciBldmVyeSBTT0FQIGJpbmRpbmcuCi1fRVJST1JfSU5WQUxJRF9PUEVSQVRJT05fU1RZTEUgICAgICAgICAgICAgICAgICAgPSBUaGUgc3R5bGUgc3BlY2lmaWVkIGZvciB0aGUgU09BUCBvcGVyYXRpb24gaXMgaW52YWxpZC4gVGhlIFNPQVAgb3BlcmF0aW9uIHN0eWxlIG11c3QgYmUgInJwYyIgb3IgImRvY3VtZW50Ii4KLV9FUlJPUl9JTlZBTElEX0JJTkRJTkdfRUxFTUVOVCAgICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gZWxlbWVudCBkZWZpbmVkIGhlcmUgaXMgdW5kZWZpbmVkIGZvciB0aGUgU09BUCBuYW1lc3BhY2UuIFRoZSBvbmx5IHZhbGlkIGVsZW1lbnQgaXMgImJpbmRpbmciLgotX0VSUk9SX0lOVkFMSURfQklORElOR19PUEVSQVRJT05fRUxFTUVOVCAgICAgICAgID0gVGhlIHswfSBlbGVtZW50IGRlZmluZWQgaGVyZSBpcyB1bmRlZmluZWQgZm9yIHRoZSBTT0FQIG5hbWVzcGFjZS4gVGhlIG9ubHkgdmFsaWQgZWxlbWVudCBpcyAib3BlcmF0aW9uIi4KLV9FUlJPUl9JTlZBTElEX0hFQURFUl9CT0RZX0VMRU1FTlQgICAgICAgICAgICAgICA9IFRoZSB7MH0gZWxlbWVudCBkZWZpbmVkIGhlcmUgaXMgdW5kZWZpbmVkIGZvciB0aGUgU09BUCBuYW1lc3BhY2UuIFRoZSBvbmx5IHZhbGlkIGVsZW1lbnRzIGFyZSAiYm9keSIsICJoZWFkZXIiIGFuZCAiaGVhZGVyZmF1bHQiLgotX0VSUk9SX0lOVkFMSURfRkFVTFRfRUxFTUVOVCAgICAgICAgICAgICAgICAgICAgID0gVGhlIHswfSBlbGVtZW50IGRlZmluZWQgaGVyZSBpcyB1bmRlZmluZWQgZm9yIHRoZSBTT0FQIG5hbWVzcGFjZS4gVGhlIG9ubHkgdmFsaWQgZWxlbWVudCBpcyAiZmF1bHQiLgotCi0hLS0gQSBTT0FQIGJvZHkgZWxlbWVudCBpbiBhIFdTREwgZG9jdW1lbnQgY2FuIGhhdmUgYW4gYXR0cmlidXRlICJ1c2UiIGRlZmluZWQgdG8gYmUgZWl0aGVyIGxpdGVyYWwgb3IgZW5jb2RlZC4gLS0KLSEtLSBUaGlzIHN0cmluZyBpcyB1c2VkIGluIGFuIGVycm9yIHRhc2sgaW4gV1NBRCBpZiB0aGUgZG9jdW1lbnQgc3BlY2lmaWVzIGEgdXNlIG90aGVyIHRoZW4gbGl0ZXJhbCBvciBlbmNvZGVkLiAtLSAKLSEtLSBGb3IgZXhhbXBsZSwgaWYgdGhlIGRvY3VtZW50IHNwZWNpZmllcyB0aGUgdXNlIG9mIHRoZSBTT0FQIGJvZHkgYXMgInNpbXBsZSIgdGhlIG91dHB1dCBzdHJpbmcgc2hvdWxkIGJlOiAgICAtLQotIS0tIFRoZSAnc2ltcGxlJyB1c2Ugc3BlY2lmaWVkIGZvciB0aGUgU09BUCBib2R5IGlzIGludmFsaWQuIFRoZSB1c2UgbXVzdCBiZSBsaXRlcmFsIG9yIGVuY29kZWQuICAgICAgICAgICAgICAgIC0tCi1fRVJST1JfSU5WQUxJRF9CT0RZX1VTRSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBUaGUgezB9IHVzZSBzcGVjaWZpZWQgZm9yIHRoZSBTT0FQIGJvZHkgaXMgaW52YWxpZC4gVGhlIHVzZSBtdXN0IGJlIGxpdGVyYWwgb3IgZW5jb2RlZC4KLV9FUlJPUl9JTlZBTElEX0JPRFlfRU5DT0RJTkdfU1RZTEUgICAgICAgICAgICAgICA9IFRoZXJlIGlzIG5vIGVuY29kaW5nIHN0eWxlIFVSSSBkZWZpbmVkIGZvciB0aGUgU09BUCBib2R5LiBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBVUkkgZm9yIHRoZSBlbmNvZGluZyBzdHlsZSB3aGVuIHRoZSB1c2UgaXMgZW5jb2RlZC4KLV9FUlJPUl9JTlZBTElEX0JPRFlfUEFSVF9VTkRFRklORUQgICAgICAgICAgICAgICA9IFRoZSB7MH0gcGFydCBzcGVjaWZpZWQgYXMgYSBwYXJ0IGZvciB0aGUgU09BUCBib2R5IGlzIHVuZGVmaW5lZC4gIFlvdSBjYW4gb25seSBzcGVjaWZ5IGRlZmluZWQgcGFydHMuCi1fRVJST1JfSU5WQUxJRF9CT0RZX1BBUlRfTk9UX1RZUEUgICAgICAgICAgICAgICAgPSBUaGUgezB9IHBhcnQgZG9lcyBub3QgaGF2ZSBhIHR5cGUgZGVmaW5lZCBhbmQgaGFzIGJlZW4gc3BlY2lmaWVkIGZvciBhIFNPQVAgYm9keSB3aXRoIGl0cyB1c2UgZW5jb2RlZC4gV2hlbiB1c2UgaXMgZW5jb2RlZCBvbiBhIFNPQVAgYm9keSwgYWxsIHBhcnRzIGRlZmluZWQgbXVzdCBvbmx5IGNvbnRhaW4gYSB2YWxpZCB0eXBlLgotX0VSUk9SX0lOVkFMSURfU09BUF9FTEVNRU5UX0ZPUl9MT0NBVElPTiAgICAgICAgID0gVGhlIHswfSBlbGVtZW50IGNhbm5vdCBiZSBzcGVjaWZpZWQgaGVyZS4gVGhpcyBlbGVtZW50IGlzIG5vdCBkZWZpbmVkIGluIHRoZSBTT0FQIG5hbWVzcGFjZSBmb3IgdXNlIGF0IHRoaXMgcG9pbnQuCi1fRVJST1JfTk9fU09BUEJJTkRJTkdfRk9SX0FERFJFU1MgICAgICAgICAgICAgICAgPSBBIFNPQVAgYWRkcmVzcyBjYW5ub3QgYmUgc3BlY2lmaWVkIGhlcmUgYXMgdGhlIHswfSBiaW5kaW5nIHRoYXQgdGhlIHsxfSBwb3J0IHJlZmVycyB0byBkb2VzIG5vdCBoYXZlIGEgU09BUCBiaW5kaW5nIGVsZW1lbnQgZGVmaW5lZC4gVGhlcmUgbXVzdCBiZSBhIFNPQVAgYmluZGluZyBlbGVtZW50IGRlZmluZWQgaW4gb3JkZXIgdG8gc3BlY2lmeSBhIFNPQVAgYWRkcmVzcyBmb3IgYSBiaW5kaW5nLgotX0VSUk9SX0hFQURFUl9NRVNTQUdFX1VOREVGSU5FRCAgICAgICAgICAgICAgICAgID0gVGhlIHswfSBtZXNzYWdlIHNwZWNpZmllZCBmb3IgdGhlIFNPQVAgaGVhZGVyIGlzIHVuZGVmaW5lZC4gVGhlIG1lc3NhZ2Ugc3BlY2lmaWVkIG11c3QgYmUgZGVmaW5lZCBpbiB0aGUgV1NETCBkb2N1bWVudC4KLV9FUlJPUl9IRUFERVJfUEFSVF9VTkRFRklORUQgICAgICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gcGFydCBzcGVjaWZpZWQgaW4gbWVzc2FnZSB7MX0gZm9yIHRoZSBTT0FQIGhlYWRlciBpcyB1bmRlZmluZWQuIEVuc3VyZSB0aGUgcGFydCBpcyBkZWZpbmVkIGluIHRoZSB7MX0gbWVzc2FnZS4KLV9FUlJPUl9IRUFERVJfVVNFX1VOREVGSU5FRCAgICAgICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gdXNlIHNwZWNpZmllZCBmb3IgdGhlIFNPQVAgaGVhZGVyIGlzIGludmFsaWQuIFRoZSB1c2UgbXVzdCBiZSBzcGVjaWZpZWQgYXMgbGl0ZXJhbCBvciBlbmNvZGVkLgotX0VSUk9SX0hFQURFUl9FTkNPRElOR1NUWUxFX1VOREVGSU5FRCAgICAgICAgICAgID0gVGhlIGVuY29kaW5nIHN0eWxlIGZvciB0aGUgU09BUCBoZWFkZXIgaXMgbm90IHNwZWNpZmllZC4gV2hlbiB0aGUgdXNlIGlzIGVuY29kZWQgdGhlIGVuY29kaW5nIHN0eWxlIG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgVVJJLgotX0VSUk9SX0hFQURFUl9OQU1FU1BBQ0VfVU5ERUZJTkVEICAgICAgICAgICAgICAgID0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIFNPQVAgaGVhZGVyIGlzIG5vdCBzcGVjaWZpZWQuIFdoZW4gdGhlIHVzZSBpcyBlbmNvZGVkIGEgbmFtZXNwYWNlIFVSSSBtdXN0IGJlIGRlZmluZWQuCi1fRVJST1JfSEVBREVSRkFVTFRfTUVTU0FHRV9VTkRFRklORUQgICAgICAgICAgICAgPSBUaGUgezB9IG1lc3NhZ2Ugc3BlY2lmaWVkIGZvciB0aGUgU09BUCBoZWFkZXIgZmF1bHQgaXMgdW5kZWZpbmVkLiBUaGUgbWVzc2FnZSBzcGVjaWZpZWQgbXVzdCBiZSBkZWZpbmVkIGluIHRoZSBXU0RMIGRvY3VtZW50LgotX0VSUk9SX0hFQURFUkZBVUxUX1BBUlRfVU5ERUZJTkVEICAgICAgICAgICAgICAgID0gVGhlIHswfSBwYXJ0IHNwZWNpZmllZCBpbiBtZXNzYWdlIHsxfSBmb3IgdGhlIFNPQVAgaGVhZGVyIGZhdWx0IGlzIHVuZGVmaW5lZC4gRW5zdXJlIHRoZSBwYXJ0IGlzIGRlZmluZWQgaW4gdGhlIHsxfSBtZXNzYWdlLiAKLV9FUlJPUl9IRUFERVJGQVVMVF9VU0VfVU5ERUZJTkVEICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gdXNlIHNwZWNpZmllZCBmb3IgdGhlIFNPQVAgaGVhZGVyIGZhdWx0IGlzIGludmFsaWQuIFRoZSB1c2UgbXVzdCBiZSBzcGVjaWZpZWQgYXMgbGl0ZXJhbCBvciBlbmNvZGVkLgotX0VSUk9SX0hFQURFUkZBVUxUX0VOQ09ESU5HU1RZTEVfVU5ERUZJTkVEICAgICAgID0gVGhlIGVuY29kaW5nIHN0eWxlIGZvciB0aGUgU09BUCBoZWFkZXIgZmF1bHQgaXMgbm90IHNwZWNpZmllZC4gV2hlbiB0aGUgdXNlIGlzIGVuY29kZWQgdGhlIGVuY29kaW5nIHN0eWxlIG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgVVJJLgotX0VSUk9SX0hFQURFUkZBVUxUX05BTUVTUEFDRV9VTkRFRklORUQgICAgICAgICAgID0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIFNPQVAgaGVhZGVyIGZhdWx0IGlzIG5vdCBzcGVjaWZpZWQuIFdoZW4gdGhlIHVzZSBpcyBlbmNvZGVkIGEgbmFtZXNwYWNlIFVSSSBtdXN0IGJlIGRlZmluZWQuCi1fRVJST1JfSU5WQUxJRF9GQVVMVF9OQU1FICAgICAgICAgICAgICAgICAgICAgICAgPSBUaGUgezB9IG5hbWUgc3BlY2lmaWVkIGZvciB0aGUgU09BUCBmYXVsdCBpcyBpbnZhbGlkLiBUaGUgbmFtZSBzcGVjaWZpZWQgbXVzdCBiZSB7MX0sIHRoZSBuYW1lIGZyb20gdGhlIGZhdWx0IHBhcmVudCBlbGVtZW50LgotX0VSUk9SX05PX1NPQVBCSU5ESU5HX0ZPUl9PUEVSQVRJT04gICAgICAgICAgICAgID0gVGhlIHswfSBiaW5kaW5nIHRoYXQgdGhlIFNPQVAgb3BlcmF0aW9uIGlzIHNwZWNpZmllZCBmb3IgZG9lcyBub3QgaGF2ZSBhIFNPQVAgYmluZGluZyBkZWZpbmVkLiBBIFNPQVAgYmluZGluZyBtdXN0IGJlIGRlZmluZWQgaW4gb3JkZXIgdG8gZGVmaW5lIGEgU09BUCBvcGVyYXRpb24gaGVyZS4KLV9FUlJPUl9OT19TT0FQQklORElOR19GT1JfQk9EWSAgICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gYmluZGluZyB0aGF0IHRoZSBTT0FQIGJvZHkgaXMgc3BlY2lmaWVkIGZvciBkb2VzIG5vdCBoYXZlIGEgU09BUCBiaW5kaW5nIGRlZmluZWQuIEEgU09BUCBiaW5kaW5nIG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byBkZWZpbmUgYSBTT0FQIGJvZHkgaGVyZS4KLV9FUlJPUl9OT19TT0FQQklORElOR19GT1JfSEVBREVSICAgICAgICAgICAgICAgICA9IFRoZSB7MH0gYmluZGluZyB0aGF0IHRoZSBTT0FQIGhlYWRlciBpcyBzcGVjaWZpZWQgZm9yIGRvZXMgbm90IGhhdmUgYSBTT0FQIGJpbmRpbmcgZGVmaW5lZC4gQSBTT0FQIGJpbmRpbmcgbXVzdCBiZSBkZWZpbmVkIGluIG9yZGVyIHRvIGRlZmluZSBhIFNPQVAgaGVhZGVyIGhlcmUuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy92YWxpZGF0ZXdzZGx1aS5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uL3NyYy92YWxpZGF0ZXdzZGx1aS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjIyMzc0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi9zcmMvdmFsaWRhdGV3c2RsdWkucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSEtLSBBbnQgVUkKLV9VSV9JTkZPUk1BVElPTl9ERUxJTUlURVIgICAgICAgICAgICAgICAgICA9IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotX1VJX0VSUk9SX01BUktFUiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRVJST1IgIAotX1VJX1dBUk5JTkdfTUFSS0VSICAgICAgICAgICAgICAgICAgICAgICAgID0gV0FSTklORwotX1VJX1ZBTElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVkFMSUQKLV9VSV9JTlZBTElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IElOVkFMSUQKLV9VSV9BQ1RJT05fVkFMSURBVElOR19GSUxFICAgICAgICAgICAgICAgICA9IFZhbGlkYXRpbmcgezB9Ci0KLV9FUlJPUl9OT19GSUxFX1NQRUNJRklFRCAgICAgICAgICAgICAgICAgICA9IFVuYWJsZSB0byBydW4gV1NETCBWYWxpZGF0aW9uLiBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBmaWxlLgotCi1fRVhDX1VOQUJMRV9UT19WQUxJREFURV9GSUxFICAgICAgICAgICAgICAgPSBVbmFibGUgdG8gdmFsaWRhdGUgdGhlIFdTREwgZmlsZSB7MH0uIHsxfQotX0VYQ19XU0RMX0ZBSUxfT05fRVJST1IgICAgICAgICAgICAgICAgICAgID0gVGhlIFdTREwgZmlsZSBpcyBub3QgdmFsaWQuIChGYWlsIE9uIEVycm9yIGlzIGVuYWJsZWQuKQotCi1fRVJST1JfVU5BQkxFX1RPX0xPQURfRVhUX1ZBTElEQVRPUiAgICAgICAgPSBVbmFibGUgdG8gbG9hZCB0aGUgdmFsaWRhdG9yIGZvciBuYW1lc3BhY2UgezB9LiB7MX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLmNsYXNzcGF0aCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg3NzVjMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMtd3NkbCIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYy1odHRwIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjLW1pbWUiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMtc29hcCIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjQiPgotCQk8YWNjZXNzcnVsZXM+Ci0JCQk8YWNjZXNzcnVsZSBraW5kPSJhY2Nlc3NpYmxlIiBwYXR0ZXJuPSJvcmcvdzNjL2RvbS8qKiIvPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0iamF2YXgveG1sL25hbWVzcGFjZS9RTmFtZSIvPgotCQk8L2FjY2Vzc3J1bGVzPgotCTwvY2xhc3NwYXRoZW50cnk+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNmMjk4MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLWJpbgotd3NkbC5qYXIKLWJ1aWxkLnhtbAotdGVtcC5mb2xkZXIKLW9yZy5lY2xpcHNlLndzdC53c2RsXzEuMC4wLmphcgotb3JnLmVjbGlwc2Uud3N0LndzZGwucGF0Y2gKLUBkb3QKLXNyYy56aXAKLWphdmFDb21waWxlci4uLmFyZ3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmM1M2I2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS53c3Qud3NkbDwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGVlNjQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMzEwICswLDAgQEAKLSNNb24gTWFyIDA1IDA4OjU3OjE5IEVTVCAyMDA3Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW1wdHlTdGF0ZW1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmllbGRIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsUGFyYW1ldGVyQm91bmQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbGx5QmxvY2tOb3RDb21wbGV0aW5nTm9ybWFsbHk9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5mb3JiaWRkZW5SZWZlcmVuY2U9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaGlkZGVuQ2F0Y2hCbG9jaz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGF0aWJsZU5vbkluaGVyaXRlZEludGVyZmFjZU1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGxldGVFbnVtU3dpdGNoPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmRpcmVjdFN0YXRpY0FjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubG9jYWxWYXJpYWJsZUhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWV0aG9kV2l0aENvbnN0cnVjdG9yTmFtZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdEZXByZWNhdGVkQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ092ZXJyaWRlQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ1NlcmlhbFZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0VmZmVjdEFzc2lnbm1lbnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0ltcGxpY2l0U3RyaW5nQ29udmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vbkV4dGVybmFsaXplZFN0cmluZ0xpdGVyYWw9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm92ZXJyaWRpbmdQYWNrYWdlRGVmYXVsdE1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnBvc3NpYmxlQWNjaWRlbnRhbEJvb2xlYW5Bc3NpZ25tZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5yYXdUeXBlUmVmZXJlbmNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zcGVjaWFsUGFyYW1ldGVySGlkaW5nRmllbGQ9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3RhdGljQWNjZXNzUmVjZWl2ZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdXBwcmVzc1dhcm5pbmdzPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3ludGhldGljQWNjZXNzRW11bGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS50eXBlUGFyYW1ldGVySGlkaW5nPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5jaGVja2VkVHlwZU9wZXJhdGlvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuZG9jdW1lbnRlZEVtcHR5QmxvY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuaGFuZGxlZFdhcm5pbmdUb2tlbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5RWxzZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlUeXBlQ2hlY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVucXVhbGlmaWVkRmllbGRBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbldoZW5PdmVycmlkaW5nPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZEltcG9ydD1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMYWJlbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZExvY2FsPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuSW1wbGVtZW50aW5nQWJzdHJhY3Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbk92ZXJyaWRpbmdDb25jcmV0ZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQcml2YXRlTWVtYmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udmFyYXJnc0FyZ3VtZW50TmVlZENhc3Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuMwotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWduX3R5cGVfbWVtYmVyc19vbl9jb2x1bW5zPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPTUyCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fZW51bV9jb25zdGFudD0xNgotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2V4cGxpY2l0X2NvbnN0cnVjdG9yX2NhbGw9NTIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9tZXRob2RfaW52b2NhdGlvbj01Mgotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX3F1YWxpZmllZF9hbGxvY2F0aW9uX2V4cHJlc3Npb249NTIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2Fzc2lnbm1lbnQ9MAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYmluYXJ5X2V4cHJlc3Npb249MjAKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2NvbXBhY3RfaWY9MjAKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2NvbmRpdGlvbmFsX2V4cHJlc3Npb249MzYKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2VudW1fY29uc3RhbnRzPTAKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2V4cHJlc3Npb25zX2luX2FycmF5X2luaXRpYWxpemVyPTUyCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9tdWx0aXBsZV9maWVsZHM9MTYKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3BhcmFtZXRlcnNfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249NTIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3BhcmFtZXRlcnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTUyCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zZWxlY3Rvcl9pbl9tZXRob2RfaW52b2NhdGlvbj0wCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmNsYXNzX2luX3R5cGVfZGVjbGFyYXRpb249MzYKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3N1cGVyaW50ZXJmYWNlc19pbl9lbnVtX2RlY2xhcmF0aW9uPTE2Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fdHlwZV9kZWNsYXJhdGlvbj02OAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdGhyb3dzX2NsYXVzZV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj04NAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdGhyb3dzX2NsYXVzZV9pbl9tZXRob2RfZGVjbGFyYXRpb249ODQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9pbXBvcnRzPTIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9wYWNrYWdlPTIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfZmllbGQ9MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maXJzdF9jbGFzc19ib2R5X2RlY2xhcmF0aW9uPTAKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfaW1wb3J0cz0wCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX21lbWJlcl90eXBlPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWV0aG9kPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbmV3X2NodW5rPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfcGFja2FnZT0wCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl9pbXBvcnRfZ3JvdXBzPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZXR3ZWVuX3R5cGVfZGVjbGFyYXRpb25zPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPW5leHRfbGluZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1uZXh0X2xpbmVfc2hpZnRlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj1lbmRfb2ZfbGluZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9ibG9jaz1uZXh0X2xpbmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2tfaW5fY2FzZT1uZXh0X2xpbmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfY29uc3RydWN0b3JfZGVjbGFyYXRpb249bmV4dF9saW5lCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2VudW1fY29uc3RhbnQ9bmV4dF9saW5lCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2VudW1fZGVjbGFyYXRpb249bmV4dF9saW5lCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX21ldGhvZF9kZWNsYXJhdGlvbj1uZXh0X2xpbmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3Jfc3dpdGNoPW5leHRfbGluZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl90eXBlX2RlY2xhcmF0aW9uPW5leHRfbGluZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuY2xlYXJfYmxhbmtfbGluZXNfaW5fYmxvY2tfY29tbWVudD1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuY2xlYXJfYmxhbmtfbGluZXNfaW5famF2YWRvY19jb21tZW50PWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfYmxvY2tfY29tbWVudHM9ZmFsc2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9oZWFkZXI9ZmFsc2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9odG1sPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfamF2YWRvY19jb21tZW50cz1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2xpbmVfY29tbWVudHM9ZmFsc2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9zb3VyY2VfY29kZT1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5kZW50X3BhcmFtZXRlcl9kZXNjcmlwdGlvbj10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcm9vdF90YWdzPXRydWUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lmluc2VydF9uZXdfbGluZV9iZWZvcmVfcm9vdF90YWdzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5zZXJ0X25ld19saW5lX2Zvcl9wYXJhbWV0ZXI9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5saW5lX2xlbmd0aD04MAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbXBhY3RfZWxzZV9pZj10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29udGludWF0aW9uX2luZGVudGF0aW9uPTIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb250aW51YXRpb25faW5kZW50YXRpb25fZm9yX2FycmF5X2luaXRpYWxpemVyPTIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5mb3JtYXRfZ3VhcmRpYW5fY2xhdXNlX29uX29uZV9saW5lPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fYW5ub3RhdGlvbl9kZWNsYXJhdGlvbl9oZWFkZXI9dHJ1ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2VudW1fY29uc3RhbnRfaGVhZGVyPXRydWUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2RlY2xhcmF0aW9uX2hlYWRlcj10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fdHlwZV9oZWFkZXI9dHJ1ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9icmVha3NfY29tcGFyZV90b19jYXNlcz10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2VtcHR5X2xpbmVzPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N0YXRlbWVudHNfY29tcGFyZV90b19ibG9jaz10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N0YXRlbWVudHNfY29tcGFyZV90b19ib2R5PXRydWUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3dpdGNoc3RhdGVtZW50c19jb21wYXJlX3RvX2Nhc2VzPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N3aXRjaHN0YXRlbWVudHNfY29tcGFyZV90b19zd2l0Y2g9dHJ1ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudGF0aW9uLnNpemU9NAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYXRfZW5kX29mX2ZpbGVfaWZfbWlzc2luZz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9jYXRjaF9pbl90cnlfc3RhdGVtZW50PWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9lbHNlX2luX2lmX3N0YXRlbWVudD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2ZpbmFsbHlfaW5fdHJ5X3N0YXRlbWVudD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX3doaWxlX2luX2RvX3N0YXRlbWVudD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYW5ub3RhdGlvbl9kZWNsYXJhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Jsb2NrPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9lbnVtX2NvbnN0YW50PWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9lbnVtX2RlY2xhcmF0aW9uPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9tZXRob2RfYm9keT1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYW5kX2luX3R5cGVfcGFyYW1ldGVyPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYmluYXJ5X29wZXJhdG9yPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Fzc2VydD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fY2FzZT1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Zvcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fbGFiZWxlZF9zdGF0ZW1lbnQ9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYW5ub3RhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3Rocm93cz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZW51bV9jb25zdGFudF9hcmd1bWVudHM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9leHBsaWNpdGNvbnN0cnVjdG9yY2FsbF9hcmd1bWVudHM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Zvcl9pbmNyZW1lbnRzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5pdHM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fdGhyb3dzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX211bHRpcGxlX2ZpZWxkX2RlY2xhcmF0aW9ucz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbXVsdGlwbGVfbG9jYWxfZGVjbGFyYXRpb25zPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9zdXBlcmludGVyZmFjZXM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3R5cGVfYXJndW1lbnRzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2VsbGlwc2lzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2F0Y2g9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9mb3I9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2lmPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl93aGlsZT1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9wcmVmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9xdWVzdGlvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9zZW1pY29sb25faW5fZm9yPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl91bmFyeV9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hbmRfaW5fdHlwZV9wYXJhbWV0ZXI9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYXRfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYmluYXJ5X29wZXJhdG9yPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jYXN0PWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2F0Y2g9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9mb3I9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fc3dpdGNoPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fd2hpbGU9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fYXNzZXJ0PWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY2FzZT1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2RlZmF1bHQ9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZm9yPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fbGFiZWxlZF9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZW51bV9jb25zdGFudF9hcmd1bWVudHM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZW51bV9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Zvcl9pbmNyZW1lbnRzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Zvcl9pbml0cz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fdGhyb3dzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX21ldGhvZF9pbnZvY2F0aW9uX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbXVsdGlwbGVfbG9jYWxfZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9lbGxpcHNpcz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2NvbnN0YW50PWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2RlY2xhcmF0aW9uPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9tZXRob2RfZGVjbGFyYXRpb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3N3aXRjaD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uX3R5cGVfbWVtYmVyX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fY2F0Y2g9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Zvcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5faWY9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fc3dpdGNoPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3JldHVybj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl90aHJvdz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3F1ZXN0aW9uX2luX2NvbmRpdGlvbmFsPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbl9pbl9mb3I9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2JyYWNrZXRzX2luX2FycmF5X3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFjZXNfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X2JyYWNrZXRzX2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2Fubm90YXRpb25fdHlwZV9tZW1iZXJfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9lbHNlX3N0YXRlbWVudF9vbl9zYW1lX2xpbmU9ZmFsc2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX2VtcHR5X2FycmF5X2luaXRpYWxpemVyX29uX29uZV9saW5lPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9pbXBsZV9pZl9vbl9vbmVfbGluZT1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfdGhlbl9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubGluZVNwbGl0PTE0MAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9ibGFua19saW5lc19hdF9iZWdpbm5pbmdfb2ZfbWV0aG9kX2JvZHk9MAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9lbXB0eV9saW5lc190b19wcmVzZXJ2ZT0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIucHV0X2VtcHR5X3N0YXRlbWVudF9vbl9uZXdfbGluZT1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnRhYnVsYXRpb24uY2hhcj1zcGFjZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnRhYnVsYXRpb24uc2l6ZT0yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudXNlX3RhYnNfb25seV9mb3JfbGVhZGluZ19pbmRlbnRhdGlvbnM9ZmFsc2UKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NmQ3OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSNNb24gTWFyIDA1IDA4OjU3OjIwIEVTVCAyMDA3Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotZm9ybWF0dGVyX3Byb2ZpbGU9X0VNRkNvZGVGb3JtYXR0ZXIucHJvZmlsZQotZm9ybWF0dGVyX3NldHRpbmdzX3ZlcnNpb249MTEKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmI3YjFiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlcGx1Z2luTmFtZQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2Uud3N0LndzZGw7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMi4wLnF1YWxpZmllcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBsdWdpbkltcGxlbWVudGF0aW9uCi1CdW5kbGUtVmVuZG9yOiAlcHJvdmlkZXJOYW1lCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLUV4cG9ydC1QYWNrYWdlOiBvcmcuZWNsaXBzZS53c3Qud3NkbCwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmdlbmVyYXRvcjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLnV0aWw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwudXRpbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuZ2VuZXJhdG9yO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwudXRpbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmV4dGVuc2liaWxpdHk7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5nZW5lcmF0b3I7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5nZW5lcmF0b3IuZXh0ZW5zaW9uO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwud3NkbDRqO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS5lbWYuZWNvcmU7YnVuZGxlLXZlcnNpb249IlsyLjIuMCwyLjYuMCkiLAotIG9yZy5lY2xpcHNlLnhzZDtidW5kbGUtdmVyc2lvbj0iWzIuMi4wLDMuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIGphdmF4LndzZGw7YnVuZGxlLXZlcnNpb249IlsxLjUuMCwxLjYuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmFwYWNoZS54ZXJjZXM7YnVuZGxlLXZlcnNpb249IlsyLjguMCwzLjAuMCkiCi1JbXBvcnQtUGFja2FnZTogY29tLmlibS5pY3UudXRpbDsgdmVyc2lvbj0iMy44IiAKLUJ1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5Ci1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvYWJvdXQuaHRtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvYnVpbGQucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZkZGVhMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1iaW4uaW5jbHVkZXMgPSAuLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXAotICAgICAgICAgICAgICAgbW9kZWwvCi1qYXJzLmNvbXBpbGUub3JkZXIgPSAuCi1zb3VyY2UuLiA9IHNyYy1odHRwLyxcCi0gICAgICAgICAgICAgICAgICBzcmMtbWltZS8sXAotICAgICAgICAgICAgICAgICAgc3JjLXNvYXAvLFwKLSAgICAgICAgICAgICAgICAgIHNyYy13c2RsLwotb3V0cHV0Li4gPSBiaW4vCi1zcmMuaW5jbHVkZXMgPSBjb21wb25lbnQueG1sLFwKLSAgICAgICAgICAgICAgIHNjaGVtYS8KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvY29tcG9uZW50LnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvY29tcG9uZW50LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ2MTljNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL2NvbXBvbmVudC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNvbXBvbmVudCB4bWxucz0iaHR0cDovL2VjbGlwc2Uub3JnL3d0cC9yZWxlbmcvdG9vbHMvY29tcG9uZW50LW1vZGVsIgotCW5hbWU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj4KLQk8Y29tcG9uZW50LWRlcGVuZHMgdW5yZXN0cmljdGVkPSJ0cnVlIj48L2NvbXBvbmVudC1kZXBlbmRzPgotCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLndzdC53c2RsIiBmcmFnbWVudD0iZmFsc2UiIC8+Ci0JPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2Uud3N0LndzZGwudWkiIGZyYWdtZW50PSJmYWxzZSIgLz4KLQk8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uIiBmcmFnbWVudD0iZmFsc2UiIC8+Ci0JPHBsdWdpbiBpZD0ib3JnLndzZGw0aiIgZnJhZ21lbnQ9ImZhbHNlIiAvPgotCTxwYWNrYWdlIG5hbWU9Im9yZy5lY2xpcHNlLndzdC53c2RsIiBhcGk9ImZhbHNlIj4KLQkJPHR5cGUgbmFtZT0iQmluZGluZyIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+CQotCQk8dHlwZSBuYW1lPSJCaW5kaW5nRmF1bHQiICBpbXBsZW1lbnQ9ImZhbHNlIiBzdWJjbGFzcz0iZmFsc2UiIGluc3RhbnRpYXRlPSJmYWxzZSIvPgotCQk8dHlwZSBuYW1lPSJCaW5kaW5nSW5wdXQiICBpbXBsZW1lbnQ9ImZhbHNlIiBzdWJjbGFzcz0iZmFsc2UiIGluc3RhbnRpYXRlPSJmYWxzZSIvPgotCQk8dHlwZSBuYW1lPSJCaW5kaW5nT3BlcmF0aW9uIiAgaW1wbGVtZW50PSJmYWxzZSIgc3ViY2xhc3M9ImZhbHNlIiBpbnN0YW50aWF0ZT0iZmFsc2UiLz4JCQotCQk8dHlwZSBuYW1lPSJCaW5kaW5nT3V0cHV0IiAgaW1wbGVtZW50PSJmYWxzZSIgc3ViY2xhc3M9ImZhbHNlIiBpbnN0YW50aWF0ZT0iZmFsc2UiLz4KLQkJPHR5cGUgbmFtZT0iRGVmaW5pdGlvbiIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+Ci0gICAgCTx0eXBlIG5hbWU9IkV4dGVuc2liaWxpdHlFbGVtZW50IiAgaW1wbGVtZW50PSJmYWxzZSIgc3ViY2xhc3M9ImZhbHNlIiBpbnN0YW50aWF0ZT0iZmFsc2UiLz4KLQkJPHR5cGUgbmFtZT0iRXh0ZW5zaWJsZUVsZW1lbnQiICBpbXBsZW1lbnQ9ImZhbHNlIiBzdWJjbGFzcz0iZmFsc2UiIGluc3RhbnRpYXRlPSJmYWxzZSIvPgotCQk8dHlwZSBuYW1lPSJGYXVsdCIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+Ci0JCTx0eXBlIG5hbWU9IkltcG9ydCIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+CQkJCi0JCTx0eXBlIG5hbWU9IklucHV0IiAgaW1wbGVtZW50PSJmYWxzZSIgc3ViY2xhc3M9ImZhbHNlIiBpbnN0YW50aWF0ZT0iZmFsc2UiLz4JCQkKLQkJPHR5cGUgbmFtZT0iTWVzc2FnZSIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+Ci0JCTx0eXBlIG5hbWU9Ik1lc3NhZ2VSZWZlcmVuY2UiICBpbXBsZW1lbnQ9ImZhbHNlIiBzdWJjbGFzcz0iZmFsc2UiIGluc3RhbnRpYXRlPSJmYWxzZSIvPgkJCi0JCTx0eXBlIG5hbWU9Ik5hbWVzcGFjZSIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+CQkKLQkJPHR5cGUgbmFtZT0iT3BlcmF0aW9uIiAgaW1wbGVtZW50PSJmYWxzZSIgc3ViY2xhc3M9ImZhbHNlIiBpbnN0YW50aWF0ZT0iZmFsc2UiLz4JCi0gICAgCTx0eXBlIG5hbWU9Ik91dHB1dCIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+CQkJCi0gICAgIAk8dHlwZSBuYW1lPSJQYXJ0IiAgaW1wbGVtZW50PSJmYWxzZSIgc3ViY2xhc3M9ImZhbHNlIiBpbnN0YW50aWF0ZT0iZmFsc2UiLz4JCQkKLQkJPHR5cGUgbmFtZT0iUG9ydCIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+CQkKLQkJPHR5cGUgbmFtZT0iUG9ydFR5cGUiICBpbXBsZW1lbnQ9ImZhbHNlIiBzdWJjbGFzcz0iZmFsc2UiIGluc3RhbnRpYXRlPSJmYWxzZSIvPgotCQk8dHlwZSBuYW1lPSJTZXJ2aWNlIiAgaW1wbGVtZW50PSJmYWxzZSIgc3ViY2xhc3M9ImZhbHNlIiBpbnN0YW50aWF0ZT0iZmFsc2UiLz4KLQkJPHR5cGUgbmFtZT0iVHlwZXMiICBpbXBsZW1lbnQ9ImZhbHNlIiBzdWJjbGFzcz0iZmFsc2UiIGluc3RhbnRpYXRlPSJmYWxzZSIvPgotCQk8dHlwZSBuYW1lPSJVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQiICBpbXBsZW1lbnQ9ImZhbHNlIiBzdWJjbGFzcz0iZmFsc2UiIGluc3RhbnRpYXRlPSJmYWxzZSIvPgotCQk8dHlwZSBuYW1lPSJXU0RMRWxlbWVudCIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+Ci0JCTx0eXBlIG5hbWU9IldTRExGYWN0b3J5IiAgaW1wbGVtZW50PSJmYWxzZSIgc3ViY2xhc3M9ImZhbHNlIiBpbnN0YW50aWF0ZT0iZmFsc2UiLz4JCi08IS0tCTx0eXBlIG5hbWU9IldTRExQbHVnaW4iICBpbXBsZW1lbnQ9ImZhbHNlIiBzdWJjbGFzcz0iZmFsc2UiIGluc3RhbnRpYXRlPSJmYWxzZSIvPi0tPgotCQk8dHlwZSBuYW1lPSJYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCIgIGltcGxlbWVudD0iZmFsc2UiIHN1YmNsYXNzPSJmYWxzZSIgaW5zdGFudGlhdGU9ImZhbHNlIi8+CQotCTwvcGFja2FnZT4KLQk8cGFja2FnZSBuYW1lPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIiBhcGk9ImZhbHNlIj4KLQkJPHR5cGUgbmFtZT0iV1NETENvbnN0YW50cyIgaW1wbGVtZW50PSJmYWxzZSIgc3ViY2xhc3M9ImZhbHNlIiBpbnN0YW50aWF0ZT0iZmFsc2UiLz4KLTwhLS0JPHR5cGUgbmFtZT0iRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5IiAvPiAtLT4JCQotPCEtLQk8dHlwZSBuYW1lPSJFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeSIgLz4tLT4JCi08IS0tCTx0eXBlIG5hbWU9IldTRExSZXNvdXJjZUltcGwiIHN1YmNsYXNzPSJmYWxzZSIvPi0tPgotCTwvcGFja2FnZT4KLQkKLTwhLS0gdGhlc2UgcGx1Z2luJ3MgdG8gYmUgcHJvdmlkZWQgd2l0aCBub24gQVBJIGRpc2NsYWltZXJzIC0tPgotPCEtLQkKLQk8cGFja2FnZSBuYW1lPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIGFwaT0iZmFsc2UiPgotCQk8dHlwZSBuYW1lPSJTT0FQQm9keSIgLz4KLQkJPHR5cGUgbmFtZT0iU09BUEhlYWRlckZhdWx0IiAvPgotCQk8dHlwZSBuYW1lPSJTT0FQQWRkcmVzcyIgLz4KLQkJPHR5cGUgbmFtZT0iU09BUEZhY3RvcnkiIC8+Ci0JCTx0eXBlIG5hbWU9IlNPQVBIZWFkZXIiIC8+Ci0JCTx0eXBlIG5hbWU9IlNPQVBCaW5kaW5nIiAvPgotCQk8dHlwZSBuYW1lPSJTT0FQSGVhZGVyQmFzZSIgLz4KLQkJPHR5cGUgbmFtZT0iU09BUEZhdWx0IiAvPgotCQk8dHlwZSBuYW1lPSJTT0FQT3BlcmF0aW9uIiAvPgotCTwvcGFja2FnZT4KLQotCTxwYWNrYWdlIG5hbWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+Ci0JCTx0eXBlIG5hbWU9Ik1JTUVDb250ZW50IiAvPgotCQk8dHlwZSBuYW1lPSJNSU1FUGFja2FnZSIgLz4KLQkJPHR5cGUgbmFtZT0iTUlNRU11bHRpcGFydFJlbGF0ZWQiIC8+Ci0JCTx0eXBlIG5hbWU9Ik1JTUVQYXJ0IiAvPgotCQk8dHlwZSBuYW1lPSJNSU1FTWltZVhtbCIgLz4KLQkJPHR5cGUgbmFtZT0iTUlNRUZhY3RvcnkiIC8+Ci0JPC9wYWNrYWdlPgotCi0JPHBhY2thZ2UgbmFtZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj4KLQkJPHR5cGUgbmFtZT0iSFRUUEZhY3RvcnkiIC8+Ci0JCTx0eXBlIG5hbWU9IkhUVFBPcGVyYXRpb24iIC8+Ci0JCTx0eXBlIG5hbWU9IkhUVFBVcmxFbmNvZGVkIiAvPgotCQk8dHlwZSBuYW1lPSJIVFRQUGFja2FnZSIgLz4KLQkJPHR5cGUgbmFtZT0iSFRUUEFkZHJlc3MiIC8+Ci0JCTx0eXBlIG5hbWU9IkhUVFBVcmxSZXBsYWNlbWVudCIgLz4KLQkJPHR5cGUgbmFtZT0iSFRUUEJpbmRpbmciIC8+Ci0JPC9wYWNrYWdlPgotLS0+Ci08L2NvbXBvbmVudD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvZ3JhYmphcnMueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9ncmFiamFycy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNmVkYmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9ncmFiamFycy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08cHJvamVjdCBkZWZhdWx0PSJjb3B5SmFycyIgYmFzZWRpcj0iLiI+Ci0KLQk8cHJvcGVydHkgbmFtZT0icGx1Z2luTmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsIi8+Ci0JPHByb3BlcnR5IG5hbWU9InZlcnNpb24iIHZhbHVlPSIiLz4KLQotCTx0YXJnZXQgbmFtZT0iY29weUphcnMiIGlmPSJkb3dubG9hZFBhdGgiPgotCQk8YW50Y2FsbCB0YXJnZXQ9ImNvcHlKYXJzMiIvPgotCTwvdGFyZ2V0PgotCQotCTx0YXJnZXQgbmFtZT0iY29weUphcnMyIiBpZj0icGx1Z2luc1BhdGgiPgotCQk8YW50Y2FsbCB0YXJnZXQ9ImNvcHlKYXJzMyIvPgotCTwvdGFyZ2V0PgotCi0JPHRhcmdldCBuYW1lPSJjb3B5SmFyczMiIGlmPSJwbHVnaW5OYW1lIj4KLQkJPGNvcHkgdG9kaXI9IiR7cGx1Z2luc1BhdGh9LyR7cGx1Z2luTmFtZX0ke3ZlcnNpb259L2xpYiIgb3ZlcndyaXRlPSJ0cnVlIj4KLQkJCTxmaWxlc2V0IGRpcj0iJHtkb3dubG9hZFBhdGh9LyR7cGx1Z2luTmFtZX0ke3ZlcnNpb259Ij4KLQkJCQk8ZmlsZW5hbWUgbmFtZT0iKi5qYXIiLz4KLQkJCTwvZmlsZXNldD4KLQkJPC9jb3B5PgotCTwvdGFyZ2V0PgotCQotCTx0YXJnZXQgbmFtZT0iY2xlYW51cEphcnMiIGlmPSJwbHVnaW5zUGF0aCI+Ci0JCTxhbnRjYWxsIHRhcmdldD0iY2xlYW51cEphcnMyIi8+Ci0JPC90YXJnZXQ+Ci0KLQk8dGFyZ2V0IG5hbWU9ImNsZWFudXBKYXJzMiIgaWY9InBsdWdpbk5hbWUiPgotCQk8ZGVsZXRlPgotCQkJPGZpbGVzZXQgZGlyPSIke3BsdWdpbnNQYXRofS8ke3BsdWdpbk5hbWV9JHt2ZXJzaW9ufS9saWIiPgotCQkJCTxmaWxlbmFtZSBuYW1lPSIqLmphciIvPgotCQkJPC9maWxlc2V0PgotCQk8L2RlbGV0ZT4KLQk8L3RhcmdldD4KLQotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9saWIvLmN2c2lnbm9yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbGliLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzOTJmMGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9saWIvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSouamFyCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL0hUVFAuZWNvcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL0hUVFAuZWNvcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YzRhYjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9IVFRQLmVjb3JlCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxlY29yZTpFUGFja2FnZSB4bWk6dmVyc2lvbj0iMi4wIgotICAgIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKLSAgICB4bWxuczplY29yZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSIgbmFtZT0iaHR0cCIKLSAgICBuc1VSST0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvSFRUUCIgbnNQcmVmaXg9Imh0dHAiPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkhUVFBCaW5kaW5nIiBlU3VwZXJUeXBlcz0iV1NETC5lY29yZSMvL0V4dGVuc2liaWxpdHlFbGVtZW50ICMvL0lIVFRQQmluZGluZyI+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InZlcmIiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSFRUUE9wZXJhdGlvbiIgZVN1cGVyVHlwZXM9IldTREwuZWNvcmUjLy9FeHRlbnNpYmlsaXR5RWxlbWVudCAjLy9JSFRUUE9wZXJhdGlvbiI+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImxvY2F0aW9uVVJJIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkhUVFBVcmxSZXBsYWNlbWVudCIgZVN1cGVyVHlwZXM9IldTREwuZWNvcmUjLy9FeHRlbnNpYmlsaXR5RWxlbWVudCAjLy9JSFRUUFVybFJlcGxhY2VtZW50Ii8+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSFRUUFVybEVuY29kZWQiIGVTdXBlclR5cGVzPSJXU0RMLmVjb3JlIy8vRXh0ZW5zaWJpbGl0eUVsZW1lbnQgIy8vSUhUVFBVcmxFbmNvZGVkIi8+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSFRUUEFkZHJlc3MiIGVTdXBlclR5cGVzPSJXU0RMLmVjb3JlIy8vRXh0ZW5zaWJpbGl0eUVsZW1lbnQgIy8vSUhUVFBBZGRyZXNzIj4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibG9jYXRpb25VUkkiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSUhUVFBBZGRyZXNzIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3MiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIi8+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSUhUVFBCaW5kaW5nIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmciCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIi8+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSUhUVFBPcGVyYXRpb24iIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQT3BlcmF0aW9uIgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIvPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklIVFRQVXJsRW5jb2RlZCIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkIgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIvPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklIVFRQVXJsUmVwbGFjZW1lbnQiIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIi8+Ci08L2Vjb3JlOkVQYWNrYWdlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9IVFRQLmdlbm1vZGVsIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9IVFRQLmdlbm1vZGVsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzI2ZjlmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvSFRUUC5nZW5tb2RlbAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Z2VubW9kZWw6R2VuTW9kZWwgeG1pOnZlcnNpb249IjIuMCIKLSAgICB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIgotICAgIHhtbG5zOmdlbm1vZGVsPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIiBtb2RlbERpcmVjdG9yeT0iL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwIgotICAgIGVkaXREaXJlY3Rvcnk9Ii9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMiIGVkaXRvckRpcmVjdG9yeT0iL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYyIKLSAgICBtb2RlbFBsdWdpbklEPSJvcmcuZWNsaXBzZS53c3Qud3NkbCIgbW9kZWxOYW1lPSJIVFRQIiBlZGl0UGx1Z2luQ2xhc3M9IiIgZWRpdG9yUGx1Z2luQ2xhc3M9IiIKLSAgICBub25OTFNNYXJrZXJzPSJ0cnVlIiBjb2RlRm9ybWF0dGluZz0idHJ1ZSIgaW1wb3J0ZXJJRD0ib3JnLmVjbGlwc2UuZW1mLmltcG9ydGVyLnJvc2UiCi0gICAgdXNlZEdlblBhY2thZ2VzPSJXU0RMLmdlbm1vZGVsIy8vd3NkbCBwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnhzZC9tb2RlbC9YU0QuZ2VubW9kZWwjLy94c2QiPgotICA8Zm9yZWlnbk1vZGVsPkhUVFAubWRsPC9mb3JlaWduTW9kZWw+Ci0gIDxmb3JlaWduTW9kZWw+VkFCQVNFX1BMVUdJTlNfUEFUSDwvZm9yZWlnbk1vZGVsPgotICA8Zm9yZWlnbk1vZGVsPi4uLy4uLy4uPC9mb3JlaWduTW9kZWw+Ci0gIDxnZW5QYWNrYWdlcyBwcmVmaXg9IkhUVFAiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nIiBjbGFzc1BhY2thZ2VTdWZmaXg9ImludGVybmFsLmltcGwiCi0gICAgICB1dGlsaXR5UGFja2FnZVN1ZmZpeD0iaW50ZXJuYWwudXRpbCIgZWNvcmVQYWNrYWdlPSJIVFRQLmVjb3JlIy8iPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IkhUVFAuZWNvcmUjLy9IVFRQQmluZGluZyI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgSFRUUC5lY29yZSMvL0hUVFBCaW5kaW5nL3ZlcmIiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iSFRUUC5lY29yZSMvL0hUVFBPcGVyYXRpb24iPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIEhUVFAuZWNvcmUjLy9IVFRQT3BlcmF0aW9uL2xvY2F0aW9uVVJJIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IkhUVFAuZWNvcmUjLy9IVFRQVXJsUmVwbGFjZW1lbnQiLz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJIVFRQLmVjb3JlIy8vSFRUUFVybEVuY29kZWQiLz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJIVFRQLmVjb3JlIy8vSFRUUEFkZHJlc3MiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIEhUVFAuZWNvcmUjLy9IVFRQQWRkcmVzcy9sb2NhdGlvblVSSSIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJIVFRQLmVjb3JlIy8vSUhUVFBBZGRyZXNzIi8+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iSFRUUC5lY29yZSMvL0lIVFRQQmluZGluZyIvPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IkhUVFAuZWNvcmUjLy9JSFRUUE9wZXJhdGlvbiIvPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IkhUVFAuZWNvcmUjLy9JSFRUUFVybEVuY29kZWQiLz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJIVFRQLmVjb3JlIy8vSUhUVFBVcmxSZXBsYWNlbWVudCIvPgotICA8L2dlblBhY2thZ2VzPgotPC9nZW5tb2RlbDpHZW5Nb2RlbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvSFRUUC5tZGwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL0hUVFAubWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDYzMGZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvSFRUUC5tZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1NDcxICswLDAgQEAKLQotKG9iamVjdCBQZXRhbAotICAgIHZlcnNpb24gICAgCTQyCi0gICAgX3dyaXR0ZW4gICAJIlJvc2UgNC41LjgxNjMuMyIKLSAgICBjaGFyU2V0ICAgIAkwKQotCi0ob2JqZWN0IERlc2lnbiAiTG9naWNhbCBWaWV3IgotICAgIGlzX3VuaXQgICAgCVRSVUUKLSAgICBpc19sb2FkZWQgIAlUUlVFCi0gICAgZGVmYXVsdHMgICAJKG9iamVjdCBkZWZhdWx0cwotCXJpZ2h0TWFyZ2luIAkwLjI1MDAwMAotCWxlZnRNYXJnaW4gCTAuMjUwMDAwCi0JdG9wTWFyZ2luICAJMC4yNTAwMDAKLQlib3R0b21NYXJnaW4gCTAuNTAwMDAwCi0JcGFnZU92ZXJsYXAgCTAuMjUwMDAwCi0JY2xpcEljb25MYWJlbHMgCVRSVUUKLQlhdXRvUmVzaXplIAlUUlVFCi0Jc25hcFRvR3JpZCAJVFJVRQotCWdyaWRYICAgICAgCTE2Ci0JZ3JpZFkgICAgICAJMTYKLQlkZWZhdWx0Rm9udCAJKG9iamVjdCBGb250Ci0JICAgIHNpemUgICAgICAgCTEwCi0JICAgIGZhY2UgICAgICAgCSJBcmlhbCIKLQkgICAgYm9sZCAgICAgICAJRkFMU0UKLQkgICAgaXRhbGljcyAgICAJRkFMU0UKLQkgICAgdW5kZXJsaW5lICAJRkFMU0UKLQkgICAgc3RyaWtlICAgICAJRkFMU0UKLQkgICAgY29sb3IgICAgICAJMAotCSAgICBkZWZhdWx0X2NvbG9yIAlUUlVFKQotCXNob3dNZXNzYWdlTnVtIAkxCi0Jc2hvd0NsYXNzT2ZPYmplY3QgCVRSVUUKLQlub3RhdGlvbiAgIAkiVW5pZmllZCIpCi0gICAgcm9vdF91c2VjYXNlX3BhY2thZ2UgCShvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgIlVzZSBDYXNlIFZpZXciCi0JcXVpZCAgICAgICAJIjNBQkZEOUE3MDE1MSIKLQlleHBvcnRDb250cm9sIAkiUHVibGljIgotCWdsb2JhbCAgICAgCVRSVUUKLQlsb2dpY2FsX21vZGVscyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdCkKLQlsb2dpY2FsX3ByZXNlbnRhdGlvbnMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QKLQkgICAgKG9iamVjdCBVc2VDYXNlRGlhZ3JhbSAiTWFpbiIKLQkJcXVpZCAgICAgICAJIjNBQkZEOUE3MDE4QyIKLQkJdGl0bGUgICAgICAJIk1haW4iCi0JCXpvb20gICAgICAgCTEwMAotCQltYXhfaGVpZ2h0IAkyODM1MAotCQltYXhfd2lkdGggIAkyMTYwMAotCQlvcmlnaW5feCAgIAkwCi0JCW9yaWdpbl95ICAgCTAKLQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QpKSkpCi0gICAgcm9vdF9jYXRlZ29yeSAJKG9iamVjdCBDbGFzc19DYXRlZ29yeSAiTG9naWNhbCBWaWV3IgotCXF1aWQgICAgICAgCSIzQUJGRDlBNzAxNTAiCi0JZXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQlnbG9iYWwgICAgIAlUUlVFCi0Jc3Vic3lzdGVtICAJIkNvbXBvbmVudCBWaWV3IgotCXF1aWR1ICAgICAgCSIzQUJGRDlBNzAxNTIiCi0JbG9naWNhbF9tb2RlbHMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QKLQkgICAgKG9iamVjdCBDbGFzc19DYXRlZ29yeSAiaHR0cCIKLQkJYXR0cmlidXRlcyAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJuc1ByZWZpeCIKLQkJCXZhbHVlICAgICAgCSJodHRwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkibnNVUkkiCi0JCQl2YWx1ZSAgICAgIAkiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvSFRUUCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImJhc2VQYWNrYWdlIgotCQkJdmFsdWUgICAgICAJIm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmciKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJwcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiSFRUUCIpKQotCQlxdWlkICAgICAgIAkiM0FCRkQ5QUQwMUY4IgotCQlleHBvcnRDb250cm9sIAkiUHVibGljIgotCQlsb2dpY2FsX21vZGVscyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdAotCQkgICAgKG9iamVjdCBDbGFzcyAiSFRUUEJpbmRpbmciCi0JCQlxdWlkICAgICAgIAkiM0FCRkU1N0MwMTM2IgotCQkJc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjNBRTVGRjFEMDAxOSIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJCQlxdWlkdSAgICAgIAkiM0FENURCQjYwMkE5IikKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSI0MDk4NDNGMTAzQzAiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6aHR0cDo6SUhUVFBCaW5kaW5nIgotCQkJCXF1aWR1ICAgICAgCSI0MDk4NDNBNzAyRUIiKSkKLQkJCWNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCQkgICAgKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAidmVyYiIKLQkJCQlxdWlkICAgICAgIAkiM0FCRkU2MEQwMERCIgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIkhUVFBPcGVyYXRpb24iCi0JCQlxdWlkICAgICAgIAkiM0FCRkU2QUUwMDUwIgotCQkJc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjNBRTVGRjRCMDM3QyIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJCQlxdWlkdSAgICAgIAkiM0FENURCQjYwMkE5IikKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSI0MDk4NDQ0NjAyQ0MiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6aHR0cDo6SUhUVFBPcGVyYXRpb24iCi0JCQkJcXVpZHUgICAgICAJIjQwOTg0M0ZGMDJCQiIpKQotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJsb2NhdGlvblVSSSIKLQkJCQlxdWlkICAgICAgIAkiM0FCRkU3MEQwMTQ3IgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIkhUVFBVcmxSZXBsYWNlbWVudCIKLQkJCXF1aWQgICAgICAgCSIzQUJGRUExQTAxN0MiCi0JCQlzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiM0FFNzI4QjgwMkMzIgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2liaWxpdHlFbGVtZW50IgotCQkJCXF1aWR1ICAgICAgCSIzQUQ1REJCNjAyQTkiKQotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjQwOTg0NEQyMDJDNSIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3OjpodHRwOjpJSFRUUFVybFJlcGxhY2VtZW50IgotCQkJCXF1aWR1ICAgICAgCSI0MDk4NDQ5NjAwRDgiKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIkhUVFBVcmxFbmNvZGVkIgotCQkJcXVpZCAgICAgICAJIjNBQkZFQTZEMDI5NCIKLQkJCXN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSIzQUU3MjhENTAwOTQiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCQkJcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiNDA5ODQ0OTEwMDA5IgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6Omh0dHA6OklIVFRQVXJsRW5jb2RlZCIKLQkJCQlxdWlkdSAgICAgIAkiNDA5ODQ0NTcwMDYzIikpCi0JCQlsYW5ndWFnZSAgIAkiSmF2YSIpCi0JCSAgICAob2JqZWN0IENsYXNzICJIVFRQQWRkcmVzcyIKLQkJCXF1aWQgICAgICAgCSIzQUMzQkYyNTAwRjUiCi0JCQlzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiM0FFNUZFQTkwMUI3IgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2liaWxpdHlFbGVtZW50IgotCQkJCXF1aWR1ICAgICAgCSIzQUQ1REJCNjAyQTkiKQotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjQwOTg0MEQ4MDBDNCIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3OjpodHRwOjpJSFRUUEFkZHJlc3MiCi0JCQkJcXVpZHUgICAgICAJIjQwOTg0MDg5MDFBMSIpKQotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJsb2NhdGlvblVSSSIKLQkJCQlxdWlkICAgICAgIAkiM0FDM0JGQTcwMTJFIgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIklIVFRQQWRkcmVzcyIKLQkJCXF1aWQgICAgICAgCSI0MDk4NDA4OTAxQTEiCi0JCQlzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQWRkcmVzcyIKLQkJCQlxdWlkICAgICAgIAkiNDA5ODQwQTQwMTNBIgotCQkJCXN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIklIVFRQQmluZGluZyIKLQkJCXF1aWQgICAgICAgCSI0MDk4NDNBNzAyRUIiCi0JCQlzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQmluZGluZyIKLQkJCQlxdWlkICAgICAgIAkiNDA5ODQzQ0EwMTc3IgotCQkJCXN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIklIVFRQT3BlcmF0aW9uIgotCQkJcXVpZCAgICAgICAJIjQwOTg0M0ZGMDJCQiIKLQkJCXN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb24iCi0JCQkJcXVpZCAgICAgICAJIjQwOTg0NDEzMDIwNCIKLQkJCQlzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpCi0JCQlsYW5ndWFnZSAgIAkiSmF2YSIpCi0JCSAgICAob2JqZWN0IENsYXNzICJJSFRUUFVybEVuY29kZWQiCi0JCQlxdWlkICAgICAgIAkiNDA5ODQ0NTcwMDYzIgotCQkJc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkJCWNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCQkgICAgKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybEVuY29kZWQiCi0JCQkJcXVpZCAgICAgICAJIjQwOTg0NDZEMDIxQyIKLQkJCQlzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpCi0JCQlsYW5ndWFnZSAgIAkiSmF2YSIpCi0JCSAgICAob2JqZWN0IENsYXNzICJJSFRUUFVybFJlcGxhY2VtZW50IgotCQkJcXVpZCAgICAgICAJIjQwOTg0NDk2MDBEOCIKLQkJCXN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudCIKLQkJCQlxdWlkICAgICAgIAkiNDA5ODQ0QUMwMUFCIgotCQkJCXN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikpCi0JCWxvZ2ljYWxfcHJlc2VudGF0aW9ucyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdAotCQkgICAgKG9iamVjdCBDbGFzc0RpYWdyYW0gIlBvcnQiCi0JCQlxdWlkICAgICAgIAkiM0FDMTFFNTIwMUZCIgotCQkJdGl0bGUgICAgICAJIlBvcnQiCi0JCQl6b29tICAgICAgIAkxMDAKLQkJCW1heF9oZWlnaHQgCTI4MzUwCi0JCQltYXhfd2lkdGggIAkyMTYwMAotCQkJb3JpZ2luX3ggICAJMAotCQkJb3JpZ2luX3kgICAJMAotCQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Omh0dHA6OkhUVFBBZGRyZXNzIiBAMQotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNjcyLCA3ODQpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAxCi0JCQkJICAgIGxvY2F0aW9uICAgCSg0NzEsIDcwMykKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAk0MDIKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiSFRUUEFkZHJlc3MiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUMzQkYyNTAwRjUiCi0JCQkJd2lkdGggICAgICAJNDIwCi0JCQkJaGVpZ2h0ICAgICAJMTg2Ci0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3OjpodHRwOjpJSFRUUEFkZHJlc3MiIEAyCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSg2NzIsIDI4OCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDIKLQkJCQkgICAgbG9jYXRpb24gICAJKDEzOCwgMjI5KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTEwNjgKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiSUhUVFBBZGRyZXNzIikKLQkJCQlzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDIKLQkJCQkgICAgbG9jYXRpb24gICAJKDEzOCwgMTc5KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBhbmNob3IgICAgIAkxMAotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTEwNjgKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCQkJaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJCQlpY29uX3N0eWxlIAkiTGFiZWwiCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjQwOTg0MDg5MDFBMSIKLQkJCQl3aWR0aCAgICAgIAkxMDg2Ci0JCQkJaGVpZ2h0ICAgICAJMjQyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMwotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjQwOTg0MEQ4MDBDNCIKLQkJCQljbGllbnQgICAgIAlAMQotCQkJCXN1cHBsaWVyICAgCUAyCi0JCQkJbGluZV9zdHlsZSAJMCkpKQotCQkgICAgKG9iamVjdCBDbGFzc0RpYWdyYW0gIkV4dGVuc2liaWxpdHkiCi0JCQlxdWlkICAgICAgIAkiM0FFNUZFM0IwMzdCIgotCQkJdGl0bGUgICAgICAJIkV4dGVuc2liaWxpdHkiCi0JCQl6b29tICAgICAgIAkxMDAKLQkJCW1heF9oZWlnaHQgCTI4MzUwCi0JCQltYXhfd2lkdGggIAkyMTYwMAotCQkJb3JpZ2luX3ggICAJMAotCQkJb3JpZ2luX3kgICAJMAotCQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2liaWxpdHlFbGVtZW50IiBANAotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMjcyLCAxMjgpCi0JCQkJZm9udCAgICAgICAJKG9iamVjdCBGb250Ci0JCQkJICAgIGl0YWxpY3MgICAgCVRSVUUpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUA0Ci0JCQkJICAgIGxvY2F0aW9uICAgCSg3MCwgNTMpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJNDA0Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIkV4dGVuc2liaWxpdHlFbGVtZW50IikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0FENURCQjYwMkE5IgotCQkJCXdpZHRoICAgICAgCTQyMgotCQkJCWhlaWdodCAgICAgCTE3NAotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6aHR0cDo6SFRUUEFkZHJlc3MiIEA1Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDI3MiwgNDgwKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANQotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTI4LCA0MjgpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMjg4Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIkhUVFBBZGRyZXNzIikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0FDM0JGMjUwMEY1IgotCQkJCXdpZHRoICAgICAgCTMwNgotCQkJCWhlaWdodCAgICAgCTEyOAotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6aHR0cDo6SFRUUEJpbmRpbmciIEA2Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDQ4MCwgNjQwKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANgotCQkJCSAgICBsb2NhdGlvbiAgIAkoMzQ0LCA1ODgpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMjcyCi0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIkhUVFBCaW5kaW5nIikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0FCRkU1N0MwMTM2IgotCQkJCXdpZHRoICAgICAgCTI5MAotCQkJCWhlaWdodCAgICAgCTEyOAotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgSW5oZXJpdFRyZWVWaWV3ICIiIEA3Ci0JCQkJbG9jYXRpb24gICAJKDI3MiwgMzA1KQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXN1cHBsaWVyICAgCUA0Ci0JCQkJdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJICAgICgyNzIsIDMwNSkKLQkJCQkgICAgKDI3MiwgMjE1KSkpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAOAotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjNBRTVGRUE5MDFCNyIKLQkJCQljbGllbnQgICAgIAlANQotCQkJCXN1cHBsaWVyICAgCUA0Ci0JCQkJbGluZV9zdHlsZSAJMwotCQkJCW9yaWdpbl9hdHRhY2htZW50IAkoMjcyLCA0MTYpCi0JCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDI3MiwgMzA1KQotCQkJCWRyYXdTdXBwbGllciAJQDcpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAOQotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjNBRTVGRjFEMDAxOSIKLQkJCQljbGllbnQgICAgIAlANgotCQkJCXN1cHBsaWVyICAgCUA0Ci0JCQkJbGluZV9zdHlsZSAJMwotCQkJCW9yaWdpbl9hdHRhY2htZW50IAkoNDc1LCA1NzYpCi0JCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDQ3NSwgMzA1KQotCQkJCWRyYXdTdXBwbGllciAJQDcpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3OjpodHRwOjpIVFRQT3BlcmF0aW9uIiBAMTAKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNjcyLCA4MTYpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAxMAotCQkJCSAgICBsb2NhdGlvbiAgIAkoNTE4LCA3NjQpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMzA4Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIkhUVFBPcGVyYXRpb24iKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUJGRTZBRTAwNTAiCi0JCQkJd2lkdGggICAgICAJMzI2Ci0JCQkJaGVpZ2h0ICAgICAJMTI4Ci0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMTEKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSIzQUU1RkY0QjAzN0MiCi0JCQkJY2xpZW50ICAgICAJQDEwCi0JCQkJc3VwcGxpZXIgICAJQDQKLQkJCQlsaW5lX3N0eWxlIAkzCi0JCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSg2NTYsIDc1MikKLQkJCQl0ZXJtaW5hbF9hdHRhY2htZW50IAkoNjU2LCAzMDUpCi0JCQkJZHJhd1N1cHBsaWVyIAlANykKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Omh0dHA6OkhUVFBVcmxSZXBsYWNlbWVudCIgQDEyCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDgxNiwgOTkyKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMTIKLQkJCQkgICAgbG9jYXRpb24gICAJKDYwNSwgOTQxKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTQyMgotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJIVFRQVXJsUmVwbGFjZW1lbnQiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUJGRUExQTAxN0MiCi0JCQkJd2lkdGggICAgICAJNDQwCi0JCQkJaGVpZ2h0ICAgICAJMTI2Ci0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMTMKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSIzQUU3MjhCODAyQzMiCi0JCQkJY2xpZW50ICAgICAJQDEyCi0JCQkJc3VwcGxpZXIgICAJQDQKLQkJCQlsaW5lX3N0eWxlIAkzCi0JCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSg4NjksIDkyOSkKLQkJCQl0ZXJtaW5hbF9hdHRhY2htZW50IAkoODY5LCAzMDUpCi0JCQkJZHJhd1N1cHBsaWVyIAlANykKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Omh0dHA6OkhUVFBVcmxFbmNvZGVkIiBAMTQKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTA3MiwgMTE2OCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDE0Ci0JCQkJICAgIGxvY2F0aW9uICAgCSg5MDAsIDExMTcpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMzQ0Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIkhUVFBVcmxFbmNvZGVkIikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0FCRkVBNkQwMjk0IgotCQkJCXdpZHRoICAgICAgCTM2MgotCQkJCWhlaWdodCAgICAgCTEyNgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDE1Ci0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiM0FFNzI4RDUwMDk0IgotCQkJCWNsaWVudCAgICAgCUAxNAotCQkJCXN1cHBsaWVyICAgCUA0Ci0JCQkJbGluZV9zdHlsZSAJMwotCQkJCW9yaWdpbl9hdHRhY2htZW50IAkoMTEwMywgMTEwNSkKLQkJCQl0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTEwMywgMzA1KQotCQkJCWRyYXdTdXBwbGllciAJQDcpKSkKLQkJICAgIChvYmplY3QgQ2xhc3NEaWFncmFtICJCaW5kaW5nIgotCQkJcXVpZCAgICAgICAJIjNBRTcyQTcwMDBBOSIKLQkJCXRpdGxlICAgICAgCSJCaW5kaW5nIgotCQkJem9vbSAgICAgICAJMTAwCi0JCQltYXhfaGVpZ2h0IAkyODM1MAotCQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJCW9yaWdpbl94ICAgCTAKLQkJCW9yaWdpbl95ICAgCTAKLQkJCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0Ci0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3OjpodHRwOjpIVFRQQmluZGluZyIgQDE2Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSg1NzYsIDU5MikKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDE2Ci0JCQkJICAgIGxvY2F0aW9uICAgCSg0NDAsIDU0MCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkyNzIKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiSFRUUEJpbmRpbmciKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUJGRTU3QzAxMzYiCi0JCQkJd2lkdGggICAgICAJMjkwCi0JCQkJaGVpZ2h0ICAgICAJMTI4Ci0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3OjpodHRwOjpIVFRQT3BlcmF0aW9uIiBAMTcKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDE2OTYsIDYwOCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDE3Ci0JCQkJICAgIGxvY2F0aW9uICAgCSgxNDk1LCA1MjcpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJNDAyCi0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIkhUVFBPcGVyYXRpb24iKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUJGRTZBRTAwNTAiCi0JCQkJd2lkdGggICAgICAJNDIwCi0JCQkJaGVpZ2h0ICAgICAJMTg2Ci0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3OjpodHRwOjpIVFRQVXJsUmVwbGFjZW1lbnQiIEAxOAotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTYxNiwgMTgwOCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDE4Ci0JCQkJICAgIGxvY2F0aW9uICAgCSgxNDA1LCAxNzU3KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTQyMgotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJIVFRQVXJsUmVwbGFjZW1lbnQiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUJGRUExQTAxN0MiCi0JCQkJd2lkdGggICAgICAJNDQwCi0JCQkJaGVpZ2h0ICAgICAJMTI2Ci0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3OjpodHRwOjpIVFRQVXJsRW5jb2RlZCIgQDE5Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSg2MDgsIDE1MjApCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAxOQotCQkJCSAgICBsb2NhdGlvbiAgIAkoNDM2LCAxNDY5KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTM0NAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJIVFRQVXJsRW5jb2RlZCIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBQkZFQTZEMDI5NCIKLQkJCQl3aWR0aCAgICAgIAkzNjIKLQkJCQloZWlnaHQgICAgIAkxMjYKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Omh0dHA6OklIVFRQQmluZGluZyIgQDIwCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSg1NzYsIDE2MCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDIwCi0JCQkJICAgIGxvY2F0aW9uICAgCSg1MCwgMTAxKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTEwNTIKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiSUhUVFBCaW5kaW5nIikKLQkJCQlzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDIwCi0JCQkJICAgIGxvY2F0aW9uICAgCSg1MCwgNTEpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIGFuY2hvciAgICAgCTEwCi0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMTA1MgotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJCQlpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkJCWljb25fc3R5bGUgCSJMYWJlbCIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiNDA5ODQzQTcwMkVCIgotCQkJCXdpZHRoICAgICAgCTEwNzAKLQkJCQloZWlnaHQgICAgIAkyNDIKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAyMQotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjQwOTg0M0YxMDNDMCIKLQkJCQljbGllbnQgICAgIAlAMTYKLQkJCQlzdXBwbGllciAgIAlAMjAKLQkJCQlsaW5lX3N0eWxlIAkwKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6aHR0cDo6SUhUVFBPcGVyYXRpb24iIEAyMgotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTY5NiwgMTYwKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMjIKLQkJCQkgICAgbG9jYXRpb24gICAJKDExNTAsIDEwMSkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkxMDkyCi0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIklIVFRQT3BlcmF0aW9uIikKLQkJCQlzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDIyCi0JCQkJICAgIGxvY2F0aW9uICAgCSgxMTUwLCA1MSkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgYW5jaG9yICAgICAJMTAKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkxMDkyCi0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkJCWljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCQkJaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSI0MDk4NDNGRjAyQkIiCi0JCQkJd2lkdGggICAgICAJMTExMAotCQkJCWhlaWdodCAgICAgCTI0MgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDIzCi0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiNDA5ODQ0NDYwMkNDIgotCQkJCWNsaWVudCAgICAgCUAxNwotCQkJCXN1cHBsaWVyICAgCUAyMgotCQkJCWxpbmVfc3R5bGUgCTApCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3OjpodHRwOjpJSFRUUFVybEVuY29kZWQiIEAyNAotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNjA4LCAxMTA0KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMjQKLQkJCQkgICAgbG9jYXRpb24gICAJKDQ0LCAxMDQ1KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTExMjgKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiSUhUVFBVcmxFbmNvZGVkIikKLQkJCQlzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDI0Ci0JCQkJICAgIGxvY2F0aW9uICAgCSg0NCwgOTk1KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBhbmNob3IgICAgIAkxMAotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTExMjgKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCQkJaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJCQlpY29uX3N0eWxlIAkiTGFiZWwiCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjQwOTg0NDU3MDA2MyIKLQkJCQl3aWR0aCAgICAgIAkxMTQ2Ci0JCQkJaGVpZ2h0ICAgICAJMjQyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjUKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSI0MDk4NDQ5MTAwMDkiCi0JCQkJY2xpZW50ICAgICAJQDE5Ci0JCQkJc3VwcGxpZXIgICAJQDI0Ci0JCQkJbGluZV9zdHlsZSAJMCkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Omh0dHA6OklIVFRQVXJsUmVwbGFjZW1lbnQiIEAyNgotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTU4NCwgMTM3NikKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDI2Ci0JCQkJICAgIGxvY2F0aW9uICAgCSg5ODEsIDEzMTcpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMTIwNgotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJJSFRUUFVybFJlcGxhY2VtZW50IikKLQkJCQlzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDI2Ci0JCQkJICAgIGxvY2F0aW9uICAgCSg5ODEsIDEyNjcpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIGFuY2hvciAgICAgCTEwCi0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMTIwNgotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJCQlpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkJCWljb25fc3R5bGUgCSJMYWJlbCIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiNDA5ODQ0OTYwMEQ4IgotCQkJCXdpZHRoICAgICAgCTEyMjQKLQkJCQloZWlnaHQgICAgIAkyNDIKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAyNwotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjQwOTg0NEQyMDJDNSIKLQkJCQljbGllbnQgICAgIAlAMTgKLQkJCQlzdXBwbGllciAgIAlAMjYKLQkJCQlsaW5lX3N0eWxlIAkwKSkpKSkKLQkgICAgKG9iamVjdCBDbGFzc19DYXRlZ29yeSAid3NkbCIKLQkJaXNfdW5pdCAgICAJVFJVRQotCQlpc19sb2FkZWQgIAlGQUxTRQotCQlmaWxlX25hbWUgIAkiJFZBQkFTRV9QTFVHSU5TX1BBVEhcXG9yZy5lY2xpcHNlLndzdC53c2RsXFxtb2RlbFxcb3JnLmVjbGlwc2Uud3N0LldTREwuY2F0IgotCQlxdWlkICAgICAgIAkiM0FERkI4RTUwMjFFIikKLQkgICAgKG9iamVjdCBDbGFzc19DYXRlZ29yeSAieHNkIgotCQlpc191bml0ICAgIAlUUlVFCi0JCWlzX2xvYWRlZCAgCUZBTFNFCi0JCWZpbGVfbmFtZSAgCSIkVkFCQVNFX1BMVUdJTlNfUEFUSFxcb3JnLmVjbGlwc2UueHNkXFxtb2RlbFxcb3JnLmVjbGlwc2UuWFNELmNhdCIKLQkJcXVpZCAgICAgICAJIjM5QUJEQzZGMDFBQSIpKQotCWxvZ2ljYWxfcHJlc2VudGF0aW9ucyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdAotCSAgICAob2JqZWN0IENsYXNzRGlhZ3JhbSAiTWFpbiIKLQkJcXVpZCAgICAgICAJIjNBQkZEOUE3MDE2MyIKLQkJdGl0bGUgICAgICAJIk1haW4iCi0JCXpvb20gICAgICAgCTEwMAotCQltYXhfaGVpZ2h0IAkyODM1MAotCQltYXhfd2lkdGggIAkyMTYwMAotCQlvcmlnaW5feCAgIAkwCi0JCW9yaWdpbl95ICAgCTAKLQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJICAgIChvYmplY3QgQ2F0ZWdvcnlWaWV3ICJMb2dpY2FsIFZpZXc6Omh0dHAiIEAyOAotCQkJbG9jYXRpb24gICAJKDMzNiwgMjI0KQotCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCSAgICBQYXJlbnRfVmlldyAJQDI4Ci0JCQkgICAgbG9jYXRpb24gICAJKDE5MiwgMTQwKQotCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkgICAgbmxpbmVzICAgICAJMgotCQkJICAgIG1heF93aWR0aCAgCTI4OAotCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCSAgICBsYWJlbCAgICAgIAkiaHR0cCIpCi0JCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlxdWlkdSAgICAgIAkiM0FCRkQ5QUQwMUY4IgotCQkJd2lkdGggICAgICAJMzAwCi0JCQloZWlnaHQgICAgIAkxODApCi0JCSAgICAob2JqZWN0IENhdGVnb3J5VmlldyAiTG9naWNhbCBWaWV3Ojp3c2RsIiBAMjkKLQkJCWxvY2F0aW9uICAgCSg3ODQsIDIyNCkKLQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAyOQotCQkJICAgIGxvY2F0aW9uICAgCSg2NDAsIDE0MCkKLQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJICAgIG5saW5lcyAgICAgCTIKLQkJCSAgICBtYXhfd2lkdGggIAkyODgKLQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkgICAgbGFiZWwgICAgICAJIndzZGwiKQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJcXVpZHUgICAgICAJIjNBREZCOEU1MDIxRSIKLQkJCXdpZHRoICAgICAgCTMwMAotCQkJaGVpZ2h0ICAgICAJMTgwKQotCQkgICAgKG9iamVjdCBDYXRlZ29yeVZpZXcgIkxvZ2ljYWwgVmlldzo6eHNkIiBAMzAKLQkJCWxvY2F0aW9uICAgCSgxMjMyLCAyMjQpCi0JCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJICAgIFBhcmVudF9WaWV3IAlAMzAKLQkJCSAgICBsb2NhdGlvbiAgIAkoMTA4OCwgMTQwKQotCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkgICAgbmxpbmVzICAgICAJMgotCQkJICAgIG1heF93aWR0aCAgCTI4OAotCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCSAgICBsYWJlbCAgICAgIAkieHNkIikKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCXF1aWR1ICAgICAgCSIzOUFCREM2RjAxQUEiCi0JCQl3aWR0aCAgICAgIAkzMDAKLQkJCWhlaWdodCAgICAgCTE4MCkpKSkpCi0gICAgcm9vdF9zdWJzeXN0ZW0gCShvYmplY3QgU3ViU3lzdGVtICJDb21wb25lbnQgVmlldyIKLQlxdWlkICAgICAgIAkiM0FCRkQ5QTcwMTUyIgotCXBoeXNpY2FsX21vZGVscyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdCkKLQlwaHlzaWNhbF9wcmVzZW50YXRpb25zIAkobGlzdCB1bml0X3JlZmVyZW5jZV9saXN0Ci0JICAgIChvYmplY3QgTW9kdWxlX0RpYWdyYW0gIk1haW4iCi0JCXF1aWQgICAgICAgCSIzQUJGRDlBNzAxOEIiCi0JCXRpdGxlICAgICAgCSJNYWluIgotCQl6b29tICAgICAgIAkxMDAKLQkJbWF4X2hlaWdodCAJMjgzNTAKLQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJb3JpZ2luX3ggICAJMAotCQlvcmlnaW5feSAgIAkwCi0JCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0KSkpKQotICAgIHByb2Nlc3Nfc3RydWN0dXJlIAkob2JqZWN0IFByb2Nlc3NlcwotCXF1aWQgICAgICAgCSIzQUJGRDlBNzAxNTMiCi0JUHJvY3NORGV2cyAJKGxpc3QKLQkgICAgKG9iamVjdCBQcm9jZXNzX0RpYWdyYW0gIkRlcGxveW1lbnQgVmlldyIKLQkJcXVpZCAgICAgICAJIjNBQkZEOUE3MDE1NSIKLQkJdGl0bGUgICAgICAJIkRlcGxveW1lbnQgVmlldyIKLQkJem9vbSAgICAgICAJMTAwCi0JCW1heF9oZWlnaHQgCTI4MzUwCi0JCW1heF93aWR0aCAgCTIxNjAwCi0JCW9yaWdpbl94ICAgCTAKLQkJb3JpZ2luX3kgICAJMAotCQlpdGVtcyAgICAgIAkobGlzdCBkaWFncmFtX2l0ZW1fbGlzdCkpKSkKLSAgICBwcm9wZXJ0aWVzIAkob2JqZWN0IFByb3BlcnRpZXMKLQlhdHRyaWJ1dGVzIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJEREwiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkRETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1Byb2plY3QiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkRpcmVjdG9yeSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkRhdGFCYXNlIgotCQkJdmFsdWUgICAgICAJKCJEYXRhQmFzZVNldCIgODAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkRhdGFCYXNlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCQluYW1lICAgICAgIAkiQU5TSSIKLQkJCQl2YWx1ZSAgICAgIAk4MDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRERMIgotCQkJCW5hbWUgICAgICAgCSJPcmFjbGUiCi0JCQkJdmFsdWUgICAgICAJODAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCQluYW1lICAgICAgIAkiU1FMU2VydmVyIgotCQkJCXZhbHVlICAgICAgCTgwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQkJbmFtZSAgICAgICAJIlN5YmFzZSIKLQkJCQl2YWx1ZSAgICAgIAk4MDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRERMIgotCQkJCW5hbWUgICAgICAgCSJXYXRjb20iCi0JCQkJdmFsdWUgICAgICAJODA0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5Q29sdW1uTmFtZSIKLQkJCXZhbHVlICAgICAgCSJJZCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5Q29sdW1uVHlwZSIKLQkJCXZhbHVlICAgICAgCSJOVU1CRVIoNSkiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiVmlld05hbWUiCi0JCQl2YWx1ZSAgICAgIAkiVl8iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiVGFibGVOYW1lIgotCQkJdmFsdWUgICAgICAJIlRfIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkluaGVyaXRTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiX1YiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiRHJvcENsYXVzZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiQmFzZVZpZXdzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJERExTY3JpcHRGaWxlbmFtZSIKLQkJCXZhbHVlICAgICAgCSJEREwxLlNRTCIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkRETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiQ29sdW1uVHlwZSIKLQkJCXZhbHVlICAgICAgCSJWQVJDSEFSIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkxlbmd0aCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiTnVsbHNPSyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkNvbXBvc2l0ZVVuaXF1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiQ2hlY2tDb25zdHJhaW50IgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkRETCIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiZnJhbWV3b3JrIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1Byb2plY3QiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNyZWF0ZU1pc3NpbmdEaXJlY3RvcmllcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJTdG9wT25FcnJvciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVByZXNlcnZlUmVnaW9ucyIKLQkJCXZhbHVlICAgICAgCVRSVUUpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNvbnN0VmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdFNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdFNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSURMRWxlbWVudCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJRExTcGVjaWZpY2F0aW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiSURMU3BlY1NldCIgMjIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSURMU3BlY1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIkludGVyZmFjZSIKLQkJCQl2YWx1ZSAgICAgIAkyMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIlR5cGVkZWYiCi0JCQkJdmFsdWUgICAgICAJNTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJFbnVtZXJhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAk4KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiQ29uc3QiCi0JCQkJdmFsdWUgICAgICAJNzEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJFeGNlcHRpb24iCi0JCQkJdmFsdWUgICAgICAJNjEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJTdHJ1Y3QiCi0JCQkJdmFsdWUgICAgICAJNTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJVbmlvbiIKLQkJCQl2YWx1ZSAgICAgIAk4MSkpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ21JZGVudGlmaWNhdGlvbiIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIgICVYJSAgQCgjKSBwbHVnaW5zL2NvbS5pYm0uZXRvb2xzLmN0Yy5iaW5kaW5nLmh0dHAvc3JjL3Jvc2UvaHR0cGJpbmRpbmdNZGwubWRsLCBjdGMsIGlibWN0YyIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRmlsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUlETE1vZHVsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSW5jbHVzaW9uUHJvdGVjdGlvblN5bWJvbCIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbmNsdWRlcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVCeVNpbXBsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLUJvZHkiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiICAlWCUgIEAoIykgcGx1Z2lucy9jb20uaWJtLmV0b29scy5jdGMuYmluZGluZy5odHRwL3NyYy9yb3NlL2h0dHBiaW5kaW5nTWRsLm1kbCwgY3RjLCBpYm1jdGMiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkZpbGVOYW1lIgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQWRkaXRpb25hbEluY2x1ZGVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUJ5U2ltcGxlTmFtZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbklzT25lV2F5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDb250ZXh0IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJSYWlzZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDYXNlU3BlY2lmaWVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJHJlbGF0aW9uc2hpcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDb25zdFZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0hhcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZV8kc3VwcGxpZXIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGb3J3YXJkUmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkSGFzUmVsVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiSGFzUmVsVHlwZVNldCIgNDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSGFzUmVsVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIkFycmF5IgotCQkJCXZhbHVlICAgICAgCTI0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiU2VxdWVuY2UiCi0JCQkJdmFsdWUgICAgICAJNDcpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUm9sZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZV8kc3VwcGxpZXIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGb3J3YXJkUmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkUm9sZVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkFzc29jVHlwZVNldCIgNDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQXNzb2NUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiQXJyYXkiCi0JCQkJdmFsdWUgICAgICAJMjQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJTZXF1ZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAk0NykpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Vc2VzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fU3Vic3lzdGVtIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJInByb3BlcnR5SWQiCi0JCXZhbHVlICAgICAgCSI4MDkxMzU5NjYiKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1Byb2plY3QiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDcmVhdGVNaXNzaW5nRGlyZWN0b3JpZXMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlN0b3BPbkVycm9yIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRGlyZWN0b3J5IgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlVzZVByZWZpeGVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSW5zdGFuY2VWYXJpYWJsZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSJtXyIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ2xhc3NWYXJpYWJsZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSJzXyIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdEF0dHJpYnV0ZURhdGFUeXBlIgotCQkJdmFsdWUgICAgICAJImludCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdE9wZXJhdGlvblJldHVyblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkidm9pZCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiUm9vdERpciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkF1dG9TeW5jIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2hvd0NvZGVnZW5EbGciCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJKYXZhZG9jRGVmYXVsdEF1dGhvciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkphdmFkb2NEZWZhdWx0VmVyc2lvbiIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkphdmFkb2NEZWZhdWx0U2luY2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJKYXZhZG9jTnVtQXN0ZXJpc2tzIgotCQkJdmFsdWUgICAgICAJMCkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNYXhOdW1DaGFycyIKLQkJCXZhbHVlICAgICAgCTgwKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVkaXRvciIKLQkJCXZhbHVlICAgICAgCSgiRWRpdG9yVHlwZSIgMTAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJWTSIKLQkJCXZhbHVlICAgICAgCSgiVk1UeXBlIiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNsYXNzUGF0aCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVkaXRvclR5cGUiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQnVpbHRJbiIKLQkJCQl2YWx1ZSAgICAgIAkxMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiV2luZG93c1NoZWxsIgotCQkJCXZhbHVlICAgICAgCTEwMSkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlZNVHlwZSIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJTdW4iCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIk1pY3Jvc29mdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiSUJNIgotCQkJCXZhbHVlICAgICAgCTIwMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk5vQ2xhc3NDdXN0b21EbGciCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHbG9iYWxJbXBvcnRzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk9wZW5CcmFjZUNsYXNzU3R5bGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk9wZW5CcmFjZU1ldGhvZFN0eWxlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJVc2VUYWJzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVXNlU3BhY2VzIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTcGFjaW5nSXRlbXMiCi0JCQl2YWx1ZSAgICAgIAkzKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlJvc2VEZWZhdWx0Q29tbWVudFN0eWxlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJBc3Rlcmlza0NvbW1lbnRTdHlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkphdmFDb21tZW50U3R5bGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJKYXZhZG9jQXV0aG9yIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSmF2YWRvY1NpbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSmF2YWRvY1ZlcnNpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRmluYWwiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlZmF1bHRDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ29uc3RydWN0b3JJcyIKLQkJCXZhbHVlICAgICAgCSgiQ3Rvcl9TZXQiIDYyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDdG9yX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNjIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTYzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlByaXZhdGUiCi0JCQkJdmFsdWUgICAgICAJNjQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZpbmFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU3RhdGljSW5pdGlhbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluc3RhbmNlSW5pdGlhbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTdGF0aWMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUNvZGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRpc2FibGVBdXRvU3luYyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXROYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldENvbnRleHRSZWYiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJJc1NpbmdsZVRocmVhZCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJbml0UGFyYW1ldGVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEluaXRQYXJhbWV0ZXJOYW1lcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJc1NlY3VyZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0RGlzcGF0Y2hlciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0RGlzcGF0Y2hlclBhdGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEaXNwYXRjaGVySW5jbHVkZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRpc3BhdGNoZXJGb3J3YXJkIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFNlY3VyaXR5Um9sZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0Z2V0SW5mbyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0QXR0cmlidXRlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFJlcXVlc3RBdHRyaWJ1dGVzTmFtZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RGb3JSZXF1ZXN0QXR0cmlidXRlcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0UGFyYW1ldGVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFJlcXVlc3RQYXJhbWV0ZXJOYW1lcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk1ldGhvZEZvclJlcXVlc3RQYXJhbWV0ZXJzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEhlYWRlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRIZWFkZXJOYW1lcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk1ldGhvZEZvckhlYWRlcnMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SW50SGVhZGVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldERhdGVIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0Q29va2llIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWV0aG9kRm9yQ29va2llIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldENvbnRlbnRUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVIVE1MIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVfWE1MX0REIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJDbXBGaWVsZCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQkVudmlyb25tZW50UHJvcGVydGllcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQkNueEZhY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJSZWZlcmVuY2VzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCU2VjdXJpdHlSb2xlcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQk5hbWVJbkpBUiIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlNlc3Npb25UeXBlIgotCQkJdmFsdWUgICAgICAJKCJFSkJTZXNzaW9uVHlwZV9TZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCU2Vzc2lvblR5cGVfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiU3RhdGVsZXNzIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJTdGF0ZWZ1bCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJUcmFuc2FjdGlvblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkVKQlRyYW5zYWN0aW9uVHlwZV9TZXQiIDIxMSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCVHJhbnNhY3Rpb25UeXBlX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJDb250YWluZXIiCi0JCQkJdmFsdWUgICAgICAJMjExKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkJlYW4iCi0JCQkJdmFsdWUgICAgICAJMjEyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCUGVyc2lzdGVuY2VUeXBlIgotCQkJdmFsdWUgICAgICAJKCJFSkJQZXJzaXN0ZW5jZVR5cGVfU2V0IiAyMjApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlBlcnNpc3RlbmNlVHlwZV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiIgotCQkJCXZhbHVlICAgICAgCTIyMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJCZWFuIgotCQkJCXZhbHVlICAgICAgCTIyMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJDb250YWluZXIiCi0JCQkJdmFsdWUgICAgICAJMjIyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCUmVlbnRyYW50IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQk1QX0V4dGVuZF9DTVAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1TcGVjIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbXBvcnRzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLUJvZHkiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ21JZGVudGlmaWNhdGlvbiIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDb3B5cmlnaHROb3RpY2UiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQWRkaXRpb25hbEltcG9ydHMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTmF0aXZlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU3luY2hyb25pemVkIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19BdHRyaWJ1dGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVHJhbnNpZW50IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJQcm9wZXJ0eVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkJlYW5Qcm9wZXJ0eV9TZXQiIDcxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJCZWFuUHJvcGVydHlfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIk5vdCBBIFByb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTcxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlNpbXBsZSIKLQkJCQl2YWx1ZSAgICAgIAk3MikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJCb3VuZCIKLQkJCQl2YWx1ZSAgICAgIAk3MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJDb25zdHJhaW5lZCIKLQkJCQl2YWx1ZSAgICAgIAk3NCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkluZGl2aWR1YWxDaGFuZ2VNZ3QiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJSZWFkL1dyaXRlIgotCQkJdmFsdWUgICAgICAJKCJSZWFkL1dyaXRlX1NldCIgODEpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlJlYWQvV3JpdGVfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQgJiBXcml0ZSIKLQkJCQl2YWx1ZSAgICAgIAk4MSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJSZWFkIE9ubHkiCi0JCQkJdmFsdWUgICAgICAJODIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiV3JpdGUgT25seSIKLQkJCQl2YWx1ZSAgICAgIAk4MykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRnVsbHlRdWFsaWZpZWRUeXBlcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUm9sZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ29udGFpbmVyQ2xhc3MiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJJbml0aWFsVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJGaW5hbCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlRyYW5zaWVudCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlZvbGF0aWxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiUHJvcGVydHlUeXBlIgotCQkJdmFsdWUgICAgICAJKCJCZWFuUHJvcGVydHlfU2V0IiA3MSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQmVhblByb3BlcnR5X1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJOb3QgQSBQcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAk3MSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJTaW1wbGUiCi0JCQkJdmFsdWUgICAgICAJNzIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQm91bmQiCi0JCQkJdmFsdWUgICAgICAJNzMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQ29uc3RyYWluZWQiCi0JCQkJdmFsdWUgICAgICAJNzQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJJbmRpdmlkdWFsQ2hhbmdlTWd0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiUmVhZC9Xcml0ZSIKLQkJCXZhbHVlICAgICAgCSgiUmVhZC9Xcml0ZV9TZXQiIDgxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJSZWFkL1dyaXRlX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJSZWFkICYgV3JpdGUiCi0JCQkJdmFsdWUgICAgICAJODEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUmVhZCBPbmx5IgotCQkJCXZhbHVlICAgICAgCTgyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIldyaXRlIE9ubHkiCi0JCQkJdmFsdWUgICAgICAJODMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZ1bGx5UXVhbGlmaWVkVHlwZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJJc05hdmlnYWJsZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiMzYwMDAwMDAyIikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiRERMU2NyaXB0RmlsZW5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiRERMMS5TUUwiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkRyb3BDbGF1c2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5Q29sdW1uTmFtZSIKLQkJCXZhbHVlICAgICAgCSJfSUQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlByaW1hcnlLZXlDb2x1bW5UeXBlIgotCQkJdmFsdWUgICAgICAJIk5VTUJFUig1LDApIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJTY2hlbWFOYW1lUHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiU2NoZW1hTmFtZVN1ZmZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRhYmxlTmFtZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRhYmxlTmFtZVN1ZmZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlR5cGVOYW1lUHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHlwZU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJWaWV3TmFtZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlZpZXdOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVmFycmF5TmFtZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlZhcnJheU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJOZXN0ZWRUYWJsZU5hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJOZXN0ZWRUYWJsZU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPYmplY3RUYWJsZU5hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPYmplY3RUYWJsZU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1TcGVjIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNTY2hlbWEiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT0lEIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiV2hlcmVDbGF1c2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDaGVja0NvbnN0cmFpbnQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb2xsZWN0aW9uVHlwZUxlbmd0aCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkNvbGxlY3Rpb25UeXBlUHJlY2lzaW9uIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiQ29sbGVjdGlvblR5cGVTY2FsZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkNvbGxlY3Rpb25PZlJFRlMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX09wZXJhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk1ldGhvZEtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIk1ldGhvZEtpbmRTZXQiIDE5MDMpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk92ZXJsb2FkSUQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPcmRlck51bWJlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzUmVhZE5vRGF0YVN0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNSZWFkTm9Qcm9jZXNzU3RhdGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1dyaXRlTm9EYXRhU3RhdGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1dyaXRlTm9Qcm9jZXNzU3RhdGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1NlbGZpc2giCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiVHJpZ2dlclR5cGVTZXQiIDE4MDEpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRyaWdnZXJFdmVudCIKLQkJCXZhbHVlICAgICAgCSgiVHJpZ2dlckV2ZW50U2V0IiAxNjAxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyVGV4dCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRyaWdnZXJSZWZlcmVuY2luZ05hbWVzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlckZvckVhY2giCi0JCQl2YWx1ZSAgICAgIAkoIlRyaWdnZXJGb3JFYWNoU2V0IiAxNzAxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyV2hlbkNsYXVzZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk1ldGhvZEtpbmRTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiTWFwTWV0aG9kIgotCQkJCXZhbHVlICAgICAgCTE5MDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiT3JkZXJNZXRob2QiCi0JCQkJdmFsdWUgICAgICAJMTkwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJGdW5jdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxOTAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlByb2NlZHVyZSIKLQkJCQl2YWx1ZSAgICAgIAkxOTA0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIk9wZXJhdG9yIgotCQkJCXZhbHVlICAgICAgCTE5MDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiQ29uc3RydWN0b3IiCi0JCQkJdmFsdWUgICAgICAJMTkwNikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJEZXN0cnVjdG9yIgotCQkJCXZhbHVlICAgICAgCTE5MDcpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiVHJpZ2dlciIKLQkJCQl2YWx1ZSAgICAgIAkxOTA4KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkNhbGN1bGF0ZWQiCi0JCQkJdmFsdWUgICAgICAJMTkwOSkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRyaWdnZXJUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkFGVEVSIgotCQkJCXZhbHVlICAgICAgCTE4MDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiQkVGT1JFIgotCQkJCXZhbHVlICAgICAgCTE4MDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiSU5TVEVBRCBPRiIKLQkJCQl2YWx1ZSAgICAgIAkxODAzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlckZvckVhY2hTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiUk9XIgotCQkJCXZhbHVlICAgICAgCTE3MDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiU1RBVEVNRU5UIgotCQkJCXZhbHVlICAgICAgCTE3MDIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyRXZlbnRTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiSU5TRVJUIgotCQkJCXZhbHVlICAgICAgCTE2MDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiVVBEQVRFIgotCQkJCXZhbHVlICAgICAgCTE2MDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiREVMRVRFIgotCQkJCXZhbHVlICAgICAgCTE2MDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiSU5TRVJUIE9SIFVQREFURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjA0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCBPUiBERUxFVEUiCi0JCQkJdmFsdWUgICAgICAJMTYwNSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJVUERBVEUgT1IgREVMRVRFIgotCQkJCXZhbHVlICAgICAgCTE2MDYpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUiCi0JCQkJdmFsdWUgICAgICAJMTYwNykpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUm9sZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk9yZGVyTnVtYmVyIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19BdHRyaWJ1dGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPcmRlck51bWJlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzVW5pcXVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTnVsbHNBbGxvd2VkIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJMZW5ndGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJQcmVjaXNpb24iCi0JCQl2YWx1ZSAgICAgIAkiMiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiU2NhbGUiCi0JCQl2YWx1ZSAgICAgIAkiNiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNJbmRleCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzUHJpbWFyeUtleSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkNvbXBvc2l0ZVVuaXF1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkNoZWNrQ29uc3RyYWludCIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJInByb3BlcnR5SWQiCi0JCXZhbHVlICAgICAgCSI4MDkxMzU5NjYiKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVzZU1TVkMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSGVhZGVyRmlsZUV4dGVuc2lvbiIKLQkJCXZhbHVlICAgICAgCSJoIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSGVhZGVyRmlsZUJhY2t1cEV4dGVuc2lvbiIKLQkJCXZhbHVlICAgICAgCSJofiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkhlYWRlckZpbGVUZW1wb3JhcnlFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiaCMiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlRmlsZUV4dGVuc2lvbiIKLQkJCXZhbHVlICAgICAgCSJjcHAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlRmlsZUJhY2t1cEV4dGVuc2lvbiIKLQkJCXZhbHVlICAgICAgCSJjcH4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlRmlsZVRlbXBvcmFyeUV4dGVuc2lvbiIKLQkJCXZhbHVlICAgICAgCSJjcCMiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDcmVhdGVNaXNzaW5nRGlyZWN0b3JpZXMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTdG9wT25FcnJvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFcnJvckxpbWl0IgotCQkJdmFsdWUgICAgICAJMzApCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRpcmVjdG9yeSIKLQkJCXZhbHVlICAgICAgCSIkUk9TRUNQUF9TT1VSQ0UiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJQYXRoU2VwYXJhdG9yIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkZpbGVOYW1lRm9ybWF0IgotCQkJdmFsdWUgICAgICAJIjEyOHZ4X2IiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb29sZWFuVHlwZSIKLQkJCXZhbHVlICAgICAgCSJpbnQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBbGxvd1RlbXBsYXRlcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFsbG93RXhwbGljaXRJbnN0YW50aWF0aW9ucyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFsbG93UHJvdGVjdGVkSW5oZXJpdGFuY2UiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb21tZW50V2lkdGgiCi0JCQl2YWx1ZSAgICAgIAk2MCkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT25lQnlWYWx1ZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0Q2xhc3MiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPbmVCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0Q2xhc3MgKiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wdGlvbmFsQnlWYWx1ZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJPcHRpb25hbEJ5VmFsdWU8JHRhcmdldENsYXNzPiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wdGlvbmFsQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldENsYXNzICoiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGaXhlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldENsYXNzWyRsaW1pdF0iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRGaXhlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldENsYXNzWyRsaW1pdF0iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGaXhlZEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzcyAqWyRsaW1pdF0iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRGaXhlZEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzcyAqWyRsaW1pdF0iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkQnlWYWx1ZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJCb3VuZGVkTGlzdEJ5VmFsdWU8JHRhcmdldENsYXNzLCRsaW1pdD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRCb3VuZGVkQnlWYWx1ZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJCb3VuZGVkU2V0QnlWYWx1ZTwkdGFyZ2V0Q2xhc3MsJGxpbWl0PiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkJvdW5kZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJCb3VuZGVkTGlzdEJ5UmVmZXJlbmNlPCR0YXJnZXRDbGFzcywkbGltaXQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkQm91bmRlZEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIkJvdW5kZWRTZXRCeVJlZmVyZW5jZTwkdGFyZ2V0Q2xhc3MsJGxpbWl0PiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVuYm91bmRlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiVW5ib3VuZGVkTGlzdEJ5VmFsdWU8JHRhcmdldENsYXNzPiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVub3JkZXJlZFVuYm91bmRlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiVW5ib3VuZGVkU2V0QnlWYWx1ZTwkdGFyZ2V0Q2xhc3M+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5ib3VuZGVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiVW5ib3VuZGVkTGlzdEJ5UmVmZXJlbmNlPCR0YXJnZXRDbGFzcz4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRVbmJvdW5kZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJVbmJvdW5kZWRTZXRCeVJlZmVyZW5jZTwkdGFyZ2V0Q2xhc3M+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkQnlWYWx1ZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJBc3NvY2lhdGlvbkJ5VmFsdWU8JHF1YWx0eXBlLCAkcXVhbGNvbnQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkUXVhbGlmaWVkQnlWYWx1ZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJEaWN0aW9uYXJ5QnlWYWx1ZTwkcXVhbHR5cGUsICRxdWFsY29udD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJRdWFsaWZpZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJBc3NvY2lhdGlvbkJ5UmVmZXJlbmNlPCRxdWFsdHlwZSwgJHF1YWxjb250PiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVub3JkZXJlZFF1YWxpZmllZEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIkRpY3Rpb25hcnlCeVJlZmVyZW5jZTwkcXVhbHR5cGUsICRxdWFsY29udD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVByZXNlcnZlUmVnaW9ucyIKLQkJCXZhbHVlICAgICAgCVRSVUUpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQ2xhc3MiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb25UeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNsYXNzS2V5IgotCQkJdmFsdWUgICAgICAJImNsYXNzIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiIDMpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJVbnByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBbGwiCi0JCQkJdmFsdWUgICAgICAJMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJQdXRCb2RpZXNJblNwZWMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlU2V0IiAxOTkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZWZhdWx0Q29uc3RydWN0b3JWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZURlZmF1bHRDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFeHBsaWNpdERlZmF1bHRDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUNvcHlDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVTZXQiIDE5OSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvcHlDb25zdHJ1Y3RvclZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lQ29weUNvbnN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkV4cGxpY2l0Q29weUNvbnN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVzdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRlc3RydWN0b3JWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRlc3RydWN0b3JLaW5kIgotCQkJdmFsdWUgICAgICAJKCJUaHJlZUtpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZURlc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVBc3NpZ25tZW50T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZVNldCIgMTk5KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzaWdubWVudFZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzaWdubWVudEtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIlRocmVlS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lQXNzaWdubWVudE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVxdWFsaXR5T3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVTZXQiIDE5OSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkVxdWFsaXR5VmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFcXVhbGl0eUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIkZyaWVuZEtpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUVxdWFsaXR5T3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVJlbGF0aW9uYWxPcGVyYXRpb25zIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlJlbGF0aW9uYWxWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlJlbGF0aW9uYWxLaW5kIgotCQkJdmFsdWUgICAgICAJKCJGcmllbmRLaW5kU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVSZWxhdGlvbmFsT3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN0b3JhZ2VNZ210T3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTdG9yYWdlTWdtdFZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lU3RvcmFnZU1nbXRPcGVyYXRpb25zIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU3Vic2NyaXB0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlN1YnNjcmlwdFZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3Vic2NyaXB0S2luZCIKLQkJCXZhbHVlICAgICAgCSgiVGhyZWVLaW5kU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTdWJzY3JpcHRSZXN1bHRUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVN1YnNjcmlwdE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlcmVmZXJlbmNlT3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRlcmVmZXJlbmNlVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXJlZmVyZW5jZUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIlRocmVlS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVyZWZlcmVuY2VSZXN1bHRUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZURlcmVmZXJlbmNlT3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5kaXJlY3Rpb25PcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5kaXJlY3Rpb25WaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluZGlyZWN0aW9uS2luZCIKLQkJCXZhbHVlICAgICAgCSgiVGhyZWVLaW5kU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmRpcmVjdGlvblJlc3VsdFR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lSW5kaXJlY3Rpb25PcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTdHJlYW1PcGVyYXRpb25zIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlN0cmVhbVZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lU3RyZWFtT3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJUaHJlZUtpbmRTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiS2luZFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29tbW9uIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbCIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFic3RyYWN0IgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU3RhdGljIgotCQkJCXZhbHVlICAgICAgCTIwMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGcmllbmRLaW5kU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb21tb24iCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQkJdmFsdWUgICAgICAJMjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGcmllbmQiCi0JCQkJdmFsdWUgICAgICAJMjA0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJEZWNsYXJlQW5kRGVmaW5lIgotCQkJCXZhbHVlICAgICAgCTE5OSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRGVjbGFyZU9ubHkiCi0JCQkJdmFsdWUgICAgICAJMjA1KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJEb05vdERlY2xhcmUiCi0JCQkJdmFsdWUgICAgICAJMjA2KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlZpc2liaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk0NSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTQ0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTQzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb25zdFZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdFNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZWZhdWx0U3BlY2lmaWVyIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLVNwZWMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9ucyIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIgMykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFsbCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiICAlWCUgIEAoIykgcGx1Z2lucy9jb20uaWJtLmV0b29scy5jdGMuYmluZGluZy5odHRwL3NyYy9yb3NlL2h0dHBiaW5kaW5nTWRsLm1kbCwgY3RjLCBpYm1jdGMiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGaWxlTmFtZSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQWxsb3dFeHRlbnNpb25sZXNzRmlsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVzaW9uUHJvdGVjdGlvblN5bWJvbCIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUZvcm1hdCIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0IAotfC8vICRwYWNrYWdlCi18I2luY2x1ZGUgIiRmaWxlIgotfAotCQkJKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUJ5U2ltcGxlTmFtZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlUHJlY29tcGlsZWRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZU9yZGVyIgotCQkJdmFsdWUgICAgICAJIkFNSVIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW5jbHVkZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluaW5nU3R5bGUiCi0JCQl2YWx1ZSAgICAgIAkoIklubGluaW5nU3R5bGVTZXQiIDIwNykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluaW5nU3R5bGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkluQ2xhc3NEZWNsYXJhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDgpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZvbGxvd2luZ0NsYXNzRGVjbGFyYXRpb24iCi0JCQkJdmFsdWUgICAgICAJMjA3KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlR5cGVzRGVmaW5lZCIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUNsb3N1cmUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLUJvZHkiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9ucyIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIgMykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFsbCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiICAlWCUgIEAoIykgcGx1Z2lucy9jb20uaWJtLmV0b29scy5jdGMuYmluZGluZy5odHRwL3NyYy9yb3NlL2h0dHBiaW5kaW5nTWRsLm1kbCwgY3RjLCBpYm1jdGMiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGaWxlTmFtZSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQWxsb3dFeHRlbnNpb25sZXNzRmlsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUZvcm1hdCIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0IAotfC8vICRwYWNrYWdlCi18I2luY2x1ZGUgIiRmaWxlIgotfAotCQkJKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUJ5U2ltcGxlTmFtZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlUHJlY29tcGlsZWRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlT3JkZXIiCi0JCQl2YWx1ZSAgICAgIAkiQU1JUiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbmNsdWRlcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5pbmdTdHlsZSIKLQkJCXZhbHVlICAgICAgCSgiSW5saW5pbmdTdHlsZVNldCIgMjA3KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5pbmdTdHlsZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW5DbGFzc0RlY2xhcmF0aW9uIgotCQkJCXZhbHVlICAgICAgCTIwOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRm9sbG93aW5nQ2xhc3NEZWNsYXJhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDcpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVHlwZXNEZWZpbmVkIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlQ2xvc3VyZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT3BlcmF0aW9uS2luZCIKLQkJCXZhbHVlICAgICAgCSgiT3BlcmF0aW9uS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT3BlcmF0aW9uS2luZFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29tbW9uIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbCIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFic3RyYWN0IgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU3RhdGljIgotCQkJCXZhbHVlICAgICAgCTIwMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRnJpZW5kIgotCQkJCXZhbHVlICAgICAgCTIwNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc0NvbnN0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbklzRXhwbGljaXQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkVudHJ5Q29kZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXhpdENvZGUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25zIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IiAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5wcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWxsIgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm9keUFubm90YXRpb25zIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbklzT25lV2F5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvbnRleHQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUmFpc2VzIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fSGFzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9yZGVyZWQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlXyRzdXBwbGllciIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiIDE0KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk0NSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTQ0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTQzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXRSZWxhdGlvbnNoaXBWaXNpYmlsaXR5IgotCQkJCXZhbHVlICAgICAgCTIxMCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5yZXN0cmljdGVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk11dGFibGUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29uc3QiCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVySXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyRmllbGRTaXplIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluaXRpYWxWYWx1ZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVHZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVNldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiZ2V0XyRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZXROYW1lIgotCQkJdmFsdWUgICAgICAJInNldF8kcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0S2luZHMiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFNldEtpbmRzU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRTZXRLaW5kc1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29tbW9uIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbCIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFic3RyYWN0IgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU3RhdGljIgotCQkJCXZhbHVlICAgICAgCTIwMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRnJpZW5kIgotCQkJCXZhbHVlICAgICAgCTIwNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb250YWluZXJDbGFzcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZWxlY3Rvck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2VsZWN0b3JUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJKCJHZXRSZXN1bHRJc0NvbnN0U2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0UmVzdWx0SXNDb25zdFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRmFsc2UiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVHJ1ZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTYW1lX0FzX0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVNldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkZvcndhcmRSZWZlcmVuY2VPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkJvdW5kZWRIYXNSZWxUeXBlIgotCQkJdmFsdWUgICAgICAJKCJIYXNSZWxUeXBlU2V0IiA0NykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkhhc1JlbFR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFycmF5IgotCQkJCXZhbHVlICAgICAgCTI0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTZXF1ZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAk0NykpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0Fzc29jaWF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk5hbWVJZlVubGFiZWxlZCIKLQkJCXZhbHVlICAgICAgCSJ0aGVfJHRhcmdldENsYXNzIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Jbmhlcml0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluc3RhbmNlQXJndW1lbnRzIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUm9sZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGb3J3YXJkUmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlXyR0YXJnZXRDbGFzcyIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiIDE0KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk0NSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTQ0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTQzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXRSZWxhdGlvbnNoaXBWaXNpYmlsaXR5IgotCQkJCXZhbHVlICAgICAgCTIxMCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5yZXN0cmljdGVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk11dGFibGUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29uc3QiCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVySXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyRmllbGRTaXplIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluaXRpYWxWYWx1ZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29udGFpbmVyQ2xhc3MiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29udGFpbmVyR2V0IgotCQkJdmFsdWUgICAgICAJIiRkYXRhLmdldCgka2V5cykiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb250YWluZXJTZXQiCi0JCQl2YWx1ZSAgICAgIAkiJGRhdGEuc2V0KCRrZXlzLCR2YWx1ZSkiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJRdWFsaWZpZWRDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0NvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkc3VwcGxpZXIgKiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NJbml0aWFsVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzIgotCQkJdmFsdWUgICAgICAJKCJHZXRTZXRLaW5kc1NldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0S2luZHNTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZyaWVuZCIKLQkJCQl2YWx1ZSAgICAgIAkyMDQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVHZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXROYW1lIgotCQkJdmFsdWUgICAgICAJImdldF8kdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFJlc3VsdElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFJlc3VsdElzQ29uc3RTZXQiIDIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGYWxzZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJUcnVlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlNhbWVfQXNfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVHZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVNldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlNldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkic2V0XyR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZXRSZXR1cm5zVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lU2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAkoIlF1YWxpZmllZEdldFNldEJ5UmVmZXJlbmNlU2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkR2V0U2V0QnlSZWZlcmVuY2VTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZhbHNlIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlRydWUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU2FtZV9Bc19HZXRTZXRCeVJlZmVyZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAkyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlUXVhbGlmaWVkR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkR2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJnZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEdldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJRdWFsaWZpZWRHZXRSZXN1bHRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJKCJHZXRSZXN1bHRJc0NvbnN0U2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lUXVhbGlmaWVkR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVRdWFsaWZpZWRTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJRdWFsaWZpZWRTZXROYW1lIgotCQkJdmFsdWUgICAgICAJInNldF8kdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVF1YWxpZmllZFNldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQXNzb2NDbGFzc0RhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzRGF0YU1lbWJlck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NEYXRhTWVtYmVyVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiIDE0KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk0NSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTQ0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTQzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXRSZWxhdGlvbnNoaXBWaXNpYmlsaXR5IgotCQkJCXZhbHVlICAgICAgCTIxMCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzRGF0YU1lbWJlck11dGFiaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucmVzdHJpY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJNdXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0RhdGFNZW1iZXJJc1ZvbGF0aWxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NHZXRTZXRLaW5kcyIKLQkJCXZhbHVlICAgICAgCSgiR2V0U2V0S2luZHNTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQXNzb2NDbGFzc0dldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NHZXROYW1lIgotCQkJdmFsdWUgICAgICAJImdldF8kdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0dldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzR2V0UmVzdWx0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCSgiR2V0UmVzdWx0SXNDb25zdFNldCIgMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUFzc29jQ2xhc3NHZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUFzc29jQ2xhc3NTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzU2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJzZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NTZXRSZXR1cm5zVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lQXNzb2NDbGFzc1NldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NGb3J3YXJkUmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkJvdW5kZWRSb2xlVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiQXNzb2NUeXBlU2V0IiA0NykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXJyYXkiCi0JCQkJdmFsdWUgICAgICAJMjQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlNlcXVlbmNlIgotCQkJCXZhbHVlICAgICAgCTQ3KSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRhdHRyaWJ1dGUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiIDE0KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk0NSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTQ0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTQzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXRBdHRyaWJ1dGVWaXNpYmlsaXR5IgotCQkJCXZhbHVlICAgICAgCTIxMSkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5yZXN0cmljdGVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk11dGFibGUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29uc3QiCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVySXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyRmllbGRTaXplIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXROYW1lIgotCQkJdmFsdWUgICAgICAJImdldF8kYXR0cmlidXRlIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJzZXRfJGF0dHJpYnV0ZSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzIgotCQkJdmFsdWUgICAgICAJKCJHZXRTZXRLaW5kc1NldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0S2luZHNTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZyaWVuZCIKLQkJCQl2YWx1ZSAgICAgIAkyMDQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFJlc3VsdElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFJlc3VsdElzQ29uc3RTZXQiIDIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGYWxzZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJUcnVlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlNhbWVfQXNfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRTZXRCeVJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVHZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZXRSZXR1cm5zVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lU2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ2FzZVNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fVXNlcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGb3J3YXJkUmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb2R5UmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19TdWJzeXN0ZW0iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGlyZWN0b3J5IgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnlJc09uU2VhcmNoTGlzdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJQcmVjb21waWxlZEhlYWRlciIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NhdGVnb3J5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklzTmFtZXNwYWNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluZGVudCIKLQkJCXZhbHVlICAgICAgCTIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25zIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IiAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5wcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWxsIgotCQkJCXZhbHVlICAgICAgCTMpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJInByb3BlcnR5SWQiCi0JCXZhbHVlICAgICAgCSI4MDkxMzU5NjYiKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1Byb2plY3QiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJWZXJzaW9uIgotCQkJdmFsdWUgICAgICAJIjUuMCIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIk1TVkNDbGFzc1R5cGVTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TVkNDbGFzc1R5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiSW50ZXJmYWNlX1BhcnQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJDb25uZWN0aW9uX1BhcnQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJDbGFzc19GYWN0b3J5IgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT2JqZWN0RnVuY3Rpb25hbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiQ09iamVjdEZ1bmN0aW9uYWxpdHlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNPYmplY3RGdW5jdGlvbmFsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJEeW5hbWljIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRHluY3JlYXRlIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiU2VyaWFsIgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZU92ZXJyaWRlR3JvdXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFHcm91cCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9EQVRBX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGaWVsZEdyb3VwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0ZJRUxEX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVNZXNzYWdlR3JvdXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZU1lc3NhZ2VNYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfTVNHX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1FU1NBR0VfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFRmFjdG9yeSIKLQkJCXZhbHVlICAgICAgCSgiT0xFRmFjdG9yeVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFRmFjdG9yeVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiQnVpbHRfaW4iCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTaW1wbGUiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJMaWNlbnNlZCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRUNsYXNzSUQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZU9MRUN0bFR5cGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJPTEVDdGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVPTEVUeXBlTGliIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFVHlwZUxpYklEIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFVHlwZUxpYk1ham9yIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFVHlwZUxpYk1pbm9yIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVQcm9wUGFnZUlEcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRVByb3BQYWdlSURzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGlzcGF0Y2hNYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiU3RvY2tQcm9wZXJ0aWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrRnVuY3Rpb25zIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRpc3BhdGNoRGVmVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURpc3BJZEVudW0iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUF9JRF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW50ZXJmYWNlTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiSU5URVJGQUNFX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkluaXRJbnRlcmZhY2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUV2ZW50TWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkVWRU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrRXZlbnRzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRXZlbnRTaW5rTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UU0lOS19FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVFNJTktfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRVZFTlRTSU5LX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlByb3BOb3RpZnlTaW5rcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUNvbm5lY3Rpb25NYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT05ORUNUSU9OX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNvbm5lY3Rpb25Qb2ludElJRCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkluaGVyaXRhbmNlVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRlY2xTcGVjIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFQ29tbWFuZHMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTUZDRGVjbGFyZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTUZDSW1wbGVtZW50cyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBVExfRGVjbGFyZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDT01NYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT01fTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDb25uZWN0aW9uUG9pbnRNYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT05ORUNUSU9OX1BPSU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlTXNnTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNHX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlUHJvcGVydHlNYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQUk9QRVJUWV9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX09wZXJhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIk1TVkNPcGVyYXRpb25UeXBlU2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJNU1ZDT3BlcmF0aW9uVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJOb3JtYWwiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsX092ZXJyaWRlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWVzc2FnZV9IYW5kbGVyIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRGlzcGF0Y2hfSGFuZGxlciIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkV2ZW50X0ZpcmluZ19GdW5jdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkV2ZW50X1NpbmtfSGFuZGxlciIKLQkJCQl2YWx1ZSAgICAgIAk1KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlN0ZF9PTEVfTWV0aG9kIgotCQkJCXZhbHVlICAgICAgCTYpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiQ29tbWFuZF9QYXJzZXIiCi0JCQkJdmFsdWUgICAgICAJNykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJQcm9wZXJ0eV9HZXRfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJQcm9wZXJ0eV9TZXRfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJOSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJQcm9wZXJ0eV9Ob3RpZnlfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJMTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWFjcm9fR2VuZXJhdGVkX0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTExKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX01TR19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJNRVNTQUdFX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9ESVNQQVRDSF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJESVNQQVRDSF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRVZFTlRfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRVZFTlRfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UU0lOS19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJFVkVOVFNJTktfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ2FsbFR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJEZWNsU3BlYyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkJvZHlJbWFnZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDQXR0cmlidXRlVHlwZVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWVtYmVyX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiR2V0X1NldF9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkRpYWxvZ19EYXRhIgotCQkJCXZhbHVlICAgICAgCTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRmllbGRfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlN0b2NrX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRGVjbFNwZWMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQb2ludGVyQmFzZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNhbGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiU3RvY2tQcm9wZXJ0eUltcGxlbWVudGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19IYXMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDQXR0cmlidXRlVHlwZVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWVtYmVyX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiR2V0X1NldF9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkRpYWxvZ19EYXRhIgotCQkJCXZhbHVlICAgICAgCTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRmllbGRfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlN0b2NrX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRGVjbFNwZWMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQb2ludGVyQmFzZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNhbGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiU3RvY2tQcm9wZXJ0eUltcGxlbWVudGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19BdHRyaWJ1dGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDQXR0cmlidXRlVHlwZVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWVtYmVyX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiR2V0X1NldF9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkRpYWxvZ19EYXRhIgotCQkJCXZhbHVlICAgICAgCTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRmllbGRfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlN0b2NrX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRGVjbFNwZWMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQb2ludGVyQmFzZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNhbGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiU3RvY2tQcm9wZXJ0eUltcGxlbWVudGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5jbHVkZXNHcm91cCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9JTkNMVURFU19FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5zZXJ0TG9jYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1Cb2R5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbmNsdWRlc0dyb3VwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0lOQ0xVREVTX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbnNlcnRMb2NhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiU0NDIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJUeXBlTGliSW1wb3J0ZXIiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJInByb3BlcnR5SWQiCi0JCXZhbHVlICAgICAgCSI3ODM2MDYzNzgiKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQ2xhc3MiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkNyZWF0YWJsZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIlByaXZhdGUiCi0JCQkJdmFsdWUgICAgICAJMjIxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiUHVibGljTm90Q3JlYXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTIxMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIlNpbmdsZVVzZSIKLQkJCQl2YWx1ZSAgICAgIAkyMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJHbG9iYWxTaW5nbGVVc2UiCi0JCQkJdmFsdWUgICAgICAJMjE1KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiTXVsdGlVc2UiCi0JCQkJdmFsdWUgICAgICAJMjE5KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiR2xvYmFsTXVsdGlVc2UiCi0JCQkJdmFsdWUgICAgICAJMjIwKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJPcHRpb25CYXNlIgotCQkJdmFsdWUgICAgICAJIjAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiT3B0aW9uRXhwbGljaXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiT3B0aW9uQ29tcGFyZSIKLQkJCXZhbHVlICAgICAgCSgiQ29tcGFyZVNldCIgMjAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkNyZWF0YWJsZSIKLQkJCXZhbHVlICAgICAgCSgiQ3JlYXRhYmxlU2V0IiAyMjEpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbml0aWFsaXphdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVUZXJtaW5hdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiQ29sbGVjdGlvbkNsYXNzIgotCQkJdmFsdWUgICAgICAJIkNvbGxlY3Rpb24iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiQ29tcGFyZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiQmluYXJ5IgotCQkJCXZhbHVlICAgICAgCTIwMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIlRleHQiCi0JCQkJdmFsdWUgICAgICAJMjA0KSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX09wZXJhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiT3BlcmF0aW9uTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkb3BlcmF0aW9uIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkxpYnJhcnlOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJBbGlhc05hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIklzU3RhdGljIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJFbnRyeUNvZGUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJFeGl0Q29kZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJOZXciCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIldpdGhFdmVudHMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIlN1YnNjcmlwdCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZSRzdXBwbGllciIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJHJlbGF0aW9uc2hpcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUdldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlTGV0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk5ldyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiV2l0aEV2ZW50cyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiU3Vic2NyaXB0IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlJHN1cHBsaWVyIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVNldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVMZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fSW5oZXJpdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiSW1wbGVtZW50c0RlbGVnYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiUHJvamVjdEZpbGUiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWxTdHVkaW8iCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjgwOTEzNTk2NiIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1Byb2plY3QiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ3JlYXRlTWlzc2luZ0RpcmVjdG9yaWVzIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiRWRpdG9yIgotCQkJdmFsdWUgICAgICAJKCJFZGl0b3JUeXBlIiAxMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlUGF0aCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJTdG9wT25FcnJvciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkVkaXRvclR5cGUiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQkJbmFtZSAgICAgICAJIkJ1aWx0SW4iCi0JCQkJdmFsdWUgICAgICAJMTAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJCW5hbWUgICAgICAgCSJXaW5kb3dzU2hlbGwiCi0JCQkJdmFsdWUgICAgICAJMTAxKSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQ2xhc3MiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQXJyYXlEaW1lbnNpb25zIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkNvbnN0VmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb25UeXBlIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLVNwZWMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQWRkaXRpb25hbEluY2x1ZGVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICVRJSAlWiUgJVclIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiSW5jbHVzaW9uUHJvdGVjdGlvblN5bWJvbCIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtQm9keSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW5jbHVkZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiICAlWCUgJVElICVaJSAlVyUiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJJbmNsdXNpb25Qcm90ZWN0aW9uU3ltYm9sIgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX09wZXJhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDb250ZXh0IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbklzT25lV2F5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkFycmF5RGltZW5zaW9ucyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDYXNlU3BlY2lmaWVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIklzUmVhZE9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiT3JkZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Sb2xlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkFycmF5RGltZW5zaW9ucyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDYXNlU3BlY2lmaWVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIk9yZGVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkJvdW5kZWRSb2xlVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiQXNzb2NUeXBlU2V0IiA0NykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkFzc29jVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCQluYW1lICAgICAgIAkiQXJyYXkiCi0JCQkJdmFsdWUgICAgICAJMjQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQkJbmFtZSAgICAgICAJIlNlcXVlbmNlIgotCQkJCXZhbHVlICAgICAgCTQ3KSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fVXNlcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJEZWZhdWx0X1NlcnZsZXRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0Q29udGV4dFJlZiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIklzU2luZ2xlVGhyZWFkIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEluaXRQYXJhbWV0ZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SW5pdFBhcmFtZXRlck5hbWVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldElzU2VjdXJlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFJlcXVlc3REaXNwYXRjaGVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFJlcXVlc3REaXNwYXRjaGVyUGF0aCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRpc3BhdGNoZXJJbmNsdWRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRGlzcGF0Y2hlckZvcndhcmQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0U2VjdXJpdHlSb2xlcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRnZXRJbmZvIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRmluYWwiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlZmF1bHRDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ29uc3RydWN0b3JJcyIKLQkJCXZhbHVlICAgICAgCSgiQ3Rvcl9TZXQiIDYyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDdG9yX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNjIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTYzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlByaXZhdGUiCi0JCQkJdmFsdWUgICAgICAJNjQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZpbmFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU3RhdGljSW5pdGlhbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluc3RhbmNlSW5pdGlhbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJIkh0dHBfU2VydmxldF9fQ2xhc3MiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdEF0dHJpYnV0ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0QXR0cmlidXRlc05hbWVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWV0aG9kRm9yUmVxdWVzdEF0dHJpYnV0ZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdFBhcmFtZXRlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0UGFyYW1ldGVyTmFtZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RGb3JSZXF1ZXN0UGFyYW1ldGVycyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SGVhZGVyTmFtZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RGb3JIZWFkZXJzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEludEhlYWRlciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXREYXRlSGVhZGVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldENvb2tpZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk1ldGhvZEZvckNvb2tpZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRDb250ZW50VHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSFRNTCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvbnN0cnVjdG9ySXMiCi0JCQl2YWx1ZSAgICAgIAkoIkN0b3JfU2V0IiA2MikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ3Rvcl9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHVibGljIgotCQkJCXZhbHVlICAgICAgCTYyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk2MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTY0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGaW5hbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN0YXRpY0luaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbnN0YW5jZUluaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJEZWZhdWx0X0VKQl9fQ2xhc3MiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZV9YTUxfREQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQkNtcEZpZWxkIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCRW52aXJvbm1lbnRQcm9wZXJ0aWVzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCQ254RmFjdG9yeSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlJlZmVyZW5jZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJTZWN1cml0eVJvbGVzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCTmFtZUluSkFSIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCU2Vzc2lvblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkVKQlNlc3Npb25UeXBlX1NldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJTZXNzaW9uVHlwZV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJTdGF0ZWxlc3MiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlN0YXRlZnVsIgotCQkJCXZhbHVlICAgICAgCTIwMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlRyYW5zYWN0aW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiRUpCVHJhbnNhY3Rpb25UeXBlX1NldCIgMjExKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJUcmFuc2FjdGlvblR5cGVfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkNvbnRhaW5lciIKLQkJCQl2YWx1ZSAgICAgIAkyMTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQmVhbiIKLQkJCQl2YWx1ZSAgICAgIAkyMTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJQZXJzaXN0ZW5jZVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkVKQlBlcnNpc3RlbmNlVHlwZV9TZXQiIDIyMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCUGVyc2lzdGVuY2VUeXBlX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSIiCi0JCQkJdmFsdWUgICAgICAJMjIwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkJlYW4iCi0JCQkJdmFsdWUgICAgICAJMjIxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkNvbnRhaW5lciIKLQkJCQl2YWx1ZSAgICAgIAkyMjIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJSZWVudHJhbnQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJCTVBfRXh0ZW5kX0NNUCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvbnN0cnVjdG9ySXMiCi0JCQl2YWx1ZSAgICAgIAkoIkN0b3JfU2V0IiA2MikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ3Rvcl9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHVibGljIgotCQkJCXZhbHVlICAgICAgCTYyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk2MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTY0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGaW5hbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN0YXRpY0luaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbnN0YW5jZUluaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlIyRWRpdG9yIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJSb3NlIE1vZGVsIEludGVncmF0b3IiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlJvc2UgV2ViIFB1Ymxpc2hlciIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmVyc2lvbiBDb250cm9sIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJSZXBvc2l0b3J5IgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJFY29yZSIKLQkJbmFtZSAgICAgICAJInByb3BlcnR5SWQiCi0JCXZhbHVlICAgICAgCSI4MDkxMzU5NjkiKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DYXRlZ29yeSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJwYWNrYWdlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJuc1ByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJuc1VSSSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJiYXNlUGFja2FnZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJwcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiYW5ub3RhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJFY29yZSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImNsYXNzaWZpZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImNvbnN0cmFpbnRzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInhtbE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sQ29udGVudEtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIkNvbnRlbnRLaW5kIiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiQ29udGVudEtpbmQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlVuc3BlY2lmaWVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIkVtcHR5IgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlNpbXBsZSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJNaXhlZCIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJFbGVtZW50T25seSIKLQkJCQl2YWx1ZSAgICAgIAk0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImFubm90YXRpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkib3BlcmF0aW9uTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1VuaXF1ZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImFubm90YXRpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19BdHRyaWJ1dGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiYXR0cmlidXRlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1RyYW5zaWVudCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1ZvbGF0aWxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzQ2hhbmdlYWJsZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzVW5zZXR0YWJsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1VuaXF1ZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzSUQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkidmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eUtpbmQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJWaXNpYmlsaXR5S2luZCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiVW5zcGVjaWZpZWQiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJSZWFkLW9ubHkiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC13cml0ZSIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJSZWFkLW9ubHkgdW5zZXR0YWJsZSIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJSZWFkLXdyaXRlIHVuc2V0dGFibGUiCi0JCQkJdmFsdWUgICAgICAJNSkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInhtbE5hbWVzcGFjZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxGZWF0dXJlS2luZCIKLQkJCXZhbHVlICAgICAgCSgiRmVhdHVyZUtpbmQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJGZWF0dXJlS2luZCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiVW5zcGVjaWZpZWQiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiU2ltcGxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIkF0dHJpYnV0ZSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJFbGVtZW50IgotCQkJCXZhbHVlICAgICAgCTQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiYW5ub3RhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJFY29yZSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkicmVmZXJlbmNlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1RyYW5zaWVudCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1ZvbGF0aWxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzQ2hhbmdlYWJsZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzVW5zZXR0YWJsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1Jlc29sdmVQcm94aWVzIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkidmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eUtpbmQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJWaXNpYmlsaXR5S2luZCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiVW5zcGVjaWZpZWQiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJSZWFkLW9ubHkiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC13cml0ZSIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJSZWFkLW9ubHkgdW5zZXR0YWJsZSIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJSZWFkLXdyaXRlIHVuc2V0dGFibGUiCi0JCQkJdmFsdWUgICAgICAJNSkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInhtbE5hbWVzcGFjZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxGZWF0dXJlS2luZCIKLQkJCXZhbHVlICAgICAgCSgiRmVhdHVyZUtpbmQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJGZWF0dXJlS2luZCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiVW5zcGVjaWZpZWQiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiU2ltcGxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIkF0dHJpYnV0ZSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJFbGVtZW50IgotCQkJCXZhbHVlICAgICAgCTQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiYW5ub3RhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpKQotCXF1aWQgICAgICAgCSIzQUJGRDlBNzAxNTQiKSkKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvTUlNRS5lY29yZSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvTUlNRS5lY29yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEyMTdiZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL01JTUUuZWNvcmUKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGVjb3JlOkVQYWNrYWdlIHhtaTp2ZXJzaW9uPSIyLjAiCi0gICAgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICAgIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiBuYW1lPSJtaW1lIgotICAgIG5zVVJJPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dzZGwvMjAwMy9NSU1FIiBuc1ByZWZpeD0ibWltZSI+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iTUlNRUNvbnRlbnQiIGVTdXBlclR5cGVzPSJXU0RMLmVjb3JlIy8vRXh0ZW5zaWJpbGl0eUVsZW1lbnQgIy8vSU1JTUVDb250ZW50Ij4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0ic2V0UGFydCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0icGFydCIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldFBhcnQiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0idHlwZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlUGFydCIgZVR5cGU9ImVjb3JlOkVDbGFzcyBXU0RMLmVjb3JlIy8vUGFydCIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJNSU1FUGFydCIgZVN1cGVyVHlwZXM9IldTREwuZWNvcmUjLy9FeHRlbnNpYmlsaXR5RWxlbWVudCAjLy9JTUlNRVBhcnQiPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJhZGRFeHRlbnNpYmlsaXR5RWxlbWVudCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0iZXh0ZW5zaWJpbGl0eUVsZW1lbnQiIGVUeXBlPSJlY29yZTpFQ2xhc3MgV1NETC5lY29yZSMvL0lFeHRlbnNpYmlsaXR5RWxlbWVudCIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldEV4dGVuc2liaWxpdHlFbGVtZW50cyIgZVR5cGU9IiMvL0xpc3QiLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZUV4dGVuc2liaWxpdHlFbGVtZW50cyIKLSAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgV1NETC5lY29yZSMvL0V4dGVuc2liaWxpdHlFbGVtZW50IiBjb250YWlubWVudD0idHJ1ZSIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJNSU1FTXVsdGlwYXJ0UmVsYXRlZCIgZVN1cGVyVHlwZXM9IldTREwuZWNvcmUjLy9FeHRlbnNpYmlsaXR5RWxlbWVudCAjLy9JTUlNRU11bHRpcGFydFJlbGF0ZWQiPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJhZGRNSU1FUGFydCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ibWltZVBhcnQiIGVUeXBlPSIjLy9JTUlNRVBhcnQiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRNSU1FUGFydHMiIGVUeXBlPSIjLy9MaXN0Ii8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVNSU1FUGFydCIgdXBwZXJCb3VuZD0iLTEiCi0gICAgICAgIGVUeXBlPSIjLy9NSU1FUGFydCIgY29udGFpbm1lbnQ9InRydWUiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iTUlNRU1pbWVYbWwiIGVTdXBlclR5cGVzPSJXU0RMLmVjb3JlIy8vRXh0ZW5zaWJpbGl0eUVsZW1lbnQgIy8vSU1JTUVNaW1lWG1sIj4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0ic2V0UGFydCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0icGFydCIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldFBhcnQiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZVBhcnQiIGVUeXBlPSJlY29yZTpFQ2xhc3MgV1NETC5lY29yZSMvL1BhcnQiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSU1JTUVQYXJ0IiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIi8+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSU1JTUVNdWx0aXBhcnRSZWxhdGVkIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIi8+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSU1JTUVDb250ZW50IiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIi8+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSU1JTUVNaW1lWG1sIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIi8+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVEYXRhVHlwZSIgbmFtZT0iTGlzdCIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmEudXRpbC5MaXN0Ii8+Ci08L2Vjb3JlOkVQYWNrYWdlPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9NSU1FLmdlbm1vZGVsIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9NSU1FLmdlbm1vZGVsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmJjZTBlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvTUlNRS5nZW5tb2RlbAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Z2VubW9kZWw6R2VuTW9kZWwgeG1pOnZlcnNpb249IjIuMCIKLSAgICB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIgotICAgIHhtbG5zOmdlbm1vZGVsPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIiBtb2RlbERpcmVjdG9yeT0iL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lIgotICAgIGVkaXREaXJlY3Rvcnk9Ii9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMiIGVkaXRvckRpcmVjdG9yeT0iL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYyIKLSAgICBtb2RlbFBsdWdpbklEPSJvcmcuZWNsaXBzZS53c3Qud3NkbCIgbW9kZWxOYW1lPSJNSU1FIiBlZGl0UGx1Z2luQ2xhc3M9IiIgZWRpdG9yUGx1Z2luQ2xhc3M9IiIKLSAgICBub25OTFNNYXJrZXJzPSJ0cnVlIiBjb2RlRm9ybWF0dGluZz0idHJ1ZSIgaW1wb3J0ZXJJRD0ib3JnLmVjbGlwc2UuZW1mLmltcG9ydGVyLnJvc2UiCi0gICAgdXNlZEdlblBhY2thZ2VzPSJXU0RMLmdlbm1vZGVsIy8vd3NkbCBwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnhzZC9tb2RlbC9YU0QuZ2VubW9kZWwjLy94c2QiPgotICA8Zm9yZWlnbk1vZGVsPk1JTUUubWRsPC9mb3JlaWduTW9kZWw+Ci0gIDxmb3JlaWduTW9kZWw+VkFCQVNFX1BMVUdJTlNfUEFUSDwvZm9yZWlnbk1vZGVsPgotICA8Zm9yZWlnbk1vZGVsPi4uLy4uLy4uPC9mb3JlaWduTW9kZWw+Ci0gIDxnZW5QYWNrYWdlcyBwcmVmaXg9Ik1JTUUiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nIiBkaXNwb3NhYmxlUHJvdmlkZXJGYWN0b3J5PSJ0cnVlIgotICAgICAgY2xhc3NQYWNrYWdlU3VmZml4PSJpbnRlcm5hbC5pbXBsIiB1dGlsaXR5UGFja2FnZVN1ZmZpeD0iaW50ZXJuYWwudXRpbCIgZWNvcmVQYWNrYWdlPSJNSU1FLmVjb3JlIy8iPgotICAgIDxnZW5EYXRhVHlwZXMgZWNvcmVEYXRhVHlwZT0iTUlNRS5lY29yZSMvL0xpc3QiLz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJNSU1FLmVjb3JlIy8vTUlNRUNvbnRlbnQiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIE1JTUUuZWNvcmUjLy9NSU1FQ29udGVudC90eXBlIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgTUlNRS5lY29yZSMvL01JTUVDb250ZW50L2VQYXJ0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iTUlNRS5lY29yZSMvL01JTUVDb250ZW50L3NldFBhcnQiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iTUlNRS5lY29yZSMvL01JTUVDb250ZW50L3NldFBhcnQvcGFydCIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249Ik1JTUUuZWNvcmUjLy9NSU1FQ29udGVudC9nZXRQYXJ0Ii8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9Ik1JTUUuZWNvcmUjLy9NSU1FUGFydCI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIE1JTUUuZWNvcmUjLy9NSU1FUGFydC9lRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iTUlNRS5lY29yZSMvL01JTUVQYXJ0L2FkZEV4dGVuc2liaWxpdHlFbGVtZW50Ij4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9Ik1JTUUuZWNvcmUjLy9NSU1FUGFydC9hZGRFeHRlbnNpYmlsaXR5RWxlbWVudC9leHRlbnNpYmlsaXR5RWxlbWVudCIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249Ik1JTUUuZWNvcmUjLy9NSU1FUGFydC9nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iTUlNRS5lY29yZSMvL01JTUVNdWx0aXBhcnRSZWxhdGVkIj4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgTUlNRS5lY29yZSMvL01JTUVNdWx0aXBhcnRSZWxhdGVkL2VNSU1FUGFydCIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249Ik1JTUUuZWNvcmUjLy9NSU1FTXVsdGlwYXJ0UmVsYXRlZC9hZGRNSU1FUGFydCI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJNSU1FLmVjb3JlIy8vTUlNRU11bHRpcGFydFJlbGF0ZWQvYWRkTUlNRVBhcnQvbWltZVBhcnQiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJNSU1FLmVjb3JlIy8vTUlNRU11bHRpcGFydFJlbGF0ZWQvZ2V0TUlNRVBhcnRzIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9Ik1JTUUuZWNvcmUjLy9NSU1FTWltZVhtbCI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgTUlNRS5lY29yZSMvL01JTUVNaW1lWG1sL2VQYXJ0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iTUlNRS5lY29yZSMvL01JTUVNaW1lWG1sL3NldFBhcnQiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iTUlNRS5lY29yZSMvL01JTUVNaW1lWG1sL3NldFBhcnQvcGFydCIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249Ik1JTUUuZWNvcmUjLy9NSU1FTWltZVhtbC9nZXRQYXJ0Ii8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iTUlNRS5lY29yZSMvL0lNSU1FUGFydCIvPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iTUlNRS5lY29yZSMvL0lNSU1FTXVsdGlwYXJ0UmVsYXRlZCIvPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iTUlNRS5lY29yZSMvL0lNSU1FQ29udGVudCIvPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iTUlNRS5lY29yZSMvL0lNSU1FTWltZVhtbCIvPgotICA8L2dlblBhY2thZ2VzPgotPC9nZW5tb2RlbDpHZW5Nb2RlbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvTUlNRS5tZGwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL01JTUUubWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGU4NTI5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvTUlNRS5tZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1ODE4ICswLDAgQEAKLQotKG9iamVjdCBQZXRhbAotICAgIHZlcnNpb24gICAgCTQyCi0gICAgX3dyaXR0ZW4gICAJIlJvc2UgNC41LjgxNjMuMyIKLSAgICBjaGFyU2V0ICAgIAkwKQotCi0ob2JqZWN0IERlc2lnbiAiTG9naWNhbCBWaWV3IgotICAgIGlzX3VuaXQgICAgCVRSVUUKLSAgICBpc19sb2FkZWQgIAlUUlVFCi0gICAgZGVmYXVsdHMgICAJKG9iamVjdCBkZWZhdWx0cwotCXJpZ2h0TWFyZ2luIAkwLjI1MDAwMAotCWxlZnRNYXJnaW4gCTAuMjUwMDAwCi0JdG9wTWFyZ2luICAJMC4yNTAwMDAKLQlib3R0b21NYXJnaW4gCTAuNTAwMDAwCi0JcGFnZU92ZXJsYXAgCTAuMjUwMDAwCi0JY2xpcEljb25MYWJlbHMgCVRSVUUKLQlhdXRvUmVzaXplIAlUUlVFCi0Jc25hcFRvR3JpZCAJVFJVRQotCWdyaWRYICAgICAgCTE2Ci0JZ3JpZFkgICAgICAJMTYKLQlkZWZhdWx0Rm9udCAJKG9iamVjdCBGb250Ci0JICAgIHNpemUgICAgICAgCTEwCi0JICAgIGZhY2UgICAgICAgCSJBcmlhbCIKLQkgICAgYm9sZCAgICAgICAJRkFMU0UKLQkgICAgaXRhbGljcyAgICAJRkFMU0UKLQkgICAgdW5kZXJsaW5lICAJRkFMU0UKLQkgICAgc3RyaWtlICAgICAJRkFMU0UKLQkgICAgY29sb3IgICAgICAJMAotCSAgICBkZWZhdWx0X2NvbG9yIAlUUlVFKQotCXNob3dNZXNzYWdlTnVtIAkxCi0Jc2hvd0NsYXNzT2ZPYmplY3QgCVRSVUUKLQlub3RhdGlvbiAgIAkiVW5pZmllZCIpCi0gICAgcm9vdF91c2VjYXNlX3BhY2thZ2UgCShvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgIlVzZSBDYXNlIFZpZXciCi0JcXVpZCAgICAgICAJIjNBQzkxMDUxMDMxRSIKLQlleHBvcnRDb250cm9sIAkiUHVibGljIgotCWdsb2JhbCAgICAgCVRSVUUKLQlsb2dpY2FsX21vZGVscyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdCkKLQlsb2dpY2FsX3ByZXNlbnRhdGlvbnMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QKLQkgICAgKG9iamVjdCBVc2VDYXNlRGlhZ3JhbSAiTWFpbiIKLQkJcXVpZCAgICAgICAJIjNBQzkxMDUyMDAxQiIKLQkJdGl0bGUgICAgICAJIk1haW4iCi0JCXpvb20gICAgICAgCTEwMAotCQltYXhfaGVpZ2h0IAkyODM1MAotCQltYXhfd2lkdGggIAkyMTYwMAotCQlvcmlnaW5feCAgIAkwCi0JCW9yaWdpbl95ICAgCTAKLQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QpKSkpCi0gICAgcm9vdF9jYXRlZ29yeSAJKG9iamVjdCBDbGFzc19DYXRlZ29yeSAiTG9naWNhbCBWaWV3IgotCXF1aWQgICAgICAgCSIzQUM5MTA1MTAzMUQiCi0JZXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQlnbG9iYWwgICAgIAlUUlVFCi0Jc3Vic3lzdGVtICAJIkNvbXBvbmVudCBWaWV3IgotCXF1aWR1ICAgICAgCSIzQUM5MTA1MTAzMUYiCi0JbG9naWNhbF9tb2RlbHMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QKLQkgICAgKG9iamVjdCBDbGFzc19DYXRlZ29yeSAibWltZSIKLQkJYXR0cmlidXRlcyAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJuc1ByZWZpeCIKLQkJCXZhbHVlICAgICAgCSJtaW1lIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkibnNVUkkiCi0JCQl2YWx1ZSAgICAgIAkiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvTUlNRSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImJhc2VQYWNrYWdlIgotCQkJdmFsdWUgICAgICAJIm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmciKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJwcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiTUlNRSIpKQotCQlxdWlkICAgICAgIAkiM0FDOTEyN0MwMjY2IgotCQlleHBvcnRDb250cm9sIAkiUHVibGljIgotCQlsb2dpY2FsX21vZGVscyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdAotCQkgICAgKG9iamVjdCBDbGFzcyAiTUlNRUNvbnRlbnQiCi0JCQlxdWlkICAgICAgIAkiM0FDOTEzNUIwM0E3IgotCQkJc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjNBRUYxMUNBMDM4RSIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJCQlxdWlkdSAgICAgIAkiM0FENURCQjYwMkE5IikKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSI0MEExMDZBMzAxNjgiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6bWltZTo6SU1JTUVDb250ZW50IgotCQkJCXF1aWR1ICAgICAgCSI0MEExMDVFMDAxQ0MiKSkKLQkJCW9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJCSAgICAob2JqZWN0IE9wZXJhdGlvbiAic2V0UGFydCIKLQkJCQlxdWlkICAgICAgIAkiNDBBMTA2NkYwMDIzIgotCQkJCXBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCQkgICAgKG9iamVjdCBQYXJhbWV0ZXIgInBhcnQiCi0JCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJCQlyZXN1bHQgICAgIAkidm9pZCIKLQkJCQljb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCQkJb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkJCXVpZCAgICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBPcGVyYXRpb24gImdldFBhcnQiCi0JCQkJcXVpZCAgICAgICAJIjQwQTEwNjdEMDJDQyIKLQkJCQlyZXN1bHQgICAgIAkiU3RyaW5nIgotCQkJCWNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJCQlvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCQkJdWlkICAgICAgICAJMCkpCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgInR5cGUiCi0JCQkJcXVpZCAgICAgICAJIjNBQzkxOTcxMDM2QiIKLQkJCQl0eXBlICAgICAgIAkiU3RyaW5nIikpCi0JCQlsYW5ndWFnZSAgIAkiSmF2YSIpCi0JCSAgICAob2JqZWN0IENsYXNzICJNSU1FUGFydCIKLQkJCXF1aWQgICAgICAgCSIzQUM5MTNFRTAwRUIiCi0JCQlzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiNDBBMEZERUYwMzIyIgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2liaWxpdHlFbGVtZW50IgotCQkJCXF1aWR1ICAgICAgCSIzQUQ1REJCNjAyQTkiKQotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjQwQTEwMkNEMDE3NSIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3OjptaW1lOjpJTUlNRVBhcnQiCi0JCQkJcXVpZHUgICAgICAJIjQwQTEwMjVEMDFBNiIpKQotCQkJb3BlcmF0aW9ucyAJKGxpc3QgT3BlcmF0aW9ucwotCQkJICAgIChvYmplY3QgT3BlcmF0aW9uICJhZGRFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJCQlxdWlkICAgICAgIAkiNDBBMTA0NjQwMUEyIgotCQkJCXBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCQkgICAgKG9iamVjdCBQYXJhbWV0ZXIgImV4dGVuc2liaWxpdHlFbGVtZW50IgotCQkJCQl0eXBlICAgICAgIAkiSUV4dGVuc2liaWxpdHlFbGVtZW50IikpCi0JCQkJcmVzdWx0ICAgICAJInZvaWQiCi0JCQkJY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkJCW9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJCQl1aWQgICAgICAgIAkwKQotCQkJICAgIChvYmplY3QgT3BlcmF0aW9uICJnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMiCi0JCQkJcXVpZCAgICAgICAJIjQwQTEwNDg0MDI3QiIKLQkJCQlyZXN1bHQgICAgIAkiTGlzdCIKLQkJCQljb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCQkJb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkJCXVpZCAgICAgICAgCTApKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiTUlNRU11bHRpcGFydFJlbGF0ZWQiCi0JCQlxdWlkICAgICAgIAkiM0FDOTEzRkEwMjVCIgotCQkJc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjNBRUYxMUQ1MDMzMCIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJCQlxdWlkdSAgICAgIAkiM0FENURCQjYwMkE5IikKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSI0MEExMDNBRDAzMUMiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6bWltZTo6SU1JTUVNdWx0aXBhcnRSZWxhdGVkIgotCQkJCXF1aWR1ICAgICAgCSI0MEExMDMzQjAwREQiKSkKLQkJCW9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJCSAgICAob2JqZWN0IE9wZXJhdGlvbiAiYWRkTUlNRVBhcnQiCi0JCQkJcXVpZCAgICAgICAJIjQwQTEwM0Y2MDE3MiIKLQkJCQlwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkJICAgIChvYmplY3QgUGFyYW1ldGVyICJtaW1lUGFydCIKLQkJCQkJdHlwZSAgICAgICAJIklNSU1FUGFydCIpKQotCQkJCXJlc3VsdCAgICAgCSJ2b2lkIgotCQkJCWNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJCQlvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCQkJdWlkICAgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IE9wZXJhdGlvbiAiZ2V0TUlNRVBhcnRzIgotCQkJCXF1aWQgICAgICAgCSI0MEExMDQwMzAzOEQiCi0JCQkJcmVzdWx0ICAgICAJIkxpc3QiCi0JCQkJY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkJCW9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJCQl1aWQgICAgICAgIAkwKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIk1JTUVNaW1lWG1sIgotCQkJcXVpZCAgICAgICAJIjNBQzkxNDVBMDFGRiIKLQkJCXN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSIzQUVGMTFERDAzOEIiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCQkJcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiNDBBMTA3NDcwMzRFIgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6Om1pbWU6OklNSU1FTWltZVhtbCIKLQkJCQlxdWlkdSAgICAgIAkiNDBBMTA2RUYwMDhCIikpCi0JCQlvcGVyYXRpb25zIAkobGlzdCBPcGVyYXRpb25zCi0JCQkgICAgKG9iamVjdCBPcGVyYXRpb24gInNldFBhcnQiCi0JCQkJcXVpZCAgICAgICAJIjQwQTEwNkQ0MDFFQiIKLQkJCQlwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkJICAgIChvYmplY3QgUGFyYW1ldGVyICJwYXJ0IgotCQkJCQl0eXBlICAgICAgIAkiU3RyaW5nIikpCi0JCQkJcmVzdWx0ICAgICAJInZvaWQiCi0JCQkJY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkJCW9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJCQl1aWQgICAgICAgIAkwKQotCQkJICAgIChvYmplY3QgT3BlcmF0aW9uICJnZXRQYXJ0IgotCQkJCXF1aWQgICAgICAgCSI0MEExMDZFMTAwOTUiCi0JCQkJcmVzdWx0ICAgICAJIlN0cmluZyIKLQkJCQljb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCQkJb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkJCXVpZCAgICAgICAgCTApKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSU1JTUVQYXJ0IgotCQkJcXVpZCAgICAgICAJIjQwQTEwMjVEMDFBNiIKLQkJCXN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0IgotCQkJCXF1aWQgICAgICAgCSI0MEExMDI5RDAzRDkiCi0JCQkJc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSU1JTUVNdWx0aXBhcnRSZWxhdGVkIgotCQkJcXVpZCAgICAgICAJIjQwQTEwMzNCMDBERCIKLQkJCXN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkIgotCQkJCXF1aWQgICAgICAgCSI0MEExMDM3ODAxOEYiCi0JCQkJc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSU1JTUVDb250ZW50IgotCQkJcXVpZCAgICAgICAJIjQwQTEwNUUwMDFDQyIKLQkJCXN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50IgotCQkJCXF1aWQgICAgICAgCSI0MEExMDVGNTAyMjYiCi0JCQkJc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSU1JTUVNaW1lWG1sIgotCQkJcXVpZCAgICAgICAJIjQwQTEwNkVGMDA4QiIKLQkJCXN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNaW1lWG1sIgotCQkJCXF1aWQgICAgICAgCSI0MEExMDcxRTAzQjQiCi0JCQkJc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiTGlzdCIKLQkJCXF1aWQgICAgICAgCSI0MEExMEJGQTAxMDkiCi0JCQlzdGVyZW90eXBlIAkiZGF0YXR5cGUiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmEudXRpbC5MaXN0IgotCQkJCXF1aWQgICAgICAgCSI0MEExMEMwOTAyQTYiCi0JCQkJc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMCIKLQkJCXF1aWQgICAgICAgCSIzQUU3M0IzQzAzNTYiCi0JCQlyb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJCSAgICAob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDEiCi0JCQkJcXVpZCAgICAgICAJIjNBRTczQjNEMDA5MCIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3OjptaW1lOjpNSU1FQ29udGVudCIKLQkJCQlxdWlkdSAgICAgIAkiM0FDOTEzNUIwM0E3IikKLQkJCSAgICAob2JqZWN0IFJvbGUgImVQYXJ0IgotCQkJCXF1aWQgICAgICAgCSIzQUU3M0IzRDAwOUEiCi0JCQkJbGFiZWwgICAgICAJImVQYXJ0IgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OlBhcnQiCi0JCQkJcXVpZHUgICAgICAJIjNBRDVDRTFDMDMyRSIKLQkJCQljbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4uMSIpCi0JCQkJaXNfbmF2aWdhYmxlIAlUUlVFKSkpCi0JCSAgICAob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQyIgotCQkJcXVpZCAgICAgICAJIjNBRTczQkI5MDBENSIKLQkJCXJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkJICAgIChvYmplY3QgUm9sZSAiZVBhcnQiCi0JCQkJcXVpZCAgICAgICAJIjNBRTczQkI5MDNDRSIKLQkJCQlsYWJlbCAgICAgIAkiZVBhcnQiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6UGFydCIKLQkJCQlxdWlkdSAgICAgIAkiM0FENUNFMUMwMzJFIgotCQkJCWNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIwLi4xIikKLQkJCQlpc19uYXZpZ2FibGUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBSb2xlICIkVU5OQU1FRCQzIgotCQkJCXF1aWQgICAgICAgCSIzQUU3M0JCOTAzRTIiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6bWltZTo6TUlNRU1pbWVYbWwiCi0JCQkJcXVpZHUgICAgICAJIjNBQzkxNDVBMDFGRiIpKSkKLQkJICAgIChvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDQiCi0JCQlxdWlkICAgICAgIAkiM0FFRjEyRkUwMzg3IgotCQkJcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCQkgICAgKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ1IgotCQkJCXF1aWQgICAgICAgCSIzQUVGMTMwMDAwRDciCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6bWltZTo6TUlNRU11bHRpcGFydFJlbGF0ZWQiCi0JCQkJcXVpZHUgICAgICAJIjNBQzkxM0ZBMDI1QiIKLQkJCQlpc19hZ2dyZWdhdGUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBSb2xlICJlTUlNRVBhcnQiCi0JCQkJcXVpZCAgICAgICAJIjNBRUYxMzAwMDBFMSIKLQkJCQlsYWJlbCAgICAgIAkiZU1JTUVQYXJ0IgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6Om1pbWU6Ok1JTUVQYXJ0IgotCQkJCXF1aWR1ICAgICAgCSIzQUM5MTNFRTAwRUIiCi0JCQkJY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjAuLm4iKQotCQkJCUNvbnN0cmFpbnRzIAkib3JkZXJlZCIKLQkJCQlDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkJCWlzX25hdmlnYWJsZSAJVFJVRSkpKQotCQkgICAgKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkNiIKLQkJCXF1aWQgICAgICAgCSI0Njg3Mzc5QTAwOEMiCi0JCQlyb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJCSAgICAob2JqZWN0IFJvbGUgImVFeHRlbnNpYmlsaXR5RWxlbWVudHMiCi0JCQkJcXVpZCAgICAgICAJIjQ2ODczNzlCMDI4MCIKLQkJCQlsYWJlbCAgICAgIAkiZUV4dGVuc2liaWxpdHlFbGVtZW50cyIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJCQlxdWlkdSAgICAgIAkiM0FENURCQjYwMkE5IgotCQkJCWNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIwLi5uIikKLQkJCQlDb25zdHJhaW50cyAJIm9yZGVyZWQiCi0JCQkJQ29udGFpbm1lbnQgCSJCeSBWYWx1ZSIKLQkJCQlpc19uYXZpZ2FibGUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ3IgotCQkJCXF1aWQgICAgICAgCSI0Njg3Mzc5QjAyOTAiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6bWltZTo6TUlNRVBhcnQiCi0JCQkJcXVpZHUgICAgICAJIjNBQzkxM0VFMDBFQiIKLQkJCQljbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCQkJaXNfYWdncmVnYXRlIAlUUlVFKSkpKQotCQlsb2dpY2FsX3ByZXNlbnRhdGlvbnMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QKLQkJICAgIChvYmplY3QgQ2xhc3NEaWFncmFtICJCaW5kaW5ncyIKLQkJCXF1aWQgICAgICAgCSIzQUM5MTI4QjAxRjkiCi0JCQl0aXRsZSAgICAgIAkiQmluZGluZ3MiCi0JCQl6b29tICAgICAgIAkxMDAKLQkJCW1heF9oZWlnaHQgCTI4MzUwCi0JCQltYXhfd2lkdGggIAkyMTYwMAotCQkJb3JpZ2luX3ggICAJMAotCQkJb3JpZ2luX3kgICAJMAotCQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Om1pbWU6Ok1JTUVDb250ZW50IiBAMQotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTYzMiwgODQ4KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMQotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTQ5MCwgNzE3KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTI4NAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJNSU1FQ29udGVudCIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBQzkxMzVCMDNBNyIKLQkJCQl3aWR0aCAgICAgIAkzMDIKLQkJCQloZWlnaHQgICAgIAkyODYKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OlBhcnQiIEAyCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlTdXBwcmVzc0F0dHJpYnV0ZSAJVFJVRQotCQkJCVN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSgxNjMyLCAxMjAwKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMgotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTU1MSwgMTE1MCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkxNjIKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiUGFydCIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBRDVDRTFDMDMyRSIKLQkJCQloZWlnaHQgICAgIAkxMjQKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMCIgQDMKLQkJCQlsb2NhdGlvbiAgIAkoMTYzMiwgMTA2NCkKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSIzQUU3M0IzQzAzNTYiCi0JCQkJcm9sZXZpZXdfbGlzdCAJKGxpc3QgUm9sZVZpZXdzCi0JCQkJICAgIChvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDEiIEA0Ci0JCQkJCVBhcmVudF9WaWV3IAlAMwotCQkJCQlsb2NhdGlvbiAgIAkoLTQxNiwgLTE2OCkKLQkJCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJCXF1aWR1ICAgICAgCSIzQUU3M0IzRDAwOTAiCi0JCQkJCWNsaWVudCAgICAgCUAzCi0JCQkJCXN1cHBsaWVyICAgCUAxCi0JCQkJCWxpbmVfc3R5bGUgCTApCi0JCQkJICAgIChvYmplY3QgUm9sZVZpZXcgImVQYXJ0IiBANQotCQkJCQlQYXJlbnRfVmlldyAJQDMKLQkJCQkJbG9jYXRpb24gICAJKC00MTYsIC0xNjgpCi0JCQkJCWxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDYKLQkJCQkJICAgIFBhcmVudF9WaWV3IAlANQotCQkJCQkgICAgbG9jYXRpb24gICAJKDE1MTUsIDExMDIpCi0JCQkJCSAgICBhbmNob3IgICAgIAkxCi0JCQkJCSAgICBhbmNob3JfbG9jIAkxCi0JCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJCSAgICBtYXhfd2lkdGggIAkxMjAKLQkJCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkJICAgIGxhYmVsICAgICAgCSIrZVBhcnQiCi0JCQkJCSAgICBwY3REaXN0ICAgIAkwLjUzOTMyNgotCQkJCQkgICAgaGVpZ2h0ICAgICAJMTE4Ci0JCQkJCSAgICBvcmllbnRhdGlvbiAJMSkKLQkJCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJCXF1aWR1ICAgICAgCSIzQUU3M0IzRDAwOUEiCi0JCQkJCWNsaWVudCAgICAgCUAzCi0JCQkJCXN1cHBsaWVyICAgCUAyCi0JCQkJCWxpbmVfc3R5bGUgCTAKLQkJCQkJbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBANwotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUA1Ci0JCQkJCSAgICBsb2NhdGlvbiAgIAkoMTY4MSwgMTA5NykKLQkJCQkJICAgIGFuY2hvciAgICAgCTIKLQkJCQkJICAgIGFuY2hvcl9sb2MgCTEKLQkJCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkJICAgIG1heF93aWR0aCAgCTE1Ci0JCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJCSAgICBsYWJlbCAgICAgIAkiMC4uMSIKLQkJCQkJICAgIHBjdERpc3QgICAgCTAuNDQ5MTAzCi0JCQkJCSAgICBoZWlnaHQgICAgIAk0OQotCQkJCQkgICAgb3JpZW50YXRpb24gCTApKSkpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3OjptaW1lOjpNSU1FTWltZVhtbCIgQDgKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDE2MzIsIDE1MDQpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUA4Ci0JCQkJICAgIGxvY2F0aW9uICAgCSgxNDc4LCAxMzk4KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTMwOAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJNSU1FTWltZVhtbCIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBQzkxNDVBMDFGRiIKLQkJCQl3aWR0aCAgICAgIAkzMjYKLQkJCQloZWlnaHQgICAgIAkyMzYKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMiIgQDkKLQkJCQlsb2NhdGlvbiAgIAkoMTYzMiwgMTMyMykKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSIzQUU3M0JCOTAwRDUiCi0JCQkJcm9sZXZpZXdfbGlzdCAJKGxpc3QgUm9sZVZpZXdzCi0JCQkJICAgIChvYmplY3QgUm9sZVZpZXcgImVQYXJ0IiBAMTAKLQkJCQkJUGFyZW50X1ZpZXcgCUA5Ci0JCQkJCWxvY2F0aW9uICAgCSgxNDQsIC0zMjUpCi0JCQkJCWxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDExCi0JCQkJCSAgICBQYXJlbnRfVmlldyAJQDEwCi0JCQkJCSAgICBsb2NhdGlvbiAgIAkoMTUwNiwgMTI5MykKLQkJCQkJICAgIGFuY2hvciAgICAgCTEKLQkJCQkJICAgIGFuY2hvcl9sb2MgCTEKLQkJCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkJICAgIG1heF93aWR0aCAgCTEyMAotCQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCQkgICAgbGFiZWwgICAgICAJIitlUGFydCIKLQkJCQkJICAgIHBjdERpc3QgICAgCTAuNDg5NTgzCi0JCQkJCSAgICBoZWlnaHQgICAgIAkxMjcKLQkJCQkJICAgIG9yaWVudGF0aW9uIAkwKQotCQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQkJcXVpZHUgICAgICAJIjNBRTczQkI5MDNDRSIKLQkJCQkJY2xpZW50ICAgICAJQDkKLQkJCQkJc3VwcGxpZXIgICAJQDIKLQkJCQkJbGluZV9zdHlsZSAJMAotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxMgotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUAxMAotCQkJCQkgICAgbG9jYXRpb24gICAJKDE3MDgsIDEyODQpCi0JCQkJCSAgICBhbmNob3IgICAgIAkyCi0JCQkJCSAgICBhbmNob3JfbG9jIAkxCi0JCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJCSAgICBtYXhfd2lkdGggIAkxNQotCQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCQkgICAgbGFiZWwgICAgICAJIjAuLjEiCi0JCQkJCSAgICBwY3REaXN0ICAgIAkwLjY1MjI3MAotCQkJCQkgICAgaGVpZ2h0ICAgICAJNzYKLQkJCQkJICAgIG9yaWVudGF0aW9uIAkxKSkKLQkJCQkgICAgKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMyIgQDEzCi0JCQkJCVBhcmVudF9WaWV3IAlAOQotCQkJCQlsb2NhdGlvbiAgIAkoMTQ0LCAtMzI1KQotCQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQkJcXVpZHUgICAgICAJIjNBRTczQkI5MDNFMiIKLQkJCQkJY2xpZW50ICAgICAJQDkKLQkJCQkJc3VwcGxpZXIgICAJQDgKLQkJCQkJbGluZV9zdHlsZSAJMCkpKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6bWltZTo6TUlNRU11bHRpcGFydFJlbGF0ZWQiIEAxNAotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNTYwLCA1OTIpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAxNAotCQkJCSAgICBsb2NhdGlvbiAgIAkoMzQxLCA0ODYpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJNDM4Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIk1JTUVNdWx0aXBhcnRSZWxhdGVkIikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0FDOTEzRkEwMjVCIgotCQkJCXdpZHRoICAgICAgCTQ1NgotCQkJCWhlaWdodCAgICAgCTIzNgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6bWltZTo6TUlNRVBhcnQiIEAxNQotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNTYwLCAxMDQwKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMTUKLQkJCQkgICAgbG9jYXRpb24gICAJKDI5NiwgOTM0KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTUyOAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJNSU1FUGFydCIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBQzkxM0VFMDBFQiIKLQkJCQljb21wYXJ0bWVudCAJKG9iamVjdCBDb21wYXJ0bWVudAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDE1Ci0JCQkJICAgIGxvY2F0aW9uICAgCSgyOTYsIDk5NCkKLQkJCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJICAgIGZpbGxfY29sb3IgCTE2Nzc3MjE1Ci0JCQkJICAgIGFuY2hvciAgICAgCTIKLQkJCQkgICAgbmxpbmVzICAgICAJMwotCQkJCSAgICBtYXhfd2lkdGggIAkwKQotCQkJCXdpZHRoICAgICAgCTU0NgotCQkJCWhlaWdodCAgICAgCTIzNgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQ0IiBAMTYKLQkJCQlsb2NhdGlvbiAgIAkoNTYwLCA4MTUpCi0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiM0FFRjEyRkUwMzg3IgotCQkJCXJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJCSAgICAob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQ1IiBAMTcKLQkJCQkJUGFyZW50X1ZpZXcgCUAxNgotCQkJCQlsb2NhdGlvbiAgIAkoMzIsIDExMSkKLQkJCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJCXF1aWR1ICAgICAgCSIzQUVGMTMwMDAwRDciCi0JCQkJCWNsaWVudCAgICAgCUAxNgotCQkJCQlzdXBwbGllciAgIAlAMTQKLQkJCQkJbGluZV9zdHlsZSAJMCkKLQkJCQkgICAgKG9iamVjdCBSb2xlVmlldyAiZU1JTUVQYXJ0IiBAMTgKLQkJCQkJUGFyZW50X1ZpZXcgCUAxNgotCQkJCQlsb2NhdGlvbiAgIAkoMzIsIDExMSkKLQkJCQkJbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTkKLQkJCQkJICAgIFBhcmVudF9WaWV3IAlAMTgKLQkJCQkJICAgIGxvY2F0aW9uICAgCSg3NDQsIDg5MCkKLQkJCQkJICAgIGFuY2hvciAgICAgCTEKLQkJCQkJICAgIGFuY2hvcl9sb2MgCTEKLQkJCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkJICAgIG1heF93aWR0aCAgCTIyOAotCQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCQkgICAgbGFiZWwgICAgICAJIitlTUlNRVBhcnQiCi0JCQkJCSAgICBwY3REaXN0ICAgIAkwLjcwOTQwMgotCQkJCQkgICAgaGVpZ2h0ICAgICAJMTg0Ci0JCQkJCSAgICBvcmllbnRhdGlvbiAJMCkKLQkJCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJCXF1aWR1ICAgICAgCSIzQUVGMTMwMDAwRTEiCi0JCQkJCWNsaWVudCAgICAgCUAxNgotCQkJCQlzdXBwbGllciAgIAlAMTUKLQkJCQkJbGluZV9zdHlsZSAJMAotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyMAotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUAxOAotCQkJCQkgICAgbG9jYXRpb24gICAJKDUwMywgODk4KQotCQkJCQkgICAgYW5jaG9yICAgICAJMgotCQkJCQkgICAgYW5jaG9yX2xvYyAJMQotCQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCQkgICAgbWF4X3dpZHRoICAJMTUKLQkJCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkJICAgIGxhYmVsICAgICAgCSIwLi4qIgotCQkJCQkgICAgcGN0RGlzdCAgICAJMC43OTQxMTgKLQkJCQkJICAgIGhlaWdodCAgICAgCTU4Ci0JCQkJCSAgICBvcmllbnRhdGlvbiAJMSkKLQkJCQkJbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjEKLQkJCQkJICAgIFBhcmVudF9WaWV3IAlAMTgKLQkJCQkJICAgIGxvY2F0aW9uICAgCSgzNjQsIDg5MCkKLQkJCQkJICAgIGFuY2hvciAgICAgCTMKLQkJCQkJICAgIGFuY2hvcl9sb2MgCTEKLQkJCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkJICAgIG1heF93aWR0aCAgCTE1OQotCQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCQkgICAgbGFiZWwgICAgICAJIntvcmRlcmVkfSIKLQkJCQkJICAgIHBjdERpc3QgICAgCTAuNzA5NDAyCi0JCQkJCSAgICBoZWlnaHQgICAgIAkxOTcKLQkJCQkJICAgIG9yaWVudGF0aW9uIAkxKSkpKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6bWltZTo6SU1JTUVQYXJ0IiBAMjIKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCVN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNzIwLCAxNDU2KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMjIKLQkJCQkgICAgbG9jYXRpb24gICAJKDIwNSwgMTQyMikKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkxMDMwCi0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIklNSU1FUGFydCIpCi0JCQkJc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAyMgotCQkJCSAgICBsb2NhdGlvbiAgIAkoMjA1LCAxMzcyKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBhbmNob3IgICAgIAkxMAotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTEwMzAKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCQkJaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJCQlpY29uX3N0eWxlIAkiTGFiZWwiCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjQwQTEwMjVEMDFBNiIKLQkJCQl3aWR0aCAgICAgIAkxMDQ4Ci0JCQkJaGVpZ2h0ICAgICAJMTkyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjMKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSI0MEExMDJDRDAxNzUiCi0JCQkJY2xpZW50ICAgICAJQDE1Ci0JCQkJc3VwcGxpZXIgICAJQDIyCi0JCQkJbGluZV9zdHlsZSAJMCkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Om1pbWU6OklNSU1FTXVsdGlwYXJ0UmVsYXRlZCIgQDI0Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDc2OCwgMTc2KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMjQKLQkJCQkgICAgbG9jYXRpb24gICAJKDE0MywgMTQyKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTEyNTAKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiSU1JTUVNdWx0aXBhcnRSZWxhdGVkIikKLQkJCQlzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDI0Ci0JCQkJICAgIGxvY2F0aW9uICAgCSgxNDMsIDkyKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBhbmNob3IgICAgIAkxMAotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTEyNTAKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCQkJaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJCQlpY29uX3N0eWxlIAkiTGFiZWwiCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjQwQTEwMzNCMDBERCIKLQkJCQl3aWR0aCAgICAgIAkxMjY4Ci0JCQkJaGVpZ2h0ICAgICAJMTkyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjUKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSI0MEExMDNBRDAzMUMiCi0JCQkJY2xpZW50ICAgICAJQDE0Ci0JCQkJc3VwcGxpZXIgICAJQDI0Ci0JCQkJbGluZV9zdHlsZSAJMCkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Om1pbWU6OklNSU1FQ29udGVudCIgQDI2Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDE2MzIsIDQzMikKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDI2Ci0JCQkJICAgIGxvY2F0aW9uICAgCSgxMDg0LCAzOTgpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMTA5NgotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJJTUlNRUNvbnRlbnQiKQotCQkJCXN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMjYKLQkJCQkgICAgbG9jYXRpb24gICAJKDEwODQsIDM0OCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgYW5jaG9yICAgICAJMTAKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkxMDk2Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkJCWljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCQkJaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSI0MEExMDVFMDAxQ0MiCi0JCQkJd2lkdGggICAgICAJMTExNAotCQkJCWhlaWdodCAgICAgCTE5MgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDI3Ci0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiNDBBMTA2QTMwMTY4IgotCQkJCWNsaWVudCAgICAgCUAxCi0JCQkJc3VwcGxpZXIgICAJQDI2Ci0JCQkJbGluZV9zdHlsZSAJMCkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Om1pbWU6OklNSU1FTWltZVhtbCIgQDI4Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDE2MTYsIDE5MDQpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAyOAotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTA1NSwgMTg3MCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkxMTIyCi0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIklNSU1FTWltZVhtbCIpCi0JCQkJc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAyOAotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTA1NSwgMTgyMCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgYW5jaG9yICAgICAJMTAKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkxMTIyCi0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkJCWljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCQkJaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSI0MEExMDZFRjAwOEIiCi0JCQkJd2lkdGggICAgICAJMTE0MAotCQkJCWhlaWdodCAgICAgCTE5MgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDI5Ci0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiNDBBMTA3NDcwMzRFIgotCQkJCWNsaWVudCAgICAgCUA4Ci0JCQkJc3VwcGxpZXIgICAJQDI4Ci0JCQkJbGluZV9zdHlsZSAJMCkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Om1pbWU6Okxpc3QiIEAzMAotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNDQ4LCAxNzYwKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMzAKLQkJCQkgICAgbG9jYXRpb24gICAJKDE3NiwgMTcwMSkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAk1NDQKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiTGlzdCIpCi0JCQkJc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzMAotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTc2LCAxNjUxKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBhbmNob3IgICAgIAkxMAotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTU0NAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSI8PGRhdGF0eXBlPj4iKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSI0MEExMEJGQTAxMDkiCi0JCQkJd2lkdGggICAgICAJNTYyCi0JCQkJaGVpZ2h0ICAgICAJMjQyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpKSkKLQkJICAgIChvYmplY3QgQ2xhc3NEaWFncmFtICJFeHRlbnNpYmlsaXR5IgotCQkJcXVpZCAgICAgICAJIjNBRTczQUEzMDMyRSIKLQkJCXRpdGxlICAgICAgCSJFeHRlbnNpYmlsaXR5IgotCQkJem9vbSAgICAgICAJMTAwCi0JCQltYXhfaGVpZ2h0IAkyODM1MAotCQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJCW9yaWdpbl94ICAgCTAKLQkJCW9yaWdpbl95ICAgCTAKLQkJCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0Ci0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3OjptaW1lOjpNSU1FTWltZVhtbCIgQDMxCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSgxMzI4LCA3NTIpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzMQotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTE3NCwgNjQ2KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTMwOAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJNSU1FTWltZVhtbCIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBQzkxNDVBMDFGRiIKLQkJCQljb21wYXJ0bWVudCAJKG9iamVjdCBDb21wYXJ0bWVudAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDMxCi0JCQkJICAgIGxvY2F0aW9uICAgCSgxMTc0LCA3MDYpCi0JCQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkJCSAgICBmaWxsX2NvbG9yIAkxNjc3NzIxNQotCQkJCSAgICBhbmNob3IgICAgIAkyCi0JCQkJICAgIG5saW5lcyAgICAgCTMKLQkJCQkgICAgbWF4X3dpZHRoICAJMjE1KQotCQkJCXdpZHRoICAgICAgCTMyNgotCQkJCWhlaWdodCAgICAgCTIzNgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6bWltZTo6TUlNRU11bHRpcGFydFJlbGF0ZWQiIEAzMgotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNzUyLCAxMTM2KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMzIKLQkJCQkgICAgbG9jYXRpb24gICAJKDUzMywgMTAzMCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAk0MzgKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiTUlNRU11bHRpcGFydFJlbGF0ZWQiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUM5MTNGQTAyNUIiCi0JCQkJY29tcGFydG1lbnQgCShvYmplY3QgQ29tcGFydG1lbnQKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzMgotCQkJCSAgICBsb2NhdGlvbiAgIAkoNTMzLCAxMDkwKQotCQkJCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQkgICAgZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCQkgICAgYW5jaG9yICAgICAJMgotCQkJCSAgICBubGluZXMgICAgIAkzCi0JCQkJICAgIG1heF93aWR0aCAgCTM0MykKLQkJCQl3aWR0aCAgICAgIAk0NTYKLQkJCQloZWlnaHQgICAgIAkyMzYKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Om1pbWU6Ok1JTUVDb250ZW50IiBAMzMKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTc5MiwgNzUyKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMzMKLQkJCQkgICAgbG9jYXRpb24gICAJKDE2NTAsIDY0NikKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkyODQKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiTUlNRUNvbnRlbnQiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUM5MTM1QjAzQTciCi0JCQkJY29tcGFydG1lbnQgCShvYmplY3QgQ29tcGFydG1lbnQKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzMwotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTY1MCwgNzA2KQotCQkJCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQkgICAgZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCQkgICAgYW5jaG9yICAgICAJMgotCQkJCSAgICBubGluZXMgICAgIAkzCi0JCQkJICAgIG1heF93aWR0aCAgCTIxNSkKLQkJCQl3aWR0aCAgICAgIAkzMDIKLQkJCQloZWlnaHQgICAgIAkyMzYKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6Om1pbWU6Ok1JTUVQYXJ0IiBAMzQKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMzA0LCA3NjgpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzNAotCQkJCSAgICBsb2NhdGlvbiAgIAkoNDAsIDY2MikKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAk1MjgKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiTUlNRVBhcnQiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUM5MTNFRTAwRUIiCi0JCQkJY29tcGFydG1lbnQgCShvYmplY3QgQ29tcGFydG1lbnQKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzNAotCQkJCSAgICBsb2NhdGlvbiAgIAkoNDAsIDcyMikKLQkJCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJICAgIGZpbGxfY29sb3IgCTE2Nzc3MjE1Ci0JCQkJICAgIGFuY2hvciAgICAgCTIKLQkJCQkgICAgbmxpbmVzICAgICAJMwotCQkJCSAgICBtYXhfd2lkdGggIAk1MzQpCi0JCQkJd2lkdGggICAgICAJNTQ2Ci0JCQkJaGVpZ2h0ICAgICAJMjM2Ci0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIgQDM1Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDk3NiwgMTkyKQotCQkJCWZvbnQgICAgICAgCShvYmplY3QgRm9udAotCQkJCSAgICBpdGFsaWNzICAgIAlUUlVFKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMzUKLQkJCQkgICAgbG9jYXRpb24gICAJKDc0NywgODcpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJNDU4Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIkV4dGVuc2liaWxpdHlFbGVtZW50IikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0FENURCQjYwMkE5IgotCQkJCWNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQkJICAgIFBhcmVudF9WaWV3IAlAMzUKLQkJCQkgICAgbG9jYXRpb24gICAJKDc0NywgMTk1KQotCQkJCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQkgICAgZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCQkgICAgYW5jaG9yICAgICAJMgotCQkJCSAgICBubGluZXMgICAgIAkyCi0JCQkJICAgIG1heF93aWR0aCAgCTQ2NSkKLQkJCQl3aWR0aCAgICAgIAk0NzYKLQkJCQloZWlnaHQgICAgIAkyMzQKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IEluaGVyaXRUcmVlVmlldyAiIiBAMzYKLQkJCQlsb2NhdGlvbiAgIAkoOTc2LCA1MjYpCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJc3VwcGxpZXIgICAJQDM1Ci0JCQkJdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJICAgICg5NzYsIDUyNikKLQkJCQkgICAgKDk3NiwgMzA5KSkpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMzcKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSIzQUVGMTFERDAzOEIiCi0JCQkJY2xpZW50ICAgICAJQDMxCi0JCQkJc3VwcGxpZXIgICAJQDM1Ci0JCQkJbGluZV9zdHlsZSAJMwotCQkJCW9yaWdpbl9hdHRhY2htZW50IAkoMTM1NiwgNjM0KQotCQkJCXRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMzU2LCA1MjYpCi0JCQkJZHJhd1N1cHBsaWVyIAlAMzYpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMzgKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSIzQUVGMTFENTAzMzAiCi0JCQkJY2xpZW50ICAgICAJQDMyCi0JCQkJc3VwcGxpZXIgICAJQDM1Ci0JCQkJbGluZV9zdHlsZSAJMwotCQkJCW9yaWdpbl9hdHRhY2htZW50IAkoODQ0LCAxMDE4KQotCQkJCXRlcm1pbmFsX2F0dGFjaG1lbnQgCSg4NDQsIDUyNikKLQkJCQlkcmF3U3VwcGxpZXIgCUAzNikKLQkJCSAgICAob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAzOQotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjNBRUYxMUNBMDM4RSIKLQkJCQljbGllbnQgICAgIAlAMzMKLQkJCQlzdXBwbGllciAgIAlAMzUKLQkJCQlsaW5lX3N0eWxlIAkzCi0JCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSgxNzc4LCA2MzQpCi0JCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDE3NzgsIDUyNikKLQkJCQlkcmF3U3VwcGxpZXIgCUAzNikKLQkJCSAgICAob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA0MAotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjQwQTBGREVGMDMyMiIKLQkJCQljbGllbnQgICAgIAlAMzQKLQkJCQlzdXBwbGllciAgIAlAMzUKLQkJCQlsaW5lX3N0eWxlIAkzCi0JCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSgyNTYsIDY1MCkKLQkJCQl0ZXJtaW5hbF9hdHRhY2htZW50IAkoMjU2LCA1MjYpCi0JCQkJZHJhd1N1cHBsaWVyIAlAMzYpCi0JCQkgICAgKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDYiIEA0MQotCQkJCWxvY2F0aW9uICAgCSgzMDMsIDI1MSkKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSI0Njg3Mzc5QTAwOEMiCi0JCQkJcm9sZXZpZXdfbGlzdCAJKGxpc3QgUm9sZVZpZXdzCi0JCQkJICAgIChvYmplY3QgUm9sZVZpZXcgImVFeHRlbnNpYmlsaXR5RWxlbWVudHMiIEA0MgotCQkJCQlQYXJlbnRfVmlldyAJQDQxCi0JCQkJCWxvY2F0aW9uICAgCSgtMSwgLTUxNykKLQkJCQkJbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBANDMKLQkJCQkJICAgIFBhcmVudF9WaWV3IAlANDIKLQkJCQkJICAgIGxvY2F0aW9uICAgCSg0NjIsIDEzMSkKLQkJCQkJICAgIGFuY2hvciAgICAgCTEKLQkJCQkJICAgIGFuY2hvcl9sb2MgCTEKLQkJCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkJICAgIG1heF93aWR0aCAgCTQ0NAotCQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCQkgICAgbGFiZWwgICAgICAJIitlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIgotCQkJCQkgICAgcGN0RGlzdCAgICAJMC40NDMzMjAKLQkJCQkJICAgIGhlaWdodCAgICAgCTYwCi0JCQkJCSAgICBvcmllbnRhdGlvbiAJMCkKLQkJCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJCXF1aWR1ICAgICAgCSI0Njg3Mzc5QjAyODAiCi0JCQkJCWNsaWVudCAgICAgCUA0MQotCQkJCQlzdXBwbGllciAgIAlAMzUKLQkJCQkJdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJCSAgICAoMzAzLCAyNTEpCi0JCQkJCSAgICAoMzAzLCAxOTEpCi0JCQkJCSAgICAoNzM3LCAxOTEpKQotCQkJCQlsaW5lX3N0eWxlIAkwCi0JCQkJCWxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDQ0Ci0JCQkJCSAgICBQYXJlbnRfVmlldyAJQDQyCi0JCQkJCSAgICBsb2NhdGlvbiAgIAkoNjIyLCAyMjgpCi0JCQkJCSAgICBhbmNob3IgICAgIAkyCi0JCQkJCSAgICBhbmNob3JfbG9jIAkxCi0JCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJCSAgICBtYXhfd2lkdGggIAkxNQotCQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCQkgICAgbGFiZWwgICAgICAJIjAuLioiCi0JCQkJCSAgICBwY3REaXN0ICAgIAkwLjc2NzIwNgotCQkJCQkgICAgaGVpZ2h0ICAgICAJMzcKLQkJCQkJICAgIG9yaWVudGF0aW9uIAkxKQotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA0NQotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUA0MgotCQkJCQkgICAgbG9jYXRpb24gICAJKDU3NSwgMjg0KQotCQkJCQkgICAgYW5jaG9yICAgICAJMwotCQkJCQkgICAgYW5jaG9yX2xvYyAJMQotCQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCQkgICAgbWF4X3dpZHRoICAJMTU5Ci0JCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJCSAgICBsYWJlbCAgICAgIAkie29yZGVyZWR9IgotCQkJCQkgICAgcGN0RGlzdCAgICAJMC42NzIwNjUKLQkJCQkJICAgIGhlaWdodCAgICAgCTkzCi0JCQkJCSAgICBvcmllbnRhdGlvbiAJMSkpCi0JCQkJICAgIChvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDciIEA0NgotCQkJCQlQYXJlbnRfVmlldyAJQDQxCi0JCQkJCWxvY2F0aW9uICAgCSgtMSwgLTUxNykKLQkJCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJCXF1aWR1ICAgICAgCSI0Njg3Mzc5QjAyOTAiCi0JCQkJCWNsaWVudCAgICAgCUA0MQotCQkJCQlzdXBwbGllciAgIAlAMzQKLQkJCQkJbGluZV9zdHlsZSAJMAotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA0NwotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUA0NgotCQkJCQkgICAgbG9jYXRpb24gICAJKDM1NywgNjA5KQotCQkJCQkgICAgYW5jaG9yICAgICAJMgotCQkJCQkgICAgYW5jaG9yX2xvYyAJMQotCQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCQkgICAgbWF4X3dpZHRoICAJMTUKLQkJCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkJICAgIGxhYmVsICAgICAgCSIxLi4xIgotCQkJCQkgICAgcGN0RGlzdCAgICAJMC45MDAwMDAKLQkJCQkJICAgIGhlaWdodCAgICAgCTU0Ci0JCQkJCSAgICBvcmllbnRhdGlvbiAJMCkpKSkpKSkpCi0JICAgIChvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgIndzZGwiCi0JCWlzX3VuaXQgICAgCVRSVUUKLQkJaXNfbG9hZGVkICAJRkFMU0UKLQkJZmlsZV9uYW1lICAJIiRWQUJBU0VfUExVR0lOU19QQVRIXFxvcmcuZWNsaXBzZS53c3Qud3NkbFxcbW9kZWxcXG9yZy5lY2xpcHNlLndzdC5XU0RMLmNhdCIKLQkJcXVpZCAgICAgICAJIjNBREZCOEU1MDIxRSIpCi0JICAgIChvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgInhzZCIKLQkJaXNfdW5pdCAgICAJVFJVRQotCQlpc19sb2FkZWQgIAlGQUxTRQotCQlmaWxlX25hbWUgIAkiJFZBQkFTRV9QTFVHSU5TX1BBVEhcXG9yZy5lY2xpcHNlLnhzZFxcbW9kZWxcXG9yZy5lY2xpcHNlLlhTRC5jYXQiCi0JCXF1aWQgICAgICAgCSIzOUFCREM2RjAxQUEiKSkKLQlsb2dpY2FsX3ByZXNlbnRhdGlvbnMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QKLQkgICAgKG9iamVjdCBDbGFzc0RpYWdyYW0gIk1haW4iCi0JCXF1aWQgICAgICAgCSIzQUM5MTA1MTAzQjIiCi0JCXRpdGxlICAgICAgCSJNYWluIgotCQl6b29tICAgICAgIAkxMDAKLQkJbWF4X2hlaWdodCAJMjgzNTAKLQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJb3JpZ2luX3ggICAJMAotCQlvcmlnaW5feSAgIAkwCi0JCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0Ci0JCSAgICAob2JqZWN0IENhdGVnb3J5VmlldyAiTG9naWNhbCBWaWV3OjptaW1lIiBANDgKLQkJCWxvY2F0aW9uICAgCSg0MDAsIDI0MCkKLQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkgICAgUGFyZW50X1ZpZXcgCUA0OAotCQkJICAgIGxvY2F0aW9uICAgCSgyNTYsIDE1NikKLQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJICAgIG5saW5lcyAgICAgCTIKLQkJCSAgICBtYXhfd2lkdGggIAkyODgKLQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkgICAgbGFiZWwgICAgICAJIm1pbWUiKQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJcXVpZHUgICAgICAJIjNBQzkxMjdDMDI2NiIKLQkJCXdpZHRoICAgICAgCTMwMAotCQkJaGVpZ2h0ICAgICAJMTgwKQotCQkgICAgKG9iamVjdCBDYXRlZ29yeVZpZXcgIkxvZ2ljYWwgVmlldzo6d3NkbCIgQDQ5Ci0JCQlsb2NhdGlvbiAgIAkoODgwLCAyNDApCi0JCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJICAgIFBhcmVudF9WaWV3IAlANDkKLQkJCSAgICBsb2NhdGlvbiAgIAkoNzM2LCAxNTYpCi0JCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCSAgICBubGluZXMgICAgIAkyCi0JCQkgICAgbWF4X3dpZHRoICAJMjg4Ci0JCQkgICAganVzdGlmeSAgICAJMAotCQkJICAgIGxhYmVsICAgICAgCSJ3c2RsIikKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCXF1aWR1ICAgICAgCSIzQURGQjhFNTAyMUUiCi0JCQl3aWR0aCAgICAgIAkzMDAKLQkJCWhlaWdodCAgICAgCTE4MCkKLQkJICAgIChvYmplY3QgQ2F0ZWdvcnlWaWV3ICJMb2dpY2FsIFZpZXc6OnhzZCIgQDUwCi0JCQlsb2NhdGlvbiAgIAkoMTM3NiwgMjQwKQotCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCSAgICBQYXJlbnRfVmlldyAJQDUwCi0JCQkgICAgbG9jYXRpb24gICAJKDEyMzIsIDE1NikKLQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJICAgIG5saW5lcyAgICAgCTIKLQkJCSAgICBtYXhfd2lkdGggIAkyODgKLQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkgICAgbGFiZWwgICAgICAJInhzZCIpCi0JCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlxdWlkdSAgICAgIAkiMzlBQkRDNkYwMUFBIgotCQkJd2lkdGggICAgICAJMzAwCi0JCQloZWlnaHQgICAgIAkxODApKSkpKQotICAgIHJvb3Rfc3Vic3lzdGVtIAkob2JqZWN0IFN1YlN5c3RlbSAiQ29tcG9uZW50IFZpZXciCi0JcXVpZCAgICAgICAJIjNBQzkxMDUxMDMxRiIKLQlwaHlzaWNhbF9tb2RlbHMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QpCi0JcGh5c2ljYWxfcHJlc2VudGF0aW9ucyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdAotCSAgICAob2JqZWN0IE1vZHVsZV9EaWFncmFtICJNYWluIgotCQlxdWlkICAgICAgIAkiM0FDOTEwNTIwMDFBIgotCQl0aXRsZSAgICAgIAkiTWFpbiIKLQkJem9vbSAgICAgICAJMTAwCi0JCW1heF9oZWlnaHQgCTI4MzUwCi0JCW1heF93aWR0aCAgCTIxNjAwCi0JCW9yaWdpbl94ICAgCTAKLQkJb3JpZ2luX3kgICAJMAotCQlpdGVtcyAgICAgIAkobGlzdCBkaWFncmFtX2l0ZW1fbGlzdCkpKSkKLSAgICBwcm9jZXNzX3N0cnVjdHVyZSAJKG9iamVjdCBQcm9jZXNzZXMKLQlxdWlkICAgICAgIAkiM0FDOTEwNTEwMzI2IgotCVByb2NzTkRldnMgCShsaXN0Ci0JICAgIChvYmplY3QgUHJvY2Vzc19EaWFncmFtICJEZXBsb3ltZW50IFZpZXciCi0JCXF1aWQgICAgICAgCSIzQUM5MTA1MTAzMjgiCi0JCXRpdGxlICAgICAgCSJEZXBsb3ltZW50IFZpZXciCi0JCXpvb20gICAgICAgCTEwMAotCQltYXhfaGVpZ2h0IAkyODM1MAotCQltYXhfd2lkdGggIAkyMTYwMAotCQlvcmlnaW5feCAgIAkwCi0JCW9yaWdpbl95ICAgCTAKLQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QpKSkpCi0gICAgcHJvcGVydGllcyAJKG9iamVjdCBQcm9wZXJ0aWVzCi0JYXR0cmlidXRlcyAJKGxpc3QgQXR0cmlidXRlX1NldAotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRERMIgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjgwOTEzNTk2NiIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJEREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJEYXRhQmFzZSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YUJhc2VTZXQiIDgwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJEYXRhQmFzZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQkJbmFtZSAgICAgICAJIkFOU0kiCi0JCQkJdmFsdWUgICAgICAJODAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCQluYW1lICAgICAgIAkiT3JhY2xlIgotCQkJCXZhbHVlICAgICAgCTgwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQkJbmFtZSAgICAgICAJIlNRTFNlcnZlciIKLQkJCQl2YWx1ZSAgICAgIAk4MDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRERMIgotCQkJCW5hbWUgICAgICAgCSJTeWJhc2UiCi0JCQkJdmFsdWUgICAgICAJODAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCQluYW1lICAgICAgIAkiV2F0Y29tIgotCQkJCXZhbHVlICAgICAgCTgwNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiUHJpbWFyeUtleUNvbHVtbk5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiSWQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiUHJpbWFyeUtleUNvbHVtblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiTlVNQkVSKDUpIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIlZpZXdOYW1lIgotCQkJdmFsdWUgICAgICAJIlZfIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIlRhYmxlTmFtZSIKLQkJCXZhbHVlICAgICAgCSJUXyIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJJbmhlcml0U3VmZml4IgotCQkJdmFsdWUgICAgICAJIl9WIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkRyb3BDbGF1c2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkJhc2VWaWV3cyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiRERMU2NyaXB0RmlsZW5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiRERMMS5TUUwiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJEREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19BdHRyaWJ1dGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkNvbHVtblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiVkFSQ0hBUiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJMZW5ndGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIk51bGxzT0siCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiUHJpbWFyeUtleSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiVW5pcXVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJDb21wb3NpdGVVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkNoZWNrQ29uc3RyYWludCIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJEREwiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImZyYW1ld29yayIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjgwOTEzNTk2NiIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDcmVhdGVNaXNzaW5nRGlyZWN0b3JpZXMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiU3RvcE9uRXJyb3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRGlyZWN0b3J5IgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVQcmVzZXJ2ZVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb25UeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDb25zdFZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlZmF1bHRTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkRlZmF1bHRTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIklETEVsZW1lbnQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSURMU3BlY2lmaWNhdGlvblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIklETFNwZWNTZXQiIDIyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIklETFNwZWNTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJJbnRlcmZhY2UiCi0JCQkJdmFsdWUgICAgICAJMjIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJUeXBlZGVmIgotCQkJCXZhbHVlICAgICAgCTU0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiRW51bWVyYXRpb24iCi0JCQkJdmFsdWUgICAgICAJOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTcxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiRXhjZXB0aW9uIgotCQkJCXZhbHVlICAgICAgCTYxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiU3RydWN0IgotCQkJCXZhbHVlICAgICAgCTUxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiVW5pb24iCi0JCQkJdmFsdWUgICAgICAJODEpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLVNwZWMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiICAlWCUgIEAoIykgcGx1Z2lucy9jb20uaWJtLmV0b29scy5jdGMuYmluZGluZy5taW1lL3NyYy9yb3NlL21pbWViaW5kaW5nTURMLm1kbCwgY3RjLCBpYm1jdGMiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkZpbGVOYW1lIgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJRExNb2R1bGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkluY2x1c2lvblByb3RlY3Rpb25TeW1ib2wiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW5jbHVkZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlQnlTaW1wbGVOYW1lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1Cb2R5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICBAKCMpIHBsdWdpbnMvY29tLmlibS5ldG9vbHMuY3RjLmJpbmRpbmcubWltZS9zcmMvcm9zZS9taW1lYmluZGluZ01ETC5tZGwsIGN0YywgaWJtY3RjIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDb3B5cmlnaHROb3RpY2UiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJGaWxlTmFtZSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbmNsdWRlcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVCeVNpbXBsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fT3BlcmF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc09uZVdheSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ29udGV4dCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiUmFpc2VzIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ2FzZVNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSXNDb25zdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ29uc3RWYWx1ZSIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19IYXMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIk5hbWVJZlVubGFiZWxlZCIKLQkJCXZhbHVlICAgICAgCSJ0aGVfJHN1cHBsaWVyIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQm91bmRlZEhhc1JlbFR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkhhc1JlbFR5cGVTZXQiIDQ3KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkhhc1JlbFR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJBcnJheSIKLQkJCQl2YWx1ZSAgICAgIAkyNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIlNlcXVlbmNlIgotCQkJCXZhbHVlICAgICAgCTQ3KSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIk5hbWVJZlVubGFiZWxlZCIKLQkJCXZhbHVlICAgICAgCSJ0aGVfJHN1cHBsaWVyIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQm91bmRlZFJvbGVUeXBlIgotCQkJdmFsdWUgICAgICAJKCJBc3NvY1R5cGVTZXQiIDQ3KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkFzc29jVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIkFycmF5IgotCQkJCXZhbHVlICAgICAgCTI0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiU2VxdWVuY2UiCi0JCQkJdmFsdWUgICAgICAJNDcpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fVXNlcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGb3J3YXJkUmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1N1YnN5c3RlbSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRGlyZWN0b3J5IgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ3JlYXRlTWlzc2luZ0RpcmVjdG9yaWVzIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTdG9wT25FcnJvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRpcmVjdG9yeSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJVc2VQcmVmaXhlcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkluc3RhbmNlVmFyaWFibGVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkibV8iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNsYXNzVmFyaWFibGVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkic18iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRlZmF1bHRBdHRyaWJ1dGVEYXRhVHlwZSIKLQkJCXZhbHVlICAgICAgCSJpbnQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRlZmF1bHRPcGVyYXRpb25SZXR1cm5UeXBlIgotCQkJdmFsdWUgICAgICAJInZvaWQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlJvb3REaXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJBdXRvU3luYyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNob3dDb2RlZ2VuRGxnIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSmF2YWRvY0RlZmF1bHRBdXRob3IiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJKYXZhZG9jRGVmYXVsdFZlcnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJKYXZhZG9jRGVmYXVsdFNpbmNlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSmF2YWRvY051bUFzdGVyaXNrcyIKLQkJCXZhbHVlICAgICAgCTApCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWF4TnVtQ2hhcnMiCi0JCQl2YWx1ZSAgICAgIAk4MCkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFZGl0b3IiCi0JCQl2YWx1ZSAgICAgIAkoIkVkaXRvclR5cGUiIDEwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVk0iCi0JCQl2YWx1ZSAgICAgIAkoIlZNVHlwZSIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDbGFzc1BhdGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFZGl0b3JUeXBlIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkJ1aWx0SW4iCi0JCQkJdmFsdWUgICAgICAJMTAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIldpbmRvd3NTaGVsbCIKLQkJCQl2YWx1ZSAgICAgIAkxMDEpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJWTVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiU3VuIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJNaWNyb3NvZnQiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIklCTSIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJOb0NsYXNzQ3VzdG9tRGxnIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2xvYmFsSW1wb3J0cyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJPcGVuQnJhY2VDbGFzc1N0eWxlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJPcGVuQnJhY2VNZXRob2RTdHlsZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVXNlVGFicyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlVzZVNwYWNlcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU3BhY2luZ0l0ZW1zIgotCQkJdmFsdWUgICAgICAJMykKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJSb3NlRGVmYXVsdENvbW1lbnRTdHlsZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQXN0ZXJpc2tDb21tZW50U3R5bGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJKYXZhQ29tbWVudFN0eWxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSmF2YWRvY0F1dGhvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkphdmFkb2NTaW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkphdmFkb2NWZXJzaW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvbnN0cnVjdG9ySXMiCi0JCQl2YWx1ZSAgICAgIAkoIkN0b3JfU2V0IiA2MikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ3Rvcl9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHVibGljIgotCQkJCXZhbHVlICAgICAgCTYyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk2MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTY0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGaW5hbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN0YXRpY0luaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbnN0YW5jZUluaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU3RhdGljIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDb2RlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEaXNhYmxlQXV0b1N5bmMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0TmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRDb250ZXh0UmVmIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSXNTaW5nbGVUaHJlYWQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SW5pdFBhcmFtZXRlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJbml0UGFyYW1ldGVyTmFtZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SXNTZWN1cmUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdERpc3BhdGNoZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdERpc3BhdGNoZXJQYXRoIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRGlzcGF0Y2hlckluY2x1ZGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEaXNwYXRjaGVyRm9yd2FyZCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRTZWN1cml0eVJvbGVzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldGdldEluZm8iCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdEF0dHJpYnV0ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0QXR0cmlidXRlc05hbWVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWV0aG9kRm9yUmVxdWVzdEF0dHJpYnV0ZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdFBhcmFtZXRlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0UGFyYW1ldGVyTmFtZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RGb3JSZXF1ZXN0UGFyYW1ldGVycyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SGVhZGVyTmFtZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RGb3JIZWFkZXJzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEludEhlYWRlciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXREYXRlSGVhZGVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldENvb2tpZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk1ldGhvZEZvckNvb2tpZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRDb250ZW50VHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSFRNTCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlX1hNTF9ERCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCQ21wRmllbGQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJFbnZpcm9ubWVudFByb3BlcnRpZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJDbnhGYWN0b3J5IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCUmVmZXJlbmNlcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlNlY3VyaXR5Um9sZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJOYW1lSW5KQVIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJTZXNzaW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiRUpCU2Vzc2lvblR5cGVfU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlNlc3Npb25UeXBlX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSIiCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlN0YXRlbGVzcyIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiU3RhdGVmdWwiCi0JCQkJdmFsdWUgICAgICAJMjAyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCVHJhbnNhY3Rpb25UeXBlIgotCQkJdmFsdWUgICAgICAJKCJFSkJUcmFuc2FjdGlvblR5cGVfU2V0IiAyMTEpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlRyYW5zYWN0aW9uVHlwZV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQ29udGFpbmVyIgotCQkJCXZhbHVlICAgICAgCTIxMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJCZWFuIgotCQkJCXZhbHVlICAgICAgCTIxMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlBlcnNpc3RlbmNlVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiRUpCUGVyc2lzdGVuY2VUeXBlX1NldCIgMjIwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJQZXJzaXN0ZW5jZVR5cGVfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIiIKLQkJCQl2YWx1ZSAgICAgIAkyMjApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQmVhbiIKLQkJCQl2YWx1ZSAgICAgIAkyMjEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQ29udGFpbmVyIgotCQkJCXZhbHVlICAgICAgCTIyMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlJlZW50cmFudCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkJNUF9FeHRlbmRfQ01QIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW1wb3J0cyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1Cb2R5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbXBvcnRzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fT3BlcmF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTdGF0aWMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJGaW5hbCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk5hdGl2ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlN5bmNocm9uaXplZCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJGaW5hbCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlRyYW5zaWVudCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlZvbGF0aWxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiUHJvcGVydHlUeXBlIgotCQkJdmFsdWUgICAgICAJKCJCZWFuUHJvcGVydHlfU2V0IiA3MSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQmVhblByb3BlcnR5X1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJOb3QgQSBQcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAk3MSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJTaW1wbGUiCi0JCQkJdmFsdWUgICAgICAJNzIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQm91bmQiCi0JCQkJdmFsdWUgICAgICAJNzMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQ29uc3RyYWluZWQiCi0JCQkJdmFsdWUgICAgICAJNzQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJJbmRpdmlkdWFsQ2hhbmdlTWd0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiUmVhZC9Xcml0ZSIKLQkJCXZhbHVlICAgICAgCSgiUmVhZC9Xcml0ZV9TZXQiIDgxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJSZWFkL1dyaXRlX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJSZWFkICYgV3JpdGUiCi0JCQkJdmFsdWUgICAgICAJODEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUmVhZCBPbmx5IgotCQkJCXZhbHVlICAgICAgCTgyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIldyaXRlIE9ubHkiCi0JCQkJdmFsdWUgICAgICAJODMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZ1bGx5UXVhbGlmaWVkVHlwZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvbnRhaW5lckNsYXNzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSW5pdGlhbFZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRmluYWwiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJUcmFuc2llbnQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlByb3BlcnR5VHlwZSIKLQkJCXZhbHVlICAgICAgCSgiQmVhblByb3BlcnR5X1NldCIgNzEpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkJlYW5Qcm9wZXJ0eV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiTm90IEEgUHJvcGVydHkiCi0JCQkJdmFsdWUgICAgICAJNzEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiU2ltcGxlIgotCQkJCXZhbHVlICAgICAgCTcyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkJvdW5kIgotCQkJCXZhbHVlICAgICAgCTczKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0cmFpbmVkIgotCQkJCXZhbHVlICAgICAgCTc0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSW5kaXZpZHVhbENoYW5nZU1ndCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlJlYWQvV3JpdGUiCi0JCQl2YWx1ZSAgICAgIAkoIlJlYWQvV3JpdGVfU2V0IiA4MSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiUmVhZC9Xcml0ZV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUmVhZCAmIFdyaXRlIgotCQkJCXZhbHVlICAgICAgCTgxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQgT25seSIKLQkJCQl2YWx1ZSAgICAgIAk4MikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJXcml0ZSBPbmx5IgotCQkJCXZhbHVlICAgICAgCTgzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGdWxseVF1YWxpZmllZFR5cGVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSXNOYXZpZ2FibGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjM2MDAwMDAwMiIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUHJvamVjdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkRETFNjcmlwdEZpbGVuYW1lIgotCQkJdmFsdWUgICAgICAJIkRETDEuU1FMIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJEcm9wQ2xhdXNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiUHJpbWFyeUtleUNvbHVtbk5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiX0lEIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5Q29sdW1uVHlwZSIKLQkJCXZhbHVlICAgICAgCSJOVU1CRVIoNSwwKSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiU2NoZW1hTmFtZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlNjaGVtYU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUYWJsZU5hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUYWJsZU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUeXBlTmFtZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlR5cGVOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVmlld05hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJWaWV3TmFtZVN1ZmZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlZhcnJheU5hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJWYXJyYXlOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTmVzdGVkVGFibGVOYW1lUHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTmVzdGVkVGFibGVOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT2JqZWN0VGFibGVOYW1lUHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT2JqZWN0VGFibGVOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzU2NoZW1hIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk9JRCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIldoZXJlQ2xhdXNlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiQ2hlY2tDb25zdHJhaW50IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiQ29sbGVjdGlvblR5cGVMZW5ndGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb2xsZWN0aW9uVHlwZVByZWNpc2lvbiIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkNvbGxlY3Rpb25UeXBlU2NhbGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb2xsZWN0aW9uT2ZSRUZTIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RLaW5kIgotCQkJdmFsdWUgICAgICAJKCJNZXRob2RLaW5kU2V0IiAxOTAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPdmVybG9hZElEIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT3JkZXJOdW1iZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWROb0RhdGFTdGF0ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzUmVhZE5vUHJvY2Vzc1N0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNXcml0ZU5vRGF0YVN0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNXcml0ZU5vUHJvY2Vzc1N0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNTZWxmaXNoIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlclR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIlRyaWdnZXJUeXBlU2V0IiAxODAxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyRXZlbnQiCi0JCQl2YWx1ZSAgICAgIAkoIlRyaWdnZXJFdmVudFNldCIgMTYwMSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlclRleHQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyUmVmZXJlbmNpbmdOYW1lcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRyaWdnZXJGb3JFYWNoIgotCQkJdmFsdWUgICAgICAJKCJUcmlnZ2VyRm9yRWFjaFNldCIgMTcwMSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlcldoZW5DbGF1c2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RLaW5kU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIk1hcE1ldGhvZCIKLQkJCQl2YWx1ZSAgICAgIAkxOTAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIk9yZGVyTWV0aG9kIgotCQkJCXZhbHVlICAgICAgCTE5MDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJMTkwMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJQcm9jZWR1cmUiCi0JCQkJdmFsdWUgICAgICAJMTkwNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJPcGVyYXRvciIKLQkJCQl2YWx1ZSAgICAgIAkxOTA1KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0cnVjdG9yIgotCQkJCXZhbHVlICAgICAgCTE5MDYpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiRGVzdHJ1Y3RvciIKLQkJCQl2YWx1ZSAgICAgIAkxOTA3KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlRyaWdnZXIiCi0JCQkJdmFsdWUgICAgICAJMTkwOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJDYWxjdWxhdGVkIgotCQkJCXZhbHVlICAgICAgCTE5MDkpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJBRlRFUiIKLQkJCQl2YWx1ZSAgICAgIAkxODAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkJFRk9SRSIKLQkJCQl2YWx1ZSAgICAgIAkxODAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU1RFQUQgT0YiCi0JCQkJdmFsdWUgICAgICAJMTgwMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRyaWdnZXJGb3JFYWNoU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlJPVyIKLQkJCQl2YWx1ZSAgICAgIAkxNzAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlNUQVRFTUVOVCIKLQkJCQl2YWx1ZSAgICAgIAkxNzAyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlckV2ZW50U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCIKLQkJCQl2YWx1ZSAgICAgIAkxNjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlVQREFURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkRFTEVURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCBPUiBVUERBVEUiCi0JCQkJdmFsdWUgICAgICAJMTYwNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJJTlNFUlQgT1IgREVMRVRFIgotCQkJCXZhbHVlICAgICAgCTE2MDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiVVBEQVRFIE9SIERFTEVURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjA2KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIgotCQkJCXZhbHVlICAgICAgCTE2MDcpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPcmRlck51bWJlciIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT3JkZXJOdW1iZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1VuaXF1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk51bGxzQWxsb3dlZCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTGVuZ3RoIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiUHJlY2lzaW9uIgotCQkJdmFsdWUgICAgICAJIjIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlNjYWxlIgotCQkJdmFsdWUgICAgICAJIjYiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzSW5kZXgiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1ByaW1hcnlLZXkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb21wb3NpdGVVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDaGVja0NvbnN0cmFpbnQiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUHJvamVjdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVc2VNU1ZDIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkhlYWRlckZpbGVFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiaCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkhlYWRlckZpbGVCYWNrdXBFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiaH4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJIZWFkZXJGaWxlVGVtcG9yYXJ5RXh0ZW5zaW9uIgotCQkJdmFsdWUgICAgICAJImgjIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZUZpbGVFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiY3BwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZUZpbGVCYWNrdXBFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiY3B+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZUZpbGVUZW1wb3JhcnlFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiY3AjIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ3JlYXRlTWlzc2luZ0RpcmVjdG9yaWVzIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3RvcE9uRXJyb3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXJyb3JMaW1pdCIKLQkJCXZhbHVlICAgICAgCTMwKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiJFJPU0VDUFBfU09VUkNFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUGF0aFNlcGFyYXRvciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGaWxlTmFtZUZvcm1hdCIKLQkJCXZhbHVlICAgICAgCSIxMjh2eF9iIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm9vbGVhblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiaW50IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQWxsb3dUZW1wbGF0ZXMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBbGxvd0V4cGxpY2l0SW5zdGFudGlhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBbGxvd1Byb3RlY3RlZEluaGVyaXRhbmNlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29tbWVudFdpZHRoIgotCQkJdmFsdWUgICAgICAJNjApCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9uZUJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldENsYXNzIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT25lQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldENsYXNzICoiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcHRpb25hbEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiT3B0aW9uYWxCeVZhbHVlPCR0YXJnZXRDbGFzcz4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcHRpb25hbEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzcyAqIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRml4ZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzc1skbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkRml4ZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzc1skbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRml4ZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0Q2xhc3MgKlskbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkRml4ZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0Q2xhc3MgKlskbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm91bmRlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQm91bmRlZExpc3RCeVZhbHVlPCR0YXJnZXRDbGFzcywkbGltaXQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkQm91bmRlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQm91bmRlZFNldEJ5VmFsdWU8JHRhcmdldENsYXNzLCRsaW1pdD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQm91bmRlZExpc3RCeVJlZmVyZW5jZTwkdGFyZ2V0Q2xhc3MsJGxpbWl0PiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVub3JkZXJlZEJvdW5kZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJCb3VuZGVkU2V0QnlSZWZlcmVuY2U8JHRhcmdldENsYXNzLCRsaW1pdD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbmJvdW5kZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIlVuYm91bmRlZExpc3RCeVZhbHVlPCR0YXJnZXRDbGFzcz4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRVbmJvdW5kZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIlVuYm91bmRlZFNldEJ5VmFsdWU8JHRhcmdldENsYXNzPiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVuYm91bmRlZEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIlVuYm91bmRlZExpc3RCeVJlZmVyZW5jZTwkdGFyZ2V0Q2xhc3M+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkVW5ib3VuZGVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiVW5ib3VuZGVkU2V0QnlSZWZlcmVuY2U8JHRhcmdldENsYXNzPiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQXNzb2NpYXRpb25CeVZhbHVlPCRxdWFsdHlwZSwgJHF1YWxjb250PiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVub3JkZXJlZFF1YWxpZmllZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiRGljdGlvbmFyeUJ5VmFsdWU8JHF1YWx0eXBlLCAkcXVhbGNvbnQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQXNzb2NpYXRpb25CeVJlZmVyZW5jZTwkcXVhbHR5cGUsICRxdWFsY29udD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRRdWFsaWZpZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJEaWN0aW9uYXJ5QnlSZWZlcmVuY2U8JHF1YWx0eXBlLCAkcXVhbGNvbnQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVQcmVzZXJ2ZVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkltcGxlbWVudGF0aW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDbGFzc0tleSIKLQkJCXZhbHVlICAgICAgCSJjbGFzcyIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25zIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IiAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5wcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWxsIgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUHV0Qm9kaWVzSW5TcGVjIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdENvbnN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZVNldCIgMTk5KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdENvbnN0cnVjdG9yVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXhwbGljaXREZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDb3B5Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlU2V0IiAxOTkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb3B5Q29uc3RydWN0b3JWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUNvcHlDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFeHBsaWNpdENvcHlDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXN0cnVjdG9yVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXN0cnVjdG9yS2luZCIKLQkJCXZhbHVlICAgICAgCSgiVGhyZWVLaW5kU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVEZXN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQXNzaWdubWVudE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVTZXQiIDE5OSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc2lnbm1lbnRWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc2lnbm1lbnRLaW5kIgotCQkJdmFsdWUgICAgICAJKCJUaHJlZUtpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUFzc2lnbm1lbnRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFcXVhbGl0eU9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlU2V0IiAxOTkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFcXVhbGl0eVZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXF1YWxpdHlLaW5kIgotCQkJdmFsdWUgICAgICAJKCJGcmllbmRLaW5kU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVFcXVhbGl0eU9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVSZWxhdGlvbmFsT3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJSZWxhdGlvbmFsVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJSZWxhdGlvbmFsS2luZCIKLQkJCXZhbHVlICAgICAgCSgiRnJpZW5kS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lUmVsYXRpb25hbE9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTdG9yYWdlTWdtdE9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3RvcmFnZU1nbXRWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVN0b3JhZ2VNZ210T3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN1YnNjcmlwdE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTdWJzY3JpcHRWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlN1YnNjcmlwdEtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIlRocmVlS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3Vic2NyaXB0UmVzdWx0VHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVTdWJzY3JpcHRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZXJlZmVyZW5jZU9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXJlZmVyZW5jZVZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVyZWZlcmVuY2VLaW5kIgotCQkJdmFsdWUgICAgICAJKCJUaHJlZUtpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRlcmVmZXJlbmNlUmVzdWx0VHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVEZXJlZmVyZW5jZU9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluZGlyZWN0aW9uT3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluZGlyZWN0aW9uVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmRpcmVjdGlvbktpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIlRocmVlS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5kaXJlY3Rpb25SZXN1bHRUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUluZGlyZWN0aW9uT3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU3RyZWFtT3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTdHJlYW1WaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVN0cmVhbU9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVGhyZWVLaW5kU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb21tb24iCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQkJdmFsdWUgICAgICAJMjAyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIktpbmRTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRnJpZW5kS2luZFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29tbW9uIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbCIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFic3RyYWN0IgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRnJpZW5kIgotCQkJCXZhbHVlICAgICAgCTIwNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRGVjbGFyZUFuZERlZmluZSIKLQkJCQl2YWx1ZSAgICAgIAkxOTkpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkRlY2xhcmVPbmx5IgotCQkJCXZhbHVlICAgICAgCTIwNSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRG9Ob3REZWNsYXJlIgotCQkJCXZhbHVlICAgICAgCTIwNikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29uc3RWYWx1ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlZmF1bHRTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdFNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1TcGVjIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiIDMpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJVbnByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBbGwiCi0JCQkJdmFsdWUgICAgICAJMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICBAKCMpIHBsdWdpbnMvY29tLmlibS5ldG9vbHMuY3RjLmJpbmRpbmcubWltZS9zcmMvcm9zZS9taW1lYmluZGluZ01ETC5tZGwsIGN0YywgaWJtY3RjIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRmlsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFsbG93RXh0ZW5zaW9ubGVzc0ZpbGVOYW1lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1c2lvblByb3RlY3Rpb25TeW1ib2wiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVGb3JtYXQiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAKLXwvLyAkcGFja2FnZQotfCNpbmNsdWRlICIkZmlsZSIKLXwKLQkJCSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVCeVNpbXBsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZVByZWNvbXBpbGVkSGVhZGVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVPcmRlciIKLQkJCXZhbHVlICAgICAgCSJBTUlSIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQWRkaXRpb25hbEluY2x1ZGVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmluZ1N0eWxlIgotCQkJdmFsdWUgICAgICAJKCJJbmxpbmluZ1N0eWxlU2V0IiAyMDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmluZ1N0eWxlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbkNsYXNzRGVjbGFyYXRpb24iCi0JCQkJdmFsdWUgICAgICAJMjA4KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGb2xsb3dpbmdDbGFzc0RlY2xhcmF0aW9uIgotCQkJCXZhbHVlICAgICAgCTIwNykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJUeXBlc0RlZmluZWQiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVDbG9zdXJlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1Cb2R5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiIDMpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJVbnByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBbGwiCi0JCQkJdmFsdWUgICAgICAJMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICBAKCMpIHBsdWdpbnMvY29tLmlibS5ldG9vbHMuY3RjLmJpbmRpbmcubWltZS9zcmMvcm9zZS9taW1lYmluZGluZ01ETC5tZGwsIGN0YywgaWJtY3RjIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRmlsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFsbG93RXh0ZW5zaW9ubGVzc0ZpbGVOYW1lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVGb3JtYXQiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAKLXwvLyAkcGFja2FnZQotfCNpbmNsdWRlICIkZmlsZSIKLXwKLQkJCSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVCeVNpbXBsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZVByZWNvbXBpbGVkSGVhZGVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZU9yZGVyIgotCQkJdmFsdWUgICAgICAJIkFNSVIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW5jbHVkZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluaW5nU3R5bGUiCi0JCQl2YWx1ZSAgICAgIAkoIklubGluaW5nU3R5bGVTZXQiIDIwNykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluaW5nU3R5bGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkluQ2xhc3NEZWNsYXJhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDgpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZvbGxvd2luZ0NsYXNzRGVjbGFyYXRpb24iCi0JCQkJdmFsdWUgICAgICAJMjA3KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlR5cGVzRGVmaW5lZCIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUNsb3N1cmUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fT3BlcmF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbktpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIk9wZXJhdGlvbktpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbktpbmRTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZyaWVuZCIKLQkJCQl2YWx1ZSAgICAgIAkyMDQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT3BlcmF0aW9uSXNDb25zdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc0V4cGxpY2l0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFbnRyeUNvZGUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkV4aXRDb2RlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9ucyIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIgMykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFsbCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkJvZHlBbm5vdGF0aW9ucyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc09uZVdheSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb250ZXh0IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlJhaXNlcyIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0hhcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcmRlcmVkIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZV8kc3VwcGxpZXIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IiAxNCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkF0UmVsYXRpb25zaGlwVmlzaWJpbGl0eSIKLQkJCQl2YWx1ZSAgICAgIAkyMTApKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucmVzdHJpY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJNdXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlcklzVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlckZpZWxkU2l6ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbml0aWFsVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXROYW1lIgotCQkJdmFsdWUgICAgICAJImdldF8kcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJzZXRfJHJlbGF0aW9uc2hpcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzIgotCQkJdmFsdWUgICAgICAJKCJHZXRTZXRLaW5kc1NldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0S2luZHNTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZyaWVuZCIKLQkJCQl2YWx1ZSAgICAgIAkyMDQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29udGFpbmVyQ2xhc3MiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2VsZWN0b3JOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlNlbGVjdG9yVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0UmVzdWx0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCSgiR2V0UmVzdWx0SXNDb25zdFNldCIgMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFJlc3VsdElzQ29uc3RTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZhbHNlIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlRydWUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU2FtZV9Bc19GdW5jdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEJ5UmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUdldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlNldFJldHVybnNWYWx1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVTZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGb3J3YXJkUmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkSGFzUmVsVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiSGFzUmVsVHlwZVNldCIgNDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJIYXNSZWxUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBcnJheSIKLQkJCQl2YWx1ZSAgICAgIAkyNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU2VxdWVuY2UiCi0JCQkJdmFsdWUgICAgICAJNDcpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Bc3NvY2lhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlXyR0YXJnZXRDbGFzcyIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fSW5oZXJpdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbnN0YW5jZUFyZ3VtZW50cyIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRm9yd2FyZFJlZmVyZW5jZU9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZV8kdGFyZ2V0Q2xhc3MiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IiAxNCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkF0UmVsYXRpb25zaGlwVmlzaWJpbGl0eSIKLQkJCQl2YWx1ZSAgICAgIAkyMTApKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucmVzdHJpY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJNdXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlcklzVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlckZpZWxkU2l6ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbml0aWFsVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvbnRhaW5lckNsYXNzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvbnRhaW5lckdldCIKLQkJCXZhbHVlICAgICAgCSIkZGF0YS5nZXQoJGtleXMpIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29udGFpbmVyU2V0IgotCQkJdmFsdWUgICAgICAJIiRkYXRhLnNldCgka2V5cywkdmFsdWUpIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHN1cHBsaWVyICoiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzSW5pdGlhbFZhbHVlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRTZXRLaW5kcyIKLQkJCXZhbHVlICAgICAgCSgiR2V0U2V0S2luZHNTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb21tb24iCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQkJdmFsdWUgICAgICAJMjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTdGF0aWMiCi0JCQkJdmFsdWUgICAgICAJMjAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGcmllbmQiCi0JCQkJdmFsdWUgICAgICAJMjA0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEJ5UmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJnZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJKCJHZXRSZXN1bHRJc0NvbnN0U2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0UmVzdWx0SXNDb25zdFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRmFsc2UiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVHJ1ZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTYW1lX0FzX0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZXROYW1lIgotCQkJdmFsdWUgICAgICAJInNldF8kdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVNldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEdldFNldEJ5UmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJKCJRdWFsaWZpZWRHZXRTZXRCeVJlZmVyZW5jZVNldCIgMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEdldFNldEJ5UmVmZXJlbmNlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGYWxzZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJUcnVlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlNhbWVfQXNfR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVF1YWxpZmllZEdldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEdldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiZ2V0XyR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJRdWFsaWZpZWRHZXRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkR2V0UmVzdWx0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCSgiR2V0UmVzdWx0SXNDb25zdFNldCIgMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVF1YWxpZmllZEdldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlUXVhbGlmaWVkU2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkU2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJzZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZFNldFJldHVybnNWYWx1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVRdWFsaWZpZWRTZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUFzc29jQ2xhc3NEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0RhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzRGF0YU1lbWJlclZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IiAxNCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkF0UmVsYXRpb25zaGlwVmlzaWJpbGl0eSIKLQkJCQl2YWx1ZSAgICAgIAkyMTApKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0RhdGFNZW1iZXJNdXRhYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJEYXRhTWVtYmVyTXV0YWJpbGl0eVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJVbnJlc3RyaWN0ZWQiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTXV0YWJsZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb25zdCIKLQkJCQl2YWx1ZSAgICAgIAkyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NEYXRhTWVtYmVySXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzR2V0U2V0S2luZHMiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFNldEtpbmRzU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUFzc29jQ2xhc3NHZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzR2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJnZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NHZXRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0dldFJlc3VsdElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFJlc3VsdElzQ29uc3RTZXQiIDIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVBc3NvY0NsYXNzR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVBc3NvY0NsYXNzU2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc1NldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkic2V0XyR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUFzc29jQ2xhc3NTZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzRm9yd2FyZFJlZmVyZW5jZU9ubHkiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkUm9sZVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkFzc29jVHlwZVNldCIgNDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY1R5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFycmF5IgotCQkJCXZhbHVlICAgICAgCTI0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTZXF1ZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAk0NykpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkYXR0cmlidXRlIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IiAxNCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkF0QXR0cmlidXRlVmlzaWJpbGl0eSIKLQkJCQl2YWx1ZSAgICAgIAkyMTEpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucmVzdHJpY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJNdXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlcklzVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlckZpZWxkU2l6ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUdldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJnZXRfJGF0dHJpYnV0ZSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlNldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkic2V0XyRhdHRyaWJ1dGUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRTZXRLaW5kcyIKLQkJCXZhbHVlICAgICAgCSgiR2V0U2V0S2luZHNTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb21tb24iCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQkJdmFsdWUgICAgICAJMjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTdGF0aWMiCi0JCQkJdmFsdWUgICAgICAJMjAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGcmllbmQiCi0JCQkJdmFsdWUgICAgICAJMjA0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJKCJHZXRSZXN1bHRJc0NvbnN0U2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0UmVzdWx0SXNDb25zdFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRmFsc2UiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVHJ1ZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTYW1lX0FzX0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVNldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNhc2VTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1VzZXMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRm9yd2FyZFJlZmVyZW5jZU9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm9keVJlZmVyZW5jZU9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGb3J3YXJkUmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fU3Vic3lzdGVtIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRpcmVjdG9yeSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGlyZWN0b3J5SXNPblNlYXJjaExpc3QiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUHJlY29tcGlsZWRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DYXRlZ29yeSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJc05hbWVzcGFjZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmRlbnQiCi0JCQl2YWx1ZSAgICAgIAkyKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9ucyIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIgMykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFsbCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiVmVyc2lvbiIKLQkJCXZhbHVlICAgICAgCSI1LjAiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJNU1ZDIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQ2xhc3MiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDQ2xhc3NUeXBlU2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJNU1ZDQ2xhc3NUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vcm1hbCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkludGVyZmFjZV9QYXJ0IgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiQ29ubmVjdGlvbl9QYXJ0IgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiQ2xhc3NfRmFjdG9yeSIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ09iamVjdEZ1bmN0aW9uYWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkNPYmplY3RGdW5jdGlvbmFsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT2JqZWN0RnVuY3Rpb25hbGl0eVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRHluYW1pYyIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkR5bmNyZWF0ZSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlNlcmlhbCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVPdmVycmlkZUdyb3VwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhR3JvdXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfREFUQV9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRmllbGRHcm91cCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9GSUVMRF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlTWVzc2FnZUdyb3VwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVNZXNzYWdlTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX01TR19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJNRVNTQUdFX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRUZhY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkoIk9MRUZhY3RvcnlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRUZhY3RvcnlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkJ1aWx0X2luIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiU2ltcGxlIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTGljZW5zZWQiCi0JCQkJdmFsdWUgICAgICAJMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJPTEVDbGFzc0lEIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVPTEVDdGxUeXBlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFQ3RsVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlT0xFVHlwZUxpYiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRVR5cGVMaWJJRCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRVR5cGVMaWJNYWpvciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRVR5cGVMaWJNaW5vciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlUHJvcFBhZ2VJRHMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJPTEVQcm9wUGFnZUlEcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURpc3BhdGNoTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrUHJvcGVydGllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJTdG9ja0Z1bmN0aW9ucyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJEaXNwYXRjaERlZlZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEaXNwSWRFbnVtIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BfSURfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUludGVyZmFjZU1hcCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIklOVEVSRkFDRV9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJJbml0SW50ZXJmYWNlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFdmVudE1hcCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJFVkVOVF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJTdG9ja0V2ZW50cyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUV2ZW50U2lua01hcCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVFNJTktfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRVZFTlRTSU5LX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkVWRU5UU0lOS19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQcm9wTm90aWZ5U2lua3MiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDb25uZWN0aW9uTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ09OTkVDVElPTl9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDb25uZWN0aW9uUG9pbnRJSUQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJJbmhlcml0YW5jZVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJEZWNsU3BlYyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRUNvbW1hbmRzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1GQ0RlY2xhcmVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1GQ0ltcGxlbWVudHMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQVRMX0RlY2xhcmVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQ09NTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ09NX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQ29ubmVjdGlvblBvaW50TWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ09OTkVDVElPTl9QT0lOVF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZU1zZ01hcCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TR19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVByb3BlcnR5TWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiUFJPUEVSVFlfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDT3BlcmF0aW9uVHlwZVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNWQ09wZXJhdGlvblR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbF9PdmVycmlkZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1lc3NhZ2VfSGFuZGxlciIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkRpc3BhdGNoX0hhbmRsZXIiCi0JCQkJdmFsdWUgICAgICAJMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJFdmVudF9GaXJpbmdfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJFdmVudF9TaW5rX0hhbmRsZXIiCi0JCQkJdmFsdWUgICAgICAJNSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTdGRfT0xFX01ldGhvZCIKLQkJCQl2YWx1ZSAgICAgIAk2KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkNvbW1hbmRfUGFyc2VyIgotCQkJCXZhbHVlICAgICAgCTcpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiUHJvcGVydHlfR2V0X0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTgpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiUHJvcGVydHlfU2V0X0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTkpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiUHJvcGVydHlfTm90aWZ5X0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTEwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1hY3JvX0dlbmVyYXRlZF9GdW5jdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxMSkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9NU0dfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTUVTU0FHRV9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkVWRU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVFNJTktfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRVZFTlRTSU5LX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNhbGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRGVjbFNwZWMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJCb2R5SW1hZ2UiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Sb2xlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TVkNBdHRyaWJ1dGVUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vcm1hbCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1lbWJlcl9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkdldF9TZXRfUHJvcGVydHkiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJEaWFsb2dfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkZpZWxkX0RhdGEiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTdG9ja19Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAk1KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRlY2xTcGVjIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiUG9pbnRlckJhc2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDYWxsVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrUHJvcGVydHlJbXBsZW1lbnRhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJNU1ZDIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fSGFzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TVkNBdHRyaWJ1dGVUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vcm1hbCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1lbWJlcl9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkdldF9TZXRfUHJvcGVydHkiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJEaWFsb2dfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkZpZWxkX0RhdGEiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTdG9ja19Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAk1KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRlY2xTcGVjIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiUG9pbnRlckJhc2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDYWxsVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrUHJvcGVydHlJbXBsZW1lbnRhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJNU1ZDIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TVkNBdHRyaWJ1dGVUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vcm1hbCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1lbWJlcl9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkdldF9TZXRfUHJvcGVydHkiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJEaWFsb2dfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkZpZWxkX0RhdGEiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTdG9ja19Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAk1KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRlY2xTcGVjIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiUG9pbnRlckJhc2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDYWxsVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrUHJvcGVydHlJbXBsZW1lbnRhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJNU1ZDIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLVNwZWMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluY2x1ZGVzR3JvdXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfSU5DTFVERVNfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluc2VydExvY2F0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtQm9keSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5jbHVkZXNHcm91cCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9JTkNMVURFU19FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5zZXJ0TG9jYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlNDQyIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVHlwZUxpYkltcG9ydGVyIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiNzgzNjA2Mzc4IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJDcmVhdGFibGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTIyMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpY05vdENyZWF0YWJsZSIKLQkJCQl2YWx1ZSAgICAgIAkyMTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJTaW5nbGVVc2UiCi0JCQkJdmFsdWUgICAgICAJMjE0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiR2xvYmFsU2luZ2xlVXNlIgotCQkJCXZhbHVlICAgICAgCTIxNSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIk11bHRpVXNlIgotCQkJCXZhbHVlICAgICAgCTIxOSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIkdsb2JhbE11bHRpVXNlIgotCQkJCXZhbHVlICAgICAgCTIyMCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiT3B0aW9uQmFzZSIKLQkJCXZhbHVlICAgICAgCSIwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk9wdGlvbkV4cGxpY2l0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk9wdGlvbkNvbXBhcmUiCi0JCQl2YWx1ZSAgICAgIAkoIkNvbXBhcmVTZXQiIDIwMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJDcmVhdGFibGUiCi0JCQl2YWx1ZSAgICAgIAkoIkNyZWF0YWJsZVNldCIgMjIxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5pdGlhbGl6YXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlVGVybWluYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkNvbGxlY3Rpb25DbGFzcyIKLQkJCXZhbHVlICAgICAgCSJDb2xsZWN0aW9uIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkNvbXBhcmVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIkJpbmFyeSIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJUZXh0IgotCQkJCXZhbHVlICAgICAgCTIwNCkpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbk5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJG9wZXJhdGlvbiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJMaWJyYXJ5TmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiQWxpYXNOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJJc1N0YXRpYyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiRW50cnlDb2RlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiRXhpdENvZGUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiSXNDb25zdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiTmV3IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJXaXRoRXZlbnRzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJTdWJzY3JpcHQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk5hbWVJZlVubGFiZWxlZCIKLQkJCXZhbHVlICAgICAgCSJ0aGUkc3VwcGxpZXIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVHZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUxldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Sb2xlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJOZXciCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIldpdGhFdmVudHMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIlN1YnNjcmlwdCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZSRzdXBwbGllciIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJHJlbGF0aW9uc2hpcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUdldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlTGV0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0luaGVyaXQiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkltcGxlbWVudHNEZWxlZ2F0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLVNwZWMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIlByb2plY3RGaWxlIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsU3R1ZGlvIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJInByb3BlcnR5SWQiCi0JCXZhbHVlICAgICAgCSI4MDkxMzU5NjYiKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkNyZWF0ZU1pc3NpbmdEaXJlY3RvcmllcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkVkaXRvciIKLQkJCXZhbHVlICAgICAgCSgiRWRpdG9yVHlwZSIgMTAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZVBhdGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiU3RvcE9uRXJyb3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJFZGl0b3JUeXBlIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJCW5hbWUgICAgICAgCSJCdWlsdEluIgotCQkJCXZhbHVlICAgICAgCTEwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCQluYW1lICAgICAgIAkiV2luZG93c1NoZWxsIgotCQkJCXZhbHVlICAgICAgCTEwMSkpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkFycmF5RGltZW5zaW9ucyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDb25zdFZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkltcGxlbWVudGF0aW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1TcGVjIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbmNsdWRlcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ21JZGVudGlmaWNhdGlvbiIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIgICVYJSAlUSUgJVolICVXJSIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDb3B5cmlnaHROb3RpY2UiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkluY2x1c2lvblByb3RlY3Rpb25TeW1ib2wiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLUJvZHkiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQWRkaXRpb25hbEluY2x1ZGVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICVRJSAlWiUgJVclIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiSW5jbHVzaW9uUHJvdGVjdGlvblN5bWJvbCIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ29udGV4dCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc09uZVdheSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJBcnJheURpbWVuc2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ2FzZVNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIk9yZGVyIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUm9sZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJBcnJheURpbWVuc2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ2FzZVNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJPcmRlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkUm9sZVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkFzc29jVHlwZVNldCIgNDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJBc3NvY1R5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQkJbmFtZSAgICAgICAJIkFycmF5IgotCQkJCXZhbHVlICAgICAgCTI0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJCW5hbWUgICAgICAgCSJTZXF1ZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAk0NykpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1VzZXMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGb3J3YXJkUmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiRGVmYXVsdF9TZXJ2bGV0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXROYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldENvbnRleHRSZWYiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJJc1NpbmdsZVRocmVhZCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJbml0UGFyYW1ldGVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEluaXRQYXJhbWV0ZXJOYW1lcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJc1NlY3VyZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0RGlzcGF0Y2hlciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0RGlzcGF0Y2hlclBhdGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEaXNwYXRjaGVySW5jbHVkZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRpc3BhdGNoZXJGb3J3YXJkIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFNlY3VyaXR5Um9sZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0Z2V0SW5mbyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvbnN0cnVjdG9ySXMiCi0JCQl2YWx1ZSAgICAgIAkoIkN0b3JfU2V0IiA2MikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ3Rvcl9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHVibGljIgotCQkJCXZhbHVlICAgICAgCTYyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk2MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTY0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGaW5hbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN0YXRpY0luaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbnN0YW5jZUluaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJIdHRwX1NlcnZsZXRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFJlcXVlc3RBdHRyaWJ1dGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdEF0dHJpYnV0ZXNOYW1lcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk1ldGhvZEZvclJlcXVlc3RBdHRyaWJ1dGVzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFJlcXVlc3RQYXJhbWV0ZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdFBhcmFtZXRlck5hbWVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWV0aG9kRm9yUmVxdWVzdFBhcmFtZXRlcnMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SGVhZGVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEhlYWRlck5hbWVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWV0aG9kRm9ySGVhZGVycyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJbnRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0RGF0ZUhlYWRlciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRDb29raWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RGb3JDb29raWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0Q29udGVudFR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUhUTUwiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJGaW5hbCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdENvbnN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDb25zdHJ1Y3RvcklzIgotCQkJdmFsdWUgICAgICAJKCJDdG9yX1NldCIgNjIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkN0b3JfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk2MikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcm90ZWN0ZWQiCi0JCQkJdmFsdWUgICAgICAJNjMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk2NCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRmluYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTdGF0aWNJbml0aWFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5zdGFuY2VJbml0aWFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiRGVmYXVsdF9FSkJfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVfWE1MX0REIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJDbXBGaWVsZCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQkVudmlyb25tZW50UHJvcGVydGllcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQkNueEZhY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJSZWZlcmVuY2VzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCU2VjdXJpdHlSb2xlcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQk5hbWVJbkpBUiIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlNlc3Npb25UeXBlIgotCQkJdmFsdWUgICAgICAJKCJFSkJTZXNzaW9uVHlwZV9TZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCU2Vzc2lvblR5cGVfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiU3RhdGVsZXNzIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJTdGF0ZWZ1bCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJUcmFuc2FjdGlvblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkVKQlRyYW5zYWN0aW9uVHlwZV9TZXQiIDIxMSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCVHJhbnNhY3Rpb25UeXBlX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJDb250YWluZXIiCi0JCQkJdmFsdWUgICAgICAJMjExKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkJlYW4iCi0JCQkJdmFsdWUgICAgICAJMjEyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCUGVyc2lzdGVuY2VUeXBlIgotCQkJdmFsdWUgICAgICAJKCJFSkJQZXJzaXN0ZW5jZVR5cGVfU2V0IiAyMjApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlBlcnNpc3RlbmNlVHlwZV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiIgotCQkJCXZhbHVlICAgICAgCTIyMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJCZWFuIgotCQkJCXZhbHVlICAgICAgCTIyMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJDb250YWluZXIiCi0JCQkJdmFsdWUgICAgICAJMjIyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCUmVlbnRyYW50IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQk1QX0V4dGVuZF9DTVAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJGaW5hbCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdENvbnN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDb25zdHJ1Y3RvcklzIgotCQkJdmFsdWUgICAgICAJKCJDdG9yX1NldCIgNjIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkN0b3JfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk2MikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcm90ZWN0ZWQiCi0JCQkJdmFsdWUgICAgICAJNjMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk2NCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRmluYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTdGF0aWNJbml0aWFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5zdGFuY2VJbml0aWFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJSMkVkaXRvciIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiUm9zZSBNb2RlbCBJbnRlZ3JhdG9yIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJSb3NlIFdlYiBQdWJsaXNoZXIiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZlcnNpb24gQ29udHJvbCIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiUmVwb3NpdG9yeSIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY5IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQ2F0ZWdvcnkiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkicGFja2FnZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkibnNQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkibnNVUkkiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiYmFzZVBhY2thZ2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkicHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImFubm90YXRpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJjbGFzc2lmaWVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJjb25zdHJhaW50cyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInhtbENvbnRlbnRLaW5kIgotCQkJdmFsdWUgICAgICAJKCJDb250ZW50S2luZCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIkNvbnRlbnRLaW5kIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJVbnNwZWNpZmllZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJFbXB0eSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJTaW1wbGUiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiTWl4ZWQiCi0JCQkJdmFsdWUgICAgICAJMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiRWxlbWVudE9ubHkiCi0JCQkJdmFsdWUgICAgICAJNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJhbm5vdGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fT3BlcmF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIm9wZXJhdGlvbk5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJhbm5vdGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImF0dHJpYnV0ZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNUcmFuc2llbnQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc0NoYW5nZWFibGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1Vuc2V0dGFibGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc0lEIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlLaW5kIiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiVmlzaWJpbGl0eUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlVuc3BlY2lmaWVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC1vbmx5IgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtd3JpdGUiCi0JCQkJdmFsdWUgICAgICAJMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC1vbmx5IHVuc2V0dGFibGUiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC13cml0ZSB1bnNldHRhYmxlIgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxOYW1lc3BhY2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sRmVhdHVyZUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIkZlYXR1cmVLaW5kIiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiRmVhdHVyZUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlVuc3BlY2lmaWVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlNpbXBsZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJBdHRyaWJ1dGUiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiRWxlbWVudCIKLQkJCQl2YWx1ZSAgICAgIAk0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImFubm90YXRpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Sb2xlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInJlZmVyZW5jZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNUcmFuc2llbnQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc0NoYW5nZWFibGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1Vuc2V0dGFibGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNSZXNvbHZlUHJveGllcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlLaW5kIiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiVmlzaWJpbGl0eUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlVuc3BlY2lmaWVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC1vbmx5IgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtd3JpdGUiCi0JCQkJdmFsdWUgICAgICAJMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC1vbmx5IHVuc2V0dGFibGUiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC13cml0ZSB1bnNldHRhYmxlIgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxOYW1lc3BhY2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sRmVhdHVyZUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIkZlYXR1cmVLaW5kIiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiRmVhdHVyZUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlVuc3BlY2lmaWVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlNpbXBsZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJBdHRyaWJ1dGUiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiRWxlbWVudCIKLQkJCQl2YWx1ZSAgICAgIAk0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImFubm90YXRpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikpKSkKLQlxdWlkICAgICAgIAkiM0FDOTEwNTEwMzI3IikpCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1NPQVAuZWNvcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1NPQVAuZWNvcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MjFhYWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9TT0FQLmVjb3JlCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxlY29yZTpFUGFja2FnZSB4bWk6dmVyc2lvbj0iMi4wIgotICAgIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKLSAgICB4bWxuczplY29yZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSIgbmFtZT0ic29hcCIKLSAgICBuc1VSST0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvU09BUCIgbnNQcmVmaXg9InNvYXAiPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlNPQVBCaW5kaW5nIiBlU3VwZXJUeXBlcz0iV1NETC5lY29yZSMvL0V4dGVuc2liaWxpdHlFbGVtZW50ICMvL0lTT0FQQmluZGluZyI+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InRyYW5zcG9ydFVSSSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJzdHlsZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJTT0FQQm9keSIgZVN1cGVyVHlwZXM9IldTREwuZWNvcmUjLy9FeHRlbnNpYmlsaXR5RWxlbWVudCAjLy9JU09BUEJvZHkiPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJ1c2UiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibmFtZXNwYWNlVVJJIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImVFbmNvZGluZ1N0eWxlcyIgdXBwZXJCb3VuZD0iLTEiCi0gICAgICAgIGVUeXBlPSIjLy9JU3RyaW5nIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVQYXJ0cyIgdXBwZXJCb3VuZD0iLTEiCi0gICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgV1NETC5lY29yZSMvL1BhcnQiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iU09BUEhlYWRlckJhc2UiIGVTdXBlclR5cGVzPSJXU0RMLmVjb3JlIy8vRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRFbmNvZGluZ1N0eWxlcyIgZVR5cGU9ImVjb3JlOkVDbGFzcyBXU0RMLmVjb3JlIy8vSUxpc3QiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0ic2V0RW5jb2RpbmdTdHlsZXMiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9ImVuY29kaW5nU3R5bGVzIiBlVHlwZT0iZWNvcmU6RUNsYXNzIFdTREwuZWNvcmUjLy9JTGlzdCIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InVzZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJuYW1lc3BhY2VVUkkiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0iZUVuY29kaW5nU3R5bGVzIiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9IiMvL0lTdHJpbmciLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibWVzc2FnZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBXU0RMLmVjb3JlIy8vUU5hbWUiLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0icGFydCIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlTWVzc2FnZSIgbG93ZXJCb3VuZD0iMSIKLSAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyBXU0RMLmVjb3JlIy8vTWVzc2FnZSIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlUGFydCIgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyBXU0RMLmVjb3JlIy8vUGFydCIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJTT0FQRmF1bHQiIGVTdXBlclR5cGVzPSJXU0RMLmVjb3JlIy8vRXh0ZW5zaWJpbGl0eUVsZW1lbnQgIy8vSVNPQVBGYXVsdCI+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InVzZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJuYW1lc3BhY2VVUkkiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0iZUVuY29kaW5nU3R5bGVzIiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9IiMvL0lTdHJpbmciPgotICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgICA8ZGV0YWlscyBrZXk9InN1cHByZXNzZWRHZXRWaXNpYmlsaXR5IiB2YWx1ZT0idHJ1ZSIvPgotICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJuYW1lIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlNPQVBPcGVyYXRpb24iIGVTdXBlclR5cGVzPSJXU0RMLmVjb3JlIy8vRXh0ZW5zaWJpbGl0eUVsZW1lbnQgIy8vSVNPQVBPcGVyYXRpb24iPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJzb2FwQWN0aW9uVVJJIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InN0eWxlIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlNPQVBBZGRyZXNzIiBlU3VwZXJUeXBlcz0iV1NETC5lY29yZSMvL0V4dGVuc2liaWxpdHlFbGVtZW50ICMvL0lTT0FQQWRkcmVzcyI+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImxvY2F0aW9uVVJJIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlNPQVBIZWFkZXJGYXVsdCIgZVN1cGVyVHlwZXM9IiMvL1NPQVBIZWFkZXJCYXNlICMvL0lTT0FQSGVhZGVyRmF1bHQiLz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJTT0FQSGVhZGVyIiBlU3VwZXJUeXBlcz0iIy8vU09BUEhlYWRlckJhc2UgIy8vSVNPQVBIZWFkZXIiPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJoZWFkZXJGYXVsdHMiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vU09BUEhlYWRlckZhdWx0IiBjb250YWlubWVudD0idHJ1ZSIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBuYW1lPSJJU3RyaW5nIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YS5sYW5nLlN0cmluZyIvPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklTT0FQQmluZGluZyIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nIgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIvPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklTT0FQQWRkcmVzcyIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzIgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIvPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklTT0FQQm9keSIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5IgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSI+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldEVuY29kaW5nU3R5bGVzIiBlVHlwZT0iZWNvcmU6RUNsYXNzIFdTREwuZWNvcmUjLy9JTGlzdCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRFbmNvZGluZ1N0eWxlcyI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0iZW5jb2RpbmdTdHlsZXMiIGVUeXBlPSJlY29yZTpFQ2xhc3MgV1NETC5lY29yZSMvL0lMaXN0Ii8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0UGFydHMiIGVUeXBlPSJlY29yZTpFQ2xhc3MgV1NETC5lY29yZSMvL0lMaXN0Ii8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9InNldFBhcnRzIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJwYXJ0cyIgZVR5cGU9ImVjb3JlOkVDbGFzcyBXU0RMLmVjb3JlIy8vSUxpc3QiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJU09BUEZhdWx0IiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0IgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIvPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklTT0FQT3BlcmF0aW9uIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbiIKLSAgICAgIGFic3RyYWN0PSJ0cnVlIiBpbnRlcmZhY2U9InRydWUiLz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJU09BUEhlYWRlckZhdWx0IiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0IgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIvPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklTT0FQSGVhZGVyIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlciIKLSAgICAgIGFic3RyYWN0PSJ0cnVlIiBpbnRlcmZhY2U9InRydWUiPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRTT0FQSGVhZGVyRmF1bHRzIiBlVHlwZT0iZWNvcmU6RUNsYXNzIFdTREwuZWNvcmUjLy9JTGlzdCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJhZGRTT0FQSGVhZGVyRmF1bHQiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InNvYXBIZWFkZXJGYXVsdCIgZVR5cGU9IiMvL0lTT0FQSGVhZGVyRmF1bHQiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLTwvZWNvcmU6RVBhY2thZ2U+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1NPQVAuZ2VubW9kZWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1NPQVAuZ2VubW9kZWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NjIzZWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9TT0FQLmdlbm1vZGVsCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxnZW5tb2RlbDpHZW5Nb2RlbCB4bWk6dmVyc2lvbj0iMi4wIgotICAgIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6ZWNvcmU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUiCi0gICAgeG1sbnM6Z2VubW9kZWw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiIG1vZGVsRGlyZWN0b3J5PSIvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAiCi0gICAgZWRpdERpcmVjdG9yeT0iL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYyIgZWRpdG9yRGlyZWN0b3J5PSIvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjIgotICAgIG1vZGVsUGx1Z2luSUQ9Im9yZy5lY2xpcHNlLndzdC53c2RsIiBtb2RlbE5hbWU9IlNPQVAiIGVkaXRQbHVnaW5DbGFzcz0iIiBlZGl0b3JQbHVnaW5DbGFzcz0iIgotICAgIG5vbk5MU01hcmtlcnM9InRydWUiIGNvZGVGb3JtYXR0aW5nPSJ0cnVlIiBpbXBvcnRlcklEPSJvcmcuZWNsaXBzZS5lbWYuaW1wb3J0ZXIucm9zZSIKLSAgICB1c2VkR2VuUGFja2FnZXM9IldTREwuZ2VubW9kZWwjLy93c2RsIHBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UueHNkL21vZGVsL1hTRC5nZW5tb2RlbCMvL3hzZCI+Ci0gIDxmb3JlaWduTW9kZWw+U09BUC5tZGw8L2ZvcmVpZ25Nb2RlbD4KLSAgPGZvcmVpZ25Nb2RlbD5WQUJBU0VfUExVR0lOU19QQVRIPC9mb3JlaWduTW9kZWw+Ci0gIDxmb3JlaWduTW9kZWw+Li4vLi4vLi48L2ZvcmVpZ25Nb2RlbD4KLSAgPGdlblBhY2thZ2VzIHByZWZpeD0iU09BUCIgYmFzZVBhY2thZ2U9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmciIGRpc3Bvc2FibGVQcm92aWRlckZhY3Rvcnk9InRydWUiCi0gICAgICBjbGFzc1BhY2thZ2VTdWZmaXg9ImludGVybmFsLmltcGwiIHV0aWxpdHlQYWNrYWdlU3VmZml4PSJpbnRlcm5hbC51dGlsIiBlY29yZVBhY2thZ2U9IlNPQVAuZWNvcmUjLyI+Ci0gICAgPGdlbkRhdGFUeXBlcyBlY29yZURhdGFUeXBlPSJTT0FQLmVjb3JlIy8vSVN0cmluZyIvPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IlNPQVAuZWNvcmUjLy9TT0FQQmluZGluZyI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgU09BUC5lY29yZSMvL1NPQVBCaW5kaW5nL3RyYW5zcG9ydFVSSSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFNPQVAuZWNvcmUjLy9TT0FQQmluZGluZy9zdHlsZSIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJTT0FQLmVjb3JlIy8vU09BUEJvZHkiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFNPQVAuZWNvcmUjLy9TT0FQQm9keS91c2UiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBTT0FQLmVjb3JlIy8vU09BUEJvZHkvbmFtZXNwYWNlVVJJIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgU09BUC5lY29yZSMvL1NPQVBCb2R5L2VFbmNvZGluZ1N0eWxlcyIvPgotICAgICAgPGdlbkZlYXR1cmVzIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFNPQVAuZWNvcmUjLy9TT0FQQm9keS9lUGFydHMiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iU09BUC5lY29yZSMvL1NPQVBIZWFkZXJCYXNlIj4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBTT0FQLmVjb3JlIy8vU09BUEhlYWRlckJhc2UvdXNlIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgU09BUC5lY29yZSMvL1NPQVBIZWFkZXJCYXNlL25hbWVzcGFjZVVSSSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFNPQVAuZWNvcmUjLy9TT0FQSGVhZGVyQmFzZS9lRW5jb2RpbmdTdHlsZXMiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBTT0FQLmVjb3JlIy8vU09BUEhlYWRlckJhc2UvbWVzc2FnZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFNPQVAuZWNvcmUjLy9TT0FQSGVhZGVyQmFzZS9wYXJ0Ii8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgU09BUC5lY29yZSMvL1NPQVBIZWFkZXJCYXNlL2VNZXNzYWdlIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgU09BUC5lY29yZSMvL1NPQVBIZWFkZXJCYXNlL2VQYXJ0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iU09BUC5lY29yZSMvL1NPQVBIZWFkZXJCYXNlL2dldEVuY29kaW5nU3R5bGVzIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iU09BUC5lY29yZSMvL1NPQVBIZWFkZXJCYXNlL3NldEVuY29kaW5nU3R5bGVzIj4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IlNPQVAuZWNvcmUjLy9TT0FQSGVhZGVyQmFzZS9zZXRFbmNvZGluZ1N0eWxlcy9lbmNvZGluZ1N0eWxlcyIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJTT0FQLmVjb3JlIy8vU09BUEZhdWx0Ij4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBTT0FQLmVjb3JlIy8vU09BUEZhdWx0L3VzZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFNPQVAuZWNvcmUjLy9TT0FQRmF1bHQvbmFtZXNwYWNlVVJJIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgU09BUC5lY29yZSMvL1NPQVBGYXVsdC9lRW5jb2RpbmdTdHlsZXMiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBTT0FQLmVjb3JlIy8vU09BUEZhdWx0L25hbWUiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iU09BUC5lY29yZSMvL1NPQVBPcGVyYXRpb24iPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFNPQVAuZWNvcmUjLy9TT0FQT3BlcmF0aW9uL3NvYXBBY3Rpb25VUkkiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBTT0FQLmVjb3JlIy8vU09BUE9wZXJhdGlvbi9zdHlsZSIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJTT0FQLmVjb3JlIy8vU09BUEFkZHJlc3MiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFNPQVAuZWNvcmUjLy9TT0FQQWRkcmVzcy9sb2NhdGlvblVSSSIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJTT0FQLmVjb3JlIy8vU09BUEhlYWRlckZhdWx0Ii8+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iU09BUC5lY29yZSMvL1NPQVBIZWFkZXIiPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBTT0FQLmVjb3JlIy8vU09BUEhlYWRlci9oZWFkZXJGYXVsdHMiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJTT0FQLmVjb3JlIy8vSVNPQVBCaW5kaW5nIi8+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJTT0FQLmVjb3JlIy8vSVNPQVBBZGRyZXNzIi8+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJTT0FQLmVjb3JlIy8vSVNPQVBCb2R5Ij4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJTT0FQLmVjb3JlIy8vSVNPQVBCb2R5L2dldEVuY29kaW5nU3R5bGVzIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iU09BUC5lY29yZSMvL0lTT0FQQm9keS9zZXRFbmNvZGluZ1N0eWxlcyI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJTT0FQLmVjb3JlIy8vSVNPQVBCb2R5L3NldEVuY29kaW5nU3R5bGVzL2VuY29kaW5nU3R5bGVzIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iU09BUC5lY29yZSMvL0lTT0FQQm9keS9nZXRQYXJ0cyIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IlNPQVAuZWNvcmUjLy9JU09BUEJvZHkvc2V0UGFydHMiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iU09BUC5lY29yZSMvL0lTT0FQQm9keS9zZXRQYXJ0cy9wYXJ0cyIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IlNPQVAuZWNvcmUjLy9JU09BUEZhdWx0Ii8+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJTT0FQLmVjb3JlIy8vSVNPQVBPcGVyYXRpb24iLz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IlNPQVAuZWNvcmUjLy9JU09BUEhlYWRlckZhdWx0Ii8+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJTT0FQLmVjb3JlIy8vSVNPQVBIZWFkZXIiPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IlNPQVAuZWNvcmUjLy9JU09BUEhlYWRlci9nZXRTT0FQSGVhZGVyRmF1bHRzIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iU09BUC5lY29yZSMvL0lTT0FQSGVhZGVyL2FkZFNPQVBIZWFkZXJGYXVsdCI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJTT0FQLmVjb3JlIy8vSVNPQVBIZWFkZXIvYWRkU09BUEhlYWRlckZhdWx0L3NvYXBIZWFkZXJGYXVsdCIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgPC9nZW5QYWNrYWdlcz4KLTwvZ2VubW9kZWw6R2VuTW9kZWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1NPQVAubWRsIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9TT0FQLm1kbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMyMGYzMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1NPQVAubWRsCisrKyAvZGV2L251bGwKQEAgLTEsNjIzMyArMCwwIEBACi0KLShvYmplY3QgUGV0YWwKLSAgICB2ZXJzaW9uICAgIAk0MgotICAgIF93cml0dGVuICAgCSJSb3NlIDQuNS44MTYzLjMiCi0gICAgY2hhclNldCAgICAJMCkKLQotKG9iamVjdCBEZXNpZ24gIkxvZ2ljYWwgVmlldyIKLSAgICBpc191bml0ICAgIAlUUlVFCi0gICAgaXNfbG9hZGVkICAJVFJVRQotICAgIGRlZmF1bHRzICAgCShvYmplY3QgZGVmYXVsdHMKLQlyaWdodE1hcmdpbiAJMC4yNTAwMDAKLQlsZWZ0TWFyZ2luIAkwLjI1MDAwMAotCXRvcE1hcmdpbiAgCTAuMjUwMDAwCi0JYm90dG9tTWFyZ2luIAkwLjUwMDAwMAotCXBhZ2VPdmVybGFwIAkwLjI1MDAwMAotCWNsaXBJY29uTGFiZWxzIAlUUlVFCi0JYXV0b1Jlc2l6ZSAJVFJVRQotCXNuYXBUb0dyaWQgCVRSVUUKLQlncmlkWCAgICAgIAkxNgotCWdyaWRZICAgICAgCTE2Ci0JZGVmYXVsdEZvbnQgCShvYmplY3QgRm9udAotCSAgICBzaXplICAgICAgIAkxMAotCSAgICBmYWNlICAgICAgIAkiQXJpYWwiCi0JICAgIGJvbGQgICAgICAgCUZBTFNFCi0JICAgIGl0YWxpY3MgICAgCUZBTFNFCi0JICAgIHVuZGVybGluZSAgCUZBTFNFCi0JICAgIHN0cmlrZSAgICAgCUZBTFNFCi0JICAgIGNvbG9yICAgICAgCTAKLQkgICAgZGVmYXVsdF9jb2xvciAJVFJVRSkKLQlzaG93TWVzc2FnZU51bSAJMQotCXNob3dDbGFzc09mT2JqZWN0IAlUUlVFCi0Jbm90YXRpb24gICAJIlVuaWZpZWQiKQotICAgIHJvb3RfdXNlY2FzZV9wYWNrYWdlIAkob2JqZWN0IENsYXNzX0NhdGVnb3J5ICJVc2UgQ2FzZSBWaWV3IgotCXF1aWQgICAgICAgCSIzOUUyN0YwODAwNjQiCi0JZXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQlnbG9iYWwgICAgIAlUUlVFCi0JbG9naWNhbF9tb2RlbHMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QpCi0JbG9naWNhbF9wcmVzZW50YXRpb25zIAkobGlzdCB1bml0X3JlZmVyZW5jZV9saXN0Ci0JICAgIChvYmplY3QgVXNlQ2FzZURpYWdyYW0gIk1haW4iCi0JCXF1aWQgICAgICAgCSIzOUUyN0YwODAwNzgiCi0JCXRpdGxlICAgICAgCSJNYWluIgotCQl6b29tICAgICAgIAkxMDAKLQkJbWF4X2hlaWdodCAJMjgzNTAKLQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJb3JpZ2luX3ggICAJMAotCQlvcmlnaW5feSAgIAkwCi0JCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0KSkpKQotICAgIHJvb3RfY2F0ZWdvcnkgCShvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgIkxvZ2ljYWwgVmlldyIKLQlxdWlkICAgICAgIAkiMzlFMjdGMDgwMDYzIgotCWV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JZ2xvYmFsICAgICAJVFJVRQotCXN1YnN5c3RlbSAgCSJDb21wb25lbnQgVmlldyIKLQlxdWlkdSAgICAgIAkiMzlFMjdGMDgwMDY1IgotCWxvZ2ljYWxfbW9kZWxzIAkobGlzdCB1bml0X3JlZmVyZW5jZV9saXN0Ci0JICAgIChvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgIndzZGwiCi0JCWlzX3VuaXQgICAgCVRSVUUKLQkJaXNfbG9hZGVkICAJRkFMU0UKLQkJZmlsZV9uYW1lICAJIiRWQUJBU0VfUExVR0lOU19QQVRIXFxvcmcuZWNsaXBzZS53c3Qud3NkbFxcbW9kZWxcXG9yZy5lY2xpcHNlLndzdC5XU0RMLmNhdCIKLQkJcXVpZCAgICAgICAJIjNBREZCOEU1MDIxRSIpCi0JICAgIChvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgInNvYXAiCi0JCWF0dHJpYnV0ZXMgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkibnNQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkic29hcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIm5zVVJJIgotCQkJdmFsdWUgICAgICAJImh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL1NPQVAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJiYXNlUGFja2FnZSIKLQkJCXZhbHVlICAgICAgCSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkicHJlZml4IgotCQkJdmFsdWUgICAgICAJIlNPQVAiKSkKLQkJcXVpZCAgICAgICAJIjNBMDFDRjBDMDFBMiIKLQkJZXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJbG9naWNhbF9tb2RlbHMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QKLQkJICAgIChvYmplY3QgQ2xhc3MgIlNPQVBCaW5kaW5nIgotCQkJcXVpZCAgICAgICAJIjNBMDFEM0I5MDFBRCIKLQkJCXN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSIzQUUwOUEzODAxQUIiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCQkJcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiNDVFNDg5NTUwMkJGIgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OnNvYXA6OklTT0FQQmluZGluZyIKLQkJCQlxdWlkdSAgICAgIAkiNDVFNDg1QTIwMDFGIikpCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgInRyYW5zcG9ydFVSSSIKLQkJCQlhdHRyaWJ1dGVzIAkobGlzdCBBdHRyaWJ1dGVfU2V0KQotCQkJCXF1aWQgICAgICAgCSIzQTAxRDNERjAxRTQiCi0JCQkJdHlwZSAgICAgICAJIlN0cmluZyIpCi0JCQkgICAgKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAic3R5bGUiCi0JCQkJYXR0cmlidXRlcyAJKGxpc3QgQXR0cmlidXRlX1NldCkKLQkJCQlxdWlkICAgICAgIAkiM0EwMUQzRjEwMjlFIgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIlNPQVBCb2R5IgotCQkJcXVpZCAgICAgICAJIjNBMDFERUQ1MDMxRiIKLQkJCXN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSIzQUUwOUE0NTAwNDEiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCQkJcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiNDVFNDhBNUIwMEJCIgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OnNvYXA6OklTT0FQQm9keSIKLQkJCQlxdWlkdSAgICAgIAkiNDVFNDg4NEIwMTE5IikpCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgInVzZSIKLQkJCQlxdWlkICAgICAgIAkiM0EwMUUyRDUwMUE1IgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKQotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgIm5hbWVzcGFjZVVSSSIKLQkJCQlxdWlkICAgICAgIAkiM0E5MzQ3N0MwMUIyIgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKQotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImVFbmNvZGluZ1N0eWxlcyIKLQkJCQlhdHRyaWJ1dGVzIAkobGlzdCBBdHRyaWJ1dGVfU2V0KQotCQkJCXF1aWQgICAgICAgCSI0NUVDOThBNjAyNzEiCi0JCQkJc3RlcmVvdHlwZSAJIjAuLioiCi0JCQkJdHlwZSAgICAgICAJIklTdHJpbmciKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIlNPQVBIZWFkZXJCYXNlIgotCQkJcXVpZCAgICAgICAJIjNBMDFERUU3MDM0RCIKLQkJCXN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSIzQUUwOUEzRTAzMjYiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCQkJcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIpKQotCQkJb3BlcmF0aW9ucyAJKGxpc3QgT3BlcmF0aW9ucwotCQkJICAgIChvYmplY3QgT3BlcmF0aW9uICJnZXRFbmNvZGluZ1N0eWxlcyIKLQkJCQlxdWlkICAgICAgIAkiNDVFRDA0QzIwMEVBIgotCQkJCXJlc3VsdCAgICAgCSJJTGlzdCIKLQkJCQljb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCQkJb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkJCXVpZCAgICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBPcGVyYXRpb24gInNldEVuY29kaW5nU3R5bGVzIgotCQkJCXF1aWQgICAgICAgCSI0NUVEMDU3MzAyMjIiCi0JCQkJcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJCSAgICAob2JqZWN0IFBhcmFtZXRlciAiZW5jb2RpbmdTdHlsZXMiCi0JCQkJCXR5cGUgICAgICAgCSJJTGlzdCIpKQotCQkJCWNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJCQlvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCQkJdWlkICAgICAgICAJMCkpCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgInVzZSIKLQkJCQlxdWlkICAgICAgIAkiM0FENjJFOUMwMDU2IgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKQotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgIm5hbWVzcGFjZVVSSSIKLQkJCQlxdWlkICAgICAgIAkiM0FENjJFQTIwMjVEIgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKQotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImVFbmNvZGluZ1N0eWxlcyIKLQkJCQlxdWlkICAgICAgIAkiM0VFNEE1OEYwMUFFIgotCQkJCXN0ZXJlb3R5cGUgCSIwLi4qIgotCQkJCXR5cGUgICAgICAgCSJJU3RyaW5nIikKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJtZXNzYWdlIgotCQkJCXF1aWQgICAgICAgCSI0NUYwNkUzNjAxODYiCi0JCQkJdHlwZSAgICAgICAJIlFOYW1lIikKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJwYXJ0IgotCQkJCXF1aWQgICAgICAgCSI0NUYwNkU2QzAxOTYiCi0JCQkJdHlwZSAgICAgICAJIlN0cmluZyIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiU09BUEZhdWx0IgotCQkJcXVpZCAgICAgICAJIjNBMDZEOUZBMDBGNyIKLQkJCXN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSIzQUUwOUE0QTAwMjAiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCQkJcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiNDVFNDhBMDgwMzJDIgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OnNvYXA6OklTT0FQRmF1bHQiCi0JCQkJcXVpZHUgICAgICAJIjQ1RTQ4ODg3MDExOSIpKQotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJ1c2UiCi0JCQkJcXVpZCAgICAgICAJIjNBMDk4MjFBMDEyQiIKLQkJCQl0eXBlICAgICAgIAkiU3RyaW5nIikKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJuYW1lc3BhY2VVUkkiCi0JCQkJcXVpZCAgICAgICAJIjNBRDYyMDQ4MDNBRSIKLQkJCQl0eXBlICAgICAgIAkiU3RyaW5nIikKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJlRW5jb2RpbmdTdHlsZXMiCi0JCQkJYXR0cmlidXRlcyAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJCW5hbWUgICAgICAgCSJ2aXNpYmlsaXR5IgotCQkJCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlLaW5kIiAxKSkpCi0JCQkJcXVpZCAgICAgICAJIjNFRTRBNTYzMDNBRiIKLQkJCQlzdGVyZW90eXBlIAkiMC4uKiIKLQkJCQl0eXBlICAgICAgIAkiSVN0cmluZyIpCi0JCQkgICAgKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAibmFtZSIKLQkJCQlxdWlkICAgICAgIAkiNDVGMDc5RDEwMzk5IgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIlNPQVBPcGVyYXRpb24iCi0JCQlxdWlkICAgICAgIAkiM0EwQUQ0NTUwMEU4IgotCQkJc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjNBRTA5QTRFMDMxRiIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJCQlxdWlkdSAgICAgIAkiM0FENURCQjYwMkE5IikKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSI0NUU0ODk3RjAwN0QiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6c29hcDo6SVNPQVBPcGVyYXRpb24iCi0JCQkJcXVpZHUgICAgICAJIjQ1RTQ4OEE1MDEyOCIpKQotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJzb2FwQWN0aW9uVVJJIgotCQkJCXF1aWQgICAgICAgCSIzQTBBRDQ2NDAwNEEiCi0JCQkJdHlwZSAgICAgICAJIlN0cmluZyIpCi0JCQkgICAgKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAic3R5bGUiCi0JCQkJcXVpZCAgICAgICAJIjNBMEFENDZDMDE4QyIKLQkJCQl0eXBlICAgICAgIAkiU3RyaW5nIikpCi0JCQlsYW5ndWFnZSAgIAkiSmF2YSIpCi0JCSAgICAob2JqZWN0IENsYXNzICJTT0FQQWRkcmVzcyIKLQkJCXF1aWQgICAgICAgCSIzQUQxRkY3NTAyODciCi0JCQlzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiM0FFMDk1MzUwMDk4IgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2liaWxpdHlFbGVtZW50IgotCQkJCXF1aWR1ICAgICAgCSIzQUQ1REJCNjAyQTkiKQotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjQ1RTQ4QTdFMDEwOSIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojpzb2FwOjpJU09BUEFkZHJlc3MiCi0JCQkJcXVpZHUgICAgICAJIjQ1RTQ4N0U3MDBFQSIpKQotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJsb2NhdGlvblVSSSIKLQkJCQlxdWlkICAgICAgIAkiM0FEMjExQzkwMjVDIgotCQkJCXR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIlNPQVBIZWFkZXJGYXVsdCIKLQkJCXF1aWQgICAgICAgCSIzQUQ2MzJCODAzREQiCi0JCQlzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCQkgICAgKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJCQlxdWlkICAgICAgIAkiM0FENjMzMzQwMDM4IgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OnNvYXA6OlNPQVBIZWFkZXJCYXNlIgotCQkJCXF1aWR1ICAgICAgCSIzQTAxREVFNzAzNEQiKQotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjQ1RUQwNzhDMDJGRCIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojpzb2FwOjpJU09BUEhlYWRlckZhdWx0IgotCQkJCXF1aWR1ICAgICAgCSI0NUU0ODhCRDAzQTkiKSkKLQkJCWxhbmd1YWdlICAgCSJKYXZhIikKLQkJICAgIChvYmplY3QgQ2xhc3MgIlNPQVBIZWFkZXIiCi0JCQlxdWlkICAgICAgIAkiM0FENjMzMDkwMTZEIgotCQkJc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkJICAgIChvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCQkJcXVpZCAgICAgICAJIjNBRDYzMzMwMDE3RCIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojpzb2FwOjpTT0FQSGVhZGVyQmFzZSIKLQkJCQlxdWlkdSAgICAgIAkiM0EwMURFRTcwMzREIikKLQkJCSAgICAob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkJCXF1aWQgICAgICAgCSI0NUU0ODlCQzAzMUMiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6c29hcDo6SVNPQVBIZWFkZXIiCi0JCQkJcXVpZHUgICAgICAJIjQ1RTQ4OEU3MDA4QyIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSVN0cmluZyIKLQkJCXF1aWQgICAgICAgCSIzQjhERDkwQzAyMjAiCi0JCQlzdGVyZW90eXBlIAkiZGF0YXR5cGUiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmEubGFuZy5TdHJpbmciCi0JCQkJcXVpZCAgICAgICAJIjNCOEREOTMyMDM4MyIKLQkJCQlzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSVNPQVBCaW5kaW5nIgotCQkJcXVpZCAgICAgICAJIjQ1RTQ4NUEyMDAxRiIKLQkJCXN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nIgotCQkJCXF1aWQgICAgICAgCSI0NUU0ODYzNzAxRDQiCi0JCQkJc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSVNPQVBBZGRyZXNzIgotCQkJcXVpZCAgICAgICAJIjQ1RTQ4N0U3MDBFQSIKLQkJCXN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzIgotCQkJCXF1aWQgICAgICAgCSI0NUU0ODdGNjAzM0MiCi0JCQkJc3RlcmVvdHlwZSAJImphdmFjbGFzcyIKLQkJCQl0eXBlICAgICAgIAkidHlwZSIKLQkJCQlpbml0diAgICAgIAkiaW5pdHZhbCIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSVNPQVBCb2R5IgotCQkJcXVpZCAgICAgICAJIjQ1RTQ4ODRCMDExOSIKLQkJCXN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JCQlvcGVyYXRpb25zIAkobGlzdCBPcGVyYXRpb25zCi0JCQkgICAgKG9iamVjdCBPcGVyYXRpb24gImdldEVuY29kaW5nU3R5bGVzIgotCQkJCXF1aWQgICAgICAgCSI0NUU0OEU4RDAyMjIiCi0JCQkJcmVzdWx0ICAgICAJIklMaXN0IgotCQkJCWNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJCQlvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCQkJdWlkICAgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IE9wZXJhdGlvbiAic2V0RW5jb2RpbmdTdHlsZXMiCi0JCQkJcXVpZCAgICAgICAJIjQ1RjZENjgyMDIwMyIKLQkJCQlwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkJICAgIChvYmplY3QgUGFyYW1ldGVyICJlbmNvZGluZ1N0eWxlcyIKLQkJCQkJdHlwZSAgICAgICAJIklMaXN0IikpCi0JCQkJY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkJCW9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJCQl1aWQgICAgICAgIAkwKQotCQkJCShvYmplY3QgT3BlcmF0aW9uICJnZXRQYXJ0cyIKLQkJCQlxdWlkICAgICAgIAkiNDVFQzU4QTMwMzFDIgotCQkJCXJlc3VsdCAgICAgCSJJTGlzdCIKLQkJCQljb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCQkJb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkJCXVpZCAgICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBPcGVyYXRpb24gInNldFBhcnRzIgotCQkJCXF1aWQgICAgICAgCSI0NUY2RDY1QTAyMDMiCi0JCQkJcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJCSAgICAob2JqZWN0IFBhcmFtZXRlciAicGFydHMiCi0JCQkJCXR5cGUgICAgICAgCSJJTGlzdCIpKQotCQkJCWNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJCQlvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCQkJdWlkICAgICAgICAJMCkpCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5IgotCQkJCXF1aWQgICAgICAgCSI0NUU0ODg1NjAyMTMiCi0JCQkJc3RlcmVvdHlwZSAJImphdmFjbGFzcyIKLQkJCQl0eXBlICAgICAgIAkidHlwZSIKLQkJCQlpbml0diAgICAgIAkiaW5pdHZhbCIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSVNPQVBGYXVsdCIKLQkJCXF1aWQgICAgICAgCSI0NUU0ODg4NzAxMTkiCi0JCQlzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQiCi0JCQkJcXVpZCAgICAgICAJIjQ1RTQ4ODk3MDNBOSIKLQkJCQlzdGVyZW90eXBlIAkiamF2YWNsYXNzIgotCQkJCXR5cGUgICAgICAgCSJ0eXBlIgotCQkJCWluaXR2ICAgICAgCSJpbml0dmFsIikpCi0JCQlsYW5ndWFnZSAgIAkiSmF2YSIpCi0JCSAgICAob2JqZWN0IENsYXNzICJJU09BUE9wZXJhdGlvbiIKLQkJCXF1aWQgICAgICAgCSI0NUU0ODhBNTAxMjgiCi0JCQlzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uIgotCQkJCXF1aWQgICAgICAgCSI0NUU0ODhBRjAwQUIiCi0JCQkJc3RlcmVvdHlwZSAJImphdmFjbGFzcyIKLQkJCQl0eXBlICAgICAgIAkidHlwZSIKLQkJCQlpbml0diAgICAgIAkiaW5pdHZhbCIpKQotCQkJbGFuZ3VhZ2UgICAJIkphdmEiKQotCQkgICAgKG9iamVjdCBDbGFzcyAiSVNPQVBIZWFkZXJGYXVsdCIKLQkJCXF1aWQgICAgICAgCSI0NUU0ODhCRDAzQTkiCi0JCQlzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCQkJY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQiCi0JCQkJcXVpZCAgICAgICAJIjQ1RTQ4OENFMDI5RiIKLQkJCQlzdGVyZW90eXBlIAkiamF2YWNsYXNzIgotCQkJCXR5cGUgICAgICAgCSJ0eXBlIgotCQkJCWluaXR2ICAgICAgCSJpbml0dmFsIikpCi0JCQlsYW5ndWFnZSAgIAkiSmF2YSIpCi0JCSAgICAob2JqZWN0IENsYXNzICJJU09BUEhlYWRlciIKLQkJCXF1aWQgICAgICAgCSI0NUU0ODhFNzAwOEMiCi0JCQlzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCQkJb3BlcmF0aW9ucyAJKGxpc3QgT3BlcmF0aW9ucwotCQkJICAgIChvYmplY3QgT3BlcmF0aW9uICJnZXRTT0FQSGVhZGVyRmF1bHRzIgotCQkJCXF1aWQgICAgICAgCSI0NUVEMDMwMjAwOEMiCi0JCQkJcmVzdWx0ICAgICAJIklMaXN0IgotCQkJCWNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJCQlvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCQkJdWlkICAgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IE9wZXJhdGlvbiAiYWRkU09BUEhlYWRlckZhdWx0IgotCQkJCXF1aWQgICAgICAgCSI0NUVEMDM5NzAyQkYiCi0JCQkJcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJCSAgICAob2JqZWN0IFBhcmFtZXRlciAic29hcEhlYWRlckZhdWx0IgotCQkJCQl0eXBlICAgICAgIAkiSVNPQVBIZWFkZXJGYXVsdCIpKQotCQkJCWNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJCQlvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCQkJdWlkICAgICAgICAJMCkpCi0JCQljbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkJICAgIChvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIiCi0JCQkJcXVpZCAgICAgICAJIjQ1RTQ4OEYxMDBCQiIKLQkJCQlzdGVyZW90eXBlIAkiamF2YWNsYXNzIgotCQkJCXR5cGUgICAgICAgCSJ0eXBlIgotCQkJCWluaXR2ICAgICAgCSJpbml0dmFsIikpCi0JCQlsYW5ndWFnZSAgIAkiSmF2YSIpCi0JCSAgICAob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQwIgotCQkJcXVpZCAgICAgICAJIjNBMDZFMEI1MDAzNiIKLQkJCXJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkJICAgIChvYmplY3QgUm9sZSAiJFVOTkFNRUQkMSIKLQkJCQlxdWlkICAgICAgIAkiM0EwNkUwQjYwMEM0IgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OnNvYXA6OlNPQVBCb2R5IgotCQkJCXF1aWR1ICAgICAgCSIzQTAxREVENTAzMUYiKQotCQkJICAgIChvYmplY3QgUm9sZSAiZVBhcnRzIgotCQkJCXF1aWQgICAgICAgCSIzQTA2RTBCNjAwQzUiCi0JCQkJbGFiZWwgICAgICAJImVQYXJ0cyIKLQkJCQlzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpQYXJ0IgotCQkJCXF1aWR1ICAgICAgCSIzQUQ1Q0UxQzAzMkUiCi0JCQkJY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjAuLm4iKQotCQkJCUNvbnRhaW5tZW50IAkiQnkgUmVmZXJlbmNlIgotCQkJCWlzX25hdmlnYWJsZSAJVFJVRSkpKQotCQkgICAgKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMiIKLQkJCXF1aWQgICAgICAgCSIzQUQ2MkRFNjAxMzAiCi0JCQlyb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJCSAgICAob2JqZWN0IFJvbGUgImVNZXNzYWdlIgotCQkJCXF1aWQgICAgICAgCSIzQUQ2MkRFNzAwNEIiCi0JCQkJbGFiZWwgICAgICAJImVNZXNzYWdlIgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6Ok1lc3NhZ2UiCi0JCQkJcXVpZHUgICAgICAJIjNBRDVDOTU5MDA3OCIKLQkJCQljbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCQkJaXNfbmF2aWdhYmxlIAlUUlVFKQotCQkJICAgIChvYmplY3QgUm9sZSAiJFVOTkFNRUQkMyIKLQkJCQlxdWlkICAgICAgIAkiM0FENjJERTcwMDU1IgotCQkJCXN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OnNvYXA6OlNPQVBIZWFkZXJCYXNlIgotCQkJCXF1aWR1ICAgICAgCSIzQTAxREVFNzAzNEQiKSkpCi0JCSAgICAob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQ0IgotCQkJcXVpZCAgICAgICAJIjNBRDYyREY4MDJEMSIKLQkJCXJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkJICAgIChvYmplY3QgUm9sZSAiZVBhcnQiCi0JCQkJcXVpZCAgICAgICAJIjNBRDYyREZBMDAwMiIKLQkJCQlsYWJlbCAgICAgIAkiZVBhcnQiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6UGFydCIKLQkJCQlxdWlkdSAgICAgIAkiM0FENUNFMUMwMzJFIgotCQkJCWNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIxLi4xIikKLQkJCQlpc19uYXZpZ2FibGUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ1IgotCQkJCXF1aWQgICAgICAgCSIzQUQ2MkRGQTAwMDMiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6c29hcDo6U09BUEhlYWRlckJhc2UiCi0JCQkJcXVpZHUgICAgICAJIjNBMDFERUU3MDM0RCIpKSkKLQkJICAgIChvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDYiCi0JCQlxdWlkICAgICAgIAkiM0FENjMzMzcwMUNEIgotCQkJcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCQkgICAgKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ3IgotCQkJCXF1aWQgICAgICAgCSIzQUQ2MzMzNzAzNzIiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6c29hcDo6U09BUEhlYWRlciIKLQkJCQlxdWlkdSAgICAgIAkiM0FENjMzMDkwMTZEIgotCQkJCWlzX2FnZ3JlZ2F0ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IFJvbGUgImhlYWRlckZhdWx0cyIKLQkJCQlxdWlkICAgICAgIAkiM0FENjMzMzcwMzczIgotCQkJCWxhYmVsICAgICAgCSJoZWFkZXJGYXVsdHMiCi0JCQkJc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6c29hcDo6U09BUEhlYWRlckZhdWx0IgotCQkJCXF1aWR1ICAgICAgCSIzQUQ2MzJCODAzREQiCi0JCQkJY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjAuLm4iKQotCQkJCUNvbnN0cmFpbnRzIAkib3JkZXJlZCIKLQkJCQlDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkJCWlzX25hdmlnYWJsZSAJVFJVRSkpKSkKLQkJbG9naWNhbF9wcmVzZW50YXRpb25zIAkobGlzdCB1bml0X3JlZmVyZW5jZV9saXN0Ci0JCSAgICAob2JqZWN0IENsYXNzRGlhZ3JhbSAiQmluZGluZyIKLQkJCXF1aWQgICAgICAgCSIzQTAxQ0YyMzAyOUYiCi0JCQl0aXRsZSAgICAgIAkiQmluZGluZyIKLQkJCXpvb20gICAgICAgCTg3Ci0JCQltYXhfaGVpZ2h0IAkyODM1MAotCQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJCW9yaWdpbl94ICAgCTAKLQkJCW9yaWdpbl95ICAgCTAKLQkJCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0Ci0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojpzb2FwOjpTT0FQQmluZGluZyIgQDEKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDcwNCwgNDgwKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMQotCQkJCSAgICBsb2NhdGlvbiAgIAkoNDg3LCAzNzIpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJNDM0Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIlNPQVBCaW5kaW5nIikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0EwMUQzQjkwMUFEIgotCQkJCXdpZHRoICAgICAgCTQ1MgotCQkJCWhlaWdodCAgICAgCTI0MAotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6c29hcDo6U09BUE9wZXJhdGlvbiIgQDIKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDE0NzIsIDQ4MCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDIKLQkJCQkgICAgbG9jYXRpb24gICAJKDEyMzUsIDM3MikKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAk0NzQKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiU09BUE9wZXJhdGlvbiIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBMEFENDU1MDBFOCIKLQkJCQl3aWR0aCAgICAgIAk0OTIKLQkJCQloZWlnaHQgICAgIAkyNDAKLQkJCQlhbm5vdGF0aW9uIAk4KQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6c29hcDo6U09BUEhlYWRlciIgQDMKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDc1MiwgMTU1MikKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDMKLQkJCQkgICAgbG9jYXRpb24gICAJKDYxMiwgMTUwNCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkyODAKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiU09BUEhlYWRlciIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBRDYzMzA5MDE2RCIKLQkJCQl3aWR0aCAgICAgIAkyOTgKLQkJCQloZWlnaHQgICAgIAkxMjAKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OlNPQVBIZWFkZXJGYXVsdCIgQDQKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDE5ODQsIDE1MjApCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUA0Ci0JCQkJICAgIGxvY2F0aW9uICAgCSgxNzk3LCAxNDcyKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTM3NAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJTT0FQSGVhZGVyRmF1bHQiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUQ2MzJCODAzREQiCi0JCQkJd2lkdGggICAgICAJMzkyCi0JCQkJaGVpZ2h0ICAgICAJMTIwCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDYiIEA1Ci0JCQkJbG9jYXRpb24gICAJKDEzNDQsIDE1NTkpCi0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiM0FENjMzMzcwMUNEIgotCQkJCXJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJCSAgICAob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQ3IiBANgotCQkJCQlQYXJlbnRfVmlldyAJQDUKLQkJCQkJbG9jYXRpb24gICAJKDY4OCwgNTUpCi0JCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCQlxdWlkdSAgICAgIAkiM0FENjMzMzcwMzcyIgotCQkJCQljbGllbnQgICAgIAlANQotCQkJCQlzdXBwbGllciAgIAlAMwotCQkJCQlsaW5lX3N0eWxlIAkzCi0JCQkJCW9yaWdpbl9hdHRhY2htZW50IAkoMTM0NCwgMTU1OSkKLQkJCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDkwMSwgMTU1OSkpCi0JCQkJICAgIChvYmplY3QgUm9sZVZpZXcgImhlYWRlckZhdWx0cyIgQDcKLQkJCQkJUGFyZW50X1ZpZXcgCUA1Ci0JCQkJCWxvY2F0aW9uICAgCSg2ODgsIDU1KQotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA4Ci0JCQkJCSAgICBQYXJlbnRfVmlldyAJQDcKLQkJCQkJICAgIGxvY2F0aW9uICAgCSgxMzMxLCAxNTE5KQotCQkJCQkgICAgYW5jaG9yICAgICAJMQotCQkJCQkgICAgYW5jaG9yX2xvYyAJMQotCQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCQkgICAgbWF4X3dpZHRoICAJMzQ2Ci0JCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJCSAgICBsYWJlbCAgICAgIAkiK2hlYWRlckZhdWx0cyIKLQkJCQkJICAgIHBjdERpc3QgICAgCS0wLjAzMDcwMgotCQkJCQkgICAgaGVpZ2h0ICAgICAJNDEKLQkJCQkJICAgIG9yaWVudGF0aW9uIAkwKQotCQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQkJcXVpZHUgICAgICAJIjNBRDYzMzM3MDM3MyIKLQkJCQkJY2xpZW50ICAgICAJQDUKLQkJCQkJc3VwcGxpZXIgICAJQDQKLQkJCQkJbGluZV9zdHlsZSAJMwotCQkJCQlvcmlnaW5fYXR0YWNobWVudCAJKDEzNDQsIDE1NTkpCi0JCQkJCXRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNzg4LCAxNTU5KQotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA5Ci0JCQkJCSAgICBQYXJlbnRfVmlldyAJQDcKLQkJCQkJICAgIGxvY2F0aW9uICAgCSgxNjcxLCAxNTIyKQotCQkJCQkgICAgYW5jaG9yICAgICAJMgotCQkJCQkgICAgYW5jaG9yX2xvYyAJMQotCQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCQkgICAgbWF4X3dpZHRoICAJMTUKLQkJCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkJICAgIGxhYmVsICAgICAgCSIwLi4qIgotCQkJCQkgICAgcGN0RGlzdCAgICAJMC43MzY4NDIKLQkJCQkJICAgIGhlaWdodCAgICAgCTM4Ci0JCQkJCSAgICBvcmllbnRhdGlvbiAJMCkKLQkJCQkJbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTAKLQkJCQkJICAgIFBhcmVudF9WaWV3IAlANwotCQkJCQkgICAgbG9jYXRpb24gICAJKDE2MTcsIDE1OTcpCi0JCQkJCSAgICBhbmNob3IgICAgIAkzCi0JCQkJCSAgICBhbmNob3JfbG9jIAkxCi0JCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJCSAgICBtYXhfd2lkdGggIAkxNTEKLQkJCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkJICAgIGxhYmVsICAgICAgCSJ7b3JkZXJlZH0iCi0JCQkJCSAgICBwY3REaXN0ICAgIAkwLjYxNDAzNQotCQkJCQkgICAgaGVpZ2h0ICAgICAJMzgKLQkJCQkJICAgIG9yaWVudGF0aW9uIAkxKSkpKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6TWVzc2FnZSIgQDExCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMjczNiwgNzg0KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMTEKLQkJCQkgICAgbG9jYXRpb24gICAJKDI2MTMsIDcwNykKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkyNDYKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiTWVzc2FnZSIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBRDVDOTU5MDA3OCIKLQkJCQl3aWR0aCAgICAgIAkyNjQKLQkJCQloZWlnaHQgICAgIAkxNzgKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OlNPQVBIZWFkZXJCYXNlIiBAMTIKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDE0NzIsIDkyOCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDEyCi0JCQkJICAgIGxvY2F0aW9uICAgCSgxMTUxLCA2NjUpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJNjQyCi0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIlNPQVBIZWFkZXJCYXNlIikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0EwMURFRTcwMzREIgotCQkJCXdpZHRoICAgICAgCTY2MAotCQkJCWhlaWdodCAgICAgCTU1MAotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQyIiBAMTMKLQkJCQlsb2NhdGlvbiAgIAkoMjIwMywgODU4KQotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjNBRDYyREU2MDEzMCIKLQkJCQlyb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCQkgICAgKG9iamVjdCBSb2xlVmlldyAiZU1lc3NhZ2UiIEAxNAotCQkJCQlQYXJlbnRfVmlldyAJQDEzCi0JCQkJCWxvY2F0aW9uICAgCSgxMDUxLCAtMzEwKQotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxNQotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUAxNAotCQkJCQkgICAgbG9jYXRpb24gICAJKDIzNjcsIDg4OCkKLQkJCQkJICAgIGFuY2hvciAgICAgCTEKLQkJCQkJICAgIGFuY2hvcl9sb2MgCTEKLQkJCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkJICAgIG1heF93aWR0aCAgCTIxNgotCQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCQkgICAgbGFiZWwgICAgICAJIitlTWVzc2FnZSIKLQkJCQkJICAgIHBjdERpc3QgICAgCTAuNDEyMzIyCi0JCQkJCSAgICBoZWlnaHQgICAgIAkzMAotCQkJCQkgICAgb3JpZW50YXRpb24gCTEpCi0JCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCQlxdWlkdSAgICAgIAkiM0FENjJERTcwMDRCIgotCQkJCQljbGllbnQgICAgIAlAMTMKLQkJCQkJc3VwcGxpZXIgICAJQDExCi0JCQkJCWxpbmVfc3R5bGUgCTMKLQkJCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSgyMjAzLCA4NTgpCi0JCQkJCXRlcm1pbmFsX2F0dGFjaG1lbnQgCSgyNjA0LCA4NTgpCi0JCQkJCWxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE2Ci0JCQkJCSAgICBQYXJlbnRfVmlldyAJQDE0Ci0JCQkJCSAgICBsb2NhdGlvbiAgIAkoMjQ3OSwgODIxKQotCQkJCQkgICAgYW5jaG9yICAgICAJMgotCQkJCQkgICAgYW5jaG9yX2xvYyAJMQotCQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCQkgICAgbWF4X3dpZHRoICAJMTUKLQkJCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkJICAgIGxhYmVsICAgICAgCSIxLi4xIgotCQkJCQkgICAgcGN0RGlzdCAgICAJMC42ODcyMDQKLQkJCQkJICAgIGhlaWdodCAgICAgCTM4Ci0JCQkJCSAgICBvcmllbnRhdGlvbiAJMCkpCi0JCQkJICAgIChvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDMiIEAxNwotCQkJCQlQYXJlbnRfVmlldyAJQDEzCi0JCQkJCWxvY2F0aW9uICAgCSgxMDUxLCAtMzEwKQotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxOAotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUAxNwotCQkJCQkgICAgbG9jYXRpb24gICAJKDIwNTUsIDg5OCkKLQkJCQkJICAgIGhpZGRlbiAgICAgCVRSVUUKLQkJCQkJICAgIGFuY2hvciAgICAgCTEKLQkJCQkJICAgIGFuY2hvcl9sb2MgCTEKLQkJCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkJICAgIG1heF93aWR0aCAgCTE5MgotCQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCQkgICAgbGFiZWwgICAgICAJIiIKLQkJCQkJICAgIHBjdERpc3QgICAgCTAuMzcyMjU0Ci0JCQkJCSAgICBoZWlnaHQgICAgIAk0MAotCQkJCQkgICAgb3JpZW50YXRpb24gCTApCi0JCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCQlxdWlkdSAgICAgIAkiM0FENjJERTcwMDU1IgotCQkJCQljbGllbnQgICAgIAlAMTMKLQkJCQkJc3VwcGxpZXIgICAJQDEyCi0JCQkJCWxpbmVfc3R5bGUgCTMKLQkJCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSgyMjAzLCA4NTgpCi0JCQkJCXRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxODAyLCA4NTgpKSkpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojpzb2FwOjpTT0FQQm9keSIgQDE5Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSgxNDcyLCAyMjQwKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMTkKLQkJCQkgICAgbG9jYXRpb24gICAJKDEyMjYsIDIxMzIpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJNDkyCi0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIlNPQVBCb2R5IikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0EwMURFRDUwMzFGIgotCQkJCWNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQkJICAgIFBhcmVudF9WaWV3IAlAMTkKLQkJCQkgICAgbG9jYXRpb24gICAJKDEyMjYsIDIxOTIpCi0JCQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkJCSAgICBmaWxsX2NvbG9yIAkxNjc3NzIxNQotCQkJCSAgICBhbmNob3IgICAgIAkyCi0JCQkJICAgIG5saW5lcyAgICAgCTQKLQkJCQkgICAgbWF4X3dpZHRoICAJMCkKLQkJCQl3aWR0aCAgICAgIAk1MTAKLQkJCQloZWlnaHQgICAgIAkyNDAKLQkJCQlhbm5vdGF0aW9uIAk4KQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6UGFydCIgQDIwCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMjM1MiwgMjA4MCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDIwCi0JCQkJICAgIGxvY2F0aW9uICAgCSgyMjM2LCAxODY2KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTIzMwotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJQYXJ0IikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0FENUNFMUMwMzJFIgotCQkJCXdpZHRoICAgICAgCTI1MQotCQkJCWhlaWdodCAgICAgCTQ1MgotCQkJCWFubm90YXRpb24gCTgpCi0JCQkgICAgKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDQiIEAyMQotCQkJCWxvY2F0aW9uICAgCSgyMjkwLCAxMjMwKQotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjNBRDYyREY4MDJEMSIKLQkJCQlyb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCQkgICAgKG9iamVjdCBSb2xlVmlldyAiZVBhcnQiIEAyMgotCQkJCQlQYXJlbnRfVmlldyAJQDIxCi0JCQkJCWxvY2F0aW9uICAgCSgxMTM4LCA2MikKLQkJCQkJbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjMKLQkJCQkJICAgIFBhcmVudF9WaWV3IAlAMjIKLQkJCQkJICAgIGxvY2F0aW9uICAgCSgyMzgwLCAxNzc5KQotCQkJCQkgICAgYW5jaG9yICAgICAJMQotCQkJCQkgICAgYW5jaG9yX2xvYyAJMQotCQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCQkgICAgbWF4X3dpZHRoICAJMTIwCi0JCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJCSAgICBsYWJlbCAgICAgIAkiK2VQYXJ0IgotCQkJCQkgICAgcGN0RGlzdCAgICAJMC44ODE0NjUKLQkJCQkJICAgIGhlaWdodCAgICAgCTkwCi0JCQkJCSAgICBvcmllbnRhdGlvbiAJMCkKLQkJCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJCXF1aWR1ICAgICAgCSIzQUQ2MkRGQTAwMDIiCi0JCQkJCWNsaWVudCAgICAgCUAyMQotCQkJCQlzdXBwbGllciAgIAlAMjAKLQkJCQkJbGluZV9zdHlsZSAJMwotCQkJCQlvcmlnaW5fYXR0YWNobWVudCAJKDIyOTAsIDEyMzApCi0JCQkJCXRlcm1pbmFsX2F0dGFjaG1lbnQgCSgyMjkwLCAxODU0KQotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyNAotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUAyMgotCQkJCQkgICAgbG9jYXRpb24gICAJKDIyMzcsIDE3NzkpCi0JCQkJCSAgICBhbmNob3IgICAgIAkyCi0JCQkJCSAgICBhbmNob3JfbG9jIAkxCi0JCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJCSAgICBtYXhfd2lkdGggIAkxNQotCQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCQkgICAgbGFiZWwgICAgICAJIjEuLjEiCi0JCQkJCSAgICBwY3REaXN0ICAgIAkwLjg4MTQ2NQotCQkJCQkgICAgaGVpZ2h0ICAgICAJNTQKLQkJCQkJICAgIG9yaWVudGF0aW9uIAkxKSkKLQkJCQkgICAgKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkNSIgQDI1Ci0JCQkJCVBhcmVudF9WaWV3IAlAMjEKLQkJCQkJbG9jYXRpb24gICAJKDExMzgsIDYyKQotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyNgotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUAyNQotCQkJCQkgICAgbG9jYXRpb24gICAJKDE5MjgsIDExMzcpCi0JCQkJCSAgICBoaWRkZW4gICAgIAlUUlVFCi0JCQkJCSAgICBhbmNob3IgICAgIAkxCi0JCQkJCSAgICBhbmNob3JfbG9jIAkxCi0JCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJCSAgICBtYXhfd2lkdGggIAkxMjAKLQkJCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkJICAgIGxhYmVsICAgICAgCSIiCi0JCQkJCSAgICBwY3REaXN0ICAgIAkwLjgwMDAwMAotCQkJCQkgICAgaGVpZ2h0ICAgICAJNDIKLQkJCQkJICAgIG9yaWVudGF0aW9uIAkwKQotCQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQkJcXVpZHUgICAgICAJIjNBRDYyREZBMDAwMyIKLQkJCQkJY2xpZW50ICAgICAJQDIxCi0JCQkJCXN1cHBsaWVyICAgCUAxMgotCQkJCQl2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkJICAgICgyMjkwLCAxMjMwKQotCQkJCQkgICAgKDIyOTAsIDEwOTUpCi0JCQkJCSAgICAoMTgwMiwgMTA5NSkpCi0JCQkJCWxpbmVfc3R5bGUgCTMKLQkJCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSgyMjkwLCAxMjMwKQotCQkJCQl0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTgwMiwgMTA5NSkpKSkKLQkJCSAgICAob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMCIgQDI3Ci0JCQkJbG9jYXRpb24gICAJKDE5NzcsIDIyOTEpCi0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiM0EwNkUwQjUwMDM2IgotCQkJCXJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJCSAgICAob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQxIiBAMjgKLQkJCQkJUGFyZW50X1ZpZXcgCUAyNwotCQkJCQlsb2NhdGlvbiAgIAkoNzQ1LCAtMTMpCi0JCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCQlxdWlkdSAgICAgIAkiM0EwNkUwQjYwMEM0IgotCQkJCQljbGllbnQgICAgIAlAMjcKLQkJCQkJc3VwcGxpZXIgICAJQDE5Ci0JCQkJCWxpbmVfc3R5bGUgCTMKLQkJCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSgxOTc3LCAyMjkxKQotCQkJCQl0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTcyNywgMjI5MSkpCi0JCQkJICAgIChvYmplY3QgUm9sZVZpZXcgImVQYXJ0cyIgQDI5Ci0JCQkJCVBhcmVudF9WaWV3IAlAMjcKLQkJCQkJbG9jYXRpb24gICAJKDc0NSwgLTEzKQotCQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMAotCQkJCQkgICAgUGFyZW50X1ZpZXcgCUAyOQotCQkJCQkgICAgbG9jYXRpb24gICAJKDIxODUsIDIzOTUpCi0JCQkJCSAgICBhbmNob3IgICAgIAkxCi0JCQkJCSAgICBhbmNob3JfbG9jIAkxCi0JCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJCSAgICBtYXhfd2lkdGggIAkxNDQKLQkJCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkJICAgIGxhYmVsICAgICAgCSIrZVBhcnRzIgotCQkJCQkgICAgcGN0RGlzdCAgICAJMC44MzM4NTYKLQkJCQkJICAgIGhlaWdodCAgICAgCTEwNAotCQkJCQkgICAgb3JpZW50YXRpb24gCTEpCi0JCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCQlxdWlkdSAgICAgIAkiM0EwNkUwQjYwMEM1IgotCQkJCQljbGllbnQgICAgIAlAMjcKLQkJCQkJc3VwcGxpZXIgICAJQDIwCi0JCQkJCWxpbmVfc3R5bGUgCTMKLQkJCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSgxOTc3LCAyMjkxKQotCQkJCQl0ZXJtaW5hbF9hdHRhY2htZW50IAkoMjIyNywgMjI5MSkKLQkJCQkJbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzEKLQkJCQkJICAgIFBhcmVudF9WaWV3IAlAMjkKLQkJCQkJICAgIGxvY2F0aW9uICAgCSgyMTg1LCAyMjQ1KQotCQkJCQkgICAgYW5jaG9yICAgICAJMgotCQkJCQkgICAgYW5jaG9yX2xvYyAJMQotCQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCQkgICAgbWF4X3dpZHRoICAJMTUKLQkJCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkJICAgIGxhYmVsICAgICAgCSIwLi4qIgotCQkJCQkgICAgcGN0RGlzdCAgICAJMC44MzM4NTYKLQkJCQkJICAgIGhlaWdodCAgICAgCTQ3Ci0JCQkJCSAgICBvcmllbnRhdGlvbiAJMCkpKSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OlNPQVBGYXVsdCIgQDMyCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSg1OTIsIDIyNTYpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzMgotCQkJCSAgICBsb2NhdGlvbiAgIAkoMzQ2LCAyMTQ4KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTQ5MgotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJTT0FQRmF1bHQiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQTA2RDlGQTAwRjciCi0JCQkJd2lkdGggICAgICAJNTEwCi0JCQkJaGVpZ2h0ICAgICAJMjQwCi0JCQkJYW5ub3RhdGlvbiAJOCkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OklTdHJpbmciIEAzMwotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSgyODgsIDEzNzYpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzMwotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTE0LCAxMzQ4KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTM0OAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJJU3RyaW5nIikKLQkJCQlzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDMzCi0JCQkJICAgIGxvY2F0aW9uICAgCSgxMTQsIDEyOTgpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIGFuY2hvciAgICAgCTEwCi0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMzQ4Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIjw8ZGF0YXR5cGU+PiIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNCOEREOTBDMDIyMCIKLQkJCQl3aWR0aCAgICAgIAkzNjYKLQkJCQloZWlnaHQgICAgIAkxODAKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IEluaGVyaXRUcmVlVmlldyAiIiBAMzQKLQkJCQlsb2NhdGlvbiAgIAkoMTQ3MiwgMTQxOCkKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlzdXBwbGllciAgIAlAMTIKLQkJCQl2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkgICAgKDE0NzIsIDE0MTgpCi0JCQkJICAgICgxNDcyLCAxMjAzKSkpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMzUKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSIzQUQ2MzMzMDAxN0QiCi0JCQkJY2xpZW50ICAgICAJQDMKLQkJCQlzdXBwbGllciAgIAlAMTIKLQkJCQlsaW5lX3N0eWxlIAkzCi0JCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSg4MzYsIDE0OTIpCi0JCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDgzNiwgMTQxOCkKLQkJCQlkcmF3U3VwcGxpZXIgCUAzNCkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OklTT0FQQmluZGluZyIgQDM2Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDcwNCwgOTYpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzNgotCQkJCSAgICBsb2NhdGlvbiAgIAkoNTU3LCA3MikKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkyOTQKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiSVNPQVBCaW5kaW5nIikKLQkJCQlzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDM2Ci0JCQkJICAgIGxvY2F0aW9uICAgCSg1NTcsIDIyKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBhbmNob3IgICAgIAkxMAotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTI5NAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJCQlpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkJCWljb25fc3R5bGUgCSJMYWJlbCIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiNDVFNDg1QTIwMDFGIgotCQkJCXdpZHRoICAgICAgCTMxMgotCQkJCWhlaWdodCAgICAgCTE3MgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDM3Ci0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiNDVFNDg5NTUwMkJGIgotCQkJCWNsaWVudCAgICAgCUAxCi0JCQkJc3VwcGxpZXIgICAJQDM2Ci0JCQkJbGluZV9zdHlsZSAJMCkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OklTT0FQT3BlcmF0aW9uIiBAMzgKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTQ3MiwgMTEyKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlAMzgKLQkJCQkgICAgbG9jYXRpb24gICAJKDEzMDMsIDg4KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTMzOAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJJU09BUE9wZXJhdGlvbiIpCi0JCQkJc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUAzOAotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTMwMywgMzgpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIGFuY2hvciAgICAgCTEwCi0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMzM4Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkJCWljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCQkJaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSI0NUU0ODhBNTAxMjgiCi0JCQkJd2lkdGggICAgICAJMzU2Ci0JCQkJaGVpZ2h0ICAgICAJMTcyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMzkKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSI0NUU0ODk3RjAwN0QiCi0JCQkJY2xpZW50ICAgICAJQDIKLQkJCQlzdXBwbGllciAgIAlAMzgKLQkJCQlsaW5lX3N0eWxlIAkwKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6c29hcDo6SVNPQVBIZWFkZXIiIEA0MAotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDc1MiwgODY0KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANDAKLQkJCQkgICAgbG9jYXRpb24gICAJKDYxMCwgODQwKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTI4NAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJJU09BUEhlYWRlciIpCi0JCQkJc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUA0MAotCQkJCSAgICBsb2NhdGlvbiAgIAkoNjEwLCA3OTApCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIGFuY2hvciAgICAgCTEwCi0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMjg0Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkJCWljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCQkJaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSI0NUU0ODhFNzAwOEMiCi0JCQkJd2lkdGggICAgICAJMzAyCi0JCQkJaGVpZ2h0ICAgICAJMTcyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBANDEKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSI0NUU0ODlCQzAzMUMiCi0JCQkJY2xpZW50ICAgICAJQDMKLQkJCQlzdXBwbGllciAgIAlANDAKLQkJCQlsaW5lX3N0eWxlIAkwKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6c29hcDo6SVNPQVBIZWFkZXJGYXVsdCIgQDQyCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDE5ODQsIDM2OCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDQyCi0JCQkJICAgIGxvY2F0aW9uICAgCSgxNzk1LCAzNDQpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMzc4Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIklTT0FQSGVhZGVyRmF1bHQiKQotCQkJCXN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANDIKLQkJCQkgICAgbG9jYXRpb24gICAJKDE3OTUsIDI5NCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgYW5jaG9yICAgICAJMTAKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkzNzgKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCQkJaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJCQlpY29uX3N0eWxlIAkiTGFiZWwiCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjQ1RTQ4OEJEMDNBOSIKLQkJCQl3aWR0aCAgICAgIAkzOTYKLQkJCQloZWlnaHQgICAgIAkxNzIKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA0MwotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjNBRDYzMzM0MDAzOCIKLQkJCQljbGllbnQgICAgIAlANAotCQkJCXN1cHBsaWVyICAgCUAxMgotCQkJCWxpbmVfc3R5bGUgCTMKLQkJCQlvcmlnaW5fYXR0YWNobWVudCAJKDE5MjEsIDE0NjApCi0JCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDE5MjEsIDE0MTgpCi0JCQkJZHJhd1N1cHBsaWVyIAlAMzQpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojpzb2FwOjpJU09BUEZhdWx0IiBANDQKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNTkyLCAxNzkyKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANDQKLQkJCQkgICAgbG9jYXRpb24gICAJKDQ2OSwgMTc2OCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkyNDYKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiSVNPQVBGYXVsdCIpCi0JCQkJc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUA0NAotCQkJCSAgICBsb2NhdGlvbiAgIAkoNDY5LCAxNzE4KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBhbmNob3IgICAgIAkxMAotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTI0NgotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJCQlpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkJCWljb25fc3R5bGUgCSJMYWJlbCIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiNDVFNDg4ODcwMTE5IgotCQkJCXdpZHRoICAgICAgCTI2NAotCQkJCWhlaWdodCAgICAgCTE3MgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDQ1Ci0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiNDVFNDhBMDgwMzJDIgotCQkJCWNsaWVudCAgICAgCUAzMgotCQkJCXN1cHBsaWVyICAgCUA0NAotCQkJCWxpbmVfc3R5bGUgCTApCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojpzb2FwOjpJU09BUEJvZHkiIEA0NgotCQkJCVNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCQkJU3VwcHJlc3NBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCQkJSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSgxNDcyLCAxNzc2KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANDYKLQkJCQkgICAgbG9jYXRpb24gICAJKDEyNzMsIDE3MjQpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMzk4Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIklTT0FQQm9keSIpCi0JCQkJc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUA0NgotCQkJCSAgICBsb2NhdGlvbiAgIAkoMTI3MywgMTY3NCkKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgYW5jaG9yICAgICAJMTAKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkzOTgKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCQkJaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJCQlpY29uX3N0eWxlIAkiTGFiZWwiCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjQ1RTQ4ODRCMDExOSIKLQkJCQljb21wYXJ0bWVudCAJKG9iamVjdCBDb21wYXJ0bWVudAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDQ2Ci0JCQkJICAgIGxvY2F0aW9uICAgCSgxMjczLCAxNzg0KQotCQkJCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQkgICAgZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCQkgICAgYW5jaG9yICAgICAJMgotCQkJCSAgICBubGluZXMgICAgIAk0Ci0JCQkJICAgIG1heF93aWR0aCAgCTApCi0JCQkJd2lkdGggICAgICAJNDE2Ci0JCQkJaGVpZ2h0ICAgICAJMjI4Ci0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBANDcKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSI0NUU0OEE1QjAwQkIiCi0JCQkJY2xpZW50ICAgICAJQDE5Ci0JCQkJc3VwcGxpZXIgICAJQDQ2Ci0JCQkJbGluZV9zdHlsZSAJMCkKLQkJCSAgICAob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA0OAotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjQ1RUQwNzhDMDJGRCIKLQkJCQljbGllbnQgICAgIAlANAotCQkJCXN1cHBsaWVyICAgCUA0MgotCQkJCWxpbmVfc3R5bGUgCTApKSkKLQkJICAgIChvYmplY3QgQ2xhc3NEaWFncmFtICJQb3J0IgotCQkJcXVpZCAgICAgICAJIjNBMDg1RTMwMDM1QyIKLQkJCXRpdGxlICAgICAgCSJQb3J0IgotCQkJem9vbSAgICAgICAJOTAKLQkJCW1heF9oZWlnaHQgCTI4MzUwCi0JCQltYXhfd2lkdGggIAkyMTYwMAotCQkJb3JpZ2luX3ggICAJMAotCQkJb3JpZ2luX3kgICAJMAotCQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OlNPQVBBZGRyZXNzIiBANDkKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDg0OCwgODMyKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANDkKLQkJCQkgICAgbG9jYXRpb24gICAJKDY0NywgNzUxKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTQwMgotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJTT0FQQWRkcmVzcyIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBRDFGRjc1MDI4NyIKLQkJCQl3aWR0aCAgICAgIAk0MjAKLQkJCQloZWlnaHQgICAgIAkxODYKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OklTT0FQQWRkcmVzcyIgQDUwCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlTdXBwcmVzc0F0dHJpYnV0ZSAJVFJVRQotCQkJCUluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDg0OCwgMjU2KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANTAKLQkJCQkgICAgbG9jYXRpb24gICAJKDY5NiwgMjM1KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTMwNAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJJU09BUEFkZHJlc3MiKQotCQkJCXN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANTAKLQkJCQkgICAgbG9jYXRpb24gICAJKDY5NiwgMTg1KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBhbmNob3IgICAgIAkxMAotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTMwNAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJCQlpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkJCWljb25fc3R5bGUgCSJMYWJlbCIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiNDVFNDg3RTcwMEVBIgotCQkJCXdpZHRoICAgICAgCTMyMgotCQkJCWhlaWdodCAgICAgCTE2NgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDUxCi0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiNDVFNDhBN0UwMTA5IgotCQkJCWNsaWVudCAgICAgCUA0OQotCQkJCXN1cHBsaWVyICAgCUA1MAotCQkJCWxpbmVfc3R5bGUgCTApKSkKLQkJICAgIChvYmplY3QgQ2xhc3NEaWFncmFtICJFeHRlbnNpYmlsaXR5IgotCQkJcXVpZCAgICAgICAJIjNBRTA5OUIxMDE2MSIKLQkJCXRpdGxlICAgICAgCSJFeHRlbnNpYmlsaXR5IgotCQkJem9vbSAgICAgICAJOTAKLQkJCW1heF9oZWlnaHQgCTI4MzUwCi0JCQltYXhfd2lkdGggIAkyMTYwMAotCQkJb3JpZ2luX3ggICAJMAotCQkJb3JpZ2luX3kgICAJMAotCQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OlNPQVBBZGRyZXNzIiBANTIKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTUyMCwgNTc2KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANTIKLQkJCQkgICAgbG9jYXRpb24gICAJKDEzNzEsIDUyNykKLQkJCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQkgICAgbmxpbmVzICAgICAJMQotCQkJCSAgICBtYXhfd2lkdGggIAkyOTgKLQkJCQkgICAganVzdGlmeSAgICAJMAotCQkJCSAgICBsYWJlbCAgICAgIAkiU09BUEFkZHJlc3MiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQUQxRkY3NTAyODciCi0JCQkJd2lkdGggICAgICAJMzE2Ci0JCQkJaGVpZ2h0ICAgICAJMTIyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojpzb2FwOjpTT0FQQmluZGluZyIgQDUzCi0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDMwNCwgNTkyKQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANTMKLQkJCQkgICAgbG9jYXRpb24gICAJKDE2MiwgNTQzKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTI4NAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJTT0FQQmluZGluZyIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBMDFEM0I5MDFBRCIKLQkJCQl3aWR0aCAgICAgIAkzMDIKLQkJCQloZWlnaHQgICAgIAkxMjIKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnNvYXA6OlNPQVBCb2R5IiBANTQKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTA3MiwgMTEwNCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDU0Ci0JCQkJICAgIGxvY2F0aW9uICAgCSg5NTAsIDEwNTUpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMjQ0Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIlNPQVBCb2R5IikKLQkJCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCQlxdWlkdSAgICAgIAkiM0EwMURFRDUwMzFGIgotCQkJCXdpZHRoICAgICAgCTI2MgotCQkJCWhlaWdodCAgICAgCTEyMgotCQkJCWFubm90YXRpb24gCTgKLQkJCQlhdXRvUmVzaXplIAlUUlVFKQotCQkJICAgIChvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6c29hcDo6U09BUEZhdWx0IiBANTUKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoMTIzMiwgMTI2NCkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDU1Ci0JCQkJICAgIGxvY2F0aW9uICAgCSgxMTEyLCAxMjE1KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTI0MAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJTT0FQRmF1bHQiKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQTA2RDlGQTAwRjciCi0JCQkJd2lkdGggICAgICAJMjU4Ci0JCQkJaGVpZ2h0ICAgICAJMTIyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojpzb2FwOjpTT0FQT3BlcmF0aW9uIiBANTYKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCUluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJCQlsb2NhdGlvbiAgIAkoNTEyLCA3NTIpCi0JCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCQkgICAgUGFyZW50X1ZpZXcgCUA1NgotCQkJCSAgICBsb2NhdGlvbiAgIAkoMzQ0LCA3MDMpCi0JCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJICAgIG5saW5lcyAgICAgCTEKLQkJCQkgICAgbWF4X3dpZHRoICAJMzM2Ci0JCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCQkgICAgbGFiZWwgICAgICAJIlNPQVBPcGVyYXRpb24iKQotCQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCXF1aWR1ICAgICAgCSIzQTBBRDQ1NTAwRTgiCi0JCQkJd2lkdGggICAgICAJMzU0Ci0JCQkJaGVpZ2h0ICAgICAJMTIyCi0JCQkJYW5ub3RhdGlvbiAJOAotCQkJCWF1dG9SZXNpemUgCVRSVUUpCi0JCQkgICAgKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojpzb2FwOjpTT0FQSGVhZGVyQmFzZSIgQDU3Ci0JCQkJU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJCQlJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCQkJbG9jYXRpb24gICAJKDgxNiwgOTI4KQotCQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkJICAgIFBhcmVudF9WaWV3IAlANTcKLQkJCQkgICAgbG9jYXRpb24gICAJKDYyNywgODc5KQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTM3OAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJTT0FQSGVhZGVyQmFzZSIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBMDFERUU3MDM0RCIKLQkJCQl3aWR0aCAgICAgIAkzOTYKLQkJCQloZWlnaHQgICAgIAkxMjIKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2liaWxpdHlFbGVtZW50IiBANTgKLQkJCQlTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkJCWxvY2F0aW9uICAgCSg2MDgsIDEyOCkKLQkJCQlmb250ICAgICAgIAkob2JqZWN0IEZvbnQKLQkJCQkgICAgaXRhbGljcyAgICAJVFJVRSkKLQkJCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJCSAgICBQYXJlbnRfVmlldyAJQDU4Ci0JCQkJICAgIGxvY2F0aW9uICAgCSg0MDgsIDUzKQotCQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJCSAgICBubGluZXMgICAgIAkxCi0JCQkJICAgIG1heF93aWR0aCAgCTQwMAotCQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkJICAgIGxhYmVsICAgICAgCSJFeHRlbnNpYmlsaXR5RWxlbWVudCIpCi0JCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIKLQkJCQl3aWR0aCAgICAgIAk0MTgKLQkJCQloZWlnaHQgICAgIAkxNzQKLQkJCQlhbm5vdGF0aW9uIAk4Ci0JCQkJYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJCSAgICAob2JqZWN0IEluaGVyaXRUcmVlVmlldyAiIiBANTkKLQkJCQlsb2NhdGlvbiAgIAkoNjA4LCAzMDUpCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkJc3VwcGxpZXIgICAJQDU4Ci0JCQkJdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJICAgICg2MDgsIDMwNSkKLQkJCQkgICAgKDYwOCwgMjE1KSkpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBANjAKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSIzQUUwOUEzODAxQUIiCi0JCQkJY2xpZW50ICAgICAJQDUzCi0JCQkJc3VwcGxpZXIgICAJQDU4Ci0JCQkJbGluZV9zdHlsZSAJMwotCQkJCW9yaWdpbl9hdHRhY2htZW50IAkoMzQ0LCA1MzEpCi0JCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDM0NCwgMzA1KQotCQkJCWRyYXdTdXBwbGllciAJQDU5KQotCQkJICAgIChvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDYxCi0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiM0FFMDlBM0UwMzI2IgotCQkJCWNsaWVudCAgICAgCUA1NwotCQkJCXN1cHBsaWVyICAgCUA1OAotCQkJCWxpbmVfc3R5bGUgCTMKLQkJCQlvcmlnaW5fYXR0YWNobWVudCAJKDgxNSwgODY3KQotCQkJCXRlcm1pbmFsX2F0dGFjaG1lbnQgCSg4MTUsIDMwNSkKLQkJCQlkcmF3U3VwcGxpZXIgCUA1OSkKLQkJCSAgICAob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA2MgotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjNBRTA5QTQ1MDA0MSIKLQkJCQljbGllbnQgICAgIAlANTQKLQkJCQlzdXBwbGllciAgIAlANTgKLQkJCQlsaW5lX3N0eWxlIAkzCi0JCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSgxMDY4LCAxMDQzKQotCQkJCXRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMDY4LCAzMDUpCi0JCQkJZHJhd1N1cHBsaWVyIAlANTkpCi0JCQkgICAgKG9iamVjdCBJbmhlcml0VmlldyAiIiBANjMKLQkJCQlzdGVyZW90eXBlIAlUUlVFCi0JCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJCXF1aWR1ICAgICAgCSIzQUUwOUE0RTAzMUYiCi0JCQkJY2xpZW50ICAgICAJQDU2Ci0JCQkJc3VwcGxpZXIgICAJQDU4Ci0JCQkJbGluZV9zdHlsZSAJMwotCQkJCW9yaWdpbl9hdHRhY2htZW50IAkoNTA2LCA2OTEpCi0JCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDUwNiwgMzA1KQotCQkJCWRyYXdTdXBwbGllciAJQDU5KQotCQkJICAgIChvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDY0Ci0JCQkJc3RlcmVvdHlwZSAJVFJVRQotCQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCQlxdWlkdSAgICAgIAkiM0FFMDlBNEEwMDIwIgotCQkJCWNsaWVudCAgICAgCUA1NQotCQkJCXN1cHBsaWVyICAgCUA1OAotCQkJCWxpbmVfc3R5bGUgCTMKLQkJCQlvcmlnaW5fYXR0YWNobWVudCAJKDEyMzEsIDEyMDMpCi0JCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDEyMzEsIDMwNSkKLQkJCQlkcmF3U3VwcGxpZXIgCUA1OSkKLQkJCSAgICAob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA2NQotCQkJCXN0ZXJlb3R5cGUgCVRSVUUKLQkJCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkJcXVpZHUgICAgICAJIjNBRTA5NTM1MDA5OCIKLQkJCQljbGllbnQgICAgIAlANTIKLQkJCQlzdXBwbGllciAgIAlANTgKLQkJCQlsaW5lX3N0eWxlIAkzCi0JCQkJb3JpZ2luX2F0dGFjaG1lbnQgCSgxNTIwLCA1MTUpCi0JCQkJdGVybWluYWxfYXR0YWNobWVudCAJKDE1MjAsIDMwNSkKLQkJCQlkcmF3U3VwcGxpZXIgCUA1OSkpKSkpCi0JICAgIChvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgInhzZCIKLQkJaXNfdW5pdCAgICAJVFJVRQotCQlpc19sb2FkZWQgIAlGQUxTRQotCQlmaWxlX25hbWUgIAkiJFZBQkFTRV9QTFVHSU5TX1BBVEhcXG9yZy5lY2xpcHNlLnhzZFxcbW9kZWxcXG9yZy5lY2xpcHNlLlhTRC5jYXQiCi0JCXF1aWQgICAgICAgCSIzOUFCREM2RjAxQUEiKSkKLQlsb2dpY2FsX3ByZXNlbnRhdGlvbnMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QKLQkgICAgKG9iamVjdCBDbGFzc0RpYWdyYW0gIk1haW4iCi0JCXF1aWQgICAgICAgCSIzOUUyN0YwODAwNzYiCi0JCXRpdGxlICAgICAgCSJNYWluIgotCQl6b29tICAgICAgIAkxMDAKLQkJbWF4X2hlaWdodCAJMjgzNTAKLQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJb3JpZ2luX3ggICAJMAotCQlvcmlnaW5feSAgIAkwCi0JCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0Ci0JCSAgICAob2JqZWN0IENhdGVnb3J5VmlldyAiTG9naWNhbCBWaWV3Ojp3c2RsIiBANjYKLQkJCWxvY2F0aW9uICAgCSgyNzIsIDI1NikKLQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkgICAgUGFyZW50X1ZpZXcgCUA2NgotCQkJICAgIGxvY2F0aW9uICAgCSgxMjgsIDE3MikKLQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJICAgIG5saW5lcyAgICAgCTIKLQkJCSAgICBtYXhfd2lkdGggIAkyODgKLQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkgICAgbGFiZWwgICAgICAJIndzZGwiKQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJcXVpZHUgICAgICAJIjNBREZCOEU1MDIxRSIKLQkJCXdpZHRoICAgICAgCTMwMAotCQkJaGVpZ2h0ICAgICAJMTgwKQotCQkgICAgKG9iamVjdCBDYXRlZ29yeVZpZXcgIkxvZ2ljYWwgVmlldzo6c29hcCIgQDY3Ci0JCQlsb2NhdGlvbiAgIAkoNzA0LCAyNTYpCi0JCQlsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJICAgIFBhcmVudF9WaWV3IAlANjcKLQkJCSAgICBsb2NhdGlvbiAgIAkoNTYwLCAxNzIpCi0JCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCSAgICBubGluZXMgICAgIAkyCi0JCQkgICAgbWF4X3dpZHRoICAJMjg4Ci0JCQkgICAganVzdGlmeSAgICAJMAotCQkJICAgIGxhYmVsICAgICAgCSJzb2FwIikKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCXF1aWR1ICAgICAgCSIzQTAxQ0YwQzAxQTIiCi0JCQl3aWR0aCAgICAgIAkzMDAKLQkJCWhlaWdodCAgICAgCTE4MCkKLQkJICAgIChvYmplY3QgQ2F0ZWdvcnlWaWV3ICJMb2dpY2FsIFZpZXc6OnhzZCIgQDY4Ci0JCQlsb2NhdGlvbiAgIAkoMTE1MiwgMjU2KQotCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCSAgICBQYXJlbnRfVmlldyAJQDY4Ci0JCQkgICAgbG9jYXRpb24gICAJKDEwMDgsIDE3MikKLQkJCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJICAgIG5saW5lcyAgICAgCTIKLQkJCSAgICBtYXhfd2lkdGggIAkyODgKLQkJCSAgICBqdXN0aWZ5ICAgIAkwCi0JCQkgICAgbGFiZWwgICAgICAJInhzZCIpCi0JCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCWxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlxdWlkdSAgICAgIAkiMzlBQkRDNkYwMUFBIgotCQkJd2lkdGggICAgICAJMzAwCi0JCQloZWlnaHQgICAgIAkxODApKSkpKQotICAgIHJvb3Rfc3Vic3lzdGVtIAkob2JqZWN0IFN1YlN5c3RlbSAiQ29tcG9uZW50IFZpZXciCi0JcXVpZCAgICAgICAJIjM5RTI3RjA4MDA2NSIKLQlwaHlzaWNhbF9tb2RlbHMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QpCi0JcGh5c2ljYWxfcHJlc2VudGF0aW9ucyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdAotCSAgICAob2JqZWN0IE1vZHVsZV9EaWFncmFtICJNYWluIgotCQlxdWlkICAgICAgIAkiMzlFMjdGMDgwMDc3IgotCQl0aXRsZSAgICAgIAkiTWFpbiIKLQkJem9vbSAgICAgICAJMTAwCi0JCW1heF9oZWlnaHQgCTI4MzUwCi0JCW1heF93aWR0aCAgCTIxNjAwCi0JCW9yaWdpbl94ICAgCTAKLQkJb3JpZ2luX3kgICAJMAotCQlpdGVtcyAgICAgIAkobGlzdCBkaWFncmFtX2l0ZW1fbGlzdCkpKSkKLSAgICBwcm9jZXNzX3N0cnVjdHVyZSAJKG9iamVjdCBQcm9jZXNzZXMKLQlxdWlkICAgICAgIAkiMzlFMjdGMDgwMDY2IgotCVByb2NzTkRldnMgCShsaXN0Ci0JICAgIChvYmplY3QgUHJvY2Vzc19EaWFncmFtICJEZXBsb3ltZW50IFZpZXciCi0JCXF1aWQgICAgICAgCSIzOUUyN0YwODAwNjgiCi0JCXRpdGxlICAgICAgCSJEZXBsb3ltZW50IFZpZXciCi0JCXpvb20gICAgICAgCTEwMAotCQltYXhfaGVpZ2h0IAkyODM1MAotCQltYXhfd2lkdGggIAkyMTYwMAotCQlvcmlnaW5feCAgIAkwCi0JCW9yaWdpbl95ICAgCTAKLQkJaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QpKSkpCi0gICAgcHJvcGVydGllcyAJKG9iamVjdCBQcm9wZXJ0aWVzCi0JYXR0cmlidXRlcyAJKGxpc3QgQXR0cmlidXRlX1NldAotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRERMIgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjgwOTEzNTk2NiIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJEREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJEYXRhQmFzZSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YUJhc2VTZXQiIDgwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJEYXRhQmFzZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQkJbmFtZSAgICAgICAJIkFOU0kiCi0JCQkJdmFsdWUgICAgICAJODAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCQluYW1lICAgICAgIAkiT3JhY2xlIgotCQkJCXZhbHVlICAgICAgCTgwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQkJbmFtZSAgICAgICAJIlNRTFNlcnZlciIKLQkJCQl2YWx1ZSAgICAgIAk4MDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRERMIgotCQkJCW5hbWUgICAgICAgCSJTeWJhc2UiCi0JCQkJdmFsdWUgICAgICAJODAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCQluYW1lICAgICAgIAkiV2F0Y29tIgotCQkJCXZhbHVlICAgICAgCTgwNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiUHJpbWFyeUtleUNvbHVtbk5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiSWQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiUHJpbWFyeUtleUNvbHVtblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiTlVNQkVSKDUpIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIlZpZXdOYW1lIgotCQkJdmFsdWUgICAgICAJIlZfIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIlRhYmxlTmFtZSIKLQkJCXZhbHVlICAgICAgCSJUXyIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJJbmhlcml0U3VmZml4IgotCQkJdmFsdWUgICAgICAJIl9WIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkRyb3BDbGF1c2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkJhc2VWaWV3cyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiRERMU2NyaXB0RmlsZW5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiRERMMS5TUUwiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJEREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19BdHRyaWJ1dGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkNvbHVtblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiVkFSQ0hBUiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJMZW5ndGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIk51bGxzT0siCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiUHJpbWFyeUtleSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiVW5pcXVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJDb21wb3NpdGVVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkNoZWNrQ29uc3RyYWludCIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJEREwiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImZyYW1ld29yayIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjgwOTEzNTk2NiIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDcmVhdGVNaXNzaW5nRGlyZWN0b3JpZXMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiU3RvcE9uRXJyb3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRGlyZWN0b3J5IgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVQcmVzZXJ2ZVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb25UeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDb25zdFZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlZmF1bHRTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkRlZmF1bHRTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIklETEVsZW1lbnQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSURMU3BlY2lmaWNhdGlvblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIklETFNwZWNTZXQiIDIyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIklETFNwZWNTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJJbnRlcmZhY2UiCi0JCQkJdmFsdWUgICAgICAJMjIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJUeXBlZGVmIgotCQkJCXZhbHVlICAgICAgCTU0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiRW51bWVyYXRpb24iCi0JCQkJdmFsdWUgICAgICAJOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTcxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiRXhjZXB0aW9uIgotCQkJCXZhbHVlICAgICAgCTYxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiU3RydWN0IgotCQkJCXZhbHVlICAgICAgCTUxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiVW5pb24iCi0JCQkJdmFsdWUgICAgICAJODEpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLVNwZWMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiICAlWCUgIEAoIykgcGx1Z2lucy9jb20uaWJtLmV0b29scy5jdGMuYmluZGluZy5zb2FwL3NyYy9yb3NlL3NvYXBiaW5kaW5nTWRsLm1kbCwgY3RjLCBpYm1jdGMiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkZpbGVOYW1lIgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJRExNb2R1bGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkluY2x1c2lvblByb3RlY3Rpb25TeW1ib2wiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW5jbHVkZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlQnlTaW1wbGVOYW1lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1Cb2R5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICBAKCMpIHBsdWdpbnMvY29tLmlibS5ldG9vbHMuY3RjLmJpbmRpbmcuc29hcC9zcmMvcm9zZS9zb2FwYmluZGluZ01kbC5tZGwsIGN0YywgaWJtY3RjIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDb3B5cmlnaHROb3RpY2UiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJGaWxlTmFtZSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbmNsdWRlcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVCeVNpbXBsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fT3BlcmF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc09uZVdheSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ29udGV4dCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiUmFpc2VzIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ2FzZVNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSXNDb25zdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ29uc3RWYWx1ZSIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19IYXMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIk5hbWVJZlVubGFiZWxlZCIKLQkJCXZhbHVlICAgICAgCSJ0aGVfJHN1cHBsaWVyIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQm91bmRlZEhhc1JlbFR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkhhc1JlbFR5cGVTZXQiIDQ3KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkhhc1JlbFR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJBcnJheSIKLQkJCQl2YWx1ZSAgICAgIAkyNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIlNlcXVlbmNlIgotCQkJCXZhbHVlICAgICAgCTQ3KSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIk5hbWVJZlVubGFiZWxlZCIKLQkJCXZhbHVlICAgICAgCSJ0aGVfJHN1cHBsaWVyIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQm91bmRlZFJvbGVUeXBlIgotCQkJdmFsdWUgICAgICAJKCJBc3NvY1R5cGVTZXQiIDQ3KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkFzc29jVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIkFycmF5IgotCQkJCXZhbHVlICAgICAgCTI0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiU2VxdWVuY2UiCi0JCQkJdmFsdWUgICAgICAJNDcpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fVXNlcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGb3J3YXJkUmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1N1YnN5c3RlbSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRGlyZWN0b3J5IgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ3JlYXRlTWlzc2luZ0RpcmVjdG9yaWVzIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTdG9wT25FcnJvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRpcmVjdG9yeSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJVc2VQcmVmaXhlcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkluc3RhbmNlVmFyaWFibGVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkibV8iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNsYXNzVmFyaWFibGVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkic18iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRlZmF1bHRBdHRyaWJ1dGVEYXRhVHlwZSIKLQkJCXZhbHVlICAgICAgCSJpbnQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRlZmF1bHRPcGVyYXRpb25SZXR1cm5UeXBlIgotCQkJdmFsdWUgICAgICAJInZvaWQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlJvb3REaXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJBdXRvU3luYyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNob3dDb2RlZ2VuRGxnIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSmF2YWRvY0RlZmF1bHRBdXRob3IiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJKYXZhZG9jRGVmYXVsdFZlcnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJKYXZhZG9jRGVmYXVsdFNpbmNlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSmF2YWRvY051bUFzdGVyaXNrcyIKLQkJCXZhbHVlICAgICAgCTApCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWF4TnVtQ2hhcnMiCi0JCQl2YWx1ZSAgICAgIAk4MCkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFZGl0b3IiCi0JCQl2YWx1ZSAgICAgIAkoIkVkaXRvclR5cGUiIDEwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVk0iCi0JCQl2YWx1ZSAgICAgIAkoIlZNVHlwZSIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDbGFzc1BhdGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFZGl0b3JUeXBlIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkJ1aWx0SW4iCi0JCQkJdmFsdWUgICAgICAJMTAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIldpbmRvd3NTaGVsbCIKLQkJCQl2YWx1ZSAgICAgIAkxMDEpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJWTVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiU3VuIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJNaWNyb3NvZnQiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIklCTSIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJOb0NsYXNzQ3VzdG9tRGxnIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2xvYmFsSW1wb3J0cyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJPcGVuQnJhY2VDbGFzc1N0eWxlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJPcGVuQnJhY2VNZXRob2RTdHlsZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVXNlVGFicyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlVzZVNwYWNlcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU3BhY2luZ0l0ZW1zIgotCQkJdmFsdWUgICAgICAJMykKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJSb3NlRGVmYXVsdENvbW1lbnRTdHlsZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQXN0ZXJpc2tDb21tZW50U3R5bGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJKYXZhQ29tbWVudFN0eWxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSmF2YWRvY0F1dGhvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkphdmFkb2NTaW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkphdmFkb2NWZXJzaW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvbnN0cnVjdG9ySXMiCi0JCQl2YWx1ZSAgICAgIAkoIkN0b3JfU2V0IiA2MikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ3Rvcl9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHVibGljIgotCQkJCXZhbHVlICAgICAgCTYyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk2MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTY0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGaW5hbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN0YXRpY0luaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbnN0YW5jZUluaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU3RhdGljIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDb2RlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEaXNhYmxlQXV0b1N5bmMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0TmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRDb250ZXh0UmVmIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSXNTaW5nbGVUaHJlYWQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SW5pdFBhcmFtZXRlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJbml0UGFyYW1ldGVyTmFtZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SXNTZWN1cmUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdERpc3BhdGNoZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdERpc3BhdGNoZXJQYXRoIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRGlzcGF0Y2hlckluY2x1ZGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEaXNwYXRjaGVyRm9yd2FyZCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRTZWN1cml0eVJvbGVzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldGdldEluZm8iCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdEF0dHJpYnV0ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0QXR0cmlidXRlc05hbWVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWV0aG9kRm9yUmVxdWVzdEF0dHJpYnV0ZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdFBhcmFtZXRlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0UGFyYW1ldGVyTmFtZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RGb3JSZXF1ZXN0UGFyYW1ldGVycyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SGVhZGVyTmFtZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RGb3JIZWFkZXJzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEludEhlYWRlciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXREYXRlSGVhZGVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldENvb2tpZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk1ldGhvZEZvckNvb2tpZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRDb250ZW50VHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSFRNTCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlX1hNTF9ERCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCQ21wRmllbGQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJFbnZpcm9ubWVudFByb3BlcnRpZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJDbnhGYWN0b3J5IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCUmVmZXJlbmNlcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlNlY3VyaXR5Um9sZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJOYW1lSW5KQVIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJTZXNzaW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiRUpCU2Vzc2lvblR5cGVfU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlNlc3Npb25UeXBlX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSIiCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlN0YXRlbGVzcyIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiU3RhdGVmdWwiCi0JCQkJdmFsdWUgICAgICAJMjAyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCVHJhbnNhY3Rpb25UeXBlIgotCQkJdmFsdWUgICAgICAJKCJFSkJUcmFuc2FjdGlvblR5cGVfU2V0IiAyMTEpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlRyYW5zYWN0aW9uVHlwZV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQ29udGFpbmVyIgotCQkJCXZhbHVlICAgICAgCTIxMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJCZWFuIgotCQkJCXZhbHVlICAgICAgCTIxMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlBlcnNpc3RlbmNlVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiRUpCUGVyc2lzdGVuY2VUeXBlX1NldCIgMjIwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJQZXJzaXN0ZW5jZVR5cGVfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIiIKLQkJCQl2YWx1ZSAgICAgIAkyMjApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQmVhbiIKLQkJCQl2YWx1ZSAgICAgIAkyMjEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQ29udGFpbmVyIgotCQkJCXZhbHVlICAgICAgCTIyMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlJlZW50cmFudCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkJNUF9FeHRlbmRfQ01QIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW1wb3J0cyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1Cb2R5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbXBvcnRzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fT3BlcmF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTdGF0aWMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJGaW5hbCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk5hdGl2ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlN5bmNocm9uaXplZCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJGaW5hbCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlRyYW5zaWVudCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlZvbGF0aWxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiUHJvcGVydHlUeXBlIgotCQkJdmFsdWUgICAgICAJKCJCZWFuUHJvcGVydHlfU2V0IiA3MSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQmVhblByb3BlcnR5X1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJOb3QgQSBQcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAk3MSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJTaW1wbGUiCi0JCQkJdmFsdWUgICAgICAJNzIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQm91bmQiCi0JCQkJdmFsdWUgICAgICAJNzMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiQ29uc3RyYWluZWQiCi0JCQkJdmFsdWUgICAgICAJNzQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJJbmRpdmlkdWFsQ2hhbmdlTWd0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiUmVhZC9Xcml0ZSIKLQkJCXZhbHVlICAgICAgCSgiUmVhZC9Xcml0ZV9TZXQiIDgxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJSZWFkL1dyaXRlX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJSZWFkICYgV3JpdGUiCi0JCQkJdmFsdWUgICAgICAJODEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUmVhZCBPbmx5IgotCQkJCXZhbHVlICAgICAgCTgyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIldyaXRlIE9ubHkiCi0JCQkJdmFsdWUgICAgICAJODMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZ1bGx5UXVhbGlmaWVkVHlwZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvbnRhaW5lckNsYXNzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSW5pdGlhbFZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRmluYWwiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJUcmFuc2llbnQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlByb3BlcnR5VHlwZSIKLQkJCXZhbHVlICAgICAgCSgiQmVhblByb3BlcnR5X1NldCIgNzEpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkJlYW5Qcm9wZXJ0eV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiTm90IEEgUHJvcGVydHkiCi0JCQkJdmFsdWUgICAgICAJNzEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiU2ltcGxlIgotCQkJCXZhbHVlICAgICAgCTcyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkJvdW5kIgotCQkJCXZhbHVlICAgICAgCTczKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0cmFpbmVkIgotCQkJCXZhbHVlICAgICAgCTc0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSW5kaXZpZHVhbENoYW5nZU1ndCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlJlYWQvV3JpdGUiCi0JCQl2YWx1ZSAgICAgIAkoIlJlYWQvV3JpdGVfU2V0IiA4MSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiUmVhZC9Xcml0ZV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUmVhZCAmIFdyaXRlIgotCQkJCXZhbHVlICAgICAgCTgxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQgT25seSIKLQkJCQl2YWx1ZSAgICAgIAk4MikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJXcml0ZSBPbmx5IgotCQkJCXZhbHVlICAgICAgCTgzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGdWxseVF1YWxpZmllZFR5cGVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSXNOYXZpZ2FibGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjM2MDAwMDAwMiIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUHJvamVjdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkRETFNjcmlwdEZpbGVuYW1lIgotCQkJdmFsdWUgICAgICAJIkRETDEuU1FMIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJEcm9wQ2xhdXNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiUHJpbWFyeUtleUNvbHVtbk5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiX0lEIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5Q29sdW1uVHlwZSIKLQkJCXZhbHVlICAgICAgCSJOVU1CRVIoNSwwKSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiU2NoZW1hTmFtZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlNjaGVtYU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUYWJsZU5hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUYWJsZU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUeXBlTmFtZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlR5cGVOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVmlld05hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJWaWV3TmFtZVN1ZmZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlZhcnJheU5hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJWYXJyYXlOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTmVzdGVkVGFibGVOYW1lUHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTmVzdGVkVGFibGVOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT2JqZWN0VGFibGVOYW1lUHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT2JqZWN0VGFibGVOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzU2NoZW1hIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk9JRCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIldoZXJlQ2xhdXNlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiQ2hlY2tDb25zdHJhaW50IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiQ29sbGVjdGlvblR5cGVMZW5ndGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb2xsZWN0aW9uVHlwZVByZWNpc2lvbiIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkNvbGxlY3Rpb25UeXBlU2NhbGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb2xsZWN0aW9uT2ZSRUZTIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RLaW5kIgotCQkJdmFsdWUgICAgICAJKCJNZXRob2RLaW5kU2V0IiAxOTAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPdmVybG9hZElEIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT3JkZXJOdW1iZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWROb0RhdGFTdGF0ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzUmVhZE5vUHJvY2Vzc1N0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNXcml0ZU5vRGF0YVN0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNXcml0ZU5vUHJvY2Vzc1N0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNTZWxmaXNoIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlclR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIlRyaWdnZXJUeXBlU2V0IiAxODAxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyRXZlbnQiCi0JCQl2YWx1ZSAgICAgIAkoIlRyaWdnZXJFdmVudFNldCIgMTYwMSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlclRleHQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyUmVmZXJlbmNpbmdOYW1lcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRyaWdnZXJGb3JFYWNoIgotCQkJdmFsdWUgICAgICAJKCJUcmlnZ2VyRm9yRWFjaFNldCIgMTcwMSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlcldoZW5DbGF1c2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RLaW5kU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIk1hcE1ldGhvZCIKLQkJCQl2YWx1ZSAgICAgIAkxOTAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIk9yZGVyTWV0aG9kIgotCQkJCXZhbHVlICAgICAgCTE5MDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJMTkwMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJQcm9jZWR1cmUiCi0JCQkJdmFsdWUgICAgICAJMTkwNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJPcGVyYXRvciIKLQkJCQl2YWx1ZSAgICAgIAkxOTA1KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0cnVjdG9yIgotCQkJCXZhbHVlICAgICAgCTE5MDYpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiRGVzdHJ1Y3RvciIKLQkJCQl2YWx1ZSAgICAgIAkxOTA3KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlRyaWdnZXIiCi0JCQkJdmFsdWUgICAgICAJMTkwOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJDYWxjdWxhdGVkIgotCQkJCXZhbHVlICAgICAgCTE5MDkpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJBRlRFUiIKLQkJCQl2YWx1ZSAgICAgIAkxODAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkJFRk9SRSIKLQkJCQl2YWx1ZSAgICAgIAkxODAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU1RFQUQgT0YiCi0JCQkJdmFsdWUgICAgICAJMTgwMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRyaWdnZXJGb3JFYWNoU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlJPVyIKLQkJCQl2YWx1ZSAgICAgIAkxNzAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlNUQVRFTUVOVCIKLQkJCQl2YWx1ZSAgICAgIAkxNzAyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlckV2ZW50U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCIKLQkJCQl2YWx1ZSAgICAgIAkxNjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlVQREFURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkRFTEVURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCBPUiBVUERBVEUiCi0JCQkJdmFsdWUgICAgICAJMTYwNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJJTlNFUlQgT1IgREVMRVRFIgotCQkJCXZhbHVlICAgICAgCTE2MDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiVVBEQVRFIE9SIERFTEVURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjA2KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIgotCQkJCXZhbHVlICAgICAgCTE2MDcpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPcmRlck51bWJlciIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT3JkZXJOdW1iZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1VuaXF1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk51bGxzQWxsb3dlZCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTGVuZ3RoIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiUHJlY2lzaW9uIgotCQkJdmFsdWUgICAgICAJIjIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlNjYWxlIgotCQkJdmFsdWUgICAgICAJIjYiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzSW5kZXgiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1ByaW1hcnlLZXkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb21wb3NpdGVVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDaGVja0NvbnN0cmFpbnQiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiUmVwb3NpdG9yeSIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUHJvamVjdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVc2VNU1ZDIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkhlYWRlckZpbGVFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiaCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkhlYWRlckZpbGVCYWNrdXBFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiaH4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJIZWFkZXJGaWxlVGVtcG9yYXJ5RXh0ZW5zaW9uIgotCQkJdmFsdWUgICAgICAJImgjIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZUZpbGVFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiY3BwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZUZpbGVCYWNrdXBFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiY3B+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZUZpbGVUZW1wb3JhcnlFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiY3AjIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ3JlYXRlTWlzc2luZ0RpcmVjdG9yaWVzIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3RvcE9uRXJyb3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXJyb3JMaW1pdCIKLQkJCXZhbHVlICAgICAgCTMwKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiJFJPU0VDUFBfU09VUkNFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUGF0aFNlcGFyYXRvciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGaWxlTmFtZUZvcm1hdCIKLQkJCXZhbHVlICAgICAgCSIxMjh2eF9iIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm9vbGVhblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiaW50IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQWxsb3dUZW1wbGF0ZXMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBbGxvd0V4cGxpY2l0SW5zdGFudGlhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBbGxvd1Byb3RlY3RlZEluaGVyaXRhbmNlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29tbWVudFdpZHRoIgotCQkJdmFsdWUgICAgICAJNjApCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9uZUJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldENsYXNzIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT25lQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldENsYXNzICoiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcHRpb25hbEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiT3B0aW9uYWxCeVZhbHVlPCR0YXJnZXRDbGFzcz4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcHRpb25hbEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzcyAqIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRml4ZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzc1skbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkRml4ZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzc1skbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRml4ZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0Q2xhc3MgKlskbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkRml4ZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0Q2xhc3MgKlskbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm91bmRlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQm91bmRlZExpc3RCeVZhbHVlPCR0YXJnZXRDbGFzcywkbGltaXQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkQm91bmRlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQm91bmRlZFNldEJ5VmFsdWU8JHRhcmdldENsYXNzLCRsaW1pdD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQm91bmRlZExpc3RCeVJlZmVyZW5jZTwkdGFyZ2V0Q2xhc3MsJGxpbWl0PiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVub3JkZXJlZEJvdW5kZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJCb3VuZGVkU2V0QnlSZWZlcmVuY2U8JHRhcmdldENsYXNzLCRsaW1pdD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbmJvdW5kZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIlVuYm91bmRlZExpc3RCeVZhbHVlPCR0YXJnZXRDbGFzcz4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRVbmJvdW5kZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIlVuYm91bmRlZFNldEJ5VmFsdWU8JHRhcmdldENsYXNzPiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVuYm91bmRlZEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIlVuYm91bmRlZExpc3RCeVJlZmVyZW5jZTwkdGFyZ2V0Q2xhc3M+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkVW5ib3VuZGVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiVW5ib3VuZGVkU2V0QnlSZWZlcmVuY2U8JHRhcmdldENsYXNzPiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQXNzb2NpYXRpb25CeVZhbHVlPCRxdWFsdHlwZSwgJHF1YWxjb250PiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVub3JkZXJlZFF1YWxpZmllZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiRGljdGlvbmFyeUJ5VmFsdWU8JHF1YWx0eXBlLCAkcXVhbGNvbnQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQXNzb2NpYXRpb25CeVJlZmVyZW5jZTwkcXVhbHR5cGUsICRxdWFsY29udD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRRdWFsaWZpZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJEaWN0aW9uYXJ5QnlSZWZlcmVuY2U8JHF1YWx0eXBlLCAkcXVhbGNvbnQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVQcmVzZXJ2ZVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkltcGxlbWVudGF0aW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDbGFzc0tleSIKLQkJCXZhbHVlICAgICAgCSJjbGFzcyIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25zIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IiAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5wcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWxsIgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUHV0Qm9kaWVzSW5TcGVjIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdENvbnN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZVNldCIgMTk5KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdENvbnN0cnVjdG9yVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXhwbGljaXREZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDb3B5Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlU2V0IiAxOTkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb3B5Q29uc3RydWN0b3JWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUNvcHlDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFeHBsaWNpdENvcHlDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXN0cnVjdG9yVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXN0cnVjdG9yS2luZCIKLQkJCXZhbHVlICAgICAgCSgiVGhyZWVLaW5kU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVEZXN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQXNzaWdubWVudE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVTZXQiIDE5OSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc2lnbm1lbnRWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc2lnbm1lbnRLaW5kIgotCQkJdmFsdWUgICAgICAJKCJUaHJlZUtpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUFzc2lnbm1lbnRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFcXVhbGl0eU9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlU2V0IiAxOTkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFcXVhbGl0eVZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXF1YWxpdHlLaW5kIgotCQkJdmFsdWUgICAgICAJKCJGcmllbmRLaW5kU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVFcXVhbGl0eU9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVSZWxhdGlvbmFsT3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJSZWxhdGlvbmFsVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJSZWxhdGlvbmFsS2luZCIKLQkJCXZhbHVlICAgICAgCSgiRnJpZW5kS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lUmVsYXRpb25hbE9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTdG9yYWdlTWdtdE9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3RvcmFnZU1nbXRWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVN0b3JhZ2VNZ210T3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN1YnNjcmlwdE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTdWJzY3JpcHRWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlN1YnNjcmlwdEtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIlRocmVlS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3Vic2NyaXB0UmVzdWx0VHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVTdWJzY3JpcHRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZXJlZmVyZW5jZU9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXJlZmVyZW5jZVZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVyZWZlcmVuY2VLaW5kIgotCQkJdmFsdWUgICAgICAJKCJUaHJlZUtpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRlcmVmZXJlbmNlUmVzdWx0VHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVEZXJlZmVyZW5jZU9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluZGlyZWN0aW9uT3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluZGlyZWN0aW9uVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmRpcmVjdGlvbktpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIlRocmVlS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5kaXJlY3Rpb25SZXN1bHRUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUluZGlyZWN0aW9uT3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU3RyZWFtT3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTdHJlYW1WaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVN0cmVhbU9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVGhyZWVLaW5kU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb21tb24iCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQkJdmFsdWUgICAgICAJMjAyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIktpbmRTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRnJpZW5kS2luZFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29tbW9uIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbCIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFic3RyYWN0IgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRnJpZW5kIgotCQkJCXZhbHVlICAgICAgCTIwNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRGVjbGFyZUFuZERlZmluZSIKLQkJCQl2YWx1ZSAgICAgIAkxOTkpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkRlY2xhcmVPbmx5IgotCQkJCXZhbHVlICAgICAgCTIwNSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRG9Ob3REZWNsYXJlIgotCQkJCXZhbHVlICAgICAgCTIwNikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29uc3RWYWx1ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlZmF1bHRTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdFNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1TcGVjIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiIDMpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJVbnByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBbGwiCi0JCQkJdmFsdWUgICAgICAJMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICBAKCMpIHBsdWdpbnMvY29tLmlibS5ldG9vbHMuY3RjLmJpbmRpbmcuc29hcC9zcmMvcm9zZS9zb2FwYmluZGluZ01kbC5tZGwsIGN0YywgaWJtY3RjIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRmlsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFsbG93RXh0ZW5zaW9ubGVzc0ZpbGVOYW1lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1c2lvblByb3RlY3Rpb25TeW1ib2wiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVGb3JtYXQiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAKLXwvLyAkcGFja2FnZQotfCNpbmNsdWRlICIkZmlsZSIKLXwKLQkJCSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVCeVNpbXBsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZVByZWNvbXBpbGVkSGVhZGVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVPcmRlciIKLQkJCXZhbHVlICAgICAgCSJBTUlSIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQWRkaXRpb25hbEluY2x1ZGVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmluZ1N0eWxlIgotCQkJdmFsdWUgICAgICAJKCJJbmxpbmluZ1N0eWxlU2V0IiAyMDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmluZ1N0eWxlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbkNsYXNzRGVjbGFyYXRpb24iCi0JCQkJdmFsdWUgICAgICAJMjA4KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGb2xsb3dpbmdDbGFzc0RlY2xhcmF0aW9uIgotCQkJCXZhbHVlICAgICAgCTIwNykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJUeXBlc0RlZmluZWQiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVDbG9zdXJlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1Cb2R5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiIDMpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJVbnByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBbGwiCi0JCQkJdmFsdWUgICAgICAJMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICBAKCMpIHBsdWdpbnMvY29tLmlibS5ldG9vbHMuY3RjLmJpbmRpbmcuc29hcC9zcmMvcm9zZS9zb2FwYmluZGluZ01kbC5tZGwsIGN0YywgaWJtY3RjIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRmlsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFsbG93RXh0ZW5zaW9ubGVzc0ZpbGVOYW1lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVGb3JtYXQiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAKLXwvLyAkcGFja2FnZQotfCNpbmNsdWRlICIkZmlsZSIKLXwKLQkJCSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVCeVNpbXBsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZVByZWNvbXBpbGVkSGVhZGVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZU9yZGVyIgotCQkJdmFsdWUgICAgICAJIkFNSVIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW5jbHVkZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluaW5nU3R5bGUiCi0JCQl2YWx1ZSAgICAgIAkoIklubGluaW5nU3R5bGVTZXQiIDIwNykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluaW5nU3R5bGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkluQ2xhc3NEZWNsYXJhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDgpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZvbGxvd2luZ0NsYXNzRGVjbGFyYXRpb24iCi0JCQkJdmFsdWUgICAgICAJMjA3KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlR5cGVzRGVmaW5lZCIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUNsb3N1cmUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fT3BlcmF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbktpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIk9wZXJhdGlvbktpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbktpbmRTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZyaWVuZCIKLQkJCQl2YWx1ZSAgICAgIAkyMDQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT3BlcmF0aW9uSXNDb25zdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc0V4cGxpY2l0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFbnRyeUNvZGUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkV4aXRDb2RlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9ucyIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIgMykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFsbCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkJvZHlBbm5vdGF0aW9ucyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc09uZVdheSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb250ZXh0IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlJhaXNlcyIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0hhcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcmRlcmVkIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZV8kc3VwcGxpZXIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IiAxNCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkF0UmVsYXRpb25zaGlwVmlzaWJpbGl0eSIKLQkJCQl2YWx1ZSAgICAgIAkyMTApKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucmVzdHJpY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJNdXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlcklzVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlckZpZWxkU2l6ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbml0aWFsVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXROYW1lIgotCQkJdmFsdWUgICAgICAJImdldF8kcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJzZXRfJHJlbGF0aW9uc2hpcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzIgotCQkJdmFsdWUgICAgICAJKCJHZXRTZXRLaW5kc1NldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0S2luZHNTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZyaWVuZCIKLQkJCQl2YWx1ZSAgICAgIAkyMDQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29udGFpbmVyQ2xhc3MiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2VsZWN0b3JOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlNlbGVjdG9yVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0UmVzdWx0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCSgiR2V0UmVzdWx0SXNDb25zdFNldCIgMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFJlc3VsdElzQ29uc3RTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZhbHNlIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlRydWUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU2FtZV9Bc19GdW5jdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEJ5UmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUdldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlNldFJldHVybnNWYWx1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVTZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGb3J3YXJkUmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkSGFzUmVsVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiSGFzUmVsVHlwZVNldCIgNDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJIYXNSZWxUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBcnJheSIKLQkJCQl2YWx1ZSAgICAgIAkyNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU2VxdWVuY2UiCi0JCQkJdmFsdWUgICAgICAJNDcpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Bc3NvY2lhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlXyR0YXJnZXRDbGFzcyIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fSW5oZXJpdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbnN0YW5jZUFyZ3VtZW50cyIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRm9yd2FyZFJlZmVyZW5jZU9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZV8kdGFyZ2V0Q2xhc3MiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IiAxNCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkF0UmVsYXRpb25zaGlwVmlzaWJpbGl0eSIKLQkJCQl2YWx1ZSAgICAgIAkyMTApKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucmVzdHJpY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJNdXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlcklzVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlckZpZWxkU2l6ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbml0aWFsVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvbnRhaW5lckNsYXNzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvbnRhaW5lckdldCIKLQkJCXZhbHVlICAgICAgCSIkZGF0YS5nZXQoJGtleXMpIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29udGFpbmVyU2V0IgotCQkJdmFsdWUgICAgICAJIiRkYXRhLnNldCgka2V5cywkdmFsdWUpIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHN1cHBsaWVyICoiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzSW5pdGlhbFZhbHVlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRTZXRLaW5kcyIKLQkJCXZhbHVlICAgICAgCSgiR2V0U2V0S2luZHNTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb21tb24iCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQkJdmFsdWUgICAgICAJMjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTdGF0aWMiCi0JCQkJdmFsdWUgICAgICAJMjAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGcmllbmQiCi0JCQkJdmFsdWUgICAgICAJMjA0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEJ5UmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJnZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJKCJHZXRSZXN1bHRJc0NvbnN0U2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0UmVzdWx0SXNDb25zdFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRmFsc2UiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVHJ1ZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTYW1lX0FzX0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZXROYW1lIgotCQkJdmFsdWUgICAgICAJInNldF8kdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVNldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEdldFNldEJ5UmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJKCJRdWFsaWZpZWRHZXRTZXRCeVJlZmVyZW5jZVNldCIgMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEdldFNldEJ5UmVmZXJlbmNlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGYWxzZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJUcnVlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlNhbWVfQXNfR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVF1YWxpZmllZEdldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEdldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiZ2V0XyR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJRdWFsaWZpZWRHZXRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkR2V0UmVzdWx0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCSgiR2V0UmVzdWx0SXNDb25zdFNldCIgMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVF1YWxpZmllZEdldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlUXVhbGlmaWVkU2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkU2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJzZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZFNldFJldHVybnNWYWx1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVRdWFsaWZpZWRTZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUFzc29jQ2xhc3NEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0RhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzRGF0YU1lbWJlclZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IiAxNCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkF0UmVsYXRpb25zaGlwVmlzaWJpbGl0eSIKLQkJCQl2YWx1ZSAgICAgIAkyMTApKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0RhdGFNZW1iZXJNdXRhYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJEYXRhTWVtYmVyTXV0YWJpbGl0eVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJVbnJlc3RyaWN0ZWQiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTXV0YWJsZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb25zdCIKLQkJCQl2YWx1ZSAgICAgIAkyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NEYXRhTWVtYmVySXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzR2V0U2V0S2luZHMiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFNldEtpbmRzU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUFzc29jQ2xhc3NHZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzR2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJnZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NHZXRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0dldFJlc3VsdElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFJlc3VsdElzQ29uc3RTZXQiIDIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVBc3NvY0NsYXNzR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVBc3NvY0NsYXNzU2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc1NldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkic2V0XyR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUFzc29jQ2xhc3NTZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzRm9yd2FyZFJlZmVyZW5jZU9ubHkiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkUm9sZVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkFzc29jVHlwZVNldCIgNDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY1R5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFycmF5IgotCQkJCXZhbHVlICAgICAgCTI0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTZXF1ZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAk0NykpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkYXR0cmlidXRlIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IiAxNCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkF0QXR0cmlidXRlVmlzaWJpbGl0eSIKLQkJCQl2YWx1ZSAgICAgIAkyMTEpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucmVzdHJpY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJNdXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlcklzVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlckZpZWxkU2l6ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUdldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJnZXRfJGF0dHJpYnV0ZSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlNldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkic2V0XyRhdHRyaWJ1dGUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRTZXRLaW5kcyIKLQkJCXZhbHVlICAgICAgCSgiR2V0U2V0S2luZHNTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb21tb24iCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQkJdmFsdWUgICAgICAJMjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTdGF0aWMiCi0JCQkJdmFsdWUgICAgICAJMjAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGcmllbmQiCi0JCQkJdmFsdWUgICAgICAJMjA0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJKCJHZXRSZXN1bHRJc0NvbnN0U2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0UmVzdWx0SXNDb25zdFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRmFsc2UiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVHJ1ZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTYW1lX0FzX0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVNldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNhc2VTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1VzZXMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRm9yd2FyZFJlZmVyZW5jZU9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm9keVJlZmVyZW5jZU9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGb3J3YXJkUmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fU3Vic3lzdGVtIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRpcmVjdG9yeSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGlyZWN0b3J5SXNPblNlYXJjaExpc3QiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUHJlY29tcGlsZWRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DYXRlZ29yeSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJc05hbWVzcGFjZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmRlbnQiCi0JCQl2YWx1ZSAgICAgIAkyKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9ucyIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIgMykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucHJlc2VydmVkIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFsbCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiVmVyc2lvbiIKLQkJCXZhbHVlICAgICAgCSI1LjAiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJNU1ZDIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQ2xhc3MiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDQ2xhc3NUeXBlU2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJNU1ZDQ2xhc3NUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vcm1hbCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkludGVyZmFjZV9QYXJ0IgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiQ29ubmVjdGlvbl9QYXJ0IgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiQ2xhc3NfRmFjdG9yeSIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ09iamVjdEZ1bmN0aW9uYWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkNPYmplY3RGdW5jdGlvbmFsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT2JqZWN0RnVuY3Rpb25hbGl0eVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRHluYW1pYyIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkR5bmNyZWF0ZSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlNlcmlhbCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVPdmVycmlkZUdyb3VwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhR3JvdXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfREFUQV9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRmllbGRHcm91cCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9GSUVMRF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlTWVzc2FnZUdyb3VwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVNZXNzYWdlTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX01TR19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJNRVNTQUdFX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRUZhY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkoIk9MRUZhY3RvcnlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRUZhY3RvcnlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkJ1aWx0X2luIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiU2ltcGxlIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTGljZW5zZWQiCi0JCQkJdmFsdWUgICAgICAJMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJPTEVDbGFzc0lEIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVPTEVDdGxUeXBlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFQ3RsVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlT0xFVHlwZUxpYiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRVR5cGVMaWJJRCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRVR5cGVMaWJNYWpvciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRVR5cGVMaWJNaW5vciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlUHJvcFBhZ2VJRHMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJPTEVQcm9wUGFnZUlEcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURpc3BhdGNoTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrUHJvcGVydGllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJTdG9ja0Z1bmN0aW9ucyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJEaXNwYXRjaERlZlZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEaXNwSWRFbnVtIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BfSURfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUludGVyZmFjZU1hcCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIklOVEVSRkFDRV9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJJbml0SW50ZXJmYWNlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFdmVudE1hcCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJFVkVOVF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJTdG9ja0V2ZW50cyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUV2ZW50U2lua01hcCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVFNJTktfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRVZFTlRTSU5LX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkVWRU5UU0lOS19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQcm9wTm90aWZ5U2lua3MiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDb25uZWN0aW9uTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ09OTkVDVElPTl9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDb25uZWN0aW9uUG9pbnRJSUQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJJbmhlcml0YW5jZVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJEZWNsU3BlYyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRUNvbW1hbmRzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1GQ0RlY2xhcmVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1GQ0ltcGxlbWVudHMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQVRMX0RlY2xhcmVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQ09NTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ09NX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQ29ubmVjdGlvblBvaW50TWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ09OTkVDVElPTl9QT0lOVF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZU1zZ01hcCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TR19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVByb3BlcnR5TWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiUFJPUEVSVFlfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDT3BlcmF0aW9uVHlwZVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNWQ09wZXJhdGlvblR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbF9PdmVycmlkZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1lc3NhZ2VfSGFuZGxlciIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkRpc3BhdGNoX0hhbmRsZXIiCi0JCQkJdmFsdWUgICAgICAJMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJFdmVudF9GaXJpbmdfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJFdmVudF9TaW5rX0hhbmRsZXIiCi0JCQkJdmFsdWUgICAgICAJNSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTdGRfT0xFX01ldGhvZCIKLQkJCQl2YWx1ZSAgICAgIAk2KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkNvbW1hbmRfUGFyc2VyIgotCQkJCXZhbHVlICAgICAgCTcpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiUHJvcGVydHlfR2V0X0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTgpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiUHJvcGVydHlfU2V0X0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTkpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiUHJvcGVydHlfTm90aWZ5X0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTEwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1hY3JvX0dlbmVyYXRlZF9GdW5jdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxMSkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9NU0dfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTUVTU0FHRV9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkVWRU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVFNJTktfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRVZFTlRTSU5LX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNhbGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRGVjbFNwZWMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJCb2R5SW1hZ2UiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Sb2xlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TVkNBdHRyaWJ1dGVUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vcm1hbCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1lbWJlcl9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkdldF9TZXRfUHJvcGVydHkiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJEaWFsb2dfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkZpZWxkX0RhdGEiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTdG9ja19Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAk1KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRlY2xTcGVjIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiUG9pbnRlckJhc2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDYWxsVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrUHJvcGVydHlJbXBsZW1lbnRhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJNU1ZDIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fSGFzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TVkNBdHRyaWJ1dGVUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vcm1hbCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1lbWJlcl9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkdldF9TZXRfUHJvcGVydHkiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJEaWFsb2dfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkZpZWxkX0RhdGEiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTdG9ja19Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAk1KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRlY2xTcGVjIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiUG9pbnRlckJhc2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDYWxsVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrUHJvcGVydHlJbXBsZW1lbnRhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJNU1ZDIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TVkNBdHRyaWJ1dGVUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vcm1hbCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk1lbWJlcl9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkdldF9TZXRfUHJvcGVydHkiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJEaWFsb2dfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkZpZWxkX0RhdGEiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTdG9ja19Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAk1KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0RJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRJU1BBVENIX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRlY2xTcGVjIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiUG9pbnRlckJhc2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDYWxsVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrUHJvcGVydHlJbXBsZW1lbnRhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJNU1ZDIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLVNwZWMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluY2x1ZGVzR3JvdXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfSU5DTFVERVNfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluc2VydExvY2F0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtQm9keSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5jbHVkZXNHcm91cCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9JTkNMVURFU19FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5zZXJ0TG9jYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlNDQyIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVHlwZUxpYkltcG9ydGVyIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiNzgzNjA2Mzc4IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJDcmVhdGFibGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTIyMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpY05vdENyZWF0YWJsZSIKLQkJCQl2YWx1ZSAgICAgIAkyMTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJTaW5nbGVVc2UiCi0JCQkJdmFsdWUgICAgICAJMjE0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiR2xvYmFsU2luZ2xlVXNlIgotCQkJCXZhbHVlICAgICAgCTIxNSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIk11bHRpVXNlIgotCQkJCXZhbHVlICAgICAgCTIxOSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIkdsb2JhbE11bHRpVXNlIgotCQkJCXZhbHVlICAgICAgCTIyMCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiT3B0aW9uQmFzZSIKLQkJCXZhbHVlICAgICAgCSIwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk9wdGlvbkV4cGxpY2l0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk9wdGlvbkNvbXBhcmUiCi0JCQl2YWx1ZSAgICAgIAkoIkNvbXBhcmVTZXQiIDIwMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJDcmVhdGFibGUiCi0JCQl2YWx1ZSAgICAgIAkoIkNyZWF0YWJsZVNldCIgMjIxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5pdGlhbGl6YXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlVGVybWluYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkNvbGxlY3Rpb25DbGFzcyIKLQkJCXZhbHVlICAgICAgCSJDb2xsZWN0aW9uIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkNvbXBhcmVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIkJpbmFyeSIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJUZXh0IgotCQkJCXZhbHVlICAgICAgCTIwNCkpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbk5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJG9wZXJhdGlvbiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJMaWJyYXJ5TmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiQWxpYXNOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJJc1N0YXRpYyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiRW50cnlDb2RlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiRXhpdENvZGUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiSXNDb25zdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiTmV3IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJXaXRoRXZlbnRzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJTdWJzY3JpcHQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk5hbWVJZlVubGFiZWxlZCIKLQkJCXZhbHVlICAgICAgCSJ0aGUkc3VwcGxpZXIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEYXRhTWVtYmVyIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVHZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUxldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Sb2xlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJOZXciCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIldpdGhFdmVudHMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIlN1YnNjcmlwdCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZSRzdXBwbGllciIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJHJlbGF0aW9uc2hpcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUdldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlTGV0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0luaGVyaXQiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkltcGxlbWVudHNEZWxlZ2F0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLVNwZWMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIlByb2plY3RGaWxlIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsU3R1ZGlvIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJInByb3BlcnR5SWQiCi0JCXZhbHVlICAgICAgCSI4MDkxMzU5NjYiKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Qcm9qZWN0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkNyZWF0ZU1pc3NpbmdEaXJlY3RvcmllcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkVkaXRvciIKLQkJCXZhbHVlICAgICAgCSgiRWRpdG9yVHlwZSIgMTAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZVBhdGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiU3RvcE9uRXJyb3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJFZGl0b3JUeXBlIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJCW5hbWUgICAgICAgCSJCdWlsdEluIgotCQkJCXZhbHVlICAgICAgCTEwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCQluYW1lICAgICAgIAkiV2luZG93c1NoZWxsIgotCQkJCXZhbHVlICAgICAgCTEwMSkpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkFycmF5RGltZW5zaW9ucyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDb25zdFZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkltcGxlbWVudGF0aW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1TcGVjIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbmNsdWRlcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ21JZGVudGlmaWNhdGlvbiIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIgICVYJSAlUSUgJVolICVXJSIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDb3B5cmlnaHROb3RpY2UiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkluY2x1c2lvblByb3RlY3Rpb25TeW1ib2wiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLUJvZHkiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQWRkaXRpb25hbEluY2x1ZGVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICVRJSAlWiUgJVclIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiSW5jbHVzaW9uUHJvdGVjdGlvblN5bWJvbCIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ29udGV4dCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc09uZVdheSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJBcnJheURpbWVuc2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ2FzZVNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJbmFtZSAgICAgICAJIk9yZGVyIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUm9sZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJBcnJheURpbWVuc2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiQ2FzZVNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiSXNSZWFkT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJPcmRlciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkUm9sZVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkFzc29jVHlwZVNldCIgNDcpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJCW5hbWUgICAgICAgCSJBc3NvY1R5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQkJbmFtZSAgICAgICAJIkFycmF5IgotCQkJCXZhbHVlICAgICAgCTI0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQkJCW5hbWUgICAgICAgCSJTZXF1ZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAk0NykpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJDT1JCQSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1VzZXMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiQ09SQkEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGb3J3YXJkUmVmZXJlbmNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkNPUkJBIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiRGVmYXVsdF9TZXJ2bGV0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXROYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldENvbnRleHRSZWYiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJJc1NpbmdsZVRocmVhZCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJbml0UGFyYW1ldGVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEluaXRQYXJhbWV0ZXJOYW1lcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJc1NlY3VyZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0RGlzcGF0Y2hlciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRSZXF1ZXN0RGlzcGF0Y2hlclBhdGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEaXNwYXRjaGVySW5jbHVkZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkRpc3BhdGNoZXJGb3J3YXJkIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFNlY3VyaXR5Um9sZXMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0Z2V0SW5mbyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvbnN0cnVjdG9ySXMiCi0JCQl2YWx1ZSAgICAgIAkoIkN0b3JfU2V0IiA2MikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ3Rvcl9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHVibGljIgotCQkJCXZhbHVlICAgICAgCTYyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk2MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTY0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGaW5hbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN0YXRpY0luaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbnN0YW5jZUluaXRpYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJIdHRwX1NlcnZsZXRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFJlcXVlc3RBdHRyaWJ1dGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdEF0dHJpYnV0ZXNOYW1lcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIk1ldGhvZEZvclJlcXVlc3RBdHRyaWJ1dGVzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldFJlcXVlc3RQYXJhbWV0ZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0UmVxdWVzdFBhcmFtZXRlck5hbWVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWV0aG9kRm9yUmVxdWVzdFBhcmFtZXRlcnMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0SGVhZGVyIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU2VydmxldEhlYWRlck5hbWVzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTWV0aG9kRm9ySGVhZGVycyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRJbnRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0RGF0ZUhlYWRlciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlNlcnZsZXRDb29raWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RGb3JDb29raWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJTZXJ2bGV0Q29udGVudFR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUhUTUwiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJGaW5hbCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdENvbnN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDb25zdHJ1Y3RvcklzIgotCQkJdmFsdWUgICAgICAJKCJDdG9yX1NldCIgNjIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkN0b3JfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk2MikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcm90ZWN0ZWQiCi0JCQkJdmFsdWUgICAgICAJNjMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk2NCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRmluYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTdGF0aWNJbml0aWFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5zdGFuY2VJbml0aWFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiRGVmYXVsdF9FSkJfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVfWE1MX0REIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJDbXBGaWVsZCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQkVudmlyb25tZW50UHJvcGVydGllcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQkNueEZhY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJSZWZlcmVuY2VzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCU2VjdXJpdHlSb2xlcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQk5hbWVJbkpBUiIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlNlc3Npb25UeXBlIgotCQkJdmFsdWUgICAgICAJKCJFSkJTZXNzaW9uVHlwZV9TZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCU2Vzc2lvblR5cGVfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiU3RhdGVsZXNzIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJTdGF0ZWZ1bCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJFSkJUcmFuc2FjdGlvblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIkVKQlRyYW5zYWN0aW9uVHlwZV9TZXQiIDIxMSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCVHJhbnNhY3Rpb25UeXBlX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJDb250YWluZXIiCi0JCQkJdmFsdWUgICAgICAJMjExKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIkJlYW4iCi0JCQkJdmFsdWUgICAgICAJMjEyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCUGVyc2lzdGVuY2VUeXBlIgotCQkJdmFsdWUgICAgICAJKCJFSkJQZXJzaXN0ZW5jZVR5cGVfU2V0IiAyMjApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkVKQlBlcnNpc3RlbmNlVHlwZV9TZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiIgotCQkJCXZhbHVlICAgICAgCTIyMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJCZWFuIgotCQkJCXZhbHVlICAgICAgCTIyMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJDb250YWluZXIiCi0JCQkJdmFsdWUgICAgICAJMjIyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRUpCUmVlbnRyYW50IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQk1QX0V4dGVuZF9DTVAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJGaW5hbCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdENvbnN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDb25zdHJ1Y3RvcklzIgotCQkJdmFsdWUgICAgICAJKCJDdG9yX1NldCIgNjIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkN0b3JfU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk2MikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQcm90ZWN0ZWQiCi0JCQkJdmFsdWUgICAgICAJNjMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk2NCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRmluYWxpemVyIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTdGF0aWNJbml0aWFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5zdGFuY2VJbml0aWFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJSMkVkaXRvciIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiUm9zZSBNb2RlbCBJbnRlZ3JhdG9yIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJSb3NlIFdlYiBQdWJsaXNoZXIiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZlcnNpb24gQ29udHJvbCIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY5IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQ2F0ZWdvcnkiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkicGFja2FnZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkibnNQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkibnNVUkkiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiYmFzZVBhY2thZ2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkicHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImFubm90YXRpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJjbGFzc2lmaWVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJjb25zdHJhaW50cyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInhtbENvbnRlbnRLaW5kIgotCQkJdmFsdWUgICAgICAJKCJDb250ZW50S2luZCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIkNvbnRlbnRLaW5kIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJVbnNwZWNpZmllZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJFbXB0eSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJTaW1wbGUiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiTWl4ZWQiCi0JCQkJdmFsdWUgICAgICAJMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiRWxlbWVudE9ubHkiCi0JCQkJdmFsdWUgICAgICAJNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJhbm5vdGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fT3BlcmF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIm9wZXJhdGlvbk5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJhbm5vdGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImF0dHJpYnV0ZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNUcmFuc2llbnQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc0NoYW5nZWFibGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1Vuc2V0dGFibGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc0lEIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlLaW5kIiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiVmlzaWJpbGl0eUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlVuc3BlY2lmaWVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC1vbmx5IgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtd3JpdGUiCi0JCQkJdmFsdWUgICAgICAJMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC1vbmx5IHVuc2V0dGFibGUiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC13cml0ZSB1bnNldHRhYmxlIgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxOYW1lc3BhY2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sRmVhdHVyZUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIkZlYXR1cmVLaW5kIiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiRmVhdHVyZUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlVuc3BlY2lmaWVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlNpbXBsZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJBdHRyaWJ1dGUiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiRWxlbWVudCIKLQkJCQl2YWx1ZSAgICAgIAk0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImFubm90YXRpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Sb2xlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInJlZmVyZW5jZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNUcmFuc2llbnQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc0NoYW5nZWFibGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJpc1Vuc2V0dGFibGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNSZXNvbHZlUHJveGllcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlLaW5kIiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiVmlzaWJpbGl0eUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlVuc3BlY2lmaWVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC1vbmx5IgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtd3JpdGUiCi0JCQkJdmFsdWUgICAgICAJMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC1vbmx5IHVuc2V0dGFibGUiCi0JCQkJdmFsdWUgICAgICAJNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiUmVhZC13cml0ZSB1bnNldHRhYmxlIgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxOYW1lc3BhY2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sRmVhdHVyZUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIkZlYXR1cmVLaW5kIiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiRmVhdHVyZUtpbmQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlVuc3BlY2lmaWVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlNpbXBsZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJBdHRyaWJ1dGUiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiRWxlbWVudCIKLQkJCQl2YWx1ZSAgICAgIAk0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImFubm90YXRpb24iCi0JCQl2YWx1ZSAgICAgIAkiIikpKSkKLQlxdWlkICAgICAgIAkiMzlFMjdGMDgwMDY3IikpCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1dTREwuZWNvcmUgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1dTREwuZWNvcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1OTdmMmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9XU0RMLmVjb3JlCisrKyAvZGV2L251bGwKQEAgLTEsNjA5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08ZWNvcmU6RVBhY2thZ2UgeG1pOnZlcnNpb249IjIuMCIKLSAgICB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gICAgeG1sbnM6ZWNvcmU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUiIG5hbWU9IndzZGwiCi0gICAgbnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL1dTREwiIG5zUHJlZml4PSJ3c2RsIj4KLSAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBXU0RMIG1vZGVsIGNvbnRhaW5zIGNsYXNzZXMgZm9yIHRoZSBXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpLiYjeEQ7JiN4QTsmI3hEOyYjeEE7V1NETCBkZXNjcmliZXMgbmV0d29yayBzZXJ2aWNlcyBhcyBzZXRzIG9mIGVuZHBvaW50cyBvcGVyYXRpbmcgb24gbWVzc2FnZXMuIFRoZSBvcGVyYXRpb25zIGFuZCBtZXNzYWdlcyBhcmUgZGVzY3JpYmVkIGFic3RyYWN0bHksIGFuZCB0aGVuIGJvdW5kIHRvIGEgY29uY3JldGUgbmV0d29yayBwcm90b2NvbCBhbmQgbWVzc2FnZSBmb3JtYXQgdG8gZGVmaW5lIGFuIGVuZHBvaW50LiYjeEQ7JiN4QTsmI3hEOyYjeEE7V1NETCBkZXNjcmliZXMgdGhlIGZvcm1hdHMgb2YgdGhlIG1lc3NhZ2VzIGV4Y2hhbmdlZCBieSB0aGUgc2VydmljZXMsIGFuZCBzdXBwb3J0cyB0aGUgWE1MIFNjaGVtYXMgc3BlY2lmaWNhdGlvbiBhcyBpdHMgY2Fub25pY2FsIHR5cGUgc3lzdGVtLiBUaGlzIHBhY2thZ2UgdXNlcyBhbiBYTUwgU2NoZW1hIEluZm9zZXQgbW9kZWwgcGFja2FnZSAoc2VlIHRoZSBYU0QgcGFja2FnZSkgdG8gZGVzY3JpYmUgdGhlIGFic3RyYWN0IG1lc3NhZ2UgZm9ybWF0cy4mI3hEOyYjeEE7JiN4RDsmI3hBO1RoZSBtb2RlbCBjb250YWlucyB0aGUgZm9sbG93aW5nIGRpYWdyYW1zLCBuYW1lZCBhZnRlciB0aGUgY29ycmVzcG9uZGluZyBjaGFwdGVycyBpbiB0aGUgV1NETCAxLjEgc3BlY2lmaWNhdGlvbiAoaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9OT1RFLXdzZGwtMjAwMTAzMTUpJiN4RDsmI3hBOy0gMi4xIERlZmluaXRpb24sIHNob3dzIHRoZSBXU0RMIGRlZmluaXRpb24gZWxlbWVudCBhbmQgdGhlIFdTREwgZG9jdW1lbnQgc3RydWN0dXJlJiN4RDsmI3hBOy0gMi4xLjEgTmFtaW5nIGFuZCBMaW5raW5nLCBzaG93cyB0aGUgbmFtZXNwYWNlIGFuZCBpbXBvcnQgbWVjaGFuaXNtJiN4RDsmI3hBOy0gMi4xLjMgRXh0ZW5zaWJpbGl0eSwgc2hvd3MgdGhlIFdTREwgZXh0ZW5zaWJpbGl0eSBtZWNoYW5pc20mI3hEOyYjeEE7LSAyLjIgVHlwZXMsIHNob3dzIHRoZSB1c2Ugb2YgWE1MIFNjaGVtYSB0eXBlcyBpbiBXU0RMJiN4RDsmI3hBOy0gMi4zIE1lc3NhZ2VzLCAyLjQgUG9ydFR5cGVzLCAyLjUgQmluZGluZ3MgYW5kIDIuNyBTZXJ2aWNlcywgc2hvdyB0aGUgbWFqb3IgV1NETCBlbGVtZW50cyBhbmQgdGhlaXIgcmVsYXRpb25zLiYjeEQ7JiN4QTsmI3hEOyYjeEE7VGhlIFdTREwgY2xhc3NlcyBleHRlbmQgdGhlIGphdmF4LndzZGwgaW50ZXJmYWNlcyBkZWZpbmVkIGJ5IEpTUiAxMTAuIENsYXNzZXMgd2l0aCBpbnRlcmZhY2UgYW5kIGRhdGF0eXBlIHN0ZXJlb3R5cGVzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCB0aGVzZSBub24tTU9GIGludGVyZmFjZXMuIi8+Ci0gIDwvZUFubm90YXRpb25zPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IldTRExFbGVtZW50IiBhYnN0cmFjdD0idHJ1ZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBsYW5ndWFnZSBlbGVtZW50LiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRFbmNsb3NpbmdEZWZpbml0aW9uIiBlVHlwZT0iIy8vRGVmaW5pdGlvbiIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRFbmNsb3NpbmdEZWZpbml0aW9uIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJkZWZpbml0aW9uIiBlVHlwZT0iIy8vRGVmaW5pdGlvbiIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImRvY3VtZW50YXRpb25FbGVtZW50IiBlVHlwZT0iIy8vRE9NRWxlbWVudCIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJlbGVtZW50IiBlVHlwZT0iIy8vRE9NRWxlbWVudCIKLSAgICAgICAgdHJhbnNpZW50PSJ0cnVlIi8+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlBvcnRUeXBlIiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJsZUVsZW1lbnQgIy8vSVBvcnRUeXBlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIHBvcnRUeXBlIGVsZW1lbnQgb2YgdGhlIFdTREwgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIDEuMSBhbmQgYW4gSW50ZXJmYWNlIGNvbXBvbmVudCBvZiB0aGUgV1NETCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gMS4yLiBBIHBvcnQgdHlwZSBvciBJbnRlcmZhY2UgaXMgYSBuYW1lZCBzZXQgb2YgYWJzdHJhY3Qgb3BlcmF0aW9ucyBhbmQgdGhlIGFic3RyYWN0IG1lc3NhZ2VzIGludm9sdmVkLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJxTmFtZSIgZVR5cGU9IiMvL1FOYW1lIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InVuZGVmaW5lZCIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRUJvb2xlYW4iLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZU9wZXJhdGlvbnMiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vT3BlcmF0aW9uIiBjb250YWlubWVudD0idHJ1ZSIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJPcGVyYXRpb24iIGVTdXBlclR5cGVzPSIjLy9FeHRlbnNpYmxlRWxlbWVudCAjLy9JT3BlcmF0aW9uIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIG9wZXJhdGlvbiBlbGVtZW50LiBBIFdTREwgb3BlcmF0aW9uIGlzIGFuIGFic3RyYWN0IGRlc2NyaXB0aW9uIG9mIGFuIGFjdGlvbiBzdXBwb3J0ZWQgYnkgYSBzZXJ2aWNlLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJzdHlsZSIgZVR5cGU9IiMvL09wZXJhdGlvblR5cGUiLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibmFtZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJ1bmRlZmluZWQiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VCb29sZWFuIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVJbnB1dCIgZVR5cGU9IiMvL0lucHV0IgotICAgICAgICBjb250YWlubWVudD0idHJ1ZSIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlT3V0cHV0IiBlVHlwZT0iIy8vT3V0cHV0IgotICAgICAgICBjb250YWlubWVudD0idHJ1ZSIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlRmF1bHRzIiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9IiMvL0ZhdWx0IiBjb250YWlubWVudD0idHJ1ZSIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlUGFyYW1ldGVyT3JkZXJpbmciIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vUGFydCIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJNZXNzYWdlIiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJsZUVsZW1lbnQgIy8vSU1lc3NhZ2UiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgbWVzc2FnZSBlbGVtZW50LiBBIFdTREwgbWVzc2FnZSBpcyBhbiBhYnN0cmFjdCwgdHlwZWQgZGVmaW5pdGlvbiBvZiB0aGUgZGF0YSBiZWluZyBjb21tdW5pY2F0ZWQuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InFOYW1lIiBlVHlwZT0iIy8vUU5hbWUiLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0idW5kZWZpbmVkIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FQm9vbGVhbiIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlUGFydHMiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vUGFydCIgY29udGFpbm1lbnQ9InRydWUiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iUGFydCIgZVN1cGVyVHlwZXM9IiMvL0V4dGVuc2libGVFbGVtZW50ICMvL0lQYXJ0Ij4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIHBhcnQgZWxlbWVudC4gUGFydHMgZGVzY3JpYmUgdGhlIGxvZ2ljYWwgYWJzdHJhY3QgY29udGVudCBvZiBhIG1lc3NhZ2UuIEVhY2ggcGFydCBpcyBhc3NvY2lhdGVkIHdpdGggYSB0eXBlIGZyb20gc29tZSB0eXBlIHN5c3RlbS4gIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9Im5hbWUiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0iZWxlbWVudE5hbWUiIGVUeXBlPSIjLy9RTmFtZSIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJ0eXBlTmFtZSIgZVR5cGU9IiMvL1FOYW1lIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InR5cGVEZWZpbml0aW9uIiBlVHlwZT0iZWNvcmU6RUNsYXNzIHBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UueHNkL21vZGVsL1hTRC5lY29yZSMvL1hTRFR5cGVEZWZpbml0aW9uIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVsZW1lbnREZWNsYXJhdGlvbiIgZVR5cGU9ImVjb3JlOkVDbGFzcyBwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnhzZC9tb2RlbC9YU0QuZWNvcmUjLy9YU0RFbGVtZW50RGVjbGFyYXRpb24iLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZU1lc3NhZ2UiIGVUeXBlPSIjLy9NZXNzYWdlIi8+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkJpbmRpbmciIGVTdXBlclR5cGVzPSIjLy9FeHRlbnNpYmxlRWxlbWVudCAjLy9JQmluZGluZyI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBiaW5kaW5nIGVsZW1lbnQuIEEgYmluZGluZyBkZWZpbmVzIG1lc3NhZ2UgZm9ybWF0IGFuZCBwcm90b2NvbCBkZXRhaWxzIGZvciBvcGVyYXRpb25zIGFuZCBtZXNzYWdlcyBkZWZpbmVkIGJ5IGEgcGFydGljdWxhciBwb3J0VHlwZS4gVGhlcmUgbWF5IGJlIGFueSBudW1iZXIgb2YgYmluZGluZ3MgZm9yIGEgZ2l2ZW4gcG9ydFR5cGUuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InFOYW1lIiBlVHlwZT0iIy8vUU5hbWUiLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0idW5kZWZpbmVkIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FQm9vbGVhbiIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlUG9ydFR5cGUiIGxvd2VyQm91bmQ9IjEiCi0gICAgICAgIGVUeXBlPSIjLy9Qb3J0VHlwZSIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlQmluZGluZ09wZXJhdGlvbnMiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vQmluZGluZ09wZXJhdGlvbiIgY29udGFpbm1lbnQ9InRydWUiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iQmluZGluZ09wZXJhdGlvbiIgZVN1cGVyVHlwZXM9IiMvL0V4dGVuc2libGVFbGVtZW50ICMvL0lCaW5kaW5nT3BlcmF0aW9uIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIG9wZXJhdGlvbiBlbGVtZW50IHdpdGhpbiBhIGJpbmRpbmcuIEFuIG9wZXJhdGlvbiBlbGVtZW50IHdpdGhpbiBhIGJpbmRpbmcgc3BlY2lmaWVzIGJpbmRpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIHdpdGhpbiB0aGUgYmluZGluZydzIHBvcnRUeXBlLiAiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibmFtZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlT3BlcmF0aW9uIiBsb3dlckJvdW5kPSIxIgotICAgICAgICBlVHlwZT0iIy8vT3BlcmF0aW9uIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVCaW5kaW5nSW5wdXQiIGVUeXBlPSIjLy9CaW5kaW5nSW5wdXQiCi0gICAgICAgIGNvbnRhaW5tZW50PSJ0cnVlIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVCaW5kaW5nT3V0cHV0IiBlVHlwZT0iIy8vQmluZGluZ091dHB1dCIKLSAgICAgICAgY29udGFpbm1lbnQ9InRydWUiLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZUJpbmRpbmdGYXVsdHMiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vQmluZGluZ0ZhdWx0IiBjb250YWlubWVudD0idHJ1ZSIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJTZXJ2aWNlIiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJsZUVsZW1lbnQgIy8vSVNlcnZpY2UiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgc2VydmljZSBlbGVtZW50LiBBIHNlcnZpY2UgZ3JvdXBzIGEgc2V0IG9mIHJlbGF0ZWQgcG9ydHMgdG9nZXRoZXIuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InFOYW1lIiBlVHlwZT0iIy8vUU5hbWUiLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0idW5kZWZpbmVkIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FQm9vbGVhbiIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlUG9ydHMiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vUG9ydCIgY29udGFpbm1lbnQ9InRydWUiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iUG9ydCIgZVN1cGVyVHlwZXM9IiMvL0V4dGVuc2libGVFbGVtZW50ICMvL0lQb3J0Ij4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIHBvcnQgZWxlbWVudC4gQSBwb3J0IGRlZmluZXMgYW4gaW5kaXZpZHVhbCBlbmRwb2ludCBieSBzcGVjaWZ5aW5nIGEgc2luZ2xlIGFkZHJlc3MgZm9yIGEgYmluZGluZyIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJuYW1lIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVCaW5kaW5nIiBsb3dlckJvdW5kPSIxIgotICAgICAgICBlVHlwZT0iIy8vQmluZGluZyIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJFeHRlbnNpYmlsaXR5RWxlbWVudCIgZVN1cGVyVHlwZXM9IiMvL1dTRExFbGVtZW50ICMvL0lFeHRlbnNpYmlsaXR5RWxlbWVudCI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBleHRlbnNpYmlsaXR5IGVsZW1lbnQuIFdTREwgYWxsb3dzIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgdGVjaG5vbG9neSB1bmRlciB2YXJpb3VzIGVsZW1lbnRzIGRlZmluZWQgYnkgV1NETC4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0icmVxdWlyZWQiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VCb29sZWFuIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImVsZW1lbnRUeXBlIiBlVHlwZT0iIy8vUU5hbWUiCi0gICAgICAgIHRyYW5zaWVudD0idHJ1ZSIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJEZWZpbml0aW9uIiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJsZUVsZW1lbnQgIy8vSURlZmluaXRpb24iPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgZGVmaW5pdGlvbnMgZWxlbWVudC4gVGhlIFdTREwgZGVmaW5pdGlvbnMgZWxlbWVudCBpcyB0aGUgcm9vdCBlbGVtZW50IG9mIGEgV1NETCBkb2N1bWVudC4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0RG9jdW1lbnQiIGVUeXBlPSIjLy9ET01Eb2N1bWVudCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXREb2N1bWVudCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0iZG9jdW1lbnQiIGVUeXBlPSIjLy9ET01Eb2N1bWVudCIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InRhcmdldE5hbWVzcGFjZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJsb2NhdGlvbiIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJxTmFtZSIgZVR5cGU9IiMvL1FOYW1lIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImVuY29kaW5nIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVJbXBvcnRzIiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9IiMvL0ltcG9ydCIgY29udGFpbm1lbnQ9InRydWUiLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZVR5cGVzIiBlVHlwZT0iIy8vVHlwZXMiCi0gICAgICAgIGNvbnRhaW5tZW50PSJ0cnVlIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVNZXNzYWdlcyIgdXBwZXJCb3VuZD0iLTEiCi0gICAgICAgIGVUeXBlPSIjLy9NZXNzYWdlIiBjb250YWlubWVudD0idHJ1ZSIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlUG9ydFR5cGVzIiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9IiMvL1BvcnRUeXBlIiBjb250YWlubWVudD0idHJ1ZSIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlQmluZGluZ3MiIHVwcGVyQm91bmQ9Ii0xIgotICAgICAgICBlVHlwZT0iIy8vQmluZGluZyIgY29udGFpbm1lbnQ9InRydWUiLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZVNlcnZpY2VzIiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9IiMvL1NlcnZpY2UiIGNvbnRhaW5tZW50PSJ0cnVlIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVOYW1lc3BhY2VzIiB1cHBlckJvdW5kPSItMSIKLSAgICAgICAgZVR5cGU9IiMvL05hbWVzcGFjZSIgY29udGFpbm1lbnQ9InRydWUiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSW1wb3J0IiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJsZUVsZW1lbnQgIy8vSUltcG9ydCI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIFdTREwgaW1wb3J0IGVsZW1lbnQuIFdTREwgYWxsb3dzIGFzc29jaWF0aW5nIGEgbmFtZXNwYWNlIHdpdGggYSBkb2N1bWVudCBsb2NhdGlvbiB1c2luZyBhbiBpbXBvcnQgZWxlbWVudC4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0U2NoZW1hIiBlVHlwZT0iZWNvcmU6RUNsYXNzIHBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UueHNkL21vZGVsL1hTRC5lY29yZSMvL1hTRFNjaGVtYSIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRTY2hlbWEiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InNjaGVtYSIgZVR5cGU9ImVjb3JlOkVDbGFzcyBwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnhzZC9tb2RlbC9YU0QuZWNvcmUjLy9YU0RTY2hlbWEiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJuYW1lc3BhY2VVUkkiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibG9jYXRpb25VUkkiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZURlZmluaXRpb24iIGVUeXBlPSIjLy9EZWZpbml0aW9uIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVTY2hlbWEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgcGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS54c2QvbW9kZWwvWFNELmVjb3JlIy8vWFNEU2NoZW1hIi8+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkV4dGVuc2libGVFbGVtZW50IiBhYnN0cmFjdD0idHJ1ZSIgZVN1cGVyVHlwZXM9IiMvL1dTRExFbGVtZW50ICMvL0lFbGVtZW50RXh0ZW5zaWJsZSAjLy9JQXR0cmlidXRlRXh0ZW5zaWJsZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iIFdTREwgYWxsb3dzIGVsZW1lbnRzIHJlcHJlc2VudGluZyBhIHNwZWNpZmljIHRlY2hub2xvZ3kgKHJlZmVycmVkIHRvIGhlcmUgYXMgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cykgdW5kZXIgdmFyaW91cyBlbGVtZW50cyBkZWZpbmVkIGJ5IFdTREwuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgcG9pbnQgb2YgZXh0ZW5zaWJpbGl0eS4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZUV4dGVuc2liaWxpdHlFbGVtZW50cyIKLSAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSIjLy9FeHRlbnNpYmlsaXR5RWxlbWVudCIgY29udGFpbm1lbnQ9InRydWUiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSW5wdXQiIGVTdXBlclR5cGVzPSIjLy9NZXNzYWdlUmVmZXJlbmNlICMvL0lJbnB1dCI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBpbnB1dCBlbGVtZW50LiBBbiBpbnB1dCBlbGVtZW50IHNwZWNpZmllcyB0aGUgYWJzdHJhY3QgbWVzc2FnZSBmb3JtYXQgZm9yIHRoZSBpbnB1dCBvZiB0aGUgb3BlcmF0aW9uLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJPdXRwdXQiIGVTdXBlclR5cGVzPSIjLy9NZXNzYWdlUmVmZXJlbmNlICMvL0lPdXRwdXQiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgb3V0cHV0IGVsZW1lbnQuIEFuIG91dHB1dCBlbGVtZW50IHNwZWNpZmllcyB0aGUgYWJzdHJhY3QgbWVzc2FnZSBmb3JtYXQgZm9yIHRoZSBvdXRwdXQgb2YgdGhlIG9wZXJhdGlvbi4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iRmF1bHQiIGVTdXBlclR5cGVzPSIjLy9NZXNzYWdlUmVmZXJlbmNlICMvL0lGYXVsdCI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBmYXVsdCBlbGVtZW50LiBGYXVsdCBlbGVtZW50cyBzcGVjaWZ5IHRoZSBhYnN0cmFjdCBtZXNzYWdlIGZvcm1hdCBmb3IgYW55IGVycm9yIG1lc3NhZ2VzIHRoYXQgbWF5IGJlIG91dHB1dCBhcyB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkJpbmRpbmdJbnB1dCIgZVN1cGVyVHlwZXM9IiMvL0V4dGVuc2libGVFbGVtZW50ICMvL0lCaW5kaW5nSW5wdXQiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgaW5wdXQgZWxlbWVudCB3aXRoaW4gYSBvcGVyYXRpb24gd2l0aGluIGEgYmluZGluZy4gQW4gaW5wdXQgZWxlbWVudCB3aXRoaW4gYW4gb3BlcmF0aW9uIHdpdGhpbiBhIGJpbmRpbmcgc3BlY2lmaWVzIGJpbmRpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBpbnB1dCBvZiB0aGUgb3BlcmF0aW9uLiAiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0SW5wdXQiIGVUeXBlPSIjLy9JSW5wdXQiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0ic2V0SW5wdXQiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9ImlucHV0IiBlVHlwZT0iIy8vSUlucHV0Ii8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibmFtZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlSW5wdXQiIGxvd2VyQm91bmQ9IjEiCi0gICAgICAgIGVUeXBlPSIjLy9JbnB1dCIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJCaW5kaW5nT3V0cHV0IiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJsZUVsZW1lbnQgIy8vSUJpbmRpbmdPdXRwdXQiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgb3V0cHV0IGVsZW1lbnQgd2l0aGluIGEgb3BlcmF0aW9uIHdpdGhpbiBhIGJpbmRpbmcuIEFuIG91dHB1dCBlbGVtZW50IHdpdGhpbiBhbiBvcGVyYXRpb24gd2l0aGluIGEgYmluZGluZyBzcGVjaWZpZXMgYmluZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIG91dHB1dCBvZiB0aGUgb3BlcmF0aW9uLiAiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0T3V0cHV0IiBlVHlwZT0iIy8vSU91dHB1dCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRPdXRwdXQiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im91dHB1dCIgZVR5cGU9IiMvL0lPdXRwdXQiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJuYW1lIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImVPdXRwdXQiIGxvd2VyQm91bmQ9IjEiCi0gICAgICAgIGVUeXBlPSIjLy9PdXRwdXQiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iQmluZGluZ0ZhdWx0IiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJsZUVsZW1lbnQgIy8vSUJpbmRpbmdGYXVsdCI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBmYXVsdCBlbGVtZW50IHdpdGhpbiBhIG9wZXJhdGlvbiB3aXRoaW4gYSBiaW5kaW5nLiBBIGZhdWx0IGVsZW1lbnQgd2l0aGluIGFuIG9wZXJhdGlvbiB3aXRoaW4gYSBiaW5kaW5nIHNwZWNpZmllcyBiaW5kaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgZmF1bHQgd2l0aCB0aGUgc2FtZSBuYW1lLiAiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0RmF1bHQiIGVUeXBlPSIjLy9JRmF1bHQiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0ic2V0RmF1bHQiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9ImZhdWx0IiBlVHlwZT0iIy8vSUZhdWx0Ii8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibmFtZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlRmF1bHQiIGxvd2VyQm91bmQ9IjEiCi0gICAgICAgIGVUeXBlPSIjLy9GYXVsdCIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBuYW1lPSJRTmFtZSIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5RTmFtZSBjbGFzcy4gQSBRTmFtZSBpcyBhIGZ1bGx5IHF1YWxpZmllZCBuYW1lLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJOYW1lc3BhY2UiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIG5hbWVzcGFjZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgbmFtZXNwYWNlIHByZWZpeCB1c2VkIGluIGEgV1NETCBkb2N1bWVudC4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0iVVJJIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InByZWZpeCIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBuYW1lPSJPcGVyYXRpb25UeXBlIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5PcGVyYXRpb25UeXBlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJPTkVfV0FZPTEmI3hEOyYjeEE7UkVRVUVTVF9SRVNQT05TRT0yJiN4RDsmI3hBO1NPTElDSVRfUkVTUE9OU0U9MyYjeEQ7JiN4QTtOT1RJRklDQVRJT049NCIvPgotICAgIDwvZUFubm90YXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJUG9ydFR5cGUiIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLlBvcnRUeXBlIgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIgZVN1cGVyVHlwZXM9IiMvL0lBdHRyaWJ1dGVFeHRlbnNpYmxlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuUG9ydFR5cGUgbm9uLU1PRiBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImFkZE9wZXJhdGlvbiI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ib3BlcmF0aW9uIiBlVHlwZT0iIy8vSU9wZXJhdGlvbiIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldE9wZXJhdGlvbiIgZVR5cGU9IiMvL0lPcGVyYXRpb24iPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im5hbWUiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJpbnB1dE5hbWUiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJvdXRwdXROYW1lIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0T3BlcmF0aW9ucyIgZVR5cGU9IiMvL0lMaXN0Ii8+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklPcGVyYXRpb24iIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLk9wZXJhdGlvbiIKLSAgICAgIGFic3RyYWN0PSJ0cnVlIiBpbnRlcmZhY2U9InRydWUiIGVTdXBlclR5cGVzPSIjLy9JRWxlbWVudEV4dGVuc2libGUiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5PcGVyYXRpb24gbm9uLU1PRiBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImFkZEZhdWx0Ij4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJmYXVsdCIgZVR5cGU9IiMvL0lGYXVsdCIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldEZhdWx0IiBlVHlwZT0iIy8vSUZhdWx0Ij4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJuYW1lIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0RmF1bHRzIiBlVHlwZT0iIy8vSU1hcCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRQYXJhbWV0ZXJPcmRlcmluZyIgZVR5cGU9IiMvL0lMaXN0Ii8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9InNldFBhcmFtZXRlck9yZGVyaW5nIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJwYXJhbWV0ZXJPcmRlciIgZVR5cGU9IiMvL0lMaXN0Ii8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0SW5wdXQiIGVUeXBlPSIjLy9JSW5wdXQiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0ic2V0SW5wdXQiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9ImlucHV0IiBlVHlwZT0iIy8vSUlucHV0Ii8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0T3V0cHV0IiBlVHlwZT0iIy8vSU91dHB1dCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRPdXRwdXQiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im91dHB1dCIgZVR5cGU9IiMvL0lPdXRwdXQiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJSW5wdXQiIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLklucHV0IgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIgZVN1cGVyVHlwZXM9IiMvL0lBdHRyaWJ1dGVFeHRlbnNpYmxlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuSW5wdXQgbm9uLU1PRiBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldE1lc3NhZ2UiIGVUeXBlPSIjLy9JTWVzc2FnZSIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRNZXNzYWdlIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJtZXNzYWdlIiBlVHlwZT0iIy8vSU1lc3NhZ2UiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJT3V0cHV0IiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5PdXRwdXQiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIiBlU3VwZXJUeXBlcz0iIy8vSUF0dHJpYnV0ZUV4dGVuc2libGUiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5PdXRwdXQgbm9uLU1PRiBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldE1lc3NhZ2UiIGVUeXBlPSIjLy9JTWVzc2FnZSIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRNZXNzYWdlIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJtZXNzYWdlIiBlVHlwZT0iIy8vSU1lc3NhZ2UiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJRmF1bHQiIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLkZhdWx0IgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIgZVN1cGVyVHlwZXM9IiMvL0lBdHRyaWJ1dGVFeHRlbnNpYmxlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuRmF1bHQgbm9uLU1PRiBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldE1lc3NhZ2UiIGVUeXBlPSIjLy9JTWVzc2FnZSIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRNZXNzYWdlIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJtZXNzYWdlIiBlVHlwZT0iIy8vSU1lc3NhZ2UiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJTWVzc2FnZSIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuTWVzc2FnZSIKLSAgICAgIGFic3RyYWN0PSJ0cnVlIiBpbnRlcmZhY2U9InRydWUiIGVTdXBlclR5cGVzPSIjLy9JRWxlbWVudEV4dGVuc2libGUiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5NZXNzYWdlIG5vbi1NT0YgaW50ZXJmYWNlIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImFkZFBhcnQiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InBhcnQiIGVUeXBlPSIjLy9JUGFydCIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldFBhcnQiIGVUeXBlPSIjLy9JUGFydCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ibmFtZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldFBhcnRzIiBlVHlwZT0iIy8vSU1hcCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRPcmRlcmVkUGFydHMiIGVUeXBlPSIjLy9JTGlzdCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0icGFydE9yZGVyIiBlVHlwZT0iIy8vSUxpc3QiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJUGFydCIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuUGFydCIKLSAgICAgIGFic3RyYWN0PSJ0cnVlIiBpbnRlcmZhY2U9InRydWUiIGVTdXBlclR5cGVzPSIjLy9JQXR0cmlidXRlRXh0ZW5zaWJsZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBqYXZheC53c2RsLlBhcnQgbm9uLU1PRiBpbnRlcmZhY2UiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSVNlcnZpY2UiIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLlNlcnZpY2UiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIiBlU3VwZXJUeXBlcz0iIy8vSUVsZW1lbnRFeHRlbnNpYmxlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuU2VydmljZSBub24tTU9GIGludGVyZmFjZS4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iYWRkUG9ydCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0icG9ydCIgZVR5cGU9IiMvL0lQb3J0Ii8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0UG9ydHMiIGVUeXBlPSIjLy9JTWFwIi8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldFBvcnQiIGVUeXBlPSIjLy9JUG9ydCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ibmFtZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklQb3J0IiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5Qb3J0IgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIgZVN1cGVyVHlwZXM9IiMvL0lFbGVtZW50RXh0ZW5zaWJsZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBqYXZheC53c2RsLlBvcnQgbm9uLU1PRiBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldEJpbmRpbmciIGVUeXBlPSIjLy9JQmluZGluZyIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRCaW5kaW5nIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJiaW5kaW5nIiBlVHlwZT0iIy8vSUJpbmRpbmciLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJQmluZGluZyIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuQmluZGluZyIKLSAgICAgIGFic3RyYWN0PSJ0cnVlIiBpbnRlcmZhY2U9InRydWUiIGVTdXBlclR5cGVzPSIjLy9JRWxlbWVudEV4dGVuc2libGUiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5CaW5kaW5nIG5vbi1NT0YgaW50ZXJmYWNlLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJhZGRCaW5kaW5nT3BlcmF0aW9uIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJiaW5kaW5nT3BlcmF0aW9uIiBlVHlwZT0iIy8vSUJpbmRpbmdPcGVyYXRpb24iLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRCaW5kaW5nT3BlcmF0aW9uIiBlVHlwZT0iIy8vSUJpbmRpbmdPcGVyYXRpb24iPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im5hbWUiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJpbnB1dE5hbWUiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJvdXRwdXROYW1lIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0QmluZGluZ09wZXJhdGlvbnMiIGVUeXBlPSIjLy9JTGlzdCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRQb3J0VHlwZSIgZVR5cGU9IiMvL0lQb3J0VHlwZSIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRQb3J0VHlwZSI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0icG9ydFR5cGUiIGVUeXBlPSIjLy9JUG9ydFR5cGUiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJQmluZGluZ09wZXJhdGlvbiIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiIKLSAgICAgIGFic3RyYWN0PSJ0cnVlIiBpbnRlcmZhY2U9InRydWUiIGVTdXBlclR5cGVzPSIjLy9JRWxlbWVudEV4dGVuc2libGUiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uIG5vbi1NT0YgaW50ZXJmYWNlLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJhZGRCaW5kaW5nRmF1bHQiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9ImJpbmRpbmdGYXVsdCIgZVR5cGU9IiMvL0lCaW5kaW5nRmF1bHQiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRCaW5kaW5nRmF1bHQiIGVUeXBlPSIjLy9JQmluZGluZ0ZhdWx0Ij4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJuYW1lIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0QmluZGluZ0ZhdWx0cyIgZVR5cGU9IiMvL0lNYXAiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0T3BlcmF0aW9uIiBlVHlwZT0iIy8vSU9wZXJhdGlvbiIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRPcGVyYXRpb24iPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im9wZXJhdGlvbiIgZVR5cGU9IiMvL0lPcGVyYXRpb24iLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRCaW5kaW5nSW5wdXQiIGVUeXBlPSIjLy9JQmluZGluZ0lucHV0Ii8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9InNldEJpbmRpbmdJbnB1dCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0iYmluZGluZ0lucHV0IiBlVHlwZT0iIy8vSUJpbmRpbmdJbnB1dCIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldEJpbmRpbmdPdXRwdXQiIGVUeXBlPSIjLy9JQmluZGluZ091dHB1dCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRCaW5kaW5nT3V0cHV0Ij4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJiaW5kaW5nT3V0cHV0IiBlVHlwZT0iIy8vSUJpbmRpbmdPdXRwdXQiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJQmluZGluZ0lucHV0IiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5CaW5kaW5nSW5wdXQiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIiBlU3VwZXJUeXBlcz0iIy8vSUVsZW1lbnRFeHRlbnNpYmxlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuQmluZGluZ0lucHV0IG5vbi1NT0YgaW50ZXJmYWNlLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJQmluZGluZ091dHB1dCIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuQmluZGluZ091dHB1dCIKLSAgICAgIGFic3RyYWN0PSJ0cnVlIiBpbnRlcmZhY2U9InRydWUiIGVTdXBlclR5cGVzPSIjLy9JRWxlbWVudEV4dGVuc2libGUiPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0IG5vbi1NT0YgaW50ZXJmYWNlLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJQmluZGluZ0ZhdWx0IiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5CaW5kaW5nRmF1bHQiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIiBlU3VwZXJUeXBlcz0iIy8vSUVsZW1lbnRFeHRlbnNpYmxlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuQmluZGluZ0ZhdWx0IG5vbi1NT0YgaW50ZXJmYWNlLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBuYW1lPSJET01FbGVtZW50IiBpbnN0YW5jZUNsYXNzTmFtZT0ib3JnLnczYy5kb20uRWxlbWVudCI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBvcmcudzNjLmRvbS5FbGVtZW50IG5vbi1NT0YgaW50ZXJmYWNlLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJRXh0ZW5zaWJpbGl0eUVsZW1lbnQiIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgbm9uLU1PRiBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklEZWZpbml0aW9uIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5EZWZpbml0aW9uIgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIgZVN1cGVyVHlwZXM9IiMvL0lFbGVtZW50RXh0ZW5zaWJsZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBqYXZheC53c2RsLkRlZmluaXRpb24gbm9uLU1PRiBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImFkZEJpbmRpbmciPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9ImJpbmRpbmciIGVUeXBlPSIjLy9JQmluZGluZyIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImFkZEltcG9ydCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0iaW1wb3J0RGVmIiBlVHlwZT0iIy8vSUltcG9ydCIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImFkZE1lc3NhZ2UiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im1lc3NhZ2UiIGVUeXBlPSIjLy9JTWVzc2FnZSIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImFkZE5hbWVzcGFjZSI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0icHJlZml4IiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ibmFtZXNwYWNlVVJJIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iYWRkUG9ydFR5cGUiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InBvcnRUeXBlIiBlVHlwZT0iIy8vSVBvcnRUeXBlIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iYWRkU2VydmljZSI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ic2VydmljZSIgZVR5cGU9IiMvL0lTZXJ2aWNlIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iY3JlYXRlQmluZGluZ0ZhdWx0IiBlVHlwZT0iIy8vSUJpbmRpbmdGYXVsdCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJjcmVhdGVCaW5kaW5nSW5wdXQiIGVUeXBlPSIjLy9JQmluZGluZ0lucHV0Ii8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImNyZWF0ZUJpbmRpbmdPdXRwdXQiIGVUeXBlPSIjLy9JQmluZGluZ091dHB1dCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJjcmVhdGVCaW5kaW5nT3BlcmF0aW9uIiBlVHlwZT0iIy8vSUJpbmRpbmdPcGVyYXRpb24iLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iY3JlYXRlQmluZGluZyIgZVR5cGU9IiMvL0lCaW5kaW5nIi8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImNyZWF0ZUZhdWx0IiBlVHlwZT0iIy8vSUZhdWx0Ii8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImNyZWF0ZUltcG9ydCIgZVR5cGU9IiMvL0lJbXBvcnQiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iY3JlYXRlSW5wdXQiIGVUeXBlPSIjLy9JSW5wdXQiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iY3JlYXRlTWVzc2FnZSIgZVR5cGU9IiMvL0lNZXNzYWdlIi8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImNyZWF0ZU9wZXJhdGlvbiIgZVR5cGU9IiMvL0lPcGVyYXRpb24iLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iY3JlYXRlT3V0cHV0IiBlVHlwZT0iIy8vSU91dHB1dCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJjcmVhdGVQYXJ0IiBlVHlwZT0iIy8vSVBhcnQiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iY3JlYXRlUG9ydCIgZVR5cGU9IiMvL0lQb3J0Ii8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImNyZWF0ZVBvcnRUeXBlIiBlVHlwZT0iIy8vSVBvcnRUeXBlIi8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImNyZWF0ZVNlcnZpY2UiIGVUeXBlPSIjLy9JU2VydmljZSIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRCaW5kaW5nIiBlVHlwZT0iIy8vSUJpbmRpbmciPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im5hbWUiIGVUeXBlPSIjLy9RTmFtZSIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldEJpbmRpbmdzIiBlVHlwZT0iIy8vSU1hcCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRJbXBvcnRzIiBlVHlwZT0iIy8vSU1hcCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRJbXBvcnRzIiBlVHlwZT0iIy8vSUxpc3QiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im5hbWVzcGFjZVVSSSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldE1lc3NhZ2UiIGVUeXBlPSIjLy9JTWVzc2FnZSI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ibmFtZSIgZVR5cGU9IiMvL1FOYW1lIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0TWVzc2FnZXMiIGVUeXBlPSIjLy9JTWFwIi8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldE5hbWVzcGFjZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0icHJlZml4IiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0TmFtZXNwYWNlcyIgZVR5cGU9IiMvL0lNYXAiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0UG9ydFR5cGUiIGVUeXBlPSIjLy9JUG9ydFR5cGUiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im5hbWUiIGVUeXBlPSIjLy9RTmFtZSIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldFBvcnRUeXBlcyIgZVR5cGU9IiMvL0lNYXAiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0UHJlZml4IiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJuYW1lc3BhY2VVUkkiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRTZXJ2aWNlIiBlVHlwZT0iIy8vSVNlcnZpY2UiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im5hbWUiIGVUeXBlPSIjLy9RTmFtZSIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldFNlcnZpY2VzIiBlVHlwZT0iIy8vSU1hcCIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRFeHRlbnNpb25SZWdpc3RyeSIgZVR5cGU9IiMvL0lFeHRlbnNpb25SZWdpc3RyeSIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRFeHRlbnNpb25SZWdpc3RyeSI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0iZXh0ZW5zaW9uUmVnaXN0cnkiIGVUeXBlPSIjLy9JRXh0ZW5zaW9uUmVnaXN0cnkiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXREb2N1bWVudEJhc2VVUkkiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0ic2V0RG9jdW1lbnRCYXNlVVJJIj4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJkb2N1bWVudEJhc2UiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSMvL0VTdHJpbmciLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJjcmVhdGVUeXBlcyIgZVR5cGU9IiMvL0lUeXBlcyIvPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJyZW1vdmVTZXJ2aWNlIiBlVHlwZT0iIy8vSVNlcnZpY2UiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im5hbWUiIGVUeXBlPSIjLy9RTmFtZSIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9InJlbW92ZUJpbmRpbmciIGVUeXBlPSIjLy9JQmluZGluZyI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ibmFtZSIgZVR5cGU9IiMvL1FOYW1lIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0icmVtb3ZlUG9ydFR5cGUiIGVUeXBlPSIjLy9JUG9ydFR5cGUiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im5hbWUiIGVUeXBlPSIjLy9RTmFtZSIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9InJlbW92ZU1lc3NhZ2UiIGVUeXBlPSIjLy9JTWVzc2FnZSI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ibmFtZSIgZVR5cGU9IiMvL1FOYW1lIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0VHlwZXMiIGVUeXBlPSIjLy9JVHlwZXMiLz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0ic2V0VHlwZXMiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InR5cGVzIiBlVHlwZT0iIy8vSVR5cGVzIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSUltcG9ydCIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuSW1wb3J0IgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIgZVN1cGVyVHlwZXM9IiMvL0lBdHRyaWJ1dGVFeHRlbnNpYmxlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuSW1wb3J0IG5vbi1NT0YgaW50ZXJmYWNlLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJTGlzdCIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmEudXRpbC5MaXN0IgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBub24tTU9GIGphdmEudXRpbC5MaXN0IGludGVyZmFjZS4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSU1hcCIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmEudXRpbC5NYXAiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG5vbi1NT0YgamF2YS51dGlsLk1hcCBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklVUkwiIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZhLm5ldC5VUkwiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG5vbi1NT0YgamF2YS5uZXQuVVJMIGludGVyZmFjZS4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSUV4dGVuc2lvblJlZ2lzdHJ5IiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2lvblJlZ2lzdHJ5IgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBub24tTU9GIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpb25SZWdpc3RyeSBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlR5cGVzIiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJsZUVsZW1lbnQgIy8vSVR5cGVzIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIHR5cGVzIGVsZW1lbnQuIFRoZSB0eXBlcyBlbGVtZW50IGVuY2xvc2VzIGRhdGEgdHlwZSBkZWZpbml0aW9ucyB0aGF0IGFyZSByZWxldmFudCBmb3IgdGhlIGV4Y2hhbmdlZCBtZXNzYWdlcy4iLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0U2NoZW1hcyIgZVR5cGU9IiMvL0lMaXN0Ii8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldFNjaGVtYXMiIGVUeXBlPSIjLy9JTGlzdCI+Ci0gICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0ibmFtZXNwYWNlVVJJIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUjLy9FU3RyaW5nIi8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSUl0ZXJhdG9yIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YS51dGlsLkl0ZXJhdG9yIgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSI+Ci0gICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgotICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBub24tTU9GIGphdmEudXRpbC5JdGVyYXRvciBpbnRlcmZhY2UuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFRGF0YVR5cGUiIG5hbWU9IldTRExFeGNlcHRpb24iIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLldTRExFeGNlcHRpb24iPgotICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KLSAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5FeGNlcHRpb24gY2xhc3MuIi8+Ci0gICAgPC9lQW5ub3RhdGlvbnM+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IklUeXBlcyIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuVHlwZXMiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIj4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuVHlwZXMgbm9uLU1PRiBpbnRlcmZhY2UiLz4KLSAgICA8L2VBbm5vdGF0aW9ucz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50IiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJjaGlsZHJlbiIgdXBwZXJCb3VuZD0iLTEiCi0gICAgICAgIGVUeXBlPSIjLy9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQiIGNvbnRhaW5tZW50PSJ0cnVlIi8+Ci0gIDwvZUNsYXNzaWZpZXJzPgotICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IiBlU3VwZXJUeXBlcz0iIy8vRXh0ZW5zaWJpbGl0eUVsZW1lbnQgIy8vSVNjaGVtYSI+Ci0gICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImRvY3VtZW50QmFzZVVSSSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJzY2hlbWEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgcGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS54c2QvbW9kZWwvWFNELmVjb3JlIy8vWFNEU2NoZW1hIgotICAgICAgICBjb250YWlubWVudD0idHJ1ZSIvPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBuYW1lPSJET01Eb2N1bWVudCIgaW5zdGFuY2VDbGFzc05hbWU9Im9yZy53M2MuZG9tLkRvY3VtZW50Ij4KLSAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+Ci0gICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG9yZy53M2MuZG9tLkRvY3VtZW50IG5vbi1NT0YgaW50ZXJmYWNlLiIvPgotICAgIDwvZUFubm90YXRpb25zPgotICA8L2VDbGFzc2lmaWVycz4KLSAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJNZXNzYWdlUmVmZXJlbmNlIiBhYnN0cmFjdD0idHJ1ZSIgZVN1cGVyVHlwZXM9IiMvL0V4dGVuc2libGVFbGVtZW50Ij4KLSAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibmFtZSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIy8vRVN0cmluZyIvPgotICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJlTWVzc2FnZSIgbG93ZXJCb3VuZD0iMSIKLSAgICAgICAgZVR5cGU9IiMvL01lc3NhZ2UiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSUVsZW1lbnRFeHRlbnNpYmxlIiBpbnN0YW5jZUNsYXNzTmFtZT0iamF2YXgud3NkbC5leHRlbnNpb25zLkVsZW1lbnRFeHRlbnNpYmxlIgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSI+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldEV4dGVuc2liaWxpdHlFbGVtZW50cyIgZVR5cGU9IiMvL0lMaXN0Ii8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImFkZEV4dGVuc2liaWxpdHlFbGVtZW50Ij4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJleHRFbGVtZW50IiBlVHlwZT0iIy8vSUV4dGVuc2liaWxpdHlFbGVtZW50Ii8+Ci0gICAgPC9lT3BlcmF0aW9ucz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSUF0dHJpYnV0ZUV4dGVuc2libGUiIGluc3RhbmNlQ2xhc3NOYW1lPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuQXR0cmlidXRlRXh0ZW5zaWJsZSIKLSAgICAgIGFic3RyYWN0PSJ0cnVlIiBpbnRlcmZhY2U9InRydWUiPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRFeHRlbnNpb25BdHRyaWJ1dGUiIGVUeXBlPSIjLy9JT2JqZWN0Ij4KLSAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJuYW1lIiBlVHlwZT0iIy8vUU5hbWUiLz4KLSAgICA8L2VPcGVyYXRpb25zPgotICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJzZXRFeHRlbnNpb25BdHRyaWJ1dGUiPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9Im5hbWUiIGVUeXBlPSIjLy9RTmFtZSIvPgotICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InZhbHVlIiBlVHlwZT0iIy8vSU9iamVjdCIvPgotICAgIDwvZU9wZXJhdGlvbnM+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldEV4dGVuc2lvbkF0dHJpYnV0ZXMiIGVUeXBlPSIjLy9JTWFwIi8+Ci0gICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldE5hdGl2ZUF0dHJpYnV0ZU5hbWVzIiBlVHlwZT0iIy8vSUxpc3QiLz4KLSAgPC9lQ2xhc3NpZmllcnM+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSU9iamVjdCIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmEubGFuZy5PYmplY3QiCi0gICAgICBhYnN0cmFjdD0idHJ1ZSIgaW50ZXJmYWNlPSJ0cnVlIi8+Ci0gIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSVNjaGVtYSIgaW5zdGFuY2VDbGFzc05hbWU9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hIgotICAgICAgYWJzdHJhY3Q9InRydWUiIGludGVyZmFjZT0idHJ1ZSIgZVN1cGVyVHlwZXM9IiMvL0lFeHRlbnNpYmlsaXR5RWxlbWVudCIvPgotPC9lY29yZTpFUGFja2FnZT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvV1NETC5nZW5tb2RlbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvbW9kZWwvV1NETC5nZW5tb2RlbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZjZmI1NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1dTREwuZ2VubW9kZWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxnZW5tb2RlbDpHZW5Nb2RlbCB4bWk6dmVyc2lvbj0iMi4wIgotICAgIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6ZWNvcmU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUiCi0gICAgeG1sbnM6Z2VubW9kZWw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiIG1vZGVsRGlyZWN0b3J5PSIvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwiCi0gICAgZWRpdERpcmVjdG9yeT0iL29yZy5lY2xpcHNlLndzdC53c2RsLmVkaXQvc3JjIiBlZGl0b3JEaXJlY3Rvcnk9Im9yZy5lY2xpcHNlLndzdC53c2RsLmVkaXRvci9zcmMiCi0gICAgbW9kZWxQbHVnaW5JRD0ib3JnLmVjbGlwc2Uud3N0LndzZGwiIG1vZGVsTmFtZT0iV1NETCIgbW9kZWxQbHVnaW5DbGFzcz0iIiBlZGl0UGx1Z2luQ2xhc3M9IiIKLSAgICBlZGl0b3JQbHVnaW5DbGFzcz0iIiBub25OTFNNYXJrZXJzPSJ0cnVlIiBjb2RlRm9ybWF0dGluZz0idHJ1ZSIgaW1wb3J0ZXJJRD0ib3JnLmVjbGlwc2UuZW1mLmltcG9ydGVyLnJvc2UiCi0gICAgdXNlZEdlblBhY2thZ2VzPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnhzZC9tb2RlbC9YU0QuZ2VubW9kZWwjLy94c2QiPgotICA8Zm9yZWlnbk1vZGVsPldTREwubWRsPC9mb3JlaWduTW9kZWw+Ci0gIDxmb3JlaWduTW9kZWw+VkFCQVNFX1BMVUdJTlNfUEFUSDwvZm9yZWlnbk1vZGVsPgotICA8Zm9yZWlnbk1vZGVsPi4uLy4uPC9mb3JlaWduTW9kZWw+Ci0gIDxnZW5QYWNrYWdlcyBwcmVmaXg9IldTREwiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS53c3QiIGRpc3Bvc2FibGVQcm92aWRlckZhY3Rvcnk9InRydWUiCi0gICAgICBjbGFzc1BhY2thZ2VTdWZmaXg9ImludGVybmFsLmltcGwiIHV0aWxpdHlQYWNrYWdlU3VmZml4PSJpbnRlcm5hbC51dGlsIiBlY29yZVBhY2thZ2U9IldTREwuZWNvcmUjLyI+Ci0gICAgPGdlbkRhdGFUeXBlcyBlY29yZURhdGFUeXBlPSJXU0RMLmVjb3JlIy8vUU5hbWUiLz4KLSAgICA8Z2VuRGF0YVR5cGVzIGVjb3JlRGF0YVR5cGU9IldTREwuZWNvcmUjLy9PcGVyYXRpb25UeXBlIi8+Ci0gICAgPGdlbkRhdGFUeXBlcyBlY29yZURhdGFUeXBlPSJXU0RMLmVjb3JlIy8vRE9NRWxlbWVudCIvPgotICAgIDxnZW5EYXRhVHlwZXMgZWNvcmVEYXRhVHlwZT0iV1NETC5lY29yZSMvL1dTRExFeGNlcHRpb24iLz4KLSAgICA8Z2VuRGF0YVR5cGVzIGVjb3JlRGF0YVR5cGU9IldTREwuZWNvcmUjLy9ET01Eb2N1bWVudCIvPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL1dTRExFbGVtZW50Ij4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBXU0RMLmVjb3JlIy8vV1NETEVsZW1lbnQvZG9jdW1lbnRhdGlvbkVsZW1lbnQiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBXU0RMLmVjb3JlIy8vV1NETEVsZW1lbnQvZWxlbWVudCIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9XU0RMRWxlbWVudC9nZXRFbmNsb3NpbmdEZWZpbml0aW9uIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL1dTRExFbGVtZW50L3NldEVuY2xvc2luZ0RlZmluaXRpb24iPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL1dTRExFbGVtZW50L3NldEVuY2xvc2luZ0RlZmluaXRpb24vZGVmaW5pdGlvbiIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vUG9ydFR5cGUiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9Qb3J0VHlwZS9xTmFtZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9Qb3J0VHlwZS91bmRlZmluZWQiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL1BvcnRUeXBlL2VPcGVyYXRpb25zIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9PcGVyYXRpb24iPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9PcGVyYXRpb24vc3R5bGUiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBXU0RMLmVjb3JlIy8vT3BlcmF0aW9uL25hbWUiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBXU0RMLmVjb3JlIy8vT3BlcmF0aW9uL3VuZGVmaW5lZCIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vT3BlcmF0aW9uL2VJbnB1dCIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vT3BlcmF0aW9uL2VPdXRwdXQiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL09wZXJhdGlvbi9lRmF1bHRzIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL09wZXJhdGlvbi9lUGFyYW1ldGVyT3JkZXJpbmciLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL01lc3NhZ2UiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9NZXNzYWdlL3FOYW1lIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL01lc3NhZ2UvdW5kZWZpbmVkIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9NZXNzYWdlL2VQYXJ0cyIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vUGFydCI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL1BhcnQvbmFtZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9QYXJ0L2VsZW1lbnROYW1lIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL1BhcnQvdHlwZU5hbWUiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vUGFydC90eXBlRGVmaW5pdGlvbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9QYXJ0L2VsZW1lbnREZWNsYXJhdGlvbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9QYXJ0L2VNZXNzYWdlIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9CaW5kaW5nIj4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBXU0RMLmVjb3JlIy8vQmluZGluZy9xTmFtZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9CaW5kaW5nL3VuZGVmaW5lZCIvPgotICAgICAgPGdlbkZlYXR1cmVzIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9CaW5kaW5nL2VQb3J0VHlwZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vQmluZGluZy9lQmluZGluZ09wZXJhdGlvbnMiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0JpbmRpbmdPcGVyYXRpb24iPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9CaW5kaW5nT3BlcmF0aW9uL25hbWUiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vQmluZGluZ09wZXJhdGlvbi9lT3BlcmF0aW9uIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9CaW5kaW5nT3BlcmF0aW9uL2VCaW5kaW5nSW5wdXQiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL0JpbmRpbmdPcGVyYXRpb24vZUJpbmRpbmdPdXRwdXQiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL0JpbmRpbmdPcGVyYXRpb24vZUJpbmRpbmdGYXVsdHMiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL1NlcnZpY2UiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9TZXJ2aWNlL3FOYW1lIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL1NlcnZpY2UvdW5kZWZpbmVkIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9TZXJ2aWNlL2VQb3J0cyIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vUG9ydCI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL1BvcnQvbmFtZSIvPgotICAgICAgPGdlbkZlYXR1cmVzIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9Qb3J0L2VCaW5kaW5nIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9FeHRlbnNpYmlsaXR5RWxlbWVudCI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL0V4dGVuc2liaWxpdHlFbGVtZW50L3JlcXVpcmVkIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL0V4dGVuc2liaWxpdHlFbGVtZW50L2VsZW1lbnRUeXBlIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9EZWZpbml0aW9uIj4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBXU0RMLmVjb3JlIy8vRGVmaW5pdGlvbi90YXJnZXROYW1lc3BhY2UiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBXU0RMLmVjb3JlIy8vRGVmaW5pdGlvbi9sb2NhdGlvbiIvPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9EZWZpbml0aW9uL3FOYW1lIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL0RlZmluaXRpb24vZW5jb2RpbmciLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL0RlZmluaXRpb24vZUltcG9ydHMiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL0RlZmluaXRpb24vZVR5cGVzIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9EZWZpbml0aW9uL2VNZXNzYWdlcyIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vRGVmaW5pdGlvbi9lUG9ydFR5cGVzIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9EZWZpbml0aW9uL2VCaW5kaW5ncyIvPgotICAgICAgPGdlbkZlYXR1cmVzIHByb3BlcnR5PSJOb25lIiBjaGlsZHJlbj0idHJ1ZSIgY3JlYXRlQ2hpbGQ9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vRGVmaW5pdGlvbi9lU2VydmljZXMiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL0RlZmluaXRpb24vZU5hbWVzcGFjZXMiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vRGVmaW5pdGlvbi9nZXREb2N1bWVudCIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9EZWZpbml0aW9uL3NldERvY3VtZW50Ij4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9EZWZpbml0aW9uL3NldERvY3VtZW50L2RvY3VtZW50Ii8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JbXBvcnQiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9JbXBvcnQvbmFtZXNwYWNlVVJJIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL0ltcG9ydC9sb2NhdGlvblVSSSIvPgotICAgICAgPGdlbkZlYXR1cmVzIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9JbXBvcnQvZURlZmluaXRpb24iLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vSW1wb3J0L2VTY2hlbWEiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSW1wb3J0L2dldFNjaGVtYSIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JbXBvcnQvc2V0U2NoZW1hIj4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JbXBvcnQvc2V0U2NoZW1hL3NjaGVtYSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9FeHRlbnNpYmxlRWxlbWVudCI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgcHJvcGVydHk9Ik5vbmUiIGNoaWxkcmVuPSJ0cnVlIiBjcmVhdGVDaGlsZD0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIFdTREwuZWNvcmUjLy9FeHRlbnNpYmxlRWxlbWVudC9lRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIi8+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JbnB1dCIvPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9PdXRwdXQiLz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vRmF1bHQiLz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vQmluZGluZ0lucHV0Ij4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBXU0RMLmVjb3JlIy8vQmluZGluZ0lucHV0L25hbWUiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vQmluZGluZ0lucHV0L2VJbnB1dCIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9CaW5kaW5nSW5wdXQvZ2V0SW5wdXQiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vQmluZGluZ0lucHV0L3NldElucHV0Ij4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9CaW5kaW5nSW5wdXQvc2V0SW5wdXQvaW5wdXQiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0JpbmRpbmdPdXRwdXQiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9CaW5kaW5nT3V0cHV0L25hbWUiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBXU0RMLmVjb3JlIy8vQmluZGluZ091dHB1dC9lT3V0cHV0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0JpbmRpbmdPdXRwdXQvZ2V0T3V0cHV0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0JpbmRpbmdPdXRwdXQvc2V0T3V0cHV0Ij4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9CaW5kaW5nT3V0cHV0L3NldE91dHB1dC9vdXRwdXQiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0JpbmRpbmdGYXVsdCI+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL0JpbmRpbmdGYXVsdC9uYW1lIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL0JpbmRpbmdGYXVsdC9lRmF1bHQiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vQmluZGluZ0ZhdWx0L2dldEZhdWx0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0JpbmRpbmdGYXVsdC9zZXRGYXVsdCI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vQmluZGluZ0ZhdWx0L3NldEZhdWx0L2ZhdWx0Ii8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9OYW1lc3BhY2UiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9OYW1lc3BhY2UvVVJJIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgV1NETC5lY29yZSMvL05hbWVzcGFjZS9wcmVmaXgiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vSVBvcnRUeXBlIj4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSVBvcnRUeXBlL2FkZE9wZXJhdGlvbiI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSVBvcnRUeXBlL2FkZE9wZXJhdGlvbi9vcGVyYXRpb24iLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSVBvcnRUeXBlL2dldE9wZXJhdGlvbiI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSVBvcnRUeXBlL2dldE9wZXJhdGlvbi9uYW1lIi8+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSVBvcnRUeXBlL2dldE9wZXJhdGlvbi9pbnB1dE5hbWUiLz4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JUG9ydFR5cGUvZ2V0T3BlcmF0aW9uL291dHB1dE5hbWUiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSVBvcnRUeXBlL2dldE9wZXJhdGlvbnMiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vSU9wZXJhdGlvbiI+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lPcGVyYXRpb24vYWRkRmF1bHQiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lPcGVyYXRpb24vYWRkRmF1bHQvZmF1bHQiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSU9wZXJhdGlvbi9nZXRGYXVsdCI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSU9wZXJhdGlvbi9nZXRGYXVsdC9uYW1lIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lPcGVyYXRpb24vZ2V0RmF1bHRzIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lPcGVyYXRpb24vZ2V0UGFyYW1ldGVyT3JkZXJpbmciLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSU9wZXJhdGlvbi9zZXRQYXJhbWV0ZXJPcmRlcmluZyI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSU9wZXJhdGlvbi9zZXRQYXJhbWV0ZXJPcmRlcmluZy9wYXJhbWV0ZXJPcmRlciIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JT3BlcmF0aW9uL2dldElucHV0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lPcGVyYXRpb24vc2V0SW5wdXQiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lPcGVyYXRpb24vc2V0SW5wdXQvaW5wdXQiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSU9wZXJhdGlvbi9nZXRPdXRwdXQiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSU9wZXJhdGlvbi9zZXRPdXRwdXQiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lPcGVyYXRpb24vc2V0T3V0cHV0L291dHB1dCIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JSW5wdXQiPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JSW5wdXQvZ2V0TWVzc2FnZSIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JSW5wdXQvc2V0TWVzc2FnZSI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSUlucHV0L3NldE1lc3NhZ2UvbWVzc2FnZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JT3V0cHV0Ij4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSU91dHB1dC9nZXRNZXNzYWdlIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lPdXRwdXQvc2V0TWVzc2FnZSI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSU91dHB1dC9zZXRNZXNzYWdlL21lc3NhZ2UiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vSUZhdWx0Ij4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSUZhdWx0L2dldE1lc3NhZ2UiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSUZhdWx0L3NldE1lc3NhZ2UiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lGYXVsdC9zZXRNZXNzYWdlL21lc3NhZ2UiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vSU1lc3NhZ2UiPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JTWVzc2FnZS9hZGRQYXJ0Ij4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JTWVzc2FnZS9hZGRQYXJ0L3BhcnQiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSU1lc3NhZ2UvZ2V0UGFydCI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSU1lc3NhZ2UvZ2V0UGFydC9uYW1lIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lNZXNzYWdlL2dldFBhcnRzIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lNZXNzYWdlL2dldE9yZGVyZWRQYXJ0cyI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSU1lc3NhZ2UvZ2V0T3JkZXJlZFBhcnRzL3BhcnRPcmRlciIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JUGFydCIvPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0lTZXJ2aWNlIj4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSVNlcnZpY2UvYWRkUG9ydCI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSVNlcnZpY2UvYWRkUG9ydC9wb3J0Ii8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lTZXJ2aWNlL2dldFBvcnRzIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lTZXJ2aWNlL2dldFBvcnQiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lTZXJ2aWNlL2dldFBvcnQvbmFtZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JUG9ydCI+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lQb3J0L2dldEJpbmRpbmciLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSVBvcnQvc2V0QmluZGluZyI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSVBvcnQvc2V0QmluZGluZy9iaW5kaW5nIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0lCaW5kaW5nIj4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSUJpbmRpbmcvYWRkQmluZGluZ09wZXJhdGlvbiI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSUJpbmRpbmcvYWRkQmluZGluZ09wZXJhdGlvbi9iaW5kaW5nT3BlcmF0aW9uIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lCaW5kaW5nL2dldEJpbmRpbmdPcGVyYXRpb24iPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lCaW5kaW5nL2dldEJpbmRpbmdPcGVyYXRpb24vbmFtZSIvPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lCaW5kaW5nL2dldEJpbmRpbmdPcGVyYXRpb24vaW5wdXROYW1lIi8+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSUJpbmRpbmcvZ2V0QmluZGluZ09wZXJhdGlvbi9vdXRwdXROYW1lIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lCaW5kaW5nL2dldEJpbmRpbmdPcGVyYXRpb25zIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lCaW5kaW5nL2dldFBvcnRUeXBlIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lCaW5kaW5nL3NldFBvcnRUeXBlIj4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JQmluZGluZy9zZXRQb3J0VHlwZS9wb3J0VHlwZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JQmluZGluZ09wZXJhdGlvbiI+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lCaW5kaW5nT3BlcmF0aW9uL2FkZEJpbmRpbmdGYXVsdCI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSUJpbmRpbmdPcGVyYXRpb24vYWRkQmluZGluZ0ZhdWx0L2JpbmRpbmdGYXVsdCIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JQmluZGluZ09wZXJhdGlvbi9nZXRCaW5kaW5nRmF1bHQiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lCaW5kaW5nT3BlcmF0aW9uL2dldEJpbmRpbmdGYXVsdC9uYW1lIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lCaW5kaW5nT3BlcmF0aW9uL2dldEJpbmRpbmdGYXVsdHMiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSUJpbmRpbmdPcGVyYXRpb24vZ2V0T3BlcmF0aW9uIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lCaW5kaW5nT3BlcmF0aW9uL3NldE9wZXJhdGlvbiI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSUJpbmRpbmdPcGVyYXRpb24vc2V0T3BlcmF0aW9uL29wZXJhdGlvbiIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JQmluZGluZ09wZXJhdGlvbi9nZXRCaW5kaW5nSW5wdXQiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSUJpbmRpbmdPcGVyYXRpb24vc2V0QmluZGluZ0lucHV0Ij4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JQmluZGluZ09wZXJhdGlvbi9zZXRCaW5kaW5nSW5wdXQvYmluZGluZ0lucHV0Ii8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lCaW5kaW5nT3BlcmF0aW9uL2dldEJpbmRpbmdPdXRwdXQiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSUJpbmRpbmdPcGVyYXRpb24vc2V0QmluZGluZ091dHB1dCI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSUJpbmRpbmdPcGVyYXRpb24vc2V0QmluZGluZ091dHB1dC9iaW5kaW5nT3V0cHV0Ii8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0lCaW5kaW5nSW5wdXQiLz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JQmluZGluZ091dHB1dCIvPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0lCaW5kaW5nRmF1bHQiLz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JRXh0ZW5zaWJpbGl0eUVsZW1lbnQiLz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbiI+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2FkZEJpbmRpbmciPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2FkZEJpbmRpbmcvYmluZGluZyIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9hZGRJbXBvcnQiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2FkZEltcG9ydC9pbXBvcnREZWYiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vYWRkTWVzc2FnZSI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vYWRkTWVzc2FnZS9tZXNzYWdlIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2FkZE5hbWVzcGFjZSI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vYWRkTmFtZXNwYWNlL3ByZWZpeCIvPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2FkZE5hbWVzcGFjZS9uYW1lc3BhY2VVUkkiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vYWRkUG9ydFR5cGUiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2FkZFBvcnRUeXBlL3BvcnRUeXBlIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2FkZFNlcnZpY2UiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2FkZFNlcnZpY2Uvc2VydmljZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9jcmVhdGVCaW5kaW5nRmF1bHQiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vY3JlYXRlQmluZGluZ0lucHV0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2NyZWF0ZUJpbmRpbmdPdXRwdXQiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vY3JlYXRlQmluZGluZ09wZXJhdGlvbiIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9jcmVhdGVCaW5kaW5nIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2NyZWF0ZUZhdWx0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2NyZWF0ZUltcG9ydCIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9jcmVhdGVJbnB1dCIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9jcmVhdGVNZXNzYWdlIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2NyZWF0ZU9wZXJhdGlvbiIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9jcmVhdGVPdXRwdXQiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vY3JlYXRlUGFydCIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9jcmVhdGVQb3J0Ii8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2NyZWF0ZVBvcnRUeXBlIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2NyZWF0ZVNlcnZpY2UiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vZ2V0QmluZGluZyI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vZ2V0QmluZGluZy9uYW1lIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2dldEJpbmRpbmdzIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2dldEltcG9ydHMiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vZ2V0SW1wb3J0cy4xIj4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9nZXRJbXBvcnRzLjEvbmFtZXNwYWNlVVJJIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2dldE1lc3NhZ2UiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2dldE1lc3NhZ2UvbmFtZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9nZXRNZXNzYWdlcyIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9nZXROYW1lc3BhY2UiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2dldE5hbWVzcGFjZS9wcmVmaXgiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vZ2V0TmFtZXNwYWNlcyIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9nZXRQb3J0VHlwZSI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vZ2V0UG9ydFR5cGUvbmFtZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9nZXRQb3J0VHlwZXMiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vZ2V0UHJlZml4Ij4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9nZXRQcmVmaXgvbmFtZXNwYWNlVVJJIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2dldFNlcnZpY2UiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL2dldFNlcnZpY2UvbmFtZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9nZXRTZXJ2aWNlcyIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9nZXRFeHRlbnNpb25SZWdpc3RyeSIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9zZXRFeHRlbnNpb25SZWdpc3RyeSI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vc2V0RXh0ZW5zaW9uUmVnaXN0cnkvZXh0ZW5zaW9uUmVnaXN0cnkiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vZ2V0RG9jdW1lbnRCYXNlVVJJIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL3NldERvY3VtZW50QmFzZVVSSSI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vc2V0RG9jdW1lbnRCYXNlVVJJL2RvY3VtZW50QmFzZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9jcmVhdGVUeXBlcyIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9yZW1vdmVTZXJ2aWNlIj4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9yZW1vdmVTZXJ2aWNlL25hbWUiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vcmVtb3ZlQmluZGluZyI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vcmVtb3ZlQmluZGluZy9uYW1lIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL3JlbW92ZVBvcnRUeXBlIj4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9yZW1vdmVQb3J0VHlwZS9uYW1lIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL3JlbW92ZU1lc3NhZ2UiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lEZWZpbml0aW9uL3JlbW92ZU1lc3NhZ2UvbmFtZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9nZXRUeXBlcyIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRGVmaW5pdGlvbi9zZXRUeXBlcyI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSURlZmluaXRpb24vc2V0VHlwZXMvdHlwZXMiLz4KLSAgICAgIDwvZ2VuT3BlcmF0aW9ucz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vSUltcG9ydCIvPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0lMaXN0Ii8+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vSU1hcCIvPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0lVUkwiLz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JRXh0ZW5zaW9uUmVnaXN0cnkiLz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vVHlwZXMiPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9UeXBlcy9nZXRTY2hlbWFzIi8+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL1R5cGVzL2dldFNjaGVtYXMuMSI+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vVHlwZXMvZ2V0U2NoZW1hcy4xL25hbWVzcGFjZVVSSSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JSXRlcmF0b3IiLz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9JVHlwZXMiLz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Ij4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC9jaGlsZHJlbiIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPgotICAgICAgPGdlbkZlYXR1cmVzIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIFdTREwuZWNvcmUjLy9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC9kb2N1bWVudEJhc2VVUkkiLz4KLSAgICAgIDxnZW5GZWF0dXJlcyBwcm9wZXJ0eT0iTm9uZSIgY2hpbGRyZW49InRydWUiIGNyZWF0ZUNoaWxkPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50L3NjaGVtYSIvPgotICAgIDwvZ2VuQ2xhc3Nlcz4KLSAgICA8Z2VuQ2xhc3NlcyBpbWFnZT0iZmFsc2UiIGVjb3JlQ2xhc3M9IldTREwuZWNvcmUjLy9NZXNzYWdlUmVmZXJlbmNlIj4KLSAgICAgIDxnZW5GZWF0dXJlcyBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBXU0RMLmVjb3JlIy8vTWVzc2FnZVJlZmVyZW5jZS9uYW1lIi8+Ci0gICAgICA8Z2VuRmVhdHVyZXMgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2UgV1NETC5lY29yZSMvL01lc3NhZ2VSZWZlcmVuY2UvZU1lc3NhZ2UiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vSUVsZW1lbnRFeHRlbnNpYmxlIj4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSUVsZW1lbnRFeHRlbnNpYmxlL2dldEV4dGVuc2liaWxpdHlFbGVtZW50cyIvPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JRWxlbWVudEV4dGVuc2libGUvYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lFbGVtZW50RXh0ZW5zaWJsZS9hZGRFeHRlbnNpYmlsaXR5RWxlbWVudC9leHRFbGVtZW50Ii8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgPC9nZW5DbGFzc2VzPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0lBdHRyaWJ1dGVFeHRlbnNpYmxlIj4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSUF0dHJpYnV0ZUV4dGVuc2libGUvZ2V0RXh0ZW5zaW9uQXR0cmlidXRlIj4KLSAgICAgICAgPGdlblBhcmFtZXRlcnMgZWNvcmVQYXJhbWV0ZXI9IldTREwuZWNvcmUjLy9JQXR0cmlidXRlRXh0ZW5zaWJsZS9nZXRFeHRlbnNpb25BdHRyaWJ1dGUvbmFtZSIvPgotICAgICAgPC9nZW5PcGVyYXRpb25zPgotICAgICAgPGdlbk9wZXJhdGlvbnMgZWNvcmVPcGVyYXRpb249IldTREwuZWNvcmUjLy9JQXR0cmlidXRlRXh0ZW5zaWJsZS9zZXRFeHRlbnNpb25BdHRyaWJ1dGUiPgotICAgICAgICA8Z2VuUGFyYW1ldGVycyBlY29yZVBhcmFtZXRlcj0iV1NETC5lY29yZSMvL0lBdHRyaWJ1dGVFeHRlbnNpYmxlL3NldEV4dGVuc2lvbkF0dHJpYnV0ZS9uYW1lIi8+Ci0gICAgICAgIDxnZW5QYXJhbWV0ZXJzIGVjb3JlUGFyYW1ldGVyPSJXU0RMLmVjb3JlIy8vSUF0dHJpYnV0ZUV4dGVuc2libGUvc2V0RXh0ZW5zaW9uQXR0cmlidXRlL3ZhbHVlIi8+Ci0gICAgICA8L2dlbk9wZXJhdGlvbnM+Ci0gICAgICA8Z2VuT3BlcmF0aW9ucyBlY29yZU9wZXJhdGlvbj0iV1NETC5lY29yZSMvL0lBdHRyaWJ1dGVFeHRlbnNpYmxlL2dldEV4dGVuc2lvbkF0dHJpYnV0ZXMiLz4KLSAgICAgIDxnZW5PcGVyYXRpb25zIGVjb3JlT3BlcmF0aW9uPSJXU0RMLmVjb3JlIy8vSUF0dHJpYnV0ZUV4dGVuc2libGUvZ2V0TmF0aXZlQXR0cmlidXRlTmFtZXMiLz4KLSAgICA8L2dlbkNsYXNzZXM+Ci0gICAgPGdlbkNsYXNzZXMgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJXU0RMLmVjb3JlIy8vSU9iamVjdCIvPgotICAgIDxnZW5DbGFzc2VzIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0iV1NETC5lY29yZSMvL0lTY2hlbWEiLz4KLSAgPC9nZW5QYWNrYWdlcz4KLTwvZ2VubW9kZWw6R2VuTW9kZWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1dTREwubWRsIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9XU0RMLm1kbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU2ZjA3My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL1dTREwubWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzg1MCArMCwwIEBACi0KLShvYmplY3QgUGV0YWwKLSAgICB2ZXJzaW9uICAgIAk0MgotICAgIF93cml0dGVuICAgCSJSb3NlIDQuNS44MTYzLjMiCi0gICAgY2hhclNldCAgICAJMCkKLQotKG9iamVjdCBEZXNpZ24gIkxvZ2ljYWwgVmlldyIKLSAgICBpc191bml0ICAgIAlUUlVFCi0gICAgaXNfbG9hZGVkICAJVFJVRQotICAgIGRlZmF1bHRzICAgCShvYmplY3QgZGVmYXVsdHMKLQlyaWdodE1hcmdpbiAJMC4yNTAwMDAKLQlsZWZ0TWFyZ2luIAkwLjI1MDAwMAotCXRvcE1hcmdpbiAgCTAuMjUwMDAwCi0JYm90dG9tTWFyZ2luIAkwLjUwMDAwMAotCXBhZ2VPdmVybGFwIAkwLjI1MDAwMAotCWNsaXBJY29uTGFiZWxzIAlUUlVFCi0JYXV0b1Jlc2l6ZSAJVFJVRQotCXNuYXBUb0dyaWQgCVRSVUUKLQlncmlkWCAgICAgIAkxNgotCWdyaWRZICAgICAgCTE2Ci0JZGVmYXVsdEZvbnQgCShvYmplY3QgRm9udAotCSAgICBzaXplICAgICAgIAkxMAotCSAgICBmYWNlICAgICAgIAkiQXJpYWwiCi0JICAgIGJvbGQgICAgICAgCUZBTFNFCi0JICAgIGl0YWxpY3MgICAgCUZBTFNFCi0JICAgIHVuZGVybGluZSAgCUZBTFNFCi0JICAgIHN0cmlrZSAgICAgCUZBTFNFCi0JICAgIGNvbG9yICAgICAgCTAKLQkgICAgZGVmYXVsdF9jb2xvciAJVFJVRSkKLQlzaG93TWVzc2FnZU51bSAJMQotCXNob3dDbGFzc09mT2JqZWN0IAlUUlVFCi0Jbm90YXRpb24gICAJIlVuaWZpZWQiKQotICAgIHJvb3RfdXNlY2FzZV9wYWNrYWdlIAkob2JqZWN0IENsYXNzX0NhdGVnb3J5ICJVc2UgQ2FzZSBWaWV3IgotCXF1aWQgICAgICAgCSIzOUUyN0YwODAwNjQiCi0JZXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQlnbG9iYWwgICAgIAlUUlVFCi0JbG9naWNhbF9tb2RlbHMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QpCi0JbG9naWNhbF9wcmVzZW50YXRpb25zIAkobGlzdCB1bml0X3JlZmVyZW5jZV9saXN0Ci0JICAgIChvYmplY3QgVXNlQ2FzZURpYWdyYW0gIk1haW4iCi0JCXF1aWQgICAgICAgCSIzOUUyN0YwODAwNzgiCi0JCXRpdGxlICAgICAgCSJNYWluIgotCQl6b29tICAgICAgIAkxMDAKLQkJbWF4X2hlaWdodCAJMjgzNTAKLQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJb3JpZ2luX3ggICAJMAotCQlvcmlnaW5feSAgIAkwCi0JCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0KSkpKQotICAgIHJvb3RfY2F0ZWdvcnkgCShvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgIkxvZ2ljYWwgVmlldyIKLQlxdWlkICAgICAgIAkiMzlFMjdGMDgwMDYzIgotCWV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JZ2xvYmFsICAgICAJVFJVRQotCXN1YnN5c3RlbSAgCSJDb21wb25lbnQgVmlldyIKLQlxdWlkdSAgICAgIAkiMzlFMjdGMDgwMDY1IgotCWxvZ2ljYWxfbW9kZWxzIAkobGlzdCB1bml0X3JlZmVyZW5jZV9saXN0Ci0JICAgIChvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgIndzZGwiCi0JCWlzX3VuaXQgICAgCVRSVUUKLQkJaXNfbG9hZGVkICAJRkFMU0UKLQkJZmlsZV9uYW1lICAJIiRWQUJBU0VfUExVR0lOU19QQVRIXFxvcmcuZWNsaXBzZS53c3Qud3NkbFxcbW9kZWxcXG9yZy5lY2xpcHNlLndzdC5XU0RMLmNhdCIKLQkJcXVpZCAgICAgICAJIjNBREZCOEU1MDIxRSIpCi0JICAgIChvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgInhzZCIKLQkJaXNfdW5pdCAgICAJVFJVRQotCQlpc19sb2FkZWQgIAlGQUxTRQotCQlmaWxlX25hbWUgIAkiJFZBQkFTRV9QTFVHSU5TX1BBVEhcXG9yZy5lY2xpcHNlLnhzZFxcbW9kZWxcXG9yZy5lY2xpcHNlLlhTRC5jYXQiCi0JCXF1aWQgICAgICAgCSIzOUFCREM2RjAxQUEiKSkKLQlsb2dpY2FsX3ByZXNlbnRhdGlvbnMgCShsaXN0IHVuaXRfcmVmZXJlbmNlX2xpc3QKLQkgICAgKG9iamVjdCBDbGFzc0RpYWdyYW0gIk1haW4iCi0JCXF1aWQgICAgICAgCSIzOUUyN0YwODAwNzYiCi0JCXRpdGxlICAgICAgCSJNYWluIgotCQl6b29tICAgICAgIAkxMDAKLQkJbWF4X2hlaWdodCAJMjgzNTAKLQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJb3JpZ2luX3ggICAJMAotCQlvcmlnaW5feSAgIAkwCi0JCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0Ci0JCSAgICAob2JqZWN0IENhdGVnb3J5VmlldyAiTG9naWNhbCBWaWV3Ojp3c2RsIiBAMQotCQkJbG9jYXRpb24gICAJKDI3MiwgMjU2KQotCQkJbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCSAgICBQYXJlbnRfVmlldyAJQDEKLQkJCSAgICBsb2NhdGlvbiAgIAkoMTI4LCAxNzIpCi0JCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCSAgICBubGluZXMgICAgIAkyCi0JCQkgICAgbWF4X3dpZHRoICAJMjg4Ci0JCQkgICAganVzdGlmeSAgICAJMAotCQkJICAgIGxhYmVsICAgICAgCSJ3c2RsIikKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCXF1aWR1ICAgICAgCSIzQURGQjhFNTAyMUUiCi0JCQl3aWR0aCAgICAgIAkzMDAKLQkJCWhlaWdodCAgICAgCTE4MCkKLQkJICAgIChvYmplY3QgQ2F0ZWdvcnlWaWV3ICJMb2dpY2FsIFZpZXc6OnhzZCIgQDIKLQkJCWxvY2F0aW9uICAgCSgyNzIsIDU3NikKLQkJCWxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAyCi0JCQkgICAgbG9jYXRpb24gICAJKDEyOCwgNDkyKQotCQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQkgICAgbmxpbmVzICAgICAJMgotCQkJICAgIG1heF93aWR0aCAgCTI4OAotCQkJICAgIGp1c3RpZnkgICAgCTAKLQkJCSAgICBsYWJlbCAgICAgIAkieHNkIikKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCXF1aWR1ICAgICAgCSIzOUFCREM2RjAxQUEiCi0JCQl3aWR0aCAgICAgIAkzMDAKLQkJCWhlaWdodCAgICAgCTE4MCkpKSkpCi0gICAgcm9vdF9zdWJzeXN0ZW0gCShvYmplY3QgU3ViU3lzdGVtICJDb21wb25lbnQgVmlldyIKLQlxdWlkICAgICAgIAkiMzlFMjdGMDgwMDY1IgotCXBoeXNpY2FsX21vZGVscyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdCkKLQlwaHlzaWNhbF9wcmVzZW50YXRpb25zIAkobGlzdCB1bml0X3JlZmVyZW5jZV9saXN0Ci0JICAgIChvYmplY3QgTW9kdWxlX0RpYWdyYW0gIk1haW4iCi0JCXF1aWQgICAgICAgCSIzOUUyN0YwODAwNzciCi0JCXRpdGxlICAgICAgCSJNYWluIgotCQl6b29tICAgICAgIAkxMDAKLQkJbWF4X2hlaWdodCAJMjgzNTAKLQkJbWF4X3dpZHRoICAJMjE2MDAKLQkJb3JpZ2luX3ggICAJMAotCQlvcmlnaW5feSAgIAkwCi0JCWl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0KSkpKQotICAgIHByb2Nlc3Nfc3RydWN0dXJlIAkob2JqZWN0IFByb2Nlc3NlcwotCXF1aWQgICAgICAgCSIzOUUyN0YwODAwNjYiCi0JUHJvY3NORGV2cyAJKGxpc3QKLQkgICAgKG9iamVjdCBQcm9jZXNzX0RpYWdyYW0gIkRlcGxveW1lbnQgVmlldyIKLQkJcXVpZCAgICAgICAJIjM5RTI3RjA4MDA2OCIKLQkJdGl0bGUgICAgICAJIkRlcGxveW1lbnQgVmlldyIKLQkJem9vbSAgICAgICAJMTAwCi0JCW1heF9oZWlnaHQgCTI4MzUwCi0JCW1heF93aWR0aCAgCTIxNjAwCi0JCW9yaWdpbl94ICAgCTAKLQkJb3JpZ2luX3kgICAJMAotCQlpdGVtcyAgICAgIAkobGlzdCBkaWFncmFtX2l0ZW1fbGlzdCkpKSkKLSAgICBwcm9wZXJ0aWVzIAkob2JqZWN0IFByb3BlcnRpZXMKLQlhdHRyaWJ1dGVzIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJEREwiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkRETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1Byb2plY3QiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkRpcmVjdG9yeSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkRhdGFCYXNlIgotCQkJdmFsdWUgICAgICAJKCJEYXRhQmFzZVNldCIgODAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkRhdGFCYXNlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCQluYW1lICAgICAgIAkiQU5TSSIKLQkJCQl2YWx1ZSAgICAgIAk4MDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRERMIgotCQkJCW5hbWUgICAgICAgCSJPcmFjbGUiCi0JCQkJdmFsdWUgICAgICAJODAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCQluYW1lICAgICAgIAkiU1FMU2VydmVyIgotCQkJCXZhbHVlICAgICAgCTgwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQkJbmFtZSAgICAgICAJIlN5YmFzZSIKLQkJCQl2YWx1ZSAgICAgIAk4MDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRERMIgotCQkJCW5hbWUgICAgICAgCSJXYXRjb20iCi0JCQkJdmFsdWUgICAgICAJODA0KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5Q29sdW1uTmFtZSIKLQkJCXZhbHVlICAgICAgCSJJZCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5Q29sdW1uVHlwZSIKLQkJCXZhbHVlICAgICAgCSJOVU1CRVIoNSkiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiVmlld05hbWUiCi0JCQl2YWx1ZSAgICAgIAkiVl8iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiVGFibGVOYW1lIgotCQkJdmFsdWUgICAgICAJIlRfIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkluaGVyaXRTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiX1YiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiRHJvcENsYXVzZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiQmFzZVZpZXdzIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJERExTY3JpcHRGaWxlbmFtZSIKLQkJCXZhbHVlICAgICAgCSJEREwxLlNRTCIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkRETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiQ29sdW1uVHlwZSIKLQkJCXZhbHVlICAgICAgCSJWQVJDSEFSIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkxlbmd0aCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiTnVsbHNPSyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkRETCIKLQkJCW5hbWUgICAgICAgCSJVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRERMIgotCQkJbmFtZSAgICAgICAJIkNvbXBvc2l0ZVVuaXF1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJEREwiCi0JCQluYW1lICAgICAgIAkiQ2hlY2tDb25zdHJhaW50IgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkRETCIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiZnJhbWV3b3JrIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1Byb2plY3QiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNyZWF0ZU1pc3NpbmdEaXJlY3RvcmllcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJTdG9wT25FcnJvciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVByZXNlcnZlUmVnaW9ucyIKLQkJCXZhbHVlICAgICAgCVRSVUUpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNvbnN0VmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdFNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdFNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSURMRWxlbWVudCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJRExTcGVjaWZpY2F0aW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiSURMU3BlY1NldCIgMjIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiSURMU3BlY1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIkludGVyZmFjZSIKLQkJCQl2YWx1ZSAgICAgIAkyMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIlR5cGVkZWYiCi0JCQkJdmFsdWUgICAgICAJNTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJFbnVtZXJhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAk4KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiQ29uc3QiCi0JCQkJdmFsdWUgICAgICAJNzEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJFeGNlcHRpb24iCi0JCQkJdmFsdWUgICAgICAJNjEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJTdHJ1Y3QiCi0JCQkJdmFsdWUgICAgICAJNTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJVbmlvbiIKLQkJCQl2YWx1ZSAgICAgIAk4MSkpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ21JZGVudGlmaWNhdGlvbiIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIgICVYJSAgQCgjKSBwbHVnaW5zL2NvbS5pYm0uZXRvb2xzLmN0Yy5zZXJ2aWNlcy9zcmMvcm9zZS93c2RsTWRsLm1kbCwgY3RjLCBpYm1jdGMiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNvcHlyaWdodE5vdGljZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkZpbGVOYW1lIgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJRExNb2R1bGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkluY2x1c2lvblByb3RlY3Rpb25TeW1ib2wiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW5jbHVkZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlQnlTaW1wbGVOYW1lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1Cb2R5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICBAKCMpIHBsdWdpbnMvY29tLmlibS5ldG9vbHMuY3RjLnNlcnZpY2VzL3NyYy9yb3NlL3dzZGxNZGwubWRsLCBjdGMsIGlibWN0YyIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRmlsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJBZGRpdGlvbmFsSW5jbHVkZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlQnlTaW1wbGVOYW1lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX09wZXJhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiT3BlcmF0aW9uSXNPbmVXYXkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNvbnRleHQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIlJhaXNlcyIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19BdHRyaWJ1dGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNhc2VTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIklzUmVhZE9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIklzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkNvbnN0VmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fSGFzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlXyRzdXBwbGllciIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJHJlbGF0aW9uc2hpcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIklzUmVhZE9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkJvdW5kZWRIYXNSZWxUeXBlIgotCQkJdmFsdWUgICAgICAJKCJIYXNSZWxUeXBlU2V0IiA0NykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJIYXNSZWxUeXBlU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIklETCIKLQkJCQluYW1lICAgICAgIAkiQXJyYXkiCi0JCQkJdmFsdWUgICAgICAJMjQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJTZXF1ZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAk0NykpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Sb2xlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlXyRzdXBwbGllciIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJHJlbGF0aW9uc2hpcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIklzUmVhZE9ubHkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkJvdW5kZWRSb2xlVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiQXNzb2NUeXBlU2V0IiA0NykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIklETCIKLQkJCW5hbWUgICAgICAgCSJBc3NvY1R5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSURMIgotCQkJCW5hbWUgICAgICAgCSJBcnJheSIKLQkJCQl2YWx1ZSAgICAgIAkyNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJJREwiCi0JCQkJbmFtZSAgICAgICAJIlNlcXVlbmNlIgotCQkJCXZhbHVlICAgICAgCTQ3KSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIklETCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1VzZXMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJJREwiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19TdWJzeXN0ZW0iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSURMIgotCQkJbmFtZSAgICAgICAJIkRpcmVjdG9yeSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSURMIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjgwOTEzNTk2NiIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUHJvamVjdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNyZWF0ZU1pc3NpbmdEaXJlY3RvcmllcyIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU3RvcE9uRXJyb3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiQVVUTyBHRU5FUkFURSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVXNlUHJlZml4ZXMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJJbnN0YW5jZVZhcmlhYmxlUHJlZml4IgotCQkJdmFsdWUgICAgICAJIm1fIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDbGFzc1ZhcmlhYmxlUHJlZml4IgotCQkJdmFsdWUgICAgICAJInNfIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEZWZhdWx0QXR0cmlidXRlRGF0YVR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiaW50IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJEZWZhdWx0T3BlcmF0aW9uUmV0dXJuVHlwZSIKLQkJCXZhbHVlICAgICAgCSJ2b2lkIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRmluYWwiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlZmF1bHRDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ29uc3RydWN0b3JJcyIKLQkJCXZhbHVlICAgICAgCSgiQ3Rvcl9TZXQiIDYyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDdG9yX1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNjIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTYzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQkJbmFtZSAgICAgICAJIlByaXZhdGUiCi0JCQkJdmFsdWUgICAgICAJNjQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZpbmFsaXplciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU3RhdGljSW5pdGlhbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluc3RhbmNlSW5pdGlhbGl6ZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1TcGVjIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGUiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNtSWRlbnRpZmljYXRpb24iCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbXBvcnRzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fTW9kdWxlLUJvZHkiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQ21JZGVudGlmaWNhdGlvbiIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJDb3B5cmlnaHROb3RpY2UiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiQWRkaXRpb25hbEltcG9ydHMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiTmF0aXZlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiU3luY2hyb25pemVkIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkphdmEiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19BdHRyaWJ1dGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkZpbmFsIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVHJhbnNpZW50IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiSmF2YSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJKYXZhIgotCQkJbmFtZSAgICAgICAJIkNvbnRhaW5lckNsYXNzIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiSW5pdGlhbFZhbHVlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkphdmEiCi0JCQluYW1lICAgICAgIAkiRmluYWwiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJUcmFuc2llbnQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiSmF2YSIKLQkJCW5hbWUgICAgICAgCSJWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJKYXZhIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjM2MDAwMDAwMiIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUHJvamVjdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkRETFNjcmlwdEZpbGVuYW1lIgotCQkJdmFsdWUgICAgICAJIkRETDEuU1FMIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJEcm9wQ2xhdXNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiUHJpbWFyeUtleUNvbHVtbk5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiX0lEIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJQcmltYXJ5S2V5Q29sdW1uVHlwZSIKLQkJCXZhbHVlICAgICAgCSJOVU1CRVIoNSwwKSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiU2NoZW1hTmFtZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlNjaGVtYU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUYWJsZU5hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUYWJsZU5hbWVTdWZmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUeXBlTmFtZVByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlR5cGVOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVmlld05hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJWaWV3TmFtZVN1ZmZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlZhcnJheU5hbWVQcmVmaXgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJWYXJyYXlOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTmVzdGVkVGFibGVOYW1lUHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTmVzdGVkVGFibGVOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT2JqZWN0VGFibGVOYW1lUHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT2JqZWN0VGFibGVOYW1lU3VmZml4IgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzU2NoZW1hIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk9JRCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIldoZXJlQ2xhdXNlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiQ2hlY2tDb25zdHJhaW50IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiQ29sbGVjdGlvblR5cGVMZW5ndGgiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb2xsZWN0aW9uVHlwZVByZWNpc2lvbiIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIkNvbGxlY3Rpb25UeXBlU2NhbGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb2xsZWN0aW9uT2ZSRUZTIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RLaW5kIgotCQkJdmFsdWUgICAgICAJKCJNZXRob2RLaW5kU2V0IiAxOTAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPdmVybG9hZElEIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT3JkZXJOdW1iZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWROb0RhdGFTdGF0ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzUmVhZE5vUHJvY2Vzc1N0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNXcml0ZU5vRGF0YVN0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNXcml0ZU5vUHJvY2Vzc1N0YXRlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiSXNTZWxmaXNoIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlclR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIlRyaWdnZXJUeXBlU2V0IiAxODAxKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyRXZlbnQiCi0JCQl2YWx1ZSAgICAgIAkoIlRyaWdnZXJFdmVudFNldCIgMTYwMSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlclRleHQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyUmVmZXJlbmNpbmdOYW1lcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRyaWdnZXJGb3JFYWNoIgotCQkJdmFsdWUgICAgICAJKCJUcmlnZ2VyRm9yRWFjaFNldCIgMTcwMSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlcldoZW5DbGF1c2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJNZXRob2RLaW5kU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIk1hcE1ldGhvZCIKLQkJCQl2YWx1ZSAgICAgIAkxOTAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIk9yZGVyTWV0aG9kIgotCQkJCXZhbHVlICAgICAgCTE5MDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJMTkwMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJQcm9jZWR1cmUiCi0JCQkJdmFsdWUgICAgICAJMTkwNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJPcGVyYXRvciIKLQkJCQl2YWx1ZSAgICAgIAkxOTA1KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0cnVjdG9yIgotCQkJCXZhbHVlICAgICAgCTE5MDYpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiRGVzdHJ1Y3RvciIKLQkJCQl2YWx1ZSAgICAgIAkxOTA3KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlRyaWdnZXIiCi0JCQkJdmFsdWUgICAgICAJMTkwOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJDYWxjdWxhdGVkIgotCQkJCXZhbHVlICAgICAgCTE5MDkpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJUcmlnZ2VyVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJBRlRFUiIKLQkJCQl2YWx1ZSAgICAgIAkxODAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkJFRk9SRSIKLQkJCQl2YWx1ZSAgICAgIAkxODAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU1RFQUQgT0YiCi0JCQkJdmFsdWUgICAgICAJMTgwMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlRyaWdnZXJGb3JFYWNoU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlJPVyIKLQkJCQl2YWx1ZSAgICAgIAkxNzAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlNUQVRFTUVOVCIKLQkJCQl2YWx1ZSAgICAgIAkxNzAyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiVHJpZ2dlckV2ZW50U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCIKLQkJCQl2YWx1ZSAgICAgIAkxNjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIlVQREFURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIkRFTEVURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjAzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCBPUiBVUERBVEUiCi0JCQkJdmFsdWUgICAgICAJMTYwNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJCW5hbWUgICAgICAgCSJJTlNFUlQgT1IgREVMRVRFIgotCQkJCXZhbHVlICAgICAgCTE2MDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCQluYW1lICAgICAgIAkiVVBEQVRFIE9SIERFTEVURSIKLQkJCQl2YWx1ZSAgICAgIAkxNjA2KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQkJbmFtZSAgICAgICAJIklOU0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIgotCQkJCXZhbHVlICAgICAgCTE2MDcpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJPcmRlck51bWJlciIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiT3JkZXJOdW1iZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1VuaXF1ZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIk51bGxzQWxsb3dlZCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiTGVuZ3RoIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk9yYWNsZTgiCi0JCQluYW1lICAgICAgIAkiUHJlY2lzaW9uIgotCQkJdmFsdWUgICAgICAJIjIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIlNjYWxlIgotCQkJdmFsdWUgICAgICAJIjYiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJPcmFjbGU4IgotCQkJbmFtZSAgICAgICAJIklzSW5kZXgiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJJc1ByaW1hcnlLZXkiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDb21wb3NpdGVVbmlxdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJCW5hbWUgICAgICAgCSJDaGVja0NvbnN0cmFpbnQiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiT3JhY2xlOCIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiUmVwb3NpdG9yeSIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJwcm9wZXJ0eUlkIgotCQl2YWx1ZSAgICAgIAkiODA5MTM1OTY2IikKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUHJvamVjdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVc2VNU1ZDIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkhlYWRlckZpbGVFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiaCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkhlYWRlckZpbGVCYWNrdXBFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiaH4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJIZWFkZXJGaWxlVGVtcG9yYXJ5RXh0ZW5zaW9uIgotCQkJdmFsdWUgICAgICAJImgjIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZUZpbGVFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiY3BwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZUZpbGVCYWNrdXBFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiY3B+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZUZpbGVUZW1wb3JhcnlFeHRlbnNpb24iCi0JCQl2YWx1ZSAgICAgIAkiY3AjIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ3JlYXRlTWlzc2luZ0RpcmVjdG9yaWVzIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3RvcE9uRXJyb3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXJyb3JMaW1pdCIKLQkJCXZhbHVlICAgICAgCTMwKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnkiCi0JCQl2YWx1ZSAgICAgIAkiJFJPU0VDUFBfU09VUkNFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUGF0aFNlcGFyYXRvciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGaWxlTmFtZUZvcm1hdCIKLQkJCXZhbHVlICAgICAgCSIxMjh2eF9iIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm9vbGVhblR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiaW50IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQWxsb3dUZW1wbGF0ZXMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBbGxvd0V4cGxpY2l0SW5zdGFudGlhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBbGxvd1Byb3RlY3RlZEluaGVyaXRhbmNlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29tbWVudFdpZHRoIgotCQkJdmFsdWUgICAgICAJNjApCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9uZUJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldENsYXNzIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT25lQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldENsYXNzICoiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcHRpb25hbEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiT3B0aW9uYWxCeVZhbHVlPCR0YXJnZXRDbGFzcz4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcHRpb25hbEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzcyAqIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRml4ZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzc1skbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkRml4ZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXRDbGFzc1skbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRml4ZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0Q2xhc3MgKlskbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkRml4ZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkdGFyZ2V0Q2xhc3MgKlskbGltaXRdIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm91bmRlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQm91bmRlZExpc3RCeVZhbHVlPCR0YXJnZXRDbGFzcywkbGltaXQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkQm91bmRlZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQm91bmRlZFNldEJ5VmFsdWU8JHRhcmdldENsYXNzLCRsaW1pdD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb3VuZGVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQm91bmRlZExpc3RCeVJlZmVyZW5jZTwkdGFyZ2V0Q2xhc3MsJGxpbWl0PiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVub3JkZXJlZEJvdW5kZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJCb3VuZGVkU2V0QnlSZWZlcmVuY2U8JHRhcmdldENsYXNzLCRsaW1pdD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbmJvdW5kZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIlVuYm91bmRlZExpc3RCeVZhbHVlPCR0YXJnZXRDbGFzcz4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRVbmJvdW5kZWRCeVZhbHVlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIlVuYm91bmRlZFNldEJ5VmFsdWU8JHRhcmdldENsYXNzPiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVuYm91bmRlZEJ5UmVmZXJlbmNlQ29udGFpbmVyIgotCQkJdmFsdWUgICAgICAJIlVuYm91bmRlZExpc3RCeVJlZmVyZW5jZTwkdGFyZ2V0Q2xhc3M+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVW5vcmRlcmVkVW5ib3VuZGVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiVW5ib3VuZGVkU2V0QnlSZWZlcmVuY2U8JHRhcmdldENsYXNzPiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQXNzb2NpYXRpb25CeVZhbHVlPCRxdWFsdHlwZSwgJHF1YWxjb250PiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlVub3JkZXJlZFF1YWxpZmllZEJ5VmFsdWVDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiRGljdGlvbmFyeUJ5VmFsdWU8JHF1YWx0eXBlLCAkcXVhbGNvbnQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkQnlSZWZlcmVuY2VDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiQXNzb2NpYXRpb25CeVJlZmVyZW5jZTwkcXVhbHR5cGUsICRxdWFsY29udD4iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJVbm9yZGVyZWRRdWFsaWZpZWRCeVJlZmVyZW5jZUNvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSJEaWN0aW9uYXJ5QnlSZWZlcmVuY2U8JHF1YWx0eXBlLCAkcXVhbGNvbnQ+IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVQcmVzZXJ2ZVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NsYXNzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkltcGxlbWVudGF0aW9uVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDbGFzc0tleSIKLQkJCXZhbHVlICAgICAgCSJjbGFzcyIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25zIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IiAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5wcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWxsIgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUHV0Qm9kaWVzSW5TcGVjIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGVmYXVsdENvbnN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZVNldCIgMTk5KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdENvbnN0cnVjdG9yVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVEZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXhwbGljaXREZWZhdWx0Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDb3B5Q29uc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlU2V0IiAxOTkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb3B5Q29uc3RydWN0b3JWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUNvcHlDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFeHBsaWNpdENvcHlDb25zdHJ1Y3RvciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlc3RydWN0b3IiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXN0cnVjdG9yVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXN0cnVjdG9yS2luZCIKLQkJCXZhbHVlICAgICAgCSgiVGhyZWVLaW5kU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVEZXN0cnVjdG9yIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQXNzaWdubWVudE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCSgiR2VuZXJhdGVTZXQiIDE5OSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc2lnbm1lbnRWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc2lnbm1lbnRLaW5kIgotCQkJdmFsdWUgICAgICAJKCJUaHJlZUtpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUFzc2lnbm1lbnRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFcXVhbGl0eU9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlU2V0IiAxOTkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJFcXVhbGl0eVZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXF1YWxpdHlLaW5kIgotCQkJdmFsdWUgICAgICAJKCJGcmllbmRLaW5kU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVFcXVhbGl0eU9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVSZWxhdGlvbmFsT3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJSZWxhdGlvbmFsVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJSZWxhdGlvbmFsS2luZCIKLQkJCXZhbHVlICAgICAgCSgiRnJpZW5kS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lUmVsYXRpb25hbE9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTdG9yYWdlTWdtdE9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3RvcmFnZU1nbXRWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVN0b3JhZ2VNZ210T3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVN1YnNjcmlwdE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTdWJzY3JpcHRWaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlN1YnNjcmlwdEtpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIlRocmVlS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU3Vic2NyaXB0UmVzdWx0VHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVTdWJzY3JpcHRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVEZXJlZmVyZW5jZU9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEZXJlZmVyZW5jZVZpc2liaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIlZpc2liaWxpdHlTZXQiIDQ1KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVyZWZlcmVuY2VLaW5kIgotCQkJdmFsdWUgICAgICAJKCJUaHJlZUtpbmRTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRlcmVmZXJlbmNlUmVzdWx0VHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVEZXJlZmVyZW5jZU9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUluZGlyZWN0aW9uT3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluZGlyZWN0aW9uVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiVmlzaWJpbGl0eVNldCIgNDUpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmRpcmVjdGlvbktpbmQiCi0JCQl2YWx1ZSAgICAgIAkoIlRocmVlS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5kaXJlY3Rpb25SZXN1bHRUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUluZGlyZWN0aW9uT3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlU3RyZWFtT3BlcmF0aW9ucyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTdHJlYW1WaXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5U2V0IiA0NSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVN0cmVhbU9wZXJhdGlvbnMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVGhyZWVLaW5kU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJDb21tb24iCi0JCQkJdmFsdWUgICAgICAJMjAwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsIgotCQkJCXZhbHVlICAgICAgCTIwMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWJzdHJhY3QiCi0JCQkJdmFsdWUgICAgICAJMjAyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIktpbmRTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRnJpZW5kS2luZFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29tbW9uIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbCIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFic3RyYWN0IgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRnJpZW5kIgotCQkJCXZhbHVlICAgICAgCTIwNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRGVjbGFyZUFuZERlZmluZSIKLQkJCQl2YWx1ZSAgICAgIAkxOTkpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkRlY2xhcmVPbmx5IgotCQkJCXZhbHVlICAgICAgCTIwNSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRG9Ob3REZWNsYXJlIgotCQkJCXZhbHVlICAgICAgCTIwNikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJWaXNpYmlsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQdWJsaWMiCi0JCQkJdmFsdWUgICAgICAJNDUpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByb3RlY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAk0NCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJpdmF0ZSIKLQkJCQl2YWx1ZSAgICAgIAk0MykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW1wbGVtZW50YXRpb24iCi0JCQkJdmFsdWUgICAgICAJMTQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29uc3RWYWx1ZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURlZmF1bHRTcGVjaWZpZXIiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGVmYXVsdFNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1TcGVjIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvbnMiCi0JCQl2YWx1ZSAgICAgIAkoIkdlbmVyYXRlRW1wdHlSZWdpb25TZXQiIDMpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJVbnByZXNlcnZlZCIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBbGwiCi0JCQkJdmFsdWUgICAgICAJMykpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDbUlkZW50aWZpY2F0aW9uIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiAgJVglICBAKCMpIHBsdWdpbnMvY29tLmlibS5ldG9vbHMuY3RjLnNlcnZpY2VzL3NyYy9yb3NlL3dzZGxNZGwubWRsLCBjdGMsIGlibWN0YyIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb3B5cmlnaHROb3RpY2UiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkZpbGVOYW1lIgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBbGxvd0V4dGVuc2lvbmxlc3NGaWxlTmFtZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdXNpb25Qcm90ZWN0aW9uU3ltYm9sIgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlRm9ybWF0IgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgCi18Ly8gJHBhY2thZ2UKLXwjaW5jbHVkZSAiJGZpbGUiCi18Ci0JCQkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlQnlTaW1wbGVOYW1lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluY2x1ZGVQcmVjb21waWxlZEhlYWRlciIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlT3JkZXIiCi0JCQl2YWx1ZSAgICAgIAkiQU1JUiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbmNsdWRlcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5pbmdTdHlsZSIKLQkJCXZhbHVlICAgICAgCSgiSW5saW5pbmdTdHlsZVNldCIgMjA3KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5pbmdTdHlsZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW5DbGFzc0RlY2xhcmF0aW9uIgotCQkJCXZhbHVlICAgICAgCTIwOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRm9sbG93aW5nQ2xhc3NEZWNsYXJhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDcpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVHlwZXNEZWZpbmVkIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlQ2xvc3VyZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtQm9keSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25zIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IiAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5wcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWxsIgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ21JZGVudGlmaWNhdGlvbiIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIgICVYJSAgQCgjKSBwbHVnaW5zL2NvbS5pYm0uZXRvb2xzLmN0Yy5zZXJ2aWNlcy9zcmMvcm9zZS93c2RsTWRsLm1kbCwgY3RjLCBpYm1jdGMiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29weXJpZ2h0Tm90aWNlIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGaWxlTmFtZSIKLQkJCXZhbHVlICAgICAgCSJBVVRPIEdFTkVSQVRFIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQWxsb3dFeHRlbnNpb25sZXNzRmlsZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUZvcm1hdCIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0IAotfC8vICRwYWNrYWdlCi18I2luY2x1ZGUgIiRmaWxlIgotfAotCQkJKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5jbHVkZUJ5U2ltcGxlTmFtZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlUHJlY29tcGlsZWRIZWFkZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlT3JkZXIiCi0JCQl2YWx1ZSAgICAgIAkiQU1JUiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFkZGl0aW9uYWxJbmNsdWRlcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5pbmdTdHlsZSIKLQkJCXZhbHVlICAgICAgCSgiSW5saW5pbmdTdHlsZVNldCIgMjA3KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5pbmdTdHlsZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiSW5DbGFzc0RlY2xhcmF0aW9uIgotCQkJCXZhbHVlICAgICAgCTIwOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRm9sbG93aW5nQ2xhc3NEZWNsYXJhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDcpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiVHlwZXNEZWZpbmVkIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmNsdWRlQ2xvc3VyZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19PcGVyYXRpb24iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29kZU5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT3BlcmF0aW9uS2luZCIKLQkJCXZhbHVlICAgICAgCSgiT3BlcmF0aW9uS2luZFNldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiT3BlcmF0aW9uS2luZFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29tbW9uIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbCIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFic3RyYWN0IgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU3RhdGljIgotCQkJCXZhbHVlICAgICAgCTIwMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRnJpZW5kIgotCQkJCXZhbHVlICAgICAgCTIwNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJPcGVyYXRpb25Jc0NvbnN0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbklzRXhwbGljaXQiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkVudHJ5Q29kZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRXhpdENvZGUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25zIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IiAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5wcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWxsIgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQm9keUFubm90YXRpb25zIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9wZXJhdGlvbklzT25lV2F5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvbnRleHQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUmFpc2VzIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fSGFzIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk9yZGVyZWQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlXyRzdXBwbGllciIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiIDE0KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk0NSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTQ0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTQzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXRSZWxhdGlvbnNoaXBWaXNpYmlsaXR5IgotCQkJCXZhbHVlICAgICAgCTIxMCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5yZXN0cmljdGVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk11dGFibGUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29uc3QiCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVySXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyRmllbGRTaXplIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluaXRpYWxWYWx1ZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVHZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVNldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiZ2V0XyRyZWxhdGlvbnNoaXAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZXROYW1lIgotCQkJdmFsdWUgICAgICAJInNldF8kcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0S2luZHMiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFNldEtpbmRzU2V0IiAyMDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRTZXRLaW5kc1NldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29tbW9uIgotCQkJCXZhbHVlICAgICAgCTIwMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVmlydHVhbCIKLQkJCQl2YWx1ZSAgICAgIAkyMDEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFic3RyYWN0IgotCQkJCXZhbHVlICAgICAgCTIwMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU3RhdGljIgotCQkJCXZhbHVlICAgICAgCTIwMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRnJpZW5kIgotCQkJCXZhbHVlICAgICAgCTIwNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb250YWluZXJDbGFzcyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZWxlY3Rvck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2VsZWN0b3JUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJKCJHZXRSZXN1bHRJc0NvbnN0U2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0UmVzdWx0SXNDb25zdFNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiRmFsc2UiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVHJ1ZSIKLQkJCQl2YWx1ZSAgICAgIAkxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTYW1lX0FzX0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVNldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkZvcndhcmRSZWZlcmVuY2VPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkJvdW5kZWRIYXNSZWxUeXBlIgotCQkJdmFsdWUgICAgICAJKCJIYXNSZWxUeXBlU2V0IiA0NykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkhhc1JlbFR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkFycmF5IgotCQkJCXZhbHVlICAgICAgCTI0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJTZXF1ZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAk0NykpKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0Fzc29jaWF0aW9uIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIk5hbWVJZlVubGFiZWxlZCIKLQkJCXZhbHVlICAgICAgCSJ0aGVfJHRhcmdldENsYXNzIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Jbmhlcml0IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluc3RhbmNlQXJndW1lbnRzIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUm9sZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb2RlTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGb3J3YXJkUmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlXyR0YXJnZXRDbGFzcyIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiIDE0KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk0NSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTQ0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTQzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXRSZWxhdGlvbnNoaXBWaXNpYmlsaXR5IgotCQkJCXZhbHVlICAgICAgCTIxMCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5yZXN0cmljdGVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk11dGFibGUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29uc3QiCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVySXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyRmllbGRTaXplIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluaXRpYWxWYWx1ZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29udGFpbmVyQ2xhc3MiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ29udGFpbmVyR2V0IgotCQkJdmFsdWUgICAgICAJIiRkYXRhLmdldCgka2V5cykiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJDb250YWluZXJTZXQiCi0JCQl2YWx1ZSAgICAgIAkiJGRhdGEuc2V0KCRrZXlzLCR2YWx1ZSkiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJRdWFsaWZpZWRDb250YWluZXIiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0NvbnRhaW5lciIKLQkJCXZhbHVlICAgICAgCSIkc3VwcGxpZXIgKiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NJbml0aWFsVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzIgotCQkJdmFsdWUgICAgICAJKCJHZXRTZXRLaW5kc1NldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0S2luZHNTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZyaWVuZCIKLQkJCQl2YWx1ZSAgICAgIAkyMDQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVHZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXROYW1lIgotCQkJdmFsdWUgICAgICAJImdldF8kdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFJlc3VsdElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFJlc3VsdElzQ29uc3RTZXQiIDIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGYWxzZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJUcnVlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlNhbWVfQXNfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVHZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVNldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlNldE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkic2V0XyR0YXJnZXQiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZXRSZXR1cm5zVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lU2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkR2V0U2V0QnlSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAkoIlF1YWxpZmllZEdldFNldEJ5UmVmZXJlbmNlU2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkR2V0U2V0QnlSZWZlcmVuY2VTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZhbHNlIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlRydWUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiU2FtZV9Bc19HZXRTZXRCeVJlZmVyZW5jZSIKLQkJCQl2YWx1ZSAgICAgIAkyKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlUXVhbGlmaWVkR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkR2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJnZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIlF1YWxpZmllZEdldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJRdWFsaWZpZWRHZXRSZXN1bHRJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJKCJHZXRSZXN1bHRJc0NvbnN0U2V0IiAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lUXVhbGlmaWVkR2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVRdWFsaWZpZWRTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJRdWFsaWZpZWRTZXROYW1lIgotCQkJdmFsdWUgICAgICAJInNldF8kdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiUXVhbGlmaWVkU2V0UmV0dXJuc1ZhbHVlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZVF1YWxpZmllZFNldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQXNzb2NDbGFzc0RhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzRGF0YU1lbWJlck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NEYXRhTWVtYmVyVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiIDE0KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk0NSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTQ0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTQzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXRSZWxhdGlvbnNoaXBWaXNpYmlsaXR5IgotCQkJCXZhbHVlICAgICAgCTIxMCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzRGF0YU1lbWJlck11dGFiaWxpdHkiCi0JCQl2YWx1ZSAgICAgIAkoIkRhdGFNZW1iZXJNdXRhYmlsaXR5U2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlVucmVzdHJpY3RlZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJNdXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbnN0IgotCQkJCXZhbHVlICAgICAgCTIpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0RhdGFNZW1iZXJJc1ZvbGF0aWxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NHZXRTZXRLaW5kcyIKLQkJCXZhbHVlICAgICAgCSgiR2V0U2V0S2luZHNTZXQiIDIwMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlQXNzb2NDbGFzc0dldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NHZXROYW1lIgotCQkJdmFsdWUgICAgICAJImdldF8kdGFyZ2V0IikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQXNzb2NDbGFzc0dldElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzR2V0UmVzdWx0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCSgiR2V0UmVzdWx0SXNDb25zdFNldCIgMikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklubGluZUFzc29jQ2xhc3NHZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUFzc29jQ2xhc3NTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJBc3NvY0NsYXNzU2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJzZXRfJHRhcmdldCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NTZXRSZXR1cm5zVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lQXNzb2NDbGFzc1NldCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jQ2xhc3NGb3J3YXJkUmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRm9yd2FyZFJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkJvdW5kZWRSb2xlVHlwZSIKLQkJCXZhbHVlICAgICAgCSgiQXNzb2NUeXBlU2V0IiA0NykpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkFzc29jVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXJyYXkiCi0JCQkJdmFsdWUgICAgICAJMjQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlNlcXVlbmNlIgotCQkJCXZhbHVlICAgICAgCTQ3KSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkRhdGFNZW1iZXJOYW1lIgotCQkJdmFsdWUgICAgICAJIiRhdHRyaWJ1dGUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyVmlzaWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiIDE0KSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlclZpc2liaWxpdHlTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlB1YmxpYyIKLQkJCQl2YWx1ZSAgICAgIAk0NSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiUHJvdGVjdGVkIgotCQkJCXZhbHVlICAgICAgCTQ0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcml2YXRlIgotCQkJCXZhbHVlICAgICAgCTQzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJJbXBsZW1lbnRhdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAkxNCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQXRBdHRyaWJ1dGVWaXNpYmlsaXR5IgotCQkJCXZhbHVlICAgICAgCTIxMSkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiRGF0YU1lbWJlck11dGFiaWxpdHlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTXV0YWJpbGl0eVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5yZXN0cmljdGVkIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIk11dGFibGUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQ29uc3QiCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVySXNWb2xhdGlsZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyRmllbGRTaXplIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXROYW1lIgotCQkJdmFsdWUgICAgICAJImdldF8kYXR0cmlidXRlIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiU2V0TmFtZSIKLQkJCXZhbHVlICAgICAgCSJzZXRfJGF0dHJpYnV0ZSIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFNldEtpbmRzIgotCQkJdmFsdWUgICAgICAJKCJHZXRTZXRLaW5kc1NldCIgMjAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0U2V0S2luZHNTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkNvbW1vbiIKLQkJCQl2YWx1ZSAgICAgIAkyMDApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlZpcnR1YWwiCi0JCQkJdmFsdWUgICAgICAJMjAxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJBYnN0cmFjdCIKLQkJCQl2YWx1ZSAgICAgIAkyMDIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlN0YXRpYyIKLQkJCQl2YWx1ZSAgICAgIAkyMDMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIkZyaWVuZCIKLQkJCQl2YWx1ZSAgICAgIAkyMDQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2V0SXNDb25zdCIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdldFJlc3VsdElzQ29uc3QiCi0JCQl2YWx1ZSAgICAgIAkoIkdldFJlc3VsdElzQ29uc3RTZXQiIDIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRSZXN1bHRJc0NvbnN0U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJGYWxzZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJUcnVlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiY2ciCi0JCQkJbmFtZSAgICAgICAJIlNhbWVfQXNfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJMikpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZXRTZXRCeVJlZmVyZW5jZSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJbmxpbmVHZXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJTZXRSZXR1cm5zVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiSW5saW5lU2V0IgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiQ2FzZVNwZWNpZmllciIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJJc1JlYWRPbmx5IgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJImNnIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fVXNlcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJGb3J3YXJkUmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJCb2R5UmVmZXJlbmNlT25seSIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUZvcndhcmRSZWZlcmVuY2UiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiY2ciCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19TdWJzeXN0ZW0iCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiRGlyZWN0b3J5IgotCQkJdmFsdWUgICAgICAJIkFVVE8gR0VORVJBVEUiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJEaXJlY3RvcnlJc09uU2VhcmNoTGlzdCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCW5hbWUgICAgICAgCSJQcmVjb21waWxlZEhlYWRlciIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NhdGVnb3J5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIklzTmFtZXNwYWNlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkluZGVudCIKLQkJCXZhbHVlICAgICAgCTIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkNvZGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJImNnIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRW1wdHlSZWdpb25zIgotCQkJdmFsdWUgICAgICAJKCJHZW5lcmF0ZUVtcHR5UmVnaW9uU2V0IiAzKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiY2ciCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVFbXB0eVJlZ2lvblNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiTm9uZSIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJImNnIgotCQkJCW5hbWUgICAgICAgCSJQcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiVW5wcmVzZXJ2ZWQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJjZyIKLQkJCQluYW1lICAgICAgIAkiQWxsIgotCQkJCXZhbHVlICAgICAgCTMpKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJInByb3BlcnR5SWQiCi0JCXZhbHVlICAgICAgCSI4MDkxMzU5NjYiKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1Byb2plY3QiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJWZXJzaW9uIgotCQkJdmFsdWUgICAgICAJIjUuMCIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19DbGFzcyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIk1TVkNDbGFzc1R5cGVTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1TVkNDbGFzc1R5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiSW50ZXJmYWNlX1BhcnQiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJDb25uZWN0aW9uX1BhcnQiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJDbGFzc19GYWN0b3J5IgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT2JqZWN0RnVuY3Rpb25hbGl0eSIKLQkJCXZhbHVlICAgICAgCSgiQ09iamVjdEZ1bmN0aW9uYWxpdHlTZXQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNPYmplY3RGdW5jdGlvbmFsaXR5U2V0IgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJEeW5hbWljIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRHluY3JlYXRlIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiU2VyaWFsIgotCQkJCXZhbHVlICAgICAgCTMpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZU92ZXJyaWRlR3JvdXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFHcm91cCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9EQVRBX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVGaWVsZEdyb3VwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0ZJRUxEX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVNZXNzYWdlR3JvdXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZU1lc3NhZ2VNYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfTVNHX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk1FU1NBR0VfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFRmFjdG9yeSIKLQkJCXZhbHVlICAgICAgCSgiT0xFRmFjdG9yeVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFRmFjdG9yeVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiQnVpbHRfaW4iCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJTaW1wbGUiCi0JCQkJdmFsdWUgICAgICAJMikKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJMaWNlbnNlZCIKLQkJCQl2YWx1ZSAgICAgIAkzKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRUNsYXNzSUQiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZU9MRUN0bFR5cGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJPTEVDdGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVPTEVUeXBlTGliIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFVHlwZUxpYklEIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFVHlwZUxpYk1ham9yIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFVHlwZUxpYk1pbm9yIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVQcm9wUGFnZUlEcyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIk9MRVByb3BQYWdlSURzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGlzcGF0Y2hNYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiU3RvY2tQcm9wZXJ0aWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrRnVuY3Rpb25zIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRpc3BhdGNoRGVmVmFsdWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURpc3BJZEVudW0iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUF9JRF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW50ZXJmYWNlTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiSU5URVJGQUNFX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkluaXRJbnRlcmZhY2UiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUV2ZW50TWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkVWRU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlN0b2NrRXZlbnRzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRXZlbnRTaW5rTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UU0lOS19FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9FVkVOVFNJTktfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRVZFTlRTSU5LX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlByb3BOb3RpZnlTaW5rcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUNvbm5lY3Rpb25NYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT05ORUNUSU9OX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNvbm5lY3Rpb25Qb2ludElJRCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkluaGVyaXRhbmNlVHlwZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkRlY2xTcGVjIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiT0xFQ29tbWFuZHMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTUZDRGVjbGFyZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTUZDSW1wbGVtZW50cyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBVExfRGVjbGFyZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDT01NYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT01fTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVDb25uZWN0aW9uUG9pbnRNYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJDT05ORUNUSU9OX1BPSU5UX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlTXNnTWFwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNHX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlUHJvcGVydHlNYXAiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQUk9QRVJUWV9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX09wZXJhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIlR5cGUiCi0JCQl2YWx1ZSAgICAgIAkoIk1TVkNPcGVyYXRpb25UeXBlU2V0IiAwKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJNU1ZDT3BlcmF0aW9uVHlwZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJOb3JtYWwiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJWaXJ0dWFsX092ZXJyaWRlIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWVzc2FnZV9IYW5kbGVyIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRGlzcGF0Y2hfSGFuZGxlciIKLQkJCQl2YWx1ZSAgICAgIAkzKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkV2ZW50X0ZpcmluZ19GdW5jdGlvbiIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkV2ZW50X1NpbmtfSGFuZGxlciIKLQkJCQl2YWx1ZSAgICAgIAk1KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlN0ZF9PTEVfTWV0aG9kIgotCQkJCXZhbHVlICAgICAgCTYpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiQ29tbWFuZF9QYXJzZXIiCi0JCQkJdmFsdWUgICAgICAJNykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJQcm9wZXJ0eV9HZXRfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJOCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJQcm9wZXJ0eV9TZXRfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJOSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJCW5hbWUgICAgICAgCSJQcm9wZXJ0eV9Ob3RpZnlfRnVuY3Rpb24iCi0JCQkJdmFsdWUgICAgICAJMTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWFjcm9fR2VuZXJhdGVkX0Z1bmN0aW9uIgotCQkJCXZhbHVlICAgICAgCTExKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX01TR19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJNRVNTQUdFX01BUF9FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9ESVNQQVRDSF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJESVNQQVRDSF9NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRVZFTlRfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRVZFTlRfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0VWRU5UU0lOS19NQVBfRW50cmllcyIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJFVkVOVFNJTktfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQ2FsbFR5cGUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJEZWNsU3BlYyIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkJvZHlJbWFnZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDQXR0cmlidXRlVHlwZVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWVtYmVyX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiR2V0X1NldF9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkRpYWxvZ19EYXRhIgotCQkJCXZhbHVlICAgICAgCTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRmllbGRfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlN0b2NrX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRGVjbFNwZWMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQb2ludGVyQmFzZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNhbGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiU3RvY2tQcm9wZXJ0eUltcGxlbWVudGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19IYXMiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDQXR0cmlidXRlVHlwZVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWVtYmVyX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiR2V0X1NldF9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkRpYWxvZ19EYXRhIgotCQkJCXZhbHVlICAgICAgCTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRmllbGRfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlN0b2NrX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRGVjbFNwZWMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQb2ludGVyQmFzZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNhbGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiU3RvY2tQcm9wZXJ0eUltcGxlbWVudGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19BdHRyaWJ1dGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJUeXBlIgotCQkJdmFsdWUgICAgICAJKCJNU1ZDQXR0cmlidXRlVHlwZVNldCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiTVNWQ0F0dHJpYnV0ZVR5cGVTZXQiCi0JCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTm9ybWFsIgotCQkJCXZhbHVlICAgICAgCTApCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiTWVtYmVyX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiR2V0X1NldF9Qcm9wZXJ0eSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIkRpYWxvZ19EYXRhIgotCQkJCXZhbHVlICAgICAgCTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCQluYW1lICAgICAgIAkiRmllbGRfRGF0YSIKLQkJCQl2YWx1ZSAgICAgIAk0KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQkJbmFtZSAgICAgICAJIlN0b2NrX1Byb3BlcnR5IgotCQkJCXZhbHVlICAgICAgCTUpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJBRlhfRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRElTUEFUQ0hfTUFQX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiRGVjbFNwZWMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiTVNWQyIKLQkJCW5hbWUgICAgICAgCSJQb2ludGVyQmFzZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkNhbGxUeXBlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiU3RvY2tQcm9wZXJ0eUltcGxlbWVudGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5jbHVkZXNHcm91cCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkFGWF9JTkNMVURFU19FbnRyaWVzIgotCQkJdmFsdWUgICAgICAJKHZhbHVlIFRleHQgIiIpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJNU1ZDIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlSW5zZXJ0TG9jYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiTVNWQyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX01vZHVsZS1Cb2R5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbmNsdWRlc0dyb3VwIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiQUZYX0lOQ0xVREVTX0VudHJpZXMiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIk1TVkMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbnNlcnRMb2NhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJjZyIKLQkJbmFtZSAgICAgICAJIkhpZGRlblRvb2wiCi0JCXZhbHVlICAgICAgCUZBTFNFKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiU0NDIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJUeXBlTGliSW1wb3J0ZXIiCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJInByb3BlcnR5SWQiCi0JCXZhbHVlICAgICAgCSI3ODM2MDYzNzgiKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQ2xhc3MiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkNyZWF0YWJsZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIlByaXZhdGUiCi0JCQkJdmFsdWUgICAgICAJMjIxKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiUHVibGljTm90Q3JlYXRhYmxlIgotCQkJCXZhbHVlICAgICAgCTIxMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIlNpbmdsZVVzZSIKLQkJCQl2YWx1ZSAgICAgIAkyMTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJCW5hbWUgICAgICAgCSJHbG9iYWxTaW5nbGVVc2UiCi0JCQkJdmFsdWUgICAgICAJMjE1KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiTXVsdGlVc2UiCi0JCQkJdmFsdWUgICAgICAJMjE5KQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiR2xvYmFsTXVsdGlVc2UiCi0JCQkJdmFsdWUgICAgICAJMjIwKSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJPcHRpb25CYXNlIgotCQkJdmFsdWUgICAgICAJIjAiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiT3B0aW9uRXhwbGljaXQiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiT3B0aW9uQ29tcGFyZSIKLQkJCXZhbHVlICAgICAgCSgiQ29tcGFyZVNldCIgMjAyKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkNyZWF0YWJsZSIKLQkJCXZhbHVlICAgICAgCSgiQ3JlYXRhYmxlU2V0IiAyMjEpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVJbml0aWFsaXphdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVUZXJtaW5hdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiQ29sbGVjdGlvbkNsYXNzIgotCQkJdmFsdWUgICAgICAJIkNvbGxlY3Rpb24iKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiQ29tcGFyZVNldCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIk5vbmUiCi0JCQkJdmFsdWUgICAgICAJMjAyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCQluYW1lICAgICAgIAkiQmluYXJ5IgotCQkJCXZhbHVlICAgICAgCTIwMykKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQkJbmFtZSAgICAgICAJIlRleHQiCi0JCQkJdmFsdWUgICAgICAJMjA0KSkpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX09wZXJhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiT3BlcmF0aW9uTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkb3BlcmF0aW9uIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkxpYnJhcnlOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJBbGlhc05hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIklzU3RhdGljIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJFbnRyeUNvZGUiCi0JCQl2YWx1ZSAgICAgIAkodmFsdWUgVGV4dCAiIikpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJFeGl0Q29kZSIKLQkJCXZhbHVlICAgICAgCSh2YWx1ZSBUZXh0ICIiKSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQXR0cmlidXRlIgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJJc0NvbnN0IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJOZXciCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIldpdGhFdmVudHMiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIlN1YnNjcmlwdCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiTmFtZUlmVW5sYWJlbGVkIgotCQkJdmFsdWUgICAgICAJInRoZSRzdXBwbGllciIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZURhdGFNZW1iZXIiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiRGF0YU1lbWJlck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiJHJlbGF0aW9uc2hpcCIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZUdldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVTZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlTGV0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX1JvbGUiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIk5ldyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiV2l0aEV2ZW50cyIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiU3Vic2NyaXB0IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJOYW1lSWZVbmxhYmVsZWQiCi0JCQl2YWx1ZSAgICAgIAkidGhlJHN1cHBsaWVyIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlRGF0YU1lbWJlciIKLQkJCXZhbHVlICAgICAgCVRSVUUpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJEYXRhTWVtYmVyTmFtZSIKLQkJCXZhbHVlICAgICAgCSIkcmVsYXRpb25zaGlwIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQkJbmFtZSAgICAgICAJIkdlbmVyYXRlR2V0T3BlcmF0aW9uIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIlZpc3VhbCBCYXNpYyIKLQkJCW5hbWUgICAgICAgCSJHZW5lcmF0ZVNldE9wZXJhdGlvbiIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiR2VuZXJhdGVMZXRPcGVyYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fSW5oZXJpdCIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiSW1wbGVtZW50c0RlbGVnYXRpb24iCi0JCQl2YWx1ZSAgICAgIAlUUlVFKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCW5hbWUgICAgICAgCSJkZWZhdWx0X19Nb2R1bGUtU3BlYyIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJWaXN1YWwgQmFzaWMiCi0JCQluYW1lICAgICAgIAkiUHJvamVjdEZpbGUiCi0JCQl2YWx1ZSAgICAgIAkiIikpKQotCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQl0b29sICAgICAgIAkiVmlzdWFsIEJhc2ljIgotCQluYW1lICAgICAgIAkiSGlkZGVuVG9vbCIKLQkJdmFsdWUgICAgICAJRkFMU0UpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJWaXN1YWxTdHVkaW8iCi0JCW5hbWUgICAgICAgCSJIaWRkZW5Ub29sIgotCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQluYW1lICAgICAgIAkicHJvcGVydHlJZCIKLQkJdmFsdWUgICAgICAJIjgwOTEzNTk2OSIpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJFY29yZSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0NhdGVnb3J5IgotCQl2YWx1ZSAgICAgIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInBhY2thZ2VOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIm5zUHJlZml4IgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIm5zVVJJIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImJhc2VQYWNrYWdlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInByZWZpeCIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJhbm5vdGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fQ2xhc3MiCi0JCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiY2xhc3NpZmllck5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiY29uc3RyYWludHMiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sTmFtZSIKLQkJCXZhbHVlICAgICAgCSIiKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ4bWxDb250ZW50S2luZCIKLQkJCXZhbHVlICAgICAgCSgiQ29udGVudEtpbmQiIDApKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJDb250ZW50S2luZCIKLQkJCXZhbHVlICAgICAgCShsaXN0IEF0dHJpYnV0ZV9TZXQKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiVW5zcGVjaWZpZWQiCi0JCQkJdmFsdWUgICAgICAJMCkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiRW1wdHkiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiU2ltcGxlIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIk1peGVkIgotCQkJCXZhbHVlICAgICAgCTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIkVsZW1lbnRPbmx5IgotCQkJCXZhbHVlICAgICAgCTQpKSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiYW5ub3RhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJFY29yZSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX09wZXJhdGlvbiIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJvcGVyYXRpb25OYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzVW5pcXVlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiYW5ub3RhdGlvbiIKLQkJCXZhbHVlICAgICAgCSIiKSkpCi0JICAgIChvYmplY3QgQXR0cmlidXRlCi0JCXRvb2wgICAgICAgCSJFY29yZSIKLQkJbmFtZSAgICAgICAJImRlZmF1bHRfX0F0dHJpYnV0ZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJhdHRyaWJ1dGVOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzVHJhbnNpZW50IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNDaGFuZ2VhYmxlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNVbnNldHRhYmxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzVW5pcXVlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNJRCIKLQkJCXZhbHVlICAgICAgCUZBTFNFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ2aXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5S2luZCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIlZpc2liaWxpdHlLaW5kIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJVbnNwZWNpZmllZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtb25seSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJSZWFkLXdyaXRlIgotCQkJCXZhbHVlICAgICAgCTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtb25seSB1bnNldHRhYmxlIgotCQkJCXZhbHVlICAgICAgCTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtd3JpdGUgdW5zZXR0YWJsZSIKLQkJCQl2YWx1ZSAgICAgIAk1KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInhtbE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sTmFtZXNwYWNlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInhtbEZlYXR1cmVLaW5kIgotCQkJdmFsdWUgICAgICAJKCJGZWF0dXJlS2luZCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIkZlYXR1cmVLaW5kIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJVbnNwZWNpZmllZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJTaW1wbGUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiQXR0cmlidXRlIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIkVsZW1lbnQiCi0JCQkJdmFsdWUgICAgICAJNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJhbm5vdGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkKLQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQluYW1lICAgICAgIAkiZGVmYXVsdF9fUm9sZSIKLQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJyZWZlcmVuY2VOYW1lIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzVHJhbnNpZW50IgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzVm9sYXRpbGUiCi0JCQl2YWx1ZSAgICAgIAlGQUxTRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNDaGFuZ2VhYmxlIgotCQkJdmFsdWUgICAgICAJVFJVRSkKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkiaXNVbnNldHRhYmxlIgotCQkJdmFsdWUgICAgICAJRkFMU0UpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJImlzUmVzb2x2ZVByb3hpZXMiCi0JCQl2YWx1ZSAgICAgIAlUUlVFKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJ2aXNpYmlsaXR5IgotCQkJdmFsdWUgICAgICAJKCJWaXNpYmlsaXR5S2luZCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIlZpc2liaWxpdHlLaW5kIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJVbnNwZWNpZmllZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJOb25lIgotCQkJCXZhbHVlICAgICAgCTEpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtb25seSIKLQkJCQl2YWx1ZSAgICAgIAkyKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJSZWFkLXdyaXRlIgotCQkJCXZhbHVlICAgICAgCTMpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtb25seSB1bnNldHRhYmxlIgotCQkJCXZhbHVlICAgICAgCTQpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIlJlYWQtd3JpdGUgdW5zZXR0YWJsZSIKLQkJCQl2YWx1ZSAgICAgIAk1KSkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInhtbE5hbWUiCi0JCQl2YWx1ZSAgICAgIAkiIikKLQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQluYW1lICAgICAgIAkieG1sTmFtZXNwYWNlIgotCQkJdmFsdWUgICAgICAJIiIpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJInhtbEZlYXR1cmVLaW5kIgotCQkJdmFsdWUgICAgICAJKCJGZWF0dXJlS2luZCIgMCkpCi0JCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJbmFtZSAgICAgICAJIkZlYXR1cmVLaW5kIgotCQkJdmFsdWUgICAgICAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJVbnNwZWNpZmllZCIKLQkJCQl2YWx1ZSAgICAgIAkwKQotCQkJICAgIChvYmplY3QgQXR0cmlidXRlCi0JCQkJdG9vbCAgICAgICAJIkVjb3JlIgotCQkJCW5hbWUgICAgICAgCSJTaW1wbGUiCi0JCQkJdmFsdWUgICAgICAJMSkKLQkJCSAgICAob2JqZWN0IEF0dHJpYnV0ZQotCQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCQluYW1lICAgICAgIAkiQXR0cmlidXRlIgotCQkJCXZhbHVlICAgICAgCTIpCi0JCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCQl0b29sICAgICAgIAkiRWNvcmUiCi0JCQkJbmFtZSAgICAgICAJIkVsZW1lbnQiCi0JCQkJdmFsdWUgICAgICAJNCkpKQotCQkgICAgKG9iamVjdCBBdHRyaWJ1dGUKLQkJCXRvb2wgICAgICAgCSJFY29yZSIKLQkJCW5hbWUgICAgICAgCSJhbm5vdGF0aW9uIgotCQkJdmFsdWUgICAgICAJIiIpKSkpCi0JcXVpZCAgICAgICAJIjM5RTI3RjA4MDA2NyIpKQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9tb2RlbC9vcmcuZWNsaXBzZS53c3QuV1NETC5jYXQgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL29yZy5lY2xpcHNlLndzdC5XU0RMLmNhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM5YzQ1MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL21vZGVsL29yZy5lY2xpcHNlLndzdC5XU0RMLmNhdAorKysgL2Rldi9udWxsCkBAIC0xLDg2MzIgKzAsMCBAQAotCi0ob2JqZWN0IFBldGFsCi0gICAgdmVyc2lvbiAgICAJNDIKLSAgICBfd3JpdHRlbiAgIAkiUm9zZSA0LjUuODE2My4zIgotICAgIGNoYXJTZXQgICAgCTApCi0KLShvYmplY3QgQ2xhc3NfQ2F0ZWdvcnkgIndzZGwiCi0gICAgaXNfdW5pdCAgICAJVFJVRQotICAgIGlzX2xvYWRlZCAgCVRSVUUKLSAgICBhdHRyaWJ1dGVzIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JKG9iamVjdCBBdHRyaWJ1dGUKLQkgICAgdG9vbCAgICAgICAJIkVjb3JlIgotCSAgICBuYW1lICAgICAgIAkibnNQcmVmaXgiCi0JICAgIHZhbHVlICAgICAgCSJ3c2RsIikKLQkob2JqZWN0IEF0dHJpYnV0ZQotCSAgICB0b29sICAgICAgIAkiRWNvcmUiCi0JICAgIG5hbWUgICAgICAgCSJuc1VSSSIKLQkgICAgdmFsdWUgICAgICAJImh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL1dTREwiKQotCShvYmplY3QgQXR0cmlidXRlCi0JICAgIHRvb2wgICAgICAgCSJFY29yZSIKLQkgICAgbmFtZSAgICAgICAJImJhc2VQYWNrYWdlIgotCSAgICB2YWx1ZSAgICAgIAkib3JnLmVjbGlwc2Uud3N0IikKLQkob2JqZWN0IEF0dHJpYnV0ZQotCSAgICB0b29sICAgICAgIAkiRWNvcmUiCi0JICAgIG5hbWUgICAgICAgCSJwcmVmaXgiCi0JICAgIHZhbHVlICAgICAgCSJXU0RMIikpCi0gICAgcXVpZCAgICAgICAJIjNBREZCOEU1MDIxRSIKLSAgICBkb2N1bWVudGF0aW9uIAkKLXxUaGUgV1NETCBtb2RlbCBjb250YWlucyBjbGFzc2VzIGZvciB0aGUgV2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKS4KLXwKLXxXU0RMIGRlc2NyaWJlcyBuZXR3b3JrIHNlcnZpY2VzIGFzIHNldHMgb2YgZW5kcG9pbnRzIG9wZXJhdGluZyBvbiBtZXNzYWdlcy4gVGhlIG9wZXJhdGlvbnMgYW5kIG1lc3NhZ2VzIGFyZSBkZXNjcmliZWQgYWJzdHJhY3RseSwgYW5kIHRoZW4gYm91bmQgdG8gYSBjb25jcmV0ZSBuZXR3b3JrIHByb3RvY29sIGFuZCBtZXNzYWdlIGZvcm1hdCB0byBkZWZpbmUgYW4gZW5kcG9pbnQuCi18Ci18V1NETCBkZXNjcmliZXMgdGhlIGZvcm1hdHMgb2YgdGhlIG1lc3NhZ2VzIGV4Y2hhbmdlZCBieSB0aGUgc2VydmljZXMsIGFuZCBzdXBwb3J0cyB0aGUgWE1MIFNjaGVtYXMgc3BlY2lmaWNhdGlvbiBhcyBpdHMgY2Fub25pY2FsIHR5cGUgc3lzdGVtLiBUaGlzIHBhY2thZ2UgdXNlcyBhbiBYTUwgU2NoZW1hIEluZm9zZXQgbW9kZWwgcGFja2FnZSAoc2VlIHRoZSBYU0QgcGFja2FnZSkgdG8gZGVzY3JpYmUgdGhlIGFic3RyYWN0IG1lc3NhZ2UgZm9ybWF0cy4KLXwKLXxUaGUgbW9kZWwgY29udGFpbnMgdGhlIGZvbGxvd2luZyBkaWFncmFtcywgbmFtZWQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgY2hhcHRlcnMgaW4gdGhlIFdTREwgMS4xIHNwZWNpZmljYXRpb24gKGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvTk9URS13c2RsLTIwMDEwMzE1KQotfC0gMi4xIERlZmluaXRpb24sIHNob3dzIHRoZSBXU0RMIGRlZmluaXRpb24gZWxlbWVudCBhbmQgdGhlIFdTREwgZG9jdW1lbnQgc3RydWN0dXJlCi18LSAyLjEuMSBOYW1pbmcgYW5kIExpbmtpbmcsIHNob3dzIHRoZSBuYW1lc3BhY2UgYW5kIGltcG9ydCBtZWNoYW5pc20KLXwtIDIuMS4zIEV4dGVuc2liaWxpdHksIHNob3dzIHRoZSBXU0RMIGV4dGVuc2liaWxpdHkgbWVjaGFuaXNtCi18LSAyLjIgVHlwZXMsIHNob3dzIHRoZSB1c2Ugb2YgWE1MIFNjaGVtYSB0eXBlcyBpbiBXU0RMCi18LSAyLjMgTWVzc2FnZXMsIDIuNCBQb3J0VHlwZXMsIDIuNSBCaW5kaW5ncyBhbmQgMi43IFNlcnZpY2VzLCBzaG93IHRoZSBtYWpvciBXU0RMIGVsZW1lbnRzIGFuZCB0aGVpciByZWxhdGlvbnMuCi18Ci18VGhlIFdTREwgY2xhc3NlcyBleHRlbmQgdGhlIGphdmF4LndzZGwgaW50ZXJmYWNlcyBkZWZpbmVkIGJ5IEpTUiAxMTAuIENsYXNzZXMgd2l0aCBpbnRlcmZhY2UgYW5kIGRhdGF0eXBlIHN0ZXJlb3R5cGVzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCB0aGVzZSBub24tTU9GIGludGVyZmFjZXMuCi0gICAgCi0gICAgZXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLSAgICBsb2dpY2FsX21vZGVscyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdAotCShvYmplY3QgQ2xhc3MgIldTRExFbGVtZW50IgotCSAgICBxdWlkICAgICAgIAkiM0FENUM2QTMwMkREIgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBsYW5ndWFnZSBlbGVtZW50LiIKLQkgICAgb3BlcmF0aW9ucyAJKGxpc3QgT3BlcmF0aW9ucwotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbiIKLQkJICAgIHF1aWQgICAgICAgCSIzQ0QxNTI5NjAwQzgiCi0JCSAgICByZXN1bHQgICAgIAkiRGVmaW5pdGlvbiIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJzZXRFbmNsb3NpbmdEZWZpbml0aW9uIgotCQkgICAgcXVpZCAgICAgICAJIjNDRDE1MkI4MDM0NyIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJkZWZpbml0aW9uIgotCQkJICAgIHR5cGUgICAgICAgCSJEZWZpbml0aW9uIikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiZG9jdW1lbnRhdGlvbkVsZW1lbnQiCi0JCSAgICBxdWlkICAgICAgIAkiM0NDRTQ0MzYwMkEzIgotCQkgICAgdHlwZSAgICAgICAJIkRPTUVsZW1lbnQiKQotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJlbGVtZW50IgotCQkgICAgYXR0cmlidXRlcyAJKGxpc3QgQXR0cmlidXRlX1NldAotCQkJKG9iamVjdCBBdHRyaWJ1dGUKLQkJCSAgICB0b29sICAgICAgIAkiRWNvcmUiCi0JCQkgICAgbmFtZSAgICAgICAJImlzVHJhbnNpZW50IgotCQkJICAgIHZhbHVlICAgICAgCVRSVUUpKQotCQkgICAgcXVpZCAgICAgICAJIjNGOTdEQkQzMDIwNyIKLQkJICAgIHR5cGUgICAgICAgCSJET01FbGVtZW50IikpCi0JICAgIGxhbmd1YWdlICAgCSJKYXZhIgotCSAgICBhYnN0cmFjdCAgIAlUUlVFKQotCShvYmplY3QgQ2xhc3MgIlBvcnRUeXBlIgotCSAgICBxdWlkICAgICAgIAkiM0FENUM3RjAwMUE1IgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBwb3J0VHlwZSBlbGVtZW50IG9mIHRoZSBXU0RMIHNwZWNpZmljYXRpb24gdmVyc2lvbiAxLjEgYW5kIGFuIEludGVyZmFjZSBjb21wb25lbnQgb2YgdGhlIFdTREwgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIDEuMi4gQSBwb3J0IHR5cGUgb3IgSW50ZXJmYWNlIGlzIGEgbmFtZWQgc2V0IG9mIGFic3RyYWN0IG9wZXJhdGlvbnMgYW5kIHRoZSBhYnN0cmFjdCBtZXNzYWdlcyBpbnZvbHZlZC4iCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1QzlCNzAxNTAiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmxlRWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RkNGQTAzM0EiKQotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNGNkYxRkQ4MDE5RiIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklQb3J0VHlwZSIKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QTVCRTAzMzEiKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAicU5hbWUiCi0JCSAgICBxdWlkICAgICAgIAkiM0FFQjQ4OEUwMDIzIgotCQkgICAgdHlwZSAgICAgICAJIlFOYW1lIikKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAidW5kZWZpbmVkIgotCQkgICAgcXVpZCAgICAgICAJIjNCRERGMUUzMDFFNSIKLQkJICAgIHR5cGUgICAgICAgCSJib29sZWFuIikpCi0JICAgIGxhbmd1YWdlICAgCSJKYXZhIikKLQkob2JqZWN0IENsYXNzICJPcGVyYXRpb24iCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1QzgwRDAzQ0UiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIG9wZXJhdGlvbiBlbGVtZW50LiBBIFdTREwgb3BlcmF0aW9uIGlzIGFuIGFic3RyYWN0IGRlc2NyaXB0aW9uIG9mIGFuIGFjdGlvbiBzdXBwb3J0ZWQgYnkgYSBzZXJ2aWNlLiIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNBRTlERTk4MDAzQyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2libGVFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQ0ZBMDMzQSIpCi0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0Y2RjFGRTIwMTcxIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SU9wZXJhdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QTc3NjAwRDEiKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAic3R5bGUiCi0JCSAgICBxdWlkICAgICAgIAkiM0FFQjQ3MjYwMUFDIgotCQkgICAgdHlwZSAgICAgICAJIk9wZXJhdGlvblR5cGUiKQotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJuYW1lIgotCQkgICAgcXVpZCAgICAgICAJIjNCREQ5NjQzMDA0QyIKLQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKQotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJ1bmRlZmluZWQiCi0JCSAgICBxdWlkICAgICAgIAkiM0JEREYyMzUwMDNFIgotCQkgICAgdHlwZSAgICAgICAJImJvb2xlYW4iKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIk1lc3NhZ2UiCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1Qzk1OTAwNzgiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIG1lc3NhZ2UgZWxlbWVudC4gQSBXU0RMIG1lc3NhZ2UgaXMgYW4gYWJzdHJhY3QsIHR5cGVkIGRlZmluaXRpb24gb2YgdGhlIGRhdGEgYmVpbmcgY29tbXVuaWNhdGVkLiIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNBRDVEMDU1MDFDNCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2libGVFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQ0ZBMDMzQSIpCi0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEE4RDEwMkJBIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SU1lc3NhZ2UiCi0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE4QUYwMDRGIikpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgInFOYW1lIgotCQkgICAgcXVpZCAgICAgICAJIjNBRUI0ODdDMDFGRSIKLQkJICAgIHR5cGUgICAgICAgCSJRTmFtZSIpCi0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgInVuZGVmaW5lZCIKLQkJICAgIHF1aWQgICAgICAgCSIzQkRERjFEMjAyMjYiCi0JCSAgICB0eXBlICAgICAgIAkiYm9vbGVhbiIpKQotCSAgICBsYW5ndWFnZSAgIAkiSmF2YSIpCi0JKG9iamVjdCBDbGFzcyAiUGFydCIKLQkgICAgcXVpZCAgICAgICAJIjNBRDVDRTFDMDMyRSIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgcGFydCBlbGVtZW50LiBQYXJ0cyBkZXNjcmliZSB0aGUgbG9naWNhbCBhYnN0cmFjdCBjb250ZW50IG9mIGEgbWVzc2FnZS4gRWFjaCBwYXJ0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIHR5cGUgZnJvbSBzb21lIHR5cGUgc3lzdGVtLiAiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QTk2RDAyRjEiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJUGFydCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QTkzRjAxQkUiKQotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNCODk3RTIzMDIzNyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2libGVFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQ0ZBMDMzQSIpKQotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJuYW1lIgotCQkgICAgcXVpZCAgICAgICAJIjNCQ0U3MEI3MDNDOCIKLQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKQotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJlbGVtZW50TmFtZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QjA4NzAzREIiCi0JCSAgICB0eXBlICAgICAgIAkiUU5hbWUiKQotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJ0eXBlTmFtZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQkNFNzBDMzAzQzUiCi0JCSAgICB0eXBlICAgICAgIAkiUU5hbWUiKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIkJpbmRpbmciCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1RDI4NjAyNjEiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIGJpbmRpbmcgZWxlbWVudC4gQSBiaW5kaW5nIGRlZmluZXMgbWVzc2FnZSBmb3JtYXQgYW5kIHByb3RvY29sIGRldGFpbHMgZm9yIG9wZXJhdGlvbnMgYW5kIG1lc3NhZ2VzIGRlZmluZWQgYnkgYSBwYXJ0aWN1bGFyIHBvcnRUeXBlLiBUaGVyZSBtYXkgYmUgYW55IG51bWJlciBvZiBiaW5kaW5ncyBmb3IgYSBnaXZlbiBwb3J0VHlwZS4iCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RkEwRjAyRjAiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmxlRWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RkNGQTAzM0EiKQotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNCODU5NTQxMDEyOSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklCaW5kaW5nIgotCQkgICAgcXVpZHUgICAgICAJIjNCODRBQkM2MDIxOSIpKQotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJxTmFtZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQUVCNDg5OTAxNEIiCi0JCSAgICB0eXBlICAgICAgIAkiUU5hbWUiKQotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJ1bmRlZmluZWQiCi0JCSAgICBxdWlkICAgICAgIAkiM0JEREYxRjQwMUEzIgotCQkgICAgdHlwZSAgICAgICAJImJvb2xlYW4iKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIkJpbmRpbmdPcGVyYXRpb24iCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1RDNDQjAxNDUiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIG9wZXJhdGlvbiBlbGVtZW50IHdpdGhpbiBhIGJpbmRpbmcuIEFuIG9wZXJhdGlvbiBlbGVtZW50IHdpdGhpbiBhIGJpbmRpbmcgc3BlY2lmaWVzIGJpbmRpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIHdpdGhpbiB0aGUgYmluZGluZydzIHBvcnRUeXBlLiAiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ2MDA5MjAyRjciCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmxlRWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RkNGQTAzM0EiKQotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNCODRBREU0MDFEQyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklCaW5kaW5nT3BlcmF0aW9uIgotCQkgICAgcXVpZHUgICAgICAJIjNCODRBREMwMDA3MiIpKQotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJuYW1lIgotCQkgICAgcXVpZCAgICAgICAJIjNCODlDNENCMDE5OSIKLQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIlNlcnZpY2UiCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1RDhGMDAyRjgiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIHNlcnZpY2UgZWxlbWVudC4gQSBzZXJ2aWNlIGdyb3VwcyBhIHNldCBvZiByZWxhdGVkIHBvcnRzIHRvZ2V0aGVyLiIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNBRDVGQTIwMDI1RSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2libGVFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQ0ZBMDMzQSIpCi0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NTk1NEUwMUI0IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SVNlcnZpY2UiCi0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEFCNDkwMjg3IikpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgInFOYW1lIgotCQkgICAgcXVpZCAgICAgICAJIjNBRUI0OEE0MDE1MSIKLQkJICAgIHR5cGUgICAgICAgCSJRTmFtZSIpCi0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgInVuZGVmaW5lZCIKLQkJICAgIHF1aWQgICAgICAgCSIzQkRERjIwRDAyMDMiCi0JCSAgICB0eXBlICAgICAgIAkiYm9vbGVhbiIpKQotCSAgICBsYW5ndWFnZSAgIAkiSmF2YSIpCi0JKG9iamVjdCBDbGFzcyAiUG9ydCIKLQkgICAgcXVpZCAgICAgICAJIjNBRDVEOTE3MDI4NiIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgcG9ydCBlbGVtZW50LiBBIHBvcnQgZGVmaW5lcyBhbiBpbmRpdmlkdWFsIGVuZHBvaW50IGJ5IHNwZWNpZnlpbmcgYSBzaW5nbGUgYWRkcmVzcyBmb3IgYSBiaW5kaW5nIgotCSAgICBzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0FENjAwQ0IwMEFBIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RXh0ZW5zaWJsZUVsZW1lbnQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUZDRkEwMzNBIikKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQjg1OTU0NTAyQzkiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJUG9ydCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QUI4MDAzMjYiKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAibmFtZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RDlBMDAzOTEiCi0JCSAgICB0eXBlICAgICAgIAkiU3RyaW5nIikpCi0JICAgIGxhbmd1YWdlICAgCSJKYXZhIikKLQkob2JqZWN0IENsYXNzICJFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkgICAgcXVpZCAgICAgICAJIjNBRDVEQkI2MDJBOSIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgZXh0ZW5zaWJpbGl0eSBlbGVtZW50LiBXU0RMIGFsbG93cyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIHJlcHJlc2VudGluZyBhIHNwZWNpZmljIHRlY2hub2xvZ3kgdW5kZXIgdmFyaW91cyBlbGVtZW50cyBkZWZpbmVkIGJ5IFdTREwuIgotCSAgICBzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEIxNDkwM0QwIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUV4dGVuc2liaWxpdHlFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNCODRCMTI0MDJBQiIpCi0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0JEREY1MzUwMkMzIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6V1NETEVsZW1lbnQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUM2QTMwMkREIikpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgInJlcXVpcmVkIgotCQkgICAgcXVpZCAgICAgICAJIjNBRjk1NDNDMDA3MyIKLQkJICAgIHR5cGUgICAgICAgCSJib29sZWFuIikKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiZWxlbWVudFR5cGUiCi0JCSAgICBhdHRyaWJ1dGVzIAkobGlzdCBBdHRyaWJ1dGVfU2V0Ci0JCQkob2JqZWN0IEF0dHJpYnV0ZQotCQkJICAgIHRvb2wgICAgICAgCSJFY29yZSIKLQkJCSAgICBuYW1lICAgICAgIAkiaXNUcmFuc2llbnQiCi0JCQkgICAgdmFsdWUgICAgICAJVFJVRSkpCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NUIyMUEwMjcxIgotCQkgICAgdHlwZSAgICAgICAJIlFOYW1lIikpCi0JICAgIGxhbmd1YWdlICAgCSJKYXZhIikKLQkob2JqZWN0IENsYXNzICJEZWZpbml0aW9uIgotCSAgICBxdWlkICAgICAgIAkiM0FENUU0M0YwMDhFIgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBkZWZpbml0aW9ucyBlbGVtZW50LiBUaGUgV1NETCBkZWZpbml0aW9ucyBlbGVtZW50IGlzIHRoZSByb290IGVsZW1lbnQgb2YgYSBXU0RMIGRvY3VtZW50LiIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNBRDVGREI4MDNENCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2libGVFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQ0ZBMDMzQSIpCi0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEIxRjgwMzgyIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SURlZmluaXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEIxRDkwMTQyIikpCi0JICAgIG9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldERvY3VtZW50IgotCQkgICAgcXVpZCAgICAgICAJIjNDRDE0RkMyMDEyQiIKLQkJICAgIHJlc3VsdCAgICAgCSJET01Eb2N1bWVudCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJzZXREb2N1bWVudCIKLQkJICAgIHF1aWQgICAgICAgCSIzQ0QxNTBERTAxRTciCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAiZG9jdW1lbnQiCi0JCQkgICAgdHlwZSAgICAgICAJIkRPTURvY3VtZW50IikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAidGFyZ2V0TmFtZXNwYWNlIgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVFNDc0MDA0RSIKLQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKQotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJsb2NhdGlvbiIKLQkJICAgIHF1aWQgICAgICAgCSI0MDM1MkI3QzAzOTYiCi0JCSAgICB0eXBlICAgICAgIAkiU3RyaW5nIikKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAicU5hbWUiCi0JCSAgICBxdWlkICAgICAgIAkiM0FFQjQ4NTcwMkY1IgotCQkgICAgdHlwZSAgICAgICAJIlFOYW1lIikKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiZW5jb2RpbmciCi0JCSAgICBxdWlkICAgICAgIAkiM0NBREQwMEQwMDBEIgotCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpKQotCSAgICBsYW5ndWFnZSAgIAkiSmF2YSIpCi0JKG9iamVjdCBDbGFzcyAiSW1wb3J0IgotCSAgICBxdWlkICAgICAgIAkiM0FENUU0RjkwM0RFIgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIFdTREwgaW1wb3J0IGVsZW1lbnQuIFdTREwgYWxsb3dzIGFzc29jaWF0aW5nIGEgbmFtZXNwYWNlIHdpdGggYSBkb2N1bWVudCBsb2NhdGlvbiB1c2luZyBhbiBpbXBvcnQgZWxlbWVudC4iCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RUU1ODAzN0EiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmxlRWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RkNGQTAzM0EiKQotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNGNkYyMDBEMDM0MCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklJbXBvcnQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEIyMDIwMTE5IikpCi0JICAgIG9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldFNjaGVtYSIKLQkJICAgIHF1aWQgICAgICAgCSIzQzg2NzJDMTAzNzkiCi0JCSAgICByZXN1bHQgICAgIAkiWFNEU2NoZW1hIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gInNldFNjaGVtYSIKLQkJICAgIHF1aWQgICAgICAgCSIzQzg2NzJDMTAzOTciCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAic2NoZW1hIgotCQkJICAgIHR5cGUgICAgICAgCSJYU0RTY2hlbWEiKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApKQotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJuYW1lc3BhY2VVUkkiCi0JCSAgICBxdWlkICAgICAgIAkiM0FENUU1MEEwMDM2IgotCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpCi0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImxvY2F0aW9uVVJJIgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVFNTE0MDIxMSIKLQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIkV4dGVuc2libGVFbGVtZW50IgotCSAgICBxdWlkICAgICAgIAkiM0FENUZDRkEwMzNBIgotCSAgICBkb2N1bWVudGF0aW9uIAkiIFdTREwgYWxsb3dzIGVsZW1lbnRzIHJlcHJlc2VudGluZyBhIHNwZWNpZmljIHRlY2hub2xvZ3kgKHJlZmVycmVkIHRvIGhlcmUgYXMgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cykgdW5kZXIgdmFyaW91cyBlbGVtZW50cyBkZWZpbmVkIGJ5IFdTREwuIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgcG9pbnQgb2YgZXh0ZW5zaWJpbGl0eS4iCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RkUzQzAzRDQiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpXU0RMRWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzZBMzAyREQiKQotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjQ5MEUwNUMyMDI5MCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklFbGVtZW50RXh0ZW5zaWJsZSIKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMDRCMDAwREEiKQotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjQ5NjU3RjA2MDA3RCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklBdHRyaWJ1dGVFeHRlbnNpYmxlIgotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUwNjNGMDJBRiIpKQotCSAgICBsYW5ndWFnZSAgIAkiSmF2YSIKLQkgICAgYWJzdHJhY3QgICAJVFJVRSkKLQkob2JqZWN0IENsYXNzICJJbnB1dCIKLQkgICAgcXVpZCAgICAgICAJIjNBRTA3ODlGMDA1OSIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgaW5wdXQgZWxlbWVudC4gQW4gaW5wdXQgZWxlbWVudCBzcGVjaWZpZXMgdGhlIGFic3RyYWN0IG1lc3NhZ2UgZm9ybWF0IGZvciB0aGUgaW5wdXQgb2YgdGhlIG9wZXJhdGlvbi4iCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzRjY3NzIyODAyRTciCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpNZXNzYWdlUmVmZXJlbmNlIgotCQkgICAgcXVpZHUgICAgICAJIjNGNjc3MURCMDJEQyIpCi0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0Y2RjFGRUUwMzFEIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUlucHV0IgotCQkgICAgcXVpZHUgICAgICAJIjNCODRBN0VFMDAxNSIpKQotCSAgICBsYW5ndWFnZSAgIAkiSmF2YSIpCi0JKG9iamVjdCBDbGFzcyAiT3V0cHV0IgotCSAgICBxdWlkICAgICAgIAkiM0FFMDc4QjYwMjMyIgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBvdXRwdXQgZWxlbWVudC4gQW4gb3V0cHV0IGVsZW1lbnQgc3BlY2lmaWVzIHRoZSBhYnN0cmFjdCBtZXNzYWdlIGZvcm1hdCBmb3IgdGhlIG91dHB1dCBvZiB0aGUgb3BlcmF0aW9uLiIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNGNjc3MjM1MDBERCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6Ok1lc3NhZ2VSZWZlcmVuY2UiCi0JCSAgICBxdWlkdSAgICAgIAkiM0Y2NzcxREIwMkRDIikKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzRjZGMUZGODAxQ0QiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJT3V0cHV0IgotCQkgICAgcXVpZHUgICAgICAJIjNCODRBODI5MDI3RCIpKQotCSAgICBsYW5ndWFnZSAgIAkiSmF2YSIpCi0JKG9iamVjdCBDbGFzcyAiRmF1bHQiCi0JICAgIHF1aWQgICAgICAgCSIzQUUwNzhCRTAxMDgiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIGZhdWx0IGVsZW1lbnQuIEZhdWx0IGVsZW1lbnRzIHNwZWNpZnkgdGhlIGFic3RyYWN0IG1lc3NhZ2UgZm9ybWF0IGZvciBhbnkgZXJyb3IgbWVzc2FnZXMgdGhhdCBtYXkgYmUgb3V0cHV0IGFzIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiAiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzRjY3NzIzRDAzMTkiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpNZXNzYWdlUmVmZXJlbmNlIgotCQkgICAgcXVpZHUgICAgICAJIjNGNjc3MURCMDJEQyIpCi0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0Y2RjIwMDIwMDJEIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUZhdWx0IgotCQkgICAgcXVpZHUgICAgICAJIjNCODRBODYxMDMxRCIpKQotCSAgICBsYW5ndWFnZSAgIAkiSmF2YSIpCi0JKG9iamVjdCBDbGFzcyAiQmluZGluZ0lucHV0IgotCSAgICBxdWlkICAgICAgIAkiM0FFMDhBODIwMkQ0IgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBpbnB1dCBlbGVtZW50IHdpdGhpbiBhIG9wZXJhdGlvbiB3aXRoaW4gYSBiaW5kaW5nLiBBbiBpbnB1dCBlbGVtZW50IHdpdGhpbiBhbiBvcGVyYXRpb24gd2l0aGluIGEgYmluZGluZyBzcGVjaWZpZXMgYmluZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIGlucHV0IG9mIHRoZSBvcGVyYXRpb24uICIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNCODRBRTFCMDExMyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklCaW5kaW5nSW5wdXQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEFERUIwMTAwIikKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQjg1QjU5QjAwNzIiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmxlRWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RkNGQTAzM0EiKSkKLQkgICAgb3BlcmF0aW9ucyAJKGxpc3QgT3BlcmF0aW9ucwotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0SW5wdXQiCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjUzQTQwMjAzIgotCQkgICAgcmVzdWx0ICAgICAJIklJbnB1dCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJzZXRJbnB1dCIKLQkJICAgIHF1aWQgICAgICAgCSIzQzg2NTNCNTAzQTIiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAiaW5wdXQiCi0JCQkgICAgdHlwZSAgICAgICAJIklJbnB1dCIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgIm5hbWUiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NUMxRUEwMjBFIgotCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpKQotCSAgICBsYW5ndWFnZSAgIAkiSmF2YSIpCi0JKG9iamVjdCBDbGFzcyAiQmluZGluZ091dHB1dCIKLQkgICAgcXVpZCAgICAgICAJIjNBRTA4QThGMDI4QyIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgb3V0cHV0IGVsZW1lbnQgd2l0aGluIGEgb3BlcmF0aW9uIHdpdGhpbiBhIGJpbmRpbmcuIEFuIG91dHB1dCBlbGVtZW50IHdpdGhpbiBhbiBvcGVyYXRpb24gd2l0aGluIGEgYmluZGluZyBzcGVjaWZpZXMgYmluZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIG91dHB1dCBvZiB0aGUgb3BlcmF0aW9uLiAiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QUU0MzAyQUIiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJQmluZGluZ091dHB1dCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QUUyMTAxMTEiKQotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNCODVCNUE0MDI3RSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2libGVFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQ0ZBMDMzQSIpKQotCSAgICBvcGVyYXRpb25zIAkobGlzdCBPcGVyYXRpb25zCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRPdXRwdXQiCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjUzRDkwMEYxIgotCQkgICAgcmVzdWx0ICAgICAJIklPdXRwdXQiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAic2V0T3V0cHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNDODY1M0YxMDMyNiIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJvdXRwdXQiCi0JCQkgICAgdHlwZSAgICAgICAJIklPdXRwdXQiKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApKQotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJuYW1lIgotCQkgICAgcXVpZCAgICAgICAJIjNCODVDMjAyMDBCRSIKLQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIkJpbmRpbmdGYXVsdCIKLQkgICAgcXVpZCAgICAgICAJIjNBRTA4QTlFMDNBNiIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgZmF1bHQgZWxlbWVudCB3aXRoaW4gYSBvcGVyYXRpb24gd2l0aGluIGEgYmluZGluZy4gQSBmYXVsdCBlbGVtZW50IHdpdGhpbiBhbiBvcGVyYXRpb24gd2l0aGluIGEgYmluZGluZyBzcGVjaWZpZXMgYmluZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIGZhdWx0IHdpdGggdGhlIHNhbWUgbmFtZS4gIgotCSAgICBzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0FFMDkzODYwMkM5IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RXh0ZW5zaWJsZUVsZW1lbnQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUZDRkEwMzNBIikKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QUU3MTAzMzMiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJQmluZGluZ0ZhdWx0IgotCQkgICAgcXVpZHUgICAgICAJIjNCODRBRTRGMDBCRCIpKQotCSAgICBvcGVyYXRpb25zIAkobGlzdCBPcGVyYXRpb25zCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRGYXVsdCIKLQkJICAgIHF1aWQgICAgICAgCSIzQzg2NTQxMzAzN0YiCi0JCSAgICByZXN1bHQgICAgIAkiSUZhdWx0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gInNldEZhdWx0IgotCQkgICAgcXVpZCAgICAgICAJIjNDODY1NDIxMDEwOSIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJmYXVsdCIKLQkJCSAgICB0eXBlICAgICAgIAkiSUZhdWx0IikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAibmFtZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg1QkY5RTAxNEEiCi0JCSAgICB0eXBlICAgICAgIAkiU3RyaW5nIikpCi0JICAgIGxhbmd1YWdlICAgCSJKYXZhIikKLQkob2JqZWN0IENsYXNzICJRTmFtZSIKLQkgICAgcXVpZCAgICAgICAJIjNBRThFRDIyMDE0MCIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5RTmFtZSBjbGFzcy4gQSBRTmFtZSBpcyBhIGZ1bGx5IHF1YWxpZmllZCBuYW1lLiIKLQkgICAgc3RlcmVvdHlwZSAJImRhdGF0eXBlIgotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgotCQkgICAgcXVpZCAgICAgICAJIjNCODQ5REE5MDAzRCIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIk5hbWVzcGFjZSIKLQkgICAgcXVpZCAgICAgICAJIjNBRUEzQ0QzMDAzMCIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIG5hbWVzcGFjZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgbmFtZXNwYWNlIHByZWZpeCB1c2VkIGluIGEgV1NETCBkb2N1bWVudC4iCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgIlVSSSIKLQkJICAgIHF1aWQgICAgICAgCSIzQUVBM0QyOTAxQjEiCi0JCSAgICB0eXBlICAgICAgIAkiU3RyaW5nIikKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAicHJlZml4IgotCQkgICAgcXVpZCAgICAgICAJIjNBRUEzRDMyMDIzNiIKLQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIk9wZXJhdGlvblR5cGUiCi0JICAgIHF1aWQgICAgICAgCSIzQUVCNDc4MjAyNEYiCi0JICAgIGRvY3VtZW50YXRpb24gCQotfE9ORV9XQVk9MQotfFJFUVVFU1RfUkVTUE9OU0U9MgotfFNPTElDSVRfUkVTUE9OU0U9MwotfE5PVElGSUNBVElPTj00Ci0JICAgIAotCSAgICBzdGVyZW90eXBlIAkiZGF0YXR5cGUiCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuT3BlcmF0aW9uVHlwZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg1QzM1MzAzRTMiCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpCi0JICAgIGxhbmd1YWdlICAgCSJKYXZhIikKLQkob2JqZWN0IENsYXNzICJJUG9ydFR5cGUiCi0JICAgIHF1aWQgICAgICAgCSIzQjg0QTVCRTAzMzEiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuUG9ydFR5cGUgbm9uLU1PRiBpbnRlcmZhY2UuIgotCSAgICBzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCSAgICBzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiNDkwRTIxOUYwMTg2IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUF0dHJpYnV0ZUV4dGVuc2libGUiCi0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTA2M0YwMkFGIikpCi0JICAgIG9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJKG9iamVjdCBPcGVyYXRpb24gImFkZE9wZXJhdGlvbiIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5NkFDMTAxQ0EiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAib3BlcmF0aW9uIgotCQkJICAgIHR5cGUgICAgICAgCSJJT3BlcmF0aW9uIikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0T3BlcmF0aW9uIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk2QkFGMDFBNCIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJuYW1lIgotCQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKQotCQkJKG9iamVjdCBQYXJhbWV0ZXIgImlucHV0TmFtZSIKLQkJCSAgICB0eXBlICAgICAgIAkiU3RyaW5nIikKLQkJCShvYmplY3QgUGFyYW1ldGVyICJvdXRwdXROYW1lIgotCQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJICAgIHJlc3VsdCAgICAgCSJJT3BlcmF0aW9uIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldE9wZXJhdGlvbnMiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTZCRjcwMzFBIgotCQkgICAgcmVzdWx0ICAgICAJIklMaXN0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuUG9ydFR5cGUiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEE2MzIwMDBEIgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJJT3BlcmF0aW9uIgotCSAgICBxdWlkICAgICAgIAkiM0I4NEE3NzYwMEQxIgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBqYXZheC53c2RsLk9wZXJhdGlvbiBub24tTU9GIGludGVyZmFjZS4iCi0JICAgIHN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSI0OTBFMjNENTAyOUYiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRWxlbWVudEV4dGVuc2libGUiCi0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTA0QjAwMERBIikpCi0JICAgIG9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJKG9iamVjdCBPcGVyYXRpb24gImFkZEZhdWx0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODk2QzQyMDA2NSIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJmYXVsdCIKLQkJCSAgICB0eXBlICAgICAgIAkiSUZhdWx0IikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0RmF1bHQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTZDNTkwMjhGIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgIm5hbWUiCi0JCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpKQotCQkgICAgcmVzdWx0ICAgICAJIklGYXVsdCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRGYXVsdHMiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTZDNzEwMkIxIgotCQkgICAgcmVzdWx0ICAgICAJIklNYXAiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0UGFyYW1ldGVyT3JkZXJpbmciCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTZDODEwMUIwIgotCQkgICAgcmVzdWx0ICAgICAJIklMaXN0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gInNldFBhcmFtZXRlck9yZGVyaW5nIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk2Qzk5MDMxRCIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJwYXJhbWV0ZXJPcmRlciIKLQkJCSAgICB0eXBlICAgICAgIAkiSUxpc3QiKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRJbnB1dCIKLQkJICAgIHF1aWQgICAgICAgCSIzQzg2NTRFNTAxOEQiCi0JCSAgICByZXN1bHQgICAgIAkiSUlucHV0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gInNldElucHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNDODY2MkM0MDEwNyIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJpbnB1dCIKLQkJCSAgICB0eXBlICAgICAgIAkiSUlucHV0IikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0T3V0cHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNDODY2MkU0MDA5NCIKLQkJICAgIHJlc3VsdCAgICAgCSJJT3V0cHV0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gInNldE91dHB1dCIKLQkJICAgIHF1aWQgICAgICAgCSIzQzg2NjJGMDAxRDIiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAib3V0cHV0IgotCQkJICAgIHR5cGUgICAgICAgCSJJT3V0cHV0IikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5PcGVyYXRpb24iCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEE3OTkwMTJCIgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJJSW5wdXQiCi0JICAgIHF1aWQgICAgICAgCSIzQjg0QTdFRTAwMTUiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuSW5wdXQgbm9uLU1PRiBpbnRlcmZhY2UuIgotCSAgICBzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCSAgICBzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiNDkwRTIyMzUwMkFGIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUF0dHJpYnV0ZUV4dGVuc2libGUiCi0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTA2M0YwMkFGIikpCi0JICAgIG9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldE1lc3NhZ2UiCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjYzMzEwMEVGIgotCQkgICAgcmVzdWx0ICAgICAJIklNZXNzYWdlIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gInNldE1lc3NhZ2UiCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjYzNDcwMjc3IgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgIm1lc3NhZ2UiCi0JCQkgICAgdHlwZSAgICAgICAJIklNZXNzYWdlIikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5JbnB1dCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QTgwMDAwMzkiCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpKQotCShvYmplY3QgQ2xhc3MgIklPdXRwdXQiCi0JICAgIHF1aWQgICAgICAgCSIzQjg0QTgyOTAyN0QiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuT3V0cHV0IG5vbi1NT0YgaW50ZXJmYWNlLiIKLQkgICAgc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjQ5MEUyMjM5MDE1NyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklBdHRyaWJ1dGVFeHRlbnNpYmxlIgotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUwNjNGMDJBRiIpKQotCSAgICBvcGVyYXRpb25zIAkobGlzdCBPcGVyYXRpb25zCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRNZXNzYWdlIgotCQkgICAgcXVpZCAgICAgICAJIjNDODY2NDNBMDM1RCIKLQkJICAgIHJlc3VsdCAgICAgCSJJTWVzc2FnZSIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJzZXRNZXNzYWdlIgotCQkgICAgcXVpZCAgICAgICAJIjNDODY2NDQ1MDFDOCIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJtZXNzYWdlIgotCQkJICAgIHR5cGUgICAgICAgCSJJTWVzc2FnZSIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuT3V0cHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODRBODM5MDFENSIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkpCi0JKG9iamVjdCBDbGFzcyAiSUZhdWx0IgotCSAgICBxdWlkICAgICAgIAkiM0I4NEE4NjEwMzFEIgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBqYXZheC53c2RsLkZhdWx0IG5vbi1NT0YgaW50ZXJmYWNlLiIKLQkgICAgc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjQ5MEUyMjQxMDA4QyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklBdHRyaWJ1dGVFeHRlbnNpYmxlIgotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUwNjNGMDJBRiIpKQotCSAgICBvcGVyYXRpb25zIAkobGlzdCBPcGVyYXRpb25zCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRNZXNzYWdlIgotCQkgICAgcXVpZCAgICAgICAJIjNDODY2NDZBMDBCRCIKLQkJICAgIHJlc3VsdCAgICAgCSJJTWVzc2FnZSIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJzZXRNZXNzYWdlIgotCQkgICAgcXVpZCAgICAgICAJIjNDODY2NDc1MDEzMSIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJtZXNzYWdlIgotCQkJICAgIHR5cGUgICAgICAgCSJJTWVzc2FnZSIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuRmF1bHQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEE4NzEwMjA4IgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJJTWVzc2FnZSIKLQkgICAgcXVpZCAgICAgICAJIjNCODRBOEFGMDA0RiIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5NZXNzYWdlIG5vbi1NT0YgaW50ZXJmYWNlIgotCSAgICBzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCSAgICBzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiNDkwRTIzREEwMzBEIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUVsZW1lbnRFeHRlbnNpYmxlIgotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUwNEIwMDBEQSIpKQotCSAgICBvcGVyYXRpb25zIAkobGlzdCBPcGVyYXRpb25zCi0JCShvYmplY3QgT3BlcmF0aW9uICJhZGRQYXJ0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODk3MjI0MDI3MyIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJwYXJ0IgotCQkJICAgIHR5cGUgICAgICAgCSJJUGFydCIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldFBhcnQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTcyM0QwMjMzIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgIm5hbWUiCi0JCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpKQotCQkgICAgcmVzdWx0ICAgICAJIklQYXJ0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldFBhcnRzIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk3MjU0MDI1RSIKLQkJICAgIHJlc3VsdCAgICAgCSJJTWFwIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldE9yZGVyZWRQYXJ0cyIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5NzI2MTAyMEQiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAicGFydE9yZGVyIgotCQkJICAgIHR5cGUgICAgICAgCSJJTGlzdCIpKQotCQkgICAgcmVzdWx0ICAgICAJIklMaXN0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuTWVzc2FnZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QThCQzAyNjAiCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpKQotCShvYmplY3QgQ2xhc3MgIklQYXJ0IgotCSAgICBxdWlkICAgICAgIAkiM0I4NEE5M0YwMUJFIgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBqYXZheC53c2RsLlBhcnQgbm9uLU1PRiBpbnRlcmZhY2UiCi0JICAgIHN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSI0OTBFMjM2NzAyNDIiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJQXR0cmlidXRlRXh0ZW5zaWJsZSIKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMDYzRjAyQUYiKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5QYXJ0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODRBOTUwMDIzMSIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkpCi0JKG9iamVjdCBDbGFzcyAiSVNlcnZpY2UiCi0JICAgIHF1aWQgICAgICAgCSIzQjg0QUI0OTAyODciCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuU2VydmljZSBub24tTU9GIGludGVyZmFjZS4iCi0JICAgIHN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSI0OTBFMjNFNTAyQkYiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRWxlbWVudEV4dGVuc2libGUiCi0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTA0QjAwMERBIikpCi0JICAgIG9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJKG9iamVjdCBPcGVyYXRpb24gImFkZFBvcnQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTVENTYwMUQxIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgInBvcnQiCi0JCQkgICAgdHlwZSAgICAgICAJIklQb3J0IikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0UG9ydHMiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTVEQTIwMDM2IgotCQkgICAgcmVzdWx0ICAgICAJIklNYXAiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0UG9ydCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5NURCMDAxQkMiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAibmFtZSIKLQkJCSAgICB0eXBlICAgICAgIAkiU3RyaW5nIikpCi0JCSAgICByZXN1bHQgICAgIAkiSVBvcnQiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5TZXJ2aWNlIgotCQkgICAgcXVpZCAgICAgICAJIjNCODRBQjVCMDAzRSIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkpCi0JKG9iamVjdCBDbGFzcyAiSVBvcnQiCi0JICAgIHF1aWQgICAgICAgCSIzQjg0QUI4MDAzMjYiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuUG9ydCBub24tTU9GIGludGVyZmFjZS4iCi0JICAgIHN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSI0OTBFMjNFQTAxMTkiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRWxlbWVudEV4dGVuc2libGUiCi0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTA0QjAwMERBIikpCi0JICAgIG9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldEJpbmRpbmciCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjUxRjMwMkI1IgotCQkgICAgcmVzdWx0ICAgICAJIklCaW5kaW5nIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gInNldEJpbmRpbmciCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjUyNjMwMkYyIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgImJpbmRpbmciCi0JCQkgICAgdHlwZSAgICAgICAJIklCaW5kaW5nIikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5Qb3J0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODRBQjhDMDAxNiIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkpCi0JKG9iamVjdCBDbGFzcyAiSUJpbmRpbmciCi0JICAgIHF1aWQgICAgICAgCSIzQjg0QUJDNjAyMTkiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuQmluZGluZyBub24tTU9GIGludGVyZmFjZS4iCi0JICAgIHN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSI0OTBFMjNFRTAwQkIiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRWxlbWVudEV4dGVuc2libGUiCi0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTA0QjAwMERBIikpCi0JICAgIG9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJKG9iamVjdCBPcGVyYXRpb24gImFkZEJpbmRpbmdPcGVyYXRpb24iCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTVGMTYwMTUzIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgImJpbmRpbmdPcGVyYXRpb24iCi0JCQkgICAgdHlwZSAgICAgICAJIklCaW5kaW5nT3BlcmF0aW9uIikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0QmluZGluZ09wZXJhdGlvbiIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5NUY1MDAwNjYiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAibmFtZSIKLQkJCSAgICB0eXBlICAgICAgIAkiU3RyaW5nIikKLQkJCShvYmplY3QgUGFyYW1ldGVyICJpbnB1dE5hbWUiCi0JCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpCi0JCQkob2JqZWN0IFBhcmFtZXRlciAib3V0cHV0TmFtZSIKLQkJCSAgICB0eXBlICAgICAgIAkiU3RyaW5nIikpCi0JCSAgICByZXN1bHQgICAgIAkiSUJpbmRpbmdPcGVyYXRpb24iCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0QmluZGluZ09wZXJhdGlvbnMiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTVGQTQwMUM1IgotCQkgICAgcmVzdWx0ICAgICAJIklMaXN0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldFBvcnRUeXBlIgotCQkgICAgcXVpZCAgICAgICAJIjNDODY1MkE5MDI4NCIKLQkJICAgIHJlc3VsdCAgICAgCSJJUG9ydFR5cGUiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAic2V0UG9ydFR5cGUiCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjUyQkUwMUE4IgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgInBvcnRUeXBlIgotCQkJICAgIHR5cGUgICAgICAgCSJJUG9ydFR5cGUiKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApKQotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLkJpbmRpbmciCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEFCQ0YwMzAyIgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJJQmluZGluZ09wZXJhdGlvbiIKLQkgICAgcXVpZCAgICAgICAJIjNCODRBREMwMDA3MiIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uIG5vbi1NT0YgaW50ZXJmYWNlLiIKLQkgICAgc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjQ5MEUyM0YzMDE3NyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklFbGVtZW50RXh0ZW5zaWJsZSIKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMDRCMDAwREEiKSkKLQkgICAgb3BlcmF0aW9ucyAJKGxpc3QgT3BlcmF0aW9ucwotCQkob2JqZWN0IE9wZXJhdGlvbiAiYWRkQmluZGluZ0ZhdWx0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODk2MEJDMDA0MSIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJiaW5kaW5nRmF1bHQiCi0JCQkgICAgdHlwZSAgICAgICAJIklCaW5kaW5nRmF1bHQiKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRCaW5kaW5nRmF1bHQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTYwRDkwMDlEIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgIm5hbWUiCi0JCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpKQotCQkgICAgcmVzdWx0ICAgICAJIklCaW5kaW5nRmF1bHQiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0QmluZGluZ0ZhdWx0cyIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5NjBGQzAwNjEiCi0JCSAgICByZXN1bHQgICAgIAkiSU1hcCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRPcGVyYXRpb24iCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjUzMkQwMDE3IgotCQkgICAgcmVzdWx0ICAgICAJIklPcGVyYXRpb24iCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAic2V0T3BlcmF0aW9uIgotCQkgICAgcXVpZCAgICAgICAJIjNDODY1MzNGMDM3QiIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJvcGVyYXRpb24iCi0JCQkgICAgdHlwZSAgICAgICAJIklPcGVyYXRpb24iKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRCaW5kaW5nSW5wdXQiCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjU1MDkwMERBIgotCQkgICAgcmVzdWx0ICAgICAJIklCaW5kaW5nSW5wdXQiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAic2V0QmluZGluZ0lucHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNDODY1NTFEMDA3RiIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJiaW5kaW5nSW5wdXQiCi0JCQkgICAgdHlwZSAgICAgICAJIklCaW5kaW5nSW5wdXQiKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRCaW5kaW5nT3V0cHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNDODY1NTM0MDM0OSIKLQkJICAgIHJlc3VsdCAgICAgCSJJQmluZGluZ091dHB1dCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJzZXRCaW5kaW5nT3V0cHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNDODY1NTQ3MDJBNiIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJiaW5kaW5nT3V0cHV0IgotCQkJICAgIHR5cGUgICAgICAgCSJJQmluZGluZ091dHB1dCIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QURDQjAyMUMiCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpKQotCShvYmplY3QgQ2xhc3MgIklCaW5kaW5nSW5wdXQiCi0JICAgIHF1aWQgICAgICAgCSIzQjg0QURFQjAxMDAiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuQmluZGluZ0lucHV0IG5vbi1NT0YgaW50ZXJmYWNlLiIKLQkgICAgc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjQ5MEUyM0Y3MDIzMiIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklFbGVtZW50RXh0ZW5zaWJsZSIKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMDRCMDAwREEiKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5CaW5kaW5nSW5wdXQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEFERkUwMDBEIgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJJQmluZGluZ091dHB1dCIKLQkgICAgcXVpZCAgICAgICAJIjNCODRBRTIxMDExMSIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0IG5vbi1NT0YgaW50ZXJmYWNlLiIKLQkgICAgc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjQ5MEUyM0ZCMDBDQiIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklFbGVtZW50RXh0ZW5zaWJsZSIKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMDRCMDAwREEiKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODRBRTJEMDA1MCIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkpCi0JKG9iamVjdCBDbGFzcyAiSUJpbmRpbmdGYXVsdCIKLQkgICAgcXVpZCAgICAgICAJIjNCODRBRTRGMDBCRCIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQgbm9uLU1PRiBpbnRlcmZhY2UuIgotCSAgICBzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCSAgICBzdXBlcmNsYXNzZXMgCShsaXN0IGluaGVyaXRhbmNlX3JlbGF0aW9uc2hpcF9saXN0Ci0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiNDkwRTI0MDUwMTY3IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUVsZW1lbnRFeHRlbnNpYmxlIgotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUwNEIwMDBEQSIpKQotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLkJpbmRpbmdGYXVsdCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QUU1RjAwMkEiCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpKQotCShvYmplY3QgQ2xhc3MgIkRPTUVsZW1lbnQiCi0JICAgIHF1aWQgICAgICAgCSIzQjg0QUYzMjAzREIiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG9yZy53M2MuZG9tLkVsZW1lbnQgbm9uLU1PRiBpbnRlcmZhY2UuIgotCSAgICBzdGVyZW90eXBlIAkiZGF0YXR5cGUiCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgIm9yZy53M2MuZG9tLkVsZW1lbnQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEFGNTYwMjkyIgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJJRXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JICAgIHF1aWQgICAgICAgCSIzQjg0QjEyNDAyQUIiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGphdmF4LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgbm9uLU1PRiBpbnRlcmZhY2UuIgotCSAgICBzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEIxMzUwM0QxIgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJJRGVmaW5pdGlvbiIKLQkgICAgcXVpZCAgICAgICAJIjNCODRCMUQ5MDE0MiIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5EZWZpbml0aW9uIG5vbi1NT0YgaW50ZXJmYWNlLiIKLQkgICAgc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjQ5MEUyM0QyMDI4MCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklFbGVtZW50RXh0ZW5zaWJsZSIKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMDRCMDAwREEiKSkKLQkgICAgb3BlcmF0aW9ucyAJKGxpc3QgT3BlcmF0aW9ucwotCQkob2JqZWN0IE9wZXJhdGlvbiAiYWRkQmluZGluZyIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5ODhGMTAzOUQiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAiYmluZGluZyIKLQkJCSAgICB0eXBlICAgICAgIAkiSUJpbmRpbmciKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJhZGRJbXBvcnQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTg5NDkwMjU5IgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgImltcG9ydERlZiIKLQkJCSAgICB0eXBlICAgICAgIAkiSUltcG9ydCIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImFkZE1lc3NhZ2UiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTg5NkUwMDVFIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgIm1lc3NhZ2UiCi0JCQkgICAgdHlwZSAgICAgICAJIklNZXNzYWdlIikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiYWRkTmFtZXNwYWNlIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4OTg0MDA0QiIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJwcmVmaXgiCi0JCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpCi0JCQkob2JqZWN0IFBhcmFtZXRlciAibmFtZXNwYWNlVVJJIgotCQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJhZGRQb3J0VHlwZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5ODlDNTAwNDUiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAicG9ydFR5cGUiCi0JCQkgICAgdHlwZSAgICAgICAJIklQb3J0VHlwZSIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImFkZFNlcnZpY2UiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OTg5RTQwMUVFIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgInNlcnZpY2UiCi0JCQkgICAgdHlwZSAgICAgICAJIklTZXJ2aWNlIikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiY3JlYXRlQmluZGluZ0ZhdWx0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4QTE3MDM4QyIKLQkJICAgIHJlc3VsdCAgICAgCSJJQmluZGluZ0ZhdWx0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImNyZWF0ZUJpbmRpbmdJbnB1dCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEEzMjAyODYiCi0JCSAgICByZXN1bHQgICAgIAkiSUJpbmRpbmdJbnB1dCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJjcmVhdGVCaW5kaW5nT3V0cHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4QTQ2MDEzQiIKLQkJICAgIHJlc3VsdCAgICAgCSJJQmluZGluZ091dHB1dCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJjcmVhdGVCaW5kaW5nT3BlcmF0aW9uIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4QTVDMDBCMCIKLQkJICAgIHJlc3VsdCAgICAgCSJJQmluZGluZ09wZXJhdGlvbiIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJjcmVhdGVCaW5kaW5nIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4OUZFMDM3QyIKLQkJICAgIHJlc3VsdCAgICAgCSJJQmluZGluZyIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJjcmVhdGVGYXVsdCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEE3NTAyRTciCi0JCSAgICByZXN1bHQgICAgIAkiSUZhdWx0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImNyZWF0ZUltcG9ydCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEE4MzAxNEMiCi0JCSAgICByZXN1bHQgICAgIAkiSUltcG9ydCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJjcmVhdGVJbnB1dCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEE5RDAzM0UiCi0JCSAgICByZXN1bHQgICAgIAkiSUlucHV0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImNyZWF0ZU1lc3NhZ2UiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OThBQUYwMjU0IgotCQkgICAgcmVzdWx0ICAgICAJIklNZXNzYWdlIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImNyZWF0ZU9wZXJhdGlvbiIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEFDMjAzQzQiCi0JCSAgICByZXN1bHQgICAgIAkiSU9wZXJhdGlvbiIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJjcmVhdGVPdXRwdXQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OThBRTgwMEVEIgotCQkgICAgcmVzdWx0ICAgICAJIklPdXRwdXQiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiY3JlYXRlUGFydCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEFGODAyNkQiCi0JCSAgICByZXN1bHQgICAgIAkiSVBhcnQiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiY3JlYXRlUG9ydCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEIwODAxREEiCi0JCSAgICByZXN1bHQgICAgIAkiSVBvcnQiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiY3JlYXRlUG9ydFR5cGUiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OThCMTUwMzlCIgotCQkgICAgcmVzdWx0ICAgICAJIklQb3J0VHlwZSIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJjcmVhdGVTZXJ2aWNlIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4QjMyMDEzQSIKLQkJICAgIHJlc3VsdCAgICAgCSJJU2VydmljZSIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRCaW5kaW5nIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4QjQyMDA3NSIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJuYW1lIgotCQkJICAgIHR5cGUgICAgICAgCSJRTmFtZSIpKQotCQkgICAgcmVzdWx0ICAgICAJIklCaW5kaW5nIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldEJpbmRpbmdzIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4QjkyMDM0MSIKLQkJICAgIHJlc3VsdCAgICAgCSJJTWFwIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldEltcG9ydHMiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OThCQ0QwMDYwIgotCQkgICAgcmVzdWx0ICAgICAJIklNYXAiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0SW1wb3J0cyIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEJFNzAxNDQiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAibmFtZXNwYWNlVVJJIgotCQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJICAgIHJlc3VsdCAgICAgCSJJTGlzdCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRNZXNzYWdlIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4QzE3MDEwNyIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJuYW1lIgotCQkJICAgIHR5cGUgICAgICAgCSJRTmFtZSIpKQotCQkgICAgcmVzdWx0ICAgICAJIklNZXNzYWdlIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldE1lc3NhZ2VzIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4QzNFMDAxRCIKLQkJICAgIHJlc3VsdCAgICAgCSJJTWFwIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldE5hbWVzcGFjZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEM2MjAxNEIiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAicHJlZml4IgotCQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJICAgIHJlc3VsdCAgICAgCSJTdHJpbmciCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0TmFtZXNwYWNlcyIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEM3NDAxMTUiCi0JCSAgICByZXN1bHQgICAgIAkiSU1hcCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRQb3J0VHlwZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OENCRTAwNzEiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAibmFtZSIKLQkJCSAgICB0eXBlICAgICAgIAkiUU5hbWUiKSkKLQkJICAgIHJlc3VsdCAgICAgCSJJUG9ydFR5cGUiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0UG9ydFR5cGVzIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk4Q0RBMDFDNiIKLQkJICAgIHJlc3VsdCAgICAgCSJJTWFwIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldFByZWZpeCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OENGRDAwMTciCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAibmFtZXNwYWNlVVJJIgotCQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkKLQkJICAgIHJlc3VsdCAgICAgCSJTdHJpbmciCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0U2VydmljZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEQyMzAwQTgiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAibmFtZSIKLQkJCSAgICB0eXBlICAgICAgIAkiUU5hbWUiKSkKLQkJICAgIHJlc3VsdCAgICAgCSJJU2VydmljZSIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRTZXJ2aWNlcyIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5OEQzQjAzQ0UiCi0JCSAgICByZXN1bHQgICAgIAkiSU1hcCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRFeHRlbnNpb25SZWdpc3RyeSIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg5RDVCODAxMkIiCi0JCSAgICByZXN1bHQgICAgIAkiSUV4dGVuc2lvblJlZ2lzdHJ5IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gInNldEV4dGVuc2lvblJlZ2lzdHJ5IgotCQkgICAgcXVpZCAgICAgICAJIjNCODlENUQ3MDNCQiIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJleHRlbnNpb25SZWdpc3RyeSIKLQkJCSAgICB0eXBlICAgICAgIAkiSUV4dGVuc2lvblJlZ2lzdHJ5IikpCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0RG9jdW1lbnRCYXNlVVJJIgotCQkgICAgcXVpZCAgICAgICAJIjNCODlENUZFMDIwOCIKLQkJICAgIHJlc3VsdCAgICAgCSJTdHJpbmciCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAic2V0RG9jdW1lbnRCYXNlVVJJIgotCQkgICAgcXVpZCAgICAgICAJIjNCODlENjE4MDMyOCIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJkb2N1bWVudEJhc2UiCi0JCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImNyZWF0ZVR5cGVzIgotCQkgICAgcXVpZCAgICAgICAJIjNDQUREMDU2MDA4MCIKLQkJICAgIHJlc3VsdCAgICAgCSJJVHlwZXMiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAicmVtb3ZlU2VydmljZSIKLQkJICAgIHF1aWQgICAgICAgCSIzQ0FERDA3RTAwNEMiCi0JCSAgICBwYXJhbWV0ZXJzIAkobGlzdCBQYXJhbWV0ZXJzCi0JCQkob2JqZWN0IFBhcmFtZXRlciAibmFtZSIKLQkJCSAgICB0eXBlICAgICAgIAkiUU5hbWUiKSkKLQkJICAgIHJlc3VsdCAgICAgCSJJU2VydmljZSIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJyZW1vdmVCaW5kaW5nIgotCQkgICAgcXVpZCAgICAgICAJIjNDQUREMEJBMDM1NSIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJuYW1lIgotCQkJICAgIHR5cGUgICAgICAgCSJRTmFtZSIpKQotCQkgICAgcmVzdWx0ICAgICAJIklCaW5kaW5nIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gInJlbW92ZVBvcnRUeXBlIgotCQkgICAgcXVpZCAgICAgICAJIjNDQUREMEQ4MDI5QSIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJuYW1lIgotCQkJICAgIHR5cGUgICAgICAgCSJRTmFtZSIpKQotCQkgICAgcmVzdWx0ICAgICAJIklQb3J0VHlwZSIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJyZW1vdmVNZXNzYWdlIgotCQkgICAgcXVpZCAgICAgICAJIjNDQUREMEZBMDMwNyIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJuYW1lIgotCQkJICAgIHR5cGUgICAgICAgCSJRTmFtZSIpKQotCQkgICAgcmVzdWx0ICAgICAJIklNZXNzYWdlIgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldFR5cGVzIgotCQkgICAgcXVpZCAgICAgICAJIjNDODY3MDZGMDMxQiIKLQkJICAgIHJlc3VsdCAgICAgCSJJVHlwZXMiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAic2V0VHlwZXMiCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjcwOTUwMEVFIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgInR5cGVzIgotCQkJICAgIHR5cGUgICAgICAgCSJJVHlwZXMiKSkKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApKQotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLkRlZmluaXRpb24iCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEIxRTcwMkExIgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJJSW1wb3J0IgotCSAgICBxdWlkICAgICAgIAkiM0I4NEIyMDIwMTE5IgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBqYXZheC53c2RsLkltcG9ydCBub24tTU9GIGludGVyZmFjZS4iCi0JICAgIHN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSI0OTBFMjI0RTAyQ0UiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJQXR0cmlidXRlRXh0ZW5zaWJsZSIKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMDYzRjAyQUYiKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5JbXBvcnQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEIyMEMwMkVBIgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJJTGlzdCIKLQkgICAgcXVpZCAgICAgICAJIjNCODVDMEEyMDNDNSIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgbm9uLU1PRiBqYXZhLnV0aWwuTGlzdCBpbnRlcmZhY2UuIgotCSAgICBzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZhLnV0aWwuTGlzdCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg1QzBBRjAyOTciCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpKQotCShvYmplY3QgQ2xhc3MgIklNYXAiCi0JICAgIHF1aWQgICAgICAgCSIzQjg5NkIwMzAwRDQiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG5vbi1NT0YgamF2YS51dGlsLk1hcCBpbnRlcmZhY2UuIgotCSAgICBzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZhLnV0aWwuTWFwIgotCQkgICAgcXVpZCAgICAgICAJIjNCODk2QjExMDJCNSIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkpCi0JKG9iamVjdCBDbGFzcyAiSVVSTCIKLQkgICAgcXVpZCAgICAgICAJIjNCODlENTYzMDI3NCIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgbm9uLU1PRiBqYXZhLm5ldC5VUkwgaW50ZXJmYWNlLiIKLQkgICAgc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YS5uZXQuVVJMIgotCQkgICAgcXVpZCAgICAgICAJIjNCODlENTZFMDNFMiIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkpCi0JKG9iamVjdCBDbGFzcyAiSUV4dGVuc2lvblJlZ2lzdHJ5IgotCSAgICBxdWlkICAgICAgIAkiM0I4OUQ1OTMwMkE1IgotCSAgICBkb2N1bWVudGF0aW9uIAkiVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBub24tTU9GIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpb25SZWdpc3RyeSBpbnRlcmZhY2UuIgotCSAgICBzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnkiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4OUQ1OUYwMkU4IgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIpKSkKLQkob2JqZWN0IENsYXNzICJUeXBlcyIKLQkgICAgcXVpZCAgICAgICAJIjNCOEJFOUE2MDNBOCIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgdHlwZXMgZWxlbWVudC4gVGhlIHR5cGVzIGVsZW1lbnQgZW5jbG9zZXMgZGF0YSB0eXBlIGRlZmluaXRpb25zIHRoYXQgYXJlIHJlbGV2YW50IGZvciB0aGUgZXhjaGFuZ2VkIG1lc3NhZ2VzLiIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNCOEJFQjAxMDMxMSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2libGVFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQ0ZBMDMzQSIpCi0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiM0NBRENEM0IwMzgwIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SVR5cGVzIgotCQkgICAgcXVpZHUgICAgICAJIjNDQURDQkIyMDA1MCIpKQotCSAgICBvcGVyYXRpb25zIAkobGlzdCBPcGVyYXRpb25zCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRTY2hlbWFzIgotCQkgICAgcXVpZCAgICAgICAJIjNDQURDRjM4MDNFNiIKLQkJICAgIHJlc3VsdCAgICAgCSJJTGlzdCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRTY2hlbWFzIgotCQkgICAgcXVpZCAgICAgICAJIjNDQURDRjdFMDMwMSIKLQkJICAgIHBhcmFtZXRlcnMgCShsaXN0IFBhcmFtZXRlcnMKLQkJCShvYmplY3QgUGFyYW1ldGVyICJuYW1lc3BhY2VVUkkiCi0JCQkgICAgdHlwZSAgICAgICAJIlN0cmluZyIpKQotCQkgICAgcmVzdWx0ICAgICAJIklMaXN0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkpKQotCShvYmplY3QgQ2xhc3MgIklJdGVyYXRvciIKLQkgICAgcXVpZCAgICAgICAJIjNDNDY4N0RBMDE2NyIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgbm9uLU1PRiBqYXZhLnV0aWwuSXRlcmF0b3IgaW50ZXJmYWNlLiIKLQkgICAgc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YS51dGlsLkl0ZXJhdG9yIgotCQkgICAgcXVpZCAgICAgICAJIjNDNDY4ODA4MDBCOSIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkpCi0JKG9iamVjdCBDbGFzcyAiV1NETEV4Y2VwdGlvbiIKLQkgICAgcXVpZCAgICAgICAJIjNDNDY4OTY1MDMxMyIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5FeGNlcHRpb24gY2xhc3MuIgotCSAgICBzdGVyZW90eXBlIAkiZGF0YXR5cGUiCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuV1NETEV4Y2VwdGlvbiIKLQkJICAgIHF1aWQgICAgICAgCSIzQzQ2ODk3NDAzMTUiCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpKQotCShvYmplY3QgQ2xhc3MgIklUeXBlcyIKLQkgICAgcXVpZCAgICAgICAJIjNDQURDQkIyMDA1MCIKLQkgICAgZG9jdW1lbnRhdGlvbiAJIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgamF2YXgud3NkbC5UeXBlcyBub24tTU9GIGludGVyZmFjZSIKLQkgICAgc3RlcmVvdHlwZSAJIkludGVyZmFjZSIKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiamF2YXgud3NkbC5UeXBlcyIKLQkJICAgIHF1aWQgICAgICAgCSIzQ0FEQ0JGMTAxNzMiCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpKQotCShvYmplY3QgQ2xhc3MgIlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkgICAgcXVpZCAgICAgICAJIjNDQjI0QUMwMDJBRSIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNDQjI0QUVDMDFDQiIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2liaWxpdHlFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIpKSkKLQkob2JqZWN0IENsYXNzICJYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkgICAgcXVpZCAgICAgICAJIjNDQzM2MEQ3MDM5QyIKLQkgICAgc3VwZXJjbGFzc2VzIAkobGlzdCBpbmhlcml0YW5jZV9yZWxhdGlvbnNoaXBfbGlzdAotCQkob2JqZWN0IEluaGVyaXRhbmNlX1JlbGF0aW9uc2hpcAotCQkgICAgcXVpZCAgICAgICAJIjNDQzM2MjdGMDBCNyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2liaWxpdHlFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIpCi0JCShvYmplY3QgSW5oZXJpdGFuY2VfUmVsYXRpb25zaGlwCi0JCSAgICBxdWlkICAgICAgIAkiNDk2NTY4OUQwMTI4IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SVNjaGVtYSIKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFNzFDNjAwNkQiKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAiZG9jdW1lbnRCYXNlVVJJIgotCQkgICAgcXVpZCAgICAgICAJIjQ5MEU4MDY5MDBFQSIKLQkJICAgIHR5cGUgICAgICAgCSJTdHJpbmciKSkpCi0JKG9iamVjdCBDbGFzcyAiRE9NRG9jdW1lbnQiCi0JICAgIHF1aWQgICAgICAgCSIzQ0QxNTAyQzAyM0IiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG9yZy53M2MuZG9tLkRvY3VtZW50IG5vbi1NT0YgaW50ZXJmYWNlLiIKLQkgICAgc3RlcmVvdHlwZSAJImRhdGF0eXBlIgotCSAgICBjbGFzc19hdHRyaWJ1dGVzIAkobGlzdCBjbGFzc19hdHRyaWJ1dGVfbGlzdAotCQkob2JqZWN0IENsYXNzQXR0cmlidXRlICJvcmcudzNjLmRvbS5Eb2N1bWVudCIKLQkJICAgIHF1aWQgICAgICAgCSIzQ0QxNTA2MDAxODIiCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIikpKQotCShvYmplY3QgQ2xhc3MgIk1lc3NhZ2VSZWZlcmVuY2UiCi0JICAgIHF1aWQgICAgICAgCSIzRjY3NzFEQjAyREMiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSIzRjc2MkE2QTAzMDgiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmxlRWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RkNGQTAzM0EiKSkKLQkgICAgY2xhc3NfYXR0cmlidXRlcyAJKGxpc3QgY2xhc3NfYXR0cmlidXRlX2xpc3QKLQkJKG9iamVjdCBDbGFzc0F0dHJpYnV0ZSAibmFtZSIKLQkJICAgIHF1aWQgICAgICAgCSIzRjY3ODBBMDAxQUIiCi0JCSAgICB0eXBlICAgICAgIAkiU3RyaW5nIgotCQkgICAgZXhwb3J0Q29udHJvbCAJIlByb3RlY3RlZCIpKQotCSAgICBsYW5ndWFnZSAgIAkiSmF2YSIKLQkgICAgYWJzdHJhY3QgICAJVFJVRSkKLQkob2JqZWN0IENsYXNzICJJRWxlbWVudEV4dGVuc2libGUiCi0JICAgIHF1aWQgICAgICAgCSI0OTBFMDRCMDAwREEiCi0JICAgIHN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JICAgIG9wZXJhdGlvbnMgCShsaXN0IE9wZXJhdGlvbnMKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldEV4dGVuc2liaWxpdHlFbGVtZW50cyIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg1QzEyQzAzQ0QiCi0JCSAgICByZXN1bHQgICAgIAkiSUxpc3QiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NUMxNDcwMjk1IgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgImV4dEVsZW1lbnQiCi0JCQkgICAgdHlwZSAgICAgICAJIklFeHRlbnNpYmlsaXR5RWxlbWVudCIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5FbGVtZW50RXh0ZW5zaWJsZSIKLQkJICAgIHF1aWQgICAgICAgCSI0OTBFMDRFOTAyRUUiCi0JCSAgICBzdGVyZW90eXBlIAkiamF2YWNsYXNzIgotCQkgICAgdHlwZSAgICAgICAJInR5cGUiKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIklBdHRyaWJ1dGVFeHRlbnNpYmxlIgotCSAgICBxdWlkICAgICAgIAkiNDkwRTA2M0YwMkFGIgotCSAgICBzdGVyZW90eXBlIAkiSW50ZXJmYWNlIgotCSAgICBvcGVyYXRpb25zIAkobGlzdCBPcGVyYXRpb25zCi0JCShvYmplY3QgT3BlcmF0aW9uICJnZXRFeHRlbnNpb25BdHRyaWJ1dGUiCi0JCSAgICBxdWlkICAgICAgIAkiM0M0NjhBMkQwMkQ1IgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgIm5hbWUiCi0JCQkgICAgdHlwZSAgICAgICAJIlFOYW1lIikpCi0JCSAgICByZXN1bHQgICAgIAkiSU9iamVjdCIKLQkJICAgIGNvbmN1cnJlbmN5IAkiU2VxdWVudGlhbCIKLQkJICAgIG9wRXhwb3J0Q29udHJvbCAJIlB1YmxpYyIKLQkJICAgIHVpZCAgICAgICAgCTApCi0JCShvYmplY3QgT3BlcmF0aW9uICJzZXRFeHRlbnNpb25BdHRyaWJ1dGUiCi0JCSAgICBxdWlkICAgICAgIAkiM0M0Njg4NDUwMDUyIgotCQkgICAgcGFyYW1ldGVycyAJKGxpc3QgUGFyYW1ldGVycwotCQkJKG9iamVjdCBQYXJhbWV0ZXIgIm5hbWUiCi0JCQkgICAgdHlwZSAgICAgICAJIlFOYW1lIikKLQkJCShvYmplY3QgUGFyYW1ldGVyICJ2YWx1ZSIKLQkJCSAgICB0eXBlICAgICAgIAkiSU9iamVjdCIpKQotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkKLQkJKG9iamVjdCBPcGVyYXRpb24gImdldEV4dGVuc2lvbkF0dHJpYnV0ZXMiCi0JCSAgICBxdWlkICAgICAgIAkiNDkwRTE1M0IwMENCIgotCQkgICAgcmVzdWx0ICAgICAJIklNYXAiCi0JCSAgICBjb25jdXJyZW5jeSAJIlNlcXVlbnRpYWwiCi0JCSAgICBvcEV4cG9ydENvbnRyb2wgCSJQdWJsaWMiCi0JCSAgICB1aWQgICAgICAgIAkwKQotCQkob2JqZWN0IE9wZXJhdGlvbiAiZ2V0TmF0aXZlQXR0cmlidXRlTmFtZXMiCi0JCSAgICBxdWlkICAgICAgIAkiNDkwRTA5OUYwMTA5IgotCQkgICAgcmVzdWx0ICAgICAJIklMaXN0IgotCQkgICAgY29uY3VycmVuY3kgCSJTZXF1ZW50aWFsIgotCQkgICAgb3BFeHBvcnRDb250cm9sIAkiUHVibGljIgotCQkgICAgdWlkICAgICAgICAJMCkpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5BdHRyaWJ1dGVFeHRlbnNpYmxlIgotCQkgICAgcXVpZCAgICAgICAJIjQ5MEUxM0MyMDAwRiIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIklPYmplY3QiCi0JICAgIHF1aWQgICAgICAgCSI0OTBFMTNCMzAxMTkiCi0JICAgIHN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmEubGFuZy5PYmplY3QiCi0JCSAgICBxdWlkICAgICAgIAkiNDkwRTEzRTMwMEFCIgotCQkgICAgc3RlcmVvdHlwZSAJImphdmFjbGFzcyIKLQkJICAgIHR5cGUgICAgICAgCSJ0eXBlIgotCQkgICAgaW5pdHYgICAgICAJImluaXR2YWwiKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQ2xhc3MgIklTY2hlbWEiCi0JICAgIHF1aWQgICAgICAgCSI0OTBFNzFDNjAwNkQiCi0JICAgIHN0ZXJlb3R5cGUgCSJJbnRlcmZhY2UiCi0JICAgIHN1cGVyY2xhc3NlcyAJKGxpc3QgaW5oZXJpdGFuY2VfcmVsYXRpb25zaGlwX2xpc3QKLQkJKG9iamVjdCBJbmhlcml0YW5jZV9SZWxhdGlvbnNoaXAKLQkJICAgIHF1aWQgICAgICAgCSI0OTBFNzc3RjAzMkMiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEIxMjQwMkFCIikpCi0JICAgIGNsYXNzX2F0dHJpYnV0ZXMgCShsaXN0IGNsYXNzX2F0dHJpYnV0ZV9saXN0Ci0JCShvYmplY3QgQ2xhc3NBdHRyaWJ1dGUgImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hIgotCQkgICAgcXVpZCAgICAgICAJIjQ5MEU3MUZFMDMwRCIKLQkJICAgIHN0ZXJlb3R5cGUgCSJqYXZhY2xhc3MiKSkKLQkgICAgbGFuZ3VhZ2UgICAJIkphdmEiKQotCShvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDAiCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1QzgyNDAxOEMiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgInBvcnRUeXBlIgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVDODI3MDFDMyIKLQkJICAgIGxhYmVsICAgICAgCSJwb3J0VHlwZSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OlBvcnRUeXBlIgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDN0YwMDFBNSIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIxLi4xIikKLQkJICAgIENvbnRhaW5tZW50IAkiQnkgVmFsdWUiCi0JCSAgICBpc19hZ2dyZWdhdGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiZU9wZXJhdGlvbnMiCi0JCSAgICBxdWlkICAgICAgIAkiM0FENUM4MjcwMUNEIgotCQkgICAgbGFiZWwgICAgICAJImVPcGVyYXRpb25zIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6T3BlcmF0aW9uIgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDODBEMDNDRSIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIwLi5uIikKLQkJICAgIENvbnN0cmFpbnRzIAkib3JkZXJlZCIKLQkJICAgIENvbnRhaW5tZW50IAkiQnkgVmFsdWUiCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQxIgotCSAgICBxdWlkICAgICAgIAkiM0FENUNFQkUwMEUyIgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQyIgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVDRUJGMDA1NyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6Ok1lc3NhZ2UiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUM5NTkwMDc4IgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEuLjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgImVQYXJ0cyIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1Q0VCRjAwNjEiCi0JCSAgICBsYWJlbCAgICAgIAkiZVBhcnRzIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6UGFydCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Q0UxQzAzMkUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4ubiIpCi0JCSAgICBDb25zdHJhaW50cyAJIm9yZGVyZWQiCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMyIKLQkgICAgcXVpZCAgICAgICAJIjNBRDVEMzUyMDEwRiIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiZVBvcnRUeXBlIgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVEMzU0MDE3NiIKLQkJICAgIGxhYmVsICAgICAgCSJlUG9ydFR5cGUiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpQb3J0VHlwZSIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzdGMDAxQTUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkNCIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RDM1NDAxODAiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nIgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEMjg2MDI2MSIpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQ1IgotCSAgICBxdWlkICAgICAgIAkiM0FENUQzRTEwMTc5IgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ2IgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVEM0UyMDIyNSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkJpbmRpbmciCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUQyODYwMjYxIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEuLjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgImVCaW5kaW5nT3BlcmF0aW9ucyIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RDNFMjAyMzkiCi0JCSAgICBsYWJlbCAgICAgIAkiZUJpbmRpbmdPcGVyYXRpb25zIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZ09wZXJhdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDNDQjAxNDUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4ubiIpCi0JCSAgICBDb25zdHJhaW50cyAJIm9yZGVyZWQiCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkNyIKLQkgICAgcXVpZCAgICAgICAJIjNBRDVENDI1MDM4QSIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiZU9wZXJhdGlvbiIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RDQyNjAyRjUiCi0JCSAgICBsYWJlbCAgICAgIAkiZU9wZXJhdGlvbiIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6Ok9wZXJhdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzgwRDAzQ0UiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkOCIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RDQyNjAyRkYiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nT3BlcmF0aW9uIgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEM0NCMDE0NSIpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQ5IgotCSAgICBxdWlkICAgICAgIAkiM0FENUQ5NDAwMzkzIgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICJlUG9ydHMiCi0JCSAgICBxdWlkICAgICAgIAkiM0FENUQ5NDEwMzFDIgotCQkgICAgbGFiZWwgICAgICAJImVQb3J0cyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OlBvcnQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUQ5MTcwMjg2IgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjAuLm4iKQotCQkgICAgQ29uc3RyYWludHMgCSJvcmRlcmVkIgotCQkgICAgQ29udGFpbm1lbnQgCSJCeSBWYWx1ZSIKLQkJICAgIGlzX25hdmlnYWJsZSAJVFJVRSkKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQxMCIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RDk0MTAzMUQiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpTZXJ2aWNlIgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEOEYwMDJGOCIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIxLi4xIikKLQkJICAgIGlzX2FnZ3JlZ2F0ZSAJVFJVRSkpKQotCShvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDExIgotCSAgICBxdWlkICAgICAgIAkiM0FENUQ5QjgwMTFGIgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICJlQmluZGluZyIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RDlCOTAyNEQiCi0JCSAgICBsYWJlbCAgICAgIAkiZUJpbmRpbmciCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nIgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEMjg2MDI2MSIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIxLi4xIikKLQkJICAgIGlzX25hdmlnYWJsZSAJVFJVRSkKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQxMiIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RDlCOTAyNjEiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpQb3J0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEOTE3MDI4NiIpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQxMyIKLQkgICAgcXVpZCAgICAgICAJIjNDODY0REZGMDJFQyIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiZUltcG9ydHMiCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjRERkYwMkVEIgotCQkgICAgbGFiZWwgICAgICAJImVJbXBvcnRzIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SW1wb3J0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNEY5MDNERSIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIwLi5uIikKLQkJICAgIENvbnN0cmFpbnRzIAkib3JkZXJlZCIKLQkJICAgIENvbnRhaW5tZW50IAkiQnkgVmFsdWUiCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkMTQiCi0JCSAgICBxdWlkICAgICAgIAkiM0M4NjRERkYwMkVFIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RGVmaW5pdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTQzRjAwOEUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19hZ2dyZWdhdGUgCVRSVUUpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQxNSIKLQkgICAgcXVpZCAgICAgICAJIjNCOEJFQTI3MDI5RiIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkMTYiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4QkVBMjkwMzU2IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RGVmaW5pdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTQzRjAwOEUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19hZ2dyZWdhdGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiZVR5cGVzIgotCQkgICAgcXVpZCAgICAgICAJIjNCOEJFQTI5MDM2QSIKLQkJICAgIGxhYmVsICAgICAgCSJlVHlwZXMiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpUeXBlcyIKLQkJICAgIHF1aWR1ICAgICAgCSIzQjhCRTlBNjAzQTgiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4uMSIpCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMTciCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1RTYwMzAxRTIiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDE4IgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVFNjA0MDBCNyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkRlZmluaXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUU0M0YwMDhFIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEuLjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgImVNZXNzYWdlcyIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RTYwNDAwQzEiCi0JCSAgICBsYWJlbCAgICAgIAkiZU1lc3NhZ2VzIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6TWVzc2FnZSIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Qzk1OTAwNzgiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4ubiIpCi0JCSAgICBDb25zdHJhaW50cyAJIm9yZGVyZWQiCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMTkiCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1RTY3MTAxMDQiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDIwIgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVFNjcyMDM0QSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkRlZmluaXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUU0M0YwMDhFIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEuLjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgImVQb3J0VHlwZXMiCi0JCSAgICBxdWlkICAgICAgIAkiM0FENUU2NzIwMzU0IgotCQkgICAgbGFiZWwgICAgICAJImVQb3J0VHlwZXMiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpQb3J0VHlwZSIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzdGMDAxQTUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4ubiIpCi0JCSAgICBDb25zdHJhaW50cyAJIm9yZGVyZWQiCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMjEiCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1RTY3NzAwOTUiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDIyIgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVFNjc4MDM3MSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkRlZmluaXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUU0M0YwMDhFIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEuLjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgImVCaW5kaW5ncyIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RTY3ODAzN0IiCi0JCSAgICBsYWJlbCAgICAgIAkiZUJpbmRpbmdzIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZyIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDI4NjAyNjEiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4ubiIpCi0JCSAgICBDb25zdHJhaW50cyAJIm9yZGVyZWQiCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMjMiCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1RTY3QjAzMTEiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDI0IgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVFNjdEMDA3RiIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkRlZmluaXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUU0M0YwMDhFIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEuLjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgImVTZXJ2aWNlcyIKLQkJICAgIHF1aWQgICAgICAgCSIzQUQ1RTY3RDAwODkiCi0JCSAgICBsYWJlbCAgICAgIAkiZVNlcnZpY2VzIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6U2VydmljZSIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDhGMDAyRjgiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4ubiIpCi0JCSAgICBDb25zdHJhaW50cyAJIm9yZGVyZWQiCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMjUiCi0JICAgIHF1aWQgICAgICAgCSIzQUQ1RkQxMzAwNzkiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgImVFeHRlbnNpYmlsaXR5RWxlbWVudHMiCi0JCSAgICBxdWlkICAgICAgIAkiM0FENUZEMTQwMTlEIgotCQkgICAgbGFiZWwgICAgICAJImVFeHRlbnNpYmlsaXR5RWxlbWVudHMiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1REJCNjAyQTkiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4ubiIpCi0JCSAgICBDb25zdHJhaW50cyAJIm9yZGVyZWQiCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDI2IgotCQkgICAgcXVpZCAgICAgICAJIjNBRDVGRDE0MDE5RSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2libGVFbGVtZW50IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQ0ZBMDMzQSIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIxLi4xIikKLQkJICAgIGlzX2FnZ3JlZ2F0ZSAJVFJVRSkpKQotCShvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDI3IgotCSAgICBxdWlkICAgICAgIAkiM0FERjJFNjQwMUY1IgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICJlQmluZGluZ0lucHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNBREYyRTY1MDI1MSIKLQkJICAgIGxhYmVsICAgICAgCSJlQmluZGluZ0lucHV0IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZ0lucHV0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRTA4QTgyMDJENCIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIwLi4xIikKLQkJICAgIENvbnRhaW5tZW50IAkiQnkgVmFsdWUiCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkMjgiCi0JCSAgICBxdWlkICAgICAgIAkiM0FERjJFNjUwMjUyIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZ09wZXJhdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDNDQjAxNDUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19hZ2dyZWdhdGUgCVRSVUUpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQyOSIKLQkgICAgcXVpZCAgICAgICAJIjNBREYyRUIzMDE2MyIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiZUJpbmRpbmdPdXRwdXQiCi0JCSAgICBxdWlkICAgICAgIAkiM0FERjJFQjQwMTNDIgotCQkgICAgbGFiZWwgICAgICAJImVCaW5kaW5nT3V0cHV0IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZ091dHB1dCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwOEE4RjAyOEMiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4uMSIpCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDMwIgotCQkgICAgcXVpZCAgICAgICAJIjNBREYyRUI0MDEzRCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkJpbmRpbmdPcGVyYXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUQzQ0IwMTQ1IgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEuLjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMzEiCi0JICAgIHF1aWQgICAgICAgCSIzQURGMkY5NDAyNEQiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgImVJbnB1dCIKLQkJICAgIHF1aWQgICAgICAgCSIzQURGMkY5NTAxOTAiCi0JCSAgICBsYWJlbCAgICAgIAkiZUlucHV0IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SW5wdXQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FFMDc4OUYwMDU5IgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjAuLjEiKQotCQkgICAgQ29udGFpbm1lbnQgCSJCeSBWYWx1ZSIKLQkJICAgIGlzX25hdmlnYWJsZSAJVFJVRSkKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQzMiIKLQkJICAgIHF1aWQgICAgICAgCSIzQURGMkY5NTAxOUEiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpPcGVyYXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUM4MEQwM0NFIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEuLjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMzMiCi0JICAgIHF1aWQgICAgICAgCSIzQURGMkZCODAyRjkiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgImVPdXRwdXQiCi0JCSAgICBxdWlkICAgICAgIAkiM0FERjJGQjkwMjBBIgotCQkgICAgbGFiZWwgICAgICAJImVPdXRwdXQiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpPdXRwdXQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FFMDc4QjYwMjMyIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjAuLjEiKQotCQkgICAgQ29udGFpbm1lbnQgCSJCeSBWYWx1ZSIKLQkJICAgIGlzX25hdmlnYWJsZSAJVFJVRSkKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQzNCIKLQkJICAgIHF1aWQgICAgICAgCSIzQURGMkZCOTAyMEIiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpPcGVyYXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUM4MEQwM0NFIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEuLjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkMzUiCi0JICAgIHF1aWQgICAgICAgCSIzQURGMzMxNjAxQTQiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgImVGYXVsdHMiCi0JCSAgICBxdWlkICAgICAgIAkiM0FERjMzMTgwMzg3IgotCQkgICAgbGFiZWwgICAgICAJImVGYXVsdHMiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpGYXVsdCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwNzhCRTAxMDgiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4ubiIpCi0JCSAgICBDb25zdHJhaW50cyAJIm9yZGVyZWQiCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDM2IgotCQkgICAgcXVpZCAgICAgICAJIjNBREYzMzE4MDM4OCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6Ok9wZXJhdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzgwRDAzQ0UiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19hZ2dyZWdhdGUgCVRSVUUpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQzNyIKLQkgICAgcXVpZCAgICAgICAJIjNBREYzNDAwMDNFNSIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiZUJpbmRpbmdGYXVsdHMiCi0JCSAgICBxdWlkICAgICAgIAkiM0FERjM0MDEwM0FBIgotCQkgICAgbGFiZWwgICAgICAJImVCaW5kaW5nRmF1bHRzIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZ0ZhdWx0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRTA4QTlFMDNBNiIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIwLi5uIikKLQkJICAgIENvbnN0cmFpbnRzIAkib3JkZXJlZCIKLQkJICAgIENvbnRhaW5tZW50IAkiQnkgVmFsdWUiCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkMzgiCi0JCSAgICBxdWlkICAgICAgIAkiM0FERjM0MDEwM0FCIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZ09wZXJhdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDNDQjAxNDUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19hZ2dyZWdhdGUgCVRSVUUpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQzOSIKLQkgICAgcXVpZCAgICAgICAJIjNBRTA5MUY0MDJGMyIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiZUZhdWx0IgotCQkgICAgcXVpZCAgICAgICAJIjNBRTA5MUY4MDFGRSIKLQkJICAgIGxhYmVsICAgICAgCSJlRmF1bHQiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpGYXVsdCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwNzhCRTAxMDgiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkNDAiCi0JCSAgICBxdWlkICAgICAgIAkiM0FFMDkxRjgwMUZGIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZ0ZhdWx0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRTA4QTlFMDNBNiIpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQ0MSIKLQkgICAgcXVpZCAgICAgICAJIjNBRUEzRDU1MDAyRCIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkNDIiCi0JCSAgICBxdWlkICAgICAgIAkiM0FFQTNENTYwMzI4IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RGVmaW5pdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTQzRjAwOEUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19hZ2dyZWdhdGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiZU5hbWVzcGFjZXMiCi0JCSAgICBxdWlkICAgICAgIAkiM0FFQTNENTYwMzMyIgotCQkgICAgbGFiZWwgICAgICAJImVOYW1lc3BhY2VzIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6TmFtZXNwYWNlIgotCQkgICAgcXVpZHUgICAgICAJIjNBRUEzQ0QzMDAzMCIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIwLi5uIikKLQkJICAgIENvbnN0cmFpbnRzIAkib3JkZXJlZCIKLQkJICAgIENvbnRhaW5tZW50IAkiQnkgVmFsdWUiCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQ0MyIKLQkgICAgcXVpZCAgICAgICAJIjNBRUEzRTNBMDAyRCIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiZURlZmluaXRpb24iCi0JCSAgICBxdWlkICAgICAgIAkiM0FFQTNFM0MwMUU4IgotCQkgICAgbGFiZWwgICAgICAJImVEZWZpbml0aW9uIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6RGVmaW5pdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTQzRjAwOEUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4uMSIpCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkNDQiCi0JCSAgICBxdWlkICAgICAgIAkiM0FFQTNFM0MwMUYyIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6SW1wb3J0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNEY5MDNERSIpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQ0NSIKLQkgICAgcXVpZCAgICAgICAJIjNBRUE0MTJGMDAzNSIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAiZVBhcmFtZXRlck9yZGVyaW5nIgotCQkgICAgcXVpZCAgICAgICAJIjNBRUE0MTMxMDI1NSIKLQkJICAgIGxhYmVsICAgICAgCSJlUGFyYW1ldGVyT3JkZXJpbmciCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpQYXJ0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDRTFDMDMyRSIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIwLi5uIikKLQkJICAgIENvbnN0cmFpbnRzIAkib3JkZXJlZCIKLQkJICAgIGlzX25hdmlnYWJsZSAJVFJVRSkKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ0NiIKLQkJICAgIHF1aWQgICAgICAgCSIzQUVBNDEzMTAyNUYiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpPcGVyYXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUM4MEQwM0NFIikpKQotCShvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDQ3IgotCSAgICBxdWlkICAgICAgIAkiM0I4NEFEMjQwMEJEIgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICJlSW5wdXQiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4NEFEMjUwMDgzIgotCQkgICAgbGFiZWwgICAgICAJImVJbnB1dCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OklucHV0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRTA3ODlGMDA1OSIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIxLi4xIikKLQkJICAgIGlzX25hdmlnYWJsZSAJVFJVRSkKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ0OCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QUQyNTAwODQiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nSW5wdXQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FFMDhBODIwMkQ0IikpKQotCShvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDQ5IgotCSAgICBxdWlkICAgICAgIAkiM0I4NEFENzkwMEYyIgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICJlT3V0cHV0IgotCQkgICAgcXVpZCAgICAgICAJIjNCODRBRDdBMDE0RCIKLQkJICAgIGxhYmVsICAgICAgCSJlT3V0cHV0IgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6T3V0cHV0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRTA3OEI2MDIzMiIKLQkJICAgIGNsaWVudF9jYXJkaW5hbGl0eSAJKHZhbHVlIGNhcmRpbmFsaXR5ICIxLi4xIikKLQkJICAgIGlzX25hdmlnYWJsZSAJVFJVRSkKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ1MCIKLQkJICAgIHF1aWQgICAgICAgCSIzQjg0QUQ3QTAxNEUiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nT3V0cHV0IgotCQkgICAgcXVpZHUgICAgICAJIjNBRTA4QThGMDI4QyIpKSkKLQkob2JqZWN0IEFzc29jaWF0aW9uICIkVU5OQU1FRCQ1MSIKLQkgICAgcXVpZCAgICAgICAJIjNCOEIxQkU5MDBDNCIKLQkgICAgcm9sZXMgICAgICAJKGxpc3Qgcm9sZV9saXN0Ci0JCShvYmplY3QgUm9sZSAidHlwZURlZmluaXRpb24iCi0JCSAgICBxdWlkICAgICAgIAkiM0I4QjFCRTkwMzI3IgotCQkgICAgbGFiZWwgICAgICAJInR5cGVEZWZpbml0aW9uIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6eHNkOjpYU0RUeXBlRGVmaW5pdGlvbiIKLQkJICAgIHF1aWR1ICAgICAgCSIzQjY2RUNEMzAyQTkiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4uMSIpCi0JCSAgICBpc19uYXZpZ2FibGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAiJFVOTkFNRUQkNTIiCi0JCSAgICBxdWlkICAgICAgIAkiM0I4QjFCRTkwMzMxIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6d3NkbDo6UGFydCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Q0UxQzAzMkUiKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkNTMiCi0JICAgIHF1aWQgICAgICAgCSIzQjhCMUMxMjAzQjIiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgImVsZW1lbnREZWNsYXJhdGlvbiIKLQkJICAgIHF1aWQgICAgICAgCSIzQjhCMUMxNDAwMUMiCi0JCSAgICBsYWJlbCAgICAgIAkiZWxlbWVudERlY2xhcmF0aW9uIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6eHNkOjpYU0RFbGVtZW50RGVjbGFyYXRpb24iCi0JCSAgICBxdWlkdSAgICAgIAkiM0I2NkVENTgwMjE0IgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjAuLjEiKQotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDU0IgotCQkgICAgcXVpZCAgICAgICAJIjNCOEIxQzE0MDAyNiIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OlBhcnQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUNFMUMwMzJFIikpKQotCShvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDU1IgotCSAgICBxdWlkICAgICAgIAkiM0I4QjFEQ0MwMkU1IgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICJlU2NoZW1hIgotCQkgICAgcXVpZCAgICAgICAJIjNCOEIxRENFMDI3MCIKLQkJICAgIGxhYmVsICAgICAgCSJlU2NoZW1hIgotCQkgICAgc3VwcGxpZXIgICAJIkxvZ2ljYWwgVmlldzo6eHNkOjpYU0RTY2hlbWEiCi0JCSAgICBxdWlkdSAgICAgIAkiMzc0QjE4MjUwMEJCIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjAuLjEiKQotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDU2IgotCQkgICAgcXVpZCAgICAgICAJIjNCOEIxRENFMDI3QSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OkltcG9ydCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTRGOTAzREUiKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkNTciCi0JICAgIHF1aWQgICAgICAgCSIzQzQ2ODI5MzAzRTUiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgImVNZXNzYWdlIgotCQkgICAgcXVpZCAgICAgICAJIjNDNDY4Mjk2MDEwRSIKLQkJICAgIGxhYmVsICAgICAgCSJlTWVzc2FnZSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6Ok1lc3NhZ2UiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUM5NTkwMDc4IgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjAuLjEiKQotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDU4IgotCQkgICAgcXVpZCAgICAgICAJIjNDNDY4Mjk2MDExOCIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OlBhcnQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUNFMUMwMzJFIikpKQotCShvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDU5IgotCSAgICBxdWlkICAgICAgIAkiM0NDMzYxNDUwMEYyIgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ2MCIKLQkJICAgIHF1aWQgICAgICAgCSIzQ0MzNjE0NjAyM0QiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQ0MzNjBENzAzOUMiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMS4uMSIpCi0JCSAgICBpc19hZ2dyZWdhdGUgCVRSVUUpCi0JCShvYmplY3QgUm9sZSAic2NoZW1hIgotCQkgICAgcXVpZCAgICAgICAJIjNDQzM2MTQ2MDIzRSIKLQkJICAgIGxhYmVsICAgICAgCSJzY2hlbWEiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp4c2Q6OlhTRFNjaGVtYSIKLQkJICAgIHF1aWR1ICAgICAgCSIzNzRCMTgyNTAwQkIiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4uMSIpCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKSkpCi0JKG9iamVjdCBBc3NvY2lhdGlvbiAiJFVOTkFNRUQkNjEiCi0JICAgIHF1aWQgICAgICAgCSIzRjc0RTc4NDAxQjEiCi0JICAgIHJvbGVzICAgICAgCShsaXN0IHJvbGVfbGlzdAotCQkob2JqZWN0IFJvbGUgImVNZXNzYWdlIgotCQkgICAgcXVpZCAgICAgICAJIjNGNzRFNzg2MDAwRiIKLQkJICAgIGxhYmVsICAgICAgCSJlTWVzc2FnZSIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6Ok1lc3NhZ2UiCi0JCSAgICBxdWlkdSAgICAgIAkiM0FENUM5NTkwMDc4IgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEiKQotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgIiRVTk5BTUVEJDYyIgotCQkgICAgcXVpZCAgICAgICAJIjNGNzRFNzg2MDAyMyIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6Ok1lc3NhZ2VSZWZlcmVuY2UiCi0JCSAgICBxdWlkdSAgICAgIAkiM0Y2NzcxREIwMkRDIikpKQotCShvYmplY3QgQXNzb2NpYXRpb24gIiRVTk5BTUVEJDYzIgotCSAgICBxdWlkICAgICAgIAkiM0Y3ODk2QTIwMjZFIgotCSAgICByb2xlcyAgICAgIAkobGlzdCByb2xlX2xpc3QKLQkJKG9iamVjdCBSb2xlICIkVU5OQU1FRCQ2NCIKLQkJICAgIHF1aWQgICAgICAgCSIzRjc4OTZBNzAxMkIiCi0JCSAgICBzdXBwbGllciAgIAkiTG9naWNhbCBWaWV3Ojp3c2RsOjpVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0JCSAgICBxdWlkdSAgICAgIAkiM0NCMjRBQzAwMkFFIgotCQkgICAgY2xpZW50X2NhcmRpbmFsaXR5IAkodmFsdWUgY2FyZGluYWxpdHkgIjEiKQotCQkgICAgaXNfYWdncmVnYXRlIAlUUlVFKQotCQkob2JqZWN0IFJvbGUgImNoaWxkcmVuIgotCQkgICAgcXVpZCAgICAgICAJIjNGNzg5NkE3MDEyQyIKLQkJICAgIGxhYmVsICAgICAgCSJjaGlsZHJlbiIKLQkJICAgIHN1cHBsaWVyICAgCSJMb2dpY2FsIFZpZXc6OndzZGw6OlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCIKLQkJICAgIHF1aWR1ICAgICAgCSIzQ0IyNEFDMDAyQUUiCi0JCSAgICBjbGllbnRfY2FyZGluYWxpdHkgCSh2YWx1ZSBjYXJkaW5hbGl0eSAiMC4ubiIpCi0JCSAgICBDb250YWlubWVudCAJIkJ5IFZhbHVlIgotCQkgICAgaXNfbmF2aWdhYmxlIAlUUlVFKSkpKQotICAgIGxvZ2ljYWxfcHJlc2VudGF0aW9ucyAJKGxpc3QgdW5pdF9yZWZlcmVuY2VfbGlzdAotCShvYmplY3QgQ2xhc3NEaWFncmFtICIyLjcgU2VydmljZXMiCi0JICAgIHF1aWQgICAgICAgCSIzOUFEM0VGNjAxMjciCi0JICAgIHRpdGxlICAgICAgCSIyLjcgU2VydmljZXMiCi0JICAgIHpvb20gICAgICAgCTkwCi0JICAgIG1heF9oZWlnaHQgCTI4MzUwCi0JICAgIG1heF93aWR0aCAgCTIxNjAwCi0JICAgIG9yaWdpbl94ICAgCTAKLQkgICAgb3JpZ2luX3kgICAJMAotCSAgICBpdGVtcyAgICAgIAkobGlzdCBkaWFncmFtX2l0ZW1fbGlzdAotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklCaW5kaW5nIiBAMQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTgwOCwgMTM5MikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDEKLQkJCWxvY2F0aW9uICAgCSgxNTU3LCAxMjUyKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTUwMgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklCaW5kaW5nIikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDEKLQkJCWxvY2F0aW9uICAgCSgxNTU3LCAxMjAyKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk1MDIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBQkM2MDIxOSIKLQkJICAgIHdpZHRoICAgICAgCTUyMAotCQkgICAgaGVpZ2h0ICAgICAJNDA0Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklQb3J0IiBAMgotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTIwMCwgMTEyMCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDIKLQkJCWxvY2F0aW9uICAgCSgxMDcwLCAxMDczKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTI2MAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklQb3J0IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDIKLQkJCWxvY2F0aW9uICAgCSgxMDcwLCAxMDIzKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkyNjAKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBQjgwMDMyNiIKLQkJICAgIHdpZHRoICAgICAgCTI3OAotCQkgICAgaGVpZ2h0ICAgICAJMjE4Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklTZXJ2aWNlIiBAMwotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoNjI0LCA3NTIpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzCi0JCQlsb2NhdGlvbiAgIAkoNTEwLCA2ODIpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjI4Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSVNlcnZpY2UiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMwotCQkJbG9jYXRpb24gICAJKDUxMCwgNjMyKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkyMjgKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBQjQ5MDI4NyIKLQkJICAgIHdpZHRoICAgICAgCTI0NgotCQkgICAgaGVpZ2h0ICAgICAJMjY0Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OlNlcnZpY2UiIEA0Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDYyNCwgMTEyMCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQKLQkJCWxvY2F0aW9uICAgCSg0MjgsIDEwMjUpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMzkyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiU2VydmljZSIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUQ4RjAwMkY4IgotCQkgICAgd2lkdGggICAgICAJNDEwCi0JCSAgICBoZWlnaHQgICAgIAkyMTQKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDUKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg1OTU0RTAxQjQiCi0JCSAgICBjbGllbnQgICAgIAlANAotCQkgICAgc3VwcGxpZXIgICAJQDMKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoNjI0LCAxMDEzKQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDYyNCwgODg0KSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nIiBANgotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxODI0LCAxODU2KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANgotCQkJbG9jYXRpb24gICAJKDE2MjgsIDE3NjEpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMzkyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiQmluZGluZyIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUQyODYwMjYxIgotCQkgICAgd2lkdGggICAgICAJNDEwCi0JCSAgICBoZWlnaHQgICAgIAkyMTQKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDcKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg1OTU0MTAxMjkiCi0JCSAgICBjbGllbnQgICAgIAlANgotCQkgICAgc3VwcGxpZXIgICAJQDEKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTgxNCwgMTc0OSkKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxODE0LCAxNTk0KSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpQb3J0IiBAOAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxMjAwLCAxNTA0KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAOAotCQkJbG9jYXRpb24gICAJKDEwNTksIDE0MzIpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjgyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiUG9ydCIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUQ5MTcwMjg2IgotCQkgICAgd2lkdGggICAgICAJMzAwCi0JCSAgICBoZWlnaHQgICAgIAkxNjgKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDkKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg1OTU0NTAyQzkiCi0JCSAgICBjbGllbnQgICAgIAlAOAotCQkgICAgc3VwcGxpZXIgICAJQDIKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTE5MywgMTQyMCkKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMTkzLCAxMjI5KSkKLQkJKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDkiIEAxMAotCQkgICAgbG9jYXRpb24gICAJKDcwNSwgMTUwOCkKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDk0MDAzOTMiCi0JCSAgICByb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCShvYmplY3QgUm9sZVZpZXcgImVQb3J0cyIgQDExCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAxMAotCQkJICAgIGxvY2F0aW9uICAgCSgyNDEsIDEyMzYpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTIKLQkJCQlQYXJlbnRfVmlldyAJQDExCi0JCQkJbG9jYXRpb24gICAJKDc4MSwgMTUzNykKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxOTIKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlUG9ydHMiCi0JCQkJcGN0RGlzdCAgICAJMC4yMTg5NzgKLQkJCQloZWlnaHQgICAgIAkyOQotCQkJCW9yaWVudGF0aW9uIAkxKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRDVEOTQxMDMxQyIKLQkJCSAgICBjbGllbnQgICAgIAlAMTAKLQkJCSAgICBzdXBwbGllciAgIAlAOAotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDcwNSwgMTUwOCkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTA1MCwgMTUwOCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxMwotCQkJCVBhcmVudF9WaWV3IAlAMTEKLQkJCQlsb2NhdGlvbiAgIAkoOTE0LCAxNDcyKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE2MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uKiIKLQkJCQlwY3REaXN0ICAgIAkwLjYwODAwMAotCQkJCWhlaWdodCAgICAgCTM3Ci0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTQKLQkJCQlQYXJlbnRfVmlldyAJQDExCi0JCQkJbG9jYXRpb24gICAJKDgxNywgMTU4MikKLQkJCQlhbmNob3IgICAgIAkzCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNDYKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIntvcmRlcmVkfSIKLQkJCQlwY3REaXN0ICAgIAkwLjMyODQ2NwotCQkJCWhlaWdodCAgICAgCTc0Ci0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMTAiIEAxNQotCQkJICAgIFBhcmVudF9WaWV3IAlAMTAKLQkJCSAgICBsb2NhdGlvbiAgIAkoMjQxLCAxMjM2KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE2Ci0JCQkJUGFyZW50X1ZpZXcgCUAxNQotCQkJCWxvY2F0aW9uICAgCSg2MDAsIDEyOTYpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTYwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIiCi0JCQkJcGN0RGlzdCAgICAJMC44MDAwMDAKLQkJCQloZWlnaHQgICAgIAk0MgotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRDVEOTQxMDMxRCIKLQkJCSAgICBjbGllbnQgICAgIAlAMTAKLQkJCSAgICBzdXBwbGllciAgIAlANAotCQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJCSg3MDUsIDE1MDgpCi0JCQkJKDY0MSwgMTUwOCkKLQkJCQkoNjQxLCAxMjI3KSkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg3MDUsIDE1MDgpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDY0MSwgMTIyNykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxNwotCQkJCVBhcmVudF9WaWV3IAlAMTUKLQkJCQlsb2NhdGlvbiAgIAkoNjg1LCAxMzUyKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNjM3MDk3Ci0JCQkJaGVpZ2h0ICAgICAJNDQKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDExIiBAMTgKLQkJICAgIGxvY2F0aW9uICAgCSgxMjcxLCAxODYyKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEOUI4MDExRiIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZUJpbmRpbmciIEAxOQotCQkJICAgIFBhcmVudF9WaWV3IAlAMTgKLQkJCSAgICBsb2NhdGlvbiAgIAkoNDIzLCAxMDE0KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDIwCi0JCQkJUGFyZW50X1ZpZXcgCUAxOQotCQkJCWxvY2F0aW9uICAgCSgxNDk2LCAxODI3KQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE4MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK2VCaW5kaW5nIgotCQkJCXBjdERpc3QgICAgCTAuNjQ4NTcxCi0JCQkJaGVpZ2h0ICAgICAJMzYKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDlCOTAyNEQiCi0JCQkgICAgY2xpZW50ICAgICAJQDE4Ci0JCQkgICAgc3VwcGxpZXIgICAJQDYKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMjcxLCAxODYyKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNjE5LCAxODYyKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDIxCi0JCQkJUGFyZW50X1ZpZXcgCUAxOQotCQkJCWxvY2F0aW9uICAgCSgxNTU0LCAxOTA1KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuODE0Mjg2Ci0JCQkJaGVpZ2h0ICAgICAJNDMKLQkJCQlvcmllbnRhdGlvbiAJMSkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQxMiIgQDIyCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAxOAotCQkJICAgIGxvY2F0aW9uICAgCSg0MjMsIDEwMTQpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjMKLQkJCQlQYXJlbnRfVmlldyAJQDIyCi0JCQkJbG9jYXRpb24gICAJKDEyMzYsIDE2OTgpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1NgotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiIgotCQkJCXBjdERpc3QgICAgCTAuNjg3OTQzCi0JCQkJaGVpZ2h0ICAgICAJNDAKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDlCOTAyNjEiCi0JCQkgICAgY2xpZW50ICAgICAJQDE4Ci0JCQkgICAgc3VwcGxpZXIgICAJQDgKLQkJCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkoMTI3MSwgMTg2MikKLQkJCQkoMTE5NiwgMTg2MikKLQkJCQkoMTE5NiwgMTU4OCkpCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTI3MSwgMTg2MikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTE5NiwgMTU4OCkpKSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRWxlbWVudEV4dGVuc2libGUiIEAyNAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxMTg0LCAxNjApCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyNAotCQkJbG9jYXRpb24gICAJKDk0MiwgOTApCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDg0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUVsZW1lbnRFeHRlbnNpYmxlIikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI0Ci0JCQlsb2NhdGlvbiAgIAkoOTQyLCA0MCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDg0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMDRCMDAwREEiCi0JCSAgICB3aWR0aCAgICAgIAk1MDIKLQkJICAgIGhlaWdodCAgICAgCTI2NAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJQXR0cmlidXRlRXh0ZW5zaWJsZSIgQDI1Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE3NjAsIDE5MikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI1Ci0JCQlsb2NhdGlvbiAgIAkoMTQ4OSwgNzcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNTQyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUF0dHJpYnV0ZUV4dGVuc2libGUiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjUKLQkJCWxvY2F0aW9uICAgCSgxNDg5LCAyNykKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNTQyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMDYzRjAyQUYiCi0JCSAgICB3aWR0aCAgICAgIAk1NjAKLQkJICAgIGhlaWdodCAgICAgCTM1NAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkpKQotCShvYmplY3QgQ2xhc3NEaWFncmFtICIyLjUgQmluZGluZ3MiCi0JICAgIHF1aWQgICAgICAgCSIzOUFENTEyNzAyNTIiCi0JICAgIHRpdGxlICAgICAgCSIyLjUgQmluZGluZ3MiCi0JICAgIHpvb20gICAgICAgCTg1Ci0JICAgIG1heF9oZWlnaHQgCTI4MzUwCi0JICAgIG1heF93aWR0aCAgCTIxNjAwCi0JICAgIG9yaWdpbl94ICAgCTAKLQkgICAgb3JpZ2luX3kgICAJMAotCSAgICBpdGVtcyAgICAgIAkobGlzdCBkaWFncmFtX2l0ZW1fbGlzdAotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklCaW5kaW5nIiBAMjYKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBTdXBwcmVzc0F0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDMwNCwgMjQwKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjYKLQkJCWxvY2F0aW9uICAgCSg3MywgMTE0KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTQ2MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklCaW5kaW5nIikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI2Ci0JCQlsb2NhdGlvbiAgIAkoNzMsIDY0KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk0NjIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBQkM2MDIxOSIKLQkJICAgIHdpZHRoICAgICAgCTQ4MAotCQkgICAgaGVpZ2h0ICAgICAJMzc2Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklCaW5kaW5nT3BlcmF0aW9uIiBAMjcKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBTdXBwcmVzc0F0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDk3NiwgMzUyKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjcKLQkJCWxvY2F0aW9uICAgCSg3ODAsIDEzMCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkzOTIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJQmluZGluZ09wZXJhdGlvbiIpCi0JCSAgICBzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyNwotCQkJbG9jYXRpb24gICAJKDc4MCwgODApCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTM5MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEFEQzAwMDcyIgotCQkgICAgd2lkdGggICAgICAJNDEwCi0JCSAgICBoZWlnaHQgICAgIAk1NjgKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUJpbmRpbmdJbnB1dCIgQDI4Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxOTIsIDEzNjApCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyOAotCQkJbG9jYXRpb24gICAJKDYyLCAxMzM0KQotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTI2MAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklCaW5kaW5nSW5wdXQiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjgKLQkJCWxvY2F0aW9uICAgCSg2MiwgMTI4NCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjYwCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QURFQjAxMDAiCi0JCSAgICB3aWR0aCAgICAgIAkyNzgKLQkJICAgIGhlaWdodCAgICAgCTE3NgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJQmluZGluZ091dHB1dCIgQDI5Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgyMDgsIDE2NjQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyOQotCQkJbG9jYXRpb24gICAJKDYxLCAxNjM4KQotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTI5NAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklCaW5kaW5nT3V0cHV0IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI5Ci0JCQlsb2NhdGlvbiAgIAkoNjEsIDE1ODgpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTI5NAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEFFMjEwMTExIgotCQkgICAgd2lkdGggICAgICAJMzEyCi0JCSAgICBoZWlnaHQgICAgIAkxNzYKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUJpbmRpbmdGYXVsdCIgQDMwCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgyMDgsIDE5ODQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzMAotCQkJbG9jYXRpb24gICAJKDcyLCAxOTU4KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTI3MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklCaW5kaW5nRmF1bHQiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMzAKLQkJCWxvY2F0aW9uICAgCSg3MiwgMTkwOCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjcyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QUU0RjAwQkQiCi0JCSAgICB3aWR0aCAgICAgIAkyOTAKLQkJICAgIGhlaWdodCAgICAgCTE3NgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpQb3J0VHlwZSIgQDMxCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE5MDQsIDYyNCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDMxCi0JCQlsb2NhdGlvbiAgIAkoMTY5NywgNTIyKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTQxNAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIlBvcnRUeXBlIikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzdGMDAxQTUiCi0JCSAgICB3aWR0aCAgICAgIAk0MzIKLQkJICAgIGhlaWdodCAgICAgCTIyOAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJbnB1dCIgQDMyCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE5MDQsIDEzNjApCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzMgotCQkJbG9jYXRpb24gICAJKDE3NTYsIDEyODMpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjk2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSW5wdXQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRTA3ODlGMDA1OSIKLQkJICAgIHdpZHRoICAgICAgCTMxNAotCQkgICAgaGVpZ2h0ICAgICAJMTc4Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6Ok91dHB1dCIgQDMzCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE5MDQsIDE2NjQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzMwotCQkJbG9jYXRpb24gICAJKDE3NTYsIDE1ODcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjk2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiT3V0cHV0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwNzhCNjAyMzIiCi0JCSAgICB3aWR0aCAgICAgIAkzMTQKLQkJICAgIGhlaWdodCAgICAgCTE3OAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nIiBAMzQKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMzA0LCA2ODgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzNAotCQkJbG9jYXRpb24gICAJKDk3LCA1ODYpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDE0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiQmluZGluZyIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUQyODYwMjYxIgotCQkgICAgd2lkdGggICAgICAJNDMyCi0JCSAgICBoZWlnaHQgICAgIAkyMjgKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDM1Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NTk1NDEwMTI5IgotCQkgICAgY2xpZW50ICAgICAJQDM0Ci0JCSAgICBzdXBwbGllciAgIAlAMjYKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMjc5LCA1NzQpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMjc5LCA0MjgpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMyIgQDM2Ci0JCSAgICBsb2NhdGlvbiAgIAkoMTEwNCwgNzQyKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEMzUyMDEwRiIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZVBvcnRUeXBlIiBAMzcKLQkJCSAgICBQYXJlbnRfVmlldyAJQDM2Ci0JCQkgICAgbG9jYXRpb24gICAJKDY0MCwgNTk4KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDM4Ci0JCQkJUGFyZW50X1ZpZXcgCUAzNwotCQkJCWxvY2F0aW9uICAgCSgxNTY1LCA3ODEpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMjE2Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZVBvcnRUeXBlIgotCQkJCXBjdERpc3QgICAgCTAuNzg5MjkyCi0JCQkJaGVpZ2h0ICAgICAJMzkKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDM1NDAxNzYiCi0JCQkgICAgY2xpZW50ICAgICAJQDM2Ci0JCQkgICAgc3VwcGxpZXIgICAJQDMxCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTEwNCwgNzQyKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNjg4LCA3NDIpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzkKLQkJCQlQYXJlbnRfVmlldyAJQDM3Ci0JCQkJbG9jYXRpb24gICAJKDE2MTMsIDcxNikKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjg3MjE5MwotCQkJCWhlaWdodCAgICAgCTI3Ci0JCQkJb3JpZW50YXRpb24gCTApKQotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkNCIgQDQwCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAzNgotCQkJICAgIGxvY2F0aW9uICAgCSg2NDAsIDU5OCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA0MQotCQkJCVBhcmVudF9WaWV3IAlANDAKLQkJCQlsb2NhdGlvbiAgIAkoODA2LCA2OTcpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTEwOAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiIgotCQkJCXBjdERpc3QgICAgCTAuNTA5NDQ5Ci0JCQkJaGVpZ2h0ICAgICAJNDYKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDM1NDAxODAiCi0JCQkgICAgY2xpZW50ICAgICAJQDM2Ci0JCQkgICAgc3VwcGxpZXIgICAJQDM0Ci0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTEwNCwgNzQyKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSg1MjAsIDc0MikpKSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpPcGVyYXRpb24iIEA0MgotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxODg4LCAxMDI0KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDIKLQkJCWxvY2F0aW9uICAgCSgxNjcyLCA4OTgpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDMyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiT3BlcmF0aW9uIikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzgwRDAzQ0UiCi0JCSAgICB3aWR0aCAgICAgIAk0NTAKLQkJICAgIGhlaWdodCAgICAgCTI3NgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nSW5wdXQiIEA0MwotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg2MjQsIDE0MDgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA0MwotCQkJbG9jYXRpb24gICAJKDQ3NiwgMTI4MykKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkyOTYKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJCaW5kaW5nSW5wdXQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRTA4QTgyMDJENCIKLQkJICAgIHdpZHRoICAgICAgCTMxNAotCQkgICAgaGVpZ2h0ICAgICAJMjc0Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkNDciIEA0NAotCQkgICAgbG9jYXRpb24gICAJKDEyNjQsIDEzNTkpCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEFEMjQwMEJEIgotCQkgICAgcm9sZXZpZXdfbGlzdCAJKGxpc3QgUm9sZVZpZXdzCi0JCQkob2JqZWN0IFJvbGVWaWV3ICJlSW5wdXQiIEA0NQotCQkJICAgIFBhcmVudF9WaWV3IAlANDQKLQkJCSAgICBsb2NhdGlvbiAgIAkoOTYsIDI4NykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA0NgotCQkJCVBhcmVudF9WaWV3IAlANDUKLQkJCQlsb2NhdGlvbiAgIAkoMTYzNywgMTMxNikKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxMzIKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlSW5wdXQiCi0JCQkJcGN0RGlzdCAgICAJMC43NzUxNDgKLQkJCQloZWlnaHQgICAgIAk0NAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNCODRBRDI1MDA4MyIKLQkJCSAgICBjbGllbnQgICAgIAlANDQKLQkJCSAgICBzdXBwbGllciAgIAlAMzIKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMjY0LCAxMzU5KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNzQ3LCAxMzU5KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDQ3Ci0JCQkJUGFyZW50X1ZpZXcgCUA0NQotCQkJCWxvY2F0aW9uICAgCSgxNjk0LCAxMzk4KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuODg5NTQ2Ci0JCQkJaGVpZ2h0ICAgICAJMzkKLQkJCQlvcmllbnRhdGlvbiAJMSkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQ0OCIgQDQ4Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUA0NAotCQkJICAgIGxvY2F0aW9uICAgCSg5NiwgMjg3KQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNCODRBRDI1MDA4NCIKLQkJCSAgICBjbGllbnQgICAgIAlANDQKLQkJCSAgICBzdXBwbGllciAgIAlANDMKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMjY0LCAxMzU5KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSg3ODEsIDEzNTkpKSkpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZ091dHB1dCIgQDQ5Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDk2MCwgMTY2NCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQ5Ci0JCQlsb2NhdGlvbiAgIAkoODEyLCAxNTM5KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTI5NgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIkJpbmRpbmdPdXRwdXQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRTA4QThGMDI4QyIKLQkJICAgIHdpZHRoICAgICAgCTMxNAotCQkgICAgaGVpZ2h0ICAgICAJMjc0Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkNDkiIEA1MAotCQkgICAgbG9jYXRpb24gICAJKDE0MzIsIDE2NTQpCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEFENzkwMEYyIgotCQkgICAgcm9sZXZpZXdfbGlzdCAJKGxpc3QgUm9sZVZpZXdzCi0JCQkob2JqZWN0IFJvbGVWaWV3ICJlT3V0cHV0IiBANTEKLQkJCSAgICBQYXJlbnRfVmlldyAJQDUwCi0JCQkgICAgbG9jYXRpb24gICAJKC0xMjAsIDM3NCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA1MgotCQkJCVBhcmVudF9WaWV3IAlANTEKLQkJCQlsb2NhdGlvbiAgIAkoMTY0NSwgMTYxMikKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNjgKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlT3V0cHV0IgotCQkJCXBjdERpc3QgICAgCTAuNjc0NzcyCi0JCQkJaGVpZ2h0ICAgICAJNDMKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QUQ3QTAxNEQiCi0JCQkgICAgY2xpZW50ICAgICAJQDUwCi0JCQkgICAgc3VwcGxpZXIgICAJQDMzCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTQzMiwgMTY1NCkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTc0NywgMTY1NCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA1MwotCQkJCVBhcmVudF9WaWV3IAlANTEKLQkJCQlsb2NhdGlvbiAgIAkoMTY4MSwgMTY5NykKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjc5MDI3NAotCQkJCWhlaWdodCAgICAgCTQzCi0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkNTAiIEA1NAotCQkJICAgIFBhcmVudF9WaWV3IAlANTAKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTEyMCwgMzc0KQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNCODRBRDdBMDE0RSIKLQkJCSAgICBjbGllbnQgICAgIAlANTAKLQkJCSAgICBzdXBwbGllciAgIAlANDkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxNDMyLCAxNjU0KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMTE3LCAxNjU0KSkpKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkJpbmRpbmdPcGVyYXRpb24iIEA1NQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg5OTIsIDEwMDgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA1NQotCQkJbG9jYXRpb24gICAJKDgxOSwgOTMxKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTM0NgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIkJpbmRpbmdPcGVyYXRpb24iKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEM0NCMDE0NSIKLQkJICAgIHdpZHRoICAgICAgCTM2NAotCQkgICAgaGVpZ2h0ICAgICAJMTc4Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA1NgotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBREU0MDFEQyIKLQkJICAgIGNsaWVudCAgICAgCUA1NQotCQkgICAgc3VwcGxpZXIgICAJQDI3Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDk2NiwgOTE5KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDk2NiwgNjM2KSkKLQkJKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDUiIEA1NwotCQkgICAgbG9jYXRpb24gICAJKDQzMywgMTAyMikKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDNFMTAxNzkiCi0JCSAgICByb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDYiIEA1OAotCQkJICAgIFBhcmVudF9WaWV3IAlANTcKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTEzNDMsIDQ5NCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA1OQotCQkJCVBhcmVudF9WaWV3IAlANTgKLQkJCQlsb2NhdGlvbiAgIAkoMjM1LCA4NzcpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTYwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIiCi0JCQkJcGN0RGlzdCAgICAJMC44MDAwMDAKLQkJCQloZWlnaHQgICAgIAk0MgotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRDVEM0UyMDIyNSIKLQkJCSAgICBjbGllbnQgICAgIAlANTcKLQkJCSAgICBzdXBwbGllciAgIAlAMzQKLQkJCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkoNDMzLCAxMDIyKQotCQkJCSgyNzYsIDEwMjIpCi0JCQkJKDI3NiwgODAyKSkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg0MzMsIDEwMjIpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDI3NiwgODAyKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDYwCi0JCQkJUGFyZW50X1ZpZXcgCUA1OAotCQkJCWxvY2F0aW9uICAgCSgzMzAsIDg0MSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjkwMDAwMAotCQkJCWhlaWdodCAgICAgCTU0Ci0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiZUJpbmRpbmdPcGVyYXRpb25zIiBANjEKLQkJCSAgICBQYXJlbnRfVmlldyAJQDU3Ci0JCQkgICAgbG9jYXRpb24gICAJKC0xMzQzLCA0OTQpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBANjIKLQkJCQlQYXJlbnRfVmlldyAJQDYxCi0JCQkJbG9jYXRpb24gICAJKDUxMywgOTc3KQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTM4NAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK2VCaW5kaW5nT3BlcmF0aW9ucyIKLQkJCQlwY3REaXN0ICAgIAkwLjIxMTY5OQotCQkJCWhlaWdodCAgICAgCTQ2Ci0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FENUQzRTIwMjM5IgotCQkJICAgIGNsaWVudCAgICAgCUA1NwotCQkJICAgIHN1cHBsaWVyICAgCUA1NQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDQzMywgMTAyMikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoODEwLCAxMDIyKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDYzCi0JCQkJUGFyZW50X1ZpZXcgCUA2MQotCQkJCWxvY2F0aW9uICAgCSg3NjYsIDk4MCkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uKiIKLQkJCQlwY3REaXN0ICAgIAkwLjg4NDk1NgotCQkJCWhlaWdodCAgICAgCTQzCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBANjQKLQkJCQlQYXJlbnRfVmlldyAJQDYxCi0JCQkJbG9jYXRpb24gICAJKDcwNiwgMTA2NykKLQkJCQlhbmNob3IgICAgIAkzCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNTQKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIntvcmRlcmVkfSIKLQkJCQlwY3REaXN0ICAgIAkwLjcyNzU2NAotCQkJCWhlaWdodCAgICAgCTQ1Ci0JCQkJb3JpZW50YXRpb24gCTEpKSkpCi0JCShvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQ3IiBANjUKLQkJICAgIGxvY2F0aW9uICAgCSgxNDE4LCAxMDQwKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVENDI1MDM4QSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZU9wZXJhdGlvbiIgQDY2Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUA2NQotCQkJICAgIGxvY2F0aW9uICAgCSgtMzU4LCA0NjQpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBANjcKLQkJCQlQYXJlbnRfVmlldyAJQDY2Ci0JCQkJbG9jYXRpb24gICAJKDE1MjAsIDEwNzkpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMjI4Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZU9wZXJhdGlvbiIKLQkJCQlwY3REaXN0ICAgIAkwLjQyMDYwMQotCQkJCWhlaWdodCAgICAgCTM5Ci0JCQkJb3JpZW50YXRpb24gCTEpCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FENUQ0MjYwMkY1IgotCQkJICAgIGNsaWVudCAgICAgCUA2NQotCQkJICAgIHN1cHBsaWVyICAgCUA0MgotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDE0MTgsIDEwNDApCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDE2NjMsIDEwNDApCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBANjgKLQkJCQlQYXJlbnRfVmlldyAJQDY2Ci0JCQkJbG9jYXRpb24gICAJKDE1ODksIDEwMDUpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjEuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC42OTY3MjEKLQkJCQloZWlnaHQgICAgIAkzNgotCQkJCW9yaWVudGF0aW9uIAkwKSkKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDgiIEA2OQotCQkJICAgIFBhcmVudF9WaWV3IAlANjUKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTM1OCwgNDY0KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDcwCi0JCQkJUGFyZW50X1ZpZXcgCUA2OQotCQkJCWxvY2F0aW9uICAgCSgxMjczLCAxMDcwKQotCQkJCWhpZGRlbiAgICAgCVRSVUUKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxOTIKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIiIKLQkJCQlwY3REaXN0ICAgIAkwLjU5NTQyMAotCQkJCWhlaWdodCAgICAgCTMwCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FENUQ0MjYwMkZGIgotCQkJICAgIGNsaWVudCAgICAgCUA2NQotCQkJICAgIHN1cHBsaWVyICAgCUA1NQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDE0MTgsIDEwNDApCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDExNzQsIDEwNDApKSkpCi0JCShvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQyNyIgQDcxCi0JCSAgICBsb2NhdGlvbiAgIAkoNzg3LCAxMTkwKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBREYyRTY0MDFGNSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZUJpbmRpbmdJbnB1dCIgQDcyCi0JCQkgICAgUGFyZW50X1ZpZXcgCUA3MQotCQkJICAgIGxvY2F0aW9uICAgCSgtMzgxLCA0NTQpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBANzMKLQkJCQlQYXJlbnRfVmlldyAJQDcyCi0JCQkJbG9jYXRpb24gICAJKDY2OSwgMTE1MikKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkyNzYKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlQmluZGluZ0lucHV0IgotCQkJCXBjdERpc3QgICAgCTAuNTExOTA1Ci0JCQkJaGVpZ2h0ICAgICAJMzkKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQURGMkU2NTAyNTEiCi0JCQkgICAgY2xpZW50ICAgICAJQDcxCi0JCQkgICAgc3VwcGxpZXIgICAJQDQzCi0JCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJKDc4NywgMTE5MCkKLQkJCQkoNjM2LCAxMTkwKQotCQkJCSg2MzYsIDEyNzEpKQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDc4NywgMTE5MCkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoNjM2LCAxMjcxKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDc0Ci0JCQkJUGFyZW50X1ZpZXcgCUA3MgotCQkJCWxvY2F0aW9uICAgCSg2ODUsIDEyMjIpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC40NDA0NzYKLQkJCQloZWlnaHQgICAgIAkzMgotCQkJCW9yaWVudGF0aW9uIAkwKSkKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDI4IiBANzUKLQkJCSAgICBQYXJlbnRfVmlldyAJQDcxCi0JCQkgICAgbG9jYXRpb24gICAJKC0zODEsIDQ1NCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA3NgotCQkJCVBhcmVudF9WaWV3IAlANzUKLQkJCQlsb2NhdGlvbiAgIAkoODg1LCAxMTQ0KQotCQkJCWhpZGRlbiAgICAgCVRSVUUKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAk2MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiIgotCQkJCXBjdERpc3QgICAgCTAuODAwMDAwCi0JCQkJaGVpZ2h0ICAgICAJNDIKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQURGMkU2NTAyNTIiCi0JCQkgICAgY2xpZW50ICAgICAJQDcxCi0JCQkgICAgc3VwcGxpZXIgICAJQDU1Ci0JCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJKDc4NywgMTE5MCkKLQkJCQkoOTI2LCAxMTkwKQotCQkJCSg5MjYsIDEwOTcpKQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDc4NywgMTE5MCkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoOTI2LCAxMDk3KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDc3Ci0JCQkJUGFyZW50X1ZpZXcgCUA3NQotCQkJCWxvY2F0aW9uICAgCSg4NzEsIDExMzYpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjEuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC44Mzc3NTgKLQkJCQloZWlnaHQgICAgIAk1NgotCQkJCW9yaWVudGF0aW9uIAkwKSkpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMjkiIEA3OAotCQkgICAgbG9jYXRpb24gICAJKDEwMjQsIDEzMTIpCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FERjJFQjMwMTYzIgotCQkgICAgcm9sZXZpZXdfbGlzdCAJKGxpc3QgUm9sZVZpZXdzCi0JCQkob2JqZWN0IFJvbGVWaWV3ICJlQmluZGluZ091dHB1dCIgQDc5Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUA3OAotCQkJICAgIGxvY2F0aW9uICAgCSgtMTUwLCA1NzgpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAODAKLQkJCQlQYXJlbnRfVmlldyAJQDc5Ci0JCQkJbG9jYXRpb24gICAJKDEwMTIsIDE0MjkpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMzA2Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZUJpbmRpbmdPdXRwdXQiCi0JCQkJcGN0RGlzdCAgICAJMC41NDUwODIKLQkJCQloZWlnaHQgICAgIAkxMwotCQkJCW9yaWVudGF0aW9uIAkxKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBREYyRUI0MDEzQyIKLQkJCSAgICBjbGllbnQgICAgIAlANzgKLQkJCSAgICBzdXBwbGllciAgIAlANDkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMDI0LCAxMzEyKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMDI0LCAxNTI3KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDgxCi0JCQkJUGFyZW50X1ZpZXcgCUA3OQotCQkJCWxvY2F0aW9uICAgCSg5NjcsIDE0NzkpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC43NzQ1OTAKLQkJCQloZWlnaHQgICAgIAk1OAotCQkJCW9yaWVudGF0aW9uIAkxKSkKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDMwIiBAODIKLQkJCSAgICBQYXJlbnRfVmlldyAJQDc4Ci0JCQkgICAgbG9jYXRpb24gICAJKC0xNTAsIDU3OCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA4MwotCQkJCVBhcmVudF9WaWV3IAlAODIKLQkJCQlsb2NhdGlvbiAgIAkoOTgzLCAxMTQwKQotCQkJCWhpZGRlbiAgICAgCVRSVUUKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAk2MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiIgotCQkJCXBjdERpc3QgICAgCTAuODAwMDAwCi0JCQkJaGVpZ2h0ICAgICAJNDIKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQURGMkVCNDAxM0QiCi0JCQkgICAgY2xpZW50ICAgICAJQDc4Ci0JCQkgICAgc3VwcGxpZXIgICAJQDU1Ci0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTAyNCwgMTMxMikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTAyNCwgMTA5NykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA4NAotCQkJCVBhcmVudF9WaWV3IAlAODIKLQkJCQlsb2NhdGlvbiAgIAkoMTAzMSwgMTE4NikKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjU5MDE2NAotCQkJCWhlaWdodCAgICAgCTcKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpGYXVsdCIgQDg1Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE5MjAsIDE5ODQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA4NQotCQkJbG9jYXRpb24gICAJKDE3NzIsIDE5MDcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjk2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiRmF1bHQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRTA3OEJFMDEwOCIKLQkJICAgIHdpZHRoICAgICAgCTMxNAotCQkgICAgaGVpZ2h0ICAgICAJMTc4Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkJpbmRpbmdGYXVsdCIgQDg2Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDEzNjAsIDE5ODQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA4NgotCQkJbG9jYXRpb24gICAJKDEyMTIsIDE4NTkpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjk2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiQmluZGluZ0ZhdWx0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwOEE5RTAzQTYiCi0JCSAgICB3aWR0aCAgICAgIAkzMTQKLQkJICAgIGhlaWdodCAgICAgCTI3NAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAODcKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QUU3MTAzMzMiCi0JCSAgICBjbGllbnQgICAgIAlAODYKLQkJICAgIHN1cHBsaWVyICAgCUAzMAotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMjAzLCAyMDA3KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDM1MywgMjAwNykpCi0JCShvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQzNyIgQDg4Ci0JCSAgICBsb2NhdGlvbiAgIAkoMTM1NiwgMTM1MikKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQURGMzQwMDAzRTUiCi0JCSAgICByb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCShvYmplY3QgUm9sZVZpZXcgImVCaW5kaW5nRmF1bHRzIiBAODkKLQkJCSAgICBQYXJlbnRfVmlldyAJQDg4Ci0JCQkgICAgbG9jYXRpb24gICAJKDE4OCwgNjE2KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDkwCi0JCQkJUGFyZW50X1ZpZXcgCUA4OQotCQkJCWxvY2F0aW9uICAgCSgxMzgyLCAxNzUwKQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTMwMAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK2VCaW5kaW5nRmF1bHRzIgotCQkJCXBjdERpc3QgICAgCTAuODAzMTUwCi0JCQkJaGVpZ2h0ICAgICAJMjYKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQURGMzQwMTAzQUEiCi0JCQkgICAgY2xpZW50ICAgICAJQDg4Ci0JCQkgICAgc3VwcGxpZXIgICAJQDg2Ci0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTM1NiwgMTM1MikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTM1NiwgMTg0NykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA5MQotCQkJCVBhcmVudF9WaWV3IAlAODkKLQkJCQlsb2NhdGlvbiAgIAkoMTQwOSwgMTc5NykKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uKiIKLQkJCQlwY3REaXN0ICAgIAkwLjg5OTE5NAotCQkJCWhlaWdodCAgICAgCTUzCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAOTIKLQkJCQlQYXJlbnRfVmlldyAJQDg5Ci0JCQkJbG9jYXRpb24gICAJKDEyNTYsIDE4MDYpCi0JCQkJYW5jaG9yICAgICAJMwotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTU0Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSJ7b3JkZXJlZH0iCi0JCQkJcGN0RGlzdCAgICAJMC45MTkyOTEKLQkJCQloZWlnaHQgICAgIAkxMDEKLQkJCQlvcmllbnRhdGlvbiAJMSkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQzOCIgQDkzCi0JCQkgICAgUGFyZW50X1ZpZXcgCUA4OAotCQkJICAgIGxvY2F0aW9uICAgCSgxODgsIDYxNikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA5NAotCQkJCVBhcmVudF9WaWV3IAlAOTMKLQkJCQlsb2NhdGlvbiAgIAkoMTA3NiwgMTE5NykKLQkJCQloaWRkZW4gICAgIAlUUlVFCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJNjAKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIiIKLQkJCQlwY3REaXN0ICAgIAkwLjgwMDAwMAotCQkJCWhlaWdodCAgICAgCTQyCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FERjM0MDEwM0FCIgotCQkJICAgIGNsaWVudCAgICAgCUA4OAotCQkJICAgIHN1cHBsaWVyICAgCUA1NQotCQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJCSgxMzU2LCAxMzUyKQotCQkJCSgxMzU2LCAxMjE3KQotCQkJCSgxMTE3LCAxMjE3KQotCQkJCSgxMTE3LCAxMDk3KSkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMzU2LCAxMzUyKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMTE3LCAxMDk3KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDk1Ci0JCQkJUGFyZW50X1ZpZXcgCUA5MwotCQkJCWxvY2F0aW9uICAgCSgxMTUyLCAxMTY0KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNjg3MDA4Ci0JCQkJaGVpZ2h0ICAgICAJNTQKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDM5IiBAOTYKLQkJICAgIGxvY2F0aW9uICAgCSgxNjQwLCAxOTcwKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRTA5MUY0MDJGMyIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZUZhdWx0IiBAOTcKLQkJCSAgICBQYXJlbnRfVmlldyAJQDk2Ci0JCQkgICAgbG9jYXRpb24gICAJKC0zNDQsIDgxOCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEA5OAotCQkJCVBhcmVudF9WaWV3IAlAOTcKLQkJCQlsb2NhdGlvbiAgIAkoMTY3NCwgMTkxNSkKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNDQKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlRmF1bHQiCi0JCQkJcGN0RGlzdCAgICAJMC4yNzY0MjMKLQkJCQloZWlnaHQgICAgIAk1NgotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRTA5MUY4MDFGRSIKLQkJCSAgICBjbGllbnQgICAgIAlAOTYKLQkJCSAgICBzdXBwbGllciAgIAlAODUKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxNjQwLCAxOTcwKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNzYzLCAxOTcwKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDk5Ci0JCQkJUGFyZW50X1ZpZXcgCUA5NwotCQkJCWxvY2F0aW9uICAgCSgxNzE4LCAyMDEyKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNjQyMjc2Ci0JCQkJaGVpZ2h0ICAgICAJNDIKLQkJCQlvcmllbnRhdGlvbiAJMSkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQ0MCIgQDEwMAotCQkJICAgIFBhcmVudF9WaWV3IAlAOTYKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTM0NCwgODE4KQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRTA5MUY4MDFGRiIKLQkJCSAgICBjbGllbnQgICAgIAlAOTYKLQkJCSAgICBzdXBwbGllciAgIAlAODYKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxNjQwLCAxOTcwKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNTE3LCAxOTcwKSkpKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAxMDEKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QUU0MzAyQUIiCi0JCSAgICBjbGllbnQgICAgIAlANDkKLQkJICAgIHN1cHBsaWVyICAgCUAyOQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg4MDMsIDE2NTYpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMzY0LCAxNjU2KSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMTAyCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEFFMUIwMTEzIgotCQkgICAgY2xpZW50ICAgICAJQDQzCi0JCSAgICBzdXBwbGllciAgIAlAMjgKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoNDY3LCAxMzg1KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDMzMSwgMTM4NSkpKSkKLQkob2JqZWN0IENsYXNzRGlhZ3JhbSAiMi40IFBvcnRUeXBlcyIKLQkgICAgcXVpZCAgICAgICAJIjNBRDVEMUM0MDM2NiIKLQkgICAgdGl0bGUgICAgICAJIjIuNCBQb3J0VHlwZXMiCi0JICAgIGRvY3VtZW50YXRpb24gCSJUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG5vbi1NT0YgamF2YS51dGlsLkl0ZXJhdG9yIGludGVyZmFjZS4iCi0JICAgIHpvb20gICAgICAgCTgwCi0JICAgIG1heF9oZWlnaHQgCTI4MzUwCi0JICAgIG1heF93aWR0aCAgCTIxNjAwCi0JICAgIG9yaWdpbl94ICAgCTAKLQkgICAgb3JpZ2luX3kgICAJMAotCSAgICBpdGVtcyAgICAgIAkobGlzdCBkaWFncmFtX2l0ZW1fbGlzdAotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklQb3J0VHlwZSIgQDEwMwotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoNDk2LCAyMDgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAxMDMKLQkJCWxvY2F0aW9uICAgCSgxNDYsIDE3MikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk3MDAKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJUG9ydFR5cGUiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTAzCi0JCQlsb2NhdGlvbiAgIAkoMTQ2LCAxMjIpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTcwMAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE1QkUwMzMxIgotCQkgICAgd2lkdGggICAgICAJNzE4Ci0JCSAgICBoZWlnaHQgICAgIAkxOTYKLQkJICAgIGFubm90YXRpb24gCTgpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SU9wZXJhdGlvbiIgQDEwNAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTU1MiwgMjA4KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTA0Ci0JCQlsb2NhdGlvbiAgIAkoMTExNiwgMTc2KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTg3MwotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklPcGVyYXRpb24iKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTA0Ci0JCQlsb2NhdGlvbiAgIAkoMTExNiwgMTI2KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk4NzMKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBNzc2MDBEMSIKLQkJICAgIHdpZHRoICAgICAgCTg5MQotCQkgICAgaGVpZ2h0ICAgICAJMTg4Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklJbnB1dCIgQDEwNQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMzY4LCAxNDcyKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTA1Ci0JCQlsb2NhdGlvbiAgIAkoNTUsIDE0MzcpCi0JCQlmaWxsX2NvbG9yIAkxNjc3NzIxNQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjI2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUlucHV0IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDEwNQotCQkJbG9jYXRpb24gICAJKDU1LCAxMzg3KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk2MjYKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBN0VFMDAxNSIKLQkJICAgIHdpZHRoICAgICAgCTY0NAotCQkgICAgaGVpZ2h0ICAgICAJMTk0Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklPdXRwdXQiIEAxMDYKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDM4NCwgMTc5MikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDEwNgotCQkJbG9jYXRpb24gICAJKDU2LCAxNzU3KQotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY1NgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklPdXRwdXQiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTA2Ci0JCQlsb2NhdGlvbiAgIAkoNTYsIDE3MDcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY1NgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE4MjkwMjdEIgotCQkgICAgd2lkdGggICAgICAJNjc0Ci0JCSAgICBoZWlnaHQgICAgIAkxOTQKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUZhdWx0IiBAMTA3Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NPcGVyYXRpb24gCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgzNjgsIDIxMTIpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAxMDcKLQkJCWxvY2F0aW9uICAgCSg1NSwgMjA3NikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk2MjYKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJRmF1bHQiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTA3Ci0JCQlsb2NhdGlvbiAgIAkoNTUsIDIwMjYpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTYyNgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE4NjEwMzFEIgotCQkgICAgd2lkdGggICAgICAJNjQ0Ci0JCSAgICBoZWlnaHQgICAgIAkxOTYKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6UG9ydFR5cGUiIEAxMDgKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDQ5NiwgODAwKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTA4Ci0JCQlsb2NhdGlvbiAgIAkoMTU4LCA2NzIpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjc3Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiUG9ydFR5cGUiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDN0YwMDFBNSIKLQkJICAgIHdpZHRoICAgICAgCTY5NQotCQkgICAgaGVpZ2h0ICAgICAJMjgxCi0JCSAgICBhbm5vdGF0aW9uIAk4KQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OlBhcnQiIEAxMDkKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDI1NzYsIDgwMCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDEwOQotCQkJbG9jYXRpb24gICAJKDIzMjUsIDY5MikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk1MDIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJQYXJ0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Q0UxQzAzMkUiCi0JCSAgICB3aWR0aCAgICAgIAk1MjAKLQkJICAgIGhlaWdodCAgICAgCTI0MAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpGYXVsdCIgQDExMAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTcyOCwgMjExMikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDExMAotCQkJbG9jYXRpb24gICAJKDE2NDcsIDIwNjApCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTYyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiRmF1bHQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRTA3OEJFMDEwOCIKLQkJICAgIGhlaWdodCAgICAgCTEyOAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJbnB1dCIgQDExMQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTA1NiwgMTQ3MikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDExMQotCQkJbG9jYXRpb24gICAJKDg3MCwgMTQyMikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkzNzIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJbnB1dCIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FFMDc4OUYwMDU5IgotCQkgICAgd2lkdGggICAgICAJMzkwCi0JCSAgICBoZWlnaHQgICAgIAkxMjUKLQkJICAgIGFubm90YXRpb24gCTgpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6T3V0cHV0IiBAMTEyCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NPcGVyYXRpb24gCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxMzYwLCAxNzkyKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTEyCi0JCQlsb2NhdGlvbiAgIAkoMTIzMiwgMTc0MikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkyNTYKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJPdXRwdXQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRTA3OEI2MDIzMiIKLQkJICAgIHdpZHRoICAgICAgCTI3NAotCQkgICAgaGVpZ2h0ICAgICAJMTI1Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6Ok9wZXJhdGlvbiIgQDExMwotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTU1MiwgNzg0KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTEzCi0JCQlsb2NhdGlvbiAgIAkoMTIxNCwgNjIwKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY3NwotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIk9wZXJhdGlvbiIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUM4MEQwM0NFIgotCQkgICAgd2lkdGggICAgICAJNjk1Ci0JCSAgICBoZWlnaHQgICAgIAkzNTIKLQkJICAgIGFubm90YXRpb24gCTgpCi0JCShvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQwIiBAMTE0Ci0JCSAgICBsb2NhdGlvbiAgIAkoMTAyNCwgNzk3KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDODI0MDE4QyIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZU9wZXJhdGlvbnMiIEAxMTUKLQkJCSAgICBQYXJlbnRfVmlldyAJQDExNAotCQkJICAgIGxvY2F0aW9uICAgCSg1OTIsIDI2OSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxMTYKLQkJCQlQYXJlbnRfVmlldyAJQDExNQotCQkJCWxvY2F0aW9uICAgCSgxMDg4LCA3NDgpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMjQ5Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZU9wZXJhdGlvbnMiCi0JCQkJcGN0RGlzdCAgICAJMC4zNTk2NDkKLQkJCQloZWlnaHQgICAgIAk1MAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRDVDODI3MDFDRCIKLQkJCSAgICBjbGllbnQgICAgIAlAMTE0Ci0JCQkgICAgc3VwcGxpZXIgICAJQDExMwotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDEwMjQsIDc5NykKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTIwNSwgNzk3KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDExNwotCQkJCVBhcmVudF9WaWV3IAlAMTE1Ci0JCQkJbG9jYXRpb24gICAJKDExNzYsIDg2MSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uKiIKLQkJCQlwY3REaXN0ICAgIAkwLjg0MDM5MQotCQkJCWhlaWdodCAgICAgCTY0Ci0JCQkJb3JpZW50YXRpb24gCTEpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTE4Ci0JCQkJUGFyZW50X1ZpZXcgCUAxMTUKLQkJCQlsb2NhdGlvbiAgIAkoMTA3NCwgOTIzKQotCQkJCWFuY2hvciAgICAgCTMKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE2NAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkie29yZGVyZWR9IgotCQkJCXBjdERpc3QgICAgCTAuMjc2MjQzCi0JCQkJaGVpZ2h0ICAgICAJMTI2Ci0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAicG9ydFR5cGUiIEAxMTkKLQkJCSAgICBQYXJlbnRfVmlldyAJQDExNAotCQkJICAgIGxvY2F0aW9uICAgCSg1OTIsIDI2OSkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzgyNzAxQzMiCi0JCQkgICAgY2xpZW50ICAgICAJQDExNAotCQkJICAgIHN1cHBsaWVyICAgCUAxMDgKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMDI0LCA3OTcpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDg0MywgNzk3KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDEyMAotCQkJCVBhcmVudF9WaWV3IAlAMTE5Ci0JCQkJbG9jYXRpb24gICAJKDg4OCwgNzU3KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNzUzNDg4Ci0JCQkJaGVpZ2h0ICAgICAJNDEKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDQ1IiBAMTIxCi0JCSAgICBsb2NhdGlvbiAgIAkoMjEwNywgNzczKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRUE0MTJGMDAzNSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZVBhcmFtZXRlck9yZGVyaW5nIiBAMTIyCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAxMjEKLQkJCSAgICBsb2NhdGlvbiAgIAkoMTgxOSwgMTAxKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDEyMwotCQkJCVBhcmVudF9WaWV3IAlAMTIyCi0JCQkJbG9jYXRpb24gICAJKDIxNDUsIDY0NykKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkzOTYKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlUGFyYW1ldGVyT3JkZXJpbmciCi0JCQkJcGN0RGlzdCAgICAJMC4xODMzMzMKLQkJCQloZWlnaHQgICAgIAkxMjcKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUVBNDEzMTAyNTUiCi0JCQkgICAgY2xpZW50ICAgICAJQDEyMQotCQkJICAgIHN1cHBsaWVyICAgCUAxMDkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgyMTA3LCA3NzMpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDIzMTYsIDc3MykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxMjQKLQkJCQlQYXJlbnRfVmlldyAJQDEyMgotCQkJCWxvY2F0aW9uICAgCSgyMjcyLCA4MjIpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLioiCi0JCQkJcGN0RGlzdCAgICAJMC43OTY2MTAKLQkJCQloZWlnaHQgICAgIAk0OQotCQkJCW9yaWVudGF0aW9uIAkxKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDEyNQotCQkJCVBhcmVudF9WaWV3IAlAMTIyCi0JCQkJbG9jYXRpb24gICAJKDIxNzEsIDg4OCkKLQkJCQlhbmNob3IgICAgIAkzCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNjQKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIntvcmRlcmVkfSIKLQkJCQlwY3REaXN0ICAgIAkwLjMwNjIyMAotCQkJCWhlaWdodCAgICAgCTExNQotCQkJCW9yaWVudGF0aW9uIAkxKSkKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDQ2IiBAMTI2Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAxMjEKLQkJCSAgICBsb2NhdGlvbiAgIAkoMTgxOSwgMTAxKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRUE0MTMxMDI1RiIKLQkJCSAgICBjbGllbnQgICAgIAlAMTIxCi0JCQkgICAgc3VwcGxpZXIgICAJQDExMwotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDIxMDcsIDc3MykKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTg5OSwgNzczKSkpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMzUiIEAxMjcKLQkJICAgIGxvY2F0aW9uICAgCSgxNzAyLCAxNTA0KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBREYzMzE2MDFBNCIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZUZhdWx0cyIgQDEyOAotCQkJICAgIFBhcmVudF9WaWV3IAlAMTI3Ci0JCQkgICAgbG9jYXRpb24gICAJKDE0MTQsIDgzMikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxMjkKLQkJCQlQYXJlbnRfVmlldyAJQDEyOAotCQkJCWxvY2F0aW9uICAgCSgxODE1LCAxOTgyKQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE2OAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK2VGYXVsdHMiCi0JCQkJcGN0RGlzdCAgICAJMC44Nzg5OTIKLQkJCQloZWlnaHQgICAgIAkxMTMKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQURGMzMxODAzODciCi0JCQkgICAgY2xpZW50ICAgICAJQDEyNwotCQkJICAgIHN1cHBsaWVyICAgCUAxMTAKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxNzAyLCAxNTA0KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNzAyLCAyMDQ4KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDEzMAotCQkJCVBhcmVudF9WaWV3IAlAMTI4Ci0JCQkJbG9jYXRpb24gICAJKDE2NDQsIDIwMjApCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLioiCi0JCQkJcGN0RGlzdCAgICAJMC45NDk1ODAKLQkJCQloZWlnaHQgICAgIAk1OQotCQkJCW9yaWVudGF0aW9uIAkxKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDEzMQotCQkJCVBhcmVudF9WaWV3IAlAMTI4Ci0JCQkJbG9jYXRpb24gICAJKDE1OTMsIDE5NjMpCi0JCQkJYW5jaG9yICAgICAJMwotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTY0Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSJ7b3JkZXJlZH0iCi0JCQkJcGN0RGlzdCAgICAJMC44NDUzNzgKLQkJCQloZWlnaHQgICAgIAkxMTAKLQkJCQlvcmllbnRhdGlvbiAJMSkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQzNiIgQDEzMgotCQkJICAgIFBhcmVudF9WaWV3IAlAMTI3Ci0JCQkgICAgbG9jYXRpb24gICAJKDE0MTQsIDgzMikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxMzMKLQkJCQlQYXJlbnRfVmlldyAJQDEzMgotCQkJCWxvY2F0aW9uICAgCSgxNjYxLCAxMDY5KQotCQkJCWhpZGRlbiAgICAgCVRSVUUKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAk2MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiIgotCQkJCXBjdERpc3QgICAgCTAuODAwMDAwCi0JCQkJaGVpZ2h0ICAgICAJNDIKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQURGMzMxODAzODgiCi0JCQkgICAgY2xpZW50ICAgICAJQDEyNwotCQkJICAgIHN1cHBsaWVyICAgCUAxMTMKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxNzAyLCAxNTA0KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNzAyLCA5NjApCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTM0Ci0JCQkJUGFyZW50X1ZpZXcgCUAxMzIKLQkJCQlsb2NhdGlvbiAgIAkoMTgyMSwgMTAzOSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjg1NzM2MgotCQkJCWhlaWdodCAgICAgCTExOQotCQkJCW9yaWVudGF0aW9uIAkxKSkpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMzEiIEAxMzUKLQkJICAgIGxvY2F0aW9uICAgCSgxMTc4LCAxMjM0KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBREYyRjk0MDI0RCIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZUlucHV0IiBAMTM2Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAxMzUKLQkJCSAgICBsb2NhdGlvbiAgIAkoODkwLCA1NjIpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTM3Ci0JCQkJUGFyZW50X1ZpZXcgCUAxMzYKLQkJCQlsb2NhdGlvbiAgIAkoODc4LCAxMzQzKQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTEzMgotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK2VJbnB1dCIKLQkJCQlwY3REaXN0ICAgIAkwLjgxOTgyMAotCQkJCWhlaWdodCAgICAgCTEwMwotCQkJCW9yaWVudGF0aW9uIAkxKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBREYyRjk1MDE5MCIKLQkJCSAgICBjbGllbnQgICAgIAlAMTM1Ci0JCQkgICAgc3VwcGxpZXIgICAJQDExMQotCQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJCSgxMTc4LCAxMjM0KQotCQkJCSg5ODAsIDEyMzQpCi0JCQkJKDk4MCwgMTQxMCkpCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTE3OCwgMTIzNCkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoOTgwLCAxNDEwKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDEzOAotCQkJCVBhcmVudF9WaWV3IAlAMTM2Ci0JCQkJbG9jYXRpb24gICAJKDEwNDYsIDEzNjQpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC44Nzc2NjAKLQkJCQloZWlnaHQgICAgIAk2NgotCQkJCW9yaWVudGF0aW9uIAkwKSkKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDMyIiBAMTM5Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAxMzUKLQkJCSAgICBsb2NhdGlvbiAgIAkoODkwLCA1NjIpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTQwCi0JCQkJUGFyZW50X1ZpZXcgCUAxMzkKLQkJCQlsb2NhdGlvbiAgIAkoMTIzNiwgMTAzNikKLQkJCQloaWRkZW4gICAgIAlUUlVFCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJNjAKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIiIKLQkJCQlwY3REaXN0ICAgIAkwLjgwMDAwMAotCQkJCWhlaWdodCAgICAgCTQyCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FERjJGOTUwMTlBIgotCQkJICAgIGNsaWVudCAgICAgCUAxMzUKLQkJCSAgICBzdXBwbGllciAgIAlAMTEzCi0JCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJKDExNzgsIDEyMzQpCi0JCQkJKDEyNzcsIDEyMzQpCi0JCQkJKDEyNzcsIDk2MCkpCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTE3OCwgMTIzNCkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTI3NywgOTYwKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE0MQotCQkJCVBhcmVudF9WaWV3IAlAMTM5Ci0JCQkJbG9jYXRpb24gICAJKDExOTcsIDEwNTgpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjEuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC43MzY0MTMKLQkJCQloZWlnaHQgICAgIAk4MQotCQkJCW9yaWVudGF0aW9uIAkwKSkpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMzMiIEAxNDIKLQkJICAgIGxvY2F0aW9uICAgCSgxNDY4LCAxMzQ1KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBREYyRkI4MDJGOSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZU91dHB1dCIgQDE0MwotCQkJICAgIFBhcmVudF9WaWV3IAlAMTQyCi0JCQkgICAgbG9jYXRpb24gICAJKDExODAsIDY3MykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxNDQKLQkJCQlQYXJlbnRfVmlldyAJQDE0MwotCQkJCWxvY2F0aW9uICAgCSgxMzYyLCAxNjY5KQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE2OAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK2VPdXRwdXQiCi0JCQkJcGN0RGlzdCAgICAJMC44NDA5MDkKLQkJCQloZWlnaHQgICAgIAkxMDcKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQURGMkZCOTAyMEEiCi0JCQkgICAgY2xpZW50ICAgICAJQDE0MgotCQkJICAgIHN1cHBsaWVyICAgCUAxMTIKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxNDY4LCAxMzQ1KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNDY4LCAxNzMwKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE0NQotCQkJCVBhcmVudF9WaWV3IAlAMTQzCi0JCQkJbG9jYXRpb24gICAJKDE1NDYsIDE2NzYpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC44NjM2MzYKLQkJCQloZWlnaHQgICAgIAk3OAotCQkJCW9yaWVudGF0aW9uIAkwKSkKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDM0IiBAMTQ2Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAxNDIKLQkJCSAgICBsb2NhdGlvbiAgIAkoMTE4MCwgNjczKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE0NwotCQkJCVBhcmVudF9WaWV3IAlAMTQ2Ci0JCQkJbG9jYXRpb24gICAJKDE0MjcsIDEwMzcpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTYwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIiCi0JCQkJcGN0RGlzdCAgICAJMC44MDAwMDAKLQkJCQloZWlnaHQgICAgIAk0MgotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBREYyRkI5MDIwQiIKLQkJCSAgICBjbGllbnQgICAgIAlAMTQyCi0JCQkgICAgc3VwcGxpZXIgICAJQDExMwotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDE0NjgsIDEzNDUpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDE0NjgsIDk2MCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxNDgKLQkJCQlQYXJlbnRfVmlldyAJQDE0NgotCQkJCWxvY2F0aW9uICAgCSgxNTIzLCAxMDgwKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNjkwMzQxCi0JCQkJaGVpZ2h0ICAgICAJNTUKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMTQ5Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y2RjFGRDgwMTlGIgotCQkgICAgY2xpZW50ICAgICAJQDEwOAotCQkgICAgc3VwcGxpZXIgICAJQDEwMwotCQkgICAgbGluZV9zdHlsZSAJMCkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMTUwCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y2RjFGRTIwMTcxIgotCQkgICAgY2xpZW50ICAgICAJQDExMwotCQkgICAgc3VwcGxpZXIgICAJQDEwNAotCQkgICAgbGluZV9zdHlsZSAJMCkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMTUxCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y2RjFGRUUwMzFEIgotCQkgICAgY2xpZW50ICAgICAJQDExMQotCQkgICAgc3VwcGxpZXIgICAJQDEwNQotCQkgICAgbGluZV9zdHlsZSAJMCkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMTUyCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y2RjFGRjgwMUNEIgotCQkgICAgY2xpZW50ICAgICAJQDExMgotCQkgICAgc3VwcGxpZXIgICAJQDEwNgotCQkgICAgbGluZV9zdHlsZSAJMCkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMTUzCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y2RjIwMDIwMDJEIgotCQkgICAgY2xpZW50ICAgICAJQDExMAotCQkgICAgc3VwcGxpZXIgICAJQDEwNwotCQkgICAgbGluZV9zdHlsZSAJMCkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpNZXNzYWdlIiBAMTU0Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NPcGVyYXRpb24gCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgyMjI0LCAxNDU2KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTU0Ci0JCQlsb2NhdGlvbiAgIAkoMTkzNywgMTMxMikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk1NzUKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJNZXNzYWdlIikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Qzk1OTAwNzgiCi0JCSAgICB3aWR0aCAgICAgIAk1OTMKLQkJICAgIGhlaWdodCAgICAgCTMxMgotCQkgICAgYW5ub3RhdGlvbiAJOCkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpNZXNzYWdlUmVmZXJlbmNlIiBAMTU1Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NPcGVyYXRpb24gCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxNTIwLCAyNTQ0KQotCQkgICAgZm9udCAgICAgICAJKG9iamVjdCBGb250Ci0JCQlpdGFsaWNzICAgIAlUUlVFKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTU1Ci0JCQlsb2NhdGlvbiAgIAkoMTE5MywgMjQ2NikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk2NTQKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJNZXNzYWdlUmVmZXJlbmNlIikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzRjY3NzFEQjAyREMiCi0JCSAgICB3aWR0aCAgICAgIAk2NzIKLQkJICAgIGhlaWdodCAgICAgCTE4MAotCQkgICAgYW5ub3RhdGlvbiAJOCkKLQkJKG9iamVjdCBJbmhlcml0VHJlZVZpZXcgIiIgQDE1NgotCQkgICAgbG9jYXRpb24gICAJKDE1MjQsIDIyNzUpCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgc3VwcGxpZXIgICAJQDE1NQotCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkoMTUyNCwgMjI3NSkKLQkJCSgxNTI0LCAyNDU0KSkpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDE1NwotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNGNjc3MjNEMDMxOSIKLQkJICAgIGNsaWVudCAgICAgCUAxMTAKLQkJICAgIHN1cHBsaWVyICAgCUAxNTUKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTc3NiwgMjE3NikKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNzc2LCAyMjc1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlAMTU2KQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAxNTgKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzRjY3NzIzNTAwREQiCi0JCSAgICBjbGllbnQgICAgIAlAMTEyCi0JCSAgICBzdXBwbGllciAgIAlAMTU1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDEzNzEsIDE4NTQpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTM3MSwgMjI3NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDE1NikKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMTU5Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y2NzcyMjgwMkU3IgotCQkgICAgY2xpZW50ICAgICAJQDExMQotCQkgICAgc3VwcGxpZXIgICAJQDE1NQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg5ODAsIDE1MzQpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoOTgwLCAyMjc1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlAMTU2KQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkNjEiIEAxNjAKLQkJICAgIGxvY2F0aW9uICAgCSgyMjA2LCAyMjU5KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNGNzRFNzg0MDFCMSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZU1lc3NhZ2UiIEAxNjEKLQkJCSAgICBQYXJlbnRfVmlldyAJQDE2MAotCQkJICAgIGxvY2F0aW9uICAgCSg3MzQsIC0yODUpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTYyCi0JCQkJUGFyZW50X1ZpZXcgCUAxNjEKLQkJCQlsb2NhdGlvbiAgIAkoMjA2OCwgMTY3MCkKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkyMTYKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlTWVzc2FnZSIKLQkJCQlwY3REaXN0ICAgIAkwLjkxMjIzMAotCQkJCWhlaWdodCAgICAgCTEzOQotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNGNzRFNzg2MDAwRiIKLQkJCSAgICBjbGllbnQgICAgIAlAMTYwCi0JCQkgICAgc3VwcGxpZXIgICAJQDE1NAotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDIyMDYsIDIyNTkpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDIyMDYsIDE2MTIpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTYzCi0JCQkJUGFyZW50X1ZpZXcgCUAxNjEKLQkJCQlsb2NhdGlvbiAgIAkoMjI2MCwgMTY3OCkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMSIKLQkJCQlwY3REaXN0ICAgIAkwLjkwMDAwMAotCQkJCWhlaWdodCAgICAgCTU0Ci0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkNjIiIEAxNjQKLQkJCSAgICBQYXJlbnRfVmlldyAJQDE2MAotCQkJICAgIGxvY2F0aW9uICAgCSg3MzQsIC0yODUpCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0Y3NEU3ODYwMDIzIgotCQkJICAgIGNsaWVudCAgICAgCUAxNjAKLQkJCSAgICBzdXBwbGllciAgIAlAMTU1Ci0JCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJKDIyMDYsIDIyNTkpCi0JCQkJKDIyMDYsIDI1NTYpCi0JCQkJKDE4NTYsIDI1NTYpKQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDIyMDYsIDIyNTkpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDE4NTYsIDI1NTYpKSkpKSkKLQkob2JqZWN0IENsYXNzRGlhZ3JhbSAiMi4xIERlZmluaXRpb25zIgotCSAgICBxdWlkICAgICAgIAkiM0FENUU0OEEwMjYyIgotCSAgICB0aXRsZSAgICAgIAkiMi4xIERlZmluaXRpb25zIgotCSAgICB6b29tICAgICAgIAk4MwotCSAgICBtYXhfaGVpZ2h0IAkyODM1MAotCSAgICBtYXhfd2lkdGggIAkyMTYwMAotCSAgICBvcmlnaW5feCAgIAkwCi0JICAgIG9yaWdpbl95ICAgCTAKLQkgICAgaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRGVmaW5pdGlvbiIgQDE2NQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoNDMyLCAxOTIpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAxNjUKLQkJCWxvY2F0aW9uICAgCSg4OCwgMTYxKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY4OAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklEZWZpbml0aW9uIikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDE2NQotCQkJbG9jYXRpb24gICAJKDg4LCAxMTEpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY4OAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEIxRDkwMTQyIgotCQkgICAgd2lkdGggICAgICAJNzA2Ci0JCSAgICBoZWlnaHQgICAgIAkxODYKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6VHlwZXMiIEAxNjYKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE4MjQsIDk0NCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDE2NgotCQkJbG9jYXRpb24gICAJKDE2ODYsIDg5NikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkyNzYKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJUeXBlcyIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4QkU5QTYwM0E4IgotCQkgICAgd2lkdGggICAgICAJMjk0Ci0JCSAgICBoZWlnaHQgICAgIAkxMjAKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SW1wb3J0IiBAMTY3Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NPcGVyYXRpb24gCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgyMTQ0LCA2MjQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAxNjcKLQkJCWxvY2F0aW9uICAgCSgxOTEwLCA1NDUpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDY4Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSW1wb3J0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTRGOTAzREUiCi0JCSAgICB3aWR0aCAgICAgIAk0ODYKLQkJICAgIGhlaWdodCAgICAgCTE4MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpNZXNzYWdlIiBAMTY4Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NPcGVyYXRpb24gCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgyMTEyLCAxMTg0KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTY4Ci0JCQlsb2NhdGlvbiAgIAkoMTkwMCwgMTEwNSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk0MjQKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJNZXNzYWdlIikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Qzk1OTAwNzgiCi0JCSAgICB3aWR0aCAgICAgIAk0NDIKLQkJICAgIGhlaWdodCAgICAgCTE4MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpQb3J0VHlwZSIgQDE2OQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIFN1cHByZXNzT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTgwOCwgMTQ4OCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDE2OQotCQkJbG9jYXRpb24gICAJKDE1OTYsIDE0MDkpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDI0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiUG9ydFR5cGUiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDN0YwMDFBNSIKLQkJICAgIHdpZHRoICAgICAgCTQ0MgotCQkgICAgaGVpZ2h0ICAgICAJMTgyCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkJpbmRpbmciIEAxNzAKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDIzMzYsIDE3MjgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAxNzAKLQkJCWxvY2F0aW9uICAgCSgyMTI0LCAxNjQ5KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTQyNAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIkJpbmRpbmciKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEMjg2MDI2MSIKLQkJICAgIHdpZHRoICAgICAgCTQ0MgotCQkgICAgaGVpZ2h0ICAgICAJMTgyCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkRlZmluaXRpb24iIEAxNzEKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTMyOCwgMjQwKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMTcxCi0JCQlsb2NhdGlvbiAgIAkoMTA3MywgMzkpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNTEwCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiRGVmaW5pdGlvbiIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUU0M0YwMDhFIgotCQkgICAgd2lkdGggICAgICAJNTI4Ci0JCSAgICBoZWlnaHQgICAgIAk0MjYKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQxNSIgQDE3MgotCQkgICAgbG9jYXRpb24gICAJKDEzNTgsIDg2MCkKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjhCRUEyNzAyOUYiCi0JCSAgICByb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDE2IiBAMTczCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAxNzIKLQkJCSAgICBsb2NhdGlvbiAgIAkoNjIsIC0zNikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxNzQKLQkJCQlQYXJlbnRfVmlldyAJQDE3MwotCQkJCWxvY2F0aW9uICAgCSgxMzE3LCA1MzUpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTYwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIiCi0JCQkJcGN0RGlzdCAgICAJMC44MDAwMDAKLQkJCQloZWlnaHQgICAgIAk0MgotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNCOEJFQTI5MDM1NiIKLQkJCSAgICBjbGllbnQgICAgIAlAMTcyCi0JCQkgICAgc3VwcGxpZXIgICAJQDE3MQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDEzNTgsIDg2MCkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTM1OCwgNDUzKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE3NQotCQkJCVBhcmVudF9WaWV3IAlAMTczCi0JCQkJbG9jYXRpb24gICAJKDE0MDMsIDUxMSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjg1NjY0OQotCQkJCWhlaWdodCAgICAgCTQ1Ci0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiZVR5cGVzIiBAMTc2Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAxNzIKLQkJCSAgICBsb2NhdGlvbiAgIAkoNjIsIC0zNikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxNzcKLQkJCQlQYXJlbnRfVmlldyAJQDE3NgotCQkJCWxvY2F0aW9uICAgCSgxNTg2LCA5MDkpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTU2Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZVR5cGVzIgotCQkJCXBjdERpc3QgICAgCTAuNzc5MDk3Ci0JCQkJaGVpZ2h0ICAgICAJNDAKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQjhCRUEyOTAzNkEiCi0JCQkgICAgY2xpZW50ICAgICAJQDE3MgotCQkJICAgIHN1cHBsaWVyICAgCUAxNjYKLQkJCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkoMTM1OCwgODYwKQotCQkJCSgxMzU4LCA5NDgpCi0JCQkJKDE2NzcsIDk0OCkpCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTM1OCwgODYwKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNjc3LCA5NDgpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTc4Ci0JCQkJUGFyZW50X1ZpZXcgCUAxNzYKLQkJCQlsb2NhdGlvbiAgIAkoMTYzMiwgOTg3KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIwLi4xIgotCQkJCXBjdERpc3QgICAgCTAuODkyNjU1Ci0JCQkJaGVpZ2h0ICAgICAJMzkKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDEzIiBAMTc5Ci0JCSAgICBsb2NhdGlvbiAgIAkoMTYxMiwgNTk1KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNDODY0REZGMDJFQyIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMTQiIEAxODAKLQkJCSAgICBQYXJlbnRfVmlldyAJQDE3OQotCQkJICAgIGxvY2F0aW9uICAgCSgxMiwgMjI3KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE4MQotCQkJCVBhcmVudF9WaWV3IAlAMTgwCi0JCQkJbG9jYXRpb24gICAJKDE0MjMsIDUxMikKLQkJCQloaWRkZW4gICAgIAlUUlVFCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJNjAKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIiIKLQkJCQlwY3REaXN0ICAgIAkwLjgwMDAwMAotCQkJCWhlaWdodCAgICAgCTQyCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0M4NjRERkYwMkVFIgotCQkJICAgIGNsaWVudCAgICAgCUAxNzkKLQkJCSAgICBzdXBwbGllciAgIAlAMTcxCi0JCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJKDE2MTIsIDU5NSkKLQkJCQkoMTQ2NCwgNTk1KQotCQkJCSgxNDY0LCA0NTMpKQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDE2MTIsIDU5NSkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTQ2NCwgNDUzKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE4MgotCQkJCVBhcmVudF9WaWV3IAlAMTgwCi0JCQkJbG9jYXRpb24gICAJKDE1MjQsIDQ5NSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjg1ODY2NwotCQkJCWhlaWdodCAgICAgCTYwCi0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiZUltcG9ydHMiIEAxODMKLQkJCSAgICBQYXJlbnRfVmlldyAJQDE3OQotCQkJICAgIGxvY2F0aW9uICAgCSgxMiwgMjI3KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE4NAotCQkJCVBhcmVudF9WaWV3IAlAMTgzCi0JCQkJbG9jYXRpb24gICAJKDE2OTIsIDU1NykKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkyMDQKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlSW1wb3J0cyIKLQkJCQlwY3REaXN0ICAgIAkwLjI4MDMzNQotCQkJCWhlaWdodCAgICAgCTM5Ci0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0M4NjRERkYwMkVEIgotCQkJICAgIGNsaWVudCAgICAgCUAxNzkKLQkJCSAgICBzdXBwbGllciAgIAlAMTY3Ci0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTYxMiwgNTk1KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxOTAxLCA1OTUpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMTg1Ci0JCQkJUGFyZW50X1ZpZXcgCUAxODMKLQkJCQlsb2NhdGlvbiAgIAkoMTg1NCwgNjUyKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIwLi4qIgotCQkJCXBjdERpc3QgICAgCTAuODQxMDA0Ci0JCQkJaGVpZ2h0ICAgICAJNTcKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxODYKLQkJCQlQYXJlbnRfVmlldyAJQDE4MwotCQkJCWxvY2F0aW9uICAgCSgxNjc2LCA2NDYpCi0JCQkJYW5jaG9yICAgICAJMwotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTU4Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSJ7b3JkZXJlZH0iCi0JCQkJcGN0RGlzdCAgICAJMC4yMjU5NDEKLQkJCQloZWlnaHQgICAgIAk1MQotCQkJCW9yaWVudGF0aW9uIAkxKSkpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMTciIEAxODcKLQkJICAgIGxvY2F0aW9uICAgCSgxMjc5LCAxMTM2KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNjAzMDFFMiIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMTgiIEAxODgKLQkJCSAgICBQYXJlbnRfVmlldyAJQDE4NwotCQkJICAgIGxvY2F0aW9uICAgCSgyNzEsIDI3MikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxODkKLQkJCQlQYXJlbnRfVmlldyAJQDE4OAotCQkJCWxvY2F0aW9uICAgCSgxMjM4LCA1OTEpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTYwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIiCi0JCQkJcGN0RGlzdCAgICAJMC44MDAwMDAKLQkJCQloZWlnaHQgICAgIAk0MgotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNjA0MDBCNyIKLQkJCSAgICBjbGllbnQgICAgIAlAMTg3Ci0JCQkgICAgc3VwcGxpZXIgICAJQDE3MQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDEyNzksIDExMzYpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDEyNzksIDQ1MykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxOTAKLQkJCQlQYXJlbnRfVmlldyAJQDE4OAotCQkJCWxvY2F0aW9uICAgCSgxMzIwLCA1ODcpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjEuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC44MDQ5NzQKLQkJCQloZWlnaHQgICAgIAk0MQotCQkJCW9yaWVudGF0aW9uIAkxKSkKLQkJCShvYmplY3QgUm9sZVZpZXcgImVNZXNzYWdlcyIgQDE5MQotCQkJICAgIFBhcmVudF9WaWV3IAlAMTg3Ci0JCQkgICAgbG9jYXRpb24gICAJKDI3MSwgMjcyKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE5MgotCQkJCVBhcmVudF9WaWV3IAlAMTkxCi0JCQkJbG9jYXRpb24gICAJKDE2NDcsIDExNzEpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMjQwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZU1lc3NhZ2VzIgotCQkJCXBjdERpc3QgICAgCTAuNjQzMTM3Ci0JCQkJaGVpZ2h0ICAgICAJMzgKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTYwNDAwQzEiCi0JCQkgICAgY2xpZW50ICAgICAJQDE4NwotCQkJICAgIHN1cHBsaWVyICAgCUAxNjgKLQkJCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkoMTI3OSwgMTEzNikKLQkJCQkoMTI3OSwgMTIwOCkKLQkJCQkoMTg5MSwgMTIwOCkpCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTI3OSwgMTEzNikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTg5MSwgMTIwOCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxOTMKLQkJCQlQYXJlbnRfVmlldyAJQDE5MQotCQkJCWxvY2F0aW9uICAgCSgxODIxLCAxMTcxKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIwLi4qIgotCQkJCXBjdERpc3QgICAgCTAuODk5MzQ2Ci0JCQkJaGVpZ2h0ICAgICAJMzgKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAxOTQKLQkJCQlQYXJlbnRfVmlldyAJQDE5MQotCQkJCWxvY2F0aW9uICAgCSgxNzk3LCAxMjQ0KQotCQkJCWFuY2hvciAgICAgCTMKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1OAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkie29yZGVyZWR9IgotCQkJCXBjdERpc3QgICAgCTAuODY0NDA3Ci0JCQkJaGVpZ2h0ICAgICAJMzYKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDE5IiBAMTk1Ci0JCSAgICBsb2NhdGlvbiAgIAkoMTIxMiwgMTE1OSkKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTY3MTAxMDQiCi0JCSAgICByb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDIwIiBAMTk2Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAxOTUKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTMyNCwgMjE1KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE5NwotCQkJCVBhcmVudF9WaWV3IAlAMTk2Ci0JCQkJbG9jYXRpb24gICAJKDExNzEsIDU5NCkKLQkJCQloaWRkZW4gICAgIAlUUlVFCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJNjAKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIiIKLQkJCQlwY3REaXN0ICAgIAkwLjgwMDAwMAotCQkJCWhlaWdodCAgICAgCTQyCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FENUU2NzIwMzRBIgotCQkJICAgIGNsaWVudCAgICAgCUAxOTUKLQkJCSAgICBzdXBwbGllciAgIAlAMTcxCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTIxMiwgMTE1OSkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTIxMiwgNDUzKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDE5OAotCQkJCVBhcmVudF9WaWV3IAlAMTk2Ci0JCQkJbG9jYXRpb24gICAJKDEyNTEsIDYyNCkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjc1Nzk2MgotCQkJCWhlaWdodCAgICAgCTM5Ci0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiZVBvcnRUeXBlcyIgQDE5OQotCQkJICAgIFBhcmVudF9WaWV3IAlAMTk1Ci0JCQkgICAgbG9jYXRpb24gICAJKC0zMjQsIDIxNSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyMDAKLQkJCQlQYXJlbnRfVmlldyAJQDE5OQotCQkJCWxvY2F0aW9uICAgCSgxMzkxLCAxNDUxKQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTI0MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK2VQb3J0VHlwZXMiCi0JCQkJcGN0RGlzdCAgICAJMC43MjM2OTgKLQkJCQloZWlnaHQgICAgIAk0MAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNjcyMDM1NCIKLQkJCSAgICBjbGllbnQgICAgIAlAMTk1Ci0JCQkgICAgc3VwcGxpZXIgICAJQDE2OQotCQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJCSgxMjEyLCAxMTU5KQotCQkJCSgxMjEyLCAxNDkwKQotCQkJCSgxNTg3LCAxNDkwKSkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMjEyLCAxMTU5KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNTg3LCAxNDkwKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDIwMQotCQkJCVBhcmVudF9WaWV3IAlAMTk5Ci0JCQkJbG9jYXRpb24gICAJKDE1MzMsIDE0NTEpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLioiCi0JCQkJcGN0RGlzdCAgICAJMC45MjU2MTEKLQkJCQloZWlnaHQgICAgIAk0MAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDIwMgotCQkJCVBhcmVudF9WaWV3IAlAMTk5Ci0JCQkJbG9jYXRpb24gICAJKDE1MTIsIDE1NDApCi0JCQkJYW5jaG9yICAgICAJMwotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTU4Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSJ7b3JkZXJlZH0iCi0JCQkJcGN0RGlzdCAgICAJMC44OTU4NTUKLQkJCQloZWlnaHQgICAgIAk1MAotCQkJCW9yaWVudGF0aW9uIAkxKSkpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMjEiIEAyMDMKLQkJICAgIGxvY2F0aW9uICAgCSgxMTE0LCAxNTg1KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNjc3MDA5NSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMjIiIEAyMDQKLQkJCSAgICBQYXJlbnRfVmlldyAJQDIwMwotCQkJICAgIGxvY2F0aW9uICAgCSgtNDA2LCAyNDEpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjA1Ci0JCQkJUGFyZW50X1ZpZXcgCUAyMDQKLQkJCQlsb2NhdGlvbiAgIAkoMTA3MywgNjgwKQotCQkJCWhpZGRlbiAgICAgCVRSVUUKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAk2MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiIgotCQkJCXBjdERpc3QgICAgCTAuODAwMDAwCi0JCQkJaGVpZ2h0ICAgICAJNDIKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTY3ODAzNzEiCi0JCQkgICAgY2xpZW50ICAgICAJQDIwMwotCQkJICAgIHN1cHBsaWVyICAgCUAxNzEKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMTE0LCAxNTg1KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMTE0LCA0NTMpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjA2Ci0JCQkJUGFyZW50X1ZpZXcgCUAyMDQKLQkJCQlsb2NhdGlvbiAgIAkoMTE1NSwgNzUyKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNzM2NzA0Ci0JCQkJaGVpZ2h0ICAgICAJNDEKLQkJCQlvcmllbnRhdGlvbiAJMSkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICJlQmluZGluZ3MiIEAyMDcKLQkJCSAgICBQYXJlbnRfVmlldyAJQDIwMwotCQkJICAgIGxvY2F0aW9uICAgCSgtNDA2LCAyNDEpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjA4Ci0JCQkJUGFyZW50X1ZpZXcgCUAyMDcKLQkJCQlsb2NhdGlvbiAgIAkoMTg1MSwgMTY3NCkKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkyMDQKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlQmluZGluZ3MiCi0JCQkJcGN0RGlzdCAgICAJMC43NjYzNDcKLQkJCQloZWlnaHQgICAgIAk0MwotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNjc4MDM3QiIKLQkJCSAgICBjbGllbnQgICAgIAlAMjAzCi0JCQkgICAgc3VwcGxpZXIgICAJQDE3MAotCQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJCSgxMTE0LCAxNTg1KQotCQkJCSgxMTE0LCAxNzE2KQotCQkJCSgyMTE1LCAxNzE2KSkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMTE0LCAxNTg1KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgyMTE1LCAxNzE2KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDIwOQotCQkJCVBhcmVudF9WaWV3IAlAMjA3Ci0JCQkJbG9jYXRpb24gICAJKDIwNTMsIDE2NzcpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLioiCi0JCQkJcGN0RGlzdCAgICAJMC45NDUwNzQKLQkJCQloZWlnaHQgICAgIAk0MAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDIxMAotCQkJCVBhcmVudF9WaWV3IAlAMjA3Ci0JCQkJbG9jYXRpb24gICAJKDIwMTQsIDE3NTQpCi0JCQkJYW5jaG9yICAgICAJMwotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTU4Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSJ7b3JkZXJlZH0iCi0JCQkJcGN0RGlzdCAgICAJMC45MTEwNzIKLQkJCQloZWlnaHQgICAgIAkzOAotCQkJCW9yaWVudGF0aW9uIAkxKSkpKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OlNlcnZpY2UiIEAyMTEKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBTdXBwcmVzc09wZXJhdGlvbiAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE4NDAsIDIwNDgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyMTEKLQkJCWxvY2F0aW9uICAgCSgxNjI4LCAxOTY5KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTQyNAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIlNlcnZpY2UiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEOEYwMDJGOCIKLQkJICAgIHdpZHRoICAgICAgCTQ0MgotCQkgICAgaGVpZ2h0ICAgICAJMTgyCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMjMiIEAyMTIKLQkJICAgIGxvY2F0aW9uICAgCSgxMDY2LCAxNTMyKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNjdCMDMxMSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMjQiIEAyMTMKLQkJCSAgICBQYXJlbnRfVmlldyAJQDIxMgotCQkJICAgIGxvY2F0aW9uICAgCSgtNTIxLCAtMTEyKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDIxNAotCQkJCVBhcmVudF9WaWV3IAlAMjEzCi0JCQkJbG9jYXRpb24gICAJKDEwMjUsIDY3MCkKLQkJCQloaWRkZW4gICAgIAlUUlVFCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJNjAKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIiIKLQkJCQlwY3REaXN0ICAgIAkwLjgwMDAwMAotCQkJCWhlaWdodCAgICAgCTQyCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FENUU2N0QwMDdGIgotCQkJICAgIGNsaWVudCAgICAgCUAyMTIKLQkJCSAgICBzdXBwbGllciAgIAlAMTcxCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTA2NiwgMTUzMikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTA2NiwgNDUzKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDIxNQotCQkJCVBhcmVudF9WaWV3IAlAMjEzCi0JCQkJbG9jYXRpb24gICAJKDExMDksIDc1NikKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjcxOTY5NwotCQkJCWhlaWdodCAgICAgCTQzCi0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiZVNlcnZpY2VzIiBAMjE2Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAyMTIKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTUyMSwgLTExMikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyMTcKLQkJCQlQYXJlbnRfVmlldyAJQDIxNgotCQkJCWxvY2F0aW9uICAgCSgxMzkzLCAyMDI4KQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTIwNAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK2VTZXJ2aWNlcyIKLQkJCQlwY3REaXN0ICAgIAkwLjc5MTgyNAotCQkJCWhlaWdodCAgICAgCTMyCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FENUU2N0QwMDg5IgotCQkJICAgIGNsaWVudCAgICAgCUAyMTIKLQkJCSAgICBzdXBwbGllciAgIAlAMjExCi0JCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJKDEwNjYsIDE1MzIpCi0JCQkJKDEwNjYsIDIwNTkpCi0JCQkJKDE2MTksIDIwNTkpKQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDEwNjYsIDE1MzIpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDE2MTksIDIwNTkpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjE4Ci0JCQkJUGFyZW50X1ZpZXcgCUAyMTYKLQkJCQlsb2NhdGlvbiAgIAkoMTU1NCwgMjAzMSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uKiIKLQkJCQlwY3REaXN0ICAgIAkwLjk0MDE5NwotCQkJCWhlaWdodCAgICAgCTI5Ci0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjE5Ci0JCQkJUGFyZW50X1ZpZXcgCUAyMTYKLQkJCQlsb2NhdGlvbiAgIAkoMTUzMiwgMjExMykKLQkJCQlhbmNob3IgICAgIAkzCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNTgKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIntvcmRlcmVkfSIKLQkJCQlwY3REaXN0ICAgIAkwLjkyMDUxNQotCQkJCWhlaWdodCAgICAgCTU0Ci0JCQkJb3JpZW50YXRpb24gCTEpKSkpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDIyMAotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRCMUY4MDM4MiIKLQkJICAgIGNsaWVudCAgICAgCUAxNzEKLQkJICAgIHN1cHBsaWVyICAgCUAxNjUKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTA2NCwgMjYzKQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDc4NSwgMjYzKSkpKQotCShvYmplY3QgQ2xhc3NEaWFncmFtICIyLjEuMyBFeHRlbnNpYmlsaXR5IgotCSAgICBxdWlkICAgICAgIAkiM0FENjBDNTEwMTkyIgotCSAgICB0aXRsZSAgICAgIAkiMi4xLjMgRXh0ZW5zaWJpbGl0eSIKLQkgICAgem9vbSAgICAgICAJNjUKLQkgICAgbWF4X2hlaWdodCAJMjgzNTAKLQkgICAgbWF4X3dpZHRoICAJMjE2MDAKLQkgICAgb3JpZ2luX3ggICAJMAotCSAgICBvcmlnaW5feSAgIAkwCi0JICAgIGl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0Ci0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6UG9ydCIgQDIyMQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg0MTI4LCAzMTA0KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjIxCi0JCQlsb2NhdGlvbiAgIAkoNDA0NywgMzA1MSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkxNjIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJQb3J0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDkxNzAyODYiCi0JCSAgICBoZWlnaHQgICAgIAkxMzAKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6U2VydmljZSIgQDIyMgotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgzOTM2LCAyOTI4KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjIyCi0JCQlsb2NhdGlvbiAgIAkoMzg1NSwgMjg3NSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkxNjIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJTZXJ2aWNlIikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDhGMDAyRjgiCi0JCSAgICBoZWlnaHQgICAgIAkxMzAKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUV4dGVuc2liaWxpdHlFbGVtZW50IiBAMjIzCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgzNTUyLCA5NDQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyMjMKLQkJCWxvY2F0aW9uICAgCSgzMTU5LCA5MjApCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNzg2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUV4dGVuc2liaWxpdHlFbGVtZW50IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDIyMwotCQkJbG9jYXRpb24gICAJKDMxNTksIDg3MCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNzg2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QjEyNDAyQUIiCi0JCSAgICB3aWR0aCAgICAgIAk4MDQKLQkJICAgIGhlaWdodCAgICAgCTE3MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpUeXBlcyIgQDIyNAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxMjk2LCAzMDA4KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjI0Ci0JCQlsb2NhdGlvbiAgIAkoMTIxNSwgMjk1NikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkxNjIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJUeXBlcyIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4QkU5QTYwM0E4IgotCQkgICAgaGVpZ2h0ICAgICAJMTI4Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkV4dGVuc2libGVFbGVtZW50IiBAMjI1Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE2NjQsIDE0NTYpCi0JCSAgICBmb250ICAgICAgIAkob2JqZWN0IEZvbnQKLQkJCWl0YWxpY3MgICAgCVRSVUUpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyMjUKLQkJCWxvY2F0aW9uICAgCSgxNDgwLCAxNDA0KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTM2OAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIkV4dGVuc2libGVFbGVtZW50IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RkNGQTAzM0EiCi0JCSAgICB3aWR0aCAgICAgIAkzODYKLQkJICAgIGhlaWdodCAgICAgCTEyOAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIgQDIyNgotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgzNTY4LCAxNDcyKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjI2Ci0JCQlsb2NhdGlvbiAgIAkoMzMyNSwgMTM2NCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk0ODYKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJFeHRlbnNpYmlsaXR5RWxlbWVudCIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENURCQjYwMkE5IgotCQkgICAgY29tcGFydG1lbnQgCShvYmplY3QgQ29tcGFydG1lbnQKLQkJCVBhcmVudF9WaWV3IAlAMjI2Ci0JCQlsb2NhdGlvbiAgIAkoMzMyNSwgMTQyMikKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTMKLQkJCW1heF93aWR0aCAgCTQ2NSkKLQkJICAgIHdpZHRoICAgICAgCTUwNAotCQkgICAgaGVpZ2h0ICAgICAJMjQwCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMjUiIEAyMjcKLQkJICAgIGxvY2F0aW9uICAgCSgyNTg2LCAxNDQzKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGRDEzMDA3OSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMjYiIEAyMjgKLQkJCSAgICBQYXJlbnRfVmlldyAJQDIyNwotCQkJICAgIGxvY2F0aW9uICAgCSgxNDE4LCAxMzMxKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDIyOQotCQkJCVBhcmVudF9WaWV3IAlAMjI4Ci0JCQkJbG9jYXRpb24gICAJKDIwMDMsIDE0MDIpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTYwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIiCi0JCQkJcGN0RGlzdCAgICAJMC44MDAwMDAKLQkJCQloZWlnaHQgICAgIAk0MgotCQkJCW9yaWVudGF0aW9uIAkxKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRDVGRDE0MDE5RSIKLQkJCSAgICBjbGllbnQgICAgIAlAMjI3Ci0JCQkgICAgc3VwcGxpZXIgICAJQDIyNQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDI1ODYsIDE0NDMpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDE4NTcsIDE0NDMpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjMwCi0JCQkJUGFyZW50X1ZpZXcgCUAyMjgKLQkJCQlsb2NhdGlvbiAgIAkoMTk3NSwgMTM5OSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjgzOTY5NQotCQkJCWhlaWdodCAgICAgCTQ1Ci0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiZUV4dGVuc2liaWxpdHlFbGVtZW50cyIgQDIzMQotCQkJICAgIFBhcmVudF9WaWV3IAlAMjI3Ci0JCQkgICAgbG9jYXRpb24gICAJKDE0MTgsIDEzMzEpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjMyCi0JCQkJUGFyZW50X1ZpZXcgCUAyMzEKLQkJCQlsb2NhdGlvbiAgIAkoMjg2MiwgMTI5MykKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAk0NTAKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIgotCQkJCXBjdERpc3QgICAgCTAuMzc5MDcwCi0JCQkJaGVpZ2h0ICAgICAJMTUxCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FENUZEMTQwMTlEIgotCQkJICAgIGNsaWVudCAgICAgCUAyMjcKLQkJCSAgICBzdXBwbGllciAgIAlAMjI2Ci0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMjU4NiwgMTQ0MykKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMzMxNiwgMTQ0MykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyMzMKLQkJCQlQYXJlbnRfVmlldyAJQDIzMQotCQkJCWxvY2F0aW9uICAgCSgzMTA0LCAxMzk4KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIwLi4qIgotCQkJCXBjdERpc3QgICAgCTAuNzA5NDAyCi0JCQkJaGVpZ2h0ICAgICAJNDYKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyMzQKLQkJCQlQYXJlbnRfVmlldyAJQDIzMQotCQkJCWxvY2F0aW9uICAgCSgzMDQ3LCAxNTM1KQotCQkJCWFuY2hvciAgICAgCTMKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE2NAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkie29yZGVyZWR9IgotCQkJCXBjdERpc3QgICAgCTAuNjMyNDc5Ci0JCQkJaGVpZ2h0ICAgICAJOTIKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpXU0RMRWxlbWVudCIgQDIzNQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgyNDk2LCA5OTIpCi0JCSAgICBmb250ICAgICAgIAkob2JqZWN0IEZvbnQKLQkJCWl0YWxpY3MgICAgCVRSVUUpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyMzUKLQkJCWxvY2F0aW9uICAgCSgyMTA0LCA4ODQpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNzg0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiV1NETEVsZW1lbnQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDNkEzMDJERCIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDIzNQotCQkJbG9jYXRpb24gICAJKDIxMDQsIDk0NykKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTMKLQkJCW1heF93aWR0aCAgCTc1NikKLQkJICAgIHdpZHRoICAgICAgCTgwMgotCQkgICAgaGVpZ2h0ICAgICAJMjQwCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEluaGVyaXRUcmVlVmlldyAiIiBAMjM2Ci0JCSAgICBsb2NhdGlvbiAgIAkoMjQ5NCwgMTIwNikKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBzdXBwbGllciAgIAlAMjM1Ci0JCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCSgyNDk0LCAxMjA2KQotCQkJKDI0OTQsIDExMTIpKSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjM3Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEIxNDkwM0QwIgotCQkgICAgY2xpZW50ICAgICAJQDIyNgotCQkgICAgc3VwcGxpZXIgICAJQDIyMwotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgzNjc2LCAxMzUyKQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDM2NzYsIDEwMzApKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAyMzgKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQkRERjUzNTAyQzMiCi0JCSAgICBjbGllbnQgICAgIAlAMjI2Ci0JCSAgICBzdXBwbGllciAgIAlAMjM1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDM0MjUsIDEzNTIpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMzQyNSwgMTIwNikKLQkJICAgIGRyYXdTdXBwbGllciAJQDIzNikKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQiIEAyMzkKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMzg1NiwgMjAzMikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDIzOQotCQkJbG9jYXRpb24gICAJKDM1NzEsIDE5ODApCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNTcwCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQ0IyNEFDMDAyQUUiCi0JCSAgICB3aWR0aCAgICAgIAk1ODgKLQkJICAgIGhlaWdodCAgICAgCTEyOAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjQwCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0NCMjRBRUMwMUNCIgotCQkgICAgY2xpZW50ICAgICAJQDIzOQotCQkgICAgc3VwcGxpZXIgICAJQDIyNgotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgzNzA1LCAxOTY4KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDM3MDUsIDE1OTIpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkNjMiIEAyNDEKLQkJICAgIGxvY2F0aW9uICAgCSg0MzY2LCAyMzU4KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNGNzg5NkEyMDI2RSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkNjQiIEAyNDIKLQkJCSAgICBQYXJlbnRfVmlldyAJQDI0MQotCQkJICAgIGxvY2F0aW9uICAgCSgyMzM0LCA5NjYpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjQzCi0JCQkJUGFyZW50X1ZpZXcgCUAyNDIKLQkJCQlsb2NhdGlvbiAgIAkoNDMwNiwgMjAwNCkKLQkJCQloaWRkZW4gICAgIAlUUlVFCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJNjAKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIiIKLQkJCQlwY3REaXN0ICAgIAkwLjgwMDAwMAotCQkJCWhlaWdodCAgICAgCTQyCi0JCQkJb3JpZW50YXRpb24gCTEpCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0Y3ODk2QTcwMTJCIgotCQkJICAgIGNsaWVudCAgICAgCUAyNDEKLQkJCSAgICBzdXBwbGllciAgIAlAMjM5Ci0JCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJKDQzNjYsIDIzNTgpCi0JCQkJKDQ0ODgsIDIzNTgpCi0JCQkJKDQ0ODgsIDIwNDUpCi0JCQkJKDQxNTAsIDIwNDUpKQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDQzNjYsIDIzNTgpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDQxNTAsIDIwNDUpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjQ0Ci0JCQkJUGFyZW50X1ZpZXcgCUAyNDIKLQkJCQlsb2NhdGlvbiAgIAkoNDIyNywgMjA5OSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMSIKLQkJCQlwY3REaXN0ICAgIAkwLjkwMDAwMAotCQkJCWhlaWdodCAgICAgCTU0Ci0JCQkJb3JpZW50YXRpb24gCTApKQotCQkJKG9iamVjdCBSb2xlVmlldyAiY2hpbGRyZW4iIEAyNDUKLQkJCSAgICBQYXJlbnRfVmlldyAJQDI0MQotCQkJICAgIGxvY2F0aW9uICAgCSgyMzM0LCA5NjYpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjQ2Ci0JCQkJUGFyZW50X1ZpZXcgCUAyNDUKLQkJCQlsb2NhdGlvbiAgIAkoMzczOCwgMjI1MykKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNjgKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitjaGlsZHJlbiIKLQkJCQlwY3REaXN0ICAgIAkwLjc5ODU2MQotCQkJCWhlaWdodCAgICAgCTExOAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNGNzg5NkE3MDEyQyIKLQkJCSAgICBjbGllbnQgICAgIAlAMjQxCi0JCQkgICAgc3VwcGxpZXIgICAJQDIzOQotCQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJCSg0MzY2LCAyMzU4KQotCQkJCSgzODU1LCAyMzU4KQotCQkJCSgzODU1LCAyMDk2KSkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg0MzY2LCAyMzU4KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgzODU1LCAyMDk2KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDI0NwotCQkJCVBhcmVudF9WaWV3IAlAMjQ1Ci0JCQkJbG9jYXRpb24gICAJKDM5MDksIDIxNzQpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLioiCi0JCQkJcGN0RGlzdCAgICAJMC45MDAwMDAKLQkJCQloZWlnaHQgICAgIAk1NAotCQkJCW9yaWVudGF0aW9uIAkxKSkpKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkJpbmRpbmciIEAyNDgKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMjc2OCwgMjk5MikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI0OAotCQkJbG9jYXRpb24gICAJKDI2ODYsIDI5MzkpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTY0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiQmluZGluZyIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUQyODYwMjYxIgotCQkgICAgd2lkdGggICAgICAJMTgyCi0JCSAgICBoZWlnaHQgICAgIAkxMzAKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6UG9ydFR5cGUiIEAyNDkKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTg4OCwgMzAwOCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI0OQotCQkJbG9jYXRpb24gICAJKDE3OTAsIDI5NTUpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTk2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiUG9ydFR5cGUiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDN0YwMDFBNSIKLQkJICAgIHdpZHRoICAgICAgCTIxNAotCQkgICAgaGVpZ2h0ICAgICAJMTMwCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkJpbmRpbmdPcGVyYXRpb24iIEAyNTAKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMjg4MCwgMzI2NCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI1MAotCQkJbG9jYXRpb24gICAJKDI3MDcsIDMyMTEpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMzQ2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiQmluZGluZ09wZXJhdGlvbiIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUQzQ0IwMTQ1IgotCQkgICAgd2lkdGggICAgICAJMzY0Ci0JCSAgICBoZWlnaHQgICAgIAkxMzAKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6RmF1bHQiIEAyNTEKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMjY3MiwgMzg0MCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI1MQotCQkJbG9jYXRpb24gICAJKDI1OTEsIDM3ODcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTYyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiRmF1bHQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRTA3OEJFMDEwOCIKLQkJICAgIGhlaWdodCAgICAgCTEzMAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nRmF1bHQiIEAyNTIKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMzc3NiwgMzQ0MCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI1MgotCQkJbG9jYXRpb24gICAJKDM2NDgsIDMzODcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjU2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiQmluZGluZ0ZhdWx0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwOEE5RTAzQTYiCi0JCSAgICB3aWR0aCAgICAgIAkyNzQKLQkJICAgIGhlaWdodCAgICAgCTEzMAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJbXBvcnQiIEAyNTMKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTA4OCwgMzAwOCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI1MwotCQkJbG9jYXRpb24gICAJKDEwMDcsIDI5NTUpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTYyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSW1wb3J0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RTRGOTAzREUiCi0JCSAgICBoZWlnaHQgICAgIAkxMzAKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6RGVmaW5pdGlvbiIgQDI1NAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg5MTIsIDI4MDApCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyNTQKLQkJCWxvY2F0aW9uICAgCSg4MTIsIDI3NDcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjAwCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiRGVmaW5pdGlvbiIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUU0M0YwMDhFIgotCQkgICAgd2lkdGggICAgICAJMjE4Ci0JCSAgICBoZWlnaHQgICAgIAkxMzAKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SW5wdXQiIEAyNTUKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMjI1NiwgMzg0MCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI1NQotCQkJbG9jYXRpb24gICAJKDIxNzUsIDM3ODcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTYyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSW5wdXQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRTA3ODlGMDA1OSIKLQkJICAgIGhlaWdodCAgICAgCTEzMAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpCaW5kaW5nSW5wdXQiIEAyNTYKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMzEwNCwgMzQ0MCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI1NgotCQkJbG9jYXRpb24gICAJKDI5NzYsIDMzODcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjU2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiQmluZGluZ0lucHV0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwOEE4MjAyRDQiCi0JCSAgICB3aWR0aCAgICAgIAkyNzQKLQkJICAgIGhlaWdodCAgICAgCTEzMAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpPdXRwdXQiIEAyNTcKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMjQ2NCwgMzg0MCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI1NwotCQkJbG9jYXRpb24gICAJKDIzODMsIDM3ODcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTYyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiT3V0cHV0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwNzhCNjAyMzIiCi0JCSAgICBoZWlnaHQgICAgIAkxMzAKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6QmluZGluZ091dHB1dCIgQDI1OAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgzNDQwLCAzNDQwKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjU4Ci0JCQlsb2NhdGlvbiAgIAkoMzI5NSwgMzM4NykKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkyOTAKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJCaW5kaW5nT3V0cHV0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwOEE4RjAyOEMiCi0JCSAgICB3aWR0aCAgICAgIAkzMDgKLQkJICAgIGhlaWdodCAgICAgCTEzMAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpPcGVyYXRpb24iIEAyNTkKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMjAzMiwgMzI2NCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI1OQotCQkJbG9jYXRpb24gICAJKDE5MjYsIDMyMTEpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjEyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiT3BlcmF0aW9uIikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzgwRDAzQ0UiCi0JCSAgICB3aWR0aCAgICAgIAkyMzAKLQkJICAgIGhlaWdodCAgICAgCTEzMAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpQYXJ0IiBAMjYwCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE2ODAsIDMyNjQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyNjAKLQkJCWxvY2F0aW9uICAgCSgxNTk5LCAzMjExKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTE2MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIlBhcnQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDRTFDMDMyRSIKLQkJICAgIGhlaWdodCAgICAgCTEzMAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpNZXNzYWdlIiBAMjYxCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE1MzYsIDMwMDgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyNjEKLQkJCWxvY2F0aW9uICAgCSgxNDM3LCAyOTU1KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTE5OAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIk1lc3NhZ2UiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDOTU5MDA3OCIKLQkJICAgIHdpZHRoICAgICAgCTIxNgotCQkgICAgaGVpZ2h0ICAgICAJMTMwCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6Ok1lc3NhZ2VSZWZlcmVuY2UiIEAyNjIKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMjQzMiwgMzIzMikKLQkJICAgIGZvbnQgICAgICAgCShvYmplY3QgRm9udAotCQkJaXRhbGljcyAgICAJVFJVRSkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI2MgotCQkJbG9jYXRpb24gICAJKDIyNDAsIDMxNTApCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMzg0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiTWVzc2FnZVJlZmVyZW5jZSIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y2NzcxREIwMkRDIgotCQkgICAgd2lkdGggICAgICAJNDAyCi0JCSAgICBoZWlnaHQgICAgIAkxODgKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgSW5oZXJpdFRyZWVWaWV3ICIiIEAyNjMKLQkJICAgIGxvY2F0aW9uICAgCSgyNTA1LCAzNDE4KQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHN1cHBsaWVyICAgCUAyNjIKLQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJKDI1MDUsIDM0MTgpCi0JCQkoMjUwNSwgMzMyNikpKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAyNjQKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzRjY3NzIyODAyRTciCi0JCSAgICBjbGllbnQgICAgIAlAMjU1Ci0JCSAgICBzdXBwbGllciAgIAlAMjYyCi0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDIyMzUsIDM3NzUpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMjIzNSwgMzQxOCkKLQkJICAgIGRyYXdTdXBwbGllciAJQDI2MykKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjY1Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y2NzcyM0QwMzE5IgotCQkgICAgY2xpZW50ICAgICAJQDI1MQotCQkgICAgc3VwcGxpZXIgICAJQDI2MgotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgyNjUzLCAzNzc1KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDI2NTMsIDM0MTgpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAyNjMpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUVsZW1lbnRFeHRlbnNpYmxlIiBAMjY2Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE2NjQsIDMzNikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI2NgotCQkJbG9jYXRpb24gICAJKDEyMTMsIDI2MSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk5MDMKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJRWxlbWVudEV4dGVuc2libGUiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjY2Ci0JCQlsb2NhdGlvbiAgIAkoMTIxMywgMjExKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk5MDMKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUwNEIwMDBEQSIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDI2NgotCQkJbG9jYXRpb24gICAJKDEyMTMsIDMxOSkKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTMKLQkJCW1heF93aWR0aCAgCTUzNCkKLQkJICAgIHdpZHRoICAgICAgCTkyMQotCQkgICAgaGVpZ2h0ICAgICAJMjc0Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEluaGVyaXRUcmVlVmlldyAiIiBAMjY3Ci0JCSAgICBsb2NhdGlvbiAgIAkoMTY2MiwgMjU5NSkKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBzdXBwbGllciAgIAlAMjI1Ci0JCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCSgxNjYyLCAyNTk1KQotCQkJKDE2NjIsIDE1MjApKSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjY4Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4QkVCMDEwMzExIgotCQkgICAgY2xpZW50ICAgICAJQDIyNAotCQkgICAgc3VwcGxpZXIgICAJQDIyNQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMjM1LCAyOTQ0KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDEyMzUsIDI1OTUpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAyNjcpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDI2OQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQTBGMDJGMCIKLQkJICAgIGNsaWVudCAgICAgCUAyNDgKLQkJICAgIHN1cHBsaWVyICAgCUAyMjUKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMjc1OCwgMjkyNykKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgyNzU4LCAyNTk1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlAMjY3KQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAyNzAKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUUwOTM4NjAyQzkiCi0JCSAgICBjbGllbnQgICAgIAlAMjUyCi0JCSAgICBzdXBwbGllciAgIAlAMjI1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDM3NzEsIDMzNzUpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMzc3MSwgMjU5NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDI2NykKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjcxCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NUI1OUIwMDcyIgotCQkgICAgY2xpZW50ICAgICAJQDI1NgotCQkgICAgc3VwcGxpZXIgICAJQDIyNQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgzMDk5LCAzMzc1KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDMwOTksIDI1OTUpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAyNjcpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDI3MgotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNCODVCNUE0MDI3RSIKLQkJICAgIGNsaWVudCAgICAgCUAyNTgKLQkJICAgIHN1cHBsaWVyICAgCUAyMjUKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMzQzNSwgMzM3NSkKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgzNDM1LCAyNTk1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlAMjY3KQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAyNzMKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUU5REU5ODAwM0MiCi0JCSAgICBjbGllbnQgICAgIAlAMjU5Ci0JCSAgICBzdXBwbGllciAgIAlAMjI1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDIwMjcsIDMxOTkpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMjAyNywgMjU5NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDI2NykKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjc0Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUZEQjgwM0Q0IgotCQkgICAgY2xpZW50ICAgICAJQDI1NAotCQkgICAgc3VwcGxpZXIgICAJQDIyNQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg5NzEsIDI3MzUpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoOTcxLCAyNTk1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlAMjY3KQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAyNzUKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ2MDA5MjAyRjciCi0JCSAgICBjbGllbnQgICAgIAlAMjUwCi0JCSAgICBzdXBwbGllciAgIAlAMjI1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDI4NjcsIDMxOTkpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMjg2NywgMjU5NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDI2NykKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjc2Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUZBMjAwMjVFIgotCQkgICAgY2xpZW50ICAgICAJQDIyMgotCQkgICAgc3VwcGxpZXIgICAJQDIyNQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgzOTEzLCAyODYzKQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDM5MTMsIDI1OTUpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAyNjcpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDI3NwotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDYwMENCMDBBQSIKLQkJICAgIGNsaWVudCAgICAgCUAyMjEKLQkJICAgIHN1cHBsaWVyICAgCUAyMjUKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoNDEwNSwgMzAzOSkKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSg0MTA1LCAyNTk1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlAMjY3KQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAyNzgKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RDA1NTAxQzQiCi0JCSAgICBjbGllbnQgICAgIAlAMjYxCi0JCSAgICBzdXBwbGllciAgIAlAMjI1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDE0NzcsIDI5NDMpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTQ3NywgMjU5NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDI2NykKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjc5Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUVFNTgwMzdBIgotCQkgICAgY2xpZW50ICAgICAJQDI1MwotCQkgICAgc3VwcGxpZXIgICAJQDIyNQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMDI4LCAyOTQzKQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDEwMjgsIDI1OTUpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAyNjcpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDI4MAotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNCODk3RTIzMDIzNyIKLQkJICAgIGNsaWVudCAgICAgCUAyNjAKLQkJICAgIHN1cHBsaWVyICAgCUAyMjUKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTY2OCwgMzE5OSkKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNjY4LCAyNTk1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlAMjY3KQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAyODEKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1QzlCNzAxNTAiCi0JCSAgICBjbGllbnQgICAgIAlAMjQ5Ci0JCSAgICBzdXBwbGllciAgIAlAMjI1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDE4NzIsIDI5NDMpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTg3MiwgMjU5NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDI2NykKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjgyCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y3NjJBNkEwMzA4IgotCQkgICAgY2xpZW50ICAgICAJQDI2MgotCQkgICAgc3VwcGxpZXIgICAJQDIyNQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgyNDA4LCAzMTM4KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDI0MDgsIDI1OTUpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAyNjcpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUF0dHJpYnV0ZUV4dGVuc2libGUiIEAyODMKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoOTQ0LCA3NjgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyODMKLQkJCWxvY2F0aW9uICAgCSg0MDEsIDYwNSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkxMDg2Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUF0dHJpYnV0ZUV4dGVuc2libGUiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMjgzCi0JCQlsb2NhdGlvbiAgIAkoNDAxLCA1NTUpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTEwODYKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUwNjNGMDJBRiIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDI4MwotCQkJbG9jYXRpb24gICAJKDQwMSwgNjYzKQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMgotCQkJbmxpbmVzICAgICAJNgotCQkJbWF4X3dpZHRoICAJMTA4NykKLQkJICAgIHdpZHRoICAgICAgCTExMDQKLQkJICAgIGhlaWdodCAgICAgCTQ1MAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMjg0Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUZFM0MwM0Q0IgotCQkgICAgY2xpZW50ICAgICAJQDIyNQotCQkgICAgc3VwcGxpZXIgICAJQDIzNQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxNzc0LCAxMzkyKQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDE3NzQsIDEyMDYpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAyMzYpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDI4NQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUwNUMyMDI5MCIKLQkJICAgIGNsaWVudCAgICAgCUAyMjUKLQkJICAgIHN1cHBsaWVyICAgCUAyNjYKLQkJICAgIGxpbmVfc3R5bGUgCTApCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDI4NgotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5NjU3RjA2MDA3RCIKLQkJICAgIGNsaWVudCAgICAgCUAyMjUKLQkJICAgIHN1cHBsaWVyICAgCUAyODMKLQkJICAgIGxpbmVfc3R5bGUgCTApCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDI4NwotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNGNjc3MjM1MDBERCIKLQkJICAgIGNsaWVudCAgICAgCUAyNTcKLQkJICAgIHN1cHBsaWVyICAgCUAyNjIKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMjQ0NywgMzc3NSkKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgyNDQ3LCAzNDE4KQotCQkgICAgZHJhd1N1cHBsaWVyIAlAMjYzKSkpCi0JKG9iamVjdCBDbGFzc0RpYWdyYW0gIjIuMS4xIE5hbWluZyBhbmQgTGlua2luZyIKLQkgICAgcXVpZCAgICAgICAJIjNBRThFRDcyMDFCRCIKLQkgICAgdGl0bGUgICAgICAJIjIuMS4xIE5hbWluZyBhbmQgTGlua2luZyIKLQkgICAgem9vbSAgICAgICAJOTAKLQkgICAgbWF4X2hlaWdodCAJMjgzNTAKLQkgICAgbWF4X3dpZHRoICAJMjE2MDAKLQkgICAgb3JpZ2luX3ggICAJMAotCSAgICBvcmlnaW5feSAgIAkwCi0JICAgIGl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0Ci0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUltcG9ydCIgQDI4OAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxNzEyLCAyMjQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyODgKLQkJCWxvY2F0aW9uICAgCSgxNDIyLCAxNzcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNTgwCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUltcG9ydCIpCi0JCSAgICBzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyODgKLQkJCWxvY2F0aW9uICAgCSgxNDIyLCAxMjcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTU4MAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEIyMDIwMTE5IgotCQkgICAgd2lkdGggICAgICAJNTk4Ci0JCSAgICBoZWlnaHQgICAgIAkyMTgKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6TmFtZXNwYWNlIiBAMjg5Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDQzMiwgMTEzNikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI4OQotCQkJbG9jYXRpb24gICAJKDIwMiwgMTA0MSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk0NjEKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJOYW1lc3BhY2UiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRUEzQ0QzMDAzMCIKLQkJICAgIHdpZHRoICAgICAgCTQ3OQotCQkgICAgaGVpZ2h0ICAgICAJMjE1Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnhzZDo6WFNEU2NoZW1hIiBAMjkwCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE2MzIsIDEyMTYpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAyOTAKLQkJCWxvY2F0aW9uICAgCSgxMjk0LCAxMTQyKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY3NgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIlhTRFNjaGVtYSIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiMzc0QjE4MjUwMEJCIgotCQkgICAgd2lkdGggICAgICAJNjk0Ci0JCSAgICBoZWlnaHQgICAgIAkxNzMKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6RGVmaW5pdGlvbiIgQDI5MQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg0MDAsIDM4NCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDI5MQotCQkJbG9jYXRpb24gICAJKDE2NCwgMjM2KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTQ3MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIkRlZmluaXRpb24iKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNDNGMDA4RSIKLQkJICAgIHdpZHRoICAgICAgCTQ5MAotCQkgICAgaGVpZ2h0ICAgICAJMzIwCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkNDEiIEAyOTIKLQkJICAgIGxvY2F0aW9uICAgCSgzMDksIDc4NikKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUVBM0Q1NTAwMkQiCi0JCSAgICByb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCShvYmplY3QgUm9sZVZpZXcgImVOYW1lc3BhY2VzIiBAMjkzCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAyOTIKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTkxLCAyNTgpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMjk0Ci0JCQkJUGFyZW50X1ZpZXcgCUAyOTMKLQkJCQlsb2NhdGlvbiAgIAkoNDYxLCA5NTYpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMjg4Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZU5hbWVzcGFjZXMiCi0JCQkJcGN0RGlzdCAgICAJMC42OTg4NDIKLQkJCQloZWlnaHQgICAgIAkxNTIKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUVBM0Q1NjAzMzIiCi0JCQkgICAgY2xpZW50ICAgICAJQDI5MgotCQkJICAgIHN1cHBsaWVyICAgCUAyODkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgzMDksIDc4NikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMzA5LCAxMDI5KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDI5NQotCQkJCVBhcmVudF9WaWV3IAlAMjkzCi0JCQkJbG9jYXRpb24gICAJKDI0OCwgOTczKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIwLi4qIgotCQkJCXBjdERpc3QgICAgCTAuNzY4NzA3Ci0JCQkJaGVpZ2h0ICAgICAJNjIKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyOTYKLQkJCQlQYXJlbnRfVmlldyAJQDI5MwotCQkJCWxvY2F0aW9uICAgCSgyMjgsIDkxMykKLQkJCQlhbmNob3IgICAgIAkzCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNDYKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIntvcmRlcmVkfSIKLQkJCQlwY3REaXN0ICAgIAkwLjUyNTA5NwotCQkJCWhlaWdodCAgICAgCTgyCi0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkNDIiIEAyOTcKLQkJCSAgICBQYXJlbnRfVmlldyAJQDI5MgotCQkJICAgIGxvY2F0aW9uICAgCSgtOTEsIDI1OCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyOTgKLQkJCQlQYXJlbnRfVmlldyAJQDI5NwotCQkJCWxvY2F0aW9uICAgCSgyNjgsIDU5MikKLQkJCQloaWRkZW4gICAgIAlUUlVFCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTkyCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIiCi0JCQkJcGN0RGlzdCAgICAJMC44MDAwMDAKLQkJCQloZWlnaHQgICAgIAk0MgotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRUEzRDU2MDMyOCIKLQkJCSAgICBjbGllbnQgICAgIAlAMjkyCi0JCQkgICAgc3VwcGxpZXIgICAJQDI5MQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDMwOSwgNzg2KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgzMDksIDU0NCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAyOTkKLQkJCQlQYXJlbnRfVmlldyAJQDI5NwotCQkJCWxvY2F0aW9uICAgCSgyMzksIDU4MykKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMS4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjg0NDk2MQotCQkJCWhlaWdodCAgICAgCTcxCi0JCQkJb3JpZW50YXRpb24gCTApKSkpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SW1wb3J0IiBAMzAwCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE0NzIsIDcyMCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDMwMAotCQkJbG9jYXRpb24gICAJKDEyNTUsIDU4MCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk0MzQKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJbXBvcnQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNEY5MDNERSIKLQkJICAgIHdpZHRoICAgICAgCTQ1MgotCQkgICAgaGVpZ2h0ICAgICAJMzA0Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkNTUiIEAzMDEKLQkJICAgIGxvY2F0aW9uICAgCSgxNDg2LCAxMDAxKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNCOEIxRENDMDJFNSIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZVNjaGVtYSIgQDMwMgotCQkJICAgIFBhcmVudF9WaWV3IAlAMzAxCi0JCQkgICAgbG9jYXRpb24gICAJKDUxMCwgLTEwMykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMDMKLQkJCQlQYXJlbnRfVmlldyAJQDMwMgotCQkJCWxvY2F0aW9uICAgCSgxNzM3LCAxMDE4KQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTIwNAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK2VTY2hlbWEiCi0JCQkJcGN0RGlzdCAgICAJMC41OTI1OTMKLQkJCQloZWlnaHQgICAgIAkxMDUKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQjhCMURDRTAyNzAiCi0JCQkgICAgY2xpZW50ICAgICAJQDMwMQotCQkJICAgIHN1cHBsaWVyICAgCUAyOTAKLQkJCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkoMTQ4NiwgMTAwMSkKLQkJCQkoMTYzMiwgMTAwMSkKLQkJCQkoMTYzMiwgMTEzMCkpCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTQ4NiwgMTAwMSkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTYzMiwgMTEzMCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMDQKLQkJCQlQYXJlbnRfVmlldyAJQDMwMgotCQkJCWxvY2F0aW9uICAgCSgxNTYzLCAxMDE4KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIwLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNTkyNTkzCi0JCQkJaGVpZ2h0ICAgICAJNzAKLQkJCQlvcmllbnRhdGlvbiAJMSkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQ1NiIgQDMwNQotCQkJICAgIFBhcmVudF9WaWV3IAlAMzAxCi0JCQkgICAgbG9jYXRpb24gICAJKDUxMCwgLTEwMykKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQjhCMURDRTAyN0EiCi0JCQkgICAgY2xpZW50ICAgICAJQDMwMQotCQkJICAgIHN1cHBsaWVyICAgCUAzMDAKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxNDg2LCAxMDAwKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNDg2LCA4NzIpKSkpCi0JCShvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQ0MyIgQDMwNgotCQkgICAgbG9jYXRpb24gICAJKDEwODcsIDQwMykKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUVBM0UzQTAwMkQiCi0JCSAgICByb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDQ0IiBAMzA3Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAzMDYKLQkJCSAgICBsb2NhdGlvbiAgIAkoNjg3LCAtMTI1KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDMwOAotCQkJCVBhcmVudF9WaWV3IAlAMzA3Ci0JCQkJbG9jYXRpb24gICAJKDE0MDYsIDQ4MCkKLQkJCQloaWRkZW4gICAgIAlUUlVFCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJNDUwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIiCi0JCQkJcGN0RGlzdCAgICAJMC44MDAwMDAKLQkJCQloZWlnaHQgICAgIAk0MgotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNBRUEzRTNDMDFGMiIKLQkJCSAgICBjbGllbnQgICAgIAlAMzA2Ci0JCQkgICAgc3VwcGxpZXIgICAJQDMwMAotCQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJCSgxMDg3LCA0MDMpCi0JCQkJKDEzNjQsIDQwMykKLQkJCQkoMTM2NCwgNTY4KSkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMDg3LCA0MDMpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDEzNjQsIDU2OCkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICJlRGVmaW5pdGlvbiIgQDMwOQotCQkJICAgIFBhcmVudF9WaWV3IAlAMzA2Ci0JCQkgICAgbG9jYXRpb24gICAJKDY4NywgLTEyNSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMTAKLQkJCQlQYXJlbnRfVmlldyAJQDMwOQotCQkJCWxvY2F0aW9uICAgCSg4MDUsIDM2MykKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkyMTYKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlRGVmaW5pdGlvbiIKLQkJCQlwY3REaXN0ICAgIAkwLjYzNzUzMgotCQkJCWhlaWdodCAgICAgCTQxCi0JCQkJb3JpZW50YXRpb24gCTEpCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FFQTNFM0MwMUU4IgotCQkJICAgIGNsaWVudCAgICAgCUAzMDYKLQkJCSAgICBzdXBwbGllciAgIAlAMjkxCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTA4NywgNDAzKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSg2NDUsIDQwMykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMTEKLQkJCQlQYXJlbnRfVmlldyAJQDMwOQotCQkJCWxvY2F0aW9uICAgCSg3MjcsIDQ1NikKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjgxNDkxMAotCQkJCWhlaWdodCAgICAgCTUzCi0JCQkJb3JpZW50YXRpb24gCTApKSkpCi0JCShvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQxMyIgQDMxMgotCQkgICAgbG9jYXRpb24gICAJKDczNywgODI2KQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNDODY0REZGMDJFQyIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMTQiIEAzMTMKLQkJCSAgICBQYXJlbnRfVmlldyAJQDMxMgotCQkJICAgIGxvY2F0aW9uICAgCSgtNjcxLCAxMDYpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzE0Ci0JCQkJUGFyZW50X1ZpZXcgCUAzMTMKLQkJCQlsb2NhdGlvbiAgIAkoNTUyLCA2NDcpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTQ1MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiIgotCQkJCXBjdERpc3QgICAgCTAuODAwMDAwCi0JCQkJaGVpZ2h0ICAgICAJNDIKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQzg2NERGRjAyRUUiCi0JCQkgICAgY2xpZW50ICAgICAJQDMxMgotCQkJICAgIHN1cHBsaWVyICAgCUAyOTEKLQkJCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkoNzM3LCA4MjYpCi0JCQkJKDUxMCwgODI2KQotCQkJCSg1MTAsIDU0NCkpCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoNzM3LCA4MjYpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDUxMCwgNTQ0KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDMxNQotCQkJCVBhcmVudF9WaWV3IAlAMzEzCi0JCQkJbG9jYXRpb24gICAJKDQ1NywgNTk1KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuOTAwMDAwCi0JCQkJaGVpZ2h0ICAgICAJNTQKLQkJCQlvcmllbnRhdGlvbiAJMCkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICJlSW1wb3J0cyIgQDMxNgotCQkJICAgIFBhcmVudF9WaWV3IAlAMzEyCi0JCQkgICAgbG9jYXRpb24gICAJKC02NzEsIDEwNikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMTcKLQkJCQlQYXJlbnRfVmlldyAJQDMxNgotCQkJCWxvY2F0aW9uICAgCSgxMTQ0LCA3NzMpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTgwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZUltcG9ydHMiCi0JCQkJcGN0RGlzdCAgICAJMC43OTkxODkKLQkJCQloZWlnaHQgICAgIAk1NAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNDODY0REZGMDJFRCIKLQkJCSAgICBjbGllbnQgICAgIAlAMzEyCi0JCQkgICAgc3VwcGxpZXIgICAJQDMwMAotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDczNywgODI2KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMjQ2LCA4MjYpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzE4Ci0JCQkJUGFyZW50X1ZpZXcgCUAzMTYKLQkJCQlsb2NhdGlvbiAgIAkoMTE4MCwgODc5KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIwLi4qIgotCQkJCXBjdERpc3QgICAgCTAuODcyMjExCi0JCQkJaGVpZ2h0ICAgICAJNTMKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMTkKLQkJCQlQYXJlbnRfVmlldyAJQDMxNgotCQkJCWxvY2F0aW9uICAgCSgxMTYyLCA5MzMpCi0JCQkJYW5jaG9yICAgICAJMwotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTQ2Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSJ7b3JkZXJlZH0iCi0JCQkJcGN0RGlzdCAgICAJMC44Mzc3MjgKLQkJCQloZWlnaHQgICAgIAkxMDcKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMzIwCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0Y2RjIwMEQwMzQwIgotCQkgICAgY2xpZW50ICAgICAJQDMwMAotCQkgICAgc3VwcGxpZXIgICAJQDI4OAotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxNTU1LCA1NjgpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTU1NSwgMzMzKSkpKQotCShvYmplY3QgQ2xhc3NEaWFncmFtICIyLjIgVHlwZXMiCi0JICAgIHF1aWQgICAgICAgCSIzQjg1QUU1OTAzN0UiCi0JICAgIHRpdGxlICAgICAgCSIyLjIgVHlwZXMiCi0JICAgIHpvb20gICAgICAgCTkwCi0JICAgIG1heF9oZWlnaHQgCTI4MzUwCi0JICAgIG1heF93aWR0aCAgCTIxNjAwCi0JICAgIG9yaWdpbl94ICAgCTAKLQkgICAgb3JpZ2luX3kgICAJODEKLQkgICAgaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp4c2Q6OlhTRFR5cGVEZWZpbml0aW9uIiBAMzIxCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDExMzYsIDEyMzIpCi0JCSAgICBmb250ICAgICAgIAkob2JqZWN0IEZvbnQKLQkJCWl0YWxpY3MgICAgCVRSVUUpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzMjEKLQkJCWxvY2F0aW9uICAgCSg4OTUsIDExNTcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDgyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiWFNEVHlwZURlZmluaXRpb24iKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCNjZFQ0QzMDJBOSIKLQkJICAgIHdpZHRoICAgICAgCTUwMAotCQkgICAgaGVpZ2h0ICAgICAJMTc0Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnhzZDo6WFNERWxlbWVudERlY2xhcmF0aW9uIiBAMzIyCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDExMzYsIDE2MDApCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzMjIKLQkJCWxvY2F0aW9uICAgCSg5MDYsIDE1MzEpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDYwCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiWFNERWxlbWVudERlY2xhcmF0aW9uIikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjY2RUQ1ODAyMTQiCi0JCSAgICB3aWR0aCAgICAgIAk0NzgKLQkJICAgIGhlaWdodCAgICAgCTE2MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpNZXNzYWdlIiBAMzIzCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDEyODAsIDE5NjgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzMjMKLQkJCWxvY2F0aW9uICAgCSgxMDIyLCAxODI4KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTUxNwotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIk1lc3NhZ2UiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDOTU5MDA3OCIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDMyMwotCQkJbG9jYXRpb24gICAJKDEwMjIsIDE4ODMpCi0JCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCWZpbGxfY29sb3IgCTE2Nzc3MjE1Ci0JCQlhbmNob3IgICAgIAkyCi0JCQlubGluZXMgICAgIAkzCi0JCQltYXhfd2lkdGggIAk0MDkpCi0JCSAgICB3aWR0aCAgICAgIAk1MzUKLQkJICAgIGhlaWdodCAgICAgCTMwNQotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpQYXJ0IiBAMzI0Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDM1MiwgMTE4NCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDMyNAotCQkJbG9jYXRpb24gICAJKDEyOCwgMTA2NykKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk0NDgKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJQYXJ0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Q0UxQzAzMkUiCi0JCSAgICBjb21wYXJ0bWVudCAJKG9iamVjdCBDb21wYXJ0bWVudAotCQkJUGFyZW50X1ZpZXcgCUAzMjQKLQkJCWxvY2F0aW9uICAgCSgxMjgsIDExMjIpCi0JCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCWZpbGxfY29sb3IgCTE2Nzc3MjE1Ci0JCQlhbmNob3IgICAgIAkyCi0JCQlubGluZXMgICAgIAk0Ci0JCQltYXhfd2lkdGggIAk0ODQpCi0JCSAgICB3aWR0aCAgICAgIAk0NjYKLQkJICAgIGhlaWdodCAgICAgCTI1OAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDUxIiBAMzI1Ci0JCSAgICBsb2NhdGlvbiAgIAkoNzM1LCAxMTcyKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNCOEIxQkU5MDBDNCIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAidHlwZURlZmluaXRpb24iIEAzMjYKLQkJCSAgICBQYXJlbnRfVmlldyAJQDMyNQotCQkJICAgIGxvY2F0aW9uICAgCSgxNDMsIDY3NikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMjcKLQkJCQlQYXJlbnRfVmlldyAJQDMyNgotCQkJCWxvY2F0aW9uICAgCSg3NzUsIDExMzMpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMjc2Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrdHlwZURlZmluaXRpb24iCi0JCQkJcGN0RGlzdCAgICAJMC4yNjkwMDYKLQkJCQloZWlnaHQgICAgIAk0MAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNCOEIxQkU5MDMyNyIKLQkJCSAgICBjbGllbnQgICAgIAlAMzI1Ci0JCQkgICAgc3VwcGxpZXIgICAJQDMyMQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDczNSwgMTE3MikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoODg2LCAxMTcyKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDMyOAotCQkJCVBhcmVudF9WaWV3IAlAMzI2Ci0JCQkJbG9jYXRpb24gICAJKDgzOSwgMTIwNykKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjY4ODcwNQotCQkJCWhlaWdodCAgICAgCTM1Ci0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkNTIiIEAzMjkKLQkJCSAgICBQYXJlbnRfVmlldyAJQDMyNQotCQkJICAgIGxvY2F0aW9uICAgCSgxNDMsIDY3NikKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQjhCMUJFOTAzMzEiCi0JCQkgICAgY2xpZW50ICAgICAJQDMyNQotCQkJICAgIHN1cHBsaWVyICAgCUAzMjQKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg3MzUsIDExNzIpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDU4NSwgMTE3MikpKSkKLQkJKG9iamVjdCBBc3NvY2lhdGlvblZpZXdOZXcgIiRVTk5BTUVEJDUzIiBAMzMwCi0JCSAgICBsb2NhdGlvbiAgIAkoNTI3LCAxNTkyKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNCOEIxQzEyMDNCMiIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZWxlbWVudERlY2xhcmF0aW9uIiBAMzMxCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAzMzAKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTY1LCAxMDk2KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDMzMgotCQkJCVBhcmVudF9WaWV3IAlAMzMxCi0JCQkJbG9jYXRpb24gICAJKDY2NiwgMTU1NCkKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkzNzIKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlbGVtZW50RGVjbGFyYXRpb24iCi0JCQkJcGN0RGlzdCAgICAJMC4zNzUzOTQKLQkJCQloZWlnaHQgICAgIAkzOQotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNCOEIxQzE0MDAxQyIKLQkJCSAgICBjbGllbnQgICAgIAlAMzMwCi0JCQkgICAgc3VwcGxpZXIgICAJQDMyMgotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDUyNywgMTU5MikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoODk3LCAxNTkyKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDMzMwotCQkJCVBhcmVudF9WaWV3IAlAMzMxCi0JCQkJbG9jYXRpb24gICAJKDgwNywgMTY0NSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjc1NTg3NwotCQkJCWhlaWdodCAgICAgCTUzCi0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkNTQiIEAzMzQKLQkJCSAgICBQYXJlbnRfVmlldyAJQDMzMAotCQkJICAgIGxvY2F0aW9uICAgCSgtNjUsIDEwOTYpCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0I4QjFDMTQwMDI2IgotCQkJICAgIGNsaWVudCAgICAgCUAzMzAKLQkJCSAgICBzdXBwbGllciAgIAlAMzI0Ci0JCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkJKDUyNywgMTU5MikKLQkJCQkoNDM3LCAxNTkyKQotCQkJCSg0MzcsIDEzMTMpKQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDUyNywgMTU5MikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoNDM3LCAxMzEzKSkpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkNTciIEAzMzUKLQkJICAgIGxvY2F0aW9uICAgCSgzMjIsIDE5MTEpCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0M0NjgyOTMwM0U1IgotCQkgICAgcm9sZXZpZXdfbGlzdCAJKGxpc3QgUm9sZVZpZXdzCi0JCQkob2JqZWN0IFJvbGVWaWV3ICJlTWVzc2FnZSIgQDMzNgotCQkJICAgIFBhcmVudF9WaWV3IAlAMzM1Ci0JCQkgICAgbG9jYXRpb24gICAJKC0xNCwgMTE5MSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMzcKLQkJCQlQYXJlbnRfVmlldyAJQDMzNgotCQkJCWxvY2F0aW9uICAgCSg4MzgsIDE4NzIpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMjE2Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZU1lc3NhZ2UiCi0JCQkJcGN0RGlzdCAgICAJMC43NDg1NjAKLQkJCQloZWlnaHQgICAgIAk0MAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNDNDY4Mjk2MDEwRSIKLQkJCSAgICBjbGllbnQgICAgIAlAMzM1Ci0JCQkgICAgc3VwcGxpZXIgICAJQDMyMwotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDMyMiwgMTkxMSkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTAxMywgMTkxMSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzMzgKLQkJCQlQYXJlbnRfVmlldyAJQDMzNgotCQkJCWxvY2F0aW9uICAgCSg5NDMsIDE5NjUpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjAuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC45MDAwMDAKLQkJCQloZWlnaHQgICAgIAk1NAotCQkJCW9yaWVudGF0aW9uIAkxKSkKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDU4IiBAMzM5Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAzMzUKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTE0LCAxMTkxKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNDNDY4Mjk2MDExOCIKLQkJCSAgICBjbGllbnQgICAgIAlAMzM1Ci0JCQkgICAgc3VwcGxpZXIgICAJQDMyNAotCQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJCSgzMjIsIDE5MTEpCi0JCQkJKDIyOSwgMTkxMSkKLQkJCQkoMjI5LCAxMzEzKSkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgzMjIsIDE5MTEpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDIyOSwgMTMxMykpKSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpUeXBlcyIgQDM0MAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg4MDAsIDYwOCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM0MAotCQkJbG9jYXRpb24gICAJKDYxNSwgNTEyKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTM3MQotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIlR5cGVzIikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjhCRTlBNjAzQTgiCi0JCSAgICBjb21wYXJ0bWVudCAJKG9iamVjdCBDb21wYXJ0bWVudAotCQkJUGFyZW50X1ZpZXcgCUAzNDAKLQkJCWxvY2F0aW9uICAgCSg2MTUsIDU2NykKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTMKLQkJCW1heF93aWR0aCAgCTMxMikKLQkJICAgIHdpZHRoICAgICAgCTM4OQotCQkgICAgaGVpZ2h0ICAgICAJMjE2Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OkRlZmluaXRpb24iIEAzNDEKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTc2LCAxNjApCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzNDEKLQkJCWxvY2F0aW9uICAgCSg3NCwgMTA3KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTIwNAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIkRlZmluaXRpb24iKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVFNDNGMDA4RSIKLQkJICAgIHdpZHRoICAgICAgCTIyMgotCQkgICAgaGVpZ2h0ICAgICAJMTMwCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMTUiIEAzNDIKLQkJICAgIGxvY2F0aW9uICAgCSgyMzQsIDYwNCkKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjhCRUEyNzAyOUYiCi0JCSAgICByb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCShvYmplY3QgUm9sZVZpZXcgImVUeXBlcyIgQDM0MwotCQkJICAgIFBhcmVudF9WaWV3IAlAMzQyCi0JCQkgICAgbG9jYXRpb24gICAJKC0xNTAsIDM5NikKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzNDQKLQkJCQlQYXJlbnRfVmlldyAJQDM0MwotCQkJCWxvY2F0aW9uICAgCSg0ODAsIDY0MCkKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkyMDcKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlVHlwZXMiCi0JCQkJcGN0RGlzdCAgICAJMC42NjEwMTcKLQkJCQloZWlnaHQgICAgIAkzNgotCQkJCW9yaWVudGF0aW9uIAkxKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNCOEJFQTI5MDM2QSIKLQkJCSAgICBjbGllbnQgICAgIAlAMzQyCi0JCQkgICAgc3VwcGxpZXIgICAJQDM0MAotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDIzNCwgNjA0KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSg2MDYsIDYwNCkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzNDUKLQkJCQlQYXJlbnRfVmlldyAJQDM0MwotCQkJCWxvY2F0aW9uICAgCSg1MjYsIDU2OSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uMSIKLQkJCQlwY3REaXN0ICAgIAkwLjc4Mzg4MwotCQkJCWhlaWdodCAgICAgCTM2Ci0JCQkJb3JpZW50YXRpb24gCTApKQotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMTYiIEAzNDYKLQkJCSAgICBQYXJlbnRfVmlldyAJQDM0MgotCQkJICAgIGxvY2F0aW9uICAgCSgtMTUwLCAzOTYpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzQ3Ci0JCQkJUGFyZW50X1ZpZXcgCUAzNDYKLQkJCQlsb2NhdGlvbiAgIAkoMTMzLCAzMTMpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTYwCi0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIiCi0JCQkJcGN0RGlzdCAgICAJMC44MDAwMDAKLQkJCQloZWlnaHQgICAgIAk0MgotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNCOEJFQTI5MDM1NiIKLQkJCSAgICBjbGllbnQgICAgIAlAMzQyCi0JCQkgICAgc3VwcGxpZXIgICAJQDM0MQotCQkJICAgIHZlcnRpY2VzICAgCShsaXN0IFBvaW50cwotCQkJCSgyMzQsIDYwNCkKLQkJCQkoMTc0LCA2MDQpCi0JCQkJKDE3NCwgMjI1KSkKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgyMzQsIDYwNCkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTc0LCAyMjUpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzQ4Ci0JCQkJUGFyZW50X1ZpZXcgCUAzNDYKLQkJCQlsb2NhdGlvbiAgIAkoMjI4LCAyNzEpCi0JCQkJYW5jaG9yICAgICAJMgotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTUKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIjEuLjEiCi0JCQkJcGN0RGlzdCAgICAJMC44OTc3MjkKLQkJCQloZWlnaHQgICAgIAk1NAotCQkJCW9yaWVudGF0aW9uIAkxKSkpKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklUeXBlcyIgQDM0OQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg2NDAsIDIyNCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM0OQotCQkJbG9jYXRpb24gICAJKDUyNSwgMjAzKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTIzMAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklUeXBlcyIpCi0JCSAgICBzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzNDkKLQkJCWxvY2F0aW9uICAgCSg1MjUsIDE1MykKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMjMwCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQ0FEQ0JCMjAwNTAiCi0JCSAgICB3aWR0aCAgICAgIAkyNDgKLQkJICAgIGhlaWdodCAgICAgCTE2NgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCIgQDM1MAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxNzI4LCA4MDApCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzNTAKLQkJCWxvY2F0aW9uICAgCSgxMzU5LCA3NTMpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNzM5Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNDQzM2MEQ3MDM5QyIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDM1MAotCQkJbG9jYXRpb24gICAJKDEzNTksIDgwOCkKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTIKLQkJCW1heF93aWR0aCAgCTU0MCkKLQkJICAgIHdpZHRoICAgICAgCTc1NwotCQkgICAgaGVpZ2h0ICAgICAJMTE4Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OnhzZDo6WFNEU2NoZW1hIiBAMzUxCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDE4NTYsIDEyMTYpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzNTEKLQkJCWxvY2F0aW9uICAgCSgxNTI5LCAxMTAzKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY1NQotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIlhTRFNjaGVtYSIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiMzc0QjE4MjUwMEJCIgotCQkgICAgd2lkdGggICAgICAJNjczCi0JCSAgICBoZWlnaHQgICAgIAkyNTAKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQXNzb2NpYXRpb25WaWV3TmV3ICIkVU5OQU1FRCQ1OSIgQDM1MgotCQkgICAgbG9jYXRpb24gICAJKDE4MjYsIDk3NSkKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQ0MzNjE0NTAwRjIiCi0JCSAgICByb2xldmlld19saXN0IAkobGlzdCBSb2xlVmlld3MKLQkJCShvYmplY3QgUm9sZVZpZXcgIiRVTk5BTUVEJDYwIiBAMzUzCi0JCQkgICAgUGFyZW50X1ZpZXcgCUAzNTIKLQkJCSAgICBsb2NhdGlvbiAgIAkoMzA2LCA0NDcpCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0NDMzYxNDYwMjNEIgotCQkJICAgIGNsaWVudCAgICAgCUAzNTIKLQkJCSAgICBzdXBwbGllciAgIAlAMzUwCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTgyNiwgOTc1KQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxODI2LCA4NTkpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzU0Ci0JCQkJUGFyZW50X1ZpZXcgCUAzNTMKLQkJCQlsb2NhdGlvbiAgIAkoMTc3NCwgOTAwKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNjU2NDg5Ci0JCQkJaGVpZ2h0ICAgICAJNTMKLQkJCQlvcmllbnRhdGlvbiAJMCkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICJzY2hlbWEiIEAzNTUKLQkJCSAgICBQYXJlbnRfVmlldyAJQDM1MgotCQkJICAgIGxvY2F0aW9uICAgCSgzMDYsIDQ0NykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzNTYKLQkJCQlQYXJlbnRfVmlldyAJQDM1NQotCQkJCWxvY2F0aW9uICAgCSgyMDA2LCAxMDMzKQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE2OAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiK3NjaGVtYSIKLQkJCQlwY3REaXN0ICAgIAkwLjUwNzU3NgotCQkJCWhlaWdodCAgICAgCTE4MAotCQkJCW9yaWVudGF0aW9uIAkwKQotCQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCQkgICAgcXVpZHUgICAgICAJIjNDQzM2MTQ2MDIzRSIKLQkJCSAgICBjbGllbnQgICAgIAlAMzUyCi0JCQkgICAgc3VwcGxpZXIgICAJQDM1MQotCQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDE4MjYsIDk3NSkKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTgyNiwgMTA5MSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzNTcKLQkJCQlQYXJlbnRfVmlldyAJQDM1NQotCQkJCWxvY2F0aW9uICAgCSgxNzg4LCAxMDUwKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIwLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNjUxNTE1Ci0JCQkJaGVpZ2h0ICAgICAJMzkKLQkJCQlvcmllbnRhdGlvbiAJMSkpKSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMzU4Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0NBRENEM0IwMzgwIgotCQkgICAgY2xpZW50ICAgICAJQDM0MAotCQkgICAgc3VwcGxpZXIgICAJQDM0OQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg3MDUsIDUwMCkKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSg3MDUsIDMwNykpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6RXh0ZW5zaWJsZUVsZW1lbnQiIEAzNTkKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTA1NiwgMjI0KQotCQkgICAgZm9udCAgICAgICAJKG9iamVjdCBGb250Ci0JCQlpdGFsaWNzICAgIAlUUlVFKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMzU5Ci0JCQlsb2NhdGlvbiAgIAkoODE1LCAxMzApCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDgyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiRXh0ZW5zaWJsZUVsZW1lbnQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVGQ0ZBMDMzQSIKLQkJICAgIHdpZHRoICAgICAgCTUwMAotCQkgICAgaGVpZ2h0ICAgICAJMjEyCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEAzNjAKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjhCRUIwMTAzMTEiCi0JCSAgICBjbGllbnQgICAgIAlAMzQwCi0JCSAgICBzdXBwbGllciAgIAlAMzU5Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDg1NCwgNTAwKQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDg1NCwgMzMwKSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIgQDM2MQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxODI0LCA0NjQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzNjEKLQkJCWxvY2F0aW9uICAgCSgxNDkwLCAzNjgpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjY5Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiRXh0ZW5zaWJpbGl0eUVsZW1lbnQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVEQkI2MDJBOSIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDM2MQotCQkJbG9jYXRpb24gICAJKDE0OTAsIDQyMykKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTMKLQkJCW1heF93aWR0aCAgCTQ2NSkKLQkJICAgIHdpZHRoICAgICAgCTY4NwotCQkgICAgaGVpZ2h0ICAgICAJMjE2Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMjUiIEAzNjIKLQkJICAgIGxvY2F0aW9uICAgCSgxMjA2LCA0OTMpCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUZEMTMwMDc5IgotCQkgICAgcm9sZXZpZXdfbGlzdCAJKGxpc3QgUm9sZVZpZXdzCi0JCQkob2JqZWN0IFJvbGVWaWV3ICIkVU5OQU1FRCQyNiIgQDM2MwotCQkJICAgIFBhcmVudF9WaWV3IAlAMzYyCi0JCQkgICAgbG9jYXRpb24gICAJKC01ODYsIDIzNykKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzNjQKLQkJCQlQYXJlbnRfVmlldyAJQDM2MwotCQkJCWxvY2F0aW9uICAgCSgxMTM2LCAzODYpCi0JCQkJaGlkZGVuICAgICAJVFJVRQotCQkJCWFuY2hvciAgICAgCTEKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTQ1MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiIgotCQkJCXBjdERpc3QgICAgCTAuODAwMDAwCi0JCQkJaGVpZ2h0ICAgICAJNDIKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1RkQxNDAxOUUiCi0JCQkgICAgY2xpZW50ICAgICAJQDM2MgotCQkJICAgIHN1cHBsaWVyICAgCUAzNTkKLQkJCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkoMTIwNiwgNDkzKQotCQkJCSgxMDk0LCA0OTMpCi0JCQkJKDEwOTQsIDMzMCkpCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTIwNiwgNDkzKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMDk0LCAzMzApCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzY1Ci0JCQkJUGFyZW50X1ZpZXcgCUAzNjMKLQkJCQlsb2NhdGlvbiAgIAkoMTA0MiwgMzc3KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuODI4MzI2Ci0JCQkJaGVpZ2h0ICAgICAJNTMKLQkJCQlvcmllbnRhdGlvbiAJMCkpCi0JCQkob2JqZWN0IFJvbGVWaWV3ICJlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIiBAMzY2Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAzNjIKLQkJCSAgICBsb2NhdGlvbiAgIAkoLTU4NiwgMjM3KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDM2NwotCQkJCVBhcmVudF9WaWV3IAlAMzY2Ci0JCQkJbG9jYXRpb24gICAJKDExOTYsIDQ1NCkKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAk0NDQKLQkJCQlqdXN0aWZ5ICAgIAkwCi0JCQkJbGFiZWwgICAgICAJIitlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIgotCQkJCXBjdERpc3QgICAgCS0wLjAzOTcxMQotCQkJCWhlaWdodCAgICAgCTQwCi0JCQkJb3JpZW50YXRpb24gCTApCi0JCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJCSAgICBxdWlkdSAgICAgIAkiM0FENUZEMTQwMTlEIgotCQkJICAgIGNsaWVudCAgICAgCUAzNjIKLQkJCSAgICBzdXBwbGllciAgIAlAMzYxCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTIwNiwgNDkzKQotCQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxNDgxLCA0OTMpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzY4Ci0JCQkJUGFyZW50X1ZpZXcgCUAzNjYKLQkJCQlsb2NhdGlvbiAgIAkoMTQxNSwgNTQ2KQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIwLi4qIgotCQkJCXBjdERpc3QgICAgCTAuNzY0OTU3Ci0JCQkJaGVpZ2h0ICAgICAJNTMKLQkJCQlvcmllbnRhdGlvbiAJMSkKLQkJCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IFNlZ0xhYmVsIEAzNjkKLQkJCQlQYXJlbnRfVmlldyAJQDM2NgotCQkJCWxvY2F0aW9uICAgCSgxMzk2LCAzOTIpCi0JCQkJYW5jaG9yICAgICAJMwotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTQ2Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSJ7b3JkZXJlZH0iCi0JCQkJcGN0RGlzdCAgICAJMC42OTQ5MTUKLQkJCQloZWlnaHQgICAgIAkxMDIKLQkJCQlvcmllbnRhdGlvbiAJMCkpKSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMzcwCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0NDMzYyN0YwMEI3IgotCQkgICAgY2xpZW50ICAgICAJQDM1MAotCQkgICAgc3VwcGxpZXIgICAJQDM2MQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxODEyLCA3NDEpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTgxMiwgNTcyKSkpKQotCShvYmplY3QgQ2xhc3NEaWFncmFtICIyLjMgTWVzc2FnZXMiCi0JICAgIHF1aWQgICAgICAgCSIzQkNFODUzRDAyQzgiCi0JICAgIHRpdGxlICAgICAgCSIyLjMgTWVzc2FnZXMiCi0JICAgIHpvb20gICAgICAgCTg1Ci0JICAgIG1heF9oZWlnaHQgCTI4MzUwCi0JICAgIG1heF93aWR0aCAgCTIxNjAwCi0JICAgIG9yaWdpbl94ICAgCTAKLQkgICAgb3JpZ2luX3kgICAJMAotCSAgICBpdGVtcyAgICAgIAkobGlzdCBkaWFncmFtX2l0ZW1fbGlzdAotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklNZXNzYWdlIiBAMzcxCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgU3VwcHJlc3NBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg0NDgsIDIyNCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM3MQotCQkJbG9jYXRpb24gICAJKDI2NywgMTIyKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTM2MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklNZXNzYWdlIikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM3MQotCQkJbG9jYXRpb24gICAJKDI2NywgNzIpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTM2MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE4QUYwMDRGIgotCQkgICAgd2lkdGggICAgICAJMzgwCi0JCSAgICBoZWlnaHQgICAgIAkzMjgKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SVBhcnQiIEAzNzIKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBTdXBwcmVzc0F0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDEzMjgsIDIyNCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM3MgotCQkJbG9jYXRpb24gICAJKDEwMjksIDEyNCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk1OTkKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJUGFydCIpCi0JCSAgICBzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzNzIKLQkJCWxvY2F0aW9uICAgCSgxMDI5LCA3NCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNTk5Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QTkzRjAxQkUiCi0JCSAgICB3aWR0aCAgICAgIAk2MTcKLQkJICAgIGhlaWdodCAgICAgCTMyNAotCQkgICAgYW5ub3RhdGlvbiAJOCkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpQYXJ0IiBAMzczCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDEzMTIsIDgxNikKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM3MwotCQkJbG9jYXRpb24gICAJKDEwNzUsIDY5MCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk0NzQKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJQYXJ0IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Q0UxQzAzMkUiCi0JCSAgICB3aWR0aCAgICAgIAk0OTIKLQkJICAgIGhlaWdodCAgICAgCTI3NgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBAMzc0Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE5NkQwMkYxIgotCQkgICAgY2xpZW50ICAgICAJQDM3MwotCQkgICAgc3VwcGxpZXIgICAJQDM3MgotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgxMzA0LCA2NzgpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTMwNCwgMzg2KSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpNZXNzYWdlIiBAMzc1Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDQ0OCwgNjU2KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMzc1Ci0JCQlsb2NhdGlvbiAgIAkoMjQxLCA1MDcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNDE0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiTWVzc2FnZSIpCi0JCSAgICBpY29uX3N0eWxlIAkiSWNvbiIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0FENUM5NTkwMDc4IgotCQkgICAgd2lkdGggICAgICAJNDMyCi0JCSAgICBoZWlnaHQgICAgIAkzMjIKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDM3NgotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBOEQxMDJCQSIKLQkJICAgIGNsaWVudCAgICAgCUAzNzUKLQkJICAgIHN1cHBsaWVyICAgCUAzNzEKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoNDQ1LCA0OTUpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoNDQ1LCAzODgpKQotCQkob2JqZWN0IEFzc29jaWF0aW9uVmlld05ldyAiJFVOTkFNRUQkMSIgQDM3NwotCQkgICAgbG9jYXRpb24gICAJKDY4OCwgOTUyKQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjNBRDVDRUJFMDBFMiIKLQkJICAgIHJvbGV2aWV3X2xpc3QgCShsaXN0IFJvbGVWaWV3cwotCQkJKG9iamVjdCBSb2xlVmlldyAiZVBhcnRzIiBAMzc4Ci0JCQkgICAgUGFyZW50X1ZpZXcgCUAzNzcKLQkJCSAgICBsb2NhdGlvbiAgIAkoMTc2LCAzMjgpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzc5Ci0JCQkJUGFyZW50X1ZpZXcgCUAzNzgKLQkJCQlsb2NhdGlvbiAgIAkoOTUyLCA4OTcpCi0JCQkJYW5jaG9yICAgICAJMQotCQkJCWFuY2hvcl9sb2MgCTEKLQkJCQlubGluZXMgICAgIAkxCi0JCQkJbWF4X3dpZHRoICAJMTQ0Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIrZVBhcnRzIgotCQkJCXBjdERpc3QgICAgCTAuNjk3NDUyCi0JCQkJaGVpZ2h0ICAgICAJNTYKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Q0VCRjAwNjEiCi0JCQkgICAgY2xpZW50ICAgICAJQDM3NwotCQkJICAgIHN1cHBsaWVyICAgCUAzNzMKLQkJCSAgICBsaW5lX3N0eWxlIAkzCi0JCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg2ODgsIDk1MikKLQkJCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTA2NiwgOTUyKQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDM4MAotCQkJCVBhcmVudF9WaWV3IAlAMzc4Ci0JCQkJbG9jYXRpb24gICAJKDk4NywgMTAwNSkKLQkJCQlhbmNob3IgICAgIAkyCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAkxNQotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiMC4uKiIKLQkJCQlwY3REaXN0ICAgIAkwLjc4OTgwOQotCQkJCWhlaWdodCAgICAgCTUzCi0JCQkJb3JpZW50YXRpb24gCTEpCi0JCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBTZWdMYWJlbCBAMzgxCi0JCQkJUGFyZW50X1ZpZXcgCUAzNzgKLQkJCQlsb2NhdGlvbiAgIAkoOTY3LCAxMDYxKQotCQkJCWFuY2hvciAgICAgCTMKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1NAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkie29yZGVyZWR9IgotCQkJCXBjdERpc3QgICAgCTAuNzQyMDM4Ci0JCQkJaGVpZ2h0ICAgICAJMTA5Ci0JCQkJb3JpZW50YXRpb24gCTEpKQotCQkJKG9iamVjdCBSb2xlVmlldyAiJFVOTkFNRUQkMiIgQDM4MgotCQkJICAgIFBhcmVudF9WaWV3IAlAMzc3Ci0JCQkgICAgbG9jYXRpb24gICAJKDE3NiwgMzI4KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDM4MwotCQkJCVBhcmVudF9WaWV3IAlAMzgyCi0JCQkJbG9jYXRpb24gICAJKDQwNCwgODkzKQotCQkJCWhpZGRlbiAgICAgCVRSVUUKLQkJCQlhbmNob3IgICAgIAkxCi0JCQkJYW5jaG9yX2xvYyAJMQotCQkJCW5saW5lcyAgICAgCTEKLQkJCQltYXhfd2lkdGggIAk2MAotCQkJCWp1c3RpZnkgICAgCTAKLQkJCQlsYWJlbCAgICAgIAkiIgotCQkJCXBjdERpc3QgICAgCTAuODAwMDAwCi0JCQkJaGVpZ2h0ICAgICAJNDIKLQkJCQlvcmllbnRhdGlvbiAJMCkKLQkJCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1Q0VCRjAwNTciCi0JCQkgICAgY2xpZW50ICAgICAJQDM3NwotCQkJICAgIHN1cHBsaWVyICAgCUAzNzUKLQkJCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCQkoNjg4LCA5NTIpCi0JCQkJKDQ0NSwgOTUyKQotCQkJCSg0NDUsIDgxNykpCi0JCQkgICAgbGluZV9zdHlsZSAJMwotCQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoNjg4LCA5NTIpCi0JCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDQ0NSwgODE3KQotCQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgU2VnTGFiZWwgQDM4NAotCQkJCVBhcmVudF9WaWV3IAlAMzgyCi0JCQkJbG9jYXRpb24gICAJKDM5MywgOTEyKQotCQkJCWFuY2hvciAgICAgCTIKLQkJCQlhbmNob3JfbG9jIAkxCi0JCQkJbmxpbmVzICAgICAJMQotCQkJCW1heF93aWR0aCAgCTE1Ci0JCQkJanVzdGlmeSAgICAJMAotCQkJCWxhYmVsICAgICAgCSIxLi4xIgotCQkJCXBjdERpc3QgICAgCTAuNzQ3NjA0Ci0JCQkJaGVpZ2h0ICAgICAJNTMKLQkJCQlvcmllbnRhdGlvbiAJMCkpKSkpKQotCShvYmplY3QgQ2xhc3NEaWFncmFtICJKV1NETCIKLQkgICAgcXVpZCAgICAgICAJIjQ5MEUyMTVFMDEwOSIKLQkgICAgdGl0bGUgICAgICAJIkpXU0RMIgotCSAgICB6b29tICAgICAgIAk4MAotCSAgICBtYXhfaGVpZ2h0IAkyODM1MAotCSAgICBtYXhfd2lkdGggIAkyMTYwMAotCSAgICBvcmlnaW5feCAgIAkxNTcwCi0JICAgIG9yaWdpbl95ICAgCTE4NjIKLQkgICAgaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRWxlbWVudEV4dGVuc2libGUiIEAzODUKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTM0NCwgMTkwNCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM4NQotCQkJbG9jYXRpb24gICAJKDc0OCwgMTc5NSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkxMTkyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUVsZW1lbnRFeHRlbnNpYmxlIikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM4NQotCQkJbG9jYXRpb24gICAJKDc0OCwgMTc0NSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTE5MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTA0QjAwMERBIgotCQkgICAgY29tcGFydG1lbnQgCShvYmplY3QgQ29tcGFydG1lbnQKLQkJCVBhcmVudF9WaWV3IAlAMzg1Ci0JCQlsb2NhdGlvbiAgIAkoNzQ4LCAxODU2KQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlmaWxsX2NvbG9yIAkxNjc3NzIxNQotCQkJYW5jaG9yICAgICAJMgotCQkJbmxpbmVzICAgICAJNAotCQkJbWF4X3dpZHRoICAJMTIwMCkKLQkJICAgIHdpZHRoICAgICAgCTEyMTAKLQkJICAgIGhlaWdodCAgICAgCTM0MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJQXR0cmlidXRlRXh0ZW5zaWJsZSIgQDM4NgotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgyMjQwLCA1MjgpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzODYKLQkJCWxvY2F0aW9uICAgCSgxNzAwLCAzNjkpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTA4MAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklBdHRyaWJ1dGVFeHRlbnNpYmxlIikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM4NgotCQkJbG9jYXRpb24gICAJKDE3MDAsIDMxOSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTA4MAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTA2M0YwMkFGIgotCQkgICAgd2lkdGggICAgICAJMTA5OAotCQkgICAgaGVpZ2h0ICAgICAJNDQyCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklJbnB1dCIgQDM4NwotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgyMDY0LCAxMzQ0KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMzg3Ci0JCQlsb2NhdGlvbiAgIAkoMTc1NywgMTIzNSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk2MTQKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJSW5wdXQiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMzg3Ci0JCQlsb2NhdGlvbiAgIAkoMTc1NywgMTE4NSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjE0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QTdFRTAwMTUiCi0JCSAgICB3aWR0aCAgICAgIAk2MzIKLQkJICAgIGhlaWdodCAgICAgCTM0MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJT3V0cHV0IiBAMzg4Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDI3NjgsIDEzNDQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzODgKLQkJCWxvY2F0aW9uICAgCSgyNDQ0LCAxMjM1KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY0OAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklPdXRwdXQiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMzg4Ci0JCQlsb2NhdGlvbiAgIAkoMjQ0NCwgMTE4NSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjQ4Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QTgyOTAyN0QiCi0JCSAgICB3aWR0aCAgICAgIAk2NjYKLQkJICAgIGhlaWdodCAgICAgCTM0MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRmF1bHQiIEAzODkKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMzQ3MiwgMTM0NCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM4OQotCQkJbG9jYXRpb24gICAJKDMxNjMsIDEyMzUpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjE4Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUZhdWx0IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM4OQotCQkJbG9jYXRpb24gICAJKDMxNjMsIDExODUpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTYxOAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE4NjEwMzFEIgotCQkgICAgd2lkdGggICAgICAJNjM2Ci0JCSAgICBoZWlnaHQgICAgIAkzNDIKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SVBvcnRUeXBlIiBAMzkwCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDEyNjQsIDEzOTIpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzOTAKLQkJCWxvY2F0aW9uICAgCSg5MjAsIDEyNTgpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjg4Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSVBvcnRUeXBlIikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM5MAotCQkJbG9jYXRpb24gICAJKDkyMCwgMTIwOCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjg4Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QTVCRTAzMzEiCi0JCSAgICB3aWR0aCAgICAgIAk3MDYKLQkJICAgIGhlaWdodCAgICAgCTM5MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBJbmhlcml0VHJlZVZpZXcgIiIgQDM5MQotCQkgICAgbG9jYXRpb24gICAJKDIyNDAsIDg2NCkKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBzdXBwbGllciAgIAlAMzg2Ci0JCSAgICB2ZXJ0aWNlcyAgIAkobGlzdCBQb2ludHMKLQkJCSgyMjQwLCA4NjQpCi0JCQkoMjI0MCwgNzQ5KSkpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDM5MgotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUyMTlGMDE4NiIKLQkJICAgIGNsaWVudCAgICAgCUAzOTAKLQkJICAgIHN1cHBsaWVyICAgCUAzODYKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTI2NCwgMTE5NikKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMjY0LCA4NjQpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAzOTEpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDM5MwotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUyMjM1MDJBRiIKLQkJICAgIGNsaWVudCAgICAgCUAzODcKLQkJICAgIHN1cHBsaWVyICAgCUAzODYKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMjA2NCwgMTE3MykKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgyMDY0LCA4NjQpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAzOTEpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDM5NAotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUyMjM5MDE1NyIKLQkJICAgIGNsaWVudCAgICAgCUAzODgKLQkJICAgIHN1cHBsaWVyICAgCUAzODYKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMjc2OCwgMTE3MykKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgyNzY4LCA4NjQpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAzOTEpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDM5NQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUyMjQxMDA4QyIKLQkJICAgIGNsaWVudCAgICAgCUAzODkKLQkJICAgIHN1cHBsaWVyICAgCUAzODYKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMzIzMSwgMTE3MykKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgzMjMxLCA4NjQpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAzOTEpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUltcG9ydCIgQDM5NgotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg1MTIsIDEzMTIpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzOTYKLQkJCWxvY2F0aW9uICAgCSgxOTMsIDEyNTMpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjM4Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUltcG9ydCIpCi0JCSAgICBzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzOTYKLQkJCWxvY2F0aW9uICAgCSgxOTMsIDEyMDMpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTYzOAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEIyMDIwMTE5IgotCQkgICAgd2lkdGggICAgICAJNjU2Ci0JCSAgICBoZWlnaHQgICAgIAkyNDIKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDM5NwotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUyMjRFMDJDRSIKLQkJICAgIGNsaWVudCAgICAgCUAzOTYKLQkJICAgIHN1cHBsaWVyICAgCUAzODYKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoNTEyLCAxMTkxKQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDUxMiwgODY0KQotCQkgICAgZHJhd1N1cHBsaWVyIAlAMzkxKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklEZWZpbml0aW9uIiBAMzk4Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDM1MiwgMjU0NCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDM5OAotCQkJbG9jYXRpb24gICAJKDYsIDI0ODUpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjkyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSURlZmluaXRpb24iKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlAMzk4Ci0JCQlsb2NhdGlvbiAgIAkoNiwgMjQzNSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjkyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QjFEOTAxNDIiCi0JCSAgICB3aWR0aCAgICAgIAk3MTAKLQkJICAgIGhlaWdodCAgICAgCTI0MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJT3BlcmF0aW9uIiBAMzk5Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDEyMTYsIDI3NTIpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzOTkKLQkJCWxvY2F0aW9uICAgCSg4NjUsIDI0NjgpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNzAyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSU9wZXJhdGlvbiIpCi0JCSAgICBzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUAzOTkKLQkJCWxvY2F0aW9uICAgCSg4NjUsIDI0MTgpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTcwMgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE3NzYwMEQxIgotCQkgICAgY29tcGFydG1lbnQgCShvYmplY3QgQ29tcGFydG1lbnQKLQkJCVBhcmVudF9WaWV3IAlAMzk5Ci0JCQlsb2NhdGlvbiAgIAkoODY1LCAyNTI5KQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlmaWxsX2NvbG9yIAkxNjc3NzIxNQotCQkJYW5jaG9yICAgICAJMgotCQkJbmxpbmVzICAgICAJMTEKLQkJCW1heF93aWR0aCAgCTcwOSkKLQkJICAgIHdpZHRoICAgICAgCTcyMAotCQkgICAgaGVpZ2h0ICAgICAJNjkyCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklNZXNzYWdlIiBANDAwCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDIwMzIsIDI2NDApCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA0MDAKLQkJCWxvY2F0aW9uICAgCSgxNjg2LCAyNDgxKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY5MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklNZXNzYWdlIikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQwMAotCQkJbG9jYXRpb24gICAJKDE2ODYsIDI0MzEpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTY5MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE4QUYwMDRGIgotCQkgICAgY29tcGFydG1lbnQgCShvYmplY3QgQ29tcGFydG1lbnQKLQkJCVBhcmVudF9WaWV3IAlANDAwCi0JCQlsb2NhdGlvbiAgIAkoMTY4NiwgMjU0MikKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTYKLQkJCW1heF93aWR0aCAgCTcwMCkKLQkJICAgIHdpZHRoICAgICAgCTcxMAotCQkgICAgaGVpZ2h0ICAgICAJNDQyCi0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklQYXJ0IiBANDAxCi0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDQxNzYsIDEyOTYpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA0MDEKLQkJCWxvY2F0aW9uICAgCSgzODc1LCAxMjM3KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTYwMgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklQYXJ0IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQwMQotCQkJbG9jYXRpb24gICAJKDM4NzUsIDExODcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTYwMgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEE5M0YwMUJFIgotCQkgICAgd2lkdGggICAgICAJNjIwCi0JCSAgICBoZWlnaHQgICAgIAkyNDIKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDQwMgotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUyMzY3MDI0MiIKLQkJICAgIGNsaWVudCAgICAgCUA0MDEKLQkJICAgIHN1cHBsaWVyICAgCUAzODYKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoNDE3NSwgMTE3NSkKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSg0MTc1LCA4NjQpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUAzOTEpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SVNlcnZpY2UiIEA0MDMKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMjg2NCwgMjYyNCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQwMwotCQkJbG9jYXRpb24gICAJKDI1MjgsIDI0ODcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjcyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSVNlcnZpY2UiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDAzCi0JCQlsb2NhdGlvbiAgIAkoMjUyOCwgMjQzNykKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjcyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QUI0OTAyODciCi0JCSAgICBjb21wYXJ0bWVudCAJKG9iamVjdCBDb21wYXJ0bWVudAotCQkJUGFyZW50X1ZpZXcgCUA0MDMKLQkJCWxvY2F0aW9uICAgCSgyNTI4LCAyNTQ4KQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlmaWxsX2NvbG9yIAkxNjc3NzIxNQotCQkJYW5jaG9yICAgICAJMgotCQkJbmxpbmVzICAgICAJNQotCQkJbWF4X3dpZHRoICAJNjY1KQotCQkgICAgd2lkdGggICAgICAJNjkwCi0JCSAgICBoZWlnaHQgICAgIAkzOTgKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SVBvcnQiIEA0MDQKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoNzM2LCAzMzYwKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDA0Ci0JCQlsb2NhdGlvbiAgIAkoNDMyLCAzMjQ4KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTYwOAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklQb3J0IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQwNAotCQkJbG9jYXRpb24gICAJKDQzMiwgMzE5OCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlhbmNob3IgICAgIAkxMAotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjA4Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiPDxJbnRlcmZhY2U+PiIpCi0JCSAgICBpY29uICAgICAgIAkiSW50ZXJmYWNlIgotCQkgICAgaWNvbl9zdHlsZSAJIkxhYmVsIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQjg0QUI4MDAzMjYiCi0JCSAgICB3aWR0aCAgICAgIAk2MjYKLQkJICAgIGhlaWdodCAgICAgCTM0OAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJQmluZGluZyIgQDQwNQotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgxNjQ4LCAzNTY4KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDA1Ci0JCQlsb2NhdGlvbiAgIAkoMTMwOSwgMzM4MCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk2NzgKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJQmluZGluZyIpCi0JCSAgICBzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA0MDUKLQkJCWxvY2F0aW9uICAgCSgxMzA5LCAzMzMwKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk2NzgKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBQkM2MDIxOSIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDQwNQotCQkJbG9jYXRpb24gICAJKDEzMDksIDM0NDEpCi0JCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCWZpbGxfY29sb3IgCTE2Nzc3MjE1Ci0JCQlhbmNob3IgICAgIAkyCi0JCQlubGluZXMgICAgIAk3Ci0JCQltYXhfd2lkdGggIAk2NjgpCi0JCSAgICB3aWR0aCAgICAgIAk2OTYKLQkJICAgIGhlaWdodCAgICAgCTUwMAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJQmluZGluZ09wZXJhdGlvbiIgQDQwNgotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgyNDgwLCA0MjQwKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDA2Ci0JCQlsb2NhdGlvbiAgIAkoMjA0OSwgMzk1MCkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk4NjIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJQmluZGluZ09wZXJhdGlvbiIpCi0JCSAgICBzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA0MDYKLQkJCWxvY2F0aW9uICAgCSgyMDQ5LCAzOTAwKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk4NjIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBREMwMDA3MiIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDQwNgotCQkJbG9jYXRpb24gICAJKDIwNDksIDQwMTEpCi0JCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCWZpbGxfY29sb3IgCTE2Nzc3MjE1Ci0JCQlhbmNob3IgICAgIAkyCi0JCQlubGluZXMgICAgIAkxMQotCQkJbWF4X3dpZHRoICAJODQzKQotCQkgICAgd2lkdGggICAgICAJODgwCi0JCSAgICBoZWlnaHQgICAgIAk3MDQKLQkJICAgIGFubm90YXRpb24gCTgKLQkJICAgIGF1dG9SZXNpemUgCVRSVUUpCi0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6SUJpbmRpbmdJbnB1dCIgQDQwNwotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSgzMjk2LCAzMDcyKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDA3Ci0JCQlsb2NhdGlvbiAgIAkoMjkxMCwgMzAxMSkKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk3NzIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSJJQmluZGluZ0lucHV0IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQwNwotCQkJbG9jYXRpb24gICAJKDI5MTAsIDI5NjEpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTc3MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEFERUIwMTAwIgotCQkgICAgY29tcGFydG1lbnQgCShvYmplY3QgQ29tcGFydG1lbnQKLQkJCVBhcmVudF9WaWV3IAlANDA3Ci0JCQlsb2NhdGlvbiAgIAkoMjkxMCwgMzA3MikKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTIKLQkJCW1heF93aWR0aCAgCTc1NikKLQkJICAgIHdpZHRoICAgICAgCTc5MAotCQkgICAgaGVpZ2h0ICAgICAJMjQ2Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklCaW5kaW5nT3V0cHV0IiBANDA4Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDM3NjAsIDM0MjQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA0MDgKLQkJCWxvY2F0aW9uICAgCSgzMzU4LCAzMzYzKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTgwNAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklCaW5kaW5nT3V0cHV0IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQwOAotCQkJbG9jYXRpb24gICAJKDMzNTgsIDMzMTMpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTgwNAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIjw8SW50ZXJmYWNlPj4iKQotCQkgICAgaWNvbiAgICAgICAJIkludGVyZmFjZSIKLQkJICAgIGljb25fc3R5bGUgCSJMYWJlbCIKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIGZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCSAgICBxdWlkdSAgICAgIAkiM0I4NEFFMjEwMTExIgotCQkgICAgY29tcGFydG1lbnQgCShvYmplY3QgQ29tcGFydG1lbnQKLQkJCVBhcmVudF9WaWV3IAlANDA4Ci0JCQlsb2NhdGlvbiAgIAkoMzM1OCwgMzQyNCkKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTIKLQkJCW1heF93aWR0aCAgCTc5MCkKLQkJICAgIHdpZHRoICAgICAgCTgyMgotCQkgICAgaGVpZ2h0ICAgICAJMjQ2Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklCaW5kaW5nRmF1bHQiIEA0MDkKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoNDQwMCwgMzgwOCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQwOQotCQkJbG9jYXRpb24gICAJKDQwMTQsIDM3NDcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNzcyCi0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUJpbmRpbmdGYXVsdCIpCi0JCSAgICBzdGVyZW90eXBlIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA0MDkKLQkJCWxvY2F0aW9uICAgCSg0MDE0LCAzNjk3KQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCWFuY2hvciAgICAgCTEwCi0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAk3NzIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRBRTRGMDBCRCIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDQwOQotCQkJbG9jYXRpb24gICAJKDQwMTQsIDM4MDgpCi0JCQlpY29uX3N0eWxlIAkiSWNvbiIKLQkJCWZpbGxfY29sb3IgCTE2Nzc3MjE1Ci0JCQlhbmNob3IgICAgIAkyCi0JCQlubGluZXMgICAgIAkyCi0JCQltYXhfd2lkdGggIAk3NTkpCi0JCSAgICB3aWR0aCAgICAgIAk3OTAKLQkJICAgIGhlaWdodCAgICAgCTI0NgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBJbmhlcml0VHJlZVZpZXcgIiIgQDQxMAotCQkgICAgbG9jYXRpb24gICAJKDEzMTgsIDIxNjUpCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgc3VwcGxpZXIgICAJQDM4NQotCQkgICAgdmVydGljZXMgICAJKGxpc3QgUG9pbnRzCi0JCQkoMTMxOCwgMjE2NSkKLQkJCSgxMzE4LCAyMDc1KSkpCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDQxMQotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUyM0Q1MDI5RiIKLQkJICAgIGNsaWVudCAgICAgCUAzOTkKLQkJICAgIHN1cHBsaWVyICAgCUAzODUKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMTI2OCwgMjQwNikKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgxMjY4LCAyMTY1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlANDEwKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA0MTIKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMjNEQTAzMEQiCi0JCSAgICBjbGllbnQgICAgIAlANDAwCi0JCSAgICBzdXBwbGllciAgIAlAMzg1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDIwMzEsIDI0MTkpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMjAzMSwgMjE2NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDQxMCkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBANDEzCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTIzRDIwMjgwIgotCQkgICAgY2xpZW50ICAgICAJQDM5OAotCQkgICAgc3VwcGxpZXIgICAJQDM4NQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgzNTIsIDI0MjMpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMzUyLCAyMTY1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlANDEwKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA0MTQKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMjNFNTAyQkYiCi0JCSAgICBjbGllbnQgICAgIAlANDAzCi0JCSAgICBzdXBwbGllciAgIAlAMzg1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDI4NjIsIDI0MjUpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMjg2MiwgMjE2NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDQxMCkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBANDE1Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTIzRUEwMTE5IgotCQkgICAgY2xpZW50ICAgICAJQDQwNAotCQkgICAgc3VwcGxpZXIgICAJQDM4NQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg3MzgsIDMxODYpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoNzM4LCAyMTY1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlANDEwKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA0MTYKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMjNFRTAwQkIiCi0JCSAgICBjbGllbnQgICAgIAlANDA1Ci0JCSAgICBzdXBwbGllciAgIAlAMzg1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDE2NDAsIDMzMTgpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMTY0MCwgMjE2NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDQxMCkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBANDE3Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTIzRjMwMTc3IgotCQkgICAgY2xpZW50ICAgICAJQDQwNgotCQkgICAgc3VwcGxpZXIgICAJQDM4NQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSgyNDg0LCAzODg4KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDI0ODQsIDIxNjUpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUA0MTApCi0JCShvYmplY3QgSW5oZXJpdFZpZXcgIiIgQDQxOAotCQkgICAgc3RlcmVvdHlwZSAJVFJVRQotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEUyM0Y3MDIzMiIKLQkJICAgIGNsaWVudCAgICAgCUA0MDcKLQkJICAgIHN1cHBsaWVyICAgCUAzODUKLQkJICAgIGxpbmVfc3R5bGUgCTMKLQkJICAgIG9yaWdpbl9hdHRhY2htZW50IAkoMzI5NiwgMjk0OSkKLQkJICAgIHRlcm1pbmFsX2F0dGFjaG1lbnQgCSgzMjk2LCAyMTY1KQotCQkgICAgZHJhd1N1cHBsaWVyIAlANDEwKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA0MTkKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSI0OTBFMjNGQjAwQ0IiCi0JCSAgICBjbGllbnQgICAgIAlANDA4Ci0JCSAgICBzdXBwbGllciAgIAlAMzg1Ci0JCSAgICBsaW5lX3N0eWxlIAkzCi0JCSAgICBvcmlnaW5fYXR0YWNobWVudCAJKDM3NDksIDMzMDEpCi0JCSAgICB0ZXJtaW5hbF9hdHRhY2htZW50IAkoMzc0OSwgMjE2NSkKLQkJICAgIGRyYXdTdXBwbGllciAJQDQxMCkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBANDIwCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTI0MDUwMTY3IgotCQkgICAgY2xpZW50ICAgICAJQDQwOQotCQkgICAgc3VwcGxpZXIgICAJQDM4NQotCQkgICAgbGluZV9zdHlsZSAJMwotCQkgICAgb3JpZ2luX2F0dGFjaG1lbnQgCSg0Mzg2LCAzNjg1KQotCQkgICAgdGVybWluYWxfYXR0YWNobWVudCAJKDQzODYsIDIxNjUpCi0JCSAgICBkcmF3U3VwcGxpZXIgCUA0MTApKSkKLQkob2JqZWN0IENsYXNzRGlhZ3JhbSAiU2NoZW1hIgotCSAgICBxdWlkICAgICAgIAkiNDkwRTZGRkIwMkVFIgotCSAgICB0aXRsZSAgICAgIAkiU2NoZW1hIgotCSAgICB6b29tICAgICAgIAkxMDAKLQkgICAgbWF4X2hlaWdodCAJMjgzNTAKLQkgICAgbWF4X3dpZHRoICAJMjE2MDAKLQkgICAgb3JpZ2luX3ggICAJMAotCSAgICBvcmlnaW5feSAgIAkwCi0JICAgIGl0ZW1zICAgICAgCShsaXN0IGRpYWdyYW1faXRlbV9saXN0Ci0JCShvYmplY3QgQ2xhc3NWaWV3ICJDbGFzcyIgIkxvZ2ljYWwgVmlldzo6d3NkbDo6WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQiIEA0MjEKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoNjU2LCAxMjgwKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDIxCi0JCQlsb2NhdGlvbiAgIAkoMzM5LCA5NzQpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJNjM0Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQiKQotCQkgICAgaWNvbl9zdHlsZSAJIkljb24iCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNDQzM2MEQ3MDM5QyIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDQyMQotCQkJbG9jYXRpb24gICAJKDMzOSwgMTAzNCkKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTIKLQkJCW1heF93aWR0aCAgCTU0MCkKLQkJICAgIHdpZHRoICAgICAgCTY1MgotCQkgICAgaGVpZ2h0ICAgICAJNjM2Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IENsYXNzVmlldyAiQ2xhc3MiICJMb2dpY2FsIFZpZXc6OndzZGw6OklTY2hlbWEiIEA0MjIKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoMTI5NiwgNDk2KQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDIyCi0JCQlsb2NhdGlvbiAgIAkoNzc1LCA0MzcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTA0MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklTY2hlbWEiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDIyCi0JCQlsb2NhdGlvbiAgIAkoNzc1LCAzODcpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTEwNDIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEU3MUM2MDA2RCIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDQyMgotCQkJbG9jYXRpb24gICAJKDc3NSwgNDk3KQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlmaWxsX2NvbG9yIAkxNjc3NzIxNQotCQkJYW5jaG9yICAgICAJMgotCQkJbmxpbmVzICAgICAJMgotCQkJbWF4X3dpZHRoICAJMTA1MCkKLQkJICAgIHdpZHRoICAgICAgCTEwNjAKLQkJICAgIGhlaWdodCAgICAgCTI0MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBANDIzCi0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiNDk2NTY4OUQwMTI4IgotCQkgICAgY2xpZW50ICAgICAJQDQyMQotCQkgICAgc3VwcGxpZXIgICAJQDQyMgotCQkgICAgbGluZV9zdHlsZSAJMCkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpFeHRlbnNpYmlsaXR5RWxlbWVudCIgQDQyNAotCQkgICAgU2hvd0NvbXBhcnRtZW50U3RlcmVvdHlwZXMgCVRSVUUKLQkJICAgIEluY2x1ZGVBdHRyaWJ1dGUgCVRSVUUKLQkJICAgIEluY2x1ZGVPcGVyYXRpb24gCVRSVUUKLQkJICAgIGxvY2F0aW9uICAgCSg2NTYsIDIwOCkKLQkJICAgIGxhYmVsICAgICAgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQyNAotCQkJbG9jYXRpb24gICAJKDQyNywgMTAyKQotCQkJZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTQ1OAotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIkV4dGVuc2liaWxpdHlFbGVtZW50IikKLQkJICAgIGljb25fc3R5bGUgCSJJY29uIgotCQkgICAgbGluZV9jb2xvciAJMzM0MjQ4OQotCQkgICAgZmlsbF9jb2xvciAJMTM0MzQ4NzkKLQkJICAgIHF1aWR1ICAgICAgCSIzQUQ1REJCNjAyQTkiCi0JCSAgICBjb21wYXJ0bWVudCAJKG9iamVjdCBDb21wYXJ0bWVudAotCQkJUGFyZW50X1ZpZXcgCUA0MjQKLQkJCWxvY2F0aW9uICAgCSg0MjcsIDE2MikKLQkJCWljb25fc3R5bGUgCSJJY29uIgotCQkJZmlsbF9jb2xvciAJMTY3NzcyMTUKLQkJCWFuY2hvciAgICAgCTIKLQkJCW5saW5lcyAgICAgCTMKLQkJCW1heF93aWR0aCAgCTQ2NSkKLQkJICAgIHdpZHRoICAgICAgCTQ3NgotCQkgICAgaGVpZ2h0ICAgICAJMjM2Ci0JCSAgICBhbm5vdGF0aW9uIAk4Ci0JCSAgICBhdXRvUmVzaXplIAlUUlVFKQotCQkob2JqZWN0IEluaGVyaXRWaWV3ICIiIEA0MjUKLQkJICAgIHN0ZXJlb3R5cGUgCVRSVUUKLQkJICAgIGxpbmVfY29sb3IgCTMzNDI0ODkKLQkJICAgIHF1aWR1ICAgICAgCSIzQ0MzNjI3RjAwQjciCi0JCSAgICBjbGllbnQgICAgIAlANDIxCi0JCSAgICBzdXBwbGllciAgIAlANDI0Ci0JCSAgICBsaW5lX3N0eWxlIAkwKSkpCi0JKG9iamVjdCBDbGFzc0RpYWdyYW0gIkpXU0RMIgotCSAgICBxdWlkICAgICAgIAkiNDkwRTcxRjEwMUQ0IgotCSAgICB0aXRsZSAgICAgIAkiSldTREwiCi0JICAgIHpvb20gICAgICAgCTEwMAotCSAgICBtYXhfaGVpZ2h0IAkyODM1MAotCSAgICBtYXhfd2lkdGggIAkyMTYwMAotCSAgICBvcmlnaW5feCAgIAkwCi0JICAgIG9yaWdpbl95ICAgCTAKLQkgICAgaXRlbXMgICAgICAJKGxpc3QgZGlhZ3JhbV9pdGVtX2xpc3QKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJU2NoZW1hIiBANDI2Ci0JCSAgICBTaG93Q29tcGFydG1lbnRTdGVyZW90eXBlcyAJVFJVRQotCQkgICAgSW5jbHVkZUF0dHJpYnV0ZSAJVFJVRQotCQkgICAgSW5jbHVkZU9wZXJhdGlvbiAJVFJVRQotCQkgICAgbG9jYXRpb24gICAJKDk2MCwgODAwKQotCQkgICAgbGFiZWwgICAgICAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDI2Ci0JCQlsb2NhdGlvbiAgIAkoNDM5LCA3NDEpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJbmxpbmVzICAgICAJMQotCQkJbWF4X3dpZHRoICAJMTA0MgotCQkJanVzdGlmeSAgICAJMAotCQkJbGFiZWwgICAgICAJIklTY2hlbWEiKQotCQkgICAgc3RlcmVvdHlwZSAJKG9iamVjdCBJdGVtTGFiZWwKLQkJCVBhcmVudF9WaWV3IAlANDI2Ci0JCQlsb2NhdGlvbiAgIAkoNDM5LCA2OTEpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTEwNDIKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjQ5MEU3MUM2MDA2RCIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDQyNgotCQkJbG9jYXRpb24gICAJKDQzOSwgODAxKQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlmaWxsX2NvbG9yIAkxNjc3NzIxNQotCQkJYW5jaG9yICAgICAJMgotCQkJbmxpbmVzICAgICAJMgotCQkJbWF4X3dpZHRoICAJMTA1MCkKLQkJICAgIHdpZHRoICAgICAgCTEwNjAKLQkJICAgIGhlaWdodCAgICAgCTI0MgotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBDbGFzc1ZpZXcgIkNsYXNzIiAiTG9naWNhbCBWaWV3Ojp3c2RsOjpJRXh0ZW5zaWJpbGl0eUVsZW1lbnQiIEA0MjcKLQkJICAgIFNob3dDb21wYXJ0bWVudFN0ZXJlb3R5cGVzIAlUUlVFCi0JCSAgICBJbmNsdWRlQXR0cmlidXRlIAlUUlVFCi0JCSAgICBJbmNsdWRlT3BlcmF0aW9uIAlUUlVFCi0JCSAgICBsb2NhdGlvbiAgIAkoOTYwLCAyMjQpCi0JCSAgICBsYWJlbCAgICAgIAkob2JqZWN0IEl0ZW1MYWJlbAotCQkJUGFyZW50X1ZpZXcgCUA0MjcKLQkJCWxvY2F0aW9uICAgCSg0MDYsIDE0MikKLQkJCWZpbGxfY29sb3IgCTEzNDM0ODc5Ci0JCQlubGluZXMgICAgIAkxCi0JCQltYXhfd2lkdGggIAkxMTA4Ci0JCQlqdXN0aWZ5ICAgIAkwCi0JCQlsYWJlbCAgICAgIAkiSUV4dGVuc2liaWxpdHlFbGVtZW50IikKLQkJICAgIHN0ZXJlb3R5cGUgCShvYmplY3QgSXRlbUxhYmVsCi0JCQlQYXJlbnRfVmlldyAJQDQyNwotCQkJbG9jYXRpb24gICAJKDQwNiwgOTIpCi0JCQlmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkJYW5jaG9yICAgICAJMTAKLQkJCW5saW5lcyAgICAgCTEKLQkJCW1heF93aWR0aCAgCTExMDgKLQkJCWp1c3RpZnkgICAgCTAKLQkJCWxhYmVsICAgICAgCSI8PEludGVyZmFjZT4+IikKLQkJICAgIGljb24gICAgICAgCSJJbnRlcmZhY2UiCi0JCSAgICBpY29uX3N0eWxlIAkiTGFiZWwiCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBmaWxsX2NvbG9yIAkxMzQzNDg3OQotCQkgICAgcXVpZHUgICAgICAJIjNCODRCMTI0MDJBQiIKLQkJICAgIGNvbXBhcnRtZW50IAkob2JqZWN0IENvbXBhcnRtZW50Ci0JCQlQYXJlbnRfVmlldyAJQDQyNwotCQkJbG9jYXRpb24gICAJKDQwNiwgMjAyKQotCQkJaWNvbl9zdHlsZSAJIkljb24iCi0JCQlmaWxsX2NvbG9yIAkxNjc3NzIxNQotCQkJYW5jaG9yICAgICAJMgotCQkJbmxpbmVzICAgICAJMgotCQkJbWF4X3dpZHRoICAJMTExNSkKLQkJICAgIHdpZHRoICAgICAgCTExMjYKLQkJICAgIGhlaWdodCAgICAgCTI4OAotCQkgICAgYW5ub3RhdGlvbiAJOAotCQkgICAgYXV0b1Jlc2l6ZSAJVFJVRSkKLQkJKG9iamVjdCBJbmhlcml0VmlldyAiIiBANDI4Ci0JCSAgICBzdGVyZW90eXBlIAlUUlVFCi0JCSAgICBsaW5lX2NvbG9yIAkzMzQyNDg5Ci0JCSAgICBxdWlkdSAgICAgIAkiNDkwRTc3N0YwMzJDIgotCQkgICAgY2xpZW50ICAgICAJQDQyNgotCQkgICAgc3VwcGxpZXIgICAJQDQyNwotCQkgICAgbGluZV9zdHlsZSAJMCkpKSkpCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI4Mzc0My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jIFRvIGNvZGUgZGV2ZWxvcGVyOgotIyAgIERvIE5PVCBjaGFuZ2UgdGhlIHByb3BlcnRpZXMgYmV0d2VlbiB0aGlzIGxpbmUgYW5kIHRoZQotIyAgICIlJSUgRU5EIE9GIFRSQU5TTEFURUQgUFJPUEVSVElFUyAlJSUiIGxpbmUuCi0jICAgTWFrZSBhIG5ldyBwcm9wZXJ0eSBuYW1lLCBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBhbmQgY2hhbmdlCi0jICAgdGhlIGNvZGUgdG8gdXNlIHRoZSBuZXcgcHJvcGVydHkuCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgJSUlIEVORCBPRiBUUkFOU0xBVEVEIFBST1BFUlRJRVMgJSUlCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLXBsdWdpbk5hbWUgPSBXU0RMIE1vZGVsCi1wcm92aWRlck5hbWUgPSBFY2xpcHNlLm9yZwotCi14cEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yaWVzID0gV1NETCBFeHRlbnNpYmlsaXR5IEVsZW1lbnQgRmFjdG9yaWVzCi14cFBvcnRBbmRCaW5kaW5nQ29udGVudEdlbmVyYXRvcnMgPSBQb3J0IGFuZCBCaW5kaW5nIENvbnRlbnQgR2VuZXJhdG9ycwoteHBXU0RMQ29udGVudFR5cGUgPSBXU0RMIENvbnRlbnQgVHlwZQotCi1fRVJST1JfSU5WQUxJRF9XU0RMID0gVGhlIGlucHV0IHNvdXJjZSBpcyBub3QgYSB2YWxpZCBXU0RMIGRvY3VtZW50LgotX1VJX0lPRXJyb3JfbWVzc2FnZSA9IElPOiB7MH0KLV9VSV9QYXJzZXJFcnJvcl9tZXNzYWdlID0gRE9NOiB7MH0KLQotX1VJX1Jlc291cmNlTG9hZF9wcm9ncmVzcyA9IExvYWRpbmcgV1NETCBkb2N1bWVudHMgCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3BsdWdpbi54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2NzNkZTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci08cGx1Z2luPgotCi0JPGV4dGVuc2lvbi1wb2ludAotCQlpZD0iZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMiCi0JCW5hbWU9IiV4cEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yaWVzIiAKLQkJc2NoZW1hPSJzY2hlbWEvZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMuZXhzZCIvPgotCTxleHRlbnNpb24tcG9pbnQKLQkJaWQ9ImNvbnRlbnRHZW5lcmF0b3JzIgotCQluYW1lPSIleHBQb3J0QW5kQmluZGluZ0NvbnRlbnRHZW5lcmF0b3JzIiAKLQkJc2NoZW1hPSJzY2hlbWEvY29udGVudEdlbmVyYXRvcnMuZXhzZCIvPgotCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmdlbmVyYXRlZF9wYWNrYWdlIj4KLQkJPHBhY2thZ2UKLSAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlIgotICAgICAgICBnZW5Nb2RlbD0ibW9kZWwvV1NETC5nZW5tb2RlbCIKLSAgICAgICAgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dzZGwvMjAwMy9XU0RMIj4KLQkJPC9wYWNrYWdlPgotCTwvZXh0ZW5zaW9uPgotCi0JPCEtLSAKLQkJVGhpcyBleHRlbnNpb24gaXMgZHVwbGljYXRlZCBoZXJlIHRvIHByb3ZpZGUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCi0JCVRoZSBuYW1lc3BhY2UgVVJJIHdhcyByZW5hbWVkIGZyb20gaHR0cDovL3d3dy5pYm0uY29tL3dzZGwvMjAwMy9XU0RMIHRvCi0JCWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL1dTREwuIAotCSAtLT4KLQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5nZW5lcmF0ZWRfcGFja2FnZSI+Ci0JCTxwYWNrYWdlCi0gICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSIKLSAgICAgICAgZ2VuTW9kZWw9Im1vZGVsL1dTREwuZ2VubW9kZWwiCi0gICAgICAgIHVyaT0iaHR0cDovL3d3dy5pYm0uY29tL3dzZGwvMjAwMy9XU0RMIj4KLQkJPC9wYWNrYWdlPgotCTwvZXh0ZW5zaW9uPgotCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmV4dGVuc2lvbl9wYXJzZXIiPgotCQk8cGFyc2VyCi0JCQl0eXBlPSJ3c2RsIgotCQkJY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWwuV1NETFJlc291cmNlRmFjdG9yeUltcGwiPgotCQk8L3BhcnNlcj4KLQk8L2V4dGVuc2lvbj4KLQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5nZW5lcmF0ZWRfcGFja2FnZSI+Ci0JCTxwYWNrYWdlCi0JCQl1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL0hUVFAiCi0JICAgICAgICBnZW5Nb2RlbD0ibW9kZWwvSFRUUC5nZW5tb2RlbCIKLQkJCWNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UiPgotCQk8L3BhY2thZ2U+Ci0JPC9leHRlbnNpb24+Ci0KLQk8IS0tIAotCQlUaGlzIGV4dGVuc2lvbiBpcyBkdXBsaWNhdGVkIGhlcmUgdG8gcHJvdmlkZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLQkJVGhlIG5hbWVzcGFjZSBVUkkgd2FzIHJlbmFtZWQgZnJvbSBodHRwOi8vd3d3LmlibS5jb20vd3NkbC8yMDAzL0hUVFAgdG8KLQkJaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvSFRUUC4gCi0JIC0tPgotCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmdlbmVyYXRlZF9wYWNrYWdlIj4KLQkJPHBhY2thZ2UKLQkJCXVyaT0iaHR0cDovL3d3dy5pYm0uY29tL3dzZGwvMjAwMy9IVFRQIgotCSAgICAgICAgZ2VuTW9kZWw9Im1vZGVsL0hUVFAuZ2VubW9kZWwiCi0JCQljbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlIj4KLQkJPC9wYWNrYWdlPgotCTwvZXh0ZW5zaW9uPgotCi0JPGV4dGVuc2lvbgotCQlwb2ludD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMiPgotCQk8ZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Ci0JCQluYW1lc3BhY2U9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iCi0JCQljbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLnV0aWwuSFRUUEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSIgLz4KLQk8L2V4dGVuc2lvbj4KLQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5nZW5lcmF0ZWRfcGFja2FnZSI+Ci0JCTxwYWNrYWdlCi0JCQl1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL01JTUUiCi0JICAgICAgICBnZW5Nb2RlbD0ibW9kZWwvTUlNRS5nZW5tb2RlbCIKLQkJCWNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UiPgotCQk8L3BhY2thZ2U+Ci0JPC9leHRlbnNpb24+Ci0KLQk8IS0tIAotCQlUaGlzIGV4dGVuc2lvbiBpcyBkdXBsaWNhdGVkIGhlcmUgdG8gcHJvdmlkZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLQkJVGhlIG5hbWVzcGFjZSBVUkkgd2FzIHJlbmFtZWQgZnJvbSBodHRwOi8vd3d3LmlibS5jb20vd3NkbC8yMDAzL01JTUUgdG8KLQkJaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvTUlNRS4gCi0JIC0tPgotCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmdlbmVyYXRlZF9wYWNrYWdlIj4KLQkJPHBhY2thZ2UKLQkJCXVyaT0iaHR0cDovL3d3dy5pYm0uY29tL3dzZGwvMjAwMy9NSU1FIgotCSAgICAgICAgZ2VuTW9kZWw9Im1vZGVsL01JTUUuZ2VubW9kZWwiCi0JCQljbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlIj4KLQkJPC9wYWNrYWdlPgotCTwvZXh0ZW5zaW9uPgotCi0JPGV4dGVuc2lvbgotCQlwb2ludD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMiPgotCQk8ZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Ci0JCQluYW1lc3BhY2U9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvbWltZS8iCi0JCQljbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLnV0aWwuTUlNRUV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSIgLz4KLQk8L2V4dGVuc2lvbj4KLQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5nZW5lcmF0ZWRfcGFja2FnZSI+Ci0JCTxwYWNrYWdlCi0JCQl1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL1NPQVAiCi0JICAgICAgICBnZW5Nb2RlbD0ibW9kZWwvU09BUC5nZW5tb2RlbCIKLQkJCWNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UiPgotCQk8L3BhY2thZ2U+Ci0JPC9leHRlbnNpb24+Ci0KLQk8IS0tIAotCQlUaGlzIGV4dGVuc2lvbiBpcyBkdXBsaWNhdGVkIGhlcmUgdG8gcHJvdmlkZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLQkJVGhlIG5hbWVzcGFjZSBVUkkgd2FzIHJlbmFtZWQgZnJvbSBodHRwOi8vd3d3LmlibS5jb20vd3NkbC8yMDAzL1NPQVAgdG8KLQkJaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvU09BUC4gCi0JIC0tPgotCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmdlbmVyYXRlZF9wYWNrYWdlIj4KLQkJPHBhY2thZ2UKLQkJCXVyaT0iaHR0cDovL3d3dy5pYm0uY29tL3dzZGwvMjAwMy9TT0FQIgotCSAgICAgICAgZ2VuTW9kZWw9Im1vZGVsL1NPQVAuZ2VubW9kZWwiCi0JCQljbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlIj4KLQkJPC9wYWNrYWdlPgotCTwvZXh0ZW5zaW9uPgotCi0JPGV4dGVuc2lvbgotCQlwb2ludD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMiPgotCQk8ZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Ci0JCQluYW1lc3BhY2U9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JCQljbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLnV0aWwuU09BUEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSIgLz4KLQk8L2V4dGVuc2lvbj4KLQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmNvbnRlbnRHZW5lcmF0b3JzIj4KLQkJPGNvbnRlbnRHZW5lcmF0b3IKLQkJCW5hbWU9IlNPQVAiCi0JCQluYW1lc3BhY2U9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JCQljbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmdlbmVyYXRvci5TT0FQQ29udGVudEdlbmVyYXRvciI+Ci0JCTwvY29udGVudEdlbmVyYXRvcj4KLQk8L2V4dGVuc2lvbj4KLQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmNvbnRlbnRHZW5lcmF0b3JzIj4KLQkJPGNvbnRlbnRHZW5lcmF0b3IKLQkJCW5hbWU9IkhUVFAiCi0JCQluYW1lc3BhY2U9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iCi0JCQljbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmdlbmVyYXRvci5IVFRQQ29udGVudEdlbmVyYXRvciI+Ci0JCTwvY29udGVudEdlbmVyYXRvcj4KLQk8L2V4dGVuc2lvbj4KLQotCi0KLQk8IS0tIGRlZmluZSBhIHdzZGwgY29udGVudCB0eXBlIC0tPgotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmNvcmUuY29udGVudHR5cGUuY29udGVudFR5cGVzIj4KLQkJPGNvbnRlbnQtdHlwZQotCQkJcHJpb3JpdHk9ImhpZ2giCi0JCQluYW1lPSIleHBXU0RMQ29udGVudFR5cGUiCi0JCQlpZD0id3NkbHNvdXJjZSIKLQkJCWJhc2UtdHlwZT0ib3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLnhtbCIKLQkJCWRlZmF1bHQtY2hhcnNldD0iVVRGLTgiCi0JCQlmaWxlLWV4dGVuc2lvbnM9IndzZGwiIC8+Ci0JPC9leHRlbnNpb24+Ci08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc2NoZW1hL2NvbnRlbnRHZW5lcmF0b3JzLmV4c2QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NjaGVtYS9jb250ZW50R2VuZXJhdG9ycy5leHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTJhNDQ3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc2NoZW1hL2NvbnRlbnRHZW5lcmF0b3JzLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPgotPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNjaGVtYSBwbHVnaW49Im9yZy5lY2xpcHNlLndzdC53c2RsIiBpZD0iY29udGVudEdlbmVyYXRvcnMiIG5hbWU9IlBvcnQgYW5kIEJpbmRpbmcgQ29udGVudCBHZW5lcmF0b3JzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoZSBQb3J0IGFuZCBCaW5kaW5nIENvbnRlbnQgR2VuZXJhdG9ycyBleHRlbnNpb24gcG9pbnQgYWxsb3dzIGNsaWVudHMgdG8gcmVnaXN0ZXIgY3VzdG9tIGdlbmVyYXRvcnMgZm9yIFBvcnRzIGFuZCBCaW5kaW5ncy4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaW9uIj4KLSAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICBUaGUgUG9ydCBhbmQgQmluZGluZyBDb250ZW50IEdlbmVyYXRvcnMgZXh0ZW5zaW9uIHBvaW50IGFsbG93cyBjbGllbnRzIHRvIHJlZ2lzdGVyIGN1c3RvbSBjb250ZW50IGdlbmVyYXRvcnMgZm9yIFdTREwgUG9ydHMgYW5kIEJpbmRpbmdzLgotICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJjb250ZW50R2VuZXJhdG9yIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwb2ludCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhIGZ1bGx5IHF1YWxpZmllZCBpZGVudGlmaWVyIG9mIHRoZSB0YXJnZXQgZXh0ZW5zaW9uIHBvaW50Ci0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYW4gb3B0aW9uYWwgaWRlbnRpZmllciBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBhbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2UKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIHRyYW5zbGF0YWJsZT0idHJ1ZSIvPgotICAgICAgICAgICAgICAgPC9hcHBJbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJjb250ZW50R2VuZXJhdG9yIj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBOYW1lIHVzZWQgZm9yIHRoaXMgcGFydGljdWxhciBleHRlbnNpb24gcG9pbnQgaW5zdGFuY2UuCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoZSBuYW1lc3BhY2UgdGhpcyBleHRlbnNpb24gcG9pbnQgaW5zdGFuY2UgYXBwbGllcyB0by4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzICZsdDtjb2RlJmd0O29yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvci5Db250ZW50R2VuZXJhdG9yJmx0Oy9jb2RlJmd0Oy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIGtpbmQ9ImphdmEiLz4KLSAgICAgICAgICAgICAgIDwvYXBwSW5mbz4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0ic2luY2UiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgJmx0O2ImZ3Q7VGhpcyBleHRlbnNpb24gcG9pbnQgaXMgaW50ZXJuYWwgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBieSBhbnkgb3RoZXIgcGx1Z2lucy4mbHQ7L2ImZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIGNvbnRlbnQgZ2VuZXJhdG9yIGNvbnRyaWJ1dGlvbjoKLSZsdDtwcmUmZ3Q7Ci0gICAmbHQ7ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0mcXVvdDtvcmcuZWNsaXBzZS53c3Qud3NkbC5jb250ZW50R2VuZXJhdG9ycyZxdW90OyZndDsKLSAgICAgICZsdDtjb250ZW50R2VuZXJhdG9yCi0gICAgICAgICAgICBuYW1lPSZxdW90O1NPQVAmcXVvdDsKLSAgICAgICAgICAgIG5hbWVzcGFjZT0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvJnF1b3Q7Ci0gICAgICAgICAgICBjbGFzcz0mcXVvdDtvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuZ2VuZXJhdG9yLlNPQVBDb250ZW50R2VuZXJhdG9yJnF1b3Q7LyZndDsKLSAgICZsdDsvZXh0ZW5zaW9uJmd0OwotJmx0Oy9wcmUmZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImFwaUluZm8iLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgVGhlIHN1cHBsaWVkIGNsYXNzIG11c3QgaW1wbGVtZW50ICZsdDtjb2RlJmd0O29yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvci5Db250ZW50R2VuZXJhdG9yJmx0Oy9jb2RlJmd0Oy4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iY29weXJpZ2h0Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4mbHQ7YnImZ3Q7Ci1BbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIAotYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIAotdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgJmx0O2EKLWhyZWY9JnF1b3Q7aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwmcXVvdDsmZ3Q7aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwmbHQ7L2EmZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLTwvc2NoZW1hPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zY2hlbWEvZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMuZXhzZCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc2NoZW1hL2V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yaWVzLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNDU1N2UuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zY2hlbWEvZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMuZXhzZAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/PgotPCEtLSBTY2hlbWEgZmlsZSB3cml0dGVuIGJ5IFBERSAtLT4KLTxzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJvcmcuZWNsaXBzZS53c3Qud3NkbCI+Ci08YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2NoZW1hIHBsdWdpbj0ib3JnLmVjbGlwc2Uud3N0LndzZGwiIGlkPSJleHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcmllcyIgbmFtZT0iV1NETCBFeHRlbnNpYmlsaXR5IEVsZW1lbnQgRmFjdG9yaWVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoZSBXU0RMIEV4dGVuc2liaWxpdHkgRWxlbWVudCBGYWN0b3JpZXMgZXh0ZW5zaW9uIHBvaW50IGFsbG93cyBjbGllbnRzIHRvIHJlZ2lzdGVyIGZhY3RvcmllcyBmb3IgY3JlYXRpbmcgY3VzdG9tIGV4dGVuc2liaWxpdHkgZWxlbWVudHMuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImV4dGVuc2lvbiI+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8c2VxdWVuY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9ImV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSIvPgotICAgICAgICAgPC9zZXF1ZW5jZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9pbnQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYSBmdWxseSBxdWFsaWZpZWQgaWRlbnRpZmllciBvZiB0aGUgdGFyZ2V0IGV4dGVuc2lvbiBwb2ludAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIGlkZW50aWZpZXIgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZQotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgYW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICA8YXBwSW5mbz4KLSAgICAgICAgICAgICAgICAgIDxtZXRhLmF0dHJpYnV0ZSB0cmFuc2xhdGFibGU9InRydWUiLz4KLSAgICAgICAgICAgICAgIDwvYXBwSW5mbz4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0iZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Ij4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIFRoZSBuYW1lc3BhY2UgdGhpcyBleHRlbnNpb24gcG9pbnQgaW5zdGFuY2UgYXBwbGllcyB0by4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICBUaGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzICZsdDtjb2RlJmd0O29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Jmx0Oy9jb2RlJmd0Oy4KLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIGtpbmQ9ImphdmEiLz4KLSAgICAgICAgICAgICAgIDwvYXBwSW5mbz4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0ic2luY2UiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgJmx0O2ImZ3Q7VGhpcyBleHRlbnNpb24gcG9pbnQgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBleHBlY3RlZCB0byBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sgZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4gKHJlcGVhdGVkbHkpIGFzIHRoZSBBUEkgZXZvbHZlcy4mbHQ7L2ImZ3Q7Ci0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhbiBleHRlbnNpYmlsaXR5IGVsZW1lbnQgZmFjdG9yeSBjb250cmlidXRpb246Ci0mbHQ7cHJlJmd0OwotICAgJmx0O2V4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9JnF1b3Q7b3JnLmVjbGlwc2Uud3N0LndzZGwuZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMmcXVvdDsmZ3Q7Ci0gICAgICAmbHQ7ZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Ci0gICAgICAgICAgICBuYW1lc3BhY2U9JnF1b3Q7aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyZxdW90OwotICAgICAgICAgICAgY2xhc3M9JnF1b3Q7b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLnV0aWwuU09BUEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSZxdW90Oy8mZ3Q7Ci0gICAmbHQ7L2V4dGVuc2lvbiZndDsKLSZsdDsvcHJlJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJhcGlJbmZvIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoZSBzdXBwbGllZCBjbGFzcyBtdXN0IGltcGxlbWVudCAmbHQ7Y29kZSZndDtvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSZsdDsvY29kZSZndDsuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImNvcHlyaWdodCIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0O2JyJmd0OwotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSAKLWF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyAKLXRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICZsdDthCi1ocmVmPSZxdW90O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJnF1b3Q7Jmd0O2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sJmx0Oy9hJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzhkYTIxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5BZGRyZXNzPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQQWRkcmVzcyNnZXRMb2NhdGlvblVSSSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UjZ2V0SFRUUEFkZHJlc3MoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5JSFRUUEFkZHJlc3MiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSFRUUEFkZHJlc3MgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3MKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TG9jYXRpb24gVVJJPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRMb2NhdGlvblVSSShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlI2dldEhUVFBBZGRyZXNzX0xvY2F0aW9uVVJJKCkKLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBnZXRMb2NhdGlvblVSSSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEFkZHJlc3MjZ2V0TG9jYXRpb25VUkkgPGVtPkxvY2F0aW9uIFVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TG9jYXRpb24gVVJJPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0TG9jYXRpb25VUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldExvY2F0aW9uVVJJKFN0cmluZyB2YWx1ZSk7Ci0KLX0gLy8gSFRUUEFkZHJlc3MKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWU5MzYyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQQmluZGluZyNnZXRWZXJiIDxlbT5WZXJiPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UjZ2V0SFRUUEJpbmRpbmcoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5JSFRUUEJpbmRpbmciCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSFRUUEJpbmRpbmcgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmcKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlZlcmI8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlZlcmI8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlZlcmI8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRWZXJiKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UjZ2V0SFRUUEJpbmRpbmdfVmVyYigpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0VmVyYigpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEJpbmRpbmcjZ2V0VmVyYiA8ZW0+VmVyYjwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VmVyYjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldFZlcmIoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldFZlcmIoU3RyaW5nIHZhbHVlKTsKLQotfSAvLyBIVFRQQmluZGluZwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlODI4ZGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRmFjdG9yeTsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBUaGUgPGI+RmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4KLSAqIEl0IHByb3ZpZGVzIGEgY3JlYXRlIG1ldGhvZCBmb3IgZWFjaCBub24tYWJzdHJhY3QgY2xhc3Mgb2YgdGhlIG1vZGVsLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIEhUVFBGYWN0b3J5IGV4dGVuZHMgRUZhY3RvcnkKLXsKLSAgLyoqCi0gICAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBIVFRQRmFjdG9yeSBlSU5TVEFOQ0UgPSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQRmFjdG9yeUltcGwuaW5pdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmc8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmc8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEhUVFBCaW5kaW5nIGNyZWF0ZUhUVFBCaW5kaW5nKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5PcGVyYXRpb248L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEhUVFBPcGVyYXRpb24gY3JlYXRlSFRUUE9wZXJhdGlvbigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlVybCBSZXBsYWNlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VXJsIFJlcGxhY2VtZW50PC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBIVFRQVXJsUmVwbGFjZW1lbnQgY3JlYXRlSFRUUFVybFJlcGxhY2VtZW50KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VXJsIEVuY29kZWQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlVybCBFbmNvZGVkPC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBIVFRQVXJsRW5jb2RlZCBjcmVhdGVIVFRQVXJsRW5jb2RlZCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkFkZHJlc3M8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkFkZHJlc3M8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEhUVFBBZGRyZXNzIGNyZWF0ZUhUVFBBZGRyZXNzKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgSFRUUFBhY2thZ2UgZ2V0SFRUUFBhY2thZ2UoKTsKLQotfSAvL0hUVFBGYWN0b3J5CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhN2IwY2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQT3BlcmF0aW9uI2dldExvY2F0aW9uVVJJIDxlbT5Mb2NhdGlvbiBVUkk8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZSNnZXRIVFRQT3BlcmF0aW9uKCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSUhUVFBPcGVyYXRpb24iCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSFRUUE9wZXJhdGlvbiBleHRlbmRzIEV4dGVuc2liaWxpdHlFbGVtZW50LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQT3BlcmF0aW9uCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TG9jYXRpb24gVVJJPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0TG9jYXRpb25VUkkoU3RyaW5nKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZSNnZXRIVFRQT3BlcmF0aW9uX0xvY2F0aW9uVVJJKCkKLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBnZXRMb2NhdGlvblVSSSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUE9wZXJhdGlvbiNnZXRMb2NhdGlvblVSSSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXRMb2NhdGlvblVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0TG9jYXRpb25VUkkoU3RyaW5nIHZhbHVlKTsKLQotfSAvLyBIVFRQT3BlcmF0aW9uCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjY2E5MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzUzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLgotICogSXQgY29udGFpbnMgYWNjZXNzb3JzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRvIHJlcHJlc2VudAotICogPHVsPgotICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPgotICogICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4KLSAqICAgPGxpPmVhY2ggZW51bSw8L2xpPgotICogICA8bGk+YW5kIGVhY2ggZGF0YSB0eXBlPC9saT4KLSAqIDwvdWw+Ci0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBGYWN0b3J5Ci0gKiBAbW9kZWwga2luZD0icGFja2FnZSIKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBIVFRQUGFja2FnZSBleHRlbmRzIEVQYWNrYWdlCi17Ci0gIC8qKgotICAgKiBUaGUgcGFja2FnZSBuYW1lLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGVOQU1FID0gImh0dHAiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZU5TX1VSSSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dzZGwvMjAwMy9IVFRQIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBlTlNfUFJFRklYID0gImh0dHAiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBIVFRQUGFja2FnZSBlSU5TVEFOQ0UgPSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQUGFja2FnZUltcGwuaW5pdCgpOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBCaW5kaW5nSW1wbCA8ZW0+QmluZGluZzwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBCaW5kaW5nSW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBQYWNrYWdlSW1wbCNnZXRIVFRQQmluZGluZygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBIVFRQX0JJTkRJTkcgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBIVFRQX0JJTkRJTkdfX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEhUVFBfQklORElOR19fUkVRVUlSRUQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9CSU5ESU5HX19FTEVNRU5UX1RZUEUgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlZlcmI8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBIVFRQX0JJTkRJTkdfX1ZFUkIgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5CaW5kaW5nPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEhUVFBfQklORElOR19GRUFUVVJFX0NPVU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBPcGVyYXRpb25JbXBsIDxlbT5PcGVyYXRpb248L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQT3BlcmF0aW9uSW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBQYWNrYWdlSW1wbCNnZXRIVFRQT3BlcmF0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IEhUVFBfT1BFUkFUSU9OID0gMTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEhUVFBfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBIVFRQX09QRVJBVElPTl9fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9PUEVSQVRJT05fX1JFUVVJUkVEID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEhUVFBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEUgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkkgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5PcGVyYXRpb248L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQVXJsUmVwbGFjZW1lbnRJbXBsIDxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQVXJsUmVwbGFjZW1lbnRJbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFBhY2thZ2VJbXBsI2dldEhUVFBVcmxSZXBsYWNlbWVudCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBIVFRQX1VSTF9SRVBMQUNFTUVOVCA9IDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBIVFRQX1VSTF9SRVBMQUNFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9VUkxfUkVQTEFDRU1FTlRfX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEhUVFBfVVJMX1JFUExBQ0VNRU5UX19SRVFVSVJFRCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBIVFRQX1VSTF9SRVBMQUNFTUVOVF9fRUxFTUVOVF9UWVBFID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9VUkxfUkVQTEFDRU1FTlRfRkVBVFVSRV9DT1VOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQVXJsRW5jb2RlZEltcGwgPGVtPlVybCBFbmNvZGVkPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFVybEVuY29kZWRJbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFBhY2thZ2VJbXBsI2dldEhUVFBVcmxFbmNvZGVkKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IEhUVFBfVVJMX0VOQ09ERUQgPSAzOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9VUkxfRU5DT0RFRF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9VUkxfRU5DT0RFRF9fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9VUkxfRU5DT0RFRF9fUkVRVUlSRUQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9VUkxfRU5DT0RFRF9fRUxFTUVOVF9UWVBFID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5VcmwgRW5jb2RlZDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUEFkZHJlc3NJbXBsIDxlbT5BZGRyZXNzPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUEFkZHJlc3NJbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFBhY2thZ2VJbXBsI2dldEhUVFBBZGRyZXNzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IEhUVFBfQUREUkVTUyA9IDQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBIVFRQX0FERFJFU1NfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEhUVFBfQUREUkVTU19fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9BRERSRVNTX19SRVFVSVJFRCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBIVFRQX0FERFJFU1NfX0VMRU1FTlRfVFlQRSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkkgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5BZGRyZXNzPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEhUVFBfQUREUkVTU19GRUFUVVJFX0NPVU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIDxlbT5JSFRUUCBBZGRyZXNzPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3MKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQUGFja2FnZUltcGwjZ2V0SUhUVFBBZGRyZXNzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElIVFRQX0FERFJFU1MgPSA1OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUhUVFAgQWRkcmVzczwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJSFRUUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nIDxlbT5JSFRUUCBCaW5kaW5nPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmcKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQUGFja2FnZUltcGwjZ2V0SUhUVFBCaW5kaW5nKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElIVFRQX0JJTkRJTkcgPSA2OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUhUVFAgQmluZGluZzwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJSFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb24gPGVtPklIVFRQIE9wZXJhdGlvbjwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb24KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQUGFja2FnZUltcGwjZ2V0SUhUVFBPcGVyYXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSUhUVFBfT1BFUkFUSU9OID0gNzsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklIVFRQIE9wZXJhdGlvbjwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJSFRUUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCA9IDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybEVuY29kZWQgPGVtPklIVFRQIFVybCBFbmNvZGVkPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybEVuY29kZWQKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQUGFja2FnZUltcGwjZ2V0SUhUVFBVcmxFbmNvZGVkKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElIVFRQX1VSTF9FTkNPREVEID0gODsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklIVFRQIFVybCBFbmNvZGVkPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudCA8ZW0+SUhUVFAgVXJsIFJlcGxhY2VtZW50PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFBhY2thZ2VJbXBsI2dldElIVFRQVXJsUmVwbGFjZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSUhUVFBfVVJMX1JFUExBQ0VNRU5UID0gOTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklIVFRQIFVybCBSZXBsYWNlbWVudDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJSFRUUF9VUkxfUkVQTEFDRU1FTlRfRkVBVFVSRV9DT1VOVCA9IDA7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQQmluZGluZyA8ZW0+QmluZGluZzwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQQmluZGluZwotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SFRUUEJpbmRpbmcoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEJpbmRpbmcjZ2V0VmVyYiA8ZW0+VmVyYjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlZlcmI8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBCaW5kaW5nI2dldFZlcmIoKQotICAgKiBAc2VlICNnZXRIVFRQQmluZGluZygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0SFRUUEJpbmRpbmdfVmVyYigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUE9wZXJhdGlvbiA8ZW0+T3BlcmF0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUE9wZXJhdGlvbgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SFRUUE9wZXJhdGlvbigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQT3BlcmF0aW9uI2dldExvY2F0aW9uVVJJIDxlbT5Mb2NhdGlvbiBVUkk8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBPcGVyYXRpb24jZ2V0TG9jYXRpb25VUkkoKQotICAgKiBAc2VlICNnZXRIVFRQT3BlcmF0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRIVFRQT3BlcmF0aW9uX0xvY2F0aW9uVVJJKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQgPGVtPlVybCBSZXBsYWNlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SFRUUFVybFJlcGxhY2VtZW50KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsRW5jb2RlZCA8ZW0+VXJsIEVuY29kZWQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+VXJsIEVuY29kZWQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBVcmxFbmNvZGVkCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRIVFRQVXJsRW5jb2RlZCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEFkZHJlc3MgPGVtPkFkZHJlc3M8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QWRkcmVzczwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEFkZHJlc3MKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldEhUVFBBZGRyZXNzKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBBZGRyZXNzI2dldExvY2F0aW9uVVJJIDxlbT5Mb2NhdGlvbiBVUkk8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBBZGRyZXNzI2dldExvY2F0aW9uVVJJKCkKLSAgICogQHNlZSAjZ2V0SFRUUEFkZHJlc3MoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldEhUVFBBZGRyZXNzX0xvY2F0aW9uVVJJKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIDxlbT5JSFRUUCBBZGRyZXNzPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklIVFRQIEFkZHJlc3M8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3MKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SUhUVFBBZGRyZXNzKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nIDxlbT5JSFRUUCBCaW5kaW5nPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklIVFRQIEJpbmRpbmc8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmcKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SUhUVFBCaW5kaW5nKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb24gPGVtPklIVFRQIE9wZXJhdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JSFRUUCBPcGVyYXRpb248L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbgotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbiIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElIVFRQT3BlcmF0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkIDxlbT5JSFRUUCBVcmwgRW5jb2RlZDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JSFRUUCBVcmwgRW5jb2RlZDwvZW0+Jy4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsRW5jb2RlZAotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybEVuY29kZWQiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRJSFRUUFVybEVuY29kZWQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50IDxlbT5JSFRUUCBVcmwgUmVwbGFjZW1lbnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUhUVFAgVXJsIFJlcGxhY2VtZW50PC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudAotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SUhUVFBVcmxSZXBsYWNlbWVudCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBIVFRQRmFjdG9yeSBnZXRIVFRQRmFjdG9yeSgpOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBEZWZpbmVzIGxpdGVyYWxzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRoYXQgcmVwcmVzZW50Ci0gICAqIDx1bD4KLSAgICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPgotICAgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPgotICAgKiAgIDxsaT5lYWNoIGVudW0sPC9saT4KLSAgICogICA8bGk+YW5kIGVhY2ggZGF0YSB0eXBlPC9saT4KLSAgICogPC91bD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludGVyZmFjZSBMaXRlcmFscwotICB7Ci0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBCaW5kaW5nSW1wbCA8ZW0+QmluZGluZzwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBCaW5kaW5nSW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFBhY2thZ2VJbXBsI2dldEhUVFBCaW5kaW5nKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIEhUVFBfQklORElORyA9IGVJTlNUQU5DRS5nZXRIVFRQQmluZGluZygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlZlcmI8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgSFRUUF9CSU5ESU5HX19WRVJCID0gZUlOU1RBTkNFLmdldEhUVFBCaW5kaW5nX1ZlcmIoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQT3BlcmF0aW9uSW1wbCA8ZW0+T3BlcmF0aW9uPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUE9wZXJhdGlvbkltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBQYWNrYWdlSW1wbCNnZXRIVFRQT3BlcmF0aW9uKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIEhUVFBfT1BFUkFUSU9OID0gZUlOU1RBTkNFLmdldEhUVFBPcGVyYXRpb24oKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgSFRUUF9PUEVSQVRJT05fX0xPQ0FUSU9OX1VSSSA9IGVJTlNUQU5DRS5nZXRIVFRQT3BlcmF0aW9uX0xvY2F0aW9uVVJJKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFVybFJlcGxhY2VtZW50SW1wbCA8ZW0+VXJsIFJlcGxhY2VtZW50PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFVybFJlcGxhY2VtZW50SW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFBhY2thZ2VJbXBsI2dldEhUVFBVcmxSZXBsYWNlbWVudCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBIVFRQX1VSTF9SRVBMQUNFTUVOVCA9IGVJTlNUQU5DRS5nZXRIVFRQVXJsUmVwbGFjZW1lbnQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQVXJsRW5jb2RlZEltcGwgPGVtPlVybCBFbmNvZGVkPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFVybEVuY29kZWRJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQUGFja2FnZUltcGwjZ2V0SFRUUFVybEVuY29kZWQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSFRUUF9VUkxfRU5DT0RFRCA9IGVJTlNUQU5DRS5nZXRIVFRQVXJsRW5jb2RlZCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBBZGRyZXNzSW1wbCA8ZW0+QWRkcmVzczwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBBZGRyZXNzSW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFBhY2thZ2VJbXBsI2dldEhUVFBBZGRyZXNzKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIEhUVFBfQUREUkVTUyA9IGVJTlNUQU5DRS5nZXRIVFRQQWRkcmVzcygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBIVFRQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSSA9IGVJTlNUQU5DRS5nZXRIVFRQQWRkcmVzc19Mb2NhdGlvblVSSSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIDxlbT5JSFRUUCBBZGRyZXNzPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3MKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBQYWNrYWdlSW1wbCNnZXRJSFRUUEFkZHJlc3MoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSUhUVFBfQUREUkVTUyA9IGVJTlNUQU5DRS5nZXRJSFRUUEFkZHJlc3MoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQmluZGluZyA8ZW0+SUhUVFAgQmluZGluZzwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQUGFja2FnZUltcGwjZ2V0SUhUVFBCaW5kaW5nKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElIVFRQX0JJTkRJTkcgPSBlSU5TVEFOQ0UuZ2V0SUhUVFBCaW5kaW5nKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbiA8ZW0+SUhUVFAgT3BlcmF0aW9uPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUFBhY2thZ2VJbXBsI2dldElIVFRQT3BlcmF0aW9uKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElIVFRQX09QRVJBVElPTiA9IGVJTlNUQU5DRS5nZXRJSFRUUE9wZXJhdGlvbigpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkIDxlbT5JSFRUUCBVcmwgRW5jb2RlZDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQUGFja2FnZUltcGwjZ2V0SUhUVFBVcmxFbmNvZGVkKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElIVFRQX1VSTF9FTkNPREVEID0gZUlOU1RBTkNFLmdldElIVFRQVXJsRW5jb2RlZCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudCA8ZW0+SUhUVFAgVXJsIFJlcGxhY2VtZW50PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQUGFja2FnZUltcGwjZ2V0SUhUVFBVcmxSZXBsYWNlbWVudCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJSFRUUF9VUkxfUkVQTEFDRU1FTlQgPSBlSU5TVEFOQ0UuZ2V0SUhUVFBVcmxSZXBsYWNlbWVudCgpOwotCi0gIH0KLQotfSAvL0hUVFBQYWNrYWdlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNjNmIyOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VXJsIEVuY29kZWQ8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlI2dldEhUVFBVcmxFbmNvZGVkKCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSUhUVFBVcmxFbmNvZGVkIgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIEhUVFBVcmxFbmNvZGVkIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkCi17Ci19IC8vIEhUVFBVcmxFbmNvZGVkCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzE4YmM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VXJsIFJlcGxhY2VtZW50PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZSNnZXRIVFRQVXJsUmVwbGFjZW1lbnQoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5JSFRUUFVybFJlcGxhY2VtZW50IgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIEhUVFBVcmxSZXBsYWNlbWVudCBleHRlbmRzIEV4dGVuc2liaWxpdHlFbGVtZW50LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQKLXsKLX0gLy8gSFRUUFVybFJlcGxhY2VtZW50CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC9nZW5lcmF0b3IvSFRUUENvbnRlbnRHZW5lcmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2dlbmVyYXRvci9IVFRQQ29udGVudEdlbmVyYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmFhNTEzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2dlbmVyYXRvci9IVFRQQ29udGVudEdlbmVyYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmdlbmVyYXRvcjsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEFkZHJlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFVybEVuY29kZWQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuZ2VuZXJhdG9yLkNvbnRlbnRHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi1wdWJsaWMgY2xhc3MgSFRUUENvbnRlbnRHZW5lcmF0b3IgaW1wbGVtZW50cyBDb250ZW50R2VuZXJhdG9yCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFZFUkJfUE9TVCA9IDA7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVkVSQl9HRVQgPSAxOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFZFUkJfTk9UX1NFVCA9IC0xOwotCi0gIHByaXZhdGUgaW50IHZlcmJPcHRpb24gPSBWRVJCX05PVF9TRVQ7Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBhZGRyZXNzTG9jYXRpb24gPSBDb250ZW50R2VuZXJhdG9yLkFERFJFU1NfTE9DQVRJT047Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIHN0YXRpYyBTdHJpbmdbXSByZXF1aXJlZE5hbWVzcGFjZXMgPSB7ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL21pbWUvIiwgImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIH07Ci0KLSAgcHVibGljIHZvaWQgc2V0VmVyYihpbnQgdmVyYikKLSAgewotICAgIHZlcmJPcHRpb24gPSB2ZXJiOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0QWRkcmVzc0xvY2F0aW9uKFN0cmluZyBhZGRyZXNzTG9jYXRpb24pCi0gIHsKLSAgICB0aGlzLmFkZHJlc3NMb2NhdGlvbiA9IGFkZHJlc3NMb2NhdGlvbjsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRSZXF1aXJlZE5hbWVzcGFjZXMoKQotICB7Ci0gICAgcmV0dXJuIHJlcXVpcmVkTmFtZXNwYWNlczsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJlZmVycmVkTmFtZXNwYWNlUHJlZml4KFN0cmluZyBuYW1lc3BhY2UpCi0gIHsKLSAgICBpZiAobmFtZXNwYWNlLmVxdWFscygiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIpKQotICAgIHsKLSAgICAgIHJldHVybiAibWltZSI7Ci0gICAgfQotICAgIGVsc2UgaWYgKG5hbWVzcGFjZS5lcXVhbHMoImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iKSkKLSAgICB7Ci0gICAgICByZXR1cm4gImh0dHAiOwotICAgIH0KLQotICAgIHJldHVybiAiIjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlUG9ydENvbnRlbnQoUG9ydCBwb3J0KQotICB7Ci0gICAgLy8gV2UgYmxvdyBhd2F5IGFueSBleGlzdGluZyBFeHRlbnNpYmlsaXR5RWxlbWVudHMvY29udGVudCBiZWZvcmUgd2UgZ2VuZXJhdGUgaXQKLSAgICAvLyBJcyBpdCB3b3J0aCBiZWluZyBzbWFydGVyPyAgTG9vayBmb3IgbWF0Y2hpbmcgY29udGVudCBmaXJzdCBhbmQgY3JlYXRlIHRob3NlIHdoaWNoIGFyZW4ndCBmb3VuZD8/Pz8KLSAgICBMaXN0IHJlbW92ZUxpc3QgPSBuZXcgQXJyYXlMaXN0KHBvcnQuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICByZW1vdmVFeHRlbnNlYmlsaXR5RWxlbWVudHMocG9ydC5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCksIHJlbW92ZUxpc3QpOwotCi0gICAgSFRUUEFkZHJlc3MgaHR0cEFkZHJlc3MgPSBIVFRQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlSFRUUEFkZHJlc3MoKTsKLSAgICBodHRwQWRkcmVzcy5zZXRMb2NhdGlvblVSSShhZGRyZXNzTG9jYXRpb24pOwotICAgIHBvcnQuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoaHR0cEFkZHJlc3MpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZ2VuZXJhdGVCaW5kaW5nQ29udGVudChCaW5kaW5nIGJpbmRpbmcsIFBvcnRUeXBlIHBvcnRUeXBlKQotICB7Ci0gICAgLy8gV2UgYmxvdyBhd2F5IGFueSBleGlzdGluZyBFeHRlbnNpYmlsaXR5RWxlbWVudHMvY29udGVudCBiZWZvcmUgd2UgZ2VuZXJhdGUgaXQKLSAgICAvLyBJcyBpdCB3b3J0aCBiZWluZyBzbWFydGVyPyAgTG9vayBmb3IgbWF0Y2hpbmcgY29udGVudCBmaXJzdCBhbmQgY3JlYXRlIHRob3NlIHdoaWNoIGFyZW4ndCBmb3VuZD8/Pz8KLSAgICBMaXN0IHJlbW92ZUxpc3QgPSBuZXcgQXJyYXlMaXN0KGJpbmRpbmcuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICByZW1vdmVFeHRlbnNlYmlsaXR5RWxlbWVudHMoYmluZGluZy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCksIHJlbW92ZUxpc3QpOwotCi0gICAgSFRUUEJpbmRpbmcgaHR0cEJpbmRpbmcgPSBIVFRQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlSFRUUEJpbmRpbmcoKTsKLSAgICBodHRwQmluZGluZy5zZXRWZXJiKGdldFZlcmJPcHRpb24oYmluZGluZykgPT0gVkVSQl9QT1NUID8gIlBPU1QiIDogIkdFVCIpOwotCi0gICAgYmluZGluZy5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChodHRwQmluZGluZyk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBnZW5lcmF0ZUJpbmRpbmdPcGVyYXRpb25Db250ZW50KEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uIG9wZXJhdGlvbikKLSAgewotICAgIC8vIFdlIGJsb3cgYXdheSBhbnkgZXhpc3RpbmcgRXh0ZW5zaWJpbGl0eUVsZW1lbnRzL2NvbnRlbnQgYmVmb3JlIHdlIGdlbmVyYXRlIGl0Ci0gICAgLy8gSXMgaXQgd29ydGggYmVpbmcgc21hcnRlcj8gIExvb2sgZm9yIG1hdGNoaW5nIGNvbnRlbnQgZmlyc3QgYW5kIGNyZWF0ZSB0aG9zZSB3aGljaCBhcmVuJ3QgZm91bmQ/Pz8/Ci0gICAgTGlzdCByZW1vdmVMaXN0ID0gbmV3IEFycmF5TGlzdChiaW5kaW5nT3BlcmF0aW9uLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgcmVtb3ZlRXh0ZW5zZWJpbGl0eUVsZW1lbnRzKGJpbmRpbmdPcGVyYXRpb24uZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpLCByZW1vdmVMaXN0KTsKLQotICAgIEhUVFBPcGVyYXRpb24gaHR0cE9wZXJhdGlvbiA9IEhUVFBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVIVFRQT3BlcmF0aW9uKCk7Ci0gICAgaHR0cE9wZXJhdGlvbi5zZXRMb2NhdGlvblVSSSgiLyIgKyBvcGVyYXRpb24uZ2V0TmFtZSgpKTsKLSAgICBiaW5kaW5nT3BlcmF0aW9uLmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KGh0dHBPcGVyYXRpb24pOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZ2VuZXJhdGVCaW5kaW5nSW5wdXRDb250ZW50KEJpbmRpbmdJbnB1dCBiaW5kaW5nSW5wdXQsIElucHV0IGlucHV0KQotICB7Ci0gICAgLy8gV2UgYmxvdyBhd2F5IGFueSBleGlzdGluZyBFeHRlbnNpYmlsaXR5RWxlbWVudHMvY29udGVudCBiZWZvcmUgd2UgZ2VuZXJhdGUgaXQKLSAgICAvLyBJcyBpdCB3b3J0aCBiZWluZyBzbWFydGVyPyAgTG9vayBmb3IgbWF0Y2hpbmcgY29udGVudCBmaXJzdCBhbmQgY3JlYXRlIHRob3NlIHdoaWNoIGFyZW4ndCBmb3VuZD8/Pz8KLSAgICBMaXN0IHJlbW92ZUxpc3QgPSBuZXcgQXJyYXlMaXN0KGJpbmRpbmdJbnB1dC5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotCi0gICAgLy8gaGFjazogd2UncmUgYmVpbmcgc25lYWt5IGhlcmUuIFNldCB0aGUgJ3ZlcmInIG9wdGlvbnMgbm93LgotICAgIGludCBvcHRpb24gPSBnZXRWZXJiT3B0aW9uKGJpbmRpbmdJbnB1dCk7Ci0gICAgcmVtb3ZlRXh0ZW5zZWJpbGl0eUVsZW1lbnRzKGJpbmRpbmdJbnB1dC5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCksIHJlbW92ZUxpc3QpOwotCi0gICAgaWYgKG9wdGlvbiA9PSBWRVJCX1BPU1QpCi0gICAgewotICAgICAgLy8gVE9ETzogSXMgdGhlcmUgYW4gZXF1aXZhbGVudCBIVFRQIE1vZGVsIE9iamVjdCBmb3IgdGhpcz8uLi4uCi0gICAgICBFbGVtZW50IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KGJpbmRpbmdJbnB1dC5nZXRFbGVtZW50KCksICJtaW1lIiwgImNvbnRlbnQiKTsKLSAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgSFRUUFVybEVuY29kZWQgdXJsRW5jb2RlZCA9IEhUVFBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVIVFRQVXJsRW5jb2RlZCgpOwotICAgICAgYmluZGluZ0lucHV0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHVybEVuY29kZWQpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlQmluZGluZ091dHB1dENvbnRlbnQoQmluZGluZ091dHB1dCBiaW5kaW5nT3V0cHV0LCBPdXRwdXQgb3V0cHV0KQotICB7Ci0gICAgLy8gV2UgYmxvdyBhd2F5IGFueSBleGlzdGluZyBFeHRlbnNpYmlsaXR5RWxlbWVudHMvY29udGVudCBiZWZvcmUgd2UgZ2VuZXJhdGUgaXQKLSAgICAvLyBJcyBpdCB3b3J0aCBiZWluZyBzbWFydGVyPyAgTG9vayBmb3IgbWF0Y2hpbmcgY29udGVudCBmaXJzdCBhbmQgY3JlYXRlIHRob3NlIHdoaWNoIGFyZW4ndCBmb3VuZD8/Pz8KLSAgICBMaXN0IHJlbW92ZUxpc3QgPSBuZXcgQXJyYXlMaXN0KGJpbmRpbmdPdXRwdXQuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLQotICAgIC8vIGhhY2s6IHdlJ3JlIGJlaW5nIHNuZWFreSBoZXJlLiBTZXQgdGhlICd2ZXJiJyBvcHRpb25zIG5vdy4KLSAgICBnZXRWZXJiT3B0aW9uKGJpbmRpbmdPdXRwdXQpOwotICAgIHJlbW92ZUV4dGVuc2ViaWxpdHlFbGVtZW50cyhiaW5kaW5nT3V0cHV0LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSwgcmVtb3ZlTGlzdCk7Ci0KLSAgICAvLyBUT0RPOiBJcyB0aGVyZSBhbiBlcXVpdmFsZW50IEhUVFAgTW9kZWwgT2JqZWN0IGZvciB0aGlzPy4uLi4KLSAgICBFbGVtZW50IGJpbmRpbmdPdXRwdXRFbGVtZW50ID0gYmluZGluZ091dHB1dC5nZXRFbGVtZW50KCk7Ci0gICAgRWxlbWVudCBlbGVtZW50ID0gY3JlYXRlRWxlbWVudChiaW5kaW5nT3V0cHV0RWxlbWVudCwgIm1pbWUiLCAiY29udGVudCIpOwotICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInRleHQveG1sIik7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBnZW5lcmF0ZUJpbmRpbmdGYXVsdENvbnRlbnQoQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdCwgRmF1bHQgZmF1bHQpCi0gIHsKLSAgICAvL1RPRE8hIQotICB9Ci0KLSAgcHJvdGVjdGVkIEVsZW1lbnQgY3JlYXRlRWxlbWVudChFbGVtZW50IHBhcmVudEVsZW1lbnQsIFN0cmluZyBwcmVmaXgsIFN0cmluZyBlbGVtZW50TmFtZSkKLSAgewotICAgIFN0cmluZyBuYW1lID0gcHJlZml4ICE9IG51bGwgPyAocHJlZml4ICsgIjoiICsgZWxlbWVudE5hbWUpIDogZWxlbWVudE5hbWU7Ci0gICAgRWxlbWVudCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LmdldE93bmVyRG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KG5hbWUpOwotICAgIHBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHJlc3VsdCwgcGFyZW50RWxlbWVudC5nZXRGaXJzdENoaWxkKCkpOwotICAgIC8vICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQocmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAKLSAgcHJpdmF0ZSBpbnQgZ2V0VmVyYk9wdGlvbihPYmplY3QgZ2VuZXJpY0JpbmRpbmdPYmplY3QpCi0gIHsKLSAgICBpZiAodmVyYk9wdGlvbiA9PSBWRVJCX05PVF9TRVQgJiYgZ2VuZXJpY0JpbmRpbmdPYmplY3QgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBpbml0KCkgd2FzIG5ldmVyIGNhbGxlZCwgdHJ5IHRvIGRldGVybWluZSB0aGUgJ3ZlcmInIGJhc2VkIG9uIHdoYXQgd2UgaGF2ZS9rbm93Ci0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSBnZXRCaW5kaW5nT2JqZWN0KGdlbmVyaWNCaW5kaW5nT2JqZWN0KTsKLQotICAgICAgLy8gVHJ5IHRvIGRldGVybWluZSB0aGUgdmVyYiBmcm9tIHRoZSBCaW5kaW5nIE9iamVjdAotICAgICAgaWYgKGJpbmRpbmcgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgTGlzdCBsaXN0ID0gYmluZGluZy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICAgIEl0ZXJhdG9yIHZhbHVlc0l0ID0gZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShsaXN0LCAidmVyYiIpLml0ZXJhdG9yKCk7Ci0KLSAgICAgICAgd2hpbGUgKHZhbHVlc0l0Lmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyB2ZXJiID0gKFN0cmluZyl2YWx1ZXNJdC5uZXh0KCk7Ci0KLSAgICAgICAgICBpZiAodmVyYi5lcXVhbHMoIlBPU1QiKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB2ZXJiT3B0aW9uID0gVkVSQl9QT1NUOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmICh2ZXJiLmVxdWFscygiR0VUIikpCi0gICAgICAgICAgewotICAgICAgICAgICAgdmVyYk9wdGlvbiA9IFZFUkJfR0VUOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmICh2ZXJiT3B0aW9uICE9IFZFUkJfTk9UX1NFVCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodmVyYk9wdGlvbiA9PSBWRVJCX05PVF9TRVQpCi0gICAgewotICAgICAgdmVyYk9wdGlvbiA9IFZFUkJfR0VUOwotICAgIH0KLQotICAgIHJldHVybiB2ZXJiT3B0aW9uOwotICB9Ci0KLSAgcHJpdmF0ZSBMaXN0IGdldEV4dGVuc2liaWxpdHlFbGVtZW50QXR0cmlidXRlVmFsdWUoTGlzdCBlZUxpc3QsIFN0cmluZyBhdHRyaWJ1dGVLZXkpCi0gIHsKLSAgICBMaXN0IHZhbHVlcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBJdGVyYXRvciBlZUVsZW1lbnRzSXQgPSBlZUxpc3QuaXRlcmF0b3IoKTsKLQotICAgIHdoaWxlIChlZUVsZW1lbnRzSXQuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGVlRWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCllZUVsZW1lbnRzSXQubmV4dCgpOwotICAgICAgU3RyaW5nIGF0dHJpYnV0ZVZhbHVlID0gZWVFbGVtZW50LmdldEVsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlS2V5KTsKLSAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSAhPSBudWxsICYmICFhdHRyaWJ1dGVWYWx1ZS5lcXVhbHMoIiIpKQotICAgICAgewotICAgICAgICB2YWx1ZXMuYWRkKGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsdWVzOwotICB9Ci0KLSAgcHJpdmF0ZSBCaW5kaW5nIGdldEJpbmRpbmdPYmplY3QoT2JqZWN0IGdlbmVyaWNCaW5kaW5nT2JqZWN0KQotICB7Ci0gICAgT2JqZWN0IHBhcmVudCA9IGdlbmVyaWNCaW5kaW5nT2JqZWN0OwotCi0gICAgaW50IGluZGV4ID0gMDsKLSAgICB3aGlsZSAocGFyZW50ICE9IG51bGwgJiYgaW5kZXggPCA1KQotICAgIHsKLSAgICAgIHBhcmVudCA9IGdldEdlbmVyaWNCaW5kaW5nT2JqZWN0UGFyZW50KHBhcmVudCk7Ci0gICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgQmluZGluZykKLSAgICAgIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpbmRleCsrOwotICAgIH0KLQotICAgIHJldHVybiAocGFyZW50IGluc3RhbmNlb2YgQmluZGluZykgPyAoQmluZGluZylwYXJlbnQgOiBudWxsOwotICB9Ci0KLSAgcHJpdmF0ZSBPYmplY3QgZ2V0R2VuZXJpY0JpbmRpbmdPYmplY3RQYXJlbnQoT2JqZWN0IGdlbmVyaWNCaW5kaW5nT2JqZWN0KQotICB7Ci0gICAgT2JqZWN0IHBhcmVudCA9IG51bGw7Ci0KLSAgICBpZiAoZ2VuZXJpY0JpbmRpbmdPYmplY3QgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZ2VuZXJpY0JpbmRpbmdPYmplY3QgaW5zdGFuY2VvZiBCaW5kaW5nT3BlcmF0aW9uKQotICAgICAgewotICAgICAgICBwYXJlbnQgPSAoKEJpbmRpbmdPcGVyYXRpb24pZ2VuZXJpY0JpbmRpbmdPYmplY3QpLmdldENvbnRhaW5lcigpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoZ2VuZXJpY0JpbmRpbmdPYmplY3QgaW5zdGFuY2VvZiBCaW5kaW5nSW5wdXQpCi0gICAgICB7Ci0gICAgICAgIHBhcmVudCA9ICgoQmluZGluZ0lucHV0KWdlbmVyaWNCaW5kaW5nT2JqZWN0KS5nZXRDb250YWluZXIoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGdlbmVyaWNCaW5kaW5nT2JqZWN0IGluc3RhbmNlb2YgQmluZGluZ091dHB1dCkKLSAgICAgIHsKLSAgICAgICAgcGFyZW50ID0gKChCaW5kaW5nT3V0cHV0KWdlbmVyaWNCaW5kaW5nT2JqZWN0KS5nZXRDb250YWluZXIoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGdlbmVyaWNCaW5kaW5nT2JqZWN0IGluc3RhbmNlb2YgQmluZGluZ0ZhdWx0KQotICAgICAgewotICAgICAgICBwYXJlbnQgPSAoKEJpbmRpbmdGYXVsdClnZW5lcmljQmluZGluZ09iamVjdCkuZ2V0Q29udGFpbmVyKCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHBhcmVudDsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCByZW1vdmVFeHRlbnNlYmlsaXR5RWxlbWVudHMoTGlzdCBvcmlnaW5hbExpc3QsIExpc3QgcmVtb3ZlTGlzdCkKLSAgewotICAgIEl0ZXJhdG9yIHJlbW92ZUl0ID0gcmVtb3ZlTGlzdC5pdGVyYXRvcigpOwotICAgIHdoaWxlIChyZW1vdmVJdC5oYXNOZXh0KCkpCi0gICAgewotICAgICAgb3JpZ2luYWxMaXN0LnJlbW92ZShyZW1vdmVJdC5uZXh0KCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJvdG9jb2woKQotICB7Ci0gICAgcmV0dXJuICJIVFRQIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvaW50ZXJuYWwvaW1wbC9IVFRQQWRkcmVzc0ltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUEFkZHJlc3NJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNjQ4NDIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvaW50ZXJuYWwvaW1wbC9IVFRQQWRkcmVzc0ltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEFkZHJlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC51dGlsLkhUVFBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmlsaXR5RWxlbWVudEltcGw7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QWRkcmVzczwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmltcGwuSFRUUEFkZHJlc3NJbXBsI2dldExvY2F0aW9uVVJJIDxlbT5Mb2NhdGlvbiBVUkk8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBIVFRQQWRkcmVzc0ltcGwgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgaW1wbGVtZW50cyBIVFRQQWRkcmVzcwotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExvY2F0aW9uVVJJKCkgPGVtPkxvY2F0aW9uIFVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TG9jYXRpb25VUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBMT0NBVElPTl9VUklfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMb2NhdGlvblVSSSgpIDxlbT5Mb2NhdGlvbiBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldExvY2F0aW9uVVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBsb2NhdGlvblVSSSA9IExPQ0FUSU9OX1VSSV9FREVGQVVMVDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBIVFRQQWRkcmVzc0ltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIEhUVFBQYWNrYWdlLkxpdGVyYWxzLkhUVFBfQUREUkVTUzsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvblVSSSgpCi0gIHsKLSAgICByZXR1cm4gbG9jYXRpb25VUkk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uVVJJKFN0cmluZyBuZXdMb2NhdGlvblVSSSkKLSAgewotICAgIFN0cmluZyBvbGRMb2NhdGlvblVSSSA9IGxvY2F0aW9uVVJJOwotICAgIGxvY2F0aW9uVVJJID0gbmV3TG9jYXRpb25VUkk7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkksIG9sZExvY2F0aW9uVVJJLCBsb2NhdGlvblVSSSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSToKLSAgICAgIHJldHVybiBnZXRMb2NhdGlvblVSSSgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIEhUVFBQYWNrYWdlLkhUVFBfQUREUkVTU19fTE9DQVRJT05fVVJJOgotICAgICAgc2V0TG9jYXRpb25VUkkoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSToKLSAgICAgIHNldExvY2F0aW9uVVJJKExPQ0FUSU9OX1VSSV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkk6Ci0gICAgICByZXR1cm4gTE9DQVRJT05fVVJJX0VERUZBVUxUID09IG51bGwgPyBsb2NhdGlvblVSSSAhPSBudWxsIDogIUxPQ0FUSU9OX1VSSV9FREVGQVVMVC5lcXVhbHMobG9jYXRpb25VUkkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAobG9jYXRpb25VUkk6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChsb2NhdGlvblVSSSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vCi0gIC8vIFJlY29uY2lsZSBtZXRob2RzOiBET00gLT4gTW9kZWwKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBzZXRMb2NhdGlvblVSSShIVFRQQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgSFRUUENvbnN0YW50cy5MT0NBVElPTl9VUklfQVRUUklCVVRFKSk7Ci0gICAgcmVjb25jaWxlUmVmZXJlbmNlcyhmYWxzZSk7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gSFRUUFBhY2thZ2UuTGl0ZXJhbHMuSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkkpCi0gICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgSFRUUENvbnN0YW50cy5MT0NBVElPTl9VUklfQVRUUklCVVRFLCBnZXRMb2NhdGlvblVSSSgpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgUU5hbWUgZ2V0RWxlbWVudFR5cGUoKQotICB7Ci0gICAgaWYgKGVsZW1lbnRUeXBlID09IG51bGwpCi0gICAgICBlbGVtZW50VHlwZSA9IG5ldyBRTmFtZShIVFRQQ29uc3RhbnRzLkhUVFBfTkFNRVNQQUNFX1VSSSwgSFRUUENvbnN0YW50cy5BRERSRVNTX0VMRU1FTlRfVEFHKTsKLSAgICByZXR1cm4gZWxlbWVudFR5cGU7Ci0gIH0KLX0gLy9IVFRQQWRkcmVzc0ltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUEJpbmRpbmdJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC9pbXBsL0hUVFBCaW5kaW5nSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmU5MDIxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUEJpbmRpbmdJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwudXRpbC5IVFRQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmc8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsLkhUVFBCaW5kaW5nSW1wbCNnZXRWZXJiIDxlbT5WZXJiPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgSFRUUEJpbmRpbmdJbXBsIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGltcGxlbWVudHMgSFRUUEJpbmRpbmcKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRWZXJiKCkgPGVtPlZlcmI8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFZlcmIoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBWRVJCX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VmVyYigpIDxlbT5WZXJiPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRWZXJiKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyB2ZXJiID0gVkVSQl9FREVGQVVMVDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBIVFRQQmluZGluZ0ltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIEhUVFBQYWNrYWdlLkxpdGVyYWxzLkhUVFBfQklORElORzsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRWZXJiKCkKLSAgewotICAgIHJldHVybiB2ZXJiOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRWZXJiKFN0cmluZyBuZXdWZXJiKQotICB7Ci0gICAgU3RyaW5nIG9sZFZlcmIgPSB2ZXJiOwotICAgIHZlcmIgPSBuZXdWZXJiOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEhUVFBQYWNrYWdlLkhUVFBfQklORElOR19fVkVSQiwgb2xkVmVyYiwgdmVyYikpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX0JJTkRJTkdfX1ZFUkI6Ci0gICAgICByZXR1cm4gZ2V0VmVyYigpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIEhUVFBQYWNrYWdlLkhUVFBfQklORElOR19fVkVSQjoKLSAgICAgIHNldFZlcmIoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX0JJTkRJTkdfX1ZFUkI6Ci0gICAgICBzZXRWZXJiKFZFUkJfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIEhUVFBQYWNrYWdlLkhUVFBfQklORElOR19fVkVSQjoKLSAgICAgIHJldHVybiBWRVJCX0VERUZBVUxUID09IG51bGwgPyB2ZXJiICE9IG51bGwgOiAhVkVSQl9FREVGQVVMVC5lcXVhbHModmVyYik7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBpZiAoZUlzUHJveHkoKSkKLSAgICAgIHJldHVybiBzdXBlci50b1N0cmluZygpOwotCi0gICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiICh2ZXJiOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQodmVyYik7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vCi0gIC8vIFJlY29uY2lsZSBtZXRob2RzOiBET00gLT4gTW9kZWwKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBzZXRWZXJiKEhUVFBDb25zdGFudHMuZ2V0QXR0cmlidXRlKGNoYW5nZWRFbGVtZW50LCBIVFRQQ29uc3RhbnRzLlZFUkJfQVRUUklCVVRFKSk7Ci0gICAgcmVjb25jaWxlUmVmZXJlbmNlcyhmYWxzZSk7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gSFRUUFBhY2thZ2UuTGl0ZXJhbHMuSFRUUF9CSU5ESU5HX19WRVJCKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIEhUVFBDb25zdGFudHMuVkVSQl9BVFRSSUJVVEUsIGdldFZlcmIoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFFOYW1lIGdldEVsZW1lbnRUeXBlKCkKLSAgewotICAgIGlmIChlbGVtZW50VHlwZSA9PSBudWxsKQotICAgICAgZWxlbWVudFR5cGUgPSBuZXcgUU5hbWUoSFRUUENvbnN0YW50cy5IVFRQX05BTUVTUEFDRV9VUkksIEhUVFBDb25zdGFudHMuQklORElOR19FTEVNRU5UX1RBRyk7Ci0gICAgcmV0dXJuIGVsZW1lbnRUeXBlOwotICB9Ci0KLX0gLy9IVFRQQmluZGluZ0ltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUEZhY3RvcnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC9pbXBsL0hUVFBGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODI3ZDM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUEZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FRmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnBsdWdpbi5FY29yZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuKjsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgPGI+RmFjdG9yeTwvYj4uCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIEhUVFBGYWN0b3J5SW1wbCBleHRlbmRzIEVGYWN0b3J5SW1wbCBpbXBsZW1lbnRzIEhUVFBGYWN0b3J5Ci17Ci0gIC8qKgotICAgKiBDcmVhdGVzIHRoZSBkZWZhdWx0IGZhY3RvcnkgaW1wbGVtZW50YXRpb24uCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgc3RhdGljIEhUVFBGYWN0b3J5IGluaXQoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgSFRUUEZhY3RvcnkgdGhlSFRUUEZhY3RvcnkgPSAoSFRUUEZhY3RvcnkpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RUZhY3RvcnkoImh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL0hUVFAiKTsgLy8kTk9OLU5MUy0xJCAKLSAgICAgIGlmICh0aGVIVFRQRmFjdG9yeSAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXR1cm4gdGhlSFRUUEZhY3Rvcnk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZXhjZXB0aW9uKQotICAgIHsKLSAgICAgIEVjb3JlUGx1Z2luLklOU1RBTkNFLmxvZyhleGNlcHRpb24pOwotICAgIH0KLSAgICByZXR1cm4gbmV3IEhUVFBGYWN0b3J5SW1wbCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgSFRUUEZhY3RvcnlJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFT2JqZWN0IGNyZWF0ZShFQ2xhc3MgZUNsYXNzKQotICB7Ci0gICAgc3dpdGNoIChlQ2xhc3MuZ2V0Q2xhc3NpZmllcklEKCkpCi0gICAgewotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX0JJTkRJTkc6Ci0gICAgICByZXR1cm4gY3JlYXRlSFRUUEJpbmRpbmcoKTsKLSAgICAgIGNhc2UgSFRUUFBhY2thZ2UuSFRUUF9PUEVSQVRJT046Ci0gICAgICByZXR1cm4gY3JlYXRlSFRUUE9wZXJhdGlvbigpOwotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX1VSTF9SRVBMQUNFTUVOVDoKLSAgICAgIHJldHVybiBjcmVhdGVIVFRQVXJsUmVwbGFjZW1lbnQoKTsKLSAgICAgIGNhc2UgSFRUUFBhY2thZ2UuSFRUUF9VUkxfRU5DT0RFRDoKLSAgICAgIHJldHVybiBjcmVhdGVIVFRQVXJsRW5jb2RlZCgpOwotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX0FERFJFU1M6Ci0gICAgICByZXR1cm4gY3JlYXRlSFRUUEFkZHJlc3MoKTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUaGUgY2xhc3MgJyIgKyBlQ2xhc3MuZ2V0TmFtZSgpICsgIicgaXMgbm90IGEgdmFsaWQgY2xhc3NpZmllciIpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBIVFRQQmluZGluZyBjcmVhdGVIVFRQQmluZGluZygpCi0gIHsKLSAgICBIVFRQQmluZGluZ0ltcGwgaHR0cEJpbmRpbmcgPSBuZXcgSFRUUEJpbmRpbmdJbXBsKCk7Ci0gICAgcmV0dXJuIGh0dHBCaW5kaW5nOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgSFRUUE9wZXJhdGlvbiBjcmVhdGVIVFRQT3BlcmF0aW9uKCkKLSAgewotICAgIEhUVFBPcGVyYXRpb25JbXBsIGh0dHBPcGVyYXRpb24gPSBuZXcgSFRUUE9wZXJhdGlvbkltcGwoKTsKLSAgICByZXR1cm4gaHR0cE9wZXJhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEhUVFBVcmxSZXBsYWNlbWVudCBjcmVhdGVIVFRQVXJsUmVwbGFjZW1lbnQoKQotICB7Ci0gICAgSFRUUFVybFJlcGxhY2VtZW50SW1wbCBodHRwVXJsUmVwbGFjZW1lbnQgPSBuZXcgSFRUUFVybFJlcGxhY2VtZW50SW1wbCgpOwotICAgIHJldHVybiBodHRwVXJsUmVwbGFjZW1lbnQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBIVFRQVXJsRW5jb2RlZCBjcmVhdGVIVFRQVXJsRW5jb2RlZCgpCi0gIHsKLSAgICBIVFRQVXJsRW5jb2RlZEltcGwgaHR0cFVybEVuY29kZWQgPSBuZXcgSFRUUFVybEVuY29kZWRJbXBsKCk7Ci0gICAgcmV0dXJuIGh0dHBVcmxFbmNvZGVkOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgSFRUUEFkZHJlc3MgY3JlYXRlSFRUUEFkZHJlc3MoKQotICB7Ci0gICAgSFRUUEFkZHJlc3NJbXBsIGh0dHBBZGRyZXNzID0gbmV3IEhUVFBBZGRyZXNzSW1wbCgpOwotICAgIHJldHVybiBodHRwQWRkcmVzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEhUVFBQYWNrYWdlIGdldEhUVFBQYWNrYWdlKCkKLSAgewotICAgIHJldHVybiAoSFRUUFBhY2thZ2UpZ2V0RVBhY2thZ2UoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGRlcHJlY2F0ZWQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBIVFRQUGFja2FnZSBnZXRQYWNrYWdlKCkKLSAgewotICAgIHJldHVybiBIVFRQUGFja2FnZS5lSU5TVEFOQ0U7Ci0gIH0KLX0gLy9IVFRQRmFjdG9yeUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUE9wZXJhdGlvbkltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUE9wZXJhdGlvbkltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQxZDA2YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC9pbXBsL0hUVFBPcGVyYXRpb25JbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC51dGlsLkhUVFBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmlsaXR5RWxlbWVudEltcGw7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbC5IVFRQT3BlcmF0aW9uSW1wbCNnZXRMb2NhdGlvblVSSSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgSFRUUE9wZXJhdGlvbkltcGwgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgaW1wbGVtZW50cyBIVFRQT3BlcmF0aW9uCi17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TG9jYXRpb25VUkkoKSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRMb2NhdGlvblVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIExPQ0FUSU9OX1VSSV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExvY2F0aW9uVVJJKCkgPGVtPkxvY2F0aW9uIFVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TG9jYXRpb25VUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGxvY2F0aW9uVVJJID0gTE9DQVRJT05fVVJJX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEhUVFBPcGVyYXRpb25JbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBIVFRQUGFja2FnZS5MaXRlcmFscy5IVFRQX09QRVJBVElPTjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvblVSSSgpCi0gIHsKLSAgICByZXR1cm4gbG9jYXRpb25VUkk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uVVJJKFN0cmluZyBuZXdMb2NhdGlvblVSSSkKLSAgewotICAgIFN0cmluZyBvbGRMb2NhdGlvblVSSSA9IGxvY2F0aW9uVVJJOwotICAgIGxvY2F0aW9uVVJJID0gbmV3TG9jYXRpb25VUkk7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgSFRUUFBhY2thZ2UuSFRUUF9PUEVSQVRJT05fX0xPQ0FUSU9OX1VSSSwgb2xkTG9jYXRpb25VUkksIGxvY2F0aW9uVVJJKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIEhUVFBQYWNrYWdlLkhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkk6Ci0gICAgICByZXR1cm4gZ2V0TG9jYXRpb25VUkkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX09QRVJBVElPTl9fTE9DQVRJT05fVVJJOgotICAgICAgc2V0TG9jYXRpb25VUkkoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX09QRVJBVElPTl9fTE9DQVRJT05fVVJJOgotICAgICAgc2V0TG9jYXRpb25VUkkoTE9DQVRJT05fVVJJX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX09QRVJBVElPTl9fTE9DQVRJT05fVVJJOgotICAgICAgcmV0dXJuIExPQ0FUSU9OX1VSSV9FREVGQVVMVCA9PSBudWxsID8gbG9jYXRpb25VUkkgIT0gbnVsbCA6ICFMT0NBVElPTl9VUklfRURFRkFVTFQuZXF1YWxzKGxvY2F0aW9uVVJJKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKGxvY2F0aW9uVVJJOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQobG9jYXRpb25VUkkpOwotICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvLwotICAvLyBSZWNvbmNpbGUgbWV0aG9kczogRE9NIC0+IE1vZGVsCi0gIC8vCi0KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlQXR0cmlidXRlcyhFbGVtZW50IGNoYW5nZWRFbGVtZW50KQotICB7Ci0gICAgc2V0TG9jYXRpb25VUkkoSFRUUENvbnN0YW50cy5nZXRBdHRyaWJ1dGUoY2hhbmdlZEVsZW1lbnQsIEhUVFBDb25zdGFudHMuTE9DQVRJT05fVVJJX0FUVFJJQlVURSkpOwotICAgIHJlY29uY2lsZVJlZmVyZW5jZXMoZmFsc2UpOwotICB9Ci0KLSAgLy8KLSAgLy8gRm9yIHJlY29uY2lsaWF0aW9uOiBNb2RlbCAtPiBET00KLSAgLy8KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VBdHRyaWJ1dGUoRUF0dHJpYnV0ZSBlQXR0cmlidXRlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VBdHRyaWJ1dGUoZUF0dHJpYnV0ZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IEhUVFBQYWNrYWdlLkxpdGVyYWxzLkhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkkpCi0gICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgSFRUUENvbnN0YW50cy5MT0NBVElPTl9VUklfQVRUUklCVVRFLCBnZXRMb2NhdGlvblVSSSgpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgUU5hbWUgZ2V0RWxlbWVudFR5cGUoKQotICB7Ci0gICAgaWYgKGVsZW1lbnRUeXBlID09IG51bGwpCi0gICAgICBlbGVtZW50VHlwZSA9IG5ldyBRTmFtZShIVFRQQ29uc3RhbnRzLkhUVFBfTkFNRVNQQUNFX1VSSSwgSFRUUENvbnN0YW50cy5PUEVSQVRJT05fRUxFTUVOVF9UQUcpOwotICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAgfQotCi19IC8vSFRUUE9wZXJhdGlvbkltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUFBhY2thZ2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC9pbXBsL0hUVFBQYWNrYWdlSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjU1ZjMxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUFBhY2thZ2VJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FUGFja2FnZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBBZGRyZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQQmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsRW5jb2RlZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPi4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgSFRUUFBhY2thZ2VJbXBsIGV4dGVuZHMgRVBhY2thZ2VJbXBsIGltcGxlbWVudHMgSFRUUFBhY2thZ2UKLXsKLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBodHRwQmluZGluZ0VDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBodHRwT3BlcmF0aW9uRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGh0dHBVcmxSZXBsYWNlbWVudEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBodHRwVXJsRW5jb2RlZEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBodHRwQWRkcmVzc0VDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpaHR0cEFkZHJlc3NFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaWh0dHBCaW5kaW5nRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGlodHRwT3BlcmF0aW9uRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGlodHRwVXJsRW5jb2RlZEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpaHR0cFVybFJlcGxhY2VtZW50RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4sIHJlZ2lzdGVyZWQgd2l0aAotICAgKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5IEVQYWNrYWdlLlJlZ2lzdHJ5fSBieSB0aGUgcGFja2FnZQotICAgKiBwYWNrYWdlIFVSSSB2YWx1ZS4KLSAgICogPHA+Tm90ZTogdGhlIGNvcnJlY3Qgd2F5IHRvIGNyZWF0ZSB0aGUgcGFja2FnZSBpcyB2aWEgdGhlIHN0YXRpYwotICAgKiBmYWN0b3J5IG1ldGhvZCB7QGxpbmsgI2luaXQgaW5pdCgpfSwgd2hpY2ggYWxzbyBwZXJmb3JtcwotICAgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLAotICAgKiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZSNlTlNfVVJJCi0gICAqIEBzZWUgI2luaXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEhUVFBQYWNrYWdlSW1wbCgpCi0gIHsKLSAgICBzdXBlcihlTlNfVVJJLCBIVFRQRmFjdG9yeS5lSU5TVEFOQ0UpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzSW5pdGVkID0gZmFsc2U7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMsIHJlZ2lzdGVycywgYW5kIGluaXRpYWxpemVzIHRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhpcwotICAgKiBtb2RlbCwgYW5kIGZvciBhbnkgb3RoZXJzIHVwb24gd2hpY2ggaXQgZGVwZW5kcy4gIFNpbXBsZQotICAgKiBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCBieSBjYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGFsbAotICAgKiBkZXBlbmRlbnQgcGFja2FnZXMgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuICBUaGlzIG1ldGhvZCBkcml2ZXMKLSAgICogaW5pdGlhbGl6YXRpb24gZm9yIGludGVyZGVwZW5kZW50IHBhY2thZ2VzIGRpcmVjdGx5LCBpbiBwYXJhbGxlbAotICAgKiB3aXRoIHRoaXMgcGFja2FnZSwgaXRzZWxmLgotICAgKiA8cD5PZiB0aGlzIHBhY2thZ2UgYW5kIGl0cyBpbnRlcmRlcGVuZGVuY2llcywgYWxsIHBhY2thZ2VzIHdoaWNoCi0gICAqIGhhdmUgbm90IHlldCBiZWVuIHJlZ2lzdGVyZWQgYnkgdGhlaXIgVVJJIHZhbHVlcyBhcmUgZmlyc3QgY3JlYXRlZAotICAgKiBhbmQgcmVnaXN0ZXJlZC4gIFRoZSBwYWNrYWdlcyBhcmUgdGhlbiBpbml0aWFsaXplZCBpbiB0d28gc3RlcHM6Ci0gICAqIG1ldGEtbW9kZWwgb2JqZWN0cyBmb3IgYWxsIG9mIHRoZSBwYWNrYWdlcyBhcmUgY3JlYXRlZCBiZWZvcmUgYW55Ci0gICAqIGFyZSBpbml0aWFsaXplZCwgc2luY2Ugb25lIHBhY2thZ2UncyBtZXRhLW1vZGVsIG9iamVjdHMgbWF5IHJlZmVyIHRvCi0gICAqIHRob3NlIG9mIGFub3RoZXIuCi0gICAqIDxwPkludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgd2lsbCBub3QgYWZmZWN0IGFueSBwYWNrYWdlcyB0aGF0IGhhdmUKLSAgICogYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZU5TX1VSSQotICAgKiBAc2VlICNjcmVhdGVQYWNrYWdlQ29udGVudHMoKQotICAgKiBAc2VlICNpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBIVFRQUGFja2FnZSBpbml0KCkKLSAgewotICAgIGlmIChpc0luaXRlZCkKLSAgICAgIHJldHVybiAoSFRUUFBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoSFRUUFBhY2thZ2UuZU5TX1VSSSk7Ci0KLSAgICAvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBwYWNrYWdlCi0gICAgSFRUUFBhY2thZ2VJbXBsIHRoZUhUVFBQYWNrYWdlID0gKEhUVFBQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoZU5TX1VSSSkgaW5zdGFuY2VvZiBIVFRQUGFja2FnZUltcGwKLSAgICAgID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoZU5TX1VSSSkgOiBuZXcgSFRUUFBhY2thZ2VJbXBsKCkpOwotCi0gICAgaXNJbml0ZWQgPSB0cnVlOwotCi0gICAgLy8gSW5pdGlhbGl6ZSBzaW1wbGUgZGVwZW5kZW5jaWVzCi0gICAgV1NETFBhY2thZ2UuZUlOU1RBTkNFLmVDbGFzcygpOwotCi0gICAgLy8gQ3JlYXRlIHBhY2thZ2UgbWV0YS1kYXRhIG9iamVjdHMKLSAgICB0aGVIVFRQUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsKLQotICAgIC8vIEluaXRpYWxpemUgY3JlYXRlZCBtZXRhLWRhdGEKLSAgICB0aGVIVFRQUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7Ci0KLSAgICAvLyBNYXJrIG1ldGEtZGF0YSB0byBpbmRpY2F0ZSBpdCBjYW4ndCBiZSBjaGFuZ2VkCi0gICAgdGhlSFRUUFBhY2thZ2UuZnJlZXplKCk7Ci0KLSAgICByZXR1cm4gdGhlSFRUUFBhY2thZ2U7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SFRUUEJpbmRpbmcoKQotICB7Ci0gICAgcmV0dXJuIGh0dHBCaW5kaW5nRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRIVFRQQmluZGluZ19WZXJiKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlodHRwQmluZGluZ0VDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldEhUVFBPcGVyYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGh0dHBPcGVyYXRpb25FQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldEhUVFBPcGVyYXRpb25fTG9jYXRpb25VUkkoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKWh0dHBPcGVyYXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRIVFRQVXJsUmVwbGFjZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIGh0dHBVcmxSZXBsYWNlbWVudEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRIVFRQVXJsRW5jb2RlZCgpCi0gIHsKLSAgICByZXR1cm4gaHR0cFVybEVuY29kZWRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SFRUUEFkZHJlc3MoKQotICB7Ci0gICAgcmV0dXJuIGh0dHBBZGRyZXNzRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRIVFRQQWRkcmVzc19Mb2NhdGlvblVSSSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpaHR0cEFkZHJlc3NFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJSFRUUEFkZHJlc3MoKQotICB7Ci0gICAgcmV0dXJuIGlodHRwQWRkcmVzc0VDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJSFRUUEJpbmRpbmcoKQotICB7Ci0gICAgcmV0dXJuIGlodHRwQmluZGluZ0VDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJSFRUUE9wZXJhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gaWh0dHBPcGVyYXRpb25FQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SUhUVFBVcmxFbmNvZGVkKCkKLSAgewotICAgIHJldHVybiBpaHR0cFVybEVuY29kZWRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SUhUVFBVcmxSZXBsYWNlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gaWh0dHBVcmxSZXBsYWNlbWVudEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEhUVFBGYWN0b3J5IGdldEhUVFBGYWN0b3J5KCkKLSAgewotICAgIHJldHVybiAoSFRUUEZhY3RvcnkpZ2V0RUZhY3RvcnlJbnN0YW5jZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gaXNDcmVhdGVkID0gZmFsc2U7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgdGhlIG1ldGEtbW9kZWwgb2JqZWN0cyBmb3IgdGhlIHBhY2thZ2UuICBUaGlzIG1ldGhvZCBpcwotICAgKiBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBjcmVhdGVQYWNrYWdlQ29udGVudHMoKQotICB7Ci0gICAgaWYgKGlzQ3JlYXRlZCkKLSAgICAgIHJldHVybjsKLSAgICBpc0NyZWF0ZWQgPSB0cnVlOwotCi0gICAgLy8gQ3JlYXRlIGNsYXNzZXMgYW5kIHRoZWlyIGZlYXR1cmVzCi0gICAgaHR0cEJpbmRpbmdFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSFRUUF9CSU5ESU5HKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKGh0dHBCaW5kaW5nRUNsYXNzLCBIVFRQX0JJTkRJTkdfX1ZFUkIpOwotCi0gICAgaHR0cE9wZXJhdGlvbkVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhIVFRQX09QRVJBVElPTik7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShodHRwT3BlcmF0aW9uRUNsYXNzLCBIVFRQX09QRVJBVElPTl9fTE9DQVRJT05fVVJJKTsKLQotICAgIGh0dHBVcmxSZXBsYWNlbWVudEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhIVFRQX1VSTF9SRVBMQUNFTUVOVCk7Ci0KLSAgICBodHRwVXJsRW5jb2RlZEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhIVFRQX1VSTF9FTkNPREVEKTsKLQotICAgIGh0dHBBZGRyZXNzRUNsYXNzID0gY3JlYXRlRUNsYXNzKEhUVFBfQUREUkVTUyk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShodHRwQWRkcmVzc0VDbGFzcywgSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkkpOwotCi0gICAgaWh0dHBBZGRyZXNzRUNsYXNzID0gY3JlYXRlRUNsYXNzKElIVFRQX0FERFJFU1MpOwotCi0gICAgaWh0dHBCaW5kaW5nRUNsYXNzID0gY3JlYXRlRUNsYXNzKElIVFRQX0JJTkRJTkcpOwotCi0gICAgaWh0dHBPcGVyYXRpb25FQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSUhUVFBfT1BFUkFUSU9OKTsKLQotICAgIGlodHRwVXJsRW5jb2RlZEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJSFRUUF9VUkxfRU5DT0RFRCk7Ci0KLSAgICBpaHR0cFVybFJlcGxhY2VtZW50RUNsYXNzID0gY3JlYXRlRUNsYXNzKElIVFRQX1VSTF9SRVBMQUNFTUVOVCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBpc0luaXRpYWxpemVkID0gZmFsc2U7Ci0KLSAgLyoqCi0gICAqIENvbXBsZXRlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSBhbmQgaXRzIG1ldGEtbW9kZWwuICBUaGlzCi0gICAqIG1ldGhvZCBpcyBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkKLSAgewotICAgIGlmIChpc0luaXRpYWxpemVkKQotICAgICAgcmV0dXJuOwotICAgIGlzSW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0gICAgLy8gSW5pdGlhbGl6ZSBwYWNrYWdlCi0gICAgc2V0TmFtZShlTkFNRSk7Ci0gICAgc2V0TnNQcmVmaXgoZU5TX1BSRUZJWCk7Ci0gICAgc2V0TnNVUkkoZU5TX1VSSSk7Ci0KLSAgICAvLyBPYnRhaW4gb3RoZXIgZGVwZW5kZW50IHBhY2thZ2VzCi0gICAgV1NETFBhY2thZ2UgdGhlV1NETFBhY2thZ2UgPSAoV1NETFBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoV1NETFBhY2thZ2UuZU5TX1VSSSk7Ci0KLSAgICAvLyBBZGQgc3VwZXJ0eXBlcyB0byBjbGFzc2VzCi0gICAgaHR0cEJpbmRpbmdFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhlV1NETFBhY2thZ2UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSk7Ci0gICAgaHR0cEJpbmRpbmdFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJSFRUUEJpbmRpbmcoKSk7Ci0gICAgaHR0cE9wZXJhdGlvbkVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVXU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBodHRwT3BlcmF0aW9uRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SUhUVFBPcGVyYXRpb24oKSk7Ci0gICAgaHR0cFVybFJlcGxhY2VtZW50RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZVdTRExQYWNrYWdlLmdldEV4dGVuc2liaWxpdHlFbGVtZW50KCkpOwotICAgIGh0dHBVcmxSZXBsYWNlbWVudEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElIVFRQVXJsUmVwbGFjZW1lbnQoKSk7Ci0gICAgaHR0cFVybEVuY29kZWRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhlV1NETFBhY2thZ2UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSk7Ci0gICAgaHR0cFVybEVuY29kZWRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJSFRUUFVybEVuY29kZWQoKSk7Ci0gICAgaHR0cEFkZHJlc3NFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhlV1NETFBhY2thZ2UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSk7Ci0gICAgaHR0cEFkZHJlc3NFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJSFRUUEFkZHJlc3MoKSk7Ci0KLSAgICAvLyBJbml0aWFsaXplIGNsYXNzZXMgYW5kIGZlYXR1cmVzOyBhZGQgb3BlcmF0aW9ucyBhbmQgcGFyYW1ldGVycwotICAgIGluaXRFQ2xhc3MoaHR0cEJpbmRpbmdFQ2xhc3MsIEhUVFBCaW5kaW5nLmNsYXNzLCAiSFRUUEJpbmRpbmciLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldEhUVFBCaW5kaW5nX1ZlcmIoKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAidmVyYiIsIG51bGwsIDAsIDEsIEhUVFBCaW5kaW5nLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGh0dHBPcGVyYXRpb25FQ2xhc3MsIEhUVFBPcGVyYXRpb24uY2xhc3MsICJIVFRQT3BlcmF0aW9uIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRIVFRQT3BlcmF0aW9uX0xvY2F0aW9uVVJJKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgImxvY2F0aW9uVVJJIiwgbnVsbCwgMCwgMSwgSFRUUE9wZXJhdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGh0dHBVcmxSZXBsYWNlbWVudEVDbGFzcywKLSAgICAgIEhUVFBVcmxSZXBsYWNlbWVudC5jbGFzcywKLSAgICAgICJIVFRQVXJsUmVwbGFjZW1lbnQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoaHR0cFVybEVuY29kZWRFQ2xhc3MsIEhUVFBVcmxFbmNvZGVkLmNsYXNzLCAiSFRUUFVybEVuY29kZWQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoaHR0cEFkZHJlc3NFQ2xhc3MsIEhUVFBBZGRyZXNzLmNsYXNzLCAiSFRUUEFkZHJlc3MiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldEhUVFBBZGRyZXNzX0xvY2F0aW9uVVJJKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgImxvY2F0aW9uVVJJIiwgbnVsbCwgMCwgMSwgSFRUUEFkZHJlc3MuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoCi0gICAgICBpaHR0cEFkZHJlc3NFQ2xhc3MsCi0gICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQWRkcmVzcy5jbGFzcywKLSAgICAgICJJSFRUUEFkZHJlc3MiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGlodHRwQmluZGluZ0VDbGFzcywKLSAgICAgIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nLmNsYXNzLAotICAgICAgIklIVFRQQmluZGluZyIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKAotICAgICAgaWh0dHBPcGVyYXRpb25FQ2xhc3MsCi0gICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQT3BlcmF0aW9uLmNsYXNzLAotICAgICAgIklIVFRQT3BlcmF0aW9uIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoCi0gICAgICBpaHR0cFVybEVuY29kZWRFQ2xhc3MsCi0gICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsRW5jb2RlZC5jbGFzcywKLSAgICAgICJJSFRUUFVybEVuY29kZWQiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGlodHRwVXJsUmVwbGFjZW1lbnRFQ2xhc3MsCi0gICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQuY2xhc3MsCi0gICAgICAiSUhUVFBVcmxSZXBsYWNlbWVudCIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICAvLyBDcmVhdGUgcmVzb3VyY2UKLSAgICBjcmVhdGVSZXNvdXJjZShlTlNfVVJJKTsKLSAgfQotfSAvL0hUVFBQYWNrYWdlSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvaW50ZXJuYWwvaW1wbC9IVFRQVXJsRW5jb2RlZEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL2ltcGwvSFRUUFVybEVuY29kZWRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNzc3YmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvaW50ZXJuYWwvaW1wbC9IVFRQVXJsRW5jb2RlZEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsRW5jb2RlZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwudXRpbC5IVFRQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgRW5jb2RlZDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIEhUVFBVcmxFbmNvZGVkSW1wbCBleHRlbmRzIEV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCBpbXBsZW1lbnRzIEhUVFBVcmxFbmNvZGVkCi17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEhUVFBVcmxFbmNvZGVkSW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpCi0gIHsKLSAgICByZXR1cm4gSFRUUFBhY2thZ2UuTGl0ZXJhbHMuSFRUUF9VUkxfRU5DT0RFRDsKLSAgfQotCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKEhUVFBDb25zdGFudHMuSFRUUF9OQU1FU1BBQ0VfVVJJLCBIVFRQQ29uc3RhbnRzLlVSTF9FTkNPREVEX0VMRU1FTlRfVEFHKTsKLSAgICByZXR1cm4gZWxlbWVudFR5cGU7Ci0gIH0KLQotfSAvL0hUVFBVcmxFbmNvZGVkSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvaW50ZXJuYWwvaW1wbC9IVFRQVXJsUmVwbGFjZW1lbnRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC9pbXBsL0hUVFBVcmxSZXBsYWNlbWVudEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ5NjRjZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC9pbXBsL0hUVFBVcmxSZXBsYWNlbWVudEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLnV0aWwuSFRUUENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VXJsIFJlcGxhY2VtZW50PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgSFRUUFVybFJlcGxhY2VtZW50SW1wbCBleHRlbmRzIEV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCBpbXBsZW1lbnRzIEhUVFBVcmxSZXBsYWNlbWVudAotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBIVFRQVXJsUmVwbGFjZW1lbnRJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBIVFRQUGFja2FnZS5MaXRlcmFscy5IVFRQX1VSTF9SRVBMQUNFTUVOVDsKLSAgfQotCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKEhUVFBDb25zdGFudHMuSFRUUF9OQU1FU1BBQ0VfVVJJLCBIVFRQQ29uc3RhbnRzLlVSTF9SRVBMQUNFTUVOVF9FTEVNRU5UX1RBRyk7Ci0gICAgcmV0dXJuIGVsZW1lbnRUeXBlOwotICB9Ci0KLX0gLy9IVFRQVXJsUmVwbGFjZW1lbnRJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC91dGlsL0hUVFBBZGFwdGVyRmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvaW50ZXJuYWwvdXRpbC9IVFRQQWRhcHRlckZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgwMTE3OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC91dGlsL0hUVFBBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwudXRpbDsKLQotCi1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmllcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5pbXBsLkFkYXB0ZXJGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuKjsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBUaGUgPGI+QWRhcHRlciBGYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLgotICogSXQgcHJvdmlkZXMgYW4gYWRhcHRlciA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBIVFRQQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBBZGFwdGVyRmFjdG9yeUltcGwKLXsKLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgSFRUUFBhY2thZ2UgbW9kZWxQYWNrYWdlOwotCi0gIC8qKgotICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBhZGFwdGVyIGZhY3RvcnkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgSFRUUEFkYXB0ZXJGYWN0b3J5KCkKLSAgewotICAgIGlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBtb2RlbFBhY2thZ2UgPSBIVFRQUGFja2FnZS5lSU5TVEFOQ0U7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciB0aGlzIGZhY3RvcnkgaXMgYXBwbGljYWJsZSBmb3IgdGhlIHR5cGUgb2YgdGhlIG9iamVjdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBvYmplY3QgaXMgZWl0aGVyIHRoZSBtb2RlbCdzIHBhY2thZ2Ugb3IgaXMgYW4gaW5zdGFuY2Ugb2JqZWN0IG9mIHRoZSBtb2RlbC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gd2hldGhlciB0aGlzIGZhY3RvcnkgaXMgYXBwbGljYWJsZSBmb3IgdGhlIHR5cGUgb2YgdGhlIG9iamVjdC4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgaWYgKG9iamVjdCA9PSBtb2RlbFBhY2thZ2UpCi0gICAgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBFT2JqZWN0KQotICAgIHsKLSAgICAgIHJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBzd2l0Y2ggdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBIVFRQU3dpdGNoIG1vZGVsU3dpdGNoID0gbmV3IEhUVFBTd2l0Y2goKQotICAgIHsKLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUhUVFBCaW5kaW5nKEhUVFBCaW5kaW5nIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUhUVFBCaW5kaW5nQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VIVFRQT3BlcmF0aW9uKEhUVFBPcGVyYXRpb24gb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSFRUUE9wZXJhdGlvbkFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSFRUUFVybFJlcGxhY2VtZW50KEhUVFBVcmxSZXBsYWNlbWVudCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVIVFRQVXJsUmVwbGFjZW1lbnRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUhUVFBVcmxFbmNvZGVkKEhUVFBVcmxFbmNvZGVkIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUhUVFBVcmxFbmNvZGVkQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VIVFRQQWRkcmVzcyhIVFRQQWRkcmVzcyBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVIVFRQQWRkcmVzc0FkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUhUVFBBZGRyZXNzKGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlIVFRQQWRkcmVzc0FkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUhUVFBCaW5kaW5nKGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlIVFRQQmluZGluZ0FkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUhUVFBPcGVyYXRpb24oamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbiBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJSFRUUE9wZXJhdGlvbkFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUhUVFBVcmxFbmNvZGVkKGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlIVFRQVXJsRW5jb2RlZEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUhUVFBVcmxSZXBsYWNlbWVudChqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSUhUVFBVcmxSZXBsYWNlbWVudEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlV1NETEVsZW1lbnQoV1NETEVsZW1lbnQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlV1NETEVsZW1lbnRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudChFeHRlbnNpYmlsaXR5RWxlbWVudCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJRXh0ZW5zaWJpbGl0eUVsZW1lbnRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGRlZmF1bHRDYXNlKEVPYmplY3Qgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlRU9iamVjdEFkYXB0ZXIoKTsKLSAgICAgIH0KLSAgICB9OwotCi0gIC8qKgotICAgKiBDcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIHRoZSA8Y29kZT50YXJnZXQ8L2NvZGU+LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHRhcmdldCB0aGUgb2JqZWN0IHRvIGFkYXB0LgotICAgKiBAcmV0dXJuIHRoZSBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlQWRhcHRlcihOb3RpZmllciB0YXJnZXQpCi0gIHsKLSAgICByZXR1cm4gKEFkYXB0ZXIpbW9kZWxTd2l0Y2guZG9Td2l0Y2goKEVPYmplY3QpdGFyZ2V0KTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQQmluZGluZyA8ZW0+QmluZGluZzwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEJpbmRpbmcKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSFRUUEJpbmRpbmdBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBPcGVyYXRpb24gPGVtPk9wZXJhdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUE9wZXJhdGlvbgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVIVFRQT3BlcmF0aW9uQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQgPGVtPlVybCBSZXBsYWNlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUhUVFBVcmxSZXBsYWNlbWVudEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFVybEVuY29kZWQgPGVtPlVybCBFbmNvZGVkPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsRW5jb2RlZAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVIVFRQVXJsRW5jb2RlZEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEFkZHJlc3MgPGVtPkFkZHJlc3M8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBBZGRyZXNzCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUhUVFBBZGRyZXNzQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIDxlbT5JSFRUUCBBZGRyZXNzPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlIVFRQQWRkcmVzc0FkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQmluZGluZyA8ZW0+SUhUVFAgQmluZGluZzwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQmluZGluZwotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVJSFRUUEJpbmRpbmdBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbiA8ZW0+SUhUVFAgT3BlcmF0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb24KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUhUVFBPcGVyYXRpb25BZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybEVuY29kZWQgPGVtPklIVFRQIFVybCBFbmNvZGVkPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlIVFRQVXJsRW5jb2RlZEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQgPGVtPklIVFRQIFVybCBSZXBsYWNlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUhUVFBVcmxSZXBsYWNlbWVudEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCA8ZW0+RWxlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVXU0RMRWxlbWVudEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPGVtPklFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlFeHRlbnNpYmlsaXR5RWxlbWVudEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCA8ZW0+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIHRoZSBkZWZhdWx0IGNhc2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlRU9iamVjdEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotfSAvL0hUVFBBZGFwdGVyRmFjdG9yeQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvaW50ZXJuYWwvdXRpbC9IVFRQQ29uc3RhbnRzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC91dGlsL0hUVFBDb25zdGFudHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThhMWZmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC91dGlsL0hUVFBDb25zdGFudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwudXRpbDsKLQotCi1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi1wdWJsaWMgZmluYWwgY2xhc3MgSFRUUENvbnN0YW50cwotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBRERSRVNTX0VMRU1FTlRfVEFHID0gImFkZHJlc3MiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQklORElOR19FTEVNRU5UX1RBRyA9ICJiaW5kaW5nIjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9QRVJBVElPTl9FTEVNRU5UX1RBRyA9ICJvcGVyYXRpb24iOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVJMX0VOQ09ERURfRUxFTUVOVF9UQUcgPSAidXJsRW5jb2RlZCI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVUkxfUkVQTEFDRU1FTlRfRUxFTUVOVF9UQUcgPSAidXJsUmVwbGFjZW1lbnQiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSFRUUF9OQU1FU1BBQ0VfVVJJID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9DQVRJT05fVVJJX0FUVFJJQlVURSA9ICJsb2NhdGlvbiI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBWRVJCX0FUVFJJQlVURSA9ICJ2ZXJiIjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEF0dHJpYnV0ZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBhdHRyaWJ1dGVOYW1lKQotICB7Ci0gICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpID8gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgOiBudWxsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1odHRwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9pbnRlcm5hbC91dGlsL0hUVFBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL3V0aWwvSFRUUEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDk3Zjk4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL3V0aWwvSFRUUEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC51dGlsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk7Ci0KLQotcHVibGljIGNsYXNzIEhUVFBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkgaW1wbGVtZW50cyBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkKLXsKLSAgcHVibGljIEV4dGVuc2liaWxpdHlFbGVtZW50IGNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50KFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBsb2NhbE5hbWUpCi0gIHsKLSAgICBpZiAoSFRUUENvbnN0YW50cy5IVFRQX05BTUVTUEFDRV9VUkkuZXF1YWxzKG5hbWVzcGFjZSkpCi0gICAgewotICAgICAgaWYgKEhUVFBDb25zdGFudHMuQUREUkVTU19FTEVNRU5UX1RBRy5lcXVhbHMobG9jYWxOYW1lKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIEhUVFBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVIVFRQQWRkcmVzcygpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoSFRUUENvbnN0YW50cy5CSU5ESU5HX0VMRU1FTlRfVEFHLmVxdWFscyhsb2NhbE5hbWUpKQotICAgICAgewotICAgICAgICByZXR1cm4gSFRUUEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUhUVFBCaW5kaW5nKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChIVFRQQ29uc3RhbnRzLk9QRVJBVElPTl9FTEVNRU5UX1RBRy5lcXVhbHMobG9jYWxOYW1lKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIEhUVFBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVIVFRQT3BlcmF0aW9uKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChIVFRQQ29uc3RhbnRzLlVSTF9FTkNPREVEX0VMRU1FTlRfVEFHLmVxdWFscyhsb2NhbE5hbWUpKQotICAgICAgewotICAgICAgICByZXR1cm4gSFRUUEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUhUVFBVcmxFbmNvZGVkKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChIVFRQQ29uc3RhbnRzLlVSTF9SRVBMQUNFTUVOVF9FTEVNRU5UX1RBRy5lcXVhbHMobG9jYWxOYW1lKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIEhUVFBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVIVFRQVXJsUmVwbGFjZW1lbnQoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlVuaGFuZGxlZCBsb2NhbE5hbWU6ICIgKyBsb2NhbE5hbWUpOwotICAgICAgICByZXR1cm4gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlVuaGFuZGxlZCBuYW1lc3BhY2U6ICIgKyBuYW1lc3BhY2UpOwotICAgICAgcmV0dXJuIFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLWh0dHAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2ludGVybmFsL3V0aWwvSFRUUFN3aXRjaC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvaW50ZXJuYWwvdXRpbC9IVFRQU3dpdGNoLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZTJkMWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvaW50ZXJuYWwvdXRpbC9IVFRQU3dpdGNoLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5pbnRlcm5hbC51dGlsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLio7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlN3aXRjaDwvYj4gZm9yIHRoZSBtb2RlbCdzIGluaGVyaXRhbmNlIGhpZXJhcmNoeS4KLSAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2ggZG9Td2l0Y2gob2JqZWN0KX0KLSAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwKLSAqIHN0YXJ0aW5nIHdpdGggdGhlIGFjdHVhbCBjbGFzcyBvZiB0aGUgb2JqZWN0Ci0gKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5Ci0gKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwKLSAqIHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgdGhlIHN3aXRjaC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIEhUVFBTd2l0Y2gKLXsKLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZQotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBIVFRQUGFja2FnZSBtb2RlbFBhY2thZ2U7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBIVFRQU3dpdGNoKCkKLSAgewotICAgIGlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBtb2RlbFBhY2thZ2UgPSBIVFRQUGFja2FnZS5lSU5TVEFOQ0U7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBkb1N3aXRjaChFT2JqZWN0IHRoZUVPYmplY3QpCi0gIHsKLSAgICByZXR1cm4gZG9Td2l0Y2godGhlRU9iamVjdC5lQ2xhc3MoKSwgdGhlRU9iamVjdCk7Ci0gIH0KLQotICAvKioKLSAgICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgT2JqZWN0IGRvU3dpdGNoKEVDbGFzcyB0aGVFQ2xhc3MsIEVPYmplY3QgdGhlRU9iamVjdCkKLSAgewotICAgIGlmICh0aGVFQ2xhc3MuZUNvbnRhaW5lcigpID09IG1vZGVsUGFja2FnZSkKLSAgICB7Ci0gICAgICByZXR1cm4gZG9Td2l0Y2godGhlRUNsYXNzLmdldENsYXNzaWZpZXJJRCgpLCB0aGVFT2JqZWN0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIExpc3QgZVN1cGVyVHlwZXMgPSB0aGVFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKTsKLSAgICAgIHJldHVybiBlU3VwZXJUeXBlcy5pc0VtcHR5KCkgPyBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KSA6IGRvU3dpdGNoKChFQ2xhc3MpZVN1cGVyVHlwZXMuZ2V0KDApLCB0aGVFT2JqZWN0KTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgT2JqZWN0IGRvU3dpdGNoKGludCBjbGFzc2lmaWVySUQsIEVPYmplY3QgdGhlRU9iamVjdCkKLSAgewotICAgIHN3aXRjaCAoY2xhc3NpZmllcklEKQotICAgIHsKLSAgICAgIGNhc2UgSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HOgotICAgICAgewotICAgICAgICBIVFRQQmluZGluZyBodHRwQmluZGluZyA9IChIVFRQQmluZGluZyl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZUhUVFBCaW5kaW5nKGh0dHBCaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChodHRwQmluZGluZyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUhUVFBCaW5kaW5nKGh0dHBCaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChodHRwQmluZGluZyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUV4dGVuc2liaWxpdHlFbGVtZW50KGh0dHBCaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX09QRVJBVElPTjoKLSAgICAgIHsKLSAgICAgICAgSFRUUE9wZXJhdGlvbiBodHRwT3BlcmF0aW9uID0gKEhUVFBPcGVyYXRpb24pdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VIVFRQT3BlcmF0aW9uKGh0dHBPcGVyYXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KGh0dHBPcGVyYXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlIVFRQT3BlcmF0aW9uKGh0dHBPcGVyYXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KGh0dHBPcGVyYXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudChodHRwT3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBIVFRQUGFja2FnZS5IVFRQX1VSTF9SRVBMQUNFTUVOVDoKLSAgICAgIHsKLSAgICAgICAgSFRUUFVybFJlcGxhY2VtZW50IGh0dHBVcmxSZXBsYWNlbWVudCA9IChIVFRQVXJsUmVwbGFjZW1lbnQpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VIVFRQVXJsUmVwbGFjZW1lbnQoaHR0cFVybFJlcGxhY2VtZW50KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChodHRwVXJsUmVwbGFjZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlIVFRQVXJsUmVwbGFjZW1lbnQoaHR0cFVybFJlcGxhY2VtZW50KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChodHRwVXJsUmVwbGFjZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudChodHRwVXJsUmVwbGFjZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIEhUVFBQYWNrYWdlLkhUVFBfVVJMX0VOQ09ERUQ6Ci0gICAgICB7Ci0gICAgICAgIEhUVFBVcmxFbmNvZGVkIGh0dHBVcmxFbmNvZGVkID0gKEhUVFBVcmxFbmNvZGVkKXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlSFRUUFVybEVuY29kZWQoaHR0cFVybEVuY29kZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KGh0dHBVcmxFbmNvZGVkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJSFRUUFVybEVuY29kZWQoaHR0cFVybEVuY29kZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KGh0dHBVcmxFbmNvZGVkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoaHR0cFVybEVuY29kZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIEhUVFBQYWNrYWdlLkhUVFBfQUREUkVTUzoKLSAgICAgIHsKLSAgICAgICAgSFRUUEFkZHJlc3MgaHR0cEFkZHJlc3MgPSAoSFRUUEFkZHJlc3MpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VIVFRQQWRkcmVzcyhodHRwQWRkcmVzcyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoaHR0cEFkZHJlc3MpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlIVFRQQWRkcmVzcyhodHRwQWRkcmVzcyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlV1NETEVsZW1lbnQoaHR0cEFkZHJlc3MpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudChodHRwQWRkcmVzcyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJpbmRpbmc8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CaW5kaW5nPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSFRUUEJpbmRpbmcoSFRUUEJpbmRpbmcgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSFRUUE9wZXJhdGlvbihIVFRQT3BlcmF0aW9uIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlVybCBSZXBsYWNlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlVybCBSZXBsYWNlbWVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUhUVFBVcmxSZXBsYWNlbWVudChIVFRQVXJsUmVwbGFjZW1lbnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+VXJsIEVuY29kZWQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5VcmwgRW5jb2RlZDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUhUVFBVcmxFbmNvZGVkKEhUVFBVcmxFbmNvZGVkIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkFkZHJlc3M8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5BZGRyZXNzPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSFRUUEFkZHJlc3MoSFRUUEFkZHJlc3Mgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUhUVFAgQWRkcmVzczwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklIVFRQIEFkZHJlc3M8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJSFRUUEFkZHJlc3MoamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3Mgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUhUVFAgQmluZGluZzwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklIVFRQIEJpbmRpbmc8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJSFRUUEJpbmRpbmcoamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmcgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUhUVFAgT3BlcmF0aW9uPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUhUVFAgT3BlcmF0aW9uPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSUhUVFBPcGVyYXRpb24oamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbiBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JSFRUUCBVcmwgRW5jb2RlZDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklIVFRQIFVybCBFbmNvZGVkPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSUhUVFBVcmxFbmNvZGVkKGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklIVFRQIFVybCBSZXBsYWNlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklIVFRQIFVybCBSZXBsYWNlbWVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlIVFRQVXJsUmVwbGFjZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVsZW1lbnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FbGVtZW50PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlV1NETEVsZW1lbnQoV1NETEVsZW1lbnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQob3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RU9iamVjdDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLCBidXQgdGhpcyBpcyB0aGUgbGFzdCBjYXNlIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLX0gLy9IVFRQU3dpdGNoCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU4ZWEzMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Q29udGVudDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRUNvbnRlbnQjZ2V0VHlwZSA8ZW0+VHlwZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVDb250ZW50I2dldEVQYXJ0IDxlbT5FUGFydDwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlI2dldE1JTUVDb250ZW50KCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuSU1JTUVDb250ZW50IgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIE1JTUVDb250ZW50IGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50Ci17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5UeXBlPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5UeXBlPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0VHlwZShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlI2dldE1JTUVDb250ZW50X1R5cGUoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldFR5cGUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVDb250ZW50I2dldFR5cGUgPGVtPlR5cGU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlR5cGU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXRUeXBlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRUeXBlKFN0cmluZyB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FUGFydDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RVBhcnQ8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFUGFydChQYXJ0KQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZSNnZXRNSU1FQ29udGVudF9FUGFydCgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBQYXJ0IGdldEVQYXJ0KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FQ29udGVudCNnZXRFUGFydCA8ZW0+RVBhcnQ8L2VtPn0nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVQYXJ0PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0RVBhcnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVQYXJ0KFBhcnQgdmFsdWUpOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0UGFydChTdHJpbmcgcGFydCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5QYXJ0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAbW9kZWwga2luZD0ib3BlcmF0aW9uIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0UGFydCgpOwotCi19IC8vIE1JTUVDb250ZW50CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRjNGE4MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVGYWN0b3J5OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5GYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLgotICogSXQgcHJvdmlkZXMgYSBjcmVhdGUgbWV0aG9kIGZvciBlYWNoIG5vbi1hYnN0cmFjdCBjbGFzcyBvZiB0aGUgbW9kZWwuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTUlNRUZhY3RvcnkgZXh0ZW5kcyBFRmFjdG9yeQotewotICAvKioKLSAgICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIE1JTUVGYWN0b3J5IGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVGYWN0b3J5SW1wbC5pbml0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29udGVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29udGVudDwvZW0+Jy4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgTUlNRUNvbnRlbnQgY3JlYXRlTUlNRUNvbnRlbnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBNSU1FUGFydCBjcmVhdGVNSU1FUGFydCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk11bHRpcGFydCBSZWxhdGVkPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+Jy4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgTUlNRU11bHRpcGFydFJlbGF0ZWQgY3JlYXRlTUlNRU11bHRpcGFydFJlbGF0ZWQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5NaW1lIFhtbDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+TWltZSBYbWw8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIE1JTUVNaW1lWG1sIGNyZWF0ZU1JTUVNaW1lWG1sKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgTUlNRVBhY2thZ2UgZ2V0TUlNRVBhY2thZ2UoKTsKLQotfSAvL01JTUVGYWN0b3J5CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZhMGVkOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5NaW1lIFhtbDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRU1pbWVYbWwjZ2V0RVBhcnQgPGVtPkVQYXJ0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UjZ2V0TUlNRU1pbWVYbWwoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5JTUlNRU1pbWVYbWwiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTUlNRU1pbWVYbWwgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FUGFydDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RVBhcnQ8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFUGFydChQYXJ0KQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZSNnZXRNSU1FTWltZVhtbF9FUGFydCgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBQYXJ0IGdldEVQYXJ0KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTWltZVhtbCNnZXRFUGFydCA8ZW0+RVBhcnQ8L2VtPn0nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVQYXJ0PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0RVBhcnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVQYXJ0KFBhcnQgdmFsdWUpOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0UGFydChTdHJpbmcgcGFydCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5QYXJ0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAbW9kZWwga2luZD0ib3BlcmF0aW9uIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0UGFydCgpOwotCi19IC8vIE1JTUVNaW1lWG1sCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZiZmU2YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTsKLQotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5NdWx0aXBhcnQgUmVsYXRlZDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQjZ2V0RU1JTUVQYXJ0IDxlbT5FTUlNRSBQYXJ0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UjZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWQoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5JTUlNRU11bHRpcGFydFJlbGF0ZWQiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTUlNRU11bHRpcGFydFJlbGF0ZWQgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVNSU1FIFBhcnQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYXJ0fS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVNSU1FIFBhcnQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RU1JTUUgUGFydDwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UjZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWRfRU1JTUVQYXJ0KCkKLSAgICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFydCIgY29udGFpbm1lbnQ9InRydWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVMaXN0IGdldEVNSU1FUGFydCgpOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIG1pbWVQYXJ0VHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLklNSU1FUGFydCIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBhZGRNSU1FUGFydChNSU1FUGFydCBtaW1lUGFydCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAbW9kZWwga2luZD0ib3BlcmF0aW9uIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLkxpc3QiIG1hbnk9ImZhbHNlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBMaXN0IGdldE1JTUVQYXJ0cygpOwotCi19IC8vIE1JTUVNdWx0aXBhcnRSZWxhdGVkCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkzNzJkNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVEYXRhVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGUgbW9kZWwuCi0gKiBJdCBjb250YWlucyBhY2Nlc3NvcnMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdG8gcmVwcmVzZW50Ci0gKiA8dWw+Ci0gKiAgIDxsaT5lYWNoIGNsYXNzLDwvbGk+Ci0gKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPgotICogICA8bGk+ZWFjaCBlbnVtLDwvbGk+Ci0gKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPgotICogPC91bD4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRUZhY3RvcnkKLSAqIEBtb2RlbCBraW5kPSJwYWNrYWdlIgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIE1JTUVQYWNrYWdlIGV4dGVuZHMgRVBhY2thZ2UKLXsKLSAgLyoqCi0gICAqIFRoZSBwYWNrYWdlIG5hbWUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZU5BTUUgPSAibWltZSI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIFVSSS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBlTlNfVVJJID0gImh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL01JTUUiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBuYW1lLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGVOU19QUkVGSVggPSAibWltZSI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGFja2FnZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIE1JTUVQYWNrYWdlIGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYWNrYWdlSW1wbC5pbml0KCk7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRUNvbnRlbnRJbXBsIDxlbT5Db250ZW50PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRUNvbnRlbnRJbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhY2thZ2VJbXBsI2dldE1JTUVDb250ZW50KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IE1JTUVfQ09OVEVOVCA9IDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX0NPTlRFTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfQ09OVEVOVF9fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUlNRV9DT05URU5UX19SRVFVSVJFRCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX0NPTlRFTlRfX0VMRU1FTlRfVFlQRSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfQ09OVEVOVF9fVFlQRSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUlNRV9DT05URU5UX19FUEFSVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkNvbnRlbnQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUlNRV9DT05URU5UX0ZFQVRVUkVfQ09VTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhcnRJbXBsIDxlbT5QYXJ0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhcnRJbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhY2thZ2VJbXBsI2dldE1JTUVQYXJ0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IE1JTUVfUEFSVCA9IDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX1BBUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfUEFSVF9fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUlNRV9QQVJUX19SRVFVSVJFRCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX1BBUlRfX0VMRU1FTlRfVFlQRSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5QYXJ0PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfUEFSVF9GRUFUVVJFX0NPVU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVNdWx0aXBhcnRSZWxhdGVkSW1wbCA8ZW0+TXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FTXVsdGlwYXJ0UmVsYXRlZEltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FUGFja2FnZUltcGwjZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgTUlNRV9NVUxUSVBBUlRfUkVMQVRFRCA9IDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19SRVFVSVJFRCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UX1RZUEUgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNSU1FIFBhcnQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX01VTFRJUEFSVF9SRUxBVEVEX0ZFQVRVUkVfQ09VTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRU1pbWVYbWxJbXBsIDxlbT5NaW1lIFhtbDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVNaW1lWG1sSW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYWNrYWdlSW1wbCNnZXRNSU1FTWltZVhtbCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBNSU1FX01JTUVfWE1MID0gMzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfTUlNRV9YTUxfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfTUlNRV9YTUxfX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfTUlNRV9YTUxfX1JFUVVJUkVEID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfTUlNRV9YTUxfX0VMRU1FTlRfVFlQRSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNSU1FX01JTUVfWE1MX19FUEFSVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk1pbWUgWG1sPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCA8ZW0+SU1JTUUgUGFydDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhY2thZ2VJbXBsI2dldElNSU1FUGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJTUlNRV9QQVJUID0gNDsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklNSU1FIFBhcnQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSU1JTUVfUEFSVF9GRUFUVVJFX0NPVU5UID0gMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCA8ZW0+SU1JTUUgTXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYWNrYWdlSW1wbCNnZXRJTUlNRU11bHRpcGFydFJlbGF0ZWQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSU1JTUVfTVVMVElQQVJUX1JFTEFURUQgPSA1OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1JTUUgTXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSU1JTUVfTVVMVElQQVJUX1JFTEFURURfRkVBVFVSRV9DT1VOVCA9IDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQgPGVtPklNSU1FIENvbnRlbnQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYWNrYWdlSW1wbCNnZXRJTUlNRUNvbnRlbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSU1JTUVfQ09OVEVOVCA9IDY7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JTUlNRSBDb250ZW50PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElNSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVCA9IDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwgPGVtPklNSU1FIE1pbWUgWG1sPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FUGFja2FnZUltcGwjZ2V0SU1JTUVNaW1lWG1sKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElNSU1FX01JTUVfWE1MID0gNzsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklNSU1FIE1pbWUgWG1sPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElNSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPkxpc3Q8L2VtPicgZGF0YSB0eXBlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZhLnV0aWwuTGlzdAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYWNrYWdlSW1wbCNnZXRMaXN0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IExJU1QgPSA4OwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRUNvbnRlbnQgPGVtPkNvbnRlbnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+Q29udGVudDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRUNvbnRlbnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldE1JTUVDb250ZW50KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVDb250ZW50I2dldFR5cGUgPGVtPlR5cGU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5UeXBlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FQ29udGVudCNnZXRUeXBlKCkKLSAgICogQHNlZSAjZ2V0TUlNRUNvbnRlbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldE1JTUVDb250ZW50X1R5cGUoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRUNvbnRlbnQjZ2V0RVBhcnQgPGVtPkVQYXJ0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+RVBhcnQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVDb250ZW50I2dldEVQYXJ0KCkKLSAgICogQHNlZSAjZ2V0TUlNRUNvbnRlbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldE1JTUVDb250ZW50X0VQYXJ0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFydCA8ZW0+UGFydDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFydAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0TUlNRVBhcnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFydCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIDxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYXJ0I2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKQotICAgKiBAc2VlICNnZXRNSU1FUGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0TUlNRVBhcnRfRUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQgPGVtPk11bHRpcGFydCBSZWxhdGVkPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPk11bHRpcGFydCBSZWxhdGVkPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCNnZXRFTUlNRVBhcnQgPGVtPkVNSU1FIFBhcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkVNSU1FIFBhcnQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkI2dldEVNSU1FUGFydCgpCi0gICAqIEBzZWUgI2dldE1JTUVNdWx0aXBhcnRSZWxhdGVkKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZF9FTUlNRVBhcnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNaW1lWG1sIDxlbT5NaW1lIFhtbDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5NaW1lIFhtbDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRU1pbWVYbWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldE1JTUVNaW1lWG1sKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNaW1lWG1sI2dldEVQYXJ0IDxlbT5FUGFydDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVQYXJ0PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTWltZVhtbCNnZXRFUGFydCgpCi0gICAqIEBzZWUgI2dldE1JTUVNaW1lWG1sKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRNSU1FTWltZVhtbF9FUGFydCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCA8ZW0+SU1JTUUgUGFydDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JTUlNRSBQYXJ0PC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElNSU1FUGFydCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCA8ZW0+SU1JTUUgTXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SU1JTUUgTXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SU1JTUVNdWx0aXBhcnRSZWxhdGVkKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50IDxlbT5JTUlNRSBDb250ZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklNSU1FIENvbnRlbnQ8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SU1JTUVDb250ZW50KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNaW1lWG1sIDxlbT5JTUlNRSBNaW1lIFhtbDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JTUlNRSBNaW1lIFhtbDwvZW0+Jy4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTWltZVhtbAotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRJTUlNRU1pbWVYbWwoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAne0BsaW5rIGphdmEudXRpbC5MaXN0IDxlbT5MaXN0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxlbT5MaXN0PC9lbT4nLgotICAgKiBAc2VlIGphdmEudXRpbC5MaXN0Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZhLnV0aWwuTGlzdCIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRURhdGFUeXBlIGdldExpc3QoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgTUlNRUZhY3RvcnkgZ2V0TUlNRUZhY3RvcnkoKTsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogRGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudAotICAgKiA8dWw+Ci0gICAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4KLSAgICogICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4KLSAgICogICA8bGk+ZWFjaCBlbnVtLDwvbGk+Ci0gICAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+Ci0gICAqIDwvdWw+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnRlcmZhY2UgTGl0ZXJhbHMKLSAgewotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FQ29udGVudEltcGwgPGVtPkNvbnRlbnQ8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FQ29udGVudEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYWNrYWdlSW1wbCNnZXRNSU1FQ29udGVudCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBNSU1FX0NPTlRFTlQgPSBlSU5TVEFOQ0UuZ2V0TUlNRUNvbnRlbnQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIE1JTUVfQ09OVEVOVF9fVFlQRSA9IGVJTlNUQU5DRS5nZXRNSU1FQ29udGVudF9UeXBlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgTUlNRV9DT05URU5UX19FUEFSVCA9IGVJTlNUQU5DRS5nZXRNSU1FQ29udGVudF9FUGFydCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYXJ0SW1wbCA8ZW0+UGFydDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYXJ0SW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhY2thZ2VJbXBsI2dldE1JTUVQYXJ0KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIE1JTUVfUEFSVCA9IGVJTlNUQU5DRS5nZXRNSU1FUGFydCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgTUlNRV9QQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IGVJTlNUQU5DRS5nZXRNSU1FUGFydF9FRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRU11bHRpcGFydFJlbGF0ZWRJbXBsIDxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVNdWx0aXBhcnRSZWxhdGVkSW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhY2thZ2VJbXBsI2dldE1JTUVNdWx0aXBhcnRSZWxhdGVkKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIE1JTUVfTVVMVElQQVJUX1JFTEFURUQgPSBlSU5TVEFOQ0UuZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTUlNRSBQYXJ0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVCA9IGVJTlNUQU5DRS5nZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZF9FTUlNRVBhcnQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FTWltZVhtbEltcGwgPGVtPk1pbWUgWG1sPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRU1pbWVYbWxJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FUGFja2FnZUltcGwjZ2V0TUlNRU1pbWVYbWwoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgTUlNRV9NSU1FX1hNTCA9IGVJTlNUQU5DRS5nZXRNSU1FTWltZVhtbCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIE1JTUVfTUlNRV9YTUxfX0VQQVJUID0gZUlOU1RBTkNFLmdldE1JTUVNaW1lWG1sX0VQYXJ0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQgPGVtPklNSU1FIFBhcnQ8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhY2thZ2VJbXBsI2dldElNSU1FUGFydCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJTUlNRV9QQVJUID0gZUlOU1RBTkNFLmdldElNSU1FUGFydCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkIDxlbT5JTUlNRSBNdWx0aXBhcnQgUmVsYXRlZDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FUGFja2FnZUltcGwjZ2V0SU1JTUVNdWx0aXBhcnRSZWxhdGVkKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElNSU1FX01VTFRJUEFSVF9SRUxBVEVEID0gZUlOU1RBTkNFLmdldElNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50IDxlbT5JTUlNRSBDb250ZW50PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYWNrYWdlSW1wbCNnZXRJTUlNRUNvbnRlbnQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSU1JTUVfQ09OVEVOVCA9IGVJTlNUQU5DRS5nZXRJTUlNRUNvbnRlbnQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTWltZVhtbCA8ZW0+SU1JTUUgTWltZSBYbWw8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTWltZVhtbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhY2thZ2VJbXBsI2dldElNSU1FTWltZVhtbCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJTUlNRV9NSU1FX1hNTCA9IGVJTlNUQU5DRS5nZXRJTUlNRU1pbWVYbWwoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT5MaXN0PC9lbT4nIGRhdGEgdHlwZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YS51dGlsLkxpc3QKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsLk1JTUVQYWNrYWdlSW1wbCNnZXRMaXN0KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRURhdGFUeXBlIExJU1QgPSBlSU5TVEFOQ0UuZ2V0TGlzdCgpOwotCi0gIH0KLQotfSAvL01JTUVQYWNrYWdlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyNGFiNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTsKLQotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UGFydDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhcnQjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cyA8ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZSNnZXRNSU1FUGFydCgpCi0gKiBAbW9kZWwgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLklNSU1FUGFydCIKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBNSU1FUGFydCBleHRlbmRzIEV4dGVuc2liaWxpdHlFbGVtZW50LCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydAotewotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnR9LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlI2dldE1JTUVQYXJ0X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKQotICAgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFTGlzdCBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAbW9kZWwgZXh0ZW5zaWJpbGl0eUVsZW1lbnRUeXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5JRXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50IGV4dGVuc2liaWxpdHlFbGVtZW50KTsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBtb2RlbCBraW5kPSJvcGVyYXRpb24iIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTGlzdCIgbWFueT0iZmFsc2UiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIExpc3QgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0KLX0gLy8gTUlNRVBhcnQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL2ltcGwvTUlNRUNvbnRlbnRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC9pbXBsL01JTUVDb250ZW50SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTYyOTk5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL2ltcGwvTUlNRUNvbnRlbnRJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FQ29udGVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLnV0aWwuTUlNRUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Db250ZW50PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FQ29udGVudEltcGwjZ2V0VHlwZSA8ZW0+VHlwZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRUNvbnRlbnRJbXBsI2dldEVQYXJ0IDxlbT5FUGFydDwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIE1JTUVDb250ZW50SW1wbCBleHRlbmRzIEV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCBpbXBsZW1lbnRzIE1JTUVDb250ZW50Ci17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VHlwZSgpIDxlbT5UeXBlPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRUeXBlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFR5cGUoKSA8ZW0+VHlwZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0VHlwZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgdHlwZSA9IFRZUEVfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVQYXJ0KCkgPGVtPkVQYXJ0PC9lbT59JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFUGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBQYXJ0IGVQYXJ0OwotCi0gIHByaXZhdGUgU3RyaW5nIHBhcnQ7IC8vIFRCRAotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIE1JTUVDb250ZW50SW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpCi0gIHsKLSAgICByZXR1cm4gTUlNRVBhY2thZ2UuTGl0ZXJhbHMuTUlNRV9DT05URU5UOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFR5cGUoU3RyaW5nIG5ld1R5cGUpCi0gIHsKLSAgICBTdHJpbmcgb2xkVHlwZSA9IHR5cGU7Ci0gICAgdHlwZSA9IG5ld1R5cGU7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgTUlNRVBhY2thZ2UuTUlNRV9DT05URU5UX19UWVBFLCBvbGRUeXBlLCB0eXBlKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBQYXJ0IGdldEVQYXJ0KCkKLSAgewotICAgIGlmIChlUGFydCAhPSBudWxsICYmIGVQYXJ0LmVJc1Byb3h5KCkpCi0gICAgewotICAgICAgSW50ZXJuYWxFT2JqZWN0IG9sZEVQYXJ0ID0gKEludGVybmFsRU9iamVjdCllUGFydDsKLSAgICAgIGVQYXJ0ID0gKFBhcnQpZVJlc29sdmVQcm94eShvbGRFUGFydCk7Ci0gICAgICBpZiAoZVBhcnQgIT0gb2xkRVBhcnQpCi0gICAgICB7Ci0gICAgICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgTUlNRVBhY2thZ2UuTUlNRV9DT05URU5UX19FUEFSVCwgb2xkRVBhcnQsIGVQYXJ0KSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlUGFydDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFBhcnQgYmFzaWNHZXRFUGFydCgpCi0gIHsKLSAgICByZXR1cm4gZVBhcnQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVQYXJ0KFBhcnQgbmV3RVBhcnQpCi0gIHsKLSAgICBQYXJ0IG9sZEVQYXJ0ID0gZVBhcnQ7Ci0gICAgZVBhcnQgPSBuZXdFUGFydDsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBNSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX0VQQVJULCBvbGRFUGFydCwgZVBhcnQpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFBhcnQoU3RyaW5nIHBhcnQpCi0gIHsKLSAgICB0aGlzLnBhcnQgPSBwYXJ0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRQYXJ0KCkKLSAgewotICAgIHJldHVybiBwYXJ0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX1RZUEU6Ci0gICAgICByZXR1cm4gZ2V0VHlwZSgpOwotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX0VQQVJUOgotICAgICAgaWYgKHJlc29sdmUpCi0gICAgICAgIHJldHVybiBnZXRFUGFydCgpOwotICAgICAgcmV0dXJuIGJhc2ljR2V0RVBhcnQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX1RZUEU6Ci0gICAgICBzZXRUeXBlKChTdHJpbmcpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX0VQQVJUOgotICAgICAgc2V0RVBhcnQoKFBhcnQpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgTUlNRVBhY2thZ2UuTUlNRV9DT05URU5UX19UWVBFOgotICAgICAgc2V0VHlwZShUWVBFX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgTUlNRVBhY2thZ2UuTUlNRV9DT05URU5UX19FUEFSVDoKLSAgICAgIHNldEVQYXJ0KChQYXJ0KW51bGwpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfQ09OVEVOVF9fVFlQRToKLSAgICAgIHJldHVybiBUWVBFX0VERUZBVUxUID09IG51bGwgPyB0eXBlICE9IG51bGwgOiAhVFlQRV9FREVGQVVMVC5lcXVhbHModHlwZSk7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfQ09OVEVOVF9fRVBBUlQ6Ci0gICAgICByZXR1cm4gZVBhcnQgIT0gbnVsbDsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKHR5cGU6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZCh0eXBlKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxlIG1ldGhvZHM6IERPTSAtPiBNb2RlbAotICAvLwotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIHNldFBhcnQoTUlNRUNvbnN0YW50cy5nZXRBdHRyaWJ1dGUoY2hhbmdlZEVsZW1lbnQsIE1JTUVDb25zdGFudHMuUEFSVF9BVFRSSUJVVEUpKTsKLSAgICBzZXRUeXBlKE1JTUVDb25zdGFudHMuZ2V0QXR0cmlidXRlKGNoYW5nZWRFbGVtZW50LCBNSU1FQ29uc3RhbnRzLlRZUEVfQVRUUklCVVRFKSk7Ci0gICAgcmVjb25jaWxlUmVmZXJlbmNlcyhmYWxzZSk7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gTUlNRVBhY2thZ2UuTGl0ZXJhbHMuTUlNRV9DT05URU5UX19FUEFSVCkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBNSU1FQ29uc3RhbnRzLlBBUlRfQVRUUklCVVRFLCBnZXRQYXJ0KCkpOwotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IE1JTUVQYWNrYWdlLkxpdGVyYWxzLk1JTUVfQ09OVEVOVF9fVFlQRSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBNSU1FQ29uc3RhbnRzLlRZUEVfQVRUUklCVVRFLCBnZXRUeXBlKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKE1JTUVDb25zdGFudHMuTUlNRV9OQU1FU1BBQ0VfVVJJLCBNSU1FQ29uc3RhbnRzLkNPTlRFTlRfRUxFTUVOVF9UQUcpOwotICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAgfQotCi19IC8vTUlNRUNvbnRlbnRJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC9pbXBsL01JTUVGYWN0b3J5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvaW50ZXJuYWwvaW1wbC9NSU1FRmFjdG9yeUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUxYmNhZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC9pbXBsL01JTUVGYWN0b3J5SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjA1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRGF0YVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucGx1Z2luLkVjb3JlUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS4qOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5GYWN0b3J5PC9iPi4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgTUlNRUZhY3RvcnlJbXBsIGV4dGVuZHMgRUZhY3RvcnlJbXBsIGltcGxlbWVudHMgTUlNRUZhY3RvcnkKLXsKLSAgLyoqCi0gICAqIENyZWF0ZXMgdGhlIGRlZmF1bHQgZmFjdG9yeSBpbXBsZW1lbnRhdGlvbi4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgTUlNRUZhY3RvcnkgaW5pdCgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBNSU1FRmFjdG9yeSB0aGVNSU1FRmFjdG9yeSA9IChNSU1FRmFjdG9yeSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFRmFjdG9yeSgiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvTUlNRSIpOyAvLyROT04tTkxTLTEkIAotICAgICAgaWYgKHRoZU1JTUVGYWN0b3J5ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0aGVNSU1FRmFjdG9yeTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgRWNvcmVQbHVnaW4uSU5TVEFOQ0UubG9nKGV4Y2VwdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBuZXcgTUlNRUZhY3RvcnlJbXBsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBNSU1FRmFjdG9yeUltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVPYmplY3QgY3JlYXRlKEVDbGFzcyBlQ2xhc3MpCi0gIHsKLSAgICBzd2l0Y2ggKGVDbGFzcy5nZXRDbGFzc2lmaWVySUQoKSkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfQ09OVEVOVDoKLSAgICAgIHJldHVybiBjcmVhdGVNSU1FQ29udGVudCgpOwotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX1BBUlQ6Ci0gICAgICByZXR1cm4gY3JlYXRlTUlNRVBhcnQoKTsKLSAgICAgIGNhc2UgTUlNRVBhY2thZ2UuTUlNRV9NVUxUSVBBUlRfUkVMQVRFRDoKLSAgICAgIHJldHVybiBjcmVhdGVNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpOwotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MOgotICAgICAgcmV0dXJuIGNyZWF0ZU1JTUVNaW1lWG1sKCk7Ci0gICAgICBkZWZhdWx0OgotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGNsYXNzICciICsgZUNsYXNzLmdldE5hbWUoKSArICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzaWZpZXIiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNyZWF0ZUZyb21TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgU3RyaW5nIGluaXRpYWxWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZURhdGFUeXBlLmdldENsYXNzaWZpZXJJRCgpKQotICAgIHsKLSAgICAgIGNhc2UgTUlNRVBhY2thZ2UuTElTVDoKLSAgICAgIHJldHVybiBjcmVhdGVMaXN0RnJvbVN0cmluZyhlRGF0YVR5cGUsIGluaXRpYWxWYWx1ZSk7Ci0gICAgICBkZWZhdWx0OgotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGRhdGF0eXBlICciICsgZURhdGFUeXBlLmdldE5hbWUoKSArICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzaWZpZXIiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGNvbnZlcnRUb1N0cmluZyhFRGF0YVR5cGUgZURhdGFUeXBlLCBPYmplY3QgaW5zdGFuY2VWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZURhdGFUeXBlLmdldENsYXNzaWZpZXJJRCgpKQotICAgIHsKLSAgICAgIGNhc2UgTUlNRVBhY2thZ2UuTElTVDoKLSAgICAgIHJldHVybiBjb252ZXJ0TGlzdFRvU3RyaW5nKGVEYXRhVHlwZSwgaW5zdGFuY2VWYWx1ZSk7Ci0gICAgICBkZWZhdWx0OgotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGRhdGF0eXBlICciICsgZURhdGFUeXBlLmdldE5hbWUoKSArICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzaWZpZXIiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTUlNRUNvbnRlbnQgY3JlYXRlTUlNRUNvbnRlbnQoKQotICB7Ci0gICAgTUlNRUNvbnRlbnRJbXBsIG1pbWVDb250ZW50ID0gbmV3IE1JTUVDb250ZW50SW1wbCgpOwotICAgIHJldHVybiBtaW1lQ29udGVudDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE1JTUVQYXJ0IGNyZWF0ZU1JTUVQYXJ0KCkKLSAgewotICAgIE1JTUVQYXJ0SW1wbCBtaW1lUGFydCA9IG5ldyBNSU1FUGFydEltcGwoKTsKLSAgICByZXR1cm4gbWltZVBhcnQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBNSU1FTXVsdGlwYXJ0UmVsYXRlZCBjcmVhdGVNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpCi0gIHsKLSAgICBNSU1FTXVsdGlwYXJ0UmVsYXRlZEltcGwgbWltZU11bHRpcGFydFJlbGF0ZWQgPSBuZXcgTUlNRU11bHRpcGFydFJlbGF0ZWRJbXBsKCk7Ci0gICAgcmV0dXJuIG1pbWVNdWx0aXBhcnRSZWxhdGVkOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTUlNRU1pbWVYbWwgY3JlYXRlTUlNRU1pbWVYbWwoKQotICB7Ci0gICAgTUlNRU1pbWVYbWxJbXBsIG1pbWVNaW1lWG1sID0gbmV3IE1JTUVNaW1lWG1sSW1wbCgpOwotICAgIHJldHVybiBtaW1lTWltZVhtbDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIExpc3QgY3JlYXRlTGlzdEZyb21TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgU3RyaW5nIGluaXRpYWxWYWx1ZSkKLSAgewotICAgIHJldHVybiAoTGlzdClzdXBlci5jcmVhdGVGcm9tU3RyaW5nKGVEYXRhVHlwZSwgaW5pdGlhbFZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBjb252ZXJ0TGlzdFRvU3RyaW5nKEVEYXRhVHlwZSBlRGF0YVR5cGUsIE9iamVjdCBpbnN0YW5jZVZhbHVlKQotICB7Ci0gICAgcmV0dXJuIHN1cGVyLmNvbnZlcnRUb1N0cmluZyhlRGF0YVR5cGUsIGluc3RhbmNlVmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTUlNRVBhY2thZ2UgZ2V0TUlNRVBhY2thZ2UoKQotICB7Ci0gICAgcmV0dXJuIChNSU1FUGFja2FnZSlnZXRFUGFja2FnZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZGVwcmVjYXRlZAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgc3RhdGljIE1JTUVQYWNrYWdlIGdldFBhY2thZ2UoKQotICB7Ci0gICAgcmV0dXJuIE1JTUVQYWNrYWdlLmVJTlNUQU5DRTsKLSAgfQotfSAvL01JTUVGYWN0b3J5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvaW50ZXJuYWwvaW1wbC9NSU1FTWltZVhtbEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL2ltcGwvTUlNRU1pbWVYbWxJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMmZjY2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvaW50ZXJuYWwvaW1wbC9NSU1FTWltZVhtbEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI0NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNaW1lWG1sOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwudXRpbC5NSU1FQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk1pbWUgWG1sPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FTWltZVhtbEltcGwjZ2V0RVBhcnQgPGVtPkVQYXJ0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgTUlNRU1pbWVYbWxJbXBsIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGltcGxlbWVudHMgTUlNRU1pbWVYbWwKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVQYXJ0KCkgPGVtPkVQYXJ0PC9lbT59JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFUGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBQYXJ0IGVQYXJ0OwotCi0gIHByaXZhdGUgU3RyaW5nIHBhcnQ7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgTUlNRU1pbWVYbWxJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBNSU1FUGFja2FnZS5MaXRlcmFscy5NSU1FX01JTUVfWE1MOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUGFydCBnZXRFUGFydCgpCi0gIHsKLSAgICBpZiAoZVBhcnQgIT0gbnVsbCAmJiBlUGFydC5lSXNQcm94eSgpKQotICAgIHsKLSAgICAgIEludGVybmFsRU9iamVjdCBvbGRFUGFydCA9IChJbnRlcm5hbEVPYmplY3QpZVBhcnQ7Ci0gICAgICBlUGFydCA9IChQYXJ0KWVSZXNvbHZlUHJveHkob2xkRVBhcnQpOwotICAgICAgaWYgKGVQYXJ0ICE9IG9sZEVQYXJ0KQotICAgICAgewotICAgICAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIE1JTUVQYWNrYWdlLk1JTUVfTUlNRV9YTUxfX0VQQVJULCBvbGRFUGFydCwgZVBhcnQpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVQYXJ0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUGFydCBiYXNpY0dldEVQYXJ0KCkKLSAgewotICAgIHJldHVybiBlUGFydDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RVBhcnQoUGFydCBuZXdFUGFydCkKLSAgewotICAgIFBhcnQgb2xkRVBhcnQgPSBlUGFydDsKLSAgICBlUGFydCA9IG5ld0VQYXJ0OwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIE1JTUVQYWNrYWdlLk1JTUVfTUlNRV9YTUxfX0VQQVJULCBvbGRFUGFydCwgZVBhcnQpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFBhcnQoU3RyaW5nIHBhcnQpCi0gIHsKLSAgICB0aGlzLnBhcnQgPSBwYXJ0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRQYXJ0KCkKLSAgewotICAgIHJldHVybiBwYXJ0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19FUEFSVDoKLSAgICAgIGlmIChyZXNvbHZlKQotICAgICAgICByZXR1cm4gZ2V0RVBhcnQoKTsKLSAgICAgIHJldHVybiBiYXNpY0dldEVQYXJ0KCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgTUlNRVBhY2thZ2UuTUlNRV9NSU1FX1hNTF9fRVBBUlQ6Ci0gICAgICBzZXRFUGFydCgoUGFydCluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19FUEFSVDoKLSAgICAgIHNldEVQYXJ0KChQYXJ0KW51bGwpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfTUlNRV9YTUxfX0VQQVJUOgotICAgICAgcmV0dXJuIGVQYXJ0ICE9IG51bGw7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8vCi0gIC8vIFJlY29uY2lsZSBtZXRob2RzOiBET00gLT4gTW9kZWwKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBzZXRQYXJ0KE1JTUVDb25zdGFudHMuZ2V0QXR0cmlidXRlKGNoYW5nZWRFbGVtZW50LCBNSU1FQ29uc3RhbnRzLlBBUlRfQVRUUklCVVRFKSk7Ci0gICAgcmVjb25jaWxlUmVmZXJlbmNlcyhmYWxzZSk7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gTUlNRVBhY2thZ2UuTGl0ZXJhbHMuTUlNRV9DT05URU5UX19FUEFSVCkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBNSU1FQ29uc3RhbnRzLlBBUlRfQVRUUklCVVRFLCBnZXRQYXJ0KCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKE1JTUVDb25zdGFudHMuTUlNRV9OQU1FU1BBQ0VfVVJJLCBNSU1FQ29uc3RhbnRzLk1JTUVfWE1MX0VMRU1FTlRfVEFHKTsKLSAgICByZXR1cm4gZWxlbWVudFR5cGU7Ci0gIH0KLX0gLy9NSU1FTWltZVhtbEltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL2ltcGwvTUlNRU11bHRpcGFydFJlbGF0ZWRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC9pbXBsL01JTUVNdWx0aXBhcnRSZWxhdGVkSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODU0ZjJkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL2ltcGwvTUlNRU11bHRpcGFydFJlbGF0ZWRJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uQ2hhaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0Q29udGFpbm1lbnRFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwudXRpbC5NSU1FQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk11bHRpcGFydCBSZWxhdGVkPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwuaW1wbC5NSU1FTXVsdGlwYXJ0UmVsYXRlZEltcGwjZ2V0RU1JTUVQYXJ0IDxlbT5FTUlNRSBQYXJ0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgTUlNRU11bHRpcGFydFJlbGF0ZWRJbXBsIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGltcGxlbWVudHMgTUlNRU11bHRpcGFydFJlbGF0ZWQKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVNSU1FUGFydCgpIDxlbT5FTUlNRSBQYXJ0PC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVNSU1FUGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBFTGlzdCBlTUlNRVBhcnQ7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgTUlNRU11bHRpcGFydFJlbGF0ZWRJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBNSU1FUGFja2FnZS5MaXRlcmFscy5NSU1FX01VTFRJUEFSVF9SRUxBVEVEOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUxpc3QgZ2V0RU1JTUVQYXJ0KCkKLSAgewotICAgIGlmIChlTUlNRVBhcnQgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBlTUlNRVBhcnQgPSBuZXcgRU9iamVjdENvbnRhaW5tZW50RUxpc3QoTUlNRVBhcnQuY2xhc3MsIHRoaXMsIE1JTUVQYWNrYWdlLk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQpOwotICAgIH0KLSAgICByZXR1cm4gZU1JTUVQYXJ0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkTUlNRVBhcnQoamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQgbWltZVBhcnQpCi0gIHsKLSAgICBnZXRFTUlNRVBhcnQoKS5hZGQobWltZVBhcnQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0TUlNRVBhcnRzKCkKLSAgewotICAgIHJldHVybiBnZXRFTUlNRVBhcnQoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE5vdGlmaWNhdGlvbkNoYWluIGVJbnZlcnNlUmVtb3ZlKEludGVybmFsRU9iamVjdCBvdGhlckVuZCwgaW50IGZlYXR1cmVJRCwgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgTUlNRVBhY2thZ2UuTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVDoKLSAgICAgIHJldHVybiAoKEludGVybmFsRUxpc3QpZ2V0RU1JTUVQYXJ0KCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJbnZlcnNlUmVtb3ZlKG90aGVyRW5kLCBmZWF0dXJlSUQsIG1zZ3MpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTUlNRV9QQVJUOgotICAgICAgcmV0dXJuIGdldEVNSU1FUGFydCgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQ6Ci0gICAgICBnZXRFTUlNRVBhcnQoKS5jbGVhcigpOwotICAgICAgZ2V0RU1JTUVQYXJ0KCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQ6Ci0gICAgICBnZXRFTUlNRVBhcnQoKS5jbGVhcigpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQ6Ci0gICAgICByZXR1cm4gZU1JTUVQYXJ0ICE9IG51bGwgJiYgIWVNSU1FUGFydC5pc0VtcHR5KCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoRWxlbWVudCBjaGlsZCwgQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBpZiAoTUlNRUNvbnN0YW50cy5QQVJUX0VMRU1FTlRfVEFHLmVxdWFscyhjaGlsZC5nZXRMb2NhbE5hbWUoKSkpCi0gICAgewotICAgICAgTUlNRVBhcnQgbWltZVBhcnQgPSBNSU1FRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlTUlNRVBhcnQoKTsKLSAgICAgIG1pbWVQYXJ0LnNldEVuY2xvc2luZ0RlZmluaXRpb24oZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpKTsKLSAgICAgIG1pbWVQYXJ0LnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgYWRkTUlNRVBhcnQobWltZVBhcnQpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKE1JTUVDb25zdGFudHMuTUlNRV9OQU1FU1BBQ0VfVVJJLCBNSU1FQ29uc3RhbnRzLk1VTFRJUEFSVF9SRUxBVEVEX0VMRU1FTlRfVEFHKTsKLSAgICByZXR1cm4gZWxlbWVudFR5cGU7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmlsaXR5RWxlbWVudEltcGwjY3JlYXRlRWxlbWVudCgpCi0gICAqLwotICBwdWJsaWMgRWxlbWVudCBjcmVhdGVFbGVtZW50KCkKLSAgewotICAgIEVsZW1lbnQgbmV3RWxlbWVudCA9IHN1cGVyLmNyZWF0ZUVsZW1lbnQoKTsKLQotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gZ2V0TUlNRVBhcnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBpZiAob2JqIGluc3RhbmNlb2YgTUlNRVBhcnQpCi0gICAgICB7Ci0gICAgICAgIE1JTUVQYXJ0IG1pbWVQYXJ0ID0gKE1JTUVQYXJ0KW9iajsKLSAgICAgICAgRWxlbWVudCBjaGlsZCA9ICgoTUlNRVBhcnRJbXBsKW1pbWVQYXJ0KS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotfSAvL01JTUVNdWx0aXBhcnRSZWxhdGVkSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvaW50ZXJuYWwvaW1wbC9NSU1FUGFja2FnZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL2ltcGwvTUlNRVBhY2thZ2VJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NWU0MjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvaW50ZXJuYWwvaW1wbC9NSU1FUGFja2FnZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ5NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRURhdGFUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FUGFja2FnZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVDb250ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRU1pbWVYbWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhcnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBNSU1FUGFja2FnZUltcGwgZXh0ZW5kcyBFUGFja2FnZUltcGwgaW1wbGVtZW50cyBNSU1FUGFja2FnZQotewotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIG1pbWVDb250ZW50RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIG1pbWVQYXJ0RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIG1pbWVNdWx0aXBhcnRSZWxhdGVkRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIG1pbWVNaW1lWG1sRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGltaW1lUGFydEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpbWltZU11bHRpcGFydFJlbGF0ZWRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaW1pbWVDb250ZW50RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGltaW1lTWltZVhtbEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVEYXRhVHlwZSBsaXN0RURhdGFUeXBlID0gbnVsbDsKLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4sIHJlZ2lzdGVyZWQgd2l0aAotICAgKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5IEVQYWNrYWdlLlJlZ2lzdHJ5fSBieSB0aGUgcGFja2FnZQotICAgKiBwYWNrYWdlIFVSSSB2YWx1ZS4KLSAgICogPHA+Tm90ZTogdGhlIGNvcnJlY3Qgd2F5IHRvIGNyZWF0ZSB0aGUgcGFja2FnZSBpcyB2aWEgdGhlIHN0YXRpYwotICAgKiBmYWN0b3J5IG1ldGhvZCB7QGxpbmsgI2luaXQgaW5pdCgpfSwgd2hpY2ggYWxzbyBwZXJmb3JtcwotICAgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLAotICAgKiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZSNlTlNfVVJJCi0gICAqIEBzZWUgI2luaXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIE1JTUVQYWNrYWdlSW1wbCgpCi0gIHsKLSAgICBzdXBlcihlTlNfVVJJLCBNSU1FRmFjdG9yeS5lSU5TVEFOQ0UpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzSW5pdGVkID0gZmFsc2U7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMsIHJlZ2lzdGVycywgYW5kIGluaXRpYWxpemVzIHRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhpcwotICAgKiBtb2RlbCwgYW5kIGZvciBhbnkgb3RoZXJzIHVwb24gd2hpY2ggaXQgZGVwZW5kcy4gIFNpbXBsZQotICAgKiBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCBieSBjYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGFsbAotICAgKiBkZXBlbmRlbnQgcGFja2FnZXMgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuICBUaGlzIG1ldGhvZCBkcml2ZXMKLSAgICogaW5pdGlhbGl6YXRpb24gZm9yIGludGVyZGVwZW5kZW50IHBhY2thZ2VzIGRpcmVjdGx5LCBpbiBwYXJhbGxlbAotICAgKiB3aXRoIHRoaXMgcGFja2FnZSwgaXRzZWxmLgotICAgKiA8cD5PZiB0aGlzIHBhY2thZ2UgYW5kIGl0cyBpbnRlcmRlcGVuZGVuY2llcywgYWxsIHBhY2thZ2VzIHdoaWNoCi0gICAqIGhhdmUgbm90IHlldCBiZWVuIHJlZ2lzdGVyZWQgYnkgdGhlaXIgVVJJIHZhbHVlcyBhcmUgZmlyc3QgY3JlYXRlZAotICAgKiBhbmQgcmVnaXN0ZXJlZC4gIFRoZSBwYWNrYWdlcyBhcmUgdGhlbiBpbml0aWFsaXplZCBpbiB0d28gc3RlcHM6Ci0gICAqIG1ldGEtbW9kZWwgb2JqZWN0cyBmb3IgYWxsIG9mIHRoZSBwYWNrYWdlcyBhcmUgY3JlYXRlZCBiZWZvcmUgYW55Ci0gICAqIGFyZSBpbml0aWFsaXplZCwgc2luY2Ugb25lIHBhY2thZ2UncyBtZXRhLW1vZGVsIG9iamVjdHMgbWF5IHJlZmVyIHRvCi0gICAqIHRob3NlIG9mIGFub3RoZXIuCi0gICAqIDxwPkludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgd2lsbCBub3QgYWZmZWN0IGFueSBwYWNrYWdlcyB0aGF0IGhhdmUKLSAgICogYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZU5TX1VSSQotICAgKiBAc2VlICNjcmVhdGVQYWNrYWdlQ29udGVudHMoKQotICAgKiBAc2VlICNpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBNSU1FUGFja2FnZSBpbml0KCkKLSAgewotICAgIGlmIChpc0luaXRlZCkKLSAgICAgIHJldHVybiAoTUlNRVBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoTUlNRVBhY2thZ2UuZU5TX1VSSSk7Ci0KLSAgICAvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBwYWNrYWdlCi0gICAgTUlNRVBhY2thZ2VJbXBsIHRoZU1JTUVQYWNrYWdlID0gKE1JTUVQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoZU5TX1VSSSkgaW5zdGFuY2VvZiBNSU1FUGFja2FnZUltcGwKLSAgICAgID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoZU5TX1VSSSkgOiBuZXcgTUlNRVBhY2thZ2VJbXBsKCkpOwotCi0gICAgaXNJbml0ZWQgPSB0cnVlOwotCi0gICAgLy8gSW5pdGlhbGl6ZSBzaW1wbGUgZGVwZW5kZW5jaWVzCi0gICAgV1NETFBhY2thZ2UuZUlOU1RBTkNFLmVDbGFzcygpOwotCi0gICAgLy8gQ3JlYXRlIHBhY2thZ2UgbWV0YS1kYXRhIG9iamVjdHMKLSAgICB0aGVNSU1FUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsKLQotICAgIC8vIEluaXRpYWxpemUgY3JlYXRlZCBtZXRhLWRhdGEKLSAgICB0aGVNSU1FUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7Ci0KLSAgICAvLyBNYXJrIG1ldGEtZGF0YSB0byBpbmRpY2F0ZSBpdCBjYW4ndCBiZSBjaGFuZ2VkCi0gICAgdGhlTUlNRVBhY2thZ2UuZnJlZXplKCk7Ci0KLSAgICByZXR1cm4gdGhlTUlNRVBhY2thZ2U7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0TUlNRUNvbnRlbnQoKQotICB7Ci0gICAgcmV0dXJuIG1pbWVDb250ZW50RUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRNSU1FQ29udGVudF9UeXBlKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSltaW1lQ29udGVudEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRNSU1FQ29udGVudF9FUGFydCgpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2UpbWltZUNvbnRlbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRNSU1FUGFydCgpCi0gIHsKLSAgICByZXR1cm4gbWltZVBhcnRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldE1JTUVQYXJ0X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKQotICB7Ci0gICAgcmV0dXJuIChFUmVmZXJlbmNlKW1pbWVQYXJ0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWQoKQotICB7Ci0gICAgcmV0dXJuIG1pbWVNdWx0aXBhcnRSZWxhdGVkRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZF9FTUlNRVBhcnQoKQotICB7Ci0gICAgcmV0dXJuIChFUmVmZXJlbmNlKW1pbWVNdWx0aXBhcnRSZWxhdGVkRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0TUlNRU1pbWVYbWwoKQotICB7Ci0gICAgcmV0dXJuIG1pbWVNaW1lWG1sRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRNSU1FTWltZVhtbF9FUGFydCgpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2UpbWltZU1pbWVYbWxFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJTUlNRVBhcnQoKQotICB7Ci0gICAgcmV0dXJuIGltaW1lUGFydEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJTUlNRU11bHRpcGFydFJlbGF0ZWQoKQotICB7Ci0gICAgcmV0dXJuIGltaW1lTXVsdGlwYXJ0UmVsYXRlZEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJTUlNRUNvbnRlbnQoKQotICB7Ci0gICAgcmV0dXJuIGltaW1lQ29udGVudEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJTUlNRU1pbWVYbWwoKQotICB7Ci0gICAgcmV0dXJuIGltaW1lTWltZVhtbEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVEYXRhVHlwZSBnZXRMaXN0KCkKLSAgewotICAgIHJldHVybiBsaXN0RURhdGFUeXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTUlNRUZhY3RvcnkgZ2V0TUlNRUZhY3RvcnkoKQotICB7Ci0gICAgcmV0dXJuIChNSU1FRmFjdG9yeSlnZXRFRmFjdG9yeUluc3RhbmNlKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBpc0NyZWF0ZWQgPSBmYWxzZTsKLQotICAvKioKLSAgICogQ3JlYXRlcyB0aGUgbWV0YS1tb2RlbCBvYmplY3RzIGZvciB0aGUgcGFja2FnZS4gIFRoaXMgbWV0aG9kIGlzCi0gICAqIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNyZWF0ZVBhY2thZ2VDb250ZW50cygpCi0gIHsKLSAgICBpZiAoaXNDcmVhdGVkKQotICAgICAgcmV0dXJuOwotICAgIGlzQ3JlYXRlZCA9IHRydWU7Ci0KLSAgICAvLyBDcmVhdGUgY2xhc3NlcyBhbmQgdGhlaXIgZmVhdHVyZXMKLSAgICBtaW1lQ29udGVudEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhNSU1FX0NPTlRFTlQpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUobWltZUNvbnRlbnRFQ2xhc3MsIE1JTUVfQ09OVEVOVF9fVFlQRSk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShtaW1lQ29udGVudEVDbGFzcywgTUlNRV9DT05URU5UX19FUEFSVCk7Ci0KLSAgICBtaW1lUGFydEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhNSU1FX1BBUlQpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UobWltZVBhcnRFQ2xhc3MsIE1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMpOwotCi0gICAgbWltZU11bHRpcGFydFJlbGF0ZWRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoTUlNRV9NVUxUSVBBUlRfUkVMQVRFRCk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShtaW1lTXVsdGlwYXJ0UmVsYXRlZEVDbGFzcywgTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVCk7Ci0KLSAgICBtaW1lTWltZVhtbEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhNSU1FX01JTUVfWE1MKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKG1pbWVNaW1lWG1sRUNsYXNzLCBNSU1FX01JTUVfWE1MX19FUEFSVCk7Ci0KLSAgICBpbWltZVBhcnRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSU1JTUVfUEFSVCk7Ci0KLSAgICBpbWltZU11bHRpcGFydFJlbGF0ZWRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSU1JTUVfTVVMVElQQVJUX1JFTEFURUQpOwotCi0gICAgaW1pbWVDb250ZW50RUNsYXNzID0gY3JlYXRlRUNsYXNzKElNSU1FX0NPTlRFTlQpOwotCi0gICAgaW1pbWVNaW1lWG1sRUNsYXNzID0gY3JlYXRlRUNsYXNzKElNSU1FX01JTUVfWE1MKTsKLQotICAgIC8vIENyZWF0ZSBkYXRhIHR5cGVzCi0gICAgbGlzdEVEYXRhVHlwZSA9IGNyZWF0ZUVEYXRhVHlwZShMSVNUKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKLQotICAvKioKLSAgICogQ29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwYWNrYWdlIGFuZCBpdHMgbWV0YS1tb2RlbC4gIFRoaXMKLSAgICogbWV0aG9kIGlzIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKQotICB7Ci0gICAgaWYgKGlzSW5pdGlhbGl6ZWQpCi0gICAgICByZXR1cm47Ci0gICAgaXNJbml0aWFsaXplZCA9IHRydWU7Ci0KLSAgICAvLyBJbml0aWFsaXplIHBhY2thZ2UKLSAgICBzZXROYW1lKGVOQU1FKTsKLSAgICBzZXROc1ByZWZpeChlTlNfUFJFRklYKTsKLSAgICBzZXROc1VSSShlTlNfVVJJKTsKLQotICAgIC8vIE9idGFpbiBvdGhlciBkZXBlbmRlbnQgcGFja2FnZXMKLSAgICBXU0RMUGFja2FnZSB0aGVXU0RMUGFja2FnZSA9IChXU0RMUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShXU0RMUGFja2FnZS5lTlNfVVJJKTsKLQotICAgIC8vIEFkZCBzdXBlcnR5cGVzIHRvIGNsYXNzZXMKLSAgICBtaW1lQ29udGVudEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVXU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBtaW1lQ29udGVudEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElNSU1FQ29udGVudCgpKTsKLSAgICBtaW1lUGFydEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVXU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBtaW1lUGFydEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElNSU1FUGFydCgpKTsKLSAgICBtaW1lTXVsdGlwYXJ0UmVsYXRlZEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVXU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBtaW1lTXVsdGlwYXJ0UmVsYXRlZEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpKTsKLSAgICBtaW1lTWltZVhtbEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVXU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBtaW1lTWltZVhtbEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElNSU1FTWltZVhtbCgpKTsKLQotICAgIC8vIEluaXRpYWxpemUgY2xhc3NlcyBhbmQgZmVhdHVyZXM7IGFkZCBvcGVyYXRpb25zIGFuZCBwYXJhbWV0ZXJzCi0gICAgaW5pdEVDbGFzcyhtaW1lQ29udGVudEVDbGFzcywgTUlNRUNvbnRlbnQuY2xhc3MsICJNSU1FQ29udGVudCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0TUlNRUNvbnRlbnRfVHlwZSgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwKLSAgICAgICJ0eXBlIiwgbnVsbCwgMCwgMSwgTUlNRUNvbnRlbnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldE1JTUVDb250ZW50X0VQYXJ0KCksCi0gICAgICB0aGVXU0RMUGFja2FnZS5nZXRQYXJ0KCksCi0gICAgICBudWxsLAotICAgICAgImVQYXJ0IiwgbnVsbCwgMCwgMSwgTUlNRUNvbnRlbnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIEVPcGVyYXRpb24gb3AgPSBhZGRFT3BlcmF0aW9uKG1pbWVDb250ZW50RUNsYXNzLCBudWxsLCAic2V0UGFydCIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgInBhcnQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihtaW1lQ29udGVudEVDbGFzcywgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgImdldFBhcnQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhtaW1lUGFydEVDbGFzcywgTUlNRVBhcnQuY2xhc3MsICJNSU1FUGFydCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0TUlNRVBhcnRfRUV4dGVuc2liaWxpdHlFbGVtZW50cygpLAotICAgICAgdGhlV1NETFBhY2thZ2UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZUV4dGVuc2liaWxpdHlFbGVtZW50cyIsIG51bGwsIDAsIC0xLCBNSU1FUGFydC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKG1pbWVQYXJ0RUNsYXNzLCBudWxsLCAiYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoZVdTRExQYWNrYWdlLmdldElFeHRlbnNpYmlsaXR5RWxlbWVudCgpLCAiZXh0ZW5zaWJpbGl0eUVsZW1lbnQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihtaW1lUGFydEVDbGFzcywgdGhpcy5nZXRMaXN0KCksICJnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIG1pbWVNdWx0aXBhcnRSZWxhdGVkRUNsYXNzLAotICAgICAgTUlNRU11bHRpcGFydFJlbGF0ZWQuY2xhc3MsCi0gICAgICAiTUlNRU11bHRpcGFydFJlbGF0ZWQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldE1JTUVNdWx0aXBhcnRSZWxhdGVkX0VNSU1FUGFydCgpLAotICAgICAgdGhpcy5nZXRNSU1FUGFydCgpLAotICAgICAgbnVsbCwKLSAgICAgICJlTUlNRVBhcnQiLCBudWxsLCAwLCAtMSwgTUlNRU11bHRpcGFydFJlbGF0ZWQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihtaW1lTXVsdGlwYXJ0UmVsYXRlZEVDbGFzcywgbnVsbCwgImFkZE1JTUVQYXJ0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElNSU1FUGFydCgpLCAibWltZVBhcnQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihtaW1lTXVsdGlwYXJ0UmVsYXRlZEVDbGFzcywgdGhpcy5nZXRMaXN0KCksICJnZXRNSU1FUGFydHMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhtaW1lTWltZVhtbEVDbGFzcywgTUlNRU1pbWVYbWwuY2xhc3MsICJNSU1FTWltZVhtbCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0TUlNRU1pbWVYbWxfRVBhcnQoKSwKLSAgICAgIHRoZVdTRExQYWNrYWdlLmdldFBhcnQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZVBhcnQiLCBudWxsLCAwLCAxLCBNSU1FTWltZVhtbC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKG1pbWVNaW1lWG1sRUNsYXNzLCBudWxsLCAic2V0UGFydCIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgInBhcnQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihtaW1lTWltZVhtbEVDbGFzcywgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgImdldFBhcnQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGltaW1lUGFydEVDbGFzcywKLSAgICAgIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0LmNsYXNzLAotICAgICAgIklNSU1FUGFydCIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKAotICAgICAgaW1pbWVNdWx0aXBhcnRSZWxhdGVkRUNsYXNzLAotICAgICAgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQuY2xhc3MsCi0gICAgICAiSU1JTUVNdWx0aXBhcnRSZWxhdGVkIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoCi0gICAgICBpbWltZUNvbnRlbnRFQ2xhc3MsCi0gICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudC5jbGFzcywKLSAgICAgICJJTUlNRUNvbnRlbnQiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGltaW1lTWltZVhtbEVDbGFzcywKLSAgICAgIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNaW1lWG1sLmNsYXNzLAotICAgICAgIklNSU1FTWltZVhtbCIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICAvLyBJbml0aWFsaXplIGRhdGEgdHlwZXMKLSAgICBpbml0RURhdGFUeXBlKGxpc3RFRGF0YVR5cGUsIExpc3QuY2xhc3MsICJMaXN0IiwgSVNfU0VSSUFMSVpBQkxFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgLy8gQ3JlYXRlIHJlc291cmNlCi0gICAgY3JlYXRlUmVzb3VyY2UoZU5TX1VSSSk7Ci0gIH0KLX0gLy9NSU1FUGFja2FnZUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL2ltcGwvTUlNRVBhcnRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC9pbXBsL01JTUVQYXJ0SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmFhZmNhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL2ltcGwvTUlNRVBhcnRJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbkNoYWluOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdENvbnRhaW5tZW50RUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuSW50ZXJuYWxFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC51dGlsLk1JTUVDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5EZWZpbml0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UGFydDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLmltcGwuTUlNRVBhcnRJbXBsI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMgPGVtPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgTUlNRVBhcnRJbXBsIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGltcGxlbWVudHMgTUlNRVBhcnQKLXsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIDxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVMaXN0IGVFeHRlbnNpYmlsaXR5RWxlbWVudHM7Ci0KLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgTUlNRVBhcnRJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBNSU1FUGFja2FnZS5MaXRlcmFscy5NSU1FX1BBUlQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgewotICAgIGlmIChlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzID09IG51bGwpCi0gICAgewotICAgICAgZUV4dGVuc2liaWxpdHlFbGVtZW50cyA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChFeHRlbnNpYmlsaXR5RWxlbWVudC5jbGFzcywgdGhpcywgTUlNRVBhY2thZ2UuTUlNRV9QQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyk7Ci0gICAgfQotICAgIHJldHVybiBlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi0gIHsKLSAgICBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5hZGQoZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgewotICAgIHJldHVybiBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBlSW52ZXJzZVJlbW92ZShJbnRlcm5hbEVPYmplY3Qgb3RoZXJFbmQsIGludCBmZWF0dXJlSUQsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM6Ci0gICAgICByZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUludmVyc2VSZW1vdmUob3RoZXJFbmQsIGZlYXR1cmVJRCwgbXNncyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM6Ci0gICAgICByZXR1cm4gZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM6Ci0gICAgICBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuY2xlYXIoKTsKLSAgICAgIGdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgTUlNRVBhY2thZ2UuTUlNRV9QQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzoKLSAgICAgIGdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5jbGVhcigpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM6Ci0gICAgICByZXR1cm4gZUV4dGVuc2liaWxpdHlFbGVtZW50cyAhPSBudWxsICYmICFlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzLmlzRW1wdHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxpYXRpb246IERPTSAtPiBNT0RFTAotICAvLwotICBwdWJsaWMgdm9pZCBoYW5kbGVVbnJlY29uY2lsZWRFbGVtZW50KEVsZW1lbnQgY2hpbGQsIENvbGxlY3Rpb24gcmVtYWluaW5nTW9kZWxPYmplY3RzKQotICB7Ci0gICAgaWYgKCFXU0RMQ29uc3RhbnRzLmlzTWF0Y2hpbmdOYW1lc3BhY2UoY2hpbGQuZ2V0TmFtZXNwYWNlVVJJKCksIFdTRExDb25zdGFudHMuV1NETF9OQU1FU1BBQ0VfVVJJKSkKLSAgICB7Ci0gICAgICBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCA9IHVzZUV4dGVuc2lvbkZhY3RvcmllcygpCi0gICAgICAgID8gKChXU0RMRmFjdG9yeUltcGwpV1NETEZhY3RvcnkuZUlOU1RBTkNFKS5jcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudChnZXROYW1lc3BhY2UoY2hpbGQpLCBnZXRMb2NhbE5hbWUoY2hpbGQpKQotICAgICAgICA6ICgoV1NETEZhY3RvcnlJbXBsKVdTRExGYWN0b3J5LmVJTlNUQU5DRSkuY3JlYXRlVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KCk7Ci0KLSAgICAgIGV4dGVuc2liaWxpdHlFbGVtZW50LnNldEVuY2xvc2luZ0RlZmluaXRpb24oZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpKTsKLSAgICAgIGV4dGVuc2liaWxpdHlFbGVtZW50LnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiB1c2VFeHRlbnNpb25GYWN0b3JpZXMoKQotICB7Ci0gICAgLy8gVXNlIGV4dGVuc2lvbiBmYWN0b3JpZXMgYnkgZGVmYXVsdC4KLSAgICByZXR1cm4gZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpID09IG51bGwgPyB0cnVlIDogKChEZWZpbml0aW9uSW1wbClnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkpLmdldFVzZUV4dGVuc2lvbkZhY3RvcmllcygpOwotICB9Ci0KLSAgcHVibGljIFFOYW1lIGdldEVsZW1lbnRUeXBlKCkKLSAgewotICAgIGlmIChlbGVtZW50VHlwZSA9PSBudWxsKQotICAgICAgZWxlbWVudFR5cGUgPSBuZXcgUU5hbWUoTUlNRUNvbnN0YW50cy5NSU1FX05BTUVTUEFDRV9VUkksIE1JTUVDb25zdGFudHMuUEFSVF9FTEVNRU5UX1RBRyk7Ci0gICAgcmV0dXJuIGVsZW1lbnRUeXBlOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsI2NyZWF0ZUVsZW1lbnQoKQotICAgKi8KLSAgcHVibGljIEVsZW1lbnQgY3JlYXRlRWxlbWVudCgpCi0gIHsKLSAgICBFbGVtZW50IG5ld0VsZW1lbnQgPSBzdXBlci5jcmVhdGVFbGVtZW50KCk7Ci0KLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBFbGVtZW50IGNoaWxkID0gKChFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwpZXh0ZW5zaWJpbGl0eUVsZW1lbnQpLmNyZWF0ZUVsZW1lbnQoKTsKLSAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOwotICAgIH0KLQotICAgIHJldHVybiBuZXdFbGVtZW50OwotICB9Ci19IC8vTUlNRVBhcnRJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC91dGlsL01JTUVBZGFwdGVyRmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvaW50ZXJuYWwvdXRpbC9NSU1FQWRhcHRlckZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUzYjdiNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC91dGlsL01JTUVBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwudXRpbDsKLQotCi1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmllcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5pbXBsLkFkYXB0ZXJGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuKjsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBUaGUgPGI+QWRhcHRlciBGYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLgotICogSXQgcHJvdmlkZXMgYW4gYWRhcHRlciA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBNSU1FQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBBZGFwdGVyRmFjdG9yeUltcGwKLXsKLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgTUlNRVBhY2thZ2UgbW9kZWxQYWNrYWdlOwotCi0gIC8qKgotICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBhZGFwdGVyIGZhY3RvcnkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTUlNRUFkYXB0ZXJGYWN0b3J5KCkKLSAgewotICAgIGlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBtb2RlbFBhY2thZ2UgPSBNSU1FUGFja2FnZS5lSU5TVEFOQ0U7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciB0aGlzIGZhY3RvcnkgaXMgYXBwbGljYWJsZSBmb3IgdGhlIHR5cGUgb2YgdGhlIG9iamVjdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBvYmplY3QgaXMgZWl0aGVyIHRoZSBtb2RlbCdzIHBhY2thZ2Ugb3IgaXMgYW4gaW5zdGFuY2Ugb2JqZWN0IG9mIHRoZSBtb2RlbC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gd2hldGhlciB0aGlzIGZhY3RvcnkgaXMgYXBwbGljYWJsZSBmb3IgdGhlIHR5cGUgb2YgdGhlIG9iamVjdC4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgaWYgKG9iamVjdCA9PSBtb2RlbFBhY2thZ2UpCi0gICAgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBFT2JqZWN0KQotICAgIHsKLSAgICAgIHJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBzd2l0Y2ggdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBNSU1FU3dpdGNoIG1vZGVsU3dpdGNoID0gbmV3IE1JTUVTd2l0Y2goKQotICAgIHsKLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZU1JTUVDb250ZW50KE1JTUVDb250ZW50IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU1JTUVDb250ZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VNSU1FUGFydChNSU1FUGFydCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVNSU1FUGFydEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlTUlNRU11bHRpcGFydFJlbGF0ZWQoTUlNRU11bHRpcGFydFJlbGF0ZWQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlTUlNRU11bHRpcGFydFJlbGF0ZWRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZU1JTUVNaW1lWG1sKE1JTUVNaW1lWG1sIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU1JTUVNaW1lWG1sQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJTUlNRVBhcnQoamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSU1JTUVQYXJ0QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJTUlNRU11bHRpcGFydFJlbGF0ZWQoamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSU1JTUVNdWx0aXBhcnRSZWxhdGVkQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJTUlNRUNvbnRlbnQoamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSU1JTUVDb250ZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJTUlNRU1pbWVYbWwoamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSU1JTUVNaW1lWG1sQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VXU0RMRWxlbWVudChXU0RMRWxlbWVudCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVXU0RMRWxlbWVudEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUV4dGVuc2liaWxpdHlFbGVtZW50KEV4dGVuc2liaWxpdHlFbGVtZW50IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlFeHRlbnNpYmlsaXR5RWxlbWVudEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQob3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgZGVmYXVsdENhc2UoRU9iamVjdCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVFT2JqZWN0QWRhcHRlcigpOwotICAgICAgfQotICAgIH07Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYW4gYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSBvYmplY3QgdG8gYWRhcHQuCi0gICAqIEByZXR1cm4gdGhlIGFkYXB0ZXIgZm9yIHRoZSA8Y29kZT50YXJnZXQ8L2NvZGU+LgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVBZGFwdGVyKE5vdGlmaWVyIHRhcmdldCkKLSAgewotICAgIHJldHVybiAoQWRhcHRlciltb2RlbFN3aXRjaC5kb1N3aXRjaCgoRU9iamVjdCl0YXJnZXQpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVDb250ZW50IDxlbT5Db250ZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FQ29udGVudAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVNSU1FQ29udGVudEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhcnQgPGVtPlBhcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYXJ0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZU1JTUVQYXJ0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCA8ZW0+TXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZU1JTUVNdWx0aXBhcnRSZWxhdGVkQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTWltZVhtbCA8ZW0+TWltZSBYbWw8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNaW1lWG1sCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZU1JTUVNaW1lWG1sQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0IDxlbT5JTUlNRSBQYXJ0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlNSU1FUGFydEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCA8ZW0+SU1JTUUgTXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSU1JTUVNdWx0aXBhcnRSZWxhdGVkQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50IDxlbT5JTUlNRSBDb250ZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlNSU1FQ29udGVudEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTWltZVhtbCA8ZW0+SU1JTUUgTWltZSBYbWw8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSU1JTUVNaW1lWG1sQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50IDxlbT5FbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZVdTRExFbGVtZW50QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCA8ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUV4dGVuc2liaWxpdHlFbGVtZW50QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IDxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgdGhlIGRlZmF1bHQgY2FzZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVFT2JqZWN0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi19IC8vTUlNRUFkYXB0ZXJGYWN0b3J5CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC91dGlsL01JTUVDb25zdGFudHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL3V0aWwvTUlNRUNvbnN0YW50cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDYzMjc4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL3V0aWwvTUlNRUNvbnN0YW50cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC51dGlsOwotCi0KLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLXB1YmxpYyBmaW5hbCBjbGFzcyBNSU1FQ29uc3RhbnRzCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTlRFTlRfRUxFTUVOVF9UQUcgPSAiY29udGVudCI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNSU1FX1hNTF9FTEVNRU5UX1RBRyA9ICJtaW1lWG1sIjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1VTFRJUEFSVF9SRUxBVEVEX0VMRU1FTlRfVEFHID0gIm11bHRpcGFydFJlbGF0ZWQiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSVF9FTEVNRU5UX1RBRyA9ICJwYXJ0IjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfTkFNRVNQQUNFX1VSSSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL21pbWUvIjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlRfQVRUUklCVVRFID0gInBhcnQiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9BVFRSSUJVVEUgPSAidHlwZSI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBdHRyaWJ1dGUoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgYXR0cmlidXRlTmFtZSkKLSAgewotICAgIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSA/IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIDogbnVsbDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvaW50ZXJuYWwvdXRpbC9NSU1FRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC91dGlsL01JTUVFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJjYjhjNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1taW1lL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9pbnRlcm5hbC91dGlsL01JTUVFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuaW50ZXJuYWwudXRpbDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5OwotCi0KLXB1YmxpYyBjbGFzcyBNSU1FRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5IGltcGxlbWVudHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Ci17Ci0gIHB1YmxpYyBFeHRlbnNpYmlsaXR5RWxlbWVudCBjcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudChTdHJpbmcgbmFtZXNwYWNlLCBTdHJpbmcgbG9jYWxOYW1lKQotICB7Ci0gICAgaWYgKE1JTUVDb25zdGFudHMuTUlNRV9OQU1FU1BBQ0VfVVJJLmVxdWFscyhuYW1lc3BhY2UpKQotICAgIHsKLSAgICAgIGlmIChNSU1FQ29uc3RhbnRzLkNPTlRFTlRfRUxFTUVOVF9UQUcuZXF1YWxzKGxvY2FsTmFtZSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBNSU1FRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlTUlNRUNvbnRlbnQoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKE1JTUVDb25zdGFudHMuTUlNRV9YTUxfRUxFTUVOVF9UQUcuZXF1YWxzKGxvY2FsTmFtZSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBNSU1FRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlTUlNRU1pbWVYbWwoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKE1JTUVDb25zdGFudHMuTVVMVElQQVJUX1JFTEFURURfRUxFTUVOVF9UQUcuZXF1YWxzKGxvY2FsTmFtZSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBNSU1FRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlTUlNRU11bHRpcGFydFJlbGF0ZWQoKTsKLSAgICAgIH0KLSAgICAgIC8qIFRPRE8gLSBmaXggdGhlIHJvc2UgbW9kZWwKLSAgICAgICBlbHNlIGlmICgicGFydCIuZXF1YWxzKGxvY2FsTmFtZSkpCi0gICAgICAgewotICAgICAgIHJldHVybiBNSU1FRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlTUlNRVBhcnQoKTsKLSAgICAgICB9Ci0gICAgICAgKi8KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlVuaGFuZGxlZCBsb2NhbE5hbWU6ICIgKyBsb2NhbE5hbWUpOwotICAgICAgICByZXR1cm4gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlVuaGFuZGxlZCBuYW1lc3BhY2U6ICIgKyBuYW1lc3BhY2UpOwotICAgICAgcmV0dXJuIFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLW1pbWUvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2ludGVybmFsL3V0aWwvTUlNRVN3aXRjaC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvaW50ZXJuYWwvdXRpbC9NSU1FU3dpdGNoLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNzE4YjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvaW50ZXJuYWwvdXRpbC9NSU1FU3dpdGNoLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC51dGlsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLio7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlN3aXRjaDwvYj4gZm9yIHRoZSBtb2RlbCdzIGluaGVyaXRhbmNlIGhpZXJhcmNoeS4KLSAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2ggZG9Td2l0Y2gob2JqZWN0KX0KLSAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwKLSAqIHN0YXJ0aW5nIHdpdGggdGhlIGFjdHVhbCBjbGFzcyBvZiB0aGUgb2JqZWN0Ci0gKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5Ci0gKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwKLSAqIHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgdGhlIHN3aXRjaC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIE1JTUVTd2l0Y2gKLXsKLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZQotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBNSU1FUGFja2FnZSBtb2RlbFBhY2thZ2U7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBNSU1FU3dpdGNoKCkKLSAgewotICAgIGlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBtb2RlbFBhY2thZ2UgPSBNSU1FUGFja2FnZS5lSU5TVEFOQ0U7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBkb1N3aXRjaChFT2JqZWN0IHRoZUVPYmplY3QpCi0gIHsKLSAgICByZXR1cm4gZG9Td2l0Y2godGhlRU9iamVjdC5lQ2xhc3MoKSwgdGhlRU9iamVjdCk7Ci0gIH0KLQotICAvKioKLSAgICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgT2JqZWN0IGRvU3dpdGNoKEVDbGFzcyB0aGVFQ2xhc3MsIEVPYmplY3QgdGhlRU9iamVjdCkKLSAgewotICAgIGlmICh0aGVFQ2xhc3MuZUNvbnRhaW5lcigpID09IG1vZGVsUGFja2FnZSkKLSAgICB7Ci0gICAgICByZXR1cm4gZG9Td2l0Y2godGhlRUNsYXNzLmdldENsYXNzaWZpZXJJRCgpLCB0aGVFT2JqZWN0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIExpc3QgZVN1cGVyVHlwZXMgPSB0aGVFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKTsKLSAgICAgIHJldHVybiBlU3VwZXJUeXBlcy5pc0VtcHR5KCkgPyBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KSA6IGRvU3dpdGNoKChFQ2xhc3MpZVN1cGVyVHlwZXMuZ2V0KDApLCB0aGVFT2JqZWN0KTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgT2JqZWN0IGRvU3dpdGNoKGludCBjbGFzc2lmaWVySUQsIEVPYmplY3QgdGhlRU9iamVjdCkKLSAgewotICAgIHN3aXRjaCAoY2xhc3NpZmllcklEKQotICAgIHsKLSAgICAgIGNhc2UgTUlNRVBhY2thZ2UuTUlNRV9DT05URU5UOgotICAgICAgewotICAgICAgICBNSU1FQ29udGVudCBtaW1lQ29udGVudCA9IChNSU1FQ29udGVudCl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZU1JTUVDb250ZW50KG1pbWVDb250ZW50KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChtaW1lQ29udGVudCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSU1JTUVDb250ZW50KG1pbWVDb250ZW50KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChtaW1lQ29udGVudCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUV4dGVuc2liaWxpdHlFbGVtZW50KG1pbWVDb250ZW50KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBNSU1FUGFja2FnZS5NSU1FX1BBUlQ6Ci0gICAgICB7Ci0gICAgICAgIE1JTUVQYXJ0IG1pbWVQYXJ0ID0gKE1JTUVQYXJ0KXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlTUlNRVBhcnQobWltZVBhcnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KG1pbWVQYXJ0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJTUlNRVBhcnQobWltZVBhcnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KG1pbWVQYXJ0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRXh0ZW5zaWJpbGl0eUVsZW1lbnQobWltZVBhcnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfTVVMVElQQVJUX1JFTEFURUQ6Ci0gICAgICB7Ci0gICAgICAgIE1JTUVNdWx0aXBhcnRSZWxhdGVkIG1pbWVNdWx0aXBhcnRSZWxhdGVkID0gKE1JTUVNdWx0aXBhcnRSZWxhdGVkKXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlTUlNRU11bHRpcGFydFJlbGF0ZWQobWltZU11bHRpcGFydFJlbGF0ZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KG1pbWVNdWx0aXBhcnRSZWxhdGVkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJTUlNRU11bHRpcGFydFJlbGF0ZWQobWltZU11bHRpcGFydFJlbGF0ZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KG1pbWVNdWx0aXBhcnRSZWxhdGVkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRXh0ZW5zaWJpbGl0eUVsZW1lbnQobWltZU11bHRpcGFydFJlbGF0ZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIE1JTUVQYWNrYWdlLk1JTUVfTUlNRV9YTUw6Ci0gICAgICB7Ci0gICAgICAgIE1JTUVNaW1lWG1sIG1pbWVNaW1lWG1sID0gKE1JTUVNaW1lWG1sKXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlTUlNRU1pbWVYbWwobWltZU1pbWVYbWwpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KG1pbWVNaW1lWG1sKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJTUlNRU1pbWVYbWwobWltZU1pbWVYbWwpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KG1pbWVNaW1lWG1sKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRXh0ZW5zaWJpbGl0eUVsZW1lbnQobWltZU1pbWVYbWwpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Db250ZW50PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q29udGVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZU1JTUVDb250ZW50KE1JTUVDb250ZW50IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlBhcnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5QYXJ0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlTUlNRVBhcnQoTUlNRVBhcnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+TXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZU1JTUVNdWx0aXBhcnRSZWxhdGVkKE1JTUVNdWx0aXBhcnRSZWxhdGVkIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPk1pbWUgWG1sPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+TWltZSBYbWw8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VNSU1FTWltZVhtbChNSU1FTWltZVhtbCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JTUlNRSBQYXJ0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SU1JTUUgUGFydDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlNSU1FUGFydChqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JTUlNRSBNdWx0aXBhcnQgUmVsYXRlZDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklNSU1FIE11bHRpcGFydCBSZWxhdGVkPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSU1JTUVNdWx0aXBhcnRSZWxhdGVkKGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklNSU1FIENvbnRlbnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JTUlNRSBDb250ZW50PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSU1JTUVDb250ZW50KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklNSU1FIE1pbWUgWG1sPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SU1JTUUgTWltZSBYbWw8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJTUlNRU1pbWVYbWwoamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RWxlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVsZW1lbnQ8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VXU0RMRWxlbWVudChXU0RMRWxlbWVudCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudChFeHRlbnNpYmlsaXR5RWxlbWVudCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2gsIGJ1dCB0aGlzIGlzIHRoZSBsYXN0IGNhc2UgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVPYmplY3Q8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGRlZmF1bHRDYXNlKEVPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotfSAvL01JTUVTd2l0Y2gKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGQ5ZDFiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5BZGRyZXNzPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQWRkcmVzcyNnZXRMb2NhdGlvblVSSSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUEFkZHJlc3MoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5JU09BUEFkZHJlc3MiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgU09BUEFkZHJlc3MgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3MKLXsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldExvY2F0aW9uVVJJKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUEFkZHJlc3NfTG9jYXRpb25VUkkoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldExvY2F0aW9uVVJJKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQWRkcmVzcyNnZXRMb2NhdGlvblVSSSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXRMb2NhdGlvblVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0TG9jYXRpb25VUkkoU3RyaW5nIHZhbHVlKTsKLQotfSAvLyBTT0FQQWRkcmVzcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMmFmZTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmc8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCaW5kaW5nI2dldFRyYW5zcG9ydFVSSSA8ZW0+VHJhbnNwb3J0IFVSSTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCaW5kaW5nI2dldFN0eWxlIDxlbT5TdHlsZTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBCaW5kaW5nKCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuSVNPQVBCaW5kaW5nIgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIFNPQVBCaW5kaW5nIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nCi17Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlRyYW5zcG9ydCBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlRyYW5zcG9ydCBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlRyYW5zcG9ydCBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRUcmFuc3BvcnRVUkkoU3RyaW5nKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZSNnZXRTT0FQQmluZGluZ19UcmFuc3BvcnRVUkkoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldFRyYW5zcG9ydFVSSSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJpbmRpbmcjZ2V0VHJhbnNwb3J0VVJJIDxlbT5UcmFuc3BvcnQgVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5UcmFuc3BvcnQgVVJJPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0VHJhbnNwb3J0VVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRUcmFuc3BvcnRVUkkoU3RyaW5nIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlN0eWxlPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5TdHlsZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFN0eWxlKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUEJpbmRpbmdfU3R5bGUoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldFN0eWxlKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQmluZGluZyNnZXRTdHlsZSA8ZW0+U3R5bGU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlN0eWxlPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0U3R5bGUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldFN0eWxlKFN0cmluZyB2YWx1ZSk7Ci19IC8vIFNPQVBCaW5kaW5nCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZlZTczNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Cb2R5PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keSNnZXRVc2UgPGVtPlVzZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5I2dldE5hbWVzcGFjZVVSSSA8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5I2dldEVFbmNvZGluZ1N0eWxlcyA8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5I2dldEVQYXJ0cyA8ZW0+RVBhcnRzPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUEJvZHkoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5JU09BUEJvZHkiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgU09BUEJvZHkgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHkKLXsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Vc2U8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVzZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFVzZShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBCb2R5X1VzZSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0VXNlKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keSNnZXRVc2UgPGVtPlVzZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VXNlPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0VXNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRVc2UoU3RyaW5nIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldE5hbWVzcGFjZVVSSShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBCb2R5X05hbWVzcGFjZVVSSSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0TmFtZXNwYWNlVVJJKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keSNnZXROYW1lc3BhY2VVUkkgPGVtPk5hbWVzcGFjZSBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXROYW1lc3BhY2VVUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldE5hbWVzcGFjZVVSSShTdHJpbmcgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLSAgICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+JyBhdHRyaWJ1dGUgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZSNnZXRTT0FQQm9keV9FRW5jb2RpbmdTdHlsZXMoKQotICAgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5JU3RyaW5nIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFTGlzdCBnZXRFRW5jb2RpbmdTdHlsZXMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBhcnRzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KLSAgICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnR9LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RVBhcnRzPC9lbT4nIHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVQYXJ0czwvZW0+JyByZWZlcmVuY2UgbGlzdC4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUEJvZHlfRVBhcnRzKCkKLSAgICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVMaXN0IGdldEVQYXJ0cygpOwotfSAvLyBTT0FQQm9keQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMGUzNjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUZhY3Rvcnk7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuCi0gKiBJdCBwcm92aWRlcyBhIGNyZWF0ZSBtZXRob2QgZm9yIGVhY2ggbm9uLWFic3RyYWN0IGNsYXNzIG9mIHRoZSBtb2RlbC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBTT0FQRmFjdG9yeSBleHRlbmRzIEVGYWN0b3J5Ci17Ci0gIC8qKgotICAgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU09BUEZhY3RvcnkgZUlOU1RBTkNFID0gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEZhY3RvcnlJbXBsLmluaXQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTT0FQQmluZGluZyBjcmVhdGVTT0FQQmluZGluZygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJvZHk8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJvZHk8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFNPQVBCb2R5IGNyZWF0ZVNPQVBCb2R5KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SGVhZGVyIEJhc2U8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkhlYWRlciBCYXNlPC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTT0FQSGVhZGVyQmFzZSBjcmVhdGVTT0FQSGVhZGVyQmFzZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkZhdWx0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5GYXVsdDwvZW0+Jy4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU09BUEZhdWx0IGNyZWF0ZVNPQVBGYXVsdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTT0FQT3BlcmF0aW9uIGNyZWF0ZVNPQVBPcGVyYXRpb24oKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5BZGRyZXNzPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5BZGRyZXNzPC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTT0FQQWRkcmVzcyBjcmVhdGVTT0FQQWRkcmVzcygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkhlYWRlciBGYXVsdDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SGVhZGVyIEZhdWx0PC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTT0FQSGVhZGVyRmF1bHQgY3JlYXRlU09BUEhlYWRlckZhdWx0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SGVhZGVyPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5IZWFkZXI8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFNPQVBIZWFkZXIgY3JlYXRlU09BUEhlYWRlcigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFNPQVBQYWNrYWdlIGdldFNPQVBQYWNrYWdlKCk7Ci19IC8vU09BUEZhY3RvcnkKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZWU3ZjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RmF1bHQ8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCNnZXRVc2UgPGVtPlVzZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCNnZXROYW1lc3BhY2VVUkkgPGVtPk5hbWVzcGFjZSBVUkk8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQRmF1bHQjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBGYXVsdCgpCi0gKiBAbW9kZWwgZmVhdHVyZXM9ImVFbmNvZGluZ1N0eWxlcyIgCi0gKiAgICAgICAgZUVuY29kaW5nU3R5bGVzRGF0YVR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5JU3RyaW5nIiBlRW5jb2RpbmdTdHlsZXNNYW55PSJ0cnVlIiBlRW5jb2RpbmdTdHlsZXNTdXBwcmVzc2VkR2V0VmlzaWJpbGl0eT0idHJ1ZSIgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLklTT0FQRmF1bHQiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgU09BUEZhdWx0IGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdAotewotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlVzZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+VXNlPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0VXNlKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUEZhdWx0X1VzZSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0VXNlKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQRmF1bHQjZ2V0VXNlIDxlbT5Vc2U8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlVzZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldFVzZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0VXNlKFN0cmluZyB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXROYW1lc3BhY2VVUkkoU3RyaW5nKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZSNnZXRTT0FQRmF1bHRfTmFtZXNwYWNlVVJJKCkKLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBnZXROYW1lc3BhY2VVUkkoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCNnZXROYW1lc3BhY2VVUkkgPGVtPk5hbWVzcGFjZSBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXROYW1lc3BhY2VVUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldE5hbWVzcGFjZVVSSShTdHJpbmcgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0TmFtZShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBGYXVsdF9OYW1lKCkKLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBnZXROYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQRmF1bHQjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldE5hbWUoU3RyaW5nIHZhbHVlKTsKLQotfSAvLyBTT0FQRmF1bHQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhlNjU2OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SGVhZGVyPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyI2dldEhlYWRlckZhdWx0cyA8ZW0+SGVhZGVyIEZhdWx0czwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBIZWFkZXIoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuSVNPQVBIZWFkZXIiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgU09BUEhlYWRlciBleHRlbmRzIFNPQVBIZWFkZXJCYXNlLCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5IZWFkZXIgRmF1bHRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyRmF1bHR9LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+SGVhZGVyIEZhdWx0czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5IZWFkZXIgRmF1bHRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZSNnZXRTT0FQSGVhZGVyX0hlYWRlckZhdWx0cygpCi0gICAqIEBtb2RlbCB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckZhdWx0IiBjb250YWlubWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUxpc3QgZ2V0SGVhZGVyRmF1bHRzKCk7Ci0KLX0gLy8gU09BUEhlYWRlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2Y2Y3MWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlciBCYXNlPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXRVc2UgPGVtPlVzZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldE5hbWVzcGFjZVVSSSA8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldEVFbmNvZGluZ1N0eWxlcyA8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldE1lc3NhZ2UgPGVtPk1lc3NhZ2U8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXRQYXJ0IDxlbT5QYXJ0PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2UjZ2V0RU1lc3NhZ2UgPGVtPkVNZXNzYWdlPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2UjZ2V0RVBhcnQgPGVtPkVQYXJ0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUEhlYWRlckJhc2UoKQotICogQG1vZGVsCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgU09BUEhlYWRlckJhc2UgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudAotewotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Vc2U8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVzZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFVzZShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBIZWFkZXJCYXNlX1VzZSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0VXNlKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXRVc2UgPGVtPlVzZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VXNlPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0VXNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRVc2UoU3RyaW5nIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldE5hbWVzcGFjZVVSSShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBIZWFkZXJCYXNlX05hbWVzcGFjZVVSSSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0TmFtZXNwYWNlVVJJKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXROYW1lc3BhY2VVUkkgPGVtPk5hbWVzcGFjZSBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXROYW1lc3BhY2VVUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldE5hbWVzcGFjZVVSSShTdHJpbmcgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLSAgICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+JyBhdHRyaWJ1dGUgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZSNnZXRTT0FQSGVhZGVyQmFzZV9FRW5jb2RpbmdTdHlsZXMoKQotICAgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5JU3RyaW5nIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFTGlzdCBnZXRFRW5jb2RpbmdTdHlsZXMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVNZXNzYWdlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FTWVzc2FnZTwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldEVNZXNzYWdlKE1lc3NhZ2UpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBIZWFkZXJCYXNlX0VNZXNzYWdlKCkKLSAgICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBNZXNzYWdlIGdldEVNZXNzYWdlKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXRFTWVzc2FnZSA8ZW0+RU1lc3NhZ2U8L2VtPn0nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVNZXNzYWdlPC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0RU1lc3NhZ2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVNZXNzYWdlKE1lc3NhZ2UgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RVBhcnQ8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVQYXJ0PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjc2V0RVBhcnQoUGFydCkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUEhlYWRlckJhc2VfRVBhcnQoKQotICAgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFBhcnQgZ2V0RVBhcnQoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldEVQYXJ0IDxlbT5FUGFydDwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RVBhcnQ8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNnZXRFUGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0RVBhcnQoUGFydCB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk1lc3NhZ2U8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRNZXNzYWdlKFFOYW1lKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZSNnZXRTT0FQSGVhZGVyQmFzZV9NZXNzYWdlKCkKLSAgICogQG1vZGVsIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5RTmFtZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgUU5hbWUgZ2V0TWVzc2FnZSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2UjZ2V0TWVzc2FnZSA8ZW0+TWVzc2FnZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TWVzc2FnZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldE1lc3NhZ2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldE1lc3NhZ2UoUU5hbWUgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5QYXJ0PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0UGFydChTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBIZWFkZXJCYXNlX1BhcnQoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldFBhcnQoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldFBhcnQgPGVtPlBhcnQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlBhcnQ8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXRQYXJ0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRQYXJ0KFN0cmluZyB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAbW9kZWwga2luZD0ib3BlcmF0aW9uIiB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5JTGlzdCIgbWFueT0iZmFsc2UiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIExpc3QgZ2V0RW5jb2RpbmdTdHlsZXMoKTsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBtb2RlbCBlbmNvZGluZ1N0eWxlc1R5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLklMaXN0IiBlbmNvZGluZ1N0eWxlc01hbnk9ImZhbHNlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVuY29kaW5nU3R5bGVzKExpc3QgZW5jb2RpbmdTdHlsZXMpOwotCi19IC8vIFNPQVBIZWFkZXJCYXNlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmU4Y2JkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXIgRmF1bHQ8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBIZWFkZXJGYXVsdCgpCi0gKiBAbW9kZWwgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5JU09BUEhlYWRlckZhdWx0IgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIFNPQVBIZWFkZXJGYXVsdCBleHRlbmRzIFNPQVBIZWFkZXJCYXNlLCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQKLXsKLX0gLy8gU09BUEhlYWRlckZhdWx0CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYTEyYmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQT3BlcmF0aW9uI2dldFNvYXBBY3Rpb25VUkkgPGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBPcGVyYXRpb24jZ2V0U3R5bGUgPGVtPlN0eWxlPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUE9wZXJhdGlvbigpCi0gKiBAbW9kZWwgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLklTT0FQT3BlcmF0aW9uIgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIFNPQVBPcGVyYXRpb24gZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbgotewotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Tb2FwIEFjdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+U29hcCBBY3Rpb24gVVJJPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0U29hcEFjdGlvblVSSShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlI2dldFNPQVBPcGVyYXRpb25fU29hcEFjdGlvblVSSSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0U29hcEFjdGlvblVSSSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbiNnZXRTb2FwQWN0aW9uVVJJIDxlbT5Tb2FwIEFjdGlvbiBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldFNvYXBBY3Rpb25VUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldFNvYXBBY3Rpb25VUkkoU3RyaW5nIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlN0eWxlPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5TdHlsZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFN0eWxlKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZ2V0U09BUE9wZXJhdGlvbl9TdHlsZSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0U3R5bGUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBPcGVyYXRpb24jZ2V0U3R5bGUgPGVtPlN0eWxlPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5TdHlsZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldFN0eWxlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRTdHlsZShTdHJpbmcgdmFsdWUpOwotfSAvLyBTT0FQT3BlcmF0aW9uCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I3M2FiOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcyMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRGF0YVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIFRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLgotICogSXQgY29udGFpbnMgYWNjZXNzb3JzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRvIHJlcHJlc2VudAotICogPHVsPgotICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPgotICogICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4KLSAqICAgPGxpPmVhY2ggZW51bSw8L2xpPgotICogICA8bGk+YW5kIGVhY2ggZGF0YSB0eXBlPC9saT4KLSAqIDwvdWw+Ci0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYWN0b3J5Ci0gKiBAbW9kZWwga2luZD0icGFja2FnZSIKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBTT0FQUGFja2FnZSBleHRlbmRzIEVQYWNrYWdlCi17Ci0gIC8qKgotICAgKiBUaGUgcGFja2FnZSBuYW1lLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGVOQU1FID0gInNvYXAiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZU5TX1VSSSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dzZGwvMjAwMy9TT0FQIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBlTlNfUFJFRklYID0gInNvYXAiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTT0FQUGFja2FnZSBlSU5TVEFOQ0UgPSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwuaW5pdCgpOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBCaW5kaW5nSW1wbCA8ZW0+QmluZGluZzwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBCaW5kaW5nSW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRTT0FQQmluZGluZygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBTT0FQX0JJTkRJTkcgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0JJTkRJTkdfX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQklORElOR19fUkVRVUlSRUQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9CSU5ESU5HX19FTEVNRU5UX1RZUEUgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRyYW5zcG9ydCBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkkgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQklORElOR19fU1RZTEUgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5CaW5kaW5nPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQklORElOR19GRUFUVVJFX0NPVU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAyOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBCb2R5SW1wbCA8ZW0+Qm9keTwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBCb2R5SW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRTT0FQQm9keSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBTT0FQX0JPRFkgPSAxOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9CT0RZX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0JPRFlfX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQk9EWV9fUkVRVUlSRUQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9CT0RZX19FTEVNRU5UX1RZUEUgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQk9EWV9fVVNFID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFbmNvZGluZyBTdHlsZXM8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUyA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMjsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0czwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9CT0RZX19FUEFSVFMgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDM7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5Cb2R5PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQk9EWV9GRUFUVVJFX0NPVU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyA0OwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBIZWFkZXJCYXNlSW1wbCA8ZW0+SGVhZGVyIEJhc2U8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQSGVhZGVyQmFzZUltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0U09BUEhlYWRlckJhc2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfQkFTRSA9IDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9CQVNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9CQVNFX19FTEVNRU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9CQVNFX19SRVFVSVJFRCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9CQVNFX19FTEVNRU5UX1RZUEUgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX0JBU0VfX1VTRSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUyA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMjsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAzOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UGFydDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX0JBU0VfX1BBUlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyA1OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9CQVNFX19FUEFSVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgNjsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkhlYWRlciBCYXNlPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX0JBU0VfRkVBVFVSRV9DT1VOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgNzsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQRmF1bHRJbXBsIDxlbT5GYXVsdDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBGYXVsdEltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0U09BUEZhdWx0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IFNPQVBfRkFVTFQgPSAzOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9GQVVMVF9fRUxFTUVOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9GQVVMVF9fUkVRVUlSRUQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9GQVVMVF9fRUxFTUVOVF9UWVBFID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0ZBVUxUX19VU0UgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9GQVVMVF9fTkFNRVNQQUNFX1VSSSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFbmNvZGluZyBTdHlsZXM8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVMgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9GQVVMVF9fTkFNRSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMzsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkZhdWx0PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgNDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQT3BlcmF0aW9uSW1wbCA8ZW0+T3BlcmF0aW9uPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUE9wZXJhdGlvbkltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0U09BUE9wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBTT0FQX09QRVJBVElPTiA9IDQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9PUEVSQVRJT05fX0VMRU1FTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfT1BFUkFUSU9OX19SRVFVSVJFRCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX09QRVJBVElPTl9fRUxFTUVOVF9UWVBFID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Tb2FwIEFjdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX09QRVJBVElPTl9fU1RZTEUgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5PcGVyYXRpb248L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMjsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQQWRkcmVzc0ltcGwgPGVtPkFkZHJlc3M8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQQWRkcmVzc0ltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0U09BUEFkZHJlc3MoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgU09BUF9BRERSRVNTID0gNTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9BRERSRVNTX19FTEVNRU5UID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0FERFJFU1NfX1JFUVVJUkVEID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfQUREUkVTU19fRUxFTUVOVF9UWVBFID0gV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSSA9IFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkFkZHJlc3M8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQgPSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEhlYWRlckZhdWx0SW1wbCA8ZW0+SGVhZGVyIEZhdWx0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEhlYWRlckZhdWx0SW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRTT0FQSGVhZGVyRmF1bHQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfRkFVTFQgPSA2OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCA9IFNPQVBfSEVBREVSX0JBU0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVCA9IFNPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX0ZBVUxUX19SRVFVSVJFRCA9IFNPQVBfSEVBREVSX0JBU0VfX1JFUVVJUkVEOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfRkFVTFRfX0VMRU1FTlRfVFlQRSA9IFNPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlRfVFlQRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX0ZBVUxUX19VU0UgPSBTT0FQX0hFQURFUl9CQVNFX19VU0U7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfRkFVTFRfX05BTUVTUEFDRV9VUkkgPSBTT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfRkFVTFRfX0VFTkNPRElOR19TVFlMRVMgPSBTT0FQX0hFQURFUl9CQVNFX19FRU5DT0RJTkdfU1RZTEVTOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX0ZBVUxUX19NRVNTQUdFID0gU09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9GQVVMVF9fUEFSVCA9IFNPQVBfSEVBREVSX0JBU0VfX1BBUlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX0ZBVUxUX19FTUVTU0FHRSA9IFNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9GQVVMVF9fRVBBUlQgPSBTT0FQX0hFQURFUl9CQVNFX19FUEFSVDsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkhlYWRlciBGYXVsdDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9GQVVMVF9GRUFUVVJFX0NPVU5UID0gU09BUF9IRUFERVJfQkFTRV9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQSGVhZGVySW1wbCA8ZW0+SGVhZGVyPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEhlYWRlckltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0U09BUEhlYWRlcigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUiA9IDc7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gU09BUF9IRUFERVJfQkFTRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX19FTEVNRU5UID0gU09BUF9IRUFERVJfQkFTRV9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfX1JFUVVJUkVEID0gU09BUF9IRUFERVJfQkFTRV9fUkVRVUlSRUQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9fRUxFTUVOVF9UWVBFID0gU09BUF9IRUFERVJfQkFTRV9fRUxFTUVOVF9UWVBFOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfX1VTRSA9IFNPQVBfSEVBREVSX0JBU0VfX1VTRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9fTkFNRVNQQUNFX1VSSSA9IFNPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkk7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTT0FQX0hFQURFUl9fRUVOQ09ESU5HX1NUWUxFUyA9IFNPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVM7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5NZXNzYWdlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfX01FU1NBR0UgPSBTT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UGFydDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX19QQVJUID0gU09BUF9IRUFERVJfQkFTRV9fUEFSVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfX0VNRVNTQUdFID0gU09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0U7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX19FUEFSVCA9IFNPQVBfSEVBREVSX0JBU0VfX0VQQVJUOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+SGVhZGVyIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFMgPSBTT0FQX0hFQURFUl9CQVNFX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SGVhZGVyPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNPQVBfSEVBREVSX0ZFQVRVUkVfQ09VTlQgPSBTT0FQX0hFQURFUl9CQVNFX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nIDxlbT5JU09BUCBCaW5kaW5nPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0SVNPQVBCaW5kaW5nKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElTT0FQX0JJTkRJTkcgPSA4OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVNPQVAgQmluZGluZzwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJU09BUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzIDxlbT5JU09BUCBBZGRyZXNzPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3MKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0SVNPQVBBZGRyZXNzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElTT0FQX0FERFJFU1MgPSA5OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVNPQVAgQWRkcmVzczwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5IDxlbT5JU09BUCBCb2R5PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0SVNPQVBCb2R5KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElTT0FQX0JPRFkgPSAxMDsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEJvZHk8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSVNPQVBfQk9EWV9GRUFUVVJFX0NPVU5UID0gMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQgPGVtPklTT0FQIEZhdWx0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUFBhY2thZ2VJbXBsI2dldElTT0FQRmF1bHQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSVNPQVBfRkFVTFQgPSAxMTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEZhdWx0PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElTT0FQX0ZBVUxUX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24gPGVtPklTT0FQIE9wZXJhdGlvbjwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0SVNPQVBPcGVyYXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSVNPQVBfT1BFUkFUSU9OID0gMTI7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU09BUCBPcGVyYXRpb248L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSVNPQVBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdCA8ZW0+SVNPQVAgSGVhZGVyIEZhdWx0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUFBhY2thZ2VJbXBsI2dldElTT0FQSGVhZGVyRmF1bHQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSVNPQVBfSEVBREVSX0ZBVUxUID0gMTM7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU09BUCBIZWFkZXIgRmF1bHQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSVNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIgPGVtPklTT0FQIEhlYWRlcjwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0SVNPQVBIZWFkZXIoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSVNPQVBfSEVBREVSID0gMTQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU09BUCBIZWFkZXI8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSVNPQVBfSEVBREVSX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPklTdHJpbmc8L2VtPicgZGF0YSB0eXBlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZhLmxhbmcuU3RyaW5nCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUFBhY2thZ2VJbXBsI2dldElTdHJpbmcoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSVNUUklORyA9IDE1OwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJpbmRpbmcgPGVtPkJpbmRpbmc8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QmluZGluZzwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJpbmRpbmcKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldFNPQVBCaW5kaW5nKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCaW5kaW5nI2dldFRyYW5zcG9ydFVSSSA8ZW0+VHJhbnNwb3J0IFVSSTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlRyYW5zcG9ydCBVUkk8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCaW5kaW5nI2dldFRyYW5zcG9ydFVSSSgpCi0gICAqIEBzZWUgI2dldFNPQVBCaW5kaW5nKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRTT0FQQmluZGluZ19UcmFuc3BvcnRVUkkoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJpbmRpbmcjZ2V0U3R5bGUgPGVtPlN0eWxlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+U3R5bGU8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCaW5kaW5nI2dldFN0eWxlKCkKLSAgICogQHNlZSAjZ2V0U09BUEJpbmRpbmcoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldFNPQVBCaW5kaW5nX1N0eWxlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keSA8ZW0+Qm9keTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5Cb2R5PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0U09BUEJvZHkoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJvZHkjZ2V0VXNlIDxlbT5Vc2U8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Vc2U8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5I2dldFVzZSgpCi0gICAqIEBzZWUgI2dldFNPQVBCb2R5KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRTT0FQQm9keV9Vc2UoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJvZHkjZ2V0TmFtZXNwYWNlVVJJIDxlbT5OYW1lc3BhY2UgVVJJPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJvZHkjZ2V0TmFtZXNwYWNlVVJJKCkKLSAgICogQHNlZSAjZ2V0U09BUEJvZHkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldFNPQVBCb2R5X05hbWVzcGFjZVVSSSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5I2dldEVFbmNvZGluZ1N0eWxlcyA8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICc8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJvZHkjZ2V0RUVuY29kaW5nU3R5bGVzKCkKLSAgICogQHNlZSAjZ2V0U09BUEJvZHkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldFNPQVBCb2R5X0VFbmNvZGluZ1N0eWxlcygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5I2dldEVQYXJ0cyA8ZW0+RVBhcnRzPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5FUGFydHM8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5I2dldEVQYXJ0cygpCi0gICAqIEBzZWUgI2dldFNPQVBCb2R5KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRTT0FQQm9keV9FUGFydHMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlIDxlbT5IZWFkZXIgQmFzZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5IZWFkZXIgQmFzZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2UKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldFNPQVBIZWFkZXJCYXNlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldFVzZSA8ZW0+VXNlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VXNlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXRVc2UoKQotICAgKiBAc2VlICNnZXRTT0FQSGVhZGVyQmFzZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0U09BUEhlYWRlckJhc2VfVXNlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldE5hbWVzcGFjZVVSSSA8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldE5hbWVzcGFjZVVSSSgpCi0gICAqIEBzZWUgI2dldFNPQVBIZWFkZXJCYXNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRTT0FQSGVhZGVyQmFzZV9OYW1lc3BhY2VVUkkoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXRFRW5jb2RpbmdTdHlsZXMgPGVtPkVFbmNvZGluZyBTdHlsZXM8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAnPGVtPkVFbmNvZGluZyBTdHlsZXM8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldEVFbmNvZGluZ1N0eWxlcygpCi0gICAqIEBzZWUgI2dldFNPQVBIZWFkZXJCYXNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRTT0FQSGVhZGVyQmFzZV9FRW5jb2RpbmdTdHlsZXMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2UjZ2V0TWVzc2FnZSA8ZW0+TWVzc2FnZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk1lc3NhZ2U8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldE1lc3NhZ2UoKQotICAgKiBAc2VlICNnZXRTT0FQSGVhZGVyQmFzZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0U09BUEhlYWRlckJhc2VfTWVzc2FnZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXRQYXJ0IDxlbT5QYXJ0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+UGFydDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2UjZ2V0UGFydCgpCi0gICAqIEBzZWUgI2dldFNPQVBIZWFkZXJCYXNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRTT0FQSGVhZGVyQmFzZV9QYXJ0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlI2dldEVNZXNzYWdlIDxlbT5FTWVzc2FnZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVNZXNzYWdlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXRFTWVzc2FnZSgpCi0gICAqIEBzZWUgI2dldFNPQVBIZWFkZXJCYXNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRTT0FQSGVhZGVyQmFzZV9FTWVzc2FnZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSNnZXRFUGFydCA8ZW0+RVBhcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FUGFydDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2UjZ2V0RVBhcnQoKQotICAgKiBAc2VlICNnZXRTT0FQSGVhZGVyQmFzZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0U09BUEhlYWRlckJhc2VfRVBhcnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCA8ZW0+RmF1bHQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RmF1bHQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0U09BUEZhdWx0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCNnZXRVc2UgPGVtPlVzZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlVzZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhdWx0I2dldFVzZSgpCi0gICAqIEBzZWUgI2dldFNPQVBGYXVsdCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0U09BUEZhdWx0X1VzZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQRmF1bHQjZ2V0TmFtZXNwYWNlVVJJIDxlbT5OYW1lc3BhY2UgVVJJPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhdWx0I2dldE5hbWVzcGFjZVVSSSgpCi0gICAqIEBzZWUgI2dldFNPQVBGYXVsdCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0U09BUEZhdWx0X05hbWVzcGFjZVVSSSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCA8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICc8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhdWx0Ci0gICAqIEBzZWUgI2dldFNPQVBGYXVsdCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0U09BUEZhdWx0X0VFbmNvZGluZ1N0eWxlcygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQRmF1bHQjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCNnZXROYW1lKCkKLSAgICogQHNlZSAjZ2V0U09BUEZhdWx0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRTT0FQRmF1bHRfTmFtZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbiA8ZW0+T3BlcmF0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0U09BUE9wZXJhdGlvbigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQT3BlcmF0aW9uI2dldFNvYXBBY3Rpb25VUkkgPGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbiNnZXRTb2FwQWN0aW9uVVJJKCkKLSAgICogQHNlZSAjZ2V0U09BUE9wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0U09BUE9wZXJhdGlvbl9Tb2FwQWN0aW9uVVJJKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBPcGVyYXRpb24jZ2V0U3R5bGUgPGVtPlN0eWxlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+U3R5bGU8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBPcGVyYXRpb24jZ2V0U3R5bGUoKQotICAgKiBAc2VlICNnZXRTT0FQT3BlcmF0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRTT0FQT3BlcmF0aW9uX1N0eWxlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQWRkcmVzcyA8ZW0+QWRkcmVzczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5BZGRyZXNzPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQWRkcmVzcwotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0U09BUEFkZHJlc3MoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEFkZHJlc3MjZ2V0TG9jYXRpb25VUkkgPGVtPkxvY2F0aW9uIFVSSTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEFkZHJlc3MjZ2V0TG9jYXRpb25VUkkoKQotICAgKiBAc2VlICNnZXRTT0FQQWRkcmVzcygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0U09BUEFkZHJlc3NfTG9jYXRpb25VUkkoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJGYXVsdCA8ZW0+SGVhZGVyIEZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkhlYWRlciBGYXVsdDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckZhdWx0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRTT0FQSGVhZGVyRmF1bHQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXIgPGVtPkhlYWRlcjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5IZWFkZXI8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldFNPQVBIZWFkZXIoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyI2dldEhlYWRlckZhdWx0cyA8ZW0+SGVhZGVyIEZhdWx0czwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+SGVhZGVyIEZhdWx0czwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlciNnZXRIZWFkZXJGYXVsdHMoKQotICAgKiBAc2VlICNnZXRTT0FQSGVhZGVyKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRTT0FQSGVhZGVyX0hlYWRlckZhdWx0cygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZyA8ZW0+SVNPQVAgQmluZGluZzwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JU09BUCBCaW5kaW5nPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZyIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElTT0FQQmluZGluZygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzcyA8ZW0+SVNPQVAgQWRkcmVzczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JU09BUCBBZGRyZXNzPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzcyIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElTT0FQQWRkcmVzcygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSA8ZW0+SVNPQVAgQm9keTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JU09BUCBCb2R5PC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElTT0FQQm9keSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQgPGVtPklTT0FQIEZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklTT0FQIEZhdWx0PC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdAotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SVNPQVBGYXVsdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uIDxlbT5JU09BUCBPcGVyYXRpb248L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SVNPQVAgT3BlcmF0aW9uPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24KLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24iCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRJU09BUE9wZXJhdGlvbigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQgPGVtPklTT0FQIEhlYWRlciBGYXVsdDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JU09BUCBIZWFkZXIgRmF1bHQ8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRJU09BUEhlYWRlckZhdWx0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIgPGVtPklTT0FQIEhlYWRlcjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JU09BUCBIZWFkZXI8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcgotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlciIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElTT0FQSGVhZGVyKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJ3tAbGluayBqYXZhLmxhbmcuU3RyaW5nIDxlbT5JU3RyaW5nPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxlbT5JU3RyaW5nPC9lbT4nLgotICAgKiBAc2VlIGphdmEubGFuZy5TdHJpbmcKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmEubGFuZy5TdHJpbmciCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVEYXRhVHlwZSBnZXRJU3RyaW5nKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFNPQVBGYWN0b3J5IGdldFNPQVBGYWN0b3J5KCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIERlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQKLSAgICogPHVsPgotICAgKiAgIDxsaT5lYWNoIGNsYXNzLDwvbGk+Ci0gICAqICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+Ci0gICAqICAgPGxpPmVhY2ggZW51bSw8L2xpPgotICAgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPgotICAgKiA8L3VsPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50ZXJmYWNlIExpdGVyYWxzCi0gIHsKLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEJpbmRpbmdJbXBsIDxlbT5CaW5kaW5nPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEJpbmRpbmdJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0U09BUEJpbmRpbmcoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgU09BUF9CSU5ESU5HID0gZUlOU1RBTkNFLmdldFNPQVBCaW5kaW5nKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHJhbnNwb3J0IFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBTT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkkgPSBlSU5TVEFOQ0UuZ2V0U09BUEJpbmRpbmdfVHJhbnNwb3J0VVJJKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgU09BUF9CSU5ESU5HX19TVFlMRSA9IGVJTlNUQU5DRS5nZXRTT0FQQmluZGluZ19TdHlsZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBCb2R5SW1wbCA8ZW0+Qm9keTwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBCb2R5SW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUFBhY2thZ2VJbXBsI2dldFNPQVBCb2R5KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIFNPQVBfQk9EWSA9IGVJTlNUQU5DRS5nZXRTT0FQQm9keSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBTT0FQX0JPRFlfX1VTRSA9IGVJTlNUQU5DRS5nZXRTT0FQQm9keV9Vc2UoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSSA9IGVJTlNUQU5DRS5nZXRTT0FQQm9keV9OYW1lc3BhY2VVUkkoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdCBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgU09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTID0gZUlOU1RBTkNFLmdldFNPQVBCb2R5X0VFbmNvZGluZ1N0eWxlcygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0czwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIFNPQVBfQk9EWV9fRVBBUlRTID0gZUlOU1RBTkNFLmdldFNPQVBCb2R5X0VQYXJ0cygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBIZWFkZXJCYXNlSW1wbCA8ZW0+SGVhZGVyIEJhc2U8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQSGVhZGVyQmFzZUltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRTT0FQSGVhZGVyQmFzZSgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBTT0FQX0hFQURFUl9CQVNFID0gZUlOU1RBTkNFLmdldFNPQVBIZWFkZXJCYXNlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFNPQVBfSEVBREVSX0JBU0VfX1VTRSA9IGVJTlNUQU5DRS5nZXRTT0FQSGVhZGVyQmFzZV9Vc2UoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFNPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkkgPSBlSU5TVEFOQ0UuZ2V0U09BUEhlYWRlckJhc2VfTmFtZXNwYWNlVVJJKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFNPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVMgPSBlSU5TVEFOQ0UuZ2V0U09BUEhlYWRlckJhc2VfRUVuY29kaW5nU3R5bGVzKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBTT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFID0gZUlOU1RBTkNFLmdldFNPQVBIZWFkZXJCYXNlX01lc3NhZ2UoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFNPQVBfSEVBREVSX0JBU0VfX1BBUlQgPSBlSU5TVEFOQ0UuZ2V0U09BUEhlYWRlckJhc2VfUGFydCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIFNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFID0gZUlOU1RBTkNFLmdldFNPQVBIZWFkZXJCYXNlX0VNZXNzYWdlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgU09BUF9IRUFERVJfQkFTRV9fRVBBUlQgPSBlSU5TVEFOQ0UuZ2V0U09BUEhlYWRlckJhc2VfRVBhcnQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQRmF1bHRJbXBsIDxlbT5GYXVsdDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBGYXVsdEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRTT0FQRmF1bHQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgU09BUF9GQVVMVCA9IGVJTlNUQU5DRS5nZXRTT0FQRmF1bHQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgU09BUF9GQVVMVF9fVVNFID0gZUlOU1RBTkNFLmdldFNPQVBGYXVsdF9Vc2UoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFNPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkkgPSBlSU5TVEFOQ0UuZ2V0U09BUEZhdWx0X05hbWVzcGFjZVVSSSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVFbmNvZGluZyBTdHlsZXM8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0IGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBTT0FQX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTID0gZUlOU1RBTkNFLmdldFNPQVBGYXVsdF9FRW5jb2RpbmdTdHlsZXMoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFNPQVBfRkFVTFRfX05BTUUgPSBlSU5TVEFOQ0UuZ2V0U09BUEZhdWx0X05hbWUoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQT3BlcmF0aW9uSW1wbCA8ZW0+T3BlcmF0aW9uPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUE9wZXJhdGlvbkltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRTT0FQT3BlcmF0aW9uKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIFNPQVBfT1BFUkFUSU9OID0gZUlOU1RBTkNFLmdldFNPQVBPcGVyYXRpb24oKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Tb2FwIEFjdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgU09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSSA9IGVJTlNUQU5DRS5nZXRTT0FQT3BlcmF0aW9uX1NvYXBBY3Rpb25VUkkoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBTT0FQX09QRVJBVElPTl9fU1RZTEUgPSBlSU5TVEFOQ0UuZ2V0U09BUE9wZXJhdGlvbl9TdHlsZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBBZGRyZXNzSW1wbCA8ZW0+QWRkcmVzczwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBBZGRyZXNzSW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUFBhY2thZ2VJbXBsI2dldFNPQVBBZGRyZXNzKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIFNPQVBfQUREUkVTUyA9IGVJTlNUQU5DRS5nZXRTT0FQQWRkcmVzcygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBTT0FQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSSA9IGVJTlNUQU5DRS5nZXRTT0FQQWRkcmVzc19Mb2NhdGlvblVSSSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBIZWFkZXJGYXVsdEltcGwgPGVtPkhlYWRlciBGYXVsdDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBIZWFkZXJGYXVsdEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRTT0FQSGVhZGVyRmF1bHQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgU09BUF9IRUFERVJfRkFVTFQgPSBlSU5TVEFOQ0UuZ2V0U09BUEhlYWRlckZhdWx0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEhlYWRlckltcGwgPGVtPkhlYWRlcjwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBIZWFkZXJJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0U09BUEhlYWRlcigpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBTT0FQX0hFQURFUiA9IGVJTlNUQU5DRS5nZXRTT0FQSGVhZGVyKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+SGVhZGVyIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIFNPQVBfSEVBREVSX19IRUFERVJfRkFVTFRTID0gZUlOU1RBTkNFLmdldFNPQVBIZWFkZXJfSGVhZGVyRmF1bHRzKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcgPGVtPklTT0FQIEJpbmRpbmc8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZwotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUFBhY2thZ2VJbXBsI2dldElTT0FQQmluZGluZygpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJU09BUF9CSU5ESU5HID0gZUlOU1RBTkNFLmdldElTT0FQQmluZGluZygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzIDxlbT5JU09BUCBBZGRyZXNzPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3MKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRJU09BUEFkZHJlc3MoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSVNPQVBfQUREUkVTUyA9IGVJTlNUQU5DRS5nZXRJU09BUEFkZHJlc3MoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSA8ZW0+SVNPQVAgQm9keTwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0SVNPQVBCb2R5KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElTT0FQX0JPRFkgPSBlSU5TVEFOQ0UuZ2V0SVNPQVBCb2R5KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0IDxlbT5JU09BUCBGYXVsdDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUFBhY2thZ2VJbXBsI2dldElTT0FQRmF1bHQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSVNPQVBfRkFVTFQgPSBlSU5TVEFOQ0UuZ2V0SVNPQVBGYXVsdCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24gPGVtPklTT0FQIE9wZXJhdGlvbjwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRJU09BUE9wZXJhdGlvbigpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJU09BUF9PUEVSQVRJT04gPSBlSU5TVEFOQ0UuZ2V0SVNPQVBPcGVyYXRpb24oKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQgPGVtPklTT0FQIEhlYWRlciBGYXVsdDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUFBhY2thZ2VJbXBsI2dldElTT0FQSGVhZGVyRmF1bHQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSVNPQVBfSEVBREVSX0ZBVUxUID0gZUlOU1RBTkNFLmdldElTT0FQSGVhZGVyRmF1bHQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyIDxlbT5JU09BUCBIZWFkZXI8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQUGFja2FnZUltcGwjZ2V0SVNPQVBIZWFkZXIoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSVNPQVBfSEVBREVSID0gZUlOU1RBTkNFLmdldElTT0FQSGVhZGVyKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+SVN0cmluZzwvZW0+JyBkYXRhIHR5cGUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmEubGFuZy5TdHJpbmcKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBQYWNrYWdlSW1wbCNnZXRJU3RyaW5nKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRURhdGFUeXBlIElTVFJJTkcgPSBlSU5TVEFOQ0UuZ2V0SVN0cmluZygpOwotCi0gIH0KLQotfSAvL1NPQVBQYWNrYWdlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9nZW5lcmF0b3IvU09BUENvbnRlbnRHZW5lcmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2dlbmVyYXRvci9TT0FQQ29udGVudEdlbmVyYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTkxOTAzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2dlbmVyYXRvci9TT0FQQ29udGVudEdlbmVyYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIAotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ29tbW9uIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmdlbmVyYXRvcjsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEFkZHJlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5nZW5lcmF0b3IuQ29udGVudEdlbmVyYXRvcjsKLQotCi1wdWJsaWMgY2xhc3MgU09BUENvbnRlbnRHZW5lcmF0b3IgaW1wbGVtZW50cyBDb250ZW50R2VuZXJhdG9yCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9QVElPTl9OT1RfU0VUID0gLTE7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RZTEVfRE9DVU1FTlQgPSAxOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUWUxFX1JQQyA9IDI7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVNFX0xJVEVSQUwgPSAxOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVTRV9FTkNPREVEID0gMjsKLQotICBwcml2YXRlIGludCBzdHlsZU9wdGlvbiA9IE9QVElPTl9OT1RfU0VUOwotCi0gIHByaXZhdGUgaW50IHVzZU9wdGlvbiA9IE9QVElPTl9OT1RfU0VUOwotCi0gIHByb3RlY3RlZCBTdHJpbmcgbmFtZXNwYWNlVmFsdWUgPSAiIjsKLQotICBwcm90ZWN0ZWQgU3RyaW5nIGFkZHJlc3NMb2NhdGlvbiA9IENvbnRlbnRHZW5lcmF0b3IuQUREUkVTU19MT0NBVElPTjsKLQotICBwcm90ZWN0ZWQgZmluYWwgc3RhdGljIFN0cmluZ1tdIHJlcXVpcmVkTmFtZXNwYWNlcyA9IHsgImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIH07Ci0KLSAgcHJvdGVjdGVkIGZpbmFsIHN0YXRpYyBTdHJpbmdbXSBwcmVmZXJyZWROYW1lc3BhY2VQcmVmaXhlcyA9IHsgInNvYXAiIH07Ci0KLSAgcHVibGljIFN0cmluZ1tdIGdldFJlcXVpcmVkTmFtZXNwYWNlcygpCi0gIHsKLSAgICByZXR1cm4gcmVxdWlyZWROYW1lc3BhY2VzOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQcmVmZXJyZWROYW1lc3BhY2VQcmVmaXgoU3RyaW5nIG5hbWVzcGFjZSkKLSAgewotICAgIGlmIChuYW1lc3BhY2UuZXF1YWxzKCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIikpCi0gICAgewotICAgICAgcmV0dXJuICJzb2FwIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gIiI7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRTdHlsZShpbnQgc3R5bGUpCi0gIHsKLSAgICBzdHlsZU9wdGlvbiA9IHN0eWxlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0VXNlKGludCB1c2UpCi0gIHsKLSAgICB1c2VPcHRpb24gPSB1c2U7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRBZGRyZXNzTG9jYXRpb24oU3RyaW5nIGFkZHJlc3NMb2NhdGlvbikKLSAgewotICAgIHRoaXMuYWRkcmVzc0xvY2F0aW9uID0gYWRkcmVzc0xvY2F0aW9uOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZ2VuZXJhdGVQb3J0Q29udGVudChQb3J0IHBvcnQpCi0gIHsKLSAgICAvLyBXZSBibG93IGF3YXkgYW55IGV4aXN0aW5nIEV4dGVuc2liaWxpdHlFbGVtZW50cy9jb250ZW50IGJlZm9yZSB3ZSBnZW5lcmF0ZSBpdAotICAgIC8vIElzIGl0IHdvcnRoIGJlaW5nIHNtYXJ0ZXI/ICBMb29rIGZvciBtYXRjaGluZyBjb250ZW50IGZpcnN0IGFuZCBjcmVhdGUgdGhvc2Ugd2hpY2ggYXJlbid0IGZvdW5kPz8/PwotICAgIExpc3QgcmVtb3ZlTGlzdCA9IG5ldyBBcnJheUxpc3QocG9ydC5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotICAgIHJlbW92ZUV4dGVuc2ViaWxpdHlFbGVtZW50cyhwb3J0LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSwgcmVtb3ZlTGlzdCk7Ci0KLSAgICBTT0FQQWRkcmVzcyBzb2FwQWRkcmVzcyA9IFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQQWRkcmVzcygpOwotICAgIHNvYXBBZGRyZXNzLnNldExvY2F0aW9uVVJJKGFkZHJlc3NMb2NhdGlvbik7Ci0gICAgcG9ydC5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwQWRkcmVzcyk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBnZW5lcmF0ZUJpbmRpbmdDb250ZW50KEJpbmRpbmcgYmluZGluZywgUG9ydFR5cGUgcG9ydFR5cGUpCi0gIHsKLSAgICAvLyBXZSBibG93IGF3YXkgYW55IGV4aXN0aW5nIEV4dGVuc2liaWxpdHlFbGVtZW50cy9jb250ZW50IGJlZm9yZSB3ZSBnZW5lcmF0ZSBpdAotICAgIC8vIElzIGl0IHdvcnRoIGJlaW5nIHNtYXJ0ZXI/ICBMb29rIGZvciBtYXRjaGluZyBjb250ZW50IGZpcnN0IGFuZCBjcmVhdGUgdGhvc2Ugd2hpY2ggYXJlbid0IGZvdW5kPz8/PwotICAgIExpc3QgcmVtb3ZlTGlzdCA9IG5ldyBBcnJheUxpc3QoYmluZGluZy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotICAgIHJlbW92ZUV4dGVuc2ViaWxpdHlFbGVtZW50cyhiaW5kaW5nLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSwgcmVtb3ZlTGlzdCk7Ci0KLSAgICBTT0FQRmFjdG9yeSBzb2FwRmFjdG9yeSA9IFNPQVBGYWN0b3J5LmVJTlNUQU5DRTsKLSAgICBTT0FQQmluZGluZyBzb2FwQmluZGluZyA9IHNvYXBGYWN0b3J5LmNyZWF0ZVNPQVBCaW5kaW5nKCk7Ci0gICAgc29hcEJpbmRpbmcuc2V0U3R5bGUoKGdldFN0eWxlT3B0aW9uKGJpbmRpbmcpID09IFNUWUxFX0RPQ1VNRU5UKSA/ICJkb2N1bWVudCIgOiAicnBjIik7Ci0gICAgc29hcEJpbmRpbmcuc2V0VHJhbnNwb3J0VVJJKCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiKTsKLQotICAgIGJpbmRpbmcuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoc29hcEJpbmRpbmcpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZ2VuZXJhdGVCaW5kaW5nT3BlcmF0aW9uQ29udGVudChCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbiBvcGVyYXRpb24pCi0gIHsKLSAgICAvLyBXZSBibG93IGF3YXkgYW55IGV4aXN0aW5nIEV4dGVuc2liaWxpdHlFbGVtZW50cy9jb250ZW50IGJlZm9yZSB3ZSBnZW5lcmF0ZSBpdAotICAgIC8vIElzIGl0IHdvcnRoIGJlaW5nIHNtYXJ0ZXI/ICBMb29rIGZvciBtYXRjaGluZyBjb250ZW50IGZpcnN0IGFuZCBjcmVhdGUgdGhvc2Ugd2hpY2ggYXJlbid0IGZvdW5kPz8/PwotICAgIExpc3QgcmVtb3ZlTGlzdCA9IG5ldyBBcnJheUxpc3QoYmluZGluZ09wZXJhdGlvbi5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotICAgIHJlbW92ZUV4dGVuc2ViaWxpdHlFbGVtZW50cyhiaW5kaW5nT3BlcmF0aW9uLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSwgcmVtb3ZlTGlzdCk7Ci0KLSAgICBTT0FQT3BlcmF0aW9uIHNvYXBPcGVyYXRpb24gPSBTT0FQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU09BUE9wZXJhdGlvbigpOwotCi0gICAgU3RyaW5nIHNvYXBBY3Rpb25WYWx1ZSA9IGdldE5hbWVzcGFjZShiaW5kaW5nT3BlcmF0aW9uKTsKLSAgICBpZiAoIXNvYXBBY3Rpb25WYWx1ZS5lbmRzV2l0aCgiLyIpKQotICAgIHsKLSAgICAgIHNvYXBBY3Rpb25WYWx1ZSArPSAiLyI7Ci0gICAgfQotICAgIHNvYXBBY3Rpb25WYWx1ZSArPSBvcGVyYXRpb24uZ2V0TmFtZSgpOwotCi0gICAgc29hcE9wZXJhdGlvbi5zZXRTb2FwQWN0aW9uVVJJKHNvYXBBY3Rpb25WYWx1ZSk7Ci0KLSAgICBiaW5kaW5nT3BlcmF0aW9uLmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBPcGVyYXRpb24pOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZ2VuZXJhdGVCaW5kaW5nSW5wdXRDb250ZW50KEJpbmRpbmdJbnB1dCBiaW5kaW5nSW5wdXQsIElucHV0IGlucHV0KQotICB7Ci0gICAgLy8gV2UgYmxvdyBhd2F5IGFueSBleGlzdGluZyBFeHRlbnNpYmlsaXR5RWxlbWVudHMvY29udGVudCBiZWZvcmUgd2UgZ2VuZXJhdGUgaXQKLSAgICAvLyBJcyBpdCB3b3J0aCBiZWluZyBzbWFydGVyPyAgTG9vayBmb3IgbWF0Y2hpbmcgY29udGVudCBmaXJzdCBhbmQgY3JlYXRlIHRob3NlIHdoaWNoIGFyZW4ndCBmb3VuZD8/Pz8KLSAgICBMaXN0IHJlbW92ZUxpc3QgPSBuZXcgQXJyYXlMaXN0KGJpbmRpbmdJbnB1dC5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotICAgIHJlbW92ZUV4dGVuc2ViaWxpdHlFbGVtZW50cyhiaW5kaW5nSW5wdXQuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpLCByZW1vdmVMaXN0KTsKLQotICAgIFNPQVBGYWN0b3J5IHNvYXBGYWN0b3J5ID0gU09BUEZhY3RvcnkuZUlOU1RBTkNFOwotICAgIFNPQVBCb2R5IHNvYXBCb2R5ID0gc29hcEZhY3RvcnkuY3JlYXRlU09BUEJvZHkoKTsKLSAgICBzb2FwQm9keS5zZXRVc2UoKGdldFVzZU9wdGlvbihudWxsKSA9PSBVU0VfRU5DT0RFRCkgPyAiZW5jb2RlZCIgOiAibGl0ZXJhbCIpOwotICAgIGlmIChnZXRVc2VPcHRpb24oYmluZGluZ0lucHV0KSA9PSBVU0VfRU5DT0RFRCAmJiBnZXRTdHlsZU9wdGlvbihiaW5kaW5nSW5wdXQpID09IFNUWUxFX1JQQykKLSAgICB7Ci0gICAgICBMaXN0IGVuY29kaW5nTGlzdCA9IG5ldyBCYXNpY0VMaXN0KCk7Ci0gICAgICBlbmNvZGluZ0xpc3QuYWRkKCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIpOwotICAgICAgc29hcEJvZHkuc2V0RW5jb2RpbmdTdHlsZXMoZW5jb2RpbmdMaXN0KTsKLSAgICAgIHNvYXBCb2R5LnNldE5hbWVzcGFjZVVSSShnZXROYW1lc3BhY2UoYmluZGluZ0lucHV0KSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGdldFVzZU9wdGlvbihiaW5kaW5nSW5wdXQpID09IFVTRV9MSVRFUkFMICYmIGdldFN0eWxlT3B0aW9uKGJpbmRpbmdJbnB1dCkgPT0gU1RZTEVfUlBDKQotICAgIHsKLSAgICAgIHNvYXBCb2R5LnNldE5hbWVzcGFjZVVSSShnZXROYW1lc3BhY2UoYmluZGluZ0lucHV0KSk7Ci0gICAgfQotCi0gICAgYmluZGluZ0lucHV0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBCb2R5KTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlQmluZGluZ091dHB1dENvbnRlbnQoQmluZGluZ091dHB1dCBiaW5kaW5nT3V0cHV0LCBPdXRwdXQgb3V0cHV0KQotICB7Ci0gICAgLy8gV2UgYmxvdyBhd2F5IGFueSBleGlzdGluZyBFeHRlbnNpYmlsaXR5RWxlbWVudHMvY29udGVudCBiZWZvcmUgd2UgZ2VuZXJhdGUgaXQKLSAgICAvLyBJcyBpdCB3b3J0aCBiZWluZyBzbWFydGVyPyAgTG9vayBmb3IgbWF0Y2hpbmcgY29udGVudCBmaXJzdCBhbmQgY3JlYXRlIHRob3NlIHdoaWNoIGFyZW4ndCBmb3VuZD8/Pz8KLSAgICBMaXN0IHJlbW92ZUxpc3QgPSBuZXcgQXJyYXlMaXN0KGJpbmRpbmdPdXRwdXQuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICByZW1vdmVFeHRlbnNlYmlsaXR5RWxlbWVudHMoYmluZGluZ091dHB1dC5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCksIHJlbW92ZUxpc3QpOwotCi0gICAgU09BUEZhY3Rvcnkgc29hcEZhY3RvcnkgPSBTT0FQRmFjdG9yeS5lSU5TVEFOQ0U7Ci0gICAgU09BUEJvZHkgc29hcEJvZHkgPSBzb2FwRmFjdG9yeS5jcmVhdGVTT0FQQm9keSgpOwotICAgIHNvYXBCb2R5LnNldFVzZSgoZ2V0VXNlT3B0aW9uKGJpbmRpbmdPdXRwdXQpID09IFVTRV9FTkNPREVEKSA/ICJlbmNvZGVkIiA6ICJsaXRlcmFsIik7Ci0gICAgaWYgKGdldFVzZU9wdGlvbihiaW5kaW5nT3V0cHV0KSA9PSBVU0VfRU5DT0RFRCAmJiBnZXRTdHlsZU9wdGlvbihiaW5kaW5nT3V0cHV0KSA9PSBTVFlMRV9SUEMpCi0gICAgewotICAgICAgTGlzdCBlbmNvZGluZ0xpc3QgPSBuZXcgQmFzaWNFTGlzdCgpOwotICAgICAgZW5jb2RpbmdMaXN0LmFkZCgiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iKTsKLSAgICAgIHNvYXBCb2R5LnNldEVuY29kaW5nU3R5bGVzKGVuY29kaW5nTGlzdCk7Ci0gICAgICBzb2FwQm9keS5zZXROYW1lc3BhY2VVUkkoZ2V0TmFtZXNwYWNlKGJpbmRpbmdPdXRwdXQpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZ2V0VXNlT3B0aW9uKGJpbmRpbmdPdXRwdXQpID09IFVTRV9MSVRFUkFMICYmIGdldFN0eWxlT3B0aW9uKGJpbmRpbmdPdXRwdXQpID09IFNUWUxFX1JQQykKLSAgICB7Ci0gICAgICBzb2FwQm9keS5zZXROYW1lc3BhY2VVUkkoZ2V0TmFtZXNwYWNlKGJpbmRpbmdPdXRwdXQpKTsKLSAgICB9Ci0KLSAgICBiaW5kaW5nT3V0cHV0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBCb2R5KTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlQmluZGluZ0ZhdWx0Q29udGVudChCaW5kaW5nRmF1bHQgYmluZGluZ0ZhdWx0LCBGYXVsdCBmYXVsdCkKLSAgewotICAgIC8vIFdlIGJsb3cgYXdheSBhbnkgZXhpc3RpbmcgRXh0ZW5zaWJpbGl0eUVsZW1lbnRzL2NvbnRlbnQgYmVmb3JlIHdlIGdlbmVyYXRlIGl0Ci0gICAgLy8gSXMgaXQgd29ydGggYmVpbmcgc21hcnRlcj8gIExvb2sgZm9yIG1hdGNoaW5nIGNvbnRlbnQgZmlyc3QgYW5kIGNyZWF0ZSB0aG9zZSB3aGljaCBhcmVuJ3QgZm91bmQ/Pz8/Ci0gICAgTGlzdCByZW1vdmVMaXN0ID0gbmV3IEFycmF5TGlzdChiaW5kaW5nRmF1bHQuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICByZW1vdmVFeHRlbnNlYmlsaXR5RWxlbWVudHMoYmluZGluZ0ZhdWx0LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSwgcmVtb3ZlTGlzdCk7Ci0KLSAgICBTT0FQRmFjdG9yeSBzb2FwRmFjdG9yeSA9IFNPQVBGYWN0b3J5LmVJTlNUQU5DRTsKLSAgICBTT0FQRmF1bHQgc29hcEZhdWx0ID0gc29hcEZhY3RvcnkuY3JlYXRlU09BUEZhdWx0KCk7Ci0gICAgc29hcEZhdWx0LnNldFVzZSgoZ2V0VXNlT3B0aW9uKGJpbmRpbmdGYXVsdCkgPT0gVVNFX0VOQ09ERUQpID8gImVuY29kZWQiIDogImxpdGVyYWwiKTsKLSAgICBzb2FwRmF1bHQuc2V0TmFtZShmYXVsdC5nZXROYW1lKCkpOwotICAgIC8vCXNvYXBGYXVsdC5zZXROYW1lc3BhY2VVUkkoZ2V0TmFtZXNwYWNlKGJpbmRpbmdGYXVsdCkpOwotCi0gICAgaWYgKGdldFVzZU9wdGlvbihiaW5kaW5nRmF1bHQpID09IFVTRV9FTkNPREVEICYmIGdldFN0eWxlT3B0aW9uKGJpbmRpbmdGYXVsdCkgPT0gU1RZTEVfUlBDKQotICAgIHsKLSAgICAgIExpc3QgZW5jb2RpbmdMaXN0ID0gbmV3IEJhc2ljRUxpc3QoKTsKLSAgICAgIGVuY29kaW5nTGlzdC5hZGQoImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIik7Ci0gICAgICBzb2FwRmF1bHQuc2V0RW5jb2RpbmdTdHlsZXMoZW5jb2RpbmdMaXN0KTsKLSAgICB9Ci0KLSAgICBiaW5kaW5nRmF1bHQuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoc29hcEZhdWx0KTsKLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIGdldE5hbWVzcGFjZShXU0RMRWxlbWVudCB3c2RsRWxlbWVudCkKLSAgewotICAgIGlmIChuYW1lc3BhY2VWYWx1ZS5lcXVhbHMoIiIpICYmIHdzZGxFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgbmFtZXNwYWNlVmFsdWUgPSB3c2RsRWxlbWVudC5nZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0gICAgfQotICAgIGlmIChuYW1lc3BhY2VWYWx1ZSA9PSBudWxsKQotICAgIHsKLSAgICAgIG5hbWVzcGFjZVZhbHVlID0gIiI7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5hbWVzcGFjZVZhbHVlOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHJlbW92ZUV4dGVuc2ViaWxpdHlFbGVtZW50cyhMaXN0IG9yaWdpbmFsTGlzdCwgTGlzdCByZW1vdmVMaXN0KQotICB7Ci0gICAgSXRlcmF0b3IgcmVtb3ZlSXQgPSByZW1vdmVMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKHJlbW92ZUl0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBvcmlnaW5hbExpc3QucmVtb3ZlKHJlbW92ZUl0Lm5leHQoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBCaW5kaW5nIGdldEJpbmRpbmdPYmplY3QoT2JqZWN0IGdlbmVyaWNCaW5kaW5nT2JqZWN0KQotICB7Ci0gICAgT2JqZWN0IHBhcmVudCA9IGdlbmVyaWNCaW5kaW5nT2JqZWN0OwotCi0gICAgaW50IGluZGV4ID0gMDsKLSAgICB3aGlsZSAocGFyZW50ICE9IG51bGwgJiYgaW5kZXggPCA1KQotICAgIHsKLSAgICAgIHBhcmVudCA9IGdldEdlbmVyaWNCaW5kaW5nT2JqZWN0UGFyZW50KHBhcmVudCk7Ci0gICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgQmluZGluZykKLSAgICAgIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpbmRleCsrOwotICAgIH0KLQotICAgIHJldHVybiAocGFyZW50IGluc3RhbmNlb2YgQmluZGluZykgPyAoQmluZGluZylwYXJlbnQgOiBudWxsOwotICB9Ci0KLSAgcHJpdmF0ZSBPYmplY3QgZ2V0R2VuZXJpY0JpbmRpbmdPYmplY3RQYXJlbnQoT2JqZWN0IGdlbmVyaWNCaW5kaW5nT2JqZWN0KQotICB7Ci0gICAgT2JqZWN0IHBhcmVudCA9IG51bGw7Ci0KLSAgICBpZiAoZ2VuZXJpY0JpbmRpbmdPYmplY3QgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZ2VuZXJpY0JpbmRpbmdPYmplY3QgaW5zdGFuY2VvZiBCaW5kaW5nT3BlcmF0aW9uKQotICAgICAgewotICAgICAgICBwYXJlbnQgPSAoKEJpbmRpbmdPcGVyYXRpb24pZ2VuZXJpY0JpbmRpbmdPYmplY3QpLmdldENvbnRhaW5lcigpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoZ2VuZXJpY0JpbmRpbmdPYmplY3QgaW5zdGFuY2VvZiBCaW5kaW5nSW5wdXQpCi0gICAgICB7Ci0gICAgICAgIHBhcmVudCA9ICgoQmluZGluZ0lucHV0KWdlbmVyaWNCaW5kaW5nT2JqZWN0KS5nZXRDb250YWluZXIoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGdlbmVyaWNCaW5kaW5nT2JqZWN0IGluc3RhbmNlb2YgQmluZGluZ091dHB1dCkKLSAgICAgIHsKLSAgICAgICAgcGFyZW50ID0gKChCaW5kaW5nT3V0cHV0KWdlbmVyaWNCaW5kaW5nT2JqZWN0KS5nZXRDb250YWluZXIoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGdlbmVyaWNCaW5kaW5nT2JqZWN0IGluc3RhbmNlb2YgQmluZGluZ0ZhdWx0KQotICAgICAgewotICAgICAgICBwYXJlbnQgPSAoKEJpbmRpbmdGYXVsdClnZW5lcmljQmluZGluZ09iamVjdCkuZ2V0Q29udGFpbmVyKCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHBhcmVudDsKLSAgfQotCi0gIHByaXZhdGUgaW50IGdldFN0eWxlT3B0aW9uKE9iamVjdCBnZW5lcmljQmluZGluZ09iamVjdCkKLSAgewotICAgIGlmIChzdHlsZU9wdGlvbiA9PSBPUFRJT05fTk9UX1NFVCAmJiBnZW5lcmljQmluZGluZ09iamVjdCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIGluaXQoKSB3YXMgbmV2ZXIgY2FsbGVkLCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSAnc3R5bGUnIGJhc2VkIG9uIHdoYXQgd2UgaGF2ZS9rbm93Ci0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSBnZXRCaW5kaW5nT2JqZWN0KGdlbmVyaWNCaW5kaW5nT2JqZWN0KTsKLQotICAgICAgLy8gVHJ5IHRvIGRldGVybWluZSB0aGUgc3R5bGUgZnJvbSB0aGUgQmluZGluZyBPYmplY3QKLSAgICAgIGlmIChiaW5kaW5nICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIExpc3QgbGlzdCA9IGJpbmRpbmcuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICBJdGVyYXRvciB2YWx1ZXNJdCA9IGdldEV4dGVuc2liaWxpdHlFbGVtZW50QXR0cmlidXRlVmFsdWUobGlzdCwgInN0eWxlIikuaXRlcmF0b3IoKTsKLQotICAgICAgICB3aGlsZSAodmFsdWVzSXQuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIHN0eWxlID0gKFN0cmluZyl2YWx1ZXNJdC5uZXh0KCk7Ci0KLSAgICAgICAgICBpZiAoc3R5bGUuZXF1YWxzKCJkb2N1bWVudCIpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHN0eWxlT3B0aW9uID0gU1RZTEVfRE9DVU1FTlQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHN0eWxlLmVxdWFscygicnBjIikpCi0gICAgICAgICAgewotICAgICAgICAgICAgc3R5bGVPcHRpb24gPSBTVFlMRV9SUEM7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKHN0eWxlT3B0aW9uICE9IE9QVElPTl9OT1RfU0VUKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIGlmIChzdHlsZU9wdGlvbiA9PSBPUFRJT05fTk9UX1NFVCkKLSAgICB7Ci0gICAgICBzdHlsZU9wdGlvbiA9IFNUWUxFX0RPQ1VNRU5UOwotICAgIH0KLQotICAgIHJldHVybiBzdHlsZU9wdGlvbjsKLSAgfQotCi0gIHByaXZhdGUgaW50IGdldFVzZU9wdGlvbihPYmplY3QgZ2VuZXJpY0JpbmRpbmdPYmplY3QpCi0gIHsKLSAgICBpZiAodXNlT3B0aW9uID09IE9QVElPTl9OT1RfU0VUKQotICAgIHsKLSAgICAgIC8vIGluaXQoKSB3YXMgbmV2ZXIgY2FsbGVkLCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSAndXNlJyBiYXNlZCBvbiB3aGF0IHdlIGhhdmUva25vdwotICAgICAgSXRlcmF0b3IgbWVzc2FnZVJlZkl0ID0gZ2V0TWVzc2FnZVJlZmVyZW5jZUJpbmRpbmdPYmplY3RzKGdlbmVyaWNCaW5kaW5nT2JqZWN0KS5pdGVyYXRvcigpOwotCi0gICAgICAvLyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSB1c2UgZnJvbSB0aGUgbGlzdCBvZiBCaW5kaW5nSW5wdXRzLCBCaW5kaW5nT3V0cHV0cywgYW5kIEJpbmRpbmdGYXVsdHMKLSAgICAgIHdoaWxlIChtZXNzYWdlUmVmSXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBPYmplY3QgbWVzc2FnZVJlZiA9IG1lc3NhZ2VSZWZJdC5uZXh0KCk7Ci0gICAgICAgIExpc3QgdmFsdWVzID0gbmV3IEFycmF5TGlzdCgpOwotCi0gICAgICAgIGlmIChtZXNzYWdlUmVmIGluc3RhbmNlb2YgQmluZGluZ0lucHV0KQotICAgICAgICB7Ci0gICAgICAgICAgTGlzdCBsaXN0ID0gKChCaW5kaW5nSW5wdXQpbWVzc2FnZVJlZikuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICAgIHZhbHVlcyA9IGdldEV4dGVuc2liaWxpdHlFbGVtZW50QXR0cmlidXRlVmFsdWUobGlzdCwgInVzZSIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2VSZWYgaW5zdGFuY2VvZiBCaW5kaW5nT3V0cHV0KQotICAgICAgICB7Ci0gICAgICAgICAgTGlzdCBsaXN0ID0gKChCaW5kaW5nT3V0cHV0KW1lc3NhZ2VSZWYpLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgICAgICB2YWx1ZXMgPSBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGxpc3QsICJ1c2UiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChtZXNzYWdlUmVmIGluc3RhbmNlb2YgQmluZGluZ0ZhdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgTGlzdCBsaXN0ID0gKChCaW5kaW5nRmF1bHQpbWVzc2FnZVJlZikuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICAgIHZhbHVlcyA9IGdldEV4dGVuc2liaWxpdHlFbGVtZW50QXR0cmlidXRlVmFsdWUobGlzdCwgInVzZSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgSXRlcmF0b3IgdmFsdWVzSXQgPSB2YWx1ZXMuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKHZhbHVlc0l0Lmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyB1c2UgPSAoU3RyaW5nKXZhbHVlc0l0Lm5leHQoKTsKLQotICAgICAgICAgIGlmICh1c2UuZXF1YWxzKCJsaXRlcmFsIikpCi0gICAgICAgICAgewotICAgICAgICAgICAgdXNlT3B0aW9uID0gVVNFX0xJVEVSQUw7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHVzZS5lcXVhbHMoImVuY29kZWQiKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB1c2VPcHRpb24gPSBVU0VfRU5DT0RFRDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodXNlT3B0aW9uICE9IE9QVElPTl9OT1RfU0VUKQotICAgICAgICB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodXNlT3B0aW9uID09IE9QVElPTl9OT1RfU0VUKQotICAgIHsKLSAgICAgIHVzZU9wdGlvbiA9IFVTRV9MSVRFUkFMOwotICAgIH0KLQotICAgIHJldHVybiB1c2VPcHRpb247Ci0gIH0KLQotICBwcml2YXRlIExpc3QgZ2V0TWVzc2FnZVJlZmVyZW5jZUJpbmRpbmdPYmplY3RzKE9iamVjdCBnZW5lcmljQmluZGluZ09iamVjdCkKLSAgewotICAgIExpc3QgbGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBCaW5kaW5nIGJpbmRpbmcgPSBnZXRCaW5kaW5nT2JqZWN0KGdlbmVyaWNCaW5kaW5nT2JqZWN0KTsKLQotICAgIGlmIChiaW5kaW5nICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3Igb3BlcmF0aW9uc0l0ID0gYmluZGluZy5nZXRFQmluZGluZ09wZXJhdGlvbnMoKS5pdGVyYXRvcigpOwotCi0gICAgICB3aGlsZSAob3BlcmF0aW9uc0l0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ09wZXJhdGlvbiBvcCA9IChCaW5kaW5nT3BlcmF0aW9uKW9wZXJhdGlvbnNJdC5uZXh0KCk7Ci0gICAgICAgIGxpc3QuYWRkKG9wLmdldEVCaW5kaW5nSW5wdXQoKSk7Ci0gICAgICAgIGxpc3QuYWRkKG9wLmdldEVCaW5kaW5nT3V0cHV0KCkpOwotICAgICAgICBsaXN0LmFkZEFsbChvcC5nZXRFQmluZGluZ0ZhdWx0cygpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbGlzdDsKLSAgfQotCi0gIHByaXZhdGUgTGlzdCBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudEF0dHJpYnV0ZVZhbHVlKExpc3QgZWVMaXN0LCBTdHJpbmcgYXR0cmlidXRlS2V5KQotICB7Ci0gICAgTGlzdCB2YWx1ZXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgSXRlcmF0b3IgZWVFbGVtZW50c0l0ID0gZWVMaXN0Lml0ZXJhdG9yKCk7Ci0KLSAgICB3aGlsZSAoZWVFbGVtZW50c0l0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlZUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZWVFbGVtZW50c0l0Lm5leHQoKTsKLSAgICAgIFN0cmluZyBhdHRyaWJ1dGVWYWx1ZSA9IGVlRWxlbWVudC5nZXRFbGVtZW50KCkuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZUtleSk7Ci0gICAgICBpZiAoYXR0cmlidXRlVmFsdWUgIT0gbnVsbCAmJiAhYXR0cmlidXRlVmFsdWUuZXF1YWxzKCIiKSkKLSAgICAgIHsKLSAgICAgICAgdmFsdWVzLmFkZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbHVlczsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJvdG9jb2woKQotICB7Ci0gICAgcmV0dXJuICJTT0FQIjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvaW1wbC9TT0FQQWRkcmVzc0ltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEFkZHJlc3NJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxN2ExZWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvaW1wbC9TT0FQQWRkcmVzc0ltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEFkZHJlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC51dGlsLlNPQVBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmlsaXR5RWxlbWVudEltcGw7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QWRkcmVzczwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEFkZHJlc3NJbXBsI2dldExvY2F0aW9uVVJJIDxlbT5Mb2NhdGlvbiBVUkk8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBTT0FQQWRkcmVzc0ltcGwgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgaW1wbGVtZW50cyBTT0FQQWRkcmVzcwotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExvY2F0aW9uVVJJKCkgPGVtPkxvY2F0aW9uIFVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TG9jYXRpb25VUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBMT0NBVElPTl9VUklfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMb2NhdGlvblVSSSgpIDxlbT5Mb2NhdGlvbiBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldExvY2F0aW9uVVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBsb2NhdGlvblVSSSA9IExPQ0FUSU9OX1VSSV9FREVGQVVMVDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBTT0FQQWRkcmVzc0ltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfQUREUkVTUzsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvblVSSSgpCi0gIHsKLSAgICByZXR1cm4gbG9jYXRpb25VUkk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uVVJJKFN0cmluZyBuZXdMb2NhdGlvblVSSSkKLSAgewotICAgIFN0cmluZyBvbGRMb2NhdGlvblVSSSA9IGxvY2F0aW9uVVJJOwotICAgIGxvY2F0aW9uVVJJID0gbmV3TG9jYXRpb25VUkk7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgU09BUFBhY2thZ2UuU09BUF9BRERSRVNTX19MT0NBVElPTl9VUkksIG9sZExvY2F0aW9uVVJJLCBsb2NhdGlvblVSSSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSToKLSAgICAgIHJldHVybiBnZXRMb2NhdGlvblVSSSgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJOgotICAgICAgc2V0TG9jYXRpb25VUkkoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSToKLSAgICAgIHNldExvY2F0aW9uVVJJKExPQ0FUSU9OX1VSSV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9BRERSRVNTX19MT0NBVElPTl9VUkk6Ci0gICAgICByZXR1cm4gTE9DQVRJT05fVVJJX0VERUZBVUxUID09IG51bGwgPyBsb2NhdGlvblVSSSAhPSBudWxsIDogIUxPQ0FUSU9OX1VSSV9FREVGQVVMVC5lcXVhbHMobG9jYXRpb25VUkkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAobG9jYXRpb25VUkk6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChsb2NhdGlvblVSSSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vCi0gIC8vIFJlY29uY2lsZSBtZXRob2RzOiBET00gLT4gTW9kZWwKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBzZXRMb2NhdGlvblVSSShTT0FQQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgU09BUENvbnN0YW50cy5MT0NBVElPTl9BVFRSSUJVVEUpKTsKLSAgICByZWNvbmNpbGVSZWZlcmVuY2VzKGZhbHNlKTsKLSAgfQotCi0gIC8vCi0gIC8vIEZvciByZWNvbmNpbGlhdGlvbjogTW9kZWwgLT4gRE9NCi0gIC8vCi0KLSAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlQXR0cmlidXRlKEVBdHRyaWJ1dGUgZUF0dHJpYnV0ZSkKLSAgewotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgcmV0dXJuOwotCi0gICAgc3VwZXIuY2hhbmdlQXR0cmlidXRlKGVBdHRyaWJ1dGUpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBTT0FQQ29uc3RhbnRzLkxPQ0FUSU9OX0FUVFJJQlVURSwgZ2V0TG9jYXRpb25VUkkoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFFOYW1lIGdldEVsZW1lbnRUeXBlKCkKLSAgewotICAgIGlmIChlbGVtZW50VHlwZSA9PSBudWxsKQotICAgICAgZWxlbWVudFR5cGUgPSBuZXcgUU5hbWUoU09BUENvbnN0YW50cy5TT0FQX05BTUVTUEFDRV9VUkksIFNPQVBDb25zdGFudHMuQUREUkVTU19FTEVNRU5UX1RBRyk7Ci0gICAgcmV0dXJuIGVsZW1lbnRUeXBlOwotICB9Ci19IC8vU09BUEFkZHJlc3NJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBCaW5kaW5nSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvaW1wbC9TT0FQQmluZGluZ0ltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ4YTRlYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBCaW5kaW5nSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjg0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLnV0aWwuU09BUENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQQmluZGluZ0ltcGwjZ2V0VHJhbnNwb3J0VVJJIDxlbT5UcmFuc3BvcnQgVVJJPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQQmluZGluZ0ltcGwjZ2V0U3R5bGUgPGVtPlN0eWxlPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgU09BUEJpbmRpbmdJbXBsIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGltcGxlbWVudHMgU09BUEJpbmRpbmcKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRUcmFuc3BvcnRVUkkoKSA8ZW0+VHJhbnNwb3J0IFVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0VHJhbnNwb3J0VVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNQT1JUX1VSSV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFRyYW5zcG9ydFVSSSgpIDxlbT5UcmFuc3BvcnQgVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRUcmFuc3BvcnRVUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHRyYW5zcG9ydFVSSSA9IFRSQU5TUE9SVF9VUklfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRTdHlsZSgpIDxlbT5TdHlsZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0U3R5bGUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBTVFlMRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFN0eWxlKCkgPGVtPlN0eWxlPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRTdHlsZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgc3R5bGUgPSBTVFlMRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBTT0FQQmluZGluZ0ltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfQklORElORzsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUcmFuc3BvcnRVUkkoKQotICB7Ci0gICAgcmV0dXJuIHRyYW5zcG9ydFVSSTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VHJhbnNwb3J0VVJJKFN0cmluZyBuZXdUcmFuc3BvcnRVUkkpCi0gIHsKLSAgICBTdHJpbmcgb2xkVHJhbnNwb3J0VVJJID0gdHJhbnNwb3J0VVJJOwotICAgIHRyYW5zcG9ydFVSSSA9IG5ld1RyYW5zcG9ydFVSSTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBTT0FQUGFja2FnZS5TT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkksIG9sZFRyYW5zcG9ydFVSSSwgdHJhbnNwb3J0VVJJKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3R5bGUoKQotICB7Ci0gICAgcmV0dXJuIHN0eWxlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTdHlsZShTdHJpbmcgbmV3U3R5bGUpCi0gIHsKLSAgICBTdHJpbmcgb2xkU3R5bGUgPSBzdHlsZTsKLSAgICBzdHlsZSA9IG5ld1N0eWxlOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fU1RZTEUsIG9sZFN0eWxlLCBzdHlsZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkk6Ci0gICAgICByZXR1cm4gZ2V0VHJhbnNwb3J0VVJJKCk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fU1RZTEU6Ci0gICAgICByZXR1cm4gZ2V0U3R5bGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkk6Ci0gICAgICBzZXRUcmFuc3BvcnRVUkkoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fU1RZTEU6Ci0gICAgICBzZXRTdHlsZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSToKLSAgICAgIHNldFRyYW5zcG9ydFVSSShUUkFOU1BPUlRfVVJJX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CSU5ESU5HX19TVFlMRToKLSAgICAgIHNldFN0eWxlKFNUWUxFX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkk6Ci0gICAgICByZXR1cm4gVFJBTlNQT1JUX1VSSV9FREVGQVVMVCA9PSBudWxsID8gdHJhbnNwb3J0VVJJICE9IG51bGwgOiAhVFJBTlNQT1JUX1VSSV9FREVGQVVMVC5lcXVhbHModHJhbnNwb3J0VVJJKTsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CSU5ESU5HX19TVFlMRToKLSAgICAgIHJldHVybiBTVFlMRV9FREVGQVVMVCA9PSBudWxsID8gc3R5bGUgIT0gbnVsbCA6ICFTVFlMRV9FREVGQVVMVC5lcXVhbHMoc3R5bGUpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAodHJhbnNwb3J0VVJJOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQodHJhbnNwb3J0VVJJKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIHN0eWxlOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQoc3R5bGUpOwotICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvLwotICAvLyBSZWNvbmNpbGUgbWV0aG9kcwotICAvLwotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIHNldFN0eWxlKFNPQVBDb25zdGFudHMuZ2V0QXR0cmlidXRlKGNoYW5nZWRFbGVtZW50LCBTT0FQQ29uc3RhbnRzLlNUWUxFX0FUVFJJQlVURSkpOwotICAgIHNldFRyYW5zcG9ydFVSSShTT0FQQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgU09BUENvbnN0YW50cy5UUkFOU1BPUlRfQVRUUklCVVRFKSk7Ci0gICAgcmVjb25jaWxlUmVmZXJlbmNlcyhmYWxzZSk7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gU09BUFBhY2thZ2UuTGl0ZXJhbHMuU09BUF9CSU5ESU5HX19TVFlMRSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBTT0FQQ29uc3RhbnRzLlNUWUxFX0FUVFJJQlVURSwgZ2V0U3R5bGUoKSk7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gU09BUFBhY2thZ2UuTGl0ZXJhbHMuU09BUF9CSU5ESU5HX19UUkFOU1BPUlRfVVJJKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFNPQVBDb25zdGFudHMuVFJBTlNQT1JUX0FUVFJJQlVURSwgZ2V0VHJhbnNwb3J0VVJJKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKFNPQVBDb25zdGFudHMuU09BUF9OQU1FU1BBQ0VfVVJJLCBTT0FQQ29uc3RhbnRzLkJJTkRJTkdfRUxFTUVOVF9UQUcpOwotICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAgfQotfSAvL1NPQVBCaW5kaW5nSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvaW1wbC9TT0FQQm9keUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEJvZHlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YTkwNzguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvaW1wbC9TT0FQQm9keUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU2OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRURhdGFUeXBlVW5pcXVlRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdFJlc29sdmluZ0VMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwudXRpbC5TT0FQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLWltcG9ydCBjb20uaWJtLmljdS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Qm9keTwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEJvZHlJbXBsI2dldFVzZSA8ZW0+VXNlPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQQm9keUltcGwjZ2V0TmFtZXNwYWNlVVJJIDxlbT5OYW1lc3BhY2UgVVJJPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQQm9keUltcGwjZ2V0RUVuY29kaW5nU3R5bGVzIDxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQQm9keUltcGwjZ2V0RVBhcnRzIDxlbT5FUGFydHM8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBTT0FQQm9keUltcGwgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgaW1wbGVtZW50cyBTT0FQQm9keQotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFVzZSgpIDxlbT5Vc2U8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFVzZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFVTRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFVzZSgpIDxlbT5Vc2U8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFVzZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgdXNlID0gVVNFX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmFtZXNwYWNlVVJJKCkgPGVtPk5hbWVzcGFjZSBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWVzcGFjZVVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVTUEFDRV9VUklfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lc3BhY2VVUkkoKSA8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TmFtZXNwYWNlVVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBOQU1FU1BBQ0VfVVJJX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFRW5jb2RpbmdTdHlsZXMoKSA8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+fScgYXR0cmlidXRlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFRW5jb2RpbmdTdHlsZXMoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3QgZUVuY29kaW5nU3R5bGVzOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFUGFydHMoKSA8ZW0+RVBhcnRzPC9lbT59JyByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVQYXJ0cygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBFTGlzdCBlUGFydHM7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFBhcnRzKCkgPGVtPlBhcnRzPC9lbT59JyByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFBhcnRzKCkKLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBMaXN0IHBhcnRzOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIFNPQVBCb2R5SW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpCi0gIHsKLSAgICByZXR1cm4gU09BUFBhY2thZ2UuTGl0ZXJhbHMuU09BUF9CT0RZOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFVzZSgpCi0gIHsKLSAgICByZXR1cm4gdXNlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRVc2UoU3RyaW5nIG5ld1VzZSkKLSAgewotICAgIFN0cmluZyBvbGRVc2UgPSB1c2U7Ci0gICAgdXNlID0gbmV3VXNlOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fVVNFLCBvbGRVc2UsIHVzZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWVzcGFjZVVSSSgpCi0gIHsKLSAgICByZXR1cm4gbmFtZXNwYWNlVVJJOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXROYW1lc3BhY2VVUkkoU3RyaW5nIG5ld05hbWVzcGFjZVVSSSkKLSAgewotICAgIFN0cmluZyBvbGROYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkk7Ci0gICAgbmFtZXNwYWNlVVJJID0gbmV3TmFtZXNwYWNlVVJJOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSSwgb2xkTmFtZXNwYWNlVVJJLCBuYW1lc3BhY2VVUkkpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVMaXN0IGdldEVFbmNvZGluZ1N0eWxlcygpCi0gIHsKLSAgICBpZiAoZUVuY29kaW5nU3R5bGVzID09IG51bGwpCi0gICAgewotICAgICAgZUVuY29kaW5nU3R5bGVzID0gbmV3IEVEYXRhVHlwZVVuaXF1ZUVMaXN0KFN0cmluZy5jbGFzcywgdGhpcywgU09BUFBhY2thZ2UuU09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVFbmNvZGluZ1N0eWxlczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVMaXN0IGdldEVQYXJ0cygpCi0gIHsKLSAgICBpZiAoZVBhcnRzID09IG51bGwpCi0gICAgewotICAgICAgZVBhcnRzID0gbmV3IEVPYmplY3RSZXNvbHZpbmdFTGlzdChQYXJ0LmNsYXNzLCB0aGlzLCBTT0FQUGFja2FnZS5TT0FQX0JPRFlfX0VQQVJUUyk7Ci0gICAgfQotICAgIHJldHVybiBlUGFydHM7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbmNvZGluZ1N0eWxlcyhMaXN0IGxpc3QpCi0gIHsKLSAgICBlRW5jb2RpbmdTdHlsZXMgPSAoRUxpc3QpbGlzdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEVuY29kaW5nU3R5bGVzKCkKLSAgewotICAgIHJldHVybiBnZXRFRW5jb2RpbmdTdHlsZXMoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFBhcnRzKExpc3QgbGlzdCkKLSAgewotICAgIHBhcnRzID0gbGlzdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldFBhcnRzKCkKLSAgewotICAgIGlmIChwYXJ0cyA9PSBudWxsKQotICAgIHsKLSAgICAgIHBhcnRzID0gbmV3IEVPYmplY3RSZXNvbHZpbmdFTGlzdChQYXJ0LmNsYXNzLCB0aGlzLCBTT0FQUGFja2FnZS5TT0FQX0JPRFlfX0VQQVJUUyk7Ci0gICAgICByZXR1cm4gZ2V0SW1wbGljaXRQYXJ0cygpOwotICAgIH0KLQotICAgIGlmIChwYXJ0cy5zaXplKCkgPT0gMCkKLSAgICB7Ci0gICAgICByZXR1cm4gZ2V0SW1wbGljaXRQYXJ0cygpOwotICAgIH0KLQotICAgIHJldHVybiBwYXJ0czsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CT0RZX19VU0U6Ci0gICAgICByZXR1cm4gZ2V0VXNlKCk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSToKLSAgICAgIHJldHVybiBnZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTOgotICAgICAgcmV0dXJuIGdldEVFbmNvZGluZ1N0eWxlcygpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JPRFlfX0VQQVJUUzoKLSAgICAgIHJldHVybiBnZXRFUGFydHMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JPRFlfX1VTRToKLSAgICAgIHNldFVzZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CT0RZX19OQU1FU1BBQ0VfVVJJOgotICAgICAgc2V0TmFtZXNwYWNlVVJJKChTdHJpbmcpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JPRFlfX0VFTkNPRElOR19TVFlMRVM6Ci0gICAgICBnZXRFRW5jb2RpbmdTdHlsZXMoKS5jbGVhcigpOwotICAgICAgZ2V0RUVuY29kaW5nU3R5bGVzKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CT0RZX19FUEFSVFM6Ci0gICAgICBnZXRFUGFydHMoKS5jbGVhcigpOwotICAgICAgZ2V0RVBhcnRzKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fVVNFOgotICAgICAgc2V0VXNlKFVTRV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSToKLSAgICAgIHNldE5hbWVzcGFjZVVSSShOQU1FU1BBQ0VfVVJJX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTOgotICAgICAgZ2V0RUVuY29kaW5nU3R5bGVzKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CT0RZX19FUEFSVFM6Ci0gICAgICBnZXRFUGFydHMoKS5jbGVhcigpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fVVNFOgotICAgICAgcmV0dXJuIFVTRV9FREVGQVVMVCA9PSBudWxsID8gdXNlICE9IG51bGwgOiAhVVNFX0VERUZBVUxULmVxdWFscyh1c2UpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JPRFlfX05BTUVTUEFDRV9VUkk6Ci0gICAgICByZXR1cm4gTkFNRVNQQUNFX1VSSV9FREVGQVVMVCA9PSBudWxsID8gbmFtZXNwYWNlVVJJICE9IG51bGwgOiAhTkFNRVNQQUNFX1VSSV9FREVGQVVMVC5lcXVhbHMobmFtZXNwYWNlVVJJKTsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTOgotICAgICAgcmV0dXJuIGVFbmNvZGluZ1N0eWxlcyAhPSBudWxsICYmICFlRW5jb2RpbmdTdHlsZXMuaXNFbXB0eSgpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JPRFlfX0VQQVJUUzoKLSAgICAgIHJldHVybiBlUGFydHMgIT0gbnVsbCAmJiAhZVBhcnRzLmlzRW1wdHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKHVzZTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKHVzZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCBuYW1lc3BhY2VVUkk6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChuYW1lc3BhY2VVUkkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiwgZUVuY29kaW5nU3R5bGVzOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQoZUVuY29kaW5nU3R5bGVzKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxlIG1ldGhvZHMKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBzZXRVc2UoU09BUENvbnN0YW50cy5nZXRBdHRyaWJ1dGUoY2hhbmdlZEVsZW1lbnQsIFNPQVBDb25zdGFudHMuVVNFX0FUVFJJQlVURSkpOwotICAgIHNldE5hbWVzcGFjZVVSSShTT0FQQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgU09BUENvbnN0YW50cy5OQU1FU1BBQ0VfQVRUUklCVVRFKSk7Ci0gICAgaWYgKGNoYW5nZWRFbGVtZW50Lmhhc0F0dHJpYnV0ZShTT0FQQ29uc3RhbnRzLkVOQ09ESU5HX1NUWUxFX0FUVFJJQlVURSkpCi0gICAgewotICAgICAgU3RyaW5nIGVuY29kaW5nU3R5bGVzID0gY2hhbmdlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKFNPQVBDb25zdGFudHMuRU5DT0RJTkdfU1RZTEVfQVRUUklCVVRFKTsKLSAgICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGVuY29kaW5nU3R5bGVzKTsKLSAgICAgIHdoaWxlICh0b2tlbml6ZXIuaGFzTW9yZVRva2VucygpKQotICAgICAgICBnZXRFbmNvZGluZ1N0eWxlcygpLmFkZCh0b2tlbml6ZXIubmV4dFRva2VuKCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgZ2V0RW5jb2RpbmdTdHlsZXMoKS5jbGVhcigpOwotICAgIH0KLQotICAgIHJlY29uY2lsZVJlZmVyZW5jZXMoZmFsc2UpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlUmVmZXJlbmNlcyhib29sZWFuIGRlZXApCi0gIHsKLSAgICBpZiAoZWxlbWVudCAhPSBudWxsICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKFNPQVBDb25zdGFudHMuUEFSVFNfQVRUUklCVVRFKSkKLSAgICAvLyBTeW5jaHJvbml6ZSAncGFydHMnIHZhcmlhYmxlIGZyb20gZWxlbWVudCdzIGF0dHJpYnV0ZS4KLSAgICB7Ci0gICAgICBNZXNzYWdlIG1lc3NhZ2UgPSBnZXRNZXNzYWdlKCk7Ci0gICAgICBpZiAobWVzc2FnZSA9PSBudWxsKQotICAgICAgICByZXR1cm47Ci0KLSAgICAgIFN0cmluZyBwYXJ0TmFtZXMgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShTT0FQQ29uc3RhbnRzLlBBUlRTX0FUVFJJQlVURSk7Ci0gICAgICBTdHJpbmdUb2tlbml6ZXIgcGFyc2VyID0gbmV3IFN0cmluZ1Rva2VuaXplcihwYXJ0TmFtZXMsICIgIik7Ci0gICAgICBTdHJpbmcgcGFydE5hbWUgPSBudWxsOwotICAgICAgUGFydCBuZXdQYXJ0ID0gbnVsbDsKLSAgICAgIGdldFBhcnRzKCkuY2xlYXIoKTsKLSAgICAgIHdoaWxlIChwYXJzZXIuaGFzTW9yZVRva2VucygpKQotICAgICAgewotICAgICAgICBwYXJ0TmFtZSA9IHBhcnNlci5uZXh0VG9rZW4oKTsKLSAgICAgICAgbmV3UGFydCA9IChtZXNzYWdlICE9IG51bGwpID8gKFBhcnQpbWVzc2FnZS5nZXRQYXJ0KHBhcnROYW1lKSA6IG51bGw7Ci0gICAgICAgIGlmIChuZXdQYXJ0ICE9IG51bGwpCi0gICAgICAgICAgLy8gRG8gbm90IHVzZSBnZXRQYXJ0cygpIGhlcmUgc2luY2UgaXQgd2lsbCByZXR1cm4gYSBsaXN0IG9mCi0gICAgICAgICAgLy8gaW1wbGljaXRseSBjb2xsZWN0ZWQgcGFydHMuCi0gICAgICAgICAgcGFydHMuYWRkKG5ld1BhcnQpOwotICAgICAgfQotICAgIH0KLSAgICBzdXBlci5yZWNvbmNpbGVSZWZlcmVuY2VzKGRlZXApOwotICB9Ci0KLSAgLy8KLSAgLy8gRm9yIHJlY29uY2lsaWF0aW9uOiBNb2RlbCAtPiBET00KLSAgLy8KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VBdHRyaWJ1dGUoRUF0dHJpYnV0ZSBlQXR0cmlidXRlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VBdHRyaWJ1dGUoZUF0dHJpYnV0ZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfQk9EWV9fVVNFKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFNPQVBDb25zdGFudHMuVVNFX0FUVFJJQlVURSwgZ2V0VXNlKCkpOwotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBTT0FQQ29uc3RhbnRzLk5BTUVTUEFDRV9BVFRSSUJVVEUsIGdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0JPRFlfX0VFTkNPRElOR19TVFlMRVMpCi0gICAgICB7Ci0gICAgICAgIExpc3QgZW5jb2RpbmdTdHlsZUxpc3QgPSBnZXRFbmNvZGluZ1N0eWxlcygpOwotICAgICAgICBTdHJpbmcgZW5jb2RpbmdTdHlsZXMgPSAiIjsKLSAgICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBlbmNvZGluZ1N0eWxlTGlzdC5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGVuY29kaW5nU3R5bGVzLmVxdWFscygiIikpIC8vIGZpcnN0IGl0ZXJhdGlvbgotICAgICAgICAgICAgZW5jb2RpbmdTdHlsZXMgKz0gKFN0cmluZylpdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgZW5jb2RpbmdTdHlsZXMgKz0gIiAiICsgKFN0cmluZylpdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFlbmNvZGluZ1N0eWxlcy5lcXVhbHMoIiIpKQotICAgICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgU09BUENvbnN0YW50cy5FTkNPRElOR19TVFlMRV9BVFRSSUJVVEUsIGVuY29kaW5nU3R5bGVzKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VSZWZlcmVuY2UoRVJlZmVyZW5jZSBlUmVmZXJlbmNlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VSZWZlcmVuY2UoZVJlZmVyZW5jZSk7Ci0gICAgLy8KLSAgICAvLyBVcGRhdGUgdGhlIGVsZW1lbnQncyAicGFydHMiIGF0dHJpYnV0ZSB2YWx1ZS4KLSAgICAvLwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlUmVmZXJlbmNlID09IG51bGwgfHwgZVJlZmVyZW5jZSA9PSBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0JPRFlfX0VQQVJUUykKLSAgICAgIHsKLSAgICAgICAgLy8gVXNlZCB0byBiZSBCdWd6aWxsYSAxMDgxNzYsIG5vdyBpdCBpcyBCdWd6aWxsYSAxMzc5OTAKLQotICAgICAgICBTdHJpbmcgcGFydHNBdHRyaWJ1dGVWYWx1ZSA9IG51bGw7Ci0KLSAgICAgICAgLy8gRG8gbm90IHVzZSBnZXRQYXJ0cygpIGFzIGl0IHdpbGwgcmV0dXJuIHRoZSBsaXN0IG9mIGltcGxpY2l0IG1lc3NhZ2UKLSAgICAgICAgLy8gcGFydHMuCi0KLSAgICAgICAgaWYgKHBhcnRzICE9IG51bGwgJiYgIXBhcnRzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZ0J1ZmZlciBwYXJ0TmFtZXNCdWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBwYXJ0cy5pdGVyYXRvcigpOwotCi0gICAgICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBQYXJ0IHBhcnQgPSAoUGFydClpdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgICAgICBTdHJpbmcgcGFydE5hbWUgPSBwYXJ0LmdldE5hbWUoKTsKLQotICAgICAgICAgICAgcGFydE5hbWVzQnVmZmVyLmFwcGVuZChwYXJ0TmFtZSk7Ci0KLSAgICAgICAgICAgIGlmIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHBhcnROYW1lc0J1ZmZlci5hcHBlbmQoIiAiKTsgLy8kTk9OLU5MUy0xJAotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLQotICAgICAgICAgIHBhcnRzQXR0cmlidXRlVmFsdWUgPSBwYXJ0TmFtZXNCdWZmZXIudG9TdHJpbmcoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgU09BUENvbnN0YW50cy5QQVJUU19BVFRSSUJVVEUsIHBhcnRzQXR0cmlidXRlVmFsdWUpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKFNPQVBDb25zdGFudHMuU09BUF9OQU1FU1BBQ0VfVVJJLCBTT0FQQ29uc3RhbnRzLkJPRFlfRUxFTUVOVF9UQUcpOwotICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAgfQotCi0gIHByaXZhdGUgTGlzdCBnZXRJbXBsaWNpdFBhcnRzKCkKLSAgewotICAgIExpc3QgaW1wbGljaXRQYXJ0cyA9IG5ldyBqYXZhLnV0aWwuVmVjdG9yKCk7Ci0gICAgTWVzc2FnZSBtZXNzYWdlID0gZ2V0TWVzc2FnZSgpOwotICAgIGlmIChtZXNzYWdlICE9IG51bGwgJiYgbWVzc2FnZS5nZXRFUGFydHMoKS5zaXplKCkgPiAwKQotICAgIHsKLSAgICAgIGltcGxpY2l0UGFydHMuYWRkQWxsKG1lc3NhZ2UuZ2V0RVBhcnRzKCkpOwotICAgIH0KLSAgICByZXR1cm4gaW1wbGljaXRQYXJ0czsKLSAgfQotCi0gIHByaXZhdGUgTWVzc2FnZSBnZXRNZXNzYWdlKCkKLSAgewotICAgIE1lc3NhZ2UgbWVzc2FnZSA9IG51bGw7Ci0KLSAgICBpZiAoZUNvbnRhaW5lcigpIGluc3RhbmNlb2YgQmluZGluZ0lucHV0KQotICAgIHsKLSAgICAgIGlmICgoKEJpbmRpbmdJbnB1dCllQ29udGFpbmVyKCkpLmdldEVJbnB1dCgpICE9IG51bGwpCi0gICAgICAgIG1lc3NhZ2UgPSAoKEJpbmRpbmdJbnB1dCllQ29udGFpbmVyKCkpLmdldEVJbnB1dCgpLmdldEVNZXNzYWdlKCk7Ci0gICAgfQotICAgIGlmIChlQ29udGFpbmVyKCkgaW5zdGFuY2VvZiBCaW5kaW5nT3V0cHV0KQotICAgIHsKLSAgICAgIGlmICgoKEJpbmRpbmdPdXRwdXQpZUNvbnRhaW5lcigpKS5nZXRFT3V0cHV0KCkgIT0gbnVsbCkKLSAgICAgICAgbWVzc2FnZSA9ICgoQmluZGluZ091dHB1dCllQ29udGFpbmVyKCkpLmdldEVPdXRwdXQoKS5nZXRFTWVzc2FnZSgpOwotICAgIH0KLSAgICBpZiAoZUNvbnRhaW5lcigpIGluc3RhbmNlb2YgQmluZGluZ0ZhdWx0KQotICAgIHsKLSAgICAgIGlmICgoKEJpbmRpbmdGYXVsdCllQ29udGFpbmVyKCkpLmdldEVGYXVsdCgpICE9IG51bGwpCi0gICAgICAgIG1lc3NhZ2UgPSAoKEJpbmRpbmdGYXVsdCllQ29udGFpbmVyKCkpLmdldEVGYXVsdCgpLmdldEVNZXNzYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci0KLX0gLy9TT0FQQm9keUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEZhY3RvcnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWEyZTljLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRGF0YVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucGx1Z2luLkVjb3JlUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC4qOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5GYWN0b3J5PC9iPi4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgU09BUEZhY3RvcnlJbXBsIGV4dGVuZHMgRUZhY3RvcnlJbXBsIGltcGxlbWVudHMgU09BUEZhY3RvcnkKLXsKLSAgLyoqCi0gICAqIENyZWF0ZXMgdGhlIGRlZmF1bHQgZmFjdG9yeSBpbXBsZW1lbnRhdGlvbi4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU09BUEZhY3RvcnkgaW5pdCgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBTT0FQRmFjdG9yeSB0aGVTT0FQRmFjdG9yeSA9IChTT0FQRmFjdG9yeSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFRmFjdG9yeSgiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvU09BUCIpOyAvLyROT04tTkxTLTEkIAotICAgICAgaWYgKHRoZVNPQVBGYWN0b3J5ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0aGVTT0FQRmFjdG9yeTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgRWNvcmVQbHVnaW4uSU5TVEFOQ0UubG9nKGV4Y2VwdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBuZXcgU09BUEZhY3RvcnlJbXBsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTT0FQRmFjdG9yeUltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVPYmplY3QgY3JlYXRlKEVDbGFzcyBlQ2xhc3MpCi0gIHsKLSAgICBzd2l0Y2ggKGVDbGFzcy5nZXRDbGFzc2lmaWVySUQoKSkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQklORElORzoKLSAgICAgIHJldHVybiBjcmVhdGVTT0FQQmluZGluZygpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JPRFk6Ci0gICAgICByZXR1cm4gY3JlYXRlU09BUEJvZHkoKTsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRToKLSAgICAgIHJldHVybiBjcmVhdGVTT0FQSGVhZGVyQmFzZSgpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0ZBVUxUOgotICAgICAgcmV0dXJuIGNyZWF0ZVNPQVBGYXVsdCgpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTjoKLSAgICAgIHJldHVybiBjcmVhdGVTT0FQT3BlcmF0aW9uKCk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfQUREUkVTUzoKLSAgICAgIHJldHVybiBjcmVhdGVTT0FQQWRkcmVzcygpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVDoKLSAgICAgIHJldHVybiBjcmVhdGVTT0FQSGVhZGVyRmF1bHQoKTsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVI6Ci0gICAgICByZXR1cm4gY3JlYXRlU09BUEhlYWRlcigpOwotICAgICAgZGVmYXVsdDoKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBjbGFzcyAnIiArIGVDbGFzcy5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjcmVhdGVGcm9tU3RyaW5nKEVEYXRhVHlwZSBlRGF0YVR5cGUsIFN0cmluZyBpbml0aWFsVmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGVEYXRhVHlwZS5nZXRDbGFzc2lmaWVySUQoKSkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLklTVFJJTkc6Ci0gICAgICByZXR1cm4gY3JlYXRlSVN0cmluZ0Zyb21TdHJpbmcoZURhdGFUeXBlLCBpbml0aWFsVmFsdWUpOwotICAgICAgZGVmYXVsdDoKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBkYXRhdHlwZSAnIiArIGVEYXRhVHlwZS5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBjb252ZXJ0VG9TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgT2JqZWN0IGluc3RhbmNlVmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGVEYXRhVHlwZS5nZXRDbGFzc2lmaWVySUQoKSkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLklTVFJJTkc6Ci0gICAgICByZXR1cm4gY29udmVydElTdHJpbmdUb1N0cmluZyhlRGF0YVR5cGUsIGluc3RhbmNlVmFsdWUpOwotICAgICAgZGVmYXVsdDoKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBkYXRhdHlwZSAnIiArIGVEYXRhVHlwZS5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFNPQVBCaW5kaW5nIGNyZWF0ZVNPQVBCaW5kaW5nKCkKLSAgewotICAgIFNPQVBCaW5kaW5nSW1wbCBzb2FwQmluZGluZyA9IG5ldyBTT0FQQmluZGluZ0ltcGwoKTsKLSAgICByZXR1cm4gc29hcEJpbmRpbmc7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTT0FQQm9keSBjcmVhdGVTT0FQQm9keSgpCi0gIHsKLSAgICBTT0FQQm9keUltcGwgc29hcEJvZHkgPSBuZXcgU09BUEJvZHlJbXBsKCk7Ci0gICAgcmV0dXJuIHNvYXBCb2R5OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU09BUEhlYWRlckJhc2UgY3JlYXRlU09BUEhlYWRlckJhc2UoKQotICB7Ci0gICAgU09BUEhlYWRlckJhc2VJbXBsIHNvYXBIZWFkZXJCYXNlID0gbmV3IFNPQVBIZWFkZXJCYXNlSW1wbCgpOwotICAgIHJldHVybiBzb2FwSGVhZGVyQmFzZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFNPQVBGYXVsdCBjcmVhdGVTT0FQRmF1bHQoKQotICB7Ci0gICAgU09BUEZhdWx0SW1wbCBzb2FwRmF1bHQgPSBuZXcgU09BUEZhdWx0SW1wbCgpOwotICAgIHJldHVybiBzb2FwRmF1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTT0FQT3BlcmF0aW9uIGNyZWF0ZVNPQVBPcGVyYXRpb24oKQotICB7Ci0gICAgU09BUE9wZXJhdGlvbkltcGwgc29hcE9wZXJhdGlvbiA9IG5ldyBTT0FQT3BlcmF0aW9uSW1wbCgpOwotICAgIHJldHVybiBzb2FwT3BlcmF0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU09BUEFkZHJlc3MgY3JlYXRlU09BUEFkZHJlc3MoKQotICB7Ci0gICAgU09BUEFkZHJlc3NJbXBsIHNvYXBBZGRyZXNzID0gbmV3IFNPQVBBZGRyZXNzSW1wbCgpOwotICAgIHJldHVybiBzb2FwQWRkcmVzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFNPQVBIZWFkZXJGYXVsdCBjcmVhdGVTT0FQSGVhZGVyRmF1bHQoKQotICB7Ci0gICAgU09BUEhlYWRlckZhdWx0SW1wbCBzb2FwSGVhZGVyRmF1bHQgPSBuZXcgU09BUEhlYWRlckZhdWx0SW1wbCgpOwotICAgIHJldHVybiBzb2FwSGVhZGVyRmF1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTT0FQSGVhZGVyIGNyZWF0ZVNPQVBIZWFkZXIoKQotICB7Ci0gICAgU09BUEhlYWRlckltcGwgc29hcEhlYWRlciA9IG5ldyBTT0FQSGVhZGVySW1wbCgpOwotICAgIHJldHVybiBzb2FwSGVhZGVyOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGNyZWF0ZUlTdHJpbmdGcm9tU3RyaW5nKEVEYXRhVHlwZSBlRGF0YVR5cGUsIFN0cmluZyBpbml0aWFsVmFsdWUpCi0gIHsKLSAgICByZXR1cm4gKFN0cmluZylzdXBlci5jcmVhdGVGcm9tU3RyaW5nKGVEYXRhVHlwZSwgaW5pdGlhbFZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBjb252ZXJ0SVN0cmluZ1RvU3RyaW5nKEVEYXRhVHlwZSBlRGF0YVR5cGUsIE9iamVjdCBpbnN0YW5jZVZhbHVlKQotICB7Ci0gICAgcmV0dXJuIHN1cGVyLmNvbnZlcnRUb1N0cmluZyhlRGF0YVR5cGUsIGluc3RhbmNlVmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU09BUFBhY2thZ2UgZ2V0U09BUFBhY2thZ2UoKQotICB7Ci0gICAgcmV0dXJuIChTT0FQUGFja2FnZSlnZXRFUGFja2FnZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZGVwcmVjYXRlZAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFNPQVBQYWNrYWdlIGdldFBhY2thZ2UoKQotICB7Ci0gICAgcmV0dXJuIFNPQVBQYWNrYWdlLmVJTlNUQU5DRTsKLSAgfQotfSAvL1NPQVBGYWN0b3J5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvaW1wbC9TT0FQRmF1bHRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBGYXVsdEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVjYWFlYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBGYXVsdEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQyMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRURhdGFUeXBlVW5pcXVlRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLnV0aWwuU09BUENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GYXVsdDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEZhdWx0SW1wbCNnZXRVc2UgPGVtPlVzZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEZhdWx0SW1wbCNnZXROYW1lc3BhY2VVUkkgPGVtPk5hbWVzcGFjZSBVUkk8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBGYXVsdEltcGwjZ2V0RUVuY29kaW5nU3R5bGVzIDxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQRmF1bHRJbXBsI2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBTT0FQRmF1bHRJbXBsIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGltcGxlbWVudHMgU09BUEZhdWx0Ci17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VXNlKCkgPGVtPlVzZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0VXNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVNFX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VXNlKCkgPGVtPlVzZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0VXNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyB1c2UgPSBVU0VfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lc3BhY2VVUkkoKSA8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TmFtZXNwYWNlVVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRVNQQUNFX1VSSV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWVzcGFjZVVSSSgpIDxlbT5OYW1lc3BhY2UgVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXROYW1lc3BhY2VVUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IE5BTUVTUEFDRV9VUklfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVFbmNvZGluZ1N0eWxlcygpIDxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT59JyBhdHRyaWJ1dGUgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVFbmNvZGluZ1N0eWxlcygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBFTGlzdCBlRW5jb2RpbmdTdHlsZXM7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmFtZSgpIDxlbT5OYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXROYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBuYW1lID0gTkFNRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBTT0FQRmF1bHRJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0ZBVUxUOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFVzZSgpCi0gIHsKLSAgICByZXR1cm4gdXNlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRVc2UoU3RyaW5nIG5ld1VzZSkKLSAgewotICAgIFN0cmluZyBvbGRVc2UgPSB1c2U7Ci0gICAgdXNlID0gbmV3VXNlOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX1VTRSwgb2xkVXNlLCB1c2UpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lc3BhY2VVUkkoKQotICB7Ci0gICAgcmV0dXJuIG5hbWVzcGFjZVVSSTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZXNwYWNlVVJJKFN0cmluZyBuZXdOYW1lc3BhY2VVUkkpCi0gIHsKLSAgICBTdHJpbmcgb2xkTmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJOwotICAgIG5hbWVzcGFjZVVSSSA9IG5ld05hbWVzcGFjZVVSSTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBTT0FQUGFja2FnZS5TT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJLCBvbGROYW1lc3BhY2VVUkksIG5hbWVzcGFjZVVSSSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUxpc3QgZ2V0RUVuY29kaW5nU3R5bGVzKCkKLSAgewotICAgIGlmIChlRW5jb2RpbmdTdHlsZXMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBlRW5jb2RpbmdTdHlsZXMgPSBuZXcgRURhdGFUeXBlVW5pcXVlRUxpc3QoU3RyaW5nLmNsYXNzLCB0aGlzLCBTT0FQUGFja2FnZS5TT0FQX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVFbmNvZGluZ1N0eWxlczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgewotICAgIHJldHVybiBuYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuZXdOYW1lKQotICB7Ci0gICAgU3RyaW5nIG9sZE5hbWUgPSBuYW1lOwotICAgIG5hbWUgPSBuZXdOYW1lOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX05BTUUsIG9sZE5hbWUsIG5hbWUpKTsKLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQjZ2V0RW5jb2RpbmdTdHlsZXMoKQotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0RW5jb2RpbmdTdHlsZXMoKQotICB7Ci0gICAgcmV0dXJuIGdldEVFbmNvZGluZ1N0eWxlcygpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0ZBVUxUX19VU0U6Ci0gICAgICByZXR1cm4gZ2V0VXNlKCk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkk6Ci0gICAgICByZXR1cm4gZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVM6Ci0gICAgICByZXR1cm4gZ2V0RUVuY29kaW5nU3R5bGVzKCk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX05BTUU6Ci0gICAgICByZXR1cm4gZ2V0TmFtZSgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX1VTRToKLSAgICAgIHNldFVzZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9GQVVMVF9fTkFNRVNQQUNFX1VSSToKLSAgICAgIHNldE5hbWVzcGFjZVVSSSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzoKLSAgICAgIGdldEVFbmNvZGluZ1N0eWxlcygpLmNsZWFyKCk7Ci0gICAgICBnZXRFRW5jb2RpbmdTdHlsZXMoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0ZBVUxUX19OQU1FOgotICAgICAgc2V0TmFtZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX1VTRToKLSAgICAgIHNldFVzZShVU0VfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJOgotICAgICAgc2V0TmFtZXNwYWNlVVJJKE5BTUVTUEFDRV9VUklfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTOgotICAgICAgZ2V0RUVuY29kaW5nU3R5bGVzKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9GQVVMVF9fTkFNRToKLSAgICAgIHNldE5hbWUoTkFNRV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9GQVVMVF9fVVNFOgotICAgICAgcmV0dXJuIFVTRV9FREVGQVVMVCA9PSBudWxsID8gdXNlICE9IG51bGwgOiAhVVNFX0VERUZBVUxULmVxdWFscyh1c2UpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJOgotICAgICAgcmV0dXJuIE5BTUVTUEFDRV9VUklfRURFRkFVTFQgPT0gbnVsbCA/IG5hbWVzcGFjZVVSSSAhPSBudWxsIDogIU5BTUVTUEFDRV9VUklfRURFRkFVTFQuZXF1YWxzKG5hbWVzcGFjZVVSSSk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVM6Ci0gICAgICByZXR1cm4gZUVuY29kaW5nU3R5bGVzICE9IG51bGwgJiYgIWVFbmNvZGluZ1N0eWxlcy5pc0VtcHR5KCk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX05BTUU6Ci0gICAgICByZXR1cm4gTkFNRV9FREVGQVVMVCA9PSBudWxsID8gbmFtZSAhPSBudWxsIDogIU5BTUVfRURFRkFVTFQuZXF1YWxzKG5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRFbmNvZGluZ1N0eWxlcyhMaXN0IGxpc3QpCi0gIHsKLSAgICBlRW5jb2RpbmdTdHlsZXMgPSAoRUxpc3QpbGlzdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBpZiAoZUlzUHJveHkoKSkKLSAgICAgIHJldHVybiBzdXBlci50b1N0cmluZygpOwotCi0gICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiICh1c2U6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZCh1c2UpOwotICAgIHJlc3VsdC5hcHBlbmQoIiwgbmFtZXNwYWNlVVJJOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQobmFtZXNwYWNlVVJJKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIGVFbmNvZGluZ1N0eWxlczogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKGVFbmNvZGluZ1N0eWxlcyk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCBuYW1lOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQobmFtZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vCi0gIC8vIFJlY29uY2lsZSBtZXRob2RzOiBET00gLT4gTW9kZWwKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBzZXROYW1lKFNPQVBDb25zdGFudHMuZ2V0QXR0cmlidXRlKGNoYW5nZWRFbGVtZW50LCBTT0FQQ29uc3RhbnRzLk5BTUVfQVRUUklCVVRFKSk7Ci0gICAgc2V0TmFtZXNwYWNlVVJJKFNPQVBDb25zdGFudHMuZ2V0QXR0cmlidXRlKGNoYW5nZWRFbGVtZW50LCBTT0FQQ29uc3RhbnRzLk5BTUVTUEFDRV9BVFRSSUJVVEUpKTsKLSAgICBzZXRVc2UoU09BUENvbnN0YW50cy5nZXRBdHRyaWJ1dGUoY2hhbmdlZEVsZW1lbnQsIFNPQVBDb25zdGFudHMuVVNFX0FUVFJJQlVURSkpOwotCi0gICAgLy8gVEJEIC0gaGFuZGxlIGVuY29kaW5nU3R5bGVzCi0KLSAgICByZWNvbmNpbGVSZWZlcmVuY2VzKGZhbHNlKTsKLSAgfQotCi0gIC8vCi0gIC8vIEZvciByZWNvbmNpbGlhdGlvbjogTW9kZWwgLT4gRE9NCi0gIC8vCi0KLSAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlQXR0cmlidXRlKEVBdHRyaWJ1dGUgZUF0dHJpYnV0ZSkKLSAgewotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgcmV0dXJuOwotCi0gICAgc3VwZXIuY2hhbmdlQXR0cmlidXRlKGVBdHRyaWJ1dGUpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFNPQVBDb25zdGFudHMuTkFNRVNQQUNFX0FUVFJJQlVURSwgZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfRkFVTFRfX1VTRSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBTT0FQQ29uc3RhbnRzLlVTRV9BVFRSSUJVVEUsIGdldFVzZSgpKTsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTKQotICAgICAgewotICAgICAgICBMaXN0IGVuY29kaW5nU3R5bGVMaXN0ID0gZ2V0RW5jb2RpbmdTdHlsZXMoKTsKLSAgICAgICAgU3RyaW5nIGVuY29kaW5nU3R5bGVzID0gIiI7Ci0gICAgICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gZW5jb2RpbmdTdHlsZUxpc3QuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIGlmIChlbmNvZGluZ1N0eWxlcy5lcXVhbHMoIiIpKSAvLyBmaXJzdCBpdGVyYXRpb24KLSAgICAgICAgICAgIGVuY29kaW5nU3R5bGVzICs9IChTdHJpbmcpaXRlcmF0b3IubmV4dCgpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVuY29kaW5nU3R5bGVzICs9ICIgIiArIChTdHJpbmcpaXRlcmF0b3IubmV4dCgpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghZW5jb2RpbmdTdHlsZXMuZXF1YWxzKCIiKSkKLSAgICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFNPQVBDb25zdGFudHMuRU5DT0RJTkdfU1RZTEVfQVRUUklCVVRFLCBlbmNvZGluZ1N0eWxlcyk7Ci0gICAgICB9IC8vIFRCRCAtIElzIHRoaXMgdGhlIHByb3BlciB3YXkgdG8gaGFuZGxlIGVuY29kaW5nU3R5bGVzCi0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gU09BUFBhY2thZ2UuTGl0ZXJhbHMuU09BUF9GQVVMVF9fTkFNRSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBTT0FQQ29uc3RhbnRzLk5BTUVfQVRUUklCVVRFLCBnZXROYW1lKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKFNPQVBDb25zdGFudHMuU09BUF9OQU1FU1BBQ0VfVVJJLCBTT0FQQ29uc3RhbnRzLkZBVUxUX0VMRU1FTlRfVEFHKTsKLSAgICByZXR1cm4gZWxlbWVudFR5cGU7Ci0gIH0KLQotfSAvL1NPQVBGYXVsdEltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEhlYWRlckJhc2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBIZWFkZXJCYXNlSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjgzZWEzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEhlYWRlckJhc2VJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2ODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRURhdGFUeXBlVW5pcXVlRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwudXRpbC5TT0FQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLWltcG9ydCBjb20uaWJtLmljdS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SGVhZGVyIEJhc2U8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBIZWFkZXJCYXNlSW1wbCNnZXRVc2UgPGVtPlVzZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEhlYWRlckJhc2VJbXBsI2dldE5hbWVzcGFjZVVSSSA8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEhlYWRlckJhc2VJbXBsI2dldEVFbmNvZGluZ1N0eWxlcyA8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEhlYWRlckJhc2VJbXBsI2dldE1lc3NhZ2UgPGVtPk1lc3NhZ2U8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBIZWFkZXJCYXNlSW1wbCNnZXRQYXJ0IDxlbT5QYXJ0PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQSGVhZGVyQmFzZUltcGwjZ2V0RU1lc3NhZ2UgPGVtPkVNZXNzYWdlPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQSGVhZGVyQmFzZUltcGwjZ2V0RVBhcnQgPGVtPkVQYXJ0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgU09BUEhlYWRlckJhc2VJbXBsIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGltcGxlbWVudHMgU09BUEhlYWRlckJhc2UKLXsKLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRVc2UoKSA8ZW0+VXNlPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRVc2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBVU0VfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRVc2UoKSA8ZW0+VXNlPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRVc2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHVzZSA9IFVTRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWVzcGFjZVVSSSgpIDxlbT5OYW1lc3BhY2UgVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXROYW1lc3BhY2VVUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FU1BBQ0VfVVJJX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmFtZXNwYWNlVVJJKCkgPGVtPk5hbWVzcGFjZSBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWVzcGFjZVVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgbmFtZXNwYWNlVVJJID0gTkFNRVNQQUNFX1VSSV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RUVuY29kaW5nU3R5bGVzKCkgPGVtPkVFbmNvZGluZyBTdHlsZXM8L2VtPn0nIGF0dHJpYnV0ZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RUVuY29kaW5nU3R5bGVzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVMaXN0IGVFbmNvZGluZ1N0eWxlczsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE1lc3NhZ2UoKSA8ZW0+TWVzc2FnZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TWVzc2FnZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgUU5hbWUgTUVTU0FHRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE1lc3NhZ2UoKSA8ZW0+TWVzc2FnZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TWVzc2FnZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBRTmFtZSBtZXNzYWdlID0gTUVTU0FHRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFBhcnQoKSA8ZW0+UGFydDwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0UGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlRfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRQYXJ0KCkgPGVtPlBhcnQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFBhcnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHBhcnQgPSBQQVJUX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFTWVzc2FnZSgpIDxlbT5FTWVzc2FnZTwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RU1lc3NhZ2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgTWVzc2FnZSBlTWVzc2FnZTsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RVBhcnQoKSA8ZW0+RVBhcnQ8L2VtPn0nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVQYXJ0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFBhcnQgZVBhcnQ7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgU09BUEhlYWRlckJhc2VJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0hFQURFUl9CQVNFOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFVzZSgpCi0gIHsKLSAgICByZXR1cm4gdXNlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRVc2UoU3RyaW5nIG5ld1VzZSkKLSAgewotICAgIFN0cmluZyBvbGRVc2UgPSB1c2U7Ci0gICAgdXNlID0gbmV3VXNlOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX1VTRSwgb2xkVXNlLCB1c2UpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lc3BhY2VVUkkoKQotICB7Ci0gICAgcmV0dXJuIG5hbWVzcGFjZVVSSTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZXNwYWNlVVJJKFN0cmluZyBuZXdOYW1lc3BhY2VVUkkpCi0gIHsKLSAgICBTdHJpbmcgb2xkTmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJOwotICAgIG5hbWVzcGFjZVVSSSA9IG5ld05hbWVzcGFjZVVSSTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJLCBvbGROYW1lc3BhY2VVUkksIG5hbWVzcGFjZVVSSSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUxpc3QgZ2V0RUVuY29kaW5nU3R5bGVzKCkKLSAgewotICAgIGlmIChlRW5jb2RpbmdTdHlsZXMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBlRW5jb2RpbmdTdHlsZXMgPSBuZXcgRURhdGFUeXBlVW5pcXVlRUxpc3QoU3RyaW5nLmNsYXNzLCB0aGlzLCBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19FRU5DT0RJTkdfU1RZTEVTKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVFbmNvZGluZ1N0eWxlczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE1lc3NhZ2UgZ2V0RU1lc3NhZ2UoKQotICB7Ci0gICAgaWYgKGVNZXNzYWdlICE9IG51bGwgJiYgZU1lc3NhZ2UuZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkRU1lc3NhZ2UgPSAoSW50ZXJuYWxFT2JqZWN0KWVNZXNzYWdlOwotICAgICAgZU1lc3NhZ2UgPSAoTWVzc2FnZSllUmVzb2x2ZVByb3h5KG9sZEVNZXNzYWdlKTsKLSAgICAgIGlmIChlTWVzc2FnZSAhPSBvbGRFTWVzc2FnZSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19FTUVTU0FHRSwgb2xkRU1lc3NhZ2UsIGVNZXNzYWdlKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlTWVzc2FnZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE1lc3NhZ2UgYmFzaWNHZXRFTWVzc2FnZSgpCi0gIHsKLSAgICByZXR1cm4gZU1lc3NhZ2U7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVNZXNzYWdlKE1lc3NhZ2UgbmV3RU1lc3NhZ2UpCi0gIHsKLSAgICBNZXNzYWdlIG9sZEVNZXNzYWdlID0gZU1lc3NhZ2U7Ci0gICAgZU1lc3NhZ2UgPSBuZXdFTWVzc2FnZTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19FTUVTU0FHRSwgb2xkRU1lc3NhZ2UsIGVNZXNzYWdlKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBQYXJ0IGdldEVQYXJ0KCkKLSAgewotICAgIGlmIChlUGFydCAhPSBudWxsICYmIGVQYXJ0LmVJc1Byb3h5KCkpCi0gICAgewotICAgICAgSW50ZXJuYWxFT2JqZWN0IG9sZEVQYXJ0ID0gKEludGVybmFsRU9iamVjdCllUGFydDsKLSAgICAgIGVQYXJ0ID0gKFBhcnQpZVJlc29sdmVQcm94eShvbGRFUGFydCk7Ci0gICAgICBpZiAoZVBhcnQgIT0gb2xkRVBhcnQpCi0gICAgICB7Ci0gICAgICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRVBBUlQsIG9sZEVQYXJ0LCBlUGFydCkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZVBhcnQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBQYXJ0IGJhc2ljR2V0RVBhcnQoKQotICB7Ci0gICAgcmV0dXJuIGVQYXJ0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFUGFydChQYXJ0IG5ld0VQYXJ0KQotICB7Ci0gICAgUGFydCBvbGRFUGFydCA9IGVQYXJ0OwotICAgIGVQYXJ0ID0gbmV3RVBhcnQ7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRVBBUlQsIG9sZEVQYXJ0LCBlUGFydCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUU5hbWUgZ2V0TWVzc2FnZSgpCi0gIHsKLSAgICByZXR1cm4gbWVzc2FnZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TWVzc2FnZShRTmFtZSBuZXdNZXNzYWdlKQotICB7Ci0gICAgUU5hbWUgb2xkTWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgbWVzc2FnZSA9IG5ld01lc3NhZ2U7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRSwgb2xkTWVzc2FnZSwgbWVzc2FnZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFBhcnQoKQotICB7Ci0gICAgcmV0dXJuIHBhcnQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFBhcnQoU3RyaW5nIG5ld1BhcnQpCi0gIHsKLSAgICBTdHJpbmcgb2xkUGFydCA9IHBhcnQ7Ci0gICAgcGFydCA9IG5ld1BhcnQ7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fUEFSVCwgb2xkUGFydCwgcGFydCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0RW5jb2RpbmdTdHlsZXMoKQotICB7Ci0gICAgcmV0dXJuIGdldEVFbmNvZGluZ1N0eWxlcygpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RW5jb2RpbmdTdHlsZXMoTGlzdCBlbmNvZGluZ1N0eWxlcykKLSAgewotICAgIGVFbmNvZGluZ1N0eWxlcyA9IChFTGlzdCllbmNvZGluZ1N0eWxlczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fVVNFOgotICAgICAgcmV0dXJuIGdldFVzZSgpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJOgotICAgICAgcmV0dXJuIGdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19FRU5DT0RJTkdfU1RZTEVTOgotICAgICAgcmV0dXJuIGdldEVFbmNvZGluZ1N0eWxlcygpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFOgotICAgICAgcmV0dXJuIGdldE1lc3NhZ2UoKTsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fUEFSVDoKLSAgICAgIHJldHVybiBnZXRQYXJ0KCk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFOgotICAgICAgaWYgKHJlc29sdmUpCi0gICAgICAgIHJldHVybiBnZXRFTWVzc2FnZSgpOwotICAgICAgcmV0dXJuIGJhc2ljR2V0RU1lc3NhZ2UoKTsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRVBBUlQ6Ci0gICAgICBpZiAocmVzb2x2ZSkKLSAgICAgICAgcmV0dXJuIGdldEVQYXJ0KCk7Ci0gICAgICByZXR1cm4gYmFzaWNHZXRFUGFydCgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX1VTRToKLSAgICAgIHNldFVzZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fTkFNRVNQQUNFX1VSSToKLSAgICAgIHNldE5hbWVzcGFjZVVSSSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUzoKLSAgICAgIGdldEVFbmNvZGluZ1N0eWxlcygpLmNsZWFyKCk7Ci0gICAgICBnZXRFRW5jb2RpbmdTdHlsZXMoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFOgotICAgICAgc2V0TWVzc2FnZSgoUU5hbWUpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19QQVJUOgotICAgICAgc2V0UGFydCgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0U6Ci0gICAgICBzZXRFTWVzc2FnZSgoTWVzc2FnZSluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX0VQQVJUOgotICAgICAgc2V0RVBhcnQoKFBhcnQpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fVVNFOgotICAgICAgc2V0VXNlKFVTRV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkk6Ci0gICAgICBzZXROYW1lc3BhY2VVUkkoTkFNRVNQQUNFX1VSSV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVM6Ci0gICAgICBnZXRFRW5jb2RpbmdTdHlsZXMoKS5jbGVhcigpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFOgotICAgICAgc2V0TWVzc2FnZShNRVNTQUdFX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fUEFSVDoKLSAgICAgIHNldFBhcnQoUEFSVF9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFOgotICAgICAgc2V0RU1lc3NhZ2UoKE1lc3NhZ2UpbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX0VQQVJUOgotICAgICAgc2V0RVBhcnQoKFBhcnQpbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fVVNFOgotICAgICAgcmV0dXJuIFVTRV9FREVGQVVMVCA9PSBudWxsID8gdXNlICE9IG51bGwgOiAhVVNFX0VERUZBVUxULmVxdWFscyh1c2UpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJOgotICAgICAgcmV0dXJuIE5BTUVTUEFDRV9VUklfRURFRkFVTFQgPT0gbnVsbCA/IG5hbWVzcGFjZVVSSSAhPSBudWxsIDogIU5BTUVTUEFDRV9VUklfRURFRkFVTFQuZXF1YWxzKG5hbWVzcGFjZVVSSSk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVM6Ci0gICAgICByZXR1cm4gZUVuY29kaW5nU3R5bGVzICE9IG51bGwgJiYgIWVFbmNvZGluZ1N0eWxlcy5pc0VtcHR5KCk7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX01FU1NBR0U6Ci0gICAgICByZXR1cm4gTUVTU0FHRV9FREVGQVVMVCA9PSBudWxsID8gbWVzc2FnZSAhPSBudWxsIDogIU1FU1NBR0VfRURFRkFVTFQuZXF1YWxzKG1lc3NhZ2UpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19QQVJUOgotICAgICAgcmV0dXJuIFBBUlRfRURFRkFVTFQgPT0gbnVsbCA/IHBhcnQgIT0gbnVsbCA6ICFQQVJUX0VERUZBVUxULmVxdWFscyhwYXJ0KTsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0U6Ci0gICAgICByZXR1cm4gZU1lc3NhZ2UgIT0gbnVsbDsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRVBBUlQ6Ci0gICAgICByZXR1cm4gZVBhcnQgIT0gbnVsbDsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKHVzZTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKHVzZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCBuYW1lc3BhY2VVUkk6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChuYW1lc3BhY2VVUkkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiwgZUVuY29kaW5nU3R5bGVzOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQoZUVuY29kaW5nU3R5bGVzKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIG1lc3NhZ2U6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChtZXNzYWdlKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIHBhcnQ6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChwYXJ0KTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxlIG1ldGhvZHM6IERPTSAtPiBNb2RlbAotICAvLwotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIHNldFVzZShTT0FQQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgU09BUENvbnN0YW50cy5VU0VfQVRUUklCVVRFKSk7Ci0gICAgc2V0TmFtZXNwYWNlVVJJKFNPQVBDb25zdGFudHMuZ2V0QXR0cmlidXRlKGNoYW5nZWRFbGVtZW50LCBTT0FQQ29uc3RhbnRzLk5BTUVTUEFDRV9BVFRSSUJVVEUpKTsKLSAgICBpZiAoY2hhbmdlZEVsZW1lbnQuaGFzQXR0cmlidXRlKFNPQVBDb25zdGFudHMuTUVTU0FHRV9BVFRSSUJVVEUpKQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IChEZWZpbml0aW9uKWdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgICAgIFFOYW1lIG1lc3NhZ2VRTmFtZSA9IGNyZWF0ZVFOYW1lKGRlZmluaXRpb24sIGNoYW5nZWRFbGVtZW50LmdldEF0dHJpYnV0ZShTT0FQQ29uc3RhbnRzLk1FU1NBR0VfQVRUUklCVVRFKSwgY2hhbmdlZEVsZW1lbnQpOwotICAgICAgc2V0TWVzc2FnZShtZXNzYWdlUU5hbWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgc2V0TWVzc2FnZShudWxsKTsKLSAgICB9Ci0gICAgc2V0UGFydChTT0FQQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgU09BUENvbnN0YW50cy5QQVJUX0FUVFJJQlVURSkpOwotICAgIGlmIChjaGFuZ2VkRWxlbWVudC5oYXNBdHRyaWJ1dGUoU09BUENvbnN0YW50cy5FTkNPRElOR19TVFlMRV9BVFRSSUJVVEUpKQotICAgIHsKLSAgICAgIFN0cmluZyBlbmNvZGluZ1N0eWxlcyA9IGNoYW5nZWRFbGVtZW50LmdldEF0dHJpYnV0ZShTT0FQQ29uc3RhbnRzLkVOQ09ESU5HX1NUWUxFX0FUVFJJQlVURSk7Ci0gICAgICBTdHJpbmdUb2tlbml6ZXIgdG9rZW5pemVyID0gbmV3IFN0cmluZ1Rva2VuaXplcihlbmNvZGluZ1N0eWxlcyk7Ci0gICAgICB3aGlsZSAodG9rZW5pemVyLmhhc01vcmVUb2tlbnMoKSkKLSAgICAgICAgZ2V0RUVuY29kaW5nU3R5bGVzKCkuYWRkKHRva2VuaXplci5uZXh0VG9rZW4oKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBnZXRFRW5jb2RpbmdTdHlsZXMoKS5jbGVhcigpOwotICAgIH0KLQotICAgIHJlY29uY2lsZVJlZmVyZW5jZXMoZmFsc2UpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlUmVmZXJlbmNlcyhib29sZWFuIGRlZXApCi0gIHsKLSAgICBpZiAoZWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IChEZWZpbml0aW9uKWdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgICAgIE1lc3NhZ2UgbWVzc2FnZSA9ICh0aGlzLm1lc3NhZ2UgIT0gbnVsbCkgPyAoTWVzc2FnZSlkZWZpbml0aW9uLmdldE1lc3NhZ2UodGhpcy5tZXNzYWdlKSA6IG51bGw7Ci0gICAgICBpZiAobWVzc2FnZSAhPSBudWxsICYmIG1lc3NhZ2UgIT0gZ2V0RU1lc3NhZ2UoKSkKLSAgICAgIHsKLSAgICAgICAgc2V0RU1lc3NhZ2UobWVzc2FnZSk7Ci0KLSAgICAgICAgUGFydCBuZXdQYXJ0ID0gKFBhcnQpbWVzc2FnZS5nZXRQYXJ0KHBhcnQpOwotICAgICAgICBpZiAobmV3UGFydCAhPSBudWxsICYmIG5ld1BhcnQgIT0gZ2V0RVBhcnQoKSkKLSAgICAgICAgewotICAgICAgICAgIHNldEVQYXJ0KG5ld1BhcnQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHN1cGVyLnJlY29uY2lsZVJlZmVyZW5jZXMoZGVlcCk7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gU09BUFBhY2thZ2UuTGl0ZXJhbHMuU09BUF9IRUFERVJfQkFTRV9fVVNFKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFNPQVBDb25zdGFudHMuVVNFX0FUVFJJQlVURSwgZ2V0VXNlKCkpOwotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkkpCi0gICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgU09BUENvbnN0YW50cy5OQU1FU1BBQ0VfQVRUUklCVVRFLCBnZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gU09BUFBhY2thZ2UuTGl0ZXJhbHMuU09BUF9IRUFERVJfQkFTRV9fUEFSVCkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBTT0FQQ29uc3RhbnRzLlBBUlRfQVRUUklCVVRFLCBnZXRQYXJ0KCkpOwotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfSEVBREVSX0JBU0VfX01FU1NBR0UpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyB1cmlMaXN0ID0gbWVzc2FnZSAhPSBudWxsID8gbWVzc2FnZS5nZXROYW1lc3BhY2VVUkkoKSArICIjIiArIG1lc3NhZ2UuZ2V0TG9jYWxQYXJ0KCkgOiBudWxsOwotICAgICAgICBuaWNlU2V0QXR0cmlidXRlVVJJVmFsdWUodGhlRWxlbWVudCwgU09BUENvbnN0YW50cy5NRVNTQUdFX0FUVFJJQlVURSwgdXJpTGlzdCk7Ci0gICAgICB9Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gU09BUFBhY2thZ2UuTGl0ZXJhbHMuU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUykKLSAgICAgIHsKLSAgICAgICAgTGlzdCBlbmNvZGluZ1N0eWxlTGlzdCA9IGdldEVFbmNvZGluZ1N0eWxlcygpOwotICAgICAgICBTdHJpbmcgZW5jb2RpbmdTdHlsZXMgPSAiIjsKLSAgICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBlbmNvZGluZ1N0eWxlTGlzdC5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGVuY29kaW5nU3R5bGVzLmVxdWFscygiIikpIC8vIGZpcnN0IGl0ZXJhdGlvbgotICAgICAgICAgICAgZW5jb2RpbmdTdHlsZXMgKz0gKFN0cmluZylpdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgZW5jb2RpbmdTdHlsZXMgKz0gIiAiICsgKFN0cmluZylpdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFlbmNvZGluZ1N0eWxlcy5lcXVhbHMoIiIpKQotICAgICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgU09BUENvbnN0YW50cy5FTkNPRElOR19TVFlMRV9BVFRSSUJVVEUsIGVuY29kaW5nU3R5bGVzKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VSZWZlcmVuY2UoRVJlZmVyZW5jZSBlUmVmZXJlbmNlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VSZWZlcmVuY2UoZVJlZmVyZW5jZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVSZWZlcmVuY2UgPT0gbnVsbCB8fCBlUmVmZXJlbmNlID09IFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFKQotICAgICAgewotICAgICAgICBNZXNzYWdlIG1lc3NhZ2UgPSBnZXRFTWVzc2FnZSgpOwotICAgICAgICBpZiAobWVzc2FnZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgUU5hbWUgcU5hbWUgPSBtZXNzYWdlLmdldFFOYW1lKCk7Ci0gICAgICAgICAgbmljZVNldEF0dHJpYnV0ZVVSSVZhbHVlKHRoZUVsZW1lbnQsIFNPQVBDb25zdGFudHMuTUVTU0FHRV9BVFRSSUJVVEUsIHFOYW1lLmdldE5hbWVzcGFjZVVSSSgpICsgIiMiICsgcU5hbWUuZ2V0TG9jYWxQYXJ0KCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChlUmVmZXJlbmNlID09IG51bGwgfHwgZVJlZmVyZW5jZSA9PSBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0hFQURFUl9CQVNFX19FUEFSVCkKLSAgICAgIHsKLSAgICAgICAgUGFydCBwYXJ0ID0gZ2V0RVBhcnQoKTsKLSAgICAgICAgaWYgKHBhcnQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBwYXJ0TmFtZSA9IHBhcnQuZ2V0TmFtZSgpOwotICAgICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgU09BUENvbnN0YW50cy5QQVJUX0FUVFJJQlVURSwgcGFydE5hbWUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci19IC8vU09BUEhlYWRlckJhc2VJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBIZWFkZXJGYXVsdEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEhlYWRlckZhdWx0SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjQ0ODMwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEhlYWRlckZhdWx0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwudXRpbC5TT0FQQ29uc3RhbnRzOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXIgRmF1bHQ8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBTT0FQSGVhZGVyRmF1bHRJbXBsIGV4dGVuZHMgU09BUEhlYWRlckJhc2VJbXBsIGltcGxlbWVudHMgU09BUEhlYWRlckZhdWx0Ci17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIFNPQVBIZWFkZXJGYXVsdEltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfSEVBREVSX0ZBVUxUOwotICB9Ci0KLSAgcHVibGljIFFOYW1lIGdldEVsZW1lbnRUeXBlKCkKLSAgewotICAgIGlmIChlbGVtZW50VHlwZSA9PSBudWxsKQotICAgICAgZWxlbWVudFR5cGUgPSBuZXcgUU5hbWUoU09BUENvbnN0YW50cy5TT0FQX05BTUVTUEFDRV9VUkksIFNPQVBDb25zdGFudHMuSEVBREVSX0ZBVUxUX0VMRU1FTlRfVEFHKTsKLSAgICByZXR1cm4gZWxlbWVudFR5cGU7Ci0gIH0KLQotfSAvL1NPQVBIZWFkZXJGYXVsdEltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEhlYWRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUEhlYWRlckltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgxNWM2Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBIZWFkZXJJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uQ2hhaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0Q29udGFpbm1lbnRFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwudXRpbC5TT0FQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlcjwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEhlYWRlckltcGwjZ2V0SGVhZGVyRmF1bHRzIDxlbT5IZWFkZXIgRmF1bHRzPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgU09BUEhlYWRlckltcGwgZXh0ZW5kcyBTT0FQSGVhZGVyQmFzZUltcGwgaW1wbGVtZW50cyBTT0FQSGVhZGVyCi17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRIZWFkZXJGYXVsdHMoKSA8ZW0+SGVhZGVyIEZhdWx0czwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRIZWFkZXJGYXVsdHMoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3QgaGVhZGVyRmF1bHRzOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIFNPQVBIZWFkZXJJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0hFQURFUjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVMaXN0IGdldEhlYWRlckZhdWx0cygpCi0gIHsKLSAgICBpZiAoaGVhZGVyRmF1bHRzID09IG51bGwpCi0gICAgewotICAgICAgaGVhZGVyRmF1bHRzID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KFNPQVBIZWFkZXJGYXVsdC5jbGFzcywgdGhpcywgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFMpOwotICAgIH0KLSAgICByZXR1cm4gaGVhZGVyRmF1bHRzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0U09BUEhlYWRlckZhdWx0cygpCi0gIHsKLSAgICByZXR1cm4gZ2V0SGVhZGVyRmF1bHRzKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRTT0FQSGVhZGVyRmF1bHQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0IHNvYXBIZWFkZXJGYXVsdCkKLSAgewotICAgIEVMaXN0IGhlYWRlckZhdWx0cyA9IGdldEhlYWRlckZhdWx0cygpOwotICAgIGhlYWRlckZhdWx0cy5hZGQoc29hcEhlYWRlckZhdWx0KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE5vdGlmaWNhdGlvbkNoYWluIGVJbnZlcnNlUmVtb3ZlKEludGVybmFsRU9iamVjdCBvdGhlckVuZCwgaW50IGZlYXR1cmVJRCwgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFM6Ci0gICAgICByZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldEhlYWRlckZhdWx0cygpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSW52ZXJzZVJlbW92ZShvdGhlckVuZCwgZmVhdHVyZUlELCBtc2dzKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFM6Ci0gICAgICByZXR1cm4gZ2V0SGVhZGVyRmF1bHRzKCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFM6Ci0gICAgICBnZXRIZWFkZXJGYXVsdHMoKS5jbGVhcigpOwotICAgICAgZ2V0SGVhZGVyRmF1bHRzKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19IRUFERVJfRkFVTFRTOgotICAgICAgZ2V0SGVhZGVyRmF1bHRzKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUzoKLSAgICAgIHJldHVybiBoZWFkZXJGYXVsdHMgIT0gbnVsbCAmJiAhaGVhZGVyRmF1bHRzLmlzRW1wdHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChFbGVtZW50IGNoaWxkLCBDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGlmIChTT0FQQ29uc3RhbnRzLkhFQURFUl9GQVVMVF9FTEVNRU5UX1RBRy5lcXVhbHMoY2hpbGQuZ2V0TG9jYWxOYW1lKCkpKQotICAgIHsKLSAgICAgIFNPQVBIZWFkZXJGYXVsdCBmYXVsdCA9IFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQSGVhZGVyRmF1bHQoKTsKLSAgICAgIGZhdWx0LnNldEVuY2xvc2luZ0RlZmluaXRpb24oZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpKTsKLSAgICAgIGZhdWx0LnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgZ2V0SGVhZGVyRmF1bHRzKCkuYWRkKGZhdWx0KTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVSZWNvbmNpbGlhdGlvbihDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGZvciAoSXRlcmF0b3IgaSA9IHJlbWFpbmluZ01vZGVsT2JqZWN0cy5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgcmVtb3ZlKHRoaXMsIGkubmV4dCgpKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmUoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IG1vZGVsT2JqZWN0KQotICB7Ci0gICAgU09BUEhlYWRlciBoZWFkZXIgPSAoU09BUEhlYWRlciljb21wb25lbnQ7Ci0gICAgaWYgKG1vZGVsT2JqZWN0IGluc3RhbmNlb2YgU09BUEhlYWRlckZhdWx0KQotICAgIHsKLSAgICAgIGhlYWRlci5nZXRIZWFkZXJGYXVsdHMoKS5yZW1vdmUobW9kZWxPYmplY3QpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKFNPQVBDb25zdGFudHMuU09BUF9OQU1FU1BBQ0VfVVJJLCBTT0FQQ29uc3RhbnRzLkhFQURFUl9FTEVNRU5UX1RBRyk7Ci0gICAgcmV0dXJuIGVsZW1lbnRUeXBlOwotICB9Ci19IC8vU09BUEhlYWRlckltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUE9wZXJhdGlvbkltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL2ltcGwvU09BUE9wZXJhdGlvbkltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg3ZTNmOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBPcGVyYXRpb25JbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyODUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC51dGlsLlNPQVBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmlsaXR5RWxlbWVudEltcGw7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbC5TT0FQT3BlcmF0aW9uSW1wbCNnZXRTb2FwQWN0aW9uVVJJIDxlbT5Tb2FwIEFjdGlvbiBVUkk8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC5pbXBsLlNPQVBPcGVyYXRpb25JbXBsI2dldFN0eWxlIDxlbT5TdHlsZTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFNPQVBPcGVyYXRpb25JbXBsIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGltcGxlbWVudHMgU09BUE9wZXJhdGlvbgotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFNvYXBBY3Rpb25VUkkoKSA8ZW0+U29hcCBBY3Rpb24gVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRTb2FwQWN0aW9uVVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09BUF9BQ1RJT05fVVJJX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0U29hcEFjdGlvblVSSSgpIDxlbT5Tb2FwIEFjdGlvbiBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFNvYXBBY3Rpb25VUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHNvYXBBY3Rpb25VUkkgPSBTT0FQX0FDVElPTl9VUklfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRTdHlsZSgpIDxlbT5TdHlsZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0U3R5bGUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBTVFlMRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFN0eWxlKCkgPGVtPlN0eWxlPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRTdHlsZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgc3R5bGUgPSBTVFlMRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBTT0FQT3BlcmF0aW9uSW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpCi0gIHsKLSAgICByZXR1cm4gU09BUFBhY2thZ2UuTGl0ZXJhbHMuU09BUF9PUEVSQVRJT047Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U29hcEFjdGlvblVSSSgpCi0gIHsKLSAgICByZXR1cm4gc29hcEFjdGlvblVSSTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U29hcEFjdGlvblVSSShTdHJpbmcgbmV3U29hcEFjdGlvblVSSSkKLSAgewotICAgIFN0cmluZyBvbGRTb2FwQWN0aW9uVVJJID0gc29hcEFjdGlvblVSSTsKLSAgICBzb2FwQWN0aW9uVVJJID0gbmV3U29hcEFjdGlvblVSSTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBTT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJLCBvbGRTb2FwQWN0aW9uVVJJLCBzb2FwQWN0aW9uVVJJKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3R5bGUoKQotICB7Ci0gICAgcmV0dXJuIHN0eWxlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTdHlsZShTdHJpbmcgbmV3U3R5bGUpCi0gIHsKLSAgICBTdHJpbmcgb2xkU3R5bGUgPSBzdHlsZTsKLSAgICBzdHlsZSA9IG5ld1N0eWxlOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFNPQVBQYWNrYWdlLlNPQVBfT1BFUkFUSU9OX19TVFlMRSwgb2xkU3R5bGUsIHN0eWxlKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfT1BFUkFUSU9OX19TT0FQX0FDVElPTl9VUkk6Ci0gICAgICByZXR1cm4gZ2V0U29hcEFjdGlvblVSSSgpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fU1RZTEU6Ci0gICAgICByZXR1cm4gZ2V0U3R5bGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJOgotICAgICAgc2V0U29hcEFjdGlvblVSSSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9PUEVSQVRJT05fX1NUWUxFOgotICAgICAgc2V0U3R5bGUoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJOgotICAgICAgc2V0U29hcEFjdGlvblVSSShTT0FQX0FDVElPTl9VUklfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fU1RZTEU6Ci0gICAgICBzZXRTdHlsZShTVFlMRV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSToKLSAgICAgIHJldHVybiBTT0FQX0FDVElPTl9VUklfRURFRkFVTFQgPT0gbnVsbCA/IHNvYXBBY3Rpb25VUkkgIT0gbnVsbCA6ICFTT0FQX0FDVElPTl9VUklfRURFRkFVTFQuZXF1YWxzKHNvYXBBY3Rpb25VUkkpOwotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fU1RZTEU6Ci0gICAgICByZXR1cm4gU1RZTEVfRURFRkFVTFQgPT0gbnVsbCA/IHN0eWxlICE9IG51bGwgOiAhU1RZTEVfRURFRkFVTFQuZXF1YWxzKHN0eWxlKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKHNvYXBBY3Rpb25VUkk6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChzb2FwQWN0aW9uVVJJKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIHN0eWxlOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQoc3R5bGUpOwotICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvLwotICAvLyBSZWNvbmNpbGUgbWV0aG9kczogRE9NIC0+IE1vZGVsCi0gIC8vCi0KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlQXR0cmlidXRlcyhFbGVtZW50IGNoYW5nZWRFbGVtZW50KQotICB7Ci0gICAgc2V0U29hcEFjdGlvblVSSShTT0FQQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgU09BUENvbnN0YW50cy5TT0FQX0FDVElPTl9BVFRSSUJVVEUpKTsKLSAgICBzZXRTdHlsZShTT0FQQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgU09BUENvbnN0YW50cy5TVFlMRV9BVFRSSUJVVEUpKTsKLSAgICByZWNvbmNpbGVSZWZlcmVuY2VzKGZhbHNlKTsKLSAgfQotCi0gIC8vCi0gIC8vIEZvciByZWNvbmNpbGlhdGlvbjogTW9kZWwgLT4gRE9NCi0gIC8vCi0KLSAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlQXR0cmlidXRlKEVBdHRyaWJ1dGUgZUF0dHJpYnV0ZSkKLSAgewotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgcmV0dXJuOwotCi0gICAgc3VwZXIuY2hhbmdlQXR0cmlidXRlKGVBdHRyaWJ1dGUpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFNPQVBDb25zdGFudHMuU09BUF9BQ1RJT05fQVRUUklCVVRFLCBnZXRTb2FwQWN0aW9uVVJJKCkpOwotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfT1BFUkFUSU9OX19TVFlMRSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBTT0FQQ29uc3RhbnRzLlNUWUxFX0FUVFJJQlVURSwgZ2V0U3R5bGUoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFFOYW1lIGdldEVsZW1lbnRUeXBlKCkKLSAgewotICAgIGlmIChlbGVtZW50VHlwZSA9PSBudWxsKQotICAgICAgZWxlbWVudFR5cGUgPSBuZXcgUU5hbWUoU09BUENvbnN0YW50cy5TT0FQX05BTUVTUEFDRV9VUkksIFNPQVBDb25zdGFudHMuT1BFUkFUSU9OX0VMRU1FTlRfVEFHKTsKLSAgICByZXR1cm4gZWxlbWVudFR5cGU7Ci0gIH0KLQotfSAvL1NPQVBPcGVyYXRpb25JbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBQYWNrYWdlSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvaW1wbC9TT0FQUGFja2FnZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZhNmRkNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC9pbXBsL1NPQVBQYWNrYWdlSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODk2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRURhdGFUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FUGFja2FnZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBBZGRyZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPi4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgU09BUFBhY2thZ2VJbXBsIGV4dGVuZHMgRVBhY2thZ2VJbXBsIGltcGxlbWVudHMgU09BUFBhY2thZ2UKLXsKLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBzb2FwQmluZGluZ0VDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBzb2FwQm9keUVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBzb2FwSGVhZGVyQmFzZUVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBzb2FwRmF1bHRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3Mgc29hcE9wZXJhdGlvbkVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBzb2FwQWRkcmVzc0VDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBzb2FwSGVhZGVyRmF1bHRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3Mgc29hcEhlYWRlckVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpc29hcEJpbmRpbmdFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaXNvYXBBZGRyZXNzRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGlzb2FwQm9keUVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpc29hcEZhdWx0RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGlzb2FwT3BlcmF0aW9uRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGlzb2FwSGVhZGVyRmF1bHRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaXNvYXBIZWFkZXJFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFRGF0YVR5cGUgaVN0cmluZ0VEYXRhVHlwZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LCByZWdpc3RlcmVkIHdpdGgKLSAgICoge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeSBFUGFja2FnZS5SZWdpc3RyeX0gYnkgdGhlIHBhY2thZ2UKLSAgICogcGFja2FnZSBVUkkgdmFsdWUuCi0gICAqIDxwPk5vdGU6IHRoZSBjb3JyZWN0IHdheSB0byBjcmVhdGUgdGhlIHBhY2thZ2UgaXMgdmlhIHRoZSBzdGF0aWMKLSAgICogZmFjdG9yeSBtZXRob2Qge0BsaW5rICNpbml0IGluaXQoKX0sIHdoaWNoIGFsc28gcGVyZm9ybXMKLSAgICogaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UsIG9yIHJldHVybnMgdGhlIHJlZ2lzdGVyZWQgcGFja2FnZSwKLSAgICogaWYgb25lIGFscmVhZHkgZXhpc3RzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2UuUmVnaXN0cnkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UjZU5TX1VSSQotICAgKiBAc2VlICNpbml0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBTT0FQUGFja2FnZUltcGwoKQotICB7Ci0gICAgc3VwZXIoZU5TX1VSSSwgU09BUEZhY3RvcnkuZUlOU1RBTkNFKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0luaXRlZCA9IGZhbHNlOwotCi0gIC8qKgotICAgKiBDcmVhdGVzLCByZWdpc3RlcnMsIGFuZCBpbml0aWFsaXplcyB0aGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoaXMKLSAgICogbW9kZWwsIGFuZCBmb3IgYW55IG90aGVycyB1cG9uIHdoaWNoIGl0IGRlcGVuZHMuICBTaW1wbGUKLSAgICogZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQgYnkgY2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhbGwKLSAgICogZGVwZW5kZW50IHBhY2thZ2VzIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlLiAgVGhpcyBtZXRob2QgZHJpdmVzCi0gICAqIGluaXRpYWxpemF0aW9uIGZvciBpbnRlcmRlcGVuZGVudCBwYWNrYWdlcyBkaXJlY3RseSwgaW4gcGFyYWxsZWwKLSAgICogd2l0aCB0aGlzIHBhY2thZ2UsIGl0c2VsZi4KLSAgICogPHA+T2YgdGhpcyBwYWNrYWdlIGFuZCBpdHMgaW50ZXJkZXBlbmRlbmNpZXMsIGFsbCBwYWNrYWdlcyB3aGljaAotICAgKiBoYXZlIG5vdCB5ZXQgYmVlbiByZWdpc3RlcmVkIGJ5IHRoZWlyIFVSSSB2YWx1ZXMgYXJlIGZpcnN0IGNyZWF0ZWQKLSAgICogYW5kIHJlZ2lzdGVyZWQuICBUaGUgcGFja2FnZXMgYXJlIHRoZW4gaW5pdGlhbGl6ZWQgaW4gdHdvIHN0ZXBzOgotICAgKiBtZXRhLW1vZGVsIG9iamVjdHMgZm9yIGFsbCBvZiB0aGUgcGFja2FnZXMgYXJlIGNyZWF0ZWQgYmVmb3JlIGFueQotICAgKiBhcmUgaW5pdGlhbGl6ZWQsIHNpbmNlIG9uZSBwYWNrYWdlJ3MgbWV0YS1tb2RlbCBvYmplY3RzIG1heSByZWZlciB0bwotICAgKiB0aG9zZSBvZiBhbm90aGVyLgotICAgKiA8cD5JbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIHdpbGwgbm90IGFmZmVjdCBhbnkgcGFja2FnZXMgdGhhdCBoYXZlCi0gICAqIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2VOU19VUkkKLSAgICogQHNlZSAjY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkKLSAgICogQHNlZSAjaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU09BUFBhY2thZ2UgaW5pdCgpCi0gIHsKLSAgICBpZiAoaXNJbml0ZWQpCi0gICAgICByZXR1cm4gKFNPQVBQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFNPQVBQYWNrYWdlLmVOU19VUkkpOwotCi0gICAgLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgcGFja2FnZQotICAgIFNPQVBQYWNrYWdlSW1wbCB0aGVTT0FQUGFja2FnZSA9IChTT0FQUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKGVOU19VUkkpIGluc3RhbmNlb2YgU09BUFBhY2thZ2VJbXBsCi0gICAgICA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKGVOU19VUkkpIDogbmV3IFNPQVBQYWNrYWdlSW1wbCgpKTsKLQotICAgIGlzSW5pdGVkID0gdHJ1ZTsKLQotICAgIC8vIEluaXRpYWxpemUgc2ltcGxlIGRlcGVuZGVuY2llcwotICAgIFdTRExQYWNrYWdlLmVJTlNUQU5DRS5lQ2xhc3MoKTsKLQotICAgIC8vIENyZWF0ZSBwYWNrYWdlIG1ldGEtZGF0YSBvYmplY3RzCi0gICAgdGhlU09BUFBhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7Ci0KLSAgICAvLyBJbml0aWFsaXplIGNyZWF0ZWQgbWV0YS1kYXRhCi0gICAgdGhlU09BUFBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCi0gICAgLy8gTWFyayBtZXRhLWRhdGEgdG8gaW5kaWNhdGUgaXQgY2FuJ3QgYmUgY2hhbmdlZAotICAgIHRoZVNPQVBQYWNrYWdlLmZyZWV6ZSgpOwotCi0gICAgcmV0dXJuIHRoZVNPQVBQYWNrYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldFNPQVBCaW5kaW5nKCkKLSAgewotICAgIHJldHVybiBzb2FwQmluZGluZ0VDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0U09BUEJpbmRpbmdfVHJhbnNwb3J0VVJJKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlzb2FwQmluZGluZ0VDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRTT0FQQmluZGluZ19TdHlsZSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpc29hcEJpbmRpbmdFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRTT0FQQm9keSgpCi0gIHsKLSAgICByZXR1cm4gc29hcEJvZHlFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFNPQVBCb2R5X1VzZSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpc29hcEJvZHlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0U09BUEJvZHlfTmFtZXNwYWNlVVJJKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlzb2FwQm9keUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRTT0FQQm9keV9FRW5jb2RpbmdTdHlsZXMoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKXNvYXBCb2R5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldFNPQVBCb2R5X0VQYXJ0cygpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2Upc29hcEJvZHlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgzKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRTT0FQSGVhZGVyQmFzZSgpCi0gIHsKLSAgICByZXR1cm4gc29hcEhlYWRlckJhc2VFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFNPQVBIZWFkZXJCYXNlX1VzZSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpc29hcEhlYWRlckJhc2VFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0U09BUEhlYWRlckJhc2VfTmFtZXNwYWNlVVJJKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlzb2FwSGVhZGVyQmFzZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRTT0FQSGVhZGVyQmFzZV9FRW5jb2RpbmdTdHlsZXMoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKXNvYXBIZWFkZXJCYXNlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFNPQVBIZWFkZXJCYXNlX01lc3NhZ2UoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKXNvYXBIZWFkZXJCYXNlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFNPQVBIZWFkZXJCYXNlX1BhcnQoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKXNvYXBIZWFkZXJCYXNlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldFNPQVBIZWFkZXJCYXNlX0VNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlzb2FwSGVhZGVyQmFzZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRTT0FQSGVhZGVyQmFzZV9FUGFydCgpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2Upc29hcEhlYWRlckJhc2VFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg2KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRTT0FQRmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIHNvYXBGYXVsdEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0U09BUEZhdWx0X1VzZSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpc29hcEZhdWx0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFNPQVBGYXVsdF9OYW1lc3BhY2VVUkkoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKXNvYXBGYXVsdEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRTT0FQRmF1bHRfRUVuY29kaW5nU3R5bGVzKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlzb2FwRmF1bHRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0U09BUEZhdWx0X05hbWUoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKXNvYXBGYXVsdEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDMpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldFNPQVBPcGVyYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIHNvYXBPcGVyYXRpb25FQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFNPQVBPcGVyYXRpb25fU29hcEFjdGlvblVSSSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpc29hcE9wZXJhdGlvbkVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRTT0FQT3BlcmF0aW9uX1N0eWxlKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlzb2FwT3BlcmF0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0U09BUEFkZHJlc3MoKQotICB7Ci0gICAgcmV0dXJuIHNvYXBBZGRyZXNzRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRTT0FQQWRkcmVzc19Mb2NhdGlvblVSSSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpc29hcEFkZHJlc3NFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRTT0FQSGVhZGVyRmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIHNvYXBIZWFkZXJGYXVsdEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRTT0FQSGVhZGVyKCkKLSAgewotICAgIHJldHVybiBzb2FwSGVhZGVyRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRTT0FQSGVhZGVyX0hlYWRlckZhdWx0cygpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2Upc29hcEhlYWRlckVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElTT0FQQmluZGluZygpCi0gIHsKLSAgICByZXR1cm4gaXNvYXBCaW5kaW5nRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElTT0FQQWRkcmVzcygpCi0gIHsKLSAgICByZXR1cm4gaXNvYXBBZGRyZXNzRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElTT0FQQm9keSgpCi0gIHsKLSAgICByZXR1cm4gaXNvYXBCb2R5RUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElTT0FQRmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIGlzb2FwRmF1bHRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SVNPQVBPcGVyYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGlzb2FwT3BlcmF0aW9uRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElTT0FQSGVhZGVyRmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIGlzb2FwSGVhZGVyRmF1bHRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SVNPQVBIZWFkZXIoKQotICB7Ci0gICAgcmV0dXJuIGlzb2FwSGVhZGVyRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRURhdGFUeXBlIGdldElTdHJpbmcoKQotICB7Ci0gICAgcmV0dXJuIGlTdHJpbmdFRGF0YVR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTT0FQRmFjdG9yeSBnZXRTT0FQRmFjdG9yeSgpCi0gIHsKLSAgICByZXR1cm4gKFNPQVBGYWN0b3J5KWdldEVGYWN0b3J5SW5zdGFuY2UoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzQ3JlYXRlZCA9IGZhbHNlOwotCi0gIC8qKgotICAgKiBDcmVhdGVzIHRoZSBtZXRhLW1vZGVsIG9iamVjdHMgZm9yIHRoZSBwYWNrYWdlLiAgVGhpcyBtZXRob2QgaXMKLSAgICogZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkKLSAgewotICAgIGlmIChpc0NyZWF0ZWQpCi0gICAgICByZXR1cm47Ci0gICAgaXNDcmVhdGVkID0gdHJ1ZTsKLQotICAgIC8vIENyZWF0ZSBjbGFzc2VzIGFuZCB0aGVpciBmZWF0dXJlcwotICAgIHNvYXBCaW5kaW5nRUNsYXNzID0gY3JlYXRlRUNsYXNzKFNPQVBfQklORElORyk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShzb2FwQmluZGluZ0VDbGFzcywgU09BUF9CSU5ESU5HX19UUkFOU1BPUlRfVVJJKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHNvYXBCaW5kaW5nRUNsYXNzLCBTT0FQX0JJTkRJTkdfX1NUWUxFKTsKLQotICAgIHNvYXBCb2R5RUNsYXNzID0gY3JlYXRlRUNsYXNzKFNPQVBfQk9EWSk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShzb2FwQm9keUVDbGFzcywgU09BUF9CT0RZX19VU0UpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoc29hcEJvZHlFQ2xhc3MsIFNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSSk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShzb2FwQm9keUVDbGFzcywgU09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKHNvYXBCb2R5RUNsYXNzLCBTT0FQX0JPRFlfX0VQQVJUUyk7Ci0KLSAgICBzb2FwSGVhZGVyQmFzZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhTT0FQX0hFQURFUl9CQVNFKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHNvYXBIZWFkZXJCYXNlRUNsYXNzLCBTT0FQX0hFQURFUl9CQVNFX19VU0UpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoc29hcEhlYWRlckJhc2VFQ2xhc3MsIFNPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkkpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoc29hcEhlYWRlckJhc2VFQ2xhc3MsIFNPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVMpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoc29hcEhlYWRlckJhc2VFQ2xhc3MsIFNPQVBfSEVBREVSX0JBU0VfX01FU1NBR0UpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoc29hcEhlYWRlckJhc2VFQ2xhc3MsIFNPQVBfSEVBREVSX0JBU0VfX1BBUlQpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2Uoc29hcEhlYWRlckJhc2VFQ2xhc3MsIFNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKHNvYXBIZWFkZXJCYXNlRUNsYXNzLCBTT0FQX0hFQURFUl9CQVNFX19FUEFSVCk7Ci0KLSAgICBzb2FwRmF1bHRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoU09BUF9GQVVMVCk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShzb2FwRmF1bHRFQ2xhc3MsIFNPQVBfRkFVTFRfX1VTRSk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShzb2FwRmF1bHRFQ2xhc3MsIFNPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkkpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoc29hcEZhdWx0RUNsYXNzLCBTT0FQX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHNvYXBGYXVsdEVDbGFzcywgU09BUF9GQVVMVF9fTkFNRSk7Ci0KLSAgICBzb2FwT3BlcmF0aW9uRUNsYXNzID0gY3JlYXRlRUNsYXNzKFNPQVBfT1BFUkFUSU9OKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHNvYXBPcGVyYXRpb25FQ2xhc3MsIFNPQVBfT1BFUkFUSU9OX19TT0FQX0FDVElPTl9VUkkpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoc29hcE9wZXJhdGlvbkVDbGFzcywgU09BUF9PUEVSQVRJT05fX1NUWUxFKTsKLQotICAgIHNvYXBBZGRyZXNzRUNsYXNzID0gY3JlYXRlRUNsYXNzKFNPQVBfQUREUkVTUyk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShzb2FwQWRkcmVzc0VDbGFzcywgU09BUF9BRERSRVNTX19MT0NBVElPTl9VUkkpOwotCi0gICAgc29hcEhlYWRlckZhdWx0RUNsYXNzID0gY3JlYXRlRUNsYXNzKFNPQVBfSEVBREVSX0ZBVUxUKTsKLQotICAgIHNvYXBIZWFkZXJFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoU09BUF9IRUFERVIpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2Uoc29hcEhlYWRlckVDbGFzcywgU09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFMpOwotCi0gICAgaXNvYXBCaW5kaW5nRUNsYXNzID0gY3JlYXRlRUNsYXNzKElTT0FQX0JJTkRJTkcpOwotCi0gICAgaXNvYXBBZGRyZXNzRUNsYXNzID0gY3JlYXRlRUNsYXNzKElTT0FQX0FERFJFU1MpOwotCi0gICAgaXNvYXBCb2R5RUNsYXNzID0gY3JlYXRlRUNsYXNzKElTT0FQX0JPRFkpOwotCi0gICAgaXNvYXBGYXVsdEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJU09BUF9GQVVMVCk7Ci0KLSAgICBpc29hcE9wZXJhdGlvbkVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJU09BUF9PUEVSQVRJT04pOwotCi0gICAgaXNvYXBIZWFkZXJGYXVsdEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJU09BUF9IRUFERVJfRkFVTFQpOwotCi0gICAgaXNvYXBIZWFkZXJFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSVNPQVBfSEVBREVSKTsKLQotICAgIC8vIENyZWF0ZSBkYXRhIHR5cGVzCi0gICAgaVN0cmluZ0VEYXRhVHlwZSA9IGNyZWF0ZUVEYXRhVHlwZShJU1RSSU5HKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKLQotICAvKioKLSAgICogQ29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwYWNrYWdlIGFuZCBpdHMgbWV0YS1tb2RlbC4gIFRoaXMKLSAgICogbWV0aG9kIGlzIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKQotICB7Ci0gICAgaWYgKGlzSW5pdGlhbGl6ZWQpCi0gICAgICByZXR1cm47Ci0gICAgaXNJbml0aWFsaXplZCA9IHRydWU7Ci0KLSAgICAvLyBJbml0aWFsaXplIHBhY2thZ2UKLSAgICBzZXROYW1lKGVOQU1FKTsKLSAgICBzZXROc1ByZWZpeChlTlNfUFJFRklYKTsKLSAgICBzZXROc1VSSShlTlNfVVJJKTsKLQotICAgIC8vIE9idGFpbiBvdGhlciBkZXBlbmRlbnQgcGFja2FnZXMKLSAgICBXU0RMUGFja2FnZSB0aGVXU0RMUGFja2FnZSA9IChXU0RMUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShXU0RMUGFja2FnZS5lTlNfVVJJKTsKLQotICAgIC8vIEFkZCBzdXBlcnR5cGVzIHRvIGNsYXNzZXMKLSAgICBzb2FwQmluZGluZ0VDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVXU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBzb2FwQmluZGluZ0VDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElTT0FQQmluZGluZygpKTsKLSAgICBzb2FwQm9keUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVXU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBzb2FwQm9keUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElTT0FQQm9keSgpKTsKLSAgICBzb2FwSGVhZGVyQmFzZUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVXU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBzb2FwRmF1bHRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhlV1NETFBhY2thZ2UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSk7Ci0gICAgc29hcEZhdWx0RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SVNPQVBGYXVsdCgpKTsKLSAgICBzb2FwT3BlcmF0aW9uRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZVdTRExQYWNrYWdlLmdldEV4dGVuc2liaWxpdHlFbGVtZW50KCkpOwotICAgIHNvYXBPcGVyYXRpb25FQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJU09BUE9wZXJhdGlvbigpKTsKLSAgICBzb2FwQWRkcmVzc0VDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVXU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBzb2FwQWRkcmVzc0VDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElTT0FQQWRkcmVzcygpKTsKLSAgICBzb2FwSGVhZGVyRmF1bHRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRTT0FQSGVhZGVyQmFzZSgpKTsKLSAgICBzb2FwSGVhZGVyRmF1bHRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJU09BUEhlYWRlckZhdWx0KCkpOwotICAgIHNvYXBIZWFkZXJFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRTT0FQSGVhZGVyQmFzZSgpKTsKLSAgICBzb2FwSGVhZGVyRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SVNPQVBIZWFkZXIoKSk7Ci0KLSAgICAvLyBJbml0aWFsaXplIGNsYXNzZXMgYW5kIGZlYXR1cmVzOyBhZGQgb3BlcmF0aW9ucyBhbmQgcGFyYW1ldGVycwotICAgIGluaXRFQ2xhc3Moc29hcEJpbmRpbmdFQ2xhc3MsIFNPQVBCaW5kaW5nLmNsYXNzLCAiU09BUEJpbmRpbmciLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNPQVBCaW5kaW5nX1RyYW5zcG9ydFVSSSgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwKLSAgICAgICJ0cmFuc3BvcnRVUkkiLCBudWxsLCAwLCAxLCBTT0FQQmluZGluZy5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0U09BUEJpbmRpbmdfU3R5bGUoKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAic3R5bGUiLCBudWxsLCAwLCAxLCBTT0FQQmluZGluZy5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhzb2FwQm9keUVDbGFzcywgU09BUEJvZHkuY2xhc3MsICJTT0FQQm9keSIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0U09BUEJvZHlfVXNlKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgInVzZSIsIG51bGwsIDAsIDEsIFNPQVBCb2R5LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRTT0FQQm9keV9OYW1lc3BhY2VVUkkoKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAibmFtZXNwYWNlVVJJIiwgbnVsbCwgMCwgMSwgU09BUEJvZHkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNPQVBCb2R5X0VFbmNvZGluZ1N0eWxlcygpLAotICAgICAgdGhpcy5nZXRJU3RyaW5nKCksCi0gICAgICAiZUVuY29kaW5nU3R5bGVzIiwgbnVsbCwgMCwgLTEsIFNPQVBCb2R5LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVSZWZlcmVuY2UoCi0gICAgICBnZXRTT0FQQm9keV9FUGFydHMoKSwKLSAgICAgIHRoZVdTRExQYWNrYWdlLmdldFBhcnQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZVBhcnRzIiwgbnVsbCwgMCwgLTEsIFNPQVBCb2R5LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKHNvYXBIZWFkZXJCYXNlRUNsYXNzLCBTT0FQSGVhZGVyQmFzZS5jbGFzcywgIlNPQVBIZWFkZXJCYXNlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRTT0FQSGVhZGVyQmFzZV9Vc2UoKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAidXNlIiwgbnVsbCwgMCwgMSwgU09BUEhlYWRlckJhc2UuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNPQVBIZWFkZXJCYXNlX05hbWVzcGFjZVVSSSgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwKLSAgICAgICJuYW1lc3BhY2VVUkkiLCBudWxsLCAwLCAxLCBTT0FQSGVhZGVyQmFzZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0U09BUEhlYWRlckJhc2VfRUVuY29kaW5nU3R5bGVzKCksCi0gICAgICB0aGlzLmdldElTdHJpbmcoKSwKLSAgICAgICJlRW5jb2RpbmdTdHlsZXMiLCBudWxsLCAwLCAtMSwgU09BUEhlYWRlckJhc2UuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNPQVBIZWFkZXJCYXNlX01lc3NhZ2UoKSwKLSAgICAgIHRoZVdTRExQYWNrYWdlLmdldFFOYW1lKCksCi0gICAgICAibWVzc2FnZSIsIG51bGwsIDAsIDEsIFNPQVBIZWFkZXJCYXNlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRTT0FQSGVhZGVyQmFzZV9QYXJ0KCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgInBhcnQiLCBudWxsLCAwLCAxLCBTT0FQSGVhZGVyQmFzZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0U09BUEhlYWRlckJhc2VfRU1lc3NhZ2UoKSwKLSAgICAgIHRoZVdTRExQYWNrYWdlLmdldE1lc3NhZ2UoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZU1lc3NhZ2UiLCBudWxsLCAxLCAxLCBTT0FQSGVhZGVyQmFzZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0U09BUEhlYWRlckJhc2VfRVBhcnQoKSwKLSAgICAgIHRoZVdTRExQYWNrYWdlLmdldFBhcnQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZVBhcnQiLCBudWxsLCAxLCAxLCBTT0FQSGVhZGVyQmFzZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihzb2FwSGVhZGVyQmFzZUVDbGFzcywgdGhlV1NETFBhY2thZ2UuZ2V0SUxpc3QoKSwgImdldEVuY29kaW5nU3R5bGVzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIEVPcGVyYXRpb24gb3AgPSBhZGRFT3BlcmF0aW9uKHNvYXBIZWFkZXJCYXNlRUNsYXNzLCBudWxsLCAic2V0RW5jb2RpbmdTdHlsZXMiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoZVdTRExQYWNrYWdlLmdldElMaXN0KCksICJlbmNvZGluZ1N0eWxlcyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKHNvYXBGYXVsdEVDbGFzcywgU09BUEZhdWx0LmNsYXNzLCAiU09BUEZhdWx0IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRTT0FQRmF1bHRfVXNlKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgInVzZSIsIG51bGwsIDAsIDEsIFNPQVBGYXVsdC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0U09BUEZhdWx0X05hbWVzcGFjZVVSSSgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwKLSAgICAgICJuYW1lc3BhY2VVUkkiLCBudWxsLCAwLCAxLCBTT0FQRmF1bHQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNPQVBGYXVsdF9FRW5jb2RpbmdTdHlsZXMoKSwKLSAgICAgIHRoaXMuZ2V0SVN0cmluZygpLAotICAgICAgImVFbmNvZGluZ1N0eWxlcyIsIG51bGwsIDAsIC0xLCBTT0FQRmF1bHQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNPQVBGYXVsdF9OYW1lKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgIm5hbWUiLCBudWxsLCAwLCAxLCBTT0FQRmF1bHQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3Moc29hcE9wZXJhdGlvbkVDbGFzcywgU09BUE9wZXJhdGlvbi5jbGFzcywgIlNPQVBPcGVyYXRpb24iLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNPQVBPcGVyYXRpb25fU29hcEFjdGlvblVSSSgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwKLSAgICAgICJzb2FwQWN0aW9uVVJJIiwgbnVsbCwgMCwgMSwgU09BUE9wZXJhdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0U09BUE9wZXJhdGlvbl9TdHlsZSgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwKLSAgICAgICJzdHlsZSIsIG51bGwsIDAsIDEsIFNPQVBPcGVyYXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3Moc29hcEFkZHJlc3NFQ2xhc3MsIFNPQVBBZGRyZXNzLmNsYXNzLCAiU09BUEFkZHJlc3MiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNPQVBBZGRyZXNzX0xvY2F0aW9uVVJJKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgImxvY2F0aW9uVVJJIiwgbnVsbCwgMCwgMSwgU09BUEFkZHJlc3MuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3Moc29hcEhlYWRlckZhdWx0RUNsYXNzLCBTT0FQSGVhZGVyRmF1bHQuY2xhc3MsICJTT0FQSGVhZGVyRmF1bHQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3Moc29hcEhlYWRlckVDbGFzcywgU09BUEhlYWRlci5jbGFzcywgIlNPQVBIZWFkZXIiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldFNPQVBIZWFkZXJfSGVhZGVyRmF1bHRzKCksCi0gICAgICB0aGlzLmdldFNPQVBIZWFkZXJGYXVsdCgpLAotICAgICAgbnVsbCwKLSAgICAgICJoZWFkZXJGYXVsdHMiLCBudWxsLCAwLCAtMSwgU09BUEhlYWRlci5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGlzb2FwQmluZGluZ0VDbGFzcywKLSAgICAgIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nLmNsYXNzLAotICAgICAgIklTT0FQQmluZGluZyIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKAotICAgICAgaXNvYXBBZGRyZXNzRUNsYXNzLAotICAgICAgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3MuY2xhc3MsCi0gICAgICAiSVNPQVBBZGRyZXNzIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoCi0gICAgICBpc29hcEJvZHlFQ2xhc3MsCi0gICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keS5jbGFzcywKLSAgICAgICJJU09BUEJvZHkiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpc29hcEJvZHlFQ2xhc3MsIHRoZVdTRExQYWNrYWdlLmdldElMaXN0KCksICJnZXRFbmNvZGluZ1N0eWxlcyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oaXNvYXBCb2R5RUNsYXNzLCBudWxsLCAic2V0RW5jb2RpbmdTdHlsZXMiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoZVdTRExQYWNrYWdlLmdldElMaXN0KCksICJlbmNvZGluZ1N0eWxlcyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlzb2FwQm9keUVDbGFzcywgdGhlV1NETFBhY2thZ2UuZ2V0SUxpc3QoKSwgImdldFBhcnRzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpc29hcEJvZHlFQ2xhc3MsIG51bGwsICJzZXRQYXJ0cyIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhlV1NETFBhY2thZ2UuZ2V0SUxpc3QoKSwgInBhcnRzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoCi0gICAgICBpc29hcEZhdWx0RUNsYXNzLAotICAgICAgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0LmNsYXNzLAotICAgICAgIklTT0FQRmF1bHQiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGlzb2FwT3BlcmF0aW9uRUNsYXNzLAotICAgICAgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbi5jbGFzcywKLSAgICAgICJJU09BUE9wZXJhdGlvbiIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKAotICAgICAgaXNvYXBIZWFkZXJGYXVsdEVDbGFzcywKLSAgICAgIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdC5jbGFzcywKLSAgICAgICJJU09BUEhlYWRlckZhdWx0IiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoCi0gICAgICBpc29hcEhlYWRlckVDbGFzcywKLSAgICAgIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIuY2xhc3MsCi0gICAgICAiSVNPQVBIZWFkZXIiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpc29hcEhlYWRlckVDbGFzcywgdGhlV1NETFBhY2thZ2UuZ2V0SUxpc3QoKSwgImdldFNPQVBIZWFkZXJGYXVsdHMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlzb2FwSGVhZGVyRUNsYXNzLCBudWxsLCAiYWRkU09BUEhlYWRlckZhdWx0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElTT0FQSGVhZGVyRmF1bHQoKSwgInNvYXBIZWFkZXJGYXVsdCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICAvLyBJbml0aWFsaXplIGRhdGEgdHlwZXMKLSAgICBpbml0RURhdGFUeXBlKGlTdHJpbmdFRGF0YVR5cGUsIFN0cmluZy5jbGFzcywgIklTdHJpbmciLCBJU19TRVJJQUxJWkFCTEUsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICAvLyBDcmVhdGUgcmVzb3VyY2UKLSAgICBjcmVhdGVSZXNvdXJjZShlTlNfVVJJKTsKLSAgfQotfSAvL1NPQVBQYWNrYWdlSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvdXRpbC9TT0FQQWRhcHRlckZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL3V0aWwvU09BUEFkYXB0ZXJGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkYTcyOWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvdXRpbC9TT0FQQWRhcHRlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ3NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLnV0aWw7Ci0KLQotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuaW1wbC5BZGFwdGVyRmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLio7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPkFkYXB0ZXIgRmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4KLSAqIEl0IHByb3ZpZGVzIGFuIGFkYXB0ZXIgPGNvZGU+Y3JlYXRlWFhYPC9jb2RlPiBtZXRob2QgZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgU09BUEFkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgQWRhcHRlckZhY3RvcnlJbXBsCi17Ci0gIC8qKgotICAgKiBUaGUgY2FjaGVkIG1vZGVsIHBhY2thZ2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIFNPQVBQYWNrYWdlIG1vZGVsUGFja2FnZTsKLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgYWRhcHRlciBmYWN0b3J5LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFNPQVBBZGFwdGVyRmFjdG9yeSgpCi0gIHsKLSAgICBpZiAobW9kZWxQYWNrYWdlID09IG51bGwpCi0gICAgewotICAgICAgbW9kZWxQYWNrYWdlID0gU09BUFBhY2thZ2UuZUlOU1RBTkNFOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgb2JqZWN0IGlzIGVpdGhlciB0aGUgbW9kZWwncyBwYWNrYWdlIG9yIGlzIGFuIGluc3RhbmNlIG9iamVjdCBvZiB0aGUgbW9kZWwuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzRmFjdG9yeUZvclR5cGUoT2JqZWN0IG9iamVjdCkKLSAgewotICAgIGlmIChvYmplY3QgPT0gbW9kZWxQYWNrYWdlKQotICAgIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgRU9iamVjdCkKLSAgICB7Ci0gICAgICByZXR1cm4gKChFT2JqZWN0KW9iamVjdCkuZUNsYXNzKCkuZ2V0RVBhY2thZ2UoKSA9PSBtb2RlbFBhY2thZ2U7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgc3dpdGNoIHRoYXQgZGVsZWdhdGVzIHRvIHRoZSA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZHMuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgU09BUFN3aXRjaCBtb2RlbFN3aXRjaCA9IG5ldyBTT0FQU3dpdGNoKCkKLSAgICB7Ci0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VTT0FQQmluZGluZyhTT0FQQmluZGluZyBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVTT0FQQmluZGluZ0FkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlU09BUEJvZHkoU09BUEJvZHkgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlU09BUEJvZHlBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZVNPQVBIZWFkZXJCYXNlKFNPQVBIZWFkZXJCYXNlIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNPQVBIZWFkZXJCYXNlQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VTT0FQRmF1bHQoU09BUEZhdWx0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNPQVBGYXVsdEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlU09BUE9wZXJhdGlvbihTT0FQT3BlcmF0aW9uIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNPQVBPcGVyYXRpb25BZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZVNPQVBBZGRyZXNzKFNPQVBBZGRyZXNzIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNPQVBBZGRyZXNzQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VTT0FQSGVhZGVyRmF1bHQoU09BUEhlYWRlckZhdWx0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNPQVBIZWFkZXJGYXVsdEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlU09BUEhlYWRlcihTT0FQSGVhZGVyIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNPQVBIZWFkZXJBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlTT0FQQmluZGluZyhqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZyBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJU09BUEJpbmRpbmdBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlTT0FQQWRkcmVzcyhqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzcyBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJU09BUEFkZHJlc3NBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlTT0FQQm9keShqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJU09BUEJvZHlBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlTT0FQRmF1bHQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlTT0FQRmF1bHRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlTT0FQT3BlcmF0aW9uKGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24gb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSVNPQVBPcGVyYXRpb25BZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlTT0FQSGVhZGVyRmF1bHQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlTT0FQSGVhZGVyRmF1bHRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlTT0FQSGVhZGVyKGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSVNPQVBIZWFkZXJBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZVdTRExFbGVtZW50KFdTRExFbGVtZW50IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdTRExFbGVtZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSUV4dGVuc2liaWxpdHlFbGVtZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4KLSAgICogQHJldHVybiB0aGUgYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUFkYXB0ZXIoTm90aWZpZXIgdGFyZ2V0KQotICB7Ci0gICAgcmV0dXJuIChBZGFwdGVyKW1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJpbmRpbmcgPGVtPkJpbmRpbmc8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCaW5kaW5nCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZVNPQVBCaW5kaW5nQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keSA8ZW0+Qm9keTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJvZHkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlU09BUEJvZHlBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlIDxlbT5IZWFkZXIgQmFzZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2UKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlU09BUEhlYWRlckJhc2VBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCA8ZW0+RmF1bHQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVTT0FQRmF1bHRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBPcGVyYXRpb24gPGVtPk9wZXJhdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVTT0FQT3BlcmF0aW9uQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQWRkcmVzcyA8ZW0+QWRkcmVzczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEFkZHJlc3MKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlU09BUEFkZHJlc3NBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJGYXVsdCA8ZW0+SGVhZGVyIEZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyRmF1bHQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlU09BUEhlYWRlckZhdWx0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyIDxlbT5IZWFkZXI8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlU09BUEhlYWRlckFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZyA8ZW0+SVNPQVAgQmluZGluZzwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZwotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVJU09BUEJpbmRpbmdBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3MgPGVtPklTT0FQIEFkZHJlc3M8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3MKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSVNPQVBBZGRyZXNzQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5IDxlbT5JU09BUCBCb2R5PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlTT0FQQm9keUFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQgPGVtPklTT0FQIEZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVJU09BUEZhdWx0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24gPGVtPklTT0FQIE9wZXJhdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlTT0FQT3BlcmF0aW9uQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdCA8ZW0+SVNPQVAgSGVhZGVyIEZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVJU09BUEhlYWRlckZhdWx0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIgPGVtPklTT0FQIEhlYWRlcjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlTT0FQSGVhZGVyQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50IDxlbT5FbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZVdTRExFbGVtZW50QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCA8ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUV4dGVuc2liaWxpdHlFbGVtZW50QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IDxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgdGhlIGRlZmF1bHQgY2FzZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVFT2JqZWN0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi19IC8vU09BUEFkYXB0ZXJGYWN0b3J5CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC91dGlsL1NPQVBDb25zdGFudHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL3V0aWwvU09BUENvbnN0YW50cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjZhYTU5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL3V0aWwvU09BUENvbnN0YW50cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC51dGlsOwotCi0KLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLXB1YmxpYyBmaW5hbCBjbGFzcyBTT0FQQ29uc3RhbnRzCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFERFJFU1NfRUxFTUVOVF9UQUcgPSAiYWRkcmVzcyI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCSU5ESU5HX0VMRU1FTlRfVEFHID0gImJpbmRpbmciOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQk9EWV9FTEVNRU5UX1RBRyA9ICJib2R5IjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZBVUxUX0VMRU1FTlRfVEFHID0gImZhdWx0IjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9FTEVNRU5UX1RBRyA9ICJoZWFkZXIiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0ZBVUxUX0VMRU1FTlRfVEFHID0gImhlYWRlcmZhdWx0IjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9QRVJBVElPTl9FTEVNRU5UX1RBRyA9ICJvcGVyYXRpb24iOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09BUF9OQU1FU1BBQ0VfVVJJID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09BUF9BQ1RJT05fQVRUUklCVVRFID0gInNvYXBBY3Rpb24iOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RZTEVfQVRUUklCVVRFID0gInN0eWxlIjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExPQ0FUSU9OX0FUVFJJQlVURSA9ICJsb2NhdGlvbiI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUUkFOU1BPUlRfQVRUUklCVVRFID0gInRyYW5zcG9ydCI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0VfQVRUUklCVVRFID0gInVzZSI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FU1BBQ0VfQVRUUklCVVRFID0gIm5hbWVzcGFjZSI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FU1BBQ0VfVVJJX0FUVFJJQlVURSA9ICJuYW1lc3BhY2VVUkkiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9BVFRSSUJVVEUgPSAibmFtZSI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTkNPRElOR19TVFlMRV9BVFRSSUJVVEUgPSAiZW5jb2RpbmdTdHlsZSI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNRVNTQUdFX0FUVFJJQlVURSA9ICJtZXNzYWdlIjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlRfQVRUUklCVVRFID0gInBhcnQiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSVFNfQVRUUklCVVRFID0gInBhcnRzIjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEF0dHJpYnV0ZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBhdHRyaWJ1dGVOYW1lKQotICB7Ci0gICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpID8gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgOiBudWxsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9pbnRlcm5hbC91dGlsL1NPQVBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL3V0aWwvU09BUEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTQyYjA0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL3V0aWwvU09BUEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC51dGlsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk7Ci0KLQotcHVibGljIGNsYXNzIFNPQVBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkgaW1wbGVtZW50cyBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkKLXsKLSAgcHVibGljIEV4dGVuc2liaWxpdHlFbGVtZW50IGNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50KFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBsb2NhbE5hbWUpCi0gIHsKLSAgICBpZiAoU09BUENvbnN0YW50cy5TT0FQX05BTUVTUEFDRV9VUkkuZXF1YWxzKG5hbWVzcGFjZSkpCi0gICAgewotICAgICAgaWYgKFNPQVBDb25zdGFudHMuQUREUkVTU19FTEVNRU5UX1RBRy5lcXVhbHMobG9jYWxOYW1lKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQQWRkcmVzcygpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoU09BUENvbnN0YW50cy5CSU5ESU5HX0VMRU1FTlRfVEFHLmVxdWFscyhsb2NhbE5hbWUpKQotICAgICAgewotICAgICAgICByZXR1cm4gU09BUEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVNPQVBCaW5kaW5nKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChTT0FQQ29uc3RhbnRzLkJPRFlfRUxFTUVOVF9UQUcuZXF1YWxzKGxvY2FsTmFtZSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBTT0FQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU09BUEJvZHkoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKFNPQVBDb25zdGFudHMuRkFVTFRfRUxFTUVOVF9UQUcuZXF1YWxzKGxvY2FsTmFtZSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBTT0FQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU09BUEZhdWx0KCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChTT0FQQ29uc3RhbnRzLk9QRVJBVElPTl9FTEVNRU5UX1RBRy5lcXVhbHMobG9jYWxOYW1lKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQT3BlcmF0aW9uKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChTT0FQQ29uc3RhbnRzLkhFQURFUl9FTEVNRU5UX1RBRy5lcXVhbHMobG9jYWxOYW1lKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQSGVhZGVyKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChTT0FQQ29uc3RhbnRzLkhFQURFUl9GQVVMVF9FTEVNRU5UX1RBRy5lcXVhbHMobG9jYWxOYW1lKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQSGVhZGVyRmF1bHQoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlVuaGFuZGxlZCBsb2NhbE5hbWU6ICIgKyBsb2NhbE5hbWUpOwotICAgICAgICByZXR1cm4gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlVuaGFuZGxlZCBuYW1lc3BhY2U6ICIgKyBuYW1lc3BhY2UpOwotICAgICAgcmV0dXJuIFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2ludGVybmFsL3V0aWwvU09BUFN3aXRjaC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvdXRpbC9TT0FQU3dpdGNoLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYTZlZTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvaW50ZXJuYWwvdXRpbC9TT0FQU3dpdGNoLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC51dGlsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLio7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlN3aXRjaDwvYj4gZm9yIHRoZSBtb2RlbCdzIGluaGVyaXRhbmNlIGhpZXJhcmNoeS4KLSAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2ggZG9Td2l0Y2gob2JqZWN0KX0KLSAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwKLSAqIHN0YXJ0aW5nIHdpdGggdGhlIGFjdHVhbCBjbGFzcyBvZiB0aGUgb2JqZWN0Ci0gKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5Ci0gKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwKLSAqIHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgdGhlIHN3aXRjaC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFNPQVBTd2l0Y2gKLXsKLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZQotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBTT0FQUGFja2FnZSBtb2RlbFBhY2thZ2U7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTT0FQU3dpdGNoKCkKLSAgewotICAgIGlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBtb2RlbFBhY2thZ2UgPSBTT0FQUGFja2FnZS5lSU5TVEFOQ0U7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBkb1N3aXRjaChFT2JqZWN0IHRoZUVPYmplY3QpCi0gIHsKLSAgICByZXR1cm4gZG9Td2l0Y2godGhlRU9iamVjdC5lQ2xhc3MoKSwgdGhlRU9iamVjdCk7Ci0gIH0KLQotICAvKioKLSAgICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgT2JqZWN0IGRvU3dpdGNoKEVDbGFzcyB0aGVFQ2xhc3MsIEVPYmplY3QgdGhlRU9iamVjdCkKLSAgewotICAgIGlmICh0aGVFQ2xhc3MuZUNvbnRhaW5lcigpID09IG1vZGVsUGFja2FnZSkKLSAgICB7Ci0gICAgICByZXR1cm4gZG9Td2l0Y2godGhlRUNsYXNzLmdldENsYXNzaWZpZXJJRCgpLCB0aGVFT2JqZWN0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIExpc3QgZVN1cGVyVHlwZXMgPSB0aGVFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKTsKLSAgICAgIHJldHVybiBlU3VwZXJUeXBlcy5pc0VtcHR5KCkgPyBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KSA6IGRvU3dpdGNoKChFQ2xhc3MpZVN1cGVyVHlwZXMuZ2V0KDApLCB0aGVFT2JqZWN0KTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgT2JqZWN0IGRvU3dpdGNoKGludCBjbGFzc2lmaWVySUQsIEVPYmplY3QgdGhlRU9iamVjdCkKLSAgewotICAgIHN3aXRjaCAoY2xhc3NpZmllcklEKQotICAgIHsKLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9CSU5ESU5HOgotICAgICAgewotICAgICAgICBTT0FQQmluZGluZyBzb2FwQmluZGluZyA9IChTT0FQQmluZGluZyl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZVNPQVBCaW5kaW5nKHNvYXBCaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwQmluZGluZyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSVNPQVBCaW5kaW5nKHNvYXBCaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChzb2FwQmluZGluZyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBCaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0JPRFk6Ci0gICAgICB7Ci0gICAgICAgIFNPQVBCb2R5IHNvYXBCb2R5ID0gKFNPQVBCb2R5KXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlU09BUEJvZHkoc29hcEJvZHkpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBCb2R5KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJU09BUEJvZHkoc29hcEJvZHkpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KHNvYXBCb2R5KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoc29hcEJvZHkpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIFNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0U6Ci0gICAgICB7Ci0gICAgICAgIFNPQVBIZWFkZXJCYXNlIHNvYXBIZWFkZXJCYXNlID0gKFNPQVBIZWFkZXJCYXNlKXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlU09BUEhlYWRlckJhc2Uoc29hcEhlYWRlckJhc2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBIZWFkZXJCYXNlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChzb2FwSGVhZGVyQmFzZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBIZWFkZXJCYXNlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0ZBVUxUOgotICAgICAgewotICAgICAgICBTT0FQRmF1bHQgc29hcEZhdWx0ID0gKFNPQVBGYXVsdCl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZVNPQVBGYXVsdChzb2FwRmF1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBGYXVsdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSVNPQVBGYXVsdChzb2FwRmF1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KHNvYXBGYXVsdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBGYXVsdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9PUEVSQVRJT046Ci0gICAgICB7Ci0gICAgICAgIFNPQVBPcGVyYXRpb24gc29hcE9wZXJhdGlvbiA9IChTT0FQT3BlcmF0aW9uKXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlU09BUE9wZXJhdGlvbihzb2FwT3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwT3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJU09BUE9wZXJhdGlvbihzb2FwT3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChzb2FwT3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoc29hcE9wZXJhdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9BRERSRVNTOgotICAgICAgewotICAgICAgICBTT0FQQWRkcmVzcyBzb2FwQWRkcmVzcyA9IChTT0FQQWRkcmVzcyl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZVNPQVBBZGRyZXNzKHNvYXBBZGRyZXNzKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwQWRkcmVzcyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSVNPQVBBZGRyZXNzKHNvYXBBZGRyZXNzKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChzb2FwQWRkcmVzcyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBBZGRyZXNzKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBTT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVDoKLSAgICAgIHsKLSAgICAgICAgU09BUEhlYWRlckZhdWx0IHNvYXBIZWFkZXJGYXVsdCA9IChTT0FQSGVhZGVyRmF1bHQpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VTT0FQSGVhZGVyRmF1bHQoc29hcEhlYWRlckZhdWx0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VTT0FQSGVhZGVyQmFzZShzb2FwSGVhZGVyRmF1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlTT0FQSGVhZGVyRmF1bHQoc29hcEhlYWRlckZhdWx0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwSGVhZGVyRmF1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KHNvYXBIZWFkZXJGYXVsdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBIZWFkZXJGYXVsdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgU09BUFBhY2thZ2UuU09BUF9IRUFERVI6Ci0gICAgICB7Ci0gICAgICAgIFNPQVBIZWFkZXIgc29hcEhlYWRlciA9IChTT0FQSGVhZGVyKXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlU09BUEhlYWRlcihzb2FwSGVhZGVyKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VTT0FQSGVhZGVyQmFzZShzb2FwSGVhZGVyKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJU09BUEhlYWRlcihzb2FwSGVhZGVyKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwSGVhZGVyKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChzb2FwSGVhZGVyKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoc29hcEhlYWRlcik7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJpbmRpbmc8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CaW5kaW5nPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlU09BUEJpbmRpbmcoU09BUEJpbmRpbmcgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Qm9keTwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJvZHk8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VTT0FQQm9keShTT0FQQm9keSBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5IZWFkZXIgQmFzZTwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkhlYWRlciBCYXNlPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlU09BUEhlYWRlckJhc2UoU09BUEhlYWRlckJhc2Ugb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RmF1bHQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5GYXVsdDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZVNPQVBGYXVsdChTT0FQRmF1bHQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlU09BUE9wZXJhdGlvbihTT0FQT3BlcmF0aW9uIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkFkZHJlc3M8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5BZGRyZXNzPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlU09BUEFkZHJlc3MoU09BUEFkZHJlc3Mgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SGVhZGVyIEZhdWx0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SGVhZGVyIEZhdWx0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlU09BUEhlYWRlckZhdWx0KFNPQVBIZWFkZXJGYXVsdCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5IZWFkZXI8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5IZWFkZXI8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VTT0FQSGVhZGVyKFNPQVBIZWFkZXIgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVNPQVAgQmluZGluZzwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklTT0FQIEJpbmRpbmc8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJU09BUEJpbmRpbmcoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVNPQVAgQWRkcmVzczwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklTT0FQIEFkZHJlc3M8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJU09BUEFkZHJlc3MoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3Mgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVNPQVAgQm9keTwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklTT0FQIEJvZHk8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJU09BUEJvZHkoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHkgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVNPQVAgRmF1bHQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JU09BUCBGYXVsdDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlTT0FQRmF1bHQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklTT0FQIE9wZXJhdGlvbjwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklTT0FQIE9wZXJhdGlvbjwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlTT0FQT3BlcmF0aW9uKGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24gb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVNPQVAgSGVhZGVyIEZhdWx0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVNPQVAgSGVhZGVyIEZhdWx0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSVNPQVBIZWFkZXJGYXVsdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVNPQVAgSGVhZGVyPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVNPQVAgSGVhZGVyPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSVNPQVBIZWFkZXIoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlciBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FbGVtZW50PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZVdTRExFbGVtZW50KFdTRExFbGVtZW50IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSUV4dGVuc2liaWxpdHlFbGVtZW50KEV4dGVuc2liaWxpdHlFbGVtZW50IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVPYmplY3Q8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaCwgYnV0IHRoaXMgaXMgdGhlIGxhc3QgY2FzZSBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RU9iamVjdDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZGVmYXVsdENhc2UoRU9iamVjdCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi19IC8vU09BUFN3aXRjaApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS5odG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTU0MzQ1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vLi4vLi4vL2FwaXN0eWxlcy5jc3MiIHR5cGU9InRleHQvY3NzIj4KLTx0aXRsZT5XU0RMIE1vZGVsIFNPQVAgQmluZGluZyBFeHRlbnNpb24gQVBJIE92ZXJ2aWV3PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5PgotPHA+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4KLQkJPC9wPgotPHRhYmxlIHdpZHRoPSI1MDAiPgotPHRyPgotPHRkPgotPHA+VGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIGxvYWQsIG1vZGlmeSwgYW5kIHNhdmUgV1NETCAxLjEgZG9jdW1lbnRzLgotCQk8L3A+Ci08L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy1zb2FwL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmNiOTJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXNvYXAvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxodG1sPgotCTxoZWFkPgotCQk8bWV0YQotCQkJbmFtZT0icm9vdCIKLQkKLQkJCWNvbnRlbnQ9Ii4uLy4uLy4uLy4uLy4uLy4uLyIgLz4KLQkJPHRpdGxlPldTREwgTW9kZWwgU09BUCBCaW5kaW5nIEV4dGVuc2lvbiBBUEkgT3ZlcnZpZXc8L3RpdGxlPgotCTwvaGVhZD4KLQotCTxib2R5PgotCQk8YWJzdHJhY3Q+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4KLQkJPC9hYnN0cmFjdD4KLQkJPHA+VGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIGxvYWQsIG1vZGlmeSwgYW5kIHNhdmUgV1NETCAxLjEgZG9jdW1lbnRzLgotCQk8L3A+IAotCTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhZWY4MWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmc8L2I+PC9lbT4nLgotICogQHNpbmNlIDEuMAotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+Ci0gKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIGJpbmRpbmcgZWxlbWVudC4gQSBiaW5kaW5nIGRlZmluZXMgbWVzc2FnZSBmb3JtYXQgYW5kIHByb3RvY29sIGRldGFpbHMgZm9yIG9wZXJhdGlvbnMgYW5kIG1lc3NhZ2VzIGRlZmluZWQgYnkgYSBwYXJ0aWN1bGFyIHBvcnRUeXBlLiBUaGVyZSBtYXkgYmUgYW55IG51bWJlciBvZiBiaW5kaW5ncyBmb3IgYSBnaXZlbiBwb3J0VHlwZS4KLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nI2dldFFOYW1lIDxlbT5RTmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZyNpc1VuZGVmaW5lZCA8ZW0+VW5kZWZpbmVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nI2dldEVQb3J0VHlwZSA8ZW0+RVBvcnQgVHlwZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZyNnZXRFQmluZGluZ09wZXJhdGlvbnMgPGVtPkVCaW5kaW5nIE9wZXJhdGlvbnM8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldEJpbmRpbmcoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLklCaW5kaW5nIgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIEJpbmRpbmcgZXh0ZW5kcyBFeHRlbnNpYmxlRWxlbWVudCwgamF2YXgud3NkbC5CaW5kaW5nCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UU5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0UU5hbWUoUU5hbWUpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0QmluZGluZ19RTmFtZSgpCi0gICAqIEBtb2RlbCBkYXRhVHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuUU5hbWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFFOYW1lIGdldFFOYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmcjZ2V0UU5hbWUgPGVtPlFOYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldFFOYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRRTmFtZShRTmFtZSB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VW5kZWZpbmVkPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRVbmRlZmluZWQoYm9vbGVhbikKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRCaW5kaW5nX1VuZGVmaW5lZCgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBib29sZWFuIGlzVW5kZWZpbmVkKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmcjaXNVbmRlZmluZWQgPGVtPlVuZGVmaW5lZDwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VW5kZWZpbmVkPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjaXNVbmRlZmluZWQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldFVuZGVmaW5lZChib29sZWFuIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZTwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RVBvcnQgVHlwZTwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RVBvcnQgVHlwZTwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldEVQb3J0VHlwZShQb3J0VHlwZSkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRCaW5kaW5nX0VQb3J0VHlwZSgpCi0gICAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgUG9ydFR5cGUgZ2V0RVBvcnRUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmcjZ2V0RVBvcnRUeXBlIDxlbT5FUG9ydCBUeXBlPC9lbT59JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FUG9ydCBUeXBlPC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0RVBvcnRUeXBlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRFUG9ydFR5cGUoUG9ydFR5cGUgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZyBPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb259LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUJpbmRpbmcgT3BlcmF0aW9uczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FQmluZGluZyBPcGVyYXRpb25zPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldEJpbmRpbmdfRUJpbmRpbmdPcGVyYXRpb25zKCkKLSAgICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb24iIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFTGlzdCBnZXRFQmluZGluZ09wZXJhdGlvbnMoKTsKLQotfSAvLyBCaW5kaW5nCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNjYTRlZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIEZhdWx0PC9iPjwvZW0+Jy4KLSAqIEBzaW5jZSAxLjAKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBmYXVsdCBlbGVtZW50IHdpdGhpbiBhIG9wZXJhdGlvbiB3aXRoaW4gYSBiaW5kaW5nLiBBIGZhdWx0IGVsZW1lbnQgd2l0aGluIGFuIG9wZXJhdGlvbiB3aXRoaW4gYSBiaW5kaW5nIHNwZWNpZmllcyBiaW5kaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgZmF1bHQgd2l0aCB0aGUgc2FtZSBuYW1lLiAKLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0I2dldEVGYXVsdCA8ZW0+RUZhdWx0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRCaW5kaW5nRmF1bHQoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLklCaW5kaW5nRmF1bHQiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgQmluZGluZ0ZhdWx0IGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnQsIGphdmF4LndzZGwuQmluZGluZ0ZhdWx0Ci17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0TmFtZShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0QmluZGluZ0ZhdWx0X05hbWUoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldE5hbWUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXROYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXROYW1lKFN0cmluZyB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVGYXVsdDwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUZhdWx0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRmF1bHQ8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFRmF1bHQoRmF1bHQpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0QmluZGluZ0ZhdWx0X0VGYXVsdCgpCi0gICAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRmF1bHQgZ2V0RUZhdWx0KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdCNnZXRFRmF1bHQgPGVtPkVGYXVsdDwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RUZhdWx0PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0RUZhdWx0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRFRmF1bHQoRmF1bHQgdmFsdWUpOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIG1ldGhvZCBpcyBzYW1lIGFzIGdldEVGYXVsdCgpIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIEpXU0RMIEFQSS4KLSAgICogQHNlZSAjZ2V0RUZhdWx0KCkKLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RUZhdWx0PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQGlnbm9yZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIGtpbmQ9Im9wZXJhdGlvbiIgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUZhdWx0IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBqYXZheC53c2RsLkZhdWx0IGdldEZhdWx0KCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgbWV0aG9kIGlzIHNhbWUgYXMgc2V0RUZhdWx0KEZhdWx0KSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuCi0gICAqIEBzZWUgI3NldEVGYXVsdChGYXVsdCkKLSAgICogQHBhcmFtIGZhdWx0IHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RUZhdWx0PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQGlnbm9yZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIGZhdWx0VHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUZhdWx0IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEZhdWx0KGphdmF4LndzZGwuRmF1bHQgZmF1bHQpOwotCi19IC8vIEJpbmRpbmdGYXVsdApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ZGI2OTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGw7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBJbnB1dDwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgaW5wdXQgZWxlbWVudCB3aXRoaW4gYSBvcGVyYXRpb24gd2l0aGluIGEgYmluZGluZy4gQW4gaW5wdXQgZWxlbWVudCB3aXRoaW4gYW4gb3BlcmF0aW9uIHdpdGhpbiBhIGJpbmRpbmcgc3BlY2lmaWVzIGJpbmRpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBpbnB1dCBvZiB0aGUgb3BlcmF0aW9uLiAKLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0I2dldEVJbnB1dCA8ZW0+RUlucHV0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRCaW5kaW5nSW5wdXQoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLklCaW5kaW5nSW5wdXQiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgQmluZGluZ0lucHV0IGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnQsIGphdmF4LndzZGwuQmluZGluZ0lucHV0Ci17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0TmFtZShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0QmluZGluZ0lucHV0X05hbWUoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldE5hbWUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXROYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXROYW1lKFN0cmluZyB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVJbnB1dDwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUlucHV0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FSW5wdXQ8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFSW5wdXQoSW5wdXQpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0QmluZGluZ0lucHV0X0VJbnB1dCgpCi0gICAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgSW5wdXQgZ2V0RUlucHV0KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dCNnZXRFSW5wdXQgPGVtPkVJbnB1dDwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RUlucHV0PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0RUlucHV0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRFSW5wdXQoSW5wdXQgdmFsdWUpOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIG1ldGhvZCBpcyBzYW1lIGFzIGdldEVJbnB1dCgpIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIEpXU0RMIEFQSS4KLSAgICogQHNlZSAjZ2V0RUlucHV0KCkKLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RUlucHV0PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQGlnbm9yZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIGtpbmQ9Im9wZXJhdGlvbiIgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUlucHV0IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBqYXZheC53c2RsLklucHV0IGdldElucHV0KCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgbWV0aG9kIGlzIHNhbWUgYXMgc2V0RUlucHV0KElucHV0KSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuCi0gICAqIEBzZWUgI3NldEVJbnB1dChJbnB1dCkKLSAgICogQHBhcmFtIGlucHV0IHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RUlucHV0PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQGlnbm9yZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIGlucHV0VHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUlucHV0IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldElucHV0KGphdmF4LndzZGwuSW5wdXQgaW5wdXQpOwotCi19IC8vIEJpbmRpbmdJbnB1dApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4MzRjMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGw7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIE9wZXJhdGlvbjwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgb3BlcmF0aW9uIGVsZW1lbnQgd2l0aGluIGEgYmluZGluZy4gQW4gb3BlcmF0aW9uIGVsZW1lbnQgd2l0aGluIGEgYmluZGluZyBzcGVjaWZpZXMgYmluZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgd2l0aGluIHRoZSBiaW5kaW5nJ3MgcG9ydFR5cGUuIAotICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb24jZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbiNnZXRFT3BlcmF0aW9uIDxlbT5FT3BlcmF0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uI2dldEVCaW5kaW5nSW5wdXQgPGVtPkVCaW5kaW5nIElucHV0PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uI2dldEVCaW5kaW5nT3V0cHV0IDxlbT5FQmluZGluZyBPdXRwdXQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb24jZ2V0RUJpbmRpbmdGYXVsdHMgPGVtPkVCaW5kaW5nIEZhdWx0czwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0QmluZGluZ09wZXJhdGlvbigpCi0gKiBAbW9kZWwgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSUJpbmRpbmdPcGVyYXRpb24iCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgQmluZGluZ09wZXJhdGlvbiBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50LCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb24KLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXROYW1lKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRCaW5kaW5nT3BlcmF0aW9uX05hbWUoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldE5hbWUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbiNnZXROYW1lIDxlbT5OYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0TmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0TmFtZShTdHJpbmcgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FT3BlcmF0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FT3BlcmF0aW9uPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FT3BlcmF0aW9uPC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjc2V0RU9wZXJhdGlvbihPcGVyYXRpb24pCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0QmluZGluZ09wZXJhdGlvbl9FT3BlcmF0aW9uKCkKLSAgICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBPcGVyYXRpb24gZ2V0RU9wZXJhdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uI2dldEVPcGVyYXRpb24gPGVtPkVPcGVyYXRpb248L2VtPn0nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVPcGVyYXRpb248L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNnZXRFT3BlcmF0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRFT3BlcmF0aW9uKE9wZXJhdGlvbiB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nIElucHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FQmluZGluZyBJbnB1dDwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RUJpbmRpbmcgSW5wdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFQmluZGluZ0lucHV0KEJpbmRpbmdJbnB1dCkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nSW5wdXQoKQotICAgKiBAbW9kZWwgY29udGFpbm1lbnQ9InRydWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEJpbmRpbmdJbnB1dCBnZXRFQmluZGluZ0lucHV0KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb24jZ2V0RUJpbmRpbmdJbnB1dCA8ZW0+RUJpbmRpbmcgSW5wdXQ8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVCaW5kaW5nIElucHV0PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0RUJpbmRpbmdJbnB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0RUJpbmRpbmdJbnB1dChCaW5kaW5nSW5wdXQgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZyBPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVCaW5kaW5nIE91dHB1dDwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RUJpbmRpbmcgT3V0cHV0PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogQHNlZSAjc2V0RUJpbmRpbmdPdXRwdXQoQmluZGluZ091dHB1dCkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nT3V0cHV0KCkKLSAgICogQG1vZGVsIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBCaW5kaW5nT3V0cHV0IGdldEVCaW5kaW5nT3V0cHV0KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb24jZ2V0RUJpbmRpbmdPdXRwdXQgPGVtPkVCaW5kaW5nIE91dHB1dDwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RUJpbmRpbmcgT3V0cHV0PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0RUJpbmRpbmdPdXRwdXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVCaW5kaW5nT3V0cHV0KEJpbmRpbmdPdXRwdXQgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZyBGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0fS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVCaW5kaW5nIEZhdWx0czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FQmluZGluZyBGYXVsdHM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0ZhdWx0cygpCi0gICAqIEBtb2RlbCB0eXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQiIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFTGlzdCBnZXRFQmluZGluZ0ZhdWx0cygpOwotCi19IC8vIEJpbmRpbmdPcGVyYXRpb24KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMDEzYjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgT3V0cHV0PC9iPjwvZW0+Jy4KLSAqIEBzaW5jZSAxLjAKLSAqIEBpZ25vcmUKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBvdXRwdXQgZWxlbWVudCB3aXRoaW4gYSBvcGVyYXRpb24gd2l0aGluIGEgYmluZGluZy4gQW4gb3V0cHV0IGVsZW1lbnQgd2l0aGluIGFuIG9wZXJhdGlvbiB3aXRoaW4gYSBiaW5kaW5nIHNwZWNpZmllcyBiaW5kaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgb3V0cHV0IG9mIHRoZSBvcGVyYXRpb24uIAotICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ091dHB1dCNnZXRFT3V0cHV0IDxlbT5FT3V0cHV0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRCaW5kaW5nT3V0cHV0KCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JQmluZGluZ091dHB1dCIKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBCaW5kaW5nT3V0cHV0IGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnQsIGphdmF4LndzZGwuQmluZGluZ091dHB1dAotewotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldE5hbWUoU3RyaW5nKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldEJpbmRpbmdPdXRwdXRfTmFtZSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0TmFtZSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXROYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXROYW1lKFN0cmluZyB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVPdXRwdXQ8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVPdXRwdXQ8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFT3V0cHV0KE91dHB1dCkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRCaW5kaW5nT3V0cHV0X0VPdXRwdXQoKQotICAgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIE91dHB1dCBnZXRFT3V0cHV0KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQjZ2V0RU91dHB1dCA8ZW0+RU91dHB1dDwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RU91dHB1dDwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBzZWUgI2dldEVPdXRwdXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVPdXRwdXQoT3V0cHV0IHZhbHVlKTsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBtZXRob2QgaXMgc2FtZSBhcyBnZXRFT3V0cHV0KCkgYW5kIGNvbXBhdGlibGUgd2l0aCB0aGUgSldTREwgQVBJLgotICAgKiBAc2VlICNnZXRFT3V0cHV0KCkKLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RU91dHB1dDwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBpZ25vcmUKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBtb2RlbCBraW5kPSJvcGVyYXRpb24iIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLklPdXRwdXQiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGphdmF4LndzZGwuT3V0cHV0IGdldE91dHB1dCgpOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIG1ldGhvZCBpcyBzYW1lIGFzIHNldEVPdXRwdXQoT3V0cHV0KSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuCi0gICAqIEBzZWUgI3NldEVPdXRwdXQoT3V0cHV0KQotICAgKiBAcGFyYW0gb3V0cHV0IHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RU91dHB1dDwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBpZ25vcmUKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBtb2RlbCBvdXRwdXRUeXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5JT3V0cHV0IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldE91dHB1dChqYXZheC53c2RsLk91dHB1dCBvdXRwdXQpOwotCi19IC8vIEJpbmRpbmdPdXRwdXQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ODlkMzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRlZmluaXRpb248L2I+PC9lbT4nLgotICogQHNpbmNlIDEuMAotICogQGlnbm9yZQotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+Ci0gKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIGRlZmluaXRpb25zIGVsZW1lbnQuIFRoZSBXU0RMIGRlZmluaXRpb25zIGVsZW1lbnQgaXMgdGhlIHJvb3QgZWxlbWVudCBvZiBhIFdTREwgZG9jdW1lbnQuCi0gKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRUYXJnZXROYW1lc3BhY2UgPGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0TG9jYXRpb24gPGVtPkxvY2F0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldFFOYW1lIDxlbT5RTmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRFbmNvZGluZyA8ZW0+RW5jb2Rpbmc8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RUltcG9ydHMgPGVtPkVJbXBvcnRzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldEVUeXBlcyA8ZW0+RVR5cGVzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldEVNZXNzYWdlcyA8ZW0+RU1lc3NhZ2VzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldEVQb3J0VHlwZXMgPGVtPkVQb3J0IFR5cGVzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldEVCaW5kaW5ncyA8ZW0+RUJpbmRpbmdzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldEVTZXJ2aWNlcyA8ZW0+RVNlcnZpY2VzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldEVOYW1lc3BhY2VzIDxlbT5FTmFtZXNwYWNlczwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0RGVmaW5pdGlvbigpCi0gKiBAbW9kZWwgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSURlZmluaXRpb24iCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRGVmaW5pdGlvbiBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50LCBqYXZheC53c2RsLkRlZmluaXRpb24KLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlRhcmdldCBOYW1lc3BhY2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRUYXJnZXROYW1lc3BhY2UoU3RyaW5nKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldERlZmluaXRpb25fVGFyZ2V0TmFtZXNwYWNlKCkKLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBnZXRUYXJnZXROYW1lc3BhY2UoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRUYXJnZXROYW1lc3BhY2UgPGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXRUYXJnZXROYW1lc3BhY2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldFRhcmdldE5hbWVzcGFjZShTdHJpbmcgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Mb2NhdGlvbjwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TG9jYXRpb248L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkxvY2F0aW9uPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0TG9jYXRpb24oU3RyaW5nKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldERlZmluaXRpb25fTG9jYXRpb24oKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldExvY2F0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0TG9jYXRpb24gPGVtPkxvY2F0aW9uPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldExvY2F0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRMb2NhdGlvbihTdHJpbmcgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UU5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0UU5hbWUoUU5hbWUpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0RGVmaW5pdGlvbl9RTmFtZSgpCi0gICAqIEBtb2RlbCBkYXRhVHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuUU5hbWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFFOYW1lIGdldFFOYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0UU5hbWUgPGVtPlFOYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldFFOYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRRTmFtZShRTmFtZSB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVuY29kaW5nPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FbmNvZGluZzwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RW5jb2Rpbmc8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRFbmNvZGluZyhTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0RGVmaW5pdGlvbl9FbmNvZGluZygpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0RW5jb2RpbmcoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRFbmNvZGluZyA8ZW0+RW5jb2Rpbmc8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVuY29kaW5nPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0RW5jb2RpbmcoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVuY29kaW5nKFN0cmluZyB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVNZXNzYWdlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlfS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVNZXNzYWdlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FTWVzc2FnZXM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0RGVmaW5pdGlvbl9FTWVzc2FnZXMoKQotICAgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSIgY29udGFpbm1lbnQ9InRydWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVMaXN0IGdldEVNZXNzYWdlcygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZX0uCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FUG9ydCBUeXBlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FUG9ydCBUeXBlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXREZWZpbml0aW9uX0VQb3J0VHlwZXMoKQotICAgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGUiIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFTGlzdCBnZXRFUG9ydFR5cGVzKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nfS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVCaW5kaW5nczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FQmluZGluZ3M8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0RGVmaW5pdGlvbl9FQmluZGluZ3MoKQotICAgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZyIgY29udGFpbm1lbnQ9InRydWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVMaXN0IGdldEVCaW5kaW5ncygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FU2VydmljZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZX0uCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FU2VydmljZXM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RVNlcnZpY2VzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldERlZmluaXRpb25fRVNlcnZpY2VzKCkKLSAgICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2UiIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFTGlzdCBnZXRFU2VydmljZXMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU5hbWVzcGFjZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlfS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVOYW1lc3BhY2VzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVOYW1lc3BhY2VzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldERlZmluaXRpb25fRU5hbWVzcGFjZXMoKQotICAgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlIiBjb250YWlubWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUxpc3QgZ2V0RU5hbWVzcGFjZXMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVR5cGVzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FVHlwZXM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVUeXBlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldEVUeXBlcyhUeXBlcykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXREZWZpbml0aW9uX0VUeXBlcygpCi0gICAqIEBtb2RlbCBjb250YWlubWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgVHlwZXMgZ2V0RVR5cGVzKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RVR5cGVzIDxlbT5FVHlwZXM8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVUeXBlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIEBzZWUgI2dldEVUeXBlcygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0RVR5cGVzKFR5cGVzIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUltcG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0fS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVJbXBvcnRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVJbXBvcnRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldERlZmluaXRpb25fRUltcG9ydHMoKQotICAgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0IiBjb250YWlubWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUxpc3QgZ2V0RUltcG9ydHMoKTsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogUmV0dXJucyBhIFczQyBET00gRG9jdW1lbnQgYnVpbHQgZnJvbSB0aGUgaW5wdXQgV1NETCBkb2N1bWVudC4KLSAgICogQHJldHVybiBXM0MgRE9NIERvY3VtZW50LgotICAgKiBAaWdub3JlCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAbW9kZWwga2luZD0ib3BlcmF0aW9uIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRE9NRG9jdW1lbnQiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIERvY3VtZW50IGdldERvY3VtZW50KCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFNldHMgYSBXM0MgRE9NIERvY3VtZW50IHRvIGJlIHVzZWQgd2hlbiBidWlsZGluZyB1cCBhIERPTSBFbGVtZW50IHRyZWUgZm9yIHRoZSBXU0RMIG1vZGVsLgotICAgKiBAcGFyYW0gZG9jdW1lbnQgVzNDIERPTSBEb2N1bWVudC4KLSAgICogQGlnbm9yZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIGRvY3VtZW50RGF0YVR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLkRPTURvY3VtZW50IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50IGRvY3VtZW50KTsKLQotfSAvLyBEZWZpbml0aW9uCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZTcxM2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgZXh0ZW5zaWJpbGl0eSBlbGVtZW50LiBXU0RMIGFsbG93cyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIHJlcHJlc2VudGluZyBhIHNwZWNpZmljIHRlY2hub2xvZ3kgdW5kZXIgdmFyaW91cyBlbGVtZW50cyBkZWZpbmVkIGJ5IFdTREwuCi0gKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQjaXNSZXF1aXJlZCA8ZW0+UmVxdWlyZWQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50I2dldEVsZW1lbnRUeXBlIDxlbT5FbGVtZW50IFR5cGU8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldEV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JRXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5kcyBXU0RMRWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UmVxdWlyZWQ8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlJlcXVpcmVkPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0UmVxdWlyZWQoYm9vbGVhbikKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9SZXF1aXJlZCgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBib29sZWFuIGlzUmVxdWlyZWQoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQjaXNSZXF1aXJlZCA8ZW0+UmVxdWlyZWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlJlcXVpcmVkPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjaXNSZXF1aXJlZCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0UmVxdWlyZWQoYm9vbGVhbiB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RWxlbWVudCBUeXBlPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FbGVtZW50IFR5cGU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRFbGVtZW50VHlwZShRTmFtZSkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9FbGVtZW50VHlwZSgpCi0gICAqIEBtb2RlbCBkYXRhVHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuUU5hbWUiIHRyYW5zaWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgUU5hbWUgZ2V0RWxlbWVudFR5cGUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQjZ2V0RWxlbWVudFR5cGUgPGVtPkVsZW1lbnQgVHlwZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RWxlbWVudCBUeXBlPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0RWxlbWVudFR5cGUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVsZW1lbnRUeXBlKFFOYW1lIHZhbHVlKTsKLQotfSAvLyBFeHRlbnNpYmlsaXR5RWxlbWVudApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWE2ZGM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbDsKLQotCi1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkF0dHJpYnV0ZUV4dGVuc2libGU7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkVsZW1lbnRFeHRlbnNpYmxlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4dGVuc2libGUgRWxlbWVudDwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqICBXU0RMIGFsbG93cyBlbGVtZW50cyByZXByZXNlbnRpbmcgYSBzcGVjaWZpYyB0ZWNobm9sb2d5IChyZWZlcnJlZCB0byBoZXJlIGFzIGV4dGVuc2liaWxpdHkgZWxlbWVudHMpIHVuZGVyIHZhcmlvdXMgZWxlbWVudHMgZGVmaW5lZCBieSBXU0RMLiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBXU0RMIHBvaW50IG9mIGV4dGVuc2liaWxpdHkuCi0gKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cyA8ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldEV4dGVuc2libGVFbGVtZW50KCkKLSAqIEBtb2RlbCBhYnN0cmFjdD0idHJ1ZSIgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSUVsZW1lbnRFeHRlbnNpYmxlIG9yZy5lY2xpcHNlLndzdC53c2RsLklBdHRyaWJ1dGVFeHRlbnNpYmxlIgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIEV4dGVuc2libGVFbGVtZW50IGV4dGVuZHMgV1NETEVsZW1lbnQsIEVsZW1lbnRFeHRlbnNpYmxlLCBBdHRyaWJ1dGVFeHRlbnNpYmxlCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudH0uCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRFeHRlbnNpYmxlRWxlbWVudF9FRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IiBjb250YWlubWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUxpc3QgZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotCi19IC8vIEV4dGVuc2libGVFbGVtZW50CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YzE4ZTAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkZhdWx0PC9iPjwvZW0+Jy4KLSAqIEBzaW5jZSAxLjAKLSAqIEBpZ25vcmUKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBmYXVsdCBlbGVtZW50LiBGYXVsdCBlbGVtZW50cyBzcGVjaWZ5IHRoZSBhYnN0cmFjdCBtZXNzYWdlIGZvcm1hdCBmb3IgYW55IGVycm9yIG1lc3NhZ2VzIHRoYXQgbWF5IGJlIG91dHB1dCBhcyB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gCi0gKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+Ci0gKgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0RmF1bHQoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuSUZhdWx0IgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIEZhdWx0IGV4dGVuZHMgTWVzc2FnZVJlZmVyZW5jZSwgamF2YXgud3NkbC5GYXVsdAotewotfSAvLyBGYXVsdApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ODUzNzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGw7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWE7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SW1wb3J0PC9iPjwvZW0+Jy4KLSAqIEBzaW5jZSAxLjAKLSAqIEBpZ25vcmUKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIFdTREwgaW1wb3J0IGVsZW1lbnQuIFdTREwgYWxsb3dzIGFzc29jaWF0aW5nIGEgbmFtZXNwYWNlIHdpdGggYSBkb2N1bWVudCBsb2NhdGlvbiB1c2luZyBhbiBpbXBvcnQgZWxlbWVudC4KLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQjZ2V0TmFtZXNwYWNlVVJJIDxlbT5OYW1lc3BhY2UgVVJJPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQjZ2V0TG9jYXRpb25VUkkgPGVtPkxvY2F0aW9uIFVSSTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0I2dldEVEZWZpbml0aW9uIDxlbT5FRGVmaW5pdGlvbjwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0I2dldEVTY2hlbWEgPGVtPkVTY2hlbWE8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldEltcG9ydCgpCi0gKiBAbW9kZWwgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSUltcG9ydCIKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBJbXBvcnQgZXh0ZW5kcyBFeHRlbnNpYmxlRWxlbWVudCwgamF2YXgud3NkbC5JbXBvcnQKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXROYW1lc3BhY2VVUkkoU3RyaW5nKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldEltcG9ydF9OYW1lc3BhY2VVUkkoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldE5hbWVzcGFjZVVSSSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQjZ2V0TmFtZXNwYWNlVVJJIDxlbT5OYW1lc3BhY2UgVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lc3BhY2UgVVJJPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0TmFtZXNwYWNlVVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXROYW1lc3BhY2VVUkkoU3RyaW5nIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldExvY2F0aW9uVVJJKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRJbXBvcnRfTG9jYXRpb25VUkkoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldExvY2F0aW9uVVJJKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkltcG9ydCNnZXRMb2NhdGlvblVSSSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXRMb2NhdGlvblVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0TG9jYXRpb25VUkkoU3RyaW5nIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RURlZmluaXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVEZWZpbml0aW9uPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRGVmaW5pdGlvbjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldEVEZWZpbml0aW9uKERlZmluaXRpb24pCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0SW1wb3J0X0VEZWZpbml0aW9uKCkKLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIERlZmluaXRpb24gZ2V0RURlZmluaXRpb24oKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0I2dldEVEZWZpbml0aW9uIDxlbT5FRGVmaW5pdGlvbjwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RURlZmluaXRpb248L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNnZXRFRGVmaW5pdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0RURlZmluaXRpb24oRGVmaW5pdGlvbiB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVTY2hlbWE8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVTY2hlbWE8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVTY2hlbWE8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFU2NoZW1hKFhTRFNjaGVtYSkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRJbXBvcnRfRVNjaGVtYSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBYU0RTY2hlbWEgZ2V0RVNjaGVtYSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQjZ2V0RVNjaGVtYSA8ZW0+RVNjaGVtYTwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RVNjaGVtYTwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBzZWUgI2dldEVTY2hlbWEoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVTY2hlbWEoWFNEU2NoZW1hIHZhbHVlKTsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBtZXRob2QgaXMgc2FtZSBhcyBnZXRFU2NoZW1hKCkuCi0gICAqIEBzZWUgI2dldEVTY2hlbWEoKQotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FU2NoZW1hPC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQGlnbm9yZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIGtpbmQ9Im9wZXJhdGlvbiIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgWFNEU2NoZW1hIGdldFNjaGVtYSgpOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIG1ldGhvZCBpcyBzYW1lIGFzIHNldEVTY2hlbWEoWFNEU2NoZW1hKS4KLSAgICogQHNlZSAjc2V0RVNjaGVtYShYU0RTY2hlbWEpCi0gICAqIEBwYXJhbSBzY2hlbWEgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FU2NoZW1hPC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQGlnbm9yZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0U2NoZW1hKFhTRFNjaGVtYSBzY2hlbWEpOwotCi19IC8vIEltcG9ydApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjdhNjJjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5JbnB1dDwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgaW5wdXQgZWxlbWVudC4gQW4gaW5wdXQgZWxlbWVudCBzcGVjaWZpZXMgdGhlIGFic3RyYWN0IG1lc3NhZ2UgZm9ybWF0IGZvciB0aGUgaW5wdXQgb2YgdGhlIG9wZXJhdGlvbi4KLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRJbnB1dCgpCi0gKiBAbW9kZWwgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZVJlZmVyZW5jZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5JSW5wdXQiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSW5wdXQgZXh0ZW5kcyBNZXNzYWdlUmVmZXJlbmNlLCBqYXZheC53c2RsLklucHV0Ci17Ci19IC8vIElucHV0CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2E3MzdiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbDsKLQotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5NZXNzYWdlPC9iPjwvZW0+Jy4KLSAqIEBzaW5jZSAxLjAKLSAqIEBpZ25vcmUKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBtZXNzYWdlIGVsZW1lbnQuIEEgV1NETCBtZXNzYWdlIGlzIGFuIGFic3RyYWN0LCB0eXBlZCBkZWZpbml0aW9uIG9mIHRoZSBkYXRhIGJlaW5nIGNvbW11bmljYXRlZC4KLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlI2dldFFOYW1lIDxlbT5RTmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSNpc1VuZGVmaW5lZCA8ZW0+VW5kZWZpbmVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlI2dldEVQYXJ0cyA8ZW0+RVBhcnRzPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRNZXNzYWdlKCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JTWVzc2FnZSIKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBNZXNzYWdlIGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnQsIGphdmF4LndzZGwuTWVzc2FnZQotewotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFFOYW1lKFFOYW1lKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldE1lc3NhZ2VfUU5hbWUoKQotICAgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLlFOYW1lIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBRTmFtZSBnZXRRTmFtZSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlI2dldFFOYW1lIDxlbT5RTmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+UU5hbWU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXRRTmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0UU5hbWUoUU5hbWUgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlVuZGVmaW5lZDwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+VW5kZWZpbmVkPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0VW5kZWZpbmVkKGJvb2xlYW4pCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0TWVzc2FnZV9VbmRlZmluZWQoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgYm9vbGVhbiBpc1VuZGVmaW5lZCgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlI2lzVW5kZWZpbmVkIDxlbT5VbmRlZmluZWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlVuZGVmaW5lZDwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2lzVW5kZWZpbmVkKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRVbmRlZmluZWQoYm9vbGVhbiB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0fS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVQYXJ0czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FUGFydHM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0TWVzc2FnZV9FUGFydHMoKQotICAgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCIgY29udGFpbm1lbnQ9InRydWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVMaXN0IGdldEVQYXJ0cygpOwotCi19IC8vIE1lc3NhZ2UKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ODAwYjcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGw7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZSBSZWZlcmVuY2U8L2I+PC9lbT4nLgotICogQHNpbmNlIDEuMAotICogQGlnbm9yZQotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZVJlZmVyZW5jZSNnZXROYW1lIDxlbT5OYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlI2dldEVNZXNzYWdlIDxlbT5FTWVzc2FnZTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0TWVzc2FnZVJlZmVyZW5jZSgpCi0gKiBAbW9kZWwgYWJzdHJhY3Q9InRydWUiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTWVzc2FnZVJlZmVyZW5jZSBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0TmFtZShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0TWVzc2FnZVJlZmVyZW5jZV9OYW1lKCkKLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBnZXROYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2UjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldE5hbWUoU3RyaW5nIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVNZXNzYWdlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FTWVzc2FnZTwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldEVNZXNzYWdlKE1lc3NhZ2UpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0TWVzc2FnZVJlZmVyZW5jZV9FTWVzc2FnZSgpCi0gICAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgTWVzc2FnZSBnZXRFTWVzc2FnZSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlI2dldEVNZXNzYWdlIDxlbT5FTWVzc2FnZTwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RU1lc3NhZ2U8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNnZXRFTWVzc2FnZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0RU1lc3NhZ2UoTWVzc2FnZSB2YWx1ZSk7Ci0KLX0gLy8gTWVzc2FnZVJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYmJhYjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TmFtZXNwYWNlPC9iPjwvZW0+Jy4KLSAqIEBzaW5jZSAxLjAKLSAqIEBpZ25vcmUKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgbmFtZXNwYWNlIGFuZCB0aGUgY29ycmVzcG9uZGluZyBuYW1lc3BhY2UgcHJlZml4IHVzZWQgaW4gYSBXU0RMIGRvY3VtZW50LgotICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk5hbWVzcGFjZSNnZXRVUkkgPGVtPlVSSTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlI2dldFByZWZpeCA8ZW0+UHJlZml4PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXROYW1lc3BhY2UoKQotICogQG1vZGVsCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTmFtZXNwYWNlIGV4dGVuZHMgRU9iamVjdAotewotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5VUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVSSTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFVSSShTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0TmFtZXNwYWNlX1VSSSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0VVJJKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk5hbWVzcGFjZSNnZXRVUkkgPGVtPlVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VVJJPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0VVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRVUkkoU3RyaW5nIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UHJlZml4PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5QcmVmaXg8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlByZWZpeDwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFByZWZpeChTdHJpbmcpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0TmFtZXNwYWNlX1ByZWZpeCgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0UHJlZml4KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk5hbWVzcGFjZSNnZXRQcmVmaXggPGVtPlByZWZpeDwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+UHJlZml4PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0UHJlZml4KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRQcmVmaXgoU3RyaW5nIHZhbHVlKTsKLQotfSAvLyBOYW1lc3BhY2UKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTNhNDA5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvblR5cGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+Jy4KLSAqIEBzaW5jZSAxLjAKLSAqIEBpZ25vcmUKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBvcGVyYXRpb24gZWxlbWVudC4gQSBXU0RMIG9wZXJhdGlvbiBpcyBhbiBhYnN0cmFjdCBkZXNjcmlwdGlvbiBvZiBhbiBhY3Rpb24gc3VwcG9ydGVkIGJ5IGEgc2VydmljZS4KLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb24jZ2V0U3R5bGUgPGVtPlN0eWxlPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb24jZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2lzVW5kZWZpbmVkIDxlbT5VbmRlZmluZWQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiNnZXRFSW5wdXQgPGVtPkVJbnB1dDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2dldEVPdXRwdXQgPGVtPkVPdXRwdXQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiNnZXRFRmF1bHRzIDxlbT5FRmF1bHRzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb24jZ2V0RVBhcmFtZXRlck9yZGVyaW5nIDxlbT5FUGFyYW1ldGVyIE9yZGVyaW5nPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRPcGVyYXRpb24oKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLklPcGVyYXRpb24iCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgT3BlcmF0aW9uIGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnQsIGphdmF4LndzZGwuT3BlcmF0aW9uCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U3R5bGU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlN0eWxlPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0U3R5bGUoT3BlcmF0aW9uVHlwZSkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRPcGVyYXRpb25fU3R5bGUoKQotICAgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvblR5cGUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIE9wZXJhdGlvblR5cGUgZ2V0U3R5bGUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2dldFN0eWxlIDxlbT5TdHlsZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+U3R5bGU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXRTdHlsZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0U3R5bGUoT3BlcmF0aW9uVHlwZSB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXROYW1lKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRPcGVyYXRpb25fTmFtZSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0TmFtZSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb24jZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldE5hbWUoU3RyaW5nIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVuZGVmaW5lZDwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFVuZGVmaW5lZChib29sZWFuKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldE9wZXJhdGlvbl9VbmRlZmluZWQoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgYm9vbGVhbiBpc1VuZGVmaW5lZCgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb24jaXNVbmRlZmluZWQgPGVtPlVuZGVmaW5lZDwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VW5kZWZpbmVkPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjaXNVbmRlZmluZWQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldFVuZGVmaW5lZChib29sZWFuIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUlucHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FSW5wdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVJbnB1dDwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldEVJbnB1dChJbnB1dCkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRPcGVyYXRpb25fRUlucHV0KCkKLSAgICogQG1vZGVsIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBJbnB1dCBnZXRFSW5wdXQoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2dldEVJbnB1dCA8ZW0+RUlucHV0PC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FSW5wdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiBAc2VlICNnZXRFSW5wdXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVJbnB1dChJbnB1dCB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVPdXRwdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVPdXRwdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFT3V0cHV0KE91dHB1dCkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRPcGVyYXRpb25fRU91dHB1dCgpCi0gICAqIEBtb2RlbCBjb250YWlubWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgT3V0cHV0IGdldEVPdXRwdXQoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2dldEVPdXRwdXQgPGVtPkVPdXRwdXQ8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVPdXRwdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiBAc2VlICNnZXRFT3V0cHV0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRFT3V0cHV0KE91dHB1dCB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHR9LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUZhdWx0czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRmF1bHRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldE9wZXJhdGlvbl9FRmF1bHRzKCkKLSAgICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLkZhdWx0IiBjb250YWlubWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUxpc3QgZ2V0RUZhdWx0cygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUGFyYW1ldGVyIE9yZGVyaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KLSAgICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnR9LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RVBhcmFtZXRlciBPcmRlcmluZzwvZW0+JyByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FUGFyYW1ldGVyIE9yZGVyaW5nPC9lbT4nIHJlZmVyZW5jZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldE9wZXJhdGlvbl9FUGFyYW1ldGVyT3JkZXJpbmcoKQotICAgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUxpc3QgZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCk7Ci0KLX0gLy8gT3BlcmF0aW9uCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM2MDJhYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk91dHB1dDwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgb3V0cHV0IGVsZW1lbnQuIEFuIG91dHB1dCBlbGVtZW50IHNwZWNpZmllcyB0aGUgYWJzdHJhY3QgbWVzc2FnZSBmb3JtYXQgZm9yIHRoZSBvdXRwdXQgb2YgdGhlIG9wZXJhdGlvbi4KLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRPdXRwdXQoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuSU91dHB1dCIKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBPdXRwdXQgZXh0ZW5kcyBNZXNzYWdlUmVmZXJlbmNlLCBqYXZheC53c2RsLk91dHB1dAotewotfSAvLyBPdXRwdXQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjODg5OGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTREVsZW1lbnREZWNsYXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb247Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UGFydDwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgcGFydCBlbGVtZW50LiBQYXJ0cyBkZXNjcmliZSB0aGUgbG9naWNhbCBhYnN0cmFjdCBjb250ZW50IG9mIGEgbWVzc2FnZS4gRWFjaCBwYXJ0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIHR5cGUgZnJvbSBzb21lIHR5cGUgc3lzdGVtLiAKLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQjZ2V0RWxlbWVudE5hbWUgPGVtPkVsZW1lbnQgTmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCNnZXRUeXBlTmFtZSA8ZW0+VHlwZSBOYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldFR5cGVEZWZpbml0aW9uIDxlbT5UeXBlIERlZmluaXRpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQjZ2V0RWxlbWVudERlY2xhcmF0aW9uIDxlbT5FbGVtZW50IERlY2xhcmF0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldEVNZXNzYWdlIDxlbT5FTWVzc2FnZTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0UGFydCgpCi0gKiBAbW9kZWwgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSVBhcnQiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgUGFydCBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50LCBqYXZheC53c2RsLlBhcnQKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXROYW1lKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRQYXJ0X05hbWUoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldE5hbWUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCNnZXROYW1lIDxlbT5OYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0TmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0TmFtZShTdHJpbmcgdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FbGVtZW50IE5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVsZW1lbnQgTmFtZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RWxlbWVudCBOYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0RWxlbWVudE5hbWUoUU5hbWUpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0UGFydF9FbGVtZW50TmFtZSgpCi0gICAqIEBtb2RlbCBkYXRhVHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuUU5hbWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFFOYW1lIGdldEVsZW1lbnROYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQjZ2V0RWxlbWVudE5hbWUgPGVtPkVsZW1lbnQgTmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RWxlbWVudCBOYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0RWxlbWVudE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVsZW1lbnROYW1lKFFOYW1lIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VHlwZSBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5UeXBlIE5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlR5cGUgTmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFR5cGVOYW1lKFFOYW1lKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFBhcnRfVHlwZU5hbWUoKQotICAgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLlFOYW1lIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBRTmFtZSBnZXRUeXBlTmFtZSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldFR5cGVOYW1lIDxlbT5UeXBlIE5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlR5cGUgTmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldFR5cGVOYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRUeXBlTmFtZShRTmFtZSB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlR5cGUgRGVmaW5pdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VHlwZSBEZWZpbml0aW9uPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5UeXBlIERlZmluaXRpb248L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRUeXBlRGVmaW5pdGlvbihYU0RUeXBlRGVmaW5pdGlvbikKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRQYXJ0X1R5cGVEZWZpbml0aW9uKCkKLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFhTRFR5cGVEZWZpbml0aW9uIGdldFR5cGVEZWZpbml0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQjZ2V0VHlwZURlZmluaXRpb24gPGVtPlR5cGUgRGVmaW5pdGlvbjwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VHlwZSBEZWZpbml0aW9uPC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0VHlwZURlZmluaXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldFR5cGVEZWZpbml0aW9uKFhTRFR5cGVEZWZpbml0aW9uIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RWxlbWVudCBEZWNsYXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldEVsZW1lbnREZWNsYXJhdGlvbihYU0RFbGVtZW50RGVjbGFyYXRpb24pCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0UGFydF9FbGVtZW50RGVjbGFyYXRpb24oKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgWFNERWxlbWVudERlY2xhcmF0aW9uIGdldEVsZW1lbnREZWNsYXJhdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldEVsZW1lbnREZWNsYXJhdGlvbiA8ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIEBzZWUgI2dldEVsZW1lbnREZWNsYXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0RWxlbWVudERlY2xhcmF0aW9uKFhTREVsZW1lbnREZWNsYXJhdGlvbiB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FTWVzc2FnZTwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RU1lc3NhZ2U8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFTWVzc2FnZShNZXNzYWdlKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFBhcnRfRU1lc3NhZ2UoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgTWVzc2FnZSBnZXRFTWVzc2FnZSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldEVNZXNzYWdlIDxlbT5FTWVzc2FnZTwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RU1lc3NhZ2U8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNnZXRFTWVzc2FnZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0RU1lc3NhZ2UoTWVzc2FnZSB2YWx1ZSk7Ci0KLX0gLy8gUGFydApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q0Njg2MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Qb3J0PC9iPjwvZW0+Jy4KLSAqIEBzaW5jZSAxLjAKLSAqIEBpZ25vcmUKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBwb3J0IGVsZW1lbnQuIEEgcG9ydCBkZWZpbmVzIGFuIGluZGl2aWR1YWwgZW5kcG9pbnQgYnkgc3BlY2lmeWluZyBhIHNpbmdsZSBhZGRyZXNzIGZvciBhIGJpbmRpbmcKLSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0I2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQjZ2V0RUJpbmRpbmcgPGVtPkVCaW5kaW5nPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRQb3J0KCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JUG9ydCIKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBQb3J0IGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnQsIGphdmF4LndzZGwuUG9ydAotewotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldE5hbWUoU3RyaW5nKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFBvcnRfTmFtZSgpCi0gICAqIEBtb2RlbAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZ2V0TmFtZSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNnZXROYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXROYW1lKFN0cmluZyB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FQmluZGluZzwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RUJpbmRpbmc8L2VtPicgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRFQmluZGluZyhCaW5kaW5nKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFBvcnRfRUJpbmRpbmcoKQotICAgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEJpbmRpbmcgZ2V0RUJpbmRpbmcoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydCNnZXRFQmluZGluZyA8ZW0+RUJpbmRpbmc8L2VtPn0nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVCaW5kaW5nPC9lbT4nIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0RUJpbmRpbmcoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVCaW5kaW5nKEJpbmRpbmcgdmFsdWUpOwotCi19IC8vIFBvcnQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ5ZDNkMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBvcnQgVHlwZTwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgcG9ydFR5cGUgZWxlbWVudCBvZiB0aGUgV1NETCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gMS4xIGFuZCBhbiBJbnRlcmZhY2UgY29tcG9uZW50IG9mIHRoZSBXU0RMIHNwZWNpZmljYXRpb24gdmVyc2lvbiAxLjIuIEEgcG9ydCB0eXBlIG9yIEludGVyZmFjZSBpcyBhIG5hbWVkIHNldCBvZiBhYnN0cmFjdCBvcGVyYXRpb25zIGFuZCB0aGUgYWJzdHJhY3QgbWVzc2FnZXMgaW52b2x2ZWQuCi0gKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGUjZ2V0UU5hbWUgPGVtPlFOYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZSNpc1VuZGVmaW5lZCA8ZW0+VW5kZWZpbmVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZSNnZXRFT3BlcmF0aW9ucyA8ZW0+RU9wZXJhdGlvbnM8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFBvcnRUeXBlKCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JUG9ydFR5cGUiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgUG9ydFR5cGUgZXh0ZW5kcyBFeHRlbnNpYmxlRWxlbWVudCwgamF2YXgud3NkbC5Qb3J0VHlwZQotewotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPHA+Ci0gICAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFFOYW1lKFFOYW1lKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFBvcnRUeXBlX1FOYW1lKCkKLSAgICogQG1vZGVsIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5RTmFtZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgUU5hbWUgZ2V0UU5hbWUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGUjZ2V0UU5hbWUgPGVtPlFOYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldFFOYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRRTmFtZShRTmFtZSB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VW5kZWZpbmVkPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRVbmRlZmluZWQoYm9vbGVhbikKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRQb3J0VHlwZV9VbmRlZmluZWQoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgYm9vbGVhbiBpc1VuZGVmaW5lZCgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZSNpc1VuZGVmaW5lZCA8ZW0+VW5kZWZpbmVkPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNpc1VuZGVmaW5lZCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0VW5kZWZpbmVkKGJvb2xlYW4gdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FT3BlcmF0aW9uczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb259LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RU9wZXJhdGlvbnM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RU9wZXJhdGlvbnM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0UG9ydFR5cGVfRU9wZXJhdGlvbnMoKQotICAgKiBAbW9kZWwgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uIiBjb250YWlubWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUxpc3QgZ2V0RU9wZXJhdGlvbnMoKTsKLQotfSAvLyBQb3J0VHlwZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE5MjZmNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGw7Ci0KLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+U2VydmljZTwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgc2VydmljZSBlbGVtZW50LiBBIHNlcnZpY2UgZ3JvdXBzIGEgc2V0IG9mIHJlbGF0ZWQgcG9ydHMgdG9nZXRoZXIuCi0gKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZSNnZXRRTmFtZSA8ZW0+UU5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2UjaXNVbmRlZmluZWQgPGVtPlVuZGVmaW5lZDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZSNnZXRFUG9ydHMgPGVtPkVQb3J0czwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0U2VydmljZSgpCi0gKiBAbW9kZWwgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSVNlcnZpY2UiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50LCBqYXZheC53c2RsLlNlcnZpY2UKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+UU5hbWU8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRRTmFtZShRTmFtZSkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRTZXJ2aWNlX1FOYW1lKCkKLSAgICogQG1vZGVsIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5RTmFtZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgUU5hbWUgZ2V0UU5hbWUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZSNnZXRRTmFtZSA8ZW0+UU5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjZ2V0UU5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldFFOYW1lKFFOYW1lIHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVuZGVmaW5lZDwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI3NldFVuZGVmaW5lZChib29sZWFuKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFNlcnZpY2VfVW5kZWZpbmVkKCkKLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGJvb2xlYW4gaXNVbmRlZmluZWQoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZSNpc1VuZGVmaW5lZCA8ZW0+VW5kZWZpbmVkPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNpc1VuZGVmaW5lZCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0VW5kZWZpbmVkKGJvb2xlYW4gdmFsdWUpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydH0uCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDxwPgotICAgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FUG9ydHM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RVBvcnRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFNlcnZpY2VfRVBvcnRzKCkKLSAgICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQiIGNvbnRhaW5tZW50PSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFTGlzdCBnZXRFUG9ydHMoKTsKLQotfSAvLyBTZXJ2aWNlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMTAzOTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5UeXBlczwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgdHlwZXMgZWxlbWVudC4gVGhlIHR5cGVzIGVsZW1lbnQgZW5jbG9zZXMgZGF0YSB0eXBlIGRlZmluaXRpb25zIHRoYXQgYXJlIHJlbGV2YW50IGZvciB0aGUgZXhjaGFuZ2VkIG1lc3NhZ2VzLgotICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPgotICoKLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFR5cGVzKCkKLSAqIEBtb2RlbCBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JVHlwZXMiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgVHlwZXMgZXh0ZW5kcyBFeHRlbnNpYmxlRWxlbWVudCwgamF2YXgud3NkbC5UeXBlcwotewotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogUmV0dXJucyBhIExpc3Qgb2YgaW5saW5lIFhTRFNjaGVtYSBpbnN0YW5jZXMgaW4gdGhpcyBUeXBlcy4gCi0gICAqIEByZXR1cm4gTGlzdCBvZiBYU0RTY2hlbWEgaW5zdGFuY2VzLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWEKLSAgICogQGlnbm9yZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIGtpbmQ9Im9wZXJhdGlvbiIgdHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUxpc3QiIG1hbnk9ImZhbHNlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBMaXN0IGdldFNjaGVtYXMoKTsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogUmV0dXJucyBhIExpc3Qgb2YgaW5saW5lIFhTRFNjaGVtYSBpbnN0YW5jZXMgaW4gdGhpcyBUeXBlcy4gVGhlIHRhcmdldE5hbWVzcGFjZSBvZgotICAgKiB0aGUgc2NoZW1hcyBhcmUgdGhlIHNhbWUgYXMgbmFtZXNwYWNlVVJJIGFyZ3VtZW50IHZhbHVlLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlVVJJIHRhcmdldE5hbWVzcGFjZSBvZiB0aGUgc2NoZW1hcyB0byBiZSBzZWFyY2hlZCBmb3IuCi0gICAqIEByZXR1cm4gTGlzdCBvZiBYU0RTY2hlbWEgaW5zdGFuY2VzLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWEKLSAgICogQGlnbm9yZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLklMaXN0IiBtYW55PSJmYWxzZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgTGlzdCBnZXRTY2hlbWFzKFN0cmluZyBuYW1lc3BhY2VVUkkpOwotCi19IC8vIFR5cGVzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA0NDg2Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLgotICogQHNpbmNlIDEuMAotICogQGlnbm9yZQotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50I2dldENoaWxkcmVuIDxlbT5DaGlsZHJlbjwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAqIEBtb2RlbAotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbmRzIEV4dGVuc2liaWxpdHlFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5DaGlsZHJlbjwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnR9LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+Q2hpbGRyZW48L2VtPicgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0gICAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSAgICogPC9wPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+Q2hpbGRyZW48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50X0NoaWxkcmVuKCkKLSAgICogQG1vZGVsIHR5cGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCIgY29udGFpbm1lbnQ9InRydWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVMaXN0IGdldENoaWxkcmVuKCk7Ci0KLX0gLy8gVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYTNkZDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+Jy4KLSAqIEBzaW5jZSAxLjAKLSAqIEBpZ25vcmUKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICoKLSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBsYW5ndWFnZSBlbGVtZW50LgotICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPgotICoKLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50I2dldERvY3VtZW50YXRpb25FbGVtZW50IDxlbT5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50I2dldEVsZW1lbnQgPGVtPkVsZW1lbnQ8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFdTRExFbGVtZW50KCkKLSAqIEBtb2RlbCBhYnN0cmFjdD0idHJ1ZSIKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGludGVyZmFjZSBXU0RMRWxlbWVudCBleHRlbmRzIEVPYmplY3QKLXsKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXREb2N1bWVudGF0aW9uRWxlbWVudChFbGVtZW50KQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFdTRExFbGVtZW50X0RvY3VtZW50YXRpb25FbGVtZW50KCkKLSAgICogQG1vZGVsIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5ET01FbGVtZW50IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFbGVtZW50IGdldERvY3VtZW50YXRpb25FbGVtZW50KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50I2dldERvY3VtZW50YXRpb25FbGVtZW50IDxlbT5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkRvY3VtZW50YXRpb24gRWxlbWVudDwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXREb2N1bWVudGF0aW9uRWxlbWVudChFbGVtZW50IHZhbHVlKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogVGhpcyBpcyB0aGUgdW5kZXJseWluZyBET00gZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wb25lbnQsIAotICAgKiBpLmUuLCB0aGUge0BsaW5rICN1cGRhdGVFbGVtZW50KCkgc2VyaWFsaXphdGlvbn0gb2YgdGhpcyBjb21wb25lbnQuCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVsZW1lbnQ8L2VtPicgYXR0cmlidXRlLgotICAgKiBAc2VlICNzZXRFbGVtZW50KEVsZW1lbnQpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0V1NETEVsZW1lbnRfRWxlbWVudCgpCi0gICAqIEBtb2RlbCBkYXRhVHlwZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRE9NRWxlbWVudCIgdHJhbnNpZW50PSJ0cnVlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFbGVtZW50IGdldEVsZW1lbnQoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQjZ2V0RWxlbWVudCA8ZW0+RWxlbWVudDwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RWxlbWVudDwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldEVsZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICB2b2lkIHNldEVsZW1lbnQoRWxlbWVudCB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFJldHVybnMgdGhlIERlZmluaXRpb24gdGhhdCBjb250YWlucyB0aGlzIFdTREwgZWxlbWVudC4KLSAgICogQHJldHVybiB0aGUgRGVmaW5pdGlvbiB0aGF0IGNvbnRhaW5zIHRoaXMgV1NETCBlbGVtZW50LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsIGtpbmQ9Im9wZXJhdGlvbiIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRGVmaW5pdGlvbiBnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFNldHMgdGhlIGVuY2xvc2luZyBkZWZpbml0aW9uIG9mIHRoaXMgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gZGVmaW5pdGlvbiB0aGUgRGVmaW5pdGlvbiB0aGF0IGNvbnRhaW5zIHRoaXMgV1NETCBlbGVtZW50LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQG1vZGVsCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihEZWZpbml0aW9uIGRlZmluaXRpb24pOwotCi0gIC8qKgotICAgKiBFbnN1cmVzIHRoYXQgdGhlIHVuZGVybHlpbmcgRE9NIHtAbGluayAjZ2V0RWxlbWVudCBlbGVtZW50fSBib3RoIGV4aXN0cyBhbmQgaXMgdXAtdG8tZGF0ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1vZGVsLAotICAgKiBpLmUuLCBpdCBzZXJpYWxpemVzIHRoZSBjb21wb25lbnQgYW5kIG1haW50YWlucyBhbiBhc3NvY2lhdGlvbiB3aXRoIHRoYXQgc2VyaWFsaXphdGlvbi4KLSAgICogQHNlZSAjdXBkYXRlRWxlbWVudChib29sZWFuKQotICAgKiBAc2VlICNnZXRFbGVtZW50Ci0gICAqLwotICB2b2lkIHVwZGF0ZUVsZW1lbnQoKTsKLQotICAvKioKLSAgICogRW5zdXJlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIERPTSB7QGxpbmsgI2dldEVsZW1lbnQgZWxlbWVudH0gYm90aCBleGlzdHMgYW5kIGlzIHVwLXRvLWRhdGUgd2l0aCByZXNwZWN0IHRvIHRoZSBtb2RlbCwKLSAgICogaS5lLiwgaXQgc2VyaWFsaXplcyB0aGUgY29tcG9uZW50IGFuZCBtYWludGFpbnMgYW4gYXNzb2NpYXRpb24gd2l0aCB0aGF0IHNlcmlhbGl6YXRpb24uCi0gICAqIEZvciA8Y29kZT5kZWVwID09IHRydWU8L2NvZGU+LCAKLSAgICogb3Igd2hlbiA8Y29kZT57QGxpbmsgI2dldEVsZW1lbnQgZ2V0RWxlbWVudCgpfSA9PSBudWxsPC9jb2RlPiwgCi0gICAqIHRoaXMgZG9lcyB0aGUgc2FtZSB0aGluZyBhcyB7QGxpbmsgI3VwZGF0ZUVsZW1lbnQoKX07Ci0gICAqIG90aGVyd2lzZSwgaXQgdXBkYXRlcyBqdXN0IHRoZSBET00gZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wb25lbnQgdG8gcmVmbGVjdCB0aGUgY3VycmVudCBzdGF0ZS4KLSAgICogQHNlZSAjdXBkYXRlRWxlbWVudCgpCi0gICAqIEBzZWUgI2dldEVsZW1lbnQKLSAgICovCi0gIHZvaWQgdXBkYXRlRWxlbWVudChib29sZWFuIGRlZXApOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Db250YWluZXI8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogVGhpcyByZXByZXNlbnRzIHRoZSBjb25jcmV0ZSBjb250YWluZXIgb2YgdGhpcyBjb21wb25lbnQsIAotICAgKiBpLmUuLCB0aGUgaW52ZXJzZSBvZiB0aGUgYmxhY2sgZGlhbW9uZCByZWxhdGlvbnMgaW4gdGhlIFVNTCBtb2RlbC4KLSAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+Q29udGFpbmVyPC9lbT4nIHJlZmVyZW5jZS4KLSAgICovCi0gIFdTRExFbGVtZW50IGdldENvbnRhaW5lcigpOwotCi0gIC8qKgotICAgKiBDYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZ2l2ZW4gZWxlbWVudCBoYXMgY2hhbmdlZDsKLSAgICogdGhlIGVsZW1lbnQgc2hvdWxkIHR5cGljYWxseSBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHJldHVybmVkIHtAbGluayAjZ2V0RWxlbWVudH0uCi0gICAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgY2xpZW50cyB3aWxsIG5vdCBjYWxsIHRoaXMgdGhlbXNlbHZlcyAKLSAgICogc2luY2UgdGhlIERPTSBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgdG8gdGhlIHVuZGVybHlpbmcgRE9NIHdpbGwgaW52b2tlIHRoZXNlIGF1dG9tYXRpY2FsbHkuCi0gICAqIEBwYXJhbSBjaGFuZ2VkRWxlbWVudCB0aGUgRE9NIGVsZW1lbnQgY2hhbmdlZCBmb3IgdGhpcyBpbnN0YW5jZS4KLSAgICovCi0gIHZvaWQgZWxlbWVudENoYW5nZWQoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCk7Ci0KLX0gLy8gV1NETEVsZW1lbnQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE4ZTA1Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUZhY3Rvcnk7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuCi0gKiBJdCBwcm92aWRlcyBhIGNyZWF0ZSBtZXRob2QgZm9yIGVhY2ggbm9uLWFic3RyYWN0IGNsYXNzIG9mIHRoZSBtb2RlbC4KLSAqIEBzaW5jZSAxLjAKLSAqIEBpZ25vcmUKLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgaW50ZXJmYWNlIFdTRExGYWN0b3J5IGV4dGVuZHMgRUZhY3RvcnkKLXsKLSAgLyoqCi0gICAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBXU0RMRmFjdG9yeSBlSU5TVEFOQ0UgPSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExGYWN0b3J5SW1wbC5pbml0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UG9ydCBUeXBlPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Qb3J0IFR5cGU8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFBvcnRUeXBlIGNyZWF0ZVBvcnRUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5PcGVyYXRpb248L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIE9wZXJhdGlvbiBjcmVhdGVPcGVyYXRpb24oKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5NZXNzYWdlPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5NZXNzYWdlPC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBNZXNzYWdlIGNyZWF0ZU1lc3NhZ2UoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBQYXJ0IGNyZWF0ZVBhcnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBCaW5kaW5nIGNyZWF0ZUJpbmRpbmcoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nIE9wZXJhdGlvbjwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEJpbmRpbmdPcGVyYXRpb24gY3JlYXRlQmluZGluZ09wZXJhdGlvbigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlNlcnZpY2U8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlNlcnZpY2U8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFNlcnZpY2UgY3JlYXRlU2VydmljZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBvcnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBvcnQ8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFBvcnQgY3JlYXRlUG9ydCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFeHRlbnNpYmlsaXR5RWxlbWVudCBjcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRlZmluaXRpb248L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRlZmluaXRpb248L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIERlZmluaXRpb24gY3JlYXRlRGVmaW5pdGlvbigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkltcG9ydDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SW1wb3J0PC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBJbXBvcnQgY3JlYXRlSW1wb3J0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SW5wdXQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPklucHV0PC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBJbnB1dCBjcmVhdGVJbnB1dCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk91dHB1dDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3V0cHV0PC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBPdXRwdXQgY3JlYXRlT3V0cHV0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RmF1bHQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkZhdWx0PC9lbT4nLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBGYXVsdCBjcmVhdGVGYXVsdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEJpbmRpbmdJbnB1dCBjcmVhdGVCaW5kaW5nSW5wdXQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nIE91dHB1dDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBPdXRwdXQ8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEJpbmRpbmdPdXRwdXQgY3JlYXRlQmluZGluZ091dHB1dCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgRmF1bHQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgRmF1bHQ8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEJpbmRpbmdGYXVsdCBjcmVhdGVCaW5kaW5nRmF1bHQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5OYW1lc3BhY2U8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk5hbWVzcGFjZTwvZW0+Jy4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgTmFtZXNwYWNlIGNyZWF0ZU5hbWVzcGFjZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlR5cGVzPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5UeXBlczwvZW0+Jy4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgVHlwZXMgY3JlYXRlVHlwZXMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCBjcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IGNyZWF0ZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgV1NETFBhY2thZ2UgZ2V0V1NETFBhY2thZ2UoKTsKLQotICAvKgotICAgKiBSZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCi0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICAvL1dTRExQYWNrYWdlIGdldFdTRExQYWNrYWdlKCk7Ci19IC8vV1NETEZhY3RvcnkKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhlMjQ0MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0Nzc4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRURhdGFUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4KLSAqIEl0IGNvbnRhaW5zIGFjY2Vzc29ycyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0byByZXByZXNlbnQKLSAqIDx1bD4KLSAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4KLSAqICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+Ci0gKiAgIDxsaT5lYWNoIGVudW0sPC9saT4KLSAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+Ci0gKiA8L3VsPgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4KLSAqIFRoZSBXU0RMIG1vZGVsIGNvbnRhaW5zIGNsYXNzZXMgZm9yIHRoZSBXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpLgotICogCi0gKiBXU0RMIGRlc2NyaWJlcyBuZXR3b3JrIHNlcnZpY2VzIGFzIHNldHMgb2YgZW5kcG9pbnRzIG9wZXJhdGluZyBvbiBtZXNzYWdlcy4gVGhlIG9wZXJhdGlvbnMgYW5kIG1lc3NhZ2VzIGFyZSBkZXNjcmliZWQgYWJzdHJhY3RseSwgYW5kIHRoZW4gYm91bmQgdG8gYSBjb25jcmV0ZSBuZXR3b3JrIHByb3RvY29sIGFuZCBtZXNzYWdlIGZvcm1hdCB0byBkZWZpbmUgYW4gZW5kcG9pbnQuCi0gKiAKLSAqIFdTREwgZGVzY3JpYmVzIHRoZSBmb3JtYXRzIG9mIHRoZSBtZXNzYWdlcyBleGNoYW5nZWQgYnkgdGhlIHNlcnZpY2VzLCBhbmQgc3VwcG9ydHMgdGhlIFhNTCBTY2hlbWFzIHNwZWNpZmljYXRpb24gYXMgaXRzIGNhbm9uaWNhbCB0eXBlIHN5c3RlbS4gVGhpcyBwYWNrYWdlIHVzZXMgYW4gWE1MIFNjaGVtYSBJbmZvc2V0IG1vZGVsIHBhY2thZ2UgKHNlZSB0aGUgWFNEIHBhY2thZ2UpIHRvIGRlc2NyaWJlIHRoZSBhYnN0cmFjdCBtZXNzYWdlIGZvcm1hdHMuCi0gKiAKLSAqIFRoZSBtb2RlbCBjb250YWlucyB0aGUgZm9sbG93aW5nIGRpYWdyYW1zLCBuYW1lZCBhZnRlciB0aGUgY29ycmVzcG9uZGluZyBjaGFwdGVycyBpbiB0aGUgV1NETCAxLjEgc3BlY2lmaWNhdGlvbiAoaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9OT1RFLXdzZGwtMjAwMTAzMTUpCi0gKiAtIDIuMSBEZWZpbml0aW9uLCBzaG93cyB0aGUgV1NETCBkZWZpbml0aW9uIGVsZW1lbnQgYW5kIHRoZSBXU0RMIGRvY3VtZW50IHN0cnVjdHVyZQotICogLSAyLjEuMSBOYW1pbmcgYW5kIExpbmtpbmcsIHNob3dzIHRoZSBuYW1lc3BhY2UgYW5kIGltcG9ydCBtZWNoYW5pc20KLSAqIC0gMi4xLjMgRXh0ZW5zaWJpbGl0eSwgc2hvd3MgdGhlIFdTREwgZXh0ZW5zaWJpbGl0eSBtZWNoYW5pc20KLSAqIC0gMi4yIFR5cGVzLCBzaG93cyB0aGUgdXNlIG9mIFhNTCBTY2hlbWEgdHlwZXMgaW4gV1NETAotICogLSAyLjMgTWVzc2FnZXMsIDIuNCBQb3J0VHlwZXMsIDIuNSBCaW5kaW5ncyBhbmQgMi43IFNlcnZpY2VzLCBzaG93IHRoZSBtYWpvciBXU0RMIGVsZW1lbnRzIGFuZCB0aGVpciByZWxhdGlvbnMuCi0gKiAKLSAqIFRoZSBXU0RMIGNsYXNzZXMgZXh0ZW5kIHRoZSBqYXZheC53c2RsIGludGVyZmFjZXMgZGVmaW5lZCBieSBKU1IgMTEwLiBDbGFzc2VzIHdpdGggaW50ZXJmYWNlIGFuZCBkYXRhdHlwZSBzdGVyZW90eXBlcyBhcmUgdXNlZCB0byByZXByZXNlbnQgdGhlc2Ugbm9uLU1PRiBpbnRlcmZhY2VzLgotICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRmFjdG9yeQotICogQG1vZGVsIGtpbmQ9InBhY2thZ2UiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgV1NETFBhY2thZ2UgZXh0ZW5kcyBFUGFja2FnZQotewotICAvKioKLSAgICogVGhlIHBhY2thZ2UgbmFtZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIFN0cmluZyBlTkFNRSA9ICJ3c2RsIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgVVJJLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGVOU19VUkkgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvV1NETCI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIG5hbWUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBTdHJpbmcgZU5TX1BSRUZJWCA9ICJ3c2RsIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgV1NETFBhY2thZ2UgZUlOU1RBTkNFID0gb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwuaW5pdCgpOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETEVsZW1lbnRJbXBsIDxlbT5FbGVtZW50PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMRWxlbWVudEltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRXU0RMRWxlbWVudCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBXU0RMX0VMRU1FTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgV1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFdTRExfRUxFTUVOVF9fRUxFTUVOVCA9IDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5FbGVtZW50PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFdTRExfRUxFTUVOVF9GRUFUVVJFX0NPVU5UID0gMjsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkV4dGVuc2libGVFbGVtZW50SW1wbCA8ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmxlRWxlbWVudEltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRFeHRlbnNpYmxlRWxlbWVudCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBFWFRFTlNJQkxFX0VMRU1FTlQgPSAxMjsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEVYVEVOU0lCTEVfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gV1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgRVhURU5TSUJMRV9FTEVNRU5UX19FTEVNRU5UID0gV1NETF9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMgPSBXU0RMX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5FeHRlbnNpYmxlIEVsZW1lbnQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgPSBXU0RMX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5Qb3J0VHlwZUltcGwgPGVtPlBvcnQgVHlwZTwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuUG9ydFR5cGVJbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0UG9ydFR5cGUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgUE9SVF9UWVBFID0gMTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFBPUlRfVFlQRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgUE9SVF9UWVBFX19FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFBPUlRfVFlQRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQT1JUX1RZUEVfX1FOQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgUE9SVF9UWVBFX19VTkRFRklORUQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FT3BlcmF0aW9uczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgUE9SVF9UWVBFX19FT1BFUkFUSU9OUyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMjsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBvcnQgVHlwZTwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQT1JUX1RZUEVfRkVBVFVSRV9DT1VOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMzsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk9wZXJhdGlvbkltcGwgPGVtPk9wZXJhdGlvbjwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuT3BlcmF0aW9uSW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldE9wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBPUEVSQVRJT04gPSAyOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBPUEVSQVRJT05fX0VMRU1FTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgT1BFUkFUSU9OX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE9QRVJBVElPTl9fU1RZTEUgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgT1BFUkFUSU9OX19OQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgT1BFUkFUSU9OX19VTkRFRklORUQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBPUEVSQVRJT05fX0VJTlBVVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBPUEVSQVRJT05fX0VPVVRQVVQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRmF1bHRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBPUEVSQVRJT05fX0VGQVVMVFMgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDU7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFyYW1ldGVyIE9yZGVyaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBPUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkcgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDY7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5PcGVyYXRpb248L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDc7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5NZXNzYWdlSW1wbCA8ZW0+TWVzc2FnZTwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuTWVzc2FnZUltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRNZXNzYWdlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IE1FU1NBR0UgPSAzOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUVTU0FHRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUVTU0FHRV9fRUxFTUVOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNRVNTQUdFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1FU1NBR0VfX1FOQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUVTU0FHRV9fVU5ERUZJTkVEID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNRVNTQUdFX19FUEFSVFMgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5NZXNzYWdlPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE1FU1NBR0VfRkVBVFVSRV9DT1VOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMzsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlBhcnRJbXBsIDxlbT5QYXJ0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5QYXJ0SW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldFBhcnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgUEFSVCA9IDQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQQVJUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQQVJUX19FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFBBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTID0gRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQQVJUX19OQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgUEFSVF9fRUxFTUVOVF9OQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VHlwZSBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgUEFSVF9fVFlQRV9OQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAyOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VHlwZSBEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgUEFSVF9fVFlQRV9ERUZJTklUSU9OID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAzOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBEZWNsYXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFBBUlRfX0VMRU1FTlRfREVDTEFSQVRJT04gPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFBBUlRfX0VNRVNTQUdFID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyA1OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+UGFydDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQQVJUX0ZFQVRVUkVfQ09VTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDY7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nSW1wbCA8ZW0+QmluZGluZzwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ0ltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRCaW5kaW5nKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IEJJTkRJTkcgPSA1OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19fRUxFTUVOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEJJTkRJTkdfX1FOQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19fVU5ERUZJTkVEID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZTwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEJJTkRJTkdfX0VQT1JUX1RZUEUgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAzOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZzwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX0ZFQVRVUkVfQ09VTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nT3BlcmF0aW9uSW1wbCA8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdPcGVyYXRpb25JbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0QmluZGluZ09wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBCSU5ESU5HX09QRVJBVElPTiA9IDY7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19PUEVSQVRJT05fX0VMRU1FTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTID0gRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX09QRVJBVElPTl9fTkFNRSA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVPcGVyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTiA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nIElucHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0lOUFVUID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAyOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgT3V0cHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX09VVFBVVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0ZBVUxUUyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgNDsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkJpbmRpbmcgT3BlcmF0aW9uPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEJJTkRJTkdfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDU7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5TZXJ2aWNlSW1wbCA8ZW0+U2VydmljZTwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuU2VydmljZUltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRTZXJ2aWNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IFNFUlZJQ0UgPSA3OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU0VSVklDRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU0VSVklDRV9fRUxFTUVOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTRVJWSUNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNFUlZJQ0VfX1FOQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgU0VSVklDRV9fVU5ERUZJTkVEID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBvcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBTRVJWSUNFX19FUE9SVFMgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5TZXJ2aWNlPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFNFUlZJQ0VfRkVBVFVSRV9DT1VOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMzsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlBvcnRJbXBsIDxlbT5Qb3J0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5Qb3J0SW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldFBvcnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgUE9SVCA9IDg7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQT1JUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQT1JUX19FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFBPUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTID0gRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQT1JUX19OQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmc8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBQT1JUX19FQklORElORyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBvcnQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgUE9SVF9GRUFUVVJFX0NPVU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAyOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIDxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldEV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IEVYVEVOU0lCSUxJVFlfRUxFTUVOVCA9IDk7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBFWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCA9IFdTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVCA9IFdTRExfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRCA9IFdTRExfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFID0gV1NETF9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UID0gV1NETF9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAyOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRGVmaW5pdGlvbkltcGwgPGVtPkRlZmluaXRpb248L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0RGVmaW5pdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBERUZJTklUSU9OID0gMTA7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBERUZJTklUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBERUZJTklUSU9OX19FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IERFRklOSVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTID0gRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBOYW1lc3BhY2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb248L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBERUZJTklUSU9OX19MT0NBVElPTiA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgREVGSU5JVElPTl9fUU5BTUUgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDI7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbmNvZGluZzwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IERFRklOSVRJT05fX0VOQ09ESU5HID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAzOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUltcG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IERFRklOSVRJT05fX0VJTVBPUlRTID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyA0OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVR5cGVzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgREVGSU5JVElPTl9fRVRZUEVTID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyA1OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBERUZJTklUSU9OX19FTUVTU0FHRVMgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDY7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgREVGSU5JVElPTl9fRVBPUlRfVFlQRVMgPSBFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDc7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZ3M8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IERFRklOSVRJT05fX0VCSU5ESU5HUyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgODsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVTZXJ2aWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgREVGSU5JVElPTl9fRVNFUlZJQ0VTID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyA5OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU5hbWVzcGFjZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IERFRklOSVRJT05fX0VOQU1FU1BBQ0VTID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxMDsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkRlZmluaXRpb248L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgREVGSU5JVElPTl9GRUFUVVJFX0NPVU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxMTsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkltcG9ydEltcGwgPGVtPkltcG9ydDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuSW1wb3J0SW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldEltcG9ydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJTVBPUlQgPSAxMTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElNUE9SVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSU1QT1JUX19FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElNUE9SVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElNUE9SVF9fTkFNRVNQQUNFX1VSSSA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElNUE9SVF9fTE9DQVRJT05fVVJJID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RURlZmluaXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJTVBPUlRfX0VERUZJTklUSU9OID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAyOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVNjaGVtYTwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElNUE9SVF9fRVNDSEVNQSA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMzsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkltcG9ydDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJTVBPUlRfRkVBVFVSRV9DT1VOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgNDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk1lc3NhZ2VSZWZlcmVuY2VJbXBsIDxlbT5NZXNzYWdlIFJlZmVyZW5jZTwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuTWVzc2FnZVJlZmVyZW5jZUltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRNZXNzYWdlUmVmZXJlbmNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IE1FU1NBR0VfUkVGRVJFTkNFID0gNDY7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNRVNTQUdFX1JFRkVSRU5DRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUVTU0FHRV9SRUZFUkVOQ0VfX0VMRU1FTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUVTU0FHRV9SRUZFUkVOQ0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTID0gRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBNRVNTQUdFX1JFRkVSRU5DRV9fTkFNRSA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+TWVzc2FnZSBSZWZlcmVuY2U8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTUVTU0FHRV9SRUZFUkVOQ0VfRkVBVFVSRV9DT1VOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMjsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLklucHV0SW1wbCA8ZW0+SW5wdXQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLklucHV0SW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElucHV0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElOUFVUID0gMTM7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJTlBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gTUVTU0FHRV9SRUZFUkVOQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJTlBVVF9fRUxFTUVOVCA9IE1FU1NBR0VfUkVGRVJFTkNFX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IE1FU1NBR0VfUkVGRVJFTkNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJTlBVVF9fTkFNRSA9IE1FU1NBR0VfUkVGRVJFTkNFX19OQU1FOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJTlBVVF9fRU1FU1NBR0UgPSBNRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0U7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JbnB1dDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJTlBVVF9GRUFUVVJFX0NPVU5UID0gTUVTU0FHRV9SRUZFUkVOQ0VfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5PdXRwdXRJbXBsIDxlbT5PdXRwdXQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk91dHB1dEltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRPdXRwdXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgT1VUUFVUID0gMTQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBPVVRQVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCA9IE1FU1NBR0VfUkVGRVJFTkNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgT1VUUFVUX19FTEVNRU5UID0gTUVTU0FHRV9SRUZFUkVOQ0VfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgT1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IE1FU1NBR0VfUkVGRVJFTkNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBPVVRQVVRfX05BTUUgPSBNRVNTQUdFX1JFRkVSRU5DRV9fTkFNRTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgT1VUUFVUX19FTUVTU0FHRSA9IE1FU1NBR0VfUkVGRVJFTkNFX19FTUVTU0FHRTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk91dHB1dDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBPVVRQVVRfRkVBVFVSRV9DT1VOVCA9IE1FU1NBR0VfUkVGRVJFTkNFX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRmF1bHRJbXBsIDxlbT5GYXVsdDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRmF1bHRJbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0RmF1bHQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgRkFVTFQgPSAxNTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEZBVUxUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBNRVNTQUdFX1JFRkVSRU5DRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEZBVUxUX19FTEVNRU5UID0gTUVTU0FHRV9SRUZFUkVOQ0VfX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgRkFVTFRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTID0gTUVTU0FHRV9SRUZFUkVOQ0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEZBVUxUX19OQU1FID0gTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUU7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEZBVUxUX19FTUVTU0FHRSA9IE1FU1NBR0VfUkVGRVJFTkNFX19FTUVTU0FHRTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkZhdWx0PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEZBVUxUX0ZFQVRVUkVfQ09VTlQgPSBNRVNTQUdFX1JFRkVSRU5DRV9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdJbnB1dEltcGwgPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdJbnB1dEltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRCaW5kaW5nSW5wdXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgQklORElOR19JTlBVVCA9IDE2OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19JTlBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19JTlBVVF9fRUxFTUVOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX0lOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19JTlBVVF9fTkFNRSA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVJbnB1dDwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEJJTkRJTkdfSU5QVVRfX0VJTlBVVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAyOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ091dHB1dEltcGwgPGVtPkJpbmRpbmcgT3V0cHV0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nT3V0cHV0SW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldEJpbmRpbmdPdXRwdXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgQklORElOR19PVVRQVVQgPSAxNzsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEJJTkRJTkdfT1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX09VVFBVVF9fRUxFTUVOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX09VVFBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEJJTkRJTkdfT1VUUFVUX19OQU1FID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEJJTkRJTkdfT1VUUFVUX19FT1VUUFVUID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZyBPdXRwdXQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMjsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdGYXVsdEltcGwgPGVtPkJpbmRpbmcgRmF1bHQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdGYXVsdEltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRCaW5kaW5nRmF1bHQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgQklORElOR19GQVVMVCA9IDE4OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19GQVVMVF9fRUxFTUVOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBCSU5ESU5HX0ZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19GQVVMVF9fTkFNRSA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVGYXVsdDwvYj48L2VtPicgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IEJJTkRJTkdfRkFVTFRfX0VGQVVMVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkJpbmRpbmcgRmF1bHQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgQklORElOR19GQVVMVF9GRUFUVVJFX0NPVU5UID0gRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAyOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuTmFtZXNwYWNlSW1wbCA8ZW0+TmFtZXNwYWNlPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5OYW1lc3BhY2VJbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0TmFtZXNwYWNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IE5BTUVTUEFDRSA9IDE5OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTkFNRVNQQUNFX19VUkkgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UHJlZml4PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgTkFNRVNQQUNFX19QUkVGSVggPSAxOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+TmFtZXNwYWNlPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IE5BTUVTUEFDRV9GRUFUVVJFX0NPVU5UID0gMjsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuQXR0cmlidXRlRXh0ZW5zaWJsZSA8ZW0+SUF0dHJpYnV0ZSBFeHRlbnNpYmxlPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLkF0dHJpYnV0ZUV4dGVuc2libGUKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJQXR0cmlidXRlRXh0ZW5zaWJsZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJQVRUUklCVVRFX0VYVEVOU0lCTEUgPSA0ODsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklBdHRyaWJ1dGUgRXh0ZW5zaWJsZTwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJQVRUUklCVVRFX0VYVEVOU0lCTEVfRkVBVFVSRV9DT1VOVCA9IDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5Qb3J0VHlwZSA8ZW0+SVBvcnQgVHlwZTwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuUG9ydFR5cGUKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJUG9ydFR5cGUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSVBPUlRfVFlQRSA9IDIwOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVBvcnQgVHlwZTwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJUE9SVF9UWVBFX0ZFQVRVUkVfQ09VTlQgPSBJQVRUUklCVVRFX0VYVEVOU0lCTEVfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLkVsZW1lbnRFeHRlbnNpYmxlIDxlbT5JRWxlbWVudCBFeHRlbnNpYmxlPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLkVsZW1lbnRFeHRlbnNpYmxlCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SUVsZW1lbnRFeHRlbnNpYmxlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElFTEVNRU5UX0VYVEVOU0lCTEUgPSA0NzsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklFbGVtZW50IEV4dGVuc2libGU8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSUVMRU1FTlRfRVhURU5TSUJMRV9GRUFUVVJFX0NPVU5UID0gMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLk9wZXJhdGlvbiA8ZW0+SU9wZXJhdGlvbjwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuT3BlcmF0aW9uCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SU9wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJT1BFUkFUSU9OID0gMjE7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JT3BlcmF0aW9uPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElPUEVSQVRJT05fRkVBVFVSRV9DT1VOVCA9IElFTEVNRU5UX0VYVEVOU0lCTEVfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5JbnB1dCA8ZW0+SUlucHV0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5JbnB1dAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElJbnB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJSU5QVVQgPSAyMjsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklJbnB1dDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJSU5QVVRfRkVBVFVSRV9DT1VOVCA9IElBVFRSSUJVVEVfRVhURU5TSUJMRV9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLk91dHB1dCA8ZW0+SU91dHB1dDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuT3V0cHV0Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SU91dHB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJT1VUUFVUID0gMjM7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JT3V0cHV0PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElPVVRQVVRfRkVBVFVSRV9DT1VOVCA9IElBVFRSSUJVVEVfRVhURU5TSUJMRV9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLkZhdWx0IDxlbT5JRmF1bHQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLkZhdWx0Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SUZhdWx0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElGQVVMVCA9IDI0OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUZhdWx0PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElGQVVMVF9GRUFUVVJFX0NPVU5UID0gSUFUVFJJQlVURV9FWFRFTlNJQkxFX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuTWVzc2FnZSA8ZW0+SU1lc3NhZ2U8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLk1lc3NhZ2UKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJTWVzc2FnZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJTUVTU0FHRSA9IDI1OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1lc3NhZ2U8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSU1FU1NBR0VfRkVBVFVSRV9DT1VOVCA9IElFTEVNRU5UX0VYVEVOU0lCTEVfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5QYXJ0IDxlbT5JUGFydDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuUGFydAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElQYXJ0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElQQVJUID0gMjY7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JUGFydDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJUEFSVF9GRUFUVVJFX0NPVU5UID0gSUFUVFJJQlVURV9FWFRFTlNJQkxFX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuU2VydmljZSA8ZW0+SVNlcnZpY2U8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLlNlcnZpY2UKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJU2VydmljZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJU0VSVklDRSA9IDI3OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVNlcnZpY2U8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSVNFUlZJQ0VfRkVBVFVSRV9DT1VOVCA9IElFTEVNRU5UX0VYVEVOU0lCTEVfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5Qb3J0IDxlbT5JUG9ydDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuUG9ydAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElQb3J0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElQT1JUID0gMjg7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JUG9ydDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJUE9SVF9GRUFUVVJFX0NPVU5UID0gSUVMRU1FTlRfRVhURU5TSUJMRV9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLkJpbmRpbmcgPGVtPklCaW5kaW5nPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5CaW5kaW5nCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SUJpbmRpbmcoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSUJJTkRJTkcgPSAyOTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklCaW5kaW5nPC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IElCSU5ESU5HX0ZFQVRVUkVfQ09VTlQgPSBJRUxFTUVOVF9FWFRFTlNJQkxFX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiA8ZW0+SUJpbmRpbmcgT3BlcmF0aW9uPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SUJpbmRpbmdPcGVyYXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSUJJTkRJTkdfT1BFUkFUSU9OID0gMzA7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JQmluZGluZyBPcGVyYXRpb248L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSUJJTkRJTkdfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQgPSBJRUxFTUVOVF9FWFRFTlNJQkxFX0ZFQVRVUkVfQ09VTlQgKyAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuQmluZGluZ0lucHV0IDxlbT5JQmluZGluZyBJbnB1dDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LndzZGwuQmluZGluZ0lucHV0Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SUJpbmRpbmdJbnB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJQklORElOR19JTlBVVCA9IDMxOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUJpbmRpbmcgSW5wdXQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSUJJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVCA9IElFTEVNRU5UX0VYVEVOU0lCTEVfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0IDxlbT5JQmluZGluZyBPdXRwdXQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJQmluZGluZ091dHB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJQklORElOR19PVVRQVVQgPSAzMjsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklCaW5kaW5nIE91dHB1dDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJQklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVCA9IElFTEVNRU5UX0VYVEVOU0lCTEVfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQgPGVtPklCaW5kaW5nIEZhdWx0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJQmluZGluZ0ZhdWx0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElCSU5ESU5HX0ZBVUxUID0gMzM7Ci0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JQmluZGluZyBGYXVsdDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJQklORElOR19GQVVMVF9GRUFUVVJFX0NPVU5UID0gSUVMRU1FTlRfRVhURU5TSUJMRV9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPGVtPklFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSUVYVEVOU0lCSUxJVFlfRUxFTUVOVCA9IDM0OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuRGVmaW5pdGlvbiA8ZW0+SURlZmluaXRpb248L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLkRlZmluaXRpb24KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJRGVmaW5pdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJREVGSU5JVElPTiA9IDM1OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SURlZmluaXRpb248L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSURFRklOSVRJT05fRkVBVFVSRV9DT1VOVCA9IElFTEVNRU5UX0VYVEVOU0lCTEVfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5JbXBvcnQgPGVtPklJbXBvcnQ8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLkltcG9ydAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElJbXBvcnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSUlNUE9SVCA9IDM2OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUltcG9ydDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJSU1QT1JUX0ZFQVRVUkVfQ09VTlQgPSBJQVRUUklCVVRFX0VYVEVOU0lCTEVfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YS51dGlsLkxpc3QgPGVtPklMaXN0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YS51dGlsLkxpc3QKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJTGlzdCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJTElTVCA9IDM3OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUxpc3Q8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSUxJU1RfRkVBVFVSRV9DT1VOVCA9IDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YS51dGlsLk1hcCA8ZW0+SU1hcDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmEudXRpbC5NYXAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJTWFwKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElNQVAgPSAzODsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklNYXA8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSU1BUF9GRUFUVVJFX0NPVU5UID0gMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZhLm5ldC5VUkwgPGVtPklVUkw8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZhLm5ldC5VUkwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJVVJMKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElVUkwgPSAzOTsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklVUkw8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSVVSTF9GRUFUVVJFX0NPVU5UID0gMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnkgPGVtPklFeHRlbnNpb24gUmVnaXN0cnk8L2VtPn0nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnkKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJRXh0ZW5zaW9uUmVnaXN0cnkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSUVYVEVOU0lPTl9SRUdJU1RSWSA9IDQwOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUV4dGVuc2lvbiBSZWdpc3RyeTwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJRVhURU5TSU9OX1JFR0lTVFJZX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuVHlwZXNJbXBsIDxlbT5UeXBlczwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuVHlwZXNJbXBsCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0VHlwZXMoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgVFlQRVMgPSA0MTsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFRZUEVTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBUWVBFU19fRUxFTUVOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVDsKLQotICAvKioKLSAgICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBUWVBFU19fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMgPSBFWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+VHlwZXM8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgVFlQRVNfRkVBVFVSRV9DT1VOVCA9IEVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZhLnV0aWwuSXRlcmF0b3IgPGVtPklJdGVyYXRvcjwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmEudXRpbC5JdGVyYXRvcgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElJdGVyYXRvcigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJSVRFUkFUT1IgPSA0MjsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklJdGVyYXRvcjwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJSVRFUkFUT1JfRkVBVFVSRV9DT1VOVCA9IDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5UeXBlcyA8ZW0+SVR5cGVzPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5UeXBlcwotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElUeXBlcygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBJVFlQRVMgPSA0MzsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklUeXBlczwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJVFlQRVNfRkVBVFVSRV9DT1VOVCA9IDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIDxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+fScgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCA9IDQ0OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCA9IEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UID0gRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQgPSBFWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRSA9IEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+Q2hpbGRyZW48L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19DSElMRFJFTiA9IEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlVua25vd24gRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nIGNsYXNzLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgPSBFWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgPGVtPlhTRCBTY2hlbWEgRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCA9IDQ1OwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCA9IEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgaW50IFhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UID0gRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQgPSBFWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRSA9IEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFOwotCi0gIC8qKgotICAgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnQgQmFzZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRfQkFTRV9VUkkgPSBFWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCArIDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TY2hlbWE8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fU0NIRU1BID0gRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQgKyAxOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCA9IEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMjsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBqYXZhLmxhbmcuT2JqZWN0IDxlbT5JT2JqZWN0PC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YS5sYW5nLk9iamVjdAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElPYmplY3QoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgSU9CSkVDVCA9IDQ5OwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU9iamVjdDwvZW0+JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIGludCBJT0JKRUNUX0ZFQVRVUkVfQ09VTlQgPSAwOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hIDxlbT5JU2NoZW1hPC9lbT59JyBjbGFzcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLnNjaGVtYS5TY2hlbWEKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJU2NoZW1hKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IElTQ0hFTUEgPSA1MDsKLQotICAvKioKLSAgICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTY2hlbWE8L2VtPicgY2xhc3MuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBpbnQgSVNDSEVNQV9GRUFUVVJFX0NPVU5UID0gSUVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UICsgMDsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5RTmFtZTwvZW0+JyBkYXRhIHR5cGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRRTmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBRTkFNRSA9IDUxOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPk9wZXJhdGlvbiBUeXBlPC9lbT4nIGRhdGEgdHlwZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgamF2YXgud3NkbC5PcGVyYXRpb25UeXBlCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0T3BlcmF0aW9uVHlwZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBPUEVSQVRJT05fVFlQRSA9IDUyOwotCi0gIC8qKgotICAgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPkRPTSBFbGVtZW50PC9lbT4nIGRhdGEgdHlwZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLnczYy5kb20uRWxlbWVudAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldERPTUVsZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnQgRE9NX0VMRU1FTlQgPSA1MzsKLQotICAvKioKLSAgICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5FeGNlcHRpb248L2VtPicgZGF0YSB0eXBlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSBqYXZheC53c2RsLldTRExFeGNlcHRpb24KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRXU0RMRXhjZXB0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgaW50IFdTRExfRVhDRVBUSU9OID0gNTQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8ZW0+RE9NIERvY3VtZW50PC9lbT4nIGRhdGEgdHlwZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgb3JnLnczYy5kb20uRG9jdW1lbnQKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRET01Eb2N1bWVudCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIGludCBET01fRE9DVU1FTlQgPSA1NTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQgPGVtPkVsZW1lbnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0V1NETEVsZW1lbnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCA8ZW0+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50I2dldERvY3VtZW50YXRpb25FbGVtZW50KCkKLSAgICogQHNlZSAjZ2V0V1NETEVsZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldFdTRExFbGVtZW50X0RvY3VtZW50YXRpb25FbGVtZW50KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQjZ2V0RWxlbWVudCA8ZW0+RWxlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkVsZW1lbnQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQjZ2V0RWxlbWVudCgpCi0gICAqIEBzZWUgI2dldFdTRExFbGVtZW50KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRXU0RMRWxlbWVudF9FbGVtZW50KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlIDxlbT5Qb3J0IFR5cGU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+UG9ydCBUeXBlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRQb3J0VHlwZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlI2dldFFOYW1lIDxlbT5RTmFtZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlFOYW1lPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlI2dldFFOYW1lKCkKLSAgICogQHNlZSAjZ2V0UG9ydFR5cGUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldFBvcnRUeXBlX1FOYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGUjaXNVbmRlZmluZWQgPGVtPlVuZGVmaW5lZDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlVuZGVmaW5lZDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZSNpc1VuZGVmaW5lZCgpCi0gICAqIEBzZWUgI2dldFBvcnRUeXBlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRQb3J0VHlwZV9VbmRlZmluZWQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlI2dldEVPcGVyYXRpb25zIDxlbT5FT3BlcmF0aW9uczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RU9wZXJhdGlvbnM8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGUjZ2V0RU9wZXJhdGlvbnMoKQotICAgKiBAc2VlICNnZXRQb3J0VHlwZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0UG9ydFR5cGVfRU9wZXJhdGlvbnMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uIDxlbT5PcGVyYXRpb248L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0T3BlcmF0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2dldFN0eWxlIDxlbT5TdHlsZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlN0eWxlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiNnZXRTdHlsZSgpCi0gICAqIEBzZWUgI2dldE9wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0T3BlcmF0aW9uX1N0eWxlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5OYW1lPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiNnZXROYW1lKCkKLSAgICogQHNlZSAjZ2V0T3BlcmF0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRPcGVyYXRpb25fTmFtZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiNpc1VuZGVmaW5lZCA8ZW0+VW5kZWZpbmVkPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VW5kZWZpbmVkPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiNpc1VuZGVmaW5lZCgpCi0gICAqIEBzZWUgI2dldE9wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0T3BlcmF0aW9uX1VuZGVmaW5lZCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiNnZXRFSW5wdXQgPGVtPkVJbnB1dDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPGVtPkVJbnB1dDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb24jZ2V0RUlucHV0KCkKLSAgICogQHNlZSAjZ2V0T3BlcmF0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRPcGVyYXRpb25fRUlucHV0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2dldEVPdXRwdXQgPGVtPkVPdXRwdXQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5FT3V0cHV0PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiNnZXRFT3V0cHV0KCkKLSAgICogQHNlZSAjZ2V0T3BlcmF0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRPcGVyYXRpb25fRU91dHB1dCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2dldEVGYXVsdHMgPGVtPkVGYXVsdHM8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkVGYXVsdHM8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uI2dldEVGYXVsdHMoKQotICAgKiBAc2VlICNnZXRPcGVyYXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldE9wZXJhdGlvbl9FRmF1bHRzKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb24jZ2V0RVBhcmFtZXRlck9yZGVyaW5nIDxlbT5FUGFyYW1ldGVyIE9yZGVyaW5nPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5FUGFyYW1ldGVyIE9yZGVyaW5nPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiNnZXRFUGFyYW1ldGVyT3JkZXJpbmcoKQotICAgKiBAc2VlICNnZXRPcGVyYXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldE9wZXJhdGlvbl9FUGFyYW1ldGVyT3JkZXJpbmcoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSA8ZW0+TWVzc2FnZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5NZXNzYWdlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldE1lc3NhZ2UoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlI2dldFFOYW1lIDxlbT5RTmFtZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlFOYW1lPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UjZ2V0UU5hbWUoKQotICAgKiBAc2VlICNnZXRNZXNzYWdlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRNZXNzYWdlX1FOYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSNpc1VuZGVmaW5lZCA8ZW0+VW5kZWZpbmVkPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VW5kZWZpbmVkPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UjaXNVbmRlZmluZWQoKQotICAgKiBAc2VlICNnZXRNZXNzYWdlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRNZXNzYWdlX1VuZGVmaW5lZCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSNnZXRFUGFydHMgPGVtPkVQYXJ0czwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RVBhcnRzPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UjZ2V0RVBhcnRzKCkKLSAgICogQHNlZSAjZ2V0TWVzc2FnZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0TWVzc2FnZV9FUGFydHMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCA8ZW0+UGFydDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldFBhcnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldE5hbWUgPGVtPk5hbWU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5OYW1lPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQjZ2V0TmFtZSgpCi0gICAqIEBzZWUgI2dldFBhcnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldFBhcnRfTmFtZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQjZ2V0RWxlbWVudE5hbWUgPGVtPkVsZW1lbnQgTmFtZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkVsZW1lbnQgTmFtZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldEVsZW1lbnROYW1lKCkKLSAgICogQHNlZSAjZ2V0UGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0UGFydF9FbGVtZW50TmFtZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQjZ2V0VHlwZU5hbWUgPGVtPlR5cGUgTmFtZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlR5cGUgTmFtZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldFR5cGVOYW1lKCkKLSAgICogQHNlZSAjZ2V0UGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0UGFydF9UeXBlTmFtZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQjZ2V0VHlwZURlZmluaXRpb24gPGVtPlR5cGUgRGVmaW5pdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPlR5cGUgRGVmaW5pdGlvbjwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldFR5cGVEZWZpbml0aW9uKCkKLSAgICogQHNlZSAjZ2V0UGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0UGFydF9UeXBlRGVmaW5pdGlvbigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQjZ2V0RWxlbWVudERlY2xhcmF0aW9uIDxlbT5FbGVtZW50IERlY2xhcmF0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldEVsZW1lbnREZWNsYXJhdGlvbigpCi0gICAqIEBzZWUgI2dldFBhcnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldFBhcnRfRWxlbWVudERlY2xhcmF0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCNnZXRFTWVzc2FnZSA8ZW0+RU1lc3NhZ2U8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FTWVzc2FnZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0I2dldEVNZXNzYWdlKCkKLSAgICogQHNlZSAjZ2V0UGFydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0UGFydF9FTWVzc2FnZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nIDxlbT5CaW5kaW5nPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkJpbmRpbmc8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZwotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0QmluZGluZygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmcjZ2V0UU5hbWUgPGVtPlFOYW1lPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+UU5hbWU8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZyNnZXRRTmFtZSgpCi0gICAqIEBzZWUgI2dldEJpbmRpbmcoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldEJpbmRpbmdfUU5hbWUoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nI2lzVW5kZWZpbmVkIDxlbT5VbmRlZmluZWQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5VbmRlZmluZWQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZyNpc1VuZGVmaW5lZCgpCi0gICAqIEBzZWUgI2dldEJpbmRpbmcoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldEJpbmRpbmdfVW5kZWZpbmVkKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZyNnZXRFUG9ydFR5cGUgPGVtPkVQb3J0IFR5cGU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FUG9ydCBUeXBlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmcjZ2V0RVBvcnRUeXBlKCkKLSAgICogQHNlZSAjZ2V0QmluZGluZygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0QmluZGluZ19FUG9ydFR5cGUoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmcjZ2V0RUJpbmRpbmdPcGVyYXRpb25zIDxlbT5FQmluZGluZyBPcGVyYXRpb25zPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FQmluZGluZyBPcGVyYXRpb25zPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmcjZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCkKLSAgICogQHNlZSAjZ2V0QmluZGluZygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0QmluZGluZ19FQmluZGluZ09wZXJhdGlvbnMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbiA8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0QmluZGluZ09wZXJhdGlvbigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb24jZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbiNnZXROYW1lKCkKLSAgICogQHNlZSAjZ2V0QmluZGluZ09wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0QmluZGluZ09wZXJhdGlvbl9OYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbiNnZXRFT3BlcmF0aW9uIDxlbT5FT3BlcmF0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+RU9wZXJhdGlvbjwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uI2dldEVPcGVyYXRpb24oKQotICAgKiBAc2VlICNnZXRCaW5kaW5nT3BlcmF0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRCaW5kaW5nT3BlcmF0aW9uX0VPcGVyYXRpb24oKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uI2dldEVCaW5kaW5nSW5wdXQgPGVtPkVCaW5kaW5nIElucHV0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8ZW0+RUJpbmRpbmcgSW5wdXQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbiNnZXRFQmluZGluZ0lucHV0KCkKLSAgICogQHNlZSAjZ2V0QmluZGluZ09wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0lucHV0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbiNnZXRFQmluZGluZ091dHB1dCA8ZW0+RUJpbmRpbmcgT3V0cHV0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8ZW0+RUJpbmRpbmcgT3V0cHV0PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb24jZ2V0RUJpbmRpbmdPdXRwdXQoKQotICAgKiBAc2VlICNnZXRCaW5kaW5nT3BlcmF0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nT3V0cHV0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uI2dldEVCaW5kaW5nRmF1bHRzIDxlbT5FQmluZGluZyBGYXVsdHM8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkVCaW5kaW5nIEZhdWx0czwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uI2dldEVCaW5kaW5nRmF1bHRzKCkKLSAgICogQHNlZSAjZ2V0QmluZGluZ09wZXJhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0ZhdWx0cygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlIDxlbT5TZXJ2aWNlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlNlcnZpY2U8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0U2VydmljZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2UjZ2V0UU5hbWUgPGVtPlFOYW1lPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+UU5hbWU8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZSNnZXRRTmFtZSgpCi0gICAqIEBzZWUgI2dldFNlcnZpY2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldFNlcnZpY2VfUU5hbWUoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlI2lzVW5kZWZpbmVkIDxlbT5VbmRlZmluZWQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5VbmRlZmluZWQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZSNpc1VuZGVmaW5lZCgpCi0gICAqIEBzZWUgI2dldFNlcnZpY2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldFNlcnZpY2VfVW5kZWZpbmVkKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlI2dldEVQb3J0cyA8ZW0+RVBvcnRzPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FUG9ydHM8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZSNnZXRFUG9ydHMoKQotICAgKiBAc2VlICNnZXRTZXJ2aWNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRTZXJ2aWNlX0VQb3J0cygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0IDxlbT5Qb3J0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlBvcnQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0UG9ydCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydCNnZXROYW1lKCkKLSAgICogQHNlZSAjZ2V0UG9ydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0UG9ydF9OYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydCNnZXRFQmluZGluZyA8ZW0+RUJpbmRpbmc8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FQmluZGluZzwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0I2dldEVCaW5kaW5nKCkKLSAgICogQHNlZSAjZ2V0UG9ydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0UG9ydF9FQmluZGluZygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCA8ZW0+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCNpc1JlcXVpcmVkIDxlbT5SZXF1aXJlZDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlJlcXVpcmVkPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50I2lzUmVxdWlyZWQoKQotICAgKiBAc2VlICNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfUmVxdWlyZWQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCNnZXRFbGVtZW50VHlwZSA8ZW0+RWxlbWVudCBUeXBlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+RWxlbWVudCBUeXBlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50I2dldEVsZW1lbnRUeXBlKCkKLSAgICogQHNlZSAjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldEV4dGVuc2liaWxpdHlFbGVtZW50X0VsZW1lbnRUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24gPGVtPkRlZmluaXRpb248L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RGVmaW5pdGlvbjwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXREZWZpbml0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRUYXJnZXROYW1lc3BhY2UgPGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5UYXJnZXQgTmFtZXNwYWNlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0VGFyZ2V0TmFtZXNwYWNlKCkKLSAgICogQHNlZSAjZ2V0RGVmaW5pdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0RGVmaW5pdGlvbl9UYXJnZXROYW1lc3BhY2UoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldExvY2F0aW9uIDxlbT5Mb2NhdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkxvY2F0aW9uPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0TG9jYXRpb24oKQotICAgKiBAc2VlICNnZXREZWZpbml0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXREZWZpbml0aW9uX0xvY2F0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRRTmFtZSA8ZW0+UU5hbWU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5RTmFtZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldFFOYW1lKCkKLSAgICogQHNlZSAjZ2V0RGVmaW5pdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0RGVmaW5pdGlvbl9RTmFtZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RW5jb2RpbmcgPGVtPkVuY29kaW5nPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+RW5jb2Rpbmc8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRFbmNvZGluZygpCi0gICAqIEBzZWUgI2dldERlZmluaXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQXR0cmlidXRlIGdldERlZmluaXRpb25fRW5jb2RpbmcoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RUltcG9ydHMgPGVtPkVJbXBvcnRzPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FSW1wb3J0czwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldEVJbXBvcnRzKCkKLSAgICogQHNlZSAjZ2V0RGVmaW5pdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0RGVmaW5pdGlvbl9FSW1wb3J0cygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RVR5cGVzIDxlbT5FVHlwZXM8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5FVHlwZXM8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRFVHlwZXMoKQotICAgKiBAc2VlICNnZXREZWZpbml0aW9uKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXREZWZpbml0aW9uX0VUeXBlcygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRFTWVzc2FnZXMgPGVtPkVNZXNzYWdlczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RU1lc3NhZ2VzPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RU1lc3NhZ2VzKCkKLSAgICogQHNlZSAjZ2V0RGVmaW5pdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0RGVmaW5pdGlvbl9FTWVzc2FnZXMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RVBvcnRUeXBlcyA8ZW0+RVBvcnQgVHlwZXM8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkVQb3J0IFR5cGVzPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RVBvcnRUeXBlcygpCi0gICAqIEBzZWUgI2dldERlZmluaXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldERlZmluaXRpb25fRVBvcnRUeXBlcygpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRFQmluZGluZ3MgPGVtPkVCaW5kaW5nczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RUJpbmRpbmdzPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RUJpbmRpbmdzKCkKLSAgICogQHNlZSAjZ2V0RGVmaW5pdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0RGVmaW5pdGlvbl9FQmluZGluZ3MoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24jZ2V0RVNlcnZpY2VzIDxlbT5FU2VydmljZXM8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkVTZXJ2aWNlczwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldEVTZXJ2aWNlcygpCi0gICAqIEBzZWUgI2dldERlZmluaXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldERlZmluaXRpb25fRVNlcnZpY2VzKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uI2dldEVOYW1lc3BhY2VzIDxlbT5FTmFtZXNwYWNlczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RU5hbWVzcGFjZXM8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiNnZXRFTmFtZXNwYWNlcygpCi0gICAqIEBzZWUgI2dldERlZmluaXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldERlZmluaXRpb25fRU5hbWVzcGFjZXMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0IDxlbT5JbXBvcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SW1wb3J0PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkltcG9ydAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SW1wb3J0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0I2dldE5hbWVzcGFjZVVSSSA8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0I2dldE5hbWVzcGFjZVVSSSgpCi0gICAqIEBzZWUgI2dldEltcG9ydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0SW1wb3J0X05hbWVzcGFjZVVSSSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkltcG9ydCNnZXRMb2NhdGlvblVSSSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TG9jYXRpb24gVVJJPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkltcG9ydCNnZXRMb2NhdGlvblVSSSgpCi0gICAqIEBzZWUgI2dldEltcG9ydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0SW1wb3J0X0xvY2F0aW9uVVJJKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0I2dldEVEZWZpbml0aW9uIDxlbT5FRGVmaW5pdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVEZWZpbml0aW9uPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkltcG9ydCNnZXRFRGVmaW5pdGlvbigpCi0gICAqIEBzZWUgI2dldEltcG9ydCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0SW1wb3J0X0VEZWZpbml0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0I2dldEVTY2hlbWEgPGVtPkVTY2hlbWE8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FU2NoZW1hPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkltcG9ydCNnZXRFU2NoZW1hKCkKLSAgICogQHNlZSAjZ2V0SW1wb3J0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRJbXBvcnRfRVNjaGVtYSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCA8ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkV4dGVuc2libGUgRWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0RXh0ZW5zaWJsZUVsZW1lbnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50I2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMgPGVtPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgICogQHNlZSAjZ2V0RXh0ZW5zaWJsZUVsZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldEV4dGVuc2libGVFbGVtZW50X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW5wdXQgPGVtPklucHV0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklucHV0PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRJbnB1dCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQgPGVtPk91dHB1dDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5PdXRwdXQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRPdXRwdXQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQgPGVtPkZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkZhdWx0PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkZhdWx0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRGYXVsdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQgPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QmluZGluZyBJbnB1dDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldEJpbmRpbmdJbnB1dCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dCNnZXROYW1lIDxlbT5OYW1lPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQjZ2V0TmFtZSgpCi0gICAqIEBzZWUgI2dldEJpbmRpbmdJbnB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0QmluZGluZ0lucHV0X05hbWUoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQjZ2V0RUlucHV0IDxlbT5FSW5wdXQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FSW5wdXQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0I2dldEVJbnB1dCgpCi0gICAqIEBzZWUgI2dldEJpbmRpbmdJbnB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0QmluZGluZ0lucHV0X0VJbnB1dCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0IDxlbT5CaW5kaW5nIE91dHB1dDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5CaW5kaW5nIE91dHB1dDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRCaW5kaW5nT3V0cHV0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ091dHB1dCNnZXROYW1lIDxlbT5OYW1lPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0I2dldE5hbWUoKQotICAgKiBAc2VlICNnZXRCaW5kaW5nT3V0cHV0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRCaW5kaW5nT3V0cHV0X05hbWUoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0I2dldEVPdXRwdXQgPGVtPkVPdXRwdXQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FT3V0cHV0PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQjZ2V0RU91dHB1dCgpCi0gICAqIEBzZWUgI2dldEJpbmRpbmdPdXRwdXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldEJpbmRpbmdPdXRwdXRfRU91dHB1dCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQgPGVtPkJpbmRpbmcgRmF1bHQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QmluZGluZyBGYXVsdDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldEJpbmRpbmdGYXVsdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdCNnZXROYW1lIDxlbT5OYW1lPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQjZ2V0TmFtZSgpCi0gICAqIEBzZWUgI2dldEJpbmRpbmdGYXVsdCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0QmluZGluZ0ZhdWx0X05hbWUoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQjZ2V0RUZhdWx0IDxlbT5FRmF1bHQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FRmF1bHQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0I2dldEVGYXVsdCgpCi0gICAqIEBzZWUgI2dldEJpbmRpbmdGYXVsdCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVSZWZlcmVuY2UgZ2V0QmluZGluZ0ZhdWx0X0VGYXVsdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5OYW1lc3BhY2UgPGVtPk5hbWVzcGFjZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5OYW1lc3BhY2U8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXROYW1lc3BhY2UoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5OYW1lc3BhY2UjZ2V0VVJJIDxlbT5VUkk8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5VUkk8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlI2dldFVSSSgpCi0gICAqIEBzZWUgI2dldE5hbWVzcGFjZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0TmFtZXNwYWNlX1VSSSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk5hbWVzcGFjZSNnZXRQcmVmaXggPGVtPlByZWZpeDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlByZWZpeDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5OYW1lc3BhY2UjZ2V0UHJlZml4KCkKLSAgICogQHNlZSAjZ2V0TmFtZXNwYWNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXROYW1lc3BhY2VfUHJlZml4KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuUG9ydFR5cGUgPGVtPklQb3J0IFR5cGU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SVBvcnQgVHlwZTwvZW0+Jy4KLSAgICogQHNlZSBqYXZheC53c2RsLlBvcnRUeXBlCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLlBvcnRUeXBlIiBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5JQXR0cmlidXRlRXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElQb3J0VHlwZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLk9wZXJhdGlvbiA8ZW0+SU9wZXJhdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JT3BlcmF0aW9uPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuT3BlcmF0aW9uCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLk9wZXJhdGlvbiIgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUVsZW1lbnRFeHRlbnNpYmxlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SU9wZXJhdGlvbigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLklucHV0IDxlbT5JSW5wdXQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUlucHV0PC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuSW5wdXQKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuSW5wdXQiIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLklBdHRyaWJ1dGVFeHRlbnNpYmxlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SUlucHV0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuT3V0cHV0IDxlbT5JT3V0cHV0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklPdXRwdXQ8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5PdXRwdXQKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuT3V0cHV0IiBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5JQXR0cmlidXRlRXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElPdXRwdXQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5GYXVsdCA8ZW0+SUZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklGYXVsdDwvZW0+Jy4KLSAgICogQHNlZSBqYXZheC53c2RsLkZhdWx0Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLkZhdWx0IiBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5JQXR0cmlidXRlRXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElGYXVsdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLk1lc3NhZ2UgPGVtPklNZXNzYWdlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklNZXNzYWdlPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuTWVzc2FnZQotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5NZXNzYWdlIiBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5JRWxlbWVudEV4dGVuc2libGUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRJTWVzc2FnZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLlBhcnQgPGVtPklQYXJ0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklQYXJ0PC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuUGFydAotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5QYXJ0IiBzdXBlclR5cGVzPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5JQXR0cmlidXRlRXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElQYXJ0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuU2VydmljZSA8ZW0+SVNlcnZpY2U8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SVNlcnZpY2U8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5TZXJ2aWNlCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLlNlcnZpY2UiIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLklFbGVtZW50RXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElTZXJ2aWNlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuUG9ydCA8ZW0+SVBvcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SVBvcnQ8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5Qb3J0Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLlBvcnQiIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLklFbGVtZW50RXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElQb3J0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuQmluZGluZyA8ZW0+SUJpbmRpbmc8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUJpbmRpbmc8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5CaW5kaW5nCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLkJpbmRpbmciIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLklFbGVtZW50RXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElCaW5kaW5nKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiA8ZW0+SUJpbmRpbmcgT3BlcmF0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklCaW5kaW5nIE9wZXJhdGlvbjwvZW0+Jy4KLSAgICogQHNlZSBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb24KLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiIgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUVsZW1lbnRFeHRlbnNpYmxlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SUJpbmRpbmdPcGVyYXRpb24oKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQgPGVtPklCaW5kaW5nIElucHV0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklCaW5kaW5nIElucHV0PC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuQmluZGluZ0lucHV0Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLkJpbmRpbmdJbnB1dCIgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUVsZW1lbnRFeHRlbnNpYmxlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SUJpbmRpbmdJbnB1dCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQgPGVtPklCaW5kaW5nIE91dHB1dDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JQmluZGluZyBPdXRwdXQ8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQiIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLklFbGVtZW50RXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElCaW5kaW5nT3V0cHV0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuQmluZGluZ0ZhdWx0IDxlbT5JQmluZGluZyBGYXVsdDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JQmluZGluZyBGYXVsdDwvZW0+Jy4KLSAgICogQHNlZSBqYXZheC53c2RsLkJpbmRpbmdGYXVsdAotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5CaW5kaW5nRmF1bHQiIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLklFbGVtZW50RXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElCaW5kaW5nRmF1bHQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50IDxlbT5JRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5EZWZpbml0aW9uIDxlbT5JRGVmaW5pdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JRGVmaW5pdGlvbjwvZW0+Jy4KLSAgICogQHNlZSBqYXZheC53c2RsLkRlZmluaXRpb24KLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuRGVmaW5pdGlvbiIgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUVsZW1lbnRFeHRlbnNpYmxlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SURlZmluaXRpb24oKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5JbXBvcnQgPGVtPklJbXBvcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUltcG9ydDwvZW0+Jy4KLSAgICogQHNlZSBqYXZheC53c2RsLkltcG9ydAotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5JbXBvcnQiIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLklBdHRyaWJ1dGVFeHRlbnNpYmxlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SUltcG9ydCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZhLnV0aWwuTGlzdCA8ZW0+SUxpc3Q8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUxpc3Q8L2VtPicuCi0gICAqIEBzZWUgamF2YS51dGlsLkxpc3QKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmEudXRpbC5MaXN0IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SUxpc3QoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgamF2YS51dGlsLk1hcCA8ZW0+SU1hcDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JTWFwPC9lbT4nLgotICAgKiBAc2VlIGphdmEudXRpbC5NYXAKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmEudXRpbC5NYXAiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRJTWFwKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmEubmV0LlVSTCA8ZW0+SVVSTDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JVVJMPC9lbT4nLgotICAgKiBAc2VlIGphdmEubmV0LlVSTAotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YS5uZXQuVVJMIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SVVSTCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnkgPGVtPklFeHRlbnNpb24gUmVnaXN0cnk8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUV4dGVuc2lvbiBSZWdpc3RyeTwvZW0+Jy4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnkKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpb25SZWdpc3RyeSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElFeHRlbnNpb25SZWdpc3RyeSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlcyA8ZW0+VHlwZXM8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+VHlwZXM8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXMKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldFR5cGVzKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmEudXRpbC5JdGVyYXRvciA8ZW0+SUl0ZXJhdG9yPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklJdGVyYXRvcjwvZW0+Jy4KLSAgICogQHNlZSBqYXZhLnV0aWwuSXRlcmF0b3IKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmEudXRpbC5JdGVyYXRvciIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElJdGVyYXRvcigpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLlR5cGVzIDxlbT5JVHlwZXM8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SVR5cGVzPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuVHlwZXMKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LndzZGwuVHlwZXMiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRJVHlwZXMoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50IDxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50I2dldENoaWxkcmVuIDxlbT5DaGlsZHJlbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+Q2hpbGRyZW48L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50I2dldENoaWxkcmVuKCkKLSAgICogQHNlZSAjZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRfQ2hpbGRyZW4oKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPGVtPlhTRCBTY2hlbWEgRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlhTRCBTY2hlbWEgRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50I2dldERvY3VtZW50QmFzZVVSSSA8ZW0+RG9jdW1lbnQgQmFzZSBVUkk8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Eb2N1bWVudCBCYXNlIFVSSTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCNnZXREb2N1bWVudEJhc2VVUkkoKQotICAgKiBAc2VlICNnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVBdHRyaWJ1dGUgZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRfRG9jdW1lbnRCYXNlVVJJKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQjZ2V0U2NoZW1hIDxlbT5TY2hlbWE8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5TY2hlbWE8L2VtPicuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQjZ2V0U2NoZW1hKCkKLSAgICogQHNlZSAjZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFUmVmZXJlbmNlIGdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50X1NjaGVtYSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlIDxlbT5NZXNzYWdlIFJlZmVyZW5jZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5NZXNzYWdlIFJlZmVyZW5jZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVDbGFzcyBnZXRNZXNzYWdlUmVmZXJlbmNlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZVJlZmVyZW5jZSNnZXROYW1lIDxlbT5OYW1lPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZTwvZW0+Jy4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlI2dldE5hbWUoKQotICAgKiBAc2VlICNnZXRNZXNzYWdlUmVmZXJlbmNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUF0dHJpYnV0ZSBnZXRNZXNzYWdlUmVmZXJlbmNlX05hbWUoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlI2dldEVNZXNzYWdlIDxlbT5FTWVzc2FnZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVNZXNzYWdlPC9lbT4nLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2UjZ2V0RU1lc3NhZ2UoKQotICAgKiBAc2VlICNnZXRNZXNzYWdlUmVmZXJlbmNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRVJlZmVyZW5jZSBnZXRNZXNzYWdlUmVmZXJlbmNlX0VNZXNzYWdlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FbGVtZW50RXh0ZW5zaWJsZSA8ZW0+SUVsZW1lbnQgRXh0ZW5zaWJsZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JRWxlbWVudCBFeHRlbnNpYmxlPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FbGVtZW50RXh0ZW5zaWJsZQotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0iamF2YXgud3NkbC5leHRlbnNpb25zLkVsZW1lbnRFeHRlbnNpYmxlIgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SUVsZW1lbnRFeHRlbnNpYmxlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5BdHRyaWJ1dGVFeHRlbnNpYmxlIDxlbT5JQXR0cmlidXRlIEV4dGVuc2libGU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUF0dHJpYnV0ZSBFeHRlbnNpYmxlPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5BdHRyaWJ1dGVFeHRlbnNpYmxlCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuQXR0cmlidXRlRXh0ZW5zaWJsZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRUNsYXNzIGdldElBdHRyaWJ1dGVFeHRlbnNpYmxlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIGphdmEubGFuZy5PYmplY3QgPGVtPklPYmplY3Q8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SU9iamVjdDwvZW0+Jy4KLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0Ci0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZhLmxhbmcuT2JqZWN0IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SU9iamVjdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYSA8ZW0+SVNjaGVtYTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JU2NoZW1hPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYSIgc3VwZXJUeXBlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwuSUV4dGVuc2liaWxpdHlFbGVtZW50IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFQ2xhc3MgZ2V0SVNjaGVtYSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICd7QGxpbmsgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSA8ZW0+UU5hbWU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAnPGVtPlFOYW1lPC9lbT4nLgotICAgKiBAc2VlIGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVEYXRhVHlwZSBnZXRRTmFtZSgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICd7QGxpbmsgamF2YXgud3NkbC5PcGVyYXRpb25UeXBlIDxlbT5PcGVyYXRpb24gVHlwZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8ZW0+T3BlcmF0aW9uIFR5cGU8L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5PcGVyYXRpb25UeXBlCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLk9wZXJhdGlvblR5cGUiCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVEYXRhVHlwZSBnZXRPcGVyYXRpb25UeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJ3tAbGluayBvcmcudzNjLmRvbS5FbGVtZW50IDxlbT5ET00gRWxlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8ZW0+RE9NIEVsZW1lbnQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLnczYy5kb20uRWxlbWVudAotICAgKiBAbW9kZWwgaW5zdGFuY2VDbGFzcz0ib3JnLnczYy5kb20uRWxlbWVudCIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgRURhdGFUeXBlIGdldERPTUVsZW1lbnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAne0BsaW5rIGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbiA8ZW0+RXhjZXB0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxlbT5FeGNlcHRpb248L2VtPicuCi0gICAqIEBzZWUgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uCi0gICAqIEBtb2RlbCBpbnN0YW5jZUNsYXNzPSJqYXZheC53c2RsLldTRExFeGNlcHRpb24iCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIEVEYXRhVHlwZSBnZXRXU0RMRXhjZXB0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJ3tAbGluayBvcmcudzNjLmRvbS5Eb2N1bWVudCA8ZW0+RE9NIERvY3VtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxlbT5ET00gRG9jdW1lbnQ8L2VtPicuCi0gICAqIEBzZWUgb3JnLnczYy5kb20uRG9jdW1lbnQKLSAgICogQG1vZGVsIGluc3RhbmNlQ2xhc3M9Im9yZy53M2MuZG9tLkRvY3VtZW50IgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBFRGF0YVR5cGUgZ2V0RE9NRG9jdW1lbnQoKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgV1NETEZhY3RvcnkgZ2V0V1NETEZhY3RvcnkoKTsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogRGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudAotICAgKiA8dWw+Ci0gICAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4KLSAgICogICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4KLSAgICogICA8bGk+ZWFjaCBlbnVtLDwvbGk+Ci0gICAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+Ci0gICAqIDwvdWw+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBpbnRlcmZhY2UgTGl0ZXJhbHMKLSAgewotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExFbGVtZW50SW1wbCA8ZW0+RWxlbWVudDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETEVsZW1lbnRJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRXU0RMRWxlbWVudCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBXU0RMX0VMRU1FTlQgPSBlSU5TVEFOQ0UuZ2V0V1NETEVsZW1lbnQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgV1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQgPSBlSU5TVEFOQ0UuZ2V0V1NETEVsZW1lbnRfRG9jdW1lbnRhdGlvbkVsZW1lbnQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFdTRExfRUxFTUVOVF9fRUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRXU0RMRWxlbWVudF9FbGVtZW50KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5Qb3J0VHlwZUltcGwgPGVtPlBvcnQgVHlwZTwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuUG9ydFR5cGVJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRQb3J0VHlwZSgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBQT1JUX1RZUEUgPSBlSU5TVEFOQ0UuZ2V0UG9ydFR5cGUoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBQT1JUX1RZUEVfX1FOQU1FID0gZUlOU1RBTkNFLmdldFBvcnRUeXBlX1FOYW1lKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFBPUlRfVFlQRV9fVU5ERUZJTkVEID0gZUlOU1RBTkNFLmdldFBvcnRUeXBlX1VuZGVmaW5lZCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgUE9SVF9UWVBFX19FT1BFUkFUSU9OUyA9IGVJTlNUQU5DRS5nZXRQb3J0VHlwZV9FT3BlcmF0aW9ucygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuT3BlcmF0aW9uSW1wbCA8ZW0+T3BlcmF0aW9uPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5PcGVyYXRpb25JbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRPcGVyYXRpb24oKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgT1BFUkFUSU9OID0gZUlOU1RBTkNFLmdldE9wZXJhdGlvbigpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlN0eWxlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIE9QRVJBVElPTl9fU1RZTEUgPSBlSU5TVEFOQ0UuZ2V0T3BlcmF0aW9uX1N0eWxlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBPUEVSQVRJT05fX05BTUUgPSBlSU5TVEFOQ0UuZ2V0T3BlcmF0aW9uX05hbWUoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgT1BFUkFUSU9OX19VTkRFRklORUQgPSBlSU5TVEFOQ0UuZ2V0T3BlcmF0aW9uX1VuZGVmaW5lZCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBPUEVSQVRJT05fX0VJTlBVVCA9IGVJTlNUQU5DRS5nZXRPcGVyYXRpb25fRUlucHV0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBPUEVSQVRJT05fX0VPVVRQVVQgPSBlSU5TVEFOQ0UuZ2V0T3BlcmF0aW9uX0VPdXRwdXQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FRmF1bHRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgT1BFUkFUSU9OX19FRkFVTFRTID0gZUlOU1RBTkNFLmdldE9wZXJhdGlvbl9FRmF1bHRzKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBhcmFtZXRlciBPcmRlcmluZzwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIE9QRVJBVElPTl9fRVBBUkFNRVRFUl9PUkRFUklORyA9IGVJTlNUQU5DRS5nZXRPcGVyYXRpb25fRVBhcmFtZXRlck9yZGVyaW5nKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5NZXNzYWdlSW1wbCA8ZW0+TWVzc2FnZTwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuTWVzc2FnZUltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldE1lc3NhZ2UoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgTUVTU0FHRSA9IGVJTlNUQU5DRS5nZXRNZXNzYWdlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgTUVTU0FHRV9fUU5BTUUgPSBlSU5TVEFOQ0UuZ2V0TWVzc2FnZV9RTmFtZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBNRVNTQUdFX19VTkRFRklORUQgPSBlSU5TVEFOQ0UuZ2V0TWVzc2FnZV9VbmRlZmluZWQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUGFydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBNRVNTQUdFX19FUEFSVFMgPSBlSU5TVEFOQ0UuZ2V0TWVzc2FnZV9FUGFydHMoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlBhcnRJbXBsIDxlbT5QYXJ0PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5QYXJ0SW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0UGFydCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBQQVJUID0gZUlOU1RBTkNFLmdldFBhcnQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFBBUlRfX05BTUUgPSBlSU5TVEFOQ0UuZ2V0UGFydF9OYW1lKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFBBUlRfX0VMRU1FTlRfTkFNRSA9IGVJTlNUQU5DRS5nZXRQYXJ0X0VsZW1lbnROYW1lKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHlwZSBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFBBUlRfX1RZUEVfTkFNRSA9IGVJTlNUQU5DRS5nZXRQYXJ0X1R5cGVOYW1lKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHlwZSBEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIFBBUlRfX1RZUEVfREVGSU5JVElPTiA9IGVJTlNUQU5DRS5nZXRQYXJ0X1R5cGVEZWZpbml0aW9uKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBEZWNsYXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBQQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OID0gZUlOU1RBTkNFLmdldFBhcnRfRWxlbWVudERlY2xhcmF0aW9uKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgUEFSVF9fRU1FU1NBR0UgPSBlSU5TVEFOQ0UuZ2V0UGFydF9FTWVzc2FnZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ0ltcGwgPGVtPkJpbmRpbmc8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRCaW5kaW5nKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIEJJTkRJTkcgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIEJJTkRJTkdfX1FOQU1FID0gZUlOU1RBTkNFLmdldEJpbmRpbmdfUU5hbWUoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgQklORElOR19fVU5ERUZJTkVEID0gZUlOU1RBTkNFLmdldEJpbmRpbmdfVW5kZWZpbmVkKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBCSU5ESU5HX19FUE9SVF9UWVBFID0gZUlOU1RBTkNFLmdldEJpbmRpbmdfRVBvcnRUeXBlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgT3BlcmF0aW9uczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIEJJTkRJTkdfX0VCSU5ESU5HX09QRVJBVElPTlMgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ19FQmluZGluZ09wZXJhdGlvbnMoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdPcGVyYXRpb25JbXBsIDxlbT5CaW5kaW5nIE9wZXJhdGlvbjwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ09wZXJhdGlvbkltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldEJpbmRpbmdPcGVyYXRpb24oKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgQklORElOR19PUEVSQVRJT04gPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ09wZXJhdGlvbigpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgQklORElOR19PUEVSQVRJT05fX05BTUUgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ09wZXJhdGlvbl9OYW1lKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBCSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTiA9IGVJTlNUQU5DRS5nZXRCaW5kaW5nT3BlcmF0aW9uX0VPcGVyYXRpb24oKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0lucHV0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgT3V0cHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIEJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19PVVRQVVQgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ091dHB1dCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIEJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFMgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0ZhdWx0cygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuU2VydmljZUltcGwgPGVtPlNlcnZpY2U8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlNlcnZpY2VJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRTZXJ2aWNlKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIFNFUlZJQ0UgPSBlSU5TVEFOQ0UuZ2V0U2VydmljZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFNFUlZJQ0VfX1FOQU1FID0gZUlOU1RBTkNFLmdldFNlcnZpY2VfUU5hbWUoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgU0VSVklDRV9fVU5ERUZJTkVEID0gZUlOU1RBTkNFLmdldFNlcnZpY2VfVW5kZWZpbmVkKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBvcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgU0VSVklDRV9fRVBPUlRTID0gZUlOU1RBTkNFLmdldFNlcnZpY2VfRVBvcnRzKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5Qb3J0SW1wbCA8ZW0+UG9ydDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuUG9ydEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldFBvcnQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgUE9SVCA9IGVJTlNUQU5DRS5nZXRQb3J0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBQT1JUX19OQU1FID0gZUlOU1RBTkNFLmdldFBvcnRfTmFtZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIFBPUlRfX0VCSU5ESU5HID0gZUlOU1RBTkNFLmdldFBvcnRfRUJpbmRpbmcoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCA8ZW0+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmlsaXR5RWxlbWVudEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldEV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIEVYVEVOU0lCSUxJVFlfRUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIEVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQgPSBlSU5TVEFOQ0UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfUmVxdWlyZWQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEUgPSBlSU5TVEFOQ0UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfRWxlbWVudFR5cGUoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsIDxlbT5EZWZpbml0aW9uPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5EZWZpbml0aW9uSW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0RGVmaW5pdGlvbigpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBERUZJTklUSU9OID0gZUlOU1RBTkNFLmdldERlZmluaXRpb24oKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgTmFtZXNwYWNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIERFRklOSVRJT05fX1RBUkdFVF9OQU1FU1BBQ0UgPSBlSU5TVEFOQ0UuZ2V0RGVmaW5pdGlvbl9UYXJnZXROYW1lc3BhY2UoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbjwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBERUZJTklUSU9OX19MT0NBVElPTiA9IGVJTlNUQU5DRS5nZXREZWZpbml0aW9uX0xvY2F0aW9uKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgREVGSU5JVElPTl9fUU5BTUUgPSBlSU5TVEFOQ0UuZ2V0RGVmaW5pdGlvbl9RTmFtZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVuY29kaW5nPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIERFRklOSVRJT05fX0VOQ09ESU5HID0gZUlOU1RBTkNFLmdldERlZmluaXRpb25fRW5jb2RpbmcoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FSW1wb3J0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIERFRklOSVRJT05fX0VJTVBPUlRTID0gZUlOU1RBTkNFLmdldERlZmluaXRpb25fRUltcG9ydHMoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgREVGSU5JVElPTl9fRVRZUEVTID0gZUlOU1RBTkNFLmdldERlZmluaXRpb25fRVR5cGVzKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgREVGSU5JVElPTl9fRU1FU1NBR0VTID0gZUlOU1RBTkNFLmdldERlZmluaXRpb25fRU1lc3NhZ2VzKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBERUZJTklUSU9OX19FUE9SVF9UWVBFUyA9IGVJTlNUQU5DRS5nZXREZWZpbml0aW9uX0VQb3J0VHlwZXMoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZ3M8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBERUZJTklUSU9OX19FQklORElOR1MgPSBlSU5TVEFOQ0UuZ2V0RGVmaW5pdGlvbl9FQmluZGluZ3MoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FU2VydmljZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBERUZJTklUSU9OX19FU0VSVklDRVMgPSBlSU5TVEFOQ0UuZ2V0RGVmaW5pdGlvbl9FU2VydmljZXMoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTmFtZXNwYWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIERFRklOSVRJT05fX0VOQU1FU1BBQ0VTID0gZUlOU1RBTkNFLmdldERlZmluaXRpb25fRU5hbWVzcGFjZXMoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkltcG9ydEltcGwgPGVtPkltcG9ydDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuSW1wb3J0SW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SW1wb3J0KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElNUE9SVCA9IGVJTlNUQU5DRS5nZXRJbXBvcnQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIElNUE9SVF9fTkFNRVNQQUNFX1VSSSA9IGVJTlNUQU5DRS5nZXRJbXBvcnRfTmFtZXNwYWNlVVJJKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIElNUE9SVF9fTE9DQVRJT05fVVJJID0gZUlOU1RBTkNFLmdldEltcG9ydF9Mb2NhdGlvblVSSSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFUmVmZXJlbmNlIElNUE9SVF9fRURFRklOSVRJT04gPSBlSU5TVEFOQ0UuZ2V0SW1wb3J0X0VEZWZpbml0aW9uKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVNjaGVtYTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBJTVBPUlRfX0VTQ0hFTUEgPSBlSU5TVEFOQ0UuZ2V0SW1wb3J0X0VTY2hlbWEoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkV4dGVuc2libGVFbGVtZW50SW1wbCA8ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmxlRWxlbWVudEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldEV4dGVuc2libGVFbGVtZW50KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIEVYVEVOU0lCTEVfRUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRFeHRlbnNpYmxlRWxlbWVudCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyA9IGVJTlNUQU5DRS5nZXRFeHRlbnNpYmxlRWxlbWVudF9FRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5JbnB1dEltcGwgPGVtPklucHV0PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5JbnB1dEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElucHV0KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElOUFVUID0gZUlOU1RBTkNFLmdldElucHV0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5PdXRwdXRJbXBsIDxlbT5PdXRwdXQ8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk91dHB1dEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldE91dHB1dCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBPVVRQVVQgPSBlSU5TVEFOQ0UuZ2V0T3V0cHV0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5GYXVsdEltcGwgPGVtPkZhdWx0PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5GYXVsdEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldEZhdWx0KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIEZBVUxUID0gZUlOU1RBTkNFLmdldEZhdWx0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nSW5wdXRJbXBsIDxlbT5CaW5kaW5nIElucHV0PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nSW5wdXRJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRCaW5kaW5nSW5wdXQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgQklORElOR19JTlBVVCA9IGVJTlNUQU5DRS5nZXRCaW5kaW5nSW5wdXQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIEJJTkRJTkdfSU5QVVRfX05BTUUgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ0lucHV0X05hbWUoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgQklORElOR19JTlBVVF9fRUlOUFVUID0gZUlOU1RBTkNFLmdldEJpbmRpbmdJbnB1dF9FSW5wdXQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdPdXRwdXRJbXBsIDxlbT5CaW5kaW5nIE91dHB1dDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ091dHB1dEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldEJpbmRpbmdPdXRwdXQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgQklORElOR19PVVRQVVQgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ091dHB1dCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgQklORElOR19PVVRQVVRfX05BTUUgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ091dHB1dF9OYW1lKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBCSU5ESU5HX09VVFBVVF9fRU9VVFBVVCA9IGVJTlNUQU5DRS5nZXRCaW5kaW5nT3V0cHV0X0VPdXRwdXQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdGYXVsdEltcGwgPGVtPkJpbmRpbmcgRmF1bHQ8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdGYXVsdEltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldEJpbmRpbmdGYXVsdCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBCSU5ESU5HX0ZBVUxUID0gZUlOU1RBTkNFLmdldEJpbmRpbmdGYXVsdCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgQklORElOR19GQVVMVF9fTkFNRSA9IGVJTlNUQU5DRS5nZXRCaW5kaW5nRmF1bHRfTmFtZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVGYXVsdDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRVJlZmVyZW5jZSBCSU5ESU5HX0ZBVUxUX19FRkFVTFQgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ0ZhdWx0X0VGYXVsdCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuTmFtZXNwYWNlSW1wbCA8ZW0+TmFtZXNwYWNlPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5OYW1lc3BhY2VJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXROYW1lc3BhY2UoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgTkFNRVNQQUNFID0gZUlOU1RBTkNFLmdldE5hbWVzcGFjZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUF0dHJpYnV0ZSBOQU1FU1BBQ0VfX1VSSSA9IGVJTlNUQU5DRS5nZXROYW1lc3BhY2VfVVJJKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UHJlZml4PC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIE5BTUVTUEFDRV9fUFJFRklYID0gZUlOU1RBTkNFLmdldE5hbWVzcGFjZV9QcmVmaXgoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLlBvcnRUeXBlIDxlbT5JUG9ydCBUeXBlPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5Qb3J0VHlwZQotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SVBvcnRUeXBlKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElQT1JUX1RZUEUgPSBlSU5TVEFOQ0UuZ2V0SVBvcnRUeXBlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5PcGVyYXRpb24gPGVtPklPcGVyYXRpb248L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLk9wZXJhdGlvbgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SU9wZXJhdGlvbigpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJT1BFUkFUSU9OID0gZUlOU1RBTkNFLmdldElPcGVyYXRpb24oKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLklucHV0IDxlbT5JSW5wdXQ8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLklucHV0Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJSW5wdXQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSUlOUFVUID0gZUlOU1RBTkNFLmdldElJbnB1dCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuT3V0cHV0IDxlbT5JT3V0cHV0PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5PdXRwdXQKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElPdXRwdXQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSU9VVFBVVCA9IGVJTlNUQU5DRS5nZXRJT3V0cHV0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5GYXVsdCA8ZW0+SUZhdWx0PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5GYXVsdAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SUZhdWx0KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElGQVVMVCA9IGVJTlNUQU5DRS5nZXRJRmF1bHQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLk1lc3NhZ2UgPGVtPklNZXNzYWdlPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5NZXNzYWdlCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJTWVzc2FnZSgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJTUVTU0FHRSA9IGVJTlNUQU5DRS5nZXRJTWVzc2FnZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuUGFydCA8ZW0+SVBhcnQ8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLlBhcnQKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElQYXJ0KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElQQVJUID0gZUlOU1RBTkNFLmdldElQYXJ0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5TZXJ2aWNlIDxlbT5JU2VydmljZTwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuU2VydmljZQotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SVNlcnZpY2UoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSVNFUlZJQ0UgPSBlSU5TVEFOQ0UuZ2V0SVNlcnZpY2UoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLlBvcnQgPGVtPklQb3J0PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5Qb3J0Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJUG9ydCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJUE9SVCA9IGVJTlNUQU5DRS5nZXRJUG9ydCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuQmluZGluZyA8ZW0+SUJpbmRpbmc8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLkJpbmRpbmcKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElCaW5kaW5nKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElCSU5ESU5HID0gZUlOU1RBTkNFLmdldElCaW5kaW5nKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uIDxlbT5JQmluZGluZyBPcGVyYXRpb248L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb24KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElCaW5kaW5nT3BlcmF0aW9uKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElCSU5ESU5HX09QRVJBVElPTiA9IGVJTlNUQU5DRS5nZXRJQmluZGluZ09wZXJhdGlvbigpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuQmluZGluZ0lucHV0IDxlbT5JQmluZGluZyBJbnB1dDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuQmluZGluZ0lucHV0Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJQmluZGluZ0lucHV0KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElCSU5ESU5HX0lOUFVUID0gZUlOU1RBTkNFLmdldElCaW5kaW5nSW5wdXQoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQgPGVtPklCaW5kaW5nIE91dHB1dDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuQmluZGluZ091dHB1dAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SUJpbmRpbmdPdXRwdXQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSUJJTkRJTkdfT1VUUFVUID0gZUlOU1RBTkNFLmdldElCaW5kaW5nT3V0cHV0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQgPGVtPklCaW5kaW5nIEZhdWx0PC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElCaW5kaW5nRmF1bHQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSUJJTkRJTkdfRkFVTFQgPSBlSU5TVEFOQ0UuZ2V0SUJpbmRpbmdGYXVsdCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCA8ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SUV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElFWFRFTlNJQklMSVRZX0VMRU1FTlQgPSBlSU5TVEFOQ0UuZ2V0SUV4dGVuc2liaWxpdHlFbGVtZW50KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5EZWZpbml0aW9uIDxlbT5JRGVmaW5pdGlvbjwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuRGVmaW5pdGlvbgotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SURlZmluaXRpb24oKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSURFRklOSVRJT04gPSBlSU5TVEFOQ0UuZ2V0SURlZmluaXRpb24oKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLkltcG9ydCA8ZW0+SUltcG9ydDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuSW1wb3J0Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJSW1wb3J0KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElJTVBPUlQgPSBlSU5TVEFOQ0UuZ2V0SUltcG9ydCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmEudXRpbC5MaXN0IDxlbT5JTGlzdDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmEudXRpbC5MaXN0Ci0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJTGlzdCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJTElTVCA9IGVJTlNUQU5DRS5nZXRJTGlzdCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmEudXRpbC5NYXAgPGVtPklNYXA8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZhLnV0aWwuTWFwCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJTWFwKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIElNQVAgPSBlSU5TVEFOQ0UuZ2V0SU1hcCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmEubmV0LlVSTCA8ZW0+SVVSTDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmEubmV0LlVSTAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SVVSTCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJVVJMID0gZUlOU1RBTkNFLmdldElVUkwoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnkgPGVtPklFeHRlbnNpb24gUmVnaXN0cnk8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnkKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElFeHRlbnNpb25SZWdpc3RyeSgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJRVhURU5TSU9OX1JFR0lTVFJZID0gZUlOU1RBTkNFLmdldElFeHRlbnNpb25SZWdpc3RyeSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuVHlwZXNJbXBsIDxlbT5UeXBlczwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuVHlwZXNJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRUeXBlcygpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBUWVBFUyA9IGVJTlNUQU5DRS5nZXRUeXBlcygpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmEudXRpbC5JdGVyYXRvciA8ZW0+SUl0ZXJhdG9yPC9lbT59JyBjbGFzcy4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YS51dGlsLkl0ZXJhdG9yCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRJSXRlcmF0b3IoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSUlURVJBVE9SID0gZUlOU1RBTkNFLmdldElJdGVyYXRvcigpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuVHlwZXMgPGVtPklUeXBlczwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LndzZGwuVHlwZXMKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElUeXBlcygpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJVFlQRVMgPSBlSU5TVEFOQ0UuZ2V0SVR5cGVzKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIDxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRUNsYXNzIFVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UID0gZUlOU1RBTkNFLmdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkNoaWxkcmVuPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOID0gZUlOU1RBTkNFLmdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudF9DaGlsZHJlbigpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIDxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50IEJhc2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQXR0cmlidXRlIFhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVF9CQVNFX1VSSSA9IGVJTlNUQU5DRS5nZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudF9Eb2N1bWVudEJhc2VVUkkoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5TY2hlbWE8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQSA9IGVJTlNUQU5DRS5nZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudF9TY2hlbWEoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk1lc3NhZ2VSZWZlcmVuY2VJbXBsIDxlbT5NZXNzYWdlIFJlZmVyZW5jZTwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuTWVzc2FnZVJlZmVyZW5jZUltcGwKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldE1lc3NhZ2VSZWZlcmVuY2UoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgTUVTU0FHRV9SRUZFUkVOQ0UgPSBlSU5TVEFOQ0UuZ2V0TWVzc2FnZVJlZmVyZW5jZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVBdHRyaWJ1dGUgTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUUgPSBlSU5TVEFOQ0UuZ2V0TWVzc2FnZVJlZmVyZW5jZV9OYW1lKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVSZWZlcmVuY2UgTUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFID0gZUlOU1RBTkNFLmdldE1lc3NhZ2VSZWZlcmVuY2VfRU1lc3NhZ2UoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuRWxlbWVudEV4dGVuc2libGUgPGVtPklFbGVtZW50IEV4dGVuc2libGU8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRWxlbWVudEV4dGVuc2libGUKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElFbGVtZW50RXh0ZW5zaWJsZSgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJRUxFTUVOVF9FWFRFTlNJQkxFID0gZUlOU1RBTkNFLmdldElFbGVtZW50RXh0ZW5zaWJsZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5BdHRyaWJ1dGVFeHRlbnNpYmxlIDxlbT5JQXR0cmlidXRlIEV4dGVuc2libGU8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuQXR0cmlidXRlRXh0ZW5zaWJsZQotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SUF0dHJpYnV0ZUV4dGVuc2libGUoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSUFUVFJJQlVURV9FWFRFTlNJQkxFID0gZUlOU1RBTkNFLmdldElBdHRyaWJ1dGVFeHRlbnNpYmxlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YS5sYW5nLk9iamVjdCA8ZW0+SU9iamVjdDwvZW0+fScgY2xhc3MuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmEubGFuZy5PYmplY3QKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldElPYmplY3QoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFQ2xhc3MgSU9CSkVDVCA9IGVJTlNUQU5DRS5nZXRJT2JqZWN0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLnNjaGVtYS5TY2hlbWEgPGVtPklTY2hlbWE8L2VtPn0nIGNsYXNzLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYQotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0SVNjaGVtYSgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVDbGFzcyBJU0NIRU1BID0gZUlOU1RBTkNFLmdldElTY2hlbWEoKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT5RTmFtZTwvZW0+JyBkYXRhIHR5cGUuCi0gICAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICAgKiBAc2VlIGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldFFOYW1lKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRURhdGFUeXBlIFFOQU1FID0gZUlOU1RBTkNFLmdldFFOYW1lKCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+T3BlcmF0aW9uIFR5cGU8L2VtPicgZGF0YSB0eXBlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBqYXZheC53c2RsLk9wZXJhdGlvblR5cGUKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuV1NETFBhY2thZ2VJbXBsI2dldE9wZXJhdGlvblR5cGUoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFRGF0YVR5cGUgT1BFUkFUSU9OX1RZUEUgPSBlSU5TVEFOQ0UuZ2V0T3BlcmF0aW9uVHlwZSgpOwotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPkRPTSBFbGVtZW50PC9lbT4nIGRhdGEgdHlwZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgb3JnLnczYy5kb20uRWxlbWVudAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0RE9NRWxlbWVudCgpCi0gICAgICogQGdlbmVyYXRlZAotICAgICAqLwotICAgIEVEYXRhVHlwZSBET01fRUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRET01FbGVtZW50KCk7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+RXhjZXB0aW9uPC9lbT4nIGRhdGEgdHlwZS4KLSAgICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgICAqIEBzZWUgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExQYWNrYWdlSW1wbCNnZXRXU0RMRXhjZXB0aW9uKCkKLSAgICAgKiBAZ2VuZXJhdGVkCi0gICAgICovCi0gICAgRURhdGFUeXBlIFdTRExfRVhDRVBUSU9OID0gZUlOU1RBTkNFLmdldFdTRExFeGNlcHRpb24oKTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT5ET00gRG9jdW1lbnQ8L2VtPicgZGF0YSB0eXBlLgotICAgICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAgICogQHNlZSBvcmcudzNjLmRvbS5Eb2N1bWVudAotICAgICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGwjZ2V0RE9NRG9jdW1lbnQoKQotICAgICAqIEBnZW5lcmF0ZWQKLSAgICAgKi8KLSAgICBFRGF0YVR5cGUgRE9NX0RPQ1VNRU5UID0gZUlOU1RBTkNFLmdldERPTURvY3VtZW50KCk7Ci0KLSAgfQotCi19IC8vV1NETFBhY2thZ2UKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZjc2NTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsOwotCi0KLWltcG9ydCBqYXZheC53c2RsLmZhY3RvcnkuV1NETEZhY3Rvcnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLkVNRlBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmV4dGVuc2liaWxpdHkuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmV4dGVuc2liaWxpdHkuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnlSZWFkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC53c2RsNGouV1NETEZhY3RvcnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnk7Ci0KLQotLyoqCi0gKiBUaGUgPGI+UGx1Z2luPC9iPiBmb3IgdGhlIG1vZGVsLgotICogVGhlIFdTREwgbW9kZWwgbmVlZHMgdG8gYmUgYWJsZSB0byBydW4gd2l0aGluIGFuIEVjbGlwc2Ugd29ya2JlbmNoLAotICogd2l0aGluIGEgaGVhZGxlc3MgRWNsaXBzZSB3b3Jrc3BhY2UsIG9yIGp1c3Qgc3RhbmQtYWxvbmUgYXMgcGFydCAKLSAqIG9mIHNvbWUgb3RoZXIgYXBwbGljYXRpb24uCi0gKiBUbyBzdXBwb3J0IHRoaXMsIGFsbCBhY2Nlc3MgaXMgZGlyZWN0ZWQgdG8gdGhlIHN0YXRpYyBtZXRob2RzLAotICogd2hpY2ggY2FuIHJlZGlyZWN0IHRoZSBzZXJ2aWNlIGFzIGFwcG9wcmlhdGUgdG8gdGhlIHJ1bnRpbWUuCi0gKiBEdXJpbmcgc3RhbmQtYWxvbmUgaW52b2NhdGlvbiBubyBwbHVnaW4gaW5pdGlhbGl6YXRpb24gdGFrZXMgcGxhY2UuCi0gKiBJbiB0aGlzIGNhc2UgeW91IHdpbGwgbmVlZCB0aGUgcmVzb3VyY2VzIGphciBvbiB0aGUgY2xhc3MgcGF0aC4KLSAqIEBzZWUgI2dldEJhc2VVUkwKLSAqIDxwPgotICogPGI+Tm90ZTo8L2I+IFRoaXMgY2xhc3MvaW50ZXJmYWNlIGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8KLSAqIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjawotICogZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4KLSAqIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuCi0gKiA8L3A+Ci0gKiBAc2luY2UgMS4wCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBXU0RMUGx1Z2luIGV4dGVuZHMgRU1GUGx1Z2luCi17Ci0gIC8qKgotICAgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwbHVnaW4uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFdTRExQbHVnaW4gSU5TVEFOQ0UgPSBuZXcgV1NETFBsdWdpbigpOwotCi0gIC8qKgotICAgKiBUaGUgb25lIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCi0gICAqLwotICBzdGF0aWMgV1NETFBsdWdpbkltcGxlbWVudGF0aW9uIHBsdWdpbjsKLQotICBwcml2YXRlIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5SW1wbCBleHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTsKLQotICAvKioKLSAgICogQ3JlYXRlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlLgotICAgKi8KLSAgcHJpdmF0ZSBXU0RMUGx1Z2luKCkKLSAgewotICAgIHN1cGVyKG5ldyBSZXNvdXJjZUxvY2F0b3IgW117fSk7Ci0gIH0KLQotICAvKgotICAgKiBKYXZhZG9jIGNvcGllZCBmcm9tIGJhc2UgY2xhc3MuCi0gICAqLwotICBwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFBsdWdpblJlc291cmNlTG9jYXRvcigpCi0gIHsKLSAgICByZXR1cm4gcGx1Z2luOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgRWNsaXBzZSBwbHVnaW4uCi0gICAqIEByZXR1cm4gdGhlIHNpbmdsZXRvbiBpbnN0YW5jZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgV1NETFBsdWdpbkltcGxlbWVudGF0aW9uIGdldFBsdWdpbigpCi0gIHsKLSAgICByZXR1cm4gcGx1Z2luOwotICB9Ci0KLSAgcHJpdmF0ZSBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeUltcGwgaW50ZXJuYWxHZXRFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeSgpCi0gIHsKLSAgICBpZiAoZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBleHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeSA9IG5ldyBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeUltcGwoKTsKLSAgICAgIGlmIChwbHVnaW4gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgbmV3IEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5UmVhZGVyKGV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5KS5yZWFkUmVnaXN0cnkoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5OwotICB9Ci0KLSAgcHVibGljIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkoU3RyaW5nIG5hbWVzcGFjZSkKLSAgewotICAgIHJldHVybiBpbnRlcm5hbEdldEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5KG5hbWVzcGFjZSk7Ci0gIH0KLQotICBwdWJsaWMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkoKQotICB7Ci0gICAgcmV0dXJuIGludGVybmFsR2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkoKTsKLSAgfQotCi0gIHB1YmxpYyBXU0RMRmFjdG9yeSBjcmVhdGVXU0RMNEpGYWN0b3J5KCkKLSAgewotICAgIHJldHVybiBuZXcgV1NETEZhY3RvcnlJbXBsKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGI2ZWI1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGw7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24uRU1GUGx1Z2luLkVjbGlwc2VQbHVnaW47Ci0KLQotLyoqCi0gKiBUaGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBFY2xpcHNlIDxiPlBsdWdpbjwvYj4uCi0gKiA8cD4KLSAqIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvCi0gKiBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sKLSAqIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuCi0gKiAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLgotICogPC9wPgotICogQHNpbmNlIDEuMAotICovCi1wdWJsaWMgY2xhc3MgV1NETFBsdWdpbkltcGxlbWVudGF0aW9uIGV4dGVuZHMgRWNsaXBzZVBsdWdpbgotewotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZS4KLSAgICovCi0gIHB1YmxpYyBXU0RMUGx1Z2luSW1wbGVtZW50YXRpb24oKQotICB7Ci0gICAgc3VwZXIoKTsKLQotICAgIC8vIFJlbWVtYmVyIHRoZSBzdGF0aWMgaW5zdGFuY2UuCi0gICAgLy8KLSAgICBXU0RMUGx1Z2luLnBsdWdpbiA9IHRoaXM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVlMmYyMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGw7Ci0KLQotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYTsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvYj48L2VtPicuCi0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqCi0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCNnZXREb2N1bWVudEJhc2VVUkkgPGVtPkRvY3VtZW50IEJhc2UgVVJJPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCNnZXRTY2hlbWEgPGVtPlNjaGVtYTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UjZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICogQG1vZGVsIHN1cGVyVHlwZXM9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IG9yZy5lY2xpcHNlLndzdC53c2RsLklTY2hlbWEiCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudCwgU2NoZW1hCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Eb2N1bWVudCBCYXNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RG9jdW1lbnQgQmFzZSBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotICAgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gICAqIDwvcD4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkRvY3VtZW50IEJhc2UgVVJJPC9lbT4nIGF0dHJpYnV0ZS4KLSAgICogQHNlZSAjc2V0RG9jdW1lbnRCYXNlVVJJKFN0cmluZykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSNnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudF9Eb2N1bWVudEJhc2VVUkkoKQotICAgKiBAbW9kZWwKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgU3RyaW5nIGdldERvY3VtZW50QmFzZVVSSSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCNnZXREb2N1bWVudEJhc2VVUkkgPGVtPkRvY3VtZW50IEJhc2UgVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Eb2N1bWVudCBCYXNlIFVSSTwvZW0+JyBhdHRyaWJ1dGUuCi0gICAqIEBzZWUgI2dldERvY3VtZW50QmFzZVVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHZvaWQgc2V0RG9jdW1lbnRCYXNlVVJJKFN0cmluZyB2YWx1ZSk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlNjaGVtYTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8cD4KLSAgICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U2NoZW1hPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSAgICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotICAgKiA8L3A+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5TY2hlbWE8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiBAc2VlICNzZXRTY2hlbWEoWFNEU2NoZW1hKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2dldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50X1NjaGVtYSgpCi0gICAqIEBtb2RlbCBjb250YWlubWVudD0idHJ1ZSIKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgWFNEU2NoZW1hIGdldFNjaGVtYSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCNnZXRTY2hlbWEgPGVtPlNjaGVtYTwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+U2NoZW1hPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0U2NoZW1hKCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgdm9pZCBzZXRTY2hlbWEoWFNEU2NoZW1hIHZhbHVlKTsKLQotfSAvLyBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9leHRlbnNpYmlsaXR5L0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeURlc2NyaXB0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZXh0ZW5zaWJpbGl0eS9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlEZXNjcmlwdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NzI5ODkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9leHRlbnNpYmlsaXR5L0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeURlc2NyaXB0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuZXh0ZW5zaWJpbGl0eTsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZTsKLQotCi1wdWJsaWMgY2xhc3MgRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5RGVzY3JpcHRvcgotewotICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgQ0xBU1NfTE9BRElOR19FUlJPUiA9ICJDTEFTU19MT0FESU5HX0VSUk9SIjsKLQotICBwcm90ZWN0ZWQgQnVuZGxlIGJ1bmRsZTsKLQotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWVzcGFjZTsKLQotICBwcm90ZWN0ZWQgU3RyaW5nIGNsYXNzTmFtZTsKLQotICBwcm90ZWN0ZWQgT2JqZWN0IGZhY3Rvcnk7Ci0KLSAgcHVibGljIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeURlc2NyaXB0b3IoU3RyaW5nIGNsYXNzTmFtZSwgU3RyaW5nIG5hbWVzcGFjZSwgQnVuZGxlIGJ1bmRsZSkKLSAgewotICAgIHRoaXMuYnVuZGxlID0gYnVuZGxlOwotICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwotICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlOwotICB9Ci0KLSAgcHVibGljIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSBnZXRFeHRlbnNpYmxpdHlFbGVtZW50RmFjdG9yeSgpCi0gIHsKLSAgICBpZiAoZmFjdG9yeSA9PSBudWxsKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBDbGFzcyB0aGVDbGFzcyA9IGJ1bmRsZS5sb2FkQ2xhc3MoY2xhc3NOYW1lKTsKLSAgICAgICAgZmFjdG9yeSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkpdGhlQ2xhc3MubmV3SW5zdGFuY2UoKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgZmFjdG9yeSA9IENMQVNTX0xPQURJTkdfRVJST1I7Ci0gICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWN0b3J5ICE9IENMQVNTX0xPQURJTkdfRVJST1IgPyAoRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5KWZhY3RvcnkgOiBudWxsOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RXh0ZW5zaWJsaXR5RWxlbWVudEZhY3RvcnkoRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5IGZhY3RvcnkpCi0gIHsKLSAgICB0aGlzLmZhY3RvcnkgPSBmYWN0b3J5OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2V4dGVuc2liaWxpdHkvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2V4dGVuc2liaWxpdHkvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNjNmYjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9leHRlbnNpYmlsaXR5L0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5leHRlbnNpYmlsaXR5OwotCi0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnk7Ci0KLQotcHVibGljIGNsYXNzIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5SW1wbCBpbXBsZW1lbnRzIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Ci17Ci0gIHByb3RlY3RlZCBIYXNoTWFwIG1hcCA9IG5ldyBIYXNoTWFwKCk7Ci0KLSAgcHVibGljIHZvaWQgcHV0KFN0cmluZyBuYW1lc3BhY2UsIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeURlc2NyaXB0b3IgZGVzY3JpcHRvcikKLSAgewotICAgIG1hcC5wdXQobmFtZXNwYWNlLCBkZXNjcmlwdG9yKTsKLSAgfQotCi0gIHB1YmxpYyBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5KFN0cmluZyBuYW1lc3BhY2UpCi0gIHsKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkgcmVzdWx0ID0gbnVsbDsKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5RGVzY3JpcHRvciltYXAuZ2V0KG5hbWVzcGFjZSk7Ci0gICAgaWYgKGRlc2NyaXB0b3IgIT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBkZXNjcmlwdG9yLmdldEV4dGVuc2libGl0eUVsZW1lbnRGYWN0b3J5KCk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZWdpc3RlckZhY3RvcnkoU3RyaW5nIG5hbWVzcGFjZSwgRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5IGZhY3RvcnkpCi0gIHsKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBuZXcgRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5RGVzY3JpcHRvcihudWxsLCBuYW1lc3BhY2UsIG51bGwpOwotICAgIGRlc2NyaXB0b3Iuc2V0RXh0ZW5zaWJsaXR5RWxlbWVudEZhY3RvcnkoZmFjdG9yeSk7Ci0gICAgbWFwLnB1dChuYW1lc3BhY2UsIGRlc2NyaXB0b3IpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2V4dGVuc2liaWxpdHkvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnlSZWFkZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZXh0ZW5zaWJpbGl0eS9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeVJlYWRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDhiNGRlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZXh0ZW5zaWJpbGl0eS9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeVJlYWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5leHRlbnNpYmlsaXR5OwotCi0KLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQbHVnaW47Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZTsKLQotCi1wdWJsaWMgY2xhc3MgRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnlSZWFkZXIKLXsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gV1NETFBsdWdpbi5nZXRQbHVnaW4oKS5nZXRTeW1ib2xpY05hbWUoKTsKLQotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRFTlNJT05fUE9JTlRfSUQgPSAiZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMiOwotCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1FTlRfTkFNRSA9ICJleHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkiOwotCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVF9OQU1FU1BBQ0UgPSAibmFtZXNwYWNlIjsKLQotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRfQ0xBU1MgPSAiY2xhc3MiOwotCi0gIHByb3RlY3RlZCBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeUltcGwgZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnk7Ci0KLSAgcHVibGljIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5UmVhZGVyKEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5SW1wbCBleHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeSkKLSAgewotICAgIHRoaXMuZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkgPSBleHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTsKLSAgfQotCi0gIC8qKgotICAgKiByZWFkIGZyb20gcGx1Z2luIHJlZ2lzdHJ5IGFuZCBwYXJzZSBpdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlYWRSZWdpc3RyeSgpCi0gIHsKLSAgICBJRXh0ZW5zaW9uUmVnaXN0cnkgcGx1Z2luUmVnaXN0cnkgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotICAgIElFeHRlbnNpb25Qb2ludCBwb2ludCA9IHBsdWdpblJlZ2lzdHJ5LmdldEV4dGVuc2lvblBvaW50KFBMVUdJTl9JRCwgRVhURU5TSU9OX1BPSU5UX0lEKTsKLSAgICBpZiAocG9pbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBlbGVtZW50cyA9IHBvaW50LmdldENvbmZpZ3VyYXRpb25FbGVtZW50cygpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgcmVhZEVsZW1lbnQoZWxlbWVudHNbaV0pOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgcmVzb2x2ZShVUkwgcGxhdGZvcm1VUkwsIFN0cmluZyByZWxhdGl2ZVBhdGgpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIFVSTCByZXNvbHZlZFVSTCA9IEZpbGVMb2NhdG9yLnJlc29sdmUocGxhdGZvcm1VUkwpOwotICAgIHJldHVybiByZXNvbHZlZFVSTC50b1N0cmluZygpICsgcmVsYXRpdmVQYXRoOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcmVhZEVsZW1lbnQoSUNvbmZpZ3VyYXRpb25FbGVtZW50IGVsZW1lbnQpCi0gIHsKLSAgICBpZiAoZWxlbWVudC5nZXROYW1lKCkuZXF1YWxzKEVMRU1FTlRfTkFNRSkpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIElDb25maWd1cmF0aW9uRWxlbWVudCBjaGlsZEVsZW1lbnQgPSAoSUNvbmZpZ3VyYXRpb25FbGVtZW50KWVsZW1lbnQ7Ci0gICAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKEFUVF9OQU1FU1BBQ0UpOwotICAgICAgICBpZiAobmFtZXNwYWNlICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBCdW5kbGUgcGx1Z2luQnVuZGxlID0gUGxhdGZvcm0uZ2V0QnVuZGxlKGVsZW1lbnQuZ2V0RGVjbGFyaW5nRXh0ZW5zaW9uKCkuZ2V0Q29udHJpYnV0b3IoKS5nZXROYW1lKCkpOwotICAgICAgICAgIFN0cmluZyBjbGFzc05hbWUgPSBjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKEFUVF9DTEFTUyk7Ci0gICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gbmV3IEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeURlc2NyaXB0b3IoY2xhc3NOYW1lLCBuYW1lc3BhY2UsIHBsdWdpbkJ1bmRsZSk7Ci0gICAgICAgICAgZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkucHV0KG5hbWVzcGFjZSwgZGVzY3JpcHRvcik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZ2VuZXJhdG9yL0Jhc2VHZW5lcmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZ2VuZXJhdG9yL0Jhc2VHZW5lcmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRjNmZmNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2dlbmVyYXRvci9CYXNlR2VuZXJhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvcjsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLQotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUdlbmVyYXRvcgotewotICBwcml2YXRlIFN0cmluZyBuYW1lOwotCi0gIHByaXZhdGUgU3RyaW5nIHJlZk5hbWU7Ci0KLSAgcHJpdmF0ZSBib29sZWFuIG92ZXJ3cml0ZTsKLQotICBwcm90ZWN0ZWQgRGVmaW5pdGlvbiBkZWZpbml0aW9uOwotCi0gIHByb3RlY3RlZCBDb250ZW50R2VuZXJhdG9yIGNvbnRlbnRHZW5lcmF0b3I7Ci0KLSAgcHVibGljIHZvaWQgc2V0Q29udGVudEdlbmVyYXRvcihDb250ZW50R2VuZXJhdG9yIGdlbmVyYXRvcikKLSAgewotICAgIGNvbnRlbnRHZW5lcmF0b3IgPSBnZW5lcmF0b3I7Ci0gIH0KLQotICBwdWJsaWMgQ29udGVudEdlbmVyYXRvciBnZXRDb250ZW50R2VuZXJhdG9yKCkKLSAgewotICAgIHJldHVybiBjb250ZW50R2VuZXJhdG9yOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0T3ZlcndyaXRlKGJvb2xlYW4gb3ZlcndyaXRlKQotICB7Ci0gICAgdGhpcy5vdmVyd3JpdGUgPSBvdmVyd3JpdGU7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRPdmVyd3JpdGUoKQotICB7Ci0gICAgcmV0dXJuIG92ZXJ3cml0ZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0UmVmTmFtZShTdHJpbmcgcmVmTmFtZSkKLSAgewotICAgIHRoaXMucmVmTmFtZSA9IHJlZk5hbWU7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIG5hbWU7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFJlZk5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHJlZk5hbWU7Ci0gIH0KLQotICBwdWJsaWMgRGVmaW5pdGlvbiBnZXREZWZpbml0aW9uKCkKLSAgewotICAgIHJldHVybiBkZWZpbml0aW9uOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQcm90b2NvbCgpCi0gIHsKLSAgICBpZiAoY29udGVudEdlbmVyYXRvciAhPSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBjb250ZW50R2VuZXJhdG9yLmdldFByb3RvY29sKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZ2VuZXJhdG9yL0JpbmRpbmdHZW5lcmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZ2VuZXJhdG9yL0JpbmRpbmdHZW5lcmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE1ZjgwMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2dlbmVyYXRvci9CaW5kaW5nR2VuZXJhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDb21tb24gUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5nZW5lcmF0b3I7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvci5leHRlbnNpb24uQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeTsKLQotCi0vKgotICogQ2xhc3MgdXNlZCB0byBnZW5lcmF0ZSB0aGUgQmluZGluZyBhbmQgaXQncyBjb250ZW50LiAgV2UgbG9vayBpbiB0aGUgcmVnaXN0cnkgZm9yCi0gKiBhcHByb3ByaWF0ZSBDb250ZW50R2VuZXJhdG9yIGNsYXNzZXMgYmFzZWQgb24gdGhlIGV4aXN0aW5nIEJpbmRpbmcgQ29udGVudCdzIG5hbWVzcGFjZS4KLSAqIEFsdGVybmF0aXZlbHksIHVzZXJzIGNhbiBwYXNzIGluIGEgbmFtZXNwYWNlIHRocm91Z2ggdGhlIGNvbnN0cnVjdG9yIHRvIHNwZWNpZnkgd2hpY2gKLSAqIG5hbWVzcGFjZSB0byB1c2Ugd2hlbiBzZWFyY2hpbmcgdGhlIHJlZ2lzdHJ5LgotICogCi0gKiBUaGUgQ29udGVudEdlbmVyYXRvciBtYXkgYWxzbyBiZSBzZXQgbWFudWFsbHkgYnkgY2FsbGluZwotICogc2V0Q29udGVudEdlbmVyYXRvcihDb250ZW50R2VuZXJhdG9yKS4KLSAqLwotcHVibGljIGNsYXNzIEJpbmRpbmdHZW5lcmF0b3IgZXh0ZW5kcyBCYXNlR2VuZXJhdG9yCi17Ci0gIHByaXZhdGUgV1NETEZhY3RvcnkgZmFjdG9yeSA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRTsKLQotICBwcml2YXRlIEJpbmRpbmcgYmluZGluZzsKLQotICAvKgotICAgKiBXaGVuIHRoZSBjb25zdHJ1Y3RvciBpcyB1c2VkLCBhdXRvbWF0aWNhbGx5IGF0dGVtcHQgdG8gcmV0cmlldmUgYSBwcm9wZXIKLSAgICogQ29udGVudEdlbmVyYXRvciBiYXNlZCBvbiB0aGUgQmluZGluZyBnaXZlbi4gIFRoZSBDb250ZW50R2VuZXJhdG9yIG1heQotICAgKiBiZSByZXBsYWNlZCBieSBjYWxsaW5nIHNldENvbnRlbnRHZW5lcmF0b3IoQ29udGVudEdlbmVyYXRvcikuCi0gICAqLwotICBwdWJsaWMgQmluZGluZ0dlbmVyYXRvcihEZWZpbml0aW9uIGRlZmluaXRpb24sIEJpbmRpbmcgYmluZGluZykKLSAgewotICAgIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247Ci0gICAgdGhpcy5iaW5kaW5nID0gYmluZGluZzsKLSAgICBjb250ZW50R2VuZXJhdG9yID0gZ2V0Q29udGVudEdlbmVyYXRvcihiaW5kaW5nKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RGVmaW5pdGlvbihEZWZpbml0aW9uIGRlZmluaXRpb24pIHsKLSAgICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZXRCaW5kaW5nKEJpbmRpbmcgYmluZGluZykgewotICAgIHRoaXMuYmluZGluZyA9IGJpbmRpbmc7Ci0gIH0KLQotICAvKgotICAgKiBXaGVuIHRoZSBjb25zdHJ1Y3RvciBpcyB1c2VkLCBhdXRvbWF0aWNhbGx5IGF0dGVtcHQgdG8gcmV0cmlldmUgYSBwcm9wZXIKLSAgICogQ29udGVudEdlbmVyYXRvciBiYXNlZCBvbiB0aGUgbmFtZXNwYWNlIGdpdmVuLiAgVGhlIENvbnRlbnRHZW5lcmF0b3IgbWF5Ci0gICAqIGJlIHJlcGxhY2VkIGJ5IGNhbGxpbmcgc2V0Q29udGVudEdlbmVyYXRvcihDb250ZW50R2VuZXJhdG9yKS4KLSAgICovCi0gIHB1YmxpYyBCaW5kaW5nR2VuZXJhdG9yKERlZmluaXRpb24gZGVmaW5pdGlvbiwgQmluZGluZyBiaW5kaW5nLCBTdHJpbmcgbmFtZXNwYWNlKQotICB7Ci0gICAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjsKLSAgICB0aGlzLmJpbmRpbmcgPSBiaW5kaW5nOwotICAgIGNvbnRlbnRHZW5lcmF0b3IgPSBnZXRDb250ZW50R2VuZXJhdG9yKG5hbWVzcGFjZSk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIENvbnRlbnRHZW5lcmF0b3IgZ2V0Q29udGVudEdlbmVyYXRvcihCaW5kaW5nIGJpbmRpbmcpCi0gIHsKLSAgICBpZiAoYmluZGluZyA9PSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgICogRmluZCB0aGUgcmVnZWlzdGVyZWQgQ29udGVudCBHZW5lcmF0b3IgZm9yIHRoZSBCaW5kaW5nCi0gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICAvLyBHZXQgQmluZGluZ0NvbnRlbnQgbmFtZXNwYWNlCi0gICAgU3RyaW5nIG5hbWVzcGFjZSA9IG51bGw7Ci0gICAgTGlzdCBlZUxpc3QgPSBiaW5kaW5nLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICBpZiAoZWVMaXN0LnNpemUoKSA+IDApCi0gICAgewotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZWUgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZWVMaXN0LmdldCgwKTsKLSAgICAgIC8vIFRPRE86IFFOYW1lIHFOYW1lID0gZWUuZ2V0RWxlbWVudFR5cGUoKTsgZ28gZ2V0IHRoZSBuYW1lc3BhY2UgaW5zdGVhZD8KLSAgICAgIG5hbWVzcGFjZSA9IGVlLmdldEVsZW1lbnQoKS5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgIHJldHVybiBnZXRDb250ZW50R2VuZXJhdG9yKG5hbWVzcGFjZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIENvbnRlbnRHZW5lcmF0b3IgZ2V0Q29udGVudEdlbmVyYXRvcihTdHJpbmcgbmFtZXNwYWNlKQotICB7Ci0gICAgQ29udGVudEdlbmVyYXRvciBjb250ZW50R2VuID0gbnVsbDsKLSAgICBpZiAobmFtZXNwYWNlICE9IG51bGwpCi0gICAgewotICAgICAgQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeSBmYWN0b3J5UmVnaXN0cnkgPSBDb250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uRmFjdG9yeVJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7Ci0gICAgICBjb250ZW50R2VuID0gZmFjdG9yeVJlZ2lzdHJ5LmdldEdlbmVyYXRvckNsYXNzRnJvbU5hbWVzcGFjZShuYW1lc3BhY2UpOwotICAgIH0KLQotICAgIHJldHVybiBjb250ZW50R2VuOwotICB9Ci0KLSAgcHJpdmF0ZSBCaW5kaW5nIGNyZWF0ZUVtcHR5QmluZGluZyhTdHJpbmcgbG9jYWxOYW1lKQotICB7Ci0gICAgQmluZGluZyBuZXdCaW5kaW5nID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUJpbmRpbmcoKTsKLSAgICBuZXdCaW5kaW5nLnNldFFOYW1lKG5ldyBRTmFtZShkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpLCBsb2NhbE5hbWUpKTsKLSAgICBuZXdCaW5kaW5nLnNldEVuY2xvc2luZ0RlZmluaXRpb24oZGVmaW5pdGlvbik7Ci0gICAgZGVmaW5pdGlvbi5hZGRCaW5kaW5nKG5ld0JpbmRpbmcpOwotCi0gICAgcmV0dXJuIG5ld0JpbmRpbmc7Ci0gIH0KLQotICAvKgotICAgKiBUT0RPOiBTY2VuYXJpbzoKLSAgICogMSlvdmVyd3JpdGUgPT0gZmFsc2UKLSAgICogMilCaW5kaW5nT3BlcmF0aW9uIHdpdGggMSBpbnB1dAotICAgKiAzKUNvcnJlc3BvbmRpbmcgT3BlcmF0aW9uICh3aXRoIHNhbWUgbmFtZSkgd2l0aCAxIGlucHV0IGFuZCAxIG91dHB1dAotICAgKiBJZiB3ZSBnZW5lcmF0ZSB3aXRoIG92ZXJ3cml0ZSA9PSBmYWxzZSwgbm90aGluZyBpcyBkb25lLiAgVGh1cywgIGFuCi0gICAqIG91dHB1dCBpcyBub3QgZ2VuZXJhdGVkIG9uIHRoZSBCaW5kaW5nT3BlcmF0aW9uLiAgVGhpcyBpcyBiZWNhdXNlIHdlCi0gICAqIHNlYXJjaCBmb3IgZXhpc3RpbmcgRWxlbWVudHMgb25seSBhdCB0aGUgbGV2ZWwgb2YgQmluZGluZ09wZXJhdGlvbnMuCi0gICAqIEZvciBleGFtcGxlLCBpZiB0aGVyZSBpcyBhIGNvcnJlc3BvbmRpbmcgQmluZGluZ09wZXJhdGlvbiB3aXRoIHRoZSBzYW1lCi0gICAqIG5hbWUgYXMgb3VyIE9wZXJhdGlvbiwgbGVhdmUgaXQgYWxvbmUuLi4uIGJ1dCBzaW5jZSB0aGVyZSBpcyBhbHJlYWR5Ci0gICAqIGEgQmluZGluZ09wZXJhdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUsIHdlIGRvbid0IGNyZWF0ZSBhIG5ldyBCaW5kaW5nT3BlcmF0aW9uLgotICAgKiAKLSAgICogVGhlIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gaXMgcmVkdWNlIHRoaXMgZ3JhbnVsYXJpdHkgdG8gdGhlIE1lc3NhZ2VSZWZlcmVuY2UKLSAgICogbGV2ZWwuICBUaGUgY29kZSBpcyBhbG1vc3QgdGhlcmUgZXhjZXB0IGZvciBob3cgd2UgZ2VuZXJhdGUgdGhlIEJpbmRpbmcgZWxlbWVudAotICAgKiBjb250ZW50LiAgTG9vayBhdCBCaW5kaW5nR2VucmF0b3IuZ2VuZXJhdGVCaW5kaW5nT3BlcmF0aW9uKCkgYW5kCi0gICAqIFNPQVBDb250ZW50R2VuZXJhdG9yLmphdmEgYW5kIGl0J3MgY29udGVudCBnZW5lcmF0aW9uIG1ldGhvZAotICAgKiBmb3IgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LgotICAgKiAKLSAgICogRm9yIHd0cCBSQzEsIFdlIHNoYWxsIG9ubHkgbG9vayBhdCB0aGUgT3BlcmF0aW9uIGxldmVsIChhcyB3ZSBkbyBpbiB0aGUgcHJldmlvdXMKLSAgICogdmVyc2lvbikuCi0gICAqLwotICBwdWJsaWMgQmluZGluZyBnZW5lcmF0ZUJpbmRpbmcoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gSWYgQmluZGluZyBpcyBudWxsIChObyBCaW5kaW5nIHdhcyBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3IpLCB3ZSBjcmVhdGUgYW4gZW1wdHkgQmluZGluZyBmaXJzdC4KLSAgICAgIGlmIChiaW5kaW5nID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGJpbmRpbmcgPSBjcmVhdGVFbXB0eUJpbmRpbmcoZ2V0TmFtZSgpKTsKLSAgICAgIH0KLSAgICAgIGlmIChnZXROYW1lKCkgIT0gbnVsbCAmJiAhYmluZGluZy5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpLmVxdWFscyhnZXROYW1lKCkpKQotICAgICAgewotICAgICAgICBiaW5kaW5nLnNldFFOYW1lKG5ldyBRTmFtZShiaW5kaW5nLmdldFFOYW1lKCkuZ2V0TmFtZXNwYWNlVVJJKCksIGdldE5hbWUoKSkpOwotICAgICAgfQotICAgICAgaWYgKGdldFJlZk5hbWUoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBQb3J0VHlwZSBwb3J0VHlwZSA9IGdldFBvcnRUeXBlKCk7Ci0gICAgICAgIGJpbmRpbmcuc2V0RVBvcnRUeXBlKHBvcnRUeXBlKTsKLSAgICAgICAgaWYgKHBvcnRUeXBlID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICAvL1RoZSBtb2RlbCBkb2Vzbid0IHJlY29uaWxlIHdpdGggaXQncyBFbGVtZW50IHByb3Blcmx5IHdoZW4gd2UncmUgc2V0dGluZyBhIG51bGwgZm9yIGl0J3MgUG9ydFR5cGUKLSAgICAgICAgICBiaW5kaW5nLmdldEVsZW1lbnQoKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgTGlzdCBiaW5kaW5nT3BlcmF0aW9ucyA9IGJpbmRpbmcuZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCk7Ci0gICAgICBQb3J0VHlwZSBwb3J0VHlwZSA9IGJpbmRpbmcuZ2V0RVBvcnRUeXBlKCk7Ci0KLSAgICAgIGlmICghZ2V0T3ZlcndyaXRlKCkpCi0gICAgICB7Ci0gICAgICAgIC8vIERvbid0IE92ZXJ3cml0ZQotICAgICAgICBpZiAocG9ydFR5cGUgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBiaW5kaW5nOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIExpc3Qgb3BlcmF0aW9ucyA9IHBvcnRUeXBlLmdldE9wZXJhdGlvbnMoKTsKLQotICAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgICAgICAgICogRGV0ZXJtaW5lIHdoaWNoIE9wZXJhdGlvbnMgcmVxdWlyZSBuZXcgYSBuZXcgY29ycmVzcG9uZGluZyBCaW5kaW5nT3BlcmF0aW9ucwotICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgICAgICAgIExpc3QgbmV3QmluZGluZ09wc05lZWRlZCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmF0aW9ucy5zaXplKCk7IGluZGV4KyspCi0gICAgICAgICAgewotICAgICAgICAgICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IChPcGVyYXRpb24pb3BlcmF0aW9ucy5nZXQoaW5kZXgpOwotCi0gICAgICAgICAgICBib29sZWFuIGZvdW5kTWF0Y2ggPSBmYWxzZTsKLSAgICAgICAgICAgIEl0ZXJhdG9yIGJpbmRpbmdPcGVyYXRpb25zSXQgPSBiaW5kaW5nT3BlcmF0aW9ucy5pdGVyYXRvcigpOwotICAgICAgICAgICAgd2hpbGUgKGJpbmRpbmdPcGVyYXRpb25zSXQuaGFzTmV4dCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSAoQmluZGluZ09wZXJhdGlvbiliaW5kaW5nT3BlcmF0aW9uc0l0Lm5leHQoKTsKLQotICAgICAgICAgICAgICBpZiAobmFtZXNFcXVhbChiaW5kaW5nT3BlcmF0aW9uLmdldE5hbWUoKSwgb3BlcmF0aW9uLmdldE5hbWUoKSkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3VuZE1hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWZvdW5kTWF0Y2gpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG5ld0JpbmRpbmdPcHNOZWVkZWQuYWRkKG9wZXJhdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vIG5ld0JpbmRpbmdPcHNOZWVkZWQgaXMgdGhlIExpc3Qgb2YgT3BlcmF0aW9ucyBuZWVkaW5nIG5ldyBjb3JyZXNwb25kaW5nCi0gICAgICAgICAgLy8gQmluZGluZ09wZXJhdGlvbidzCi0gICAgICAgICAgTGlzdCBuZXdCaW5kaW5nT3BzID0gY3JlYXRlTmV3QmluZGluZ09wZXJhdGlvbnMobmV3QmluZGluZ09wc05lZWRlZCk7Ci0KLSAgICAgICAgICAvLyBkb24ndCBhZGQgcmVxdWlyZWQgbmFtZXNwYWNlIGlmIG5vdGhpbmcgaXMgcmVhbGx5IGJlaW5nIGFkZGVkCi0gICAgICAgICAgaWYgKCFuZXdCaW5kaW5nT3BzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkUmVxdWlyZWROYW1lc3BhY2VzKGJpbmRpbmcpOyAgICAgICAgICAgIAotICAgICAgICAgIH0KLSAgICAgICAgICAKLSAgICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG5ldyBCaW5kaW5nT3BlcmF0aW9uJ3MKLSAgICAgICAgICBJdGVyYXRvciBuZXdCaW5kaW5nT3BzSXQgPSBuZXdCaW5kaW5nT3BzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKG5ld0JpbmRpbmdPcHNJdC5oYXNOZXh0KCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgQmluZGluZ09wZXJhdGlvbiBuZXdCaW5kaW5nT3AgPSAoQmluZGluZ09wZXJhdGlvbiluZXdCaW5kaW5nT3BzSXQubmV4dCgpOwotICAgICAgICAgICAgZ2VuZXJhdGVCaW5kaW5nT3BlcmF0aW9uKG5ld0JpbmRpbmdPcCk7Ci0gICAgICAgICAgICBnZW5lcmF0ZUJpbmRpbmdPcGVyYXRpb25Db250ZW50KG5ld0JpbmRpbmdPcCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZ2VuZXJhdGVCaW5kaW5nQ29udGVudChiaW5kaW5nKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gT3ZlcndyaXRlCi0gICAgICAgIGlmIChwb3J0VHlwZSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gV2UgbmVlZCB0byBibG93IGF3YXkgZXZlcnl0aGluZyB1bmRlciB0aGUgQmluZGluZy4gIE5vIFBvcnRUeXBlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEJpbmRpbmcKLSAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9ucy5jbGVhcigpOwotICAgICAgICAgIHJldHVybiBiaW5kaW5nOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGFkZFJlcXVpcmVkTmFtZXNwYWNlcyhiaW5kaW5nKTsKLSAgICAgICAgICBMaXN0IG9wZXJhdGlvbnMgPSBwb3J0VHlwZS5nZXRPcGVyYXRpb25zKCk7Ci0KLSAgICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgICAgICAgICogQ29tcGFyZSB0aGUgT3BlcmF0aW9ucwotICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgICAgICAgLy8gUmVtb3ZlIGFueSBCaW5kaW5nT3BlcmF0aW9ucyB3aGljaCBhcmUgbm8gbG9uZ2VyIHVzZWQKLSAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgYmluZGluZ09wZXJhdGlvbnMuc2l6ZSgpOyBpbmRleCsrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKWJpbmRpbmdPcGVyYXRpb25zLmdldChpbmRleCk7Ci0KLSAgICAgICAgICAgIGJvb2xlYW4gZm91bmRNYXRjaCA9IGZhbHNlOwotICAgICAgICAgICAgSXRlcmF0b3Igb3BlcmF0aW9uc0l0ID0gb3BlcmF0aW9ucy5pdGVyYXRvcigpOwotICAgICAgICAgICAgd2hpbGUgKG9wZXJhdGlvbnNJdC5oYXNOZXh0KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSAoT3BlcmF0aW9uKW9wZXJhdGlvbnNJdC5uZXh0KCk7Ci0KLSAgICAgICAgICAgICAgaWYgKG5hbWVzRXF1YWwoYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCksIG9wZXJhdGlvbi5nZXROYW1lKCkpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm91bmRNYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFmb3VuZE1hdGNoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSB0aGlzIEJpbmRpbmdGYXVsdCBmcm9tIHRoZSBiaW5kaW5nRmF1bHRzIExpc3QKLSAgICAgICAgICAgICAgYmluZGluZ09wZXJhdGlvbnMucmVtb3ZlKGluZGV4KTsKLSAgICAgICAgICAgICAgaW5kZXgtLTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBSZW1vdmUgYW55IE9wZXJhdGlvbnMgd2hpY2ggYWxyZWFkeSBleGlzdHMgaW4gYmluZGluZ09wZXJhdGlvbnMuICBXaGF0IHdlCi0gICAgICAgICAgLy8gaGF2ZSBsZWZ0IGFyZSB0aGUgT3BlcmF0aW9ucyB3aGljaCBuZWVkcyBuZXdseSBjcmVhdGVkIEJpbmRpbmdPcGVyYXRpb25zCi0gICAgICAgICAgTGlzdCBiaW5kaW5nT3BlcmF0aW9uc05lZWRlZCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmF0aW9ucy5zaXplKCk7IGluZGV4KyspCi0gICAgICAgICAgewotICAgICAgICAgICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IChPcGVyYXRpb24pb3BlcmF0aW9ucy5nZXQoaW5kZXgpOwotCi0gICAgICAgICAgICBib29sZWFuIGZvdW5kTWF0Y2ggPSBmYWxzZTsKLSAgICAgICAgICAgIEl0ZXJhdG9yIGJpbmRpbmdPcGVyYXRpb25zSXQgPSBiaW5kaW5nT3BlcmF0aW9ucy5pdGVyYXRvcigpOwotICAgICAgICAgICAgd2hpbGUgKGJpbmRpbmdPcGVyYXRpb25zSXQuaGFzTmV4dCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSAoQmluZGluZ09wZXJhdGlvbiliaW5kaW5nT3BlcmF0aW9uc0l0Lm5leHQoKTsKLQotICAgICAgICAgICAgICBpZiAobmFtZXNFcXVhbChiaW5kaW5nT3BlcmF0aW9uLmdldE5hbWUoKSwgb3BlcmF0aW9uLmdldE5hbWUoKSkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3VuZE1hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWZvdW5kTWF0Y2gpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoaXMgQmluZGluZ0ZhdWx0IGZyb20gdGhlIGJpbmRpbmdGYXVsdHMgTGlzdAotICAgICAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uc05lZWRlZC5hZGQob3BlcmF0aW9uKTsgLy8gU3RvcmUgdGhlIGFjdHVhbCBPcGVyYXRpb24KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBDcmVhdGUgcmVxdWlyZWQgQmluZGluZ09wZXJhdGlvbnMKLSAgICAgICAgICBjcmVhdGVOZXdCaW5kaW5nT3BlcmF0aW9ucyhiaW5kaW5nT3BlcmF0aW9uc05lZWRlZCk7Ci0KLSAgICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgICAgICAgICogUHJvY2VzcyB0aGUgY29udGVudHMgb2YgdGhlIE9wZXJhdGlvbnMKLSAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgICAgICAgIEl0ZXJhdG9yIGJpbmRpbmdPcGVyYXRpb25zSXQgPSBiaW5kaW5nLmdldEVCaW5kaW5nT3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKGJpbmRpbmdPcGVyYXRpb25zSXQuaGFzTmV4dCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGdlbmVyYXRlQmluZGluZ09wZXJhdGlvbigoQmluZGluZ09wZXJhdGlvbiliaW5kaW5nT3BlcmF0aW9uc0l0Lm5leHQoKSk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgZ2VuZXJhdGVCaW5kaW5nQ29udGVudChiaW5kaW5nKTsKLQotICAgICAgICAgIHJldHVybiBiaW5kaW5nOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHByaXZhdGUgTGlzdCBjcmVhdGVOZXdCaW5kaW5nT3BlcmF0aW9ucyhMaXN0IG9wZXJhdGlvbnMpCi0gIHsKLSAgICBMaXN0IG5ld0JpbmRpbmdPcHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICBJdGVyYXRvciBuZWVkZWRCaW5kaW5nT3BlcmF0aW9uc0l0ID0gb3BlcmF0aW9ucy5pdGVyYXRvcigpOwotICAgIHdoaWxlIChuZWVkZWRCaW5kaW5nT3BlcmF0aW9uc0l0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gKE9wZXJhdGlvbiluZWVkZWRCaW5kaW5nT3BlcmF0aW9uc0l0Lm5leHQoKTsKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gbmV3QmluZGluZ09wZXJhdGlvbiA9IGZhY3RvcnkuY3JlYXRlQmluZGluZ09wZXJhdGlvbigpOwotICAgICAgbmV3QmluZGluZ09wZXJhdGlvbi5zZXRFT3BlcmF0aW9uKG9wZXJhdGlvbik7Ci0gICAgICBuZXdCaW5kaW5nT3BlcmF0aW9uLnNldE5hbWUob3BlcmF0aW9uLmdldE5hbWUoKSk7Ci0gICAgICBiaW5kaW5nLmFkZEJpbmRpbmdPcGVyYXRpb24obmV3QmluZGluZ09wZXJhdGlvbik7Ci0KLSAgICAgIG5ld0JpbmRpbmdPcHMuYWRkKG5ld0JpbmRpbmdPcGVyYXRpb24pOwotICAgIH0KLQotICAgIHJldHVybiBuZXdCaW5kaW5nT3BzOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGdlbmVyYXRlQmluZGluZ09wZXJhdGlvbihCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24pCi0gIHsKLSAgICBCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0ID0gYmluZGluZ09wZXJhdGlvbi5nZXRFQmluZGluZ0lucHV0KCk7Ci0gICAgQmluZGluZ091dHB1dCBiaW5kaW5nT3V0cHV0ID0gYmluZGluZ09wZXJhdGlvbi5nZXRFQmluZGluZ091dHB1dCgpOwotICAgIExpc3QgYmluZGluZ0ZhdWx0cyA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0RUJpbmRpbmdGYXVsdHMoKTsKLQotICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSBiaW5kaW5nT3BlcmF0aW9uLmdldEVPcGVyYXRpb24oKTsKLSAgICBJbnB1dCBpbnB1dCA9IG9wZXJhdGlvbi5nZXRFSW5wdXQoKTsKLSAgICBPdXRwdXQgb3V0cHV0ID0gb3BlcmF0aW9uLmdldEVPdXRwdXQoKTsKLSAgICBMaXN0IGZhdWx0cyA9IG9wZXJhdGlvbi5nZXRFRmF1bHRzKCk7Ci0KLSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgICogQ29tcGFyZSB0aGUgT3BlcmF0aW9uIG5hbWVzCi0gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICBpZiAoIW5hbWVzRXF1YWwoYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCksIG9wZXJhdGlvbi5nZXROYW1lKCkpKQotICAgIHsKLSAgICAgIGJpbmRpbmdPcGVyYXRpb24uc2V0TmFtZShvcGVyYXRpb24uZ2V0TmFtZSgpKTsKLSAgICB9Ci0KLSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgICogQ29tcGFyZSB0aGUgT3V0cHV0Ci0gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICBpZiAob3V0cHV0ID09IG51bGwpCi0gICAgewotICAgICAgYmluZGluZ09wZXJhdGlvbi5zZXRCaW5kaW5nT3V0cHV0KG51bGwpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gQ3JlYXRlIEJpbmRpbmdPdXRwdXQgaWYgbmVjZXNzYXJ5Ci0gICAgICBpZiAoYmluZGluZ091dHB1dCA9PSBudWxsKQotICAgICAgewotICAgICAgICBCaW5kaW5nT3V0cHV0IG5ld0JpbmRpbmdPdXRwdXQgPSBmYWN0b3J5LmNyZWF0ZUJpbmRpbmdPdXRwdXQoKTsKLSAgICAgICAgbmV3QmluZGluZ091dHB1dC5zZXRFT3V0cHV0KG91dHB1dCk7Ci0gICAgICAgIG5ld0JpbmRpbmdPdXRwdXQuc2V0TmFtZShvdXRwdXQuZ2V0TmFtZSgpKTsKLSAgICAgICAgYmluZGluZ09wZXJhdGlvbi5zZXRCaW5kaW5nT3V0cHV0KG5ld0JpbmRpbmdPdXRwdXQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBDb21wYXJlIHRoZSBPdXRwdXQgbmFtZXMKLSAgICAgICAgaWYgKCFuYW1lc0VxdWFsKGJpbmRpbmdPdXRwdXQuZ2V0TmFtZSgpLCBvdXRwdXQuZ2V0TmFtZSgpKSkKLSAgICAgICAgewotICAgICAgICAgIGJpbmRpbmdPdXRwdXQuc2V0TmFtZShvdXRwdXQuZ2V0TmFtZSgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBnZW5lcmF0ZUJpbmRpbmdPdXRwdXRDb250ZW50KGJpbmRpbmdPcGVyYXRpb24uZ2V0RUJpbmRpbmdPdXRwdXQoKSk7Ci0KLSAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgICogQ29tcGFyZSB0aGUgSW5wdXQKLSAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgIGlmIChpbnB1dCA9PSBudWxsKQotICAgIHsKLSAgICAgIGJpbmRpbmdPcGVyYXRpb24uc2V0QmluZGluZ0lucHV0KG51bGwpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gQ3JlYXRlIEJpbmRpbmdJbnB1dCBpZiBuZWNlc3NhcnkKLSAgICAgIGlmIChiaW5kaW5nSW5wdXQgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ0lucHV0IG5ld0JpbmRpbmdJbnB1dCA9IGZhY3RvcnkuY3JlYXRlQmluZGluZ0lucHV0KCk7Ci0gICAgICAgIG5ld0JpbmRpbmdJbnB1dC5zZXRFSW5wdXQoaW5wdXQpOwotICAgICAgICBuZXdCaW5kaW5nSW5wdXQuc2V0TmFtZShpbnB1dC5nZXROYW1lKCkpOwotICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLnNldEJpbmRpbmdJbnB1dChuZXdCaW5kaW5nSW5wdXQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBDb21wYXJlIHRoZSBJbnB1dCBuYW1lcwotICAgICAgICBpZiAoIW5hbWVzRXF1YWwoYmluZGluZ0lucHV0LmdldE5hbWUoKSwgaW5wdXQuZ2V0TmFtZSgpKSkKLSAgICAgICAgewotICAgICAgICAgIGJpbmRpbmdJbnB1dC5zZXROYW1lKGlucHV0LmdldE5hbWUoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZ2VuZXJhdGVCaW5kaW5nSW5wdXRDb250ZW50KGJpbmRpbmdPcGVyYXRpb24uZ2V0RUJpbmRpbmdJbnB1dCgpKTsKLQotICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICAgKiBDb21wYXJlIHRoZSBGYXVsdHMKLSAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICAgIC8vIFJlbW92ZSBhbnkgQmluZGluZ0ZhdWx0cyB3aGljaCBhcmUgbm8gbG9uZ2VyIHVzZWQKLSAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgYmluZGluZ0ZhdWx0cy5zaXplKCk7IGluZGV4KyspCi0gICAgewotICAgICAgQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdCA9IChCaW5kaW5nRmF1bHQpYmluZGluZ0ZhdWx0cy5nZXQoaW5kZXgpOwotCi0gICAgICBib29sZWFuIGZvdW5kTWF0Y2ggPSBmYWxzZTsKLSAgICAgIEl0ZXJhdG9yIGZhdWx0c0l0ID0gZmF1bHRzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoZmF1bHRzSXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBGYXVsdCBmYXVsdCA9IChGYXVsdClmYXVsdHNJdC5uZXh0KCk7Ci0gICAgICAgIGlmIChuYW1lc0VxdWFsKGJpbmRpbmdGYXVsdC5nZXROYW1lKCksIGZhdWx0LmdldE5hbWUoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICBmb3VuZE1hdGNoID0gdHJ1ZTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoIWZvdW5kTWF0Y2gpCi0gICAgICB7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoaXMgQmluZGluZ0ZhdWx0IGZyb20gdGhlIGJpbmRpbmdGYXVsdHMgTGlzdAotICAgICAgICBiaW5kaW5nRmF1bHRzLnJlbW92ZShpbmRleCk7Ci0gICAgICAgIGluZGV4LS07Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmVtb3ZlIGFueSBGYXVsdHMgd2hpY2ggYWxyZWFkeSBleGlzdHMgaW4gYmluZGluZ0ZhdWx0cy4gIFdoYXQgd2UKLSAgICAvLyBoYXZlIGxlZnQgYXJlIHRoZSBGYXVsdHMgd2hpY2ggbmVlZHMgbmV3bHkgY3JlYXRlZCBCaW5kaW5nRmF1bHRzCi0gICAgTGlzdCBiaW5kaW5nRmF1bHRzTmVlZGVkID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBmYXVsdHMuc2l6ZSgpOyBpbmRleCsrKQotICAgIHsKLSAgICAgIEZhdWx0IGZhdWx0ID0gKEZhdWx0KWZhdWx0cy5nZXQoaW5kZXgpOwotCi0gICAgICBib29sZWFuIGZvdW5kTWF0Y2ggPSBmYWxzZTsKLSAgICAgIEl0ZXJhdG9yIGJpbmRpbmdGYXVsdHNJdCA9IGJpbmRpbmdGYXVsdHMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChiaW5kaW5nRmF1bHRzSXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBCaW5kaW5nRmF1bHQgYmluZGluZ0ZhdWx0ID0gKEJpbmRpbmdGYXVsdCliaW5kaW5nRmF1bHRzSXQubmV4dCgpOwotICAgICAgICBpZiAobmFtZXNFcXVhbChiaW5kaW5nRmF1bHQuZ2V0TmFtZSgpLCBmYXVsdC5nZXROYW1lKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgZm91bmRNYXRjaCA9IHRydWU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKCFmb3VuZE1hdGNoKQotICAgICAgewotICAgICAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSB0aGlzIEJpbmRpbmdGYXVsdCBmcm9tIHRoZSBiaW5kaW5nRmF1bHRzIExpc3QKLSAgICAgICAgYmluZGluZ0ZhdWx0c05lZWRlZC5hZGQoZmF1bHQpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIGJpbmRpbmdGYXVsdHNOZWVkZWQgY29udGFpbnMgdGhlIG5lZWRlZCBCaW5kaW5nRmF1bHQncyB3ZSBuZWVkIHRvIGNyZWF0ZQotICAgIEl0ZXJhdG9yIG5lZWRlZEJpbmRpbmdGYXVsdHNJdCA9IGJpbmRpbmdGYXVsdHNOZWVkZWQuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAobmVlZGVkQmluZGluZ0ZhdWx0c0l0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBGYXVsdCBmYXVsdCA9IChGYXVsdCluZWVkZWRCaW5kaW5nRmF1bHRzSXQubmV4dCgpOwotICAgICAgQmluZGluZ0ZhdWx0IG5ld0JpbmRpbmdGYXVsdCA9IGZhY3RvcnkuY3JlYXRlQmluZGluZ0ZhdWx0KCk7Ci0gICAgICBuZXdCaW5kaW5nRmF1bHQuc2V0RUZhdWx0KGZhdWx0KTsKLSAgICAgIG5ld0JpbmRpbmdGYXVsdC5zZXROYW1lKGZhdWx0LmdldE5hbWUoKSk7Ci0gICAgICBiaW5kaW5nT3BlcmF0aW9uLmFkZEJpbmRpbmdGYXVsdChuZXdCaW5kaW5nRmF1bHQpOwotICAgIH0KLQotICAgIC8vIENyZWF0ZSB0aGUgY29udGVudHMgZm9yIGVhY2ggQmluZGluZ0ZhdWx0Ci0gICAgSXRlcmF0b3IgZmF1bHRDb250ZW50SXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEVCaW5kaW5nRmF1bHRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoZmF1bHRDb250ZW50SXQuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIEJpbmRpbmdGYXVsdCBiaW5kaW5nRmF1bHQgPSAoQmluZGluZ0ZhdWx0KWZhdWx0Q29udGVudEl0Lm5leHQoKTsKLSAgICAgIGdlbmVyYXRlQmluZGluZ0ZhdWx0Q29udGVudChiaW5kaW5nRmF1bHQpOwotICAgIH0KLQotICAgIGdlbmVyYXRlQmluZGluZ09wZXJhdGlvbkNvbnRlbnQoYmluZGluZ09wZXJhdGlvbik7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gbmFtZXNFcXVhbChTdHJpbmcgbmFtZTEsIFN0cmluZyBuYW1lMikKLSAgewotICAgIGJvb2xlYW4gbWF0Y2ggPSBmYWxzZTsKLQotICAgIGlmIChuYW1lMSAhPSBudWxsIF4gbmFtZTIgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBvbmUgaXMgbnVsbAotICAgICAgbWF0Y2ggPSBmYWxzZTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobmFtZTEgIT0gbnVsbCAmJiBuYW1lMiAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIG5laXRoZXIgaXMgbnVsbAotICAgICAgbWF0Y2ggPSBuYW1lMS5lcXVhbHMobmFtZTIpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gYm90aCBhcmUgbnVsbAotICAgICAgbWF0Y2ggPSB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBtYXRjaDsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGdlbmVyYXRlQmluZGluZ0NvbnRlbnQoQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgaWYgKGNvbnRlbnRHZW5lcmF0b3IgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZ2V0T3ZlcndyaXRlKCkgfHwgYmluZGluZy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuc2l6ZSgpID09IDApCi0gICAgICB7Ci0gICAgICAgIGNvbnRlbnRHZW5lcmF0b3IuZ2VuZXJhdGVCaW5kaW5nQ29udGVudChiaW5kaW5nLCAoUG9ydFR5cGUpYmluZGluZy5nZXRFUG9ydFR5cGUoKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZW1vdmVFeHRlbnNpYmlsaXR5RWxlbWVudHMoYmluZGluZyk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgZ2VuZXJhdGVCaW5kaW5nT3BlcmF0aW9uQ29udGVudChCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24pCi0gIHsKLSAgICBpZiAoYmluZGluZ09wZXJhdGlvbiAhPSBudWxsICYmIGNvbnRlbnRHZW5lcmF0b3IgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBjb250ZW50R2VuZXJhdG9yLmdlbmVyYXRlQmluZGluZ09wZXJhdGlvbkNvbnRlbnQoYmluZGluZ09wZXJhdGlvbiwgYmluZGluZ09wZXJhdGlvbi5nZXRFT3BlcmF0aW9uKCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVtb3ZlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKGJpbmRpbmdPcGVyYXRpb24pOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGdlbmVyYXRlQmluZGluZ0lucHV0Q29udGVudChCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0KQotICB7Ci0gICAgaWYgKGJpbmRpbmdJbnB1dCAhPSBudWxsICYmIGNvbnRlbnRHZW5lcmF0b3IgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBjb250ZW50R2VuZXJhdG9yLmdlbmVyYXRlQmluZGluZ0lucHV0Q29udGVudChiaW5kaW5nSW5wdXQsIGJpbmRpbmdJbnB1dC5nZXRFSW5wdXQoKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZW1vdmVFeHRlbnNpYmlsaXR5RWxlbWVudHMoYmluZGluZ0lucHV0KTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBnZW5lcmF0ZUJpbmRpbmdPdXRwdXRDb250ZW50KEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCkKLSAgewotICAgIGlmIChiaW5kaW5nT3V0cHV0ICE9IG51bGwgJiYgY29udGVudEdlbmVyYXRvciAhPSBudWxsKQotICAgIHsKLSAgICAgIGNvbnRlbnRHZW5lcmF0b3IuZ2VuZXJhdGVCaW5kaW5nT3V0cHV0Q29udGVudChiaW5kaW5nT3V0cHV0LCBiaW5kaW5nT3V0cHV0LmdldEVPdXRwdXQoKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZW1vdmVFeHRlbnNpYmlsaXR5RWxlbWVudHMoYmluZGluZ091dHB1dCk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgZ2VuZXJhdGVCaW5kaW5nRmF1bHRDb250ZW50KEJpbmRpbmdGYXVsdCBiaW5kaW5nRmF1bHQpCi0gIHsKLSAgICBpZiAoYmluZGluZ0ZhdWx0ICE9IG51bGwgJiYgY29udGVudEdlbmVyYXRvciAhPSBudWxsKQotICAgIHsKLSAgICAgIGNvbnRlbnRHZW5lcmF0b3IuZ2VuZXJhdGVCaW5kaW5nRmF1bHRDb250ZW50KGJpbmRpbmdGYXVsdCwgYmluZGluZ0ZhdWx0LmdldEVGYXVsdCgpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlbW92ZUV4dGVuc2liaWxpdHlFbGVtZW50cyhiaW5kaW5nRmF1bHQpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCByZW1vdmVFeHRlbnNpYmlsaXR5RWxlbWVudHMoRXh0ZW5zaWJsZUVsZW1lbnQgZWUpCi0gIHsKLSAgICBpZiAoZWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBlZS5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuY2xlYXIoKTsKLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiBHZW5lcmF0ZSBQb3J0IENvbnRlbnQgZm9yIGFsbCBQb3J0cyB3aXRoIGEgcmVmZXJlbmNlIHRvIHRoZSBCaW5kaW5nCi0gICAqIHdoaWNoIHdhcyBwYXNzZWQgaW4gdGhyb3VnaCB0aGUgY29uc3RydWN0b3IgKG9yIGEgcmVmZXJlbmNlIHRvIHRoZQotICAgKiBuZXdseSBjcmVhdGVkIEJpbmRpbmcpLgotICAgKi8KLSAgcHVibGljIHZvaWQgZ2VuZXJhdGVQb3J0Q29udGVudCgpCi0gIHsKLSAgICBpZiAoYmluZGluZyAhPSBudWxsICYmIGNvbnRlbnRHZW5lcmF0b3IgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMaXN0IHBvcnRzVG9VcGRhdGUgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICAgIEl0ZXJhdG9yIHNlcnZpY2VzSXQgPSBiaW5kaW5nLmdldEVuY2xvc2luZ0RlZmluaXRpb24oKS5nZXRFU2VydmljZXMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKHNlcnZpY2VzSXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBTZXJ2aWNlIHNlcnZpY2UgPSAoU2VydmljZSlzZXJ2aWNlc0l0Lm5leHQoKTsKLSAgICAgICAgSXRlcmF0b3IgcG9ydHNJdCA9IHNlcnZpY2UuZ2V0RVBvcnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKHBvcnRzSXQuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgUG9ydCBwb3J0ID0gKFBvcnQpcG9ydHNJdC5uZXh0KCk7Ci0gICAgICAgICAgaWYgKGJpbmRpbmcuZXF1YWxzKHBvcnQuZ2V0RUJpbmRpbmcoKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gRm91bmQgYSBtYXRjaAotICAgICAgICAgICAgcG9ydHNUb1VwZGF0ZS5hZGQocG9ydCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIEl0ZXJhdG9yIHBvcnRzVG9VcGRhdGVJdCA9IHBvcnRzVG9VcGRhdGUuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChwb3J0c1RvVXBkYXRlSXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBjb250ZW50R2VuZXJhdG9yLmdlbmVyYXRlUG9ydENvbnRlbnQoKFBvcnQpcG9ydHNUb1VwZGF0ZUl0Lm5leHQoKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoKLSAgICogbWV0aG9kcyBhZGRSZXF1aXJlZE5hbWVzcGFjZXMoKSBhbmQgY29tcHV0ZVVuaXF1ZVByZWZpeCgpIGFyZSB1c2VkIHRvIGFkZCBuZWNlc3NhcnkKLSAgICogbmFtZXNwYWNlcyAKLSAgICogCi0gICAqIFRPRE86Ci0gICAqIERvZXMgdGhpcyBiZWxvbmcgaGVyZT8gIFRoaXMgaXMgY29waWVkIGZyb20gd3NkbC51aS4gIENhbiB3ZSBzeW5jIHVwIGluIHNvbWUgd2F5PwotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgYWRkUmVxdWlyZWROYW1lc3BhY2VzKEJpbmRpbmcgYmluZGluZykKLSAgewotICAgIGlmIChjb250ZW50R2VuZXJhdG9yICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nW10gbmFtZXNwYWNlTmFtZXMgPSBjb250ZW50R2VuZXJhdG9yLmdldFJlcXVpcmVkTmFtZXNwYWNlcygpOwotICAgICAgU3RyaW5nW10gcHJlZmVycmVkUHJlZml4ZXMgPSBuZXcgU3RyaW5nIFtuYW1lc3BhY2VOYW1lcy5sZW5ndGhdOwotICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IG5hbWVzcGFjZU5hbWVzLmxlbmd0aDsgaW5kZXgrKykKLSAgICAgIHsKLSAgICAgICAgcHJlZmVycmVkUHJlZml4ZXNbaW5kZXhdID0gY29udGVudEdlbmVyYXRvci5nZXRQcmVmZXJyZWROYW1lc3BhY2VQcmVmaXgobmFtZXNwYWNlTmFtZXNbaW5kZXhdKTsKLSAgICAgIH0KLQotICAgICAgTWFwIG1hcCA9IGJpbmRpbmcuZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpLmdldE5hbWVzcGFjZXMoKTsKLQotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYW1lc3BhY2VOYW1lcy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG5hbWVzcGFjZSA9IG5hbWVzcGFjZU5hbWVzW2ldOwotICAgICAgICBpZiAoIW1hcC5jb250YWluc1ZhbHVlKG5hbWVzcGFjZSkpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgcHJlZml4ID0gKGkgPCBwcmVmZXJyZWRQcmVmaXhlcy5sZW5ndGgpID8gcHJlZmVycmVkUHJlZml4ZXNbaV0gOiAicDAiOwotICAgICAgICAgIGlmIChtYXAuY29udGFpbnNLZXkocHJlZml4KSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwcmVmaXggPSBjb21wdXRlVW5pcXVlUHJlZml4KCJwIiwgbWFwKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYmluZGluZy5nZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkuYWRkTmFtZXNwYWNlKHByZWZpeCwgbmFtZXNwYWNlKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgU3RyaW5nIGNvbXB1dGVVbmlxdWVQcmVmaXgoU3RyaW5nIGJhc2UsIE1hcCB0YWJsZSkKLSAgewotICAgIGludCBpID0gMDsKLSAgICBTdHJpbmcgcHJlZml4ID0gYmFzZTsKLSAgICB3aGlsZSAodHJ1ZSkKLSAgICB7Ci0gICAgICBpZiAoIXRhYmxlLmNvbnRhaW5zS2V5KHByZWZpeCkpCi0gICAgICB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBwcmVmaXggPSBiYXNlICsgaTsKLSAgICAgICAgaSsrOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcHJlZml4OwotICB9Ci0KLSAgcHJpdmF0ZSBQb3J0VHlwZSBnZXRQb3J0VHlwZSgpCi0gIHsKLSAgICBpZiAoZ2V0UmVmTmFtZSgpLmVxdWFscygiIikpCi0gICAgewotICAgICAgLy8gTWVhbnMgd2Ugc2hvdWxkIHNldCB0aGUgUG9ydFR5cGUgdG8gVW5zcGVjaWZpZWQKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIGlmIChnZXRSZWZOYW1lKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBwb3J0VHlwZUl0ID0gZGVmaW5pdGlvbi5nZXRFUG9ydFR5cGVzKCkuaXRlcmF0b3IoKTsKLQotICAgICAgd2hpbGUgKHBvcnRUeXBlSXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBQb3J0VHlwZSBwdCA9IChQb3J0VHlwZSlwb3J0VHlwZUl0Lm5leHQoKTsKLSAgICAgICAgTGlzdCBwcmVmaXhlZE5hbWVzID0gZ2V0UHJlZml4ZWROYW1lcyhwdCk7Ci0gICAgICAgIGlmIChwcmVmaXhlZE5hbWVzLmNvbnRhaW5zKGdldFJlZk5hbWUoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gcHQ7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gYmluZGluZy5nZXRFUG9ydFR5cGUoKTsKLSAgfQotCi0gIHByaXZhdGUgTGlzdCBnZXRQcmVmaXhlZE5hbWVzKFBvcnRUeXBlIHBvcnRUeXBlKQotICB7Ci0gICAgTGlzdCBwcmVmaXhlZE5hbWVzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIFN0cmluZyBjdXJyZW50UG9ydFR5cGVOYW1lID0gcG9ydFR5cGUuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKTsKLSAgICBTdHJpbmcgY3VycmVudE5hbWVzcGFjZSA9IHBvcnRUeXBlLmdldFFOYW1lKCkuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0KLSAgICBNYXAgbmFtZXNwYWNlTWFwID0gZGVmaW5pdGlvbi5nZXROYW1lc3BhY2VzKCk7Ci0gICAgSXRlcmF0b3Iga2V5cyA9IG5hbWVzcGFjZU1hcC5rZXlTZXQoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChrZXlzLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBPYmplY3Qga2V5ID0ga2V5cy5uZXh0KCk7Ci0gICAgICBPYmplY3QgdmFsdWUgPSBuYW1lc3BhY2VNYXAuZ2V0KGtleSk7Ci0KLSAgICAgIGlmIChjdXJyZW50TmFtZXNwYWNlLmVxdWFscyh2YWx1ZSkpCi0gICAgICB7Ci0gICAgICAgIC8vIEZvdW5kIGEgbWF0Y2guICBBZGQgdG8gb3VyIGxpc3QKLSAgICAgICAgcHJlZml4ZWROYW1lcy5hZGQoa2V5ICsgIjoiICsgY3VycmVudFBvcnRUeXBlTmFtZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHByZWZpeGVkTmFtZXM7Ci0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9nZW5lcmF0b3IvQ29udGVudEdlbmVyYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9nZW5lcmF0b3IvQ29udGVudEdlbmVyYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmI5MzA2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZ2VuZXJhdG9yL0NvbnRlbnRHZW5lcmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIAotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ29tbW9uIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuZ2VuZXJhdG9yOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZTsKLQotCi1wdWJsaWMgaW50ZXJmYWNlIENvbnRlbnRHZW5lcmF0b3IKLXsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgQUREUkVTU19MT0NBVElPTiA9ICJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyI7Ci0KLSAgcHVibGljIFN0cmluZ1tdIGdldFJlcXVpcmVkTmFtZXNwYWNlcygpOwotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJlZmVycmVkTmFtZXNwYWNlUHJlZml4KFN0cmluZyBuYW1lc3BhY2UpOwotCi0gIC8vIGdlbmVyYXRlcyB0aGUgJ2FkZHJlc3MnIGV4dGVuc2libGl0eSBlbGVtZW50IGZvciBhIHBvcnQKLSAgcHVibGljIHZvaWQgZ2VuZXJhdGVQb3J0Q29udGVudChQb3J0IHBvcnQpOwotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlQmluZGluZ0NvbnRlbnQoQmluZGluZyBiaW5kaW5nLCBQb3J0VHlwZSBwb3J0VHlwZSk7Ci0KLSAgcHVibGljIHZvaWQgZ2VuZXJhdGVCaW5kaW5nT3BlcmF0aW9uQ29udGVudChCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbiBvcGVyYXRpb24pOwotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlQmluZGluZ0lucHV0Q29udGVudChCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0LCBJbnB1dCBpbnB1dCk7Ci0KLSAgcHVibGljIHZvaWQgZ2VuZXJhdGVCaW5kaW5nT3V0cHV0Q29udGVudChCaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQsIE91dHB1dCBvdXRwdXQpOwotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlQmluZGluZ0ZhdWx0Q29udGVudChCaW5kaW5nRmF1bHQgYmluZGluZ0ZhdWx0LCBGYXVsdCBmYXVsdCk7Ci0KLSAgcHVibGljIFN0cmluZyBnZXRQcm90b2NvbCgpOwotICAKLSAgcHVibGljIHZvaWQgc2V0QWRkcmVzc0xvY2F0aW9uKFN0cmluZyBhZGRyZXNzTG9jYXRpb24pOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9nZW5lcmF0b3IvUG9ydEdlbmVyYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9nZW5lcmF0b3IvUG9ydEdlbmVyYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWI4NTgwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZ2VuZXJhdG9yL1BvcnRHZW5lcmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvcjsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExGYWN0b3J5OwotCi0KLXB1YmxpYyBjbGFzcyBQb3J0R2VuZXJhdG9yIGV4dGVuZHMgQmFzZUdlbmVyYXRvcgotewotICBwcml2YXRlIFNlcnZpY2Ugc2VydmljZTsKLSAgcHJpdmF0ZSBTdHJpbmcgYWRkcmVzc0xvY2F0aW9uID0gQ29udGVudEdlbmVyYXRvci5BRERSRVNTX0xPQ0FUSU9OOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RzIGEgcG9ydCBnZW5lcmF0b3IgZ2l2ZW4gdGhlIHRhcmdldCBzZXJ2aWNlLgotICAgKiBAcGFyYW0gc2VydmljZSB0aGUgdGFyZ2V0IFNlcnZpY2UsIG11c3Qgbm90IGJlIG51bGwuCi0gICAqLwotICBwdWJsaWMgUG9ydEdlbmVyYXRvcihTZXJ2aWNlIHNlcnZpY2UpCi0gIHsKLSAgICB0aGlzLnNlcnZpY2UgPSBzZXJ2aWNlOwotICAgIGRlZmluaXRpb24gPSBzZXJ2aWNlLmdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0QWRkcmVzc0xvY2F0aW9uKFN0cmluZyBsb2NhdGlvbikgewotICAgIGFkZHJlc3NMb2NhdGlvbiA9IGxvY2F0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIEdlbmVyYXRlcyBhIHNlcnZpY2UgcG9ydCBnaXZlbiBpdCdzIG5hbWUgYW5kIGJpbmRpbmcgbmFtZS4KLSAgICogVGhlIHBvcnQgaXMgdGhlbiBhZGRlZCB0byB0aGUgc2VydmljZSBwYXNzZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgotICAgKiBAcmV0dXJuIHRoZSBQb3J0IGluc3RhbmNlCi0gICAqLwotICBwdWJsaWMgUG9ydCBnZW5lcmF0ZVBvcnQoKQotICB7Ci0gICAgU3RyaW5nIHBvcnROYW1lID0gZ2V0TmFtZSgpOwotICAgIFN0cmluZyBiaW5kaW5nTmFtZSA9IGdldFJlZk5hbWUoKTsKLQotICAgIEJpbmRpbmcgYmluZGluZyA9IGdldEJpbmRpbmcoYmluZGluZ05hbWUpOwotCi0gICAgUG9ydCBwb3J0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVBvcnQoKTsKLSAgICBwb3J0LnNldE5hbWUocG9ydE5hbWUpOwotICAgIHBvcnQuc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihkZWZpbml0aW9uKTsKLSAgICBwb3J0LnNldEJpbmRpbmcoYmluZGluZyk7Ci0KLSAgICBzZXJ2aWNlLmFkZFBvcnQocG9ydCk7Ci0KLSAgICBDb250ZW50R2VuZXJhdG9yIGNvbnRlbnRHZW5lcmF0b3IgPSBnZXRDb250ZW50R2VuZXJhdG9yKCk7Ci0KLSAgICBpZiAoY29udGVudEdlbmVyYXRvciAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vd3RwIGJ1ZyAyMjEwMjQgLSBuYW1lc3BhY2UgYW5kIHByZWZpeGVzIGFyZSBub3QgYWRkZWQgd2hlbiBhZGQgbmV3IHBvcnQKLSAgICAgIGFkZFJlcXVpcmVkTmFtZXNwYWNlcyhzZXJ2aWNlLmdldEVuY2xvc2luZ0RlZmluaXRpb24oKSk7Ci0gICAgICBjb250ZW50R2VuZXJhdG9yLnNldEFkZHJlc3NMb2NhdGlvbihhZGRyZXNzTG9jYXRpb24pOwotICAgICAgY29udGVudEdlbmVyYXRvci5nZW5lcmF0ZVBvcnRDb250ZW50KHBvcnQpOwotICAgIH0KLQotICAgIHJldHVybiBwb3J0OwotICB9Ci0KLSAgLyoKLSAgICogbWV0aG9kcyBhZGRSZXF1aXJlZE5hbWVzcGFjZXMoKSBhbmQgY29tcHV0ZVVuaXF1ZVByZWZpeCgpIGFyZSB1c2VkIHRvIGFkZCBuZWNlc3NhcnkKLSAgICogbmFtZXNwYWNlcyAKLSAgICogCi0gICAqIFRPRE86Ci0gICAqIERvZXMgdGhpcyBiZWxvbmcgaGVyZT8gIFRoaXMgaXMgY29waWVkIGZyb20gd3NkbC51aS4gIENhbiB3ZSBzeW5jIHVwIGluIHNvbWUgd2F5PwotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgYWRkUmVxdWlyZWROYW1lc3BhY2VzKERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgIGlmIChjb250ZW50R2VuZXJhdG9yICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nW10gbmFtZXNwYWNlTmFtZXMgPSBjb250ZW50R2VuZXJhdG9yLmdldFJlcXVpcmVkTmFtZXNwYWNlcygpOwotICAgICAgU3RyaW5nW10gcHJlZmVycmVkUHJlZml4ZXMgPSBuZXcgU3RyaW5nIFtuYW1lc3BhY2VOYW1lcy5sZW5ndGhdOwotICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IG5hbWVzcGFjZU5hbWVzLmxlbmd0aDsgaW5kZXgrKykKLSAgICAgIHsKLSAgICAgICAgcHJlZmVycmVkUHJlZml4ZXNbaW5kZXhdID0gY29udGVudEdlbmVyYXRvci5nZXRQcmVmZXJyZWROYW1lc3BhY2VQcmVmaXgobmFtZXNwYWNlTmFtZXNbaW5kZXhdKTsKLSAgICAgIH0KLQotICAgICAgTWFwIG1hcCA9IGRlZmluaXRpb24uZ2V0TmFtZXNwYWNlcygpOwotCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5hbWVzcGFjZU5hbWVzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBTdHJpbmcgbmFtZXNwYWNlID0gbmFtZXNwYWNlTmFtZXNbaV07Ci0gICAgICAgIGlmICghbWFwLmNvbnRhaW5zVmFsdWUobmFtZXNwYWNlKSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBwcmVmaXggPSAoaSA8IHByZWZlcnJlZFByZWZpeGVzLmxlbmd0aCkgPyBwcmVmZXJyZWRQcmVmaXhlc1tpXSA6ICJwMCI7Ci0gICAgICAgICAgaWYgKG1hcC5jb250YWluc0tleShwcmVmaXgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHByZWZpeCA9IGNvbXB1dGVVbmlxdWVQcmVmaXgoInAiLCBtYXApOwotICAgICAgICAgIH0KLSAgICAgICAgICBkZWZpbml0aW9uLmFkZE5hbWVzcGFjZShwcmVmaXgsIG5hbWVzcGFjZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIFN0cmluZyBjb21wdXRlVW5pcXVlUHJlZml4KFN0cmluZyBiYXNlLCBNYXAgdGFibGUpCi0gIHsKLSAgICBpbnQgaSA9IDA7Ci0gICAgU3RyaW5nIHByZWZpeCA9IGJhc2U7Ci0gICAgd2hpbGUgKHRydWUpCi0gICAgewotICAgICAgaWYgKCF0YWJsZS5jb250YWluc0tleShwcmVmaXgpKQotICAgICAgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcHJlZml4ID0gYmFzZSArIGk7Ci0gICAgICAgIGkrKzsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHByZWZpeDsKLSAgfQotCi0gIC8qKgotICAgKiBMb2NhdGVzIGEgYmluZGluZyBnaXZlbiBpdHMgcHJlZml4ZWQgbmFtZSAoc29tZU5TUHJlZml4OnNvbWVCaW5kaW5nTmFtZSkuCi0gICAqIAotICAgKiBAcGFyYW0gYmluZGluZ05hbWUgdGhlIHFuYW1lIG9mIHRoZSBkZXNpcmVkIGJpbmRpbmcuCi0gICAqIEByZXR1cm4gYSBCaW5kaW5nIHdpdGggdGhlIGdpdmVuIG5hbWUsIG9yIG51bGwgaWYgb25lIGlzIG5vdCBmb3VuZC4KLSAgICovCi0gIHByaXZhdGUgQmluZGluZyBnZXRCaW5kaW5nKFN0cmluZyBiaW5kaW5nTmFtZSkKLSAgewotICAgIExpc3QgYWxsQmluZGluZ3MgPSBnZXRBbGxCaW5kaW5ncygpOwotICAgIEl0ZXJhdG9yIGJpbmRpbmdJdGVyYXRvciA9IGFsbEJpbmRpbmdzLml0ZXJhdG9yKCk7Ci0KLSAgICB3aGlsZSAoYmluZGluZ0l0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZyliaW5kaW5nSXRlcmF0b3IubmV4dCgpOwotCi0gICAgICBMaXN0IHByZWZpeGVkTmFtZXMgPSBnZXRQcmVmaXhlZE5hbWVzKGJpbmRpbmcpOwotCi0gICAgICBpZiAocHJlZml4ZWROYW1lcy5jb250YWlucyhiaW5kaW5nTmFtZSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBiaW5kaW5nOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIExvY2F0ZXMgYWxsIHRoZSBiaW5kaW5ncyBhdmFpbGFibGUgaW4gdGhpcyBkZWZpbml0aW9uIGFuZCBhbGwgaXRzCi0gICAqIGltcG9ydGVkIGRlZmluaXRpb25zLgotICAgKiAKLSAgICogQHJldHVybiBhIExpc3Qgd2l0aCBhbGwgYXZhaWxhYmxlIGJpbmRpbmdzLgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0QWxsQmluZGluZ3MoKQotICB7Ci0gICAgTGlzdCBhbGxCaW5kaW5ncyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBMaXN0IGFsbERlZmluaXRpb25zID0gZ2V0QWxsRGVmaW5pdGlvbnMoKTsKLQotICAgIEl0ZXJhdG9yIGRlZnNJdGVyYXRvciA9IGFsbERlZmluaXRpb25zLml0ZXJhdG9yKCk7Ci0KLSAgICB3aGlsZSAoZGVmc0l0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSAoRGVmaW5pdGlvbilkZWZzSXRlcmF0b3IubmV4dCgpOwotICAgICAgTWFwIGJpbmRpbmdzID0gZGVmaW5pdGlvbi5nZXRCaW5kaW5ncygpOwotCi0gICAgICAvLyBJU1NVRSBBIHBvc3NpYmxlIHByb2JsZW0gaGVyZSBpZiBzb21laG93IGEgYmluZGluZyBpcyBkdXBsaWNhdGVkIGluIG9uZSBvZiB0aGUgaW1wb3J0cz8KLSAgICAgIC8vIEluIHRoYXQgY2FzZSB3ZSBzaG91bGQgaXRlcmF0ZSBvdmVyIGFuZCBjaGVjayB0aGVtIG9uZSBieSBvbmUuCi0KLSAgICAgIGFsbEJpbmRpbmdzLmFkZEFsbChiaW5kaW5ncy52YWx1ZXMoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFsbEJpbmRpbmdzOwotICB9Ci0KLSAgLyoqCi0gICAqIEF0dGVtcHRzIHRvIGxvY2F0ZSBhbmQgYWRkIHRvIHRoZSBsaXN0IGFsbCB0aGUgZGVmaW5pdGlvbnMgaW1wb3J0ZWQgYnkgdGhlCi0gICAqIGRlZmluaXRpb24gcGFzc2VkIGluLiBSZWN1cnNpdmVseSB0cmllcyB0byBsb2NhdGUgYWxsIGRlZmluaXRpb25zLgotICAgKiAKLSAgICogQHBhcmFtIGRlZmluaXRpb24gdGhlIHN0YXJ0IERlZmluaXRpb24uIE11c3Qgbm90IGJlIG51bGwuCi0gICAqIEBwYXJhbSBsaXN0IHVzZWQgdG8gY29sbGVjdCBhbGwgdGhlIGltcG9ydGVkIGRlZmluaXRpb25zLiBNdXN0IG5vdCBiZSBudWxsLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGFkZERlZmluaXRpb24oRGVmaW5pdGlvbiBkZWZpbml0aW9uLCBMaXN0IGxpc3QpCi0gIHsKLSAgICBsaXN0LmFkZChkZWZpbml0aW9uKTsKLSAgICBMaXN0IGltcG9ydHMgPSBkZWZpbml0aW9uLmdldEVJbXBvcnRzKCk7Ci0gICAgSXRlcmF0b3IgaW1wb3J0c0l0ZXJhdG9yID0gaW1wb3J0cy5pdGVyYXRvcigpOwotCi0gICAgd2hpbGUgKGltcG9ydHNJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgSW1wb3J0IHRoZUltcG9ydCA9IChJbXBvcnQpaW1wb3J0c0l0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgU3RyaW5nIGltcG9ydExvY2F0aW9uVVJJID0gdGhlSW1wb3J0LmdldExvY2F0aW9uVVJJKCk7Ci0gICAgICBpZiAoaW1wb3J0TG9jYXRpb25VUkkgIT0gbnVsbCAmJgotICAgICAgLy8gSVNTVUUgVGhpcyBhc3N1bXB0aW9uIHNlZW1zIGEgYml0IHdlYWsuCi0gICAgICAgIGltcG9ydExvY2F0aW9uVVJJLmVuZHNXaXRoKCJ3c2RsIikpCi0gICAgICB7Ci0gICAgICAgIERlZmluaXRpb24gaW1wb3J0ZWREZWZpbml0aW9uID0gdGhlSW1wb3J0LmdldEVEZWZpbml0aW9uKCk7Ci0KLSAgICAgICAgaWYgKGltcG9ydGVkRGVmaW5pdGlvbiAhPSBudWxsICYmICFsaXN0LmNvbnRhaW5zKGltcG9ydGVkRGVmaW5pdGlvbikpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBSZWN1cnNpdmVseSB0cnkgdG8gbG9jYXRlIGFsbCBkZWZpbml0aW9ucy4KLQotICAgICAgICAgIGFkZERlZmluaXRpb24oaW1wb3J0ZWREZWZpbml0aW9uLCBsaXN0KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBBdHRlbXB0cyB0byBsb2NhdGUgYWxsIGRlZmluaXRpb25zIGltcG9ydGVkIGJ5IHRoZSBjdXJyZW50IGRlZmluaXRpb24gYW5kCi0gICAqIGFsbCB0aGVpciBpbXBvcnRzIGluIHR1cm4uIAotICAgKiAKLSAgICogQHJldHVybiBhIExpc3Qgd2l0aCBhbGwgZGVmaW5pdGlvbnMgaW1wb3J0ZWQgYnkgdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4KLSAgICovCi0gIHByaXZhdGUgTGlzdCBnZXRBbGxEZWZpbml0aW9ucygpCi0gIHsKLSAgICBMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgYWRkRGVmaW5pdGlvbihkZWZpbml0aW9uLCBsaXN0KTsKLSAgICByZXR1cm4gbGlzdDsKLSAgfQotCi0gIHByaXZhdGUgTGlzdCBnZXRQcmVmaXhlZE5hbWVzKEJpbmRpbmcgYmluZGluZykKLSAgewotICAgIExpc3QgcHJlZml4ZWROYW1lcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBTdHJpbmcgY3VycmVudEJpbmRpbmdOYW1lID0gYmluZGluZy5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpOwotICAgIFN0cmluZyBjdXJyZW50TmFtZXNwYWNlID0gYmluZGluZy5nZXRRTmFtZSgpLmdldE5hbWVzcGFjZVVSSSgpOwotCi0gICAgTWFwIG5hbWVzcGFjZU1hcCA9IGRlZmluaXRpb24uZ2V0TmFtZXNwYWNlcygpOwotICAgIEl0ZXJhdG9yIGtleXMgPSBuYW1lc3BhY2VNYXAua2V5U2V0KCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoa2V5cy5oYXNOZXh0KCkpCi0gICAgewotICAgICAgT2JqZWN0IGtleSA9IGtleXMubmV4dCgpOwotICAgICAgT2JqZWN0IHZhbHVlID0gbmFtZXNwYWNlTWFwLmdldChrZXkpOwotCi0gICAgICBpZiAoY3VycmVudE5hbWVzcGFjZS5lcXVhbHModmFsdWUpKQotICAgICAgewotICAgICAgICAvLyBGb3VuZCBhIG1hdGNoLiAgQWRkIHRvIG91ciBsaXN0Ci0gICAgICAgIHByZWZpeGVkTmFtZXMuYWRkKGtleSArICI6IiArIGN1cnJlbnRCaW5kaW5nTmFtZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcHJlZml4ZWROYW1lczsKLSAgfQotCi0gIHB1YmxpYyBTZXJ2aWNlIGdldFNlcnZpY2UoKQotICB7Ci0gICAgcmV0dXJuIHNlcnZpY2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZ2VuZXJhdG9yL2V4dGVuc2lvbi9Db250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uRGVzY3JpcHRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9nZW5lcmF0b3IvZXh0ZW5zaW9uL0NvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25EZXNjcmlwdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MWJmZjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9nZW5lcmF0b3IvZXh0ZW5zaW9uL0NvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25EZXNjcmlwdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvci5leHRlbnNpb247Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvci5Db250ZW50R2VuZXJhdG9yOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGU7Ci0KLQotLyoKLSAqIENsYXNzIHdoaWNoIGFjdHMgYXMgYSBjb250YWluZXIgdG8gaG9sZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXh0ZW5zaW9uLgotICovCi1wdWJsaWMgY2xhc3MgQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkRlc2NyaXB0b3IKLXsKLSAgcHJvdGVjdGVkIEJ1bmRsZSBidW5kbGU7Ci0KLSAgcHJvdGVjdGVkIENvbnRlbnRHZW5lcmF0b3IgY29udGVudEdlbmVyYXRvcjsKLQotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWVzcGFjZTsKLQotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWU7Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBjbGFzc05hbWU7Ci0KLSAgcHVibGljIENvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25EZXNjcmlwdG9yKEJ1bmRsZSBidW5kbGUsIFN0cmluZyBjbGFzc1N0cmluZywgU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIG5hbWUpCi0gIHsKLSAgICB0aGlzLmJ1bmRsZSA9IGJ1bmRsZTsKLSAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwotICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NTdHJpbmc7Ci0gIH0KLQotICBwdWJsaWMgT2JqZWN0IGdldENvbnRlbnRHZW5lcmF0b3IoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgQ2xhc3MgdGhlQ2xhc3MgPSBidW5kbGUubG9hZENsYXNzKGNsYXNzTmFtZSk7Ci0gICAgICBjb250ZW50R2VuZXJhdG9yID0gKENvbnRlbnRHZW5lcmF0b3IpdGhlQ2xhc3MubmV3SW5zdGFuY2UoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbnRlbnRHZW5lcmF0b3I7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldE5hbWVzcGFjZSgpCi0gIHsKLSAgICByZXR1cm4gbmFtZXNwYWNlOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgewotICAgIHJldHVybiBuYW1lOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2dlbmVyYXRvci9leHRlbnNpb24vQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9nZW5lcmF0b3IvZXh0ZW5zaW9uL0NvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25GYWN0b3J5UmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ1YzEyMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2dlbmVyYXRvci9leHRlbnNpb24vQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIAotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ29tbW9uIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuZ2VuZXJhdG9yLmV4dGVuc2lvbjsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvci5Db250ZW50R2VuZXJhdG9yOwotCi0KLXB1YmxpYyBjbGFzcyBDb250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uRmFjdG9yeVJlZ2lzdHJ5Ci17Ci0gIHByb3RlY3RlZCBNYXAgbWFwOwotCi0gIHByb3RlY3RlZCBzdGF0aWMgQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeSBpbnN0YW5jZTsKLQotICBwdWJsaWMgc3RhdGljIENvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25GYWN0b3J5UmVnaXN0cnkgZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgaWYgKGluc3RhbmNlID09IG51bGwpCi0gICAgewotICAgICAgaW5zdGFuY2UgPSBuZXcgQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeSgpOwotCi0gICAgICAvLyBUT0RPLi4uIGRvbid0IHJlYWQgdGhlIHJlZ2lzdHJ5IHVudGlsIGFuICdnZXQnb2NjdXJzCi0gICAgICAvLwotICAgICAgQ29udGVudEdlbmVyYXRvckV4dGVuc2lvblJlZ2lzdHJ5UmVhZGVyIHJlYWRlciA9IG5ldyBDb250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uUmVnaXN0cnlSZWFkZXIoaW5zdGFuY2UpOwotICAgICAgcmVhZGVyLnJlYWRSZWdpc3RyeSgpOwotICAgIH0KLQotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotCi0gIHByb3RlY3RlZCBDb250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uRmFjdG9yeVJlZ2lzdHJ5KCkKLSAgewotICAgIG1hcCA9IG5ldyBIYXNoTWFwKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBwdXQoU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIG5hbWUsIENvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IpCi0gIHsKLSAgICAvLyBDaGVjayBpZiB0aGlzIG5hbWVzcGFjZS9uYW1lIGtleSBpcyBhbHJlYWR5IGluIHRoZSBNYXAKLSAgICBMaXN0IGZvdW5kS2V5ID0gZmluZEV4aXN0aW5nS2V5KG5hbWVzcGFjZSwgbmFtZSk7Ci0KLSAgICAvLyBEaWQgd2UgZmluZCBhbiBleGlzdGluZyBrZXkgd2l0aCB0aGUgc2FtZSBuYW1lc3BhY2Uva2V5IHBhaXJpbmc/Ci0gICAgaWYgKGZvdW5kS2V5ICE9IG51bGwpCi0gICAgewotICAgICAgLy8gU2ltcGx5IGFkZCB0aGUgZGVzY3JpcHRvciB0byB0aGUgbGlzdCBvZiBkZXNjcmlwdG9ycyBhc3NvY2lhdGVkCi0gICAgICAvLyB3aXRoIHRoaXMgbmFtZXNwYWNlL25hbWUga2V5Ci0gICAgICBMaXN0IGRlc2NyaXB0b3JMaXN0ID0gKExpc3QpbWFwLmdldChmb3VuZEtleSk7Ci0gICAgICBkZXNjcmlwdG9yTGlzdC5hZGQoZGVzY3JpcHRvcik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbnRyeSBpbiB0aGUgTWFwIGZvciB0aGlzIG5hbWVzcGFjZS9uYW1lIGtleQotICAgICAgTGlzdCBuZXdLZXkgPSBuZXcgQXJyYXlMaXN0KDIpOwotICAgICAgbmV3S2V5LmFkZChuYW1lc3BhY2UpOwotICAgICAgbmV3S2V5LmFkZChuYW1lKTsKLQotICAgICAgTGlzdCBuZXdEZXNjcmlwdG9yTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgIG5ld0Rlc2NyaXB0b3JMaXN0LmFkZChkZXNjcmlwdG9yKTsKLQotICAgICAgbWFwLnB1dChuZXdLZXksIG5ld0Rlc2NyaXB0b3JMaXN0KTsKLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiBSZXR1cm5zIHRoZSAnbmFtZScgYXR0cmlidXRlIGZvciB0aGlzIGV4dGVuc2lvbi4KLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEJpbmRpbmdFeHRlbnNpb25OYW1lcygpCi0gIHsKLSAgICBMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICBJdGVyYXRvciBrZXlJdCA9IG1hcC5rZXlTZXQoKS5pdGVyYXRvcigpOwotICAgIExpc3Qga2V5ID0gbnVsbDsKLSAgICB3aGlsZSAoa2V5SXQuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIGtleSA9IChMaXN0KWtleUl0Lm5leHQoKTsKLSAgICAgIGxpc3QuYWRkKGtleS5nZXQoMSkpOwotICAgIH0KLQotICAgIHJldHVybiBsaXN0OwotICB9Ci0KLSAgLyoKLSAgICogUmV0dXJuIHRoZSBjbGFzcyBzcGVjaWZpZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIGJhc2VkIG9uIHRoZSBuYW1lc3BhY2UKLSAgICogYXR0cmlidXRlLgotICAgKi8KLSAgcHVibGljIENvbnRlbnRHZW5lcmF0b3IgZ2V0R2VuZXJhdG9yQ2xhc3NGcm9tTmFtZXNwYWNlKFN0cmluZyBuYW1lc3BhY2UpCi0gIHsKLSAgICBDb250ZW50R2VuZXJhdG9yIGdlbmVyYXRvckNsYXNzID0gbnVsbDsKLSAgICBMaXN0IGtleSA9IGZpbmRFeGlzdGluZ0tleUZyb21OYW1lc3BhY2UobmFtZXNwYWNlKTsKLQotICAgIGlmIChrZXkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMaXN0IGRlc2NyaXB0b3JzID0gKExpc3QpbWFwLmdldChrZXkpOwotCi0gICAgICAvLyBHcmFiIHRoZSBmaXJzdCBkZXNjcmlwdG9yIGF2YWlsYWJsZQotICAgICAgaWYgKGRlc2NyaXB0b3JzLnNpemUoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIENvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25EZXNjcmlwdG9yIGV4dGVuc2lvbkRlc2NyaXB0b3IgPSAoQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkRlc2NyaXB0b3IpZGVzY3JpcHRvcnMuZ2V0KDApOwotICAgICAgICBnZW5lcmF0b3JDbGFzcyA9IChDb250ZW50R2VuZXJhdG9yKWV4dGVuc2lvbkRlc2NyaXB0b3IuZ2V0Q29udGVudEdlbmVyYXRvcigpOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBnZW5lcmF0b3JDbGFzczsKLSAgfQotCi0gIC8qCi0gICAqIFJldHVybiB0aGUgY2xhc3Mgc3BlY2lmaWVkIGZvciB0aGlzIGV4dGVuc2lvbiBiYXNlZCBvbiB0aGUgbmFtZQotICAgKiBhdHRyaWJ1dGUuCi0gICAqLwotICBwdWJsaWMgQ29udGVudEdlbmVyYXRvciBnZXRHZW5lcmF0b3JDbGFzc0Zyb21OYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gICAgQ29udGVudEdlbmVyYXRvciBnZW5lcmF0b3JDbGFzcyA9IG51bGw7Ci0gICAgTGlzdCBrZXkgPSBmaW5kRXhpc3RpbmdLZXlGcm9tTmFtZShuYW1lKTsKLQotICAgIGlmIChrZXkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMaXN0IGRlc2NyaXB0b3JzID0gKExpc3QpbWFwLmdldChrZXkpOwotCi0gICAgICAvLyBHcmFiIHRoZSBmaXJzdCBkZXNjcmlwdG9yIGF2YWlsYWJsZQotICAgICAgaWYgKGRlc2NyaXB0b3JzLnNpemUoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIENvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25EZXNjcmlwdG9yIGV4dGVuc2lvbkRlc2NyaXB0b3IgPSAoQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkRlc2NyaXB0b3IpZGVzY3JpcHRvcnMuZ2V0KDApOwotICAgICAgICBnZW5lcmF0b3JDbGFzcyA9IChDb250ZW50R2VuZXJhdG9yKWV4dGVuc2lvbkRlc2NyaXB0b3IuZ2V0Q29udGVudEdlbmVyYXRvcigpOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBnZW5lcmF0b3JDbGFzczsKLSAgfQotCi0gIC8vIFRPRE86IFdlIG5lZWQgdG8gY29tbW9uIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcyB1cC4uLi4uLi4KLSAgcHJpdmF0ZSBMaXN0IGZpbmRFeGlzdGluZ0tleUZyb21OYW1lc3BhY2UoU3RyaW5nIG5hbWVzcGFjZSkKLSAgewotICAgIEl0ZXJhdG9yIGtleUl0ID0gbWFwLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgTGlzdCBmb3VuZEtleSA9IG51bGw7Ci0gICAgd2hpbGUgKGtleUl0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBmb3VuZEtleSA9IChMaXN0KWtleUl0Lm5leHQoKTsKLSAgICAgIGlmIChuYW1lc3BhY2UuZXF1YWxzKGZvdW5kS2V5LmdldCgwKSkpCi0gICAgICB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZm91bmRLZXkgPSBudWxsOwotICAgIH0KLQotICAgIHJldHVybiBmb3VuZEtleTsKLSAgfQotCi0gIHByaXZhdGUgTGlzdCBmaW5kRXhpc3RpbmdLZXlGcm9tTmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIEl0ZXJhdG9yIGtleUl0ID0gbWFwLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgTGlzdCBmb3VuZEtleSA9IG51bGw7Ci0gICAgd2hpbGUgKGtleUl0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBmb3VuZEtleSA9IChMaXN0KWtleUl0Lm5leHQoKTsKLSAgICAgIGlmIChuYW1lLmVxdWFscyhmb3VuZEtleS5nZXQoMSkpKQotICAgICAgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGZvdW5kS2V5ID0gbnVsbDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZm91bmRLZXk7Ci0gIH0KLQotICBwcml2YXRlIExpc3QgZmluZEV4aXN0aW5nS2V5KFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBuYW1lKQotICB7Ci0gICAgSXRlcmF0b3Iga2V5SXQgPSBtYXAua2V5U2V0KCkuaXRlcmF0b3IoKTsKLSAgICBMaXN0IGZvdW5kS2V5ID0gbnVsbDsKLSAgICB3aGlsZSAoa2V5SXQuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIGZvdW5kS2V5ID0gKExpc3Qpa2V5SXQubmV4dCgpOwotICAgICAgaWYgKG5hbWVzcGFjZS5lcXVhbHMoZm91bmRLZXkuZ2V0KDApKSAmJiBuYW1lLmVxdWFscyhmb3VuZEtleS5nZXQoMSkpKQotICAgICAgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGZvdW5kS2V5ID0gbnVsbDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZm91bmRLZXk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZ2VuZXJhdG9yL2V4dGVuc2lvbi9Db250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uUmVnaXN0cnlSZWFkZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvZ2VuZXJhdG9yL2V4dGVuc2lvbi9Db250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uUmVnaXN0cnlSZWFkZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYzMDJhNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2dlbmVyYXRvci9leHRlbnNpb24vQ29udGVudEdlbmVyYXRvckV4dGVuc2lvblJlZ2lzdHJ5UmVhZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvci5leHRlbnNpb247Ci0KLQotaW1wb3J0IGphdmEubmV0LlVSTDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5GaWxlTG9jYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUG9pbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklFeHRlbnNpb25SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBsdWdpbjsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotCi0KLXB1YmxpYyBjbGFzcyBDb250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uUmVnaXN0cnlSZWFkZXIKLXsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gV1NETFBsdWdpbi5nZXRQbHVnaW4oKS5nZXRTeW1ib2xpY05hbWUoKTsKLQotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRFTlNJT05fUE9JTlRfSUQgPSAiY29udGVudEdlbmVyYXRvcnMiOwotCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1FTlRfTkFNRSA9ICJjb250ZW50R2VuZXJhdG9yIjsKLQotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRfTkFNRVNQQUNFID0gIm5hbWVzcGFjZSI7Ci0KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUX05BTUUgPSAibmFtZSI7Ci0KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUX0NMQVNTID0gImNsYXNzIjsKLQotICBwcm90ZWN0ZWQgQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeSBjb250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uRmFjdG9yeVJlZ2lzdHJ5OwotCi0gIHB1YmxpYyBDb250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uUmVnaXN0cnlSZWFkZXIoQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeSBnZW5lcmF0b3JFeHRlbnNpb25GYWN0b3J5UmVnaXN0cnkpCi0gIHsKLSAgICB0aGlzLmNvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25GYWN0b3J5UmVnaXN0cnkgPSBnZW5lcmF0b3JFeHRlbnNpb25GYWN0b3J5UmVnaXN0cnk7Ci0gIH0KLQotICAvKioKLSAgICogcmVhZCBmcm9tIHBsdWdpbiByZWdpc3RyeSBhbmQgcGFyc2UgaXQuCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWFkUmVnaXN0cnkoKQotICB7Ci0gICAgSUV4dGVuc2lvblJlZ2lzdHJ5IHBsdWdpblJlZ2lzdHJ5ID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLSAgICBJRXh0ZW5zaW9uUG9pbnQgcG9pbnQgPSBwbHVnaW5SZWdpc3RyeS5nZXRFeHRlbnNpb25Qb2ludChQTFVHSU5fSUQsIEVYVEVOU0lPTl9QT0lOVF9JRCk7Ci0gICAgaWYgKHBvaW50ICE9IG51bGwpCi0gICAgewotICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gZWxlbWVudHMgPSBwb2ludC5nZXRDb25maWd1cmF0aW9uRWxlbWVudHMoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIHJlYWRFbGVtZW50KGVsZW1lbnRzW2ldKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIHJlc29sdmUoVVJMIHBsYXRmb3JtVVJMLCBTdHJpbmcgcmVsYXRpdmVQYXRoKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBVUkwgcmVzb2x2ZWRVUkwgPSBGaWxlTG9jYXRvci5yZXNvbHZlKHBsYXRmb3JtVVJMKTsKLSAgICByZXR1cm4gcmVzb2x2ZWRVUkwudG9TdHJpbmcoKSArIHJlbGF0aXZlUGF0aDsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHJlYWRFbGVtZW50KElDb25maWd1cmF0aW9uRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaWYgKGVsZW1lbnQuZ2V0TmFtZSgpLmVxdWFscyhFTEVNRU5UX05BTUUpKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnQgY2hpbGRFbGVtZW50ID0gKElDb25maWd1cmF0aW9uRWxlbWVudCllbGVtZW50OwotICAgICAgICBTdHJpbmcgbmFtZSA9IGNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUoQVRUX05BTUUpOwotICAgICAgICBTdHJpbmcgbmFtZXNwYWNlID0gY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZShBVFRfTkFNRVNQQUNFKTsKLQotICAgICAgICBpZiAobmFtZXNwYWNlICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBCdW5kbGUgcGx1Z2luQnVuZGxlID0gUGxhdGZvcm0uZ2V0QnVuZGxlKGVsZW1lbnQuZ2V0RGVjbGFyaW5nRXh0ZW5zaW9uKCkuZ2V0Q29udHJpYnV0b3IoKS5nZXROYW1lKCkpOwotICAgICAgICAgIFN0cmluZyBjbGFzc05hbWUgPSBjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKEFUVF9DTEFTUyk7Ci0gICAgICAgICAgQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IG5ldyBDb250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uRGVzY3JpcHRvcihwbHVnaW5CdW5kbGUsIGNsYXNzTmFtZSwgbmFtZXNwYWNlLCBuYW1lKTsKLSAgICAgICAgICBjb250ZW50R2VuZXJhdG9yRXh0ZW5zaW9uRmFjdG9yeVJlZ2lzdHJ5LnB1dChuYW1lc3BhY2UsIG5hbWUsIGRlc2NyaXB0b3IpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvQmluZGluZ0ZhdWx0SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0JpbmRpbmdGYXVsdEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWExNWVlNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvQmluZGluZ0ZhdWx0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzczICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIEZhdWx0PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdGYXVsdEltcGwjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nRmF1bHRJbXBsI2dldEVGYXVsdCA8ZW0+RUZhdWx0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgQmluZGluZ0ZhdWx0SW1wbCBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50SW1wbCBpbXBsZW1lbnRzIEJpbmRpbmdGYXVsdAotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWUoKSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWUgPSBOQU1FX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFRmF1bHQoKSA8ZW0+RUZhdWx0PC9lbT59JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFRmF1bHQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRmF1bHQgZUZhdWx0OwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEJpbmRpbmdGYXVsdEltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLkJJTkRJTkdfRkFVTFQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gbmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmV3TmFtZSkKLSAgewotICAgIFN0cmluZyBvbGROYW1lID0gbmFtZTsKLSAgICBuYW1lID0gbmV3TmFtZTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX19OQU1FLCBvbGROYW1lLCBuYW1lKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBGYXVsdCBnZXRFRmF1bHQoKQotICB7Ci0gICAgaWYgKGVGYXVsdCAhPSBudWxsICYmIGVGYXVsdC5lSXNQcm94eSgpKQotICAgIHsKLSAgICAgIEludGVybmFsRU9iamVjdCBvbGRFRmF1bHQgPSAoSW50ZXJuYWxFT2JqZWN0KWVGYXVsdDsKLSAgICAgIGVGYXVsdCA9IChGYXVsdCllUmVzb2x2ZVByb3h5KG9sZEVGYXVsdCk7Ci0gICAgICBpZiAoZUZhdWx0ICE9IG9sZEVGYXVsdCkKLSAgICAgIHsKLSAgICAgICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBXU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX19FRkFVTFQsIG9sZEVGYXVsdCwgZUZhdWx0KSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlRmF1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBGYXVsdCBiYXNpY0dldEVGYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gZUZhdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFRmF1bHQoRmF1bHQgbmV3RUZhdWx0KQotICB7Ci0gICAgRmF1bHQgb2xkRUZhdWx0ID0gZUZhdWx0OwotICAgIGVGYXVsdCA9IG5ld0VGYXVsdDsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX19FRkFVTFQsIG9sZEVGYXVsdCwgZUZhdWx0KSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5GYXVsdCBnZXRGYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gZ2V0RUZhdWx0KCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGYXVsdChqYXZheC53c2RsLkZhdWx0IGZhdWx0KQotICB7Ci0gICAgc2V0RUZhdWx0KChGYXVsdClmYXVsdCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfRkFVTFRfX05BTUU6Ci0gICAgICByZXR1cm4gZ2V0TmFtZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX19FRkFVTFQ6Ci0gICAgICBpZiAocmVzb2x2ZSkKLSAgICAgICAgcmV0dXJuIGdldEVGYXVsdCgpOwotICAgICAgcmV0dXJuIGJhc2ljR2V0RUZhdWx0KCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19GQVVMVF9fTkFNRToKLSAgICAgIHNldE5hbWUoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfRkFVTFRfX0VGQVVMVDoKLSAgICAgIHNldEVGYXVsdCgoRmF1bHQpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19GQVVMVF9fTkFNRToKLSAgICAgIHNldE5hbWUoTkFNRV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfRkFVTFRfX0VGQVVMVDoKLSAgICAgIHNldEVGYXVsdCgoRmF1bHQpbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19GQVVMVF9fTkFNRToKLSAgICAgIHJldHVybiBOQU1FX0VERUZBVUxUID09IG51bGwgPyBuYW1lICE9IG51bGwgOiAhTkFNRV9FREVGQVVMVC5lcXVhbHMobmFtZSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfRkFVTFRfX0VGQVVMVDoKLSAgICAgIHJldHVybiBlRmF1bHQgIT0gbnVsbDsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKG5hbWU6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChuYW1lKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxlIG1ldGhvZHMKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBTdHJpbmcgbmFtZSA9IGNoYW5nZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgibmFtZSIpOwotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgewotICAgICAgc2V0TmFtZShuYW1lKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBoYW5kbGVVbnJlY29uY2lsZWRFbGVtZW50KEVsZW1lbnQgY2hpbGQsIENvbGxlY3Rpb24gcmVtYWluaW5nTW9kZWxPYmplY3RzKQotICB7Ci0gICAgc3VwZXIuaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChjaGlsZCwgcmVtYWluaW5nTW9kZWxPYmplY3RzKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGhhbmRsZVJlY29uY2lsaWF0aW9uKENvbGxlY3Rpb24gcmVtYWluaW5nTW9kZWxPYmplY3RzKQotICB7Ci0gICAgZm9yIChJdGVyYXRvciBpID0gcmVtYWluaW5nTW9kZWxPYmplY3RzLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkucmVtb3ZlKGkubmV4dCgpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgQ29sbGVjdGlvbiBnZXRNb2RlbE9iamVjdHMoT2JqZWN0IGNvbXBvbmVudCkKLSAgewotICAgIEJpbmRpbmdGYXVsdCBiaW5kaW5nRmF1bHQgPSAoQmluZGluZ0ZhdWx0KWNvbXBvbmVudDsKLSAgICBMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgbGlzdC5hZGRBbGwoYmluZGluZ0ZhdWx0LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgcmV0dXJuIGxpc3Q7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gV1NETFBhY2thZ2UuTGl0ZXJhbHMuQklORElOR19GQVVMVF9fTkFNRSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBXU0RMQ29uc3RhbnRzLk5BTUVfQVRUUklCVVRFLCBnZXROYW1lKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoKQotICB7Ci0gICAgRWxlbWVudCBuZXdFbGVtZW50ID0gY3JlYXRlRWxlbWVudChXU0RMQ29uc3RhbnRzLkZBVUxUKTsKLSAgICBzZXRFbGVtZW50KG5ld0VsZW1lbnQpOwotCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpOwotICAgICAgRWxlbWVudCBjaGlsZCA9ICgoRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsKWV4dGVuc2liaWxpdHlFbGVtZW50KS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotCi0gIC8vIFJlc29sdmUgdGhlIHJlZmVyZW5jZSB0byBGYXVsdAotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVSZWZlcmVuY2VzKGJvb2xlYW4gZGVlcCkKLSAgewotICAgIGlmIChlbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24pZ2V0Q29udGFpbmVyKCk7Ci0gICAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gYmluZGluZ09wZXJhdGlvbi5nZXRFT3BlcmF0aW9uKCk7Ci0gICAgICBTdHJpbmcgZmF1bHROYW1lID0gZ2V0TmFtZSgpOwotCi0gICAgICBpZiAob3BlcmF0aW9uICE9IG51bGwgJiYgZmF1bHROYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGphdmF4LndzZGwuRmF1bHQgZmF1bHQgPSBvcGVyYXRpb24uZ2V0RmF1bHQoZmF1bHROYW1lKTsKLQotICAgICAgICBpZiAoZmF1bHQgIT0gZ2V0RmF1bHQoKSkKLSAgICAgICAgewotICAgICAgICAgIHNldEZhdWx0KGZhdWx0KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBzdXBlci5yZWNvbmNpbGVSZWZlcmVuY2VzKGRlZXApOwotICB9Ci19IC8vQmluZGluZ0ZhdWx0SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0JpbmRpbmdJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvQmluZGluZ0ltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRiZDNhYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvQmluZGluZ0ltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYzOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbkNoYWluOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdENvbnRhaW5tZW50RUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuSW50ZXJuYWxFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC51dGlsLldTRExVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdJbXBsI2dldFFOYW1lIDxlbT5RTmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nSW1wbCNpc1VuZGVmaW5lZCA8ZW0+VW5kZWZpbmVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdJbXBsI2dldEVQb3J0VHlwZSA8ZW0+RVBvcnQgVHlwZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nSW1wbCNnZXRFQmluZGluZ09wZXJhdGlvbnMgPGVtPkVCaW5kaW5nIE9wZXJhdGlvbnM8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBCaW5kaW5nSW1wbCBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50SW1wbCBpbXBsZW1lbnRzIEJpbmRpbmcKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRRTmFtZSgpIDxlbT5RTmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0UU5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFFOYW1lIFFOQU1FX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0UU5hbWUoKSA8ZW0+UU5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFFOYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFFOYW1lIHFOYW1lID0gUU5BTUVfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNpc1VuZGVmaW5lZCgpIDxlbT5VbmRlZmluZWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2lzVW5kZWZpbmVkKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBib29sZWFuIFVOREVGSU5FRF9FREVGQVVMVCA9IGZhbHNlOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNpc1VuZGVmaW5lZCgpIDxlbT5VbmRlZmluZWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2lzVW5kZWZpbmVkKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gdW5kZWZpbmVkID0gVU5ERUZJTkVEX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFUG9ydFR5cGUoKSA8ZW0+RVBvcnQgVHlwZTwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RVBvcnRUeXBlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFBvcnRUeXBlIGVQb3J0VHlwZTsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCkgPGVtPkVCaW5kaW5nIE9wZXJhdGlvbnM8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVMaXN0IGVCaW5kaW5nT3BlcmF0aW9uczsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBCaW5kaW5nSW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpCi0gIHsKLSAgICByZXR1cm4gV1NETFBhY2thZ2UuTGl0ZXJhbHMuQklORElORzsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFFOYW1lIGdldFFOYW1lKCkKLSAgewotICAgIHJldHVybiBxTmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UU5hbWUoUU5hbWUgbmV3UU5hbWUpCi0gIHsKLSAgICBRTmFtZSBvbGRRTmFtZSA9IHFOYW1lOwotICAgIHFOYW1lID0gbmV3UU5hbWU7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuQklORElOR19fUU5BTUUsIG9sZFFOYW1lLCBxTmFtZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1VuZGVmaW5lZCgpCi0gIHsKLSAgICByZXR1cm4gdW5kZWZpbmVkOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRVbmRlZmluZWQoYm9vbGVhbiBuZXdVbmRlZmluZWQpCi0gIHsKLSAgICBib29sZWFuIG9sZFVuZGVmaW5lZCA9IHVuZGVmaW5lZDsKLSAgICB1bmRlZmluZWQgPSBuZXdVbmRlZmluZWQ7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuQklORElOR19fVU5ERUZJTkVELCBvbGRVbmRlZmluZWQsIHVuZGVmaW5lZCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUG9ydFR5cGUgZ2V0RVBvcnRUeXBlKCkKLSAgewotICAgIGlmIChlUG9ydFR5cGUgIT0gbnVsbCAmJiBlUG9ydFR5cGUuZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkRVBvcnRUeXBlID0gKEludGVybmFsRU9iamVjdCllUG9ydFR5cGU7Ci0gICAgICBlUG9ydFR5cGUgPSAoUG9ydFR5cGUpZVJlc29sdmVQcm94eShvbGRFUG9ydFR5cGUpOwotICAgICAgaWYgKGVQb3J0VHlwZSAhPSBvbGRFUG9ydFR5cGUpCi0gICAgICB7Ci0gICAgICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgV1NETFBhY2thZ2UuQklORElOR19fRVBPUlRfVFlQRSwgb2xkRVBvcnRUeXBlLCBlUG9ydFR5cGUpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVQb3J0VHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFBvcnRUeXBlIGJhc2ljR2V0RVBvcnRUeXBlKCkKLSAgewotICAgIHJldHVybiBlUG9ydFR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVQb3J0VHlwZShQb3J0VHlwZSBuZXdFUG9ydFR5cGUpCi0gIHsKLSAgICBQb3J0VHlwZSBvbGRFUG9ydFR5cGUgPSBlUG9ydFR5cGU7Ci0gICAgZVBvcnRUeXBlID0gbmV3RVBvcnRUeXBlOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLkJJTkRJTkdfX0VQT1JUX1RZUEUsIG9sZEVQb3J0VHlwZSwgZVBvcnRUeXBlKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFQmluZGluZ09wZXJhdGlvbnMoKQotICB7Ci0gICAgaWYgKGVCaW5kaW5nT3BlcmF0aW9ucyA9PSBudWxsKQotICAgIHsKLSAgICAgIGVCaW5kaW5nT3BlcmF0aW9ucyA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChCaW5kaW5nT3BlcmF0aW9uLmNsYXNzLCB0aGlzLCBXU0RMUGFja2FnZS5CSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVCaW5kaW5nT3BlcmF0aW9uczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBBZGQgYW4gb3BlcmF0aW9uIGJpbmRpbmcgdG8gYmluZGluZy4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRCaW5kaW5nT3BlcmF0aW9uKGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uKQotICB7Ci0gICAgZ2V0QmluZGluZ09wZXJhdGlvbnMoKS5hZGQoYmluZGluZ09wZXJhdGlvbik7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogR2V0IHRoZSBzcGVjaWZpZWQgb3BlcmF0aW9uIGJpbmRpbmcuIE5vdGUgdGhhdCBvcGVyYXRpb24gbmFtZXMgY2FuCi0gICAqIGJlIG92ZXJsb2FkZWQgd2l0aGluIGEgUG9ydFR5cGUuIEluIGNhc2Ugb2Ygb3ZlcmxvYWRpbmcsIHRoZQotICAgKiBuYW1lcyBvZiB0aGUgaW5wdXQgYW5kIG91dHB1dCBtZXNzYWdlcyBjYW4gYmUgdXNlZCB0byBmdXJ0aGVyCi0gICAqIHJlZmluZSB0aGUgc2VhcmNoLgotICAgKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiB0aGUgZGVzaXJlZCBvcGVyYXRpb24gYmluZGluZy4KLSAgICogQHBhcmFtIGlucHV0TmFtZSB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgbWVzc2FnZTsgaWYgdGhpcyBpcyBudWxsCi0gICAqIGl0IHdpbGwgYmUgaWdub3JlZC4KLSAgICogQHBhcmFtIG91dHB1dE5hbWUgdGhlIG5hbWUgb2YgdGhlIG91dHB1dCBtZXNzYWdlOyBpZiB0aGlzIGlzIG51bGwKLSAgICogaXQgd2lsbCBiZSBpZ25vcmVkLgotICAgKiBAcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBiaW5kaW5nLCBvciBudWxsIGlmIHRoZXJlIHdhc24ndAotICAgKiBhbnkgbWF0Y2hpbmcgb3BlcmF0aW9uIGJpbmRpbmcKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uIGdldEJpbmRpbmdPcGVyYXRpb24oU3RyaW5nIG5hbWUsIFN0cmluZyBpbnB1dE5hbWUsIFN0cmluZyBvdXRwdXROYW1lKQotICB7Ci0gICAgSXRlcmF0b3Igb3BCaW5kaW5nSXRlcmF0b3IgPSBnZXRCaW5kaW5nT3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKG9wQmluZGluZ0l0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb24gb3AgPSAoamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uKW9wQmluZGluZ0l0ZXJhdG9yLm5leHQoKTsKLSAgICAgIGlmIChvcCA9PSBudWxsKQotICAgICAgICBjb250aW51ZTsKLQotICAgICAgU3RyaW5nIG9wTmFtZSA9IG9wLmdldE5hbWUoKTsKLSAgICAgIGlmIChuYW1lICE9IG51bGwgJiYgb3BOYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGlmICghbmFtZS5lcXVhbHMob3BOYW1lKSkKLSAgICAgICAgICBvcCA9IG51bGw7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChuYW1lICE9IG51bGwgfHwgb3BOYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIG9wID0gbnVsbDsKLSAgICAgIH0KLQotICAgICAgaWYgKG9wICE9IG51bGwgJiYgaW5wdXROYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGphdmF4LndzZGwuQmluZGluZ0lucHV0IGlucHV0ID0gb3AuZ2V0QmluZGluZ0lucHV0KCk7Ci0gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIG9wSW5wdXROYW1lID0gaW5wdXQuZ2V0TmFtZSgpOwotICAgICAgICAgIGlmIChvcElucHV0TmFtZSA9PSBudWxsIHx8ICFvcElucHV0TmFtZS5lcXVhbHMoaW5wdXROYW1lKSkKLSAgICAgICAgICAgIG9wID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgb3AgPSBudWxsOwotICAgICAgfQotCi0gICAgICBpZiAob3AgIT0gbnVsbCAmJiBvdXRwdXROYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGphdmF4LndzZGwuQmluZGluZ091dHB1dCBvdXRwdXQgPSBvcC5nZXRCaW5kaW5nT3V0cHV0KCk7Ci0gICAgICAgIGlmIChvdXRwdXQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBvcE91dHB1dE5hbWUgPSBvdXRwdXQuZ2V0TmFtZSgpOwotICAgICAgICAgIGlmIChvcE91dHB1dE5hbWUgPT0gbnVsbCB8fCAhb3BPdXRwdXROYW1lLmVxdWFscyhvdXRwdXROYW1lKSkKLSAgICAgICAgICAgIG9wID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgb3AgPSBudWxsOwotICAgICAgfQotCi0gICAgICBpZiAob3AgIT0gbnVsbCkKLSAgICAgICAgcmV0dXJuIG9wOwotICAgIH0gLy8gZW5kIHdoaWxlCi0gICAgcmV0dXJuIG51bGw7IC8vIGJpbmRpbmcgb3BlcmF0aW9uIG5vdCBmb3VuZAotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEdldCBhbGwgdGhlIG9wZXJhdGlvbiBiaW5kaW5ncyBkZWZpbmVkIGhlcmUuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0QmluZGluZ09wZXJhdGlvbnMoKQotICB7Ci0gICAgcmV0dXJuIGdldEVCaW5kaW5nT3BlcmF0aW9ucygpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIGphdmF4LndzZGwuUG9ydFR5cGUgZ2V0UG9ydFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIGdldEVQb3J0VHlwZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UG9ydFR5cGUoamF2YXgud3NkbC5Qb3J0VHlwZSBwb3J0VHlwZSkKLSAgewotICAgIHNldEVQb3J0VHlwZSgoUG9ydFR5cGUpcG9ydFR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gZUludmVyc2VSZW1vdmUoSW50ZXJuYWxFT2JqZWN0IG90aGVyRW5kLCBpbnQgZmVhdHVyZUlELCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TOgotICAgICAgcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRFQmluZGluZ09wZXJhdGlvbnMoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUludmVyc2VSZW1vdmUob3RoZXJFbmQsIGZlYXR1cmVJRCwgbXNncyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfX1FOQU1FOgotICAgICAgcmV0dXJuIGdldFFOYW1lKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfX1VOREVGSU5FRDoKLSAgICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gQm9vbGVhbi5UUlVFIDogQm9vbGVhbi5GQUxTRTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19fRVBPUlRfVFlQRToKLSAgICAgIGlmIChyZXNvbHZlKQotICAgICAgICByZXR1cm4gZ2V0RVBvcnRUeXBlKCk7Ci0gICAgICByZXR1cm4gYmFzaWNHZXRFUG9ydFR5cGUoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUzoKLSAgICAgIHJldHVybiBnZXRFQmluZGluZ09wZXJhdGlvbnMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX19RTkFNRToKLSAgICAgIHNldFFOYW1lKChRTmFtZSluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfX1VOREVGSU5FRDoKLSAgICAgIHNldFVuZGVmaW5lZCgoKEJvb2xlYW4pbmV3VmFsdWUpLmJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19fRVBPUlRfVFlQRToKLSAgICAgIHNldEVQb3J0VHlwZSgoUG9ydFR5cGUpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TOgotICAgICAgZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCkuY2xlYXIoKTsKLSAgICAgIGdldEVCaW5kaW5nT3BlcmF0aW9ucygpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX19RTkFNRToKLSAgICAgIHNldFFOYW1lKFFOQU1FX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19fVU5ERUZJTkVEOgotICAgICAgc2V0VW5kZWZpbmVkKFVOREVGSU5FRF9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfX0VQT1JUX1RZUEU6Ci0gICAgICBzZXRFUG9ydFR5cGUoKFBvcnRUeXBlKW51bGwpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TOgotICAgICAgZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX19RTkFNRToKLSAgICAgIHJldHVybiBRTkFNRV9FREVGQVVMVCA9PSBudWxsID8gcU5hbWUgIT0gbnVsbCA6ICFRTkFNRV9FREVGQVVMVC5lcXVhbHMocU5hbWUpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX19VTkRFRklORUQ6Ci0gICAgICByZXR1cm4gdW5kZWZpbmVkICE9IFVOREVGSU5FRF9FREVGQVVMVDsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19fRVBPUlRfVFlQRToKLSAgICAgIHJldHVybiBlUG9ydFR5cGUgIT0gbnVsbDsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUzoKLSAgICAgIHJldHVybiBlQmluZGluZ09wZXJhdGlvbnMgIT0gbnVsbCAmJiAhZUJpbmRpbmdPcGVyYXRpb25zLmlzRW1wdHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKHFOYW1lOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQocU5hbWUpOwotICAgIHJlc3VsdC5hcHBlbmQoIiwgdW5kZWZpbmVkOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQodW5kZWZpbmVkKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxlIG1ldGhvZHMKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCk7Ci0gICAgU3RyaW5nIG5hbWUgPSBjaGFuZ2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSk7Ci0gICAgUU5hbWUgcW5hbWUgPSBuZXcgUU5hbWUoZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKSwgbmFtZSA9PSBudWxsID8gIiIgOiBuYW1lKTsgLy8kTk9OLU5MUy0xJAotICAgIHNldFFOYW1lKHFuYW1lKTsKLSAgICByZWNvbmNpbGVSZWZlcmVuY2VzKGZhbHNlKTsKLSAgfQotCi0gIHB1YmxpYyBDb2xsZWN0aW9uIGdldE1vZGVsT2JqZWN0cyhPYmplY3QgY29tcG9uZW50KQotICB7Ci0gICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpY29tcG9uZW50OwotCi0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGxpc3QuYWRkQWxsKGJpbmRpbmcuZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCkpOwotICAgIGxpc3QuYWRkQWxsKGJpbmRpbmcuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICByZXR1cm4gbGlzdDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoRWxlbWVudCBjaGlsZCwgQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBzd2l0Y2ggKFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoY2hpbGQpKQotICAgIHsKLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5PUEVSQVRJT046Ci0gICAgICBCaW5kaW5nT3BlcmF0aW9uIG9wZXJhdGlvbiA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVCaW5kaW5nT3BlcmF0aW9uKCk7Ci0gICAgICBvcGVyYXRpb24uc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkpOwotICAgICAgb3BlcmF0aW9uLnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgYWRkQmluZGluZ09wZXJhdGlvbihvcGVyYXRpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICBzdXBlci5oYW5kbGVVbnJlY29uY2lsZWRFbGVtZW50KGNoaWxkLCByZW1haW5pbmdNb2RlbE9iamVjdHMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVSZWNvbmNpbGlhdGlvbihDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGZvciAoSXRlcmF0b3IgaSA9IHJlbWFpbmluZ01vZGVsT2JqZWN0cy5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgcmVtb3ZlKHRoaXMsIGkubmV4dCgpKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmUoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IG1vZGVsT2JqZWN0KQotICB7Ci0gICAgTGlzdCBsaXN0ID0gZ2V0TGlzdChjb21wb25lbnQsIG1vZGVsT2JqZWN0KTsKLSAgICBpZiAobGlzdCAhPSBudWxsKQotICAgIHsKLSAgICAgIGxpc3QucmVtb3ZlKG1vZGVsT2JqZWN0KTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIExpc3QgZ2V0TGlzdChPYmplY3QgY29tcG9uZW50LCBPYmplY3QgbW9kZWxPYmplY3QpCi0gIHsKLSAgICBMaXN0IHJlc3VsdCA9IG51bGw7Ci0gICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpY29tcG9uZW50OwotICAgIGlmIChtb2RlbE9iamVjdCBpbnN0YW5jZW9mIEJpbmRpbmdPcGVyYXRpb24pCi0gICAgewotICAgICAgcmVzdWx0ID0gYmluZGluZy5nZXRFQmluZGluZ09wZXJhdGlvbnMoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobW9kZWxPYmplY3QgaW5zdGFuY2VvZiBFeHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBiaW5kaW5nLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8vCi0gIC8vIEZvciByZWNvbmNpbGlhdGlvbjogTW9kZWwgLT4gRE9NCi0gIC8vCi0KLSAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlQXR0cmlidXRlKEVBdHRyaWJ1dGUgZUF0dHJpYnV0ZSkKLSAgewotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgcmV0dXJuOwotCi0gICAgc3VwZXIuY2hhbmdlQXR0cmlidXRlKGVBdHRyaWJ1dGUpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5CSU5ESU5HX19RTkFNRSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBXU0RMQ29uc3RhbnRzLk5BTUVfQVRUUklCVVRFLCBnZXRRTmFtZSgpLmdldExvY2FsUGFydCgpKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VSZWZlcmVuY2UoRVJlZmVyZW5jZSBlUmVmZXJlbmNlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VSZWZlcmVuY2UoZVJlZmVyZW5jZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVSZWZlcmVuY2UgPT0gbnVsbCB8fCBlUmVmZXJlbmNlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLkJJTkRJTkdfX0VQT1JUX1RZUEUpCi0gICAgICB7Ci0gICAgICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gZ2V0RVBvcnRUeXBlKCk7Ci0gICAgICAgIGlmIChwb3J0VHlwZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgUU5hbWUgcU5hbWUgPSBwb3J0VHlwZS5nZXRRTmFtZSgpOwotICAgICAgICAgIG5pY2VTZXRBdHRyaWJ1dGVVUklWYWx1ZSh0aGVFbGVtZW50LCBXU0RMQ29uc3RhbnRzLlRZUEVfQVRUUklCVVRFLCBxTmFtZS5nZXROYW1lc3BhY2VVUkkoKSArICIjIiArIHFOYW1lLmdldExvY2FsUGFydCgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoKQotICB7Ci0gICAgRWxlbWVudCBuZXdFbGVtZW50ID0gY3JlYXRlRWxlbWVudChXU0RMQ29uc3RhbnRzLkJJTkRJTkcpOwotICAgIHNldEVsZW1lbnQobmV3RWxlbWVudCk7Ci0KLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBFbGVtZW50IGNoaWxkID0gKChFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwpZXh0ZW5zaWJpbGl0eUVsZW1lbnQpLmNyZWF0ZUVsZW1lbnQoKTsKLSAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOwotICAgIH0KLQotICAgIGl0ZXJhdG9yID0gZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gb3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24paXRlcmF0b3IubmV4dCgpOwotICAgICAgRWxlbWVudCBjaGlsZCA9ICgoQmluZGluZ09wZXJhdGlvbkltcGwpb3BlcmF0aW9uKS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZVJlZmVyZW5jZXMoYm9vbGVhbiBkZWVwKQotICB7Ci0gICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSAoRGVmaW5pdGlvbilnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCk7Ci0gICAgICBRTmFtZSBwb3J0VHlwZVFOYW1lID0gY3JlYXRlUU5hbWUoZGVmaW5pdGlvbiwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5UWVBFX0FUVFJJQlVURSksIGVsZW1lbnQpOwotICAgICAgUG9ydFR5cGUgbmV3UG9ydFR5cGUgPSBwb3J0VHlwZVFOYW1lICE9IG51bGwgPyAoUG9ydFR5cGUpZGVmaW5pdGlvbi5nZXRQb3J0VHlwZShwb3J0VHlwZVFOYW1lKSA6IG51bGw7Ci0gICAgICBpZiAobmV3UG9ydFR5cGUgIT0gZ2V0RVBvcnRUeXBlKCkpCi0gICAgICB7Ci0gICAgICAgIHNldEVQb3J0VHlwZShuZXdQb3J0VHlwZSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHN1cGVyLnJlY29uY2lsZVJlZmVyZW5jZXMoZGVlcCk7Ci0gIH0KLX0gLy9CaW5kaW5nSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0JpbmRpbmdJbnB1dEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9CaW5kaW5nSW5wdXRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzOThkMWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0JpbmRpbmdJbnB1dEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBJbnB1dDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nSW5wdXRJbXBsI2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ0lucHV0SW1wbCNnZXRFSW5wdXQgPGVtPkVJbnB1dDwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIEJpbmRpbmdJbnB1dEltcGwgZXh0ZW5kcyBFeHRlbnNpYmxlRWxlbWVudEltcGwgaW1wbGVtZW50cyBCaW5kaW5nSW5wdXQKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmFtZSgpIDxlbT5OYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXROYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBuYW1lID0gTkFNRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RUlucHV0KCkgPGVtPkVJbnB1dDwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RUlucHV0KCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIElucHV0IGVJbnB1dDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBCaW5kaW5nSW5wdXRJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBXU0RMUGFja2FnZS5MaXRlcmFscy5CSU5ESU5HX0lOUFVUOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIG5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5ld05hbWUpCi0gIHsKLSAgICBTdHJpbmcgb2xkTmFtZSA9IG5hbWU7Ci0gICAgbmFtZSA9IG5ld05hbWU7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuQklORElOR19JTlBVVF9fTkFNRSwgb2xkTmFtZSwgbmFtZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgSW5wdXQgZ2V0RUlucHV0KCkKLSAgewotICAgIGlmIChlSW5wdXQgIT0gbnVsbCAmJiBlSW5wdXQuZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkRUlucHV0ID0gKEludGVybmFsRU9iamVjdCllSW5wdXQ7Ci0gICAgICBlSW5wdXQgPSAoSW5wdXQpZVJlc29sdmVQcm94eShvbGRFSW5wdXQpOwotICAgICAgaWYgKGVJbnB1dCAhPSBvbGRFSW5wdXQpCi0gICAgICB7Ci0gICAgICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgV1NETFBhY2thZ2UuQklORElOR19JTlBVVF9fRUlOUFVULCBvbGRFSW5wdXQsIGVJbnB1dCkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZUlucHV0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgSW5wdXQgYmFzaWNHZXRFSW5wdXQoKQotICB7Ci0gICAgcmV0dXJuIGVJbnB1dDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RUlucHV0KElucHV0IG5ld0VJbnB1dCkKLSAgewotICAgIElucHV0IG9sZEVJbnB1dCA9IGVJbnB1dDsKLSAgICBlSW5wdXQgPSBuZXdFSW5wdXQ7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuQklORElOR19JTlBVVF9fRUlOUFVULCBvbGRFSW5wdXQsIGVJbnB1dCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIGphdmF4LndzZGwuSW5wdXQgZ2V0SW5wdXQoKQotICB7Ci0gICAgcmV0dXJuIGdldEVJbnB1dCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SW5wdXQoamF2YXgud3NkbC5JbnB1dCBpbnB1dCkKLSAgewotICAgIHNldEVJbnB1dCgoSW5wdXQpaW5wdXQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX19OQU1FOgotICAgICAgcmV0dXJuIGdldE5hbWUoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19JTlBVVF9fRUlOUFVUOgotICAgICAgaWYgKHJlc29sdmUpCi0gICAgICAgIHJldHVybiBnZXRFSW5wdXQoKTsKLSAgICAgIHJldHVybiBiYXNpY0dldEVJbnB1dCgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfSU5QVVRfX05BTUU6Ci0gICAgICBzZXROYW1lKChTdHJpbmcpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX19FSU5QVVQ6Ci0gICAgICBzZXRFSW5wdXQoKElucHV0KW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfSU5QVVRfX05BTUU6Ci0gICAgICBzZXROYW1lKE5BTUVfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX19FSU5QVVQ6Ci0gICAgICBzZXRFSW5wdXQoKElucHV0KW51bGwpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfSU5QVVRfX05BTUU6Ci0gICAgICByZXR1cm4gTkFNRV9FREVGQVVMVCA9PSBudWxsID8gbmFtZSAhPSBudWxsIDogIU5BTUVfRURFRkFVTFQuZXF1YWxzKG5hbWUpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX19FSU5QVVQ6Ci0gICAgICByZXR1cm4gZUlucHV0ICE9IG51bGw7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBpZiAoZUlzUHJveHkoKSkKLSAgICAgIHJldHVybiBzdXBlci50b1N0cmluZygpOwotCi0gICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiIChuYW1lOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQobmFtZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vCi0gIC8vIFJlY29uY2lsaWF0aW9uIG1ldGhvZHMKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBpZiAoY2hhbmdlZEVsZW1lbnQuaGFzQXR0cmlidXRlKCJuYW1lIikpCi0gICAgewotICAgICAgU3RyaW5nIG5hbWUgPSBjaGFuZ2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoIm5hbWUiKTsKLSAgICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHNldE5hbWUobmFtZSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHZvaWQgaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChFbGVtZW50IGNoaWxkLCBDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIHN1cGVyLmhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoY2hpbGQsIHJlbWFpbmluZ01vZGVsT2JqZWN0cyk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVSZWNvbmNpbGlhdGlvbihDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGZvciAoSXRlcmF0b3IgaSA9IHJlbWFpbmluZ01vZGVsT2JqZWN0cy5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpLnJlbW92ZShpLm5leHQoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIENvbGxlY3Rpb24gZ2V0TW9kZWxPYmplY3RzKE9iamVjdCBjb21wb25lbnQpCi0gIHsKLSAgICBCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0ID0gKEJpbmRpbmdJbnB1dCljb21wb25lbnQ7Ci0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGxpc3QuYWRkQWxsKGJpbmRpbmdJbnB1dC5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotICAgIHJldHVybiBsaXN0OwotICB9Ci0KLSAgLy8KLSAgLy8gRm9yIHJlY29uY2lsaWF0aW9uOiBNb2RlbCAtPiBET00KLSAgLy8KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VBdHRyaWJ1dGUoRUF0dHJpYnV0ZSBlQXR0cmlidXRlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VBdHRyaWJ1dGUoZUF0dHJpYnV0ZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLkJJTkRJTkdfSU5QVVRfX05BTUUpCi0gICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSwgZ2V0TmFtZSgpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudCBjcmVhdGVFbGVtZW50KCkKLSAgewotICAgIEVsZW1lbnQgbmV3RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoV1NETENvbnN0YW50cy5JTlBVVCk7Ci0gICAgc2V0RWxlbWVudChuZXdFbGVtZW50KTsKLQotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dGVuc2liaWxpdHlFbGVtZW50ID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWl0ZXJhdG9yLm5leHQoKTsKLSAgICAgIEVsZW1lbnQgY2hpbGQgPSAoKEV4dGVuc2liaWxpdHlFbGVtZW50SW1wbClleHRlbnNpYmlsaXR5RWxlbWVudCkuY3JlYXRlRWxlbWVudCgpOwotICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChjaGlsZCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ld0VsZW1lbnQ7Ci0gIH0KLQotICAvLyBSZXNvbHZlIHRoZSByZWZlcmVuY2UgdG8gSW5wdXQKLSAgcHVibGljIHZvaWQgcmVjb25jaWxlUmVmZXJlbmNlcyhib29sZWFuIGRlZXApCi0gIHsKLSAgICBpZiAoZWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYm9wID0gKEJpbmRpbmdPcGVyYXRpb24pZ2V0Q29udGFpbmVyKCk7Ci0gICAgICBPcGVyYXRpb24gb3AgPSBib3AuZ2V0RU9wZXJhdGlvbigpOwotICAgICAgaWYgKG9wICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHNldElucHV0KG9wLmdldEVJbnB1dCgpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgc3VwZXIucmVjb25jaWxlUmVmZXJlbmNlcyhkZWVwKTsKLSAgfQotfSAvL0JpbmRpbmdJbnB1dEltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9CaW5kaW5nT3BlcmF0aW9uSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0JpbmRpbmdPcGVyYXRpb25JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMTE3ODAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0JpbmRpbmdPcGVyYXRpb25JbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uQ2hhaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0Q29udGFpbm1lbnRFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbC5XU0RMVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBPcGVyYXRpb248L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ09wZXJhdGlvbkltcGwjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nT3BlcmF0aW9uSW1wbCNnZXRFT3BlcmF0aW9uIDxlbT5FT3BlcmF0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdPcGVyYXRpb25JbXBsI2dldEVCaW5kaW5nSW5wdXQgPGVtPkVCaW5kaW5nIElucHV0PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdPcGVyYXRpb25JbXBsI2dldEVCaW5kaW5nT3V0cHV0IDxlbT5FQmluZGluZyBPdXRwdXQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ09wZXJhdGlvbkltcGwjZ2V0RUJpbmRpbmdGYXVsdHMgPGVtPkVCaW5kaW5nIEZhdWx0czwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIEJpbmRpbmdPcGVyYXRpb25JbXBsIGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnRJbXBsIGltcGxlbWVudHMgQmluZGluZ09wZXJhdGlvbgotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWUoKSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWUgPSBOQU1FX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFT3BlcmF0aW9uKCkgPGVtPkVPcGVyYXRpb248L2VtPn0nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVPcGVyYXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgT3BlcmF0aW9uIGVPcGVyYXRpb247Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVCaW5kaW5nSW5wdXQoKSA8ZW0+RUJpbmRpbmcgSW5wdXQ8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVCaW5kaW5nSW5wdXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgQmluZGluZ0lucHV0IGVCaW5kaW5nSW5wdXQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVCaW5kaW5nT3V0cHV0KCkgPGVtPkVCaW5kaW5nIE91dHB1dDwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RUJpbmRpbmdPdXRwdXQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgQmluZGluZ091dHB1dCBlQmluZGluZ091dHB1dDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RUJpbmRpbmdGYXVsdHMoKSA8ZW0+RUJpbmRpbmcgRmF1bHRzPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVCaW5kaW5nRmF1bHRzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVMaXN0IGVCaW5kaW5nRmF1bHRzOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEJpbmRpbmdPcGVyYXRpb25JbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBXU0RMUGFja2FnZS5MaXRlcmFscy5CSU5ESU5HX09QRVJBVElPTjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgewotICAgIHJldHVybiBuYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuZXdOYW1lKQotICB7Ci0gICAgU3RyaW5nIG9sZE5hbWUgPSBuYW1lOwotICAgIG5hbWUgPSBuZXdOYW1lOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19OQU1FLCBvbGROYW1lLCBuYW1lKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPcGVyYXRpb24gZ2V0RU9wZXJhdGlvbigpCi0gIHsKLSAgICBpZiAoZU9wZXJhdGlvbiAhPSBudWxsICYmIGVPcGVyYXRpb24uZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkRU9wZXJhdGlvbiA9IChJbnRlcm5hbEVPYmplY3QpZU9wZXJhdGlvbjsKLSAgICAgIGVPcGVyYXRpb24gPSAoT3BlcmF0aW9uKWVSZXNvbHZlUHJveHkob2xkRU9wZXJhdGlvbik7Ci0gICAgICBpZiAoZU9wZXJhdGlvbiAhPSBvbGRFT3BlcmF0aW9uKQotICAgICAgewotICAgICAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FT1BFUkFUSU9OLCBvbGRFT3BlcmF0aW9uLCBlT3BlcmF0aW9uKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlT3BlcmF0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT3BlcmF0aW9uIGJhc2ljR2V0RU9wZXJhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gZU9wZXJhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RU9wZXJhdGlvbihPcGVyYXRpb24gbmV3RU9wZXJhdGlvbikKLSAgewotICAgIE9wZXJhdGlvbiBvbGRFT3BlcmF0aW9uID0gZU9wZXJhdGlvbjsKLSAgICBlT3BlcmF0aW9uID0gbmV3RU9wZXJhdGlvbjsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTiwgb2xkRU9wZXJhdGlvbiwgZU9wZXJhdGlvbikpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQmluZGluZ0lucHV0IGdldEVCaW5kaW5nSW5wdXQoKQotICB7Ci0gICAgcmV0dXJuIGVCaW5kaW5nSW5wdXQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldEVCaW5kaW5nSW5wdXQoQmluZGluZ0lucHV0IG5ld0VCaW5kaW5nSW5wdXQsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpCi0gIHsKLSAgICBCaW5kaW5nSW5wdXQgb2xkRUJpbmRpbmdJbnB1dCA9IGVCaW5kaW5nSW5wdXQ7Ci0gICAgZUJpbmRpbmdJbnB1dCA9IG5ld0VCaW5kaW5nSW5wdXQ7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgIHsKLSAgICAgIEVOb3RpZmljYXRpb25JbXBsIG5vdGlmaWNhdGlvbiA9IG5ldyBFTm90aWZpY2F0aW9uSW1wbCgKLSAgICAgICAgdGhpcywKLSAgICAgICAgTm90aWZpY2F0aW9uLlNFVCwKLSAgICAgICAgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0lOUFVULAotICAgICAgICBvbGRFQmluZGluZ0lucHV0LAotICAgICAgICBuZXdFQmluZGluZ0lucHV0KTsKLSAgICAgIGlmIChtc2dzID09IG51bGwpCi0gICAgICAgIG1zZ3MgPSBub3RpZmljYXRpb247Ci0gICAgICBlbHNlCi0gICAgICAgIG1zZ3MuYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBtc2dzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFQmluZGluZ0lucHV0KEJpbmRpbmdJbnB1dCBuZXdFQmluZGluZ0lucHV0KQotICB7Ci0gICAgaWYgKG5ld0VCaW5kaW5nSW5wdXQgIT0gZUJpbmRpbmdJbnB1dCkKLSAgICB7Ci0gICAgICBOb3RpZmljYXRpb25DaGFpbiBtc2dzID0gbnVsbDsKLSAgICAgIGlmIChlQmluZGluZ0lucHV0ICE9IG51bGwpCi0gICAgICAgIG1zZ3MgPSAoKEludGVybmFsRU9iamVjdCllQmluZGluZ0lucHV0KS5lSW52ZXJzZVJlbW92ZSgKLSAgICAgICAgICB0aGlzLAotICAgICAgICAgIEVPUFBPU0lURV9GRUFUVVJFX0JBU0UgLSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQsCi0gICAgICAgICAgbnVsbCwKLSAgICAgICAgICBtc2dzKTsKLSAgICAgIGlmIChuZXdFQmluZGluZ0lucHV0ICE9IG51bGwpCi0gICAgICAgIG1zZ3MgPSAoKEludGVybmFsRU9iamVjdCluZXdFQmluZGluZ0lucHV0KS5lSW52ZXJzZUFkZCgKLSAgICAgICAgICB0aGlzLAotICAgICAgICAgIEVPUFBPU0lURV9GRUFUVVJFX0JBU0UgLSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQsCi0gICAgICAgICAgbnVsbCwKLSAgICAgICAgICBtc2dzKTsKLSAgICAgIG1zZ3MgPSBiYXNpY1NldEVCaW5kaW5nSW5wdXQobmV3RUJpbmRpbmdJbnB1dCwgbXNncyk7Ci0gICAgICBpZiAobXNncyAhPSBudWxsKQotICAgICAgICBtc2dzLmRpc3BhdGNoKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwoCi0gICAgICAgIHRoaXMsCi0gICAgICAgIE5vdGlmaWNhdGlvbi5TRVQsCi0gICAgICAgIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVCwKLSAgICAgICAgbmV3RUJpbmRpbmdJbnB1dCwKLSAgICAgICAgbmV3RUJpbmRpbmdJbnB1dCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQmluZGluZ091dHB1dCBnZXRFQmluZGluZ091dHB1dCgpCi0gIHsKLSAgICByZXR1cm4gZUJpbmRpbmdPdXRwdXQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldEVCaW5kaW5nT3V0cHV0KEJpbmRpbmdPdXRwdXQgbmV3RUJpbmRpbmdPdXRwdXQsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpCi0gIHsKLSAgICBCaW5kaW5nT3V0cHV0IG9sZEVCaW5kaW5nT3V0cHV0ID0gZUJpbmRpbmdPdXRwdXQ7Ci0gICAgZUJpbmRpbmdPdXRwdXQgPSBuZXdFQmluZGluZ091dHB1dDsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgewotICAgICAgRU5vdGlmaWNhdGlvbkltcGwgbm90aWZpY2F0aW9uID0gbmV3IEVOb3RpZmljYXRpb25JbXBsKAotICAgICAgICB0aGlzLAotICAgICAgICBOb3RpZmljYXRpb24uU0VULAotICAgICAgICBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVULAotICAgICAgICBvbGRFQmluZGluZ091dHB1dCwKLSAgICAgICAgbmV3RUJpbmRpbmdPdXRwdXQpOwotICAgICAgaWYgKG1zZ3MgPT0gbnVsbCkKLSAgICAgICAgbXNncyA9IG5vdGlmaWNhdGlvbjsKLSAgICAgIGVsc2UKLSAgICAgICAgbXNncy5hZGQobm90aWZpY2F0aW9uKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1zZ3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVCaW5kaW5nT3V0cHV0KEJpbmRpbmdPdXRwdXQgbmV3RUJpbmRpbmdPdXRwdXQpCi0gIHsKLSAgICBpZiAobmV3RUJpbmRpbmdPdXRwdXQgIT0gZUJpbmRpbmdPdXRwdXQpCi0gICAgewotICAgICAgTm90aWZpY2F0aW9uQ2hhaW4gbXNncyA9IG51bGw7Ci0gICAgICBpZiAoZUJpbmRpbmdPdXRwdXQgIT0gbnVsbCkKLSAgICAgICAgbXNncyA9ICgoSW50ZXJuYWxFT2JqZWN0KWVCaW5kaW5nT3V0cHV0KS5lSW52ZXJzZVJlbW92ZSh0aGlzLCBFT1BQT1NJVEVfRkVBVFVSRV9CQVNFCi0gICAgICAgICAgLSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVULCBudWxsLCBtc2dzKTsKLSAgICAgIGlmIChuZXdFQmluZGluZ091dHB1dCAhPSBudWxsKQotICAgICAgICBtc2dzID0gKChJbnRlcm5hbEVPYmplY3QpbmV3RUJpbmRpbmdPdXRwdXQpLmVJbnZlcnNlQWRkKHRoaXMsIEVPUFBPU0lURV9GRUFUVVJFX0JBU0UKLSAgICAgICAgICAtIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19PVVRQVVQsIG51bGwsIG1zZ3MpOwotICAgICAgbXNncyA9IGJhc2ljU2V0RUJpbmRpbmdPdXRwdXQobmV3RUJpbmRpbmdPdXRwdXQsIG1zZ3MpOwotICAgICAgaWYgKG1zZ3MgIT0gbnVsbCkKLSAgICAgICAgbXNncy5kaXNwYXRjaCgpOwotICAgIH0KLSAgICBlbHNlIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKAotICAgICAgICB0aGlzLAotICAgICAgICBOb3RpZmljYXRpb24uU0VULAotICAgICAgICBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVULAotICAgICAgICBuZXdFQmluZGluZ091dHB1dCwKLSAgICAgICAgbmV3RUJpbmRpbmdPdXRwdXQpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVMaXN0IGdldEVCaW5kaW5nRmF1bHRzKCkKLSAgewotICAgIGlmIChlQmluZGluZ0ZhdWx0cyA9PSBudWxsKQotICAgIHsKLSAgICAgIGVCaW5kaW5nRmF1bHRzID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KEJpbmRpbmdGYXVsdC5jbGFzcywgdGhpcywgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0ZBVUxUUyk7Ci0gICAgfQotICAgIHJldHVybiBlQmluZGluZ0ZhdWx0czsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBBZGQgYSBmYXVsdCBiaW5kaW5nLgotICAgKiBAcGFyYW0gZmF1bHQgdGhlIG5ldyBmYXVsdCBiaW5kaW5nCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkQmluZGluZ0ZhdWx0KGphdmF4LndzZGwuQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdCkKLSAgewotICAgIGdldEVCaW5kaW5nRmF1bHRzKCkuYWRkKChCaW5kaW5nRmF1bHQpYmluZGluZ0ZhdWx0KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBHZXQgdGhlIHNwZWNpZmllZCBmYXVsdCBiaW5kaW5nLgotICAgKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiB0aGUgZGVzaXJlZCBmYXVsdCBiaW5kaW5nLgotICAgKiBAcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGZhdWx0IGJpbmRpbmcsIG9yIG51bGwgaWYgdGhlcmUgd2Fzbid0Ci0gICAqIGFueSBtYXRjaGluZyBmYXVsdCBiaW5kaW5nCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIGphdmF4LndzZGwuQmluZGluZ0ZhdWx0IGdldEJpbmRpbmdGYXVsdChTdHJpbmcgbmFtZSkKLSAgewotICAgIEJpbmRpbmdGYXVsdCByZXN1bHQgPSBudWxsOwotICAgIGZvciAoSXRlcmF0b3IgaSA9IGdldEVCaW5kaW5nRmF1bHRzKCkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIEJpbmRpbmdGYXVsdCBmYXVsdCA9IChCaW5kaW5nRmF1bHQpaS5uZXh0KCk7Ci0gICAgICBpZiAobmFtZS5lcXVhbHMoZmF1bHQuZ2V0TmFtZSgpKSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gZmF1bHQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEdldCBhbGwgdGhlIGZhdWx0IGJpbmRpbmdzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9wZXJhdGlvbiBiaW5kaW5nLgotICAgKiBAcmV0dXJuIG5hbWVzIG9mIGZhdWx0IGJpbmRpbmdzCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIE1hcCBnZXRCaW5kaW5nRmF1bHRzKCkKLSAgewotICAgIEhhc2hNYXAgaGFzaE1hcCA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgZm9yIChJdGVyYXRvciBpID0gZ2V0RUJpbmRpbmdGYXVsdHMoKS5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdCA9IChCaW5kaW5nRmF1bHQpaS5uZXh0KCk7Ci0gICAgICBoYXNoTWFwLnB1dChiaW5kaW5nRmF1bHQuZ2V0TmFtZSgpLCBiaW5kaW5nRmF1bHQpOwotICAgIH0KLSAgICByZXR1cm4gaGFzaE1hcDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLk9wZXJhdGlvbiBnZXRPcGVyYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGdldEVPcGVyYXRpb24oKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE9wZXJhdGlvbihqYXZheC53c2RsLk9wZXJhdGlvbiBvcGVyYXRpb24pCi0gIHsKLSAgICBzZXRFT3BlcmF0aW9uKChPcGVyYXRpb24pb3BlcmF0aW9uKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLkJpbmRpbmdJbnB1dCBnZXRCaW5kaW5nSW5wdXQoKQotICB7Ci0gICAgcmV0dXJuIGdldEVCaW5kaW5nSW5wdXQoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBTZXQgdGhlIGlucHV0IG9mIHRoaXMgb3BlcmF0aW9uIGJpbmRpbmcuCi0gICAqIEBwYXJhbSBpbnB1dCB0aGUgZGVzaXJlZCBpbnB1dAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEJpbmRpbmdJbnB1dChqYXZheC53c2RsLkJpbmRpbmdJbnB1dCBiaW5kaW5nSW5wdXQpCi0gIHsKLSAgICBzZXRFQmluZGluZ0lucHV0KChCaW5kaW5nSW5wdXQpYmluZGluZ0lucHV0KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQgZ2V0QmluZGluZ091dHB1dCgpCi0gIHsKLSAgICByZXR1cm4gZ2V0RUJpbmRpbmdPdXRwdXQoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBTZXQgdGhlIG91dHB1dCBvZiB0aGlzIG9wZXJhdGlvbiBiaW5kaW5nLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEJpbmRpbmdPdXRwdXQoamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQpCi0gIHsKLSAgICBzZXRFQmluZGluZ091dHB1dCgoQmluZGluZ091dHB1dCliaW5kaW5nT3V0cHV0KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE5vdGlmaWNhdGlvbkNoYWluIGVJbnZlcnNlUmVtb3ZlKEludGVybmFsRU9iamVjdCBvdGhlckVuZCwgaW50IGZlYXR1cmVJRCwgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0lOUFVUOgotICAgICAgcmV0dXJuIGJhc2ljU2V0RUJpbmRpbmdJbnB1dChudWxsLCBtc2dzKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX09VVFBVVDoKLSAgICAgIHJldHVybiBiYXNpY1NldEVCaW5kaW5nT3V0cHV0KG51bGwsIG1zZ3MpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTOgotICAgICAgcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRFQmluZGluZ0ZhdWx0cygpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSW52ZXJzZVJlbW92ZShvdGhlckVuZCwgZmVhdHVyZUlELCBtc2dzKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX05BTUU6Ci0gICAgICByZXR1cm4gZ2V0TmFtZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTjoKLSAgICAgIGlmIChyZXNvbHZlKQotICAgICAgICByZXR1cm4gZ2V0RU9wZXJhdGlvbigpOwotICAgICAgcmV0dXJuIGJhc2ljR2V0RU9wZXJhdGlvbigpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQ6Ci0gICAgICByZXR1cm4gZ2V0RUJpbmRpbmdJbnB1dCgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUOgotICAgICAgcmV0dXJuIGdldEVCaW5kaW5nT3V0cHV0KCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFM6Ci0gICAgICByZXR1cm4gZ2V0RUJpbmRpbmdGYXVsdHMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fTkFNRToKLSAgICAgIHNldE5hbWUoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FT1BFUkFUSU9OOgotICAgICAgc2V0RU9wZXJhdGlvbigoT3BlcmF0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0lOUFVUOgotICAgICAgc2V0RUJpbmRpbmdJbnB1dCgoQmluZGluZ0lucHV0KW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX09VVFBVVDoKLSAgICAgIHNldEVCaW5kaW5nT3V0cHV0KChCaW5kaW5nT3V0cHV0KW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0ZBVUxUUzoKLSAgICAgIGdldEVCaW5kaW5nRmF1bHRzKCkuY2xlYXIoKTsKLSAgICAgIGdldEVCaW5kaW5nRmF1bHRzKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19OQU1FOgotICAgICAgc2V0TmFtZShOQU1FX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VPUEVSQVRJT046Ci0gICAgICBzZXRFT3BlcmF0aW9uKChPcGVyYXRpb24pbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVDoKLSAgICAgIHNldEVCaW5kaW5nSW5wdXQoKEJpbmRpbmdJbnB1dCludWxsKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX09VVFBVVDoKLSAgICAgIHNldEVCaW5kaW5nT3V0cHV0KChCaW5kaW5nT3V0cHV0KW51bGwpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTOgotICAgICAgZ2V0RUJpbmRpbmdGYXVsdHMoKS5jbGVhcigpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19OQU1FOgotICAgICAgcmV0dXJuIE5BTUVfRURFRkFVTFQgPT0gbnVsbCA/IG5hbWUgIT0gbnVsbCA6ICFOQU1FX0VERUZBVUxULmVxdWFscyhuYW1lKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VPUEVSQVRJT046Ci0gICAgICByZXR1cm4gZU9wZXJhdGlvbiAhPSBudWxsOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQ6Ci0gICAgICByZXR1cm4gZUJpbmRpbmdJbnB1dCAhPSBudWxsOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUOgotICAgICAgcmV0dXJuIGVCaW5kaW5nT3V0cHV0ICE9IG51bGw7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFM6Ci0gICAgICByZXR1cm4gZUJpbmRpbmdGYXVsdHMgIT0gbnVsbCAmJiAhZUJpbmRpbmdGYXVsdHMuaXNFbXB0eSgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAobmFtZTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKG5hbWUpOwotICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvLwotICAvLyBSZWNvbmNpbGUgbWV0aG9kcwotICAvLwotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIFN0cmluZyBuYW1lID0gY2hhbmdlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJuYW1lIik7Ci0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBzZXROYW1lKG5hbWUpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoRWxlbWVudCBjaGlsZCwgQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCk7Ci0KLSAgICBzd2l0Y2ggKFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoY2hpbGQpKQotICAgIHsKLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5JTlBVVDoKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ0lucHV0IGlucHV0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUJpbmRpbmdJbnB1dCgpOwotICAgICAgICBpbnB1dC5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKGRlZmluaXRpb24pOwotICAgICAgICBpbnB1dC5zZXRFbGVtZW50KGNoaWxkKTsKLSAgICAgICAgc2V0QmluZGluZ0lucHV0KGlucHV0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExDb25zdGFudHMuT1VUUFVUOgotICAgICAgewotICAgICAgICBCaW5kaW5nT3V0cHV0IG91dHB1dCA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVCaW5kaW5nT3V0cHV0KCk7Ci0gICAgICAgIG91dHB1dC5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKGRlZmluaXRpb24pOwotICAgICAgICBvdXRwdXQuc2V0RWxlbWVudChjaGlsZCk7Ci0gICAgICAgIHNldEJpbmRpbmdPdXRwdXQob3V0cHV0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExDb25zdGFudHMuRkFVTFQ6Ci0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdGYXVsdCBmYXVsdCA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVCaW5kaW5nRmF1bHQoKTsKLSAgICAgICAgZmF1bHQuc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihkZWZpbml0aW9uKTsKLSAgICAgICAgZmF1bHQuc2V0RWxlbWVudChjaGlsZCk7Ci0gICAgICAgIGFkZEJpbmRpbmdGYXVsdChmYXVsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgIHsKLSAgICAgICAgc3VwZXIuaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChjaGlsZCwgcmVtYWluaW5nTW9kZWxPYmplY3RzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlUmVjb25jaWxpYXRpb24oQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSByZW1haW5pbmdNb2RlbE9iamVjdHMuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIHJlbW92ZSh0aGlzLCBpLm5leHQoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcmVtb3ZlKE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBtb2RlbE9iamVjdCkKLSAgewotICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKWNvbXBvbmVudDsKLSAgICBpZiAobW9kZWxPYmplY3QgaW5zdGFuY2VvZiBCaW5kaW5nSW5wdXQpCi0gICAgewotICAgICAgYmluZGluZ09wZXJhdGlvbi5zZXRFQmluZGluZ0lucHV0KG51bGwpOwotICAgIH0KLSAgICBlbHNlIGlmIChtb2RlbE9iamVjdCBpbnN0YW5jZW9mIEJpbmRpbmdPdXRwdXQpCi0gICAgewotICAgICAgYmluZGluZ09wZXJhdGlvbi5zZXRFQmluZGluZ091dHB1dChudWxsKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobW9kZWxPYmplY3QgaW5zdGFuY2VvZiBCaW5kaW5nRmF1bHQpCi0gICAgewotICAgICAgYmluZGluZ09wZXJhdGlvbi5nZXRFQmluZGluZ0ZhdWx0cygpLnJlbW92ZShtb2RlbE9iamVjdCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5yZW1vdmUobW9kZWxPYmplY3QpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBDb2xsZWN0aW9uIGdldE1vZGVsT2JqZWN0cyhPYmplY3QgY29tcG9uZW50KQotICB7Ci0gICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24pY29tcG9uZW50OwotCi0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotCi0gICAgaWYgKGJpbmRpbmdPcGVyYXRpb24uZ2V0RUJpbmRpbmdJbnB1dCgpICE9IG51bGwpCi0gICAgewotICAgICAgbGlzdC5hZGQoYmluZGluZ09wZXJhdGlvbi5nZXRFQmluZGluZ0lucHV0KCkpOwotICAgIH0KLQotICAgIGlmIChiaW5kaW5nT3BlcmF0aW9uLmdldEVCaW5kaW5nT3V0cHV0KCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBsaXN0LmFkZChiaW5kaW5nT3BlcmF0aW9uLmdldEVCaW5kaW5nT3V0cHV0KCkpOwotICAgIH0KLQotICAgIGxpc3QuYWRkQWxsKGJpbmRpbmdPcGVyYXRpb24uZ2V0RUJpbmRpbmdGYXVsdHMoKSk7Ci0gICAgbGlzdC5hZGRBbGwoYmluZGluZ09wZXJhdGlvbi5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotCi0gICAgcmV0dXJuIGxpc3Q7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gV1NETFBhY2thZ2UuTGl0ZXJhbHMuQklORElOR19PUEVSQVRJT05fX05BTUUpCi0gICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSwgZ2V0TmFtZSgpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudCBjcmVhdGVFbGVtZW50KCkKLSAgewotICAgIEVsZW1lbnQgbmV3RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoV1NETENvbnN0YW50cy5PUEVSQVRJT04pOwotICAgIHNldEVsZW1lbnQobmV3RWxlbWVudCk7Ci0KLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBFbGVtZW50IGNoaWxkID0gKChFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwpZXh0ZW5zaWJpbGl0eUVsZW1lbnQpLmNyZWF0ZUVsZW1lbnQoKTsKLSAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOwotICAgIH0KLQotICAgIEJpbmRpbmdJbnB1dCBpbnB1dCA9IGdldEVCaW5kaW5nSW5wdXQoKTsKLSAgICBpZiAoaW5wdXQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBFbGVtZW50IGNoaWxkID0gKChCaW5kaW5nSW5wdXRJbXBsKWlucHV0KS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICB9Ci0KLSAgICBCaW5kaW5nT3V0cHV0IG91dHB1dCA9IGdldEVCaW5kaW5nT3V0cHV0KCk7Ci0gICAgaWYgKG91dHB1dCAhPSBudWxsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgY2hpbGQgPSAoKEJpbmRpbmdPdXRwdXRJbXBsKW91dHB1dCkuY3JlYXRlRWxlbWVudCgpOwotICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChjaGlsZCk7Ci0gICAgfQotCi0gICAgaXRlcmF0b3IgPSBnZXRFQmluZGluZ0ZhdWx0cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBCaW5kaW5nRmF1bHQgZmF1bHQgPSAoQmluZGluZ0ZhdWx0KWl0ZXJhdG9yLm5leHQoKTsKLSAgICAgIEVsZW1lbnQgY2hpbGQgPSAoKEJpbmRpbmdGYXVsdEltcGwpZmF1bHQpLmNyZWF0ZUVsZW1lbnQoKTsKLSAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOwotICAgIH0KLQotICAgIHJldHVybiBuZXdFbGVtZW50OwotICB9Ci0KLSAgLy8gUmVzb2x2ZSB0aGUgcmVmZXJlbmNlIHRvIE9wZXJhdGlvbgotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVSZWZlcmVuY2VzKGJvb2xlYW4gZGVlcCkKLSAgewotICAgIGlmIChlbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpZ2V0Q29udGFpbmVyKCk7Ci0gICAgICBQb3J0VHlwZSBwb3J0VHlwZSA9IGJpbmRpbmcuZ2V0RVBvcnRUeXBlKCk7Ci0gICAgICBpZiAocG9ydFR5cGUgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ0lucHV0IGlucHV0ID0gZ2V0RUJpbmRpbmdJbnB1dCgpOwotICAgICAgICBCaW5kaW5nT3V0cHV0IG91dHB1dCA9IGdldEVCaW5kaW5nT3V0cHV0KCk7Ci0KLSAgICAgICAgU3RyaW5nIGlucHV0TmFtZSA9IGlucHV0ICE9IG51bGwgPyBpbnB1dC5nZXROYW1lKCkgOiBudWxsOwotICAgICAgICBTdHJpbmcgb3V0cHV0TmFtZSA9IG91dHB1dCAhPSBudWxsID8gb3V0cHV0LmdldE5hbWUoKSA6IG51bGw7Ci0KLSAgICAgICAgc2V0T3BlcmF0aW9uKHBvcnRUeXBlLmdldE9wZXJhdGlvbihnZXROYW1lKCksIGlucHV0TmFtZSwgb3V0cHV0TmFtZSkpOwotICAgICAgfQotICAgIH0KLSAgICBzdXBlci5yZWNvbmNpbGVSZWZlcmVuY2VzKGRlZXApOwotICB9Ci19IC8vQmluZGluZ09wZXJhdGlvbkltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9CaW5kaW5nT3V0cHV0SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0JpbmRpbmdPdXRwdXRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZDM3YjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0JpbmRpbmdPdXRwdXRJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBPdXRwdXQ8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ091dHB1dEltcGwjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nT3V0cHV0SW1wbCNnZXRFT3V0cHV0IDxlbT5FT3V0cHV0PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgQmluZGluZ091dHB1dEltcGwgZXh0ZW5kcyBFeHRlbnNpYmxlRWxlbWVudEltcGwgaW1wbGVtZW50cyBCaW5kaW5nT3V0cHV0Ci17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmFtZSgpIDxlbT5OYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXROYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWUoKSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgbmFtZSA9IE5BTUVfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVPdXRwdXQoKSA8ZW0+RU91dHB1dDwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RU91dHB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBPdXRwdXQgZU91dHB1dDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBCaW5kaW5nT3V0cHV0SW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpCi0gIHsKLSAgICByZXR1cm4gV1NETFBhY2thZ2UuTGl0ZXJhbHMuQklORElOR19PVVRQVVQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gbmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmV3TmFtZSkKLSAgewotICAgIFN0cmluZyBvbGROYW1lID0gbmFtZTsKLSAgICBuYW1lID0gbmV3TmFtZTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5CSU5ESU5HX09VVFBVVF9fTkFNRSwgb2xkTmFtZSwgbmFtZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT3V0cHV0IGdldEVPdXRwdXQoKQotICB7Ci0gICAgaWYgKGVPdXRwdXQgIT0gbnVsbCAmJiBlT3V0cHV0LmVJc1Byb3h5KCkpCi0gICAgewotICAgICAgSW50ZXJuYWxFT2JqZWN0IG9sZEVPdXRwdXQgPSAoSW50ZXJuYWxFT2JqZWN0KWVPdXRwdXQ7Ci0gICAgICBlT3V0cHV0ID0gKE91dHB1dCllUmVzb2x2ZVByb3h5KG9sZEVPdXRwdXQpOwotICAgICAgaWYgKGVPdXRwdXQgIT0gb2xkRU91dHB1dCkKLSAgICAgIHsKLSAgICAgICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBXU0RMUGFja2FnZS5CSU5ESU5HX09VVFBVVF9fRU9VVFBVVCwgb2xkRU91dHB1dCwgZU91dHB1dCkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZU91dHB1dDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE91dHB1dCBiYXNpY0dldEVPdXRwdXQoKQotICB7Ci0gICAgcmV0dXJuIGVPdXRwdXQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVPdXRwdXQoT3V0cHV0IG5ld0VPdXRwdXQpCi0gIHsKLSAgICBPdXRwdXQgb2xkRU91dHB1dCA9IGVPdXRwdXQ7Ci0gICAgZU91dHB1dCA9IG5ld0VPdXRwdXQ7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuQklORElOR19PVVRQVVRfX0VPVVRQVVQsIG9sZEVPdXRwdXQsIGVPdXRwdXQpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLk91dHB1dCBnZXRPdXRwdXQoKQotICB7Ci0gICAgcmV0dXJuIGdldEVPdXRwdXQoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE91dHB1dChqYXZheC53c2RsLk91dHB1dCBvdXRwdXQpCi0gIHsKLSAgICBzZXRFT3V0cHV0KChPdXRwdXQpb3V0cHV0KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PVVRQVVRfX05BTUU6Ci0gICAgICByZXR1cm4gZ2V0TmFtZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09VVFBVVF9fRU9VVFBVVDoKLSAgICAgIGlmIChyZXNvbHZlKQotICAgICAgICByZXR1cm4gZ2V0RU91dHB1dCgpOwotICAgICAgcmV0dXJuIGJhc2ljR2V0RU91dHB1dCgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfT1VUUFVUX19OQU1FOgotICAgICAgc2V0TmFtZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PVVRQVVRfX0VPVVRQVVQ6Ci0gICAgICBzZXRFT3V0cHV0KChPdXRwdXQpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PVVRQVVRfX05BTUU6Ci0gICAgICBzZXROYW1lKE5BTUVfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09VVFBVVF9fRU9VVFBVVDoKLSAgICAgIHNldEVPdXRwdXQoKE91dHB1dCludWxsKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09VVFBVVF9fTkFNRToKLSAgICAgIHJldHVybiBOQU1FX0VERUZBVUxUID09IG51bGwgPyBuYW1lICE9IG51bGwgOiAhTkFNRV9FREVGQVVMVC5lcXVhbHMobmFtZSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfT1VUUFVUX19FT1VUUFVUOgotICAgICAgcmV0dXJuIGVPdXRwdXQgIT0gbnVsbDsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKG5hbWU6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChuYW1lKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxlIG1ldGhvZHMKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBpZiAoY2hhbmdlZEVsZW1lbnQuaGFzQXR0cmlidXRlKCJuYW1lIikpCi0gICAgewotICAgICAgU3RyaW5nIG5hbWUgPSBjaGFuZ2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoIm5hbWUiKTsKLSAgICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHNldE5hbWUobmFtZSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHZvaWQgaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChFbGVtZW50IGNoaWxkLCBDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIHN1cGVyLmhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoY2hpbGQsIHJlbWFpbmluZ01vZGVsT2JqZWN0cyk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVSZWNvbmNpbGlhdGlvbihDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGZvciAoSXRlcmF0b3IgaSA9IHJlbWFpbmluZ01vZGVsT2JqZWN0cy5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpLnJlbW92ZShpLm5leHQoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIENvbGxlY3Rpb24gZ2V0TW9kZWxPYmplY3RzKE9iamVjdCBjb21wb25lbnQpCi0gIHsKLSAgICBCaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQgPSAoQmluZGluZ091dHB1dCljb21wb25lbnQ7Ci0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGxpc3QuYWRkQWxsKGJpbmRpbmdPdXRwdXQuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICByZXR1cm4gbGlzdDsKLSAgfQotCi0gIC8vCi0gIC8vIEZvciByZWNvbmNpbGlhdGlvbjogTW9kZWwgLT4gRE9NCi0gIC8vCi0KLSAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlQXR0cmlidXRlKEVBdHRyaWJ1dGUgZUF0dHJpYnV0ZSkKLSAgewotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgcmV0dXJuOwotCi0gICAgc3VwZXIuY2hhbmdlQXR0cmlidXRlKGVBdHRyaWJ1dGUpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5CSU5ESU5HX09VVFBVVF9fTkFNRSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBXU0RMQ29uc3RhbnRzLk5BTUVfQVRUUklCVVRFLCBnZXROYW1lKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoKQotICB7Ci0gICAgRWxlbWVudCBuZXdFbGVtZW50ID0gY3JlYXRlRWxlbWVudChXU0RMQ29uc3RhbnRzLk9VVFBVVCk7Ci0gICAgc2V0RWxlbWVudChuZXdFbGVtZW50KTsKLQotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dGVuc2liaWxpdHlFbGVtZW50ID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWl0ZXJhdG9yLm5leHQoKTsKLSAgICAgIEVsZW1lbnQgY2hpbGQgPSAoKEV4dGVuc2liaWxpdHlFbGVtZW50SW1wbClleHRlbnNpYmlsaXR5RWxlbWVudCkuY3JlYXRlRWxlbWVudCgpOwotICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChjaGlsZCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ld0VsZW1lbnQ7Ci0gIH0KLQotICAvLyBSZXNvbHZlIHRoZSByZWZlcmVuY2UgdG8gT3V0cHV0Ci0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZVJlZmVyZW5jZXMoYm9vbGVhbiBkZWVwKQotICB7Ci0gICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBCaW5kaW5nT3BlcmF0aW9uIGJvcCA9IChCaW5kaW5nT3BlcmF0aW9uKWdldENvbnRhaW5lcigpOwotICAgICAgT3BlcmF0aW9uIG9wID0gYm9wLmdldEVPcGVyYXRpb24oKTsKLSAgICAgIGlmIChvcCAhPSBudWxsKQotICAgICAgewotICAgICAgICBzZXRPdXRwdXQob3AuZ2V0RU91dHB1dCgpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgc3VwZXIucmVjb25jaWxlUmVmZXJlbmNlcyhkZWVwKTsKLSAgfQotfSAvL0JpbmRpbmdPdXRwdXRJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvRGVmaW5pdGlvbkltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9EZWZpbml0aW9uSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjdiMTA2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9EZWZpbml0aW9uSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjUyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk91dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpb25SZWdpc3RyeTsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uQ2hhaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlU2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0Q29udGFpbm1lbnRFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5OYW1lc3BhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWwuV1NETFJlc291cmNlRmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbC5XU0RMVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RDb25jcmV0ZUNvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RJbXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLmltcGwuWFNESW1wb3J0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuaW1wbC5YU0RTY2hlbWFJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC51dGlsLlhTRENvbnN0YW50czsKLWltcG9ydCBvcmcudzNjLmRvbS5BdHRyOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uZXZlbnRzLkV2ZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLmV2ZW50cy5FdmVudExpc3RlbmVyOwotaW1wb3J0IG9yZy53M2MuZG9tLmV2ZW50cy5FdmVudFRhcmdldDsKLWltcG9ydCBvcmcudzNjLmRvbS5ldmVudHMuTXV0YXRpb25FdmVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGVmaW5pdGlvbjwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5EZWZpbml0aW9uSW1wbCNnZXRUYXJnZXROYW1lc3BhY2UgPGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRGVmaW5pdGlvbkltcGwjZ2V0TG9jYXRpb24gPGVtPkxvY2F0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsI2dldFFOYW1lIDxlbT5RTmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5EZWZpbml0aW9uSW1wbCNnZXRFbmNvZGluZyA8ZW0+RW5jb2Rpbmc8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRGVmaW5pdGlvbkltcGwjZ2V0RUltcG9ydHMgPGVtPkVJbXBvcnRzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsI2dldEVUeXBlcyA8ZW0+RVR5cGVzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsI2dldEVNZXNzYWdlcyA8ZW0+RU1lc3NhZ2VzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsI2dldEVQb3J0VHlwZXMgPGVtPkVQb3J0IFR5cGVzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsI2dldEVCaW5kaW5ncyA8ZW0+RUJpbmRpbmdzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsI2dldEVTZXJ2aWNlcyA8ZW0+RVNlcnZpY2VzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsI2dldEVOYW1lc3BhY2VzIDxlbT5FTmFtZXNwYWNlczwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIERlZmluaXRpb25JbXBsIGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnRJbXBsIGltcGxlbWVudHMgRGVmaW5pdGlvbgotewotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgWE1MTlMgPSAieG1sbnMiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRUYXJnZXROYW1lc3BhY2UoKSA8ZW0+VGFyZ2V0IE5hbWVzcGFjZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0VGFyZ2V0TmFtZXNwYWNlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFSR0VUX05BTUVTUEFDRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFRhcmdldE5hbWVzcGFjZSgpIDxlbT5UYXJnZXQgTmFtZXNwYWNlPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRUYXJnZXROYW1lc3BhY2UoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHRhcmdldE5hbWVzcGFjZSA9IFRBUkdFVF9OQU1FU1BBQ0VfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMb2NhdGlvbigpIDxlbT5Mb2NhdGlvbjwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TG9jYXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBMT0NBVElPTl9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExvY2F0aW9uKCkgPGVtPkxvY2F0aW9uPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRMb2NhdGlvbigpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgbG9jYXRpb24gPSBMT0NBVElPTl9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFFOYW1lKCkgPGVtPlFOYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRRTmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgUU5hbWUgUU5BTUVfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRRTmFtZSgpIDxlbT5RTmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0UU5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgUU5hbWUgcU5hbWUgPSBRTkFNRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVuY29kaW5nKCkgPGVtPkVuY29kaW5nPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFbmNvZGluZygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEVOQ09ESU5HX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RW5jb2RpbmcoKSA8ZW0+RW5jb2Rpbmc8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVuY29kaW5nKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBlbmNvZGluZyA9IEVOQ09ESU5HX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFSW1wb3J0cygpIDxlbT5FSW1wb3J0czwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFSW1wb3J0cygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBFTGlzdCBlSW1wb3J0czsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RVR5cGVzKCkgPGVtPkVUeXBlczwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RVR5cGVzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFR5cGVzIGVUeXBlczsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RU1lc3NhZ2VzKCkgPGVtPkVNZXNzYWdlczwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFTWVzc2FnZXMoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3QgZU1lc3NhZ2VzOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFUG9ydFR5cGVzKCkgPGVtPkVQb3J0IFR5cGVzPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVQb3J0VHlwZXMoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3QgZVBvcnRUeXBlczsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RUJpbmRpbmdzKCkgPGVtPkVCaW5kaW5nczwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFQmluZGluZ3MoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3QgZUJpbmRpbmdzOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFU2VydmljZXMoKSA8ZW0+RVNlcnZpY2VzPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVTZXJ2aWNlcygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBFTGlzdCBlU2VydmljZXM7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVOYW1lc3BhY2VzKCkgPGVtPkVOYW1lc3BhY2VzPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVOYW1lc3BhY2VzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVMaXN0IGVOYW1lc3BhY2VzOwotCi0gIHByaXZhdGUgRXh0ZW5zaW9uUmVnaXN0cnkgZXh0ZW5zaW9uUmVnaXN0cnk7Ci0KLSAgcHJpdmF0ZSBEb2N1bWVudCBkb2N1bWVudDsKLQotICBwcml2YXRlIEhhc2hNYXAgbmFtZXNwYWNlcyA9IG5ldyBIYXNoTWFwKCk7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRGVmaW5pdGlvbkltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLkRFRklOSVRJT047Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VGFyZ2V0TmFtZXNwYWNlKCkKLSAgewotICAgIHJldHVybiB0YXJnZXROYW1lc3BhY2U7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRhcmdldE5hbWVzcGFjZShTdHJpbmcgbmV3VGFyZ2V0TmFtZXNwYWNlKQotICB7Ci0gICAgU3RyaW5nIG9sZFRhcmdldE5hbWVzcGFjZSA9IHRhcmdldE5hbWVzcGFjZTsKLSAgICB0YXJnZXROYW1lc3BhY2UgPSBuZXdUYXJnZXROYW1lc3BhY2U7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRSwgb2xkVGFyZ2V0TmFtZXNwYWNlLCB0YXJnZXROYW1lc3BhY2UpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gbG9jYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKFN0cmluZyBuZXdMb2NhdGlvbikKLSAgewotICAgIFN0cmluZyBvbGRMb2NhdGlvbiA9IGxvY2F0aW9uOwotICAgIGxvY2F0aW9uID0gbmV3TG9jYXRpb247Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fTE9DQVRJT04sIG9sZExvY2F0aW9uLCBsb2NhdGlvbikpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUU5hbWUgZ2V0UU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHFOYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRRTmFtZShRTmFtZSBuZXdRTmFtZSkKLSAgewotICAgIFFOYW1lIG9sZFFOYW1lID0gcU5hbWU7Ci0gICAgcU5hbWUgPSBuZXdRTmFtZTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19RTkFNRSwgb2xkUU5hbWUsIHFOYW1lKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RW5jb2RpbmcoKQotICB7Ci0gICAgcmV0dXJuIGVuY29kaW5nOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbmNvZGluZyhTdHJpbmcgbmV3RW5jb2RpbmcpCi0gIHsKLSAgICBTdHJpbmcgb2xkRW5jb2RpbmcgPSBlbmNvZGluZzsKLSAgICBlbmNvZGluZyA9IG5ld0VuY29kaW5nOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VOQ09ESU5HLCBvbGRFbmNvZGluZywgZW5jb2RpbmcpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVMaXN0IGdldEVNZXNzYWdlcygpCi0gIHsKLSAgICBpZiAoZU1lc3NhZ2VzID09IG51bGwpCi0gICAgewotICAgICAgZU1lc3NhZ2VzID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KE1lc3NhZ2UuY2xhc3MsIHRoaXMsIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VNRVNTQUdFUyk7Ci0gICAgfQotICAgIHJldHVybiBlTWVzc2FnZXM7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFUG9ydFR5cGVzKCkKLSAgewotICAgIGlmIChlUG9ydFR5cGVzID09IG51bGwpCi0gICAgewotICAgICAgZVBvcnRUeXBlcyA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChQb3J0VHlwZS5jbGFzcywgdGhpcywgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVBPUlRfVFlQRVMpOwotICAgIH0KLSAgICByZXR1cm4gZVBvcnRUeXBlczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVMaXN0IGdldEVCaW5kaW5ncygpCi0gIHsKLSAgICBpZiAoZUJpbmRpbmdzID09IG51bGwpCi0gICAgewotICAgICAgZUJpbmRpbmdzID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KEJpbmRpbmcuY2xhc3MsIHRoaXMsIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VCSU5ESU5HUyk7Ci0gICAgfQotICAgIHJldHVybiBlQmluZGluZ3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFU2VydmljZXMoKQotICB7Ci0gICAgaWYgKGVTZXJ2aWNlcyA9PSBudWxsKQotICAgIHsKLSAgICAgIGVTZXJ2aWNlcyA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChTZXJ2aWNlLmNsYXNzLCB0aGlzLCBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FU0VSVklDRVMpOwotICAgIH0KLSAgICByZXR1cm4gZVNlcnZpY2VzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEBkZXByZWNhdGVkCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUxpc3QgZ2V0RU5hbWVzcGFjZXMoKQotICB7Ci0gICAgaWYgKGVOYW1lc3BhY2VzID09IG51bGwpCi0gICAgewotICAgICAgZU5hbWVzcGFjZXMgPSBuZXcgRU9iamVjdENvbnRhaW5tZW50RUxpc3QoTmFtZXNwYWNlLmNsYXNzLCB0aGlzLCBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FTkFNRVNQQUNFUyk7Ci0gICAgfQotICAgIHJldHVybiBlTmFtZXNwYWNlczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFR5cGVzIGdldEVUeXBlcygpCi0gIHsKLSAgICByZXR1cm4gZVR5cGVzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gYmFzaWNTZXRFVHlwZXMoVHlwZXMgbmV3RVR5cGVzLCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKQotICB7Ci0gICAgVHlwZXMgb2xkRVR5cGVzID0gZVR5cGVzOwotICAgIGVUeXBlcyA9IG5ld0VUeXBlczsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgewotICAgICAgRU5vdGlmaWNhdGlvbkltcGwgbm90aWZpY2F0aW9uID0gbmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VUWVBFUywgb2xkRVR5cGVzLCBuZXdFVHlwZXMpOwotICAgICAgaWYgKG1zZ3MgPT0gbnVsbCkKLSAgICAgICAgbXNncyA9IG5vdGlmaWNhdGlvbjsKLSAgICAgIGVsc2UKLSAgICAgICAgbXNncy5hZGQobm90aWZpY2F0aW9uKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1zZ3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVUeXBlcyhUeXBlcyBuZXdFVHlwZXMpCi0gIHsKLSAgICBpZiAobmV3RVR5cGVzICE9IGVUeXBlcykKLSAgICB7Ci0gICAgICBOb3RpZmljYXRpb25DaGFpbiBtc2dzID0gbnVsbDsKLSAgICAgIGlmIChlVHlwZXMgIT0gbnVsbCkKLSAgICAgICAgbXNncyA9ICgoSW50ZXJuYWxFT2JqZWN0KWVUeXBlcykuZUludmVyc2VSZW1vdmUodGhpcywgRU9QUE9TSVRFX0ZFQVRVUkVfQkFTRSAtIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VUWVBFUywgbnVsbCwgbXNncyk7Ci0gICAgICBpZiAobmV3RVR5cGVzICE9IG51bGwpCi0gICAgICAgIG1zZ3MgPSAoKEludGVybmFsRU9iamVjdCluZXdFVHlwZXMpLmVJbnZlcnNlQWRkKHRoaXMsIEVPUFBPU0lURV9GRUFUVVJFX0JBU0UgLSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FVFlQRVMsIG51bGwsIG1zZ3MpOwotICAgICAgbXNncyA9IGJhc2ljU2V0RVR5cGVzKG5ld0VUeXBlcywgbXNncyk7Ci0gICAgICBpZiAobXNncyAhPSBudWxsKQotICAgICAgICBtc2dzLmRpc3BhdGNoKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVRZUEVTLCBuZXdFVHlwZXMsIG5ld0VUeXBlcykpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZU5vdGlmeShOb3RpZmljYXRpb24gbXNnKQotICB7Ci0gICAgc3VwZXIuZU5vdGlmeShtc2cpOwotCi0gICAgLy8gY3MuLiBpZiB3ZSd2ZSBhZGRlZCBhIFR5cGVzIGVsZW1lbnQsIGFuZCB0aGlzIGRlZmluaXRpb24gaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhIHJlc291cmNlCi0gICAgLy8gd2UgbmVlZCB0byBzZXQgdGhlIHNjaGVtYUxvY2F0aW9ucyBmb3IgYW55IGlubGluZSBzY2hlbWFMb2NhdGlvbnMuCi0gICAgLy8gSWYgbm90IHlldCBhdHRhY2hlZCB0byBhIHJlc291cmNlLCB0aGUgc2NoZW1hTG9jYXRpb24ncyB3aWxsIGJlIHNldCB2aWEgV1NETFJlc291cmNlSW1wbC5hdHRhY2hlZChFT2JqZWN0IG8pCi0gICAgLy8KLSAgICBpZiAobXNnLmdldEZlYXR1cmUoKSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5ERUZJTklUSU9OX19FVFlQRVMgJiYgbXNnLmdldEV2ZW50VHlwZSgpID09IE5vdGlmaWNhdGlvbi5TRVQpCi0gICAgewotICAgICAgaWYgKGVSZXNvdXJjZSgpIGluc3RhbmNlb2YgV1NETFJlc291cmNlSW1wbCAmJiBnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgc2V0SW5saW5lU2NoZW1hTG9jYXRpb25zKGVSZXNvdXJjZSgpKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFSW1wb3J0cygpCi0gIHsKLSAgICBpZiAoZUltcG9ydHMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBlSW1wb3J0cyA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChJbXBvcnQuY2xhc3MsIHRoaXMsIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VJTVBPUlRTKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVJbXBvcnRzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEFkZCBhIGJpbmRpbmcgdG8gdGhpcyBXU0RMIGRlc2NyaXB0aW9uLgotICAgKiBAcGFyYW0gYmluZGluZyB0aGUgYmluZGluZyB0byBiZSBhZGRlZAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEJpbmRpbmcoamF2YXgud3NkbC5CaW5kaW5nIGJpbmRpbmcpCi0gIHsKLSAgICBnZXRFQmluZGluZ3MoKS5hZGQoKEJpbmRpbmcpYmluZGluZyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogQWRkIGFuIGltcG9ydCB0byB0aGlzIFdTREwgZGVzY3JpcHRpb24uCi0gICAqIEBwYXJhbSBpbXBvcnREZWYgdGhlIGltcG9ydCB0byBiZSBhZGRlZAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEltcG9ydChqYXZheC53c2RsLkltcG9ydCBpbXBvcnREZWYpCi0gIHsKLSAgICBnZXRFSW1wb3J0cygpLmFkZCgoSW1wb3J0KWltcG9ydERlZik7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogQWRkIGEgbWVzc2FnZSB0byB0aGlzIFdTREwgZGVzY3JpcHRpb24uCi0gICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlIHRvIGJlIGFkZGVkCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkTWVzc2FnZShqYXZheC53c2RsLk1lc3NhZ2UgbWVzc2FnZSkKLSAgewotICAgIGdldEVNZXNzYWdlcygpLmFkZCgoTWVzc2FnZSltZXNzYWdlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGlzIGEgd2F5IHRvIGFkZCBhIG5hbWVzcGFjZSBhc3NvY2lhdGlvbiB0byBhIGRlZmluaXRpb24uCi0gICAqIEl0IGlzIHNpbWlsYXIgdG8gYWRkaW5nIGEgbmFtZXNwYWNlIHByZWZpeCBkZWNsYXJhdGlvbiB0byB0aGUKLSAgICogdG9wIG9mIGEgJmx0O3dzZGw6ZGVmaW5pdGlvbiZndDsgZWxlbWVudC4gVGhpcyBoYXMgbm90aGluZyB0byBkbwotICAgKiB3aXRoIHRoZSAmbHQ7d3NkbDppbXBvcnQmZ3Q7IGVsZW1lbnQ7IHRoZXJlIGFyZSBzZXBhcmF0ZSBtZXRob2RzIGZvcgotICAgKiBkZWFsaW5nIHdpdGggaW5mb3JtYXRpb24gZGVzY3JpYmVkIGJ5ICZsdDt3c2RsOmltcG9ydCZndDsgZWxlbWVudHMuCi0gICAqIFRoZXJlIGlzIGEgZGVmYXVsdCBuYW1lc3BhY2UgYXNzb2NpYXRpb24gKHdoaWNoIGNhbiBiZQotICAgKiBvdmVycmlkZGVuKSBiZXR3ZWVuIHRoZSBudWxsIHByZWZpeCBhbmQKLSAgICogaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8uCi0gICAqIEBwYXJhbSBwcmVmaXggdGhlIHByZWZpeCB0byB1c2UgZm9yIHRoaXMgbmFtZXNwYWNlICh3aGVuCi0gICAqIHJlbmRlcmluZyB0aGlzIGluZm9ybWF0aW9uIGFzIFhNTCkuIFVzZSBudWxsIG9yIGFuIGVtcHR5IHN0cmluZwotICAgKiB0byBkZXNjcmliZSB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgKGkuZS4geG1sbnM9Ii4uLiIpLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlVVJJIHRoZSBuYW1lc3BhY2UgVVJJIHRvIGFzc29jaWF0ZSB0aGUgcHJlZml4Ci0gICAqIHdpdGguIElmIHlvdSB1c2UgbnVsbCwgdGhlIG5hbWVzcGFjZSBhc3NvY2lhdGlvbiB3aWxsIGJlIHJlbW92ZWQuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkTmFtZXNwYWNlKFN0cmluZyBwcmVmaXgsIFN0cmluZyBuYW1lc3BhY2VVUkkpCi0gIHsKLSAgICBpZiAocHJlZml4ID09IG51bGwpCi0gICAgICBwcmVmaXggPSAiIjsKLQotICAgIGlmIChuYW1lc3BhY2VVUkkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBGaXJzdCwgY2hlY2sgaWYgdGhlcmUgaXMgdGhpcyBuYW1lc3BhY2UgYWxyZWFkeS4KLSAgICAgIFN0cmluZyBleGlzdGluZ1ByZWZpeCA9IGdldFByZWZpeChuYW1lc3BhY2VVUkkpOwotICAgICAgaWYgKGV4aXN0aW5nUHJlZml4ICE9IG51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcmVmaXggaXMgbm90IGFscmVhZHkgdXNlZCBmb3IgYSBkaWZmZXJlbnQgbmFtZXNwYWNlCi0gICAgICBNYXAgbmFtZXNwYWNlcyA9IGdldE5hbWVzcGFjZXMoKTsKLSAgICAgIFN0cmluZyBleGlzdGluZ05hbWVzcGFjZSA9IChTdHJpbmcpbmFtZXNwYWNlcy5nZXQocHJlZml4KTsKLSAgICAgIGlmIChleGlzdGluZ05hbWVzcGFjZSA9PSBudWxsKQotICAgICAgewotICAgICAgICBuYW1lc3BhY2VzLnB1dChwcmVmaXgsIG5hbWVzcGFjZVVSSSk7Ci0KLSAgICAgICAgLy8gU3VwcG9ydCBmb3IgTmFtZXNwYWNlCi0gICAgICAgIE5hbWVzcGFjZSBlbnMgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlTmFtZXNwYWNlKCk7Ci0gICAgICAgIGVucy5zZXRQcmVmaXgocHJlZml4KTsKLSAgICAgICAgZW5zLnNldFVSSShuYW1lc3BhY2VVUkkpOwotICAgICAgICBnZXRFTmFtZXNwYWNlcygpLmFkZChlbnMpOwotCi0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgLy8gVGhlIHByZWZpeCBpcyB0YWtlbiBhbHJlYWR5LiBNYWtlIGEgdW5pcXVlIHByZWZpeAotICAgICAgaWYgKHByZWZpeC5lbmRzV2l0aCgiMSIpKQotICAgICAgICBwcmVmaXggPSBwcmVmaXguc3Vic3RyaW5nKDAsIHByZWZpeC5sZW5ndGgoKSAtIDEpOwotCi0gICAgICBmb3IgKGludCBpID0gMjs7IGkrKykKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG5ld1ByZWZpeCA9IHByZWZpeCArIGk7Ci0gICAgICAgIGlmICghbmFtZXNwYWNlcy5jb250YWluc0tleShuZXdQcmVmaXgpKQotICAgICAgICB7Ci0gICAgICAgICAgbmFtZXNwYWNlcy5wdXQobmV3UHJlZml4LCBuYW1lc3BhY2VVUkkpOwotCi0gICAgICAgICAgLy8gU3VwcG9ydCBmb3IgTmFtZXNwYWNlCi0gICAgICAgICAgTmFtZXNwYWNlIGVucyA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVOYW1lc3BhY2UoKTsKLSAgICAgICAgICBlbnMuc2V0UHJlZml4KHByZWZpeCk7Ci0gICAgICAgICAgZW5zLnNldFVSSShuYW1lc3BhY2VVUkkpOwotICAgICAgICAgIGdldEVOYW1lc3BhY2VzKCkuYWRkKGVucyk7Ci0KLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9IC8vIGVuZCBpZiAobmFtZXNwYWNlVVJJICE9IG51bGwpCi0gICAgZWxzZQotICAgIHsKLSAgICAgIGdldE5hbWVzcGFjZXMoKS5yZW1vdmUocHJlZml4KTsKLQotICAgICAgLy8gU3VwcG9ydCBmb3IgTmFtZXNwYWNlCi0gICAgICBnZXRFTmFtZXNwYWNlcygpLnJlbW92ZShwcmVmaXgpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBBZGQgYSBwb3J0VHlwZSB0byB0aGlzIFdTREwgZGVzY3JpcHRpb24uCi0gICAqIEBwYXJhbSBwb3J0VHlwZSB0aGUgcG9ydFR5cGUgdG8gYmUgYWRkZWQKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRQb3J0VHlwZShqYXZheC53c2RsLlBvcnRUeXBlIHBvcnRUeXBlKQotICB7Ci0gICAgZ2V0RVBvcnRUeXBlcygpLmFkZCgoUG9ydFR5cGUpcG9ydFR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEFkZCBhIHNlcnZpY2UgdG8gdGhpcyBXU0RMIGRlc2NyaXB0aW9uLgotICAgKiBAcGFyYW0gc2VydmljZSB0aGUgc2VydmljZSB0byBiZSBhZGRlZAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFNlcnZpY2UoamF2YXgud3NkbC5TZXJ2aWNlIHNlcnZpY2UpCi0gIHsKLSAgICBnZXRFU2VydmljZXMoKS5hZGQoKFNlcnZpY2Upc2VydmljZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogQ3JlYXRlIGEgbmV3IGJpbmRpbmcgZmF1bHQuCi0gICAqIEByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgYmluZGluZyBmYXVsdAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBCaW5kaW5nRmF1bHQgY3JlYXRlQmluZGluZ0ZhdWx0KCkKLSAgewotICAgIGphdmF4LndzZGwuQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdCA9IFdTRExGYWN0b3J5SW1wbC5lSU5TVEFOQ0UuY3JlYXRlQmluZGluZ0ZhdWx0KCk7Ci0gICAgcmV0dXJuIGJpbmRpbmdGYXVsdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBDcmVhdGUgYSBuZXcgYmluZGluZyBpbnB1dC4KLSAgICogQHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBiaW5kaW5nIGlucHV0Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIEJpbmRpbmdJbnB1dCBjcmVhdGVCaW5kaW5nSW5wdXQoKQotICB7Ci0gICAgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0ID0gV1NETEZhY3RvcnlJbXBsLmVJTlNUQU5DRS5jcmVhdGVCaW5kaW5nSW5wdXQoKTsKLSAgICByZXR1cm4gYmluZGluZ0lucHV0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIENyZWF0ZSBhIG5ldyBiaW5kaW5nIG91dHB1dC4KLSAgICogQHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBiaW5kaW5nIG91dHB1dAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBCaW5kaW5nT3V0cHV0IGNyZWF0ZUJpbmRpbmdPdXRwdXQoKQotICB7Ci0gICAgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQgPSBXU0RMRmFjdG9yeUltcGwuZUlOU1RBTkNFLmNyZWF0ZUJpbmRpbmdPdXRwdXQoKTsKLSAgICByZXR1cm4gYmluZGluZ091dHB1dDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBDcmVhdGUgYSBuZXcgYmluZGluZyBvcGVyYXRpb24uCi0gICAqIEByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgYmluZGluZyBvcGVyYXRpb24KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgQmluZGluZ09wZXJhdGlvbiBjcmVhdGVCaW5kaW5nT3BlcmF0aW9uKCkKLSAgewotICAgIGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gV1NETEZhY3RvcnlJbXBsLmVJTlNUQU5DRS5jcmVhdGVCaW5kaW5nT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIGJpbmRpbmdPcGVyYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogQ3JlYXRlIGEgbmV3IGJpbmRpbmcuCi0gICAqIEByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgYmluZGluZwotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLkJpbmRpbmcgY3JlYXRlQmluZGluZygpCi0gIHsKLSAgICBqYXZheC53c2RsLkJpbmRpbmcgYmluZGluZyA9IFdTRExGYWN0b3J5SW1wbC5lSU5TVEFOQ0UuY3JlYXRlQmluZGluZygpOwotICAgIGJpbmRpbmcuc2V0VW5kZWZpbmVkKHRydWUpOwotICAgIHJldHVybiBiaW5kaW5nOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIENyZWF0ZSBhIG5ldyBmYXVsdC4KLSAgICogQHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBmYXVsdAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBGYXVsdCBjcmVhdGVGYXVsdCgpCi0gIHsKLSAgICBqYXZheC53c2RsLkZhdWx0IGZhdWx0ID0gV1NETEZhY3RvcnlJbXBsLmVJTlNUQU5DRS5jcmVhdGVGYXVsdCgpOwotICAgIHJldHVybiBmYXVsdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBDcmVhdGUgYSBuZXcgaW1wb3J0LgotICAgKiBAcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGltcG9ydAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLkltcG9ydCBjcmVhdGVJbXBvcnQoKQotICB7Ci0gICAgamF2YXgud3NkbC5JbXBvcnQgaW1wb3J0RGVmID0gV1NETEZhY3RvcnlJbXBsLmVJTlNUQU5DRS5jcmVhdGVJbXBvcnQoKTsKLSAgICByZXR1cm4gaW1wb3J0RGVmOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIENyZWF0ZSBhIG5ldyBpbnB1dC4KLSAgICogQHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBpbnB1dAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBJbnB1dCBjcmVhdGVJbnB1dCgpCi0gIHsKLSAgICBqYXZheC53c2RsLklucHV0IGlucHV0ID0gV1NETEZhY3RvcnlJbXBsLmVJTlNUQU5DRS5jcmVhdGVJbnB1dCgpOwotICAgIHJldHVybiBpbnB1dDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBDcmVhdGUgYSBuZXcgbWVzc2FnZS4KLSAgICogQHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBtZXNzYWdlCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIGphdmF4LndzZGwuTWVzc2FnZSBjcmVhdGVNZXNzYWdlKCkKLSAgewotICAgIGphdmF4LndzZGwuTWVzc2FnZSBtZXNzYWdlID0gV1NETEZhY3RvcnlJbXBsLmVJTlNUQU5DRS5jcmVhdGVNZXNzYWdlKCk7Ci0gICAgbWVzc2FnZS5zZXRVbmRlZmluZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIG1lc3NhZ2U7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogQ3JlYXRlIGEgbmV3IG9wZXJhdGlvbi4KLSAgICogQHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBvcGVyYXRpb24KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgT3BlcmF0aW9uIGNyZWF0ZU9wZXJhdGlvbigpCi0gIHsKLSAgICBqYXZheC53c2RsLk9wZXJhdGlvbiBvcGVyYXRpb24gPSBXU0RMRmFjdG9yeUltcGwuZUlOU1RBTkNFLmNyZWF0ZU9wZXJhdGlvbigpOwotICAgIG9wZXJhdGlvbi5zZXRVbmRlZmluZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBDcmVhdGUgYSBuZXcgb3V0cHV0LgotICAgKiBAcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIG91dHB1dAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBPdXRwdXQgY3JlYXRlT3V0cHV0KCkKLSAgewotICAgIGphdmF4LndzZGwuT3V0cHV0IG91dHB1dCA9IFdTRExGYWN0b3J5SW1wbC5lSU5TVEFOQ0UuY3JlYXRlT3V0cHV0KCk7Ci0gICAgcmV0dXJuIG91dHB1dDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBDcmVhdGUgYSBuZXcgcGFydC4KLSAgICogQHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBwYXJ0Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIFBhcnQgY3JlYXRlUGFydCgpCi0gIHsKLSAgICBqYXZheC53c2RsLlBhcnQgcGFydCA9IFdTRExGYWN0b3J5SW1wbC5lSU5TVEFOQ0UuY3JlYXRlUGFydCgpOwotICAgIHJldHVybiBwYXJ0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIENyZWF0ZSBhIG5ldyBwb3J0LgotICAgKiBAcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIHBvcnQKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgUG9ydCBjcmVhdGVQb3J0KCkKLSAgewotICAgIGphdmF4LndzZGwuUG9ydCBwb3J0ID0gV1NETEZhY3RvcnlJbXBsLmVJTlNUQU5DRS5jcmVhdGVQb3J0KCk7Ci0gICAgcmV0dXJuIHBvcnQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogQ3JlYXRlIGEgbmV3IHBvcnQgdHlwZS4KLSAgICogQHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBwb3J0IHR5cGUKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5Qb3J0VHlwZSBjcmVhdGVQb3J0VHlwZSgpCi0gIHsKLSAgICBqYXZheC53c2RsLlBvcnRUeXBlIHBvcnRUeXBlID0gV1NETEZhY3RvcnlJbXBsLmVJTlNUQU5DRS5jcmVhdGVQb3J0VHlwZSgpOwotICAgIHBvcnRUeXBlLnNldFVuZGVmaW5lZCh0cnVlKTsKLSAgICByZXR1cm4gcG9ydFR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogQ3JlYXRlIGEgbmV3IHNlcnZpY2UuCi0gICAqIEByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgc2VydmljZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLlNlcnZpY2UgY3JlYXRlU2VydmljZSgpCi0gIHsKLSAgICBqYXZheC53c2RsLlNlcnZpY2Ugc2VydmljZSA9IFdTRExGYWN0b3J5SW1wbC5lSU5TVEFOQ0UuY3JlYXRlU2VydmljZSgpOwotICAgIHJldHVybiBzZXJ2aWNlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEdldCB0aGUgc3BlY2lmaWVkIGJpbmRpbmcuIEFsc28gY2hlY2tzIGltcG9ydGVkIGRvY3VtZW50cy4KLSAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGRlc2lyZWQgYmluZGluZy4KLSAgICogQHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBiaW5kaW5nLCBvciBudWxsIGlmIHRoZXJlIHdhc24ndAotICAgKiBhbnkgbWF0Y2hpbmcgYmluZGluZwotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLkJpbmRpbmcgZ2V0QmluZGluZyhRTmFtZSBuYW1lKQotICB7Ci0gICAgcmV0dXJuIChqYXZheC53c2RsLkJpbmRpbmcpcmVzb2x2ZVdTRExFbGVtZW50KFdTRExDb25zdGFudHMuQklORElORywgbmFtZSwgdGhpcyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogR2V0IGFsbCB0aGUgYmluZGluZ3MgZGVmaW5lZCBoZXJlLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBNYXAgZ2V0QmluZGluZ3MoKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZU1hcChXU0RMQ29uc3RhbnRzLkJJTkRJTkcsIGdldEVCaW5kaW5ncygpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBHZXQgYSBtYXAgb2YgbGlzdHMgY29udGFpbmluZyBhbGwgdGhlIGltcG9ydHMgZGVmaW5lZCBoZXJlLgotICAgKiBUaGUgbWFwJ3Mga2V5cyBhcmUgdGhlIG5hbWVzcGFjZVVSSXMsIGFuZCB0aGUgbWFwJ3MgdmFsdWVzCi0gICAqIGFyZSBsaXN0cy4gVGhlcmUgaXMgb25lIGxpc3QgZm9yIGVhY2ggbmFtZXNwYWNlVVJJIGZvciB3aGljaAotICAgKiBpbXBvcnRzIGhhdmUgYmVlbiBkZWZpbmVkLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBNYXAgZ2V0SW1wb3J0cygpCi0gIHsKLSAgICBIYXNoTWFwIG1hcCA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgZm9yIChJdGVyYXRvciBpID0gZ2V0RUltcG9ydHMoKS5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgSW1wb3J0IHRoZUltcG9ydCA9IChJbXBvcnQpaS5uZXh0KCk7Ci0gICAgICBTdHJpbmcga2V5ID0gdGhlSW1wb3J0LmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgaWYgKGtleSA9PSBudWxsKQotICAgICAgewotICAgICAgICBrZXkgPSAiIjsKLSAgICAgIH0KLQotICAgICAgTGlzdCBsaXN0ID0gbnVsbDsKLSAgICAgIGlmIChtYXAuY29udGFpbnNLZXkoa2V5KSkKLSAgICAgIHsKLSAgICAgICAgbGlzdCA9IChMaXN0KW1hcC5nZXQoa2V5KTsKLSAgICAgICAgbGlzdC5hZGQodGhlSW1wb3J0KTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgbGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgbGlzdC5hZGQodGhlSW1wb3J0KTsKLSAgICAgIH0KLSAgICAgIG1hcC5wdXQoa2V5LCBsaXN0KTsKLSAgICB9Ci0gICAgcmV0dXJuIG1hcDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBHZXQgdGhlIGxpc3Qgb2YgaW1wb3J0cyBmb3IgdGhlIHNwZWNpZmllZCBuYW1lc3BhY2VVUkkuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VVUkkgdGhlIG5hbWVzcGFjZVVSSSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICAqIGRlc2lyZWQgaW1wb3J0cy4KLSAgICogQHJldHVybiBhIGxpc3Qgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1wb3J0cwotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEltcG9ydHMoU3RyaW5nIG5hbWVzcGFjZVVSSSkKLSAgewotICAgIExpc3QgbGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSBnZXRFSW1wb3J0cygpLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBJbXBvcnQgdGhlSW1wb3J0ID0gKEltcG9ydClpLm5leHQoKTsKLSAgICAgIGlmIChXU0RMQ29uc3RhbnRzLmlzTWF0Y2hpbmdOYW1lc3BhY2UobmFtZXNwYWNlVVJJLCB0aGVJbXBvcnQuZ2V0TmFtZXNwYWNlVVJJKCkpKQotICAgICAgewotICAgICAgICBsaXN0LmFkZCh0aGVJbXBvcnQpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbGlzdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBHZXQgdGhlIHNwZWNpZmllZCBtZXNzYWdlLiBBbHNvIGNoZWNrcyBpbXBvcnRlZCBkb2N1bWVudHMuCi0gICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBkZXNpcmVkIG1lc3NhZ2UuCi0gICAqIEByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgbWVzc2FnZSwgb3IgbnVsbCBpZiB0aGVyZSB3YXNuJ3QKLSAgICogYW55IG1hdGNoaW5nIG1lc3NhZ2UKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5NZXNzYWdlIGdldE1lc3NhZ2UoUU5hbWUgbmFtZSkKLSAgewotICAgIHJldHVybiAoamF2YXgud3NkbC5NZXNzYWdlKXJlc29sdmVXU0RMRWxlbWVudChXU0RMQ29uc3RhbnRzLk1FU1NBR0UsIG5hbWUsIHRoaXMpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEdldCBhbGwgdGhlIG1lc3NhZ2VzIGRlZmluZWQgaGVyZS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgTWFwIGdldE1lc3NhZ2VzKCkKLSAgewotICAgIHJldHVybiBjcmVhdGVNYXAoV1NETENvbnN0YW50cy5NRVNTQUdFLCBnZXRFTWVzc2FnZXMoKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogR2V0IHRoZSBuYW1lc3BhY2UgVVJJIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHByZWZpeC4gT3IgbnVsbCBpZgotICAgKiB0aGVyZSBpcyBubyBuYW1lc3BhY2UgVVJJIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHByZWZpeC4gVGhpcyBpcwotICAgKiB1bnJlbGF0ZWQgdG8gdGhlICZsdDt3c2RsOmltcG9ydCZndDsgZWxlbWVudC4KLSAgICogQHNlZSAjYWRkTmFtZXNwYWNlKFN0cmluZywgU3RyaW5nKQotICAgKiBAc2VlICNnZXRQcmVmaXgoU3RyaW5nKQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZXNwYWNlKFN0cmluZyBwcmVmaXgpCi0gIHsKLSAgICByZXR1cm4gKFN0cmluZylnZXROYW1lc3BhY2VzKCkuZ2V0KHByZWZpeCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogR2V0IGFsbCBuYW1lc3BhY2UgYXNzb2NpYXRpb25zIGluIHRoaXMgZGVmaW5pdGlvbi4gVGhlIGtleXMgYXJlCi0gICAqIHRoZSBwcmVmaXhlcywgYW5kIHRoZSBuYW1lc3BhY2UgVVJJcyBhcmUgdGhlIHZhbHVlcy4gVGhpcyBpcwotICAgKiB1bnJlbGF0ZWQgdG8gdGhlICZsdDt3c2RsOmltcG9ydCZndDsgZWxlbWVudC4KLSAgICogQHNlZSAjYWRkTmFtZXNwYWNlKFN0cmluZywgU3RyaW5nKQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBNYXAgZ2V0TmFtZXNwYWNlcygpCi0gIHsKLSAgICByZXR1cm4gbmFtZXNwYWNlczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBHZXQgdGhlIHNwZWNpZmllZCBwb3J0VHlwZS4gQWxzbyBjaGVja3MgaW1wb3J0ZWQgZG9jdW1lbnRzLgotICAgKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiB0aGUgZGVzaXJlZCBwb3J0VHlwZS4KLSAgICogQHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBwb3J0VHlwZSwgb3IgbnVsbCBpZiB0aGVyZSB3YXNuJ3QKLSAgICogYW55IG1hdGNoaW5nIHBvcnRUeXBlCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIGphdmF4LndzZGwuUG9ydFR5cGUgZ2V0UG9ydFR5cGUoUU5hbWUgbmFtZSkKLSAgewotICAgIHJldHVybiAoamF2YXgud3NkbC5Qb3J0VHlwZSlyZXNvbHZlV1NETEVsZW1lbnQoV1NETENvbnN0YW50cy5QT1JUX1RZUEUsIG5hbWUsIHRoaXMpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEdldCBhbGwgdGhlIHBvcnRUeXBlcyBkZWZpbmVkIGhlcmUuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIE1hcCBnZXRQb3J0VHlwZXMoKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZU1hcChXU0RMQ29uc3RhbnRzLlBPUlRfVFlQRSwgZ2V0RVBvcnRUeXBlcygpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBHZXQgYSBwcmVmaXggYXNzb2NpYXRlZCB3aXRoIHRoaXMgbmFtZXNwYWNlIFVSSS4gT3IgbnVsbCBpZgotICAgKiB0aGVyZSBhcmUgbm8gcHJlZml4ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbmFtZXNwYWNlIFVSSS4gVGhpcyBpcwotICAgKiB1bnJlbGF0ZWQgdG8gdGhlICZsdDt3c2RsOmltcG9ydCZndDsgZWxlbWVudC4KLSAgICogQHNlZSAjYWRkTmFtZXNwYWNlKFN0cmluZywgU3RyaW5nKQotICAgKiBAc2VlICNnZXROYW1lc3BhY2UoU3RyaW5nKQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UHJlZml4KFN0cmluZyBuYW1lc3BhY2VVUkkpCi0gIHsKLSAgICBpZiAobmFtZXNwYWNlVVJJID09IG51bGwpCi0gICAgICByZXR1cm4gbnVsbDsKLQotICAgIEl0ZXJhdG9yIGVudHJ5SXRlcmF0b3IgPSBnZXROYW1lc3BhY2VzKCkuZW50cnlTZXQoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChlbnRyeUl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBNYXAuRW50cnkgZW50cnkgPSAoTWFwLkVudHJ5KWVudHJ5SXRlcmF0b3IubmV4dCgpOwotICAgICAgU3RyaW5nIHByZWZpeCA9IChTdHJpbmcpZW50cnkuZ2V0S2V5KCk7Ci0gICAgICBTdHJpbmcgYXNzb2NOYW1lc3BhY2VVUkkgPSAoU3RyaW5nKWVudHJ5LmdldFZhbHVlKCk7Ci0KLSAgICAgIGlmIChuYW1lc3BhY2VVUkkuZXF1YWxzKGFzc29jTmFtZXNwYWNlVVJJKSAmJiBwcmVmaXggIT0gIiIpIC8vIGRlZmF1bHQgbmFtZXNwYWNlCi0gICAgICAgIHJldHVybiBwcmVmaXg7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEdldCB0aGUgc3BlY2lmaWVkIHNlcnZpY2UuIEFsc28gY2hlY2tzIGltcG9ydGVkIGRvY3VtZW50cy4KLSAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGRlc2lyZWQgc2VydmljZS4KLSAgICogQHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBzZXJ2aWNlLCBvciBudWxsIGlmIHRoZXJlIHdhc24ndAotICAgKiBhbnkgbWF0Y2hpbmcgc2VydmljZQotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLlNlcnZpY2UgZ2V0U2VydmljZShRTmFtZSBuYW1lKQotICB7Ci0gICAgcmV0dXJuIChqYXZheC53c2RsLlNlcnZpY2UpcmVzb2x2ZVdTRExFbGVtZW50KFdTRExDb25zdGFudHMuU0VSVklDRSwgbmFtZSwgdGhpcyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogR2V0IGFsbCB0aGUgc2VydmljZXMgZGVmaW5lZCBoZXJlLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBNYXAgZ2V0U2VydmljZXMoKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZU1hcChXU0RMQ29uc3RhbnRzLlNFUlZJQ0UsIGdldEVTZXJ2aWNlcygpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIEV4dGVuc2lvblJlZ2lzdHJ5IGZvciB0aGlzIERlZmluaXRpb24uCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIEV4dGVuc2lvblJlZ2lzdHJ5IGdldEV4dGVuc2lvblJlZ2lzdHJ5KCkKLSAgewotICAgIHJldHVybiBleHRlbnNpb25SZWdpc3RyeTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBTZXQgdGhlIEV4dGVuc2lvblJlZ2lzdHJ5IGZvciB0aGlzIERlZmluaXRpb24uCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RXh0ZW5zaW9uUmVnaXN0cnkoRXh0ZW5zaW9uUmVnaXN0cnkgZXh0ZW5zaW9uUmVnaXN0cnkpCi0gIHsKLSAgICB0aGlzLmV4dGVuc2lvblJlZ2lzdHJ5ID0gZXh0ZW5zaW9uUmVnaXN0cnk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldERvY3VtZW50QmFzZVVSSSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0TG9jYXRpb24oKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERvY3VtZW50QmFzZVVSSShTdHJpbmcgZG9jdW1lbnRCYXNlKQotICB7Ci0gICAgc2V0TG9jYXRpb24oZG9jdW1lbnRCYXNlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLlR5cGVzIGNyZWF0ZVR5cGVzKCkKLSAgewotICAgIGphdmF4LndzZGwuVHlwZXMgdHlwZXMgPSBXU0RMRmFjdG9yeUltcGwuZUlOU1RBTkNFLmNyZWF0ZVR5cGVzKCk7Ci0gICAgcmV0dXJuIHR5cGVzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIGphdmF4LndzZGwuU2VydmljZSByZW1vdmVTZXJ2aWNlKFFOYW1lIG5hbWUpCi0gIHsKLSAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IHJlc29sdmVXU0RMRWxlbWVudChXU0RMQ29uc3RhbnRzLlNFUlZJQ0UsIG5hbWUpOwotICAgIGJvb2xlYW4gcmVtb3ZlZCA9IGZhbHNlOwotICAgIGlmICh3c2RsRWxlbWVudCBpbnN0YW5jZW9mIFNlcnZpY2UpCi0gICAgICByZW1vdmVkID0gZ2V0RVNlcnZpY2VzKCkucmVtb3ZlKHdzZGxFbGVtZW50KTsKLSAgICBpZiAoIXJlbW92ZWQpCi0gICAgICB3c2RsRWxlbWVudCA9IG51bGw7Ci0gICAgcmV0dXJuIChTZXJ2aWNlKXdzZGxFbGVtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIGphdmF4LndzZGwuQmluZGluZyByZW1vdmVCaW5kaW5nKFFOYW1lIG5hbWUpCi0gIHsKLSAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IHJlc29sdmVXU0RMRWxlbWVudChXU0RMQ29uc3RhbnRzLkJJTkRJTkcsIG5hbWUpOwotICAgIGJvb2xlYW4gcmVtb3ZlZCA9IGZhbHNlOwotICAgIGlmICh3c2RsRWxlbWVudCBpbnN0YW5jZW9mIEJpbmRpbmcpCi0gICAgICByZW1vdmVkID0gZ2V0RUJpbmRpbmdzKCkucmVtb3ZlKHdzZGxFbGVtZW50KTsKLSAgICBpZiAoIXJlbW92ZWQpCi0gICAgICB3c2RsRWxlbWVudCA9IG51bGw7Ci0gICAgcmV0dXJuIChCaW5kaW5nKXdzZGxFbGVtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIGphdmF4LndzZGwuUG9ydFR5cGUgcmVtb3ZlUG9ydFR5cGUoUU5hbWUgbmFtZSkKLSAgewotICAgIFdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gcmVzb2x2ZVdTRExFbGVtZW50KFdTRExDb25zdGFudHMuUE9SVF9UWVBFLCBuYW1lKTsKLSAgICBib29sZWFuIHJlbW92ZWQgPSBmYWxzZTsKLSAgICBpZiAod3NkbEVsZW1lbnQgaW5zdGFuY2VvZiBQb3J0VHlwZSkKLSAgICAgIHJlbW92ZWQgPSBnZXRFUG9ydFR5cGVzKCkucmVtb3ZlKHdzZGxFbGVtZW50KTsKLSAgICBpZiAoIXJlbW92ZWQpCi0gICAgICB3c2RsRWxlbWVudCA9IG51bGw7Ci0gICAgcmV0dXJuIChQb3J0VHlwZSl3c2RsRWxlbWVudDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLk1lc3NhZ2UgcmVtb3ZlTWVzc2FnZShRTmFtZSBuYW1lKQotICB7Ci0gICAgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQgPSByZXNvbHZlV1NETEVsZW1lbnQoV1NETENvbnN0YW50cy5NRVNTQUdFLCBuYW1lKTsKLSAgICBib29sZWFuIHJlbW92ZWQgPSBmYWxzZTsKLSAgICBpZiAod3NkbEVsZW1lbnQgaW5zdGFuY2VvZiBNZXNzYWdlKQotICAgICAgcmVtb3ZlZCA9IGdldEVNZXNzYWdlcygpLnJlbW92ZSh3c2RsRWxlbWVudCk7Ci0gICAgaWYgKCFyZW1vdmVkKQotICAgICAgd3NkbEVsZW1lbnQgPSBudWxsOwotICAgIHJldHVybiAoTWVzc2FnZSl3c2RsRWxlbWVudDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLlR5cGVzIGdldFR5cGVzKCkKLSAgewotICAgIHJldHVybiBnZXRFVHlwZXMoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFR5cGVzKGphdmF4LndzZGwuVHlwZXMgdHlwZXMpCi0gIHsKLSAgICBzZXRFVHlwZXMoKFR5cGVzKXR5cGVzKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE5vdGlmaWNhdGlvbkNoYWluIGVJbnZlcnNlUmVtb3ZlKEludGVybmFsRU9iamVjdCBvdGhlckVuZCwgaW50IGZlYXR1cmVJRCwgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRUlNUE9SVFM6Ci0gICAgICByZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldEVJbXBvcnRzKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVRZUEVTOgotICAgICAgcmV0dXJuIGJhc2ljU2V0RVR5cGVzKG51bGwsIG1zZ3MpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FTUVTU0FHRVM6Ci0gICAgICByZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldEVNZXNzYWdlcygpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VQT1JUX1RZUEVTOgotICAgICAgcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRFUG9ydFR5cGVzKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRUJJTkRJTkdTOgotICAgICAgcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRFQmluZGluZ3MoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FU0VSVklDRVM6Ci0gICAgICByZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldEVTZXJ2aWNlcygpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VOQU1FU1BBQ0VTOgotICAgICAgcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRFTmFtZXNwYWNlcygpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSW52ZXJzZVJlbW92ZShvdGhlckVuZCwgZmVhdHVyZUlELCBtc2dzKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRToKLSAgICAgIHJldHVybiBnZXRUYXJnZXROYW1lc3BhY2UoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fTE9DQVRJT046Ci0gICAgICByZXR1cm4gZ2V0TG9jYXRpb24oKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fUU5BTUU6Ci0gICAgICByZXR1cm4gZ2V0UU5hbWUoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRU5DT0RJTkc6Ci0gICAgICByZXR1cm4gZ2V0RW5jb2RpbmcoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRUlNUE9SVFM6Ci0gICAgICByZXR1cm4gZ2V0RUltcG9ydHMoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVRZUEVTOgotICAgICAgcmV0dXJuIGdldEVUeXBlcygpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FTUVTU0FHRVM6Ci0gICAgICByZXR1cm4gZ2V0RU1lc3NhZ2VzKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VQT1JUX1RZUEVTOgotICAgICAgcmV0dXJuIGdldEVQb3J0VHlwZXMoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRUJJTkRJTkdTOgotICAgICAgcmV0dXJuIGdldEVCaW5kaW5ncygpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FU0VSVklDRVM6Ci0gICAgICByZXR1cm4gZ2V0RVNlcnZpY2VzKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VOQU1FU1BBQ0VTOgotICAgICAgcmV0dXJuIGdldEVOYW1lc3BhY2VzKCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRToKLSAgICAgIHNldFRhcmdldE5hbWVzcGFjZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fTE9DQVRJT046Ci0gICAgICBzZXRMb2NhdGlvbigoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fUU5BTUU6Ci0gICAgICBzZXRRTmFtZSgoUU5hbWUpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FTkNPRElORzoKLSAgICAgIHNldEVuY29kaW5nKChTdHJpbmcpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FSU1QT1JUUzoKLSAgICAgIGdldEVJbXBvcnRzKCkuY2xlYXIoKTsKLSAgICAgIGdldEVJbXBvcnRzKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVRZUEVTOgotICAgICAgc2V0RVR5cGVzKChUeXBlcyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VNRVNTQUdFUzoKLSAgICAgIGdldEVNZXNzYWdlcygpLmNsZWFyKCk7Ci0gICAgICBnZXRFTWVzc2FnZXMoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FUE9SVF9UWVBFUzoKLSAgICAgIGdldEVQb3J0VHlwZXMoKS5jbGVhcigpOwotICAgICAgZ2V0RVBvcnRUeXBlcygpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VCSU5ESU5HUzoKLSAgICAgIGdldEVCaW5kaW5ncygpLmNsZWFyKCk7Ci0gICAgICBnZXRFQmluZGluZ3MoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FU0VSVklDRVM6Ci0gICAgICBnZXRFU2VydmljZXMoKS5jbGVhcigpOwotICAgICAgZ2V0RVNlcnZpY2VzKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRU5BTUVTUEFDRVM6Ci0gICAgICBnZXRFTmFtZXNwYWNlcygpLmNsZWFyKCk7Ci0gICAgICBnZXRFTmFtZXNwYWNlcygpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFOgotICAgICAgc2V0VGFyZ2V0TmFtZXNwYWNlKFRBUkdFVF9OQU1FU1BBQ0VfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19MT0NBVElPTjoKLSAgICAgIHNldExvY2F0aW9uKExPQ0FUSU9OX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fUU5BTUU6Ci0gICAgICBzZXRRTmFtZShRTkFNRV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VOQ09ESU5HOgotICAgICAgc2V0RW5jb2RpbmcoRU5DT0RJTkdfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FSU1QT1JUUzoKLSAgICAgIGdldEVJbXBvcnRzKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVRZUEVTOgotICAgICAgc2V0RVR5cGVzKChUeXBlcyludWxsKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRU1FU1NBR0VTOgotICAgICAgZ2V0RU1lc3NhZ2VzKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVBPUlRfVFlQRVM6Ci0gICAgICBnZXRFUG9ydFR5cGVzKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRUJJTkRJTkdTOgotICAgICAgZ2V0RUJpbmRpbmdzKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVNFUlZJQ0VTOgotICAgICAgZ2V0RVNlcnZpY2VzKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRU5BTUVTUEFDRVM6Ci0gICAgICBnZXRFTmFtZXNwYWNlcygpLmNsZWFyKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRToKLSAgICAgIHJldHVybiBUQVJHRVRfTkFNRVNQQUNFX0VERUZBVUxUID09IG51bGwgPyB0YXJnZXROYW1lc3BhY2UgIT0gbnVsbCA6ICFUQVJHRVRfTkFNRVNQQUNFX0VERUZBVUxULmVxdWFscyh0YXJnZXROYW1lc3BhY2UpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19MT0NBVElPTjoKLSAgICAgIHJldHVybiBMT0NBVElPTl9FREVGQVVMVCA9PSBudWxsID8gbG9jYXRpb24gIT0gbnVsbCA6ICFMT0NBVElPTl9FREVGQVVMVC5lcXVhbHMobG9jYXRpb24pOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19RTkFNRToKLSAgICAgIHJldHVybiBRTkFNRV9FREVGQVVMVCA9PSBudWxsID8gcU5hbWUgIT0gbnVsbCA6ICFRTkFNRV9FREVGQVVMVC5lcXVhbHMocU5hbWUpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FTkNPRElORzoKLSAgICAgIHJldHVybiBFTkNPRElOR19FREVGQVVMVCA9PSBudWxsID8gZW5jb2RpbmcgIT0gbnVsbCA6ICFFTkNPRElOR19FREVGQVVMVC5lcXVhbHMoZW5jb2RpbmcpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FSU1QT1JUUzoKLSAgICAgIHJldHVybiBlSW1wb3J0cyAhPSBudWxsICYmICFlSW1wb3J0cy5pc0VtcHR5KCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VUWVBFUzoKLSAgICAgIHJldHVybiBlVHlwZXMgIT0gbnVsbDsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRU1FU1NBR0VTOgotICAgICAgcmV0dXJuIGVNZXNzYWdlcyAhPSBudWxsICYmICFlTWVzc2FnZXMuaXNFbXB0eSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FUE9SVF9UWVBFUzoKLSAgICAgIHJldHVybiBlUG9ydFR5cGVzICE9IG51bGwgJiYgIWVQb3J0VHlwZXMuaXNFbXB0eSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ERUZJTklUSU9OX19FQklORElOR1M6Ci0gICAgICByZXR1cm4gZUJpbmRpbmdzICE9IG51bGwgJiYgIWVCaW5kaW5ncy5pc0VtcHR5KCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkRFRklOSVRJT05fX0VTRVJWSUNFUzoKLSAgICAgIHJldHVybiBlU2VydmljZXMgIT0gbnVsbCAmJiAhZVNlcnZpY2VzLmlzRW1wdHkoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRU5BTUVTUEFDRVM6Ci0gICAgICByZXR1cm4gZU5hbWVzcGFjZXMgIT0gbnVsbCAmJiAhZU5hbWVzcGFjZXMuaXNFbXB0eSgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgRG9jdW1lbnQgZ2V0RG9jdW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIGRvY3VtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFNldHMgdGhlIG93bmVyIGRvY3VtZW50LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERvY3VtZW50KERvY3VtZW50IGRvY3VtZW50KQotICB7Ci0gICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKHRhcmdldE5hbWVzcGFjZTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKHRhcmdldE5hbWVzcGFjZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCBsb2NhdGlvbjogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKGxvY2F0aW9uKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIHFOYW1lOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQocU5hbWUpOwotICAgIHJlc3VsdC5hcHBlbmQoIiwgZW5jb2Rpbmc6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChlbmNvZGluZyk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vCi0gIC8vIEhhbmQtY29kZWQgbWV0aG9kcwotICAvLwotCi0gIHByb3RlY3RlZCBzdGF0aWMgUmVzb3VyY2VTZXQgZ2xvYmFsUmVzb3VyY2VTZXQ7Ci0KLSAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgUmVzb3VyY2VTZXQgZ2V0R2xvYmFsUmVzb3VyY2VTZXQoKQotICB7Ci0gICAgaWYgKGdsb2JhbFJlc291cmNlU2V0ID09IG51bGwpCi0gICAgewotICAgICAgZ2xvYmFsUmVzb3VyY2VTZXQgPSBjcmVhdGVSZXNvdXJjZVNldCgpOwotICAgICAgLy9TdHJpbmcgYmFzZVVSTCA9IFdTRExQbHVnaW4uSU5TVEFOQ0UuZ2V0QmFzZVVSTCgpLnRvU3RyaW5nKCk7Ci0gICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiQmFzZSBVUkwgaXM6ICIgKyBiYXNlVVJMKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZ2xvYmFsUmVzb3VyY2VTZXQ7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFJlc291cmNlU2V0IGNyZWF0ZVJlc291cmNlU2V0KCkKLSAgewotICAgIFJlc291cmNlU2V0IHJlc3VsdCA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsKLSAgICByZXN1bHQuZ2V0UmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoKS5nZXRFeHRlbnNpb25Ub0ZhY3RvcnlNYXAoKS5wdXQoIndzZGwiLCBuZXcgV1NETFJlc291cmNlRmFjdG9yeUltcGwoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBEZWZpbml0aW9uIGNyZWF0ZURlZmluaXRpb24oTm9kZSBub2RlKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZURlZmluaXRpb24obm9kZSwgbnVsbCk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIERlZmluaXRpb24gY3JlYXRlRGVmaW5pdGlvbihOb2RlIG5vZGUsIFN0cmluZyBsb2NhdGlvbikKLSAgewotICAgIHJldHVybiBjcmVhdGVEZWZpbml0aW9uKG5vZGUsIGxvY2F0aW9uLCB0cnVlKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgRGVmaW5pdGlvbiBjcmVhdGVEZWZpbml0aW9uKE5vZGUgbm9kZSwgU3RyaW5nIGxvY2F0aW9uLCBib29sZWFuIHVzZUV4dGVuc2lvbkZhY3RvcmllcykKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVEZWZpbml0aW9uKCk7Ci0gICAgKChEZWZpbml0aW9uSW1wbClkZWZpbml0aW9uKS5zZXRVc2VFeHRlbnNpb25GYWN0b3JpZXModXNlRXh0ZW5zaW9uRmFjdG9yaWVzKTsKLSAgICBkZWZpbml0aW9uLnNldEVsZW1lbnQoKEVsZW1lbnQpbm9kZSk7Ci0gICAgZGVmaW5pdGlvbi5zZXREb2N1bWVudEJhc2VVUkkobG9jYXRpb24pOwotICAgIHJldHVybiBkZWZpbml0aW9uOwotICB9Ci0KLSAgcHJpdmF0ZSBXU0RMRWxlbWVudCByZXNvbHZlV1NETEVsZW1lbnQoaW50IHR5cGUsIExpc3QgbGlzdCwgUU5hbWUgcW5hbWUpCi0gIHsKLSAgICBXU0RMRWxlbWVudCByZXN1bHQgPSBudWxsOwotICAgIGlmIChxbmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGZvciAoSXRlcmF0b3IgaSA9IGxpc3QuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgICAgewotICAgICAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IChXU0RMRWxlbWVudClpLm5leHQoKTsKLSAgICAgICAgUU5hbWUgdGhlUU5hbWUgPSBnZXRRTmFtZUZvcldTRExFbGVtZW50KHR5cGUsIHdzZGxFbGVtZW50KTsKLSAgICAgICAgaWYgKHFuYW1lLmVxdWFscyh0aGVRTmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSB3c2RsRWxlbWVudDsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHJpdmF0ZSBIYXNoTWFwIGNyZWF0ZU1hcChpbnQgdHlwZSwgTGlzdCBsaXN0KQotICB7Ci0gICAgSGFzaE1hcCBtYXAgPSBuZXcgSGFzaE1hcCgpOwotICAgIGZvciAoSXRlcmF0b3IgaSA9IGxpc3QuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIFdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gKFdTRExFbGVtZW50KWkubmV4dCgpOwotICAgICAgUU5hbWUgdGhlUU5hbWUgPSBnZXRRTmFtZUZvcldTRExFbGVtZW50KHR5cGUsIHdzZGxFbGVtZW50KTsKLSAgICAgIGlmICh0aGVRTmFtZSAhPSBudWxsKQotICAgICAgewotICAgICAgICBtYXAucHV0KHRoZVFOYW1lLCB3c2RsRWxlbWVudCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBtYXA7Ci0gIH0KLQotICBwcml2YXRlIFFOYW1lIGdldFFOYW1lRm9yV1NETEVsZW1lbnQoaW50IHR5cGUsIFdTRExFbGVtZW50IHdzZGxFbGVtZW50KQotICB7Ci0gICAgUU5hbWUgcmVzdWx0ID0gbnVsbDsKLSAgICBzd2l0Y2ggKHR5cGUpCi0gICAgewotICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLk1FU1NBR0U6Ci0gICAgICByZXN1bHQgPSAoKE1lc3NhZ2Upd3NkbEVsZW1lbnQpLmdldFFOYW1lKCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLlBPUlRfVFlQRToKLSAgICAgIHJlc3VsdCA9ICgoUG9ydFR5cGUpd3NkbEVsZW1lbnQpLmdldFFOYW1lKCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLkJJTkRJTkc6Ci0gICAgICByZXN1bHQgPSAoKEJpbmRpbmcpd3NkbEVsZW1lbnQpLmdldFFOYW1lKCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLlNFUlZJQ0U6Ci0gICAgICByZXN1bHQgPSAoKFNlcnZpY2Upd3NkbEVsZW1lbnQpLmdldFFOYW1lKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIFJlc29sdmVzIHRoZSBlbGVtZW50IGRlc2NyaWJlZCBieSB0eXBlIGFuZCBxbmFtZSBpbiB0aGUgY29udGV4dCBvZiB0aGUKLSAgICogZ2l2ZW4gZGVmaW5pdGlvbi4gVGhlIGRlZmluaXRpb24ncyBpbXBvcnRlZCBkZWZpbml0aW9ucyBhcmUgY2hlY2tlZCBhcyB3ZWxsLgotICAgKiAKLSAgICogQHBhcmFtIHR5cGUgdGhlIGVsZW1lbnQgdHlwZS4KLSAgICogQHBhcmFtIHFuYW1lIHRoZSBlbGVtZW50J3MgUU5hbWUuIE11c3Qgbm90IGJlIG51bGwuCi0gICAqIEBwYXJhbSBkZWZpbml0aW9uIHRoZSBjb250ZXh0IGRlZmluaXRpb24uIE11c3Qgbm90IGJlIG51bGwuCi0gICAqIEByZXR1cm4gdGhlIHJlc29sdmVkIFdTRExFbGVtZW50IG9yIG51bGwgaWYgb25lIGNhbm5vdCBiZSBmb3VuZC4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIFdTRExFbGVtZW50IHJlc29sdmVXU0RMRWxlbWVudChpbnQgdHlwZSwgUU5hbWUgcW5hbWUsIERlZmluaXRpb25JbXBsIGRlZmluaXRpb24pCi0gIHsKLSAgICBpZiAocW5hbWUgPT0gbnVsbCB8fCBxbmFtZS5nZXROYW1lc3BhY2VVUkkoKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIExpc3QgZGVmaW5pdGlvbnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgZGVmaW5pdGlvbnMuYWRkKGRlZmluaXRpb24pOwotICAgIFdTRExFbGVtZW50IHJlc3VsdCA9IHJlc29sdmVXU0RMRWxlbWVudCh0eXBlLCBxbmFtZSwgZGVmaW5pdGlvbnMsIG5ldyBBcnJheUxpc3QoKSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIFJlc29sdmVzIHRoZSBlbGVtZW50IGRlc2NyaWJlZCBieSB0eXBlIGFuZCBxbmFtZSBpbiB0aGUgY29udGV4dCBvZiB0aGUKLSAgICogZ2l2ZW4gZGVmaW5pdGlvbnMuIFRoZSBkZWZpbml0aW9ucyBpbXBvcnRlZCBkZWZpbml0aW9ucyBhcmUgY2hlY2tlZCBhcyB3ZWxsLgotICAgKiAKLSAgICogSU1QT1JUQU5UISBUaGlzIG1ldGhvZCBpcyByZWN1cnNpdmUuIEl0IGNoZWNrcyB0aGUgZGVmaW5pdGlvbnMgYW5kIGFsbCB0aGVpcgotICAgKiBpbXBvcnRlZCBkZWZpbml0aW9ucy4gSXQgYWxzbyBpcyBjb2RlZCBzdWNoIHRoYXQgaXQgYXZvaWRzIGEgY3ljbGljIGltcG9ydAotICAgKiBzaG91bGQgb25lIGJlIGVuY291bnRlcmVkLgotICAgKiAKLSAgICogQHBhcmFtIHR5cGUgdGhlIGVsZW1lbnQgdHlwZS4KLSAgICogQHBhcmFtIHFuYW1lIHRoZSBlbGVtZW50J3MgcU5hbWUuCi0gICAqIEBwYXJhbSBkZWZpbml0aW9ucyB0aGUgY29udGV4dCBkZWZpbml0aW9ucwotICAgKiBAcGFyYW0gdmlzaXRlZERlZmluaXRpb25zIGEgbGlzdCB3aXRoIHRoZSBkZWZpbml0aW9ucyBhbHJlYWR5IHZpc2l0ZWQuCi0gICAqIEByZXR1cm4gdGhlIHJlc29sdmVkIFdTRExFbGVtZW50IG9yIG51bGwgaWYgb25lIGNhbm5vdCBiZSBmb3VuZC4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIFdTRExFbGVtZW50IHJlc29sdmVXU0RMRWxlbWVudChpbnQgdHlwZSwgUU5hbWUgcW5hbWUsIExpc3QgZGVmaW5pdGlvbnMsIExpc3QgdmlzaXRlZERlZmluaXRpb25zKQotICB7Ci0gICAgV1NETEVsZW1lbnQgcmVzdWx0ID0gbnVsbDsKLQotICAgIGlmIChkZWZpbml0aW9ucy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICAvLyBJbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgb2xkIGJlaGF2aW91ciB3aGljaCB1c2VkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uCi0gICAgLy8gYW5kIGFsbCBmaXJzdCBsZXZlbCBpbXBvcnRzLCBjaGVjayB0aGUgZW50aXJlIGxpc3Qgb2YgZGVmaW5pdGlvbnMgcGFzc2VkCi0gICAgLy8gaW4gZmlyc3QuCi0KLSAgICBJdGVyYXRvciBkZWZpbml0aW9uc0l0ZXJhdG9yID0gZGVmaW5pdGlvbnMuaXRlcmF0b3IoKTsKLQotICAgIHdoaWxlIChkZWZpbml0aW9uc0l0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uSW1wbCBkZWZpbml0aW9uID0gKERlZmluaXRpb25JbXBsKWRlZmluaXRpb25zSXRlcmF0b3IubmV4dCgpOwotCi0gICAgICByZXN1bHQgPSBkZWZpbml0aW9uLnJlc29sdmVXU0RMRWxlbWVudCh0eXBlLCBxbmFtZSk7Ci0KLSAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZS1pdGVyYXRlIG92ZXIgdGhlIGRlZmluaXRpb25zIGFuZCByZWN1cnNlIGludG8gdGhlaXIgaW1wb3J0cy4KLQotICAgIGRlZmluaXRpb25zSXRlcmF0b3IgPSBkZWZpbml0aW9ucy5pdGVyYXRvcigpOwotCi0gICAgd2hpbGUgKGRlZmluaXRpb25zSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIERlZmluaXRpb25JbXBsIGRlZmluaXRpb24gPSAoRGVmaW5pdGlvbkltcGwpZGVmaW5pdGlvbnNJdGVyYXRvci5uZXh0KCk7Ci0KLSAgICAgIGlmICh2aXNpdGVkRGVmaW5pdGlvbnMuY29udGFpbnMoZGVmaW5pdGlvbikpCi0gICAgICB7Ci0gICAgICAgIC8vIFRoaXMgbWlnaHQgaGFwcGVuIGlmIHdlIGhhdmUgYSBjYXNlIG9mIGN5Y2xpYyBpbXBvcnRzLiBTaW5jZSB3ZQotICAgICAgICAvLyBhbHJlYWR5IGxvb2tlZCBpbiBpdCwgd2UgY2FuIGFuZCBzaG91bGQgc2tpcCBpdC4KLQotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLQotICAgICAgdmlzaXRlZERlZmluaXRpb25zLmFkZChkZWZpbml0aW9uKTsKLQotICAgICAgTGlzdCBpbXBvcnRlZERlZmluaXRpb25zID0gZGVmaW5pdGlvbi5nZXRJbXBvcnRlZERlZmluaXRpb25zKHFuYW1lLmdldE5hbWVzcGFjZVVSSSgpKTsKLQotICAgICAgcmVzdWx0ID0gcmVzb2x2ZVdTRExFbGVtZW50KHR5cGUsIHFuYW1lLCBpbXBvcnRlZERlZmluaXRpb25zLCB2aXNpdGVkRGVmaW5pdGlvbnMpOwotCi0gICAgICBpZiAocmVzdWx0ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwcml2YXRlIFdTRExFbGVtZW50IHJlc29sdmVXU0RMRWxlbWVudChpbnQgdHlwZSwgUU5hbWUgcW5hbWUpCi0gIHsKLSAgICBXU0RMRWxlbWVudCByZXN1bHQgPSBudWxsOwotICAgIGlmIChxbmFtZS5nZXROYW1lc3BhY2VVUkkoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgIHsKLSAgICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLk1FU1NBR0U6Ci0gICAgICAgIHJlc3VsdCA9IHJlc29sdmVXU0RMRWxlbWVudCh0eXBlLCBnZXRFTWVzc2FnZXMoKSwgcW5hbWUpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdTRExDb25zdGFudHMuUE9SVF9UWVBFOgotICAgICAgICByZXN1bHQgPSByZXNvbHZlV1NETEVsZW1lbnQodHlwZSwgZ2V0RVBvcnRUeXBlcygpLCBxbmFtZSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV1NETENvbnN0YW50cy5CSU5ESU5HOgotICAgICAgICByZXN1bHQgPSByZXNvbHZlV1NETEVsZW1lbnQodHlwZSwgZ2V0RUJpbmRpbmdzKCksIHFuYW1lKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLlNFUlZJQ0U6Ci0gICAgICAgIHJlc3VsdCA9IHJlc29sdmVXU0RMRWxlbWVudCh0eXBlLCBnZXRFU2VydmljZXMoKSwgcW5hbWUpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxpYXRpb24gbWV0aG9kcwotICAvLwotCi0gIHB1YmxpYyB2b2lkIHNldEVsZW1lbnQoRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgRWxlbWVudCBvbGRFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmIChvbGRFbGVtZW50IGluc3RhbmNlb2YgRXZlbnRUYXJnZXQpCi0gICAgewotICAgICAgRXZlbnRUYXJnZXQgb2xkRXZlbnRUYXJnZXQgPSAoKEV2ZW50VGFyZ2V0KW9sZEVsZW1lbnQpOwotICAgICAgb2xkRXZlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgZ2V0RXZlbnRMaXN0ZW5lcigpLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgb2xkRXZlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLCBnZXRFdmVudExpc3RlbmVyKCksIHRydWUpOyAvLyROT04tTkxTLTEkCi0gICAgICBvbGRFdmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01BdHRyTW9kaWZpZWQiLCBnZXRFdmVudExpc3RlbmVyKCksIHRydWUpOyAvLyROT04tTkxTLTEkCi0gICAgfQotICAgIHN1cGVyLnNldEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBFdmVudFRhcmdldCkKLSAgICB7Ci0gICAgICBFdmVudFRhcmdldCBldmVudFRhcmdldCA9ICgoRXZlbnRUYXJnZXQpZWxlbWVudCk7Ci0gICAgICBldmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQiLCBnZXRFdmVudExpc3RlbmVyKCksIHRydWUpOyAvLyROT04tTkxTLTEkCi0gICAgICBldmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZCIsIGdldEV2ZW50TGlzdGVuZXIoKSwgdHJ1ZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUF0dHJNb2RpZmllZCIsIGdldEV2ZW50TGlzdGVuZXIoKSwgdHJ1ZSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBkb2N1bWVudCA9IGVsZW1lbnQuZ2V0T3duZXJEb2N1bWVudCgpOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIHN1cGVyLnJlY29uY2lsZUF0dHJpYnV0ZXMoY2hhbmdlZEVsZW1lbnQpOwotCi0gICAgaWYgKGNoYW5nZWRFbGVtZW50ID09IGdldEVsZW1lbnQoKSkKLSAgICB7Ci0gICAgICBpZiAoY2hhbmdlZEVsZW1lbnQuaGFzQXR0cmlidXRlKFdTRExDb25zdGFudHMuVEFSR0VUTkFNRVNQQUNFX0FUVFJJQlVURSkpCi0gICAgICAgIHNldFRhcmdldE5hbWVzcGFjZShjaGFuZ2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5UQVJHRVROQU1FU1BBQ0VfQVRUUklCVVRFKSk7Ci0gICAgICBpZiAoY2hhbmdlZEVsZW1lbnQuaGFzQXR0cmlidXRlKFdTRExDb25zdGFudHMuTkFNRV9BVFRSSUJVVEUpKQotICAgICAgICBzZXRRTmFtZShuZXcgUU5hbWUoV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkksIGNoYW5nZWRFbGVtZW50LmdldEF0dHJpYnV0ZShXU0RMQ29uc3RhbnRzLk5BTUVfQVRUUklCVVRFKSkpOwotICAgICAgZ2V0RU5hbWVzcGFjZXMoKS5jbGVhcigpOwotICAgICAgZ2V0TmFtZXNwYWNlcygpLmNsZWFyKCk7Ci0gICAgICAvL2dldE5hbWVzcGFjZXMoKS5wdXQoIiIsIG51bGwpOwotCi0gICAgICBOYW1lZE5vZGVNYXAgbWFwID0gY2hhbmdlZEVsZW1lbnQuZ2V0QXR0cmlidXRlcygpOwotICAgICAgaW50IG1hcExlbmd0aCA9IG1hcC5nZXRMZW5ndGgoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWFwTGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEF0dHIgYXR0ciA9IChBdHRyKW1hcC5pdGVtKGkpOwotICAgICAgICBTdHJpbmcgbnNQcmVmaXggPSBudWxsOwotICAgICAgICBpZiAoWE1MTlMuZXF1YWxzKGF0dHIuZ2V0UHJlZml4KCkpKQotICAgICAgICB7Ci0gICAgICAgICAgbnNQcmVmaXggPSBhdHRyLmdldExvY2FsTmFtZSgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFhNTE5TLmVxdWFscyhhdHRyLmdldE5vZGVOYW1lKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgbnNQcmVmaXggPSAiIjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuc1ByZWZpeCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgZ2V0TmFtZXNwYWNlcygpLnB1dChuc1ByZWZpeCwgYXR0ci5nZXRWYWx1ZSgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoRWxlbWVudCBjaGlsZCwgQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBzd2l0Y2ggKFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoY2hpbGQpKQotICAgIHsKLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5CSU5ESU5HOgotICAgICAgewotICAgICAgICBCaW5kaW5nIGJpbmRpbmcgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlQmluZGluZygpOwotICAgICAgICBiaW5kaW5nLnNldEVuY2xvc2luZ0RlZmluaXRpb24odGhpcyk7Ci0gICAgICAgIGJpbmRpbmcuc2V0RWxlbWVudChjaGlsZCk7Ci0gICAgICAgIGFkZEJpbmRpbmcoYmluZGluZyk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLkRPQ1VNRU5UQVRJT046Ci0gICAgICB7Ci0gICAgICAgIC8vIENTOiB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIHVuc2V0IHRoaXMgZWxlbWVudCB3aGVuIGl0cyByZW1vdmVkCi0gICAgICAgIC8vZGVmaW5pdGlvbi5zZXREb2N1bWVudGF0aW9uRWxlbWVudChjaGlsZCk7ICAKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExDb25zdGFudHMuSU1QT1JUOgotICAgICAgewotICAgICAgICBJbXBvcnQgaSA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVJbXBvcnQoKTsKLSAgICAgICAgaS5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKHRoaXMpOwotICAgICAgICBpLnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgICBhZGRJbXBvcnQoaSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLk1FU1NBR0U6Ci0gICAgICB7Ci0gICAgICAgIE1lc3NhZ2UgbWVzc2FnZSA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVNZXNzYWdlKCk7Ci0gICAgICAgIG1lc3NhZ2Uuc2V0RW5jbG9zaW5nRGVmaW5pdGlvbih0aGlzKTsKLSAgICAgICAgbWVzc2FnZS5zZXRFbGVtZW50KGNoaWxkKTsKLSAgICAgICAgYWRkTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExDb25zdGFudHMuUE9SVF9UWVBFOgotICAgICAgewotICAgICAgICBQb3J0VHlwZSBwb3J0VHlwZSA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVQb3J0VHlwZSgpOwotICAgICAgICBwb3J0VHlwZS5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKHRoaXMpOwotICAgICAgICBwb3J0VHlwZS5zZXRFbGVtZW50KGNoaWxkKTsKLSAgICAgICAgYWRkUG9ydFR5cGUocG9ydFR5cGUpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5TRVJWSUNFOgotICAgICAgewotICAgICAgICBTZXJ2aWNlIHNlcnZpY2UgPSBXU0RMRmFjdG9yeUltcGwuZUlOU1RBTkNFLmNyZWF0ZVNlcnZpY2UoKTsKLSAgICAgICAgc2VydmljZS5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKHRoaXMpOwotICAgICAgICBzZXJ2aWNlLnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgICBhZGRTZXJ2aWNlKHNlcnZpY2UpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5UWVBFUzoKLSAgICAgIHsKLSAgICAgICAgaWYgKGdldEVUeXBlcygpID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBUeXBlcyB0eXBlcyA9IFdTRExGYWN0b3J5SW1wbC5lSU5TVEFOQ0UuY3JlYXRlVHlwZXMoKTsKLSAgICAgICAgICB0eXBlcy5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKHRoaXMpOwotICAgICAgICAgIHR5cGVzLnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgICAgIHNldEVUeXBlcyh0eXBlcyk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCA9IGdldFVzZUV4dGVuc2lvbkZhY3RvcmllcygpCi0gICAgICAgICAgPyAoKFdTRExGYWN0b3J5SW1wbClXU0RMRmFjdG9yeS5lSU5TVEFOQ0UpLmNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50KGdldE5hbWVzcGFjZShjaGlsZCksIGdldExvY2FsTmFtZShjaGlsZCkpCi0gICAgICAgICAgOiAoKFdTRExGYWN0b3J5SW1wbClXU0RMRmFjdG9yeS5lSU5TVEFOQ0UpLmNyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotCi0gICAgICAgIGV4dGVuc2liaWxpdHlFbGVtZW50LnNldEVuY2xvc2luZ0RlZmluaXRpb24odGhpcyk7Ci0gICAgICAgIGV4dGVuc2liaWxpdHlFbGVtZW50LnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgICBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuYWRkKGV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlUmVjb25jaWxpYXRpb24oQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSByZW1haW5pbmdNb2RlbE9iamVjdHMuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIHJlbW92ZSh0aGlzLCBpLm5leHQoKSk7Ci0gICAgfQotICAgIHJlY29uY2lsZVJlZmVyZW5jZXModHJ1ZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmUoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IG1vZGVsT2JqZWN0KQotICB7Ci0gICAgaWYgKG1vZGVsT2JqZWN0IGluc3RhbmNlb2YgVHlwZXMpCi0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gKERlZmluaXRpb24pY29tcG9uZW50OwotICAgICAgaWYgKGRlZmluaXRpb24uZ2V0RVR5cGVzKCkgPT0gbW9kZWxPYmplY3QpCi0gICAgICB7Ci0gICAgICAgIGRlZmluaXRpb24uc2V0RVR5cGVzKG51bGwpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgTGlzdCBsaXN0ID0gZ2V0TGlzdChjb21wb25lbnQsIG1vZGVsT2JqZWN0KTsKLSAgICAgIGlmIChsaXN0ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGxpc3QucmVtb3ZlKG1vZGVsT2JqZWN0KTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIExpc3QgZ2V0TGlzdChPYmplY3QgY29tcG9uZW50LCBPYmplY3QgbW9kZWxPYmplY3QpCi0gIHsKLSAgICBMaXN0IHJlc3VsdCA9IG51bGw7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gKERlZmluaXRpb24pY29tcG9uZW50OwotCi0gICAgLy8gdG9kby4uLiB1c2UgV1NETFN3aXRjaAotICAgIC8vCi0gICAgaWYgKG1vZGVsT2JqZWN0IGluc3RhbmNlb2YgQmluZGluZykKLSAgICB7Ci0gICAgICByZXN1bHQgPSBkZWZpbml0aW9uLmdldEVCaW5kaW5ncygpOwotICAgIH0KLSAgICBlbHNlIGlmIChtb2RlbE9iamVjdCBpbnN0YW5jZW9mIEltcG9ydCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBkZWZpbml0aW9uLmdldEVJbXBvcnRzKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKG1vZGVsT2JqZWN0IGluc3RhbmNlb2YgTWVzc2FnZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBkZWZpbml0aW9uLmdldEVNZXNzYWdlcygpOwotICAgIH0KLSAgICBlbHNlIGlmIChtb2RlbE9iamVjdCBpbnN0YW5jZW9mIFBvcnRUeXBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IGRlZmluaXRpb24uZ2V0RVBvcnRUeXBlcygpOwotICAgIH0KLSAgICBlbHNlIGlmIChtb2RlbE9iamVjdCBpbnN0YW5jZW9mIFNlcnZpY2UpCi0gICAgewotICAgICAgcmVzdWx0ID0gZGVmaW5pdGlvbi5nZXRFU2VydmljZXMoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobW9kZWxPYmplY3QgaW5zdGFuY2VvZiBFeHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBkZWZpbml0aW9uLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIHB1YmxpYyBDb2xsZWN0aW9uIGdldE1vZGVsT2JqZWN0cyhPYmplY3QgY29tcG9uZW50KQotICB7Ci0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IChEZWZpbml0aW9uKWNvbXBvbmVudDsKLSAgICBsaXN0LmFkZEFsbChkZWZpbml0aW9uLmdldEVJbXBvcnRzKCkpOwotICAgIGxpc3QuYWRkKGRlZmluaXRpb24uZ2V0RVR5cGVzKCkpOwotICAgIGxpc3QuYWRkQWxsKGRlZmluaXRpb24uZ2V0RU1lc3NhZ2VzKCkpOwotICAgIGxpc3QuYWRkQWxsKGRlZmluaXRpb24uZ2V0RVBvcnRUeXBlcygpKTsKLSAgICBsaXN0LmFkZEFsbChkZWZpbml0aW9uLmdldEVCaW5kaW5ncygpKTsKLSAgICBsaXN0LmFkZEFsbChkZWZpbml0aW9uLmdldEVTZXJ2aWNlcygpKTsKLSAgICBsaXN0LmFkZEFsbChkZWZpbml0aW9uLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgcmV0dXJuIGxpc3Q7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHB1YmxpYyBEb2N1bWVudCB1cGRhdGVEb2N1bWVudCgpCi0gIHsKLSAgICBkb2N1bWVudCA9IGNyZWF0ZURvY3VtZW50KCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50OwotICB9Ci0KLSAgcHJpdmF0ZSBEb2N1bWVudCBjcmVhdGVEb2N1bWVudCgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRvY3VtZW50QnVpbGRlckZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7Ci0gICAgICBkb2N1bWVudEJ1aWxkZXJGYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOwotICAgICAgZG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5zZXRWYWxpZGF0aW5nKGZhbHNlKTsKLSAgICAgIERvY3VtZW50QnVpbGRlciBkb2N1bWVudEJ1aWxkZXIgPSBkb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOwotICAgICAgcmV0dXJuIGRvY3VtZW50QnVpbGRlci5uZXdEb2N1bWVudCgpOwotICAgIH0KLSAgICBjYXRjaCAoUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgV1NETFBsdWdpbi5JTlNUQU5DRS5sb2coZXhjZXB0aW9uKTsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoKQotICB7Ci0gICAgRWxlbWVudCBuZXdFbGVtZW50ID0gY3JlYXRlRWxlbWVudChXU0RMQ29uc3RhbnRzLkRFRklOSVRJT04pOwotICAgIHNldEVsZW1lbnQobmV3RWxlbWVudCk7Ci0gICAgYWRkQ2hpbGRFbGVtZW50cyhuZXdFbGVtZW50LCBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotCi0gICAgYWRkQ2hpbGRFbGVtZW50cyhuZXdFbGVtZW50LCBnZXRFSW1wb3J0cygpKTsKLQotICAgIFR5cGVzIHR5cGVzID0gZ2V0RVR5cGVzKCk7Ci0gICAgaWYgKHR5cGVzICE9IG51bGwpCi0gICAgewotICAgICAgRWxlbWVudCBjaGlsZCA9ICgoVHlwZXNJbXBsKXR5cGVzKS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICB9Ci0KLSAgICBhZGRDaGlsZEVsZW1lbnRzKG5ld0VsZW1lbnQsIGdldEVNZXNzYWdlcygpKTsKLSAgICBhZGRDaGlsZEVsZW1lbnRzKG5ld0VsZW1lbnQsIGdldEVQb3J0VHlwZXMoKSk7Ci0gICAgYWRkQ2hpbGRFbGVtZW50cyhuZXdFbGVtZW50LCBnZXRFQmluZGluZ3MoKSk7Ci0gICAgYWRkQ2hpbGRFbGVtZW50cyhuZXdFbGVtZW50LCBnZXRFU2VydmljZXMoKSk7Ci0KLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGFkZENoaWxkRWxlbWVudHMoRWxlbWVudCBwYXJlbnQsIExpc3QgYykKLSAgewotICAgIGZvciAoSXRlcmF0b3IgaXRlcmF0b3IgPSBjLml0ZXJhdG9yKCk7IGl0ZXJhdG9yLmhhc05leHQoKTspCi0gICAgewotICAgICAgV1NETEVsZW1lbnRJbXBsIHdzZGxFbGVtZW50ID0gKFdTRExFbGVtZW50SW1wbClpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBFbGVtZW50IGNoaWxkID0gd3NkbEVsZW1lbnQuY3JlYXRlRWxlbWVudCgpOwotICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VSZWZlcmVuY2UoRVJlZmVyZW5jZSBlUmVmZXJlbmNlKQotICB7Ci0gICAgLy8gQWRkIG5hbWVzcGFjZSBwcmVmaXggaW5mbwotICAgIC8vIFRCRCAtIE5lZWQgdG8gcmV2aXNpdC4KLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKGVSZWZlcmVuY2UgPT0gbnVsbCAmJiB0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgLy8gV2UgYXJlIHVwZGF0aW5nIHRoZSBEZWZpbml0aW9uIGVsZW1lbnQuCi0gICAgewotICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBnZXROYW1lc3BhY2VzKCkuZW50cnlTZXQoKS5pdGVyYXRvcigpOwotICAgICAgU3RyaW5nIHByZWZpeCA9IG51bGw7Ci0gICAgICBTdHJpbmcgdXJpID0gbnVsbDsKLSAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIE1hcC5FbnRyeSBlbnRyeSA9IChNYXAuRW50cnkpaXRlcmF0b3IubmV4dCgpOwotICAgICAgICBwcmVmaXggPSAoU3RyaW5nKWVudHJ5LmdldEtleSgpOwotICAgICAgICB1cmkgPSAoU3RyaW5nKWVudHJ5LmdldFZhbHVlKCk7Ci0gICAgICAgIGlmIChwcmVmaXggIT0gIiIpCi0gICAgICAgICAgdGhlRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhYU0RDb25zdGFudHMuWE1MTlNfVVJJXzIwMDAsICJ4bWxuczoiICsgcHJlZml4LCB1cmkpOyAvLyROT04tTkxTLTEkCi0gICAgICAgIGVsc2UgaWYgKHVyaSAhPSBudWxsKQotICAgICAgICAgIC8vIEhhbmRsZSBkZWZhdWx0IG5hbWVzcGFjZSwgZS5nLiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0gICAgICAgICAgdGhlRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhYU0RDb25zdGFudHMuWE1MTlNfVVJJXzIwMDAsIFhNTE5TLCB1cmkpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvL2lmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5lSU5TVEFOQ0UuZ2V0RGVmaW5pdGlvbl9FbmNvZGluZygpKQotICAgICAgLy8gIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgV1NETENvbnN0YW50cy5FTkNPRElOR19BVFRSSUJVVEUsIGdldEVuY29kaW5nKCkpOwotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLkRFRklOSVRJT05fX1FOQU1FKQotICAgICAgICBpZiAoZ2V0UU5hbWUoKSAhPSBudWxsKQotICAgICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSwgZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gV1NETFBhY2thZ2UuTGl0ZXJhbHMuREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGdldFRhcmdldE5hbWVzcGFjZSgpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFdTRExDb25zdGFudHMuVEFSR0VUTkFNRVNQQUNFX0FUVFJJQlVURSwgZ2V0VGFyZ2V0TmFtZXNwYWNlKCkpOwotICAgICAgICAgIGlmIChlQXR0cmlidXRlICE9IG51bGwgJiYgIWlzUmVjb25jaWxpbmcpCi0gICAgICAgICAgewotICAgICAgICAgICAgcGF0Y2hUYXJnZXROYW1lc3BhY2UoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIExpc3QgZ2V0SW1wb3J0ZWREZWZpbml0aW9ucyhTdHJpbmcgbmFtZXNwYWNlKQotICB7Ci0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotCi0gICAgZm9yIChJdGVyYXRvciBpID0gZ2V0SW1wb3J0cyhuYW1lc3BhY2UpLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBJbXBvcnQgdGhlSW1wb3J0ID0gKEltcG9ydClpLm5leHQoKTsKLSAgICAgICgoSW1wb3J0SW1wbCl0aGVJbXBvcnQpLmltcG9ydERlZmluaXRpb25PclNjaGVtYSgpOwotICAgICAgRGVmaW5pdGlvbiBpbXBvcnRlZERlZmluaXRpb24gPSB0aGVJbXBvcnQuZ2V0RURlZmluaXRpb24oKTsKLSAgICAgIGlmIChpbXBvcnRlZERlZmluaXRpb24gIT0gbnVsbCAmJiBXU0RMQ29uc3RhbnRzLmlzTWF0Y2hpbmdOYW1lc3BhY2UobmFtZXNwYWNlLCBpbXBvcnRlZERlZmluaXRpb24uZ2V0VGFyZ2V0TmFtZXNwYWNlKCkpKQotICAgICAgewotICAgICAgICBsaXN0LmFkZChpbXBvcnRlZERlZmluaXRpb24pOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBsaXN0OwotICB9Ci0KLSAgcHVibGljIFhTREVsZW1lbnREZWNsYXJhdGlvbiByZXNvbHZlRWxlbWVudERlY2xhcmF0aW9uVVJJKFN0cmluZyB1cmkpCi0gIHsKLSAgICBYU0RFbGVtZW50RGVjbGFyYXRpb24gcmVzdWx0ID0gbnVsbDsKLSAgICBpbnQgaW5kZXggPSB1cmkubGFzdEluZGV4T2YoIiMiKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgewotICAgICAgcmVzdWx0ID0gcmVzb2x2ZUVsZW1lbnREZWNsYXJhdGlvbih1cmkuc3Vic3RyaW5nKDAsIGluZGV4KSwgdXJpLnN1YnN0cmluZyhpbmRleCArIDEpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBpc0NvbXBvbmVudERlZmluZWQoWFNEQ29uY3JldGVDb21wb25lbnQgY29tcG9uZW50KQotICB7Ci0gICAgLy8gbm90ZSB0aGUgZ2V0Q29udGFpbmVyKCkgdGVzdCB0byBlbGltaW5hdGUgJ3N5bnRoZXRpYycgdHlwZXMKLSAgICAvLyB0aGF0IGFyZSBjcmVhdGVkIGJ5IHRoZSBYTUxTY2hlbWEgbW9kZWwgd2hlbiByZXNvbHV0aW9uIGZhaWxzICAgCi0gICAgcmV0dXJuIGNvbXBvbmVudCAhPSBudWxsICYmIGNvbXBvbmVudC5nZXRDb250YWluZXIoKSAhPSBudWxsOwotICB9Ci0KLSAgcHVibGljIFhTREVsZW1lbnREZWNsYXJhdGlvbiByZXNvbHZlRWxlbWVudERlY2xhcmF0aW9uKFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBsb2NhbE5hbWUpCi0gIHsKLSAgICBYU0RFbGVtZW50RGVjbGFyYXRpb24gcmVzdWx0ID0gbnVsbDsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSByZXNvbHZlU2NoZW1hKG5hbWVzcGFjZSkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIFhTRFNjaGVtYSBzY2hlbWEgPSAoWFNEU2NoZW1hKWkubmV4dCgpOwotICAgICAgcmVzdWx0ID0gc2NoZW1hLnJlc29sdmVFbGVtZW50RGVjbGFyYXRpb24obmFtZXNwYWNlLCBsb2NhbE5hbWUpOwotICAgICAgaWYgKGlzQ29tcG9uZW50RGVmaW5lZChyZXN1bHQpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIC8vIENvdWxkIG5vdCByZXNvbHZlLiBUcnkgYWdhaW5zdCBhbGwgPGltcG9ydD5lZCBhbmQgaW5saW5lZCBzY2hlbWFzLgotICAgIGZvciAoSXRlcmF0b3IgaSA9IGdldEltcG9ydGVkT3JJbmxpbmVkU2NoZW1hcygpLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBYU0RTY2hlbWEgc2NoZW1hID0gKFhTRFNjaGVtYSlpLm5leHQoKTsKLSAgICAgIHJlc3VsdCA9IHNjaGVtYS5yZXNvbHZlRWxlbWVudERlY2xhcmF0aW9uKG5hbWVzcGFjZSwgbG9jYWxOYW1lKTsKLSAgICAgIGlmIChpc0NvbXBvbmVudERlZmluZWQocmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIFhTRFR5cGVEZWZpbml0aW9uIHJlc29sdmVUeXBlRGVmaW5pdGlvblVSSShTdHJpbmcgdXJpKQotICB7Ci0gICAgWFNEVHlwZURlZmluaXRpb24gcmVzdWx0ID0gbnVsbDsKLSAgICBpbnQgaW5kZXggPSB1cmkubGFzdEluZGV4T2YoIiMiKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgewotICAgICAgcmVzdWx0ID0gcmVzb2x2ZVR5cGVEZWZpbml0aW9uKHVyaS5zdWJzdHJpbmcoMCwgaW5kZXgpLCB1cmkuc3Vic3RyaW5nKGluZGV4ICsgMSkpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIFhTRFR5cGVEZWZpbml0aW9uIHJlc29sdmVUeXBlRGVmaW5pdGlvbihTdHJpbmcgbmFtZXNwYWNlLCBTdHJpbmcgbG9jYWxOYW1lKQotICB7Ci0gICAgWFNEVHlwZURlZmluaXRpb24gcmVzdWx0ID0gbnVsbDsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSByZXNvbHZlU2NoZW1hKG5hbWVzcGFjZSkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIFhTRFNjaGVtYSBzY2hlbWEgPSAoWFNEU2NoZW1hKWkubmV4dCgpOwotICAgICAgcmVzdWx0ID0gc2NoZW1hLnJlc29sdmVUeXBlRGVmaW5pdGlvbihuYW1lc3BhY2UsIGxvY2FsTmFtZSk7Ci0gICAgICBpZiAoaXNDb21wb25lbnREZWZpbmVkKHJlc3VsdCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgLy8gQ291bGQgbm90IHJlc29sdmUuIFRyeSBhZ2FpbnN0IGFsbCA8aW1wb3J0PmVkIGFuZCBpbmxpbmVkIHNjaGVtYXMuCi0gICAgZm9yIChJdGVyYXRvciBpID0gZ2V0SW1wb3J0ZWRPcklubGluZWRTY2hlbWFzKCkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIFhTRFNjaGVtYSBzY2hlbWEgPSAoWFNEU2NoZW1hKWkubmV4dCgpOwotICAgICAgcmVzdWx0ID0gc2NoZW1hLnJlc29sdmVUeXBlRGVmaW5pdGlvbihuYW1lc3BhY2UsIGxvY2FsTmFtZSk7Ci0gICAgICBpZiAoaXNDb21wb25lbnREZWZpbmVkKHJlc3VsdCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsgLy8gRmFpbGVkIHRvIHJlc29sdmUuCi0gIH0KLQotICAvKioKLSAgICogVGhpcyByZXR1cm5zIHNldCBvZiBzY2hlbWFzIHdpdGggdGhlIGdpdmVuIG5hbWVzcGFjZSBhcyBpdCdzIHRhcmdldCBuYW1lc3BhY2UuCi0gICAqLwotICBwdWJsaWMgQ29sbGVjdGlvbiByZXNvbHZlU2NoZW1hKFN0cmluZyBuYW1lc3BhY2UpCi0gIHsKLSAgICBpZiAoIiIuZXF1YWxzKG5hbWVzcGFjZSkpCi0gICAgewotICAgICAgbmFtZXNwYWNlID0gbnVsbDsKLSAgICB9Ci0KLSAgICBpZiAoWFNEQ29uc3RhbnRzLmlzU2NoZW1hRm9yU2NoZW1hTmFtZXNwYWNlKG5hbWVzcGFjZSkpCi0gICAgewotICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnNpbmdsZXRvbihYU0RTY2hlbWFJbXBsLmdldFNjaGVtYUZvclNjaGVtYShuYW1lc3BhY2UpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoWFNEQ29uc3RhbnRzLmlzU2NoZW1hSW5zdGFuY2VOYW1lc3BhY2UobmFtZXNwYWNlKSkKLSAgICB7Ci0gICAgICByZXR1cm4gQ29sbGVjdGlvbnMuc2luZ2xldG9uKFhTRFNjaGVtYUltcGwuZ2V0U2NoZW1hSW5zdGFuY2UobmFtZXNwYWNlKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXR1cm4gZ2V0SW1wb3J0ZWRPcklubGluZWRTY2hlbWFzKG5hbWVzcGFjZSk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIExpc3QgZ2V0SW1wb3J0ZWRPcklubGluZWRTY2hlbWFzKFN0cmluZyBuYW1lc3BhY2UpCi0gIHsKLSAgICBpZiAobmFtZXNwYWNlID09IG51bGwpCi0gICAgewotICAgICAgbmFtZXNwYWNlID0gIiI7Ci0gICAgfQotCi0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGNvbGxlY3RJbXBvcnRlZFNjaGVtYXMobmFtZXNwYWNlLCBsaXN0KTsKLSAgICBjb2xsZWN0SW5saW5lZFNjaGVtYXMobmFtZXNwYWNlLCBsaXN0KTsKLSAgICBjb2xsZWN0SW5saW5lZFNjaGVtYXNPZkltcG9ydGVkRGVmaW5pdGlvbnMobmFtZXNwYWNlLCBsaXN0KTsKLSAgICByZXR1cm4gbGlzdDsKLSAgfQotCi0gIHByaXZhdGUgTGlzdCBnZXRJbXBvcnRlZE9ySW5saW5lZFNjaGVtYXMoKQotICB7Ci0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGZvciAoSXRlcmF0b3IgaSA9IGdldEVJbXBvcnRzKCkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIEltcG9ydCB0aGVJbXBvcnQgPSAoSW1wb3J0KWkubmV4dCgpOwotICAgICAgKChJbXBvcnRJbXBsKXRoZUltcG9ydCkuaW1wb3J0RGVmaW5pdGlvbk9yU2NoZW1hKCk7Ci0gICAgICBYU0RTY2hlbWEgc2NoZW1hID0gdGhlSW1wb3J0LmdldEVTY2hlbWEoKTsKLSAgICAgIGlmIChzY2hlbWEgIT0gbnVsbCkKLSAgICAgICAgbGlzdC5hZGQoc2NoZW1hKTsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0RVR5cGVzKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBsaXN0LmFkZEFsbChnZXRFVHlwZXMoKS5nZXRTY2hlbWFzKCkpOwotICAgIH0KLSAgICByZXR1cm4gbGlzdDsKLSAgfQotCi0gIHByb3RlY3RlZCBFdmVudExpc3RlbmVyIGV2ZW50TGlzdGVuZXI7Ci0KLSAgcHJvdGVjdGVkIE5vZGUgZGVsZXRpb25Ob2RlOwotCi0gIHB1YmxpYyBOb2RlIGdldERlbGV0aW9uTm9kZSgpCi0gIHsKLSAgICByZXR1cm4gZGVsZXRpb25Ob2RlOwotICB9Ci0KLSAgcHJvdGVjdGVkIEV2ZW50TGlzdGVuZXIgZ2V0RXZlbnRMaXN0ZW5lcigpCi0gIHsKLSAgICBpZiAoZXZlbnRMaXN0ZW5lciA9PSBudWxsKQotICAgIHsKLSAgICAgIGV2ZW50TGlzdGVuZXIgPSBuZXcgRXZlbnRMaXN0ZW5lcigpCi0gICAgICAgIHsKLSAgICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVFdmVudChFdmVudCBldmVudCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBNdXRhdGlvbkV2ZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBNdXRhdGlvbkV2ZW50IG11dGF0aW9uRXZlbnQgPSAoTXV0YXRpb25FdmVudClldmVudDsKLSAgICAgICAgICAgICAgaWYgKG11dGF0aW9uRXZlbnQuZ2V0VGFyZ2V0KCkgaW5zdGFuY2VvZiBOb2RlKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTm9kZSBub2RlID0gKE5vZGUpbXV0YXRpb25FdmVudC5nZXRUYXJnZXQoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobm9kZS5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLmdldFBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uRXZlbnQuZ2V0QXR0ckNoYW5nZSgpID09IDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgV1NETEVsZW1lbnRJbXBsIGxpc3RlbmVyID0gKFdTRExFbGVtZW50SW1wbClnZXRDb3JyZXNwb25kaW5nQ29tcG9uZW50KG5vZGUuZ2V0UGFyZW50Tm9kZSgpKTsKLSAgICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lciAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZ2V0VHlwZSgpLmVxdWFscygiRE9NTm9kZVJlbW92ZWQiKSkgLy8kTk9OLU5MUy0xJAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgZGVsZXRpb25Ob2RlID0gKE5vZGUpZXZlbnQuZ2V0VGFyZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIuZWxlbWVudENvbnRlbnRzQ2hhbmdlZCgoRWxlbWVudClub2RlLmdldFBhcmVudE5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0aW9uTm9kZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBXU0RMRWxlbWVudEltcGwgbGlzdGVuZXIgPSAoV1NETEVsZW1lbnRJbXBsKWdldENvcnJlc3BvbmRpbmdDb21wb25lbnQobm9kZSk7Ci0gICAgICAgICAgICAgICAgICBpZiAobGlzdGVuZXIgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIuZWxlbWVudEF0dHJpYnV0ZXNDaGFuZ2VkKChFbGVtZW50KW5vZGUpOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9Ci0gICAgcmV0dXJuIGV2ZW50TGlzdGVuZXI7Ci0gIH0KLQotICBwdWJsaWMgV1NETEVsZW1lbnQgZ2V0Q29ycmVzcG9uZGluZ0NvbXBvbmVudChOb2RlIG5vZGUpCi0gIHsKLSAgICAvLyBXZSBjb25zaWRlciBhbGwgcGFyZW50cyBzbyB0aGF0IHRoZXkgY2FuIGhhbmRsZSBvdGhlciBjb250YWluZWQgbm9kZXMgdGhhdCBvdGhlcndpc2UgZG9uJ3QgY29ycmVzcG9uZCB0byBhIGNvbXBvbmVudC4KLSAgICAvLwotICAgIExpc3QgcGFyZW50cyA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgIGlmIChub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5BVFRSSUJVVEVfTk9ERSkKLSAgICB7Ci0gICAgICBub2RlID0gKChBdHRyKW5vZGUpLmdldE93bmVyRWxlbWVudCgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gU2tpcCBhaGVhZCB0byBhbiBlbGVtZW50LgotICAgICAgLy8KLSAgICAgIGZvciAoTm9kZSBzY2FuTm9kZSA9IG5vZGU7IHNjYW5Ob2RlICE9IG51bGw7IHNjYW5Ob2RlID0gc2Nhbk5vZGUuZ2V0TmV4dFNpYmxpbmcoKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKHNjYW5Ob2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgICAgIHsKLSAgICAgICAgICBub2RlID0gc2Nhbk5vZGU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLy8gU2tpcCBiYWNrIHRvIGFuIGVsZW1lbnQuCi0gICAgICAvLwotICAgICAgZm9yIChOb2RlIHNjYW5Ob2RlID0gbm9kZTsgc2Nhbk5vZGUgIT0gbnVsbDsgc2Nhbk5vZGUgPSBzY2FuTm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKHNjYW5Ob2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgICAgIHsKLSAgICAgICAgICBub2RlID0gc2Nhbk5vZGU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOYXZpZ2F0ZSBvdXQgdGhyb3VnaCB0aGUgZWxlbWVudHMuCi0gICAgLy8KLSAgICBmb3IgKE5vZGUgcGFyZW50ID0gbm9kZTsgcGFyZW50ICE9IG51bGw7IHBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnROb2RlKCkpCi0gICAgewotICAgICAgaWYgKHBhcmVudC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgewotICAgICAgICBwYXJlbnRzLmFkZChwYXJlbnQpOwotICAgICAgfQotICAgIH0KLQotICAgIFdTRExFbGVtZW50IGJlc3RXU0RMRWxlbWVudCA9IGdldEJlc3RXU0RMRWxlbWVudChwYXJlbnRzKTsKLSAgICByZXR1cm4gYmVzdFdTRExFbGVtZW50OwotICB9Ci0KLSAgLy8KLSAgLy8KLSAgLy8KLSAgcHJpdmF0ZSBib29sZWFuIHVzZUV4dGVuc2lvbkZhY3RvcmllcyA9IHRydWU7Ci0KLSAgcHVibGljIHZvaWQgc2V0VXNlRXh0ZW5zaW9uRmFjdG9yaWVzKGJvb2xlYW4gdmFsdWUpCi0gIHsKLSAgICB1c2VFeHRlbnNpb25GYWN0b3JpZXMgPSB2YWx1ZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGdldFVzZUV4dGVuc2lvbkZhY3RvcmllcygpCi0gIHsKLSAgICByZXR1cm4gdXNlRXh0ZW5zaW9uRmFjdG9yaWVzOwotICB9Ci0KLSAgLy8gU2VlIEJ1ZyA1MzY2Ci0gIHB1YmxpYyB2b2lkIHJlbW92ZUFsbCgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpc1JlY29uY2lsaW5nID0gdHJ1ZTsKLSAgICAgIGRvY3VtZW50ID0gbnVsbDsKLSAgICAgIGVsZW1lbnQgPSBudWxsOwotICAgICAgZ2V0RVNlcnZpY2VzKCkuY2xlYXIoKTsKLSAgICAgIGdldEVCaW5kaW5ncygpLmNsZWFyKCk7Ci0gICAgICBnZXRFUG9ydFR5cGVzKCkuY2xlYXIoKTsKLSAgICAgIGdldEVNZXNzYWdlcygpLmNsZWFyKCk7Ci0gICAgICBzZXRFVHlwZXMobnVsbCk7Ci0gICAgICBnZXRFSW1wb3J0cygpLmNsZWFyKCk7Ci0gICAgICBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuY2xlYXIoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLQotICAgIH0KLSAgICBmaW5hbGx5Ci0gICAgewotICAgICAgaXNSZWNvbmNpbGluZyA9IGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldElubGluZVNjaGVtYUxvY2F0aW9ucyhSZXNvdXJjZSByZXNvdXJjZSkKLSAgewotICAgIC8vIEluaXRpYWxpemUgdGhlIGlubGluZSBzY2hlbWFzIGxvY2F0aW9uIAotICAgIFR5cGVzIHR5cGVzID0gdGhpcy5nZXRFVHlwZXMoKTsKLSAgICBpZiAodHlwZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdGVyYXRvciA9IHR5cGVzLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpOwotICAgICAgICBpZiAoIShleHRlbnNpYmlsaXR5RWxlbWVudCBpbnN0YW5jZW9mIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSkKLSAgICAgICAgewotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IGVsID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KWV4dGVuc2liaWxpdHlFbGVtZW50OwotICAgICAgICBYU0RTY2hlbWEgc2NoZW1hID0gZWwuZ2V0U2NoZW1hKCk7Ci0gICAgICAgIGlmIChzY2hlbWEgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIC8vIFdlIG5lZWQgdGhpcyB0cnktY2F0Y2ggYmxvY2sgaW4gY2FzZSB3ZSBlbmNvdW50ZXIgYW4gZXhjZXB0aW9uIHdoaWxlIGF0dGVtcHRpbmcKLSAgICAgICAgICAvLyB0byByZXNvbHZlIHRoZSBzY2hlbWEuICBJbiB0aGUgY2FzZSBvZiB0aGUgV1NETCBFZGl0b3IsIHdlIGdldCBhCi0gICAgICAgICAgLy8gJ2Nhbm5vdCBjcmVhdGUgcGFydCBleGNlcHRpb24nLi4uLi4uU2VlIGVjbGlwc2UgYnVnemlsbGEgYnVnIDg5ODU1Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgc2NoZW1hLnNldFNjaGVtYUxvY2F0aW9uKHJlc291cmNlLmdldFVSSSgpLnRvU3RyaW5nKCkpOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqIAotICAgKiAgVGhpcyBtZXRob2Qgd2lsbCBjb2xsZWN0IHRoZSBzY2hlbWFzIG1hdGNoaW5nIHRoZSBuYW1lc3BhY2UKLSAgICogIHRoYXQgYXJlIGlubGluZWQgZGlyZWN0bHkgd2l0aGluIHRoaXMgZGVmaW5pdGlvbi4KLSAgICogIAotICAgKiAgQHBhcmFtIG5hbWVzcGFjZSB0aGUgbmFtZXNwYWNlIHRvIG1hdGNoLgotICAgKiAgQHBhcmFtIGxpc3QgYWxsIGlubGluZSBzY2hlbWFzIHRoYXQgbWF0Y2ggdGhlIG5hbWVzcGFjZSB3aWxsIGJlIGFkZGVkIHRvIHRoaXMgbGlzdC4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGNvbGxlY3RJbmxpbmVkU2NoZW1hcyhTdHJpbmcgbmFtZXNwYWNlLCBMaXN0IGxpc3QpCi0gIHsKLSAgICBUeXBlcyB0eXBlcyA9IGdldEVUeXBlcygpOwotICAgIGlmICh0eXBlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIExpc3Qgc2NoZW1hcyA9IHR5cGVzLmdldFNjaGVtYXMoKTsKLSAgICAgIEl0ZXJhdG9yIHNjaGVtYXNJdGVyYXRvciA9IHNjaGVtYXMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChzY2hlbWFzSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBYU0RTY2hlbWEgc2NoZW1hID0gKFhTRFNjaGVtYSlzY2hlbWFzSXRlcmF0b3IubmV4dCgpOwotICAgICAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gc2NoZW1hLmdldFRhcmdldE5hbWVzcGFjZSgpOwotCi0gICAgICAgIGlmIChXU0RMQ29uc3RhbnRzLmlzTWF0Y2hpbmdOYW1lc3BhY2UobmFtZXNwYWNlLCB0YXJnZXROYW1lc3BhY2UpKQotICAgICAgICB7Ci0gICAgICAgICAgbGlzdC5hZGQoc2NoZW1hKTsKLSAgICAgICAgfQotCi0gICAgICAgIEVMaXN0IHNjaGVtYUNvbnRlbnRzID0gc2NoZW1hLmdldENvbnRlbnRzKCk7Ci0gICAgICAgIEl0ZXJhdG9yIHNjaGVtYUNvbnRlbnRzSXRlcmF0b3IgPSBzY2hlbWFDb250ZW50cy5pdGVyYXRvcigpOwotCi0gICAgICAgIHdoaWxlIChzY2hlbWFDb250ZW50c0l0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIE9iamVjdCBjb21wb25lbnQgPSBzY2hlbWFDb250ZW50c0l0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgICBpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgWFNESW1wb3J0KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFhTREltcG9ydCB0aGVJbXBvcnQgPSAoWFNESW1wb3J0KWNvbXBvbmVudDsKLSAgICAgICAgICAgIFN0cmluZyBpbXBvcnROYW1lc3BhY2UgPSB0aGVJbXBvcnQuZ2V0TmFtZXNwYWNlKCk7Ci0gICAgICAgICAgICBpZiAoV1NETENvbnN0YW50cy5pc01hdGNoaW5nTmFtZXNwYWNlKG5hbWVzcGFjZSwgaW1wb3J0TmFtZXNwYWNlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgKChYU0RJbXBvcnRJbXBsKXRoZUltcG9ydCkuaW1wb3J0U2NoZW1hKCk7Ci0gICAgICAgICAgICAgIFhTRFNjaGVtYSBpbXBvcnRlZFNjaGVtYSA9IHRoZUltcG9ydC5nZXRSZXNvbHZlZFNjaGVtYSgpOwotICAgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTY2hlbWEgIT0gbnVsbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxpc3QuYWRkKGltcG9ydGVkU2NoZW1hKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKiAKLSAgICogIFRoaXMgbWV0aG9kIHdpbGwgY29sbGVjdCBhbnkgc2NoZW1hIG1hdGNoaW5nIHRoZSBnaXZlbiBuYW1lc3BhY2UgdGhhdCBhcmUKLSAgICogIGltcG9ydGVkIGRpcmVjdGx5IHZpYSBhIHdzZGwgaW1wb3J0IChlLmcuICZsdDt3c2RsOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iRm9vLnhzZCIuLi4pCi0gICAqICAKLSAgICogIEBwYXJhbSBuYW1lc3BhY2UgdGhlIG5hbWVzcGFjZSB0byBtYXRjaAotICAgKiAgQHBhcmFtIGxpc3QgYWxsIGltcG9ydGVkIHNjaGVtYXMgdGhhdCBtYXRjaCB0aGUgbmFtZXNwYWNlIHdpbGwgYmUgYWRkZWQgdG8gdGhpcyBsaXN0LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgY29sbGVjdEltcG9ydGVkU2NoZW1hcyhTdHJpbmcgbmFtZXNwYWNlLCBMaXN0IGxpc3QpCi0gIHsKLSAgICBFTGlzdCBpbXBvcnRzID0gZ2V0RUltcG9ydHMoKTsKLSAgICBJdGVyYXRvciBpbXBvcnRzSXRlcmF0b3IgPSBpbXBvcnRzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGltcG9ydHNJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgSW1wb3J0IHRoZUltcG9ydCA9IChJbXBvcnQpaW1wb3J0c0l0ZXJhdG9yLm5leHQoKTsKLSAgICAgIFN0cmluZyBpbXBvcnROYW1lc3BhY2VVUkkgPSB0aGVJbXBvcnQuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0KLSAgICAgIGlmIChXU0RMQ29uc3RhbnRzLmlzTWF0Y2hpbmdOYW1lc3BhY2UoaW1wb3J0TmFtZXNwYWNlVVJJLCBuYW1lc3BhY2UpKQotICAgICAgewotICAgICAgICAoKEltcG9ydEltcGwpdGhlSW1wb3J0KS5pbXBvcnREZWZpbml0aW9uT3JTY2hlbWEoKTsKLSAgICAgICAgWFNEU2NoZW1hIHNjaGVtYSA9IHRoZUltcG9ydC5nZXRFU2NoZW1hKCk7Ci0KLSAgICAgICAgaWYgKHNjaGVtYSAhPSBudWxsICYmIFdTRExDb25zdGFudHMuaXNNYXRjaGluZ05hbWVzcGFjZShzY2hlbWEuZ2V0VGFyZ2V0TmFtZXNwYWNlKCksIG5hbWVzcGFjZSkpCi0gICAgICAgIHsKLSAgICAgICAgICBsaXN0LmFkZChzY2hlbWEpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqIAotICAgKiAgVGhpcyBtZXRob2Qgd2lsbCB2aXNpdCBhbnkgaW1wb3J0ZWQgd3NkbCdzIGFuZCBjb2xsZWN0IGFueSBjb250YWluZWQgaW5saW5lZCBzY2hlbWFzIHRoYXQgbWF0Y2gKLSAgICogIHRoZSBnaXZlbiBuYW1lc3BhY2UuIAotICAgKiAgCi0gICAqICBAcGFyYW0gbmFtZXNwYWNlIHRoZSBuYW1lc3BhY2UgdG8gbWF0Y2gKLSAgICogIEBwYXJhbSBsaXN0IGFsbCBpbmxpbmVkIHNjaGVtYXMgb2YgaW1wb3J0ZWQgZGVmaW5pdGlvbnMgdGhhdCBtYXRjaCB0aGUgbmFtZXNwYWNlIHdpbGwgYmUgYWRkZWQgdG8gdGhpcyBsaXN0LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgY29sbGVjdElubGluZWRTY2hlbWFzT2ZJbXBvcnRlZERlZmluaXRpb25zKFN0cmluZyBuYW1lc3BhY2UsIExpc3QgbGlzdCkKLSAgewotICAgIEVMaXN0IGltcG9ydHMgPSBnZXRFSW1wb3J0cygpOwotICAgIEl0ZXJhdG9yIGltcG9ydHNJdGVyYXRvciA9IGltcG9ydHMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaW1wb3J0c0l0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBJbXBvcnQgdGhlSW1wb3J0ID0gKEltcG9ydClpbXBvcnRzSXRlcmF0b3IubmV4dCgpOwotICAgICAgRGVmaW5pdGlvbkltcGwgaW1wb3J0ZWREZWZpbml0aW9uID0gKERlZmluaXRpb25JbXBsKXRoZUltcG9ydC5nZXRFRGVmaW5pdGlvbigpOwotICAgICAgaWYgKGltcG9ydGVkRGVmaW5pdGlvbiAhPSBudWxsKQotICAgICAgewotICAgICAgICBpbXBvcnRlZERlZmluaXRpb24uY29sbGVjdElubGluZWRTY2hlbWFzKG5hbWVzcGFjZSwgbGlzdCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFByb3BhZ2F0ZXMgdGhlIGNoYW5nZSBpbiB0aGUgdGFyZ2V0IG5hbWVzcGFjZSB0byBhbGwgdGhlIHRvcCBsZXZlbCBuYW1lZCBjb21wb25lbnRzLgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHBhdGNoVGFyZ2V0TmFtZXNwYWNlKCkKLSAgewotICAgIEVMaXN0IG1lc3NhZ2VzID0gZ2V0RU1lc3NhZ2VzKCk7Ci0gICAgcGF0Y2hUYXJnZXROYW1lc3BhY2UobWVzc2FnZXMsIFdTRExDb25zdGFudHMuTUVTU0FHRSk7Ci0KLSAgICBFTGlzdCBwb3J0VHlwZXMgPSBnZXRFUG9ydFR5cGVzKCk7Ci0gICAgcGF0Y2hUYXJnZXROYW1lc3BhY2UocG9ydFR5cGVzLCBXU0RMQ29uc3RhbnRzLlBPUlRfVFlQRSk7Ci0KLSAgICBFTGlzdCBiaW5kaW5ncyA9IGdldEVCaW5kaW5ncygpOwotICAgIHBhdGNoVGFyZ2V0TmFtZXNwYWNlKGJpbmRpbmdzLCBXU0RMQ29uc3RhbnRzLkJJTkRJTkcpOwotCi0gICAgRUxpc3Qgc2VydmljZXMgPSBnZXRFU2VydmljZXMoKTsKLSAgICBwYXRjaFRhcmdldE5hbWVzcGFjZShzZXJ2aWNlcywgV1NETENvbnN0YW50cy5TRVJWSUNFKTsKLSAgfQotCi0gIC8qKgotICAgKiBJdGVyYXRlcyBvdmVyIHRoZSBXU0RMIGNvbXBvbmVudHMgaW4gdGhlIGxpc3QgYW5kIHVwZGF0ZXMgdGhlaXIgUU5hbWUuIFVzZXMKLSAgICogdGhlIGNvbXBvbmVudCB0eXBlIHRvIGRldGVybWluZSB3aGF0IHR5cGUgb2Ygb2JqZWN0IGlzIGluIHRoZSBsaXN0LgotICAgKiAKLSAgICogQHBhcmFtIGNvbXBvbmVudHNMaXN0IGEgbGlzdCB3aXRoIFdTRExFbGVtZW50czogbWVzc2FnZXMsIHBvcnQgdHlwZXMsIGJpbmRpbmdzIG9yIHBvcnQgdHlwZXMuCi0gICAqIEBwYXJhbSBjb21wb25lbnRUeXBlIHRoZSBhc3NvY2lhdGVkIGNvbXBvbmVudCB0eXBlIGFzIGRlZmluZWQgaW4ge0BsaW5rIFdTRExDb25zdGFudHN9Ci0gICAqLwotICBwcml2YXRlIHZvaWQgcGF0Y2hUYXJnZXROYW1lc3BhY2UoRUxpc3QgY29tcG9uZW50c0xpc3QsIGludCBjb21wb25lbnRUeXBlKQotICB7Ci0gICAgSXRlcmF0b3IgY29tcG9uZW50c0l0ZXJhdG9yID0gY29tcG9uZW50c0xpc3QuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoY29tcG9uZW50c0l0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IChXU0RMRWxlbWVudCljb21wb25lbnRzSXRlcmF0b3IubmV4dCgpOwotICAgICAgRGVmaW5pdGlvbiBlbmNsb3NpbmdEZWZpbml0aW9uID0gd3NkbEVsZW1lbnQuZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAgICAgaWYgKGVuY2xvc2luZ0RlZmluaXRpb24gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHRhcmdldE5hbWVzcGFjZSA9IGVuY2xvc2luZ0RlZmluaXRpb24uZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0KLSAgICAgICAgUU5hbWUgY29tcG9uZW50UU5hbWUgPSBnZXRRTmFtZUZvcldTRExFbGVtZW50KGNvbXBvbmVudFR5cGUsIHdzZGxFbGVtZW50KTsKLQotICAgICAgICBpZiAoY29tcG9uZW50UU5hbWUgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBsb2NhbFBhcnQgPSBjb21wb25lbnRRTmFtZS5nZXRMb2NhbFBhcnQoKTsKLSAgICAgICAgICBRTmFtZSBuZXdDb21wb25lbnRRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsIGxvY2FsUGFydCk7Ci0gICAgICAgICAgc2V0UU5hbWVGb3JXU0RMRWxlbWVudChjb21wb25lbnRUeXBlLCB3c2RsRWxlbWVudCwgbmV3Q29tcG9uZW50UU5hbWUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFVwZGF0ZXMgdGhlIFFOYW1lIGZvciB0aGUgZ2l2ZW4gY29tcG9uZW50IGFuZCBjb21wb25lbnQgdHlwZS4KLSAgICogQHBhcmFtIHR5cGUgdGhlIGNvbXBvbmVudCB0eXBlLiBTZWUge0BsaW5rIFdTRExDb25zdGFudHN9LgotICAgKiBAcGFyYW0gd3NkbEVsZW1lbnQgdGhlIHRhcmdldCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBxTmFtZSB0aGUgbmV3IGNvbXBvbmVudCB7QGxpbmsgUU5hbWV9LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHNldFFOYW1lRm9yV1NETEVsZW1lbnQoaW50IHR5cGUsIFdTRExFbGVtZW50IHdzZGxFbGVtZW50LCBRTmFtZSBxTmFtZSkKLSAgewotICAgIHN3aXRjaCAodHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExDb25zdGFudHMuTUVTU0FHRToKLSAgICAgICgoTWVzc2FnZSl3c2RsRWxlbWVudCkuc2V0UU5hbWUocU5hbWUpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5QT1JUX1RZUEU6Ci0gICAgICAoKFBvcnRUeXBlKXdzZGxFbGVtZW50KS5zZXRRTmFtZShxTmFtZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLkJJTkRJTkc6Ci0gICAgICAoKEJpbmRpbmcpd3NkbEVsZW1lbnQpLnNldFFOYW1lKHFOYW1lKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFdTRExDb25zdGFudHMuU0VSVklDRToKLSAgICAgICgoU2VydmljZSl3c2RsRWxlbWVudCkuc2V0UU5hbWUocU5hbWUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gIH0KLX0gLy9EZWZpbml0aW9uSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0V4dGVuc2liaWxpdHlFbGVtZW50SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0V4dGVuc2liaWxpdHlFbGVtZW50SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTczZmYyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9FeHRlbnNpYmlsaXR5RWxlbWVudEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS5iZWFucy5CZWFuSW5mbzsKLWltcG9ydCBqYXZhLmJlYW5zLkludHJvc3BlY3Rpb25FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5iZWFucy5JbnRyb3NwZWN0b3I7Ci1pbXBvcnQgamF2YS5iZWFucy5Qcm9wZXJ0eURlc2NyaXB0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmlsaXR5RWxlbWVudEltcGwjaXNSZXF1aXJlZCA8ZW0+UmVxdWlyZWQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsI2dldEVsZW1lbnRUeXBlIDxlbT5FbGVtZW50IFR5cGU8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgZXh0ZW5kcyBXU0RMRWxlbWVudEltcGwgaW1wbGVtZW50cyBFeHRlbnNpYmlsaXR5RWxlbWVudAotewotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2lzUmVxdWlyZWQoKSA8ZW0+UmVxdWlyZWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2lzUmVxdWlyZWQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGJvb2xlYW4gUkVRVUlSRURfRURFRkFVTFQgPSBmYWxzZTsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjaXNSZXF1aXJlZCgpIDxlbT5SZXF1aXJlZDwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjaXNSZXF1aXJlZCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIHJlcXVpcmVkID0gUkVRVUlSRURfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFbGVtZW50VHlwZSgpIDxlbT5FbGVtZW50IFR5cGU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVsZW1lbnRUeXBlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBRTmFtZSBFTEVNRU5UX1RZUEVfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFbGVtZW50VHlwZSgpIDxlbT5FbGVtZW50IFR5cGU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVsZW1lbnRUeXBlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFFOYW1lIGVsZW1lbnRUeXBlID0gRUxFTUVOVF9UWVBFX0VERUZBVUxUOwotCi0gIHByaXZhdGUgSGFzaE1hcCBiZWFuUHJvcGVydHlEZXNjcmlwdG9yczsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLkVYVEVOU0lCSUxJVFlfRUxFTUVOVDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNSZXF1aXJlZCgpCi0gIHsKLSAgICByZXR1cm4gcmVxdWlyZWQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlcXVpcmVkKGJvb2xlYW4gbmV3UmVxdWlyZWQpCi0gIHsKLSAgICBib29sZWFuIG9sZFJlcXVpcmVkID0gcmVxdWlyZWQ7Ci0gICAgcmVxdWlyZWQgPSBuZXdSZXF1aXJlZDsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVELCBvbGRSZXF1aXJlZCwgcmVxdWlyZWQpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gIHsKLSAgICBpZiAoZWxlbWVudFR5cGUgPT0gbnVsbCkKLSAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKGVDbGFzcygpLmdldEVQYWNrYWdlKCkuZ2V0TnNVUkkoKSwgZUNsYXNzKCkuZ2V0TmFtZSgpKTsKLQotICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RWxlbWVudFR5cGUoUU5hbWUgbmV3RWxlbWVudFR5cGUpCi0gIHsKLSAgICBRTmFtZSBvbGRFbGVtZW50VHlwZSA9IGVsZW1lbnRUeXBlOwotICAgIGVsZW1lbnRUeXBlID0gbmV3RWxlbWVudFR5cGU7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEUsIG9sZEVsZW1lbnRUeXBlLCBlbGVtZW50VHlwZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEOgotICAgICAgcmV0dXJuIGlzUmVxdWlyZWQoKSA/IEJvb2xlYW4uVFJVRSA6IEJvb2xlYW4uRkFMU0U7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFOgotICAgICAgcmV0dXJuIGdldEVsZW1lbnRUeXBlKCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDoKLSAgICAgIHNldFJlcXVpcmVkKCgoQm9vbGVhbiluZXdWYWx1ZSkuYm9vbGVhblZhbHVlKCkpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRToKLSAgICAgIHNldEVsZW1lbnRUeXBlKChRTmFtZSluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEOgotICAgICAgc2V0UmVxdWlyZWQoUkVRVUlSRURfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRToKLSAgICAgIHNldEVsZW1lbnRUeXBlKEVMRU1FTlRfVFlQRV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDoKLSAgICAgIHJldHVybiByZXF1aXJlZCAhPSBSRVFVSVJFRF9FREVGQVVMVDsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU6Ci0gICAgICByZXR1cm4gRUxFTUVOVF9UWVBFX0VERUZBVUxUID09IG51bGwgPyBlbGVtZW50VHlwZSAhPSBudWxsIDogIUVMRU1FTlRfVFlQRV9FREVGQVVMVC5lcXVhbHMoZWxlbWVudFR5cGUpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAocmVxdWlyZWQ6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChyZXF1aXJlZCk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCBlbGVtZW50VHlwZTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKGVsZW1lbnRUeXBlKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50I2dldFJlcXVpcmVkKCkKLSAgICovCi0gIHB1YmxpYyBCb29sZWFuIGdldFJlcXVpcmVkKCkKLSAgewotICAgIHJldHVybiBuZXcgQm9vbGVhbihpc1JlcXVpcmVkKCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50I3NldFJlcXVpcmVkKEJvb2xlYW4pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZXF1aXJlZChCb29sZWFuIHJlcXVpcmVkKQotICB7Ci0gICAgc2V0UmVxdWlyZWQocmVxdWlyZWQuYm9vbGVhblZhbHVlKCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciBhIGdpdmVuIGNsYXNzLgotICAgKi8KLSAgcHVibGljIGphdmEudXRpbC5NYXAgZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhqYXZhLmxhbmcuQ2xhc3MgY2xhenopCi0gIHsKLSAgICAvLyBMb29rdXAgcHJvcGVydGllcyBjYWNoZQotICAgIE1hcCBwcm9wZXJ0aWVzID0gbnVsbDsKLSAgICBpZiAoYmVhblByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkKLSAgICAgIGJlYW5Qcm9wZXJ0eURlc2NyaXB0b3JzID0gbmV3IEhhc2hNYXAoKTsKLSAgICBlbHNlCi0gICAgICBwcm9wZXJ0aWVzID0gKE1hcCliZWFuUHJvcGVydHlEZXNjcmlwdG9ycy5nZXQoY2xhenopOwotCi0gICAgaWYgKHByb3BlcnRpZXMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBJbnRyb3NwZWN0IHRoZSBiZWFuCi0gICAgICBBcnJheUxpc3QgYmluZm9zID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIEJlYW5JbmZvIGJpbmZvID0gSW50cm9zcGVjdG9yLmdldEJlYW5JbmZvKGNsYXp6KTsKLSAgICAgICAgaWYgKGJpbmZvICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBiaW5mb3MuYWRkKGJpbmZvKTsKLSAgICAgICAgICBCZWFuSW5mb1tdIGFiaW5mbyA9IGJpbmZvLmdldEFkZGl0aW9uYWxCZWFuSW5mbygpOwotICAgICAgICAgIGlmIChhYmluZm8gIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBiID0gMDsgYiA8IGFiaW5mby5sZW5ndGg7IGIrKykKLSAgICAgICAgICAgICAgYmluZm9zLmFkZChhYmluZm9bYl0pOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKEludHJvc3BlY3Rpb25FeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgLy8gVEJEIC0gaGFuZGxlIGV4Y2VwdGlvbgotICAgICAgfQotCi0gICAgICBwcm9wZXJ0aWVzID0gbmV3IEhhc2hNYXAoKTsKLSAgICAgIGZvciAoSXRlcmF0b3IgYiA9IGJpbmZvcy5pdGVyYXRvcigpOyBiLmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIEJlYW5JbmZvIGJpbmZvID0gKEJlYW5JbmZvKWIubmV4dCgpOwotICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3JbXSBwZGVzYyA9IGJpbmZvLmdldFByb3BlcnR5RGVzY3JpcHRvcnMoKTsKLSAgICAgICAgaWYgKHBkZXNjID09IG51bGwpCi0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGZvciAoaW50IHAgPSAwOyBwIDwgcGRlc2MubGVuZ3RoOyBwKyspCi0gICAgICAgICAgcHJvcGVydGllcy5wdXQocGRlc2NbcF0uZ2V0TmFtZSgpLCBwZGVzY1twXSk7Ci0gICAgICB9Ci0gICAgICBiZWFuUHJvcGVydHlEZXNjcmlwdG9ycy5wdXQoY2xhenosIHByb3BlcnRpZXMpOwotICAgIH0KLSAgICByZXR1cm4gcHJvcGVydGllczsKLSAgfQotCi0gIC8vCi0gIC8vIFJlY29uY2lsZSBtZXRob2RzCi0gIC8vCi0KLSAgcHVibGljIHZvaWQgc2V0RWxlbWVudChFbGVtZW50IGVsZW1lbnQpCi0gIHsKLSAgICBpZiAoZWxlbWVudCA9PSBudWxsICYmICFpc1JlY29uY2lsaW5nKQotICAgIHsKLSAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJFeHRlbnNpYmlsaXR5RWxlbWVudC5zZXRFbGVtZW50KCk6IFByZXNlcnZpbmcgb2xkIGVsZW1lbnQiKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHNldEVsZW1lbnRHZW4oZWxlbWVudCk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlQXR0cmlidXRlcyhFbGVtZW50IGNoYW5nZWRFbGVtZW50KQotICB7Ci0gICAgc3VwZXIucmVjb25jaWxlQXR0cmlidXRlcyhjaGFuZ2VkRWxlbWVudCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBoYW5kbGVVbnJlY29uY2lsZWRFbGVtZW50KEVsZW1lbnQgY2hpbGQsIENvbGxlY3Rpb24gcmVtYWluaW5nTW9kZWxPYmplY3RzKQotICB7Ci0gICAgc3VwZXIuaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChjaGlsZCwgcmVtYWluaW5nTW9kZWxPYmplY3RzKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGhhbmRsZVJlY29uY2lsaWF0aW9uKENvbGxlY3Rpb24gcmVtYWluaW5nTW9kZWxPYmplY3RzKQotICB7Ci0gICAgc3VwZXIuaGFuZGxlUmVjb25jaWxpYXRpb24ocmVtYWluaW5nTW9kZWxPYmplY3RzKTsKLSAgfQotCi0gIC8vCi0gIC8vIEZvciByZWNvbmNpbGlhdGlvbjogRU1GIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAgIGlmIChkZWZpbml0aW9uID09IG51bGwpCi0gICAgICByZXR1cm4gbnVsbDsKLQotICAgIERvY3VtZW50IGRvY3VtZW50ID0gZGVmaW5pdGlvbi5nZXREb2N1bWVudCgpOwotICAgIGlmIChkb2N1bWVudCA9PSBudWxsKQotICAgICAgZG9jdW1lbnQgPSAoKERlZmluaXRpb25JbXBsKWRlZmluaXRpb24pLnVwZGF0ZURvY3VtZW50KCk7Ci0KLSAgICBFbGVtZW50IG5ld0VsZW1lbnQgPSBudWxsOwotICAgIGlmIChlbGVtZW50ICE9IG51bGwpIC8vIFRoaXMgaXMgYW4gb2xkIGVsZW1lbnQuCi0gICAgewotICAgICAgbmV3RWxlbWVudCA9IChFbGVtZW50KWRvY3VtZW50LmltcG9ydE5vZGUoZWxlbWVudCwgdHJ1ZSk7Ci0gICAgICBlbGVtZW50ID0gbmV3RWxlbWVudDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBnZXRFbGVtZW50VHlwZSgpLmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgU3RyaW5nIHF1YWxpZmllciA9IGRlZmluaXRpb24uZ2V0UHJlZml4KG5hbWVzcGFjZSk7Ci0gICAgICBuZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgKHF1YWxpZmllciA9PSBudWxsID8gIiIgOiBxdWFsaWZpZXIgKyAiOiIpICsgZ2V0RWxlbWVudFR5cGUoKS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICBlbGVtZW50ID0gbmV3RWxlbWVudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotfSAvL0V4dGVuc2liaWxpdHlFbGVtZW50SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0V4dGVuc2libGVFbGVtZW50SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0V4dGVuc2libGVFbGVtZW50SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmY5YmJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9FeHRlbnNpYmxlRWxlbWVudEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb25DaGFpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVPYmplY3RDb250YWlubWVudEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkludGVybmFsRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4dGVuc2libGUgRWxlbWVudDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmxlRWxlbWVudEltcGwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cyA8ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBFeHRlbnNpYmxlRWxlbWVudEltcGwgZXh0ZW5kcyBXU0RMRWxlbWVudEltcGwgaW1wbGVtZW50cyBFeHRlbnNpYmxlRWxlbWVudAotewotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIDxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVMaXN0IGVFeHRlbnNpYmlsaXR5RWxlbWVudHM7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRXh0ZW5zaWJsZUVsZW1lbnRJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBXU0RMUGFja2FnZS5MaXRlcmFscy5FWFRFTlNJQkxFX0VMRU1FTlQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgewotICAgIGlmIChlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzID09IG51bGwpCi0gICAgewotICAgICAgZUV4dGVuc2liaWxpdHlFbGVtZW50cyA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdCgKLSAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQuY2xhc3MsCi0gICAgICAgIHRoaXMsCi0gICAgICAgIFdTRExQYWNrYWdlLkVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMpOwotICAgIH0KLSAgICByZXR1cm4gZUV4dGVuc2liaWxpdHlFbGVtZW50czsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpCi0gIHsKLSAgICByZXR1cm4gZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW1lbnQpCi0gIHsKLSAgICBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5hZGQoZXh0RWxlbWVudCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBlSW52ZXJzZVJlbW92ZShJbnRlcm5hbEVPYmplY3Qgb3RoZXJFbmQsIGludCBmZWF0dXJlSUQsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM6Ci0gICAgICByZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUludmVyc2VSZW1vdmUob3RoZXJFbmQsIGZlYXR1cmVJRCwgbXNncyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM6Ci0gICAgICByZXR1cm4gZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM6Ci0gICAgICBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuY2xlYXIoKTsKLSAgICAgIGdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzoKLSAgICAgIGdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5jbGVhcigpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM6Ci0gICAgICByZXR1cm4gZUV4dGVuc2liaWxpdHlFbGVtZW50cyAhPSBudWxsICYmICFlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzLmlzRW1wdHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLy8KLSAgLy8KLSAgLy8KLSAgcHVibGljIHZvaWQgaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChFbGVtZW50IGNoaWxkLCBDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGlmICghV1NETENvbnN0YW50cy5pc01hdGNoaW5nTmFtZXNwYWNlKGNoaWxkLmdldE5hbWVzcGFjZVVSSSgpLCBXU0RMQ29uc3RhbnRzLldTRExfTkFNRVNQQUNFX1VSSSkpCi0gICAgewotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSB1c2VFeHRlbnNpb25GYWN0b3JpZXMoKQotICAgICAgICA/ICgoV1NETEZhY3RvcnlJbXBsKVdTRExGYWN0b3J5LmVJTlNUQU5DRSkuY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoZ2V0TmFtZXNwYWNlKGNoaWxkKSwgZ2V0TG9jYWxOYW1lKGNoaWxkKSkKLSAgICAgICAgOiAoKFdTRExGYWN0b3J5SW1wbClXU0RMRmFjdG9yeS5lSU5TVEFOQ0UpLmNyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotCi0gICAgICBleHRlbnNpYmlsaXR5RWxlbWVudC5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKGdldEVuY2xvc2luZ0RlZmluaXRpb24oKSk7Ci0gICAgICBleHRlbnNpYmlsaXR5RWxlbWVudC5zZXRFbGVtZW50KGNoaWxkKTsKLSAgICAgIGdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5hZGQoZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZ2V0RXh0ZW5zaW9uQXR0cmlidXRlKFFOYW1lIG5hbWUpCi0gIHsKLSAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVAotICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RXh0ZW5zaW9uQXR0cmlidXRlKFFOYW1lIG5hbWUsIE9iamVjdCB2YWx1ZSkKLSAgewotICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UCi0gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgTWFwIGdldEV4dGVuc2lvbkF0dHJpYnV0ZXMoKQotICB7Ci0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QKLSAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldE5hdGl2ZUF0dHJpYnV0ZU5hbWVzKCkKLSAgewotICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UCi0gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gdXNlRXh0ZW5zaW9uRmFjdG9yaWVzKCkKLSAgewotICAgIC8vIFVzZSBleHRlbnNpb24gZmFjdG9yaWVzIGJ5IGRlZmF1bHQuCi0gICAgcmV0dXJuIGdldEVuY2xvc2luZ0RlZmluaXRpb24oKSA9PSBudWxsID8gdHJ1ZSA6ICgoRGVmaW5pdGlvbkltcGwpZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpKS5nZXRVc2VFeHRlbnNpb25GYWN0b3JpZXMoKTsKLSAgfQotCi19IC8vRXh0ZW5zaWJsZUVsZW1lbnRJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvRmF1bHRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvRmF1bHRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZjRlMmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0ZhdWx0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkZhdWx0PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgRmF1bHRJbXBsIGV4dGVuZHMgTWVzc2FnZVJlZmVyZW5jZUltcGwgaW1wbGVtZW50cyBGYXVsdAotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBGYXVsdEltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLkZBVUxUOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIGphdmF4LndzZGwuTWVzc2FnZSBnZXRNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiBnZXRFTWVzc2FnZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpCi0gIHsKLSAgICBzZXRFTWVzc2FnZSgob3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSltZXNzYWdlKTsKLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoKQotICB7Ci0gICAgRWxlbWVudCBuZXdFbGVtZW50ID0gY3JlYXRlRWxlbWVudChXU0RMQ29uc3RhbnRzLkZBVUxUKTsKLSAgICBzZXRFbGVtZW50KG5ld0VsZW1lbnQpOwotICAgIHJldHVybiBuZXdFbGVtZW50OwotICB9Ci19IC8vRmF1bHRJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvSW1wb3J0SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0ltcG9ydEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZkMjU5MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvSW1wb3J0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTg5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZVNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FY29yZVV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbC5XU0RMTW9kZWxMb2NhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5YU0RSZXNvdXJjZUltcGw7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SW1wb3J0PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkltcG9ydEltcGwjZ2V0TmFtZXNwYWNlVVJJIDxlbT5OYW1lc3BhY2UgVVJJPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkltcG9ydEltcGwjZ2V0TG9jYXRpb25VUkkgPGVtPkxvY2F0aW9uIFVSSTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5JbXBvcnRJbXBsI2dldEVEZWZpbml0aW9uIDxlbT5FRGVmaW5pdGlvbjwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5JbXBvcnRJbXBsI2dldEVTY2hlbWEgPGVtPkVTY2hlbWE8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBJbXBvcnRJbXBsIGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnRJbXBsIGltcGxlbWVudHMgSW1wb3J0Ci17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIHByb3RlY3RlZCBib29sZWFuIHJlc29sdmVkOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmFtZXNwYWNlVVJJKCkgPGVtPk5hbWVzcGFjZSBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWVzcGFjZVVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVTUEFDRV9VUklfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lc3BhY2VVUkkoKSA8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TmFtZXNwYWNlVVJJKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBOQU1FU1BBQ0VfVVJJX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TG9jYXRpb25VUkkoKSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRMb2NhdGlvblVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIExPQ0FUSU9OX1VSSV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExvY2F0aW9uVVJJKCkgPGVtPkxvY2F0aW9uIFVSSTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TG9jYXRpb25VUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGxvY2F0aW9uVVJJID0gTE9DQVRJT05fVVJJX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFRGVmaW5pdGlvbigpIDxlbT5FRGVmaW5pdGlvbjwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RURlZmluaXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRGVmaW5pdGlvbiBlRGVmaW5pdGlvbjsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RVNjaGVtYSgpIDxlbT5FU2NoZW1hPC9lbT59JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFU2NoZW1hKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFhTRFNjaGVtYSBlU2NoZW1hOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEltcG9ydEltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLklNUE9SVDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lc3BhY2VVUkkoKQotICB7Ci0gICAgcmV0dXJuIG5hbWVzcGFjZVVSSTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZXNwYWNlVVJJKFN0cmluZyBuZXdOYW1lc3BhY2VVUkkpCi0gIHsKLSAgICBTdHJpbmcgb2xkTmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJOwotICAgIG5hbWVzcGFjZVVSSSA9IG5ld05hbWVzcGFjZVVSSTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5JTVBPUlRfX05BTUVTUEFDRV9VUkksIG9sZE5hbWVzcGFjZVVSSSwgbmFtZXNwYWNlVVJJKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9jYXRpb25VUkkoKQotICB7Ci0gICAgcmV0dXJuIGxvY2F0aW9uVVJJOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMb2NhdGlvblVSSShTdHJpbmcgbmV3TG9jYXRpb25VUkkpCi0gIHsKLSAgICBTdHJpbmcgb2xkTG9jYXRpb25VUkkgPSBsb2NhdGlvblVSSTsKLSAgICBsb2NhdGlvblVSSSA9IG5ld0xvY2F0aW9uVVJJOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLklNUE9SVF9fTE9DQVRJT05fVVJJLCBvbGRMb2NhdGlvblVSSSwgbG9jYXRpb25VUkkpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIERlZmluaXRpb24gZ2V0RURlZmluaXRpb24oKQotICB7Ci0gICAgaWYgKGVEZWZpbml0aW9uICE9IG51bGwgJiYgZURlZmluaXRpb24uZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkRURlZmluaXRpb24gPSAoSW50ZXJuYWxFT2JqZWN0KWVEZWZpbml0aW9uOwotICAgICAgZURlZmluaXRpb24gPSAoRGVmaW5pdGlvbillUmVzb2x2ZVByb3h5KG9sZEVEZWZpbml0aW9uKTsKLSAgICAgIGlmIChlRGVmaW5pdGlvbiAhPSBvbGRFRGVmaW5pdGlvbikKLSAgICAgIHsKLSAgICAgICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBXU0RMUGFja2FnZS5JTVBPUlRfX0VERUZJTklUSU9OLCBvbGRFRGVmaW5pdGlvbiwgZURlZmluaXRpb24pKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVEZWZpbml0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRGVmaW5pdGlvbiBiYXNpY0dldEVEZWZpbml0aW9uKCkKLSAgewotICAgIHJldHVybiBlRGVmaW5pdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RURlZmluaXRpb24oRGVmaW5pdGlvbiBuZXdFRGVmaW5pdGlvbikKLSAgewotICAgIERlZmluaXRpb24gb2xkRURlZmluaXRpb24gPSBlRGVmaW5pdGlvbjsKLSAgICBlRGVmaW5pdGlvbiA9IG5ld0VEZWZpbml0aW9uOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLklNUE9SVF9fRURFRklOSVRJT04sIG9sZEVEZWZpbml0aW9uLCBlRGVmaW5pdGlvbikpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgWFNEU2NoZW1hIGdldEVTY2hlbWEoKQotICB7Ci0gICAgaWYgKGVTY2hlbWEgIT0gbnVsbCAmJiBlU2NoZW1hLmVJc1Byb3h5KCkpCi0gICAgewotICAgICAgSW50ZXJuYWxFT2JqZWN0IG9sZEVTY2hlbWEgPSAoSW50ZXJuYWxFT2JqZWN0KWVTY2hlbWE7Ci0gICAgICBlU2NoZW1hID0gKFhTRFNjaGVtYSllUmVzb2x2ZVByb3h5KG9sZEVTY2hlbWEpOwotICAgICAgaWYgKGVTY2hlbWEgIT0gb2xkRVNjaGVtYSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBXU0RMUGFja2FnZS5JTVBPUlRfX0VTQ0hFTUEsIG9sZEVTY2hlbWEsIGVTY2hlbWEpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVTY2hlbWE7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBYU0RTY2hlbWEgYmFzaWNHZXRFU2NoZW1hKCkKLSAgewotICAgIHJldHVybiBlU2NoZW1hOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFU2NoZW1hKFhTRFNjaGVtYSBuZXdFU2NoZW1hKQotICB7Ci0gICAgWFNEU2NoZW1hIG9sZEVTY2hlbWEgPSBlU2NoZW1hOwotICAgIGVTY2hlbWEgPSBuZXdFU2NoZW1hOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLklNUE9SVF9fRVNDSEVNQSwgb2xkRVNjaGVtYSwgZVNjaGVtYSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIFhTRFNjaGVtYSBnZXRTY2hlbWEoKQotICB7Ci0gICAgcmV0dXJuIGdldEVTY2hlbWEoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNjaGVtYShYU0RTY2hlbWEgc2NoZW1hKQotICB7Ci0gICAgc2V0RVNjaGVtYShzY2hlbWEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5JTVBPUlRfX05BTUVTUEFDRV9VUkk6Ci0gICAgICByZXR1cm4gZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLklNUE9SVF9fTE9DQVRJT05fVVJJOgotICAgICAgcmV0dXJuIGdldExvY2F0aW9uVVJJKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLklNUE9SVF9fRURFRklOSVRJT046Ci0gICAgICBpZiAocmVzb2x2ZSkKLSAgICAgICAgcmV0dXJuIGdldEVEZWZpbml0aW9uKCk7Ci0gICAgICByZXR1cm4gYmFzaWNHZXRFRGVmaW5pdGlvbigpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5JTVBPUlRfX0VTQ0hFTUE6Ci0gICAgICBpZiAocmVzb2x2ZSkKLSAgICAgICAgcmV0dXJuIGdldEVTY2hlbWEoKTsKLSAgICAgIHJldHVybiBiYXNpY0dldEVTY2hlbWEoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5JTVBPUlRfX05BTUVTUEFDRV9VUkk6Ci0gICAgICBzZXROYW1lc3BhY2VVUkkoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLklNUE9SVF9fTE9DQVRJT05fVVJJOgotICAgICAgc2V0TG9jYXRpb25VUkkoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLklNUE9SVF9fRURFRklOSVRJT046Ci0gICAgICBzZXRFRGVmaW5pdGlvbigoRGVmaW5pdGlvbiluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLklNUE9SVF9fRVNDSEVNQToKLSAgICAgIHNldEVTY2hlbWEoKFhTRFNjaGVtYSluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5JTVBPUlRfX05BTUVTUEFDRV9VUkk6Ci0gICAgICBzZXROYW1lc3BhY2VVUkkoTkFNRVNQQUNFX1VSSV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLklNUE9SVF9fTE9DQVRJT05fVVJJOgotICAgICAgc2V0TG9jYXRpb25VUkkoTE9DQVRJT05fVVJJX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuSU1QT1JUX19FREVGSU5JVElPTjoKLSAgICAgIHNldEVEZWZpbml0aW9uKChEZWZpbml0aW9uKW51bGwpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5JTVBPUlRfX0VTQ0hFTUE6Ci0gICAgICBzZXRFU2NoZW1hKChYU0RTY2hlbWEpbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuSU1QT1JUX19OQU1FU1BBQ0VfVVJJOgotICAgICAgcmV0dXJuIE5BTUVTUEFDRV9VUklfRURFRkFVTFQgPT0gbnVsbCA/IG5hbWVzcGFjZVVSSSAhPSBudWxsIDogIU5BTUVTUEFDRV9VUklfRURFRkFVTFQuZXF1YWxzKG5hbWVzcGFjZVVSSSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLklNUE9SVF9fTE9DQVRJT05fVVJJOgotICAgICAgcmV0dXJuIExPQ0FUSU9OX1VSSV9FREVGQVVMVCA9PSBudWxsID8gbG9jYXRpb25VUkkgIT0gbnVsbCA6ICFMT0NBVElPTl9VUklfRURFRkFVTFQuZXF1YWxzKGxvY2F0aW9uVVJJKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuSU1QT1JUX19FREVGSU5JVElPTjoKLSAgICAgIHJldHVybiBlRGVmaW5pdGlvbiAhPSBudWxsOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5JTVBPUlRfX0VTQ0hFTUE6Ci0gICAgICByZXR1cm4gZVNjaGVtYSAhPSBudWxsOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAobmFtZXNwYWNlVVJJOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQobmFtZXNwYWNlVVJJKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIGxvY2F0aW9uVVJJOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQobG9jYXRpb25VUkkpOwotICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBJbXBvcnQjZ2V0RGVmaW5pdGlvbigpCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5EZWZpbml0aW9uIGdldERlZmluaXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGdldEVEZWZpbml0aW9uKCk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBJbXBvcnQjc2V0RGVmaW5pdGlvbihEZWZpbml0aW9uKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RGVmaW5pdGlvbihqYXZheC53c2RsLkRlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgIHNldEVEZWZpbml0aW9uKChvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKWRlZmluaXRpb24pOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxlIG1ldGhvZHMKLSAgLy8KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlQXR0cmlidXRlcyhFbGVtZW50IGNoYW5nZWRFbGVtZW50KQotICB7Ci0gICAgc2V0TmFtZXNwYWNlVVJJKFdTRExDb25zdGFudHMuZ2V0QXR0cmlidXRlKGNoYW5nZWRFbGVtZW50LCBXU0RMQ29uc3RhbnRzLk5BTUVTUEFDRV9BVFRSSUJVVEUpKTsKLSAgICBzZXRMb2NhdGlvblVSSShXU0RMQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgV1NETENvbnN0YW50cy5MT0NBVElPTl9BVFRSSUJVVEUpKTsKLSAgfQotCi0gIC8vCi0gIC8vIEZvciByZWNvbmNpbGlhdGlvbjogTW9kZWwgLT4gRE9NCi0gIC8vCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGlzIGJvb2xlYW4gdG8gZmFsc2UgYmVjYXVzZSB0aGUgSW1wb3J0IG1heSBwb2ludCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbi4KLSAgICAvLyBTbyB3ZSBuZWVkIHdlIHNob3VsZCB2aWV3IHRoaXMgaW1wb3J0IGFzIHVucmVzb2x2ZWQuCi0gICAgcmVzb2x2ZWQgPSBmYWxzZTsKLQotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgcmV0dXJuOwotCi0gICAgc3VwZXIuY2hhbmdlQXR0cmlidXRlKGVBdHRyaWJ1dGUpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5JTVBPUlRfX05BTUVTUEFDRV9VUkkpCi0gICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgV1NETENvbnN0YW50cy5OQU1FU1BBQ0VfQVRUUklCVVRFLCBnZXROYW1lc3BhY2VVUkkoKSk7Ci0KLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5JTVBPUlRfX0xPQ0FUSU9OX1VSSSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBXU0RMQ29uc3RhbnRzLkxPQ0FUSU9OX0FUVFJJQlVURSwgZ2V0TG9jYXRpb25VUkkoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIEVsZW1lbnQgY3JlYXRlRWxlbWVudCgpCi0gIHsKLSAgICBFbGVtZW50IG5ld0VsZW1lbnQgPSBjcmVhdGVFbGVtZW50KFdTRExDb25zdGFudHMuSU1QT1JUKTsKLSAgICBzZXRFbGVtZW50KG5ld0VsZW1lbnQpOwotICAgIHJldHVybiBuZXdFbGVtZW50OwotICB9Ci0KLSAgcHVibGljIHZvaWQgaW1wb3J0RGVmaW5pdGlvbk9yU2NoZW1hKCkKLSAgewotICAgIHJlc29sdmUoZ2V0TmFtZXNwYWNlVVJJKCksIGdldExvY2F0aW9uVVJJKCkpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcmVzb2x2ZShTdHJpbmcgbmFtZXNwYWNlLCBTdHJpbmcgbG9jYXRpb24pCi0gIHsKLSAgICBpZiAoIXJlc29sdmVkKQotICAgIHsKLSAgICAgIC8vIEtCOiBidWd6aWxsYSAxMTgyOTMKLSAgICAgIC8vIElmIGEgdXNlciBjaGFuZ2VzIDx3c2RsOmltcG9ydD4gZnJvbSBhIFdTREwgZmlsZSB0byBhbiBYTUwgU2NoZW1hIGZpbGUKLSAgICAgIC8vIG9yIHRoZSBvdGhlciB3YXkgYXJvdW5kLCB3ZSBzaG91bGQgc2V0IHRoZSB2YXJpYWJsZSBmb3IgdGhlIGZpcnN0Ci0gICAgICAvLyA8d3NkbDppbXBvcnQ+IHNvdXJjZSB0byBudWxsLiBIZXJlIEkgYW0gc2ltcGx5IHNldHRpbmcgYm90aCB2YXJpYWJsZXMgdG8gbnVsbCwKLSAgICAgIC8vIHdoaWNoIHdpbGwgaGF2ZSB0aGUgc2FtZSBlZmZlY3QuCi0gICAgICBlRGVmaW5pdGlvbiA9IG51bGw7Ci0gICAgICBlU2NoZW1hID0gbnVsbDsKLQotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAgICAgaWYgKGRlZmluaXRpb24gIT0gbnVsbCAmJiBkZWZpbml0aW9uLmdldERvY3VtZW50QmFzZVVSSSgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIFJlc291cmNlIHJlc291cmNlID0gZGVmaW5pdGlvbi5lUmVzb3VyY2UoKTsKLSAgICAgICAgaWYgKHJlc291cmNlICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBSZXNvdXJjZVNldCByZXNvdXJjZVNldCA9IHJlc291cmNlLmdldFJlc291cmNlU2V0KCk7Ci0gICAgICAgICAgaWYgKHJlc291cmNlU2V0ICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBuYW1lc3BhY2UgPSBkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBTdHJpbmcgcmVzb2x2ZWRMb2NhdGlvbiA9IHJlc29sdmVMb2NhdGlvbihkZWZpbml0aW9uLCBuYW1lc3BhY2UsIGxvY2F0aW9uKTsKLQotICAgICAgICAgICAgaWYgKHJlc29sdmVkTG9jYXRpb24gPT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBVUkkgdXJpID0gVVJJLmNyZWF0ZVVSSShyZXNvbHZlZExvY2F0aW9uKTsKLSAgICAgICAgICAgIFJlc291cmNlIHJlc29sdmVkUmVzb3VyY2UgPSByZXNvdXJjZVNldC5nZXRSZXNvdXJjZSh1cmksIGZhbHNlKTsKLSAgICAgICAgICAgIGlmIChyZXNvbHZlZFJlc291cmNlID09IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHRyeQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gPSByZXNvdXJjZVNldC5nZXRVUklDb252ZXJ0ZXIoKS5jcmVhdGVJbnB1dFN0cmVhbSh1cmkpOwotICAgICAgICAgICAgICAgIHJlc29sdmVkUmVzb3VyY2UgPSByZXNvdXJjZVNldC5jcmVhdGVSZXNvdXJjZSh1cmkpOwotICAgICAgICAgICAgICAgIHJlc29sdmVkUmVzb3VyY2UubG9hZChpbnB1dFN0cmVhbSwgcmVzb3VyY2VTZXQuZ2V0TG9hZE9wdGlvbnMoKSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEl0IGlzIGdlbmVyYWxseSBub3QgYW4gZXJyb3IgdG8gZmFpbCB0byByZXNvbHZlLgotICAgICAgICAgICAgICAgIC8vIElmIGEgcmVzb3VyY2UgaXMgYWN0dWFsbHkgY3JlYXRlZCwgCi0gICAgICAgICAgICAgICAgLy8gd2hpY2ggaGFwcGVucyBvbmx5IHdoZW4gd2UgY2FuIGNyZWF0ZSBhbiBpbnB1dCBzdHJlYW0sCi0gICAgICAgICAgICAgICAgLy8gdGhlbiBpdCdzIGFuIGVycm9yIGlmIGl0J3Mgbm90IGEgZ29vZCB3c2RsIG9yIHNjaGVtYQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChyZXNvbHZlZFJlc291cmNlICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmIChyZXNvbHZlZFJlc291cmNlIGluc3RhbmNlb2YgV1NETFJlc291cmNlSW1wbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGVEZWZpbml0aW9uID0gKChXU0RMUmVzb3VyY2VJbXBsKXJlc29sdmVkUmVzb3VyY2UpLmdldERlZmluaXRpb24oKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIGlmIChyZXNvbHZlZFJlc291cmNlIGluc3RhbmNlb2YgWFNEUmVzb3VyY2VJbXBsKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZVNjaGVtYSA9ICgoWFNEUmVzb3VyY2VJbXBsKXJlc29sdmVkUmVzb3VyY2UpLmdldFNjaGVtYSgpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGVEZWZpbml0aW9uID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZURlZmluaXRpb24oKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCBTdHJpbmcgcmVzb2x2ZUxvY2F0aW9uKERlZmluaXRpb24gZGVmaW5pdGlvbiwgU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIHNjaGVtYUxvY2F0aW9uKQotICB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG51bGw7Ci0gICAgV1NETE1vZGVsTG9jYXRvciBsb2NhdG9yID0gKFdTRExNb2RlbExvY2F0b3IpRWNvcmVVdGlsLmdldFJlZ2lzdGVyZWRBZGFwdGVyKGRlZmluaXRpb24uZVJlc291cmNlKCksIFdTRExNb2RlbExvY2F0b3IuY2xhc3MpOwotICAgIGlmIChsb2NhdG9yICE9IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gbG9jYXRvci5yZXNvbHZlVVJJKGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCksIG5hbWVzcGFjZSwgc2NoZW1hTG9jYXRpb24pOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gVE9ETy4uLiB0aGVyZSdzIHNvbWUgZGVmYXVsdCByZXNvbHZpbmcgd2UnbGwgbmVlZCB0byBkbyBoZXJlCi0gICAgICAvLyBzZWUgWFNEU2NoZW1hRGlyZWN0aXZlCi0gICAgICBVUkkgYmFzZUxvY2F0aW9uVVJJID0gY3JlYXRlVVJJKGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCkpOwotICAgICAgVVJJIGxvY2F0aW9uVVJJID0gVVJJLmNyZWF0ZVVSSShzY2hlbWFMb2NhdGlvbik7Ci0gICAgICByZXR1cm4gbG9jYXRpb25VUkkucmVzb2x2ZShiYXNlTG9jYXRpb25VUkkpLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvL1RPRE8uLi4gcHVzaCBkb3duIHRvIEVNRgotICBwcml2YXRlIHN0YXRpYyBVUkkgY3JlYXRlVVJJKFN0cmluZyB1cmlTdHJpbmcpCi0gIHsKLSAgICBpZiAoaGFzUHJvdG9jb2wodXJpU3RyaW5nKSkKLSAgICAgIHJldHVybiBVUkkuY3JlYXRlVVJJKHVyaVN0cmluZyk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIFVSSS5jcmVhdGVGaWxlVVJJKHVyaVN0cmluZyk7Ci0gIH0KLQotICAvL1RPRE8uLi4gcHVzaCBkb3duIHRvIEVNRiAgCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaGFzUHJvdG9jb2woU3RyaW5nIHVyaSkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKHVyaSAhPSBudWxsKQotICAgIHsKLSAgICAgIGludCBpbmRleCA9IHVyaS5pbmRleE9mKCI6Iik7Ci0gICAgICBpZiAoaW5kZXggIT0gLTEgJiYgaW5kZXggPiAyKSAvLyBhc3N1bWUgcHJvdG9jb2wgd2l0aCBiZSBsZW5ndGggMyBzbyB0aGF0IHRoZSdDJyBpbiAnQzovJyBpcyBub3QgaW50ZXJwcmV0ZWQgYXMgYSBwcm90b2NvbAotICAgICAgewotICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci19IC8vSW1wb3J0SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0lucHV0SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL0lucHV0SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjEzMmRlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9JbnB1dEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5JbnB1dDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIElucHV0SW1wbCBleHRlbmRzIE1lc3NhZ2VSZWZlcmVuY2VJbXBsIGltcGxlbWVudHMgSW5wdXQKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgSW5wdXRJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBXU0RMUGFja2FnZS5MaXRlcmFscy5JTlBVVDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLk1lc3NhZ2UgZ2V0TWVzc2FnZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0RU1lc3NhZ2UoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE1lc3NhZ2UoTWVzc2FnZSBtZXNzYWdlKQotICB7Ci0gICAgc2V0RU1lc3NhZ2UoKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpbWVzc2FnZSk7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudCBjcmVhdGVFbGVtZW50KCkKLSAgewotICAgIEVsZW1lbnQgbmV3RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoV1NETENvbnN0YW50cy5JTlBVVCk7Ci0gICAgc2V0RWxlbWVudChuZXdFbGVtZW50KTsKLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotfSAvL0lucHV0SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL01lc3NhZ2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvTWVzc2FnZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE2MTU3MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvTWVzc2FnZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uQ2hhaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdENvbnRhaW5tZW50RUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuSW50ZXJuYWxFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC51dGlsLldTRExVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5NZXNzYWdlPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk1lc3NhZ2VJbXBsI2dldFFOYW1lIDxlbT5RTmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5NZXNzYWdlSW1wbCNpc1VuZGVmaW5lZCA8ZW0+VW5kZWZpbmVkPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk1lc3NhZ2VJbXBsI2dldEVQYXJ0cyA8ZW0+RVBhcnRzPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgTWVzc2FnZUltcGwgZXh0ZW5kcyBFeHRlbnNpYmxlRWxlbWVudEltcGwgaW1wbGVtZW50cyBNZXNzYWdlCi17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0UU5hbWUoKSA8ZW0+UU5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFFOYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFFOYW1lKCkgPGVtPlFOYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRRTmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBRTmFtZSBxTmFtZSA9IFFOQU1FX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjaXNVbmRlZmluZWQoKSA8ZW0+VW5kZWZpbmVkPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNpc1VuZGVmaW5lZCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgYm9vbGVhbiBVTkRFRklORURfRURFRkFVTFQgPSBmYWxzZTsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjaXNVbmRlZmluZWQoKSA8ZW0+VW5kZWZpbmVkPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNpc1VuZGVmaW5lZCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIHVuZGVmaW5lZCA9IFVOREVGSU5FRF9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RVBhcnRzKCkgPGVtPkVQYXJ0czwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFUGFydHMoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3QgZVBhcnRzOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIE1lc3NhZ2VJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBXU0RMUGFja2FnZS5MaXRlcmFscy5NRVNTQUdFOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUU5hbWUgZ2V0UU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHFOYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRRTmFtZShRTmFtZSBuZXdRTmFtZSkKLSAgewotICAgIFFOYW1lIG9sZFFOYW1lID0gcU5hbWU7Ci0gICAgcU5hbWUgPSBuZXdRTmFtZTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5NRVNTQUdFX19RTkFNRSwgb2xkUU5hbWUsIHFOYW1lKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzVW5kZWZpbmVkKCkKLSAgewotICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFVuZGVmaW5lZChib29sZWFuIG5ld1VuZGVmaW5lZCkKLSAgewotICAgIGJvb2xlYW4gb2xkVW5kZWZpbmVkID0gdW5kZWZpbmVkOwotICAgIHVuZGVmaW5lZCA9IG5ld1VuZGVmaW5lZDsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5NRVNTQUdFX19VTkRFRklORUQsIG9sZFVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFUGFydHMoKQotICB7Ci0gICAgaWYgKGVQYXJ0cyA9PSBudWxsKQotICAgIHsKLSAgICAgIGVQYXJ0cyA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChQYXJ0LmNsYXNzLCB0aGlzLCBXU0RMUGFja2FnZS5NRVNTQUdFX19FUEFSVFMpOwotICAgIH0KLSAgICByZXR1cm4gZVBhcnRzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEFkZCBhIHBhcnQgdG8gdGhpcyBtZXNzYWdlLgotICAgKiBAcGFyYW0gcGFydCB0aGUgcGFydCB0byBiZSBhZGRlZAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFBhcnQoamF2YXgud3NkbC5QYXJ0IHBhcnQpCi0gIHsKLSAgICBnZXRFUGFydHMoKS5hZGQoKFBhcnQpcGFydCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogR2V0IHRoZSBzcGVjaWZpZWQgcGFydC4KLSAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGRlc2lyZWQgcGFydC4KLSAgICogQHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBwYXJ0LCBvciBudWxsIGlmIHRoZXJlIHdhc24ndAotICAgKiBhbnkgbWF0Y2hpbmcgcGFydAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLlBhcnQgZ2V0UGFydChTdHJpbmcgbmFtZSkKLSAgewotICAgIFBhcnQgcmVzdWx0ID0gbnVsbDsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSBnZXRFUGFydHMoKS5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpaS5uZXh0KCk7Ci0gICAgICBpZiAobmFtZS5lcXVhbHMocGFydC5nZXROYW1lKCkpKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBwYXJ0OwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBHZXQgYWxsIHRoZSBwYXJ0cyBkZWZpbmVkIGhlcmUuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIE1hcCBnZXRQYXJ0cygpCi0gIHsKLSAgICBIYXNoTWFwIGhhc2hNYXAgPSBuZXcgSGFzaE1hcCgpOwotICAgIGZvciAoSXRlcmF0b3IgaSA9IGdldEVQYXJ0cygpLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBQYXJ0IHBhcnQgPSAoUGFydClpLm5leHQoKTsKLSAgICAgIGhhc2hNYXAucHV0KHBhcnQuZ2V0TmFtZSgpLCBwYXJ0KTsKLSAgICB9Ci0gICAgcmV0dXJuIGhhc2hNYXA7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgTGlzdCBnZXRPcmRlcmVkUGFydHMoTGlzdCBwYXJ0T3JkZXIpCi0gIHsKLSAgICBMaXN0IG9yZGVyZWRQYXJ0cyA9IG5ldyBWZWN0b3IoKTsKLSAgICBpZiAocGFydE9yZGVyID09IG51bGwpCi0gICAgewotICAgICAgb3JkZXJlZFBhcnRzLmFkZEFsbChnZXRFUGFydHMoKSk7Ci0gICAgICByZXR1cm4gb3JkZXJlZFBhcnRzOwotICAgIH0KLQotICAgIEl0ZXJhdG9yIHBhcnROYW1lSXRlcmF0b3IgPSBwYXJ0T3JkZXIuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAocGFydE5hbWVJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgU3RyaW5nIHBhcnROYW1lID0gKFN0cmluZylwYXJ0TmFtZUl0ZXJhdG9yLm5leHQoKTsKLSAgICAgIGphdmF4LndzZGwuUGFydCBwYXJ0ID0gZ2V0UGFydChwYXJ0TmFtZSk7Ci0gICAgICBpZiAocGFydCAhPSBudWxsKQotICAgICAgICBvcmRlcmVkUGFydHMuYWRkKHBhcnQpOwotICAgIH0KLQotICAgIHJldHVybiBvcmRlcmVkUGFydHM7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBlSW52ZXJzZVJlbW92ZShJbnRlcm5hbEVPYmplY3Qgb3RoZXJFbmQsIGludCBmZWF0dXJlSUQsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk1FU1NBR0VfX0VQQVJUUzoKLSAgICAgIHJldHVybiAoKEludGVybmFsRUxpc3QpZ2V0RVBhcnRzKCkpLmJhc2ljUmVtb3ZlKG90aGVyRW5kLCBtc2dzKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJbnZlcnNlUmVtb3ZlKG90aGVyRW5kLCBmZWF0dXJlSUQsIG1zZ3MpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5NRVNTQUdFX19RTkFNRToKLSAgICAgIHJldHVybiBnZXRRTmFtZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5NRVNTQUdFX19VTkRFRklORUQ6Ci0gICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IEJvb2xlYW4uVFJVRSA6IEJvb2xlYW4uRkFMU0U7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk1FU1NBR0VfX0VQQVJUUzoKLSAgICAgIHJldHVybiBnZXRFUGFydHMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5NRVNTQUdFX19RTkFNRToKLSAgICAgIHNldFFOYW1lKChRTmFtZSluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk1FU1NBR0VfX1VOREVGSU5FRDoKLSAgICAgIHNldFVuZGVmaW5lZCgoKEJvb2xlYW4pbmV3VmFsdWUpLmJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTUVTU0FHRV9fRVBBUlRTOgotICAgICAgZ2V0RVBhcnRzKCkuY2xlYXIoKTsKLSAgICAgIGdldEVQYXJ0cygpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5NRVNTQUdFX19RTkFNRToKLSAgICAgIHNldFFOYW1lKFFOQU1FX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTUVTU0FHRV9fVU5ERUZJTkVEOgotICAgICAgc2V0VW5kZWZpbmVkKFVOREVGSU5FRF9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk1FU1NBR0VfX0VQQVJUUzoKLSAgICAgIGdldEVQYXJ0cygpLmNsZWFyKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTUVTU0FHRV9fUU5BTUU6Ci0gICAgICByZXR1cm4gUU5BTUVfRURFRkFVTFQgPT0gbnVsbCA/IHFOYW1lICE9IG51bGwgOiAhUU5BTUVfRURFRkFVTFQuZXF1YWxzKHFOYW1lKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTUVTU0FHRV9fVU5ERUZJTkVEOgotICAgICAgcmV0dXJuIHVuZGVmaW5lZCAhPSBVTkRFRklORURfRURFRkFVTFQ7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk1FU1NBR0VfX0VQQVJUUzoKLSAgICAgIHJldHVybiBlUGFydHMgIT0gbnVsbCAmJiAhZVBhcnRzLmlzRW1wdHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKHFOYW1lOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQocU5hbWUpOwotICAgIHJlc3VsdC5hcHBlbmQoIiwgdW5kZWZpbmVkOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQodW5kZWZpbmVkKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxlIG1ldGhvZHMKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCk7Ci0gICAgU3RyaW5nIG5hbWUgPSBjaGFuZ2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSk7Ci0gICAgUU5hbWUgcW5hbWUgPSBuZXcgUU5hbWUoZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKSwgbmFtZSA9PSBudWxsID8gIiIgOiBuYW1lKTsgLy8kTk9OLU5MUy0xJAotICAgIHNldFFOYW1lKHFuYW1lKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoRWxlbWVudCBjaGlsZCwgQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBzd2l0Y2ggKFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoY2hpbGQpKQotICAgIHsKLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5QQVJUOgotICAgICAgewotICAgICAgICBQYXJ0IHBhcnQgPSAoKFdTRExQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFdTRExQYWNrYWdlLmVOU19VUkkpKS5nZXRXU0RMRmFjdG9yeSgpLmNyZWF0ZVBhcnQoKTsKLSAgICAgICAgcGFydC5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKGdldEVuY2xvc2luZ0RlZmluaXRpb24oKSk7Ci0gICAgICAgIHBhcnQuc2V0RWxlbWVudChjaGlsZCk7Ci0gICAgICAgIGdldEVQYXJ0cygpLmFkZChwYXJ0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAgewotICAgICAgICBzdXBlci5oYW5kbGVVbnJlY29uY2lsZWRFbGVtZW50KGNoaWxkLCByZW1haW5pbmdNb2RlbE9iamVjdHMpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVSZWNvbmNpbGlhdGlvbihDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGZvciAoSXRlcmF0b3IgaSA9IHJlbWFpbmluZ01vZGVsT2JqZWN0cy5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgcmVtb3ZlKHRoaXMsIGkubmV4dCgpKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmUoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IG1vZGVsT2JqZWN0KQotICB7Ci0gICAgTWVzc2FnZSBtZXNzYWdlID0gKE1lc3NhZ2UpY29tcG9uZW50OwotICAgIGlmIChtb2RlbE9iamVjdCBpbnN0YW5jZW9mIFBhcnQpCi0gICAgewotICAgICAgbWVzc2FnZS5nZXRFUGFydHMoKS5yZW1vdmUobW9kZWxPYmplY3QpOwotICAgICAgLy8gICAgICBtZXNzYWdlLmdldEVQYXJ0cygpLmNsZWFyKCk7Ci0gICAgfQotICB9Ci0KLSAgLy8KLSAgLy8gRm9yIHJlY29uY2lsaWF0aW9uOiBNb2RlbCAtPiBET00KLSAgLy8KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VBdHRyaWJ1dGUoRUF0dHJpYnV0ZSBlQXR0cmlidXRlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VBdHRyaWJ1dGUoZUF0dHJpYnV0ZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLk1FU1NBR0VfX1FOQU1FKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFdTRExDb25zdGFudHMuTkFNRV9BVFRSSUJVVEUsIGdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoKQotICB7Ci0gICAgRWxlbWVudCBuZXdFbGVtZW50ID0gY3JlYXRlRWxlbWVudChXU0RMQ29uc3RhbnRzLk1FU1NBR0UpOwotICAgIHNldEVsZW1lbnQobmV3RWxlbWVudCk7Ci0KLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGdldEVQYXJ0cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBPYmplY3Qgb2JqID0gaXRlcmF0b3IubmV4dCgpOwotICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFBhcnQpCi0gICAgICB7Ci0gICAgICAgIFBhcnQgcGFydCA9IChQYXJ0KW9iajsKLSAgICAgICAgRWxlbWVudCBjaGlsZCA9ICgoUGFydEltcGwpcGFydCkuY3JlYXRlRWxlbWVudCgpOwotICAgICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5ld0VsZW1lbnQ7Ci0gIH0KLX0gLy9NZXNzYWdlSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL01lc3NhZ2VSZWZlcmVuY2VJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvTWVzc2FnZVJlZmVyZW5jZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY5YjBlZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvTWVzc2FnZVJlZmVyZW5jZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZSBSZWZlcmVuY2U8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuTWVzc2FnZVJlZmVyZW5jZUltcGwjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5NZXNzYWdlUmVmZXJlbmNlSW1wbCNnZXRFTWVzc2FnZSA8ZW0+RU1lc3NhZ2U8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBNZXNzYWdlUmVmZXJlbmNlSW1wbCBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50SW1wbCBpbXBsZW1lbnRzIE1lc3NhZ2VSZWZlcmVuY2UKLXsKLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmFtZSgpIDxlbT5OYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXROYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBuYW1lID0gTkFNRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RU1lc3NhZ2UoKSA8ZW0+RU1lc3NhZ2U8L2VtPn0nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVNZXNzYWdlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIE1lc3NhZ2UgZU1lc3NhZ2U7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgTWVzc2FnZVJlZmVyZW5jZUltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLk1FU1NBR0VfUkVGRVJFTkNFOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIG5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5ld05hbWUpCi0gIHsKLSAgICBTdHJpbmcgb2xkTmFtZSA9IG5hbWU7Ci0gICAgbmFtZSA9IG5ld05hbWU7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUUsIG9sZE5hbWUsIG5hbWUpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE1lc3NhZ2UgZ2V0RU1lc3NhZ2UoKQotICB7Ci0gICAgaWYgKGVNZXNzYWdlICE9IG51bGwgJiYgZU1lc3NhZ2UuZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkRU1lc3NhZ2UgPSAoSW50ZXJuYWxFT2JqZWN0KWVNZXNzYWdlOwotICAgICAgZU1lc3NhZ2UgPSAoTWVzc2FnZSllUmVzb2x2ZVByb3h5KG9sZEVNZXNzYWdlKTsKLSAgICAgIGlmIChlTWVzc2FnZSAhPSBvbGRFTWVzc2FnZSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBXU0RMUGFja2FnZS5NRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0UsIG9sZEVNZXNzYWdlLCBlTWVzc2FnZSkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZU1lc3NhZ2U7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlIGJhc2ljR2V0RU1lc3NhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGVNZXNzYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFTWVzc2FnZShNZXNzYWdlIG5ld0VNZXNzYWdlKQotICB7Ci0gICAgTWVzc2FnZSBvbGRFTWVzc2FnZSA9IGVNZXNzYWdlOwotICAgIGVNZXNzYWdlID0gbmV3RU1lc3NhZ2U7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFLCBvbGRFTWVzc2FnZSwgZU1lc3NhZ2UpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUU6Ci0gICAgICByZXR1cm4gZ2V0TmFtZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5NRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0U6Ci0gICAgICBpZiAocmVzb2x2ZSkKLSAgICAgICAgcmV0dXJuIGdldEVNZXNzYWdlKCk7Ci0gICAgICByZXR1cm4gYmFzaWNHZXRFTWVzc2FnZSgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk1FU1NBR0VfUkVGRVJFTkNFX19OQU1FOgotICAgICAgc2V0TmFtZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFOgotICAgICAgc2V0RU1lc3NhZ2UoKE1lc3NhZ2UpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUU6Ci0gICAgICBzZXROYW1lKE5BTUVfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5NRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0U6Ci0gICAgICBzZXRFTWVzc2FnZSgoTWVzc2FnZSludWxsKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5NRVNTQUdFX1JFRkVSRU5DRV9fTkFNRToKLSAgICAgIHJldHVybiBOQU1FX0VERUZBVUxUID09IG51bGwgPyBuYW1lICE9IG51bGwgOiAhTkFNRV9FREVGQVVMVC5lcXVhbHMobmFtZSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk1FU1NBR0VfUkVGRVJFTkNFX19FTUVTU0FHRToKLSAgICAgIHJldHVybiBlTWVzc2FnZSAhPSBudWxsOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAobmFtZTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKG5hbWUpOwotICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvLwotICAvLyBSZWNvbmNpbGlhdGlvbiBtZXRob2RzCi0gIC8vCi0KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlQXR0cmlidXRlcyhFbGVtZW50IGNoYW5nZWRFbGVtZW50KQotICB7Ci0gICAgc2V0TmFtZShXU0RMQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSkpOwotICAgIHJlY29uY2lsZVJlZmVyZW5jZXMoZmFsc2UpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChFbGVtZW50IGNoaWxkLCBDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIHN1cGVyLmhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoY2hpbGQsIHJlbWFpbmluZ01vZGVsT2JqZWN0cyk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVSZWNvbmNpbGlhdGlvbihDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICB9Ci0KLSAgLy8KLSAgLy8gRm9yIHJlY29uY2lsaWF0aW9uOiBNb2RlbCAtPiBET00KLSAgLy8KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VBdHRyaWJ1dGUoRUF0dHJpYnV0ZSBlQXR0cmlidXRlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VBdHRyaWJ1dGUoZUF0dHJpYnV0ZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLk1FU1NBR0VfUkVGRVJFTkNFX19OQU1FKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFdTRExDb25zdGFudHMuTkFNRV9BVFRSSUJVVEUsIGdldE5hbWUoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlUmVmZXJlbmNlKEVSZWZlcmVuY2UgZVJlZmVyZW5jZSkKLSAgewotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgcmV0dXJuOwotCi0gICAgc3VwZXIuY2hhbmdlUmVmZXJlbmNlKGVSZWZlcmVuY2UpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlUmVmZXJlbmNlID09IG51bGwgfHwgZVJlZmVyZW5jZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5NRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0UpCi0gICAgICB7Ci0gICAgICAgIE1lc3NhZ2UgbWVzc2FnZSA9IGdldEVNZXNzYWdlKCk7Ci0gICAgICAgIGlmIChtZXNzYWdlICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBRTmFtZSBxTmFtZSA9IG1lc3NhZ2UuZ2V0UU5hbWUoKTsKLSAgICAgICAgICBuaWNlU2V0QXR0cmlidXRlVVJJVmFsdWUodGhlRWxlbWVudCwgV1NETENvbnN0YW50cy5NRVNTQUdFX0FUVFJJQlVURSwgcU5hbWUuZ2V0TmFtZXNwYWNlVVJJKCkgKyAiIyIgKyBxTmFtZS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVSZWZlcmVuY2VzKGJvb2xlYW4gZGVlcCkKLSAgewotICAgIGlmIChlbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAgICAgUU5hbWUgbWVzc2FnZVFOYW1lID0gY3JlYXRlUU5hbWUoZGVmaW5pdGlvbiwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5NRVNTQUdFX0FUVFJJQlVURSksIGVsZW1lbnQpOwotICAgICAgTWVzc2FnZSBuZXdNZXNzYWdlID0gbWVzc2FnZVFOYW1lICE9IG51bGwgPyAoTWVzc2FnZSlkZWZpbml0aW9uLmdldE1lc3NhZ2UobWVzc2FnZVFOYW1lKSA6IG51bGw7Ci0gICAgICBpZiAobmV3TWVzc2FnZSAhPSBnZXRFTWVzc2FnZSgpKQotICAgICAgewotICAgICAgICBzZXRFTWVzc2FnZShuZXdNZXNzYWdlKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgc3VwZXIucmVjb25jaWxlUmVmZXJlbmNlcyhkZWVwKTsKLSAgfQotfSAvL01lc3NhZ2VSZWZlcmVuY2VJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvTmFtZXNwYWNlSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL05hbWVzcGFjZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNkMzMyOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvTmFtZXNwYWNlSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FT2JqZWN0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5OYW1lc3BhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk5hbWVzcGFjZTwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5OYW1lc3BhY2VJbXBsI2dldFVSSSA8ZW0+VVJJPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk5hbWVzcGFjZUltcGwjZ2V0UHJlZml4IDxlbT5QcmVmaXg8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBOYW1lc3BhY2VJbXBsIGV4dGVuZHMgRU9iamVjdEltcGwgaW1wbGVtZW50cyBOYW1lc3BhY2UKLXsKLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRVUkkoKSA8ZW0+VVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRVUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBVUklfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRVUkkoKSA8ZW0+VVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRVUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHVyaSA9IFVSSV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFByZWZpeCgpIDxlbT5QcmVmaXg8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFByZWZpeCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZJWF9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFByZWZpeCgpIDxlbT5QcmVmaXg8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFByZWZpeCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgcHJlZml4ID0gUFJFRklYX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIE5hbWVzcGFjZUltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLk5BTUVTUEFDRTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRVUkkoKQotICB7Ci0gICAgcmV0dXJuIHVyaTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VVJJKFN0cmluZyBuZXdVUkkpCi0gIHsKLSAgICBTdHJpbmcgb2xkVVJJID0gdXJpOwotICAgIHVyaSA9IG5ld1VSSTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5OQU1FU1BBQ0VfX1VSSSwgb2xkVVJJLCB1cmkpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRQcmVmaXgoKQotICB7Ci0gICAgcmV0dXJuIHByZWZpeDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UHJlZml4KFN0cmluZyBuZXdQcmVmaXgpCi0gIHsKLSAgICBTdHJpbmcgb2xkUHJlZml4ID0gcHJlZml4OwotICAgIHByZWZpeCA9IG5ld1ByZWZpeDsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5OQU1FU1BBQ0VfX1BSRUZJWCwgb2xkUHJlZml4LCBwcmVmaXgpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTkFNRVNQQUNFX19VUkk6Ci0gICAgICByZXR1cm4gZ2V0VVJJKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk5BTUVTUEFDRV9fUFJFRklYOgotICAgICAgcmV0dXJuIGdldFByZWZpeCgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk5BTUVTUEFDRV9fVVJJOgotICAgICAgc2V0VVJJKChTdHJpbmcpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5OQU1FU1BBQ0VfX1BSRUZJWDoKLSAgICAgIHNldFByZWZpeCgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk5BTUVTUEFDRV9fVVJJOgotICAgICAgc2V0VVJJKFVSSV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk5BTUVTUEFDRV9fUFJFRklYOgotICAgICAgc2V0UHJlZml4KFBSRUZJWF9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTkFNRVNQQUNFX19VUkk6Ci0gICAgICByZXR1cm4gVVJJX0VERUZBVUxUID09IG51bGwgPyB1cmkgIT0gbnVsbCA6ICFVUklfRURFRkFVTFQuZXF1YWxzKHVyaSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk5BTUVTUEFDRV9fUFJFRklYOgotICAgICAgcmV0dXJuIFBSRUZJWF9FREVGQVVMVCA9PSBudWxsID8gcHJlZml4ICE9IG51bGwgOiAhUFJFRklYX0VERUZBVUxULmVxdWFscyhwcmVmaXgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAoVVJJOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQodXJpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIHByZWZpeDogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKHByZWZpeCk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi19IC8vTmFtZXNwYWNlSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL09wZXJhdGlvbkltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9PcGVyYXRpb25JbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4YWZiMmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL09wZXJhdGlvbkltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwODYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uVHlwZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb25DaGFpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVPYmplY3RDb250YWlubWVudEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVPYmplY3RSZXNvbHZpbmdFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWwuV1NETFV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk9wZXJhdGlvbkltcGwjZ2V0U3R5bGUgPGVtPlN0eWxlPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk9wZXJhdGlvbkltcGwjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5PcGVyYXRpb25JbXBsI2lzVW5kZWZpbmVkIDxlbT5VbmRlZmluZWQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuT3BlcmF0aW9uSW1wbCNnZXRFSW5wdXQgPGVtPkVJbnB1dDwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5PcGVyYXRpb25JbXBsI2dldEVPdXRwdXQgPGVtPkVPdXRwdXQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuT3BlcmF0aW9uSW1wbCNnZXRFRmF1bHRzIDxlbT5FRmF1bHRzPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk9wZXJhdGlvbkltcGwjZ2V0RVBhcmFtZXRlck9yZGVyaW5nIDxlbT5FUGFyYW1ldGVyIE9yZGVyaW5nPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgT3BlcmF0aW9uSW1wbCBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50SW1wbCBpbXBsZW1lbnRzIE9wZXJhdGlvbgotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFN0eWxlKCkgPGVtPlN0eWxlPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRTdHlsZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgT3BlcmF0aW9uVHlwZSBTVFlMRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFN0eWxlKCkgPGVtPlN0eWxlPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRTdHlsZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBPcGVyYXRpb25UeXBlIHN0eWxlID0gU1RZTEVfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmFtZSgpIDxlbT5OYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXROYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBuYW1lID0gTkFNRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2lzVW5kZWZpbmVkKCkgPGVtPlVuZGVmaW5lZDwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjaXNVbmRlZmluZWQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGJvb2xlYW4gVU5ERUZJTkVEX0VERUZBVUxUID0gZmFsc2U7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2lzVW5kZWZpbmVkKCkgPGVtPlVuZGVmaW5lZDwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjaXNVbmRlZmluZWQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiB1bmRlZmluZWQgPSBVTkRFRklORURfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVJbnB1dCgpIDxlbT5FSW5wdXQ8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVJbnB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBJbnB1dCBlSW5wdXQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVPdXRwdXQoKSA8ZW0+RU91dHB1dDwvZW0+fScgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RU91dHB1dCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBPdXRwdXQgZU91dHB1dDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RUZhdWx0cygpIDxlbT5FRmF1bHRzPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVGYXVsdHMoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3QgZUZhdWx0czsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCkgPGVtPkVQYXJhbWV0ZXIgT3JkZXJpbmc8L2VtPn0nIHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVMaXN0IGVQYXJhbWV0ZXJPcmRlcmluZzsgLy8gYSBsaXN0IG9mIHBhcnRzIChFTUYpCi0KLSAgcHJpdmF0ZSBMaXN0IHBhcmFtZXRlck9yZGVyaW5nID0gbnVsbDsgLy8gYSBsaXN0IG9mIHBhcnQgbmFtZXMgKFdTREw0SikKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBPcGVyYXRpb25JbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBXU0RMUGFja2FnZS5MaXRlcmFscy5PUEVSQVRJT047Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgT3BlcmF0aW9uVHlwZSBnZXRTdHlsZSgpCi0gIHsKLSAgICBpZiAoc3R5bGUgPT0gbnVsbCkKLSAgICAgIHN0eWxlID0gZGVkdWNlT3BlcmF0aW9uVHlwZShnZXRFbGVtZW50KCkpOwotCi0gICAgLy8gVGhlIHZhbHVlIG9mIHN0eWxlIGlzIHVwZGF0ZWQgd2hlbgotICAgIC8vIDEpIHRoZSBXU0RMIGlzIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUsCi0gICAgLy8gMikgdGhlIHNldFN0eWxlKCkgbWV0aG9kIGlzIGNhbGxlZCwgYW5kCi0gICAgLy8gMykgdGhlIGNoaWxkcmVuIG9mIHRoZSBPcGVyYXRpb24gKERPTSkgZWxlbWVudCBhcmUgbWFuaXB1bGF0ZWQuCi0gICAgcmV0dXJuIHN0eWxlOwotICB9Ci0KLSAgcHJpdmF0ZSBPcGVyYXRpb25UeXBlIGRlZHVjZU9wZXJhdGlvblR5cGUoRWxlbWVudCBvcGVyYXRpb24pCi0gIHsKLSAgICBpZiAob3BlcmF0aW9uID09IG51bGwpCi0gICAgICByZXR1cm4gbnVsbDsKLQotICAgIGludCBzdGF0ZSA9IDA7Ci0gICAgaW50IG1lc3NhZ2VSZWZUeXBlID0gLTE7Ci0gICAgTm9kZSBjaGlsZCA9IG51bGw7Ci0gICAgTm9kZUxpc3QgY2hpbGRyZW4gPSBvcGVyYXRpb24uZ2V0Q2hpbGROb2RlcygpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5nZXRMZW5ndGgoKTsgaSsrKQotICAgIHsKLSAgICAgIGNoaWxkID0gY2hpbGRyZW4uaXRlbShpKTsKLSAgICAgIGlmIChjaGlsZC5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICBjb250aW51ZTsKLQotICAgICAgU3RyaW5nIG5zVVJJID0gY2hpbGQuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0KLSAgICAgIGlmICghV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkkuZXF1YWxzKG5zVVJJKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2tpcCBvdmVyIGFueSBub24tV1NETCBlbGVtZW50cy4gRm9yIGV4YW1wbGUsIHRvIHN1cHBvcnQgbmV3IFdTREwgCi0gICAgICAgIC8vIHVzZSBjYXNlcyB3ZSBoYXZlIHRvIHRvbGVyYXRlIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgYXQgdGhlIG9wZXJhdGlvbiBsZXZlbC4KLQotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLQotICAgICAgbWVzc2FnZVJlZlR5cGUgPSBXU0RMVXRpbC5nZXRJbnN0YW5jZSgpLmdldFdTRExUeXBlKChFbGVtZW50KWNoaWxkKTsKLQotICAgICAgc3dpdGNoIChzdGF0ZSkKLSAgICAgIHsKLSAgICAgICAgY2FzZSAwOiAvLyBpbml0aWFsIHN0YXRlICAgICAKLSAgICAgICAgaWYgKFdTRExDb25zdGFudHMuSU5QVVQgPT0gbWVzc2FnZVJlZlR5cGUpCi0gICAgICAgICAgc3RhdGUgPSAxOwotICAgICAgICBlbHNlIGlmIChXU0RMQ29uc3RhbnRzLk9VVFBVVCA9PSBtZXNzYWdlUmVmVHlwZSkKLSAgICAgICAgICBzdGF0ZSA9IDI7Ci0gICAgICAgIGVsc2UgaWYgKFdTRExDb25zdGFudHMuRE9DVU1FTlRBVElPTiA9PSBtZXNzYWdlUmVmVHlwZSkKLSAgICAgICAgICBzdGF0ZSA9IDA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBzdGF0ZSA9IC0xOyAvLyBjYW5ub3QgaGFwcGVuCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMTogLy8gb25lLXdheSBvciByZXF1ZXN0LXJlc3BvbnNlCi0gICAgICAgIGlmIChXU0RMQ29uc3RhbnRzLkZBVUxUID09IG1lc3NhZ2VSZWZUeXBlKQotICAgICAgICAgIHN0YXRlID0gMTE7IC8vIG9uZS13YXkKLSAgICAgICAgZWxzZSBpZiAoV1NETENvbnN0YW50cy5PVVRQVVQgPT0gbWVzc2FnZVJlZlR5cGUpCi0gICAgICAgICAgc3RhdGUgPSAzOyAvLyByZXF1ZXN0LXJlc3BvbnNlCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBzdGF0ZSA9IC0xOyAvLyBjYW5ub3QgaGFwcGVuCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMTE6IC8vIG9uZS13YXkKLSAgICAgICAgaWYgKFdTRExDb25zdGFudHMuRkFVTFQgPT0gbWVzc2FnZVJlZlR5cGUpCi0gICAgICAgICAgc3RhdGUgPSAxMTsgLy8gb25lLXdheQotICAgICAgICBlbHNlCi0gICAgICAgICAgc3RhdGUgPSAtMTsgLy8gY2Fubm90IGhhcHBlbgotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6IC8vIHNvbGljaXQtcmVzcG9uc2Ugb3Igbm90aWZpY2F0aW9uCi0gICAgICAgIGlmIChXU0RMQ29uc3RhbnRzLklOUFVUID09IG1lc3NhZ2VSZWZUeXBlKQotICAgICAgICAgIHN0YXRlID0gNDsgLy8gc29saWNpdC1yZXNwb25zZQotICAgICAgICBlbHNlIGlmIChXU0RMQ29uc3RhbnRzLkZBVUxUID09IG1lc3NhZ2VSZWZUeXBlKQotICAgICAgICAgIHN0YXRlID0gMjE7IC8vIG5vdGlmaWNhdGlvbgotICAgICAgICBlbHNlCi0gICAgICAgICAgc3RhdGUgPSAtMTsgLy8gY2Fubm90IGhhcHBlbgotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDIxOiAvLyBub3RpZmljYXRpb24KLSAgICAgICAgaWYgKFdTRExDb25zdGFudHMuRkFVTFQgPT0gbWVzc2FnZVJlZlR5cGUpCi0gICAgICAgICAgc3RhdGUgPSAyMTsgLy8gbm90aWZpY2F0aW9uCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBzdGF0ZSA9IC0xOyAvLyBjYW5ub3QgaGFwcGVuCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMzogLy8gcmVxdWVzdC1yZXNwb25zZSAKLSAgICAgICAgaWYgKFdTRExDb25zdGFudHMuRkFVTFQgPT0gbWVzc2FnZVJlZlR5cGUpCi0gICAgICAgICAgc3RhdGUgPSAzOwotICAgICAgICBlbHNlCi0gICAgICAgICAgc3RhdGUgPSAtMTsgLy8gY2Fubm90IGhhcHBlbgotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6IC8vIHNvbGljaXQtcmVzcG9uc2UKLSAgICAgICAgaWYgKFdTRExDb25zdGFudHMuRkFVTFQgPT0gbWVzc2FnZVJlZlR5cGUpCi0gICAgICAgICAgc3RhdGUgPSA0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgc3RhdGUgPSAtMTsgLy8gY2Fubm90IGhhcHBlbgotICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OiAvLyBjYW5ub3QgaGFwcGVuICgtMSkKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0KLSAgT3BlcmF0aW9uVHlwZSBvcFR5cGUgPSBudWxsOwotICBzd2l0Y2ggKHN0YXRlKQotICB7Ci0gICAgY2FzZSAxOgotICAgIGNhc2UgMTE6Ci0gICAgb3BUeXBlID0gT3BlcmF0aW9uVHlwZS5PTkVfV0FZOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgIGNhc2UgMjE6Ci0gICAgb3BUeXBlID0gT3BlcmF0aW9uVHlwZS5OT1RJRklDQVRJT047Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDM6Ci0gICAgb3BUeXBlID0gT3BlcmF0aW9uVHlwZS5SRVFVRVNUX1JFU1BPTlNFOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0OgotICAgIG9wVHlwZSA9IE9wZXJhdGlvblR5cGUuU09MSUNJVF9SRVNQT05TRTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6IC8vIGludmFsaWQKLSAgICBicmVhazsKLX0KLXJldHVybiBvcFR5cGU7Ci19Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTdHlsZShPcGVyYXRpb25UeXBlIG5ld1N0eWxlKQotICB7Ci0gICAgT3BlcmF0aW9uVHlwZSBvbGRTdHlsZSA9IHN0eWxlOwotICAgIHN0eWxlID0gbmV3U3R5bGU7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19TVFlMRSwgb2xkU3R5bGUsIHN0eWxlKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gbmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmV3TmFtZSkKLSAgewotICAgIFN0cmluZyBvbGROYW1lID0gbmFtZTsKLSAgICBuYW1lID0gbmV3TmFtZTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5PUEVSQVRJT05fX05BTUUsIG9sZE5hbWUsIG5hbWUpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNVbmRlZmluZWQoKQotICB7Ci0gICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VW5kZWZpbmVkKGJvb2xlYW4gbmV3VW5kZWZpbmVkKQotICB7Ci0gICAgYm9vbGVhbiBvbGRVbmRlZmluZWQgPSB1bmRlZmluZWQ7Ci0gICAgdW5kZWZpbmVkID0gbmV3VW5kZWZpbmVkOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fVU5ERUZJTkVELCBvbGRVbmRlZmluZWQsIHVuZGVmaW5lZCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgSW5wdXQgZ2V0RUlucHV0KCkKLSAgewotICAgIHJldHVybiBlSW5wdXQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldEVJbnB1dChJbnB1dCBuZXdFSW5wdXQsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpCi0gIHsKLSAgICBJbnB1dCBvbGRFSW5wdXQgPSBlSW5wdXQ7Ci0gICAgZUlucHV0ID0gbmV3RUlucHV0OwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICB7Ci0gICAgICBFTm90aWZpY2F0aW9uSW1wbCBub3RpZmljYXRpb24gPSBuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FSU5QVVQsIG9sZEVJbnB1dCwgbmV3RUlucHV0KTsKLSAgICAgIGlmIChtc2dzID09IG51bGwpCi0gICAgICAgIG1zZ3MgPSBub3RpZmljYXRpb247Ci0gICAgICBlbHNlCi0gICAgICAgIG1zZ3MuYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBtc2dzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFSW5wdXQoSW5wdXQgbmV3RUlucHV0KQotICB7Ci0gICAgaWYgKG5ld0VJbnB1dCAhPSBlSW5wdXQpCi0gICAgewotICAgICAgTm90aWZpY2F0aW9uQ2hhaW4gbXNncyA9IG51bGw7Ci0gICAgICBpZiAoZUlucHV0ICE9IG51bGwpCi0gICAgICAgIG1zZ3MgPSAoKEludGVybmFsRU9iamVjdCllSW5wdXQpLmVJbnZlcnNlUmVtb3ZlKHRoaXMsIEVPUFBPU0lURV9GRUFUVVJFX0JBU0UgLSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VJTlBVVCwgbnVsbCwgbXNncyk7Ci0gICAgICBpZiAobmV3RUlucHV0ICE9IG51bGwpCi0gICAgICAgIG1zZ3MgPSAoKEludGVybmFsRU9iamVjdCluZXdFSW5wdXQpLmVJbnZlcnNlQWRkKHRoaXMsIEVPUFBPU0lURV9GRUFUVVJFX0JBU0UgLSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VJTlBVVCwgbnVsbCwgbXNncyk7Ci0gICAgICBtc2dzID0gYmFzaWNTZXRFSW5wdXQobmV3RUlucHV0LCBtc2dzKTsKLSAgICAgIGlmIChtc2dzICE9IG51bGwpCi0gICAgICAgIG1zZ3MuZGlzcGF0Y2goKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VJTlBVVCwgbmV3RUlucHV0LCBuZXdFSW5wdXQpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE91dHB1dCBnZXRFT3V0cHV0KCkKLSAgewotICAgIHJldHVybiBlT3V0cHV0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gYmFzaWNTZXRFT3V0cHV0KE91dHB1dCBuZXdFT3V0cHV0LCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKQotICB7Ci0gICAgT3V0cHV0IG9sZEVPdXRwdXQgPSBlT3V0cHV0OwotICAgIGVPdXRwdXQgPSBuZXdFT3V0cHV0OwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICB7Ci0gICAgICBFTm90aWZpY2F0aW9uSW1wbCBub3RpZmljYXRpb24gPSBuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FT1VUUFVULCBvbGRFT3V0cHV0LCBuZXdFT3V0cHV0KTsKLSAgICAgIGlmIChtc2dzID09IG51bGwpCi0gICAgICAgIG1zZ3MgPSBub3RpZmljYXRpb247Ci0gICAgICBlbHNlCi0gICAgICAgIG1zZ3MuYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBtc2dzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFT3V0cHV0KE91dHB1dCBuZXdFT3V0cHV0KQotICB7Ci0gICAgaWYgKG5ld0VPdXRwdXQgIT0gZU91dHB1dCkKLSAgICB7Ci0gICAgICBOb3RpZmljYXRpb25DaGFpbiBtc2dzID0gbnVsbDsKLSAgICAgIGlmIChlT3V0cHV0ICE9IG51bGwpCi0gICAgICAgIG1zZ3MgPSAoKEludGVybmFsRU9iamVjdCllT3V0cHV0KS5lSW52ZXJzZVJlbW92ZSh0aGlzLCBFT1BQT1NJVEVfRkVBVFVSRV9CQVNFIC0gV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FT1VUUFVULCBudWxsLCBtc2dzKTsKLSAgICAgIGlmIChuZXdFT3V0cHV0ICE9IG51bGwpCi0gICAgICAgIG1zZ3MgPSAoKEludGVybmFsRU9iamVjdCluZXdFT3V0cHV0KS5lSW52ZXJzZUFkZCh0aGlzLCBFT1BQT1NJVEVfRkVBVFVSRV9CQVNFIC0gV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FT1VUUFVULCBudWxsLCBtc2dzKTsKLSAgICAgIG1zZ3MgPSBiYXNpY1NldEVPdXRwdXQobmV3RU91dHB1dCwgbXNncyk7Ci0gICAgICBpZiAobXNncyAhPSBudWxsKQotICAgICAgICBtc2dzLmRpc3BhdGNoKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FT1VUUFVULCBuZXdFT3V0cHV0LCBuZXdFT3V0cHV0KSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFRmF1bHRzKCkKLSAgewotICAgIGlmIChlRmF1bHRzID09IG51bGwpCi0gICAgewotICAgICAgZUZhdWx0cyA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChGYXVsdC5jbGFzcywgdGhpcywgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FRkFVTFRTKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVGYXVsdHM7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFUGFyYW1ldGVyT3JkZXJpbmcoKQotICB7Ci0gICAgaWYgKGVQYXJhbWV0ZXJPcmRlcmluZyA9PSBudWxsKQotICAgIHsKLSAgICAgIGVQYXJhbWV0ZXJPcmRlcmluZyA9IG5ldyBFT2JqZWN0UmVzb2x2aW5nRUxpc3QoUGFydC5jbGFzcywgdGhpcywgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVQYXJhbWV0ZXJPcmRlcmluZzsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBBZGQgYSBmYXVsdCBtZXNzYWdlIHRoYXQgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcwotICAgKiBvcGVyYXRpb24uCi0gICAqIEBwYXJhbSBmYXVsdCB0aGUgbmV3IGZhdWx0IG1lc3NhZ2UKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRGYXVsdChqYXZheC53c2RsLkZhdWx0IGZhdWx0KQotICB7Ci0gICAgZ2V0RUZhdWx0cygpLmFkZCgoRmF1bHQpZmF1bHQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEdldCB0aGUgc3BlY2lmaWVkIGZhdWx0IG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBkZXNpcmVkIGZhdWx0IG1lc3NhZ2UuCi0gICAqIEByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgZmF1bHQgbWVzc2FnZSwgb3IgbnVsbCBpZiB0aGVyZSB3YXNuJ3QKLSAgICogYW55IG1hdGNoaW5nIG1lc3NhZ2UKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5GYXVsdCBnZXRGYXVsdChTdHJpbmcgbmFtZSkKLSAgewotICAgIEZhdWx0IHJlc3VsdCA9IG51bGw7Ci0gICAgZm9yIChJdGVyYXRvciBpID0gZ2V0RUZhdWx0cygpLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBGYXVsdCBmYXVsdCA9IChGYXVsdClpLm5leHQoKTsKLSAgICAgIGlmIChuYW1lLmVxdWFscyhmYXVsdC5nZXROYW1lKCkpKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBmYXVsdDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogR2V0IGFsbCB0aGUgZmF1bHQgbWVzc2FnZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3BlcmF0aW9uLgotICAgKiBAcmV0dXJuIG5hbWVzIG9mIGZhdWx0IG1lc3NhZ2VzCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIE1hcCBnZXRGYXVsdHMoKQotICB7Ci0gICAgSGFzaE1hcCBoYXNoTWFwID0gbmV3IEhhc2hNYXAoKTsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSBnZXRFRmF1bHRzKCkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIEZhdWx0IGZhdWx0ID0gKEZhdWx0KWkubmV4dCgpOwotICAgICAgaGFzaE1hcC5wdXQoZmF1bHQuZ2V0TmFtZSgpLCBmYXVsdCk7Ci0gICAgfQotICAgIHJldHVybiBoYXNoTWFwOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFJldHVybnMgYSBjb2xsZWN0aW9uIG9mIFBhcnQgbmFtZXMuIE5vdGUgdGhhdCAKLSAgICogZ2V0UGFyYW1ldGVyRU9yZGVyaW5nKCkgcmV0dXJucyBhIGNvbGxlY3Rpb24gb2YgUGFydHMuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0UGFyYW1ldGVyT3JkZXJpbmcoKQotICB7Ci0gICAgcGFyYW1ldGVyT3JkZXJpbmcgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgZm9yIChJdGVyYXRvciBpID0gZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBQYXJ0IHBhcnQgPSAoUGFydClpLm5leHQoKTsKLSAgICAgICAgcGFyYW1ldGVyT3JkZXJpbmcuYWRkKHBhcnQuZ2V0TmFtZSgpKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgLy8gVEJEIC0gaGFuZGxlIGV4Y2VwdGlvbgotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcGFyYW1ldGVyT3JkZXJpbmcuaXNFbXB0eSgpID8gbnVsbCA6IHBhcmFtZXRlck9yZGVyaW5nOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UGFyYW1ldGVyT3JkZXJpbmcoTGlzdCBwYXJhbWV0ZXJPcmRlcikKLSAgewotICAgIHBhcmFtZXRlck9yZGVyaW5nID0gcGFyYW1ldGVyT3JkZXI7Ci0gICAgZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCkuY2xlYXIoKTsKLSAgICBpZiAocGFyYW1ldGVyT3JkZXIgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmb3IgKEl0ZXJhdG9yIGkgPSBwYXJhbWV0ZXJPcmRlci5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIC8vIEtCOiBXZSBzaG91bGQgYmUgcmVzb2x2aW5nIHBhcnRzIGJhc2VkIG9uIHRoZSBwYXJ0IG5hbWVzIGluIHBhcmFtZXRlck9yZGVyLgotICAgICAgICBQYXJ0IHBhcnQgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlUGFydCgpOwotICAgICAgICBwYXJ0LnNldE5hbWUoKFN0cmluZylpLm5leHQoKSk7Ci0gICAgICAgIGdldEVQYXJhbWV0ZXJPcmRlcmluZygpLmFkZChwYXJ0KTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5JbnB1dCBnZXRJbnB1dCgpCi0gIHsKLSAgICByZXR1cm4gZ2V0RUlucHV0KCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRJbnB1dChqYXZheC53c2RsLklucHV0IGlucHV0KQotICB7Ci0gICAgc2V0RUlucHV0KChJbnB1dClpbnB1dCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5PdXRwdXQgZ2V0T3V0cHV0KCkKLSAgewotICAgIHJldHVybiBnZXRFT3V0cHV0KCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRPdXRwdXQoamF2YXgud3NkbC5PdXRwdXQgb3V0cHV0KQotICB7Ci0gICAgc2V0RU91dHB1dCgoT3V0cHV0KW91dHB1dCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBlSW52ZXJzZVJlbW92ZShJbnRlcm5hbEVPYmplY3Qgb3RoZXJFbmQsIGludCBmZWF0dXJlSUQsIE5vdGlmaWNhdGlvbkNoYWluIG1zZ3MpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fRUlOUFVUOgotICAgICAgcmV0dXJuIGJhc2ljU2V0RUlucHV0KG51bGwsIG1zZ3MpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VPVVRQVVQ6Ci0gICAgICByZXR1cm4gYmFzaWNTZXRFT3V0cHV0KG51bGwsIG1zZ3MpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VGQVVMVFM6Ci0gICAgICByZXR1cm4gKChJbnRlcm5hbEVMaXN0KWdldEVGYXVsdHMoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUludmVyc2VSZW1vdmUob3RoZXJFbmQsIGZlYXR1cmVJRCwgbXNncyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fU1RZTEU6Ci0gICAgICByZXR1cm4gZ2V0U3R5bGUoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19OQU1FOgotICAgICAgcmV0dXJuIGdldE5hbWUoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19VTkRFRklORUQ6Ci0gICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IEJvb2xlYW4uVFJVRSA6IEJvb2xlYW4uRkFMU0U7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fRUlOUFVUOgotICAgICAgcmV0dXJuIGdldEVJbnB1dCgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VPVVRQVVQ6Ci0gICAgICByZXR1cm4gZ2V0RU91dHB1dCgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VGQVVMVFM6Ci0gICAgICByZXR1cm4gZ2V0RUZhdWx0cygpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkc6Ci0gICAgICByZXR1cm4gZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19TVFlMRToKLSAgICAgIHNldFN0eWxlKChPcGVyYXRpb25UeXBlKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19OQU1FOgotICAgICAgc2V0TmFtZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19VTkRFRklORUQ6Ci0gICAgICBzZXRVbmRlZmluZWQoKChCb29sZWFuKW5ld1ZhbHVlKS5ib29sZWFuVmFsdWUoKSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fRUlOUFVUOgotICAgICAgc2V0RUlucHV0KChJbnB1dCluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fRU9VVFBVVDoKLSAgICAgIHNldEVPdXRwdXQoKE91dHB1dCluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fRUZBVUxUUzoKLSAgICAgIGdldEVGYXVsdHMoKS5jbGVhcigpOwotICAgICAgZ2V0RUZhdWx0cygpLmFkZEFsbCgoQ29sbGVjdGlvbiluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fRVBBUkFNRVRFUl9PUkRFUklORzoKLSAgICAgIGdldEVQYXJhbWV0ZXJPcmRlcmluZygpLmNsZWFyKCk7Ci0gICAgICBnZXRFUGFyYW1ldGVyT3JkZXJpbmcoKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19TVFlMRToKLSAgICAgIHNldFN0eWxlKFNUWUxFX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19OQU1FOgotICAgICAgc2V0TmFtZShOQU1FX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19VTkRFRklORUQ6Ci0gICAgICBzZXRVbmRlZmluZWQoVU5ERUZJTkVEX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FSU5QVVQ6Ci0gICAgICBzZXRFSW5wdXQoKElucHV0KW51bGwpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VPVVRQVVQ6Ci0gICAgICBzZXRFT3V0cHV0KChPdXRwdXQpbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fRUZBVUxUUzoKLSAgICAgIGdldEVGYXVsdHMoKS5jbGVhcigpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkc6Ci0gICAgICBnZXRFUGFyYW1ldGVyT3JkZXJpbmcoKS5jbGVhcigpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fU1RZTEU6Ci0gICAgICByZXR1cm4gU1RZTEVfRURFRkFVTFQgPT0gbnVsbCA/IHN0eWxlICE9IG51bGwgOiAhU1RZTEVfRURFRkFVTFQuZXF1YWxzKHN0eWxlKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19OQU1FOgotICAgICAgcmV0dXJuIE5BTUVfRURFRkFVTFQgPT0gbnVsbCA/IG5hbWUgIT0gbnVsbCA6ICFOQU1FX0VERUZBVUxULmVxdWFscyhuYW1lKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19VTkRFRklORUQ6Ci0gICAgICByZXR1cm4gdW5kZWZpbmVkICE9IFVOREVGSU5FRF9FREVGQVVMVDsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FSU5QVVQ6Ci0gICAgICByZXR1cm4gZUlucHV0ICE9IG51bGw7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fRU9VVFBVVDoKLSAgICAgIHJldHVybiBlT3V0cHV0ICE9IG51bGw7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTl9fRUZBVUxUUzoKLSAgICAgIHJldHVybiBlRmF1bHRzICE9IG51bGwgJiYgIWVGYXVsdHMuaXNFbXB0eSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5PUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkc6Ci0gICAgICByZXR1cm4gZVBhcmFtZXRlck9yZGVyaW5nICE9IG51bGwgJiYgIWVQYXJhbWV0ZXJPcmRlcmluZy5pc0VtcHR5KCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBpZiAoZUlzUHJveHkoKSkKLSAgICAgIHJldHVybiBzdXBlci50b1N0cmluZygpOwotCi0gICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiIChzdHlsZTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKHN0eWxlKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIG5hbWU6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChuYW1lKTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIHVuZGVmaW5lZDogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKHVuZGVmaW5lZCk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vIAotICAvLyBSZWNvbmNpbGUgbWV0aG9kcwotICAvLwotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIGlmIChjaGFuZ2VkRWxlbWVudC5oYXNBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSkpCi0gICAgewotICAgICAgU3RyaW5nIG5hbWUgPSBjaGFuZ2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSk7Ci0gICAgICBpZiAobmFtZSAhPSBudWxsKQotICAgICAgewotICAgICAgICBzZXROYW1lKG5hbWUpOwotICAgICAgfQotICAgIH0KLQotICAgIGlmIChjaGFuZ2VkRWxlbWVudC5oYXNBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5QQVJBTUVURVJfT1JERVJfQVRUUklCVVRFKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgcGFyYW1ldGVyT3JkZXIgPSBjaGFuZ2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5QQVJBTUVURVJfT1JERVJfQVRUUklCVVRFKTsKLSAgICAgIGlmIChwYXJhbWV0ZXJPcmRlciAhPSBudWxsKQotICAgICAgewotICAgICAgICBTdHJpbmdbXSBhcnJheSA9IHBhcmFtZXRlck9yZGVyLnNwbGl0KCIgIik7Ci0gICAgICAgIExpc3QgbCA9IEFycmF5cy5hc0xpc3QoYXJyYXkpOwotICAgICAgICBzZXRQYXJhbWV0ZXJPcmRlcmluZyhsKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGVsZW1lbnRDaGFuZ2VkKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBzdHlsZSA9IGRlZHVjZU9wZXJhdGlvblR5cGUoY2hhbmdlZEVsZW1lbnQpOwotICAgIHN1cGVyLmVsZW1lbnRDaGFuZ2VkKGNoYW5nZWRFbGVtZW50KTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoRWxlbWVudCBjaGlsZCwgQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCk7Ci0KLSAgICBzd2l0Y2ggKFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoY2hpbGQpKQotICAgIHsKLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5JTlBVVDoKLSAgICAgIHsKLSAgICAgICAgSW5wdXQgaW5wdXQgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlSW5wdXQoKTsKLSAgICAgICAgaW5wdXQuc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihkZWZpbml0aW9uKTsKLSAgICAgICAgaW5wdXQuc2V0RWxlbWVudChjaGlsZCk7Ci0gICAgICAgIHNldElucHV0KGlucHV0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExDb25zdGFudHMuT1VUUFVUOgotICAgICAgewotICAgICAgICBPdXRwdXQgb3V0cHV0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZU91dHB1dCgpOwotICAgICAgICBvdXRwdXQuc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihkZWZpbml0aW9uKTsKLSAgICAgICAgb3V0cHV0LnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgICBzZXRPdXRwdXQob3V0cHV0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExDb25zdGFudHMuRkFVTFQ6Ci0gICAgICB7Ci0gICAgICAgIEZhdWx0IGZhdWx0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUZhdWx0KCk7Ci0gICAgICAgIGZhdWx0LnNldEVuY2xvc2luZ0RlZmluaXRpb24oZGVmaW5pdGlvbik7Ci0gICAgICAgIGZhdWx0LnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgICBhZGRGYXVsdChmYXVsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgIHsKLSAgICAgICAgc3VwZXIuaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChjaGlsZCwgcmVtYWluaW5nTW9kZWxPYmplY3RzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlUmVjb25jaWxpYXRpb24oQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSByZW1haW5pbmdNb2RlbE9iamVjdHMuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIHJlbW92ZSh0aGlzLCBpLm5leHQoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcmVtb3ZlKE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBtb2RlbE9iamVjdCkKLSAgewotICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSAoT3BlcmF0aW9uKWNvbXBvbmVudDsKLSAgICBpZiAobW9kZWxPYmplY3QgaW5zdGFuY2VvZiBJbnB1dCkKLSAgICB7Ci0gICAgICBvcGVyYXRpb24uc2V0RUlucHV0KG51bGwpOwotICAgIH0KLSAgICBlbHNlIGlmIChtb2RlbE9iamVjdCBpbnN0YW5jZW9mIE91dHB1dCkKLSAgICB7Ci0gICAgICBvcGVyYXRpb24uc2V0RU91dHB1dChudWxsKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobW9kZWxPYmplY3QgaW5zdGFuY2VvZiBGYXVsdCkKLSAgICB7Ci0gICAgICBvcGVyYXRpb24uZ2V0RUZhdWx0cygpLnJlbW92ZShtb2RlbE9iamVjdCk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIENvbGxlY3Rpb24gZ2V0TW9kZWxPYmplY3RzKE9iamVjdCBjb21wb25lbnQpCi0gIHsKLSAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gKE9wZXJhdGlvbiljb21wb25lbnQ7Ci0KLSAgICBMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICBpZiAob3BlcmF0aW9uLmdldEVJbnB1dCgpICE9IG51bGwpCi0gICAgewotICAgICAgbGlzdC5hZGQob3BlcmF0aW9uLmdldEVJbnB1dCgpKTsKLSAgICB9Ci0KLSAgICBpZiAob3BlcmF0aW9uLmdldEVPdXRwdXQoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIGxpc3QuYWRkKG9wZXJhdGlvbi5nZXRFT3V0cHV0KCkpOwotICAgIH0KLQotICAgIGxpc3QuYWRkQWxsKG9wZXJhdGlvbi5nZXRFRmF1bHRzKCkpOwotCi0gICAgcmV0dXJuIGxpc3Q7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBudWxsIHx8IGVBdHRyaWJ1dGUgPT0gV1NETFBhY2thZ2UuTGl0ZXJhbHMuT1BFUkFUSU9OX19OQU1FKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFdTRExDb25zdGFudHMuTkFNRV9BVFRSSUJVVEUsIGdldE5hbWUoKSk7Ci0gICAgICBpZiAoZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5PUEVSQVRJT05fX1NUWUxFKQotICAgICAgewotICAgICAgICBPcGVyYXRpb25UeXBlIHRhcmdldFR5cGUgPSBnZXRTdHlsZSgpOwotICAgICAgICBPcGVyYXRpb25UeXBlIGN1cnJlbnRUeXBlID0gZGVkdWNlT3BlcmF0aW9uVHlwZSh0aGVFbGVtZW50KTsKLSAgICAgICAgaWYgKHRhcmdldFR5cGUuZXF1YWxzKGN1cnJlbnRUeXBlKSkKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGVsc2UgaWYgKCh0YXJnZXRUeXBlLmVxdWFscyhPcGVyYXRpb25UeXBlLlJFUVVFU1RfUkVTUE9OU0UpIHx8IHRhcmdldFR5cGUuZXF1YWxzKE9wZXJhdGlvblR5cGUuU09MSUNJVF9SRVNQT05TRSkpCi0gICAgICAgICAgJiYgKGN1cnJlbnRUeXBlLmVxdWFscyhPcGVyYXRpb25UeXBlLlJFUVVFU1RfUkVTUE9OU0UpIHx8IGN1cnJlbnRUeXBlLmVxdWFscyhPcGVyYXRpb25UeXBlLlNPTElDSVRfUkVTUE9OU0UpKSkKLSAgICAgICAgICByZW9yZGVyQ2hpbGRyZW4oKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHN0eWxlID0gZGVkdWNlT3BlcmF0aW9uVHlwZSh0aGVFbGVtZW50KTsgLy8gc3dpdGNoIGJhY2suIG5vIHN1cHBvcnQgZm9yIHRoZSBvdGhlciB0eXBlcwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZVJlZmVyZW5jZShFUmVmZXJlbmNlIGVSZWZlcmVuY2UpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIHN1cGVyLmNoYW5nZVJlZmVyZW5jZShlUmVmZXJlbmNlKTsKLSAgICBFbGVtZW50IHRoZUVsZW1lbnQgPSBnZXRFbGVtZW50KCk7Ci0gICAgaWYgKHRoZUVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZVJlZmVyZW5jZSA9PSBudWxsIHx8IGVSZWZlcmVuY2UgPT0gV1NETFBhY2thZ2UuTGl0ZXJhbHMuT1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HKQotICAgICAgewotICAgICAgICAvLyBCdWlsZCB1cCBhIHN0cmluZyBvZiBjb25jYXRlbmF0ZWQgcGFydCBuYW1lcyAocGFyYW1ldGVyT3JkZXIpIGZyb20gZVBhcmFtZXRlck9yZGVyaW5nLgotCi0gICAgICAgIEl0ZXJhdG9yIHBhcnRzID0gZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgUGFydCBwYXJ0ID0gbnVsbDsKLSAgICAgICAgU3RyaW5nIHBhcnROYW1lcyA9ICIiOwotICAgICAgICB3aGlsZSAocGFydHMuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgcGFydCA9IChQYXJ0KXBhcnRzLm5leHQoKTsKLSAgICAgICAgICBwYXJ0TmFtZXMgPSBwYXJ0TmFtZXMgKyBwYXJ0LmdldE5hbWUoKSArICIgIjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgocGFydE5hbWVzID0gcGFydE5hbWVzLnRyaW0oKSkubGVuZ3RoKCkgIT0gMCkKLSAgICAgICAgICAvLyBVcGRhdGUgdGhlIGVsZW1lbnQncyBhdHRydWJ1dGUKLSAgICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFdTRExDb25zdGFudHMuUEFSQU1FVEVSX09SREVSX0FUVFJJQlVURSwgcGFydE5hbWVzKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgLy8KLSAgfQotCi0gIC8vIFN3aXRjaCA8aW5wdXQ+IGFuZCA8b3V0cHV0PgotICBwcml2YXRlIHZvaWQgcmVvcmRlckNoaWxkcmVuKCkKLSAgewotICAgIC8vIEZpbmQgb3V0IHRoZSBwb3NpdGlvbnMgb2YgPGlucHV0PiBhbmQgPG91dHB1dD4KLSAgICBOb2RlIGlucHV0ID0gbnVsbDsKLSAgICBOb2RlIG91dHB1dCA9IG51bGw7Ci0gICAgTm9kZSByZWZlcmVuY2UgPSBudWxsOwotICAgIGZvciAoTm9kZSBjdXJyZW50ID0gZ2V0RWxlbWVudCgpLmdldEZpcnN0Q2hpbGQoKTsgY3VycmVudCAhPSBudWxsOyBjdXJyZW50ID0gY3VycmVudC5nZXROZXh0U2libGluZygpKQotICAgIHsKLSAgICAgIGlmIChjdXJyZW50LmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgICB7Ci0gICAgICAgIGlmIChXU0RMQ29uc3RhbnRzLklOUFVUID09IFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoKEVsZW1lbnQpY3VycmVudCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnB1dCA9IGN1cnJlbnQ7Ci0gICAgICAgICAgaWYgKG91dHB1dCAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGNzLi4gZm9yIHNhZmV0eSB1c2UgY3VycmVudC5nZXROZXh0U2libGluZygpIGluc3RlYWQgb2Ygbm9kZUxpc3QuaXRlbShpKzEpICAgICAgICAgICAgCi0gICAgICAgICAgICByZWZlcmVuY2UgPSBjdXJyZW50LmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFdTRExDb25zdGFudHMuT1VUUFVUID09IFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoKEVsZW1lbnQpY3VycmVudCkpCi0gICAgICAgIHsKLSAgICAgICAgICBvdXRwdXQgPSBjdXJyZW50OwotICAgICAgICAgIGlmIChpbnB1dCAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGNzLi4gZm9yIHNhZmV0eSB1c2UgY3VycmVudC5nZXROZXh0U2libGluZygpIGluc3RlYWQgb2Ygbm9kZUxpc3QuaXRlbShpKzEpICAgICAgICAgICAgCi0gICAgICAgICAgICByZWZlcmVuY2UgPSBjdXJyZW50LmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSAvLyBlbmQgZm9yCi0KLSAgICBpZiAoaW5wdXQgIT0gbnVsbCAmJiBvdXRwdXQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBFbGVtZW50IHBhcmVudCA9IGdldEVsZW1lbnQoKTsKLSAgICAgIGlmIChnZXRTdHlsZSgpLmVxdWFscyhPcGVyYXRpb25UeXBlLlJFUVVFU1RfUkVTUE9OU0UpKQotICAgICAgewotICAgICAgICAvLyBjdXJyZW50IG9yZGVyOiA8b3V0cHV0PiA8aW5wdXQ+Ci0gICAgICAgIHN3aXRjaENoaWxkcmVuKHBhcmVudCwgb3V0cHV0LCBpbnB1dCwgcmVmZXJlbmNlKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGdldFN0eWxlKCkuZXF1YWxzKE9wZXJhdGlvblR5cGUuU09MSUNJVF9SRVNQT05TRSkpCi0gICAgICB7Ci0gICAgICAgIC8vIGN1cnJlbnQgb3JkZXI6IDxpbnB1dD4gPG91dHB1dD4KLSAgICAgICAgc3dpdGNoQ2hpbGRyZW4ocGFyZW50LCBpbnB1dCwgb3V0cHV0LCByZWZlcmVuY2UpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBzd2l0Y2hDaGlsZHJlbihOb2RlIHBhcmVudCwgTm9kZSBjaGlsZDEsIE5vZGUgY2hpbGQyLCBOb2RlIG5leHRPZkNoaWxkMikKLSAgewotICAgIC8vIGN1cnJlbnQgbm9kZSBzZXF1ZW5jZTogPGNoaWxkMT4gPGNoaWxkMj4gPG5leHRPZkNoaWxkMj4KLSAgICBuaWNlUmVtb3ZlQ2hpbGQocGFyZW50LCBjaGlsZDIpOwotICAgIG5pY2VJbnNlcnRCZWZvcmUocGFyZW50LCBjaGlsZDIsIGNoaWxkMSk7Ci0gICAgbmljZVJlbW92ZUNoaWxkKHBhcmVudCwgY2hpbGQxKTsKLSAgICBuaWNlSW5zZXJ0QmVmb3JlKHBhcmVudCwgY2hpbGQxLCBuZXh0T2ZDaGlsZDIpOwotICB9Ci0KLSAgcHVibGljIEVsZW1lbnQgY3JlYXRlRWxlbWVudCgpCi0gIHsKLSAgICBFbGVtZW50IG5ld0VsZW1lbnQgPSBjcmVhdGVFbGVtZW50KFdTRExDb25zdGFudHMuT1BFUkFUSU9OKTsKLSAgICBzZXRFbGVtZW50KG5ld0VsZW1lbnQpOwotCi0gICAgSW5wdXQgaW5wdXQgPSBnZXRFSW5wdXQoKTsKLSAgICBpZiAoaW5wdXQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBFbGVtZW50IGNoaWxkID0gKChJbnB1dEltcGwpaW5wdXQpLmNyZWF0ZUVsZW1lbnQoKTsKLSAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOwotICAgIH0KLQotICAgIE91dHB1dCBvdXRwdXQgPSBnZXRFT3V0cHV0KCk7Ci0gICAgaWYgKG91dHB1dCAhPSBudWxsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgY2hpbGQgPSAoKE91dHB1dEltcGwpb3V0cHV0KS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICB9Ci0KLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGdldEVGYXVsdHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgRmF1bHQgZmF1bHQgPSAoRmF1bHQpaXRlcmF0b3IubmV4dCgpOwotICAgICAgRWxlbWVudCBjaGlsZCA9ICgoRmF1bHRJbXBsKWZhdWx0KS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotCi19IC8vT3BlcmF0aW9uSW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL091dHB1dEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9PdXRwdXRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYWM4MTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL091dHB1dEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3V0cHV0PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgT3V0cHV0SW1wbCBleHRlbmRzIE1lc3NhZ2VSZWZlcmVuY2VJbXBsIGltcGxlbWVudHMgT3V0cHV0Ci17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIE91dHB1dEltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLk9VVFBVVDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLk1lc3NhZ2UgZ2V0TWVzc2FnZSgpCi0gIHsKLSAgICByZXR1cm4gZ2V0RU1lc3NhZ2UoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE1lc3NhZ2UoTWVzc2FnZSBtZXNzYWdlKQotICB7Ci0gICAgc2V0RU1lc3NhZ2UoKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpbWVzc2FnZSk7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudCBjcmVhdGVFbGVtZW50KCkKLSAgewotICAgIEVsZW1lbnQgbmV3RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoV1NETENvbnN0YW50cy5PVVRQVVQpOwotICAgIHNldEVsZW1lbnQobmV3RWxlbWVudCk7Ci0gICAgcmV0dXJuIG5ld0VsZW1lbnQ7Ci0gIH0KLX0gLy9PdXRwdXRJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvUGFydEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9QYXJ0SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjUxZDU5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9QYXJ0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzYxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlBhcnRJbXBsI2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuUGFydEltcGwjZ2V0RWxlbWVudE5hbWUgPGVtPkVsZW1lbnQgTmFtZTwvZW0+fTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5QYXJ0SW1wbCNnZXRUeXBlTmFtZSA8ZW0+VHlwZSBOYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlBhcnRJbXBsI2dldFR5cGVEZWZpbml0aW9uIDxlbT5UeXBlIERlZmluaXRpb248L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuUGFydEltcGwjZ2V0RWxlbWVudERlY2xhcmF0aW9uIDxlbT5FbGVtZW50IERlY2xhcmF0aW9uPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlBhcnRJbXBsI2dldEVNZXNzYWdlIDxlbT5FTWVzc2FnZTwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFBhcnRJbXBsIGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnRJbXBsIGltcGxlbWVudHMgUGFydAotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWUoKSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWUgPSBOQU1FX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RWxlbWVudE5hbWUoKSA8ZW0+RWxlbWVudCBOYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFbGVtZW50TmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgUU5hbWUgRUxFTUVOVF9OQU1FX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RWxlbWVudE5hbWUoKSA8ZW0+RWxlbWVudCBOYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFbGVtZW50TmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBRTmFtZSBlbGVtZW50TmFtZSA9IEVMRU1FTlRfTkFNRV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFR5cGVOYW1lKCkgPGVtPlR5cGUgTmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0VHlwZU5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFFOYW1lIFRZUEVfTkFNRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFR5cGVOYW1lKCkgPGVtPlR5cGUgTmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0VHlwZU5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgUU5hbWUgdHlwZU5hbWUgPSBUWVBFX05BTUVfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFR5cGVEZWZpbml0aW9uKCkgPGVtPlR5cGUgRGVmaW5pdGlvbjwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0VHlwZURlZmluaXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgWFNEVHlwZURlZmluaXRpb24gdHlwZURlZmluaXRpb247Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEVsZW1lbnREZWNsYXJhdGlvbigpIDxlbT5FbGVtZW50IERlY2xhcmF0aW9uPC9lbT59JyByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFbGVtZW50RGVjbGFyYXRpb24oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgWFNERWxlbWVudERlY2xhcmF0aW9uIGVsZW1lbnREZWNsYXJhdGlvbjsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RU1lc3NhZ2UoKSA8ZW0+RU1lc3NhZ2U8L2VtPn0nIHJlZmVyZW5jZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVNZXNzYWdlKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIE1lc3NhZ2UgZU1lc3NhZ2U7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfVVJJX1BBUlRfRVhURU5TSU9OUyA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3BhcnQtZXh0ZW5zaW9ucy8iOwotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfTUVTU0FHRSA9ICJtZXNzYWdlIjsKLQotICBwcml2YXRlIE1hcCBleHRlbnNpb25BdHRyaWJ1dGVzID0gbmV3IEV4dGVuc2lvbkF0dHJpYnV0ZU1hcCgpOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIFBhcnRJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBXU0RMUGFja2FnZS5MaXRlcmFscy5QQVJUOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIG5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5ld05hbWUpCi0gIHsKLSAgICBTdHJpbmcgb2xkTmFtZSA9IG5hbWU7Ci0gICAgbmFtZSA9IG5ld05hbWU7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuUEFSVF9fTkFNRSwgb2xkTmFtZSwgbmFtZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUU5hbWUgZ2V0RWxlbWVudE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIGVsZW1lbnROYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbGVtZW50TmFtZShRTmFtZSBuZXdFbGVtZW50TmFtZSkKLSAgewotICAgIFFOYW1lIG9sZEVsZW1lbnROYW1lID0gZWxlbWVudE5hbWU7Ci0gICAgZWxlbWVudE5hbWUgPSBuZXdFbGVtZW50TmFtZTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5QQVJUX19FTEVNRU5UX05BTUUsIG9sZEVsZW1lbnROYW1lLCBlbGVtZW50TmFtZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUU5hbWUgZ2V0VHlwZU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHR5cGVOYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUeXBlTmFtZShRTmFtZSBuZXdUeXBlTmFtZSkKLSAgewotICAgIFFOYW1lIG9sZFR5cGVOYW1lID0gdHlwZU5hbWU7Ci0gICAgdHlwZU5hbWUgPSBuZXdUeXBlTmFtZTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5QQVJUX19UWVBFX05BTUUsIG9sZFR5cGVOYW1lLCB0eXBlTmFtZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgWFNEVHlwZURlZmluaXRpb24gZ2V0VHlwZURlZmluaXRpb24oKQotICB7Ci0gICAgaWYgKHR5cGVEZWZpbml0aW9uICE9IG51bGwgJiYgdHlwZURlZmluaXRpb24uZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkVHlwZURlZmluaXRpb24gPSAoSW50ZXJuYWxFT2JqZWN0KXR5cGVEZWZpbml0aW9uOwotICAgICAgdHlwZURlZmluaXRpb24gPSAoWFNEVHlwZURlZmluaXRpb24pZVJlc29sdmVQcm94eShvbGRUeXBlRGVmaW5pdGlvbik7Ci0gICAgICBpZiAodHlwZURlZmluaXRpb24gIT0gb2xkVHlwZURlZmluaXRpb24pCi0gICAgICB7Ci0gICAgICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgV1NETFBhY2thZ2UuUEFSVF9fVFlQRV9ERUZJTklUSU9OLCBvbGRUeXBlRGVmaW5pdGlvbiwgdHlwZURlZmluaXRpb24pKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHR5cGVEZWZpbml0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgWFNEVHlwZURlZmluaXRpb24gYmFzaWNHZXRUeXBlRGVmaW5pdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdHlwZURlZmluaXRpb247Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFR5cGVEZWZpbml0aW9uKFhTRFR5cGVEZWZpbml0aW9uIG5ld1R5cGVEZWZpbml0aW9uKQotICB7Ci0gICAgWFNEVHlwZURlZmluaXRpb24gb2xkVHlwZURlZmluaXRpb24gPSB0eXBlRGVmaW5pdGlvbjsKLSAgICB0eXBlRGVmaW5pdGlvbiA9IG5ld1R5cGVEZWZpbml0aW9uOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLlBBUlRfX1RZUEVfREVGSU5JVElPTiwgb2xkVHlwZURlZmluaXRpb24sIHR5cGVEZWZpbml0aW9uKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBYU0RFbGVtZW50RGVjbGFyYXRpb24gZ2V0RWxlbWVudERlY2xhcmF0aW9uKCkKLSAgewotICAgIGlmIChlbGVtZW50RGVjbGFyYXRpb24gIT0gbnVsbCAmJiBlbGVtZW50RGVjbGFyYXRpb24uZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkRWxlbWVudERlY2xhcmF0aW9uID0gKEludGVybmFsRU9iamVjdCllbGVtZW50RGVjbGFyYXRpb247Ci0gICAgICBlbGVtZW50RGVjbGFyYXRpb24gPSAoWFNERWxlbWVudERlY2xhcmF0aW9uKWVSZXNvbHZlUHJveHkob2xkRWxlbWVudERlY2xhcmF0aW9uKTsKLSAgICAgIGlmIChlbGVtZW50RGVjbGFyYXRpb24gIT0gb2xkRWxlbWVudERlY2xhcmF0aW9uKQotICAgICAgewotICAgICAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwoCi0gICAgICAgICAgICB0aGlzLAotICAgICAgICAgICAgTm90aWZpY2F0aW9uLlJFU09MVkUsCi0gICAgICAgICAgICBXU0RMUGFja2FnZS5QQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OLAotICAgICAgICAgICAgb2xkRWxlbWVudERlY2xhcmF0aW9uLAotICAgICAgICAgICAgZWxlbWVudERlY2xhcmF0aW9uKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlbGVtZW50RGVjbGFyYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBYU0RFbGVtZW50RGVjbGFyYXRpb24gYmFzaWNHZXRFbGVtZW50RGVjbGFyYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGVsZW1lbnREZWNsYXJhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RWxlbWVudERlY2xhcmF0aW9uKFhTREVsZW1lbnREZWNsYXJhdGlvbiBuZXdFbGVtZW50RGVjbGFyYXRpb24pCi0gIHsKLSAgICBYU0RFbGVtZW50RGVjbGFyYXRpb24gb2xkRWxlbWVudERlY2xhcmF0aW9uID0gZWxlbWVudERlY2xhcmF0aW9uOwotICAgIGVsZW1lbnREZWNsYXJhdGlvbiA9IG5ld0VsZW1lbnREZWNsYXJhdGlvbjsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCgKLSAgICAgICAgdGhpcywKLSAgICAgICAgTm90aWZpY2F0aW9uLlNFVCwKLSAgICAgICAgV1NETFBhY2thZ2UuUEFSVF9fRUxFTUVOVF9ERUNMQVJBVElPTiwKLSAgICAgICAgb2xkRWxlbWVudERlY2xhcmF0aW9uLAotICAgICAgICBlbGVtZW50RGVjbGFyYXRpb24pKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE1lc3NhZ2UgZ2V0RU1lc3NhZ2UoKQotICB7Ci0gICAgaWYgKGVNZXNzYWdlICE9IG51bGwgJiYgZU1lc3NhZ2UuZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkRU1lc3NhZ2UgPSAoSW50ZXJuYWxFT2JqZWN0KWVNZXNzYWdlOwotICAgICAgZU1lc3NhZ2UgPSAoTWVzc2FnZSllUmVzb2x2ZVByb3h5KG9sZEVNZXNzYWdlKTsKLSAgICAgIGlmIChlTWVzc2FnZSAhPSBvbGRFTWVzc2FnZSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBXU0RMUGFja2FnZS5QQVJUX19FTUVTU0FHRSwgb2xkRU1lc3NhZ2UsIGVNZXNzYWdlKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlTWVzc2FnZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE1lc3NhZ2UgYmFzaWNHZXRFTWVzc2FnZSgpCi0gIHsKLSAgICByZXR1cm4gZU1lc3NhZ2U7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVNZXNzYWdlKE1lc3NhZ2UgbmV3RU1lc3NhZ2UpCi0gIHsKLSAgICBNZXNzYWdlIG9sZEVNZXNzYWdlID0gZU1lc3NhZ2U7Ci0gICAgZU1lc3NhZ2UgPSBuZXdFTWVzc2FnZTsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5QQVJUX19FTUVTU0FHRSwgb2xkRU1lc3NhZ2UsIGVNZXNzYWdlKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFeHRlbnNpb25BdHRyaWJ1dGUoUU5hbWUgbmFtZSwgUU5hbWUgdmFsdWUpCi0gIHsKLSAgICBTdHJpbmcgbG9jYWxOYW1lID0gbmFtZS5nZXRMb2NhbFBhcnQoKTsKLSAgICBpZiAobG9jYWxOYW1lID09IG51bGwpCi0gICAgICByZXR1cm47Ci0KLSAgICBpZiAodmFsdWUgPT0gbnVsbCkKLSAgICAgIGV4dGVuc2lvbkF0dHJpYnV0ZXMucmVtb3ZlKG5hbWUpOwotICAgIGVsc2UKLSAgICAgIGV4dGVuc2lvbkF0dHJpYnV0ZXMucHV0KG5hbWUsIHZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBJdGVyYXRvciBnZXRFeHRlbnNpb25BdHRyaWJ1dGVOYW1lcygpCi0gIHsKLSAgICBNYXAgbWFwID0gbmV3IEhhc2hNYXAoZXh0ZW5zaW9uQXR0cmlidXRlcyk7Ci0KLSAgICAvLyBBZGp1c3QgbWVzc2FnZU5hbWUgYXR0cmlidXRlCi0gICAgUU5hbWUgbWVzc2FnZU5hbWUgPSBnZXRNZXNzYWdlKCkgIT0gbnVsbCA/IGdldE1lc3NhZ2UoKS5nZXRRTmFtZSgpIDogbnVsbDsKLSAgICBpZiAobWVzc2FnZU5hbWUgIT0gbnVsbCkKLSAgICAgIG1hcC5wdXQobmV3IFFOYW1lKE5TX1VSSV9QQVJUX0VYVEVOU0lPTlMsIEFUVFJfTUVTU0FHRSksIG1lc3NhZ2VOYW1lKTsKLSAgICBlbHNlCi0gICAgICBtYXAucmVtb3ZlKG5ldyBRTmFtZShOU19VUklfUEFSVF9FWFRFTlNJT05TLCBBVFRSX01FU1NBR0UpKTsKLQotICAgIHJldHVybiBtYXAua2V5U2V0KCkuaXRlcmF0b3IoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZ2V0RXh0ZW5zaW9uQXR0cmlidXRlKFFOYW1lIG5hbWUpCi0gIHsKLSAgICBpZiAobmFtZS5lcXVhbHMobmV3IFFOYW1lKE5TX1VSSV9QQVJUX0VYVEVOU0lPTlMsIEFUVFJfTUVTU0FHRSkpKQotICAgICAgcmV0dXJuIGdldE1lc3NhZ2UoKSAhPSBudWxsID8gZ2V0TWVzc2FnZSgpLmdldFFOYW1lKCkgOiBudWxsOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAoUU5hbWUpZXh0ZW5zaW9uQXR0cmlidXRlcy5nZXQobmFtZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBBUlRfX05BTUU6Ci0gICAgICByZXR1cm4gZ2V0TmFtZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QQVJUX19FTEVNRU5UX05BTUU6Ci0gICAgICByZXR1cm4gZ2V0RWxlbWVudE5hbWUoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fVFlQRV9OQU1FOgotICAgICAgcmV0dXJuIGdldFR5cGVOYW1lKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBBUlRfX1RZUEVfREVGSU5JVElPTjoKLSAgICAgIGlmIChyZXNvbHZlKQotICAgICAgICByZXR1cm4gZ2V0VHlwZURlZmluaXRpb24oKTsKLSAgICAgIHJldHVybiBiYXNpY0dldFR5cGVEZWZpbml0aW9uKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBBUlRfX0VMRU1FTlRfREVDTEFSQVRJT046Ci0gICAgICBpZiAocmVzb2x2ZSkKLSAgICAgICAgcmV0dXJuIGdldEVsZW1lbnREZWNsYXJhdGlvbigpOwotICAgICAgcmV0dXJuIGJhc2ljR2V0RWxlbWVudERlY2xhcmF0aW9uKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBBUlRfX0VNRVNTQUdFOgotICAgICAgaWYgKHJlc29sdmUpCi0gICAgICAgIHJldHVybiBnZXRFTWVzc2FnZSgpOwotICAgICAgcmV0dXJuIGJhc2ljR2V0RU1lc3NhZ2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QQVJUX19OQU1FOgotICAgICAgc2V0TmFtZSgoU3RyaW5nKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fRUxFTUVOVF9OQU1FOgotICAgICAgc2V0RWxlbWVudE5hbWUoKFFOYW1lKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fVFlQRV9OQU1FOgotICAgICAgc2V0VHlwZU5hbWUoKFFOYW1lKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fVFlQRV9ERUZJTklUSU9OOgotICAgICAgc2V0VHlwZURlZmluaXRpb24oKFhTRFR5cGVEZWZpbml0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fRUxFTUVOVF9ERUNMQVJBVElPTjoKLSAgICAgIHNldEVsZW1lbnREZWNsYXJhdGlvbigoWFNERWxlbWVudERlY2xhcmF0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fRU1FU1NBR0U6Ci0gICAgICBzZXRFTWVzc2FnZSgoTWVzc2FnZSluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QQVJUX19OQU1FOgotICAgICAgc2V0TmFtZShOQU1FX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fRUxFTUVOVF9OQU1FOgotICAgICAgc2V0RWxlbWVudE5hbWUoRUxFTUVOVF9OQU1FX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fVFlQRV9OQU1FOgotICAgICAgc2V0VHlwZU5hbWUoVFlQRV9OQU1FX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fVFlQRV9ERUZJTklUSU9OOgotICAgICAgc2V0VHlwZURlZmluaXRpb24oKFhTRFR5cGVEZWZpbml0aW9uKW51bGwpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OOgotICAgICAgc2V0RWxlbWVudERlY2xhcmF0aW9uKChYU0RFbGVtZW50RGVjbGFyYXRpb24pbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBBUlRfX0VNRVNTQUdFOgotICAgICAgc2V0RU1lc3NhZ2UoKE1lc3NhZ2UpbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUEFSVF9fTkFNRToKLSAgICAgIHJldHVybiBOQU1FX0VERUZBVUxUID09IG51bGwgPyBuYW1lICE9IG51bGwgOiAhTkFNRV9FREVGQVVMVC5lcXVhbHMobmFtZSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBBUlRfX0VMRU1FTlRfTkFNRToKLSAgICAgIHJldHVybiBFTEVNRU5UX05BTUVfRURFRkFVTFQgPT0gbnVsbCA/IGVsZW1lbnROYW1lICE9IG51bGwgOiAhRUxFTUVOVF9OQU1FX0VERUZBVUxULmVxdWFscyhlbGVtZW50TmFtZSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBBUlRfX1RZUEVfTkFNRToKLSAgICAgIHJldHVybiBUWVBFX05BTUVfRURFRkFVTFQgPT0gbnVsbCA/IHR5cGVOYW1lICE9IG51bGwgOiAhVFlQRV9OQU1FX0VERUZBVUxULmVxdWFscyh0eXBlTmFtZSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBBUlRfX1RZUEVfREVGSU5JVElPTjoKLSAgICAgIHJldHVybiB0eXBlRGVmaW5pdGlvbiAhPSBudWxsOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OOgotICAgICAgcmV0dXJuIGVsZW1lbnREZWNsYXJhdGlvbiAhPSBudWxsOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QQVJUX19FTUVTU0FHRToKLSAgICAgIHJldHVybiBlTWVzc2FnZSAhPSBudWxsOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNZXNzYWdlKGphdmF4LndzZGwuTWVzc2FnZSBtZXNzYWdlKQotICB7Ci0gICAgc2V0RU1lc3NhZ2UoKE1lc3NhZ2UpbWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5NZXNzYWdlIGdldE1lc3NhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGdldEVNZXNzYWdlKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAobmFtZTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKG5hbWUpOwotICAgIHJlc3VsdC5hcHBlbmQoIiwgZWxlbWVudE5hbWU6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChlbGVtZW50TmFtZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCB0eXBlTmFtZTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKHR5cGVOYW1lKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIE1hcCBnZXRFeHRlbnNpb25BdHRyaWJ1dGVzKCkKLSAgewotICAgIHJldHVybiBleHRlbnNpb25BdHRyaWJ1dGVzOwotICB9Ci0KLSAgY2xhc3MgRXh0ZW5zaW9uQXR0cmlidXRlTWFwIGV4dGVuZHMgSGFzaE1hcAotICB7Ci0gICAgLyoqCi0gICAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gICAgRXh0ZW5zaW9uQXR0cmlidXRlTWFwKCkKLSAgICB7Ci0gICAgICBzdXBlcigpOwotICAgIH0KLQotICAgIHB1YmxpYyBPYmplY3QgcHV0KE9iamVjdCBrZXksIE9iamVjdCB2YWwpCi0gICAgewotICAgICAgUU5hbWUgbmFtZSA9IChRTmFtZSlrZXk7Ci0gICAgICBRTmFtZSB2YWx1ZSA9IChRTmFtZSl2YWw7Ci0gICAgICBTdHJpbmcgbE5hbWUgPSBuYW1lLmdldExvY2FsUGFydCgpOwotICAgICAgU3RyaW5nIG5TcGFjZSA9IG5hbWUuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0KLSAgICAgIGlmIChOU19VUklfUEFSVF9FWFRFTlNJT05TLmVxdWFscyhuU3BhY2UpICYmIEFUVFJfTUVTU0FHRS5lcXVhbHMobE5hbWUpKQotICAgICAgewotICAgICAgICBqYXZheC53c2RsLk1lc3NhZ2UgbWVzc2FnZVByb3h5ID0gbmV3IE1lc3NhZ2VJbXBsKCk7Ci0gICAgICAgIG1lc3NhZ2VQcm94eS5zZXRRTmFtZSh2YWx1ZSk7Ci0gICAgICAgIHNldEVNZXNzYWdlKChNZXNzYWdlKW1lc3NhZ2VQcm94eSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gc3VwZXIucHV0KGtleSwgdmFsdWUpOwotICAgIH0KLSAgfQotCi0gIC8vCi0gIC8vIFJlY29uY2lsZSBtZXRob2RzCi0gIC8vCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLQotICAgIFN0cmluZyBuYW1lID0gY2hhbmdlZEVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSk7Ci0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBzZXROYW1lKG5hbWUpOwotICAgIH0KLQotICAgIFN0cmluZyBlbGVtZW50QXR0ciA9IFdTRExDb25zdGFudHMuZ2V0QXR0cmlidXRlKGNoYW5nZWRFbGVtZW50LCBXU0RMQ29uc3RhbnRzLkVMRU1FTlRfQVRUUklCVVRFKTsKLSAgICBzZXRFbGVtZW50TmFtZShlbGVtZW50QXR0ciAhPSBudWxsID8gY3JlYXRlUU5hbWUoZGVmaW5pdGlvbiwgZWxlbWVudEF0dHIsIGVsZW1lbnQsIHRydWUpIDogbnVsbCk7Ci0KLSAgICBTdHJpbmcgdHlwZUF0dHIgPSBXU0RMQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShjaGFuZ2VkRWxlbWVudCwgV1NETENvbnN0YW50cy5UWVBFX0FUVFJJQlVURSk7Ci0gICAgc2V0VHlwZU5hbWUodHlwZUF0dHIgIT0gbnVsbCA/IGNyZWF0ZVFOYW1lKGRlZmluaXRpb24sIHR5cGVBdHRyLCBlbGVtZW50LCB0cnVlKSA6IG51bGwpOwotCi0gICAgcmVjb25jaWxlUmVmZXJlbmNlcyhmYWxzZSk7Ci0gIH0KLQotICAvLwotICAvLyBGb3IgcmVjb25jaWxpYXRpb246IE1vZGVsIC0+IERPTQotICAvLwotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZUF0dHJpYnV0ZShFQXR0cmlidXRlIGVBdHRyaWJ1dGUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICAgIHJldHVybjsKLQotICAgIC8vc3VwZXIuY2hhbmdlQXR0cmlidXRlKGVBdHRyaWJ1dGUpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5QQVJUX19OQU1FKQotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIFdTRExDb25zdGFudHMuTkFNRV9BVFRSSUJVVEUsIGdldE5hbWUoKSk7Ci0KLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5QQVJUX19UWVBFX05BTUUpCi0gICAgICAgIGlmIChnZXRUeXBlTmFtZSgpICE9IG51bGwpCi0gICAgICAgICAgbmljZVNldEF0dHJpYnV0ZVVSSVZhbHVlKHRoZUVsZW1lbnQsIFdTRExDb25zdGFudHMuVFlQRV9BVFRSSUJVVEUsIGdldFR5cGVOYW1lKCkuZ2V0TmFtZXNwYWNlVVJJKCkgKyAiIyIKLSAgICAgICAgICAgICsgZ2V0VHlwZU5hbWUoKS5nZXRMb2NhbFBhcnQoKSk7Ci0KLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5QQVJUX19FTEVNRU5UX05BTUUpCi0gICAgICAgIGlmIChnZXRFbGVtZW50TmFtZSgpICE9IG51bGwpCi0gICAgICAgICAgbmljZVNldEF0dHJpYnV0ZVVSSVZhbHVlKHRoZUVsZW1lbnQsIFdTRExDb25zdGFudHMuRUxFTUVOVF9BVFRSSUJVVEUsIGdldEVsZW1lbnROYW1lKCkuZ2V0TmFtZXNwYWNlVVJJKCkgKyAiIyIKLSAgICAgICAgICAgICsgZ2V0RWxlbWVudE5hbWUoKS5nZXRMb2NhbFBhcnQoKSk7Ci0KLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VSZWZlcmVuY2UoRVJlZmVyZW5jZSBlUmVmZXJlbmNlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VSZWZlcmVuY2UoZVJlZmVyZW5jZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVSZWZlcmVuY2UgPT0gbnVsbCB8fCBlUmVmZXJlbmNlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLlBBUlRfX1RZUEVfREVGSU5JVElPTikKLSAgICAgIHsKLSAgICAgICAgWFNEVHlwZURlZmluaXRpb24gdHlwZURlZmluaXRpb24gPSBnZXRUeXBlRGVmaW5pdGlvbigpOwotICAgICAgICBpZiAodHlwZURlZmluaXRpb24gIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIG5pY2VTZXRBdHRyaWJ1dGVVUklWYWx1ZSh0aGVFbGVtZW50LCBXU0RMQ29uc3RhbnRzLlRZUEVfQVRUUklCVVRFLCB0eXBlRGVmaW5pdGlvbi5nZXRVUkkoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmIChlUmVmZXJlbmNlID09IG51bGwgfHwgZVJlZmVyZW5jZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5QQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OKQotICAgICAgewotICAgICAgICBYU0RFbGVtZW50RGVjbGFyYXRpb24gZWxlbWVudERlY2wgPSBnZXRFbGVtZW50RGVjbGFyYXRpb24oKTsKLSAgICAgICAgaWYgKGVsZW1lbnREZWNsICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBuaWNlU2V0QXR0cmlidXRlVVJJVmFsdWUodGhlRWxlbWVudCwgV1NETENvbnN0YW50cy5FTEVNRU5UX0FUVFJJQlVURSwgZWxlbWVudERlY2wuZ2V0VVJJKCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIEVsZW1lbnQgY3JlYXRlRWxlbWVudCgpCi0gIHsKLSAgICBFbGVtZW50IG5ld0VsZW1lbnQgPSBjcmVhdGVFbGVtZW50KFdTRExDb25zdGFudHMuUEFSVCk7Ci0gICAgc2V0RWxlbWVudChuZXdFbGVtZW50KTsKLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZVJlZmVyZW5jZXMoYm9vbGVhbiBkZWVwKQotICB7Ci0gICAgWFNERWxlbWVudERlY2xhcmF0aW9uIG5ld0VsZW1lbnREZWNsYXJhdGlvbiA9IHJlc29sdmVFbGVtZW50RGVjbGFyYXRpb24oZWxlbWVudE5hbWUpOwotICAgIGlmIChuZXdFbGVtZW50RGVjbGFyYXRpb24gIT0gZWxlbWVudERlY2xhcmF0aW9uKQotICAgIHsKLSAgICAgIHNldEVsZW1lbnREZWNsYXJhdGlvbihuZXdFbGVtZW50RGVjbGFyYXRpb24pOwotICAgIH0KLQotICAgIFhTRFR5cGVEZWZpbml0aW9uIG5ld1R5cGVEZWZpbml0aW9uID0gcmVzb2x2ZVR5cGVEZWZpbml0aW9uKHR5cGVOYW1lKTsKLSAgICBpZiAobmV3VHlwZURlZmluaXRpb24gIT0gdHlwZURlZmluaXRpb24pCi0gICAgewotICAgICAgc2V0VHlwZURlZmluaXRpb24obmV3VHlwZURlZmluaXRpb24pOwotICAgIH0KLQotICAgIHN1cGVyLnJlY29uY2lsZVJlZmVyZW5jZXMoZGVlcCk7Ci0gIH0KLQotICBwcml2YXRlIFhTREVsZW1lbnREZWNsYXJhdGlvbiByZXNvbHZlRWxlbWVudERlY2xhcmF0aW9uKFFOYW1lIHFuYW1lKQotICB7Ci0gICAgWFNERWxlbWVudERlY2xhcmF0aW9uIHJlc3VsdCA9IG51bGw7Ci0gICAgaWYgKHFuYW1lICE9IG51bGwpCi0gICAgewotICAgICAgRGVmaW5pdGlvbkltcGwgZGVmaW5pdGlvbiA9IChEZWZpbml0aW9uSW1wbClnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCk7Ci0gICAgICBpZiAoZGVmaW5pdGlvbiAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBkZWZpbml0aW9uLnJlc29sdmVFbGVtZW50RGVjbGFyYXRpb24ocW5hbWUuZ2V0TmFtZXNwYWNlVVJJKCksIHFuYW1lLmdldExvY2FsUGFydCgpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIHByaXZhdGUgWFNEVHlwZURlZmluaXRpb24gcmVzb2x2ZVR5cGVEZWZpbml0aW9uKFFOYW1lIHFuYW1lKQotICB7Ci0gICAgWFNEVHlwZURlZmluaXRpb24gcmVzdWx0ID0gbnVsbDsKLSAgICBpZiAocW5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uSW1wbCBkZWZpbml0aW9uID0gKERlZmluaXRpb25JbXBsKWdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgICAgIGlmIChkZWZpbml0aW9uICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IGRlZmluaXRpb24ucmVzb2x2ZVR5cGVEZWZpbml0aW9uKHFuYW1lLmdldE5hbWVzcGFjZVVSSSgpLCBxbmFtZS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0gLy9QYXJ0SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL1BvcnRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvUG9ydEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTliZTk2NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvUG9ydEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UG9ydDwvYj48L2VtPicuCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIDxwPgotICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5Qb3J0SW1wbCNnZXROYW1lIDxlbT5OYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlBvcnRJbXBsI2dldEVCaW5kaW5nIDxlbT5FQmluZGluZzwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFBvcnRJbXBsIGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnRJbXBsIGltcGxlbWVudHMgUG9ydAotewotICAvKioKLSAgICogVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgc2VyaWFsaXplZC4KLSAgICogc2VyaWFsVmVyc2lvblVJRCBpcyBhc3NpZ25lZCB3aXRoIDFMIHRvIGF2b2lkCi0gICAqIGNvbXBpbGVyIHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWUoKSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0TmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXROYW1lKCkgPGVtPk5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldE5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWUgPSBOQU1FX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFQmluZGluZygpIDxlbT5FQmluZGluZzwvZW0+fScgcmVmZXJlbmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RUJpbmRpbmcoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgQmluZGluZyBlQmluZGluZzsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBQb3J0SW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpCi0gIHsKLSAgICByZXR1cm4gV1NETFBhY2thZ2UuTGl0ZXJhbHMuUE9SVDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgewotICAgIHJldHVybiBuYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuZXdOYW1lKQotICB7Ci0gICAgU3RyaW5nIG9sZE5hbWUgPSBuYW1lOwotICAgIG5hbWUgPSBuZXdOYW1lOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLlBPUlRfX05BTUUsIG9sZE5hbWUsIG5hbWUpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEJpbmRpbmcgZ2V0RUJpbmRpbmcoKQotICB7Ci0gICAgaWYgKGVCaW5kaW5nICE9IG51bGwgJiYgZUJpbmRpbmcuZUlzUHJveHkoKSkKLSAgICB7Ci0gICAgICBJbnRlcm5hbEVPYmplY3Qgb2xkRUJpbmRpbmcgPSAoSW50ZXJuYWxFT2JqZWN0KWVCaW5kaW5nOwotICAgICAgZUJpbmRpbmcgPSAoQmluZGluZyllUmVzb2x2ZVByb3h5KG9sZEVCaW5kaW5nKTsKLSAgICAgIGlmIChlQmluZGluZyAhPSBvbGRFQmluZGluZykKLSAgICAgIHsKLSAgICAgICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBXU0RMUGFja2FnZS5QT1JUX19FQklORElORywgb2xkRUJpbmRpbmcsIGVCaW5kaW5nKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlQmluZGluZzsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEJpbmRpbmcgYmFzaWNHZXRFQmluZGluZygpCi0gIHsKLSAgICByZXR1cm4gZUJpbmRpbmc7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVCaW5kaW5nKEJpbmRpbmcgbmV3RUJpbmRpbmcpCi0gIHsKLSAgICBCaW5kaW5nIG9sZEVCaW5kaW5nID0gZUJpbmRpbmc7Ci0gICAgZUJpbmRpbmcgPSBuZXdFQmluZGluZzsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBXU0RMUGFja2FnZS5QT1JUX19FQklORElORywgb2xkRUJpbmRpbmcsIGVCaW5kaW5nKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5CaW5kaW5nIGdldEJpbmRpbmcoKQotICB7Ci0gICAgcmV0dXJuIGdldEVCaW5kaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRCaW5kaW5nKGphdmF4LndzZGwuQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgc2V0RUJpbmRpbmcoKEJpbmRpbmcpYmluZGluZyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfX05BTUU6Ci0gICAgICByZXR1cm4gZ2V0TmFtZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QT1JUX19FQklORElORzoKLSAgICAgIGlmIChyZXNvbHZlKQotICAgICAgICByZXR1cm4gZ2V0RUJpbmRpbmcoKTsKLSAgICAgIHJldHVybiBiYXNpY0dldEVCaW5kaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUE9SVF9fTkFNRToKLSAgICAgIHNldE5hbWUoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfX0VCSU5ESU5HOgotICAgICAgc2V0RUJpbmRpbmcoKEJpbmRpbmcpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUE9SVF9fTkFNRToKLSAgICAgIHNldE5hbWUoTkFNRV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfX0VCSU5ESU5HOgotICAgICAgc2V0RUJpbmRpbmcoKEJpbmRpbmcpbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUE9SVF9fTkFNRToKLSAgICAgIHJldHVybiBOQU1FX0VERUZBVUxUID09IG51bGwgPyBuYW1lICE9IG51bGwgOiAhTkFNRV9FREVGQVVMVC5lcXVhbHMobmFtZSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfX0VCSU5ESU5HOgotICAgICAgcmV0dXJuIGVCaW5kaW5nICE9IG51bGw7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBpZiAoZUlzUHJveHkoKSkKLSAgICAgIHJldHVybiBzdXBlci50b1N0cmluZygpOwotCi0gICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiIChuYW1lOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQobmFtZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8vCi0gIC8vIFJlY29uY2lsZSBtZXRob2RzCi0gIC8vCi0KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlQXR0cmlidXRlcyhFbGVtZW50IGNoYW5nZWRFbGVtZW50KQotICB7Ci0gICAgc2V0TmFtZShjaGFuZ2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSk7Ci0gICAgcmVjb25jaWxlUmVmZXJlbmNlcyhmYWxzZSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBoYW5kbGVVbnJlY29uY2lsZWRFbGVtZW50KEVsZW1lbnQgY2hpbGQsIENvbGxlY3Rpb24gcmVtYWluaW5nTW9kZWxPYmplY3RzKQotICB7Ci0gICAgc3VwZXIuaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChjaGlsZCwgcmVtYWluaW5nTW9kZWxPYmplY3RzKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGhhbmRsZVJlY29uY2lsaWF0aW9uKENvbGxlY3Rpb24gcmVtYWluaW5nTW9kZWxPYmplY3RzKQotICB7Ci0gICAgZm9yIChJdGVyYXRvciBpID0gcmVtYWluaW5nTW9kZWxPYmplY3RzLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkucmVtb3ZlKGkubmV4dCgpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgQ29sbGVjdGlvbiBnZXRNb2RlbE9iamVjdHMoT2JqZWN0IGNvbXBvbmVudCkKLSAgewotICAgIFBvcnQgcG9ydCA9IChQb3J0KWNvbXBvbmVudDsKLSAgICBMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgbGlzdC5hZGRBbGwocG9ydC5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotICAgIHJldHVybiBsaXN0OwotICB9Ci0KLSAgLy8KLSAgLy8gRm9yIHJlY29uY2lsaWF0aW9uOiBNb2RlbCAtPiBET00KLSAgLy8KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VBdHRyaWJ1dGUoRUF0dHJpYnV0ZSBlQXR0cmlidXRlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VBdHRyaWJ1dGUoZUF0dHJpYnV0ZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLlBPUlRfX05BTUUpCi0gICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSwgZ2V0TmFtZSgpKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VSZWZlcmVuY2UoRVJlZmVyZW5jZSBlUmVmZXJlbmNlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VSZWZlcmVuY2UoZVJlZmVyZW5jZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVSZWZlcmVuY2UgPT0gbnVsbCB8fCBlUmVmZXJlbmNlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLlBPUlRfX0VCSU5ESU5HKQotICAgICAgewotICAgICAgICBCaW5kaW5nIGJpbmRpbmcgPSBnZXRFQmluZGluZygpOwotICAgICAgICBpZiAoYmluZGluZyAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgUU5hbWUgcU5hbWUgPSBiaW5kaW5nLmdldFFOYW1lKCk7Ci0gICAgICAgICAgbmljZVNldEF0dHJpYnV0ZVVSSVZhbHVlKHRoZUVsZW1lbnQsIFdTRExDb25zdGFudHMuQklORElOR19BVFRSSUJVVEUsIHFOYW1lLmdldE5hbWVzcGFjZVVSSSgpICsgIiMiICsgcU5hbWUuZ2V0TG9jYWxQYXJ0KCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIEVsZW1lbnQgY3JlYXRlRWxlbWVudCgpCi0gIHsKLSAgICBFbGVtZW50IG5ld0VsZW1lbnQgPSBjcmVhdGVFbGVtZW50KFdTRExDb25zdGFudHMuUE9SVCk7Ci0gICAgc2V0RWxlbWVudChuZXdFbGVtZW50KTsKLQotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dGVuc2liaWxpdHlFbGVtZW50ID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWl0ZXJhdG9yLm5leHQoKTsKLSAgICAgIEVsZW1lbnQgY2hpbGQgPSAoKEV4dGVuc2liaWxpdHlFbGVtZW50SW1wbClleHRlbnNpYmlsaXR5RWxlbWVudCkuY3JlYXRlRWxlbWVudCgpOwotICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChjaGlsZCk7Ci0gICAgfQotICAgIHJldHVybiBuZXdFbGVtZW50OwotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlUmVmZXJlbmNlcyhib29sZWFuIGRlZXApCi0gIHsKLSAgICBpZiAoZWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgICAgIFFOYW1lIGJpbmRpbmdRTmFtZSA9IGNyZWF0ZVFOYW1lKGRlZmluaXRpb24sIGVsZW1lbnQuZ2V0QXR0cmlidXRlKFdTRExDb25zdGFudHMuQklORElOR19BVFRSSUJVVEUpLCBlbGVtZW50KTsKLSAgICAgIEJpbmRpbmcgbmV3QmluZGluZyA9IChiaW5kaW5nUU5hbWUgIT0gbnVsbCkgPyAoQmluZGluZylkZWZpbml0aW9uLmdldEJpbmRpbmcoYmluZGluZ1FOYW1lKSA6IG51bGw7Ci0gICAgICBpZiAobmV3QmluZGluZyAhPSBnZXRFQmluZGluZygpKQotICAgICAgewotICAgICAgICBzZXRFQmluZGluZyhuZXdCaW5kaW5nKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgc3VwZXIucmVjb25jaWxlUmVmZXJlbmNlcyhkZWVwKTsKLSAgfQotCi19IC8vUG9ydEltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9Qb3J0VHlwZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9Qb3J0VHlwZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0ODRkZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvUG9ydFR5cGVJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb25DaGFpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVPYmplY3RDb250YWlubWVudEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkludGVybmFsRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbC5XU0RMVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UG9ydCBUeXBlPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlBvcnRUeXBlSW1wbCNnZXRRTmFtZSA8ZW0+UU5hbWU8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuUG9ydFR5cGVJbXBsI2lzVW5kZWZpbmVkIDxlbT5VbmRlZmluZWQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuUG9ydFR5cGVJbXBsI2dldEVPcGVyYXRpb25zIDxlbT5FT3BlcmF0aW9uczwvZW0+fTwvbGk+Ci0gKiA8L3VsPgotICogPC9wPgotICoKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFBvcnRUeXBlSW1wbCBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50SW1wbCBpbXBsZW1lbnRzIFBvcnRUeXBlCi17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzZXJpYWxpemVkLgotICAgKiBzZXJpYWxWZXJzaW9uVUlEIGlzIGFzc2lnbmVkIHdpdGggMUwgdG8gYXZvaWQKLSAgICogY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcy4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0UU5hbWUoKSA8ZW0+UU5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFFOYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRV9FREVGQVVMVCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFFOYW1lKCkgPGVtPlFOYW1lPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRRTmFtZSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBRTmFtZSBxTmFtZSA9IFFOQU1FX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjaXNVbmRlZmluZWQoKSA8ZW0+VW5kZWZpbmVkPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNpc1VuZGVmaW5lZCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgYm9vbGVhbiBVTkRFRklORURfRURFRkFVTFQgPSBmYWxzZTsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjaXNVbmRlZmluZWQoKSA8ZW0+VW5kZWZpbmVkPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNpc1VuZGVmaW5lZCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIHVuZGVmaW5lZCA9IFVOREVGSU5FRF9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RU9wZXJhdGlvbnMoKSA8ZW0+RU9wZXJhdGlvbnM8L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RU9wZXJhdGlvbnMoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3QgZU9wZXJhdGlvbnM7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgUG9ydFR5cGVJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBXU0RMUGFja2FnZS5MaXRlcmFscy5QT1JUX1RZUEU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBRTmFtZSBnZXRRTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gcU5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFFOYW1lKFFOYW1lIG5ld1FOYW1lKQotICB7Ci0gICAgUU5hbWUgb2xkUU5hbWUgPSBxTmFtZTsKLSAgICBxTmFtZSA9IG5ld1FOYW1lOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLlBPUlRfVFlQRV9fUU5BTUUsIG9sZFFOYW1lLCBxTmFtZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1VuZGVmaW5lZCgpCi0gIHsKLSAgICByZXR1cm4gdW5kZWZpbmVkOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRVbmRlZmluZWQoYm9vbGVhbiBuZXdVbmRlZmluZWQpCi0gIHsKLSAgICBib29sZWFuIG9sZFVuZGVmaW5lZCA9IHVuZGVmaW5lZDsKLSAgICB1bmRlZmluZWQgPSBuZXdVbmRlZmluZWQ7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuUE9SVF9UWVBFX19VTkRFRklORUQsIG9sZFVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRFT3BlcmF0aW9ucygpCi0gIHsKLSAgICBpZiAoZU9wZXJhdGlvbnMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBlT3BlcmF0aW9ucyA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChPcGVyYXRpb24uY2xhc3MsIHRoaXMsIFdTRExQYWNrYWdlLlBPUlRfVFlQRV9fRU9QRVJBVElPTlMpOwotICAgIH0KLSAgICByZXR1cm4gZU9wZXJhdGlvbnM7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogQWRkIGFuIG9wZXJhdGlvbiB0byB0aGlzIHBvcnQgdHlwZS4KLSAgICogQHBhcmFtIG9wZXJhdGlvbiB0aGUgb3BlcmF0aW9uIHRvIGJlIGFkZGVkCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkT3BlcmF0aW9uKGphdmF4LndzZGwuT3BlcmF0aW9uIG9wZXJhdGlvbikKLSAgewotICAgIGlmICghb3BlcmF0aW9uLmlzVW5kZWZpbmVkKCkpCi0gICAgICBnZXRFT3BlcmF0aW9ucygpLmFkZChvcGVyYXRpb24pOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIEdldCB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbi4gTm90ZSB0aGF0IG9wZXJhdGlvbiBuYW1lcyBjYW4KLSAgICogYmUgb3ZlcmxvYWRlZCB3aXRoaW4gYSBQb3J0VHlwZS4gSW4gY2FzZSBvZiBvdmVybG9hZGluZywgdGhlCi0gICAqIG5hbWVzIG9mIHRoZSBpbnB1dCBhbmQgb3V0cHV0IG1lc3NhZ2VzIGNhbiBiZSB1c2VkIHRvIGZ1cnRoZXIKLSAgICogcmVmaW5lIHRoZSBzZWFyY2guCi0gICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBkZXNpcmVkIG9wZXJhdGlvbi4KLSAgICogQHBhcmFtIGlucHV0TmFtZSB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgbWVzc2FnZTsgaWYgdGhpcyBpcyBudWxsCi0gICAqICAgICAgICBpdCB3aWxsIGJlIGlnbm9yZWQuCi0gICAqIEBwYXJhbSBvdXRwdXROYW1lIHRoZSBuYW1lIG9mIHRoZSBvdXRwdXQgbWVzc2FnZTsgaWYgdGhpcyBpcyBudWxsCi0gICAqICAgICAgICBpdCB3aWxsIGJlIGlnbm9yZWQuCi0gICAqIEByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uLCBvciBudWxsIGlmIHRoZXJlIHdhc24ndAotICAgKiAgICAgICAgIGFueSBtYXRjaGluZyBvcGVyYXRpb24KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgamF2YXgud3NkbC5PcGVyYXRpb24gZ2V0T3BlcmF0aW9uKFN0cmluZyBuYW1lLCBTdHJpbmcgaW5wdXROYW1lLCBTdHJpbmcgb3V0cHV0TmFtZSkKLSAgewotICAgIEl0ZXJhdG9yIG9wSXRlcmF0b3IgPSBnZXRPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAob3BJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgamF2YXgud3NkbC5PcGVyYXRpb24gb3AgPSAoamF2YXgud3NkbC5PcGVyYXRpb24pb3BJdGVyYXRvci5uZXh0KCk7Ci0gICAgICBpZiAob3AgPT0gbnVsbCkKLSAgICAgICAgY29udGludWU7Ci0KLSAgICAgIFN0cmluZyBvcE5hbWUgPSBvcC5nZXROYW1lKCk7Ci0gICAgICBpZiAobmFtZSAhPSBudWxsICYmIG9wTmFtZSAhPSBudWxsKQotICAgICAgewotICAgICAgICBpZiAoIW5hbWUuZXF1YWxzKG9wTmFtZSkpCi0gICAgICAgICAgb3AgPSBudWxsOwotICAgICAgfQotICAgICAgZWxzZSBpZiAobmFtZSAhPSBudWxsIHx8IG9wTmFtZSAhPSBudWxsKQotICAgICAgICBvcCA9IG51bGw7Ci0KLSAgICAgIGlmIChvcCAhPSBudWxsICYmIGlucHV0TmFtZSAhPSBudWxsKQotICAgICAgewotICAgICAgICBqYXZheC53c2RsLklucHV0IGlucHV0ID0gb3AuZ2V0SW5wdXQoKTsKLSAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgb3BJbnB1dE5hbWUgPSBpbnB1dC5nZXROYW1lKCk7Ci0gICAgICAgICAgaWYgKG9wSW5wdXROYW1lID09IG51bGwgfHwgIW9wSW5wdXROYW1lLmVxdWFscyhpbnB1dE5hbWUpKQotICAgICAgICAgICAgb3AgPSBudWxsOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBvcCA9IG51bGw7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChvcCAhPSBudWxsICYmIG91dHB1dE5hbWUgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgamF2YXgud3NkbC5PdXRwdXQgb3V0cHV0ID0gb3AuZ2V0T3V0cHV0KCk7Ci0gICAgICAgIGlmIChvdXRwdXQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBvcE91dHB1dE5hbWUgPSBvdXRwdXQuZ2V0TmFtZSgpOwotICAgICAgICAgIGlmIChvcE91dHB1dE5hbWUgPT0gbnVsbCB8fCAhb3BPdXRwdXROYW1lLmVxdWFscyhvdXRwdXROYW1lKSkKLSAgICAgICAgICAgIG9wID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgb3AgPSBudWxsOwotICAgICAgfQotCi0gICAgICBpZiAob3AgIT0gbnVsbCkKLSAgICAgICAgcmV0dXJuIG9wOwotICAgIH0gLy8gZW5kIHdoaWxlCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogR2V0IGFsbCB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGhlcmUuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0T3BlcmF0aW9ucygpCi0gIHsKLSAgICBpZiAoIWlzVW5kZWZpbmVkKCkpCi0gICAgICByZXR1cm4gZ2V0RU9wZXJhdGlvbnMoKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbmV3IEFycmF5TGlzdCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gZUludmVyc2VSZW1vdmUoSW50ZXJuYWxFT2JqZWN0IG90aGVyRW5kLCBpbnQgZmVhdHVyZUlELCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QT1JUX1RZUEVfX0VPUEVSQVRJT05TOgotICAgICAgcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRFT3BlcmF0aW9ucygpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSW52ZXJzZVJlbW92ZShvdGhlckVuZCwgZmVhdHVyZUlELCBtc2dzKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUE9SVF9UWVBFX19RTkFNRToKLSAgICAgIHJldHVybiBnZXRRTmFtZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QT1JUX1RZUEVfX1VOREVGSU5FRDoKLSAgICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gQm9vbGVhbi5UUlVFIDogQm9vbGVhbi5GQUxTRTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUE9SVF9UWVBFX19FT1BFUkFUSU9OUzoKLSAgICAgIHJldHVybiBnZXRFT3BlcmF0aW9ucygpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfVFlQRV9fUU5BTUU6Ci0gICAgICBzZXRRTmFtZSgoUU5hbWUpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QT1JUX1RZUEVfX1VOREVGSU5FRDoKLSAgICAgIHNldFVuZGVmaW5lZCgoKEJvb2xlYW4pbmV3VmFsdWUpLmJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUE9SVF9UWVBFX19FT1BFUkFUSU9OUzoKLSAgICAgIGdldEVPcGVyYXRpb25zKCkuY2xlYXIoKTsKLSAgICAgIGdldEVPcGVyYXRpb25zKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfVFlQRV9fUU5BTUU6Ci0gICAgICBzZXRRTmFtZShRTkFNRV9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfVFlQRV9fVU5ERUZJTkVEOgotICAgICAgc2V0VW5kZWZpbmVkKFVOREVGSU5FRF9FREVGQVVMVCk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfVFlQRV9fRU9QRVJBVElPTlM6Ci0gICAgICBnZXRFT3BlcmF0aW9ucygpLmNsZWFyKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUE9SVF9UWVBFX19RTkFNRToKLSAgICAgIHJldHVybiBRTkFNRV9FREVGQVVMVCA9PSBudWxsID8gcU5hbWUgIT0gbnVsbCA6ICFRTkFNRV9FREVGQVVMVC5lcXVhbHMocU5hbWUpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QT1JUX1RZUEVfX1VOREVGSU5FRDoKLSAgICAgIHJldHVybiB1bmRlZmluZWQgIT0gVU5ERUZJTkVEX0VERUZBVUxUOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QT1JUX1RZUEVfX0VPUEVSQVRJT05TOgotICAgICAgcmV0dXJuIGVPcGVyYXRpb25zICE9IG51bGwgJiYgIWVPcGVyYXRpb25zLmlzRW1wdHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKHFOYW1lOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQocU5hbWUpOwotICAgIHJlc3VsdC5hcHBlbmQoIiwgdW5kZWZpbmVkOiAiKTsgLy8kTk9OLU5MUy0xJAotICAgIHJlc3VsdC5hcHBlbmQodW5kZWZpbmVkKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxlIG1ldGhvZHMKLSAgLy8KLQotICBwdWJsaWMgdm9pZCByZWNvbmNpbGVBdHRyaWJ1dGVzKEVsZW1lbnQgY2hhbmdlZEVsZW1lbnQpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCk7Ci0gICAgU3RyaW5nIG5hbWUgPSBjaGFuZ2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSk7Ci0gICAgUU5hbWUgcW5hbWUgPSBuZXcgUU5hbWUoZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKSwgbmFtZSA9PSBudWxsID8gIiIgOiBuYW1lKTsgLy8kTk9OLU5MUy0xJAotICAgIHNldFFOYW1lKHFuYW1lKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoRWxlbWVudCBjaGlsZCwgQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBzd2l0Y2ggKFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoY2hpbGQpKQotICAgIHsKLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5PUEVSQVRJT046Ci0gICAgICB7Ci0gICAgICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlT3BlcmF0aW9uKCk7Ci0gICAgICAgIG9wZXJhdGlvbi5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKGdldEVuY2xvc2luZ0RlZmluaXRpb24oKSk7Ci0gICAgICAgIG9wZXJhdGlvbi5zZXRFbGVtZW50KGNoaWxkKTsKLSAgICAgICAgZ2V0RU9wZXJhdGlvbnMoKS5hZGQob3BlcmF0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAgewotICAgICAgICBzdXBlci5oYW5kbGVVbnJlY29uY2lsZWRFbGVtZW50KGNoaWxkLCByZW1haW5pbmdNb2RlbE9iamVjdHMpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVSZWNvbmNpbGlhdGlvbihDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGZvciAoSXRlcmF0b3IgaSA9IHJlbWFpbmluZ01vZGVsT2JqZWN0cy5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgcmVtb3ZlKHRoaXMsIGkubmV4dCgpKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmUoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IG1vZGVsT2JqZWN0KQotICB7Ci0gICAgTGlzdCBsaXN0ID0gZ2V0TGlzdChjb21wb25lbnQsIG1vZGVsT2JqZWN0KTsKLSAgICBpZiAobGlzdCAhPSBudWxsKQotICAgIHsKLSAgICAgIGxpc3QucmVtb3ZlKG1vZGVsT2JqZWN0KTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIExpc3QgZ2V0TGlzdChPYmplY3QgY29tcG9uZW50LCBPYmplY3QgbW9kZWxPYmplY3QpCi0gIHsKLSAgICBMaXN0IHJlc3VsdCA9IG51bGw7Ci0gICAgUG9ydFR5cGUgcG9ydFR5cGUgPSAoUG9ydFR5cGUpY29tcG9uZW50OwotICAgIGlmIChtb2RlbE9iamVjdCBpbnN0YW5jZW9mIE9wZXJhdGlvbikKLSAgICB7Ci0gICAgICByZXN1bHQgPSBwb3J0VHlwZS5nZXRFT3BlcmF0aW9ucygpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIENvbGxlY3Rpb24gZ2V0TW9kZWxPYmplY3RzKE9iamVjdCBjb21wb25lbnQpCi0gIHsKLSAgICBQb3J0VHlwZSBwb3J0VHlwZSA9IChQb3J0VHlwZSljb21wb25lbnQ7Ci0KLSAgICBMaXN0IGxpc3QgPSBwb3J0VHlwZS5nZXRFT3BlcmF0aW9ucygpOwotICAgIHJldHVybiBsaXN0OwotICB9Ci0KLSAgLy8KLSAgLy8gRm9yIHJlY29uY2lsaWF0aW9uOiBNb2RlbCAtPiBET00KLSAgLy8KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VBdHRyaWJ1dGUoRUF0dHJpYnV0ZSBlQXR0cmlidXRlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICBzdXBlci5jaGFuZ2VBdHRyaWJ1dGUoZUF0dHJpYnV0ZSk7Ci0gICAgRWxlbWVudCB0aGVFbGVtZW50ID0gZ2V0RWxlbWVudCgpOwotICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKGVBdHRyaWJ1dGUgPT0gbnVsbCB8fCBlQXR0cmlidXRlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLlBPUlRfVFlQRV9fUU5BTUUpCi0gICAgICAgIG5pY2VTZXRBdHRyaWJ1dGUodGhlRWxlbWVudCwgV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSwgZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIEVsZW1lbnQgY3JlYXRlRWxlbWVudCgpCi0gIHsKLSAgICBFbGVtZW50IG5ld0VsZW1lbnQgPSBjcmVhdGVFbGVtZW50KFdTRExDb25zdGFudHMuUE9SVF9UWVBFKTsKLSAgICBzZXRFbGVtZW50KG5ld0VsZW1lbnQpOwotCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBnZXRFT3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gKE9wZXJhdGlvbilpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBFbGVtZW50IGNoaWxkID0gKChPcGVyYXRpb25JbXBsKW9wZXJhdGlvbikuY3JlYXRlRWxlbWVudCgpOwotICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChjaGlsZCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ld0VsZW1lbnQ7Ci0gIH0KLX0gLy9Qb3J0VHlwZUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9TZXJ2aWNlSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL1NlcnZpY2VJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OGE2YjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL1NlcnZpY2VJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb25DaGFpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0Q29udGFpbm1lbnRFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWwuV1NETFV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlNlcnZpY2U8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuU2VydmljZUltcGwjZ2V0UU5hbWUgPGVtPlFOYW1lPC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlNlcnZpY2VJbXBsI2lzVW5kZWZpbmVkIDxlbT5VbmRlZmluZWQ8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuU2VydmljZUltcGwjZ2V0RVBvcnRzIDxlbT5FUG9ydHM8L2VtPn08L2xpPgotICogPC91bD4KLSAqIDwvcD4KLSAqCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlSW1wbCBleHRlbmRzIEV4dGVuc2libGVFbGVtZW50SW1wbCBpbXBsZW1lbnRzIFNlcnZpY2UKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRRTmFtZSgpIDxlbT5RTmFtZTwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0UU5hbWUoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFFOYW1lIFFOQU1FX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0UU5hbWUoKSA8ZW0+UU5hbWU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldFFOYW1lKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIFFOYW1lIHFOYW1lID0gUU5BTUVfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNpc1VuZGVmaW5lZCgpIDxlbT5VbmRlZmluZWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2lzVW5kZWZpbmVkKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBib29sZWFuIFVOREVGSU5FRF9FREVGQVVMVCA9IGZhbHNlOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNpc1VuZGVmaW5lZCgpIDxlbT5VbmRlZmluZWQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2lzVW5kZWZpbmVkKCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gdW5kZWZpbmVkID0gVU5ERUZJTkVEX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFUG9ydHMoKSA8ZW0+RVBvcnRzPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVQb3J0cygpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBFTGlzdCBlUG9ydHM7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgU2VydmljZUltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLlNFUlZJQ0U7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBRTmFtZSBnZXRRTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gcU5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFFOYW1lKFFOYW1lIG5ld1FOYW1lKQotICB7Ci0gICAgUU5hbWUgb2xkUU5hbWUgPSBxTmFtZTsKLSAgICBxTmFtZSA9IG5ld1FOYW1lOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLlNFUlZJQ0VfX1FOQU1FLCBvbGRRTmFtZSwgcU5hbWUpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNVbmRlZmluZWQoKQotICB7Ci0gICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VW5kZWZpbmVkKGJvb2xlYW4gbmV3VW5kZWZpbmVkKQotICB7Ci0gICAgYm9vbGVhbiBvbGRVbmRlZmluZWQgPSB1bmRlZmluZWQ7Ci0gICAgdW5kZWZpbmVkID0gbmV3VW5kZWZpbmVkOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFdTRExQYWNrYWdlLlNFUlZJQ0VfX1VOREVGSU5FRCwgb2xkVW5kZWZpbmVkLCB1bmRlZmluZWQpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVMaXN0IGdldEVQb3J0cygpCi0gIHsKLSAgICBpZiAoZVBvcnRzID09IG51bGwpCi0gICAgewotICAgICAgZVBvcnRzID0gbmV3IEVPYmplY3RDb250YWlubWVudEVMaXN0KFBvcnQuY2xhc3MsIHRoaXMsIFdTRExQYWNrYWdlLlNFUlZJQ0VfX0VQT1JUUyk7Ci0gICAgfQotICAgIHJldHVybiBlUG9ydHM7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogQWRkIGEgcG9ydCB0byB0aGlzIHNlcnZpY2UuCi0gICAqIEBwYXJhbSBwb3J0IHRoZSBwb3J0IHRvIGJlIGFkZGVkCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkUG9ydChqYXZheC53c2RsLlBvcnQgcG9ydCkKLSAgewotICAgIGdldEVQb3J0cygpLmFkZCgoUG9ydClwb3J0KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBHZXQgYWxsIHRoZSBwb3J0cyBkZWZpbmVkIGhlcmUuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIE1hcCBnZXRQb3J0cygpCi0gIHsKLSAgICBIYXNoTWFwIGhhc2hNYXAgPSBuZXcgSGFzaE1hcCgpOwotICAgIGZvciAoSXRlcmF0b3IgaSA9IGdldEVQb3J0cygpLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBQb3J0IHBvcnQgPSAoUG9ydClpLm5leHQoKTsKLSAgICAgIGhhc2hNYXAucHV0KHBvcnQuZ2V0TmFtZSgpLCBwb3J0KTsKLSAgICB9Ci0gICAgcmV0dXJuIGhhc2hNYXA7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogR2V0IHRoZSBzcGVjaWZpZWQgcG9ydC4KLSAgICoKLSAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGRlc2lyZWQgcG9ydC4KLSAgICogQHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBwb3J0LCBvciBudWxsIGlmIHRoZXJlIHdhc24ndAotICAgKiBhbnkgbWF0Y2hpbmcgcG9ydAotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLlBvcnQgZ2V0UG9ydChTdHJpbmcgbmFtZSkKLSAgewotICAgIFBvcnQgcmVzdWx0ID0gbnVsbDsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSBnZXRFUG9ydHMoKS5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgUG9ydCBwb3J0ID0gKFBvcnQpaS5uZXh0KCk7Ci0gICAgICBpZiAobmFtZS5lcXVhbHMocG9ydC5nZXROYW1lKCkpKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBwb3J0OwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE5vdGlmaWNhdGlvbkNoYWluIGVJbnZlcnNlUmVtb3ZlKEludGVybmFsRU9iamVjdCBvdGhlckVuZCwgaW50IGZlYXR1cmVJRCwgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuU0VSVklDRV9fRVBPUlRTOgotICAgICAgcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRFUG9ydHMoKSkuYmFzaWNSZW1vdmUob3RoZXJFbmQsIG1zZ3MpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUludmVyc2VSZW1vdmUob3RoZXJFbmQsIGZlYXR1cmVJRCwgbXNncyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlNFUlZJQ0VfX1FOQU1FOgotICAgICAgcmV0dXJuIGdldFFOYW1lKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlNFUlZJQ0VfX1VOREVGSU5FRDoKLSAgICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gQm9vbGVhbi5UUlVFIDogQm9vbGVhbi5GQUxTRTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuU0VSVklDRV9fRVBPUlRTOgotICAgICAgcmV0dXJuIGdldEVQb3J0cygpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlNFUlZJQ0VfX1FOQU1FOgotICAgICAgc2V0UU5hbWUoKFFOYW1lKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuU0VSVklDRV9fVU5ERUZJTkVEOgotICAgICAgc2V0VW5kZWZpbmVkKCgoQm9vbGVhbiluZXdWYWx1ZSkuYm9vbGVhblZhbHVlKCkpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5TRVJWSUNFX19FUE9SVFM6Ci0gICAgICBnZXRFUG9ydHMoKS5jbGVhcigpOwotICAgICAgZ2V0RVBvcnRzKCkuYWRkQWxsKChDb2xsZWN0aW9uKW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlNFUlZJQ0VfX1FOQU1FOgotICAgICAgc2V0UU5hbWUoUU5BTUVfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5TRVJWSUNFX19VTkRFRklORUQ6Ci0gICAgICBzZXRVbmRlZmluZWQoVU5ERUZJTkVEX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuU0VSVklDRV9fRVBPUlRTOgotICAgICAgZ2V0RVBvcnRzKCkuY2xlYXIoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5TRVJWSUNFX19RTkFNRToKLSAgICAgIHJldHVybiBRTkFNRV9FREVGQVVMVCA9PSBudWxsID8gcU5hbWUgIT0gbnVsbCA6ICFRTkFNRV9FREVGQVVMVC5lcXVhbHMocU5hbWUpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5TRVJWSUNFX19VTkRFRklORUQ6Ci0gICAgICByZXR1cm4gdW5kZWZpbmVkICE9IFVOREVGSU5FRF9FREVGQVVMVDsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuU0VSVklDRV9fRVBPUlRTOgotICAgICAgcmV0dXJuIGVQb3J0cyAhPSBudWxsICYmICFlUG9ydHMuaXNFbXB0eSgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgaWYgKGVJc1Byb3h5KCkpCi0gICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoIiAocU5hbWU6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChxTmFtZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCB1bmRlZmluZWQ6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZCh1bmRlZmluZWQpOwotICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvLwotICAvLyBSZWNvbmNpbGUgbWV0aG9kcwotICAvLwotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgICBTdHJpbmcgbmFtZSA9IGNoYW5nZWRFbGVtZW50LmdldEF0dHJpYnV0ZShXU0RMQ29uc3RhbnRzLk5BTUVfQVRUUklCVVRFKTsKLSAgICBRTmFtZSBxbmFtZSA9IG5ldyBRTmFtZShkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpLCBuYW1lID09IG51bGwgPyAiIiA6IG5hbWUpOyAvLyROT04tTkxTLTEkCi0gICAgc2V0UU5hbWUocW5hbWUpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChFbGVtZW50IGNoaWxkLCBDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIHN3aXRjaCAoV1NETFV0aWwuZ2V0SW5zdGFuY2UoKS5nZXRXU0RMVHlwZShjaGlsZCkpCi0gICAgewotICAgICAgY2FzZSBXU0RMQ29uc3RhbnRzLlBPUlQ6Ci0gICAgICB7Ci0gICAgICAgIFBvcnQgcG9ydCA9IChQb3J0KSgoV1NETFBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoV1NETFBhY2thZ2UuZU5TX1VSSSkpLmdldFdTRExGYWN0b3J5KCkuY3JlYXRlUG9ydCgpOwotICAgICAgICBwb3J0LnNldEVuY2xvc2luZ0RlZmluaXRpb24oZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpKTsKLSAgICAgICAgZ2V0RVBvcnRzKCkuYWRkKHBvcnQpOwotICAgICAgICBwb3J0LnNldEVsZW1lbnQoY2hpbGQpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETENvbnN0YW50cy5ET0NVTUVOVEFUSU9OOgotICAgICAgewotICAgICAgICBzZXREb2N1bWVudGF0aW9uRWxlbWVudChjaGlsZCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgIHsKLSAgICAgICAgc3VwZXIuaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChjaGlsZCwgcmVtYWluaW5nTW9kZWxPYmplY3RzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlUmVjb25jaWxpYXRpb24oQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSByZW1haW5pbmdNb2RlbE9iamVjdHMuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIHJlbW92ZShpLm5leHQoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHJlbW92ZShPYmplY3QgbW9kZWxPYmplY3QpCi0gIHsKLSAgICBMaXN0IGxpc3QgPSBnZXRMaXN0KG1vZGVsT2JqZWN0KTsKLSAgICBpZiAobGlzdCAhPSBudWxsKQotICAgIHsKLSAgICAgIGxpc3QucmVtb3ZlKG1vZGVsT2JqZWN0KTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIExpc3QgZ2V0TGlzdChPYmplY3QgbW9kZWxPYmplY3QpCi0gIHsKLSAgICBMaXN0IHJlc3VsdCA9IG51bGw7Ci0gICAgaWYgKG1vZGVsT2JqZWN0IGluc3RhbmNlb2YgUG9ydCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBnZXRFUG9ydHMoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobW9kZWxPYmplY3QgaW5zdGFuY2VvZiBFeHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8vCi0gIC8vIEZvciByZWNvbmNpbGlhdGlvbjogTW9kZWwgLT4gRE9NCi0gIC8vCi0KLSAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlQXR0cmlidXRlKEVBdHRyaWJ1dGUgZUF0dHJpYnV0ZSkKLSAgewotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgcmV0dXJuOwotCi0gICAgc3VwZXIuY2hhbmdlQXR0cmlidXRlKGVBdHRyaWJ1dGUpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5TRVJWSUNFX19RTkFNRSkKLSAgICAgICAgbmljZVNldEF0dHJpYnV0ZSh0aGVFbGVtZW50LCBXU0RMQ29uc3RhbnRzLk5BTUVfQVRUUklCVVRFLCBnZXRRTmFtZSgpLmdldExvY2FsUGFydCgpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudCBjcmVhdGVFbGVtZW50KCkKLSAgewotICAgIEVsZW1lbnQgbmV3RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoV1NETENvbnN0YW50cy5TRVJWSUNFKTsKLSAgICBzZXRFbGVtZW50KG5ld0VsZW1lbnQpOwotCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpOwotICAgICAgRWxlbWVudCBjaGlsZCA9ICgoRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsKWV4dGVuc2liaWxpdHlFbGVtZW50KS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICB9Ci0KLSAgICBpdGVyYXRvciA9IGdldEVQb3J0cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBQb3J0IHBvcnQgPSAoUG9ydClpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBFbGVtZW50IGNoaWxkID0gKChQb3J0SW1wbClwb3J0KS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotCi19IC8vU2VydmljZUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9UeXBlc0ltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9UeXBlc0ltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUwZmEzZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvVHlwZXNJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5YU0RDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRE9NRXhjZXB0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlR5cGVzPC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVHlwZXNJbXBsIGV4dGVuZHMgRXh0ZW5zaWJsZUVsZW1lbnRJbXBsIGltcGxlbWVudHMgVHlwZXMKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgVHlwZXNJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkKLSAgewotICAgIHJldHVybiBXU0RMUGFja2FnZS5MaXRlcmFscy5UWVBFUzsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldFNjaGVtYXMoKQotICB7Ci0gICAgTGlzdCBhcnJheUxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgZm9yIChJdGVyYXRvciBpID0gZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClpLm5leHQoKTsKLSAgICAgIGlmICghKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpKQotICAgICAgewotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IHhzZGVlID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KWV4dGVuc2liaWxpdHlFbGVtZW50OwotICAgICAgaWYgKHhzZGVlLmdldFNjaGVtYSgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGFycmF5TGlzdC5hZGQoeHNkZWUuZ2V0U2NoZW1hKCkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYXJyYXlMaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0U2NoZW1hcyhTdHJpbmcgbmFtZXNwYWNlVVJJKQotICB7Ci0gICAgTGlzdCBzY2hlbWFzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGZvciAoSXRlcmF0b3IgaSA9IGdldFNjaGVtYXMoKS5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgWFNEU2NoZW1hIHNjaGVtYSA9IChYU0RTY2hlbWEpaS5uZXh0KCk7Ci0gICAgICBpZiAobmFtZXNwYWNlVVJJID09IG51bGwgJiYgc2NoZW1hLmdldFRhcmdldE5hbWVzcGFjZSgpID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHNjaGVtYXMuYWRkKHNjaGVtYSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChuYW1lc3BhY2VVUkkgIT0gbnVsbCAmJiBuYW1lc3BhY2VVUkkuZXF1YWxzKHNjaGVtYS5nZXRUYXJnZXROYW1lc3BhY2UoKSkpCi0gICAgICB7Ci0gICAgICAgIHNjaGVtYXMuYWRkKHNjaGVtYSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBzY2hlbWFzOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZU5vdGlmeShOb3RpZmljYXRpb24gbXNnKQotICB7Ci0gICAgc3VwZXIuZU5vdGlmeShtc2cpOwotCi0gICAgLy8gY3MuLiBpZiB3ZSd2ZSBhZGRlZCBhbiBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgYW5kIHRoZSBUeXBlcyBvYmplY3QgaXMgYWxyZWFkeSBhdHRhY2hlZCAKLSAgICAvLyB0byBhIHJlc291cmNlIHdlIG5lZWQgdG8gc2V0IHRoZSBzY2hlbWFMb2NhdGlvbiBmb3IgdGhlIGlubGluZSBzY2hlbWEuCi0gICAgLy8gSWYgbm90IHlldCBhdHRhY2hlZCB0byBhIHJlc291cmNlLCB0aGUgc2NoZW1hTG9jYXRpb24ncyB3aWxsIGJlIHNldCB2aWEgV1NETFJlc291cmNlSW1wbC5hdHRhY2hlZChFT2JqZWN0IG8pCi0gICAgLy8gICAgIAotICAgIGlmIChtc2cuZ2V0RmVhdHVyZSgpID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLkVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMgJiYgbXNnLmdldEV2ZW50VHlwZSgpID09IE5vdGlmaWNhdGlvbi5BREQpCi0gICAgewotICAgICAgaWYgKG1zZy5nZXROZXdWYWx1ZSgpIGluc3RhbmNlb2YgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsKQotICAgICAgewotICAgICAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgZWUgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsKW1zZy5nZXROZXdWYWx1ZSgpOwotICAgICAgICBpZiAoZWUuZ2V0U2NoZW1hKCkgIT0gbnVsbCAmJiBlZS5nZXRTY2hlbWEoKS5lUmVzb3VyY2UoKSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgZWUuZ2V0U2NoZW1hKCkuc2V0U2NoZW1hTG9jYXRpb24oZWUuZ2V0U2NoZW1hKCkuZVJlc291cmNlKCkuZ2V0VVJJKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvLwotICAvLyBSZWNvbmNpbGUgbWV0aG9kcwotICAvLwotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICB9Ci0KLSAgcHVibGljIHZvaWQgaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChFbGVtZW50IGNoaWxkLCBDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGlmIChYU0RDb25zdGFudHMuU0NIRU1BX0VMRU1FTlRfVEFHLmVxdWFscyhjaGlsZC5nZXRMb2NhbE5hbWUoKSkpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IHhzZGVlID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KCk7Ci0gICAgICAgIHhzZGVlLnNldEVuY2xvc2luZ0RlZmluaXRpb24oZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpKTsKLSAgICAgICAgeHNkZWUuc2V0RWxlbWVudChjaGlsZCk7IC8vIGNzIDogdGhpcyBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIGNyZWF0aW5nIHRoZSBpbmxpbmUgc2NoZW1hICAgICAgICAgICAgICAgCi0gICAgICAgIGFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHhzZGVlKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHN1cGVyLmhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoY2hpbGQsIHJlbWFpbmluZ01vZGVsT2JqZWN0cyk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlUmVjb25jaWxpYXRpb24oQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgICBmb3IgKEl0ZXJhdG9yIGkgPSByZW1haW5pbmdNb2RlbE9iamVjdHMuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIHJlbW92ZSh0aGlzLCBpLm5leHQoKSk7Ci0gICAgfQotICAgICgoRGVmaW5pdGlvbkltcGwpZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpKS5yZWNvbmNpbGVSZWZlcmVuY2VzKHRydWUpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcmVtb3ZlKE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBtb2RlbE9iamVjdCkKLSAgewotICAgIFR5cGVzIHR5cGVzID0gKFR5cGVzKWNvbXBvbmVudDsKLSAgICBMaXN0IGxpc3QgPSB0eXBlcy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgbGlzdC5yZW1vdmUobW9kZWxPYmplY3QpOwotICB9Ci0KLSAgcHVibGljIENvbGxlY3Rpb24gZ2V0TW9kZWxPYmplY3RzKE9iamVjdCBjb21wb25lbnQpCi0gIHsKLSAgICBUeXBlcyB0eXBlcyA9IChUeXBlcyljb21wb25lbnQ7Ci0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGxpc3QuYWRkQWxsKHR5cGVzLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgcmV0dXJuIGxpc3Q7Ci0gIH0KLQotICBwdWJsaWMgRWxlbWVudCBjcmVhdGVFbGVtZW50KCkKLSAgewotICAgIEVsZW1lbnQgbmV3RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoV1NETENvbnN0YW50cy5UWVBFUyk7Ci0gICAgc2V0RWxlbWVudChuZXdFbGVtZW50KTsKLQotICAgIC8vIEFkZCBjaGlsZHJlbgotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgICBpZiAoZGVmaW5pdGlvbiA9PSBudWxsKQotICAgICAgcmV0dXJuIG5ld0VsZW1lbnQ7Ci0KLSAgICBEb2N1bWVudCBkb2N1bWVudCA9IGRlZmluaXRpb24uZ2V0RG9jdW1lbnQoKTsKLSAgICBpZiAoZG9jdW1lbnQgPT0gbnVsbCkKLSAgICAgIGRvY3VtZW50ID0gKChEZWZpbml0aW9uSW1wbClkZWZpbml0aW9uKS51cGRhdGVEb2N1bWVudCgpOwotCi0gICAgSXRlcmF0b3IgaXRlciA9IGdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgIEVsZW1lbnQgZWwgPSBudWxsOwotICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5ID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWl0ZXIubmV4dCgpOwotICAgICAgZWwgPSBleHRlbnNpYmlsaXR5LmdldEVsZW1lbnQoKTsKLSAgICAgIGlmIChlbCAhPSBudWxsKQotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIEVsZW1lbnQgcmVQYXJlbnRlZCA9IChFbGVtZW50KWRvY3VtZW50LmltcG9ydE5vZGUoZWwsIHRydWUpOwotICAgICAgICAgIGV4dGVuc2liaWxpdHkuc2V0RWxlbWVudChyZVBhcmVudGVkKTsgLy8gcmVwbGFjZSB3aXRoIHRoZSBuZXcgb25lCi0gICAgICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChyZVBhcmVudGVkKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoRE9NRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgICAgIHJldHVybiBuZXdFbGVtZW50OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIEVsZW1lbnQgY2hpbGQgPSAoKEV4dGVuc2liaWxpdHlFbGVtZW50SW1wbClleHRlbnNpYmlsaXR5KS5jcmVhdGVFbGVtZW50KCk7Ci0gICAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBuZXdFbGVtZW50OwotICB9Ci19IC8vVHlwZXNJbXBsClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ZjliMmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uQ2hhaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0Q29udGFpbm1lbnRFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5JbnRlcm5hbEVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlVua25vd24gRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudEltcGwjZ2V0Q2hpbGRyZW4gPGVtPkNoaWxkcmVuPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCBleHRlbmRzIEV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCBpbXBsZW1lbnRzIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudAotewotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0Q2hpbGRyZW4oKSA8ZW0+Q2hpbGRyZW48L2VtPn0nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0Q2hpbGRyZW4oKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3QgY2hpbGRyZW47Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpCi0gIHsKLSAgICByZXR1cm4gV1NETFBhY2thZ2UuTGl0ZXJhbHMuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFTGlzdCBnZXRDaGlsZHJlbigpCi0gIHsKLSAgICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkKLSAgICB7Ci0gICAgICBjaGlsZHJlbiA9IG5ldyBFT2JqZWN0Q29udGFpbm1lbnRFTGlzdChVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuY2xhc3MsIHRoaXMsIFdTRExQYWNrYWdlLlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19DSElMRFJFTik7Ci0gICAgfQotICAgIHJldHVybiBjaGlsZHJlbjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE5vdGlmaWNhdGlvbkNoYWluIGVJbnZlcnNlUmVtb3ZlKEludGVybmFsRU9iamVjdCBvdGhlckVuZCwgaW50IGZlYXR1cmVJRCwgTm90aWZpY2F0aW9uQ2hhaW4gbXNncykKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOOgotICAgICAgcmV0dXJuICgoSW50ZXJuYWxFTGlzdClnZXRDaGlsZHJlbigpKS5iYXNpY1JlbW92ZShvdGhlckVuZCwgbXNncyk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSW52ZXJzZVJlbW92ZShvdGhlckVuZCwgZmVhdHVyZUlELCBtc2dzKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOOgotICAgICAgcmV0dXJuIGdldENoaWxkcmVuKCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOOgotICAgICAgZ2V0Q2hpbGRyZW4oKS5jbGVhcigpOwotICAgICAgZ2V0Q2hpbGRyZW4oKS5hZGRBbGwoKENvbGxlY3Rpb24pbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOOgotICAgICAgZ2V0Q2hpbGRyZW4oKS5jbGVhcigpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19DSElMRFJFTjoKLSAgICAgIHJldHVybiBjaGlsZHJlbiAhPSBudWxsICYmICFjaGlsZHJlbi5pc0VtcHR5KCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8vIAotICAvLyBSZWNvbmNpbGUgbWV0aG9kcwotICAvLwotCi0gIHB1YmxpYyB2b2lkIHNldEVsZW1lbnQoRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCAmJiAhaXNSZWNvbmNpbGluZykKLSAgICB7Ci0gICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiRXh0ZW5zaWJpbGl0eUVsZW1lbnQuc2V0RWxlbWVudCgpOiBQcmVzZXJ2aW5nIG9sZCBlbGVtZW50Iik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBzZXRFbGVtZW50R2VuKGVsZW1lbnQpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsLnJlY29uY2lsZUF0dHJpYnV0ZXMoKSIpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaGFuZGxlVW5yZWNvbmNpbGVkRWxlbWVudChFbGVtZW50IGNoaWxkLCBDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsLmhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoKSIpOwotICAgIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICBleHRlbnNpYmlsaXR5RWxlbWVudC5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKGdldEVuY2xvc2luZ0RlZmluaXRpb24oKSk7Ci0gICAgZXh0ZW5zaWJpbGl0eUVsZW1lbnQuc2V0RWxlbWVudChjaGlsZCk7Ci0KLSAgICAvLyBUT0RPLi4gIHdlIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY2hpbGQgc2hvdWxkIGdvIGluIHRoZSBpbiBjdXJyZW50IGxpc3QKLSAgICAvLyBzbyB0aGF0IGl0IGRvZXNuJ3QgYWx3YXlzIGVuZCB1cCBnb2luZyB0byB0aGUgZW5kIG9mIHRoZSBsaXN0IAotICAgIC8vIChzaW5jZSBhIG5ldyBlbGVtZW50IG1pZ2h0IGJlIGFkZGVkIGF0IHRoZSBzdGFydCkKLSAgICBnZXRDaGlsZHJlbigpLmFkZChleHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVSZWNvbmNpbGlhdGlvbihDb2xsZWN0aW9uIHJlbWFpbmluZ01vZGVsT2JqZWN0cykKLSAgewotICAgIGZvciAoSXRlcmF0b3IgaSA9IHJlbWFpbmluZ01vZGVsT2JqZWN0cy5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgcmVtb3ZlKHRoaXMsIGkubmV4dCgpKTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZW1vdmUoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IG1vZGVsT2JqZWN0KQotICB7Ci0gICAgVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50IHVlZSA9IChVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQpY29tcG9uZW50OwotICAgIGlmIChtb2RlbE9iamVjdCBpbnN0YW5jZW9mIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgICB7Ci0gICAgICB1ZWUuZ2V0Q2hpbGRyZW4oKS5yZW1vdmUobW9kZWxPYmplY3QpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAgIGlmIChkZWZpbml0aW9uID09IG51bGwpCi0gICAgICByZXR1cm4gbnVsbDsKLQotICAgIERvY3VtZW50IGRvY3VtZW50ID0gZGVmaW5pdGlvbi5nZXREb2N1bWVudCgpOwotICAgIGlmIChkb2N1bWVudCA9PSBudWxsKQotICAgICAgZG9jdW1lbnQgPSAoKERlZmluaXRpb25JbXBsKWRlZmluaXRpb24pLnVwZGF0ZURvY3VtZW50KCk7Ci0KLSAgICBFbGVtZW50IG5ld0VsZW1lbnQgPSBudWxsOwotICAgIGlmIChlbGVtZW50ICE9IG51bGwpIC8vIFRoaXMgaXMgYW4gb2xkIGVsZW1lbnQuCi0gICAgewotICAgICAgbmV3RWxlbWVudCA9IChFbGVtZW50KWRvY3VtZW50LmltcG9ydE5vZGUoZWxlbWVudCwgdHJ1ZSk7Ci0gICAgICBlbGVtZW50ID0gbmV3RWxlbWVudDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBnZXRFbGVtZW50VHlwZSgpLmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgU3RyaW5nIHF1YWxpZmllciA9IGRlZmluaXRpb24uZ2V0UHJlZml4KG5hbWVzcGFjZSk7Ci0gICAgICBuZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgKHF1YWxpZmllciA9PSBudWxsID8gIiIgOiBxdWFsaWZpZXIgKyAiOiIpICsgZ2V0RWxlbWVudFR5cGUoKS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICBlbGVtZW50ID0gbmV3RWxlbWVudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotCi0gIHByaXZhdGUgamF2YS51dGlsLk1hcCBwcm9wZXJ0aWVzID0gbmV3IGphdmEudXRpbC5IYXNoTWFwKCk7Ci0KLSAgcHVibGljIHZvaWQgc2V0QXR0cmlidXRlKFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSkKLSAgewotICAgIHByb3BlcnRpZXMucHV0KGtleSwgdmFsdWUpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlQXR0cmlidXRlKEVBdHRyaWJ1dGUgZUF0dHJpYnV0ZSkKLSAgewotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgcmV0dXJuOwotCi0gICAgc3VwZXIuY2hhbmdlQXR0cmlidXRlKGVBdHRyaWJ1dGUpOwotICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICBpZiAodGhlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gcHJvcGVydGllcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgICBqYXZhLnV0aWwuTWFwLkVudHJ5IGVudHJ5ID0gbnVsbDsKLSAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIGVudHJ5ID0gKGphdmEudXRpbC5NYXAuRW50cnkpaXRlcmF0b3IubmV4dCgpOwotICAgICAgICBTdHJpbmcgYXR0cmlidXRlID0gKFN0cmluZyllbnRyeS5nZXRLZXkoKTsKLSAgICAgICAgU3RyaW5nIHZhbHVlID0gKFN0cmluZyllbnRyeS5nZXRWYWx1ZSgpOwotICAgICAgICBuaWNlU2V0QXR0cmlidXRlKHRoZUVsZW1lbnQsIGF0dHJpYnV0ZSwgdmFsdWUpOwotICAgICAgfQotICAgIH0KLSAgfQotfSAvL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudEltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9XU0RMRWxlbWVudEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9XU0RMRWxlbWVudEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJkZTQzZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvV1NETEVsZW1lbnRJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdEl0ZXJhdG9yOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVN0cnVjdHVyYWxGZWF0dXJlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVPYmplY3RJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVDb250ZW50c0VMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5YU0RDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uVGV4dDsKLQotaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU3RyaW5nVG9rZW5pemVyOwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+Jy4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogPHA+Ci0gKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoKLSAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExFbGVtZW50SW1wbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCA8ZW0+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExFbGVtZW50SW1wbCNnZXRFbGVtZW50IDxlbT5FbGVtZW50PC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgV1NETEVsZW1lbnRJbXBsIGV4dGVuZHMgRU9iamVjdEltcGwgaW1wbGVtZW50cyBXU0RMRWxlbWVudAotewotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkgPGVtPkRvY3VtZW50YXRpb24gRWxlbWVudDwvZW0+fScgYXR0cmlidXRlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHNlZSAjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIEVsZW1lbnQgRE9DVU1FTlRBVElPTl9FTEVNRU5UX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSA8ZW0+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBFbGVtZW50IGRvY3VtZW50YXRpb25FbGVtZW50ID0gRE9DVU1FTlRBVElPTl9FTEVNRU5UX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RWxlbWVudCgpIDxlbT5FbGVtZW50PC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRFbGVtZW50KCkKLSAgICogQGdlbmVyYXRlZAotICAgKiBAb3JkZXJlZAotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBFbGVtZW50IEVMRU1FTlRfRURFRkFVTFQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFbGVtZW50KCkgPGVtPkVsZW1lbnQ8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldEVsZW1lbnQoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgRWxlbWVudCBlbGVtZW50ID0gRUxFTUVOVF9FREVGQVVMVDsKLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBpc1JlY29uY2lsaW5nID0gZmFsc2U7Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gdXBkYXRpbmdET00gPSBmYWxzZTsKLQotICBwcm90ZWN0ZWQgRUxpc3Qgd3NkbENvbnRlbnRzOwotCi0gIHByaXZhdGUgRGVmaW5pdGlvbiBlbmNsb3NpbmdEZWZpbml0aW9uOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIFdTRExFbGVtZW50SW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpCi0gIHsKLSAgICByZXR1cm4gV1NETFBhY2thZ2UuTGl0ZXJhbHMuV1NETF9FTEVNRU5UOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRWxlbWVudCBnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gZG9jdW1lbnRhdGlvbkVsZW1lbnQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERvY3VtZW50YXRpb25FbGVtZW50KEVsZW1lbnQgbmV3RG9jdW1lbnRhdGlvbkVsZW1lbnQpCi0gIHsKLSAgICBFbGVtZW50IG9sZERvY3VtZW50YXRpb25FbGVtZW50ID0gZG9jdW1lbnRhdGlvbkVsZW1lbnQ7Ci0gICAgZG9jdW1lbnRhdGlvbkVsZW1lbnQgPSBuZXdEb2N1bWVudGF0aW9uRWxlbWVudDsKLSAgICBpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpCi0gICAgICBlTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCgKLSAgICAgICAgdGhpcywKLSAgICAgICAgTm90aWZpY2F0aW9uLlNFVCwKLSAgICAgICAgV1NETFBhY2thZ2UuV1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQsCi0gICAgICAgIG9sZERvY3VtZW50YXRpb25FbGVtZW50LAotICAgICAgICBkb2N1bWVudGF0aW9uRWxlbWVudCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRWxlbWVudCBnZXRFbGVtZW50KCkKLSAgewotICAgIHJldHVybiBlbGVtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbGVtZW50R2VuKEVsZW1lbnQgbmV3RWxlbWVudCkKLSAgewotICAgIEVsZW1lbnQgb2xkRWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgZWxlbWVudCA9IG5ld0VsZW1lbnQ7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuV1NETF9FTEVNRU5UX19FTEVNRU5ULCBvbGRFbGVtZW50LCBlbGVtZW50KSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbmNsb3NpbmdEZWZpbml0aW9uKERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgIGVuY2xvc2luZ0RlZmluaXRpb24gPSBkZWZpbml0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5XU0RMX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDoKLSAgICAgIHJldHVybiBnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5XU0RMX0VMRU1FTlRfX0VMRU1FTlQ6Ci0gICAgICByZXR1cm4gZ2V0RWxlbWVudCgpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLldTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOgotICAgICAgc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKEVsZW1lbnQpbmV3VmFsdWUpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5XU0RMX0VMRU1FTlRfX0VMRU1FTlQ6Ci0gICAgICBzZXRFbGVtZW50KChFbGVtZW50KW5ld1ZhbHVlKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLldTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UOgotICAgICAgc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoRE9DVU1FTlRBVElPTl9FTEVNRU5UX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuV1NETF9FTEVNRU5UX19FTEVNRU5UOgotICAgICAgc2V0RWxlbWVudChFTEVNRU5UX0VERUZBVUxUKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5XU0RMX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDoKLSAgICAgIHJldHVybiBET0NVTUVOVEFUSU9OX0VMRU1FTlRfRURFRkFVTFQgPT0gbnVsbAotICAgICAgICA/IGRvY3VtZW50YXRpb25FbGVtZW50ICE9IG51bGwgOiAhRE9DVU1FTlRBVElPTl9FTEVNRU5UX0VERUZBVUxULmVxdWFscyhkb2N1bWVudGF0aW9uRWxlbWVudCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLldTRExfRUxFTUVOVF9fRUxFTUVOVDoKLSAgICAgIHJldHVybiBFTEVNRU5UX0VERUZBVUxUID09IG51bGwgPyBlbGVtZW50ICE9IG51bGwgOiAhRUxFTUVOVF9FREVGQVVMVC5lcXVhbHMoZWxlbWVudCk7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBpZiAoZUlzUHJveHkoKSkKLSAgICAgIHJldHVybiBzdXBlci50b1N0cmluZygpOwotCi0gICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiIChkb2N1bWVudGF0aW9uRWxlbWVudDogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKGRvY3VtZW50YXRpb25FbGVtZW50KTsKLSAgICByZXN1bHQuYXBwZW5kKCIsIGVsZW1lbnQ6ICIpOyAvLyROT04tTkxTLTEkCi0gICAgcmVzdWx0LmFwcGVuZChlbGVtZW50KTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotICB9Ci0KLSAgLy8KLSAgLy8gUmVjb25jaWxhdGlvbiBtZXRob2RzOiBET00gLT4gTW9kZWwKLSAgLy8KLQotICBwdWJsaWMgc3RhdGljIGNsYXNzIFdTRExDb250ZW50c0VMaXN0IGV4dGVuZHMgRUNvbnRlbnRzRUxpc3QKLSAgewotICAgIFdTRExDb250ZW50c0VMaXN0KEVPYmplY3QgZU9iamVjdCwgRVN0cnVjdHVyYWxGZWF0dXJlW10gZVN0cnVjdHVyYWxGZWF0dXJlcykKLSAgICB7Ci0gICAgICBzdXBlcihlT2JqZWN0LCBlU3RydWN0dXJhbEZlYXR1cmVzKTsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgTGlzdEl0ZXJhdG9yIG5ld0xpc3RJdGVyYXRvcigpCi0gICAgewotICAgICAgcmV0dXJuIG5ldyBGZWF0dXJlSXRlcmF0b3JJbXBsKGVPYmplY3QsIGVTdHJ1Y3R1cmFsRmVhdHVyZXMpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBib29sZWFuIGlzSW5jbHVkZWQoRVN0cnVjdHVyYWxGZWF0dXJlIGVTdHJ1Y3R1cmFsRmVhdHVyZSkKLSAgICB7Ci0gICAgICBFUmVmZXJlbmNlIGVSZWZlcmVuY2UgPSAoRVJlZmVyZW5jZSllU3RydWN0dXJhbEZlYXR1cmU7Ci0gICAgICByZXR1cm4gIWVSZWZlcmVuY2UuaXNUcmFuc2llbnQoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgTGlzdCBiYXNpY0xpc3QoKQotICAgIHsKLSAgICAgIHJldHVybiBuZXcgV1NETENvbnRlbnRzRUxpc3QoZU9iamVjdCwgZVN0cnVjdHVyYWxGZWF0dXJlcyk7Ci0gICAgfQotCi0gICAgcHVibGljIEl0ZXJhdG9yIGJhc2ljSXRlcmF0b3IoKQotICAgIHsKLSAgICAgIHJldHVybiBuZXcgRmVhdHVyZUl0ZXJhdG9ySW1wbChlT2JqZWN0LCBlU3RydWN0dXJhbEZlYXR1cmVzKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEZlYXR1cmVJdGVyYXRvckltcGwgZXh0ZW5kcyBFQ29udGVudHNFTGlzdC5GZWF0dXJlSXRlcmF0b3JJbXBsCi0gICAgewotICAgICAgcHVibGljIEZlYXR1cmVJdGVyYXRvckltcGwoRU9iamVjdCBlT2JqZWN0KQotICAgICAgewotICAgICAgICBzdXBlcihlT2JqZWN0LCAoRVN0cnVjdHVyYWxGZWF0dXJlW10pKChCYXNpY0VMaXN0KWVPYmplY3QuZUNsYXNzKCkuZ2V0RUFsbFJlZmVyZW5jZXMoKSkuZGF0YSgpKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIEZlYXR1cmVJdGVyYXRvckltcGwoRU9iamVjdCBlT2JqZWN0LCBFU3RydWN0dXJhbEZlYXR1cmVbXSBlU3RydWN0dXJhbEZlYXR1cmVzKQotICAgICAgewotICAgICAgICBzdXBlcihlT2JqZWN0LCBlU3RydWN0dXJhbEZlYXR1cmVzKTsKLSAgICAgIH0KLQotICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNJbmNsdWRlZChFU3RydWN0dXJhbEZlYXR1cmUgZVN0cnVjdHVyYWxGZWF0dXJlKQotICAgICAgewotICAgICAgICBFUmVmZXJlbmNlIGVSZWZlcmVuY2UgPSAoRVJlZmVyZW5jZSllU3RydWN0dXJhbEZlYXR1cmU7Ci0gICAgICAgIHJldHVybiAhZVJlZmVyZW5jZS5pc1RyYW5zaWVudCgpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBFTGlzdCBnZXRXU0RMQ29udGVudHMoKQotICB7Ci0gICAgaWYgKHdzZGxDb250ZW50cyA9PSBudWxsKQotICAgIHsKLSAgICAgIHdzZGxDb250ZW50cyA9IG5ldyBXU0RMQ29udGVudHNFTGlzdCh0aGlzLCAoRVN0cnVjdHVyYWxGZWF0dXJlW10pKChCYXNpY0VMaXN0KWVDbGFzcygpLmdldEVBbGxDb250YWlubWVudHMoKSkuZGF0YSgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gd3NkbENvbnRlbnRzOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RWxlbWVudChFbGVtZW50IGVsZW1lbnQpCi0gIHsKLSAgICBpZiAoZWxlbWVudCA9PSBudWxsKQotICAgIHsKLSAgICAgIGlzUmVjb25jaWxpbmcgPSB0cnVlOwotICAgICAgc2V0RWxlbWVudEdlbihudWxsKTsKLSAgICAgIGZvciAoSXRlcmF0b3IgY29udGVudHMgPSBnZXRXU0RMQ29udGVudHMoKS5pdGVyYXRvcigpOyBjb250ZW50cy5oYXNOZXh0KCk7KQotICAgICAgewotICAgICAgICBPYmplY3Qgb2JqID0gY29udGVudHMubmV4dCgpOwotICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgV1NETEVsZW1lbnRJbXBsKQotICAgICAgICB7Ci0gICAgICAgICAgV1NETEVsZW1lbnRJbXBsIGNvbnRlbnQgPSAoV1NETEVsZW1lbnRJbXBsKW9iajsKLSAgICAgICAgICBjb250ZW50LnNldEVsZW1lbnQobnVsbCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlzUmVjb25jaWxpbmcgPSBmYWxzZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHNldEVsZW1lbnRHZW4oZWxlbWVudCk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZU5vdGlmeShOb3RpZmljYXRpb24gbXNnKQotICB7Ci0gICAgaW50IGV2ZW50VHlwZSA9IG1zZy5nZXRFdmVudFR5cGUoKTsKLSAgICBPYmplY3QgZmVhdHVyZSA9IG1zZy5nZXRGZWF0dXJlKCk7Ci0gICAgT2JqZWN0IG9sZFZhbHVlID0gbXNnLmdldE9sZFZhbHVlKCk7Ci0gICAgT2JqZWN0IG5ld1ZhbHVlID0gbXNnLmdldE5ld1ZhbHVlKCk7Ci0KLSAgICBpZiAoZUNsYXNzKCkuZ2V0RUFsbFJlZmVyZW5jZXMoKS5jb250YWlucyhmZWF0dXJlKSkKLSAgICB7Ci0gICAgICBFUmVmZXJlbmNlIGVSZWZlcmVuY2UgPSAoRVJlZmVyZW5jZSlmZWF0dXJlOwotICAgICAgaWYgKGVSZWZlcmVuY2UuaXNDb250YWlubWVudCgpICYmICFlUmVmZXJlbmNlLmlzVHJhbnNpZW50KCkpCi0gICAgICB7Ci0gICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uQUREOgotICAgICAgICAgIHsKLSAgICAgICAgICAgIGFkb3B0Q29udGVudChlUmVmZXJlbmNlLCBuZXdWYWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uQUREX01BTlk6Ci0gICAgICAgICAgewotICAgICAgICAgICAgZm9yIChJdGVyYXRvciBuZXdWYWx1ZXMgPSAoKENvbGxlY3Rpb24pbmV3VmFsdWUpLml0ZXJhdG9yKCk7IG5ld1ZhbHVlcy5oYXNOZXh0KCk7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IChXU0RMRWxlbWVudCluZXdWYWx1ZXMubmV4dCgpOwotICAgICAgICAgICAgICBhZG9wdENvbnRlbnQoZVJlZmVyZW5jZSwgd3NkbEVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uLlJFTU9WRToKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAob2xkVmFsdWUgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgb3JwaGFuQ29udGVudChlUmVmZXJlbmNlLCAvKihXU0RMRWxlbWVudCkqL29sZFZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXNlIE5vdGlmaWNhdGlvbi5SRU1PVkVfTUFOWToKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKEl0ZXJhdG9yIG9sZFZhbHVlcyA9ICgoQ29sbGVjdGlvbilvbGRWYWx1ZSkuaXRlcmF0b3IoKTsgb2xkVmFsdWVzLmhhc05leHQoKTspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIEVPYmplY3Qgb2JqZWN0ID0gKEVPYmplY3Qpb2xkVmFsdWVzLm5leHQoKTsKLSAgICAgICAgICAgICAgb3JwaGFuQ29udGVudChlUmVmZXJlbmNlLCBvYmplY3QpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uLk1PVkU6Ci0gICAgICAgICAgewotICAgICAgICAgICAgbW92ZUNvbnRlbnQoZVJlZmVyZW5jZSwgKFdTRExFbGVtZW50KW5ld1ZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXNlIE5vdGlmaWNhdGlvbi5TRVQ6Ci0gICAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uVU5TRVQ6Ci0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKG9sZFZhbHVlICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG9ycGhhbkNvbnRlbnQoZVJlZmVyZW5jZSwgb2xkVmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGFkb3B0Q29udGVudChlUmVmZXJlbmNlLCBuZXdWYWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgc3dpdGNoIChldmVudFR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIE5vdGlmaWNhdGlvbi5BREQ6Ci0gICAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uQUREX01BTlk6Ci0gICAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uUkVNT1ZFOgotICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uLlJFTU9WRV9NQU5ZOgotICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uLk1PVkU6Ci0gICAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uU0VUOgotICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uLlVOU0VUOgotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYW5nZVJlZmVyZW5jZShlUmVmZXJlbmNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChlQ2xhc3MoKS5nZXRFQWxsQXR0cmlidXRlcygpLmNvbnRhaW5zKGZlYXR1cmUpKQotICAgIHsKLSAgICAgIEVBdHRyaWJ1dGUgZUF0dHJpYnV0ZSA9IChFQXR0cmlidXRlKWZlYXR1cmU7Ci0gICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkKLSAgICAgIHsKLSAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uQUREOgotICAgICAgICBjYXNlIE5vdGlmaWNhdGlvbi5BRERfTUFOWToKLSAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uUkVNT1ZFOgotICAgICAgICBjYXNlIE5vdGlmaWNhdGlvbi5SRU1PVkVfTUFOWToKLSAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uTU9WRToKLSAgICAgICAgY2FzZSBOb3RpZmljYXRpb24uU0VUOgotICAgICAgICBjYXNlIE5vdGlmaWNhdGlvbi5VTlNFVDoKLSAgICAgICAgewotICAgICAgICAgIGNoYW5nZUF0dHJpYnV0ZShlQXR0cmlidXRlKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBzdXBlci5lTm90aWZ5KG1zZyk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBvcnBoYW5Db250ZW50KEVSZWZlcmVuY2UgZVJlZmVyZW5jZSwgT2JqZWN0IG9iaikKLSAgewotICAgIGlmICghaXNSZWNvbmNpbGluZykKLSAgICB7Ci0gICAgICBFbGVtZW50IHBhcmVudCA9IGdldEVsZW1lbnQoKTsKLSAgICAgIGlmIChwYXJlbnQgIT0gbnVsbCAmJiBvYmogIT0gbnVsbCAmJiBvYmogaW5zdGFuY2VvZiBXU0RMRWxlbWVudCkKLSAgICAgIHsKLSAgICAgICAgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQgPSAoV1NETEVsZW1lbnQpb2JqOwotICAgICAgICBFbGVtZW50IGNvbnRlbnRFbGVtZW50ID0gd3NkbEVsZW1lbnQuZ2V0RWxlbWVudCgpOwotICAgICAgICBpZiAoY29udGVudEVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgICBuaWNlUmVtb3ZlQ2hpbGQoY29udGVudEVsZW1lbnQuZ2V0UGFyZW50Tm9kZSgpLCBjb250ZW50RWxlbWVudCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIDsvL1N5c3RlbS5vdXQucHJpbnRsbigiV1NETEVsZW1lbnQub3JwaGFuQ29udGVudCgpLCBPYmplY3QgaXM6ICIgKyBvYmopOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIG5pY2VSZW1vdmVDaGlsZChOb2RlIHBhcmVudCwgTm9kZSBjaGlsZCkKLSAgewotICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgIHsKLSAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiKioqKiBjeWNsaWMgZG9tIHdyaXRlYmFjayBhdm9pZGVkICIgKyBlQ2xhc3MoKS5nZXROYW1lKCkpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3JjZU5pY2VSZW1vdmVDaGlsZChwYXJlbnQsIGNoaWxkKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGZvcmNlTmljZVJlbW92ZUNoaWxkKE5vZGUgcGFyZW50LCBOb2RlIGNoaWxkKQotICB7Ci0gICAgdXBkYXRpbmdET00gPSB0cnVlOwotCi0gICAgYm9vbGVhbiBkb25lID0gZmFsc2U7Ci0KLSAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIj8qIik7Ci0gICAgTm9kZSBwcmV2aW91cyA9IGNoaWxkLmdldFByZXZpb3VzU2libGluZygpOwotICAgIGlmIChwcmV2aW91cyAhPSBudWxsICYmIHByZXZpb3VzLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5URVhUX05PREUpCi0gICAgewotICAgICAgVGV4dCB0ZXh0ID0gKFRleHQpcHJldmlvdXM7Ci0gICAgICBTdHJpbmcgZGF0YSA9IHRleHQuZ2V0RGF0YSgpOwotICAgICAgaW50IGluZGV4ID0gZGF0YS5sYXN0SW5kZXhPZignXG4nKTsKLSAgICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGluZGV4IC0gMSA+IDAgJiYgZGF0YS5jaGFyQXQoaW5kZXggLSAxKSA9PSAnXHInKQotICAgICAgICB7Ci0gICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIjEqIik7Ci0gICAgICAgICAgdGV4dC5kZWxldGVEYXRhKGluZGV4IC0gMSwgZGF0YS5sZW5ndGgoKSAtIGluZGV4ICsgMSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIjIqIik7Ci0gICAgICAgICAgdGV4dC5kZWxldGVEYXRhKGluZGV4LCBkYXRhLmxlbmd0aCgpIC0gaW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiTm8gcmV0dXJuIGJlZm9yZSEiKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiTm8gdGV4dCBub2RlIGJlZm9yZSEiKTsKLSAgICB9Ci0KLSAgICBpZiAoIWRvbmUpCi0gICAgewotICAgICAgZm9yIChOb2RlIG5leHQgPSBjaGlsZC5nZXROZXh0U2libGluZygpOyBuZXh0ICE9IG51bGw7IG5leHQgPSBuZXh0LmdldE5leHRTaWJsaW5nKCkpCi0gICAgICB7Ci0gICAgICAgIGlmIChuZXh0LmdldE5vZGVUeXBlKCkgPT0gTm9kZS5URVhUX05PREUpCi0gICAgICAgIHsKLSAgICAgICAgICBUZXh0IHRleHQgPSAoVGV4dCluZXh0OwotICAgICAgICAgIFN0cmluZyBkYXRhID0gdGV4dC5nZXREYXRhKCk7Ci0gICAgICAgICAgLyoKLSAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgieHggIiArIGRhdGEubGVuZ3RoKCkgKyAiOjogIik7Ci0gICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGgoKTsgKytpKQotICAgICAgICAgICB7Ci0gICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAiICsgSW50ZWdlci50b0hleFN0cmluZygoaW50KWRhdGEuY2hhckF0KGkpKSk7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7Ci0gICAgICAgICAgICovCi0KLSAgICAgICAgICBpbnQgaW5kZXggPSBkYXRhLmluZGV4T2YoJ1xuJyk7Ci0gICAgICAgICAgaWYgKGluZGV4ICE9IC0xKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpbmRleCArIDEgPCBkYXRhLmxlbmd0aCgpICYmIGRhdGEuY2hhckF0KGluZGV4ICsgMSkgPT0gJ1xyJykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIzKiIpOwotICAgICAgICAgICAgICB0ZXh0LmRlbGV0ZURhdGEoMCwgaW5kZXggKyAyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIjQqIik7Ci0gICAgICAgICAgICAgIHRleHQuZGVsZXRlRGF0YSgwLCBpbmRleCArIDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIk5vIHJldHVybiBhZnRlciEiKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmV4dC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlJlbW92aW5nIGZyb20tLS0tLS0tLVxuICAgICAiICsgcGFyZW50KTsKLSAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlJlbW92aW5nLS0tLS0tLS1cbiAgICAgIiArIGNoaWxkKTsKLSAgICBpZiAocGFyZW50ICE9IG51bGwpCi0gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoY2hpbGQpOwotCi0gICAgdXBkYXRpbmdET00gPSBmYWxzZTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIG1vdmVDb250ZW50KEVSZWZlcmVuY2UgZVJlZmVyZW5jZSwgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICB7Ci0gICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIioqKiogY3ljbGljIGRvbSB3cml0ZWJhY2sgYXZvaWRlZCAiICsgZUNsYXNzKCkuZ2V0TmFtZSgpKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIm1vdmluZyAiICsgeHNkQ29uY3JldGVDb21wb25lbnQpOwotICAgIE5vZGUgcGFyZW50ID0gZ2V0QWRvcHRpb25QYXJlbnROb2RlKGVSZWZlcmVuY2UpOwotICAgIGlmIChwYXJlbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBFbGVtZW50IGNoaWxkID0gd3NkbEVsZW1lbnQuZ2V0RWxlbWVudCgpOwotICAgICAgaWYgKGNoaWxkICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIExpc3QgY29udGVudHMgPSBnZXRXU0RMQ29udGVudHMoKTsKLSAgICAgICAgaW50IGluZGV4ID0gY29udGVudHMuaW5kZXhPZih3c2RsRWxlbWVudCk7Ci0gICAgICAgIG5pY2VSZW1vdmVDaGlsZChwYXJlbnQsIGNoaWxkKTsKLSAgICAgICAgbmljZUluc2VydEJlZm9yZShwYXJlbnQsIGNoaWxkLCArK2luZGV4ID09IGNvbnRlbnRzLnNpemUoKSA/IG51bGwgOiAoKFdTRExFbGVtZW50KWNvbnRlbnRzLmdldChpbmRleCkpLmdldEVsZW1lbnQoKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJtb3ZlZCAiICsgeHNkQ29uY3JldGVDb21wb25lbnQpOwotCi0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBhZG9wdENvbnRlbnQoRVJlZmVyZW5jZSBlUmVmZXJlbmNlLCBPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFdTRExFbGVtZW50KQotICAgIHsKLSAgICAgIFdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gKFdTRExFbGVtZW50KW9iamVjdDsKLSAgICAgIGlmIChpc1JlY29uY2lsaW5nKQotICAgICAgewotICAgICAgICBpZiAod3NkbEVsZW1lbnQuZ2V0RWxlbWVudCgpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICAoKFdTRExFbGVtZW50SW1wbCl3c2RsRWxlbWVudCkuZWxlbWVudENoYW5nZWQod3NkbEVsZW1lbnQuZ2V0RWxlbWVudCgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBFbGVtZW50IGNoaWxkRWxlbWVudCA9IHdzZGxFbGVtZW50LmdldEVsZW1lbnQoKTsKLSAgICAgICAgaWYgKGdldEVsZW1lbnQoKSAhPSBudWxsICYmIChjaGlsZEVsZW1lbnQgPT0gbnVsbCB8fCBjaGlsZEVsZW1lbnQuZ2V0UGFyZW50Tm9kZSgpID09IG51bGwpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGNoaWxkRWxlbWVudCAhPSBudWxsICYmIGNoaWxkRWxlbWVudC5nZXRPd25lckRvY3VtZW50KCkgIT0gZ2V0RWxlbWVudCgpLmdldE93bmVyRG9jdW1lbnQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB3c2RsRWxlbWVudC5zZXRFbGVtZW50KG51bGwpOwotICAgICAgICAgICAgY2hpbGRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBoYW5kbGVFbGVtZW50Rm9yQWRvcHQoZVJlZmVyZW5jZSwgd3NkbEVsZW1lbnQpOwotICAgICAgICAgICgoV1NETEVsZW1lbnRJbXBsKXdzZGxFbGVtZW50KS51cGRhdGVFbGVtZW50KCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAgICAgaWYgKGRlZmluaXRpb24gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgKChXU0RMRWxlbWVudEltcGwpd3NkbEVsZW1lbnQpLmFkb3B0QnkoZGVmaW5pdGlvbik7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIE5hbWVzcGFjZSkKLSAgICB7Ci0gICAgICAvLyBBZGQgYSBuYW1lc3BhY2UgYXR0cmlidXRlIHRvIHRoZSBEZWZpbml0aW9ucyBlbGVtZW50LgotICAgICAgTmFtZXNwYWNlIG5zID0gKE5hbWVzcGFjZSlvYmplY3Q7Ci0gICAgICBOb2RlIGFkb3B0aW9uUGFyZW50ID0gZ2V0QWRvcHRpb25QYXJlbnROb2RlKGVSZWZlcmVuY2UpOyAvLyBEZWZpbml0aW9ucyBub2RlCi0gICAgICAvLyBLQjogQXNzdW1wdGlvbiAtIFRoZSBwcmVmaXggaXMgdW5pcXVlIGlmIHdlIGFyZSBoZXJlIChieSB0aGUgRGVmaW5pdGlvbnMgbW9kZWwpLiAKLSAgICAgIGlmIChhZG9wdGlvblBhcmVudCAhPSBudWxsKQotICAgICAgewotICAgICAgICAoKEVsZW1lbnQpYWRvcHRpb25QYXJlbnQpLnNldEF0dHJpYnV0ZSgieG1sbnM6IiArIG5zLmdldFByZWZpeCgpLCBucy5nZXRVUkkoKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIE5vZGUgZ2V0QWRvcHRpb25QYXJlbnROb2RlKEVSZWZlcmVuY2UgZVJlZmVyZW5jZSkKLSAgewotICAgIHJldHVybiBnZXRFbGVtZW50KCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVFbGVtZW50Rm9yQWRvcHQoRVJlZmVyZW5jZSBlUmVmZXJlbmNlLCBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCkKLSAgewotICAgIC8vIEVzdGFibGlzaCBET00gcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcAotCi0gICAgTm9kZSBhZG9wdGlvblBhcmVudCA9IGdldEFkb3B0aW9uUGFyZW50Tm9kZShlUmVmZXJlbmNlKTsKLSAgICBFbGVtZW50IGNoaWxkRWxlbWVudCA9IHdzZGxFbGVtZW50LmdldEVsZW1lbnQoKTsKLSAgICBFbGVtZW50IHJlZmVyZW5jZWRFbGVtZW50ID0gbnVsbDsKLQotICAgIGZvciAoSXRlcmF0b3IgY29udGVudHMgPSBnZXRXU0RMQ29udGVudHMoKS5pdGVyYXRvcigpOyBjb250ZW50cy5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIGlmIChjb250ZW50cy5uZXh0KCkgPT0gd3NkbEVsZW1lbnQpCi0gICAgICB7Ci0gICAgICAgIGlmIChjb250ZW50cy5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBPYmplY3QgbmV4dCA9IGNvbnRlbnRzLm5leHQoKTsKLSAgICAgICAgICBpZiAobmV4dCBpbnN0YW5jZW9mIFdTRExFbGVtZW50KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlZmVyZW5jZWRFbGVtZW50ID0gKChXU0RMRWxlbWVudCluZXh0KS5nZXRFbGVtZW50KCk7Ci0gICAgICAgICAgICB3aGlsZSAocmVmZXJlbmNlZEVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgTm9kZSBwYXJlbnQgPSByZWZlcmVuY2VkRWxlbWVudC5nZXRQYXJlbnROb2RlKCk7Ci0gICAgICAgICAgICAgIGlmIChwYXJlbnQgPT0gbnVsbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlZmVyZW5jZWRFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIGlmIChwYXJlbnQgPT0gYWRvcHRpb25QYXJlbnQpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIGlmIChwYXJlbnQuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlZmVyZW5jZWRFbGVtZW50ID0gKEVsZW1lbnQpcGFyZW50OwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLQotICAgIGlmIChjaGlsZEVsZW1lbnQgPT0gbnVsbCkKLSAgICB7Ci0gICAgICAoKFdTRExFbGVtZW50SW1wbCl3c2RsRWxlbWVudCkuaXNSZWNvbmNpbGluZyA9IHRydWU7Ci0gICAgICBjaGlsZEVsZW1lbnQgPSAoKFdTRExFbGVtZW50SW1wbCl3c2RsRWxlbWVudCkuY3JlYXRlRWxlbWVudCgpOwotICAgICAgKChXU0RMRWxlbWVudEltcGwpd3NkbEVsZW1lbnQpLmlzUmVjb25jaWxpbmcgPSBmYWxzZTsKLSAgICAgIGlmIChjaGlsZEVsZW1lbnQgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIm5vdCBjcmVhdGVkISAiICsgd3NkbEVsZW1lbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgfQotCi0gICAgYm9vbGVhbiBpc0F0dGFjaGVkID0gZmFsc2U7Ci0gICAgZm9yIChOb2RlIHJvb3REb2N1bWVudCA9IGNoaWxkRWxlbWVudDsgcm9vdERvY3VtZW50ICE9IG51bGw7IHJvb3REb2N1bWVudCA9IHJvb3REb2N1bWVudC5nZXRQYXJlbnROb2RlKCkpCi0gICAgewotICAgICAgaWYgKFdTRExDb25zdGFudHMubm9kZVR5cGUocm9vdERvY3VtZW50KSA9PSBXU0RMQ29uc3RhbnRzLkRFRklOSVRJT04pCi0gICAgICB7Ci0gICAgICAgIGlzQXR0YWNoZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWlzQXR0YWNoZWQpCi0gICAgewotICAgICAgLy8gSWYgd2UncmUgZGVhbGluZyB3aXRoIGEgZG9jdW1lbnRhdGlvbiBlbGVtZW50IHdlIG5lZWQgdG8gcHV0IGl0IGZpcnN0IGluIHRoZSBsaXN0Ci0KLSAgICAgIGlmIChyZWZlcmVuY2VkRWxlbWVudCA9PSBudWxsICYmIFdTRExDb25zdGFudHMubm9kZVR5cGUoY2hpbGRFbGVtZW50KSA9PSBXU0RMQ29uc3RhbnRzLkRPQ1VNRU5UQVRJT04gJiYgIWVSZWZlcmVuY2UuaXNNYW55KCkpCi0gICAgICB7Ci0gICAgICAgIC8vIEhlcmUgd2UgZmluZCB0aGUgZmlyc3QgZWxlbWVudCBub2RlIGluIHRoZSBsaXN0LCB0aGUgZG9jdW1lbnRhdGlvbiBlbGVtZW50IG5lZWRzIHRvIGdvIGJlZm9yZSB0aGlzIGVsZW1lbnQKLQotICAgICAgICBmb3IgKE5vZGUgY2hpbGQgPSBhZG9wdGlvblBhcmVudC5nZXRGaXJzdENoaWxkKCk7IGNoaWxkICE9IG51bGw7IGNoaWxkID0gY2hpbGQuZ2V0TmV4dFNpYmxpbmcoKSkKLSAgICAgICAgewotICAgICAgICAgIGlmIChjaGlsZC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlZmVyZW5jZWRFbGVtZW50ID0gKEVsZW1lbnQpY2hpbGQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vcmVmZXJlbmNlZEVsZW1lbnQgPSBjb21wdXRlVG9wTGV2ZWxSZWZDaGlsZChhZG9wdGlvblBhcmVudCxjaGlsZEVsZW1lbnQpOyAgICAgCi0gICAgICBuaWNlSW5zZXJ0QmVmb3JlKGFkb3B0aW9uUGFyZW50LCBjaGlsZEVsZW1lbnQsIHJlZmVyZW5jZWRFbGVtZW50KTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBuaWNlSW5zZXJ0QmVmb3JlKE5vZGUgcGFyZW50LCBOb2RlIG5ld0NoaWxkLCBOb2RlIHJlZmVyZW5jZUNoaWxkKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgewotICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIqKioqIGN5Y2xpYyBkb20gd3JpdGViYWNrIGF2b2lkZWQgIiArIGVDbGFzcygpLmdldE5hbWUoKSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZm9yY2VOaWNlSW5zZXJ0QmVmb3JlKHBhcmVudCwgbmV3Q2hpbGQsIHJlZmVyZW5jZUNoaWxkKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGZvcmNlTmljZUluc2VydEJlZm9yZShOb2RlIHBhcmVudCwgTm9kZSBuZXdDaGlsZCwgTm9kZSByZWZlcmVuY2VDaGlsZCkKLSAgewotICAgIHVwZGF0aW5nRE9NID0gdHJ1ZTsKLQotICAgIExPT1A6IGZvciAoTm9kZSBjaGlsZCA9IHJlZmVyZW5jZUNoaWxkID09IG51bGwgPyBwYXJlbnQuZ2V0TGFzdENoaWxkKCkgOiByZWZlcmVuY2VDaGlsZC5nZXRQcmV2aW91c1NpYmxpbmcoKTsgY2hpbGQgIT0gbnVsbDsgY2hpbGQgPSBjaGlsZC5nZXRQcmV2aW91c1NpYmxpbmcoKSkKLSAgICB7Ci0gICAgICBzd2l0Y2ggKGNoaWxkLmdldE5vZGVUeXBlKCkpCi0gICAgICB7Ci0gICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6Ci0gICAgICAgIHsKLSAgICAgICAgICBUZXh0IHRleHQgPSAoVGV4dCljaGlsZDsKLSAgICAgICAgICBTdHJpbmcgZGF0YSA9IHRleHQuZ2V0RGF0YSgpOwotCi0gICAgICAgICAgLyoKLSAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgieHggIiArIGRhdGEubGVuZ3RoKCkgKyAiOjogIik7Ci0gICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGgoKTsgKytpKQotICAgICAgICAgICB7Ci0gICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAiICsgSW50ZWdlci50b0hleFN0cmluZygoaW50KWRhdGEuY2hhckF0KGkpKSk7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7Ci0gICAgICAgICAgICovCi0KLSAgICAgICAgICBpbnQgaW5kZXggPSBkYXRhLmxhc3RJbmRleE9mKCdcbicpOwotICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkluIGhlcmUiKTsKLQotICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGluZGVudCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgICAgIGZvciAoTm9kZSBhbmNlc3RvciA9IHBhcmVudC5nZXRQYXJlbnROb2RlKCk7IGFuY2VzdG9yICE9IG51bGwgJiYgYW5jZXN0b3IuZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLkRPQ1VNRU5UX05PREU7IGFuY2VzdG9yID0gYW5jZXN0b3IuZ2V0UGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpbmRlbnQuYXBwZW5kKCIgICAgIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChpbmRleCArIDEgPCBkYXRhLmxlbmd0aCgpICYmIGRhdGEuY2hhckF0KGluZGV4ICsgMSkgPT0gJ1xyJykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRleHQucmVwbGFjZURhdGEoaW5kZXggKyAxLCBkYXRhLmxlbmd0aCgpIC0gaW5kZXggLSAxLCBpbmRlbnQgKyAiICAgICIpOwotCi0gICAgICAgICAgICAvLyBzZXRDb3JyZWN0SW5kZW50YXRpb24oaW5kZW50LCBuZXdUZXh0KTsKLSAgICAgICAgICAgIGlmIChyZWZlcmVuY2VDaGlsZCAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpbmRlbnQuYXBwZW5kKCIgICAgIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBUZXh0IG5ld1RleHQgPSBwYXJlbnQuZ2V0T3duZXJEb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKCJcbiIgKyBpbmRlbnQpOwotICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJJbnNlcnRlZC4uLiIgKyBuZXdUZXh0KTsKLSAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobmV3VGV4dCwgcmVmZXJlbmNlQ2hpbGQpOwotICAgICAgICAgICAgcmVmZXJlbmNlQ2hpbGQgPSBuZXdUZXh0OwotICAgICAgICAgICAgYnJlYWsgTE9PUDsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgotICAgICAgICB7Ci0gICAgICAgICAgYnJlYWsgTE9PUDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiSW5zZXJ0ZWQuLi4iICsgbmV3Q2hpbGQpOwotICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZmVyZW5jZUNoaWxkKTsKLQotICAgIHVwZGF0aW5nRE9NID0gZmFsc2U7Ci0gIH0KLQotICBwcm90ZWN0ZWQgRWxlbWVudCBjb21wdXRlVG9wTGV2ZWxSZWZDaGlsZChOb2RlIHBhcmVudE5vZGUsIE5vZGUgbm9kZVRvQWRkKQotICB7Ci0gICAgRWxlbWVudCByZXN1bHQgPSBudWxsOwotICAgIGludCBhID0gZ2V0UHJlY2VkZW5jZShub2RlVG9BZGQpOwotCi0gICAgZm9yIChOb2RlIG5vZGUgPSBwYXJlbnROb2RlLmdldEZpcnN0Q2hpbGQoKTsgbm9kZSAhPSBudWxsOyBub2RlID0gbm9kZS5nZXROZXh0U2libGluZygpKQotICAgIHsKLSAgICAgIGlmIChub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgICB7Ci0gICAgICAgIGludCBiID0gZ2V0UHJlY2VkZW5jZShub2RlKTsKLSAgICAgICAgaWYgKGIgPj0gYSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IChFbGVtZW50KW5vZGU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIHByaXZhdGUgSGFzaE1hcCBwcmVjZWRlbmNlTWFwID0gY3JlYXRlUHJlY2VkZW5jZU1hcCgpOwotCi0gIHByaXZhdGUgaW50IGdldFByZWNlZGVuY2UoTm9kZSBub2RlKQotICB7Ci0gICAgaW50IHJlc3VsdCA9IDI7Ci0gICAgU3RyaW5nIGxvY2FsTmFtZSA9IG5vZGUuZ2V0TG9jYWxOYW1lKCk7Ci0gICAgaWYgKGxvY2FsTmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIEludGVnZXIgaW50ZWdlciA9IChJbnRlZ2VyKXByZWNlZGVuY2VNYXAuZ2V0KGxvY2FsTmFtZSk7Ci0gICAgICBpZiAoaW50ZWdlciAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBpbnRlZ2VyLmludFZhbHVlKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwcml2YXRlIEhhc2hNYXAgY3JlYXRlUHJlY2VkZW5jZU1hcCgpCi0gIHsKLSAgICBIYXNoTWFwIGhhc2hNYXAgPSBuZXcgSGFzaE1hcCgpOwotICAgIGhhc2hNYXAucHV0KFdTRExDb25zdGFudHMuRE9DVU1FTlRBVElPTl9FTEVNRU5UX1RBRywgbmV3IEludGVnZXIoMSkpOwotICAgIGhhc2hNYXAucHV0KFdTRExDb25zdGFudHMuSU1QT1JUX0VMRU1FTlRfVEFHLCBuZXcgSW50ZWdlcigzKSk7Ci0gICAgaGFzaE1hcC5wdXQoV1NETENvbnN0YW50cy5UWVBFU19FTEVNRU5UX1RBRywgbmV3IEludGVnZXIoNCkpOwotICAgIGhhc2hNYXAucHV0KFdTRExDb25zdGFudHMuTUVTU0FHRV9FTEVNRU5UX1RBRywgbmV3IEludGVnZXIoNSkpOwotICAgIGhhc2hNYXAucHV0KFdTRExDb25zdGFudHMuUE9SVF9UWVBFX0VMRU1FTlRfVEFHLCBuZXcgSW50ZWdlcig2KSk7Ci0gICAgaGFzaE1hcC5wdXQoV1NETENvbnN0YW50cy5CSU5ESU5HX0VMRU1FTlRfVEFHLCBuZXcgSW50ZWdlcig3KSk7Ci0gICAgaGFzaE1hcC5wdXQoV1NETENvbnN0YW50cy5TRVJWSUNFX0VMRU1FTlRfVEFHLCBuZXcgSW50ZWdlcig4KSk7Ci0gICAgcmV0dXJuIGhhc2hNYXA7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBhZG9wdEJ5KERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgIGZvciAoSXRlcmF0b3IgY29tcG9uZW50cyA9IGdldFdTRExDb250ZW50cygpLml0ZXJhdG9yKCk7IGNvbXBvbmVudHMuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBPYmplY3QgY2hpbGQgPSBjb21wb25lbnRzLm5leHQoKTsKLSAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIFdTRExFbGVtZW50SW1wbCkKLSAgICAgIHsKLSAgICAgICAgKChXU0RMRWxlbWVudEltcGwpY2hpbGQpLmFkb3B0QnkoZGVmaW5pdGlvbik7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNVcGRhdGluZ0RPTSgpCi0gIHsKLSAgICByZXR1cm4gdXBkYXRpbmdET007Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBlbGVtZW50Q2hhbmdlZChFbGVtZW50IGNoYW5nZWRFbGVtZW50KQotICB7Ci0gICAgaWYgKCFpc1VwZGF0aW5nRE9NKCkpCi0gICAgewotICAgICAgaWYgKCFpc1JlY29uY2lsaW5nKQotICAgICAgewotICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiKioqKiBjaGFuZ2VGb3IgIiArIGVDbGFzcygpLmdldE5hbWUoKSk7Ci0gICAgICAgIGlzUmVjb25jaWxpbmcgPSB0cnVlOwotICAgICAgICByZWNvbmNpbGUoY2hhbmdlZEVsZW1lbnQpOwotCi0gICAgICAgIFdTRExFbGVtZW50IHRoZUNvbnRhaW5lciA9IGdldENvbnRhaW5lcigpOwotICAgICAgICBpZiAodGhlQ29udGFpbmVyICE9IG51bGwgJiYgdGhlQ29udGFpbmVyLmdldEVsZW1lbnQoKSA9PSBjaGFuZ2VkRWxlbWVudCkKLSAgICAgICAgewotICAgICAgICAgICgoV1NETEVsZW1lbnRJbXBsKXRoZUNvbnRhaW5lcikuZWxlbWVudENoYW5nZWQoY2hhbmdlZEVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXNSZWNvbmNpbGluZyA9IGZhbHNlOwotICAgICAgICB0cmF2ZXJzZVRvUm9vdEZvclBhdGNoaW5nKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIDsgLy9TeXN0ZW0ub3V0LnByaW50bG4oIioqKiogY3ljbGljIGludGVybmFsIHJlY29uY2lsZSBhdm9pZGVkICIgKyBlQ2xhc3MoKS5nZXROYW1lKCkpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgOyAvL1N5c3RlbS5vdXQucHJpbnRsbigiKioqKiBjeWNsaWMgRE9NIHJlY29uY2lsZSBhdm9pZGVkICIgKyBlQ2xhc3MoKS5nZXROYW1lKCkpOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGhhbmRsZVVucmVjb25jaWxlZEVsZW1lbnQoRWxlbWVudCBjaGlsZCwgQ29sbGVjdGlvbiByZW1haW5pbmdNb2RlbE9iamVjdHMpCi0gIHsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGhhbmRsZVJlY29uY2lsaWF0aW9uKENvbGxlY3Rpb24gcmVtYWluaW5nTW9kZWxPYmplY3RzKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogQGRlcHJlY2F0ZWQKLSAgICogVE9ETy4uLiByZW1vdmUgdGhpcyBtZXRob2QhCi0gICAqLwotICBwdWJsaWMgQ29sbGVjdGlvbiBnZXRNb2RlbE9iamVjdHMoT2JqZWN0IGNvbXBvbmVudCkKLSAgewotICAgIHJldHVybiBnZXRXU0RMQ29udGVudHMoKTsKLSAgfQotCi0gIC8qCi0gICBwcm90ZWN0ZWQgRWxlbWVudCBnZXRFbGVtZW50Rm9yTW9kZWxPYmplY3QoT2JqZWN0IG1vZGVsT2JqZWN0KQotICAgewotICAgRWxlbWVudCByZXN1bHQgPSBudWxsOwotICAgaWYgKG1vZGVsT2JqZWN0IGluc3RhbmNlb2YgRWxlbWVudCkKLSAgIHsKLSAgIHJlc3VsdCA9IChFbGVtZW50KSBtb2RlbE9iamVjdDsKLSAgIH0KLSAgIGVsc2UgaWYgKG1vZGVsT2JqZWN0IGluc3RhbmNlb2YgV1NETEVsZW1lbnQpCi0gICB7Ci0gICByZXN1bHQgPSAoKFdTRExFbGVtZW50KSBtb2RlbE9iamVjdCkuZ2V0RWxlbWVudCgpOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgICovCi0KLSAgcHJpdmF0ZSBDb2xsZWN0aW9uIGdldENvbnRlbnROb2RlcyhFbGVtZW50IGNoYW5nZWRFbGVtZW50KQotICB7Ci0gICAgQ29sbGVjdGlvbiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgZm9yIChOb2RlIGNoaWxkID0gY2hhbmdlZEVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpOyBjaGlsZCAhPSBudWxsOyBjaGlsZCA9IGNoaWxkLmdldE5leHRTaWJsaW5nKCkpCi0gICAgewotICAgICAgaWYgKGNoaWxkLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdC5hZGQoY2hpbGQpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLy8gU29tZSBzdWJjbGFzc2VzIHVzZSB0aGlzIG1ldGhvZAotICBwcm90ZWN0ZWQgUU5hbWUgY3JlYXRlUU5hbWUoRGVmaW5pdGlvbiBkZWZpbml0aW9uLCBTdHJpbmcgcHJlZml4ZWROYW1lKQotICB7Ci0gICAgLy8gRGVsZWdhdGUgdG8gdGhlIG5ldyBmb3JtIHRvIHByZXNlcnZlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaW4gY2FzZSBzb21lb25lCi0gICAgLy8gZWxzZSBjYWxscyB0aGlzIG1ldGhvZC4KLQotICAgIHJldHVybiBjcmVhdGVRTmFtZShkZWZpbml0aW9uLCBwcmVmaXhlZE5hbWUsIG51bGwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBRTmFtZSBmcm9tIGEgcHJlZml4ZWQgbmFtZS4gVGFrZXMgaW50byBhY2NvdW50IGxvY2FsbHkgZGVmaW5lZAotICAgKiBuYW1lc3BhY2UgcHJlZml4ZXMuCi0gICAqIAotICAgKiBAcGFyYW0gZGVmaW5pdGlvbgotICAgKiAgICAgICAgICB0aGUgZW5jbG9zaW5nIGRlZmluaXRpb24uIE11c3Qgbm90IGJlIG51bGwuCi0gICAqIEBwYXJhbSBwcmVmaXhlZE5hbWUKLSAgICogICAgICAgICAgdGhlIHByZWZpeGVkIG5hbWUgdG8gY29udmVydCB0byBRTmFtZQotICAgKiBAcGFyYW0gZWxlbWVudAotICAgKiAgICAgICAgICB0aGUgZW5jbG9zaW5nIGVsZW1lbnQuIE1heSBiZSBudWxsIGluIHdoaWNoIGNhc2UgdGhlIHByZWZpeCBpcwotICAgKiAgICAgICAgICBvbmx5IGxvb2tlZCB1cCBhbW9uZyB0aGUgb25lcyBkZWZpbmVkIGF0IHRoZSBkZWZpbml0aW9uIGxldmVsLgotICAgKiBAcmV0dXJuIHRoZSBRTmFtZSBlcXVpdmFsZW50IGZvciB0aGUgZ2l2ZW4gcHJlZml4ZWQgbmFtZSwgb3IgbnVsbCBpZiBhCi0gICAqICAgICAgICAgbmFtZXNwYWNlIHByZWZpeCBjYW5ub3QgYmUgZm91bmQgZm9yIHRoZSBnaXZlbiBuYW1lc3BhY2UgVVJJIG9yIGlmCi0gICAqICAgICAgICAgdGhlIHByZWZpeGVkIG5hbWUgaXMgbnVsbC4KLSAgICovCi0gIHByb3RlY3RlZCBRTmFtZSBjcmVhdGVRTmFtZShEZWZpbml0aW9uIGRlZmluaXRpb24sIFN0cmluZyBwcmVmaXhlZE5hbWUsIEVsZW1lbnQgZWxlbWVudCkKLSAgewotICAgIHJldHVybiBjcmVhdGVRTmFtZShkZWZpbml0aW9uLCBwcmVmaXhlZE5hbWUsIGVsZW1lbnQsIGZhbHNlKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgUU5hbWUgZnJvbSBhIHByZWZpeGVkIG5hbWUuIFRha2VzIGludG8gYWNjb3VudCBsb2NhbGx5IGRlZmluZWQKLSAgICogbmFtZXNwYWNlIHByZWZpeGVzLiBTZWxlY3RpdmVseSBhbGxvd3MgbnVsbCBuYW1lc3BhY2UgVVJJcy4KLSAgICogCi0gICAqIEBwYXJhbSBkZWZpbml0aW9uCi0gICAqICAgICAgICAgIHRoZSBlbmNsb3NpbmcgZGVmaW5pdGlvbi4gTXVzdCBub3QgYmUgbnVsbC4KLSAgICogQHBhcmFtIHByZWZpeGVkTmFtZQotICAgKiAgICAgICAgICB0aGUgcHJlZml4ZWQgbmFtZSB0byBjb252ZXJ0IHRvIFFOYW1lCi0gICAqIEBwYXJhbSBlbGVtZW50Ci0gICAqICAgICAgICAgIHRoZSBlbmNsb3NpbmcgZWxlbWVudC4gTWF5IGJlIG51bGwgaW4gd2hpY2ggY2FzZSB0aGUgcHJlZml4IGlzCi0gICAqICAgICAgICAgIG9ubHkgbG9va2VkIHVwIGFtb25nIHRoZSBvbmVzIGRlZmluZWQgYXQgdGhlIGRlZmluaXRpb24gbGV2ZWwuCi0gICAqIEBwYXJhbSBhbGxvd051bGxOYW1lc3BhY2VVUkkgaWYgdHJ1ZSBhbmQgdGhlIHByZWZpeGVkIG5hbWUgZG9lcyBub3QgaGF2ZSAKLSAgICogICAgICAgICAgYSBwcmVmaXggYSBRTmFtZSBpcyBjb25zdHJ1Y3RlZCBhbmQgcmV0dXJuZWQgdXNpbmcgCi0gICAqICAgICAgICAgIHtAbGluayBYTUxDb25zdGFudHMjTlVMTF9OU19VUkl9IGZvciB0aGUgbmFtZXNwYWNlIFVSSSAgICAgICAgICAKLSAgICogQHJldHVybiB0aGUgUU5hbWUgZXF1aXZhbGVudCBmb3IgdGhlIGdpdmVuIHByZWZpeGVkIG5hbWUsIG9yIG51bGwgaWYgYQotICAgKiAgICAgICAgIG5hbWVzcGFjZSBwcmVmaXggY2Fubm90IGJlIGZvdW5kIGZvciB0aGUgZ2l2ZW4gbmFtZXNwYWNlIFVSSSBvciBpZgotICAgKiAgICAgICAgIHRoZSBwcmVmaXhlZCBuYW1lIGlzIG51bGwuIAotICAgKi8KLSAgcHJvdGVjdGVkIFFOYW1lIGNyZWF0ZVFOYW1lKERlZmluaXRpb24gZGVmaW5pdGlvbiwgU3RyaW5nIHByZWZpeGVkTmFtZSwgRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGFsbG93TnVsbE5hbWVzcGFjZVVSSSkKLSAgewotICAgIFFOYW1lIHFuYW1lID0gbnVsbDsKLSAgICBpZiAocHJlZml4ZWROYW1lICE9IG51bGwpCi0gICAgewotICAgICAgaW50IGluZGV4ID0gcHJlZml4ZWROYW1lLmluZGV4T2YoIjoiKTsgLy8vLyROT04tTkxTLTEkCi0gICAgICBTdHJpbmcgcHJlZml4ID0gKGluZGV4ID09IC0xKSA/ICIiIDogcHJlZml4ZWROYW1lLnN1YnN0cmluZygwLCBpbmRleCk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBkZWZpbml0aW9uLmdldE5hbWVzcGFjZShwcmVmaXgpOwotCi0gICAgICBpZiAobmFtZXNwYWNlID09IG51bGwgJiYgZWxlbWVudCAhPSBudWxsKQotICAgICAgewotICAgICAgICAvLyBUcnkgdG8gZmluZCBhIGxvY2FsbHkgZGVmaW5lZCBuYW1lc3BhY2UgcHJlZml4LgotCi0gICAgICAgIG5hbWVzcGFjZSA9IGdldE5hbWVzcGFjZVVSSUZyb21QcmVmaXgoZWxlbWVudCwgcHJlZml4KTsKLSAgICAgIH0KLQotICAgICAgaWYgKG5hbWVzcGFjZSAhPSBudWxsIHx8IChhbGxvd051bGxOYW1lc3BhY2VVUkkgJiYgcHJlZml4Lmxlbmd0aCgpID09IDApKQotICAgICAgewotICAgICAgICBTdHJpbmcgbG9jYWxQYXJ0ID0gcHJlZml4ZWROYW1lLnN1YnN0cmluZyhpbmRleCArIDEpOwotICAgICAgICBxbmFtZSA9IG5ldyBRTmFtZShuYW1lc3BhY2UsIGxvY2FsUGFydCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBxbmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBHaXZlbiBhIHByZWZpeCBhbmQgYSBub2RlLCBmaW5kcyB0aGUgbmFtZXNwYWNlIFVSSSBwb2ludGVkIHRvIGJ5IHRoZQotICAgKiBwcmVmaXguIFdhbGtzIHRoZSBlbGVtZW50IGNvbnRhaW5tZW50IGhpZXJhcmNoeSB1bnRpbCBpdCBmaW5kcyBvbmUgb3IgaXQKLSAgICogcmVhY2hlcyB0aGUgZG9jdW1lbnQgcm9vdC4KLSAgICogCi0gICAqIEBwYXJhbSBub2RlCi0gICAqICAgICAgICAgIHRoZSBzdGFydGluZyBub2RlCi0gICAqIEBwYXJhbSBwcmVmaXgKLSAgICogICAgICAgICAgdGhlIHByZWZpeCB0byBmaW5kIGFuIHhtbG5zOnByZWZpeD11cmkgZm9yCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSBuYW1lc3BhY2UgVVJJIG9yIG51bGwgaWYgbm90IGZvdW5kCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0TmFtZXNwYWNlVVJJRnJvbVByZWZpeChOb2RlIG5vZGUsIFN0cmluZyBwcmVmaXgpCi0gIHsKLSAgICBpZiAobm9kZSA9PSBudWxsIHx8IHByZWZpeCA9PSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIE5vZGUgY3VycmVudE5vZGUgPSBub2RlOwotCi0gICAgd2hpbGUgKGN1cnJlbnROb2RlICE9IG51bGwgJiYgY3VycmVudE5vZGUuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICB7Ci0gICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gZ2V0QXR0cmlidXRlTlMoKEVsZW1lbnQpY3VycmVudE5vZGUsIFhTRENvbnN0YW50cy5YTUxOU19VUklfMjAwMCwgcHJlZml4KTsKLQotICAgICAgaWYgKG5hbWVzcGFjZVVSSSAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXR1cm4gbmFtZXNwYWNlVVJJOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmdldFBhcmVudE5vZGUoKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXRyaWV2ZXMgYW4gYXR0cmlidXRlJ3MgdmFsdWUuCi0gICAqIEBwYXJhbSBlbGVtZW50IHRoZSBjb250YWluaW5nIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VVUkkgdGhlIG5hbWVzcGFjZSBVUkkuCi0gICAqIEBwYXJhbSBsb2NhbFBhcnQgdGhlIGxvY2FsIG5hbWUuCi0gICAqIEByZXR1cm4gdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIGlmIHByZXNlbnQsIG9yIG51bGwgaWYgbm90LiAKLSAgICovCi0gIHByaXZhdGUgc3RhdGljIFN0cmluZyBnZXRBdHRyaWJ1dGVOUyhFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBuYW1lc3BhY2VVUkksIFN0cmluZyBsb2NhbFBhcnQpCi0gIHsKLSAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWUgPSBudWxsOwotICAgIEF0dHIgYXR0cmlidXRlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlVVJJLCBsb2NhbFBhcnQpOwotCi0gICAgaWYgKGF0dHJpYnV0ZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlLmdldFZhbHVlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlOwotICB9Ci0KLSAgLy8KLSAgLy8gRm9yIHJlY29uY2lsaWF0aW9uOiBNb2RlbCAtPiBET00KLSAgLy8KLQotICBwdWJsaWMgdm9pZCB1cGRhdGVFbGVtZW50KGJvb2xlYW4gZGVlcCkKLSAgewotICAgIGlmIChkZWVwIHx8IGdldEVsZW1lbnQoKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHVwZGF0ZUVsZW1lbnQoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGNoYW5nZUF0dHJpYnV0ZShudWxsKTsKLSAgICAgIGNoYW5nZVJlZmVyZW5jZShudWxsKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB1cGRhdGVFbGVtZW50KCkKLSAgewotICAgIGlmIChnZXRFbGVtZW50KCkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpc1JlY29uY2lsaW5nID0gdHJ1ZTsKLSAgICAgIGNyZWF0ZUVsZW1lbnQoKTsKLSAgICAgIGlzUmVjb25jaWxpbmcgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBjaGFuZ2VBdHRyaWJ1dGUobnVsbCk7Ci0gICAgY2hhbmdlUmVmZXJlbmNlKG51bGwpOwotCi0gICAgT2JqZWN0IG9iaiA9IG51bGw7Ci0gICAgZm9yIChJdGVyYXRvciBjb250YWlubWVudHMgPSBlQ2xhc3MoKS5nZXRFQWxsQ29udGFpbm1lbnRzKCkuaXRlcmF0b3IoKTsgY29udGFpbm1lbnRzLmhhc05leHQoKTspCi0gICAgewotICAgICAgRVJlZmVyZW5jZSBlUmVmZXJlbmNlID0gKEVSZWZlcmVuY2UpY29udGFpbm1lbnRzLm5leHQoKTsKLSAgICAgIGlmIChlUmVmZXJlbmNlID09IFdTRExQYWNrYWdlLkxpdGVyYWxzLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUEpCi0gICAgICB7Ci0gICAgICAgIC8vIFRCRCAtIFRoaXMgaXMgYW4gaW5zdGFuY2Ugb2YgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgYW5kCi0gICAgICAgIC8vIGVSZWZlcm5jZSBpcyBYU0RTY2hlbWEuIFdoYXQgZG8gd2Ugd2FudCB0byBkbyBmb3IgdXBkYXRlPwotICAgICAgfQotICAgICAgZWxzZSBpZiAoIWVSZWZlcmVuY2UuaXNUcmFuc2llbnQoKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGVSZWZlcmVuY2UuaXNNYW55KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBmb3IgKEl0ZXJhdG9yIG9iamVjdHMgPSAoKENvbGxlY3Rpb24pZUdldChlUmVmZXJlbmNlKSkuaXRlcmF0b3IoKTsgb2JqZWN0cy5oYXNOZXh0KCk7KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG9iaiA9IG9iamVjdHMubmV4dCgpOwotICAgICAgICAgICAgaWYgKCEob2JqIGluc3RhbmNlb2YgV1NETEVsZW1lbnQpIHx8IG9iaiA9PSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBTa2lwIGl0LiBQcm9iYWJseSB0aGlzIGlzIE5hbWVzcGFjZS4KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQgPSAoV1NETEVsZW1lbnQpb2JqOwotICAgICAgICAgICAgICAvL2hhbmRsZUVsZW1lbnRGb3JBZG9wdChlUmVmZXJlbmNlLCB3c2RsRWxlbWVudCk7Ci0gICAgICAgICAgICAgICgoV1NETEVsZW1lbnRJbXBsKXdzZGxFbGVtZW50KS51cGRhdGVFbGVtZW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIFdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gKFdTRExFbGVtZW50KWVHZXQoZVJlZmVyZW5jZSk7Ci0gICAgICAgICAgaWYgKHdzZGxFbGVtZW50ICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy9oYW5kbGVFbGVtZW50Rm9yQWRvcHQoZVJlZmVyZW5jZSwgIHdzZGxFbGVtZW50KTsKLSAgICAgICAgICAgICgoV1NETEVsZW1lbnRJbXBsKXdzZGxFbGVtZW50KS51cGRhdGVFbGVtZW50KCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9IC8vIGVuZCBlbHNlIGlmCi0gICAgfSAvLyBlbmQgZm9yCi0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VBdHRyaWJ1dGUoRUF0dHJpYnV0ZSBlQXR0cmlidXRlKQotICB7Ci0gICAgaWYgKGVBdHRyaWJ1dGUgPT0gV1NETFBhY2thZ2UuTGl0ZXJhbHMuV1NETF9FTEVNRU5UX19FTEVNRU5UKQotICAgIHsKLSAgICAgIEVsZW1lbnQgdGhlRWxlbWVudCA9IGdldEVsZW1lbnQoKTsKLSAgICAgIGlmICh0aGVFbGVtZW50ICE9IG51bGwgJiYgIWlzUmVjb25jaWxpbmcpCi0gICAgICB7Ci0gICAgICAgIGZvciAoTm9kZSByb290RG9jdW1lbnQgPSB0aGVFbGVtZW50LmdldFBhcmVudE5vZGUoKTsgcm9vdERvY3VtZW50ICE9IG51bGw7IHJvb3REb2N1bWVudCA9IHJvb3REb2N1bWVudC5nZXRQYXJlbnROb2RlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAocm9vdERvY3VtZW50LmdldE5vZGVUeXBlKCkgPT0gTm9kZS5ET0NVTUVOVF9OT0RFKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlzUmVjb25jaWxpbmcgPSB0cnVlOwotICAgICAgICAgICAgaWYgKGdldEVuY2xvc2luZ0RlZmluaXRpb24oKSA9PSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZWNvbmNpbGVBdHRyaWJ1dGVzKGdldEVsZW1lbnQoKSk7Ci0gICAgICAgICAgICAgIGlzUmVjb25jaWxpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmVjb25jaWxlKGdldEVsZW1lbnQoKSk7Ci0gICAgICAgICAgICAgIGlzUmVjb25jaWxpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgdHJhdmVyc2VUb1Jvb3RGb3JQYXRjaGluZygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB0cmF2ZXJzZVRvUm9vdEZvclBhdGNoaW5nKCkKLSAgewotICAgIGlmICghaXNSZWNvbmNpbGluZykKLSAgICB7Ci0gICAgICBXU0RMRWxlbWVudEltcGwgY29udGFpbmVyID0gKFdTRExFbGVtZW50SW1wbClnZXRDb250YWluZXIoKTsKLSAgICAgIGlmIChjb250YWluZXIgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgY29udGFpbmVyLnRyYXZlcnNlVG9Sb290Rm9yUGF0Y2hpbmcoKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCByZWNvbmNpbGUoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIHJlY29uY2lsZUF0dHJpYnV0ZXMoY2hhbmdlZEVsZW1lbnQpOwotICAgIHJlY29uY2lsZUNvbnRlbnRzKGNoYW5nZWRFbGVtZW50KTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgcmVjb25jaWxlQ29udGVudHMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIExpc3QgcmVtYWluaW5nTW9kZWxPYmplY3RzID0gbmV3IEFycmF5TGlzdChnZXRXU0RMQ29udGVudHMoKSk7Ci0KLSAgICBDb2xsZWN0aW9uIGNvbnRlbnROb2RlcyA9IGdldENvbnRlbnROb2RlcyhjaGFuZ2VkRWxlbWVudCk7Ci0KLSAgICBFbGVtZW50IHRoZURvY3VtZW50YXRpb25FbGVtZW50ID0gbnVsbDsKLQotICAgIC8vIGZvciBlYWNoIGFwcGxpY2FibGUgY2hpbGQgbm9kZSBvZiBjaGFuZ2VkRWxlbWVudAotICAgIExPT1A6IGZvciAoSXRlcmF0b3IgaSA9IGNvbnRlbnROb2Rlcy5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgRWxlbWVudCBjaGlsZCA9IChFbGVtZW50KWkubmV4dCgpOwotICAgICAgLy8gU2V0IERvY3VtZW50YXRpb24gZWxlbWVudCBpZiBleGlzdHMKLSAgICAgIGlmIChXU0RMQ29uc3RhbnRzLkRPQ1VNRU5UQVRJT05fRUxFTUVOVF9UQUcuZXF1YWxzKGNoaWxkLmdldExvY2FsTmFtZSgpKQotICAgICAgICAmJiBXU0RMQ29uc3RhbnRzLmlzTWF0Y2hpbmdOYW1lc3BhY2UoY2hpbGQuZ2V0TmFtZXNwYWNlVVJJKCksIFdTRExDb25zdGFudHMuV1NETF9OQU1FU1BBQ0VfVVJJKSkKLSAgICAgIHsKLSAgICAgICAgLy8gYXNzdW1lIHRoZSBmaXJzdCAnZG9jdW1lbnRhdGlvbicgZWxlbWVudCBpcyAndGhlJyBkb2N1bWVudGF0aW9uIGVsZW1lbnQKLSAgICAgICAgLy8gJ3RoZXJlIGNhbiBiZSBvbmx5IG9uZSEnCi0gICAgICAgIGlmICh0aGVEb2N1bWVudGF0aW9uRWxlbWVudCA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgdGhlRG9jdW1lbnRhdGlvbkVsZW1lbnQgPSBjaGlsZDsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgLy8gZ28gdGhydSB0aGUgbW9kZWwgb2JqZWN0cyB0byBjb2xsZWN0IG1hdGNoaW5nIG9iamVjdCBmb3IgcmV1c2UKLSAgICAgIGZvciAoSXRlcmF0b3IgY29udGVudHMgPSByZW1haW5pbmdNb2RlbE9iamVjdHMuaXRlcmF0b3IoKTsgY29udGVudHMuaGFzTmV4dCgpOykKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IG1vZGVsT2JqZWN0ID0gKE9iamVjdCljb250ZW50cy5uZXh0KCk7Ci0KLSAgICAgICAgaWYgKG1vZGVsT2JqZWN0IGluc3RhbmNlb2YgV1NETEVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoKChXU0RMRWxlbWVudCltb2RlbE9iamVjdCkuZ2V0RWxlbWVudCgpID09IGNoaWxkKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRlbnRzLnJlbW92ZSgpOyAvLyByZW1vdmVzIHRoZSAnY2hpbGQnIE5vZGUgZnJvbSB0aGUgcmVtYWluaW5nTW9kZWxPYmplY3RzIGxpc3QKLSAgICAgICAgICAgIGNvbnRpbnVlIExPT1A7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIGlmIHRoZSBkb2N1bWVudGF0aW9uIGVsZW1lbnQgaGFzIGNoYW5nZWQuLi4gdXBkYXRlIGl0Ci0gICAgICAvLwotICAgICAgaWYgKHRoZURvY3VtZW50YXRpb25FbGVtZW50ICE9IGdldERvY3VtZW50YXRpb25FbGVtZW50KCkpCi0gICAgICB7Ci0gICAgICAgIHNldERvY3VtZW50YXRpb25FbGVtZW50KHRoZURvY3VtZW50YXRpb25FbGVtZW50KTsKLSAgICAgIH0KLQotICAgICAgLy8gd2UgaGF2ZW4ndCBmb3VuZCBhIG1hdGNoaW5nIG1vZGVsIG9iamVjdCBmb3IgdGhlIE5vZGUsIHNlIHdlIG1heSBuZWVkIHRvCi0gICAgICAvLyBjcmVhdGUgYSBuZXcgbW9kZWwgb2JqZWN0Ci0gICAgICBoYW5kbGVVbnJlY29uY2lsZWRFbGVtZW50KGNoaWxkLCByZW1haW5pbmdNb2RlbE9iamVjdHMpOwotICAgIH0KLQotICAgIC8vIG5vdyB3ZSBjYW4gcmVtb3ZlIHRoZSByZW1haW5pbmcgbW9kZWwgb2JqZWN0cwotICAgIGhhbmRsZVJlY29uY2lsaWF0aW9uKHJlbWFpbmluZ01vZGVsT2JqZWN0cyk7Ci0KLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBEZWZpbml0aW9uIGdldEVuY2xvc2luZ0RlZmluaXRpb24oKQotICB7Ci0gICAgaWYgKGVuY2xvc2luZ0RlZmluaXRpb24gIT0gbnVsbCkKLSAgICAgIHJldHVybiBlbmNsb3NpbmdEZWZpbml0aW9uOwotCi0gICAgLy8gVEJEIC0gUmV2aXNpdAotICAgIC8vRU9iamVjdCBjID0gZUNvbnRhaWVyKCk7IGMgIT0gbnVsbDsgYyA9IGMuZUNvbnRhaW50ZXIoKSkKLSAgICAvL3sKLQotICAgIGZvciAoV1NETEVsZW1lbnQgY29udGFpbmVyID0gdGhpczsgY29udGFpbmVyICE9IG51bGw7IGNvbnRhaW5lciA9ICgoV1NETEVsZW1lbnRJbXBsKWNvbnRhaW5lcikuZ2V0Q29udGFpbmVyKCkpCi0gICAgewotICAgICAgaWYgKGNvbnRhaW5lciBpbnN0YW5jZW9mIERlZmluaXRpb24pCi0gICAgICB7Ci0gICAgICAgIGVuY2xvc2luZ0RlZmluaXRpb24gPSAoRGVmaW5pdGlvbiljb250YWluZXI7Ci0gICAgICAgIHJldHVybiBlbmNsb3NpbmdEZWZpbml0aW9uOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoKLSAgIHB1YmxpYyBEZWZpbml0aW9uIGdldFJvb3RFbmNsb3NpbmdEZWZpbml0aW9uKCkKLSAgIHsKLSAgIGlmIChlbmNsb3NpbmdEZWZpbml0aW9uID09IG51bGwpCi0gICB7Ci0gICBSZXNvdXJjZSByZXNvdXJjZSA9IGVSZXNvdXJjZSgpOwotICAgTGlzdCBjb250ZW50cyA9IHJlc291cmNlLmdldENvbnRlbnRzKCk7Ci0gICBpZiAoY29udGVudHMuc2l6ZSgpID09IDEgCi0gICAmJiBjb250ZW50cy5nZXQoMCkgaW5zdGFuY2VvZiBEZWZpbml0aW9uKQotICAgZW5jbG9zaW5nRGVmaW5pdGlvbiA9IChEZWZpbml0aW9uKWNvbnRlbnRzLmdldCgwKTsKLSAgIH0gCi0gICByZXR1cm4gZW5jbG9zaW5nRGVmaW5pdGlvbjsKLSAgIH0KLSAgICovCi0KLSAgcHVibGljIFdTRExFbGVtZW50IGdldENvbnRhaW5lcigpCi0gIHsKLSAgICByZXR1cm4gZUNvbnRhaW5lcigpIGluc3RhbmNlb2YgV1NETEVsZW1lbnQgPyAoV1NETEVsZW1lbnQpZUNvbnRhaW5lcigpIDogbnVsbDsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIG5pY2VTZXRBdHRyaWJ1dGUoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgYXR0cmlidXRlLCBTdHJpbmcgdmFsdWUpCi0gIHsKLSAgICBpZiAoaXNSZWNvbmNpbGluZykKLSAgICB7Ci0gICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiKioqKiBjeWNsaWMgZG9tIGF0dHJpYnV0ZSB3cml0ZWJhY2sgYXZvaWRlZCAiICsgZUNsYXNzKCkuZ2V0TmFtZSgpKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodmFsdWUgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGVOUyhudWxsLCBhdHRyaWJ1dGUpKQotICAgICAgewotICAgICAgICB1cGRhdGluZ0RPTSA9IHRydWU7Ci0gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAgICAgIHVwZGF0aW5nRE9NID0gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZU5TKG51bGwsIGF0dHJpYnV0ZSkgfHwgIWVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgYXR0cmlidXRlKS5lcXVhbHModmFsdWUpKQotICAgIHsKLSAgICAgIHVwZGF0aW5nRE9NID0gdHJ1ZTsKLSAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgYXR0cmlidXRlLCB2YWx1ZSk7Ci0gICAgICB1cGRhdGluZ0RPTSA9IGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCBTdHJpbmcgbmljZUNyZWF0ZU5hbWVzcGFjZUF0dHJpYnV0ZShTdHJpbmcgbmFtZXNwYWNlKQotICB7Ci0gICAgLy8gQ3JlYXRlIGFuZCByZXR1cm4gYSB1bmlxdWUgcHJlZml4IGZvciAibmFtZXNwYWNlLiIKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIG5pY2VTZXRBdHRyaWJ1dGVVUklWYWx1ZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBhdHRyaWJ1dGUsIFN0cmluZyB1cmlMaXN0KQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgewotICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIqKioqIGN5Y2xpYyBkb20gYXR0cmlidXRlIHdyaXRlYmFjayBhdm9pZGVkICIgKyBlQ2xhc3MoKS5nZXROYW1lKCkpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh1cmlMaXN0ID09IG51bGwpCi0gICAgewotICAgICAgdXBkYXRpbmdET00gPSB0cnVlOwotICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICAgIHVwZGF0aW5nRE9NID0gZmFsc2U7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBTdHJpbmdCdWZmZXIgdmFsdWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICBmb3IgKFN0cmluZ1Rva2VuaXplciBzdHJpbmdUb2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHVyaUxpc3QsICIgIik7IHN0cmluZ1Rva2VuaXplci5oYXNNb3JlRWxlbWVudHMoKTspCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyB1cmkgPSBzdHJpbmdUb2tlbml6ZXIubmV4dFRva2VuKCk7Ci0gICAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBudWxsOwotICAgICAgICBTdHJpbmcgbG9jYWxOYW1lID0gdXJpOwotICAgICAgICBpbnQgaW5kZXggPSB1cmkubGFzdEluZGV4T2YoIiMiKTsKLSAgICAgICAgaWYgKGluZGV4ICE9IC0xKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGluZGV4ID4gMCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBuYW1lc3BhY2UgPSB1cmkuc3Vic3RyaW5nKDAsIGluZGV4KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgbG9jYWxOYW1lID0gdXJpLnN1YnN0cmluZyhpbmRleCArIDEpOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBxdWFsaWZpZXIgPSBYU0RDb25zdGFudHMubG9va3VwUXVhbGlmaWVyKGVsZW1lbnQsIG5hbWVzcGFjZSk7Ci0gICAgICAgIGlmIChxdWFsaWZpZXIgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHF1YWxpZmllciA9IG5pY2VDcmVhdGVOYW1lc3BhY2VBdHRyaWJ1dGUobmFtZXNwYWNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZyBxTmFtZSA9IHF1YWxpZmllciA9PSBudWxsIHx8IHF1YWxpZmllci5sZW5ndGgoKSA9PSAwID8gbG9jYWxOYW1lIDogcXVhbGlmaWVyICsgIjoiICsgbG9jYWxOYW1lOwotCi0gICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgdmFsdWUuYXBwZW5kKCcgJyk7Ci0gICAgICAgIH0KLSAgICAgICAgdmFsdWUuYXBwZW5kKHFOYW1lKTsKLSAgICAgIH0KLQotICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZU5TKG51bGwsIGF0dHJpYnV0ZSkgfHwgIWVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgYXR0cmlidXRlKS5lcXVhbHModmFsdWUudG9TdHJpbmcoKSkpCi0gICAgICB7Ci0gICAgICAgIHVwZGF0aW5nRE9NID0gdHJ1ZTsKLSAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBhdHRyaWJ1dGUsIHZhbHVlLnRvU3RyaW5nKCkpOwotICAgICAgICB1cGRhdGluZ0RPTSA9IGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGNoYW5nZVJlZmVyZW5jZShFUmVmZXJlbmNlIGVSZWZlcmVuY2UpCi0gIHsKLSAgfQotCi0gIHByb3RlY3RlZCBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoKSAvLyBTaG91bGQgSSBtYWtlIHRoaXMgYWJzdHJhY3Q/Ci0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHByb3RlY3RlZCBmaW5hbCBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoaW50IG5vZGVUeXBlKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLSAgICBpZiAodGhpcyBpbnN0YW5jZW9mIERlZmluaXRpb24pCi0gICAgICBkZWZpbml0aW9uID0gKERlZmluaXRpb24pdGhpczsKLSAgICBlbHNlCi0gICAgICBkZWZpbml0aW9uID0gZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotCi0gICAgaWYgKGRlZmluaXRpb24gPT0gbnVsbCkKLSAgICAgIHJldHVybiBudWxsOwotCi0gICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBkZWZpbml0aW9uLmdldERvY3VtZW50KCk7Ci0gICAgaWYgKGRvY3VtZW50ID09IG51bGwpCi0gICAgICBkb2N1bWVudCA9ICgoRGVmaW5pdGlvbkltcGwpZGVmaW5pdGlvbikudXBkYXRlRG9jdW1lbnQoKTsKLQotICAgIC8vIFJldHJpZXZlIHRoZSBuYW1lc3BhY2UgcHJlZml4IGZvciB0aGUgV1NETCBuYW1lc3BhY2UKLSAgICBTdHJpbmcgd3NkbE5hbWVzcGFjZSA9IFdTRExDb25zdGFudHMuV1NETF9OQU1FU1BBQ0VfVVJJOwotICAgIFN0cmluZyBxdWFsaWZpZXIgPSBkZWZpbml0aW9uLmdldFByZWZpeCh3c2RsTmFtZXNwYWNlKTsKLQotICAgIEVsZW1lbnQgbmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh3c2RsTmFtZXNwYWNlLCAocXVhbGlmaWVyID09IG51bGwgPyAiIiA6IHF1YWxpZmllciArICI6IikKLSAgICAgICsgV1NETENvbnN0YW50cy5nZXRFbGVtZW50VGFnKG5vZGVUeXBlKSk7Ci0KLSAgICBpZiAoZG9jdW1lbnQuZ2V0RG9jdW1lbnRFbGVtZW50KCkgPT0gbnVsbCkKLSAgICAgIGRvY3VtZW50LmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpOwotCi0gICAgaWYgKGdldERvY3VtZW50YXRpb25FbGVtZW50KCkgIT0gbnVsbCkKLSAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuaW1wb3J0Tm9kZShnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCB0cnVlKSk7Ci0KLSAgICByZXR1cm4gbmV3RWxlbWVudDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZVJlZmVyZW5jZXMoYm9vbGVhbiBkZWVwKQotICB7Ci0gICAgaWYgKGRlZXApCi0gICAgewotICAgICAgZm9yIChJdGVyYXRvciBjb250ZW50cyA9IGdldFdTRExDb250ZW50cygpLml0ZXJhdG9yKCk7IGNvbnRlbnRzLmhhc05leHQoKTspCi0gICAgICB7Ci0gICAgICAgIE9iamVjdCBjb250ZW50ID0gY29udGVudHMubmV4dCgpOwotICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFdTRExFbGVtZW50SW1wbCkKLSAgICAgICAgewotICAgICAgICAgIFdTRExFbGVtZW50SW1wbCBlbGVtZW50ID0gKFdTRExFbGVtZW50SW1wbCljb250ZW50OwotICAgICAgICAgIGVsZW1lbnQuaXNSZWNvbmNpbGluZyA9IHRydWU7Ci0gICAgICAgICAgZWxlbWVudC5yZWNvbmNpbGVSZWZlcmVuY2VzKHRydWUpOwotICAgICAgICAgIGVsZW1lbnQuaXNSZWNvbmNpbGluZyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFdTRExFbGVtZW50IGdldEJlc3RXU0RMRWxlbWVudChMaXN0IGVsZW1lbnRQYXRoKQotICB7Ci0gICAgV1NETEVsZW1lbnQgcmVzdWx0ID0gdGhpczsKLSAgICBmb3IgKEl0ZXJhdG9yIGNvbXBvbmVudHMgPSBnZXRXU0RMQ29udGVudHMoKS5pdGVyYXRvcigpOyBjb21wb25lbnRzLmhhc05leHQoKTspCi0gICAgewotICAgICAgT2JqZWN0IG9iamVjdCA9IGNvbXBvbmVudHMubmV4dCgpOwotICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFdTRExFbGVtZW50SW1wbCkKLSAgICAgIHsKLSAgICAgICAgV1NETEVsZW1lbnRJbXBsIGNoaWxkV1NETEVsZW1lbnQgPSAoV1NETEVsZW1lbnRJbXBsKW9iamVjdDsKLQotICAgICAgICBpZiAoZWxlbWVudFBhdGguY29udGFpbnMoY2hpbGRXU0RMRWxlbWVudC5nZXRFbGVtZW50KCkpKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gY2hpbGRXU0RMRWxlbWVudDsKLSAgICAgICAgICBXU0RMRWxlbWVudCBiZXR0ZXJXU0RMRWxlbWVudCA9IGNoaWxkV1NETEVsZW1lbnQuZ2V0QmVzdFdTRExFbGVtZW50KGVsZW1lbnRQYXRoKTsKLSAgICAgICAgICBpZiAoYmV0dGVyV1NETEVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBiZXR0ZXJXU0RMRWxlbWVudDsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAoIWNvbnNpZGVyQWxsQ29udGFpbnNGb3JCZXN0V1NETEVsZW1lbnQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gY29uc2lkZXJBbGxDb250YWluc0ZvckJlc3RXU0RMRWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBlbGVtZW50QXR0cmlidXRlc0NoYW5nZWQoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIGlmICghaXNVcGRhdGluZ0RPTSgpKQotICAgIHsKLSAgICAgIGlmICghaXNSZWNvbmNpbGluZykKLSAgICAgIHsKLSAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIqKioqIGNoYW5nZUZvciAiICsgZUNsYXNzKCkuZ2V0TmFtZSgpKTsKLQotICAgICAgICBpc1JlY29uY2lsaW5nID0gdHJ1ZTsKLSAgICAgICAgcmVjb25jaWxlQXR0cmlidXRlcyhjaGFuZ2VkRWxlbWVudCk7Ci0KLSAgICAgICAgV1NETEVsZW1lbnRJbXBsIHRoZUNvbnRhaW5lciA9IChXU0RMRWxlbWVudEltcGwpZ2V0Q29udGFpbmVyKCk7Ci0gICAgICAgIGlmICh0aGVDb250YWluZXIgIT0gbnVsbCAmJiB0aGVDb250YWluZXIuZ2V0RWxlbWVudCgpID09IGNoYW5nZWRFbGVtZW50KQotICAgICAgICB7Ci0gICAgICAgICAgdGhlQ29udGFpbmVyLmVsZW1lbnRBdHRyaWJ1dGVzQ2hhbmdlZChjaGFuZ2VkRWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpc1JlY29uY2lsaW5nID0gZmFsc2U7Ci0gICAgICAgIHRyYXZlcnNlVG9Sb290Rm9yUGF0Y2hpbmcoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIqKioqIGN5Y2xpYyBpbnRlcm5hbCByZWNvbmNpbGUgYXZvaWRlZCAiICsgZUNsYXNzKCkuZ2V0TmFtZSgpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiKioqKiBjeWNsaWMgRE9NIHJlY29uY2lsZSBhdm9pZGVkICIgKyBlQ2xhc3MoKS5nZXROYW1lKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGVsZW1lbnRDb250ZW50c0NoYW5nZWQoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIGlmICghaXNVcGRhdGluZ0RPTSgpKQotICAgIHsKLSAgICAgIGlmICghaXNSZWNvbmNpbGluZykKLSAgICAgIHsKLSAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIqKioqIGNoYW5nZUZvciAiICsgZUNsYXNzKCkuZ2V0TmFtZSgpKTsKLQotICAgICAgICBpc1JlY29uY2lsaW5nID0gdHJ1ZTsKLSAgICAgICAgcmVjb25jaWxlQ29udGVudHMoY2hhbmdlZEVsZW1lbnQpOwotCi0gICAgICAgIFdTRExFbGVtZW50SW1wbCB0aGVDb250YWluZXIgPSAoV1NETEVsZW1lbnRJbXBsKWdldENvbnRhaW5lcigpOwotICAgICAgICBpZiAodGhlQ29udGFpbmVyICE9IG51bGwgJiYgdGhlQ29udGFpbmVyLmdldEVsZW1lbnQoKSA9PSBjaGFuZ2VkRWxlbWVudCkKLSAgICAgICAgewotICAgICAgICAgIHRoZUNvbnRhaW5lci5lbGVtZW50Q29udGVudHNDaGFuZ2VkKGNoYW5nZWRFbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlzUmVjb25jaWxpbmcgPSBmYWxzZTsKLSAgICAgICAgdHJhdmVyc2VUb1Jvb3RGb3JQYXRjaGluZygpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIioqKiogY3ljbGljIGludGVybmFsIHJlY29uY2lsZSBhdm9pZGVkICIgKyBlQ2xhc3MoKS5nZXROYW1lKCkpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIqKioqIGN5Y2xpYyBET00gcmVjb25jaWxlIGF2b2lkZWQgIiArIGVDbGFzcygpLmdldE5hbWUoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdXBkYXRlUHJlZml4KE5vZGUgbm9kZSwgU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIG9sZFByZWZpeCwgU3RyaW5nIG5ld1ByZWZpeCkKLSAgewotICAgIGlmICgobmFtZXNwYWNlID09IG51bGwgPyBub2RlLmdldE5hbWVzcGFjZVVSSSgpID09IG51bGwgOiBuYW1lc3BhY2UuZXF1YWxzKG5vZGUuZ2V0TmFtZXNwYWNlVVJJKCkpKQotICAgICAgJiYgKG9sZFByZWZpeCA9PSBudWxsID8gbm9kZS5nZXRQcmVmaXgoKSA9PSBudWxsIDogb2xkUHJlZml4LmVxdWFscyhub2RlLmdldFByZWZpeCgpKSkpCi0gICAgewotICAgICAgbm9kZS5zZXRQcmVmaXgobmV3UHJlZml4KTsKLSAgICB9Ci0KLSAgICBmb3IgKE5vZGUgY2hpbGQgPSBub2RlLmdldEZpcnN0Q2hpbGQoKTsgY2hpbGQgIT0gbnVsbDsgY2hpbGQgPSBjaGlsZC5nZXROZXh0U2libGluZygpKQotICAgIHsKLSAgICAgIHVwZGF0ZVByZWZpeChjaGlsZCwgbmFtZXNwYWNlLCBvbGRQcmVmaXgsIG5ld1ByZWZpeCk7Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXROYW1lc3BhY2UoRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgU3RyaW5nIG5hbWUgPSBlbGVtZW50LmdldFRhZ05hbWUoKTsKLSAgICBpbnQgaW5kZXggPSBuYW1lLmluZGV4T2YoIjoiKTsgLy8kTk9OLU5MUy0xJAotICAgIFN0cmluZyBuc1ByZWZpeCA9IG51bGw7Ci0gICAgaWYgKGluZGV4ICE9IC0xKQotICAgIHsKLSAgICAgIG5zUHJlZml4ID0gbmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgbnNQcmVmaXggPSAieG1sbnMiOyAvLyROT04tTkxTLTEkCi0gICAgfQotCi0gICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IG51bGw7Ci0KLSAgICAvLyBGaXJzdCB0cnkgdG8gbG9jYXRlIHRoZSBuYW1lc3BhY2UgVVJJIGluIHRoZSBkZWZpbml0aW9uJ3MgcHJlZml4IHRvIG5hbWVzcGFjZSBtYXAuCi0gICAgLy8gVGhpcyB3aWxsIHByb3ZpZGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgZXhpc3RpbmcgY2xpZW50cy4KLQotICAgIERlZmluaXRpb24gZW5jbG9zaW5nRGVmaW5pdGlvbiA9IGdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgICBpZiAoZW5jbG9zaW5nRGVmaW5pdGlvbiAhPSBudWxsKQotICAgIHsKLSAgICAgIG5hbWVzcGFjZVVSSSA9IGVuY2xvc2luZ0RlZmluaXRpb24uZ2V0TmFtZXNwYWNlKG5zUHJlZml4KTsKLSAgICB9Ci0KLSAgICAvLyBXZSBkaWQgbm90IGZpbmQgaXQgYXQgdGhlIHRvcCBsZXZlbCwgdHJ5IHRvIGZpbmQgYSBsb2NhbGx5IGRlZmluZWQgbmFtZXNwYWNlIHByZWZpeC4KLQotICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBuYW1lc3BhY2VVUkkgPSBnZXROYW1lc3BhY2VVUklGcm9tUHJlZml4KGVsZW1lbnQsIG5zUHJlZml4KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmFtZXNwYWNlVVJJOwotICB9Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRMb2NhbE5hbWUoRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgU3RyaW5nIG5hbWUgPSBlbGVtZW50LmdldFRhZ05hbWUoKTsKLSAgICBpbnQgaW5kZXggPSBuYW1lLmluZGV4T2YoIjoiKTsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICByZXR1cm4gbmFtZTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKTsKLSAgfQotCi19IC8vV1NETEVsZW1lbnRJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvV1NETEZhY3RvcnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvV1NETEZhY3RvcnlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNDA5ZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL1dTRExGYWN0b3J5SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTkyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsOwotCi0KLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvblR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRGF0YVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucGx1Z2luLkVjb3JlUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5GYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5OYW1lc3BhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5GYWN0b3J5PC9iPi4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgV1NETEZhY3RvcnlJbXBsIGV4dGVuZHMgRUZhY3RvcnlJbXBsIGltcGxlbWVudHMgV1NETEZhY3RvcnkKLXsKLSAgLyoqCi0gICAqIENyZWF0ZXMgdGhlIGRlZmF1bHQgZmFjdG9yeSBpbXBsZW1lbnRhdGlvbi4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgV1NETEZhY3RvcnkgaW5pdCgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBXU0RMRmFjdG9yeSB0aGVXU0RMRmFjdG9yeSA9IChXU0RMRmFjdG9yeSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFRmFjdG9yeSgiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvV1NETCIpOyAvLyROT04tTkxTLTEkIAotICAgICAgaWYgKHRoZVdTRExGYWN0b3J5ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0aGVXU0RMRmFjdG9yeTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgRWNvcmVQbHVnaW4uSU5TVEFOQ0UubG9nKGV4Y2VwdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBuZXcgV1NETEZhY3RvcnlJbXBsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBXU0RMRmFjdG9yeUltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVPYmplY3QgY3JlYXRlKEVDbGFzcyBlQ2xhc3MpCi0gIHsKLSAgICBzd2l0Y2ggKGVDbGFzcy5nZXRDbGFzc2lmaWVySUQoKSkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfVFlQRToKLSAgICAgIHJldHVybiBjcmVhdGVQb3J0VHlwZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5PUEVSQVRJT046Ci0gICAgICByZXR1cm4gY3JlYXRlT3BlcmF0aW9uKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk1FU1NBR0U6Ci0gICAgICByZXR1cm4gY3JlYXRlTWVzc2FnZSgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QQVJUOgotICAgICAgcmV0dXJuIGNyZWF0ZVBhcnQoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElORzoKLSAgICAgIHJldHVybiBjcmVhdGVCaW5kaW5nKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OOgotICAgICAgcmV0dXJuIGNyZWF0ZUJpbmRpbmdPcGVyYXRpb24oKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuU0VSVklDRToKLSAgICAgIHJldHVybiBjcmVhdGVTZXJ2aWNlKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlQ6Ci0gICAgICByZXR1cm4gY3JlYXRlUG9ydCgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlQ6Ci0gICAgICByZXR1cm4gY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTjoKLSAgICAgIHJldHVybiBjcmVhdGVEZWZpbml0aW9uKCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLklNUE9SVDoKLSAgICAgIHJldHVybiBjcmVhdGVJbXBvcnQoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuSU5QVVQ6Ci0gICAgICByZXR1cm4gY3JlYXRlSW5wdXQoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1VUUFVUOgotICAgICAgcmV0dXJuIGNyZWF0ZU91dHB1dCgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5GQVVMVDoKLSAgICAgIHJldHVybiBjcmVhdGVGYXVsdCgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUOgotICAgICAgcmV0dXJuIGNyZWF0ZUJpbmRpbmdJbnB1dCgpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5CSU5ESU5HX09VVFBVVDoKLSAgICAgIHJldHVybiBjcmVhdGVCaW5kaW5nT3V0cHV0KCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkdfRkFVTFQ6Ci0gICAgICByZXR1cm4gY3JlYXRlQmluZGluZ0ZhdWx0KCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk5BTUVTUEFDRToKLSAgICAgIHJldHVybiBjcmVhdGVOYW1lc3BhY2UoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuVFlQRVM6Ci0gICAgICByZXR1cm4gY3JlYXRlVHlwZXMoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlQ6Ci0gICAgICByZXR1cm4gY3JlYXRlVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KCk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UOgotICAgICAgcmV0dXJuIGNyZWF0ZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KCk7Ci0gICAgICBkZWZhdWx0OgotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGNsYXNzICciICsgZUNsYXNzLmdldE5hbWUoKSArICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzaWZpZXIiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNyZWF0ZUZyb21TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgU3RyaW5nIGluaXRpYWxWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZURhdGFUeXBlLmdldENsYXNzaWZpZXJJRCgpKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUU5BTUU6Ci0gICAgICByZXR1cm4gY3JlYXRlUU5hbWVGcm9tU3RyaW5nKGVEYXRhVHlwZSwgaW5pdGlhbFZhbHVlKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX1RZUEU6Ci0gICAgICByZXR1cm4gY3JlYXRlT3BlcmF0aW9uVHlwZUZyb21TdHJpbmcoZURhdGFUeXBlLCBpbml0aWFsVmFsdWUpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ET01fRUxFTUVOVDoKLSAgICAgIHJldHVybiBjcmVhdGVET01FbGVtZW50RnJvbVN0cmluZyhlRGF0YVR5cGUsIGluaXRpYWxWYWx1ZSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLldTRExfRVhDRVBUSU9OOgotICAgICAgcmV0dXJuIGNyZWF0ZVdTRExFeGNlcHRpb25Gcm9tU3RyaW5nKGVEYXRhVHlwZSwgaW5pdGlhbFZhbHVlKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuRE9NX0RPQ1VNRU5UOgotICAgICAgcmV0dXJuIGNyZWF0ZURPTURvY3VtZW50RnJvbVN0cmluZyhlRGF0YVR5cGUsIGluaXRpYWxWYWx1ZSk7Ci0gICAgICBkZWZhdWx0OgotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGRhdGF0eXBlICciICsgZURhdGFUeXBlLmdldE5hbWUoKSArICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzaWZpZXIiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGNvbnZlcnRUb1N0cmluZyhFRGF0YVR5cGUgZURhdGFUeXBlLCBPYmplY3QgaW5zdGFuY2VWYWx1ZSkKLSAgewotICAgIHN3aXRjaCAoZURhdGFUeXBlLmdldENsYXNzaWZpZXJJRCgpKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuUU5BTUU6Ci0gICAgICByZXR1cm4gY29udmVydFFOYW1lVG9TdHJpbmcoZURhdGFUeXBlLCBpbnN0YW5jZVZhbHVlKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuT1BFUkFUSU9OX1RZUEU6Ci0gICAgICByZXR1cm4gY29udmVydE9wZXJhdGlvblR5cGVUb1N0cmluZyhlRGF0YVR5cGUsIGluc3RhbmNlVmFsdWUpOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5ET01fRUxFTUVOVDoKLSAgICAgIHJldHVybiBjb252ZXJ0RE9NRWxlbWVudFRvU3RyaW5nKGVEYXRhVHlwZSwgaW5zdGFuY2VWYWx1ZSk7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLldTRExfRVhDRVBUSU9OOgotICAgICAgcmV0dXJuIGNvbnZlcnRXU0RMRXhjZXB0aW9uVG9TdHJpbmcoZURhdGFUeXBlLCBpbnN0YW5jZVZhbHVlKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuRE9NX0RPQ1VNRU5UOgotICAgICAgcmV0dXJuIGNvbnZlcnRET01Eb2N1bWVudFRvU3RyaW5nKGVEYXRhVHlwZSwgaW5zdGFuY2VWYWx1ZSk7Ci0gICAgICBkZWZhdWx0OgotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGRhdGF0eXBlICciICsgZURhdGFUeXBlLmdldE5hbWUoKSArICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzaWZpZXIiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUG9ydFR5cGUgY3JlYXRlUG9ydFR5cGUoKQotICB7Ci0gICAgUG9ydFR5cGVJbXBsIHBvcnRUeXBlID0gbmV3IFBvcnRUeXBlSW1wbCgpOwotICAgIHJldHVybiBwb3J0VHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9wZXJhdGlvbiBjcmVhdGVPcGVyYXRpb24oKQotICB7Ci0gICAgT3BlcmF0aW9uSW1wbCBvcGVyYXRpb24gPSBuZXcgT3BlcmF0aW9uSW1wbCgpOwotICAgIHJldHVybiBvcGVyYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlIGNyZWF0ZU1lc3NhZ2UoKQotICB7Ci0gICAgTWVzc2FnZUltcGwgbWVzc2FnZSA9IG5ldyBNZXNzYWdlSW1wbCgpOwotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgUGFydCBjcmVhdGVQYXJ0KCkKLSAgewotICAgIFBhcnRJbXBsIHBhcnQgPSBuZXcgUGFydEltcGwoKTsKLSAgICByZXR1cm4gcGFydDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEJpbmRpbmcgY3JlYXRlQmluZGluZygpCi0gIHsKLSAgICBCaW5kaW5nSW1wbCBiaW5kaW5nID0gbmV3IEJpbmRpbmdJbXBsKCk7Ci0gICAgcmV0dXJuIGJpbmRpbmc7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBCaW5kaW5nT3BlcmF0aW9uIGNyZWF0ZUJpbmRpbmdPcGVyYXRpb24oKQotICB7Ci0gICAgQmluZGluZ09wZXJhdGlvbkltcGwgYmluZGluZ09wZXJhdGlvbiA9IG5ldyBCaW5kaW5nT3BlcmF0aW9uSW1wbCgpOwotICAgIHJldHVybiBiaW5kaW5nT3BlcmF0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU2VydmljZSBjcmVhdGVTZXJ2aWNlKCkKLSAgewotICAgIFNlcnZpY2VJbXBsIHNlcnZpY2UgPSBuZXcgU2VydmljZUltcGwoKTsKLSAgICByZXR1cm4gc2VydmljZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFBvcnQgY3JlYXRlUG9ydCgpCi0gIHsKLSAgICBQb3J0SW1wbCBwb3J0ID0gbmV3IFBvcnRJbXBsKCk7Ci0gICAgcmV0dXJuIHBvcnQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFeHRlbnNpYmlsaXR5RWxlbWVudCBjcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gIHsKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBuZXcgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsKCk7Ci0gICAgcmV0dXJuIGV4dGVuc2liaWxpdHlFbGVtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRGVmaW5pdGlvbiBjcmVhdGVEZWZpbml0aW9uKCkKLSAgewotICAgIERlZmluaXRpb25JbXBsIGRlZmluaXRpb24gPSBuZXcgRGVmaW5pdGlvbkltcGwoKTsKLSAgICByZXR1cm4gZGVmaW5pdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEltcG9ydCBjcmVhdGVJbXBvcnQoKQotICB7Ci0gICAgSW1wb3J0SW1wbCBpbXBvcnRfID0gbmV3IEltcG9ydEltcGwoKTsKLSAgICByZXR1cm4gaW1wb3J0XzsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIElucHV0IGNyZWF0ZUlucHV0KCkKLSAgewotICAgIElucHV0SW1wbCBpbnB1dCA9IG5ldyBJbnB1dEltcGwoKTsKLSAgICByZXR1cm4gaW5wdXQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPdXRwdXQgY3JlYXRlT3V0cHV0KCkKLSAgewotICAgIE91dHB1dEltcGwgb3V0cHV0ID0gbmV3IE91dHB1dEltcGwoKTsKLSAgICByZXR1cm4gb3V0cHV0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRmF1bHQgY3JlYXRlRmF1bHQoKQotICB7Ci0gICAgRmF1bHRJbXBsIGZhdWx0ID0gbmV3IEZhdWx0SW1wbCgpOwotICAgIHJldHVybiBmYXVsdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEJpbmRpbmdJbnB1dCBjcmVhdGVCaW5kaW5nSW5wdXQoKQotICB7Ci0gICAgQmluZGluZ0lucHV0SW1wbCBiaW5kaW5nSW5wdXQgPSBuZXcgQmluZGluZ0lucHV0SW1wbCgpOwotICAgIHJldHVybiBiaW5kaW5nSW5wdXQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBCaW5kaW5nT3V0cHV0IGNyZWF0ZUJpbmRpbmdPdXRwdXQoKQotICB7Ci0gICAgQmluZGluZ091dHB1dEltcGwgYmluZGluZ091dHB1dCA9IG5ldyBCaW5kaW5nT3V0cHV0SW1wbCgpOwotICAgIHJldHVybiBiaW5kaW5nT3V0cHV0OwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQmluZGluZ0ZhdWx0IGNyZWF0ZUJpbmRpbmdGYXVsdCgpCi0gIHsKLSAgICBCaW5kaW5nRmF1bHRJbXBsIGJpbmRpbmdGYXVsdCA9IG5ldyBCaW5kaW5nRmF1bHRJbXBsKCk7Ci0gICAgcmV0dXJuIGJpbmRpbmdGYXVsdDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE5hbWVzcGFjZSBjcmVhdGVOYW1lc3BhY2UoKQotICB7Ci0gICAgTmFtZXNwYWNlSW1wbCBuYW1lc3BhY2UgPSBuZXcgTmFtZXNwYWNlSW1wbCgpOwotICAgIHJldHVybiBuYW1lc3BhY2U7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBUeXBlcyBjcmVhdGVUeXBlcygpCi0gIHsKLSAgICBUeXBlc0ltcGwgdHlwZXMgPSBuZXcgVHlwZXNJbXBsKCk7Ci0gICAgcmV0dXJuIHR5cGVzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50IGNyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gIHsKLSAgICBVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIHVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCA9IG5ldyBVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsKCk7Ci0gICAgcmV0dXJuIHVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IGNyZWF0ZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgewotICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50SW1wbCB4c2RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCA9IG5ldyBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwoKTsKLSAgICByZXR1cm4geHNkU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBRTmFtZSBjcmVhdGVRTmFtZUZyb21TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgU3RyaW5nIGluaXRpYWxWYWx1ZSkKLSAgewotICAgIHJldHVybiAoUU5hbWUpc3VwZXIuY3JlYXRlRnJvbVN0cmluZyhlRGF0YVR5cGUsIGluaXRpYWxWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgY29udmVydFFOYW1lVG9TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgT2JqZWN0IGluc3RhbmNlVmFsdWUpCi0gIHsKLSAgICByZXR1cm4gc3VwZXIuY29udmVydFRvU3RyaW5nKGVEYXRhVHlwZSwgaW5zdGFuY2VWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgT3BlcmF0aW9uVHlwZSBjcmVhdGVPcGVyYXRpb25UeXBlRnJvbVN0cmluZyhFRGF0YVR5cGUgZURhdGFUeXBlLCBTdHJpbmcgaW5pdGlhbFZhbHVlKQotICB7Ci0gICAgaWYgKCJSRVFVRVNUX1JFU1BPTlNFIi5lcXVhbHMoaW5pdGlhbFZhbHVlKSkKLSAgICB7Ci0gICAgICByZXR1cm4gT3BlcmF0aW9uVHlwZS5SRVFVRVNUX1JFU1BPTlNFOwotICAgIH0KLSAgICBlbHNlIGlmICgiT05FX1dBWSIuZXF1YWxzKGluaXRpYWxWYWx1ZSkpCi0gICAgewotICAgICAgcmV0dXJuIE9wZXJhdGlvblR5cGUuT05FX1dBWTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoIk5PVElGSUNBVElPTiIuZXF1YWxzKGluaXRpYWxWYWx1ZSkpCi0gICAgewotICAgICAgcmV0dXJuIE9wZXJhdGlvblR5cGUuTk9USUZJQ0FUSU9OOwotICAgIH0KLSAgICBlbHNlIGlmICgiU09MSUNJVF9SRVNQT05TRSIuZXF1YWxzKGluaXRpYWxWYWx1ZSkpCi0gICAgewotICAgICAgcmV0dXJuIE9wZXJhdGlvblR5cGUuU09MSUNJVF9SRVNQT05TRTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgY29udmVydE9wZXJhdGlvblR5cGVUb1N0cmluZyhFRGF0YVR5cGUgZURhdGFUeXBlLCBPYmplY3QgaW5zdGFuY2VWYWx1ZSkKLSAgewotICAgIHJldHVybiBzdXBlci5jb252ZXJ0VG9TdHJpbmcoZURhdGFUeXBlLCBpbnN0YW5jZVZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVsZW1lbnQgY3JlYXRlRE9NRWxlbWVudEZyb21TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgU3RyaW5nIGluaXRpYWxWYWx1ZSkKLSAgewotICAgIHJldHVybiAoRWxlbWVudClzdXBlci5jcmVhdGVGcm9tU3RyaW5nKGVEYXRhVHlwZSwgaW5pdGlhbFZhbHVlKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFN0cmluZyBjb252ZXJ0RE9NRWxlbWVudFRvU3RyaW5nKEVEYXRhVHlwZSBlRGF0YVR5cGUsIE9iamVjdCBpbnN0YW5jZVZhbHVlKQotICB7Ci0gICAgcmV0dXJuIHN1cGVyLmNvbnZlcnRUb1N0cmluZyhlRGF0YVR5cGUsIGluc3RhbmNlVmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgV1NETEV4Y2VwdGlvbiBjcmVhdGVXU0RMRXhjZXB0aW9uRnJvbVN0cmluZyhFRGF0YVR5cGUgZURhdGFUeXBlLCBTdHJpbmcgaW5pdGlhbFZhbHVlKQotICB7Ci0gICAgcmV0dXJuIChXU0RMRXhjZXB0aW9uKXN1cGVyLmNyZWF0ZUZyb21TdHJpbmcoZURhdGFUeXBlLCBpbml0aWFsVmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGNvbnZlcnRXU0RMRXhjZXB0aW9uVG9TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgT2JqZWN0IGluc3RhbmNlVmFsdWUpCi0gIHsKLSAgICByZXR1cm4gc3VwZXIuY29udmVydFRvU3RyaW5nKGVEYXRhVHlwZSwgaW5zdGFuY2VWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudCBjcmVhdGVET01Eb2N1bWVudEZyb21TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgU3RyaW5nIGluaXRpYWxWYWx1ZSkKLSAgewotICAgIHJldHVybiAoRG9jdW1lbnQpc3VwZXIuY3JlYXRlRnJvbVN0cmluZyhlRGF0YVR5cGUsIGluaXRpYWxWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgY29udmVydERPTURvY3VtZW50VG9TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgT2JqZWN0IGluc3RhbmNlVmFsdWUpCi0gIHsKLSAgICByZXR1cm4gc3VwZXIuY29udmVydFRvU3RyaW5nKGVEYXRhVHlwZSwgaW5zdGFuY2VWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBXU0RMUGFja2FnZSBnZXRXU0RMUGFja2FnZSgpCi0gIHsKLSAgICByZXR1cm4gKFdTRExQYWNrYWdlKWdldEVQYWNrYWdlKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBkZXByZWNhdGVkCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgV1NETFBhY2thZ2UgZ2V0UGFja2FnZSgpCi0gIHsKLSAgICByZXR1cm4gV1NETFBhY2thZ2UuZUlOU1RBTkNFOwotICB9Ci0KLSAgLy8KLSAgLy8KLSAgLy8KLSAgcHVibGljIEV4dGVuc2liaWxpdHlFbGVtZW50IGNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50KFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBsb2NhbE5hbWUpCi0gIHsKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkgZmFjdG9yeSA9IFdTRExQbHVnaW4uSU5TVEFOQ0UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5KG5hbWVzcGFjZSk7Ci0gICAgaWYgKGZhY3RvcnkgIT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWN0b3J5LmNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50KG5hbWVzcGFjZSwgbG9jYWxOYW1lKTsKLSAgICBlbHNlCi0gICAgewotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBjcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICAgIC8vIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXh0ZW5zaWJpbGl0eSBlbGVtZW50LgotCi0gICAgICBRTmFtZSBlbGVtZW50VHlwZSA9IG5ldyBRTmFtZShuYW1lc3BhY2UsIGxvY2FsTmFtZSk7Ci0gICAgICBleHRlbnNpYmlsaXR5RWxlbWVudC5zZXRFbGVtZW50VHlwZShlbGVtZW50VHlwZSk7Ci0gICAgICByZXR1cm4gZXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0gICAgfQotICB9Ci0KLSAgLyoKLSAgIHB1YmxpYyB2b2lkIHNldEFsd2F5c1VzZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudChib29sZWFuIHZhbHVlKQotICAgewotICAgU3lzdGVtLm91dC5wcmludGxuKCJEZXByZWNhdGVkOiBXU0RMRmFjdG9yeUltcGwuc2V0VXNlRXh0ZW5zaW9uRmFjdG9yaWVzIik7Ci0gICB9Ci0gICAqLwotfSAvL1dTRExGYWN0b3J5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL1dTRExQYWNrYWdlSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC9pbXBsL1dTRExQYWNrYWdlSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjIyMzhiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9XU0RMUGFja2FnZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3NzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uVHlwZTsKLWltcG9ydCBqYXZheC53c2RsLldTRExFeGNlcHRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkF0dHJpYnV0ZUV4dGVuc2libGU7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkVsZW1lbnRFeHRlbnNpYmxlOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpb25SZWdpc3RyeTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRURhdGFUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FUGFja2FnZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkltcG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RQYWNrYWdlOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMUGFja2FnZUltcGwgZXh0ZW5kcyBFUGFja2FnZUltcGwgaW1wbGVtZW50cyBXU0RMUGFja2FnZQotewotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIHdzZGxFbGVtZW50RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIHBvcnRUeXBlRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIG9wZXJhdGlvbkVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBtZXNzYWdlRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIHBhcnRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgYmluZGluZ0VDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBiaW5kaW5nT3BlcmF0aW9uRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIHNlcnZpY2VFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgcG9ydEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBleHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBkZWZpbml0aW9uRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGltcG9ydEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBleHRlbnNpYmxlRWxlbWVudEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpbnB1dEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBvdXRwdXRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgZmF1bHRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgYmluZGluZ0lucHV0RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGJpbmRpbmdPdXRwdXRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgYmluZGluZ0ZhdWx0RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIG5hbWVzcGFjZUVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpUG9ydFR5cGVFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaU9wZXJhdGlvbkVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpSW5wdXRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaU91dHB1dEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpRmF1bHRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaU1lc3NhZ2VFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaVBhcnRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaVNlcnZpY2VFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaVBvcnRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaUJpbmRpbmdFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaUJpbmRpbmdPcGVyYXRpb25FQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaUJpbmRpbmdJbnB1dEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpQmluZGluZ091dHB1dEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpQmluZGluZ0ZhdWx0RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGlFeHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpRGVmaW5pdGlvbkVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpSW1wb3J0RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGlMaXN0RUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGlNYXBFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaXVybEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpRXh0ZW5zaW9uUmVnaXN0cnlFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgdHlwZXNFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaUl0ZXJhdG9yRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRUNsYXNzIGlUeXBlc0VDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyB1bmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgeHNkU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgbWVzc2FnZVJlZmVyZW5jZUVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpRWxlbWVudEV4dGVuc2libGVFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaUF0dHJpYnV0ZUV4dGVuc2libGVFQ2xhc3MgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFQ2xhc3MgaU9iamVjdEVDbGFzcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVDbGFzcyBpU2NoZW1hRUNsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRURhdGFUeXBlIHFOYW1lRURhdGFUeXBlID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRURhdGFUeXBlIG9wZXJhdGlvblR5cGVFRGF0YVR5cGUgPSBudWxsOwotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJpdmF0ZSBFRGF0YVR5cGUgZG9tRWxlbWVudEVEYXRhVHlwZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcml2YXRlIEVEYXRhVHlwZSB3c2RsRXhjZXB0aW9uRURhdGFUeXBlID0gbnVsbDsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgRURhdGFUeXBlIGRvbURvY3VtZW50RURhdGFUeXBlID0gbnVsbDsKLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4sIHJlZ2lzdGVyZWQgd2l0aAotICAgKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5IEVQYWNrYWdlLlJlZ2lzdHJ5fSBieSB0aGUgcGFja2FnZQotICAgKiBwYWNrYWdlIFVSSSB2YWx1ZS4KLSAgICogPHA+Tm90ZTogdGhlIGNvcnJlY3Qgd2F5IHRvIGNyZWF0ZSB0aGUgcGFja2FnZSBpcyB2aWEgdGhlIHN0YXRpYwotICAgKiBmYWN0b3J5IG1ldGhvZCB7QGxpbmsgI2luaXQgaW5pdCgpfSwgd2hpY2ggYWxzbyBwZXJmb3JtcwotICAgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLAotICAgKiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlI2VOU19VUkkKLSAgICogQHNlZSAjaW5pdCgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgV1NETFBhY2thZ2VJbXBsKCkKLSAgewotICAgIHN1cGVyKGVOU19VUkksIFdTRExGYWN0b3J5LmVJTlNUQU5DRSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNJbml0ZWQgPSBmYWxzZTsKLQotICAvKioKLSAgICogQ3JlYXRlcywgcmVnaXN0ZXJzLCBhbmQgaW5pdGlhbGl6ZXMgdGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGlzCi0gICAqIG1vZGVsLCBhbmQgZm9yIGFueSBvdGhlcnMgdXBvbiB3aGljaCBpdCBkZXBlbmRzLiAgU2ltcGxlCi0gICAqIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkIGJ5IGNhbGxpbmcgdGhpcyBtZXRob2Qgb24gYWxsCi0gICAqIGRlcGVuZGVudCBwYWNrYWdlcyBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4gIFRoaXMgbWV0aG9kIGRyaXZlcwotICAgKiBpbml0aWFsaXphdGlvbiBmb3IgaW50ZXJkZXBlbmRlbnQgcGFja2FnZXMgZGlyZWN0bHksIGluIHBhcmFsbGVsCi0gICAqIHdpdGggdGhpcyBwYWNrYWdlLCBpdHNlbGYuCi0gICAqIDxwPk9mIHRoaXMgcGFja2FnZSBhbmQgaXRzIGludGVyZGVwZW5kZW5jaWVzLCBhbGwgcGFja2FnZXMgd2hpY2gKLSAgICogaGF2ZSBub3QgeWV0IGJlZW4gcmVnaXN0ZXJlZCBieSB0aGVpciBVUkkgdmFsdWVzIGFyZSBmaXJzdCBjcmVhdGVkCi0gICAqIGFuZCByZWdpc3RlcmVkLiAgVGhlIHBhY2thZ2VzIGFyZSB0aGVuIGluaXRpYWxpemVkIGluIHR3byBzdGVwczoKLSAgICogbWV0YS1tb2RlbCBvYmplY3RzIGZvciBhbGwgb2YgdGhlIHBhY2thZ2VzIGFyZSBjcmVhdGVkIGJlZm9yZSBhbnkKLSAgICogYXJlIGluaXRpYWxpemVkLCBzaW5jZSBvbmUgcGFja2FnZSdzIG1ldGEtbW9kZWwgb2JqZWN0cyBtYXkgcmVmZXIgdG8KLSAgICogdGhvc2Ugb2YgYW5vdGhlci4KLSAgICogPHA+SW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCB3aWxsIG5vdCBhZmZlY3QgYW55IHBhY2thZ2VzIHRoYXQgaGF2ZQotICAgKiBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNlTlNfVVJJCi0gICAqIEBzZWUgI2NyZWF0ZVBhY2thZ2VDb250ZW50cygpCi0gICAqIEBzZWUgI2luaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFdTRExQYWNrYWdlIGluaXQoKQotICB7Ci0gICAgaWYgKGlzSW5pdGVkKQotICAgICAgcmV0dXJuIChXU0RMUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShXU0RMUGFja2FnZS5lTlNfVVJJKTsKLQotICAgIC8vIE9idGFpbiBvciBjcmVhdGUgYW5kIHJlZ2lzdGVyIHBhY2thZ2UKLSAgICBXU0RMUGFja2FnZUltcGwgdGhlV1NETFBhY2thZ2UgPSAoV1NETFBhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShlTlNfVVJJKSBpbnN0YW5jZW9mIFdTRExQYWNrYWdlSW1wbAotICAgICAgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShlTlNfVVJJKSA6IG5ldyBXU0RMUGFja2FnZUltcGwoKSk7Ci0KLSAgICBpc0luaXRlZCA9IHRydWU7Ci0KLSAgICAvLyBJbml0aWFsaXplIHNpbXBsZSBkZXBlbmRlbmNpZXMKLSAgICBYU0RQYWNrYWdlLmVJTlNUQU5DRS5lQ2xhc3MoKTsKLQotICAgIC8vIENyZWF0ZSBwYWNrYWdlIG1ldGEtZGF0YSBvYmplY3RzCi0gICAgdGhlV1NETFBhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7Ci0KLSAgICAvLyBJbml0aWFsaXplIGNyZWF0ZWQgbWV0YS1kYXRhCi0gICAgdGhlV1NETFBhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOwotCi0gICAgLy8gTWFyayBtZXRhLWRhdGEgdG8gaW5kaWNhdGUgaXQgY2FuJ3QgYmUgY2hhbmdlZAotICAgIHRoZVdTRExQYWNrYWdlLmZyZWV6ZSgpOwotCi0gICAgcmV0dXJuIHRoZVdTRExQYWNrYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldFdTRExFbGVtZW50KCkKLSAgewotICAgIHJldHVybiB3c2RsRWxlbWVudEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0V1NETEVsZW1lbnRfRG9jdW1lbnRhdGlvbkVsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKXdzZGxFbGVtZW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFdTRExFbGVtZW50X0VsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKXdzZGxFbGVtZW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0UG9ydFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHBvcnRUeXBlRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRQb3J0VHlwZV9RTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpcG9ydFR5cGVFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0UG9ydFR5cGVfVW5kZWZpbmVkKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlwb3J0VHlwZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRQb3J0VHlwZV9FT3BlcmF0aW9ucygpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2UpcG9ydFR5cGVFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRPcGVyYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbkVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0T3BlcmF0aW9uX1N0eWxlKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlvcGVyYXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0T3BlcmF0aW9uX05hbWUoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKW9wZXJhdGlvbkVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRPcGVyYXRpb25fVW5kZWZpbmVkKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlvcGVyYXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVSZWZlcmVuY2UgZ2V0T3BlcmF0aW9uX0VJbnB1dCgpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2Upb3BlcmF0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldE9wZXJhdGlvbl9FT3V0cHV0KCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlvcGVyYXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg0KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVSZWZlcmVuY2UgZ2V0T3BlcmF0aW9uX0VGYXVsdHMoKQotICB7Ci0gICAgcmV0dXJuIChFUmVmZXJlbmNlKW9wZXJhdGlvbkVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDUpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRPcGVyYXRpb25fRVBhcmFtZXRlck9yZGVyaW5nKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlvcGVyYXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg2KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiBtZXNzYWdlRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRNZXNzYWdlX1FOYW1lKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSltZXNzYWdlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldE1lc3NhZ2VfVW5kZWZpbmVkKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSltZXNzYWdlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldE1lc3NhZ2VfRVBhcnRzKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSltZXNzYWdlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0UGFydCgpCi0gIHsKLSAgICByZXR1cm4gcGFydEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0UGFydF9OYW1lKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlwYXJ0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFBhcnRfRWxlbWVudE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKXBhcnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0UGFydF9UeXBlTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpcGFydEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDIpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRQYXJ0X1R5cGVEZWZpbml0aW9uKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlwYXJ0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldFBhcnRfRWxlbWVudERlY2xhcmF0aW9uKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlwYXJ0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldFBhcnRfRU1lc3NhZ2UoKQotICB7Ci0gICAgcmV0dXJuIChFUmVmZXJlbmNlKXBhcnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg1KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRCaW5kaW5nKCkKLSAgewotICAgIHJldHVybiBiaW5kaW5nRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRCaW5kaW5nX1FOYW1lKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSliaW5kaW5nRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldEJpbmRpbmdfVW5kZWZpbmVkKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSliaW5kaW5nRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldEJpbmRpbmdfRVBvcnRUeXBlKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSliaW5kaW5nRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldEJpbmRpbmdfRUJpbmRpbmdPcGVyYXRpb25zKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSliaW5kaW5nRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0QmluZGluZ09wZXJhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gYmluZGluZ09wZXJhdGlvbkVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0QmluZGluZ09wZXJhdGlvbl9OYW1lKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSliaW5kaW5nT3BlcmF0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldEJpbmRpbmdPcGVyYXRpb25fRU9wZXJhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2UpYmluZGluZ09wZXJhdGlvbkVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nSW5wdXQoKQotICB7Ci0gICAgcmV0dXJuIChFUmVmZXJlbmNlKWJpbmRpbmdPcGVyYXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVSZWZlcmVuY2UgZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ091dHB1dCgpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2UpYmluZGluZ09wZXJhdGlvbkVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDMpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nRmF1bHRzKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSliaW5kaW5nT3BlcmF0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0U2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gc2VydmljZUVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0U2VydmljZV9RTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpc2VydmljZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRTZXJ2aWNlX1VuZGVmaW5lZCgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpc2VydmljZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRTZXJ2aWNlX0VQb3J0cygpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2Upc2VydmljZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDIpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldFBvcnQoKQotICB7Ci0gICAgcmV0dXJuIHBvcnRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFBvcnRfTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpcG9ydEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRQb3J0X0VCaW5kaW5nKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlwb3J0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIGV4dGVuc2liaWxpdHlFbGVtZW50RUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9SZXF1aXJlZCgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpZXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfRWxlbWVudFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKWV4dGVuc2liaWxpdHlFbGVtZW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0RGVmaW5pdGlvbigpCi0gIHsKLSAgICByZXR1cm4gZGVmaW5pdGlvbkVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0RGVmaW5pdGlvbl9UYXJnZXROYW1lc3BhY2UoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKWRlZmluaXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0RGVmaW5pdGlvbl9Mb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpZGVmaW5pdGlvbkVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXREZWZpbml0aW9uX1FOYW1lKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSlkZWZpbml0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldERlZmluaXRpb25fRW5jb2RpbmcoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKWRlZmluaXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgzKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVSZWZlcmVuY2UgZ2V0RGVmaW5pdGlvbl9FTWVzc2FnZXMoKQotICB7Ci0gICAgcmV0dXJuIChFUmVmZXJlbmNlKWRlZmluaXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg2KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVSZWZlcmVuY2UgZ2V0RGVmaW5pdGlvbl9FUG9ydFR5cGVzKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlkZWZpbml0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldERlZmluaXRpb25fRUJpbmRpbmdzKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlkZWZpbml0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoOCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldERlZmluaXRpb25fRVNlcnZpY2VzKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlkZWZpbml0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoOSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldERlZmluaXRpb25fRU5hbWVzcGFjZXMoKQotICB7Ci0gICAgcmV0dXJuIChFUmVmZXJlbmNlKWRlZmluaXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldERlZmluaXRpb25fRVR5cGVzKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlkZWZpbml0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldERlZmluaXRpb25fRUltcG9ydHMoKQotICB7Ci0gICAgcmV0dXJuIChFUmVmZXJlbmNlKWRlZmluaXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg0KTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJbXBvcnQoKQotICB7Ci0gICAgcmV0dXJuIGltcG9ydEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0SW1wb3J0X05hbWVzcGFjZVVSSSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpaW1wb3J0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldEltcG9ydF9Mb2NhdGlvblVSSSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpaW1wb3J0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldEltcG9ydF9FRGVmaW5pdGlvbigpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2UpaW1wb3J0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldEltcG9ydF9FU2NoZW1hKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSlpbXBvcnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgzKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRFeHRlbnNpYmxlRWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gZXh0ZW5zaWJsZUVsZW1lbnRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFUmVmZXJlbmNlIGdldEV4dGVuc2libGVFbGVtZW50X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKQotICB7Ci0gICAgcmV0dXJuIChFUmVmZXJlbmNlKWV4dGVuc2libGVFbGVtZW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SW5wdXQoKQotICB7Ci0gICAgcmV0dXJuIGlucHV0RUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldE91dHB1dCgpCi0gIHsKLSAgICByZXR1cm4gb3V0cHV0RUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldEZhdWx0KCkKLSAgewotICAgIHJldHVybiBmYXVsdEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRCaW5kaW5nSW5wdXQoKQotICB7Ci0gICAgcmV0dXJuIGJpbmRpbmdJbnB1dEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVBdHRyaWJ1dGUgZ2V0QmluZGluZ0lucHV0X05hbWUoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKWJpbmRpbmdJbnB1dEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRCaW5kaW5nSW5wdXRfRUlucHV0KCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSliaW5kaW5nSW5wdXRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRCaW5kaW5nT3V0cHV0KCkKLSAgewotICAgIHJldHVybiBiaW5kaW5nT3V0cHV0RUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXRCaW5kaW5nT3V0cHV0X05hbWUoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKWJpbmRpbmdPdXRwdXRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVSZWZlcmVuY2UgZ2V0QmluZGluZ091dHB1dF9FT3V0cHV0KCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSliaW5kaW5nT3V0cHV0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0QmluZGluZ0ZhdWx0KCkKLSAgewotICAgIHJldHVybiBiaW5kaW5nRmF1bHRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldEJpbmRpbmdGYXVsdF9OYW1lKCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSliaW5kaW5nRmF1bHRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVSZWZlcmVuY2UgZ2V0QmluZGluZ0ZhdWx0X0VGYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gKEVSZWZlcmVuY2UpYmluZGluZ0ZhdWx0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0TmFtZXNwYWNlKCkKLSAgewotICAgIHJldHVybiBuYW1lc3BhY2VFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldE5hbWVzcGFjZV9VUkkoKQotICB7Ci0gICAgcmV0dXJuIChFQXR0cmlidXRlKW5hbWVzcGFjZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUF0dHJpYnV0ZSBnZXROYW1lc3BhY2VfUHJlZml4KCkKLSAgewotICAgIHJldHVybiAoRUF0dHJpYnV0ZSluYW1lc3BhY2VFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJUG9ydFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIGlQb3J0VHlwZUVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJT3BlcmF0aW9uKCkKLSAgewotICAgIHJldHVybiBpT3BlcmF0aW9uRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElJbnB1dCgpCi0gIHsKLSAgICByZXR1cm4gaUlucHV0RUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElPdXRwdXQoKQotICB7Ci0gICAgcmV0dXJuIGlPdXRwdXRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SUZhdWx0KCkKLSAgewotICAgIHJldHVybiBpRmF1bHRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SU1lc3NhZ2UoKQotICB7Ci0gICAgcmV0dXJuIGlNZXNzYWdlRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElQYXJ0KCkKLSAgewotICAgIHJldHVybiBpUGFydEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJU2VydmljZSgpCi0gIHsKLSAgICByZXR1cm4gaVNlcnZpY2VFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SVBvcnQoKQotICB7Ci0gICAgcmV0dXJuIGlQb3J0RUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElCaW5kaW5nKCkKLSAgewotICAgIHJldHVybiBpQmluZGluZ0VDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJQmluZGluZ09wZXJhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gaUJpbmRpbmdPcGVyYXRpb25FQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SUJpbmRpbmdJbnB1dCgpCi0gIHsKLSAgICByZXR1cm4gaUJpbmRpbmdJbnB1dEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJQmluZGluZ091dHB1dCgpCi0gIHsKLSAgICByZXR1cm4gaUJpbmRpbmdPdXRwdXRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SUJpbmRpbmdGYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gaUJpbmRpbmdGYXVsdEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIGlFeHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJRGVmaW5pdGlvbigpCi0gIHsKLSAgICByZXR1cm4gaURlZmluaXRpb25FQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SUltcG9ydCgpCi0gIHsKLSAgICByZXR1cm4gaUltcG9ydEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJTGlzdCgpCi0gIHsKLSAgICByZXR1cm4gaUxpc3RFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SU1hcCgpCi0gIHsKLSAgICByZXR1cm4gaU1hcEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJVVJMKCkKLSAgewotICAgIHJldHVybiBpdXJsRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElFeHRlbnNpb25SZWdpc3RyeSgpCi0gIHsKLSAgICByZXR1cm4gaUV4dGVuc2lvblJlZ2lzdHJ5RUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldFR5cGVzKCkKLSAgewotICAgIHJldHVybiB0eXBlc0VDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJSXRlcmF0b3IoKQotICB7Ci0gICAgcmV0dXJuIGlJdGVyYXRvckVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRJVHlwZXMoKQotICB7Ci0gICAgcmV0dXJuIGlUeXBlc0VDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIHVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVSZWZlcmVuY2UgZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50X0NoaWxkcmVuKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSl1bmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVDbGFzcyBnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4geHNkU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50X0RvY3VtZW50QmFzZVVSSSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpeHNkU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVSZWZlcmVuY2UgZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRfU2NoZW1hKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSl4c2RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldE1lc3NhZ2VSZWZlcmVuY2UoKQotICB7Ci0gICAgcmV0dXJuIG1lc3NhZ2VSZWZlcmVuY2VFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQXR0cmlidXRlIGdldE1lc3NhZ2VSZWZlcmVuY2VfTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gKEVBdHRyaWJ1dGUpbWVzc2FnZVJlZmVyZW5jZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRVJlZmVyZW5jZSBnZXRNZXNzYWdlUmVmZXJlbmNlX0VNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiAoRVJlZmVyZW5jZSltZXNzYWdlUmVmZXJlbmNlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SUVsZW1lbnRFeHRlbnNpYmxlKCkKLSAgewotICAgIHJldHVybiBpRWxlbWVudEV4dGVuc2libGVFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SUF0dHJpYnV0ZUV4dGVuc2libGUoKQotICB7Ci0gICAgcmV0dXJuIGlBdHRyaWJ1dGVFeHRlbnNpYmxlRUNsYXNzOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRUNsYXNzIGdldElPYmplY3QoKQotICB7Ci0gICAgcmV0dXJuIGlPYmplY3RFQ2xhc3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFQ2xhc3MgZ2V0SVNjaGVtYSgpCi0gIHsKLSAgICByZXR1cm4gaVNjaGVtYUVDbGFzczsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVEYXRhVHlwZSBnZXRRTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gcU5hbWVFRGF0YVR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFRGF0YVR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgpCi0gIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uVHlwZUVEYXRhVHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEVEYXRhVHlwZSBnZXRET01FbGVtZW50KCkKLSAgewotICAgIHJldHVybiBkb21FbGVtZW50RURhdGFUeXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgRURhdGFUeXBlIGdldFdTRExFeGNlcHRpb24oKQotICB7Ci0gICAgcmV0dXJuIHdzZGxFeGNlcHRpb25FRGF0YVR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBFRGF0YVR5cGUgZ2V0RE9NRG9jdW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIGRvbURvY3VtZW50RURhdGFUeXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgV1NETEZhY3RvcnkgZ2V0V1NETEZhY3RvcnkoKQotICB7Ci0gICAgcmV0dXJuIChXU0RMRmFjdG9yeSlnZXRFRmFjdG9yeUluc3RhbmNlKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBpc0NyZWF0ZWQgPSBmYWxzZTsKLQotICAvKioKLSAgICogQ3JlYXRlcyB0aGUgbWV0YS1tb2RlbCBvYmplY3RzIGZvciB0aGUgcGFja2FnZS4gIFRoaXMgbWV0aG9kIGlzCi0gICAqIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNyZWF0ZVBhY2thZ2VDb250ZW50cygpCi0gIHsKLSAgICBpZiAoaXNDcmVhdGVkKQotICAgICAgcmV0dXJuOwotICAgIGlzQ3JlYXRlZCA9IHRydWU7Ci0KLSAgICAvLyBDcmVhdGUgY2xhc3NlcyBhbmQgdGhlaXIgZmVhdHVyZXMKLSAgICB3c2RsRWxlbWVudEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhXU0RMX0VMRU1FTlQpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUod3NkbEVsZW1lbnRFQ2xhc3MsIFdTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHdzZGxFbGVtZW50RUNsYXNzLCBXU0RMX0VMRU1FTlRfX0VMRU1FTlQpOwotCi0gICAgcG9ydFR5cGVFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoUE9SVF9UWVBFKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHBvcnRUeXBlRUNsYXNzLCBQT1JUX1RZUEVfX1FOQU1FKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHBvcnRUeXBlRUNsYXNzLCBQT1JUX1RZUEVfX1VOREVGSU5FRCk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShwb3J0VHlwZUVDbGFzcywgUE9SVF9UWVBFX19FT1BFUkFUSU9OUyk7Ci0KLSAgICBvcGVyYXRpb25FQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoT1BFUkFUSU9OKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKG9wZXJhdGlvbkVDbGFzcywgT1BFUkFUSU9OX19TVFlMRSk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShvcGVyYXRpb25FQ2xhc3MsIE9QRVJBVElPTl9fTkFNRSk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShvcGVyYXRpb25FQ2xhc3MsIE9QRVJBVElPTl9fVU5ERUZJTkVEKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKG9wZXJhdGlvbkVDbGFzcywgT1BFUkFUSU9OX19FSU5QVVQpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2Uob3BlcmF0aW9uRUNsYXNzLCBPUEVSQVRJT05fX0VPVVRQVVQpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2Uob3BlcmF0aW9uRUNsYXNzLCBPUEVSQVRJT05fX0VGQVVMVFMpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2Uob3BlcmF0aW9uRUNsYXNzLCBPUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkcpOwotCi0gICAgbWVzc2FnZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhNRVNTQUdFKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKG1lc3NhZ2VFQ2xhc3MsIE1FU1NBR0VfX1FOQU1FKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKG1lc3NhZ2VFQ2xhc3MsIE1FU1NBR0VfX1VOREVGSU5FRCk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShtZXNzYWdlRUNsYXNzLCBNRVNTQUdFX19FUEFSVFMpOwotCi0gICAgcGFydEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhQQVJUKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHBhcnRFQ2xhc3MsIFBBUlRfX05BTUUpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUocGFydEVDbGFzcywgUEFSVF9fRUxFTUVOVF9OQU1FKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHBhcnRFQ2xhc3MsIFBBUlRfX1RZUEVfTkFNRSk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShwYXJ0RUNsYXNzLCBQQVJUX19UWVBFX0RFRklOSVRJT04pOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UocGFydEVDbGFzcywgUEFSVF9fRUxFTUVOVF9ERUNMQVJBVElPTik7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShwYXJ0RUNsYXNzLCBQQVJUX19FTUVTU0FHRSk7Ci0KLSAgICBiaW5kaW5nRUNsYXNzID0gY3JlYXRlRUNsYXNzKEJJTkRJTkcpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoYmluZGluZ0VDbGFzcywgQklORElOR19fUU5BTUUpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoYmluZGluZ0VDbGFzcywgQklORElOR19fVU5ERUZJTkVEKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKGJpbmRpbmdFQ2xhc3MsIEJJTkRJTkdfX0VQT1JUX1RZUEUpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UoYmluZGluZ0VDbGFzcywgQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUyk7Ci0KLSAgICBiaW5kaW5nT3BlcmF0aW9uRUNsYXNzID0gY3JlYXRlRUNsYXNzKEJJTkRJTkdfT1BFUkFUSU9OKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKGJpbmRpbmdPcGVyYXRpb25FQ2xhc3MsIEJJTkRJTkdfT1BFUkFUSU9OX19OQU1FKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKGJpbmRpbmdPcGVyYXRpb25FQ2xhc3MsIEJJTkRJTkdfT1BFUkFUSU9OX19FT1BFUkFUSU9OKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKGJpbmRpbmdPcGVyYXRpb25FQ2xhc3MsIEJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVCk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShiaW5kaW5nT3BlcmF0aW9uRUNsYXNzLCBCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKGJpbmRpbmdPcGVyYXRpb25FQ2xhc3MsIEJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFMpOwotCi0gICAgc2VydmljZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhTRVJWSUNFKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHNlcnZpY2VFQ2xhc3MsIFNFUlZJQ0VfX1FOQU1FKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHNlcnZpY2VFQ2xhc3MsIFNFUlZJQ0VfX1VOREVGSU5FRCk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShzZXJ2aWNlRUNsYXNzLCBTRVJWSUNFX19FUE9SVFMpOwotCi0gICAgcG9ydEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhQT1JUKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKHBvcnRFQ2xhc3MsIFBPUlRfX05BTUUpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UocG9ydEVDbGFzcywgUE9SVF9fRUJJTkRJTkcpOwotCi0gICAgZXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoRVhURU5TSUJJTElUWV9FTEVNRU5UKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKGV4dGVuc2liaWxpdHlFbGVtZW50RUNsYXNzLCBFWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKGV4dGVuc2liaWxpdHlFbGVtZW50RUNsYXNzLCBFWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRSk7Ci0KLSAgICBkZWZpbml0aW9uRUNsYXNzID0gY3JlYXRlRUNsYXNzKERFRklOSVRJT04pOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUoZGVmaW5pdGlvbkVDbGFzcywgREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRSk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShkZWZpbml0aW9uRUNsYXNzLCBERUZJTklUSU9OX19MT0NBVElPTik7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShkZWZpbml0aW9uRUNsYXNzLCBERUZJTklUSU9OX19RTkFNRSk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShkZWZpbml0aW9uRUNsYXNzLCBERUZJTklUSU9OX19FTkNPRElORyk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShkZWZpbml0aW9uRUNsYXNzLCBERUZJTklUSU9OX19FSU1QT1JUUyk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShkZWZpbml0aW9uRUNsYXNzLCBERUZJTklUSU9OX19FVFlQRVMpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UoZGVmaW5pdGlvbkVDbGFzcywgREVGSU5JVElPTl9fRU1FU1NBR0VTKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKGRlZmluaXRpb25FQ2xhc3MsIERFRklOSVRJT05fX0VQT1JUX1RZUEVTKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKGRlZmluaXRpb25FQ2xhc3MsIERFRklOSVRJT05fX0VCSU5ESU5HUyk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShkZWZpbml0aW9uRUNsYXNzLCBERUZJTklUSU9OX19FU0VSVklDRVMpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UoZGVmaW5pdGlvbkVDbGFzcywgREVGSU5JVElPTl9fRU5BTUVTUEFDRVMpOwotCi0gICAgaW1wb3J0RUNsYXNzID0gY3JlYXRlRUNsYXNzKElNUE9SVCk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShpbXBvcnRFQ2xhc3MsIElNUE9SVF9fTkFNRVNQQUNFX1VSSSk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShpbXBvcnRFQ2xhc3MsIElNUE9SVF9fTE9DQVRJT05fVVJJKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKGltcG9ydEVDbGFzcywgSU1QT1JUX19FREVGSU5JVElPTik7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShpbXBvcnRFQ2xhc3MsIElNUE9SVF9fRVNDSEVNQSk7Ci0KLSAgICBleHRlbnNpYmxlRWxlbWVudEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhFWFRFTlNJQkxFX0VMRU1FTlQpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UoZXh0ZW5zaWJsZUVsZW1lbnRFQ2xhc3MsIEVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMpOwotCi0gICAgaW5wdXRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSU5QVVQpOwotCi0gICAgb3V0cHV0RUNsYXNzID0gY3JlYXRlRUNsYXNzKE9VVFBVVCk7Ci0KLSAgICBmYXVsdEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhGQVVMVCk7Ci0KLSAgICBiaW5kaW5nSW5wdXRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoQklORElOR19JTlBVVCk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShiaW5kaW5nSW5wdXRFQ2xhc3MsIEJJTkRJTkdfSU5QVVRfX05BTUUpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UoYmluZGluZ0lucHV0RUNsYXNzLCBCSU5ESU5HX0lOUFVUX19FSU5QVVQpOwotCi0gICAgYmluZGluZ091dHB1dEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhCSU5ESU5HX09VVFBVVCk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShiaW5kaW5nT3V0cHV0RUNsYXNzLCBCSU5ESU5HX09VVFBVVF9fTkFNRSk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZShiaW5kaW5nT3V0cHV0RUNsYXNzLCBCSU5ESU5HX09VVFBVVF9fRU9VVFBVVCk7Ci0KLSAgICBiaW5kaW5nRmF1bHRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoQklORElOR19GQVVMVCk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShiaW5kaW5nRmF1bHRFQ2xhc3MsIEJJTkRJTkdfRkFVTFRfX05BTUUpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UoYmluZGluZ0ZhdWx0RUNsYXNzLCBCSU5ESU5HX0ZBVUxUX19FRkFVTFQpOwotCi0gICAgbmFtZXNwYWNlRUNsYXNzID0gY3JlYXRlRUNsYXNzKE5BTUVTUEFDRSk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZShuYW1lc3BhY2VFQ2xhc3MsIE5BTUVTUEFDRV9fVVJJKTsKLSAgICBjcmVhdGVFQXR0cmlidXRlKG5hbWVzcGFjZUVDbGFzcywgTkFNRVNQQUNFX19QUkVGSVgpOwotCi0gICAgaVBvcnRUeXBlRUNsYXNzID0gY3JlYXRlRUNsYXNzKElQT1JUX1RZUEUpOwotCi0gICAgaU9wZXJhdGlvbkVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJT1BFUkFUSU9OKTsKLQotICAgIGlJbnB1dEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJSU5QVVQpOwotCi0gICAgaU91dHB1dEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJT1VUUFVUKTsKLQotICAgIGlGYXVsdEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJRkFVTFQpOwotCi0gICAgaU1lc3NhZ2VFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSU1FU1NBR0UpOwotCi0gICAgaVBhcnRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSVBBUlQpOwotCi0gICAgaVNlcnZpY2VFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSVNFUlZJQ0UpOwotCi0gICAgaVBvcnRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSVBPUlQpOwotCi0gICAgaUJpbmRpbmdFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSUJJTkRJTkcpOwotCi0gICAgaUJpbmRpbmdPcGVyYXRpb25FQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSUJJTkRJTkdfT1BFUkFUSU9OKTsKLQotICAgIGlCaW5kaW5nSW5wdXRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSUJJTkRJTkdfSU5QVVQpOwotCi0gICAgaUJpbmRpbmdPdXRwdXRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSUJJTkRJTkdfT1VUUFVUKTsKLQotICAgIGlCaW5kaW5nRmF1bHRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSUJJTkRJTkdfRkFVTFQpOwotCi0gICAgaUV4dGVuc2liaWxpdHlFbGVtZW50RUNsYXNzID0gY3JlYXRlRUNsYXNzKElFWFRFTlNJQklMSVRZX0VMRU1FTlQpOwotCi0gICAgaURlZmluaXRpb25FQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSURFRklOSVRJT04pOwotCi0gICAgaUltcG9ydEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJSU1QT1JUKTsKLQotICAgIGlMaXN0RUNsYXNzID0gY3JlYXRlRUNsYXNzKElMSVNUKTsKLQotICAgIGlNYXBFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSU1BUCk7Ci0KLSAgICBpdXJsRUNsYXNzID0gY3JlYXRlRUNsYXNzKElVUkwpOwotCi0gICAgaUV4dGVuc2lvblJlZ2lzdHJ5RUNsYXNzID0gY3JlYXRlRUNsYXNzKElFWFRFTlNJT05fUkVHSVNUUlkpOwotCi0gICAgdHlwZXNFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoVFlQRVMpOwotCi0gICAgaUl0ZXJhdG9yRUNsYXNzID0gY3JlYXRlRUNsYXNzKElJVEVSQVRPUik7Ci0KLSAgICBpVHlwZXNFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSVRZUEVTKTsKLQotICAgIHVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCk7Ci0gICAgY3JlYXRlRVJlZmVyZW5jZSh1bmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MsIFVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19DSElMRFJFTik7Ci0KLSAgICB4c2RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCk7Ci0gICAgY3JlYXRlRUF0dHJpYnV0ZSh4c2RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcywgWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UX0JBU0VfVVJJKTsKLSAgICBjcmVhdGVFUmVmZXJlbmNlKHhzZFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50RUNsYXNzLCBYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fU0NIRU1BKTsKLQotICAgIG1lc3NhZ2VSZWZlcmVuY2VFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoTUVTU0FHRV9SRUZFUkVOQ0UpOwotICAgIGNyZWF0ZUVBdHRyaWJ1dGUobWVzc2FnZVJlZmVyZW5jZUVDbGFzcywgTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUUpOwotICAgIGNyZWF0ZUVSZWZlcmVuY2UobWVzc2FnZVJlZmVyZW5jZUVDbGFzcywgTUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFKTsKLQotICAgIGlFbGVtZW50RXh0ZW5zaWJsZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJRUxFTUVOVF9FWFRFTlNJQkxFKTsKLQotICAgIGlBdHRyaWJ1dGVFeHRlbnNpYmxlRUNsYXNzID0gY3JlYXRlRUNsYXNzKElBVFRSSUJVVEVfRVhURU5TSUJMRSk7Ci0KLSAgICBpT2JqZWN0RUNsYXNzID0gY3JlYXRlRUNsYXNzKElPQkpFQ1QpOwotCi0gICAgaVNjaGVtYUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJU0NIRU1BKTsKLQotICAgIC8vIENyZWF0ZSBkYXRhIHR5cGVzCi0gICAgcU5hbWVFRGF0YVR5cGUgPSBjcmVhdGVFRGF0YVR5cGUoUU5BTUUpOwotICAgIG9wZXJhdGlvblR5cGVFRGF0YVR5cGUgPSBjcmVhdGVFRGF0YVR5cGUoT1BFUkFUSU9OX1RZUEUpOwotICAgIGRvbUVsZW1lbnRFRGF0YVR5cGUgPSBjcmVhdGVFRGF0YVR5cGUoRE9NX0VMRU1FTlQpOwotICAgIHdzZGxFeGNlcHRpb25FRGF0YVR5cGUgPSBjcmVhdGVFRGF0YVR5cGUoV1NETF9FWENFUFRJT04pOwotICAgIGRvbURvY3VtZW50RURhdGFUeXBlID0gY3JlYXRlRURhdGFUeXBlKERPTV9ET0NVTUVOVCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBpc0luaXRpYWxpemVkID0gZmFsc2U7Ci0KLSAgLyoqCi0gICAqIENvbXBsZXRlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSBhbmQgaXRzIG1ldGEtbW9kZWwuICBUaGlzCi0gICAqIG1ldGhvZCBpcyBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkKLSAgewotICAgIGlmIChpc0luaXRpYWxpemVkKQotICAgICAgcmV0dXJuOwotICAgIGlzSW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0gICAgLy8gSW5pdGlhbGl6ZSBwYWNrYWdlCi0gICAgc2V0TmFtZShlTkFNRSk7Ci0gICAgc2V0TnNQcmVmaXgoZU5TX1BSRUZJWCk7Ci0gICAgc2V0TnNVUkkoZU5TX1VSSSk7Ci0KLSAgICAvLyBPYnRhaW4gb3RoZXIgZGVwZW5kZW50IHBhY2thZ2VzCi0gICAgWFNEUGFja2FnZSB0aGVYU0RQYWNrYWdlID0gKFhTRFBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoWFNEUGFja2FnZS5lTlNfVVJJKTsKLQotICAgIC8vIEFkZCBzdXBlcnR5cGVzIHRvIGNsYXNzZXMKLSAgICBwb3J0VHlwZUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldEV4dGVuc2libGVFbGVtZW50KCkpOwotICAgIHBvcnRUeXBlRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SVBvcnRUeXBlKCkpOwotICAgIG9wZXJhdGlvbkVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldEV4dGVuc2libGVFbGVtZW50KCkpOwotICAgIG9wZXJhdGlvbkVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElPcGVyYXRpb24oKSk7Ci0gICAgbWVzc2FnZUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldEV4dGVuc2libGVFbGVtZW50KCkpOwotICAgIG1lc3NhZ2VFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJTWVzc2FnZSgpKTsKLSAgICBwYXJ0RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0RXh0ZW5zaWJsZUVsZW1lbnQoKSk7Ci0gICAgcGFydEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElQYXJ0KCkpOwotICAgIGJpbmRpbmdFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRFeHRlbnNpYmxlRWxlbWVudCgpKTsKLSAgICBiaW5kaW5nRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SUJpbmRpbmcoKSk7Ci0gICAgYmluZGluZ09wZXJhdGlvbkVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldEV4dGVuc2libGVFbGVtZW50KCkpOwotICAgIGJpbmRpbmdPcGVyYXRpb25FQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJQmluZGluZ09wZXJhdGlvbigpKTsKLSAgICBzZXJ2aWNlRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0RXh0ZW5zaWJsZUVsZW1lbnQoKSk7Ci0gICAgc2VydmljZUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElTZXJ2aWNlKCkpOwotICAgIHBvcnRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRFeHRlbnNpYmxlRWxlbWVudCgpKTsKLSAgICBwb3J0RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SVBvcnQoKSk7Ci0gICAgZXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRXU0RMRWxlbWVudCgpKTsKLSAgICBleHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElFeHRlbnNpYmlsaXR5RWxlbWVudCgpKTsKLSAgICBkZWZpbml0aW9uRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0RXh0ZW5zaWJsZUVsZW1lbnQoKSk7Ci0gICAgZGVmaW5pdGlvbkVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElEZWZpbml0aW9uKCkpOwotICAgIGltcG9ydEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldEV4dGVuc2libGVFbGVtZW50KCkpOwotICAgIGltcG9ydEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElJbXBvcnQoKSk7Ci0gICAgZXh0ZW5zaWJsZUVsZW1lbnRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRXU0RMRWxlbWVudCgpKTsKLSAgICBleHRlbnNpYmxlRWxlbWVudEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElFbGVtZW50RXh0ZW5zaWJsZSgpKTsKLSAgICBleHRlbnNpYmxlRWxlbWVudEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElBdHRyaWJ1dGVFeHRlbnNpYmxlKCkpOwotICAgIGlucHV0RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0TWVzc2FnZVJlZmVyZW5jZSgpKTsKLSAgICBpbnB1dEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElJbnB1dCgpKTsKLSAgICBvdXRwdXRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRNZXNzYWdlUmVmZXJlbmNlKCkpOwotICAgIG91dHB1dEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElPdXRwdXQoKSk7Ci0gICAgZmF1bHRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRNZXNzYWdlUmVmZXJlbmNlKCkpOwotICAgIGZhdWx0RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SUZhdWx0KCkpOwotICAgIGJpbmRpbmdJbnB1dEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldEV4dGVuc2libGVFbGVtZW50KCkpOwotICAgIGJpbmRpbmdJbnB1dEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElCaW5kaW5nSW5wdXQoKSk7Ci0gICAgYmluZGluZ091dHB1dEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldEV4dGVuc2libGVFbGVtZW50KCkpOwotICAgIGJpbmRpbmdPdXRwdXRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJQmluZGluZ091dHB1dCgpKTsKLSAgICBiaW5kaW5nRmF1bHRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRFeHRlbnNpYmxlRWxlbWVudCgpKTsKLSAgICBiaW5kaW5nRmF1bHRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJQmluZGluZ0ZhdWx0KCkpOwotICAgIGlQb3J0VHlwZUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElBdHRyaWJ1dGVFeHRlbnNpYmxlKCkpOwotICAgIGlPcGVyYXRpb25FQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJRWxlbWVudEV4dGVuc2libGUoKSk7Ci0gICAgaUlucHV0RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SUF0dHJpYnV0ZUV4dGVuc2libGUoKSk7Ci0gICAgaU91dHB1dEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElBdHRyaWJ1dGVFeHRlbnNpYmxlKCkpOwotICAgIGlGYXVsdEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElBdHRyaWJ1dGVFeHRlbnNpYmxlKCkpOwotICAgIGlNZXNzYWdlRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SUVsZW1lbnRFeHRlbnNpYmxlKCkpOwotICAgIGlQYXJ0RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SUF0dHJpYnV0ZUV4dGVuc2libGUoKSk7Ci0gICAgaVNlcnZpY2VFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJRWxlbWVudEV4dGVuc2libGUoKSk7Ci0gICAgaVBvcnRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJRWxlbWVudEV4dGVuc2libGUoKSk7Ci0gICAgaUJpbmRpbmdFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJRWxlbWVudEV4dGVuc2libGUoKSk7Ci0gICAgaUJpbmRpbmdPcGVyYXRpb25FQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJRWxlbWVudEV4dGVuc2libGUoKSk7Ci0gICAgaUJpbmRpbmdJbnB1dEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElFbGVtZW50RXh0ZW5zaWJsZSgpKTsKLSAgICBpQmluZGluZ091dHB1dEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldElFbGVtZW50RXh0ZW5zaWJsZSgpKTsKLSAgICBpQmluZGluZ0ZhdWx0RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SUVsZW1lbnRFeHRlbnNpYmxlKCkpOwotICAgIGlEZWZpbml0aW9uRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SUVsZW1lbnRFeHRlbnNpYmxlKCkpOwotICAgIGlJbXBvcnRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJQXR0cmlidXRlRXh0ZW5zaWJsZSgpKTsKLSAgICB0eXBlc0VDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldEV4dGVuc2libGVFbGVtZW50KCkpOwotICAgIHR5cGVzRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SVR5cGVzKCkpOwotICAgIHVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldEV4dGVuc2liaWxpdHlFbGVtZW50KCkpOwotICAgIHhzZFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSk7Ci0gICAgeHNkU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRJU2NoZW1hKCkpOwotICAgIG1lc3NhZ2VSZWZlcmVuY2VFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRFeHRlbnNpYmxlRWxlbWVudCgpKTsKLSAgICBpU2NoZW1hRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0SUV4dGVuc2liaWxpdHlFbGVtZW50KCkpOwotCi0gICAgLy8gSW5pdGlhbGl6ZSBjbGFzc2VzIGFuZCBmZWF0dXJlczsgYWRkIG9wZXJhdGlvbnMgYW5kIHBhcmFtZXRlcnMKLSAgICBpbml0RUNsYXNzKHdzZGxFbGVtZW50RUNsYXNzLCBXU0RMRWxlbWVudC5jbGFzcywgIldTRExFbGVtZW50IiwgSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFdTRExFbGVtZW50X0RvY3VtZW50YXRpb25FbGVtZW50KCksCi0gICAgICB0aGlzLmdldERPTUVsZW1lbnQoKSwKLSAgICAgICJkb2N1bWVudGF0aW9uRWxlbWVudCIsIG51bGwsIDAsIDEsIFdTRExFbGVtZW50LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRXU0RMRWxlbWVudF9FbGVtZW50KCksCi0gICAgICB0aGlzLmdldERPTUVsZW1lbnQoKSwKLSAgICAgICJlbGVtZW50IiwgbnVsbCwgMCwgMSwgV1NETEVsZW1lbnQuY2xhc3MsIElTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbih3c2RsRWxlbWVudEVDbGFzcywgdGhpcy5nZXREZWZpbml0aW9uKCksICJnZXRFbmNsb3NpbmdEZWZpbml0aW9uIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIEVPcGVyYXRpb24gb3AgPSBhZGRFT3BlcmF0aW9uKHdzZGxFbGVtZW50RUNsYXNzLCBudWxsLCAic2V0RW5jbG9zaW5nRGVmaW5pdGlvbiIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXREZWZpbml0aW9uKCksICJkZWZpbml0aW9uIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MocG9ydFR5cGVFQ2xhc3MsIFBvcnRUeXBlLmNsYXNzLCAiUG9ydFR5cGUiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFBvcnRUeXBlX1FOYW1lKCksCi0gICAgICB0aGlzLmdldFFOYW1lKCksCi0gICAgICAicU5hbWUiLCBudWxsLCAwLCAxLCBQb3J0VHlwZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0UG9ydFR5cGVfVW5kZWZpbmVkKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RUJvb2xlYW4oKSwKLSAgICAgICJ1bmRlZmluZWQiLCBudWxsLCAwLCAxLCBQb3J0VHlwZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0UG9ydFR5cGVfRU9wZXJhdGlvbnMoKSwKLSAgICAgIHRoaXMuZ2V0T3BlcmF0aW9uKCksCi0gICAgICBudWxsLAotICAgICAgImVPcGVyYXRpb25zIiwgbnVsbCwgMCwgLTEsIFBvcnRUeXBlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKG9wZXJhdGlvbkVDbGFzcywgT3BlcmF0aW9uLmNsYXNzLCAiT3BlcmF0aW9uIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRPcGVyYXRpb25fU3R5bGUoKSwKLSAgICAgIHRoaXMuZ2V0T3BlcmF0aW9uVHlwZSgpLAotICAgICAgInN0eWxlIiwgbnVsbCwgMCwgMSwgT3BlcmF0aW9uLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRPcGVyYXRpb25fTmFtZSgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwKLSAgICAgICJuYW1lIiwgbnVsbCwgMCwgMSwgT3BlcmF0aW9uLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRPcGVyYXRpb25fVW5kZWZpbmVkKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RUJvb2xlYW4oKSwKLSAgICAgICJ1bmRlZmluZWQiLCBudWxsLCAwLCAxLCBPcGVyYXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldE9wZXJhdGlvbl9FSW5wdXQoKSwKLSAgICAgIHRoaXMuZ2V0SW5wdXQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZUlucHV0IiwgbnVsbCwgMCwgMSwgT3BlcmF0aW9uLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVSZWZlcmVuY2UoCi0gICAgICBnZXRPcGVyYXRpb25fRU91dHB1dCgpLAotICAgICAgdGhpcy5nZXRPdXRwdXQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZU91dHB1dCIsIG51bGwsIDAsIDEsIE9wZXJhdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0T3BlcmF0aW9uX0VGYXVsdHMoKSwKLSAgICAgIHRoaXMuZ2V0RmF1bHQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZUZhdWx0cyIsIG51bGwsIDAsIC0xLCBPcGVyYXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldE9wZXJhdGlvbl9FUGFyYW1ldGVyT3JkZXJpbmcoKSwKLSAgICAgIHRoaXMuZ2V0UGFydCgpLAotICAgICAgbnVsbCwKLSAgICAgICJlUGFyYW1ldGVyT3JkZXJpbmciLCBudWxsLCAwLCAtMSwgT3BlcmF0aW9uLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKG1lc3NhZ2VFQ2xhc3MsIE1lc3NhZ2UuY2xhc3MsICJNZXNzYWdlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRNZXNzYWdlX1FOYW1lKCksCi0gICAgICB0aGlzLmdldFFOYW1lKCksCi0gICAgICAicU5hbWUiLCBudWxsLCAwLCAxLCBNZXNzYWdlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRNZXNzYWdlX1VuZGVmaW5lZCgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVCb29sZWFuKCksCi0gICAgICAidW5kZWZpbmVkIiwgbnVsbCwgMCwgMSwgTWVzc2FnZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0TWVzc2FnZV9FUGFydHMoKSwKLSAgICAgIHRoaXMuZ2V0UGFydCgpLAotICAgICAgbnVsbCwKLSAgICAgICJlUGFydHMiLCBudWxsLCAwLCAtMSwgTWVzc2FnZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhwYXJ0RUNsYXNzLCBQYXJ0LmNsYXNzLCAiUGFydCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0UGFydF9OYW1lKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgIm5hbWUiLCBudWxsLCAwLCAxLCBQYXJ0LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRQYXJ0X0VsZW1lbnROYW1lKCksCi0gICAgICB0aGlzLmdldFFOYW1lKCksCi0gICAgICAiZWxlbWVudE5hbWUiLCBudWxsLCAwLCAxLCBQYXJ0LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRQYXJ0X1R5cGVOYW1lKCksCi0gICAgICB0aGlzLmdldFFOYW1lKCksCi0gICAgICAidHlwZU5hbWUiLCBudWxsLCAwLCAxLCBQYXJ0LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVSZWZlcmVuY2UoCi0gICAgICBnZXRQYXJ0X1R5cGVEZWZpbml0aW9uKCksCi0gICAgICB0aGVYU0RQYWNrYWdlLmdldFhTRFR5cGVEZWZpbml0aW9uKCksCi0gICAgICBudWxsLAotICAgICAgInR5cGVEZWZpbml0aW9uIiwgbnVsbCwgMCwgMSwgUGFydC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0UGFydF9FbGVtZW50RGVjbGFyYXRpb24oKSwKLSAgICAgIHRoZVhTRFBhY2thZ2UuZ2V0WFNERWxlbWVudERlY2xhcmF0aW9uKCksCi0gICAgICBudWxsLAotICAgICAgImVsZW1lbnREZWNsYXJhdGlvbiIsIG51bGwsIDAsIDEsIFBhcnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldFBhcnRfRU1lc3NhZ2UoKSwKLSAgICAgIHRoaXMuZ2V0TWVzc2FnZSgpLAotICAgICAgbnVsbCwKLSAgICAgICJlTWVzc2FnZSIsIG51bGwsIDAsIDEsIFBhcnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoYmluZGluZ0VDbGFzcywgQmluZGluZy5jbGFzcywgIkJpbmRpbmciLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldEJpbmRpbmdfUU5hbWUoKSwKLSAgICAgIHRoaXMuZ2V0UU5hbWUoKSwKLSAgICAgICJxTmFtZSIsIG51bGwsIDAsIDEsIEJpbmRpbmcuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldEJpbmRpbmdfVW5kZWZpbmVkKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RUJvb2xlYW4oKSwKLSAgICAgICJ1bmRlZmluZWQiLCBudWxsLCAwLCAxLCBCaW5kaW5nLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVSZWZlcmVuY2UoCi0gICAgICBnZXRCaW5kaW5nX0VQb3J0VHlwZSgpLAotICAgICAgdGhpcy5nZXRQb3J0VHlwZSgpLAotICAgICAgbnVsbCwKLSAgICAgICJlUG9ydFR5cGUiLCBudWxsLCAxLCAxLCBCaW5kaW5nLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVSZWZlcmVuY2UoCi0gICAgICBnZXRCaW5kaW5nX0VCaW5kaW5nT3BlcmF0aW9ucygpLAotICAgICAgdGhpcy5nZXRCaW5kaW5nT3BlcmF0aW9uKCksCi0gICAgICBudWxsLAotICAgICAgImVCaW5kaW5nT3BlcmF0aW9ucyIsIG51bGwsIDAsIC0xLCBCaW5kaW5nLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGJpbmRpbmdPcGVyYXRpb25FQ2xhc3MsIEJpbmRpbmdPcGVyYXRpb24uY2xhc3MsICJCaW5kaW5nT3BlcmF0aW9uIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRCaW5kaW5nT3BlcmF0aW9uX05hbWUoKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAibmFtZSIsIG51bGwsIDAsIDEsIEJpbmRpbmdPcGVyYXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldEJpbmRpbmdPcGVyYXRpb25fRU9wZXJhdGlvbigpLAotICAgICAgdGhpcy5nZXRPcGVyYXRpb24oKSwKLSAgICAgIG51bGwsCi0gICAgICAiZU9wZXJhdGlvbiIsIG51bGwsIDEsIDEsIEJpbmRpbmdPcGVyYXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdJbnB1dCgpLAotICAgICAgdGhpcy5nZXRCaW5kaW5nSW5wdXQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZUJpbmRpbmdJbnB1dCIsIG51bGwsIDAsIDEsIEJpbmRpbmdPcGVyYXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdPdXRwdXQoKSwKLSAgICAgIHRoaXMuZ2V0QmluZGluZ091dHB1dCgpLAotICAgICAgbnVsbCwKLSAgICAgICJlQmluZGluZ091dHB1dCIsIG51bGwsIDAsIDEsIEJpbmRpbmdPcGVyYXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdGYXVsdHMoKSwKLSAgICAgIHRoaXMuZ2V0QmluZGluZ0ZhdWx0KCksCi0gICAgICBudWxsLAotICAgICAgImVCaW5kaW5nRmF1bHRzIiwgbnVsbCwgMCwgLTEsIEJpbmRpbmdPcGVyYXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3Moc2VydmljZUVDbGFzcywgU2VydmljZS5jbGFzcywgIlNlcnZpY2UiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNlcnZpY2VfUU5hbWUoKSwKLSAgICAgIHRoaXMuZ2V0UU5hbWUoKSwKLSAgICAgICJxTmFtZSIsIG51bGwsIDAsIDEsIFNlcnZpY2UuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldFNlcnZpY2VfVW5kZWZpbmVkKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RUJvb2xlYW4oKSwKLSAgICAgICJ1bmRlZmluZWQiLCBudWxsLCAwLCAxLCBTZXJ2aWNlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVSZWZlcmVuY2UoCi0gICAgICBnZXRTZXJ2aWNlX0VQb3J0cygpLAotICAgICAgdGhpcy5nZXRQb3J0KCksCi0gICAgICBudWxsLAotICAgICAgImVQb3J0cyIsIG51bGwsIDAsIC0xLCBTZXJ2aWNlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKHBvcnRFQ2xhc3MsIFBvcnQuY2xhc3MsICJQb3J0IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRQb3J0X05hbWUoKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAibmFtZSIsIG51bGwsIDAsIDEsIFBvcnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldFBvcnRfRUJpbmRpbmcoKSwKLSAgICAgIHRoaXMuZ2V0QmluZGluZygpLAotICAgICAgbnVsbCwKLSAgICAgICJlQmluZGluZyIsIG51bGwsIDEsIDEsIFBvcnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoCi0gICAgICBleHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcywKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50LmNsYXNzLAotICAgICAgIkV4dGVuc2liaWxpdHlFbGVtZW50IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9SZXF1aXJlZCgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVCb29sZWFuKCksCi0gICAgICAicmVxdWlyZWQiLCBudWxsLCAwLCAxLCBFeHRlbnNpYmlsaXR5RWxlbWVudC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfRWxlbWVudFR5cGUoKSwKLSAgICAgIHRoaXMuZ2V0UU5hbWUoKSwKLSAgICAgICJlbGVtZW50VHlwZSIsIG51bGwsIDAsIDEsIEV4dGVuc2liaWxpdHlFbGVtZW50LmNsYXNzLCBJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoZGVmaW5pdGlvbkVDbGFzcywgRGVmaW5pdGlvbi5jbGFzcywgIkRlZmluaXRpb24iLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldERlZmluaXRpb25fVGFyZ2V0TmFtZXNwYWNlKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgInRhcmdldE5hbWVzcGFjZSIsIG51bGwsIDAsIDEsIERlZmluaXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldERlZmluaXRpb25fTG9jYXRpb24oKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAibG9jYXRpb24iLCBudWxsLCAwLCAxLCBEZWZpbml0aW9uLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXREZWZpbml0aW9uX1FOYW1lKCksCi0gICAgICB0aGlzLmdldFFOYW1lKCksCi0gICAgICAicU5hbWUiLCBudWxsLCAwLCAxLCBEZWZpbml0aW9uLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXREZWZpbml0aW9uX0VuY29kaW5nKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgImVuY29kaW5nIiwgbnVsbCwgMCwgMSwgRGVmaW5pdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0RGVmaW5pdGlvbl9FSW1wb3J0cygpLAotICAgICAgdGhpcy5nZXRJbXBvcnQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZUltcG9ydHMiLCBudWxsLCAwLCAtMSwgRGVmaW5pdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0RGVmaW5pdGlvbl9FVHlwZXMoKSwKLSAgICAgIHRoaXMuZ2V0VHlwZXMoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZVR5cGVzIiwgbnVsbCwgMCwgMSwgRGVmaW5pdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0RGVmaW5pdGlvbl9FTWVzc2FnZXMoKSwKLSAgICAgIHRoaXMuZ2V0TWVzc2FnZSgpLAotICAgICAgbnVsbCwKLSAgICAgICJlTWVzc2FnZXMiLCBudWxsLCAwLCAtMSwgRGVmaW5pdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0RGVmaW5pdGlvbl9FUG9ydFR5cGVzKCksCi0gICAgICB0aGlzLmdldFBvcnRUeXBlKCksCi0gICAgICBudWxsLAotICAgICAgImVQb3J0VHlwZXMiLCBudWxsLCAwLCAtMSwgRGVmaW5pdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0RGVmaW5pdGlvbl9FQmluZGluZ3MoKSwKLSAgICAgIHRoaXMuZ2V0QmluZGluZygpLAotICAgICAgbnVsbCwKLSAgICAgICJlQmluZGluZ3MiLCBudWxsLCAwLCAtMSwgRGVmaW5pdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0RGVmaW5pdGlvbl9FU2VydmljZXMoKSwKLSAgICAgIHRoaXMuZ2V0U2VydmljZSgpLAotICAgICAgbnVsbCwKLSAgICAgICJlU2VydmljZXMiLCBudWxsLCAwLCAtMSwgRGVmaW5pdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0RGVmaW5pdGlvbl9FTmFtZXNwYWNlcygpLAotICAgICAgdGhpcy5nZXROYW1lc3BhY2UoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZU5hbWVzcGFjZXMiLCBudWxsLCAwLCAtMSwgRGVmaW5pdGlvbi5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCBJU19DT01QT1NJVEUsICFJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihkZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldERPTURvY3VtZW50KCksICJnZXREb2N1bWVudCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oZGVmaW5pdGlvbkVDbGFzcywgbnVsbCwgInNldERvY3VtZW50Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldERPTURvY3VtZW50KCksICJkb2N1bWVudCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGltcG9ydEVDbGFzcywgSW1wb3J0LmNsYXNzLCAiSW1wb3J0IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRJbXBvcnRfTmFtZXNwYWNlVVJJKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgIm5hbWVzcGFjZVVSSSIsIG51bGwsIDAsIDEsIEltcG9ydC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0SW1wb3J0X0xvY2F0aW9uVVJJKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgImxvY2F0aW9uVVJJIiwgbnVsbCwgMCwgMSwgSW1wb3J0LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVSZWZlcmVuY2UoCi0gICAgICBnZXRJbXBvcnRfRURlZmluaXRpb24oKSwKLSAgICAgIHRoaXMuZ2V0RGVmaW5pdGlvbigpLAotICAgICAgbnVsbCwKLSAgICAgICJlRGVmaW5pdGlvbiIsIG51bGwsIDAsIDEsIEltcG9ydC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0SW1wb3J0X0VTY2hlbWEoKSwKLSAgICAgIHRoZVhTRFBhY2thZ2UuZ2V0WFNEU2NoZW1hKCksCi0gICAgICBudWxsLAotICAgICAgImVTY2hlbWEiLCBudWxsLCAwLCAxLCBJbXBvcnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaW1wb3J0RUNsYXNzLCB0aGVYU0RQYWNrYWdlLmdldFhTRFNjaGVtYSgpLCAiZ2V0U2NoZW1hIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpbXBvcnRFQ2xhc3MsIG51bGwsICJzZXRTY2hlbWEiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoZVhTRFBhY2thZ2UuZ2V0WFNEU2NoZW1hKCksICJzY2hlbWEiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGV4dGVuc2libGVFbGVtZW50RUNsYXNzLAotICAgICAgRXh0ZW5zaWJsZUVsZW1lbnQuY2xhc3MsCi0gICAgICAiRXh0ZW5zaWJsZUVsZW1lbnQiLCBJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0RXh0ZW5zaWJsZUVsZW1lbnRfRUV4dGVuc2liaWxpdHlFbGVtZW50cygpLAotICAgICAgdGhpcy5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudCgpLAotICAgICAgbnVsbCwKLSAgICAgICJlRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIiwgbnVsbCwgMCwgLTEsIEV4dGVuc2libGVFbGVtZW50LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsIElTX0NPTVBPU0lURSwgIUlTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGlucHV0RUNsYXNzLCBJbnB1dC5jbGFzcywgIklucHV0IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKG91dHB1dEVDbGFzcywgT3V0cHV0LmNsYXNzLCAiT3V0cHV0IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGZhdWx0RUNsYXNzLCBGYXVsdC5jbGFzcywgIkZhdWx0IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGJpbmRpbmdJbnB1dEVDbGFzcywgQmluZGluZ0lucHV0LmNsYXNzLCAiQmluZGluZ0lucHV0IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRCaW5kaW5nSW5wdXRfTmFtZSgpLAotICAgICAgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwKLSAgICAgICJuYW1lIiwgbnVsbCwgMCwgMSwgQmluZGluZ0lucHV0LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVSZWZlcmVuY2UoCi0gICAgICBnZXRCaW5kaW5nSW5wdXRfRUlucHV0KCksCi0gICAgICB0aGlzLmdldElucHV0KCksCi0gICAgICBudWxsLAotICAgICAgImVJbnB1dCIsIG51bGwsIDEsIDEsIEJpbmRpbmdJbnB1dC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihiaW5kaW5nSW5wdXRFQ2xhc3MsIHRoaXMuZ2V0SUlucHV0KCksICJnZXRJbnB1dCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oYmluZGluZ0lucHV0RUNsYXNzLCBudWxsLCAic2V0SW5wdXQiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SUlucHV0KCksICJpbnB1dCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGJpbmRpbmdPdXRwdXRFQ2xhc3MsIEJpbmRpbmdPdXRwdXQuY2xhc3MsICJCaW5kaW5nT3V0cHV0IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRCaW5kaW5nT3V0cHV0X05hbWUoKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAibmFtZSIsIG51bGwsIDAsIDEsIEJpbmRpbmdPdXRwdXQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldEJpbmRpbmdPdXRwdXRfRU91dHB1dCgpLAotICAgICAgdGhpcy5nZXRPdXRwdXQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZU91dHB1dCIsIG51bGwsIDEsIDEsIEJpbmRpbmdPdXRwdXQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oYmluZGluZ091dHB1dEVDbGFzcywgdGhpcy5nZXRJT3V0cHV0KCksICJnZXRPdXRwdXQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGJpbmRpbmdPdXRwdXRFQ2xhc3MsIG51bGwsICJzZXRPdXRwdXQiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SU91dHB1dCgpLCAib3V0cHV0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoYmluZGluZ0ZhdWx0RUNsYXNzLCBCaW5kaW5nRmF1bHQuY2xhc3MsICJCaW5kaW5nRmF1bHQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldEJpbmRpbmdGYXVsdF9OYW1lKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgIm5hbWUiLCBudWxsLCAwLCAxLCBCaW5kaW5nRmF1bHQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldEJpbmRpbmdGYXVsdF9FRmF1bHQoKSwKLSAgICAgIHRoaXMuZ2V0RmF1bHQoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZUZhdWx0IiwgbnVsbCwgMSwgMSwgQmluZGluZ0ZhdWx0LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGJpbmRpbmdGYXVsdEVDbGFzcywgdGhpcy5nZXRJRmF1bHQoKSwgImdldEZhdWx0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihiaW5kaW5nRmF1bHRFQ2xhc3MsIG51bGwsICJzZXRGYXVsdCIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRJRmF1bHQoKSwgImZhdWx0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MobmFtZXNwYWNlRUNsYXNzLCBOYW1lc3BhY2UuY2xhc3MsICJOYW1lc3BhY2UiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RUF0dHJpYnV0ZSgKLSAgICAgIGdldE5hbWVzcGFjZV9VUkkoKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAiVVJJIiwgbnVsbCwgMCwgMSwgTmFtZXNwYWNlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXROYW1lc3BhY2VfUHJlZml4KCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgInByZWZpeCIsIG51bGwsIDAsIDEsIE5hbWVzcGFjZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhpUG9ydFR5cGVFQ2xhc3MsIGphdmF4LndzZGwuUG9ydFR5cGUuY2xhc3MsICJJUG9ydFR5cGUiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlQb3J0VHlwZUVDbGFzcywgbnVsbCwgImFkZE9wZXJhdGlvbiIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRJT3BlcmF0aW9uKCksICJvcGVyYXRpb24iLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlQb3J0VHlwZUVDbGFzcywgdGhpcy5nZXRJT3BlcmF0aW9uKCksICJnZXRPcGVyYXRpb24iLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksICJuYW1lIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLCAiaW5wdXROYW1lIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLCAib3V0cHV0TmFtZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlQb3J0VHlwZUVDbGFzcywgdGhpcy5nZXRJTGlzdCgpLCAiZ2V0T3BlcmF0aW9ucyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGlPcGVyYXRpb25FQ2xhc3MsIGphdmF4LndzZGwuT3BlcmF0aW9uLmNsYXNzLCAiSU9wZXJhdGlvbiIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oaU9wZXJhdGlvbkVDbGFzcywgbnVsbCwgImFkZEZhdWx0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElGYXVsdCgpLCAiZmF1bHQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlPcGVyYXRpb25FQ2xhc3MsIHRoaXMuZ2V0SUZhdWx0KCksICJnZXRGYXVsdCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgIm5hbWUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpT3BlcmF0aW9uRUNsYXNzLCB0aGlzLmdldElNYXAoKSwgImdldEZhdWx0cyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlPcGVyYXRpb25FQ2xhc3MsIHRoaXMuZ2V0SUxpc3QoKSwgImdldFBhcmFtZXRlck9yZGVyaW5nIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpT3BlcmF0aW9uRUNsYXNzLCBudWxsLCAic2V0UGFyYW1ldGVyT3JkZXJpbmciKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SUxpc3QoKSwgInBhcmFtZXRlck9yZGVyIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaU9wZXJhdGlvbkVDbGFzcywgdGhpcy5nZXRJSW5wdXQoKSwgImdldElucHV0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpT3BlcmF0aW9uRUNsYXNzLCBudWxsLCAic2V0SW5wdXQiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SUlucHV0KCksICJpbnB1dCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlPcGVyYXRpb25FQ2xhc3MsIHRoaXMuZ2V0SU91dHB1dCgpLCAiZ2V0T3V0cHV0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpT3BlcmF0aW9uRUNsYXNzLCBudWxsLCAic2V0T3V0cHV0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElPdXRwdXQoKSwgIm91dHB1dCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGlJbnB1dEVDbGFzcywgamF2YXgud3NkbC5JbnB1dC5jbGFzcywgIklJbnB1dCIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlJbnB1dEVDbGFzcywgdGhpcy5nZXRJTWVzc2FnZSgpLCAiZ2V0TWVzc2FnZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oaUlucHV0RUNsYXNzLCBudWxsLCAic2V0TWVzc2FnZSIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRJTWVzc2FnZSgpLCAibWVzc2FnZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGlPdXRwdXRFQ2xhc3MsIGphdmF4LndzZGwuT3V0cHV0LmNsYXNzLCAiSU91dHB1dCIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlPdXRwdXRFQ2xhc3MsIHRoaXMuZ2V0SU1lc3NhZ2UoKSwgImdldE1lc3NhZ2UiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlPdXRwdXRFQ2xhc3MsIG51bGwsICJzZXRNZXNzYWdlIik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElNZXNzYWdlKCksICJtZXNzYWdlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoaUZhdWx0RUNsYXNzLCBqYXZheC53c2RsLkZhdWx0LmNsYXNzLCAiSUZhdWx0IiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaUZhdWx0RUNsYXNzLCB0aGlzLmdldElNZXNzYWdlKCksICJnZXRNZXNzYWdlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpRmF1bHRFQ2xhc3MsIG51bGwsICJzZXRNZXNzYWdlIik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElNZXNzYWdlKCksICJtZXNzYWdlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoaU1lc3NhZ2VFQ2xhc3MsIGphdmF4LndzZGwuTWVzc2FnZS5jbGFzcywgIklNZXNzYWdlIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpTWVzc2FnZUVDbGFzcywgbnVsbCwgImFkZFBhcnQiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SVBhcnQoKSwgInBhcnQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlNZXNzYWdlRUNsYXNzLCB0aGlzLmdldElQYXJ0KCksICJnZXRQYXJ0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLCAibmFtZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlNZXNzYWdlRUNsYXNzLCB0aGlzLmdldElNYXAoKSwgImdldFBhcnRzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpTWVzc2FnZUVDbGFzcywgdGhpcy5nZXRJTGlzdCgpLCAiZ2V0T3JkZXJlZFBhcnRzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElMaXN0KCksICJwYXJ0T3JkZXIiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhpUGFydEVDbGFzcywgamF2YXgud3NkbC5QYXJ0LmNsYXNzLCAiSVBhcnQiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhpU2VydmljZUVDbGFzcywgamF2YXgud3NkbC5TZXJ2aWNlLmNsYXNzLCAiSVNlcnZpY2UiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlTZXJ2aWNlRUNsYXNzLCBudWxsLCAiYWRkUG9ydCIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRJUG9ydCgpLCAicG9ydCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlTZXJ2aWNlRUNsYXNzLCB0aGlzLmdldElNYXAoKSwgImdldFBvcnRzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpU2VydmljZUVDbGFzcywgdGhpcy5nZXRJUG9ydCgpLCAiZ2V0UG9ydCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgIm5hbWUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhpUG9ydEVDbGFzcywgamF2YXgud3NkbC5Qb3J0LmNsYXNzLCAiSVBvcnQiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpUG9ydEVDbGFzcywgdGhpcy5nZXRJQmluZGluZygpLCAiZ2V0QmluZGluZyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oaVBvcnRFQ2xhc3MsIG51bGwsICJzZXRCaW5kaW5nIik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElCaW5kaW5nKCksICJiaW5kaW5nIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoaUJpbmRpbmdFQ2xhc3MsIGphdmF4LndzZGwuQmluZGluZy5jbGFzcywgIklCaW5kaW5nIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpQmluZGluZ0VDbGFzcywgbnVsbCwgImFkZEJpbmRpbmdPcGVyYXRpb24iKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SUJpbmRpbmdPcGVyYXRpb24oKSwgImJpbmRpbmdPcGVyYXRpb24iLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlCaW5kaW5nRUNsYXNzLCB0aGlzLmdldElCaW5kaW5nT3BlcmF0aW9uKCksICJnZXRCaW5kaW5nT3BlcmF0aW9uIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLCAibmFtZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgImlucHV0TmFtZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgIm91dHB1dE5hbWUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpQmluZGluZ0VDbGFzcywgdGhpcy5nZXRJTGlzdCgpLCAiZ2V0QmluZGluZ09wZXJhdGlvbnMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpQmluZGluZ0VDbGFzcywgdGhpcy5nZXRJUG9ydFR5cGUoKSwgImdldFBvcnRUeXBlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpQmluZGluZ0VDbGFzcywgbnVsbCwgInNldFBvcnRUeXBlIik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElQb3J0VHlwZSgpLCAicG9ydFR5cGUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGlCaW5kaW5nT3BlcmF0aW9uRUNsYXNzLAotICAgICAgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uLmNsYXNzLAotICAgICAgIklCaW5kaW5nT3BlcmF0aW9uIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpQmluZGluZ09wZXJhdGlvbkVDbGFzcywgbnVsbCwgImFkZEJpbmRpbmdGYXVsdCIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRJQmluZGluZ0ZhdWx0KCksICJiaW5kaW5nRmF1bHQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlCaW5kaW5nT3BlcmF0aW9uRUNsYXNzLCB0aGlzLmdldElCaW5kaW5nRmF1bHQoKSwgImdldEJpbmRpbmdGYXVsdCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgIm5hbWUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpQmluZGluZ09wZXJhdGlvbkVDbGFzcywgdGhpcy5nZXRJTWFwKCksICJnZXRCaW5kaW5nRmF1bHRzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaUJpbmRpbmdPcGVyYXRpb25FQ2xhc3MsIHRoaXMuZ2V0SU9wZXJhdGlvbigpLCAiZ2V0T3BlcmF0aW9uIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpQmluZGluZ09wZXJhdGlvbkVDbGFzcywgbnVsbCwgInNldE9wZXJhdGlvbiIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRJT3BlcmF0aW9uKCksICJvcGVyYXRpb24iLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpQmluZGluZ09wZXJhdGlvbkVDbGFzcywgdGhpcy5nZXRJQmluZGluZ0lucHV0KCksICJnZXRCaW5kaW5nSW5wdXQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlCaW5kaW5nT3BlcmF0aW9uRUNsYXNzLCBudWxsLCAic2V0QmluZGluZ0lucHV0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElCaW5kaW5nSW5wdXQoKSwgImJpbmRpbmdJbnB1dCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlCaW5kaW5nT3BlcmF0aW9uRUNsYXNzLCB0aGlzLmdldElCaW5kaW5nT3V0cHV0KCksICJnZXRCaW5kaW5nT3V0cHV0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpQmluZGluZ09wZXJhdGlvbkVDbGFzcywgbnVsbCwgInNldEJpbmRpbmdPdXRwdXQiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SUJpbmRpbmdPdXRwdXQoKSwgImJpbmRpbmdPdXRwdXQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhpQmluZGluZ0lucHV0RUNsYXNzLCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dC5jbGFzcywgIklCaW5kaW5nSW5wdXQiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcygKLSAgICAgIGlCaW5kaW5nT3V0cHV0RUNsYXNzLAotICAgICAgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0LmNsYXNzLAotICAgICAgIklCaW5kaW5nT3V0cHV0IiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoaUJpbmRpbmdGYXVsdEVDbGFzcywgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQuY2xhc3MsICJJQmluZGluZ0ZhdWx0IiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoCi0gICAgICBpRXh0ZW5zaWJpbGl0eUVsZW1lbnRFQ2xhc3MsCi0gICAgICBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQuY2xhc3MsCi0gICAgICAiSUV4dGVuc2liaWxpdHlFbGVtZW50IiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoaURlZmluaXRpb25FQ2xhc3MsIGphdmF4LndzZGwuRGVmaW5pdGlvbi5jbGFzcywgIklEZWZpbml0aW9uIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgbnVsbCwgImFkZEJpbmRpbmciKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SUJpbmRpbmcoKSwgImJpbmRpbmciLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCBudWxsLCAiYWRkSW1wb3J0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElJbXBvcnQoKSwgImltcG9ydERlZiIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIG51bGwsICJhZGRNZXNzYWdlIik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElNZXNzYWdlKCksICJtZXNzYWdlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgbnVsbCwgImFkZE5hbWVzcGFjZSIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgInByZWZpeCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgIm5hbWVzcGFjZVVSSSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIG51bGwsICJhZGRQb3J0VHlwZSIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRJUG9ydFR5cGUoKSwgInBvcnRUeXBlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgbnVsbCwgImFkZFNlcnZpY2UiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SVNlcnZpY2UoKSwgInNlcnZpY2UiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJQmluZGluZ0ZhdWx0KCksICJjcmVhdGVCaW5kaW5nRmF1bHQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJQmluZGluZ0lucHV0KCksICJjcmVhdGVCaW5kaW5nSW5wdXQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJQmluZGluZ091dHB1dCgpLCAiY3JlYXRlQmluZGluZ091dHB1dCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElCaW5kaW5nT3BlcmF0aW9uKCksICJjcmVhdGVCaW5kaW5nT3BlcmF0aW9uIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SUJpbmRpbmcoKSwgImNyZWF0ZUJpbmRpbmciLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJRmF1bHQoKSwgImNyZWF0ZUZhdWx0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SUltcG9ydCgpLCAiY3JlYXRlSW1wb3J0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SUlucHV0KCksICJjcmVhdGVJbnB1dCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElNZXNzYWdlKCksICJjcmVhdGVNZXNzYWdlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SU9wZXJhdGlvbigpLCAiY3JlYXRlT3BlcmF0aW9uIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SU91dHB1dCgpLCAiY3JlYXRlT3V0cHV0IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SVBhcnQoKSwgImNyZWF0ZVBhcnQiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJUG9ydCgpLCAiY3JlYXRlUG9ydCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElQb3J0VHlwZSgpLCAiY3JlYXRlUG9ydFR5cGUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJU2VydmljZSgpLCAiY3JlYXRlU2VydmljZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SUJpbmRpbmcoKSwgImdldEJpbmRpbmciLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0UU5hbWUoKSwgIm5hbWUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJTWFwKCksICJnZXRCaW5kaW5ncyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElNYXAoKSwgImdldEltcG9ydHMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElMaXN0KCksICJnZXRJbXBvcnRzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLCAibmFtZXNwYWNlVVJJIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJTWVzc2FnZSgpLCAiZ2V0TWVzc2FnZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRRTmFtZSgpLCAibmFtZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElNYXAoKSwgImdldE1lc3NhZ2VzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgImdldE5hbWVzcGFjZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgZWNvcmVQYWNrYWdlLmdldEVTdHJpbmcoKSwgInByZWZpeCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElNYXAoKSwgImdldE5hbWVzcGFjZXMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElQb3J0VHlwZSgpLCAiZ2V0UG9ydFR5cGUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0UU5hbWUoKSwgIm5hbWUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJTWFwKCksICJnZXRQb3J0VHlwZXMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLCAiZ2V0UHJlZml4IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLCAibmFtZXNwYWNlVVJJIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJU2VydmljZSgpLCAiZ2V0U2VydmljZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRRTmFtZSgpLCAibmFtZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElNYXAoKSwgImdldFNlcnZpY2VzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SUV4dGVuc2lvblJlZ2lzdHJ5KCksICJnZXRFeHRlbnNpb25SZWdpc3RyeSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIG51bGwsICJzZXRFeHRlbnNpb25SZWdpc3RyeSIpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRJRXh0ZW5zaW9uUmVnaXN0cnkoKSwgImV4dGVuc2lvblJlZ2lzdHJ5IiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksICJnZXREb2N1bWVudEJhc2VVUkkiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCBudWxsLCAic2V0RG9jdW1lbnRCYXNlVVJJIik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLCAiZG9jdW1lbnRCYXNlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SVR5cGVzKCksICJjcmVhdGVUeXBlcyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBvcCA9IGFkZEVPcGVyYXRpb24oaURlZmluaXRpb25FQ2xhc3MsIHRoaXMuZ2V0SVNlcnZpY2UoKSwgInJlbW92ZVNlcnZpY2UiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0UU5hbWUoKSwgIm5hbWUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElCaW5kaW5nKCksICJyZW1vdmVCaW5kaW5nIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldFFOYW1lKCksICJuYW1lIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJUG9ydFR5cGUoKSwgInJlbW92ZVBvcnRUeXBlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldFFOYW1lKCksICJuYW1lIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpRGVmaW5pdGlvbkVDbGFzcywgdGhpcy5nZXRJTWVzc2FnZSgpLCAicmVtb3ZlTWVzc2FnZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0gICAgYWRkRVBhcmFtZXRlcihvcCwgdGhpcy5nZXRRTmFtZSgpLCAibmFtZSIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCB0aGlzLmdldElUeXBlcygpLCAiZ2V0VHlwZXMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlEZWZpbml0aW9uRUNsYXNzLCBudWxsLCAic2V0VHlwZXMiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0SVR5cGVzKCksICJ0eXBlcyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGlJbXBvcnRFQ2xhc3MsIGphdmF4LndzZGwuSW1wb3J0LmNsYXNzLCAiSUltcG9ydCIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGlMaXN0RUNsYXNzLCBMaXN0LmNsYXNzLCAiSUxpc3QiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhpTWFwRUNsYXNzLCBNYXAuY2xhc3MsICJJTWFwIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoaXVybEVDbGFzcywgVVJMLmNsYXNzLCAiSVVSTCIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKAotICAgICAgaUV4dGVuc2lvblJlZ2lzdHJ5RUNsYXNzLAotICAgICAgRXh0ZW5zaW9uUmVnaXN0cnkuY2xhc3MsCi0gICAgICAiSUV4dGVuc2lvblJlZ2lzdHJ5IiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3ModHlwZXNFQ2xhc3MsIFR5cGVzLmNsYXNzLCAiVHlwZXMiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24odHlwZXNFQ2xhc3MsIHRoaXMuZ2V0SUxpc3QoKSwgImdldFNjaGVtYXMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKHR5cGVzRUNsYXNzLCB0aGlzLmdldElMaXN0KCksICJnZXRTY2hlbWFzIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLCAibmFtZXNwYWNlVVJJIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoaUl0ZXJhdG9yRUNsYXNzLCBJdGVyYXRvci5jbGFzcywgIklJdGVyYXRvciIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGlUeXBlc0VDbGFzcywgamF2YXgud3NkbC5UeXBlcy5jbGFzcywgIklUeXBlcyIsIElTX0FCU1RSQUNULCBJU19JTlRFUkZBQ0UsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKAotICAgICAgdW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50RUNsYXNzLAotICAgICAgVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50LmNsYXNzLAotICAgICAgIlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFUmVmZXJlbmNlKAotICAgICAgZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50X0NoaWxkcmVuKCksCi0gICAgICB0aGlzLmdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpLAotICAgICAgbnVsbCwKLSAgICAgICJjaGlsZHJlbiIsIG51bGwsIDAsIC0xLCBVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MoCi0gICAgICB4c2RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEVDbGFzcywKLSAgICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50LmNsYXNzLAotICAgICAgIlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVBdHRyaWJ1dGUoCi0gICAgICBnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudF9Eb2N1bWVudEJhc2VVUkkoKSwKLSAgICAgIGVjb3JlUGFja2FnZS5nZXRFU3RyaW5nKCksCi0gICAgICAiZG9jdW1lbnRCYXNlVVJJIiwgbnVsbCwgMCwgMSwgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RVJlZmVyZW5jZSgKLSAgICAgIGdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50X1NjaGVtYSgpLAotICAgICAgdGhlWFNEUGFja2FnZS5nZXRYU0RTY2hlbWEoKSwKLSAgICAgIG51bGwsCi0gICAgICAic2NoZW1hIiwgbnVsbCwgMCwgMSwgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgSVNfQ09NUE9TSVRFLCAhSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGluaXRFQ2xhc3MobWVzc2FnZVJlZmVyZW5jZUVDbGFzcywgTWVzc2FnZVJlZmVyZW5jZS5jbGFzcywgIk1lc3NhZ2VSZWZlcmVuY2UiLCBJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFQXR0cmlidXRlKAotICAgICAgZ2V0TWVzc2FnZVJlZmVyZW5jZV9OYW1lKCksCi0gICAgICBlY29yZVBhY2thZ2UuZ2V0RVN0cmluZygpLAotICAgICAgIm5hbWUiLCBudWxsLCAwLCAxLCBNZXNzYWdlUmVmZXJlbmNlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVSZWZlcmVuY2UoCi0gICAgICBnZXRNZXNzYWdlUmVmZXJlbmNlX0VNZXNzYWdlKCksCi0gICAgICB0aGlzLmdldE1lc3NhZ2UoKSwKLSAgICAgIG51bGwsCi0gICAgICAiZU1lc3NhZ2UiLCBudWxsLCAxLCAxLCBNZXNzYWdlUmVmZXJlbmNlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKAotICAgICAgaUVsZW1lbnRFeHRlbnNpYmxlRUNsYXNzLAotICAgICAgRWxlbWVudEV4dGVuc2libGUuY2xhc3MsCi0gICAgICAiSUVsZW1lbnRFeHRlbnNpYmxlIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaUVsZW1lbnRFeHRlbnNpYmxlRUNsYXNzLCB0aGlzLmdldElMaXN0KCksICJnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlFbGVtZW50RXh0ZW5zaWJsZUVDbGFzcywgbnVsbCwgImFkZEV4dGVuc2liaWxpdHlFbGVtZW50Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElFeHRlbnNpYmlsaXR5RWxlbWVudCgpLCAiZXh0RWxlbWVudCIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKAotICAgICAgaUF0dHJpYnV0ZUV4dGVuc2libGVFQ2xhc3MsCi0gICAgICBBdHRyaWJ1dGVFeHRlbnNpYmxlLmNsYXNzLAotICAgICAgIklBdHRyaWJ1dGVFeHRlbnNpYmxlIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIG9wID0gYWRkRU9wZXJhdGlvbihpQXR0cmlidXRlRXh0ZW5zaWJsZUVDbGFzcywgdGhpcy5nZXRJT2JqZWN0KCksICJnZXRFeHRlbnNpb25BdHRyaWJ1dGUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotICAgIGFkZEVQYXJhbWV0ZXIob3AsIHRoaXMuZ2V0UU5hbWUoKSwgIm5hbWUiLCAwLCAxKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgb3AgPSBhZGRFT3BlcmF0aW9uKGlBdHRyaWJ1dGVFeHRlbnNpYmxlRUNsYXNzLCBudWxsLCAic2V0RXh0ZW5zaW9uQXR0cmlidXRlIik7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldFFOYW1lKCksICJuYW1lIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLSAgICBhZGRFUGFyYW1ldGVyKG9wLCB0aGlzLmdldElPYmplY3QoKSwgInZhbHVlIiwgMCwgMSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIGFkZEVPcGVyYXRpb24oaUF0dHJpYnV0ZUV4dGVuc2libGVFQ2xhc3MsIHRoaXMuZ2V0SU1hcCgpLCAiZ2V0RXh0ZW5zaW9uQXR0cmlidXRlcyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBhZGRFT3BlcmF0aW9uKGlBdHRyaWJ1dGVFeHRlbnNpYmxlRUNsYXNzLCB0aGlzLmdldElMaXN0KCksICJnZXROYXRpdmVBdHRyaWJ1dGVOYW1lcyIsIDAsIDEpOyAvLyROT04tTkxTLTEkCi0KLSAgICBpbml0RUNsYXNzKGlPYmplY3RFQ2xhc3MsIE9iamVjdC5jbGFzcywgIklPYmplY3QiLCBJU19BQlNUUkFDVCwgSVNfSU5URVJGQUNFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgaW5pdEVDbGFzcyhpU2NoZW1hRUNsYXNzLCBTY2hlbWEuY2xhc3MsICJJU2NoZW1hIiwgSVNfQUJTVFJBQ1QsIElTX0lOVEVSRkFDRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIC8vIEluaXRpYWxpemUgZGF0YSB0eXBlcwotICAgIGluaXRFRGF0YVR5cGUocU5hbWVFRGF0YVR5cGUsIFFOYW1lLmNsYXNzLCAiUU5hbWUiLCBJU19TRVJJQUxJWkFCTEUsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVEYXRhVHlwZShvcGVyYXRpb25UeXBlRURhdGFUeXBlLCBPcGVyYXRpb25UeXBlLmNsYXNzLCAiT3BlcmF0aW9uVHlwZSIsIElTX1NFUklBTElaQUJMRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLSAgICBpbml0RURhdGFUeXBlKGRvbUVsZW1lbnRFRGF0YVR5cGUsIEVsZW1lbnQuY2xhc3MsICJET01FbGVtZW50IiwgSVNfU0VSSUFMSVpBQkxFLCAhSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAotICAgIGluaXRFRGF0YVR5cGUod3NkbEV4Y2VwdGlvbkVEYXRhVHlwZSwgV1NETEV4Y2VwdGlvbi5jbGFzcywgIldTRExFeGNlcHRpb24iLCBJU19TRVJJQUxJWkFCTEUsICFJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkCi0gICAgaW5pdEVEYXRhVHlwZShkb21Eb2N1bWVudEVEYXRhVHlwZSwgRG9jdW1lbnQuY2xhc3MsICJET01Eb2N1bWVudCIsIElTX1NFUklBTElaQUJMRSwgIUlTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQotICAgIC8vIENyZWF0ZSByZXNvdXJjZQotICAgIGNyZWF0ZVJlc291cmNlKGVOU19VUkkpOwotICB9Ci0KLX0gLy9XU0RMUGFja2FnZUltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZjMWQxZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1ODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYUltcG9ydDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYVJlZmVyZW5jZTsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbkNoYWluOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWE7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLmltcGwuWFNEU2NoZW1hSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5YU0RDb25zdGFudHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiA8cD4KLSAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsI2dldERvY3VtZW50QmFzZVVSSSA8ZW0+RG9jdW1lbnQgQmFzZSBVUkk8L2VtPn08L2xpPgotICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsI2dldFNjaGVtYSA8ZW0+U2NoZW1hPC9lbT59PC9saT4KLSAqIDwvdWw+Ci0gKiA8L3A+Ci0gKgotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGV4dGVuZHMgRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsIGltcGxlbWVudHMgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLXsKLSAgLyoqCi0gICAqIFRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHNlcmlhbGl6ZWQuCi0gICAqIHNlcmlhbFZlcnNpb25VSUQgaXMgYXNzaWduZWQgd2l0aCAxTCB0byBhdm9pZAotICAgKiBjb21waWxlciB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXREb2N1bWVudEJhc2VVUkkoKSA8ZW0+RG9jdW1lbnQgQmFzZSBVUkk8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBzZWUgI2dldERvY3VtZW50QmFzZVVSSSgpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIERPQ1VNRU5UX0JBU0VfVVJJX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RG9jdW1lbnRCYXNlVVJJKCkgPGVtPkRvY3VtZW50IEJhc2UgVVJJPC9lbT59JyBhdHRyaWJ1dGUuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXREb2N1bWVudEJhc2VVUkkoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGRvY3VtZW50QmFzZVVSSSA9IERPQ1VNRU5UX0JBU0VfVVJJX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRTY2hlbWEoKSA8ZW0+U2NoZW1hPC9lbT59JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAc2VlICNnZXRTY2hlbWEoKQotICAgKiBAZ2VuZXJhdGVkCi0gICAqIEBvcmRlcmVkCi0gICAqLwotICBwcm90ZWN0ZWQgWFNEU2NoZW1hIHNjaGVtYTsKLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKQotICB7Ci0gICAgcmV0dXJuIFdTRExQYWNrYWdlLkxpdGVyYWxzLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldERvY3VtZW50QmFzZVVSSSgpCi0gIHsKLSAgICByZXR1cm4gZG9jdW1lbnRCYXNlVVJJOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXREb2N1bWVudEJhc2VVUkkoU3RyaW5nIG5ld0RvY3VtZW50QmFzZVVSSSkKLSAgewotICAgIFN0cmluZyBvbGREb2N1bWVudEJhc2VVUkkgPSBkb2N1bWVudEJhc2VVUkk7Ci0gICAgZG9jdW1lbnRCYXNlVVJJID0gbmV3RG9jdW1lbnRCYXNlVVJJOwotICAgIGlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkKLSAgICAgIGVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKAotICAgICAgICB0aGlzLAotICAgICAgICBOb3RpZmljYXRpb24uU0VULAotICAgICAgICBXU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRfQkFTRV9VUkksCi0gICAgICAgIG9sZERvY3VtZW50QmFzZVVSSSwKLSAgICAgICAgZG9jdW1lbnRCYXNlVVJJKSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBYU0RTY2hlbWEgZ2V0U2NoZW1hKCkKLSAgewotICAgIHJldHVybiBzY2hlbWE7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBOb3RpZmljYXRpb25DaGFpbiBiYXNpY1NldFNjaGVtYShYU0RTY2hlbWEgbmV3U2NoZW1hLCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKQotICB7Ci0gICAgWFNEU2NoZW1hIG9sZFNjaGVtYSA9IHNjaGVtYTsKLSAgICBzY2hlbWEgPSBuZXdTY2hlbWE7Ci0gICAgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgIHsKLSAgICAgIEVOb3RpZmljYXRpb25JbXBsIG5vdGlmaWNhdGlvbiA9IG5ldyBFTm90aWZpY2F0aW9uSW1wbCgKLSAgICAgICAgdGhpcywKLSAgICAgICAgTm90aWZpY2F0aW9uLlNFVCwKLSAgICAgICAgV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQSwKLSAgICAgICAgb2xkU2NoZW1hLAotICAgICAgICBuZXdTY2hlbWEpOwotICAgICAgaWYgKG1zZ3MgPT0gbnVsbCkKLSAgICAgICAgbXNncyA9IG5vdGlmaWNhdGlvbjsKLSAgICAgIGVsc2UKLSAgICAgICAgbXNncy5hZGQobm90aWZpY2F0aW9uKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1zZ3M7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNjaGVtYShYU0RTY2hlbWEgbmV3U2NoZW1hKQotICB7Ci0gICAgaWYgKG5ld1NjaGVtYSAhPSBzY2hlbWEpCi0gICAgewotICAgICAgTm90aWZpY2F0aW9uQ2hhaW4gbXNncyA9IG51bGw7Ci0gICAgICBpZiAoc2NoZW1hICE9IG51bGwpCi0gICAgICAgIG1zZ3MgPSAoKEludGVybmFsRU9iamVjdClzY2hlbWEpLmVJbnZlcnNlUmVtb3ZlKAotICAgICAgICAgIHRoaXMsCi0gICAgICAgICAgRU9QUE9TSVRFX0ZFQVRVUkVfQkFTRSAtIFdTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUEsCi0gICAgICAgICAgbnVsbCwKLSAgICAgICAgICBtc2dzKTsKLSAgICAgIGlmIChuZXdTY2hlbWEgIT0gbnVsbCkKLSAgICAgICAgbXNncyA9ICgoSW50ZXJuYWxFT2JqZWN0KW5ld1NjaGVtYSkuZUludmVyc2VBZGQoCi0gICAgICAgICAgdGhpcywKLSAgICAgICAgICBFT1BQT1NJVEVfRkVBVFVSRV9CQVNFIC0gV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQSwKLSAgICAgICAgICBudWxsLAotICAgICAgICAgIG1zZ3MpOwotICAgICAgbXNncyA9IGJhc2ljU2V0U2NoZW1hKG5ld1NjaGVtYSwgbXNncyk7Ci0gICAgICBpZiAobXNncyAhPSBudWxsKQotICAgICAgICBtc2dzLmRpc3BhdGNoKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQotICAgICAgZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQSwgbmV3U2NoZW1hLCBuZXdTY2hlbWEpKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEltcG9ydChTY2hlbWFJbXBvcnQgaW1wb3J0U2NoZW1hKQotICB7Ci0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QKLSAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEluY2x1ZGUoU2NoZW1hUmVmZXJlbmNlIGluY2x1ZGVTY2hlbWEpCi0gIHsKLSAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVAotICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkUmVkZWZpbmUoU2NoZW1hUmVmZXJlbmNlIHJlZGVmaW5lU2NoZW1hKQotICB7Ci0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QKLSAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBTY2hlbWFJbXBvcnQgY3JlYXRlSW1wb3J0KCkKLSAgewotICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UCi0gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgU2NoZW1hUmVmZXJlbmNlIGNyZWF0ZUluY2x1ZGUoKQotICB7Ci0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QKLSAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBTY2hlbWFSZWZlcmVuY2UgY3JlYXRlUmVkZWZpbmUoKQotICB7Ci0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QKLSAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEluY2x1ZGVzKCkKLSAgewotICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UCi0gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQgTk9UCi0gICAqLwotICBwdWJsaWMgTGlzdCBnZXRSZWRlZmluZXMoKQotICB7Ci0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QKLSAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyBNYXAgZ2V0SW1wb3J0cygpCi0gIHsKLSAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVAotICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgTm90aWZpY2F0aW9uQ2hhaW4gZUludmVyc2VSZW1vdmUoSW50ZXJuYWxFT2JqZWN0IG90aGVyRW5kLCBpbnQgZmVhdHVyZUlELCBOb3RpZmljYXRpb25DaGFpbiBtc2dzKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fU0NIRU1BOgotICAgICAgcmV0dXJuIGJhc2ljU2V0U2NoZW1hKG51bGwsIG1zZ3MpOwotICAgIH0KLSAgICByZXR1cm4gc3VwZXIuZUludmVyc2VSZW1vdmUob3RoZXJFbmQsIGZlYXR1cmVJRCwgbXNncyk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpCi0gIHsKLSAgICBzd2l0Y2ggKGZlYXR1cmVJRCkKLSAgICB7Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVF9CQVNFX1VSSToKLSAgICAgIHJldHVybiBnZXREb2N1bWVudEJhc2VVUkkoKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQToKLSAgICAgIHJldHVybiBnZXRTY2hlbWEoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRfQkFTRV9VUkk6Ci0gICAgICBzZXREb2N1bWVudEJhc2VVUkkoKFN0cmluZyluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUE6Ci0gICAgICBzZXRTY2hlbWEoKFhTRFNjaGVtYSluZXdWYWx1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKQotICB7Ci0gICAgc3dpdGNoIChmZWF0dXJlSUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRfQkFTRV9VUkk6Ci0gICAgICBzZXREb2N1bWVudEJhc2VVUkkoRE9DVU1FTlRfQkFTRV9VUklfRURFRkFVTFQpOwotICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBXU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fU0NIRU1BOgotICAgICAgc2V0U2NoZW1hKChYU0RTY2hlbWEpbnVsbCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHN1cGVyLmVVbnNldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkKLSAgewotICAgIHN3aXRjaCAoZmVhdHVyZUlEKQotICAgIHsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UX0JBU0VfVVJJOgotICAgICAgcmV0dXJuIERPQ1VNRU5UX0JBU0VfVVJJX0VERUZBVUxUID09IG51bGwgPyBkb2N1bWVudEJhc2VVUkkgIT0gbnVsbCA6ICFET0NVTUVOVF9CQVNFX1VSSV9FREVGQVVMVC5lcXVhbHMoZG9jdW1lbnRCYXNlVVJJKTsKLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQToKLSAgICAgIHJldHVybiBzY2hlbWEgIT0gbnVsbDsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIGlmIChlSXNQcm94eSgpKQotICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKLSAgICByZXN1bHQuYXBwZW5kKCIgKGRvY3VtZW50QmFzZVVSSTogIik7IC8vJE5PTi1OTFMtMSQKLSAgICByZXN1bHQuYXBwZW5kKGRvY3VtZW50QmFzZVVSSSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExFbGVtZW50SW1wbCNyZWNvbmNpbGUob3JnLnczYy5kb20uRWxlbWVudCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHJlY29uY2lsZShFbGVtZW50IGNoYW5nZWRFbGVtZW50KQotICB7Ci0gICAgZWxlbWVudCA9IGNoYW5nZWRFbGVtZW50OyAvLyBUaGlzIGxpbmUgbWF5IG5vdCBuZWVkZWQuICAgIAotICAgIGlmIChzY2hlbWEgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBYU0RTY2hlbWEgbmV3U2NoZW1hID0gWFNEU2NoZW1hSW1wbC5jcmVhdGVTY2hlbWEoY2hhbmdlZEVsZW1lbnQpOwotICAgICAgc2V0U2NoZW1hKG5ld1NjaGVtYSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFhTRFNjaGVtYSBjcmVhdGVTY2hlbWEoRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaWYgKGVsZW1lbnQuZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKCJzY2hlbWEiKSAmJiBYU0RDb25zdGFudHMuaXNTY2hlbWFGb3JTY2hlbWFOYW1lc3BhY2UoZWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgewotICAgICAgWFNEU2NoZW1hIHhzZFNjaGVtYSA9IFhTREZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVhTRFNjaGVtYSgpOwotICAgICAgeHNkU2NoZW1hLnNldEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICByZXR1cm4geHNkU2NoZW1hOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIEVsZW1lbnQgZ2V0RWxlbWVudCgpCi0gIHsKLSAgICBpZiAoZWxlbWVudCAhPSBudWxsKQotICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgZWxzZSBpZiAoZ2V0U2NoZW1hKCkgIT0gbnVsbCkKLSAgICAgIGVsZW1lbnQgPSBnZXRTY2hlbWEoKS5nZXRFbGVtZW50KCk7Ci0KLSAgICByZXR1cm4gZWxlbWVudDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldEVsZW1lbnQoRWxlbWVudCBuZXdFbGVtZW50KQotICB7Ci0gICAgaWYgKG5ld0VsZW1lbnQgPT0gbnVsbCAmJiAhaXNSZWNvbmNpbGluZykKLSAgICB7Ci0gICAgICBlbGVtZW50ID0gbnVsbDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHNldEVsZW1lbnRHZW4obmV3RWxlbWVudCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkIE5PVAotICAgKi8KLSAgcHVibGljIFFOYW1lIGdldEVsZW1lbnRUeXBlKCkKLSAgewotICAgIGlmIChlbGVtZW50VHlwZSA9PSBudWxsKQotICAgICAgZWxlbWVudFR5cGUgPSBuZXcgUU5hbWUoWFNEQ29uc3RhbnRzLlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxLCBYU0RDb25zdGFudHMuU0NIRU1BX0VMRU1FTlRfVEFHKTsKLQotICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZCBOT1QKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVsZW1lbnRUeXBlKFFOYW1lIG5ld0VsZW1lbnRUeXBlKQotICB7Ci0gICAgLy8gU2hvdWxkIG5vdCBkbyBhbnl0aGluZy4KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCkKLSAgewotICAgIHN1cGVyLnJlY29uY2lsZUF0dHJpYnV0ZXMoY2hhbmdlZEVsZW1lbnQpOwotICB9Ci0KLSAgcHVibGljIEVsZW1lbnQgY3JlYXRlRWxlbWVudCgpCi0gIHsKLSAgICBpZiAoc2NoZW1hID09IG51bGwpIC8vIGtiIE5vdGU6IFRoaXMgY2FzZSBpcyBub3Qgc3VwcG9zZWQgdG8gaGFwcGVuLgotICAgIHsKLSAgICAgIC8vIGNzIC4uLiB3aHkgZG8gd2UgZG8gdGhpcyBpZiBpdHMgbm90IHN1cHBvc2VkIHRvIGhhcHBlbj8KLSAgICAgIC8vIElzIHRoZXJlIGEgc2NlbmFyaW8gd2hlcmUgdGhpcyBpcyBhIHVzZWZ1bGwgZmFsbGJhY2s/Ci0gICAgICAvLyBVbmRlciB3aGF0IGNvbmRpdGlvbnMgZG9lcyB0aGlzIGNvZGUgZ2V0IGV4ZWN1dGVkIChpLmUuIHdoeSB3b3VsZCBzY2hlbWEgPT0gbnVsbCk/Ci0gICAgICBzY2hlbWEgPSBYU0RGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVYU0RTY2hlbWEoKTsKLSAgICAgIHNjaGVtYS5zZXRTY2hlbWFGb3JTY2hlbWFRTmFtZVByZWZpeCgieHNkIik7Ci0gICAgICBzY2hlbWEuc2V0VGFyZ2V0TmFtZXNwYWNlKCJodHRwOi8vdGVtcHVyaS5vcmcvIik7Ci0gICAgICBqYXZhLnV0aWwuTWFwIHFOYW1lUHJlZml4VG9OYW1lc3BhY2VNYXAgPSBzY2hlbWEuZ2V0UU5hbWVQcmVmaXhUb05hbWVzcGFjZU1hcCgpOwotICAgICAgcU5hbWVQcmVmaXhUb05hbWVzcGFjZU1hcC5wdXQoIiIsIHNjaGVtYS5nZXRUYXJnZXROYW1lc3BhY2UoKSk7Ci0gICAgICBxTmFtZVByZWZpeFRvTmFtZXNwYWNlTWFwLnB1dChzY2hlbWEuZ2V0U2NoZW1hRm9yU2NoZW1hUU5hbWVQcmVmaXgoKSwgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEQ29uc3RhbnRzLlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxKTsKLSAgICAgIGFkb3B0KHNjaGVtYSk7Ci0gICAgICBzY2hlbWEudXBkYXRlRWxlbWVudCh0cnVlKTsKLSAgICAgIHJldHVybiBzY2hlbWEuZ2V0RWxlbWVudCgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgZWxlbWVudCA9IHNjaGVtYS5nZXRFbGVtZW50KCk7Ci0gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKQotICAgICAgewotICAgICAgICBhZG9wdChzY2hlbWEpOwotICAgICAgICBzY2hlbWEudXBkYXRlRWxlbWVudCh0cnVlKTsKLSAgICAgICAgZWxlbWVudCA9IHNjaGVtYS5nZXRFbGVtZW50KCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgYWRvcHQoWFNEU2NoZW1hIHhzZFNjaGVtYSkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgICBpZiAoZGVmaW5pdGlvbiA9PSBudWxsKQotICAgICAgcmV0dXJuOwotCi0gICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBkZWZpbml0aW9uLmdldERvY3VtZW50KCk7Ci0gICAgaWYgKGRvY3VtZW50ID09IG51bGwpCi0gICAgICBkb2N1bWVudCA9ICgoRGVmaW5pdGlvbkltcGwpZGVmaW5pdGlvbikudXBkYXRlRG9jdW1lbnQoKTsKLQotICAgIGlmICh4c2RTY2hlbWEuZ2V0RG9jdW1lbnQoKSAhPSBudWxsKQotICAgICAgeHNkU2NoZW1hLnNldERvY3VtZW50KG51bGwpOwotCi0gICAgeHNkU2NoZW1hLnNldERvY3VtZW50KGRvY3VtZW50KTsKLSAgfQotCi0gIC8qCi0gICBwcml2YXRlIEVsZW1lbnQgYWRvcHQoRWxlbWVudCBlbGVtZW50KQotICAgewotICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAgaWYgKGRlZmluaXRpb24gPT0gbnVsbCkKLSAgIHJldHVybiBlbGVtZW50OwotCi0gICBEb2N1bWVudCBkb2N1bWVudCA9IGRlZmluaXRpb24uZ2V0RG9jdW1lbnQoKTsKLSAgIGlmIChkb2N1bWVudCA9PSBudWxsKQotICAgZG9jdW1lbnQgPSAoKERlZmluaXRpb25JbXBsKSBkZWZpbml0aW9uKS51cGRhdGVEb2N1bWVudCgpOwotICAgCi0gICByZXR1cm4gKEVsZW1lbnQpZG9jdW1lbnQuaW1wb3J0Tm9kZShlbGVtZW50LHRydWUpOwotICAgfQotICAgKi8KLQotICBwcm90ZWN0ZWQgdm9pZCBjaGFuZ2VBdHRyaWJ1dGUoRUF0dHJpYnV0ZSBlQXR0cmlidXRlKQotICB7Ci0gICAgaWYgKGlzUmVjb25jaWxpbmcpCi0gICAgICByZXR1cm47Ci0KLSAgICAvLyBUT0RPLi4uIHJldmlzdCB0aGlzIGJsb2NrIG9mIGNvZGUKLSAgICAvLwotICAgIGlmIChlQXR0cmlidXRlID09IG51bGwgfHwgZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fU0NIRU1BKQotICAgIHsKLSAgICAgIC8vIFdlIGdvdCBhIG5ldyBzY2hlbWEgc28gcmUtcGFyZW50IGl0LgotICAgICAgLy8gY3MuLi4gYXJlIHdlIHJlYWxseSBkb2luZyB0aGUgcmlnaHQgdGhpbmcgaGVyZT8gIHRoaXMgc2VlbXMgc3RyYW5nZQotICAgICAgaWYgKHNjaGVtYSAhPSBudWxsKQotICAgICAgewotICAgICAgICBpZiAoKHNjaGVtYS5nZXRFbGVtZW50KCkgPT0gbnVsbCAmJiBnZXRFbGVtZW50KCkgPT0gbnVsbCkgfHwgKHNjaGVtYS5nZXRFbGVtZW50KCkgIT0gZ2V0RWxlbWVudCgpKSkKLSAgICAgICAgewotICAgICAgICAgIHNjaGVtYS5zZXREb2N1bWVudChudWxsKTsKLSAgICAgICAgICBzY2hlbWEuc2V0RWxlbWVudChudWxsKTsKLSAgICAgICAgICBhZG9wdChzY2hlbWEpOwotICAgICAgICAgIHNjaGVtYS51cGRhdGVFbGVtZW50KCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoZUF0dHJpYnV0ZSA9PSBXU0RMUGFja2FnZS5MaXRlcmFscy5XU0RMX0VMRU1FTlRfX0VMRU1FTlQpCi0gICAgewotICAgICAgc2V0U2NoZW1hKGNyZWF0ZVNjaGVtYShlbGVtZW50KSk7IC8vIGVsZW1lbnQgaXMgbm90IG51bGwKLSAgICB9Ci0gIH0KLX0gLy9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC93c2RsNGovV1NETEZhY3RvcnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvd3NkbDRqL1dTRExGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODA2YTQ1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC93c2RsNGovV1NETEZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwud3NkbDRqOwotCi0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IGphdmF4LndzZGwuZmFjdG9yeS5XU0RMRmFjdG9yeTsKLWltcG9ydCBqYXZheC53c2RsLnhtbC5XU0RMUmVhZGVyOwotaW1wb3J0IGphdmF4LndzZGwueG1sLldTRExXcml0ZXI7Ci0KLQotcHVibGljIGZpbmFsIGNsYXNzIFdTRExGYWN0b3J5SW1wbCBleHRlbmRzIFdTRExGYWN0b3J5Ci17Ci0KLSAgLy9wdWJsaWMgc3RhdGljIFdTRExGYWN0b3J5IG5ld0luc3RhbmNlKCkgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgLy97Ci0gIC8vICByZXR1cm4gbmV3IFdTRExGYWN0b3J5SW1wbCgpOwotICAvL30KLQotICBwdWJsaWMgV1NETEZhY3RvcnlJbXBsKCkKLSAgewotICB9Ci0KLSAgcHVibGljIERlZmluaXRpb24gbmV3RGVmaW5pdGlvbigpCi0gIHsKLSAgICByZXR1cm4gb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMRmFjdG9yeUltcGwuZUlOU1RBTkNFLmNyZWF0ZURlZmluaXRpb24oKTsKLSAgfQotCi0gIHB1YmxpYyBFeHRlbnNpb25SZWdpc3RyeSBuZXdQb3B1bGF0ZWRFeHRlbnNpb25SZWdpc3RyeSgpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHB1YmxpYyBXU0RMUmVhZGVyIG5ld1dTRExSZWFkZXIoKQotICB7Ci0gICAgV1NETFJlYWRlciByZWFkZXIgPSBuZXcgV1NETFJlYWRlckltcGwoKTsKLSAgICByZWFkZXIuc2V0RmFjdG9yeUltcGxOYW1lKGdldENsYXNzKCkuZ2V0TmFtZSgpKTsKLSAgICByZXR1cm4gcmVhZGVyOwotICB9Ci0KLSAgcHVibGljIFdTRExXcml0ZXIgbmV3V1NETFdyaXRlcigpCi0gIHsKLSAgICByZXR1cm4gbmV3IFdTRExXcml0ZXJJbXBsKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC93c2RsNGovV1NETFJlYWRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC93c2RsNGovV1NETFJlYWRlckltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY5NjNmNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvd3NkbDRqL1dTRExSZWFkZXJJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLndzZGw0ajsKLQotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETExvY2F0b3I7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFJlYWRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlU2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC51dGlsLldTRExSZXNvdXJjZUZhY3RvcnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbDsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOwotCi0KLXB1YmxpYyBmaW5hbCBjbGFzcyBXU0RMUmVhZGVySW1wbCBpbXBsZW1lbnRzIFdTRExSZWFkZXIKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgZmFjdG9yeUltcGxOYW1lOwotCi0gIHByaXZhdGUgRXh0ZW5zaW9uUmVnaXN0cnkgZXh0UmVnOwotCi0gIHB1YmxpYyBFeHRlbnNpb25SZWdpc3RyeSBnZXRFeHRlbnNpb25SZWdpc3RyeSgpCi0gIHsKLSAgICByZXR1cm4gZXh0UmVnOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RXh0ZW5zaW9uUmVnaXN0cnkoRXh0ZW5zaW9uUmVnaXN0cnkgZXh0UmVnKQotICB7Ci0gICAgdGhpcy5leHRSZWcgPSBleHRSZWc7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEZhY3RvcnlJbXBsTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gZmFjdG9yeUltcGxOYW1lOwotICB9Ci0KLSAgcHVibGljIHZvaWQgc2V0RmFjdG9yeUltcGxOYW1lKFN0cmluZyBmYWN0b3J5SW1wbE5hbWUpIHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgotICB7Ci0gICAgdGhpcy5mYWN0b3J5SW1wbE5hbWUgPSBmYWN0b3J5SW1wbE5hbWU7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRGZWF0dXJlKFN0cmluZyBuYW1lKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRGZWF0dXJlKFN0cmluZyBuYW1lLCBib29sZWFuIHZhbHVlKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCi0gIHsKLSAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJOb3QgSW1wbGVtZW50ZWQiKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZWFkIHRoZSBXU0RMIGRvY3VtZW50IGFjY2Vzc2libGUgdmlhIHRoZSBzcGVjaWZpZWQKLSAgICogVVJJIGludG8gYSBXU0RMIGRlZmluaXRpb24uCi0gICAqCi0gICAqIEBwYXJhbSB3c2RsVVJJIGEgVVJJIChjYW4gYmUgYSBmaWxlbmFtZSBvciBVUkwpIHBvaW50aW5nIHRvIGEKLSAgICogV1NETCBYTUwgZGVmaW5pdGlvbi4KLSAgICogQHJldHVybiB0aGUgZGVmaW5pdGlvbi4KLSAgICovCi0gIHB1YmxpYyBEZWZpbml0aW9uIHJlYWRXU0RMKFN0cmluZyB3c2RsVVJJKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgVVJJIHVyaTsKLSAgICBpZiAoaGFzUHJvdG9jb2wod3NkbFVSSSkpCi0gICAgICB1cmkgPSBVUkkuY3JlYXRlVVJJKHdzZGxVUkkpOwotICAgIGVsc2UKLSAgICAgIHVyaSA9IFVSSS5jcmVhdGVGaWxlVVJJKHdzZGxVUkkpOwotCi0gICAgLy8gQ3JlYXRlIGEgcmVzb3VyY2Ugc2V0LCBjcmVhdGUgYSB3c2RsIHJlc291cmNlLCBhbmQgbG9hZCB0aGUgbWFpbiB3c2RsIGZpbGUgaW50byBpdC4KLQotICAgIFJlc291cmNlU2V0IHJlc291cmNlU2V0ID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOwotICAgIHJlc291cmNlU2V0LmdldFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5KCkuZ2V0RXh0ZW5zaW9uVG9GYWN0b3J5TWFwKCkucHV0KCJ3c2RsIiwgbmV3IFdTRExSZXNvdXJjZUZhY3RvcnlJbXBsKCkpOwotCi0gICAgV1NETFJlc291cmNlSW1wbCB3c2RsTWFpblJlc291cmNlID0gKFdTRExSZXNvdXJjZUltcGwpcmVzb3VyY2VTZXQuY3JlYXRlUmVzb3VyY2UoVVJJLmNyZWF0ZVVSSSgiKi53c2RsIikpOwotICAgIHdzZGxNYWluUmVzb3VyY2Uuc2V0VVJJKHVyaSk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICBJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSA9IHJlc291cmNlU2V0LmdldFVSSUNvbnZlcnRlcigpLmNyZWF0ZUlucHV0U3RyZWFtKHVyaSk7Ci0gICAgICB3c2RsTWFpblJlc291cmNlLmxvYWQoaW5wdXRTdHJlYW0sIHJlc291cmNlU2V0LmdldExvYWRPcHRpb25zKCkpOwotICAgICAgLy93c2RsTWFpblJlc291cmNlLmxvYWQocmVzb3VyY2VTZXQuZ2V0TG9hZE9wdGlvbnMoKSk7Ci0gICAgfQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0RMRXhjZXB0aW9uKFdTRExFeGNlcHRpb24uSU5WQUxJRF9XU0RMLCAiV1NETCBVUkk6ICIgKyB3c2RsVVJJLCBlKTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gdGhlIGRlZmluaXRpb25zIG9mIHRoZSBtYWluIHJlc291cmNlLgotICAgIHJldHVybiB3c2RsTWFpblJlc291cmNlLmdldERlZmluaXRpb24oKTsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBoYXNQcm90b2NvbChTdHJpbmcgdXJpKQotICB7Ci0gICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAodXJpICE9IG51bGwpCi0gICAgewotICAgICAgaW50IGluZGV4ID0gdXJpLmluZGV4T2YoIjoiKTsKLSAgICAgIGlmIChpbmRleCAhPSAtMSAmJiBpbmRleCA+IDIpIC8vIGFzc3VtZSBwcm90b2NvbCB3aXRoIGJlIGxlbmd0aCAzIHNvIHRoYXQgdGhlJ0MnIGluICdDOi8nIGlzIG5vdCBpbnRlcnByZXRlZCBhcyBhIHByb3RvY29sCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogUmVhZCB0aGUgV1NETCBkb2N1bWVudCBhY2Nlc3NpYmxlIHZpYSB0aGUgc3BlY2lmaWVkCi0gICAqIFVSSSBpbnRvIGEgV1NETCBkZWZpbml0aW9uLgotICAgKgotICAgKiBAcGFyYW0gY29udGV4dFVSSSB0aGUgY29udGV4dCBpbiB3aGljaCB0byByZXNvbHZlIHRoZQotICAgKiB3c2RsVVJJLCBpZiB0aGUgd3NkbFVSSSBpcyByZWxhdGl2ZS4gQ2FuIGJlIG51bGwsIGluIHdoaWNoCi0gICAqIGNhc2UgaXQgd2lsbCBiZSBpZ25vcmVkLgotICAgKiBAcGFyYW0gd3NkbFVSSSBhIFVSSSAoY2FuIGJlIGEgZmlsZW5hbWUgb3IgVVJMKSBwb2ludGluZyB0byBhCi0gICAqIFdTREwgWE1MIGRlZmluaXRpb24uCi0gICAqIEByZXR1cm4gdGhlIGRlZmluaXRpb24uCi0gICAqLwotICBwdWJsaWMgRGVmaW5pdGlvbiByZWFkV1NETChTdHJpbmcgY29udGV4dFVSSSwgU3RyaW5nIHdzZGxVUkkpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICB0aHJvdyBuZXcgV1NETEV4Y2VwdGlvbihXU0RMRXhjZXB0aW9uLk9USEVSX0VSUk9SLCAiTm90IEltcGxlbWVudGVkIik7Ci0gIH0KLQotICAvKioKLSAgICogUmVhZCB0aGUgc3BlY2lmaWVkICZsdDt3c2RsOmRlZmluaXRpb25zJmd0OyBlbGVtZW50IGludG8gYSBXU0RMCi0gICAqIGRlZmluaXRpb24uCi0gICAqCi0gICAqIEBwYXJhbSBkb2N1bWVudEJhc2VVUkkgdGhlIGRvY3VtZW50IGJhc2UgVVJJIG9mIHRoZSBXU0RMIGRlZmluaXRpb24KLSAgICogZGVzY3JpYmVkIGJ5IHRoZSBlbGVtZW50LiBXaWxsIGJlIHNldCBhcyB0aGUgZG9jdW1lbnRCYXNlVVJJCi0gICAqIG9mIHRoZSByZXR1cm5lZCBEZWZpbml0aW9uLiBDYW4gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBpdAotICAgKiB3aWxsIGJlIGlnbm9yZWQuCi0gICAqIEBwYXJhbSBkZWZpbml0aW9uc0VsZW1lbnQgdGhlICZsdDt3c2RsOmRlZmluaXRpb25zJmd0OyBlbGVtZW50Ci0gICAqIEByZXR1cm4gdGhlIGRlZmluaXRpb24gZGVzY3JpYmVkIGJ5IHRoZSBlbGVtZW50LgotICAgKi8KLSAgcHVibGljIERlZmluaXRpb24gcmVhZFdTREwoU3RyaW5nIGRvY3VtZW50QmFzZVVSSSwgRWxlbWVudCBkZWZpbml0aW9uc0VsZW1lbnQpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICB0aHJvdyBuZXcgV1NETEV4Y2VwdGlvbihXU0RMRXhjZXB0aW9uLk9USEVSX0VSUk9SLCAiTm90IEltcGxlbWVudGVkIik7Ci0gIH0KLQotICAvKioKLSAgICogUmVhZCB0aGUgc3BlY2lmaWVkIFdTREwgZG9jdW1lbnQgaW50byBhIFdTREwgZGVmaW5pdGlvbi4KLSAgICoKLSAgICogQHBhcmFtIGRvY3VtZW50QmFzZVVSSSB0aGUgZG9jdW1lbnQgYmFzZSBVUkkgb2YgdGhlIFdTREwgZGVmaW5pdGlvbgotICAgKiBkZXNjcmliZWQgYnkgdGhlIGRvY3VtZW50LiBXaWxsIGJlIHNldCBhcyB0aGUgZG9jdW1lbnRCYXNlVVJJCi0gICAqIG9mIHRoZSByZXR1cm5lZCBEZWZpbml0aW9uLiBDYW4gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBpdAotICAgKiB3aWxsIGJlIGlnbm9yZWQuCi0gICAqIEBwYXJhbSB3c2RsRG9jdW1lbnQgdGhlIFdTREwgZG9jdW1lbnQsIGFuIFhNTCAKLSAgICogZG9jdW1lbnQgb2JleWluZyB0aGUgV1NETCBzY2hlbWEuCi0gICAqIEByZXR1cm4gdGhlIGRlZmluaXRpb24gZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudC4KLSAgICovCi0gIHB1YmxpYyBEZWZpbml0aW9uIHJlYWRXU0RMKFN0cmluZyBkb2N1bWVudEJhc2VVUkksIERvY3VtZW50IHdzZGxEb2N1bWVudCkgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIHRocm93IG5ldyBXU0RMRXhjZXB0aW9uKFdTRExFeGNlcHRpb24uT1RIRVJfRVJST1IsICJOb3QgSW1wbGVtZW50ZWQiKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZWFkIGEgV1NETCBkb2N1bWVudCBpbnRvIGEgV1NETCBkZWZpbml0aW9uLgotICAgKgotICAgKiBAcGFyYW0gZG9jdW1lbnRCYXNlVVJJIHRoZSBkb2N1bWVudCBiYXNlIFVSSSBvZiB0aGUgV1NETCBkZWZpbml0aW9uCi0gICAqIGRlc2NyaWJlZCBieSB0aGUgZG9jdW1lbnQuIFdpbGwgYmUgc2V0IGFzIHRoZSBkb2N1bWVudEJhc2VVUkkKLSAgICogb2YgdGhlIHJldHVybmVkIERlZmluaXRpb24uIENhbiBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGl0Ci0gICAqIHdpbGwgYmUgaWdub3JlZC4KLSAgICogQHBhcmFtIGlucHV0U291cmNlIGFuIElucHV0U291cmNlIHBvaW50aW5nIHRvIHRoZQotICAgKiBXU0RMIGRvY3VtZW50LCBhbiBYTUwgZG9jdW1lbnQgb2JleWluZyB0aGUgV1NETCBzY2hlbWEuCi0gICAqIEByZXR1cm4gdGhlIGRlZmluaXRpb24gZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudCBwb2ludGVkIHRvCi0gICAqIGJ5IHRoZSBJbnB1dFNvdXJjZS4KLSAgICovCi0gIHB1YmxpYyBEZWZpbml0aW9uIHJlYWRXU0RMKFN0cmluZyBkb2N1bWVudEJhc2VVUkksIElucHV0U291cmNlIGlucHV0U291cmNlKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7Ci0gICAgcmVzb3VyY2VTZXQuZ2V0UmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoKS5nZXRFeHRlbnNpb25Ub0ZhY3RvcnlNYXAoKS5wdXQoIndzZGwiLCBuZXcgV1NETFJlc291cmNlRmFjdG9yeUltcGwoKSk7Ci0gICAgV1NETFJlc291cmNlSW1wbCB3c2RsTWFpblJlc291cmNlID0gKFdTRExSZXNvdXJjZUltcGwpcmVzb3VyY2VTZXQuY3JlYXRlUmVzb3VyY2UoVVJJLmNyZWF0ZVVSSSgiKi53c2RsIikpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgaWYgKGRvY3VtZW50QmFzZVVSSSAhPSBudWxsKQotICAgICAgICB3c2RsTWFpblJlc291cmNlLnNldFVSSShjcmVhdGVVUkkoZG9jdW1lbnRCYXNlVVJJKSk7Ci0gICAgICByZXNvdXJjZVNldC5nZXRMb2FkT3B0aW9ucygpLnB1dChXU0RMUmVzb3VyY2VJbXBsLkNPTlRJTlVFX09OX0xPQURfRVJST1IsIG5ldyBCb29sZWFuKGZhbHNlKSk7Ci0gICAgICB3c2RsTWFpblJlc291cmNlLmxvYWQoaW5wdXRTb3VyY2UuZ2V0Qnl0ZVN0cmVhbSgpLCByZXNvdXJjZVNldC5nZXRMb2FkT3B0aW9ucygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NETEV4Y2VwdGlvbihXU0RMRXhjZXB0aW9uLklOVkFMSURfV1NETCwgIiIsIGlvZSk7Ci0gICAgfQotCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gd3NkbE1haW5SZXNvdXJjZS5nZXREZWZpbml0aW9uKCk7Ci0gICAgaWYgKGRlZmluaXRpb24gIT0gbnVsbCkKLSAgICAgIGRlZmluaXRpb24uc2V0RG9jdW1lbnRCYXNlVVJJKGRvY3VtZW50QmFzZVVSSSk7Ci0KLSAgICByZXR1cm4gZGVmaW5pdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiBSZWFkIGEgV1NETCBkb2N1bWVudCBpbnRvIGEgV1NETCBkZWZpbml0aW9uLgotICAgKgotICAgKiBAcGFyYW0gbG9jYXRvciBBIFdTRExMb2NhdG9yIG9iamVjdCB1c2VkIHRvIHByb3ZpZGUgSW5wdXRTb3VyY2VzCi0gICAqIHBvaW50aW5nIHRvIHRoZSB3c2RsIGZpbGUuCi0gICAqIEByZXR1cm4gdGhlIGRlZmluaXRpb24gZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudAotICAgKi8KLSAgcHVibGljIERlZmluaXRpb24gcmVhZFdTREwoV1NETExvY2F0b3IgbG9jYXRvcikgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIHRocm93IG5ldyBXU0RMRXhjZXB0aW9uKFdTRExFeGNlcHRpb24uT1RIRVJfRVJST1IsICJOb3QgSW1wbGVtZW50ZWQiKTsKLSAgfQotCi0gIHByaXZhdGUgVVJJIGNyZWF0ZVVSSShTdHJpbmcgdXJpU3RyaW5nKQotICB7Ci0gICAgaWYgKGhhc1Byb3RvY29sKHVyaVN0cmluZykpCi0gICAgICByZXR1cm4gVVJJLmNyZWF0ZVVSSSh1cmlTdHJpbmcpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBVUkkuY3JlYXRlRmlsZVVSSSh1cmlTdHJpbmcpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC93c2RsNGovV1NETFdyaXRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvaW1wbC93c2RsNGovV1NETFdyaXRlckltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY2OWY2YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL2ltcGwvd3NkbDRqL1dTRExXcml0ZXJJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLndzZGw0ajsKLQotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLldyaXRlcjsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLldTRExFeGNlcHRpb247Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFdyaXRlcjsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLk91dHB1dEtleXM7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lcjsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5OwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVNvdXJjZTsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5EZWZpbml0aW9uSW1wbDsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLQotCi1wdWJsaWMgZmluYWwgY2xhc3MgV1NETFdyaXRlckltcGwgaW1wbGVtZW50cyBXU0RMV3JpdGVyCi17Ci0gIC8qKgotICAgKiBTZXRzIHRoZSBzcGVjaWZpZWQgZmVhdHVyZSB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLgotICAgKiA8cD4KLSAgICogVGhlcmUgYXJlIG5vIG1pbmltdW0gZmVhdHVyZXMgdGhhdCBtdXN0IGJlIHN1cHBvcnRlZC4KLSAgICogPHA+Ci0gICAqIEFsbCBmZWF0dXJlIG5hbWVzIG11c3QgYmUgZnVsbHktcXVhbGlmaWVkLCBKYXZhIHBhY2thZ2Ugc3R5bGUuIEFsbAotICAgKiBuYW1lcyBzdGFydGluZyB3aXRoIGphdmF4LndzZGwuIGFyZSByZXNlcnZlZCBmb3IgZmVhdHVyZXMgZGVmaW5lZAotICAgKiBieSB0aGUgSldTREwgc3BlY2lmaWNhdGlvbi4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBpbXBsZW1lbnRhdGlvbi0KLSAgICogc3BlY2lmaWMgZmVhdHVyZXMgYmUgZnVsbHktcXVhbGlmaWVkIHRvIG1hdGNoIHRoZSBwYWNrYWdlIG5hbWUKLSAgICogb2YgdGhhdCBpbXBsZW1lbnRhdGlvbi4gRm9yIGV4YW1wbGU6IGNvbS5hYmMuZmVhdHVyZU5hbWUKLSAgICoKLSAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGZlYXR1cmUgdG8gYmUgc2V0LgotICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHNldCB0aGUgZmVhdHVyZSB0by4KLSAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGZlYXR1cmUgbmFtZSBpcyBub3QgcmVjb2duaXplZC4KLSAgICogQHNlZSAjZ2V0RmVhdHVyZShTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGZWF0dXJlKFN0cmluZyBuYW1lLCBib29sZWFuIHZhbHVlKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCi0gIHsKLSAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJOb3QgSW1wbGVtZW50ZWQiKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGZlYXR1cmUuCi0gICAqCi0gICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBmZWF0dXJlIHRvIGdldCB0aGUgdmFsdWUgb2YuCi0gICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBmZWF0dXJlIG5hbWUgaXMgbm90IHJlY29nbml6ZWQuCi0gICAqIEBzZWUgI3NldEZlYXR1cmUoU3RyaW5nLCBib29sZWFuKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0RmVhdHVyZShTdHJpbmcgbmFtZSkgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgotICB7Ci0gICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTm90IEltcGxlbWVudGVkIik7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJuIGEgZG9jdW1lbnQgZ2VuZXJhdGVkIGZyb20gdGhlIHNwZWNpZmllZCBXU0RMIG1vZGVsLgotICAgKi8KLSAgcHVibGljIERvY3VtZW50IGdldERvY3VtZW50KERlZmluaXRpb24gd3NkbERlZikgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIHJldHVybiAoKERlZmluaXRpb25JbXBsKXdzZGxEZWYpLmdldERvY3VtZW50KCk7Ci0gIH0KLQotICAvKioKLSAgICogV3JpdGUgdGhlIHNwZWNpZmllZCBXU0RMIGRlZmluaXRpb24gdG8gdGhlIHNwZWNpZmllZCBXcml0ZXIuCi0gICAqCi0gICAqIEBwYXJhbSB3c2RsRGVmIHRoZSBXU0RMIGRlZmluaXRpb24gdG8gYmUgd3JpdHRlbi4KLSAgICogQHBhcmFtIHNpbmsgdGhlIFdyaXRlciB0byB3cml0ZSB0aGUgeG1sIHRvLgotICAgKi8KLSAgcHVibGljIHZvaWQgd3JpdGVXU0RMKERlZmluaXRpb24gd3NkbERlZiwgV3JpdGVyIHNpbmspIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgZW5jb2RpbmcgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIFRyYW5zZm9ybWVyRmFjdG9yeSB0cmFuc2Zvcm1lckZhY3RvcnkgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLSAgICAgIFRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXJGYWN0b3J5Lm5ld1RyYW5zZm9ybWVyKCk7Ci0KLSAgICAgIHRyYW5zZm9ybWVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuSU5ERU5ULCAieWVzIik7Ci0gICAgICB0cmFuc2Zvcm1lci5zZXRPdXRwdXRQcm9wZXJ0eShPdXRwdXRLZXlzLk1FVEhPRCwgInhtbCIpOwotCi0gICAgICAvLyBVbmxlc3MgYSB3aWR0aCBpcyBzZXQsIHRoZXJlIHdpbGwgYmUgb25seSBsaW5lIGJyZWFrcyBidXQgbm8gaW5kZW50YXRpb24uCi0gICAgICAvLyBUaGUgSUJNIEpESyBhbmQgdGhlIFN1biBKREsgZG9uJ3QgYWdyZWUgb24gdGhlIHByb3BlcnR5IG5hbWUsCi0gICAgICAvLyBzbyB3ZSBzZXQgdGhlbSBib3RoLgotICAgICAgLy8KLSAgICAgIHRyYW5zZm9ybWVyLnNldE91dHB1dFByb3BlcnR5KCJ7aHR0cDovL3htbC5hcGFjaGUub3JnL3hhbGFufWluZGVudC1hbW91bnQiLCAiMiIpOwotICAgICAgdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoIntodHRwOi8veG1sLmFwYWNoZS5vcmcveHNsdH1pbmRlbnQtYW1vdW50IiwgIjIiKTsKLSAgICAgIGlmIChlbmNvZGluZyAhPSBudWxsKQotICAgICAgewotICAgICAgICB0cmFuc2Zvcm1lci5zZXRPdXRwdXRQcm9wZXJ0eShPdXRwdXRLZXlzLkVOQ09ESU5HLCBlbmNvZGluZyk7Ci0gICAgICB9Ci0KLSAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gKChEZWZpbml0aW9uSW1wbCl3c2RsRGVmKS5nZXREb2N1bWVudCgpOwotICAgICAgaWYgKGRvY3VtZW50ID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgICgoRGVmaW5pdGlvbkltcGwpd3NkbERlZikudXBkYXRlRWxlbWVudCh0cnVlKTsKLSAgICAgICAgZG9jdW1lbnQgPSAoKERlZmluaXRpb25JbXBsKXdzZGxEZWYpLmdldERvY3VtZW50KCk7Ci0gICAgICB9Ci0KLSAgICAgIHRyYW5zZm9ybWVyLnRyYW5zZm9ybShuZXcgRE9NU291cmNlKGRvY3VtZW50KSwgbmV3IFN0cmVhbVJlc3VsdChzaW5rKSk7Ci0gICAgfQotICAgIGNhdGNoIChUcmFuc2Zvcm1lckV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTRExFeGNlcHRpb24oV1NETEV4Y2VwdGlvbi5PVEhFUl9FUlJPUiwgIkZhaWxlZCB0byBzYXZlIERlZmluaXRpb25zLiIsIGV4Y2VwdGlvbik7Ci0gICAgfQotCi0gIH0KLQotICAvKioKLSAgICogV3JpdGUgdGhlIHNwZWNpZmllZCBXU0RMIGRlZmluaXRpb24gdG8gdGhlIHNwZWNpZmllZCBPdXRwdXRTdHJlYW0uCi0gICAqCi0gICAqIEBwYXJhbSB3c2RsRGVmIHRoZSBXU0RMIGRlZmluaXRpb24gdG8gYmUgd3JpdHRlbi4KLSAgICogQHBhcmFtIHNpbmsgdGhlIE91dHB1dFN0cmVhbSB0byB3cml0ZSB0aGUgeG1sIHRvLgotICAgKi8KLSAgcHVibGljIHZvaWQgd3JpdGVXU0RMKERlZmluaXRpb24gd3NkbERlZiwgT3V0cHV0U3RyZWFtIHNpbmspIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLQotICAgIFJlc291cmNlIHJlc291cmNlID0gKChEZWZpbml0aW9uSW1wbCl3c2RsRGVmKS5lUmVzb3VyY2UoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICByZXNvdXJjZS5zYXZlKHNpbmssIG51bGwpOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NETEV4Y2VwdGlvbihXU0RMRXhjZXB0aW9uLk9USEVSX0VSUk9SLCAiRmFpbGVkIHRvIHNhdmUgRGVmaW5pdGlvbnMuIiwgZSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL3V0aWwvUmVjb25jaWxhYmxlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL3V0aWwvUmVjb25jaWxhYmxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNzhiNjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1JlY29uY2lsYWJsZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWw7Ci0KLQotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLy8gVE9ETy4uLiB3aHkgZG8gd2UgbmVlZCB0aGlzPwotLy8gCi1wdWJsaWMgaW50ZXJmYWNlIFJlY29uY2lsYWJsZQotewotICBwdWJsaWMgdm9pZCBzZXRFbGVtZW50KEVsZW1lbnQgZWxlbWVudCk7Ci0KLSAgcHVibGljIEVsZW1lbnQgZ2V0RWxlbWVudCgpOwotCi0gIHB1YmxpYyB2b2lkIHJlY29uY2lsZUF0dHJpYnV0ZXMoRWxlbWVudCBjaGFuZ2VkRWxlbWVudCk7Ci0KLSAgcHVibGljIHZvaWQgcmVjb25jaWxlUmVmZXJlbmNlcyhib29sZWFuIGRlZXApOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1dTRExBZGFwdGVyRmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1dTRExBZGFwdGVyRmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2U2NDAxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9XU0RMQWRhcHRlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWw7Ci0KLQotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5BdHRyaWJ1dGVFeHRlbnNpYmxlOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FbGVtZW50RXh0ZW5zaWJsZTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnk7Ci0KLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LmltcGwuQWRhcHRlckZhY3RvcnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLio7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPkFkYXB0ZXIgRmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4KLSAqIEl0IHByb3ZpZGVzIGFuIGFkYXB0ZXIgPGNvZGU+Y3JlYXRlWFhYPC9jb2RlPiBtZXRob2QgZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsLgotICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlCi0gKiBAZ2VuZXJhdGVkCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBBZGFwdGVyRmFjdG9yeUltcGwKLXsKLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgV1NETFBhY2thZ2UgbW9kZWxQYWNrYWdlOwotCi0gIC8qKgotICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBhZGFwdGVyIGZhY3RvcnkuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgV1NETEFkYXB0ZXJGYWN0b3J5KCkKLSAgewotICAgIGlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBtb2RlbFBhY2thZ2UgPSBXU0RMUGFja2FnZS5lSU5TVEFOQ0U7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgd2hldGhlciB0aGlzIGZhY3RvcnkgaXMgYXBwbGljYWJsZSBmb3IgdGhlIHR5cGUgb2YgdGhlIG9iamVjdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBvYmplY3QgaXMgZWl0aGVyIHRoZSBtb2RlbCdzIHBhY2thZ2Ugb3IgaXMgYW4gaW5zdGFuY2Ugb2JqZWN0IG9mIHRoZSBtb2RlbC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gd2hldGhlciB0aGlzIGZhY3RvcnkgaXMgYXBwbGljYWJsZSBmb3IgdGhlIHR5cGUgb2YgdGhlIG9iamVjdC4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3Qgb2JqZWN0KQotICB7Ci0gICAgaWYgKG9iamVjdCA9PSBtb2RlbFBhY2thZ2UpCi0gICAgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBFT2JqZWN0KQotICAgIHsKLSAgICAgIHJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBzd2l0Y2ggdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kcy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBXU0RMU3dpdGNoIG1vZGVsU3dpdGNoID0gbmV3IFdTRExTd2l0Y2goKQotICAgIHsKLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZVdTRExFbGVtZW50KFdTRExFbGVtZW50IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdTRExFbGVtZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VQb3J0VHlwZShQb3J0VHlwZSBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVQb3J0VHlwZUFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlT3BlcmF0aW9uKE9wZXJhdGlvbiBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVPcGVyYXRpb25BZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZU1lc3NhZ2UoTWVzc2FnZSBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVNZXNzYWdlQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VQYXJ0KFBhcnQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlUGFydEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlQmluZGluZyhCaW5kaW5nIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUJpbmRpbmdBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUJpbmRpbmdPcGVyYXRpb24oQmluZGluZ09wZXJhdGlvbiBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVCaW5kaW5nT3BlcmF0aW9uQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VTZXJ2aWNlKFNlcnZpY2Ugb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlU2VydmljZUFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlUG9ydChQb3J0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVBvcnRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KEV4dGVuc2liaWxpdHlFbGVtZW50IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VEZWZpbml0aW9uKERlZmluaXRpb24gb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlRGVmaW5pdGlvbkFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSW1wb3J0KEltcG9ydCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJbXBvcnRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUV4dGVuc2libGVFbGVtZW50KEV4dGVuc2libGVFbGVtZW50IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4dGVuc2libGVFbGVtZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJbnB1dChJbnB1dCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJbnB1dEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlT3V0cHV0KE91dHB1dCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVPdXRwdXRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUZhdWx0KEZhdWx0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUZhdWx0QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VCaW5kaW5nSW5wdXQoQmluZGluZ0lucHV0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUJpbmRpbmdJbnB1dEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlQmluZGluZ091dHB1dChCaW5kaW5nT3V0cHV0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUJpbmRpbmdPdXRwdXRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUJpbmRpbmdGYXVsdChCaW5kaW5nRmF1bHQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlQmluZGluZ0ZhdWx0QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VOYW1lc3BhY2UoTmFtZXNwYWNlIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU5hbWVzcGFjZUFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSVBvcnRUeXBlKGphdmF4LndzZGwuUG9ydFR5cGUgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSVBvcnRUeXBlQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJT3BlcmF0aW9uKGphdmF4LndzZGwuT3BlcmF0aW9uIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlPcGVyYXRpb25BZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlJbnB1dChqYXZheC53c2RsLklucHV0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlJbnB1dEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSU91dHB1dChqYXZheC53c2RsLk91dHB1dCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJT3V0cHV0QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJRmF1bHQoamF2YXgud3NkbC5GYXVsdCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJRmF1bHRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlNZXNzYWdlKGphdmF4LndzZGwuTWVzc2FnZSBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJTWVzc2FnZUFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSVBhcnQoamF2YXgud3NkbC5QYXJ0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlQYXJ0QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJU2VydmljZShqYXZheC53c2RsLlNlcnZpY2Ugb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSVNlcnZpY2VBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlQb3J0KGphdmF4LndzZGwuUG9ydCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJUG9ydEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUJpbmRpbmcoamF2YXgud3NkbC5CaW5kaW5nIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlCaW5kaW5nQWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJQmluZGluZ09wZXJhdGlvbihqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb24gb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSUJpbmRpbmdPcGVyYXRpb25BZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlCaW5kaW5nSW5wdXQoamF2YXgud3NkbC5CaW5kaW5nSW5wdXQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSUJpbmRpbmdJbnB1dEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUJpbmRpbmdPdXRwdXQoamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlCaW5kaW5nT3V0cHV0QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJQmluZGluZ0ZhdWx0KGphdmF4LndzZGwuQmluZGluZ0ZhdWx0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlCaW5kaW5nRmF1bHRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSUV4dGVuc2liaWxpdHlFbGVtZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VJRGVmaW5pdGlvbihqYXZheC53c2RsLkRlZmluaXRpb24gb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSURlZmluaXRpb25BZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlJbXBvcnQoamF2YXgud3NkbC5JbXBvcnQgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSUltcG9ydEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUxpc3QoTGlzdCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJTGlzdEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSU1hcChNYXAgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSU1hcEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSVVSTChVUkwgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSVVSTEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUV4dGVuc2lvblJlZ2lzdHJ5KEV4dGVuc2lvblJlZ2lzdHJ5IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlFeHRlbnNpb25SZWdpc3RyeUFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlVHlwZXMoVHlwZXMgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlVHlwZXNBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlJdGVyYXRvcihJdGVyYXRvciBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJSXRlcmF0b3JBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZUlUeXBlcyhqYXZheC53c2RsLlR5cGVzIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlUeXBlc0FkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRBZGFwdGVyKCk7Ci0gICAgICB9Ci0KLSAgICAgIHB1YmxpYyBPYmplY3QgY2FzZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50QWRhcHRlcigpOwotICAgICAgfQotCi0gICAgICBwdWJsaWMgT2JqZWN0IGNhc2VNZXNzYWdlUmVmZXJlbmNlKE1lc3NhZ2VSZWZlcmVuY2Ugb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlTWVzc2FnZVJlZmVyZW5jZUFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUVsZW1lbnRFeHRlbnNpYmxlKEVsZW1lbnRFeHRlbnNpYmxlIG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlFbGVtZW50RXh0ZW5zaWJsZUFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSUF0dHJpYnV0ZUV4dGVuc2libGUoQXR0cmlidXRlRXh0ZW5zaWJsZSBvYmplY3QpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJQXR0cmlidXRlRXh0ZW5zaWJsZUFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSU9iamVjdChPYmplY3Qgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSU9iamVjdEFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBjYXNlSVNjaGVtYShTY2hlbWEgb2JqZWN0KQotICAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSVNjaGVtYUFkYXB0ZXIoKTsKLSAgICAgIH0KLQotICAgICAgcHVibGljIE9iamVjdCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCk7Ci0gICAgICB9Ci0gICAgfTsKLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4KLSAgICogQHJldHVybiB0aGUgYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUFkYXB0ZXIoTm90aWZpZXIgdGFyZ2V0KQotICB7Ci0gICAgcmV0dXJuIChBZGFwdGVyKW1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCA8ZW0+RWxlbWVudDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVXU0RMRWxlbWVudEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZSA8ZW0+UG9ydCBUeXBlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZVBvcnRUeXBlQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiA8ZW0+T3BlcmF0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVPcGVyYXRpb25BZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSA8ZW0+TWVzc2FnZTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZU1lc3NhZ2VBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCA8ZW0+UGFydDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZVBhcnRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZyA8ZW0+QmluZGluZzwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUJpbmRpbmdBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbiA8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVCaW5kaW5nT3BlcmF0aW9uQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2UgPGVtPlNlcnZpY2U8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVTZXJ2aWNlQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQgPGVtPlBvcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVQb3J0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50IDxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbiA8ZW0+RGVmaW5pdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZURlZmluaXRpb25BZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0IDxlbT5JbXBvcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUltcG9ydEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCA8ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUV4dGVuc2libGVFbGVtZW50QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0IDxlbT5JbnB1dDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVJbnB1dEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQgPGVtPk91dHB1dDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlT3V0cHV0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkZhdWx0IDxlbT5GYXVsdDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5GYXVsdAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVGYXVsdEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQgPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUJpbmRpbmdJbnB1dEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0IDxlbT5CaW5kaW5nIE91dHB1dDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUJpbmRpbmdPdXRwdXRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0IDxlbT5CaW5kaW5nIEZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVCaW5kaW5nRmF1bHRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlIDxlbT5OYW1lc3BhY2U8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZU5hbWVzcGFjZUFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLlBvcnRUeXBlIDxlbT5JUG9ydCBUeXBlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuUG9ydFR5cGUKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSVBvcnRUeXBlQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuT3BlcmF0aW9uIDxlbT5JT3BlcmF0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuT3BlcmF0aW9uCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlPcGVyYXRpb25BZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5JbnB1dCA8ZW0+SUlucHV0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuSW5wdXQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUlucHV0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuT3V0cHV0IDxlbT5JT3V0cHV0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuT3V0cHV0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlPdXRwdXRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5GYXVsdCA8ZW0+SUZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuRmF1bHQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUZhdWx0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuTWVzc2FnZSA8ZW0+SU1lc3NhZ2U8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5NZXNzYWdlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlNZXNzYWdlQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuUGFydCA8ZW0+SVBhcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5QYXJ0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlQYXJ0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuU2VydmljZSA8ZW0+SVNlcnZpY2U8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5TZXJ2aWNlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlTZXJ2aWNlQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuUG9ydCA8ZW0+SVBvcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5Qb3J0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlQb3J0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuQmluZGluZyA8ZW0+SUJpbmRpbmc8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5CaW5kaW5nCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlCaW5kaW5nQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiA8ZW0+SUJpbmRpbmcgT3BlcmF0aW9uPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVJQmluZGluZ09wZXJhdGlvbkFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLkJpbmRpbmdJbnB1dCA8ZW0+SUJpbmRpbmcgSW5wdXQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUJpbmRpbmdJbnB1dEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQgPGVtPklCaW5kaW5nIE91dHB1dDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUJpbmRpbmdPdXRwdXRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQgPGVtPklCaW5kaW5nIEZhdWx0PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuQmluZGluZ0ZhdWx0Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlCaW5kaW5nRmF1bHRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50IDxlbT5JRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVJRXh0ZW5zaWJpbGl0eUVsZW1lbnRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5EZWZpbml0aW9uIDxlbT5JRGVmaW5pdGlvbjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLkRlZmluaXRpb24KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSURlZmluaXRpb25BZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YXgud3NkbC5JbXBvcnQgPGVtPklJbXBvcnQ8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5JbXBvcnQKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUltcG9ydEFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZhLnV0aWwuTGlzdCA8ZW0+SUxpc3Q8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YS51dGlsLkxpc3QKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUxpc3RBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YS51dGlsLk1hcCA8ZW0+SU1hcDwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZhLnV0aWwuTWFwCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlNYXBBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgamF2YS5uZXQuVVJMIDxlbT5JVVJMPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmEubmV0LlVSTAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVJVVJMQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpb25SZWdpc3RyeSA8ZW0+SUV4dGVuc2lvbiBSZWdpc3RyeTwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUV4dGVuc2lvblJlZ2lzdHJ5QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLlR5cGVzIDxlbT5UeXBlczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlcwotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVUeXBlc0FkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZhLnV0aWwuSXRlcmF0b3IgPGVtPklJdGVyYXRvcjwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZhLnV0aWwuSXRlcmF0b3IKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlSUl0ZXJhdG9yQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuVHlwZXMgPGVtPklUeXBlczwvZW0+fScuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKLSAgICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KLSAgICogQHNlZSBqYXZheC53c2RsLlR5cGVzCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlUeXBlc0FkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS53c3Qud3NkbC5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPGVtPlVua25vd24gRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2Uud3N0LndzZGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPGVtPlhTRCBTY2hlbWEgRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2UgPGVtPk1lc3NhZ2UgUmVmZXJlbmNlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2UKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIEFkYXB0ZXIgY3JlYXRlTWVzc2FnZVJlZmVyZW5jZUFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuRWxlbWVudEV4dGVuc2libGUgPGVtPklFbGVtZW50IEV4dGVuc2libGU8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YXgud3NkbC5leHRlbnNpb25zLkVsZW1lbnRFeHRlbnNpYmxlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlFbGVtZW50RXh0ZW5zaWJsZUFkYXB0ZXIoKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBqYXZheC53c2RsLmV4dGVuc2lvbnMuQXR0cmlidXRlRXh0ZW5zaWJsZSA8ZW0+SUF0dHJpYnV0ZSBFeHRlbnNpYmxlPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5BdHRyaWJ1dGVFeHRlbnNpYmxlCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlBdHRyaWJ1dGVFeHRlbnNpYmxlQWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmEubGFuZy5PYmplY3QgPGVtPklPYmplY3Q8L2VtPn0nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7Ci0gICAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5LgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuCi0gICAqIEBzZWUgamF2YS5sYW5nLk9iamVjdAotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVJT2JqZWN0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hIDxlbT5JU2NoZW1hPC9lbT59Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOwotICAgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAc2VlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBBZGFwdGVyIGNyZWF0ZUlTY2hlbWFBZGFwdGVyKCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgdGhlIGRlZmF1bHQgY2FzZS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgQWRhcHRlciBjcmVhdGVFT2JqZWN0QWRhcHRlcigpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi19IC8vV1NETEFkYXB0ZXJGYWN0b3J5CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL3V0aWwvV1NETERlZmluaXRpb25GYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL3V0aWwvV1NETERlZmluaXRpb25GYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmYTViMjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1dTRExEZWZpbml0aW9uRmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWw7Ci0KLQotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLnhtbC5XU0RMUmVhZGVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMRmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5XU0RMUGFja2FnZUltcGw7Ci0KLWltcG9ydCBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsOwotCi0KLXB1YmxpYyBjbGFzcyBXU0RMRGVmaW5pdGlvbkZhY3RvcnkgZXh0ZW5kcyBjb20uaWJtLndzZGwuZmFjdG9yeS5XU0RMRmFjdG9yeUltcGwKLXsKLQotICBwcml2YXRlIHN0YXRpYyBXU0RMRGVmaW5pdGlvbkZhY3RvcnkgaW5zdGFuY2UgPSBudWxsOwotCi0gIHB1YmxpYyBXU0RMRGVmaW5pdGlvbkZhY3RvcnkoKQotICB7Ci0gICAgLy8gTWFrZSBzdXJlIHRoZSBXU0RMIHBhY2thZ2UgaXMgaW5pdGlhbGl6ZWQuCi0gICAgV1NETFBhY2thZ2VJbXBsLmluaXQoKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgRGVmaW5pdGlvbi4KLSAgICovCi0gIHB1YmxpYyBqYXZheC53c2RsLkRlZmluaXRpb24gbmV3RGVmaW5pdGlvbigpCi0gIHsKLSAgICBqYXZheC53c2RsLkRlZmluaXRpb24gZGVmaW5pdGlvbiA9IFdTRExGYWN0b3J5SW1wbC5lSU5TVEFOQ0UuY3JlYXRlRGVmaW5pdGlvbigpOwotICAgIHJldHVybiBkZWZpbml0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBmYWN0b3J5Ci0gICAqLwotICBwdWJsaWMgc3RhdGljIGphdmF4LndzZGwuZmFjdG9yeS5XU0RMRmFjdG9yeSBnZXRJbnN0YW5jZSgpIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCkKLSAgICAgIGluc3RhbmNlID0gbmV3IFdTRExEZWZpbml0aW9uRmFjdG9yeSgpOwotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGVzIGEgV1NETFJlYWRlci4KLSAgICovCi0gIHB1YmxpYyBXU0RMUmVhZGVyIG5ld1dTRExSZWFkZXIoKQotICB7Ci0gICAgV1NETFJlYWRlciByZWFkZXIgPSBuZXcgV1NETFJlYWRlckltcGwoKTsKLSAgICByZWFkZXIuc2V0RmFjdG9yeUltcGxOYW1lKGdldENsYXNzKCkuZ2V0TmFtZSgpKTsKLSAgICByZXR1cm4gcmVhZGVyOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9XU0RMTW9kZWxMb2NhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL3V0aWwvV1NETE1vZGVsTG9jYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2RhYWQ0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9XU0RMTW9kZWxMb2NhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbDsKLQotCi0vKioKLSAqIEFuIGFkYXB0ZXIgaW50ZXJmYWNlIHVzZWQgYnkge0BsaW5rIG9yZy5lY2xpcHNlLndzdC53c2RsLkltcG9ydEltcGwgdG8gZmluZCByZWZlcmVuY2VkIHJlc291cmNlcy4KLSAqIFdoZW4gdGhlIHJlc291cmNlIHJlZmVyZW5jZWQgYnkgYSB3c2RsIGltcG9ydCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkLCAKLSAqIHRoZSBjb250YWluaW5nIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2V9Ci0gKiB3aWxsIGJlIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FY29yZVV0aWwjZ2V0UmVnaXN0ZXJlZEFkYXB0ZXIob3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlLE9iamVjdCkgaW5zcGVjdGVkfSAKLSAqIGZvciBhbiBhZGFwdGVyIHRoYXQgaW1wbGVtZW50cyB0aGlzIGludGVyZmFjZS4KLSAqIEFzIHN1Y2gsIHlvdSBjYW4gcmVnaXN0ZXIgYW4gYWRhcHRlciBmYWN0b3J5IGxpa2UgdGhpcyB0byB0YWlsb3IgdGhlIGFsZ29yaXRobSB1c2VkIHRvIGxvY2F0ZSB0aGUgcmVzb3VyY2UgOgotICo8cHJlPgotICogIFJlc291cmNlU2V0IHJlc291cmNlU2V0ID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOwotICogIHJlc291cmNlU2V0LmdldEFkYXB0ZXJGYWN0b3JpZXMoKS5hZGQKLSAqICAgIChuZXcgQWRhcHRlckZhY3RvcnlJbXBsKCkKLSAqICAgICB7Ci0gKiAgICAgICBjbGFzcyBDdXN0b21VUklSZXNvbHZlciBleHRlbmRzIEFkYXB0ZXJJbXBsIGltcGxlbWVudHMgV1NETE1vZGVsTG9jYXRvcgotICogICAgICAgewotICogICAgICAgICBwdWJsaWMgU3RyaW5nIHJlc29sdmVVUkkoU3RyaW5nIGJhc2VMb2NhdGlvbiwgU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIGxvY2F0aW9uKTsKLSAqICAgICAgICAgewotICogICAgICAgICAgIHJldHVybiBudWxsOyAgLy8gQWRkaXRpb25hbCBsb2dpYy4uLgotICogICAgICAgICB9Ci0gKgotICogICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0FkYXRwZXJGb3JUeXBlKE9iamVjdCB0eXBlKQotICogICAgICAgICB7Ci0gKiAgICAgICAgICAgcmV0dXJuIHR5cGUgPT0gV1NETE1vZGVsTG9jYXRvci5jbGFzczsKLSAqICAgICAgICAgfQotICogICAgICAgfQotICoKLSAqICAgICAgIHByb3RlY3RlZCBDdXN0b21VUklSZXNvbHZlciBjdXN0b21VUklSZXNvbHZlciA9IG5ldyBDdXN0b21VUklSZXNvbHZlcigpOwotICoKLSAqICAgICAgIHB1YmxpYyBib29sZWFuIGlzRmFjdG9yeUZvclR5cGUoT2JqZWN0IHR5cGUpCi0gKiAgICAgICB7Ci0gKiAgICAgICAgIHJldHVybiB0eXBlID09IFdTRExNb2RlbExvY2F0b3IuY2xhc3M7Ci0gKiAgICAgICB9Ci0gKgotICogICAgICAgcHVibGljIEFkYXB0ZXIgYWRhcHROZXcoTm90aWZpZXIgdGFyZ2V0LCBPYmplY3QgdHlwZSkKLSAqICAgICAgIHsKLSAqICAgICAgICAgcmV0dXJuIGN1c3RvbVVSSVJlc29sdmVyOwotICogICAgICAgfQotICogICAgIH0pOwotICo8L3ByZT4KLSAqIEBzZWUgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRWNvcmVVdGlsI2dldFJlZ2lzdGVyZWRBZGFwdGVyKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZSxPYmplY3QpCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgV1NETE1vZGVsTG9jYXRvcgotewotICBwdWJsaWMgU3RyaW5nIHJlc29sdmVVUkkoU3RyaW5nIGJhc2VMb2NhdGlvbiwgU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIGxvY2F0aW9uKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YmMxOGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLmltcGwuUmVzb3VyY2VGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGw7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlJlc291cmNlIEZhY3Rvcnk8L2I+IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFja2FnZS4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwKLSAqIEBnZW5lcmF0ZWQKLSAqLwotcHVibGljIGNsYXNzIFdTRExSZXNvdXJjZUZhY3RvcnlJbXBsIGV4dGVuZHMgUmVzb3VyY2VGYWN0b3J5SW1wbAotewotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgcmVzb3VyY2UgZmFjdG9yeS4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBXU0RMUmVzb3VyY2VGYWN0b3J5SW1wbCgpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHJlc291cmNlLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFJlc291cmNlIGNyZWF0ZVJlc291cmNlKFVSSSB1cmkpCi0gIHsKLSAgICBSZXNvdXJjZSByZXN1bHQgPSBuZXcgV1NETFJlc291cmNlSW1wbCh1cmkpOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0gLy9XU0RMUmVzb3VyY2VGYWN0b3J5SW1wbApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1dTRExTd2l0Y2guamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9XU0RMU3dpdGNoLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMzZhZmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1dTRExTd2l0Y2guamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWw7Ci0KLQotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5BdHRyaWJ1dGVFeHRlbnNpYmxlOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FbGVtZW50RXh0ZW5zaWJsZTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaW9uUmVnaXN0cnk7Ci0KLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLio7Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlN3aXRjaDwvYj4gZm9yIHRoZSBtb2RlbCdzIGluaGVyaXRhbmNlIGhpZXJhcmNoeS4KLSAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2ggZG9Td2l0Y2gob2JqZWN0KX0KLSAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwKLSAqIHN0YXJ0aW5nIHdpdGggdGhlIGFjdHVhbCBjbGFzcyBvZiB0aGUgb2JqZWN0Ci0gKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5Ci0gKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwKLSAqIHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgdGhlIHN3aXRjaC4KLSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZQotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgV1NETFN3aXRjaAotewotICAvKioKLSAgICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIFdTRExQYWNrYWdlIG1vZGVsUGFja2FnZTsKLQotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIFdTRExTd2l0Y2goKQotICB7Ci0gICAgaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKQotICAgIHsKLSAgICAgIG1vZGVsUGFja2FnZSA9IFdTRExQYWNrYWdlLmVJTlNUQU5DRTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLgotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGRvU3dpdGNoKEVPYmplY3QgdGhlRU9iamVjdCkKLSAgewotICAgIHJldHVybiBkb1N3aXRjaCh0aGVFT2JqZWN0LmVDbGFzcygpLCB0aGVFT2JqZWN0KTsKLSAgfQotCi0gIC8qKgotICAgKiBDYWxscyA8Y29kZT5jYXNlWFhYPC9jb2RlPiBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwgdW50aWwgb25lIHJldHVybnMgYSBub24gbnVsbCByZXN1bHQ7IGl0IHlpZWxkcyB0aGF0IHJlc3VsdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIGZpcnN0IG5vbi1udWxsIHJlc3VsdCByZXR1cm5lZCBieSBhIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGNhbGwuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBPYmplY3QgZG9Td2l0Y2goRUNsYXNzIHRoZUVDbGFzcywgRU9iamVjdCB0aGVFT2JqZWN0KQotICB7Ci0gICAgaWYgKHRoZUVDbGFzcy5lQ29udGFpbmVyKCkgPT0gbW9kZWxQYWNrYWdlKQotICAgIHsKLSAgICAgIHJldHVybiBkb1N3aXRjaCh0aGVFQ2xhc3MuZ2V0Q2xhc3NpZmllcklEKCksIHRoZUVPYmplY3QpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgTGlzdCBlU3VwZXJUeXBlcyA9IHRoZUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpOwotICAgICAgcmV0dXJuIGVTdXBlclR5cGVzLmlzRW1wdHkoKSA/IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpIDogZG9Td2l0Y2goKEVDbGFzcyllU3VwZXJUeXBlcy5nZXQoMCksIHRoZUVPYmplY3QpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBDYWxscyA8Y29kZT5jYXNlWFhYPC9jb2RlPiBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwgdW50aWwgb25lIHJldHVybnMgYSBub24gbnVsbCByZXN1bHQ7IGl0IHlpZWxkcyB0aGF0IHJlc3VsdC4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEByZXR1cm4gdGhlIGZpcnN0IG5vbi1udWxsIHJlc3VsdCByZXR1cm5lZCBieSBhIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGNhbGwuCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHByb3RlY3RlZCBPYmplY3QgZG9Td2l0Y2goaW50IGNsYXNzaWZpZXJJRCwgRU9iamVjdCB0aGVFT2JqZWN0KQotICB7Ci0gICAgc3dpdGNoIChjbGFzc2lmaWVySUQpCi0gICAgewotICAgICAgY2FzZSBXU0RMUGFja2FnZS5XU0RMX0VMRU1FTlQ6Ci0gICAgICB7Ci0gICAgICAgIFdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gKFdTRExFbGVtZW50KXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlV1NETEVsZW1lbnQod3NkbEVsZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlBPUlRfVFlQRToKLSAgICAgIHsKLSAgICAgICAgUG9ydFR5cGUgcG9ydFR5cGUgPSAoUG9ydFR5cGUpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VQb3J0VHlwZShwb3J0VHlwZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlRXh0ZW5zaWJsZUVsZW1lbnQocG9ydFR5cGUpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlQb3J0VHlwZShwb3J0VHlwZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlV1NETEVsZW1lbnQocG9ydFR5cGUpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShwb3J0VHlwZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUF0dHJpYnV0ZUV4dGVuc2libGUocG9ydFR5cGUpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9QRVJBVElPTjoKLSAgICAgIHsKLSAgICAgICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IChPcGVyYXRpb24pdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VPcGVyYXRpb24ob3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudChvcGVyYXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlPcGVyYXRpb24ob3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChvcGVyYXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShvcGVyYXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlBdHRyaWJ1dGVFeHRlbnNpYmxlKG9wZXJhdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTUVTU0FHRToKLSAgICAgIHsKLSAgICAgICAgTWVzc2FnZSBtZXNzYWdlID0gKE1lc3NhZ2UpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2libGVFbGVtZW50KG1lc3NhZ2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KG1lc3NhZ2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShtZXNzYWdlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJQXR0cmlidXRlRXh0ZW5zaWJsZShtZXNzYWdlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QQVJUOgotICAgICAgewotICAgICAgICBQYXJ0IHBhcnQgPSAoUGFydCl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZVBhcnQocGFydCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlRXh0ZW5zaWJsZUVsZW1lbnQocGFydCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSVBhcnQocGFydCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlV1NETEVsZW1lbnQocGFydCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUVsZW1lbnRFeHRlbnNpYmxlKHBhcnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlBdHRyaWJ1dGVFeHRlbnNpYmxlKHBhcnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkJJTkRJTkc6Ci0gICAgICB7Ci0gICAgICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlQmluZGluZyhiaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudChiaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJQmluZGluZyhiaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChiaW5kaW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRWxlbWVudEV4dGVuc2libGUoYmluZGluZyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUF0dHJpYnV0ZUV4dGVuc2libGUoYmluZGluZyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT046Ci0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlQmluZGluZ09wZXJhdGlvbihiaW5kaW5nT3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudChiaW5kaW5nT3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJQmluZGluZ09wZXJhdGlvbihiaW5kaW5nT3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChiaW5kaW5nT3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRWxlbWVudEV4dGVuc2libGUoYmluZGluZ09wZXJhdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUF0dHJpYnV0ZUV4dGVuc2libGUoYmluZGluZ09wZXJhdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuU0VSVklDRToKLSAgICAgIHsKLSAgICAgICAgU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2UpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VTZXJ2aWNlKHNlcnZpY2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2libGVFbGVtZW50KHNlcnZpY2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlTZXJ2aWNlKHNlcnZpY2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KHNlcnZpY2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShzZXJ2aWNlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJQXR0cmlidXRlRXh0ZW5zaWJsZShzZXJ2aWNlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBXU0RMUGFja2FnZS5QT1JUOgotICAgICAgewotICAgICAgICBQb3J0IHBvcnQgPSAoUG9ydCl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZVBvcnQocG9ydCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlRXh0ZW5zaWJsZUVsZW1lbnQocG9ydCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSVBvcnQocG9ydCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlV1NETEVsZW1lbnQocG9ydCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUVsZW1lbnRFeHRlbnNpYmxlKHBvcnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlBdHRyaWJ1dGVFeHRlbnNpYmxlKHBvcnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVDoKLSAgICAgIHsKLSAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudChleHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlV1NETEVsZW1lbnQoZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudChleHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuREVGSU5JVElPTjoKLSAgICAgIHsKLSAgICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gKERlZmluaXRpb24pdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VEZWZpbml0aW9uKGRlZmluaXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2libGVFbGVtZW50KGRlZmluaXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlEZWZpbml0aW9uKGRlZmluaXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KGRlZmluaXRpb24pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShkZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJQXR0cmlidXRlRXh0ZW5zaWJsZShkZWZpbml0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBXU0RMUGFja2FnZS5JTVBPUlQ6Ci0gICAgICB7Ci0gICAgICAgIEltcG9ydCBpbXBvcnRfID0gKEltcG9ydCl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZUltcG9ydChpbXBvcnRfKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudChpbXBvcnRfKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJSW1wb3J0KGltcG9ydF8pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KGltcG9ydF8pOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShpbXBvcnRfKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJQXR0cmlidXRlRXh0ZW5zaWJsZShpbXBvcnRfKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBXU0RMUGFja2FnZS5FWFRFTlNJQkxFX0VMRU1FTlQ6Ci0gICAgICB7Ci0gICAgICAgIEV4dGVuc2libGVFbGVtZW50IGV4dGVuc2libGVFbGVtZW50ID0gKEV4dGVuc2libGVFbGVtZW50KXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlRXh0ZW5zaWJsZUVsZW1lbnQoZXh0ZW5zaWJsZUVsZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KGV4dGVuc2libGVFbGVtZW50KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRWxlbWVudEV4dGVuc2libGUoZXh0ZW5zaWJsZUVsZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlBdHRyaWJ1dGVFeHRlbnNpYmxlKGV4dGVuc2libGVFbGVtZW50KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY2FzZSBXU0RMUGFja2FnZS5JTlBVVDoKLSAgICAgIHsKLSAgICAgICAgSW5wdXQgaW5wdXQgPSAoSW5wdXQpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VJbnB1dChpbnB1dCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlTWVzc2FnZVJlZmVyZW5jZShpbnB1dCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUlucHV0KGlucHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudChpbnB1dCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUF0dHJpYnV0ZUV4dGVuc2libGUoaW5wdXQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZVdTRExFbGVtZW50KGlucHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRWxlbWVudEV4dGVuc2libGUoaW5wdXQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLk9VVFBVVDoKLSAgICAgIHsKLSAgICAgICAgT3V0cHV0IG91dHB1dCA9IChPdXRwdXQpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VPdXRwdXQob3V0cHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VNZXNzYWdlUmVmZXJlbmNlKG91dHB1dCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSU91dHB1dChvdXRwdXQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2libGVFbGVtZW50KG91dHB1dCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUF0dHJpYnV0ZUV4dGVuc2libGUob3V0cHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChvdXRwdXQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShvdXRwdXQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLkZBVUxUOgotICAgICAgewotICAgICAgICBGYXVsdCBmYXVsdCA9IChGYXVsdCl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZUZhdWx0KGZhdWx0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VNZXNzYWdlUmVmZXJlbmNlKGZhdWx0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRmF1bHQoZmF1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUV4dGVuc2libGVFbGVtZW50KGZhdWx0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJQXR0cmlidXRlRXh0ZW5zaWJsZShmYXVsdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlV1NETEVsZW1lbnQoZmF1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShmYXVsdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19JTlBVVDoKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IChCaW5kaW5nSW5wdXQpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VCaW5kaW5nSW5wdXQoYmluZGluZ0lucHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudChiaW5kaW5nSW5wdXQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlCaW5kaW5nSW5wdXQoYmluZGluZ0lucHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChiaW5kaW5nSW5wdXQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShiaW5kaW5nSW5wdXQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlBdHRyaWJ1dGVFeHRlbnNpYmxlKGJpbmRpbmdJbnB1dCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19PVVRQVVQ6Ci0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IChCaW5kaW5nT3V0cHV0KXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlQmluZGluZ091dHB1dChiaW5kaW5nT3V0cHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudChiaW5kaW5nT3V0cHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJQmluZGluZ091dHB1dChiaW5kaW5nT3V0cHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChiaW5kaW5nT3V0cHV0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRWxlbWVudEV4dGVuc2libGUoYmluZGluZ091dHB1dCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUF0dHJpYnV0ZUV4dGVuc2libGUoYmluZGluZ091dHB1dCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuQklORElOR19GQVVMVDoKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdCA9IChCaW5kaW5nRmF1bHQpdGhlRU9iamVjdDsKLSAgICAgICAgT2JqZWN0IHJlc3VsdCA9IGNhc2VCaW5kaW5nRmF1bHQoYmluZGluZ0ZhdWx0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudChiaW5kaW5nRmF1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlCaW5kaW5nRmF1bHQoYmluZGluZ0ZhdWx0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChiaW5kaW5nRmF1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFbGVtZW50RXh0ZW5zaWJsZShiaW5kaW5nRmF1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlBdHRyaWJ1dGVFeHRlbnNpYmxlKGJpbmRpbmdGYXVsdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTkFNRVNQQUNFOgotICAgICAgewotICAgICAgICBOYW1lc3BhY2UgbmFtZXNwYWNlID0gKE5hbWVzcGFjZSl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZU5hbWVzcGFjZShuYW1lc3BhY2UpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlRZUEVTOgotICAgICAgewotICAgICAgICBUeXBlcyB0eXBlcyA9IChUeXBlcyl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZVR5cGVzKHR5cGVzKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudCh0eXBlcyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSVR5cGVzKHR5cGVzKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudCh0eXBlcyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUVsZW1lbnRFeHRlbnNpYmxlKHR5cGVzKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJQXR0cmlidXRlRXh0ZW5zaWJsZSh0eXBlcyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlQ6Ci0gICAgICB7Ci0gICAgICAgIFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCB1bmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KHVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQodW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudCh1bmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudCh1bmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBjYXNlIFdTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UOgotICAgICAgewotICAgICAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCA9IChYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCl0aGVFT2JqZWN0OwotICAgICAgICBPYmplY3QgcmVzdWx0ID0gY2FzZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KHhzZFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmlsaXR5RWxlbWVudCh4c2RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSVNjaGVtYSh4c2RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlV1NETEVsZW1lbnQoeHNkU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgICAgICAgcmVzdWx0ID0gY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudCh4c2RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNhc2UgV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0U6Ci0gICAgICB7Ci0gICAgICAgIE1lc3NhZ2VSZWZlcmVuY2UgbWVzc2FnZVJlZmVyZW5jZSA9IChNZXNzYWdlUmVmZXJlbmNlKXRoZUVPYmplY3Q7Ci0gICAgICAgIE9iamVjdCByZXN1bHQgPSBjYXNlTWVzc2FnZVJlZmVyZW5jZShtZXNzYWdlUmVmZXJlbmNlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VFeHRlbnNpYmxlRWxlbWVudChtZXNzYWdlUmVmZXJlbmNlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VXU0RMRWxlbWVudChtZXNzYWdlUmVmZXJlbmNlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICAgIHJlc3VsdCA9IGNhc2VJRWxlbWVudEV4dGVuc2libGUobWVzc2FnZVJlZmVyZW5jZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBjYXNlSUF0dHJpYnV0ZUV4dGVuc2libGUobWVzc2FnZVJlZmVyZW5jZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKLSAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVsZW1lbnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FbGVtZW50PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlV1NETEVsZW1lbnQoV1NETEVsZW1lbnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UG9ydCBUeXBlPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UG9ydCBUeXBlPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlUG9ydFR5cGUoUG9ydFR5cGUgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlT3BlcmF0aW9uKE9wZXJhdGlvbiBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5NZXNzYWdlPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+TWVzc2FnZTwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZU1lc3NhZ2UoTWVzc2FnZSBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5QYXJ0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UGFydDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZVBhcnQoUGFydCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CaW5kaW5nPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+QmluZGluZzwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUJpbmRpbmcoQmluZGluZyBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CaW5kaW5nIE9wZXJhdGlvbjwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJpbmRpbmcgT3BlcmF0aW9uPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlQmluZGluZ09wZXJhdGlvbihCaW5kaW5nT3BlcmF0aW9uIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlNlcnZpY2U8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5TZXJ2aWNlPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlU2VydmljZShTZXJ2aWNlIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlBvcnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Qb3J0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlUG9ydChQb3J0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUV4dGVuc2liaWxpdHlFbGVtZW50KEV4dGVuc2liaWxpdHlFbGVtZW50IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkRlZmluaXRpb248L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5EZWZpbml0aW9uPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlRGVmaW5pdGlvbihEZWZpbml0aW9uIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkltcG9ydDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkltcG9ydDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUltcG9ydChJbXBvcnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlRXh0ZW5zaWJsZUVsZW1lbnQoRXh0ZW5zaWJsZUVsZW1lbnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SW5wdXQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JbnB1dDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlucHV0KElucHV0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPk91dHB1dDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPk91dHB1dDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZU91dHB1dChPdXRwdXQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RmF1bHQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5GYXVsdDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUZhdWx0KEZhdWx0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CaW5kaW5nIElucHV0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlQmluZGluZ0lucHV0KEJpbmRpbmdJbnB1dCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CaW5kaW5nIE91dHB1dDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJpbmRpbmcgT3V0cHV0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlQmluZGluZ091dHB1dChCaW5kaW5nT3V0cHV0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJpbmRpbmcgRmF1bHQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CaW5kaW5nIEZhdWx0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlQmluZGluZ0ZhdWx0KEJpbmRpbmdGYXVsdCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5OYW1lc3BhY2U8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5OYW1lc3BhY2U8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VOYW1lc3BhY2UoTmFtZXNwYWNlIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklQb3J0IFR5cGU8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JUG9ydCBUeXBlPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSVBvcnRUeXBlKGphdmF4LndzZGwuUG9ydFR5cGUgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SU9wZXJhdGlvbjwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklPcGVyYXRpb248L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJT3BlcmF0aW9uKGphdmF4LndzZGwuT3BlcmF0aW9uIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklJbnB1dDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklJbnB1dDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlJbnB1dChqYXZheC53c2RsLklucHV0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklPdXRwdXQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JT3V0cHV0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSU91dHB1dChqYXZheC53c2RsLk91dHB1dCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JRmF1bHQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JRmF1bHQ8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJRmF1bHQoamF2YXgud3NkbC5GYXVsdCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JTWVzc2FnZTwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklNZXNzYWdlPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSU1lc3NhZ2UoamF2YXgud3NkbC5NZXNzYWdlIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklQYXJ0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVBhcnQ8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJUGFydChqYXZheC53c2RsLlBhcnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVNlcnZpY2U8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JU2VydmljZTwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlTZXJ2aWNlKGphdmF4LndzZGwuU2VydmljZSBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JUG9ydDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklQb3J0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSVBvcnQoamF2YXgud3NkbC5Qb3J0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklCaW5kaW5nPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUJpbmRpbmc8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJQmluZGluZyhqYXZheC53c2RsLkJpbmRpbmcgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUJpbmRpbmcgT3BlcmF0aW9uPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUJpbmRpbmcgT3BlcmF0aW9uPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSUJpbmRpbmdPcGVyYXRpb24oamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklCaW5kaW5nIElucHV0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUJpbmRpbmcgSW5wdXQ8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJQmluZGluZ0lucHV0KGphdmF4LndzZGwuQmluZGluZ0lucHV0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklCaW5kaW5nIE91dHB1dDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklCaW5kaW5nIE91dHB1dDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlCaW5kaW5nT3V0cHV0KGphdmF4LndzZGwuQmluZGluZ091dHB1dCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JQmluZGluZyBGYXVsdDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklCaW5kaW5nIEZhdWx0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSUJpbmRpbmdGYXVsdChqYXZheC53c2RsLkJpbmRpbmdGYXVsdCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlFeHRlbnNpYmlsaXR5RWxlbWVudChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SURlZmluaXRpb248L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JRGVmaW5pdGlvbjwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlEZWZpbml0aW9uKGphdmF4LndzZGwuRGVmaW5pdGlvbiBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JSW1wb3J0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUltcG9ydDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlJbXBvcnQoamF2YXgud3NkbC5JbXBvcnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUxpc3Q8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JTGlzdDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlMaXN0KExpc3Qgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SU1hcDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklNYXA8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJTWFwKE1hcCBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JVVJMPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVVSTDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlVUkwoVVJMIG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklFeHRlbnNpb24gUmVnaXN0cnk8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JRXh0ZW5zaW9uIFJlZ2lzdHJ5PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSUV4dGVuc2lvblJlZ2lzdHJ5KEV4dGVuc2lvblJlZ2lzdHJ5IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlR5cGVzPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+VHlwZXM8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VUeXBlcyhUeXBlcyBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JSXRlcmF0b3I8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JSXRlcmF0b3I8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJSXRlcmF0b3IoSXRlcmF0b3Igb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVR5cGVzPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SVR5cGVzPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSVR5cGVzKGphdmF4LndzZGwuVHlwZXMgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudChVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPk1lc3NhZ2UgUmVmZXJlbmNlPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+TWVzc2FnZSBSZWZlcmVuY2U8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VNZXNzYWdlUmVmZXJlbmNlKE1lc3NhZ2VSZWZlcmVuY2Ugb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUVsZW1lbnQgRXh0ZW5zaWJsZTwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgotICAgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guCi0gICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklFbGVtZW50IEV4dGVuc2libGU8L2VtPicuCi0gICAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQotICAgKiBAZ2VuZXJhdGVkCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGNhc2VJRWxlbWVudEV4dGVuc2libGUoRWxlbWVudEV4dGVuc2libGUgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUF0dHJpYnV0ZSBFeHRlbnNpYmxlPC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SUF0dHJpYnV0ZSBFeHRlbnNpYmxlPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSUF0dHJpYnV0ZUV4dGVuc2libGUoQXR0cmlidXRlRXh0ZW5zaWJsZSBvYmplY3QpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JT2JqZWN0PC9lbT4nLgotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKLSAgICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guCi0gICAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4KLSAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SU9iamVjdDwvZW0+Jy4KLSAgICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBPYmplY3QgY2FzZUlPYmplY3QoT2JqZWN0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPklTY2hlbWE8L2VtPicuCi0gICAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gICAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOwotICAgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JU2NoZW1hPC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBjYXNlSVNjaGVtYShTY2hlbWEgb2JqZWN0KQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RU9iamVjdDwvZW0+Jy4KLSAgICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7Ci0gICAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLCBidXQgdGhpcyBpcyB0aGUgbGFzdCBjYXNlIGFueXdheS4KLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgotICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLgotICAgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkKLSAgICogQGdlbmVyYXRlZAotICAgKi8KLSAgcHVibGljIE9iamVjdCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLX0gLy9XU0RMU3dpdGNoCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL3V0aWwvV1NETFV0aWwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9XU0RMVXRpbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWUwMGZlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9XU0RMVXRpbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC51dGlsOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLQotcHVibGljIGNsYXNzIFdTRExVdGlsIGV4dGVuZHMgV1NETENvbnN0YW50cwotewotICBwcm90ZWN0ZWQgc3RhdGljIFdTRExVdGlsIGluc3RhbmNlOwotCi0gIC8vICBwcm90ZWN0ZWQgTm9kZUFzc29jaWF0aW9uTWFuYWdlciBub2RlQXNzb2NpYXRpb25NYW5hZ2VyID0gbmV3IE5vZGVBc3NvY2lhdGlvbk1hbmFnZXIoKTsKLQotICBwcm90ZWN0ZWQgSGFzaE1hcCBlbGVtZW50TmFtZVRvVHlwZU1hcCA9IG5ldyBIYXNoTWFwKCk7Ci0KLSAgcHVibGljIHN0YXRpYyBXU0RMVXRpbCBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpbnN0YW5jZSA9IG5ldyBXU0RMVXRpbCgpOwotICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0gIH0KLQotICBwdWJsaWMgV1NETFV0aWwoKQotICB7Ci0gICAgZWxlbWVudE5hbWVUb1R5cGVNYXAucHV0KEJJTkRJTkdfRUxFTUVOVF9UQUcsIG5ldyBJbnRlZ2VyKEJJTkRJTkcpKTsKLSAgICBlbGVtZW50TmFtZVRvVHlwZU1hcC5wdXQoREVGSU5JVElPTl9FTEVNRU5UX1RBRywgbmV3IEludGVnZXIoREVGSU5JVElPTikpOwotICAgIGVsZW1lbnROYW1lVG9UeXBlTWFwLnB1dChET0NVTUVOVEFUSU9OX0VMRU1FTlRfVEFHLCBuZXcgSW50ZWdlcihET0NVTUVOVEFUSU9OKSk7Ci0gICAgZWxlbWVudE5hbWVUb1R5cGVNYXAucHV0KEZBVUxUX0VMRU1FTlRfVEFHLCBuZXcgSW50ZWdlcihGQVVMVCkpOwotICAgIGVsZW1lbnROYW1lVG9UeXBlTWFwLnB1dChJTVBPUlRfRUxFTUVOVF9UQUcsIG5ldyBJbnRlZ2VyKElNUE9SVCkpOwotICAgIGVsZW1lbnROYW1lVG9UeXBlTWFwLnB1dChJTlBVVF9FTEVNRU5UX1RBRywgbmV3IEludGVnZXIoSU5QVVQpKTsKLSAgICBlbGVtZW50TmFtZVRvVHlwZU1hcC5wdXQoTUVTU0FHRV9FTEVNRU5UX1RBRywgbmV3IEludGVnZXIoTUVTU0FHRSkpOwotICAgIGVsZW1lbnROYW1lVG9UeXBlTWFwLnB1dChPUEVSQVRJT05fRUxFTUVOVF9UQUcsIG5ldyBJbnRlZ2VyKE9QRVJBVElPTikpOwotICAgIGVsZW1lbnROYW1lVG9UeXBlTWFwLnB1dChPVVRQVVRfRUxFTUVOVF9UQUcsIG5ldyBJbnRlZ2VyKE9VVFBVVCkpOwotICAgIGVsZW1lbnROYW1lVG9UeXBlTWFwLnB1dChQQVJUX0VMRU1FTlRfVEFHLCBuZXcgSW50ZWdlcihQQVJUKSk7Ci0gICAgZWxlbWVudE5hbWVUb1R5cGVNYXAucHV0KFBPUlRfRUxFTUVOVF9UQUcsIG5ldyBJbnRlZ2VyKFBPUlQpKTsKLSAgICBlbGVtZW50TmFtZVRvVHlwZU1hcC5wdXQoUE9SVF9UWVBFX0VMRU1FTlRfVEFHLCBuZXcgSW50ZWdlcihQT1JUX1RZUEUpKTsKLSAgICBlbGVtZW50TmFtZVRvVHlwZU1hcC5wdXQoU0VSVklDRV9FTEVNRU5UX1RBRywgbmV3IEludGVnZXIoU0VSVklDRSkpOwotICAgIGVsZW1lbnROYW1lVG9UeXBlTWFwLnB1dChUWVBFU19FTEVNRU5UX1RBRywgbmV3IEludGVnZXIoVFlQRVMpKTsKLSAgfQotCi0gIHB1YmxpYyBpbnQgZ2V0V1NETFR5cGUoRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaW50IHJlc3VsdCA9IC0xOwotCi0gICAgaWYgKFdTRExDb25zdGFudHMuaXNXU0RMTmFtZXNwYWNlKGVsZW1lbnQuZ2V0TmFtZXNwYWNlVVJJKCkpKQotICAgIHsKLSAgICAgIEludGVnZXIgaW50ZWdlciA9IChJbnRlZ2VyKSBlbGVtZW50TmFtZVRvVHlwZU1hcC5nZXQoZWxlbWVudC5nZXRMb2NhbE5hbWUoKSk7Ci0gICAgICBpZiAoaW50ZWdlciAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBpbnRlZ2VyLmludFZhbHVlKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwcm90ZWN0ZWQgTGlzdCBnZXRQYXJlbnRFbGVtZW50Q2hhaW4oRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIHdoaWxlIChlbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgbGlzdC5hZGQoMCwgZWxlbWVudCk7Ci0gICAgICBOb2RlIG5vZGUgPSBlbGVtZW50LmdldFBhcmVudE5vZGUoKTsKLSAgICAgIGVsZW1lbnQgPSAobm9kZSAhPSBudWxsICYmIG5vZGUuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgPyAoRWxlbWVudClub2RlIDogbnVsbDsKLSAgICB9Ci0gICAgcmV0dXJuIGxpc3Q7Ci0gIH0KLQotICAvKgotICAgcHVibGljIE9iamVjdCBmaW5kTW9kZWxPYmplY3RGb3JFbGVtZW50KERlZmluaXRpb24gZGVmaW5pdGlvbiwgRWxlbWVudCB0YXJnZXRFbGVtZW50KQotICAgeyAgIAotICAgT2JqZWN0IG8gPSBub2RlQXNzb2NpYXRpb25NYW5hZ2VyLmdldE1vZGVsT2JqZWN0Rm9yTm9kZShkZWZpbml0aW9uLCB0YXJnZXRFbGVtZW50KTsKLSAgIHJldHVybiBvOwotICAgfQotICAgCi0gICAKLSAgIHB1YmxpYyBFbGVtZW50IGdldEVsZW1lbnRGb3JPYmplY3QoT2JqZWN0IG8pCi0gICB7ICAgICAgCi0gICBOb2RlIG5vZGUgPSBub2RlQXNzb2NpYXRpb25NYW5hZ2VyLmdldE5vZGUobyk7ICAKLSAgIHJldHVybiAobm9kZSAhPSBudWxsICYmIG5vZGUuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgPyAoRWxlbWVudClub2RlIDogbnVsbDsgICAgICAgICAgICAgICAgICAKLSAgIH0KLSAgIAotICAgcHVibGljIE5vZGUgZ2V0Tm9kZUZvck9iamVjdChPYmplY3QgbykKLSAgIHsgICAgICAKLSAgIHJldHVybiBub2RlQXNzb2NpYXRpb25NYW5hZ2VyLmdldE5vZGUobyk7ICAgICAgICAgICAgICAgICAgICAgIAotICAgfQotICAgCi0gICBwdWJsaWMgSVR5cGVTeXN0ZW1Qcm92aWRlciBnZXRUeXBlU3lzdGVtUHJvdmlkZXIoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotICAgeyAgICAgIAotICAgcmV0dXJuIFdTRExUb0RPTUVsZW1lbnRVdGlsLmdldFR5cGVTeXN0ZW1Qcm92aWRlcihkZWZpbml0aW9uKTsgICAgICAgICAgICAgICAgICAgIAotICAgfQotICAgCi0gICAKLSAgIHB1YmxpYyB2b2lkIHNldFR5cGVTeXN0ZW1Qcm92aWRlcihEZWZpbml0aW9uIGRlZmluaXRpb24sIElUeXBlU3lzdGVtUHJvdmlkZXIgdHlwZVN5c3RlbVByb3ZpZGVyKQotICAgeyAgICAgIAotICAgV1NETFRvRE9NRWxlbWVudFV0aWwuc2V0VHlwZVN5c3RlbVByb3ZpZGVyKGRlZmluaXRpb24sIHR5cGVTeXN0ZW1Qcm92aWRlcik7ICAgICAgICAgICAgICAgICAgICAgIAotICAgfSAgIAotICAgKi8KLQotICBwdWJsaWMgc3RhdGljIFFOYW1lIGNyZWF0ZVFOYW1lKERlZmluaXRpb24gZGVmaW5pdGlvbiwgU3RyaW5nIHByZWZpeGVkTmFtZSkKLSAgewotICAgIFFOYW1lIHFuYW1lID0gbnVsbDsKLSAgICBpZiAocHJlZml4ZWROYW1lICE9IG51bGwpCi0gICAgewotICAgICAgaW50IGluZGV4ID0gcHJlZml4ZWROYW1lLmluZGV4T2YoIjoiKTsKLSAgICAgIFN0cmluZyBwcmVmaXggPSAoaW5kZXggPT0gLTEpID8gbnVsbCA6IHByZWZpeGVkTmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpOwotICAgICAgaWYgKHByZWZpeCAhPSBudWxsKQotICAgICAgewotICAgICAgICBTdHJpbmcgbmFtZXNwYWNlID0gZGVmaW5pdGlvbi5nZXROYW1lc3BhY2UocHJlZml4KTsKLSAgICAgICAgaWYgKG5hbWVzcGFjZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIGxvY2FsUGFydCA9IHByZWZpeGVkTmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKTsKLSAgICAgICAgICBxbmFtZSA9IG5ldyBRTmFtZShuYW1lc3BhY2UsIGxvY2FsUGFydCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHFuYW1lOwotICB9Ci0KLSAgcHVibGljIExpc3QgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnROb2RlcyhFeHRlbnNpYmxlRWxlbWVudCBleHRlbnNpYmxlRWxlbWVudCkKLSAgewotICAgIExpc3QgY2hpbGRMaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGZvciAoSXRlcmF0b3IgaSA9IGV4dGVuc2libGVFbGVtZW50LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaS5uZXh0KCk7Ci0gICAgICBpZiAoZXh0ZW5zaWJpbGl0eUVsZW1lbnQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgRWxlbWVudCBlbGVtZW50ID0gZXh0ZW5zaWJpbGl0eUVsZW1lbnQuZ2V0RWxlbWVudCgpOwotICAgICAgICBpZiAoZWxlbWVudCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgY2hpbGRMaXN0LmFkZChlbGVtZW50KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gY2hpbGRMaXN0OwotICAgIC8vcmV0dXJuIGV4dGVuc2libGVFbGVtZW50LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1hTRFNjaGVtYUxvY2F0b3JBZGFwdGVyRmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9pbnRlcm5hbC91dGlsL1hTRFNjaGVtYUxvY2F0b3JBZGFwdGVyRmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzBhYjY1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9YU0RTY2hlbWFMb2NhdG9yQWRhcHRlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC51dGlsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LmltcGwuQWRhcHRlckZhY3RvcnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC51dGlsLlhTRFNjaGVtYUxvY2F0b3I7Ci0KLQotcHVibGljIGNsYXNzIFhTRFNjaGVtYUxvY2F0b3JBZGFwdGVyRmFjdG9yeSBleHRlbmRzIEFkYXB0ZXJGYWN0b3J5SW1wbAotewotICBwcm90ZWN0ZWQgWFNEU2NoZW1hTG9jYXRvckltcGwgc2NoZW1hTG9jYXRvciA9IG5ldyBYU0RTY2hlbWFMb2NhdG9ySW1wbCgpOwotCi0gIHB1YmxpYyBib29sZWFuIGlzRmFjdG9yeUZvclR5cGUoT2JqZWN0IHR5cGUpCi0gIHsKLSAgICByZXR1cm4gdHlwZSA9PSBYU0RTY2hlbWFMb2NhdG9yLmNsYXNzOwotICB9Ci0KLSAgcHVibGljIEFkYXB0ZXIgYWRhcHROZXcoTm90aWZpZXIgdGFyZ2V0LCBPYmplY3QgdHlwZSkKLSAgewotICAgIHJldHVybiBzY2hlbWFMb2NhdG9yOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL2ludGVybmFsL3V0aWwvWFNEU2NoZW1hTG9jYXRvckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9YU0RTY2hlbWFMb2NhdG9ySW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTAyNmM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvaW50ZXJuYWwvdXRpbC9YU0RTY2hlbWFMb2NhdG9ySW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LmltcGwuQWRhcHRlckltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC51dGlsLlhTRFNjaGVtYUxvY2F0b3I7Ci0KLQotcHVibGljIGNsYXNzIFhTRFNjaGVtYUxvY2F0b3JJbXBsIGV4dGVuZHMgQWRhcHRlckltcGwgaW1wbGVtZW50cyBYU0RTY2hlbWFMb2NhdG9yCi17Ci0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLnhzZC51dGlsLlhTRFNjaGVtYUxvY2F0b3IjbG9jYXRlU2NoZW1hKG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWEsCi0gICAqICAgICAgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyBYU0RTY2hlbWEgbG9jYXRlU2NoZW1hKFhTRFNjaGVtYSB4c2RTY2hlbWEsIFN0cmluZyBuYW1lc3BhY2VVUkksIFN0cmluZyByYXdTY2hlbWFMb2NhdGlvblVSSSwgU3RyaW5nIHJlc29sdmVkU2NoZW1hTG9jYXRpb25VUkkpCi0gIHsKLSAgICBYU0RTY2hlbWEgcmVzb2x2ZWRTY2hlbWEgPSBudWxsOwotCi0gICAgLy8gQnVnemlsbGEgMTIyNjI0OiAgV1NETCBtb2RlbCBkb2VzIG5vdCByZXNvbHZlIDxpbXBvcnQ+IG9mIGlubGluZSBzY2hlbWEgd2l0aCBubyBuYW1lc3BhY2UuCi0gICAgLy8gS0I6IFdlIGFyZSBub3QgcmVzb2x2aW5nIDxpbXBvcnQ+ZWQgb3IgPGluY2x1ZGU+ZCBzY2hlbWFzIGZyb20gdGhlIHJvb3QgaW5saW5lIHNjaGVtYXMuCi0gICAgLy8gSW4gb3RoZXIgd29yZHMsIHNpbmNlIHdlIGFyZSByZXNvbHZpbmcgb25seSBiZXR3ZWVuIG11bHRpcGxlIHJvb3QgaW5saW5lIHNjaGVtYXMsCi0gICAgLy8gZG8gbm90IGF0dGVtcHQgdG8gcmVzb2x2ZSBpZiAicmF3U2NoZW1hTG9jYXRpb25VUkkiIGlzIG5vdCBudWxsLiAKLSAgICBpZiAobmFtZXNwYWNlVVJJICE9IG51bGwgJiYgcmF3U2NoZW1hTG9jYXRpb25VUkkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBudWxsOwotCi0gICAgICBmb3IgKEVPYmplY3QgcGFyZW50ID0geHNkU2NoZW1hLmVDb250YWluZXIoKTsgcGFyZW50ICE9IG51bGw7IHBhcmVudCA9IHBhcmVudC5lQ29udGFpbmVyKCkpCi0gICAgICB7Ci0gICAgICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBEZWZpbml0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgZGVmaW5pdGlvbiA9IChEZWZpbml0aW9uKXBhcmVudDsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoZGVmaW5pdGlvbiAhPSBudWxsICYmIGRlZmluaXRpb24uZ2V0RVR5cGVzKCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZm9yIChJdGVyYXRvciBpID0gZGVmaW5pdGlvbi5nZXRFVHlwZXMoKS5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgICAgICB7Ci0gICAgICAgICAgT2JqZWN0IG8gPSBpLm5leHQoKTsKLSAgICAgICAgICBpZiAobyBpbnN0YW5jZW9mIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFhTRFNjaGVtYSBzY2hlbWEgPSAoKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KW8pLmdldFNjaGVtYSgpOwotICAgICAgICAgICAgaWYgKHNjaGVtYSAhPSBudWxsICYmIG5hbWVzcGFjZVVSSS5lcXVhbHMoc2NoZW1hLmdldFRhcmdldE5hbWVzcGFjZSgpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmVzb2x2ZWRTY2hlbWEgPSBzY2hlbWE7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzb2x2ZWRTY2hlbWE7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBpc0FkYXRwZXJGb3JUeXBlKE9iamVjdCB0eXBlKQotICB7Ci0gICAgcmV0dXJuIHR5cGUgPT0gWFNEU2NoZW1hTG9jYXRvci5jbGFzczsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLmh0bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUyMmRlMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vLi4vLi4vL2FwaXN0eWxlcy5jc3MiIHR5cGU9InRleHQvY3NzIj4KLTx0aXRsZT5XU0RMIE1vZGVsIEFQSSBPdmVydmlldzwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuCi0JCTwvcD4KLTx0YWJsZSB3aWR0aD0iNTAwIj4KLTx0cj4KLTx0ZD4KLTxwPlRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byBsb2FkLCBtb2RpZnksIGFuZCBzYXZlIFdTREwgMS4xIGRvY3VtZW50cy4KLQkJPC9wPgotPC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLnhtbCBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYTViYTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08aHRtbD4KLQk8aGVhZD4KLQkJPG1ldGEKLQkJCW5hbWU9InJvb3QiCi0JCi0JCQljb250ZW50PSIuLi8uLi8uLi8uLi8uLi8uLi8iIC8+Ci0JCTx0aXRsZT5XU0RMIE1vZGVsIEFQSSBPdmVydmlldzwvdGl0bGU+Ci0JPC9oZWFkPgotCi0JPGJvZHk+Ci0JCTxhYnN0cmFjdD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLgotCQk8L2Fic3RyYWN0PgotCQk8cD5UaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gbG9hZCwgbW9kaWZ5LCBhbmQgc2F2ZSBXU0RMIDEuMSBkb2N1bWVudHMuCi0JCTwvcD4gCi0JPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDFlYjdkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLQotLyoqCi0gKiA8cD4KLSAqIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvCi0gKiBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sKLSAqIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuCi0gKiAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLgotICogPC9wPgotICogQHNpbmNlIDEuMAotICovCi1wdWJsaWMgaW50ZXJmYWNlIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeQotewotICBFeHRlbnNpYmlsaXR5RWxlbWVudCBjcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudChTdHJpbmcgbmFtZXNwYWNlLCBTdHJpbmcgbG9jYWxOYW1lKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MjBiODcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw7Ci0KLQotLyoqCi0gKiA8cD4KLSAqIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvCi0gKiBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sKLSAqIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuCi0gKiAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLgotICogPC9wPgotICogQHNpbmNlIDEuMAotICovCi1wdWJsaWMgaW50ZXJmYWNlIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Ci17Ci0gIHB1YmxpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShTdHJpbmcgbmFtZXNwYWNlLCBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkgZmFjdG9yeSk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc2NDVhNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzc5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDsKLQotCi1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotCi0KLS8qKgotICogVGhpcyBjbGFzcyBkZWZpbmVzIGNvbnN0YW50cyBmb3IgV1NETCBlbGVtZW50IHRhZ3MgYW5kIHJlbGV2YW50IG5hbWVzcGFjZXMuCi0gKiBAc2luY2UgMS4wCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMQ29uc3RhbnRzCi17Ci0gIC8qKgotICAgKiBUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImJpbmRpbmciPC9jb2RlPi4KLSAgICogQHNlZSAjZ2V0RWxlbWVudFRhZyhpbnQpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQklORElORyA9IDA7Ci0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iZGVmaW5pdGlvbnMiPC9jb2RlPi4KLSAgICogQHNlZSAjZ2V0RWxlbWVudFRhZyhpbnQpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVGSU5JVElPTiA9IDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iZG9jdW1lbnRhdGlvbiI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRFbGVtZW50VGFnKGludCkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBET0NVTUVOVEFUSU9OID0gMjsKLQotICAvKioKLSAgICogVGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJmYXVsdCI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRFbGVtZW50VGFnKGludCkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGQVVMVCA9IDM7Ci0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iaW1wb3J0IjwvY29kZT4uCi0gICAqIEBzZWUgI2dldEVsZW1lbnRUYWcoaW50KS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElNUE9SVCA9IDQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iaW5wdXQiPC9jb2RlPi4KLSAgICogQHNlZSAjZ2V0RWxlbWVudFRhZyhpbnQpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5QVVQgPSA1OwotCi0gIC8qKgotICAgKiBUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+Im1lc3NhZ2UiPC9jb2RlPi4KLSAgICogQHNlZSAjZ2V0RWxlbWVudFRhZyhpbnQpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUVTU0FHRSA9IDY7Ci0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ib3BlcmF0aW9uIjwvY29kZT4uCi0gICAqIEBzZWUgI2dldEVsZW1lbnRUYWcoaW50KS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9QRVJBVElPTiA9IDc7Ci0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ib3V0cHV0IjwvY29kZT4uCi0gICAqIEBzZWUgI2dldEVsZW1lbnRUYWcoaW50KS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9VVFBVVCA9IDg7Ci0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icGFydCI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRFbGVtZW50VGFnKGludCkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJUID0gOTsKLQotICAvKioKLSAgICogVGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJwb3J0IjwvY29kZT4uCi0gICAqIEBzZWUgI2dldEVsZW1lbnRUYWcoaW50KS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBPUlQgPSAxMDsKLQotICAvKioKLSAgICogVGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJwb3J0VHlwZSI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRFbGVtZW50VGFnKGludCkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQT1JUX1RZUEUgPSAxMTsKLQotICAvKioKLSAgICogVGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJzZXJ2aWNlIjwvY29kZT4uCi0gICAqIEBzZWUgI2dldEVsZW1lbnRUYWcoaW50KS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFUlZJQ0UgPSAxMjsKLQotICAvKioKLSAgICogVGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJ0eXBlcyI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRFbGVtZW50VGFnKGludCkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFUyA9IDEzOwotCi0gIC8qKgotICAgKiBUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImJpbmRpbmciPC9jb2RlPi4KLSAgICogQHNlZSAjbm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCSU5ESU5HX0VMRU1FTlRfVEFHID0gImJpbmRpbmciOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iZGVmaW5pdGlvbnMiPC9jb2RlPi4KLSAgICogQHNlZSAjbm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZJTklUSU9OX0VMRU1FTlRfVEFHID0gImRlZmluaXRpb25zIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImRvY3VtZW50YXRpb24iPC9jb2RlPi4KLSAgICogQHNlZSAjbm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBET0NVTUVOVEFUSU9OX0VMRU1FTlRfVEFHID0gImRvY3VtZW50YXRpb24iOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iZmF1bHQiPC9jb2RlPi4KLSAgICogQHNlZSAjbm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGQVVMVF9FTEVNRU5UX1RBRyA9ICJmYXVsdCI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJpbXBvcnQiPC9jb2RlPi4KLSAgICogQHNlZSAjbm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJTVBPUlRfRUxFTUVOVF9UQUcgPSAiaW1wb3J0IjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImlucHV0IjwvY29kZT4uCi0gICAqIEBzZWUgI25vZGVUeXBlKFN0cmluZyBsb2NhbE5hbWUpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5QVVRfRUxFTUVOVF9UQUcgPSAiaW5wdXQiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ibWVzc2FnZSI8L2NvZGU+LgotICAgKiBAc2VlICNub2RlVHlwZShTdHJpbmcgbG9jYWxOYW1lKS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1FU1NBR0VfRUxFTUVOVF9UQUcgPSAibWVzc2FnZSI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJvcGVyYXRpb24iPC9jb2RlPi4KLSAgICogQHNlZSAjbm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUEVSQVRJT05fRUxFTUVOVF9UQUcgPSAib3BlcmF0aW9uIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+Im91dHB1dCI8L2NvZGU+LgotICAgKiBAc2VlICNub2RlVHlwZShTdHJpbmcgbG9jYWxOYW1lKS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9VVFBVVF9FTEVNRU5UX1RBRyA9ICJvdXRwdXQiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icGFydCI8L2NvZGU+LgotICAgKiBAc2VlICNub2RlVHlwZShTdHJpbmcgbG9jYWxOYW1lKS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUlRfRUxFTUVOVF9UQUcgPSAicGFydCI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJwb3J0IjwvY29kZT4uCi0gICAqIEBzZWUgI25vZGVUeXBlKFN0cmluZyBsb2NhbE5hbWUpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9SVF9FTEVNRU5UX1RBRyA9ICJwb3J0IjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InBvcnRUeXBlIjwvY29kZT4uCi0gICAqIEBzZWUgI25vZGVUeXBlKFN0cmluZyBsb2NhbE5hbWUpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9SVF9UWVBFX0VMRU1FTlRfVEFHID0gInBvcnRUeXBlIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InNlcnZpY2UiPC9jb2RlPi4KLSAgICogQHNlZSAjbm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVJWSUNFX0VMRU1FTlRfVEFHID0gInNlcnZpY2UiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4idHlwZXMiPC9jb2RlPi4KLSAgICogQHNlZSAjbm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFU19FTEVNRU5UX1RBRyA9ICJ0eXBlcyI7IC8vJE5PTi1OTFMtMSQKLQotICAvLyBjb21tb24KLQotICAvKioKLSAgICogVGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4ibmFtZSI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9BVFRSSUJVVEUgPSAibmFtZSI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4ibWVzc2FnZSI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVTU0FHRV9BVFRSSUJVVEUgPSAibWVzc2FnZSI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4iYmluZGluZyI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQklORElOR19BVFRSSUJVVEUgPSAiYmluZGluZyI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4idHlwZSI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9BVFRSSUJVVEUgPSAidHlwZSI7IC8vJE5PTi1OTFMtMSQKLQotICAvLyBkZWZpbml0aW9ucwotCi0gIC8qKgotICAgKiBUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJlbmNvZGluZyI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLgotICAgKi8KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgRU5DT0RJTkdfQVRUUklCVVRFID0gImVuY29kaW5nIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJ0YXJnZXROYW1lc3BhY2UiPC9jb2RlPi4KLSAgICogQHNlZSAjZ2V0QXR0cmlidXRlKEVsZW1lbnQsU3RyaW5nKS4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFRBUkdFVE5BTUVTUEFDRV9BVFRSSUJVVEUgPSAidGFyZ2V0TmFtZXNwYWNlIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8vIGJpbmRpbmcKLQotICAvKioKLSAgICogVGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4icmVzb3VyY2VVUkkiPC9jb2RlPi4KLSAgICogQHNlZSAjZ2V0QXR0cmlidXRlKEVsZW1lbnQsU3RyaW5nKS4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFJFU09VUkNFX1VSSV9BVFRSSUJVVEUgPSAicmVzb3VyY2VVUkkiOyAvLyROT04tTkxTLTEkCi0KLSAgLy8gcGFydAotCi0gIC8qKgotICAgKiBUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJlbGVtZW50IjwvY29kZT4uCi0gICAqIEBzZWUgI2dldEF0dHJpYnV0ZShFbGVtZW50LFN0cmluZykuCi0gICAqLwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBFTEVNRU5UX0FUVFJJQlVURSA9ICJlbGVtZW50IjsgLy8kTk9OLU5MUy0xJAotCi0gIC8vIGltcG9ydAotCi0gIC8qKgotICAgKiBUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJsb2NhdGlvbiI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLgotICAgKi8KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTE9DQVRJT05fQVRUUklCVVRFID0gImxvY2F0aW9uIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8vIG9wZXJhdGlvbgotCi0gIC8qKgotICAgKiBUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJwYXJhbWV0ZXJPcmRlciI8L2NvZGU+LgotICAgKiBAc2VlICNnZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLgotICAgKi8KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgUEFSQU1FVEVSX09SREVSX0FUVFJJQlVURSA9ICJwYXJhbWV0ZXJPcmRlciI7IC8vJE5PTi1OTFMtMSQKLSAgCi0gIC8qKgotICAgKiBUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJuYW1lc3BhY2UiPC9jb2RlPi4KLSAgICogQHNlZSAjZ2V0QXR0cmlidXRlKEVsZW1lbnQsU3RyaW5nKS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVTUEFDRV9BVFRSSUJVVEUgPSAibmFtZXNwYWNlIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgdmFsdWUgPGNvZGU+Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIjwvY29kZT4uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXU0RMX05BTUVTUEFDRV9VUkkgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSB2YWx1ZSA8Y29kZT4iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPC9jb2RlPi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFhTRF9OQU1FU1BBQ0VfVVJJID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgdmFsdWUgPGNvZGU+Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWE1MU2NoZW1hIjwvY29kZT4uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0hFTUFfRk9SX1NDSEVNQV9VUklfMTk5OSA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hNTFNjaGVtYSI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIHZhbHVlIDxjb2RlPiJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzEwL1hNTFNjaGVtYSI8L2NvZGU+LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDBfMTAgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8xMC9YTUxTY2hlbWEiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSB2YWx1ZSA8Y29kZT4iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPC9jb2RlPi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIjsgLy8kTk9OLU5MUy0xJAotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIEVMRU1FTlRfVEFHUyA9IG5ldyBTdHJpbmcgW117Ci0gICAgQklORElOR19FTEVNRU5UX1RBRywKLSAgICBERUZJTklUSU9OX0VMRU1FTlRfVEFHLAotICAgIERPQ1VNRU5UQVRJT05fRUxFTUVOVF9UQUcsCi0gICAgRkFVTFRfRUxFTUVOVF9UQUcsCi0gICAgSU1QT1JUX0VMRU1FTlRfVEFHLAotICAgIElOUFVUX0VMRU1FTlRfVEFHLAotICAgIE1FU1NBR0VfRUxFTUVOVF9UQUcsCi0gICAgT1BFUkFUSU9OX0VMRU1FTlRfVEFHLAotICAgIE9VVFBVVF9FTEVNRU5UX1RBRywKLSAgICBQQVJUX0VMRU1FTlRfVEFHLAotICAgIFBPUlRfRUxFTUVOVF9UQUcsCi0gICAgUE9SVF9UWVBFX0VMRU1FTlRfVEFHLAotICAgIFNFUlZJQ0VfRUxFTUVOVF9UQUcsCi0gICAgVFlQRVNfRUxFTUVOVF9UQUcgfTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIFN0cmluZyBuYW1lIG9mIGVsZW1lbnQgdGFnIGdpdmVuIHRoZSBub2RlVHlwZS4KLSAgICogQHBhcmFtIG5vZGVUeXBlIGEgY29uc3RhbnQgZGVmaW5lZCBpbiBXU0RMQ29uc3RhbnRzLgotICAgKiBAcmV0dXJuIGVsZW1lbnQgdGFnLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0RWxlbWVudFRhZyhpbnQgbm9kZVR5cGUpCi0gIHsKLSAgICByZXR1cm4gRUxFTUVOVF9UQUdTW25vZGVUeXBlXTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbm9kZSB0eXBlIGdpdmVuIHRoZSBTdHJpbmcgbmFtZSBvZiBlbGVtZW50IHRhZy4KLSAgICogQHBhcmFtIGxvY2FsTmFtZSB0aGUgbG9jYWwgbmFtZSBvZiBlbGVtZW50IHRhZy4KLSAgICogQHJldHVybiBhIG5vZGUgdHlwZSBkZWZpbmVkIGluIFdTRExDb25zdGFudHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBub2RlVHlwZShTdHJpbmcgbG9jYWxOYW1lKQotICB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBFTEVNRU5UX1RBR1MubGVuZ3RoOyArK2kpCi0gICAgewotICAgICAgaWYgKGxvY2FsTmFtZS5lcXVhbHMoRUxFTUVOVF9UQUdTW2ldKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiAtMTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbm9kZSB0eXBlIGRlZmluZWQgaW4gV1NETENvbnN0YW50cyBnaXZlbiB0aGUgRE9NIG5vZGUuCi0gICAqIEBwYXJhbSBub2RlIGEgRE9NIG5vZGUuCi0gICAqIEByZXR1cm4gYSBub2RlIHR5cGUgZGVmaW5lZCBpbiBXU0RMQ29uc3RhbnRzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgbm9kZVR5cGUoTm9kZSBub2RlKQotICB7Ci0gICAgcmV0dXJuIGlzV1NETE5hbWVzcGFjZShub2RlLmdldE5hbWVzcGFjZVVSSSgpKSA/IG5vZGVUeXBlKG5vZGUuZ2V0TG9jYWxOYW1lKCkpIDogLTE7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBuYW1lc3BhY2UgaXMgdGhlIFdTREwgbmFtZXNwYWNlIG9yIG5vdC4KLSAgICogQHBhcmFtIG5hbWVzcGFjZSBhIG5hbWVzcGFjZS4KLSAgICogQHJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBuYW1lc3BhY2UgaXMgdGhlIFdTREwgbmFtZXNwYWNlIG9yIG5vdC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1dTRExOYW1lc3BhY2UoU3RyaW5nIG5hbWVzcGFjZSkKLSAgewotICAgIHJldHVybiBXU0RMX05BTUVTUEFDRV9VUkkuZXF1YWxzKG5hbWVzcGFjZSk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0cnVlIGlmIG5hbWVzcGFjZTEgZXF1YWxzIHRvIG5hbWVzcGFjZTIuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2UxIGEgbmFtZXNwYWNlLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlMiBhIG5hbWVzcGFjZS4KLSAgICogQHJldHVybiB0cnVlIGlmIG5hbWVzcGFjZTEgZXF1YWxzIHRvIG5hbWVzcGFjZTIuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNNYXRjaGluZ05hbWVzcGFjZShTdHJpbmcgbmFtZXNwYWNlMSwgU3RyaW5nIG5hbWVzcGFjZTIpCi0gIHsKLSAgICByZXR1cm4gKG5hbWVzcGFjZTEgPT0gbnVsbCA/IG5hbWVzcGFjZTIgPT0gbnVsbCA6IG5hbWVzcGFjZTEuZXF1YWxzKG5hbWVzcGFjZTIpKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIGFuIGF0dHJpYnV0ZSB2YWx1ZSBnaXZlbiB0aGUgYXR0cmlidXRlTmFtZSBpbiB0aGUgZWxlbWVudC4KLSAgICogQHBhcmFtIGVsZW1lbnQgYSBET00gZWxlbWVudCB0byBzZWFyY2ggZm9yIHRoZSBhdHRyaWJ1dGUgZnJvbS4KLSAgICogQHBhcmFtIGF0dHJpYnV0ZU5hbWUgYW4gYXR0cmlidXRlIHRvIGZpbmQgZnJvbSB0aGUgZWxlbWVudC4KLSAgICogQHJldHVybiBhbiBhdHRyaWJ1dGUgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBdHRyaWJ1dGUoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgYXR0cmlidXRlTmFtZSkKLSAgewotICAgIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSA/IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIDogbnVsbDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUzYjIwNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotCi0KLS8qKgotICogR2VuZXJhdGVkIGJ5IHRoZSBXU0RMIG1vZGVsIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gbWVjaGFuaXNtcy4KLSAqIAotICogPHA+Ci0gKiA8Yj5Ob3RlOjwvYj4gVGhpcyBjbGFzcy9pbnRlcmZhY2UgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsCi0gKiB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nCi0gKiBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjawotICogZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMKLSAqIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuCi0gKiA8L3A+Ci0gKiAKLSAqIFRoaXMgaW50ZXJmYWNlIGlzIGEgY2FuZGlkYXRlIHRvIGJlY29taW5nIGEgZmlyc3QgY2xhc3MgV1NETCBtb2RlbCBvYmplY3QuCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgV1NETERpYWdub3N0aWMgZXh0ZW5kcyBSZXNvdXJjZS5EaWFnbm9zdGljCi17Ci0gIC8qKgotICAgKiBQcm92aWRlcyB0aGlzIGRpYWdub3N0aWMncyBzZXZlcml0eS4KLSAgICogCi0gICAqIEByZXR1cm4gYW4gWFNERGlhZ25vc3RpY1NldmVyaXR5Ci0gICAqLwotICBXU0RMRGlhZ25vc3RpY1NldmVyaXR5IGdldFNldmVyaXR5KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhpcyBkaWFnbm9zdGljJ3Mgc2V2ZXJpdHkuCi0gICAqIAotICAgKiBAcGFyYW0gc2V2ZXJpdHkKLSAgICogICAgICAgICAgdGhlIG5ldyBkaWFnbm9zdGljIHNldmVyaXR5LgotICAgKi8KLSAgdm9pZCBzZXRTZXZlcml0eShXU0RMRGlhZ25vc3RpY1NldmVyaXR5IHNldmVyaXR5KTsKLQotICAvKioKLSAgICogR2V0cyB0aGUgb3JpZ2luYWwgbWVzc2FnZSBrZXkuCi0gICAqIAotICAgKiBAcmV0dXJuIGEgU3RyaW5nIHdpdGggdGhlIG9yaWdpbmFsIG1lc3NhZ2Uga2V5LgotICAgKi8KLSAgU3RyaW5nIGdldEtleSgpOwotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGtleS4KLSAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgbWVzc2FnZSBrZXkgdmFsdWUuCi0gICAqLwotICB2b2lkIHNldEtleShTdHJpbmcgdmFsdWUpOwotCi0gIC8qKgotICAgKiBHZXRzIHRoZSBET00gTm9kZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBET00gbm9kZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzCi0gICAqLwotICBOb2RlIGdldE5vZGUoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgRE9NIE5vZGUgd2hlcmUgdGhlIGVycm9yIG9jY3VycwotICAgKiBAcGFyYW0gbm9kZQotICAgKi8KLSAgdm9pZCBzZXROb2RlKE5vZGUgbm9kZSk7Ci0KLSAgLyoqCi0gICAqIHJldHVybnMgdGhlIEVsZW1lbnQgd2hlcmUgdGhlIGVycm9yIG9jY3VycwotICAgKiBAcmV0dXJuIC0gT2JqZWN0IG9mIHR5cGUgWFNEQ29uY3JldGVDb21wb25lbnQgaWYgdGhlIGVycm9yCi0gICAqIAkJCWNvbWVzIGZyb20gdGhlIGlubGluZSBzY2hlbWEgb2YgYSB3c2RsIGZpbGUKLSAgICogCQkgLSBvYmplY3Qgb2YgdHlwZSBXU0RMRWxlbWVudCBpZiB0aGUgZXJyb3IgY29tZXMgZnJvbQotICAgKiAJCQlvdGhlciBwYXJ0IG9mIHRoZSB3c2RsIGZpbGUKLSAgICovCi0gIE9iamVjdCBnZXRDb250YWluZXIoKTsKLQotICAvKioKLSAgICogU2V0cyB0aGUgQ29udGFpbmVyIG9mIHRoZSBlcnJvcgotICAgKiBAcGFyYW0gY29udGFpbmVyCi0gICAqIAkJCWFuIE9iamVjdCBvZiBlaXRoZXIgWFNEQ29uY3JldGVDb21wb25lbnQgb3IgV1NETEVsZW1lbnQgCi0gICAqLwotICB2b2lkIHNldENvbnRhaW5lcihPYmplY3QgY29udGFpbmVyKTsKLQotICAvKioKLSAgICogUmV0dXJucyBhIGxpc3Qgd2l0aCB0aGUgb3JpZ2luYWwgbWVzc2FnZSBwYXJhbWV0ZXJzIGFzIFN0cmluZ3MuCi0gICAqIEByZXR1cm4gIGEgbGlzdCB3aXRoIHRoZSBvcmlnaW5hbCBtZXNzYWdlIHBhcmFtZXRlcnMgYXMgU3RyaW5ncy4KLSAgICovCi0gIEVMaXN0IGdldFN1YnN0aXR1dGlvbnMoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JlMGYxNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU9iamVjdEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRERpYWdub3N0aWM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRERpYWdub3N0aWNTZXZlcml0eTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotCi0KLS8qKgotICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV1NETERpYWdub3N0aWMgaW50ZXJmYWNlLiBUaGlzIGNsYXNzIGlzIGJhc2VkCi0gKiBvbiBYU0REaWFnbm9zdGljSW1wbAotICogPHA+Ci0gKiA8Yj5Ob3RlOjwvYj4gVGhpcyBjbGFzcy9pbnRlcmZhY2UgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsCi0gKiB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nCi0gKiBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjawotICogZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMKLSAqIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuCi0gKiA8L3A+Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMRGlhZ25vc3RpY0ltcGwgZXh0ZW5kcyBFT2JqZWN0SW1wbCBpbXBsZW1lbnRzIFdTRExEaWFnbm9zdGljCi17Ci0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0Q29sdW1uKCkgPGVtPkNvbHVtbjwvZW0+fScKLSAgICogYXR0cmlidXRlLgotICAgKiAKLSAgICogQHNlZSAjZ2V0Q29sdW1uKCkKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IENPTFVNTl9FREVGQVVMVCA9IDE7Ci0KLSAgLyoqCi0gICAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMaW5lKCkgPGVtPkxpbmU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogCi0gICAqIAotICAgKiBAc2VlICNnZXRMaW5lKCkKLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IExJTkVfRURFRkFVTFQgPSAxOwotCi0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TG9jYXRpb25VUkkoKSA8ZW0+TG9jYXRpb24gVVJJPC9lbT59JwotICAgKiBhdHRyaWJ1dGUuIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+IDwhLS0gZW5kLXVzZXItZG9jIC0tPgotICAgKiAKLSAgICogQHNlZSAjZ2V0TG9jYXRpb25VUkkoKQotICAgKi8KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9DQVRJT05fVVJJX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE1lc3NhZ2UoKSA8ZW0+TWVzc2FnZTwvZW0+fScKLSAgICogYXR0cmlidXRlLgotICAgKiAKLSAgICogQHNlZSAjZ2V0TWVzc2FnZSgpCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBNRVNTQUdFX0VERUZBVUxUID0gbnVsbDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFNldmVyaXR5KCkgPGVtPlNldmVyaXR5PC9lbT59JwotICAgKiBhdHRyaWJ1dGUuCi0gICAqIAotICAgKiBAc2VlICNnZXRTZXZlcml0eSgpCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFdTRExEaWFnbm9zdGljU2V2ZXJpdHkgU0VWRVJJVFlfRURFRkFVTFQgPSBXU0RMRGlhZ25vc3RpY1NldmVyaXR5LkZBVEFMX0xJVEVSQUw7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldENvbHVtbigpIDxlbT5Db2x1bW48L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogCi0gICAqIAotICAgKiBAc2VlICNnZXRDb2x1bW4oKQotICAgKiAKLSAgICogQG9yZGVyZWQKLSAgICovCi0gIHByb3RlY3RlZCBpbnQgY29sdW1uID0gQ09MVU1OX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMaW5lKCkgPGVtPkxpbmU8L2VtPn0nIGF0dHJpYnV0ZS4KLSAgICogCi0gICAqIAotICAgKiBAc2VlICNnZXRMaW5lKCkKLSAgICovCi0gIHByb3RlY3RlZCBpbnQgbGluZSA9IExJTkVfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldExvY2F0aW9uVVJJKCkgPGVtPkxvY2F0aW9uIFVSSTwvZW0+fScKLSAgICogYXR0cmlidXRlLiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAgICogCi0gICAqIEBzZWUgI2dldExvY2F0aW9uVVJJKCkKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgbG9jYXRpb25VUkkgPSBMT0NBVElPTl9VUklfRURFRkFVTFQ7Ci0KLSAgLyoqCi0gICAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE1lc3NhZ2UoKSA8ZW0+TWVzc2FnZTwvZW0+fScKLSAgICogYXR0cmlidXRlLgotICAgKiAKLSAgICogQHNlZSAjZ2V0TWVzc2FnZSgpCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIG1lc3NhZ2UgPSBNRVNTQUdFX0VERUZBVUxUOwotCi0gIC8qKgotICAgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRTZXZlcml0eSgpIDxlbT5TZXZlcml0eTwvZW0+fScKLSAgICogYXR0cmlidXRlLgotICAgKiAKLSAgICogQHNlZSAjZ2V0U2V2ZXJpdHkoKQotICAgKi8KLSAgcHJvdGVjdGVkIFdTRExEaWFnbm9zdGljU2V2ZXJpdHkgc2V2ZXJpdHkgPSBTRVZFUklUWV9FREVGQVVMVDsKLQotICAvKioKLSAgICogVGhlIG9yaWdpbmFsIG1lc3NhZ2Uga2V5LgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBrZXk7Ci0KLSAgLyoqCi0gICAqIFRoZSBvcmlnaW5hbCBtZXNzYWdlIHBhcmFtZXRlcnMuCi0gICAqLwotICBwcm90ZWN0ZWQgRUxpc3Qgc3Vic3RpdHV0aW9uczsKLQotICAvKioKLSAgICogVGhlIE5vZGUgd2hlcmUgdGhlIGVycm9yIG9jY3VycwotICAgKi8KLSAgcHJvdGVjdGVkIE5vZGUgbm9kZTsKLQotICAvKioKLSAgICogVGhlIFdTRExFbGVtZW50IG9yIFhTRENvbmNyZXRlQ29tcG9uZW50IG9iamVjdCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzCi0gICAqLwotICBwcm90ZWN0ZWQgT2JqZWN0IGNvbnRhaW5lcjsKLQotICAvKioKLSAgICogRGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgICovCi0gIHB1YmxpYyBXU0RMRGlhZ25vc3RpY0ltcGwoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiBXcmFwcyBhbiBYU0QgZGlhZ25vc3RpYyBpbnRvIGEgV1NETCBkaWFnbm9zdGljLiBVc2VkIHRvIHJlcG9ydCBwcm9ibGVtcyBpbgotICAgKiBpbmxpbmUgc2NoZW1hcy4KLSAgICogCi0gICAqIEBwYXJhbSB4c2REaWFnbm9zdGljCi0gICAqICAgICAgICAgIHRoZSBYU0QgZGlhZ25vc3RpYyBvYmplY3QgdG8gd3JhcC4gTXVzdCBub3QgYmUgbnVsbC4KLSAgICovCi0gIHB1YmxpYyBXU0RMRGlhZ25vc3RpY0ltcGwoWFNERGlhZ25vc3RpYyB4c2REaWFnbm9zdGljKQotICB7Ci0gICAgdGhpcygpOwotICAgIHNldE1lc3NhZ2UoeHNkRGlhZ25vc3RpYy5nZXRNZXNzYWdlKCkpOwotICAgIHNldFNldmVyaXR5KGdldFNldmVyaXR5KHhzZERpYWdub3N0aWMuZ2V0U2V2ZXJpdHkoKSkpOwotICAgIHNldExpbmUoeHNkRGlhZ25vc3RpYy5nZXRMaW5lKCkpOwotICAgIHNldENvbHVtbih4c2REaWFnbm9zdGljLmdldENvbHVtbigpKTsKLSAgICBzZXROb2RlKHhzZERpYWdub3N0aWMuZ2V0Tm9kZSgpKTsKLSAgICBzZXRDb250YWluZXIoeHNkRGlhZ25vc3RpYy5nZXRDb250YWluZXIoKSk7Ci0gICAgc2V0TG9jYXRpb24oeHNkRGlhZ25vc3RpYy5nZXRMb2NhdGlvbigpKTsKLSAgICBzZXRLZXkoeHNkRGlhZ25vc3RpYy5nZXRLZXkoKSk7Ci0gICAgZ2V0U3Vic3RpdHV0aW9ucygpLmFkZEFsbCh4c2REaWFnbm9zdGljLmdldFN1YnN0aXR1dGlvbnMoKSk7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZSREaWFnbm9zdGljI2dldENvbHVtbigpCi0gICAqLwotICBwdWJsaWMgaW50IGdldENvbHVtbigpCi0gIHsKLSAgICByZXR1cm4gY29sdW1uOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2UkRGlhZ25vc3RpYyNnZXRMaW5lKCkKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0TGluZSgpCi0gIHsKLSAgICByZXR1cm4gbGluZTsKLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlJERpYWdub3N0aWMjZ2V0TG9jYXRpb24oKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gbG9jYXRpb25VUkk7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZSREaWFnbm9zdGljI2dldE1lc3NhZ2UoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWMjZ2V0U2V2ZXJpdHkoKQotICAgKi8KLSAgcHVibGljIFdTRExEaWFnbm9zdGljU2V2ZXJpdHkgZ2V0U2V2ZXJpdHkoKQotICB7Ci0gICAgcmV0dXJuIHNldmVyaXR5OwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnZlcnRzIGFuIFhTRCBkaWFnbm9zdGljIHNldmVyaXR5IGxldmVsIGludG8gYSBXU0RMIGRpYWdub3N0aWMgc2V2ZXJpdHkKLSAgICogbGV2ZWwuCi0gICAqIAotICAgKiBAcGFyYW0geHNkRGlhZ25vc3RpY1NldmVyaXR5Ci0gICAqICAgICAgICAgIHRoZSBzb3VyY2UgWFNEIGRpYWdub3N0aWMgc2V2ZXJpdHkuCi0gICAqIEByZXR1cm4gdGhlIGVxdWl2YWxlbnQgV1NETCBkaWFnbm9zdGljIHNldmVyaXR5LgotICAgKi8KLSAgcHJpdmF0ZSBXU0RMRGlhZ25vc3RpY1NldmVyaXR5IGdldFNldmVyaXR5KFhTRERpYWdub3N0aWNTZXZlcml0eSB4c2REaWFnbm9zdGljU2V2ZXJpdHkpCi0gIHsKLSAgICBzd2l0Y2ggKHhzZERpYWdub3N0aWNTZXZlcml0eS5nZXRWYWx1ZSgpKQotICAgIHsKLSAgICAgIGNhc2UgWFNERGlhZ25vc3RpY1NldmVyaXR5LkZBVEFMOgotICAgICAgcmV0dXJuIFdTRExEaWFnbm9zdGljU2V2ZXJpdHkuRkFUQUxfTElURVJBTDsKLSAgICAgIGNhc2UgWFNERGlhZ25vc3RpY1NldmVyaXR5LkVSUk9SOgotICAgICAgcmV0dXJuIFdTRExEaWFnbm9zdGljU2V2ZXJpdHkuRVJST1JfTElURVJBTDsKLSAgICAgIGNhc2UgWFNERGlhZ25vc3RpY1NldmVyaXR5LldBUk5JTkc6Ci0gICAgICByZXR1cm4gV1NETERpYWdub3N0aWNTZXZlcml0eS5XQVJOSU5HX0xJVEVSQUw7Ci0gICAgICBjYXNlIFhTRERpYWdub3N0aWNTZXZlcml0eS5JTkZPUk1BVElPTjoKLSAgICAgIHJldHVybiBXU0RMRGlhZ25vc3RpY1NldmVyaXR5LklORk9STUFUSU9OX0xJVEVSQUw7Ci0gICAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIFNFVkVSSVRZX0VERUZBVUxUOwotfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBuZXcgdmFsdWUgb2YgdGhlIGNvbHVtbiBhdHRyaWJ1dGUuCi0gICAqIAotICAgKiBAcGFyYW0gbmV3Q29sdW1uCi0gICAqICAgICAgICAgIHRoZSBuZXcgY29sdW1uIHZhbHVlLgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q29sdW1uKGludCBuZXdDb2x1bW4pCi0gIHsKLSAgICBjb2x1bW4gPSBuZXdDb2x1bW47Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBzZXRMaW5lKGludCBuZXdMaW5lKQotICB7Ci0gICAgbGluZSA9IG5ld0xpbmU7Ci0gIH0KLQotICAvKioKLSAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGxvYWN0aW9uIGF0dHJpYnV0ZS4KLSAgICogCi0gICAqIEBwYXJhbSBsb2NhdGlvbgotICAgKiAgICAgICAgICBhIFN0cmluZyB3aXRoIHRoZSBuZXcgdmFsdWUgZm9yIHRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKFN0cmluZyBsb2NhdGlvbikKLSAgewotICAgIGxvY2F0aW9uVVJJID0gbG9jYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogU2V0cyBhIG5ldyB2YWx1ZSBmb3IgdGhlIG1lc3NhZ2UgYXR0cmlidXRlLgotICAgKiAKLSAgICogQHBhcmFtIG5ld01lc3NhZ2UKLSAgICogICAgICAgICAgYSBTdHJpbmcgd2l0aCB0aGUgbmV3IG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNZXNzYWdlKFN0cmluZyBuZXdNZXNzYWdlKQotICB7Ci0gICAgbWVzc2FnZSA9IG5ld01lc3NhZ2U7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpYyNzZXRTZXZlcml0eShvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljU2V2ZXJpdHkpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZXZlcml0eShXU0RMRGlhZ25vc3RpY1NldmVyaXR5IG5ld1NldmVyaXR5KQotICB7Ci0gICAgc2V2ZXJpdHkgPSBuZXdTZXZlcml0eSA9PSBudWxsID8gU0VWRVJJVFlfRURFRkFVTFQgOiBuZXdTZXZlcml0eTsKLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpYyNnZXRLZXkoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRLZXkoKQotICB7Ci0gICAgcmV0dXJuIGtleTsKLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljI3NldEtleShqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0S2V5KFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGtleSA9IHZhbHVlOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWMjZ2V0U3Vic3RpdHV0aW9ucygpCi0gICAqLwotICBwdWJsaWMgRUxpc3QgZ2V0U3Vic3RpdHV0aW9ucygpCi0gIHsKLSAgICBpZiAoc3Vic3RpdHV0aW9ucyA9PSBudWxsKQotICAgIHsKLSAgICAgIHN1YnN0aXR1dGlvbnMgPSBuZXcgQmFzaWNFTGlzdCgpOwotICAgIH0KLSAgICByZXR1cm4gc3Vic3RpdHV0aW9uczsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljI2dldE5vZGUoKQotICAgKi8KLSAgcHVibGljIE5vZGUgZ2V0Tm9kZSgpCi0gIHsKLSAgICByZXR1cm4gbm9kZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljI3NldE5vZGUob3JnLnczYy5kb20uTm9kZSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE5vZGUoTm9kZSBub2RlKQotICB7Ci0gICAgdGhpcy5ub2RlID0gbm9kZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljI2dldENvbnRhaW5lcigpCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGdldENvbnRhaW5lcigpCi0gIHsKLSAgICByZXR1cm4gY29udGFpbmVyOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWMjc2V0Q29udGFpbmVyKGphdmEubGFuZy5PYmplY3QpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb250YWluZXIoT2JqZWN0IGNvbnRhaW5lcikKLSAgewotICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQyZjgwOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQWJzdHJhY3RFbnVtZXJhdG9yOwotCi0KLS8qKgotICogV1NETCBkaWFnbm9zdGljIHNldmVyaXR5IGxldmVscyB0eXBlIHNhZmUgZW51bWVyYXRpb24uIFRoaXMgY2xhc3MgaXMgc2ltaWxhcgotICogdG8gWFNERGlhZ25vc3RpY1NldmVyaXR5LgotICogPHA+Ci0gKiA8Yj5Ob3RlOjwvYj4gVGhpcyBjbGFzcy9pbnRlcmZhY2UgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsCi0gKiB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nCi0gKiBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjawotICogZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMKLSAqIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuCi0gKiA8L3A+Ci0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBXU0RMRGlhZ25vc3RpY1NldmVyaXR5IGV4dGVuZHMgQWJzdHJhY3RFbnVtZXJhdG9yCi17Ci0gIC8qKgotICAgKiBUaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvYmxlbSBpcyByZWFsbHkgYmFkIGFuZCB0aGF0IGZ1cnRoZXIKLSAgICogcHJvY2Vzc2luZyBpcyBsaWtlbHkgbm90IHBvc3NpYmxlLgotICAgKiAKLSAgICogQHNlZSAjRkFUQUxfTElURVJBTAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkFUQUwgPSAwOwotCi0gIC8qKgotICAgKiBUaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvYmxlbSBpcyBiYWQgYW5kIHRoYXQgdGhlIHNjaGVtYSBpcwotICAgKiBsaWtlbHkgbm90IHN1aXRhYmxlIGZvciB1c2UuCi0gICAqIAotICAgKiBAc2VlICNFUlJPUl9MSVRFUkFMCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFUlJPUiA9IDE7Ci0KLSAgLyoqCi0gICAqIFRoaXMgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwcm9ibGVtIGlzIG5vdCB0b28gYmFkIGFuZCB0aGF0IHRoZQotICAgKiBkZWZpbml0aW9uIGlzIGxpa2VseSBzdWl0YWJsZSBmb3IgdXNlLgotICAgKiAKLSAgICogQHNlZSAjV0FSTklOR19MSVRFUkFMCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBXQVJOSU5HID0gMjsKLQotICAvKioKLSAgICogVGhpcyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIHByb2JsZW0gaXMgb25seSBwb3RlbnRpYWwgYW5kIHRoYXQgdGhlCi0gICAqIGRlZmluaXRpb24gaXMgdmVyeSBsaWtlbHkgc3VpdGFibGUgZm9yIHVzZS4KLSAgICogCi0gICAqIEBzZWUgI0lORk9STUFUSU9OX0xJVEVSQUwKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElORk9STUFUSU9OID0gMzsKLQotICAvKioKLSAgICogVGhlICc8ZW0+PGI+RmF0YWw8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LgotICAgKiAKLSAgICogQHNlZSAjRkFUQUwKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgV1NETERpYWdub3N0aWNTZXZlcml0eSBGQVRBTF9MSVRFUkFMID0gbmV3IFdTRExEaWFnbm9zdGljU2V2ZXJpdHkoRkFUQUwsICJmYXRhbCIsICJmYXRhbCIpOwotCi0gIC8qKgotICAgKiBUaGUgJzxlbT48Yj5FcnJvcjwvYj48L2VtPicgbGl0ZXJhbCBvYmplY3QuCi0gICAqIAotICAgKiBAc2VlICNFUlJPUgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBXU0RMRGlhZ25vc3RpY1NldmVyaXR5IEVSUk9SX0xJVEVSQUwgPSBuZXcgV1NETERpYWdub3N0aWNTZXZlcml0eShFUlJPUiwgImVycm9yIiwgImVycm9yIik7Ci0KLSAgLyoqCi0gICAqIFRoZSAnPGVtPjxiPldhcm5pbmc8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LgotICAgKiAKLSAgICogQHNlZSAjV0FSTklORwotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBXU0RMRGlhZ25vc3RpY1NldmVyaXR5IFdBUk5JTkdfTElURVJBTCA9IG5ldyBXU0RMRGlhZ25vc3RpY1NldmVyaXR5KFdBUk5JTkcsICJ3YXJuaW5nIiwgIndhcm5pbmciKTsKLQotICAvKioKLSAgICogVGhlICc8ZW0+PGI+SW5mb3JtYXRpb248L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LgotICAgKiAKLSAgICogQHNlZSAjSU5GT1JNQVRJT04KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgV1NETERpYWdub3N0aWNTZXZlcml0eSBJTkZPUk1BVElPTl9MSVRFUkFMID0gbmV3IFdTRExEaWFnbm9zdGljU2V2ZXJpdHkoSU5GT1JNQVRJT04sICJpbmZvcm1hdGlvbiIsICJpbmZvcm1hdGlvbiIpOwotCi0gIC8qKgotICAgKiBBbiBhcnJheSBvZiBhbGwgdGhlICc8ZW0+PGI+RGlhZ25vc3RpYyBTZXZlcml0eTwvYj48L2VtPicgZW51bWVyYXRvcnMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBXU0RMRGlhZ25vc3RpY1NldmVyaXR5W10gVkFMVUVTX0FSUkFZID0gbmV3IFdTRExEaWFnbm9zdGljU2V2ZXJpdHkgW117Ci0gICAgRkFUQUxfTElURVJBTCwKLSAgICBFUlJPUl9MSVRFUkFMLAotICAgIFdBUk5JTkdfTElURVJBTCwKLSAgICBJTkZPUk1BVElPTl9MSVRFUkFMLCB9OwotCi0gIC8qKgotICAgKiBBIHB1YmxpYyByZWFkLW9ubHkgbGlzdCBvZiBhbGwgdGhlICc8ZW0+PGI+RGlhZ25vc3RpYyBTZXZlcml0eTwvYj48L2VtPicKLSAgICogZW51bWVyYXRvcnMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIExpc3QgVkFMVUVTID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChBcnJheXMuYXNMaXN0KFZBTFVFU19BUlJBWSkpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSAnPGVtPjxiPkRpYWdub3N0aWMgU2V2ZXJpdHk8L2I+PC9lbT4nIGxpdGVyYWwgd2l0aCB0aGUKLSAgICogc3BlY2lmaWVkIGxpdGVyYWwgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFdTRExEaWFnbm9zdGljU2V2ZXJpdHkgZ2V0KFN0cmluZyBsaXRlcmFsKQotICB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBWQUxVRVNfQVJSQVkubGVuZ3RoOyArK2kpCi0gICAgewotICAgICAgV1NETERpYWdub3N0aWNTZXZlcml0eSByZXN1bHQgPSBWQUxVRVNfQVJSQVlbaV07Ci0gICAgICBpZiAocmVzdWx0LnRvU3RyaW5nKCkuZXF1YWxzKGxpdGVyYWwpKQotICAgICAgewotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSAnPGVtPjxiPkRpYWdub3N0aWMgU2V2ZXJpdHk8L2I+PC9lbT4nIGxpdGVyYWwgd2l0aCB0aGUKLSAgICogc3BlY2lmaWVkIG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFdTRExEaWFnbm9zdGljU2V2ZXJpdHkgZ2V0QnlOYW1lKFN0cmluZyBuYW1lKQotICB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBWQUxVRVNfQVJSQVkubGVuZ3RoOyArK2kpCi0gICAgewotICAgICAgV1NETERpYWdub3N0aWNTZXZlcml0eSByZXN1bHQgPSBWQUxVRVNfQVJSQVlbaV07Ci0gICAgICBpZiAocmVzdWx0LmdldE5hbWUoKS5lcXVhbHMobmFtZSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlICc8ZW0+PGI+RGlhZ25vc3RpYyBTZXZlcml0eTwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZQotICAgKiBzcGVjaWZpZWQgaW50ZWdlciB2YWx1ZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgV1NETERpYWdub3N0aWNTZXZlcml0eSBnZXQoaW50IHZhbHVlKQotICB7Ci0gICAgc3dpdGNoICh2YWx1ZSkKLSAgICB7Ci0gICAgICBjYXNlIEZBVEFMOgotICAgICAgcmV0dXJuIEZBVEFMX0xJVEVSQUw7Ci0gICAgICBjYXNlIEVSUk9SOgotICAgICAgcmV0dXJuIEVSUk9SX0xJVEVSQUw7Ci0gICAgICBjYXNlIFdBUk5JTkc6Ci0gICAgICByZXR1cm4gV0FSTklOR19MSVRFUkFMOwotICAgICAgY2FzZSBJTkZPUk1BVElPTjoKLSAgICAgIHJldHVybiBJTkZPUk1BVElPTl9MSVRFUkFMOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBPbmx5IHRoaXMgY2xhc3MgY2FuIGNvbnN0cnVjdCBpbnN0YW5jZXMuCi0gICAqLwotICBwcml2YXRlIFdTRExEaWFnbm9zdGljU2V2ZXJpdHkoaW50IHZhbHVlLCBTdHJpbmcgbmFtZSwgU3RyaW5nIGxpdGVyYWwpCi0gIHsKLSAgICBzdXBlcih2YWx1ZSwgbmFtZSwgbGl0ZXJhbCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjliZjE5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsOwotCi0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOwotaW1wb3J0IGphdmEudXRpbC5BYnN0cmFjdE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlN0YWNrOwotaW1wb3J0IGphdmEudXRpbC5XZWFrSGFzaE1hcDsKLQotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuU0FYUGFyc2VyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC51dGlsLkRlZmF1bHRKQVhQQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5KQVhQQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5KQVhQUG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5YU0RDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEUGFyc2VyOwotaW1wb3J0IG9yZy53M2MuZG9tLkNEQVRBU2VjdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5Db21tZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5UZXh0OwotaW1wb3J0IG9yZy54bWwuc2F4LkF0dHJpYnV0ZXM7Ci1pbXBvcnQgb3JnLnhtbC5zYXguSW5wdXRTb3VyY2U7Ci1pbXBvcnQgb3JnLnhtbC5zYXguTG9jYXRvcjsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyOwotaW1wb3J0IG9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXI7Ci0KLQotLyoqCi0gKiBUaGUgPGI+U0FYIFBhcnNlcjwvYj4gZm9yIHRoZSBXU0RMIG1vZGVsLiBUaGlzIGNsYXNzJyBtYWluIHJlc3BvbnNpYmlsaXR5IGlzCi0gKiB0byBjb21wdXRlIGxpbmUvY29sdW1uIGluZm9ybWF0aW9uIGZvciBhbGwgZWxlbWVudHMgaW4gdGhlIHNvdXJjZSBYTUwKLSAqIGRvY3VtZW50LiBUaGlzIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiBhIG1hcCBvZiBlYWNoIG5vZGUgdG8gaXRzIHVzZXIgZGF0YS4KLSAqIDxwPgotICogPGI+Tm90ZTo8L2I+IFRoaXMgY2xhc3MvaW50ZXJmYWNlIGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbAotICogdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZwotICogc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sKLSAqIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzCi0gKiBBUEkgd2lsbCBhbG1vc3QgY2VydGFpbmx5IGJlIGJyb2tlbiAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLgotICogPC9wPgotICogCi0gKiBbSVNTVUVdIE1vc3Qgb2YgdGhpcyBjbGFzcycgaW1wbGVtZW50YXRpb24gaXMgYSBjbG9uZSBvZiBYU0RQYXJzZXIuIFRoZXJlIGFyZQotICogcGxhbnMgdG8gd29yayBvbiBjbG9zZWx5IGludGVncmF0aW5nIHRoaXMgY2xhc3MgYW5kIFhTRFBhcnNlciB0byBwcm92aWRlIGZvcgotICogdGhlIG1vc3QgZWZmaWNpZW50IHByb2Nlc3Npbmcgb2YgaW5saW5lIHNjaGVtYXMuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMUGFyc2VyIGV4dGVuZHMgRGVmYXVsdEhhbmRsZXIgaW1wbGVtZW50cyBMZXhpY2FsSGFuZGxlcgotewotICAvKioKLSAgICogVGhlIG5hbWUgb2YgdGhlIHVzZXIgZGF0YSBwYXJ0IGhvbGRpbmcgZW5kIGNvbHVtbiBsb2NhdGlvbiBvZiBhbiBlbGVtZW50LgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVORF9DT0xVTU4gPSAiZW5kQ29sdW1uIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciBkYXRhIHBhcnQgaG9sZGluZyBlbmQgbGluZSBsb2NhdGlvbiBvZiBhbiBlbGVtZW50LgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVORF9MSU5FID0gImVuZExpbmUiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGRhdGEgcGFydCBob2xkaW5nIHN0YXJ0IGNvbHVtbiBsb2NhdGlvbiBvZiBhbiBlbGVtZW50LgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNUQVJUX0NPTFVNTiA9ICJzdGFydENvbHVtbiI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhlIG5hbWUgb2YgdGhlIHVzZXIgZGF0YSBwYXJ0IGhvbGRpbmcgc3RhcnQgbGluZSBsb2NhdGlvbiBvZiBhbiBlbGVtZW50LgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNUQVJUX0xJTkUgPSAic3RhcnRMaW5lIjsgLy8kTk9OLU5MUy0xJAotCi0gIC8qKgotICAgKiBBY2N1bXVsYXRlcyB0ZXh0IGNvbnRlbnQuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nQnVmZmVyIGNkYXRhOwotCi0gIC8qKgotICAgKiBDdXJyZW50IENEQVRBIHNlY3Rpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgQ0RBVEFTZWN0aW9uIGNkYXRhU2VjdGlvbjsKLSAgCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIExvY2F0aW9uTWFwIGV4dGVuZHMgQWJzdHJhY3RNYXAKLSAgewotICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IFVOU0VUID0gSW50ZWdlci5NQVhfVkFMVUU7Ci0gICAgcHJvdGVjdGVkIE1hcCBkZWxlZ2F0ZU1hcDsKLSAgICBwcml2YXRlIGludCBzdGFydExpbmUgPSBVTlNFVDsKLSAgICBwcml2YXRlIGludCBzdGFydENvbHVtbiA9IFVOU0VUOwotICAgIHByaXZhdGUgaW50IGVuZExpbmUgPSBVTlNFVDsKLSAgICBwcml2YXRlIGludCBlbmRDb2x1bW4gPSBVTlNFVDsKLQotICAgIHB1YmxpYyBTZXQgZW50cnlTZXQoKQotICAgIHsKLSAgICAgIHJldHVybiBnZXREZWxlZ2F0ZU1hcCgpLmVudHJ5U2V0KCk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIE1hcCBnZXREZWxlZ2F0ZU1hcCgpCi0gICAgewotICAgICAgaWYgKGRlbGVnYXRlTWFwID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGRlbGVnYXRlTWFwID0gbmV3IEhhc2hNYXAoKTsKLSAgICAgICAgaWYgKHN0YXJ0TGluZSAhPSBVTlNFVCkKLSAgICAgICAgewotICAgICAgICAgIGRlbGVnYXRlTWFwLnB1dChTVEFSVF9MSU5FLCBuZXcgSW50ZWdlcihzdGFydExpbmUpKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3RhcnRDb2x1bW4gIT0gVU5TRVQpCi0gICAgICAgIHsKLSAgICAgICAgICBkZWxlZ2F0ZU1hcC5wdXQoU1RBUlRfQ09MVU1OLCBuZXcgSW50ZWdlcihzdGFydENvbHVtbikpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChlbmRMaW5lICE9IFVOU0VUKQotICAgICAgICB7Ci0gICAgICAgICAgZGVsZWdhdGVNYXAucHV0KEVORF9MSU5FLCBuZXcgSW50ZWdlcihlbmRMaW5lKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGVuZENvbHVtbiAhPSBVTlNFVCkKLSAgICAgICAgewotICAgICAgICAgIGRlbGVnYXRlTWFwLnB1dChFTkRfQ09MVU1OLCBuZXcgSW50ZWdlcihlbmRDb2x1bW4pKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIGRlbGVnYXRlTWFwOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBpbnQgb2JqZWN0VG9JbnQoT2JqZWN0IHZhbHVlKQotICAgIHsKLSAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gVU5TRVQgOiAoKEludGVnZXIpdmFsdWUpLmludFZhbHVlKCk7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIE9iamVjdCBpbnRUb09iamVjdChpbnQgdmFsdWUpCi0gICAgewotICAgICAgcmV0dXJuIHZhbHVlID09IFVOU0VUID8gbnVsbCA6IG5ldyBJbnRlZ2VyKHZhbHVlKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgT2JqZWN0IHB1dChPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpCi0gICAgewotICAgICAgT2JqZWN0IHJlc3VsdDsKLSAgICAgIGlmIChkZWxlZ2F0ZU1hcCA9PSBudWxsKQotICAgICAgewotICAgICAgICBpZiAoU1RBUlRfTElORS5lcXVhbHMoa2V5KSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IGludFRvT2JqZWN0KHN0YXJ0TGluZSk7Ci0gICAgICAgICAgc3RhcnRMaW5lICA9IG9iamVjdFRvSW50KHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChFTkRfTElORS5lcXVhbHMoa2V5KSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IGludFRvT2JqZWN0KGVuZExpbmUpOwotICAgICAgICAgIGVuZExpbmUgID0gb2JqZWN0VG9JbnQodmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFNUQVJUX0NPTFVNTi5lcXVhbHMoa2V5KSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IGludFRvT2JqZWN0KHN0YXJ0Q29sdW1uKTsKLSAgICAgICAgICBzdGFydENvbHVtbiAgPSBvYmplY3RUb0ludCh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoRU5EX0NPTFVNTi5lcXVhbHMoa2V5KSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IGludFRvT2JqZWN0KGVuZENvbHVtbik7Ci0gICAgICAgICAgZW5kQ29sdW1uICA9IG9iamVjdFRvSW50KHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBnZXREZWxlZ2F0ZU1hcCgpLnB1dChrZXksIHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXN1bHQgPSBnZXREZWxlZ2F0ZU1hcCgpLnB1dChrZXksIHZhbHVlKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRTdGFydExpbmUoKQotICAgIHsKLSAgICAgIHJldHVybiBkZWxlZ2F0ZU1hcCA9PSBudWxsID8gc3RhcnRMaW5lIDogb2JqZWN0VG9JbnQoZGVsZWdhdGVNYXAuZ2V0KFNUQVJUX0xJTkUpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGFydExpbmUoaW50IHN0YXJ0TGluZSkKLSAgICB7Ci0gICAgICBpZiAoZGVsZWdhdGVNYXAgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhpcy5zdGFydExpbmUgPSBzdGFydExpbmU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGRlbGVnYXRlTWFwLnB1dChTVEFSVF9MSU5FLCBuZXcgSW50ZWdlcihzdGFydExpbmUpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldFN0YXJ0Q29sdW1uKCkKLSAgICB7Ci0gICAgICByZXR1cm4gZGVsZWdhdGVNYXAgPT0gbnVsbCA/IHN0YXJ0Q29sdW1uIDogb2JqZWN0VG9JbnQoZGVsZWdhdGVNYXAuZ2V0KFNUQVJUX0NPTFVNTikpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFN0YXJ0Q29sdW1uKGludCBzdGFydENvbHVtbikKLSAgICB7Ci0gICAgICBpZiAoZGVsZWdhdGVNYXAgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhpcy5zdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBkZWxlZ2F0ZU1hcC5wdXQoU1RBUlRfQ09MVU1OLCBuZXcgSW50ZWdlcihzdGFydENvbHVtbikpOwotICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0RW5kTGluZSgpCi0gICAgewotICAgICAgcmV0dXJuIGRlbGVnYXRlTWFwID09IG51bGwgPyBlbmRMaW5lIDogb2JqZWN0VG9JbnQoZGVsZWdhdGVNYXAuZ2V0KEVORF9MSU5FKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RW5kTGluZShpbnQgZW5kTGluZSkKLSAgICB7Ci0gICAgICBpZiAoZGVsZWdhdGVNYXAgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhpcy5lbmRMaW5lID0gZW5kTGluZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgZGVsZWdhdGVNYXAucHV0KEVORF9MSU5FLCBuZXcgSW50ZWdlcihlbmRMaW5lKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRFbmRDb2x1bW4oKQotICAgIHsKLSAgICAgIHJldHVybiBkZWxlZ2F0ZU1hcCA9PSBudWxsID8gZW5kQ29sdW1uIDogb2JqZWN0VG9JbnQoZGVsZWdhdGVNYXAuZ2V0KCJlbmRDb2x1bW4iKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RW5kQ29sdW1uKGludCBlbmRDb2x1bW4pCi0gICAgewotICAgICAgaWYgKGRlbGVnYXRlTWFwID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRoaXMuZW5kQ29sdW1uID0gZW5kQ29sdW1uOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBkZWxlZ2F0ZU1hcC5wdXQoRU5EX0NPTFVNTiwgbmV3IEludGVnZXIoZW5kQ29sdW1uKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEhvbGRzIHBhaXJzIE5vZGUgLT4gTWFwIHdpdGggdXNlciBkYXRhLgotICAgKiAKLSAgICogQHNlZSAjRU5EX0NPTFVNTgotICAgKiBAc2VlICNFTkRfTElORQotICAgKiBAc2VlICNTVEFSVF9DT0xVTU4KLSAgICogQHNlZSAjU1RBUlRfTElORQotICAgKiAKLSAgICogQSBXZWFrSGFzaE1hcCBpcyB1c2VkIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXMgbWFwJ3MgbWFpbnRlbmFuY2UuIEFzIG5vZGVzCi0gICAqIGFyZSBnYXJiYWdlIGNvbGxlY3RlZCB3aGVuIG5vdCBuZWVkZWQgYW55bW9yZSwgdGhlIEpWTSB3aWxsIHRha2UgY2FyZSBvZgotICAgKiByZW1vdmluZyBlbnRyaWVzIGZyb20gdGhpcyBtYXAuCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIE1hcCB1c2VyRGF0YU1hcCA9IENvbGxlY3Rpb25zLnN5bmNocm9uaXplZE1hcChuZXcgV2Vha0hhc2hNYXAoKSk7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgTG9jYXRpb25NYXAgZ2V0TG9jYXRpb25NYXAoTm9kZSBub2RlKQotICB7Ci0gICAgTG9jYXRpb25NYXAgcmVzdWx0ID0gKExvY2F0aW9uTWFwKXVzZXJEYXRhTWFwLmdldChub2RlKTsKLSAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gbmV3IExvY2F0aW9uTWFwKCk7Ci0gICAgICB1c2VyRGF0YU1hcC5wdXQobm9kZSwgcmVzdWx0KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBjb2x1bW4gYXQgd2hpY2ggdGhlIGdpdmVuIG5vZGUgZW5kcy4KLSAgICogCi0gICAqIEBwYXJhbSBub2RlCi0gICAqICAgICAgICAgIHRoZSBub2RlIHRvIHF1ZXJ5LgotICAgKiBAcmV0dXJuIHRoZSBjb2x1bW4gYXQgd2hpY2ggdGhlIGdpdmVuIG5vZGUgZW5kcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IGdldEVuZENvbHVtbihOb2RlIG5vZGUpCi0gIHsKLSAgICBpbnQgcmVzdWx0ID0gZ2V0TG9jYXRpb25NYXAobm9kZSkuZ2V0RW5kQ29sdW1uKCk7Ci0gICAgcmV0dXJuIHJlc3VsdCA9PSBMb2NhdGlvbk1hcC5VTlNFVCA/IDEgOiByZXN1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbGluZSBhdCB3aGljaCB0aGUgZ2l2ZW4gbm9kZSBlbmRzLgotICAgKiAKLSAgICogQHBhcmFtIG5vZGUKLSAgICogICAgICAgICAgdGhlIG5vZGUgdG8gcXVlcnkuCi0gICAqIEByZXR1cm4gdGhlIGxpbmUgYXQgd2hpY2ggdGhlIGdpdmVuIG5vZGUgZW5kcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IGdldEVuZExpbmUoTm9kZSBub2RlKQotICB7Ci0gICAgaW50IHJlc3VsdCA9IGdldExvY2F0aW9uTWFwKG5vZGUpLmdldEVuZExpbmUoKTsKLSAgICByZXR1cm4gcmVzdWx0ID09IExvY2F0aW9uTWFwLlVOU0VUID8gMSA6IHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBjb2x1bW4gYXQgd2hpY2ggdGhlIGdpdmVuIG5vZGUgc3RhcnRzLgotICAgKiAKLSAgICogQHBhcmFtIG5vZGUKLSAgICogICAgICAgICAgdGhlIG5vZGUgdG8gcXVlcnkuCi0gICAqIEByZXR1cm4gdGhlIGNvbHVtbiBhdCB3aGljaCB0aGUgZ2l2ZW4gbm9kZSBzdGFydHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGludCBnZXRTdGFydENvbHVtbihOb2RlIG5vZGUpCi0gIHsKLSAgICBpbnQgcmVzdWx0ID0gZ2V0TG9jYXRpb25NYXAobm9kZSkuZ2V0U3RhcnRDb2x1bW4oKTsKLSAgICByZXR1cm4gcmVzdWx0ID09IExvY2F0aW9uTWFwLlVOU0VUID8gMSA6IHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBsaW5lIGF0IHdoaWNoIHRoZSBnaXZlbiBub2RlIHN0YXJ0cy4KLSAgICogCi0gICAqIEBwYXJhbSBub2RlCi0gICAqICAgICAgICAgIHRoZSBub2RlIHRvIHF1ZXJ5LgotICAgKiBAcmV0dXJuIHRoZSBsaW5lIGF0IHdoaWNoIHRoZSBnaXZlbiBub2RlIHN0YXJ0cy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IGdldFN0YXJ0TGluZShOb2RlIG5vZGUpCi0gIHsKLSAgICBpbnQgcmVzdWx0ID0gZ2V0TG9jYXRpb25NYXAobm9kZSkuZ2V0U3RhcnRMaW5lKCk7Ci0gICAgcmV0dXJuIHJlc3VsdCA9PSBMb2NhdGlvbk1hcC5VTlNFVCA/IDEgOiByZXN1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdXNlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZS4gSWYgdGhlIG5vZGUgaGFzIG5vIHVzZXIKLSAgICogZGF0YSwgYSBuZXcgZW1wdHkgbWFwIGlzIGNyZWF0ZWQuCi0gICAqIAotICAgKiBAcGFyYW0gbm9kZQotICAgKiAgICAgICAgICB0aGUgbm9kZSB0byBxdWVyeS4KLSAgICogQHJldHVybiB0aGUgdXNlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgTWFwIGdldFVzZXJEYXRhKE5vZGUgbm9kZSkKLSAgewotICAgIHJldHVybiBnZXRMb2NhdGlvbk1hcChub2RlKTsKLSAgfQotCi0gIHByb3RlY3RlZCBpbnQgY29sdW1uOwotCi0gIExpc3QgZGlhZ25vc3RpY3MgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgcHJvdGVjdGVkIERvY3VtZW50IGRvY3VtZW50OwotCi0gIHByb3RlY3RlZCBFbGVtZW50IGVsZW1lbnQ7Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBlbmNvZGluZzsKLQotICBwcm90ZWN0ZWQgYm9vbGVhbiBpblNjaGVtYTsKLQotICBwcm90ZWN0ZWQgaW50IGxpbmU7Ci0KLSAgcHJvdGVjdGVkIExvY2F0b3IgbG9jYXRvcjsKLQotICBwcm90ZWN0ZWQgU0FYUGFyc2VyIHNheFBhcnNlcjsKLQotICBwcm90ZWN0ZWQgU3RhY2sgc3RhY2sgPSBuZXcgU3RhY2soKTsKLQotICBwcm90ZWN0ZWQgSkFYUFBvb2wgamF4cFBvb2w7Ci0gICAgCi0gIC8qKgotICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIFdTRExQYXJzZXIoKQotICB7Ci0gICAgdGhpcyhDb2xsZWN0aW9ucy5FTVBUWV9NQVApOwotICB9Ci0gIAotICAvKioKLSAgICogQ29uc3RydWN0cyBhIFdTREwgcGFyc2VyIGdpdmVuIGEgc2V0IG9mIHBhcnNpbmcgb3B0aW9ucy4KLSAgICogCi0gICAqIEBwYXJhbSBvcHRpb25zIGEgTWFwIG9mIFN0cmluZyB0byBPYmplY3QsIHBhc3NlZCBhbG9uZyB0aHJvdWdoIHRoZSBSZXNvdXJjZVNldCBhbmQgUmVzb3VyY2UuIAotICAgKi8KLSAgcHVibGljIFdTRExQYXJzZXIoTWFwIG9wdGlvbnMpCi0gIHsKLSAgICBKQVhQQ29uZmlndXJhdGlvbiBjb25maWcgPSBudWxsOwotICAgIGlmIChvcHRpb25zICE9IG51bGwpCi0gICAgewotICAgICAgamF4cFBvb2wgPSAoSkFYUFBvb2wpb3B0aW9ucy5nZXQoV1NETFJlc291cmNlSW1wbC5XU0RMX0pBWFBfUE9PTCk7Ci0gICAgICBjb25maWcgPSAoSkFYUENvbmZpZ3VyYXRpb24pb3B0aW9ucy5nZXQoV1NETFJlc291cmNlSW1wbC5XU0RMX0pBWFBfQ09ORklHKTsKLSAgICB9Ci0gICAgdHJ5Ci0gICAgewotICAgICAgaWYgKGpheHBQb29sID09IG51bGwpCi0gICAgICB7ICAgICAgCi0gICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHNheFBhcnNlciA9IGNvbmZpZy5jcmVhdGVTQVhQYXJzZXIodGhpcyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgc2F4UGFyc2VyID0gbmV3IERlZmF1bHRKQVhQQ29uZmlndXJhdGlvbigpLmNyZWF0ZVNBWFBhcnNlcih0aGlzKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBzYXhQYXJzZXIgPSBqYXhwUG9vbC5nZXRTQVhQYXJzZXIodGhpcyk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChTQVhFeGNlcHRpb24gZXhjZXB0aW9uKQotICAgIHsKLSAgICAgIGZhdGFsRXJyb3IoZXhjZXB0aW9uKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gZXhjZXB0aW9uKQotICAgIHsKLSAgICAgIGZhdGFsRXJyb3IoZXhjZXB0aW9uKTsKLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIjY2hhcmFjdGVycyhjaGFyW10sIGludCwgaW50KQotICAgKi8KLSAgcHVibGljIHZvaWQgY2hhcmFjdGVycyhjaGFyW10gY2hhcmFjdGVycywgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKSB0aHJvd3MgU0FYRXhjZXB0aW9uCi0gIHsKLSAgICBpZiAoY2RhdGEgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBjZGF0YS5hcHBlbmQoY2hhcmFjdGVycywgc3RhcnQsIGxlbmd0aCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpbnQgbGluZUZlZWQgPSAwOwotICAgICAgaW50IGNhcnJpYWdlUmV0dXJuID0gMDsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICB7Ci0gICAgICAgIGNoYXIgY2hhcmFjdGVyID0gY2hhcmFjdGVyc1tzdGFydCArIGldOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICdcbicpCi0gICAgICAgIHsKLSAgICAgICAgICArK2xpbmVGZWVkOwotICAgICAgICAgIGNvbHVtbiA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyID09ICdccicpCi0gICAgICAgIHsKLSAgICAgICAgICArK2NhcnJpYWdlUmV0dXJuOwotICAgICAgICAgIGNvbHVtbiA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyID09ICcgJyAmJiBjaGFyYWN0ZXIgPT0gJ1x0JykKLSAgICAgICAgewotICAgICAgICAgICsrY29sdW1uOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIFB1dCB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlIGluIGl0cyBvd24gdGV4dCBub2RlLgotICAgICAgICAgIGlmIChpICE9IDApCi0gICAgICAgICAgewotICAgICAgICAgICAgVGV4dCB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5ldyBTdHJpbmcoY2hhcmFjdGVycywgc3RhcnQsIGkpKTsKLSAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOwotICAgICAgICAgIH0KLSAgICAgICAgICAKLSAgICAgICAgICAvLyBDcmVhdGUgYSBuZXh0IG5vZGUgdGhhdCBzdGFydHMgd2l0aCB0aGUgbm9uLXdoaXRlc3BhY2UuCi0gICAgICAgICAgLy8KLSAgICAgICAgICBsaW5lICs9IE1hdGgubWF4KGxpbmVGZWVkLCBjYXJyaWFnZVJldHVybik7Ci0gICAgICAgICAgVGV4dCB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5ldyBTdHJpbmcoY2hhcmFjdGVycywgc3RhcnQgKyBpLCBsZW5ndGggLSBpKSk7Ci0gICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICAgICAgTG9jYXRpb25NYXAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0gZ2V0TG9jYXRpb25NYXAodGV4dE5vZGUpOwotICAgICAgICAgIGV4dGVuZGVkQXR0cmlidXRlcy5zZXRTdGFydExpbmUobGluZSk7Ci0gICAgICAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzLnNldFN0YXJ0Q29sdW1uKGNvbHVtbik7Ci0gICAgICAgICAgc2F2ZUxvY2F0aW9uKCk7Ci0gICAgICAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzLnNldEVuZExpbmUobGluZSk7Ci0gICAgICAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzLnNldEVuZENvbHVtbihjb2x1bW4pOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgVGV4dCB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5ldyBTdHJpbmcoY2hhcmFjdGVycywgc3RhcnQsIGxlbmd0aCkpOwotICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICBzYXZlTG9jYXRpb24oKTsKLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlciNjb21tZW50KGNoYXJbXSwgaW50LCBpbnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBjb21tZW50KGNoYXJbXSBjaGFyYWN0ZXJzLCBpbnQgc3RhcnQsIGludCBsZW5ndGgpIHRocm93cyBTQVhFeGNlcHRpb24KLSAgewotICAgIENvbW1lbnQgY29tbWVudE5vZGUgPSBkb2N1bWVudC5jcmVhdGVDb21tZW50KG5ldyBTdHJpbmcoY2hhcmFjdGVycywgc3RhcnQsIGxlbmd0aCkpOwotICAgIGlmIChlbGVtZW50ID09IG51bGwpCi0gICAgewotICAgICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQoY29tbWVudE5vZGUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChjb21tZW50Tm9kZSk7Ci0gICAgfQotICAgIHNhdmVMb2NhdGlvbigpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYW4gZW1wdHkgRE9NIERvY3VtZW50LgotICAgKiAKLSAgICogQHJldHVybiBhbiBlbXB0eSBET00gRG9jdW1lbnQgb3IgbnVsbCBpcyBhIEpBWFAgbWlzY29uZmlndXJhdGlvbiBlcnJvcgotICAgKiAgICAgICAgIG9jY3Vycy4KLSAgICovCi0gIHByaXZhdGUgRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkb2N1bWVudEJ1aWxkZXJGYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotICAgICAgZG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKLSAgICAgIGRvY3VtZW50QnVpbGRlckZhY3Rvcnkuc2V0VmFsaWRhdGluZyhmYWxzZSk7Ci0gICAgICBEb2N1bWVudEJ1aWxkZXIgZG9jdW1lbnRCdWlsZGVyID0gZG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKLSAgICAgIHJldHVybiBkb2N1bWVudEJ1aWxkZXIubmV3RG9jdW1lbnQoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gZXhjZXB0aW9uKQotICAgIHsKLSAgICAgIFdTRExQbHVnaW4uSU5TVEFOQ0UubG9nKGV4Y2VwdGlvbik7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlciNlbmRDREFUQSgpCi0gICAqLwotICBwdWJsaWMgdm9pZCBlbmRDREFUQSgpCi0gIHsKLSAgICBjZGF0YVNlY3Rpb24uc2V0RGF0YShjZGF0YS50b1N0cmluZygpKTsKLSAgICBlbGVtZW50LmFwcGVuZENoaWxkKGNkYXRhU2VjdGlvbik7Ci0gICAgTG9jYXRpb25NYXAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0gZ2V0TG9jYXRpb25NYXAoY2RhdGFTZWN0aW9uKTsKLSAgICBjZGF0YSA9IG51bGw7Ci0gICAgc2F2ZUxvY2F0aW9uKCk7Ci0gICAgZXh0ZW5kZWRBdHRyaWJ1dGVzLnNldEVuZExpbmUobGluZSk7Ci0gICAgZXh0ZW5kZWRBdHRyaWJ1dGVzLnNldEVuZENvbHVtbihjb2x1bW4pOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyI2VuZERvY3VtZW50KCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVuZERvY3VtZW50KCkKLSAgewotICAgIGVsZW1lbnQgPSBudWxsOwotICAgIHNhdmVMb2NhdGlvbigpOwotICAgIHRoaXMubG9jYXRvciA9IG51bGw7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlciNlbmREVEQoKQotICAgKi8KLSAgcHVibGljIHZvaWQgZW5kRFREKCkKLSAgewotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyI2VuZEVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywKLSAgICogICAgICBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgZW5kRWxlbWVudChTdHJpbmcgdXJpLCBTdHJpbmcgbG9jYWxOYW1lLCBTdHJpbmcgcU5hbWUpIHRocm93cyBTQVhFeGNlcHRpb24KLSAgewotICAgIHNhdmVMb2NhdGlvbigpOwotCi0gICAgaWYgKGluU2NoZW1hKQotICAgIHsKLSAgICAgIE1hcCB1c2VyRGF0YSA9IFhTRFBhcnNlci5nZXRVc2VyRGF0YShlbGVtZW50KTsKLSAgICAgIHVzZXJEYXRhLnB1dChFTkRfTElORSwgbmV3IEludGVnZXIobGluZSkpOwotICAgICAgdXNlckRhdGEucHV0KEVORF9DT0xVTU4sIG5ldyBJbnRlZ2VyKGNvbHVtbikpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgTG9jYXRpb25NYXAgbG9jYXRpb25NYXAgPSBnZXRMb2NhdGlvbk1hcChlbGVtZW50KTsKLSAgICAgIGxvY2F0aW9uTWFwLnNldEVuZExpbmUobGluZSk7Ci0gICAgICBsb2NhdGlvbk1hcC5zZXRFbmRDb2x1bW4oY29sdW1uKTsKLSAgICB9Ci0KLQotICAgIGlmIChpc1NjaGVtYUVsZW1lbnQodXJpLCBsb2NhbE5hbWUpKQotICAgIHsKLSAgICAgIGluU2NoZW1hID0gZmFsc2U7Ci0gICAgfQotCi0gICAgZWxlbWVudCA9IChFbGVtZW50KXN0YWNrLnBvcCgpOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcueG1sLnNheC5leHQuTGV4aWNhbEhhbmRsZXIjZW5kRW50aXR5KGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBlbmRFbnRpdHkoU3RyaW5nIG5hbWUpCi0gIHsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGVycm9yKFNBWFBhcnNlRXhjZXB0aW9uIGV4Y2VwdGlvbikKLSAgewotICAgIFdTRExEaWFnbm9zdGljSW1wbCBkaWFnbm9zdGljID0gbmV3IFdTRExEaWFnbm9zdGljSW1wbCgpOwotICAgIGRpYWdub3N0aWMuc2V0U2V2ZXJpdHkoV1NETERpYWdub3N0aWNTZXZlcml0eS5FUlJPUl9MSVRFUkFMKTsKLSAgICBkaWFnbm9zdGljLnNldE1lc3NhZ2UoV1NETFBsdWdpbi5JTlNUQU5DRS5nZXRTdHJpbmcoIl9VSV9JT0Vycm9yX21lc3NhZ2UiLCBuZXcgT2JqZWN0IFtdeyBleGNlcHRpb24uZ2V0TWVzc2FnZSgpIH0pKTsgLy8kTk9OLU5MUy0xJAotICAgIGRpYWdub3N0aWMuc2V0TGluZShleGNlcHRpb24uZ2V0TGluZU51bWJlcigpKTsKLSAgICBkaWFnbm9zdGljLnNldENvbHVtbihleGNlcHRpb24uZ2V0Q29sdW1uTnVtYmVyKCkpOwotICAgIGRpYWdub3N0aWNzLmFkZChkaWFnbm9zdGljKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGZhdGFsRXJyb3IoSU9FeGNlcHRpb24gZXhjZXB0aW9uKQotICB7Ci0gICAgV1NETERpYWdub3N0aWNJbXBsIGRpYWdub3N0aWMgPSBuZXcgV1NETERpYWdub3N0aWNJbXBsKCk7Ci0gICAgZGlhZ25vc3RpYy5zZXRTZXZlcml0eShXU0RMRGlhZ25vc3RpY1NldmVyaXR5LkZBVEFMX0xJVEVSQUwpOwotICAgIGRpYWdub3N0aWMuc2V0TWVzc2FnZShXU0RMUGx1Z2luLklOU1RBTkNFLmdldFN0cmluZygiX1VJX0lPRXJyb3JfbWVzc2FnZSIsIG5ldyBPYmplY3QgW117IGV4Y2VwdGlvbi5nZXRNZXNzYWdlKCkgfSkpOyAvLyROT04tTkxTLTEkCi0gICAgZGlhZ25vc3RpY3MuYWRkKGRpYWdub3N0aWMpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgZmF0YWxFcnJvcihQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIGV4Y2VwdGlvbikKLSAgewotICAgIFdTRExEaWFnbm9zdGljSW1wbCBkaWFnbm9zdGljID0gbmV3IFdTRExEaWFnbm9zdGljSW1wbCgpOwotICAgIGRpYWdub3N0aWMuc2V0U2V2ZXJpdHkoV1NETERpYWdub3N0aWNTZXZlcml0eS5GQVRBTF9MSVRFUkFMKTsKLSAgICBkaWFnbm9zdGljLnNldE1lc3NhZ2UoV1NETFBsdWdpbi5JTlNUQU5DRS5nZXRTdHJpbmcoIl9VSV9QYXJzZXJFcnJvcl9tZXNzYWdlIiwgbmV3IE9iamVjdCBbXXsgZXhjZXB0aW9uLmdldE1lc3NhZ2UoKSB9KSk7IC8vJE5PTi1OTFMtMSQKLSAgICBkaWFnbm9zdGljcy5hZGQoZGlhZ25vc3RpYyk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBmYXRhbEVycm9yKFNBWEV4Y2VwdGlvbiBleGNlcHRpb24pCi0gIHsKLSAgICBXU0RMRGlhZ25vc3RpY0ltcGwgZGlhZ25vc3RpYyA9IG5ldyBXU0RMRGlhZ25vc3RpY0ltcGwoKTsKLSAgICBkaWFnbm9zdGljLnNldFNldmVyaXR5KFdTRExEaWFnbm9zdGljU2V2ZXJpdHkuRkFUQUxfTElURVJBTCk7Ci0gICAgZGlhZ25vc3RpYy5zZXRNZXNzYWdlKFdTRExQbHVnaW4uSU5TVEFOQ0UuZ2V0U3RyaW5nKCJfVUlfUGFyc2VyRXJyb3JfbWVzc2FnZSIsIG5ldyBPYmplY3QgW117IGV4Y2VwdGlvbi5nZXRNZXNzYWdlKCkgfSkpOyAvLyROT04tTkxTLTEkCi0gICAgZGlhZ25vc3RpY3MuYWRkKGRpYWdub3N0aWMpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgZmF0YWxFcnJvcihTQVhQYXJzZUV4Y2VwdGlvbiBleGNlcHRpb24pCi0gIHsKLSAgICBXU0RMRGlhZ25vc3RpY0ltcGwgZGlhZ25vc3RpYyA9IG5ldyBXU0RMRGlhZ25vc3RpY0ltcGwoKTsKLSAgICBkaWFnbm9zdGljLnNldFNldmVyaXR5KFdTRExEaWFnbm9zdGljU2V2ZXJpdHkuRkFUQUxfTElURVJBTCk7Ci0gICAgZGlhZ25vc3RpYy5zZXRNZXNzYWdlKFdTRExQbHVnaW4uSU5TVEFOQ0UuZ2V0U3RyaW5nKCJfVUlfUGFyc2VyRXJyb3JfbWVzc2FnZSIsIG5ldyBPYmplY3QgW117IGV4Y2VwdGlvbi5nZXRNZXNzYWdlKCkgfSkpOyAvLyROT04tTkxTLTEkCi0gICAgZGlhZ25vc3RpYy5zZXRMaW5lKGV4Y2VwdGlvbi5nZXRMaW5lTnVtYmVyKCkpOwotICAgIGRpYWdub3N0aWMuc2V0Q29sdW1uKGV4Y2VwdGlvbi5nZXRDb2x1bW5OdW1iZXIoKSk7Ci0gICAgZGlhZ25vc3RpY3MuYWRkKGRpYWdub3N0aWMpOwotICB9Ci0KLSAgLyoqCi0gICAqIFByb3ZpZGVzIGEgY29sbGVjdGlvbiB3aXRoIHRoZSBkaWFnbm9zdGljcyBnZW5lcmF0ZWQgZHVyaW5nIHBhcnNpbmcuCi0gICAqIAotICAgKiBAcmV0dXJuIGEgQ29sbGVjdGlvbiBvZiB7QGxpbmsgV1NETERpYWdub3N0aWN9IG9iamVjdHMuCi0gICAqLwotICBwdWJsaWMgQ29sbGVjdGlvbiBnZXREaWFnbm9zdGljcygpCi0gIHsKLSAgICByZXR1cm4gZGlhZ25vc3RpY3M7Ci0gIH0KLQotICAvKioKLSAgICogUHJvdmlkZXMgdGhlIERPTSBkb2N1bWVudCBjcmVhdGVkIGJ5IHBhcnNpbmcgdGhlIFdTREwgZG9jdW1lbnQuCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSByZXN1bHRpbmcgRE9NIGRvY3VtZW50LgotICAgKi8KLSAgcHVibGljIERvY3VtZW50IGdldERvY3VtZW50KCkKLSAgewotICAgIHJldHVybiBkb2N1bWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBEZXRlcm1pbmVzIGlmIGFuIGVsZW1lbnQgaXMgdGhlIHJvb3QgWE1MIHNjaGVtYSBlbGVtZW50LgotICAgKiAKLSAgICogQHBhcmFtIHVyaQotICAgKiAgICAgICAgICB0aGUgVVJJIHRvIHRlc3QuCi0gICAqIEBwYXJhbSBsb2NhbE5hbWUKLSAgICogICAgICAgICAgdGhlIGVsZW1lbnQncyBsb2NhbCBuYW1lLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGVsZW1lbnQgaXMgdGhlIHJvb3QgWE1MIHNjaGVtYSBlbGVtZW50LCBmYWxzZQotICAgKiAgICAgICAgIG90aGVyd2lzZS4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBpc1NjaGVtYUVsZW1lbnQoU3RyaW5nIHVyaSwgU3RyaW5nIGxvY2FsTmFtZSkKLSAgewotICAgIGlmICh1cmkuZXF1YWxzKFhTRENvbnN0YW50cy5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMSkgJiYgbG9jYWxOYW1lLmVxdWFscyhYU0RDb25zdGFudHMuU0NIRU1BX0VMRU1FTlRfVEFHKSkKLSAgICB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgcGFyc2UoSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzYXhQYXJzZXIucGFyc2UoaW5wdXRTb3VyY2UsIHRoaXMpOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZXhjZXB0aW9uKQotICAgIHsKLSAgICAgIGZhdGFsRXJyb3IoZXhjZXB0aW9uKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFNBWEV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgaWYgKGRpYWdub3N0aWNzLmlzRW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgZmF0YWxFcnJvcihleGNlcHRpb24pOwotICAgICAgfQotICAgIH0KLSAgICBmaW5hbGx5Ci0gICAgewotICAgICAgaWYgKGpheHBQb29sICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGpheHBQb29sLnJlbGVhc2VTQVhQYXJzZXIoc2F4UGFyc2VyKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2VzIHRoZSBYTUwgY29udGVudCByZWFkIGZyb20gdGhlIGdpdmVuIGlucHV0IHN0cmVhbS4KLSAgICogCi0gICAqIEBwYXJhbSBpbnB1dFN0cmVhbQotICAgKiAgICAgICAgICB0aGUgc291cmNlIGlucHV0IHN0cmVhbS4gTXVzdCBub3QgYmUgbnVsbC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHBhcnNlKElucHV0U3RyZWFtIGlucHV0U3RyZWFtKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgc2F4UGFyc2VyLnBhcnNlKG5ldyBJbnB1dFNvdXJjZShpbnB1dFN0cmVhbSksIHRoaXMpOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZXhjZXB0aW9uKQotICAgIHsKLSAgICAgIGZhdGFsRXJyb3IoZXhjZXB0aW9uKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFNBWEV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgaWYgKGRpYWdub3N0aWNzLmlzRW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgZmF0YWxFcnJvcihleGNlcHRpb24pOwotICAgICAgfQotICAgIH0KLSAgICBmaW5hbGx5Ci0gICAgewotICAgICAgaWYgKGpheHBQb29sICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGpheHBQb29sLnJlbGVhc2VTQVhQYXJzZXIoc2F4UGFyc2VyKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIjcHJvY2Vzc2luZ0luc3RydWN0aW9uKGphdmEubGFuZy5TdHJpbmcsCi0gICAqICAgICAgamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHByb2Nlc3NpbmdJbnN0cnVjdGlvbihTdHJpbmcgdGFyZ2V0LCBTdHJpbmcgZGF0YSkKLSAgewotICAgIE5vZGUgcHJvY2Vzc2luZ0luc3RydWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdldCwgZGF0YSk7Ci0KLSAgICBpZiAoc3RhY2suaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIGRvY3VtZW50LmFwcGVuZENoaWxkKHByb2Nlc3NpbmdJbnN0cnVjdGlvbik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHByb2Nlc3NpbmdJbnN0cnVjdGlvbik7Ci0gICAgfQotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyI3Jlc29sdmVFbnRpdHkoamF2YS5sYW5nLlN0cmluZywKLSAgICogICAgICBqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIElucHV0U291cmNlIHJlc29sdmVFbnRpdHkoU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQpIHRocm93cyBTQVhFeGNlcHRpb24KLSAgewotICAgIElucHV0U291cmNlIGlucHV0U291cmNlOwotICAgIGlmICgiLS8vVzNDLy9EVEQgWE1MU0NIRU1BIDIwMDEwMi8vRU4iLmVxdWFsc0lnbm9yZUNhc2UocHVibGljSWQpKSAvLyROT04tTkxTLTEkCi0gICAgewotICAgICAgaW5wdXRTb3VyY2UgPSBuZXcgSW5wdXRTb3VyY2UoWFNEUGx1Z2luLklOU1RBTkNFLmdldEJhc2VVUkwoKSArICJjYWNoZS93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLmR0ZCIpOyAvLyROT04tTkxTLTEkCi0gICAgICBpbnB1dFNvdXJjZS5zZXRQdWJsaWNJZChwdWJsaWNJZCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN5c3RlbUlkICE9IG51bGwgJiYgc3lzdGVtSWQuc3RhcnRzV2l0aCgiZmlsZTovL2J1bmRsZWVudHJ5OiIpKSAvLyROT04tTkxTLTEkCi0gICAgewotICAgICAgaW5wdXRTb3VyY2UgPSBuZXcgSW5wdXRTb3VyY2Uoc3lzdGVtSWQuc3Vic3RyaW5nKDcpKTsKLSAgICAgIGlucHV0U291cmNlLnNldFB1YmxpY0lkKHB1YmxpY0lkKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBpbnB1dFNvdXJjZSA9IHN1cGVyLnJlc29sdmVFbnRpdHkocHVibGljSWQsIHN5c3RlbUlkKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBTQVhFeGNlcHRpb24oZXhjZXB0aW9uKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gaW5wdXRTb3VyY2U7Ci0gIH0KLQotICAvKioKLSAgICogU2F2ZXMgdGhlIGN1cnJlbnQgbGluZSBhbmQgY29sdW1uIG51bWJlcnMuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzYXZlTG9jYXRpb24oKQotICB7Ci0gICAgaWYgKGxvY2F0b3IgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBsaW5lID0gbG9jYXRvci5nZXRMaW5lTnVtYmVyKCk7Ci0gICAgICBjb2x1bW4gPSBsb2NhdG9yLmdldENvbHVtbk51bWJlcigpOwotICAgICAgCi0gICAgICAvLyBUaGUgY3JpbXNvbiBwYXJzZXIgc2VlbXMgdG8gZ2l2ZSBwb29yIGNvb3JkaW5hdGVzIGFuZCBpcyAwLWJhc2VkIGZvciBsaW5lCi0gICAgICAvLyBjb3VudC4KLQotICAgICAgaWYgKGNvbHVtbiA9PSAtMSkKLSAgICAgIHsKLSAgICAgICAgY29sdW1uID0gMTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIjc2V0RG9jdW1lbnRMb2NhdG9yKG9yZy54bWwuc2F4LkxvY2F0b3IpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXREb2N1bWVudExvY2F0b3IoTG9jYXRvciBsb2NhdG9yKQotICB7Ci0gICAgdGhpcy5sb2NhdG9yID0gbG9jYXRvcjsKLSAgICBzdXBlci5zZXREb2N1bWVudExvY2F0b3IobG9jYXRvcik7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlciNzdGFydENEQVRBKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0YXJ0Q0RBVEEoKQotICB7Ci0gICAgY2RhdGEgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgY2RhdGFTZWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlQ0RBVEFTZWN0aW9uKCIiKTsgLy8kTk9OLU5MUy0xJAotICAgIExvY2F0aW9uTWFwIGV4dGVuZGVkQXR0cmlidXRlcyA9IGdldExvY2F0aW9uTWFwKGNkYXRhU2VjdGlvbik7Ci0gICAgZXh0ZW5kZWRBdHRyaWJ1dGVzLnNldFN0YXJ0TGluZShsaW5lKTsKLSAgICBleHRlbmRlZEF0dHJpYnV0ZXMuc2V0U3RhcnRDb2x1bW4oY29sdW1uKTsKLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogCi0gICAqIEBzZWUgb3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciNzdGFydERvY3VtZW50KCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0YXJ0RG9jdW1lbnQoKQotICB7Ci0gICAgc2F2ZUxvY2F0aW9uKCk7Ci0gICAgZG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudCgpOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcueG1sLnNheC5leHQuTGV4aWNhbEhhbmRsZXIjc3RhcnREVEQoamF2YS5sYW5nLlN0cmluZywKLSAgICogICAgICBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc3RhcnREVEQoU3RyaW5nIG5hbWUsIFN0cmluZyBwdWJsaWNJZCwgU3RyaW5nIHN5c3RlbUlkKQotICB7Ci0gIH0KLQotICAvKgotICAgKiAobm9uLUphdmFkb2MpCi0gICAqIAotICAgKiBAc2VlIG9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIjc3RhcnRFbGVtZW50KGphdmEubGFuZy5TdHJpbmcsCi0gICAqICAgICAgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLnhtbC5zYXguQXR0cmlidXRlcykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0YXJ0RWxlbWVudChTdHJpbmcgdXJpLCBTdHJpbmcgbG9jYWxOYW1lLCBTdHJpbmcgcU5hbWUsIEF0dHJpYnV0ZXMgYXR0cmlidXRlcykgdGhyb3dzIFNBWEV4Y2VwdGlvbgotICB7Ci0gICAgaWYgKCFpblNjaGVtYSkKLSAgICB7Ci0gICAgICBpblNjaGVtYSA9IGlzU2NoZW1hRWxlbWVudCh1cmksIGxvY2FsTmFtZSk7Ci0gICAgfQotCi0gICAgRWxlbWVudCBuZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHVyaSwgcU5hbWUpOwotCi0gICAgZm9yIChpbnQgaW5kZXggPSAwLCBjb3VudCA9IGF0dHJpYnV0ZXMuZ2V0TGVuZ3RoKCk7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpCi0gICAgewotICAgICAgU3RyaW5nIGF0dHJpYnV0ZVVSSSA9IGF0dHJpYnV0ZXMuZ2V0VVJJKGluZGV4KTsKLSAgICAgIFN0cmluZyBhdHRyaWJ1dGVRTmFtZSA9IGF0dHJpYnV0ZXMuZ2V0UU5hbWUoaW5kZXgpOwotICAgICAgU3RyaW5nIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlcy5nZXRWYWx1ZShpbmRleCk7Ci0KLSAgICAgIGlmIChhdHRyaWJ1dGVRTmFtZS5lcXVhbHMoInhtbG5zIikgfHwgYXR0cmlidXRlUU5hbWUuc3RhcnRzV2l0aCgieG1sbnM6IikpIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICAgewotICAgICAgICBhdHRyaWJ1dGVVUkkgPSBYU0RDb25zdGFudHMuWE1MTlNfVVJJXzIwMDA7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmICgiIi5lcXVhbHMoYXR0cmlidXRlVVJJKSkgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBhdHRyaWJ1dGVVUkkgPSBudWxsOwotICAgICAgfQotCi0gICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZU5TKGF0dHJpYnV0ZVVSSSwgYXR0cmlidXRlUU5hbWUsIGF0dHJpYnV0ZVZhbHVlKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhY2suaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIGRvY3VtZW50LmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTsKLSAgICB9Ci0KLSAgICBzdGFjay5wdXNoKGVsZW1lbnQpOwotICAgIGVsZW1lbnQgPSBuZXdFbGVtZW50OwotCi0gICAgLy8gTWFrZSBzdXJlIHdlIGxvY2F0aW9uIGF0dHJpYnV0ZXMgZW5kIHVwIGluIHRoZSBYU0RQYXJzZXIncyB1c2VyIGRhdGEgaWYKLSAgICAvLyB3ZSBhcmUgaW5zaWRlIGFuIGlubGluZSBzY2hlbWEuIElmIG5vdCwgdGhleSBzaG91bGQgZ28gaW4gdGhlCi0gICAgLy8gV1NETFBhcnNlcidzIHVzZXIgZGF0YS4KLQotICAgIGlmIChpblNjaGVtYSkKLSAgICB7Ci0gICAgICBNYXAgdXNlckRhdGEgPSBYU0RQYXJzZXIuZ2V0VXNlckRhdGEoZWxlbWVudCk7Ci0gICAgICB1c2VyRGF0YS5wdXQoU1RBUlRfTElORSwgbmV3IEludGVnZXIobGluZSkpOwotICAgICAgdXNlckRhdGEucHV0KFNUQVJUX0NPTFVNTiwgbmV3IEludGVnZXIoY29sdW1uKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBMb2NhdGlvbk1hcCBsb2NhdGlvbk1hcCA9IGdldExvY2F0aW9uTWFwKGVsZW1lbnQpOwotICAgICAgbG9jYXRpb25NYXAuc2V0U3RhcnRMaW5lKGxpbmUpOwotICAgICAgbG9jYXRpb25NYXAuc2V0U3RhcnRDb2x1bW4oY29sdW1uKTsKLSAgICB9Ci0KLSAgICBzYXZlTG9jYXRpb24oKTsKLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogCi0gICAqIEBzZWUgb3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyI3N0YXJ0RW50aXR5KGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzdGFydEVudGl0eShTdHJpbmcgbmFtZSkKLSAgewotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyI3dhcm5pbmcob3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24pCi0gICAqLwotICBwdWJsaWMgdm9pZCB3YXJuaW5nKFNBWFBhcnNlRXhjZXB0aW9uIGV4Y2VwdGlvbikKLSAgewotICAgIFdTRExEaWFnbm9zdGljSW1wbCBkaWFnbm9zdGljID0gbmV3IFdTRExEaWFnbm9zdGljSW1wbCgpOwotICAgIGRpYWdub3N0aWMuc2V0U2V2ZXJpdHkoV1NETERpYWdub3N0aWNTZXZlcml0eS5XQVJOSU5HX0xJVEVSQUwpOwotICAgIGRpYWdub3N0aWMuc2V0TWVzc2FnZSgiRE9NOiIgKyBleGNlcHRpb24uZ2V0TWVzc2FnZSgpKTsgIC8vJE5PTi1OTFMtMSQKLSAgICBkaWFnbm9zdGljLnNldExpbmUoZXhjZXB0aW9uLmdldExpbmVOdW1iZXIoKSk7Ci0gICAgZGlhZ25vc3RpYy5zZXRDb2x1bW4oZXhjZXB0aW9uLmdldENvbHVtbk51bWJlcigpKTsKLSAgICBkaWFnbm9zdGljcy5hZGQoZGlhZ25vc3RpYyk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldEVuY29kaW5nKCkKLSAgewotICAgIGlmIChsb2NhdG9yICE9IG51bGwpCi0gICAgewotICAgICAgdHJ5IAotICAgICAgewotICAgICAgICBNZXRob2QgZ2V0RW5jb2RpbmdNZXRob2QgPSBsb2NhdG9yLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRFbmNvZGluZyIsIG5ldyBDbGFzc1tde30pOwotICAgICAgICBpZiAoZ2V0RW5jb2RpbmdNZXRob2QgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGVuY29kaW5nID0gKFN0cmluZylnZXRFbmNvZGluZ01ldGhvZC5pbnZva2UobG9jYXRvciwgbmV3IE9iamVjdFtdIHt9KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSAKLSAgICAgIHsKLSAgICAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBpdCwgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkby4uLgotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBlbmNvZGluZzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzI5NTA2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2UuRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuaW1wbC5SZXNvdXJjZUZhY3RvcnlSZWdpc3RyeUltcGw7Ci1pbXBvcnQgb3JnLnhtbC5zYXguQXR0cmlidXRlczsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguWE1MUmVhZGVyOwotaW1wb3J0IG9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXI7Ci1pbXBvcnQgb3JnLnhtbC5zYXguaGVscGVycy5YTUxSZWFkZXJGYWN0b3J5OwotCi0KLS8qKgotICogVGhpcyBjbGFzcyBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgbG9hZGluZyBvZiBXU0RMIG9yIFhTRCByZXNvdXJjZSBmcm9tCi0gKiBVUkkncyB0aGF0IGRvbid0IGVuZCB3aXRoIC54c2Qgb3IgLndzZGwgZXh0ZW5zaW9ucy4KLSAqIAotICogVGhlc2UgVVJJJ3MgZm9pbCBFTUYncyBzdGFuZGFyZCByZXNvdXJjZSBsb2FkaW5nIG1lY2hhbmlzbSB3aWNoIGFzc3VtZXMgdGhhdAotICogYSByZXNvdXJjZSB0eXBlIGNhbiBhbHdheXMgYmUgZGVkdWNlZCBmcm9tIHRoZSBmaWxlIGV4dGVuc2lvbi4KLSAqIAotICogIENvZGUgRXhhbXBsZToKLSAqICAgIFJlc291cmNlU2V0IHJlc291cmNlU2V0ID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOwotICogICAgV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IFdTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeShSZXNvdXJjZS5GYWN0b3J5LlJlZ2lzdHJ5LklOU1RBTkNFKTsKLSAqICAgIHJlc291cmNlU2V0LnNldFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5KHJlZ2lzdHJ5KTsKLSAqIDxwPgotICogPGI+Tm90ZTo8L2I+IFRoaXMgY2xhc3MvaW50ZXJmYWNlIGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8KLSAqIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjawotICogZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4KLSAqIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuCi0gKiA8L3A+Ci0gKiBAc2luY2UgMS4wCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkgZXh0ZW5kcyBSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeUltcGwKLXsKLSAgcHJvdGVjdGVkIFJlc291cmNlLkZhY3RvcnkuUmVnaXN0cnkgcGFyZW50OwotCi0gIHB1YmxpYyBXU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoUmVzb3VyY2UuRmFjdG9yeS5SZWdpc3RyeSBwYXJlbnQpCi0gIHsKLSAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKLSAgfQotCi0gIHB1YmxpYyBNYXAgZ2V0RXh0ZW5zaW9uVG9GYWN0b3J5TWFwKCkKLSAgewotICAgIHJldHVybiBwYXJlbnQuZ2V0RXh0ZW5zaW9uVG9GYWN0b3J5TWFwKCk7Ci0gIH0KLQotICBwdWJsaWMgTWFwIGdldFByb3RvY29sVG9GYWN0b3J5TWFwKCkKLSAgewotICAgIHJldHVybiBwYXJlbnQuZ2V0UHJvdG9jb2xUb0ZhY3RvcnlNYXAoKTsKLSAgfQotCi0gIHB1YmxpYyBGYWN0b3J5IGdldEZhY3RvcnkoVVJJIHVyaSkKLSAgewotICAgIHJldHVybiBnZXRGYWN0b3J5KHVyaSwgbnVsbCk7Ci0gIH0KLQotICBwdWJsaWMgUmVzb3VyY2UuRmFjdG9yeSBnZXRGYWN0b3J5KFVSSSB1cmksIFN0cmluZyBjb250ZW50VHlwZSkKLSAgewotICAgIFN0cmluZyB1cmlTdHJpbmcgPSB1cmkudG9TdHJpbmcoKTsKLQotICAgIEZhY3RvcnkgZmFjdG9yeSA9IHBhcmVudC5nZXRGYWN0b3J5KHVyaSwgY29udGVudFR5cGUpOwotICAgIEZhY3RvcnkgZGVmYXVsdEZhY3RvcnkgPSAoRmFjdG9yeSlJTlNUQU5DRS5nZXRGYWN0b3J5KFVSSS5jcmVhdGVVUkkoREVGQVVMVF9FWFRFTlNJT04pLCBjb250ZW50VHlwZSk7Ci0KLSAgICAvLyBnaXZlIHRoZSBwYXJlbnQgdGhlIGZpcnN0IGNyYWNrIGF0IGdldHRpbmcgdGhlIGZhY3RvcnkKLSAgICAvLyBpZiB0aGUgZmFjdG9yeSBpcyBudWxsIG9yIHRoZSBrbm93biAnZGVmYXVsdCcgZmFjdG9yeSB0aGVuIHdlJ2xsCi0gICAgLy8gdHJ5IHRvIGNvbXB1dGUgdGhlIGZhY3Rvcnkgb3Vyc2VsdmVzCi0gICAgaWYgKGZhY3RvcnkgPT0gbnVsbCB8fCBmYWN0b3J5ID09IGRlZmF1bHRGYWN0b3J5KQotICAgIHsKLSAgICAgIGlmICh1cmlTdHJpbmcuZW5kc1dpdGgoIndzZGwiKSB8fCB1cmlTdHJpbmcuZW5kc1dpdGgoIldTREwiKSkKLSAgICAgIHsKLSAgICAgICAgLy8gaGFuZGxlIGNhc2VzIGxpa2UgImh0dHA6Ly94eHgvRGlzdGFuY2UuandzP3dzZGwiCi0gICAgICAgIC8vICAgICAgICAgIAkKLSAgICAgICAgZmFjdG9yeSA9IHBhcmVudC5nZXRGYWN0b3J5KFVSSS5jcmVhdGVVUkkoIioud3NkbCIpLCBjb250ZW50VHlwZSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmICh1cmlTdHJpbmcuZW5kc1dpdGgoInhzZCIpIHx8IHVyaVN0cmluZy5lbmRzV2l0aCgiWFNEIikpCi0gICAgICB7Ci0gICAgICAgIC8vIGhhbmRsZSBjYXNlcyBsaWtlICJodHRwOi8veHh4L0Rpc3RhbmNlLmp3cz94c2QiCi0gICAgICAgIC8vICAgICAgICAJCi0gICAgICAgIGZhY3RvcnkgPSBwYXJlbnQuZ2V0RmFjdG9yeShVUkkuY3JlYXRlVVJJKCIqLnhzZCIpLCBjb250ZW50VHlwZSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAvL2lmICh1cmkuZmlsZUV4dGVuc2lvbigpID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIGhhbmRsZSBjYXNlcyBsaWtlICJodHRwOi8veHh4L2V4YW1wbGU/Z2V0UXVvdGUiCi0gICAgICAgIC8vICAgICAgICAgICAgICAJCi0gICAgICAgIC8vIGZpbmFsbHkgd2UgbXVzdCByZXNvcnQgdG8gb3BlbmluZyB0aGUgdXJpJ3Mgc3RyZWFtIGFuZAotICAgICAgICAvLyBwZWVraW5nIGF0IHRoZSBjb250ZW50IHRvIGRldGVybWluZSBpZiBpdHMgYW4geHNkIG9yIHdzZGwKLSAgICAgICAgLy8gICAgICAgICAJCi0gICAgICAgIFN0cmluZyByb290RWxlbWVudE5hbWUgPSBnZXRSb290RWxlbWVudE5hbWUodXJpU3RyaW5nKTsKLSAgICAgICAgaWYgKHJvb3RFbGVtZW50TmFtZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKHJvb3RFbGVtZW50TmFtZS5lcXVhbHMoInNjaGVtYSIpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGZhY3RvcnkgPSBwYXJlbnQuZ2V0RmFjdG9yeShVUkkuY3JlYXRlVVJJKCIqLnhzZCIpLCBjb250ZW50VHlwZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHJvb3RFbGVtZW50TmFtZS5lcXVhbHMoImRlZmluaXRpb25zIikpCi0gICAgICAgICAgewotICAgICAgICAgICAgZmFjdG9yeSA9IHBhcmVudC5nZXRGYWN0b3J5KFVSSS5jcmVhdGVVUkkoIioud3NkbCIpLCBjb250ZW50VHlwZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWN0b3J5OwotICB9Ci0KLSAgLy8gdGhpcyBtZXRob2QgdXNlcyBhIFNBWCBQYXJzZXIgdG8gcGFyc2VyIGEgc3RyZWFtIGFuZCBkZXRlcm1pbmUgdGhlIHJvb3QgZWxlbWVudCBuYW1lCi0gIC8vIG9mIGFueSB4bWwgY29udGVudAotICBwcml2YXRlIFN0cmluZyBnZXRSb290RWxlbWVudE5hbWUoU3RyaW5nIHVyaSkKLSAgewotICAgIFJvb3RFbGVtZW50TmFtZUNvbnRlbnRIYW5kbGVyIGhhbmRsZXIgPSBuZXcgUm9vdEVsZW1lbnROYW1lQ29udGVudEhhbmRsZXIoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBYTUxSZWFkZXIgcmVhZGVyID0gWE1MUmVhZGVyRmFjdG9yeS5jcmVhdGVYTUxSZWFkZXIoKTsKLSAgICAgIHJlYWRlci5zZXRDb250ZW50SGFuZGxlcihoYW5kbGVyKTsKLSAgICAgIHJlYWRlci5wYXJzZSh1cmkpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLQotICAgIHJldHVybiBoYW5kbGVyLnJvb3RFbGVtZW50TmFtZTsKLSAgfQotCi0gIHByb3RlY3RlZCBzdGF0aWMgY2xhc3MgUm9vdEVsZW1lbnROYW1lQ29udGVudEhhbmRsZXIgZXh0ZW5kcyBEZWZhdWx0SGFuZGxlcgotICB7Ci0gICAgcHVibGljIFN0cmluZyByb290RWxlbWVudE5hbWU7Ci0KLSAgICBwdWJsaWMgdm9pZCBzdGFydEVsZW1lbnQoU3RyaW5nIHVyaSwgU3RyaW5nIGxvY2FsTmFtZSwgU3RyaW5nIHFOYW1lLCBBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpIHRocm93cyBTQVhFeGNlcHRpb24KLSAgICB7Ci0gICAgICByb290RWxlbWVudE5hbWUgPSBsb2NhbE5hbWU7Ci0KLSAgICAgIC8vIGhlcmUgSSB0aHJvdyBhbiBleGNlcHRpb24gdG8gbWFrZSB0aGUgU0FYIFBhcnNlciB0byBzdG9wIHBhcnNpbmcKLSAgICAgIHRocm93IG5ldyBTQVhFeGNlcHRpb24oIlNBWFBhcnNlciBpbnRlbnRvbmFsbHkgc3RvcHBlZCIpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0OWI1NTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw7Ci0KLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLldyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5PdXRwdXRLZXlzOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXI7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlVSSUNvbnZlcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuaW1wbC5SZXNvdXJjZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRWNvcmVVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkRlZmluaXRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWwuV1NETFJlc291cmNlRmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbC5YU0RTY2hlbWFMb2NhdG9yQWRhcHRlckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QudXRpbC5EZWZhdWx0SkFYUENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuSkFYUENvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuSkFYUFBvb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEU2NoZW1hTG9jYXRvcjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy54bWwuc2F4LkVycm9ySGFuZGxlcjsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb247Ci0KLQotLyoqCi0gKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotICogVGhlIDxiPlJlc291cmNlPC9iPiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIG1vZGVsLgotICogVGhpcyBzcGVjaWFsaXplZCByZXNvdXJjZSBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBpdCdzIG93biB3YXkgb2YgbWFraW5nIGtleXMgYW5kIAotICogaHJlZnMsIGFuZCBpdCdzIG93biBzZXJpYWxpemF0aW9uLiBUaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCBmb3Igc3ViY2xhc3NpbmcgCi0gKiBvdXRzaWRlIG9mIHRoZSBtb2RlbCBpbXBsZW1lbnRhdGlvbjsgaXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBpcyB3aXRoIHRoZSAKLSAqIFJlc291cmNlIGZyYW1ld29yay4KLSAqIDxwPgotICogPGI+Tm90ZTo8L2I+IFRoaXMgY2xhc3MvaW50ZXJmYWNlIGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8KLSAqIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjawotICogZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4KLSAqIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuCi0gKiA8L3A+Ci0gKiBAc2luY2UgMS4wCi0gKiBAaWdub3JlCi0gKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbC5XU0RMUmVzb3VyY2VGYWN0b3J5SW1wbAotICogQGdlbmVyYXRlZAotICovCi1wdWJsaWMgY2xhc3MgV1NETFJlc291cmNlSW1wbCBleHRlbmRzIFJlc291cmNlSW1wbAotewotCi0gIHByaXZhdGUgYm9vbGVhbiB1c2VFeHRlbnNpb25GYWN0b3JpZXMgPSB0cnVlOwotCi0gIHByaXZhdGUgYm9vbGVhbiBjb250aW51ZU9uTG9hZEVycm9yID0gdHJ1ZTsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0VfRVhURU5TSU9OX0ZBQ1RPUklFUyA9ICJVU0VfRVhURU5TSU9OX0ZBQ1RPUklFUyI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05USU5VRV9PTl9MT0FEX0VSUk9SID0gIkNPTlRJTlVFX09OX0xPQURfRVJST1IiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NETF9FTkNPRElORyA9ICJXU0RMX0VOQ09ESU5HIjsgLy8kTk9OLU5MUy0xJAotCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfUFJPR1JFU1NfTU9OSVRPUiA9ICJXU0RMX1BST0dSRVNTX01PTklUT1IiOyAvLyROT04tTkxTLTEkCi0KLSAgLyoqCi0gICAqIEFkZCB0aGlzIG9wdGlvbiB3aXRoIGEgdmFsdWUgb2YgQm9vbGVhbi5UUlVFIHRvIHRoZSBvcHRpb25zIG1hcCB3aGVuCi0gICAqIGxvYWRpbmcgYSByZXNvdXJjZSB0byBpbnN0cnVjdCB0aGUgbG9hZGVyIHRvIHRyYWNrIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGZvcgotICAgKiBlYWNoIG5vZGUgaW4gdGhlIHNvdXJjZSBkb2N1bWVudC4KLSAgICogCi0gICAqIEBzZWUgV1NETFBhcnNlciNnZXRVc2VyRGF0YShvcmcudzNjLmRvbS5Ob2RlKQotICAgKiBAc2VlIFdTRExQYXJzZXIjZ2V0U3RhcnRDb2x1bW4ob3JnLnczYy5kb20uTm9kZSkKLSAgICogQHNlZSBXU0RMUGFyc2VyI2dldEVuZENvbHVtbihvcmcudzNjLmRvbS5Ob2RlKQotICAgKiBAc2VlIFdTRExQYXJzZXIjZ2V0U3RhcnRMaW5lKG9yZy53M2MuZG9tLk5vZGUpCi0gICAqIEBzZWUgV1NETFBhcnNlciNnZXRFbmRMaW5lKG9yZy53M2MuZG9tLk5vZGUpCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUUkFDS19MT0NBVElPTiA9ICJUUkFDS19MT0NBVElPTiI7IC8vJE5PTi1OTFMtMSQKLQotICAvKioKLSAgICogVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgYXMgYW4gb3B0aW9uIG9uIFJlc291cmNlI2xvYWQgbWV0aG9kcyB0byBzcGVjaWZ5IEpBWFAgcG9vbCB0byBiZSB1c2VkCi0gICAqIGZvciBsb2FkaW5nIGFuZCBzZXJpYWxpemluZyBYTUwgU2NoZW1hcy4KLSAgICogQHNlZSBSZXNvdXJjZSNsb2FkKElucHV0U3RyZWFtLCBNYXApCi0gICAqIEBzZWUgUmVzb3VyY2UjbG9hZChNYXApCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXU0RMX0pBWFBfUE9PTCA9ICJXU0RMX0pBWFBfUE9PTCI7IC8vJE5PTi1OTFMtMSQKLSAgCi0gIC8qKgotICAgKiBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCBhcyBhbiBvcHRpb24gb24gUmVzb3VyY2UjbG9hZCBtZXRob2RzIHRvIHNwZWNpZnkgSkFYUCBjb25maWd1cmF0aW9uCi0gICAqIHRoYXQgY3JlYXRlcyBhbmQgY29uZmlndXJlcyBTQVgsIERPTSBwYXJzZXJzIGFuZCBUcmFuc2Zvcm1lci4KLSAgICogQHNlZSBSZXNvdXJjZSNsb2FkKElucHV0U3RyZWFtLCBNYXApCi0gICAqIEBzZWUgUmVzb3VyY2UjbG9hZChNYXApCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXU0RMX0pBWFBfQ09ORklHID0gIldTRExfSkFYUF9DT05GSUciOyAvLyROT04tTkxTLTEkCi0gIAotICAvKioKLSAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgcmVzb3VyY2UuIAotICAgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPiAKLSAgICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gICAqIAotICAgKiBAcGFyYW0gdXJpIHRoZSBVUkkgb2YgdGhlIG5ldyByZXNvdXJjZS4gCi0gICAqIEBnZW5lcmF0ZWQKLSAgICovCi0gIHB1YmxpYyBXU0RMUmVzb3VyY2VJbXBsKFVSSSB1cmkpCi0gIHsKLSAgICBzdXBlcih1cmkpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgZG9TYXZlKE91dHB1dFN0cmVhbSBvcywgTWFwIG9wdGlvbnMpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbigpOwotICAgIGlmIChkZWZpbml0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBkZWZpbml0aW9uLmdldERvY3VtZW50KCk7Ci0gICAgICBpZiAoZG9jdW1lbnQgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgKChEZWZpbml0aW9uSW1wbClkZWZpbml0aW9uKS51cGRhdGVEb2N1bWVudCgpOwotICAgICAgICBkb2N1bWVudCA9IGRlZmluaXRpb24uZ2V0RG9jdW1lbnQoKTsKLSAgICAgIH0KLQotICAgICAgaWYgKGRlZmluaXRpb24uZ2V0RWxlbWVudCgpID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgICgoRGVmaW5pdGlvbkltcGwpZGVmaW5pdGlvbikudXBkYXRlRWxlbWVudCgpOwotICAgICAgfQotCi0gICAgICBkb1NlcmlhbGl6ZShvcywgZG9jdW1lbnQsIG9wdGlvbnMpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXNvdXJjZSdzIERlZmluaXRpb24uCi0gICAqLwotICBwdWJsaWMgRGVmaW5pdGlvbiBnZXREZWZpbml0aW9uKCkKLSAgewotICAgIHJldHVybiBnZXRDb250ZW50cygpLnNpemUoKSA9PSAxICYmIGdldENvbnRlbnRzKCkuZ2V0KDApIGluc3RhbmNlb2YgRGVmaW5pdGlvbiA/IChEZWZpbml0aW9uKWdldENvbnRlbnRzKCkuZ2V0KDApIDogbnVsbDsKLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIHZvaWQgZG9TZXJpYWxpemUoT3V0cHV0U3RyZWFtIG91dHB1dFN0cmVhbSwgRG9jdW1lbnQgZG9jdW1lbnQsIFN0cmluZyBlbmNvZGluZykKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIFRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyID0gbmV3IERlZmF1bHRKQVhQQ29uZmlndXJhdGlvbigpLmNyZWF0ZVRyYW5zZm9ybWVyKGVuY29kaW5nKTsKLSAgICAgIC8vIEJlIHN1cmUgdG8gdXNlIGFjdHVhbCBlbmNvZGluZyBvZiB0aGUgdHJhbnNmb3JtZXIgd2hpY2ggbWlnaHQgYmUgbm9uLW51bGwgZXZlbiBpZiBlbmNvZGluZyBzdGFydGVkIGFzIG51bGwuCi0gICAgICBlbmNvZGluZyA9IHRyYW5zZm9ybWVyLmdldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuRU5DT0RJTkcpOwotICAgICAgV3JpdGVyIHdyaXRlciA9IGVuY29kaW5nID09IG51bGwgPyBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKG91dHB1dFN0cmVhbSkgOiBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKG91dHB1dFN0cmVhbSwgZW5jb2RpbmcpOwotICAgICAgdHJhbnNmb3JtZXIudHJhbnNmb3JtKG5ldyBET01Tb3VyY2UoZG9jdW1lbnQpLCBuZXcgU3RyZWFtUmVzdWx0KHdyaXRlcikpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGV4Y2VwdGlvbikKLSAgICB7Ci0gICAgICBXU0RMUGx1Z2luLklOU1RBTkNFLmxvZyhleGNlcHRpb24pOwotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBkb1NlcmlhbGl6ZShPdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtLCBEb2N1bWVudCBkb2N1bWVudCwgTWFwIG9wdGlvbnMpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgSkFYUFBvb2wgamF4cFBvb2wgPSBudWxsOwotICAgIEpBWFBDb25maWd1cmF0aW9uIGNvbmZpZyA9IG51bGw7Ci0gICAgU3RyaW5nIGVuY29kaW5nID0gbnVsbDsKLSAgICAKLSAgICBpZiAob3B0aW9ucyAhPSBudWxsKQotICAgIHsKLSAgICAgIGpheHBQb29sID0gKEpBWFBQb29sKW9wdGlvbnMuZ2V0KFdTRExfSkFYUF9QT09MKTsKLSAgICAgIGNvbmZpZyA9IChKQVhQQ29uZmlndXJhdGlvbilvcHRpb25zLmdldChXU0RMX0pBWFBfQ09ORklHKTsKLSAgICAgIGVuY29kaW5nID0gKFN0cmluZylvcHRpb25zLmdldChXU0RMX0VOQ09ESU5HKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGpheHBQb29sID09IG51bGwpCi0gICAgewotICAgICAgaWYgKGNvbmZpZyA9PSBudWxsKQotICAgICAgewotICAgICAgICBkb1NlcmlhbGl6ZShvdXRwdXRTdHJlYW0sIGRvY3VtZW50LCBlbmNvZGluZyk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIgPSBjb25maWcuY3JlYXRlVHJhbnNmb3JtZXIoZW5jb2RpbmcpOwotICAgICAgICAgIC8vIEJlIHN1cmUgdG8gdXNlIGFjdHVhbCBlbmNvZGluZyBvZiB0aGUgdHJhbnNmb3JtZXIgd2hpY2ggbWlnaHQgYmUgbm9uLW51bGwgZXZlbiBpZiBlbmNvZGluZyBzdGFydGVkIGFzIG51bGwuCi0gICAgICAgICAgZW5jb2RpbmcgPSB0cmFuc2Zvcm1lci5nZXRPdXRwdXRQcm9wZXJ0eShPdXRwdXRLZXlzLkVOQ09ESU5HKTsKLSAgICAgICAgICBXcml0ZXIgd3JpdGVyID0gZW5jb2RpbmcgPT0gbnVsbCA/IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIob3V0cHV0U3RyZWFtKSA6IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIob3V0cHV0U3RyZWFtLCBlbmNvZGluZyk7Ci0gICAgICAgICAgdHJhbnNmb3JtZXIudHJhbnNmb3JtKG5ldyBET01Tb3VyY2UoZG9jdW1lbnQpLCBuZXcgU3RyZWFtUmVzdWx0KHdyaXRlcikpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChUcmFuc2Zvcm1lckV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICBXU0RMUGx1Z2luLmdldFBsdWdpbigpLmxvZyhleGNlcHRpb24pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBUcmFuc2Zvcm1lciB0cmFuc2Zvcm1lciA9IG51bGw7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgdHJhbnNmb3JtZXIgPSBqYXhwUG9vbC5nZXRUcmFuc2Zvcm1lcihlbmNvZGluZyk7Ci0gICAgICAgIFdyaXRlciB3cml0ZXIgPSBlbmNvZGluZyA9PSBudWxsID8gbmV3IE91dHB1dFN0cmVhbVdyaXRlcihvdXRwdXRTdHJlYW0pIDogbmV3IE91dHB1dFN0cmVhbVdyaXRlcihvdXRwdXRTdHJlYW0sIGVuY29kaW5nKTsKLSAgICAgICAgdHJhbnNmb3JtZXIudHJhbnNmb3JtKG5ldyBET01Tb3VyY2UoZG9jdW1lbnQpLCBuZXcgU3RyZWFtUmVzdWx0KHdyaXRlcikpOwotICAgICAgfQotICAgICAgY2F0Y2ggKFRyYW5zZm9ybWVyRXhjZXB0aW9uIGV4Y2VwdGlvbikKLSAgICAgIHsKLSAgICAgICAgV1NETFBsdWdpbi5JTlNUQU5DRS5sb2coZXhjZXB0aW9uKTsKLSAgICAgIH0KLSAgICAgIGZpbmFsbHkKLSAgICAgIHsKLSAgICAgICAgamF4cFBvb2wucmVsZWFzZVRyYW5zZm9ybWVyKHRyYW5zZm9ybWVyKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogTG9hZHMgYSBuZXcge0BsaW5rIFdTRExSZXNvdXJjZUltcGx9IGludG8gdGhlIHJlc291cmNlIHNldC4KLSAgICogQHBhcmFtIGlucHV0U291cmNlIHRoZSBjb250ZW50cyBvZiB0aGUgbmV3IHJlc291cmNlLgotICAgKiBAcGFyYW0gb3B0aW9ucyBhbnkgb3B0aW9ucyB0byBpbmZsdWVuY2UgbG9hZGluZyBiZWhhdmlvci4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGRvTG9hZChJbnB1dFNvdXJjZSBpbnB1dFNvdXJjZSwgTWFwIG9wdGlvbnMpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgLy8gVGhpcyBwYXR0ZXJuIGF2b2lkcyBsb2FkaW5nIHRoZSBJUHJvZ3Jlc3NNb25pdG9yIGNsYXNzIHdoZW4gdGhlcmUgaXMgbm8gcHJvZ3Jlc3MgbW9uaXRvci4KLSAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBmb3Igc3RhbmQtYWxvbmUgZXhlY3V0aW9uIHRvIHdvcmsgY29ycmVjdGx5LgotICAgIC8vCi0gICAgSVByb2dyZXNzTW9uaXRvciBwcm9ncmVzc01vbml0b3IgPSBudWxsOwotICAgIE9iamVjdCBtb25pdG9yID0gb3B0aW9ucyA9PSBudWxsID8gbnVsbCA6IG9wdGlvbnMuZ2V0KFdTRExfUFJPR1JFU1NfTU9OSVRPUik7Ci0gICAgaWYgKG1vbml0b3IgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9ncmVzc01vbml0b3IgPSAoSVByb2dyZXNzTW9uaXRvciltb25pdG9yOwotICAgICAgcHJvZ3Jlc3NNb25pdG9yLnNldFRhc2tOYW1lKFdTRExQbHVnaW4uSU5TVEFOQ0UuZ2V0U3RyaW5nKCJfVUlfUmVzb3VyY2VMb2FkX3Byb2dyZXNzIikpOyAvLyROT04tTkxTLTEkCi0gICAgICBwcm9ncmVzc01vbml0b3Iuc3ViVGFzayhnZXRVUkkoKS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICBPYmplY3QgYmluZGluZ3MgPSBvcHRpb25zID09IG51bGwgPyBudWxsIDogb3B0aW9ucy5nZXQoVVNFX0VYVEVOU0lPTl9GQUNUT1JJRVMpOwotICAgIGlmIChiaW5kaW5ncyAhPSBudWxsICYmIGJpbmRpbmdzIGluc3RhbmNlb2YgQm9vbGVhbikKLSAgICAgIC8vIHRydWUgYnkgZGVmYXVsdAotICAgICAgdXNlRXh0ZW5zaW9uRmFjdG9yaWVzID0gKChCb29sZWFuKWJpbmRpbmdzKS5ib29sZWFuVmFsdWUoKTsKLQotICAgIE9iamVjdCBjb250aW51ZU9uRXJyb3IgPSBvcHRpb25zID09IG51bGwgPyBudWxsIDogb3B0aW9ucy5nZXQoQ09OVElOVUVfT05fTE9BRF9FUlJPUik7Ci0gICAgaWYgKGNvbnRpbnVlT25FcnJvciAhPSBudWxsICYmIGNvbnRpbnVlT25FcnJvciBpbnN0YW5jZW9mIEJvb2xlYW4pCi0gICAgICAvLyB0cnVlIGJ5IGRlZmF1bHQKLSAgICAgIGNvbnRpbnVlT25Mb2FkRXJyb3IgPSAoKEJvb2xlYW4pY29udGludWVPbkVycm9yKS5ib29sZWFuVmFsdWUoKTsKLQotICAgIERvY3VtZW50IGRvYyA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgYm9vbGVhbiB0cmFja0xvY2F0aW9uID0gb3B0aW9ucyAhPSBudWxsICYmIEJvb2xlYW4uVFJVRS5lcXVhbHMob3B0aW9ucy5nZXQoVFJBQ0tfTE9DQVRJT04pKTsKLQotICAgICAgaWYgKHRyYWNrTG9jYXRpb24pCi0gICAgICB7Ci0gICAgICAgIGRvYyA9IGdldERvY3VtZW50VXNpbmdTQVgoaW5wdXRTb3VyY2UsIG9wdGlvbnMpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBDcmVhdGUgYSBET00gZG9jdW1lbnQKLSAgICAgICAgZG9jID0gZ2V0RG9jdW1lbnQoaW5wdXRTb3VyY2UsIG5ldyBJbnRlcm5hbEVycm9ySGFuZGxlcigpLCBvcHRpb25zKTsKLSAgICAgIH0KLQotICAgICAgaWYgKGRvYyAhPSBudWxsICYmIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBpZiAoIWZpbmREZWZpbml0aW9uKGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoY29udGludWVPbkxvYWRFcnJvcikKLSAgICAgICAgICAgIGhhbmRsZURlZmluaXRpb25FbGVtZW50KGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFdTRExQbHVnaW4uZ2V0UGx1Z2luKCkuZ2V0U3RyaW5nKCJfRVJST1JfSU5WQUxJRF9XU0RMIikpOyAvLyROT04tTkxTLTEkCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaGFuZGxlRGVmaW5pdGlvbkVsZW1lbnQobnVsbCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgaWYgKGNvbnRpbnVlT25Mb2FkRXJyb3IpCi0gICAgICB7Ci0gICAgICAgIFdTRExQbHVnaW4uSU5TVEFOQ0UubG9nKGV4Y2VwdGlvbik7Ci0gICAgICAgIGhhbmRsZURlZmluaXRpb25FbGVtZW50KG51bGwpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICB0aHJvdyBleGNlcHRpb247Ci0gICAgfQotCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLQotICAgIGZvciAoSXRlcmF0b3IgaSA9IGdldENvbnRlbnRzKCkuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIGRlZmluaXRpb24gPSAoRGVmaW5pdGlvbilpLm5leHQoKTsKLQotICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW5saW5lIHNjaGVtYXMgbG9jYXRpb24gCi0gICAgICBUeXBlcyB0eXBlcyA9IGRlZmluaXRpb24uZ2V0RVR5cGVzKCk7Ci0gICAgICBpZiAodHlwZXMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZWwgPSBudWxsOwotICAgICAgICBmb3IgKEl0ZXJhdG9yIGogPSB0eXBlcy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsgai5oYXNOZXh0KCk7KQotICAgICAgICB7Ci0gICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpai5uZXh0KCk7Ci0gICAgICAgICAgaWYgKCEoZXh0ZW5zaWJpbGl0eUVsZW1lbnQgaW5zdGFuY2VvZiBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIGVsID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRlbnNpYmlsaXR5RWxlbWVudDsKLSAgICAgICAgICBYU0RTY2hlbWEgc2NoZW1hID0gZWwuZ2V0U2NoZW1hKCk7Ci0gICAgICAgICAgaWYgKHNjaGVtYSAhPSBudWxsKQotICAgICAgICAgICAgc2NoZW1hLnNldFNjaGVtYUxvY2F0aW9uKGdldFVSSSgpLnRvU3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHByb2dyZXNzTW9uaXRvciAhPSBudWxsKQotICAgIHsKLSAgICAgIHByb2dyZXNzTW9uaXRvci53b3JrZWQoMSk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIExvYWRzIGEgbmV3IHtAbGluayBXU0RMUmVzb3VyY2VJbXBsfSBpbnRvIHRoZSByZXNvdXJjZSBzZXQuCi0gICAqIEBwYXJhbSBpbnB1dFN0cmVhbSB0aGUgY29udGVudHMgb2YgdGhlIG5ldyByZXNvdXJjZS4KLSAgICogQHBhcmFtIG9wdGlvbnMgYW55IG9wdGlvbnMgdG8gaW5mbHVlbmNlIGxvYWRpbmcgYmVoYXZpb3IuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBkb0xvYWQoSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0sIE1hcCBvcHRpb25zKSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIElucHV0U291cmNlIGlucHV0U291cmNlID0gaW5wdXRTdHJlYW0gaW5zdGFuY2VvZiBVUklDb252ZXJ0ZXIuUmVhZGFibGVJbnB1dFN0cmVhbSA/IG5ldyBJbnB1dFNvdXJjZSgKLSAgICAgICgoVVJJQ29udmVydGVyLlJlYWRhYmxlSW5wdXRTdHJlYW0paW5wdXRTdHJlYW0pLmFzUmVhZGVyKCkpIDogbmV3IElucHV0U291cmNlKGlucHV0U3RyZWFtKTsKLQotICAgIGlmIChnZXRVUkkoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyBpZCA9IGdldFVSSSgpLnRvU3RyaW5nKCk7Ci0gICAgICBpbnB1dFNvdXJjZS5zZXRQdWJsaWNJZChpZCk7Ci0gICAgICBpbnB1dFNvdXJjZS5zZXRTeXN0ZW1JZChpZCk7Ci0gICAgfQotICAgIGRvTG9hZChpbnB1dFNvdXJjZSwgb3B0aW9ucyk7Ci0gIH0KLQotICAvKioKLSAgICogVXNlIGEgY3VzdG9tIFNBWCBwYXJzZXIgdG8gYWxsb3cgdXMgdG8gdHJhY2sgdGhlIHNvdXJjZSBsb2NhdGlvbiBvZiAKLSAgICogZWFjaCBub2RlIGluIHRoZSBzb3VyY2UgWE1MIGRvY3VtZW50LgotICAgKiBAcGFyYW0gaW5wdXRTb3VyY2UgdGhlIHBhcnNpbmcgc291cmNlLiBNdXN0IG5vdCBiZSBudWxsLgotICAgKiBAcGFyYW0gb3B0aW9ucyB0aGUgbG9hZGluZyBvcHRpb25zLiAKLSAgICogQHJldHVybiB0aGUgRE9NIGRvY3VtZW50IGNyZWF0ZWQgYnkgcGFyc2luZyB0aGUgaW5wdXQgc3RyZWFtLiAKLSAgICovCi0gIHByaXZhdGUgRG9jdW1lbnQgZ2V0RG9jdW1lbnRVc2luZ1NBWChJbnB1dFNvdXJjZSBpbnB1dFNvdXJjZSwgTWFwIG9wdGlvbnMpCi0gIHsKLSAgICBXU0RMUGFyc2VyIHdzZGxQYXJzZXIgPSBuZXcgV1NETFBhcnNlcihvcHRpb25zKTsKLSAgICB3c2RsUGFyc2VyLnBhcnNlKGlucHV0U291cmNlKTsKLQotICAgIENvbGxlY3Rpb24gZXJyb3JzID0gd3NkbFBhcnNlci5nZXREaWFnbm9zdGljcygpOwotCi0gICAgaWYgKGVycm9ycyAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gZXJyb3JzLml0ZXJhdG9yKCk7Ci0KLSAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFdTRExEaWFnbm9zdGljIHdzZGxEaWFnbm9zdGljID0gKFdTRExEaWFnbm9zdGljKWl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgc3dpdGNoICh3c2RsRGlhZ25vc3RpYy5nZXRTZXZlcml0eSgpLmdldFZhbHVlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIFdTRExEaWFnbm9zdGljU2V2ZXJpdHkuRkFUQUw6Ci0gICAgICAgICAgY2FzZSBXU0RMRGlhZ25vc3RpY1NldmVyaXR5LkVSUk9SOgotICAgICAgICAgIHsKLSAgICAgICAgICAgIGdldEVycm9ycygpLmFkZCh3c2RsRGlhZ25vc3RpYyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2FzZSBXU0RMRGlhZ25vc3RpY1NldmVyaXR5LldBUk5JTkc6Ci0gICAgICAgICAgY2FzZSBXU0RMRGlhZ25vc3RpY1NldmVyaXR5LklORk9STUFUSU9OOgotICAgICAgICAgIHsKLSAgICAgICAgICAgIGdldFdhcm5pbmdzKCkuYWRkKHdzZGxEaWFnbm9zdGljKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIERvY3VtZW50IGRvYyA9IHdzZGxQYXJzZXIuZ2V0RG9jdW1lbnQoKTsKLSAgICAKLSAgICBpZiAod3NkbFBhcnNlci5nZXRFbmNvZGluZygpICE9IG51bGwpCi0gICAgewotICAgICAgZ2V0RGVmYXVsdFNhdmVPcHRpb25zKCkucHV0KFdTRExfRU5DT0RJTkcsIHdzZGxQYXJzZXIuZ2V0RW5jb2RpbmcoKSk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBkb2M7Ci0gIH0KLQotICAvKioKLSAgICogQnVpbGRzIGEgZG9jdW1lbnQgdXNpbmcgWGVyY2VzLgotICAgKiBAcGFyYW0gaW5wdXRTb3VyY2UgdGhlIGNvbnRlbnRzIHRvIHBhcnNlLgotICAgKiBAcGFyYW0gZXJyb3JIYW5kbGVyIHRoZSBoYW5kbGVkIHVzZWQgYnkgdGhlIHBhcnNlci4KLSAgICogQHJldHVybiBhIGRvY3VtZW50LgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgRG9jdW1lbnQgZ2V0RG9jdW1lbnQoSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UsIEVycm9ySGFuZGxlciBlcnJvckhhbmRsZXIpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgQ2xhc3NMb2FkZXIgcHJldmlvdXNDbGFzc0xvYWRlciA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5zZXRDb250ZXh0Q2xhc3NMb2FkZXIoV1NETFJlc291cmNlRmFjdG9yeUltcGwuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKSk7Ci0KLSAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZG9jdW1lbnRCdWlsZGVyRmFjdG9yeSA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLSAgICAgIGRvY3VtZW50QnVpbGRlckZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7Ci0gICAgICBkb2N1bWVudEJ1aWxkZXJGYWN0b3J5LnNldFZhbGlkYXRpbmcoZmFsc2UpOwotCi0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgLy8gVXNpbmcgYSBkZWZlcnJlZCBET00gZG9jdW1lbnQgaW4gdGhlIFdTREwgbW9kZWwgbWF5IGNhdXNlIGEKLSAgICAgICAgLy8gcGVyZm9ybWFuY2UgcHJvYmxlbSBpbiB0ZXJtcyBvZiBtZW1vcnkgY29uc3VtcHRpb24gaW4gcGFydGljdWxhci4KLSAgICAgICAgLy8gV2UncmUgYXR0ZW1wdGluZyB0byB1c2UgdGhlIGZlYXR1cmUgd2hpY2ggaW5zdHJ1Y3RzIHRoZSBYZXJjZXMgcGFyc2VyCi0gICAgICAgIC8vIHRvIG5vdCB1c2UgZGVmZXJyZWQgRE9NIHRyZWVzLgotICAgICAgICAvLyBUT0RPIENvbnZlcnQgdG8gdXNlIHNldEZlYXR1cmUgd2hlbiBpdCBiZWNvbWVzIGF2YWlsYWJsZS4gVGhlIFhlcmNlcwotICAgICAgICAvLyB2ZXJzaW9ucyA8IDIuNy4xIGRvIG5vdCBmdWxseSBzdXBwb3J0IHNldEZlYXR1cmUsIHNvIHdlIGhhdmUgdG8gdXNlCi0gICAgICAgIC8vIHNldEF0dHJpYnV0ZS4KLSAgICAgICAgZG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5zZXRBdHRyaWJ1dGUoImh0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy9kb20vZGVmZXItbm9kZS1leHBhbnNpb24iLCBCb29sZWFuLkZBTFNFKTsgLy8kTk9OLU5MUy0xJAotICAgICAgfQotICAgICAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICAvLyBJZ25vcmUsIGFzIHRoZSBjb2RlIHdpbGwgaGF2ZSB0byBydW4gd2l0aCBwYXJzZXJzIG90aGVyIHRoYW4gWGVyY2VzLgotICAgICAgfQotCi0gICAgICBEb2N1bWVudEJ1aWxkZXIgZG9jdW1lbnRCdWlsZGVyID0gZG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKLQotICAgICAgLy8gVEJEIC0gUmV2aXNpdAotICAgICAgLy9FbnRpdHlSZXNvbHZlciBlbnRpdHlSZXNvbHZlciA9IGNyZWF0ZUVudGl0eVJlc29sdmVyKCk7Ci0gICAgICAvL2RvY3VtZW50QnVpbGRlci5zZXRFbnRpdHlSZXNvbHZlcihlbnRpdHlSZXNvbHZlcik7Ci0KLSAgICAgIGRvY3VtZW50QnVpbGRlci5zZXRFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKTsKLQotICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBkb2N1bWVudEJ1aWxkZXIucGFyc2UoaW5wdXRTb3VyY2UpOwotICAgICAgcmV0dXJuIGRvY3VtZW50OwotICAgIH0KLSAgICBjYXRjaCAoUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgdGhyb3cgbmV3IElPV3JhcHBlZEV4Y2VwdGlvbihleGNlcHRpb24pOwotICAgIH0KLSAgICBjYXRjaCAoU0FYRXhjZXB0aW9uIGV4Y2VwdGlvbikKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgSU9XcmFwcGVkRXhjZXB0aW9uKGV4Y2VwdGlvbik7Ci0gICAgfQotICAgIGZpbmFsbHkKLSAgICB7Ci0gICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihwcmV2aW91c0NsYXNzTG9hZGVyKTsKLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBCdWlsZHMgRE9NIGRvY3VtZW50IHVzaW5nIEpBWFAgRG9jdW1lbnRCdWlsZGVyCi0gICAqIEBzZWUgI1dTRExfSkFYUF9QT09MCi0gICAqIEBzZWUgI1dTRExfSkFYUF9DT05GSUcKLSAgICogQHBhcmFtIGlucHV0U291cmNlIHRoZSBjb250ZW50IHRvIHBhcnNlcgotICAgKiBAcGFyYW0gZXJyb3JIYW5kbGVyIGVycm9yIGhhbmRsZXIgZm9yIHJlY29yZGluZyBhbnkgbG9hZGluZyBlcnJvcnMKLSAgICogQHBhcmFtIG9wdGlvbnMgbG9hZGluZyBvcHRpb25zCi0gICAqIEByZXR1cm4gZG9jdW1lbnQgRE9NIGRvY3VtZW50Ci0gICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIERvY3VtZW50IGdldERvY3VtZW50KElucHV0U291cmNlIGlucHV0U291cmNlLCBFcnJvckhhbmRsZXIgZXJyb3JIYW5kbGVyLCBNYXAgb3B0aW9ucykgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBKQVhQUG9vbCBqYXhwUG9vbCA9IG51bGw7Ci0gICAgSkFYUENvbmZpZ3VyYXRpb24gY29uZmlnID0gbnVsbDsKLSAgICBpZiAob3B0aW9ucyAhPSBudWxsKQotICAgIHsKLSAgICAgIGpheHBQb29sID0gKEpBWFBQb29sKW9wdGlvbnMuZ2V0KFdTRExfSkFYUF9QT09MKTsKLSAgICAgIGNvbmZpZyA9IChKQVhQQ29uZmlndXJhdGlvbilvcHRpb25zLmdldChXU0RMX0pBWFBfQ09ORklHKTsKLSAgICB9Ci0KLSAgICBpZiAoamF4cFBvb2wgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoY29uZmlnID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBnZXREb2N1bWVudChpbnB1dFNvdXJjZSwgZXJyb3JIYW5kbGVyKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBEb2N1bWVudEJ1aWxkZXIgZG9jdW1lbnRCdWlsZGVyID0gY29uZmlnLmNyZWF0ZURvY3VtZW50QnVpbGRlcihlcnJvckhhbmRsZXIpOwotICAgICAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gZG9jdW1lbnRCdWlsZGVyLnBhcnNlKGlucHV0U291cmNlKTsKLSAgICAgICAgICByZXR1cm4gZG9jdW1lbnQ7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gZXhjZXB0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgdGhyb3cgbmV3IElPV3JhcHBlZEV4Y2VwdGlvbihleGNlcHRpb24pOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChTQVhFeGNlcHRpb24gZXhjZXB0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgdGhyb3cgbmV3IElPV3JhcHBlZEV4Y2VwdGlvbihleGNlcHRpb24pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBEb2N1bWVudEJ1aWxkZXIgZG9jdW1lbnRCdWlsZGVyID0gbnVsbDsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBkb2N1bWVudEJ1aWxkZXIgPSBqYXhwUG9vbC5nZXREb2N1bWVudEJ1aWxkZXIoZXJyb3JIYW5kbGVyKTsKLSAgICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBkb2N1bWVudEJ1aWxkZXIucGFyc2UoaW5wdXRTb3VyY2UpOwotICAgICAgICByZXR1cm4gZG9jdW1lbnQ7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBJT1dyYXBwZWRFeGNlcHRpb24oZXhjZXB0aW9uKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChTQVhFeGNlcHRpb24gZXhjZXB0aW9uKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgSU9XcmFwcGVkRXhjZXB0aW9uKGV4Y2VwdGlvbik7Ci0gICAgICB9Ci0gICAgICBmaW5hbGx5Ci0gICAgICB7Ci0gICAgICAgIGpheHBQb29sLnJlbGVhc2VEb2N1bWVudEJ1aWxkZXIoZG9jdW1lbnRCdWlsZGVyKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gZmluZERlZmluaXRpb24oRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgaWYgKFdTRExDb25zdGFudHMubm9kZVR5cGUoZWxlbWVudCkgPT0gV1NETENvbnN0YW50cy5ERUZJTklUSU9OKQotICAgIHsKLSAgICAgIGhhbmRsZURlZmluaXRpb25FbGVtZW50KGVsZW1lbnQpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotICAgICAgLyoKLSAgICAgICBmb3IgKE5vZGUgY2hpbGQgPSBlbGVtZW50LmdldEZpcnN0Q2hpbGQoKTsgY2hpbGQgIT0gbnVsbDsgY2hpbGQgPSBjaGlsZC5nZXROZXh0U2libGluZygpKQotICAgICAgIHsKLSAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBFbGVtZW50KQotICAgICAgIHsKLSAgICAgICBpZiAoZmluZERlZmluaXRpb24oKEVsZW1lbnQpIGNoaWxkKSkKLSAgICAgICB7Ci0gICAgICAgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICB9Ci0gICAgICAgfQotICAgICAgIH0KLSAgICAgICAqLwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgaGFuZGxlRGVmaW5pdGlvbkVsZW1lbnQoRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLSAgICBpZiAoZWxlbWVudCA9PSBudWxsKQotICAgIHsKLSAgICAgIGRlZmluaXRpb24gPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlRGVmaW5pdGlvbigpOwotICAgICAgKChEZWZpbml0aW9uSW1wbClkZWZpbml0aW9uKS5zZXRVc2VFeHRlbnNpb25GYWN0b3JpZXModXNlRXh0ZW5zaW9uRmFjdG9yaWVzKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGRlZmluaXRpb24gPSBEZWZpbml0aW9uSW1wbC5jcmVhdGVEZWZpbml0aW9uKGVsZW1lbnQsIGdldFVSSSgpLnRvU3RyaW5nKCksIHVzZUV4dGVuc2lvbkZhY3Rvcmllcyk7Ci0gICAgfQotICAgIGdldENvbnRlbnRzKCkuYWRkKGRlZmluaXRpb24pOwotICAgIC8vIERvIHdlIG5lZWQgdGhlIG5leHQgbGluZT8KLSAgICAoKERlZmluaXRpb25JbXBsKWRlZmluaXRpb24pLnJlY29uY2lsZVJlZmVyZW5jZXModHJ1ZSk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgc2VyaWFsaXplKE91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0sIERvY3VtZW50IGRvY3VtZW50KQotICB7Ci0gICAgc2VyaWFsaXplKG91dHB1dFN0cmVhbSwgZG9jdW1lbnQsIG51bGwpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyB2b2lkIHNlcmlhbGl6ZShPdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtLCBEb2N1bWVudCBkb2N1bWVudCwgU3RyaW5nIGVuY29kaW5nKQotICB7Ci0gICAgZG9TZXJpYWxpemUob3V0cHV0U3RyZWFtLCBkb2N1bWVudCwgZW5jb2RpbmcpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyB2b2lkIHNlcmlhbGl6ZShPdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtLCBFbGVtZW50IGVsZW1lbnQpCi0gIHsKLSAgICBzZXJpYWxpemUob3V0cHV0U3RyZWFtLCBlbGVtZW50LCBudWxsKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXJpYWxpemUoT3V0cHV0U3RyZWFtIG91dHB1dFN0cmVhbSwgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgZW5jb2RpbmcpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBkb1NlcmlhbGl6ZShvdXRwdXRTdHJlYW0sIGVsZW1lbnQsIGVuY29kaW5nKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgZXhjZXB0aW9uLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIHZvaWQgZG9TZXJpYWxpemUoT3V0cHV0U3RyZWFtIG91dHB1dFN0cmVhbSwgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgZW5jb2RpbmcpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgVHJhbnNmb3JtZXJGYWN0b3J5IHRyYW5zZm9ybWVyRmFjdG9yeSA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotICAgICAgVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIgPSB0cmFuc2Zvcm1lckZhY3RvcnkubmV3VHJhbnNmb3JtZXIoKTsKLQotICAgICAgdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5JTkRFTlQsICJ5ZXMiKTsgLy8kTk9OLU5MUy0xJAotICAgICAgdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5NRVRIT0QsICJ4bWwiKTsgLy8kTk9OLU5MUy0xJAotICAgICAgaWYgKGVuY29kaW5nICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRyYW5zZm9ybWVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuRU5DT0RJTkcsIGVuY29kaW5nKTsKLSAgICAgIH0KLQotICAgICAgdHJhbnNmb3JtZXIudHJhbnNmb3JtKG5ldyBET01Tb3VyY2UoZWxlbWVudCksIG5ldyBTdHJlYW1SZXN1bHQob3V0cHV0U3RyZWFtKSk7Ci0gICAgfQotICAgIGNhdGNoIChUcmFuc2Zvcm1lckV4Y2VwdGlvbiBleGNlcHRpb24pCi0gICAgewotICAgICAgV1NETFBsdWdpbi5JTlNUQU5DRS5sb2coZXhjZXB0aW9uKTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIGNsYXNzIEludGVybmFsRXJyb3JIYW5kbGVyIGltcGxlbWVudHMgRXJyb3JIYW5kbGVyCi0gIHsKLSAgICBwdWJsaWMgdm9pZCBlcnJvcihTQVhQYXJzZUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV1NETCBQQVJTRSBFUlJPUjogIiArIGUpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGZhdGFsRXJyb3IoU0FYUGFyc2VFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldTREwgUEFSU0UgRkFUQUwgRVJST1I6ICIgKyBlKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB3YXJuaW5nKFNBWFBhcnNlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXU0RMIFBBUlNFIFdBUk5JTkc6ICIgKyBlKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBhdHRhY2hlZChFT2JqZWN0IGVPYmplY3QpCi0gIHsKLSAgICBzdXBlci5hdHRhY2hlZChlT2JqZWN0KTsKLQotICAgIC8vIHdlIG5lZWQgdG8gYXR0YWNoIGEgWFNEU2NoZW1hTG9jYXRvciBpbiBvcmRlciB0byByZXNvbHZlIGlubGluZSBzY2hlbWEgbG9jYXRpb25zCi0gICAgLy8gaWYgdGhlcmUncyBub3QgYWxyZWFkeSBvbmUgYXR0YWNoZWQKLSAgICBYU0RTY2hlbWFMb2NhdG9yIHhzZFNjaGVtYUxvY2F0b3IgPSAoWFNEU2NoZW1hTG9jYXRvcilFY29yZVV0aWwuZ2V0UmVnaXN0ZXJlZEFkYXB0ZXIodGhpcywgWFNEU2NoZW1hTG9jYXRvci5jbGFzcyk7Ci0gICAgaWYgKHhzZFNjaGVtYUxvY2F0b3IgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBnZXRSZXNvdXJjZVNldCgpLmdldEFkYXB0ZXJGYWN0b3JpZXMoKS5hZGQobmV3IFhTRFNjaGVtYUxvY2F0b3JBZGFwdGVyRmFjdG9yeSgpKTsKLSAgICB9Ci0KLSAgICBpZiAoZU9iamVjdCBpbnN0YW5jZW9mIERlZmluaXRpb25JbXBsKQotICAgIHsKLSAgICAgIERlZmluaXRpb25JbXBsIGRlZmluaXRpb24gPSAoRGVmaW5pdGlvbkltcGwpZU9iamVjdDsKLSAgICAgIGRlZmluaXRpb24uc2V0SW5saW5lU2NoZW1hTG9jYXRpb25zKHRoaXMpOwotICAgIH0KLSAgfQotICAvKgotICAgcHVibGljIHZvaWQgc2V0SW5saW5lU2NoZW1hTG9jYXRpb25zKERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgIHsKLSAgIC8vIEluaXRpYWxpemUgdGhlIGlubGluZSBzY2hlbWFzIGxvY2F0aW9uIAotICAgVHlwZXMgdHlwZXMgPSBkZWZpbml0aW9uLmdldEVUeXBlcygpOwotICAgaWYgKHR5cGVzICE9IG51bGwpCi0gICB7Ci0gICBmb3IgKEl0ZXJhdG9yIGogPSB0eXBlcy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsgai5oYXNOZXh0KCk7KQotICAgewotICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZWwgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGoubmV4dCgpOwotICAgWFNEU2NoZW1hIHNjaGVtYSA9IGVsLmdldFNjaGVtYSgpOwotICAgaWYgKHNjaGVtYSAhPSBudWxsKQotICAgeyAgCi0gICBzY2hlbWEuc2V0U2NoZW1hTG9jYXRpb24oZ2V0VVJJKCkudG9TdHJpbmcoKSk7Ci0gICB9ICAKLSAgIH0gICAgICAgIAotICAgfSAgICAgIAotICAgfSovCi0KLSAgcHVibGljIE1hcCBnZXREZWZhdWx0U2F2ZU9wdGlvbnMoKQotICB7Ci0gICAgaWYgKGRlZmF1bHRTYXZlT3B0aW9ucyA9PSBudWxsKQotICAgIHsKLSAgICAgIGRlZmF1bHRTYXZlT3B0aW9ucyA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRlZmF1bHRTYXZlT3B0aW9uczsKLSAgfQotfSAvL1dTRExSZXNvdXJjZUZhY3RvcnlJbXBsCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS5odG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ0ZWI3Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2RsL3NyYy13c2RsL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi8uLi8uLi8vYXBpc3R5bGVzLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPHRpdGxlPldTREwgTW9kZWwgQVBJIE92ZXJ2aWV3PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5PgotPHA+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4KLQkJPC9wPgotPHRhYmxlIHdpZHRoPSI1MDAiPgotPHRyPgotPHRkPgotPHA+Ci0JCVRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byBsb2FkLCBtb2RpZnksIGFuZCBzYXZlIFdTREwgMS4xIGRvY3VtZW50cy4KLQkJPC9wPgotPC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2UueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbC9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjVhMGU5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzZGwvc3JjLXdzZGwvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08aHRtbD4KLQk8aGVhZD4KLQkJPG1ldGEKLQkJCW5hbWU9InJvb3QiCi0JCi0JCQljb250ZW50PSIuLi8uLi8uLi8uLi8uLi8uLi8iIC8+Ci0JCTx0aXRsZT5XU0RMIE1vZGVsIEFQSSBPdmVydmlldzwvdGl0bGU+Ci0JPC9oZWFkPgotCi0JPGJvZHk+Ci0JCTxhYnN0cmFjdD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLgotCQk8L2Fic3RyYWN0PgotCQk8cD4KLQkJVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIGxvYWQsIG1vZGlmeSwgYW5kIHNhdmUgV1NETCAxLjEgZG9jdW1lbnRzLgotCQk8L3A+IAotCTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS8uY2xhc3NwYXRoIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyOTE1OTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ij4KLQkJPGFjY2Vzc3J1bGVzPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0iamF2YXgveG1sL25hbWVzcGFjZS9RTmFtZSIvPgotCQk8L2FjY2Vzc3J1bGVzPgotCTwvY2xhc3NwYXRoZW50cnk+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZDUxZTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWJpbgotdGVtcC5mb2xkZXIKLXdzaXVpLmphcgotYnVpbGQueG1sCi1AZG90Ci1zcmMuemlwCi1qYXZhQ29tcGlsZXIuLi5hcmdzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvLnByb2plY3QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMTExMDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzaS51aTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNmNGZmYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI1dlZCBNYXIgMjkgMDQ6MDg6NTggRVNUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyOWQzYzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSNXZWQgTWFyIDI5IDA0OjA4OjU3IEVTVCAyMDA2Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotaW50ZXJuYWwuZGVmYXVsdC5jb21wbGlhbmNlPWRlZmF1bHQKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIwMWMwNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlX1BMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3NpLnVpOyBzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuNTAwLnF1YWxpZmllcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5XU0lVSVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJV9QUk9WSURFUl9OQU1FCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLUV4cG9ydC1QYWNrYWdlOiBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5hY3Rpb25zO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5hY3Rpb25zLmFjdGlvbkRlbGVnYXRlczt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9ucy5pY29uczt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwud2l6YXJkczt4LWludGVybmFsOj10cnVlCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lOyBidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamZhY2UudGV4dDtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXM7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS51aS5pZGU7cmVzb2x1dGlvbjo9b3B0aW9uYWw7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpLnZpZXdzO3Jlc29sdXRpb246PW9wdGlvbmFsO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS51aS5lZGl0b3JzO3Jlc29sdXRpb246PW9wdGlvbmFsO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5qZmFjZS50ZXh0O3Jlc29sdXRpb246PW9wdGlvbmFsO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS51aS53b3JrYmVuY2gudGV4dGVkaXRvcjtyZXNvbHV0aW9uOj1vcHRpb25hbDtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuamZhY2U7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpLmlkZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UudWkudmlld3M7YnVuZGxlLXZlcnNpb249IlszLjIuMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpLndvcmtiZW5jaC50ZXh0ZWRpdG9yO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS51aS5lZGl0b3JzO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbjtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDIuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbjtidW5kbGUtdmVyc2lvbj0iWzEuMS4wLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LndzaTtidW5kbGUtdmVyc2lvbj0iWzEuMC4xMDEsMS4xLjApIiwKLSBvcmcuZWNsaXBzZS53c3QuaW50ZXJuZXQubW9uaXRvci5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMiwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMiwxLjEuMCkiLAotIGphdmF4LndzZGw7YnVuZGxlLXZlcnNpb249IlsxLjUuMCwxLjYuMCkiLAotIG9yZy5lY2xpcHNlLndzdC54bWwudWk7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDEuMi4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIgotQnVuZGxlLUFjdGl2YXRpb25Qb2xpY3k6IGxhenkKLUJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL2Fib3V0Lmh0bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL2J1aWxkLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg1NzBmMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IC4sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBpY29ucy8sXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIGFib3V0Lmh0bWwKLXNvdXJjZS4uID0gc3JjLwotamFycy5jb21waWxlLm9yZGVyID0gLgotb3V0cHV0Li4gPSBiaW4vCi1zcmMuaW5jbHVkZXMgPSBidWlsZC5wcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvaWNvbnMvZnVsbC9vYmoxNi92YWxpZGF0ZS5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvaWNvbnMvZnVsbC9vYmoxNi92YWxpZGF0ZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZWIxMTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL2ljb25zL2Z1bGwvb2JqMTYvdmFsaWRhdGUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL2ljb25zL3dzaV9sb2dmaWxlX29iai5naWYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvaWNvbnMvd3NpX2xvZ2ZpbGVfb2JqLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiMTExMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvaWNvbnMvd3NpX2xvZ2ZpbGVfb2JqLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9wbHVnaW4ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI0NDJmZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0jIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jICAqIAotIyAgKiBDb250cmlidXRvcnM6IAotIyAgKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSEtLSBDb25zdGFudHMgZm9yIHN0cmluZ3MgIAotCi1fUExVR0lOX05BTUUgICAgICAgICAgICAgICAgICA9IFNvYXAgTW9uaXRvcgotX1BST1ZJREVSX05BTUUgICAgICAgICAgICAgICAgPSBFY2xpcHNlLm9yZwotX1VJX1dTSV9WQUxJREFUT1IgICAgICAgICAgICAgPSBXUy1JIE1lc3NhZ2UgVmFsaWRhdG9yCi1fVUlfQUNUSU9OX1ZBTElEQVRFICAgICAgICAgICA9IFZhbGlkYXRlIFdTLUkgTG9nIEZpbGUKLV9VSV9XSVpBUkRfVkFMSURBVEVfTE9HX1RJVExFID0gVmFsaWRhdGUgV1MtSSBNZXNzYWdlIExvZyBGaWxlCi1fVUlfTE9HX0VESVRPUiAgICAgICAgICAgICAgICA9IFhNTCBFZGl0b3IKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYTljNjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCEtLSAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0tLT4gCi0KLTxwbHVnaW4+Ci0KLSAgICAKLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gUHVycG9zZTogQWRkIHZhbGlkYXRvciBhY3Rpb24gdG8gVENQSVAgbW9uaXRvci4gICAgICAgICAtLT4KLTwhLS0gRXh0ZW5zaW9uIHBvaW50OiBvcmcuZWNsaXBzZS51aS52aWV3QWN0aW9ucyAgICAgICAgICAgICAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS52aWV3QWN0aW9ucyI+Ci0gICAgICA8dmlld0NvbnRyaWJ1dGlvbgotICAgICAgICAgICAgdGFyZ2V0SUQ9Im9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLnZpZXciCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UudWkuYXJ0aWNsZXMuYWN0aW9uLmNvbnRyaWJ1dGlvbi52aWV3Ij4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSJXUy1JIFByb2ZpbGUgVmFsaWRhdG9yIgotICAgICAgICAgICAgICAgaWNvbj0iaWNvbnMvZnVsbC9vYmoxNi92YWxpZGF0ZS5naWYiCi0gICAgICAgICAgICAgICB0b29sdGlwPSIlX1VJX1dJWkFSRF9WQUxJREFURV9MT0dfVElUTEUiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5hY3Rpb25zLmFjdGlvbkRlbGVnYXRlcy5WYWxpZGF0ZVdTSVByb2ZpbGVBY3Rpb25EZWxlZ2F0ZSIKLSAgICAgICAgICAgICAgIHRvb2xiYXJQYXRoPSJncm91cDEiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5hY3Rpb25zLmFjdGlvbkRlbGVnYXRlcy5WYWxpZGF0ZVdTSVByb2ZpbGVBY3Rpb25EZWxlZ2F0ZSI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvdmlld0NvbnRyaWJ1dGlvbj4KLSAgIDwvZXh0ZW5zaW9uPgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFB1cnBvc2U6IFRvIHJlZ2lzdGVyIFdTLUkgbWVzc2FnZSB2YWxpZGF0b3IuICAgICAgICAgICAgLS0+Ci08IS0tIEV4dGVuc2lvbiBwb2ludDogb3JnLmVjbGlwc2UudWkudmlld0FjdGlvbnMgICAgICAgICAgICAgLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0gIDxleHRlbnNpb24KLSAgICAgICAgIGlkPSJ3c2lWYWxpZGF0b3IiCi0gICAgICAgICBuYW1lPSIlX1VJX1dTSV9WQUxJREFUT1IiCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24udmFsaWRhdG9yIj4KLSAgICAgIDx2YWxpZGF0b3I+Ci0gICAgICAgICA8ZmlsdGVyCi0gICAgICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiCi0gICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlPSJmYWxzZSIKLSAgICAgICAgICAgICAgIG5hbWVGaWx0ZXI9Iioud3NpbXNnIj4KLSAgICAgICAgIDwvZmlsdGVyPgotICAgICAgICAgPGhlbHBlciAgICAgIAotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuSGVscGVyIj4KLSAgICAgICAgIDwvaGVscGVyPgotICAgICAgICAgPHJ1bgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuV1NJTWVzc2FnZVZhbGlkYXRvciI+Ci0gICAgICAgICA8L3J1bj4KLSAgICAgIDwvdmFsaWRhdG9yPgotICAgPC9leHRlbnNpb24+Ci0gICAKLSAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLSAgIDwhLS0gRXh0ZW5zaW9uIHBvaW50OiBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuY29udGVudFR5cGVzICAtLT4gCi0gICA8IS0tIFB1cnBvc2U6IFNwZWNpZnkgZmlsZSBhc3NvY2lhdGlvbiBmb3Igd3NpbXNnLiAgICAgICAgICAgLS0+Ci0gICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuY29udGVudFR5cGVzIj4gCi0gICAgICA8ZmlsZS1hc3NvY2lhdGlvbiAKLSAgICAgICBjb250ZW50LXR5cGU9Im9yZy5lY2xpcHNlLmNvcmUucnVudGltZS54bWwiCi0gICAgICAgZmlsZS1leHRlbnNpb25zPSJ3c2ltc2ciLz4KLSAgIDwvZXh0ZW5zaW9uPgotICAgCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gQWRkIHZhbGlkYXRlIGFjdGlvbiAgdG8gLndzaW1zZyBmaWxlICAgICAgICAgICAgICAgICAgIC0tPgotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkucG9wdXBNZW51cyI+Ci0gICAgICA8b2JqZWN0Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBvYmplY3RDbGFzcz0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGUiCi0gICAgICAgICAgICBuYW1lRmlsdGVyPSIqLndzaW1zZyIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5zb2FwLnZhbGlkYXRlLndzaS5hY3Rpb24iPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVfVUlfQUNUSU9OX1ZBTElEQVRFIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9ucy5hY3Rpb25EZWxlZ2F0ZXMuVmFsaWRhdGVXU0lMb2dGaWxlQWN0aW9uRGVsZWdhdGUiCi0gICAgICAgICAgICAgICBlbmFibGVzRm9yPSIxIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9ucy5hY3Rpb25EZWxlZ2F0ZXMuVmFsaWRhdGVXU0lMb2dGaWxlQWN0aW9uRGVsZWdhdGUiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLSAgIDwvZXh0ZW5zaW9uPgotICAgCi0gPC9wbHVnaW4+CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvTWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9NZXNzYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjEzZmQ1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9NZXNzYWdlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIAotICogQ29udHJpYnV0b3JzOgotICogICAgSUJNIENvcnBvcmF0aW9uIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0gCi0vKioKLSAqIFRyYW5zbGF0ZWQgbWVzc2FnZXMuCi0gKi8KLXB1YmxpYyBjbGFzcyBNZXNzYWdlcyBleHRlbmRzIE5MUyAKLXsKLSAgICAvLy0tLS0tLS0tLS0tLS0tLSBWYWxpZGF0aW9uIFdpemFyZCAtLS0tLS0tLS0tLS0tLS0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBWQUxJREFUSU9OX1dJWkFSRF9USVRMRTsKLQotCS8vLS0tLS0tLS0tLS0tLS0tIFZhbGlkYXRpb24gV2l6YXJkIChXU0RMIHBhZ2UpIC0tLS0tLS0tLS0tLS0tLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9GSUxFX1NIRUxMX1RFWFQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9QQUdFX0ZJTEVfVElUTEUgOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9GSUxFX0RFU0NSSVBUSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9TRUxFQ1RfV1NETF9GSUxFTkFNRV9IRUFESU5HOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9TRUxFQ1RfV1NETF9GSUxFTkFNRV9FWFBMOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9JTkNMVURFX1dTRExfQlVUVE9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9JTkNMVURFX1dTRExfTEFCRUw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9QQUdFX1ZBTElEX1dTRExfTEFCRUw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9QQUdFX1dPUktCRU5DSF9CVVRUT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9QQUdFX0JST1dTRV9CVVRUT047Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9QQUdFX1NFQVJDSF9VRERJX0JVVFRPTjsKLQotCS8vLS0tLS0tLS0tLS0tLS0tIFZhbGlkYXRpb24gV2l6YXJkIChXU0RMIGNvbnRlbnQgcGFnZSkgLS0tLS0tLS0tLS0tLS0tCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UX1BBR0VfU0VMRUNUX0hFQURJTkc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UX1BBR0VfU0VMRUNUX0VYUEw7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UX1BBR0VfR1JPVVBfVEVYVF9FTEVNRU5UOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfQ09OVEVOVF9QQUdFX0dST1VQX1RFWFRfVFlQRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX0NPTlRFTlRfUEFHRV9SQURJT19QT1JUOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfQ09OVEVOVF9QQUdFX1JBRElPX0JJTkRJTkc7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UX1BBR0VfUkFESU9fUE9SVF9UWVBFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfQ09OVEVOVF9QQUdFX1JBRElPX09QRVJBVElPTjsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX0NPTlRFTlRfUEFHRV9SQURJT19NRVNTQUdFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfQ09OVEVOVF9QQUdFX0xBQkVMX05BTUU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UX1BBR0VfTEFCRUxfTkFNRVNQQUNFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfQ09OVEVOVF9QQUdFX0xBQkVMX1BBUkVOVDsKLQotCS8vLS0tLS0tLS0tLS0tLS0tIFZhbGlkYXRpb24gV2l6YXJkIChMb2cgcGFnZSkgLS0tLS0tLS0tLS0tLS0tCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgTE9HX1BBR0VfU0VMRUNUX0xPR19GSUxFTkFNRV9IRUFESU5HOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIExPR19QQUdFX1NFTEVDVF9MT0dfRklMRU5BTUVfRVhQTDsKLQotCS8vIEFjdGlvbnMKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBBQ1RJT05fV1NJX1ZBTElEQVRPUjsKLQotCS8vLS0tLS0tLS0tLS0tLS0tIEVycm9ycyAtLS0tLS0tLS0tLS0tLS0KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBFUlJPUl9VTkFCTEVfVE9fVkFMSURBVEU7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRVJST1JfVkFMSURBVElPTl9GQUlMRUQ7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgRVJST1JfVEhFX1dTSU1TR19GSUxFX0lTX05PVF9WQUxJRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBFUlJPUl9QUk9CTEVNU19SRUFESU5HX1dTSU1TR19GSUxFOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEVSUk9SX0lOVkFMSURfTE9HX0ZJTEVfRVhURU5TSU9OOwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdBUk5JTkdfVkFMSURBVElPTl9XQVJOSU5HU19ERVRFQ1RFRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBXQVJOSU5HX0ZJTEVfQUxSRUFEWV9FWElTVFM7Ci0KLQkvLy0tLS0tLS0tLS0tLS0tLSBJbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIC0tLS0tLS0tLS0tLS0tLQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIElORk9fVkFMSURBVElPTl9TVUNFRURFRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBJTkZPX1RIRV9XU0lNU0dfRklMRV9JU19WQUxJRDsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBJTkZPX05PX01FU1NBR0VTX1RPX1ZBTElEQVRFOwotCi0gIHN0YXRpYyAKLSAgewotCU5MUy5pbml0aWFsaXplTWVzc2FnZXMoV1NJVUlQbHVnaW4uUExVR0lOX0lEICsgIi5pbnRlcm5hbC5NZXNzYWdlcyIsIE1lc3NhZ2VzLmNsYXNzKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL01lc3NhZ2VzLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvTWVzc2FnZXMucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY0YjM3MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvTWVzc2FnZXMucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgICogCi0jICAqIENvbnRyaWJ1dG9yczogCi0jICAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jIC0tLS0tLS0tLS0tLS0tLSBWYWxpZGF0aW9uIFdpemFyZCAtLS0tLS0tLS0tLS0tLS0KLVZBTElEQVRJT05fV0laQVJEX1RJVExFICAgICAgICAgICAgICAgID0gVmFsaWRhdGUgV1MtSSBNZXNzYWdlIExvZyBGaWxlCi0KLSMgLS0tLS0tLS0tLS0tLS0tIFZhbGlkYXRpb24gV2l6YXJkIChXU0RMIHBhZ2UpIC0tLS0tLS0tLS0tLS0tLQotV1NETF9QQUdFX0ZJTEVfU0hFTExfVEVYVCAgICAgICAgICAgICAgPSBTZWxlY3QgRmlsZQotV1NETF9QQUdFX0ZJTEVfVElUTEUgICAgICAgICAgICAgICAgICAgPSBTZWxlY3QgYSBGaWxlCi1XU0RMX1BBR0VfRklMRV9ERVNDUklQVElPTiAgICAgICAgICAgICA9IFNlbGVjdCBhIGZpbGUgZnJvbSB0aGUgd29ya2JlbmNoLgotV1NETF9QQUdFX1NFTEVDVF9XU0RMX0ZJTEVOQU1FX0hFQURJTkcgPSBJbmNsdWRlIFdTREwgRmlsZQotV1NETF9QQUdFX1NFTEVDVF9XU0RMX0ZJTEVOQU1FX0VYUEwgICAgPSBPcHRpb25hbGx5IHNlbGVjdCBhIFdTREwgZmlsZSBmb3IgdGhlIFdlYiBzZXJ2aWNlCi1XU0RMX1BBR0VfSU5DTFVERV9XU0RMX0JVVFRPTiAgICAgICAgICA9IEluY2x1ZGUgV1NETCBkb2N1bWVudCBmb3IgV2ViIHNlcnZpY2UKLVdTRExfUEFHRV9JTkNMVURFX1dTRExfTEFCRUwgICAgICAgICAgID0gRW50ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBXU0RMIGRvY3VtZW50IGZvciB0aGUgV2ViIHNlcnZpY2UKLVdTRExfUEFHRV9WQUxJRF9XU0RMX0xBQkVMICAgICAgICAgICAgID0gKk5vdGU6IFlvdSBjYW4gb25seSBzZWxlY3QgdGhlIE5leHQgYnV0dG9uIGlmIHRoZSBXU0RMIGRvY3VtZW50IGlzIHZhbGlkLgotV1NETF9QQUdFX1dPUktCRU5DSF9CVVRUT04gICAgICAgICAgICAgPSBXb3JrYmVuY2guLi4KLVdTRExfUEFHRV9CUk9XU0VfQlVUVE9OICAgICAgICAgICAgICAgID0gQnJvd3NlLi4uCi1XU0RMX1BBR0VfU0VBUkNIX1VERElfQlVUVE9OICAgICAgICAgICA9IFNlYXJjaCBVRERJLi4uCi0KLSMgLS0tLS0tLS0tLS0tLS0tIFZhbGlkYXRpb24gV2l6YXJkIChXU0RMIGNvbnRlbnQgcGFnZSkgLS0tLS0tLS0tLS0tLS0tCi1XU0RMX0NPTlRFTlRfUEFHRV9TRUxFQ1RfSEVBRElORyAgICAgICA9IFNwZWNpZnkgdGhlIFdTREwgZWxlbWVudCB0byBiZSBBbmFseXplZAotV1NETF9DT05URU5UX1BBR0VfU0VMRUNUX0VYUEwgICAgICAgICAgPSBJbmRpY2F0ZSB0aGUgbmFtZSwgdHlwZSwgYW5kIG5hbWVzcGFjZSBvZiB0aGUgV1NETCBlbGVtZW50IHRvIGJlIGFuYWx5emVkCi1XU0RMX0NPTlRFTlRfUEFHRV9HUk9VUF9URVhUX0VMRU1FTlQgICA9IFRoZSBXU0RMIGVsZW1lbnQKLVdTRExfQ09OVEVOVF9QQUdFX0dST1VQX1RFWFRfVFlQRSAgICAgID0gdHlwZQotV1NETF9DT05URU5UX1BBR0VfUkFESU9fUE9SVCAgICAgICAgICAgPSBwb3J0Ci1XU0RMX0NPTlRFTlRfUEFHRV9SQURJT19CSU5ESU5HICAgICAgICA9IGJpbmRpbmcKLVdTRExfQ09OVEVOVF9QQUdFX1JBRElPX1BPUlRfVFlQRSAgICAgID0gcG9ydFR5cGUKLVdTRExfQ09OVEVOVF9QQUdFX1JBRElPX09QRVJBVElPTiAgICAgID0gb3BlcmF0aW9uCi1XU0RMX0NPTlRFTlRfUEFHRV9SQURJT19NRVNTQUdFICAgICAgICA9IG1lc3NhZ2UKLVdTRExfQ09OVEVOVF9QQUdFX0xBQkVMX05BTUUgICAgICAgICAgID0gbmFtZToKLVdTRExfQ09OVEVOVF9QQUdFX0xBQkVMX05BTUVTUEFDRSAgICAgID0gbmFtZXNwYWNlOgotV1NETF9DT05URU5UX1BBR0VfTEFCRUxfUEFSRU5UICAgICAgICAgPSBwYXJlbnQ6Ci0KLSMgLS0tLS0tLS0tLS0tLS0tIFZhbGlkYXRpb24gV2l6YXJkIChMb2cgcGFnZSkgLS0tLS0tLS0tLS0tLS0tCi1MT0dfUEFHRV9TRUxFQ1RfTE9HX0ZJTEVOQU1FX0hFQURJTkcgICA9IFNwZWNpZnkgdGhlIFdTLUkgTWVzc2FnZSBMb2cgRmlsZSBOYW1lCi1MT0dfUEFHRV9TRUxFQ1RfTE9HX0ZJTEVOQU1FX0VYUEwgICAgICA9IFNlbGVjdCBhIGZvbGRlciBhbmQgc3BlY2lmeSBhIG1lc3NhZ2UgbG9nIGZpbGUgbmFtZQotCi0jIEFjdGlvbnMKLUFDVElPTl9XU0lfVkFMSURBVE9SICAgICAgICAgICAgICAgICAgID0gV1MtSSBNZXNzYWdlIFZhbGlkYXRvcgotCi0jIC0tLS0tLS0tLS0tLS0tLSBFcnJvcnMgLS0tLS0tLS0tLS0tLS0tCi1FUlJPUl9VTkFCTEVfVE9fVkFMSURBVEUgICAgICAgICAgICAgICA9IFVuYWJsZSB0byBWYWxpZGF0ZQotRVJST1JfVkFMSURBVElPTl9GQUlMRUQgICAgICAgICAgICAgICAgPSBWYWxpZGF0aW9uIEZhaWxlZAotRVJST1JfVEhFX1dTSU1TR19GSUxFX0lTX05PVF9WQUxJRCAgICAgPSBUaGUgV1MtSSBNZXNzYWdlIExvZyBmaWxlIGlzIG5vdCB2YWxpZC4gIFNlZSB0aGUgUHJvYmxlbXMgdmlldyBmb3IgYSBsaXN0IG9mIHRoZSB2YWxpZGF0aW9uIGVycm9ycy4KLUVSUk9SX1BST0JMRU1TX1JFQURJTkdfV1NJTVNHX0ZJTEUgICAgID0gUHJvYmxlbXMgcmVhZGluZyB0aGUgV1MtSSBNZXNzYWdlIExvZyBmaWxlLiAgU2VlIHRoZSBQcm9ibGVtcyB2aWV3IGZvciBhIGxpc3Qgb2YgZXJyb3JzLgotRVJST1JfSU5WQUxJRF9MT0dfRklMRV9FWFRFTlNJT04gICAgICAgPSBUaGUgZmlsZSBuYW1lIGV4dGVuc2lvbiBjYW4gb25seSBiZSAiLndzaW1zZyIuCi1XQVJOSU5HX1ZBTElEQVRJT05fV0FSTklOR1NfREVURUNURUQgICA9IEhvd2V2ZXIgd2FybmluZ3MgaGF2ZSBiZWVuIGlzc3VlZC4gU2VlIHRoZSBQcm9ibGVtcyB2aWV3IGZvciBhIGxpc3Qgb2YgdGhlIHZhbGlkYXRpb24gd2FybmluZ3MuCi1XQVJOSU5HX0ZJTEVfQUxSRUFEWV9FWElTVFMgICAgICAgICAgICA9IFdhcm5pbmc6IFRoZSBmaWxlIGFscmVhZHkgZXhpc3RzIGFuZCB3aWxsIGJlIG92ZXJ3cml0dGVuLiAKLQotIyAtLS0tLS0tLS0tLS0tLS0gSW5mb3JtYXRpb25hbCBtZXNzYWdlcyAtLS0tLS0tLS0tLS0tLS0KLUlORk9fVkFMSURBVElPTl9TVUNFRURFRCAgICAgICAgICAgICAgID0gVmFsaWRhdGlvbiBTdWNjZWVkZWQKLUlORk9fVEhFX1dTSU1TR19GSUxFX0lTX1ZBTElEICAgICAgICAgID0gVGhlIFdTLUkgTWVzc2FnZSBMb2cgZmlsZSBpcyB2YWxpZC4KLUlORk9fTk9fTUVTU0FHRVNfVE9fVkFMSURBVEUgICAgICAgICAgID0gTm8gTWVzc2FnZXMgdG8gVmFsaWRhdGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9SZXNvdXJjZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL1Jlc291cmNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YWYxYTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL1Jlc291cmNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsOwotCi0vKioKLSAqIEdJRiBjb25zdGFudHMKLSAqIAotICogQGF1dGhvciBEYXZpZCBMYXV6b24sIElCTQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFJlc291cmNlCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFZBTElEQVRFX1dTSV9MT0dGSUxFX1dJWiA9ICJhY3Rpb25zL2ljb25zL3dzaV9sb2dmaWxlX3dpei5wbmciOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL1Jlc291cmNlRmlsdGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvUmVzb3VyY2VGaWx0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUwMjI1Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvUmVzb3VyY2VGaWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5WaWV3ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5WaWV3ZXJGaWx0ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JQ29udGFpbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotCi1wdWJsaWMgY2xhc3MgUmVzb3VyY2VGaWx0ZXIgZXh0ZW5kcyBWaWV3ZXJGaWx0ZXIgCi17Ci0gIHByb3RlY3RlZCBTdHJpbmdbXSBmRXh0ZW5zaW9uczsKLSAgcHJvdGVjdGVkIElGaWxlW10gZkV4Y2x1ZGVkRmlsZXM7Ci0gIHByb3RlY3RlZCBDb2xsZWN0aW9uIGZFeGNsdWRlczsKLQkKLSAgcHVibGljIFJlc291cmNlRmlsdGVyKFN0cmluZ1tdIGV4dGVuc2lvbnMsIENvbGxlY3Rpb24gZXhjbHVkZSkgCi0gIHsKLSAgICBmRXh0ZW5zaW9ucz0gZXh0ZW5zaW9uczsKLSAgICBmRXhjbHVkZXM9IGV4Y2x1ZGU7Ci0gICAgZkV4Y2x1ZGVkRmlsZXMgPSBudWxsOwotICB9Ci0KLSAgcHVibGljIFJlc291cmNlRmlsdGVyKFN0cmluZ1tdIGV4dGVuc2lvbnMsIElGaWxlW10gZXhjbHVkZWRGaWxlcywgQ29sbGVjdGlvbiBleGNsdWRlKSAKLSAgewotICAgIGZFeHRlbnNpb25zPSBleHRlbnNpb25zOwotICAgIGZFeGNsdWRlcz0gZXhjbHVkZTsKLSAgICBmRXhjbHVkZWRGaWxlcyA9IGV4Y2x1ZGVkRmlsZXM7Ci0gIH0KLQkKLSAgcHVibGljIGJvb2xlYW4gaXNGaWx0ZXJQcm9wZXJ0eShPYmplY3QgZWxlbWVudCwgT2JqZWN0IHByb3BlcnR5KSAKLSAgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCQotICBwdWJsaWMgYm9vbGVhbiBzZWxlY3QoVmlld2VyIHZpZXdlciwgT2JqZWN0IHBhcmVudCwgT2JqZWN0IGVsZW1lbnQpIAotICB7Ci0gICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBJRmlsZSkgCi0gICAgewotICAgICAgaWYgKGZFeGNsdWRlcyAhPSBudWxsICYmIGZFeGNsdWRlcy5jb250YWlucyhlbGVtZW50KSkgCi0gICAgICB7Ci0JcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgU3RyaW5nIG5hbWU9ICgoSUZpbGUpZWxlbWVudCkuZ2V0TmFtZSgpOwotICAgICAgaWYgKGZFeGNsdWRlZEZpbGVzICE9IG51bGwpIAotICAgICAgewotICAgICAgICBmb3IgKGludCBqPSAwOyBqIDwgZkV4Y2x1ZGVkRmlsZXMubGVuZ3RoOyBqKyspIAotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCAoKElGaWxlKWVsZW1lbnQpLmdldExvY2F0aW9uKCkuCi0gICAgICAgICAgICAgICB0b1N0cmluZygpLmNvbXBhcmVUbygoKElGaWxlKWZFeGNsdWRlZEZpbGVzW2pdKS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCkpID09IDAgKQotICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgIAotICAgICAgICB9ICAgICAgICAgICAgCi0gICAgICB9Ci0gICAgICBpZiAoZkV4dGVuc2lvbnMubGVuZ3RoID09IDApIAotICAgICAgewotICAgICAgICAvLyBhc3N1bWUgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGZpbHRlciBhbnkgZmlsZXMgYmFzZWQgb24gCi0gICAgICAgIC8vIGV4dGVuc2lvbgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGZvciAoaW50IGk9IDA7IGkgPCBmRXh0ZW5zaW9ucy5sZW5ndGg7IGkrKykgCi0gICAgICB7Ci0gICAgICAgIGlmIChuYW1lLmVuZHNXaXRoKGZFeHRlbnNpb25zW2ldKSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICB9IAotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gCi0gICAgZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIElDb250YWluZXIpIAotICAgIHsgLy8gSVByb2plY3QsIElGb2xkZXIKLSAgICAgIHRyeSAKLSAgICAgIHsKLSAgICAgIAlJUmVzb3VyY2VbXSByZXNvdXJjZXM9ICgoSUNvbnRhaW5lcillbGVtZW50KS5tZW1iZXJzKCk7Ci0JZm9yIChpbnQgaT0gMDsgaSA8IHJlc291cmNlcy5sZW5ndGg7IGkrKykgCi0gICAgICAgIHsKLQkgIC8vIHJlY3Vyc2l2ZSEKLQkgIGlmIChzZWxlY3Qodmlld2VyLCBwYXJlbnQsIHJlc291cmNlc1tpXSkpIAotICAgICAgICAgIHsKLQkgICAgcmV0dXJuIHRydWU7Ci0JICB9Ci0JfQotICAgICAgfSAKLSAgICAgIGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIAotICAgICAgewotICAgICAgfQkJCQkKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvV1NJTWVzc2FnZVZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL1dTSU1lc3NhZ2VWYWxpZGF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzljZTdkNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvV1NJTWVzc2FnZVZhbGlkYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbi5pbnRlcm5hbC5jb3JlLlZhbGlkYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwucHJvdmlzaW9uYWwuY29yZS5JUmVwb3J0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwucHJvdmlzaW9uYWwuY29yZS5JVmFsaWRhdGlvbkNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwucHJvdmlzaW9uYWwuY29yZS5JVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9ucy5XU0lWYWxpZGF0ZUFjdGlvbjsKLS8vaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbC5EZWZhdWx0UmVwb3J0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5IZWxwZXI7Ci0KLS8qKgotICogQSBWYWxpZGF0b3IgdGhhdCBwZXJmb3JtcyB2YWxpZGF0aW9uIG9uIGEgV1MtSSBNZXNzYWdlIExvZyBmaWxlLiAKLSAqIAotICogQGF1dGhvciBEYXZpZCBMYXV6b24sIElCTQotICovCi1wdWJsaWMgY2xhc3MgV1NJTWVzc2FnZVZhbGlkYXRvciBpbXBsZW1lbnRzIElWYWxpZGF0b3IKLXsKLSAgcHJvdGVjdGVkIElSZXBvcnRlciByZXBvcnRlcjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NJX01FU1NBR0VfVkFMSURBVE9SX0lEID0gIndzaW1lc3NhZ2V2YWxpZGF0b3IiLmludGVybigpOwotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS52YWxpZGF0ZS5JVmFsaWRhdG9yI3ZhbGlkYXRlKG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlKQotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGUoSUZpbGUgZmlsZSkKLSAgeyAgCi0gICAgV1NJVmFsaWRhdGVBY3Rpb24gdmFsaWRhdGVBY3Rpb24gPSBuZXcgV1NJVmFsaWRhdGVBY3Rpb24oZmlsZSwgZmFsc2UpOwotICAgIHZhbGlkYXRlQWN0aW9uLnNldFZhbGlkYXRvcih0aGlzKTsKLSAgICAvL3ZhbGlkYXRlQWN0aW9uLnNldFJlcG9ydGVyKGdldFJlcG9ydGVyKCkpOwotICAgIHZhbGlkYXRlQWN0aW9uLnJ1bigpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UudmFsaWRhdGUuSVZhbGlkYXRvciNzZXRSZXBvcnRlcihvcmcuZWNsaXBzZS52YWxpZGF0ZS5JUmVwb3J0ZXIpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZXBvcnRlcihJUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gIHsKLSAgCXRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjsKLSAgfQotCi1wdWJsaWMgdm9pZCBjbGVhbnVwKElSZXBvcnRlciByZXBvcnRlcikgewotCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKLQkKLX0KLQotcHVibGljIHZvaWQgdmFsaWRhdGUoSVZhbGlkYXRpb25Db250ZXh0IGhlbHBlciwgSVJlcG9ydGVyIHJlcG9ydGVyKSB0aHJvd3MgVmFsaWRhdGlvbkV4Y2VwdGlvbgotIHsKLQlIZWxwZXIgaGVsID0gKEhlbHBlciloZWxwZXI7Ci0JU3RyaW5nW10gdXJpcyA9IGhlbC5nZXRVUklzKCk7Ci0JZm9yKGludCBpID0gMDtpIDwgdXJpcy5sZW5ndGg7aSsrKXsKLQkJSUZpbGUgZmlsZSA9IGhlbC5nZXRGaWxlKHVyaXNbaV0pOwotCQlpZihmaWxlICE9IG51bGwgJiYgZmlsZS5leGlzdHMoKSkKLQkJCXZhbGlkYXRlKGZpbGUpOwotCX0KLSB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL1dTSVVJUGx1Z2luLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvV1NJVUlQbHVnaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJhYzY4Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvV1NJVUlQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuSW1hZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47Ci0KLS8qKgotICogV1NJVmFsaWRhdGVQbHVnaW4gaXMgYSBwbHVnaW4gdGhhdCBpbnRlZ3JhdGVzIHdpdGggdGhlIEVjbGlwc2UgcGxhdGZvcm0gVUkuIAotICogCi0gKiBAYXV0aG9yIERhdmlkIExhdXpvbiwgSUJNCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCwgSUJNCi0gKi8KLQotcHVibGljIGNsYXNzIFdTSVVJUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbgotewotICAvKioKLSAgICogVGhlIHNpbmdsZXRvbi4KLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgV1NJVUlQbHVnaW4gaW5zdGFuY2U7ICAgICAgICAgICAgICAgIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQTFVHSU5fSUQgPSAib3JnLmVjbGlwc2Uud3N0LndzaS51aSI7Ci0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICovCi0gIHB1YmxpYyBXU0lVSVBsdWdpbigpCi0gIHsKLSAgICBzdXBlcigpOwotICAgIGluc3RhbmNlID0gdGhpczsKLSAgfSAgICAKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uLiAoQmFzZWQgb24gdGhlIFNpbmdsZXRvbiBQYXR0ZXJuKS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgV1NJVUlQbHVnaW4gZ2V0SW5zdGFuY2UoKQotICB7Ci0gICAgcmV0dXJuIGluc3RhbmNlOwotICB9Ci0KLSAgcHJvdGVjdGVkIEltYWdlUmVnaXN0cnkgY3JlYXRlSW1hZ2VSZWdpc3RyeSgpIAotICB7Ci0JCUltYWdlUmVnaXN0cnkgcmVnaXN0cnkgPSBzdXBlci5jcmVhdGVJbWFnZVJlZ2lzdHJ5KCk7Ci0JCXJlZ2lzdGVySW1hZ2UocmVnaXN0cnksIFJlc291cmNlLlZBTElEQVRFX1dTSV9MT0dGSUxFX1dJWik7Ci0JCXJldHVybiByZWdpc3RyeTsKLSAgfQotCi0JLyoqCi0JICogUmVnaXN0ZXIgYW4gaW1hZ2Ugd2l0aCB0aGUgcmVnaXN0cnkuCi0JICogCi0JICogQHBhcmFtIGtleSB0aGUga2V5Ci0JICovCi0JcHJpdmF0ZSB2b2lkIHJlZ2lzdGVySW1hZ2UoSW1hZ2VSZWdpc3RyeSByZWdpc3RyeSwgU3RyaW5nIGtleSkKLQl7Ci0gIAkgIHRyeSAKLSAgCSAgewotCQlJbWFnZURlc2NyaXB0b3IgaWQgPSBJbWFnZURlc2NyaXB0b3IuY3JlYXRlRnJvbUZpbGUoV1NJVUlQbHVnaW4uY2xhc3MsIGtleSk7Ci0JCXJlZ2lzdHJ5LnB1dChrZXksIGlkKTsKLQkgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSAKLQkgIHsKLSAgICAgIH0KLQl9Ci0KLSAgLyoqCi0gICAqIENvbnZpZW5jZSBBUEkuICAKLSAgICogRmluZHMgdGhlIHNwZWNpZmllZCBpbWFnZSBzdG9yZWQgaW4gdGhpcyBwbHVnLWluJ3MgaW1hZ2UgcmVnaXN0cnkuCi0gICAqIEBwYXJhbSBpY29uTmFtZTogdGhlIG5hbWUgb2YgdGhlIGltYWdlLgotICAgKiBAcmV0dXJuIHRoZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIEltYWdlIGdldFJlc291cmNlSW1hZ2UoU3RyaW5nIGljb25OYW1lKQotICB7Ci0gICAgcmV0dXJuIGluc3RhbmNlLmdldEltYWdlUmVnaXN0cnkoKS5nZXQoaWNvbk5hbWUpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvV1NJVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvV1NJVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkYjY0NDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL1dTSVZhbGlkYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9ucy5XU0lWYWxpZGF0ZUFjdGlvbjsKLQotLyoqCi0gKiBBIHNpbXBsZSBpbnRlcmZhY2UgdG8gdGhlIFdTLUkgbWVzc2FnZSBsb2cgdmFsaWRhdG9yLgotICogCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCwgSUJNCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0lWYWxpZGF0b3IgewotCi0JLyoqCi0JICogQ29uc3RydWN0b3IuCi0JICovCi0JcHVibGljIFdTSVZhbGlkYXRvcigpCi0JewotCX0KLQkKLQkvKioKLQkgKiBWYWxpZGF0ZSB0aGUgZ2l2ZW4gbG9nIGZpbGUuCi0JICogCi0JICogQHBhcmFtIGZpbGUgVGhlIGxvZyBmaWxlIHRvIHZhbGlkYXRlLgotCSAqLwotCXB1YmxpYyB2b2lkIHZhbGlkYXRlKElGaWxlIGZpbGUpCi0JewotCQlXU0lNZXNzYWdlVmFsaWRhdG9yIG1lc3NhZ2VWYWxpZGF0b3IgPSBuZXcgV1NJTWVzc2FnZVZhbGlkYXRvcigpOwotCQlXU0lWYWxpZGF0ZUFjdGlvbiB2YWxpZGF0ZUFjdGlvbiA9IG5ldyBXU0lWYWxpZGF0ZUFjdGlvbihmaWxlLCB0cnVlKTsKLQkJdmFsaWRhdGVBY3Rpb24uc2V0VmFsaWRhdG9yKG1lc3NhZ2VWYWxpZGF0b3IpOwotCQl2YWxpZGF0ZUFjdGlvbi5ydW4oKTsKLQl9Ci0JCi0JLyoqCi0JICogVmFsaWRhdGUgdGhlIGdpdmVuIGxvZyBmaWxlIHdpdGggYSBXU0RMIGRvY3VtZW50IHNwZWNpZmllZC4KLQkgKiAKLQkgKiBAcGFyYW0gZmlsZSBUaGUgbG9nIGZpbGUgdG8gdmFsaWRhdGUuCi0JICogQHBhcmFtIHdzZGxmaWxlIFRoZSBXU0RMIGZpbGUgdG8gdXNlIGZvciB2YWxpZGF0aW9uLgotCSAqIEBwYXJhbSBlbGVtZW50bmFtZSBUaGUgV1NETCBlbGVtZW50IHRvIHZhbGlkYXRlLgotCSAqIEBwYXJhbSBuYW1lc3BhY2UgVGhlIG5hbWVzcGFjZSBvZiB0aGUgV1NETCBlbGVtZW50IHRvIHZhbGlkYXRlLgotCSAqIEBwYXJhbSBwYXJlbnRuYW1lIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgZWxlbWVudCBvZiB0aGUgZWxlbWVudCB0byB2YWxpZGF0ZS4KLQkgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgZWxlbWVudCB0byB2YWxpZGF0ZS4KLQkgKi8KLQkvKioKLQkgKiBWYWxpZGF0ZSB0aGUgZ2l2ZW4gbG9nIGZpbGUuCi0JICogCi0JICogQHBhcmFtIGZpbGUgVGhlIGxvZyBmaWxlIHRvIHZhbGlkYXRlLgotCSAqLwotCXB1YmxpYyB2b2lkIHZhbGlkYXRlKElGaWxlIGZpbGUsIFN0cmluZyB3c2RsZmlsZSwgU3RyaW5nIGVsZW1lbnRuYW1lLCBTdHJpbmcgbmFtZXNwYWNlLCBTdHJpbmcgcGFyZW50bmFtZSwgU3RyaW5nIHR5cGUpCi0JewotCQlXU0lNZXNzYWdlVmFsaWRhdG9yIG1lc3NhZ2VWYWxpZGF0b3IgPSBuZXcgV1NJTWVzc2FnZVZhbGlkYXRvcigpOwotCQlXU0lWYWxpZGF0ZUFjdGlvbiB2YWxpZGF0ZUFjdGlvbiA9IG5ldyBXU0lWYWxpZGF0ZUFjdGlvbihmaWxlLCB0cnVlLCB3c2RsZmlsZSwgZWxlbWVudG5hbWUsIG5hbWVzcGFjZSwgcGFyZW50bmFtZSwgdHlwZSk7Ci0JCXZhbGlkYXRlQWN0aW9uLnNldFZhbGlkYXRvcihtZXNzYWdlVmFsaWRhdG9yKTsKLQkJdmFsaWRhdGVBY3Rpb24ucnVuKCk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvVmFsaWRhdGVBY3Rpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9hY3Rpb25zL1ZhbGlkYXRlQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZmNlY2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvVmFsaWRhdGVBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSU1hcmtlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuYWN0aW9uLkFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLk1lc3NhZ2VEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JRWRpdG9ySW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSUVkaXRvclBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVBhZ2VMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QYXJ0SW5pdEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBhcnQuRmlsZUVkaXRvcklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLmludGVybmFsLm9wZXJhdGlvbnMuTG9jYWxpemVkTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbi5pbnRlcm5hbC5vcGVyYXRpb25zLldvcmtiZW5jaFJlcG9ydGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLmludGVybmFsLnByb3Zpc2lvbmFsLmNvcmUuSU1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwucHJvdmlzaW9uYWwuY29yZS5JUmVwb3J0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwucHJvdmlzaW9uYWwuY29yZS5JVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuV1NJVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5WYWxpZGF0aW9uTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLmNvcmUuaW50ZXJuYWwudmFsaWRhdGlvbi5jb3JlLmxvZ2dpbmcuSUxvZ2dlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLmNvcmUuaW50ZXJuYWwudmFsaWRhdGlvbi5jb3JlLmxvZ2dpbmcuTG9nZ2VyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLnVpLmludGVybmFsLkxvZ2dlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLnVpLmludGVybmFsLnZhbGlkYXRpb24uWE1MVmFsaWRhdGlvblVJTWVzc2FnZXM7Ci0KLS8qKgotICogQSBnZW5lcmFsIHZhbGlkYXRlIGFjdGlvbiBjbGFzcyB0aGF0IGNhbiBiZSBleHRlbmRlZCBieSB2YWxpZGF0b3JzLiBUaGlzIGNsYXNzCi0gKiBwcm92aWRlcyBtZXRob2RzIHRvIHJ1biB0aGUgYWN0aW9uLCBhZGQgbWFya2VycyB0byBhIGZpbGUgYW5kIHdpbGwgaGFuZGxlCi0gKiBzaG93aW5nIGEgZGlhbG9nIHdpdGggdGhlIHJlc3VsdHMgb2YgdmFsaWRhdGlvbiAoaWYgcmVxdWVzdGVkKSBhbmQgcHJvbXB0IHRvCi0gKiBzYXZlIGRpcnR5IGZpbGVzIChpZiByZXF1ZXN0ZWQuKQotICovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgVmFsaWRhdGVBY3Rpb24gZXh0ZW5kcyBBY3Rpb24KLXsKLSAgLy8gTG9jYWxseSB1c2VkLCBub24tVUkgc3RyaW5ncy4KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFJFRkVSRU5DRURfRklMRV9FUlJPUl9PUEVOID0gInJlZmVyZW5jZWRGaWxlRXJyb3IoIjsgLy8kTk9OLU5MUy0xJAotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBSRUZFUkVOQ0VEX0ZJTEVfRVJST1JfQ0xPU0UgPSAiKSI7IC8vJE5PTi1OTFMtMSQKLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVGRVJFTkNFRF9GSUxFX0VSUk9SID0gInJlZmVyZW5jZWRGaWxlRXJyb3IiOyAvLyROT04tTkxTLTEkCi0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEdST1VQX05BTUUgPSAiZ3JvdXBOYW1lIjsgLy8kTk9OLU5MUy0xJAotICAKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEZJTEVfUFJPVE9DT0xfTk9fU0xBU0ggPSAiZmlsZToiOyAvLyROT04tTkxTLTEkCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBGSUxFX1BST1RPQ09MID0gImZpbGU6Ly8vIjsgLy8kTk9OLU5MUy0xJAotICAKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09MVU1OX05VTUJFUl9BVFRSSUJVVEUgPSAiY29sdW1uTnVtYmVyIjsgLy8kTk9OLU5MUy0xJAotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBTUVVJR0dMRV9TRUxFQ1RJT05fU1RSQVRFR1lfQVRUUklCVVRFID0gInNxdWlnZ2xlU2VsZWN0aW9uU3RyYXRlZ3kiOyAvLyROT04tTkxTLTEkCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFNRVUlHR0xFX05BTUVfT1JfVkFMVUVfQVRUUklCVVRFID0gInNxdWlnZ2xlTmFtZU9yVmFsdWUiOyAvLyROT04tTkxTLTEkCi0KLSAgcHJvdGVjdGVkIGJvb2xlYW4gc2hvd0RpYWxvZyA9IHRydWU7Ci0KLSAgcHJvdGVjdGVkIElGaWxlIGZpbGUgPSBudWxsOwotCi0gIHByb3RlY3RlZCBJUmVwb3J0ZXIgcmVwb3J0ZXI7Ci0KLSAgcHJvdGVjdGVkIElWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogCi0gICAqIEBwYXJhbSBmaWxlCi0gICAqICAgICAgICAgIFRoZSBmaWxlIHRvIHZhbGlkYXRlLgotICAgKiBAcGFyYW0gc2hvd0RpYWxvZwotICAgKiAgICAgICAgICBXaGV0aGVyIG9yIG5vdCB0byBzaG93IGEgZGlhbG9nIHdoZW4gdmFsaWRhdGlvbiBpcyBjb21wbGV0ZS4KLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0ZUFjdGlvbihJRmlsZSBmaWxlLCBib29sZWFuIHNob3dEaWFsb2cpCi0gIHsKLSAgICB0aGlzLnNob3dEaWFsb2cgPSBzaG93RGlhbG9nOwotICAgIHRoaXMuZmlsZSA9IGZpbGU7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGUgdGhlIHNwZWNpZmllZCBmaWxlLgotICAgKiAKLSAgICogQHBhcmFtIGZpbGUKLSAgICogICAgICAgICAgVGhlIGZpbGUgdG8gdmFsaWRhdGUuCi0gICAqLwotICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCB2YWxpZGF0ZShmaW5hbCBJRmlsZSBmaWxlKTsKLQotICBwcm90ZWN0ZWQgdm9pZCBhZGRJbmZvVG9NZXNzYWdlIChWYWxpZGF0aW9uTWVzc2FnZSB2LCBJTWVzc2FnZSBtKQotICB7IC8vIFRoaXMgbWV0aG9kIGlzIG92ZXJpZGRlbiBieSBzdWJjbGFzc2VzCi0gIH0KLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgbWFya2VycyBmb3IgdGhlIHZhbGlhdGlvbiBtZXNzYWdlcyBnZW5lcmF0ZWQgZnJvbSB0aGUgdmFsaWRhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBpRmlsZQotICAgKiAgICAgICAgICBUaGUgcmVzb3VyY2UgdG8gY3JlYXRlIHRoZSBtYXJrZXJzIG9uLgotICAgKiBAcGFyYW0gdmFsbWVzc2FnZXMKLSAgICogICAgICAgICAgVGhlIGFycmF5IG9mIHZhbGlkYXRpb24gbWVzc2FnZXMuCi0gICAqLwotICBwdWJsaWMgdm9pZCBjcmVhdGVNYXJrZXJzKElGaWxlIGlGaWxlLCBWYWxpZGF0aW9uTWVzc2FnZVtdIHZhbG1lc3NhZ2VzKQotICB7Ci0gICAgaWYgKCFmaWxlSXNPSyhpRmlsZSkpCi0gICAgewotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpbnQgbnVtbWVzc2FnZXMgPSB2YWxtZXNzYWdlcy5sZW5ndGg7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1tZXNzYWdlczsgaSsrKQotICAgIHsKLSAgICAgIFZhbGlkYXRpb25NZXNzYWdlIHZhbGlkYXRpb25NZXNzYWdlID0gdmFsbWVzc2FnZXNbaV07Ci0gICAgICBTdHJpbmcgdXJpID0gdmFsaWRhdGlvbk1lc3NhZ2UuZ2V0VXJpKCk7Ci0KLSAgICAgIExvY2FsaXplZE1lc3NhZ2UgbWVzc2FnZTsKLSAgICAgIGlmICh2YWxpZGF0aW9uTWVzc2FnZS5nZXRTZXZlcml0eSgpID09IFZhbGlkYXRpb25NZXNzYWdlLlNFVl9MT1cpCi0gICAgICB7Ci0gICAgICAgIG1lc3NhZ2UgPSBuZXcgTG9jYWxpemVkTWVzc2FnZShnZXRWYWxpZGF0aW9uRnJhbWV3b3JrU2V2ZXJpdHkoSU1hcmtlci5TRVZFUklUWV9XQVJOSU5HKSwgdmFsaWRhdGlvbk1lc3NhZ2UKLSAgICAgICAgICAgIC5nZXRNZXNzYWdlKCksIGlGaWxlKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsgCi0gICAgICAgIG1lc3NhZ2UgPSBuZXcgTG9jYWxpemVkTWVzc2FnZShnZXRWYWxpZGF0aW9uRnJhbWV3b3JrU2V2ZXJpdHkoSU1hcmtlci5TRVZFUklUWV9FUlJPUiksIHZhbGlkYXRpb25NZXNzYWdlLmdldE1lc3NhZ2UoKSwgaUZpbGUpOwotICAgICAgfQotICAgICAgCi0gICAgICBtZXNzYWdlLnNldExpbmVObyh2YWxpZGF0aW9uTWVzc2FnZS5nZXRMaW5lTnVtYmVyKCkpOwotICAgICAgYWRkSW5mb1RvTWVzc2FnZSh2YWxpZGF0aW9uTWVzc2FnZSwgbWVzc2FnZSk7Ci0gICAgICAKLSAgICAgIExpc3QgbmVzdGVkZXJyb3JzID0gdmFsaWRhdGlvbk1lc3NhZ2UuZ2V0TmVzdGVkTWVzc2FnZXMoKTsKLSAgICAgIGlmIChuZXN0ZWRlcnJvcnMgIT0gbnVsbCAmJiAhbmVzdGVkZXJyb3JzLmlzRW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZS5zZXRHcm91cE5hbWUoUkVGRVJFTkNFRF9GSUxFX0VSUk9SX09QRU4gKyB1cmkgKyBSRUZFUkVOQ0VEX0ZJTEVfRVJST1JfQ0xPU0UpOwotICAgICAgfQotCi0gICAgICBnZXRPckNyZWF0ZVJlcG9ydGVyKCkuYWRkTWVzc2FnZShnZXRWYWxpZGF0b3IoKSwgbWVzc2FnZSk7Ci0KLSAgICAgIAotICAgIH0KLSAgICB0cnkKLSAgICB7Ci0gICAgICBJTWFya2VyW10gbWFya2VycyA9IGlGaWxlLmZpbmRNYXJrZXJzKG51bGwsIHRydWUsIElSZXNvdXJjZS5ERVBUSF9JTkZJTklURSk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1hcmtlcnMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIElNYXJrZXIgbWFya2VyID0gbWFya2Vyc1tpXTsKLSAgICAgICAgU3RyaW5nIGdyb3VwTmFtZSA9IG51bGw7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgZ3JvdXBOYW1lID0gKFN0cmluZykgbWFya2VyLmdldEF0dHJpYnV0ZShHUk9VUF9OQU1FKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChncm91cE5hbWUgIT0gbnVsbCAmJiBncm91cE5hbWUuc3RhcnRzV2l0aChSRUZFUkVOQ0VEX0ZJTEVfRVJST1IpKQotICAgICAgICB7Ci0KLSAgICAgICAgICBtYXJrZXIuc2V0QXR0cmlidXRlKElNYXJrZXIuRE9ORSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLQotICB9Ci0KLSAgcHVibGljIHZvaWQgY2xlYXJNYXJrZXJzKElGaWxlIGlGaWxlKQotICB7Ci0gICAgaWYgKGZpbGVJc09LKGlGaWxlKSkKLSAgICB7Ci0gICAgICBnZXRPckNyZWF0ZVJlcG9ydGVyKCkucmVtb3ZlQWxsTWVzc2FnZXMoZ2V0VmFsaWRhdG9yKCksIGlGaWxlKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBydW4oKQotICB7Ci0gIAl0cnkKLSAgCXsKLSAgCQkvLyBDUy4uLiBhIHRlbXBvcmFyeSB0ZXN0IHRvIGF2b2lkIHBlcmZvcm1pbmcgdmFsaWRhdGlvbiBpbiB0aGUgYWJzZW5jZSBvZiB4ZXJjZXMgCi0gIAkJLy8KLSAgCQkvL2R3IENsYXNzIHRoZUNsYXNzID0gCi0gIAkJQ2xhc3MuZm9yTmFtZSgib3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxQYXJzZXJDb25maWd1cmF0aW9uIiwgdHJ1ZSwgdGhpcy5nZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkpOyAvLyROT04tTkxTLTEkCi0gIAkJICAJCQotICAJCWlmIChmaWxlSXNPSyhmaWxlKSkKLSAgCQl7Ci0gIAkJCS8vIENoZWNrIGlmIHRoZSBlZGl0b3IgaXMgZGlydHkgZm9yIHRoaXMgZmlsZS4gSWYgc28sIHByb21wdCB0aGUgdXNlciB0bwotICAJCQkvLyBzYXZlIGJlZm9yZSB2YWxpZGF0aW5nLgotICAJCQlpZihzaG93RGlhbG9nKQotICAJCQl7Ci0gIAkJCQljaGVja0lmRmlsZURpcnR5KGZpbGUpOwotICAJCQl9Ci0gIAkJCXRyeQotICAJCQl7Ci0gIAkJCQl2YWxpZGF0ZShmaWxlKTsKLSAgCQkJfQotICAJCQljYXRjaCAoRXhjZXB0aW9uIGUpCi0gIAkJCXsKLSAgCQkJCUlMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXJJbnN0YW5jZSgpOwotICAJCQkJbG9nZ2VyLmxvZ0Vycm9yKCIiLCBlKTsgLy8kTk9OLU5MUy0xJAotICAJCQkJLy8gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAJCQl9Ci0gIAkJfQotICAJfQotICAJY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAJewkJCi0gIAl9Ci0gIH0KLQotICAvKioKLSAgICogVGVzdCB3aGV0aGVyIHRoZSBmaWxlIGdpdmVuIGlzIE9LIHRvIHVzZS4gQSBmaWxlIGlzIE9LIHRvIHVzZSBpZiAxLiBJdCBpcwotICAgKiBub3QgbnVsbCAyLiBJdCBleGlzdHMuIDMuIFRoZSBwcm9qZWN0IGNvbnRhaW5pbmcgdGhlIGZpbGUgaXMgYWNjZXNzaWJsZS4KLSAgICogCi0gICAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlIHRvIGNoZWNrLgotICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIGZpbGUgaXMgT0sgdG8gdXNlLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBmaWxlSXNPSyhJRmlsZSBmaWxlKQotICB7Ci0gICAgaWYgKGZpbGUgIT0gbnVsbCAmJiBmaWxlLmV4aXN0cygpICYmIGZpbGUuZ2V0UHJvamVjdCgpLmlzQWNjZXNzaWJsZSgpKQotICAgIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2sgaWYgdGhlIGZpbGUgaXMgZGlydHkuIEEgZmlsZSBpcyBkaXJ0eSBpZiB0aGVyZSBpcyBhbiBvcGVuIGVkaXRvciBmb3IKLSAgICogdGhlIGZpbGUgdGhhdCBjb250YWlucyBjaGFuZ2VzIHRoYXQgaGF2ZW4ndCBiZWVuIHNhdmVkLgotICAgKiAKLSAgICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgdG8gY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGRpcnR5LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgY2hlY2tJZkZpbGVEaXJ0eShJRmlsZSBmaWxlKQotICB7Ci0gICAgSUVkaXRvclBhcnRbXSBkaXJ0eUVkaXRvcnMgPSBXU0lVSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFdvcmtiZW5jaCgpLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvdygpCi0gICAgICAgIC5nZXRBY3RpdmVQYWdlKCkuZ2V0RGlydHlFZGl0b3JzKCk7Ci0gICAgaW50IG51bWVkaXRvcnMgPSBkaXJ0eUVkaXRvcnMubGVuZ3RoOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtZWRpdG9yczsgaSsrKQotICAgIHsKLSAgICAgIElFZGl0b3JJbnB1dCBlZGl0b3JJbnB1dCA9IGRpcnR5RWRpdG9yc1tpXS5nZXRFZGl0b3JJbnB1dCgpOwotICAgICAgaWYgKGVkaXRvcklucHV0IGluc3RhbmNlb2YgRmlsZUVkaXRvcklucHV0KQotICAgICAgewotICAgICAgICBGaWxlRWRpdG9ySW5wdXQgZmlsZUVkaXRvcklucHV0ID0gKEZpbGVFZGl0b3JJbnB1dCkgZWRpdG9ySW5wdXQ7Ci0gICAgICAgIGlmIChmaWxlRWRpdG9ySW5wdXQuZ2V0RmlsZSgpLmVxdWFscyhmaWxlKSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gWE1MVmFsaWRhdGlvblVJTWVzc2FnZXMuX1VJX1NBVkVfRElSVFlfRklMRV9NRVNTQUdFOwotICAgICAgICAgIFN0cmluZyB0aXRsZSA9IFhNTFZhbGlkYXRpb25VSU1lc3NhZ2VzLl9VSV9TQVZFX0RJUlRZX0ZJTEVfVElUTEU7Ci0gICAgICAgICAgaWYgKE1lc3NhZ2VEaWFsb2cub3BlblF1ZXN0aW9uKERpc3BsYXkuZ2V0RGVmYXVsdCgpLmdldEFjdGl2ZVNoZWxsKCksIHRpdGxlLCBtZXNzYWdlKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBkaXJ0eUVkaXRvcnNbaV0uZG9TYXZlKG51bGwpOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBUaGVyZSBjYW4gb25seSBiZSBvbmUgb3BlbiBlZGl0b3IvZmlsZSBzbyB3ZSBjYW4gYnJlYWsuCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyB0aGUgcmVwb3J0ZXIuCi0gICAqIAotICAgKiBAcmV0dXJuIFJldHVybnMgYSBJUmVwb3J0ZXIKLSAgICovCi0gIHB1YmxpYyBJUmVwb3J0ZXIgZ2V0UmVwb3J0ZXIoKQotICB7Ci0gICAgcmV0dXJuIHJlcG9ydGVyOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHJlcG9ydGVyLgotICAgKiAKLSAgICogQHBhcmFtIHJlcG9ydGVyCi0gICAqICAgICAgICAgIFRoZSByZXBvcnRlciB0byBzZXQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlcG9ydGVyKElSZXBvcnRlciByZXBvcnRlcikKLSAgewotICAgIHRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXRzIHRoZSB2YWxpZGF0b3IuCi0gICAqIAotICAgKiBAcmV0dXJuIFJldHVybnMgYSBJVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgSVZhbGlkYXRvciBnZXRWYWxpZGF0b3IoKQotICB7Ci0gICAgcmV0dXJuIHZhbGlkYXRvcjsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2YWxpZGF0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gdmFsaWRhdG9yCi0gICAqICAgICAgICAgIFRoZSB2YWxpZGF0b3IgdG8gc2V0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRWYWxpZGF0b3IoSVZhbGlkYXRvciB2YWxpZGF0b3IpCi0gIHsKLSAgICB0aGlzLnZhbGlkYXRvciA9IHZhbGlkYXRvcjsKLSAgfQotCi0gIHByb3RlY3RlZCBJUmVwb3J0ZXIgZ2V0T3JDcmVhdGVSZXBvcnRlcigpCi0gIHsKLSAgICBpZiAocmVwb3J0ZXIgPT0gbnVsbCkKLSAgICB7IAotICAgICAgcmVwb3J0ZXIgPSBuZXcgV29ya2JlbmNoUmVwb3J0ZXIoZmlsZS5nZXRQcm9qZWN0KCksIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotICAgIH0KLSAgICByZXR1cm4gcmVwb3J0ZXI7Ci0gIH0KLQotICAvKioKLSAgICogT3JpZ2luYWxseSBmcm9tICp2YWxpZGF0aW9uLkhlbHBlcgotICAgKiAKLSAgICogQHBhcmFtIHNldmVyaXR5Ci0gICAqICAgICAgICAgIFRoZSBzZXZlcml0eSBnaXZlbi4KLSAgICogQHJldHVybiBUaGUgdmFsaWRhdGlvbiBmcmFtZXdvcmsgc2V2ZXJpdHkgY29ycmVzcG9uZGluZyB0byB0aGUgZXJyb3IuCi0gICAqLwotICBwcm90ZWN0ZWQgaW50IGdldFZhbGlkYXRpb25GcmFtZXdvcmtTZXZlcml0eShpbnQgc2V2ZXJpdHkpCi0gIHsKLSAgICBzd2l0Y2ggKHNldmVyaXR5KSB7Ci0gICAgY2FzZSBJTWFya2VyLlNFVkVSSVRZX0VSUk9SOgotICAgICAgcmV0dXJuIElNZXNzYWdlLkhJR0hfU0VWRVJJVFk7Ci0gICAgY2FzZSBJTWFya2VyLlNFVkVSSVRZX1dBUk5JTkc6Ci0gICAgICByZXR1cm4gSU1lc3NhZ2UuTk9STUFMX1NFVkVSSVRZOwotICAgIGNhc2UgSU1hcmtlci5TRVZFUklUWV9JTkZPOgotICAgICAgcmV0dXJuIElNZXNzYWdlLkxPV19TRVZFUklUWTsKLSAgICB9Ci0gICAgcmV0dXJuIElNZXNzYWdlLkxPV19TRVZFUklUWTsKLSAgfQotICAKLSAgLyoqCi0gICAqIE9wZW4gYW4gZXJyb3IgZGlhbG9nIHdpdGggdGhlIGdpdmVuIHRpdGxlIGFuZCBtZXNzYWdlLiBTaG93IHRoZSBwcm9ibGVtcyB2aWV3Ci0gICAqIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHZpc2libGUuCi0gICAqIAotICAgKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIG9mIHRoZSBlcnJvciBkaWFsb2cuCi0gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIGluIHRoZSBlcnJvciBkaWFsb2cuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBvcGVuRXJyb3JEaWFsb2coU3RyaW5nIHRpdGxlLCBTdHJpbmcgbWVzc2FnZSkKLSAgewotICAgIHNob3dQcm9ibGVtc1ZpZXcoKTsKLSAgICBNZXNzYWdlRGlhbG9nLm9wZW5FcnJvcihEaXNwbGF5LmdldERlZmF1bHQoKS5nZXRBY3RpdmVTaGVsbCgpLCB0aXRsZSwgbWVzc2FnZSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBPcGVuIGFuIHdhcm5pbmcgZGlhbG9nIHdpdGggdGhlIGdpdmVuIHRpdGxlIGFuZCBtZXNzYWdlLiBTaG93IHRoZSBwcm9ibGVtcyB2aWV3Ci0gICAqIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHZpc2libGUuCi0gICAqIAotICAgKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIG9mIHRoZSB3YXJuaW5nIGRpYWxvZy4KLSAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgaW4gdGhlIHdhcm5pbmcgZGlhbG9nLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgb3Blbldhcm5pbmdEaWFsb2coU3RyaW5nIHRpdGxlLCBTdHJpbmcgbWVzc2FnZSkKLSAgewotICAgIHNob3dQcm9ibGVtc1ZpZXcoKTsKLSAgICBNZXNzYWdlRGlhbG9nLm9wZW5XYXJuaW5nKERpc3BsYXkuZ2V0RGVmYXVsdCgpLmdldEFjdGl2ZVNoZWxsKCksIHRpdGxlLCBtZXNzYWdlKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIE9wZW4gYSB2YWxpZCBkaWFsb2cgd2l0aCB0aGUgZ2l2ZW4gdGl0bGUgYW5kIG1lc3NhZ2UuIAotICAgKiAKLSAgICogQHBhcmFtIHRpdGxlIFRoZSB0aXRsZSBvZiB0aGUgdmFsaWQgZGlhbG9nLgotICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSBpbiB0aGUgdmFsaWQgZGlhbG9nLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgb3BlblZhbGlkRGlhbG9nKFN0cmluZyB0aXRsZSwgU3RyaW5nIG1lc3NhZ2UpCi0gIHsKLSAgICBNZXNzYWdlRGlhbG9nLm9wZW5JbmZvcm1hdGlvbihEaXNwbGF5LmdldERlZmF1bHQoKS5nZXRBY3RpdmVTaGVsbCgpLCB0aXRsZSwgbWVzc2FnZSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTaG93IHRoZSBwcm9ibGVtcyB2aWV3IGlmIGl0IGlzIG5vdCBhbHJlYWR5IHZpc2libGUuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzaG93UHJvYmxlbXNWaWV3KCkKLSAgewotICAgIElXb3JrYmVuY2hXaW5kb3cgZHcgPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvdygpOwotICAgIElXb3JrYmVuY2hQYWdlIHBhZ2UgPSBkdy5nZXRBY3RpdmVQYWdlKCk7Ci0gICAgSVdvcmtiZW5jaFBhcnQgYWN0aXZlUGFydCA9IHBhZ2UuZ2V0QWN0aXZlUGFydCgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIGlmIChwYWdlICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHBhZ2Uuc2hvd1ZpZXcoSVBhZ2VMYXlvdXQuSURfUFJPQkxFTV9WSUVXKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKFBhcnRJbml0RXhjZXB0aW9uIGUpCi0gICAgewotICAgIAlMb2dnZXIubG9nRXhjZXB0aW9uKGUpOwotICAgIH0KLSAgICBwYWdlLmFjdGl2YXRlKGFjdGl2ZVBhcnQpOwotICB9Ci0gIAotICAvKioKLSAgICogRm9ybWF0IGEgZmlsZSBuYW1lIGludG8gYSBjb3JyZWN0IFVSSS4KLSAgICogCi0gICAqIEBwYXJhbSBmaWxlbmFtZSBUaGUgZmlsZSBuYW1lIHRvIGZvcm1hdC4KLSAgICogQHJldHVybiBUaGUgZm9ybWF0dGVkIFVSSS4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgY3JlYXRlVVJJRm9yRmlsZVBhdGgoU3RyaW5nIGZpbGVuYW1lKQotICB7Ci0gIAlpZighZmlsZW5hbWUuc3RhcnRzV2l0aChGSUxFX1BST1RPQ09MX05PX1NMQVNIKSkKLSAgICB7Ci0gICAgICB3aGlsZShmaWxlbmFtZS5zdGFydHNXaXRoKCIvIikpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMSk7Ci0gICAgICB9Ci0gICAgICBmaWxlbmFtZSA9IEZJTEVfUFJPVE9DT0wgKyBmaWxlbmFtZTsKLSAgICB9Ci0gIAlyZXR1cm4gZmlsZW5hbWU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUaGUgdmFsaWRhdGlvbiBvdXRjb21lIGNsYXNzIGhvbGRzIHRoZSByZXN1bHRzIGZyb20gdmFsaWRhdGluZwotICAgKiBhIGZpbGUuCi0gICAqIAotICAgKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCwgSUJNCi0gICAqLwotICBwcm90ZWN0ZWQgY2xhc3MgVmFsaWRhdGlvbk91dGNvbWUKLSAgewotICAgIHB1YmxpYyBib29sZWFuIGlzVmFsaWQgPSB0cnVlOwotCi0gICAgcHVibGljIGJvb2xlYW4gaGFzTWVzc2FnZXMgPSBmYWxzZTsKLQotICAgIHB1YmxpYyBWYWxpZGF0aW9uT3V0Y29tZSgpCi0gICAgewotICAgIH0KLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvYWN0aW9ucy9XU0lWYWxpZGF0ZUFjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvV1NJVmFsaWRhdGVBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZhYWI4Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvYWN0aW9ucy9XU0lWYWxpZGF0ZUFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JV29ya3NwYWNlUnVubmFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuTWVzc2FnZURpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLmludGVybmFsLmNvcmUuSU1lc3NhZ2VBY2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwucHJvdmlzaW9uYWwuY29yZS5JTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbi5pbnRlcm5hbC5wcm92aXNpb25hbC5jb3JlLklSZXBvcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbi5pbnRlcm5hbC5wcm92aXNpb25hbC5jb3JlLklWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwucHJvdmlzaW9uYWwuY29yZS5NZXNzYWdlTGltaXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5hbmFseXplci5NZXNzYWdlQW5hbHl6ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5hbmFseXplci5XU0lBbmFseXplckV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwucmVwb3J0LkFzc2VydGlvbkVycm9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5WYWxpZGF0aW9uTWVzc2FnZTsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbjsKLQotLyoqCi0gKiBBY3Rpb24gZm9yIHJ1bm5pbmcgdGhlIHZhbGlkYXRvci4KLSAqIAotICogQGF1dGhvciBEYXZpZCBMYXV6b24sIElCTQotICogQGF1dGhvciBMYXdyZW5jZSBNYW5kZWwsIElCTQotICovCi1wdWJsaWMgY2xhc3MgV1NJVmFsaWRhdGVBY3Rpb24gZXh0ZW5kcyBWYWxpZGF0ZUFjdGlvbgotewotICBwcm90ZWN0ZWQgSVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0gIAotICBwcm90ZWN0ZWQgU3RyaW5nIHdzZGxmaWxlID0gbnVsbDsKLSAgcHJvdGVjdGVkIFN0cmluZyBlbGVtZW50bmFtZSA9IG51bGw7Ci0gIHByb3RlY3RlZCBTdHJpbmcgbmFtZXNwYWNlID0gbnVsbDsKLSAgcHJvdGVjdGVkIFN0cmluZyBwYXJlbnRuYW1lID0gbnVsbDsKLSAgcHJvdGVjdGVkIFN0cmluZyB0eXBlID0gbnVsbDsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gd3NkbHNwZWNpZmllZCA9IGZhbHNlOwotICBwcm90ZWN0ZWQgYm9vbGVhbiBleGNlcHRpb25DYXVnaHQgPSBmYWxzZTsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gZiBUaGUgZmlsZSB0byB2YWxpZGF0ZQotICAgKiBAcGFyYW0gc2hvd0RpYWxvZyBXaGV0aGVyIG9yIG5vdCB0byBzaG93IGEgc3RhdHVzIGRpYWxvZyBhZnRlciB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHVibGljIFdTSVZhbGlkYXRlQWN0aW9uKElGaWxlIGYsIGJvb2xlYW4gc2hvd0RpYWxvZykKLSAgewotICAJc3VwZXIoZiwgc2hvd0RpYWxvZyk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciB3aXRoIFdTREwgZWxlbWVudCBzcGVjaWZpZWQuCi0gICAqIAotICAgKiBAcGFyYW0gZiBUaGUgZmlsZSB0byB2YWxpZGF0ZS4KLSAgICogQHBhcmFtIHNob3dEaWFsb2cgV2hldGhlciBvciBub3QgdG8gc2hvdyBhIHN0YXR1cyBkaWFsb2cgYWZ0ZXIgdmFsaWRhdGlvbi4KLSAgICogQHBhcmFtIGZpbGUgVGhlIFdTREwgZmlsZSB0byB1c2UgZm9yIHZhbGlkYXRpb24uCi0gICAqIEBwYXJhbSBlbGVtZW50bmFtZSBUaGUgbmFtZSBvZiB0aGUgV1NETCBlbGVtZW50IHRvIHZhbGlkYXRlLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIFdTREwgZWxlbWVudCB0byB2YWxpZGF0ZQotICAgKiBAcGFyYW0gcGFyZW50bmFtZSBUaGUgcGFyZW50IG5hbWUgb2YgdGhlIFdTREwgZWxlbWVudCB0byB2YWxpZGF0ZS4KLSAgICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgZWxlbWVudCB0byB2YWxpZGF0ZS4KLSAgICovCi0gIHB1YmxpYyBXU0lWYWxpZGF0ZUFjdGlvbihJRmlsZSBmLCBib29sZWFuIHNob3dEaWFsb2csIFN0cmluZyBmaWxlLCBTdHJpbmcgZWxlbWVudG5hbWUsIFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBwYXJlbnRuYW1lLCBTdHJpbmcgdHlwZSkKLSAgewotICAJdGhpcyhmLCBzaG93RGlhbG9nKTsKLSAgCWlmIChmaWxlICE9IG51bGwpCi0gIAl7Ci0gIAkgIHdzZGxmaWxlID0gZmlsZS5yZXBsYWNlKCdcXCcsICcvJyk7Ci0gIAkgIGlmICgoIXdzZGxmaWxlLnN0YXJ0c1dpdGgoV1NJQ29uc3RhbnRzLkZJTEVfUFJFRklYKSkgJiYgCi0gIAkJICAoIXdzZGxmaWxlLnN0YXJ0c1dpdGgoV1NJQ29uc3RhbnRzLkhUVFBfUFJFRklYKSkpCi0gICAgICB7Ci0gIAkgICAgd3NkbGZpbGUgPSBXU0lDb25zdGFudHMuRklMRV9QUk9UT0NPTCArIHdzZGxmaWxlOyAgCi0gIAkgIH0KLSAgCX0KLSAgCXRoaXMuZWxlbWVudG5hbWUgPSBlbGVtZW50bmFtZTsKLSAgCXRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlOwotICAJdGhpcy5wYXJlbnRuYW1lID0gcGFyZW50bmFtZTsKLSAgCXRoaXMudHlwZSA9IHR5cGU7Ci0gIAl0aGlzLndzZGxzcGVjaWZpZWQgPSB0cnVlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLnZhbGlkYXRlLlZhbGlkYXRlQWN0aW9uI3ZhbGlkYXRlKG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlKQotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGUoZmluYWwgSUZpbGUgZmlsZTEpCi0gIHsKLSAgCWZpbmFsIE1lc3NhZ2VBbmFseXplciBtZXNzYWdlYW5hbHl6ZXI7Ci0gIAkKLSAgCWlmKHdzZGxzcGVjaWZpZWQpCi0gIAl7Ci0gIAkgIG1lc3NhZ2VhbmFseXplciA9IG5ldyBNZXNzYWdlQW5hbHl6ZXIoV1NJQ29uc3RhbnRzLkZJTEVfUFJPVE9DT0wgKyBmaWxlMS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCksIHdzZGxmaWxlLCBlbGVtZW50bmFtZSwgbmFtZXNwYWNlLCBwYXJlbnRuYW1lLCB0eXBlKTsJCi0gIAl9Ci0gIAllbHNlCi0gIAl7CQotICAJICBtZXNzYWdlYW5hbHl6ZXIgPSBuZXcgTWVzc2FnZUFuYWx5emVyKFdTSUNvbnN0YW50cy5GSUxFX1BST1RPQ09MICsgZmlsZTEuZ2V0TG9jYXRpb24oKS50b1N0cmluZygpKTsKLSAgCX0KLSAgCQotICAJSVdvcmtzcGFjZVJ1bm5hYmxlIG9wID0gbmV3IElXb3Jrc3BhY2VSdW5uYWJsZSgpIAotICAgIHsKLSAgICAgIHB1YmxpYyB2b2lkIHJ1bihJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvcikgdGhyb3dzIENvcmVFeGNlcHRpb24gCi0gICAgICB7ICAgICAgICAKLSAgICAgICAgY2xlYXJNYXJrZXJzKGZpbGUxKTsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBtZXNzYWdlYW5hbHl6ZXIudmFsaWRhdGVDb25mb3JtYW5jZSgpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChXU0lBbmFseXplckV4Y2VwdGlvbiBhZSkKLSAgICAgICAgewotICAgICAgICAJZXhjZXB0aW9uQ2F1Z2h0ID0gdHJ1ZTsKLSAgICAgICAgCWlmIChhZS5nZXRUYXJnZXRFeGNlcHRpb24oKSBpbnN0YW5jZW9mIFNBWFBhcnNlRXhjZXB0aW9uKQotICAgICAgICAJewotICAgICAgICAJICBjcmVhdGVNYXJrZXJzKGZpbGUxLCBuZXcgVmFsaWRhdGlvbk1lc3NhZ2VbXXtjcmVhdGVWYWxpZGF0aW9uTWVzc2FnZUZvckV4Y2VwdGlvbigoU0FYUGFyc2VFeGNlcHRpb24pYWUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCksIFZhbGlkYXRpb25NZXNzYWdlLlNFVl9OT1JNQUwpfSk7Ci0gICAgICAgIAl9Ci0gICAgICAgIAllbHNlCi0gICAgICAgIAl7Ci0gICAgICAgICAJICBjcmVhdGVNYXJrZXJzKGZpbGUxLCBuZXcgVmFsaWRhdGlvbk1lc3NhZ2VbXXtjcmVhdGVWYWxpZGF0aW9uTWVzc2FnZUZvckV4Y2VwdGlvbihhZSwgVmFsaWRhdGlvbk1lc3NhZ2UuU0VWX05PUk1BTCl9KTsKLSAgICAgICAgCX0KLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGNyZWF0ZU1hcmtlcnMoZmlsZTEsIGNvbnZlcnRWYWxpZGF0aW9uTWVzc2FnZXMobWVzc2FnZWFuYWx5emVyLmdldEFzc2VydGlvbldhcm5pbmdzKCksIFZhbGlkYXRpb25NZXNzYWdlLlNFVl9MT1cpKTsKLSAgICAgICAgY3JlYXRlTWFya2VycyhmaWxlMSwgY29udmVydFZhbGlkYXRpb25NZXNzYWdlcyhtZXNzYWdlYW5hbHl6ZXIuZ2V0QXNzZXJ0aW9uRXJyb3JzKCksIFZhbGlkYXRpb25NZXNzYWdlLlNFVl9OT1JNQUwpKTsKLSAgICAgICAgZmlsZS5zZXRTZXNzaW9uUHJvcGVydHkoVmFsaWRhdGlvbk1lc3NhZ2UuRVJST1JfTUVTU0FHRV9NQVBfUVVBTElGSUVEX05BTUUsIGdldE9yQ3JlYXRlUmVwb3J0ZXIoKS5nZXRNZXNzYWdlcygpKTsKLQkJfQotICAgIH07Ci0gICAKLSAgICAKLSAgICAgdHJ5Ci0gICAgewotICAgICAgUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLnJ1bihvcCwgbnVsbCk7Ci0gICAgIGlmIChzaG93RGlhbG9nKQotICAgICAgewotICAgICAgICBpZiAoZXhjZXB0aW9uQ2F1Z2h0KQotICAgICAgICB7Ci0gICAgICAgICAgTWVzc2FnZURpYWxvZy5vcGVuRXJyb3IoRGlzcGxheS5nZXREZWZhdWx0KCkuZ2V0QWN0aXZlU2hlbGwoKSwgCi0gICAgICAgICAgCQlNZXNzYWdlcy5FUlJPUl9VTkFCTEVfVE9fVkFMSURBVEUsIAotICAgICAgICAgIAkJTWVzc2FnZXMuRVJST1JfUFJPQkxFTVNfUkVBRElOR19XU0lNU0dfRklMRSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobWVzc2FnZWFuYWx5emVyLmdldEFzc2VydGlvbkVycm9ycygpLnNpemUoKSAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgTWVzc2FnZURpYWxvZy5vcGVuRXJyb3IoRGlzcGxheS5nZXREZWZhdWx0KCkuZ2V0QWN0aXZlU2hlbGwoKSwgCi0gICAgICAgICAgCQlNZXNzYWdlcy5FUlJPUl9WQUxJREFUSU9OX0ZBSUxFRCwgCi0gICAgICAgICAgCQlNZXNzYWdlcy5FUlJPUl9USEVfV1NJTVNHX0ZJTEVfSVNfTk9UX1ZBTElEKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChtZXNzYWdlYW5hbHl6ZXIuZ2V0QXNzZXJ0aW9uV2FybmluZ3MoKS5zaXplKCkgIT0gMCkKLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgU3RyaW5nIHRpdGxlID0gTWVzc2FnZXMuSU5GT19WQUxJREFUSU9OX1NVQ0VFREVEOwotICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gTWVzc2FnZXMuV0FSTklOR19WQUxJREFUSU9OX1dBUk5JTkdTX0RFVEVDVEVEOwotICAgICAgICAgIE1lc3NhZ2VEaWFsb2cub3BlbkluZm9ybWF0aW9uKERpc3BsYXkuZ2V0RGVmYXVsdCgpLmdldEFjdGl2ZVNoZWxsKCksIHRpdGxlLCBtZXNzYWdlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgdGl0bGUgPSBNZXNzYWdlcy5JTkZPX1ZBTElEQVRJT05fU1VDRUVERUQ7Ci0gICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBNZXNzYWdlcy5JTkZPX1RIRV9XU0lNU0dfRklMRV9JU19WQUxJRDsKLSAgICAgICAgICBNZXNzYWdlRGlhbG9nLm9wZW5JbmZvcm1hdGlvbihEaXNwbGF5LmdldERlZmF1bHQoKS5nZXRBY3RpdmVTaGVsbCgpLCB0aXRsZSwgbWVzc2FnZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goRXhjZXB0aW9uIGUpe30KLSAgfQotICAKLSAgLyoqCi0gICAqIENyZWF0ZSBhIHZhbGlkYXRpb24gbWVzc2FnZSBmcm9tIHRoZSBleGNlcHRpb24gYW5kIHNldmVyaXR5LgotICAgKiAKLSAgICogQHBhcmFtIGVycm9yIFRoZSBlcnJvci4KLSAgICogQHBhcmFtIHNldmVyaXR5IFRoZSBzZXZlcml0eS4KLSAgICogQHJldHVybiBBbiBlcnJvciBtZXNzYWdlLgotICAgKi8KLSAgcHJvdGVjdGVkIFZhbGlkYXRpb25NZXNzYWdlIGNyZWF0ZVZhbGlkYXRpb25NZXNzYWdlRm9yRXhjZXB0aW9uKFNBWFBhcnNlRXhjZXB0aW9uIGVycm9yLCBpbnQgc2V2ZXJpdHkpCi0gIHsKLSAgICBTdHJpbmcgdXJpID0gZXJyb3IuZ2V0U3lzdGVtSWQoKTsKLSAgICBpZih1cmkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB1cmkgPSBlcnJvci5nZXRQdWJsaWNJZCgpOwotICAgIH0KLSAgICBWYWxpZGF0aW9uTWVzc2FnZSB2YWxpZGF0aW9uTWVzc2FnZSA9IG5ldyBWYWxpZGF0aW9uTWVzc2FnZShlcnJvci5nZXRNZXNzYWdlKCksIGVycm9yLmdldExpbmVOdW1iZXIoKSwgZXJyb3IuZ2V0Q29sdW1uTnVtYmVyKCksIHVyaSk7Ci0gICAgdmFsaWRhdGlvbk1lc3NhZ2Uuc2V0U2V2ZXJpdHkoc2V2ZXJpdHkpOwotICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZTsKLSAgfQotCi0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIHZhbGlkYXRpb24gbWVzc2FnZSBmcm9tIHRoZSBleGNlcHRpb24gYW5kIHNldmVyaXR5LgotICAgKiAKLSAgICogQHBhcmFtIGVycm9yIFRoZSBlcnJvci4KLSAgICogQHBhcmFtIHNldmVyaXR5IFRoZSBzZXZlcml0eS4KLSAgICogQHJldHVybiBBbiBlcnJvciBtZXNzYWdlLgotICAgKi8KLSAgcHJvdGVjdGVkIFZhbGlkYXRpb25NZXNzYWdlIGNyZWF0ZVZhbGlkYXRpb25NZXNzYWdlRm9yRXhjZXB0aW9uKFdTSUFuYWx5emVyRXhjZXB0aW9uIGVycm9yLCBpbnQgc2V2ZXJpdHkpCi0gIHsKLSAgICBWYWxpZGF0aW9uTWVzc2FnZSB2YWxpZGF0aW9uTWVzc2FnZSA9IG5ldyBWYWxpZGF0aW9uTWVzc2FnZShlcnJvci5nZXRNZXNzYWdlKCksIDAsIDApOwotICAgIHZhbGlkYXRpb25NZXNzYWdlLnNldFNldmVyaXR5KHNldmVyaXR5KTsKLSAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2U7Ci0gIH0KLSAKLSAgcHVibGljIFZhbGlkYXRpb25NZXNzYWdlW10gIGNvbnZlcnRWYWxpZGF0aW9uTWVzc2FnZXMoTGlzdCBsaXN0LCBpbnQgbWFya2VyKQotICB7Ci0JaWYgKGxpc3QgIT0gbnVsbCkKLQl7Ci0JICBpbnQgc2l6ZSA9IGxpc3Quc2l6ZSgpOwotCSAgVmFsaWRhdGlvbk1lc3NhZ2VbXSBtZXNzYWdlcyA9IG5ldyBWYWxpZGF0aW9uTWVzc2FnZVtzaXplXTsKLQkgCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgIHsKLSAgICAgICAgQXNzZXJ0aW9uRXJyb3IgYXNzZXJ0aW9uRXJyb3IgPSAoQXNzZXJ0aW9uRXJyb3IpIGxpc3QuZ2V0KGkpOwotCi0gICAgICAgIGludCBuID0gYXNzZXJ0aW9uRXJyb3IuZ2V0TGluZSgpOwotICAgICAgICBpbnQgYyA9IGFzc2VydGlvbkVycm9yLmdldENvbHVtbigpOwotICAgICAgICBTdHJpbmcgbSA9IFdTSUNvbnN0YW50cy5XU0lfUFJFRklYICsgIigiICsgYXNzZXJ0aW9uRXJyb3IuZ2V0QXNzZXJ0aW9uSUQoKSsgIikgIiArIGFzc2VydGlvbkVycm9yLmdldEVycm9yTWVzc2FnZSgpOwotICAgICAgCi0gICAgICAgIFZhbGlkYXRpb25NZXNzYWdlIG1lc3NhZ2UgPSBuZXcgVmFsaWRhdGlvbk1lc3NhZ2UobSxuLCBjKTsKLSAgICAgICAgbWVzc2FnZS5zZXRTZXZlcml0eShtYXJrZXIpOwotICAgICAgICBtZXNzYWdlc1tpXSA9IG1lc3NhZ2U7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbWVzc2FnZXM7Ci0gICAgfQotCXJldHVybiBuZXcgVmFsaWRhdGlvbk1lc3NhZ2VbMF07Ci0gIH0KLQotIC8qKgotICBwcm90ZWN0ZWQgSVJlcG9ydGVyIGdldE9yQ3JlYXRlUmVwb3J0ZXIoKQotICB7Ci0gICAgaWYgKHJlcG9ydGVyID09IG51bGwpCi0gICAgeyAKLSAgICAgIHJlcG9ydGVyID0gbmV3IFJlcG9ydGVyKCk7Ci0gICAgfQotICAgIHJldHVybiByZXBvcnRlcjsKLSAgfQotICAqLwotICAvLyBNeSBJbXBsZW1lbnRhdGlvbiBvZiBJUmVwb3J0ZXIKLSAgY2xhc3MgUmVwb3J0ZXIgaW1wbGVtZW50cyBJUmVwb3J0ZXIgCi0gIHsKLQlMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLQlwdWJsaWMgUmVwb3J0ZXIoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JcHVibGljIElNZXNzYWdlQWNjZXNzIGdldE1lc3NhZ2VBY2Nlc3MoKSB7Ci0JCXJldHVybiBudWxsOyAvLyBkbyBub3QgbmVlZCB0byBpbXBsZW1lbnQKLQl9Ci0KLQlwdWJsaWMgYm9vbGVhbiBpc0NhbmNlbGxlZCgpIHsKLQkJcmV0dXJuIGZhbHNlOyAvLyBkbyBub3QgbmVlZCB0byBpbXBsZW1lbnQKLQl9Ci0KLQlwdWJsaWMgdm9pZCByZW1vdmVBbGxNZXNzYWdlcyhJVmFsaWRhdG9yIG9yaWdpbiwgT2JqZWN0IG9iamVjdCkgeyAvLyBkbwotCQkJCQkJCQkJCQkJCQkJCQkJLy8gbm90Ci0JCQkJCQkJCQkJCQkJCQkJCQkvLyBuZWVkCi0JCQkJCQkJCQkJCQkJCQkJCQkvLyB0bwotCQkJCQkJCQkJCQkJCQkJCQkJLy8gaW1wbGVtZW50Ci0JfQotCi0JcHVibGljIHZvaWQgcmVtb3ZlQWxsTWVzc2FnZXMoSVZhbGlkYXRvciBvcmlnaW4pIHsvLyBkbyBub3QgbmVlZCB0bwotCQkJCQkJCQkJCQkJCQkvLyBpbXBsZW1lbnQKLQl9Ci0KLQlwdWJsaWMgdm9pZCByZW1vdmVNZXNzYWdlU3Vic2V0KElWYWxpZGF0b3IgdmFsaWRhdG9yLCBPYmplY3Qgb2JqLCBTdHJpbmcgZ3JvdXBOYW1lKSB7Ly8gZG8KLQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJLy8gbm90Ci0JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCS8vIG5lZWQKLQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJLy8gdG8KLQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJLy8gaW1wbGVtZW50Ci0JfQotCi0JcHVibGljIExpc3QgZ2V0TWVzc2FnZXMoKSB7Ci0JCXJldHVybiBsaXN0OwotCX0KLQotCXB1YmxpYyB2b2lkIGFkZE1lc3NhZ2UoSVZhbGlkYXRvciBvcmlnaW4sIElNZXNzYWdlIG1lc3NhZ2UpIHRocm93cyBNZXNzYWdlTGltaXRFeGNlcHRpb24gCi0JewotCQlsaXN0LmFkZChtZXNzYWdlKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBkaXNwbGF5U3VidGFzayhJVmFsaWRhdG9yIHZhbGlkYXRvciwgSU1lc3NhZ2UgbWVzc2FnZSkgCi0JewotCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0JCQotCX0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvV1NJVmFsaWRhdGlvblVJTWVzc2FnZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9hY3Rpb25zL1dTSVZhbGlkYXRpb25VSU1lc3NhZ2VzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMWEyYTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvV1NJVmFsaWRhdGlvblVJTWVzc2FnZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIAotICovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9uczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7Ci0KLS8qKgotICogU3RyaW5ncyB1c2VkIGJ5IFhNTCBWYWxpZGF0aW9uCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0lWYWxpZGF0aW9uVUlNZXNzYWdlcyBleHRlbmRzIE5MUyB7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gIm9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9ucy53c2l2YWxpZGF0aW9uIjsgLy8kTk9OLU5MUy0xJAotCi0JcHJpdmF0ZSBXU0lWYWxpZGF0aW9uVUlNZXNzYWdlcygpIHsKLQkJLy8gY2Fubm90IGNyZWF0ZSBuZXcgaW5zdGFuY2UKLQl9Ci0KLQlzdGF0aWMgewotCQkvLyBpbml0aWFsaXplIHJlc291cmNlIGJ1bmRsZQotCQlOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBXU0lWYWxpZGF0aW9uVUlNZXNzYWdlcy5jbGFzcyk7Ci0JfQotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIF9VSV9TQVZFX0RJUlRZX0ZJTEVfTUVTU0FHRTsKLQlwdWJsaWMgc3RhdGljIFN0cmluZyBfVUlfU0FWRV9ESVJUWV9GSUxFX1RJVExFOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvYWN0aW9uRGVsZWdhdGVzL1JlcXVlc3RIYW5kbGVySW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvYWN0aW9uRGVsZWdhdGVzL1JlcXVlc3RIYW5kbGVySW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjVmNjA4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9hY3Rpb25zL2FjdGlvbkRlbGVnYXRlcy9SZXF1ZXN0SGFuZGxlckltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyNiArMCwwIEBACi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuYWN0aW9ucy5hY3Rpb25EZWxlZ2F0ZXM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLmNvcmUuaW50ZXJuYWwucHJvdmlzaW9uYWwuUmVxdWVzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyOwotCi0vKioKLSAqIEltcGxlbWVudHMgdGhlIFJlcXVlc3RIYW5kbGVyIGludGVyZmFjZSB3aGljaCByZXByZXNlbnRzIGEgVENQL0lQCi0gKiByZXF1ZXN0IG1hZGUgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLiBFYWNoIHJlcXVlc3QgCi0gKiByZXByZXNlbnRzIGEgcmVxdWVzdC1yZXNwb25zZSBwYWlyLCB3aGVyZSB0aGUgcmVxdWVzdCBpcyBmcm9tIAotICogY2xpZW50IC0+IHNlcnZlciwgYW5kIHRoZSByZXNwb25zZSBpcyBmcm9tIHNlcnZlciAtPiBjbGllbnQuCi0gKiAKLSAqIEBhdXRob3IgbGF1em9uZAotICovCi1wdWJsaWMgY2xhc3MgUmVxdWVzdEhhbmRsZXJJbXBsIGltcGxlbWVudHMgUmVxdWVzdEhhbmRsZXIgCi17Ci0JLyoqCi0JICogVGhlIEhUVFAgaGVhZGVyIG9mIHRoZSByZXF1ZXN0IHBvcnRpb24gb2YgdGhpcyByZXF1ZXN0LgotCSAqLwotCXByb3RlY3RlZCBieXRlW10gcmVxdWVzdEhlYWRlcjsKLQkKLQkvKioKLQkgKiBUaGUgSFRUUCBoZWFkZXIgb2YgdGhlIHJlc3BvbnNlIHBvcnRpb24gb2YgdGhpcyByZXF1ZXN0LgotCSAqLwotCXByb3RlY3RlZCBieXRlW10gcmVzcG9uc2VIZWFkZXI7Ci0KLQkvKioKLQkgKiBUaGUgSFRUUCBib2R5IG9mIHRoZSByZXF1ZXN0IHBvcnRpb24gb2YgdGhpcyByZXF1ZXN0LgotCSAqLwotCXByb3RlY3RlZCBieXRlW10gcmVxdWVzdENvbnRlbnQ7Ci0KLQkvKioKLQkgKiBUaGUgSFRUUCBib2R5IG9mIHRoZSByZXNwb25zZSBwb3J0aW9uIG9mIHRoaXMgcmVxdWVzdC4KLQkgKi8KLQlwcm90ZWN0ZWQgYnl0ZVtdIHJlc3BvbnNlQ29udGVudDsKLQotCS8qKgotCSAqIFRoZSB0aW1lIHRoaXMgcmVxdWVzdCB3YXMgbWFkZS4KLQkgKi8KLQlwcm90ZWN0ZWQgRGF0ZSBkYXRlID0gbnVsbDsKLQkKLQkvKioKLQkgKiBUaGUgbG9jYWwgKGNsaWVudCkgcG9ydC4KLQkgKi8KLQlwcm90ZWN0ZWQgaW50IGxvY2FsUG9ydCA9IDA7Ci0KLQkvKioKLQkgKiBUaGUgcmVtb3RlIChzZXJ2ZXIpIHBvcnQuCi0JICovCi0JcHJvdGVjdGVkIGludCByZW1vdGVQb3J0ID0gMDsKLQkKLQkvKioKLQkgKiBUaGUgcmVtb3RlIChzZXJ2ZXIpIGhvc3QuCi0JICovCi0JcHJvdGVjdGVkIFN0cmluZyByZW1vdGVIb3N0ID0gbnVsbDsKLQotCS8qKgotCSAqIFRoZSBzZXJ2ZXIncyByZXNwb25zZSB0aW1lIGluIG1pbGxpc2Vjb25kcy4gCi0JICovCi0JcHJvdGVjdGVkIGxvbmcgcmVzcG9uc2VUaW1lID0gMDsKLQkKLQkvKioKLQkgKiBDb25zdHJ1Y3Rvci4KLQkgKiBAcGFyYW0gcmVxdWVzdCBhIFRDUC9JUCByZXF1ZXN0Ci0JICovCi0JUmVxdWVzdEhhbmRsZXJJbXBsKFJlcXVlc3QgcmVxdWVzdCkKLQl7Ci0JICBpZiAocmVxdWVzdCAhPSBudWxsKQotCSAgewotCQl0aGlzLnJlcXVlc3RIZWFkZXIgPSByZXF1ZXN0LmdldFJlcXVlc3QoUmVxdWVzdC5UUkFOU1BPUlQpOwotCQl0aGlzLnJlcXVlc3RDb250ZW50ID0gcmVxdWVzdC5nZXRSZXF1ZXN0KFJlcXVlc3QuQ09OVEVOVCk7Ci0JCXRoaXMucmVzcG9uc2VIZWFkZXIgPSByZXF1ZXN0LmdldFJlc3BvbnNlKFJlcXVlc3QuVFJBTlNQT1JUKTsKLQkJdGhpcy5yZXNwb25zZUNvbnRlbnQgPSByZXF1ZXN0LmdldFJlc3BvbnNlKFJlcXVlc3QuQ09OVEVOVCk7Ci0JCXRoaXMuZGF0ZSA9IHJlcXVlc3QuZ2V0RGF0ZSgpOwotCQl0aGlzLmxvY2FsUG9ydCA9IHJlcXVlc3QuZ2V0TG9jYWxQb3J0KCk7Ci0JCXRoaXMucmVtb3RlUG9ydCA9IHJlcXVlc3QuZ2V0UmVtb3RlUG9ydCgpOwotCQl0aGlzLnJlbW90ZUhvc3QgPSByZXF1ZXN0LmdldFJlbW90ZUhvc3QoKTsKLQkJdGhpcy5yZXNwb25zZVRpbWUgPSByZXF1ZXN0LmdldFJlc3BvbnNlVGltZSgpOwotCSAgfQotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI2dldFJlcXVlc3RIZWFkZXIoKQotCSAqLwotCXB1YmxpYyBieXRlW10gZ2V0UmVxdWVzdEhlYWRlcigpIAotCXsKLQkJcmV0dXJuIHRoaXMucmVxdWVzdEhlYWRlcjsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI3NldFJlcXVlc3RIZWFkZXIoYnl0ZVtdKQotCSAqLwotCXB1YmxpYyB2b2lkIHNldFJlcXVlc3RIZWFkZXIoYnl0ZVtdIHJlcXVlc3RIZWFkZXIpIAotCXsKLQkJdGhpcy5yZXF1ZXN0SGVhZGVyID0gcmVxdWVzdEhlYWRlcjsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI2dldFJlc3BvbnNlSGVhZGVyKCkKLQkgKi8KLQlwdWJsaWMgYnl0ZVtdIGdldFJlc3BvbnNlSGVhZGVyKCkgCi0JewotCQlyZXR1cm4gdGhpcy5yZXNwb25zZUhlYWRlcjsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI3NldFJlc3BvbnNlSGVhZGVyKGJ5dGVbXSkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRSZXNwb25zZUhlYWRlcihieXRlW10gcmVzcG9uc2VIZWFkZXIpIAotCXsKLQkJdGhpcy5yZXNwb25zZUhlYWRlciA9IHJlc3BvbnNlSGVhZGVyOwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuUmVxdWVzdEhhbmRsZXIjZ2V0UmVxdWVzdENvbnRlbnQoKQotCSAqLwotCXB1YmxpYyBieXRlW10gZ2V0UmVxdWVzdENvbnRlbnQoKSAKLQl7Ci0JCXJldHVybiB0aGlzLnJlcXVlc3RDb250ZW50OwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuUmVxdWVzdEhhbmRsZXIjc2V0UmVzcG9uc2VDb250ZW50KGJ5dGVbXSkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRSZXNwb25zZUNvbnRlbnQoYnl0ZVtdIHJlc3BvbnNlQ29udGVudCkgCi0JewotCQl0aGlzLnJlc3BvbnNlQ29udGVudCA9IHJlc3BvbnNlQ29udGVudDsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI2dldFJlc3BvbnNlQ29udGVudCgpCi0JICovCi0JcHVibGljIGJ5dGVbXSBnZXRSZXNwb25zZUNvbnRlbnQoKSAKLQl7Ci0JCXJldHVybiB0aGlzLnJlc3BvbnNlQ29udGVudDsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI3NldFJlcXVlc3RDb250ZW50KGJ5dGVbXSkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRSZXF1ZXN0Q29udGVudChieXRlW10gcmVxdWVzdENvbnRlbnQpIAotCXsKLQkJdGhpcy5yZXF1ZXN0Q29udGVudCA9IHJlcXVlc3RDb250ZW50OwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuUmVxdWVzdEhhbmRsZXIjZ2V0RGF0ZSgpCi0JICovCi0JcHVibGljIERhdGUgZ2V0RGF0ZSgpIAotCXsKLQkJcmV0dXJuIHRoaXMuZGF0ZTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI3NldERhdGUoamF2YS51dGlsLkRhdGUpCi0JICovCi0JcHVibGljIHZvaWQgc2V0RGF0ZShEYXRlIGRhdGUpIAotCXsKLQkJdGhpcy5kYXRlID0gZGF0ZTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI2dldExvY2FsUG9ydCgpCi0JICovCi0JcHVibGljIGludCBnZXRMb2NhbFBvcnQoKSAKLQl7Ci0JCXJldHVybiB0aGlzLmxvY2FsUG9ydDsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI3NldExvY2FsUG9ydChpbnQpCi0JICovCi0JcHVibGljIHZvaWQgc2V0TG9jYWxQb3J0KGludCBsb2NhbFBvcnQpIAotCXsKLQkJdGhpcy5sb2NhbFBvcnQgPSBsb2NhbFBvcnQ7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5SZXF1ZXN0SGFuZGxlciNnZXRSZW1vdGVQb3J0KCkKLQkgKi8KLQlwdWJsaWMgaW50IGdldFJlbW90ZVBvcnQoKSAKLQl7Ci0JCXJldHVybiB0aGlzLnJlbW90ZVBvcnQ7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5SZXF1ZXN0SGFuZGxlciNzZXRSZW1vdGVQb3J0KGludCkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRSZW1vdGVQb3J0KGludCByZW1vdGVQb3J0KSAKLQl7Ci0JCXRoaXMucmVtb3RlUG9ydCA9IHJlbW90ZVBvcnQ7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5SZXF1ZXN0SGFuZGxlciNnZXRSZW1vdGVIb3N0KCkKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFJlbW90ZUhvc3QoKSAKLQl7Ci0JCXJldHVybiB0aGlzLnJlbW90ZUhvc3Q7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5SZXF1ZXN0SGFuZGxlciNzZXRSZW1vdGVIb3N0KGphdmEubGFuZy5TdHJpbmcpCi0JICovCi0JcHVibGljIHZvaWQgc2V0UmVtb3RlSG9zdChTdHJpbmcgcmVtb3RlSG9zdCkgCi0JewotCQl0aGlzLnJlbW90ZUhvc3QgPSByZW1vdGVIb3N0OwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuUmVxdWVzdEhhbmRsZXIjZ2V0UmVzcG9uc2VUaW1lKCkKLQkgKi8KLQlwdWJsaWMgbG9uZyBnZXRSZXNwb25zZVRpbWUoKSAKLQl7Ci0JCXJldHVybiB0aGlzLnJlc3BvbnNlVGltZTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyI3NldFJlc3BvbnNlVGltZShsb25nKQotCSAqLwotCXB1YmxpYyB2b2lkIHNldFJlc3BvbnNlVGltZShsb25nIHJlc3BvbnNlVGltZSkgCi0JewotCQl0aGlzLnJlc3BvbnNlVGltZSA9IHJlc3BvbnNlVGltZTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvYWN0aW9ucy9hY3Rpb25EZWxlZ2F0ZXMvVmFsaWRhdGVXU0lMb2dGaWxlQWN0aW9uRGVsZWdhdGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9hY3Rpb25zL2FjdGlvbkRlbGVnYXRlcy9WYWxpZGF0ZVdTSUxvZ0ZpbGVBY3Rpb25EZWxlZ2F0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzQxMGU4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9hY3Rpb25zL2FjdGlvbkRlbGVnYXRlcy9WYWxpZGF0ZVdTSUxvZ0ZpbGVBY3Rpb25EZWxlZ2F0ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5hY3Rpb25zLmFjdGlvbkRlbGVnYXRlczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmFjdGlvbi5JQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklBY3Rpb25EZWxlZ2F0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuV1NJTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsLmFjdGlvbnMuV1NJVmFsaWRhdGVBY3Rpb247Ci0KLQotLyoqCi0gKiBBY3Rpb24gZGVsZWdhdGUgZm9yIHZhbGlkYXRpbmcgYSBXUy1JIGxvZyBmaWxlLgotICogCi0gKiBAYXV0aG9yIERhdmlkIExhdXpvbiwgSUJNCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCwgSUJNCi0gKi8KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZVdTSUxvZ0ZpbGVBY3Rpb25EZWxlZ2F0ZSBpbXBsZW1lbnRzIElBY3Rpb25EZWxlZ2F0ZQotewotICAvKioKLSAgICogVGhlIGN1cnJlbnQgc2VsZWN0aW9uLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGlvbi4KLSAgICovCi0gIElTZWxlY3Rpb24gc2VsZWN0aW9uOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0ZVdTSUxvZ0ZpbGVBY3Rpb25EZWxlZ2F0ZSgpCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLklBY3Rpb25EZWxlZ2F0ZSNydW4ob3JnLmVjbGlwc2UuamZhY2UuYWN0aW9uLklBY3Rpb24pCi0gICAqLwotICBwdWJsaWMgdm9pZCBydW4oSUFjdGlvbiBhY3Rpb24pCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pCi0gICAgICB7Ci0gICAgICAgIE9iamVjdCAgb2JqID0gKChJU3RydWN0dXJlZFNlbGVjdGlvbilzZWxlY3Rpb24pLmdldEZpcnN0RWxlbWVudCgpOwotICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgSUZpbGUpCi0gICAgICAgIHsKLSAgICAgICAgICBJRmlsZSBmaWxlID0gKElGaWxlKW9iajsKLSAgICAgICAgICBXU0lNZXNzYWdlVmFsaWRhdG9yIG1lc3NhZ2VWYWxpZGF0b3IgPSBuZXcgV1NJTWVzc2FnZVZhbGlkYXRvcigpOwotICAgICAgICAgIFdTSVZhbGlkYXRlQWN0aW9uIHZhbGlkYXRlQWN0aW9uID0gbmV3IFdTSVZhbGlkYXRlQWN0aW9uKGZpbGUsIHRydWUpOwotICAgICAgICAgIHZhbGlkYXRlQWN0aW9uLnNldFZhbGlkYXRvcihtZXNzYWdlVmFsaWRhdG9yKTsKLSAgICAgICAgICB2YWxpZGF0ZUFjdGlvbi5ydW4oKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS51aS5JQWN0aW9uRGVsZWdhdGUjc2VsZWN0aW9uQ2hhbmdlZChvcmcuZWNsaXBzZS5qZmFjZS5hY3Rpb24uSUFjdGlvbiwgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChJQWN0aW9uIGFjdGlvbiwgSVNlbGVjdGlvbiBzZWxlY3Rpb24pCi0gIHsKLSAgICB0aGlzLnNlbGVjdGlvbiA9IHNlbGVjdGlvbjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvYWN0aW9uRGVsZWdhdGVzL1ZhbGlkYXRlV1NJUHJvZmlsZUFjdGlvbkRlbGVnYXRlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvYWN0aW9ucy9hY3Rpb25EZWxlZ2F0ZXMvVmFsaWRhdGVXU0lQcm9maWxlQWN0aW9uRGVsZWdhdGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFiYWU1Yi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvYWN0aW9ucy9hY3Rpb25EZWxlZ2F0ZXMvVmFsaWRhdGVXU0lQcm9maWxlQWN0aW9uRGVsZWdhdGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI0MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsLmFjdGlvbnMuYWN0aW9uRGVsZWdhdGVzOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuYWN0aW9uLklBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5NZXNzYWdlRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuV2l6YXJkRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5pbnRlcm5ldC5tb25pdG9yLmNvcmUuaW50ZXJuYWwucHJvdmlzaW9uYWwuUmVxdWVzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuaW50ZXJuZXQubW9uaXRvci51aS5pbnRlcm5hbC5wcm92aXNpb25hbC5Nb25pdG9yVUlDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nQnVpbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLlJlcXVlc3RIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC53aXphcmRzLlZhbGlkYXRpb25XaXphcmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5XU0lWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JVmlld0FjdGlvbkRlbGVnYXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklWaWV3UGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5hY3Rpb25zLldvcmtzcGFjZU1vZGlmeU9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5kaWFsb2dzLkNvbnRhaW5lckdlbmVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLkxvZzsKLQotLyoqCi0gKiBBY3Rpb24gZGVsZWdhdGUgZm9yIHRoZSBXUy1JIHZhbGlkYXRvci4KLSAqIAotICogQGF1dGhvciBEYXZpZCBMYXV6b24sIElCTQotICogQGF1dGhvciBMYXdyZW5jZSBNYW5kZWwsIElCTQotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVXU0lQcm9maWxlQWN0aW9uRGVsZWdhdGUgaW1wbGVtZW50cyBJVmlld0FjdGlvbkRlbGVnYXRlCi17Ci0gIC8qKgotICAgKiBUaGUgZGVmYXVsdCBXUy1JIE1lc3NhZ2UgTG9nIGZpbGVuYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9MT0dfRklMRU5BTUUgPSAibG9nLndzaW1zZyI7Ci0KLSAgLyoqCi0gICAqIFRoZSBIVFRQIHByb3RvY29sLgotICAgKi8KLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSFRUUCA9ICJodHRwOi8vIjsKLSAgCi0gIAotICAvKioKLSAgICogVGhlIGRlZmF1bHQgdGFnIGZvciBXU0RMIGxvY2F0aW9ucy4KLSAgICovCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFdTREwgPSAiP1dTREwiOwotICAKLSAgLyoqCi0gICAqIFRoZSBjdXJyZW50IHNlbGVjdGlvbiwgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24uCi0gICAqLwotICBJU2VsZWN0aW9uIHNlbGVjdGlvbjsKLQotICAvKioKLSAgICogVGhlIGxpc3Qgb2YgbWVzc2FnZXMgaW4gdGhlIGZvcm0gb2YgcmVxdWVzdC1yZXNwb25zZSBwYWlycy4KLSAgICovCi0gIFJlcXVlc3RbXSByZXF1ZXN0UmVzcG9uc2VzOwotCi0gIC8qKgotICAgKiBUaGUgdmlldyB0aGF0IHByb3ZpZGVzIHRoZSBjb250ZXh0IGZvciB0aGlzIGRlbGVnYXRlLgotICAgKi8KLSAgSVZpZXdQYXJ0IHZpZXc7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIFZhbGlkYXRlV1NJUHJvZmlsZUFjdGlvbkRlbGVnYXRlKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UudWkuSVZpZXdBY3Rpb25EZWxlZ2F0ZSNpbml0KG9yZy5lY2xpcHNlLnVpLklWaWV3UGFydCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGluaXQoSVZpZXdQYXJ0IHZpZXcpCi0gIHsKLSAgICB0aGlzLnZpZXcgPSB2aWV3OwotICB9Ci0KLSAgLyoqIAotICAgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLklBY3Rpb25EZWxlZ2F0ZSNydW4ob3JnLmVjbGlwc2UuamZhY2UuYWN0aW9uLklBY3Rpb24pCi0gICAqLwotICBwdWJsaWMgdm9pZCBydW4oSUFjdGlvbiBhY3Rpb24pCi0gIHsKLSAgICBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24gb3BlcmF0aW9uID0gbmV3IFdvcmtzcGFjZU1vZGlmeU9wZXJhdGlvbigpCi0gICAgewotICAgICAgcHJvdGVjdGVkIHZvaWQgZXhlY3V0ZShJUHJvZ3Jlc3NNb25pdG9yIHByb2dyZXNzTW9uaXRvcikKLSAgICAgIHRocm93cyBDb3JlRXhjZXB0aW9uCi0gICAgICB7Ci0gICAgICAgIHZhbGlkYXRlKHByb2dyZXNzTW9uaXRvcik7Ci0gICAgICB9Ci0gICAgfTsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICBvcGVyYXRpb24ucnVuKG51bGwpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQotICAgIHsKLSAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBUaGUgdmFsaWRhdGUgYWN0aW9uLgotICAgKiAKLSAgICogQHBhcmFtIHByb2dyZXNzTW9uaXRvcgotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGUoSVByb2dyZXNzTW9uaXRvciBwcm9ncmVzc01vbml0b3IpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICByZXF1ZXN0UmVzcG9uc2VzID0gTW9uaXRvclVJQ29yZS5nZXRSZXF1ZXN0cygpOwotICAgICAgU2hlbGwgc2hlbGwgPSBEaXNwbGF5LmdldEN1cnJlbnQoKS5nZXRBY3RpdmVTaGVsbCgpOwotICAgICAgaWYgKChyZXF1ZXN0UmVzcG9uc2VzICE9IG51bGwpICYmIChyZXF1ZXN0UmVzcG9uc2VzLmxlbmd0aCA+IDApKQotICAgICAgewotICAgICAgICBWYWxpZGF0aW9uV2l6YXJkIHZhbGlkYXRlV2l6YXJkID0gbmV3IFZhbGlkYXRpb25XaXphcmQoREVGQVVMVF9MT0dfRklMRU5BTUUpOwotICAgICAgICBMaXN0IHdzZGxsb2NzID0gbmV3IFZlY3RvcigpOwotCi0gICAgICAgCWZvciAoaW50IGk9MDsgaTxyZXF1ZXN0UmVzcG9uc2VzLmxlbmd0aDsgaSsrKQotICAgICAgCXsKLSAgICAgIAkgIFJlcXVlc3QgcmVxcmVzcCA9IHJlcXVlc3RSZXNwb25zZXNbaV07Ci0gICAgICAJICBTdHJpbmcgcmVtb3RlaG9zdCA9IHJlcXJlc3AuZ2V0UmVtb3RlSG9zdCgpOwotICAgICAgCSAgaW50IHJlbW90ZXBvcnQgPSByZXFyZXNwLmdldFJlbW90ZVBvcnQoKTsKLSAgICAgIAkgIFN0cmluZyByZW1vdGVsYWJlbCA9IHJlcXJlc3AuZ2V0TmFtZSgpOwotICAgICAgCSAgU3RyaW5nIGxvY2F0aW9uID0gSFRUUCArIHJlbW90ZWhvc3QgKyAiOiIgKyByZW1vdGVwb3J0ICsgcmVtb3RlbGFiZWwgKyBXU0RMOwotICAgICAgCSAgaWYoIXdzZGxsb2NzLmNvbnRhaW5zKGxvY2F0aW9uKSkKLSAgICAgIAkgIHsKLSAgICAgIAkgICAgd3NkbGxvY3MuYWRkKGxvY2F0aW9uKTsKLSAgICAgIAkgIH0KLSAgICAgIAl9Ci0gICAgICAKLSAgICAgICAgdmFsaWRhdGVXaXphcmQuc2V0V1NETExvY2F0aW9ucygoU3RyaW5nW10pd3NkbGxvY3MudG9BcnJheShuZXcgU3RyaW5nW3dzZGxsb2NzLnNpemUoKV0pKTsKLSAgICAgICAgV2l6YXJkRGlhbG9nIHdpemFyZERpYWxvZyA9IG5ldyBXaXphcmREaWFsb2coc2hlbGwsIHZhbGlkYXRlV2l6YXJkKTsKLSAgICAgICAgd2l6YXJkRGlhbG9nLmNyZWF0ZSgpOwotCi0gICAgICAgIGludCByZXN1bHQgPSB3aXphcmREaWFsb2cub3BlbigpOwotCi0gICAgICAgIGlmICh2YWxpZGF0ZVdpemFyZC5pc1ZhbGlkKCkgJiYgKHJlc3VsdCAhPSBvcmcuZWNsaXBzZS5qZmFjZS53aW5kb3cuV2luZG93LkNBTkNFTCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBJZiB0aGUgY29udGFpbmVyIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBpdCBub3cKLSAgICAgICAgICBjaGVja0FuZENyZWF0ZUNvbnRhaW5lcih2YWxpZGF0ZVdpemFyZC5nZXRDb250YWluZXJGdWxsUGF0aCgpKTsKLQotICAgICAgICAgIElGaWxlIGZpbGUgPSB2YWxpZGF0ZVdpemFyZC5nZXRGaWxlKCk7Ci0gICAgICAgICAgTG9nQnVpbGRlciBidWlsZGVyID0gbmV3IExvZ0J1aWxkZXIoZmlsZSk7Ci0gICAgICAgICAgTG9nIGxvZyA9IGJ1aWxkZXIuYnVpbGRMb2coZ2V0UmVxdWVzdEhhbmRsZXJzKHJlcXVlc3RSZXNwb25zZXMpKTsKLQotICAgICAgICAgIGJ1aWxkZXIud3JpdGVMb2cobG9nKTsKLSAgICAgICAgICBmaWxlLnJlZnJlc2hMb2NhbCgxLCBwcm9ncmVzc01vbml0b3IpOwotICAgICAgICAKLSAgICAgICAgICBXU0lWYWxpZGF0b3IgbWVzc2FnZVZhbGlkYXRvciA9IG5ldyBXU0lWYWxpZGF0b3IoKTsKLSAgICAgICAgICBpZih2YWxpZGF0ZVdpemFyZC5pbmNsdWRlV1NETEZpbGUoKSkKLSAgICAgICAgICB7CQotICAgICAgICAJU3RyaW5nIHdzZGxmaWxlID0gdmFsaWRhdGVXaXphcmQuZ2V0V1NETEZpbGUoKTsKLSAgICAgICAgCVN0cmluZyBuYW1lID0gdmFsaWRhdGVXaXphcmQuZ2V0RWxlbWVudE5hbWUoKTsKLSAgICAgICAgCVN0cmluZyBuYW1lc3BhY2UgPSB2YWxpZGF0ZVdpemFyZC5nZXROYW1lc3BhY2UoKTsKLSAgICAgICAgCVN0cmluZyBwYXJlbnRuYW1lID0gdmFsaWRhdGVXaXphcmQuZ2V0UGFyZW50TmFtZSgpOwotICAgICAgICAJU3RyaW5nIHR5cGUgPSB2YWxpZGF0ZVdpemFyZC5nZXRUeXBlKCk7Ci0gICAgICAgIAltZXNzYWdlVmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIHdzZGxmaWxlLCBuYW1lLCBuYW1lc3BhY2UsIHBhcmVudG5hbWUsIHR5cGUpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewkKLSAgICAgICAgCW1lc3NhZ2VWYWxpZGF0b3IudmFsaWRhdGUoZmlsZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIG5vIGF2YWlsYWJsZSBtZXNzYWdlcyB0byB2YWxpZGF0ZQotICAgIAkgIFN0cmluZyB0aXRsZSA9IE1lc3NhZ2VzLkFDVElPTl9XU0lfVkFMSURBVE9SOwotICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gTWVzc2FnZXMuSU5GT19OT19NRVNTQUdFU19UT19WQUxJREFURTsKLSAgICAJTWVzc2FnZURpYWxvZy5vcGVuSW5mb3JtYXRpb24oc2hlbGwsIHRpdGxlLCBtZXNzYWdlKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBMaXN0IGdldFJlcXVlc3RIYW5kbGVycyhSZXF1ZXN0W10gcmVxdWVzdFJlc3BvbnNlcykgCi0gIHsKLQlMaXN0IHJlcXVlc3RIYW5kbGVycyA9IG5ldyBBcnJheUxpc3QoKTsKLQlpbnQgc2l6ZSA9IHJlcXVlc3RSZXNwb25zZXMubGVuZ3RoOwotCWZvciAoaW50IGkgPSAwOyBpPHNpemU7IGkrKykKLQl7Ci0JICBSZXF1ZXN0IHJlcXVlc3QgPSByZXF1ZXN0UmVzcG9uc2VzW2ldOwotCSAgUmVxdWVzdEhhbmRsZXIgaGFuZGxlciA9IG5ldyBSZXF1ZXN0SGFuZGxlckltcGwocmVxdWVzdCk7Ci0JICByZXF1ZXN0SGFuZGxlcnMuYWRkKGhhbmRsZXIpOwotCX0KLQlyZXR1cm4gcmVxdWVzdEhhbmRsZXJzOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UudWkuSUFjdGlvbkRlbGVnYXRlI3NlbGVjdGlvbkNoYW5nZWQob3JnLmVjbGlwc2UuamZhY2UuYWN0aW9uLklBY3Rpb24sIG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoSUFjdGlvbiBhY3Rpb24sIElTZWxlY3Rpb24gc2VsZWN0aW9uKQotICB7Ci0gICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb247Ci0gIH0KLSAKLSAgLyoqCi0gICAqIElmIHRoZSBjb250YWluZXIgZG9lc24ndCBleGlzdCBmb3IgdGhlIHNlbGVjdGVkIElGaWxlLCBjcmVhdGUgaXQgbm93LgotICAgKiAKLSAgICogQHBhcmFtIGNvbnRhaW5lclBhdGggVGhlIGNvbnRhaW5lciBmb3IgdGhlIHNlbGVjdGVkIElGaWxlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyB2b2lkIGNoZWNrQW5kQ3JlYXRlQ29udGFpbmVyKElQYXRoIGNvbnRhaW5lclBhdGgpCi0gIHsKLSAgICBJUmVzb3VyY2UgcmVzb3VyY2UgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmZpbmRNZW1iZXIoY29udGFpbmVyUGF0aCk7Ci0gICAgCi0gICAgLy8gSWYgdGhlIGNvbnRhaW5lciBkb2Vzbid0IGV4aXN0IGluIHRoZSB3b3Jrc3BhY2UsIGNyZWF0ZSBpdC4KLSAgICBpZiAocmVzb3VyY2UgPT0gbnVsbCkgCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIENvbnRhaW5lckdlbmVyYXRvciBnZW5lcmF0b3IgPSBuZXcgQ29udGFpbmVyR2VuZXJhdG9yKGNvbnRhaW5lclBhdGgpOwotICAgICAgICBnZW5lcmF0b3IuZ2VuZXJhdGVDb250YWluZXIobnVsbCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgfQotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvaWNvbnMvd3NpX2xvZ2ZpbGVfd2l6LnBuZyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9hY3Rpb25zL2ljb25zL3dzaV9sb2dmaWxlX3dpei5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkODVmODYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL2FjdGlvbnMvaWNvbnMvd3NpX2xvZ2ZpbGVfd2l6LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9hY3Rpb25zL3dzaXZhbGlkYXRpb24ucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC9hY3Rpb25zL3dzaXZhbGlkYXRpb24ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRmNzQ0YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvYWN0aW9ucy93c2l2YWxpZGF0aW9uLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjIENvbnN0YW50cyBmb3Igc3RyaW5ncyAgCi0KLSMKLSMgRGlydHkgRmlsZSBEaWFsb2cgUmVsYXRlZCBNZXNzYWdlcwotIwotX1VJX1NBVkVfRElSVFlfRklMRV9NRVNTQUdFICAgICAgICAgPSBBbiBvcGVuIGVkaXRvciBjb250YWlucyBjaGFuZ2VzIHRvIHRoaXMgZmlsZSB0aGF0IGhhdmUgbm90IGJlZW4gc2F2ZWQuIERvIHlvdSB3YW50IHRvIHNhdmUgdGhlIGZpbGUgYmVmb3JlIHJ1bm5pbmcgdmFsaWRhdGlvbj8gKElmIHlvdSBkbyBub3Qgc2F2ZSB0aGUgZmlsZSB0aGUgcHJldmlvdXNseSBzYXZlZCB2ZXJzaW9uIHdpbGwgYmUgdmFsaWRhdGVkLikKLV9VSV9TQVZFX0RJUlRZX0ZJTEVfVElUTEUgICAgICAgICAgID0gU2F2ZSBmaWxlPwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL3dpemFyZHMvVmFsaWRhdGlvbldpemFyZC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL3dpemFyZHMvVmFsaWRhdGlvbldpemFyZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjM4YjlhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS51aS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS91aS9pbnRlcm5hbC93aXphcmRzL1ZhbGlkYXRpb25XaXphcmQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsLndpemFyZHM7Ci0KLWltcG9ydCBqYXZheC53c2RsLmZhY3RvcnkuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFJlYWRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpemFyZC5JV2l6YXJkUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuV2l6YXJkOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5SZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsLldTSVVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklWaWV3UmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkudmlld3MubmF2aWdhdG9yLlJlc291cmNlTmF2aWdhdG9yOwotCi0vKioKLSAqIFRoaXMgd2l6YXJkIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgCi0gKiBXUy1JIE1lc3NhZ2UgTG9nIGZpbGUgZm9yIHB1cnBvc2VzIG9mIHZhbGlkYXRpb24uCi0gKiAKLSAqIEBhdXRob3IgRGF2aWQgTGF1em9uLCBJQk0KLSAqIEBhdXRob3IgTGF3cmVuY2UgTWFuZGVsLCBJQk0KLSAqLwotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGlvbldpemFyZCBleHRlbmRzIFdpemFyZAotewotICAvKioKLSAgICogV2l6YXJkIHBhZ2UgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIAotICAgKiBXUy1JIE1lc3NhZ2UgTG9nIGZpbGUgZm9yIHB1cnBvc2VzIG9mIHZhbGlkYXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgVmFsaWRhdGlvbldpemFyZExvZ1BhZ2UgbG9nUGFnZTsKLQotICAvKioKLSAgICogV2l6YXJkIHBhZ2UgdG8gb3B0aW9uYWxseSBzcGVjaWZ5IHRoZSBsb2NhdGlvbgotICAgKiBvZiB0aGUgV1NETCBkb2N1bWVudCBmb3IgdGhlIFdlYiBzZXJ2aWNlLgotICAgKi8KLSAgcHJvdGVjdGVkIFZhbGlkYXRpb25XaXphcmRXU0RMUGFnZSB3c2RsUGFnZTsKLQotICAvKioKLSAgICogV2l6YXJkIHBhZ2UgdG8gc3BlY2lmeSB0aGUgbmFtZSwgdHlwZSBhbmQgbmFtZXNwYWNlCi0gICAqIGZvciB0aGUgV1NETCBlbGVtZW50IHRvIGFuYWx5emUuCi0gICAqLwotICBwcm90ZWN0ZWQgVmFsaWRhdGlvbldpemFyZFdTRExDb250ZW50UGFnZSB3c2RsQ29udGVudFBhZ2U7Ci0KLSAgLyoqCi0gICAqIERlZmF1bHQgV1MtSSBNZXNzYWdlIGZpbGVuYW1lIHBhc3NlZCBpbiB0aGUgQ29uc3RydWN0b3IuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGZpbGVuYW1lOwotCi0gIC8qKgotICAgKiBUaGUgc2VsZWN0ZWQgV1MtSSBNZXNzYWdlIExvZyBmaWxlLgotICAgKi8KLSAgcHJvdGVjdGVkIElGaWxlIGZpbGU7Ci0KLSAgLyoqCi0gICAqIFRoZSBjb250YWluZXIgaG9sZGluZyB0aGUgc2VsZWN0ZWQgV1MtSSBNZXNzYWdlIExvZyBmaWxlLgotICAgKi8KLSAgcHJvdGVjdGVkIElQYXRoIGNvbnRhaW5lckZ1bGxQYXRoOwotCi0gIC8qKgotICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBzZWxlY3RlZCBmaWxlIGlzIHZhbGlkLgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNWYWxpZDsKLQotICAvKioKLSAgICogVGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQgdG8gdmFsaWRhdGUuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGVsZW1lbnRuYW1lOwotCi0gIC8qKgotICAgKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSBlbGVtZW50IHRvIHZhbGlkYXRlLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBuYW1lc3BhY2U7Ci0KLSAgLyoqCi0gICAqIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgb2YgdGhlIGVsZW1lbnQgdG8gdmFsaWRhdGUuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHBhcmVudG5hbWU7Ci0KLSAgLyoqCi0gICAqIFRoZSB0eXBlIG9mIHRoZSBlbGVtZW50IHRvIHZhbGlkYXRlLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyB0eXBlOwotCi0gIC8qKgotICAgKiBUaGUgV1NETCBmaWxlIHRvIHVzZSBmb3IgdmFsaWRhdGlvbjsKLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgd3NkbGZpbGU7Ci0KLSAgLyoqCi0gICAqIFRydWUgaWYgYSBXU0RMIGZpbGUgaXMgaW5jbHVkZWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIGluY2x1ZGV3c2RsZmlsZTsKLQotICAKLSAgLyoqCi0gICAqIFRoaXMgbGlzdCBvZiBXU0RMIGxvY2F0aW9ucyB0aGUgdXNlciBjYW4gY2hvb3NlIGZyb20uCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nW10gd3NkbGxvY2F0aW9ucyA9IG51bGw7Ci0gIAotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIEBwYXJhbSBmaWxlbmFtZSBEZWZhdWx0IG1lc3NhZ2UgbG9nIGZpbGUgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0aW9uV2l6YXJkKFN0cmluZyBmaWxlbmFtZSkKLSAgewotICAgIHRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZTsKLSAgICB0aGlzLnNldFdpbmRvd1RpdGxlKE1lc3NhZ2VzLlZBTElEQVRJT05fV0laQVJEX1RJVExFKTsKLSAgICBzZXREZWZhdWx0UGFnZUltYWdlRGVzY3JpcHRvcigKLSAgICAgIEltYWdlRGVzY3JpcHRvci5jcmVhdGVGcm9tRmlsZShXU0lVSVBsdWdpbi5jbGFzcywgUmVzb3VyY2UuVkFMSURBVEVfV1NJX0xPR0ZJTEVfV0laKSk7Ci0gICAgc2V0TmVlZHNQcm9ncmVzc01vbml0b3IodHJ1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuSVdpemFyZCNhZGRQYWdlcygpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRQYWdlcygpCi0gIHsKLSAgICBsb2dQYWdlID0gbmV3IFZhbGlkYXRpb25XaXphcmRMb2dQYWdlKChJU3RydWN0dXJlZFNlbGVjdGlvbikgZ2V0UmVzb3VyY2VOYXZpZ2F0b3JTZWxlY3Rpb24oKSwgZmlsZW5hbWUpOwotICAgIHdzZGxQYWdlID0gbmV3IFZhbGlkYXRpb25XaXphcmRXU0RMUGFnZSgoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIGdldFJlc291cmNlTmF2aWdhdG9yU2VsZWN0aW9uKCkpOwotICAgIHdzZGxDb250ZW50UGFnZSA9IG5ldyBWYWxpZGF0aW9uV2l6YXJkV1NETENvbnRlbnRQYWdlKChJU3RydWN0dXJlZFNlbGVjdGlvbikgZ2V0UmVzb3VyY2VOYXZpZ2F0b3JTZWxlY3Rpb24oKSk7Ci0gICAgYWRkUGFnZShsb2dQYWdlKTsKLSAgICBhZGRQYWdlKHdzZGxQYWdlKTsKLSAgICBhZGRQYWdlKHdzZGxDb250ZW50UGFnZSk7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBAcmV0dXJuIFRydWUgaWYgYSBXU0RMIGZpbGUgaXMgaW5jbHVkZWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGluY2x1ZGVXU0RMRmlsZSgpCi0gIHsKLSAgICBpZiAoIWlzVmFsaWQpCi0gICAgewotICAgICAgcmV0dXJuIHdzZGxQYWdlLmluY2x1ZGVXU0RMRmlsZSgpOwotICAgIH0KLSAgICByZXR1cm4gaW5jbHVkZXdzZGxmaWxlOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgZWxlbWVudCBuYW1lIHRvIHZhbGlkYXRlLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgZWxlbWVudCBuYW1lIHRvIHZhbGlkYXRlLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRFbGVtZW50TmFtZSgpCi0gIHsKLSAgICByZXR1cm4gZWxlbWVudG5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBuYW1lc3BhY2UgZm9yIHRoZSBlbGVtZW50LgotICAgKiAKLSAgICogQHJldHVybiBUaGUgbmFtZXNwYWNlIGZvciB0aGUgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZXNwYWNlKCkKLSAgewotICAgIHJldHVybiBuYW1lc3BhY2U7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgb2YgdGhlIGVsZW1lbnQuCi0gICAqIAotICAgKiBAcmV0dXJuIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgb2YgdGhlIGVsZW1lbnQuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFBhcmVudE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHBhcmVudG5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50LgotICAgKiAKLSAgICogQHJldHVybiBUaGUgdHlwZSBvZiB0aGUgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gdHlwZTsKLSAgfQotCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V1NETEZpbGUoKQotICB7Ci0gICAgaWYgKCFpc1ZhbGlkKQotICAgIHsKLSAgICAgIHJldHVybiB3c2RsUGFnZS5nZXRXU0RMRmlsZSgpOwotICAgIH0KLSAgICByZXR1cm4gd3NkbGZpbGU7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuSVdpemFyZCNnZXROZXh0UGFnZShvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuSVdpemFyZFBhZ2UpCi0gICAqLwotICBwdWJsaWMgSVdpemFyZFBhZ2UgZ2V0TmV4dFBhZ2UoSVdpemFyZFBhZ2UgY3VycmVudFBhZ2UpCi0gIHsKLSAgICBpZiAoY3VycmVudFBhZ2UgPT0gd3NkbFBhZ2UpCi0gICAgewotICAgICAgaWYgKCF3c2RsUGFnZS5pbmNsdWRlV1NETEZpbGUoKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgV1NETEZhY3RvcnkgZmFjdG9yeSA9IFdTRExGYWN0b3J5Lm5ld0luc3RhbmNlKCk7Ci0gICAgICAgICAgV1NETFJlYWRlciByZWFkZXIgPSBmYWN0b3J5Lm5ld1dTRExSZWFkZXIoKTsKLSAgICAgICAgICByZWFkZXIucmVhZFdTREwoZ2V0V1NETEZpbGUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIFdTREwgZmlsZSB0aGVyZSBpcyBubyBuZXh0IHBhZ2UuCi0gICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHN1cGVyLmdldE5leHRQYWdlKGN1cnJlbnRQYWdlKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNlbGVjdGVkIGZpbGUgaXMgYSB2YWxpZCBXUy1JIE1lc3NhZ2UgTG9nIGZpbGVuYW1lLgotICAgKiAKLSAgICogQHJldHVybiBUcnVlIGlmIHRoZSBzZWxlY3RlZCBmaWxlIGlzIGEgdmFsaWQgV1MtSSBNZXNzYWdlIExvZyBmaWxlbmFtZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzVmFsaWQoKQotICB7Ci0gICAgcmV0dXJuIGlzVmFsaWQ7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuSVdpemFyZCNwZXJmb3JtRmluaXNoKCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHBlcmZvcm1GaW5pc2goKQotICB7Ci0gICAgZmlsZSA9IGxvZ1BhZ2UuZ2V0RmlsZSgpOwotICAgIGNvbnRhaW5lckZ1bGxQYXRoID0gbG9nUGFnZS5nZXRDb250YWluZXJGdWxsUGF0aCgpOwotICAgIGluY2x1ZGV3c2RsZmlsZSA9IHdzZGxQYWdlLmluY2x1ZGVXU0RMRmlsZSgpOwotICAgIHdzZGxmaWxlID0gd3NkbFBhZ2UuZ2V0V1NETEZpbGUoKTsKLSAgICBlbGVtZW50bmFtZSA9IHdzZGxDb250ZW50UGFnZS5nZXRFbGVtZW50TmFtZSgpOwotICAgIG5hbWVzcGFjZSA9IHdzZGxDb250ZW50UGFnZS5nZXROYW1lc3BhY2UoKTsKLSAgICBwYXJlbnRuYW1lID0gd3NkbENvbnRlbnRQYWdlLmdldFBhcmVudE5hbWUoKTsKLSAgICB0eXBlID0gd3NkbENvbnRlbnRQYWdlLmdldFR5cGUoKTsKLSAgICBpc1ZhbGlkID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBmaWxlIHNlbGVjdGVkIGJ5IHRoZSB1c2VyIGluIHRoZSBjaG9vc2UgcGFnZS4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIGZpbGUgc2VsZWN0ZWRieSB0aGUgdXNlciBpbiB0aGUgY2hvb3NlIHBhZ2UuCi0gICAqLwotICBwdWJsaWMgSUZpbGUgZ2V0RmlsZSgpCi0gIHsKLSAgICByZXR1cm4gZmlsZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBJUGF0aCBjb250YWluaW5nIHRoZSBzZWxlY3RlZCBJRmlsZS4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIElQYXRoIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIElGaWxlLgotICAgKi8KLSAgcHVibGljIElQYXRoIGdldENvbnRhaW5lckZ1bGxQYXRoKCkKLSAgewotICAgIHJldHVybiBjb250YWluZXJGdWxsUGF0aDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzZWxlY3Rpb24gaW4gdGhlIFJlc291cmNlIE5hdmlnYXRvciB2aWV3LgotICAgKiAKLSAgICogQHJldHVybiB0aGUgc2VsZWN0aW9uIGluIHRoZSBSZXNvdXJjZSBOYXZpZ2F0b3Igdmlldy4KLSAgICovCi0gIHB1YmxpYyBJU2VsZWN0aW9uIGdldFJlc291cmNlTmF2aWdhdG9yU2VsZWN0aW9uKCkKLSAgewotICAgIElWaWV3UmVmZXJlbmNlIHZpZXdQYXJ0c1tdID0KLSAgICAgIFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93KCkuZ2V0QWN0aXZlUGFnZSgpLmdldFZpZXdSZWZlcmVuY2VzKCk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHZpZXdQYXJ0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAodmlld1BhcnRzW2ldIGluc3RhbmNlb2YgUmVzb3VyY2VOYXZpZ2F0b3IpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiAoKFJlc291cmNlTmF2aWdhdG9yKSB2aWV3UGFydHNbaV0pLmdldFZpZXdTaXRlKCkuZ2V0U2VsZWN0aW9uUHJvdmlkZXIoKS5nZXRTZWxlY3Rpb24oKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIFN0cnVjdHVyZWRTZWxlY3Rpb24uRU1QVFk7Ci0gIH0KLQotICAvKioKLSAgICogU2V0IHRoZSBsaXN0IG9mIFdTREwgbG9jYXRpb25zIHRvIGxldCB0aGUgdXNlciBjaG9vc2UgZnJvbS4KLSAgICogCi0gICAqIEBwYXJhbSB3c2RsbG9jYXRpb25zIEEgbGlzdCBvZiBXU0RMIGRvY3VtZW50IGxvY2F0aW9ucy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdTRExMb2NhdGlvbnMoU3RyaW5nW10gd3NkbGxvY2F0aW9ucykgCi0gIHsKLQl0aGlzLndzZGxsb2NhdGlvbnMgPSB3c2RsbG9jYXRpb25zOwotCQotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBsaXN0IG9mIFdTREwgbG9jYXRpb25zIHRoZSB1c2VyIGNhbiBjaG9vc2UgZnJvbS4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGxpc3Qgb2YgV1NETCBsb2NhdGlvbnMuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nW10gZ2V0V1NETExvY2F0aW9ucygpCi0gIHsKLSAgCXJldHVybiB3c2RsbG9jYXRpb25zOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvd2l6YXJkcy9WYWxpZGF0aW9uV2l6YXJkTG9nUGFnZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL3dpemFyZHMvVmFsaWRhdGlvbldpemFyZExvZ1BhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY4OGNhYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvd2l6YXJkcy9WYWxpZGF0aW9uV2l6YXJkTG9nUGFnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwud2l6YXJkczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuZGlhbG9ncy5XaXphcmROZXdGaWxlQ3JlYXRpb25QYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5NZXNzYWdlczsKLQotLyoqCi0gKiBXaXphcmQgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgCi0gKiBXUy1JIE1lc3NhZ2UgTG9nIGZpbGUgZm9yIHB1cnBvc2VzIG9mIHZhbGlkYXRpb24uCi0gKiAKLSAqIEBhdXRob3IgRGF2aWQgTGF1em9uLCBJQk0KLSAqLwotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGlvbldpemFyZExvZ1BhZ2UgZXh0ZW5kcyBXaXphcmROZXdGaWxlQ3JlYXRpb25QYWdlCi17Ci0gIC8qKgotICAgKiBSZWNvbW1lbmRlZCBleHRlbnNpb24gZm9yIGEgV1MtSSBNZXNzYWdlIExvZyBmaWxlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NJX0xPR19FWFRFTlNJT04gPSAid3NpbXNnIjsKLSAKLSAgLyoqCi0gICAqIERlZmF1bHQgV1MtSSBNZXNzYWdlIGZpbGVuYW1lIHBhc3NlZCBpbiB0aGUgQ29uc3RydWN0b3IuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGZpbGVuYW1lOwotICAKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiAKLSAgICogQHBhcmFtIHNlbGVjdGlvbjogc2VsZWN0aW9uIGluIHRoZSBSZXNvdXJjZSBOYXZpZ2F0b3Igdmlldy4KLSAgICogQHBhcmFtIGZpbGVuYW1lOiBkZWZhdWx0IG1lc3NhZ2UgbG9nIGZpbGUgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0aW9uV2l6YXJkTG9nUGFnZShJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24sIFN0cmluZyBmaWxlbmFtZSkKLSAgewotICAgIHN1cGVyKCJWYWxpZGF0aW9uV2l6YXJkTG9nUGFnZSIsIHNlbGVjdGlvbik7Ci0gICAgdGhpcy5maWxlbmFtZSA9IGZpbGVuYW1lOwotICAgIHRoaXMuc2V0VGl0bGUoTWVzc2FnZXMuTE9HX1BBR0VfU0VMRUNUX0xPR19GSUxFTkFNRV9IRUFESU5HKTsKLSAgICB0aGlzLnNldERlc2NyaXB0aW9uKE1lc3NhZ2VzLkxPR19QQUdFX1NFTEVDVF9MT0dfRklMRU5BTUVfRVhQTCk7Ci0gIH0KLQotCi0gIC8qKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLklEaWFsb2dQYWdlI2NyZWF0ZUNvbnRyb2wob3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlKQotICAgKi8KLSAgcHVibGljIHZvaWQgY3JlYXRlQ29udHJvbChDb21wb3NpdGUgcGFyZW50KSAKLSAgewotICAgIHN1cGVyLmNyZWF0ZUNvbnRyb2wocGFyZW50KTsKLSAgICBzdXBlci5zZXRGaWxlTmFtZShmaWxlbmFtZSk7Ci0gICAgc2V0UGFnZUNvbXBsZXRlKHZhbGlkYXRlUGFnZSgpKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHNlbGVjdGVkIGZpbGUuCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSBzZWxlY3RlZCBJRmlsZS4gIAotICAgKi8KLSAgcHVibGljIElGaWxlIGdldEZpbGUoKQotICB7Ci0gICAgU3RyaW5nIGZpbGVOYW1lID0gZ2V0RmlsZU5hbWUoKTsKLSAgICBTdHJpbmcgZmlsZUV4dGVuc2lvbiA9IChuZXcgUGF0aChmaWxlTmFtZSkpLmdldEZpbGVFeHRlbnNpb24oKTsKLSAgICAKLSAgICBpZiAoZmlsZUV4dGVuc2lvbiA9PSBudWxsKQotICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoIi4iICsgV1NJX0xPR19FWFRFTlNJT04pOwotICAgICAgCi0gICAgcmV0dXJuIFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0RmlsZShnZXRDb250YWluZXJGdWxsUGF0aCgpLmFwcGVuZChmaWxlTmFtZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdHJ1ZSBpZiBzZWxlY3RlZCBmaWxlIGlzIGEgdmFsaWQgV1MtSSBNZXNzYWdlIExvZyBmaWxlbmFtZS4KLSAgICogCi0gICAqIFNpbmNlIHRoZSBXaXphcmROZXdGaWxlQ3JlYXRpb25QYWdlIGRvZXMgbm90IHByb3ZpZGUgYW4gaW50ZXJmYWNlIHRvCi0gICAqIGFsbG93IHRoZSBmaWxlIHNwZWNpZmllZCB0byBhbHJlYWR5IGV4aXN0IChpdCBnaXZlcyBhbiBlcnJvciB0aGF0IHRoZQotICAgKiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgYW4gbm8gd2F5IG9mIGFsbG93aW5nIGl0IHRvIHBhc3MpLCBhbmQgd2Ugd2FudAotICAgKiB0byBhbGxvdyB0aGUgZmlsZSB0byBleGlzdCwgc28gdGhhdCB3ZSBjYW4gb3ZlcndyaXRlIGl0LCB3ZSBoYXZlIHRvCi0gICAqIG92ZXJyaWRlIHRoaXMgbWV0aG9kLCBhbmQgZG8gc29tZSBtYWdpYyB0byBhbGxvdyB0aGlzIGNhc2UgdG8gcGFzcy4KLSAgICoKLSAgICogQHJldHVybiB0cnVlIGlmIHNlbGVjdGVkIGZpbGUgaXMgYSB2YWxpZCBXUy1JIE1lc3NhZ2UgTG9nIGZpbGVuYW1lLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLmRpYWxvZ3MuV2l6YXJkTmV3RmlsZUNyZWF0aW9uUGFnZSN2YWxpZGF0ZVBhZ2UoKQotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gdmFsaWRhdGVQYWdlKCkgCi0gIHsKLSAgICBTdHJpbmcgZmlsZUV4dGVuc2lvbiA9IChuZXcgUGF0aChnZXRGaWxlTmFtZSgpKSkuZ2V0RmlsZUV4dGVuc2lvbigpOwotICAgIGlmIChmaWxlRXh0ZW5zaW9uICE9IG51bGwpIAotICAgIHsKLSAgICAgIGlmIChmaWxlRXh0ZW5zaW9uLmNvbXBhcmVUbyhXU0lfTE9HX0VYVEVOU0lPTikgIT0gMCkKLSAgICAgIHsgICAgICAgIAotICAgICAgICBzZXRFcnJvck1lc3NhZ2UoTWVzc2FnZXMuRVJST1JfSU5WQUxJRF9MT0dfRklMRV9FWFRFTlNJT04pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIEVzc2VudGlhbGx5LCB3ZSB0YWtlIHRoZSBjb250YWluZXIgYW5kIGNvbmNhdCB0aGUgZmlsZSB0byBpdCwgYW5kCi0gICAgLy8gY2hlY2sgaWYgaXRzIGluIHRoZSB3b3Jrc3BhY2UsIGlmIGl0IGlzLCB0aGVuIGl0IGV4aXN0cyBhbmQgd2UgY2FuIAotICAgIC8vIHByb2NlZWQuIE90aGVyd2lzZSwgY29udGludWUgd2l0aCB0aGUgZGVmYXVsdCB2YWxpZGF0aW5nLgotICAgIGlmICggKGdldENvbnRhaW5lckZ1bGxQYXRoKCkgIT0gbnVsbCkgJiYgKGdldENvbnRhaW5lckZ1bGxQYXRoKCkuaXNFbXB0eSgpID09IGZhbHNlKQotICAgICAgICAgICAmJiAoZ2V0RmlsZU5hbWUoKS5jb21wYXJlVG8oIiIpICE9IDApKQotICAgIHsKLSAgICAgIFBhdGggZnVsbFBhdGg7Ci0gICAgICAgICAgICAKLSAgICAgIGlmIChmaWxlRXh0ZW5zaW9uICE9IG51bGwpCi0gICAgICAgIGZ1bGxQYXRoID0gbmV3IFBhdGgoZ2V0Q29udGFpbmVyRnVsbFBhdGgoKS50b1N0cmluZygpICsgJy8nICsgZ2V0RmlsZU5hbWUoKSk7Ci0gICAgICBlbHNlCi0gICAgICAgIGZ1bGxQYXRoID0gbmV3IFBhdGgoZ2V0Q29udGFpbmVyRnVsbFBhdGgoKS50b1N0cmluZygpICsgJy8nICsgZ2V0RmlsZU5hbWUoKSArICIuIiArIFdTSV9MT0dfRVhURU5TSU9OKTsKLSAgICAgIAotICAgICAgSVJlc291cmNlIHJlc291cmNlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5maW5kTWVtYmVyKGZ1bGxQYXRoKTsKLSAgICAgIAotICAgICAgc2V0RXJyb3JNZXNzYWdlKG51bGwpOwotICAgICAgaWYgKHJlc291cmNlICE9IG51bGwpCi0gICAgICAgIHNldE1lc3NhZ2UoTWVzc2FnZXMuV0FSTklOR19GSUxFX0FMUkVBRFlfRVhJU1RTKTsKLSAgICAgIGVsc2UKLSAgICAgICAgc2V0TWVzc2FnZShudWxsKTsKLQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBzdXBlci52YWxpZGF0ZVBhZ2UoKTsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvd2l6YXJkcy9WYWxpZGF0aW9uV2l6YXJkV1NETENvbnRlbnRQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvd2l6YXJkcy9WYWxpZGF0aW9uV2l6YXJkV1NETENvbnRlbnRQYWdlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYTA1NzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL3dpemFyZHMvVmFsaWRhdGlvbldpemFyZFdTRExDb250ZW50UGFnZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTA4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwud2l6YXJkczsKLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZmFjdG9yeS5XU0RMRmFjdG9yeTsKLWltcG9ydCBqYXZheC53c2RsLnhtbC5XU0RMUmVhZGVyOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpemFyZC5XaXphcmRQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuR3JvdXA7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGFiZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGV4dDsKLQotLyoqCi0gKiBXaXphcmQgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgCi0gKiBXU0RMIGRvY3VtZW50IGZvciB0aGUgV2ViIHNlcnZpY2UuCi0gKiAKLSAqIEBhdXRob3IgRGF2aWQgTGF1em9uLCBJQk0KLSAqIEBhdXRob3IgTGF3cmVuY2UgTWFuZGVsLCBJQk0KLSAqLwotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGlvbldpemFyZFdTRExDb250ZW50UGFnZSBleHRlbmRzIFdpemFyZFBhZ2UgaW1wbGVtZW50cyBTZWxlY3Rpb25MaXN0ZW5lcgotewotICBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb247Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9SVCA9ICJwb3J0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1BFUkFUSU9OID0gIm9wZXJhdGlvbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEJJTkRJTkcgPSAiYmluZGluZyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBPUlRUWVBFID0gInBvcnR0eXBlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVTU0FHRSA9ICJtZXNzYWdlIjsKLSAgLyoqCi0gICAqIEFjY2VzcyB0byB0aGUgaW5jbHVkZVdTREwgZmxhZy4gIAotICAgKi8KLSAgcHJvdGVjdGVkIEJ1dHRvbiB3c2RsUG9ydEJ1dHRvbjsKLSAgcHJvdGVjdGVkIEJ1dHRvbiB3c2RsQmluZGluZ0J1dHRvbjsKLSAgcHJvdGVjdGVkIEJ1dHRvbiB3c2RsUG9ydFR5cGVCdXR0b247Ci0gIHByb3RlY3RlZCBCdXR0b24gd3NkbE9wZXJhdGlvbkJ1dHRvbjsKLSAgcHJvdGVjdGVkIEJ1dHRvbiB3c2RsTWVzc2FnZUJ1dHRvbjsKLQotICBwcm90ZWN0ZWQgQ29tYm8gbmFtZUNvbWJvOwotICBwcm90ZWN0ZWQgVGV4dCBuYW1lc3BhY2VUZXh0OwotICAvL3Byb3RlY3RlZCBDb21ibyBwYXJlbnRDb21ibzsKLSAgLy9wcm90ZWN0ZWQgVGV4dCBuYW1lVGV4dDsKLSAgcHJvdGVjdGVkIFRleHQgcGFyZW50bmFtZVRleHQ7Ci0KLSAgcHJvdGVjdGVkIExpc3QgcG9ydHMgPSBudWxsOwotICBwcm90ZWN0ZWQgTGlzdCBvcGVyYXRpb25zID0gbnVsbDsKLSAgcHJvdGVjdGVkIExpc3QgYmluZGluZ3MgPSBudWxsOwotICBwcm90ZWN0ZWQgTGlzdCBwb3J0dHlwZXMgPSBudWxsOwotICBwcm90ZWN0ZWQgTGlzdCBtZXNzYWdlcyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiAKLSAgICogQHBhcmFtIHNlbGVjdGlvbjogc2VsZWN0aW9uIGluIHRoZSBSZXNvdXJjZSBOYXZpZ2F0b3Igdmlldy4KLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0aW9uV2l6YXJkV1NETENvbnRlbnRQYWdlKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikKLSAgewotICAgIHN1cGVyKCJWYWxpZGF0aW9uV2l6YXJkV1NETENvbnRlbnRQYWdlIik7Ci0gICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb247Ci0gICAgdGhpcy5zZXRUaXRsZShNZXNzYWdlcy5XU0RMX0NPTlRFTlRfUEFHRV9TRUxFQ1RfSEVBRElORyk7Ci0gICAgdGhpcy5zZXREZXNjcmlwdGlvbihNZXNzYWdlcy5XU0RMX0NPTlRFTlRfUEFHRV9TRUxFQ1RfRVhQTCk7Ci0gIH0KLQotICAvKioKLSAgICogQWx3YXlzIHJldHVybnMgdHJ1ZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzUGFnZUNvbXBsZXRlKCkKLSAgewotICAgIGlmICgoKFZhbGlkYXRpb25XaXphcmQpIGdldFdpemFyZCgpKS5pbmNsdWRlV1NETEZpbGUoKSkKLSAgICB7Ci0gICAgICBpbnQgc2VsZWN0aW9uID0gbmFtZUNvbWJvLmdldFNlbGVjdGlvbkluZGV4KCk7Ci0gICAgICBpZiAoc2VsZWN0aW9uICE9IC0xICYmICFuYW1lQ29tYm8uZ2V0SXRlbShzZWxlY3Rpb24pLmVxdWFscygiIikpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qCi0gICAqIENyZWF0ZXMgdGhlIHRvcCBsZXZlbCBjb250cm9sIGZvciB0aGlzIHBhZ2UgdW5kZXIgdGhlIGdpdmVuIAotICAgKiBwYXJlbnQgY29tcG9zaXRlLiBJbXBsZW1lbnRvcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZwotICAgKiB0aGF0IHRoZSBjcmVhdGVkIGNvbnRyb2wgY2FuIGJlIGFjY2Vzc2VkIHZpYSBnZXRDb250cm9sIAotICAgKgotICAgKiBAcGFyYW0gcGFyZW50IC0gdGhlIHBhcmVudCBjb21wb3NpdGUKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNyZWF0ZUNvbnRyb2woQ29tcG9zaXRlIHBhcmVudCkKLSAgewotICAgIENvbXBvc2l0ZSBiYXNlID0gbmV3IENvbXBvc2l0ZShwYXJlbnQsIFNXVC5OT05FKTsKLSAgICBiYXNlLnNldExheW91dChuZXcgR3JpZExheW91dCgpKTsKLSAgICBHcmlkRGF0YSBkYXRhOwotCi0gICAgLy8gY3JlYXRlIGEgZ3JvdXAKLSAgICBHcm91cCB3c2RsRWxlbWVudEdyb3VwID0gbmV3IEdyb3VwKGJhc2UsIFNXVC5TSEFET1dfRVRDSEVEX0lOKTsKLSAgICB3c2RsRWxlbWVudEdyb3VwLnNldFRleHQoTWVzc2FnZXMuV1NETF9DT05URU5UX1BBR0VfR1JPVVBfVEVYVF9FTEVNRU5UKTsKLSAgICBkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBkYXRhLmdyYWJFeGNlc3NIb3Jpem9udGFsU3BhY2UgPSB0cnVlOwotICAgIHdzZGxFbGVtZW50R3JvdXAuc2V0TGF5b3V0RGF0YShkYXRhKTsKLSAgICBHcmlkTGF5b3V0IGxheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgbGF5b3V0Lm51bUNvbHVtbnMgPSAxOwotICAgIHdzZGxFbGVtZW50R3JvdXAuc2V0TGF5b3V0KGxheW91dCk7Ci0KLSAgICAvLyBjcmVhdGUgYSBiYXNlIHBhbmVsIHdpdGggMiBjb2x1bW5zCi0gICAgQ29tcG9zaXRlIGJhc2VQYW5lbCA9IG5ldyBDb21wb3NpdGUod3NkbEVsZW1lbnRHcm91cCwgU1dULk5PTkUpOwotICAgIGxheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgbGF5b3V0Lm51bUNvbHVtbnMgPSAyOwotICAgIGxheW91dC5tYWtlQ29sdW1uc0VxdWFsV2lkdGggPSBmYWxzZTsKLSAgICBiYXNlUGFuZWwuc2V0TGF5b3V0KGxheW91dCk7Ci0gICAgZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIGRhdGEuaG9yaXpvbnRhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgZGF0YS52ZXJ0aWNhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgZGF0YS5ncmFiRXhjZXNzSG9yaXpvbnRhbFNwYWNlID0gdHJ1ZTsKLSAgICBiYXNlUGFuZWwuc2V0TGF5b3V0RGF0YShkYXRhKTsKLQotICAgIC8vIGNvbnRlbnQgZm9yIGZpcnN0IGNvbHVtbgotICAgIGNyZWF0ZVdTRExFbGVtZW50VHlwZUNvbnRlbnQoYmFzZVBhbmVsKTsKLQotICAgIC8vIGNvbnRlbnQgZm9yIHNlY29uZCBjb2x1bW4KLSAgICBjcmVhdGVXU0RMRWxlbWVudENvbnRlbnQoYmFzZVBhbmVsKTsKLQotICAgIHNldENvbnRyb2woYmFzZSk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgZ3JvdXAgb2YgcmFkaW8gYnV0dG9ucyBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIFdTREwgZWxlbWVudC4KLSAgICogVGhlIGZpdmUgdHBlcyBhcmU6IHBvcnQsIGJpbmRpbmcsIHBvcnRUeXBlLCBvcGVyYXRpb24gYW5kIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBwYXJlbnQgdGhlIHBhcmVudCBjb250YWluZXIuIAotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlV1NETEVsZW1lbnRUeXBlQ29udGVudChDb21wb3NpdGUgcGFyZW50KQotICB7Ci0gICAgLy8gY3JlYXRlIGEgZ3JvdXAKLSAgICBHcm91cCB3c2RsVHlwZUdyb3VwID0gbmV3IEdyb3VwKHBhcmVudCwgU1dULlNIQURPV19FVENIRURfSU4pOwotICAgIHdzZGxUeXBlR3JvdXAuc2V0VGV4dChNZXNzYWdlcy5XU0RMX0NPTlRFTlRfUEFHRV9HUk9VUF9URVhUX1RZUEUpOwotICAgIEdyaWREYXRhIGRhdGEgPSBuZXcgR3JpZERhdGEoKTsKLSAgICBkYXRhLmhvcml6b250YWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIGRhdGEuZ3JhYkV4Y2Vzc0hvcml6b250YWxTcGFjZSA9IGZhbHNlOwotICAgIHdzZGxUeXBlR3JvdXAuc2V0TGF5b3V0RGF0YShkYXRhKTsKLSAgICBHcmlkTGF5b3V0IGxheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7Ci0gICAgbGF5b3V0Lm51bUNvbHVtbnMgPSAxOwotICAgIHdzZGxUeXBlR3JvdXAuc2V0TGF5b3V0KGxheW91dCk7Ci0KLSAgICB3c2RsUG9ydEJ1dHRvbiA9IG5ldyBCdXR0b24od3NkbFR5cGVHcm91cCwgU1dULlJBRElPKTsKLSAgICB3c2RsUG9ydEJ1dHRvbi5zZXRUZXh0KE1lc3NhZ2VzLldTRExfQ09OVEVOVF9QQUdFX1JBRElPX1BPUlQpOwotICAgIHdzZGxQb3J0QnV0dG9uLnNldERhdGEoIndzZGxQb3J0QnV0dG9uIik7Ci0gICAgd3NkbFBvcnRCdXR0b24uc2V0U2VsZWN0aW9uKHRydWUpOwotICAgIHdzZGxQb3J0QnV0dG9uLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBQb3J0QnV0dG9uU2VsZWN0aW9uTGlzdGVuZXIoKSk7Ci0KLSAgICB3c2RsQmluZGluZ0J1dHRvbiA9IG5ldyBCdXR0b24od3NkbFR5cGVHcm91cCwgU1dULlJBRElPKTsKLSAgICB3c2RsQmluZGluZ0J1dHRvbi5zZXREYXRhKCJ3c2RsQmluZGluZ0J1dHRvbiIpOwotICAgIHdzZGxCaW5kaW5nQnV0dG9uLnNldFRleHQoTWVzc2FnZXMuV1NETF9DT05URU5UX1BBR0VfUkFESU9fQklORElORyk7Ci0gICAgd3NkbEJpbmRpbmdCdXR0b24uc2V0U2VsZWN0aW9uKGZhbHNlKTsKLSAgICB3c2RsQmluZGluZ0J1dHRvbi5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgQmluZGluZ0J1dHRvblNlbGVjdGlvbkxpc3RlbmVyKCkpOwotCi0gICAgd3NkbFBvcnRUeXBlQnV0dG9uID0gbmV3IEJ1dHRvbih3c2RsVHlwZUdyb3VwLCBTV1QuUkFESU8pOwotICAgIHdzZGxQb3J0VHlwZUJ1dHRvbi5zZXREYXRhKCJ3c2RsUG9ydFR5cGVCdXR0b24iKTsKLSAgICB3c2RsUG9ydFR5cGVCdXR0b24uc2V0VGV4dChNZXNzYWdlcy5XU0RMX0NPTlRFTlRfUEFHRV9SQURJT19QT1JUX1RZUEUpOwotICAgIHdzZGxQb3J0VHlwZUJ1dHRvbi5zZXRTZWxlY3Rpb24oZmFsc2UpOwotICAgIHdzZGxQb3J0VHlwZUJ1dHRvbi5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgUG9ydFR5cGVCdXR0b25TZWxlY3Rpb25MaXN0ZW5lcigpKTsKLQotICAgIHdzZGxPcGVyYXRpb25CdXR0b24gPSBuZXcgQnV0dG9uKHdzZGxUeXBlR3JvdXAsIFNXVC5SQURJTyk7Ci0gICAgd3NkbE9wZXJhdGlvbkJ1dHRvbi5zZXREYXRhKCJ3c2RsT3BlcmF0aW9uQnV0dG9uIik7Ci0gICAgd3NkbE9wZXJhdGlvbkJ1dHRvbi5zZXRUZXh0KE1lc3NhZ2VzLldTRExfQ09OVEVOVF9QQUdFX1JBRElPX09QRVJBVElPTik7Ci0gICAgd3NkbE9wZXJhdGlvbkJ1dHRvbi5zZXRTZWxlY3Rpb24oZmFsc2UpOwotICAgIHdzZGxPcGVyYXRpb25CdXR0b24uYWRkU2VsZWN0aW9uTGlzdGVuZXIobmV3IE9wZXJhdGlvbkJ1dHRvblNlbGVjdGlvbkxpc3RlbmVyKCkpOwotCi0gICAgd3NkbE1lc3NhZ2VCdXR0b24gPSBuZXcgQnV0dG9uKHdzZGxUeXBlR3JvdXAsIFNXVC5SQURJTyk7Ci0gICAgd3NkbE1lc3NhZ2VCdXR0b24uc2V0RGF0YSgid3NkbE1lc3NhZ2VCdXR0b24iKTsKLSAgICB3c2RsTWVzc2FnZUJ1dHRvbi5zZXRUZXh0KE1lc3NhZ2VzLldTRExfQ09OVEVOVF9QQUdFX1JBRElPX01FU1NBR0UpOwotICAgIHdzZGxNZXNzYWdlQnV0dG9uLnNldFNlbGVjdGlvbihmYWxzZSk7Ci0gICAgd3NkbE1lc3NhZ2VCdXR0b24uYWRkU2VsZWN0aW9uTGlzdGVuZXIobmV3IE1lc3NhZ2VCdXR0b25TZWxlY3Rpb25MaXN0ZW5lcigpKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBwYW5lbCB0byBjYXB0dXJlIHRoZSBuYW1lLCBuYW1lc3BhY2UgYW5kIHBhcmVudCBvZiBhbgotICAgKiBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBwYXJlbnQgdGhlIHBhcmVudCBjb250YWluZXIuIAotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlV1NETEVsZW1lbnRDb250ZW50KENvbXBvc2l0ZSBwYXJlbnQpCi0gIHsKLSAgICAvLyBjcmVhdGUgYSBncm91cGluZyB3aXRoIDIgY29sdW1ucywgb25lIGZvciBsYWJlbHMgYW5kIHRoZW90aGVyIGZvciBmaWVsZHMKLSAgICBDb21wb3NpdGUgZmllbGRDb2x1bW4gPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOwotICAgIEdyaWRMYXlvdXQgbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICBsYXlvdXQubnVtQ29sdW1ucyA9IDI7Ci0gICAgbGF5b3V0Lm1ha2VDb2x1bW5zRXF1YWxXaWR0aCA9IGZhbHNlOwotICAgIGZpZWxkQ29sdW1uLnNldExheW91dChsYXlvdXQpOwotICAgIEdyaWREYXRhIGRhdGEgPSBuZXcgR3JpZERhdGEoKTsKLSAgICBkYXRhLmhvcml6b250YWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIGRhdGEudmVydGljYWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIGRhdGEuZ3JhYkV4Y2Vzc0hvcml6b250YWxTcGFjZSA9IHRydWU7Ci0gICAgZmllbGRDb2x1bW4uc2V0TGF5b3V0RGF0YShkYXRhKTsKLQotICAgIC8vIFRoZSBXU0RMIGVsZW1lbnQgbmFtZSBsYWJlbAotICAgIExhYmVsIGxhYmVsID0gbmV3IExhYmVsKGZpZWxkQ29sdW1uLCBTV1QuTEVGVCk7Ci0gICAgbGFiZWwuc2V0VGV4dChNZXNzYWdlcy5XU0RMX0NPTlRFTlRfUEFHRV9MQUJFTF9OQU1FKTsKLSAgICBkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBsYWJlbC5zZXRMYXlvdXREYXRhKGRhdGEpOwotCi0gICAgLy8gVGhlIFdTREwgZWxlbWVudCBuYW1lIGZpZWxkCi0gICAgbmFtZUNvbWJvID0gbmV3IENvbWJvKGZpZWxkQ29sdW1uLCBTV1QuUkVBRF9PTkxZKTsKLSAgICBkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBkYXRhLmdyYWJFeGNlc3NIb3Jpem9udGFsU3BhY2UgPSB0cnVlOwotICAgIG5hbWVDb21iby5zZXRMYXlvdXREYXRhKGRhdGEpOwotICAgIG5hbWVDb21iby5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgTmFtZVNlbGVjdGlvbkxpc3RlbmVyKCkpOwotICAgIC8vbmFtZVRleHQgPSBuZXcgVGV4dChmaWVsZENvbHVtbiwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIpOwotICAgIC8vZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIC8vZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICAvL2RhdGEuZ3JhYkV4Y2Vzc0hvcml6b250YWxTcGFjZSA9IHRydWU7Ci0gICAgLy9kYXRhLndpZHRoSGludCA9IDUwOwotICAgIC8vbmFtZVRleHQuc2V0TGF5b3V0RGF0YShkYXRhKTsKLSAgICAvL25hbWVUZXh0LmFkZE1vZGlmeUxpc3RlbmVyKG5ldyBUZXh0Qm94TGlzdGVuZXIoKSk7Ci0KLSAgICAvLyBUaGUgV1NETCBlbGVtZW50IG5hbWVzcGFjZSBsYWJlbAotICAgIGxhYmVsID0gbmV3IExhYmVsKGZpZWxkQ29sdW1uLCBTV1QuTEVGVCk7Ci0gICAgbGFiZWwuc2V0VGV4dChNZXNzYWdlcy5XU0RMX0NPTlRFTlRfUEFHRV9MQUJFTF9OQU1FU1BBQ0UpOwotICAgIGRhdGEgPSBuZXcgR3JpZERhdGEoKTsKLSAgICBkYXRhLmhvcml6b250YWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIGxhYmVsLnNldExheW91dERhdGEoZGF0YSk7Ci0KLSAgICAvLyBUaGUgV1NETCBlbGVtZW50IG5hbWVzcGFjZSBmaWVsZAotICAgIG5hbWVzcGFjZVRleHQgPSBuZXcgVGV4dChmaWVsZENvbHVtbiwgU1dULlNJTkdMRSB8IFNXVC5CT1JERVIpOwotICAgIGRhdGEgPSBuZXcgR3JpZERhdGEoKTsKLSAgICBkYXRhLmhvcml6b250YWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIGRhdGEuZ3JhYkV4Y2Vzc0hvcml6b250YWxTcGFjZSA9IHRydWU7Ci0gICAgZGF0YS53aWR0aEhpbnQgPSA1MDsKLSAgICBuYW1lc3BhY2VUZXh0LnNldExheW91dERhdGEoZGF0YSk7Ci0gICAgbmFtZXNwYWNlVGV4dC5hZGRNb2RpZnlMaXN0ZW5lcihuZXcgVGV4dEJveExpc3RlbmVyKCkpOwotICAgIG5hbWVzcGFjZVRleHQuc2V0RWRpdGFibGUoZmFsc2UpOwotCi0gICAgLy8gVGhlIFdTREwgZWxlbWVudCBwYXJlbnQgbGFiZWwKLSAgICBsYWJlbCA9IG5ldyBMYWJlbChmaWVsZENvbHVtbiwgU1dULkxFRlQpOwotICAgIGxhYmVsLnNldFRleHQoTWVzc2FnZXMuV1NETF9DT05URU5UX1BBR0VfTEFCRUxfUEFSRU5UKTsKLSAgICBkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBsYWJlbC5zZXRMYXlvdXREYXRhKGRhdGEpOwotCi0gICAgLy8gVGhlIFdTREwgZWxlbWVudCBwYXJlbnQgZmllbGQKLSAgICAvLyAgICBwYXJlbnRDb21ibyA9IG5ldyBDb21ibyhmaWVsZENvbHVtbiwgU1dULlJFQURfT05MWSk7Ci0gICAgLy8gICAgZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIC8vICAgIGRhdGEuaG9yaXpvbnRhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgLy8gICAgZGF0YS5ncmFiRXhjZXNzSG9yaXpvbnRhbFNwYWNlID0gdHJ1ZTsKLSAgICAvLyAgICBwYXJlbnRDb21iby5zZXRMYXlvdXREYXRhKGRhdGEpOwotICAgIHBhcmVudG5hbWVUZXh0ID0gbmV3IFRleHQoZmllbGRDb2x1bW4sIFNXVC5TSU5HTEUgfCBTV1QuQk9SREVSKTsKLSAgICBkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBkYXRhLmdyYWJFeGNlc3NIb3Jpem9udGFsU3BhY2UgPSB0cnVlOwotICAgIGRhdGEud2lkdGhIaW50ID0gNTA7Ci0gICAgcGFyZW50bmFtZVRleHQuc2V0TGF5b3V0RGF0YShkYXRhKTsKLSAgICBwYXJlbnRuYW1lVGV4dC5hZGRNb2RpZnlMaXN0ZW5lcihuZXcgVGV4dEJveExpc3RlbmVyKCkpOwotICAgIHBhcmVudG5hbWVUZXh0LnNldEVkaXRhYmxlKGZhbHNlKTsKLSAgfQotCi0gIC8qKgotICAgKiBBbHdheXMgcmV0dXJuIHRydWUuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBwZXJmb3JtRmluaXNoKCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIFNlbnQgd2hlbiBkZWZhdWx0IHNlbGVjdGlvbiBvY2N1cnMgaW4gdGhlIGNvbnRyb2wuCi0gICAqIEBwYXJhbSBlIC0gYW4gZXZlbnQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VsZWN0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAge30KLQotICAvKioKLSAgICogSGFuZGxlcyB0aGUgaW5jbHVkZVdTREwgY2hlY2tib3guCi0gICAqIFNlbnQgd2hlbiBzZWxlY3Rpb24gb2NjdXJzIGluIHRoZSBjb250cm9sLiAKLSAgICogQHBhcmFtIGUgLSBhbiBldmVudCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZWxlY3Rpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gIHt9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgZWxlbWVudCBuYW1lLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgZWxlbWVudCBuYW1lLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRFbGVtZW50TmFtZSgpCi0gIHsKLSAgICBpbnQgc2VsZWN0aW9uID0gbmFtZUNvbWJvLmdldFNlbGVjdGlvbkluZGV4KCk7Ci0gICAgaWYoc2VsZWN0aW9uICE9IC0xKQotICAgIHsgIAotICAgICAgcmV0dXJuIG5hbWVDb21iby5nZXRJdGVtKHNlbGVjdGlvbik7Ci0gICAgfQotICAgIHJldHVybiAiIjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIG5hbWVzcGFjZS4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIG5hbWVzcGFjZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZXNwYWNlKCkKLSAgewotICAgIHJldHVybiBuYW1lc3BhY2VUZXh0LmdldFRleHQoKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHBhcmVudCBvZiB0aGUgZWxlbWVudC4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIG5hbWUgb2YgdGhlIHBhcmVudCBvZiB0aGUgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UGFyZW50TmFtZSgpCi0gIHsKLSAgICAvL3JldHVybiBwYXJlbnRDb21iby5nZXRJdGVtKHBhcmVudENvbWJvLmdldFNlbGVjdGlvbkluZGV4KCkpOwotICAgIHJldHVybiBwYXJlbnRuYW1lVGV4dC5nZXRUZXh0KCk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50LgotICAgKiAKLSAgICogQHJldHVybiB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpCi0gIHsKLSAgICBpZiAod3NkbEJpbmRpbmdCdXR0b24uZ2V0U2VsZWN0aW9uKCkpCi0gICAgewotICAgICAgcmV0dXJuIEJJTkRJTkc7Ci0gICAgfQotICAgIGVsc2UgaWYgKHdzZGxNZXNzYWdlQnV0dG9uLmdldFNlbGVjdGlvbigpKQotICAgIHsKLSAgICAgIHJldHVybiBNRVNTQUdFOwotICAgIH0KLSAgICBlbHNlIGlmICh3c2RsT3BlcmF0aW9uQnV0dG9uLmdldFNlbGVjdGlvbigpKQotICAgIHsKLSAgICAgIHJldHVybiBPUEVSQVRJT047Ci0gICAgfQotICAgIGVsc2UgaWYgKHdzZGxQb3J0QnV0dG9uLmdldFNlbGVjdGlvbigpKQotICAgIHsKLSAgICAgIHJldHVybiBQT1JUOwotICAgIH0KLSAgICBlbHNlIGlmICh3c2RsUG9ydFR5cGVCdXR0b24uZ2V0U2VsZWN0aW9uKCkpCi0gICAgewotICAgICAgcmV0dXJuIFBPUlRUWVBFOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLQotICB9Ci0KLSAgcHVibGljIHZvaWQgYWRkRWxlbWVudChTdHJpbmcgdHlwZSwgU3RyaW5nIG5hbWUsIFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBwYXJlbnQpCi0gIHsKLSAgICBpZiAocG9ydHMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXNldEVsZW1lbnRzKCk7Ci0gICAgfQotICAgIGlmICh0eXBlLmVxdWFscyhQT1JUKSkKLSAgICB7Ci0gICAgICBwb3J0cy5hZGQobmV3IFdTRExFbGVtZW50KG5hbWUsIG5hbWVzcGFjZSwgcGFyZW50KSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzSWdub3JlQ2FzZShPUEVSQVRJT04pKQotICAgIHsKLSAgICAgIG9wZXJhdGlvbnMuYWRkKG5ldyBXU0RMRWxlbWVudChuYW1lLCBuYW1lc3BhY2UsIHBhcmVudCkpOwotICAgIH0KLSAgICBlbHNlIGlmICh0eXBlLmVxdWFsc0lnbm9yZUNhc2UoQklORElORykpCi0gICAgewotICAgICAgYmluZGluZ3MuYWRkKG5ldyBXU0RMRWxlbWVudChuYW1lLCBuYW1lc3BhY2UsIHBhcmVudCkpOwotICAgIH0KLSAgICBlbHNlIGlmICh0eXBlLmVxdWFsc0lnbm9yZUNhc2UoUE9SVFRZUEUpKQotICAgIHsKLSAgICAgIHBvcnR0eXBlcy5hZGQobmV3IFdTRExFbGVtZW50KG5hbWUsIG5hbWVzcGFjZSwgcGFyZW50KSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzSWdub3JlQ2FzZShNRVNTQUdFKSkKLSAgICB7Ci0gICAgICBtZXNzYWdlcy5hZGQobmV3IFdTRExFbGVtZW50KG5hbWUsIG5hbWVzcGFjZSwgcGFyZW50KSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHZvaWQgcmVzZXRFbGVtZW50cygpCi0gIHsKLSAgICBwb3J0cyA9IG5ldyBWZWN0b3IoKTsKLSAgICBvcGVyYXRpb25zID0gbmV3IFZlY3RvcigpOwotICAgIGJpbmRpbmdzID0gbmV3IFZlY3RvcigpOwotICAgIHBvcnR0eXBlcyA9IG5ldyBWZWN0b3IoKTsKLSAgICBtZXNzYWdlcyA9IG5ldyBWZWN0b3IoKTsKLSAgICBuYW1lQ29tYm8uY2xlYXJTZWxlY3Rpb24oKTsKLSAgICBuYW1lQ29tYm8ucmVtb3ZlQWxsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQWRkIHZhbHVlIHRvIHRoZSBsaXN0IGJveAotICAgKi8KLSAgY2xhc3MgV29ya3NwYWNlQnV0dG9uTGlzdGVuZXIgaW1wbGVtZW50cyBTZWxlY3Rpb25MaXN0ZW5lcgotICB7Ci0gICAgcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gICAge30KLQotICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gICAge30KLSAgfQotCi0gIC8qKgotICAgKiBBZGQgdmFsdWUgdG8gdGhlIGxpc3QgYm94Ci0gICAqLwotICBjbGFzcyBCcm93c2VCdXR0b25MaXN0ZW5lciBpbXBsZW1lbnRzIFNlbGVjdGlvbkxpc3RlbmVyCi0gIHsKLSAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7fQotCi0gICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7fQotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCB2YWx1ZSB0byB0aGUgbGlzdCBib3gKLSAgICovCi0gIGNsYXNzIFNlYXJjaFVERElCdXR0b25MaXN0ZW5lciBpbXBsZW1lbnRzIFNlbGVjdGlvbkxpc3RlbmVyCi0gIHsKLSAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7fQotCi0gICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7fQotICB9Ci0gIC8qKgotICAgKiBBZGQgdmFsdWUgdG8gdGhlIGZpbGUgZmllbGQuCi0gICAqLwotICBjbGFzcyBUZXh0Qm94TGlzdGVuZXIgaW1wbGVtZW50cyBNb2RpZnlMaXN0ZW5lcgotICB7Ci0KLSAgICAvKgotCSAqIChub24tSmF2YWRvYykKLQkgKiAKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5TGlzdGVuZXIjbW9kaWZ5VGV4dChvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUV2ZW50KQotCSAqLwotICAgIHB1YmxpYyB2b2lkIG1vZGlmeVRleHQoTW9kaWZ5RXZlbnQgZSkKLSAgICB7Ci0gICAgICBnZXRDb250YWluZXIoKS51cGRhdGVCdXR0b25zKCk7Ci0KLSAgICB9Ci0KLSAgfQotICBwcml2YXRlIGNsYXNzIFdTRExFbGVtZW50Ci0gIHsKLSAgICBwcml2YXRlIFN0cmluZyBuYW1lOwotICAgIHByaXZhdGUgU3RyaW5nIG5hbWVzcGFjZTsKLSAgICBwcml2YXRlIFN0cmluZyBwYXJlbnQ7Ci0KLSAgICBwdWJsaWMgV1NETEVsZW1lbnQoU3RyaW5nIG5hbWUsIFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBwYXJlbnQpCi0gICAgewotICAgICAgdGhpcy5uYW1lID0gbmFtZTsKLSAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlOwotICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgICB7Ci0gICAgICByZXR1cm4gbmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWVzcGFjZSgpCi0gICAgewotICAgICAgcmV0dXJuIG5hbWVzcGFjZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFBhcmVudE5hbWUoKQotICAgIHsKLSAgICAgIHJldHVybiBwYXJlbnQ7Ci0gICAgfQotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLklEaWFsb2dQYWdlI3NldFZpc2libGUoYm9vbGVhbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFZpc2libGUoYm9vbGVhbiB2aXNpYmxlKQotICB7Ci0gICAgcmVzZXRFbGVtZW50cygpOwotICAgIHN1cGVyLnNldFZpc2libGUodmlzaWJsZSk7Ci0gICAgaWYgKHZpc2libGUpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIFdTRExGYWN0b3J5IGZhY3RvcnkgPSBXU0RMRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotICAgICAgICBXU0RMUmVhZGVyIHJlYWRlciA9IGZhY3RvcnkubmV3V1NETFJlYWRlcigpOwotICAgICAgICBEZWZpbml0aW9uIGRlZkVsZW0gPSByZWFkZXIucmVhZFdTREwoKChWYWxpZGF0aW9uV2l6YXJkKSBnZXRXaXphcmQoKSkuZ2V0V1NETEZpbGUoKSk7Ci0gICAgICAgIFFOYW1lIGRlZlFOYW1lID0gZGVmRWxlbS5nZXRRTmFtZSgpOwotICAgICAgICBTdHJpbmcgZGVmbmFtZSA9ICIiOwotICAgICAgICBpZiAoZGVmUU5hbWUgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGRlZm5hbWUgPSBkZWZRTmFtZS5nZXRMb2NhbFBhcnQoKTsKLSAgICAgICAgfQotICAgICAgICBTdHJpbmcgbmFtZXNwYWNlID0gZGVmRWxlbS5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLQotICAgICAgICAvLyByZWdpc3RlciB0aGUgcG9ydHMKLSAgICAgICAgTWFwIHNlcnZtYXAgPSBkZWZFbGVtLmdldFNlcnZpY2VzKCk7Ci0gICAgICAgIGlmIChzZXJ2bWFwICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBDb2xsZWN0aW9uIHNlcnZzID0gc2Vydm1hcC52YWx1ZXMoKTsKLSAgICAgICAgICBpZiAoc2VydnMgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBJdGVyYXRvciBzZXJ2SXRlciA9IHNlcnZzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICB3aGlsZSAoc2Vydkl0ZXIuaGFzTmV4dCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBTZXJ2aWNlIHNlcnZpY2UgPSAoU2VydmljZSkgc2Vydkl0ZXIubmV4dCgpOwotICAgICAgICAgICAgICBTdHJpbmcgc2Vydm5hbWUgPSBzZXJ2aWNlLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0KLSAgICAgICAgICAgICAgTWFwIHBvcnRtYXAgPSBzZXJ2aWNlLmdldFBvcnRzKCk7Ci0gICAgICAgICAgICAgIGlmIChwb3J0bWFwICE9IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDb2xsZWN0aW9uIHBvcnRzID0gcG9ydG1hcC52YWx1ZXMoKTsKLSAgICAgICAgICAgICAgICBpZiAocG9ydHMgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBJdGVyYXRvciBwb3J0SXRlciA9IHBvcnRzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICB3aGlsZSAocG9ydEl0ZXIuaGFzTmV4dCgpKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBQb3J0IHBvcnQgPSAoUG9ydCkgcG9ydEl0ZXIubmV4dCgpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHBvcnQuZ2V0TmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KFZhbGlkYXRpb25XaXphcmRXU0RMQ29udGVudFBhZ2UuUE9SVCwgbmFtZSwgbmFtZXNwYWNlLCBzZXJ2bmFtZSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVnaXN0ZXIgdGhlIEJpbmRpbmdzCi0gICAgICAgIE1hcCBiaW5kaW5nbWFwID0gZGVmRWxlbS5nZXRCaW5kaW5ncygpOwotICAgICAgICBpZiAoYmluZGluZ21hcCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgQ29sbGVjdGlvbiBiaW5kaW5ncyA9IGJpbmRpbmdtYXAudmFsdWVzKCk7Ci0gICAgICAgICAgaWYgKGJpbmRpbmdzICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgSXRlcmF0b3IgYmluZEl0ZXIgPSBiaW5kaW5ncy5pdGVyYXRvcigpOwotICAgICAgICAgICAgd2hpbGUgKGJpbmRJdGVyLmhhc05leHQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpIGJpbmRJdGVyLm5leHQoKTsKLSAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBiaW5kaW5nLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgICAgICAgIGFkZEVsZW1lbnQoVmFsaWRhdGlvbldpemFyZFdTRExDb250ZW50UGFnZS5CSU5ESU5HLCBuYW1lLCBuYW1lc3BhY2UsIGRlZm5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBQb3J0VHlwZXMgYW5kIE9wZXJhdGlvbnMKLSAgICAgICAgTWFwIHBvcnR0eXBlbWFwID0gZGVmRWxlbS5nZXRQb3J0VHlwZXMoKTsKLSAgICAgICAgaWYgKHBvcnR0eXBlbWFwICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBDb2xsZWN0aW9uIHBvcnR0eXBlcyA9IHBvcnR0eXBlbWFwLnZhbHVlcygpOwotICAgICAgICAgIGlmIChwb3J0dHlwZXMgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBJdGVyYXRvciBwb3J0dHlwZUl0ZXIgPSBwb3J0dHlwZXMuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgIHdoaWxlIChwb3J0dHlwZUl0ZXIuaGFzTmV4dCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBQb3J0VHlwZSBwb3J0dHlwZSA9IChQb3J0VHlwZSkgcG9ydHR5cGVJdGVyLm5leHQoKTsKLSAgICAgICAgICAgICAgU3RyaW5nIHBvcnR0eXBlbmFtZSA9IHBvcnR0eXBlLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgICAgICAgIGFkZEVsZW1lbnQoVmFsaWRhdGlvbldpemFyZFdTRExDb250ZW50UGFnZS5QT1JUVFlQRSwgcG9ydHR5cGVuYW1lLCBuYW1lc3BhY2UsIGRlZm5hbWUpOwotCi0gICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBPcGVyYXRpb25zCi0gICAgICAgICAgICAgIExpc3Qgb3BlcmF0aW9ucyA9IHBvcnR0eXBlLmdldE9wZXJhdGlvbnMoKTsKLSAgICAgICAgICAgICAgaWYgKG9wZXJhdGlvbnMgIT0gbnVsbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdG9yIG9wZXJJdGVyID0gb3BlcmF0aW9ucy5pdGVyYXRvcigpOwotICAgICAgICAgICAgICAgIHdoaWxlIChvcGVySXRlci5oYXNOZXh0KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IChPcGVyYXRpb24pIG9wZXJJdGVyLm5leHQoKTsKLSAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gb3BlcmF0aW9uLmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgICAgIGFkZEVsZW1lbnQoVmFsaWRhdGlvbldpemFyZFdTRExDb250ZW50UGFnZS5PUEVSQVRJT04sIG5hbWUsIG5hbWVzcGFjZSwgcG9ydHR5cGVuYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgTWFwIG1lc3NhZ2VtYXAgPSBkZWZFbGVtLmdldE1lc3NhZ2VzKCk7Ci0gICAgICAgIGlmIChtZXNzYWdlbWFwICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBDb2xsZWN0aW9uIG1lc3NhZ2VzID0gbWVzc2FnZW1hcC52YWx1ZXMoKTsKLSAgICAgICAgICBpZiAobWVzc2FnZXMgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBJdGVyYXRvciBtZXNzSXRlciA9IG1lc3NhZ2VzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICB3aGlsZSAobWVzc0l0ZXIuaGFzTmV4dCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBNZXNzYWdlIG1lc3NhZ2UgPSAoTWVzc2FnZSkgbWVzc0l0ZXIubmV4dCgpOwotICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IG1lc3NhZ2UuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKTsKLSAgICAgICAgICAgICAgYWRkRWxlbWVudChWYWxpZGF0aW9uV2l6YXJkV1NETENvbnRlbnRQYWdlLk1FU1NBR0UsIG5hbWUsIG5hbWVzcGFjZSwgZGVmbmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG5hbWVDb21iby5yZW1vdmVBbGwoKTsKLSAgICAgICAgbmFtZXNwYWNlVGV4dC5zZXRUZXh0KCIiKTsKLSAgICAgICAgcGFyZW50bmFtZVRleHQuc2V0VGV4dCgiIik7Ci0gICAgICAgIGludCBudW1FbGVtcyA9IHBvcnRzLnNpemUoKTsKLSAgICAgICAgV1NETEVsZW1lbnRbXSBlbGVtcyA9IChXU0RMRWxlbWVudFtdKSBwb3J0cy50b0FycmF5KG5ldyBXU0RMRWxlbWVudFtudW1FbGVtc10pOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUVsZW1zOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBuYW1lQ29tYm8uYWRkKGVsZW1zW2ldLmdldE5hbWUoKSwgaSk7Ci0gICAgICAgICAgaWYgKGkgPT0gMCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBuYW1lQ29tYm8uc2VsZWN0KDApOwotICAgICAgICAgICAgbmFtZXNwYWNlVGV4dC5zZXRUZXh0KGVsZW1zW2ldLmdldE5hbWVzcGFjZSgpKTsKLSAgICAgICAgICAgIHBhcmVudG5hbWVUZXh0LnNldFRleHQoZWxlbXNbaV0uZ2V0UGFyZW50TmFtZSgpKTsKLQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB3c2RsUG9ydEJ1dHRvbi5zZXRTZWxlY3Rpb24odHJ1ZSk7Ci0gICAgICAgIHdzZGxCaW5kaW5nQnV0dG9uLnNldFNlbGVjdGlvbihmYWxzZSk7Ci0gICAgICAgIHdzZGxNZXNzYWdlQnV0dG9uLnNldFNlbGVjdGlvbihmYWxzZSk7Ci0gICAgICAgIHdzZGxPcGVyYXRpb25CdXR0b24uc2V0U2VsZWN0aW9uKGZhbHNlKTsKLSAgICAgICAgd3NkbFBvcnRUeXBlQnV0dG9uLnNldFNlbGVjdGlvbihmYWxzZSk7Ci0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIC8vIFRoZSBXU0RMIGZpbGUgaXMgbm90IHZhbGlkLgotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVzZXRFbGVtZW50cygpOwotICAgIH0KLQotICB9Ci0KLSAgY2xhc3MgUG9ydEJ1dHRvblNlbGVjdGlvbkxpc3RlbmVyIGltcGxlbWVudHMgU2VsZWN0aW9uTGlzdGVuZXIKLSAgewotCi0gICAgLyoKLQkgKiAobm9uLUphdmFkb2MpCi0JICogCi0JICogQHNlZSBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyI3dpZGdldERlZmF1bHRTZWxlY3RlZChvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50KQotCSAqLwotICAgIHB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKQotICAgIHsKLSAgICAgIHdpZGdldFNlbGVjdGVkKGUpOwotCi0gICAgfQotCi0gICAgLyoKLQkgKiAobm9uLUphdmFkb2MpCi0JICogCi0JICogQHNlZSBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyI3dpZGdldFNlbGVjdGVkKG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQpCi0JICovCi0gICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7Ci0gICAgICBuYW1lQ29tYm8ucmVtb3ZlQWxsKCk7Ci0gICAgICBuYW1lc3BhY2VUZXh0LnNldFRleHQoIiIpOwotICAgICAgcGFyZW50bmFtZVRleHQuc2V0VGV4dCgiIik7Ci0gICAgICBpbnQgbnVtRWxlbXMgPSBwb3J0cy5zaXplKCk7Ci0gICAgICBXU0RMRWxlbWVudFtdIGVsZW1zID0gKFdTRExFbGVtZW50W10pIHBvcnRzLnRvQXJyYXkobmV3IFdTRExFbGVtZW50W251bUVsZW1zXSk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUVsZW1zOyBpKyspCi0gICAgICB7Ci0gICAgICAgIG5hbWVDb21iby5hZGQoZWxlbXNbaV0uZ2V0TmFtZSgpLCBpKTsKLSAgICAgICAgaWYgKGkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIG5hbWVDb21iby5zZWxlY3QoMCk7Ci0gICAgICAgICAgbmFtZXNwYWNlVGV4dC5zZXRUZXh0KGVsZW1zW2ldLmdldE5hbWVzcGFjZSgpKTsKLSAgICAgICAgICBwYXJlbnRuYW1lVGV4dC5zZXRUZXh0KGVsZW1zW2ldLmdldFBhcmVudE5hbWUoKSk7Ci0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICB9Ci0gIGNsYXNzIEJpbmRpbmdCdXR0b25TZWxlY3Rpb25MaXN0ZW5lciBpbXBsZW1lbnRzIFNlbGVjdGlvbkxpc3RlbmVyCi0gIHsKLQotICAgIC8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lciN3aWRnZXREZWZhdWx0U2VsZWN0ZWQob3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudCkKLQkgKi8KLSAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7Ci0gICAgICB3aWRnZXRTZWxlY3RlZChlKTsKLQotICAgIH0KLQotICAgIC8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lciN3aWRnZXRTZWxlY3RlZChvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50KQotCSAqLwotICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gICAgewotICAgICAgbmFtZUNvbWJvLnJlbW92ZUFsbCgpOwotICAgICAgbmFtZXNwYWNlVGV4dC5zZXRUZXh0KCIiKTsKLSAgICAgIHBhcmVudG5hbWVUZXh0LnNldFRleHQoIiIpOwotICAgICAgaW50IG51bUVsZW1zID0gYmluZGluZ3Muc2l6ZSgpOwotICAgICAgV1NETEVsZW1lbnRbXSBlbGVtcyA9IChXU0RMRWxlbWVudFtdKSBiaW5kaW5ncy50b0FycmF5KG5ldyBXU0RMRWxlbWVudFtudW1FbGVtc10pOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1FbGVtczsgaSsrKQotICAgICAgewotICAgICAgICBuYW1lQ29tYm8uYWRkKGVsZW1zW2ldLmdldE5hbWUoKSwgaSk7Ci0gICAgICAgIGlmIChpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBuYW1lQ29tYm8uc2VsZWN0KDApOwotICAgICAgICAgIG5hbWVzcGFjZVRleHQuc2V0VGV4dChlbGVtc1tpXS5nZXROYW1lc3BhY2UoKSk7Ci0gICAgICAgICAgcGFyZW50bmFtZVRleHQuc2V0VGV4dChlbGVtc1tpXS5nZXRQYXJlbnROYW1lKCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICB9Ci0KLSAgfQotICBjbGFzcyBQb3J0VHlwZUJ1dHRvblNlbGVjdGlvbkxpc3RlbmVyIGltcGxlbWVudHMgU2VsZWN0aW9uTGlzdGVuZXIKLSAgewotCi0gICAgLyoKLQkgKiAobm9uLUphdmFkb2MpCi0JICogCi0JICogQHNlZSBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyI3dpZGdldERlZmF1bHRTZWxlY3RlZChvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50KQotCSAqLwotICAgIHB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKQotICAgIHsKLSAgICAgIHdpZGdldFNlbGVjdGVkKGUpOwotCi0gICAgfQotCi0gICAgLyoKLQkgKiAobm9uLUphdmFkb2MpCi0JICogCi0JICogQHNlZSBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyI3dpZGdldFNlbGVjdGVkKG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQpCi0JICovCi0gICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7Ci0gICAgICBuYW1lQ29tYm8ucmVtb3ZlQWxsKCk7Ci0gICAgICBuYW1lc3BhY2VUZXh0LnNldFRleHQoIiIpOwotICAgICAgcGFyZW50bmFtZVRleHQuc2V0VGV4dCgiIik7Ci0gICAgICBpbnQgbnVtRWxlbXMgPSBwb3J0dHlwZXMuc2l6ZSgpOwotICAgICAgV1NETEVsZW1lbnRbXSBlbGVtcyA9IChXU0RMRWxlbWVudFtdKSBwb3J0dHlwZXMudG9BcnJheShuZXcgV1NETEVsZW1lbnRbbnVtRWxlbXNdKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtRWxlbXM7IGkrKykKLSAgICAgIHsKLSAgICAgICAgbmFtZUNvbWJvLmFkZChlbGVtc1tpXS5nZXROYW1lKCksIGkpOwotICAgICAgICBpZiAoaSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgbmFtZUNvbWJvLnNlbGVjdCgwKTsKLSAgICAgICAgICBuYW1lc3BhY2VUZXh0LnNldFRleHQoZWxlbXNbaV0uZ2V0TmFtZXNwYWNlKCkpOwotICAgICAgICAgIHBhcmVudG5hbWVUZXh0LnNldFRleHQoZWxlbXNbaV0uZ2V0UGFyZW50TmFtZSgpKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgfQotCi0gIH0KLSAgY2xhc3MgT3BlcmF0aW9uQnV0dG9uU2VsZWN0aW9uTGlzdGVuZXIgaW1wbGVtZW50cyBTZWxlY3Rpb25MaXN0ZW5lcgotICB7Ci0KLSAgICAvKgotCSAqIChub24tSmF2YWRvYykKLQkgKiAKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXIjd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQpCi0JICovCi0gICAgcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gICAgewotICAgICAgd2lkZ2V0U2VsZWN0ZWQoZSk7Ci0KLSAgICB9Ci0KLSAgICAvKgotCSAqIChub24tSmF2YWRvYykKLQkgKiAKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXIjd2lkZ2V0U2VsZWN0ZWQob3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudCkKLQkgKi8KLSAgICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKQotICAgIHsKLSAgICAgIG5hbWVDb21iby5yZW1vdmVBbGwoKTsKLSAgICAgIG5hbWVzcGFjZVRleHQuc2V0VGV4dCgiIik7Ci0gICAgICBwYXJlbnRuYW1lVGV4dC5zZXRUZXh0KCIiKTsKLSAgICAgIGludCBudW1FbGVtcyA9IG9wZXJhdGlvbnMuc2l6ZSgpOwotICAgICAgV1NETEVsZW1lbnRbXSBlbGVtcyA9IChXU0RMRWxlbWVudFtdKSBvcGVyYXRpb25zLnRvQXJyYXkobmV3IFdTRExFbGVtZW50W251bUVsZW1zXSk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUVsZW1zOyBpKyspCi0gICAgICB7Ci0gICAgICAgIG5hbWVDb21iby5hZGQoZWxlbXNbaV0uZ2V0TmFtZSgpLCBpKTsKLSAgICAgICAgaWYgKGkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIG5hbWVDb21iby5zZWxlY3QoMCk7Ci0gICAgICAgICAgbmFtZXNwYWNlVGV4dC5zZXRUZXh0KGVsZW1zW2ldLmdldE5hbWVzcGFjZSgpKTsKLSAgICAgICAgICBwYXJlbnRuYW1lVGV4dC5zZXRUZXh0KGVsZW1zW2ldLmdldFBhcmVudE5hbWUoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgIH0KLQotICB9Ci0gIGNsYXNzIE1lc3NhZ2VCdXR0b25TZWxlY3Rpb25MaXN0ZW5lciBpbXBsZW1lbnRzIFNlbGVjdGlvbkxpc3RlbmVyCi0gIHsKLQotICAgIC8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lciN3aWRnZXREZWZhdWx0U2VsZWN0ZWQob3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudCkKLQkgKi8KLSAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7Ci0gICAgICB3aWRnZXRTZWxlY3RlZChlKTsKLQotICAgIH0KLQotICAgIC8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lciN3aWRnZXRTZWxlY3RlZChvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50KQotCSAqLwotICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gICAgewotICAgICAgbmFtZUNvbWJvLnJlbW92ZUFsbCgpOwotICAgICAgbmFtZXNwYWNlVGV4dC5zZXRUZXh0KCIiKTsKLSAgICAgIHBhcmVudG5hbWVUZXh0LnNldFRleHQoIiIpOwotICAgICAgaW50IG51bUVsZW1zID0gbWVzc2FnZXMuc2l6ZSgpOwotICAgICAgV1NETEVsZW1lbnRbXSBlbGVtcyA9IChXU0RMRWxlbWVudFtdKSBtZXNzYWdlcy50b0FycmF5KG5ldyBXU0RMRWxlbWVudFtudW1FbGVtc10pOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1FbGVtczsgaSsrKQotICAgICAgewotICAgICAgICBuYW1lQ29tYm8uYWRkKGVsZW1zW2ldLmdldE5hbWUoKSwgaSk7Ci0gICAgICAgIGlmIChpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBuYW1lQ29tYm8uc2VsZWN0KDApOwotICAgICAgICAgIG5hbWVzcGFjZVRleHQuc2V0VGV4dChlbGVtc1tpXS5nZXROYW1lc3BhY2UoKSk7Ci0gICAgICAgICAgcGFyZW50bmFtZVRleHQuc2V0VGV4dChlbGVtc1tpXS5nZXRQYXJlbnROYW1lKCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICB9Ci0KLSAgfQotCi0gIGNsYXNzIE5hbWVTZWxlY3Rpb25MaXN0ZW5lciBpbXBsZW1lbnRzIFNlbGVjdGlvbkxpc3RlbmVyCi0gIHsKLQotICAgIC8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lciN3aWRnZXREZWZhdWx0U2VsZWN0ZWQob3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudCkKLQkgKi8KLSAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7Ci0gICAgICB3aWRnZXRTZWxlY3RlZChlKTsKLQotICAgIH0KLQotICAgIC8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIAotCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lciN3aWRnZXRTZWxlY3RlZChvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50KQotCSAqLwotICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gICAgewotICAgICAgaW50IHNlbGVjdGlvbiA9ICgoQ29tYm8pIGUuZ2V0U291cmNlKCkpLmdldFNlbGVjdGlvbkluZGV4KCk7Ci0gICAgICBTdHJpbmcgdHlwZSA9IGdldFR5cGUoKTsKLSAgICAgIFdTRExFbGVtZW50IGVsZW0gPSBudWxsOwotICAgICAgaWYgKHR5cGUuZXF1YWxzKFBPUlQpKQotICAgICAgewotICAgICAgICBlbGVtID0gKFdTRExFbGVtZW50KSBwb3J0cy5nZXQoc2VsZWN0aW9uKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKEJJTkRJTkcpKQotICAgICAgewotICAgICAgICBlbGVtID0gKFdTRExFbGVtZW50KSBiaW5kaW5ncy5nZXQoc2VsZWN0aW9uKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKFBPUlRUWVBFKSkKLSAgICAgIHsKLSAgICAgICAgZWxlbSA9IChXU0RMRWxlbWVudCkgcG9ydHR5cGVzLmdldChzZWxlY3Rpb24pOwotICAgICAgfQotICAgICAgZWxzZSBpZiAodHlwZS5lcXVhbHMoT1BFUkFUSU9OKSkKLSAgICAgIHsKLSAgICAgICAgZWxlbSA9IChXU0RMRWxlbWVudCkgb3BlcmF0aW9ucy5nZXQoc2VsZWN0aW9uKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHR5cGUuZXF1YWxzKE1FU1NBR0UpKQotICAgICAgewotICAgICAgICBlbGVtID0gKFdTRExFbGVtZW50KSBtZXNzYWdlcy5nZXQoc2VsZWN0aW9uKTsKLSAgICAgIH0KLQotICAgICAgaWYgKGVsZW0gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgbmFtZXNwYWNlVGV4dC5zZXRUZXh0KGVsZW0uZ2V0TmFtZXNwYWNlKCkpOwotICAgICAgICBwYXJlbnRuYW1lVGV4dC5zZXRUZXh0KGVsZW0uZ2V0UGFyZW50TmFtZSgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3VpL2ludGVybmFsL3dpemFyZHMvVmFsaWRhdGlvbldpemFyZFdTRExQYWdlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvd2l6YXJkcy9WYWxpZGF0aW9uV2l6YXJkV1NETFBhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA1OTMxOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdWkvaW50ZXJuYWwvd2l6YXJkcy9WYWxpZGF0aW9uV2l6YXJkV1NETFBhZ2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsLndpemFyZHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLldpemFyZFBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi51aS5pbnRlcm5hbC5kaWFsb2dzLlNlbGVjdFNpbmdsZUZpbGVEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS51aS5pbnRlcm5hbC5NZXNzYWdlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsLlJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kudWkuaW50ZXJuYWwuV1NJVUlQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkJ1dHRvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5GaWxlRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkdyb3VwOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci0KLS8qKgotICogV2l6YXJkIHBhZ2UgdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIAotICogV1NETCBkb2N1bWVudCBmb3IgdGhlIFdlYiBzZXJ2aWNlLgotICogCi0gKiBAYXV0aG9yIERhdmlkIExhdXpvbiwgSUJNCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCwgSUJNCi0gKi8KLQotcHVibGljIGNsYXNzIFZhbGlkYXRpb25XaXphcmRXU0RMUGFnZSBleHRlbmRzIFdpemFyZFBhZ2UgaW1wbGVtZW50cyBTZWxlY3Rpb25MaXN0ZW5lcgotewotCi0gIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbjsKLQotICBwcm90ZWN0ZWQgYm9vbGVhbiB3c2RsaW52YWxpZCA9IGZhbHNlOwotICAvKioKLSAgICogQWNjZXNzIHRvIHRoZSBpbmNsdWRlV1NETCBmbGFnLiAgCi0gICAqLwotICBwcm90ZWN0ZWQgQnV0dG9uIGluY2x1ZGVXU0RMQnV0dG9uOwotCi0gIC8qKgotICAgKiBBY2Nlc3MgdG8gdGhlIHdzZGwgZG9jdW1lbnQgZ3JvdXAuCi0gICAqLwotICBwcm90ZWN0ZWQgR3JvdXAgZG9jdW1lbnRHcm91cDsKLSAgcHJvdGVjdGVkIFRleHQgZG9jdW1lbnRMb2NhdGlvblRleHQ7Ci0gIHByb3RlY3RlZCBDb21ibyBmaWxlRmllbGQ7Ci0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogCi0gICAqIEBwYXJhbSBzZWxlY3Rpb246IHNlbGVjdGlvbiBpbiB0aGUgUmVzb3VyY2UgTmF2aWdhdG9yIHZpZXcuCi0gICAqLwotICBwdWJsaWMgVmFsaWRhdGlvbldpemFyZFdTRExQYWdlKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikKLSAgewotICAgIHN1cGVyKCJWYWxpZGF0aW9uV2l6YXJkV1NETFBhZ2UiKTsKLSAgICB0aGlzLnNlbGVjdGlvbiA9IHNlbGVjdGlvbjsKLSAgICB0aGlzLnNldFRpdGxlKE1lc3NhZ2VzLldTRExfUEFHRV9TRUxFQ1RfV1NETF9GSUxFTkFNRV9IRUFESU5HKTsKLSAgICB0aGlzLnNldERlc2NyaXB0aW9uKE1lc3NhZ2VzLldTRExfUEFHRV9TRUxFQ1RfV1NETF9GSUxFTkFNRV9FWFBMKTsKLSAgfQotCi0gIC8qKgotICAgKiBBbHdheXMgcmV0dXJucyB0cnVlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNQYWdlQ29tcGxldGUoKQotICB7Ci0gICAgaWYgKGluY2x1ZGVXU0RMRmlsZSgpKQotICAgIHsKLQotICAgICAgaWYgKGZpbGVGaWVsZC5nZXRUZXh0KCkgPT0gbnVsbCB8fCBmaWxlRmllbGQuZ2V0VGV4dCgpLmVxdWFscygiIikgfHwgd3NkbGludmFsaWQpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKgotICAgKiBDcmVhdGVzIHRoZSB0b3AgbGV2ZWwgY29udHJvbCBmb3IgdGhpcyBwYWdlIHVuZGVyIHRoZSBnaXZlbiBwYXJlbnQKLSAgICogY29tcG9zaXRlLiBJbXBsZW1lbnRvcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyB0aGF0IHRoZSBjcmVhdGVkCi0gICAqIGNvbnRyb2wgY2FuIGJlIGFjY2Vzc2VkIHZpYSBnZXRDb250cm9sCi0gICAqIAotICAgKiBAcGFyYW0gcGFyZW50IC0gdGhlIHBhcmVudCBjb21wb3NpdGUKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNyZWF0ZUNvbnRyb2woQ29tcG9zaXRlIHBhcmVudCkKLSAgewotICAgIENvbXBvc2l0ZSBiYXNlID0gbmV3IENvbXBvc2l0ZShwYXJlbnQsIFNXVC5OT05FKTsKLSAgICBiYXNlLnNldExheW91dChuZXcgR3JpZExheW91dCgpKTsKLSAgICBHcmlkRGF0YSBkYXRhOwotCi0gICAgLy8gYWRkIGluY2x1ZGVXU0RMIGZsYWcKLSAgICBpbmNsdWRlV1NETEJ1dHRvbiA9IG5ldyBCdXR0b24oYmFzZSwgU1dULkNIRUNLKTsKLSAgICBpbmNsdWRlV1NETEJ1dHRvbi5zZXRUZXh0KE1lc3NhZ2VzLldTRExfUEFHRV9JTkNMVURFX1dTRExfQlVUVE9OKTsKLSAgICBkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBpbmNsdWRlV1NETEJ1dHRvbi5zZXRMYXlvdXREYXRhKGRhdGEpOwotICAgIGluY2x1ZGVXU0RMQnV0dG9uLmFkZFNlbGVjdGlvbkxpc3RlbmVyKHRoaXMpOwotICAgIGluY2x1ZGVXU0RMQnV0dG9uLnNldFNlbGVjdGlvbihmYWxzZSk7Ci0KLSAgICAvLyBjcmVhdGUgYSBXU0RMIGRvY3VtZW50IGdyb3VwCi0gICAgZG9jdW1lbnRHcm91cCA9IG5ldyBHcm91cChiYXNlLCBTV1QuU0hBRE9XX0VUQ0hFRF9JTik7Ci0gICAgZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIGRhdGEuaG9yaXpvbnRhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgZGF0YS5ncmFiRXhjZXNzSG9yaXpvbnRhbFNwYWNlID0gdHJ1ZTsKLSAgICBkb2N1bWVudEdyb3VwLnNldExheW91dERhdGEoZGF0YSk7Ci0gICAgR3JpZExheW91dCBsYXlvdXQgPSBuZXcgR3JpZExheW91dCgpOwotICAgIGxheW91dC5udW1Db2x1bW5zID0gMTsKLSAgICBkb2N1bWVudEdyb3VwLnNldExheW91dChsYXlvdXQpOwotICAgIGRvY3VtZW50R3JvdXAuc2V0VmlzaWJsZShmYWxzZSk7Ci0KLSAgICBjcmVhdGVEb2N1bWVudEdyb3VwQ29udGVudHMoZG9jdW1lbnRHcm91cCk7Ci0KLSAgICBzZXRDb250cm9sKGJhc2UpOwotICB9Ci0KLSAgcHJvdGVjdGVkIENvbnRyb2wgY3JlYXRlRG9jdW1lbnRHcm91cENvbnRlbnRzKENvbXBvc2l0ZSBkb2N1bWVudEdyb3VwKQotICB7Ci0gICAgLy9yYWRpbyBidXR0b25zJyBjb250YWluZXIKLSAgICBDb21wb3NpdGUgYmFzZVBhbmVsID0gbmV3IENvbXBvc2l0ZShkb2N1bWVudEdyb3VwLCBTV1QuTk9ORSk7Ci0gICAgR3JpZExheW91dCBsYXlvdXQgPSBuZXcgR3JpZExheW91dCgpOwotICAgIGxheW91dC5udW1Db2x1bW5zID0gMjsKLSAgICBsYXlvdXQubWFrZUNvbHVtbnNFcXVhbFdpZHRoID0gZmFsc2U7Ci0gICAgbGF5b3V0Lm1hcmdpbldpZHRoID0gMDsKLSAgICBiYXNlUGFuZWwuc2V0TGF5b3V0KGxheW91dCk7Ci0gICAgR3JpZERhdGEgZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIGRhdGEuaG9yaXpvbnRhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgZGF0YS5ncmFiRXhjZXNzSG9yaXpvbnRhbFNwYWNlID0gdHJ1ZTsKLSAgICBiYXNlUGFuZWwuc2V0TGF5b3V0RGF0YShkYXRhKTsKLQotICAgIENvbXBvc2l0ZSBncm91cDEgPSBuZXcgQ29tcG9zaXRlKGJhc2VQYW5lbCwgU1dULk5PTkUpOwotICAgIGdyb3VwMS5zZXRGb250KGdldEZvbnQoKSk7Ci0gICAgbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoKTsKLSAgICBsYXlvdXQubnVtQ29sdW1ucyA9IDE7Ci0gICAgZ3JvdXAxLnNldExheW91dChsYXlvdXQpOwotICAgIGRhdGEgPSBuZXcgR3JpZERhdGEoKTsKLSAgICBkYXRhLnZlcnRpY2FsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBkYXRhLmhvcml6b250YWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIGdyb3VwMS5zZXRMYXlvdXREYXRhKGRhdGEpOwotCi0gICAgTGFiZWwgZG9jdW1lbnRMYWJlbCA9IG5ldyBMYWJlbChncm91cDEsIFNXVC5MRUZUKTsKLSAgICBkb2N1bWVudExhYmVsLnNldFRleHQoTWVzc2FnZXMuV1NETF9QQUdFX0lOQ0xVREVfV1NETF9MQUJFTCk7Ci0gICAgZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIGRhdGEuaG9yaXpvbnRhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgZG9jdW1lbnRMYWJlbC5zZXRMYXlvdXREYXRhKGRhdGEpOwotICAgIC8qKgotCSAqIExhYmVsIGxhYmVsID0gbmV3IExhYmVsKGJhc2VQYW5lbCwgU1dULkxFRlQpOyBkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0JICogZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsgZGF0YS5ob3Jpem9udGFsU3BhbiA9IDE7Ci0JICogbGFiZWwuc2V0TGF5b3V0RGF0YShkYXRhKTsKLQkgKi8KLSAgICBmaWxlRmllbGQgPSBuZXcgQ29tYm8oZ3JvdXAxLCBTV1QuRFJPUF9ET1dOKTsKLSAgICBTdHJpbmdbXSB3c2RsbG9jYXRpb25zID0gKChWYWxpZGF0aW9uV2l6YXJkKSBnZXRXaXphcmQoKSkuZ2V0V1NETExvY2F0aW9ucygpOwotICAgIGlmKHdzZGxsb2NhdGlvbnMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpbnQgbnVtbG9jcyA9IHdzZGxsb2NhdGlvbnMubGVuZ3RoOwotICAgICAgZm9yKGludCBpID0gMDsgaSA8IG51bWxvY3M7IGkrKykKLSAgICAgIHsKLSAgICAgIAlmaWxlRmllbGQuYWRkKHdzZGxsb2NhdGlvbnNbaV0pOwotICAgICAgfQotICAgIH0KLSAgICBkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBkYXRhLmdyYWJFeGNlc3NIb3Jpem9udGFsU3BhY2UgPSB0cnVlOwotICAgIGRhdGEudmVydGljYWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIGRhdGEuZ3JhYkV4Y2Vzc1ZlcnRpY2FsU3BhY2UgPSB0cnVlOwotICAgIGRhdGEud2lkdGhIaW50ID0gMzA7Ci0gICAgZmlsZUZpZWxkLnNldExheW91dERhdGEoZGF0YSk7Ci0gICAgZmlsZUZpZWxkLmFkZE1vZGlmeUxpc3RlbmVyKG5ldyBGaWxlRmllbGRMaXN0ZW5lcigpKTsKLQotICAgIExhYmVsIHdzZGxMYWJlbCA9IG5ldyBMYWJlbChncm91cDEsIFNXVC5MRUZUKTsKLSAgICB3c2RsTGFiZWwuc2V0VGV4dChNZXNzYWdlcy5XU0RMX1BBR0VfVkFMSURfV1NETF9MQUJFTCk7Ci0gICAgZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIGRhdGEuaG9yaXpvbnRhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgZG9jdW1lbnRMYWJlbC5zZXRMYXlvdXREYXRhKGRhdGEpOwotCi0gICAgLy8gZG9jdW1lbnRMb2NhdGlvblRleHQgPSBuZXcgVGV4dChkb2N1bWVudEdyb3VwLCBTV1QuU0lOR0xFIHwgU1dULkJPUkRFUik7Ci0gICAgLy8gZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIC8vIGRhdGEuaG9yaXpvbnRhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgLy8gZGF0YS5ncmFiRXhjZXNzSG9yaXpvbnRhbFNwYWNlID0gdHJ1ZTsKLSAgICAvLyBkYXRhLndpZHRoSGludCA9IDMwOwotICAgIC8vIGRvY3VtZW50TG9jYXRpb25UZXh0LnNldExheW91dERhdGEoZGF0YSk7Ci0KLSAgICBDb21wb3NpdGUgZ3JvdXAgPSBuZXcgQ29tcG9zaXRlKGJhc2VQYW5lbCwgU1dULk5PTkUpOwotICAgIGdyb3VwLnNldEZvbnQoZ2V0Rm9udCgpKTsKLSAgICBsYXlvdXQgPSBuZXcgR3JpZExheW91dCgpOwotICAgIGxheW91dC5udW1Db2x1bW5zID0gMTsKLSAgICBncm91cC5zZXRMYXlvdXQobGF5b3V0KTsKLSAgICBkYXRhID0gbmV3IEdyaWREYXRhKCk7Ci0gICAgZGF0YS52ZXJ0aWNhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgZGF0YS5ob3Jpem9udGFsQWxpZ25tZW50ID0gR3JpZERhdGEuRklMTDsKLSAgICBncm91cC5zZXRMYXlvdXREYXRhKGRhdGEpOwotCi0gICAgQnV0dG9uIHdvcmtzcGFjZUJ1dHRvbiA9IG5ldyBCdXR0b24oZ3JvdXAsIFNXVC5QVVNIKTsKLSAgICB3b3Jrc3BhY2VCdXR0b24uc2V0VGV4dChNZXNzYWdlcy5XU0RMX1BBR0VfV09SS0JFTkNIX0JVVFRPTik7Ci0gICAgZGF0YSA9IG5ldyBHcmlkRGF0YSgpOwotICAgIGRhdGEuaG9yaXpvbnRhbEFsaWdubWVudCA9IEdyaWREYXRhLkZJTEw7Ci0gICAgd29ya3NwYWNlQnV0dG9uLnNldExheW91dERhdGEoZGF0YSk7Ci0gICAgd29ya3NwYWNlQnV0dG9uLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBXb3Jrc3BhY2VCdXR0b25MaXN0ZW5lcigpKTsKLQotICAgIEJ1dHRvbiBicm93c2VCdXR0b24gPSBuZXcgQnV0dG9uKGdyb3VwLCBTV1QuUFVTSCk7Ci0gICAgYnJvd3NlQnV0dG9uLnNldFRleHQoTWVzc2FnZXMuV1NETF9QQUdFX0JST1dTRV9CVVRUT04pOwotICAgIGRhdGEgPSBuZXcgR3JpZERhdGEoKTsKLSAgICBkYXRhLmhvcml6b250YWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIGJyb3dzZUJ1dHRvbi5zZXRMYXlvdXREYXRhKGRhdGEpOwotICAgIGJyb3dzZUJ1dHRvbi5hZGRTZWxlY3Rpb25MaXN0ZW5lcihuZXcgQnJvd3NlQnV0dG9uTGlzdGVuZXIoKSk7Ci0KLSAgICAvLyBCdXR0b24gc2VhcmNoVURESUJ1dHRvbiA9IG5ldyBCdXR0b24oZ3JvdXAsIFNXVC5QVVNIKTsKLSAgICAvLyBzZWFyY2hVRERJQnV0dG9uLnNldFRleHQoTWVzc2FnZXMuKCJfVUlfV0laQVJEX1ZfU0VBUkNIX1VERElfQlVUVE9OIikpOwotICAgIC8vIGRhdGEgPSBuZXcgR3JpZERhdGEoKTsKLSAgICAvLyBkYXRhLmhvcml6b250YWxBbGlnbm1lbnQgPSBHcmlkRGF0YS5GSUxMOwotICAgIC8vIHNlYXJjaFVERElCdXR0b24uc2V0TGF5b3V0RGF0YShkYXRhKTsKLSAgICAvLyBzZWFyY2hVRERJQnV0dG9uLmFkZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWFyY2hVRERJQnV0dG9uTGlzdGVuZXIoKSk7Ci0KLSAgICByZXR1cm4gZG9jdW1lbnRHcm91cDsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGluY2x1ZGVXU0RMRmlsZSgpCi0gIHsKLSAgICByZXR1cm4gaW5jbHVkZVdTRExCdXR0b24uZ2V0U2VsZWN0aW9uKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIGdldFdTRExGaWxlKCkKLSAgewotICAgIHJldHVybiBmaWxlRmllbGQuZ2V0VGV4dCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFsd2F5cyByZXR1cm4gdHJ1ZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHBlcmZvcm1GaW5pc2goKQotICB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogU2VudCB3aGVuIGRlZmF1bHQgc2VsZWN0aW9uIG9jY3VycyBpbiB0aGUgY29udHJvbC4KLSAgICogCi0gICAqIEBwYXJhbSBlIC0KLSAgICogICAgICAgICAgICBhbiBldmVudCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZWxlY3Rpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHdpZGdldERlZmF1bHRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKQotICB7fQotCi0gIC8qKgotICAgKiBIYW5kbGVzIHRoZSBpbmNsdWRlV1NETCBjaGVja2JveC4gU2VudCB3aGVuIHNlbGVjdGlvbiBvY2N1cnMgaW4gdGhlCi0gICAqIGNvbnRyb2wuCi0gICAqIAotICAgKiBAcGFyYW0gZSAtCi0gICAqICAgICAgICAgICAgYW4gZXZlbnQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VsZWN0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKQotICB7Ci0gICAgaWYgKGUud2lkZ2V0ID09IGluY2x1ZGVXU0RMQnV0dG9uKQotICAgIHsKLSAgICAgIGlmIChpbmNsdWRlV1NETEJ1dHRvbi5nZXRTZWxlY3Rpb24oKSkKLSAgICAgIHsKLSAgICAgICAgZG9jdW1lbnRHcm91cC5zZXRWaXNpYmxlKHRydWUpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBkb2N1bWVudEdyb3VwLnNldFZpc2libGUoZmFsc2UpOwotICAgICAgfQotICAgICAgZ2V0Q29udGFpbmVyKCkudXBkYXRlQnV0dG9ucygpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFdTRExJbnZhbGlkKCkKLSAgewotICAgIHdzZGxpbnZhbGlkID0gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBBZGQgdmFsdWUgdG8gdGhlIGxpc3QgYm94Ci0gICAqLwotICBjbGFzcyBXb3Jrc3BhY2VCdXR0b25MaXN0ZW5lciBpbXBsZW1lbnRzIFNlbGVjdGlvbkxpc3RlbmVyCi0gIHsKLSAgICBwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7fQotCi0gICAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgICB7Ci0gICAgICBTZWxlY3RTaW5nbGVGaWxlRGlhbG9nIGRpYWxvZyA9IG5ldyBTZWxlY3RTaW5nbGVGaWxlRGlhbG9nKGdldFNoZWxsKCksIHNlbGVjdGlvbiwgZmFsc2UpOwotICAgICAgZGlhbG9nLmFkZEZpbHRlckV4dGVuc2lvbnMobmV3IFN0cmluZ1tdIHsgIi53c2RsIiB9KTsKLSAgICAgIGRpYWxvZy5jcmVhdGUoKTsKLSAgICAgIGRpYWxvZy5nZXRTaGVsbCgpLnNldFRleHQoTWVzc2FnZXMuV1NETF9QQUdFX0ZJTEVfU0hFTExfVEVYVCk7Ci0gICAgICBkaWFsb2cuc2V0VGl0bGUoTWVzc2FnZXMuV1NETF9QQUdFX0ZJTEVfVElUTEUpOwotICAgICAgZGlhbG9nLnNldE1lc3NhZ2UoTWVzc2FnZXMuV1NETF9QQUdFX0ZJTEVfREVTQ1JJUFRJT04pOwotICAgICAgZGlhbG9nLnNldFRpdGxlSW1hZ2UoV1NJVUlQbHVnaW4uZ2V0UmVzb3VyY2VJbWFnZShSZXNvdXJjZS5WQUxJREFURV9XU0lfTE9HRklMRV9XSVopKTsKLSAgICAgIAotICAgICAgaW50IHJlc3VsdCA9IGRpYWxvZy5vcGVuKCk7Ci0KLSAgICAgIGlmIChyZXN1bHQgPT0gV2luZG93Lk9LKQotICAgICAgewotICAgICAgICBJRmlsZSBjdXJyZW50SUZpbGUgPSBkaWFsb2cuZ2V0RmlsZSgpOwotICAgICAgICBpZiAoY3VycmVudElGaWxlICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBmaWxlRmllbGQuYWRkKGN1cnJlbnRJRmlsZS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCksIDApOwotICAgICAgICAgIGZpbGVGaWVsZC5zZWxlY3QoMCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQWRkIHZhbHVlIHRvIHRoZSBsaXN0IGJveAotICAgKi8KLSAgY2xhc3MgQnJvd3NlQnV0dG9uTGlzdGVuZXIgaW1wbGVtZW50cyBTZWxlY3Rpb25MaXN0ZW5lcgotICB7Ci0gICAgcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gICAge30KLQotICAgIHB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gICAgewotICAgICAgRmlsZURpYWxvZyBkaWFsb2cgPSBuZXcgRmlsZURpYWxvZyhnZXRTaGVsbCgpKTsKLSAgICAgIGRpYWxvZy5zZXRGaWx0ZXJFeHRlbnNpb25zKG5ldyBTdHJpbmdbXSB7ICIqLndzZGwiIH0pOwotICAgICAgU3RyaW5nIHNlbGVjdGlvbiA9IGRpYWxvZy5vcGVuKCk7Ci0gICAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGZpbGVGaWVsZC5hZGQoc2VsZWN0aW9uLCAwKTsKLSAgICAgICAgZmlsZUZpZWxkLnNlbGVjdCgwKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQWRkIHZhbHVlIHRvIHRoZSBsaXN0IGJveAotICAgKi8KLSAgLy8gY2xhc3MgU2VhcmNoVURESUJ1dHRvbkxpc3RlbmVyIGltcGxlbWVudHMgU2VsZWN0aW9uTGlzdGVuZXIKLSAgLy8gewotICAvLyAgcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpCi0gIC8vICB7fQotICAvLwotICAvLyAgcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkKLSAgLy8gIHsKLSAgLy8gICAgU3RyaW5nIHRpdGxlID0gIkluZm9ybWF0aW9uIjsKLSAgLy8gICAgU3RyaW5nIG1lc3NhZ2UgPSAiVGhlIGNob3NlbiBvcGVyYXRpb24gaXMgbm90IGN1cnJlbnRseSBhdmFpbGFibGUuIjsKLSAgLy8gICAgTWVzc2FnZURpYWxvZy5vcGVuSW5mb3JtYXRpb24oRGlzcGxheS5nZXREZWZhdWx0KCkuZ2V0QWN0aXZlU2hlbGwoKSwgdGl0bGUsIG1lc3NhZ2UpOwotICAvLyAgfQotICAvL30KLQotICAvKioKLSAgICogQWRkIHZhbHVlIHRvIHRoZSBmaWxlIGZpZWxkLgotICAgKi8KLSAgY2xhc3MgRmlsZUZpZWxkTGlzdGVuZXIgaW1wbGVtZW50cyBNb2RpZnlMaXN0ZW5lcgotICB7Ci0KLSAgICAvKgotCSAqIChub24tSmF2YWRvYykKLQkgKiAKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5TGlzdGVuZXIjbW9kaWZ5VGV4dChvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUV2ZW50KQotCSAqLwotICAgIHB1YmxpYyB2b2lkIG1vZGlmeVRleHQoTW9kaWZ5RXZlbnQgZSkKLSAgICB7Ci0gICAgICB3c2RsaW52YWxpZCA9IGZhbHNlOwotICAgICAgZ2V0Q29udGFpbmVyKCkudXBkYXRlQnV0dG9ucygpOwotCi0gICAgfQotCi0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLy5jbGFzc3BhdGggYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTU1Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjQiPgotCQk8YWNjZXNzcnVsZXM+Ci0JCQk8YWNjZXNzcnVsZSBraW5kPSJhY2Nlc3NpYmxlIiBwYXR0ZXJuPSJvcmcvYXBhY2hlL3hlcmNlcy8qKiIvPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0ib3JnL2FwYWNoZS94bWwvKioiLz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49InN1bi9taXNjL0JBU0U2NERlY29kZXIiLz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49InN1bi9taXNjL0JBU0U2NEVuY29kZXIiLz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49InN1bi9taXNjL0NoYXJhY3RlckVuY29kZXIiLz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49InN1bi9taXNjL0NoYXJhY3RlckRlY29kZXIiLz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49InN1bi9uZXQvd3d3L01lc3NhZ2VIZWFkZXIiLz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49ImphdmF4L3htbC9uYW1lc3BhY2UvUU5hbWUiLz4KLQkJPC9hY2Nlc3NydWxlcz4KLQk8L2NsYXNzcGF0aGVudHJ5PgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyI+Ci0JCTxhY2Nlc3NydWxlcz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49Im9yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wbHVnaW4vV1NQbHVnaW4iLz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49Im9yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9QZXJzaXN0ZW50V1NJQ29udGV4dCIvPgotCQk8L2FjY2Vzc3J1bGVzPgotCTwvY2xhc3NwYXRoZW50cnk+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS8uY3ZzaWdub3JlIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1YjE5OWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWJpbgotdGVtcC5mb2xkZXIKLWJ1aWxkLnhtbAotd3NpLmphcgotQGRvdAotc3JjLnppcAotamF2YUNvbXBpbGVyLi4uYXJncwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLy5wcm9qZWN0IGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzYwYzFmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53c2k8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NzAzMmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSNXZWQgTWFyIDI5IDA0OjA4OjI2IEVTVCAyMDA2Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS40Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS4zCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTkwYjQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jV2VkIE1hciAyOSAwNDowODoyNiBFU1QgMjAwNgotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWludGVybmFsLmRlZmF1bHQuY29tcGxpYW5jZT1kZWZhdWx0CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4Y2I1ZTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJV9QTFVHSU5fTkFNRQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2Uud3N0LndzaTsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjMwNS5xdWFsaWZpZXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuV1NJVGVzdFRvb2xzUGx1Z2luCi1CdW5kbGUtVmVuZG9yOiAlX1BST1ZJREVSX05BTUUKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmFuYWx5emVyO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZzt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuaW1wbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5jb21tb247eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuY29tbW9uLmltcGw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQ7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuaW1wbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2c7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLmltcGw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvcjt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZzt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5pbXBsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGU7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5pbXBsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC51ZGRpO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQ7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LmltcGw7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwueHNkO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuZG9tO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5qYXhwO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5zY2hlbWE7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmRvY3VtZW50O3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5yZXBvcnQ7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLnZhbGlkYXRlLndzZGw7eC1pbnRlcm5hbDo9dHJ1ZQotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZTtidW5kbGUtdmVyc2lvbj0iWzMuMi4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52O2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlO2J1bmRsZS12ZXJzaW9uPSJbMS4wLjEwMSwxLjEuMCkiLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24udXJpcmVzb2x2ZXI7YnVuZGxlLXZlcnNpb249IlsxLjEuMCwxLjIuMCkiLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzO2J1bmRsZS12ZXJzaW9uPSJbMy4yLjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMS4yLjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3M7YnVuZGxlLXZlcnNpb249IlsxLjAuMTAwLDIuMC4wKSIsCi0gamF2YXgud3NkbDtidW5kbGUtdmVyc2lvbj0iWzEuNS4wLDEuNi4wKSIsCi0gb3JnLnVkZGk0ajtidW5kbGUtdmVyc2lvbj0iWzIuMC40LDIuMS4wKSIsCi0gb3JnLmFwYWNoZS5heGlzO2J1bmRsZS12ZXJzaW9uPSJbMS4zLjAsMi4wLjApIiwKLSBvcmcuYXBhY2hlLnhlcmNlcztidW5kbGUtdmVyc2lvbj0iWzIuOC4wLDMuMC4wKSIsCi0gb3JnLmFwYWNoZS5jb21tb25zLmNvZGVjO2J1bmRsZS12ZXJzaW9uPSJbMS4yLjAsMi4wLjApIgotSW1wb3J0LVBhY2thZ2U6IGNvbS5pYm0uaWN1LnV0aWw7IHZlcnNpb249IjMuOCIsCi0gY29tLmlibS5pY3UudGV4dDsgdmVyc2lvbj0iMy44IgotQnVuZGxlLUFjdGl2YXRpb25Qb2xpY3k6IGxhenkKLUJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL2Fib3V0Lmh0bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL2J1aWxkLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdmMTkxZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IC4sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbAotc291cmNlLi4gPSBzcmMvCi1qYXJzLmNvbXBpbGUub3JkZXIgPSAuCi1vdXRwdXQuLiA9IGJpbi8KLXNyYy5pbmNsdWRlcyA9IGNvbXBvbmVudC54bWwsXAotICAgICAgICAgICAgICAgYnVpbGQucHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL2NvbXBvbmVudC54bWwgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvY29tcG9uZW50LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhhMmNhZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvY29tcG9uZW50LnhtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGNvbXBvbmVudCAgeG1sbnM9Imh0dHA6Ly9lY2xpcHNlLm9yZy93dHAvcmVsZW5nL3Rvb2xzL2NvbXBvbmVudC1tb2RlbCIgbmFtZT0ib3JnLmVjbGlwc2Uud3N0LndzaSI+PGRlc2NyaXB0aW9uIHVybD0iIj48L2Rlc2NyaXB0aW9uPjxjb21wb25lbnQtZGVwZW5kcyB1bnJlc3RyaWN0ZWQ9InRydWUiPjwvY29tcG9uZW50LWRlcGVuZHM+PHBsdWdpbiBpZD0ib3JnLmVjbGlwc2Uud3N0LndzaSIgZnJhZ21lbnQ9ImZhbHNlIi8+PHBsdWdpbiBpZD0ib3JnLmVjbGlwc2Uud3N0LndzaS51aSIgZnJhZ21lbnQ9ImZhbHNlIi8+PC9jb21wb25lbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3BsdWdpbi5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTJlOTZiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgICogCi0jICAqIENvbnRyaWJ1dG9yczogCi0jICAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotX1BMVUdJTl9OQU1FICAgPSBXU0kgQ29uZm9ybWFuY2UgVG9vbHMKLV9QUk9WSURFUl9OQU1FID0gRWNsaXBzZS5vcmcKLV9XU0lfVkFMSURBVE9FX05BTUUgPSBXUy1JIFZhbGlkYXRvcgotX1RFU1RfQVNTRVJUSU9OX0RPQ1VNRU5UU19OQU1FID0gVGVzdCBBc3NlcnRpb24gRG9jdW1lbnRzCi1fUkVQT1JUX0FSVElGQUNUX1RZUEVTX05BTUUgPSBSZXBvcnQgQXJ0aWZhY3QgVHlwZXMKLV9VSV9XU0RMX1dTSV9WQUxJREFUT1IgPSBXU0RMIFdTLUkgVmFsaWRhdG9yCi1fVUlfV1NJX0ZSQU1FV09SS19VRERJX1ZBTElEQVRPUiA9IFdTLUkgRnJhbWV3b3JrIFVEREkgVmFsaWRhdG9yCi1fVUlfV1NJX0ZSQU1FV09SS19XU0RMX1ZBTElEQVRPUiA9IFdTLUkgRnJhbWV3b3JrIFdTRExWYWxpZGF0b3IKLV9VSV9XU0lfRlJBTUVXT1JLX01FU1NBR0VfVkFMSURBVE9SID0gV1MtSSBGcmFtZXdvcmsgTWVzc2FnZSBWYWxpZGF0b3IKLV9VSV9XU0lfRlJBTUVXT1JLX0VOVkVMT1BFX1ZBTElEQVRPUiA9IFdTLUkgRnJhbWV3b3JrIEVudmVsb3BlIFZhbGlkYXRvcgotX1VJX1dTSV9CUF9UQURfVkVSU0lPTlMgPSBXUy1JIEJhc2ljIFByb2ZpbGUgVEFEIFZlcnNpb25zCi1fVUlfV1NJX0JQX1JFUE9SVF9BUlRJRkFDVFMgPSBXUy1JIEJhc2ljIFByb2ZpbGUgUmVwb3J0IEFydGlmYWN0cwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9wbHVnaW4ueG1sIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyM2UyZWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCEtLSAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0tLT4gCi0KLTxwbHVnaW4+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJ3c2l2YWxpZGF0b3IiIG5hbWU9IiVfV1NJX1ZBTElEQVRPRV9OQU1FIiBzY2hlbWE9InNjaGVtYS93c2l2YWxpZGF0b3IuZXhzZCIvPgotICAgPGV4dGVuc2lvbi1wb2ludCBpZD0idGFkcyIgbmFtZT0iJV9URVNUX0FTU0VSVElPTl9ET0NVTUVOVFNfTkFNRSIgc2NoZW1hPSJzY2hlbWEvdGFkcy5leHNkIi8+Ci0gICA8ZXh0ZW5zaW9uLXBvaW50IGlkPSJyZXBvcnRBcnRpZmFjdFR5cGVzIiBuYW1lPSIlX1JFUE9SVF9BUlRJRkFDVF9UWVBFU19OQU1FIiBzY2hlbWE9InNjaGVtYS9yZXBvcnRBcnRpZmFjdFR5cGVzLmV4c2QiLz4KLSAgICAgCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBpZD0id3NkbFdTSVZhbGlkYXRvciIKLSAgICAgICAgIG5hbWU9IiVfVUlfV1NETF9XU0lfVkFMSURBVE9SIgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uZXh0dmFsaWRhdG9yIj4KLSAgICAgIDxleHR2YWxpZGF0b3IKLSAgICAgICAgICAgIG5hbWVzcGFjZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC52YWxpZGF0ZS53c2RsLldTRExWYWxpZGF0b3IiPgotICAgICAgPC9leHR2YWxpZGF0b3I+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgICAgaWQ9InVkZGlWYWxpZGF0b3IiCi0gICAgICAgICAgIG5hbWU9IiVfVUlfV1NJX0ZSQU1FV09SS19VRERJX1ZBTElEQVRPUiIKLSAgICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC53c2kud3NpdmFsaWRhdG9yIj4KLSAgICAgICAgPHdzaXZhbGlkYXRvcgotICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwudWRkaS5VRERJVmFsaWRhdG9ySW1wbCIvPgotICAgPC9leHRlbnNpb24+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICAgIGlkPSJ3c2RsVmFsaWRhdG9yIgotICAgICAgICAgICBuYW1lPSIlX1VJX1dTSV9GUkFNRVdPUktfV1NETF9WQUxJREFUT1IiCi0gICAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS53c3Qud3NpLndzaXZhbGlkYXRvciI+Ci0gICAgICAgIDx3c2l2YWxpZGF0b3IKLSAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGwuV1NETFZhbGlkYXRvckltcGwiLz4KLSAgIDwvZXh0ZW5zaW9uPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgICBpZD0ibWVzc2FnZVZhbGlkYXRvciIKLSAgICAgICAgICAgbmFtZT0iJV9VSV9XU0lfRlJBTUVXT1JLX01FU1NBR0VfVkFMSURBVE9SIgotICAgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LndzaS53c2l2YWxpZGF0b3IiPgotICAgICAgICA8d3NpdmFsaWRhdG9yCi0gICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlLk1lc3NhZ2VWYWxpZGF0b3JJbXBsIi8+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgICAgaWQ9ImVudmVsb3BlVmFsaWRhdG9yIgotICAgICAgICAgICBuYW1lPSIlX1VJX1dTSV9GUkFNRVdPUktfRU5WRUxPUEVfVkFMSURBVE9SIgotICAgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LndzaS53c2l2YWxpZGF0b3IiPgotICAgICAgICA8d3NpdmFsaWRhdG9yCi0gICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5FbnZlbG9wZVZhbGlkYXRvckltcGwiLz4KLSAgIDwvZXh0ZW5zaW9uPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgICBpZD0iYnBUYWRzIgotICAgICAgICAgICBuYW1lPSIlX1VJX1dTSV9CUF9UQURTIgotICAgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2Uud3N0LndzaS50YWRzIj4KLSAgICAgICAgPHRhZAotICAgICAgICAgICBuYW1lPSJCYXNpYyBQcm9maWxlIFRlc3QgQXNzZXJ0aW9ucyIKLSAgICAgICAgICAgdmVyc2lvbj0iMS4xLjAiLz4KLSAgICAgICAgPHRhZAotICAgICAgICAgICBuYW1lPSJCYXNpYyBQcm9maWxlIDEuMSBUZXN0IEFzc2VydGlvbnMiCi0gICAgICAgICAgIHZlcnNpb249IjEuMS4wIi8+Ci0gICAgICAgIDx0YWQKLSAgICAgICAgICAgbmFtZT0iU2ltcGxlIFNvYXAgQmluZGluZyBQcm9maWxlIFsxLjBdICh3aXRoIEJhc2ljIFByb2ZpbGUgWzEuMV0pIFRlc3QgQXNzZXJ0aW9ucyIKLSAgICAgICAgICAgdmVyc2lvbj0iMS4wLjAiLz4KLSAgICAgICAgPHRhZAotICAgICAgICAgICBuYW1lPSJBdHRhY2htZW50cyBQcm9maWxlIFsxLjBdICh3aXRoIEJhc2ljIFByb2ZpbGUgWzEuMV0gYW5kIFNpbXBsZSBTb2FwIEJpbmRpbmcgUHJvZmlsZSBbMS4wXSkgVGVzdCBBc3NlcnRpb25zIgotICAgICAgICAgICB2ZXJzaW9uPSIxLjAuMCIvPgotICAgPC9leHRlbnNpb24+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICAgIGlkPSJicFJlcG9ydEFydGlmYWN0cyIKLSAgICAgICAgICAgbmFtZT0iJV9VSV9XU0lfQlBfUkVQT1JUX0FSVElGQUNUUyIKLSAgICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLndzdC53c2kucmVwb3J0QXJ0aWZhY3RUeXBlcyI+Ci0gICAgICAgIDxyZXBvcnRBcnRpZmFjdFR5cGUKLSAgICAgICAgICAgYXJ0aWZhY3RUeXBlPSJtZXNzYWdlIi8+Ci0gICA8L2V4dGVuc2lvbj4gCi08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zY2hlbWEvcmVwb3J0QXJ0aWZhY3RUeXBlcy5leHNkIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NjaGVtYS9yZXBvcnRBcnRpZmFjdFR5cGVzLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYjEyODguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NjaGVtYS9yZXBvcnRBcnRpZmFjdFR5cGVzLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LndzaSI+Ci08YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2NoZW1hIHBsdWdpbj0ib3JnLmVjbGlwc2Uud3N0LndzaSIgaWQ9InJlcG9ydEFydGlmYWN0VHlwZXMiIG5hbWU9IlJlcG9ydCBBcnRpZmFjdCBUeXBlcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGUgcmVwb3J0IGFydGlmYWN0IHR5cGUgZXh0ZW5zaW9uIHBvaW50IGFsbG93cyBjbGllbnRzIHRvIGRlbm90ZSBhcnRpZmFjdCB0eXBlcyB0aGF0IHNob3VsZCBiZSBvdXRwdXQgdG8gdGhlIGxvZyBmaWxlLgotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8ZWxlbWVudCBuYW1lPSJleHRlbnNpb24iPgotICAgICAgPGNvbXBsZXhUeXBlPgotICAgICAgICAgPHNlcXVlbmNlPgotICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJyZXBvcnRBcnRpZmFjdFR5cGUiLz4KLSAgICAgICAgIDwvc2VxdWVuY2U+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBvaW50IiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICA8YXBwSW5mbz4KLSAgICAgICAgICAgICAgICAgIDxtZXRhLmF0dHJpYnV0ZSB0cmFuc2xhdGFibGU9InRydWUiLz4KLSAgICAgICAgICAgICAgIDwvYXBwSW5mbz4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGVsZW1lbnQgbmFtZT0icmVwb3J0QXJ0aWZhY3RUeXBlIj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iYXJ0aWZhY3RUeXBlIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJzaW5jZSIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBXVFAgMi4wCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIHJlcG9ydCBhcnRpZmFjdCB0eXBlIGNvbnRyaWJ1dGlvbjoKLSZsdDtwcmUmZ3Q7Ci0mbHQ7ZXh0ZW5zaW9uCi0gICAgICAgIGlkPSZxdW90O2JwUmVwb3J0QXJ0aWZhY3RzJnF1b3Q7Ci0gICAgICAgIG5hbWU9JnF1b3Q7JV9VSV9XU0lfQlBfUkVQT1JUX0FSVElGQUNUUyZxdW90OwotICAgICAgICBwb2ludD0mcXVvdDtvcmcuZWNsaXBzZS53c3Qud3NpLnJlcG9ydEFydGlmYWN0cyZxdW90OyZndDsKLSAgICAgJmx0O3JlcG9ydEFydGlmYWN0VHlwZQotICAgICAgICBhcnRpZmFjdFR5cGU9JnF1b3Q7bWVzc2FnZSZxdW90Oy8mZ3Q7Ci0mbHQ7L2V4dGVuc2lvbiZndDsKLSZsdDsvcHJlJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJhcGlJbmZvIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIE5vIEFQSSBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBleHRlbnNpb24gcG9pbnQuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImltcGxlbWVudGF0aW9uIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIE5vIGltcGxlbWVudGF0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbiBwb2ludC4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iY29weXJpZ2h0Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zY2hlbWEvdGFkcy5leHNkIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NjaGVtYS90YWRzLmV4c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkYWJmZDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NjaGVtYS90YWRzLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0ib3JnLmVjbGlwc2Uud3N0LndzaSI+Ci08YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2NoZW1hIHBsdWdpbj0ib3JnLmVjbGlwc2Uud3N0LndzaSIgaWQ9InRhZHMiIG5hbWU9IlRlc3QgQXNzZXJ0aW9uIERvY3VtZW50cyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGUgdGFkcyBleHRlbnNpb24gcG9pbnQgYWxsb3dzIGNsaWVudHMgdG8gZGVub3RlIGFkZGl0aW9uYWwgVGVzdCBBc3NlcnRpb24gRG9jdW1lbnRzIHRoYXQgdGhleSBjYW4gaGFuZGxlLgotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8ZWxlbWVudCBuYW1lPSJleHRlbnNpb24iPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIChubyBkZXNjcmlwdGlvbiBhdmFpbGFibGUpCi0gICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICA8L2Fubm90YXRpb24+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8c2VxdWVuY2U+Ci0gICAgICAgICAgICA8ZWxlbWVudCByZWY9InRhZCIvPgotICAgICAgICAgPC9zZXF1ZW5jZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9pbnQiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcHBJbmZvPgotICAgICAgICAgICAgICAgICAgPG1ldGEuYXR0cmlidXRlIHRyYW5zbGF0YWJsZT0idHJ1ZSIvPgotICAgICAgICAgICAgICAgPC9hcHBJbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8ZWxlbWVudCBuYW1lPSJ0YWQiPgotICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIChubyBkZXNjcmlwdGlvbiBhdmFpbGFibGUpCi0gICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICA8L2Fubm90YXRpb24+Ci0gICAgICA8Y29tcGxleFR5cGU+Ci0gICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idmVyc2lvbiIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0ic2luY2UiLz4KLSAgICAgIDwvYXBwSW5mbz4KLSAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgV1RQIDIuMAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJleGFtcGxlcyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgYSBUQUQgdmVyc2lvbiBjb250cmlidXRpb246Ci0mbHQ7cHJlJmd0OwotJmx0O2V4dGVuc2lvbgotICAgICAgICBpZD0mcXVvdDticFRhZFZlcnNpb25zJnF1b3Q7Ci0gICAgICAgIG5hbWU9JnF1b3Q7JV9VSV9XU0lfQlBfVEFEX1ZFUlNJT05TJnF1b3Q7Ci0gICAgICAgIHBvaW50PSZxdW90O29yZy5lY2xpcHNlLndzdC53c2kudGFkX3ZlcnNpb25zJnF1b3Q7Jmd0OwotICAgICAmbHQ7dGFkCi0gICAgICAgIG5hbWU9JnF1b3Q7QmFzaWMgUHJvZmlsZSBUZXN0IEFzc2VydGlvbnMmcXVvdDsKLSAgICAgICAgdmVyc2lvbj0mcXVvdDsxLjEuMCZxdW90Oy8mZ3Q7Ci0mbHQ7L2V4dGVuc2lvbiZndDsKLSZsdDsvcHJlJmd0OwotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJhcGlJbmZvIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIE5vIEFQSSBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBleHRlbnNpb24gcG9pbnQuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImltcGxlbWVudGF0aW9uIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIE5vIGltcGxlbWVudGF0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbiBwb2ludC4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iY29weXJpZ2h0Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zY2hlbWEvd3NpdmFsaWRhdG9yLmV4c2QgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc2NoZW1hL3dzaXZhbGlkYXRvci5leHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjgwNTk3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zY2hlbWEvd3NpdmFsaWRhdG9yLmV4c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KLTwhLS0gU2NoZW1hIGZpbGUgd3JpdHRlbiBieSBQREUgLS0+Ci08c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iYnNwLm9yZy5lY2xpcHNlLndzdC53c2kiPgotPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNjaGVtYSBwbHVnaW49ImJzcC5vcmcuZWNsaXBzZS53c3Qud3NpIiBpZD0id3NpdmFsaWRhdG9yIiBuYW1lPSJXUy1JIFZhbGlkYXRvciIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGUgV1MtSSBWYWxpZGF0b3IgZXh0ZW5zaW9uIHBvaW50IGFsbG93cyBjbGllbnRzIHRvIGNvbnRyaWJ1dGUgYSB2YWxpZGF0b3IgdGhhdCBjYW4gdmFsaWRhdGUgZGlmZmVyZW50IFdTLUkgUHJvZmlsZXMuCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxlbGVtZW50IG5hbWU9ImV4dGVuc2lvbiI+Ci0gICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgKG5vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZSkKLSAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxzZXF1ZW5jZT4KLSAgICAgICAgICAgIDxlbGVtZW50IHJlZj0id3NpdmFsaWRhdG9yIi8+Ci0gICAgICAgICA8L3NlcXVlbmNlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwb2ludCIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgIDxhbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgPGFubm90YXRpb24+Ci0gICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgPGFwcEluZm8+Ci0gICAgICAgICAgICAgICAgICA8bWV0YS5hdHRyaWJ1dGUgdHJhbnNsYXRhYmxlPSJ0cnVlIi8+Ci0gICAgICAgICAgICAgICA8L2FwcEluZm8+Ci0gICAgICAgICAgICA8L2Fubm90YXRpb24+Ci0gICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0KLSAgIDxlbGVtZW50IG5hbWU9IndzaXZhbGlkYXRvciI+Ci0gICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgKG5vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZSkKLSAgICAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgICAgIDwvYW5ub3RhdGlvbj4KLSAgICAgIDxjb21wbGV4VHlwZT4KLSAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCI+Ci0gICAgICAgICAgICA8YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgIDxkb2N1bWVudGF0aW9uPgotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICAgICAgICAgICAgICA8YXBwSW5mbz4KLSAgICAgICAgICAgICAgICAgIDxtZXRhLmF0dHJpYnV0ZSBraW5kPSJqYXZhIiBiYXNlZE9uPSJvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuQmFzZVZhbGlkYXRvciIvPgotICAgICAgICAgICAgICAgPC9hcHBJbmZvPgotICAgICAgICAgICAgPC9hbm5vdGF0aW9uPgotICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJzaW5jZSIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBXVFAgMi4wCi0gICAgICA8L2RvY3VtZW50YXRpb24+Ci0gICA8L2Fubm90YXRpb24+Ci0KLSAgIDxhbm5vdGF0aW9uPgotICAgICAgPGFwcEluZm8+Ci0gICAgICAgICA8bWV0YS5zZWN0aW9uIHR5cGU9ImV4YW1wbGVzIi8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIFdTLUkgVmFsaWRhdG9yIGNvbnRyaWJ1dGlvbjoKLSZsdDtwcmUmZ3Q7Ci0mbHQ7ZXh0ZW5zaW9uCi0gICAgICAgIGlkPSZxdW90O21lc3NhZ2VWYWxpZGF0b3ImcXVvdDsKLSAgICAgICAgbmFtZT0mcXVvdDslX1VJX1dTSV9GUkFNRVdPUktfTUVTU0FHRV9WQUxJREFUT1ImcXVvdDsKLSAgICAgICAgcG9pbnQ9JnF1b3Q7b3JnLmVjbGlwc2Uud3N0LndzaS52YWxpZGF0b3ImcXVvdDsmZ3Q7Ci0gICAgICZsdDt3c2lfdmFsaWRhdG9yCi0gICAgICAgIGNsYXNzPSZxdW90O29yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2UuTWVzc2FnZVZhbGlkYXRvckltcGwmcXVvdDsvJmd0OwotJmx0Oy9leHRlbnNpb24mZ3Q7Ci0mbHQ7L3ByZSZndDsKLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iYXBpSW5mbyIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICBUaGUgc3VwcGxpZWQgY2xhc3MgbXVzdCBpbXBsZW1lbnQgJmx0O2NvZGUmZ3Q7b3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkJhc2VWYWxpZGF0b3ImbHQ7L2NvZGUmZ3Q7LgotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi0gICA8YW5ub3RhdGlvbj4KLSAgICAgIDxhcHBJbmZvPgotICAgICAgICAgPG1ldGEuc2VjdGlvbiB0eXBlPSJpbXBsZW1lbnRhdGlvbiIvPgotICAgICAgPC9hcHBJbmZvPgotICAgICAgPGRvY3VtZW50YXRpb24+Ci0gICAgICAgICAmbHQ7Y29kZSZndDsKLW9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2UuTWVzc2FnZVZhbGlkYXRvckltcGwKLSZsdDsvY29kZSZndDsKLUNvbnRyaWJ1dGVzIFdTLUkgdmFsaWRhdGlvbiBsb2dpYyBmb3IgdGhlIEJhc2ljIFByb2ZpbGUgdmFsaWRhdGlvbiBvZiBtZXNzYWdlcy4KLSAgICAgIDwvZG9jdW1lbnRhdGlvbj4KLSAgIDwvYW5ub3RhdGlvbj4KLQotICAgPGFubm90YXRpb24+Ci0gICAgICA8YXBwSW5mbz4KLSAgICAgICAgIDxtZXRhLnNlY3Rpb24gdHlwZT0iY29weXJpZ2h0Ii8+Ci0gICAgICA8L2FwcEluZm8+Ci0gICAgICA8ZG9jdW1lbnRhdGlvbj4KLSAgICAgICAgIAotICAgICAgPC9kb2N1bWVudGF0aW9uPgotICAgPC9hbm5vdGF0aW9uPgotCi08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9XU0lQcmVmZXJlbmNlcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL1dTSVByZWZlcmVuY2VzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0YjhkMjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL1dTSVByZWZlcmVuY2VzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsOwotCi0vKioKLSAqIFdTLUkgdGVzdCB0b29scyBwcm9wZXJ0eS4KLSAqIAotICogQGF1dGhvciBEYXZpZCBMYXV6b24sIElCTQotICoKLSAqLwotCi1wdWJsaWMgY2xhc3MgV1NJUHJlZmVyZW5jZXMKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBjb21wbGlhbmNlTGV2ZWwgPSAiIjsKLSAgcHJvdGVjdGVkIFN0cmluZyB0YWRmaWxlID0gIiI7Ci0gIAotICAvKioKLSAgICogIENvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIFdTSVByZWZlcmVuY2VzKCkKLSAgewotCWNvbXBsaWFuY2VMZXZlbCA9IFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuV0FSTl9OT05fV1NJOwotCXRhZGZpbGUgPSBXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzLkRFRkFVTFRfQVNTRVJUSU9OX0ZJTEU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBXUy1JIGNvbXBsaWFuY2UgbGV2ZWwuCi0gICAqIEByZXR1cm4gdGhlIFdTLUkgY29tcGxpYW5jZSBsZXZlbC4KLSAgICogQHNlZSAjc2V0Q29tcGxpYW5jZUxldmVsCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldENvbXBsaWFuY2VMZXZlbCgpCi0gIHsKLSAgICByZXR1cm4gY29tcGxpYW5jZUxldmVsOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCB0aGUgV1MtSSBjb21wbGlhbmNlIGxldmVsLgotICAgKiBAcGFyYW0gY29tcGxpYW5jZSB0aGUgV1MtSSBjb21wbGlhbmNlIGxldmVsLgotICAgKiBAc2VlICNnZXRDb21wbGlhbmNlTGV2ZWwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENvbXBsaWFuY2VMZXZlbChTdHJpbmcgY29tcGxpYW5jZSkKLSAgewotICAgIHRoaXMuY29tcGxpYW5jZUxldmVsID0gY29tcGxpYW5jZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBsb2NhdGlvbiBvZiB0aGUgQmFzaWMgUHJvZmlsZSBUZXN0IEFzc2VydGlvbnMgZmlsZS4KLSAgICogQHJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIEJhc2ljIFByb2ZpbGUgVGVzdCBBc3NlcnRpb25zIGZpbGUuCi0gICAqIEBzZWUgI3NldFRBREZpbGUKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VEFERmlsZSgpCi0gIHsKLSAgICByZXR1cm4gdGFkZmlsZTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBCYXNpYyBQcm9maWxlIFRlc3QgQXNzZXJ0aW9ucyBmaWxlLgotICAgKiBAcGFyYW0gZmlsZSB0aGUgbG9jYXRpb24gb2YgdGhlIEJhc2ljIFByb2ZpbGUgVGVzdCBBc3NlcnRpb25zIGZpbGUuCi0gICAqIEBzZWUgI2dldFRBREZpbGUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRBREZpbGUoU3RyaW5nIGZpbGUpCi0gIHsKLSAgICB0aGlzLnRhZGZpbGUgPSBmaWxlOwotICB9Ci19Ci0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9XU0lUZXN0VG9vbHNFY2xpcHNlUHJvcGVydGllcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL1dTSVRlc3RUb29sc0VjbGlwc2VQcm9wZXJ0aWVzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYWM2NjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL1dTSVRlc3RUb29sc0VjbGlwc2VQcm9wZXJ0aWVzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi51cmlyZXNvbHZlci5pbnRlcm5hbC5wcm92aXNpb25hbC5VUklSZXNvbHZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnVyaXJlc29sdmVyLmludGVybmFsLnByb3Zpc2lvbmFsLlVSSVJlc29sdmVyUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lDb250ZXh0OwotCi0vKioKLSAqIFdTLUkgdGVzdCB0b29sIHByb3BlcnRpZXMgc3BlY2lmaWMgZm9yIEVjbGlwc2UuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0lUZXN0VG9vbHNFY2xpcHNlUHJvcGVydGllcyBleHRlbmRzIFdTSVRlc3RUb29sc1Byb3BlcnRpZXMKLXsKLSAvKioKLSAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuV1NJVGVzdFRvb2xzUHJvcGVydGllcyNjaGVja1dTSVByZWZlcmVuY2VzKGphdmEubGFuZy5TdHJpbmcpCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgV1NJUHJlZmVyZW5jZXMgY2hlY2tXU0lQcmVmZXJlbmNlcyhTdHJpbmcgZmlsZXVyaSkKLSAgewotCS8vIENhY2hlIHRoZSBXUy1JIHRhZHMuCi0JY2FjaGVUQURGaWxlcygpOwotCQotICAgIFdTSVByZWZlcmVuY2VzIHByZWZlcmVuY2VzID0gbmV3IFdTSVByZWZlcmVuY2VzKCk7Ci0gICAgLy8gUmVtb3ZlIGZpbGU6IGFuZCBhbnkgc2xhc2hlcyBmcm9tIHRoZSBmaWxldXJpLiAKLSAgICAvLyBFY2xpcHNlJ3MgcmVzb2x1dGlvbiBtZWNoYW5pc20gbmVlZHMgdG8gc3RhcnQgd2l0aCB0aGUgZHJpdmUuCi0gICAgU3RyaW5nIHVyaVN0ciA9IHRyaW1VUkkoZmlsZXVyaSk7Ci0KLSAgICBQZXJzaXN0ZW50V1NJQ29udGV4dCBBUGNvbnRleHQgPSBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFdTSUFQQ29udGV4dCgpOwotICAgIFBlcnNpc3RlbnRXU0lDb250ZXh0IFNTQlBjb250ZXh0ID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRXU0lTU0JQQ29udGV4dCgpOwotICAgIAotICAgIElGaWxlW10gZmlsZXMgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmZpbmRGaWxlc0ZvckxvY2F0aW9uKG5ldyBQYXRoKHVyaVN0cikpOwotICAgIGlmIChmaWxlcyAhPSBudWxsICYmIGZpbGVzLmxlbmd0aCA9PSAxKQotICAgIHsKLSAgICAgIC8vY2hlY2sgcHJvamVjdCBsZXZlbCBjb21wbGlhbmNlCi0gICAgICBJUHJvamVjdCBwcm9qZWN0ID0gZmlsZXNbMF0uZ2V0UHJvamVjdCgpOwotICAgICAgCi0gICAgICBpZiAoQVBjb250ZXh0LnByb2plY3RTdG9wTm9uV1NJQ29tcGxpYW5jZXMocHJvamVjdCkpCi0gICAgICB7Ci0gICAgICAgIHByZWZlcmVuY2VzLnNldFRBREZpbGUoQVBfQVNTRVJUSU9OX0ZJTEUpOwotICAgICAgICBwcmVmZXJlbmNlcy5zZXRDb21wbGlhbmNlTGV2ZWwoUGVyc2lzdGVudFdTSUNvbnRleHQuU1RPUF9OT05fV1NJKTsKLSAgICAgIH0gCi0gICAgICBlbHNlIGlmIChBUGNvbnRleHQucHJvamVjdFdhcm5Ob25XU0lDb21wbGlhbmNlcyhwcm9qZWN0KSkKLSAgICAgIHsKLSAgICAgICAgcHJlZmVyZW5jZXMuc2V0VEFERmlsZShBUF9BU1NFUlRJT05fRklMRSk7Ci0gICAgICAgIHByZWZlcmVuY2VzLnNldENvbXBsaWFuY2VMZXZlbChQZXJzaXN0ZW50V1NJQ29udGV4dC5XQVJOX05PTl9XU0kpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoU1NCUGNvbnRleHQucHJvamVjdFN0b3BOb25XU0lDb21wbGlhbmNlcyhwcm9qZWN0KSkKLSAgICAgIHsKLSAgICAgICAgcHJlZmVyZW5jZXMuc2V0VEFERmlsZShTU0JQX0FTU0VSVElPTl9GSUxFKTsKLSAgICAgICAgcHJlZmVyZW5jZXMuc2V0Q29tcGxpYW5jZUxldmVsKFBlcnNpc3RlbnRXU0lDb250ZXh0LlNUT1BfTk9OX1dTSSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChTU0JQY29udGV4dC5wcm9qZWN0V2Fybk5vbldTSUNvbXBsaWFuY2VzKHByb2plY3QpKQotICAgICAgewotICAgICAgICBwcmVmZXJlbmNlcy5zZXRUQURGaWxlKFNTQlBfQVNTRVJUSU9OX0ZJTEUpOwotICAgICAgICBwcmVmZXJlbmNlcy5zZXRDb21wbGlhbmNlTGV2ZWwoUGVyc2lzdGVudFdTSUNvbnRleHQuV0FSTl9OT05fV1NJKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcHJlZmVyZW5jZXMuc2V0VEFERmlsZShERUZBVUxUX0FTU0VSVElPTl9GSUxFKTsKLSAgICAgICAgcHJlZmVyZW5jZXMuc2V0Q29tcGxpYW5jZUxldmVsKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIElmIHdlIGNhbid0IG9idGFpbiB0aGUgcHJvamVjdCBwcmVmZXJlbmNlIHVzZSB0aGUgZ2xvYmFsIHByZWZlcmVuY2UuCi0gICAgICBTdHJpbmcgQVBsZXZlbCA9IEFQY29udGV4dC5nZXRQZXJzaXN0ZW50V1NJQ29tcGxpYW5jZSgpOwotICAgICAgU3RyaW5nIFNTQlBsZXZlbCA9IFNTQlBjb250ZXh0LmdldFBlcnNpc3RlbnRXU0lDb21wbGlhbmNlKCk7Ci0gICAgICBpZihBUGxldmVsLmVxdWFscyhQZXJzaXN0ZW50V1NJQ29udGV4dC5TVE9QX05PTl9XU0kpKQotICAgICAgewotICAgICAgICBwcmVmZXJlbmNlcy5zZXRUQURGaWxlKEFQX0FTU0VSVElPTl9GSUxFKTsKLSAgICAgICAgcHJlZmVyZW5jZXMuc2V0Q29tcGxpYW5jZUxldmVsKFBlcnNpc3RlbnRXU0lDb250ZXh0LlNUT1BfTk9OX1dTSSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKEFQbGV2ZWwuZXF1YWxzKFBlcnNpc3RlbnRXU0lDb250ZXh0LldBUk5fTk9OX1dTSSkpCi0gICAgICB7Ci0gICAgICAgIHByZWZlcmVuY2VzLnNldFRBREZpbGUoQVBfQVNTRVJUSU9OX0ZJTEUpOwotICAgICAgICBwcmVmZXJlbmNlcy5zZXRDb21wbGlhbmNlTGV2ZWwoUGVyc2lzdGVudFdTSUNvbnRleHQuV0FSTl9OT05fV1NJKTsKLSAgICAgfQotICAgICBpZihTU0JQbGV2ZWwuZXF1YWxzKFBlcnNpc3RlbnRXU0lDb250ZXh0LlNUT1BfTk9OX1dTSSkpCi0gICAgIHsKLSAgICAgICBwcmVmZXJlbmNlcy5zZXRUQURGaWxlKFNTQlBfQVNTRVJUSU9OX0ZJTEUpOwotICAgICAgIHByZWZlcmVuY2VzLnNldENvbXBsaWFuY2VMZXZlbChQZXJzaXN0ZW50V1NJQ29udGV4dC5TVE9QX05PTl9XU0kpOwotICAgICB9Ci0gICAgIGVsc2UgaWYoU1NCUGxldmVsLmVxdWFscyhQZXJzaXN0ZW50V1NJQ29udGV4dC5XQVJOX05PTl9XU0kpKQotICAgICB7Ci0gICAgICBwcmVmZXJlbmNlcy5zZXRUQURGaWxlKFNTQlBfQVNTRVJUSU9OX0ZJTEUpOwotICAgICAgICBwcmVmZXJlbmNlcy5zZXRDb21wbGlhbmNlTGV2ZWwoUGVyc2lzdGVudFdTSUNvbnRleHQuV0FSTl9OT05fV1NJKTsKLSAgICAgfQotICAgICBlbHNlCi0gICAgIHsKLSAgICAgICAgcHJlZmVyZW5jZXMuc2V0VEFERmlsZShERUZBVUxUX0FTU0VSVElPTl9GSUxFKTsKLSAgICAgICAgcHJlZmVyZW5jZXMuc2V0Q29tcGxpYW5jZUxldmVsKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHByZWZlcmVuY2VzOwotICB9Ci0gIAotICBwcm90ZWN0ZWQgc3RhdGljIHZvaWQgY2FjaGVUQURGaWxlcygpCi0gIHsKLQkgIFN0cmluZyByZXN1bHRBUCA9IGNhY2hlRmlsZShBUF9BU1NFUlRJT05fRklMRSk7Ci0JICBpZihyZXN1bHRBUCAhPSBudWxsKQotCSAgewotCQkgIEFQX0FTU0VSVElPTl9GSUxFID0gcmVzdWx0QVA7Ci0JICB9Ci0JICAKLQkgIFN0cmluZyByZXN1bHRTU0JQID0gY2FjaGVGaWxlKFNTQlBfQVNTRVJUSU9OX0ZJTEUpOwotCSAgaWYocmVzdWx0U1NCUCAhPSBudWxsKQotCSAgewotCQkgIFNTQlBfQVNTRVJUSU9OX0ZJTEUgPSByZXN1bHRTU0JQOwotCSAgfQotICB9Ci0gIAotICBwcm90ZWN0ZWQgc3RhdGljIFN0cmluZyBjYWNoZUZpbGUoU3RyaW5nIHVyaSkKLSAgewotCSAgVVJJUmVzb2x2ZXIgcmVzb2x2ZXIgPSBnZXRVUklSZXNvbHZlcigpOwotCSAgU3RyaW5nIHJlc29sdmVkVXJpID0gcmVzb2x2ZXIucmVzb2x2ZSgiIiwgbnVsbCwgdXJpKTsKLQkgIHJldHVybiByZXNvbHZlci5yZXNvbHZlUGh5c2ljYWxMb2NhdGlvbigiIiwgbnVsbCwgcmVzb2x2ZWRVcmkpOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBVUkkgcmVzb2x2ZXIgdG8gdXNlIGZvciBXUy1JIHZhbGlkYWl0b24uCi0gICAqIAotICAgKiBAcmV0dXJuCi0gICAqIAkJVGhlIFVSSSByZXNvbHZlciB0byB1c2UgZm9yIFdTLUkgdmFsaWRhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgVVJJUmVzb2x2ZXIgZ2V0VVJJUmVzb2x2ZXIoKQotICB7Ci0JICByZXR1cm4gVVJJUmVzb2x2ZXJQbHVnaW4uY3JlYXRlUmVzb2x2ZXIoKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvV1NJVGVzdFRvb2xzUGx1Z2luLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvV1NJVGVzdFRvb2xzUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMGRhZTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL1dTSVRlc3RUb29sc1BsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblBvaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JRXh0ZW5zaW9uUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkJhc2VWYWxpZGF0b3I7Ci0KLS8qKgotICogVGhlIFdTLUkgdGVzdCB0b29scyBwbHVnaW4uCi0gKiAKLSAqIEBhdXRob3IgbGF1em9uZAotICovCi0KLXB1YmxpYyBjbGFzcyBXU0lUZXN0VG9vbHNQbHVnaW4gZXh0ZW5kcyBQbHVnaW4KLXsKLSAgcHJpdmF0ZSBzdGF0aWMgUGx1Z2luIGluc3RhbmNlOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIFBMVUdJTl9QUk9QRVJUSUVTID0gIndzaXZhbGlkYXRlIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gIm9yZy5lY2xpcHNlLndzdC53c2kiOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBWQUxJREFUT1JfRVhUX0lEID0gUExVR0lOX0lEICsgIi53c2l2YWxpZGF0b3IiOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBUQURfVkVSU0lPTl9FWFRfSUQgPSBQTFVHSU5fSUQgKyAiLnRhZHMiOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBSRVBPUlRfQVJUSUZBQ1RfVFlQRVNfRVhUX0lEID0gUExVR0lOX0lEICsgIi5yZXBvcnRBcnRpZmFjdFR5cGVzIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUX0NMQVNTID0gImNsYXNzIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUX1RBRF9OQU1FID0gIm5hbWUiOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRfVEFEX1ZFUlNJT04gPSAidmVyc2lvbiI7Ci0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVF9BUlRJRkFDVF9UWVBFID0gImFydGlmYWN0VHlwZSI7Ci0KLSAgLyogSG9sZHMgdmFsaWRhdG9ycyByZWFkIGZyb20gdGhlIHBsYXRmb3JtIHJlZ2lzdHJ5LiAgTGF6eSBpbml0aWFsaXplZCBpbgotICAgKiBjb21wdXRlVmFsaWRhdG9ycygpLiAgKi8KLSAgcHJpdmF0ZSBCYXNlVmFsaWRhdG9yIHZhbGlkYXRvcnNbXTsKLQotICAvKiBIb2xkcyBhcnJheXMgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCBUZXN0IEFzc2VydGlvbiBkb2N1bWVudCAoVEFEKQotICAgKiB2ZXJzaW9ucyByZWFkIGZyb20gdGhlIHBsYXRmb3JtIHJlZ2lzdHJ5LiAgRWFjaCBhcnJheSBoYXMgdHdvIGVsZW1lbnRzOgotICAgKiAgIDA6IHRoZSBUQUQgbmFtZQotICAgKiAgIDE6IHRoZSBUQUQgdmVyc2lvbiBzdHJpbmcKLSAgICogTGF6eSBpbml0aWFsaXplZCBpbiBjb21wdXRlVEFEVmVyc2lvbnMoKS4gICovCi0gIHByaXZhdGUgU3RyaW5nIHRhZFZlcnNpb25zW11bXTsKLQotICAvKiBIb2xkcyBhcnRpZmFjdCB0eXBlIG5hbWVzIGZvciByZXBvcnRpbmcgcmVhZCBmcm9tIHRoZSBwbGF0Zm9ybSByZWdpc3RyeS4KLSAgICogTGF6eSBpbml0aWFsaXplZCBpbiBnZXRBbGxSZXBvcnRBcnRpZmFjdFR5cGVzKCkuICAqLwotICBwcml2YXRlIFN0cmluZyByZXBvcnRBcnRpZmFjdFR5cGVzW107Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciB3c2lUZXN0VG9vbHNQbHVnaW4uCi0gICAqIEBwYXJhbSBkZXNjcmlwdG9yIGFuIElQbHVnaW5EZXNjcmlwdG9yIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0lUZXN0VG9vbHNQbHVnaW4oKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgICBpbnN0YW5jZSA9IHRoaXM7Ci0KLSAgICAvLyBzZXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5Ci0gICBXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzLnNldEVjbGlwc2VDb250ZXh0KHRydWUpOwotICAgLy9yZXNvdXJjZWJ1bmRsZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShQTFVHSU5fUFJPUEVSVElFUyk7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGdldEluc3RhbmNlLgotICAgKiBAcmV0dXJuIEFic3RyYWN0VUlQbHVnaW4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgUGx1Z2luIGdldEluc3RhbmNlKCkKLSAgewotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotCi0gICAvKioKLSAgICogTWV0aG9kIGdldFBsdWdpbi4KLSAgICogQHJldHVybiBXU0lUb29sc1V0aWxQbHVnaW4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgV1NJVGVzdFRvb2xzUGx1Z2luIGdldFBsdWdpbigpCi0gIHsKLSAgICByZXR1cm4gKFdTSVRlc3RUb29sc1BsdWdpbikgaW5zdGFuY2U7Ci0gIH0KLQotICAvKiBDb21wdXRlcyB0aGUgbGlzdCBvZiB2YWxpZGF0b3JzIGJ5IHNjYW5uaW5nIHRoZSBwbGF0Zm9ybSByZWdpc3RyeS4gKi8KLSAgcHJpdmF0ZSBCYXNlVmFsaWRhdG9yW10gY29tcHV0ZVZhbGlkYXRvcnMoKSB7Ci0gICAgICBJRXh0ZW5zaW9uUmVnaXN0cnkgcmVnaXN0cnkgPSBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOwotICAgICAgSUV4dGVuc2lvblBvaW50IGV4dGVuc2lvblBvaW50ID0gcmVnaXN0cnkuZ2V0RXh0ZW5zaW9uUG9pbnQoCi0gICAgICAgICAgICAgIFZBTElEQVRPUl9FWFRfSUQpOwotICAgICAgSUV4dGVuc2lvbltdIGV4dGVuc2lvbnMgPSBleHRlbnNpb25Qb2ludC5nZXRFeHRlbnNpb25zKCk7Ci0gICAgICBBcnJheUxpc3QgcmVzdWx0cyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5sZW5ndGg7IGkrKykgewotICAgICAgICAgIC8qIE9ubHkgb25lIHZhbGlkYXRvciBwZXIgZXh0ZW5zaW9uIHBvaW50ICovCi0gICAgICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IHZhbGlkYXRvckVsZW1lbnQgPSBleHRlbnNpb25zW2ldLgotICAgICAgICAgICAgICAgICAgZ2V0Q29uZmlndXJhdGlvbkVsZW1lbnRzKClbMF07Ci0gICAgICAgICAgQmFzZVZhbGlkYXRvciB2YWxpZGF0b3IgPSBudWxsOwotICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgIHZhbGlkYXRvciA9IChCYXNlVmFsaWRhdG9yKSB2YWxpZGF0b3JFbGVtZW50LgotICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oQVRUX0NMQVNTKTsKLSAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkgewotICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgICAgIH0KLSAgICAgICAgICByZXN1bHRzLmFkZCh2YWxpZGF0b3IpOwotICAgICAgfQotICAgICAgcmV0dXJuIChCYXNlVmFsaWRhdG9yW10pIHJlc3VsdHMudG9BcnJheShuZXcgQmFzZVZhbGlkYXRvclswXSk7Ci0gIH0KLQotICAvKioKLSAgICogRmluZCBhbGwgdmFsaWRhdG9ycyBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gcmVnaXN0cnkgZXh0ZW5zaW9uIHBvaW50cwotICAgKiBvcmcuZWNsaXBzZS53c3Qud3NpLnZhbGlkYXRvci4KLSAgICogQHJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZXNlIHZhbGlkYXRvcnMKLSAgICovCi0gIHB1YmxpYyBCYXNlVmFsaWRhdG9yW10gZ2V0QmFzZVZhbGlkYXRvcnMoKSAKLSAgewotCWlmICh2YWxpZGF0b3JzID09IG51bGwpCi0JICB2YWxpZGF0b3JzID0gY29tcHV0ZVZhbGlkYXRvcnMoKTsKLSAgICByZXR1cm4gdmFsaWRhdG9yczsgIAotICB9Ci0KLSAgLyoqCi0gICAqIFNjYW4gYWxsIHZhbGlkYXRvcnMgZm91bmQgaW4gdGhlIHBsYXRmb3JtIHJlZ2lzdHJ5IGZvciBzdXBwb3J0ZWQgYXJ0aWZhY3QKLSAgICogdHlwZXMuCi0gICAqIEByZXR1cm4gYW4gYXJyYXkgb2YgYXJ0aWZhY3QgdHlwZSBuYW1lcyAoU3RyaW5ncykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRBcnRpZmFjdFR5cGVzKCkgewotICAgICAgaWYgKHZhbGlkYXRvcnMgPT0gbnVsbCkKLSAgICAgICAgIGdldEJhc2VWYWxpZGF0b3JzKCk7Ci0gICAgICBTdHJpbmcgYXJ0aWZhY3RUeXBlc1tdID0gbmV3IFN0cmluZ1t2YWxpZGF0b3JzLmxlbmd0aF07Ci0gICAgICAKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsaWRhdG9ycy5sZW5ndGg7IGkrKykKLSAgICAgICAgICBhcnRpZmFjdFR5cGVzW2ldID0gdmFsaWRhdG9yc1tpXS5nZXRBcnRpZmFjdFR5cGUoKTsKLSAgICAgIHJldHVybiBhcnRpZmFjdFR5cGVzOwotICB9Ci0gIAotICAvKiBDb21wdXRlcyB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgVEFEIHZlcnNpb25zIGJ5IHNjYW5uaW5nIHRoZSBwbGF0Zm9ybSAKLSAgICogcmVnaXN0cnkuICBTZWUgY29tbWVudCBmb3IgdGFkVmVyc2lvbnMgaW5zdCB2YXIgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlCi0gICAqIHJldHVybiB0eXBlLiAqLwotICBwcml2YXRlIFN0cmluZ1tdW10gY29tcHV0ZVRBRFZlcnNpb25zKCkgewotICAgICAgSUV4dGVuc2lvblJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLSAgICAgIElFeHRlbnNpb25Qb2ludCBleHRlbnNpb25Qb2ludCA9IHJlZ2lzdHJ5LmdldEV4dGVuc2lvblBvaW50KAotICAgICAgICAgICAgICBUQURfVkVSU0lPTl9FWFRfSUQpOwotICAgICAgSUV4dGVuc2lvbltdIGV4dGVuc2lvbnMgPSBleHRlbnNpb25Qb2ludC5nZXRFeHRlbnNpb25zKCk7Ci0gICAgICBBcnJheUxpc3QgcmVzdWx0cyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5sZW5ndGg7IGkrKykgewotCi0gICAgICAgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50IHZlcnNpb25FbGVtZW50c1tdID0gZXh0ZW5zaW9uc1tpXS4KLSAgICAgICAgICAgICAgICAgIGdldENvbmZpZ3VyYXRpb25FbGVtZW50cygpOwotICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdmVyc2lvbkVsZW1lbnRzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICAgIFN0cmluZyBuYW1lVmVyc2lvbltdID0gbmV3IFN0cmluZ1syXTsKLSAgICAgICAgICAgICAgbmFtZVZlcnNpb25bMF0gPSB2ZXJzaW9uRWxlbWVudHNbal0uZ2V0QXR0cmlidXRlKEFUVF9UQURfTkFNRSk7Ci0gICAgICAgICAgICAgIG5hbWVWZXJzaW9uWzFdID0gdmVyc2lvbkVsZW1lbnRzW2pdLmdldEF0dHJpYnV0ZShBVFRfVEFEX1ZFUlNJT04pOwotICAgICAgICAgICAgICByZXN1bHRzLmFkZChuYW1lVmVyc2lvbik7Ci0gICAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIChTdHJpbmdbXVtdKSByZXN1bHRzLnRvQXJyYXkobmV3IFN0cmluZ1swXVswXSk7Ci0gIH0KLQotICAvKioKLSAgICogRmluZCBhbGwgVEFEIHZlcnNpb25zIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSByZWdpc3RyeSBleHRlbnNpb24gcG9pbnRzCi0gICAqIG9yZy5lY2xpcHNlLndzdC53c2kudGFkX3ZlcnNpb25zLgotICAgKiAKLSAgICogQHJldHVybiBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBhIHR3byBlbGVtZW50IGFycmF5cyB0aGF0IGRlc2NyaWJlcwotICAgKiBvbmUgVEFEIHZlcnNpb246Ci0gICAqICAgZWxlbWVudCAwOiB0aGUgVEFEIG5hbWUKLSAgICogICBlbGVtZW50IDE6IHRoZSBUQUQgdmVyc2lvbiBzdHJpbmcKLSAgICovCi0gIHB1YmxpYyBTdHJpbmdbXVtdIGdldEFsbFRBRFZlcnNpb25zKCkgCi0gIHsKLQlpZiAodGFkVmVyc2lvbnMgPT0gbnVsbCkKLQkgIHRhZFZlcnNpb25zID0gY29tcHV0ZVRBRFZlcnNpb25zKCk7Ci0gICAgcmV0dXJuIHRhZFZlcnNpb25zOyAgCi0gIH0KLSAgCi0gIC8qIENvbXB1dGVzIHRoZSBsaXN0IG9mIGFydGlmYWN0IHR5cGVzIGJ5IHNjYW5uaW5nIHRoZSBwbGF0Zm9ybSByZWdpc3RyeS4gKi8KLSAgcHJpdmF0ZSBTdHJpbmdbXSBjb21wdXRlUmVwb3J0QXJ0aWZhY3RUeXBlcygpIAotICB7Ci0gICAgSUV4dGVuc2lvblJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLSAgICBJRXh0ZW5zaW9uUG9pbnQgZXh0ZW5zaW9uUG9pbnQgPSByZWdpc3RyeS5nZXRFeHRlbnNpb25Qb2ludChSRVBPUlRfQVJUSUZBQ1RfVFlQRVNfRVhUX0lEKTsKLSAgICBJRXh0ZW5zaW9uW10gZXh0ZW5zaW9ucyA9IGV4dGVuc2lvblBvaW50LmdldEV4dGVuc2lvbnMoKTsKLSAgICBBcnJheUxpc3QgcmVzdWx0cyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuc2lvbnMubGVuZ3RoOyBpKyspIAotICAgIHsKLSAgICAgIElDb25maWd1cmF0aW9uRWxlbWVudCByZXBvcnRBcnRpZmFjdEVsZW1lbnRzW10gPSBleHRlbnNpb25zW2ldLmdldENvbmZpZ3VyYXRpb25FbGVtZW50cygpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByZXBvcnRBcnRpZmFjdEVsZW1lbnRzLmxlbmd0aDsgaisrKSAKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHJlcG9ydEFydGlmYWN0ID0gcmVwb3J0QXJ0aWZhY3RFbGVtZW50c1tqXS5nZXRBdHRyaWJ1dGUoQVRUX0FSVElGQUNUX1RZUEUpOwotICAgICAgICByZXN1bHRzLmFkZChyZXBvcnRBcnRpZmFjdCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiAoU3RyaW5nW10pIHJlc3VsdHMudG9BcnJheShuZXcgU3RyaW5nWzBdKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEZpbmQgYWxsIHJlcG9ydCBhcnRpZmFjdCB0eXBlcyB0YWdzIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSByZWdpc3RyeQotICAgKiBleHRlbnNpb24gcG9pbnRzIG9yZy5lY2xpcHNlLndzdC53c2kucmVwb3J0QXJ0aWZhY3RUeXBlcy4KLSAgICogQHJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZXNlIFN0cmluZ3MKLSAgICovCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRBbGxSZXBvcnRBcnRpZmFjdFR5cGVzKCkgCi0gIHsKLSAgICBpZiAocmVwb3J0QXJ0aWZhY3RUeXBlcyA9PSBudWxsKQotICAgICAgICByZXBvcnRBcnRpZmFjdFR5cGVzID0gY29tcHV0ZVJlcG9ydEFydGlmYWN0VHlwZXMoKTsKLSAgICByZXR1cm4gcmVwb3J0QXJ0aWZhY3RUeXBlczsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL1dTSVRlc3RUb29sc1Byb3BlcnRpZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9XU0lUZXN0VG9vbHNQcm9wZXJ0aWVzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMDMzNDAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL1dTSVRlc3RUb29sc1Byb3BlcnRpZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9uczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9uc1JlYWRlcjsKLQotLyoqCi0gKiBXUy1JIHRlc3QgdG9vbHMgcHJvcGVydHkuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzCi17Ci0gIHByb3RlY3RlZCBzdGF0aWMgU3RyaW5nIGluc3RhbGxVUkwgPSAiIjsKLSAgcHJvdGVjdGVkIHN0YXRpYyBTdHJpbmcgdGFkZmlsZSA9ICIiOwotCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIHNjaGVtYURpciA9ICJjb21tb24vc2NoZW1hcy8iOwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBTU0JQX0FTU0VSVElPTl9GSUxFID0gImh0dHA6Ly93d3cud3MtaS5vcmcvVGVzdGluZy9Ub29scy8yMDA1LzAxL1NTQlAxMF9CUDExX1RBRF8xLTAueG1sIjsKLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgQVBfQVNTRVJUSU9OX0ZJTEUgPSAiaHR0cDovL3d3dy53cy1pLm9yZy9UZXN0aW5nL1Rvb2xzLzIwMDQvMTIvQVAxMF9CUDExX1NTQlAxMF9UQUQueG1sIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgREVGQVVMVF9BU1NFUlRJT05fRklMRSA9IEFQX0FTU0VSVElPTl9GSUxFOwotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RPUF9OT05fV1NJID0gIjAiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXQVJOX05PTl9XU0kgPSAiMSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElHTk9SRV9OT05fV1NJID0gIjIiOwotICAKLSAgcHJvdGVjdGVkIHN0YXRpYyBib29sZWFuIGVjbGlwc2VDb250ZXh0ID0gZmFsc2U7Ci0gIHByb3RlY3RlZCBzdGF0aWMgTWFwIHVyaVRvQXNzZXJ0aW9uc01hcCA9IG5ldyBIYXNoTWFwKCk7Ci0gIHByb3RlY3RlZCBzdGF0aWMgRG9jdW1lbnRGYWN0b3J5IGRvY3VtZW50RmFjdG9yeSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqICBDb25zdHJ1Y3Rvci4KLSAgICovCi0gIHByb3RlY3RlZCBXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRFY2xpcHNlQ29udGV4dChib29sZWFuIGVjbGlwc2VBY3RpdmUpCi0gIHsKLSAgICBlY2xpcHNlQ29udGV4dCA9IGVjbGlwc2VBY3RpdmU7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBnZXRFY2xpcHNlQ29udGV4dCgpCi0gIHsKLSAgICByZXR1cm4gZWNsaXBzZUNvbnRleHQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDaGVja3MgdGhlIFdTLUkgcHJlZmVyZW5jZXMgZm9yIHRoZSBnaXZlbiBmaWxlIGFuZCByZXR1cm4gdGhlbSBpbiBhCi0gICAqIFdTSVByZWZlcmVuY2VzIG9iamVjdC4KLSAgICogCi0gICAqIEBwYXJhbSBmaWxldXJpIFRoZSBmaWxlIFVSSSB0byBjaGVjayB0aGUgV1MtSSBwcmVmZXJlbmNlcyBmb3IuCi0gICAqIEByZXR1cm4gQSBXU0lQcmVmZXJlbmNlcyBvYmplY3QgY29udGFpbmluZyB0aGUgcHJlZmVyZW5jZSBmb3IgdGhpcyBmaWxlIFVSSS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgV1NJUHJlZmVyZW5jZXMgY2hlY2tXU0lQcmVmZXJlbmNlcyhTdHJpbmcgZmlsZXVyaSkKLSAgewotICAJcmV0dXJuIG5ldyBXU0lQcmVmZXJlbmNlcygpOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0aGUgcHJvZmlsZSBhc3NlcnRpb25zIGxvY2F0ZWQgYXQgdGhlIGdpdmVuIFVSSS4KLSAgICogQHBhcmFtIGFzc2VydGlvbnNVUkkgIHRoZSBsb2NhdGlvbiBvZiB0aGUgVEFELgotICAgKiBAcmV0dXJuIHRoZSBwcm9maWxlIGFzc2VydGlvbnMgbG9jYXRlZCBhdCB0aGUgZ2l2ZW4gVVJJLgotICogQHRocm93cyBXU0lFeGNlcHRpb24gCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFByb2ZpbGVBc3NlcnRpb25zIGdldFByb2ZpbGVBc3NlcnRpb25zKFN0cmluZyBhc3NlcnRpb25zVVJJKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQkgUHJvZmlsZUFzc2VydGlvbnMgcmVzdWx0ID0gbnVsbDsKLQkgaWYgKGFzc2VydGlvbnNVUkkgIT0gbnVsbCkKLQkgewotCSAgIHRyeQotCSAgIHsKLQkgICAgIGlmICh1cmlUb0Fzc2VydGlvbnNNYXAuY29udGFpbnNLZXkoYXNzZXJ0aW9uc1VSSSkpCi0JCSAgIHJlc3VsdCA9IChQcm9maWxlQXNzZXJ0aW9ucyl1cmlUb0Fzc2VydGlvbnNNYXAuZ2V0KGFzc2VydGlvbnNVUkkpOwotCSAgICAgZWxzZQotCSAgICAgewotCSAgICAgICAvLyBSZWFkIHByb2ZpbGUgYXNzZXJ0aW9ucwotCSAgICAgICBpZiAoZG9jdW1lbnRGYWN0b3J5ID09IG51bGwpCi0JICAgIAkgICBkb2N1bWVudEZhY3RvcnkgPSBEb2N1bWVudEZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLQkgICAgICAgUHJvZmlsZUFzc2VydGlvbnNSZWFkZXIgcHJvZmlsZUFzc2VydGlvbnNSZWFkZXIgPSBkb2N1bWVudEZhY3RvcnkubmV3UHJvZmlsZUFzc2VydGlvbnNSZWFkZXIoKTsKLQkgICAgICAgcmVzdWx0ID0gcHJvZmlsZUFzc2VydGlvbnNSZWFkZXIucmVhZFByb2ZpbGVBc3NlcnRpb25zKGFzc2VydGlvbnNVUkkpOwotICAgICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpCi0gICAgICAgICAgIHsKLSAgICAgICAgCSB1cmlUb0Fzc2VydGlvbnNNYXAucHV0KGFzc2VydGlvbnNVUkksIHJlc3VsdCk7Ci0gICAgICAgICAgIH0KLQkgICAgIH0KLQkgICB9Ci0JICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCSAgIHsKLQkJIHJlc3VsdCA9IG51bGw7Ci0JICAgfQotCSB9Ci0JIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZW1vdmUgZmlsZTogYW5kIGFueSBzbGFzaGVzIGZyb20gdGhlIGZpbGV1cmkuIAotICAgKiBFY2xpcHNlJ3MgcmVzb2x1dGlvbiBtZWNoYW5pc20gbmVlZHMgdG8gc3RhcnQgd2l0aCB0aGUgZHJpdmUuCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIFN0cmluZyB0cmltVVJJKFN0cmluZyBmaWxldXJpKQotICB7Ci0gIAlTdHJpbmcgdXJpU3RyID0gZmlsZXVyaTsKLSAgCQotICAgIGlmKGZpbGV1cmkuc3RhcnRzV2l0aCgiZmlsZToiKSkKLSAgICB7Ci0gICAgICB1cmlTdHIgPSBmaWxldXJpLnN1YnN0cmluZyg1KTsKLSAgICB9Ci0gICAgd2hpbGUodXJpU3RyLnN0YXJ0c1dpdGgoIi8iKSB8fCB1cmlTdHIuc3RhcnRzV2l0aCgiXFwiKSkKLSAgICB7Ci0gICAgICB1cmlTdHIgPSB1cmlTdHIuc3Vic3RyaW5nKDEpOwotICAgIH0KLSAgICByZXR1cm4gdXJpU3RyOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9hbmFseXplci9NZXNzYWdlQW5hbHl6ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9hbmFseXplci9NZXNzYWdlQW5hbHl6ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk3MGQzZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvYW5hbHl6ZXIvTWVzc2FnZUFuYWx5emVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5hbmFseXplcjsKLQotaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi51cmlyZXNvbHZlci5pbnRlcm5hbC51dGlsLlVSSUVuY29kZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5XU0lQcmVmZXJlbmNlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLldTSVRlc3RUb29sc0VjbGlwc2VQcm9wZXJ0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5BbmFseXplckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFzc2VydGlvblJlc3VsdFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5Bc3NlcnRpb25SZXN1bHRzT3B0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMUmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuaW1wbC5Bc3NlcnRpb25SZXN1bHRzT3B0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLmltcGwuV1NETEVsZW1lbnRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuaW1wbC5XU0RMUmVmZXJlbmNlSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuY29tbW9uLkFkZFN0eWxlU2hlZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmNvbW1vbi5pbXBsLkFkZFN0eWxlU2hlZXRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbC5GYWlsdXJlRGV0YWlsSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LmltcGwuUmVwb3J0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmRvbS5FbGVtZW50TG9jYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5yZXBvcnQuQXNzZXJ0aW9uRXJyb3I7Ci0KLS8qKgotICogTWVzc2FnZUFuYWx5emVyCi0gKiAKLSAqIEEgY2xhc3MgdGhhdCBhbGxvd3Mgc2ltcGxlIGFjY2VzcyB0byB0aGUgV1MtSSBUZXN0IFRvb2xzIGluIG9yZGVyIHRvIGFuYWx5emUKLSAqIG1lc3NhZ2VzIGluIGEgbG9nIGZpbGUuCi0gKi8KLQotcHVibGljIGNsYXNzIE1lc3NhZ2VBbmFseXplcgotewotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBQTFVHSU5fSUQgPSAib3JnLndzaS50ZXN0LnRvb2xzIjsKLSAgCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFRZUEVfUE9SVCA9ICJwb3J0IjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgVFlQRV9CSU5ESU5HID0gImJpbmRpbmciOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBUWVBFX1BPUlRUWVBFID0gInBvcnR0eXBlIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgVFlQRV9PUEVSQVRJT04gPSAib3BlcmF0aW9uIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgVFlQRV9NRVNTQUdFID0gIm1lc3NhZ2UiOwotCi0gIC8vIFRlc3QgcmVzdWx0IFN0cmluZ3MKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBOT1RQQVNTRUQgPSAibm90UGFzc2VkIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBXQVJOSU5HID0gIndhcm5pbmciOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIEZBSUxFRCA9ICJmYWlsZWQiOwotICAKLSAgcHJvdGVjdGVkIFN0cmluZyBmaWxlbmFtZTsKLSAgcHJvdGVjdGVkIFN0cmluZyB3c2RsZmlsZSA9IG51bGw7Ci0gIHByb3RlY3RlZCBTdHJpbmcgZWxlbWVudG5hbWUgPSBudWxsOwotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWVzcGFjZSA9IG51bGw7Ci0gIHByb3RlY3RlZCBTdHJpbmcgcGFyZW50bmFtZSA9IG51bGw7Ci0gIHByb3RlY3RlZCBib29sZWFuIHdzZGxzcGVjaWZpZWQgPSBmYWxzZTsKLSAgcHJvdGVjdGVkIFN0cmluZyB0eXBlICA9IG51bGw7Ci0gIHByb3RlY3RlZCBMaXN0IGFzc2VydGlvbndhcm5pbmdzOwotICBwcm90ZWN0ZWQgTGlzdCBhc3NlcnRpb25lcnJvcnM7Ci0gIHByb3RlY3RlZCBXU0lQcmVmZXJlbmNlcyB3c2lQcmVmZXJlbmNlcyA9IG51bGw7Ci0gIAotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIE1lc3NhZ2VBbmFseXplci4KLSAgICogQHBhcmFtIGZpbGVuYW1lIGxvZyBmaWxlIG5hbWUuCi0gICAqLwotICBwdWJsaWMgTWVzc2FnZUFuYWx5emVyKFN0cmluZyBmaWxlbmFtZSkKLSAgewotICAgIHRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKCdcXCcsICcvJyk7Ci0KLSAgICBhc3NlcnRpb253YXJuaW5ncyA9IG5ldyBWZWN0b3IoKTsKLSAgICBhc3NlcnRpb25lcnJvcnMgPSBuZXcgVmVjdG9yKCk7Ci0gIAl0aGlzLndzaVByZWZlcmVuY2VzID0gV1NJVGVzdFRvb2xzRWNsaXBzZVByb3BlcnRpZXMuY2hlY2tXU0lQcmVmZXJlbmNlcyhmaWxlbmFtZSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgTWVzc2FnZUFuYWx5emVyLgotICAgKiBAcGFyYW0gZmlsZW5hbWUgbG9nIGZpbGUgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlQW5hbHl6ZXIoU3RyaW5nIGZpbGVuYW1lLCBXU0lQcmVmZXJlbmNlcyB3c2lQcmVmZXJlbmNlcykKLSAgewotICAgIHRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKCdcXCcsICcvJyk7Ci0KLSAgICBhc3NlcnRpb253YXJuaW5ncyA9IG5ldyBWZWN0b3IoKTsKLSAgICBhc3NlcnRpb25lcnJvcnMgPSBuZXcgVmVjdG9yKCk7Ci0gIAl0aGlzLndzaVByZWZlcmVuY2VzID0gd3NpUHJlZmVyZW5jZXM7Ci0gIH0KLQotICBwdWJsaWMgTWVzc2FnZUFuYWx5emVyKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIHdzZGxmaWxlLCBTdHJpbmcgZWxlbWVudG5hbWUsIFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBwYXJlbnRuYW1lLCBTdHJpbmcgdHlwZSkKLSAgewotICAJdGhpcyhmaWxlbmFtZS5yZXBsYWNlKCdcXCcsICcvJykpOwotICAJd3NkbHNwZWNpZmllZCA9IHRydWU7Ci0gIAkKLSAgCXRoaXMud3NkbGZpbGUgPSB3c2RsZmlsZS5yZXBsYWNlKCdcXCcsICcvJyk7Ci0gIAl0aGlzLmVsZW1lbnRuYW1lID0gZWxlbWVudG5hbWU7Ci0gIAl0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTsKLSAgCXRoaXMucGFyZW50bmFtZSA9IHBhcmVudG5hbWU7Ci0gIAl0aGlzLnR5cGUgPSB0eXBlOwotICB9Ci0KLSAgcHVibGljIE1lc3NhZ2VBbmFseXplcihTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyB3c2RsZmlsZSwgU3RyaW5nIGVsZW1lbnRuYW1lLCBTdHJpbmcgbmFtZXNwYWNlLCBTdHJpbmcgcGFyZW50bmFtZSwgU3RyaW5nIHR5cGUsIFdTSVByZWZlcmVuY2VzIHdzaVByZWZlcmVuY2VzKQotICB7Ci0gIAl0aGlzKGZpbGVuYW1lLCB3c2lQcmVmZXJlbmNlcyk7Ci0gIAl3c2Rsc3BlY2lmaWVkID0gdHJ1ZTsKLSAgCQotICAJdGhpcy53c2RsZmlsZSA9IHdzZGxmaWxlLnJlcGxhY2UoJ1xcJywgJy8nKTsKLSAgCXRoaXMuZWxlbWVudG5hbWUgPSBlbGVtZW50bmFtZTsKLSAgCXRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlOwotICAJdGhpcy5wYXJlbnRuYW1lID0gcGFyZW50bmFtZTsKLSAgCXRoaXMudHlwZSA9IHR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIHZhbGlkYXRlQ29uZm9ybWFuY2UuCi0gICAqIAotICAgKiBDaGVja3MgdGhlIGNvbmZvcm1hbmNlIG9mIHRoZSBnaXZlbiBsb2dmaWxlIGFnYWluc3QgdGhlIFdTLUkgQmFzaWMgUHJvZmlsZS4KLSAgICogSWYgdGhlcmUgYXJlIGNvbmZvcm1hbmNlIHByb2JsZW1zIHRoZXkgY2FuIGJlIG9idGFpbmVkIGZyb20gZ2V0QXNzZXJ0aW9uRXJyb3JzLgotICAgKiAKLSAgICogQHRocm93cyBXU0lBbmFseXplckV4Y2VwdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGVDb25mb3JtYW5jZSgpIHRocm93cyBXU0lBbmFseXplckV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotCSAgaWYgKHdzaVByZWZlcmVuY2VzLmdldENvbXBsaWFuY2VMZXZlbCgpICE9IFdTSVRlc3RUb29sc0VjbGlwc2VQcm9wZXJ0aWVzLklHTk9SRV9OT05fV1NJKQotCSAgewotICAgICAgICBEb2N1bWVudEZhY3RvcnkgZG9jdW1lbnRGYWN0b3J5ID0gRG9jdW1lbnRGYWN0b3J5Lm5ld0luc3RhbmNlKCk7Ci0gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIEJhc2ljUHJvZmlsZUFuYWx5emVyIHVzaW5nIGFuIGFuYWx5emVyY29uZmlnIG9iamVjdAotICAgICAgICBBbmFseXplckNvbmZpZyBhbmFseXplcmNvbmZpZyA9IGRvY3VtZW50RmFjdG9yeS5uZXdBbmFseXplckNvbmZpZygpOwotICAgICAgICBpZih3c2Rsc3BlY2lmaWVkKQotICAgICAgICB7Ci0gICAgICAJICBXU0RMUmVmZXJlbmNlIHdzZGxyZWYgPSBuZXcgV1NETFJlZmVyZW5jZUltcGwoKTsKLSAgICAgIAkgIHdzZGxyZWYuc2V0V1NETExvY2F0aW9uKHdzZGxmaWxlKTsKLSAgICAgIAkKLSAgICAgIAkgIFdTRExFbGVtZW50IHdzZGxlbGVtID0gbmV3IFdTRExFbGVtZW50SW1wbCgpOwotICAgICAgCSAgd3NkbGVsZW0uc2V0TmFtZShlbGVtZW50bmFtZSk7Ci0gICAgICAJICB3c2RsZWxlbS5zZXROYW1lc3BhY2UobmFtZXNwYWNlKTsKLSAgICAgIAkgIHdzZGxlbGVtLnNldFBhcmVudEVsZW1lbnROYW1lKHBhcmVudG5hbWUpOwotICAgICAgCSAgd3NkbGVsZW0uc2V0VHlwZSh0eXBlKTsKLSAgICAgIAkKLSAgICAgIAkgIHdzZGxyZWYuc2V0V1NETEVsZW1lbnQod3NkbGVsZW0pOwotICAgICAgCQotICAgICAgCSAgYW5hbHl6ZXJjb25maWcuc2V0V1NETFJlZmVyZW5jZSh3c2RscmVmKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFzc2VydGlvblJlc3VsdHNPcHRpb24gYXJvID0gbmV3IEFzc2VydGlvblJlc3VsdHNPcHRpb25JbXBsKCk7Ci0gICAgICAgIGFyby5zZXRBc3NlcnRpb25SZXN1bHRUeXBlKEFzc2VydGlvblJlc3VsdFR5cGUubmV3SW5zdGFuY2UoTk9UUEFTU0VEKSk7Ci0gICAgICAgIGFyby5zZXRTaG93QXNzZXJ0aW9uRGVzY3JpcHRpb24oZmFsc2UpOwotICAgICAgICBhcm8uc2V0U2hvd0ZhaWx1cmVEZXRhaWwoZmFsc2UpOwotICAgICAgICBhcm8uc2V0U2hvd0ZhaWx1cmVNZXNzYWdlKGZhbHNlKTsKLSAgICAgICAgYXJvLnNldFNob3dNZXNzYWdlRW50cnkoZmFsc2UpOwotCi0gICAgICAgIC8vIGFsdGhvdWdoIHdlIGRvbid0IHVzZSBhIHN0eWxlc2hlZXQgZm9yIG91ciBhcHBsaWNhdGlvbiBpdCBpcyByZXF1aXJlZCBvciB0aGUgCi0gICAgICAgIC8vIFdTLUkgdG9vbHMgd2lsbCBmYWlsCi0gICAgICAgIEFkZFN0eWxlU2hlZXQgYWRkc3R5bGVzaGVldCA9IG5ldyBBZGRTdHlsZVNoZWV0SW1wbCgpOwotCi0gICAgICAgIGFuYWx5emVyY29uZmlnLnNldEFzc2VydGlvblJlc3VsdHNPcHRpb24oYXJvKTsKLSAgICAgICAgYW5hbHl6ZXJjb25maWcuc2V0QWRkU3R5bGVTaGVldChhZGRzdHlsZXNoZWV0KTsKLSAgICAgIAotICAgICAgICBhbmFseXplcmNvbmZpZy5zZXRDb3JyZWxhdGlvblR5cGUoImVuZHBvaW50Iik7Ci0gIAkgICAgdHJ5Ci0JCXsKLQkJICBhbmFseXplcmNvbmZpZy5zZXRMb2dMb2NhdGlvbihVUklFbmNvZGVyLmVuY29kZShmaWxlbmFtZSwgIlVURjgiKSk7Ci0JCSAgYW5hbHl6ZXJjb25maWcuc2V0VGVzdEFzc2VydGlvbnNEb2N1bWVudExvY2F0aW9uKHdzaVByZWZlcmVuY2VzLmdldFRBREZpbGUoKSk7Ci0JCX0KLQkJY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gdWVlKQotCQl7Ci0JCSAgYW5hbHl6ZXJjb25maWcuc2V0TG9nTG9jYXRpb24oVVJJRW5jb2Rlci5lbmNvZGUoZmlsZW5hbWUsICJVVEY4IikpOwotCSAgICAgIGFuYWx5emVyY29uZmlnLnNldFRlc3RBc3NlcnRpb25zRG9jdW1lbnRMb2NhdGlvbihVUklFbmNvZGVyLmVuY29kZSh3c2lQcmVmZXJlbmNlcy5nZXRUQURGaWxlKCksICJVVEY4IikpOwotCQl9Ci0gICAgICAgIC8vYW5hbHl6ZXJjb25maWcuc2V0TG9nTG9jYXRpb24oZmlsZW5hbWUpOwotICAgICAgICAvL2FuYWx5emVyY29uZmlnLnNldFRlc3RBc3NlcnRpb25zRG9jdW1lbnRMb2NhdGlvbihnZXRCYXNpY1Byb2ZpbGVUZXN0QXNzZXJ0aW9uc0ZpbGUoKSk7Ci0gICAgICAgIGFuYWx5emVyY29uZmlnLnNldFZlcmJvc2VPcHRpb24oZmFsc2UpOwotICAgICAgCi0KLSAgICAgICAgTGlzdCBhbmFseXplckNvbmZpZ3MgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgIGFuYWx5emVyQ29uZmlncy5hZGQoYW5hbHl6ZXJjb25maWcpOwotICAgICAgICAvLyBoZXJlJ3Mgd2hlcmUgdGhlIHZhbGlkYXRpb24gYWN0dWFsbHkgc3RhcnRzIGhhcHBlbmluZwotICAgICAgICBXU0lCYXNpY1Byb2ZpbGVBbmFseXplciBicGFuYWx5emVyID0gbmV3IFdTSUJhc2ljUHJvZmlsZUFuYWx5emVyKGFuYWx5emVyQ29uZmlncyk7Ci0KLSAgICAgICAgYnBhbmFseXplci52YWxpZGF0ZUFsbCgpOwotICAgICAgICBSZXBvcnRJbXBsIHJlcG9ydCA9IChSZXBvcnRJbXBsKSBicGFuYWx5emVyLmdldFJlcG9ydCgpOwotCi0gICAgICAgIExpc3QgZW50cmllcyA9IHJlcG9ydC5nZXRFbnRyaWVzKCk7Ci0KLSAgICAgICAgLy8gaWYgdGhlcmUgYXJlIHJlcG9ydCBlbnRyaWVzIHdlIGl0ZXJhdGUgdGhyb3VnaCB0aGVtIGFuZCBhZGQgYWxsCi0gICAgICAgIC8vIGVycm9yIGFuZCB3YXJuaW5nIG1lc3NhZ2VzIHRvIHRoZSBlcnJvciBsaXN0LgotICAgICAgICBpZiAoZW50cmllcyAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgSXRlcmF0b3IgaWVudHJ5ID0gZW50cmllcy5pdGVyYXRvcigpOwotICAgICAgICAgIHdoaWxlIChpZW50cnkuaGFzTmV4dCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIEVudHJ5IGVudHJ5ID0gKEVudHJ5KSBpZW50cnkubmV4dCgpOwotICAgICAgICAgICAgTWFwIGFzc2VydGlvblJlc3VsdHMgPSBlbnRyeS5nZXRBc3NlcnRpb25SZXN1bHRMaXN0KCk7Ci0KLSAgICAgICAgICAgIGlmIChhc3NlcnRpb25SZXN1bHRzICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIEl0ZXJhdG9yIGlhc3NlcnRpb25SZXN1bHRzID0gYXNzZXJ0aW9uUmVzdWx0cy52YWx1ZXMoKS5pdGVyYXRvcigpOwotCi0gICAgICAgICAgICAgIHdoaWxlIChpYXNzZXJ0aW9uUmVzdWx0cy5oYXNOZXh0KCkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBc3NlcnRpb25SZXN1bHQgYXIgPSAoQXNzZXJ0aW9uUmVzdWx0KSBpYXNzZXJ0aW9uUmVzdWx0cy5uZXh0KCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYXIuZ2V0UmVzdWx0KCkuZXF1YWxzSWdub3JlQ2FzZShGQUlMRUQpICYmIAotICAgICAgICAgICAgICAgIAl3c2lQcmVmZXJlbmNlcy5nZXRDb21wbGlhbmNlTGV2ZWwoKS5lcXVhbHMoV1NJVGVzdFRvb2xzRWNsaXBzZVByb3BlcnRpZXMuU1RPUF9OT05fV1NJKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBUZXN0QXNzZXJ0aW9uIHRhID0gYXIuZ2V0QXNzZXJ0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICBpZiAodGEuaXNFbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGVycm9yTWVzc2FnZXMgPSBhci5nZXRGYWlsdXJlRGV0YWlsTGlzdCgpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChlcnJvck1lc3NhZ2VzLmhhc05leHQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVEZXRhaWxJbXBsIGZkaSA9IChGYWlsdXJlRGV0YWlsSW1wbCllcnJvck1lc3NhZ2VzLm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbk51bWJlciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRMb2NhdGlvbiBlbCA9IGZkaS5nZXRFbGVtZW50TG9jYXRpb24oKTsKLQotICAgICAgICAgICAgICAgICAgICAgIGlmIChlbCAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBlbC5nZXRMaW5lTnVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBlbC5nZXRDb2x1bW5OdW1iZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAvL1RPRE86IGdldCBhc3NlcnRpb24gbG9jYXRpb25zIGluIHRoZSBsb2cgZmlsZQotICAgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbmVycm9ycy5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgQXNzZXJ0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICB0YS5nZXRJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIk1lc3NhZ2UgSUQgIiArIGVudHJ5LmdldFJlZmVyZW5jZUlEKCkgKyAiOiIgKyB0YS5nZXRGYWlsdXJlTWVzc2FnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcikpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFyLmdldFJlc3VsdCgpLmVxdWFsc0lnbm9yZUNhc2UoRkFJTEVEKSAmJiAKLSAgICAgICAgICAgICAgICAgICAgICAgICB3c2lQcmVmZXJlbmNlcy5nZXRDb21wbGlhbmNlTGV2ZWwoKS5lcXVhbHMoV1NJVGVzdFRvb2xzRWNsaXBzZVByb3BlcnRpZXMuV0FSTl9OT05fV1NJKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBUZXN0QXNzZXJ0aW9uIHRhID0gYXIuZ2V0QXNzZXJ0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICBpZiAodGEuaXNFbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGVycm9yTWVzc2FnZXMgPSBhci5nZXRGYWlsdXJlRGV0YWlsTGlzdCgpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChlcnJvck1lc3NhZ2VzLmhhc05leHQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVEZXRhaWxJbXBsIGZkaSA9IChGYWlsdXJlRGV0YWlsSW1wbCllcnJvck1lc3NhZ2VzLm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbk51bWJlciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRMb2NhdGlvbiBlbCA9IGZkaS5nZXRFbGVtZW50TG9jYXRpb24oKTsKLQotICAgICAgICAgICAgICAgICAgICAgIGlmIChlbCAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBlbC5nZXRMaW5lTnVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBlbC5nZXRDb2x1bW5OdW1iZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgLy9UT0RPOiBnZXQgYXNzZXJ0aW9uIGxvY2F0aW9ucyBpbiB0aGUgbG9nIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRpb253YXJuaW5ncy5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgQXNzZXJ0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICB0YS5nZXRJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIk1lc3NhZ2UgSUQgIiArIGVudHJ5LmdldFJlZmVyZW5jZUlEKCkgKyAiOiIgKyB0YS5nZXRGYWlsdXJlTWVzc2FnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcikpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9IAotCSAgfQotICAgIH0KLSAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUFuYWx5emVyRXhjZXB0aW9uKCJUaGUgTWVzc2FnZUFuYWx5emVyIHdhcyB1bmFibGUgdG8gdmFsaWRhdGUgdGhlIGdpdmVuIGxvZ2ZpbGUuIiwgZS5nZXRUYXJnZXRFeGNlcHRpb24oKSk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJQW5hbHl6ZXJFeGNlcHRpb24oIlRoZSBNZXNzYWdlQW5hbHl6ZXIgd2FzIHVuYWJsZSB0byB2YWxpZGF0ZSB0aGUgZ2l2ZW4gbG9nZmlsZS4iKTsKLSAgICB9Ci0KLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0QXNzZXJ0aW9uV2FybmluZ3MuCi0gICAqIFJldHVybnMgYSBsaXN0IG9mIGFueSBhc3NlcnRpb24gd2FybmluZ3MgZ2VuZXJhdGVkIGZyb20gdmFsaWRhdGVDb25mb3JtYW5jZS4KLSAgICogQHJldHVybiBMaXN0Ci0gICAqLwotICBwdWJsaWMgTGlzdCBnZXRBc3NlcnRpb25XYXJuaW5ncygpCi0gIHsKLSAgICByZXR1cm4gYXNzZXJ0aW9ud2FybmluZ3M7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGdldEFzc2VydGlvbkZhaWx1cmVzLgotICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbnkgYXNzZXJ0aW9uIGVycm9ycyBnZW5lcmF0ZWQgZnJvbSB2YWxpZGF0ZUNvbmZvcm1hbmNlLgotICAgKiBAcmV0dXJuIExpc3QKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEFzc2VydGlvbkVycm9ycygpCi0gIHsKLSAgICByZXR1cm4gYXNzZXJ0aW9uZXJyb3JzOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvYW5hbHl6ZXIvV1NETEFuYWx5emVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvYW5hbHl6ZXIvV1NETEFuYWx5emVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YmYyMzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2FuYWx5emVyL1dTRExBbmFseXplci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzg0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuYW5hbHl6ZXI7Ci0KLWltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24udXJpcmVzb2x2ZXIuaW50ZXJuYWwudXRpbC5VUklFbmNvZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuV1NJUHJlZmVyZW5jZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5XU0lUZXN0VG9vbHNFY2xpcHNlUHJvcGVydGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLldTSVRlc3RUb29sc1Byb3BlcnRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuQXNzZXJ0aW9uUmVzdWx0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFzc2VydGlvblJlc3VsdHNPcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLldTRExSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5pbXBsLkFzc2VydGlvblJlc3VsdHNPcHRpb25JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuaW1wbC5XU0RMRWxlbWVudEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5pbXBsLldTRExSZWZlcmVuY2VJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5jb21tb24uQWRkU3R5bGVTaGVldDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuY29tbW9uLmltcGwuQWRkU3R5bGVTaGVldEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5pbXBsLkZhaWx1cmVEZXRhaWxJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbC5SZXBvcnRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuZG9tLkVsZW1lbnRMb2NhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLnJlcG9ydC5Bc3NlcnRpb25FcnJvcjsKLQotLyoqCi0gKiBXU0RMQW5hbHl6ZXIKLSAqIFRoZSBpbnRlcmZhY2UgdG8gdGhlIFdTLUkgVGVzdCBUb29scyBmb3IgYW5hbHl6aW5nIGEgV1NETCBmaWxlLiAgQWxsb3dzIGEgV1NETCBmaWxlIHRvIGJlIGFuYWx5emVkCi0gKiBhdCBhbnkgb2YgdGhlIGZvbGxvd2luZyBsZXZlbHMuCi0gKiAgcG9ydAotICogIGJpbmRpbmcKLSAqICBwb3J0VHlwZQotICogIG9wZXJhdGlvbgotICogIG1lc3NhZ2UKLSAqLwotCi1wdWJsaWMgY2xhc3MgV1NETEFuYWx5emVyCi17Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFBMVUdJTl9JRCA9ICJvcmcud3NpLnRlc3QudG9vbHMiOwotICAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9SVCA9ICJwb3J0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQklORElORyA9ICJiaW5kaW5nIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9SVFRZUEUgPSAicG9ydFR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUEVSQVRJT04gPSAib3BlcmF0aW9uIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVTU0FHRSA9ICJtZXNzYWdlIjsKLQotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIE5PVFBBU1NFRCA9ICJub3RQYXNzZWQiOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIFdBUk5JTkcgPSAid2FybmluZyI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgRkFJTEVEID0gImZhaWxlZCI7Ci0gIAotICBwcm90ZWN0ZWQgTGlzdCBhbmFseXplckNvbmZpZ3M7Ci0gIHByb3RlY3RlZCBTdHJpbmcgd3NkbFVSSTsKLSAgLy8gYXNzZXJ0aW9ucyB0byBpZ25vcmUgLSB1c2VkIGZvciBhc3NlcnRpb25zIHRoYXQgdGhlIHRvb2xzIGhhdmUgbm90IGltcGxlbWVudGVkIHByb3Blcmx5IHlldAotICAvL3Byb3RlY3RlZCBTdHJpbmdbXSBpZ25vcmVBc3NlcnRpb25zID0geyAvKiJXU0kyMTA1IiAsICJXU0kyMTE5IiovfTsKLSAgcHJvdGVjdGVkIExpc3QgYXNzZXJ0aW9uZXJyb3JzOwotICBwcm90ZWN0ZWQgTGlzdCBhc3NlcnRpb253YXJuaW5nczsKLSAgcHJvdGVjdGVkIFdTSVByZWZlcmVuY2VzIHdzaVByZWZlcmVuY2VzID0gbnVsbDsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqIEdpdmVuIHRoZSBmaWxlIG5hbWUsIHBhcmVudCBlbGVtZW50IG5hbWUsIHRoZSBlbGVtZW50IHRvIGFuYWx5emUgYW5kIHRoZSB0eXBlIG9mIGVsZW1lbnQKLSAgICogc2V0cyB1cCB0aGUgV1NETEFuYWx5emVyIHRvIGFuYWx5emUgdGhlIGZpbGUuCi0gICAqIEBwYXJhbSBmaWxlTmFtZSBsb2cgZmlsZSBuYW1lLgotICAgKiBAcGFyYW0gcGFyZW50TmFtZSBwYXJlbnQgZWxlbWVudCBuYW1lLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlICBhIG5hbWVzcGFjZS4KLSAgICogQHBhcmFtIGVsZW1lbnROYW1lIHRoZSBlbGVtZW50IHRvIGFuYWx5emUuCi0gICAqIEBwYXJhbSBlbGVtZW50VHlwZSB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudC4KLSAgICogQHBhcmFtIHdzaVByZWZlcmVuY2VzIHRoZSBwcmVmZXJlbmNlcy4KLSAgICogQHRocm93cyBXU0lBbmFseXplckV4Y2VwdGlvbiBpZiB1bmFibGUgdG8gYWRkIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCi0gICAqLwotICBwdWJsaWMgV1NETEFuYWx5emVyKFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIHBhcmVudE5hbWUsIFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBlbGVtZW50TmFtZSwgU3RyaW5nIGVsZW1lbnRUeXBlLCBXU0lQcmVmZXJlbmNlcyB3c2lQcmVmZXJlbmNlcykgdGhyb3dzIFdTSUFuYWx5emVyRXhjZXB0aW9uCi0gIHsKLSAgICB0aGlzKGZpbGVOYW1lLCB3c2lQcmVmZXJlbmNlcyk7Ci0gICAgYWRkQ29uZmlndXJhdGlvblRvVGVzdChwYXJlbnROYW1lLCBuYW1lc3BhY2UsIGVsZW1lbnROYW1lLCBlbGVtZW50VHlwZSk7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogR2l2ZW4gdGhlIGZpbGUgbmFtZSwgcGFyZW50IGVsZW1lbnQgbmFtZSwgdGhlIGVsZW1lbnQgdG8gYW5hbHl6ZSBhbmQgdGhlIHR5cGUgb2YgZWxlbWVudAotICAgKiBzZXRzIHVwIHRoZSBXU0RMQW5hbHl6ZXIgdG8gYW5hbHl6ZSB0aGUgZmlsZS4KLSAgICogQHBhcmFtIGZpbGVOYW1lIGxvZyBmaWxlIG5hbWUuCi0gICAqIEBwYXJhbSBwYXJlbnROYW1lIHBhcmVudCBlbGVtZW50IG5hbWUuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2UgIGEgbmFtZXNwYWNlLgotICAgKiBAcGFyYW0gZWxlbWVudE5hbWUgdGhlIGVsZW1lbnQgdG8gYW5hbHl6ZS4KLSAgICogQHBhcmFtIGVsZW1lbnRUeXBlIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50LgotICAgKiBAdGhyb3dzIFdTSUFuYWx5emVyRXhjZXB0aW9uIGlmIHVuYWJsZSB0byBhZGQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4KLSAgICovCi0gIHB1YmxpYyBXU0RMQW5hbHl6ZXIoU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgcGFyZW50TmFtZSwgU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIGVsZW1lbnROYW1lLCBTdHJpbmcgZWxlbWVudFR5cGUpIHRocm93cyBXU0lBbmFseXplckV4Y2VwdGlvbgotICB7Ci0gICAgdGhpcyhmaWxlTmFtZSk7Ci0gICAgYWRkQ29uZmlndXJhdGlvblRvVGVzdChwYXJlbnROYW1lLCBuYW1lc3BhY2UsIGVsZW1lbnROYW1lLCBlbGVtZW50VHlwZSk7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogQHBhcmFtIGZpbGVOYW1lICBsb2cgZmlsZSBuYW1lLgotICAgKi8KLSAgcHVibGljIFdTRExBbmFseXplcihTdHJpbmcgZmlsZU5hbWUsIFdTSVByZWZlcmVuY2VzIHdzaVByZWZlcmVuY2VzKQotICB7Ci0gICAgcmVzZXQoZmlsZU5hbWUpOwotICAgIHRoaXMud3NpUHJlZmVyZW5jZXMgPSB3c2lQcmVmZXJlbmNlczsKLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogQHBhcmFtIGZpbGVOYW1lICBsb2cgZmlsZSBuYW1lLgotICAgKi8KLSAgcHVibGljIFdTRExBbmFseXplcihTdHJpbmcgZmlsZU5hbWUpCi0gIHsKLSAgICByZXNldChmaWxlTmFtZSk7Ci0gICAgaWYoV1NJVGVzdFRvb2xzUHJvcGVydGllcy5nZXRFY2xpcHNlQ29udGV4dCgpKQotICAgIHsKLSAgICAgIHRoaXMud3NpUHJlZmVyZW5jZXMgPSBXU0lUZXN0VG9vbHNFY2xpcHNlUHJvcGVydGllcy5jaGVja1dTSVByZWZlcmVuY2VzKGZpbGVOYW1lKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgCSAgdGhpcy53c2lQcmVmZXJlbmNlcyA9IFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuY2hlY2tXU0lQcmVmZXJlbmNlcyhmaWxlTmFtZSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIFdTSVByZWZlcmVuY2VzIGdldFdTSVByZWZlcmVuY2VzKCkKLSAgewotCSAgcmV0dXJuIHRoaXMud3NpUHJlZmVyZW5jZXM7Ci0gIH0KLQkgIAotICAvKioKLSAgICogdmFsaWRhdGVDb25mb3JtYW5jZS4KLSAgICogVmFsaWRhdGUgdGhlIFdTREwgZmlsZSBhcyBzZXR1cCBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAqIEB0aHJvd3MgV1NJQW5hbHl6ZXJFeGNlcHRpb24gaWYgdW5hYmxlIHRvIHZhbGlkYXRlIHRoZSBnaXZlbiBXU0RMIEZpbGUuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZUNvbmZvcm1hbmNlKCkgdGhyb3dzIFdTSUFuYWx5emVyRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0JICBpZiAod3NpUHJlZmVyZW5jZXMuZ2V0Q29tcGxpYW5jZUxldmVsKCkgIT0gV1NJVGVzdFRvb2xzUHJvcGVydGllcy5JR05PUkVfTk9OX1dTSSkKLQkgIHsKLSAgICAgICAgLy8gaGVyZSdzIHdoZXJlIHRoZSB2YWxpZGF0aW9uIGFjdHVhbGx5IHN0YXJ0cyBoYXBwZW5pbmcKLSAgICAgICAgV1NJQmFzaWNQcm9maWxlQW5hbHl6ZXIgYnBhbmFseXplciA9IG5ldyBXU0lCYXNpY1Byb2ZpbGVBbmFseXplcihhbmFseXplckNvbmZpZ3Msd3NkbFVSSSk7Ci0gICAgICAgIGJwYW5hbHl6ZXIudmFsaWRhdGVBbGwoKTsKLSAgICAgICAgUmVwb3J0SW1wbCByZXBvcnQgPSAoUmVwb3J0SW1wbCkgYnBhbmFseXplci5nZXRSZXBvcnQoKTsKLQotICAgICAgICBMaXN0IGVudHJpZXMgPSByZXBvcnQuZ2V0RW50cmllcygpOwotCi0gICAgICAgIC8vIGlmIHRoZXJlIGFyZSByZXBvcnQgZW50cmllcyB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlbSBhbmQgYWRkIGFsbAotICAgICAgICAvLyBlcnJvciBhbmQgd2FybmluZyBtZXNzYWdlcyB0byB0aGUgZXJyb3IgbGlzdC4gCi0gICAgICAgIGlmIChlbnRyaWVzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBJdGVyYXRvciBpZW50cnkgPSBlbnRyaWVzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKGllbnRyeS5oYXNOZXh0KCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgRW50cnkgZW50cnkgPSAoRW50cnkpIGllbnRyeS5uZXh0KCk7Ci0gICAgICAgICAgICBNYXAgYXNzZXJ0aW9uUmVzdWx0cyA9IGVudHJ5LmdldEFzc2VydGlvblJlc3VsdExpc3QoKTsKLQotICAgICAgICAgICAgaWYgKGFzc2VydGlvblJlc3VsdHMgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgSXRlcmF0b3IgaWFzc2VydGlvblJlc3VsdHMgPSBhc3NlcnRpb25SZXN1bHRzLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0KLSAgICAgICAgICAgICAgd2hpbGUgKGlhc3NlcnRpb25SZXN1bHRzLmhhc05leHQoKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFzc2VydGlvblJlc3VsdCBhciA9IChBc3NlcnRpb25SZXN1bHQpIGlhc3NlcnRpb25SZXN1bHRzLm5leHQoKTsKLSAgICAgICAgICAgICAgICBUZXN0QXNzZXJ0aW9uIHRhID0gYXIuZ2V0QXNzZXJ0aW9uKCk7Ci0gICAgICAgICAgICAgICAgLy8gYWRkIGluIHRvIHNraXAgZXJyb3JzIGZvciBhc3NlcnRpb25zIHRoYXQgYXJlIHJlcG9ydGluZyBpbmNvcnJlY3QgcHJvYmxlbXMuCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gbm90IHJlcG9ydCBpbmNvcnJlY3QgZXJyb3JzIHJlcG9ydGVkIGluIHRoZSB0b29scyB3aXRob3V0IGRpc2FibGluZyB0aGVtCi0gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIFN0cmluZyBhc3NlcnRpb25JZCA9IHRhLmdldElkKCk7Ci0gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIGJvb2xlYW4gaWdub3JlQXNzZXJ0aW9uID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIGZvcihpbnQgaSA9IGlnbm9yZUFzc2VydGlvbnMubGVuZ3RoLTE7IGkgPj0wO2ktLSkKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAJaWYoaWdub3JlQXNzZXJ0aW9uc1tpXS5lcXVhbHNJZ25vcmVDYXNlKGFzc2VydGlvbklkKSkKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgCXsKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgCQlpZ25vcmVBc3NlcnRpb24gPSB0cnVlOwotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAJfQotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIGlmKGlnbm9yZUFzc2VydGlvbikKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAJY29udGludWU7Ci0gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYXIuZ2V0UmVzdWx0KCkuZXF1YWxzSWdub3JlQ2FzZShGQUlMRUQpICYmIAotICAgICAgICAgICAgICAgIAl3c2lQcmVmZXJlbmNlcy5nZXRDb21wbGlhbmNlTGV2ZWwoKS5lcXVhbHMoV1NJVGVzdFRvb2xzUHJvcGVydGllcy5TVE9QX05PTl9XU0kpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmICh0YS5pc0VuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgTGlzdCBlcnJvck1lc3NhZ2VMaXN0ID0gYXIuZ2V0RmFpbHVyZURldGFpbExpc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZUxpc3QgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGVycm9yTWVzc2FnZXMgPSBlcnJvck1lc3NhZ2VMaXN0Lml0ZXJhdG9yKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZXJyb3JNZXNzYWdlcy5oYXNOZXh0KCkpCi0gICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZURldGFpbEltcGwgZmRpID0gKEZhaWx1cmVEZXRhaWxJbXBsKSBlcnJvck1lc3NhZ2VzLm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50TG9jYXRpb24gZWwgPSBmZGkuZ2V0RWxlbWVudExvY2F0aW9uKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbCAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyID0gZWwuZ2V0TGluZU51bWJlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBlbC5nZXRDb2x1bW5OdW1iZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uZXJyb3JzLmFkZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFzc2VydGlvbkVycm9yKHRhLmdldElkKCksIHRhLmdldEZhaWx1cmVNZXNzYWdlKCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpOwotICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZXJyb3JNZXNzYWdlTGlzdCBpcyBudWxsIGJ1dCB0aGVyZSBpcyBhbiBlcnJvciBzbyBhc3NpZ24gaXQgdG8gbGluZSAwIGZvciBub3cKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uZXJyb3JzLmFkZChuZXcgQXNzZXJ0aW9uRXJyb3IodGEuZ2V0SWQoKSwgdGEuZ2V0RmFpbHVyZU1lc3NhZ2UoKSwgMCwgMCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFyLmdldFJlc3VsdCgpLmVxdWFsc0lnbm9yZUNhc2UoRkFJTEVEKSAmJiAKLSAgICAgICAgICAgICAgICAgICAgICAgICB3c2lQcmVmZXJlbmNlcy5nZXRDb21wbGlhbmNlTGV2ZWwoKS5lcXVhbHMoV1NJVGVzdFRvb2xzUHJvcGVydGllcy5XQVJOX05PTl9XU0kpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmICh0YS5pc0VuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgTGlzdCBlcnJvck1lc3NhZ2VMaXN0ID0gYXIuZ2V0RmFpbHVyZURldGFpbExpc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZUxpc3QgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGVycm9yTWVzc2FnZXMgPSBlcnJvck1lc3NhZ2VMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGVycm9yTWVzc2FnZXMuaGFzTmV4dCgpKQotICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVEZXRhaWxJbXBsIGZkaSA9IChGYWlsdXJlRGV0YWlsSW1wbCkgZXJyb3JNZXNzYWdlcy5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uTnVtYmVyID0gMDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudExvY2F0aW9uIGVsID0gZmRpLmdldEVsZW1lbnRMb2NhdGlvbigpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWwgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciA9IGVsLmdldExpbmVOdW1iZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gZWwuZ2V0Q29sdW1uTnVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRpb253YXJuaW5ncy5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBBc3NlcnRpb25FcnJvcih0YS5nZXRJZCgpLCB0YS5nZXRGYWlsdXJlTWVzc2FnZSgpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKTsKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGVycm9yTWVzc2FnZUxpc3QgaXMgbnVsbCBidXQgdGhlcmUgaXMgYW4gZXJyb3Igc28gYXNzaWduIGl0IHRvIGxpbmUgMCBmb3Igbm93Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbndhcm5pbmdzLmFkZChuZXcgQXNzZXJ0aW9uRXJyb3IodGEuZ2V0SWQoKSwgdGEuZ2V0RmFpbHVyZU1lc3NhZ2UoKSwgMCwgMCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0JICB9Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0lBbmFseXplckV4Y2VwdGlvbihlICsgIlRoZSBXU0RMQW5hbHl6ZXIgd2FzIHVuYWJsZSB0byB2YWxpZGF0ZSB0aGUgZ2l2ZW4gV1NETCBGaWxlLiIpOwotICAgIH0KLQotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgotICAgKiBAcGFyYW0gcGFyZW50TmFtZSBwYXJlbnQgZWxlbWVudCBuYW1lLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlICBhIG5hbWVzcGFjZS4KLSAgICogQHBhcmFtIGVsZW1lbnROYW1lIHRoZSBlbGVtZW50IHRvIGFuYWx5emUuCi0gICAqIEBwYXJhbSBlbGVtZW50VHlwZSB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudC4KLSAgICogQHRocm93cyBXU0lBbmFseXplckV4Y2VwdGlvbiBpZiB1bmFibGUgdG8gYWRkIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRDb25maWd1cmF0aW9uVG9UZXN0KAotICAgIFN0cmluZyBwYXJlbnROYW1lLAotICAgIFN0cmluZyBuYW1lc3BhY2UsCi0gICAgU3RyaW5nIGVsZW1lbnROYW1lLAotICAgIFN0cmluZyBlbGVtZW50VHlwZSkgdGhyb3dzIFdTSUFuYWx5emVyRXhjZXB0aW9uCi0gIHsKLSAgCXRyeQotICAJewotICAgICAgV1NETFJlZmVyZW5jZSB3c2RsUmVmZXJlbmNlID0gbmV3IFdTRExSZWZlcmVuY2VJbXBsKCk7Ci0KLSAgICAgIFdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gKFdTRExFbGVtZW50KSBuZXcgV1NETEVsZW1lbnRJbXBsKCk7Ci0gICAgICB3c2RsRWxlbWVudC5zZXRUeXBlKGVsZW1lbnRUeXBlKTsKLSAgICAgIGlmIChwYXJlbnROYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHdzZGxFbGVtZW50LnNldFBhcmVudEVsZW1lbnROYW1lKHBhcmVudE5hbWUpOwotICAgICAgfQotICAgICAgd3NkbEVsZW1lbnQuc2V0TmFtZXNwYWNlKG5hbWVzcGFjZSk7Ci0gICAgICB3c2RsRWxlbWVudC5zZXROYW1lKGVsZW1lbnROYW1lKTsKLSAgICAgIHdzZGxSZWZlcmVuY2Uuc2V0V1NETEVsZW1lbnQod3NkbEVsZW1lbnQpOwotCi0gICAgICB3c2RsUmVmZXJlbmNlLnNldFdTRExMb2NhdGlvbih3c2RsVVJJKTsKLSAgICAgIERvY3VtZW50RmFjdG9yeSBkb2N1bWVudEZhY3RvcnkgPSBEb2N1bWVudEZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLSAgICAgIC8vIEluaXRpYWxpemUgdGhlIEJhc2ljUHJvZmlsZUFuYWx5emVyIHVzaW5nIGFuIGFuYWx5emVyY29uZmlnIG9iamVjdAotICAgICAgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJjb25maWcgPSBkb2N1bWVudEZhY3RvcnkubmV3QW5hbHl6ZXJDb25maWcoKTsKLQotICAgICAgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbiBhcm8gPSBuZXcgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbkltcGwoKTsKLSAgICAgIGFyby5zZXRBc3NlcnRpb25SZXN1bHRUeXBlKEFzc2VydGlvblJlc3VsdFR5cGUubmV3SW5zdGFuY2UoTk9UUEFTU0VEKSk7Ci0gICAgICBhcm8uc2V0U2hvd0Fzc2VydGlvbkRlc2NyaXB0aW9uKGZhbHNlKTsKLSAgICAgIGFyby5zZXRTaG93RmFpbHVyZURldGFpbChmYWxzZSk7Ci0gICAgICBhcm8uc2V0U2hvd0ZhaWx1cmVNZXNzYWdlKGZhbHNlKTsKLSAgICAgIGFyby5zZXRTaG93TWVzc2FnZUVudHJ5KGZhbHNlKTsKLQotICAgICAgLy8gYWx0aG91Z2ggd2UgZG9uJ3QgdXNlIGEgc3R5bGVzaGVldCBmb3Igb3VyIGFwcGxpY2F0aW9uIGl0IGlzIHJlcXVpcmVkIG9yIHRoZSAKLSAgICAgIC8vIFdTLUkgdG9vbHMgd2lsbCBmYWlsCi0gICAgICBBZGRTdHlsZVNoZWV0IGFkZHN0eWxlc2hlZXQgPSBuZXcgQWRkU3R5bGVTaGVldEltcGwoKTsKLQotICAgICAgYW5hbHl6ZXJjb25maWcuc2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbihhcm8pOwotICAgICAgYW5hbHl6ZXJjb25maWcuc2V0QWRkU3R5bGVTaGVldChhZGRzdHlsZXNoZWV0KTsKLSAgICAgIGFuYWx5emVyY29uZmlnLnNldFJlcGxhY2VSZXBvcnQodHJ1ZSk7Ci0gICAgICAvL2FuYWx5emVyY29uZmlnLnNldExvZ0xvY2F0aW9uKGZpbGVuYW1lKTsKLSAgICAgIGFuYWx5emVyY29uZmlnLnNldFRlc3RBc3NlcnRpb25zRG9jdW1lbnRMb2NhdGlvbih3c2lQcmVmZXJlbmNlcy5nZXRUQURGaWxlKCkpOwotICAgICAgYW5hbHl6ZXJjb25maWcuc2V0VmVyYm9zZU9wdGlvbihmYWxzZSk7Ci0KLSAgICAgIC8vIHNldCB0aGUgd3NkbFJlZmVyZW5jZQotICAgICAgYW5hbHl6ZXJjb25maWcuc2V0V1NETFJlZmVyZW5jZSh3c2RsUmVmZXJlbmNlKTsKLSAgICAgIGFuYWx5emVyQ29uZmlncy5hZGQoYW5hbHl6ZXJjb25maWcpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUFuYWx5emVyRXhjZXB0aW9uKCJVbmFibGUgdG8gYWRkIEFuYWx5emVyQ29uZmlnIHRvIGxpc3QuICIgKyBlKTsKLSAgICB9Ci0gIH0KLSAgLyoqCi0gICAqIE1ldGhvZCBnZXRBc3NlcnRpb25GYWlsdXJlcy4KLSAgICogUmV0dXJuIGEgbGlzdCBvZiB0aGUgYXNzZXJ0aW9uIGZhaWx1cmVzLgotICAgKiBAcmV0dXJuIGEgbGlzdCBvZiB0aGUgYXNzZXJ0aW9uIGZhaWx1cmVzLgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0QXNzZXJ0aW9uRXJyb3JzKCkKLSAgewotICAgIHJldHVybiBhc3NlcnRpb25lcnJvcnM7Ci0gIH0KLQotICAvKioKLSAgCSAqIE1ldGhvZCBnZXRBc3NlcnRpb25XYXJuaW5ncy4KLSAgCSAqIFJldHVybnMgYSBsaXN0IG9mIGFueSBhc3NlcnRpb24gd2FybmluZ3MgZ2VuZXJhdGVkIGZyb20gdmFsaWRhdGVDb25mb3JtYW5jZS4KLSAgCSAqIEByZXR1cm4gYSBsaXN0IG9mIGFueSBhc3NlcnRpb24gd2FybmluZ3MgZ2VuZXJhdGVkIGZyb20gdmFsaWRhdGVDb25mb3JtYW5jZS4KLSAgCSAqLwotICBwdWJsaWMgTGlzdCBnZXRBc3NlcnRpb25XYXJuaW5ncygpCi0gIHsKLSAgICByZXR1cm4gYXNzZXJ0aW9ud2FybmluZ3M7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXNldC4KLSAgICogQHBhcmFtIGZpbGVuYW1lIGxvZyBmaWxlIG5hbWUuCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXNldChTdHJpbmcgZmlsZW5hbWUpCi0gIHsKLQlpZiAoZmlsZW5hbWUgIT0gbnVsbCkKLQl7Ci0JICBTdHJpbmcgdG1wID0gZmlsZW5hbWUucmVwbGFjZSgnXFwnLCAnLycpOwotCSAgaWYgKCghdG1wLnN0YXJ0c1dpdGgoV1NJQ29uc3RhbnRzLkhUVFBfUFJFRklYKSkgJiYKLSAgICAgICAgICAoIXRtcC5zdGFydHNXaXRoKFdTSUNvbnN0YW50cy5GSUxFX1BSRUZJWCkpKQotCSAgewotCSAgICB0bXAgPSBXU0lDb25zdGFudHMuRklMRV9QUk9UT0NPTCArIHRtcDsKLQkgIH0KLQkgIHRyeQotCSAgewotCSAgICB3c2RsVVJJID0gVVJJRW5jb2Rlci5lbmNvZGUodG1wLCAiVVRGOCIpOwotCSAgfQotCSAgY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gdWVlKQotCSAgewotCSAgfQotCX0KLSAgCWFuYWx5emVyQ29uZmlncyA9IG5ldyBWZWN0b3IoKTsKLSAgCWFzc2VydGlvbmVycm9ycyA9IG5ldyBWZWN0b3IoKTsKLSAgCWFzc2VydGlvbndhcm5pbmdzID0gbmV3IFZlY3RvcigpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvYW5hbHl6ZXIvV1NJQW5hbHl6ZXJFeGNlcHRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9hbmFseXplci9XU0lBbmFseXplckV4Y2VwdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Nzc3ODUzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9hbmFseXplci9XU0lBbmFseXplckV4Y2VwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5hbmFseXplcjsKLQotLyoqCi0gKiBBbmFseXplckV4Y2VwdGlvbgotICogCi0gKiBFeGNlcHRpb24gdG8gYmUgdGhyb3duIGlmIGFuIGFuYWx5emVyIGZhaWxzCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0lBbmFseXplckV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgotewotICAvKioKLQkgKiBDb21tZW50IGZvciA8Y29kZT5zZXJpYWxWZXJzaW9uVUlEPC9jb2RlPgotCSAqLwotCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDM4MzUxNTgzNTAyMTkxOTQ2NzdMOwotCS8qKgotICAgKiBUaHJvd2FibGUuCi0gICAqLwotICBwcm90ZWN0ZWQgVGhyb3dhYmxlIHRocm93YWJsZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBBbmFseXplckV4Y2VwdGlvbi4KLSAgICovCi0gIHB1YmxpYyBXU0lBbmFseXplckV4Y2VwdGlvbigpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBBbmFseXplckV4Y2VwdGlvbi4KLSAgICogQHBhcmFtIHMgZGV0YWlsIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgV1NJQW5hbHl6ZXJFeGNlcHRpb24oU3RyaW5nIHMpCi0gIHsKLSAgICBzdXBlcihzKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYW4gZXhjZXB0aW9uIHdpdGggYSBtZXNzYWdlIGFuZCByZWxhdGVkIGV4Y2VwdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBtc2cgICAgICAgIHRoZSBleGNlcHRpb24gbWVzc2FnZQotICAgKiBAcGFyYW0gdGhyb3dhYmxlICB0aHJvd2FibGUgdGhhdCBpcyByZWxhdGVkIHRvIHRoaXMgZXhjZXB0aW9uCi0gICAqLwotICBwdWJsaWMgV1NJQW5hbHl6ZXJFeGNlcHRpb24oU3RyaW5nIG1zZywgVGhyb3dhYmxlIHRocm93YWJsZSkKLSAgewotICAgIC8vIEV4Y2VwdGlvbgotICAgIHN1cGVyKG1zZyk7Ci0KLSAgICAvLyBTYXZlIGlucHV0IHJlZmVyZW5jZQotICAgIHRoaXMudGhyb3dhYmxlID0gdGhyb3dhYmxlOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdCdzIHZhbHVlcy4KLSAgICoKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBkZXRhaWwgbWVzc2FnZSBvZiB0aGlzIHRocm93YWJsZSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UoKQotICB7Ci0gICAgcmV0dXJuIHN1cGVyLmdldE1lc3NhZ2UoKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhpcyBleGNlcHRpb24gdG8gYmUgY3JlYXRlZC4KLSAgICogCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgZW5jYXBzdWxhdGVkIHRocm93YWJsZSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgVGhyb3dhYmxlIGdldFRhcmdldEV4Y2VwdGlvbigpCi0gIHsKLSAgICAvLyBSZXR1cm4gdGhyb3dhYmxlCi0gICAgcmV0dXJuIHRocm93YWJsZTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvYW5hbHl6ZXIvV1NJQmFzaWNQcm9maWxlQW5hbHl6ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9hbmFseXplci9XU0lCYXNpY1Byb2ZpbGVBbmFseXplci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjliOTI4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9hbmFseXplci9XU0lCYXNpY1Byb2ZpbGVBbmFseXplci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5hbmFseXplcjsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLlRvb2xJbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkJhc2ljUHJvZmlsZUFuYWx5emVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5Qcm9maWxlVmFsaWRhdG9yRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5NZXNzYWdlTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmRvY3VtZW50LkRvY3VtZW50RmFjdG9yeUltcGw7Ci0KLS8qKgotICogV1NJQmFzaWNQcm9maWxlQW5hbHl6ZXIKLSAqIAotICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBCYXNpY1Byb2ZpbGVBbmFseXplciBmcm9tIHRoZSBXUy1JIFRlc3QgVG9vbHMgdGhhdAotICogYWxsb3dzIGNhbGxpbmcgY29kZSB0byBnZXQgdGhlIHJlcG9ydCBnZW5lcmF0ZWQgZnJvbSBXUy1JIHZhbGlkYXRpb24uCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0lCYXNpY1Byb2ZpbGVBbmFseXplciBleHRlbmRzIEJhc2ljUHJvZmlsZUFuYWx5emVyCi17Ci0gIC8qKgotICAgKiBEZWZhdWx0IGRvY3VtZW50IGZhY3RvcnkgY2xhc3MgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRl9ET0NVTUVOVF9GQUNUT1JZID0gIm9yZy5lY2xpcHNlLndzaS50ZXN0LnRvb2xzLnV0aWwuZG9jdW1lbnQuRG9jdW1lbnRGYWN0b3J5SW1wbCI7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBXU0lCYXNpY1Byb2ZpbGVBbmFseXplci4KLSAgICogQHBhcmFtIGFuYWx5emVyQ29uZmlnIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCi0gICAqIEBwYXJhbSB3c2RsVVJJIHRoZSBsb2NhdGlvbiBvZiB0aGUgV1NETCBkb2N1bWVudC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdW5hYmxlIHRvIGNyZWF0ZSBhIEJhc2ljIHByb2ZpbGUgYW5hbHl6ZXIuCi0gICAqLwotICBwdWJsaWMgV1NJQmFzaWNQcm9maWxlQW5hbHl6ZXIoTGlzdCBhbmFseXplckNvbmZpZywgU3RyaW5nIHdzZGxVUkkpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHN1cGVyKGFuYWx5emVyQ29uZmlnLCB3c2RsVVJJKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgV1NJQmFzaWNQcm9maWxlQW5hbHl6ZXIuCi0gICAqIEBwYXJhbSBhbmFseXplckNvbmZpZyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB1bmFibGUgdG8gY3JlYXRlIGEgQmFzaWMgcHJvZmlsZSBhbmFseXplci4KLSAgICovCi0gIHB1YmxpYyBXU0lCYXNpY1Byb2ZpbGVBbmFseXplcihMaXN0IGFuYWx5emVyQ29uZmlnKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBzdXBlcihhbmFseXplckNvbmZpZyk7Ci0gIH0KLQotICAvKioKLSAgICogQ29tbW9uIGluaXRpYWxpemF0aW9uLgotICAgKiBAcGFyYW0gdG9vbEluZm8gYSBUb29sSW5mbyBvYmplY3QuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW1zIGR1cmluZyBpbml0aWFsaXphdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGluaXQoVG9vbEluZm8gdG9vbEluZm8pIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRoaXMudG9vbEluZm8gPSB0b29sSW5mbzsKLSAgICAKLSAgICAvLyBDcmVhdGUgbWVzc2FnZSBsaXN0Ci0gICAgbWVzc2FnZUxpc3QgPSBuZXcgTWVzc2FnZUxpc3QoUkVTT1VSQ0VfQlVORExFX05BTUUpOwotCi0gICAgLy8gQ3JlYXRlIHByb2ZpbGUgdmFsaWRhdG9yIGZhY3RvcnkKLSAgICBmYWN0b3J5ID0gUHJvZmlsZVZhbGlkYXRvckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLQotICAgIC8vIENyZWF0ZSBkb2N1bWVudCBmYWN0b3J5Ci0gICAgZG9jdW1lbnRGYWN0b3J5ID0gbmV3IERvY3VtZW50RmFjdG9yeUltcGwoKTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0UmVwb3J0LgotICAgKiAKLSAgICogUmV0dXJuIHRoZSBSZXBvcnQgZ2VuZXJhdGVkIGJ5IHRoZSB2YWxpZGF0aW9uLgotICAgKiBAcmV0dXJuIHRoZSBSZXBvcnQgZ2VuZXJhdGVkIGJ5IHRoZSB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHVibGljIFJlcG9ydCBnZXRSZXBvcnQoKQotICB7Ci0gICAgcmV0dXJuIHJlcG9ydGVyLmdldFJlcG9ydCgpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL1Rvb2xFbnZpcm9ubWVudC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvVG9vbEVudmlyb25tZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YmVlM2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvVG9vbEVudmlyb25tZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlhNTEluZm87Ci0KLS8qKgotICogVGhpcyBjbGFzcyBjb250YWlucyBUb29sIGVudmlyb25tZW50IGluZm9ybWF0aW9uLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBUb29sRW52aXJvbm1lbnQKLXsKLSAgLyoqCi0gICAqIEVsZW1lbnQgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTkFNRSA9IFdTSUNvbnN0YW50cy5FTEVNX0VOVklST05NRU5UOwotCi0gIC8qKgotICAgKiBRTmFtZS4KLSAgICovCi0gIC8vcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRSA9IG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9DT01NT04sIEVMRU1fTkFNRSk7Ci0KLSAgLyoqCi0gICAqIFRvb2wgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHJ1bnRpbWVOYW1lID0gU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLnJ1bnRpbWUubmFtZSIpOwotICBwcm90ZWN0ZWQgU3RyaW5nIHJ1bnRpbWVWZXJzaW9uID0gU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLnJ1bnRpbWUudmVyc2lvbiIpOwotCi0gIHByb3RlY3RlZCBTdHJpbmcgb3NOYW1lID0gU3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIik7Ci0gIHByb3RlY3RlZCBTdHJpbmcgb3NWZXJzaW9uID0gU3lzdGVtLmdldFByb3BlcnR5KCJvcy52ZXJzaW9uIik7Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyB4bWxQYXJzZXJOYW1lID0gIj8iOwotICBwcm90ZWN0ZWQgU3RyaW5nIHhtbFBhcnNlclZlcnNpb24gPSAiPyI7Ci0KLSAgLyoqCi0gICAqIEFkZGl0aW9uYWwgdG9vbCBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCBYTUxJbmZvIHhtbEluZm8gPSBudWxsOwotCi0gIC8qKgotICAgKiBDcmVhdGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0b29sIHJ1bnRpbWUgZW52aXJvbm1lbnQuCi0gICAqLwotICBwdWJsaWMgVG9vbEVudmlyb25tZW50KCkKLSAgewotICAgIHRyeQotICAgIHsKLQotICAgICAgLy8gRlVUVVJFOiBtYWRlIGNvbXBhdGlibGUgd2l0aCBsYXRlciB2ZXJzaW9ucyBvZiBYZXJjZXMgd2hlcmUgZ2V0VmVyc2lvbgotICAgICAgLy8gaXMgbm8gbG9uZ2VyIHN0YXRpY2FsbHkgYXZhaWxhYmxlLgotICAgICAgLy8geG1sUGFyc2VyVmVyc2lvbiA9IG5ldyBvcmcuYXBhY2hlLnhlcmNlcy5pbXBsLlZlcnNpb24oKS5nZXRWZXJzaW9uKCk7Ci0gICAgICB4bWxQYXJzZXJWZXJzaW9uID0gb3JnLmFwYWNoZS54ZXJjZXMuaW1wbC5WZXJzaW9uLmdldFZlcnNpb24oKTsKLQotICAgICAgeG1sUGFyc2VyTmFtZSA9ICJBcGFjaGUgWGVyY2VzIjsKLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gQUREOiBIb3cgZWxzZSBjYW4gd2UgZ2V0IHRoZSBuYW1lIHZlcnNpb24gbnVtYmVyCi0gICAgfQotCi0gICAgY2F0Y2ggKEVycm9yIGVycikKLSAgICB7Ci0gICAgICAvLyBBREQ6IEhvdyBlbHNlIGNhbiB3ZSBnZXQgdGhlIG5hbWUgdmVyc2lvbiBudW1iZXIKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdG9vbCBydW50aW1lIGVudmlyb25tZW50LgotICAgKiBAcGFyYW0geG1sSW5mbyBhZGRpdGlvbmFsIHRvb2wgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24uCi0gICAqLwotICBwdWJsaWMgVG9vbEVudmlyb25tZW50KFhNTEluZm8geG1sSW5mbykKLSAgewotICAgIHRoaXMueG1sSW5mbyA9IHhtbEluZm87Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgb3NOYW1lLgotICAgKiBAcmV0dXJuIHRoZSBvc05hbWUuCi0gICAqIEBzZWUgI3NldE9TTmFtZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRPU05hbWUoKQotICB7Ci0gICAgcmV0dXJuIG9zTmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBvc1ZlcnNpb24uCi0gICAqIEByZXR1cm4gdGhlIG9zVmVyc2lvbi4KLSAgICogQHNlZSAjc2V0T1NWZXJzaW9uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE9TVmVyc2lvbigpCi0gIHsKLSAgICByZXR1cm4gb3NWZXJzaW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHBhcnNlck5hbWUuCi0gICAqIEByZXR1cm4gdGhlIHBhcnNlck5hbWUuCi0gICAqIEBzZWUgI3NldFhNTFBhcnNlck5hbWUKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0WE1MUGFyc2VyTmFtZSgpCi0gIHsKLSAgICByZXR1cm4geG1sUGFyc2VyTmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBwYXJzZXJWZXJzaW9uLgotICAgKiBAcmV0dXJuIHRoZSBwYXJzZXJWZXJzaW9uLgotICAgKiBAc2VlICNzZXRYTUxQYXJzZXJWZXJzaW9uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFhNTFBhcnNlclZlcnNpb24oKQotICB7Ci0gICAgcmV0dXJuIHhtbFBhcnNlclZlcnNpb247Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcnVudGltZU5hbWUuCi0gICAqIEByZXR1cm4gdGhlIHJ1bnRpbWVOYW1lLgotICAgKiBAc2VlICNzZXRSdW50aW1lTmFtZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSdW50aW1lTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gcnVudGltZU5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcnVudGltZVZlcnNpb24uCi0gICAqIEByZXR1cm4gdGhlIHJ1bnRpbWVWZXJzaW9uLgotICAgKiBAc2VlICNzZXRSdW50aW1lVmVyc2lvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSdW50aW1lVmVyc2lvbigpCi0gIHsKLSAgICByZXR1cm4gcnVudGltZVZlcnNpb247Ci0gIH0KLQotICAvKioKLSAgICogU2V0cyB0aGUgb3NOYW1lLgotICAgKiBAcGFyYW0gb3NOYW1lIHRoZSBvc05hbWUgdG8gc2V0LgotICAgKiBAc2VlICNnZXRPU05hbWUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE9TTmFtZShTdHJpbmcgb3NOYW1lKQotICB7Ci0gICAgdGhpcy5vc05hbWUgPSBvc05hbWU7Ci0gIH0KLQotICAvKioKLSAgICogU2V0cyB0aGUgb3NWZXJzaW9uLgotICAgKiBAcGFyYW0gb3NWZXJzaW9uIHRoZSBvc1ZlcnNpb24gdG8gc2V0LgotICAgKiBAc2VlICNnZXRPU1ZlcnNpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE9TVmVyc2lvbihTdHJpbmcgb3NWZXJzaW9uKQotICB7Ci0gICAgdGhpcy5vc1ZlcnNpb24gPSBvc1ZlcnNpb247Ci0gIH0KLQotICAvKioKLSAgICogU2V0cyB0aGUgcGFyc2VyTmFtZS4KLSAgICogQHBhcmFtIHhtbFBhcnNlck5hbWUgdGhlIHBhcnNlck5hbWUgdG8gc2V0LgotICAgKiBAc2VlICNnZXRYTUxQYXJzZXJOYW1lCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRYTUxQYXJzZXJOYW1lKFN0cmluZyB4bWxQYXJzZXJOYW1lKQotICB7Ci0gICAgdGhpcy54bWxQYXJzZXJOYW1lID0geG1sUGFyc2VyTmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBwYXJzZXJWZXJzaW9uLgotICAgKiBAcGFyYW0geG1sUGFyc2VyVmVyc2lvbiB0aGUgcGFyc2VyVmVyc2lvbiB0byBzZXQuCi0gICAqIEBzZWUgI2dldFhNTFBhcnNlclZlcnNpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFhNTFBhcnNlclZlcnNpb24oU3RyaW5nIHhtbFBhcnNlclZlcnNpb24pCi0gIHsKLSAgICB0aGlzLnhtbFBhcnNlclZlcnNpb24gPSB4bWxQYXJzZXJWZXJzaW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHJ1bnRpbWVOYW1lLgotICAgKiBAcGFyYW0gcnVudGltZU5hbWUgdGhlIHJ1bnRpbWVOYW1lIHRvIHNldC4KLSAgICogQHNlZSAjZ2V0UnVudGltZU5hbWUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJ1bnRpbWVOYW1lKFN0cmluZyBydW50aW1lTmFtZSkKLSAgewotICAgIHRoaXMucnVudGltZU5hbWUgPSBydW50aW1lTmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBydW50aW1lVmVyc2lvbi4KLSAgICogQHBhcmFtIHJ1bnRpbWVWZXJzaW9uIHRoZSBydW50aW1lVmVyc2lvbiB0byBzZXQuCi0gICAqIEBzZWUgI2dldFJ1bnRpbWVWZXJzaW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSdW50aW1lVmVyc2lvbihTdHJpbmcgcnVudGltZVZlcnNpb24pCi0gIHsKLSAgICB0aGlzLnJ1bnRpbWVWZXJzaW9uID0gcnVudGltZVZlcnNpb247Ci0gIH0KLQotICAvKioKLSAgICogU2V0cyB0aGUgYWRkaXRpb25hbCBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbi4KLSAgICogQHBhcmFtIHhtbEluZm8gYWRkaXRpb25hbCB0b29sIGVudmlyb25tZW50IGluZm9ybWF0aW9uLgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QWRkaXRpb25hbFRvb2xFbnZpcm9ubWVudChYTUxJbmZvIHhtbEluZm8pCi0gIHsKLSAgICB0aGlzLnhtbEluZm8gPSB4bWxJbmZvOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybiBYTUwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LiAKLSAgICogQHBhcmFtIG5hbWVzcGFjZU5hbWUgIHRoZSBuYW1lc3BhY2UgcHJlZml4LgotICAgKiBAcmV0dXJuIHRoZSBYTUwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LiAKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCFuc05hbWUuZXF1YWxzKCIiKSkKLSAgICAgIG5zTmFtZSArPSAiOiI7Ci0KLSAgICAvLyBTdGFydCBlbGVtZW50Ci0gICAgcHcucHJpbnRsbigiICAgIDwiICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIj4iKTsKLQotICAgIHB3LnByaW50KCIgICAgICA8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX1JVTlRJTUUgKyAiICIpOwotICAgIHB3LnByaW50KFdTSUNvbnN0YW50cy5BVFRSX05BTUUgKyAiPVwiIiArIHJ1bnRpbWVOYW1lICsgIlwiICIpOwotICAgIHB3LnByaW50bG4oV1NJQ29uc3RhbnRzLkFUVFJfVkVSU0lPTiArICI9XCIiICsgcnVudGltZVZlcnNpb24gKyAiXCIvPiIpOwotICAgIHB3LnByaW50KCIgICAgICA8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX09QRVJBVElOR19TWVNURU0gKyAiICIpOwotICAgIHB3LnByaW50KFdTSUNvbnN0YW50cy5BVFRSX05BTUUgKyAiPVwiIiArIG9zTmFtZSArICJcIiAiKTsKLSAgICBwdy5wcmludGxuKFdTSUNvbnN0YW50cy5BVFRSX1ZFUlNJT04gKyAiPVwiIiArIG9zVmVyc2lvbiArICJcIi8+Iik7Ci0gICAgcHcucHJpbnQoIiAgICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fWE1MX1BBUlNFUiArICIgIik7Ci0gICAgcHcucHJpbnQoV1NJQ29uc3RhbnRzLkFUVFJfTkFNRSArICI9XCIiICsgeG1sUGFyc2VyTmFtZSArICJcIiAiKTsKLSAgICBwdy5wcmludGxuKFdTSUNvbnN0YW50cy5BVFRSX1ZFUlNJT04gKyAiPVwiIiArIHhtbFBhcnNlclZlcnNpb24gKyAiXCIvPiIpOwotCi0gICAgLy8gSWYgYWRkdGlvbmFsIGluZm8sIHRoZW4gZ2V0IGl0Ci0gICAgaWYgKHhtbEluZm8gIT0gbnVsbCkKLSAgICAgIHB3LnByaW50KHhtbEluZm8udG9YTUxTdHJpbmcobnNOYW1lKSk7Ci0KLSAgICAvLyBFbmQgZWxlbWVudAotICAgIHB3LnByaW50bG4oIiAgICA8LyIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiPiIpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL1Rvb2xJbmZvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9Ub29sSW5mby5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjk3ZWY0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL1Rvb2xJbmZvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlOwotCi1pbXBvcnQgamF2YS5pby5GaWxlV3JpdGVyOwotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5YTUxJbmZvOwotCi0vKioKLSAqIEluZm9ybWF0aW9uIHRoYXQgZGVzY3JpYmVzIGEgY29uZm9ybWFuY2UgdG9vbC4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBUb29sSW5mbwotewotICAvKioKLSAgICogVG9vbCBpbmZvcm1hdGlvbiBwcm9wZXJ0eSBuYW1lcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BfVE9PTF9WRVJTSU9OID0gIndzaS50b29sLnZlcnNpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QX1RPT0xfUkVMRUFTRV9EQVRFID0gIndzaS50b29sLnJlbGVhc2UuZGF0ZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BfVE9PTF9JTVBMRU1FTlRFUiA9ICJ3c2kudG9vbC5pbXBsZW1lbnRlciI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BfVE9PTF9MT0NBVElPTiA9ICJ3c2kudG9vbC5sb2NhdGlvbiI7Ci0KLSAgLyoqCi0gICAqIERlZmF1bHQgdG9vbCBpbmZvcm1hdGlvbiBwcm9wZXJ0eSB2YWx1ZXMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGX1RPT0xfVkVSU0lPTiA9ICIxLjAuMSI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZfVE9PTF9SRUxFQVNFX0RBVEUgPSAiMjAwNC0wMS0yMiI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZfVE9PTF9JTVBMRU1FTlRFUiA9ICJFY2xpcHNlLm9yZyBPcmdhbml6YXRpb24iOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGX1RPT0xfTE9DQVRJT04gPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c3Z0IjsKLQotICAvKioKLSAgICogVG9vbCBpbmZvcm1hdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgbmFtZTsKLSAgcHJvdGVjdGVkIFN0cmluZyB2ZXJzaW9uOwotICBwcm90ZWN0ZWQgU3RyaW5nIHJlbGVhc2VEYXRlOwotICBwcm90ZWN0ZWQgU3RyaW5nIGltcGxlbWVudGVyOwotICBwcm90ZWN0ZWQgU3RyaW5nIGxvY2F0aW9uOwotCi0gIC8qKgotICAgKiBUb29sIGVudmlyb25tZW50LgotICAgKi8KLSAgcHJvdGVjdGVkIFRvb2xFbnZpcm9ubWVudCB0b29sRW52aXJvbm1lbnQgPSBudWxsOwotCi0gIC8qKgotICAgKiBUb29sIGluZm8gcHJvcGVydGllcyBmaWxlbmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BfRklMRU5BTUUgPSAib3JnLndzaS50ZXN0LnRvb2xpbmZvIjsKLQotICAvKioKLSAgICogQ3JlYXRlIHRvb2wgaW5mb3JtYXRpb24uCi0gICAqLwotICBwdWJsaWMgVG9vbEluZm8oKQotICB7Ci0gICAgdGhpcy50b29sRW52aXJvbm1lbnQgPSBuZXcgVG9vbEVudmlyb25tZW50KCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIHRvb2wgaW5mb3JtYXRpb24gZnJvbSBpbmZvcm1hdGlvbiBpbiB0aGUgdG9vbGluZm8ucHJvcGVydGllcyBmaWxlLgotICAgKiBAcGFyYW0gbmFtZSAgdGhlIHRvb2wgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBUb29sSW5mbyhTdHJpbmcgbmFtZSkKLSAgewotICAgIHRoaXMubmFtZSA9IG5hbWU7Ci0KLSAgICBnZXRQcm9wZXJ0aWVzKCk7Ci0KLSAgICB0aGlzLnRvb2xFbnZpcm9ubWVudCA9IG5ldyBUb29sRW52aXJvbm1lbnQoKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgdG9vbCBpbmZvcm1hdGlvbi4KLSAgICogQHBhcmFtIG5hbWUgICAgICAgICB0aGUgdG9vbCBuYW1lLgotICAgKiBAcGFyYW0gdmVyc2lvbiAgICAgIHRoZSB2ZXJzaW9uIG9mIHRoZSB0b29sLgotICAgKiBAcGFyYW0gcmVsZWFzZURhdGUgIHRoZSByZWxlYXNlIGRhdGUgb2YgdGhlIHRvb2wuCi0gICAqIEBwYXJhbSBpbXBsZW1lbnRlciAgdGhlIGltcGxlbWVudGVyIG9mIHRoZSB0b29sLgotICAgKiBAcGFyYW0gbG9jYXRpb24gICAgIHRoZSBpbXBsZW1lbnRlciBsb2NhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBUb29sSW5mbygKLSAgICBTdHJpbmcgbmFtZSwKLSAgICBTdHJpbmcgdmVyc2lvbiwKLSAgICBTdHJpbmcgcmVsZWFzZURhdGUsCi0gICAgU3RyaW5nIGltcGxlbWVudGVyLAotICAgIFN0cmluZyBsb2NhdGlvbikKLSAgewotICAgIHRoaXMubmFtZSA9IG5hbWU7Ci0gICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjsKLSAgICB0aGlzLnJlbGVhc2VEYXRlID0gcmVsZWFzZURhdGU7Ci0gICAgdGhpcy5pbXBsZW1lbnRlciA9IGltcGxlbWVudGVyOwotICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjsKLQotICAgIHRoaXMudG9vbEVudmlyb25tZW50ID0gbmV3IFRvb2xFbnZpcm9ubWVudCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSB0b29sIGluZm9ybWF0aW9uIHdpdGggdG9vbCB1bmlxdWUgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24uCi0gICAqIEBwYXJhbSBuYW1lICAgICAgICAgdGhlIHRvb2wgbmFtZS4KLSAgICogQHBhcmFtIHZlcnNpb24gICAgICB0aGUgdmVyc2lvbiBvZiB0aGUgdG9vbC4KLSAgICogQHBhcmFtIHJlbGVhc2VEYXRlICB0aGUgcmVsZWFzZSBkYXRlIG9mIHRoZSB0b29sLgotICAgKiBAcGFyYW0gaW1wbGVtZW50ZXIgIHRoZSBpbXBsZW1lbnRlciBvZiB0aGUgdG9vbC4KLSAgICogQHBhcmFtIGxvY2F0aW9uICAgICB0aGUgaW1wbGVtZW50ZXIgbG9jYXRpb24uCi0gICAqIEBwYXJhbSB4bWxJbmZvICAgICAgYWRkaXRpb25hbCB0b29sIGVudmlyb25tZW50IGluZm9ybWF0aW9uLgotICAgKi8KLSAgcHVibGljIFRvb2xJbmZvKAotICAgIFN0cmluZyBuYW1lLAotICAgIFN0cmluZyB2ZXJzaW9uLAotICAgIFN0cmluZyByZWxlYXNlRGF0ZSwKLSAgICBTdHJpbmcgaW1wbGVtZW50ZXIsCi0gICAgU3RyaW5nIGxvY2F0aW9uLAotICAgIFhNTEluZm8geG1sSW5mbykKLSAgewotICAgIHRoaXMubmFtZSA9IG5hbWU7Ci0gICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjsKLSAgICB0aGlzLnJlbGVhc2VEYXRlID0gcmVsZWFzZURhdGU7Ci0gICAgdGhpcy5pbXBsZW1lbnRlciA9IGltcGxlbWVudGVyOwotICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjsKLQotICAgIHRoaXMudG9vbEVudmlyb25tZW50ID0gbmV3IFRvb2xFbnZpcm9ubWVudCh4bWxJbmZvKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgbmFtZS4KLSAgICogQHJldHVybiBuYW1lLgotICAgKiBAc2VlICNzZXROYW1lCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIG5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHZlcnNpb24uCi0gICAqIEByZXR1cm4gdmVyc2lvbi4KLSAgICogQHNlZSAjc2V0VmVyc2lvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRWZXJzaW9uKCkKLSAgewotICAgIHJldHVybiB2ZXJzaW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCByZWxlYXNlIGRhdGUuCi0gICAqIEByZXR1cm4gcmVsZWFzZSBkYXRlLgotICAgKiBAc2VlICNzZXRSZWxlYXNlRGF0ZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSZWxlYXNlRGF0ZSgpCi0gIHsKLSAgICByZXR1cm4gcmVsZWFzZURhdGU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGltcGxlbWVudGVyLgotICAgKiBAcmV0dXJuIGltcGxlbWVudGVyLgotICAgKiBAc2VlICNzZXRJbXBsZW1lbnRlcgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRJbXBsZW1lbnRlcigpCi0gIHsKLSAgICByZXR1cm4gaW1wbGVtZW50ZXI7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGltcGxlbWVudGVyIGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIGltcGxlbWVudGVyIGxvY2F0aW9uLgotICAgKiBAc2VlICNzZXRMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gbG9jYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdG9vbEVudmlyb25tZW50LgotICAgKiBAcmV0dXJuIFRvb2xFbnZpcm9ubWVudAotICAgKiBAc2VlICNzZXRUb29sRW52aXJvbm1lbnQKLSAgICovCi0gIHB1YmxpYyBUb29sRW52aXJvbm1lbnQgZ2V0VG9vbEVudmlyb25tZW50KCkKLSAgewotICAgIHJldHVybiB0b29sRW52aXJvbm1lbnQ7Ci0gIH0KLQotICAvKioKLSAgICogU2V0cyB0aGUgaW1wbGVtZW50ZXIuCi0gICAqIEBwYXJhbSBpbXBsZW1lbnRlciB0aGUgaW1wbGVtZW50ZXIgdG8gc2V0LgotICAgKiBAc2VlICNnZXRJbXBsZW1lbnRlcgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SW1wbGVtZW50ZXIoU3RyaW5nIGltcGxlbWVudGVyKQotICB7Ci0gICAgdGhpcy5pbXBsZW1lbnRlciA9IGltcGxlbWVudGVyOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIGxvY2F0aW9uLgotICAgKiBAcGFyYW0gbG9jYXRpb24gdGhlIGxvY2F0aW9uIHRvIHNldC4KLSAgICogQHNlZSAjZ2V0TG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKFN0cmluZyBsb2NhdGlvbikKLSAgewotICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBuYW1lLgotICAgKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSB0byBzZXQuCi0gICAqIEBzZWUgI2dldE5hbWUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHJlbGVhc2VEYXRlLgotICAgKiBAcGFyYW0gcmVsZWFzZURhdGUgdGhlIHJlbGVhc2VEYXRlIHRvIHNldC4KLSAgICogQHNlZSAjZ2V0UmVsZWFzZURhdGUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlbGVhc2VEYXRlKFN0cmluZyByZWxlYXNlRGF0ZSkKLSAgewotICAgIHRoaXMucmVsZWFzZURhdGUgPSByZWxlYXNlRGF0ZTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB0b29sRW52aXJvbm1lbnQuCi0gICAqIEBwYXJhbSB0b29sRW52aXJvbm1lbnQgdGhlIHRvb2xFbnZpcm9ubWVudCB0byBzZXQuCi0gICAqIEBzZWUgI2dldFRvb2xFbnZpcm9ubWVudAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VG9vbEVudmlyb25tZW50KFRvb2xFbnZpcm9ubWVudCB0b29sRW52aXJvbm1lbnQpCi0gIHsKLSAgICB0aGlzLnRvb2xFbnZpcm9ubWVudCA9IHRvb2xFbnZpcm9ubWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB0b29sRW52aXJvbm1lbnQuCi0gICAqIEBwYXJhbSB4bWxJbmZvIGFkZGl0aW9uYWwgdG9vbCBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbi4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEFkZGl0aW9uYWxUb29sRW52aXJvbm1lbnQoWE1MSW5mbyB4bWxJbmZvKQotICB7Ci0gICAgdGhpcy50b29sRW52aXJvbm1lbnQuc2V0QWRkaXRpb25hbFRvb2xFbnZpcm9ubWVudCh4bWxJbmZvKTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSB2ZXJzaW9uLgotICAgKiBAcGFyYW0gdmVyc2lvbiB0aGUgdmVyc2lvbiB0byBzZXQuCi0gICAqIEBzZWUgI2dldFZlcnNpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFZlcnNpb24oU3RyaW5nIHZlcnNpb24pCi0gIHsKLSAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybiBzdGFydCBYTUwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKiBAcGFyYW0gbmFtZXNwYWNlTmFtZSAgdGhlIG5hbWVzcGFjZSBwcmVmaXguCi0gICAqIEByZXR1cm4gdGhlIHN0YXJ0IFhNTCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuIAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTdGFydFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoIW5zTmFtZS5lcXVhbHMoIiIpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIHB3LnByaW50KCIgIDwiICsgbnNOYW1lICsgZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCkgKyAiICIpOwotICAgIHB3LnByaW50KFdTSUNvbnN0YW50cy5BVFRSX1ZFUlNJT04gKyAiPVwiIiArIGdldFZlcnNpb24oKSArICJcIiAiKTsKLSAgICBwdy5wcmludGxuKAotICAgICAgV1NJQ29uc3RhbnRzLkFUVFJfUkVMRUFTRV9EQVRFICsgIj1cIiIgKyBnZXRSZWxlYXNlRGF0ZSgpICsgIlwiPiIpOwotCi0gICAgcHcucHJpbnQoIiAgICA8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX0lNUExFTUVOVEVSICsgIiAiKTsKLSAgICBwdy5wcmludChXU0lDb25zdGFudHMuQVRUUl9OQU1FICsgIj1cIiIgKyBnZXRJbXBsZW1lbnRlcigpICsgIlwiICIpOwotICAgIHB3LnByaW50bG4oV1NJQ29uc3RhbnRzLkFUVFJfTE9DQVRJT04gKyAiPVwiIiArIGdldExvY2F0aW9uKCkgKyAiXCIvPiIpOwotCi0gICAgLy8gRW52aXJvbm1lbnQKLSAgICBwdy5wcmludCh0b29sRW52aXJvbm1lbnQudG9YTUxTdHJpbmcobmFtZXNwYWNlTmFtZSkpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJuIHRoZSBlbmQgWE1MIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICogQHBhcmFtIG5hbWVzcGFjZU5hbWUgIHRoZSBuYW1lc3BhY2UgcHJlZml4LgotICAgKiBAcmV0dXJuIHRoZSBlbmQgWE1MIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4gCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEVuZFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoIW5zTmFtZS5lcXVhbHMoIiIpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIHB3LnByaW50bG4oIiAgPC8iICsgbnNOYW1lICsgZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCkgKyAiPiIpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHZhbHVlcyBmcm9tIHRoZSB0b29scy5wcm9wZXJ0aWVzIGZpbGUuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBnZXRQcm9wZXJ0aWVzKCkKLSAgewotICAgIC8vUHJvcGVydGllcyBwcm9wcyA9IG5ldyBQcm9wZXJ0aWVzKCk7Ci0gICAgUmVzb3VyY2VCdW5kbGUgcmVzb3VyY2VCdW5kbGU7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBUcnkgdG8gbG9hZCBwcm9wZXJ0aWVzIGZyb20gd3NpLnByb3BlcnRpZXMKLSAgICAgIC8vSW5wdXRTdHJlYW0gaXMgPSBVdGlscy5nZXRJbnB1dFN0cmVhbShQUk9QX0ZJTEVOQU1FKTsKLQotICAgICAgLy8gTG9hZCBwcm9wZXJ0aWVzIGZyb20gZmlsZQotICAgICAgLy9wcm9wcy5sb2FkKGlzKTsKLQotICAgICAgLy8gR2V0IHJlc291cmNlCi0gICAgICByZXNvdXJjZUJ1bmRsZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShQUk9QX0ZJTEVOQU1FKTsKLQotICAgICAgLy8gR2V0IHByb3BlcnR5IHZhbHVlcwotICAgICAgdGhpcy52ZXJzaW9uID0KLSAgICAgICAgZ2V0UHJvcGVydHkocmVzb3VyY2VCdW5kbGUsIFBST1BfVE9PTF9WRVJTSU9OLCBERUZfVE9PTF9WRVJTSU9OKTsKLSAgICAgIHRoaXMucmVsZWFzZURhdGUgPQotICAgICAgICBnZXRQcm9wZXJ0eSgKLSAgICAgICAgICByZXNvdXJjZUJ1bmRsZSwKLSAgICAgICAgICBQUk9QX1RPT0xfUkVMRUFTRV9EQVRFLAotICAgICAgICAgIERFRl9UT09MX1JFTEVBU0VfREFURSk7Ci0gICAgICB0aGlzLmltcGxlbWVudGVyID0KLSAgICAgICAgZ2V0UHJvcGVydHkoCi0gICAgICAgICAgcmVzb3VyY2VCdW5kbGUsCi0gICAgICAgICAgUFJPUF9UT09MX0lNUExFTUVOVEVSLAotICAgICAgICAgIERFRl9UT09MX0lNUExFTUVOVEVSKTsKLSAgICAgIHRoaXMubG9jYXRpb24gPQotICAgICAgICBnZXRQcm9wZXJ0eShyZXNvdXJjZUJ1bmRsZSwgUFJPUF9UT09MX0xPQ0FUSU9OLCBERUZfVE9PTF9MT0NBVElPTik7Ci0gICAgfQotCi0gICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBtcmUpCi0gICAgewotICAgICAgLy8gREVCVUc6Ci0gICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiRXhjZXB0aW9uIGxvYWRpbmcgcHJvcGVydGllczogICIgKyBlLnRvU3RyaW5nKCkpOwotCi0gICAgICAvLyBTZXQgZGVmYXVsdCBwcm9wZXJ0eSB2YWx1ZXMKLSAgICAgIHRoaXMudmVyc2lvbiA9IERFRl9UT09MX1ZFUlNJT047Ci0gICAgICB0aGlzLnJlbGVhc2VEYXRlID0gREVGX1RPT0xfUkVMRUFTRV9EQVRFOwotICAgICAgdGhpcy5pbXBsZW1lbnRlciA9IERFRl9UT09MX0lNUExFTUVOVEVSOwotICAgICAgdGhpcy5sb2NhdGlvbiA9IERFRl9UT09MX0xPQ0FUSU9OOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBHZXQgcHJvcGVydHkuCi0gICAqIEBwYXJhbSByZXNvdXJjZUJ1bmRsZSAgYSByZXNvdXJjZSBidW5kbGUuCi0gICAqIEBwYXJhbSBrZXkgICAgICAgICAgICAgYSBrZXkuCi0gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgICAgYSBkZWZhdWx0IHZhbHVlLgotICAgKiBAcmV0dXJuIHByb3BlcnR5LiBJZiBub3QgZm91bmQgcmV0dXJuIGRlZmF1bHQgdmFsdWUuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGdldFByb3BlcnR5KAotICAgIFJlc291cmNlQnVuZGxlIHJlc291cmNlQnVuZGxlLAotICAgIFN0cmluZyBrZXksCi0gICAgU3RyaW5nIGRlZmF1bHRWYWx1ZSkKLSAgewotICAgIFN0cmluZyB2YWx1ZTsKLQotICAgIGlmICgodmFsdWUgPSByZXNvdXJjZUJ1bmRsZS5nZXRTdHJpbmcoa2V5KSkgPT0gbnVsbCkKLSAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlOwotCi0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSB0aGUgdG9vbHMucHJvcGVydGllcyBmaWxlIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KLSAgICogVGhlIGlucHV0IGFyZ3VlbWVudHMgYXJlOgotICAgKiA8b2w+Ci0gICAqIDxsaT5GaWxlbmFtZSBmb3IgdGhlIHByb3BlcnRpZXMgZmlsZSB0byBjcmVhdGUKLSAgICogPGxpPlZlcnNpb24gbnVtYmVyCi0gICAqIDxsaT4KLSAgICogPC9vbD4KLSAgICogQHBhcmFtIGFyZ3MgIHRoZSBhcmd1bWVudHMgZm9yIG1haW4uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQotICB7Ci0gICAgaW50IHN0YXR1c0NvZGUgPSAwOwotICAgIFN0cmluZyBmaWxlbmFtZSA9IFBST1BfRklMRU5BTUU7Ci0gICAgU3RyaW5nIHZlcnNpb24gPSBERUZfVE9PTF9WRVJTSU9OOwotICAgIFN0cmluZyBpbXBsZW1lbnRlciA9IERFRl9UT09MX0lNUExFTUVOVEVSOwotICAgIFN0cmluZyBsb2NhdGlvbiA9IERFRl9UT09MX0xPQ0FUSU9OOwotCi0gICAgLy8gU2V0IHRoZSBmaWxlIG5hbWUKLSAgICBpZiAoYXJncy5sZW5ndGggPj0gMSkKLSAgICAgIGZpbGVuYW1lID0gYXJnc1swXTsKLQotICAgIGlmIChhcmdzLmxlbmd0aCA+PSAyKQotICAgICAgdmVyc2lvbiA9IGFyZ3NbMV07Ci0KLSAgICBpZiAoYXJncy5sZW5ndGggPj0gMykKLSAgICAgIGltcGxlbWVudGVyID0gYXJnc1syXTsKLQotICAgIGlmIChhcmdzLmxlbmd0aCA+PSA0KQotICAgICAgbG9jYXRpb24gPSBhcmdzWzNdOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gQ3JlYXRlIGZpbGUgd3JpdGVyCi0gICAgICBGaWxlV3JpdGVyIGZpbGVXcml0ZXIgPSBuZXcgRmlsZVdyaXRlcihmaWxlbmFtZSk7Ci0KLSAgICAgIC8vIENyZWF0ZSBwcmludCB3cml0ZXIKLSAgICAgIFByaW50V3JpdGVyIHByaW50V3JpdGVyID0gbmV3IFByaW50V3JpdGVyKGZpbGVXcml0ZXIpOwotCi0gICAgICAvLyBXcml0ZSBvdXQgY29udGVudHMgb2YgcHJvcGVydGllcyBmaWxlCi0gICAgICBwcmludFdyaXRlci5wcmludGxuKENPTU1FTlRTKTsKLSAgICAgIHByaW50V3JpdGVyLnByaW50bG4oUFJPUF9UT09MX1ZFUlNJT04gKyAiPSIgKyB2ZXJzaW9uKTsKLSAgICAgIHByaW50V3JpdGVyLnByaW50bG4oUFJPUF9UT09MX1JFTEVBU0VfREFURSArICI9IiArIFV0aWxzLmdldERhdGUoKSk7Ci0gICAgICBwcmludFdyaXRlci5wcmludGxuKFBST1BfVE9PTF9JTVBMRU1FTlRFUiArICI9IiArIGltcGxlbWVudGVyKTsKLSAgICAgIHByaW50V3JpdGVyLnByaW50bG4oUFJPUF9UT09MX0xPQ0FUSU9OICsgIj0iICsgbG9jYXRpb24pOwotCi0gICAgICAvLyBDbG9zZSBmaWxlIHdyaXRlcgotICAgICAgZmlsZVdyaXRlci5jbG9zZSgpOwotCi0gICAgICAvLyBEb25lCi0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZpbGUgWyIgKyBmaWxlbmFtZSArICJdIGNyZWF0ZWQuIik7Ci0gICAgfQotCi0gICAgY2F0Y2ggKGphdmEuaW8uSU9FeGNlcHRpb24gaW9lKQotICAgIHsKLSAgICAgIHN0YXR1c0NvZGUgPSAxOwotICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFWENFUFRJT046ICIgKyBpb2UudG9TdHJpbmcoKSk7Ci0gICAgICBpb2UucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotCi0gICAgLy8gRXhpdAotICAgIFN5c3RlbS5leGl0KHN0YXR1c0NvZGUpOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPTU1FTlRTID0gIiI7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9XU0lDb25zdGFudHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL1dTSUNvbnN0YW50cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWM3YzQ3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL1dTSUNvbnN0YW50cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMyBJQk0gQ29ycG9yYXRpb24sIFBhcmFzb2Z0IGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gICAgICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogICBQYXJhc29mdCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZTsKLQotLyoqCi0gKiBXUy1JIGNvbnN0YW50cy4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQGF1dGhvciBKaW0gQ2x1bmUKLSAqIEBhdXRob3IgR3JhaGFtIFR1cnJlbGwgKGd0dXJyZWxsQHVrLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgV1NJQ29uc3RhbnRzIHsKLQotCS8qKgotCSAqIFhNTCBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgWE1MX0RFQ0wgPSAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+IjsKLQotCS8qKgotCSAqIFhNTCBuYW1lc3BhY2UgVVJJLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV9YTUxOUyA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfVVJJX1hNTCA9ICAiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIjsKLQkvKioKLQkgKiBYTUwgc2NoZW1hIG5hbWVzcGFjZSBVUkkuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfVVJJX1hTRCA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI7Ci0KLQkvKioKLQkgKiBYTUwgc2NoZW1hIGxvY2F0aW9uLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFhTRF9TQ0hFTUFfTE9DQVRJT04gPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEueHNkIjsKLQotCS8qKgotCSAqIFhNTCBzY2hlbWEgbmFtZXNwYWNlIG5hbWUuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfTkFNRV9YU0QgPSAieHNkIjsKLQotCS8qKgotCSAqIFhNTCBzY2hlbWEgaW5zdGFuY2UgbmFtZXNwYWNlIFVSSS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfWFNJID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIjsKLQotCS8qKgotCSAqIFhNTCBzY2hlbWEgbmFtZXNwYWNlIG5hbWUuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfTkFNRV9YU0kgPSAieHNpIjsKLQotCi0JLyoqCi0JICogV1MtSSBtZXNzYWdlIGxvZyBuYW1lc3BhY2UgVVJJLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV9XU0lfTE9HID0gImh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDA0LzA3L2xvZy8iOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfTkFNRV9XU0lfTE9HID0gIndzaS1sb2ciOwotCi0JLyoqCi0JICogV1MtSSBjb25mb3JtYW5jZSByZXBvcnQgbmFtZXNwYWNlIFVSSS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfV1NJX1JFUE9SVCA9ICJodHRwOi8vd3d3LndzLWkub3JnL3Rlc3RpbmcvMjAwNC8wNy9yZXBvcnQvIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19OQU1FX1dTSV9SRVBPUlQgPSAid3NpLXJlcG9ydCI7Ci0KLQkvKioKLQkgKiBXUy1JIHByb2ZpbGUgdGVzdCBhc3NlcnRpb25zIG5hbWVzcGFjZSBVUkkuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfVVJJX1dTSV9BU1NFUlRJT05TXzIwMDMgPSAiaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDMvMDMvYXNzZXJ0aW9ucy8iOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV9XU0lfQVNTRVJUSU9OUyA9ICJodHRwOi8vd3d3LndzLWkub3JnL3Rlc3RpbmcvMjAwNC8wNy9hc3NlcnRpb25zLyI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19OQU1FX1dTSV9BU1NFUlRJT05TID0gIndzaS1hc3NlcnRpb25zIjsKLQotCS8qKgotCSAqIFdTLUkgbW9uaXRvciBjb25maWd1cmF0aW9uIGZpbGUgbmFtZXNhcGNlIFVSSS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfV1NJX01PTklUT1JfQ09ORklHXzIwMDMgPSAiaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDMvMDMvbW9uaXRvckNvbmZpZy8iOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV9XU0lfTU9OSVRPUl9DT05GSUcgPSAiaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDQvMDcvbW9uaXRvckNvbmZpZy8iOwotCQotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfTkFNRV9XU0lfTU9OSVRPUl9DT05GSUcgPSAid3NpLW1vbkNvbmZpZyI7Ci0KLQkvKioKLQkgKiBXUy1JIGFuYWx5emVyIGNvbmZpZ3VyYXRpb24gZmlsZSBuYW1lc2FwY2UgVVJJLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV9XU0lfQU5BTFlaRVJfQ09ORklHXzIwMDMgPSAiaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDMvMDMvYW5hbHl6ZXJDb25maWcvIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfV1NJX0FOQUxZWkVSX0NPTkZJRyA9ICJodHRwOi8vd3d3LndzLWkub3JnL3Rlc3RpbmcvMjAwNC8wNy9hbmFseXplckNvbmZpZy8iOwotCQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX05BTUVfV1NJX0FOQUxZWkVSX0NPTkZJRyA9ICJ3c2ktYW5hbHl6ZXJDb25maWciOwotCi0JLyoqCi0JICogV1MtSSBjb21tb24gbmFtZXNhcGNlIFVSSS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOU19VUklfV1NJX0NPTU1PTl8yMDAzID0gImh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDAzLzAzL2NvbW1vbi8iOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX1VSSV9XU0lfQ09NTU9OID0gImh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDA0LzA3L2NvbW1vbi8iOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX05BTUVfV1NJX0NPTU1PTiA9ICJ3c2ktY29tbW9uIjsKLQotCS8qKgotCSAqIFNPQVAgVjEuMSBuYW1lc3BhY2UuCi0JICovCi0JcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfVVJJX1NPQVAgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iOwotCi0JLyoqCi0JICogU09BUC8xLjEgZW5jb2RpbmcuCi0JICovCi0JcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfVVJJX1NPQVBfRU5DT0RJTkcgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTlNfVVJJX1NPQVBfTkVYVF9BQ1RPUiA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2FjdG9yL25leHQiIDsKLQkvKioKLQkgKiBIVFRQIHRyYW5zcG9ydC4KLQkgKi8KLQlwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBOU19VUklfU09BUF9IVFRQID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCI7Ci0KLQkvKioKLQkgKiBXU0RMIFYxLjEgbmFtZXNwYWNlLgotCSAqLwotCXB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5TX1VSSV9XU0RMID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIjsKLQotCS8qKgotCSAqIFdTREwgU09BUCBiaW5kaW5nIG5hbWVzcGFjZS4KLQkgKi8KLQlwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBOU19VUklfV1NETF9TT0FQID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iOwotCXB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5TX1VSSV9XU0RMX1NPQVAxMiA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAxMi8iOwotCXB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5TX05BTUVfV1NETF9TT0FQID0gInNvYXAiOwotCi0JLyoqCi0JICogV1NETCBNSU1FIGJpbmRpbmcgbmFtZXNwYWNlLgotCSAqLwotCXB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5TX05BTUVfV1NETF9NSU1FID0gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvbWltZS8iOwotCi0JLyoqCi0JICogV1NETCBIVFRQIEdFVCAmIFBPU1QgYmluZGluZyBuYW1lc3BhY2UuCi0JICovCi0JcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfTkFNRV9XU0RMX0hUVFAgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9odHRwLyI7Ci0KLQkvKioKLQkgKiBXU0RMIERJTUUgYmluZGluZyBuYW1lc3BhY2UuCi0JICovCi0JcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfTkFNRV9XU0RMX0RJTUUgPSAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwMi8wNC9kaW1lL3dzZGwvIjsKLQotCS8qKgotCSAqIENvbmZvcm1hbmNlIENsYWltIG5hbWVzcGFjZS4KLQkgKi8KLQlwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBOU19VUklfQ0xBSU0gPSAiaHR0cDovL3dzLWkub3JnL3NjaGVtYXMvY29uZm9ybWFuY2VDbGFpbS8iOwotCi0JLyoqCi0JICogVURESSBWMiBuYW1lc3BhY2UuCi0JICovCi0JcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfVVJJX1VERElfVjIgPSAidXJuOnVkZGktb3JnOmFwaV92MiI7Ci0KLQkvKioKLQkgKiBUaGUgWE1MIFNjaGVtYSBmb3IgdGhlIHR5cGUgdXNlZCB0byByZWZlciB0byBhdHRhY2htZW50cyBmcm9tIHRoZSBTT0FQCi0JICogZW52ZWxvcGUuCi0JICovCi0JcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfVVJJX1NXQV9SRUYgPSAiaHR0cDovL3dzLWkub3JnL3Byb2ZpbGVzL2Jhc2ljLzEuMS94c2QiOwotCi0JcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgU0NIRU1BX1RZUEVfU1dBX1JFRiA9ICJzd2FSZWYiOwotCi0JLyoqCi0JICogRWxlbWVudCBuYW1lcy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX0FERF9TVFlMRV9TSEVFVCA9ICJhZGRTdHlsZVNoZWV0IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fQURESVRJT05BTF9FTlRSWV9UWVBFX0xJU1QgPSAiYWRkaXRpb25hbEVudHJ5VHlwZUxpc3QiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9BTkFMWVpFUl9GQUlMVVJFID0gImFuYWx5emVyRmFpbHVyZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX0FSVElGQUNUID0gImFydGlmYWN0IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fQVJUSUZBQ1RfUkVGRVJFTkNFID0gImFydGlmYWN0UmVmZXJlbmNlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fQVNTRVJUSU9OX0NPVkVSQUdFID0gImFzc2VydGlvbkNvdmVyYWdlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fQVNTRVJUSU9OX0RFU0NSSVBUSU9OID0gImFzc2VydGlvbkRlc2NyaXB0aW9uIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fQVNTRVJUSU9OX1JFU1VMVCA9ICJhc3NlcnRpb25SZXN1bHQiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9BU1NFUlRJT05fUkVTVUxUX1NVTU1BUlkgPSAiYXNzZXJ0aW9uUmVzdWx0U3VtbWFyeSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX0FTU0VSVElPTl9SRVNVTFRTID0gImFzc2VydGlvblJlc3VsdHMiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9DTEVBTlVQX1RJTUVPVVRfU0VDT05EUyA9ICJjbGVhbnVwVGltZW91dFNlY29uZHMiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9DT05GSUcgPSAiY29uZmlndXJhdGlvbiI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX0NPTU1FTlQgPSAiY29tbWVudCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX0NPTlRFWFQgPSAiY29udGV4dCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX0RFVEFJTCA9ICJkZXRhaWwiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9ERVRBSUxfREVTQ1JJUFRJT04gPSAiZGV0YWlsRGVzY3JpcHRpb24iOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9ERVNDUklQVElPTiA9ICJkZXNjcmlwdGlvbiI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX0VOVklST05NRU5UID0gImVudmlyb25tZW50IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fRU5UUlkgPSAiZW50cnkiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9GQUlMVVJFX0RFVEFJTCA9ICJmYWlsdXJlRGV0YWlsIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fRkFJTFVSRV9ERVRBSUxfREVTQ1JJUFRJT04gPSAiZmFpbHVyZURldGFpbERlc2NyaXB0aW9uIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fRkFJTFVSRV9NRVNTQUdFID0gImZhaWx1cmVNZXNzYWdlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fSFRUUF9IRUFERVJTID0gImh0dHBIZWFkZXJzIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fSU1QTEVNRU5URVIgPSAiaW1wbGVtZW50ZXIiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9JTlFVSVJZX1VSTCA9ICJpbnF1aXJ5VVJMIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTElTVEVOX1BPUlQgPSAibGlzdGVuUG9ydCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX0xPRyA9ICJsb2ciOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9MT0dfRFVSQVRJT04gPSAibG9nRHVyYXRpb24iOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9MT0dfRklMRSA9ICJsb2dGaWxlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTUFOX0lOX1RIRV9NSURETEUgPSAibWFuSW5UaGVNaWRkbGUiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9NQVhfQ09OTkVDVElPTlMgPSAibWF4Q29ubmVjdGlvbnMiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9NRVNTQUdFX0NPTlRFTlQgPSAibWVzc2FnZUNvbnRlbnQiOwotCQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTUVTU0FHRV9DT05URU5UX1dJVEhfQVRUQUNITUVOVFMgPSAibWVzc2FnZUNvbnRlbnRXaXRoQXR0YWNobWVudHMiOwotCQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTUVTU0FHRV9FTlRSWSA9ICJtZXNzYWdlRW50cnkiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9NRVNTQUdFX0lOUFVUID0gIm1lc3NhZ2VJbnB1dCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX01PTklUT1IgPSAibW9uaXRvciI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX09QRVJBVElOR19TWVNURU0gPSAib3BlcmF0aW5nU3lzdGVtIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fUFJFUkVRX0ZBSUxFRF9MSVNUID0gInByZXJlcUZhaWxlZExpc3QiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9QUkVSRVFfTElTVCA9ICJwcmVyZXFMaXN0IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fUFJPRklMRSA9ICJwcm9maWxlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fUFJPRklMRV9BU1NFUlRJT05TID0gInByb2ZpbGVBc3NlcnRpb25zIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fUkVBRF9USU1FT1VUX1NFQ09ORFMgPSAicmVhZFRpbWVvdXRTZWNvbmRzIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fUkVDRUlWRVJfSE9TVF9BTkRfUE9SVCA9ICJyZWNlaXZlckhvc3RBbmRQb3J0IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fUkVESVJFQ1QgPSAicmVkaXJlY3QiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9SRVBPUlQgPSAicmVwb3J0IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fUkVQT1JUX0ZJTEUgPSAicmVwb3J0RmlsZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1JVTlRJTUUgPSAicnVudGltZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1NDSEVNRV9BTkRfSE9TVFBPUlQgPSAic2NoZW1lQW5kSG9zdFBvcnQiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9TRU5ERVJfSE9TVF9BTkRfUE9SVCA9ICJzZW5kZXJIb3N0QW5kUG9ydCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1NFUlZJQ0VfTE9DQVRJT04gPSAic2VydmljZUxvY2F0aW9uIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fU1VNTUFSWSA9ICJzdW1tYXJ5IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fVEVTVF9BU1NFUlRJT04gPSAidGVzdEFzc2VydGlvbiI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1RFU1RfQVNTRVJUSU9OU19GSUxFID0gInRlc3RBc3NlcnRpb25zRmlsZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1RFU1RfQVNTRVJUSU9OX0lEID0gInRlc3RBc3NlcnRpb25JRCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1RFU1RfQ09WRVJBR0UgPSAidGVzdENvdmVyYWdlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fVURESV9FTlRSWSA9ICJ1ZGRpRW50cnkiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9VRERJX0tFWSA9ICJ1ZGRpS2V5IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fVURESV9SRUZFUkVOQ0UgPSAidWRkaVJlZmVyZW5jZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1ZFUkJPU0UgPSAidmVyYm9zZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1dTRExfRUxFTUVOVCA9ICJ3c2RsRWxlbWVudCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1dTRExfSU5QVVQgPSAid3NkbElucHV0IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fV1NETF9SRUZFUkVOQ0UgPSAid3NkbFJlZmVyZW5jZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX1dTRExfVVJJID0gIndzZGxVUkkiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9YTUxfUEFSU0VSID0gInhtbFBhcnNlciI7Ci0JCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9NSU1FX1BBUlQgPSAibWltZVBhcnQiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9NSU1FX0hFQURFUlMgPSAibWltZUhlYWRlcnMiOwotCQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTUlNRV9DT05URU5UID0gIm1pbWVDb250ZW50IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fQk9VTkRBUllfU1RSSU5HID0gImJvdW5kYXJ5U3RyaW5nIjsKLQotCS8qKgotCSAqIEF0dHJpYnV0ZSBuYW1lcy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0FMVEVSTkFURSA9ICJhbHRlcm5hdGUiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9BUlJBWV9UWVBFID0gImFycmF5VHlwZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0FTU0VSVElPTl9ERVNDUklQVElPTiA9ICJhc3NlcnRpb25EZXNjcmlwdGlvbiI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0JPTSA9ICJCT00iOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9DSEFSU0VUID0gImNoYXJzZXQiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9DT0RFID0gImNvZGUiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9DT0xVTU5fTlVNQkVSID0gImNvbHVtbk51bWJlciI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0NPTlZFUlNBVElPTl9JRCA9ICJjb252ZXJzYXRpb25JRCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0NPUlJFTEFUSU9OX1RZUEUgPSAiY29ycmVsYXRpb25UeXBlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfREFURSA9ICJkYXRlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfRU5BQkxFRCA9ICJlbmFibGVkIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfRU5UUllfVFlQRSA9ICJlbnRyeVR5cGUiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9GQUlMVVJFX01FU1NBR0UgPSAiZmFpbHVyZU1lc3NhZ2UiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9GQUlMVVJFX0RFVEFJTCA9ICJmYWlsdXJlRGV0YWlsIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfSFJFRiA9ICJocmVmIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfSUQgPSAiaWQiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9JRF9VQyA9ICJJRCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0lNUExFTUVOVEVSID0gImltcGxlbWVudGVyIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfTElORV9OVU1CRVIgPSAibGluZU51bWJlciI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX0xPQ0FUSU9OID0gImxvY2F0aW9uIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfTUVESUEgPSAibWVkaWEiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9NRVNTQUdFX0VOVFJZID0gIm1lc3NhZ2VFbnRyeSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX01FU1NBR0VTID0gIm1lc3NhZ2VzIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfTkFNRSA9ICJuYW1lIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfTkFNRVNQQUNFID0gIm5hbWVzcGFjZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX1BBUkVOVF9FTEVNRU5UX05BTUUgPSAicGFyZW50RWxlbWVudE5hbWUiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9SRUZFUkVOQ0VfSUQgPSAicmVmZXJlbmNlSUQiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9SRUZFUkVOQ0VfVFlQRSA9ICJyZWZlcmVuY2VUeXBlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfUkVMRUFTRV9EQVRFID0gInJlbGVhc2VEYXRlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfUkVQTEFDRSA9ICJyZXBsYWNlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJfUkVTVUxUID0gInJlc3VsdCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX1NFUlZJQ0VfTkFNRSA9ICJzZXJ2aWNlTmFtZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX1NQRUNJRklDQVRJT04gPSAic3BlY2lmaWNhdGlvbiI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX1RJTUVTVEFNUCA9ICJ0aW1lc3RhbXAiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUl9USVRMRSA9ICJ0aXRsZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX1RZUEUgPSAidHlwZSI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSX1ZFUlNJT04gPSAidmVyc2lvbiI7Ci0KLQkvKioKLQkgKiBEZWZhdWx0IHZhbHVlcy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1JFUE9SVF9VUkkgPSAicmVwb3J0LnhtbCI7Ci0KLQkvLyBURU1QOiBVc2UgdGhlIGZvbGxvd2luZyByZXBvcnQgdGl0bGUgZm9yIHRoZSBkcmFmdCByZWxlYXNlIG9ubHkuCi0JLy9wdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1JFUE9SVF9USVRMRSA9ICJXUy1JIFByb2ZpbGUKLQkvLyBDb25mb3JtYW5jZSBSZXBvcnQiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfUkVQT1JUX1RJVExFID0gIldTLUkgQmFzaWMgUHJvZmlsZSBDb25mb3JtYW5jZSBSZXBvcnQuIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfVEVTVF9BU1NFUlRJT05TX0RPQ1VNRU5UX1VSSSA9ICJodHRwOi8vd3d3LndzLWkub3JnL1Rlc3RpbmcvVG9vbHMvMjAwNC8xMi9BUDEwX0JQMTFfU1NCUDEwX1RBRC54bWwiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9MT0dfWFNMID0gIi4uL2NvbW1vbi94c2wvbG9nLnhzbCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX1JFUE9SVF9YU0wgPSAiLi4vY29tbW9uL3hzbC9yZXBvcnQueHNsIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfWFNMX1RZUEUgPSAidGV4dC94c2wiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9YTUxfRU5DT0RJTkcgPSAiVVRGLTgiOwotCi0JLyoqCi0JICogQk9NIGNvbnN0YW50cy4KLQkgKiAgCi0JICovCi0JcHVibGljIHN0YXRpYyBpbnQgQk9NX1VURjE2ID0gMHhGRkZFOwotCi0JcHVibGljIHN0YXRpYyBpbnQgQk9NX1VURjE2X0JJR19FTkRJQU4gPSAweEZFRkY7Ci0KLQlwdWJsaWMgc3RhdGljIGludCBCT01fVVRGOCA9IDB4RUZCQkJGOwotCi0JLyoqCi0JICogVmFsaWRhdGlvbiBjb25zdGFudHMuCi0JICogIAotCSAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJWQUxfU09BUF9CT0RZX1VTRV9MSVQgPSAibGl0ZXJhbCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBVFRSVkFMX1NPQVBfQk9EWV9VU0VfRU5DID0gImVuY29kZWQiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DID0gImRvY3VtZW50IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQyA9ICJycGMiOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUUlZBTF9DT1JSRUxBVElPTl9UWVBFX0VORFBPSU5UID0gImVuZHBvaW50IjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJWQUxfQ09SUkVMQVRJT05fVFlQRV9OQU1FU1BBQ0UgPSAibmFtZXNwYWNlIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJWQUxfQ09SUkVMQVRJT05fVFlQRV9PUEVSQVRJT04gPSAib3BlcmF0aW9uIjsKLQotCS8qKgotCSAqIFdTLUkgY29uc3RhbnRzIC0gYXR0cmlidXRlcyBmb3IgY29uZm9ybWFuY2UgY2xhaW1zIChkaXNjb3ZlcnkpLgotCSAqICAKLQkgKi8KLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJWQUxfVURESV9DTEFJTV9LRVlWQUxVRSA9ICJodHRwOi8vd3MtaS5vcmcvcHJvZmlsZXMvYmFzaWMvMS4wIjsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFUVFJWQUxfVURESV9DTEFJTV9UTU9ERUxLRVkgPSAidXVpZDo2NTcxOTE2OC03MmM2LTNmMjktOGMyMC02MmRlZmIwOTYxYzAiOwotCi0JLyoqCi0JICogV1MtSSBuYW1lcyBhbmQgdmVyc2lvbnMgb2YgdGhlIHByb2ZpbGUgdGVzdCBhc3NlcnRpb24gZG9jdW1lbnQgc3VwcG9ydGVkCi0JICogaW4gdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgdGVzdCB0b29scy4KLSAgICAgKi8KLQkvKiogQGRlcHJlY2F0ZWQgLS0gdGhpcyBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGEgVEFEIHJlZ2lzdHJ5IG1lY2hhbmlzbS4gKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCQVNJQ19QUk9GSUxFX1RBRF9OQU1FID0gIkJhc2ljIFByb2ZpbGUgVGVzdCBBc3NlcnRpb25zIjsKLSAgICAvKiogQGRlcHJlY2F0ZWQgLS0gdGhpcyBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGEgVEFEIHJlZ2lzdHJ5IG1lY2hhbmlzbS4gKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCQVNJQ19QUk9GSUxFXzFfMV9UQURfTkFNRSA9ICJCYXNpYyBQcm9maWxlIDEuMSBUZXN0IEFzc2VydGlvbnMiOwotICAgIC8qKiBAZGVwcmVjYXRlZCAtLSB0aGlzIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYSBUQUQgcmVnaXN0cnkgbWVjaGFuaXNtLiAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNJTVBMRV9TT0FQX0JJTkRJTkdTX1BST0ZJTEVfVEFEX05BTUUgPSAiU2ltcGxlIFNvYXAgQmluZGluZyBQcm9maWxlIFsxLjBdICh3aXRoIEJhc2ljIFByb2ZpbGUgWzEuMV0pIFRlc3QgQXNzZXJ0aW9ucyI7Ci0gICAgLyoqIEBkZXByZWNhdGVkIC0tIHRoaXMgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBhIFRBRCByZWdpc3RyeSBtZWNoYW5pc20uICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUQUNITUVOVFNfUFJPRklMRV9UQURfTkFNRSA9ICJBdHRhY2htZW50cyBQcm9maWxlIFsxLjBdICh3aXRoIEJhc2ljIFByb2ZpbGUgWzEuMV0gYW5kIFNpbXBsZSBTb2FwIEJpbmRpbmcgUHJvZmlsZSBbMS4wXSkgVGVzdCBBc3NlcnRpb25zIjsKLSAgICAvKiogQGRlcHJlY2F0ZWQgLS0gdGhpcyBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGEgVEFEIHJlZ2lzdHJ5IG1lY2hhbmlzbS4gKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCQVNJQ19QUk9GSUxFX1RBRF9WRVJTSU9OID0gIjEuMS4wIjsKLSAgICAvKiogQGRlcHJlY2F0ZWQgLS0gdGhpcyBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGEgVEFEIHJlZ2lzdHJ5IG1lY2hhbmlzbS4gKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCQVNJQ19QUk9GSUxFXzFfMV9UQURfVkVSU0lPTiA9ICIxLjEuMCI7Ci0gICAgLyoqIEBkZXByZWNhdGVkIC0tIHRoaXMgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBhIFRBRCByZWdpc3RyeSBtZWNoYW5pc20uICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0lNUExFX1NPQVBfQklORElOR1NfUFJPRklMRV9UQURfVkVSU0lPTiA9ICIxLjAuMCI7Ci0gICAgLyoqIEBkZXByZWNhdGVkIC0tIHRoaXMgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBhIFRBRCByZWdpc3RyeSBtZWNoYW5pc20uICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVRUQUNITUVOVFNfUFJPRklMRV9UQURfVkVSU0lPTiA9ICIxLjAuMCI7Ci0KLQkvKioKLQkgKiBTeXN0ZW0gZGVwZW5kZW50IGxpbmUgc2VwYXJhdG9yIGNoYXJhY3Rlci4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMSU5FX1NFUEFSQVRPUiA9IFN5c3RlbQotCQkJLmdldFByb3BlcnR5KCJsaW5lLnNlcGFyYXRvciIpOwotCi0JLyoqCi0JICogU3lzdGVtIGRlcGVuZGVudCBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFUSF9TRVBBUkFUT1IgPSBTeXN0ZW0KLQkJCS5nZXRQcm9wZXJ0eSgicGF0aC5zZXBhcmF0b3IiKTsKLQotCS8qKgotCSAqIEZpbGUgd2hpY2ggY29udGFpbnMgdGhlIGNvcHlyaWdodCwgbGljZW5zZSBhbmQgZmVlZGJhY2sgY29tbWVudHMuCi0JICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09NTUVOVFNfRklMRSA9ICJjb21tZW50cy54bWwiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTlRFTlRfVFlQRV9URVhUX1hNTCA9ICJ0ZXh0L3htbCI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09OVEVOVF9UWVBFX01VTFRJUEFSVCA9ICJtdWx0aXBhcnQvcmVsYXRlZCI7Ci0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGSUxFX1BSRUZJWCA9ICJmaWxlOiI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSFRUUF9QUkVGSVggPSAiaHR0cDoiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZJTEVfUFJPVE9DT0wgPSAiZmlsZTovLy8iOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdTSV9QUkVGSVggPSAiV1MtSTogIjsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9XU0lFeGNlcHRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL1dTSUV4Y2VwdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmU4ZGI0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL1dTSUV4Y2VwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZTsKLQotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKLQotLyoqCi0gKiBQcmltYXJ5IFdTLUkgZXhjZXB0aW9uLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0KLSAqLwotcHVibGljIGNsYXNzIFdTSUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgotewotCi0gIC8qKgotICAgKiBTdGF0aWMgbmVlZGVkIGZvciBzZXJpYWxpemFibGUgY2xhc3MKLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDU0NDY4MjMyMjI3NjcyOTkzMDhMOwotCi0gIC8qKgotICAgKiBUaHJvd2FibGUuCi0gICAqLwotICBwcm90ZWN0ZWQgVGhyb3dhYmxlIHRocm93YWJsZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhbiBleGNlcHRpb24gd2l0aG91dCBhIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgV1NJRXhjZXB0aW9uKCkKLSAgewotICAgIC8vIEV4Y2VwdGlvbgotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGFuIGV4Y2VwdGlvbiB3aXRoIGEgbWVzc2FnZS4KLSAgICogCi0gICAqIEBwYXJhbSBtc2cgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlCi0gICAqLwotICBwdWJsaWMgV1NJRXhjZXB0aW9uKFN0cmluZyBtc2cpCi0gIHsKLSAgICAvLyBFeGNlcHRpb24KLSAgICBzdXBlcihtc2cpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhbiBleGNlcHRpb24gd2l0aCBhIG1lc3NhZ2UgYW5kIHJlbGF0ZWQgZXhjZXB0aW9uLgotICAgKiAKLSAgICogQHBhcmFtIG1zZyAgICAgICAgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlCi0gICAqIEBwYXJhbSB0aHJvd2FibGUgIHRocm93YWJsZSB0aGF0IGlzIHJlbGF0ZWQgdG8gdGhpcyBleGNlcHRpb24KLSAgICovCi0gIHB1YmxpYyBXU0lFeGNlcHRpb24oU3RyaW5nIG1zZywgVGhyb3dhYmxlIHRocm93YWJsZSkKLSAgewotICAgIC8vIEV4Y2VwdGlvbgotICAgIHN1cGVyKG1zZyk7Ci0KLSAgICAvLyBTYXZlIGlucHV0IHJlZmVyZW5jZQotICAgIHRoaXMudGhyb3dhYmxlID0gdGhyb3dhYmxlOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdCdzIHZhbHVlcy4KLSAgICoKLSAgICogQHJldHVybiBSZXR1cm5zIHRoZSBkZXRhaWwgbWVzc2FnZSBvZiB0aGlzIHRocm93YWJsZSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UoKQotICB7Ci0gICAgcmV0dXJuIHN1cGVyLmdldE1lc3NhZ2UoKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QncyB2YWx1ZXMuCi0gICAqCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgZGV0YWlsIG1lc3NhZ2Ugb2YgdGhpcyB0aHJvd2FibGUgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICAvL1N0cmluZ1dyaXRlciBzdzsKLSAgICAvL1ByaW50V3JpdGVyIHB3OwotCi0gICAgLy8gQWx3YXlzIGdldCBtZXNzYWdlIGZyb20gc3VwZXIgY2xhc3MKLSAgICBTdHJpbmcgbXNnID0gc3VwZXIuZ2V0TWVzc2FnZSgpOwotCi0gICAgLy8gSWYgdGhpcyBleGNlcHRpb24gY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYW5vdGhlciBleGNlcHRpb24sCi0gICAgLy8gdGhlbiBhZGQgaXQgdG8gdGhlIG1lc3NhZ2UKLSAgICBpZiAodGhyb3dhYmxlICE9IG51bGwpCi0gICAgewotICAgICAgbXNnICs9ICJcbiIKLSAgICAgICAgKyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iCi0gICAgICAgICsgIiAgTmVzdGVkIGV4Y2VwdGlvbiBpczogXG5cbiAgIgotICAgICAgICArIHRocm93YWJsZS50b1N0cmluZygpCi0gICAgICAgICsgIlxuIjsKLQotICAgICAgLy8gSWYgdGhyb3dhYmxlIGlzIE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiwgCi0gICAgICAvLyB0aGVuIGFkZCBjbGFzcyBuYW1lIGFuZCBrZXkgdG8gb3V0cHV0Ci0gICAgICBpZiAodGhyb3dhYmxlIGluc3RhbmNlb2YgTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uKQotICAgICAgewotICAgICAgICBNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gbXJlID0gKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbikgdGhyb3dhYmxlOwotCi0gICAgICAgIC8vIEdldCBjbGFzcyBuYW1lIGFuZCBrZXkKLSAgICAgICAgbXNnICs9ICIgLSAiCi0gICAgICAgICAgKyBtcmUuZ2V0S2V5KCkKLSAgICAgICAgICArICJcblx0IgotICAgICAgICAgICsgIltDbGFzcyBOYW1lOiAiCi0gICAgICAgICAgKyBtcmUuZ2V0Q2xhc3NOYW1lKCkKLSAgICAgICAgICArICJdIjsKLSAgICAgIH0KLQotICAgICAgLy8gSWYgdGhyb3dhYmxlIGlzIEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24sIAotICAgICAgLy8gdGhlbiB0YXJnZXQgb2YgZXhjZXB0aW9uCi0gICAgICBlbHNlIGlmICh0aHJvd2FibGUgaW5zdGFuY2VvZiBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uKQotICAgICAgewotICAgICAgICBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGl0ZSA9IChJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uKSB0aHJvd2FibGU7Ci0KLSAgICAgICAgLy8gR2V0IHRhcmdldAotICAgICAgICBtc2cgKz0gIiAtICIgKyBpdGUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCkudG9TdHJpbmcoKTsKLSAgICAgIH0KLQotICAgICAgLy8gQUREOiBQcmludCBzdGFjayB0cmFjZQotICAgICAgLy9zdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICAgIC8vcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotICAgICAgLy90aHJvd2FibGUucHJpbnRTdGFja1RyYWNlKHB3KTsKLQotICAgICAgLy8gQWRkIGl0IHRvIHRoZSBtZXNzYWdlCi0gICAgICAvL21zZyArPSBzdy50b1N0cmluZygpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBtZXNzYWdlCi0gICAgcmV0dXJuIG1zZzsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhpcyBleGNlcHRpb24gdG8gYmUgY3JlYXRlZC4KLSAgICogCi0gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgZW5jYXBzdWxhdGVkIHRocm93YWJsZSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgVGhyb3dhYmxlIGdldFRhcmdldEV4Y2VwdGlvbigpCi0gIHsKLSAgICAvLyBSZXR1cm4gdGhyb3dhYmxlCi0gICAgcmV0dXJuIHRocm93YWJsZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvV1NJRmlsZU5vdEZvdW5kRXhjZXB0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9XU0lGaWxlTm90Rm91bmRFeGNlcHRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFiZjVkYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9XU0lGaWxlTm90Rm91bmRFeGNlcHRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZTsKLQotLyoqCi0gKiBTaWduYWxzIHRoYXQgYW4gYXR0ZW1wdCB0byBvcGVuIHRoZSBmaWxlIGRlbm90ZWQgYnkgYSBzcGVjaWZpZWQgCi0gKiBwYXRobmFtZSBoYXMgZmFpbGVkLgotICogCi0gKiBAYXV0aG9yIFBldGVyICBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKiBAdmVyc2lvbiAxLjAuMQotICovCi1wdWJsaWMgY2xhc3MgV1NJRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGV4dGVuZHMgV1NJRXhjZXB0aW9uCi17Ci0KLSAgLyoqCi0gICAqIFN0YXRpYyBuZWVkZWQgZm9yIHNlcmlhbGl6YWJsZSBjbGFzcwotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTE5MTYwMTA0NDQ2MDE2NjY0MDFMOwotCi0vKioKLSAgICogQ29uc3RydWN0b3IgZm9yIFdTSUZpbGVOb3RGb3VuZEV4Y2VwdGlvbi4KLSAgICovCi0gIHB1YmxpYyBXU0lGaWxlTm90Rm91bmRFeGNlcHRpb24oKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgV1NJRmlsZU5vdEZvdW5kRXhjZXB0aW9uLgotICAgKiBAcGFyYW0gbXNnICB0aGUgZGV0YWlsIG1lc3NhZ2UuCi0gIAotICAgKi8KLSAgcHVibGljIFdTSUZpbGVOb3RGb3VuZEV4Y2VwdGlvbihTdHJpbmcgbXNnKQotICB7Ci0gICAgc3VwZXIobXNnKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgV1NJRmlsZU5vdEZvdW5kRXhjZXB0aW9uLgotICAgKiBAcGFyYW0gbXNnICAgICAgICB0aGUgZGV0YWlsIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSB0aHJvd2FibGUgIGluaXRpYWwgZXhjZXB0aW9uIHRocm93bi4KLSAgICovCi0gIHB1YmxpYyBXU0lGaWxlTm90Rm91bmRFeGNlcHRpb24oU3RyaW5nIG1zZywgVGhyb3dhYmxlIHRocm93YWJsZSkKLSAgewotICAgIHN1cGVyKG1zZywgdGhyb3dhYmxlKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9XU0lSdW50aW1lRXhjZXB0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9XU0lSdW50aW1lRXhjZXB0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZTMwYjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvV1NJUnVudGltZUV4Y2VwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBydW50aW1lIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBhZnRlciBwcm9jZXNzaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLgotICogCi0gKiBAYXV0aG9yIFBldGVyICBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKiBAdmVyc2lvbiAxLjAuMQotICovCi1wdWJsaWMgY2xhc3MgV1NJUnVudGltZUV4Y2VwdGlvbiBleHRlbmRzIFdTSUV4Y2VwdGlvbgotewotCi0gIC8qKgotICAgKiBTdGF0aWMgbmVlZGVkIGZvciBzZXJpYWxpemFibGUgY2xhc3MKLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDQzMDkzMjA5ODE1MTU1MTMxNzFMOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgV1NJUnVudGltZUV4Y2VwdGlvbi4KLSAgICovCi0gIHB1YmxpYyBXU0lSdW50aW1lRXhjZXB0aW9uKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIFdTSVJ1bnRpbWVFeGNlcHRpb24uCi0gICAqIEBwYXJhbSBtc2cgIHRoZSBkZXRhaWwgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyBXU0lSdW50aW1lRXhjZXB0aW9uKFN0cmluZyBtc2cpCi0gIHsKLSAgICBzdXBlcihtc2cpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBXU0lSdW50aW1lRXhjZXB0aW9uLgotICAgKiBAcGFyYW0gbXNnICAgICAgICB0aGUgZGV0YWlsIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSB0aHJvd2FibGUgIHRoZSBpbml0aWFsIGV4Y2VwdGlvbiB0aHJvd24uCi0gIAotICAgKi8KLSAgcHVibGljIFdTSVJ1bnRpbWVFeGNlcHRpb24oU3RyaW5nIG1zZywgVGhyb3dhYmxlIHRocm93YWJsZSkKLSAgewotICAgIHN1cGVyKG1zZywgdGhyb3dhYmxlKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9XU0lUYWcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL1dTSVRhZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmIzNDMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL1dTSVRhZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZTsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFRhZ3M7Ci0KLS8qKgotICogV1MtSSBjb25zdGFudHMuICAKLSAqICAKLSAqIEBhdXRob3IgS3VsaWsKLSAqLwotcHVibGljIGludGVyZmFjZSBXU0lUYWcgZXh0ZW5kcyBYTUxUYWdzCi17Ci0gIC8qKgotICAgKiBRdWFsaWZpZWQgbmFtZXMgb2YgV1NETCBlbGVtZW50cy4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgV1NETF9JTVBPUlQgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTREwsICJpbXBvcnQiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBXU0RMX1RZUEVTID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMLCAidHlwZXMiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBXU0RMX01FU1NBR0UgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTREwsICJtZXNzYWdlIik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgV1NETF9ET0NVTUVOVEFUSU9OID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMLCAiZG9jdW1lbnRhdGlvbiIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIFdTRExfREVGSU5JVElPTlMgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTREwsICJkZWZpbml0aW9ucyIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIFdTRExfQklORElORyA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NETCwgImJpbmRpbmciKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBXU0RMX09QRVJBVElPTiA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NETCwgIm9wZXJhdGlvbiIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIFdTRExfUEFSVCA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NETCwgInBhcnQiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBXU0RMX0lOUFVUID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMLCAiaW5wdXQiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBXU0RMX09VVFBVVCA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NETCwgIm91dHB1dCIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIFdTRExfRkFVTFQgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTREwsICJmYXVsdCIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIFdTRExfU0VSVklDRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NETCwgInNlcnZpY2UiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBXU0RMX1BPUlQgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTREwsICJwb3J0Iik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgV1NETF9QT1JUVFlQRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NETCwgInBvcnRUeXBlIik7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBXU0RMX1NPQVBfQklORElORyA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NETF9TT0FQLCAiYmluZGluZyIpOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFdTRExfU09BUF9CT0RZID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMX1NPQVAsICJib2R5Iik7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgUU5hbWUgV1NETF9TT0FQX0hFQURFUiA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NETF9TT0FQLCAiaGVhZGVyIik7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgUU5hbWUgV1NETF9TT0FQX0hFQURFUkZBVUxUID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMX1NPQVAsICJoZWFkZXJmYXVsdCIpOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFdTRExfU09BUF9GQVVMVCA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NETF9TT0FQLCAiZmF1bHQiKTsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFdTRExfTUlNRV9DT05URU5UID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX05BTUVfV1NETF9NSU1FLCAiY29udGVudCIpOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFdTRExfTUlNRV9YTUwgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfTkFNRV9XU0RMX01JTUUsICJtaW1lWG1sIik7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgUU5hbWUgV1NETF9NSU1FX1BBUlQgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfTkFNRV9XU0RMX01JTUUsICJwYXJ0Iik7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgUU5hbWUgV1NETF9NSU1FX01VTFRJUEFSVCA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19OQU1FX1dTRExfTUlNRSwgIm11bHRpcGFydFJlbGF0ZWQiKTsKLQotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIEFUVFJfV1NETF9BUlJBWVRZUEUgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTREwsICJhcnJheVR5cGUiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBBVFRSX1dTRExfTkFNRVNQQUNFID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMLCAibmFtZXNwYWNlIik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgQVRUUl9XU0RMX0xPQ0FUSU9OID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMLCAibG9jYXRpb24iKTsKLQotICAvKioKLSAgICogTmFtZXNwYWNlcy4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5TX1VSSV9DTEFJTSA9Ci0gICAgImh0dHA6Ly93cy1pLm9yZy9zY2hlbWFzL2NvbmZvcm1hbmNlQ2xhaW0vIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfVVJJX1NPQVAgPQotICAgICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIE5TX1VSSV9TT0FQRU5DID0KLSAgICAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBOU19VUklfQkFTSUNfUFJPRklMRTEwID0KLSAgICAiaHR0cDovL3dzaS5vcmcvcHJvZmlsZXMvYmFzaWMxLjAvIjsKLQotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIFNPQVBFTkNfQVJSQVkgPSBuZXcgUU5hbWUoTlNfVVJJX1NPQVBFTkMsICJBcnJheSIpOwotCi0gIC8qKgotICAgKiBRdWFsaWZpZWQgbmFtZXMgb2YgV1MtSSBjbGFpbSBlbGVtZW50cy4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgV1NJX0NMQUlNID0gbmV3IFFOYW1lKE5TX1VSSV9DTEFJTSwgIkNsYWltIik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgQVRUUl9DTEFJTV9DT05GT1JNU1RPID0KLSAgICBuZXcgUU5hbWUoTlNfVVJJX0NMQUlNLCAiY29uZm9ybXNUbyIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIEFUVFJfU09BUF9NVVNUVU5ERVJTVEFORCA9Ci0gICAgbmV3IFFOYW1lKE5TX1VSSV9TT0FQLCAibXVzdFVuZGVyc3RhbmQiKTsKLQotICAvKioKLSAgICogUXVhbGlmaWVkIG5hbWVzIG9mIFNPQVAgZWxlbWVudHMuCi0gICAqLwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIEVMRU1fU09BUF9FTlZFTE9QRSA9IG5ldyBRTmFtZShOU19VUklfU09BUCwgIkVudmVsb3BlIik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgRUxFTV9TT0FQX0JPRFkgPSBuZXcgUU5hbWUoTlNfVVJJX1NPQVAsICJCb2R5Iik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgRUxFTV9TT0FQX0ZBVUxUID0gbmV3IFFOYW1lKE5TX1VSSV9TT0FQLCAiRmF1bHQiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBFTEVNX1NPQVBfSEVBREVSID0gbmV3IFFOYW1lKE5TX1VSSV9TT0FQLCAiSGVhZGVyIik7Ci0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9BbmFseXplci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvQW5hbHl6ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc5YWEyZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9BbmFseXplci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzE0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXI7Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuVG9vbEluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuQW5hbHl6ZXJDb25maWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLkxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9uczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuUHJvZmlsZVZhbGlkYXRvckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5NZXNzYWdlTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5UZXN0VXRpbHM7Ci0KLS8qKgotICogVGhlIEFuYWx5emVyIHdpbGwgcHJvY2VzcyBhbGwgUHJvZmlsZSBjb25mb3JtYW5jZSBmdW5jdGlvbnMuCi0gKiBUaGlzIGNsYXNzIHNob3VsZCBiZSBzdWItY2xhc3NlZCBmb3IgZWFjaCBwcm9maWxlLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIEppbSBDbHVuZQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtCi0gKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBbmFseXplcgotewotICAvKioKLSAgICogTWVzc2FnZSBsaXN0LgotICAgKi8KLSAgcHJvdGVjdGVkIE1lc3NhZ2VMaXN0IG1lc3NhZ2VMaXN0ID0gbnVsbDsKLQotICBwcm90ZWN0ZWQgZmluYWwgc3RhdGljIFN0cmluZyBSRVNPVVJDRV9CVU5ETEVfTkFNRSA9Ci0gICAgIm9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5BbmFseXplciI7Ci0KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgVVNBR0VfTUVTU0FHRSA9Ci0gICAgIlVzYWdlOiBBbmFseXplciAtY29uZmlnIDxjb25maWdGaWxlbmFtZT4iOwotCi0gIHByb3RlY3RlZCBSZXBvcnRlciByZXBvcnRlciA9IG51bGw7Ci0gIHByb3RlY3RlZCBBbmFseXplckNvbnRleHQgYW5hbHl6ZXJDb250ZXh0ID0gbnVsbDsKLSAgcHJvdGVjdGVkIENhbmRpZGF0ZUluZm8gY2FuZGlkYXRlSW5mbyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIEFuYWx5emVyIHRvb2wgaW5mb3JtYXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgVG9vbEluZm8gdG9vbEluZm8gPSBudWxsOwotCi0gIC8qKgotICAgKiBQcm9maWxlIHZhbGlkYXRvciBmYWN0b3J5LgotICAgKi8KLSAgcHJvdGVjdGVkIFByb2ZpbGVWYWxpZGF0b3JGYWN0b3J5IGZhY3RvcnkgPSBudWxsOwotCi0gIC8qKgotICAgKiBQcm9maWxlIHZhbGlkYXRvciBmYWN0b3J5LgotICAgKi8KLSAgcHJvdGVjdGVkIERvY3VtZW50RmFjdG9yeSBkb2N1bWVudEZhY3RvcnkgPSBudWxsOwotCi0gIC8qKgotICAgKiBBbmFseXplciBjb25maWcgZmlsZSBsaXN0LgotICAgKi8KLSAgcHJvdGVjdGVkIExpc3QgYW5hbHl6ZXJDb25maWdMaXN0ID0gbmV3IFZlY3RvcigpOwotICBwcm90ZWN0ZWQgaW50IGFuYWx5emVyQ29uZmlnSW5kZXggPSAwOwotCi0gIC8qKgotICAgKiBQcm9maWxlIGFzc2VydGlvbnMuCi0gICAqLwotICBwcm90ZWN0ZWQgUHJvZmlsZUFzc2VydGlvbnMgcHJvZmlsZUFzc2VydGlvbnMgPSBudWxsOwotCi0gIC8qKgotICAgKiBMb2cgZmlsZS4KLSAgICovCi0gIHByb3RlY3RlZCBMb2cgbG9nID0gbnVsbDsKLQotICAvKioKLSAgICogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBhbmFseXplciB0b29sLgotICAgKiBAcGFyYW0gYXJncyAgICAgIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAqIEBwYXJhbSB0b29sSW5mbyAgYW5hbHl6ZXIgdG9vbCBpbmZvcm1hdGlvbi4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgY3JlYXRpbmcgdGhlIGluc3RhbmNlIG9mIHRoZSBhbmFseXplciB0b29sLgotICAgKi8KLSAgcHVibGljIEFuYWx5emVyKFN0cmluZ1tdIGFyZ3MsIFRvb2xJbmZvIHRvb2xJbmZvKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBpbml0KHRvb2xJbmZvKTsKLQotICAgIC8vIEdldCBuZXcgY29uZmlnIG9iamVjdCAgIAotICAgIHRoaXMuYW5hbHl6ZXJDb25maWdMaXN0LmFkZCgKLSAgICAgIGFuYWx5emVyQ29uZmlnSW5kZXgsCi0gICAgICBkb2N1bWVudEZhY3RvcnkubmV3QW5hbHl6ZXJDb25maWcoKSk7Ci0gICAgZ2V0QW5hbHl6ZXJDb25maWcoKS5pbml0KG1lc3NhZ2VMaXN0KTsKLQotICAgIC8vIFBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKLSAgICBnZXRBbmFseXplckNvbmZpZygpLnBhcnNlQXJncyhhcmdzLCB0cnVlKTsKLQotICAgIC8vIERpc3BsYXkgY29weXJpZ2h0IGFuZCBvcHRpb25zIHRoYXQgd2VyZSBzcGVjaWZpZWQKLSAgICBUZXN0VXRpbHMucHJpbnRUb29sSW5mbyh0b29sSW5mbyk7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKGdldEFuYWx5emVyQ29uZmlnKCkudG9TdHJpbmcoKSk7Ci0KLSAgICAvLyBEaXNwbGF5IG1lc3NhZ2UKLSAgICBwcmludE1lc3NhZ2UoCi0gICAgICAicHJvZ3Jlc3MwMSIsCi0gICAgICBudWxsLAotICAgICAgIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBzcGVjaWZpZWQgYXJ0aWZhY3RzIGFyZSBhbmFseXplZC4uLiIpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYW5hbHl6ZXIgdG9vbC4KLSAgICogQHBhcmFtIGFyZ3MgICAgICBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgotICAgKiBAcGFyYW0gdG9vbEluZm8gIGFuYWx5emVyIHRvb2wgaW5mb3JtYXRpb24uCi0gICAqIEBwYXJhbSB2YWxpZGF0ZSAgZmxhZyBmb3IgY29uZmlnIG9wdGlvbnMgdmFsaWRhdGlvbi4gCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW1zIGNyZWF0aW5nIHRoZSBpbnN0YW5jZSBvZiB0aGUgYW5hbHl6ZXIgdG9vbC4KLSAgICovCi0gIHB1YmxpYyBBbmFseXplcihTdHJpbmdbXSBhcmdzLCBUb29sSW5mbyB0b29sSW5mbywgYm9vbGVhbiB2YWxpZGF0ZSkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgaW5pdCh0b29sSW5mbyk7Ci0KLSAgICAvLyBHZXQgbmV3IGNvbmZpZyBvYmplY3QgICAKLSAgICB0aGlzLmFuYWx5emVyQ29uZmlnTGlzdC5hZGQoCi0gICAgICAgIGFuYWx5emVyQ29uZmlnSW5kZXgsCi0gICAgICAgIGRvY3VtZW50RmFjdG9yeS5uZXdBbmFseXplckNvbmZpZygpKTsKLSAgICBnZXRBbmFseXplckNvbmZpZygpLmluaXQobWVzc2FnZUxpc3QpOwotCi0gICAgLy8gUGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50cwotICAgIGdldEFuYWx5emVyQ29uZmlnKCkucGFyc2VBcmdzKGFyZ3MsIHZhbGlkYXRlKTsKLQotICAgIC8vIERpc3BsYXkgY29weXJpZ2h0IGFuZCBvcHRpb25zIHRoYXQgd2VyZSBzcGVjaWZpZWQKLSAgICBUZXN0VXRpbHMucHJpbnRUb29sSW5mbyh0b29sSW5mbyk7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKGdldEFuYWx5emVyQ29uZmlnKCkudG9TdHJpbmcoKSk7Ci0KLSAgICAvLyBEaXNwbGF5IG1lc3NhZ2UKLSAgICBwcmludE1lc3NhZ2UoCi0gICAgICAgICJwcm9ncmVzczAxIiwKLSAgICAgICAgbnVsbCwKLSAgICAiUGxlYXNlIHdhaXQgd2hpbGUgdGhlIHNwZWNpZmllZCBhcnRpZmFjdHMgYXJlIGFuYWx5emVkLi4uIik7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBhbmFseXplciB0b29sLgotICAgKiBAcGFyYW0gYW5hbHl6ZXJDb25maWdMaXN0ICBhbmFseXplciBjb25maWcgZmlsZSBsaXN0LgotICAgKiBAcGFyYW0gdG9vbEluZm8gICAgICAgICAgICBhbmFseXplciB0b29sIGluZm9ybWF0aW9uLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBjcmVhdGluZyB0aGUgaW5zdGFuY2Ugb2YgdGhlIGFuYWx5emVyIHRvb2wuCi0gICAqLwotICBwdWJsaWMgQW5hbHl6ZXIoTGlzdCBhbmFseXplckNvbmZpZ0xpc3QsIFRvb2xJbmZvIHRvb2xJbmZvKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIGluaXQodG9vbEluZm8pOwotCi0gICAgdGhpcy5hbmFseXplckNvbmZpZ0xpc3QgPSBhbmFseXplckNvbmZpZ0xpc3Q7Ci0gIH0KLQotICAvKioKLSAgICogQ29tbW9uIGluaXRpYWxpemF0aW9uLgotICAgKiBAcGFyYW0gdG9vbEluZm8gIGFuYWx5emVyIHRvb2wgaW5mb3JtYXRpb24uCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW1zIG9jY3VyIGR1cmluZyBjb21tb24gaW5pdGlhbGl6YXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBpbml0KFRvb2xJbmZvIGluZm8pIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRoaXMudG9vbEluZm8gPSBpbmZvOwotCi0gICAgLy8gQ3JlYXRlIG1lc3NhZ2UgbGlzdAotICAgIG1lc3NhZ2VMaXN0ID0gbmV3IE1lc3NhZ2VMaXN0KFJFU09VUkNFX0JVTkRMRV9OQU1FKTsKLQotICAgIC8vIENyZWF0ZSBwcm9maWxlIHZhbGlkYXRvciBmYWN0b3J5Ci0gICAgZmFjdG9yeSA9IFByb2ZpbGVWYWxpZGF0b3JGYWN0b3J5Lm5ld0luc3RhbmNlKCk7Ci0KLSAgICAvLyBDcmVhdGUgZG9jdW1lbnQgZmFjdG9yeQotICAgIGRvY3VtZW50RmFjdG9yeSA9IERvY3VtZW50RmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgYWxsIGNvbmZvcm1hbmNlIHZhbGlkYXRpb24gZnVuY3Rpb25zLgotICAgKiBAcmV0dXJuIHN0YXR1cyBjb2RlLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBvY2N1ciBkdXJpbmcgdmFsaWRhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBpbnQgdmFsaWRhdGVBbGwoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBpbnQgc3RhdHVzQ29kZSA9IDA7Ci0gICAgaW50IHRlbXBTdGF0dXNDb2RlOwotCi0gICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGFuYWx5emVyQ29uZmlnTGlzdC5zaXplKCk7IGluZGV4KyspCi0gICAgewotICAgICAgLy8gREVCVUc6Ci0gICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiaW5kZXg6ICIgKyBpbmRleCk7Ci0KLSAgICAgIC8vIFNldCBjdXJyZW50IGFuYWx5emVyIGNvbmZpZyBpbmRleCAKLSAgICAgIHNldEFuYWx5emVyQ29uZmlnKGluZGV4KTsKLQotICAgICAgaWYgKCh0ZW1wU3RhdHVzQ29kZSA9IHZhbGlkYXRlQ29uZm9ybWFuY2UoKSkgPiBzdGF0dXNDb2RlKQotICAgICAgICBzdGF0dXNDb2RlID0gdGVtcFN0YXR1c0NvZGU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXR1c0NvZGU7Ci0gIH0KLQotICAvKioKLSAgICogUHJvY2VzcyBhbGwgY29uZm9ybWFuY2UgdmFsaWRhdGlvbiBmdW5jdGlvbnMuCi0gICAqIEByZXR1cm4gc3RhdHVzIGNvZGUuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW1zIG9jY3VyIGR1cmluZyBjb25mb3JtYW5jZSB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHVibGljIGFic3RyYWN0IGludCB2YWxpZGF0ZUNvbmZvcm1hbmNlKCkgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogR2V0IHRvb2wgaW5mb3JtYXRpb24uCi0gICAqIEByZXR1cm4gdGhlIHRvb2wgaW5mb3JtYXRpb24uCi0gICAqLwotICBwdWJsaWMgVG9vbEluZm8gZ2V0VG9vbEluZm8oKQotICAKLSAgewotICAgIHJldHVybiB0aGlzLnRvb2xJbmZvOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBjdXJyZW50IGFuYWx5emVyIGNvbmZpZ3VyYXRpb24uCi0gICAqIEBwYXJhbSBpbmRleCAgdXJyZW50IGFuYWx5emVyIGNvbmZpZ3VyYXRpb24uCi0gICAqIEBzZWUgI2dldEFuYWx5emVyQ29uZmlnCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzZXRBbmFseXplckNvbmZpZyhpbnQgaW5kZXgpCi0gIHsKLSAgICB0aGlzLmFuYWx5emVyQ29uZmlnSW5kZXggPSBpbmRleDsKLSAgfQotCi0gIHByb3RlY3RlZCBpbnQgZ2V0QW5hbHl6ZXJDb25maWdJbmRleCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5hbmFseXplckNvbmZpZ0luZGV4OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBhbmFseXplciBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgotICAgKiBAcmV0dXJuIGFuYWx5emVyIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCi0gICAqIEBzZWUgI3NldEFuYWx5emVyQ29uZmlnCi0gICAqLwotICBwdWJsaWMgQW5hbHl6ZXJDb25maWcgZ2V0QW5hbHl6ZXJDb25maWcoKQotICB7Ci0gICAgcmV0dXJuIChBbmFseXplckNvbmZpZykgdGhpcy5hbmFseXplckNvbmZpZ0xpc3QuZ2V0KGFuYWx5emVyQ29uZmlnSW5kZXgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFByaW50IGEgbWVzc2FnZSBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGUuCi0gICAqIEBwYXJhbSBrZXkgICAgICAgICAgICAgYSBrZXkuCi0gICAqIEBwYXJhbSBtZXNzYWdlRGF0YSAgICAgbWVzc2FnZSBkYXRhLgotICAgKiBAcGFyYW0gZGVmYXVsdE1lc3NhZ2UgIGEgZGVmYXVsdCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHZvaWQgcHJpbnRNZXNzYWdlKAotICAgIFN0cmluZyBrZXksCi0gICAgU3RyaW5nIG1lc3NhZ2VEYXRhLAotICAgIFN0cmluZyBkZWZhdWx0TWVzc2FnZSkKLSAgewotICAgIG1lc3NhZ2VMaXN0LnByaW50TWVzc2FnZShrZXksIG1lc3NhZ2VEYXRhLCBkZWZhdWx0TWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogUHJpbnQgbWVzc2FnZS4KLSAgICogQHBhcmFtIGtleSAgICAgICAgICAgICBhIGtleS4KLSAgICogQHBhcmFtIG1lc3NhZ2VEYXRhICAgICBtZXNzYWdlIGRhdGEuCi0gICAqIEBwYXJhbSBkZWZhdWx0TWVzc2FnZSAgYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljUHJpbnRNZXNzYWdlKAotICAgIFN0cmluZyBrZXksCi0gICAgU3RyaW5nIG1lc3NhZ2VEYXRhLAotICAgIFN0cmluZyBkZWZhdWx0TWVzc2FnZSkKLSAgewotICAgIE1lc3NhZ2VMaXN0LnByaW50TWVzc2FnZSgKLSAgICAgIFJFU09VUkNFX0JVTkRMRV9OQU1FLAotICAgICAga2V5LAotICAgICAgbWVzc2FnZURhdGEsCi0gICAgICBkZWZhdWx0TWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJuIFhNTCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VOYW1lICBhIG5hbWVzcGFjZSBwcmVmaXguCi0gICAqIEByZXR1cm4gWE1MIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgLy8gU3RhcnQgICAgIAotICAgIHB3LnByaW50KHRvb2xJbmZvLmdldFN0YXJ0WE1MU3RyaW5nKG5hbWVzcGFjZU5hbWUpKTsKLQotICAgIC8vIENvbmZpZwotICAgIHB3LnByaW50KAotICAgICAgZ2V0QW5hbHl6ZXJDb25maWcoKS50b1hNTFN0cmluZygKLSAgICAgICAgV1NJQ29uc3RhbnRzLk5TX05BTUVfV1NJX0FOQUxZWkVSX0NPTkZJRykpOwotCi0gICAgLy8gRW5kCi0gICAgcHcucHJpbnRsbih0b29sSW5mby5nZXRFbmRYTUxTdHJpbmcobmFtZXNwYWNlTmFtZSkpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogUHJpbnQgYSBtZXNzYWdlLgotICAgKiBAcGFyYW0gbWVzc2FnZSBhIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgdm9pZCBwcmludE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2UpCi0gIHsKLSAgICBpZiAoZ2V0QW5hbHl6ZXJDb25maWcoKS5nZXRWZXJib3NlT3B0aW9uKCkpCi0gICAgewotICAgICAgU3lzdGVtLmVyci5wcmludGxuKG1lc3NhZ2UpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvQW5hbHl6ZXIucHJvcGVydGllcyBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0FuYWx5emVyLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwODQ4MmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvQW5hbHl6ZXIucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLSMgLyoqCi0jICAqIDxjb3B5cmlnaHQ+Ci0jICAqCi0jICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jICAqIAotIyAgKiBDb250cmlidXRvcnM6IAotIyAgKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyAgKgotIyAgKiA8L2NvcHlyaWdodD4KLSMgICovCi0KLSMKLSMgQW5hbHl6ZXIgcmVzb3VyY2UgYnVuZGxlLgotIwotdXNhZ2UwMT1Vc2FnZTogQW5hbHl6ZXIgLWNvbmZpZyA8Y29uZmlnRmlsZW5hbWU+Ci1jcmVhdGVkMDE9Q29uZm9ybWFuY2UgcmVwb3J0IGhhcyBiZWVuIGNyZWF0ZWQuCi1wcm9ncmVzczAxPVBsZWFzZSB3YWl0IHdoaWxlIHRoZSBzcGVjaWZpZWQgYXJ0aWZhY3RzIGFyZSBhbmFseXplZC4uLgotZXJyb3IwMT1BbmFseXplciBFcnJvcjoKLWVycm9yMDI9QW5hbHl6ZXIgU3RvcHBlZCBCeSBFeGNlcHRpb246Ci1lcnJvcjAzPVRoZSBjb25mb3JtYW5jZSB2YWxpZGF0aW9uIHByb2Nlc3MgZmFpbGVkLgotZXhjZXB0aW9uMDE9RXhjZXB0aW9uOgotY29uZmlnMDE9QW5hbHl6ZXIgY29uZmlndXJhdGlvbiBmaWxlIHdhcyBub3QgZm91bmQuICBTcGVjaWZpZWQgZmlsZSBsb2NhdGlvbjoKLWNvbmZpZzAyPUNvdWxkIG5vdCBmaW5kIGxvZyBmaWxlLiAgU3BlY2lmaWVkIGZpbGUgbG9jYXRpb246Ci1jb25maWcwMz1Db3VsZCBub3QgZmluZCBXU0RMIGZpbGUuICBTcGVjaWZpZWQgZmlsZSBsb2NhdGlvbjoKLWNvbmZpZzA0PUNhbiBub3Qgc3BlY2lmeSBib3RoIHRoZSBXU0RMIHJlZmVyZW5jZSBhbmQgVURESSByZWZlcmVuY2Ugb3B0aW9ucy4KLWNvbmZpZzA1PVdTREwgZG9jdW1lbnQgd2FzIGVpdGhlciBub3QgZm91bmQgb3IgY291bGQgbm90IGJlIHByb2Nlc3NlZC4KLWNvbmZpZzA2PUludmFsaWQgYW5hbHl6ZXIgY29uZmlndXJhdGlvbiBlbGVtZW50OgotY29uZmlnMDc9Qm90aCB0aGUgPHdzZGxFbGVtZW50PiBhbmQgPHdzZGxVUkk+IGVsZW1lbnRzIG11c3QgYmUgc3BlY2lmaWVkLgotY29uZmlnMDg9Q291bGQgbm90IHJlYWQgYW5hbHl6ZXIgY29uZmlndXJhdGlvbiBmaWxlLiAgU3BlY2lmaWVkIGZpbGUgbG9jYXRpb246Ci1jb25maWcwOT1UaGUgcGFyZW50RWxlbWVudE5hbWUgYXR0cmlidXRlIG11c3QgYmUgc3BlY2lmaWVkIHdpdGggYSBXU0RMIHR5cGUgb2YgcG9ydCBvciBvcGVyYXRpb24uCi1jb25maWcxMD1UaGUgLXdzZGxFbGVtZW50IG9wdGlvbiBtdXN0IGFwcGVhciBhZnRlciB0aGUgLXdzZGxVUkkgb3IgLXVkZGlLZXkgb3B0aW9ucy4KLWNvbmZpZzExPVRoZSAtc2VydmljZUxvY2F0aW9uIG9wdGlvbiBtdXN0IGFwcGVhciBhZnRlciB0aGUgLXdzZGxVUkkgb3IgLXVkZGlLZXkgb3B0aW9ucy4KLWNvbmZpZzEyPVRoZSBzcGVjaWZpZWQgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQ6Ci1jb25maWcxMz1PcHRpb24gZGlkIG5vdCBjb250YWluIGEgdmFsdWUuICBTcGVjaWZpZWQgb3B0aW9uOgotY29uZmlnMTQ9Q291bGQgbm90IGZpbmQgdGVzdCBhc3NlcnRpb24gZG9jdW1lbnQuICBTcGVjaWZpZWQgZmlsZSBsb2NhdGlvbjoKLWNvbmZpZzE1PVJlcG9ydCBmaWxlIGFscmVhZHkgZXhpc3RzIGFuZCByZXBsYWNlIG9wdGlvbiB3YXMgbm90IHNwZWNpZmllZC4KLWNvbmZpZzE2PVRlc3QgYXNzZXJ0aW9uIGRvY3VtZW50IGxvY2F0aW9uIG11c3QgYmUgc3BlY2lmaWVkLgotY29uZmlnMTc9Q291bGQgbm90IGdldCByZXBvcnQgZmlsZSBsb2NhdGlvbi4KLWNvbmZpZzE4PUludmFsaWQgY29ycmVsYXRpb24gdHlwZSBzcGVjaWZpZWQuCi1jb25maWcxOT1UaGUgV1NETCBlbGVtZW50IG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQuCi1jb25maWcyMD1UaGUgV1MtSSBUZXN0IEFzc2VydGlvbiBEb2N1bWVudCAoVEFEKWRvY3VtZW50IHdhcyBlaXRoZXIgbm90IGZvdW5kIG9yIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQuCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9BbmFseXplckNvbnRleHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0FuYWx5emVyQ29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmFkNWFkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0FuYWx5emVyQ29udGV4dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLldTRExEb2N1bWVudDsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIGNvbnRhaW5zIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gd2hpY2ggaXMgcmVxdWlyZWQgYnkgdGVzdCBhc3NlcnRpb25zIGFjcm9zcyBhbGwgYXJ0aWZhY3RzLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgQW5hbHl6ZXJDb250ZXh0Ci17Ci0gIHByb3RlY3RlZCBTZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2VSZWZlcmVuY2UgPSBudWxsOwotICBwcm90ZWN0ZWQgQ2FuZGlkYXRlSW5mbyBjYW5kaWRhdGVJbmZvID0gbnVsbDsKLSAgcHJvdGVjdGVkIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQgPSBudWxsOwotCi0gIC8qKgotICAgKiBDcmVhdGUgYW5hbHl6ZXIgY29udGV4dCB3aXRoIHNlcnZpY2UgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gc2VydmljZVJlZmVyZW5jZSBhIHNlcnZpY2UgcmVmZXJlbmNlLgotICAgKi8KLSAgcHVibGljIEFuYWx5emVyQ29udGV4dChTZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2VSZWZlcmVuY2UpCi0gIHsKLSAgICB0aGlzLnNlcnZpY2VSZWZlcmVuY2UgPSBzZXJ2aWNlUmVmZXJlbmNlOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBzZXJ2aWNlIHJlZmVyZW5jZS4KLSAgICogQHJldHVybiBzZXJ2aWNlIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjc2V0U2VydmljZVJlZmVyZW5jZQotICAgKi8KLSAgcHVibGljIFNlcnZpY2VSZWZlcmVuY2UgZ2V0U2VydmljZVJlZmVyZW5jZSgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5zZXJ2aWNlUmVmZXJlbmNlOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBzZXJ2aWNlIHJlZmVyZW5jZS4KLSAgICogQHBhcmFtIHNlcnZpY2VSZWZlcmVuY2UgYSBzZXJ2aWNlIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0U2VydmljZVJlZmVyZW5jZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZVJlZmVyZW5jZShTZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2VSZWZlcmVuY2UpCi0gIHsKLSAgICB0aGlzLnNlcnZpY2VSZWZlcmVuY2UgPSBzZXJ2aWNlUmVmZXJlbmNlOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGNhbmRpZGF0ZUluZm8uCi0gICAqIEByZXR1cm4gQ2FuZGlkYXRlSW5mby4KLSAgICogQHNlZSAjc2V0Q2FuZGlkYXRlSW5mbwotICAgKi8KLSAgcHVibGljIENhbmRpZGF0ZUluZm8gZ2V0Q2FuZGlkYXRlSW5mbygpCi0gIHsKLSAgICByZXR1cm4gY2FuZGlkYXRlSW5mbzsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSBjYW5kaWRhdGVJbmZvLgotICAgKiBAcGFyYW0gY2FuZGlkYXRlSW5mbyB0aGUgY2FuZGlkYXRlSW5mbyB0byBzZXQuCi0gICAqIEBzZWUgI2dldENhbmRpZGF0ZUluZm8KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENhbmRpZGF0ZUluZm8oQ2FuZGlkYXRlSW5mbyBjYW5kaWRhdGVJbmZvKQotICB7Ci0gICAgdGhpcy5jYW5kaWRhdGVJbmZvID0gY2FuZGlkYXRlSW5mbzsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHdzZGxEb2N1bWVudC4KLSAgICogQHJldHVybiBXU0RMRG9jdW1lbnQuCi0gICAqIEBzZWUgI3NldFdzZGxEb2N1bWVudAotICAgKi8KLSAgcHVibGljIFdTRExEb2N1bWVudCBnZXRXc2RsRG9jdW1lbnQoKSB7Ci0gICAgICByZXR1cm4gd3NkbERvY3VtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHdzZGxEb2N1bWVudC4KLSAgICogQHBhcmFtIHdzZGxEb2N1bWVudCB0aGUgd3NkbERvY3VtZW50IHRvIHNldC4KLSAgICogQHNlZSAjZ2V0V3NkbERvY3VtZW50Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRXc2RsRG9jdW1lbnQoV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCkgewotICAgICAgdGhpcy53c2RsRG9jdW1lbnQgPSB3c2RsRG9jdW1lbnQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0Fzc2VydGlvbkZhaWxFeGNlcHRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0Fzc2VydGlvbkZhaWxFeGNlcHRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRmNWEyYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9Bc3NlcnRpb25GYWlsRXhjZXB0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXI7Ci0KLS8qKgotICogQmFzZSBFeGNlcHRpb24gZm9yIEFzc2VydGlvbiBGYWlsLgotICogCi0gKiBAYXV0aG9yIGd0dXJyZWxsCi0gKiAqLwotcHVibGljIGNsYXNzIEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24KLXsKLQotICAvKioKLQkgKiBDb21tZW50IGZvciA8Y29kZT5zZXJpYWxWZXJzaW9uVUlEPC9jb2RlPgotCSAqLwotCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDMyNTcwMDc2MzU3NDMyNTg5MzNMOwotCi0JLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBBc3NlcnRpb25FeGNlcHRpb24uCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBBc3NlcnRpb25FeGNlcHRpb24uCi0gICAqIEBwYXJhbSBhcmcwIHRoZSBkZXRhaWwgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKFN0cmluZyBhcmcwKQotICB7Ci0gICAgc3VwZXIoYXJnMCk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDM0YTUwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0Fzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplcjsKLQotLyoqCi0gKiBFeGNlcHRpb24gZm9yIEFzc2VydGlvbiBOb3QgQXBwbGljYWJsZS4KLSAqIAotICogQGF1dGhvciBndHVycmVsbAotICovCi1wdWJsaWMgY2xhc3MgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgotewotCi0gIC8qKgotCSAqIENvbW1lbnQgZm9yIDxjb2RlPnNlcmlhbFZlcnNpb25VSUQ8L2NvZGU+Ci0JICovCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMzkwNTUyMzc4Mjk5NDExMjU2NEw7Ci0KLQkvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24uCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpCi0gIHsKLSAgICBzdXBlcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uLgotICAgKiBAcGFyYW0gYXJnMCB0aGUgZGV0YWlsIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbihTdHJpbmcgYXJnMCkKLSAgewotICAgIHN1cGVyKGFyZzApOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0Fzc2VydGlvblBhc3NFeGNlcHRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0Fzc2VydGlvblBhc3NFeGNlcHRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1N2Q2Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9Bc3NlcnRpb25QYXNzRXhjZXB0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXI7Ci0KLS8qKgotICogRXhjZXB0aW9uIGZvciBBc3NlcnRpb24gUGFzcy4KLSAqIAotICogQGF1dGhvciBndHVycmVsbAotICovCi1wdWJsaWMgY2xhc3MgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgotewotCi0JLyoqCi0JICogQ29tbWVudCBmb3IgPGNvZGU+c2VyaWFsVmVyc2lvblVJRDwvY29kZT4KLQkgKi8KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAzMjU3Mjg1ODQyMjgzNTQxODEwTDsKLQotCS8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgQXNzZXJ0aW9uUEFzc0V4Y2VwdGlvbi4KLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25QYXNzRXhjZXB0aW9uKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIEFzc2VydGlvblBBc3NFeGNlcHRpb24uCi0gICAqIEBwYXJhbSBhcmcwIHRoZSBkZXRhaWwgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25QYXNzRXhjZXB0aW9uKFN0cmluZyBhcmcwKQotICB7Ci0gICAgc3VwZXIoYXJnMCk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvQXNzZXJ0aW9uUmVzdWx0RXhjZXB0aW9uLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9Bc3NlcnRpb25SZXN1bHRFeGNlcHRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUwNWFlYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9Bc3NlcnRpb25SZXN1bHRFeGNlcHRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplcjsKLQotLyoqCi0gKiBFeGNlcHRpb24gZm9yIEFzc2VydGlvbiBSZXN1bHQuCi0gKiAKLSAqIEBhdXRob3IgZ3R1cnJlbGwKLSAqLwotcHVibGljIGNsYXNzIEFzc2VydGlvblJlc3VsdEV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgotewotCi0gIC8qKgotCSAqIENvbW1lbnQgZm9yIDxjb2RlPnNlcmlhbFZlcnNpb25VSUQ8L2NvZGU+Ci0JICovCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMzI1NjcyMDY4NDcwMDE1MjYzMkw7Ci0JcHJpdmF0ZSBTdHJpbmcgZGV0YWlsTWVzc2FnZTsKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBBc3NlcnRpb25yZXN1bHRFeGNlcHRpb24uCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0RXhjZXB0aW9uKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgZGV0YWlsTWVzc2FnZSA9IG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIEFzc2VydGlvblJlc3VsdEV4Y2VwdGlvbi4KLSAgICogQHBhcmFtIGFyZzAgdGhlIGRldGFpbCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdEV4Y2VwdGlvbihTdHJpbmcgYXJnMCkKLSAgewotICAgIHN1cGVyKGFyZzApOwotICAgIGRldGFpbE1lc3NhZ2UgPSBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBBc3NlcnRpb25SZXN1bHRFeGNlcHRpb24uCi0gICAqIEBwYXJhbSBhcmcwIHRoZSBkZXRhaWwgbWVzc2FnZS4KLSAgICogQHBhcmFtIGFyZzEgIGZ1cnRoZXIgZGV0YWlsZWQgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHRFeGNlcHRpb24oU3RyaW5nIGFyZzAsIFN0cmluZyBhcmcxKQotICB7Ci0gICAgc3VwZXIoYXJnMCk7Ci0gICAgZGV0YWlsTWVzc2FnZSA9IGFyZzE7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgZGV0YWlsTWVzc2FnZS4KLSAgICogQHJldHVybiB0aGUgZGV0YWlsTWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGV0YWlsTWVzc2FnZSgpCi0gIHsKLSAgICByZXR1cm4gZGV0YWlsTWVzc2FnZTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9CYXNpY1Byb2ZpbGVBbmFseXplci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvQmFzaWNQcm9maWxlQW5hbHl6ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE2Y2U0ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9CYXNpY1Byb2ZpbGVBbmFseXplci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDY3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uLCBQYXJhc29mdCwgQmVhY29uIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgSW5jLiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNICAgICAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqICAgUGFyYXNvZnQgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqICAgQmVhY29uSVQgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXI7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuV1NJVGVzdFRvb2xzUHJvcGVydGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuVG9vbEluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lGaWxlTm90Rm91bmRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5VRERJUmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5pbXBsLldTRExFbGVtZW50SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuQmFzZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuV1NETFZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsLldTRExWYWxpZGF0b3JJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0QXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0V3JpdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbC5EZWZhdWx0UmVwb3J0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuQXJ0aWZhY3RUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlVERElVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5XU0lQcm9wZXJ0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLldTRExEb2N1bWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC5XU0RMVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxEb2N1bWVudENhY2hlOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJpbmRpbmcuQmluZGluZ1RlbXBsYXRlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLkJpbmRpbmdEZXRhaWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5UTW9kZWxEZXRhaWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RmFjdG9yeTsKLQotCi0vKioKLSAqIEFuYWx5emVzIGxvZyBmaWxlcyB0byBjb25maXJtIGNvbmZvcm1hbmNlIHRvIGEgcHJvZmlsZS4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBKaW0gQ2x1bmUKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbQotICogQGF1dGhvciBHcmFoYW0gVHVycmVsbAotICovCi1wdWJsaWMgY2xhc3MgQmFzaWNQcm9maWxlQW5hbHl6ZXIgZXh0ZW5kcyBBbmFseXplcgotewotICAvKioKLSAgICogVG9vbCBpbmZvcm1hdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRPT0xfTkFNRSA9ICJBbmFseXplciI7Ci0KLSAgLyoqCi0gICAqIFdTREwgZG9jdW1lbnQgdG8gYW5hbHl6ZS4KLSAgICovCi0gIHByb3RlY3RlZCBXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50ID0gbnVsbDsKLSAgLy8gcHJpdmF0ZSBXU0RMVmFsaWRhdG9yIHdzZGxWYWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEJhc2ljIHByb2ZpbGUgYW5hbHl6ZXIuCi0gICAqIEBwYXJhbSBhcmdzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHVuYWJsZSB0byBjcmVhdGUgYSBCYXNpYyBwcm9maWxlIGFuYWx5emVyLgotICAgKi8KLSAgcHVibGljIEJhc2ljUHJvZmlsZUFuYWx5emVyKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHN1cGVyKGFyZ3MsIG5ldyBUb29sSW5mbyhUT09MX05BTUUpKTsKLSAgICBuZXcgWE1MRG9jdW1lbnRDYWNoZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIEJhc2ljIHByb2ZpbGUgYW5hbHl6ZXIuCi0gICAqIEBwYXJhbSBhcmdzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAqIEBwYXJhbSB2YWxpZGF0ZSBmbGFnIGZvciBjb21tYW5kIGxpbmUgYXJndW1lbnQgdmFsaWRhdGlvbi4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdW5hYmxlIHRvIGNyZWF0ZSBhIEJhc2ljIHByb2ZpbGUgYW5hbHl6ZXIuCi0gICAqLwotICBwdWJsaWMgQmFzaWNQcm9maWxlQW5hbHl6ZXIoU3RyaW5nW10gYXJncywgYm9vbGVhbiB2YWxpZGF0ZSkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgc3VwZXIoYXJncywgbmV3IFRvb2xJbmZvKFRPT0xfTkFNRSksIHZhbGlkYXRlKTsKLSAgICBuZXcgWE1MRG9jdW1lbnRDYWNoZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIEJhc2ljIHByb2ZpbGUgYW5hbHl6ZXIuCi0gICAqIEBwYXJhbSBhbmFseXplckNvbmZpZ0xpc3QgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgYW5hbHl6ZXIuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHVuYWJsZSB0byBjcmVhdGUgYSBCYXNpYyBwcm9maWxlIGFuYWx5emVyLgotICAgKi8KLSAgcHVibGljIEJhc2ljUHJvZmlsZUFuYWx5emVyKExpc3QgYW5hbHl6ZXJDb25maWdMaXN0KSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBzdXBlcihhbmFseXplckNvbmZpZ0xpc3QsIG5ldyBUb29sSW5mbyhUT09MX05BTUUpKTsKLSAgICBuZXcgWE1MRG9jdW1lbnRDYWNoZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIEJhc2ljIHByb2ZpbGUgYW5hbHl6ZXIuCi0gICAqIEBwYXJhbSBhbmFseXplckNvbmZpZ0xpc3QgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgYW5hbHl6ZXIuCi0gICAqIEBwYXJhbSB3c2RsVVJJIGEgd3NkbCBkb2N1bWVudCBsb2NhdGlvbi4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdW5hYmxlIHRvIGNyZWF0ZSBhIEJhc2ljIHByb2ZpbGUgYW5hbHl6ZXIuCi0gICAqLwotICBwdWJsaWMgQmFzaWNQcm9maWxlQW5hbHl6ZXIoTGlzdCBhbmFseXplckNvbmZpZ0xpc3QsIFN0cmluZyB3c2RsVVJJKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHN1cGVyKGFuYWx5emVyQ29uZmlnTGlzdCwgbmV3IFRvb2xJbmZvKFRPT0xfTkFNRSkpOwotICAgIG5ldyBYTUxEb2N1bWVudENhY2hlKCk7Ci0gICAgCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0IHRoZSBXU0RMIGRvY3VtZW50Ci0gICAgICBpZiAod3NkbFVSSSAhPSBudWxsKQotICAgICAgICB0aGlzLndzZGxEb2N1bWVudCA9IG5ldyBXU0RMRG9jdW1lbnQod3NkbFVSSSk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKFdTRExFeGNlcHRpb24gd2UpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbih3ZS5nZXRNZXNzYWdlKCksIHdlKTsKLSAgICB9Ci0KLSAgfQotICAKLSAgcHJpdmF0ZSBXU0RMRG9jdW1lbnQgZ2V0V3NkbEZyb21VZGRpKCkgewotICAgICAgV1NETERvY3VtZW50IHdzZGxEb2MgPSBudWxsOwotICAgICAgdHJ5IHsKLSAgICAgICAgICBVRERJUHJveHkgdWRkaVByb3h5ID0gbmV3IFVERElQcm94eSgpOwotICAgICAgICAgIFVERElSZWZlcmVuY2UgdWRkaVJlZmVyZW5jZSA9IGdldEFuYWx5emVyQ29uZmlnKCkuZ2V0VURESVJlZmVyZW5jZSgpOwotICAgICAgICAgIHVkZGlQcm94eS5zZXRJbnF1aXJ5VVJMKHVkZGlSZWZlcmVuY2UuZ2V0SW5xdWlyeVVSTCgpKTsKLSAgICAgICAgICBUTW9kZWwgdE1vZGVsID0gbnVsbDsKLQotICAgICAgICAgIGlmICh1ZGRpUmVmZXJlbmNlLmdldEtleVR5cGUoKS5lcXVhbHMoVURESVJlZmVyZW5jZS5CSU5ESU5HX0tFWSkpIHsKLSAgICAgICAgICAgICAgQmluZGluZ0RldGFpbCBiaW5kaW5nRGV0YWlsID0gdWRkaVByb3h5LmdldF9iaW5kaW5nRGV0YWlsKAotICAgICAgICAgICAgICAgICAgICAgIHVkZGlSZWZlcmVuY2UuZ2V0S2V5KCkpOwotICAgICAgICAgICAgICBCaW5kaW5nVGVtcGxhdGUgYmluZGluZ1RlbXBsYXRlID0gKEJpbmRpbmdUZW1wbGF0ZSkgYmluZGluZ0RldGFpbC4KLSAgICAgICAgICAgICAgICAgICAgICBnZXRCaW5kaW5nVGVtcGxhdGVWZWN0b3IoKS5lbGVtZW50QXQoMCk7Ci0gICAgICAgICAgICAgIHRNb2RlbCA9IFVERElVdGlscy5maW5kVE1vZGVsKHVkZGlQcm94eSwgYmluZGluZ1RlbXBsYXRlLCBmYWxzZSk7Ci0gICAgICAgICAgfSBlbHNlIHsgLy8gVURESVJlZmVyZW5jZS5UTU9ERUxfS0VZCi0gICAgICAgICAgICAgIFRNb2RlbERldGFpbCB0TW9kZWxEZXRhaWwgPSB1ZGRpUHJveHkuZ2V0X3RNb2RlbERldGFpbCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdWRkaVJlZmVyZW5jZS5nZXRLZXkoKSk7Ci0gICAgICAgICAgICAgIHRNb2RlbCA9IChUTW9kZWwpIHRNb2RlbERldGFpbC5nZXRUTW9kZWxWZWN0b3IoKS5lbGVtZW50QXQoMCk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgU3RyaW5nIG92ZXJ2aWV3VVJMID0gVURESVV0aWxzLmdldE92ZXJ2aWV3VVJMKHRNb2RlbCk7Ci0gICAgICAgICAgU3RyaW5nIHdzZGxVUkkgPSBVRERJVXRpbHMuZ2V0V1NETExvY2F0aW9uKG92ZXJ2aWV3VVJMKTsKLSAgICAgICAgICB3c2RsRG9jID0gbmV3IFdTRExEb2N1bWVudCh3c2RsVVJJKTsKLQotICAgICAgICAgIC8qIFRPRE86ICBJIHJlZmFjdG9yZWQgdGhpcyBjb2RlIGZyb20gQlNQMzAwMSBidXQgSSdtIG5vdCBzdXJlIHRoYXQKLSAgICAgICAgICAgKiBpdCdzIGNvcnJlY3QuICBUaGlzIG92ZXJyaWRlcyB0aGUgPHdzZGxFbGVtZW50PiBjaGlsZCBvZgotICAgICAgICAgICAqIDx1ZGRpUmVmZXJlbmNlPiBmcm9tIHRoZSBjb25maWcgZmlsZSwgd2hpY2ggbmV2ZXIgZ2V0cyB1c2VkLgotICAgICAgICAgICAqLwotICAgICAgICAgIC8vIElmIHRoZSB3c2RsRWxlbWVudCBkb2VzIG5vdCBleGlzdCwgdGhlbiBzZXQgaXQKLSAgICAgICAgICBpZiAoYW5hbHl6ZXJDb250ZXh0LmdldFNlcnZpY2VSZWZlcmVuY2UoKS5nZXRXU0RMRWxlbWVudCgpID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgICBCaW5kaW5nIGJpbmRpbmcgPSBVRERJVXRpbHMuZ2V0QmluZGluZyhvdmVydmlld1VSTCwgd3NkbERvYyk7Ci0gICAgICAgICAgICAgIFN0cmluZyBiaW5kaW5nTmFtZSA9Ci0gICAgICAgICAgICAgICAgICBiaW5kaW5nID09IG51bGwgPyBudWxsIDogYmluZGluZy5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpOwotICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lc3BhY2UgPQotICAgICAgICAgICAgICAgICAgYmluZGluZyA9PSBudWxsID8gbnVsbCA6IGJpbmRpbmcuZ2V0UU5hbWUoKS5nZXROYW1lc3BhY2VVUkkoKTsKLQotICAgICAgICAgICAgLy8gR2V0IFdTREwgYmluZGluZyBmcm9tIHRoZSBvdmVydmlld1VSTCBhbmQgc2V0IGluIGFuYWx5emVyQ29udGV4dAotICAgICAgICAgICAgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQgPSBuZXcgV1NETEVsZW1lbnRJbXBsKCk7Ci0gICAgICAgICAgICB3c2RsRWxlbWVudC5zZXROYW1lKGJpbmRpbmdOYW1lKTsKLSAgICAgICAgICAgIHdzZGxFbGVtZW50LnNldE5hbWVzcGFjZShuYW1lc3BhY2UpOwotICAgICAgICAgICAgd3NkbEVsZW1lbnQuc2V0VHlwZShXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fQklORElORyk7Ci0gICAgICAgICAgICBhbmFseXplckNvbnRleHQuZ2V0U2VydmljZVJlZmVyZW5jZSgpLnNldFdTRExFbGVtZW50KHdzZGxFbGVtZW50KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIHdzZGxEb2M7Ci0KLSAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgIC8qIElmIHRoZSB3c2RsRG9jIGlzIHNldCBhdCB0aGUgcG9pbnQgb2YgdGhlIGV4Y2VwdGlvbiwgcmV0dXJuIGl0OwotICAgICAgICAgKiBvdGhlcndpc2UgcmV0dXJuIG51bGwuICovCi0gICAgICAgIHJldHVybiB3c2RsRG9jOwotICAgIH0KLSAgfQotICAKLSAgCi0gIC8qKgotICAgKiBQcm9jZXNzIGFsbCBjb25mb3JtYW5jZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4KLSAgICogQHJldHVybiBzdGF0dXMgY29kZS4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgY29uZm9ybWFuY2UgdmFsaWRhdGlvbiBwcm9jZXNzIGZhaWxlZC4KLSAgICovCi0gIHB1YmxpYyBpbnQgdmFsaWRhdGVDb25mb3JtYW5jZSgpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIGludCBzdGF0dXNDb2RlID0gMDsKLQotICAgIFJlcG9ydCByZXBvcnQgPSBudWxsOwotICAgIFJlcG9ydEFydGlmYWN0IHJlcG9ydEFydGlmYWN0ID0gbnVsbDsKLQotICAgIC8vIFNldCB1cCBpbml0aWFsIGFuYWx5emVyIGNvbnRleHQgYmFzZWQgb24gZW50cmllcyBpbiB0aGUgY29uZmlnIGZpbGUKLSAgICB0aGlzLmFuYWx5emVyQ29udGV4dCA9Ci0gICAgICBuZXcgQW5hbHl6ZXJDb250ZXh0KG5ldyBTZXJ2aWNlUmVmZXJlbmNlKGdldEFuYWx5emVyQ29uZmlnKCkpKTsKLQotICAgIFJlcG9ydFdyaXRlciByZXBvcnRXcml0ZXIgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIHRoaXMucHJvZmlsZUFzc2VydGlvbnMgPSBXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzLmdldFByb2ZpbGVBc3NlcnRpb25zKAotICAgICAgICAgICAgICAgIGdldEFuYWx5emVyQ29uZmlnKCkuZ2V0VGVzdEFzc2VydGlvbnNEb2N1bWVudExvY2F0aW9uKCkpOwotCi0gICAgICBpZiAodGhpcy5wcm9maWxlQXNzZXJ0aW9ucyA9PSBudWxsKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKG1lc3NhZ2VMaXN0LmdldE1lc3NhZ2UoImNvbmZpZzIwIiwKLSAgICAgICAJCSAgICJUaGUgV1MtSSBUZXN0IEFzc2VydGlvbiBEb2N1bWVudCAoVEFEKWRvY3VtZW50IHdhcyBlaXRoZXIgbm90IGZvdW5kIG9yIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQuIikpOyAgCi0gICAgICB9CQotCi0gICAgICAvLyBDcmVhdGUgcmVwb3J0IGZyb20gZG9jdW1lbnQgZmFjdG9yeQotICAgICAgcmVwb3J0ID0gZG9jdW1lbnRGYWN0b3J5Lm5ld1JlcG9ydCgpOwotICAgICAgcmVwb3J0LnNldExvY2F0aW9uKGdldEFuYWx5emVyQ29uZmlnKCkuZ2V0UmVwb3J0TG9jYXRpb24oKSk7Ci0KLSAgICAgIC8vIENyZWF0ZSByZXBvcnQgY29udGV4dAotICAgICAgUmVwb3J0Q29udGV4dCByZXBvcnRDb250ZXh0ID0KLSAgICAgICAgbmV3IFJlcG9ydENvbnRleHQoCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkRFRkFVTFRfUkVQT1JUX1RJVExFLAotICAgICAgICAgIHByb2ZpbGVBc3NlcnRpb25zLAotICAgICAgICAgIHRoaXMpOwotICAgICAgcmVwb3J0LnNldFJlcG9ydENvbnRleHQocmVwb3J0Q29udGV4dCk7Ci0KLSAgICAgIC8vIENyZWF0ZSByZXBvcnQgd3JpdGVyCi0gICAgICByZXBvcnRXcml0ZXIgPSBkb2N1bWVudEZhY3RvcnkubmV3UmVwb3J0V3JpdGVyKCk7Ci0gICAgICAvLyBJMThOOiAyMDAzLjAyLjI2IG1vZGlmaWVkIGJ5IEsuTmFrYWdvbWVAQmVhY29uSVQgCi0gICAgICAvL3JlcG9ydFdyaXRlci5zZXRXcml0ZXIobmV3IEZpbGVXcml0ZXIoYW5hbHl6ZXJDb25maWcuZ2V0UmVwb3J0TG9jYXRpb24oKSkpOwotICAgICAgcmVwb3J0V3JpdGVyLnNldFdyaXRlcihnZXRBbmFseXplckNvbmZpZygpLmdldFJlcG9ydExvY2F0aW9uKCkpOwotCi0gICAgICAvLyBDcmVhdGUgcmVwb3J0ZXIKLSAgICAgIHRoaXMucmVwb3J0ZXIgPSBuZXcgRGVmYXVsdFJlcG9ydGVyKHJlcG9ydCwgcmVwb3J0V3JpdGVyKTsKLQotICAgICAgLy8gZmV0Y2ggV1NETCBpZiBub3Qgc2V0IGluIGNvbnN0cnVjdG9yCi0gICAgICAvLyBGaXJzdCwgYXR0ZW1wdCB0byBnZXQgdGhlIFdTREwgVVJJIGZyb20gYSBVRERJIHRNb2RlbAotICAgICAgaWYgKCh3c2RsRG9jdW1lbnQgPT0gbnVsbCkgJiYgKGdldEFuYWx5emVyQ29uZmlnKCkuaXNVRERJUmVmZXJlbmNlU2V0KCkpKQotICAgICAgICAgICAgICB3c2RsRG9jdW1lbnQgPSBnZXRXc2RsRnJvbVVkZGkoKTsKLQotICAgICAgLyogTmV4dCwgdHJ5IHRvIHVzZSB0aGUgV1NETCBzZXR0aW5ncyBmcm9tIHRoZSBjb25maWcgZmlsZS4gIElmIHdlIGNhbid0Ci0gICAgICAgKiBmZXRjaCB0aGF0IFdTREwsIGFuZCB0aGUgY29uZmlnIGZpbGUgaXMgc2V0IHVwIHRvIHRlc3QgYSBXU0RMLCB0aGVuIHRoZQotICAgICAgICogdmFsaWRhdG9yIGZhaWxzIGhlcmUuICovCi0gICAgICBpZiAoKHdzZGxEb2N1bWVudCA9PSBudWxsKSAmJiAoZ2V0QW5hbHl6ZXJDb25maWcoKS5pc1dTRExSZWZlcmVuY2VTZXQoKSkpCi0gICAgICB7Ci0gICAgICAgICAgd3NkbERvY3VtZW50ID0gbmV3IFdTRExEb2N1bWVudChnZXRBbmFseXplckNvbmZpZygpLgotICAgICAgICAgICAgICAgICAgZ2V0V1NETExvY2F0aW9uKCkpOwotCi0gICAgICAgICAgaWYgKHdzZGxEb2N1bWVudCA9PSBudWxsKQotICAgICAgICAgICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKG1lc3NhZ2VMaXN0LmdldE1lc3NhZ2UoImNvbmZpZzA1IiwKLSAgICAgICAgICAgICAgICAgICAgICAiV1NETCBkb2N1bWVudCB3YXMgZWl0aGVyIG5vdCBmb3VuZCBvciBjb3VsZCBub3QgYmUgIiArIAotICAgICAgICAgICAgICAgICAgICAgICJwcm9jZXNzZWQuIikpOwotICAgICAgfQotICAgICAgCi0gICAgICAvKgotICAgICAgICogT25seSB2YWxpZGF0ZSBtZXNzYWdlcyBhZ2FpbnN0IGEgd3NkbCBkb2N1bWVudCBpZiB0aGUgd3NkbCBkb2N1bWVudAotICAgICAgICogZG9lcyBub3QgY29udGFpbiBzb2FwIDEuMiBiaW5kaW5ncy4gCi0gICAgICAgKi8KLQkgIGlmIChXU0RMVXRpbHMuaXNTT0FQMTJXU0RMKHdzZGxEb2N1bWVudCkgJiYgZ2V0QW5hbHl6ZXJDb25maWcoKS5nZXRMb2dMb2NhdGlvbigpICE9IG51bGwpCi0JCSAgZ2V0QW5hbHl6ZXJDb25maWcoKS5zZXRXU0RMUmVmZXJlbmNlKG51bGwpOwotCSAgZWxzZQotCQkgIGFuYWx5emVyQ29udGV4dC5zZXRXc2RsRG9jdW1lbnQod3NkbERvY3VtZW50KTsgIAotCi0gICAgICAvLyBTdGFydCB3cml0aW5nIHJlcG9ydAotICAgICAgdGhpcy5yZXBvcnRlci5zdGFydFJlcG9ydCgpOwotCi0gICAgICAvLyBXYWxrIHRocm91Z2ggdGhlIGFydGlmYWN0IGVsZW1lbnRzIGZyb20gdGhlIFRBRCwgdmFsaWRhdGluZyBlYWNoIG9uZQotICAgICAgcHJvZmlsZUFzc2VydGlvbnMuZ2V0QXJ0aWZhY3RMaXN0KCkua2V5U2V0KCkuaXRlcmF0b3IoKTsKLSAgICAgIGZvciAoSXRlcmF0b3IgaSA9IHByb2ZpbGVBc3NlcnRpb25zLmdldEFydGlmYWN0TGlzdCgpLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgIGkuaGFzTmV4dCgpOyApIHsKLSAgICAgICAgICBTdHJpbmcgYXJ0aWZhY3RUeXBlID0gKFN0cmluZykgaS5uZXh0KCk7Ci0gICAgICAgICAgLy8gU2V0IGN1cnJlbnQgYXJ0aWZhY3QKLSAgICAgICAgICByZXBvcnRBcnRpZmFjdCA9IHNldEN1cnJlbnRBcnRpZmFjdChBcnRpZmFjdFR5cGUuZ2V0QXJ0aWZhY3RUeXBlKAotICAgICAgICAgICAgICAgICAgYXJ0aWZhY3RUeXBlKSk7Ci0gICAgICAgICAgdmFsaWRhdGUocmVwb3J0QXJ0aWZhY3QsIGZhY3RvcnkuZ2V0VmFsaWRhdG9yRm9yQXJ0aWZhY3QoCi0gICAgICAgICAgICAgICAgICBhcnRpZmFjdFR5cGUpKTsKLSAgICAgICAgICB0aGlzLnJlcG9ydGVyLmVuZEN1cnJlbnRBcnRpZmFjdCgpOwotICAgICAgfQotCi0gICAgICAvLyBGaW5pc2ggdGhlIGNvbmZvcm1hbmNlIHJlcG9ydAotICAgICAgcmVwb3J0ZXIuZmluaXNoUmVwb3J0KCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICAgIFN0cmluZyBtZXNzYWdlID0KLSAgICAgICAgbWVzc2FnZUxpc3QuZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiZXJyb3IwMyIsCi0gICAgICAgICAgIlRoZSBjb25mb3JtYW5jZSB2YWxpZGF0aW9uIHByb2Nlc3MgZmFpbGVkLiIpOwotCi0gICAgICAvLyBGaW5pc2ggcmVwb3J0Ci0gICAgICBpZiAocmVwb3J0ZXIgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcHcucHJpbnRsbihtZXNzYWdlKTsKLSAgICAgICAgcHcucHJpbnRsbigKLSAgICAgICAgICBtZXNzYWdlTGlzdC5nZXRNZXNzYWdlKCJleGNlcHRpb24wMSIsICJFeGNlcHRpb246ICIpCi0gICAgICAgICAgICArIGUuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOwotICAgICAgICBlLnByaW50U3RhY2tUcmFjZShwdyk7Ci0gICAgICAgIHJlcG9ydGVyLmZpbmlzaFJlcG9ydFdpdGhFcnJvcihzdy50b1N0cmluZygpKTsKLSAgICAgIH0KLQotICAgICAgaWYgKGUgaW5zdGFuY2VvZiBXU0lFeGNlcHRpb24pCi0gICAgICAgIHRocm93IChXU0lFeGNlcHRpb24pIGU7Ci0gICAgICBlbHNlCi0gICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24obWVzc2FnZSwgZSk7Ci0gICAgfQotICAgIGZpbmFsbHkgCi0gICAgewotICAgICAgaWYgKHJlcG9ydFdyaXRlciAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXBvcnRXcml0ZXIuY2xvc2UoKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAocmVwb3J0ICE9IG51bGwpCi0gICAgewotICAgICAgc3RhdHVzQ29kZSA9Ci0gICAgICAgIChyZXBvcnQuZ2V0U3VtbWFyeVJlc3VsdCgpLmVxdWFscyhBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRCkKLSAgICAgICAgICA/IDAKLSAgICAgICAgICA6IDEpOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0dXNDb2RlOwotICB9Ci0KLSAgLyoqCi0gICAqIFJ1biB0ZXN0IGFzc2VydGlvbnMuCi0gICAqLwotICBwcml2YXRlIHZvaWQgdmFsaWRhdGUoUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QsIEJhc2VWYWxpZGF0b3IgdmFsaWRhdG9yKQotICAgICAgICAgIHRocm93cyBXU0lFeGNlcHRpb24gCi0gIHsKLSAgICBpZiAodmFsaWRhdG9yIGluc3RhbmNlb2YgV1NETFZhbGlkYXRvckltcGwpCi0JewotICAgIAkoKFdTRExWYWxpZGF0b3JJbXBsKXZhbGlkYXRvcikuaW5pdChhbmFseXplckNvbnRleHQsIHByb2ZpbGVBc3NlcnRpb25zLCByZXBvcnRBcnRpZmFjdCwgZ2V0QW5hbHl6ZXJDb25maWcoKSwgcmVwb3J0ZXIsCi0gICAgCQkJZ2V0QW5hbHl6ZXJDb25maWdJbmRleCgpID09IDApOwotCX0KLSAgICBlbHNlCi0gICAgewotICAgICAgdmFsaWRhdG9yLmluaXQoYW5hbHl6ZXJDb250ZXh0LCBwcm9maWxlQXNzZXJ0aW9ucywgcmVwb3J0QXJ0aWZhY3QsIGdldEFuYWx5emVyQ29uZmlnKCksIHJlcG9ydGVyKTsKLSAgICB9Ci0KLSAgICBpZiAodmFsaWRhdG9yLnJ1blRlc3RzKCkpIHsKLSAgICAgICAgdmFsaWRhdG9yLnZhbGlkYXRlQXJ0aWZhY3QoKTsKLSAgICAgICAgdmFsaWRhdG9yLmNsZWFudXAoKTsKLSAgICB9IAotICAgIGVsc2UgCi0gICAgewotICAgICAgdmFsaWRhdG9yLnNldEFsbE1pc3NpbmdJbnB1dCgpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBDb21tYW5kIGxpbmUgaW50ZXJmYWNlIGZvciB0aGUgYW5hbHl6ZXIgdG9vbC4KLSAgICogQHBhcmFtIGFyZ3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KLSAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiBJTyBwcm9ibGVtcyBvY2N1ci4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgaW50IHN0YXR1c0NvZGUgPSAwOwotICAgIEFuYWx5emVyIGFuYWx5emVyID0gbnVsbDsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIFNldCBkb2N1bWVudCBidWlsZGVyIGZhY3RvcnkgY2xhc3MKLSAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgKLSAgICAgICAgV1NJUHJvcGVydGllcy5QUk9QX0pBWFBfRE9DVU1FTlRfRkFDVE9SWSwKLSAgICAgICAgV1NJUHJvcGVydGllcy5nZXRQcm9wZXJ0eShXU0lQcm9wZXJ0aWVzLlBST1BfSkFYUF9ET0NVTUVOVF9GQUNUT1JZKSk7Ci0KLSAgICAgIC8vIFNldCB0aGUgc3lzdGVtIHByb3BlcnR5IGZvciBVRERJNEogdHJhbnNwb3J0Ci0gICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoCi0gICAgICAgIFRyYW5zcG9ydEZhY3RvcnkuUFJPUEVSVFlfTkFNRSwKLSAgICAgICAgV1NJUHJvcGVydGllcy5nZXRQcm9wZXJ0eShUcmFuc3BvcnRGYWN0b3J5LlBST1BFUlRZX05BTUUpKTsKLQotICAgICAgLy8gQ3JlYXRlIHRoZSBhbmFseXplciBvYmplY3QKLSAgICAgIGFuYWx5emVyID0gbmV3IEJhc2ljUHJvZmlsZUFuYWx5emVyKGFyZ3MpOwotCi0gICAgICAvLyBIYXZlIGl0IHByb2Nlc3MgdGhlIGNvbmZvcm1hbmNlIHZhbGlkYXRpb24gZnVuY3Rpb25zCi0gICAgICBzdGF0dXNDb2RlID0gYW5hbHl6ZXIudmFsaWRhdGVDb25mb3JtYW5jZSgpOwotCi0gICAgICAvLyBEaXNwbGF5IG1lc3NhZ2UKLSAgICAgIGFuYWx5emVyLnByaW50TWVzc2FnZSgKLSAgICAgICAgImNyZWF0ZWQwMSIsCi0gICAgICAgIG51bGwsCi0gICAgICAgICJDb25mb3JtYW5jZSByZXBvcnQgaGFzIGJlZW4gY3JlYXRlZC4iKTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgc3RhdHVzQ29kZSA9IDE7Ci0KLSAgICAgIFN0cmluZyBtZXNzYWdlSUQ7Ci0gICAgICBTdHJpbmcgZGVmYXVsdE1lc3NhZ2U7Ci0gICAgICBTdHJpbmcgbWVzc2FnZURhdGE7Ci0KLSAgICAgIGlmICgoZSBpbnN0YW5jZW9mIFdTSUZpbGVOb3RGb3VuZEV4Y2VwdGlvbikKLSAgICAgICAgfHwgKGUgaW5zdGFuY2VvZiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24pKQotICAgICAgewotICAgICAgICAvL3ByaW50U3RhY2tUcmFjZSA9IGZhbHNlOwotICAgICAgICBtZXNzYWdlSUQgPSAiZXJyb3IwMSI7Ci0gICAgICAgIGRlZmF1bHRNZXNzYWdlID0gIkFuYWx5emVyIEVycm9yOiI7Ci0gICAgICAgIG1lc3NhZ2VEYXRhID0gZS5nZXRNZXNzYWdlKCk7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy9wcmludFN0YWNrVHJhY2UgPSB0cnVlOwotICAgICAgICBtZXNzYWdlSUQgPSAiZXJyb3IwMiI7Ci0gICAgICAgIGRlZmF1bHRNZXNzYWdlID0gIkFuYWx5emVyIFN0b3BwZWQgQnkgRXhjZXB0aW9uOiI7Ci0gICAgICAgIG1lc3NhZ2VEYXRhID0gZS50b1N0cmluZygpOwotICAgICAgfQotCi0gICAgICBpZiAoYW5hbHl6ZXIgIT0gbnVsbCkKLSAgICAgICAgYW5hbHl6ZXIucHJpbnRNZXNzYWdlKG1lc3NhZ2VJRCwgbWVzc2FnZURhdGEsIGRlZmF1bHRNZXNzYWdlKTsKLSAgICAgIGVsc2UKLSAgICAgICAgQW5hbHl6ZXIuc3RhdGljUHJpbnRNZXNzYWdlKG1lc3NhZ2VJRCwgbWVzc2FnZURhdGEsIGRlZmF1bHRNZXNzYWdlKTsKLQotICAgICAgaWYgKGFuYWx5emVyICE9IG51bGwKLSAgICAgICAgJiYgYW5hbHl6ZXIuZ2V0QW5hbHl6ZXJDb25maWcoKSAhPSBudWxsCi0gICAgICAgICYmIGFuYWx5emVyLmdldEFuYWx5emVyQ29uZmlnKCkuZ2V0VmVyYm9zZU9wdGlvbigpKQotICAgICAgICBkdW1wKGUpOwotICAgIH0KLQotICAgIC8vIEV4aXQKLSAgICBTeXN0ZW0uZXhpdChzdGF0dXNDb2RlKTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgY3VycmVudCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIGFydGlmYWN0VHlwZSBhbiBBcnRpZmFjdFR5cGUgb2JqZWN0LgotICAgKiBAcmV0dXJuIGEgUmVwb3J0QXJ0aWZhY3Qgb2JqZWN0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBjcmVhdGluZyByZXBvcnQgYXJ0aWZhY3QuCi0gICAqLwotICBwcm90ZWN0ZWQgUmVwb3J0QXJ0aWZhY3Qgc2V0Q3VycmVudEFydGlmYWN0KEFydGlmYWN0VHlwZSBhcnRpZmFjdFR5cGUpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQ3JlYXRlIGFydGlmYWN0Ci0gICAgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QgPSByZXBvcnRlci5jcmVhdGVBcnRpZmFjdCgpOwotICAgIHJlcG9ydEFydGlmYWN0LnNldFR5cGUoYXJ0aWZhY3RUeXBlKTsKLQotICAgIC8vIEFkZCBhcnRpZmFjdCB0byByZXBvcnQKLSAgICB0aGlzLnJlcG9ydGVyLnNldEN1cnJlbnRBcnRpZmFjdChyZXBvcnRBcnRpZmFjdCk7Ci0KLSAgICByZXR1cm4gcmVwb3J0QXJ0aWZhY3Q7Ci0gIH0KLQotICAvKioKLSAgICogUHJpbnQgZXhjZXB0aW9uLgotICAgKiBAcGFyYW0gdCBhIFRocm93YWJsZSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIHZvaWQgZHVtcChUaHJvd2FibGUgdCkKLSAgewotICAgIHdoaWxlICh0IGluc3RhbmNlb2YgV1NJRXhjZXB0aW9uKQotICAgIHsKLSAgICAgIFRocm93YWJsZSBuZXN0ZWQgPSAoKFdTSUV4Y2VwdGlvbikgdCkuZ2V0VGFyZ2V0RXhjZXB0aW9uKCk7Ci0gICAgICBpZiAobmVzdGVkID09IG51bGwpCi0gICAgICAgIGJyZWFrOwotICAgICAgZWxzZQotICAgICAgICB0ID0gbmVzdGVkOwotICAgIH0KLSAgICB0LnByaW50U3RhY2tUcmFjZSgpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9DYW5kaWRhdGVJbmZvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9DYW5kaWRhdGVJbmZvLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZTgyOGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvQ2FuZGlkYXRlSW5mby5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplcjsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5GYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkltcG9ydDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwuV1NETERvY3VtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLldTRExVdGlsczsKLQotLyoqCi0gKiBQcm92aWRlIGEgbm9ybWFsaXplZCBzZXQgb2YgZGF0YSByZWxhdGluZyB0byB0aGUgc2VydmljZSB1bmRlciB0ZXN0LgotICogRm9yIGV4YW1wbGUsIHdpdGggZW5kcG9pbnQgY29ycmVsYXRpb24gYW5kIHdzZGxFbGVtZW50IG9mIHR5cGUgIm1lc3NhZ2UiIAotICogdGhlcmUgY291bGQgYmUgbXVsdGlwbGUgbWF0Y2hlcyBmb3IgbW9zdCBlbGVtZW50IHR5cGVzIGluY2x1ZGluZyBXU0RMIFNlcnZpY2UuCi0gKiAodGhvdWdoIHRoZSBvYmplY3RpdmUgaXMgdG8gZW5zdXJlIGZpbHRlcmluZyB0byBhIHNpbmdsZSBzZXJ2aWNlIGlmIGF0IGFsbCBwb3NzaWJsZSkuIAotICogCi0gKiBAYXV0aG9yIGd0dXJyZWxsCi0gKi8KLQotLy8gQUREOmNvdWxkIGJlIGJldHRlciBhcyBhIHNpbmdsZXRvbj8KLQotcHVibGljIGNsYXNzIENhbmRpZGF0ZUluZm8KLXsKLQotICAvLyBOb3JtYWxpemVkIGZpeGVkIGNvcnJlbGF0aW9uIGRhdGEgZGVyaXZlZCBmcm9tIHRoZSBhbmFseXplciBjb25maWcgYW5kIHRoZSB3c2RsLAotICAvLyByZXByZXNlbnRpbmcgd2hhdCB3ZSBrbm93IGFib3V0IHRoZSBzZXJ2aWNlIGZyb20gdGhlc2UgdHdvIHNvdXJjZXMuICAKLSAgcHJpdmF0ZSBEZWZpbml0aW9uW10gZGVmaW5pdGlvbnMgPSBudWxsOwotCi0gIHByaXZhdGUgSW1wb3J0W10gaW1wb3J0cyA9IG51bGw7Ci0gIHByaXZhdGUgVHlwZXNbXSB0eXBlcyA9IG51bGw7Ci0KLSAgcHJpdmF0ZSBNZXNzYWdlW10gbWVzc2FnZXMgPSBudWxsOwotICBwcml2YXRlIE9wZXJhdGlvbltdIG9wZXJhdGlvbnMgPSBudWxsOwotICBwcml2YXRlIFBvcnRUeXBlW10gcG9ydFR5cGVzID0gbnVsbDsKLSAgcHJpdmF0ZSBCaW5kaW5nW10gYmluZGluZ3MgPSBudWxsOwotICBwcml2YXRlIFBvcnRbXSBwb3J0cyA9IG51bGw7Ci0KLSAgcHJpdmF0ZSBVUklbXSBlbmRQb2ludHMgPSBudWxsOyAvLyBsaXN0IG9idGFpbmFibGUgZnJvbSBhIHBvcnQKLQotICBwcml2YXRlIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQ7IC8vIHJlZmVyZW5jZSBwcm9iYWJseSBub3QgZGVzaXJhYmxlIGhlcmUKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIENhbmRpZGF0ZUluZm8uCi0gICAqIEV4dHJhY3Qgbm9ybWFsaXNlZCBlbnRyeSBkYXRhIGZyb20gd3NkbCwgYWNjb3JkaW5nIHRvIGNvbmZpZyB3c2RsRWxlbWVudCAmIHNlcnZpY2VMb2NhdGlvbgotICAgKiBAcGFyYW0gc2VydmljZVJlZmVyZW5jZSBhIFNlcnZpY2VSZWZlcmVuY2Ugb2JqZWN0LgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IGEgV1NETCBkb2N1bWVudC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgY3JlYXRpbmcgQ2FuZGlkYXRlSW5mbyBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgQ2FuZGlkYXRlSW5mbygKLSAgICBTZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2VSZWZlcmVuY2UsCi0gICAgV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIC8vIEFERDogY2hlY2sgZm9yIG51bGwgZG9jdW1lbnQ/Ci0KLSAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKTsKLQotICAgIHRoaXMud3NkbERvY3VtZW50ID0gd3NkbERvY3VtZW50OwotCi0gICAgLyoKLSAgICAgKiBHZW5lcmFsaXNlZCBmaWVsZHMgaW5kZXBlbmRlbnQgb2Ygd3NkbEVsZW1lbnQ6Ci0gICAgICovCi0gICAgLy8gQUREOiBjaGVjayB3aGV0aGVyIHRoZXNlIG5lZWQgdG8gYmUgZWl0aGVyIGV4cGFuZGVkIG9yIGZpbHRlcmVkIGRvd24uCi0gICAgLy8gQXNzdW1lIFdTREw0SiBwdWxscyBpbnQgdGhlIGZ1bGwgdHJlZSBhdCB0aGUgcm9vdCBkb2N1bWVudCBmb3Igbm93CQkKLSAgICAvL3RoaXMuaW1wb3J0cyA9IHdzZGxEb2N1bWVudC5nZXRJbXBvcnRzKCk7Ci0KLSAgICAvLyAuLi4gb3IgaWYgb25seSBkb3duIHRvIGZpcnN0IGxldmVsLi4uLgotICAgIHRoaXMuaW1wb3J0cyA9Ci0gICAgICAoSW1wb3J0W10pIGdldEFsbEltcG9ydHMoCi0gICAgICAgIHdzZGxEb2N1bWVudC5nZXREZWZpbml0aW9ucygpKS50b0FycmF5KG5ldyBJbXBvcnRbXSB7Ci0gICAgfSk7Ci0KLSAgICAvKiBEZWZpbml0aW9ucy4gCi0gICAgICogTm90ZSB0aGF0IHRoZSB0aGUgZmlyc3QgYXJyYXkgZWxlbWVudCBpcyBmb3IgdGhlIHJvb3QgZG9jCi0gICAgICogd2hpY2ggY29udGFpbnMgYWxsIFdTREwgZWxlbWVudHMgaW4gc2NvcGUgdmlhIDxpbXBvcnQ+IGRlY2xhcmF0aW9ucywKLSAgICAgKiBhcyB3ZWxsIGFzIHRoZSByb290IGRvY3VtZW50IGl0c2VsZi4gVGhlcmVmb3JlIHRoZSBzZWNvbmQgZGVmaW5pdGlvbnMgCi0gICAgICogYXJyYXkgZWxlbWVudCBhbmQgYWJvdmUgYXJlIHJlZHVuZGFudCwgYnV0ICptYXkqIHByb3ZlIHVzZWZ1bCB0byB0aGUgYXNzZXJ0aW9uCi0gICAgICogY29kZS4KLSAgICAgKi8KLQotICAgIHRoaXMuZGVmaW5pdGlvbnMgPSBuZXcgRGVmaW5pdGlvbltpbXBvcnRzLmxlbmd0aCArIDFdOwotICAgIC8vIGFsbG93IHJvb20gZm9yIHJvb3QgZG9jCQkKLQotICAgIHRoaXMuZGVmaW5pdGlvbnNbMF0gPSB3c2RsRG9jdW1lbnQuZ2V0RGVmaW5pdGlvbnMoKTsgLy8gcm9vdCBkb2N1bWVudCAgICAKLQotICAgIC8vIEFsbG9jYXRlIGFycmF5IGZvciB0eXBlcyBlbGVtZW50cwotICAgIFR5cGVzW10gdGVtcFR5cGVzID0gbmV3IFR5cGVzW2RlZmluaXRpb25zLmxlbmd0aF07Ci0KLSAgICBpbnQgdHlwZXNDb3VudCA9IDA7Ci0KLSAgICBpZiAoZGVmaW5pdGlvbnNbMF0uZ2V0VHlwZXMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIHRlbXBUeXBlc1swXSA9IHRoaXMuZGVmaW5pdGlvbnNbMF0uZ2V0VHlwZXMoKTsgLy8gcm9vdCBkb2N1bWVudAkKLSAgICAgIHR5cGVzQ291bnQrKzsKLSAgICB9Ci0KLSAgICAvLyBEZWZpbml0aW9ucyBmcm9tIG90aGVyIChpbXBvcnRlZCkgd3NkbHMgY29ycmVsYXRpbmcgdG8gdGhlIGNhbmRpZGF0ZQotICAgIC8vIE9ubHkgb25lIGxldmVsIGRvd24gZm9yIG5vdwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW1wb3J0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoKChkZWZpbml0aW9uc1tpICsgMV0gPSBpbXBvcnRzW2ldLmdldERlZmluaXRpb24oKSkgIT0gbnVsbCkKLSAgICAgICAgJiYgKGRlZmluaXRpb25zW2kgKyAxXS5nZXRUeXBlcygpICE9IG51bGwpKQotICAgICAgewotICAgICAgICB0ZW1wVHlwZXNbdHlwZXNDb3VudF0gPSBkZWZpbml0aW9uc1tpICsgMV0uZ2V0VHlwZXMoKTsKLSAgICAgICAgdHlwZXNDb3VudCsrOwotICAgICAgfQotICAgIH0KLQotICAgIGlmICh0eXBlc0NvdW50ID4gMCkKLSAgICB7Ci0gICAgICB0aGlzLnR5cGVzID0gbmV3IFR5cGVzW3R5cGVzQ291bnRdOwotCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzQ291bnQ7IGkrKykKLSAgICAgICAgdGhpcy50eXBlc1tpXSA9IHRlbXBUeXBlc1tpXTsKLSAgICB9Ci0gICAgLyogCi0gICAgICogUG9wdWxhdGUgZWxlbWVudCBoaWVyYWNoeToKLSAgICAgKiBQb3J0Ci0gICAgICogQmluZGluZwotICAgICAqIFBvcnRUeXBlCi0gICAgICogb3BlcmF0aW9uKHMpCi0gICAgICogbWVzc2FnZShzKQotICAgICAqLwotCi0gICAgaWYgKHdzZGxFbGVtZW50LmlzUG9ydCgpKQotICAgIHsKLQotICAgICAgUG9ydCBwb3J0ID0gbnVsbDsKLQotICAgICAgLy8gVXNlIHBhcmVudEVsZW1lbnROYW1lIHRvIHF1YWxpZnkgdGhlIHBvcnQgd2l0aGluIGEgc2VydmljZS4JCQotICAgICAgUU5hbWUgc2VydmljZU5hbWUgPSB3c2RsRWxlbWVudC5nZXRQYXJlbnRFbGVtZW50UU5hbWUoKTsKLSAgICAgIFNlcnZpY2VbXSBzID0gd3NkbERvY3VtZW50LmdldFNlcnZpY2VzKCk7Ci0gICAgICBTdHJpbmcgcG9ydE5hbWUgPSB3c2RsRWxlbWVudC5nZXROYW1lKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoICYmIHBvcnQgPT0gbnVsbDsgaSsrKQotICAgICAgewotICAgICAgICBpZiAoc1tpXS5nZXRRTmFtZSgpLmVxdWFscyhzZXJ2aWNlTmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICBwb3J0ID0gc1tpXS5nZXRQb3J0KHBvcnROYW1lKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAocG9ydCA9PSBudWxsKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKAotICAgICAgICAgICJXU0RMIFBvcnQgXCciCi0gICAgICAgICAgICArIHBvcnROYW1lCi0gICAgICAgICAgICArICJcJyBmb3IgU2VydmljZSBcJyIKLSAgICAgICAgICAgICsgc2VydmljZU5hbWUKLSAgICAgICAgICAgICsgIlwnIG5vdCBmb3VuZCBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9uIik7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHRoaXMucG9ydHMgPSBuZXcgUG9ydFtdIHsgcG9ydCB9OwotICAgICAgICAvLyBBREQ6IGRvIHNlcnZpY2VMb2NhdGlvbiBjaGVjayBmb3Igc29hcGJpbmQ6YWRkcmVzcz8KLSAgICAgICAgZGVzY2VuZGVudHMocG9ydCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEFERDogdGhlIGZvbGxvd2luZyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgaGVyZSBpbnN0ZWFkIHRvIHJlZmluZSBjb250ZXh0IGluZm8KLSAgICAgIC8vIGRlZmluaXRpb25zIAotICAgICAgLy8gaW1wb3J0cyAKLSAgICAgIC8vIHR5cGVzCi0KLSAgICB9Ci0KLSAgICBlbHNlIGlmICh3c2RsRWxlbWVudC5pc0JpbmRpbmcoKSkKLSAgICB7Ci0gICAgICBpZiAod3NkbEVsZW1lbnQuZ2V0UU5hbWUoKSAhPSBudWxsCi0gICAgICAgICYmIHdzZGxFbGVtZW50LmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCkgIT0gbnVsbAotICAgICAgICAmJiB3c2RsRWxlbWVudC5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpLmxlbmd0aCgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgQmluZGluZyBiaW5kaW5nID0KLSAgICAgICAgICB3c2RsRG9jdW1lbnQuZ2V0RGVmaW5pdGlvbnMoKS5nZXRCaW5kaW5nKHdzZGxFbGVtZW50LmdldFFOYW1lKCkpOwotCi0gICAgICAgIGlmIChiaW5kaW5nID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKAotICAgICAgICAgICAgIldTREwgQmluZGluZyBuYW1lZCBcJyIKLSAgICAgICAgICAgICAgKyB3c2RsRWxlbWVudC5nZXRRTmFtZSgpCi0gICAgICAgICAgICAgICsgIlwnIG5vdCBmb3VuZCBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9uIik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgdGhpcy5iaW5kaW5ncyA9IG5ldyBCaW5kaW5nW10geyBiaW5kaW5nIH07Ci0KLSAgICAgICAgICAvLyB0aGUgcmVzdCAuLi4gYmVsb3cgYmluZGluZzoJCi0gICAgICAgICAgLy8gcG9ydFR5cGVzIGZyb20gYmluZGluZwotICAgICAgICAgIC8vIG9wZXJhdGlvbnMgZnJvbSBwb3J0VHlwZXMKLSAgICAgICAgICAvLyBtZXNzYWdlcyBmcm9tIG9wZXJhdGlvbnMKLSAgICAgICAgICBkZXNjZW5kZW50cyhiaW5kaW5nKTsKLQotICAgICAgICAgIC8vIGFib3ZlIGJpbmRpbmc6Ci0gICAgICAgICAgLy8gcG9ydHMKLSAgICAgICAgICAvLyBkZWZpbml0aW9ucywgaW1wb3J0cywgdHlwZXMgKGZ1dHVyZT8pCQkJCQotICAgICAgICAgIC8vIGFuY2VzdG9ycyhiaW5kaW5ncyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBlbHNlIGlmICh3c2RsRWxlbWVudC5pc1BvcnRUeXBlKCkpCi0gICAgewotCi0gICAgICBQb3J0VHlwZSBwb3J0VHlwZSA9Ci0gICAgICAgIHdzZGxEb2N1bWVudC5nZXREZWZpbml0aW9ucygpLmdldFBvcnRUeXBlKHdzZGxFbGVtZW50LmdldFFOYW1lKCkpOwotICAgICAgdGhpcy5wb3J0VHlwZXMgPSBuZXcgUG9ydFR5cGVbXSB7IHBvcnRUeXBlIH07Ci0KLSAgICAgIGlmIChwb3J0VHlwZSA9PSBudWxsKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKAotICAgICAgICAgICJXU0RMIFBvcnRUeXBlIG5hbWVkIFwnIgotICAgICAgICAgICAgKyB3c2RsRWxlbWVudC5nZXRRTmFtZSgpCi0gICAgICAgICAgICArICJcJyBub3QgZm91bmQgaW4gc2VydmljZSBkZXNjcmlwdGlvbiIpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICB0aGlzLnBvcnRUeXBlcyA9IG5ldyBQb3J0VHlwZVtdIHsgcG9ydFR5cGUgfTsKLSAgICAgICAgLy8gdGhlIHJlc3QgLi4uIGJlbG93IHBvcnRUeXBlOgkKLSAgICAgICAgZGVzY2VuZGVudHMocG9ydFR5cGUpOwotCi0gICAgICAgIC8vIGFib3ZlIHBvcnRUeXBlOgotICAgICAgICAvLyBwb3J0cwotICAgICAgICAvLyBkZWZpbml0aW9ucywgaW1wb3J0cywgdHlwZXMgKGZ1dHVyZSkgPwotICAgICAgICAvL2FuY2VzdG9ycyhwb3J0VHlwZXMpOwkJCi0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHdzZGxFbGVtZW50LmlzT3BlcmF0aW9uKCkpCi0gICAgewotCi0gICAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gbnVsbDsKLSAgICAgIFN0cmluZyBjb25maWdPcE5hbWUgPSB3c2RsRWxlbWVudC5nZXROYW1lKCk7Ci0KLSAgICAgIC8vIFVzZSBwYXJlbnRFbGVtZW50TmFtZSB0byBxdWFsaWZ5IHRoZSBvcGVyYXRpb24gd2l0aGluIGEgcG9ydFR5cGUuCi0gICAgICBRTmFtZSBwb3J0VHlwZU5hbWUgPSB3c2RsRWxlbWVudC5nZXRQYXJlbnRFbGVtZW50UU5hbWUoKTsKLSAgICAgIFBvcnRUeXBlW10gcCA9IHdzZGxEb2N1bWVudC5nZXRQb3J0VHlwZXMoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcC5sZW5ndGggJiYgb3BlcmF0aW9uID09IG51bGw7IGkrKykKLSAgICAgIHsKLSAgICAgICAgaWYgKHBbaV0uZ2V0UU5hbWUoKS5lcXVhbHMocG9ydFR5cGVOYW1lKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIHdzZGw0aiBhdmFpbGFibGUgbWV0aG9kIGNhbGwgYmVsb3cgaW1wbGllcyB0aGF0IG9ubHkgCi0gICAgICAgICAgLy8gbmFtZStpbnB1dG5hbWUrb3V0cHV0bmFtZSB1bmlxdWVseSBkZWZpbmVzIG9wZXJhdGlvbiEgCi0gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGhhdmUgPGlucHV0PiAmIDxvdXRwdXQ+IG5hbWUgaW5mb3JtYXRpb24KLSAgICAgICAgICAvLyBhdmFpbGFibGUgaW4gdGhlIGNvbmZpZywgdXNlIHRoaXMgaW5zdGVhZCBmb3Igbm93OiAtIAotICAgICAgICAgIC8vIEdldCB0aGUgZmlyc3Qgb3BlcmF0aW9uIHdlIGZpbmQ6Ci0gICAgICAgICAgSXRlcmF0b3Igb3BJdCA9IHBbaV0uZ2V0T3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgT3BlcmF0aW9uIG9wID0gbnVsbDsKLSAgICAgICAgICB3aGlsZSAob3BJdC5oYXNOZXh0KCkgJiYgb3BlcmF0aW9uID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgb3AgPSAoT3BlcmF0aW9uKSBvcEl0Lm5leHQoKTsKLSAgICAgICAgICAgIGlmIChjb25maWdPcE5hbWUuZXF1YWxzKG9wLmdldE5hbWUoKSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAob3BlcmF0aW9uID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICAgIk5vIFdTREwgT3BlcmF0aW9uIG5hbWVkIFwnIgotICAgICAgICAgICAgKyB3c2RsRWxlbWVudC5nZXRRTmFtZSgpCi0gICAgICAgICAgICArICJcJyBmb3VuZCBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9uIik7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHRoaXMub3BlcmF0aW9ucyA9IG5ldyBPcGVyYXRpb25bXSB7IG9wZXJhdGlvbiB9OwotCi0gICAgICAgIGRlc2NlbmRlbnRzKG9wZXJhdGlvbik7Ci0gICAgICAgIC8vYW5jZXN0b3JzKG9wZXJhdGlvbnMpOwotICAgICAgfQotICAgIH0KLQotICAgIGVsc2UgaWYgKHdzZGxFbGVtZW50LmlzTWVzc2FnZSgpKQotICAgIHsKLQotICAgICAgTWVzc2FnZSBtZXNzYWdlID0KLSAgICAgICAgd3NkbERvY3VtZW50LmdldERlZmluaXRpb25zKCkuZ2V0TWVzc2FnZSh3c2RsRWxlbWVudC5nZXRRTmFtZSgpKTsKLSAgICAgIGlmIChtZXNzYWdlID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICAgIk5vIFdTREwgTWVzc2FnZSBuYW1lZCBcJyIKLSAgICAgICAgICAgICsgd3NkbEVsZW1lbnQuZ2V0UU5hbWUoKQotICAgICAgICAgICAgKyAiXCcgZm91bmQgaW4gc2VydmljZSBkZXNjcmlwdGlvbiIpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbmV3IE1lc3NhZ2VbXSB7IG1lc3NhZ2UgfTsKLQotICAgICAgICAvL2FuY2VzdG9ycyhtZXNzYWdlcyk7IAotICAgICAgfQotICAgIH0KLQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKAotICAgICAgICAiVW5yZWNvZ25pc2VkIDxXU0RMRWxlbWVudCB0eXBlPiBpbiBjb25maWc6ICIgKyB3c2RsRWxlbWVudC5nZXRUeXBlKCkpOwotICAgIH0KLQotICAgIC8vIGdldCBpbmZvIGFib3V0IHRoZSBlZmZlY3RpdmUgc2VydmljZSBsb2NhdGlvbiAocykKLSAgICAvL3RoaXMuZW5kUG9pbnRzID0gZGVyaXZlRW5kcG9pbnRzKGFuYWx5emVyQ29uZmlnLCB0aGlzLnBvcnRzLCB0aGlzLmRlZmluaXRpb25zKTsKLSAgICB0aGlzLmVuZFBvaW50cyA9Ci0gICAgICBkZXJpdmVFbmRwb2ludHMoc2VydmljZVJlZmVyZW5jZSwgdGhpcy5wb3J0cywgdGhpcy5kZWZpbml0aW9ucyk7Ci0gIH0KLQotICAvKiogCi0gICAgICogYW5jZXN0b3IgY29kZSBpcyBub3QgdXNlZCBhdCBwcmVzZW50LgotICAgICAqIAotICAgICAqLwotICAvKiAgIAotICAgICBwcm90ZWN0ZWQgdm9pZCBhbmNlc3RvcnMoUG9ydFtdIHBvcnRzKSB7Ci0gICAgIAkvLyBubyBhbmNlc3RvcnMgb2YgUG9ydCByZXF1aXJlZCAoZm9yIG5vdykKLSAgICAgfSAJICAgIAotICAgICBwcm90ZWN0ZWQgdm9pZCBhbmNlc3RvcnMoQmluZGluZ1tdIGJpbmRpbmdzKSB7CSAgICAKLSAgICAJCS8vIFBvcnRzIGZyb20gQmluZGluZ3MgIDEtMi0xCi0gICAgIAkKLSAgICAgCS8vICoqKiBjaGVhdCBmb3Igbm93IC0gZ2V0IHBvcnRzIGZyb20gYWxsIHNlcnZpY2VzIGluIHRoZSB3c2RsIGRvYwotICAgICAJLy8gQUREOiBmaW5kIGNvcnJlY3QgbWFwcGluZyBiYXNlZCBvbiB0aGUgc3VwcGxpZWQgYmluZGluZ3MKLSAgICAgCVNlcnZpY2VbXSBzZXJ2aWNlID0gd3NkbERvY3VtZW50LmdldFNlcnZpY2VzKCk7Ci0gICAgIAlIYXNoU2V0IHNldCA9IG5ldyBIYXNoU2V0KCk7Ci0gIAkJZm9yIChpbnQgaT0wOyBpPnNlcnZpY2UubGVuZ3RoOyBpKyspIHsKLSAgCQkJc2V0LmFkZChzZXJ2aWNlW2ldLmdldFBvcnRzKCkpOyAgCi0gIAkJfQotICAJCQkKLSAgCQkvLyBhc3NpZ24gdGhlIHBhcmVudCBncm91cCBhbmQgcHJvY2VzcyB0aGUgZ3JhbmRwYXJlbnRzIGlmIGFueQkJCQkJCQkJCi0gIAkJYW5jZXN0b3JzKHRoaXMucG9ydHMgPSAoUG9ydFtdKXNldC50b0FycmF5KHRoaXMucG9ydHMgPSBuZXcgUG9ydFswXSkpOwotICAgICB9Ci0gICAgIHByb3RlY3RlZCB2b2lkIGFuY2VzdG9ycyhQb3J0VHlwZVtdIHBvcnRUeXBlcykgewkgICAgCi0gICAgCQkvLyBCaW5kaW5ncyBmcm9tIFBvcnRUeXBlcyAgMS0yLTEKLSAgICAgCQotICAgICAJLy8gYWRkIGhhdmUgdG8gc3RhcnQgd2l0aCBhbGwgYmluZGluZ3MgaW4gZG9jIGFuZCBzZWFyY2ggZm9yIHRob3NlCi0gICAgIAkvLyB3aXRoIHRoZSBwb3J0VHlwZSAgCi0gICAgIAlIYXNoU2V0IHNldCA9IG5ldyBIYXNoU2V0KCk7Ci0gIAkJZm9yIChpbnQgaT0wOyBpPnBvcnRUeXBlcy5sZW5ndGg7IGkrKykgewotICAJCS8vIHNldC5hZGQocG9ydFR5cGVzW2ldLmdldCgpKTsgIAotICAJCX0KLSAgCQkJCi0gIAkJLy8gYXNzaWduIHRoZSBwYXJlbnQgZ3JvdXAgYW5kIHByb2Nlc3MgdGhlIGdyYW5kcGFyZW50cyBpZiBhbnkJCQkJCQkJCQotICAJCWFuY2VzdG9ycyh0aGlzLmJpbmRpbmdzID0gKEJpbmRpbmdbXSlzZXQudG9BcnJheSh0aGlzLmJpbmRpbmdzID0gbmV3IEJpbmRpbmdbMF0pKTsKLSAgICAgfQotICAgICBwcm90ZWN0ZWQgdm9pZCBhbmNlc3RvcnMoT3BlcmF0aW9uW10gb3BlcmF0aW9ucykgewkgICAgCi0gICAgCQkvLyBQb3J0VHlwZXMgZnJvbSBPcGVyYXRpb25zICAxLTItMQotICAgICAJICAKLSAgICAgCUhhc2hTZXQgc2V0ID0gbmV3IEhhc2hTZXQoKTsKLSAgCQlmb3IgKGludCBpPTA7IGk+b3BlcmF0aW9ucy5sZW5ndGg7IGkrKykgewotICAJCQkvLyBzZXQuYWRkKG9wZXJhdGlvbnNbaV0uZ2V0KCkpOyAgCi0gIAkJfQotICAJCQkKLSAgCQkvLyBhc3NpZ24gdGhlIHBhcmVudCBncm91cCBhbmQgcHJvY2VzcyB0aGUgZ3JhbmRwYXJlbnRzIGlmIGFueQkJCQkJCQkJCi0gIAkJYW5jZXN0b3JzKHRoaXMucG9ydFR5cGVzID0gKFBvcnRUeXBlW10pc2V0LnRvQXJyYXkodGhpcy5wb3J0VHlwZXMgPSBuZXcgUG9ydFR5cGVbMF0pKTsKLSAgICAgfQotICAgICBwcm90ZWN0ZWQgdm9pZCBhbmNlc3RvcnMoTWVzc2FnZVtdIG1lc3NhZ2VzKSB7CSAgICAKLSAgICAJCS8vIE9wZXJhdGlvbnMgZnJvbSBNZXNzYWdlcyAgMS0yLTEKLSAgICAgCS8vIEFERCBmaXggaXQhICAKLSAgICAgCUhhc2hTZXQgc2V0ID0gbmV3IEhhc2hTZXQoKTsKLSAgCQlmb3IgKGludCBpPTA7IGk+bWVzc2FnZXMubGVuZ3RoOyBpKyspIHsKLSAgCQkJLy8gc2V0LmFkZChtZXNzYWdlc1tpXS5nZXQoKSk7ICAKLSAgCQl9Ci0gIAkJCQotICAJCS8vIGFzc2lnbiB0aGUgcGFyZW50IGdyb3VwIAkKLSAgCQl0aGlzLnBvcnRUeXBlcyA9IChQb3J0VHlwZVtdKXNldC50b0FycmF5KHRoaXMucG9ydFR5cGVzID0gbmV3IFBvcnRUeXBlWzBdKTsKLSAgICAgfQotICAqLwotCi0gIC8qKgotICAgKiBEZXNjZW5kYW50IG1ldGhvZCBmb3IgY29tcGxldGluZyBjYW5kaWRhdGUgc2VydmljZSBjb250ZXh0IGNyZWF0aW9uLgotICAgKiBAcGFyYW0gcG9ydCAgYSBQb3J0IG9iamVjdAotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwb3J0IGlzIG51bGwuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBkZXNjZW5kZW50cyhQb3J0IHBvcnQpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIEJpbmRpbmcgZnJvbSBQb3J0ICAxLTItMQotCi0gICAgaWYgKHBvcnQgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJJbnRlcm5hbCBlcnJvcjogZXhwZWN0ZWQgYSBQb3J0IHZhbHVlIik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0aGlzLmJpbmRpbmdzID0gbmV3IEJpbmRpbmdbXSB7IHBvcnQuZ2V0QmluZGluZygpfTsKLSAgICAgIGlmICh0aGlzLmJpbmRpbmdzWzBdICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8qIEFzc2lnbiB0aGUgY2hpbGQgZ3JvdXAgYW5kIHByb2Nlc3MgdGhlIGdyYW5kY2hpbGRyZW4gaWYgYW55LgotICAgICAgICAqIE51bGwgYXJndW1lbnQgdmFsdWUgcGFzc2VkIGludG8gdGhlIGZvbGxvd2luZyBtZXRob2Qgd291bGQgCi0gICAgICAgICogc3VnZ2VzdCBhIFdTREwgZGVmaW5pdGlvbiBpbmNvbnNpc3RlbmN5Ci0gICAgICAgICogd2hpY2ggd2lsbCBiZSBwaWNrZWQgdXAgZHVyaW5nIERlc2NyaXB0aW9uIEFydGlmYWN0IFRBIHRlc3RpbmcuCi0gICAgICAgICovCi0gICAgICAgIGRlc2NlbmRlbnRzKHRoaXMuYmluZGluZ3NbMF0pOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBEZXNjZW5kYW50IG1ldGhvZCBmb3IgY29tcGxldGluZyBjYW5kaWRhdGUgc2VydmljZSBjb250ZXh0IGNyZWF0aW9uLgotICAgKiBAcGFyYW0gYmluZGluZyAgYSBCaW5kaW5nIG9iamVjdAotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBiaW5kaW5nIGlzIG51bGwuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBkZXNjZW5kZW50cyhCaW5kaW5nIGJpbmRpbmcpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIHBvcnRUeXBlIGZyb20gQmluZGluZyAxLTItMQotCi0gICAgaWYgKGJpbmRpbmcgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJJbnRlcm5hbCBlcnJvcjogZXhwZWN0ZWQgYSBCaW5kaW5nIHZhbHVlIik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0aGlzLnBvcnRUeXBlcyA9IG5ldyBQb3J0VHlwZVtdIHsgYmluZGluZy5nZXRQb3J0VHlwZSgpfTsKLSAgICAgIGlmICh0aGlzLnBvcnRUeXBlc1swXSAhPSBudWxsKQotICAgICAgewotICAgICAgICAvKiBBc3NpZ24gdGhlIGNoaWxkIGdyb3VwIGFuZCBwcm9jZXNzIHRoZSBncmFuZGNoaWxkcmVuIGlmIGFueS4KLSAgICAgICAgCSogTnVsbCBhcmd1bWVudCB2YWx1ZSBwYXNzZWQgaW50byB0aGUgZm9sbG93aW5nIG1ldGhvZCB3b3VsZCAKLSAgICAgICAgCSogc3VnZ2VzdCBhIFdTREwgZGVmaW5pdGlvbiBpbmNvbnNpc3RlbmN5Ci0gICAgICAgIAkqIHdoaWNoIHdpbGwgYmUgcGlja2VkIHVwIGR1cmluZyBEZXNjcmlwdGlvbiBBcnRpZmFjdCBUQSB0ZXN0aW5nLgotICAgICAgICAJKi8KLSAgICAgICAgZGVzY2VuZGVudHModGhpcy5wb3J0VHlwZXNbMF0pOwotCi0gICAgICAgIC8vIEdldCBhbnkgbWVzc2FnZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBmcm9tIGhlYWRlcnMgYW5kIGhlYWRlcmZhdWx0cwotCi0gICAgICAgIC8vIEdldCByZWZlcmVuY2UgdG8gZGVmaW5pdGlvbgotICAgICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBkZWZpbml0aW9uc1swXTsKLQotICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbWVzc2FnZXMgYWxyZWFkeSwgdGhlbiBnZXQgdGhlbSBhcyBhIGNvbGxlY3Rpb24KLSAgICAgICAgSGFzaFNldCBtZXNzYWdlU2V0ID0gbmV3IEhhc2hTZXQoKTsKLSAgICAgICAgaWYgKG1lc3NhZ2VzICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1lc3NhZ2VzLmxlbmd0aDsgaSsrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG1lc3NhZ2VTZXQuYWRkKG1lc3NhZ2VzW2ldKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXQgdGhlIG1lc3NhZ2VzIHRoYXQgYXJlIHJlZmVyZW5jZWQgb25seSBieSBhIGJpbmRpbmcgCi0gICAgICAgIEhhc2hTZXQgYmluZGluZ01lc3NhZ2VzID0gV1NETFV0aWxzLmZpbmRNZXNzYWdlcyhkZWZpbml0aW9uLCBiaW5kaW5nKTsKLQotICAgICAgICAvLyBBZGQgdGhlc2UgbWVzc2FnZXMgdG8gdGhlIGNvbXBsZXRlIG1lc3NhZ2UgbGlzdCAgCi0gICAgICAgIG1lc3NhZ2VTZXQuYWRkQWxsKGJpbmRpbmdNZXNzYWdlcyk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGFycmF5IGZyb20gbWVzc2FnZSBzZXQKLSAgICAgICAgdGhpcy5tZXNzYWdlcyA9Ci0gICAgICAgICAgKE1lc3NhZ2VbXSkgbWVzc2FnZVNldC50b0FycmF5KHRoaXMubWVzc2FnZXMgPSBuZXcgTWVzc2FnZVswXSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIERlc2NlbmRhbnQgbWV0aG9kIGZvciBjb21wbGV0aW5nIGNhbmRpZGF0ZSBzZXJ2aWNlIGNvbnRleHQgY3JlYXRpb24uCi0gICAqIEBwYXJhbSBwb3J0VHlwZSAgYSBQb3J0VHlwZSBvYmplY3QKLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcG9ydFR5cGUgaXMgbnVsbC4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGRlc2NlbmRlbnRzKFBvcnRUeXBlIHBvcnRUeXBlKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBPcGVyYXRpb25zIGZyb20gUG9ydFR5cGUgMS0yLW4KLQotICAgIGlmIChwb3J0VHlwZSA9PSBudWxsKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oIkludGVybmFsIGVycm9yOiBleHBlY3RlZCBhIFBvcnRUeXBlIHZhbHVlIik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0aGlzLm9wZXJhdGlvbnMgPQotICAgICAgICAoT3BlcmF0aW9uW10pIChwb3J0VHlwZQotICAgICAgICAgIC5nZXRPcGVyYXRpb25zKCkKLSAgICAgICAgICAudG9BcnJheSh0aGlzLm9wZXJhdGlvbnMgPSBuZXcgT3BlcmF0aW9uWzBdKSk7Ci0gICAgICBpZiAodGhpcy5vcGVyYXRpb25zLmxlbmd0aCA+IDApCi0gICAgICB7Ci0gICAgICAgIGRlc2NlbmRlbnRzKHRoaXMub3BlcmF0aW9ucyk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAgICogRGVzY2VuZGFudCBtZXRob2QgZm9yIGNvbXBsZXRpbmcgY2FuZGlkYXRlIHNlcnZpY2UgY29udGV4dCBjcmVhdGlvbi4KLSAgICAgKiBAcGFyYW0gb3BlcmF0aW9uICBhIE9wZXJhdGlvbiBvYmplY3QKLSAgICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBvcGVyYXRpb24gaXMgbnVsbC4KLSAgICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgZGVzY2VuZGVudHMoT3BlcmF0aW9uIG9wZXJhdGlvbikgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gTWVzc2FnZXMgZnJvbSBPcGVyYXRpb24KLQotICAgIGlmIChvcGVyYXRpb24gPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJJbnRlcm5hbCBlcnJvcjogZXhwZWN0ZWQgYW4gT3BlcmF0aW9uIHZhbHVlIik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBkZXNjZW5kZW50cyhuZXcgT3BlcmF0aW9uW10geyBvcGVyYXRpb24gfSk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIERlc2NlbmRhbnQgbWV0aG9kIGZvciBjb21wbGV0aW5nIGNhbmRpZGF0ZSBzZXJ2aWNlIGNvbnRleHQgY3JlYXRpb24uCi0gICAqIEBwYXJhbSBvcGVyYXRpb25zICBhbiBhcnJheSBvZiBvcGVyYXRpb25zLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBvcGVyYXRpb25zIGlzIG51bGwuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBkZXNjZW5kZW50cyhPcGVyYXRpb25bXSBvcGVyYXRpb25zKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBNZXNzYWdlcyBmcm9tIE9wZXJhdGlvbnMgMS0yLW4KLQotICAgIGlmIChvcGVyYXRpb25zID09IG51bGwpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigiSW50ZXJuYWwgZXJyb3I6IGV4cGVjdGVkIGFuIE9wZXJhdGlvbltdIHZhbHVlIik7Ci0gICAgfQotCi0gICAgSGFzaFNldCBzZXQgPSBuZXcgSGFzaFNldCgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb3BlcmF0aW9ucy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAob3BlcmF0aW9uc1tpXS5nZXRJbnB1dCgpICE9IG51bGwpCi0gICAgICAgIHNldC5hZGQob3BlcmF0aW9uc1tpXS5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKSk7IC8vMS0yLTEKLSAgICAgIGlmIChvcGVyYXRpb25zW2ldLmdldE91dHB1dCgpICE9IG51bGwpCi0gICAgICAgIHNldC5hZGQob3BlcmF0aW9uc1tpXS5nZXRPdXRwdXQoKS5nZXRNZXNzYWdlKCkpOyAvLzEtMi0xCi0KLSAgICAgIC8vIGdldCBtZXNzYWdlcyBhc3NvY2lhdGVkIHdpdGggZmF1bHRzIGZvciB0aGlzIG9wZXJhdGlvbiAKLSAgICAgIC8vIDEtMi1uCi0gICAgICBJdGVyYXRvciBpdCA9IG9wZXJhdGlvbnNbaV0uZ2V0RmF1bHRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHNldC5hZGQoKChGYXVsdCkgaXQubmV4dCgpKS5nZXRNZXNzYWdlKCkpOwotICAgICAgfQotICAgIH0KLSAgICB0aGlzLm1lc3NhZ2VzID0gKE1lc3NhZ2VbXSkgc2V0LnRvQXJyYXkodGhpcy5tZXNzYWdlcyA9IG5ldyBNZXNzYWdlWzBdKTsKLSAgICAvLyBubyBkZXNjZW5kZW50cyBvZiBtZXNzYWdlcyBzbyBzdG9wLgotICB9Ci0KLSAgLyoqCi0gICAqIFByb3ZpZGUgYSByZWN1cnNpdmUgbm9uLXJlcGVhdGluZyBsaXN0IG9mIGltcG9ydHMgZm9yIHRoZSBzcGVjaWZpZWQKLSAgICogV1NETCBkb2N1bWVudCBkZWZpbml0aW9uLgotICAgKi8KLSAgLyogICBwcml2YXRlIEhhc2hTZXQgZ2V0QWxsSW1wb3J0cyhEZWZpbml0aW9uIHJvb3REZWYpIHRocm93cyBXU0lFeGNlcHRpb24gewotICAgICAJCi0gICAgIAlIYXNoU2V0IGltcG9ydFNldCA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgIAkKLSAgICAgCUNvbGxlY3Rpb24gaW1wb3J0TGlzdCA9ICByb290RGVmLmdldEltcG9ydHMoKS52YWx1ZXMoKTsKLSAgICAgCUl0ZXJhdG9yIGkgPSBpbXBvcnRMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgIAkKLSAgICAgCXdoaWxlIChpLmhhc05leHQoKSkgewotICAgICAJCUltcG9ydCBuZXh0SW1wb3J0ID0gKEltcG9ydCkoaS5uZXh0KCkpOwotICAgICAJCWlmIChuZXh0SW1wb3J0ICE9IG51bGwpIHsKLSAgICAgCQkJLy8gaXRzIGEgd3NkbCBkb2N1bWVudAotICAgICAJCQlpbXBvcnRTZXQuYWRkQWxsKGdldEFsbEltcG9ydHMobmV4dEltcG9ydC5nZXREZWZpbml0aW9uKCkpKTsKLSAgICAgCQl9ICAgCQkJCi0gICAgIAl9Ci0gICAgIAkKLSAgICAgCXJldHVybiAoaW1wb3J0U2V0KTsKLSAgICAgfQotICAgKi8KLSAgcHJpdmF0ZSBIYXNoU2V0IGdldEFsbEltcG9ydHMoRGVmaW5pdGlvbiByb290RGVmKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIEhhc2hTZXQgaW1wb3J0U2V0ID0gbmV3IEhhc2hTZXQoKTsKLSAgICBpbXBvcnRTZXQgPSAgZ2V0QWxsSW1wb3J0cyhuZXcgQXJyYXlMaXN0KCksIHJvb3REZWYpOwotICAgIHJldHVybiAoaW1wb3J0U2V0KTsKLSAgfQotICAKLSAgcHJpdmF0ZSBIYXNoU2V0IGdldEFsbEltcG9ydHMoTGlzdCBhbHJlYWR5UHJvY2Vzc2VkRGVmaW5pdGlvbnMsIERlZmluaXRpb24gcm9vdERlZikgCi0gIHsKLQlIYXNoU2V0IGltcG9ydFNldCA9IG5ldyBIYXNoU2V0KCk7Ci0JaWYgKChyb290RGVmICE9IG51bGwpICYmICghYWxyZWFkeVByb2Nlc3NlZERlZmluaXRpb25zLmNvbnRhaW5zKHJvb3REZWYpKSkKLQl7Ci0gICAgICBhbHJlYWR5UHJvY2Vzc2VkRGVmaW5pdGlvbnMuYWRkKHJvb3REZWYpOwkKLQkgIE1hcCBpbXBvcnRNYXAgPSByb290RGVmLmdldEltcG9ydHMoKTsKLSAgICAgIEl0ZXJhdG9yIGkgPSBpbXBvcnRNYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKLQotICAgICAgd2hpbGUgKGkuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBMaXN0IG5leHRJbXBvcnRMaXN0ID0gKExpc3QpIChpLm5leHQoKSk7Ci0gICAgICAgIEl0ZXJhdG9yIGxpc3RJdCA9IG5leHRJbXBvcnRMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgICAgIHdoaWxlIChsaXN0SXQuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgSW1wb3J0IG5leHRJbXBvcnQgPSAoSW1wb3J0KSBsaXN0SXQubmV4dCgpOwotICAgICAgICAgIGlmIChuZXh0SW1wb3J0ICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgaW1wb3J0U2V0LmFkZChuZXh0SW1wb3J0KTsKLSAgICAgICAgICAgIERlZmluaXRpb24gZGVmID0gbmV4dEltcG9ydC5nZXREZWZpbml0aW9uKCk7Ci0gICAgICAgCSAgICBIYXNoU2V0IG5lc3RlZEltcG9ydHMgPSBnZXRBbGxJbXBvcnRzKGFscmVhZHlQcm9jZXNzZWREZWZpbml0aW9ucywgZGVmKTsKLSAgICAgICAgICAgIGZvciAoSXRlcmF0b3IgaiA9IG5lc3RlZEltcG9ydHMuaXRlcmF0b3IoKTsgai5oYXNOZXh0KCk7KQotICAgICAgICAgICAgICBpbXBvcnRTZXQuYWRkKGoubmV4dCgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGltcG9ydFNldDsKLSAgfQotCi0gIC8qKgotICAgKiBnZXQgYWxsIHNlcnZpY2UgbG9jYXRpb24gZW5kcG9pbnQgdmFsdWVzCi0gICAqIHJlbGV2YW50IHRvIHRoZSBzZXJ2aWNlIHVuZGVyIHRlc3QuCi0gICAqIAotICAgKiBJZiB0aGUgc2VydmljZSBsb2NhdGlvbiBpcyBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZyB3ZSB1c2UKLSAgICoganVzdCB0aGF0LgotICAgKiBPdGhlcndpc2UsIGlmIHRoZSBwb3J0IGlzIHNwZWNpZmllZCwgd2UgZ2V0IGFsbCBlbmRwb2ludHMKLSAgICogYXNzb2NpYXRlZCB3aXRoIHRoYXQgcG9ydC4KLSAgICogSWYgd2UgaGF2ZSBuZWl0aGVyIHRoZSBzZXJ2aWNlIGxvY2F0aW9uIHZhbHVlIG9yIHRoZSBwb3J0LAotICAgKiB0aGVuIGFsbCBlbmRwb2ludHMgaW4gdGhlIGRlZmluaXRpb24gYXJlIHVzZWQuCi0gICAqLwotICBwcml2YXRlIFVSSVtdIGRlcml2ZUVuZHBvaW50cygKLSAgLy9BbmFseXplckNvbmZpZyBhbmFseXplckNvbmZpZywgCi0gIFNlcnZpY2VSZWZlcmVuY2Ugc2VydmljZVJlZmVyZW5jZSwgUG9ydFtdIHBvcnRzLCBEZWZpbml0aW9uW10gZGVmaW5pdGlvbnMpCi0gIHsKLQotICAgIFVSSVtdIGVuZHAgPSBudWxsOwotICAgIC8vUG9ydCBwb3J0ID0gbnVsbDsJCi0gICAgdHJ5Ci0gICAgewotICAgICAgU3RyaW5nIHNlcnZpY2VMb2NhdGlvbiA9IG51bGw7Ci0gICAgICAvLyB0cnkgc2VydmljZSBsb2NhdGlvbi4uLgotICAgICAgLy9pZiAoKHNlcnZpY2VMb2NhdGlvbiA9IGFuYWx5emVyQ29uZmlnLmdldFNlcnZpY2VMb2NhdGlvbigpKSAhPSBudWxsKSB7ICAgICAgCi0gICAgICBpZiAoKHNlcnZpY2VMb2NhdGlvbiA9IHNlcnZpY2VSZWZlcmVuY2UuZ2V0U2VydmljZUxvY2F0aW9uKCkpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGVuZHAgPSBuZXcgVVJJW10geyBuZXcgVVJJKHNlcnZpY2VMb2NhdGlvbil9OwotICAgICAgfQotICAgICAgLy9lbHNlIGlmIChhbmFseXplckNvbmZpZy5nZXRXU0RMRWxlbWVudCgpLmlzUG9ydCgpKSB7Ci0gICAgICBlbHNlIGlmIChzZXJ2aWNlUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkuaXNQb3J0KCkpCi0gICAgICB7Ci0gICAgICAgIGlmIChwb3J0cy5sZW5ndGggIT0gMSkKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oIkludGVybmFsIGVycm9yIC0gZXhwZWN0ZWQgMS1lbGVtZW50IFBvcnQgYXJyYXkiKTsKLSAgICAgICAgfQotICAgICAgICAvL2Vsc2UgewotICAgICAgICAvLwlwb3J0ID0gcG9ydHNbMF07IC8vIGlmIFBvcnQgd2FzIGdpdmVuIGluIGNvbmZpZywgdGhlcmUgaXMganVzdCBvbmUKLSAgICAgICAgLy99Ci0gICAgICAgIC8vUU5hbWUgc29hcEFkZHJlc3MgPSBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMX1NPQVAsICJhZGRyZXNzIik7Ci0gICAgICAgIEl0ZXJhdG9yIGkgPSBwb3J0c1swXS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaS5oYXNOZXh0KCkgJiYgc2VydmljZUxvY2F0aW9uID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBpLm5leHQoKTsKLSAgICAgICAgICBpZiAoZXh0RWxlbSBpbnN0YW5jZW9mIFNPQVBBZGRyZXNzKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vaWYgKGV4dEVsLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKHNvYXBBZGRyZXNzKSB7Ci0gICAgICAgICAgICAvLyB0aGlzIGVsZW1lbnQgaXMgb3VyIFNPQVBBZGRyZXNzIC0gZ2V0IHRoZSBsb2NhdGlvbgotICAgICAgICAgICAgc2VydmljZUxvY2F0aW9uID0gKChTT0FQQWRkcmVzcykgZXh0RWxlbSkuZ2V0TG9jYXRpb25VUkkoKTsKLSAgICAgICAgICAgIGVuZHAgPSBuZXcgVVJJW10geyBuZXcgVVJJKHNlcnZpY2VMb2NhdGlvbil9OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgeyAvLyBubyBwb3J0IGluZm8gZnJvbSBjb25maWcsIHNvIHN1cHBseSBhbGwgaW4gZG9jdW1lbnQKLSAgICAgICAgLy8gUU5hbWUgc29hcEFkZHJlc3MgPSBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMX1NPQVAsICJhZGRyZXNzIik7Ci0gICAgICAgIEhhc2hTZXQgZW5kcG9pbnRTZXQgPSBuZXcgSGFzaFNldCgpOwotICAgICAgICBJdGVyYXRvciBpID0gZGVmaW5pdGlvbnNbMF0uZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKGkuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWxlbSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaS5uZXh0KCk7Ci0gICAgICAgICAgaWYgKGV4dEVsZW0gaW5zdGFuY2VvZiBTT0FQQWRkcmVzcykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvL2lmIChleHRFbC5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhzb2FwQWRkcmVzcykgewotICAgICAgICAgICAgLy8gdGhpcyBlbGVtZW50IGlzIG91ciBTT0FQQWRkcmVzcyAtIGdldCB0aGUgbG9jYXRpb24KLSAgICAgICAgICAgIGVuZHBvaW50U2V0LmFkZCgoKFNPQVBBZGRyZXNzKSBleHRFbGVtKS5nZXRMb2NhdGlvblVSSSgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gQ29udmVydCB0aGUgZGVyaXZlZCBMaXN0IHRvIGEgVVJJIGFycmF5Ci0gICAgICAgIGVuZHAgPSAoVVJJW10pIGVuZHBvaW50U2V0LnRvQXJyYXkoZW5kcCA9IG5ldyBVUklbMF0pOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgICByZXR1cm4gZW5kcDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBiaW5kaW5nLgotICAgKiBAcmV0dXJuIEJpbmRpbmcKLSAgICovCi0gIHB1YmxpYyBCaW5kaW5nW10gZ2V0QmluZGluZ3MoKQotICB7Ci0gICAgcmV0dXJuIGJpbmRpbmdzOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGVuZFBvaW50cy4KLSAgICogQHJldHVybiBVUklbXQotICAgKi8KLSAgcHVibGljIFVSSVtdIGdldEVuZFBvaW50cygpCi0gIHsKLSAgICAvLyBnZXQgbGlzdCBvZiBtYXRjaGluZyBlbmRwb2ludChzKSBhc3NvY2lhdGVkIHdpdGggc2VydmljZS4KLSAgICByZXR1cm4gZW5kUG9pbnRzOwotICB9Ci0KLSAgLyoqCi0gICogUmV0dXJucyB0aGUgZW5kUG9pbnRzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgaG9zdCBhbmQgcG9ydC4KLSAgKiBAcGFyYW0gaG9zdEFuZFBvcnQgIGhvc3QgYW5kIHBvcnQgbG9jYXRpb24uCi0gICogQHJldHVybiBVUklbXSBpZiBtYXRjaGVkLCBudWxsIG90aGVyd2lzZS4KLSAgKi8KLSAgcHVibGljIFVSSVtdIGdldEVuZFBvaW50cyhTdHJpbmcgaG9zdEFuZFBvcnQpCi0gIHsKLSAgICAvLyBnZXQgbGlzdCBvZiBtYXRjaGluZyBlbmRwb2ludHMgYXNzb2NpYXRlZCB3aXRoIHNlcnZpY2UsCi0gICAgLy8gaGF2aW5nIHRoZSBzcGVjaWZpZWQgaG9zdCBhbmQgcG9ydCBjb25maWd1cmF0aW9uCi0gICAgU3RyaW5nIHBvcnQ7Ci0KLSAgICBWZWN0b3IgbWF0Y2hlZEVuZHBvaW50cyA9IG5ldyBWZWN0b3IoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGVuZFBvaW50cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICAvLyBQQjogSWYgdGhlIGVuZHBvaW50IGRvZXMgbm90IGNvbnRhaW4gYSBwb3J0IG51bWJlciwgdGhlbiBkZWZhdWx0IGl0IHRvICI4MCIKLSAgICAgIHBvcnQgPQotICAgICAgICAoZW5kUG9pbnRzW2ldLmdldFBvcnQoKSA9PSAtMSkKLSAgICAgICAgICA/ICI4MCIKLSAgICAgICAgICA6IFN0cmluZy52YWx1ZU9mKGVuZFBvaW50c1tpXS5nZXRQb3J0KCkpOwotICAgICAgaWYgKGhvc3RBbmRQb3J0LmVxdWFscyhlbmRQb2ludHNbaV0uZ2V0SG9zdCgpICsgIjoiICsgcG9ydCkpCi0gICAgICB7Ci0gICAgICAgIG1hdGNoZWRFbmRwb2ludHMuYWRkKGVuZFBvaW50c1tpXSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiAoVVJJW10pIG1hdGNoZWRFbmRwb2ludHMudG9BcnJheShuZXcgVVJJWzBdKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBvcGVyYXRpb24uCi0gICAqIEByZXR1cm4gT3BlcmF0aW9uCi0gICAqLwotICBwdWJsaWMgT3BlcmF0aW9uW10gZ2V0T3BlcmF0aW9ucygpCi0gIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uczsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBwb3J0VHlwZS4KLSAgICogQHJldHVybiBQb3J0VHlwZQotICAgKi8KLSAgcHVibGljIFBvcnRUeXBlW10gZ2V0UG9ydFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHBvcnRUeXBlczsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGhvc3RBbmRQb3J0IG1hdGNoZXMgYXQgbGVhc3Qgb25lIGNvbnRleHQgZW5kcG9pbnQuCi0gICAqIEBwYXJhbSBob3N0QW5kUG9ydFN0cmluZyBhIGhvc3QgYW5kIHBvcnQgbG9jYXRpb24uCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgaG9zdEFuZFBvcnQgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgY29udGV4dCBlbmRwb2ludC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgZ2l2ZW4gaG9zdGFuZFBvcnQgU3RyaW5nIGRvZXMgbm90IGNvbnZlcnQgdG8gVVJJLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaGFzSG9zdEFuZFBvcnQoU3RyaW5nIGhvc3RBbmRQb3J0U3RyaW5nKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBVUkkgaG9zdEFuZFBvcnQ7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgaG9zdEFuZFBvcnQgPSBuZXcgVVJJKGhvc3RBbmRQb3J0U3RyaW5nKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICJDb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gVVJJOiAiICsgaG9zdEFuZFBvcnRTdHJpbmcpOwotICAgIH0KLSAgICBTdHJpbmcgaG9zdCA9IGhvc3RBbmRQb3J0LmdldEhvc3QoKTsKLSAgICBpbnQgcG9ydCA9IGhvc3RBbmRQb3J0LmdldFBvcnQoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRoaXMuZW5kUG9pbnRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmICh0aGlzLmVuZFBvaW50c1tpXS5nZXRIb3N0KCkuZXF1YWxzKGhvc3QpCi0gICAgICAgICYmIHRoaXMuZW5kUG9pbnRzW2ldLmdldFBvcnQoKSA9PSBwb3J0KQotICAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOyAvLyBmb3Igbm93Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgZGVmaW5pdGlvbnMuCi0gICAqIEByZXR1cm4gRGVmaW5pdGlvbltdCi0gICAqLwotICBwdWJsaWMgRGVmaW5pdGlvbltdIGdldERlZmluaXRpb25zKCkKLSAgewotICAgIHJldHVybiBkZWZpbml0aW9uczsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBpbXBvcnRzLgotICAgKiBAcmV0dXJuIEltcG9ydFtdCi0gICAqLwotICBwdWJsaWMgSW1wb3J0W10gZ2V0SW1wb3J0cygpCi0gIHsKLSAgICByZXR1cm4gaW1wb3J0czsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBtZXNzYWdlcy4KLSAgICogQHJldHVybiBNZXNzYWdlW10KLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlW10gZ2V0TWVzc2FnZXMoKQotICB7Ci0gICAgcmV0dXJuIG1lc3NhZ2VzOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHBvcnRzLgotICAgKiBAcmV0dXJuIFBvcnRbXQotICAgKi8KLSAgcHVibGljIFBvcnRbXSBnZXRQb3J0cygpCi0gIHsKLSAgICByZXR1cm4gcG9ydHM7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcG9ydFR5cGVzLgotICAgKiBAcmV0dXJuIFBvcnRUeXBlW10KLSAgICovCi0gIHB1YmxpYyBQb3J0VHlwZVtdIGdldFBvcnRUeXBlcygpCi0gIHsKLSAgICByZXR1cm4gcG9ydFR5cGVzOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHR5cGVzLgotICAgKiBAcmV0dXJuIFR5cGVzW10KLSAgICovCi0gIHB1YmxpYyBUeXBlc1tdIGdldFR5cGVzKCkKLSAgewotICAgIHJldHVybiB0eXBlczsKLSAgfQotICAvKioKLSAgICogUmV0dXJucyB0aGUgd3NkbERvY3VtZW50LgotICAgKiBAcmV0dXJuIFdTRExEb2N1bWVudAotICAgKi8KLSAgcHVibGljIFdTRExEb2N1bWVudCBnZXRXc2RsRG9jdW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIHdzZGxEb2N1bWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIGRlZmluaXRpb24gZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSB0eXBlcyBlbGVtZW50LgotICAgKiBAcGFyYW0gdHlwZXMgYSBUeXBlcyBvYmplY3QuCi0gICAqIEByZXR1cm4gdGhlIGRlZmluaXRpb24gZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSB0eXBlcyBlbGVtZW50LgotICAgKi8KLSAgcHVibGljIERlZmluaXRpb24gZ2V0RGVmaW5pdGlvbihUeXBlcyB0eXBlcykKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IG51bGw7Ci0gICAgVHlwZXMgY2hlY2tUeXBlczsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVmaW5pdGlvbnMubGVuZ3RoICYmIGRlZmluaXRpb24gPT0gbnVsbDsgaSsrKQotICAgIHsKLSAgICAgIGlmICgoKGNoZWNrVHlwZXMgPSBkZWZpbml0aW9uc1tpXS5nZXRUeXBlcygpKSAhPSBudWxsKQotICAgICAgICAmJiAoY2hlY2tUeXBlcy5lcXVhbHModHlwZXMpKSkKLSAgICAgIHsKLSAgICAgICAgZGVmaW5pdGlvbiA9IGRlZmluaXRpb25zW2ldOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBkZWZpbml0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybiB0aGUgZGVmaW5pdGlvbiBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIGJpbmRpbmcgZWxlbWVudC4KLSAgICogQHBhcmFtIGJpbmRpbmcgYSBCaW5kaW5nIG9iamVjdC4KLSAgICogQHJldHVybiB0aGUgZGVmaW5pdGlvbiBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIGJpbmRpbmcgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBEZWZpbml0aW9uIGdldERlZmluaXRpb24oQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVmaW5pdGlvbnMubGVuZ3RoICYmIGRlZmluaXRpb24gPT0gbnVsbDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChkZWZpbml0aW9uc1tpXS5nZXRCaW5kaW5nKGJpbmRpbmcuZ2V0UU5hbWUoKSkgIT0gbnVsbCkKLSAgICAgICAgZGVmaW5pdGlvbiA9IGRlZmluaXRpb25zW2ldOwotICAgIH0KLQotICAgIHJldHVybiBkZWZpbml0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybiB0aGUgZGVmaW5pdGlvbiBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIHBvcnRUeXBlIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBwb3J0VHlwZSBhIFBvcnRUeXBlIG9iamVjdC4KLSAgICogQHJldHVybiB0aGUgZGVmaW5pdGlvbiBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIHBvcnRUeXBlIGVsZW1lbnQuCi0gICAqLwotICBwdWJsaWMgRGVmaW5pdGlvbiBnZXREZWZpbml0aW9uKFBvcnRUeXBlIHBvcnRUeXBlKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVmaW5pdGlvbnMubGVuZ3RoICYmIGRlZmluaXRpb24gPT0gbnVsbDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChkZWZpbml0aW9uc1tpXS5nZXRQb3J0VHlwZShwb3J0VHlwZS5nZXRRTmFtZSgpKSAhPSBudWxsKQotICAgICAgICBkZWZpbml0aW9uID0gZGVmaW5pdGlvbnNbaV07Ci0gICAgfQotCi0gICAgcmV0dXJuIGRlZmluaXRpb247Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJuIHRoZSBkZWZpbml0aW9uIGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGUgbWVzc2FnZS4KLSAgICogQHBhcmFtIG1lc3NhZ2UgYSBNZXNzYWdlIG9iamVjdC4KLSAgICogQHJldHVybiB0aGUgZGVmaW5pdGlvbiBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgRGVmaW5pdGlvbiBnZXREZWZpbml0aW9uKE1lc3NhZ2UgbWVzc2FnZSkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IG51bGw7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlZmluaXRpb25zLmxlbmd0aCAmJiBkZWZpbml0aW9uID09IG51bGw7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoZGVmaW5pdGlvbnNbaV0uZ2V0TWVzc2FnZShtZXNzYWdlLmdldFFOYW1lKCkpICE9IG51bGwpCi0gICAgICAgIGRlZmluaXRpb24gPSBkZWZpbml0aW9uc1tpXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGVmaW5pdGlvbjsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9FbnZpcm9ubWVudEluZm8uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0Vudmlyb25tZW50SW5mby5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjNlYjRkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL0Vudmlyb25tZW50SW5mby5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuWE1MSW5mbzsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIG1haW50YWlucyB0aGUgRW52aXJvbm1lbnQgaW5mb3JtYXRpb24uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBFbnZpcm9ubWVudEluZm8gaW1wbGVtZW50cyBYTUxJbmZvCi17Ci0gIC8qKgotICAgKiBMb2cgdGltZXN0YW1wLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBsb2dUaW1lc3RhbXAgPSBudWxsOwotCi0gIC8qKgotICAgKiBNb25pdG9yIGNvbmZpZyBjb21tZW50LgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBtb25pdG9yQ29uZmlnQ29tbWVudCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBvYmplY3QuCi0gICAqIEBwYXJhbSBsb2dUaW1lc3RhbXAgdGhlIGxvZyB0aW1lc3RhbXAuCi0gICAqIEBwYXJhbSBtb25pdG9yQ29uZmlnQ29tbWVudCB0aGUgTW9uaXRvciBjb25maWcgY29tbWVudC4KLSAgICovCi0gIHB1YmxpYyBFbnZpcm9ubWVudEluZm8oU3RyaW5nIGxvZ1RpbWVzdGFtcCwgU3RyaW5nIG1vbml0b3JDb25maWdDb21tZW50KQotICB7Ci0gICAgdGhpcy5sb2dUaW1lc3RhbXAgPSBsb2dUaW1lc3RhbXA7Ci0gICAgdGhpcy5tb25pdG9yQ29uZmlnQ29tbWVudCA9IG1vbml0b3JDb25maWdDb21tZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuWE1MSW5mbyN0b1hNTFN0cmluZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLQotICAgIFN0cmluZyBuc05hbWUgPSBuYW1lc3BhY2VOYW1lOwotICAgIGlmICghbnNOYW1lLmVxdWFscygiIikpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gU3RhcnQgZWxlbWVudAotICAgIHB3LnByaW50KCIgICAgICA8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX0xPRyArICIgIik7Ci0gICAgcHcucHJpbnRsbigKLSAgICAgIFdTSUNvbnN0YW50cy5BVFRSX1RJTUVTVEFNUCArICI9XCIiICsgdGhpcy5sb2dUaW1lc3RhbXAgKyAiXCIvPiIpOwotCi0gICAgcHcucHJpbnQoCi0gICAgICAiICAgICAgICA8IgotICAgICAgICArIFdTSUNvbnN0YW50cy5OU19OQU1FX1dTSV9MT0cKLSAgICAgICAgKyBXU0lDb25zdGFudHMuRUxFTV9DT01NRU5UCi0gICAgICAgICsgIj4iKTsKLSAgICBwdy5wcmludCh0aGlzLm1vbml0b3JDb25maWdDb21tZW50KTsKLSAgICBwdy5wcmludGxuKAotICAgICAgIiAgICAgICAgPC8iCi0gICAgICAgICsgV1NJQ29uc3RhbnRzLk5TX05BTUVfV1NJX0xPRwotICAgICAgICArIFdTSUNvbnN0YW50cy5FTEVNX0NPTU1FTlQKLSAgICAgICAgKyAiPiIpOwotCi0gICAgLy8gRW5kIGVsZW1lbnQKLSAgICBwdy5wcmludGxuKCIgICAgPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTE9HICsgIj4iKTsKLQotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL1NlcnZpY2VSZWZlcmVuY2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL1NlcnZpY2VSZWZlcmVuY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzczZTQ4NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9TZXJ2aWNlUmVmZXJlbmNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5BbmFseXplckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLldTRExFbGVtZW50OwotCi0vKioKLSAqIFRoaXMgY2xhc3MgY29udGFpbnMgYWxsIG9mIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIG5lZWRlZCB0byBwcm9jZXNzIGRlc2NyaXB0aW9uIHRlc3QgYXNzZXJ0aW9ucy4gIFRoZSBpbmZyb21hdGlvbgotICogaW4gdGhpcyBvYmplY3Qgd2lsbCBiZSBkZXJpdmVkIGZyb20gYW5hbHl6ZXIgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiwgVURESSBlbnRyaWVzLCBvciB0aGUgV1NETCBwb3J0IGVsZW1lbnQuIAotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgU2VydmljZVJlZmVyZW5jZQotewotICBwcm90ZWN0ZWQgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQ7Ci0gIHByb3RlY3RlZCBTdHJpbmcgd3NkbExvY2F0aW9uOwotICBwcm90ZWN0ZWQgU3RyaW5nIHNlcnZpY2VMb2NhdGlvbjsKLQotICAvKioKLSAgICogQ3JlYXRlIHNlcnZpY2UgcmVmZXJlbmNlIHdpdGhvdXQgcmVmZXJlbmNlcy4gIEFsbCBvZiB0aGVtIHdpbGwgYmUgc2V0IGxhdGVyIGFzIHRlc3QgYXNzZXJ0aW9ucyBhcmUgCi0gICAqIGJlaW5nIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBTZXJ2aWNlUmVmZXJlbmNlKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBzZXJ2aWNlIHJlZmVyZW5jZSBmcm9tIGVudHJpZXMgc3BlY2lmaWVkIGluIHRoZSBhbmFseXplciBjb25maWcgZmlsZS4gIFRoaXMgaW5mb3JtYXRpb24gbWF5IGluY2x1ZGUKLSAgICogdGhlIGluZm9ybWF0aW9uIGV4dHJhY3RlZCBmcm9tIHRoZSB3c2RsRWxlbWVudCwgd3NkbFVSSSBhbmQgc2VydmljZUxvY2F0aW9uIGVsZW1lbnRzLgotICAgKiBAcGFyYW0gYW5hbHl6ZXJDb25maWcgYW4gQW5hbHl6ZXJDb25maWcgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFNlcnZpY2VSZWZlcmVuY2UoQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcpCi0gIHsKLSAgICB0aGlzLndzZGxFbGVtZW50ID0gYW5hbHl6ZXJDb25maWcuZ2V0V1NETEVsZW1lbnQoKTsKLSAgICB0aGlzLndzZGxMb2NhdGlvbiA9IGFuYWx5emVyQ29uZmlnLmdldFdTRExMb2NhdGlvbigpOwotICAgIHRoaXMuc2VydmljZUxvY2F0aW9uID0gYW5hbHl6ZXJDb25maWcuZ2V0U2VydmljZUxvY2F0aW9uKCk7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIFdTREwgZWxlbWVudCB3aGVyZSBhbmFseXNpcyBzaG91bGQgYmVnaW4uCi0gICAqIEByZXR1cm4gaGUgV1NETCBlbGVtZW50IHdoZXJlIGFuYWx5c2lzIHNob3VsZCBiZWdpbi4KLSAgICogQHNlZSAjc2V0V1NETEVsZW1lbnQKLSAgICovCi0gIHB1YmxpYyBXU0RMRWxlbWVudCBnZXRXU0RMRWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy53c2RsRWxlbWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgdGhlIFdTREwgZWxlbWVudCB3aGVyZSBhbmFseXNpcyBzaG91bGQgYmVnaW4uCi0gICAqIEBwYXJhbSB3c2RsRWxlbWVudCB0aGUgV1NETCBlbGVtZW50IHdoZXJlIGFuYWx5c2lzIHNob3VsZCBiZWdpbi4KLSAgICogQHNlZSAjZ2V0V1NETEVsZW1lbnQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdTRExFbGVtZW50KFdTRExFbGVtZW50IHdzZGxFbGVtZW50KQotICB7Ci0gICAgdGhpcy53c2RsRWxlbWVudCA9IHdzZGxFbGVtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBXU0RMIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIFdTREwgZG9jdW1lbnQgbG9jYXRpb24uCi0gICAqIEBzZWUgI3NldFdTRExMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRXU0RMTG9jYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIHRoaXMud3NkbExvY2F0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBXU0RMIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKiBAcGFyYW0gd3NkbExvY2F0aW9uIFdTREwgZG9jdW1lbnQgbG9jYXRpb24uCi0gICAqIEBzZWUgI2dldFdTRExMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V1NETExvY2F0aW9uKFN0cmluZyB3c2RsTG9jYXRpb24pCi0gIHsKLSAgICB0aGlzLndzZGxMb2NhdGlvbiA9IHdzZGxMb2NhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgV2ViIHNlcnZpY2UgbG9jYXRpb24uCi0gICAqIEByZXR1cm4gV2ViIHNlcnZpY2UgbG9jYXRpb24uCi0gICAqIEBzZWUgI3NldFNlcnZpY2VMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlTG9jYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuc2VydmljZUxvY2F0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBXZWIgc2VydmljZSBsb2NhdGlvbi4KLSAgICogQHBhcmFtIHNlcnZpY2VMb2NhdGlvbiBlYiBzZXJ2aWNlIGxvY2F0aW9uLgotICAgKiBAc2VlICNnZXRTZXJ2aWNlTG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VMb2NhdGlvbihTdHJpbmcgc2VydmljZUxvY2F0aW9uKQotICB7Ci0gICAgdGhpcy5zZXJ2aWNlTG9jYXRpb24gPSBzZXJ2aWNlTG9jYXRpb247Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL2NvbmZpZy9BbmFseXplckNvbmZpZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL0FuYWx5emVyQ29uZmlnLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0YTIxOTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL0FuYWx5emVyQ29uZmlnLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZzsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmNvbW1vbi5BZGRTdHlsZVNoZWV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5XU0lEb2N1bWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5NZXNzYWdlTGlzdDsKLQotLyoqCi0gKiBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBhbmFsenllciBjb25maWd1cmF0aW9uIGZpbGUuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBBbmFseXplckNvbmZpZyBleHRlbmRzIFdTSURvY3VtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9DT05GSUc7Ci0KLSAgLyoqCi0gICAqIFFOYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX0FOQUxZWkVSX0NPTkZJRywgRUxFTV9OQU1FKTsKLQotICAvKioKLSAgICogQ29ycmVsYXRpb24gdHlwZXMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT1JSRUxBVElPTl9UWVBFX09QRVJBVElPTiA9ICJvcGVyYXRpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT1JSRUxBVElPTl9UWVBFX05BTUVTUEFDRSA9ICJuYW1lc3BhY2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT1JSRUxBVElPTl9UWVBFX0VORFBPSU5UID0gImVuZHBvaW50IjsKLQotICAvKioKLSAgICogSW5pdGlhbGl6ZSBhbmFseXplciBjb25maWcuCi0gICAqIEBwYXJhbSBtZXNzYWdlTGlzdCBhIE1lc3NhZ2VMaXN0IG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGluaXQoTWVzc2FnZUxpc3QgbWVzc2FnZUxpc3QpOwotCi0gIC8qKgotICAgKiBHZXQgb3B0aW9uYWwgZGVzY3JpcHRpb24uCi0gICAqIEByZXR1cm4gb3B0aW9uYWwgZGVzY3JpcHRpb24uCi0gICAqIEBzZWUgI3NldERlc2NyaXB0aW9uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBvcHRpb25hbCBkZXNjcmlwdGlvbi4KLSAgICogQHBhcmFtIGRlc2NyaXB0aW9uICBhbiBvcHRpb25hbCBkZXNjcmlwdGlvbi4KLSAgICogQHNlZSAjZ2V0RGVzY3JpcHRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERlc2NyaXB0aW9uKFN0cmluZyBkZXNjcmlwdGlvbik7Ci0KLSAgLyoqCi0gICAqIEdldCB2ZXJib3NlIG9wdGlvbi4KLSAgICogQHJldHVybiB0cnVlIGlmIHZlcmJvc2UuCi0gICAqIEBzZWUgI3NldFZlcmJvc2VPcHRpb24KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFZlcmJvc2VPcHRpb24oKTsKLQotICAvKioKLSAgICogU2V0IHZlcmJvc2Ugb3B0aW9uLgotICAgKiBAcGFyYW0gdmVyYm9zZSB2ZXJib3NlIG9wdGlvbi4KLSAgICogQHNlZSAjZ2V0VmVyYm9zZU9wdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VmVyYm9zZU9wdGlvbihib29sZWFuIHZlcmJvc2UpOwotCi0gIC8qKgotICAgKiBHZXQgYXNzZXJ0aW9uIHJlc3VsdHMgb3B0aW9uLgotICAgKiBAcmV0dXJuIGFzc2VydGlvbiByZXN1bHRzIG9wdGlvbi4KLSAgICogQHNlZSAjc2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbgotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdHNPcHRpb24gZ2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXQgYXNzZXJ0aW9uIHJlc3VsdHMgb3B0aW9uLgotICAgKiBAcGFyYW0gYXNzZXJ0aW9uUmVzdWx0c09wdGlvbiAgYXNzZXJ0aW9uIHJlc3VsdHMgb3B0aW9uLgotICAgKiBAc2VlICNnZXRBc3NlcnRpb25SZXN1bHRzT3B0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBc3NlcnRpb25SZXN1bHRzT3B0aW9uKEFzc2VydGlvblJlc3VsdHNPcHRpb24gYXNzZXJ0aW9uUmVzdWx0c09wdGlvbik7Ci0KLSAgLyoqCi0gICAqIEdldCByZXBsYWNlIHJlcG9ydCBmaWxlIG9wdGlvbi4KLSAgICogQHJldHVybiByZXBsYWNlIHJlcG9ydCBmaWxlIG9wdGlvbi4KLSAgICogQHNlZSAjc2V0UmVwbGFjZVJlcG9ydAotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0UmVwbGFjZVJlcG9ydCgpOwotCi0gIC8qKgotICAgKiBTZXQgcmVwbGFjZSByZXBvcnQgZmlsZSBvcHRpb24uCi0gICAqIEBwYXJhbSByZXBsYWNlUmVwb3J0ICBlcGxhY2UgcmVwb3J0IGZpbGUgb3B0aW9uLgotICAgKiBAc2VlICNnZXRSZXBsYWNlUmVwb3J0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZXBsYWNlUmVwb3J0KGJvb2xlYW4gcmVwbGFjZVJlcG9ydCk7Ci0KLSAgLyoqCi0gICAqIEdldCByZXBvcnQgZmlsZSBsb2NhdGlvbi4KLSAgICogQHJldHVybiByZXBvcnQgZmlsZSBsb2NhdGlvbi4KLSAgICogQHNlZSAjc2V0UmVwb3J0TG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVwb3J0TG9jYXRpb24oKTsKLQotICAvKioKLSAgICogU2V0IHJlcGxhY2UgcmVwb3J0IGZpbGUgb3B0aW9uLgotICAgKiBAcGFyYW0gcmVwb3J0VVJJIHJlcG9ydCBsb2NhdGlvbi4KLSAgICogQHNlZSAjZ2V0UmVwb3J0TG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlcG9ydExvY2F0aW9uKFN0cmluZyByZXBvcnRVUkkpOwotCi0gIC8qKgotICAgKiBHZXQgc3R5bGUgc2hlZXQuCi0gICAqIEByZXR1cm4gc3R5bGUgc2hlZXQuCi0gICAqIEBzZWUgI3NldEFkZFN0eWxlU2hlZXQKLSAgICovCi0gIHB1YmxpYyBBZGRTdHlsZVNoZWV0IGdldEFkZFN0eWxlU2hlZXQoKTsKLQotICAvKioKLSAgICogU2V0IHN0eWxlIHNoZWV0LgotICAgKiBAcGFyYW0gYWRkU3R5bGVTaGVldCBhIHN0eWxlIHNoZWV0LgotICAgKiBAc2VlICNnZXRBZGRTdHlsZVNoZWV0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBZGRTdHlsZVNoZWV0KEFkZFN0eWxlU2hlZXQgYWRkU3R5bGVTaGVldCk7Ci0KLSAgLyoqCi0gICAqIEdldCBwcm9maWxlIHRlc3QgYXNzZXJ0aW9ucyBkb2N1bWVudCBsb2NhdGlvbi4KLSAgICogQHJldHVybiByb2ZpbGUgdGVzdCBhc3NlcnRpb25zIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKiBAc2VlICNzZXRUZXN0QXNzZXJ0aW9uc0RvY3VtZW50TG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VGVzdEFzc2VydGlvbnNEb2N1bWVudExvY2F0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBwcm9maWxlIHRlc3QgYXNzZXJ0aW9ucyBkb2N1bWVudCBsb2NhdGlvbi4KLSAgICogQHBhcmFtIHRlc3RBc3NlcnRpb25zRG9jdW1lbnRVUkkgcHJvZmlsZSB0ZXN0IGFzc2VydGlvbnMgZG9jdW1lbnQgbG9jYXRpb24uCi0gICAqIEBzZWUgI2dldFRlc3RBc3NlcnRpb25zRG9jdW1lbnRMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VGVzdEFzc2VydGlvbnNEb2N1bWVudExvY2F0aW9uKFN0cmluZyB0ZXN0QXNzZXJ0aW9uc0RvY3VtZW50VVJJKTsKLQotICAvKioKLSAgICogR2V0IG1lc2FnZSBsb2cgbG9jYXRpb24uCi0gICAqIEByZXR1cm4gbWVzYWdlIGxvZyBsb2NhdGlvbi4KLSAgICogQHNlZSAjc2V0TG9nTG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9nTG9jYXRpb24oKTsKLQotICAvKioKLSAgICogU2V0IG1lc3NhZ2UgbG9nIGxvY2F0aW9uLgotICAgKiBAcGFyYW0gbG9nVVJJIG1lc3NhZ2UgbG9nIGxvY2F0aW9uLgotICAgKiBAc2VlICNnZXRMb2dMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9nTG9jYXRpb24oU3RyaW5nIGxvZ1VSSSk7Ci0KLSAgLyoqCi0gICAqIElzIG1lc3NhZ2UgbG9nIGxvY2F0aW9uIHNwZWNpZmllZC4KLSAgICogQHJldHVybiB0cnVlIGlmIG1lc3NhZ2UgbG9nIGxvY2F0aW9uIGlzIHNldC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzTG9nU2V0KCk7Ci0KLSAgLyoqCi0gICAqIEdldCBjb3JyZWxhdGlvbiB0eXBlLgotICAgKiBAcmV0dXJuIGNvcnJlbGF0aW9uIHR5cGUuCi0gICAqIEBzZWUgI3NldENvcnJlbGF0aW9uVHlwZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRDb3JyZWxhdGlvblR5cGUoKTsKLQotICAvKioKLSAgICogU2V0IGNvcnJlbGF0aW9uIHR5cGUuCi0gICAqIEBwYXJhbSBjb3JyZWxhdGlvblR5cGUgY29ycmVsYXRpb24gdHlwZS4KLSAgICogQHNlZSAjZ2V0Q29ycmVsYXRpb25UeXBlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb3JyZWxhdGlvblR5cGUoU3RyaW5nIGNvcnJlbGF0aW9uVHlwZSk7Ci0KLSAgLyoqCi0gICAqIElzIFdTREwgcmVmZXJlbmNlIHNldC4KLSAgICogQHJldHVybiB0cnVlIGlmIFdTREwgcmVmZXJlbmNlIGlzIHNldC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzV1NETFJlZmVyZW5jZVNldCgpOwotCi0gIC8qKgotICAgKiBHZXQgV1NETCByZWZlcmVuY2UuCi0gICAqIEByZXR1cm4gV1NETCByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldFdTRExSZWZlcmVuY2UKLSAgICovCi0gIHB1YmxpYyBXU0RMUmVmZXJlbmNlIGdldFdTRExSZWZlcmVuY2UoKTsKLQotICAvKioKLSAgICogU2V0IFdTREwgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gd3NkbFJlZmVyZW5jZSBXU0RMIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0V1NETFJlZmVyZW5jZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V1NETFJlZmVyZW5jZShXU0RMUmVmZXJlbmNlIHdzZGxSZWZlcmVuY2UpOwotCi0gIC8qKgotICAgKiBHZXQgV1NETCBlbGVtZW50LgotICAgKiBAcmV0dXJuIFdTREwgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBXU0RMRWxlbWVudCBnZXRXU0RMRWxlbWVudCgpOwotCi0gIC8qKgotICAgKiBHZXQgV1NETCBkb2N1bWVudCBsb2NhdGlvbi4KLSAgICogQHJldHVybiBXU0RMIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRXU0RMTG9jYXRpb24oKTsKLQotICAvKioKLSAgICogR2V0IHNlcnZpY2UgbG9jYXRpb24uCi0gICAqIEByZXR1cm4gc2VydmljZSBsb2NhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZUxvY2F0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIElzIFVEREkgcmVmZXJlbmNlIHNldC4KLSAgICogQHJldHVybiB0cnVlIGlmIFVEREkgcmVmZXJlbmNlIGlzIHNldC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzVURESVJlZmVyZW5jZVNldCgpOwotCi0gIC8qKgotICAgKiBHZXQgVURESSByZWZlcmVuY2UuCi0gICAqIEByZXR1cm4gVURESSByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldFVERElSZWZlcmVuY2UKLSAgICovCi0gIHB1YmxpYyBVRERJUmVmZXJlbmNlIGdldFVERElSZWZlcmVuY2UoKTsKLQotICAvKioKLSAgICogU2V0IFVEREkgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gdWRkaVJlZmVyZW5jZSBVRERJIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0VURESVJlZmVyZW5jZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VURESVJlZmVyZW5jZShVRERJUmVmZXJlbmNlIHVkZGlSZWZlcmVuY2UpOwotCi0gIC8qKgotICAgKiBQYXJzZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KLSAgICogQHBhcmFtIGFyZ3MgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAqIEBwYXJhbSB2YWxpZGF0ZSBmbGFnIGZvciBjb21tYW5kIGxpbmUgdmFsaWRhdGlvbi4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgcGFyc2luZyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHBhcnNlQXJncyhTdHJpbmdbXSBhcmdzLCBib29sZWFuIHZhbGlkYXRlKSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKiBAcmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL2NvbmZpZy9BbmFseXplckNvbmZpZ1JlYWRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL0FuYWx5emVyQ29uZmlnUmVhZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMzY0ZmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL0FuYWx5emVyQ29uZmlnUmVhZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnOwotCi1pbXBvcnQgamF2YS5pby5SZWFkZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudFJlYWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5NZXNzYWdlTGlzdDsKLQotCi0vKioKLSAqIERlZmluZXMgdGhlIGludGVyZmFjZSB1c2VkIHRvIHJlYWQgdGhlIGFuYWx5emVyIGNvbmZpZyBkb2N1bWVudHMuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBBbmFseXplckNvbmZpZ1JlYWRlciBleHRlbmRzIERvY3VtZW50UmVhZGVyIHsKLQotICAvKioKLSAgICogSW5pdGlhbGl6ZSBhbmFseXplciBjb25maWcgcmVhZGVyLgotICAgKiBAcGFyYW0gbWVzc2FnZUxpc3QgYSBNZXNzYWdlTGlzdCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KE1lc3NhZ2VMaXN0IG1lc3NhZ2VMaXN0KTsKLSAgCi0gIC8qKgotICAgKiBSZWFkIHRoZSBhbmFseXplciBjb25maWcgZmlsZS4KLSAgICogQHBhcmFtIGFuYWx5emVyQ29uZmlnVVJJIHRoZSBhbmFseXplciBjb25maWcgZmlsZSBsb2NhdGlvbi4KLSAgICogQHJldHVybiB0aGUgQW5hbHl6ZXJDb25maWcgb2JqZWN0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB1bmFibGUgdG8gcmVhZCB0aGUgYW5hbHl6ZXIgY29uZmlnIGZpbGUuCi0gICAqLwotICBwdWJsaWMgQW5hbHl6ZXJDb25maWcgcmVhZEFuYWx5emVyQ29uZmlnKFN0cmluZyBhbmFseXplckNvbmZpZ1VSSSkgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLSAgCi0gIC8qKgotICAgKiBSZWFkIHRoZSBhbmFseXplciBjb25maWcgZmlsZS4KLSAgICogQHBhcmFtIHJlYWRlciBhIFJlYWRlciBvYmplY3QuCi0gICAqIEByZXR1cm4gdGhlIEFuYWx5emVyQ29uZmlnIG9iamVjdC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdW5hYmxlIHRvIHBhcnNlIHRoZSBhbmFseXplciBjb25maWcgZmlsZS4KLSAgICovCi0gIHB1YmxpYyBBbmFseXplckNvbmZpZyByZWFkQW5hbHl6ZXJDb25maWcoUmVhZGVyIHJlYWRlcikgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLX0KLQotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvQXNzZXJ0aW9uUmVzdWx0VHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL0Fzc2VydGlvblJlc3VsdFR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIwYzlkMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvQXNzZXJ0aW9uUmVzdWx0VHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLQotLyoqCi0gKiBUZXN0IGFzc2VydGlvbiByZXN1bHQgdHlwZS4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBBc3NlcnRpb25SZXN1bHRUeXBlCi17Ci0gIC8qKgotICAgKiBUaGlzIHR5cGUuCi0gICAqLwotICBwcml2YXRlIFN0cmluZyByZXN1bHRUeXBlID0gX0FMTDsKLQotICAvKioKLSAgICogU3RyaW5nIHZlcnNpb24gb2YgcmVzdWx0IHR5cGVzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIF9BTEwgPSAiYWxsIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIF9OT1RfSU5GTyA9ICJub3RJbmZvIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIF9PTkxZX0ZBSUxFRCA9ICJvbmx5RmFpbGVkIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIF9OT1RfUEFTU0VEID0gIm5vdFBhc3NlZCI7Ci0KLSAgLyoqCi0gICAqIFJlc3VsdCB0eXBlcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgQXNzZXJ0aW9uUmVzdWx0VHlwZSBBTEwgPSBuZXcgQXNzZXJ0aW9uUmVzdWx0VHlwZShfQUxMKTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBBc3NlcnRpb25SZXN1bHRUeXBlIE5PVF9JTkZPID0gbmV3IEFzc2VydGlvblJlc3VsdFR5cGUoX05PVF9JTkZPKTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBBc3NlcnRpb25SZXN1bHRUeXBlIE9OTFlfRkFJTEVEID0KLSAgICBuZXcgQXNzZXJ0aW9uUmVzdWx0VHlwZShfT05MWV9GQUlMRUQpOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIEFzc2VydGlvblJlc3VsdFR5cGUgTk9UX1BBU1NFRCA9Ci0gICAgbmV3IEFzc2VydGlvblJlc3VsdFR5cGUoX05PVF9QQVNTRUQpOwotCi0gIC8qKgotICAgKiBEbyBub3QgYWxsb3cgdGhpcyBvYmplY3QgdG8gYmUgY3JlYXRlZCB3aXRoIG51bGwgY29uc3RydWN0b3IuCi0gICAqLwotICBwcml2YXRlIEFzc2VydGlvblJlc3VsdFR5cGUoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIHJlc3VsdCB0eXBlLgotICAgKiBAcGFyYW0gcmVzdWx0VHlwZSBhIHJlc3VsdCB0eXBlLgotICAgKi8KLSAgcHJpdmF0ZSBBc3NlcnRpb25SZXN1bHRUeXBlKFN0cmluZyByZXN1bHRUeXBlKQotICB7Ci0gICAgdGhpcy5yZXN1bHRUeXBlID0gcmVzdWx0VHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiBJcyByZXN1bHQgdHlwZSBhbGwuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcmVzdWx0IHR5cGUgaXMgYWxsLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNBbGwoKQotICB7Ci0gICAgcmV0dXJuIHJlc3VsdFR5cGUuZXF1YWxzKF9BTEwpOwotICB9Ci0KLSAgLyoqCi0gICAqIElzIHJlc3VsdCB0eXBlIGZhaWxlZCBvbmx5LgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHJlc3VsdCB0eXBlIGlzIGZhaWxlZCBvbmx5LgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNGYWlsZWRPbmx5KCkKLSAgewotICAgIHJldHVybiByZXN1bHRUeXBlLmVxdWFscyhfT05MWV9GQUlMRUQpOwotICB9Ci0KLSAgLyoqCi0gICAqIElzIHJlc3VsdCB0eXBlIG5vdCBwYXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcmVzdWx0IHR5cGUgaXMgbm90IHBhc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzTm90UGFzc2VkKCkKLSAgewotICAgIHJldHVybiByZXN1bHRUeXBlLmVxdWFscyhfTk9UX1BBU1NFRCk7Ci0gIH0KLQotICAvKioKLSAgICogSXMgcmVzdWx0IHR5cGUgbm90IGluZm8uCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcmVzdWx0IHR5cGUgaXMgbm90IGluZm8uCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc05vdEluZm8oKQotICB7Ci0gICAgcmV0dXJuIHJlc3VsdFR5cGUuZXF1YWxzKF9OT1RfSU5GTyk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHJlc3VsdCB0eXBlLgotICAgKiBAcmV0dXJuIHJlc3VsdCB0eXBlLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUeXBlKCkKLSAgewotICAgIHJldHVybiByZXN1bHRUeXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBuZXcgYXNzZXJ0aW9uIHJlc3VsdCB0eXBlLgotICAgKiBAcGFyYW0gcmVzdWx0VHlwZSBhbiBhc3NlcnRpb24gcmVzdWx0IHR5cGUuCi0gICAqIEByZXR1cm4gbmV3IGFzc2VydGlvbiByZXN1bHQgdHlwZS4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgaW52YWxpZCBhc3NlcnRpb24gcmVzdWx0IHR5cGUgd2FzIHNwZWNpZmllZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0VHlwZSBuZXdJbnN0YW5jZShTdHJpbmcgcmVzdWx0VHlwZSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBBc3NlcnRpb25SZXN1bHRUeXBlIGFzc2VydGlvblJlc3VsdFR5cGUgPSBudWxsOwotCi0gICAgaWYgKHJlc3VsdFR5cGUgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBhc3NlcnRpb25SZXN1bHRUeXBlID0gTk9UX0lORk87Ci0gICAgfQotCi0gICAgZWxzZSBpZiAocmVzdWx0VHlwZS5lcXVhbHMoX0FMTCkpCi0gICAgewotICAgICAgYXNzZXJ0aW9uUmVzdWx0VHlwZSA9IEFMTDsKLSAgICB9Ci0KLSAgICBlbHNlIGlmIChyZXN1bHRUeXBlLmVxdWFscyhfT05MWV9GQUlMRUQpKQotICAgIHsKLSAgICAgIGFzc2VydGlvblJlc3VsdFR5cGUgPSBPTkxZX0ZBSUxFRDsKLSAgICB9Ci0KLSAgICBlbHNlIGlmIChyZXN1bHRUeXBlLmVxdWFscyhfTk9UX1BBU1NFRCkpCi0gICAgewotICAgICAgYXNzZXJ0aW9uUmVzdWx0VHlwZSA9IE5PVF9QQVNTRUQ7Ci0gICAgfQotICAgIGVsc2UgaWYgKHJlc3VsdFR5cGUuZXF1YWxzKF9OT1RfSU5GTykpCi0gICAgewotICAgICAgYXNzZXJ0aW9uUmVzdWx0VHlwZSA9IE5PVF9JTkZPOwotICAgIH0KLQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKAotICAgICAgICAiQW4gaW52YWxpZCBhc3NlcnRpb24gcmVzdWx0IHR5cGUgd2FzIHNwZWNpZmllZDogIiArIHJlc3VsdFR5cGUgKyAiLiIpOwotICAgIH0KLQotICAgIHJldHVybiBhc3NlcnRpb25SZXN1bHRUeXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCi0gICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICByZXR1cm4gcmVzdWx0VHlwZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL0Fzc2VydGlvblJlc3VsdHNPcHRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL2NvbmZpZy9Bc3NlcnRpb25SZXN1bHRzT3B0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZWQ1NmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL0Fzc2VydGlvblJlc3VsdHNPcHRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RWxlbWVudDsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBjb250YWlucyBhIGRlZmluaXRpb24gb2YgdGhlIGFzc2VydGlvbiByZXN1bHRzIHRoYXQgCi0gKiBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcG9ydC4gIEl0IGFsc28gY29udGFpbnMgaW5mb3JtYXRpb24gCi0gKiB0aGF0IGluZGljYXRlcyB3aGljaCBtZXNzYWdlcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcG9ydC4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIEFzc2VydGlvblJlc3VsdHNPcHRpb24gZXh0ZW5kcyBEb2N1bWVudEVsZW1lbnQKLXsKLSAgLyoqCi0gICAqIEdldCBhc3NlcnRpb24gcmVzdWx0IHR5cGUuCi0gICAqIEByZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdCB0eXBlLgotICAgKiBAc2VlICNzZXRBc3NlcnRpb25SZXN1bHRUeXBlCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0VHlwZSBnZXRBc3NlcnRpb25SZXN1bHRUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBhc3NlcnRpb24gcmVzdWx0IHR5cGUuCi0gICAqIEBwYXJhbSByZXN1bHRUeXBlIGFzc2VydGlvbiByZXN1bHQgdHlwZS4KLSAgICogQHNlZSAjZ2V0QXNzZXJ0aW9uUmVzdWx0VHlwZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QXNzZXJ0aW9uUmVzdWx0VHlwZShBc3NlcnRpb25SZXN1bHRUeXBlIHJlc3VsdFR5cGUpOwotCi0gIC8qKgotICAgKiBHZXQgc2hvdyBtZXNzYWdlIGVudHJ5IGluZGljYXRvci4KLSAgICogQHJldHVybiBzaG93IG1lc3NhZ2UgZW50cnkgaW5kaWNhdG9yLgotICAgKiBAc2VlICNzZXRTaG93TWVzc2FnZUVudHJ5Ci0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRTaG93TWVzc2FnZUVudHJ5KCk7Ci0KLSAgLyoqCi0gICAqIFNldCBzaG93IG1lc3NhZ2UgZW50cnkgaW5kaWN0b3IuCi0gICAqIEBwYXJhbSBzaG93TWVzc2FnZUVudHJ5IHNob3cgbWVzc2FnZSBlbnRyeSBpbmRpY3Rvci4KLSAgICogQHNlZSAjZ2V0U2hvd01lc3NhZ2VFbnRyeQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2hvd01lc3NhZ2VFbnRyeShib29sZWFuIHNob3dNZXNzYWdlRW50cnkpOwotCi0gIC8qKgotICAgKiBHZXQgc2hvdyBhc3NlcnRpb24gZGVzY3JpcHRpb24gaW5kaWNhdG9yLgotICAgKiBAcmV0dXJuIHNob3cgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uIGluZGljYXRvci4KLSAgICogQHNlZSAjc2V0U2hvd0Fzc2VydGlvbkRlc2NyaXB0aW9uCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRTaG93QXNzZXJ0aW9uRGVzY3JpcHRpb24oKTsKLQotICAvKioKLSAgICogU2V0IHNob3cgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uIGluZGljdG9yLgotICAgKiBAcGFyYW0gc2hvd0Fzc2VydGlvbkRlc2NyaXB0aW9uIHNob3cgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uIGluZGljdG9yLgotICAgKiBAc2VlICNnZXRTaG93QXNzZXJ0aW9uRGVzY3JpcHRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNob3dBc3NlcnRpb25EZXNjcmlwdGlvbihib29sZWFuIHNob3dBc3NlcnRpb25EZXNjcmlwdGlvbik7Ci0KLSAgLyoqCi0gICAqIEdldCBzaG93IGZhaWx1cmUgbWVzc2FnZSBpbmRpY2F0b3IuCi0gICAqIEByZXR1cm4gc2hvdyBmYWlsdXJlIG1lc3NhZ2UgaW5kaWNhdG9yLgotICAgKiBAc2VlICNzZXRTaG93RmFpbHVyZU1lc3NhZ2UKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFNob3dGYWlsdXJlTWVzc2FnZSgpOwotCi0gIC8qKgotICAgKiBTZXQgc2hvdyBmYWlsdXJlIG1lc3NhZ2UgaW5kaWNhdG9yLgotICAgKiBAcGFyYW0gc2hvd0ZhaWx1cmVNZXNzYWdlIHNob3cgZmFpbHVyZSBtZXNzYWdlIGluZGljYXRvci4KLSAgICogQHNlZSAjZ2V0U2hvd0ZhaWx1cmVNZXNzYWdlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTaG93RmFpbHVyZU1lc3NhZ2UoYm9vbGVhbiBzaG93RmFpbHVyZU1lc3NhZ2UpOwotCi0gIC8qKgotICAgKiBHZXQgc2hvdyBlcnJvciBkZXRhaWwgaW5kaWNhdG9yLgotICAgKiBAcmV0dXJuIHNob3cgZXJyb3IgZGV0YWlsIGluZGljYXRvci4KLSAgICogQHNlZSAjc2V0U2hvd0ZhaWx1cmVEZXRhaWwKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFNob3dGYWlsdXJlRGV0YWlsKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBzaG93IGVycm9yIGRldGFpbCBpbmRpY2F0b3IuCi0gICAqIEBwYXJhbSBzaG93ZmFpbHVyZURldGFpbCBzaG93IGVycm9yIGRldGFpbCBpbmRpY2F0b3IuCi0gICAqIEBzZWUgI2dldFNob3dGYWlsdXJlRGV0YWlsCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTaG93RmFpbHVyZURldGFpbChib29sZWFuIHNob3dmYWlsdXJlRGV0YWlsKTsKLQotICAvKioKLSAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICogQHJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvVURESVJlZmVyZW5jZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL1VERElSZWZlcmVuY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEzYmNkMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvVURESVJlZmVyZW5jZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWc7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50OwotCi0vKioKLSAqIFRoZSBpbnRlcmZhY2UgZm9yIGEgcmVmZXJlbmNlIHRvIGEgZGlzY292ZXJ5IGFydGlmYWN0LiAgCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgVURESVJlZmVyZW5jZSBleHRlbmRzIERvY3VtZW50RWxlbWVudAotewotICAvKioKLSAgICogRWxlbWVudCBuYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9OQU1FID0gV1NJQ29uc3RhbnRzLkVMRU1fVURESV9SRUZFUkVOQ0U7Ci0KLSAgLyoqCi0gICAqIFFOYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX0FOQUxZWkVSX0NPTkZJRywgRUxFTV9OQU1FKTsKLQotICAvKioKLSAgICogVURESSBrZXkgdHlwZTogYmluZGluZ0tleS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEJJTkRJTkdfS0VZID0gImJpbmRpbmdLZXkiOwotCi0gIC8qKgotICAgKiBVRERJIGtleSB0eXBlOiB0TW9kZWxLZXkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUTU9ERUxfS0VZID0gInRNb2RlbEtleSI7Ci0KLSAgLyoqCi0gICAqIEdldCBVRERJICBrZXkgdHlwZS4KLSAgICogQHJldHVybiBVRERJICBrZXkgdHlwZS4KLSAgICogQHNlZSAjc2V0S2V5VHlwZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRLZXlUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBVRERJIGtleSB0eXBlLgotICAgKiBAcGFyYW0ga2V5VHlwZSBVRERJIGtleSB0eXBlLgotICAgKiBAc2VlICNnZXRLZXlUeXBlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRLZXlUeXBlKFN0cmluZyBrZXlUeXBlKTsKLQotICAvKioKLSAgICogR2V0IFVEREkga2V5LgotICAgKiBAcmV0dXJuIFVEREkga2V5LgotICAgKiBAc2VlICNzZXRLZXkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0S2V5KCk7Ci0KLSAgLyoqCi0gICAqIFNldCBVRERJIGtleS4KLSAgICogQHBhcmFtIGtleSBVRERJIGtleS4KLSAgICogQHNlZSAjZ2V0S2V5Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRLZXkoU3RyaW5nIGtleSk7Ci0KLSAgLyoqCi0gICAqIEdldCBVRERJIGlucXVpcnkgVVJMLgotICAgKiBAcmV0dXJuIFVEREkgaW5xdWlyeSBVUkwuCi0gICAqIEBzZWUgI3NldElucXVpcnlVUkwKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SW5xdWlyeVVSTCgpOwotCi0gIC8qKgotICAgKiBTZXQgVURESSBpbnF1aXJ5VVJMLgotICAgKiBAcGFyYW0gaW5xdWlyeVVSTCBVRERJIGlucXVpcnlVUkwuCi0gICAqIEBzZWUgI2dldElucXVpcnlVUkwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldElucXVpcnlVUkwoU3RyaW5nIGlucXVpcnlVUkwpOwotCi0gIC8qKgotICAgKiBHZXQgV1NETCBlbGVtZW50LgotICAgKiBAcmV0dXJuIFdTREwgZWxlbWVudC4KLSAgICogQHNlZSAjc2V0V1NETEVsZW1lbnQKLSAgICovCi0gIHB1YmxpYyBXU0RMRWxlbWVudCBnZXRXU0RMRWxlbWVudCgpOwotCi0gIC8qKgotICAgKiBTZXQgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gd3NkbEVsZW1lbnQgV1NETCBlbGVtZW50LgotICAgKiBAc2VlICNnZXRXU0RMRWxlbWVudAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V1NETEVsZW1lbnQoV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQpOwotCi0gIC8qKgotICAgKiBHZXQgc2VydmljZSBsb2NhdGlvbi4KLSAgICogQHJldHVybiBzZXJ2aWNlIGxvY2F0aW9uLgotICAgKiBAc2VlICNzZXRTZXJ2aWNlTG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZUxvY2F0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBzZXJ2aWNlIGxvY2F0aW9uLgotICAgKiBAcGFyYW0gc2VydmljZUxvY2F0aW9uIHNlcnZpY2UgbG9jYXRpb24uCi0gICAqIEBzZWUgI2dldFNlcnZpY2VMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZUxvY2F0aW9uKFN0cmluZyBzZXJ2aWNlTG9jYXRpb24pOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL1dTRExFbGVtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvV1NETEVsZW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJlMzNlMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvV1NETEVsZW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RWxlbWVudDsKLQotLyoqCi0gKiBUaGUgYmFzZSBpbnRlcmZhY2UgZm9yIFdTREwgZGVmaW5pdGlvbnMuIAotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFdTRExFbGVtZW50IGV4dGVuZHMgRG9jdW1lbnRFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9XU0RMX0VMRU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFFOYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX0FOQUxZWkVSX0NPTkZJRywgRUxFTV9OQU1FKTsKLQotICAvKioKLSAgICogR2V0IFdTREwgZWxlbWVudCB0eXBlLgotICAgKiBAcmV0dXJuIFdTREwgZWxlbWVudCB0eXBlLgotICAgKiBAc2VlICNzZXRUeXBlCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFR5cGUoKTsKLQotICAvKioKLSAgICogU2V0IFdTREwgZWxlbWVudCB0eXBlLgotICAgKiBAcGFyYW0gdHlwZSBXU0RMIGVsZW1lbnQgdHlwZS4KLSAgICogQHNlZSAjZ2V0VHlwZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VHlwZShTdHJpbmcgdHlwZSk7Ci0KLSAgLyoqCi0gICAqIEdldCBXU0RMIGVsZW1lbnQgbmFtZXNwYWNlLgotICAgKiBAcmV0dXJuIFdTREwgZWxlbWVudCBuYW1lc3BhY2UuCi0gICAqIEBzZWUgI3NldE5hbWVzcGFjZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lc3BhY2UoKTsKLQotICAvKioKLSAgICogU2V0IFdTREwgZWxlbWVudCBuYW1lc3BhY2UuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2UgV1NETCBlbGVtZW50IG5hbWVzcGFjZS4KLSAgICogQHNlZSAjZ2V0TmFtZXNwYWNlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXROYW1lc3BhY2UoU3RyaW5nIG5hbWVzcGFjZSk7Ci0KLSAgLyoqCi0gICAqIEdldCBXU0RMIGVsZW1lbnQgbmFtZS4KLSAgICogQHJldHVybiBXU0RMIGVsZW1lbnQgbmFtZS4KLSAgICogQHNlZSAjc2V0TmFtZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBXU0RMIGVsZW1lbnQgbmFtZS4KLSAgICogQHBhcmFtIG5hbWUgV1NETCBlbGVtZW50IG5hbWUuCi0gICAqIEBzZWUgI2dldE5hbWUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpOwotCi0gIC8qKgotICAgKiBHZXQgV1NETCBlbGVtZW50IHF1YWxpZmllZCBuYW1lLgotICAgKiBAcmV0dXJuIFdTREwgZWxlbWVudCBxdWFsaWZpZWQgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBRTmFtZSBnZXRRTmFtZSgpOwotCi0gIC8qKgotICAgKiBHZXQgV1NETCBwYXJlbnQgZWxlbWVudCBuYW1lLgotICAgKiBAcmV0dXJuIFdTREwgcGFyZW50IGVsZW1lbnQgbmFtZS4KLSAgICogQHNlZSAjc2V0UGFyZW50RWxlbWVudE5hbWUKLSAgICogCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFBhcmVudEVsZW1lbnROYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBXU0RMIHBhcmVudCBlbGVtZW50IG5hbWUuCi0gICAqIEBwYXJhbSBwYXJlbnRFbGVtZW50TmFtZSBXU0RMIHBhcmVudCBlbGVtZW50IG5hbWUuCi0gICAqIEBzZWUgI2dldFBhcmVudEVsZW1lbnROYW1lCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQYXJlbnRFbGVtZW50TmFtZShTdHJpbmcgcGFyZW50RWxlbWVudE5hbWUpOwotCi0gIC8qKgotICAgKiBHZXQgV1NETCBwYXJlbnQgZWxlbWVudCBRTmFtZS4KLSAgICogQHJldHVybiBXU0RMIHBhcmVudCBlbGVtZW50IFFOYW1lLgotICAgKi8KLSAgcHVibGljIFFOYW1lIGdldFBhcmVudEVsZW1lbnRRTmFtZSgpOwotCi0gIC8qKgotICAgKiBJcyBwb3J0IGVsZW1lbnQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBhIHBvcnQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1BvcnQoKTsKLQotICAvKioKLSAgICogSXMgYmluZGluZyBlbGVtZW50LgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGxlbWVudCBpcyBhIGJpbmRpbmcuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0JpbmRpbmcoKTsKLQotICAvKioKLSAgICogSXMgcG9ydFR5cGUgZWxlbWVudC4KLSAgICogQHJldHVybiB0cnVlIGlmIGVsZW1lbnQgaXMgYSBwb3J0IHR5cGUuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1BvcnRUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIElzIG9wZXJhdGlvbiBlbGVtZW50LgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGVsZW1lbnQgaXMgYW4gb3BlcmF0aW9uLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNPcGVyYXRpb24oKTsKLQotICAvKioKLSAgICogSXMgbWVzc2FnZSBlbGVtZW50LgotICAgKiBAcmV0dXJuIHRydWUgaWYgZWxlbWVudCBpcyBhIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc01lc3NhZ2UoKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL2NvbmZpZy9XU0RMUmVmZXJlbmNlLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvV1NETFJlZmVyZW5jZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzU1MGMyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL2NvbmZpZy9XU0RMUmVmZXJlbmNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RWxlbWVudDsKLQotLyoqCi0gKiBUaGUgaW50ZXJmYWNlIGZvciBhIHJlZmVyZW5jZSB0byBhIGRlc2NyaXB0aW9uIGFydGlmYWN0LiAgCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgV1NETFJlZmVyZW5jZSBleHRlbmRzIERvY3VtZW50RWxlbWVudAotewotICAvKioKLSAgICogRWxlbWVudCBuYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9OQU1FID0gV1NJQ29uc3RhbnRzLkVMRU1fV1NETF9SRUZFUkVOQ0U7Ci0KLSAgLyoqCi0gICAqIFFOYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX0FOQUxZWkVSX0NPTkZJRywgRUxFTV9OQU1FKTsKLQotICAvKioKLSAgICogR2V0IFdTREwgZWxlbWVudC4KLSAgICogQHJldHVybiBXU0RMIGVsZW1lbnQuCi0gICAqIEBzZWUgI3NldFdTRExFbGVtZW50Ci0gICAqLwotICBwdWJsaWMgV1NETEVsZW1lbnQgZ2V0V1NETEVsZW1lbnQoKTsKLQotICAvKioKLSAgICogU2V0IFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHdzZGxFbGVtZW50IFdTREwgZWxlbWVudC4KLSAgICogQHNlZSAjZ2V0V1NETEVsZW1lbnQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdTRExFbGVtZW50KFdTRExFbGVtZW50IHdzZGxFbGVtZW50KTsKLQotICAvKioKLSAgICogR2V0IFdTREwgbG9jYXRpb24uCi0gICAqIEByZXR1cm4gV1NETCBsb2NhdGlvbi4KLSAgICogQHNlZSAjc2V0V1NETExvY2F0aW9uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFdTRExMb2NhdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXQgV1NETCBsb2NhdGlvbi4KLSAgICogQHBhcmFtIHdzZGxMb2NhdGlvbiBXU0RMIGxvY2F0aW9uLgotICAgKiBAc2VlICNnZXRXU0RMTG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdTRExMb2NhdGlvbihTdHJpbmcgd3NkbExvY2F0aW9uKTsKLQotICAvKioKLSAgICogR2V0IHNlcnZpY2UgbG9jYXRpb24uCi0gICAqIEByZXR1cm4gc2VydmljZSBsb2NhdGlvbi4KLSAgICogQHNlZSAjc2V0U2VydmljZUxvY2F0aW9uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VMb2NhdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXQgc2VydmljZSBsb2NhdGlvbi4KLSAgICogQHBhcmFtIHNlcnZpY2VMb2NhdGlvbiBzZXJ2aWNlIGxvY2F0aW9uLgotICAgKiBAc2VlICNnZXRTZXJ2aWNlTG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VMb2NhdGlvbihTdHJpbmcgc2VydmljZUxvY2F0aW9uKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL2NvbmZpZy9pbXBsL0FuYWx5emVyQ29uZmlnSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL2ltcGwvQW5hbHl6ZXJDb25maWdJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZWU3NGEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL2ltcGwvQW5hbHl6ZXJDb25maWdJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuaW1wbDsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5BbmFseXplcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuQW5hbHl6ZXJDb25maWdSZWFkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5Bc3NlcnRpb25SZXN1bHRUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuQXNzZXJ0aW9uUmVzdWx0c09wdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLlVERElSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLldTRExSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmNvbW1vbi5BZGRTdHlsZVNoZWV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5jb21tb24uaW1wbC5BZGRTdHlsZVNoZWV0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5NZXNzYWdlTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5VdGlsczsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhbmFseXplciBjb25maWd1cmF0aW9uIGZpbGUgaW50ZXJmYWNlLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBBbmFseXplckNvbmZpZ0ltcGwgaW1wbGVtZW50cyBBbmFseXplckNvbmZpZwotewotICAvKioKLSAgICogTWVzc2FnZSBsaXN0IHJlZmVyZW5jZS4KLSAgICovCi0gIHByb3RlY3RlZCBNZXNzYWdlTGlzdCBtZXNzYWdlTGlzdCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIEFuYWx5emVyIGNvbmZpZ3VyYXRpb24gZmlsZSBVUkkuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGNvbmZpZ1VSSSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBkZXNjcmlwdGlvbiA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFZlcmJvc2Ugb3B0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gdmVyYm9zZSA9IGZhbHNlOwotCi0gIC8qKgotICAgKiBBc3NlcnRpb24gcmVzdWx0cyBvcHRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbiBhc3NlcnRpb25SZXN1bHRzT3B0aW9uID0KLSAgICBuZXcgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbkltcGwoKTsKLQotICAvKioKLSAgICogUmVwb3J0IGxvY2F0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyByZXBvcnRVUkkgPSBXU0lDb25zdGFudHMuREVGQVVMVF9SRVBPUlRfVVJJOwotCi0gIC8qKgotICAgKiBSZXBsYWNlIHJlcG9ydCBpbmRpY2F0b3IuCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiByZXBsYWNlUmVwb3J0ID0gZmFsc2U7Ci0KLSAgLyoqCi0gICAqIEFkZCBzdHlsZSBzaGVldC4KLSAgICovCi0gIHByb3RlY3RlZCBBZGRTdHlsZVNoZWV0IGFkZFN0eWxlU2hlZXQ7Ci0KLSAgLyoqCi0gICAqIFByb2ZpbGUgdGVzdCBhc3NlcnRpb25zIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyB0ZXN0QXNzZXJ0aW9uc0RvY3VtZW50VVJJID0KLSAgICBXU0lDb25zdGFudHMuREVGQVVMVF9URVNUX0FTU0VSVElPTlNfRE9DVU1FTlRfVVJJOwotCi0gIC8qKgotICAgKiBNZXNzYWdlIGxvZyBsb2NhdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgbG9nVVJJID0gbnVsbDsKLQotICAvKioKLSAgICogTWVzc2FnZSBjb3JyZWxhdGlvbiB0eXBlLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBjb3JyZWxhdGlvblR5cGUgPQotICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX0NPUlJFTEFUSU9OX1RZUEVfT1BFUkFUSU9OOwotCi0gIC8qKgotICAgKiBXU0RMIHJlZmVyZW5jZS4KLSAgICovCi0gIHByb3RlY3RlZCBXU0RMUmVmZXJlbmNlIHdzZGxSZWZlcmVuY2UgPSBudWxsOwotCi0gIC8qKgotICAgKiBVRERJIHJlZmVyZW5jZS4KLSAgICovCi0gIHByb3RlY3RlZCBVRERJUmVmZXJlbmNlIHVkZGlSZWZlcmVuY2UgPSBudWxsOwotCi0gIC8qKgotICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIEFuYWx5emVyQ29uZmlnSW1wbCgpCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciB3aXRoIGFsbCBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgIGFuIG9wdGlvbmFsIGRlc2NyaXB0aW9uLgotICAgKiBAcGFyYW0gdmVyYm9zZSAgICAgICAgICAgICAgICAgICAgdGhlIHZlcmJvc2Ugb3B0aW9uLgotICAgKiBAcGFyYW0gYXNzZXJ0aW9uUmVzdWx0c09wdGlvbiAgICAgYW4gYXNzZXJ0aW9uIHJlc3VsdHMgb3B0aW9uLgotICAgKiBAcGFyYW0gcmVwb3J0VVJJICAgICAgICAgICAgICAgICAgcmVwb3J0IGxvY2F0aW9uLgotICAgKiBAcGFyYW0gcmVwbGFjZVJlcG9ydCAgICAgICAgICAgICAgYSByZXBsYWNlIHJlcG9ydCBpbmRpY2F0b3IuCi0gICAqIEBwYXJhbSBhZGRTdHlsZVNoZWV0ICAgICAgICAgICAgICBhZGQgc3R5bGUgc2hlZXQuCi0gICAqIEBwYXJhbSB0ZXN0QXNzZXJ0aW9uc0RvY3VtZW50VVJJICBwcm9maWxlIHRlc3QgYXNzZXJ0aW9ucyBkb2N1bWVudCBsb2NhdGlvbi4KLSAgICogQHBhcmFtIGxvZ1VSSSAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgbG9nIGxvY2F0aW9uLgotICAgKiBAcGFyYW0gY29ycmVsYXRpb25UeXBlICAgICAgICAgICAgbWVzc2FnZSBjb3JyZWxhdGlvbiB0eXBlLgotICAgKiBAcGFyYW0gd3NkbFJlZmVyZW5jZSAgICAgICAgICAgICAgYSBXU0RMIHJlZmVyZW5jZS4uCi0gICAqIEBwYXJhbSB1ZGRpUmVmZXJlbmNlICAgICAgICAgICAgICBhIFVVRERJIHJlZmVyZW5jZS4KLSAgICovCi0gIHB1YmxpYyBBbmFseXplckNvbmZpZ0ltcGwoCi0gICAgU3RyaW5nIGRlc2NyaXB0aW9uLAotICAgIGJvb2xlYW4gdmVyYm9zZSwKLSAgICBBc3NlcnRpb25SZXN1bHRzT3B0aW9uIGFzc2VydGlvblJlc3VsdHNPcHRpb24sCi0gICAgU3RyaW5nIHJlcG9ydFVSSSwKLSAgICBib29sZWFuIHJlcGxhY2VSZXBvcnQsCi0gICAgQWRkU3R5bGVTaGVldCBhZGRTdHlsZVNoZWV0LAotICAgIFN0cmluZyB0ZXN0QXNzZXJ0aW9uc0RvY3VtZW50VVJJLAotICAgIFN0cmluZyBsb2dVUkksCi0gICAgU3RyaW5nIGNvcnJlbGF0aW9uVHlwZSwKLSAgICBXU0RMUmVmZXJlbmNlIHdzZGxSZWZlcmVuY2UsCi0gICAgVURESVJlZmVyZW5jZSB1ZGRpUmVmZXJlbmNlKQotICB7Ci0gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwotICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2U7Ci0gICAgdGhpcy5hc3NlcnRpb25SZXN1bHRzT3B0aW9uID0gYXNzZXJ0aW9uUmVzdWx0c09wdGlvbjsKLSAgICB0aGlzLnJlcG9ydFVSSSA9IHJlcG9ydFVSSTsKLSAgICB0aGlzLnJlcGxhY2VSZXBvcnQgPSByZXBsYWNlUmVwb3J0OwotICAgIHRoaXMuYWRkU3R5bGVTaGVldCA9IGFkZFN0eWxlU2hlZXQ7Ci0gICAgdGhpcy50ZXN0QXNzZXJ0aW9uc0RvY3VtZW50VVJJID0gdGVzdEFzc2VydGlvbnNEb2N1bWVudFVSSTsKLSAgICB0aGlzLmxvZ1VSSSA9IGxvZ1VSSTsKLSAgICB0aGlzLmNvcnJlbGF0aW9uVHlwZSA9IGNvcnJlbGF0aW9uVHlwZTsKLSAgICB0aGlzLndzZGxSZWZlcmVuY2UgPSB3c2RsUmVmZXJlbmNlOwotICAgIHRoaXMudWRkaVJlZmVyZW5jZSA9IHVkZGlSZWZlcmVuY2U7Ci0gIH0KLQotICAvKioKLSAgICogSW5pdGlhbGl6ZSBhbmFseXplciBjb25maWcuCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KE1lc3NhZ2VMaXN0IG1lc3NhZ2VMaXN0KQotICB7Ci0gICAgdGhpcy5tZXNzYWdlTGlzdCA9IG1lc3NhZ2VMaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBvcHRpb25hbCBkZXNjcmlwdGlvbi4KLSAgICogQHNlZSAjc2V0RGVzY3JpcHRpb24KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RGVzY3JpcHRpb24oKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb247Ci0gIH0KLQotICAvKioKLSAgICogU2V0IG9wdGlvbmFsIGRlc2NyaXB0aW9uLgotICAgKiBAc2VlICNnZXREZXNjcmlwdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RGVzY3JpcHRpb24oU3RyaW5nIGRlc2NyaXB0aW9uKQotICB7Ci0gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgI3NldFZlcmJvc2VPcHRpb24KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFZlcmJvc2VPcHRpb24oKQotICB7Ci0gICAgcmV0dXJuIHRoaXMudmVyYm9zZTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlICNnZXRWZXJib3NlT3B0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRWZXJib3NlT3B0aW9uKGJvb2xlYW4gdmVyYm9zZSkKLSAgewotICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2U7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGFzc2VydGlvbiByZXN1bHRzIG9wdGlvbi4KLSAgICogQHNlZSAjc2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbgotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdHNPcHRpb24gZ2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5hc3NlcnRpb25SZXN1bHRzT3B0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBhc3NlcnRpb24gcmVzdWx0cyBvcHRpb24uCi0gICAqIEBzZWUgI2dldEFzc2VydGlvblJlc3VsdHNPcHRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEFzc2VydGlvblJlc3VsdHNPcHRpb24oQXNzZXJ0aW9uUmVzdWx0c09wdGlvbiBhc3NlcnRpb25SZXN1bHRzT3B0aW9uKQotICB7Ci0gICAgdGhpcy5hc3NlcnRpb25SZXN1bHRzT3B0aW9uID0gYXNzZXJ0aW9uUmVzdWx0c09wdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlICNzZXRSZXBvcnRMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSZXBvcnRMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5yZXBvcnRVUkk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSAjZ2V0UmVwb3J0TG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlcG9ydExvY2F0aW9uKFN0cmluZyByZXBvcnRVUkkpCi0gIHsKLSAgICB0aGlzLnJlcG9ydFVSSSA9IHJlcG9ydFVSSTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgcmVwbGFjZSByZXBvcnQgZmlsZSBvcHRpb24uCi0gICAqIEBzZWUgI3NldFJlcGxhY2VSZXBvcnQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFJlcGxhY2VSZXBvcnQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMucmVwbGFjZVJlcG9ydDsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgcmVwb3J0IGZpbGUgbG9jYXRpb24uCi0gICAqIEBzZWUgI2dldFJlcGxhY2VSZXBvcnQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlcGxhY2VSZXBvcnQoYm9vbGVhbiByZXBsYWNlUmVwb3J0KQotICB7Ci0gICAgdGhpcy5yZXBsYWNlUmVwb3J0ID0gcmVwbGFjZVJlcG9ydDsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgYWRkIHN0eWxlIHNoZWV0LgotICAgKiBAc2VlICNzZXRBZGRTdHlsZVNoZWV0Ci0gICAqLwotICBwdWJsaWMgQWRkU3R5bGVTaGVldCBnZXRBZGRTdHlsZVNoZWV0KCkKLSAgewotICAgIHJldHVybiB0aGlzLmFkZFN0eWxlU2hlZXQ7Ci0gIH0KLQotICAvKioKLSAgICogU2V0IHJlcGxhY2UgcmVwb3J0IGZpbGUgb3B0aW9uLgotICAgKiBAc2VlICNnZXRBZGRTdHlsZVNoZWV0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBZGRTdHlsZVNoZWV0KEFkZFN0eWxlU2hlZXQgYWRkU3R5bGVTaGVldCkKLSAgewotICAgIHRoaXMuYWRkU3R5bGVTaGVldCA9IGFkZFN0eWxlU2hlZXQ7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSAjc2V0VGVzdEFzc2VydGlvbkRvY3VtZW50TG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VGVzdEFzc2VydGlvbnNEb2N1bWVudExvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiB0aGlzLnRlc3RBc3NlcnRpb25zRG9jdW1lbnRVUkk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSAjZ2V0VGVzdEFzc2VydGlvbkRvY3VtZW50TG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRlc3RBc3NlcnRpb25zRG9jdW1lbnRMb2NhdGlvbihTdHJpbmcgdGVzdEFzc2VydGlvbnNEb2N1bWVudFVSSSkKLSAgewotICAgIHRoaXMudGVzdEFzc2VydGlvbnNEb2N1bWVudFVSSSA9IHRlc3RBc3NlcnRpb25zRG9jdW1lbnRVUkk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSAjc2V0TG9nTG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9nTG9jYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGxvZ1VSSTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlICNnZXRMb2dMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9nTG9jYXRpb24oU3RyaW5nIGxvZ1VSSSkKLSAgewotICAgIHRoaXMubG9nVVJJID0gbG9nVVJJOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNMb2dTZXQoKQotICB7Ci0gICAgcmV0dXJuIChsb2dVUkkgIT0gbnVsbCk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGNvcnJlbGF0aW9uIHR5cGUuCi0gICAqIEBzZWUgI3NldENvcnJlbGF0aW9uVHlwZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRDb3JyZWxhdGlvblR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuY29ycmVsYXRpb25UeXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBjb3JyZWxhdGlvbiB0eXBlLgotICAgKiBAc2VlICNnZXRDb3JyZWxhdGlvblR5cGUKLSAgICogCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb3JyZWxhdGlvblR5cGUoU3RyaW5nIGNvcnJlbGF0aW9uVHlwZSkKLSAgewotICAgIHRoaXMuY29ycmVsYXRpb25UeXBlID0gY29ycmVsYXRpb25UeXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIElzIFdTREwgcmVmZXJlbmNlIHNldC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzV1NETFJlZmVyZW5jZVNldCgpCi0gIHsKLSAgICByZXR1cm4gKHRoaXMud3NkbFJlZmVyZW5jZSA9PSBudWxsID8gZmFsc2UgOiB0cnVlKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgV1NETCByZWZlcmVuY2UuCi0gICAqIEBzZWUgI3NldFdTRExSZWZlcmVuY2UKLSAgICovCi0gIHB1YmxpYyBXU0RMUmVmZXJlbmNlIGdldFdTRExSZWZlcmVuY2UoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMud3NkbFJlZmVyZW5jZTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgV1NETCByZWZlcmVuY2UuCi0gICAqIEBzZWUgI2dldFdTRExSZWZlcmVuY2UKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdTRExSZWZlcmVuY2UoV1NETFJlZmVyZW5jZSB3c2RsUmVmZXJlbmNlKQotICB7Ci0gICAgdGhpcy53c2RsUmVmZXJlbmNlID0gd3NkbFJlZmVyZW5jZTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgV1NETCBlbGVtZW50LgotICAgKiAKLSAgICovCi0gIHB1YmxpYyBXU0RMRWxlbWVudCBnZXRXU0RMRWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gKHRoaXMud3NkbFJlZmVyZW5jZSA9PSBudWxsKQotICAgICAgPyBudWxsCi0gICAgICA6IHRoaXMud3NkbFJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBzZXJ2aWNlIGxvY2F0aW9uLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlTG9jYXRpb24oKQotICB7Ci0gICAgcmV0dXJuICh0aGlzLndzZGxSZWZlcmVuY2UgPT0gbnVsbCkKLSAgICAgID8gbnVsbAotICAgICAgOiB0aGlzLndzZGxSZWZlcmVuY2UuZ2V0U2VydmljZUxvY2F0aW9uKCk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnI2dldFdTRExMb2NhdGlvbigpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFdTRExMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gKHRoaXMud3NkbFJlZmVyZW5jZSA9PSBudWxsKQotICAgICAgPyBudWxsCi0gICAgICA6IHRoaXMud3NkbFJlZmVyZW5jZS5nZXRXU0RMTG9jYXRpb24oKTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy53c2kudGVzdC5hbmFseXplci5jb25maWcuQW5hbHl6ZXJDb25maWcjaXNVZGRpUmVmZXJlbmNlU2V0KQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNVRERJUmVmZXJlbmNlU2V0KCkKLSAgewotICAgIHJldHVybiAodGhpcy51ZGRpUmVmZXJlbmNlID09IG51bGwgPyBmYWxzZSA6IHRydWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBVRERJIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjc2V0VURESVJlZmVyZW5jZQotICAgKi8KLSAgcHVibGljIFVERElSZWZlcmVuY2UgZ2V0VURESVJlZmVyZW5jZSgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy51ZGRpUmVmZXJlbmNlOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBVRERJIHJlZmVyZW5jZS4KLSAgICogQHNlZSAjZ2V0VURESVJlZmVyZW5jZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VURESVJlZmVyZW5jZShVRERJUmVmZXJlbmNlIHVkZGlSZWZlcmVuY2UpCi0gIHsKLSAgICB0aGlzLnVkZGlSZWZlcmVuY2UgPSB1ZGRpUmVmZXJlbmNlOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgI3NldExvY2F0aW9uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldExvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiBjb25maWdVUkk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBnZXRMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9jYXRpb24oU3RyaW5nIGNvbmZpZ1VSSSkKLSAgewotICAgIHRoaXMuY29uZmlnVVJJID0gY29uZmlnVVJJOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LldTSURvY3VtZW50I3RvWE1MU3RyaW5nKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIC8vIFN0YXJ0IGVsZW1lbnQKLSAgICBwdy5wcmludGxuKCIgICAgPCIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiPiIpOwotCi0gICAgLy8gVmVyYm9zZSBvcHRpb24KLSAgICBwdy5wcmludCgiICAgICAgPCIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9WRVJCT1NFICsgIj4iKTsKLSAgICBwdy5wcmludChnZXRWZXJib3NlT3B0aW9uKCkpOwotICAgIHB3LnByaW50bG4oIjwvIiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX1ZFUkJPU0UgKyAiPiIpOwotCi0gICAgLy8gR2V0IGFzc2VydGlvbiByZXN1bHRzIG9wdGlvbgotICAgIHB3LnByaW50KGFzc2VydGlvblJlc3VsdHNPcHRpb24udG9YTUxTdHJpbmcobnNOYW1lKSk7Ci0KLSAgICAvLyByZXBvcnQgZmlsZQotICAgIHB3LnByaW50KCIgICAgICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fUkVQT1JUX0ZJTEUgKyAiICIpOwotICAgIHB3LnByaW50KFdTSUNvbnN0YW50cy5BVFRSX1JFUExBQ0UgKyAiPVwiIiArIGdldFJlcGxhY2VSZXBvcnQoKSArICJcIiAiKTsKLSAgICBwdy5wcmludGxuKAotICAgICAgV1NJQ29uc3RhbnRzLkFUVFJfTE9DQVRJT04gKyAiPVwiIiArIGdldFJlcG9ydExvY2F0aW9uKCkgKyAiXCI+Iik7Ci0gICAgcHcucHJpbnQoZ2V0QWRkU3R5bGVTaGVldCgpLnRvWE1MU3RyaW5nKG5hbWVzcGFjZU5hbWUpKTsKLSAgICBwdy5wcmludGxuKCIgICAgICAgIDwvIiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX1JFUE9SVF9GSUxFICsgIj4iKTsKLQotICAgIC8vIHRlc3QgYXNzZXJ0aW9uIGZpbGUKLSAgICBwdy5wcmludCgKLSAgICAgICIgICAgICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fVEVTVF9BU1NFUlRJT05TX0ZJTEUgKyAiPiIpOwotICAgIHB3LnByaW50KGdldFRlc3RBc3NlcnRpb25zRG9jdW1lbnRMb2NhdGlvbigpKTsKLSAgICBwdy5wcmludGxuKCI8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9URVNUX0FTU0VSVElPTlNfRklMRSArICI+Iik7Ci0KLSAgICAvLyBsb2cgZmlsZQotICAgIHB3LnByaW50KCIgICAgICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTE9HX0ZJTEUpOwotICAgIHB3LnByaW50KAotICAgICAgIiAiCi0gICAgICAgICsgV1NJQ29uc3RhbnRzLkFUVFJfQ09SUkVMQVRJT05fVFlQRQotICAgICAgICArICI9XCIiCi0gICAgICAgICsgdGhpcy5jb3JyZWxhdGlvblR5cGUKLSAgICAgICAgKyAiXCI+Iik7Ci0gICAgcHcucHJpbnQoZ2V0TG9nTG9jYXRpb24oKSk7Ci0gICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTE9HX0ZJTEUgKyAiPiIpOwotCi0gICAgLy8gV1NETCByZWZlcmVuY2UgCi0gICAgaWYgKHRoaXMud3NkbFJlZmVyZW5jZSAhPSBudWxsKQotICAgIHsKLSAgICAgIHB3LnByaW50KGdldFdTRExSZWZlcmVuY2UoKS50b1hNTFN0cmluZyhuc05hbWUpKTsKLSAgICB9Ci0KLSAgICAvLyBVRERJIFJlZmVyZW5jZQotICAgIGlmICh0aGlzLnVkZGlSZWZlcmVuY2UgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwdy5wcmludChnZXRVRERJUmVmZXJlbmNlKCkudG9YTUxTdHJpbmcobnNOYW1lKSk7Ci0gICAgfQotCi0gICAgLy8gRW5kIGVsZW1lbnQKLSAgICBwdy5wcmludGxuKCIgICAgPC8iICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIj4iKTsKLQotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICAvLyB2ZXJib3NlIG9wdGlvbgotICAgIHB3LnByaW50bG4oIiAgdmVyYm9zZSAuLi4uLi4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy52ZXJib3NlKTsKLQotICAgIC8vIGFzc2VydGlvblJlc3VsdHMgb3B0aW9ucwotICAgIHB3LnByaW50KHRoaXMuYXNzZXJ0aW9uUmVzdWx0c09wdGlvbi50b1N0cmluZygpKTsKLQotICAgIC8vIHJlcG9ydEZpbGUgb3B0aW9ucwotICAgIHB3LnByaW50bG4oIiAgUmVwb3J0IEZpbGU6Iik7Ci0gICAgcHcucHJpbnRsbigiICAgIHJlcGxhY2UgLi4uLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLnJlcGxhY2VSZXBvcnQpOwotICAgIHB3LnByaW50bG4oIiAgICBsb2NhdGlvbiAuLi4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy5yZXBvcnRVUkkpOwotICAgIGlmICh0aGlzLmFkZFN0eWxlU2hlZXQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwdy5wcmludGxuKCIgICAgU3R5bGUgU2hlZXQ6Iik7Ci0gICAgICBpZiAodGhpcy5hZGRTdHlsZVNoZWV0LmdldEhyZWYoKSAhPSBudWxsKQotICAgICAgICBwdy5wcmludGxuKAotICAgICAgICAgICIgICAgICBocmVmIC4uLi4uLi4uLi4uLi4uLi4uLi4gIiArIHRoaXMuYWRkU3R5bGVTaGVldC5nZXRIcmVmKCkpOwotICAgICAgaWYgKHRoaXMuYWRkU3R5bGVTaGVldC5nZXRUeXBlKCkgIT0gbnVsbCkKLSAgICAgICAgcHcucHJpbnRsbigKLSAgICAgICAgICAiICAgICAgdHlwZSAuLi4uLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLmFkZFN0eWxlU2hlZXQuZ2V0VHlwZSgpKTsKLSAgICAgIGlmICh0aGlzLmFkZFN0eWxlU2hlZXQuZ2V0VGl0bGUoKSAhPSBudWxsKQotICAgICAgICBwdy5wcmludGxuKAotICAgICAgICAgICIgICAgICB0aXRsZSAuLi4uLi4uLi4uLi4uLi4uLi4gIiArIHRoaXMuYWRkU3R5bGVTaGVldC5nZXRUaXRsZSgpKTsKLSAgICAgIGlmICh0aGlzLmFkZFN0eWxlU2hlZXQuZ2V0TWVkaWEoKSAhPSBudWxsKQotICAgICAgICBwdy5wcmludGxuKAotICAgICAgICAgICIgICAgICBtZWRpYSAuLi4uLi4uLi4uLi4uLi4uLi4gIiArIHRoaXMuYWRkU3R5bGVTaGVldC5nZXRNZWRpYSgpKTsKLSAgICAgIGlmICh0aGlzLmFkZFN0eWxlU2hlZXQuZ2V0Q2hhcnNldCgpICE9IG51bGwpCi0gICAgICAgIHB3LnByaW50bG4oCi0gICAgICAgICAgIiAgICAgIGNoYXJzZXQgLi4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy5hZGRTdHlsZVNoZWV0LmdldENoYXJzZXQoKSk7Ci0gICAgICBpZiAodGhpcy5hZGRTdHlsZVNoZWV0LmdldEFsdGVybmF0ZSgpICE9IG51bGwpCi0gICAgICAgIHB3LnByaW50bG4oCi0gICAgICAgICAgIiAgICAgIGFsdGVybmF0ZSAuLi4uLi4uLi4uLi4uLiAiCi0gICAgICAgICAgICArIHRoaXMuYWRkU3R5bGVTaGVldC5nZXRBbHRlcm5hdGUoKSk7Ci0gICAgfQotCi0gICAgLy8gdGVzdEFzc2VydGlvbnNGaWxlIHBhcmFtZXRlcgotICAgIHB3LnByaW50bG4oCi0gICAgICAiICB0ZXN0QXNzZXJ0aW9uc0ZpbGUgLi4uLi4uLi4uICIgKyB0aGlzLnRlc3RBc3NlcnRpb25zRG9jdW1lbnRVUkkpOwotCi0gICAgLy8gbG9nRmlsZSBvcHRpb25zCi0gICAgaWYgKHRoaXMubG9nVVJJICE9IG51bGwpCi0gICAgewotICAgICAgcHcucHJpbnRsbigiICBNZXNzYWdlIExvZyBGaWxlOiIpOwotICAgICAgcHcucHJpbnRsbigiICAgIGxvY2F0aW9uIC4uLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLmxvZ1VSSSk7Ci0gICAgICBwdy5wcmludGxuKCIgICAgY29ycmVsYXRpb25UeXBlIC4uLi4uLi4uLi4gIiArIHRoaXMuY29ycmVsYXRpb25UeXBlKTsKLSAgICB9Ci0KLSAgICAvLyB3c2RsUmVmZXJlbmNlIG9wdGlvbnMgICAKLSAgICBpZiAodGhpcy5pc1dTRExSZWZlcmVuY2VTZXQoKSkKLSAgICB7Ci0gICAgICBwdy5wcmludCh0aGlzLndzZGxSZWZlcmVuY2UudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgLy8gdWRkaVJlZmVyZW5jZSBvcHRpb25zCi0gICAgaWYgKHRoaXMuaXNVRERJUmVmZXJlbmNlU2V0KCkpCi0gICAgewotICAgICAgcHcucHJpbnQodGhpcy51ZGRpUmVmZXJlbmNlLnRvU3RyaW5nKCkpOwotICAgIH0KLQotICAgIC8vIGRlc2NyaXB0aW9uIHBhcmFtZXRlcgotICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgcHcucHJpbnRsbigiICBkZXNjcmlwdGlvbiAuLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLmRlc2NyaXB0aW9uKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgY29uZmlnIHZhbHVlcyBmcm9tIGFub3RoZXIgYW5hbHl6ZXIgY29uZmlnIG9iamVjdC4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBzZXRDb25maWcoQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcpCi0gIHsKLSAgICB0aGlzLmNvbmZpZ1VSSSA9IGFuYWx5emVyQ29uZmlnLmdldExvY2F0aW9uKCk7Ci0gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGFuYWx5emVyQ29uZmlnLmdldERlc2NyaXB0aW9uKCk7Ci0gICAgdGhpcy52ZXJib3NlID0gYW5hbHl6ZXJDb25maWcuZ2V0VmVyYm9zZU9wdGlvbigpOwotICAgIHRoaXMuYXNzZXJ0aW9uUmVzdWx0c09wdGlvbiA9IGFuYWx5emVyQ29uZmlnLmdldEFzc2VydGlvblJlc3VsdHNPcHRpb24oKTsKLSAgICB0aGlzLnJlcG9ydFVSSSA9IGFuYWx5emVyQ29uZmlnLmdldFJlcG9ydExvY2F0aW9uKCk7Ci0gICAgdGhpcy5yZXBsYWNlUmVwb3J0ID0gYW5hbHl6ZXJDb25maWcuZ2V0UmVwbGFjZVJlcG9ydCgpOwotICAgIHRoaXMubG9nVVJJID0gYW5hbHl6ZXJDb25maWcuZ2V0TG9nTG9jYXRpb24oKTsKLSAgICB0aGlzLmNvcnJlbGF0aW9uVHlwZSA9IGFuYWx5emVyQ29uZmlnLmdldENvcnJlbGF0aW9uVHlwZSgpOwotICAgIHRoaXMudGVzdEFzc2VydGlvbnNEb2N1bWVudFVSSSA9Ci0gICAgICBhbmFseXplckNvbmZpZy5nZXRUZXN0QXNzZXJ0aW9uc0RvY3VtZW50TG9jYXRpb24oKTsKLSAgICB0aGlzLmFkZFN0eWxlU2hlZXQgPSBhbmFseXplckNvbmZpZy5nZXRBZGRTdHlsZVNoZWV0KCk7Ci0gICAgdGhpcy53c2RsUmVmZXJlbmNlID0gYW5hbHl6ZXJDb25maWcuZ2V0V1NETFJlZmVyZW5jZSgpOwotICAgIHRoaXMudWRkaVJlZmVyZW5jZSA9IGFuYWx5emVyQ29uZmlnLmdldFVERElSZWZlcmVuY2UoKTsKLSAgfQotCi0gIC8qKgotICAgKiBQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgotICAgKi8KLSAgcHVibGljIHZvaWQgcGFyc2VBcmdzKFN0cmluZ1tdIGFyZ3MsIGJvb2xlYW4gdmFsaWRhdGUpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIFdTRExSZWZlcmVuY2Ugd3NkbFJlZmVyZW5jZSA9IG51bGw7Ci0gICAgVURESVJlZmVyZW5jZSB1ZGRpUmVmZXJlbmNlID0gbnVsbDsKLQotICAgIC8vIEdldCBuZXcgY29uZmlnIHJlYWRlcgotICAgIEFuYWx5emVyQ29uZmlnUmVhZGVyIGFuYWx5emVyQ29uZmlnUmVhZGVyID0gbmV3IEFuYWx5emVyQ29uZmlnUmVhZGVySW1wbCgpOwotICAgIGFuYWx5emVyQ29uZmlnUmVhZGVyLmluaXQodGhpcy5tZXNzYWdlTGlzdCk7Ci0KLSAgICAvLyBBbmFseXplciBjb25maWcgb2JqZWN0IHdoaWNoIHdpbGwgYmUgbWVyZ2VkIGFmdGVyIGFsbCBvZiB0aGUgaW5wdXQgcGFybXMgYXJlIHByb2Nlc3NlZAotICAgIEFuYWx5emVyQ29uZmlnIGFuYWx5emVyQ29uZmlnRnJvbUFyZ3MgPSBudWxsOwotCi0gICAgLy8gQXNzZXJ0aW9uIHJlc3VsdHMgb3B0aW9uCi0gICAgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbiBhc3NlcnRpb25SZXN1bHRzT3B0aW9uID0gbnVsbDsKLQotICAgIC8vIElmIG5vIGlucHV0IGFyZ3VtZW50cywgdGhlbiB0aHJvdyBleGNlcHRpb24KLSAgICBpZiAoYXJncy5sZW5ndGggPT0gMCkKLSAgICB7Ci0gICAgICAvLyBBREQ6IAotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgZ2V0TWVzc2FnZSgidXNhZ2UwMSIsIEFuYWx5emVyLlVTQUdFX01FU1NBR0UpKTsKLSAgICB9Ci0KLSAgICAvLyBQYXJzZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byBsb2NhdGUgdGhlIGNvbmZpZyBmaWxlIG9wdGlvbiAoaWYgaXQgd2FzIHNwZWNpZmllZCkKLSAgICBmb3IgKGludCBhcmdDb3VudCA9IDA7IGFyZ0NvdW50IDwgYXJncy5sZW5ndGg7IGFyZ0NvdW50KyspCi0gICAgewotICAgICAgLy8gLWNvbmZpZwotICAgICAgaWYgKChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItY29uZmlnIikpCi0gICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1jIikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBhbmFseXplckNvbmZpZ0Zyb21BcmdzID0KLSAgICAgICAgICBhbmFseXplckNvbmZpZ1JlYWRlci5yZWFkQW5hbHl6ZXJDb25maWcoCi0gICAgICAgICAgICBnZXRPcHRpb25WYWx1ZShhcmdzLCBhcmdDb3VudCkpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIGNvbmZpZyBmaWxlIHdhcyBub3Qgc3BlY2lmaWVkLCB0aGVuIGNyZWF0ZSBhbmFseXplciBjb25maWcgb2JqZWN0Ci0gICAgaWYgKGFuYWx5emVyQ29uZmlnRnJvbUFyZ3MgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBhbmFseXplckNvbmZpZ0Zyb21BcmdzID0gbmV3IEFuYWx5emVyQ29uZmlnSW1wbCgpOwotICAgICAgYW5hbHl6ZXJDb25maWdGcm9tQXJncy5pbml0KHRoaXMubWVzc2FnZUxpc3QpOwotICAgIH0KLQotICAgIC8vIEdldCBhc3NlcnRpb24gcmVzdWx0cyBvcHRpb24KLSAgICBpZiAoKGFzc2VydGlvblJlc3VsdHNPcHRpb24gPQotICAgICAgYW5hbHl6ZXJDb25maWdGcm9tQXJncy5nZXRBc3NlcnRpb25SZXN1bHRzT3B0aW9uKCkpCi0gICAgICA9PSBudWxsKQotICAgIHsKLSAgICAgIGFzc2VydGlvblJlc3VsdHNPcHRpb24gPSBuZXcgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbkltcGwoKTsKLSAgICAgIGFuYWx5emVyQ29uZmlnRnJvbUFyZ3Muc2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbihhc3NlcnRpb25SZXN1bHRzT3B0aW9uKTsKLSAgICB9Ci0KLSAgICAvLyBQYXJzZSBhbGwgb2YgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKLSAgICBmb3IgKGludCBhcmdDb3VudCA9IDA7IGFyZ0NvdW50IDwgYXJncy5sZW5ndGg7IGFyZ0NvdW50KyspCi0gICAgewotICAgICAgLy8gLWNvbmZpZwotICAgICAgaWYgKChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItY29uZmlnIikpCi0gICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1jIikpKQotICAgICAgewotICAgICAgICAvLyBTa2lwIHRoaXMgb3B0aW9uIHNpbmNlIGl0IHdhcyBhbHJlYWR5IHByb2Nlc3NlZAotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgfQotCi0gICAgICAvLyAtdmVyYm9zZQotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItdmVyYm9zZSIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi12IikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBhbmFseXplckNvbmZpZ0Zyb21BcmdzLnNldFZlcmJvc2VPcHRpb24oCi0gICAgICAgICAgQm9vbGVhbi52YWx1ZU9mKGdldE9wdGlvblZhbHVlKGFyZ3MsIGFyZ0NvdW50KSkuYm9vbGVhblZhbHVlKCkpOwotICAgICAgfQotCi0gICAgICAvLyAtYXNzZXJ0aW9uUmVzdWx0cwotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItYXNzZXJ0aW9uUmVzdWx0cyIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1hIikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBhc3NlcnRpb25SZXN1bHRzT3B0aW9uLnNldEFzc2VydGlvblJlc3VsdFR5cGUoCi0gICAgICAgICAgQXNzZXJ0aW9uUmVzdWx0VHlwZS5uZXdJbnN0YW5jZShnZXRPcHRpb25WYWx1ZShhcmdzLCBhcmdDb3VudCkpKTsKLSAgICAgIH0KLQotICAgICAgLy8gLW1lc3NhZ2VFbnRyeQotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItbWVzc2FnZUVudHJ5IikpCi0gICAgICAgICAgfHwgKGFyZ3NbYXJnQ291bnRdLmVxdWFscygiLU0iKSkpCi0gICAgICB7Ci0gICAgICAgIGFyZ0NvdW50Kys7Ci0gICAgICAgIGFzc2VydGlvblJlc3VsdHNPcHRpb24uc2V0U2hvd01lc3NhZ2VFbnRyeSgKLSAgICAgICAgICBCb29sZWFuLnZhbHVlT2YoZ2V0T3B0aW9uVmFsdWUoYXJncywgYXJnQ291bnQpKS5ib29sZWFuVmFsdWUoKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIC1hc3NlcnRpb25EZXNjcmlwdGlvbgotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItYXNzZXJ0aW9uRGVzY3JpcHRpb24iKSkKLSAgICAgICAgICB8fCAoYXJnc1thcmdDb3VudF0uZXF1YWxzKCItQSIpKSkKLSAgICAgIHsKLSAgICAgICAgYXJnQ291bnQrKzsKLSAgICAgICAgYXNzZXJ0aW9uUmVzdWx0c09wdGlvbi5zZXRTaG93QXNzZXJ0aW9uRGVzY3JpcHRpb24oCi0gICAgICAgICAgQm9vbGVhbi52YWx1ZU9mKGFyZ3NbYXJnQ291bnRdKS5ib29sZWFuVmFsdWUoKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIC1mYWlsdXJlTWVzc2FnZQotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItZmFpbHVyZU1lc3NhZ2UiKSkKLSAgICAgICAgICB8fCAoYXJnc1thcmdDb3VudF0uZXF1YWxzKCItRiIpKSkKLSAgICAgIHsKLSAgICAgICAgYXJnQ291bnQrKzsKLSAgICAgICAgYXNzZXJ0aW9uUmVzdWx0c09wdGlvbi5zZXRTaG93RmFpbHVyZU1lc3NhZ2UoCi0gICAgICAgICAgQm9vbGVhbi52YWx1ZU9mKGdldE9wdGlvblZhbHVlKGFyZ3MsIGFyZ0NvdW50KSkuYm9vbGVhblZhbHVlKCkpOwotICAgICAgfQotCi0gICAgICAvLyAtZmFpbHVyZURldGFpbAotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItZmFpbHVyZURldGFpbCIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1EIikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBhc3NlcnRpb25SZXN1bHRzT3B0aW9uLnNldFNob3dGYWlsdXJlRGV0YWlsKAotICAgICAgICAgIEJvb2xlYW4udmFsdWVPZihnZXRPcHRpb25WYWx1ZShhcmdzLCBhcmdDb3VudCkpLmJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgIH0KLQotICAgICAgLy8gLWxvZ0ZpbGUKLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAoYXJnc1thcmdDb3VudF0uZXF1YWxzSWdub3JlQ2FzZSgiLWxvZ0ZpbGUiKSkKLSAgICAgICAgICB8fCAoYXJnc1thcmdDb3VudF0uZXF1YWxzKCItbCIpKSkKLSAgICAgIHsKLSAgICAgICAgYXJnQ291bnQrKzsKLSAgICAgICAgYW5hbHl6ZXJDb25maWdGcm9tQXJncy5zZXRMb2dMb2NhdGlvbihnZXRPcHRpb25WYWx1ZShhcmdzLCBhcmdDb3VudCkpOwotICAgICAgfQotCi0gICAgICAvLyAtdGVzdEFzc2VydGlvbkZpbGUKLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAoYXJnc1thcmdDb3VudF0uZXF1YWxzSWdub3JlQ2FzZSgiLXRlc3RBc3NlcnRpb25GaWxlIikpCi0gICAgICAgICAgfHwgKGFyZ3NbYXJnQ291bnRdLmVxdWFscygiLXQiKSkpCi0gICAgICB7Ci0gICAgICAgIGFyZ0NvdW50Kys7Ci0gICAgICAgIGFuYWx5emVyQ29uZmlnRnJvbUFyZ3Muc2V0VGVzdEFzc2VydGlvbnNEb2N1bWVudExvY2F0aW9uKAotICAgICAgICAgIGdldE9wdGlvblZhbHVlKGFyZ3MsIGFyZ0NvdW50KSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIC1yZXBvcnRGaWxlCi0gICAgICBlbHNlIGlmICgKLSAgICAgICAgKGFyZ3NbYXJnQ291bnRdLmVxdWFsc0lnbm9yZUNhc2UoIi1yZXBvcnRGaWxlIikpCi0gICAgICAgICAgfHwgKGFyZ3NbYXJnQ291bnRdLmVxdWFscygiLXIiKSkpCi0gICAgICB7Ci0gICAgICAgIGFyZ0NvdW50Kys7Ci0gICAgICAgIGFuYWx5emVyQ29uZmlnRnJvbUFyZ3Muc2V0UmVwb3J0TG9jYXRpb24oCi0gICAgICAgICAgZ2V0T3B0aW9uVmFsdWUoYXJncywgYXJnQ291bnQpKTsKLSAgICAgIH0KLQotICAgICAgLy8gLXJlcGxhY2UKLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAoYXJnc1thcmdDb3VudF0uZXF1YWxzSWdub3JlQ2FzZSgiLXJlcGxhY2UiKSkKLSAgICAgICAgICB8fCAoYXJnc1thcmdDb3VudF0uZXF1YWxzKCItUiIpKSkKLSAgICAgIHsKLSAgICAgICAgYXJnQ291bnQrKzsKLSAgICAgICAgYW5hbHl6ZXJDb25maWdGcm9tQXJncy5zZXRSZXBsYWNlUmVwb3J0KAotICAgICAgICAgIEJvb2xlYW4udmFsdWVPZihnZXRPcHRpb25WYWx1ZShhcmdzLCBhcmdDb3VudCkpLmJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgIH0KLQotICAgICAgLy8gLWNvcnJlbGF0aW9uVHlwZQotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItY29ycmVsYXRpb25UeXBlIikpCi0gICAgICAgICAgfHwgKGFyZ3NbYXJnQ291bnRdLmVxdWFscygiLUMiKSkpCi0gICAgICB7Ci0gICAgICAgIGFyZ0NvdW50Kys7Ci0gICAgICAgIGFuYWx5emVyQ29uZmlnRnJvbUFyZ3Muc2V0Q29ycmVsYXRpb25UeXBlKAotICAgICAgICAgIGdldE9wdGlvblZhbHVlKGFyZ3MsIGFyZ0NvdW50KSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIC13c2RsRWxlbWVudAotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItd3NkbEVsZW1lbnQiKSkKLSAgICAgICAgICB8fCAoYXJnc1thcmdDb3VudF0uZXF1YWxzKCItVyIpKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG9wdGlvbk5hbWUgPSBhcmdzW2FyZ0NvdW50XTsKLSAgICAgICAgYXJnQ291bnQrKzsKLQotICAgICAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IG5ldyBXU0RMRWxlbWVudEltcGwoKTsKLSAgICAgICAgd3NkbEVsZW1lbnQuc2V0TmFtZShnZXRPcHRpb25WYWx1ZShhcmdzLCBhcmdDb3VudCwgb3B0aW9uTmFtZSkpOwotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICB3c2RsRWxlbWVudC5zZXRUeXBlKGdldE9wdGlvblZhbHVlKGFyZ3MsIGFyZ0NvdW50LCBvcHRpb25OYW1lKSk7Ci0gICAgICAgIGFyZ0NvdW50Kys7Ci0gICAgICAgIHdzZGxFbGVtZW50LnNldE5hbWVzcGFjZShnZXRPcHRpb25WYWx1ZShhcmdzLCBhcmdDb3VudCwgb3B0aW9uTmFtZSkpOwotICAgICAgICBpZiAoIWFyZ3NbYXJnQ291bnRdLnN0YXJ0c1dpdGgoIi0iKSkKLSAgICAgICAgewotICAgICAgICAgIGFyZ0NvdW50Kys7Ci0gICAgICAgICAgd3NkbEVsZW1lbnQuc2V0UGFyZW50RWxlbWVudE5hbWUoCi0gICAgICAgICAgICBnZXRPcHRpb25WYWx1ZShhcmdzLCBhcmdDb3VudCwgb3B0aW9uTmFtZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHdzZGxSZWZlcmVuY2UgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHdzZGxSZWZlcmVuY2Uuc2V0V1NETEVsZW1lbnQod3NkbEVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHVkZGlSZWZlcmVuY2UgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHVkZGlSZWZlcmVuY2Uuc2V0V1NETEVsZW1lbnQod3NkbEVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICAgICAiY29uZmlnMTAiLAotICAgICAgICAgICAgICAiVGhlIC13c2RsRWxlbWVudCBvcHRpb24gbXVzdCBhcHBlYXIgYWZ0ZXIgdGhlIC13c2RsVVJJIG9yIC11ZGRpS2V5IG9wdGlvbnMuIikpOwotICAgICAgICB9Ci0KLSAgICAgICAgYW5hbHl6ZXJDb25maWdGcm9tQXJncy5zZXRXU0RMUmVmZXJlbmNlKHdzZGxSZWZlcmVuY2UpOwotICAgICAgfQotCi0gICAgICAvLyAtc2VydmljZUxvY2F0aW9uCi0gICAgICBlbHNlIGlmICgKLSAgICAgICAgKGFyZ3NbYXJnQ291bnRdLmVxdWFsc0lnbm9yZUNhc2UoIi1zZXJ2aWNlTG9jYXRpb24iKSkKLSAgICAgICAgICB8fCAoYXJnc1thcmdDb3VudF0uZXF1YWxzKCItUyIpKSkKLSAgICAgIHsKLSAgICAgICAgYXJnQ291bnQrKzsKLQotICAgICAgICBpZiAod3NkbFJlZmVyZW5jZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgd3NkbFJlZmVyZW5jZS5zZXRTZXJ2aWNlTG9jYXRpb24oZ2V0T3B0aW9uVmFsdWUoYXJncywgYXJnQ291bnQpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh1ZGRpUmVmZXJlbmNlICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICB1ZGRpUmVmZXJlbmNlLnNldFNlcnZpY2VMb2NhdGlvbihnZXRPcHRpb25WYWx1ZShhcmdzLCBhcmdDb3VudCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICAgICAiY29uZmlnMTEiLAotICAgICAgICAgICAgICAiVGhlIC1zZXJ2aWNlTG9jYXRpb24gb3B0aW9uIG11c3QgYXBwZWFyIGFmdGVyIHRoZSAtd3NkbFVSSSBvciAtdWRkaUtleSBvcHRpb25zLiIpKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyAtd3NkbFVSSQotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItd3NkbFVSSSIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1XIikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBpZiAod3NkbFJlZmVyZW5jZSA9PSBudWxsKQotICAgICAgICAgIHdzZGxSZWZlcmVuY2UgPSBuZXcgV1NETFJlZmVyZW5jZUltcGwoKTsKLSAgICAgICAgd3NkbFJlZmVyZW5jZS5zZXRXU0RMTG9jYXRpb24oZ2V0T3B0aW9uVmFsdWUoYXJncywgYXJnQ291bnQpKTsKLSAgICAgICAgYW5hbHl6ZXJDb25maWdGcm9tQXJncy5zZXRXU0RMUmVmZXJlbmNlKHdzZGxSZWZlcmVuY2UpOwotICAgICAgfQotCi0gICAgICAvLyAtdWRkaUtleVR5cGUKLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAoYXJnc1thcmdDb3VudF0uZXF1YWxzSWdub3JlQ2FzZSgiLXVkZGlLZXlUeXBlIikpCi0gICAgICAgICAgfHwgKGFyZ3NbYXJnQ291bnRdLmVxdWFscygiLUsiKSkpCi0gICAgICB7Ci0gICAgICAgIGFyZ0NvdW50Kys7Ci0gICAgICAgIGlmICh1ZGRpUmVmZXJlbmNlID09IG51bGwpCi0gICAgICAgICAgdWRkaVJlZmVyZW5jZSA9IG5ldyBVRERJUmVmZXJlbmNlSW1wbCgpOwotICAgICAgICB1ZGRpUmVmZXJlbmNlLnNldEtleVR5cGUoZ2V0T3B0aW9uVmFsdWUoYXJncywgYXJnQ291bnQpKTsKLSAgICAgICAgYW5hbHl6ZXJDb25maWdGcm9tQXJncy5zZXRVRERJUmVmZXJlbmNlKHVkZGlSZWZlcmVuY2UpOwotICAgICAgfQotCi0gICAgICAvLyAtdWRkaUtleQotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItdWRkaUtleSIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1rIikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBpZiAodWRkaVJlZmVyZW5jZSA9PSBudWxsKQotICAgICAgICAgIHVkZGlSZWZlcmVuY2UgPSBuZXcgVURESVJlZmVyZW5jZUltcGwoKTsKLSAgICAgICAgdWRkaVJlZmVyZW5jZS5zZXRLZXkoZ2V0T3B0aW9uVmFsdWUoYXJncywgYXJnQ291bnQpKTsKLSAgICAgICAgYW5hbHl6ZXJDb25maWdGcm9tQXJncy5zZXRVRERJUmVmZXJlbmNlKHVkZGlSZWZlcmVuY2UpOwotICAgICAgfQotCi0gICAgICAvLyAtaW5xdWlyeVVSTAotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItaW5xdWlyeVVSTCIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1pIikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBpZiAodWRkaVJlZmVyZW5jZSA9PSBudWxsKQotICAgICAgICAgIHVkZGlSZWZlcmVuY2UgPSBuZXcgVURESVJlZmVyZW5jZUltcGwoKTsKLSAgICAgICAgdWRkaVJlZmVyZW5jZS5zZXRJbnF1aXJ5VVJMKGdldE9wdGlvblZhbHVlKGFyZ3MsIGFyZ0NvdW50KSk7Ci0gICAgICAgIGFuYWx5emVyQ29uZmlnRnJvbUFyZ3Muc2V0VURESVJlZmVyZW5jZSh1ZGRpUmVmZXJlbmNlKTsKLSAgICAgIH0KLQotICAgICAgLy8gQUREOiBOZWVkIHRvIGFkZCBzdXBwb3J0IGZvciBvdGhlciBvcHRpb25zICgtY29uZmlnLCAtYmluZGluZywgZXRjLikKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICAgImNvbmZpZzEyIiwKLSAgICAgICAgICAgIGFyZ3NbYXJnQ291bnRdLAotICAgICAgICAgICAgIlRoZSBzcGVjaWZpZWQgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQ6IikpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIGFkZFN0eWxlU2hlZXQgd2FzIG5vdCBzcGVjaWZpZWQsIHRoZW4gY3JlYXRlIGEgY29tbWVudCB2ZXJzaW9uIG9mIGl0Ci0gICAgaWYgKGFuYWx5emVyQ29uZmlnRnJvbUFyZ3MuZ2V0QWRkU3R5bGVTaGVldCgpID09IG51bGwpCi0gICAgewotICAgICAgQWRkU3R5bGVTaGVldCBhZGRTdHlsZVNoZWV0ID0gbmV3IEFkZFN0eWxlU2hlZXRJbXBsKCk7Ci0gICAgICBhZGRTdHlsZVNoZWV0LnNldEhyZWYoV1NJQ29uc3RhbnRzLkRFRkFVTFRfUkVQT1JUX1hTTCk7Ci0gICAgICBhZGRTdHlsZVNoZWV0LnNldFR5cGUoV1NJQ29uc3RhbnRzLkRFRkFVTFRfWFNMX1RZUEUpOwotICAgICAgYWRkU3R5bGVTaGVldC5zZXRDb21tZW50KHRydWUpOwotICAgICAgYW5hbHl6ZXJDb25maWdGcm9tQXJncy5zZXRBZGRTdHlsZVNoZWV0KGFkZFN0eWxlU2hlZXQpOwotICAgIH0KLQotICAgIC8vIE1lcmdlIGNvbmZpZyBpbmZvIGludG8gdGhpcyBvYmplY3QKLSAgICBzZXRDb25maWcoYW5hbHl6ZXJDb25maWdGcm9tQXJncyk7Ci0KLSAgICBpZiAodmFsaWRhdGUpCi0gICAgeyAgCi0gICAgICAvLyBWZXJpZnkgdGhhdCBhbGwgcmVxdWlyZWQgb3B0aW9ucyB3ZXJlIHNwZWNpZmllZCBhbmQgCi0gICAgICAvLyB0aGF0IHRoZSBzcGVjaWZpZWQgb25lcyB3ZXJlIGNvcnJlY3QKLSAgICAgIGNoZWNrQ29uZmlnT3B0aW9ucygpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBWZXJpZnkgY29uZmlnIG9wdGlvbnMuCi0gICAqLwotICBwcml2YXRlIHZvaWQgY2hlY2tDb25maWdPcHRpb25zKCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIGZpbGVMb2NhdGlvbjsKLQotICAgIC8vIElmIHdzZGxSZWZlcmVuY2UgYW5kIHVkZGlSZWZlcmVuY2Ugc3BlY2lmaWVkLCB0aGVuIHRocm93IGV4Y2VwdGlvbgotICAgIGlmICgodGhpcy5pc1dTRExSZWZlcmVuY2VTZXQoKSkgJiYgKHRoaXMuaXNVRERJUmVmZXJlbmNlU2V0KCkpKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgImNvbmZpZzA0IiwKLSAgICAgICAgICAiQ2FuIG5vdCBzcGVjaWZ5IGJvdGggdGhlIFdTREwgcmVmZXJlbmNlIGFuZCBVRERJIHJlZmVyZW5jZSBvcHRpb25zIikpOwotICAgIH0KLQotICAgIC8vIENoZWNrIGlmIHRlc3QgYXNzZXJ0aW9uIGZpbGUgZXhpc3RzCi0gICAgaWYgKChmaWxlTG9jYXRpb24gPSB0aGlzLmdldFRlc3RBc3NlcnRpb25zRG9jdW1lbnRMb2NhdGlvbigpKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgImNvbmZpZzE2IiwKLSAgICAgICAgICAiVGVzdCBhc3NlcnRpb24gZG9jdW1lbnQgbG9jYXRpb24gbXVzdCBiZSBzcGVjaWZpZWQuIikpOwotICAgIH0KLQotICAgIGVsc2UgaWYgKCFVdGlscy5maWxlRXhpc3RzKGZpbGVMb2NhdGlvbikpCi0gICAgewotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiY29uZmlnMTQiLAotICAgICAgICAgIGZpbGVMb2NhdGlvbiwKLSAgICAgICAgICAiQ291bGQgbm90IGZpbmQgdGVzdCBhc3NlcnRpb24gZG9jdW1lbnQuICBTcGVjaWZpZWQgZmlsZSBsb2NhdGlvbjoiKSk7Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgaWYgbG9nIGZpbGUgZXhpc3RzCi0gICAgaWYgKChmaWxlTG9jYXRpb24gPSB0aGlzLmdldExvZ0xvY2F0aW9uKCkpICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKCFVdGlscy5maWxlRXhpc3RzKGZpbGVMb2NhdGlvbikpCi0gICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICAgbWVzc2FnZUxpc3QuZ2V0TWVzc2FnZSgKLSAgICAgICAgICAgICJjb25maWcwMiIsCi0gICAgICAgICAgICBmaWxlTG9jYXRpb24sCi0gICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgbG9nIGZpbGU6IikpOwotICAgIH0KLQotICAgIC8vIENoZWNrIGlmIFdTREwgZmlsZSBleGlzdHMKLSAgICBpZiAoKHRoaXMuZ2V0V1NETFJlZmVyZW5jZSgpICE9IG51bGwpCi0gICAgICAmJiAoZmlsZUxvY2F0aW9uID0gdGhpcy5nZXRXU0RMUmVmZXJlbmNlKCkuZ2V0V1NETExvY2F0aW9uKCkpICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKCFVdGlscy5maWxlRXhpc3RzKGZpbGVMb2NhdGlvbikpCi0gICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICAgbWVzc2FnZUxpc3QuZ2V0TWVzc2FnZSgKLSAgICAgICAgICAgICJjb25maWcwMyIsCi0gICAgICAgICAgICBmaWxlTG9jYXRpb24sCi0gICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgV1NETCBmaWxlOiIpKTsKLSAgICB9Ci0KLSAgICBGaWxlIGZpbGUgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIEdldCBmaWxlIG9iamVjdCBmb3IgcmVwb3J0IGZpbGUKLSAgICAgIGZpbGUgPSBuZXcgRmlsZSh0aGlzLmdldFJlcG9ydExvY2F0aW9uKCkpOwotICAgIH0KLQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICBtZXNzYWdlTGlzdC5nZXRNZXNzYWdlKAotICAgICAgICAgICJjb25maWcxNyIsCi0gICAgICAgICAgIkNvdWxkIG5vdCBnZXQgcmVwb3J0IGZpbGUgbG9jYXRpb24uIikpOwotICAgIH0KLQotICAgIC8vIElmIHJlcGxhY2UgZmxhZyBpcyBmYWxzZSBhbmQgZmlsZSBleGlzdHMsIHRoZW4gdGhyb3cgZXhjZXB0aW9uCi0gICAgaWYgKGZpbGUuZXhpc3RzKCkgJiYgIXRoaXMuZ2V0UmVwbGFjZVJlcG9ydCgpKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgIG1lc3NhZ2VMaXN0LmdldE1lc3NhZ2UoCi0gICAgICAgICAgImNvbmZpZzE1IiwKLSAgICAgICAgICAiUmVwb3J0IGZpbGUgYWxyZWFkeSBleGlzdHMgYW5kIHJlcGxhY2Ugb3B0aW9uIHdhcyBub3Qgc3BlY2lmaWVkLiIpKTsKLSAgICB9Ci0KLSAgICBpZiAoY29ycmVsYXRpb25UeXBlICE9IG51bGwKLSAgICAgICYmICF0aGlzLmNvcnJlbGF0aW9uVHlwZS5lcXVhbHMoCi0gICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX0NPUlJFTEFUSU9OX1RZUEVfRU5EUE9JTlQpCi0gICAgICAmJiAhdGhpcy5jb3JyZWxhdGlvblR5cGUuZXF1YWxzKAotICAgICAgICBXU0lDb25zdGFudHMuQVRUUlZBTF9DT1JSRUxBVElPTl9UWVBFX05BTUVTUEFDRSkKLSAgICAgICYmICF0aGlzLmNvcnJlbGF0aW9uVHlwZS5lcXVhbHMoCi0gICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX0NPUlJFTEFUSU9OX1RZUEVfT1BFUkFUSU9OKSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICBtZXNzYWdlTGlzdC5nZXRNZXNzYWdlKAotICAgICAgICAgICJjb25maWcxOCIsCi0gICAgICAgICAgIkludmFsaWQgY29ycmVsYXRpb24gdHlwZSBzcGVjaWZpZWQuIikpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBHZXQgb3B0aW9uIHZhbHVlLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0T3B0aW9uVmFsdWUoU3RyaW5nW10gYXJncywgaW50IGluZGV4KSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gZ2V0T3B0aW9uVmFsdWUoYXJncywgaW5kZXgsIGFyZ3NbaW5kZXggLSAxXSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IG9wdGlvbiB2YWx1ZS4KLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIGdldE9wdGlvblZhbHVlKFN0cmluZ1tdIGFyZ3MsIGludCBpbmRleCwgU3RyaW5nIG9wdGlvbk5hbWUpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gSWYgaW5kZXggZ3JlYXRlciB0aGFuIGFycmF5IGxlbmd0aCwgdGhlbiB0aHJvdyBleGNlcHRpb24KLSAgICBpZiAoaW5kZXggPj0gYXJncy5sZW5ndGgpCi0gICAgewotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiY29uZmlnMTMiLAotICAgICAgICAgIG9wdGlvbk5hbWUsCi0gICAgICAgICAgIk9wdGlvbiBkaWQgbm90IGNvbnRhaW4gYSB2YWx1ZS4gIFNwZWNpZmllZCBvcHRpb246IikpOwotICAgIH0KLQotICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBhbiBvcHRpb24gKGkuZS4gc3RhcnRzIHdpdGggYSAiLSIpLCB0aGVuIHRocm93IGV4Y2VwdGlvbgotICAgIGlmIChhcmdzW2luZGV4XS5zdGFydHNXaXRoKCItIikpCi0gICAgewotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiY29uZmlnMTMiLAotICAgICAgICAgIG9wdGlvbk5hbWUsCi0gICAgICAgICAgIk9wdGlvbiBkaWQgbm90IGNvbnRhaW4gYSB2YWx1ZS4gIFNwZWNpZmllZCBvcHRpb246IikpOwotICAgIH0KLQotICAgIHJldHVybiAoYXJnc1tpbmRleF0pOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBtZXNzYWdlIGZyb20gcmVzb3VyY2UgYnVuZGxlLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0TWVzc2FnZShTdHJpbmcgbWVzc2FnZUlELCBTdHJpbmcgZGVmYXVsdE1lc3NhZ2UpCi0gIHsKLSAgICByZXR1cm4gZ2V0TWVzc2FnZShtZXNzYWdlSUQsIG51bGwsIGRlZmF1bHRNZXNzYWdlKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgbWVzc2FnZSBmcm9tIHJlc291cmNlIGJ1bmRsZS4KLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIGdldE1lc3NhZ2UoCi0gICAgU3RyaW5nIG1lc3NhZ2VJRCwKLSAgICBTdHJpbmcgbWVzc2FnZURhdGEsCi0gICAgU3RyaW5nIGRlZmF1bHRNZXNzYWdlKQotICB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBkZWZhdWx0TWVzc2FnZTsKLSAgICBpZiAobWVzc2FnZUxpc3QgIT0gbnVsbCkKLSAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlTGlzdC5nZXRNZXNzYWdlKG1lc3NhZ2VJRCwgbWVzc2FnZURhdGEsIGRlZmF1bHRNZXNzYWdlKTsKLSAgICBlbHNlIGlmIChtZXNzYWdlRGF0YSAhPSBudWxsKQotICAgICAgbWVzc2FnZSArPSAiICIgKyBtZXNzYWdlRGF0YSArICIuIjsKLQotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvaW1wbC9BbmFseXplckNvbmZpZ1JlYWRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL2NvbmZpZy9pbXBsL0FuYWx5emVyQ29uZmlnUmVhZGVySW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTk5MWNhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL2NvbmZpZy9pbXBsL0FuYWx5emVyQ29uZmlnUmVhZGVySW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTU5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuaW1wbDsKLQotaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLlJlYWRlcjsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lGaWxlTm90Rm91bmRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5BbmFseXplckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnUmVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuQXNzZXJ0aW9uUmVzdWx0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFzc2VydGlvblJlc3VsdHNPcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5VRERJUmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMUmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5jb21tb24uQWRkU3R5bGVTaGVldDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuY29tbW9uLmltcGwuQWRkU3R5bGVTaGVldEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLldTRExWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuTWVzc2FnZUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVGVzdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgdGhlIGltcGxlbWVudGF0aW9uIHVzZWQgdG8gcmVhZCB0aGUgYW5hbHl6ZXIgY29uZmlnIGRvY3VtZW50cy4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgQW5hbHl6ZXJDb25maWdSZWFkZXJJbXBsIGltcGxlbWVudHMgQW5hbHl6ZXJDb25maWdSZWFkZXIKLXsKLSAgLyoqCi0gICAqIE1lc3NhZ2UgbGlzdC4KLSAgICovCi0gIHByb3RlY3RlZCBNZXNzYWdlTGlzdCBtZXNzYWdlTGlzdDsKLQotICAvKioKLSAgICogRG9jdW1lbnQgbG9jYXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGRvY3VtZW50VVJJOwotCi0gIC8qKgotICAgKiBJbml0aWFsaXplIGFuYWx5emVyIGNvbmZpZyByZWFkZXIuCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KE1lc3NhZ2VMaXN0IG1lc3NhZ2VMaXN0KQotICB7Ci0gICAgdGhpcy5tZXNzYWdlTGlzdCA9IG1lc3NhZ2VMaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5BbmFseXplckNvbmZpZ1JlYWRlciNyZWFkQW5hbHl6ZXJDb25maWcoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIEFuYWx5emVyQ29uZmlnIHJlYWRBbmFseXplckNvbmZpZyhTdHJpbmcgYW5hbHl6ZXJDb25maWdVUkkpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgRmlsZVJlYWRlciBmaWxlUmVhZGVyID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoYW5hbHl6ZXJDb25maWdVUkkpOwotICAgIH0KLQotICAgIGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZm5mZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJRmlsZU5vdEZvdW5kRXhjZXB0aW9uKAotICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICJjb25maWcwMSIsCi0gICAgICAgICAgYW5hbHl6ZXJDb25maWdVUkksCi0gICAgICAgICAgIkNvdWxkIG5vdCBmaW5kIGFuYWx5emVyIGNvbmZpZyBmaWxlOiAiKSwKLSAgICAgICAgZm5mZSk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgImNvbmZpZzA4IiwKLSAgICAgICAgICBhbmFseXplckNvbmZpZ1VSSSwKLSAgICAgICAgICAiQ291bGQgbm90IHJlYWQgYW5hbHl6ZXIgY29uZmlnIGZpbGU6ICIpLAotICAgICAgICBlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVhZEFuYWx5emVyQ29uZmlnKGZpbGVSZWFkZXIpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5BbmFseXplckNvbmZpZ1JlYWRlciNyZWFkQW5hbHl6ZXJDb25maWcoUmVhZGVyKQotICAgKi8KLSAgcHVibGljIEFuYWx5emVyQ29uZmlnIHJlYWRBbmFseXplckNvbmZpZyhSZWFkZXIgcmVhZGVyKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBBbmFseXplckNvbmZpZyBhbmFseXplckNvbmZpZyA9IG5ldyBBbmFseXplckNvbmZpZ0ltcGwoKTsKLQotICAgIC8vIFBhcnNlIFhNTAotICAgIERvY3VtZW50IGRvYyA9IFhNTFV0aWxzLnBhcnNlWE1MKHJlYWRlcik7Ci0KLSAgICAvLyBQYXJzZSBlbGVtZW50cyBpbiB0aGUgY29uZmlnIGRvY3VtZW50Ci0gICAgcGFyc2VDb25maWdFbGVtZW50KGFuYWx5emVyQ29uZmlnLCBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkpOwotCi0gICAgcmV0dXJuIGFuYWx5emVyQ29uZmlnOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50UmVhZGVyI2dldExvY2F0aW9uKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9jYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRVUkk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRSZWFkZXIjc2V0TG9jYXRpb24oU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9jYXRpb24oU3RyaW5nIGRvY3VtZW50VVJJKQotICB7Ci0gICAgdGhpcy5kb2N1bWVudFVSSSA9IGRvY3VtZW50VVJJOwotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIGNvbmZpZyBlbGVtZW50LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHBhcnNlQ29uZmlnRWxlbWVudCgKLSAgICBBbmFseXplckNvbmZpZyBhbmFseXplckNvbmZpZywKLSAgICBFbGVtZW50IGVsZW1lbnQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQUREOiBHZXQgbmFtZSBhbmQgdmVyc2lvbgotCi0gICAgLy8gQUREOiBWZXJpZnkgdGhhdCB0aGlzIGlzIHRoZSBjb25maWcgZWxlbWVudAotCi0gICAgLy8gR2V0IGZpcnN0IGNoaWxkIGVsZW1lbnQKLSAgICBFbGVtZW50IG5leHRFbGVtZW50ID0gWE1MVXRpbHMuZ2V0Rmlyc3RDaGlsZChlbGVtZW50KTsKLQotICAgIC8vIERFQlVHOgotICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJFbGVtZW50IG5hbWU6ICIgKyBuZXh0RWxlbWVudC5nZXRDbGFzcygpLmdldE5hbWUoKSk7Ci0KLSAgICAvLyBQcm9jZXNzIGVhY2ggY2hpbGQgZWxlbWVudAotICAgIHdoaWxlIChuZXh0RWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIDxkZXNjcmlwdGlvbj4KLSAgICAgIGlmIChpc0VsZW1lbnQobmV4dEVsZW1lbnQsIFdTSUNvbnN0YW50cy5FTEVNX0RFU0NSSVBUSU9OKSkKLSAgICAgIHsKLSAgICAgICAgYW5hbHl6ZXJDb25maWcuc2V0RGVzY3JpcHRpb24oWE1MVXRpbHMuZ2V0VGV4dChuZXh0RWxlbWVudCkpOwotICAgICAgfQotCi0gICAgICAvLyA8dmVyYm9zZT4KLSAgICAgIGVsc2UgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fVkVSQk9TRSkpCi0gICAgICB7Ci0gICAgICAgIGFuYWx5emVyQ29uZmlnLnNldFZlcmJvc2VPcHRpb24oCi0gICAgICAgICAgWE1MVXRpbHMuZ2V0Qm9vbGVhblZhbHVlKG5leHRFbGVtZW50LCBmYWxzZSkpOwotICAgICAgfQotCi0gICAgICAvLyA8YXNzZXJ0aW9uUmVzdWx0cz4KLSAgICAgIGVsc2UgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fQVNTRVJUSU9OX1JFU1VMVFMpKQotICAgICAgewotICAgICAgICAvLyBDcmVhdGUgYXNzZXJ0aW9uIHJlc3VsdHMgb3B0aW9uIG9iamVjdAotICAgICAgICBBc3NlcnRpb25SZXN1bHRzT3B0aW9uIGFzc2VydGlvblJlc3VsdHNPcHRpb24gPQotICAgICAgICAgIG5ldyBBc3NlcnRpb25SZXN1bHRzT3B0aW9uSW1wbCgpOwotICAgICAgICBhbmFseXplckNvbmZpZy5zZXRBc3NlcnRpb25SZXN1bHRzT3B0aW9uKGFzc2VydGlvblJlc3VsdHNPcHRpb24pOwotCi0gICAgICAgIC8vIFNldCByZXN1bHQgdHlwZQotICAgICAgICBTdHJpbmcgcmVzdWx0VHlwZSA9Ci0gICAgICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUobmV4dEVsZW1lbnQsIFdTSUNvbnN0YW50cy5BVFRSX1RZUEUpOwotICAgICAgICBhc3NlcnRpb25SZXN1bHRzT3B0aW9uLnNldEFzc2VydGlvblJlc3VsdFR5cGUoCi0gICAgICAgICAgQXNzZXJ0aW9uUmVzdWx0VHlwZS5uZXdJbnN0YW5jZShyZXN1bHRUeXBlKSk7Ci0KLSAgICAgICAgLy8gU2V0IHNob3cgbG9nIGVudHJ5Ci0gICAgICAgIGFzc2VydGlvblJlc3VsdHNPcHRpb24uc2V0U2hvd01lc3NhZ2VFbnRyeSgKLSAgICAgICAgICBYTUxVdGlscy5nZXRCb29sZWFuVmFsdWUoCi0gICAgICAgICAgICBuZXh0RWxlbWVudCwKLSAgICAgICAgICAgIFdTSUNvbnN0YW50cy5BVFRSX01FU1NBR0VfRU5UUlksCi0gICAgICAgICAgICBhc3NlcnRpb25SZXN1bHRzT3B0aW9uLmdldFNob3dNZXNzYWdlRW50cnkoKSkpOwotCi0gICAgICAgIC8vIFNldCBzaG93IGZhaWx1cmUgbWVzc2FnZQotICAgICAgICBhc3NlcnRpb25SZXN1bHRzT3B0aW9uLnNldFNob3dGYWlsdXJlTWVzc2FnZSgKLSAgICAgICAgICBYTUxVdGlscy5nZXRCb29sZWFuVmFsdWUoCi0gICAgICAgICAgICBuZXh0RWxlbWVudCwKLSAgICAgICAgICAgIFdTSUNvbnN0YW50cy5BVFRSX0ZBSUxVUkVfTUVTU0FHRSwKLSAgICAgICAgICAgIGFzc2VydGlvblJlc3VsdHNPcHRpb24uZ2V0U2hvd0ZhaWx1cmVNZXNzYWdlKCkpKTsKLQotICAgICAgICAvLyBTZXQgc2hvdyBmYWlsdXJlIGRldGFpbAotICAgICAgICBhc3NlcnRpb25SZXN1bHRzT3B0aW9uLnNldFNob3dGYWlsdXJlRGV0YWlsKAotICAgICAgICAgIFhNTFV0aWxzLmdldEJvb2xlYW5WYWx1ZSgKLSAgICAgICAgICAgIG5leHRFbGVtZW50LAotICAgICAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJfRkFJTFVSRV9ERVRBSUwsCi0gICAgICAgICAgICBhc3NlcnRpb25SZXN1bHRzT3B0aW9uLmdldFNob3dGYWlsdXJlRGV0YWlsKCkpKTsKLQotICAgICAgICAvLyBSRU1PVkU6IFNldCBzaG93IHdhcm5pbmcgbWVzc2FnZQotICAgICAgICAvL2Fzc2VydGlvblJlc3VsdHNPcHRpb24uc2V0U2hvd1dhcm5pbmdNZXNzYWdlKFhNTFV0aWxzLmdldEJvb2xlYW5WYWx1ZShuZXh0RWxlbWVudCwgCi0gICAgICAgIC8vICAgICAgV1NJQ29uc3RhbnRzLkFUVFJfV0FSTklOR19NRVNTQUdFLCBhc3NlcnRpb25SZXN1bHRzT3B0aW9uLmdldFNob3dXYXJuaW5nTWVzc2FnZSgpKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxyZXBvcnRGaWxlPgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9SRVBPUlRfRklMRSkpCi0gICAgICB7Ci0gICAgICAgIHBhcnNlUmVwb3J0RmlsZUVsZW1lbnQoYW5hbHl6ZXJDb25maWcsIG5leHRFbGVtZW50KTsKLSAgICAgIH0KLQotICAgICAgLy8gPHRlc3RBc3NlcnRpb25GaWxlPgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9URVNUX0FTU0VSVElPTlNfRklMRSkpCi0gICAgICB7Ci0gICAgICAgIGFuYWx5emVyQ29uZmlnLnNldFRlc3RBc3NlcnRpb25zRG9jdW1lbnRMb2NhdGlvbigKLSAgICAgICAgICBYTUxVdGlscy5nZXRUZXh0KG5leHRFbGVtZW50KSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxsb2dGaWxlPgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9MT0dfRklMRSkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBjb3JyZWxhdGlvblR5cGUgPQotICAgICAgICAgIFhNTFV0aWxzLmdldEF0dHJpYnV0ZVZhbHVlKAotICAgICAgICAgICAgbmV4dEVsZW1lbnQsCi0gICAgICAgICAgICBXU0lDb25zdGFudHMuQVRUUl9DT1JSRUxBVElPTl9UWVBFKTsKLSAgICAgICAgYW5hbHl6ZXJDb25maWcuc2V0Q29ycmVsYXRpb25UeXBlKAotICAgICAgICAgIGNvcnJlbGF0aW9uVHlwZSA9PSBudWxsID8gIm9wZXJhdGlvbiIgOiBjb3JyZWxhdGlvblR5cGUpOwotICAgICAgICBhbmFseXplckNvbmZpZy5zZXRMb2dMb2NhdGlvbihYTUxVdGlscy5nZXRUZXh0KG5leHRFbGVtZW50KSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDx3c2RsUmVmZXJlbmNlPgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9XU0RMX1JFRkVSRU5DRSkpCi0gICAgICB7Ci0gICAgICAgIHBhcnNlV3NkbFJlZmVyZW5jZShhbmFseXplckNvbmZpZywgbmV4dEVsZW1lbnQpOwotICAgICAgfQotCi0gICAgICAvLyA8dWRkaVJlZmVyZW5jZT4KLSAgICAgIGVsc2UgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fVURESV9SRUZFUkVOQ0UpKQotICAgICAgewotICAgICAgICBwYXJzZVVkZGlSZWZlcmVuY2UoYW5hbHl6ZXJDb25maWcsIG5leHRFbGVtZW50KTsKLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBUaHJvdyBleGNlcHRpb24KLSAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICAgImNvbmZpZzA2IiwKLSAgICAgICAgICAgIG5leHRFbGVtZW50LmdldExvY2FsTmFtZSgpLAotICAgICAgICAgICAgIkludmFsaWQgYW5hbHl6ZXIgY29uZmlnIGVsZW1lbnQ6IikpOwotICAgICAgfQotCi0gICAgICAvLyBHZXQgbmV4dCBlbGVtZW50Ci0gICAgICBuZXh0RWxlbWVudCA9IFhNTFV0aWxzLmdldE5leHRTaWJsaW5nKG5leHRFbGVtZW50KTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2UgcmVwb3J0RmlsZSBlbGVtZW50LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHBhcnNlUmVwb3J0RmlsZUVsZW1lbnQoCi0gICAgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcsCi0gICAgRWxlbWVudCBlbGVtZW50KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIEdldCByZXBvcnQgbG9jYXRpb24gYW5kIHJlcGxhY2UgaW5kaWNhdG9yCi0gICAgYW5hbHl6ZXJDb25maWcuc2V0UmVwbGFjZVJlcG9ydCgKLSAgICAgIFhNTFV0aWxzLmdldEJvb2xlYW5WYWx1ZShlbGVtZW50LCBXU0lDb25zdGFudHMuQVRUUl9SRVBMQUNFLCBmYWxzZSkpOwotICAgIGFuYWx5emVyQ29uZmlnLnNldFJlcG9ydExvY2F0aW9uKAotICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUoCi0gICAgICAgIGVsZW1lbnQsCi0gICAgICAgIFdTSUNvbnN0YW50cy5BVFRSX0xPQ0FUSU9OLAotICAgICAgICBXU0lDb25zdGFudHMuREVGQVVMVF9SRVBPUlRfVVJJKSk7Ci0KLSAgICAvLyBBREQ6IElmIHRoZSByZXBvcnQgbG9jYXRpb24gd2Fzbid0IHNwZWNpZmllZCwgdGhlbiB0aHJvdyBhbiBleGNlcHRpb24KLSAgICAvL2lmIChhbmFseXplckNvbmZpZy5nZXRSZXBvcnRMb2NhdGlvbigpID09IG51bGwpCi0gICAgLy8gIHRocm93IG5ldyBXU0lFeGNlcHRpb24oIlRoZSBhbmFseXplciBjb25maWd1cmF0aW9uIGZpbGUgbXVzdCBjb250YWluIHRoZSByZXBvcnQgZmlsZSBsb2NhdGlvbi4iKTsKLQotICAgIC8vIEdldCBmaXJzdCBjaGlsZCBlbGVtZW50Ci0gICAgRWxlbWVudCBuZXh0RWxlbWVudCA9IFhNTFV0aWxzLmdldEZpcnN0Q2hpbGQoZWxlbWVudCk7Ci0KLSAgICAvLyBQcm9jZXNzIGVhY2ggY2hpbGQgZWxlbWVudAotICAgIHdoaWxlIChuZXh0RWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIDxhZGRTdHlsZVNoZWV0PgotICAgICAgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fQUREX1NUWUxFX1NIRUVUKSkKLSAgICAgIHsKLSAgICAgICAgQWRkU3R5bGVTaGVldCBhZGRTdHlsZVNoZWV0ID0gbmV3IEFkZFN0eWxlU2hlZXRJbXBsKCk7Ci0KLSAgICAgICAgLy8gUGFyc2UgdGhlIGVsZW1lbnQgIAotICAgICAgICBUZXN0VXRpbHMucGFyc2VBZGRTdHlsZVNoZWV0KAotICAgICAgICAgIG5leHRFbGVtZW50LAotICAgICAgICAgIGFkZFN0eWxlU2hlZXQsCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkRFRkFVTFRfUkVQT1JUX1hTTCk7Ci0KLSAgICAgICAgLy8gU2V0IGFkZCBzdHlsZSBzaGVldAotICAgICAgICBhbmFseXplckNvbmZpZy5zZXRBZGRTdHlsZVNoZWV0KGFkZFN0eWxlU2hlZXQpOwotICAgICAgfQotCi0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIFRocm93IGV4Y2VwdGlvbgotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgICAiY29uZmlnMDYiLAotICAgICAgICAgICAgbmV4dEVsZW1lbnQuZ2V0TG9jYWxOYW1lKCksCi0gICAgICAgICAgICAiSW52YWxpZCBhbmFseXplciBjb25maWcgZWxlbWVudDoiKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldCBuZXh0IGVsZW1lbnQKLSAgICAgIG5leHRFbGVtZW50ID0gWE1MVXRpbHMuZ2V0TmV4dFNpYmxpbmcobmV4dEVsZW1lbnQpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBQYXJzZSB3c2RsIHJlZmVyZW5jZSBlbGVtZW50LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHBhcnNlV3NkbFJlZmVyZW5jZSgKLSAgICBBbmFseXplckNvbmZpZyBhbmFseXplckNvbmZpZywKLSAgICBFbGVtZW50IGVsZW1lbnQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQ3JlYXRlIFVEREkgcmVmZXJlbmNlCi0gICAgV1NETFJlZmVyZW5jZSB3c2RsUmVmZXJlbmNlID0gbmV3IFdTRExSZWZlcmVuY2VJbXBsKCk7Ci0KLSAgICAvLyBTZXQgV1NETCByZWZlcmVuY2UKLSAgICBhbmFseXplckNvbmZpZy5zZXRXU0RMUmVmZXJlbmNlKHdzZGxSZWZlcmVuY2UpOwotCi0gICAgLy8gR2V0IGZpcnN0IGNoaWxkIGVsZW1lbnQKLSAgICBFbGVtZW50IG5leHRFbGVtZW50ID0gWE1MVXRpbHMuZ2V0Rmlyc3RDaGlsZChlbGVtZW50KTsKLQotICAgIC8vIFByb2Nlc3MgZWFjaCBjaGlsZCBlbGVtZW50Ci0gICAgd2hpbGUgKG5leHRFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgLy8gPHdzZGxVUkk+Ci0gICAgICBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9XU0RMX1VSSSkpCi0gICAgICB7Ci0gICAgICAgIC8vIFNldCBXU0RMIGxvY2F0aW9uCi0gICAgICAgIHdzZGxSZWZlcmVuY2Uuc2V0V1NETExvY2F0aW9uKFhNTFV0aWxzLmdldFRleHQobmV4dEVsZW1lbnQpKTsKLSAgICAgIH0KLQotICAgICAgLy8gPHNlcnZpY2VMb2NhdGlvbj4KLSAgICAgIGVsc2UgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fU0VSVklDRV9MT0NBVElPTikpCi0gICAgICB7Ci0gICAgICAgIC8vIFNldCBzZXJ2aWNlIGxvY2F0aW9uCi0gICAgICAgIHdzZGxSZWZlcmVuY2Uuc2V0U2VydmljZUxvY2F0aW9uKFhNTFV0aWxzLmdldFRleHQobmV4dEVsZW1lbnQpKTsKLSAgICAgIH0KLQotICAgICAgLy8gPHdzZGxFbGVtZW50PgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9XU0RMX0VMRU1FTlQpKQotICAgICAgewotICAgICAgICAvLyBTZXQgV1NETCBlbGVtZW50Ci0gICAgICAgIHdzZGxSZWZlcmVuY2Uuc2V0V1NETEVsZW1lbnQocGFyc2VXc2RsRWxlbWVudChuZXh0RWxlbWVudCkpOwotICAgICAgfQotCi0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIFRocm93IGV4Y2VwdGlvbgotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgICAiY29uZmlnMDYiLAotICAgICAgICAgICAgbmV4dEVsZW1lbnQuZ2V0TG9jYWxOYW1lKCksCi0gICAgICAgICAgICAiSW52YWxpZCBhbmFseXplciBjb25maWcgZWxlbWVudDoiKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldCBuZXh0IGVsZW1lbnQKLSAgICAgIG5leHRFbGVtZW50ID0gWE1MVXRpbHMuZ2V0TmV4dFNpYmxpbmcobmV4dEVsZW1lbnQpOwotICAgIH0KLQotICAgIC8vIElmIFdTREwgZWxlbWVudCBvciBXU0wgVVJJIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhyb3cgZXhjZXB0aW9uCi0gICAgaWYgKCh3c2RsUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkgPT0gbnVsbCkKLSAgICAgIHx8ICh3c2RsUmVmZXJlbmNlLmdldFdTRExMb2NhdGlvbigpID09IG51bGwpKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgImNvbmZpZzA3IiwKLSAgICAgICAgICAiQm90aCB0aGUgPHdzZGxFbGVtZW50PiBhbmQgPHdzZGxVUkk+IGVsZW1lbnRzIG11c3QgYmUgc3BlY2lmaWVkLiIpKTsKLSAgICB9Ci0KLSAgICAvLyBJZiB0eXBlIGlzIHBvcnQgb3Igb3BlcmF0aW9uLCB0aGVuIHBhcmVudCBlbGVtZW50IG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQKLSAgICBpZiAoKCh3c2RsUmVmZXJlbmNlCi0gICAgICAuZ2V0V1NETEVsZW1lbnQoKQotICAgICAgLmdldFR5cGUoKQotICAgICAgLmVxdWFsc0lnbm9yZUNhc2UoV1NETFZhbGlkYXRvci5UWVBFX0RFU0NSSVBUSU9OX1BPUlQpKQotICAgICAgfHwgKHdzZGxSZWZlcmVuY2UKLSAgICAgICAgLmdldFdTRExFbGVtZW50KCkKLSAgICAgICAgLmdldFR5cGUoKQotICAgICAgICAuZXF1YWxzSWdub3JlQ2FzZShXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fT1BFUkFUSU9OKSkpCi0gICAgICAmJiAod3NkbFJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmdldFBhcmVudEVsZW1lbnROYW1lKCkgPT0gbnVsbCkpCi0gICAgewotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiY29uZmlnMDkiLAotICAgICAgICAgICJUaGUgcGFyZW50RWxlbWVudE5hbWUgYXR0cmlidXRlIG11c3QgYmUgc3BlY2lmaWVkIHdpdGggYSBXU0RMIHR5cGUgb2YgIgotICAgICAgICAgICAgKyBXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fUE9SVAotICAgICAgICAgICAgKyAiIG9yICIKLSAgICAgICAgICAgICsgV1NETFZhbGlkYXRvci5UWVBFX0RFU0NSSVBUSU9OX09QRVJBVElPTgotICAgICAgICAgICAgKyAiLiIpKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2UgdWRkaSByZWZlcmVuY2UuCi0gICAqLwotICBwcml2YXRlIHZvaWQgcGFyc2VVZGRpUmVmZXJlbmNlKAotICAgIEFuYWx5emVyQ29uZmlnIGFuYWx5emVyQ29uZmlnLAotICAgIEVsZW1lbnQgZWxlbWVudCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBDcmVhdGUgVURESSByZWZlcmVuY2UKLSAgICBVRERJUmVmZXJlbmNlIHVkZGlSZWZlcmVuY2UgPSBuZXcgVURESVJlZmVyZW5jZUltcGwoKTsKLQotICAgIC8vIFNldCBVRERJIHJlZmVyZW5jZQotICAgIGFuYWx5emVyQ29uZmlnLnNldFVERElSZWZlcmVuY2UodWRkaVJlZmVyZW5jZSk7Ci0KLSAgICAvLyBHZXQgZmlyc3QgY2hpbGQgZWxlbWVudAotICAgIEVsZW1lbnQgbmV4dEVsZW1lbnQgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKGVsZW1lbnQpOwotCi0gICAgLy8gUHJvY2VzcyBlYWNoIGNoaWxkIGVsZW1lbnQKLSAgICB3aGlsZSAobmV4dEVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyA8aW5xdWlyeVVSTD4KLSAgICAgIGlmIChpc0VsZW1lbnQobmV4dEVsZW1lbnQsIFdTSUNvbnN0YW50cy5FTEVNX0lOUVVJUllfVVJMKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2V0IGlucXVpcnkgVVJMCi0gICAgICAgIHVkZGlSZWZlcmVuY2Uuc2V0SW5xdWlyeVVSTChYTUxVdGlscy5nZXRUZXh0KG5leHRFbGVtZW50KSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDx1ZGRpS2V5PgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9VRERJX0tFWSkpCi0gICAgICB7Ci0gICAgICAgIC8vIFNldCBVRERJIGtleSBhbmQga2V5IHR5cGUKLSAgICAgICAgdWRkaVJlZmVyZW5jZS5zZXRLZXkoWE1MVXRpbHMuZ2V0VGV4dChuZXh0RWxlbWVudCkpOwotICAgICAgICB1ZGRpUmVmZXJlbmNlLnNldEtleVR5cGUoCi0gICAgICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUobmV4dEVsZW1lbnQsIFdTSUNvbnN0YW50cy5BVFRSX1RZUEUpKTsKLSAgICAgIH0KLQotICAgICAgLy8gPHdzZGxFbGVtZW50PgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9XU0RMX0VMRU1FTlQpKQotICAgICAgewotICAgICAgICAvLyBTZXQgV1NETCBlbGVtZW50Ci0gICAgICAgIHVkZGlSZWZlcmVuY2Uuc2V0V1NETEVsZW1lbnQocGFyc2VXc2RsRWxlbWVudChuZXh0RWxlbWVudCkpOwotICAgICAgfQotCi0gICAgICAvLyA8c2VydmljZUxvY2F0aW9uPgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9TRVJWSUNFX0xPQ0FUSU9OKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2V0IHNlcnZpY2UgbG9jYXRpb24KLSAgICAgICAgdWRkaVJlZmVyZW5jZS5zZXRTZXJ2aWNlTG9jYXRpb24oWE1MVXRpbHMuZ2V0VGV4dChuZXh0RWxlbWVudCkpOwotICAgICAgfQotCi0gICAgICAvKiBSRU1PVkU6Ci0gICAgICAvLyA8d3NkbEVsZW1lbnQ+Ci0gICAgICBlbHNlIGlmIChpc0VsZW1lbnQobmV4dEVsZW1lbnQsIFdTSUNvbnN0YW50cy5FTEVNX1dTRExfRUxFTUVOVCkpIHsKLSAgICAgICAgLy8gU2V0IHNlcnZpY2UgbG9jYXRpb24KLSAgICAgICAgcGFyc2VXc2RsRWxlbWVudChhbmFseXplckNvbmZpZywgbmV4dEVsZW1lbnQpOwotICAgICAgIH0KLSAgICAgICAqLwotCi0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIFRocm93IGV4Y2VwdGlvbgotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgICAiY29uZmlnMDYiLAotICAgICAgICAgICAgbmV4dEVsZW1lbnQuZ2V0TG9jYWxOYW1lKCksCi0gICAgICAgICAgICAiSW52YWxpZCBhbmFseXplciBjb25maWcgZWxlbWVudDoiKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldCBuZXh0IGVsZW1lbnQKLSAgICAgIG5leHRFbGVtZW50ID0gWE1MVXRpbHMuZ2V0TmV4dFNpYmxpbmcobmV4dEVsZW1lbnQpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBQYXJzZSBXU0RMIGVsZW1lbnQuCi0gICAqLwotICBwcml2YXRlIFdTRExFbGVtZW50IHBhcnNlV3NkbEVsZW1lbnQoRWxlbWVudCBlbGVtZW50KSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCA9IG5ldyBXU0RMRWxlbWVudEltcGwoKTsKLQotICAgIC8vIFNldCB0eXBlLCBuYW1lc3BhY2UsIHBhcmVudCBlbGVtZW50IG5hbWUgYW5kIG5hbWUKLSAgICB3c2RsRWxlbWVudC5zZXRUeXBlKAotICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUoZWxlbWVudCwgV1NJQ29uc3RhbnRzLkFUVFJfVFlQRSkpOwotICAgIHdzZGxFbGVtZW50LnNldE5hbWVzcGFjZSgKLSAgICAgIFhNTFV0aWxzLmdldEF0dHJpYnV0ZVZhbHVlKGVsZW1lbnQsIFdTSUNvbnN0YW50cy5BVFRSX05BTUVTUEFDRSkpOwotICAgIHdzZGxFbGVtZW50LnNldFBhcmVudEVsZW1lbnROYW1lKAotICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUoCi0gICAgICAgIGVsZW1lbnQsCi0gICAgICAgIFdTSUNvbnN0YW50cy5BVFRSX1BBUkVOVF9FTEVNRU5UX05BTUUpKTsKLQotICAgIFN0cmluZyB3c2RsRWxlbWVudE5hbWUgPSBYTUxVdGlscy5nZXRUZXh0KGVsZW1lbnQpOwotICAgIGlmICh3c2RsRWxlbWVudE5hbWUuZXF1YWxzKCIiKSkKLSAgICB7Ci0gICAgICAvLyBUaHJvdyBleGNlcHRpb24KLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgIGdldE1lc3NhZ2UoImNvbmZpZzE5IiwgIlRoZSBXU0RMIGVsZW1lbnQgbmFtZSBtdXN0IGJlIHNwZWNpZmllZC4iKSk7Ci0gICAgfQotICAgIHdzZGxFbGVtZW50LnNldE5hbWUod3NkbEVsZW1lbnROYW1lKTsKLQotICAgIHJldHVybiB3c2RsRWxlbWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBlbGVtZW50IG1hdGNoZXMgc3BlY2lmaWVkIGxvY2FsIG5hbWUgaW4gdGhlIGFuYWx5emVyIGNvbmZpZyBuYW1lc3BhY2UuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gaXNFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIGxvY2FsTmFtZSkKLSAgewotICAgIHJldHVybiBpc0VsZW1lbnQoCi0gICAgICBlbGVtZW50LAotICAgICAgZ2V0VmFsaWRXU0lBbmFseXplckNvbmZpZ05hbWVzcGFjZXMoKSwKLSAgICAgIGxvY2FsTmFtZSk7Ci0gIH0KLQotICAKLSAgc3RhdGljIHB1YmxpYyBMaXN0IGdldFZhbGlkV1NJQW5hbHl6ZXJDb25maWdOYW1lc3BhY2VzKCkKLSAgewotICAJQXJyYXlMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIAlsaXN0LmFkZChXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9BTkFMWVpFUl9DT05GSUdfMjAwMyk7Ci0gIAlsaXN0LmFkZChXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9BTkFMWVpFUl9DT05GSUcpOwotICAJcmV0dXJuIGxpc3Q7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBlbGVtZW50IG1hdGNoZXMgc3BlY2lmaWVkIGxvY2FsIG5hbWUgaW4gdGhlIGFuYWx5emVyIGNvbmZpZyBuYW1lc3BhY2UuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gaXNFbGVtZW50KAotICAgIEVsZW1lbnQgZWxlbWVudCwKLSAgICBMaXN0IG5hbWVzcGFjZXMsCi0gICAgU3RyaW5nIGxvY2FsTmFtZSkKLSAgewotICAgIHJldHVybiBYTUxVdGlscy5pc0VsZW1lbnQoZWxlbWVudCwgbmFtZXNwYWNlcywgbG9jYWxOYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgbWVzc2FnZSBmcm9tIHJlc291cmNlIGJ1bmRsZS4KLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIGdldE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2VJRCwgU3RyaW5nIGRlZmF1bHRNZXNzYWdlKQotICB7Ci0gICAgcmV0dXJuIGdldE1lc3NhZ2UobWVzc2FnZUlELCBudWxsLCBkZWZhdWx0TWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IG1lc3NhZ2UgZnJvbSByZXNvdXJjZSBidW5kbGUuCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBnZXRNZXNzYWdlKAotICAgIFN0cmluZyBtZXNzYWdlSUQsCi0gICAgU3RyaW5nIG1lc3NhZ2VEYXRhLAotICAgIFN0cmluZyBkZWZhdWx0TWVzc2FnZSkKLSAgewotICAgIFN0cmluZyBtZXNzYWdlID0gZGVmYXVsdE1lc3NhZ2U7Ci0gICAgaWYgKG1lc3NhZ2VMaXN0ICE9IG51bGwpCi0gICAgICBtZXNzYWdlID0gbWVzc2FnZUxpc3QuZ2V0TWVzc2FnZShtZXNzYWdlSUQsIG1lc3NhZ2VEYXRhLCBkZWZhdWx0TWVzc2FnZSk7Ci0gICAgZWxzZQotICAgICAgbWVzc2FnZSArPSAiICIgKyBtZXNzYWdlRGF0YSArICIuIjsKLQotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvaW1wbC9Bc3NlcnRpb25SZXN1bHRzT3B0aW9uSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL2ltcGwvQXNzZXJ0aW9uUmVzdWx0c09wdGlvbkltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJlM2QwZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvaW1wbC9Bc3NlcnRpb25SZXN1bHRzT3B0aW9uSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjAwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMyBJQk0gQ29ycG9yYXRpb24sIFBhcmFzb2Z0IGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gICAgICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogICBQYXJhc29mdCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuaW1wbDsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuQXNzZXJ0aW9uUmVzdWx0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFzc2VydGlvblJlc3VsdHNPcHRpb247Ci0KLS8qKgotICogVGhpcyBjbGFzcyBjb250YWlucyB0aGUgYXNzZXJ0aW9uIHJlc3VsdHMgb3B0aW9uIGRlZmluaXRpb24uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIEFzc2VydGlvblJlc3VsdHNPcHRpb25JbXBsIGltcGxlbWVudHMgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbgotewotICAvKioKLSAgICogQXNzZXJ0aW9uIHJlc3VsdCB0eXBlLgotICAgKi8KLSAgcHJvdGVjdGVkIEFzc2VydGlvblJlc3VsdFR5cGUgcmVzdWx0VHlwZSA9IEFzc2VydGlvblJlc3VsdFR5cGUuQUxMOwotCi0gIC8qKgotICAgKiBTaG93IG1lc3NhZ2UgZW50cnkgaW5kaWNhdG9yLgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gc2hvd01lc3NhZ2VFbnRyeSA9IHRydWU7Ci0KLSAgLyoqCi0gICAqIFNob3cgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uIGluZGljYXRvci4KLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIHNob3dBc3NlcnRpb25EZXNjcmlwdGlvbiA9IGZhbHNlOwotCi0gIC8qKgotICAgKiBTaG93IGZhaWx1cmUgbWVzc2FnZSBpbmRpY2F0b3IuCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBzaG93RmFpbHVyZU1lc3NhZ2UgPSB0cnVlOwotCi0gIC8qKgotICAgKiBTaG93IGZhaWx1cmUgZGV0YWlsIGluZGljYXRvci4KLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIHNob3dGYWlsdXJlRGV0YWlsID0gdHJ1ZTsKLQotICAvKioKLSAgICogR2V0IGFzc2VydGlvbiByZXN1bHQgdHlwZS4KLSAgICogQHNlZSAjc2V0QXNzZXJ0aW9uUmVzdWx0VHlwZQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdFR5cGUgZ2V0QXNzZXJ0aW9uUmVzdWx0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gcmVzdWx0VHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgYXNzZXJ0aW9uIHJlc3VsdCB0eXBlLgotICAgKiBAc2VlICNnZXRBc3NlcnRpb25SZXN1bHRUeXBlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBc3NlcnRpb25SZXN1bHRUeXBlKEFzc2VydGlvblJlc3VsdFR5cGUgcmVzdWx0VHlwZSkKLSAgewotICAgIHRoaXMucmVzdWx0VHlwZSA9IHJlc3VsdFR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHNob3cgbWVzc2FnZSBlbnRyeSBpbmRpY2F0b3IuCi0gICAqIEBzZWUgI3NldFNob3dNZXNzYWdlRW50cnkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFNob3dNZXNzYWdlRW50cnkoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuc2hvd01lc3NhZ2VFbnRyeTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgc2hvdyBtZXNzYWdlIGVudHJ5IGluZGljdG9yLgotICAgKiBAc2VlICNnZXRTaG93TWVzc2FnZUVudHJ5Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTaG93TWVzc2FnZUVudHJ5KGJvb2xlYW4gc2hvd01lc3NhZ2VFbnRyeSkKLSAgewotICAgIHRoaXMuc2hvd01lc3NhZ2VFbnRyeSA9IHNob3dNZXNzYWdlRW50cnk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHNob3cgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uIGluZGljYXRvci4KLSAgICogQHNlZSAjc2V0U2hvd0Fzc2VydGlvbkRlc2NyaXB0aW9uCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRTaG93QXNzZXJ0aW9uRGVzY3JpcHRpb24oKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuc2hvd0Fzc2VydGlvbkRlc2NyaXB0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBzaG93IGFzc2VydGlvbiBkZXNjcmlwdGlvbiBpbmRpY3Rvci4KLSAgICogQHNlZSAjZ2V0U2hvd0Fzc2VydGlvbkRlc2NyaXB0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTaG93QXNzZXJ0aW9uRGVzY3JpcHRpb24oYm9vbGVhbiBzaG93QXNzZXJ0aW9uRGVzY3JpcHRpb24pCi0gIHsKLSAgICB0aGlzLnNob3dBc3NlcnRpb25EZXNjcmlwdGlvbiA9IHNob3dBc3NlcnRpb25EZXNjcmlwdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgc2hvdyBmYWlsdXJlIG1lc3NhZ2UgaW5kaWNhdG9yLgotICAgKiBAc2VlICNzZXRTaG93RmFpbHVyZU1lc3NhZ2UKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFNob3dGYWlsdXJlTWVzc2FnZSgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5zaG93RmFpbHVyZU1lc3NhZ2U7Ci0gIH0KLQotICAvKioKLSAgICogU2V0IHNob3cgZmFpbHVyZSBtZXNhZ2UgaW5kaWNhdG9yLgotICAgKiBAc2VlICNnZXRTaG93RmFpbHVyZU1lc3NhZ2UKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNob3dGYWlsdXJlTWVzc2FnZShib29sZWFuIHNob3dGYWlsdXJlTWVzc2FnZSkKLSAgewotICAgIHRoaXMuc2hvd0ZhaWx1cmVNZXNzYWdlID0gc2hvd0ZhaWx1cmVNZXNzYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBzaG93IGZhaWx1cmUgZGV0YWlsIGluZGljYXRvci4KLSAgICogQHNlZSAjc2V0U2hvd0ZhaWx1cmVEZXRhaWwKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGdldFNob3dGYWlsdXJlRGV0YWlsKCkKLSAgewotICAgIHJldHVybiB0aGlzLnNob3dGYWlsdXJlRGV0YWlsOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBzaG93IGZhaWx1cmUgZGV0YWlsIGluZGljYXRvci4KLSAgICogQHNlZSAjZ2V0U2hvd0ZhaWx1cmVEZXRhaWwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNob3dGYWlsdXJlRGV0YWlsKGJvb2xlYW4gc2hvd0ZhaWx1cmVEZXRhaWwpCi0gIHsKLSAgICB0aGlzLnNob3dGYWlsdXJlRGV0YWlsID0gc2hvd0ZhaWx1cmVEZXRhaWw7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLQotICAgIHB3LnByaW50bG4oIiAgQXNzZXJ0aW9uIFJlc3VsdHM6Iik7Ci0gICAgcHcucHJpbnRsbigiICAgIHR5cGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLnJlc3VsdFR5cGUpOwotICAgIHB3LnByaW50bG4oIiAgICBtZXNzYWdlRW50cnkgLi4uLi4uLi4uLi4uLiAiICsgdGhpcy5zaG93TWVzc2FnZUVudHJ5KTsKLSAgICBwdy5wcmludGxuKAotICAgICAgIiAgICBhc3NlcnRpb25EZXNjcmlwdGlvbiAuLi4uLiAiICsgdGhpcy5zaG93QXNzZXJ0aW9uRGVzY3JpcHRpb24pOwotICAgIHB3LnByaW50bG4oIiAgICBmYWlsdXJlTWVzc2FnZSAuLi4uLi4uLi4uLiAiICsgdGhpcy5zaG93RmFpbHVyZU1lc3NhZ2UpOwotICAgIHB3LnByaW50bG4oIiAgICBmYWlsdXJlRGV0YWlsIC4uLi4uLi4uLi4uLiAiICsgdGhpcy5zaG93RmFpbHVyZURldGFpbCk7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QgYXMgYW4gWE1MIHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIC8vIENvbmZpZyBvcHRpb25zCi0gICAgcHcucHJpbnQoIiAgICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fQVNTRVJUSU9OX1JFU1VMVFMgKyAiICIpOwotICAgIHB3LnByaW50KFdTSUNvbnN0YW50cy5BVFRSX1RZUEUgKyAiPVwiIiArIGdldEFzc2VydGlvblJlc3VsdFR5cGUoKSArICJcIiAiKTsKLSAgICBwdy5wcmludCgKLSAgICAgIFdTSUNvbnN0YW50cy5BVFRSX01FU1NBR0VfRU5UUlkgKyAiPVwiIiArIGdldFNob3dNZXNzYWdlRW50cnkoKSArICJcIiAiKTsKLSAgICBwdy5wcmludCgKLSAgICAgIFdTSUNvbnN0YW50cy5BVFRSX0FTU0VSVElPTl9ERVNDUklQVElPTgotICAgICAgICArICI9XCIiCi0gICAgICAgICsgZ2V0U2hvd0Fzc2VydGlvbkRlc2NyaXB0aW9uKCkKLSAgICAgICAgKyAiXCIgIik7Ci0gICAgcHcucHJpbnQoCi0gICAgICBXU0lDb25zdGFudHMuQVRUUl9GQUlMVVJFX01FU1NBR0UKLSAgICAgICAgKyAiPVwiIgotICAgICAgICArIGdldFNob3dGYWlsdXJlTWVzc2FnZSgpCi0gICAgICAgICsgIlwiICIpOwotICAgIHB3LnByaW50bG4oCi0gICAgICBXU0lDb25zdGFudHMuQVRUUl9GQUlMVVJFX0RFVEFJTAotICAgICAgICArICI9XCIiCi0gICAgICAgICsgZ2V0U2hvd0ZhaWx1cmVEZXRhaWwoKQotICAgICAgICArICJcIi8+Iik7Ci0gICAgLy8gUkVNT1ZFOgotICAgIC8vcHcucHJpbnRsbihXU0lDb25zdGFudHMuQVRUUl9XQVJOSU5HX01FU1NBR0UgKyAiPVwiIiArIGdldFNob3dXYXJuaW5nTWVzc2FnZSgpICsgIlwiLz4iKTsKLQotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvaW1wbC9VRERJUmVmZXJlbmNlSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL2ltcGwvVURESVJlZmVyZW5jZUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRjN2I2Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvaW1wbC9VRERJUmVmZXJlbmNlSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTk3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLlVERElSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMRWxlbWVudDsKLQotLyoqCi0gKiBUaGUgaWltcGxlbWVudGF0aW9uIGZvciBhIHJlZmVyZW5jZSB0byBhIGRpc2NvdmVyeSBhcnRpZmFjdC4gIAotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgVURESVJlZmVyZW5jZUltcGwgaW1wbGVtZW50cyBVRERJUmVmZXJlbmNlCi17Ci0gIC8qKgotICAgKiBVRERJIGtleSB0eXBlLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBrZXlUeXBlID0gbnVsbDsKLQotICAvKioKLSAgICogVURESSBrZXkuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGtleSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFVEREkgaW5xdWlyeSBVUkwuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGlucXVpcnlVUkwgPSBudWxsOwotCi0gIC8qKgotICAgKiBXU0RMIGVsZW1lbnQuCi0gICAqLwotICBwcm90ZWN0ZWQgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQgPSBudWxsOwotCi0gIC8qKgotICAgKiBTZXJ2aWNlIGxvY2F0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBzZXJ2aWNlTG9jYXRpb24gPSBudWxsOwotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuVURESVJlZmVyZW5jZSNnZXRLZXlUeXBlKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0S2V5VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5rZXlUeXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5VRERJUmVmZXJlbmNlI3NldEtleVR5cGUoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0S2V5VHlwZShTdHJpbmcga2V5VHlwZSkKLSAgewotICAgIGlmIChrZXlUeXBlLmVxdWFscyhCSU5ESU5HX0tFWSkgfHwga2V5VHlwZS5lcXVhbHMoVE1PREVMX0tFWSkpCi0gICAgICB0aGlzLmtleVR5cGUgPSBrZXlUeXBlOwotICAgIGVsc2UKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICJJbnZhbGlkIFVEREkga2V5IHR5cGU6IFsiICsga2V5VHlwZSArICJdLiIpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5VRERJUmVmZXJlbmNlI2dldEtleSgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEtleSgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5rZXk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLlVERElSZWZlcmVuY2Ujc2V0S2V5KFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEtleShTdHJpbmcga2V5KQotICB7Ci0gICAgdGhpcy5rZXkgPSBrZXk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLlVERElSZWZlcmVuY2UjZ2V0SW5xdWlyeVVSTCgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldElucXVpcnlVUkwoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuaW5xdWlyeVVSTDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuVURESVJlZmVyZW5jZSNzZXRJbnF1aXJ5VVJMKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldElucXVpcnlVUkwoU3RyaW5nIGlucXVpcnlVUkwpCi0gIHsKLSAgICB0aGlzLmlucXVpcnlVUkwgPSBpbnF1aXJ5VVJMOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMUmVmZXJlbmNlI2dldFdTRExFbGVtZW50KCkKLSAgICovCi0gIHB1YmxpYyBXU0RMRWxlbWVudCBnZXRXU0RMRWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy53c2RsRWxlbWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuV1NETFJlZmVyZW5jZSNzZXRXU0RMRWxlbWVudChXU0RMRWxlbWVudCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdTRExFbGVtZW50KFdTRExFbGVtZW50IHdzZGxFbGVtZW50KQotICB7Ci0gICAgdGhpcy53c2RsRWxlbWVudCA9IHdzZGxFbGVtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMUmVmZXJlbmNlI2dldFNlcnZpY2VMb2NhdGlvbigpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFNlcnZpY2VMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTG9jYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLldTRExSZWZlcmVuY2Ujc2V0U2VydmljZUxvY2F0aW9uKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VMb2NhdGlvbihTdHJpbmcgc2VydmljZUxvY2F0aW9uKQotICB7Ci0gICAgdGhpcy5zZXJ2aWNlTG9jYXRpb24gPSBzZXJ2aWNlTG9jYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLQotICAgIHB3LnByaW50bG4oIiAgVURESSBSZWZlcmVuY2U6ICIpOwotICAgIHB3LnByaW50bG4oIiAgICBVRERJIEtleTogIik7Ci0gICAgcHcucHJpbnRsbigiICAgICAgdHlwZSAuLi4uLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLmtleVR5cGUpOwotICAgIHB3LnByaW50bG4oIiAgICAgIGtleSAuLi4uLi4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy5rZXkpOwotICAgIHB3LnByaW50bG4oIiAgICBpbnF1aXJ5VVJMIC4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy5pbnF1aXJ5VVJMKTsKLSAgICBpZiAodGhpcy5zZXJ2aWNlTG9jYXRpb24gIT0gbnVsbCkKLSAgICAgIHB3LnByaW50bG4oIiAgICBzZXJ2aWNlTG9jYXRpb24gLi4uLi4uLi4uLiAiICsgdGhpcy5zZXJ2aWNlTG9jYXRpb24pOwotICAgIGlmICh0aGlzLndzZGxFbGVtZW50ICE9IG51bGwpCi0gICAgICBwdy5wcmludCh0aGlzLndzZGxFbGVtZW50LnRvU3RyaW5nKCkpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50I3RvWE1MU3RyaW5nKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIC8vIEVsZW1lbnQKLSAgICBwdy5wcmludGxuKCIgICAgICA8IiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0gICAgcHcucHJpbnQoIiAgICAgICAgPCIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9VRERJX0tFWSArICIgIik7Ci0gICAgcHcucHJpbnQoV1NJQ29uc3RhbnRzLkFUVFJfVFlQRSArICI9XCIiICsgZ2V0S2V5VHlwZSgpICsgIlwiPiIpOwotICAgIHB3LnByaW50KGdldEtleSgpKTsKLSAgICBwdy5wcmludGxuKCI8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9VRERJX0tFWSArICI+Iik7Ci0gICAgcHcucHJpbnQoIiAgICAgICAgPCIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9JTlFVSVJZX1VSTCArICI+Iik7Ci0gICAgcHcucHJpbnQoZ2V0SW5xdWlyeVVSTCgpKTsKLSAgICBwdy5wcmludGxuKCI8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9JTlFVSVJZX1VSTCArICI+Iik7Ci0KLSAgICBpZiAodGhpcy53c2RsRWxlbWVudCAhPSBudWxsKQotICAgICAgcHcucHJpbnQoZ2V0V1NETEVsZW1lbnQoKS50b1hNTFN0cmluZyhuc05hbWUpKTsKLQotICAgIGlmICh0aGlzLnNlcnZpY2VMb2NhdGlvbiAhPSBudWxsKQotICAgIHsKLSAgICAgIHB3LnByaW50KCIgICAgICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fU0VSVklDRV9MT0NBVElPTiArICI+Iik7Ci0gICAgICBwdy5wcmludChnZXRTZXJ2aWNlTG9jYXRpb24oKSk7Ci0gICAgICBwdy5wcmludGxuKAotICAgICAgICAiICAgICAgICA8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9TRVJWSUNFX0xPQ0FUSU9OICsgIj4iKTsKLSAgICB9Ci0KLSAgICBwdy5wcmludGxuKCIgICAgICA8LyIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiPiIpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL2ltcGwvV1NETEVsZW1lbnRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvaW1wbC9XU0RMRWxlbWVudEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVjNjdkNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9hbmFseXplci9jb25maWcvaW1wbC9XU0RMRWxlbWVudEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuV1NETFZhbGlkYXRvcjsKLQotLyoqCi0gKiBUaGUgaW1wbGVtZW50YXRpb24gZm9yIFdTREwgZGVmaW5pdGlvbnMuIAotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgV1NETEVsZW1lbnRJbXBsIGltcGxlbWVudHMgV1NETEVsZW1lbnQKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyB0eXBlOwotICBwcm90ZWN0ZWQgU3RyaW5nIG5hbWVzcGFjZTsKLSAgcHJvdGVjdGVkIFN0cmluZyBuYW1lOwotICBwcm90ZWN0ZWQgU3RyaW5nIHBhcmVudEVsZW1lbnROYW1lOwotCi0gIC8qKgotICAgKiBAc2VlICNzZXRUeXBlCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMudHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlICNnZXRUeXBlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUeXBlKFN0cmluZyB0eXBlKQotICB7Ci0gICAgdGhpcy50eXBlID0gdHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlICNzZXROYW1lc3BhY2UKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZXNwYWNlKCkKLSAgewotICAgIHJldHVybiB0aGlzLm5hbWVzcGFjZTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlICNnZXROYW1lc3BhY2UKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE5hbWVzcGFjZShTdHJpbmcgbmFtZXNwYWNlKQotICB7Ci0gICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSAjc2V0TmFtZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXROYW1lKCkKLSAgewotICAgIHJldHVybiB0aGlzLm5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSAjZ2V0TmFtZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkKLSAgewotICAgIHRoaXMubmFtZSA9IG5hbWU7Ci0gIH0KLQotICBwdWJsaWMgUU5hbWUgZ2V0UU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBRTmFtZSh0aGlzLm5hbWVzcGFjZSwgdGhpcy5uYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgV1NETCBwYXJlbnQgZWxlbWVudCBuYW1lLgotICAgKiBAc2VlICNzZXRQYXJlbnRFbGVtZW50TmFtZQotICAKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UGFyZW50RWxlbWVudE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMucGFyZW50RWxlbWVudE5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogU2V0IFdTREwgcGFyZW50IGVsZW1lbnQgbmFtZS4KLSAgICogQHNlZSAjZ2V0UGFyZW50RWxlbWVudE5hbWUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFBhcmVudEVsZW1lbnROYW1lKFN0cmluZyBwYXJlbnRFbGVtZW50TmFtZSkKLSAgewotICAgIHRoaXMucGFyZW50RWxlbWVudE5hbWUgPSBwYXJlbnRFbGVtZW50TmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5hbmFseXplci5jb25maWcuV1NETEVsZW1lbnQjZ2V0UGFyZW50RWxlbWVudFFOYW1lKCkKLSAgICovCi0gIHB1YmxpYyBRTmFtZSBnZXRQYXJlbnRFbGVtZW50UU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBRTmFtZSh0aGlzLm5hbWVzcGFjZSwgdGhpcy5wYXJlbnRFbGVtZW50TmFtZSk7Ci0gIH0KLQotICAvKioKLSAgICogSXMgcG9ydCBlbGVtZW50LgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNQb3J0KCkKLSAgewotICAgIHJldHVybiB0eXBlLmVxdWFscyhXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fUE9SVCk7Ci0gIH0KLQotICAvKioKLSAgICogSXMgYmluZGluZyBlbGVtZW50LgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNCaW5kaW5nKCkKLSAgewotICAgIHJldHVybiB0eXBlLmVxdWFscyhXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fQklORElORyk7Ci0gIH0KLQotICAvKioKLSAgICogSXMgcG9ydFR5cGUgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzUG9ydFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHR5cGUuZXF1YWxzKFdTRExWYWxpZGF0b3IuVFlQRV9ERVNDUklQVElPTl9QT1JUVFlQRSk7Ci0gIH0KLQotICAvKioKLSAgICogSXMgb3BlcmF0aW9uIGVsZW1lbnQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc09wZXJhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdHlwZS5lcXVhbHMoV1NETFZhbGlkYXRvci5UWVBFX0RFU0NSSVBUSU9OX09QRVJBVElPTik7Ci0gIH0KLQotICAvKioKLSAgICogSXMgbWVzc2FnZSBlbGVtZW50LgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiB0eXBlLmVxdWFscyhXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fTUVTU0FHRSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLQotICAgIHB3LnByaW50bG4oIiAgICBXU0RMIEVsZW1lbnQ6ICIpOwotICAgIHB3LnByaW50bG4oIiAgICAgIHR5cGUgLi4uLi4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy50eXBlKTsKLSAgICBwdy5wcmludGxuKCIgICAgICBuYW1lc3BhY2UgLi4uLi4uLi4uLi4uLi4gIiArIHRoaXMubmFtZXNwYWNlKTsKLSAgICBwdy5wcmludGxuKCIgICAgICBuYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4gIiArIHRoaXMubmFtZSk7Ci0KLSAgICBpZiAodGhpcy5wYXJlbnRFbGVtZW50TmFtZSAhPSBudWxsKQotICAgICAgcHcucHJpbnRsbigiICAgICAgcGFyZW50RWxlbWVudE5hbWUgLi4uLi4uICIgKyB0aGlzLnBhcmVudEVsZW1lbnROYW1lKTsKLQotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdCBhcyBhbiBYTUwgc3RyaW5nLgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gQ29uZmlnIG9wdGlvbnMKLSAgICBwdy5wcmludCgiICAgICAgICA8IiArIG5zTmFtZSArIEVMRU1fTkFNRSArICIgIik7Ci0gICAgcHcucHJpbnQoV1NJQ29uc3RhbnRzLkFUVFJfVFlQRSArICI9XCIiICsgZ2V0VHlwZSgpICsgIlwiICIpOwotICAgIHB3LnByaW50KFdTSUNvbnN0YW50cy5BVFRSX05BTUVTUEFDRSArICI9XCIiICsgZ2V0TmFtZXNwYWNlKCkgKyAiXCIgIik7Ci0gICAgaWYgKHRoaXMucGFyZW50RWxlbWVudE5hbWUgIT0gbnVsbCkKLSAgICAgIHB3LnByaW50KAotICAgICAgICBXU0lDb25zdGFudHMuQVRUUl9QQVJFTlRfRUxFTUVOVF9OQU1FCi0gICAgICAgICAgKyAiPVwiIgotICAgICAgICAgICsgZ2V0UGFyZW50RWxlbWVudE5hbWUoKQotICAgICAgICAgICsgIlwiIik7Ci0gICAgcHcucHJpbnQoIj4iKTsKLSAgICBwdy5wcmludChnZXROYW1lKCkpOwotICAgIHB3LnByaW50bG4oIjwvIiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL2ltcGwvV1NETFJlZmVyZW5jZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2FuYWx5emVyL2NvbmZpZy9pbXBsL1dTRExSZWZlcmVuY2VJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0YmZmNDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvYW5hbHl6ZXIvY29uZmlnL2ltcGwvV1NETFJlZmVyZW5jZUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLldTRExFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuV1NETFJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotCi0vKioKLSAqIFRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYSByZWZlcmVuY2UgdG8gYSBkZXNjcmlwdGlvbiBhcnRpZmFjdC4gIAotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgV1NETFJlZmVyZW5jZUltcGwgaW1wbGVtZW50cyBXU0RMUmVmZXJlbmNlCi17Ci0gIC8qKgotICAgKiBXU0RMIGVsZW1lbnQuCi0gICAqLwotICBwcm90ZWN0ZWQgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQgPSBudWxsOwotCi0gIC8qKgotICAgKiBTZXJ2aWNlIGxvY2F0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBzZXJ2aWNlTG9jYXRpb24gPSBudWxsOwotCi0gIC8qKgotICAgKiBXU0RMIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyB3c2RsTG9jYXRpb24gPSBudWxsOwotCi0gIC8qKgotICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIFdTRExSZWZlcmVuY2VJbXBsKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIHdpdGggYWxsIHNldHRpbmdzLgotICAgKiBAcGFyYW0gd3NkbEVsZW1lbnQgICAgICBhIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHdzZGxMb2NhdGlvbiAgICAgYSBXU0RMIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKiBAcGFyYW0gc2VydmljZUxvY2F0aW9uICBhIHNlcnZpY2UgbG9jYXRpb24uCi0gICAqLwotICBwdWJsaWMgV1NETFJlZmVyZW5jZUltcGwoCi0gICAgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQsCi0gICAgU3RyaW5nIHdzZGxMb2NhdGlvbiwKLSAgICBTdHJpbmcgc2VydmljZUxvY2F0aW9uKQotICB7Ci0gICAgdGhpcy53c2RsRWxlbWVudCA9IHdzZGxFbGVtZW50OwotICAgIHRoaXMud3NkbExvY2F0aW9uID0gd3NkbExvY2F0aW9uOwotICAgIHRoaXMuc2VydmljZUxvY2F0aW9uID0gc2VydmljZUxvY2F0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMUmVmZXJlbmNlI2dldFdTRExFbGVtZW50KCkKLSAgICovCi0gIHB1YmxpYyBXU0RMRWxlbWVudCBnZXRXU0RMRWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy53c2RsRWxlbWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuV1NETFJlZmVyZW5jZSNzZXRXU0RMRWxlbWVudChXU0RMRWxlbWVudCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdTRExFbGVtZW50KFdTRExFbGVtZW50IHdzZGxFbGVtZW50KQotICB7Ci0gICAgdGhpcy53c2RsRWxlbWVudCA9IHdzZGxFbGVtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5XU0RMUmVmZXJlbmNlI2dldFdTRExMb2NhdGlvbigpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFdTRExMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy53c2RsTG9jYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLldTRExSZWZlcmVuY2Ujc2V0V1NETExvY2F0aW9uKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdTRExMb2NhdGlvbihTdHJpbmcgd3NkbExvY2F0aW9uKQotICB7Ci0gICAgdGhpcy53c2RsTG9jYXRpb24gPSB3c2RsTG9jYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLldTRExSZWZlcmVuY2UjZ2V0U2VydmljZUxvY2F0aW9uKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZUxvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiB0aGlzLnNlcnZpY2VMb2NhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuV1NETFJlZmVyZW5jZSNzZXRTZXJ2aWNlTG9jYXRpb24oKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U2VydmljZUxvY2F0aW9uKFN0cmluZyBzZXJ2aWNlTG9jYXRpb24pCi0gIHsKLSAgICB0aGlzLnNlcnZpY2VMb2NhdGlvbiA9IHNlcnZpY2VMb2NhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgcHcucHJpbnRsbigiICBXU0RMIFJlZmVyZW5jZToiKTsKLSAgICBwdy5wcmludCh0aGlzLndzZGxFbGVtZW50LnRvU3RyaW5nKCkpOwotICAgIHB3LnByaW50bG4oIiAgICB3c2RsVVJJIC4uLi4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy53c2RsTG9jYXRpb24pOwotICAgIGlmICh0aGlzLnNlcnZpY2VMb2NhdGlvbiAhPSBudWxsKQotICAgICAgcHcucHJpbnRsbigiICBzZXJ2aWNlTG9jYXRpb24gLi4uLi4uLi4uLiAiICsgdGhpcy5zZXJ2aWNlTG9jYXRpb24pOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50I3RvWE1MU3RyaW5nKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIC8vIEVsZW1lbnQKLSAgICBwdy5wcmludGxuKCIgICAgICA8IiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0gICAgcHcucHJpbnQoZ2V0V1NETEVsZW1lbnQoKS50b1hNTFN0cmluZyhuc05hbWUpKTsKLSAgICBwdy5wcmludCgiICAgICAgICA8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX1dTRExfVVJJICsgIj4iKTsKLSAgICBwdy5wcmludChnZXRXU0RMTG9jYXRpb24oKSk7Ci0gICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fV1NETF9VUkkgKyAiPiIpOwotCi0gICAgaWYgKHRoaXMuc2VydmljZUxvY2F0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgcHcucHJpbnQoIiAgICAgICAgPCIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9TRVJWSUNFX0xPQ0FUSU9OICsgIj4iKTsKLSAgICAgIHB3LnByaW50KFhNTFV0aWxzLnhtbEVzY2FwZWRTdHJpbmcoZ2V0U2VydmljZUxvY2F0aW9uKCkpKTsKLSAgICAgIHB3LnByaW50bG4oIjwvIiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX1NFUlZJQ0VfTE9DQVRJT04gKyAiPiIpOwotICAgIH0KLQotICAgIHB3LnByaW50bG4oIiAgICAgIDwvIiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9jb21tb24vQWRkU3R5bGVTaGVldC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvY29tbW9uL0FkZFN0eWxlU2hlZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZkZjdmOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9jb21tb24vQWRkU3R5bGVTaGVldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5jb21tb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQ7Ci0KLS8qKgotICogVGhlIGludGVyZmFjZSBmb3IgQWRkU3R5bGVTaGVldCBlbGVtZW50LiAKLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAgKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBBZGRTdHlsZVNoZWV0IGV4dGVuZHMgRG9jdW1lbnRFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9BRERfU1RZTEVfU0hFRVQ7Ci0KLSAgLyoqCi0gICAqIEdldCBocmVmLgotICAgKiBAcmV0dXJuIGhyZWYuCi0gICAqIEBzZWUgI3NldEhyZWYKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SHJlZigpOwotCi0gIC8qKgotICAgKiBTZXQgaHJlZi4KLSAgICogQHBhcmFtIGhyZWYgYSBocmVmLgotICAgKiBAc2VlICNnZXRIcmVmCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIcmVmKFN0cmluZyBocmVmKTsKLQotICAvKioKLSAgICogR2V0IHR5cGUuCi0gICAqIEByZXR1cm4gdHlwZS4KLSAgICogQHNlZSAjc2V0VHlwZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFNldCB0eXBlLgotICAgKiBAcGFyYW0gdHlwZSBhIHR5cGUuCi0gICAqIEBzZWUgI2dldFR5cGUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFR5cGUoU3RyaW5nIHR5cGUpOwotCi0gIC8qKgotICAgKiBHZXQgdGl0bGUuCi0gICAqIEByZXR1cm4gdGl0bGUuCi0gICAqIEBzZWUgI3NldFRpdGxlCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFRpdGxlKCk7Ci0KLSAgLyoqCi0gICAqIFNldCB0aXRsZS4KLSAgICogQHBhcmFtIHRpdGxlIGEgdGl0bGUuCi0gICAqIEBzZWUgI2dldFRpdGxlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUaXRsZShTdHJpbmcgdGl0bGUpOwotCi0gIC8qKgotICAgKiBHZXQgbWVkaWEuCi0gICAqIEByZXR1cm4gbWVkaWEuCi0gICAqIEBzZWUgI3NldE1lZGlhCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE1lZGlhKCk7Ci0KLSAgLyoqCi0gICAqIFNldCB0aXRsZS4KLSAgICogQHBhcmFtIG1lZGlhIG1lZGlhLgotICAgKiBAc2VlICNnZXRNZWRpYQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TWVkaWEoU3RyaW5nIG1lZGlhKTsKLQotICAvKioKLSAgICogR2V0IGNoYXJzZXQuCi0gICAqIEByZXR1cm4gY2hhcnNldC4KLSAgICogQHNlZSAjc2V0Q2hhcnNldAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRDaGFyc2V0KCk7Ci0KLSAgLyoqCi0gICAqIFNldCBjaGFyc2V0LgotICAgKiBAcGFyYW0gY2hhcnNldCBjaGFyc2V0LgotICAgKiBAc2VlICNnZXRDaGFyc2V0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDaGFyc2V0KFN0cmluZyBjaGFyc2V0KTsKLQotICAvKioKLSAgICogR2V0IGFsdGVybmF0ZS4KLSAgICogQHJldHVybiBhbHRlcm5hdGUuCi0gICAqIEBzZWUgI3NldEFsdGVybmF0ZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRBbHRlcm5hdGUoKTsKLQotICAvKioKLSAgICogU2V0IGFsdGVybmF0ZS4KLSAgICogQHBhcmFtIGFsdGVybmF0ZSBhbHRlcm5hdGUuCi0gICAqIEBzZWUgI2dldEFsdGVybmF0ZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QWx0ZXJuYXRlKFN0cmluZyBhbHRlcm5hdGUpOwotCi0gIC8qKgotICAgKiBTZXQgaWYgdGhlIHN0eWxlIHNoZWV0IGRlY2xhcmF0aW9uIHNob3VsZCBiZSBhIGNvbW1lbnQuCi0gICAqIEBwYXJhbSBjb21tZW50IGEgYm9vbGVhbi4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENvbW1lbnQoYm9vbGVhbiBjb21tZW50KTsKLQotICAvKioKLSAgICogR2V0IHN0eWxlIHNoZWV0IGRlY2xhcmF0aW9uLgotICAgKiBAcmV0dXJuIHN0eWxlIHNoZWV0IGRlY2xhcmF0aW9uLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTdHlsZVNoZWV0U3RyaW5nKCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9jb21tb24vaW1wbC9BZGRTdHlsZVNoZWV0SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvY29tbW9uL2ltcGwvQWRkU3R5bGVTaGVldEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk2NWQxNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9jb21tb24vaW1wbC9BZGRTdHlsZVNoZWV0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5jb21tb24uaW1wbDsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLlRyZWVNYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5jb21tb24uQWRkU3R5bGVTaGVldDsKLQotLyoqCi0gKiBUaGUgaW1wbGVtZW50YXRpb24gZm9yIEFkZFN0eWxlU2hlZXQgZWxlbWVudC4gCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBBZGRTdHlsZVNoZWV0SW1wbCBpbXBsZW1lbnRzIEFkZFN0eWxlU2hlZXQKLXsKLSAgLyoqCi0gICAqIEF0dHJpYnV0ZSB2YWx1ZXMuCi0gICAqLwotICBwcm90ZWN0ZWQgVHJlZU1hcCBhdHRyaWJ1dGVWYWx1ZUxpc3QgPSBuZXcgVHJlZU1hcCgpOwotCi0gIC8qKgotICAgKiBMaXN0IG9mIGF0dHJpYnV0ZXMuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nW10gYXR0cmlidXRlTmFtZUxpc3QgPQotICAgIHsKLSAgICAgIFdTSUNvbnN0YW50cy5BVFRSX0hSRUYsCi0gICAgICBXU0lDb25zdGFudHMuQVRUUl9UWVBFLAotICAgICAgV1NJQ29uc3RhbnRzLkFUVFJfVElUTEUsCi0gICAgICBXU0lDb25zdGFudHMuQVRUUl9NRURJQSwKLSAgICAgIFdTSUNvbnN0YW50cy5BVFRSX0NIQVJTRVQsCi0gICAgICBXU0lDb25zdGFudHMuQVRUUl9BTFRFUk5BVEUgfTsKLQotICAvKioKLSAgICogU2V0IGlmIHRoZSBzdHlsZSBzaGVldCBkZWNsYXJhdGlvbiBzaG91bGQgYmUgYSBjb21tZW50LgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gY29tbWVudCA9IGZhbHNlOwotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuY29tbW9uLkFkZFN0eWxlU2hlZXQjZ2V0SHJlZigpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEhyZWYoKQotICB7Ci0gICAgcmV0dXJuIChTdHJpbmcpIHRoaXMuYXR0cmlidXRlVmFsdWVMaXN0LmdldChXU0lDb25zdGFudHMuQVRUUl9IUkVGKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuY29tbW9uLkFkZFN0eWxlU2hlZXQjc2V0SHJlZihTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIcmVmKFN0cmluZyBocmVmKQotICB7Ci0gICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZUxpc3QucHV0KFdTSUNvbnN0YW50cy5BVFRSX0hSRUYsIGhyZWYpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5jb21tb24uQWRkU3R5bGVTaGVldCNnZXRUeXBlKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gKFN0cmluZykgdGhpcy5hdHRyaWJ1dGVWYWx1ZUxpc3QuZ2V0KFdTSUNvbnN0YW50cy5BVFRSX1RZUEUpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5jb21tb24uQWRkU3R5bGVTaGVldCNzZXRUeXBlKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFR5cGUoU3RyaW5nIHR5cGUpCi0gIHsKLSAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlTGlzdC5wdXQoV1NJQ29uc3RhbnRzLkFUVFJfVFlQRSwgdHlwZSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmNvbW1vbi5BZGRTdHlsZVNoZWV0I2dldFRpdGxlKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VGl0bGUoKQotICB7Ci0gICAgcmV0dXJuIChTdHJpbmcpIHRoaXMuYXR0cmlidXRlVmFsdWVMaXN0LmdldChXU0lDb25zdGFudHMuQVRUUl9USVRMRSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmNvbW1vbi5BZGRTdHlsZVNoZWV0I3NldFRpdGxlKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRpdGxlKFN0cmluZyB0aXRsZSkKLSAgewotICAgIHRoaXMuYXR0cmlidXRlVmFsdWVMaXN0LnB1dChXU0lDb25zdGFudHMuQVRUUl9USVRMRSwgdGl0bGUpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5jb21tb24uQWRkU3R5bGVTaGVldCNnZXRNZWRpYSgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldE1lZGlhKCkKLSAgewotICAgIHJldHVybiAoU3RyaW5nKSB0aGlzLmF0dHJpYnV0ZVZhbHVlTGlzdC5nZXQoV1NJQ29uc3RhbnRzLkFUVFJfTUVESUEpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5jb21tb24uQWRkU3R5bGVTaGVldCNzZXRNZWRpYShTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNZWRpYShTdHJpbmcgbWVkaWEpCi0gIHsKLSAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlTGlzdC5wdXQoV1NJQ29uc3RhbnRzLkFUVFJfTUVESUEsIG1lZGlhKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuY29tbW9uLkFkZFN0eWxlU2hlZXQjZ2V0Q2hhcnNldCgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldENoYXJzZXQoKQotICB7Ci0gICAgcmV0dXJuIChTdHJpbmcpIHRoaXMuYXR0cmlidXRlVmFsdWVMaXN0LmdldChXU0lDb25zdGFudHMuQVRUUl9DSEFSU0VUKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuY29tbW9uLkFkZFN0eWxlU2hlZXQjc2V0Q2hhcnNldChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDaGFyc2V0KFN0cmluZyBjaGFyc2V0KQotICB7Ci0gICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZUxpc3QucHV0KFdTSUNvbnN0YW50cy5BVFRSX0NIQVJTRVQsIGNoYXJzZXQpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5jb21tb24uQWRkU3R5bGVTaGVldCNnZXRBbHRlcm5hdGUoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRBbHRlcm5hdGUoKQotICB7Ci0gICAgcmV0dXJuIChTdHJpbmcpIHRoaXMuYXR0cmlidXRlVmFsdWVMaXN0LmdldChXU0lDb25zdGFudHMuQVRUUl9BTFRFUk5BVEUpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5jb21tb24uQWRkU3R5bGVTaGVldCNzZXRBbHRlcm5hdGUoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QWx0ZXJuYXRlKFN0cmluZyBhbHRlcm5hdGUpCi0gIHsKLSAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlTGlzdC5wdXQoV1NJQ29uc3RhbnRzLkFUVFJfQUxURVJOQVRFLCBhbHRlcm5hdGUpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBTZXQgaWYgdGhlIHN0eWxlIHNoZWV0IGRlY2xhcmF0aW9uIHNob3VsZCBiZSBhIGNvbW1lbnQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb21tZW50KGJvb2xlYW4gY29tbWVudCkKLSAgewotICAgIHRoaXMuY29tbWVudCA9IGNvbW1lbnQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmNvbW1vbi5BZGRTdHlsZVNoZWV0I2dldFN0eWxlU2hlZXRTdHJpbmcoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTdHlsZVNoZWV0U3RyaW5nKCkKLSAgewotICAgIFN0cmluZ0J1ZmZlciBzdHlsZVNoZWV0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotCi0gICAgaWYgKGNvbW1lbnQpCi0gICAgICBzdHlsZVNoZWV0LmFwcGVuZCgiPCEtLSAiKTsKLQotICAgIHN0eWxlU2hlZXQuYXBwZW5kKCI8P3htbC1zdHlsZXNoZWV0Iik7Ci0KLSAgICBTdHJpbmcgdmFsdWU7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVOYW1lTGlzdC5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoKHZhbHVlID0gKFN0cmluZykgYXR0cmlidXRlVmFsdWVMaXN0LmdldChhdHRyaWJ1dGVOYW1lTGlzdFtpXSkpCi0gICAgICAgICE9IG51bGwpCi0gICAgICAgIHN0eWxlU2hlZXQuYXBwZW5kKCIgIiArIGF0dHJpYnV0ZU5hbWVMaXN0W2ldICsgIj1cIiIgKyB2YWx1ZSArICJcIiIpOwotICAgIH0KLQotICAgIC8vIEVuZCBlbGVtZW50Ci0gICAgc3R5bGVTaGVldC5hcHBlbmQoIiA/PiIpOwotCi0gICAgaWYgKGNvbW1lbnQpCi0gICAgICBzdHlsZVNoZWV0LmFwcGVuZCgiIC0tPiIpOwotCi0gICAgcmV0dXJuIHN0eWxlU2hlZXQudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICByZXR1cm4gZ2V0U3R5bGVTaGVldFN0cmluZygpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQjdG9YTUxTdHJpbmcoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gQ29uZmlnIG9wdGlvbnMKLSAgICBwdy5wcmludCgiICAgICAgPCIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiICIpOwotICAgIHB3LnByaW50KFdTSUNvbnN0YW50cy5BVFRSX0hSRUYgKyAiPVwiIiArIGdldEhyZWYoKSArICJcIiAiKTsKLSAgICBwdy5wcmludChXU0lDb25zdGFudHMuQVRUUl9UWVBFICsgIj1cIiIgKyBnZXRUeXBlKCkgKyAiXCIgIik7Ci0gICAgaWYgKGdldFRpdGxlKCkgIT0gbnVsbCkKLSAgICAgIHB3LnByaW50KFdTSUNvbnN0YW50cy5BVFRSX1RJVExFICsgIj1cIiIgKyBnZXRUaXRsZSgpICsgIlwiICIpOwotICAgIGlmIChnZXRNZWRpYSgpICE9IG51bGwpCi0gICAgICBwdy5wcmludChXU0lDb25zdGFudHMuQVRUUl9NRURJQSArICI9XCIiICsgZ2V0TWVkaWEoKSArICJcIiAiKTsKLSAgICBpZiAoZ2V0Q2hhcnNldCgpICE9IG51bGwpCi0gICAgICBwdy5wcmludChXU0lDb25zdGFudHMuQVRUUl9DSEFSU0VUICsgIj1cIiIgKyBnZXRDaGFyc2V0KCkgKyAiXCIgIik7Ci0gICAgaWYgKGdldEFsdGVybmF0ZSgpICE9IG51bGwpCi0gICAgICBwdy5wcmludChXU0lDb25zdGFudHMuQVRUUl9BTFRFUk5BVEUgKyAiPVwiIiArIGdldEFsdGVybmF0ZSgpICsgIlwiICIpOwotICAgIHB3LnByaW50bG4oIi8+Iik7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9kb2N1bWVudC9Eb2N1bWVudEVsZW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2RvY3VtZW50L0RvY3VtZW50RWxlbWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTZkMjc4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2RvY3VtZW50L0RvY3VtZW50RWxlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50OwotCi0vKioKLSAqIERlZmluZXMgdGhlIGludGVyZmFjZSB1c2VkIGZvciBhbGwgQ29uZm9ybWFuY2UgWE1MIGRvY3VtZW50cy4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIERvY3VtZW50RWxlbWVudAotewotICAvKioKLSAgICogUmV0dXJuIFhNTCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VOYW1lICBhIG5hbWVzcGFjZSBwcmVmaXguCi0gICAqIEByZXR1cm4gWE1MIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpOwotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9kb2N1bWVudC9Eb2N1bWVudEZhY3RvcnkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2RvY3VtZW50L0RvY3VtZW50RmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjhkZTM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2RvY3VtZW50L0RvY3VtZW50RmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5BbmFseXplckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnUmVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nUmVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nV3JpdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnUmVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBc3NlcnRpb25zOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBc3NlcnRpb25zUmVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0V3JpdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuV1NJUHJvcGVydGllczsKLQotLyoqCi0gKiBUaGlzIGFic3RyYWN0IGNsYXNzIGRlZmluZXMgdGhlIGZhY3RvcnkgaW50ZXJmYWNlIHRoYXQgY2FuIGJlIHVzZWQgdG8gCi0gKiByZWFkIGFuZCB3cml0ZSBhbGwgb2YgdGhlIENvbmZvcm1hbmNlIFhNTCBkb2N1bWVudHMuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIERvY3VtZW50RmFjdG9yeQotewotICAvKioKLSAgICogR2V0IGEgbmV3IGluc3RhbmNlIG9mIGEgRG9jdW1lbnRGYWN0b3J5LgotICAgKiBAcmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIGEgRG9jdW1lbnRGYWN0b3J5LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBvY2N1ciBkdXJpbmcgY3JlYXRpb24uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIERvY3VtZW50RmFjdG9yeSBuZXdJbnN0YW5jZSgpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIFJldHVybiBpbnN0YW5jZSBvZiBmYWN0b3J5Ci0gICAgcmV0dXJuIG5ld0luc3RhbmNlKGdldEZhY3RvcnlDbGFzc05hbWUoKSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGEgbmV3IGluc3RhbmNlIG9mIGEgRG9jdW1lbnRGYWN0b3J5IHVzaW5nIHRoZSBzcGVjaWZpZWQKLSAgICogZmFjdG9yeSBjbGFzcyBuYW1lLgotICAgKiBAcGFyYW0gZmFjdG9yeUNsYXNzTmFtZSBmYWN0b3J5IGNsYXNzIG5hbWUuCi0gICAqIEByZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgYSBEb2N1bWVudEZhY3RvcnkuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW1zIG9jY3VyIGR1cmluZyBjcmVhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgRG9jdW1lbnRGYWN0b3J5IG5ld0luc3RhbmNlKFN0cmluZyBmYWN0b3J5Q2xhc3NOYW1lKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIERvY3VtZW50RmFjdG9yeSBkb2N1bWVudEZhY3RvcnkgPSBudWxsOwotCi0gICAgLy8gSWYgYSBmYWN0b3J5IGNsYXNzIG5hbWUgd2FzIHNwZWNpZmllZCwgdGhlbiBjcmVhdGUgb2JqZWN0Ci0gICAgaWYgKGZhY3RvcnlDbGFzc05hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgLy8gR2V0IGNsYXNzIG9iamVjdAotICAgICAgICBDbGFzcyBmYWN0b3J5Q2xhc3MgPSBDbGFzcy5mb3JOYW1lKGZhY3RvcnlDbGFzc05hbWUpOwotCi0gICAgICAgIC8vIENyZWF0ZSBuZXcgZmFjdG9yeQotICAgICAgICBkb2N1bWVudEZhY3RvcnkgPSAoRG9jdW1lbnRGYWN0b3J5KSBmYWN0b3J5Q2xhc3MubmV3SW5zdGFuY2UoKTsKLSAgICAgIH0KLQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKAotICAgICAgICAgICJDb3VsZCBub3QgaW5zdGFudGlhdGUgZG9jdW1lbnQgZmFjdG9yeSBjbGFzczogIgotICAgICAgICAgICAgKyBmYWN0b3J5Q2xhc3NOYW1lCi0gICAgICAgICAgICArICIuIiwKLSAgICAgICAgICBlKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oIkEgV1NJRG9jdW1lbnRGYWN0b3J5IGltcGxlbWVudGF0aW9uIGNsYXNzIHdhcyBub3QgZm91bmQuIik7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGZhY3RvcnkKLSAgICByZXR1cm4gZG9jdW1lbnRGYWN0b3J5OwotICB9Ci0KLSAgLy8gRE9DVU1FTlQgVFlQRVMKLQotICAvKioKLSAgICogQ3JlYXRlIGxvZyBmaWxlLgotICAgKiBAcmV0dXJuIGxvZyBmaWxlLgotICAgKi8KLSAgcHVibGljIGFic3RyYWN0IExvZyBuZXdMb2coKTsKLQotICAvKioKLSAgICogQ3JlYXRlIG1vbml0b3IgY29uZmlnLgotICAgKiBAcmV0dXJuIG5ld2x5IGNyZWF0ZWQgbW9uaXRvciBjb25maWcuCi0gICAqLwotICBwdWJsaWMgYWJzdHJhY3QgTW9uaXRvckNvbmZpZyBuZXdNb25pdG9yQ29uZmlnKCk7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhbmFseXplciBjb25maWcuCi0gICAqIEByZXR1cm4gbmV3bHkgY3JlYXRlZCBhbmFseXplciBjb25maWcuCi0gICAqLwotICBwdWJsaWMgYWJzdHJhY3QgQW5hbHl6ZXJDb25maWcgbmV3QW5hbHl6ZXJDb25maWcoKTsKLQotICAvKioKLSAgICogQ3JlYXRlIHByb2ZpbGUgYXNzZXJ0aW9ucy4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIHByb2ZpbGUgYXNzZXJ0aW9ucy4KLSAgICovCi0gIHB1YmxpYyBhYnN0cmFjdCBQcm9maWxlQXNzZXJ0aW9ucyBuZXdQcm9maWxlQXNzZXJ0aW9ucygpOwotCi0gIC8qKgotICAgKiBDcmVhdGUgcmVwb3J0LgotICAgKiBAcmV0dXJuIG5ld2x5IGNyZWF0ZWQgcmVwb3J0LgotICAgKi8KLSAgcHVibGljIGFic3RyYWN0IFJlcG9ydCBuZXdSZXBvcnQoKTsKLQotICAvLyBSRUFERVJTCi0KLSAgLyoqCi0gICAqIENyZWF0ZSBwcm9maWxlIGFzc2VydGlvbnMgcmVhZGVyLgotICAgKiBAcmV0dXJuIG5ld2x5IGNyZWF0ZWQgcHJvZmlsZSBhc3NlcnRpb25zIHJlYWRlci4KLSAgICovCi0gIHB1YmxpYyBhYnN0cmFjdCBQcm9maWxlQXNzZXJ0aW9uc1JlYWRlciBuZXdQcm9maWxlQXNzZXJ0aW9uc1JlYWRlcigpOwotCi0gIC8qKgotICAgKiBDcmVhdGUgbW9uaXRvciBjb25maWcgcmVhZGVyLgotICAgKiBAcmV0dXJuIG5ld2x5IGNyZWF0ZWQgbW9uaXRvciBjb25maWcgcmVhZGVyLgotICAgKi8KLSAgcHVibGljIGFic3RyYWN0IE1vbml0b3JDb25maWdSZWFkZXIgbmV3TW9uaXRvckNvbmZpZ1JlYWRlcigpOwotCi0gIC8qKgotICAgKiBDcmVhdGUgYW5hbHl6ZXIgY29uZmlnIHJlYWRlci4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIGFuYWx5emVyIGNvbmZpZyByZWFkZXIuCi0gICAqLwotICBwdWJsaWMgYWJzdHJhY3QgQW5hbHl6ZXJDb25maWdSZWFkZXIgbmV3QW5hbHl6ZXJDb25maWdSZWFkZXIoKTsKLQotICAvKioKLSAgICogQ3JlYXRlIGxvZyByZWFkZXIuCi0gICAqIEByZXR1cm4gbmV3bHkgY3JlYXRlZCBsb2cgcmVhZGVyLgotICAgKi8KLSAgcHVibGljIGFic3RyYWN0IExvZ1JlYWRlciBuZXdMb2dSZWFkZXIoKTsKLQotICAvLyBBREQ6IEFkZCBvdGhlciByZWFkZXJzCi0KLSAgLy8gV1JJVEVSUwotCi0gIC8qKgotICAgKiBDcmVhdGUgcmVwb3J0IHdyaXRlci4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIHJlcG9ydCB3cml0ZXIuCi0gICAqLwotICBwdWJsaWMgYWJzdHJhY3QgUmVwb3J0V3JpdGVyIG5ld1JlcG9ydFdyaXRlcigpOwotCi0gIC8qKgotICAgKiBDcmVhdGUgbG9nIHdyaXRlci4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIGxvZyB3cml0ZXIuCi0gICAqLwotICBwdWJsaWMgYWJzdHJhY3QgTG9nV3JpdGVyIG5ld0xvZ1dyaXRlcigpOwotCi0gIC8qKgotICAgKiBDcmVhdGUgYSByZXBvcnRlci4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIHJlcG9ydGVyLgotICAgKi8KLSAgcHVibGljIGFic3RyYWN0IFJlcG9ydGVyIG5ld1JlcG9ydGVyKFJlcG9ydCByZXBvcnQsIFJlcG9ydFdyaXRlciByZXBvcnRXcml0ZXIpOwotCi0gIC8vIEFERDogQWRkIG90aGVyIHdyaXRlcnMKLQotICAvKioKLSAgICogRmluZCB0aGUgZmFjdG9yeSBjbGFzcyBuYW1lIHdoaWNoIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBKYXZhIHByb3BlcnR5LgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldEZhY3RvcnlDbGFzc05hbWUoKQotICB7Ci0gICAgLy8gR2V0IHByb3BlcnR5IHZhbHVlCi0gICAgcmV0dXJuIFdTSVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoCi0gICAgICBXU0lQcm9wZXJ0aWVzLlBST1BfRE9DVU1FTlRfRkFDVE9SWSwKLSAgICAgIFdTSVByb3BlcnRpZXMuREVGX0RPQ1VNRU5UX0ZBQ1RPUlkpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9kb2N1bWVudC9Eb2N1bWVudFJlYWRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvZG9jdW1lbnQvRG9jdW1lbnRSZWFkZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg3Y2U1My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9kb2N1bWVudC9Eb2N1bWVudFJlYWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50OwotCi0vKioKLSAqIERlZmluZXMgdGhlIGludGVyZmFjZSB1c2VkIHRvIHJlYWQgdGhlIENvbmZvcm1hbmNlIFhNTCBkb2N1bWVudHMuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBEb2N1bWVudFJlYWRlcgotewotICAvKioKLSAgICogR2V0IGRvY3VtZW50IGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKiBAc2VlICNzZXRMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXQgZG9jdW1lbnQgbG9jYXRpb24uCi0gICAqIEBwYXJhbSBkb2N1bWVudFVSSSBkb2N1bWVudCBsb2NhdGlvbi4KLSAgICogQHNlZSAjZ2V0TG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKFN0cmluZyBkb2N1bWVudFVSSSk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9kb2N1bWVudC9Eb2N1bWVudFdyaXRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvZG9jdW1lbnQvRG9jdW1lbnRXcml0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM4ODkyNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9kb2N1bWVudC9Eb2N1bWVudFdyaXRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50OwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLlJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLldyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci0KLS8qKgotICogRGVmaW5lcyB0aGUgaW50ZXJmYWNlIHVzZWQgdG8gd3JpdGUgdGhlIENvbmZvcm1hbmNlIFhNTCBkb2N1bWVudHMuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBEb2N1bWVudFdyaXRlcgotewotICAvKioKLSAgICogR2V0IHRoZSBEb2N1bWVudCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQ29uZm9ybWFuY2UgZG9jdW1lbnQuCi0gICAqIEByZXR1cm4gdGhlIERvY3VtZW50IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBDb25mb3JtYW5jZSBkb2N1bWVudC4KLSAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBpZiBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4KLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudCBnZXREb2N1bWVudCgpIHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogU2V0IHdyaXRlci4KLSAgICogQHBhcmFtIGRvY3VtZW50TG9jYXRpb24gdGhlIGxvY2F0aW9uIG9mIHRoZSBkb2N1bWVudC4KLSAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiBmYWlsZWQgb3IgaW50ZXJydXB0ZWQgSS9PIG9wZXJhdGlvbnMuIAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V3JpdGVyKFN0cmluZyBkb2N1bWVudExvY2F0aW9uKSB0aHJvd3MgSU9FeGNlcHRpb247Ci0KLSAgLyoqCi0gICAqIFdyaXRlIG91dCBvbmx5IGEgcGFydCBvZiBhIGRvY3VtZW50IHRvIHRoZSBsb2NhdGlvbgotICAgKiB0aGF0IHdhcyBwcmV2aW91c2x5IHNldCB1c2luZyB0aGUgc2V0TG9jYXRpb24gbWV0aG9kLgotICAgKiBAcGFyYW0gcmVhZGVyIGEgUmVhZGVyIG9iamVjdC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdGhlcmUgaXMgdHJvdWJsZSB3cml0aW5nIG91dCB0aGUgZG9jdW1lbnQuCi0gICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGlmIHRoaXMgb3BlcmF0aW9uIGhhcyBiZWVuIGludm9rZWQgCi0gICAqICAgICAgICAgYXQgYW4gaWxsZWdhbCBvciBpbmFwcHJvcHJpYXRlIHRpbWUuCi0gICAqLwotICBwdWJsaWMgdm9pZCB3cml0ZShSZWFkZXIgcmVhZGVyKSB0aHJvd3MgV1NJRXhjZXB0aW9uLCBJbGxlZ2FsU3RhdGVFeGNlcHRpb247Ci0KLSAgLyoqCi0gICAqIFdyaXRlIG91dCBvbmx5IGEgcGFydCBvZiBhIGRvY3VtZW50LgotICAgKiBAcGFyYW0gcmVhZGVyIGEgUmVhZGVyIG9iamVjdC4KLSAgICogQHBhcmFtIHdyaXRlciBhIFdyaXRlciBvYmplY3QuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIHRyb3VibGUgd3JpdGluZyBvdXQgdGhlIGRvY3VtZW50LgotICAgKi8KLSAgcHVibGljIHZvaWQgd3JpdGUoUmVhZGVyIHJlYWRlciwgV3JpdGVyIHdyaXRlcikgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogQ2xvc2Ugd3JpdGVyLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyB0cm91YmxlIGNsb3NpbmcgdGhlIHdyaXRlci4KLSAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gaWYgdGhpcyBvcGVyYXRpb24gaGFzIGJlZW4gaW52b2tlZCAKLSAgICogICAgICAgICBhdCBhbiBpbGxlZ2FsIG9yIGluYXBwcm9wcmlhdGUgdGltZS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIFdTSUV4Y2VwdGlvbiwgSWxsZWdhbFN0YXRlRXhjZXB0aW9uOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvZG9jdW1lbnQvV1NJRG9jdW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2RvY3VtZW50L1dTSURvY3VtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4ZGIwZDcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvZG9jdW1lbnQvV1NJRG9jdW1lbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudDsKLQotLyoqCi0gKiBEZWZpbmVzIHRoZSBpbnRlcmZhY2UgdXNlZCBmb3IgYWxsIENvbmZvcm1hbmNlIFhNTCBkb2N1bWVudHMuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBXU0lEb2N1bWVudCBleHRlbmRzIERvY3VtZW50RWxlbWVudAotewotICAvKioKLSAgICogR2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgZG9jdW1lbnQuCi0gICAqIEByZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBkb2N1bWVudC4KLSAgICogQHNlZSAjc2V0TG9jYXRpb24KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9jYXRpb24oKTsKLQotICAvKioKLSAgICogU2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgZG9jdW1lbnQuCi0gICAqIEBwYXJhbSBkb2N1bWVudFVSSSB0aGUgbG9jYXRpb24gb2YgdGhlIGRvY3VtZW50LgotICAgKiBAc2VlICNnZXRMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9jYXRpb24oU3RyaW5nIGRvY3VtZW50VVJJKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2RvY3VtZW50L2ltcGwvRG9jdW1lbnRGYWN0b3J5SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvZG9jdW1lbnQvaW1wbC9Eb2N1bWVudEZhY3RvcnlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5M2ZmZDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvZG9jdW1lbnQvaW1wbC9Eb2N1bWVudEZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuQW5hbHl6ZXJDb25maWdSZWFkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5pbXBsLkFuYWx5emVyQ29uZmlnSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLmltcGwuQW5hbHl6ZXJDb25maWdSZWFkZXJJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5Mb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5Mb2dSZWFkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5Mb2dXcml0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5pbXBsLkxvZ0ltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5pbXBsLkxvZ1JlYWRlckltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5pbXBsLkxvZ1dyaXRlckltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLk1vbml0b3JDb25maWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLk1vbml0b3JDb25maWdSZWFkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLmltcGwuTW9uaXRvckNvbmZpZ0ltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLmltcGwuTW9uaXRvckNvbmZpZ1JlYWRlckltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnNSZWFkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuaW1wbC5Qcm9maWxlQXNzZXJ0aW9uc0ltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuaW1wbC5Qcm9maWxlQXNzZXJ0aW9uc1JlYWRlckltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRXcml0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LmltcGwuRGVmYXVsdFJlcG9ydGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbC5SZXBvcnRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbC5SZXBvcnRXcml0ZXJJbXBsOwotCi0vKioKLSAqIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBDb25mb3JtYW5jZSBkb2N1bWVudCBmYWN0b3J5IHdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0bwotICogaW1wbGVtZW50YXRpb25zIG9mIHRoZSBkb2N1bWVudHMsIHJlYWRlcnMgYW5kIHdyaXRlcnMuIAotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBEb2N1bWVudEZhY3RvcnlJbXBsIGV4dGVuZHMgRG9jdW1lbnRGYWN0b3J5Ci17Ci0gIC8qKgotICAgKiBEb2N1bWVudCBmYWN0b3J5IGltcGxlbWVudGF0aW9uLgotICAgKi8KLSAgcHVibGljIERvY3VtZW50RmFjdG9yeUltcGwoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGxvZyBmaWxlLgotICAgKi8KLSAgcHVibGljIExvZyBuZXdMb2coKQotICB7Ci0gICAgcmV0dXJuIG5ldyBMb2dJbXBsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIG1vbml0b3IgY29uZmlnLgotICAgKi8KLSAgcHVibGljIE1vbml0b3JDb25maWcgbmV3TW9uaXRvckNvbmZpZygpCi0gIHsKLSAgICByZXR1cm4gbmV3IE1vbml0b3JDb25maWdJbXBsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGFuYWx5emVyIGNvbmZpZy4KLSAgICovCi0gIHB1YmxpYyBBbmFseXplckNvbmZpZyBuZXdBbmFseXplckNvbmZpZygpCi0gIHsKLSAgICByZXR1cm4gbmV3IEFuYWx5emVyQ29uZmlnSW1wbCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBwcm9maWxlIGFzc2VydGlvbnMuCi0gICAqLwotICBwdWJsaWMgUHJvZmlsZUFzc2VydGlvbnMgbmV3UHJvZmlsZUFzc2VydGlvbnMoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBQcm9maWxlQXNzZXJ0aW9uc0ltcGwoKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgcmVwb3J0LgotICAgKi8KLSAgcHVibGljIFJlcG9ydCBuZXdSZXBvcnQoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBSZXBvcnRJbXBsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIG1vbml0b3IgY29uZmlnIHJlYWRlci4KLSAgICovCi0gIHB1YmxpYyBNb25pdG9yQ29uZmlnUmVhZGVyIG5ld01vbml0b3JDb25maWdSZWFkZXIoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBNb25pdG9yQ29uZmlnUmVhZGVySW1wbCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhbmFseXplciBjb25maWcgcmVhZGVyLgotICAgKi8KLSAgcHVibGljIEFuYWx5emVyQ29uZmlnUmVhZGVyIG5ld0FuYWx5emVyQ29uZmlnUmVhZGVyKCkKLSAgewotICAgIHJldHVybiBuZXcgQW5hbHl6ZXJDb25maWdSZWFkZXJJbXBsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIHByb2ZpbGUgYXNzZXJ0aW9ucyByZWFkZXIuCi0gICAqLwotICBwdWJsaWMgUHJvZmlsZUFzc2VydGlvbnNSZWFkZXIgbmV3UHJvZmlsZUFzc2VydGlvbnNSZWFkZXIoKQotICB7Ci0gICAgLy8gUmV0dXJuIGltcGxlbWVudGF0aW9uCi0gICAgcmV0dXJuIG5ldyBQcm9maWxlQXNzZXJ0aW9uc1JlYWRlckltcGwoKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgbG9nIHJlYWRlci4KLSAgICovCi0gIHB1YmxpYyBMb2dSZWFkZXIgbmV3TG9nUmVhZGVyKCkKLSAgewotICAgIC8vIFJldHVybiBpbXBsZW1lbnRhdGlvbgotICAgIHJldHVybiBuZXcgTG9nUmVhZGVySW1wbCgpOwotICB9Ci0KLSAgLy8gV1JJVEVSUwotCi0gIC8qKgotICAgKiBDcmVhdGUgbG9nIHdyaXRlci4KLSAgICovCi0gIHB1YmxpYyBMb2dXcml0ZXIgbmV3TG9nV3JpdGVyKCkKLSAgewotICAgIHJldHVybiBuZXcgTG9nV3JpdGVySW1wbCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBhIERvY3VtZW50UmVhZGVyLgotICAgKi8KLSAgcHVibGljIFJlcG9ydFdyaXRlciBuZXdSZXBvcnRXcml0ZXIoKQotICB7Ci0gICAgLy8gUmV0dXJuIGltcGxlbWVudGF0aW9uCi0gICAgcmV0dXJuIG5ldyBSZXBvcnRXcml0ZXJJbXBsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGEgRGVmYXVsdFJlcG9ydGVyCi0gICAqLwotICBwdWJsaWMgUmVwb3J0ZXIgbmV3UmVwb3J0ZXIoUmVwb3J0IHJlcG9ydCwgUmVwb3J0V3JpdGVyIHJlcG9ydFdyaXRlcikKLSAgewotICAgIHJldHVybiBuZXcgRGVmYXVsdFJlcG9ydGVyKHJlcG9ydCwgcmVwb3J0V3JpdGVyKTsKLSAgfQotCi0gIC8qKgotICAgKiBGaW5kIHRoZSBmYWN0b3J5IGNsYXNzIG5hbWUgd2hpY2ggY2FuIGJlIHNwZWNpZmllZCBhcyBhIEphdmEgcHJvcGVydHkuCi0gICAqLwotICAvL3ByaXZhdGUgc3RhdGljIFN0cmluZyBnZXRGYWN0b3J5Q2xhc3NOYW1lKCkKLSAgLy97Ci0gIC8vICAvLyBHZXQgcHJvcGVydHkgdmFsdWUKLSAgLy8gIHJldHVybiBXU0lQcm9wZXJ0aWVzLmdldFByb3BlcnR5KAotICAvLyAgICBXU0lQcm9wZXJ0aWVzLlBST1BfRE9DVU1FTlRfRkFDVE9SWSwKLSAgLy8gICAgV1NJUHJvcGVydGllcy5ERUZfRE9DVU1FTlRfRkFDVE9SWSk7Ci0gIC8vfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvZG9jdW1lbnQvaW1wbC9Eb2N1bWVudFdyaXRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2RvY3VtZW50L2ltcGwvRG9jdW1lbnRXcml0ZXJJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MWU2ZDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvZG9jdW1lbnQvaW1wbC9Eb2N1bWVudFdyaXRlckltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMgSUJNIENvcnBvcmF0aW9uLCBCZWFjb24gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBJbmMuIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gICAgICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogICBCZWFjb25JVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLldyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50V3JpdGVyOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotCi0vKioKLSAqIERlZmluZXMgdGhlIGltcGxlbWVudGF0aW9uIHVzZWQgdG8gd3JpdGUgdGhlIENvbmZvcm1hbmNlIFhNTCAKLSAqIGRvY3VtZW50cy4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgRG9jdW1lbnRXcml0ZXJJbXBsIGltcGxlbWVudHMgRG9jdW1lbnRXcml0ZXIKLXsKLSAgLyoqCi0gICAqIERvY3VtZW50IHdyaXRlci4KLSAgICovCi0gIHByb3RlY3RlZCBXcml0ZXIgd3JpdGVyID0gbnVsbDsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50V3JpdGVyI2dldERvY3VtZW50KCkKLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudCBnZXREb2N1bWVudCgpIHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQUREOgotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudFdyaXRlciNzZXRXcml0ZXIoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0V3JpdGVyKFN0cmluZyBkb2N1bWVudExvY2F0aW9uKQotICAgIHRocm93cyBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24KLSAgewotICAgIC8vIEkxOE46IDIwMDMuMDIuMjYgbW9kaWZpZWQgYnkgSy5OYWthZ29tZUBCZWFjb25JVCAKLSAgICB0aGlzLndyaXRlciA9Ci0gICAgICBuZXcgUHJpbnRXcml0ZXIoCi0gICAgICAgIG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIoCi0gICAgICAgICAgbmV3IEZpbGVPdXRwdXRTdHJlYW0oZG9jdW1lbnRMb2NhdGlvbiksCi0gICAgICAgICAgIlVURi04IikpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudFdyaXRlciN3cml0ZShSZWFkZXIpCi0gICAqLwotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgd3JpdGUoUmVhZGVyIHJlYWRlcikKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uLCBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KLSAgewotICAgIC8vIElmIHRoZSB3cml0ZXIgd2FzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhyb3cgYW4gZXhjZXB0aW9uCi0gICAgaWYgKHdyaXRlciA9PSBudWxsKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiQ291bGQgbm90IHdyaXRlIGRvY3VtZW50IHNpbmNlIHdyaXRlciB3YXMgbm90IHNldC4iKTsKLQotICAgIHdyaXRlKHJlYWRlciwgd3JpdGVyKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRXcml0ZXIjd3JpdGUoUmVhZGVyLCBXcml0ZXIpCi0gICAqLwotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgd3JpdGUoUmVhZGVyIHJlYWRlciwgV3JpdGVyIHdyaXRlcikKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBDcmVhdGUgYnVmZmVyZWQgcmVhZGVyCi0gICAgQnVmZmVyZWRSZWFkZXIgYnVmUmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKHJlYWRlcik7Ci0KLSAgICAvLyBDcmVhdGUgcHJpbnQgd3JpdGVyCi0gICAgUHJpbnRXcml0ZXIgcHJpbnRXcml0ZXIgPSBuZXcgUHJpbnRXcml0ZXIod3JpdGVyKTsKLQotICAgIFN0cmluZyBuZXh0TGluZSA9IG51bGw7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBSZWFkIGVhY2ggbGluZSBmcm9tIHRoZSByZWFkZXIKLSAgICAgIHdoaWxlICgobmV4dExpbmUgPSBidWZSZWFkZXIucmVhZExpbmUoKSkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gV3JpdGUgdGV4dCBhbmQgZmx1c2ggc3RyZWFtCi0gICAgICAgIHByaW50V3JpdGVyLnByaW50bG4obmV4dExpbmUpOwotICAgICAgfQotICAgIH0KLQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJDb3VsZCBub3Qgd3JpdGUgZG9jdW1lbnQuIiwgZSk7Ci0gICAgfQotCi0gICAgLy8gRmx1c2ggYW5kIGNsb3NlIHRoZSB3cml0ZXIKLSAgICBwcmludFdyaXRlci5mbHVzaCgpOwotICAgIC8vcHJpbnRXcml0ZXIuY2xvc2UoKTsgICAgCi0gIH0KLQotICAvKioKLSAgICogQ2xvc2Ugd3JpdGVyLgotICAgKi8KLSAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgV1NJRXhjZXB0aW9uLCBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KLSAgewotICAgIC8vIElmIHRoZSB3cml0ZXIgd2FzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhyb3cgYW4gZXhjZXB0aW9uCi0gICAgaWYgKHdyaXRlciA9PSBudWxsKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiQ291bGQgbm90IHdyaXRlIGxvZyBmaWxlIHNpbmNlIHdyaXRlciB3YXMgbm90IHNldC4iKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIENsb3NlIHRoZSB3cml0ZXIKLSAgICAgIHdyaXRlci5jbG9zZSgpOwotICAgIH0KLQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbihpb2UudG9TdHJpbmcoKSwgaW9lKTsKLSAgICB9Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL0xvZy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL0xvZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzU4NmI3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9Mb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2c7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuV1NJRG9jdW1lbnQ7Ci0KLS8qKgotICogVGhlIGludGVyZmFjZSBmb3IgdGhlIG1lc3NhZ2UgbG9nIGZpbGUuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBMb2cgZXh0ZW5kcyBXU0lEb2N1bWVudAotewotICAvKioKLSAgICogRWxlbWVudCBuYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9OQU1FID0gV1NJQ29uc3RhbnRzLkVMRU1fTE9HOwotCi0gIC8qKgotICAgKiBRTmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgUU5hbWUgUU5BTUUgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9MT0csIEVMRU1fTkFNRSk7Ci0KLSAgLyoqCi0gICAqIEFkZCBtZXNzYWdlIHRvIGxvZyBmaWxlLiAgVGhlIG1lc3NhZ2Ugd2lsbCBjb250YWluIGJvdGggCi0gICAqIHRyYW5zcG9ydCBhbmQgY29udGVudCBpbmZvcm1hdGlvbi4KLSAgICogQHBhcmFtIGxvZ0VudHJ5IG1lc3NhZ2UgY29udGFpbmluZyBib3RoIHRyYW5zcG9ydCBhbmQgY29udGVudCBpbmZvcm1hdGlvbi4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgYWRkaW5nIHRoZSBtZXNzYWdlIHRvIGxvZyBmaWxlLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkTG9nRW50cnkoTWVzc2FnZUVudHJ5IGxvZ0VudHJ5KSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgKiBHZXQgdGhlIG51bWJlciBvZiBsb2cgZW50cmllcy4KLSAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGxvZyBlbnRyaWVzLiAKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0RW50cnlDb3VudCgpOwotCi0gIC8qKgotICAgKiBHZXQgYSBzcGVjaWZpYyBsb2cgZmlsZSBlbnRyeS4gCi0gICAqIEBwYXJhbSBpbmRleCBpbmRleCBpbnRvIGxvZyBlbnRyaWVzLgotICAgKiBAcmV0dXJuIGxvZyBmaWxlIGVudHJ5IGF0IHNwZWNpZmllZCBpbmRleC4KLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlRW50cnkgZ2V0TG9nRW50cnkoaW50IGluZGV4KTsKLQotICAvKioKLSAgICogR2V0IGxvZyBlbnRyeSBsaXN0LgotICAgKiBAcmV0dXJuIGxpc3Qgb2YgbG9nIGVudHJpZXMuCi0gICAqLwotICBwdWJsaWMgVmVjdG9yIGdldExvZ0VudHJ5TGlzdCgpOwotCi0gIC8qKgotICAgKiBHZXQgbGFzdCBsb2cgZW50cnkuCi0gICAqIEByZXR1cm4gYXN0IGxvZyBlbnRyeS4KLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlRW50cnkgZ2V0TGFzdExvZ0VudHJ5KCk7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBsb2cgZW50cnkgb2JqZWN0LgotICAgKiBAcmV0dXJuIG5ld2x5IGNyZWF0ZWQgbG9nIGVudHJ5LgotICAgKi8KLSAgcHVibGljIE1lc3NhZ2VFbnRyeSBjcmVhdGVMb2dFbnRyeSgpOwotCi0gIC8qKgotICAgKiBTZXQgc3R5bGUgc2hlZXQgc3RyaW5nLgotICAgKiBAcGFyYW0gc3R5bGVTaGVldFN0cmluZyBhIHN0eWxlIHNoZWV0IHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFN0eWxlU2hlZXRTdHJpbmcoU3RyaW5nIHN0eWxlU2hlZXRTdHJpbmcpOwotCi0gIC8qKgotICAgKiBHZXQgc3RhcnQgZWxlbWVudCBzdHJpbmcuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VOYW1lIGEgbmFtZXNwYWNlIHByZWZpeC4KLSAgICogQHJldHVybiBzdGFydCBlbGVtZW50IHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RhcnRYTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpOwotCi0gIC8qKgotICAgKiBHZXQgZW5kIGVsZW1lbnQgc3RyaW5nLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlTmFtZSBhIG5hbWVzcGFjZSBwcmVmaXguCi0gICAqIEByZXR1cm4gZW5kIGVsZW1lbnQgc3RyaW5nLiAKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RW5kWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9Mb2dCdWlsZGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvTG9nQnVpbGRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzRjYTc3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9Mb2dCdWlsZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZzsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdSZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkRhdGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLlRvb2xJbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmNvbW1vbi5BZGRTdHlsZVNoZWV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5jb21tb24uaW1wbC5BZGRTdHlsZVNoZWV0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuaW1wbC5Mb2dJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuaW1wbC5Mb2dXcml0ZXJJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuaW1wbC5NZXNzYWdlRW50cnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5Db21tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5NYW5JblRoZU1pZGRsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuaW1wbC5Db21tZW50SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuaW1wbC5NYW5JblRoZU1pZGRsZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVXRpbHM7Ci0KLWltcG9ydCBjb20uaWJtLmljdS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7Ci1pbXBvcnQgY29tLmlibS5pY3UudXRpbC5UaW1lWm9uZTsKLQotLyoqCi0gKiBHaXZlbiBhIGxpc3Qgb2YgUmVxdWVzdEhhbmRsZXJzLCB0aGlzIGNsYXNzIGJ1aWxkcyBhIAotICogV1MtSSBjb21wbGlhbnQgTWVzc2FnZSBMb2cgZmlsZS4KLSAqIAotICogQGF1dGhvciBEYXZpZCBMYXV6b24sIElCTQotICovCi1wdWJsaWMgY2xhc3MgTG9nQnVpbGRlcgotewotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwMCwgMjAwMi4iOwotCi0gIC8qKgotICAgKiBJRHMgdG8gaWRlbnRpZnkgcmVxdWVzdHMgYW5kIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2VzLgotICAgKi8KLSAgcHJvdGVjdGVkIGludCBjb252ZXJzYXRpb25JZCA9IDE7Ci0KLSAgLyoqCi0gICAqIElEcyB0byB1bmlxdWVseSBpZGVudGlmeSBlYWNoIGFuZCBldmVyeSBtZXNzYWdlIHdpdGhpbiB0aGUgbG9nIGZpbGUuCi0gICAqLwotICBwcm90ZWN0ZWQgaW50IGlkID0gMTsKLQotICAvKioKLSAgICogVGhlIGFjdHVhbCBsb2cgb2JqZWN0LgotICAgKi8KLSAgcHJvdGVjdGVkIExvZyBsb2cgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgbG9nIGZpbGUuCi0gICAqLwotICBwcm90ZWN0ZWQgSUZpbGUgaWZpbGU7Ci0KLSAgLyoqCi0gICAqIFRvb2wgaW5mb3JtYXRpb24gcHJvcGVydHkgdmFsdWVzLgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRPT0xfTkFNRSA9ICJNb25pdG9yIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRPT0xfVkVSU0lPTiA9ICIxLjAiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVE9PTF9SRUxFQVNFX0RBVEUgPSAiMjAwMy0wMy0yMCI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUT09MX0lNUExFTUVOVEVSID0gIklCTSI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUT09MX0xPQ0FUSU9OID0gIiI7Ci0KLSAgLyoqCi0gICAqIENvbW1vbiB0aW1lc3RhbXAgZm9ybWF0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW1wbGVEYXRlRm9ybWF0IHRpbWVzdGFtcEZvcm1hdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0ICgieXl5eS1NTS1kZCdUJ0hIOm1tOnNzLlNTUydaJyIpOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogQHBhcmFtIGlmaWxlOiB0aGUgZmlsZSBoYW5kbGVyIGZvciB0aGUgbG9nLgotICAgKi8KLSAgcHVibGljIExvZ0J1aWxkZXIoSUZpbGUgaWZpbGUpCi0gIHsKLSAgICB0aGlzLmlmaWxlID0gaWZpbGU7Ci0gIH0KLQotICAvKioKLSAgICogVGhpcyBidWlsZHMgYW5kIHRoZW4gcmV0dXJucyBhIGxvZyBiYXNlZCBvbiB0aGUgbGlzdCBvZiByZXF1ZXN0LXJlc3BvbnNlIHBhaXJzLgotICAgKiBAcGFyYW0gcmVxdWVzdFJlc3BvbnNlczogYSBsaXN0IG9mIG1lc3NhZ2VzIGluIHRoZSBmb3JtIG9mIHJlcXVlc3QtcmVzcG9uc2UgcGFpcnMuCi0gICAqIEByZXR1cm4gYSBsb2cgYmFzZWQgb24gYSBsaXN0IG9mIHJlcXVlc3QtcmVzcG9uc2UgcGFpcnMuCi0gICAqLwotICBwdWJsaWMgTG9nIGJ1aWxkTG9nKExpc3QgcmVxdWVzdFJlc3BvbnNlcykKLSAgewotICAgIGxvZyA9IG5ldyBMb2dJbXBsKCk7Ci0gICAgbG9nTW9uaXRvckluZm9ybWF0aW9uKCk7Ci0KLSAgICAvLyBsb2cgdGhlIG1lc3NhZ2VzCi0gICAgZm9yIChJdGVyYXRvciBpID0gcmVxdWVzdFJlc3BvbnNlcy5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspCi0gICAgewotICAgICAgUmVxdWVzdEhhbmRsZXIgcnIgPSAoUmVxdWVzdEhhbmRsZXIpaS5uZXh0KCk7Ci0gICAgICBpZiAocnIgIT0gbnVsbCkgewotICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgIGxvZ1JlcXVlc3RSZXNwb25zZShycik7Ci0gICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgLyogRW1wdHkgY2F0Y2ggYmxvY2suICBUaGlzIHJlcXVlc3QvcmVzcG9uc2UgcGFpciBpcyBub3QgYSB2YWxpZCBTT0FQCi0gICAgICAgICAgICAgICAqIG1lc3NhZ2UsIHNvIHNraXAgaXQuICovCi0gICAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbG9nOwotICB9Ci0KLSAgLyoqCi0gICAqIEN1cnJlbnRseSBhIG5vLW9wLgotICAgKi8KLSAgcHVibGljIHZvaWQgbG9nTW9uaXRvckluZm9ybWF0aW9uKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIExvZyB0aGUgcmVxdWVzdC1yZXNwb25zZSBwYWlyLgotICAgKkBwYXJhbSBycjogYSByZXF1ZXN0LXJlc3BvbnNlIHBhaXIuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBsb2dSZXF1ZXN0UmVzcG9uc2UoUmVxdWVzdEhhbmRsZXIgcnIpCi0gIHsKLSAgICBpZiAocnIgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBieXRlW10gcmVxdWVzdEhlYWRlckJ5dGVzID0gcnIuZ2V0UmVxdWVzdEhlYWRlcigpOwotICAgICAgYnl0ZVtdIHJlc3BvbnNlSGVhZGVyQnl0ZXMgPSByci5nZXRSZXNwb25zZUhlYWRlcigpOwotIAotICAgICAgaWYgKChyZXF1ZXN0SGVhZGVyQnl0ZXMgIT0gbnVsbCkgfHwgKHJlc3BvbnNlSGVhZGVyQnl0ZXMgIT0gbnVsbCkpCi0gICAgICB7Ci0gICAgICAgIGxvbmcgdGltZXN0YW1wID0gcnIuZ2V0RGF0ZSgpLmdldFRpbWUoKTsKLSAgICAgICAgU3RyaW5nIGxvY2FsSG9zdEFuZFBvcnQgPSAibG9jYWxob3N0OiIgKyByci5nZXRMb2NhbFBvcnQoKTsKLSAgICAgICAgU3RyaW5nIHJlbW90ZUhvc3RBbmRQb3J0ID0gcnIuZ2V0UmVtb3RlSG9zdCgpICsgIjoiICsgcnIuZ2V0UmVtb3RlUG9ydCgpOwotCi0gICAgICAgIGludCBjb252ZXJzYXRpb25JZCA9IGdldE5leHRBdmFpbGFibGVDb252ZXJzYXRpb25JZCgpOwotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIGlmIChyZXF1ZXN0SGVhZGVyQnl0ZXMgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmcgcmVxdWVzdEhlYWRlciA9IG5ldyBTdHJpbmcocmVxdWVzdEhlYWRlckJ5dGVzKTsKLSAgICAgICAgICAgIGJ5dGVbXSB1bmNodW5rZWRSZXF1ZXN0Qm9keSA9IHJyLmdldFJlcXVlc3RDb250ZW50KCk7Ci0gICAgICAgICAgICBpbnQgcmVxdWVzdElkICA9IGdldE5leHRBdmFpbGFibGVJZCgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBNZXNzYWdlRW50cnkgbWVzc2FnZUVudHJ5UmVxdWVzdCA9IGNyZWF0ZU1lc3NhZ2VFbnRyeShyZXF1ZXN0SWQsIGNvbnZlcnNhdGlvbklkLCAKLSAgICAgICAgICAgICAgICBNZXNzYWdlRW50cnkuVFlQRV9SRVFVRVNULCB0aW1lc3RhbXAsIGxvY2FsSG9zdEFuZFBvcnQsCi0gICAgICAgICAgICAgICAgcmVtb3RlSG9zdEFuZFBvcnQsIHVuY2h1bmtlZFJlcXVlc3RCb2R5LCByZXF1ZXN0SGVhZGVyKTsKLQotICAgICAgICAgICAgaWYgKG1lc3NhZ2VFbnRyeVJlcXVlc3QgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbG9nLmFkZExvZ0VudHJ5KG1lc3NhZ2VFbnRyeVJlcXVlc3QpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAocmVzcG9uc2VIZWFkZXJCeXRlcyAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyByZXNwb25zZUhlYWRlciA9IG5ldyBTdHJpbmcocmVzcG9uc2VIZWFkZXJCeXRlcyk7Ci0gICAgICAgICAgICBieXRlW10gdW5jaHVua2VkUmVzcG9uc2VCb2R5ID0gcnIuZ2V0UmVzcG9uc2VDb250ZW50KCk7Ci0gICAgICAgICAgICBpbnQgcmVzcG9uc2VJZCA9IGdldE5leHRBdmFpbGFibGVJZCgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBNZXNzYWdlRW50cnkgbWVzc2FnZUVudHJ5UmVzcG9uc2UgPSBjcmVhdGVNZXNzYWdlRW50cnkocmVzcG9uc2VJZCwgY29udmVyc2F0aW9uSWQsIAotICAgICAgICAgICAgICAgIE1lc3NhZ2VFbnRyeS5UWVBFX1JFU1BPTlNFLCB0aW1lc3RhbXAgKyByci5nZXRSZXNwb25zZVRpbWUoKSwgcmVtb3RlSG9zdEFuZFBvcnQsCi0gICAgICAgICAgICAgICAgbG9jYWxIb3N0QW5kUG9ydCwgdW5jaHVua2VkUmVzcG9uc2VCb2R5LCByZXNwb25zZUhlYWRlcik7Ci0gCi0gICAgICAgICAgICBpZiAobWVzc2FnZUVudHJ5UmVzcG9uc2UgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbG9nLmFkZExvZ0VudHJ5KG1lc3NhZ2VFbnRyeVJlc3BvbnNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gaWdub3JlIHRoZSByZXF1ZXN0IHJlc3BvbnNlIHBhaXIKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRlbnQgb2YgdGhlIG1lc3NhZ2UgaGFzIGF0IGxlYXN0Ci0gICAqIG9uZSBsZWZ0IGFuZCBvbmUgcmlnaHQgYnJhY2tldC4KLSAgICogQHBhcmFtIG1lc3NhZ2U6IGEgbWVzc2FnZSBjb250ZW50LgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvbnRlbnQgb2YgdGhlIG1lc3NhZ2UgaGFzIGF0IGxlYXN0Ci0gICAqICAgICAgICAgb25lIGxlZnQgYW5kIG9uZSByaWdodCBicmFja2V0LgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNNZXNzYWdlV2l0aEJyYWNrZXRzKFN0cmluZyBtZXNzYWdlKQotICB7Ci0gICAgcmV0dXJuICgobWVzc2FnZSAhPSBudWxsKSAmJiAKLSAgICAgICAgICAgIChtZXNzYWdlLmluZGV4T2YoIjwiKSE9IC0xKSAmJiAKLSAgICAgICAgICAgIChtZXNzYWdlLmluZGV4T2YoIj4iKSAhPSAtMSkpOwotICB9Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBoZWFkZXIgb2YgYSBtZXNzYWdlLgotICAgKiBAcGFyYW0gcmVxdWVzdE9yUmVzcG9uc2U6IGEgbWVzc2FnZS4KLSAgICogQHBhcmFtIGhlYWRlckxlbmd0aDogdGhlIGxlbmd0aCBvZiB0aGUgaGVhZGVyIGluIHRoZSBtZXNzYWdlLgotICAgKiBAcmV0dXJuIHRoZSBoZWFkZXIgb2YgYSBtZXNzYWdlLgotICAgKi8gCi0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0SGVhZGVyKGJ5dGVbXSByZXF1ZXN0T3JSZXNwb25zZSwgIGludCBoZWFkZXJMZW5ndGgpCi0gIHsKLSAgICBTdHJpbmcgcmVzdWx0ID0gbnVsbDsKLSAgICAKLSAgICBpZiAoKHJlcXVlc3RPclJlc3BvbnNlICE9IG51bGwpICYmIAotICAgICAgICAoaGVhZGVyTGVuZ3RoID4gMCkgJiYgCi0gICAgICAgIChyZXF1ZXN0T3JSZXNwb25zZS5sZW5ndGggPj0gaGVhZGVyTGVuZ3RoKSkKLSAgICB7Ci0gICAgICBieXRlW10gaGVhZGVyID0gbmV3IGJ5dGVbaGVhZGVyTGVuZ3RoXTsKLSAgICAgIFN5c3RlbS5hcnJheWNvcHkocmVxdWVzdE9yUmVzcG9uc2UsIDAsIGhlYWRlciwgMCwgaGVhZGVyTGVuZ3RoKTsKLSAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmcoaGVhZGVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBib2R5IG9mIGEgbWVzc2FnZS4KLSAgICogQHBhcmFtIHJlcXVlc3RPclJlc3BvbnNlOiBhIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBoZWFkZXJMZW5ndGg6IHRoZSBsZW5ndGggb2YgdGhlIGhlYWRlciBpbiB0aGUgbWVzc2FnZS4KLSAgICogQHJldHVybiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UuCi0gICAqLyAKLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRCb2R5KGJ5dGVbXSByZXF1ZXN0T3JSZXNwb25zZSwgIGludCBoZWFkZXJMZW5ndGgpCi0gIHsKLSAgICBTdHJpbmcgcmVzdWx0ID0gbnVsbDsKLSAgICAKLSAgICBpZiAoKHJlcXVlc3RPclJlc3BvbnNlICE9IG51bGwpICYmIAotICAgICAgICAoaGVhZGVyTGVuZ3RoID4gMCkgJiYgCi0gICAgICAgIChyZXF1ZXN0T3JSZXNwb25zZS5sZW5ndGggPiBoZWFkZXJMZW5ndGgpKQotICAgIHsKLSAgICAgIGludCBib2R5TGVuZ3RoID0gcmVxdWVzdE9yUmVzcG9uc2UubGVuZ3RoIC0gaGVhZGVyTGVuZ3RoOwotICAgICAgYnl0ZVtdIGJvZHkgPSBuZXcgYnl0ZVtib2R5TGVuZ3RoXTsKLSAgICAgIFN5c3RlbS5hcnJheWNvcHkocmVxdWVzdE9yUmVzcG9uc2UsIGhlYWRlckxlbmd0aCwgYm9keSwgMCwgYm9keUxlbmd0aCk7Ci0gICAgICByZXN1bHQgPSBuZXcgU3RyaW5nKGJvZHkpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0gICAgICAKLSAgLyoqCi0gICAqIENyZWF0ZSBhIGxvZyBlbnRyeS4KLSAgICogQHBhcmFtIGlkOiB1bmlxdWUgbWVzc2FnZSBpZCB3aXRoaW4gdGhlIGxvZy4KLSAgICogQHBhcmFtIGNvbnZlcnNhdGlvbklkOiBjb252ZXJzYXRpb24gaWQgdG8gaWRlbnRpZnkgcmVxdWVzdC1yZXNwb25zZSBwYWlycy4KLSAgICogQHBhcmFtIHR5cGU6IHR5cGUgaW5kaWNhdGluZyBhIHJlcXVlc3Qgb3IgcmVzcG9uc2UuCi0gICAqIEBwYXJhbSB0aW1lc3RhbXA6IHRoZSBkYXRlIGFuZCB0aW1lIG9mIHRoZSBtZXNzYWdlLgotICAgKiBAcGFyYW0gc2VuZGVySG9zdEFuZFBvcnQ6IHRoZSBob3N0IGFuZCBwb3J0IG9mIHRoZSBzZW5kZXIuCi0gICAqIEBwYXJhbSByZWNlaXZlckhvc3RBbmRQb3J0OiB0aGUgaG9zdCBhbmQgcG9ydCBvZiB0aGUgcmVjZWl2ZXIuCi0gICAqIEBwYXJhbSBtZXNzYWdlQ29udGVudDogdGhlIGNvbnRlbnQgb3IgYm9keSBvZiB0aGUgbWVzc2FnZS4KLSAgICogQHBhcmFtIGhlYWRlcjogdGhlIGhlYWRlciBvZiB0aGUgbWVzc2FnZS4KLSAgICogQHJldHVybiBhIGxvZyBlbnRyeS4KLSAgICovCi0gIHByb3RlY3RlZCBNZXNzYWdlRW50cnkgY3JlYXRlTWVzc2FnZUVudHJ5KGludCBpZCwgaW50IGNvbnZlcnNhdGlvbklkLCBTdHJpbmcgdHlwZSwgbG9uZyB0aW1lc3RhbXAsIAotICAgICAgICBTdHJpbmcgc2VuZGVySG9zdEFuZFBvcnQsIFN0cmluZyByZWNlaXZlckhvc3RBbmRQb3J0LCBieXRlW10gbWVzc2FnZUNvbnRlbnQsIFN0cmluZyBoZWFkZXIpIAotICB7Ci0gCS8vIENyZWF0ZSBsb2cgZW50cnkKLSAgICBNZXNzYWdlRW50cnkgbWVzc2FnZUVudHJ5ID0gbmV3IE1lc3NhZ2VFbnRyeUltcGwoKTsKLSAgICBtZXNzYWdlRW50cnkuc2V0SWQoU3RyaW5nLnZhbHVlT2YoaWQpKTsKLSAgICBtZXNzYWdlRW50cnkuc2V0Q29udmVyc2F0aW9uSWQoU3RyaW5nLnZhbHVlT2YoY29udmVyc2F0aW9uSWQpKTsKLSAgICBtZXNzYWdlRW50cnkuc2V0VHlwZSh0eXBlKTsKLSAgICBtZXNzYWdlRW50cnkuc2V0VGltZXN0YW1wKGdldFRpbWVzdGFtcChuZXcgRGF0ZSh0aW1lc3RhbXApKSk7Ci0gICAgbWVzc2FnZUVudHJ5LnNldFNlbmRlckhvc3RBbmRQb3J0KHNlbmRlckhvc3RBbmRQb3J0KTsKLSAgICBtZXNzYWdlRW50cnkuc2V0UmVjZWl2ZXJIb3N0QW5kUG9ydChyZWNlaXZlckhvc3RBbmRQb3J0KTsKLSAgICBtZXNzYWdlRW50cnkuc2V0RW5jb2RpbmcoV1NJQ29uc3RhbnRzLkRFRkFVTFRfWE1MX0VOQ09ESU5HKTsKLSAgICAKLSAgICBtZXNzYWdlRW50cnkuc2V0SFRUUEhlYWRlcnMoaGVhZGVyKTsKLQotICAgIGlmIChVdGlscy5pc011bHRpcGFydFJlbGF0ZWRNZXNzYWdlKGhlYWRlcikpCi0gICAgewotICAgIAlNaW1lUGFydHMgbWltZVBhcnRzID0gVXRpbHMucGFyc2VNdWx0aXBhcnRSZWxhdGVkTWVzc2FnZShtZXNzYWdlQ29udGVudCwgaGVhZGVyLCBXU0lDb25zdGFudHMuREVGQVVMVF9YTUxfRU5DT0RJTkcpOwotICAgIAlpZiAobWltZVBhcnRzID09IG51bGwpCi0gICAgCXsKLSAgICAJICAvLyBwcm9ibGVtIGNyZWF0aW5nIE1pbWVwYXJ0cyAtLSB0cmVhdCBpdCBhcyBzaW1wbGUgU09BUCBtZXNzYWdlCi0gICAgCSAgaWYgKG1lc3NhZ2VDb250ZW50ICE9IG51bGwpCi0gICAgCSAgewotICAgIAkgICAgbWVzc2FnZUVudHJ5LnNldE1lc3NhZ2UobmV3IFN0cmluZyhtZXNzYWdlQ29udGVudCkpOwotICAgIAkgIH0KLSAgICAJICBlbHNlCi0gICAgCSAgewotICAgIAkgICAgbWVzc2FnZUVudHJ5LnNldE1lc3NhZ2UoIiIpOwotICAgIAkgIH0KLSAgICAJICBtZXNzYWdlRW50cnkuc2V0TWltZUNvbnRlbnQoZmFsc2UpOwotICAgIAl9Ci0gICAgCWVsc2UKLSAgICAJewotICAgICAgICAgIG1lc3NhZ2VFbnRyeS5zZXRNaW1lUGFydHMobWltZVBhcnRzKTsKLSAgICAgICAgICBtZXNzYWdlRW50cnkuc2V0TWltZUNvbnRlbnQodHJ1ZSk7Ci0gICAgCX0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIEdldCB0aGUgbWVzc2FnZSBjb250ZW50Ci0gICAgICBpZiAobWVzc2FnZUNvbnRlbnQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZUVudHJ5LnNldE1lc3NhZ2UobmV3IFN0cmluZyhtZXNzYWdlQ29udGVudCkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBtZXNzYWdlRW50cnkuc2V0TWVzc2FnZSgiIik7Ci0gICAgICB9Ci0gICAgICBtZXNzYWdlRW50cnkuc2V0TWltZUNvbnRlbnQoZmFsc2UpOwotICAgIH0KLSAgICByZXR1cm4gbWVzc2FnZUVudHJ5OwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIGlkLCB0aGVuIGluY3JlbWVudHMgdGhlIGlkIHZhbHVlLgotICAgKiBAcmV0dXJuIHRoZSBuZXh0IGF2YWlsYWJsZSBpZC4KLSAgICovCi0gIHByb3RlY3RlZCBpbnQgZ2V0TmV4dEF2YWlsYWJsZUlkKCkKLSAgewotICAgIHJldHVybiBpZCsrOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIGNvbnZlcnNhdGlvbiBpZCwgdGhlbiBpbmNyZW1lbnRzIHRoZSBjb252ZXJzYXRpb24gaWQgdmFsdWUuCi0gICAqIEEgY29udmVyc2F0aW9uIGlkIGlkZW50ZmllcyBhIHJlcXVlc3QgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHJlc3BvbnNlLgotICAgKiBAcmV0dXJuIHRoZSBuZXh0IGF2YWlsYWJsZSBjb252ZXJhc2F0aW9uaWQuCi0gICAqLwotICBwcm90ZWN0ZWQgaW50IGdldE5leHRBdmFpbGFibGVDb252ZXJzYXRpb25JZCgpCi0gIHsKLSAgICByZXR1cm4gY29udmVyc2F0aW9uSWQrKzsKLSAgfQotCi0gIHB1YmxpYyBpbnQgZ2V0SGVhZGVyTGVuZ3RoKEludGVnZXIgb2JqKQotICB7Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgaWYgKG9iaiAhPSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IG9iai5pbnRWYWx1ZSgpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIFdyaXRlIGxvZyBvdXQgdG8gZmlsZS4KLSAgICogQHBhcmFtIGxvZzogbG9nIHRvIGJlIHdyaXR0ZW4gdG8gZmlsZS4KLSAgICovCi0KLSAgcHVibGljIHZvaWQgd3JpdGVMb2coTG9nIGxvZykKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIEdldCBsb2cgd3JpdGVyCi0gICAgICBMb2dXcml0ZXIgbG9nV3JpdGVyID0gbmV3IExvZ1dyaXRlckltcGwoKTsKLSAgICAKLSAgICAgIGxvZ1dyaXRlci5zZXRXcml0ZXIoaWZpbGUuZ2V0TG9jYXRpb24oKS50b1N0cmluZygpKTsKLSAgICAgIAotICAgICAgLy8gV3JpdGUgc3RhcnQgb2YgbG9nIGZpbGUKLSAgICAgIGxvZ1dyaXRlci53cml0ZShuZXcgU3RyaW5nUmVhZGVyKGxvZy5nZXRTdGFydFhNTFN0cmluZygiIikpKTsKLSAgICAKLSAgICAgIC8vIFdyaXRlIG1vbml0b3IgdG9vbCBpbmZvcm1hdGlvbgotICAgICAgU3RyaW5nIG1vbml0b3JJbmZvID0gZ2VuZXJhdGVNb25pdG9yVG9vbEluZm8oKTsKLSAgICAgIGxvZ1dyaXRlci53cml0ZShuZXcgU3RyaW5nUmVhZGVyKG1vbml0b3JJbmZvKSk7Ci0KLSAgICAgIGZvciAoaW50IGk9MDsgaTxsb2cuZ2V0RW50cnlDb3VudCgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIE1lc3NhZ2VFbnRyeSBtZSA9IGxvZy5nZXRMb2dFbnRyeShpKTsKLSAgICAgICAgbG9nV3JpdGVyLndyaXRlKG5ldyBTdHJpbmdSZWFkZXIobWUudG9YTUxTdHJpbmcoIiIpKSk7Ci0gICAgICB9Ci0gICAgICBsb2dXcml0ZXIud3JpdGUobmV3IFN0cmluZ1JlYWRlcihsb2cuZ2V0RW5kWE1MU3RyaW5nKCIiKSkpOwotICAgICAgbG9nV3JpdGVyLmNsb3NlKCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkV4Y2VwdGlvbiB0aHJvd24gd2hlbiBwcmludGluZyBsb2cgZmlsZS4iKTsKLSAgICB9Ci0gIH0KLQotCi0gIC8qKgotICAgKiBSZXR1cm5zIFhNTCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIE1vbml0b3IgdG9vbC4KLSAgICogQHJldHVybiBYTUwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBNb25pdG9yIHRvb2wuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGdlbmVyYXRlTW9uaXRvclRvb2xJbmZvKCkKLSAgewotCi0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsgCi0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBUb29sIGluZm9ybWF0aW9uCi0gICAgICBUb29sSW5mbyB0b29sSW5mbyA9IG5ldyBUb29sSW5mbyhUT09MX05BTUUsIFRPT0xfVkVSU0lPTiwgVE9PTF9SRUxFQVNFX0RBVEUsIFRPT0xfSU1QTEVNRU5URVIsIFRPT0xfTE9DQVRJT04pOwotCi0gICAgICBEb2N1bWVudEZhY3RvcnkgZG9jdW1lbnRGYWN0b3J5ID0gRG9jdW1lbnRGYWN0b3J5Lm5ld0luc3RhbmNlKCk7Ci0gICAgICBNb25pdG9yQ29uZmlnIG1vbml0b3JDb25maWcgPSBkb2N1bWVudEZhY3RvcnkubmV3TW9uaXRvckNvbmZpZygpOwotICAgIAotICAgICAgQ29tbWVudCBjb21tZW50ID0gbmV3IENvbW1lbnRJbXBsKCk7Ci0gICAgICBjb21tZW50LnNldFRleHQoIkNvbW1lbnQiKTsKLSAgICAgIG1vbml0b3JDb25maWcuc2V0Q29tbWVudChjb21tZW50KTsKLSAgICAgIG1vbml0b3JDb25maWcuc2V0TG9nTG9jYXRpb24oIlVSTCIpOwotICAgICAgbW9uaXRvckNvbmZpZy5zZXRSZXBsYWNlTG9nKHRydWUpOwotCi0gICAgICBBZGRTdHlsZVNoZWV0IGFkZFN0eWxlU2hlZXQgPSBuZXcgQWRkU3R5bGVTaGVldEltcGwoKTsKLSAgICAgIG1vbml0b3JDb25maWcuc2V0QWRkU3R5bGVTaGVldChhZGRTdHlsZVNoZWV0KTsKLQotICAgICAgbW9uaXRvckNvbmZpZy5zZXRMb2dEdXJhdGlvbig2MDApOwotICAgICAgbW9uaXRvckNvbmZpZy5zZXRUaW1lb3V0KDMpOwotICAgICAKLSAgICAgIE1hbkluVGhlTWlkZGxlIG1hbkluVGhlTWlkZGxlID0gbmV3IE1hbkluVGhlTWlkZGxlSW1wbCgpOwotICAgICAgbW9uaXRvckNvbmZpZy5zZXRNYW5JblRoZU1pZGRsZShtYW5JblRoZU1pZGRsZSk7Ci0KLSAgICAgIG1vbml0b3JDb25maWcuc2V0TG9jYXRpb24oImRvY3VtZW50VVJJIik7Ci0gICAgICBtb25pdG9yQ29uZmlnLnNldFZlcmJvc2VPcHRpb24oZmFsc2UpOwotCi0gICAgICAvLyBTdGFydCAgICAgCi0gICAgICBwdy5wcmludCh0b29sSW5mby5nZXRTdGFydFhNTFN0cmluZygiIikpOwotICAgIAotICAgICAgLy8gQ29uZmlnCi0gICAgICBwdy5wcmludChtb25pdG9yQ29uZmlnLnRvWE1MU3RyaW5nKFdTSUNvbnN0YW50cy5OU19OQU1FX1dTSV9NT05JVE9SX0NPTkZJRykpOwotCi0gICAgICAvLyBFbmQKLSAgICAgIHB3LnByaW50bG4odG9vbEluZm8uZ2V0RW5kWE1MU3RyaW5nKCIiKSk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgfQotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdGltZSBhcyBhIHRpbWVzdGFtcC4KLSAgICogQHBhcmFtIGRhdGU6IGEgZGF0ZSBvYmplY3QuCi0gICAqIEByZXR1cm4gdGhlIGdpdmVuIGRhdGUgYW5kIHRpbWUgYXMgYSB0aW1lc3RhbXAuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRUaW1lc3RhbXAoRGF0ZSBkYXRlKQotICB7Ci0gICAgdGltZXN0YW1wRm9ybWF0LnNldFRpbWVab25lKFRpbWVab25lLmdldERlZmF1bHQoKSk7Ci0gICAgcmV0dXJuIHRpbWVzdGFtcEZvcm1hdC5mb3JtYXQoZGF0ZSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9Mb2dSZWFkZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9Mb2dSZWFkZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q2MDEyOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvTG9nUmVhZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nOwotCi1pbXBvcnQgamF2YS5pby5SZWFkZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudFJlYWRlcjsKLQotLyoqCi0gKiBEZWZpbmVzIHRoZSBpbnRlcmZhY2UgdXNlZCB0byByZWFkIHRoZSBMb2cgZmlsZS4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgTmVpbCBEZWxpbWEgKG5kZGVsaW1hQGNhLmlibS5jb20pCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBMb2dSZWFkZXIgZXh0ZW5kcyBEb2N1bWVudFJlYWRlcgotewotICAvKioKLSAgICogU3RhcnQgcmVhZGluZyBsb2cgZW50cmllcyBmcm9tIGEgc3BlY2lmaWVkIFVSSSBsb2NhdGlvbiB1c2luZyB0aGUgc3BlY2lmaWVkIGNhbGxiYWNrLgotICAgKiAKLSAgICogQHBhcmFtIGxvZ1VSSSB0aGUgbG9jYXRpb24gb2YgdGhlIGxvZyBmaWxlLgotICAgKiBAcGFyYW0gbG9nRW50cnlIYW5kbGVyIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIHByb2Nlc3MgZWFjaCBsb2cgZW50cnkuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW0gcmVhZGluZyBsb2cuCi0gICAqLwotICBwdWJsaWMgdm9pZCByZWFkTG9nKFN0cmluZyBsb2dVUkksIE1lc3NhZ2VFbnRyeUhhbmRsZXIgbG9nRW50cnlIYW5kbGVyKQotICAgIHRocm93cyBXU0lFeGNlcHRpb247Ci0KLSAgLyoqCi0gICAqIFN0YXJ0IHJlYWRpbmcgbG9nIGVudHJpZXMgZnJvbSBhIHJlYWRlciB1c2luZyB0aGUgc3BlY2lmaWVkIGNhbGxiYWNrLgotICAgKiAKLSAgICogQHBhcmFtIHJlYWRlciB0aGUgc291cmNlIGZvciB0aGUgbG9nIGZpbGUuCi0gICAqIEBwYXJhbSBsb2dFbnRyeUhhbmRsZXIgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJvY2VzcyBlYWNoIGxvZyBlbnRyeS4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbSByZWFkaW5nIGxvZy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlYWRMb2coUmVhZGVyIHJlYWRlciwgTWVzc2FnZUVudHJ5SGFuZGxlciBsb2dFbnRyeUhhbmRsZXIpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvLyBBREQ6IERvIHdlIG5lZWQgdG8gYWRkIGZ1bmN0aW9ucyB0aGF0IHdpbGwgcmVhZCB0aGUgZW50aXJlIGxvZyBmaWxlPwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL0xvZ1dyaXRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL0xvZ1dyaXRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGUzM2U4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9Mb2dXcml0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2c7Ci0KLWltcG9ydCBqYXZhLmlvLldyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50V3JpdGVyOwotCi0vKioKLSAqIERlZmluZXMgdGhlIGludGVyZmFjZSB1c2VkIHRvIHdyaXRlIHRoZSBMb2cgZmlsZS4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgTmVpbCBEZWxpbWEgKG5kZGVsaW1hQGNhLmlibS5jb20pCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBMb2dXcml0ZXIgZXh0ZW5kcyBEb2N1bWVudFdyaXRlcgotewotICAvKioKLSAgICogV3JpdGUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZG9jdW1lbnQgdXNpbmcgdGhlIGxvY2F0aW9uCi0gICAqIHRoYXQgd2FzIHByZXZpb3VzbHkgc2V0IHVzaW5nIHRoZSBzZXRMb2NhdGlvbiBtZXRob2QuCi0gICAqIEBwYXJhbSBsb2cgdGhlIExvZyBvYmplY3QuCi0gICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGlmIHRoaXMgb3BlcmF0aW9uIGhhcyBiZWVuIGludm9rZWQgCi0gICAqICAgICAgICAgYXQgYW4gaWxsZWdhbCBvciBpbmFwcHJvcHJpYXRlIHRpbWUKLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgZHVyaW5nIHRoZSB3cml0aW5nIG9mIAotICAgKiAgICAgICAgIHRoZSBsb2cuCi0gICAqLwotICBwdWJsaWMgdm9pZCB3cml0ZShMb2cgbG9nKSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBXU0lFeGNlcHRpb247Ci0KLSAgLyoqCi0gICAqIFdyaXRlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGRvY3VtZW50LgotICAgKiBAcGFyYW0gbG9nIHRoZSBMb2cgb2JqZWN0LgotICAgKiBAcGFyYW0gd3JpdGVyIGEgV3JpdGVyIG9iamVjdC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgZHVyaW5nIHRoZSB3cml0aW5nIG9mIAotICAgKiAgICAgICAgIHRoZSBsb2cuCi0gICAqLwotICBwdWJsaWMgdm9pZCB3cml0ZShMb2cgbG9nLCBXcml0ZXIgd3JpdGVyKSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL01lc3NhZ2VFbnRyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL01lc3NhZ2VFbnRyeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjU4ZmYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9NZXNzYWdlRW50cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmRvbS5FbGVtZW50TG9jYXRpb247Ci0KLS8qKgotKiBNZXNzYWdlIGVudHJ5IGludGVyZmFjZS4KLSoKLSogQHZlcnNpb24gMS4wLjEKLSogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0qLwotcHVibGljIGludGVyZmFjZSBNZXNzYWdlRW50cnkgZXh0ZW5kcyBEb2N1bWVudEVsZW1lbnQKLXsKLSAvKioKLSAgKiBFbGVtZW50IG5hbWUuCi0gICovCi0gcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUxFTV9OQU1FID0gV1NJQ29uc3RhbnRzLkVMRU1fTUVTU0FHRV9FTlRSWTsKLQotIC8qKgotICAqIFFOYW1lLgotICAqLwotIHB1YmxpYyBzdGF0aWMgZmluYWwgUU5hbWUgUU5BTUUgPQotICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX0xPRywgRUxFTV9OQU1FKTsKLQotIC8qKgotICAqIFR5cGUgb2YgbG9nIGVudHJ5LgotICAqLwotIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfUkVRVUVTVCA9ICJyZXF1ZXN0IjsKLSBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX1JFU1BPTlNFID0gInJlc3BvbnNlIjsKLQotIC8qKgotICAqIEdldHMgdGhlIGlkLgotICAqIEByZXR1cm4gdGhlIGlkLgotICAqIEBzZWUgI3NldElkCi0gICovCi0gcHVibGljIFN0cmluZyBnZXRJZCgpOwotCi0gLyoqCi0gICogU2V0cyB0aGUgaWQuCi0gICogQHBhcmFtIGlkIHRoZSBpZGVudGlmaWVyIGZvciB0aGUgbG9nIGVudHJ5LgotICAqIEBzZWUgI2dldElkCi0gICovCi0gcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIGlkKTsKLQotIC8qKgotICAqIEdldHMgdGhlIGNvbnZlcnNhdGlvbiBpZC4KLSAgKiBAcmV0dXJuIHRoZSBjb252ZXJzYXRpb24gaWQuCi0gICogQHNlZSAjc2V0Q29udmVyc2F0aW9uSWQKLSAgKi8KLSBwdWJsaWMgU3RyaW5nIGdldENvbnZlcnNhdGlvbklkKCk7Ci0KLSAvKioKLSAgKiBTZXRzIHRoZSBjb252ZXJzYXRpb24gaWQuCi0gICogQHBhcmFtIGNvbnZlcnNhdGlvbklkIHRoZSBjb252ZXJzYXRpb24gaWQuCi0gICogQHNlZSAjZ2V0Q29udmVyc2F0aW9uSWQKLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRDb252ZXJzYXRpb25JZChTdHJpbmcgY29udmVyc2F0aW9uSWQpOwotCi0gLyoqCi0gICogR2V0cyB0aGUgdGltZXN0YW1wLgotICAqIEByZXR1cm4gdGhlIHRpbWVzdGFtcC4KLSAgKiBAc2VlICNzZXRUaW1lc3RhbXAKLSAgKi8KLSBwdWJsaWMgU3RyaW5nIGdldFRpbWVzdGFtcCgpOwotCi0gLyoqCi0gICogU2V0cyB0aGUgdGltZXN0YW1wLgotICAqIEBwYXJhbSB0aW1lc3RhbXAgdGhlIHRpbWVzdGFtcC4KLSAgKiBAc2VlICNnZXRUaW1lc3RhbXAKLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRUaW1lc3RhbXAoU3RyaW5nIHRpbWVzdGFtcCk7Ci0KLSAvKioKLSAgKiBHZXRzIHRoZSB0eXBlLgotICAqIEByZXR1cm4gdGhlIHR5cGUuCi0gICogQHNlZSAjc2V0VHlwZQotICAqLwotIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpOwotCi0gLyoqCi0gICogU2V0cyB0aGUgdHlwZS4KLSAgKiBAcGFyYW0gdHlwZSB0aGUgdHlwZS4KLSAgKiBAc2VlICNnZXRUeXBlCi0gICovCi0gcHVibGljIHZvaWQgc2V0VHlwZShTdHJpbmcgdHlwZSk7Ci0KLSAvKioKLSAgKiBHZXRzIHRoZSBzZW5kZXIgaG9zdCBhbmQgcG9ydC4KLSAgKiBAcmV0dXJuICB0aGUgc2VuZGVyIGhvc3QgYW5kIHBvcnQuCi0gICogQHNlZSAjc2V0U2VuZGVySG9zdEFuZFBvcnQKLSAgKi8KLSBwdWJsaWMgU3RyaW5nIGdldFNlbmRlckhvc3RBbmRQb3J0KCk7Ci0KLSAvKioKLSAgKiBTZXRzIHRoZSBzZW5kZXIgaG9zdCBhbmQgcG9ydC4KLSAgKiBAcGFyYW0gc2VuZGVySG9zdEFuZFBvcnQgdGhlIHNlbmRlciBob3N0IGFuZCBwb3J0LgotICAqIEBzZWUgI2dldFNlbmRlckhvc3RBbmRQb3J0Ci0gICovCi0gcHVibGljIHZvaWQgc2V0U2VuZGVySG9zdEFuZFBvcnQoU3RyaW5nIHNlbmRlckhvc3RBbmRQb3J0KTsKLQotIC8qKgotICAqIEdldHMgdGhlIHJlY2VpdmVyIGhvc3QgYW5kIHBvcnQuCi0gICogQHJldHVybiB0aGUgcmVjZWl2ZXIgaG9zdCBhbmQgcG9ydC4KLSAgKiBAc2VlICNzZXRSZWNlaXZlckhvc3RBbmRQb3J0Ci0gICovCi0gcHVibGljIFN0cmluZyBnZXRSZWNlaXZlckhvc3RBbmRQb3J0KCk7Ci0KLSAvKioKLSAgKiBTZXRzIHRoZSByZWNlaXZlciBob3N0IGFuZCBwb3J0LgotICAqIEBwYXJhbSByZWNlaXZlckhvc3RBbmRQb3J0IHRoZSByZWNlaXZlciBob3N0IGFuZCBwb3J0LgotICAqIEBzZWUgI2dldFJlY2VpdmVySG9zdEFuZFBvcnQKLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRSZWNlaXZlckhvc3RBbmRQb3J0KFN0cmluZyByZWNlaXZlckhvc3RBbmRQb3J0KTsKLQotIC8qKgotICAqIEdldHMgdGhlIG1lc3NhZ2UuCi0gICogQHJldHVybiB0aGUgbWVzc2FnZS4KLSAgKiBAc2VlICNzZXRNZXNzYWdlCi0gICovCi0gcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCk7Ci0KLSAvKioKLSAgKiBTZXRzIHRoZSBtZXNzYWdlLgotICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlLgotICAqIEBzZWUgI2dldE1lc3NhZ2UKLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRNZXNzYWdlKFN0cmluZyBtZXNzYWdlKTsKLQotIC8qKgotICAqIFNldHMgdGhlIGVuY29kaW5nLgotICAqIEBwYXJhbSBlbmNvZGluZyB0aGUgZW5jb2RpbmcuCi0gICogQHNlZSAjZ2V0TWVzc2FnZQotICAqLwotIHB1YmxpYyB2b2lkIHNldEVuY29kaW5nKFN0cmluZyBlbmNvZGluZyk7Ci0KLSAvKioKLSAgKiBHZXRzIHRoZSBCT00uCi0gICogQHJldHVybiB0aGUgQk9NLgotICAqIEBzZWUgI3NldEJPTQotICAqLwotIHB1YmxpYyBpbnQgZ2V0Qk9NKCk7Ci0KLSAvKioKLSAgKiBTZXRzIHRoZSBCT00uCi0gICogQHBhcmFtIGJvbSB0aGUgQk9NLgotICAqIEBzZWUgI2dldEJPTQotICAqLwotIHB1YmxpYyB2b2lkIHNldEJPTShpbnQgYm9tKTsKLQotIC8qKgotICAqIEdldHMgdGhlIEhUVFAgaGVhZGVycy4KLSAgKiBAcmV0dXJuIHRoZSBIVFRQIGhlYWRlcnMuCi0gICogQHNlZSAjc2V0SFRUUEhlYWRlcnMKLSAgKi8KLSBwdWJsaWMgU3RyaW5nIGdldEhUVFBIZWFkZXJzKCk7Ci0KLSAvKioKLSAgKiBTZXRzIHRoZSBIVFRQIGhlYWRlcnMuCi0gICogQHBhcmFtIGh0dHBIZWFkZXJzIHRoZSBIVFRQIGhlYWRlcnMuCi0gICogQHNlZSAjZ2V0SFRUUEhlYWRlcnMKLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRIVFRQSGVhZGVycyhTdHJpbmcgaHR0cEhlYWRlcnMpOwotCi0gLyoqCi0gICogR2V0cyBlbGVtZW50IGxvY2F0aW9uLgotICAqIEByZXR1cm4gZWxlbWVudCBsb2NhdGlvbi4KLSAgKiBAc2VlICNzZXRFbGVtZW50TG9jYXRpb24KLSAgKi8KLSBwdWJsaWMgRWxlbWVudExvY2F0aW9uIGdldEVsZW1lbnRMb2NhdGlvbigpOwotCi0gLyoqCi0gICogU2V0cyBlbGVtZW50IGxvY2F0aW9uLgotICAqIEBwYXJhbSBlbGVtZW50TG9jYXRpb24gZWxlbWVudCBsb2NhdGlvbi4KLSAgKiBAc2VlICNnZXRFbGVtZW50TG9jYXRpb24KLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRFbGVtZW50TG9jYXRpb24oRWxlbWVudExvY2F0aW9uIGVsZW1lbnRMb2NhdGlvbik7Ci0gCi0gLyoqCi0gICogSWYgY29udGVudCBpcyBNSU1FIHR5cGUgcmV0dXJucyB0cnVlLCBvdGhlcndpc2UgZmFsc2UgIAotICAqIEByZXR1cm4gaWYgY29udGVudCBpcyBNSU1FIHR5cGUgcmV0dXJucyB0cnVlLCBvdGhlcndpc2UgZmFsc2UKLSAgKi8KLSBwdWJsaWMgYm9vbGVhbiBpc01pbWVDb250ZW50KCk7Ci0gCi0gLyoqCi0gICogU2V0IGZsYWcgdG8gZGV0ZXJtaW5lIGlmIGNvbnRlbnQgaXMgTUlNRSB0eXBlLiAKLSAgKiBAcGFyYW0gaXNNaW1lQ29udGVudCBhIGJvb29sZWFuIHZhbHVlCi0gICovCi0gcHVibGljIHZvaWQgc2V0TWltZUNvbnRlbnQoYm9vbGVhbiBpc01pbWVDb250ZW50KTsKLQotIC8qKgotICAqIFJldHVybnMgYXJyYXkgb2YgdGhlIE1JTUUgcGFydHMgb2YgdGhlIG1lc3NhZ2UuCi0gICogQHJldHVybiBhcnJheSBvZiB0aGUgTUlNRSBwYXJ0cyBvZiB0aGUgbWVzc2FnZS4KLSAgKiBAc2VlICNpc01JTUVDb250ZW50KCkgCi0gICovCi0gcHVibGljIE1pbWVQYXJ0cyBnZXRNaW1lUGFydHMoKTsKLSAKLSAvKioKLSAgKiBTZXRzIHRoZSBNSU1FIHBhcnRzIG9mIHRoZSBtZXNzYWdlLgotICAqIEBwYXJhbSBtaW1lUGFydHMgaGUgTUlNRSBwYXJ0cyBvZiB0aGUgbWVzc2FnZS4KLSAgKiBAc2VlICNnZXRNaW1lUGFydHMKLSAgKi8KLSBwdWJsaWMgdm9pZCBzZXRNaW1lUGFydHMoTWltZVBhcnRzIG1pbWVQYXJ0cyk7Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9NZXNzYWdlRW50cnlIYW5kbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvTWVzc2FnZUVudHJ5SGFuZGxlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDAxZTJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9NZXNzYWdlRW50cnlIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXJ0aWZhY3RSZWZlcmVuY2U7Ci0KLS8qKgotICogRGVmaW5lcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgTWVzc2FnZUVudHJ5IGhhbmRsZXIuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqIEBhdXRob3IgR3JhaGFtIFR1cnJlbGwgKGd0dXJyZWxsQHVrLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTWVzc2FnZUVudHJ5SGFuZGxlcgotewotICAvKioKLSAgICogUHJvY2VzcyBhcnRpZmFjdCByZWZlcmVuY2UuCi0gICAqIEBwYXJhbSBhcnRpZmFjdFJlZmVyZW5jZSBhcnRpZmFjdCByZWZlcmVuY2UuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW1zIG9jY3VyIHdoaWxlIHByb2Nlc3NpbmcgYXJ0aWZhY3QgcmVmZXJlbmNlLgotICAgKi8KLSAgcHVibGljIHZvaWQgcHJvY2Vzc0FydGlmYWN0UmVmZXJlbmNlKEFydGlmYWN0UmVmZXJlbmNlIGFydGlmYWN0UmVmZXJlbmNlKQotICAgIHRocm93cyBXU0lFeGNlcHRpb247Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgYSBzaW5nbGUgbG9nIGVudHJ5LgotICAgKiBAcGFyYW0gZW50cnlDb250ZXh0IGEgc2luZ2xlIGxvZyBlbnRyeS4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgd2hpbGUgcHJvY2Vzc2luZyBhIHNpbmdsZSBsb2cgZW50cnkuCi0gIAotICAgKi8KLSAgcHVibGljIHZvaWQgcHJvY2Vzc0xvZ0VudHJ5KEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpIHRocm93cyBXU0lFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvTWltZVBhcnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9NaW1lUGFydC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTQ2ZGM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9NaW1lUGFydC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQ7Ci0KLS8qKgotICogQGF1dGhvciBsYXV6b25kCi0gKiAKLSAqIFRPRE8gVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgdHlwZSBjb21tZW50IGdvIHRvIFdpbmRvdyAtCi0gKiBQcmVmZXJlbmNlcyAtIEphdmEgLSBDb2RlIFN0eWxlIC0gQ29kZSBUZW1wbGF0ZXMKLSAqLwotcHVibGljIGludGVyZmFjZSBNaW1lUGFydCBleHRlbmRzIERvY3VtZW50RWxlbWVudCB7Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBjb250ZW50IGZvciB0aGUgbWltZSBwYXJ0LgotCSAqIAotCSAqIEByZXR1cm4gdGhlIG1pbWUgY29udGVudC4KLQkgKiBAc2VlICNzZXRDb250ZW50Ci0JICovCi0JcHVibGljIFN0cmluZyBnZXRDb250ZW50KCk7Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBjb250ZW50IGZvciB0aGUgbWltZSBwYXJ0LgotCSAqIAotCSAqIEBwYXJhbSBtaW1lQ29udGVudAotCSAqICAgICAgICAgICAgdGhlIG1pbWUgY29udGVudC4KLQkgKiBAc2VlICNnZXRDb250ZW50Ci0JICovCi0JcHVibGljIHZvaWQgc2V0Q29udGVudChTdHJpbmcgbWltZUNvbnRlbnQpOwotCi0JLyoqCi0JICogR2V0cyB0aGUgaGVhZGVycyBmb3IgdGhlIG1pbWUgcGFydC4KLQkgKiAKLQkgKiBAcmV0dXJuIHRoZSBtaW1lIGhlYWRlcnMuCi0JICogQHNlZSAjc2V0TWltZUhlYWRlcnMKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldEhlYWRlcnMoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIGhlYWRlcnMgZm9yIHRoZSBtaW1lIHBhcnQuCi0JICogCi0JICogQHBhcmFtIG1pbWVIZWFkZXJzCi0JICogICAgICAgICAgICB0aGUgbWltZSBoZWFkZXJzLgotCSAqIEBzZWUgI2dldEhlYWRlcnMKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRIZWFkZXJzKFN0cmluZyBtaW1lSGVhZGVycyk7Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBib3VuZGFyeSBzdHJpbmdzIGZvciB0aGUgbWltZSBwYXJ0LiBOb3RlIHRoYXQgdGhlIGxhc3QgcGFydCBvZiBhCi0JICogbXVsdGlwYXJ0LyByZWxhdGVkIG1lc3NhZ2Ugd2lsbCBoYXZlIDIgYm91bmRhcnkgc3RyaW5ncy4gQWxsIG90aGVyIHBhcnRzCi0JICogd2lsbCBoYXZlIG9uZS4KLQkgKiAKLQkgKiBAcmV0dXJuIHRoZSBib3VuZGFyeSBzdHJpbmdzLgotCSAqIEBzZWUgI3NldEJvdW5kYXJ5U3RyaW5ncwotCSAqLwotCXB1YmxpYyBTdHJpbmdbXSBnZXRCb3VuZGFyeVN0cmluZ3MoKTsKLQotCS8qKgotCSAqIFNldHMgdGhlIGJvdW5kYXJ5IHN0cmluZ3MgZm9yIHRoZSBtaW1lIHBhcnQuIE5vdGUgdGhhdCB0aGUgbGFzdCBwYXJ0IG9mIGEKLQkgKiBtdWx0aXBhcnQvIHJlbGF0ZWQgbWVzc2FnZSB3aWxsIGhhdmUgMiBib3VuZGFyeSBzdHJpbmdzLiBBbGwgb3RoZXIgcGFydHMKLQkgKiB3aWxsIGhhdmUgb25lLgotCSAqIAotCSAqIEBwYXJhbSBib3VuZGFyeVN0cmluZ3MKLQkgKiAgICAgICAgICAgIHRoZSBib3VuZGFyeSBzdHJpbmdzLgotCSAqIEBzZWUgI2dldEJvdW5kYXJ5U3RyaW5ncwotCSAqLwotCXB1YmxpYyB2b2lkIHNldEJvdW5kYXJ5U3RyaW5ncyhTdHJpbmdbXSBtaW1lSGVhZGVycyk7Ci0KLQlwdWJsaWMgU3RyaW5nIHRvWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9NaW1lUGFydHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9NaW1lUGFydHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NlM2YxYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvTWltZVBhcnRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nOwotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci0KLS8qKgotICogTWltZSBwYXJ0cyBpbnRlcmZhY2UuCi0gKgotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgRGF2aWQgTGF1em9uIChsYXV6b25kQGNhLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTWltZVBhcnRzCi17Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzdGFydCBhdHRyaWJ1dGUgdmFsdWUgZnJvbSB0aGUgLgotICAgKiBAcmV0dXJuIHRoZSBoZSBzdGFydCBhdHRyaWJ1dGUgdmFsdWUuCi0gICAqIEBzZWUgI3NldFJvb3RQYXJ0Ci0gICAqLwotICAvKioKLSAgICogUmV0dXJucyB0aGUgcm9vdCBwYXJ0LCBvdGhlcndpc2UgbnVsbC4KLSAgICogQHJldHVybiB0aGUgcm9vdCBwYXJ0LgotICAgKiBAc2VlICNzZXRSb290UGFydAotICAgKi8KLSAgcHVibGljIE1pbWVQYXJ0IGdldFJvb3RQYXJ0KCk7Ci0KLSAgLyoqCi0gICAqIFNldHMgdGhlIHJvb3QgcGFydC4KLSAgICogQHBhcmFtIHJvb3RQYXJ0IHRoZSByb290IHBhcnQuCi0gICAqIEBzZWUgI2dldFJvb3RQYXJ0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSb290UGFydChNaW1lUGFydCByb290UGFydCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBwYXJ0cy4KLSAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIHBhcnRzLgotICAgKi8KLSAgcHVibGljIGludCBjb3VudCgpOwotCi0gIC8qKgotICAgKiBHZXRzIHRoZSBjb252ZXJzYXRpb24gaWQuCi0gICAqIEByZXR1cm4gdGhlIGNvbnZlcnNhdGlvbiBpZC4KLSAgICogQHNlZSAjc2V0Q29udmVyc2F0aW9uSWQKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFBhcnQoTWltZVBhcnQgcGFydCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYSBsaXN0IG9mIG1pbWUgcGFydHMuCi0gICAqIEByZXR1cm4gYSBsaXN0IG9mIG1pbWUgcGFydHMuCi0gICAqLwotICBwdWJsaWMgQ29sbGVjdGlvbiBnZXRQYXJ0cygpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL1JlcXVlc3RIYW5kbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvUmVxdWVzdEhhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE5MmRmNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvUmVxdWVzdEhhbmRsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nOwotCi1pbXBvcnQgamF2YS51dGlsLkRhdGU7Ci0KLS8qKgotICogUmVwcmVzZW50cyBhIFRDUC9JUCByZXF1ZXN0IG1hZGUgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLgotICogRWFjaCByZXF1ZXN0IHJlcHJlc2VudHMgYSByZXF1ZXN0LXJlc3BvbnNlIHBhaXIsIHdoZXJlIHRoZSByZXF1ZXN0Ci0gKiBpcyBmcm9tIGNsaWVudCAtPiBzZXJ2ZXIsIGFuZCB0aGUgcmVzcG9uc2UgaXMgZnJvbSBzZXJ2ZXIgLT4gY2xpZW50LgotICogCi0gKiBAYXV0aG9yIGxhdXpvbmQKLSAqLwotCi1wdWJsaWMgaW50ZXJmYWNlIFJlcXVlc3RIYW5kbGVyIAotewotCS8qKgotCSAqIFJldHVybnMganVzdCB0aGUgSFRUUCBoZWFkZXIgb2YgdGhlIHJlcXVlc3QgcG9ydGlvbiBvZiB0aGlzIHJlcXVlc3QuCi0JICogQHJldHVybiB0aGUgY29udGVudCBieXRlcwotCSAqLwotCWJ5dGVbXSBnZXRSZXF1ZXN0SGVhZGVyKCk7Ci0KLQkvKioKLQkgKiBBZGQgdGhlIEhUVFAgaGVhZGVyIG9mIHRoZSByZXF1ZXN0IHBvcnRpb24gb2YgdGhpcyByZXF1ZXN0LgotCSAqIEBwYXJhbSByZXF1ZXN0SGVhZGVyIGJ5dGVbXQotCSAqLwotCXZvaWQgc2V0UmVxdWVzdEhlYWRlcihieXRlW10gcmVxdWVzdEhlYWRlcik7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGp1c3QgdGhlIEhUVFAgaGVhZGVyIG9mIHRoZSByZXNwb25zZSBwb3J0aW9uIG9mIHRoaXMgcmVxdWVzdC4KLQkgKiBAcmV0dXJuIHRoZSBjb250ZW50IGJ5dGVzCi0JICovCi0JYnl0ZVtdIGdldFJlc3BvbnNlSGVhZGVyKCk7Ci0KLQkvKioKLQkgKiBBZGQgdGhlIEhUVFAgaGVhZGVyIG9mIHRoZSByZXNwb25zZSBwb3J0aW9uIG9mIHRoaXMgcmVxdWVzdC4KLQkgKiBAcGFyYW0gcmVzcG9uc2VIZWFkZXIgYnl0ZVtdCi0JICovCi0Jdm9pZCBzZXRSZXNwb25zZUhlYWRlcihieXRlW10gcmVzcG9uc2VIZWFkZXIpOwotCi0JLyoqCi0JICogUmV0dXJucyBqdXN0IHRoZSBIVFRQIGJvZHkgb2YgdGhlIHJlcXVlc3QgcG9ydGlvbiBvZiB0aGlzIHJlcXVlc3QuCi0JICogQHJldHVybiB0aGUgY29udGVudCBieXRlcwotCSAqLwotCWJ5dGVbXSBnZXRSZXF1ZXN0Q29udGVudCgpOwotCi0JLyoqCi0JICogQWRkIHRoZSBIVFRQIGJvZHkgb2YgdGhlIHJlcXVlc3QgcG9ydGlvbiBvZiB0aGlzIHJlcXVlc3QuCi0JICogQHBhcmFtIHJlcXVlc3RDb250ZW50IGJ5dGVbXQotCSAqLwotCXZvaWQgc2V0UmVxdWVzdENvbnRlbnQoYnl0ZVtdIHJlcXVlc3RDb250ZW50KTsKLQotCS8qKgotCSAqIFJldHVybnMganVzdCB0aGUgSFRUUCBib2R5IG9mIHRoZSByZXNwb25zZSBwb3J0aW9uIG9mIHRoaXMgcmVxdWVzdC4KLQkgKiBAcmV0dXJuIHRoZSBjb250ZW50IGJ5dGVzCi0JICovCi0JYnl0ZVtdIGdldFJlc3BvbnNlQ29udGVudCgpOwotCi0JLyoqCi0JICogQWRkIHRoZSBIVFRQIGJvZHkgb2YgdGhlIHJlc3BvbnNlIHBvcnRpb24gb2YgdGhpcyByZXF1ZXN0LgotCSAqIEBwYXJhbSByZXNwb25zZUNvbnRlbnQgYnl0ZVtdCi0JICovCi0Jdm9pZCBzZXRSZXNwb25zZUNvbnRlbnQoYnl0ZVtdIHJlc3BvbnNlQ29udGVudCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB0aW1lIHRoaXMgcmVxdWVzdCB3YXMgbWFkZS4KLQkgKiBAcmV0dXJuIHRoZSB0aW1lc3RhbXAKLQkgKi8KLQlEYXRlIGdldERhdGUoKTsKLQotCS8qKgotCSAqIEFkZCB0aGUgdGltZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGUuCi0JICogQHBhcmFtIGRhdGUgdGhlIHRpbWUKLQkgKi8KLSAgICB2b2lkIHNldERhdGUoRGF0ZSBkYXRlKTsKLQotICAgIC8qKgotCSAqIFJldHVybnMgdGhlIGxvY2FsIChjbGllbnQpIHBvcnQuCi0JICogQHJldHVybiB0aGUgbG9jYWwgcG9ydCBudW1iZXIKLQkgKi8KLQlpbnQgZ2V0TG9jYWxQb3J0KCk7Ci0KLQkvKioKLQkgKiBBZGQgdGhlIGxvY2FsIChjbGllbnQpIHBvcnQuCi0JICogQHBhcmFtIGxvY2FsUG9ydCB0aGUgbG9jYWwgcG9ydAotCSAqLwotCXZvaWQgc2V0TG9jYWxQb3J0KGludCBsb2NhbFBvcnQpOwotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcmVtb3RlIChzZXJ2ZXIpIHBvcnQuCi0JICogQHJldHVybiB0aGUgcmVtb3RlIHBvcnQgbnVtYmVyCi0JICovCi0JaW50IGdldFJlbW90ZVBvcnQoKTsKLQotCS8qKgotCSAqIEFkZCB0aGUgdGhlIHJlbW90ZSAoc2VydmVyKSBwb3J0LgotCSAqIEBwYXJhbSByZW1vdGVQb3J0IHRoZSByZW1vdGUgcG9ydAotCSAqLwotCXZvaWQgc2V0UmVtb3RlUG9ydChpbnQgcmVtb3RlUG9ydCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSByZW1vdGUgKHNlcnZlcikgaG9zdC4KLSAgICAgKiBAcmV0dXJuIHRoZSByZW1vdGUgaG9zdAotCSAqLwotCVN0cmluZyBnZXRSZW1vdGVIb3N0KCk7Ci0KLQkvKioKLQkgKiBBZGQgdGhlIHJlbW90ZSAoc2VydmVyKSBob3N0LgotCSAqIEBwYXJhbSByZW1vdGVIb3N0IHRoZSByZW1vdGUgaG9zdAotCSAqLwotCXZvaWQgc2V0UmVtb3RlSG9zdChTdHJpbmcgcmVtb3RlSG9zdCk7Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzZXJ2ZXIncyByZXNwb25zZSB0aW1lIGluIG1pbGxpc2Vjb25kcy4gCi0JICogQHJldHVybiB0aGUgc2VydmVyJ3MgcmVzcG9uc2UgdGltZQotCSAqLwotCWxvbmcgZ2V0UmVzcG9uc2VUaW1lKCk7Ci0KLQkvKioKLQkgKiBBZGQgdGhlIHRoZSBzZXJ2ZXIncyByZXNwb25zZSB0aW1lIGluIG1pbGxpc2Vjb25kcy4gCi0JICogQHBhcmFtIHJlc3BvbnNlVGltZSB0aGUgcmVzcG9uc2UgdGltZQotCSAqLwotCXZvaWQgc2V0UmVzcG9uc2VUaW1lKGxvbmcgcmVzcG9uc2VUaW1lKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9pbXBsL0xvZ0ltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9pbXBsL0xvZ0ltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJkNzhhZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvaW1wbC9Mb2dJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlRlc3RVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5VdGlsczsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG1lc3NhZ2UgbG9nIGZpbGUuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIExvZ0ltcGwgaW1wbGVtZW50cyBMb2cKLXsKLSAgLyoqCi0gICAqIExvZyBVUkkuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGxvZ1VSSSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFN0YXJ0IHRpbWUgc3RhbXAuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHN0YXJ0VGltZXN0YW1wID0gbnVsbDsKLQotICAvKioKLSAgICogTG9nIGVudHJpZXMuCi0gICAqLwotICBwcm90ZWN0ZWQgVmVjdG9yIGxvZ0VudHJ5TGlzdCA9IG5ldyBWZWN0b3IoKTsKLQotICAvKioKLSAgICogTGFzdCBsb2cgZW50cnkuCi0gICAqLwotICBwcm90ZWN0ZWQgTWVzc2FnZUVudHJ5IGxhc3RMb2dFbnRyeSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIExvZyB0aXRsZS4KLSAgICovCi0gIC8vIEFERDogU2hvdWxkIHdlIHByb3ZpZGUgYSB3YXkgdG8gc2V0IHRoZSBsb2cgdGl0bGU/Ci0gIHByb3RlY3RlZCBTdHJpbmcgbG9nVGl0bGUgPSAiTWVzc2FnZSBMb2cgRmlsZSI7Ci0KLSAgLyoqCi0gICAqIFN0eWxlIHNoZWV0IHN0cmluZy4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgc3R5bGVTaGVldFN0cmluZyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5Mb2cjYWRkTG9nRW50cnkoTG9nRW50cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRMb2dFbnRyeShNZXNzYWdlRW50cnkgbG9nRW50cnkpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIFNhdmUgbGFzdCBsb2cgZW50cnkKLSAgICBsYXN0TG9nRW50cnkgPSBsb2dFbnRyeTsKLQotICAgIC8vIEFkZCBsb2cgZW50cnkKLSAgICBsb2dFbnRyeUxpc3QuYWRkKGxvZ0VudHJ5KTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nI2dldEVudHJ5Q291bnQoKQotICAgKi8KLSAgcHVibGljIGludCBnZXRFbnRyeUNvdW50KCkKLSAgewotICAgIHJldHVybiBsb2dFbnRyeUxpc3Quc2l6ZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5Mb2cjZ2V0TG9nRW50cnkoaW50KQotICAgKi8KLSAgcHVibGljIE1lc3NhZ2VFbnRyeSBnZXRMb2dFbnRyeShpbnQgaW5kZXgpCi0gIHsKLSAgICByZXR1cm4gKE1lc3NhZ2VFbnRyeSkgbG9nRW50cnlMaXN0LmVsZW1lbnRBdChpbmRleCk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLkxvZyNnZXRMb2dFbnRyeUxpc3QoKQotICAgKi8KLSAgcHVibGljIFZlY3RvciBnZXRMb2dFbnRyeUxpc3QoKQotICB7Ci0gICAgcmV0dXJuIGxvZ0VudHJ5TGlzdDsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgbGFzdCBsb2cgZW50cnkuCi0gICAqLwotICBwdWJsaWMgTWVzc2FnZUVudHJ5IGdldExhc3RMb2dFbnRyeSgpCi0gIHsKLSAgICByZXR1cm4gbGFzdExvZ0VudHJ5OwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBsb2cgZW50cnkgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIE1lc3NhZ2VFbnRyeSBjcmVhdGVMb2dFbnRyeSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IE1lc3NhZ2VFbnRyeUltcGwoKTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5XU0lEb2N1bWVudCNnZXRMb2NhdGlvbigpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldExvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiB0aGlzLmxvZ1VSSTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5XU0lEb2N1bWVudCNzZXRMb2NhdGlvbihTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMb2NhdGlvbihTdHJpbmcgZG9jdW1lbnRVUkkpCi0gIHsKLSAgICB0aGlzLmxvZ1VSSSA9IGRvY3VtZW50VVJJOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBzdHlsZSBzaGVldCBzdHJpbmcuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTdHlsZVNoZWV0U3RyaW5nKFN0cmluZyBzdHlsZVNoZWV0U3RyaW5nKQotICB7Ci0gICAgdGhpcy5zdHlsZVNoZWV0U3RyaW5nID0gc3R5bGVTaGVldFN0cmluZzsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgc3RhcnQgZWxlbWVudCBzdHJpbmcuIAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTdGFydFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gQ3JlYXRlIHJlcG9ydCBlbGVtZW50IAotICAgIHB3LnByaW50bG4oV1NJQ29uc3RhbnRzLlhNTF9ERUNMKTsKLSAgICBpZiAodGhpcy5zdHlsZVNoZWV0U3RyaW5nICE9IG51bGwpCi0gICAgICBwdy5wcmludGxuKHRoaXMuc3R5bGVTaGVldFN0cmluZyk7Ci0KLSAgICAvLyBBZGQgWE1MIGNvbW1lbnQKLSAgICBTdHJpbmcgY29tbWVudDsKLSAgICBpZiAoKGNvbW1lbnQgPSBUZXN0VXRpbHMuZ2V0WE1MQ29tbWVudCgpKSAhPSBudWxsKQotICAgICAgcHcucHJpbnQoY29tbWVudCk7Ci0KLSAgICAvLyBMb2cKLSAgICBwdy5wcmludCgiPCIgKyBuc05hbWUgKyBFTEVNX05BTUUpOwotCi0gICAgLy8gUkVNT1ZFRDogTm8gbG9uZ2VyIHJlcXVpcmVkIGJ5IHRoZSBtb25pdG9yIHNwZWMKLSAgICAvL3B3LnByaW50KCIgIiArIFdTSUNvbnN0YW50cy5BVFRSX05BTUUgKyAiPVwiIiArIGxvZ1RpdGxlICsgIlwiIik7Ci0gICAgcHcucHJpbnRsbigKLSAgICAgICIgIiArIFdTSUNvbnN0YW50cy5BVFRSX1RJTUVTVEFNUCArICI9XCIiICsgVXRpbHMuZ2V0VGltZXN0YW1wKCkgKyAiXCIiKTsKLSAgICBwdy5wcmludGxuKCIgICAgeG1sbnM9XCIiICsgV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfTE9HICsgIlwiIik7Ci0gICAgcHcucHJpbnRsbigKLSAgICAgICIgICAgeG1sbnM6IgotICAgICAgICArIFdTSUNvbnN0YW50cy5OU19OQU1FX1dTSV9NT05JVE9SX0NPTkZJRwotICAgICAgICArICI9XCIiCi0gICAgICAgICsgV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfTU9OSVRPUl9DT05GSUcKLSAgICAgICAgKyAiXCIiKTsKLSAgICAvL3B3LnByaW50bG4oIiAgICB4bWxuczoiICsgV1NJQ29uc3RhbnRzLk5TX05BTUVfV1NJX0NPTU1PTiArICI9XCIiICsgCi0gICAgLy8gICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9DT01NT04gKyAiXCIiKTsKLSAgICBwdy5wcmludGxuKAotICAgICAgIiAgICB4bWxuczoiCi0gICAgICAgICsgV1NJQ29uc3RhbnRzLk5TX05BTUVfWFNJCi0gICAgICAgICsgIj1cIiIKLSAgICAgICAgKyBXU0lDb25zdGFudHMuTlNfVVJJX1hTSQotICAgICAgICArICJcIj4iKTsKLQotICAgIC8vIEFkZCAgbW9uaXRvciB0b29sIGluZm8KLSAgICAvL3B3LnByaW50bG4obW9uaXRvci50b1hNTFN0cmluZyhuc05hbWUpKTsKLQotICAgIC8vIFJldHVybiBYTUwgc3RyaW5nCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGVuZCBlbGVtZW50IHN0cmluZy4gCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEVuZFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gRW5kIGxvZyBlbGVtZW50IAotICAgIHB3LnByaW50bG4oIjwvIiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0KLSAgICAvLyBSZXR1cm4gWE1MIHN0cmluZwotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RWxlbWVudCN0b1hNTFN0cmluZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgLy8gQUREOgotICAgIHJldHVybiBudWxsOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9pbXBsL0xvZ1JlYWRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9pbXBsL0xvZ1JlYWRlckltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdhYTc2My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvaW1wbC9Mb2dSZWFkZXJJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5SZWFkZXI7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLlRvb2xFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuVG9vbEluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nUmVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5SGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1pbWVQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5Db21tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5pbXBsLkNvbW1lbnRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLk1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5BcnRpZmFjdFJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbC5BcnRpZmFjdFJlZmVyZW5jZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5pbXBsLkVudHJ5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FbnRyeVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmRvbS5FbGVtZW50TG9jYXRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguQXR0cmlidXRlczsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLWltcG9ydCBvcmcueG1sLnNheC5Mb2NhdG9yOwotaW1wb3J0IG9yZy54bWwuc2F4LlhNTFJlYWRlcjsKLWltcG9ydCBvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyOwotCi0vKioKLSAqIERlZmluZXMgdGhlIGltcGxlbWVudGF0aW9uIHVzZWQgdG8gcmVhZCB0aGUgTG9nIGZpbGUuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIE5laWwgRGVsaW1hIChuZGRlbGltYUBjYS5pYm0uY29tKQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKiBAYXV0aG9yIEdyYWhhbSBUdXJyZWxsIChndHVycmVsbEB1ay5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgTG9nUmVhZGVySW1wbCBpbXBsZW1lbnRzIExvZ1JlYWRlcgotewotICAvKioKLSAgICogRG9jdW1lbnQgbG9jYXRpb24uCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBkb2N1bWVudFVSSTsKLQotICAvKiogVXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgaW1wbGVtZW50ZXIgaXMgdGhlIGZpcnN0IGVsZW1lbnQgYWZ0ZXIgdGhlIGxvZyBlbGVtZW50ICoqLwotICBwcml2YXRlIGludCBmaXJzdExvZ0VsZW1lbnQgPSAwOwotICBwcml2YXRlIGludCBlbGVtZW50Q291bnQgPSAwOwotICBwcml2YXRlIGJvb2xlYW4gYk1vbml0b3JGaXJzdCA9IGZhbHNlOwotCi0gIHByaXZhdGUgV1NJRXhjZXB0aW9uIHdzaUV4Y2VwdGlvbiA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5Mb2dSZWFkZXIjcmVhZExvZyhTdHJpbmcsIExvZ0VudHJ5SGFuZGxlcikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlYWRMb2coU3RyaW5nIGxvZ1VSSSwgTWVzc2FnZUVudHJ5SGFuZGxlciBsb2dSZWFkZXJDYWxsYmFjaykKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBSZWFkIHRoZSBsb2cgZmlsZSBlbnRyaWVzCi0gICAgcmVhZExvZyhuZXcgSW5wdXRTb3VyY2UobG9nVVJJKSwgbG9nUmVhZGVyQ2FsbGJhY2spOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5Mb2dSZWFkZXIjcmVhZExvZyhSZWFkZXIsIExvZ0VudHJ5SGFuZGxlcikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlYWRMb2coUmVhZGVyIHJlYWRlciwgTWVzc2FnZUVudHJ5SGFuZGxlciBsb2dSZWFkZXJDYWxsYmFjaykKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBSZWFkIHRoZSBsb2cgZmlsZSBlbnRyaWVzCi0gICAgcmVhZExvZyhuZXcgSW5wdXRTb3VyY2UocmVhZGVyKSwgbG9nUmVhZGVyQ2FsbGJhY2spOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlYWQgYW5kIHBhcnNlIHRoZSBsb2cgZmlsZS4KLSAgICogQHBhcmFtIGlucHV0U291cmNlICAgICAgICAgIGFuIElucHV0U291cmNlIG9iamVjdAotICAgKiBAcGFyYW0gbWVzc2FnZUVudHJ5SGFuZGxlciAgYSBNZXNzYWdlRW50cnlIYW5kbGVyIG9iamVjdAotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBhIHByb2JsZW0gb2NjdXJzIHdoaWxlIHJlYWRpbmcgdGhlIGxvZyBmaWxlLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgcmVhZExvZygKLSAgICBJbnB1dFNvdXJjZSBpbnB1dFNvdXJjZSwKLSAgICBNZXNzYWdlRW50cnlIYW5kbGVyIG1lc3NhZ2VFbnRyeUhhbmRsZXIpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0IHRoZSBYTUwgcmVhZGVyCi0gICAgICBYTUxSZWFkZXIgeG1sUmVhZGVyID0gWE1MVXRpbHMuZ2V0WE1MUmVhZGVyKCk7Ci0KLSAgICAgIC8qKiBUTyBETzogIFRoZSBMb2dGaWxlIG11c3QgYmUgdmFsaWQgd3J0IGl0cyBzY2hlbWEuICBUaGUgc2NoZW1hTG9jYXRpb24gcHJvYmFibHkKLSAgICAgICAqIG5lZWRzIHRvIGJlIHNldCBpbiBzb21lIHByb3BlcnRpZXMgZmlsZS4KLSAgICAgICAqIFRoZXNlIHR3byBhcmUgdG8gdHVybiBvbiB2YWxpZGF0aW9uIAotICAgICAgcmVhZGVyLnNldEZlYXR1cmUoRkVBVFVSRV9WQUxJREFUSU9OLHRydWUpOwotICAgICAgKi8KLQotICAgICAgLy8gU2V0IHRoZSBjb250ZW50IGhhbmRsZXIKLSAgICAgIHhtbFJlYWRlci5zZXRDb250ZW50SGFuZGxlcihuZXcgTG9nRmlsZUhhbmRsZXIobWVzc2FnZUVudHJ5SGFuZGxlcikpOwotCi0gICAgICAvLyBTdGFydCBwYXJzaW5nIHRoZSBmaWxlCi0gICAgICB4bWxSZWFkZXIucGFyc2UoaW5wdXRTb3VyY2UpOwotCi0gICAgICAvLyBBREQ6IE5lZWQgdG8gZmluZCBhIHdheSB0byBkZXRlcm1pbmUgd2hlbiB0aGlzIGV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duLCAKLSAgICAgIC8vIHNpbmNlIGJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlIGFsbCBvZiB0aGUgdGVzdCBhc3NlcnRpb25zIGhhdmUgYmVlbiBwcm9jZXNzZWQuCi0gICAgICAvLyBBbHNvLCBvbmx5IHRoZSBsYXN0IGV4Y2VwdGlvbiBpcyBwcm9wb2dhdGVkIGJhY2suICBTaG91bGQgYWxsIG9mIHRoZSBleGNlcHRpb25zCi0gICAgICAvLyBiZSBjYXB0dXJlZCBhbmQgcHJvcG9nYXRlZCBiYWNrPwotICAgICAgaWYgKHdzaUV4Y2VwdGlvbiAhPSBudWxsKQotICAgICAgewotICAgICAgICAvLyBURU1QOiBGb3Igbm93LCBkb24ndCB0aHJvdyB0aGUgZXhjZXB0aW9uCi0gICAgICAgIC8vdGhyb3cgd3NpRXhjZXB0aW9uOwotICAgICAgfQotCi0gICAgICAvL1JlcXVpcmVtZW50LCB0aGUgbW9uaXRvciBNVVNUIGJlIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUgbG9nLgotICAgICAgLy9QZXJoYXBzIHdlIG5lZWQgdG8gcHJlcHJvY2VzcyB0aGUgbG9nIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGNvbmRpdGlvbiB0byBiZSBtZXQuCi0gICAgICBpZiAoIWJNb25pdG9yRmlyc3QpCi0gICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICAgIlRoZSBFbGVtZW50IFwiIgotICAgICAgICAgICAgKyBXU0lDb25zdGFudHMuRUxFTV9NT05JVE9SCi0gICAgICAgICAgICArICJcIiBpcyBub3QgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBFbGVtZW50IFwibG9nXCIiKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBtZXNzYWdlIGxvZyBmaWxlLiIsCi0gICAgICAgIGUpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudFJlYWRlciNnZXRMb2NhdGlvbigpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldExvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiB0aGlzLmRvY3VtZW50VVJJOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50UmVhZGVyI3NldExvY2F0aW9uKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKFN0cmluZyBkb2N1bWVudFVSSSkKLSAgewotICAgIHRoaXMuZG9jdW1lbnRVUkkgPSBkb2N1bWVudFVSSTsKLSAgfQotCi0gIC8qKgotICAqIFByb2Nlc3MgYW5kIGhhbmRsZXMgZWxlbWVudHMgYW5kIGF0dHJpYnV0ZSBpbiB0aGUgbG9nIGZpbGUgYW5kIGludm9rZXMKLSAgKiBtZXNzYWdlIHZhbGlkYXRpb24gYXNzZXJ0aW9ucyBzZXJpYWxseSBhcyB0aGUgZmlsZSBpcyBiZWluZyBwcm9jZXNzZWQsCi0gICogaWYgYSBtZXNzYWdldmFsaWRhdG9yIGV4aXN0cy4KLSAgKi8KLSAgcHJpdmF0ZSBjbGFzcyBMb2dGaWxlSGFuZGxlciBleHRlbmRzIERlZmF1bHRIYW5kbGVyCi0gIHsKLQotICAgIC8qKiBwcml2YXRlIG1lbWJlcnMgdGhhdCByZXByZXNlbnQgYSBNZXNzYWdlRW50cnkuKi8KLSAgICBwcml2YXRlIFN0cmluZyBpZDsKLSAgICBwcml2YXRlIFN0cmluZyBjb252ZXJzYXRpb25JRDsKLSAgICBwcml2YXRlIFN0cmluZyB0eXBlOwotICAgIHByaXZhdGUgU3RyaW5nIHRpbWVzdGFtcDsKLSAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBzZW5kZXJIb3N0QW5kUG9ydCA9IG51bGw7Ci0gICAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgcmVjZWl2ZXJIb3N0QW5kUG9ydCAgPSBudWxsOwotICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyIG1lc3NhZ2VDb250ZW50ICA9IG51bGw7Ci0gICAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgaHR0cEhlYWRlcnMgID0gbnVsbDsKLSAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBib3VuZGFyeSAgPSBudWxsOwotICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyIG1pbWVIZWFkZXJzID0gbnVsbDsKLSAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBtaW1lQ29udGVudCA9IG51bGw7Ci0gICAgcHJpdmF0ZSBNaW1lUGFydHMgbWltZVBhcnRzID0gbnVsbDsKLSAgICBwcml2YXRlIExpc3QgYm91bmRhcmllcyA9IG51bGw7Ci0KLSAgICBwcml2YXRlIGludCBib20gPSAwOwotCi0gICAgcHJpdmF0ZSBTdHJpbmcgbG9nVGltZXN0YW1wID0gbnVsbDsKLSAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBtb25pdG9yQ29tbWVudDsKLSAgICBwcml2YXRlIGJvb2xlYW4gaWdub3JlQ29tbWVudCA9IGZhbHNlOwotCi0gICAgLyoqIE90aGVyIHByaXZhdGUgbWVtYmVycyAqLwotICAgIHByaXZhdGUgU3RyaW5nIGN1cnJlbnRFbGVtZW50OwotCi0gICAgcHJpdmF0ZSBFbGVtZW50TG9jYXRpb24gZW50cnlFbGVtZW50TG9jYXRpb24gPSBudWxsOwotCi0gICAgcHJpdmF0ZSBUb29sSW5mbyB0b29sSW5mbyA9IG51bGw7Ci0KLSAgICBwcml2YXRlIFZlY3RvciBtZXNzYWdlRW50cnlMaXN0ID0gbmV3IFZlY3RvcigpOwotCi0gICAgcHJpdmF0ZSBNZXNzYWdlRW50cnlIYW5kbGVyIGxvZ0VudHJ5SGFuZGxlciA9IG51bGw7Ci0KLSAgICBwcml2YXRlIExvY2F0b3IgbG9jYXRvciA9IG51bGw7Ci0KLSAgICAvKioKLSAgICAgKiBMb2cgZmlsZSBoYW5kbGVyLiAKLSAgICAgKi8KLSAgICBwdWJsaWMgTG9nRmlsZUhhbmRsZXIoTWVzc2FnZUVudHJ5SGFuZGxlciBsb2dFbnRyeUhhbmRsZXIpCi0gICAgewotICAgICAgdGhpcy5sb2dFbnRyeUhhbmRsZXIgPSBsb2dFbnRyeUhhbmRsZXI7Ci0KLSAgICAgIHRvb2xJbmZvID0gbmV3IFRvb2xJbmZvKCk7Ci0gICAgICB0b29sSW5mby5zZXRUb29sRW52aXJvbm1lbnQobmV3IFRvb2xFbnZpcm9ubWVudCgpKTsKLSAgICB9Ci0KLSAgICAvKiogCi0gICAgICogU3RhcnQgZG9jdW1lbnQuIAotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHN0YXJ0RG9jdW1lbnQoKQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiogCi0gICAgICogU2V0IGRvY3VtZW50IGxvY2F0by4KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzZXREb2N1bWVudExvY2F0b3IoTG9jYXRvciBsb2NhdG9yKQotICAgIHsKLSAgICAgIHRoaXMubG9jYXRvciA9IGxvY2F0b3I7Ci0KLSAgICAgIC8vIERFQlVHOgotICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oImxpbmU6ICIgKyBsb2NhdG9yLmdldExpbmVOdW1iZXIoKSArICIsIGNvbHVtbjogIiArIGxvY2F0b3IuZ2V0Q29sdW1uTnVtYmVyKCkpOwotICAgIH0KLQotICAgIC8qKiAKLSAgICAgKiBTdGFydCBlbGVtZW50LiAKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzdGFydEVsZW1lbnQoCi0gICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgU3RyaW5nIGxvY2FsTmFtZSwKLSAgICAgIFN0cmluZyBxTmFtZSwKLSAgICAgIEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKLSAgICB7Ci0gICAgICAvLyBERUJVRzoKLSAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJsb2NhbE5hbWU6IiArIGxvY2FsTmFtZSArICIsIGxpbmU6ICIgKyBsb2NhdG9yLmdldExpbmVOdW1iZXIoKSArICIsIGNvbHVtbjogIiArIGxvY2F0b3IuZ2V0Q29sdW1uTnVtYmVyKCkpOwotCi0gICAgICAvL1JlcXVpcmVtZW50LCB0aGUgaW1wbGVtZW50ZXIgTVVTVCBiZSB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlIGxvZyAgICAgICAKLSAgICAgIGlmIChlbGVtZW50Q291bnQgPT0gMikKLSAgICAgICAgaWYgKGZpcnN0TG9nRWxlbWVudCA9PSAxKQotICAgICAgICAgIGJNb25pdG9yRmlyc3QgPSB0cnVlOwotCi0gICAgICBlbGVtZW50Q291bnQrKzsKLQotICAgICAgLy8gPGxvZz4KLSAgICAgIGlmIChsb2NhbE5hbWUgPT0gV1NJQ29uc3RhbnRzLkVMRU1fTE9HKQotICAgICAgewotICAgICAgICAvLyBTYXZlIHRoZSB0aW1lc3RhbXAgdmFsdWUKLSAgICAgICAgdGhpcy5sb2dUaW1lc3RhbXAgPSBhdHRyaWJ1dGVzLmdldFZhbHVlKFdTSUNvbnN0YW50cy5BVFRSX1RJTUVTVEFNUCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDx3c2ktY29uZmlnOmNvbmZpZ3VyYXRpb24+Ci0gICAgICBlbHNlIGlmICgKLSAgICAgICAgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9DT05GSUcpCi0gICAgICAgICAgJiYgKG5hbWVzcGFjZVVSSSA9PSBXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9NT05JVE9SX0NPTkZJRykpCi0gICAgICB7Ci0gICAgICAgIC8vIFNhdmUgY29tbWVudCBlbGVtZW50IGlmIGl0IGV4aXN0cwotICAgICAgICBpZ25vcmVDb21tZW50ID0gZmFsc2U7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDx3c2ktY29uZmlnOmNvbW1lbnQ+Ci0gICAgICBlbHNlIGlmICgKLSAgICAgICAgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9DT01NRU5UKQotICAgICAgICAgICYmIChuYW1lc3BhY2VVUkkgPT0gV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfTU9OSVRPUl9DT05GSUcpKQotICAgICAgewotICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBjb21tZW50IGVsZW1lbnQgd2l0aGluIHRoZSBjb25maWd1cmF0aW9uIGVsZW1lbnQsIHRoZW4gZ2V0IGl0cyBjb250ZW50Ci0gICAgICAgIGlmICghaWdub3JlQ29tbWVudCkKLSAgICAgICAgewotICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gV1NJQ29uc3RhbnRzLkVMRU1fQ09NTUVOVDsKLSAgICAgICAgICBtb25pdG9yQ29tbWVudCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyA8d3NpLWNvbmZpZzpyZWRpcmVjdD4KLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAobG9jYWxOYW1lID09IFdTSUNvbnN0YW50cy5FTEVNX1JFRElSRUNUKQotICAgICAgICAgICYmIChuYW1lc3BhY2VVUkkgPT0gV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfTU9OSVRPUl9DT05GSUcpKQotICAgICAgewotICAgICAgICAvLyBBZnRlciBoaXR0aW5nIHRoZSBmaXJzdCByZWRpcmVjdCBzdGF0ZW1lbnQsIGlnbm9yZSBhbGwgY29tbWVudCBlbGVtZW50cwotICAgICAgICBpZ25vcmVDb21tZW50ID0gdHJ1ZTsKLSAgICAgICAgbW9uaXRvckNvbW1lbnQgPSBudWxsOwotICAgICAgfQotCi0gICAgICAvLyA8bW9uaXRvcj4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9NT05JVE9SKQotICAgICAgewotICAgICAgICBmaXJzdExvZ0VsZW1lbnQrKzsKLSAgICAgICAgdG9vbEluZm8uc2V0TmFtZShXU0lDb25zdGFudHMuRUxFTV9NT05JVE9SKTsKLQotICAgICAgICAvLyBHZXQgdGhlIG1vbml0b3IgdmVyc2lvbiBhbmQgcmVsZWFzZSBkYXRlCi0gICAgICAgIHRvb2xJbmZvLnNldFZlcnNpb24oYXR0cmlidXRlcy5nZXRWYWx1ZShXU0lDb25zdGFudHMuQVRUUl9WRVJTSU9OKSk7Ci0gICAgICAgIHRvb2xJbmZvLnNldFJlbGVhc2VEYXRlKAotICAgICAgICAgIGF0dHJpYnV0ZXMuZ2V0VmFsdWUoV1NJQ29uc3RhbnRzLkFUVFJfUkVMRUFTRV9EQVRFKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxpbXBsZW1lbnRlcj4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9JTVBMRU1FTlRFUikKLSAgICAgIHsKLSAgICAgICAgY3VycmVudEVsZW1lbnQgPSBXU0lDb25zdGFudHMuRUxFTV9JTVBMRU1FTlRFUjsKLSAgICAgICAgdG9vbEluZm8uc2V0SW1wbGVtZW50ZXIoYXR0cmlidXRlcy5nZXRWYWx1ZShXU0lDb25zdGFudHMuQVRUUl9OQU1FKSk7Ci0gICAgICAgIHRvb2xJbmZvLnNldExvY2F0aW9uKGF0dHJpYnV0ZXMuZ2V0VmFsdWUoV1NJQ29uc3RhbnRzLkFUVFJfTE9DQVRJT04pKTsKLSAgICAgIH0KLQotICAgICAgLy8gPHJ1bnRpbWU+Ci0gICAgICBlbHNlIGlmIChsb2NhbE5hbWUgPT0gV1NJQ29uc3RhbnRzLkVMRU1fUlVOVElNRSkKLSAgICAgIHsKLSAgICAgICAgY3VycmVudEVsZW1lbnQgPSBXU0lDb25zdGFudHMuRUxFTV9SVU5USU1FOwotICAgICAgICB0b29sSW5mby5nZXRUb29sRW52aXJvbm1lbnQoKS5zZXRSdW50aW1lTmFtZSgKLSAgICAgICAgICBhdHRyaWJ1dGVzLmdldFZhbHVlKFdTSUNvbnN0YW50cy5BVFRSX05BTUUpKTsKLSAgICAgICAgdG9vbEluZm8uZ2V0VG9vbEVudmlyb25tZW50KCkuc2V0UnVudGltZVZlcnNpb24oCi0gICAgICAgICAgYXR0cmlidXRlcy5nZXRWYWx1ZShXU0lDb25zdGFudHMuQVRUUl9WRVJTSU9OKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxvcGVyYXRpbmdTeXN0ZW0+Ci0gICAgICBlbHNlIGlmIChsb2NhbE5hbWUgPT0gV1NJQ29uc3RhbnRzLkVMRU1fT1BFUkFUSU5HX1NZU1RFTSkKLSAgICAgIHsKLSAgICAgICAgY3VycmVudEVsZW1lbnQgPSBXU0lDb25zdGFudHMuRUxFTV9PUEVSQVRJTkdfU1lTVEVNOwotICAgICAgICB0b29sSW5mby5nZXRUb29sRW52aXJvbm1lbnQoKS5zZXRPU05hbWUoCi0gICAgICAgICAgYXR0cmlidXRlcy5nZXRWYWx1ZShXU0lDb25zdGFudHMuQVRUUl9OQU1FKSk7Ci0gICAgICAgIHRvb2xJbmZvLmdldFRvb2xFbnZpcm9ubWVudCgpLnNldE9TVmVyc2lvbigKLSAgICAgICAgICBhdHRyaWJ1dGVzLmdldFZhbHVlKFdTSUNvbnN0YW50cy5BVFRSX1ZFUlNJT04pKTsKLSAgICAgIH0KLQotICAgICAgLy8gPHhtbFBhcnNlcj4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9YTUxfUEFSU0VSKQotICAgICAgewotICAgICAgICBjdXJyZW50RWxlbWVudCA9IFdTSUNvbnN0YW50cy5FTEVNX1hNTF9QQVJTRVI7Ci0gICAgICAgIHRvb2xJbmZvLmdldFRvb2xFbnZpcm9ubWVudCgpLnNldFhNTFBhcnNlck5hbWUoCi0gICAgICAgICAgYXR0cmlidXRlcy5nZXRWYWx1ZShXU0lDb25zdGFudHMuQVRUUl9OQU1FKSk7Ci0gICAgICAgIHRvb2xJbmZvLmdldFRvb2xFbnZpcm9ubWVudCgpLnNldFhNTFBhcnNlclZlcnNpb24oCi0gICAgICAgICAgYXR0cmlidXRlcy5nZXRWYWx1ZShXU0lDb25zdGFudHMuQVRUUl9WRVJTSU9OKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxtZXNzYWdlRW50cnk+Ci0gICAgICBlbHNlIGlmIChsb2NhbE5hbWUgPT0gV1NJQ29uc3RhbnRzLkVMRU1fTUVTU0FHRV9FTlRSWSkKLSAgICAgIHsKLSAgICAgICAgY3VycmVudEVsZW1lbnQgPSBXU0lDb25zdGFudHMuRUxFTV9NRVNTQUdFX0VOVFJZOwotICAgICAgICBlbnRyeUVsZW1lbnRMb2NhdGlvbiA9IG5ldyBFbGVtZW50TG9jYXRpb24odGhpcy5sb2NhdG9yKTsKLSAgICAgICAgdGltZXN0YW1wID0gYXR0cmlidXRlcy5nZXRWYWx1ZShXU0lDb25zdGFudHMuQVRUUl9USU1FU1RBTVApOwotICAgICAgICBjb252ZXJzYXRpb25JRCA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoV1NJQ29uc3RhbnRzLkFUVFJfQ09OVkVSU0FUSU9OX0lEKTsKLSAgICAgICAgaWQgPSBhdHRyaWJ1dGVzLmdldFZhbHVlKFdTSUNvbnN0YW50cy5BVFRSX0lEX1VDKTsKLSAgICAgICAgdHlwZSA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoV1NJQ29uc3RhbnRzLkFUVFJfVFlQRSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxodHRwSGVhZGVycz4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9IVFRQX0hFQURFUlMpCi0gICAgICB7Ci0gICAgICAgIC8vTm90ZTogQ2hhcmFjdGVyIGRhdGEgY291bGQgYmUgc3BsaXQgdXAgYW5kIHJldHVybmVkIAotICAgICAgICAvL2luIG1vcmUgbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXJzIGNhbGwuIAotICAgICAgICBodHRwSGVhZGVycyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgY3VycmVudEVsZW1lbnQgPSBXU0lDb25zdGFudHMuRUxFTV9IVFRQX0hFQURFUlM7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxtZXNzYWdlQ29udGVudD4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9NRVNTQUdFX0NPTlRFTlQpCi0gICAgICB7Ci0gICAgICAgIG1lc3NhZ2VDb250ZW50ID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICBtaW1lUGFydHMgPSBudWxsOwotICAgICAgICBjdXJyZW50RWxlbWVudCA9IFdTSUNvbnN0YW50cy5FTEVNX01FU1NBR0VfQ09OVEVOVDsKLSAgICAgICAgU3RyaW5nIGJvbVN0cmluZyA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoV1NJQ29uc3RhbnRzLkFUVFJfQk9NKTsKLSAgICAgICAgaWYgKGJvbVN0cmluZyAhPSBudWxsKQotICAgICAgICAgIGJvbSA9IEludGVnZXIudmFsdWVPZihib21TdHJpbmcpLmludFZhbHVlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBib20gPSAwOwotICAgICAgfQotCi0gICAgICAvLyA8bWVzc2FnZUNvbnRlbnRXaXRoQXR0YWNobWVudHM+Ci0gICAgICBlbHNlIGlmIChsb2NhbE5hbWUgPT0gV1NJQ29uc3RhbnRzLkVMRU1fTUVTU0FHRV9DT05URU5UX1dJVEhfQVRUQUNITUVOVFMpCi0gICAgICB7Ci0gICAgICAgIG1lc3NhZ2VDb250ZW50ID0gbnVsbDsKLSAgICAgICAgbWltZVBhcnRzID0gbmV3IE1pbWVQYXJ0c0ltcGwoKTsKLQotICAgICAgICBTdHJpbmcgYm9tU3RyaW5nID0gYXR0cmlidXRlcy5nZXRWYWx1ZShXU0lDb25zdGFudHMuQVRUUl9CT00pOwotICAgICAgICBpZiAoYm9tU3RyaW5nICE9IG51bGwpCi0gICAgICAgICAgYm9tID0gSW50ZWdlci52YWx1ZU9mKGJvbVN0cmluZykuaW50VmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGJvbSA9IDA7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxtaW1lUGFydD4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9NSU1FX1BBUlQpCi0gICAgICB7Ci0gICAgICAgIGlmIChib3VuZGFyaWVzID09IG51bGwpCi0gICAgICAgICAgYm91bmRhcmllcyA9IG5ldyBBcnJheUxpc3QoMik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBib3VuZGFyaWVzLmNsZWFyKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxib3VuZGFyeVN0cmluZz4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9CT1VOREFSWV9TVFJJTkcpCi0gICAgICB7Ci0gICAgICAgIGJvdW5kYXJ5ID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICBjdXJyZW50RWxlbWVudCA9IFdTSUNvbnN0YW50cy5FTEVNX0JPVU5EQVJZX1NUUklORzsKLSAgICAgIH0KLQotICAgICAgLy8gPG1pbWVIZWFkZXJzPgotICAgICAgZWxzZSBpZiAobG9jYWxOYW1lID09IFdTSUNvbnN0YW50cy5FTEVNX01JTUVfSEVBREVSUykKLSAgICAgIHsKLSAgICAgICAgbWltZUhlYWRlcnMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgIGN1cnJlbnRFbGVtZW50ID0gV1NJQ29uc3RhbnRzLkVMRU1fTUlNRV9IRUFERVJTOwotICAgICAgfQotCi0gICAgICAvLyA8bWltZUNvbnRlbnQ+Ci0gICAgICBlbHNlIGlmIChsb2NhbE5hbWUgPT0gV1NJQ29uc3RhbnRzLkVMRU1fTUlNRV9DT05URU5UKQotICAgICAgewotICAgICAgICBtaW1lQ29udGVudCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgY3VycmVudEVsZW1lbnQgPSBXU0lDb25zdGFudHMuRUxFTV9NSU1FX0NPTlRFTlQ7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxzZW5kZXJIb3N0QW5kUG9ydD4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9TRU5ERVJfSE9TVF9BTkRfUE9SVCkKLSAgICAgIHsKLSAgICAgICAgc2VuZGVySG9zdEFuZFBvcnQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgIGN1cnJlbnRFbGVtZW50ID0gV1NJQ29uc3RhbnRzLkVMRU1fU0VOREVSX0hPU1RfQU5EX1BPUlQ7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxyZWNlaXZlckhvc3RBbmRQb3J0PgotICAgICAgZWxzZSBpZiAobG9jYWxOYW1lID09IFdTSUNvbnN0YW50cy5FTEVNX1JFQ0VJVkVSX0hPU1RfQU5EX1BPUlQpCi0gICAgICB7Ci0gICAgICAgIHJlY2VpdmVySG9zdEFuZFBvcnQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgIGN1cnJlbnRFbGVtZW50ID0gV1NJQ29uc3RhbnRzLkVMRU1fUkVDRUlWRVJfSE9TVF9BTkRfUE9SVDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiogCi0gICAgKiBDaGFyYWN0ZXJzIGNhbGxiYWNrLiAKLSAgICAqLwotICAgIHB1YmxpYyB2b2lkIGNoYXJhY3RlcnMoY2hhciBjaFtdLCBpbnQgc3RhcnQsIGludCBsZW5ndGgpCi0gICAgewotICAgICAgLy8gSWdub3JpbmcgQ1JMRiB0aGF0IGFwcGVhcnMgaW4gbG9nIGVsZW1lbnRzCi0gICAgICBpbnQgYWx0U3RhcnQgPSBzdGFydDsKLSAgICAgIGludCBhbHRMZW5ndGggPSBsZW5ndGg7Ci0gICAgICBpZiAoc3RhcnQgPiAwICYmIGNoW3N0YXJ0LTFdID09IDEzICYmIGNoW3N0YXJ0XSA9PSAxMCkKLSAgICAgIHsKLSAgICAgICAgYWx0U3RhcnQrKzsKLSAgICAgICAgYWx0TGVuZ3RoLS07Ci0gICAgICB9Ci0KLSAgICAgIC8vIDx3c2ktbW9uQ29uZmlnOmNvbW1lbnQ+Ci0gICAgICBpZiAobW9uaXRvckNvbW1lbnQgIT0gbnVsbCAmJiBjdXJyZW50RWxlbWVudCA9PSBXU0lDb25zdGFudHMuRUxFTV9DT01NRU5UKQotICAgICAgewotICAgICAgICBtb25pdG9yQ29tbWVudC5hcHBlbmQoY2gsIHN0YXJ0LCBsZW5ndGgpOwotICAgICAgfQotCi0gICAgICAvLyA8bWVzc2FnZUNvbnRlbnQ+Ci0gICAgICBlbHNlIGlmIChtZXNzYWdlQ29udGVudCAhPSBudWxsCi0gICAgICAgICYmIGN1cnJlbnRFbGVtZW50ID09IFdTSUNvbnN0YW50cy5FTEVNX01FU1NBR0VfQ09OVEVOVCkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZUNvbnRlbnQuYXBwZW5kKGNoLCBzdGFydCwgbGVuZ3RoKTsKLSAgICAgIH0KLQotICAgICAgLy8gPGh0dHBIZWFkZXJzPgotICAgICAgZWxzZSBpZiAoaHR0cEhlYWRlcnMgIT0gbnVsbAotICAgICAgICAmJiBjdXJyZW50RWxlbWVudCA9PSBXU0lDb25zdGFudHMuRUxFTV9IVFRQX0hFQURFUlMpCi0gICAgICB7Ci0gICAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChjaCwgc3RhcnQsIGxlbmd0aCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxib3VuZGFyeVN0cmluZz4KLSAgICAgIGVsc2UgaWYgKGJvdW5kYXJ5ICE9IG51bGwKLSAgICAgICAgJiYgY3VycmVudEVsZW1lbnQgPT0gV1NJQ29uc3RhbnRzLkVMRU1fQk9VTkRBUllfU1RSSU5HKQotICAgICAgewotICAgICAgICBib3VuZGFyeS5hcHBlbmQoY2gsIGFsdFN0YXJ0LCBhbHRMZW5ndGgpOwotICAgICAgfQotCi0gICAgICAvLyA8bWltZUhlYWRlcnM+Ci0gICAgICBlbHNlIGlmIChtaW1lSGVhZGVycyAhPSBudWxsCi0gICAgICAgICYmIGN1cnJlbnRFbGVtZW50ID09IFdTSUNvbnN0YW50cy5FTEVNX01JTUVfSEVBREVSUykKLSAgICAgIHsKLSAgICAgICAgbWltZUhlYWRlcnMuYXBwZW5kKGNoLCBhbHRTdGFydCwgYWx0TGVuZ3RoKTsKLSAgICAgIH0KLQotICAgICAgLy8gPG1pbWVDb250ZW50PgotICAgICAgZWxzZSBpZiAobWltZUNvbnRlbnQgIT0gbnVsbAotICAgICAgICAmJiBjdXJyZW50RWxlbWVudCA9PSBXU0lDb25zdGFudHMuRUxFTV9NSU1FX0NPTlRFTlQpCi0gICAgICB7Ci0gICAgICAgIG1pbWVDb250ZW50LmFwcGVuZChjaCwgYWx0U3RhcnQsIGFsdExlbmd0aCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxzZW5kZXJIb3N0QW5kUG9ydD4KLSAgICAgIGVsc2UgaWYgKHNlbmRlckhvc3RBbmRQb3J0ICE9IG51bGwKLSAgICAgICAgJiYgY3VycmVudEVsZW1lbnQgPT0gV1NJQ29uc3RhbnRzLkVMRU1fU0VOREVSX0hPU1RfQU5EX1BPUlQpCi0gICAgICB7Ci0gICAgICAgIHNlbmRlckhvc3RBbmRQb3J0LmFwcGVuZChjaCwgc3RhcnQsIGxlbmd0aCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxyZWNlaXZlckhvc3RBbmRQb3J0PgotICAgICAgZWxzZSBpZiAocmVjZWl2ZXJIb3N0QW5kUG9ydCAhPSBudWxsCi0gICAgICAgICYmIGN1cnJlbnRFbGVtZW50ID09IFdTSUNvbnN0YW50cy5FTEVNX1JFQ0VJVkVSX0hPU1RfQU5EX1BPUlQpCi0gICAgICB7Ci0gICAgICAgIHJlY2VpdmVySG9zdEFuZFBvcnQuYXBwZW5kKGNoLCBzdGFydCwgbGVuZ3RoKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiogCi0gICAgICogRW5kIEVsZW1lbnQuIAotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIGVuZEVsZW1lbnQoU3RyaW5nIG5hbWVzcGFjZVVSSSwgU3RyaW5nIGxvY2FsTmFtZSwgU3RyaW5nIHFOYW1lKQotICAgIHsKLSAgICAgIC8vIDx3c2ktY29uZmlnOmNvbW1lbnQ+Ci0gICAgICBpZiAoCi0gICAgICAgIChsb2NhbE5hbWUgPT0gV1NJQ29uc3RhbnRzLkVMRU1fQ09NTUVOVCkKLSAgICAgICAgICAmJiAobmFtZXNwYWNlVVJJID09IFdTSUNvbnN0YW50cy5OU19VUklfV1NJX01PTklUT1JfQ09ORklHKSkKLSAgICAgIHsKLSAgICAgICAgLy8gSWYgd2Ugc2F2ZWQgdGhlIGNvbW1lbnQsIHRoZW4gcHJvY2VzcyBpdCBhbmQgdGhlIGxvZyB0aW1lc3RhbXAKLSAgICAgICAgaWYgKHRoaXMubW9uaXRvckNvbW1lbnQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIEFydGlmYWN0UmVmZXJlbmNlIGFydGlmYWN0UmVmZXJlbmNlID0gbmV3IEFydGlmYWN0UmVmZXJlbmNlSW1wbCgpOwotICAgICAgICAgIGFydGlmYWN0UmVmZXJlbmNlLnNldFRpbWVzdGFtcCh0aGlzLmxvZ1RpbWVzdGFtcCk7Ci0gICAgICAgICAgQ29tbWVudCBjb21tZW50ID0gbmV3IENvbW1lbnRJbXBsKCk7Ci0gICAgICAgICAgY29tbWVudC5zZXRUZXh0KG1vbml0b3JDb21tZW50LnRvU3RyaW5nKCkpOwotICAgICAgICAgIGFydGlmYWN0UmVmZXJlbmNlLnNldERvY3VtZW50RWxlbWVudCgKLSAgICAgICAgICAgIGNvbW1lbnQsCi0gICAgICAgICAgICBXU0lDb25zdGFudHMuTlNfTkFNRV9XU0lfTU9OSVRPUl9DT05GSUcpOwotICAgICAgICAgIHByb2Nlc3NBcnRpZmFjdFJlZmVyZW5jZShhcnRpZmFjdFJlZmVyZW5jZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLy8gPGJvdW5kYXJ5U3RyaW5nPgotICAgICAgZWxzZSBpZiAobG9jYWxOYW1lID09IFdTSUNvbnN0YW50cy5FTEVNX0JPVU5EQVJZX1NUUklORykKLSAgICAgIHsKLSAgICAgICAgLy8gQWRkaW5nIGJvdW5kYXJ5IHN0cmluZyB0byBhIGxpc3QKLSAgICAgICAgYm91bmRhcmllcy5hZGQoYm91bmRhcnkudG9TdHJpbmcoKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxtaW1lUGFydD4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9NSU1FX1BBUlQpCi0gICAgICB7Ci0gICAgICAgIC8vIENyZWF0aW5nIGEgTWVzc2FnZU1JTUVQYXJ0IGluc3RhbmNlCi0gICAgICAgIE1pbWVQYXJ0IHBhcnQgPSBuZXcgTWltZVBhcnRJbXBsKCk7Ci0gICAgICAgIHBhcnQuc2V0SGVhZGVycyhtaW1lSGVhZGVycy50b1N0cmluZygpKTsKLSAgICAgICAgcGFydC5zZXRDb250ZW50KG1pbWVDb250ZW50LnRvU3RyaW5nKCkpOwotICAgICAgICBwYXJ0LnNldEJvdW5kYXJ5U3RyaW5ncygoU3RyaW5nW10pYm91bmRhcmllcy50b0FycmF5KG5ldyBTdHJpbmdbMF0pKTsKLQotICAgICAgICBtaW1lUGFydHMuYWRkUGFydChwYXJ0KTsKLSAgICAgIH0KLQotICAgICAgLy8gPG1lc3NhZ2VFbnRyeT4KLSAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZSA9PSBXU0lDb25zdGFudHMuRUxFTV9NRVNTQUdFX0VOVFJZKQotICAgICAgewotICAgICAgICAvLyBBc3N1bXB0aW9uOiBSZWxhdGVkIG1lc3NhZ2VzIGFyZSBzZXF1ZW50aWFsbHkgYXZhaWxhYmxlIGluIHRoZSBtZXNzYWdlIGxvZy4KLSAgICAgICAgaWYgKE1lc3NhZ2VFbnRyeS5UWVBFX1JFUVVFU1QuZXF1YWxzSWdub3JlQ2FzZSh0eXBlKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIENyZWF0ZSBsb2cgZW50cnkKLSAgICAgICAgICBNZXNzYWdlRW50cnkgbWVzc2FnZUVudHJ5UmVxdWVzdCA9Ci0gICAgICAgICAgICBjcmVhdGVNZXNzYWdlRW50cnkoCi0gICAgICAgICAgICAgICAgaWQsCi0gICAgICAgICAgICAgICAgY29udmVyc2F0aW9uSUQsCi0gICAgICAgICAgICAgICAgdHlwZSwKLSAgICAgICAgICAgICAgICB0aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgc2VuZGVySG9zdEFuZFBvcnQudG9TdHJpbmcoKSwKLSAgICAgICAgICAgICAgICByZWNlaXZlckhvc3RBbmRQb3J0LnRvU3RyaW5nKCksCi0gICAgICAgICAgICAgICAgbWVzc2FnZUNvbnRlbnQgPT0gbnVsbCA/ICIiIDogbWVzc2FnZUNvbnRlbnQudG9TdHJpbmcoKSwKLSAgICAgICAgICAgICAgICBodHRwSGVhZGVycy50b1N0cmluZygpLAotICAgICAgICAgICAgICAgIG1pbWVQYXJ0cywKLSAgICAgICAgICAgICAgICBlbnRyeUVsZW1lbnRMb2NhdGlvbik7Ci0KLSAgICAgICAgICAvLyBBZGQgbG9nIGVudHJ5IHRvIHRoZSBsaXN0Ci0gICAgICAgICAgbWVzc2FnZUVudHJ5TGlzdC5hZGQobWVzc2FnZUVudHJ5UmVxdWVzdCk7Ci0gICAgICAgICAgLy8gUmVxdWVzdCBpcyBub3cgcHJvY2Vzc2VkIG9ubHkgd2hlbiB0aGUgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuCi0gICAgICAgIH0KLQotICAgICAgICBlbHNlIGlmIChNZXNzYWdlRW50cnkuVFlQRV9SRVNQT05TRS5lcXVhbHNJZ25vcmVDYXNlKHR5cGUpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gQ3JlYXRlIGxvZyBlbnRyeQotICAgICAgICAgIE1lc3NhZ2VFbnRyeSBtZXNzYWdlRW50cnlSZXNwb25zZSA9Ci0gICAgICAgICAgICBjcmVhdGVNZXNzYWdlRW50cnkoCi0gICAgICAgICAgICAgICAgaWQsCi0gICAgICAgICAgICAgICAgY29udmVyc2F0aW9uSUQsCi0gICAgICAgICAgICAgICAgdHlwZSwKLSAgICAgICAgICAgICAgICB0aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgc2VuZGVySG9zdEFuZFBvcnQudG9TdHJpbmcoKSwKLSAgICAgICAgICAgICAgICByZWNlaXZlckhvc3RBbmRQb3J0LnRvU3RyaW5nKCksCi0gICAgICAgICAgICAgICAgbWVzc2FnZUNvbnRlbnQgPT0gbnVsbCA/ICIiIDogbWVzc2FnZUNvbnRlbnQudG9TdHJpbmcoKSwKLSAgICAgICAgICAgICAgICBodHRwSGVhZGVycy50b1N0cmluZygpLAotICAgICAgICAgICAgICAgIG1pbWVQYXJ0cywKLSAgICAgICAgICAgICAgICBlbnRyeUVsZW1lbnRMb2NhdGlvbik7Ci0KLSAgICAgICAgICBpZiAobG9nRW50cnlIYW5kbGVyICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gbG9vayB1cCB0aGUgcmVxdWVzdCBtZXNzYWdlCi0gICAgICAgICAgICAvLyBJU1NVRSA6IG5lZWQgdG8gdGhyb3cgJiBjYXRjaCBhIG51bGxwb2ludGVyZXhjZXB0aW9uIGluIGhlcmUuLi4KLSAgICAgICAgICAgIE1lc3NhZ2VFbnRyeSBtZXNzYWdlRW50cnlSZXF1ZXN0ID0gZmluZFJlbGF0ZWRSZXF1ZXN0KG1lc3NhZ2VFbnRyeVJlc3BvbnNlKTsKLQotICAgICAgICAgICAgaWYgKG1lc3NhZ2VFbnRyeVJlcXVlc3QgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKCFpc01lc3NhZ2VFbmNyeXB0ZWQobWVzc2FnZUVudHJ5UmVxdWVzdC5nZXRNZXNzYWdlKCkpICYmCi0gICAgICAgICAgICAgICAgICAhaXNNZXNzYWdlRW5jcnlwdGVkKG1lc3NhZ2VFbnRyeVJlc3BvbnNlLmdldE1lc3NhZ2UoKSkpCi0gICAgICAgICAgICAgIHsKLQkgICAgICAgIGlmICghb21pdFJlcXVlc3QobWVzc2FnZUVudHJ5UmVxdWVzdCkpCi0JICAgICAgICB7Ci0JICAgICAgICAgIC8vIENyZWF0ZSBlbnRyeSAKLQkgICAgICAgICAgLy8gQUREOiBOZWVkIHRvIGNyZWF0ZSBlbnRyeSBmcm9tIHJlcG9ydAotCSAgICAgICAgICAvL0VudHJ5IGVudHJ5ID0gdGhpcy5yZXBvcnRlci5nZXRSZXBvcnQoKS5jcmVhdGVFbnRyeSgpOwotCSAgICAgICAgICBFbnRyeSBlbnRyeSA9IG5ldyBFbnRyeUltcGwoKTsKLQkgICAgICAgICAgZW50cnkuc2V0RW50cnlUeXBlKAotCSAgICAgICAgICAgICAgICBFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKE1lc3NhZ2VWYWxpZGF0b3IuVFlQRV9NRVNTQUdFX1JFUVVFU1QpKTsKLQkgICAgICAgICAgZW50cnkuc2V0UmVmZXJlbmNlSUQobWVzc2FnZUVudHJ5UmVxdWVzdC5nZXRJZCgpKTsKLQkgICAgICAgICAgZW50cnkuc2V0RW50cnlEZXRhaWwobWVzc2FnZUVudHJ5UmVxdWVzdCk7Ci0JCi0JICAgICAgICAgIC8vIENyZWF0ZSB0aGUgY29udGV4dCBmb3IgdGhlIHJlcXVlc3QtcmVzcG9uc2UgcGFpcgotCSAgICAgICAgICBFbnRyeUNvbnRleHQgcmVxdWVzdFRhcmdldENvbnRleHQgPQotCSAgICAgICAgICAgICAgIG5ldyBFbnRyeUNvbnRleHQoCi0JICAgICAgICAgICAgICAgICAgICBlbnRyeSwKLQkgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VFbnRyeVJlcXVlc3QsCi0JICAgICAgICAgICAgICAgICAgICBtZXNzYWdlRW50cnlSZXNwb25zZSk7Ci0JICAgICAgICAgIGlmIChyZXF1ZXN0VGFyZ2V0Q29udGV4dCAhPSBudWxsKQotCSAgICAgICAgICAgIHByb2Nlc3NMb2dFbnRyeShyZXF1ZXN0VGFyZ2V0Q29udGV4dCk7Ci0JCi0JICAgICAgICAgIC8vIENyZWF0ZSBlbnRyeSAKLQkgICAgICAgICAgLy8gQUREOiBOZWVkIHRvIGNyZWF0ZSBlbnRyeSBmcm9tIHJlcG9ydAotCSAgICAgICAgICAvL0VudHJ5IGVudHJ5ID0gdGhpcy5yZXBvcnRlci5nZXRSZXBvcnQoKS5jcmVhdGVFbnRyeSgpOwotCSAgICAgICAgICBlbnRyeSA9IG5ldyBFbnRyeUltcGwoKTsKLQkgICAgICAgICAgZW50cnkuc2V0RW50cnlUeXBlKAotCSAgICAgICAgICAgIEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoTWVzc2FnZVZhbGlkYXRvci5UWVBFX01FU1NBR0VfUkVTUE9OU0UpKTsKLQkgICAgICAgICAgZW50cnkuc2V0UmVmZXJlbmNlSUQobWVzc2FnZUVudHJ5UmVzcG9uc2UuZ2V0SWQoKSk7Ci0JICAgICAgICAgIGVudHJ5LnNldEVudHJ5RGV0YWlsKG1lc3NhZ2VFbnRyeVJlc3BvbnNlKTsKLQkKLQkgICAgICAgICAgRW50cnlDb250ZXh0IHJlc3BvbnNlVGFyZ2V0Q29udGV4dCA9Ci0JICAgICAgICAgICAgICAgIG5ldyBFbnRyeUNvbnRleHQoCi0JICAgICAgICAgICAgICAgICAgZW50cnksCi0JICAgICAgICAgICAgICAgICAgbWVzc2FnZUVudHJ5UmVxdWVzdCwKLQkgICAgICAgICAgICAgICAgICBtZXNzYWdlRW50cnlSZXNwb25zZSk7Ci0JICAgICAgICAgIGlmIChyZXNwb25zZVRhcmdldENvbnRleHQgIT0gbnVsbCkKLQkgICAgICAgICAgICBwcm9jZXNzTG9nRW50cnkocmVzcG9uc2VUYXJnZXRDb250ZXh0KTsKLQkgICAgICAgIH0KLQkgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGN1cnJlbnRFbGVtZW50ID0gbnVsbDsKLSAgICB9Ci0KLSAgICAvKiogCi0gICAgKiBFbmQgRG9jdW1lbnQuIAotICAgICovCi0gICAgcHVibGljIHZvaWQgZW5kRG9jdW1lbnQoKQotICAgIHsKLSAgICAgIC8vSWYgd2Ugd2FudCB0byBzZXJpYWxseSBwcm9jZXNzIHRoZSBsb2cgZmlsZS4gIEludm9rZSB2YWxpZGF0ZU1lc3NhZ2VzIHdpdGgKLSAgICAgIC8vbXNnVmFsaWRhdG9yIT1udWxsLiAgSGVyZSB3ZSBoYXZlIHRoZSBvcHRpb24gb2YgY2xlYXJpbmcgdGhlIGxvZ0VudHJ5IHZlY3RvcgotICAgICAgLy9vbmNlIG1lc3NhZ2UgdmFsaWRhdGlvbiBpcyBkb25lLgotICAgICAgLy9pZiAobXNnVmFsaWRhdG9yIT1udWxsKQotICAgICAgLy9sb2dFbnRyeUxpc3QuY2xlYXIoKTsKLSAgICAgICAgCi0gICAgICAgIC8qIFByb2Nlc3MgYWxsIHJlbWFpbmluZyByZXF1ZXN0cyBpbiB0aGUgbWVzc2FnZUVudHJ5TGlzdCAqLwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1lc3NhZ2VFbnRyeUxpc3Quc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIE1lc3NhZ2VFbnRyeSBsb2dFbnRyeSA9IChNZXNzYWdlRW50cnkpIG1lc3NhZ2VFbnRyeUxpc3QuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKCFvbWl0UmVxdWVzdChsb2dFbnRyeSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIEVudHJ5IGVudHJ5ID0gbmV3IEVudHJ5SW1wbCgpOwotICAgICAgICAgICAgICBlbnRyeS5zZXRFbnRyeVR5cGUoRW50cnlUeXBlLmdldEVudHJ5VHlwZSgKLSAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVZhbGlkYXRvci5UWVBFX01FU1NBR0VfUkVRVUVTVCkpOwotICAgICAgICAgICAgICBlbnRyeS5zZXRSZWZlcmVuY2VJRChsb2dFbnRyeS5nZXRJZCgpKTsKLSAgICAgICAgICAgICAgZW50cnkuc2V0RW50cnlEZXRhaWwobG9nRW50cnkpOwotICAgICAgICAgICAgICBFbnRyeUNvbnRleHQgcmVxdWVzdFRhcmdldENvbnRleHQgPQotICAgICAgICAgICAgICAgIG5ldyBFbnRyeUNvbnRleHQoZW50cnksIGxvZ0VudHJ5LCBudWxsKTsKLSAgICAgICAgICAgICAgaWYgKHJlcXVlc3RUYXJnZXRDb250ZXh0ICE9IG51bGwpCi0gICAgICAgICAgICAgICAgcHJvY2Vzc0xvZ0VudHJ5KHJlcXVlc3RUYXJnZXRDb250ZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFByb2Nlc3MgdGhlIG1lc3NhZ2UgaW4gdGhlIGxvZyBlbnRyeS4KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBwcm9jZXNzTG9nRW50cnkoRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgLy9CZWZvcmUgdmFsaWRhdGluZyBhbnkgbWVzc2FnZXMgY2hlY2sgaWYgaW1wbGVtZW50ZXIgaXMgdGhlIGZpcnN0IGVsZW1lbnQuCi0gICAgICAgIGxvZ0VudHJ5SGFuZGxlci5wcm9jZXNzTG9nRW50cnkoZW50cnlDb250ZXh0KTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgd3NpRXhjZXB0aW9uID0KLSAgICAgICAgICBuZXcgV1NJRXhjZXB0aW9uKAotICAgICAgICAgICAgIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHZhbGlkYXRpbmciCi0gICAgICAgICAgICAgICsgIiB0aGUgbWVzc2FnZSBsb2dFbnRyeTogIgotICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRJZCgpLAotICAgICAgICAgICAgZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUHJvY2VzcyB0aGUgYXJ0aWZhY3QgcmVmZXJlbmNlLgotICAgICAqLwotICAgIHByaXZhdGUgdm9pZCBwcm9jZXNzQXJ0aWZhY3RSZWZlcmVuY2UoQXJ0aWZhY3RSZWZlcmVuY2UgYXJ0aWZhY3RSZWZlcmVuY2UpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIC8vQmVmb3JlIHZhbGlkYXRpbmcgYW55IG1lc3NhZ2VzIGNoZWNrIGlmIGltcGxlbWVudGVyIGlzIHRoZSBmaXJzdCBlbGVtZW50LgotICAgICAgICBsb2dFbnRyeUhhbmRsZXIucHJvY2Vzc0FydGlmYWN0UmVmZXJlbmNlKGFydGlmYWN0UmVmZXJlbmNlKTsKLSAgICAgIH0KLQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICB3c2lFeGNlcHRpb24gPQotICAgICAgICAgIG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICAgICAiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyIKLSAgICAgICAgICAgICAgKyAiIHRoZSBhcnRpZmFjdCByZWZlcmVuY2U6ICIKLSAgICAgICAgICAgICAgKyBhcnRpZmFjdFJlZmVyZW5jZS50b1N0cmluZygpLAotICAgICAgICAgICAgZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICAgKiBGaW5kIHRoZSByZWxhdGVkIFJlcXVlc3QgTG9nRW50cnkuICBUaGUgY3VycmVudCBydWxlIGZvciByZWxhdGVkIGxvZyBlbnRpcmVzIGlzCi0gICAgICAgKiB0aGF0IGEgcmVxdWVzdCB3aWxsIGFsd2F5cyBwcmVjZWRlIGl0cyByZXNwb25zZS4KLSAgICAgICAqIElTU1VFOiBTZXF1ZW5jZSBpbiBsb2cgZmlsZSBpcyB0aW1lc3RhbXAgZHJpdmVuIChtb25pdG9yIHNwZWMpLiAKLSAgICAgICAqIEFzc2VydGlvbiBpcyB0aGF0IGZvciBhIGdpdmVuIGNvbnZlcnNhdGlvbklELCBhIHNlY29uZCByZXF1ZXN0IGlzIG5vdCBzZW50IAotICAgICAgICogdW50aWwgaXRzIHJlc3BvbnNlIGlzIHJlY2VpdmVkIChjaHJvbm9sb2dpY2FsbHkpLiAKLSAgICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgaGF2ZSB0byBiZSBtb2RpZmllZCBpZiB0aGUgcnVsZSBjaGFuZ2VzLgotICAgICAgICovCi0gICAgLy8gY291bGQgYmUgbWFkZSBtb3JlIGVmZmljaWVudCBieSBrZWVwaW5nIGEgbXVjaCBzbWFsbGVyIGxpc3Qgb2YgdW5yZXNwb25kZWQgcmVxdWVzdHMuLi4KLSAgICBwdWJsaWMgTWVzc2FnZUVudHJ5IGZpbmRSZWxhdGVkUmVxdWVzdChNZXNzYWdlRW50cnkgbG9nRW50cnlSZXNwb25zZSkKLSAgICB7Ci0gICAgICBpZiAobG9nRW50cnlSZXNwb25zZSAhPSBudWxsKQotICAgICAgewotICAgICAgICBmb3IgKGludCBlbnRyeSA9IG1lc3NhZ2VFbnRyeUxpc3Quc2l6ZSgpIC0gMTsgZW50cnkgPj0gMDsgZW50cnktLSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldCB0aGUgbG9nIGVudHJ5IG9mIHRoZSBtYXRjaGluZyByZXF1ZXN0Ci0gICAgICAgICAgTWVzc2FnZUVudHJ5IGxvZ0VudHJ5ID0gKE1lc3NhZ2VFbnRyeSkgbWVzc2FnZUVudHJ5TGlzdC5nZXQoZW50cnkpOwotICAgICAgICAgIC8vIElnbm9yZSBvd24gZW50cnkKLSAgICAgICAgICBpZiAoIWxvZ0VudHJ5UmVzcG9uc2UuZXF1YWxzKGxvZ0VudHJ5KSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobG9nRW50cnlSZXNwb25zZQotICAgICAgICAgICAgICAuZ2V0Q29udmVyc2F0aW9uSWQoKQotICAgICAgICAgICAgICAuZXF1YWxzKGxvZ0VudHJ5LmdldENvbnZlcnNhdGlvbklkKCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBmb3VuZCB0aGUgbW9zdCByZWNlbnRseSByZWFkIG1lc3NhZ2Ugd2l0aCB0aGUgc2FtZSBjb252ZXJzYXRpb25JRC4KLSAgICAgICAgICAgICAgLy8gRnJvbSBhYm92ZSwgdGhpcyBzaG91bGQgYmUgdGhlIGNvcnJlc3BvbmRpbmcgcmVxdWVzdC4gQ2hlY2sgYXMgZmFyIGFzIHBvc3NpYmxlLgotICAgICAgICAgICAgICBpZiAobG9nRW50cnkuZ2V0VHlwZSgpLmVxdWFscyhNZXNzYWdlRW50cnkuVFlQRV9SRVFVRVNUKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1lc3NhZ2VFbnRyeUxpc3QucmVtb3ZlKGVudHJ5KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9nRW50cnk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIGV4cGVjdGVkIGEgcmVxdWVzdC4gbmVlZCB0byB0aHJvdyBhbiBleGNlcHRpb24hCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiBudWxsOwotICAgICAgLy8gY29udmVyc2F0aW9uSUQgbWF0Y2ggbm90IGZvdW5kIGFueXdoZXJlLiBuZWVkIHRvIHRocm93IGFuIGV4Y2VwdGlvbiEKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDcmVhdGUgbG9nIGVudHJ5LgotICAgICAqLwotICAgIHByaXZhdGUgTWVzc2FnZUVudHJ5IGNyZWF0ZU1lc3NhZ2VFbnRyeSgKLSAgICAgIFN0cmluZyBpZCwKLSAgICAgIFN0cmluZyBjb252ZXJzYXRpb25JZCwKLSAgICAgIFN0cmluZyB0eXBlLAotICAgICAgU3RyaW5nIHRpbWVzdGFtcCwKLSAgICAgIFN0cmluZyBzZW5kZXJJUFBvcnQsCi0gICAgICBTdHJpbmcgcmVjZWl2ZXJJUFBvcnQsCi0gICAgICBTdHJpbmcgbWVzc2FnZUNvbnRlbnQsCi0gICAgICBTdHJpbmcgaHR0cEhlYWRlcnMsCi0gICAgICBNaW1lUGFydHMgbWltZVBhcnRzLAotICAgICAgRWxlbWVudExvY2F0aW9uIGVsZW1lbnRMb2NhdGlvbikKLSAgICB7Ci0gICAgICAvLyBDcmVhdGUgbG9nIGVudHJ5Ci0gICAgICBNZXNzYWdlRW50cnkgbWVzc2FnZUVudHJ5ID0gbmV3IE1lc3NhZ2VFbnRyeUltcGwoKTsKLSAgICAgIG1lc3NhZ2VFbnRyeS5zZXRJZChpZCk7Ci0gICAgICBtZXNzYWdlRW50cnkuc2V0Q29udmVyc2F0aW9uSWQoY29udmVyc2F0aW9uSUQpOwotICAgICAgbWVzc2FnZUVudHJ5LnNldFR5cGUodHlwZSk7Ci0gICAgICBtZXNzYWdlRW50cnkuc2V0VGltZXN0YW1wKHRpbWVzdGFtcCk7Ci0gICAgICBtZXNzYWdlRW50cnkuc2V0U2VuZGVySG9zdEFuZFBvcnQoc2VuZGVySVBQb3J0KTsKLSAgICAgIG1lc3NhZ2VFbnRyeS5zZXRSZWNlaXZlckhvc3RBbmRQb3J0KHJlY2VpdmVySVBQb3J0KTsKLSAgICAgIG1lc3NhZ2VFbnRyeS5zZXRIVFRQSGVhZGVycyhodHRwSGVhZGVycyk7Ci0gICAgICBtZXNzYWdlRW50cnkuc2V0Qk9NKGJvbSk7Ci0gICAgICBtZXNzYWdlRW50cnkuc2V0RWxlbWVudExvY2F0aW9uKGVsZW1lbnRMb2NhdGlvbik7Ci0KLSAgICAgIFN0cmluZyBlbmNvZGluZyA9IG51bGw7Ci0gICAgICBpZiAobWltZVBhcnRzID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIEdldCB0aGUgZW5jb2RpbmcgZm9yIHRoaXMgbWVzc2FnZSBjb250ZW50Ci0gICAgICAgIGVuY29kaW5nID0gVXRpbHMuZ2V0WE1MRW5jb2RpbmcobWVzc2FnZUNvbnRlbnQpOwotICAgICAgICBtZXNzYWdlRW50cnkuc2V0TWVzc2FnZShtZXNzYWdlQ29udGVudCk7Ci0gICAgICAgCW1lc3NhZ2VFbnRyeS5zZXRNaW1lQ29udGVudChmYWxzZSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgCW1lc3NhZ2VFbnRyeS5zZXRNaW1lUGFydHMobWltZVBhcnRzKTsKLSAgICAgICAJTWltZVBhcnQgcm9vdCA9IFV0aWxzLmZpbmRSb290UGFydChodHRwSGVhZGVycywgbWltZVBhcnRzLmdldFBhcnRzKCkpOwotICAgICAgIAlpZiAocm9vdCAhPSBudWxsKQotICAgICAgIAl7Ci0gICAgICAgICAgLy8gR2V0IHRoZSBlbmNvZGluZyBmb3IgdGhpcyBtZXNzYWdlIGNvbnRlbnQKLSAgICAgICAgICBlbmNvZGluZyA9IFV0aWxzLmdldFhNTEVuY29kaW5nKHJvb3QuZ2V0Q29udGVudCgpKTsKLSAgICAgICAgICBtaW1lUGFydHMuc2V0Um9vdFBhcnQocm9vdCk7Ci0gICAgICAgCX0KLSAgIAkJLy8gZWxzZSBlbXB0eSBib2R5Ci0gICAgICAgCW1lc3NhZ2VFbnRyeS5zZXRNaW1lQ29udGVudCh0cnVlKTsKLSAgICAgIH0KLSAgICAgIGlmICgoZW5jb2RpbmcgPT0gbnVsbCkgfHwgKGVuY29kaW5nLmVxdWFscygiIikpKQotICAgICAgICAgZW5jb2RpbmcgPSBXU0lDb25zdGFudHMuREVGQVVMVF9YTUxfRU5DT0RJTkc7Ci0gICAgICBtZXNzYWdlRW50cnkuc2V0RW5jb2RpbmcoZW5jb2RpbmcpOwotCi0gICAgICByZXR1cm4gbWVzc2FnZUVudHJ5OwotICAgIH0KLQotICB9IC8vRW5kIENvbnRlbnRIYW5kbGVyCi0gIAotICAvKioKLSAgICogQ2hlY2sgZm9yIEhUVFAgbWVzc2FnZXMgdGhhdCBzaG91bGQgbm90IGJlIGxvZ2dlZC4KLSAgICogQHBhcmFtIHJyOiBhIHJlcXVlc3QtcmVzcG9uc2UgcGFpci4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZSByZXF1ZXN0LXJlc3BvbnNlIHBhaXIgc2hvdWxkIGJlIG9taXR0ZWQgZnJvbSB0aGUgbG9nLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIG9taXRSZXF1ZXN0KE1lc3NhZ2VFbnRyeSBtZXNzYWdlRW50cnlSZXF1ZXN0KQotICB7Ci0gICAgYm9vbGVhbiBvbWl0ID0gZmFsc2U7Ci0gICAgaWYgKG1lc3NhZ2VFbnRyeVJlcXVlc3QgPT0gbnVsbCkKLSAgICAgICBvbWl0ID0gdHJ1ZTsKLSAgICBlbHNlCi0gICAgewotICAgICAgU3RyaW5nIHJlcXVlc3RIZWFkZXJzID0gbWVzc2FnZUVudHJ5UmVxdWVzdC5nZXRIVFRQSGVhZGVycygpOwotICAgICAgaWYgKChyZXF1ZXN0SGVhZGVycyAhPSBudWxsKSAmJgotICAgICAgICAgICgocmVxdWVzdEhlYWRlcnMuc3RhcnRzV2l0aCgiQ09OTkVDVCIpKSB8fAotICAgICAgICAgICAocmVxdWVzdEhlYWRlcnMuc3RhcnRzV2l0aCgiVFJBQ0UiKSkgfHwgCi0gICAgICAgICAgIChyZXF1ZXN0SGVhZGVycy5zdGFydHNXaXRoKCJERUxFVEUiKSkgfHwgCi0gICAgICAgICAgIChyZXF1ZXN0SGVhZGVycy5zdGFydHNXaXRoKCJPUFRJT05TIikpIHx8IAotICAgICAgICAgICAocmVxdWVzdEhlYWRlcnMuc3RhcnRzV2l0aCgiSEVBRCIpKSB8fAotICAgICAgICAgICAoKHJlcXVlc3RIZWFkZXJzLnN0YXJ0c1dpdGgoIkdFVCIpKSAmJgotICAgICAgICAJKCFpc01lc3NhZ2VXaXRoQnJhY2tldHMobWVzc2FnZUVudHJ5UmVxdWVzdC5nZXRNZXNzYWdlKCkpKSkpKQotICAgICAgeyAKLSAgICAgICAgb21pdCA9IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBvbWl0OwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29udGVudCBvZiB0aGUgbWVzc2FnZSBoYXMgYXQgbGVhc3QKLSAgICogb25lIGxlZnQgYW5kIG9uZSByaWdodCBicmFja2V0LgotICAgKiBAcGFyYW0gbWVzc2FnZTogYSBtZXNzYWdlIGNvbnRlbnQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGVudCBvZiB0aGUgbWVzc2FnZSBoYXMgYXQgbGVhc3QKLSAgICogICAgICAgICBvbmUgbGVmdCBhbmQgb25lIHJpZ2h0IGJyYWNrZXQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc01lc3NhZ2VXaXRoQnJhY2tldHMoU3RyaW5nIG1lc3NhZ2UpCi0gIHsKLSAgICByZXR1cm4gKChtZXNzYWdlICE9IG51bGwpICYmIAotICAgICAgICAgICAgKG1lc3NhZ2UuaW5kZXhPZigiPCIpIT0gLTEpICYmIAotICAgICAgICAgICAgKG1lc3NhZ2UuaW5kZXhPZigiPiIpICE9IC0xKSk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBpc01lc3NhZ2VFbmNyeXB0ZWQoU3RyaW5nIG1lc3NhZ2UpCi0gIHsKLSAgICByZXR1cm4gKChtZXNzYWdlICE9IG51bGwpICYmIAotCSAgICAobWVzc2FnZS5pbmRleE9mKCI8RW5jcnlwdGVkS2V5ICIpICE9IC0xKSk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvaW1wbC9Mb2dXcml0ZXJJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvaW1wbC9Mb2dXcml0ZXJJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZWU5ODIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL2ltcGwvTG9nV3JpdGVySW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5Xcml0ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5pbXBsLkRvY3VtZW50V3JpdGVySW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLkxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLkxvZ1dyaXRlcjsKLQotLyoqCi0gKiBEZWZpbmVzIHRoZSBpbXBsZW1lbnRhdGlvbiB1c2VkIHRvIHdyaXRlIHRoZSBMb2cgZmlsZS4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgTmVpbCBEZWxpbWEgKG5kZGVsaW1hQGNhLmlibS5jb20pCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIExvZ1dyaXRlckltcGwgZXh0ZW5kcyBEb2N1bWVudFdyaXRlckltcGwgaW1wbGVtZW50cyBMb2dXcml0ZXIKLXsKLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5Mb2dXcml0ZXIjd3JpdGUoTG9nKQotICAgKi8KLSAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHdyaXRlKExvZyBsb2cpCi0gICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBJZiB0aGUgd3JpdGVyIHdhcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbgotICAgIGlmICh3cml0ZXIgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkNvdWxkIG5vdCB3cml0ZSBsb2cgZmlsZSBzaW5jZSB3cml0ZXIgd2FzIG5vdCBzZXQuIik7Ci0KLSAgICAvLyBXcml0ZSBsb2cgZmlsZQotICAgIHdyaXRlKGxvZywgd3JpdGVyKTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nV3JpdGVyI3dyaXRlKExvZywgV3JpdGVyKQotICAgKi8KLSAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHdyaXRlKExvZyBsb2csIFdyaXRlciB3cml0ZXIpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIEFERDoKLSAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJXcml0ZSBlbnRpcmUgbG9nIGZpbGUgZnVuY3Rpb24gbm90IHN1cHBvcnRlZCB5ZXQuIik7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9pbXBsL01lc3NhZ2VFbnRyeUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9pbXBsL01lc3NhZ2VFbnRyeUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZjN2EzZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9sb2cvaW1wbC9NZXNzYWdlRW50cnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NaW1lUGFydHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmRvbS5FbGVtZW50TG9jYXRpb247Ci0KLS8qKgotICogTWVzc2FnZSBlbnRyeSBpbXBsZW1lbnRhdGlvbi4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgTWVzc2FnZUVudHJ5SW1wbCBpbXBsZW1lbnRzIE1lc3NhZ2VFbnRyeQotewotICAvKioKLSAgICogTG9nIGVudHJ5IGlkLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBpZDsKLQotICBwcm90ZWN0ZWQgU3RyaW5nIGNvbnZlcnNhdGlvbklkOwotICBwcm90ZWN0ZWQgU3RyaW5nIHR5cGU7Ci0gIHByb3RlY3RlZCBTdHJpbmcgdGltZXN0YW1wOwotICBwcm90ZWN0ZWQgU3RyaW5nIHNlbmRlckhvc3RBbmRQb3J0OwotICBwcm90ZWN0ZWQgU3RyaW5nIHJlY2VpdmVySG9zdEFuZFBvcnQ7Ci0gIHByb3RlY3RlZCBTdHJpbmcgbWVzc2FnZSA9ICIiOwotICBwcm90ZWN0ZWQgU3RyaW5nIGh0dHBIZWFkZXJzID0gIiI7Ci0gIHByb3RlY3RlZCBpbnQgYm9tOwotICBwcm90ZWN0ZWQgU3RyaW5nIGVuY29kaW5nID0gIiI7Ci0gIHByb3RlY3RlZCBib29sZWFuIGlzTWltZUNvbnRlbnQgPSBmYWxzZTsKLSAgcHJvdGVjdGVkIE1pbWVQYXJ0cyBtaW1lUGFydHMgPSBuZXcgTWltZVBhcnRzSW1wbCgpOwotCi0gIHByb3RlY3RlZCBFbGVtZW50TG9jYXRpb24gZWxlbWVudExvY2F0aW9uID0gbnVsbDsKLQotICAvKioKLSAgICogRW1wdHkgY29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgTWVzc2FnZUVudHJ5SW1wbCgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTG9nRW50cnkjZ2V0SWQoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5pZDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLkxvZ0VudHJ5I3NldElkKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldElkKFN0cmluZyBpZCkKLSAgewotICAgIHRoaXMuaWQgPSBpZDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLkxvZ0VudHJ5I2dldENvbnZlcnNhdGlvbklkKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29udmVyc2F0aW9uSWQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuY29udmVyc2F0aW9uSWQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5Mb2dFbnRyeSNzZXRDb252ZXJzYXRpb25JZChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb252ZXJzYXRpb25JZChTdHJpbmcgY29udmVyc2F0aW9uSWQpCi0gIHsKLSAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gY29udmVyc2F0aW9uSWQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5Mb2dFbnRyeSNnZXRUaW1lc3RhbXAoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUaW1lc3RhbXAoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMudGltZXN0YW1wOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTG9nRW50cnkjc2V0VGltZXN0YW1wKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRpbWVzdGFtcChTdHJpbmcgdGltZXN0YW1wKQotICB7Ci0gICAgdGhpcy50aW1lc3RhbXAgPSB0aW1lc3RhbXA7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5Mb2dFbnRyeSNnZXRUeXBlKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy50eXBlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTG9nRW50cnkjc2V0VHlwZShTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUeXBlKFN0cmluZyB0eXBlKQotICB7Ci0gICAgdGhpcy50eXBlID0gdHlwZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLkxvZ0VudHJ5I2dldFNlbmRlckhvc3RBbmRQb3J0KCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U2VuZGVySG9zdEFuZFBvcnQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuc2VuZGVySG9zdEFuZFBvcnQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5Mb2dFbnRyeSNzZXRTZW5kZXJIb3N0QW5kUG9ydChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTZW5kZXJIb3N0QW5kUG9ydChTdHJpbmcgc2VuZGVySG9zdEFuZFBvcnQpCi0gIHsKLSAgICB0aGlzLnNlbmRlckhvc3RBbmRQb3J0ID0gc2VuZGVySG9zdEFuZFBvcnQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5Mb2dFbnRyeSNnZXRSZWNlaXZlckhvc3RBbmRQb3J0KCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVjZWl2ZXJIb3N0QW5kUG9ydCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5yZWNlaXZlckhvc3RBbmRQb3J0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTG9nRW50cnkjc2V0UmVjZWl2ZXJIb3N0QW5kUG9ydChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZWNlaXZlckhvc3RBbmRQb3J0KFN0cmluZyByZWNlaXZlckhvc3RBbmRQb3J0KQotICB7Ci0gICAgdGhpcy5yZWNlaXZlckhvc3RBbmRQb3J0ID0gcmVjZWl2ZXJIb3N0QW5kUG9ydDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLkxvZ0VudHJ5I2dldE1lc3NhZ2UoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCkKLSAgewotICAJaWYgKCF0aGlzLmlzTWltZUNvbnRlbnQpCi0gICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZTsKLSAgCWVsc2UKLSAgCXsKLSAgCSAgIGlmICh0aGlzLm1pbWVQYXJ0cy5nZXRSb290UGFydCgpID09IG51bGwpIHJldHVybiAiIjsKLSAgCSAgIGVsc2UgcmV0dXJuIHRoaXMubWltZVBhcnRzLmdldFJvb3RQYXJ0KCkuZ2V0Q29udGVudCgpOwotICAJfQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTG9nRW50cnkjc2V0TWVzc2FnZShTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNZXNzYWdlKFN0cmluZyBtZXNzYWdlKQotICB7Ci0gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLkxvZ0VudHJ5I3NldEVuY29kaW5nKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVuY29kaW5nKFN0cmluZyBlbmNvZGluZykKLSAgewotICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZzsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLk1lc3NhZ2VFbnRyeSNnZXRCT00oKQotICAgKi8KLSAgcHVibGljIGludCBnZXRCT00oKQotICB7Ci0gICAgcmV0dXJuIGJvbTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLk1lc3NhZ2VFbnRyeSNzZXRCT00oaW50KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Qk9NKGludCBib20pCi0gIHsKLSAgICB0aGlzLmJvbSA9IGJvbTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLkxvZ0VudHJ5I2dldEhUVFBIZWFkZXJzKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SFRUUEhlYWRlcnMoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuaHR0cEhlYWRlcnM7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5Mb2dFbnRyeSNzZXRIVFRQSGVhZGVycyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIVFRQSGVhZGVycyhTdHJpbmcgaHR0cEhlYWRlcnMpCi0gIHsKLSAgICB0aGlzLmh0dHBIZWFkZXJzID0gaHR0cEhlYWRlcnM7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5NZXNzYWdlRW50cnkjZ2V0RWxlbWVudExvY2F0aW9uKCkKLSAgICovCi0gIHB1YmxpYyBFbGVtZW50TG9jYXRpb24gZ2V0RWxlbWVudExvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiB0aGlzLmVsZW1lbnRMb2NhdGlvbjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLk1lc3NhZ2VFbnRyeSNzZXRFbGVtZW50TG9jYXRpb24ob3JnLndzaS54bWwuZG9tLkVsZW1lbnRMb2NhdGlvbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVsZW1lbnRMb2NhdGlvbihFbGVtZW50TG9jYXRpb24gZWxlbWVudExvY2F0aW9uKQotICB7Ci0gICAgdGhpcy5lbGVtZW50TG9jYXRpb24gPSBlbGVtZW50TG9jYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgcmV0dXJuIHRvWE1MU3RyaW5nKFdTSUNvbnN0YW50cy5OU19OQU1FX1dTSV9MT0cpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQjdG9YTUxTdHJpbmcoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gQUREOiBOZWVkIHRvIGFkZCB3YXkgdG8gaW5kaWNhdGUgWE1MIHNjaGVtYSB0eXBlIGZvciBsb2dFbnRyeQotICAgIC8vIEFkZCBsb2cgZW50cnkKLSAgICBwdy5wcmludCgiPCIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiICIpOwotICAgIHB3LnByaW50KAotICAgICAgInhzaTp0eXBlPVwiaHR0cE1lc3NhZ2VFbnRyeVwiICIpOwotICAgIHB3LnByaW50KFdTSUNvbnN0YW50cy5BVFRSX0lEX1VDICsgIj1cIiIgKyBpZCArICJcIiAiKTsKLSAgICBwdy5wcmludCgKLSAgICAgIFdTSUNvbnN0YW50cy5BVFRSX0NPTlZFUlNBVElPTl9JRCArICI9XCIiICsgY29udmVyc2F0aW9uSWQgKyAiXCIgIik7Ci0gICAgcHcucHJpbnQoV1NJQ29uc3RhbnRzLkFUVFJfVFlQRSArICI9XCIiICsgdHlwZSArICJcIiAiKTsKLSAgICBwdy5wcmludGxuKFdTSUNvbnN0YW50cy5BVFRSX1RJTUVTVEFNUCArICI9XCIiICsgdGltZXN0YW1wICsgIlwiPiIpOwotCi0gICAgaWYgKGlzTWltZUNvbnRlbnQoKSkKLSAgICB7Ci0gICAgICAgIC8vIEFkZCBtZXNzYWdlIGNvbnRlbnQgd2l0aCBhdHRhY2htZW50cyBlbGVtZW50Ci0gICAgICAgIHB3LnByaW50KCI8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX01FU1NBR0VfQ09OVEVOVF9XSVRIX0FUVEFDSE1FTlRTKTsKLSAgICAgICAgaWYgKGJvbSAhPSAwKQotICAgICAgICAgIHB3LnByaW50KCIgIiArIFdTSUNvbnN0YW50cy5BVFRSX0JPTSArICI9XCIiICsgYm9tICsgIlwiIik7Ci0gICAgICAgIHB3LnByaW50KCI+Iik7Ci0KLSAgICAgICAgQ29sbGVjdGlvbiBwYXJ0TGlzdCA9IG1pbWVQYXJ0cy5nZXRQYXJ0cygpOwotICAgICAgICBpZiAoIXBhcnRMaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgCUl0ZXJhdG9yIGlNaW1lUGFydHMgPSBwYXJ0TGlzdC5pdGVyYXRvcigpOwotICAgICAgICAJd2hpbGUgKGlNaW1lUGFydHMuaGFzTmV4dCgpKQotICAgICAgICAgICAgewotICAgICAgICAJICBNaW1lUGFydCBtaW1lUGFydCA9IChNaW1lUGFydClpTWltZVBhcnRzLm5leHQoKTsKLSAgICAgICAgIAkgIHB3LnByaW50KG1pbWVQYXJ0LnRvWE1MU3RyaW5nKG5hbWVzcGFjZU5hbWUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFkZCBlbmQgbWVzc2FnZSBlbGVtZW50Ci0gICAgICAgIHB3LnByaW50bG4oIjwvIiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX01FU1NBR0VfQ09OVEVOVF9XSVRIX0FUVEFDSE1FTlRTICsgIj4iKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIEFkZCBtZXNzYWdlIGNvbnRlbnQgZWxlbWVudAotICAgICAgcHcucHJpbnQoIjwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTUVTU0FHRV9DT05URU5UKTsKLSAgICAgIGlmIChib20gIT0gMCkKLSAgICAgICAgcHcucHJpbnQoIiAiICsgV1NJQ29uc3RhbnRzLkFUVFJfQk9NICsgIj1cIiIgKyBib20gKyAiXCIiKTsKLSAgICAgIHB3LnByaW50KCI+Iik7Ci0KLSAgICAgIC8vIEFkZCBlbmNvZGVkIG1lc3NhZ2UKLSAgICAgIHB3LnByaW50KFhNTFV0aWxzLnhtbEVzY2FwZWRTdHJpbmcobWVzc2FnZSkpOwotICAgICAgCi0gICAgICAvLyBBZGQgZW5kIG1lc3NhZ2UgZWxlbWVudAotICAgICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTUVTU0FHRV9DT05URU5UICsgIj4iKTsKLSAgICB9Ci0KLSAgICAvLyBBZGQgc2VuZGVySVBQb3J0IGVsZW1lbnQKLSAgICBwdy5wcmludGxuKAotICAgICAgIjwiCi0gICAgICAgICsgbnNOYW1lCi0gICAgICAgICsgV1NJQ29uc3RhbnRzLkVMRU1fU0VOREVSX0hPU1RfQU5EX1BPUlQKLSAgICAgICAgKyAiPiIKLSAgICAgICAgKyBzZW5kZXJIb3N0QW5kUG9ydAotICAgICAgICArICI8LyIKLSAgICAgICAgKyBuc05hbWUKLSAgICAgICAgKyBXU0lDb25zdGFudHMuRUxFTV9TRU5ERVJfSE9TVF9BTkRfUE9SVAotICAgICAgICArICI+Iik7Ci0KLSAgICAvLyBBZGQgcmVjZWl2ZXJJUCBlbGVtZW50Ci0gICAgcHcucHJpbnRsbigKLSAgICAgICI8IgotICAgICAgICArIG5zTmFtZQotICAgICAgICArIFdTSUNvbnN0YW50cy5FTEVNX1JFQ0VJVkVSX0hPU1RfQU5EX1BPUlQKLSAgICAgICAgKyAiPiIKLSAgICAgICAgKyByZWNlaXZlckhvc3RBbmRQb3J0Ci0gICAgICAgICsgIjwvIgotICAgICAgICArIG5zTmFtZQotICAgICAgICArIFdTSUNvbnN0YW50cy5FTEVNX1JFQ0VJVkVSX0hPU1RfQU5EX1BPUlQKLSAgICAgICAgKyAiPiIpOwotCi0gICAgLy8gQWRkIEhUVFBIZWFkZXJzIGVsZW1lbnQKLSAgICBwdy5wcmludCgiPCIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9IVFRQX0hFQURFUlMgKyAiPiIpOwotCi0gICAgLy8gQUREOiBEb2VzIHRoaXMgc3RyaW5nIG5lZWQgdG8gYmUgWE1MIGVuY29kZWQ/Ci0gICAgLy8gQWRkIEhUVFAgaGVhZGVycwotICAgIHB3LnByaW50KFhNTFV0aWxzLnhtbEVzY2FwZWRTdHJpbmcoaHR0cEhlYWRlcnMpKTsKLQotICAgIC8vIEVuZCBIVFRQSGVhZGVycyBlbGVtZW50Ci0gICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fSFRUUF9IRUFERVJTICsgIj4iKTsKLQotICAgIC8vIEVuZCBsb2cgZW50cnkKLSAgICBwdy5wcmludGxuKCI8LyIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiPiIpOwotCi0gICAgLy8gUmV0dXJuIHN0cmluZwotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTWVzc2FnZUVudHJ5I2lzTWltZUNvbnRlbnQoKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNNaW1lQ29udGVudCgpCi0gIHsKLSAgICByZXR1cm4gaXNNaW1lQ29udGVudDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLk1lc3NhZ2VFbnRyeSNzZXRNaW1lQ29udGVudCgpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNaW1lQ29udGVudChib29sZWFuIGlzTWltZUNvbnRlbnQpCi0gIHsKLSAgICB0aGlzLmlzTWltZUNvbnRlbnQgPSBpc01pbWVDb250ZW50OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTWVzc2FnZUVudHJ5I2dldE1JTUVQYXJ0cygpCi0gICAqLwotICBwdWJsaWMgTWltZVBhcnRzIGdldE1pbWVQYXJ0cygpCi0gIHsKLSAgICByZXR1cm4gbWltZVBhcnRzOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTWVzc2FnZUVudHJ5I3NldE1pbWVQYXJ0cygpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNaW1lUGFydHMoTWltZVBhcnRzIG1pbWVQYXJ0cykKLSAgewotICAgIHRoaXMubWltZVBhcnRzID0gbWltZVBhcnRzOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9pbXBsL01pbWVQYXJ0SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL2ltcGwvTWltZVBhcnRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZTdkZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL2ltcGwvTWltZVBhcnRJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NaW1lUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotCi0vKioKLSAqIEBhdXRob3IgbGF1em9uZAotICoKLSAqIFRPRE8gVG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgdHlwZSBjb21tZW50IGdvIHRvCi0gKiBXaW5kb3cgLSBQcmVmZXJlbmNlcyAtIEphdmEgLSBDb2RlIFN0eWxlIC0gQ29kZSBUZW1wbGF0ZXMKLSAqLwotcHVibGljIGNsYXNzIE1pbWVQYXJ0SW1wbCBpbXBsZW1lbnRzIE1pbWVQYXJ0IAotewotICBwcml2YXRlIFN0cmluZyBtaW1lQ29udGVudDsKLSAgcHJpdmF0ZSBTdHJpbmcgbWltZUhlYWRlcnM7Ci0gIHByaXZhdGUgU3RyaW5nW10gYm91bmRhcnlTdHJpbmdzID0gbmV3IFN0cmluZ1swXTsKLSAgCi0gIHB1YmxpYyBNaW1lUGFydEltcGwgKCkKLSAgewotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5NaW1lUGFydCNnZXRDb250ZW50KCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29udGVudCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5taW1lQ29udGVudDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLk1pbWVQYXJ0I3NldENvbnRlbnQoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q29udGVudChTdHJpbmcgbWltZUNvbnRlbnQpCi0gIHsKLSAgCXRoaXMubWltZUNvbnRlbnQgPSBtaW1lQ29udGVudDsKLSAgfQotCi0gIC8qKgotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NaW1lUGFydCNnZXRIZWFkZXJzKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SGVhZGVycygpCi0gIHsKLSAgCXJldHVybiB0aGlzLm1pbWVIZWFkZXJzOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTWltZVBhcnQjc2V0SGVhZGVycyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIZWFkZXJzKFN0cmluZyBtaW1lSGVhZGVycykKLSAgewotICAJdGhpcy5taW1lSGVhZGVycyA9IG1pbWVIZWFkZXJzOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTWltZVBhcnQjZ2V0Qm91bmRhcnlTdHJpbmdzKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRCb3VuZGFyeVN0cmluZ3MoKQotICB7Ci0gIAlyZXR1cm4gdGhpcy5ib3VuZGFyeVN0cmluZ3M7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5NaW1lUGFydCNzZXRCb3VuZGFyeVN0cmluZ3MoU3RyaW5nW10pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRCb3VuZGFyeVN0cmluZ3MoU3RyaW5nW10gYm91bmRhcnlTdHJpbmdzKQotICB7Ci0gIAl0aGlzLmJvdW5kYXJ5U3RyaW5ncyA9IGJvdW5kYXJ5U3RyaW5nczsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICByZXR1cm4gdG9YTUxTdHJpbmcoV1NJQ29uc3RhbnRzLk5TX05BTUVfV1NJX0xPRyk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50RWxlbWVudCN0b1hNTFN0cmluZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLQotICAgIFN0cmluZyBuc05hbWUgPSBuYW1lc3BhY2VOYW1lOwotICAgIGlmICgoIW5zTmFtZS5lcXVhbHMoIiIpICYmICghbnNOYW1lLmVuZHNXaXRoKCI6IikpKSkKLSAgICAgIG5zTmFtZSArPSAiOiI7Ci0KLSAgICAvLyBBZGQgbWltZVBhcnQgZWxlbWVudAotICAgIHB3LnByaW50bG4oIjwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTUlNRV9QQVJUICArICI+Iik7Ci0gICAgCi0gICAgLy8gQWRkIGJvdW5kYXJ5IHN0cmluZyBlbGVtZW50Ci0gICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYm91bmRhcnlTdHJpbmdzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgICAgcHcucHJpbnQoIjwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fQk9VTkRBUllfU1RSSU5HICsgIj4iKTsKLSAgICAgICAgcHcucHJpbnQoYm91bmRhcnlTdHJpbmdzW2ldKTsKLSAgICAgICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fQk9VTkRBUllfU1RSSU5HICsgIj4iKTsKLSAgICB9Ci0gICAKLSAgICAvLyBBZGQgbWltZUhlYWRlcnMgZWxlbWVudAotICAgIHB3LnByaW50KCI8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX01JTUVfSEVBREVSUyArICI+Iik7Ci0gICAgcHcucHJpbnQoWE1MVXRpbHMueG1sRXNjYXBlZFN0cmluZyhtaW1lSGVhZGVycykpOwotICAgIHB3LnByaW50bG4oIjwvIiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX01JTUVfSEVBREVSUyArICI+Iik7Ci0KLSAgICAvLyBBZGQgZW5jb2RlZCBjb250ZW50Ci0gICAgcHcucHJpbnQoIjwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTUlNRV9DT05URU5UICsgIj4iKTsKLSAgICBpZiAoKG1pbWVDb250ZW50LmluZGV4T2YoIjwiKSAhPSAtMSkgIHx8IAotICAgICAgICAobWltZUNvbnRlbnQuaW5kZXhPZigiPiIpICE9IC0xKSAgfHwgCi0JCShtaW1lQ29udGVudC5pbmRleE9mKCJcIiIpICE9IC0xKSB8fAotCQkobWltZUNvbnRlbnQuaW5kZXhPZigiXCciKSAhPSAtMSkpCi0gICAgCXB3LnByaW50KFhNTFV0aWxzLnhtbEVzY2FwZWRTdHJpbmcobWltZUNvbnRlbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHB3LnByaW50KGdldENvbnRlbnQoKSk7Ci0gICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTUlNRV9DT05URU5UICsgIj4iKTsKLSAKLSAgICAvLyBBZGQgZW5kIG1lc3NhZ2UgZWxlbWVudAotICAgIHB3LnByaW50bG4oIjwvIiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX01JTUVfUEFSVCArICI+Iik7Ci0KLSAgICAvLyBSZXR1cm4gc3RyaW5nCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL2ltcGwvTWltZVBhcnRzSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbG9nL2ltcGwvTWltZVBhcnRzSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzM5MmMxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL2xvZy9pbXBsL01pbWVQYXJ0c0ltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1pbWVQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnRzOwotCi0vKioKLSAqIE1pbWVQYXJ0c0ltcGwgY2xhc3MuCi0gKgotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgRGF2aWQgTGF1em9uIChsYXV6b25kQGNhLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBNaW1lUGFydHNJbXBsIGltcGxlbWVudHMgTWltZVBhcnRzCi17Ci0JCi0gIHByb3RlY3RlZCBNaW1lUGFydCByb290UGFydDsKLSAgcHJvdGVjdGVkIENvbGxlY3Rpb24gbWltZVBhcnRzID0gbmV3IEFycmF5TGlzdCgpOwotCi0gIHB1YmxpYyBNaW1lUGFydHNJbXBsKCkKLSAgewotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTWltZVBhcnRzI2dldFJvb3RQYXJ0KCkKLSAgICovCi0gIHB1YmxpYyBNaW1lUGFydCBnZXRSb290UGFydCgpCi0gIHsKLQlyZXR1cm4gcm9vdFBhcnQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5NaW1lUGFydHMjc2V0Um9vdFBhcnQoTWltZVBhcnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSb290UGFydChNaW1lUGFydCByb290UGFydCkKLSAgewotICAJdGhpcy5yb290UGFydCA9IHJvb3RQYXJ0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5sb2cuTWltZVBhcnRzI2NvdW50KCkKLSAgICovCi0gIHB1YmxpYyBpbnQgY291bnQoKQotICB7Ci0JcmV0dXJuIG1pbWVQYXJ0cy5zaXplKCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmxvZy5NaW1lUGFydHMjYWRkUGFydChNaW1lUGFydCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFBhcnQoTWltZVBhcnQgcGFydCkKLSAgewotICAJaWYgKHBhcnQgIT0gbnVsbCkKLSAgCSAgbWltZVBhcnRzLmFkZChwYXJ0KTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubG9nLk1pbWVQYXJ0cyNnZXRQYXJ0cygpCi0gICAqLwotICBwdWJsaWMgQ29sbGVjdGlvbiBnZXRQYXJ0cygpCi0gIHsKLSAgCXJldHVybiBtaW1lUGFydHM7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvQ2h1bmtlZERhdGEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvQ2h1bmtlZERhdGEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZiMWEwMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL0NodW5rZWREYXRhLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3I7Ci0KLS8qKgotICogVGhpcyBjbGFzcyB3aWxsIHByb2Nlc3MgY2h1bmtlZCBkYXRhLgotICogCi0gKiBAYXV0aG9yIFBldGVyICBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKiBAdmVyc2lvbiAxLjAuMQotICovCi1wdWJsaWMgY2xhc3MgQ2h1bmtlZERhdGEKLXsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gbW9yZUNodW5rZWREYXRhID0gZmFsc2U7Ci0gIHByb3RlY3RlZCBTdHJpbmcgY2h1bmtlZERhdGEgPSAiIjsKLSAgcHJvdGVjdGVkIFNvY2tldEhhbmRsZXIgc29ja2V0SGFuZGxlciA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdHMgYSBDaHVua2VkRGF0YSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgQ2h1bmtlZERhdGEoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogQ29uc3RydWN0cyBhIENodW5rZWREYXRhIG9iamVjdC4KLSAgICogQHBhcmFtIHNvY2tldEhhbmRsZXIgc29ja2V0IGhhbmRsZXIuCi0gICAqIEBwYXJhbSBtb3JlQ2h1bmtlZERhdGEgY2h1bmtlZCBkYXRhLgotICAgKi8KLSAgcHVibGljIENodW5rZWREYXRhKFNvY2tldEhhbmRsZXIgc29ja2V0SGFuZGxlciwgYm9vbGVhbiBtb3JlQ2h1bmtlZERhdGEpCi0gIHsKLSAgICB0aGlzLnNvY2tldEhhbmRsZXIgPSBzb2NrZXRIYW5kbGVyOwotICAgIHRoaXMubW9yZUNodW5rZWREYXRhID0gbW9yZUNodW5rZWREYXRhOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdHMgYSBDaHVua2VkRGF0YSBvYmplY3QuCi0gICAqIEBwYXJhbSBzb2NrZXRIYW5kbGVyIHNvY2tldCBoYW5kbGVyLgotICAgKiBAcGFyYW0gY2h1bmtlZERhdGEgY2h1bmtlZCBkYXRhLgotICAgKi8KLSAgcHVibGljIENodW5rZWREYXRhKFNvY2tldEhhbmRsZXIgc29ja2V0SGFuZGxlciwgU3RyaW5nIGNodW5rZWREYXRhKQotICB7Ci0gICAgdGhpcy5zb2NrZXRIYW5kbGVyID0gc29ja2V0SGFuZGxlcjsKLSAgICB0aGlzLmNodW5rZWREYXRhID0gY2h1bmtlZERhdGE7Ci0gICAgdGhpcy5tb3JlQ2h1bmtlZERhdGEgPSBjaGVja0RhdGEoY2h1bmtlZERhdGEpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCB0aGUgY2h1bmtlZCBkYXRhIHRvIHRoZSBidWZmZXIuCi0gICAqIEBwYXJhbSBjaHVua2VkRGF0YSBjaHVua2VkIGRhdGEuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGREYXRhKFN0cmluZyBjaHVua2VkRGF0YSkKLSAgewotICAgIHRoaXMuY2h1bmtlZERhdGEgKz0gY2h1bmtlZERhdGE7Ci0gICAgdGhpcy5tb3JlQ2h1bmtlZERhdGEgPSBjaGVja0RhdGEoY2h1bmtlZERhdGEpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBkYXRhIGJ1ZmZlci4KLSAgICogQHJldHVybiAgZGF0YSBidWZmZXIuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldERhdGEoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuY2h1bmtlZERhdGE7Ci0gIH0KLQotICAvKioKLSAgICogQ2xlYXIgZGF0YSBidWZmZXIuCi0gICAqLwotICBwdWJsaWMgdm9pZCBjbGVhckRhdGEoKQotICB7Ci0gICAgdGhpcy5jaHVua2VkRGF0YSA9ICIiOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBtb3JlIGNodW5rZWQgZGF0YS4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIG1vcmUgY2h1bmtlZCBkYXRhLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNNb3JlQ2h1bmtlZERhdGEoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMubW9yZUNodW5rZWREYXRhOwotICB9Ci0KLSAgLyoqCi0gICAqIERlY29kZSBhbmQgYWRkIGRhdGEgdG8gdGhlIGJ1ZmZlci4KLSAgICogQHBhcmFtIG1lc3NhZ2VCdWZmZXIgYSBTdHJpbmdCdWZmZXIgb2JqZWN0LgotICAgKiBAcmV0dXJuIHRydWUgaWYgZGF0YSBpcyBhZGRlZCB0byB0aGUgYnVmZmVyLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZGVjb2RlQW5kQWRkRGF0YVRvQnVmZmVyKFN0cmluZ0J1ZmZlciBtZXNzYWdlQnVmZmVyKQotICB7Ci0gICAgYm9vbGVhbiBtb3JlQ2h1bmtlZERhdGEgPSBmYWxzZTsKLSAgICBpZiAoIXRoaXMubW9yZUNodW5rZWREYXRhKQotICAgIHsKLSAgICAgIC8vIERFQlVHOgotICAgICAgZGVidWcoImRlY29kZUFuZEFkZERhdGFUb0J1ZmZlciIsICJjaHVua2VkRGF0YTogIiArIGNodW5rZWREYXRhKTsKLQotICAgICAgbW9yZUNodW5rZWREYXRhID0gZGVjb2RlRGF0YShjaHVua2VkRGF0YSwgbWVzc2FnZUJ1ZmZlcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1vcmVDaHVua2VkRGF0YTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVjayBkYXRhLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGNoZWNrRGF0YShTdHJpbmcgY2h1bmtlZERhdGEpCi0gIHsKLSAgICBib29sZWFuIG1vcmVDaHVua2VkRGF0YSA9IGZhbHNlOwotICAgIC8vIExvb2sgZm9yIFtDUkxGXVswXVtDUkxGXSBpbiB0aGUgY2h1bmtlZCBkYXRhICAgICAgCi0gICAgaWYgKGNodW5rZWREYXRhLmluZGV4T2YoU29ja2V0SGFuZGxlci5DUkxGICsgIjAiICsgU29ja2V0SGFuZGxlci5DUkxGKSAhPSAtMSkKLSAgICB7Ci0gICAgICBtb3JlQ2h1bmtlZERhdGEgPSBmYWxzZTsKLQotICAgICAgLy8gREVCVUc6Ci0gICAgICBkZWJ1ZygKLSAgICAgICAgImNoZWNrRGF0YSIsCi0gICAgICAgICJDaHVuayBjb250YWlucyBbQ1JMRl1bMF1bQ1JMRl0sIHNvIHRoZXJlIGlzIG5vIG1vcmUgZGF0YS4iKTsKLSAgICB9Ci0KLSAgICAvLyBMb29rIGZvciBbMF1bQ1JMRl0gYXQgc3RhcnQgb2YgY2h1bmtlZCBkYXRhICAgICAgCi0gICAgZWxzZSBpZiAoY2h1bmtlZERhdGEuc3RhcnRzV2l0aCgiMCIgKyBTb2NrZXRIYW5kbGVyLkNSTEYpKQotICAgIHsKLSAgICAgIG1vcmVDaHVua2VkRGF0YSA9IGZhbHNlOwotCi0gICAgICAvLyBERUJVRzoKLSAgICAgIGRlYnVnKAotICAgICAgICAiY2hlY2tEYXRhIiwKLSAgICAgICAgIkNodW5rIGRhdGEgc3RhcnRzIHdpdGggWzBdW0NSTEZdLCBzbyB0aGVyZSBpcyBubyBtb3JlIGRhdGEuIik7Ci0gICAgfQotCi0gICAgLy8gT3RoZXJ3aXNlIHN0ZXAgdGhyb3VnaCBpdCB0byBzZWUgaWYgd2UgaGF2ZSBhbGwgb2YgdGhlIGRhdGEKLSAgICBlbHNlCi0gICAgewotICAgICAgbW9yZUNodW5rZWREYXRhID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbW9yZUNodW5rZWREYXRhOwotICB9Ci0KLSAgLyoqCi0gICAqIERlY29kZSBjaHVua2VkIGRhdGEuCi0gICAqIAotICAgKiBEYXRhIGZvcm1hdDoKLSAgICogPHByZT4KLSAgICogICBbQ2h1bmsgU2l6ZV1bQ1JMRl1bRGF0YSBDaHVua11bQ1JMRl1bQ2h1bmsgU2l6ZV1bQ1JMRl1bRGF0YSBDaHVua11bQ1JMRl0uLi5bMF1bQ1JMRl1bT3B0aW9uYWwgRm9vdGVyXVtDUkxGXQotICAgKiA8L3ByZT4KLSAgICogCi0gICAqIEBwYXJhbSBjaHVua2VkRGF0YQotICAgKiBAcGFyYW0gbWVzc2FnZUxvZ2dpbmdCdWZmZXIKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBkZWNvZGVEYXRhKFN0cmluZyBjaHVua2VkRGF0YSwgU3RyaW5nQnVmZmVyIG1lc3NhZ2VCdWZmZXIpCi0gIHsKLSAgICBib29sZWFuIGVuZE9mRGF0YSA9IGZhbHNlOwotICAgIGludCBuZXh0SW5kZXggPSAwOwotICAgIGludCBwcmV2SW5kZXggPSAwOwotICAgIGludCBjaHVua1NpemUgPSAwOwotCi0gICAgU3RyaW5nIG5leHRDaHVua0RhdGEgPSBudWxsOwotCi0gICAgLy8gUHJvY2VzcyBlYWNoIGNodW5rIG9mIGRhdGEKLSAgICB3aGlsZSAoIShlbmRPZkRhdGEpCi0gICAgICAmJiAobmV4dEluZGV4IDwgY2h1bmtlZERhdGEubGVuZ3RoKCkpCi0gICAgICAmJiAobmV4dEluZGV4ID0gY2h1bmtlZERhdGEuaW5kZXhPZihTb2NrZXRIYW5kbGVyLkNSTEYsIHByZXZJbmRleCkpICE9IC0xKQotICAgIHsKLSAgICAgIC8vIEdldCB0aGUgZGF0YSBsZW5ndGggd2hpY2ggaXMgcmlnaHQgYWZ0ZXIgdGhpcwotICAgICAgU3RyaW5nIGhleENodW5rZWRTaXplID0gY2h1bmtlZERhdGEuc3Vic3RyaW5nKHByZXZJbmRleCwgbmV4dEluZGV4KTsKLQotICAgICAgLy8gRGVjb2RlIGxlbmd0aAotICAgICAgY2h1bmtTaXplID0gSW50ZWdlci5kZWNvZGUoIjB4IiArIGhleENodW5rZWRTaXplKS5pbnRWYWx1ZSgpOwotCi0gICAgICAvLyBERUJVRzoKLSAgICAgIGRlYnVnKCJkZWNvZGVEYXRhIiwgImNodW5rZWRTaXplOiAiICsgY2h1bmtTaXplKTsKLQotICAgICAgLy8gSWYgc2l6ZSBpcyB6ZXJvLCB0aGVuIHdlIGhhdmUgaGl0IHRoZSBlbmQgb2YgdGhlIGNodW5rZWQgZGF0YQotICAgICAgaWYgKGNodW5rU2l6ZSA9PSAwKQotICAgICAgewotICAgICAgICBlbmRPZkRhdGEgPSB0cnVlOwotICAgICAgfQotCi0gICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFsbCBvZiB0aGUgZGF0YSB0aGVuIHN0b3AKLSAgICAgIGVsc2UgaWYgKG5leHRJbmRleCArIDIgKyBjaHVua1NpemUgPiBjaHVua2VkRGF0YS5sZW5ndGgoKSkKLSAgICAgIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgbmV4dENodW5rRGF0YSA9Ci0gICAgICAgICAgY2h1bmtlZERhdGEuc3Vic3RyaW5nKG5leHRJbmRleCArIDIsIG5leHRJbmRleCArIDIgKyBjaHVua1NpemUpOwotCi0gICAgICAgIC8vIERFQlVHOgotICAgICAgICBkZWJ1ZygiZGVjb2RlRGF0YSIsICJuZXh0Q2h1bmtEYXRhOiAiICsgbmV4dENodW5rRGF0YSk7Ci0KLSAgICAgICAgLy8gR2V0IG1lc3NhZ2UgYmFzZWQgb24gbGVuZ3RoCi0gICAgICAgIGlmIChtZXNzYWdlQnVmZmVyICE9IG51bGwpCi0gICAgICAgICAgbWVzc2FnZUJ1ZmZlci5hcHBlbmQobmV4dENodW5rRGF0YSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFBvaW50IGF0IHRoZSBuZXh0IGNodW5rIHNpemUKLSAgICAgIHByZXZJbmRleCA9IG5leHRJbmRleCArIDIgKyBjaHVua1NpemUgKyAyOwotICAgIH0KLQotICAgIHJldHVybiBlbmRPZkRhdGE7Ci0gIH0KLQotICAvKioKLSAgICogRGVidWcuCi0gICAqLwotICBwcml2YXRlIHZvaWQgZGVidWcoU3RyaW5nIG1ldGhvZCwgU3RyaW5nIG1lc3NhZ2UpCi0gIHsKLSAgICB0aGlzLnNvY2tldEhhbmRsZXIuZGVidWcoIkNodW5rZWREYXRhIiwgbWV0aG9kLCBtZXNzYWdlKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL0Nvbm5lY3Rpb25MaXN0ZW5lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9Db25uZWN0aW9uTGlzdGVuZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ4Y2U5ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL0Nvbm5lY3Rpb25MaXN0ZW5lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3I7Ci0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgaXMgZm9yIHJlY2VpdmluZyBjb25uZWN0aW9uIGV2ZW50cy4KLSAqIAotICogQGF1dGhvciBTZXJnZXkgU3Vob3J1Y2hraW4KLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgQ29ubmVjdGlvbkxpc3RlbmVyCi17Ci0gIC8qKgotICAgKiBJbnZva2VkIHdoZW4gY29ubmVjdGlvbiBpcyBjbG9zZWQuCi0gICAqIEBwYXJhbSBjb25uZWN0aW9uIHNvY2tldCBjb25uZWN0aW9uLgotICAgKi8KLSAgcHVibGljIHZvaWQgY29ubmVjdGlvbkNsb3NlZChTb2NrZXRDb25uZWN0aW9uIGNvbm5lY3Rpb24pOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9NZXNzYWdlRW50cnlRdWV1ZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9NZXNzYWdlRW50cnlRdWV1ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWNjMDQ5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvTWVzc2FnZUVudHJ5UXVldWUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvcjsKLQotaW1wb3J0IGphdmEuaW8uU3RyaW5nUmVhZGVyOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nV3JpdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgdGhlIHF1ZXVlIHRoYXQgaXMgdXNlZCB0byB3cml0ZSByZXF1ZXN0IGFuZCByZXNwb25zZSBtZXNzYWdlcwotICogdG8gdGhlIGxvZyBmaWxlIGluIHRoZSBjb3JyZWN0IG9yZGVyLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIE1lc3NhZ2VFbnRyeVF1ZXVlCi17Ci0gIC8qKgotICAgKiBSZXF1ZXN0IHR5cGUgbWVzc2FnZSBlbnRyeSBxdWV1ZS4KLSAgICovCi0gIHByb3RlY3RlZCBWZWN0b3IgcmVxdWVzdExpc3QgPSBuZXcgVmVjdG9yKCk7Ci0KLSAgLyoqCi0gICAqIFJlc3BvbnNlIHR5cGUgbWVzc2FnZSBlbnRyeSBxdWV1ZS4KLSAgICovCi0gIHByb3RlY3RlZCBWZWN0b3IgcmVzcG9uc2VMaXN0ID0gbmV3IFZlY3RvcigpOwotCi0gIC8qKgotICAgKiBNb25pdG9yLgotICAgKi8KLSAgcHJvdGVjdGVkIE1vbml0b3IgbW9uaXRvciA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIExvZyBmaWxlLgotICAgKi8KLSAgcHJvdGVjdGVkIExvZyBsb2cgPSBudWxsOwotCi0gIC8qKgotICAgKiBMb2cgd3JpdGVyLgotICAgKi8KLSAgcHJvdGVjdGVkIExvZ1dyaXRlciBsb2dXcml0ZXIgPSBudWxsOwotCi0gIC8qKgotICAgKiBMaXN0IGxvY2suCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGxpc3RMb2NrID0gImxpc3RMb2NrIjsKLQotICAvKioKLSAgICogTWVzc2FnZSBJRCB3aGljaCBpcyBpbmNyZW1lbnRlZCB3aGVuIGEgbmV3IGxvZyBlbnRyeSBpcyBhZGRlZCB0byB0aGUgbG9nIGZpbGUuCi0gICAqLwotICBwcm90ZWN0ZWQgaW50IG1lc3NhZ2VJZCA9IDE7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBtZXNzYWdlIGVudHJ5IHF1ZXVlLgotICAgKiBAcGFyYW0gbW9uaXRvciBhIG1vbml0b3IuCi0gICAqIEBwYXJhbSBsb2cgdGhlIGxvZy4KLSAgICogQHBhcmFtIGxvZ1dyaXRlciBhIGxvZyB3cml0ZXIuCi0gICAqLwotICBwdWJsaWMgTWVzc2FnZUVudHJ5UXVldWUoTW9uaXRvciBtb25pdG9yLCBMb2cgbG9nLCBMb2dXcml0ZXIgbG9nV3JpdGVyKQotICB7Ci0gICAgLy8gU2F2ZSBpbnB1dCByZWZlcmVuY2VzCi0gICAgdGhpcy5tb25pdG9yID0gbW9uaXRvcjsKLSAgICB0aGlzLmxvZyA9IGxvZzsKLSAgICB0aGlzLmxvZ1dyaXRlciA9IGxvZ1dyaXRlcjsKLSAgfQotCi0gIC8qKgotICAgKiBBZGQgbG9nIGVudHJ5IHRvIHF1ZXVlLgotICAgKiBAcGFyYW0gbWVzc2FnZUVudHJ5IGEgbWVzc2FnZSBlbnRyeS4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaXMgdGhlcmUgaXMgYSBwcm9ibGVtIGFkZGluZyB0aGUgbG9nIAotICAgKiAgICAgICAgIGVudHJ5IHRvIHRoZSBxdWV1ZS4KLSAgICovCi0gIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBhZGRNZXNzYWdlRW50cnkoTWVzc2FnZUVudHJ5IG1lc3NhZ2VFbnRyeSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBzeW5jaHJvbml6ZWQgKGxpc3RMb2NrKQotICAgIHsKLSAgICAgIC8vIElmIHRoaXMgaXMgYSByZXF1ZXN0IHR5cGUgb2YgbWVzc2FnZSBlbnRyeSwgdGhlbiBhZGQgdG8gcmVxdWVzdCBsaXN0Ci0gICAgICBpZiAobWVzc2FnZUVudHJ5LmdldFR5cGUoKS5lcXVhbHMoTWVzc2FnZUVudHJ5LlRZUEVfUkVRVUVTVCkpCi0gICAgICB7Ci0gICAgICAgIHJlcXVlc3RMaXN0LmFkZChtZXNzYWdlRW50cnkpOwotICAgICAgfQotCi0gICAgICAvLyBPdGhlcndpc2UgdGhpcyBpcyBhIHJlc3BvbnNlIHR5cGUgb2YgbWVzc2FnZSBlbnRyeQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXNwb25zZUxpc3QuYWRkKG1lc3NhZ2VFbnRyeSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGVsbCB0aGUgbG9nIGVudHJ5IHdyaXRlciB0aHJlYWQgdG8gcnVuCi0gICAgd3JpdGVGcm9tUXVldWUoKTsKLSAgfQotCi0gIC8qKgotICAgKiBEZXRlcm1pbmUgaWYgYW55IGxvZyBlbnRyaWVzIG5lZWQgdG8gYmUgd3JpdHRlbi4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaXMgdGhlcmUgaXMgYSBwcm9ibGVtIGFkZGluZyBsb2cgZW50cmllcy4KLSAgCi0gICAqLwotICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgd3JpdGVGcm9tUXVldWUoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBNZXNzYWdlRW50cnkgcmVxdWVzdE1lc3NhZ2VFbnRyeSA9IG51bGw7Ci0gICAgTWVzc2FnZUVudHJ5IHJlc3BvbnNlTWVzc2FnZUVudHJ5ID0gbnVsbDsKLSAgICBib29sZWFuIHJlc3BvbnNlRm91bmQgPSBmYWxzZTsKLQotICAgIC8vIENyZWF0ZSBhcnJheSB0aGF0IHdpbGwgY29udGFpbiBsaXN0IG9mIGluZGV4IHRvIHJlbW92ZSBmcm9tIHJlcXVlc3QgbGlzdAotICAgIGludFtdIHJlcXVlc3RJbmRleExpc3QgPSBuZXcgaW50W3JlcXVlc3RMaXN0LnNpemUoKV07Ci0gICAgaW50IHJlcUluZGV4Q291bnQgPSAwOwotCi0gICAgc3luY2hyb25pemVkIChsaXN0TG9jaykKLSAgICB7Ci0gICAgICAvLyBJZiB0aGVyZSBhcmUgZW50cmllcyBpbiB0aGUgcmVxdWVzdCBxdWV1ZSwKLSAgICAgIC8vIHRoZW4gdHJ5IHRvIG1hdGNoIHRoZW0gd2l0aCBlbnRyaWVzIGluIHRoZSByZXNwb25zZSBxdWV1ZQotICAgICAgZm9yIChpbnQgcmVxSW5kZXggPSAwOyByZXFJbmRleCA8IHJlcXVlc3RMaXN0LnNpemUoKTsgcmVxSW5kZXgrKykKLSAgICAgIHsKLSAgICAgICAgLy8gR2V0IHJlcXVlc3QgbG9nIGVudHJ5Ci0gICAgICAgIHJlcXVlc3RNZXNzYWdlRW50cnkgPSAoTWVzc2FnZUVudHJ5KSByZXF1ZXN0TGlzdC5lbGVtZW50QXQocmVxSW5kZXgpOwotCi0gICAgICAgIC8vIENoZWNrIGVhY2ggcmVzcG9uc2UgbG9nIGVudHJ5IHRvIHNlZSBpZiB0aGUgY29udmVyc2F0aW9uSWQgbWF0Y2hlcwotICAgICAgICByZXNwb25zZUZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaW50IHJlc3BJbmRleCA9IDA7Ci0gICAgICAgICAgcmVzcEluZGV4IDwgcmVzcG9uc2VMaXN0LnNpemUoKSAmJiAhcmVzcG9uc2VGb3VuZDsKLSAgICAgICAgICByZXNwSW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldCByZXNwb25zZSBsb2cgZW50cnkKLSAgICAgICAgICByZXNwb25zZU1lc3NhZ2VFbnRyeSA9Ci0gICAgICAgICAgICAoTWVzc2FnZUVudHJ5KSByZXNwb25zZUxpc3QuZWxlbWVudEF0KHJlc3BJbmRleCk7Ci0KLSAgICAgICAgICAvLyBJZiB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UgaGF2ZSB0aGUgc2FtZSBjb252ZXJzYXRpb25JZCwKLSAgICAgICAgICAvLyB0aGVuIHdyaXRlIHRoZW0gb3V0IHRvIHRoZSBsb2cgZmlsZQotICAgICAgICAgIGlmIChyZXF1ZXN0TWVzc2FnZUVudHJ5Ci0gICAgICAgICAgICAuZ2V0Q29udmVyc2F0aW9uSWQoKQotICAgICAgICAgICAgLmVxdWFscyhyZXNwb25zZU1lc3NhZ2VFbnRyeS5nZXRDb252ZXJzYXRpb25JZCgpKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXNwb25zZUZvdW5kID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8gU2V0IHRoZSBpZCBmb3IgdGhlIGxvZyBlbnRyaWVzCi0gICAgICAgICAgICByZXF1ZXN0TWVzc2FnZUVudHJ5LnNldElkKGdldE5leHRNZXNzYWdlSWQoKSk7Ci0gICAgICAgICAgICByZXNwb25zZU1lc3NhZ2VFbnRyeS5zZXRJZChnZXROZXh0TWVzc2FnZUlkKCkpOwotCi0gICAgICAgICAgICAvLyBXcml0ZSBvdXQgcmVxdWVzdCBhbmQgdGhlbiByZXNwb25zZQotICAgICAgICAgICAgLy89PT09IFNTIHN0YXJ0IDogd2hhdCB0aGlzIGxpbmUgaXMgdXNlZCBmb3I/Pz8gLSBjYXVzZXMgbWVtb3J5IGxlYWssIGFzIG5vIHJlbW92ZUxvZ0VudHJ5IGlzIGNhbGxlZCA9PT09Ci0gICAgICAgICAgICAvLyAgICAgICAgICAgIGxvZy5hZGRMb2dFbnRyeShyZXF1ZXN0TWVzc2FnZUVudHJ5KTsKLSAgICAgICAgICAgIC8vPT09PSBTUyBlbmQgPT09Ci0gICAgICAgICAgICBTdHJpbmdSZWFkZXIgcmVxdWVzdFJlYWRlciA9Ci0gICAgICAgICAgICAgIG5ldyBTdHJpbmdSZWFkZXIocmVxdWVzdE1lc3NhZ2VFbnRyeS50b1hNTFN0cmluZygiIikpOwotICAgICAgICAgICAgbG9nV3JpdGVyLndyaXRlKHJlcXVlc3RSZWFkZXIpOwotCi0gICAgICAgICAgICAvLyBEaXNwbGF5IG1lc3NhZ2UKLSAgICAgICAgICAgIHByaW50TWVzc2FnZShyZXF1ZXN0TWVzc2FnZUVudHJ5KTsKLQotICAgICAgICAgICAgLy8gV3JpdGUgb3V0IHJlc3BvbnNlCi0gICAgICAgICAgICAvLz09PT0gU1Mgc3RhcnQgOiB3aGF0IHRoaXMgbGluZSBpcyB1c2VkIGZvcj8/PyAtIGNhdXNlcyBtZW1vcnkgbGVhaywgYXMgbm8gcmVtb3ZlTG9nRW50cnkgaXMgY2FsbGVkID09PT0KLSAgICAgICAgICAgIC8vICAgICAgICAgICAgbG9nLmFkZExvZ0VudHJ5KHJlc3BvbnNlTWVzc2FnZUVudHJ5KTsKLSAgICAgICAgICAgIC8vPT09PSBTUyBlbmQgPT09Ci0gICAgICAgICAgICBTdHJpbmdSZWFkZXIgcmVzcG9uc2VSZWFkZXIgPQotICAgICAgICAgICAgICBuZXcgU3RyaW5nUmVhZGVyKHJlc3BvbnNlTWVzc2FnZUVudHJ5LnRvWE1MU3RyaW5nKCIiKSk7Ci0gICAgICAgICAgICBsb2dXcml0ZXIud3JpdGUocmVzcG9uc2VSZWFkZXIpOwotCi0gICAgICAgICAgICAvLyBEaXNwbGF5IG1lc3NhZ2UKLSAgICAgICAgICAgIHByaW50TWVzc2FnZShyZXNwb25zZU1lc3NhZ2VFbnRyeSk7Ci0KLSAgICAgICAgICAgIC8vIEFkZCByZXF1ZXN0IHRvIGxpc3Qgc28gdGhhdCBpdCBjYW4gYmUgcmVtb3ZlZCBsYXRlcgotICAgICAgICAgICAgcmVxdWVzdEluZGV4TGlzdFtyZXFJbmRleENvdW50KytdID0gcmVxSW5kZXg7Ci0KLSAgICAgICAgICAgIC8vIFJlbW92ZSBsb2cgZW50cnkgZnJvbSByZXNwb25zZSBsaXN0Ci0gICAgICAgICAgICByZXNwb25zZUxpc3QucmVtb3ZlKHJlc3BJbmRleCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIFJlbW92ZSByZXF1ZXN0cyB0aGF0IHdlcmUgd3JpdHRlbiBvdXQKLSAgICAgIGZvciAoaW50IGNvdW50ID0gMDsgY291bnQgPCByZXFJbmRleENvdW50OyBjb3VudCsrKQotICAgICAgICByZXF1ZXN0TGlzdC5yZW1vdmUocmVxdWVzdEluZGV4TGlzdFtjb3VudF0pOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIG5leHQgbWVzc2FnZSBpZGVudGlmaWVyLgotICAgKiBAcmV0dXJuIHRoZSBuZXh0IG1lc3NhZ2UgaWRlbnRpZmllci4KLSAgICovCi0gIHByb3RlY3RlZCBzeW5jaHJvbml6ZWQgU3RyaW5nIGdldE5leHRNZXNzYWdlSWQoKQotICB7Ci0gICAgcmV0dXJuIFN0cmluZy52YWx1ZU9mKG1lc3NhZ2VJZCsrKTsKLSAgfQotCi0gIC8qKgotICAgKiBEaXNwbGF5IG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBtZXNzYWdlRW50cnkgYSBtZXNzYWdlIGVudHJ5LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgcHJpbnRNZXNzYWdlKE1lc3NhZ2VFbnRyeSBtZXNzYWdlRW50cnkpCi0gIHsKLSAgICAvLyBEaXNwbGF5IG1lc3NhZ2UKLSAgICBtb25pdG9yLnByaW50TWVzc2FnZSgKLSAgICAgICJsb2cwMSIsCi0gICAgICBtZXNzYWdlRW50cnkuZ2V0SWQoKQotICAgICAgICArICIsICIKLSAgICAgICAgKyBtZXNzYWdlRW50cnkuZ2V0VHlwZSgpCi0gICAgICAgICsgIiwgIgotICAgICAgICArIG1lc3NhZ2VFbnRyeS5nZXRTZW5kZXJIb3N0QW5kUG9ydCgpLAotICAgICAgIkxvZyBtZXNzYWdlIGVudHJ5IC0gIElEOiAiCi0gICAgICAgICsgbWVzc2FnZUVudHJ5LmdldElkKCkKLSAgICAgICAgKyAiLCBUeXBlOiAiCi0gICAgICAgICsgbWVzc2FnZUVudHJ5LmdldFR5cGUoKQotICAgICAgICArICIsIFNlbmRlcjogIgotICAgICAgICArIG1lc3NhZ2VFbnRyeS5nZXRTZW5kZXJIb3N0QW5kUG9ydCgpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9Nb25pdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL01vbml0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAzMWRkMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL01vbml0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUwNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvcjsKLQotaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5Ub29sSW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nV3JpdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5NYW5JblRoZU1pZGRsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuUmVkaXJlY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuTWVzc2FnZUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVGVzdFV0aWxzOwotCi0vKioKLSAqIE1lc3NhZ2UgTW9uaXRvci4KLSAqCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnIudXMuaWJtLmNvbSkKLSAqLwotCi1wdWJsaWMgY2xhc3MgTW9uaXRvcgotewotICAvKioKLSAgICogTWVzc2FnZSBsaXN0LgotICAgKi8KLSAgcHJvdGVjdGVkIE1lc3NhZ2VMaXN0IG1lc3NhZ2VMaXN0ID0gbnVsbDsKLQotICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkVTT1VSQ0VfQlVORExFX05BTUUgPQotICAgICJvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5Nb25pdG9yIjsKLQotICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBVU0FHRV9NRVNTQUdFID0KLSAgICAiVXNhZ2U6IE1vbml0b3IgLWNvbmZpZyA8Y29uZmlnRmlsZW5hbWU+IjsKLQotICAvKioKLSAgICogQ29udmVyc2F0aW9uIElELgotICAgKi8KLSAgcHJpdmF0ZSBpbnQgY29udmVyc2F0aW9uSWQgPSAxOwotCi0gIHByaXZhdGUgTG9nIGxvZyA9IG51bGw7Ci0gIHByaXZhdGUgTG9nV3JpdGVyIGxvZ1dyaXRlciA9IG51bGw7Ci0gIHByaXZhdGUgTW9uaXRvckNvbmZpZyBtb25pdG9yQ29uZmlnID0gbnVsbDsKLQotICAvKioKLSAgKiBUb29sIGluZm9ybWF0aW9uLgotICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUT09MX05BTUUgPSAiTW9uaXRvciI7Ci0KLSAgcHJvdGVjdGVkIFRvb2xJbmZvIHRvb2xJbmZvID0gbnVsbDsKLQotICBwcm90ZWN0ZWQgVmVjdG9yIGxpc3RlbmVyTGlzdCA9IG5ldyBWZWN0b3IoKTsKLQotICBwcm90ZWN0ZWQgTWVzc2FnZUVudHJ5UXVldWUgbWVzc2FnZUVudHJ5UXVldWUgPSBudWxsOwotCi0gIC8qKgotICAgKiBNZXNzYWdlIG1vbml0b3IuCi0gICAqIEBwYXJhbSBhcmdzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSBjcmVhdGluZyBhIE1vbml0b3Igb2JqZWN0LgotICAgKi8KLSAgcHVibGljIE1vbml0b3IoU3RyaW5nW10gYXJncykgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQ3JlYXRlIG1lc3NhZ2UgbGlzdAotICAgIHRoaXMubWVzc2FnZUxpc3QgPSBuZXcgTWVzc2FnZUxpc3QoUkVTT1VSQ0VfQlVORExFX05BTUUpOwotCi0gICAgLy8gVG9vbCBpbmZvcm1hdGlvbgotICAgIHRvb2xJbmZvID0gbmV3IFRvb2xJbmZvKFRPT0xfTkFNRSk7Ci0KLSAgICAvLyBDcmVhdGUgZG9jdW1lbnQgZmFjdG9yeQotICAgIERvY3VtZW50RmFjdG9yeSBkb2N1bWVudEZhY3RvcnkgPSBEb2N1bWVudEZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLQotICAgIC8vIEdldCBuZXcgY29uZmlnIG9iamVjdAotICAgIG1vbml0b3JDb25maWcgPSBkb2N1bWVudEZhY3RvcnkubmV3TW9uaXRvckNvbmZpZygpOwotICAgIG1vbml0b3JDb25maWcuaW5pdCh0aGlzLm1lc3NhZ2VMaXN0KTsKLQotICAgIC8vIFBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKLSAgICBtb25pdG9yQ29uZmlnLnBhcnNlQXJncyhhcmdzKTsKLQotICAgIFN0cmluZyBsb2dMb2NhdGlvbiA9IG1vbml0b3JDb25maWcuZ2V0TG9nTG9jYXRpb24oKTsKLSAgICBpZiAobG9nTG9jYXRpb24uaW5kZXhPZihXU0lDb25zdGFudHMuUEFUSF9TRVBBUkFUT1IpID4gLTEpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigKLSAgICAgICAgbWVzc2FnZUxpc3QuZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiY29uZmlnMTEiLAotICAgICAgICAgIG1vbml0b3JDb25maWcuZ2V0TG9nTG9jYXRpb24oKSwKLSAgICAgICAgICAiVGhlIGxvZyBmaWxlIGxvY2F0aW9uIHZhbHVlIGNhbm5vdCBjb250YWluIHRoZSBwYXNzIHNlcGFyYXRvciBjaGFyYWN0ZXI6IikpOwotICAgIH0KLQotICAgIEZpbGUgZmlsZSA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0IGZpbGUgb2JqZWN0IGZvciBsb2cgZmlsZQotICAgICAgZmlsZSA9IG5ldyBGaWxlKG1vbml0b3JDb25maWcuZ2V0TG9nTG9jYXRpb24oKSk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgIG1lc3NhZ2VMaXN0LmdldE1lc3NhZ2UoImNvbmZpZzA3IiwgIkNvdWxkIG5vdCBnZXQgbG9nIGZpbGUgbG9jYXRpb24uIiksCi0gICAgICAgIGUpOwotICAgIH0KLQotICAgIC8vIElmIHJlcGxhY2UgZmxhZyBpcyBmYWxzZSBhbmQgZmlsZSBleGlzdHMsIHRoZW4gdGhyb3cgZXhjZXB0aW9uCi0gICAgaWYgKGZpbGUuZXhpc3RzKCkgJiYgIW1vbml0b3JDb25maWcuZ2V0UmVwbGFjZUxvZygpKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgIG1lc3NhZ2VMaXN0LmdldE1lc3NhZ2UoCi0gICAgICAgICAgImNvbmZpZzA4IiwKLSAgICAgICAgICBtb25pdG9yQ29uZmlnLmdldExvZ0xvY2F0aW9uKCksCi0gICAgICAgICAgIkxvZyBmaWxlIGFscmVhZHkgZXhpc3RzOiIpKTsKLSAgICB9Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBDcmVhdGUgb3V0cHV0IGZpbGUKLSAgICAgIGxvZyA9IGRvY3VtZW50RmFjdG9yeS5uZXdMb2coKTsKLQotICAgICAgLy8gU2V0IHN0eWxlIHNoZWV0IHN0cmluZwotICAgICAgbG9nLnNldFN0eWxlU2hlZXRTdHJpbmcoCi0gICAgICAgIG1vbml0b3JDb25maWcuZ2V0QWRkU3R5bGVTaGVldCgpLmdldFN0eWxlU2hlZXRTdHJpbmcoKSk7Ci0KLSAgICAgIC8vIEdldCBsb2cgd3JpdGVyCi0gICAgICBsb2dXcml0ZXIgPSBkb2N1bWVudEZhY3RvcnkubmV3TG9nV3JpdGVyKCk7Ci0gICAgICBsb2dXcml0ZXIuc2V0V3JpdGVyKG1vbml0b3JDb25maWcuZ2V0TG9nTG9jYXRpb24oKSk7Ci0KLSAgICAgIC8vIFdyaXRlIHN0YXJ0IG9mIGxvZyBmaWxlCi0gICAgICBsb2dXcml0ZXIud3JpdGUobmV3IFN0cmluZ1JlYWRlcihsb2cuZ2V0U3RhcnRYTUxTdHJpbmcoIiIpKSk7Ci0KLSAgICAgIC8vIFdyaXRlIG1vbml0b3IgdG9vbCBpbmZvcm1hdGlvbgotICAgICAgbG9nV3JpdGVyLndyaXRlKG5ldyBTdHJpbmdSZWFkZXIodG9YTUxTdHJpbmcoIiIpKSk7Ci0KLSAgICAgIC8vIENyZWF0ZSBsb2cgZW50cnkgcXVldWUKLSAgICAgIG1lc3NhZ2VFbnRyeVF1ZXVlID0gbmV3IE1lc3NhZ2VFbnRyeVF1ZXVlKHRoaXMsIGxvZywgbG9nV3JpdGVyKTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigKLSAgICAgICAgbWVzc2FnZUxpc3QuZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiZXJyb3IwMyIsCi0gICAgICAgICAgIkNvdWxkIG5vdCBjcmVhdGUgbG9nIG9yIGxvZyB3cml0ZXIuIiksCi0gICAgICAgIGUpOwotICAgIH0KLQotICAgIC8vIEdldCBtYW5JblRoZU1pZGRsZSBzZXR0aW5ncwotICAgIE1hbkluVGhlTWlkZGxlIG1hbkluVGhlTWlkZGxlID0gbW9uaXRvckNvbmZpZy5nZXRNYW5JblRoZU1pZGRsZSgpOwotCi0gICAgLy8gR2V0IGxpc3Qgb2YgcmVkaXJlY3RzCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBtYW5JblRoZU1pZGRsZS5nZXRSZWRpcmVjdExpc3QoKS5pdGVyYXRvcigpOwotCi0gICAgLy8gUHJvY2VzcyBlYWNoIHJlZGlyZWN0Ci0gICAgUmVkaXJlY3QgcmVkaXJlY3Q7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICAvLyBHZXQgbmV4dCByZWRpcmVjdAotICAgICAgcmVkaXJlY3QgPSAoUmVkaXJlY3QpIGl0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgLy8gQ3JlYXRlIHNlcnZlciBzb2NrZXQgc29ja2V0IGxpc3RlbmVyCi0gICAgICBsaXN0ZW5lckxpc3QuYWRkKG5ldyBTZXJ2ZXJTb2NrZXRMaXN0ZW5lcih0aGlzLCByZWRpcmVjdCkpOwotICAgIH0KLQotICAgIC8vIEFkZCBzaHV0ZG93biBob29rCi0gICAgUnVudGltZS5nZXRSdW50aW1lKCkuYWRkU2h1dGRvd25Ib29rKG5ldyBTaHV0ZG93bkhvb2soKSk7Ci0KLSAgICAvLyBDcmVhdGUgYW5kIHN0YXJ0IGNvbnNvbGUKLSAgICBDb25zb2xlIGNvbnNvbGUgPSBuZXcgQ29uc29sZSgpOwotICAgIGNvbnNvbGUuc3RhcnQoKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIG1vbml0b3IgY29uZmlnIGZpbGUuCi0gICAqIEByZXR1cm4gdGhlIG1vbml0b3IgY29uZmlnIGZpbGUuCi0gICAqLwotICBwdWJsaWMgTW9uaXRvckNvbmZpZyBnZXRNb25pdG9yQ29uZmlnKCkKLSAgewotICAgIHJldHVybiBtb25pdG9yQ29uZmlnOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgbG9nIG9iamVjdC4KLSAgICogQHJldHVybiB0aGUgbG9nIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBMb2cgZ2V0TG9nKCkKLSAgewotICAgIHJldHVybiB0aGlzLmxvZzsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIGxvZyBlbnRyeSBxdWV1ZSBvYmplY3QuCi0gICAqIEByZXR1cm4gdGhlIGxvZyBlbnRyeSBxdWV1ZSBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgTWVzc2FnZUVudHJ5UXVldWUgZ2V0TWVzc2FnZUVudHJ5UXVldWUoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMubWVzc2FnZUVudHJ5UXVldWU7Ci0gIH0KLQotICAvKioKLSAgICogVGVybWluYXRlIHRoZSBtb25pdG9yLgotICAgKi8KLSAgdm9pZCBleGl0TW9uaXRvcigpCi0gIHsKLSAgICBwcmludE1lc3NhZ2UoInN0b3BwaW5nMDEiLCAiU3RvcHBpbmcgdGhlIG1vbml0b3IuLi4iKTsKLSAgICBTeXN0ZW0uZXhpdCgwKTsKLSAgfQotCi0gIC8qKgotICAgKiBTdG9wIHRoZSBtb25pdG9yIGJlY2F1c2UgYW4gZXhjZXB0aW9uIG9jY3VycmVkLgotICAgKi8KLSAgdm9pZCBleGl0TW9uaXRvcihFeGNlcHRpb24gZSkKLSAgewotICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZQotICAgIHByaW50TWVzc2FnZSgKLSAgICAgICJzdG9wcGluZzAyIiwKLSAgICAgICJTdG9wcGluZyBtb25pdG9yIGJlY2F1c2UgYW4gZXhjZXB0aW9uIG9jY3VycmVkLiIpOwotICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRVhDRVBUSU9OOiAiICsgZS50b1N0cmluZygpKTsKLSAgICBpZiAodGhpcy5tb25pdG9yQ29uZmlnLmdldFZlcmJvc2VPcHRpb24oKSkKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0KLSAgICAvLyBFeGl0IG1vbml0b3IKLSAgICBleGl0TW9uaXRvcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIFN0b3AgdGhlIG1vbml0b3IuCi0gICAqLwotICB2b2lkIHN0b3BNb25pdG9yKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIEdldCBsaXN0IG9mIGxpc3RlbmVycyB0byBzdG9wCi0gICAgICBJdGVyYXRvciBpdGVyYXRvciA9IGxpc3RlbmVyTGlzdC5pdGVyYXRvcigpOwotCi0gICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICAoKFNlcnZlclNvY2tldExpc3RlbmVyKSBpdGVyYXRvci5uZXh0KCkpLnNodXRkb3duKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFdhaXQgZm9yIHRoZSBjbGVhbnVwIHRpbWVvdXQgc2Vjb25kcwotICAgICAgVGhyZWFkLnNsZWVwKG1vbml0b3JDb25maWcuZ2V0VGltZW91dCgpICogMTAwMCk7Ci0KLSAgICAgIC8vIFdyaXRlIGVuZCBvZiBsb2cgZmlsZQotICAgICAgaWYgKGxvZ1dyaXRlciAhPSBudWxsKQotICAgICAgewotICAgICAgICBsb2dXcml0ZXIud3JpdGUobmV3IFN0cmluZ1JlYWRlcihsb2cuZ2V0RW5kWE1MU3RyaW5nKCIiKSkpOwotCi0gICAgICAgIGxvZ1dyaXRlci5jbG9zZSgpOwotICAgICAgfQotICAgIH0KLQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBBREQ6IEhvdyBzaG91bGQgdGhpcyBleGVjcHRpb24gYmUgaGFuZGxlZD8KLSAgICB9Ci0KLSAgICBwcmludE1lc3NhZ2UoInN0b3BwZWQwMSIsICJNb25pdG9yIHN0b3BwZWQuIik7Ci0gIH0KLQotICAvKioKLSAgICogQ29tbWFuZCBsaW5lIGludGVyZmFjZS4KLSAgICogQHBhcmFtIGFyZ3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCi0gIHsKLSAgICBNb25pdG9yIG1vbml0b3IgPSBudWxsOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgMikKLSAgICAgIHsKLSAgICAgICAgc3RhdGljUHJpbnRNZXNzYWdlKCJ1c2FnZTAxIiwgVVNBR0VfTUVTU0FHRSk7Ci0gICAgICAgIFN5c3RlbS5leGl0KDEpOwotICAgICAgfQotCi0gICAgICBpZiAoIWFyZ3NbMF0uZXF1YWxzSWdub3JlQ2FzZSgiLWNvbmZpZyIpKQotICAgICAgewotICAgICAgICBzdGF0aWNQcmludE1lc3NhZ2UoInVzYWdlMDEiLCBVU0FHRV9NRVNTQUdFKTsKLSAgICAgICAgU3lzdGVtLmV4aXQoMSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFJ1biB0aGUgbW9uaXRvcgotICAgICAgbW9uaXRvciA9IG5ldyBNb25pdG9yKGFyZ3MpOwotICAgIH0KLQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBib29sZWFuIHByaW50U3RhY2tUcmFjZSA9IHRydWU7Ci0gICAgICBTdHJpbmcgbWVzc2FnZUlEOwotICAgICAgU3RyaW5nIGRlZmF1bHRNZXNzYWdlOwotICAgICAgU3RyaW5nIG1lc3NhZ2VEYXRhOwotCi0gICAgICBpZiAoKGUgaW5zdGFuY2VvZiBXU0lGaWxlTm90Rm91bmRFeGNlcHRpb24pCi0gICAgICAgIHx8IChlIGluc3RhbmNlb2YgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKSkKLSAgICAgIHsKLSAgICAgICAgcHJpbnRTdGFja1RyYWNlID0gZmFsc2U7Ci0gICAgICAgIG1lc3NhZ2VJRCA9ICJlcnJvcjAxIjsKLSAgICAgICAgZGVmYXVsdE1lc3NhZ2UgPSAiTW9uaXRvciBFcnJvcjoiOwotICAgICAgICBtZXNzYWdlRGF0YSA9IGUuZ2V0TWVzc2FnZSgpOwotICAgICAgfQotCi0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHByaW50U3RhY2tUcmFjZSA9IHRydWU7Ci0gICAgICAgIG1lc3NhZ2VJRCA9ICJlcnJvcjAyIjsKLSAgICAgICAgZGVmYXVsdE1lc3NhZ2UgPSAiTW9uaXRvciBTdG9wcGVkIEJ5IEV4Y2VwdGlvbjoiOwotICAgICAgICBtZXNzYWdlRGF0YSA9IGUudG9TdHJpbmcoKTsKLSAgICAgIH0KLQotICAgICAgaWYgKG1vbml0b3IgIT0gbnVsbCkKLSAgICAgICAgbW9uaXRvci5wcmludE1lc3NhZ2UobWVzc2FnZUlELCBtZXNzYWdlRGF0YSwgZGVmYXVsdE1lc3NhZ2UpOwotICAgICAgZWxzZQotICAgICAgICBNb25pdG9yLnN0YXRpY1ByaW50TWVzc2FnZShtZXNzYWdlSUQsIG1lc3NhZ2VEYXRhLCBkZWZhdWx0TWVzc2FnZSk7Ci0KLSAgICAgIGlmIChwcmludFN0YWNrVHJhY2UpCi0gICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0KLSAgICAgIC8vIEV4aXQKLSAgICAgIGlmIChtb25pdG9yICE9IG51bGwpCi0gICAgICAgIG1vbml0b3IuZXhpdE1vbml0b3IoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgU3lzdGVtLmV4aXQoMik7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFByaW50IGEgbWVzc2FnZSBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGUuCi0gICAqIEBwYXJhbSBrZXkgYSBrZXkuCi0gICAqIEBwYXJhbSBkZWZhdWx0TWVzc2FnZSBhIGRlZmF1bHQgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHByaW50TWVzc2FnZShTdHJpbmcga2V5LCBTdHJpbmcgZGVmYXVsdE1lc3NhZ2UpCi0gIHsKLSAgICBwcmludE1lc3NhZ2Uoa2V5LCBudWxsLCBkZWZhdWx0TWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogUHJpbnQgYSBtZXNzYWdlIGZyb20gdGhlIHJlc291cmNlIGJ1bmRsZS4KLSAgICogQHBhcmFtIGtleSBhIGtleS4KLSAgICogQHBhcmFtIG1lc3NhZ2VEYXRhIG1lc3NhZ2UgZGF0YS4KLSAgICogQHBhcmFtIGRlZmF1bHRNZXNzYWdlIGEgZGVmYXVsdCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHZvaWQgcHJpbnRNZXNzYWdlKAotICAgIFN0cmluZyBrZXksCi0gICAgU3RyaW5nIG1lc3NhZ2VEYXRhLAotICAgIFN0cmluZyBkZWZhdWx0TWVzc2FnZSkKLSAgewotICAgIG1lc3NhZ2VMaXN0LnByaW50TWVzc2FnZShrZXksIG1lc3NhZ2VEYXRhLCBkZWZhdWx0TWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogUHJpbnQgbWVzc2FnZS4KLSAgICogQHBhcmFtIGtleSBhIGtleS4KLSAgICogQHBhcmFtIGRlZmF1bHRNZXNzYWdlIGEgZGVmYXVsdCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY1ByaW50TWVzc2FnZShTdHJpbmcga2V5LCBTdHJpbmcgZGVmYXVsdE1lc3NhZ2UpCi0gIHsKLSAgICBzdGF0aWNQcmludE1lc3NhZ2Uoa2V5LCBudWxsLCBkZWZhdWx0TWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogUHJpbnQgbWVzc2FnZS4KLSAgICogQHBhcmFtIGtleSBhIGtleS4KLSAgICogQHBhcmFtIG1lc3NhZ2VEYXRhIG1lc3NhZ2UgZGF0YS4KLSAgICogQHBhcmFtIGRlZmF1bHRNZXNzYWdlIGEgZGVmYXVsdCBtZXNzYWdlLgotICAKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNQcmludE1lc3NhZ2UoCi0gICAgU3RyaW5nIGtleSwKLSAgICBTdHJpbmcgbWVzc2FnZURhdGEsCi0gICAgU3RyaW5nIGRlZmF1bHRNZXNzYWdlKQotICB7Ci0gICAgTWVzc2FnZUxpc3QucHJpbnRNZXNzYWdlKAotICAgICAgUkVTT1VSQ0VfQlVORExFX05BTUUsCi0gICAgICBrZXksCi0gICAgICBtZXNzYWdlRGF0YSwKLSAgICAgIGRlZmF1bHRNZXNzYWdlKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIG5leHQgY29udmVyc2F0aW9uIGlkZW50aWZpZXIuCi0gICAqIEByZXR1cm4gdGhlIG5leHQgY29udmVyc2F0aW9uIGlkZW50aWZpZXIuCi0gICAqLwotICBzeW5jaHJvbml6ZWQgaW50IGdldE5leHRDb252ZXJzYXRpb25JZCgpCi0gIHsKLSAgICByZXR1cm4gY29udmVyc2F0aW9uSWQrKzsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gWE1MIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICogQHBhcmFtIG5hbWVzcGFjZU5hbWUgbmFtZXNwYWNlIHByZWZpeC4KLSAgICogQHJldHVybiBYTUwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICAvLyBTdGFydAotICAgIHB3LnByaW50KHRvb2xJbmZvLmdldFN0YXJ0WE1MU3RyaW5nKG5hbWVzcGFjZU5hbWUpKTsKLQotICAgIC8vIENvbmZpZwotICAgIHB3LnByaW50KAotICAgICAgbW9uaXRvckNvbmZpZy50b1hNTFN0cmluZyhXU0lDb25zdGFudHMuTlNfTkFNRV9XU0lfTU9OSVRPUl9DT05GSUcpKTsKLQotICAgIC8vIEVuZAotICAgIHB3LnByaW50bG4odG9vbEluZm8uZ2V0RW5kWE1MU3RyaW5nKG5hbWVzcGFjZU5hbWUpKTsKLQotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIFNodXRkb3duIGhvb2suCi0gICAqLwotICBjbGFzcyBTaHV0ZG93bkhvb2sgZXh0ZW5kcyBUaHJlYWQKLSAgewotICAgIC8qKgotICAgICAqIFJ1biBzaHV0ZG93biBwcm9jZWR1cmUuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgcnVuKCkKLSAgICB7Ci0gICAgICBzdG9wTW9uaXRvcigpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBSdW4gY29tbWFuZCBmcm9tIGNvbnNvbGUuCi0gICAqLwotICBjbGFzcyBDb25zb2xlIGV4dGVuZHMgVGhyZWFkCi0gIHsKLSAgICAvKioKLSAgICAgKiBQcm9tcHQgdXNlciBhbmQgd2FpdCBmb3IgaW5wdXQuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgcnVuKCkKLSAgICB7Ci0gICAgICAvLyBHZXQgdGhlIGV4aXQgc3RyaW5nCi0gICAgICBTdHJpbmcgZXhpdFN0cmluZyA9IG1lc3NhZ2VMaXN0LmdldE1lc3NhZ2UoImV4aXQwMSIsICJleGl0Iik7Ci0KLSAgICAgIC8vIERpc3BsYXkgb3B0aW9ucyBhbmQgaG93IHRvIHN0b3AgYXBwbGljYXRpb24KLSAgICAgIFRlc3RVdGlscy5wcmludFRvb2xJbmZvKHRvb2xJbmZvKTsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnQobW9uaXRvckNvbmZpZy50b1N0cmluZygpKTsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICIpOwotICAgICAgcHJpbnRNZXNzYWdlKAotICAgICAgICAic3RhcnQwMSIsCi0gICAgICAgICJUaGUgIgotICAgICAgICAgICsgdG9vbEluZm8uZ2V0TmFtZSgpCi0gICAgICAgICAgKyAiIHRvb2wgaXMgcmVhZHkgdG8gaW50ZXJjZXB0IGFuZCBsb2cgd2ViIHNlcnZpY2UgbWVzc2FnZXMuIik7Ci0gICAgICBwcmludE1lc3NhZ2UoCi0gICAgICAgICJzdGFydDAyIiwKLSAgICAgICAgIlR5cGUgXCJleGl0XCIgdG8gc3RvcCB0aGUgIiArIHRvb2xJbmZvLmdldE5hbWUoKSArICIuIik7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAiKTsKLQotICAgICAgLy8gR2V0IHRoZSB0aW1lIHRvIHN0b3AgYWNjZXB0aW5nIGNvbm5lY3Rpb25zCi0gICAgICBsb25nIHN0b3BUaW1lID0KLSAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgKyAobW9uaXRvckNvbmZpZy5nZXRMb2dEdXJhdGlvbigpICogMTAwMCk7Ci0gICAgICAvLyBTUwotCi0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgLy8gR2V0IHN0ZGluIGFzIGEgYnVmZmVyZWQgcmVhZGVyCi0gICAgICAgIEJ1ZmZlcmVkUmVhZGVyIHJlYWRlciA9Ci0gICAgICAgICAgbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKLQotICAgICAgICAvLyBQcm9jZXNzIGlucHV0IGZyb20gY29uc29sZQotICAgICAgICBib29sZWFuIGV4aXQgPSBmYWxzZTsKLSAgICAgICAgd2hpbGUgKCghZXhpdCkgJiYgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIDwgc3RvcFRpbWUpKQotICAgICAgICB7IC8vIFNTCi0gICAgICAgICAgLy8gU2xlZXAKLSAgICAgICAgICBUaHJlYWQuc2xlZXAoNTAwKTsKLQotICAgICAgICAgIC8vIENoZWNrIGZvciB1c2VyIGlucHV0Ci0gICAgICAgICAgaWYgKHJlYWRlci5yZWFkeSgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyZWFkZXIucmVhZExpbmUoKS5lcXVhbHNJZ25vcmVDYXNlKGV4aXRTdHJpbmcpKQotICAgICAgICAgICAgICBleGl0ID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICAvLyBBREQ6IEhvdyBzaG91bGQgdGhpcyBiZSBoYW5kbGVkPwotICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oZS50b1N0cmluZygpKTsKLSAgICAgIH0KLQotICAgICAgLy8gRXhpdAotICAgICAgZXhpdE1vbml0b3IoKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvTW9uaXRvci5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9Nb25pdG9yLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZDYwNmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9Nb25pdG9yLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0jIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jICAqIAotIyAgKiBDb250cmlidXRvcnM6IAotIyAgKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotIwotIyBNb25pdG9yIG1lc3NhZ2UgcmVzb3VyY2UgYnVuZGxlLgotIwotdXNhZ2UwMT1Vc2FnZTogTW9uaXRvciAtY29uZmlnIDxjb25maWdGaWxlbmFtZT4KLXN0b3BwZWQwMT1Nb25pdG9yIHN0b3BwZWQuCi1lcnJvcjAxPU1vbml0b3IgRXJyb3I6Ci1lcnJvcjAyPU1vbml0b3IgU3RvcHBlZCBCeSBFeGNlcHRpb246IAotZXJyb3IwMz1Db3VsZCBub3QgY3JlYXRlIGxvZyBvciBsb2cgd3JpdGVyLgotZXJyb3IwND1Nb25pdG9yIGNhbm5vdCBjb25uZWN0IHRvIGEgcmVkaXJlY3QgaG9zdDoKLXN0b3BwaW5nMDE9U3RvcHBpbmcgdGhlIG1vbml0b3IuLi4KLXN0b3BwaW5nMDI9U3RvcHBpbmcgbW9uaXRvciBiZWNhdXNlIGFuIGV4Y2VwdGlvbiBvY2N1cnJlZC4KLWxvZzAxPUxvZyBtZXNzYWdlIGVudHJ5IFtJRCwgVHlwZSwgU2VuZGVyXToKLXN0YXJ0MDE9VGhlIE1vbml0b3IgdG9vbCBpcyByZWFkeSB0byBpbnRlcmNlcHQgYW5kIGxvZyB3ZWIgc2VydmljZSBtZXNzYWdlcy4KLXN0YXJ0MDI9VHlwZSAiZXhpdCIgdG8gc3RvcCB0aGUgTW9uaXRvci4KLWV4aXQwMT1leGl0Ci1jb25maWcwMT1UaGUgc3BlY2lmaWVkIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkOgotY29uZmlnMDI9TW9uaXRvciBjb25maWd1cmF0aW9uIGZpbGUgd2FzIG5vdCBmb3VuZC4gIFNwZWNpZmllZCBmaWxlIGxvY2F0aW9uOgotY29uZmlnMDM9Q291bGQgbm90IHJlYWQgbW9uaXRvciBjb25maWd1cmF0aW9uIGZpbGUuICBTcGVjaWZpZWQgZmlsZSBsb2NhdGlvbjoKLWNvbmZpZzA0PUVsZW1lbnQgbXVzdCBjb250YWluIGFuIGludGVnZXIgdmFsdWUuICBFbGVtZW50IG5hbWU6Ci1jb25maWcwNT1Nb25pdG9yIGNvbmZpZ3VyYXRpb24gZmlsZSBkaWQgbm90IGNvbnRhaW4gYW55IHJlZGlyZWN0IHN0YXRlbWVudHMuCi1jb25maWcwNj1Nb25pdG9yIGNvbmZpZ3VyYXRpb24gZmlsZSBkaWQgbm90IGNvbnRhaW4gdGhlIGxvZyBmaWxlIFVSSS4KLWNvbmZpZzA3PUNvdWxkIG5vdCBnZXQgbG9nIGZpbGUgbG9jYXRpb24uCi1jb25maWcwOD1Mb2cgZmlsZSBhbHJlYWR5IGV4aXN0cy4gIFNwZWNpZmllZCBmaWxlIGxvY2F0aW9uOgotY29uZmlnMDk9RWxlbWVudCBpcyBtaXNzaW5nLiBFbGVtZW50IG5hbWU6Ci1jb25maWcxMD1QYXJhbWV0ZXIgdmFsdWUgY2FuJ3QgYmUgbmVnYXRpdmUuIEVsZW1lbnQgbmFtZToKLWNvbmZpZzExPVRoZSBsb2cgZmlsZSBsb2NhdGlvbiB2YWx1ZSBjYW5ub3QgY29udGFpbiB0aGUgcGFzcyBzZXBhcmF0b3IgY2hhcmFjdGVyOgotCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL1NlcnZlclNvY2tldExpc3RlbmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL1NlcnZlclNvY2tldExpc3RlbmVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MTZjOGMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9TZXJ2ZXJTb2NrZXRMaXN0ZW5lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yOwotCi1pbXBvcnQgamF2YS5uZXQuU2VydmVyU29ja2V0OwotaW1wb3J0IGphdmEubmV0LlNvY2tldDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5SZWRpcmVjdDsKLQotLyoqCi0gKiBBIHNlcnZlciBzb2NrZXQgbGlzdGVuZXIuCi0gKgotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGNsYXNzIFNlcnZlclNvY2tldExpc3RlbmVyCi0gIGV4dGVuZHMgVGhyZWFkCi0gIGltcGxlbWVudHMgQ29ubmVjdGlvbkxpc3RlbmVyIC8vIFNTCi17Ci0gIHByb3RlY3RlZCBNb25pdG9yIG1vbml0b3IgPSBudWxsOwotICBwcm90ZWN0ZWQgUmVkaXJlY3QgcmVkaXJlY3QgPSBudWxsOwotCi0gIHByb3RlY3RlZCBTZXJ2ZXJTb2NrZXQgc2VydmVyU29ja2V0ID0gbnVsbDsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gc3RvcFNlcnZlclNvY2tldCA9IGZhbHNlOwotCi0gIHByb3RlY3RlZCBWZWN0b3IgY29ubmVjdGlvbkxpc3QgPSBuZXcgVmVjdG9yKCk7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBzZXJ2ZXIgc29ja2V0IGxpc3RlbmVyLgotICAgKiBAcGFyYW0gbW9uaXRvciBhIE1vbml0b3Igb2JqZWN0LgotICAgKiBAcGFyYW0gcmVkaXJlY3QgYSBSZWRpcmVjdCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgU2VydmVyU29ja2V0TGlzdGVuZXIoTW9uaXRvciBtb25pdG9yLCBSZWRpcmVjdCByZWRpcmVjdCkKLSAgewotICAgIHRoaXMubW9uaXRvciA9IG1vbml0b3I7Ci0gICAgdGhpcy5yZWRpcmVjdCA9IHJlZGlyZWN0OwotCi0gICAgLy8gU3RhcnQgbGlzdGVuaW5nCi0gICAgc3RhcnQoKTsKLSAgfQotCi0gIC8qKgotICAgKiBSdW4gdGhlIHRocmVhZCBhbmQgbGlzdGVuIGZvciBhIGNvbm5lY3Rpb24gb24gdGhlIHNvY2tldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHJ1bigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBDcmVhdGUgc2VydmVyIHNvY2tldAotICAgICAgc2VydmVyU29ja2V0ID0KLSAgICAgICAgbmV3IFNlcnZlclNvY2tldCgKLSAgICAgICAgICByZWRpcmVjdC5nZXRMaXN0ZW5Qb3J0KCksCi0gICAgICAgICAgcmVkaXJlY3QuZ2V0TWF4Q29ubmVjdGlvbnMoKSk7Ci0gICAgICAvLyBTUwotCi0gICAgICAvLyBTZXQgdGltZW91dCBzbyB0aGF0IHNlcnZlciBzb2NrZXQgd2lsbCBjb250aW51ZSB0byBhY2NlcHQgY29ubmVjdGlvbnMKLSAgICAgIHNlcnZlclNvY2tldC5zZXRTb1RpbWVvdXQoMCk7Ci0KLSAgICAgIC8vIExpc3RlbiBmb3IgY29ubmVjdGlvbnMgdW50aWwgaW50ZXJydXB0ZWQKLSAgICAgIHdoaWxlICghc3RvcFNlcnZlclNvY2tldCkKLSAgICAgIHsKLSAgICAgICAgLy8gQWNjZXB0IGNvbm5lY3Rpb25zCi0gICAgICAgIFNvY2tldCBzb2NrZXQgPSBzZXJ2ZXJTb2NrZXQuYWNjZXB0KCk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIHNlcnZlciBzb2NrZXQgd2FzIE5PVCBzdG9wcGVkLCBwcm9jZXNzIGNvbm5lY3Rpb24KLSAgICAgICAgaWYgKCFzdG9wU2VydmVyU29ja2V0KQotICAgICAgICB7Ci0gICAgICAgICAgLy8gQ3JlYXRlIG5ldyBjb25uZWN0aW9uCi0gICAgICAgICAgU29ja2V0Q29ubmVjdGlvbiBzb2NrZXRDb25uZWN0aW9uID0KLSAgICAgICAgICAgIG5ldyBTb2NrZXRDb25uZWN0aW9uKHRoaXMubW9uaXRvciwgdGhpcy5yZWRpcmVjdCwgc29ja2V0KTsKLQotICAgICAgICAgIC8vcmVnaXN0ZXIgYXMgYSBsaXN0ZW5lcgotICAgICAgICAgIHNvY2tldENvbm5lY3Rpb24uYWRkQ29ubmVjdGlvbkxpc3RlbmVyKHRoaXMpOyAvLyBTUwotCi0gICAgICAgICAgLy8gQWRkIHRvIGNvbm5lY3Rpb24gbGlzdAotICAgICAgICAgIGNvbm5lY3Rpb25MaXN0LmFkZChzb2NrZXRDb25uZWN0aW9uKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBJZiB0aGUgZXhjZXB0aW9uIHdhcyBOT1QgY2F1c2VkIGJ5IGNsb3NpbmcgdGhlIHNvY2tldCwgdGhlbiBzdG9wIG1vbml0b3IKLSAgICAgIGlmICghZS5nZXRNZXNzYWdlKCkuZXF1YWxzKCJzb2NrZXQgY2xvc2VkIikpCi0gICAgICB7Ci0gICAgICAgIG1vbml0b3IuZXhpdE1vbml0b3IoZSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBhIGNvbm5lY3Rpb24gb24gdGhlIHNvY2tldC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNodXRkb3duKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIFNodXRkb3duIGFsbCBhY3RpdmUgY29ubmVjdGlvbnMKLSAgICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gY29ubmVjdGlvbkxpc3QuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgICgoU29ja2V0Q29ubmVjdGlvbikgaXRlcmF0b3IubmV4dCgpKS5zaHV0ZG93bigpOwotICAgICAgfQotCi0gICAgICAvLyBUZWxsIHRoZSBzZXJ2ZXIgc29ja2V0IGxpc3RlbmluZyB0aHJlYWQgdG8gc3RvcAotICAgICAgdGhpcy5zdG9wU2VydmVyU29ja2V0ID0gdHJ1ZTsKLQotICAgICAgLy8gU2V0IHRoZSBzZXJ2ZXIgc29ja2V0IHRpbWVvdXQgdG8gMSBtcwotICAgICAgc2VydmVyU29ja2V0LnNldFNvVGltZW91dCgxKTsKLQotICAgICAgLy8gQ2xvc2UgdGhlIHNlcnZlciBzb2NrZXQKLSAgICAgIGlmIChzZXJ2ZXJTb2NrZXQgIT0gbnVsbCkKLSAgICAgICAgc2VydmVyU29ja2V0LmNsb3NlKCk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICB9Ci0gIH0KLQotICAvLyA9PT09IFNTIHN0YXJ0ID09PT0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5tb25pdG9yLkNvbm5lY3Rpb25MaXN0ZW5lciNjb25uZWN0aW9uQ2xvc2VkKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoU29ja2V0Q29ubmVjdGlvbiBjb25uZWN0aW9uKQotICB7Ci0gICAgY29ubmVjdGlvbkxpc3QucmVtb3ZlKGNvbm5lY3Rpb24pOwotICB9Ci0gIC8vID09PT0gU1MgZW5kID09PT0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvU29ja2V0Q29ubmVjdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9Tb2NrZXRDb25uZWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMmEwZjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9Tb2NrZXRDb25uZWN0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3I7Ci0KLWltcG9ydCBqYXZhLm5ldC5Tb2NrZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5SZWRpcmVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5VdGlsczsKLQotLyoqCi0gKiBBIHNvY2tldCBjb25uZWN0aW9uLgotICoKLSAqIEBhdXRob3IgUGV0ZXIgIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKi8KLXB1YmxpYyBjbGFzcyBTb2NrZXRDb25uZWN0aW9uIGV4dGVuZHMgVGhyZWFkCi17Ci0gIHByb3RlY3RlZCBNb25pdG9yIG1vbml0b3I7Ci0gIHByb3RlY3RlZCBSZWRpcmVjdCByZWRpcmVjdDsKLSAgcHJvdGVjdGVkIFNvY2tldCBpblNvY2tldDsKLSAgcHJvdGVjdGVkIFNvY2tldCBvdXRTb2NrZXQ7Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBodHRwUHJveHlIb3N0ID0gbnVsbDsKLSAgcHJvdGVjdGVkIGludCBodHRwUHJveHlQb3J0OwotCi0gIHByb3RlY3RlZCBTb2NrZXRIYW5kbGVyIHJlcXVlc3RTb2NrZXRIYW5kbGVyID0gbnVsbDsKLSAgcHJvdGVjdGVkIFNvY2tldEhhbmRsZXIgcmVzcG9uc2VTb2NrZXRIYW5kbGVyID0gbnVsbDsKLQotICBwcml2YXRlIFZlY3RvciBsaXN0ZW5lcnMgPSBuZXcgVmVjdG9yKCk7IC8vIFNTCi0KLSAgLyoqCi0gICAqIENyZWF0ZSBzb2NrZXQgY29ubmVjdGlvbi4KLSAgICogQHBhcmFtIG1vbml0b3IgIGEgTW9uaXRvciBvYmplY3QuCi0gICAqIEBwYXJhbSByZWRpcmVjdCBhIFJlZGlyZWN0IG9iamVjdC4KLSAgICogQHBhcmFtIGluU29ja2V0IGluIHNvY2tldC4KLSAgICovCi0gIHB1YmxpYyBTb2NrZXRDb25uZWN0aW9uKE1vbml0b3IgbW9uaXRvciwgUmVkaXJlY3QgcmVkaXJlY3QsIFNvY2tldCBpblNvY2tldCkKLSAgewotICAgIHRoaXMubW9uaXRvciA9IG1vbml0b3I7Ci0gICAgdGhpcy5yZWRpcmVjdCA9IHJlZGlyZWN0OwotICAgIHRoaXMuaW5Tb2NrZXQgPSBpblNvY2tldDsKLQotICAgIC8vIFN0YXJ0IHByb2Nlc3NpbmcgdGhlIGNvbm5lY3Rpb24KLSAgICBzdGFydCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgdGhlIHNvY2tldCBjb25uZWN0aW9uLgotICAgKi8KLSAgcHVibGljIHZvaWQgcnVuKCkKLSAgewotICAgIC8vIEdldCB0aGUgSFRUUCBwcm94eSBzZXR0aW5ncyBpZiB0aGVyZSBhcmUgYW55IHNldCAobm90IHVzZWQgY3VycmVudGx5KQotICAgIGxvYWRIdHRwUHJveHlTZXR0aW5ncygpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gT3BlbiB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyCi0gICAgICB0aGlzLm91dFNvY2tldCA9IG5ldyBTb2NrZXQocmVkaXJlY3QuZ2V0VG9Ib3N0KCksIHJlZGlyZWN0LmdldFRvUG9ydCgpKTsKLQotICAgICAgLy8gU2V0IHRoZSByZWFkIHRpbWVvdXQgZm9yIHRoZSBpbnB1dCBzb2NrZXQKLSAgICAgIHRoaXMuaW5Tb2NrZXQuc2V0U29UaW1lb3V0KHJlZGlyZWN0LmdldFJlYWRUaW1lb3V0U2Vjb25kcygpICogMTAwMCk7Ci0KLSAgICAgIC8vIEdldCB0aGUgbmV4dCBjb252ZXJzYXRpb24gSUQKLSAgICAgIGludCBjb252ZXJzYXRpb25JZCA9IG1vbml0b3IuZ2V0TmV4dENvbnZlcnNhdGlvbklkKCk7Ci0KLSAgICAgIC8vIENyZWF0ZSB0aGUgc29ja2V0IGhhbmRsZXJzIHdoaWNoIGFyZSB1c2VkIHRvIHNlbmQgdGhlIGRhdGEgZnJvbQotICAgICAgLy8gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyCi0gICAgICByZXF1ZXN0U29ja2V0SGFuZGxlciA9Ci0gICAgICAgIG5ldyBTb2NrZXRIYW5kbGVyKAotICAgICAgICAgIHRoaXMsCi0gICAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVRVUVTVCwKLSAgICAgICAgICBjb252ZXJzYXRpb25JZCwKLSAgICAgICAgICByZWRpcmVjdC5nZXRUb0hvc3QoKSwKLSAgICAgICAgICB0aGlzLmluU29ja2V0LAotICAgICAgICAgIHRoaXMub3V0U29ja2V0LAotICAgICAgICAgIHJlZGlyZWN0LmdldFJlYWRUaW1lb3V0U2Vjb25kcygpKTsKLSAgICAgIHJlc3BvbnNlU29ja2V0SGFuZGxlciA9Ci0gICAgICAgIG5ldyBTb2NrZXRIYW5kbGVyKAotICAgICAgICAgIHRoaXMsCi0gICAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVTUE9OU0UsCi0gICAgICAgICAgY29udmVyc2F0aW9uSWQsCi0gICAgICAgICAgcmVkaXJlY3QuZ2V0VG9Ib3N0KCksCi0gICAgICAgICAgdGhpcy5vdXRTb2NrZXQsCi0gICAgICAgICAgdGhpcy5pblNvY2tldCwKLSAgICAgICAgICByZWRpcmVjdC5nZXRSZWFkVGltZW91dFNlY29uZHMoKSk7Ci0KLSAgICAgIC8vIFRlbGwgZWFjaCBzb2NrZXRIYW5kbGVyIGFib3V0IHRoZSBvdGhlciBvbmUKLSAgICAgIHJlcXVlc3RTb2NrZXRIYW5kbGVyLnNldFBhaXJlZFNvY2tldEhhbmRsZXIocmVzcG9uc2VTb2NrZXRIYW5kbGVyKTsKLSAgICAgIHJlc3BvbnNlU29ja2V0SGFuZGxlci5zZXRQYWlyZWRTb2NrZXRIYW5kbGVyKHJlcXVlc3RTb2NrZXRIYW5kbGVyKTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgTW9uaXRvci5zdGF0aWNQcmludE1lc3NhZ2UoCi0gICAgICAgICJlcnJvcjA0IiwKLSAgICAgICAgcmVkaXJlY3QuZ2V0VG9Ib3N0KCksCi0gICAgICAgICJNb25pdG9yIGNhbm5vdCBjb25uZWN0IHRvIGEgcmVkaXJlY3QgaG9zdDoiKTsKLQotICAgICAgc2h1dGRvd24oKTsKLQotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIHRoaXMuaW5Tb2NrZXQuY2xvc2UoKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICAgIHsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogTG9nIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBjb252ZXJzYXRpb25JRCAgICAgIHRoZSBjb3ZlcnNhdGlvbiBpZC4KLSAgICogQHBhcmFtIGNvbm5lY3Rpb25UeXBlICAgICAgdGhlIGNvbm5lY3Rpb24gdHlwZS4KLSAgICogQHBhcmFtIHRpbWVzdGFtcCAgICAgICAgICAgdGhlIHRpbWVzdGFtcC4KLSAgICogQHBhcmFtIHNlbmRlckhvc3RBbmRQb3J0ICAgdGhlIHNlbmRlciBob3N0IGFuZCBwb3J0LgotICAgKiBAcGFyYW0gcmVjZWl2ZXJIb3N0QW5kUG9ydCB0aGUgcmVjZWl2ZXIgaG9zdCBhbmQgcG9ydC4KLSAgICogQHBhcmFtIG1lc3NhZ2VCdWZmZXIgICAgICAgdGhlIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBib20gICAgICAgICAgICAgICAgIHRoZSBCT00uCi0gICAqIEBwYXJhbSBlbmNvZGluZyAgICAgICAgICAgIHRoZSBlbmNvZGluZy4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgIHRoZXJlIGlzIGEgcHJvYmxlbSBsb2dnaW5nIG1lc3NhZ2UuCi0gICovCi0gIHB1YmxpYyB2b2lkIGxvZ01lc3NhZ2UoCi0gICAgaW50IGNvbnZlcnNhdGlvbklELAotICAgIFN0cmluZyBjb25uZWN0aW9uVHlwZSwKLSAgICBTdHJpbmcgdGltZXN0YW1wLAotICAgIFN0cmluZyBzZW5kZXJIb3N0QW5kUG9ydCwKLSAgICBTdHJpbmcgcmVjZWl2ZXJIb3N0QW5kUG9ydCwKLSAgICBTdHJpbmdCdWZmZXIgbWVzc2FnZUJ1ZmZlciwKLSAgICBpbnQgYm9tLAotICAgIFN0cmluZyBlbmNvZGluZykKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBNZXNzYWdlRW50cnkgbWVzc2FnZUVudHJ5ID0gbnVsbDsKLQotICAgIC8vIENyZWF0ZSBtZXNzYWdlIGVudHJ5Ci0gICAgbWVzc2FnZUVudHJ5ID0KLSAgICAgIGNyZWF0ZU1lc3NhZ2VFbnRyeSgKLSAgICAgICAgY29udmVyc2F0aW9uSUQsCi0gICAgICAgIGNvbm5lY3Rpb25UeXBlLAotICAgICAgICB0aW1lc3RhbXAsCi0gICAgICAgIHNlbmRlckhvc3RBbmRQb3J0LAotICAgICAgICByZWNlaXZlckhvc3RBbmRQb3J0LAotICAgICAgICBtZXNzYWdlQnVmZmVyLnRvU3RyaW5nKCksCi0gICAgICAgIGJvbSwKLSAgICAgICAgZW5jb2RpbmcpOwotCi0gICAgLy8gREVCVUc6Ci0gICAgLy9kZWJ1ZygibG9nTWVzc2FnZSIsICIgbWVzc2FnZUVudHJ5OiAiICsgbWVzc2FnZUVudHJ5KTsKLQotICAgIC8vIEFkZCBlbnRyeSB0byB0aGUgcXVldWUKLSAgICBtb25pdG9yLmdldE1lc3NhZ2VFbnRyeVF1ZXVlKCkuYWRkTWVzc2FnZUVudHJ5KG1lc3NhZ2VFbnRyeSk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgbG9nIGVudHJ5IGZyb20gYWxsIG9mIHRoZSBkYXRhIHRoYXQgd2FzIGdhdGhlcmVkLgotICAgKi8KLSAgcHJpdmF0ZSBNZXNzYWdlRW50cnkgY3JlYXRlTWVzc2FnZUVudHJ5KAotICAgIGludCBjb252ZXJzYXRpb25JRCwKLSAgICBTdHJpbmcgbWVzc2FnZVR5cGUsCi0gICAgU3RyaW5nIHRpbWVzdGFtcCwKLSAgICBTdHJpbmcgc2VuZGVySG9zdEFuZFBvcnQsCi0gICAgU3RyaW5nIHJlY2VpdmVySG9zdEFuZFBvcnQsCi0gICAgU3RyaW5nIG1lc3NhZ2UsCi0gICAgaW50IGJvbSwKLSAgICBTdHJpbmcgZW5jb2RpbmcpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQ3JlYXRlIGxvZyBlbnRyeSBvYmplY3QKLSAgICBNZXNzYWdlRW50cnkgbWVzc2FnZUVudHJ5ID0gbW9uaXRvci5nZXRMb2coKS5jcmVhdGVMb2dFbnRyeSgpOwotCi0gICAgLy8gU2V0IGlucHV0IGluZm9ybWF0aW9uIGluIGxvZyBlbnRyeQotICAgIC8vIE5PVEU6ICBUaGUgSUQgaXMgc2V0IGp1c3QgYmVmb3JlIHRoZSBsb2cgZW50cnkgaXMgd3JpdHRlbiB0byB0aGUgbG9nIGZpbGUgaW4gTG9nRW50cnlRdWV1ZQotICAgIC8vbG9nRW50cnkuc2V0SWQoaWQpOwotICAgIG1lc3NhZ2VFbnRyeS5zZXRDb252ZXJzYXRpb25JZChTdHJpbmcudmFsdWVPZihjb252ZXJzYXRpb25JRCkpOwotICAgIG1lc3NhZ2VFbnRyeS5zZXRUeXBlKG1lc3NhZ2VUeXBlKTsKLSAgICBtZXNzYWdlRW50cnkuc2V0VGltZXN0YW1wKHRpbWVzdGFtcCk7Ci0gICAgbWVzc2FnZUVudHJ5LnNldFNlbmRlckhvc3RBbmRQb3J0KHNlbmRlckhvc3RBbmRQb3J0KTsKLSAgICBtZXNzYWdlRW50cnkuc2V0UmVjZWl2ZXJIb3N0QW5kUG9ydChyZWNlaXZlckhvc3RBbmRQb3J0KTsKLSAgICBtZXNzYWdlRW50cnkuc2V0RW5jb2RpbmcoZW5jb2RpbmcpOwotCi0gICAgLy8gR2V0IEhUVFAgaGVhZGVycyBmcm9tIGZ1bGwgbWVzc2FnZQotICAgIFN0cmluZyBodHRwSGVhZGVycyA9IFV0aWxzLmdldEhUVFBIZWFkZXJzKG1lc3NhZ2UpOwotICAgIG1lc3NhZ2VFbnRyeS5zZXRIVFRQSGVhZGVycyhodHRwSGVhZGVycyk7Ci0JCi0gICBpZiAoVXRpbHMuaXNNdWx0aXBhcnRSZWxhdGVkTWVzc2FnZShodHRwSGVhZGVycykpCi0gICAgewotICAgIAlNaW1lUGFydHMgbWltZVBhcnRzID0gVXRpbHMucGFyc2VNdWx0aXBhcnRSZWxhdGVkTWVzc2FnZShtZXNzYWdlLCBodHRwSGVhZGVycywgZW5jb2RpbmcpOwotICAgIAlpZiAobWltZVBhcnRzID09IG51bGwpCi0gICAgCXsKLSAgICAJICAvLyBwcm9ibGVtIGNyZWF0aW5nIE1pbWVwYXJ0cyAtLSB0cmVhdCBpdCBhcyBzaW1wbGUgU09BUCBtZXNzYWdlCi0gICAgCSAgU3RyaW5nIGNvbnRlbnQgPSBVdGlscy5nZXRDb250ZW50KG1lc3NhZ2UpOwotICAgIAkgIG1lc3NhZ2VFbnRyeS5zZXRNZXNzYWdlKGNvbnRlbnQpOwotICAgIAkgIG1lc3NhZ2VFbnRyeS5zZXRNaW1lQ29udGVudChmYWxzZSk7Ci0gICAgCX0KLSAgICAJZWxzZQotICAgIAl7Ci0gICAgICAgICAgbWVzc2FnZUVudHJ5LnNldE1pbWVQYXJ0cyhtaW1lUGFydHMpOwotICAgICAgICAgIG1lc3NhZ2VFbnRyeS5zZXRNaW1lQ29udGVudCh0cnVlKTsKLSAgICAJfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gR2V0IHRoZSBtZXNzYWdlIGNvbnRlbnQKLSAgICAgIFN0cmluZyBjb250ZW50ID0gVXRpbHMuZ2V0Q29udGVudChtZXNzYWdlKTsKLSAgICAgIG1lc3NhZ2VFbnRyeS5zZXRNZXNzYWdlKGNvbnRlbnQpOwotICAgICAgbWVzc2FnZUVudHJ5LnNldE1pbWVDb250ZW50KGZhbHNlKTsKLSAgICB9Ci0KLSAgICAvLyBTZXQgdGhlIEJPTSwgaWYgdGhlcmUgaXMgb25lCi0gICAgaWYgKGJvbSAhPSAwKQotICAgICAgbWVzc2FnZUVudHJ5LnNldEJPTShib20pOwotCi0gICAgcmV0dXJuIG1lc3NhZ2VFbnRyeTsKLSAgfQotCi0gIC8qKgotICAgKiBMb2FkIEhUVFAgcHJveHkgc2V0dGluZ3MuCi0gICAqLwotICBwdWJsaWMgdm9pZCBsb2FkSHR0cFByb3h5U2V0dGluZ3MoKQotICB7Ci0gICAgLy8gR2V0IHRoZSBIVFRQIHByb3h5IGhvc3Qgc2V0dGluZwotICAgIHRoaXMuaHR0cFByb3h5SG9zdCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiaHR0cC5wcm94eUhvc3QiKTsKLSAgICBpZiAodGhpcy5odHRwUHJveHlIb3N0ICE9IG51bGwgJiYgaHR0cFByb3h5SG9zdC5lcXVhbHMoIiIpKQotICAgICAgdGhpcy5odHRwUHJveHlIb3N0ID0gbnVsbDsKLQotICAgIC8vIElmIHRoZXJlIHdhcyBhbiBIVFRQIHByb3h5IGhvc3Qgc2V0dGluZywgdGhlbiBnZXQgdGhlIHBvcnQKLSAgICBpZiAodGhpcy5odHRwUHJveHlIb3N0ICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIHBvcnRTdHJpbmcgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImh0dHAucHJveHlQb3J0Iik7Ci0KLSAgICAgIC8vIFNldCBkZWZhdWx0IHRvIDgwCi0gICAgICBpZiAocG9ydFN0cmluZyA9PSBudWxsIHx8IHBvcnRTdHJpbmcuZXF1YWxzKCIiKSkKLSAgICAgICAgdGhpcy5odHRwUHJveHlQb3J0ID0gODA7Ci0gICAgICBlbHNlCi0gICAgICAgIGh0dHBQcm94eVBvcnQgPSBJbnRlZ2VyLnBhcnNlSW50KHBvcnRTdHJpbmcpOwotICAgIH0KLSAgfQotCi0gIE1vbml0b3IgZ2V0TW9uaXRvcigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5tb25pdG9yOwotICB9Ci0KLSAgc3luY2hyb25pemVkIHZvaWQgd2FrZVVwKCkKLSAgewotICAgIGZpcmVDb25uZWN0aW9uQ2xvc2VkKCk7IC8vIFNTCi0gICAgbm90aWZ5QWxsKCk7Ci0gIH0KLQotICAvKioKLSAgICogU2h1dGRvd24uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzaHV0ZG93bigpCi0gIHsKLSAgICBpZiAodGhpcy5yZXF1ZXN0U29ja2V0SGFuZGxlciAhPSBudWxsKQotICAgICAgdGhpcy5yZXF1ZXN0U29ja2V0SGFuZGxlci5zaHV0ZG93bigpOwotICAgIGlmICh0aGlzLnJlc3BvbnNlU29ja2V0SGFuZGxlciAhPSBudWxsKQotICAgICAgdGhpcy5yZXNwb25zZVNvY2tldEhhbmRsZXIuc2h1dGRvd24oKTsKLSAgfQotCi0gIC8vID09PT0gU1Mgc3RhcnQgPT09PQotICAvKioKLSAgICogQWRkIGNvbm5lY3Rpb24gZXZlbnQgbGlzdGVuZXIuCi0gICAqIEBwYXJhbSBsaXN0ZW5lciBldmVudCBsaXN0ZW5lci4KLSAgICogQHNlZSAjcmVtb3ZlQ29ubmVjdGlvbkxpc3RlbmVyCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRDb25uZWN0aW9uTGlzdGVuZXIoQ29ubmVjdGlvbkxpc3RlbmVyIGxpc3RlbmVyKQotICB7Ci0gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7Ci0gIH0KLSAgLyoqCi0gICAqIFJlbW92ZSBjb25uZWN0aW9uIGV2ZW50IGxpc3RlbmVyLgotICAgKiBAcGFyYW0gbGlzdGVuZXIgZXZlbnQgbGlzdGVuZXIuCi0gICAqIEBzZWUgI2FkZENvbm5lY3Rpb25MaXN0ZW5lcgotICAgKi8KLSAgcHVibGljIHZvaWQgcmVtb3ZlQ29ubmVjdGlvbkxpc3RlbmVyKENvbm5lY3Rpb25MaXN0ZW5lciBsaXN0ZW5lcikKLSAgewotICAgIGxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwotICB9Ci0gIC8qKgotICAgKiBOb3RpZnkgbGlzdGVuZXJzIG9uIGNvbm5lY3Rpb24gY2xvc2UuCi0gICAqLwotICBwcml2YXRlIHZvaWQgZmlyZUNvbm5lY3Rpb25DbG9zZWQoKQotICB7Ci0gICAgZm9yIChJdGVyYXRvciBpID0gbGlzdGVuZXJzLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykKLSAgICB7Ci0gICAgICBDb25uZWN0aW9uTGlzdGVuZXIgbGlzdGVuZXIgPSAoQ29ubmVjdGlvbkxpc3RlbmVyKSBpLm5leHQoKTsKLSAgICAgIGxpc3RlbmVyLmNvbm5lY3Rpb25DbG9zZWQodGhpcyk7Ci0gICAgfQotICB9Ci0gIC8vID09PT0gU1MgZW5kID09PT0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvU29ja2V0SGFuZGxlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9Tb2NrZXRIYW5kbGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMzhhMjYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9Tb2NrZXRIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzIElCTSBDb3Jwb3JhdGlvbiwgQmVhY29uIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgSW5jLiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNICAgICAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqICAgQmVhY29uSVQgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvcjsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkludGVycnVwdGVkSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlNvY2tldDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5VdGlsczsKLQotLyoqCi0gKiBTb2NrZXQgSGFuZGxlci4KLSAqIAotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGNsYXNzIFNvY2tldEhhbmRsZXIgZXh0ZW5kcyBUaHJlYWQKLXsKLSAgcHJvdGVjdGVkIFNvY2tldENvbm5lY3Rpb24gc29ja2V0Q29ubmVjdGlvbjsKLSAgcHJvdGVjdGVkIFNvY2tldEhhbmRsZXIgcGFpcmVkU29ja2V0SGFuZGxlcjsKLSAgcHJvdGVjdGVkIFN0cmluZyBjb25uZWN0aW9uVHlwZTsKLSAgcHJvdGVjdGVkIGludCBjb252ZXJzYXRpb25JRDsKLSAgcHJvdGVjdGVkIFN0cmluZyB0YXJnZXRIb3N0OwotICBwcm90ZWN0ZWQgaW50IHJlYWRUaW1lb3V0U2Vjb25kczsKLQotICBwcm90ZWN0ZWQgU29ja2V0IGluU29ja2V0OwotICBwcm90ZWN0ZWQgU29ja2V0IG91dFNvY2tldDsKLSAgcHJvdGVjdGVkIElucHV0U3RyZWFtIGlucHV0U3RyZWFtID0gbnVsbDsKLSAgcHJvdGVjdGVkIE91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0gPSBudWxsOwotCi0gIHByb3RlY3RlZCBib29sZWFuIHZlcmJvc2UgPSBmYWxzZTsKLQotICBwcm90ZWN0ZWQgYm9vbGVhbiByZWFkVGltZWRPdXQgPSBmYWxzZTsKLQotICAvLyBJMThOOiAyMDAzLjAyLjI2IG1vZGlmaWVkIGJ5IEsuTmFrYWdvbWVAQmVhY29uSVQKLSAgcHJpdmF0ZSBTdHJpbmcgbWltZUNoYXJzZXQgPSBudWxsOwotICBwcml2YXRlIFN0cmluZyB4bWxFbmNvZGluZyA9IG51bGw7Ci0KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ1JMRiA9ICJcclxuIjsKLQotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBIVFRQXzEwMF9DT05USU5VRSA9Ci0gICAgIjEwMCBDb250aW51ZSIudG9VcHBlckNhc2UoKTsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0hVTktFRCA9Ci0gICAgIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIi50b1VwcGVyQ2FzZSgpOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBDSFVOS0VEX1dJVEhfUVVPVEVTID0KLSAgICAiVHJhbnNmZXItRW5jb2Rpbmc6IFwiY2h1bmtlZFwiIi50b1VwcGVyQ2FzZSgpOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBDT05URU5UX0xFTkdUSCA9Ci0gICAgIkNvbnRlbnQtTGVuZ3RoOiIudG9VcHBlckNhc2UoKTsKLQotICAvKioKLSAgICogQ3JlYXRlIHNvY2tldCBoYW5kbGVyLgotICAgKiBAcGFyYW0gc29ja2V0Q29ubmVjdGlvbiAgIHNvY2tldCBjb25uZWN0aW9uLgotICAgKiBAcGFyYW0gY29ubmVjdGlvblR5cGUgICAgIGNvbm5lY3Rpb24gdHlwZS4KLSAgICogQHBhcmFtIGNvbnZlcnNhdGlvbklEICAgICBjb252ZXJzYXRpb24gaWQuCi0gICAqIEBwYXJhbSB0YXJnZXRIb3N0ICAgICAgICAgdGFyZ2V0IGhvc3QuCi0gICAqIEBwYXJhbSBpblNvY2tldCAgICAgICAgICAgaW4gc29ja2V0LgotICAgKiBAcGFyYW0gb3V0U29ja2V0ICAgICAgICAgIG91dCBzb2NrZXQuCi0gICAqIEBwYXJhbSByZWFkVGltZW91dFNlY29uZHMgcmVhZCB0aW1lb3V0IHNlY29uZHMuCi0gICAqLwotICBwdWJsaWMgU29ja2V0SGFuZGxlcigKLSAgICBTb2NrZXRDb25uZWN0aW9uIHNvY2tldENvbm5lY3Rpb24sCi0gICAgU3RyaW5nIGNvbm5lY3Rpb25UeXBlLAotICAgIGludCBjb252ZXJzYXRpb25JRCwKLSAgICBTdHJpbmcgdGFyZ2V0SG9zdCwKLSAgICBTb2NrZXQgaW5Tb2NrZXQsCi0gICAgU29ja2V0IG91dFNvY2tldCwKLSAgICBpbnQgcmVhZFRpbWVvdXRTZWNvbmRzKQotICB7Ci0gICAgdGhpcy5zb2NrZXRDb25uZWN0aW9uID0gc29ja2V0Q29ubmVjdGlvbjsKLSAgICB0aGlzLmNvbm5lY3Rpb25UeXBlID0gY29ubmVjdGlvblR5cGU7Ci0gICAgdGhpcy5jb252ZXJzYXRpb25JRCA9IGNvbnZlcnNhdGlvbklEOwotICAgIHRoaXMudGFyZ2V0SG9zdCA9IHRhcmdldEhvc3Q7Ci0gICAgdGhpcy5pblNvY2tldCA9IGluU29ja2V0OwotICAgIHRoaXMub3V0U29ja2V0ID0gb3V0U29ja2V0OwotICAgIHRoaXMucmVhZFRpbWVvdXRTZWNvbmRzID0gcmVhZFRpbWVvdXRTZWNvbmRzOwotCi0gICAgLy8gQUREOgotICAgIHZlcmJvc2UgPQotICAgICAgc29ja2V0Q29ubmVjdGlvbi5nZXRNb25pdG9yKCkuZ2V0TW9uaXRvckNvbmZpZygpLmdldFZlcmJvc2VPcHRpb24oKTsKLQotICAgIHN0YXJ0KCk7Ci0gIH0KLQotICAvKioKLSAgICogU2V0IHBhaXJlZCBzb2NrZXQgaGFuZGxlci4KLSAgICogQHBhcmFtIHBhaXJlZFNvY2tldEhhbmRsZXIgcGFpcmVkIHNvY2tldCBoYW5kbGVyLgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UGFpcmVkU29ja2V0SGFuZGxlcihTb2NrZXRIYW5kbGVyIHBhaXJlZFNvY2tldEhhbmRsZXIpCi0gIHsKLSAgICB0aGlzLnBhaXJlZFNvY2tldEhhbmRsZXIgPSBwYWlyZWRTb2NrZXRIYW5kbGVyOwotICB9Ci0KLSAgLyoqCi0gICAqIFNlbmQgdGhlIGRhdGEgZnJvbSB0aGUgaW5wdXQgc29ja2V0IHRvIHRoZSBvdXRwdXQgc29ja2V0LgotICAgKi8KLSAgcHVibGljIHZvaWQgcnVuKCkKLSAgewotICAgIGludCByZWFkTGVuOwotICAgIFN0cmluZyByZWFkTXNnOwotICAgIE1lc3NhZ2VDb250ZXh0IG1lc3NhZ2VDb250ZXh0ID0gbnVsbDsKLQotICAgIC8vIENyZWF0ZSByZWFkIGJ1ZmZlciAgICAgIAotICAgIGJ5dGVbXSByZWFkQnVmZmVyID0gbmV3IGJ5dGVbNDA5Nl07Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBHZXQgdGhlIGlucHV0IGFuZCBvdXRwdXQgc3RyZWFtcwotICAgICAgdGhpcy5pbnB1dFN0cmVhbSA9IHRoaXMuaW5Tb2NrZXQuZ2V0SW5wdXRTdHJlYW0oKTsKLSAgICAgIHRoaXMub3V0cHV0U3RyZWFtID0gdGhpcy5vdXRTb2NrZXQuZ2V0T3V0cHV0U3RyZWFtKCk7Ci0KLSAgICAgIC8vIFByb2Nlc3Mgd2hpbGUgdGhlIGNvbm5lY3Rpb24gaXMgYWN0aXZlIAotICAgICAgLy8gKE5PVEU6IHRoZXJlIG1pZ2h0IGJlIG1vcmUgdGhhbiAxIG1lc3NhZ2UgcGVyIGNvbm5lY3Rpb24pCi0gICAgICBib29sZWFuIGNvbm5lY3Rpb25BY3RpdmUgPSB0cnVlOwotICAgICAgd2hpbGUgKGNvbm5lY3Rpb25BY3RpdmUpCi0gICAgICB7Ci0gICAgICAgIC8vIFJlc2V0IGFsbCBkYXRhCi0gICAgICAgIHJlYWRMZW4gPSAwOwotICAgICAgICBtZXNzYWdlQ29udGV4dCA9IG5ldyBNZXNzYWdlQ29udGV4dCgpOwotCi0gICAgICAgIC8vIFJlYWQgdW50aWwgbWVzc2FnZSBpcyBjb21wbGV0ZQotICAgICAgICBib29sZWFuIG1lc3NhZ2VDb21wbGV0ZSA9IGZhbHNlOwotICAgICAgICB3aGlsZSAoIW1lc3NhZ2VDb21wbGV0ZSkKLSAgICAgICAgewotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIERFQlVHOgotICAgICAgICAgICAgZGVidWcoInJ1biIsICJSZWFkIGRhdGEgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLiIpOwotCi0gICAgICAgICAgICAvLyBSZWFkIGRhdGEgZnJvbSB0aGUgaW5wdXQgc3RyZWFtCi0gICAgICAgICAgICByZWFkTGVuID0gaW5wdXRTdHJlYW0ucmVhZChyZWFkQnVmZmVyLCAwLCByZWFkQnVmZmVyLmxlbmd0aCk7Ci0KLSAgICAgICAgICAgIC8vIFJlc2V0IHJlYWQgdGltZW91dCBmbGFnCi0gICAgICAgICAgICByZWFkVGltZWRPdXQgPSBmYWxzZTsKLQotICAgICAgICAgICAgLy8gREVCVUc6Ci0gICAgICAgICAgICBkZWJ1ZygicnVuIiwgInJlYWRMZW46ICIgKyByZWFkTGVuKTsKLQotICAgICAgICAgICAgaWYgKHJlYWRMZW4gPT0gLTEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbm5lY3Rpb25BY3RpdmUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgbWVzc2FnZUNvbXBsZXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSWYgZGF0YSB3YXMgcmVhZCwgdGhlbiBjaGVjayBmb3IgMTAwIGNvbnRpbnVlCi0gICAgICAgICAgICBlbHNlIGlmIChyZWFkTGVuID4gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgZGF0YSB0aGF0IHdhcyByZWFkLCB0aGVuIGdldCB0aGUgdGltZXN0YW1wCi0gICAgICAgICAgICAgIGlmIChtZXNzYWdlQ29udGV4dC50aW1lc3RhbXAgPT0gbnVsbCkKLSAgICAgICAgICAgICAgICBtZXNzYWdlQ29udGV4dC50aW1lc3RhbXAgPSBVdGlscy5nZXRUaW1lc3RhbXAoKTsKLQotICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblR5cGUuZXF1YWxzKE1lc3NhZ2VFbnRyeS5UWVBFX1JFUVVFU1QpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnl0ZVtdIHRvSG9zdCA9Ci0gICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICBzb2NrZXRDb25uZWN0aW9uLnJlZGlyZWN0LmdldFRvSG9zdCgpCi0gICAgICAgICAgICAgICAgICAgICAgKyAiOiIKLSAgICAgICAgICAgICAgICAgICAgICArIHNvY2tldENvbm5lY3Rpb24ucmVkaXJlY3QuZ2V0VG9Qb3J0KCkpCi0gICAgICAgICAgICAgICAgICAgIC5nZXRCeXRlcygpOwotCi0gICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBuZXcgU3RyaW5nKHJlYWRCdWZmZXIsIDAsIHJlYWRMZW4pOwotCi0gICAgICAgICAgICAgICAgaW50IGluZGV4ID0gbWVzc2FnZS5pbmRleE9mKENSTEYgKyAiSG9zdDogIik7Ci0gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgaW5kZXggKz0gODsKLSAgICAgICAgICAgICAgICAgIGludCBzZWNvbmRQYXJ0ID0gbWVzc2FnZS5pbmRleE9mKENSTEYsIGluZGV4KTsKLQotICAgICAgICAgICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZW4gZ28gZm9ybWF0IGl0Ci0gICAgICAgICAgICAgICAgICB3cml0ZSh0aGlzLm91dHB1dFN0cmVhbSwgcmVhZEJ1ZmZlciwgMCwgaW5kZXgpOwotICAgICAgICAgICAgICAgICAgd3JpdGUodGhpcy5vdXRwdXRTdHJlYW0sIHRvSG9zdCwgMCwgdG9Ib3N0Lmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICB3cml0ZSgKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRTdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgIHJlYWRCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgIHNlY29uZFBhcnQsCi0gICAgICAgICAgICAgICAgICAgIHJlYWRMZW4gLSBzZWNvbmRQYXJ0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCB0aGVuIGdvIGZvcm1hdCBpdAotICAgICAgICAgICAgICAgICAgd3JpdGUodGhpcy5vdXRwdXRTdHJlYW0sIHJlYWRCdWZmZXIsIDAsIHJlYWRMZW4pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlbiBnbyBmb3JtYXQgaXQKLSAgICAgICAgICAgICAgICB3cml0ZSh0aGlzLm91dHB1dFN0cmVhbSwgcmVhZEJ1ZmZlciwgMCwgcmVhZExlbik7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAvLyBERUJVRzoKLSAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgYnVmZmVyU3RyaW5nID0gbmV3IFN0cmluZyhyZWFkQnVmZmVyLCAwLCByZWFkTGVuKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygicnVuIiwgImJ1ZmZlciBhcyBzdHJpbmc6IFsiICsgYnVmZmVyU3RyaW5nICsgIl0iKTsKLSAgICAgICAgICAgICAgICBpZiAoYnVmZmVyU3RyaW5nLmxlbmd0aCgpIDw9IDUwKQotICAgICAgICAgICAgICAgICAgZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICJydW4iLAotICAgICAgICAgICAgICAgICAgICAiYnVmZmVyIGFzIGhleHN0cmluZzogWyIKLSAgICAgICAgICAgICAgICAgICAgICArIFV0aWxzLnRvSGV4U3RyaW5nKGJ1ZmZlclN0cmluZykKLSAgICAgICAgICAgICAgICAgICAgICArICJdIik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICJydW4iLAotICAgICAgICAgICAgICAgICAgICAiYnVmZmVyIGFzIGhleHN0cmluZzogWyIKLSAgICAgICAgICAgICAgICAgICAgICArIFV0aWxzLnRvSGV4U3RyaW5nKGJ1ZmZlclN0cmluZy5zdWJzdHJpbmcoMCwgNTApKQotICAgICAgICAgICAgICAgICAgICAgICsgIiAuLi5dIik7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAvLyBTZWUgaWYgdGhpcyBwYXJ0IG9mIHRoZSBidWZmZXIgY29udGFpbnMgdGhlIEJPTQotICAgICAgICAgICAgICBpZiAobWVzc2FnZUNvbnRleHQuYm9tID09IDApCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtZXNzYWdlQ29udGV4dC5ib20gPSBnZXRCT00ocmVhZEJ1ZmZlcik7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAvLyBERUJVRwotICAgICAgICAgICAgICBkZWJ1ZygicnVuIiwgImJvbTogIiArIG1lc3NhZ2VDb250ZXh0LmJvbSk7Ci0KLSAgICAgICAgICAgICAgU3RyaW5nIGVuY29kaW5nOwotCi0gICAgICAgICAgICAgIHRyeQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBnZXRFbmNvZGluZygpOwotICAgICAgICAgICAgICAgIHJlYWRNc2cgPQotICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZygKLSAgICAgICAgICAgICAgICAgICAgcmVhZEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgcmVhZExlbiwKLSAgICAgICAgICAgICAgICAgICAgVXRpbHMuZ2V0SmF2YUVuY29kaW5nKGVuY29kaW5nKSk7Ci0gICAgICAgICAgICAgICAgc2V0RW5jb2RpbmcocmVhZE1zZyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbmNvZGluZy5lcXVhbHMoZ2V0RW5jb2RpbmcoKSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBnZXRFbmNvZGluZygpOwotICAgICAgICAgICAgICAgICAgcmVhZE1zZyA9Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgICAgcmVhZEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgIHJlYWRMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgVXRpbHMuZ2V0SmF2YUVuY29kaW5nKGVuY29kaW5nKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gdWVlKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVidWcoInJ1biIsICJFWENFUFRJT04gKDMpOiAiICsgdWVlLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKHVlZS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgIC8vIFNldCBlbmNvZGluZyBpbiB0aGUgbWVzc2FnZSBjb250ZXh0Ci0gICAgICAgICAgICAgIG1lc3NhZ2VDb250ZXh0LmVuY29kaW5nID0gZW5jb2Rpbmc7Ci0KLSAgICAgICAgICAgICAgLy8gREVCVUcKLSAgICAgICAgICAgICAgZGVidWcoInJ1biIsICJlbmNvZGluZzogIiArIG1lc3NhZ2VDb250ZXh0LmVuY29kaW5nKTsKLQotICAgICAgICAgICAgICAvLyBQcm9jZXNzIG1lc3NhZ2UKLSAgICAgICAgICAgICAgbWVzc2FnZUNvbnRleHQgPSBwcm9jZXNzTWVzc2FnZShyZWFkTGVuLCByZWFkTXNnLCBtZXNzYWdlQ29udGV4dCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIElmIG1lc3NhZ2UgaXMgY29tcGxldGUsIHRoZW4gbG9nIGl0IGFuZCByZXNldCBidWZmZXIKLSAgICAgICAgICAgIGlmICgoaXNNZXNzYWdlQ29tcGxldGUobWVzc2FnZUNvbnRleHQpKQotICAgICAgICAgICAgICB8fCAoKHJlYWRMZW4gPT0gLTEpICYmIChtZXNzYWdlQ29udGV4dC5tZXNzYWdlQnVmZmVyLmxlbmd0aCgpID4gMCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBMb2cgbWVzc2FnZQotICAgICAgICAgICAgICBsb2dNZXNzYWdlKG1lc3NhZ2VDb250ZXh0KTsKLQotICAgICAgICAgICAgICAvLyBTZXQgbWVzc2FnZSBjb21wbGV0ZQotICAgICAgICAgICAgICBtZXNzYWdlQ29tcGxldGUgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLQotICAgICAgICAgIGNhdGNoIChJbnRlcnJ1cHRlZElPRXhjZXB0aW9uIGllKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFNldCByZWFkIHRpbWVvdXQgZmxhZwotICAgICAgICAgICAgcmVhZFRpbWVkT3V0ID0gdHJ1ZTsKLQotICAgICAgICAgICAgZGVidWcoInJ1biIsICJJbnRlcnJ1cHRlZElPRXhjZXB0aW9uOiAiICsgaWUudG9TdHJpbmcoKSk7Ci0KLSAgICAgICAgICAgIC8vIElmIHRoZSByZWFkIGlzIG5vdCBkb25lLCB0aGVuIHNodXRkb3duIAotICAgICAgICAgICAgaWYgKHBhaXJlZFNvY2tldEhhbmRsZXIgIT0gbnVsbAotICAgICAgICAgICAgICAmJiBwYWlyZWRTb2NrZXRIYW5kbGVyLmlzUmVhZFdhaXRpbmcoKQotICAgICAgICAgICAgICAmJiBwYWlyZWRTb2NrZXRIYW5kbGVyLmlzUmVhZFRpbWVkT3V0KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vIERFQlVHOgotICAgICAgICAgICAgICBkZWJ1ZygicnVuIiwgInJlYWQgdGltZWQgb3V0IG9uIGJvdGggc29ja2V0cyIpOwotCi0gICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGRhdGEgaW4gdGhlIG1lc3NhZ2UgYnVmZmVyIGFuZCBpdCBpcyBjb21wbGV0ZSwgdGhlbiBsb2cgaXQKLSAgICAgICAgICAgICAgaWYgKChpc01lc3NhZ2VDb21wbGV0ZShtZXNzYWdlQ29udGV4dCkpCi0gICAgICAgICAgICAgICAgfHwgKG1lc3NhZ2VDb250ZXh0Lm1lc3NhZ2VCdWZmZXIubGVuZ3RoKCkgPiAwKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIExvZyBtZXNzYWdlCi0gICAgICAgICAgICAgICAgbG9nTWVzc2FnZShtZXNzYWdlQ29udGV4dCk7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAvLyBTZXQgbWVzc2FnZSBjb21wbGV0ZQotICAgICAgICAgICAgICBjb25uZWN0aW9uQWN0aXZlID0gZmFsc2U7Ci0gICAgICAgICAgICAgIG1lc3NhZ2VDb21wbGV0ZSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlMikKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBERUJVRzoKLSAgICAgICAgICAgIGRlYnVnKAotICAgICAgICAgICAgICAicnVuIiwKLSAgICAgICAgICAgICAgIkVYQ0VQVElPTiAoMik6ICIKLSAgICAgICAgICAgICAgICArIGUyLnRvU3RyaW5nKCkKLSAgICAgICAgICAgICAgICArICJcbiIKLSAgICAgICAgICAgICAgICArIFV0aWxzLmdldEV4Y2VwdGlvbkRldGFpbHMoZTIpKTsKLSAgICAgICAgICAgIC8vZTIucHJpbnRTdGFja1RyYWNlKCk7Ci0KLSAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGRhdGEgaW4gdGhlIG1lc3NhZ2UgYnVmZmVyIGFuZCBpdCBpcyBjb21wbGV0ZSwgdGhlbiBsb2cgaXQKLSAgICAgICAgICAgIGlmICgoaXNNZXNzYWdlQ29tcGxldGUobWVzc2FnZUNvbnRleHQpKQotICAgICAgICAgICAgICB8fCAobWVzc2FnZUNvbnRleHQubWVzc2FnZUJ1ZmZlci5sZW5ndGgoKSA+IDApKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBMb2cgbWVzc2FnZQotICAgICAgICAgICAgICBsb2dNZXNzYWdlKG1lc3NhZ2VDb250ZXh0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU2V0IG1lc3NhZ2UgY29tcGxldGUKLSAgICAgICAgICAgIGNvbm5lY3Rpb25BY3RpdmUgPSBmYWxzZTsKLSAgICAgICAgICAgIG1lc3NhZ2VDb21wbGV0ZSA9IHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIERFQlVHOgotICAgICAgZGVidWcoCi0gICAgICAgICJydW4iLAotICAgICAgICAiRVhDRVBUSU9OICgxKTogIgotICAgICAgICAgICsgZS5nZXRNZXNzYWdlKCkKLSAgICAgICAgICArICJcbiIKLSAgICAgICAgICArIFV0aWxzLmdldEV4Y2VwdGlvbkRldGFpbHMoZSkpOwotICAgICAgLy9lLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLQotICAgIGNhdGNoIChFcnJvciBlcnIpCi0gICAgewotICAgICAgLy8gREVCVUc6Ci0gICAgICBkZWJ1ZygicnVuIiwgIkVSUk9SOiAiICsgZXJyLmdldE1lc3NhZ2UoKSk7Ci0gICAgICAvL2Vyci5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0KLSAgICBmaW5hbGx5Ci0gICAgewotICAgICAgc2h1dGRvd24oKTsKLSAgICAgIHNvY2tldENvbm5lY3Rpb24ud2FrZVVwKCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgdGhlIG1lc3NhZ2UuCi0gICAqLwotICBwcml2YXRlIE1lc3NhZ2VDb250ZXh0IHByb2Nlc3NNZXNzYWdlKAotICAgIGludCByZWFkTGVuLAotICAgIFN0cmluZyByZWFkTXNnLAotICAgIE1lc3NhZ2VDb250ZXh0IGluTWVzc2FnZUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgYm9vbGVhbiBjb250aW51ZVJlYWQgPSBmYWxzZTsKLQotICAgIC8vIEluaXRpYWxpemUgbWVzc2FnZSBjb250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgTWVzc2FnZUNvbnRleHQgbWVzc2FnZUNvbnRleHQgPSBpbk1lc3NhZ2VDb250ZXh0OwotCi0gICAgLy8gR2V0IG1lc3NhZ2UgYnVmZmVyIGFuZCBjaHVua2VkIGRhdGEgZnJvbSBtZXNzYWdlIGNvbnRleHQKLSAgICBTdHJpbmdCdWZmZXIgbWVzc2FnZUJ1ZmZlciA9IG1lc3NhZ2VDb250ZXh0Lm1lc3NhZ2VCdWZmZXI7Ci0gICAgQ2h1bmtlZERhdGEgY2h1bmtlZERhdGEgPSBtZXNzYWdlQ29udGV4dC5jaHVua2VkRGF0YTsKLQotICAgIC8vIElmIGFsbCB3ZSByZWNlaXZlZCB3YXMgdGhlIGhlYWRlciB3aXRoIDEwMCBjb250aW51ZSwgdGhlbiBpZ25vcmUgaXQKLSAgICBpZiAoKHJlYWRNc2cudG9VcHBlckNhc2UoKS5pbmRleE9mKEhUVFBfMTAwX0NPTlRJTlVFKSAhPSAtMSkKLSAgICAgICYmIChyZWFkTGVuID49IDI1KSkKLSAgICB7Ci0gICAgICAvLyBERUJVRzoKLSAgICAgIGRlYnVnKCJwcm9jZXNzTWVzc2FnZSIsICJJZ25vcmUgSFRUUCAxMDAgQ29udGludWUuIik7Ci0KLSAgICAgIC8vIEZpbmQgdGhlIGVuZCBvZiB0aGUgSFRUUCAxMDAgbWVzc2FnZQotICAgICAgaW50IGluZGV4ID0gVXRpbHMuZ2V0Rmlyc3RDUkxGQ1JMRihyZWFkTXNnKTsKLQotICAgICAgLy8gSWYgdGhlcmUgaXMgb25seSB0aGUgSFRUUCAxMDAgbWVzc2FnZSwgdGhlbiBqdXN0IGlnbm9yZSBpdAotICAgICAgaWYgKGluZGV4ID09IHJlYWRNc2cubGVuZ3RoKCkpCi0gICAgICAgIGNvbnRpbnVlUmVhZCA9IHRydWU7Ci0KLSAgICAgIC8vIE90aGVyd2lzZSByZW1vdmUgdGhlIEhUVFAgMTAwIG1lc3NhZ2UgYW5kIGNvbnRpbnVlCi0gICAgICBlbHNlCi0gICAgICAgIHJlYWRNc2cgPSByZWFkTXNnLnN1YnN0cmluZyhpbmRleCk7Ci0gICAgfQotCi0gICAgLy8gQUREOiBXaGF0IGlmIGEgYnlwYXNzZWQgbWVzc2FnZSBjb250YWlucyBhbm90aGVyIG1lc3NhZ2UgYWZ0ZXIgaXQ/Ci0gICAgaWYgKCFjb250aW51ZVJlYWQgJiYgYnlwYXNzTWVzc2FnZShyZWFkTXNnKSkKLSAgICB7Ci0gICAgICAvLyBERUJVRzoKLSAgICAgIGRlYnVnKAotICAgICAgICAicHJvY2Vzc01lc3NhZ2UiLAotICAgICAgICAiRG8gbm90IGxvZyBtZXNzYWdlIGFzIGRlZmluZWQgaW4gdGhlIG1vbml0b3Igc3BlYywgYnV0IGl0IHdpbGwgYmUgc2VudC4iKTsKLQotICAgICAgY29udGludWVSZWFkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoIWNvbnRpbnVlUmVhZCkKLSAgICB7Ci0gICAgICBpbnQgaW5kZXggPSAwOwotCi0gICAgICAvLyBJZiB0aGVyZSBpcyBjaHVua2VkIGRhdGEsIHRoZW4gZ2V0IHRoZSBsZW5ndGgKLSAgICAgIGlmICgocmVhZE1zZy50b1VwcGVyQ2FzZSgpLmluZGV4T2YoQ0hVTktFRCkgIT0gLTEpCi0gICAgICAgIHx8IChyZWFkTXNnLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihDSFVOS0VEX1dJVEhfUVVPVEVTKSAhPSAtMSkpCi0gICAgICB7Ci0gICAgICAgIC8vIERFQlVHOgotICAgICAgICBkZWJ1ZygicHJvY2Vzc01lc3NhZ2UiLCAiUHJvY2Vzc2luZyBjaHVua2VkIGRhdGEuLi4iKTsKLQotICAgICAgICAvLyBHZXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBDRkxGCi0gICAgICAgIGlmICgoaW5kZXggPSByZWFkTXNnLmluZGV4T2YoQ1JMRiArIENSTEYpKSA9PSAtMSkKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oIkNvdWxkIG5vdCBsb2NhdGUgZW5kIG9mIEhUVFAgaGVhZGVyLiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSW5jbHVkZSB0aGUgQ1JMRitDUkxGIGluIHRoZSBpbmRleAotICAgICAgICBpbmRleCArPSA0OwotCi0gICAgICAgIC8vIERFQlVHOgotICAgICAgICBkZWJ1ZygKLSAgICAgICAgICAicHJvY2Vzc01lc3NhZ2UiLAotICAgICAgICAgICJBZGQgaGVhZGVyIGJlZm9yZSBkZWNvZGluZyBjaHVua2VkIGRhdGE6IFsiCi0gICAgICAgICAgICArIHJlYWRNc2cuc3Vic3RyaW5nKDAsIGluZGV4KQotICAgICAgICAgICAgKyAiXSIpOwotCi0gICAgICAgIC8vIEFkZCBIVFRQIGhlYWRlciB0byBidWZmZXIKLSAgICAgICAgbWVzc2FnZUJ1ZmZlci5hcHBlbmQocmVhZE1zZy5zdWJzdHJpbmcoMCwgaW5kZXgpKTsKLQotICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBtb3JlIGRhdGEgKGkuZS4gaGVhZGVyIG9ubHkpLCB0aGVuIGp1c3QgaW5kaWNhdGUgdGhhdCB0aGVyZSBpcyBtb3JlIGNodW5rZWQgZGF0YQotICAgICAgICBpZiAocmVhZE1zZy5sZW5ndGgoKSA9PSBpbmRleCkKLSAgICAgICAgewotICAgICAgICAgIGNodW5rZWREYXRhID0gbmV3IENodW5rZWREYXRhKHRoaXMsIHRydWUpOwotCi0gICAgICAgICAgLy8gREVCVUc6Ci0gICAgICAgICAgZGVidWcoCi0gICAgICAgICAgICAicHJvY2Vzc01lc3NhZ2UiLAotICAgICAgICAgICAgIlRoZXJlIGlzIGNodW5rIGRhdGEsIGJ1dCBub25lIGluIHRoaXMgcGFydCBvZiB0aGUgbWVzc2FnZS4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgcmVtYWluZGVyIG9mIHRoZSBkYXRhIGlzIGNvbXBsZXRlIChpLmUuIGVuZHMgd2l0aCBbMF1bQ1JMRl1bT3B0aW9uYWwgRm9vdGVyXVtDUkxGXSkKLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy8gQ3JlYXRlIGNodW5rZWQgZGF0YSBvYmplY3QKLSAgICAgICAgICBjaHVua2VkRGF0YSA9IG5ldyBDaHVua2VkRGF0YSh0aGlzLCByZWFkTXNnLnN1YnN0cmluZyhpbmRleCkpOwotCi0gICAgICAgICAgaWYgKCFjaHVua2VkRGF0YS5pc01vcmVDaHVua2VkRGF0YSgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNodW5rZWREYXRhLmRlY29kZUFuZEFkZERhdGFUb0J1ZmZlcihtZXNzYWdlQnVmZmVyKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgZWxzZSBpZiAoY2h1bmtlZERhdGEgIT0gbnVsbCAmJiBjaHVua2VkRGF0YS5pc01vcmVDaHVua2VkRGF0YSgpKQotICAgICAgewotICAgICAgICAvLyBERUJVRzoKLSAgICAgICAgZGVidWcoInByb2Nlc3NNZXNzYWdlIiwgIlByb2Nlc3NpbmcgTU9SRSBjaHVua2VkIGRhdGEuLi4iKTsKLQotICAgICAgICAvLyBBZGQgZGF0YQotICAgICAgICBjaHVua2VkRGF0YS5hZGREYXRhKHJlYWRNc2cpOwotCi0gICAgICAgIC8vIERlY29kZSBkYXRhCi0gICAgICAgIGlmICghY2h1bmtlZERhdGEuaXNNb3JlQ2h1bmtlZERhdGEoKSkKLSAgICAgICAgewotICAgICAgICAgIGNodW5rZWREYXRhLmRlY29kZUFuZEFkZERhdGFUb0J1ZmZlcihtZXNzYWdlQnVmZmVyKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyBFbHNlIGp1c3QgYXBwZW5kIHRoZSBkYXRhIHRvIHRoZSBidWZmZXIKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gREVCVUc6Ci0gICAgICAgIGRlYnVnKAotICAgICAgICAgICJwcm9jZXNzTWVzc2FnZSIsCi0gICAgICAgICAgIkFkZCBkYXRhIHRvIG1lc3NhZ2UgZW50cnkgYnVmZmVyOiBbIiArIHJlYWRNc2cgKyAiXSIpOwotCi0gICAgICAgIG1lc3NhZ2VCdWZmZXIuYXBwZW5kKHJlYWRNc2cpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIFNldCB1cGRhdGVkIG1lc3NhZ2UgYnVmZmVyIGFuZCBjaHVua2VkIGRhdGEgaW4gbWVzc2FnZSBjb250ZXh0ICAgIAotICAgIG1lc3NhZ2VDb250ZXh0Lm1lc3NhZ2VCdWZmZXIgPSBtZXNzYWdlQnVmZmVyOwotICAgIG1lc3NhZ2VDb250ZXh0LmNodW5rZWREYXRhID0gY2h1bmtlZERhdGE7Ci0KLSAgICAvLyBSZXR1cm4gbWVzc2FnZSBjb250ZXh0IAotICAgIHJldHVybiBtZXNzYWdlQ29udGV4dDsKLSAgfQotCi0gIC8qKgotICAgKiBTaHV0ZG93biBpbnB1dCBzb2NrZXQgYW5kIGNsb3NlIGlucHV0IHN0cmVhbS4KLSAgICogQHBhcmFtIGluU29ja2V0IGluIHNvY2tldC4KLSAgICogQHBhcmFtIGlucHV0U3RyZWFtIGlucHV0IHN0cmVhbS4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHN0b3BJbnB1dChTb2NrZXQgaW5Tb2NrZXQsIElucHV0U3RyZWFtIGlucHV0U3RyZWFtKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gSWYgdGhlcmUgaXMgYSBpbnB1dCBzb2NrZXQsIHRoZW4gc2h1dGRvd24gdGhlIGlucHV0Ci0gICAgICBpZiAoaW5Tb2NrZXQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaW5Tb2NrZXQuc2h1dGRvd25JbnB1dCgpOwotICAgICAgfQotCi0gICAgICAvLyBJZiB0aGVyZSBpcyBhbiBpbnB1dCBzdHJlYW0gdGhlbiBjbG9zZSBpdAotICAgICAgaWYgKGlucHV0U3RyZWFtICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGlucHV0U3RyZWFtLmNsb3NlKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBJZ25vcmUgc2luY2Ugd2UgYXJlIHN0b3BwaW5nIGV2ZXJ5dGhpbmcKLSAgICB9Ci0KLSAgICBpbnB1dFN0cmVhbSA9IG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogU2h1dGRvd24gb3V0cHV0IHNvY2tldCBhbmQgY2xvc2Ugb3V0cHV0IHN0cmVhbS4KLSAgICogQHBhcmFtIG91dFNvY2tldCBvdXQgc29ja2V0LgotICAgKiBAcGFyYW0gb3V0cHV0U3RyZWFtIG91dHB1dCBzdHJlYW0uCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzdG9wT3V0cHV0KFNvY2tldCBvdXRTb2NrZXQsIE91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0pCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBJZiB0aGVyZSBpcyBhbiBvdXRwdXQgc3RyZWFtLCB0aGVuIGZsdXNoIGl0Ci0gICAgICBpZiAob3V0cHV0U3RyZWFtICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIG91dHB1dFN0cmVhbS5mbHVzaCgpOwotICAgICAgfQotCi0gICAgICAvLyBJZiB0aGVyZSBpcyBhIGlucHV0IHNvY2tldCwgdGhlbiBzaHV0ZG93biB0aGUgaW5wdXQKLSAgICAgIGlmIChvdXRTb2NrZXQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgb3V0U29ja2V0LnNodXRkb3duT3V0cHV0KCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIGFuIG91dHB1dCBzdHJlYW0gdGhlbiBjbG9zZSBpdAotICAgICAgaWYgKG91dHB1dFN0cmVhbSAhPSBudWxsKQotICAgICAgewotICAgICAgICBvdXRwdXRTdHJlYW0uY2xvc2UoKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gSWdub3JlIHNpbmNlIHdlIGFyZSBzdG9wcGluZyBldmVyeXRoaW5nCi0gICAgfQotCi0gICAgb3V0cHV0U3RyZWFtID0gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBTaHV0ZG93biBoYW5kbGVyLgotICAgKi8KLSAgcHVibGljIHZvaWQgc2h1dGRvd24oKQotICB7Ci0gICAgLy8gU3RvcCBib3RoIHRoZSBpbnB1dCBhbmQgb3V0cHV0Ci0gICAgc3RvcElucHV0KHRoaXMuaW5Tb2NrZXQsIHRoaXMuaW5wdXRTdHJlYW0pOwotICAgIHN0b3BPdXRwdXQodGhpcy5vdXRTb2NrZXQsIHRoaXMub3V0cHV0U3RyZWFtKTsKLSAgfQotCi0gIC8qKgotICAgKiBEaXNwbGF5IGRlYnVnIG1lc3NhZ2VzLgotICAgKi8KLSAgdm9pZCBkZWJ1ZyhTdHJpbmcgbWV0aG9kLCBTdHJpbmcgbWVzc2FnZSkKLSAgewotICAgIGRlYnVnKCJTb2NrZXRIYW5kbGVyIiwgbWV0aG9kLCBtZXNzYWdlKTsKLSAgfQotCi0gIC8qKgotICAgKiBEaXNwbGF5IGRlYnVnIG1lc3NhZ2VzLgotICAgKi8KLSAgdm9pZCBkZWJ1ZyhTdHJpbmcgY2xhc3NOYW1lLCBTdHJpbmcgbWV0aG9kLCBTdHJpbmcgbWVzc2FnZSkKLSAgewotICAgIGlmICh2ZXJib3NlKQotICAgICAgcHJpbnQoY2xhc3NOYW1lLCBtZXRob2QsIG1lc3NhZ2UpOwotICB9Ci0KLSAgLyoqCi0gICAqIERpc3BsYXkgbWVzc2FnZXMuCi0gICAqLwotICB2b2lkIHByaW50KFN0cmluZyBjbGFzc05hbWUsIFN0cmluZyBtZXRob2QsIFN0cmluZyBtZXNzYWdlKQotICB7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKAotICAgICAgIlsiCi0gICAgICAgICsgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXROYW1lKCkKLSAgICAgICAgKyAiXSBbIgotICAgICAgICArIGNsYXNzTmFtZQotICAgICAgICArICIuIgotICAgICAgICArIG1ldGhvZAotICAgICAgICArICJdIFsiCi0gICAgICAgICsgdGhpcy5jb25uZWN0aW9uVHlwZQotICAgICAgICArICJdICIKLSAgICAgICAgKyBtZXNzYWdlKTsKLSAgfQotCi0gIC8qKiAKLSAgICogV3JpdGUgZGF0YS4KLSAgICovCi0gIHByaXZhdGUgdm9pZCB3cml0ZSgKLSAgICBPdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtLAotICAgIGJ5dGVbXSBidWZmZXIsCi0gICAgaW50IHN0YXJ0LAotICAgIGludCBsZW5ndGgpCi0gICAgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBpZiAob3V0cHV0U3RyZWFtID09IG51bGwpCi0gICAgewotICAgICAgLy8gREVCVUc6Ci0gICAgICBkZWJ1Zygid3JpdGUiLCAiQ291bGQgbm90IHdyaXRlIGJ1ZmZlciBiZWNhdXNlIG91dHB1dCBzdHJlYW0gaXMgbnVsbC4iKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIERFQlVHOgotICAgICAgZGVidWcoIndyaXRlIiwgImJ1ZmZlcjogWyIgKyBuZXcgU3RyaW5nKGJ1ZmZlciwgc3RhcnQsIGxlbmd0aCkgKyAiXSIpOwotCi0gICAgICBvdXRwdXRTdHJlYW0ud3JpdGUoYnVmZmVyLCBzdGFydCwgbGVuZ3RoKTsKLSAgICB9Ci0gIH0KLQotICAvKiogCi0gICAqIENoZWNrIGlmIG1lc3NhZ2UgaXMgY29tcGxldGUuCi0gICAqIAotICAgKiBAcGFyYW0gbWVzc2FnZUNvbnRleHQKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBpc01lc3NhZ2VDb21wbGV0ZShNZXNzYWdlQ29udGV4dCBtZXNzYWdlQ29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBpbnQgaW5kZXgsIGluZGV4MiwgY29udGVudExlbjsKLSAgICBib29sZWFuIG1lc3NhZ2VDb21wbGV0ZSA9IGZhbHNlOwotCi0gICAgYm9vbGVhbiBtb3JlQ2h1bmtlZERhdGEgPSBtZXNzYWdlQ29udGV4dC5jaHVua2VkRGF0YS5pc01vcmVDaHVua2VkRGF0YSgpOwotCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtZXNzYWdlQ29udGV4dC5tZXNzYWdlQnVmZmVyLnRvU3RyaW5nKCk7Ci0KLSAgICAvLyBGaW5kIHRoZSBmaXJzdCBDUkxGICsgQ1JMRiB3aGljaCBtYXJrcyB0aGUgZW5kIG9mIHRoZSBIVFRQIGhlYWRlcgotICAgIFN0cmluZyBodHRwSGVhZGVyOwotICAgIGluZGV4ID0gVXRpbHMuZ2V0Rmlyc3RDUkxGQ1JMRihtZXNzYWdlKTsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICBodHRwSGVhZGVyID0gbWVzc2FnZTsKLSAgICBlbHNlCi0gICAgICBodHRwSGVhZGVyID0gbWVzc2FnZS5zdWJzdHJpbmcoMCwgaW5kZXgpOwotCi0gICAgLy8gSWYgY2h1bmtlZCBkYXRhLCB0aGVuIGNvbXBsZXRlIG9ubHkgaWYgdGhlcmUgaXMgbm8gbW9yZSBkYXRhCi0gICAgaWYgKCgoaHR0cEhlYWRlci50b1VwcGVyQ2FzZSgpLmluZGV4T2YoQ0hVTktFRCkgIT0gLTEpCi0gICAgICB8fCAoaHR0cEhlYWRlci50b1VwcGVyQ2FzZSgpLmluZGV4T2YoQ0hVTktFRF9XSVRIX1FVT1RFUykgIT0gLTEpKQotICAgICAgJiYgKCFtb3JlQ2h1bmtlZERhdGEpKQotICAgIHsKLSAgICAgIGRlYnVnKAotICAgICAgICAiaXNNZXNzYWdlQ29tcGxldGUiLAotICAgICAgICAiSFRUUCBoZWFkZXIgaW5kaWNhdGVzIGNodW5rZWQgZGF0YSBhbmQgdGhlcmUgaXMgbm8gbW9yZSBjaHVua2VkIGRhdGEiKTsKLSAgICAgIG1lc3NhZ2VDb21wbGV0ZSA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgZm9yIGNvbnRlbnQgbGVuZ3RoCi0gICAgZWxzZSBpZiAoKGluZGV4ID0gaHR0cEhlYWRlci50b1VwcGVyQ2FzZSgpLmluZGV4T2YoQ09OVEVOVF9MRU5HVEgpKSA9PSAtMSkKLSAgICB7Ci0gICAgICBkZWJ1ZygiaXNNZXNzYWdlQ29tcGxldGUiLCAiSFRUUCBoZWFkZXIgZG9lcyBub3QgY29udGFpbiBjb250ZW50IGxlbmd0aCIpOwotCi0gICAgICAvLyBTaG91bGQgbm90IGhhdmUgY29tcGxldGUgUE9TVCBoZWFkZXIgd2l0aG91dCBjb250ZW50IGxlbmd0aAotICAgICAgaWYgKGh0dHBIZWFkZXIuc3RhcnRzV2l0aCgiUE9TVCIpKQotICAgICAgewotICAgICAgICBpZiAoaHR0cEhlYWRlci5lbmRzV2l0aChDUkxGICsgQ1JMRikpCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJDb3VsZCBub3QgbG9jYXRlIGNvbnRlbnQtbGVuZ3RoIGluIEhUVFAgUE9TVCBoZWFkZXIuIik7Ci0gICAgICAgIH0KLQotICAgICAgICBtZXNzYWdlQ29tcGxldGUgPSBmYWxzZTsKLSAgICAgIH0KLQotICAgICAgLy8gVGhpcyBjb3VsZCBiZSBhIEdFVCwgc28gc2VlIGlmIHRoZSB0aGUgY29tcGxldGUgaGVhZGVyIGhhcyBiZWVuIHJlY2VpdmVkCi0gICAgICBlbHNlIGlmICgKLSAgICAgICAgaHR0cEhlYWRlci5zdGFydHNXaXRoKCJHRVQiKQotICAgICAgICAgICYmIChtZXNzYWdlLmxlbmd0aCgpID09IGh0dHBIZWFkZXIubGVuZ3RoKCkKLSAgICAgICAgICAgICYmIG1lc3NhZ2UuZW5kc1dpdGgoQ1JMRiArIENSTEYpKSkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZUNvbXBsZXRlID0gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBtZXNzYWdlQ29tcGxldGUgPSBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBJZiB0aGVyZSBpcyBjb250ZW50IGxlbmd0aCwgdGhlbiBzZWUgaWYgdGhlIGVudGlyZSBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkCi0gICAgZWxzZSBpZiAoKGluZGV4ID0gaHR0cEhlYWRlci50b1VwcGVyQ2FzZSgpLmluZGV4T2YoQ09OVEVOVF9MRU5HVEgpKSAhPSAtMSkKLSAgICB7Ci0gICAgICAvLyBGaW5kIGVuZCBvZiBjb250ZW50IGxlbmd0aCB2YWx1ZQotICAgICAgaW5kZXgyID0gaHR0cEhlYWRlci5pbmRleE9mKENSTEYsIGluZGV4KTsKLQotICAgICAgZGVidWcoImlzTWVzc2FnZUNvbXBsZXRlIiwgIkNSTEY6ICIgKyBVdGlscy50b0hleFN0cmluZyhDUkxGKSk7Ci0gICAgICBkZWJ1ZygKLSAgICAgICAgImlzTWVzc2FnZUNvbXBsZXRlIiwKLSAgICAgICAgImh0dHBIZWFkZXIvaW5kZXg6ICIgKyBVdGlscy50b0hleFN0cmluZyhodHRwSGVhZGVyLnN1YnN0cmluZyhpbmRleCkpKTsKLQotICAgICAgLy8gR2V0IGNvbnRlbnQgbGVuZ3RoCi0gICAgICBjb250ZW50TGVuID0KLSAgICAgICAgSW50ZWdlcgotICAgICAgICAgIC5kZWNvZGUoCi0gICAgICAgICAgICBodHRwSGVhZGVyLnN1YnN0cmluZyhpbmRleCArIENPTlRFTlRfTEVOR1RILmxlbmd0aCgpICsgMSwgaW5kZXgyKSkKLSAgICAgICAgICAuaW50VmFsdWUoKTsKLQotICAgICAgLy8gREVCVUc6Ci0gICAgICBkZWJ1ZygiaXNNZXNzYWdlQ29tcGxldGUiLCAiY29udGVudExlbjogIiArIGNvbnRlbnRMZW4pOwotCi0gICAgICAvLyBGaW5kIHRoZSBmaXJzdCBDUkxGICsgQ1JMRiB3aGljaCBtYXJrcyB0aGUgZW5kIG9mIHRoZSBIVFRQIGhlYWRlcgotICAgICAgaW5kZXggPSBVdGlscy5nZXRGaXJzdENSTEZDUkxGKG1lc3NhZ2UpOwotCi0gICAgICAvLyBERUJVRzoKLSAgICAgIGRlYnVnKAotICAgICAgICAiaXNNZXNzYWdlQ29tcGxldGUiLAotICAgICAgICAiYWN0dWFsIHJlY2VpdmVkIG1lc3NhZ2UgbGVuZ3RoOiAiICsgKG1lc3NhZ2UubGVuZ3RoKCkgLSAoaW5kZXgpKSk7Ci0KLSAgICAgIC8vIElmIGNvbnRlbnQgbGVuZ3RoIGlzIGVxdWFsIHRvIGFjdHVhbCBtZXNzYWdlIGNvbnRlbnQgbGVuZ3RoLCB0aGVuIG1lc3NhZ2UgaXMgY29tcGxldGUKLSAgICAgIGlmIChjb250ZW50TGVuID09IG1lc3NhZ2UubGVuZ3RoKCkgLSBpbmRleCkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZUNvbXBsZXRlID0gdHJ1ZTsKLQotICAgICAgICAvLyBERUJVRzoKLSAgICAgICAgZGVidWcoCi0gICAgICAgICAgImlzTWVzc2FnZUNvbXBsZXRlIiwKLSAgICAgICAgICAiY29udGVudExlbiA9IGFjdHVhbCByZWNlaXZlZCBtZXNzYWdlIGxlbmd0aC4iKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBNZXNzYWdlIGlzIG5vdCBjb21wbGV0ZQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBtZXNzYWdlQ29tcGxldGUgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBERUJVRzoKLSAgICBkZWJ1ZygiaXNNZXNzYWdlQ29tcGxldGUiLCAibWVzc2FnZUNvbXBsZXRlOiAiICsgbWVzc2FnZUNvbXBsZXRlKTsKLQotICAgIHJldHVybiBtZXNzYWdlQ29tcGxldGU7Ci0gIH0KLQotICAvKiogCi0gICAqIExvZyBtZXNzYWdlLgotICAgKiAKLSAgICogQHBhcmFtIG1lc3NhZ2VCdWZmZXIKLSAgICovCi0gIHByaXZhdGUgdm9pZCBsb2dNZXNzYWdlKE1lc3NhZ2VDb250ZXh0IG1lc3NhZ2VDb250ZXh0KSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBEZXRlcm1pbmUgc2VuZGVyIGFuZCByZWNlaXZlciBob3N0L3BvcnQKLSAgICBTdHJpbmcgc2VuZGVySG9zdEFuZFBvcnQsIHJlY2VpdmVySG9zdEFuZFBvcnQ7Ci0KLSAgICAvLyBSZXF1ZXN0Ci0gICAgaWYgKGNvbm5lY3Rpb25UeXBlLmVxdWFscyhNZXNzYWdlRW50cnkuVFlQRV9SRVFVRVNUKSkKLSAgICB7Ci0gICAgICBzZW5kZXJIb3N0QW5kUG9ydCA9Ci0gICAgICAgIGluU29ja2V0LmdldEluZXRBZGRyZXNzKCkuZ2V0SG9zdEFkZHJlc3MoKSArICI6IiArIGluU29ja2V0LmdldFBvcnQoKTsKLSAgICAgIHJlY2VpdmVySG9zdEFuZFBvcnQgPSB0YXJnZXRIb3N0ICsgIjoiICsgb3V0U29ja2V0LmdldFBvcnQoKTsKLSAgICB9Ci0KLSAgICAvLyBSZXNwb25zZSAgICAgIAotICAgIGVsc2UKLSAgICB7Ci0gICAgICBzZW5kZXJIb3N0QW5kUG9ydCA9IHRhcmdldEhvc3QgKyAiOiIgKyBpblNvY2tldC5nZXRQb3J0KCk7Ci0gICAgICByZWNlaXZlckhvc3RBbmRQb3J0ID0KLSAgICAgICAgb3V0U29ja2V0LmdldEluZXRBZGRyZXNzKCkuZ2V0SG9zdEFkZHJlc3MoKSArICI6IiArIG91dFNvY2tldC5nZXRQb3J0KCk7Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlIG1lc3NhZ2UgZW50cnkKLSAgICB0aGlzLnNvY2tldENvbm5lY3Rpb24ubG9nTWVzc2FnZSgKLSAgICAgIGNvbnZlcnNhdGlvbklELAotICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSwKLSAgICAgIG1lc3NhZ2VDb250ZXh0LnRpbWVzdGFtcCwKLSAgICAgIHNlbmRlckhvc3RBbmRQb3J0LAotICAgICAgcmVjZWl2ZXJIb3N0QW5kUG9ydCwKLSAgICAgIG1lc3NhZ2VDb250ZXh0Lm1lc3NhZ2VCdWZmZXIsCi0gICAgICBtZXNzYWdlQ29udGV4dC5ib20sCi0gICAgICBtZXNzYWdlQ29udGV4dC5lbmNvZGluZyk7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2sgZm9yIEhUVFAgbWVzc2FnZXMgdGhhdCBzaG91bGQgbm90IGJlIGxvZ2dlZC4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBieXBhc3NNZXNzYWdlKFN0cmluZyBtZXNzYWdlKQotICB7Ci0gICAgYm9vbGVhbiBieXBhc3MgPSBmYWxzZTsKLSAgICBpZiAoKG1lc3NhZ2Uuc3RhcnRzV2l0aCgiQ09OTkVDVCIpKQotICAgICAgfHwgKG1lc3NhZ2Uuc3RhcnRzV2l0aCgiVFJBQ0UiKSkKLSAgICAgIHx8IChtZXNzYWdlLnN0YXJ0c1dpdGgoIkRFTEVURSIpKQotICAgICAgfHwgKG1lc3NhZ2Uuc3RhcnRzV2l0aCgiT1BUSU9OUyIpKQotICAgICAgfHwgKG1lc3NhZ2Uuc3RhcnRzV2l0aCgiSEVBRCIpKSkKLSAgICB7Ci0gICAgICBieXBhc3MgPSB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBieXBhc3M7Ci0gIH0KLQotICAvLyBJMThOOiAyMDAzLjAyLjI2IG1vZGlmaWVkIGJ5IEsuTmFrYWdvbWVAQmVhY29uSVQKLSAgLyoqCi0gICAqIFNldCBFbmNvZGluZyBQYXJhbWV0ZXJzCi0gICAqIEBwYXJhbSBtZXNzYWdlRnJhZ21lbnQgU3RyaW5nIG9mIGEgSFRUUCBtZXNzYWdlIGZyYWdtZW50LgotICAgKiBAYXV0aG9yIEsuTmFrYWdvbWVAQmVhY29uSVQgSmFwYW4gU0lHIAotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHNldEVuY29kaW5nKFN0cmluZyBtZXNzYWdlRnJhZ21lbnQpCi0gIHsKLSAgICBpZiAobWltZUNoYXJzZXQgPT0gbnVsbCB8fCBtaW1lQ2hhcnNldC5sZW5ndGgoKSA9PSAwKQotICAgIHsKLSAgICAgIG1pbWVDaGFyc2V0ID0gVXRpbHMuZ2V0SFRUUENoYXJzZXQobWVzc2FnZUZyYWdtZW50KTsKLSAgICB9Ci0gICAgaWYgKHhtbEVuY29kaW5nID09IG51bGwgfHwgeG1sRW5jb2RpbmcubGVuZ3RoKCkgPT0gMCkKLSAgICB7Ci0gICAgICB4bWxFbmNvZGluZyA9IFV0aWxzLmdldFhNTEVuY29kaW5nKG1lc3NhZ2VGcmFnbWVudCk7Ci0gICAgfQotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIEkxOE46IDIwMDMuMDIuMjYgbW9kaWZpZWQgYnkgSy5OYWthZ29tZUBCZWFjb25JVAotICAvKioKLSAgICogR2V0IEVuY29kaW5nIFBhcmFtZXRlcgotICAgKiBAcmV0dXJuIENoYXJhY3RlciBlbmNvZGluZyBvZiBIVFRQIG1lc3NhZ2UuCi0gICAqIEBhdXRob3IgSy5OYWthZ29tZUBCZWFjb25JVCBKYXBhbiBTSUcgCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBnZXRFbmNvZGluZygpCi0gIHsKLSAgICBTdHJpbmcgZW5jb2RpbmcgPSBXU0lDb25zdGFudHMuREVGQVVMVF9YTUxfRU5DT0RJTkc7Ci0gICAgaWYgKG1pbWVDaGFyc2V0ICE9IG51bGwgJiYgbWltZUNoYXJzZXQubGVuZ3RoKCkgPiAwKQotICAgIHsKLSAgICAgIGVuY29kaW5nID0gbWltZUNoYXJzZXQ7Ci0gICAgfQotICAgIGlmICh4bWxFbmNvZGluZyAhPSBudWxsICYmIHhtbEVuY29kaW5nLmxlbmd0aCgpID4gMCkKLSAgICB7Ci0gICAgICBlbmNvZGluZyA9IHhtbEVuY29kaW5nOwotICAgIH0KLSAgICByZXR1cm4gZW5jb2Rpbmc7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBCeXRlIE9yZGVyIE1hcmsgZnJvbSB0aGUgbWVzc2FnZSAoaWYgdGhlcmUgaXMgb25lKS4KLSAgICovCi0gIHByaXZhdGUgaW50IGdldEJPTShieXRlW10gbWVzc2FnZSkKLSAgewotICAgIGludCBib20gPSAwOwotCi0gICAgYnl0ZSBGRiA9IChieXRlKSAweEZGOwotICAgIGJ5dGUgRkUgPSAoYnl0ZSkgMHhGRTsKLSAgICBieXRlIEVGID0gKGJ5dGUpIDB4RUY7Ci0gICAgYnl0ZSBCQiA9IChieXRlKSAweEJCOwotICAgIGJ5dGUgQkYgPSAoYnl0ZSkgMHhCRjsKLQotICAgIC8vIFNlYXJjaCB0aHJvdWdoIHRoZSBieXRlIGFycmF5IGZvciBDUkxGK0NSTEYuICBUaGlzIHdpbGwgbWFyayB0aGUgZW5kIG9mIHRoZSBoZWFkZXIuCi0gICAgaW50IGkgPSBVdGlscy5nZXRGaXJzdENSTEZDUkxGKG1lc3NhZ2UsIDApOwotICAgIGlmIChpICE9IC0xKQotICAgIHsKLSAgICAgIC8vIERFQlVHOgotICAgICAgZGVidWcoCi0gICAgICAgICJnZXRCT00iLAotICAgICAgICAibWVzc2FnZVtpXTogIgotICAgICAgICAgICsgbWVzc2FnZVtpXQotICAgICAgICAgICsgIiwgbWVzc2FnZVtpKzFdOiAiCi0gICAgICAgICAgKyBtZXNzYWdlW2krMV0pOwotCi0gICAgICAvLyBDaGVjayBmb3IgVVRGLTggQk9NCi0gICAgICBpZiAoKChpICsgMikgPCBtZXNzYWdlLmxlbmd0aCkKLSAgICAgICAgJiYgbWVzc2FnZVtpXSA9PSBFRgotICAgICAgICAmJiBtZXNzYWdlW2krMV0gPT0gQkIKLSAgICAgICAgJiYgbWVzc2FnZVtpKzJdID09IEJGKQotICAgICAgewotICAgICAgICBib20gPSAweEVGQkJCRjsKLSAgICAgIH0KLSAgICAgIC8vIENoZWNrIGZvciBVVEYtMTYgYmlnLWVuZGlhbiBCT00KLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAoKGkrMSkgPCBtZXNzYWdlLmxlbmd0aCkKLSAgICAgICAgICAmJiBtZXNzYWdlW2ldID09IEZFCi0gICAgICAgICAgJiYgbWVzc2FnZVtpICsgMV0gPT0gRkYpCi0gICAgICB7Ci0gICAgICAgIGJvbSA9IDB4RkVGRjsKLSAgICAgIH0KLSAgICAgIC8vIENoZWNrIGZvciBVVEYtMTYgbGl0dGxlLWVuZGlhbiBCT00KLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAoKGkrMSkgPCBtZXNzYWdlLmxlbmd0aCkKLSAgICAgICAgICAmJiBtZXNzYWdlW2ldID09IEZGCi0gICAgICAgICAgJiYgbWVzc2FnZVtpKzFdID09IEZFKQotICAgICAgewotICAgICAgICBib20gPSAweEZGRkU7Ci0gICAgICB9Ci0gICAgICAvLyBBREQ6IERvIHdlIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIEJPTXMKLSAgICB9Ci0gICAgcmV0dXJuIGJvbTsKLSAgfQotCi0gIC8qKgotICAgKiBEZXRlcm1pbmUgaWYgdGhlIHJlYWQgaXMgc3RpbGwgd2FpdGluZyBmb3IgZGF0YS4KLSAgICovCi0gIGJvb2xlYW4gaXNSZWFkV2FpdGluZygpCi0gIHsKLSAgICBib29sZWFuIHJlYWRXYWl0aW5nID0gZmFsc2U7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBERUJVRzoKLSAgICAgIGRlYnVnKAotICAgICAgICAiaXNSZWFkV2FpdGluZyIsCi0gICAgICAgICJpblNvY2tldC5nZXRJbnB1dFN0cmVhbSgpLmF2YWlsYWJsZSgpOiAiCi0gICAgICAgICAgKyBpblNvY2tldC5nZXRJbnB1dFN0cmVhbSgpLmF2YWlsYWJsZSgpKTsKLQotICAgICAgaWYgKGluU29ja2V0LmdldElucHV0U3RyZWFtKCkuYXZhaWxhYmxlKCkgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgcmVhZFdhaXRpbmcgPSB0cnVlOwotICAgICAgfQotICAgIH0KLQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpCi0gICAgewotICAgIH0KLQotICAgIHJldHVybiByZWFkV2FpdGluZzsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgcmVhZCB0aW1lZCBvdXQgZmxhZy4KLSAgICovCi0gIGJvb2xlYW4gaXNSZWFkVGltZWRPdXQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMucmVhZFRpbWVkT3V0OwotICB9Ci0KLSAgLyoqCi0gICAqIE1lc3NhZ2UgY29udGV4dCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWVzc2FnZSB0aGF0IGlzIGJlaW5nIHByb2Nlc3NlZC4KLSAgICovCi0gIGNsYXNzIE1lc3NhZ2VDb250ZXh0Ci0gIHsKLSAgICBTdHJpbmdCdWZmZXIgbWVzc2FnZUJ1ZmZlcjsKLSAgICBDaHVua2VkRGF0YSBjaHVua2VkRGF0YTsKLSAgICBTdHJpbmcgdGltZXN0YW1wOwotICAgIGludCBib207Ci0gICAgU3RyaW5nIGVuY29kaW5nOwotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlIG5ldyBtZXNzYWdlIGNvbnRleHQuCi0gICAgICovCi0gICAgTWVzc2FnZUNvbnRleHQoKQotICAgIHsKLSAgICAgIG1lc3NhZ2VCdWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICBjaHVua2VkRGF0YSA9IG5ldyBDaHVua2VkRGF0YSgpOwotICAgICAgdGltZXN0YW1wID0gbnVsbDsKLSAgICAgIGJvbSA9IDA7Ci0gICAgICBlbmNvZGluZyA9IFdTSUNvbnN0YW50cy5ERUZBVUxUX1hNTF9FTkNPRElORzsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL0NvbW1lbnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL0NvbW1lbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRlNGFkNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9Db21tZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWc7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50OwotCi0vKioKLSAqIFRoZSBpbnRlcmZhY2UgZm9yIG1vbml0b3IgY29uZmlnIENvbW1lbnQgZWxlbWVudC4gIAotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIENvbW1lbnQgZXh0ZW5kcyBEb2N1bWVudEVsZW1lbnQKLXsKLSAgLyoqCi0gICAqIEVsZW1lbnQgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTkFNRSA9IFdTSUNvbnN0YW50cy5FTEVNX0NPTU1FTlQ7Ci0KLSAgLyoqCi0gICAqIFFOYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX01PTklUT1JfQ09ORklHLCBFTEVNX05BTUUpOwotCi0gIC8qKgotICAgKiBHZXQgY29tbWVudCB0ZXh0LgotICAgKiBAcmV0dXJuIGNvbW1lbnQgdGV4dC4KLSAgICogQHNlZSAjc2V0VGV4dAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUZXh0KCk7Ci0KLSAgLyoqCi0gICAqIFNldCBjb21tZW50IHRleHQuCi0gICAqIEBwYXJhbSB0ZXh0IHRoZSBjb21tZW50IHRleHQuCi0gICAqIEBzZWUgI2dldFRleHQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRleHQoU3RyaW5nIHRleHQpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9jb25maWcvTWFuSW5UaGVNaWRkbGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL01hbkluVGhlTWlkZGxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YzBhYTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9jb25maWcvTWFuSW5UaGVNaWRkbGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZzsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50OwotCi0vKioKLSAqIFRoZSBpbnRlcmZhY2UgZm9yIHRoZSBtb25pdG9yIGNvbmZpZyBNYW5JblRoZU1pZGRsZSBlbGVtZW50LgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTWFuSW5UaGVNaWRkbGUgZXh0ZW5kcyBEb2N1bWVudEVsZW1lbnQKLXsKLSAgLyoqCi0gICAqIEVsZW1lbnQgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTkFNRSA9IFdTSUNvbnN0YW50cy5FTEVNX01BTl9JTl9USEVfTUlERExFOwotCi0gIC8qKgotICAgKiBRTmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgUU5hbWUgUU5BTUUgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9NT05JVE9SX0NPTkZJRywgRUxFTV9OQU1FKTsKLQotICAvKioKLSAgICogR2V0IGNvbW1lbnQuCi0gICAqIEByZXR1cm4gY29tbWVudC4KLSAgICogQHNlZSAjc2V0Q29tbWVudAotICAgKi8KLSAgcHVibGljIENvbW1lbnQgZ2V0Q29tbWVudCgpOwotCi0gIC8qKgotICAgKiBTZXQgY29tbWVudC4KLSAgICogQHBhcmFtIGNvbW1lbnQgdGhlIENvbW1lbnQgb2JqZWN0LgotICAgKiBAc2VlICNnZXRDb21tZW50Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb21tZW50KENvbW1lbnQgY29tbWVudCk7Ci0KLSAgLyoqCi0gICAqIEdldCByZWRpcmVjdHMuCi0gICAqIEByZXR1cm4gdGhlIHJlZGlyaXJlY3RzLgotICAgKiBAc2VlICNzZXRSZWRpcmVjdExpc3QKLSAgICovCi0gIHB1YmxpYyBWZWN0b3IgZ2V0UmVkaXJlY3RMaXN0KCk7Ci0KLSAgLyoqCi0gICAqIEFkZCByZWRpcmVjdC4KLSAgICogQHBhcmFtIHJlZGlyZWN0IHRoZSBSZWRpcmVjdCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRSZWRpcmVjdChSZWRpcmVjdCByZWRpcmVjdCk7Ci0KLSAgLyoqCi0gICAqIFNldCByZWRpcmVjdHMuCi0gICAqIEBwYXJhbSByZWRpcmVjdExpc3QgYSBsaXN0IG9mIHRoZSByZWRpcmVjdHMuCi0gICAqIEBzZWUgI2dldFJlZGlyZWN0TGlzdCAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlZGlyZWN0TGlzdChWZWN0b3IgcmVkaXJlY3RMaXN0KTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL01vbml0b3JDb25maWcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL01vbml0b3JDb25maWcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFkZjFlZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9Nb25pdG9yQ29uZmlnLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuY29tbW9uLkFkZFN0eWxlU2hlZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LldTSURvY3VtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk1lc3NhZ2VMaXN0OwotCi0vKioKLSAqIFRoaXMgaXMgdGhlIGludGVyZmFjZSBmb3IgdGhlIG1vbml0b3IgY29uZmlndXJhdGlvbiBmaWxlLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTW9uaXRvckNvbmZpZyBleHRlbmRzIFdTSURvY3VtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9DT05GSUc7Ci0KLSAgLyoqCi0gICAqIFFOYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX01PTklUT1JfQ09ORklHLCBFTEVNX05BTUUpOwotCi0gIC8qKgotICAgKiBJbml0aWFsaXplIG1vbml0b3IgY29uZmlnLgotICAgKiBAcGFyYW0gbWVzc2FnZUxpc3QgYSBsTWVzc2FnZUxpc3Qgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgaW5pdChNZXNzYWdlTGlzdCBtZXNzYWdlTGlzdCk7Ci0KLSAgLyoqCi0gICAqIEdldCBjb21tZW50LgotICAgKiBAcmV0dXJuIGNvbW1lbnQuCi0gICAqIEBzZWUgI3NldENvbW1lbnQKLSAgICovCi0gIHB1YmxpYyBDb21tZW50IGdldENvbW1lbnQoKTsKLQotICAvKioKLSAgICogU2V0IGNvbW1lbnQuCi0gICAqIEBwYXJhbSBjb21tZW50IGEgQ29tbWVudCBvYmplY3QuCi0gICAqIEBzZWUgI2dldENvbW1lbnQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENvbW1lbnQoQ29tbWVudCBjb21tZW50KTsKLQotICAvKioKLSAgICogR2V0IGxvZyBmaWxlIGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIGxvZyBmaWxlIGxvY2F0aW9uLgotICAgKiBAc2VlICNzZXRMb2dMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2dMb2NhdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXQgbG9nIGZpbGUgbG9jYXRpb24uCi0gICAqIEBwYXJhbSBsb2dVUkkgbG9nIGZpbGUgbG9jYXRpb24uCi0gICAqIEBzZWUgI2dldExvZ0xvY2F0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMb2dMb2NhdGlvbihTdHJpbmcgbG9nVVJJKTsKLQotICAvKioKLSAgICogR2V0IHJlcGxhY2UgbG9nLgotICAgKiBAcmV0dXJuIHJlcGxhY2UgbG9nLgotICAgKiBAc2VlICNzZXRSZXBsYWNlTG9nCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBnZXRSZXBsYWNlTG9nKCk7Ci0KLSAgLyoqCi0gICAqIFNldCByZXBsYWNlIGxvZy4KLSAgICogQHBhcmFtIHJlcGxhY2VMb2cgYSByZXBsYWNlIGxvZy4KLSAgICogQHNlZSAjZ2V0UmVwbGFjZUxvZwotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UmVwbGFjZUxvZyhib29sZWFuIHJlcGxhY2VMb2cpOwotCi0gIC8qKgotICAgKiBHZXQgYWRkIHN0eWxlIHNoZWV0LgotICAgKiBAcmV0dXJuIGFkZCBzdHlsZSBzaGVldC4KLSAgICogQHNlZSAjc2V0QWRkU3R5bGVTaGVldAotICAgKi8KLSAgcHVibGljIEFkZFN0eWxlU2hlZXQgZ2V0QWRkU3R5bGVTaGVldCgpOwotCi0gIC8qKgotICAgKiBTZXQgYWRkIHN0eWxlIHNoZWV0LgotICAgKiBAcGFyYW0gYWRkU3R5bGVTaGVldCBhZGQgc3R5bGUgc2hlZXQuCi0gICAqIEBzZWUgI2dldEFkZFN0eWxlU2hlZXQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEFkZFN0eWxlU2hlZXQoQWRkU3R5bGVTaGVldCBhZGRTdHlsZVNoZWV0KTsKLQotICAvKioKLSAgICogR2V0IGxvZyBkdXJhdGlvbi4KLSAgICogQHJldHVybiBsb2cgZHVyYXRpb24uCi0gICAqIEBzZWUgI3NldExvZ0R1cmF0aW9uCi0gICAqLwotICBwdWJsaWMgaW50IGdldExvZ0R1cmF0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBsb2cgZHVyYXRpb24uCi0gICAqIEBwYXJhbSBsb2dEdXJhdGlvbiBsb2cgZHVyYXRpb24uCi0gICAqIEBzZWUgI2dldExvZ0R1cmF0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMb2dEdXJhdGlvbihpbnQgbG9nRHVyYXRpb24pOwotCi0gIC8qKgotICAgKiBHZXQgdGltZW91dC4KLSAgICogQHJldHVybiB0aW1lb3V0LgotICAgKiBAc2VlICNzZXRUaW1lb3V0Ci0gICAqLwotICBwdWJsaWMgaW50IGdldFRpbWVvdXQoKTsKLQotICAvKioKLSAgICogU2V0IHRpbWVvdXQuCi0gICAqIEBwYXJhbSB0aW1lb3V0IHRpbWVvdXQuCi0gICAqIEBzZWUgI2dldFRpbWVvdXQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRpbWVvdXQoaW50IHRpbWVvdXQpOwotCi0gIC8qKgotICAgKiBHZXQgbWFuLWluLXRoZS1taWRkbGUgaW5mb3JtYXRpb24uCi0gICAqIEByZXR1cm4gbWFuLWluLXRoZS1taWRkbGUgaW5mb3JtYXRpb24uCi0gICAqIEBzZWUgI3NldE1hbkluVGhlTWlkZGxlCi0gICAqLwotICBwdWJsaWMgTWFuSW5UaGVNaWRkbGUgZ2V0TWFuSW5UaGVNaWRkbGUoKTsKLQotICAvKioKLSAgICogU2V0IG1hbi1pbi10aGUtbWlkZGxlIGluZm9ybWF0aW9uLgotICAgKiBAcGFyYW0gbWFuSW5UaGVNaWRkbGUgbWFuLWluLXRoZS1taWRkbGUgaW5mb3JtYXRpb24uCi0gICAqIEBzZWUgI2dldE1hbkluVGhlTWlkZGxlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNYW5JblRoZU1pZGRsZShNYW5JblRoZU1pZGRsZSBtYW5JblRoZU1pZGRsZSk7Ci0KLSAgLyoqCi0gICAqIEdldCB2ZXJib3NlIG9wdGlvbi4KLSAgICogQHJldHVybiB2ZXJib3NlIG9wdGlvbi4KLSAgICogQHNlZSAjc2V0VmVyYm9zZU9wdGlvbgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0VmVyYm9zZU9wdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXQgdmVyYm9zZSBvcHRpb24uCi0gICAqIEBwYXJhbSB2ZXJib3NlIHZlcmJvc2Ugb3B0aW9uLgotICAgKiBAc2VlICNnZXRWZXJib3NlT3B0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRWZXJib3NlT3B0aW9uKGJvb2xlYW4gdmVyYm9zZSk7Ci0KLSAgLyoqCi0gICAqIFBhcnNlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgotICAgKiBAcGFyYW0gYXJncyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgd2hpbGUgcGFyc2luZyB0aGUgCi0gICAqICAgICAgICAgY29tbWFuZCBsaW5lIGFyZ3VtZW50cywKLSAgICovCi0gIHB1YmxpYyB2b2lkIHBhcnNlQXJncyhTdHJpbmdbXSBhcmdzKSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9jb25maWcvTW9uaXRvckNvbmZpZ1JlYWRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9jb25maWcvTW9uaXRvckNvbmZpZ1JlYWRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGZiZDA3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL01vbml0b3JDb25maWdSZWFkZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZzsKLQotaW1wb3J0IGphdmEuaW8uUmVhZGVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRSZWFkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuTWVzc2FnZUxpc3Q7Ci0KLS8qKgotICogRGVmaW5lcyB0aGUgaW50ZXJmYWNlIHVzZWQgdG8gcmVhZCB0aGUgbW9uaXRvciBjb25maWcgZG9jdW1lbnRzLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTW9uaXRvckNvbmZpZ1JlYWRlciBleHRlbmRzIERvY3VtZW50UmVhZGVyCi17Ci0gIC8qKgotICAgKiBJbml0aWFsaXplIG1vbml0b3IgY29uZmlnLgotICAgKiBAcGFyYW0gbWVzc2FnZUxpc3QgYSBNZXNzYWdlTGlzdCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KE1lc3NhZ2VMaXN0IG1lc3NhZ2VMaXN0KTsKLQotICAvKioKLSAgICogUmVhZCB0aGUgbW9uaXRvciBjb25maWcgZmlsZS4KLSAgICogQHBhcmFtIG1vbml0b3JDb25maWdVUkkgdGhlIG1vbml0b3IgY29uZmlnIGZpbGUgbG9jYXRpb24uCi0gICAqIEByZXR1cm4gYSBNb25pdG9yQ29uZmlnIG9iamVjdAotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBvY2N1ciB3aGlsZSByZWFkaW5nIG1vbml0b3IgY29uZmlnIGZpbGUuCi0gICAqLwotICBwdWJsaWMgTW9uaXRvckNvbmZpZyByZWFkTW9uaXRvckNvbmZpZyhTdHJpbmcgbW9uaXRvckNvbmZpZ1VSSSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgKiBSZWFkIHRoZSBtb25pdG9yIGNvbmZpZyBmaWxlLgotICAgKiBAcGFyYW0gcmVhZGVyIGEgUmVhZGVyIG9iamVjdC4KLSAgICogQHJldHVybiBhIE1vbml0b3JDb25maWcgb2JqZWN0Ci0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW1zIG9jY3VyIHdoaWxlIHJlYWRpbmcgbW9uaXRvciBjb25maWcgZmlsZS4KLSAgICovCi0gIHB1YmxpYyBNb25pdG9yQ29uZmlnIHJlYWRNb25pdG9yQ29uZmlnKFJlYWRlciByZWFkZXIpIHRocm93cyBXU0lFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9SZWRpcmVjdC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9jb25maWcvUmVkaXJlY3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUzMDgyZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9SZWRpcmVjdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZzsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQ7Ci0KLS8qKgotICogVGhlIGludGVyZmFjZSBmb3IgbW9uaXRvciBjb25maWcgUmVkaXJlY3QgZWxlbWVudC4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFJlZGlyZWN0IGV4dGVuZHMgRG9jdW1lbnRFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9SRURJUkVDVDsKLQotICAvKioKLSAgICogUU5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFFOQU1FID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfTU9OSVRPUl9DT05GSUcsIEVMRU1fTkFNRSk7Ci0KLSAgLyoqCi0gICAqIEdldCBjb21tZW50LgotICAgKiBAcmV0dXJuIGNvbW1lbnQuCi0gICAqIEBzZWUgI3NldENvbW1lbnQKLSAgICovCi0gIHB1YmxpYyBDb21tZW50IGdldENvbW1lbnQoKTsKLQotICAvKioKLSAgICogU2V0IGNvbW1lbnQuCi0gICAqIEBwYXJhbSBjb21tZW50IGEgQ29tbWVudG9iamVjdC4KLSAgICogQHNlZSAjZ2V0Q29tbWVudAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q29tbWVudChDb21tZW50IGNvbW1lbnQpOwotCi0gIC8qKgotICAgKiBHZXQgbGlzdGVuIHBvcnQuCi0gICAqIEByZXR1cm4gbGlzdGVuIHBvcnQuCi0gICAqIEBzZWUgI3NldExpc3RlblBvcnQKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0TGlzdGVuUG9ydCgpOwotCi0gIC8qKgotICAgKiBTZXQgbGlzdGVuIHBvcnQuCi0gICAqIEBwYXJhbSBsaXN0ZW5Qb3J0IGxpc3RlbiBwb3J0LgotICAgKiBAc2VlICNnZXRMaXN0ZW5Qb3J0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMaXN0ZW5Qb3J0KGludCBsaXN0ZW5Qb3J0KTsKLQotICAvKioKLSAgICogR2V0IGhvc3QuCi0gICAqIEByZXR1cm4gaG9zdC4KLSAgICogQHNlZSAjc2V0SG9zdAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRIb3N0KCk7Ci0KLSAgLyoqCi0gICAqIFNldCBob3N0LgotICAgKiBAcGFyYW0gaG9zdCAgaG9zdC4KLSAgICogQHNlZSAjZ2V0SG9zdAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SG9zdChTdHJpbmcgaG9zdCk7Ci0KLSAgLyoqCi0gICAqIEdldCBzZW5kIHRvIHBvcnQuCi0gICAqIEByZXR1cm4gc2VuZCB0byBwb3J0LgotICAgKi8KLSAgcHVibGljIGludCBnZXRUb1BvcnQoKTsKLQotICAvKioKLSAgICogR2V0IHNlbmQgdG8gaG9zdC4KLSAgICogQHJldHVybiBzZW5kIHRvIGhvc3QuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFRvSG9zdCgpOwotCi0gIC8qKgotICAgKiBHZXQgc2VuZCB0byBwcm90b2NvbC4KLSAgICogQHJldHVybiBzZW5kIHRvIHByb3RvY29sLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUb1Byb3RvY29sKCk7Ci0KLSAgLyoqCi0gICAqIEdldCBtYXhpbXVtIGNvbm5lY3Rpb25zLgotICAgKiBAcmV0dXJuIG1heGltdW0gY29ubmVjdGlvbnMuCi0gICAqIEBzZWUgI3NldE1heENvbm5lY3Rpb25zCi0gICAqLwotICBwdWJsaWMgaW50IGdldE1heENvbm5lY3Rpb25zKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBtYXhpbXVtIGNvbm5lY3Rpb25zLgotICAgKiBAcGFyYW0gbWF4Q29ubmVjdGlvbnMgbWF4aW11bSBjb25uZWN0aW9ucy4KLSAgICogQHNlZSAjZ2V0TWF4Q29ubmVjdGlvbnMKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE1heENvbm5lY3Rpb25zKGludCBtYXhDb25uZWN0aW9ucyk7Ci0KLSAgLyoqCi0gICAqIEdldCByZWFkIHRpbWVvdXQgc2Vjb25kcy4KLSAgICogQHJldHVybiByZWFkIHRpbWVvdXQgc2Vjb25kcy4KLSAgICogQHNlZSAjc2V0UmVhZFRpbWVvdXRTZWNvbmRzCi0gICAqLwotICBwdWJsaWMgaW50IGdldFJlYWRUaW1lb3V0U2Vjb25kcygpOwotCi0gIC8qKgotICAgKiBTZXQgcmVhZCB0aW1lb3V0IHNlY29uZHMuCi0gICAqIEBwYXJhbSByZWFkVGltZW91dFNlY29uZHMgcmVhZCB0aW1lb3V0IHNlY29uZHMuCi0gICAqIEBzZWUgI2dldFJlYWRUaW1lb3V0U2Vjb25kcwotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UmVhZFRpbWVvdXRTZWNvbmRzKGludCByZWFkVGltZW91dFNlY29uZHMpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9jb25maWcvaW1wbC9Db21tZW50SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9jb25maWcvaW1wbC9Db21tZW50SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWMwOWI1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL2ltcGwvQ29tbWVudEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5Db21tZW50OwotCi0vKioKLSAqIFRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgbW9uaXRvciBjb25maWcgQ29tbWVudCBlbGVtZW50LiAKLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAgKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIENvbW1lbnRJbXBsIGltcGxlbWVudHMgQ29tbWVudAotewotICAvKioKLSAgICogQ29tbWVudCB0ZXh0LgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyB0ZXh0ID0gbnVsbDsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLkNvbW1lbnQjZ2V0VGV4dCgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFRleHQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMudGV4dDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuQ29tbWVudCNzZXRUZXh0KFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRleHQoU3RyaW5nIHRleHQpCi0gIHsKLSAgICB0aGlzLnRleHQgPSB0ZXh0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQjdG9YTUxTdHJpbmcoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gQ29uZmlnIG9wdGlvbnMKLSAgICAvL3B3LnByaW50KCIgICAgPCIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiIHhtbG5zPVwiIiArIFdTSUNvbnN0YW50cy5OU19VUklfV1NJX01PTklUT1JfQ09ORklHICsgIlwiPiIpOyAgICAKLSAgICBwdy5wcmludCgiICAgIDwiICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIj4iKTsKLSAgICBwdy5wcmludCh0aGlzLnRleHQpOwotCi0gICAgLy8gRW5kIGVsZW1lbnQKLSAgICBwdy5wcmludGxuKCI8LyIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiPiIpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIHJldHVybiB0ZXh0OwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL2ltcGwvTWFuSW5UaGVNaWRkbGVJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9pbXBsL01hbkluVGhlTWlkZGxlSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NThmYTYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL2ltcGwvTWFuSW5UaGVNaWRkbGVJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLkNvbW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLk1hbkluVGhlTWlkZGxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5SZWRpcmVjdDsKLQotLyoqCi0gKiBUaGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBtb25pdG9yIGNvbmZpZyBNYW5JblRoZU1pZGRsZSBlbGVtZW50LgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBNYW5JblRoZU1pZGRsZUltcGwgaW1wbGVtZW50cyBNYW5JblRoZU1pZGRsZQotewotICAvKioKLSAgICogQ29tbWVudC4KLSAgICovCi0gIHByb3RlY3RlZCBDb21tZW50IGNvbW1lbnQ7Ci0KLSAgLyoqCi0gICAqIFJlZGlyZWN0IGxpc3QuCi0gICAqLwotICBwcm90ZWN0ZWQgVmVjdG9yIHJlZGlyZWN0TGlzdCA9IG5ldyBWZWN0b3IoKTsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLk1hbkluVGhlTWlkZGxlI2dldENvbW1lbnQoKQotICAgKi8KLSAgcHVibGljIENvbW1lbnQgZ2V0Q29tbWVudCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5jb21tZW50OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5tb25pdG9yLmNvbmZpZy5NYW5JblRoZU1pZGRsZSNzZXRDb21tZW50KENvbW1lbnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb21tZW50KENvbW1lbnQgY29tbWVudCkKLSAgewotICAgIHRoaXMuY29tbWVudCA9IGNvbW1lbnQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLk1hbkluVGhlTWlkZGxlI2dldFJlZGlyZWN0TGlzdCgpCi0gICAqLwotICBwdWJsaWMgVmVjdG9yIGdldFJlZGlyZWN0TGlzdCgpCi0gIHsKLSAgICByZXR1cm4gcmVkaXJlY3RMaXN0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5tb25pdG9yLmNvbmZpZy5NYW5JblRoZU1pZGRsZSNhZGRSZWRpcmVjdChSZWRpcmVjdCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFJlZGlyZWN0KFJlZGlyZWN0IHJlZGlyZWN0KQotICB7Ci0gICAgcmVkaXJlY3RMaXN0LmFkZChyZWRpcmVjdCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLk1hbkluVGhlTWlkZGxlI3NldFJlZGlyZWN0TGlzdChWZWN0b3IpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZWRpcmVjdExpc3QoVmVjdG9yIHJlZGlyZWN0TGlzdCkKLSAgewotICAgIHRoaXMucmVkaXJlY3RMaXN0ID0gcmVkaXJlY3RMaXN0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgcHcucHJpbnRsbigiICBtYW4taW4tdGhlLW1pZGRsZSBjb21tZW50IC4uLiAiICsgdGhpcy5jb21tZW50KTsKLQotICAgIC8vIFJlZGlyZWN0IGxpc3QKLSAgICBpbnQgY291bnQgPSAxOwotICAgIFJlZGlyZWN0IHJlZGlyZWN0OwotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gcmVkaXJlY3RMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICAvLyBHZXQgbmV4dCByZWRpcmVjdCBlbGVtZW50Ci0gICAgICByZWRpcmVjdCA9IChSZWRpcmVjdCkgaXRlcmF0b3IubmV4dCgpOwotICAgICAgcHcucHJpbnRsbigiICByZWRpcmVjdCBbIiArIGNvdW50KysgKyJdIik7Ci0gICAgICBwdy5wcmludChyZWRpcmVjdC50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50I3RvWE1MU3RyaW5nKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIC8vIFN0YXJ0IGVsZW1lbnQKLSAgICBwdy5wcmludGxuKCIgICAgICA8IiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0KLSAgICAvLyBDb21tZW50Ci0gICAgaWYgKHRoaXMuY29tbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIHB3LnByaW50bG4odGhpcy5jb21tZW50LnRvWE1MU3RyaW5nKG5zTmFtZSkpOwotICAgIH0KLQotICAgIC8vIFJlZGlyZWN0Ci0gICAgUmVkaXJlY3QgcmVkaXJlY3Q7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSByZWRpcmVjdExpc3QuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIC8vIEdldCBuZXh0IHJlZGlyZWN0IGVsZW1lbnQKLSAgICAgIHJlZGlyZWN0ID0gKFJlZGlyZWN0KSBpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBwdy5wcmludChyZWRpcmVjdC50b1hNTFN0cmluZyhuc05hbWUpKTsKLSAgICB9Ci0KLSAgICAvLyBFbmQgZWxlbWVudAotICAgIHB3LnByaW50bG4oIiAgICAgIDwvIiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9pbXBsL01vbml0b3JDb25maWdJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9pbXBsL01vbml0b3JDb25maWdJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4Njk2NmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9jb25maWcvaW1wbC9Nb25pdG9yQ29uZmlnSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTYxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuY29tbW9uLkFkZFN0eWxlU2hlZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmNvbW1vbi5pbXBsLkFkZFN0eWxlU2hlZXRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLk1vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLkNvbW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLk1hbkluVGhlTWlkZGxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnUmVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5SZWRpcmVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5NZXNzYWdlTGlzdDsKLQotLyoqCi0gKiBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIG1vbml0b3IgY29uZmlndXJhdGlvbiBmaWxlLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBNb25pdG9yQ29uZmlnSW1wbCBpbXBsZW1lbnRzIE1vbml0b3JDb25maWcKLXsKLSAgLyoqCi0gICAqIE1lc3NhZ2UgbGlzdCByZWZlcmVuY2UuCi0gICAqLwotICBwcm90ZWN0ZWQgTWVzc2FnZUxpc3QgbWVzc2FnZUxpc3QgPSBudWxsOwotCi0gIC8qKgotICAgKiBNb25pdG9yIGNvbmZpZ3VyYXRpb24gZmlsZSBVUkkuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGRvY3VtZW50VVJJID0gbnVsbDsKLQotICAvKioKLSAgICogQ29tbWVudC4KLSAgICovCi0gIHByb3RlY3RlZCBDb21tZW50IGNvbW1lbnQgPSBudWxsOwotCi0gIC8qKgotICAgKiBMb2cgbG9jYXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGxvZ1VSSTsKLQotICAvKioKLSAgICogUmVwbGFjZSBsb2cgaW5kaWNhdG9yLgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gcmVwbGFjZUxvZyA9IGZhbHNlOwotCi0gIC8qKgotICAgKiBTdHlsZSBzaGVldCBkZWNsYXJhdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCBBZGRTdHlsZVNoZWV0IGFkZFN0eWxlU2hlZXQ7Ci0KLSAgLyoqCi0gICAqIExvZyBkdXJhdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCBpbnQgbG9nRHVyYXRpb24gPSA2MDA7Ci0KLSAgLyoqCi0gICAqIFRpbWVvdXQuCi0gICAqLwotICBwcm90ZWN0ZWQgaW50IHRpbWVvdXQgPSAzOwotCi0gIC8qKgotICAgKiBNYW4taW4tdGhlLW1pZGRsZSBzZXR0aW5ncy4KLSAgICovCi0gIHByb3RlY3RlZCBNYW5JblRoZU1pZGRsZSBtYW5JblRoZU1pZGRsZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFZlcmJvc2Ugb3B0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gdmVyYm9zZSA9IGZhbHNlOwotCi0gIC8qKgotICAgKiBJbml0aWFsaXplIG1vbml0b3IgY29uZmlnLgotICAgKi8KLSAgcHVibGljIHZvaWQgaW5pdChNZXNzYWdlTGlzdCBtZXNzYWdlTGlzdCkKLSAgewotICAgIHRoaXMubWVzc2FnZUxpc3QgPSBtZXNzYWdlTGlzdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZyNnZXRDb21tZW50KCkKLSAgICovCi0gIHB1YmxpYyBDb21tZW50IGdldENvbW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuY29tbWVudDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZyNzZXRDb21tZW50KENvbW1lbnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb21tZW50KENvbW1lbnQgY29tbWVudCkKLSAgewotICAgIHRoaXMuY29tbWVudCA9IGNvbW1lbnQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLk1vbml0b3JDb25maWcjZ2V0TG9nTG9jYXRpb24oKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2dMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5sb2dVUkk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLk1vbml0b3JDb25maWcjc2V0TG9nTG9jYXRpb24oU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9nTG9jYXRpb24oU3RyaW5nIGxvZ1VSSSkKLSAgewotICAgIHRoaXMubG9nVVJJID0gbG9nVVJJOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnI2dldFJlcGxhY2VMb2coKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0UmVwbGFjZUxvZygpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5yZXBsYWNlTG9nOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnI3NldFJlcGxhY2VMb2coYm9vbGVhbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlcGxhY2VMb2coYm9vbGVhbiByZXBsYWNlTG9nKQotICB7Ci0gICAgdGhpcy5yZXBsYWNlTG9nID0gcmVwbGFjZUxvZzsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZyNnZXRBZGRTdHlsZVNoZWV0KCkKLSAgICovCi0gIHB1YmxpYyBBZGRTdHlsZVNoZWV0IGdldEFkZFN0eWxlU2hlZXQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuYWRkU3R5bGVTaGVldDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZyNzZXRBZGRTdHlsZVNoZWV0KG9yZy53c2kudGVzdC5jb21tb24uQWRkU3R5bGVTaGVldCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEFkZFN0eWxlU2hlZXQoQWRkU3R5bGVTaGVldCBhZGRTdHlsZVNoZWV0KQotICB7Ci0gICAgdGhpcy5hZGRTdHlsZVNoZWV0ID0gYWRkU3R5bGVTaGVldDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZyNnZXRMb2dEdXJhdGlvbigpCi0gICAqLwotICBwdWJsaWMgaW50IGdldExvZ0R1cmF0aW9uKCkKLSAgewotICAgIHJldHVybiBsb2dEdXJhdGlvbjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZyNzZXRMb2dEdXJhdGlvbihpbnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMb2dEdXJhdGlvbihpbnQgbG9nRHVyYXRpb24pCi0gIHsKLSAgICB0aGlzLmxvZ0R1cmF0aW9uID0gbG9nRHVyYXRpb247Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLk1vbml0b3JDb25maWcjZ2V0VGltZW91dCgpCi0gICAqLwotICBwdWJsaWMgaW50IGdldFRpbWVvdXQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMudGltZW91dDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZyNzZXRUaW1lb3V0KGludCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRpbWVvdXQoaW50IHRpbWVvdXQpCi0gIHsKLSAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnI2dldE1hbkluVGhlTWlkZGxlKCkKLSAgICovCi0gIHB1YmxpYyBNYW5JblRoZU1pZGRsZSBnZXRNYW5JblRoZU1pZGRsZSgpCi0gIHsKLSAgICByZXR1cm4gbWFuSW5UaGVNaWRkbGU7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLk1vbml0b3JDb25maWcjc2V0TWFuSW5UaGVNaWRkbGUoTWFuSW5UaGVNaWRkbGUpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRNYW5JblRoZU1pZGRsZShNYW5JblRoZU1pZGRsZSBtYW5JblRoZU1pZGRsZSkKLSAgewotICAgIHRoaXMubWFuSW5UaGVNaWRkbGUgPSBtYW5JblRoZU1pZGRsZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuV1NJRG9jdW1lbnQjZ2V0TG9jYXRpb24oKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5kb2N1bWVudFVSSTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuV1NJRG9jdW1lbnQjc2V0TG9jYXRpb24oU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9jYXRpb24oU3RyaW5nIGRvY3VtZW50VVJJKQotICB7Ci0gICAgdGhpcy5kb2N1bWVudFVSSSA9IGRvY3VtZW50VVJJOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnI2dldFZlcmJvc2VPcHRpb24oKQotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gZ2V0VmVyYm9zZU9wdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy52ZXJib3NlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnI3NldFZlcmJvc2VPcHRpb24oYm9vbGVhbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFZlcmJvc2VPcHRpb24oYm9vbGVhbiB2ZXJib3NlKQotICB7Ci0gICAgdGhpcy52ZXJib3NlID0gdmVyYm9zZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50I3RvWE1MU3RyaW5nKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIC8vIENvbmZpZyBvcHRpb25zCi0gICAgcHcucHJpbnRsbigiICAgIDwiICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIj4iKTsKLQotICAgIC8vIENvbW1lbnQKLSAgICBpZiAodGhpcy5jb21tZW50ICE9IG51bGwpCi0gICAgewotICAgICAgcHcucHJpbnQoY29tbWVudC50b1hNTFN0cmluZyhuc05hbWUpKTsKLSAgICB9Ci0KLSAgICAvLyBMb2cgZmlsZQotICAgIHB3LnByaW50KCIgICAgICA8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX0xPR19GSUxFICsgIiAiKTsKLSAgICBwdy5wcmludChXU0lDb25zdGFudHMuQVRUUl9SRVBMQUNFICsgIj1cIiIgKyB0aGlzLnJlcGxhY2VMb2cgKyAiXCIgIik7Ci0gICAgcHcucHJpbnRsbihXU0lDb25zdGFudHMuQVRUUl9MT0NBVElPTiArICI9XCIiICsgdGhpcy5sb2dVUkkgKyAiXCI+Iik7Ci0gICAgcHcucHJpbnQoZ2V0QWRkU3R5bGVTaGVldCgpLnRvWE1MU3RyaW5nKG5hbWVzcGFjZU5hbWUpKTsKLSAgICBwdy5wcmludGxuKCIgICAgPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTE9HX0ZJTEUgKyAiPiIpOwotCi0gICAgLy8gTG9nIGR1cmF0aW9uCi0gICAgcHcucHJpbnQoIiAgICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fTE9HX0RVUkFUSU9OICsgIj4iKTsKLSAgICBwdy5wcmludCh0aGlzLmxvZ0R1cmF0aW9uKTsKLSAgICBwdy5wcmludGxuKCI8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9MT0dfRFVSQVRJT04gKyAiPiIpOwotCi0gICAgLy8gVGltZW91dAotICAgIHB3LnByaW50KAotICAgICAgIiAgICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fQ0xFQU5VUF9USU1FT1VUX1NFQ09ORFMgKyAiPiIpOwotICAgIHB3LnByaW50KHRoaXMudGltZW91dCk7Ci0gICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fQ0xFQU5VUF9USU1FT1VUX1NFQ09ORFMgKyAiPiIpOwotCi0gICAgLy8gTWFuLWluLXRoZS1taWRkbGUKLSAgICBpZiAodGhpcy5tYW5JblRoZU1pZGRsZSAhPSBudWxsKQotICAgIHsKLSAgICAgIHB3LnByaW50KG1hbkluVGhlTWlkZGxlLnRvWE1MU3RyaW5nKG5zTmFtZSkpOwotICAgIH0KLQotICAgIC8vIEVuZCBlbGVtZW50Ci0gICAgcHcucHJpbnRsbigiICAgIDwvIiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgcHcucHJpbnRsbigiICBjb21tZW50IC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy5jb21tZW50KTsKLSAgICBwdy5wcmludGxuKCIgIGxvZ1VSSSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLmxvZ1VSSSk7Ci0gICAgcHcucHJpbnRsbigiICByZXBsYWNlTG9nIC4uLi4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy5yZXBsYWNlTG9nKTsKLSAgICBwdy5wcmludGxuKCIgIGxvZ0R1cmF0aW9uIC4uLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLmxvZ0R1cmF0aW9uKTsKLSAgICBwdy5wcmludGxuKCIgIHRpbWVvdXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLnRpbWVvdXQpOwotCi0gICAgLy8gYWRkU3R5bGVTaGVldAotICAgIGlmICh0aGlzLmFkZFN0eWxlU2hlZXQgIT0gbnVsbCkKLSAgICAgIHB3LnByaW50bG4oCi0gICAgICAgICIgIGFkZFN0eWxlU2hlZXQgLi4uLi4uLi4uLi4uLi4uICIgKyB0aGlzLmFkZFN0eWxlU2hlZXQudG9TdHJpbmcoKSk7Ci0KLSAgICAvLyBNYW4taW4tdGhlLW1pZGRsZQotICAgIGlmICh0aGlzLm1hbkluVGhlTWlkZGxlICE9IG51bGwpCi0gICAgewotICAgICAgcHcucHJpbnQodGhpcy5tYW5JblRoZU1pZGRsZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgY29uZmlnIHZhbHVlcyBmcm9tIGFub3RoZXIgbW9uaXRvciBjb25maWcgb2JqZWN0LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHNldENvbmZpZyhNb25pdG9yQ29uZmlnIG1vbml0b3JDb25maWcpCi0gIHsKLSAgICAvLyBBREQ6IFNob3VsZCB0aGlzIGJlIGEgY2xvbmUgb3BlcmF0aW9uPwotICAgIHRoaXMuY29tbWVudCA9IG1vbml0b3JDb25maWcuZ2V0Q29tbWVudCgpOwotICAgIHRoaXMuZG9jdW1lbnRVUkkgPSBtb25pdG9yQ29uZmlnLmdldExvY2F0aW9uKCk7Ci0gICAgdGhpcy5sb2dVUkkgPSBtb25pdG9yQ29uZmlnLmdldExvZ0xvY2F0aW9uKCk7Ci0gICAgdGhpcy5yZXBsYWNlTG9nID0gbW9uaXRvckNvbmZpZy5nZXRSZXBsYWNlTG9nKCk7Ci0gICAgdGhpcy5sb2dEdXJhdGlvbiA9IG1vbml0b3JDb25maWcuZ2V0TG9nRHVyYXRpb24oKTsKLSAgICB0aGlzLnRpbWVvdXQgPSBtb25pdG9yQ29uZmlnLmdldFRpbWVvdXQoKTsKLSAgICB0aGlzLm1hbkluVGhlTWlkZGxlID0gbW9uaXRvckNvbmZpZy5nZXRNYW5JblRoZU1pZGRsZSgpOwotICAgIHRoaXMuYWRkU3R5bGVTaGVldCA9IG1vbml0b3JDb25maWcuZ2V0QWRkU3R5bGVTaGVldCgpOwotICAgIHRoaXMudmVyYm9zZSA9IG1vbml0b3JDb25maWcuZ2V0VmVyYm9zZU9wdGlvbigpOwotICB9Ci0KLSAgLyoqCi0gICAqIFZlcmlmeSBjb25maWcgb3B0aW9ucy4KLSAgICovCi0gIHByaXZhdGUgdm9pZCB2ZXJpZnlDb25maWcoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBJZiBubyByZWRpcmVjdCBzdGF0ZW1lbnRzLCB0aGVuIGV4aXQKLSAgICBpZiAoKHRoaXMubWFuSW5UaGVNaWRkbGUgPT0gbnVsbCkKLSAgICAgIHx8ICh0aGlzLm1hbkluVGhlTWlkZGxlLmdldFJlZGlyZWN0TGlzdCgpID09IG51bGwpCi0gICAgICB8fCAodGhpcy5tYW5JblRoZU1pZGRsZS5nZXRSZWRpcmVjdExpc3QoKS5zaXplKCkgPT0gMCkpCi0gICAgewotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiY29uZmlnMDUiLAotICAgICAgICAgICJNb25pdG9yIGNvbmZpZyBmaWxlIGRpZCBub3QgY29udGFpbiBhbnkgcmVkaXJlY3Qgc3RhdGVtZW50cy4iKSk7Ci0gICAgfQotCi0gICAgaWYgKHRoaXMubG9nVVJJID09IG51bGwpCi0gICAgewotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiY29uZmlnMDYiLAotICAgICAgICAgICJNb25pdG9yIGNvbmZpZyBmaWxlIGRpZCBub3QgY29udGFpbiB0aGUgbG9nIGZpbGUgVVJJLiIpKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAqLwotICBwdWJsaWMgdm9pZCBwYXJzZUFyZ3MoU3RyaW5nW10gYXJncykgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gR2V0IG5ldyBjb25maWcgcmVhZGVyCi0gICAgTW9uaXRvckNvbmZpZ1JlYWRlciBtb25pdG9yQ29uZmlnUmVhZGVyID0gbmV3IE1vbml0b3JDb25maWdSZWFkZXJJbXBsKCk7Ci0KLSAgICAvLyBNb25pdG9yIGNvbmZpZyBvYmplY3Qgd2hpY2ggd2lsbCBiZSBtZXJnZWQgYWZ0ZXIgYWxsIG9mIHRoZSBpbnB1dCBwYXJtcyBhcmUgcHJvY2Vzc2VkCi0gICAgTW9uaXRvckNvbmZpZyBtb25pdG9yQ29uZmlnRnJvbUFyZ3MgPSBudWxsOwotCi0gICAgLy8gSWYgbm8gaW5wdXQgYXJndW1lbnRzLCB0aGVuIHRocm93IGV4Y2VwdGlvbgotICAgIGlmIChhcmdzLmxlbmd0aCA9PSAwKQotICAgIHsKLSAgICAgIC8vIEFERDogCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICBnZXRNZXNzYWdlKCJ1c2FnZTAxIiwgTW9uaXRvci5VU0FHRV9NRVNTQUdFKSk7Ci0gICAgfQotCi0gICAgLy8gUGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gbG9jYXRlIHRoZSBjb25maWcgZmlsZSBvcHRpb24gKGlmIGl0IHdhcyBzcGVjaWZpZWQpCi0gICAgZm9yIChpbnQgYXJnQ291bnQgPSAwOyBhcmdDb3VudCA8IGFyZ3MubGVuZ3RoOyBhcmdDb3VudCsrKQotICAgIHsKLSAgICAgIC8vIC1jb25maWdGaWxlCi0gICAgICBpZiAoKGFyZ3NbYXJnQ291bnRdLmVxdWFsc0lnbm9yZUNhc2UoIi1jb25maWciKSkKLSAgICAgICAgfHwgKGFyZ3NbYXJnQ291bnRdLmVxdWFscygiLWMiKSkpCi0gICAgICB7Ci0gICAgICAgIGFyZ0NvdW50Kys7Ci0gICAgICAgIG1vbml0b3JDb25maWdGcm9tQXJncyA9Ci0gICAgICAgICAgbW9uaXRvckNvbmZpZ1JlYWRlci5yZWFkTW9uaXRvckNvbmZpZyhhcmdzW2FyZ0NvdW50XSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYgY29uZmlnIGZpbGUgd2FzIG5vdCBzcGVjaWZpZWQsIHRoZW4gY3JlYXRlIGFuYWx5emVyIGNvbmZpZyBvYmplY3QKLSAgICBpZiAobW9uaXRvckNvbmZpZ0Zyb21BcmdzID09IG51bGwpCi0gICAgewotICAgICAgbW9uaXRvckNvbmZpZ0Zyb21BcmdzID0gbmV3IE1vbml0b3JDb25maWdJbXBsKCk7Ci0gICAgICBtb25pdG9yQ29uZmlnRnJvbUFyZ3MuaW5pdCh0aGlzLm1lc3NhZ2VMaXN0KTsKLSAgICB9Ci0KLSAgICAvLyBQYXJzZSBhbGwgb2YgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKLSAgICBmb3IgKGludCBhcmdDb3VudCA9IDA7IGFyZ0NvdW50IDwgYXJncy5sZW5ndGg7IGFyZ0NvdW50KyspCi0gICAgewotICAgICAgLy8gLWNvbmZpZ0ZpbGUKLSAgICAgIGlmICgoYXJnc1thcmdDb3VudF0uZXF1YWxzSWdub3JlQ2FzZSgiLWNvbmZpZyIpKQotICAgICAgICB8fCAoYXJnc1thcmdDb3VudF0uZXF1YWxzKCItYyIpKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2tpcCB0aGlzIG9wdGlvbiBzaW5jZSBpdCB3YXMgYWxyZWFkeSBwcm9jZXNzZWQKLSAgICAgICAgYXJnQ291bnQrKzsKLSAgICAgIH0KLQotICAgICAgLy8gLWNvbW1lbnQKLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAoYXJnc1thcmdDb3VudF0uZXF1YWxzSWdub3JlQ2FzZSgiLWNvbW1lbnQiKSkKLSAgICAgICAgICB8fCAoYXJnc1thcmdDb3VudF0uZXF1YWxzKCItQyIpKSkKLSAgICAgIHsKLSAgICAgICAgYXJnQ291bnQrKzsKLSAgICAgICAgQ29tbWVudCBjb21tZW50ID0gbmV3IENvbW1lbnRJbXBsKCk7Ci0gICAgICAgIGNvbW1lbnQuc2V0VGV4dChhcmdzW2FyZ0NvdW50XSk7Ci0gICAgICAgIG1vbml0b3JDb25maWdGcm9tQXJncy5zZXRDb21tZW50KGNvbW1lbnQpOwotICAgICAgfQotCi0gICAgICAvLyAtbG9nRmlsZQotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItbG9nRmlsZSIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1sIikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBtb25pdG9yQ29uZmlnRnJvbUFyZ3Muc2V0TG9nTG9jYXRpb24oYXJnc1thcmdDb3VudF0pOwotICAgICAgfQotCi0gICAgICAvLyAtcmVwbGFjZQotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItcmVwbGFjZSIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1yIikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBtb25pdG9yQ29uZmlnRnJvbUFyZ3Muc2V0UmVwbGFjZUxvZygKLSAgICAgICAgICBCb29sZWFuLnZhbHVlT2YoYXJnc1thcmdDb3VudF0pLmJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgIH0KLQotICAgICAgLy8gLWxvZ0R1cmF0aW9uCi0gICAgICBlbHNlIGlmICgKLSAgICAgICAgKGFyZ3NbYXJnQ291bnRdLmVxdWFsc0lnbm9yZUNhc2UoIi1sb2dEdXJhdGlvbiIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1kIikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICBtb25pdG9yQ29uZmlnRnJvbUFyZ3Muc2V0TG9nRHVyYXRpb24oCi0gICAgICAgICAgSW50ZWdlci52YWx1ZU9mKGFyZ3NbYXJnQ291bnRdKS5pbnRWYWx1ZSgpKTsKLSAgICAgIH0KLQotICAgICAgLy8gLXRpbWVvdXQKLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAoYXJnc1thcmdDb3VudF0uZXF1YWxzSWdub3JlQ2FzZSgiLXRpbWVvdXQiKSkKLSAgICAgICAgICB8fCAoYXJnc1thcmdDb3VudF0uZXF1YWxzKCItdCIpKSkKLSAgICAgIHsKLSAgICAgICAgYXJnQ291bnQrKzsKLSAgICAgICAgbW9uaXRvckNvbmZpZ0Zyb21BcmdzLnNldFRpbWVvdXQoCi0gICAgICAgICAgSW50ZWdlci52YWx1ZU9mKGFyZ3NbYXJnQ291bnRdKS5pbnRWYWx1ZSgpKTsKLSAgICAgIH0KLQotICAgICAgLy8gLW1hbkluVGhlTWlkZGxlCi0gICAgICBlbHNlIGlmICgKLSAgICAgICAgKGFyZ3NbYXJnQ291bnRdLmVxdWFsc0lnbm9yZUNhc2UoIi1tYW5JblRoZU1pZGRsZSIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi1tIikpKQotICAgICAgewotICAgICAgICBNYW5JblRoZU1pZGRsZSBtYW5JblRoZU1pZGRsZSA9IG51bGw7Ci0KLSAgICAgICAgLy8gSW5jcmVtZW50IGFyZyBjb3VudAotICAgICAgICBhcmdDb3VudCsrOwotCi0gICAgICAgIC8vIEdldCB0aGUgbWFuLWluLXRoZS1taWRkbGUgb2JqZWN0Ci0gICAgICAgIGlmICgobWFuSW5UaGVNaWRkbGUgPSBtb25pdG9yQ29uZmlnRnJvbUFyZ3MuZ2V0TWFuSW5UaGVNaWRkbGUoKSkKLSAgICAgICAgICA9PSBudWxsKQotICAgICAgICAgIG1hbkluVGhlTWlkZGxlID0gbmV3IE1hbkluVGhlTWlkZGxlSW1wbCgpOwotCi0gICAgICAgIC8vIEFERDogQ2hlY2sgZm9yIGNvcnJlY3QgbnVtYmVyIG9mIHJlbWFpbmluZyBhcmdzCi0KLSAgICAgICAgLy8gQ3JlYXRlIHJlZGlyZWN0Ci0gICAgICAgIFJlZGlyZWN0IHJlZGlyZWN0ID0gbmV3IFJlZGlyZWN0SW1wbCgpOwotCi0gICAgICAgIC8vIEdldCB0aGUgcmVkaXJlY3QgdmFsdWVzIAotICAgICAgICByZWRpcmVjdC5zZXRMaXN0ZW5Qb3J0KEludGVnZXIudmFsdWVPZihhcmdzW2FyZ0NvdW50KytdKS5pbnRWYWx1ZSgpKTsKLSAgICAgICAgcmVkaXJlY3Quc2V0SG9zdChhcmdzW2FyZ0NvdW50KytdKTsKLSAgICAgICAgcmVkaXJlY3Quc2V0TWF4Q29ubmVjdGlvbnMoCi0gICAgICAgICAgSW50ZWdlci52YWx1ZU9mKGFyZ3NbYXJnQ291bnQrK10pLmludFZhbHVlKCkpOwotICAgICAgICByZWRpcmVjdC5zZXRSZWFkVGltZW91dFNlY29uZHMoCi0gICAgICAgICAgSW50ZWdlci52YWx1ZU9mKGFyZ3NbYXJnQ291bnQrK10pLmludFZhbHVlKCkpOwotCi0gICAgICAgIC8vIEFkZCByZWRpcmVjdAotICAgICAgICBtYW5JblRoZU1pZGRsZS5hZGRSZWRpcmVjdChyZWRpcmVjdCk7Ci0KLSAgICAgICAgLy8gU2V0IHRoZSBtYW4taW4tdGhlLW1pZGRsZQotICAgICAgICBtb25pdG9yQ29uZmlnRnJvbUFyZ3Muc2V0TWFuSW5UaGVNaWRkbGUobWFuSW5UaGVNaWRkbGUpOwotICAgICAgfQotCi0gICAgICAvLyAtdmVyYm9zZQotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhcmdzW2FyZ0NvdW50XS5lcXVhbHNJZ25vcmVDYXNlKCItdmVyYm9zZSIpKQotICAgICAgICAgIHx8IChhcmdzW2FyZ0NvdW50XS5lcXVhbHMoIi12IikpKQotICAgICAgewotICAgICAgICBhcmdDb3VudCsrOwotICAgICAgICAvL21vbml0b3JDb25maWdGcm9tQXJncy5zZXRWZXJib3NlT3B0aW9uKEJvb2xlYW4udmFsdWVPZihhcmdzW2FyZ0NvdW50XSkuYm9vbGVhblZhbHVlKCkpOwotICAgICAgICBtb25pdG9yQ29uZmlnRnJvbUFyZ3Muc2V0VmVyYm9zZU9wdGlvbih0cnVlKTsKLSAgICAgIH0KLQotICAgICAgLy8gLUdVSQotICAgICAgZWxzZSBpZiAoYXJnc1thcmdDb3VudF0uZXF1YWxzSWdub3JlQ2FzZSgiLUdVSSIpKQotICAgICAgewotICAgICAgICAvLyBJZ25vcmUgLUdVSSBvcHRpb24KLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgICAiY29uZmlnMDEiLAotICAgICAgICAgICAgYXJnc1thcmdDb3VudF0sCi0gICAgICAgICAgICAiVGhlIHNwZWNpZmllZCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZC4iKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYgYWRkU3R5bGVTaGVldCB3YXMgbm90IHNwZWNpZmllZCwgdGhlbiBjcmVhdGUgYSBjb21tZW50IHZlcnNpb24gb2YgaXQKLSAgICBpZiAobW9uaXRvckNvbmZpZ0Zyb21BcmdzLmdldEFkZFN0eWxlU2hlZXQoKSA9PSBudWxsKQotICAgIHsKLSAgICAgIEFkZFN0eWxlU2hlZXQgYWRkU3R5bGVTaGVldCA9IG5ldyBBZGRTdHlsZVNoZWV0SW1wbCgpOwotICAgICAgYWRkU3R5bGVTaGVldC5zZXRIcmVmKFdTSUNvbnN0YW50cy5ERUZBVUxUX0xPR19YU0wpOwotICAgICAgYWRkU3R5bGVTaGVldC5zZXRUeXBlKFdTSUNvbnN0YW50cy5ERUZBVUxUX1hTTF9UWVBFKTsKLSAgICAgIGFkZFN0eWxlU2hlZXQuc2V0Q29tbWVudCh0cnVlKTsKLSAgICAgIG1vbml0b3JDb25maWdGcm9tQXJncy5zZXRBZGRTdHlsZVNoZWV0KGFkZFN0eWxlU2hlZXQpOwotICAgIH0KLQotICAgIC8vIE1lcmdlIGNvbmZpZyBpbmZvIGludG8gdGhpcyBvYmplY3QKLSAgICBzZXRDb25maWcobW9uaXRvckNvbmZpZ0Zyb21BcmdzKTsKLQotICAgIC8vIFZlcmlmeSBjb25maWcgb3B0aW9ucwotICAgIHZlcmlmeUNvbmZpZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBtZXNzYWdlIGZyb20gcmVzb3VyY2UgYnVuZGxlLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0TWVzc2FnZShTdHJpbmcgbWVzc2FnZUlELCBTdHJpbmcgZGVmYXVsdE1lc3NhZ2UpCi0gIHsKLSAgICByZXR1cm4gZ2V0TWVzc2FnZShtZXNzYWdlSUQsIG51bGwsIGRlZmF1bHRNZXNzYWdlKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgbWVzc2FnZSBmcm9tIHJlc291cmNlIGJ1bmRsZS4KLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIGdldE1lc3NhZ2UoCi0gICAgU3RyaW5nIG1lc3NhZ2VJRCwKLSAgICBTdHJpbmcgbWVzc2FnZURhdGEsCi0gICAgU3RyaW5nIGRlZmF1bHRNZXNzYWdlKQotICB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBkZWZhdWx0TWVzc2FnZTsKLSAgICBpZiAobWVzc2FnZUxpc3QgIT0gbnVsbCkKLSAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlTGlzdC5nZXRNZXNzYWdlKG1lc3NhZ2VJRCwgbWVzc2FnZURhdGEsIGRlZmF1bHRNZXNzYWdlKTsKLSAgICBlbHNlCi0gICAgICBtZXNzYWdlICs9ICIgIiArIG1lc3NhZ2VEYXRhICsgIi4iOwotCi0gICAgcmV0dXJuIG1lc3NhZ2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL2ltcGwvTW9uaXRvckNvbmZpZ1JlYWRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL21vbml0b3IvY29uZmlnL2ltcGwvTW9uaXRvckNvbmZpZ1JlYWRlckltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA0YWJjYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9pbXBsL01vbml0b3JDb25maWdSZWFkZXJJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLm1vbml0b3IuY29uZmlnLmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLkZpbGVSZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5SZWFkZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuY29tbW9uLkFkZFN0eWxlU2hlZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmNvbW1vbi5pbXBsLkFkZFN0eWxlU2hlZXRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5Db21tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5NYW5JblRoZU1pZGRsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZ1JlYWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuUmVkaXJlY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuTWVzc2FnZUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVGVzdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotLyoqCi0gKiBEZWZpbmVzIHRoZSBpbXBsZW1lbnRhdGlvbiB1c2VkIHRvIHJlYWQgdGhlIG1vbml0b3IgY29uZmlnIGRvY3VtZW50cy4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgTW9uaXRvckNvbmZpZ1JlYWRlckltcGwgaW1wbGVtZW50cyBNb25pdG9yQ29uZmlnUmVhZGVyCi17Ci0gIC8qKgotICAgKiBNZXNzYWdlIGxpc3QgcmVmZXJlbmNlLgotICAgKi8KLSAgcHJvdGVjdGVkIE1lc3NhZ2VMaXN0IG1lc3NhZ2VMaXN0ID0gbnVsbDsKLQotICAvKioKLSAgICogRG9jdW1lbnQgbG9jYXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGRvY3VtZW50VVJJOwotCi0gIC8qKgotICAgKiBJbml0aWFsaXplIG1vbml0b3IgY29uZmlnLgotICAgKi8KLSAgcHVibGljIHZvaWQgaW5pdChNZXNzYWdlTGlzdCBtZXNzYWdlTGlzdCkKLSAgewotICAgIHRoaXMubWVzc2FnZUxpc3QgPSBtZXNzYWdlTGlzdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuTW9uaXRvckNvbmZpZ1JlYWRlciNyZWFkTW9uaXRvckNvbmZpZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgTW9uaXRvckNvbmZpZyByZWFkTW9uaXRvckNvbmZpZyhTdHJpbmcgbW9uaXRvckNvbmZpZ1VSSSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBGaWxlUmVhZGVyIGZpbGVSZWFkZXIgPSBudWxsOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKG1vbml0b3JDb25maWdVUkkpOwotICAgIH0KLQotICAgIGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZm5mZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJRmlsZU5vdEZvdW5kRXhjZXB0aW9uKAotICAgICAgICBnZXRNZXNzYWdlKCJjb25maWcwMiIsIG1vbml0b3JDb25maWdVUkksICJDb3VsZCBub3QgZmluZCBmaWxlOiIpLAotICAgICAgICBmbmZlKTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigKLSAgICAgICAgZ2V0TWVzc2FnZSgiY29uZmlnMDMiLCBtb25pdG9yQ29uZmlnVVJJLCAiQ291bGQgbm90IHJlYWQgZmlsZToiKSwKLSAgICAgICAgZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlYWRNb25pdG9yQ29uZmlnKGZpbGVSZWFkZXIpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5tb25pdG9yLmNvbmZpZy5Nb25pdG9yQ29uZmlnUmVhZGVyI3JlYWRNb25pdG9yQ29uZmlnKFJlYWRlcikKLSAgICovCi0gIHB1YmxpYyBNb25pdG9yQ29uZmlnIHJlYWRNb25pdG9yQ29uZmlnKFJlYWRlciByZWFkZXIpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIE1vbml0b3JDb25maWcgbW9uaXRvckNvbmZpZyA9IG5ldyBNb25pdG9yQ29uZmlnSW1wbCgpOwotCi0gICAgLy8gUGFyc2UgWE1MCi0gICAgRG9jdW1lbnQgZG9jID0gWE1MVXRpbHMucGFyc2VYTUwocmVhZGVyKTsKLQotICAgIC8vIFBhcnNlIGVsZW1lbnRzIGluIHRoZSBjb25maWcgZG9jdW1lbnQKLSAgICBwYXJzZUNvbmZpZ0VsZW1lbnQobW9uaXRvckNvbmZpZywgZG9jLmdldERvY3VtZW50RWxlbWVudCgpKTsKLQotICAgIHJldHVybiBtb25pdG9yQ29uZmlnOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudFJlYWRlciNnZXRMb2NhdGlvbigpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldExvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiB0aGlzLmRvY3VtZW50VVJJOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudFJlYWRlciNzZXRMb2NhdGlvbihTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMb2NhdGlvbihTdHJpbmcgZG9jdW1lbnRVUkkpCi0gIHsKLSAgICB0aGlzLmRvY3VtZW50VVJJID0gZG9jdW1lbnRVUkk7Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2UgY29uZmlnIGVsZW1lbnQuCi0gICAqLwotICBwcml2YXRlIHZvaWQgcGFyc2VDb25maWdFbGVtZW50KE1vbml0b3JDb25maWcgbW9uaXRvckNvbmZpZywgRWxlbWVudCBlbGVtZW50KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIEFERDogVmVyaWZ5IHRoYXQgdGhpcyBpcyB0aGUgY29uZmlnIGVsZW1lbnQKLQotICAgIC8vIEdldCBmaXJzdCBjaGlsZCBlbGVtZW50Ci0gICAgRWxlbWVudCBuZXh0RWxlbWVudCA9IFhNTFV0aWxzLmdldEZpcnN0Q2hpbGQoZWxlbWVudCk7Ci0KLSAgICBib29sZWFuIGlzTG9nRHVyYXRpb25EZWZpbmUgPSBmYWxzZTsKLSAgICBib29sZWFuIGlzQ2xlYW51cFRpbWVvdXRTZWNvbmRzRGVmaW5lID0gZmFsc2U7Ci0KLSAgICAvLyBQcm9jZXNzIGVhY2ggY2hpbGQgZWxlbWVudAotICAgIHdoaWxlIChuZXh0RWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIDxsb2dGaWxlPgotICAgICAgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fTE9HX0ZJTEUpKQotICAgICAgewotICAgICAgICAvLyBQYXJzZSB0aGUgbG9nIGVsZW1lbnQKLSAgICAgICAgcGFyc2VMb2dGaWxlRWxlbWVudChtb25pdG9yQ29uZmlnLCBuZXh0RWxlbWVudCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxsb2dEdXJhdGlvbj4KLSAgICAgIGVsc2UgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fTE9HX0RVUkFUSU9OKSkKLSAgICAgIHsKLSAgICAgICAgbW9uaXRvckNvbmZpZy5zZXRMb2dEdXJhdGlvbihnZXRJbnRWYWx1ZShuZXh0RWxlbWVudCkpOwotICAgICAgICBpZiAobW9uaXRvckNvbmZpZy5nZXRMb2dEdXJhdGlvbigpIDwgMCkKLSAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAgICAgZ2V0TWVzc2FnZSgKLSAgICAgICAgICAgICAgImNvbmZpZzA5IiwKLSAgICAgICAgICAgICAgV1NJQ29uc3RhbnRzLkVMRU1fTE9HX0RVUkFUSU9OLAotICAgICAgICAgICAgICAiUGFyYW1ldGVyIHZhbHVlIGNhbid0IGJlIG5lZ2F0aXZlLiBFbGVtZW50IG5hbWU6IikpOwotICAgICAgICBpc0xvZ0R1cmF0aW9uRGVmaW5lID0gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgLy8gPGNsZWFudXBUaW1lb3V0U2Vjb25kcz4KLSAgICAgIGVsc2UgaWYgKAotICAgICAgICBpc0VsZW1lbnQobmV4dEVsZW1lbnQsIFdTSUNvbnN0YW50cy5FTEVNX0NMRUFOVVBfVElNRU9VVF9TRUNPTkRTKSkKLSAgICAgIHsKLSAgICAgICAgbW9uaXRvckNvbmZpZy5zZXRUaW1lb3V0KGdldEludFZhbHVlKG5leHRFbGVtZW50KSk7Ci0gICAgICAgIGlmIChtb25pdG9yQ29uZmlnLmdldFRpbWVvdXQoKSA8IDApCi0gICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgICAgICJjb25maWcwOSIsCi0gICAgICAgICAgICAgIFdTSUNvbnN0YW50cy5FTEVNX0NMRUFOVVBfVElNRU9VVF9TRUNPTkRTLAotICAgICAgICAgICAgICAiUGFyYW1ldGVyIHZhbHVlIGNhbid0IGJlIG5lZ2F0aXZlLiBFbGVtZW50IG5hbWU6IikpOwotICAgICAgICBpc0NsZWFudXBUaW1lb3V0U2Vjb25kc0RlZmluZSA9IHRydWU7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxtYW5JblRoZU1pZGRsZT4KLSAgICAgIGVsc2UgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fTUFOX0lOX1RIRV9NSURETEUpKQotICAgICAgewotICAgICAgICBNYW5JblRoZU1pZGRsZSBtYW5JblRoZU1pZGRsZSA9IG5ldyBNYW5JblRoZU1pZGRsZUltcGwoKTsKLSAgICAgICAgbW9uaXRvckNvbmZpZy5zZXRNYW5JblRoZU1pZGRsZShtYW5JblRoZU1pZGRsZSk7Ci0gICAgICAgIHBhcnNlTWFuSW5UaGVNaWRkbGVFbGVtZW50KG1hbkluVGhlTWlkZGxlLCBuZXh0RWxlbWVudCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxjb21tZW50PgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9DT01NRU5UKSkKLSAgICAgIHsKLSAgICAgICAgQ29tbWVudCBjb21tZW50ID0gbmV3IENvbW1lbnRJbXBsKCk7Ci0gICAgICAgIGNvbW1lbnQuc2V0VGV4dChYTUxVdGlscy5nZXRUZXh0KG5leHRFbGVtZW50KSk7Ci0gICAgICAgIG1vbml0b3JDb25maWcuc2V0Q29tbWVudChjb21tZW50KTsKLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBBREQ6IGhhbmRsZSBpbnZhbGlkIGVsZW1lbnRzCi0gICAgICB9Ci0KLSAgICAgIC8vIEdldCBuZXh0IGVsZW1lbnQKLSAgICAgIG5leHRFbGVtZW50ID0gWE1MVXRpbHMuZ2V0TmV4dFNpYmxpbmcobmV4dEVsZW1lbnQpOwotICAgIH0KLQotICAgIGlmICghaXNMb2dEdXJhdGlvbkRlZmluZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICJjb25maWcxMCIsCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkVMRU1fTE9HX0RVUkFUSU9OLAotICAgICAgICAgICJFbGVtZW50IGlzIG1pc3NpbmcuIEVsZW1lbnQgbmFtZToiKSk7Ci0gICAgfQotICAgIGlmICghaXNDbGVhbnVwVGltZW91dFNlY29uZHNEZWZpbmUpCi0gICAgewotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgZ2V0TWVzc2FnZSgKLSAgICAgICAgICAiY29uZmlnMTAiLAotICAgICAgICAgIFdTSUNvbnN0YW50cy5FTEVNX0NMRUFOVVBfVElNRU9VVF9TRUNPTkRTLAotICAgICAgICAgICJFbGVtZW50IGlzIG1pc3NpbmcuIEVsZW1lbnQgbmFtZToiKSk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIGxvZ0ZpbGUgZWxlbWVudC4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBwYXJzZUxvZ0ZpbGVFbGVtZW50KAotICAgIE1vbml0b3JDb25maWcgbW9uaXRvckNvbmZpZywKLSAgICBFbGVtZW50IGVsZW1lbnQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gR2V0IHRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUKLSAgICBtb25pdG9yQ29uZmlnLnNldExvZ0xvY2F0aW9uKAotICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUoZWxlbWVudCwgV1NJQ29uc3RhbnRzLkFUVFJfTE9DQVRJT04pKTsKLQotICAgIC8vIEdldCB0aGUgcmVwbGFjZSBhdHRyaWJ1dGUKLSAgICBtb25pdG9yQ29uZmlnLnNldFJlcGxhY2VMb2coCi0gICAgICBYTUxVdGlscy5nZXRCb29sZWFuVmFsdWUoZWxlbWVudCwgV1NJQ29uc3RhbnRzLkFUVFJfUkVQTEFDRSwgZmFsc2UpKTsKLQotICAgIC8vIEdldCBmaXJzdCBjaGlsZCBlbGVtZW50Ci0gICAgRWxlbWVudCBuZXh0RWxlbWVudCA9IFhNTFV0aWxzLmdldEZpcnN0Q2hpbGQoZWxlbWVudCk7Ci0KLSAgICAvLyBQcm9jZXNzIGVhY2ggY2hpbGQgZWxlbWVudAotICAgIHdoaWxlIChuZXh0RWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIDxhZGRTdHlsZVNoZWV0PgotICAgICAgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fQUREX1NUWUxFX1NIRUVUKSkKLSAgICAgIHsKLSAgICAgICAgQWRkU3R5bGVTaGVldCBhZGRTdHlsZVNoZWV0ID0gbmV3IEFkZFN0eWxlU2hlZXRJbXBsKCk7Ci0KLSAgICAgICAgLy8gUGFyc2UgdGhlIGVsZW1lbnQgIAotICAgICAgICBUZXN0VXRpbHMucGFyc2VBZGRTdHlsZVNoZWV0KAotICAgICAgICAgIG5leHRFbGVtZW50LAotICAgICAgICAgIGFkZFN0eWxlU2hlZXQsCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkRFRkFVTFRfTE9HX1hTTCk7Ci0KLSAgICAgICAgLy8gU2V0IGFkZCBzdHlsZSBzaGVldAotICAgICAgICBtb25pdG9yQ29uZmlnLnNldEFkZFN0eWxlU2hlZXQoYWRkU3R5bGVTaGVldCk7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gQUREOiBoYW5kbGUgaW52YWxpZCBlbGVtZW50cwotICAgICAgfQotCi0gICAgICAvLyBHZXQgbmV4dCBlbGVtZW50Ci0gICAgICBuZXh0RWxlbWVudCA9IFhNTFV0aWxzLmdldE5leHRTaWJsaW5nKG5leHRFbGVtZW50KTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2UgbWFuSW50aGVNaWRkbGUgZWxlbWVudC4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBwYXJzZU1hbkluVGhlTWlkZGxlRWxlbWVudCgKLSAgICBNYW5JblRoZU1pZGRsZSBtYW5JblRoZU1pZGRsZSwKLSAgICBFbGVtZW50IGVsZW1lbnQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gR2V0IGZpcnN0IGNoaWxkIGVsZW1lbnQKLSAgICBFbGVtZW50IG5leHRFbGVtZW50ID0gWE1MVXRpbHMuZ2V0Rmlyc3RDaGlsZChlbGVtZW50KTsKLQotICAgIC8vIFByb2Nlc3MgZWFjaCBjaGlsZCBlbGVtZW50Ci0gICAgd2hpbGUgKG5leHRFbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgLy8gPHJlZGlyZWN0PgotICAgICAgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fUkVESVJFQ1QpKQotICAgICAgewotICAgICAgICBSZWRpcmVjdCByZWRpcmVjdCA9IG5ldyBSZWRpcmVjdEltcGwoKTsKLSAgICAgICAgbWFuSW5UaGVNaWRkbGUuYWRkUmVkaXJlY3QocmVkaXJlY3QpOwotICAgICAgICBwYXJzZVJlZGlyZWN0RWxlbWVudChyZWRpcmVjdCwgbmV4dEVsZW1lbnQpOwotICAgICAgfQotCi0gICAgICAvLyA8Y29tbWVudD4KLSAgICAgIGVsc2UgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fQ09NTUVOVCkpCi0gICAgICB7Ci0gICAgICAgIENvbW1lbnQgY29tbWVudCA9IG5ldyBDb21tZW50SW1wbCgpOwotICAgICAgICBjb21tZW50LnNldFRleHQoWE1MVXRpbHMuZ2V0VGV4dChuZXh0RWxlbWVudCkpOwotICAgICAgICBtYW5JblRoZU1pZGRsZS5zZXRDb21tZW50KGNvbW1lbnQpOwotICAgICAgfQotCi0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIEFERDogaGFuZGxlIGludmFsaWQgZWxlbWVudHMKLSAgICAgIH0KLQotICAgICAgLy8gR2V0IG5leHQgZWxlbWVudAotICAgICAgbmV4dEVsZW1lbnQgPSBYTUxVdGlscy5nZXROZXh0U2libGluZyhuZXh0RWxlbWVudCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIHJlZGlyZWN0IGVsZW1lbnQuCi0gICAqLwotICBwcml2YXRlIHZvaWQgcGFyc2VSZWRpcmVjdEVsZW1lbnQoUmVkaXJlY3QgcmVkaXJlY3QsIEVsZW1lbnQgZWxlbWVudCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBHZXQgZmlyc3QgY2hpbGQgZWxlbWVudAotICAgIEVsZW1lbnQgbmV4dEVsZW1lbnQgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKGVsZW1lbnQpOwotCi0gICAgYm9vbGVhbiBpc0xpc3RlblBvcnREZWZpbmUgPSBmYWxzZTsKLSAgICBib29sZWFuIGlzU2NoZW1lQW5kSG9zdFBvcnREZWZpbmUgPSBmYWxzZTsKLSAgICBib29sZWFuIGlzTWF4Q29ubmVjdGlvbnNEZWZpbmUgPSBmYWxzZTsKLSAgICBib29sZWFuIGlzUmVhZFRpbWVvdXRTZWNvbmRzRGVmaW5lID0gZmFsc2U7Ci0KLSAgICAvLyBQcm9jZXNzIGVhY2ggY2hpbGQgZWxlbWVudAotICAgIHdoaWxlIChuZXh0RWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIDxsaXN0ZW5Qb3J0PgotICAgICAgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fTElTVEVOX1BPUlQpKQotICAgICAgewotICAgICAgICByZWRpcmVjdC5zZXRMaXN0ZW5Qb3J0KGdldEludFZhbHVlKG5leHRFbGVtZW50KSk7Ci0gICAgICAgIGlzTGlzdGVuUG9ydERlZmluZSA9IHRydWU7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxzY2hlbWVBbmRIb3N0UG9ydD4KLSAgICAgIGVsc2UgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fU0NIRU1FX0FORF9IT1NUUE9SVCkpCi0gICAgICB7Ci0gICAgICAgIHJlZGlyZWN0LnNldEhvc3QoWE1MVXRpbHMuZ2V0VGV4dChuZXh0RWxlbWVudCkpOwotICAgICAgICBpc1NjaGVtZUFuZEhvc3RQb3J0RGVmaW5lID0gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgLy8gPG1heENvbm5lY3Rpb25zPgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9NQVhfQ09OTkVDVElPTlMpKQotICAgICAgewotICAgICAgICByZWRpcmVjdC5zZXRNYXhDb25uZWN0aW9ucyhnZXRJbnRWYWx1ZShuZXh0RWxlbWVudCkpOwotICAgICAgICBpc01heENvbm5lY3Rpb25zRGVmaW5lID0gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgLy8gPHJlYWRUaW1lb3V0U2Vjb25kcz4KLSAgICAgIGVsc2UgaWYgKGlzRWxlbWVudChuZXh0RWxlbWVudCwgV1NJQ29uc3RhbnRzLkVMRU1fUkVBRF9USU1FT1VUX1NFQ09ORFMpKQotICAgICAgewotICAgICAgICByZWRpcmVjdC5zZXRSZWFkVGltZW91dFNlY29uZHMoZ2V0SW50VmFsdWUobmV4dEVsZW1lbnQpKTsKLSAgICAgICAgaWYgKHJlZGlyZWN0LmdldFJlYWRUaW1lb3V0U2Vjb25kcygpIDwgMCkKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICAgICAiY29uZmlnMDkiLAotICAgICAgICAgICAgICBXU0lDb25zdGFudHMuRUxFTV9SRUFEX1RJTUVPVVRfU0VDT05EUywKLSAgICAgICAgICAgICAgIlBhcmFtZXRlciB2YWx1ZSBjYW4ndCBiZSBuZWdhdGl2ZS4gRWxlbWVudCBuYW1lOiIpKTsKLSAgICAgICAgfQotICAgICAgICBpc1JlYWRUaW1lb3V0U2Vjb25kc0RlZmluZSA9IHRydWU7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxjb21tZW50PgotICAgICAgZWxzZSBpZiAoaXNFbGVtZW50KG5leHRFbGVtZW50LCBXU0lDb25zdGFudHMuRUxFTV9DT01NRU5UKSkKLSAgICAgIHsKLSAgICAgICAgQ29tbWVudCBjb21tZW50ID0gbmV3IENvbW1lbnRJbXBsKCk7Ci0gICAgICAgIGNvbW1lbnQuc2V0VGV4dChYTUxVdGlscy5nZXRUZXh0KG5leHRFbGVtZW50KSk7Ci0gICAgICAgIHJlZGlyZWN0LnNldENvbW1lbnQoY29tbWVudCk7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gQUREOiBoYW5kbGUgaW52YWxpZCBlbGVtZW50cwotICAgICAgfQotCi0gICAgICAvLyBHZXQgbmV4dCBlbGVtZW50Ci0gICAgICBuZXh0RWxlbWVudCA9IFhNTFV0aWxzLmdldE5leHRTaWJsaW5nKG5leHRFbGVtZW50KTsKLSAgICB9Ci0KLSAgICBpZiAoIWlzTGlzdGVuUG9ydERlZmluZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICJjb25maWcxMCIsCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkVMRU1fTElTVEVOX1BPUlQsCi0gICAgICAgICAgIkVsZW1lbnQgaXMgbWlzc2luZy4gRWxlbWVudCBuYW1lOiIpKTsKLSAgICB9Ci0gICAgaWYgKCFpc1NjaGVtZUFuZEhvc3RQb3J0RGVmaW5lKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgImNvbmZpZzEwIiwKLSAgICAgICAgICBXU0lDb25zdGFudHMuRUxFTV9TQ0hFTUVfQU5EX0hPU1RQT1JULAotICAgICAgICAgICJFbGVtZW50IGlzIG1pc3NpbmcuIEVsZW1lbnQgbmFtZToiKSk7Ci0KLSAgICB9Ci0gICAgaWYgKCFpc01heENvbm5lY3Rpb25zRGVmaW5lKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgIGdldE1lc3NhZ2UoCi0gICAgICAgICAgImNvbmZpZzEwIiwKLSAgICAgICAgICBXU0lDb25zdGFudHMuRUxFTV9NQVhfQ09OTkVDVElPTlMsCi0gICAgICAgICAgIkVsZW1lbnQgaXMgbWlzc2luZy4gRWxlbWVudCBuYW1lOiIpKTsKLSAgICB9Ci0gICAgaWYgKCFpc1JlYWRUaW1lb3V0U2Vjb25kc0RlZmluZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICJjb25maWcxMCIsCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkVMRU1fUkVBRF9USU1FT1VUX1NFQ09ORFMsCi0gICAgICAgICAgIkVsZW1lbnQgaXMgbWlzc2luZy4gRWxlbWVudCBuYW1lOiIpKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogRGV0ZXJtaW5lIGlmIHRoaXMgZWxlbWVudCBtYXRjaGVzIHNwZWNpZmllZCBsb2NhbCBuYW1lIGluIHRoZSBhbmFseXplciBjb25maWcgbmFtZXNwYWNlLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBsb2NhbE5hbWUpCi0gIHsKLSAgICByZXR1cm4gaXNFbGVtZW50KAotICAgICAgZWxlbWVudCwKLSAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfV1NJX01PTklUT1JfQ09ORklHLAotICAgICAgbG9jYWxOYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBEZXRlcm1pbmUgaWYgdGhpcyBlbGVtZW50IG1hdGNoZXMgc3BlY2lmaWVkIGxvY2FsIG5hbWUgaW4gdGhlIGFuYWx5emVyIGNvbmZpZyBuYW1lc3BhY2UuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gaXNFbGVtZW50KAotICAgIEVsZW1lbnQgZWxlbWVudCwKLSAgICBTdHJpbmcgbmFtZXNwYWNlLAotICAgIFN0cmluZyBsb2NhbE5hbWUpCi0gIHsKLSAgICByZXR1cm4gWE1MVXRpbHMuaXNFbGVtZW50KGVsZW1lbnQsIG5hbWVzcGFjZSwgbG9jYWxOYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgZWxlbWVudCB0ZXh0IGFzIGFuIGludC4KLSAgICovCi0gIHByaXZhdGUgaW50IGdldEludFZhbHVlKEVsZW1lbnQgZWxlbWVudCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgaW50IHJldHVyblZhbHVlOwotICAgIFN0cmluZyBpbnRWYWx1ZSA9IG51bGw7Ci0KLSAgICAvLyBHZXQgdmFsdWUgYXMgYSBzdHJpbmcKLSAgICBpZiAoKGludFZhbHVlID0gWE1MVXRpbHMuZ2V0VGV4dChlbGVtZW50KSkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKAotICAgICAgICBnZXRNZXNzYWdlKAotICAgICAgICAgICJjb25maWcwNCIsCi0gICAgICAgICAgZWxlbWVudC5nZXRMb2NhbE5hbWUoKSArICJFbGVtZW50IG11c3QgY29udGFpbiBhbiBpbnRlZ2VyIHZhbHVlOiIpKTsKLSAgICB9Ci0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuVmFsdWUgPSBJbnRlZ2VyLnZhbHVlT2YoaW50VmFsdWUpLmludFZhbHVlKCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGludAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgbWVzc2FnZSBmcm9tIHJlc291cmNlIGJ1bmRsZS4KLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIGdldE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2VJRCwgU3RyaW5nIGRlZmF1bHRNZXNzYWdlKQotICB7Ci0gICAgcmV0dXJuIGdldE1lc3NhZ2UobWVzc2FnZUlELCBudWxsLCBkZWZhdWx0TWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IG1lc3NhZ2UgZnJvbSByZXNvdXJjZSBidW5kbGUuCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBnZXRNZXNzYWdlKAotICAgIFN0cmluZyBtZXNzYWdlSUQsCi0gICAgU3RyaW5nIG1lc3NhZ2VEYXRhLAotICAgIFN0cmluZyBkZWZhdWx0TWVzc2FnZSkKLSAgewotICAgIFN0cmluZyBtZXNzYWdlID0gZGVmYXVsdE1lc3NhZ2U7Ci0gICAgaWYgKG1lc3NhZ2VMaXN0ICE9IG51bGwpCi0gICAgICBtZXNzYWdlID0gbWVzc2FnZUxpc3QuZ2V0TWVzc2FnZShtZXNzYWdlSUQsIG1lc3NhZ2VEYXRhLCBkZWZhdWx0TWVzc2FnZSk7Ci0gICAgZWxzZQotICAgICAgbWVzc2FnZSArPSAiICIgKyBtZXNzYWdlRGF0YSArICIuIjsKLQotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9pbXBsL1JlZGlyZWN0SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvbW9uaXRvci9jb25maWcvaW1wbC9SZWRpcmVjdEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFkMTY5Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9tb25pdG9yL2NvbmZpZy9pbXBsL1JlZGlyZWN0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjk5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5tb25pdG9yLmNvbmZpZy5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuQ29tbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubW9uaXRvci5jb25maWcuUmVkaXJlY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLQotLyoqCi0gKiAgVGhlIGltcGxlbWVudGF0aW9uIGZvciBtb25pdG9yIGNvbmZpZyBSZWRpcmVjdCBlbGVtZW50LgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBSZWRpcmVjdEltcGwgaW1wbGVtZW50cyBSZWRpcmVjdAotewotICAvKioKLSAgICogQ29tbWVudC4KLSAgICovCi0gIHByb3RlY3RlZCBDb21tZW50IGNvbW1lbnQ7Ci0KLSAgLyoqCi0gICAqIExpc3RlbiBwb3J0LgotICAgKi8KLSAgcHJvdGVjdGVkIGludCBsaXN0ZW5Qb3J0OwotCi0gIC8qKgotICAgKiBIb3N0LgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBob3N0OwotCi0gIC8qKgotICAgKiBUbyBwcm90b2NvbC4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgdG9Qcm90b2NvbDsKLQotICAvKioKLSAgICogVG8gcG9ydC4KLSAgICovCi0gIHByb3RlY3RlZCBpbnQgdG9Qb3J0OwotCi0gIC8qKgotICAgKiBUbyBob3N0LgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyB0b0hvc3Q7Ci0KLSAgLyoqCi0gICAqIE1heGltdW0gY29ubmVjdGlvbnMuCi0gICAqLwotICBwcm90ZWN0ZWQgaW50IG1heENvbm5lY3Rpb25zOwotCi0gIC8qKgotICAgKiBSZWFkIHRpbWVvdXQgc2Vjb25kcy4KLSAgICovCi0gIHByb3RlY3RlZCBpbnQgcmVhZFRpbWVvdXRTZWNvbmRzOwotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuUmVkaXJlY3QjZ2V0Q29tbWVudCgpCi0gICAqLwotICBwdWJsaWMgQ29tbWVudCBnZXRDb21tZW50KCkKLSAgewotICAgIHJldHVybiB0aGlzLmNvbW1lbnQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLlJlZGlyZWN0I3NldENvbW1lbnQoY29tbWVudCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldENvbW1lbnQoQ29tbWVudCBjb21tZW50KQotICB7Ci0gICAgdGhpcy5jb21tZW50ID0gY29tbWVudDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuUmVkaXJlY3QjZ2V0TGlzdGVuUG9ydCgpCi0gICAqLwotICBwdWJsaWMgaW50IGdldExpc3RlblBvcnQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMubGlzdGVuUG9ydDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuUmVkaXJlY3Qjc2V0TGlzdGVuUG9ydChpbnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRMaXN0ZW5Qb3J0KGludCBsaXN0ZW5Qb3J0KQotICB7Ci0gICAgdGhpcy5saXN0ZW5Qb3J0ID0gbGlzdGVuUG9ydDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuUmVkaXJlY3QjZ2V0SG9zdCgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEhvc3QoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuaG9zdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuUmVkaXJlY3Qjc2V0SG9zdChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRIb3N0KFN0cmluZyBob3N0KQotICB7Ci0gICAgdGhpcy5ob3N0ID0gaG9zdDsKLQotICAgIC8vIFBhcnNlIGxvY2F0aW9uIHRvIGdldCBwcm90b2NvbCwgaG9zdCBhbmQgcG9ydAotICAgIFVSTCB1cmw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgdXJsID0gbmV3IFVSTChob3N0KTsKLSAgICAgIHRoaXMudG9Qcm90b2NvbCA9IHVybC5nZXRQcm90b2NvbCgpOwotICAgICAgdGhpcy50b0hvc3QgPSB1cmwuZ2V0SG9zdCgpOwotICAgICAgdGhpcy50b1BvcnQgPSB1cmwuZ2V0UG9ydCgpOwotICAgICAgaWYgKHRoaXMudG9Qb3J0ID09IC0xKQotICAgICAgewotICAgICAgICBpZiAodGhpcy50b1Byb3RvY29sLmVxdWFsc0lnbm9yZUNhc2UoImh0dHAiKSkKLSAgICAgICAgICB0aGlzLnRvUG9ydCA9IDgwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgdGhpcy50b1BvcnQgPSA4MDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11ZSkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAiVGhlICIKLSAgICAgICAgICArIFdTSUNvbnN0YW50cy5FTEVNX1NDSEVNRV9BTkRfSE9TVFBPUlQKLSAgICAgICAgICArICIgb3B0aW9uIGNvbnRhaW5zIGFuIGludmFsaWQgdmFsdWU6ICIKLSAgICAgICAgICArIGhvc3QpOwotICAgIH0KLQotICAgIGlmICgodXJsLmdldFBhdGgoKSAhPSBudWxsICYmICF1cmwuZ2V0UGF0aCgpLmVxdWFscygiIikpCi0gICAgICB8fCAodXJsLmdldFF1ZXJ5KCkgIT0gbnVsbCAmJiAhdXJsLmdldFF1ZXJ5KCkuZXF1YWxzKCIiKSkpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAiVGhlICIKLSAgICAgICAgICArIFdTSUNvbnN0YW50cy5FTEVNX1NDSEVNRV9BTkRfSE9TVFBPUlQKLSAgICAgICAgICArICIgb3B0aW9uIG11c3QgY29udGFpbiBvbmx5IGEgc2NoZW1lLCBob3N0IGFuZCBwb3J0OiAiCi0gICAgICAgICAgKyBob3N0KTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdG8gcG9ydC4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLm1vbml0b3IuY29uZmlnLlJlZGlyZWN0I2dldFRvUG9ydCgpCi0gICAqLwotICBwdWJsaWMgaW50IGdldFRvUG9ydCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy50b1BvcnQ7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRvIGhvc3QuCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5tb25pdG9yLmNvbmZpZy5SZWRpcmVjdCNnZXRUb0hvc3QoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUb0hvc3QoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMudG9Ib3N0OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0byBwcm90b2NvbC4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLm1vbml0b3IuY29uZmlnLlJlZGlyZWN0I2dldFRvUHJvdG9jb2woKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUb1Byb3RvY29sKCkKLSAgewotICAgIHJldHVybiB0aGlzLnRvUHJvdG9jb2w7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLlJlZGlyZWN0I2dldE1heENvbm5lY3Rpb25zKCkKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0TWF4Q29ubmVjdGlvbnMoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMubWF4Q29ubmVjdGlvbnM7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0Lm1vbml0b3IuY29uZmlnLlJlZGlyZWN0I3NldE1heENvbm5lY3Rpb25zKGludCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldE1heENvbm5lY3Rpb25zKGludCBtYXhDb25uZWN0aW9ucykKLSAgewotICAgIHRoaXMubWF4Q29ubmVjdGlvbnMgPSBtYXhDb25uZWN0aW9uczsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuUmVkaXJlY3QjZ2V0UmVhZFRpbWVvdXRTZWNvbmRzKCkKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0UmVhZFRpbWVvdXRTZWNvbmRzKCkKLSAgewotICAgIHJldHVybiB0aGlzLnJlYWRUaW1lb3V0U2Vjb25kczsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QubW9uaXRvci5jb25maWcuUmVkaXJlY3Qjc2V0UmVhZFRpbWVvdXRTZWNvbmRzKGludCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlYWRUaW1lb3V0U2Vjb25kcyhpbnQgcmVhZFRpbWVvdXRTZWNvbmRzKQotICB7Ci0gICAgdGhpcy5yZWFkVGltZW91dFNlY29uZHMgPSByZWFkVGltZW91dFNlY29uZHM7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLQotICAgIHB3LnByaW50bG4oIiAgICBjb21tZW50IC4uLi4uLi4uLi4uLi4uLi4uLi4gIiArIHRoaXMuY29tbWVudCk7Ci0gICAgcHcucHJpbnRsbigiICAgIGxpc3RlblBvcnQgLi4uLi4uLi4uLi4uLi4uLiAiICsgdGhpcy5saXN0ZW5Qb3J0KTsKLSAgICBwdy5wcmludGxuKCIgICAgaG9zdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uICIgKyBjdXRIb3N0KHRoaXMuaG9zdCkpOwotICAgIHB3LnByaW50bG4oIiAgICBtYXhDb25uZWN0aW9ucyAuLi4uLi4uLi4uLi4gIiArIHRoaXMubWF4Q29ubmVjdGlvbnMpOwotICAgIHB3LnByaW50bG4oIiAgICByZWFkVGltZW91dFNlY29uZHMgLi4uLi4uLi4gIiArIHRoaXMucmVhZFRpbWVvdXRTZWNvbmRzKTsKLQotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEZvcm1hdHMgaG9zdCBuYW1lIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAocGF0aCBpcyBvbW1pdGVkKS4KLSAgICogQHBhcmFtIGhvc3QKLSAgICogQHJldHVybgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgY3V0SG9zdChTdHJpbmcgaG9zdCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIFVSTCB1cmwgPSBuZXcgVVJMKGhvc3QpOwotICAgICAgU3RyaW5nIHBvcnQgPSB1cmwuZ2V0UG9ydCgpID4gLTEgPyBTdHJpbmcudmFsdWVPZih1cmwuZ2V0UG9ydCgpKSA6ICI4MCI7Ci0gICAgICAvLyBSRU1PVkVEOiBUaGlzIGNvZGUgb25seSB3b3JrcyBvbiAxLjQKLSAgICAgIC8vIFN0cmluZy52YWx1ZU9mKHVybC5nZXREZWZhdWx0UG9ydCgpKTsKLSAgICAgIHJldHVybiB1cmwuZ2V0UHJvdG9jb2woKSArICI6Ly8iICsgdXJsLmdldEhvc3QoKSArICI6IiArIHBvcnQ7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXR1cm4gaG9zdDsKLSAgICB9Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50RWxlbWVudCN0b1hNTFN0cmluZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLQotICAgIFN0cmluZyBuc05hbWUgPSBuYW1lc3BhY2VOYW1lOwotICAgIGlmICgoIW5zTmFtZS5lcXVhbHMoIiIpICYmICghbnNOYW1lLmVuZHNXaXRoKCI6IikpKSkKLSAgICAgIG5zTmFtZSArPSAiOiI7Ci0KLSAgICAvLyBTdGFydCBlbGVtZW50Ci0gICAgcHcucHJpbnRsbigiICAgICAgICA8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX1JFRElSRUNUICsgIj4iKTsKLQotICAgIC8vIENvbW1lbnQKLSAgICBpZiAodGhpcy5jb21tZW50ICE9IG51bGwpCi0gICAgewotICAgICAgcHcucHJpbnRsbih0aGlzLmNvbW1lbnQudG9YTUxTdHJpbmcobnNOYW1lKSk7Ci0gICAgfQotCi0gICAgLy8gbGlzdGVuUG9ydAotICAgIHB3LnByaW50KCIgICAgICAgICAgPCIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9MSVNURU5fUE9SVCArICI+Iik7Ci0gICAgcHcucHJpbnQoZ2V0TGlzdGVuUG9ydCgpKTsKLSAgICBwdy5wcmludGxuKCI8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9MSVNURU5fUE9SVCArICI+Iik7Ci0KLSAgICAvLyBzY2hlbWVBbmRIb3N0UG9ydAotICAgIHB3LnByaW50KAotICAgICAgIiAgICAgICAgICA8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX1NDSEVNRV9BTkRfSE9TVFBPUlQgKyAiPiIpOwotICAgIHB3LnByaW50KFhNTFV0aWxzLnhtbEVzY2FwZWRTdHJpbmcoZ2V0SG9zdCgpKSk7Ci0gICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fU0NIRU1FX0FORF9IT1NUUE9SVCArICI+Iik7Ci0KLSAgICAvLyBtYXhDb25uZWN0aW9ucwotICAgIHB3LnByaW50KCIgICAgICAgICAgPCIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9NQVhfQ09OTkVDVElPTlMgKyAiPiIpOwotICAgIHB3LnByaW50KGdldE1heENvbm5lY3Rpb25zKCkpOwotICAgIHB3LnByaW50bG4oIjwvIiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX01BWF9DT05ORUNUSU9OUyArICI+Iik7Ci0KLSAgICAvLyByZWFkVGltZW91dFNlY29uZHMKLSAgICBwdy5wcmludCgKLSAgICAgICIgICAgICAgICAgPCIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9SRUFEX1RJTUVPVVRfU0VDT05EUyArICI+Iik7Ci0gICAgcHcucHJpbnQoZ2V0UmVhZFRpbWVvdXRTZWNvbmRzKCkpOwotICAgIHB3LnByaW50bG4oIjwvIiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX1JFQURfVElNRU9VVF9TRUNPTkRTICsgIj4iKTsKLQotICAgIC8vIEVuZCBFbGVtZW50Ci0gICAgcHcucHJpbnRsbigiICAgICAgICA8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9SRURJUkVDVCArICI+Iik7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL0VudHJ5VHlwZUxpc3QuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvRW50cnlUeXBlTGlzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDhkMTNhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvRW50cnlUeXBlTGlzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50OwotCi0vKioKLSAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gbWFpbnRhaW4gYSBwcm9maWxlIEVudHJ5VHlwZUxpc3QuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRW50cnlUeXBlTGlzdCBleHRlbmRzIERvY3VtZW50RWxlbWVudAotewotICAvKioKLSAgICogTG9nIGlucHV0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9HX0lOUFVUX05PTkUgPSAibm9uZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExPR19JTlBVVF9SRVFVRVNUID0gInJlcXVlc3QiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMT0dfSU5QVVRfUkVTUE9OU0UgPSAicmVzcG9uc2UiOwotCi0gIC8qKgotICAgKiBXU0RMIGlucHV0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NETF9JTlBVVF9OT05FID0gIm5vbmUiOwotCi0gIC8qKgotICAgKiBVRERJIGlucHV0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVURESV9JTlBVVF9OT05FID0gIm5vbmUiOwotCi0gIC8qKgotICAgKiBHZXQgbG9nIGlucHV0LgotICAgKiBAcmV0dXJuIGxvZyBpbnB1dC4KLSAgICogQHNlZSAjc2V0TG9nSW5wdXQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9nSW5wdXQoKTsKLQotICAvKioKLSAgICogU2V0IGxvZyBpbnB1dC4KLSAgICogQHBhcmFtIGxvZ0lucHV0IGxvZyBpbnB1dC4KLSAgICogQHNlZSAjZ2V0TG9nSW5wdXQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvZ0lucHV0KFN0cmluZyBsb2dJbnB1dCk7Ci0KLSAgLyoqCi0gICAqIEdldCBXU0RMIGlucHV0LgotICAgKiBAcmV0dXJuIFdTREwgaW5wdXQuCi0gICAqIEBzZWUgI3NldFdTRExJbnB1dAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRXU0RMSW5wdXQoKTsKLQotICAvKioKLSAgICogU2V0IFdTREwgaW5wdXQuCi0gICAqIEBwYXJhbSB3c2RsSW5wdXQgV1NETCBpbnB1dC4KLSAgICogQHNlZSAjZ2V0V1NETElucHV0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRXU0RMSW5wdXQoU3RyaW5nIHdzZGxJbnB1dCk7Ci0KLSAgLyoqCi0gICAqIEdldCBVRERJIGlucHV0LgotICAgKiBAcmV0dXJuIFVEREkgaW5wdXQuCi0gICAqIEBzZWUgI3NldFVERElJbnB1dAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRVRERJSW5wdXQoKTsKLQotICAvKioKLSAgICogU2V0IFVEREkgaW5wdXQuCi0gICAqIEBwYXJhbSB1ZGRpSW5wdXQgVURESSBpbnB1dC4KLSAgICogQHNlZSAjZ2V0VURESUlucHV0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRVRERJSW5wdXQoU3RyaW5nIHVkZGlJbnB1dCk7Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvUHJvZmlsZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS9Qcm9maWxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMzI2YzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS9Qcm9maWxlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQ7Ci0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBtYWludGFpbiBQcm9maWxlIGluZm9ybWF0aW9uLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFByb2ZpbGUgZXh0ZW5kcyBEb2N1bWVudEVsZW1lbnQKLXsKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS9Qcm9maWxlQXJ0aWZhY3QuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvUHJvZmlsZUFydGlmYWN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MzRmMmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS9Qcm9maWxlQXJ0aWZhY3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlOwotCi1pbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuQXJ0aWZhY3RUeXBlOwotCi0vKioKLSAqIEFuIGFydGlmYWN0IGNvbnRhaW5zIGEgc2V0IG9mIHJlbGF0ZWQgdGVzdCBhc3NlcnRpb25zLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgUHJvZmlsZUFydGlmYWN0IGV4dGVuZHMgRG9jdW1lbnRFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9BUlRJRkFDVDsKLQotICAvKioKLSAgICogUU5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFFOQU1FID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfQVNTRVJUSU9OUywgRUxFTV9OQU1FKTsKLQotICAvKioKLSAgICogR2V0IHR5cGUuCi0gICAqIEByZXR1cm4gYXJ0aWZhY3QgdHlwZS4KLSAgICogQHNlZSAjc2V0VHlwZQotICAgKi8KLSAgcHVibGljIEFydGlmYWN0VHlwZSBnZXRUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFNldCB0eXBlLgotICAgKiBAcGFyYW0gdHlwZSBhbiBhcnRpZmFjdCB0eXBlLgotICAgKiBAc2VlICNnZXRUeXBlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUeXBlKEFydGlmYWN0VHlwZSB0eXBlKTsKLQotICAvKioKLSAgICogR2V0IHNwZWNpZmljYXRpb24gbGlzdC4KLSAgICogQHJldHVybiBzcGVjaWZpY2F0aW9uIGxpc3QuCi0gICAqIEBzZWUgI3NldFNwZWNpZmljYXRpb25MaXN0Ci0gICAqLwotICBwdWJsaWMgVmVjdG9yIGdldFNwZWNpZmljYXRpb25MaXN0KCk7Ci0KLSAgLyoqCi0gICAqIFNldCBzcGVjaWZpY2F0aW9uIGxpc3QuCi0gICAqIEBwYXJhbSBzcGVjaWZpY2F0aW9uTGlzdCBzcGVjaWZpY2F0aW9uIGxpc3QuCi0gICAqIEBzZWUgI2dldFNwZWNpZmljYXRpb25MaXN0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTcGVjaWZpY2F0aW9uTGlzdChWZWN0b3Igc3BlY2lmaWNhdGlvbkxpc3QpOwotCi0gIC8qKgotICAgKiBHZXQgdGVzdCBhc3NlcnRpb24gbGlzdC4KLSAgICogQHJldHVybiB0ZXN0IGFzc2VydGlvbiBsaXN0LgotICAgKi8KLSAgcHVibGljIExpbmtlZExpc3QgZ2V0VGVzdEFzc2VydGlvbkxpc3QoKTsKLQotICAvKioKLSAgICogR2V0IHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAcGFyYW0gaWQgdGVzdCBhc3NlcnRpb24gaWQuCi0gICAqIEByZXR1cm4gdGVzdCBhc3NlcnRpb24uCi0gICAqLwotICBwdWJsaWMgVGVzdEFzc2VydGlvbiBnZXRUZXN0QXNzZXJ0aW9uKFN0cmluZyBpZCk7Ci0KLSAgLyoqCi0gICAqIEFkZCB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHBhcmFtIHRlc3RBc3NlcnRpb24gdGVzdCBhc3NlcnRpb24uCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRUZXN0QXNzZXJ0aW9uKFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbik7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL1Byb2ZpbGVBc3NlcnRpb25zLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL1Byb2ZpbGVBc3NlcnRpb25zLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNjc3NjEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS9Qcm9maWxlQXNzZXJ0aW9ucy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlOwotCi1pbXBvcnQgamF2YS51dGlsLlRyZWVNYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5XU0lEb2N1bWVudDsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBtYWludGFpbnMgcHJvZmlsZSBhc3NlcnRpb25zLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFByb2ZpbGVBc3NlcnRpb25zIGV4dGVuZHMgV1NJRG9jdW1lbnQKLXsKLSAgLyoqCi0gICAqIEVsZW1lbnQgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTkFNRSA9IFdTSUNvbnN0YW50cy5FTEVNX1BST0ZJTEVfQVNTRVJUSU9OUzsKLQotICAvKioKLSAgICogUU5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFFOQU1FID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfQVNTRVJUSU9OUywgRUxFTV9OQU1FKTsKLQotICAvKioKLSAgICogR2V0IGxpc3Qgb2YgcHJvZmlsZXMuCi0gICAqIEByZXR1cm4gbGlzdCBvZiBwcm9maWxlcy4KLSAgICogQHNlZSAjc2V0UHJvZmlsZUxpc3QKLSAgICovCi0gIHB1YmxpYyBWZWN0b3IgZ2V0UHJvZmlsZUxpc3QoKTsKLQotICAvKioKLSAgICogU2V0IGxpc3Qgb2YgcHJvZmlsZXMuCi0gICAqIEBwYXJhbSBwcm9maWxlTGlzdCBsaXN0IG9mIHByb2ZpbGVzLgotICAgKiBAc2VlICNnZXRQcm9maWxlTGlzdAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UHJvZmlsZUxpc3QoVmVjdG9yIHByb2ZpbGVMaXN0KTsKLQotICAvKioKLSAgICogQWRkIHByb2ZpbGUuCi0gICAqIEBwYXJhbSBwcm9maWxlIHByb2ZpbGUuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRQcm9maWxlKFByb2ZpbGUgcHJvZmlsZSk7Ci0KLSAgLyoqCi0gICAqIEdldCBsaXN0IG9mIGFydGlmYWN0cy4KLSAgICogQHJldHVybiBsaXN0IG9mIGFydGlmYWN0cy4KLSAgICogQHNlZSAjc2V0QXJ0aWZhY3RMaXN0Ci0gICAqLwotICBwdWJsaWMgVHJlZU1hcCBnZXRBcnRpZmFjdExpc3QoKTsKLQotICAvKioKLSAgICogR2V0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gdHlwZSBhbiBhcnRpZmFjdCB0eXBlLgotICAgKiBAcmV0dXJuIGEgcHJvZmlsZSBhcnRpZmFjdCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdHlwZS4KLSAgICovCi0gIHB1YmxpYyBQcm9maWxlQXJ0aWZhY3QgZ2V0QXJ0aWZhY3QoU3RyaW5nIHR5cGUpOwotCi0gIC8qKgotICAgKiBTZXQgbGlzdCBvZiBhcnRpZmFjdHMuCi0gICAqIEBwYXJhbSBhcnRpZmFjdExpc3QgYSBsaXN0IHBmIHByb2ZpbGUgYXJ0aWZpYWN0cy4KLSAgICogQHNlZSAjZ2V0QXJ0aWZhY3RMaXN0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBcnRpZmFjdExpc3QoVHJlZU1hcCBhcnRpZmFjdExpc3QpOwotCi0gIC8qKgotICAgKiBBZGQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBhcnRpZmFjdCBwcm9maWxlIGFydGlmYWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkQXJ0aWZhY3QoUHJvZmlsZUFydGlmYWN0IGFydGlmYWN0KTsKLQotICAvKioKLSAgICogR2V0IHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAcGFyYW0gaWQgdGVzdCBhc3NlcnRpb24gaWQuCi0gICAqIEByZXR1cm4gdGVzdCBhc3NlcnRpb24uCi0gICAqLwotICBwdWJsaWMgVGVzdEFzc2VydGlvbiBnZXRUZXN0QXNzZXJ0aW9uKFN0cmluZyBpZCk7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhcnRpZmFjdC4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIHByb2ZpbGUgYXJ0aWZhY3QuCi0gICAqLwotICBwdWJsaWMgUHJvZmlsZUFydGlmYWN0IGNyZWF0ZUFydGlmYWN0KCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHByb2ZpbGUgdGVzdCBhc3NlcnRpb24gZG9jdW1lbnQuCi0gICAqIEByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGRvY3VtZW50LiAKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VEFETmFtZSgpOwotCi0gIC8qKgotICAgKiBTZXQgdGhlIG5hbWUgb2YgdGhlIHByb2ZpbGUgdGVzdCBhc3NlcnRpb24gZG9jdW1lbnQuCi0gICAqIEBwYXJhbSBkb2N1bWVudE5hbWUgdGhlIG5hbWUgb2YgdGhlIGRvY3VtZW50LgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VEFETmFtZShTdHJpbmcgZG9jdW1lbnROYW1lKTsKLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgcHJvZmlsZSB0ZXN0IGFzc2VydGlvbiBkb2N1bWVudC4KLSAgICogQHJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFRBRFZlcnNpb24oKTsKLQotICAvKioKLSAgICogU2V0IHRoZSB2ZXJzaW9uIG9mIHRoZSBwcm9maWxlIHRlc3QgYXNzZXJ0aW9uIGRvY3VtZW50LgotICAgKiBAcGFyYW0gZG9jdW1lbnRWZXJzaW9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFRBRFZlcnNpb24oU3RyaW5nIGRvY3VtZW50VmVyc2lvbik7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL1Byb2ZpbGVBc3NlcnRpb25zUmVhZGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL1Byb2ZpbGVBc3NlcnRpb25zUmVhZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYjBhM2QuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS9Qcm9maWxlQXNzZXJ0aW9uc1JlYWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGU7Ci0KLWltcG9ydCBqYXZhLmlvLlJlYWRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50UmVhZGVyOwotCi0vKioKLSAqIERlZmluZXMgdGhlIGludGVyZmFjZSB1c2VkIHRvIHJlYWQgYSBwcm9maWxlIGFzc2VydGlvbnMgZG9jdW1lbnRzLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgUHJvZmlsZUFzc2VydGlvbnNSZWFkZXIgZXh0ZW5kcyBEb2N1bWVudFJlYWRlcgotewotICAvKioKLSAgICogUmVhZCB0aGUgcHJvZmlsZSBhc3NlcnRpb25zIGZpbGUuCi0gICAqIEBwYXJhbSBhc3NlcnRpb25zVVJJIGhlIHByb2ZpbGUgYXNzZXJ0aW9ucyBmaWxlIGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIHRoZSBQcm9maWxlQXNzZXJ0aW9ucyBvYmplY3QuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW0gb2NjdXIgd2hpbGUgcmVhZGluZyB0aGUgZmlsZS4KLSAgICovCi0gIHB1YmxpYyBQcm9maWxlQXNzZXJ0aW9ucyByZWFkUHJvZmlsZUFzc2VydGlvbnMoU3RyaW5nIGFzc2VydGlvbnNVUkkpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogUmVhZCB0aGUgcHJvZmlsZSBhc3NlcnRpb25zICBmaWxlLgotICAgKiBAcGFyYW0gcmVhZGVyIGEgUmVhZGVyIG9iamVjdC4KLSAgICogQHJldHVybiB0aGUgUHJvZmlsZUFzc2VydGlvbnMgb2JqZWN0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiAgaWYgcHJvYmxlbSBvY2N1ciB3aGlsZSByZWFkaW5nIHRoZSBmaWxlLgotICAgKi8KLSAgcHVibGljIFByb2ZpbGVBc3NlcnRpb25zIHJlYWRQcm9maWxlQXNzZXJ0aW9ucyhSZWFkZXIgcmVhZGVyKQotICAgIHRocm93cyBXU0lFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL1Rlc3RBc3NlcnRpb24uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvVGVzdEFzc2VydGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGVhNGI2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvVGVzdEFzc2VydGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotLyoqCi0gKiBBIHRlc3QgYXNzZXJ0aW9uIGlzIG9uZSBhc3NlcnRpb24gaW4gYSBwcm9maWxlIGRlZmluaXRpb24uCi0gKgotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFRlc3RBc3NlcnRpb24KLXsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9JTkZPUk1BVElPTkFMID0gImluZm9ybWF0aW9uYWwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX1JFQ09NTUVOREVEID0gInJlY29tbWVuZGVkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9SRVFVSVJFRCA9ICJyZXF1aXJlZCI7Ci0gIC8qKgotICAgKiBHZXQgdGVzdCBhc3NlcnRpb24gaWQuCi0gICAqIEByZXR1cm4gdGVzdCBhc3NlcnRpb24gaWQuCi0gICAqIEBzZWUgI3NldElkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldElkKCk7Ci0KLSAgLyoqCi0gICAqIFNldCB0ZXN0IGFzc2VydGlvbiBpZC4KLSAgICogQHBhcmFtIGlkIHRlc3QgYXNzZXJ0aW9uIGlkLgotICAgKiBAc2VlICNnZXRJZAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIGlkKTsKLQotICAvKioKLSAgICogR2V0IHRlc3QgYXNzZXJ0aW9uIHR5cGUuCi0gICAqIEByZXR1cm4gdGVzdCBhc3NlcnRpb24gdHlwZS4KLSAgICogQHNlZSAjc2V0VHlwZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFNldCB0ZXN0IGFzc2VydGlvbiB0eXBlLgotICAgKiBAcGFyYW0gIHR5cGUgdGVzdCBhc3NlcnRpb24gdHlwZS4KLSAgICogQHNlZSAjZ2V0VHlwZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VHlwZShTdHJpbmcgdHlwZSk7Ci0KLSAgLyoqCi0gICAqIEdldCB0ZXN0IGFzc2VydGlvbiBwcmltYXJ5IGVudHJ5IHR5cGUgbmFtZS4KLSAgICogQHJldHVybiB0ZXN0IGFzc2VydGlvbiBwcmltYXJ5IGVudHJ5IHR5cGUgbmFtZS4KLSAgICogQHNlZSAjc2V0RW50cnlUeXBlTmFtZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRFbnRyeVR5cGVOYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldCB0ZXN0IGFzc2VydGlvbiBwcmltYXJ5IGVudHJ5IHR5cGUgbmFtZS4KLSAgICogQHBhcmFtIGVudHJ5VHlwZU5hbWUgdGVzdCBhc3NlcnRpb24gcHJpbWFyeSBlbnRyeSB0eXBlIG5hbWUuCi0gICAqIEBzZWUgI2dldEVudHJ5VHlwZU5hbWUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVudHJ5VHlwZU5hbWUoU3RyaW5nIGVudHJ5VHlwZU5hbWUpOwotCi0gIC8qKgotICAgKiBHZXQgZW5hYmxlZCBpbmRpY2F0b3IuCi0gICAqIEByZXR1cm4gZW5hYmxlZCBpbmRpY2F0b3IuCi0gICAqIEBzZWUgI3NldEVuYWJsZWQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpOwotCi0gIC8qKgotICAgKiBTZXQgIGVuYWJsZWQgaW5kaWNhdG9yLgotICAgKiBAcGFyYW0gZW5hYmxlZCBlbmFibGVkIGluZGljYXRvci4KLSAgICogQHNlZSAjaXNFbmFibGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7Ci0KLSAgLyoqCi0gICAqIEdldCBjb250ZXh0LgotICAgKiBAcmV0dXJuIGNvbnRleHQuCi0gICAqIEBzZWUgI3NldENvbnRleHQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0Q29udGV4dCgpOwotCi0gIC8qKgotICAgKiBTZXQgY29udGV4dC4KLSAgICogQHBhcmFtIGNvbnRleHQgY29udGV4dC4KLSAgICogQHNlZSAjZ2V0Q29udGV4dAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q29udGV4dChTdHJpbmcgY29udGV4dCk7Ci0KLSAgLyoqCi0gICAqIEdldCBhc3NlcnRpb24gZGVzY3JpcHRpb24uCi0gICAqIEByZXR1cm4gYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgotICAgKiBAc2VlICNzZXRBc3NlcnRpb25EZXNjcmlwdGlvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRBc3NlcnRpb25EZXNjcmlwdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXQgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgotICAgKiBAcGFyYW0gYXNzZXJ0aW9uRGVzY3JpcHRpb24gYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgotICAgKiBAc2VlICNnZXRBc3NlcnRpb25EZXNjcmlwdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QXNzZXJ0aW9uRGVzY3JpcHRpb24oU3RyaW5nIGFzc2VydGlvbkRlc2NyaXB0aW9uKTsKLQotICAvKioKLSAgICogR2V0IGZhaWx1cmUgbWVzc2FnZS4KLSAgICogQHJldHVybiBmYWlsdXJlIG1lc3NhZ2UuCi0gICAqIEBzZWUgI3NldEZhaWx1cmVNZXNzYWdlCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEZhaWx1cmVNZXNzYWdlKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBmYWlsdXJlIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBmYWlsdXJlTWVzc2FnZSBmYWlsdXJlIG1lc3NhZ2UuCi0gICAqIEBzZWUgI2dldEZhaWx1cmVNZXNzYWdlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGYWlsdXJlTWVzc2FnZShTdHJpbmcgZmFpbHVyZU1lc3NhZ2UpOwotCi0gIC8qKgotICAgKiBHZXQgZmFpbHVyZSBkZXRhaWwgZGVzY3JpcHRpb24uCi0gICAqIEByZXR1cm4gZmFpbHVyZSBkZXRhaWwgZGVzY3JpcHRpb24uCi0gICAqIEBzZWUgI3NldEZhaWx1cmVEZXRhaWxEZXNjcmlwdGlvbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRGYWlsdXJlRGV0YWlsRGVzY3JpcHRpb24oKTsKLQotICAvKioKLSAgICogU2V0IGZhaWx1cmUgZGV0YWlsIGRlc2NyaXB0aW9uLgotICAgKiBAcGFyYW0gZmFpbHVyZURldGFpbERlc2NyaXB0aW9uIGZhaWx1cmUgZGV0YWlsIGRlc2NyaXB0aW9uLgotICAgKiBAc2VlICNnZXRGYWlsdXJlRGV0YWlsRGVzY3JpcHRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEZhaWx1cmVEZXRhaWxEZXNjcmlwdGlvbihTdHJpbmcgZmFpbHVyZURldGFpbERlc2NyaXB0aW9uKTsKLQotICAvKioKLSAgICogR2V0IGRldGFpbCBkZXNjcmlwdGlvbi4KLSAgICogQHJldHVybiBkZXRhaWwgZGVzY3JpcHRpb24uCi0gICAqIEBzZWUgI3NldERldGFpbERlc2NyaXB0aW9uCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldERldGFpbERlc2NyaXB0aW9uKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBkZXRhaWwgZGVzY3JpcHRpb24uCi0gICAqIEBwYXJhbSBkZXRhaWxEZXNjcmlwdGlvbiBkZXRhaWwgZGVzY3JpcHRpb24uCi0gICAqIEBzZWUgI2dldERldGFpbERlc2NyaXB0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXREZXRhaWxEZXNjcmlwdGlvbihTdHJpbmcgZGV0YWlsRGVzY3JpcHRpb24pOwotCi0gIC8qKgotICAgKiBHZXQgYWRkaXRpb25hbCBlbnRyeSB0eXBlIGxpc3QuCi0gICAqIEByZXR1cm4gYWRkaXRpb25hbCBlbnRyeSB0eXBlIGxpc3QuCi0gICAqIEBzZWUgI3NldEFkZGl0aW9uYWxFbnRyeVR5cGVMaXN0Ci0gICAqLwotICBwdWJsaWMgRW50cnlUeXBlTGlzdCBnZXRBZGRpdGlvbmFsRW50cnlUeXBlTGlzdCgpOwotCi0gIC8qKgotICAgKiBTZXQgYWRkaXRpb25hbCBlbnRyeSB0eXBlIGxpc3QuCi0gICAqIEBwYXJhbSBlbnRyeVR5cGVMaXN0IGFkZGl0aW9uYWwgZW50cnkgdHlwZSBsaXN0LgotICAgKiBAc2VlICNnZXRBZGRpdGlvbmFsRW50cnlUeXBlTGlzdAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QWRkaXRpb25hbEVudHJ5VHlwZUxpc3QoRW50cnlUeXBlTGlzdCBlbnRyeVR5cGVMaXN0KTsKLQotICAvKioKLSAgICogR2V0IGxpc3Qgb2YgcHJlcmVxIGlkcy4KLSAgICogQHJldHVybiBsaXN0IG9mIHByZXJlcSBpZHMuCi0gICAqLwotICBwdWJsaWMgVmVjdG9yIGdldFByZXJlcUlkTGlzdCgpOwotCi0gIC8qKgotICAgKiBBZGQgcHJlcmVxIHRlc3QgYXNzZXJ0aW9uIGlkLgotICAgKiBAcGFyYW0gIHByZXJlcUlkIHByZXJlcSB0ZXN0IGFzc2VydGlvbiBpZC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFByZXJlcUlkKFN0cmluZyBwcmVyZXFJZCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL2ltcGwvRW50cnlUeXBlTGlzdEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvaW1wbC9FbnRyeVR5cGVMaXN0SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDgxZjJkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvaW1wbC9FbnRyeVR5cGVMaXN0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuaW1wbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLkVudHJ5VHlwZUxpc3Q7Ci0KLS8qKgotICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIHRvIG1haW50YWluIGEgcHJvZmlsZSBFbnRyeVR5cGVMaXN0LgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgRW50cnlUeXBlTGlzdEltcGwgaW1wbGVtZW50cyBFbnRyeVR5cGVMaXN0Ci17Ci0gIC8qKgotICAgKiBMb2cgaW5wdXQuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGxvZ0lucHV0ID0gbnVsbDsKLQotICAvKioKLSAgICogV1NETCBpbnB1dC4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgd3NkbElucHV0ID0gbnVsbDsKLQotICAvKioKLSAgICogVURESSBpbnB1dC4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgdWRkaUlucHV0ID0gbnVsbDsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuRW50cnlUeXBlTGlzdCNnZXRMb2dJbnB1dCgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldExvZ0lucHV0KCkKLSAgewotICAgIHJldHVybiB0aGlzLmxvZ0lucHV0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLkVudHJ5VHlwZUxpc3Qjc2V0TG9nSW5wdXQoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9nSW5wdXQoU3RyaW5nIGxvZ0lucHV0KQotICB7Ci0gICAgdGhpcy5sb2dJbnB1dCA9IGxvZ0lucHV0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLkVudHJ5VHlwZUxpc3QjZ2V0V1NETElucHV0KCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0V1NETElucHV0KCkKLSAgewotICAgIHJldHVybiB0aGlzLndzZGxJbnB1dDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5FbnRyeVR5cGVMaXN0I3NldFdTRExJbnB1dChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRXU0RMSW5wdXQoU3RyaW5nIHdzZGxJbnB1dCkKLSAgewotICAgIHRoaXMud3NkbElucHV0ID0gd3NkbElucHV0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLkVudHJ5VHlwZUxpc3QjZ2V0VURESUlucHV0KCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VURESUlucHV0KCkKLSAgewotICAgIHJldHVybiB0aGlzLnVkZGlJbnB1dDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5FbnRyeVR5cGVMaXN0I3NldFVERElJbnB1dChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRVRERJSW5wdXQoU3RyaW5nIHVkZGlJbnB1dCkKLSAgewotICAgIHRoaXMudWRkaUlucHV0ID0gdWRkaUlucHV0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQjdG9YTUxTdHJpbmcoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIHJldHVybiBudWxsOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvaW1wbC9Qcm9maWxlQXJ0aWZhY3RJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL2ltcGwvUHJvZmlsZUFydGlmYWN0SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGFiM2JlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvaW1wbC9Qcm9maWxlQXJ0aWZhY3RJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuaW1wbDsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlRyZWVNYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBcnRpZmFjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkFydGlmYWN0VHlwZTsKLQotLyoqCi0gKiBBbiBhcnRpZmFjdCBjb250YWlucyBhIHNldCBvZiByZWxhdGVkIHRlc3QgYXNzZXJ0aW9ucy4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAgKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIFByb2ZpbGVBcnRpZmFjdEltcGwgaW1wbGVtZW50cyBQcm9maWxlQXJ0aWZhY3QKLXsKLSAgLyoqCi0gICAqIEFydGlmYWN0IHR5cGUuCi0gICAqLwotICBwcm90ZWN0ZWQgQXJ0aWZhY3RUeXBlIHR5cGU7Ci0KLSAgLyoqCi0gICAqIFRlc3QgYXNzZXJ0aW9uIG1hcC4KLSAgICovCi0gIHByb3RlY3RlZCBUcmVlTWFwIHRlc3RBc3NlcnRpb25NYXAgPSBuZXcgVHJlZU1hcCgpOwotCi0gIC8qKgotICAgKiBUZXN0IGFzc2VydGlvbiBsaXN0LgotICAgKi8KLSAgcHJvdGVjdGVkIExpbmtlZExpc3QgdGVzdEFzc2VydGlvbkxpc3QgPSBuZXcgTGlua2VkTGlzdCgpOwotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5SZXBvcnRBcnRpZmFjdCNnZXRUeXBlKCkKLSAgICovCi0gIHB1YmxpYyBBcnRpZmFjdFR5cGUgZ2V0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy50eXBlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLlJlcG9ydEFydGlmYWN0I3NldFR5cGUoQXJ0aWZhY3RUeXBlKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VHlwZShBcnRpZmFjdFR5cGUgdHlwZSkKLSAgewotICAgIHRoaXMudHlwZSA9IHR5cGU7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuUmVwb3J0QXJ0aWZhY3QjZ2V0U3BlY2lmaWNhdGlvbkxpc3QoKQotICAgKi8KLSAgcHVibGljIFZlY3RvciBnZXRTcGVjaWZpY2F0aW9uTGlzdCgpCi0gIHsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5SZXBvcnRBcnRpZmFjdCNzZXRTcGVjaWZpY2F0aW9uTGlzdChWZWN0b3IpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTcGVjaWZpY2F0aW9uTGlzdChWZWN0b3Igc3BlY2lmaWNhdGlvbkxpc3QpCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5SZXBvcnRBcnRpZmFjdCNnZXRUZXN0QXNzZXJ0aW9uTGlzdCgpCi0gICAqLwotICBwdWJsaWMgTGlua2VkTGlzdCBnZXRUZXN0QXNzZXJ0aW9uTGlzdCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy50ZXN0QXNzZXJ0aW9uTGlzdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5SZXBvcnRBcnRpZmFjdCNnZXRUZXN0QXNzZXJ0aW9uKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBUZXN0QXNzZXJ0aW9uIGdldFRlc3RBc3NlcnRpb24oU3RyaW5nIGlkKQotICB7Ci0gICAgcmV0dXJuIChUZXN0QXNzZXJ0aW9uKSB0aGlzLnRlc3RBc3NlcnRpb25NYXAuZ2V0KGlkKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5SZXBvcnRBcnRpZmFjdCNhZGRUZXN0QXNzZXJ0aW9uKFRlc3RBc3NlcnRpb24pCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRUZXN0QXNzZXJ0aW9uKFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbikKLSAgewotICAgIC8vIEFERDogTmVlZCB0byBtZXJnZSB0aGUgbGlzdCBhbmQgbWFwCi0gICAgdGhpcy50ZXN0QXNzZXJ0aW9uTWFwLnB1dCh0ZXN0QXNzZXJ0aW9uLmdldElkKCksIHRlc3RBc3NlcnRpb24pOwotICAgIHRoaXMudGVzdEFzc2VydGlvbkxpc3QuYWRkKHRlc3RBc3NlcnRpb24pOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQjdG9YTUxTdHJpbmcoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gUmVwb3J0QXJ0aWZhY3QKLSAgICBwdy5wcmludGxuKCIgICAgICA8IiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0KLSAgICBwdy5wcmludGxuKCIgICAgICA8LyIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiPiIpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS9pbXBsL1Byb2ZpbGVBc3NlcnRpb25zSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS9pbXBsL1Byb2ZpbGVBc3NlcnRpb25zSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzgxNDE5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvaW1wbC9Qcm9maWxlQXNzZXJ0aW9uc0ltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5pbXBsOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5UcmVlTWFwOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBcnRpZmFjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9uczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgLi4uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBQcm9maWxlQXNzZXJ0aW9uc0ltcGwgaW1wbGVtZW50cyBQcm9maWxlQXNzZXJ0aW9ucwotewotICAvKioKLSAgICogTG9jYXRpb24gb2YgdGhlIHByb2ZpbGUgZGVmaW5pdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgZG9jdW1lbnRVUkk7Ci0KLSAgLyoqCi0gICAqIE5hbWUgb2YgdGhlIHByb2ZpbGUgdGVzdCBhc3NlcnRpb24gZG9jdW1lbnQuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGRvY3VtZW50TmFtZTsKLQotICAvKioKLSAgICogVmVyc2lvbiBvZiB0aGUgcHJvZmlsZSB0ZXN0IGFzc2VydGlvbiBkb2N1bWVudC4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgZG9jdW1lbnRWZXJzaW9uOwotCi0gIC8vIEFERDogQSBwcm9maWxlIGRlZmluaXRpb24gc2hvdWxkIGFsc28gaGF2ZSBhIGRlc2NyaXB0aW9uLgotCi0gIC8qKgotICAgKiBMaXN0IG9mIHByb2ZpbGVzLgotICAgKi8KLSAgVmVjdG9yIHByb2ZpbGVMaXN0ID0gbmV3IFZlY3RvcigpOwotCi0gIC8qKgotICAgKiBMaXN0IG9mIGFydGlmYWN0cy4KLSAgICovCi0gIFRyZWVNYXAgYXJ0aWZhY3RMaXN0ID0gbmV3IFRyZWVNYXAoKTsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnMjZ2V0UHJvZmlsZUxpc3QoKQotICAgKi8KLSAgcHVibGljIFZlY3RvciBnZXRQcm9maWxlTGlzdCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5wcm9maWxlTGlzdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9ucyNzZXRQcm9maWxlTGlzdChWZWN0b3IpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQcm9maWxlTGlzdChWZWN0b3IgcHJvZmlsZUxpc3QpCi0gIHsKLSAgICB0aGlzLnByb2ZpbGVMaXN0ID0gcHJvZmlsZUxpc3Q7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnMjYWRkUHJvZmlsZShQcm9maWxlKQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkUHJvZmlsZShQcm9maWxlIHByb2ZpbGUpCi0gIHsKLSAgICB0aGlzLnByb2ZpbGVMaXN0LmFkZChwcm9maWxlKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9ucyNnZXRBcnRpZmFjdExpc3QoKQotICAgKi8KLSAgcHVibGljIFRyZWVNYXAgZ2V0QXJ0aWZhY3RMaXN0KCkKLSAgewotICAgIHJldHVybiB0aGlzLmFydGlmYWN0TGlzdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9ucyNnZXRBcnRpZmFjdChqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFByb2ZpbGVBcnRpZmFjdCBnZXRBcnRpZmFjdChTdHJpbmcgdHlwZSkKLSAgewotICAgIHJldHVybiAoUHJvZmlsZUFydGlmYWN0KSB0aGlzLmFydGlmYWN0TGlzdC5nZXQodHlwZSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnMjc2V0QXJ0aWZhY3RMaXN0KFRyZWVNYXApCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBcnRpZmFjdExpc3QoVHJlZU1hcCBhcnRpZmFjdExpc3QpCi0gIHsKLSAgICB0aGlzLmFydGlmYWN0TGlzdCA9IGFydGlmYWN0TGlzdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9ucyNhZGRBcnRpZmFjdChSZXBvcnRBcnRpZmFjdCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEFydGlmYWN0KFByb2ZpbGVBcnRpZmFjdCBhcnRpZmFjdCkKLSAgewotICAgIHRoaXMuYXJ0aWZhY3RMaXN0LnB1dChhcnRpZmFjdC5nZXRUeXBlKCksIGFydGlmYWN0KTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9ucyNnZXRUZXN0QXNzZXJ0aW9uKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBUZXN0QXNzZXJ0aW9uIGdldFRlc3RBc3NlcnRpb24oU3RyaW5nIGlkKQotICB7Ci0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uID0gbnVsbDsKLQotICAgIC8vIEdvIHRocm91Z2ggdGhlIGxpc3Qgb2YgYXJ0aWZhY3RzIGFuZCBmaW5kIHRoZSB0ZXN0IGFzc2VydGlvbiAKLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGFydGlmYWN0TGlzdC52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlICgoaXRlcmF0b3IuaGFzTmV4dCgpKSAmJiAodGVzdEFzc2VydGlvbiA9PSBudWxsKSkKLSAgICB7Ci0gICAgICB0ZXN0QXNzZXJ0aW9uID0gKChQcm9maWxlQXJ0aWZhY3QpIGl0ZXJhdG9yLm5leHQoKSkuZ2V0VGVzdEFzc2VydGlvbihpZCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRlc3RBc3NlcnRpb247Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnMjY3JlYXRlQXJ0aWZhY3QoKQotICAgKi8KLSAgcHVibGljIFByb2ZpbGVBcnRpZmFjdCBjcmVhdGVBcnRpZmFjdCgpCi0gIHsKLSAgICByZXR1cm4gbmV3IFByb2ZpbGVBcnRpZmFjdEltcGwoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuV1NJRG9jdW1lbnQjZ2V0TG9jYXRpb24oKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5kb2N1bWVudFVSSTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuV1NJRG9jdW1lbnQjc2V0TG9jYXRpb24oU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TG9jYXRpb24oU3RyaW5nIGRvY3VtZW50VVJJKQotICB7Ci0gICAgdGhpcy5kb2N1bWVudFVSSSA9IGRvY3VtZW50VVJJOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnMjZ2V0VEFETmFtZSgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFRBRE5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnROYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnMjc2V0VEFETmFtZShTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUQUROYW1lKFN0cmluZyBkb2N1bWVudE5hbWUpCi0gIHsKLSAgICB0aGlzLmRvY3VtZW50TmFtZSA9IGRvY3VtZW50TmFtZTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBc3NlcnRpb25zI2dldFRBRFZlcnNpb24oKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUQURWZXJzaW9uKCkKLSAgewotICAgIHJldHVybiB0aGlzLmRvY3VtZW50VmVyc2lvbjsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBc3NlcnRpb25zI3NldFRBRFZlcnNpb24oU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VEFEVmVyc2lvbihTdHJpbmcgZG9jdW1lbnRWZXJzaW9uKQotICB7Ci0gICAgdGhpcy5kb2N1bWVudFZlcnNpb24gPSBkb2N1bWVudFZlcnNpb247Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50RWxlbWVudCN0b1hNTFN0cmluZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvaW1wbC9Qcm9maWxlQXNzZXJ0aW9uc1JlYWRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvaW1wbC9Qcm9maWxlQXNzZXJ0aW9uc1JlYWRlckltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZmNzIxYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL2ltcGwvUHJvZmlsZUFzc2VydGlvbnNSZWFkZXJJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1ODcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uUmVhZGVyOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlRyZWVNYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnVyaXJlc29sdmVyLmludGVybmFsLnByb3Zpc2lvbmFsLlVSSVJlc29sdmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuV1NJVGVzdFRvb2xzRWNsaXBzZVByb3BlcnRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5XU0lUZXN0VG9vbHNQcm9wZXJ0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5FbnRyeVR5cGVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBcnRpZmFjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9uczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9uc1JlYWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkFydGlmYWN0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy54bWwuc2F4LkF0dHJpYnV0ZXM7Ci1pbXBvcnQgb3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXI7Ci1pbXBvcnQgb3JnLnhtbC5zYXguSW5wdXRTb3VyY2U7Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOwotaW1wb3J0IG9yZy54bWwuc2F4LlhNTFJlYWRlcjsKLWltcG9ydCBvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgLi4uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBQcm9maWxlQXNzZXJ0aW9uc1JlYWRlckltcGwgaW1wbGVtZW50cyBQcm9maWxlQXNzZXJ0aW9uc1JlYWRlcgotewotICAvKioKLSAgICogUHJvZmlsZSBhc3NlcnRpb25zLgotICAgKi8KLSAgcHJvdGVjdGVkIFByb2ZpbGVBc3NlcnRpb25zIHByb2ZpbGVBc3NlcnRpb25zOwotCi0gIC8qKgotICAgKiBSZXBvcnRBcnRpZmFjdCBsaXN0LgotICAgKi8KLSAgcHJvdGVjdGVkIFRyZWVNYXAgYXJ0aWZhY3RMaXN0ID0gbmV3IFRyZWVNYXAoKTsKLQotICAvKioKLSAgICogQ3JlYXRlIG5ldyByZWFkZXIuCi0gICAqLwotICBwdWJsaWMgUHJvZmlsZUFzc2VydGlvbnNSZWFkZXJJbXBsKCkKLSAgewotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLlByb2ZpbGVBc3NlcnRpb25zUmVhZGVyI3JlYWRQcm9maWxlQXNzZXJ0aW9ucyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgUHJvZmlsZUFzc2VydGlvbnMgcmVhZFByb2ZpbGVBc3NlcnRpb25zKFN0cmluZyBhc3NlcnRpb25zVVJJKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJldHVybiByZWFkUHJvZmlsZUFzc2VydGlvbnMobmV3IElucHV0U291cmNlKGFzc2VydGlvbnNVUkkpKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5Qcm9maWxlQXNzZXJ0aW9uc1JlYWRlciNyZWFkUHJvZmlsZUFzc2VydGlvbnMoUmVhZGVyKQotICAgKi8KLSAgcHVibGljIFByb2ZpbGVBc3NlcnRpb25zIHJlYWRQcm9maWxlQXNzZXJ0aW9ucyhSZWFkZXIgcmVhZGVyKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJldHVybiByZWFkUHJvZmlsZUFzc2VydGlvbnMobmV3IElucHV0U291cmNlKHJlYWRlcikpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlYWQgcHJvZmlsZSBhc3NlcnRpb25zLgotICAgKi8KLSAgcHJpdmF0ZSBQcm9maWxlQXNzZXJ0aW9ucyByZWFkUHJvZmlsZUFzc2VydGlvbnMoSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQ3JlYXRlIHByb2ZpbGUgYXNzZXJ0aW9ucwotICAgIHByb2ZpbGVBc3NlcnRpb25zID0gbmV3IFByb2ZpbGVBc3NlcnRpb25zSW1wbCgpOwotCi0gICAgLy8gUHJvZmlsZSBwYXJ0cyBhcmUgcHV0IGludG8gYSB2ZWN0b3IKLSAgICBhcnRpZmFjdExpc3QgPSBuZXcgVHJlZU1hcCgpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gQ3JlYXRlIHhtbCByZWFkZXIKLSAgICAgIFhNTFJlYWRlciByZWFkZXIgPSBYTUxVdGlscy5nZXRYTUxSZWFkZXIoKTsKLQotICAgICAgLy8gU2V0IGNvbnRlbnQgaGFuZGxlciB0byBpbm5lciBjbGFzcwotICAgICAgcmVhZGVyLnNldENvbnRlbnRIYW5kbGVyKG5ldyBQcm9maWxlQXNzZXJ0aW9uc0hhbmRsZXIoKSk7Ci0gICAgICAKLSAgICAgIGlmKFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuZ2V0RWNsaXBzZUNvbnRleHQoKSkKLSAgICAgIHsKLSAgICAJICBFbnRpdHlSZXNvbHZlciByZXNvbHZlciA9IG5ldyBFbnRpdHlSZXNvbHZlcigpewotCi0JCQlwdWJsaWMgSW5wdXRTb3VyY2UgcmVzb2x2ZUVudGl0eShTdHJpbmcgcHVibGljSWQsIFN0cmluZyBzeXN0ZW1JZCkgdGhyb3dzIFNBWEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24gewotCQkJCVVSSVJlc29sdmVyIHJlc29sdmVyID0gV1NJVGVzdFRvb2xzRWNsaXBzZVByb3BlcnRpZXMuZ2V0VVJJUmVzb2x2ZXIoKTsKLQkJCQlTdHJpbmcgdXJpID0gcmVzb2x2ZXIucmVzb2x2ZSgiIiwgcHVibGljSWQsIHN5c3RlbUlkKTsKLQkJCQlTdHJpbmcgcGh5c2ljYWxMb2NhdGlvbiA9IHJlc29sdmVyLnJlc29sdmVQaHlzaWNhbExvY2F0aW9uKCIiLCBwdWJsaWNJZCwgdXJpKTsKLQkJCQlJbnB1dFNvdXJjZSBpcyA9IG51bGw7Ci0JCQkJdHJ5Ci0JCQkJewotCQkJCQlVUkwgdXJsID0gbmV3IFVSTChwaHlzaWNhbExvY2F0aW9uKTsKLQkJCQkJaXMgPSBuZXcgSW5wdXRTb3VyY2UodXJpKTsKLQkJCQkJaXMuc2V0Qnl0ZVN0cmVhbSh1cmwub3BlblN0cmVhbSgpKTsKLQkJCQl9Ci0JCQkJY2F0Y2goRXhjZXB0aW9uIGUpCi0JCQkJewotCQkJCQkvLyBEbyBub3RoaW5nIGlmIG9wZW5pbmcgdGhlIHN0cmVhbSBmYWlscy4KLQkJCQl9Ci0JCQkJcmV0dXJuIGlzOwotCQkJfQotICAgIAkJICAKLSAgICAJICB9OwotICAgIAkgIHJlYWRlci5zZXRFbnRpdHlSZXNvbHZlcihyZXNvbHZlcik7Ci0gICAgICB9Ci0gICAgICAvLyBQYXJzZSBwcm9maWxlIGRlZmluaXRpb24gZmlsZQotICAgICAgcmVhZGVyLnBhcnNlKGlucHV0U291cmNlKTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigiQ291bGQgbm90IHJlYWQgYW5kIHBhcnNlIHByb2ZpbGUgZGVmaW5pdGlvbi4iLCBlKTsKLSAgICB9Ci0gICAgZmluYWxseQotICAgIHsKLSAgICAgIC8vQ2hlY2sgdG8gc2VlIGlmIHRoZSB2ZXJzaW9uIG9mIHRlc3QgYXNzc2VydGlvbiBkb2N1bWVudCBpcyBzdXBwb3J0ZWQKLSAgICAgIGlmICghVXRpbHMuaXNWYWxpZFByb2ZpbGVUQURWZXJzaW9uKHByb2ZpbGVBc3NlcnRpb25zKSkKLSAgICAgIHsKLSAgICAJU3RyaW5nIHRhZFZlcnNpb24gPSBwcm9maWxlQXNzZXJ0aW9ucy5nZXRUQURWZXJzaW9uKCk7Ci0gICAgCWlmKHRhZFZlcnNpb24gIT0gbnVsbCkKLSAgICAJewotICAgIAkgIFN0cmluZyB0YWROYW1lID0gcHJvZmlsZUFzc2VydGlvbnMuZ2V0VEFETmFtZSgpOwotICAgICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICAgIlxuVmVyc2lvbiAiCi0gICAgICAgICAgICArIHRhZFZlcnNpb24KLSAgICAgICAgICAgICsgIiBvZiB0aGUgXCIiCi0gICAgICAgICAgICArIHRhZE5hbWUKLSAgICAgICAgICAgICsgIlwiXG4iCi0gICAgICAgICAgICArICJkb2N1bWVudCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgdmVyc2lvbiBvZiIKLSAgICAgICAgICAgICsgIlxuIgotICAgICAgICAgICAgKyAidGhlIHRlc3QgdG9vbHMuIik7Ci0gICAgCX0KLSAgICAJZWxzZQotICAgIAl7Ci0gICAgCSAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigiV1MtSSB2YWxpZGF0aW9uIHdhcyB1bmFibGUgdG8gcnVuLiBVbmFibGUgdG8gcmVhZCB0aGUgdGVzdCBhc3NlcnRpb24gZG9jdW1lbnQuIik7Ci0gICAgCX0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBUaGUgYXNzZXJ0aW9ucyBmcm9tIHRoZSBUQUQgYXJlIHJlb3JkZXJlZCBmb3IgcHVycG9zZXMgb2YgcHJvY2Vzc2luZy4gQWxsCi0gICAgLy8gYXNzZXJ0aW9ucyBvZiBhbiBhcnRpZmFjdCBhcmUgcmVvcmRlcmVkIHN1Y2ggdGhhdCBwcmVyZXF1aXNpdGVzIG9jY3VyCi0gICAgLy8gYmVmb3JlIHRoZSBhc3NlcnRpb25zIHRoZXkgcHJlcmVxLiBUaGUgYXNzdW1wdGlvbiBpcyB0aGF0ICBwcmVyZXF1aXNpdGVzIGRvCi0gICAgLy8gbm90IGNyb3NzIGFydGlmYWN0IHR5cGVzLgotICAgIC8vCi0gICAgSXRlcmF0b3IgaXQgPSBhcnRpZmFjdExpc3Qua2V5U2V0KCkuaXRlcmF0b3IoKTsKLSAgICAvLyBmb3IgZWFjaCBhcnRpZmFjdCB0eXBlIGRvIHJlb3JkZXJpbmcgYXNzZXJ0aW9uIAotICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgewotICAgICAgUHJvZmlsZUFydGlmYWN0IGFydCA9IChQcm9maWxlQXJ0aWZhY3QpIGFydGlmYWN0TGlzdC5nZXQoaXQubmV4dCgpKTsKLSAgICAgIC8vIHJlc3VsdCBsaXN0IG9mIHRoZSByZW9yZGVyaW5nIGFzc2VydGlvbnMgCi0gICAgICBMaW5rZWRMaXN0IHJlcyA9IG5ldyBMaW5rZWRMaXN0KCk7Ci0gICAgICBJdGVyYXRvciBpdDIgPSBhcnQuZ2V0VGVzdEFzc2VydGlvbkxpc3QoKS5pdGVyYXRvcigpOwotICAgICAgLy8gc29ydCB0aGUgYXJ0aWZhY3QgYXNzZXJ0aW9ucyBpbnRvIHJlc3VsdCBsaXN0IAotICAgICAgd2hpbGUgKGl0Mi5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIC8vIGNhbGwgZm9yIGVhY2ggYXNzZXJ0aW9uICwgCi0gICAgICAgIC8vIGlmIHRoZSBhc3NlcnRpb24gaGFzIHRoZSBwcmVyZXEsIHRoZSBwcmVyZXEgd2lsbCBhZGRlZCBmaXJzdCBpbnRvIHJlcyBsaXN0Ci0gICAgICAgIHNvcnRUZXN0QXNzZXJ0aW9ucyhhcnQsIChUZXN0QXNzZXJ0aW9uKSBpdDIubmV4dCgpLCByZXMpOwotICAgICAgfQotICAgICAgLy8gcmVwbGFjZSB0aGUgb3JpZ2luYWwgYXNzZXJ0aW9ucyBsaXN0IHRvIHRoZSBwcmVyZXEgcmVvcmRlcmluZyBhc3NlcnRpb25zIGxpc3QKLSAgICAgIGFydC5nZXRUZXN0QXNzZXJ0aW9uTGlzdCgpLmNsZWFyKCk7Ci0gICAgICBhcnQuZ2V0VGVzdEFzc2VydGlvbkxpc3QoKS5hZGRBbGwocmVzKTsKLSAgICB9Ci0gICAgLy8gUHV0IHRoZSBwcm9maWxlIHBhcnRzIGludG8gdGhlIHByb2ZpbGUgZGVmaW5pdGlvbgotICAgIHByb2ZpbGVBc3NlcnRpb25zLnNldEFydGlmYWN0TGlzdChhcnRpZmFjdExpc3QpOwotCi0gICAgcmV0dXJuIHByb2ZpbGVBc3NlcnRpb25zOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50UmVhZGVyI2dldExvY2F0aW9uKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TG9jYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50UmVhZGVyI3NldExvY2F0aW9uKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKFN0cmluZyBkb2N1bWVudFVSSSkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIFJlY3Vyc2l2ZSB3YWxrIHRvIG9yZGVyIGFzc2VydGlvbnMgc28gdGhhdCBhc3NlcnRpb25zIGFyZSAKLSAgICogcHJvY2Vzc2VkIGZvbGxvd2luZyB0aGUgb25lcyB0aGF0IHByZXJlcSB0aGVtLgotICAgKiBJZiBhc3NlcnRpb24gaGFzIHByZXJlcSwgdGhlbiBhZGQgaXQgdG8gdGhlIHJlc3VsdCBsaXN0IGZpcnN0LgotICAgKiAgCi0gICAqIEBwYXJhbSBhcnQgcHJvZmlsZSBhcnRpZmFjdCBmb3IgY2FsbCBAbGluayBQcm9maWxlQXJ0aWZhY3QjZ2V0VGVzdEFzc2VydGlvbihTdHJpbmcpCi0gICAqIEBwYXJhbSBhc3J0IHRlc3QgYXNzZXJ0aW9uCi0gICAqIEBwYXJhbSBsaXN0IHJlc3VsdCBsaXN0IHRvIHNvcnQKLSAgICovCi0gIHByaXZhdGUgdm9pZCBzb3J0VGVzdEFzc2VydGlvbnMoUHJvZmlsZUFydGlmYWN0IGFydCwgVGVzdEFzc2VydGlvbiBhc3J0LCBMaXN0IGxpc3QpCi0gIHsKLSAgICAvLyBpZiBhc3NlcnRpb24gaXMgbnVsbCBvciBkb2VzIG5vdCBleGlzdCwgdGhlbiBleGl0Ci0gICAgaWYoKGFzcnQgPT0gbnVsbCkgfHwgbGlzdC5jb250YWlucyhhc3J0KSkgCi0gICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gaWYgaXQgaGFzIG5vdCBwcmVyZXEsIGFkZCB0aGUgYXNlcnRpb24gYW5kIGV4aXQKLSAgICBpZihhc3J0LmdldFByZXJlcUlkTGlzdCgpLmlzRW1wdHkoKSkgCi0gICAgewotICAgICAgbGlzdC5hZGQoYXNydCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vIGdldCBsaXN0IHByZXJlcSBhc3NlcnRpb24gYW5kIHJlcXVyc2l2ZSBjYWxsIHNvcnRUZXN0QXNzZXJ0aW9ucyB0aGlzIGVhY2ggICAgCi0gICAgSXRlcmF0b3IgaXQgPSBhc3J0LmdldFByZXJlcUlkTGlzdCgpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICBTdHJpbmcgaWQgPSAoU3RyaW5nKSBpdC5uZXh0KCk7Ci0gICAgICBzb3J0VGVzdEFzc2VydGlvbnMoYXJ0LCBhcnQuZ2V0VGVzdEFzc2VydGlvbihpZCksIGxpc3QpOwotICAgIH0KLSAgICBsaXN0LmFkZChhc3J0KTsKLSAgfQotCi0gIC8qKgotICAgKiBJbm5lciBjbGFzczogUHJvZmlsZUFzc2VydGlvbnNIYW5kbGVyCi0gICAqLwotICBjbGFzcyBQcm9maWxlQXNzZXJ0aW9uc0hhbmRsZXIgZXh0ZW5kcyBEZWZhdWx0SGFuZGxlcgotICB7Ci0gICAgcHJpdmF0ZSBQcm9maWxlQXJ0aWZhY3QgYXJ0aWZhY3QgPSBwcm9maWxlQXNzZXJ0aW9ucy5jcmVhdGVBcnRpZmFjdCgpOwotICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyIGNvbnRleHQgPSBudWxsOwotICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyIGFzc2VydGlvbkRlc2NyaXB0aW9uID0gbnVsbDsKLSAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBmYWlsdXJlTWVzc2FnZSA9IG51bGw7Ci0gICAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgZmFpbHVyZURldGFpbERlc2NyaXB0aW9uID0gbnVsbDsKLSAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBkZXRhaWxEZXNjcmlwdGlvbiA9IG51bGw7Ci0gICAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgdGVzdEFzc2VydGlvbklkID0gbnVsbDsKLSAgICBwcml2YXRlIFN0cmluZyBjdXJyZW50RWxlbWVudCA9IG51bGw7Ci0gICAgcHJpdmF0ZSBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24gPSBudWxsOwotICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyIGxvZ0lucHV0ID0gbnVsbDsKLSAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciB3c2RsSW5wdXQgPSBudWxsOwotICAgIHByaXZhdGUgRW50cnlUeXBlTGlzdCBlbnRyeVR5cGVMaXN0ID0gbnVsbDsKLQotICAgIC8vIFByb2Nlc3Mgc3RhcnQgZWxlbWVudCBldmVudAotICAgIHB1YmxpYyB2b2lkIHN0YXJ0RWxlbWVudCgKLSAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkksCi0gICAgICBTdHJpbmcgbG9jYWxOYW1lLAotICAgICAgU3RyaW5nIHFOYW1lLAotICAgICAgQXR0cmlidXRlcyBhdHRzKQotICAgIHsKLSAgICAgIGlmIChuYW1lc3BhY2VVUkkgIT0gbnVsbAotICAgICAgICAmJiAobmFtZXNwYWNlVVJJLmVxdWFscyhXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9BU1NFUlRJT05TXzIwMDMpCi0gICAgICAgIHx8ICBuYW1lc3BhY2VVUkkuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX0FTU0VSVElPTlMpKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2F2ZSBlbGVtZW50IG5hbWUKLSAgICAgICAgY3VycmVudEVsZW1lbnQgPSBsb2NhbE5hbWU7Ci0KLSAgICAgICAgLy8gPGFydGlmYWN0PgotICAgICAgICBpZiAobG9jYWxOYW1lLmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9BUlRJRkFDVCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcHJvZmlsZSBhcnRpZmFjdCBvYmplY3QKLSAgICAgICAgICBhcnRpZmFjdCA9IHByb2ZpbGVBc3NlcnRpb25zLmNyZWF0ZUFydGlmYWN0KCk7Ci0KLSAgICAgICAgICAvLyBTZXQgdHlwZQotICAgICAgICAgIGFydGlmYWN0LnNldFR5cGUoCi0gICAgICAgICAgICBBcnRpZmFjdFR5cGUuZ2V0QXJ0aWZhY3RUeXBlKAotICAgICAgICAgICAgICBhdHRzLmdldFZhbHVlKFdTSUNvbnN0YW50cy5BVFRSX1RZUEUpKSk7Ci0KLSAgICAgICAgICAvLyBBREQ6IEdldCBzcGVjaWZpY2F0aW9uIGxpc3QKLQotICAgICAgICAgIC8vIEFkZCBhcnRpZmFjdCB0byBsaXN0IG9mIGFydGlmYWN0IGxpc3QKLSAgICAgICAgICBhcnRpZmFjdExpc3QucHV0KGFydGlmYWN0LmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpLCBhcnRpZmFjdCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8dGVzdEFzc2VydGlvbj4KLSAgICAgICAgZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9URVNUX0FTU0VSVElPTikpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBDcmVhdGUgdGVzdCBhc3NlcnRpb24KLSAgICAgICAgICB0ZXN0QXNzZXJ0aW9uID0gbmV3IFRlc3RBc3NlcnRpb25JbXBsKCk7Ci0KLSAgICAgICAgICAvLyBHZXQgYXR0cmlidXRlIHZhbHVlcwotICAgICAgICAgIFN0cmluZyBpZCA9IGF0dHMuZ2V0VmFsdWUoIiIsIFdTSUNvbnN0YW50cy5BVFRSX0lEKTsKLSAgICAgICAgICB0ZXN0QXNzZXJ0aW9uLnNldElkKGlkKTsKLSAgICAgICAgICB0ZXN0QXNzZXJ0aW9uLnNldFR5cGUoYXR0cy5nZXRWYWx1ZSgiIiwgV1NJQ29uc3RhbnRzLkFUVFJfVFlQRSkpOwotICAgICAgICAgIHRlc3RBc3NlcnRpb24uc2V0RW50cnlUeXBlTmFtZSgKLSAgICAgICAgICAgIGF0dHMuZ2V0VmFsdWUoIiIsIFdTSUNvbnN0YW50cy5BVFRSX0VOVFJZX1RZUEUpKTsKLSAgICAgICAgICAKLSAgICAgICAgICAvLyBpZiBhc3NlcnRpb24gaXMgbm90IHJlcXVpcmVkIG9yIGl0IGhhcyBhbHJlYWR5IGJlZW4gY2hlY2tlZCBieSBjb3JlIHZhbGlkYXRvciB0aGVuIGRpc2FibGUgaXQKLSAgICAgICAgICBpZiAoYWxyZWFkeUNoZWNrZWQoaWQpIHx8ICEodGVzdEFzc2VydGlvbi5nZXRUeXBlKCkuZXF1YWxzKFRlc3RBc3NlcnRpb24uVFlQRV9SRVFVSVJFRCkpKQotICAgICAgICAJICB0ZXN0QXNzZXJ0aW9uLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgCSAgdGVzdEFzc2VydGlvbi5zZXRFbmFibGVkKEJvb2xlYW4udmFsdWVPZihhdHRzLmdldFZhbHVlKCIiLCBXU0lDb25zdGFudHMuQVRUUl9FTkFCTEVEKSkuYm9vbGVhblZhbHVlKCkpOwotCi0gICAgICAgICAgLy8gQWRkIHRlc3QgYXNzZXJ0aW9uIHRvIGFydGlmYWN0Ci0gICAgICAgICAgYXJ0aWZhY3QuYWRkVGVzdEFzc2VydGlvbih0ZXN0QXNzZXJ0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDxjb250ZXh0PgotICAgICAgICBlbHNlIGlmIChsb2NhbE5hbWUuZXF1YWxzKFdTSUNvbnN0YW50cy5FTEVNX0NPTlRFWFQpKQotICAgICAgICB7Ci0gICAgICAgICAgY29udGV4dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDxhc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAgICAgICAgZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9BU1NFUlRJT05fREVTQ1JJUFRJT04pKQotICAgICAgICB7Ci0gICAgICAgICAgYXNzZXJ0aW9uRGVzY3JpcHRpb24gPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8ZmFpbHVyZU1lc3NhZ2U+Ci0gICAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fRkFJTFVSRV9NRVNTQUdFKSkKLSAgICAgICAgewotICAgICAgICAgIGZhaWx1cmVNZXNzYWdlID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gPGZhaWx1cmVEZXRhaWxEZXNjcmlwdGlvbj4KLSAgICAgICAgZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9GQUlMVVJFX0RFVEFJTF9ERVNDUklQVElPTikpCi0gICAgICAgIHsKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsRGVzY3JpcHRpb24gPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8ZGV0YWlsRGVzY3JpcHRpb24+Ci0gICAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fREVUQUlMX0RFU0NSSVBUSU9OKSkKLSAgICAgICAgewotICAgICAgICAgIGRldGFpbERlc2NyaXB0aW9uID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gPHRlc3RBc3NlcnRpb25JRD4KLSAgICAgICAgZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9URVNUX0FTU0VSVElPTl9JRCkpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0QXNzZXJ0aW9uSWQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8YWRkaXRpb25hbEVudHJ5VHlwZUxpc3Q+Ci0gICAgICAgIGVsc2UgaWYgKAotICAgICAgICAgIGxvY2FsTmFtZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fQURESVRJT05BTF9FTlRSWV9UWVBFX0xJU1QpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gQ3JlYXRlIGVudHJ5IHR5cGUgbGlzdAotICAgICAgICAgIGVudHJ5VHlwZUxpc3QgPSBuZXcgRW50cnlUeXBlTGlzdEltcGwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDxtZXNzYWdlSW5wdXQ+Ci0gICAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fTUVTU0FHRV9JTlBVVCkpCi0gICAgICAgIHsKLSAgICAgICAgICBsb2dJbnB1dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDx3c2RsSW5wdXQ+Ci0gICAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fV1NETF9JTlBVVCkpCi0gICAgICAgIHsKLSAgICAgICAgICB3c2RsSW5wdXQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gPHByb2ZpbGVBc3NlcnRpb25zPgotICAgICAgICBlbHNlIGlmIChsb2NhbE5hbWUuZXF1YWxzKFdTSUNvbnN0YW50cy5FTEVNX1BST0ZJTEVfQVNTRVJUSU9OUykpCi0gICAgICAgIHsKLSAgICAgICAgICBwcm9maWxlQXNzZXJ0aW9ucy5zZXRUQUROYW1lKAotICAgICAgICAgICAgYXR0cy5nZXRWYWx1ZSgiIiwgV1NJQ29uc3RhbnRzLkFUVFJfTkFNRSkpOwotICAgICAgICAgIHByb2ZpbGVBc3NlcnRpb25zLnNldFRBRFZlcnNpb24oCi0gICAgICAgICAgICBhdHRzLmdldFZhbHVlKCIiLCBXU0lDb25zdGFudHMuQVRUUl9WRVJTSU9OKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBSRU1PVkU6ICAgICAKLSAgICAgICAgLy8gPHVkZGlJbnB1dD4KLSAgICAgICAgZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9VRERJX0lOUFVUKSkgewotICAgICAgICAgIHVkZGlJbnB1dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgfSAKLSAgICAgICAgKi8KLSAgICAgIH0KLSAgICB9IC8vIEVORCBzdGFydEVsZW1lbnQKLQotICAgIHB1YmxpYyB2b2lkIGVuZEVsZW1lbnQoU3RyaW5nIG5hbWVzcGFjZVVSSSwgU3RyaW5nIGxvY2FsTmFtZSwgU3RyaW5nIHFuYW1lKQotICAgIHsKLSAgICAgIC8vIElmIHRoaXMgaXMgdGhlIHByb2ZpbGUgbmFtZXNwYWNlLCB0aGVuIGNoZWNrIGZvciBhbmQgcHJvY2VzcyBzZWxlY3RlZCBlbGVtZW50cwotICAgICAgaWYgKG5hbWVzcGFjZVVSSSAhPSBudWxsCi0gICAgICAgICYmIChuYW1lc3BhY2VVUkkuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX0FTU0VSVElPTlNfMjAwMykKLSAgICAgICAgfHwgbmFtZXNwYWNlVVJJLmVxdWFscyhXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9BU1NFUlRJT05TKSkpCi0gICAgICB7Ci0gICAgICAgIC8vIDxjb250ZXh0PgotICAgICAgICBpZiAobG9jYWxOYW1lLmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9DT05URVhUKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIFNldCBjb250ZXh0IGluIHRlc3QgYXNzZXJ0aW9uCi0gICAgICAgICAgdGVzdEFzc2VydGlvbi5zZXRDb250ZXh0KGNvbnRleHQudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgY29udGV4dCA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gICAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fQVNTRVJUSU9OX0RFU0NSSVBUSU9OKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIFNldCBhc3NlcnRpb24gZGVzY3JpcHRpb24gaW4gdGVzdCBhc3NlcnRpb24KLSAgICAgICAgICB0ZXN0QXNzZXJ0aW9uLnNldEFzc2VydGlvbkRlc2NyaXB0aW9uKAotICAgICAgICAgICAgYXNzZXJ0aW9uRGVzY3JpcHRpb24udG9TdHJpbmcoKSk7Ci0gICAgICAgICAgYXNzZXJ0aW9uRGVzY3JpcHRpb24gPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gPGZhaWx1cmVNZXNzYWdlPgotICAgICAgICBlbHNlIGlmIChsb2NhbE5hbWUuZXF1YWxzKFdTSUNvbnN0YW50cy5FTEVNX0ZBSUxVUkVfTUVTU0FHRSkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBTZXQgZmFpbHVyZSBtZXNzYWdlIGluIHRlc3QgYXNzZXJ0aW9uCi0gICAgICAgICAgdGVzdEFzc2VydGlvbi5zZXRGYWlsdXJlTWVzc2FnZShmYWlsdXJlTWVzc2FnZS50b1N0cmluZygpKTsKLSAgICAgICAgICBmYWlsdXJlTWVzc2FnZSA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8ZmFpbHVyZURldGFpbERlc2NyaXB0aW9uPgotICAgICAgICBlbHNlIGlmIChsb2NhbE5hbWUuZXF1YWxzKFdTSUNvbnN0YW50cy5FTEVNX0ZBSUxVUkVfREVUQUlMX0RFU0NSSVBUSU9OKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIFNldCBmYWlsdXJlIGRldGFpbCBkZXNjcmlwdGlvbiBpbiB0ZXN0IGFzc2VydGlvbgotICAgICAgICAgIHRlc3RBc3NlcnRpb24uc2V0RmFpbHVyZURldGFpbERlc2NyaXB0aW9uKAotICAgICAgICAgICAgZmFpbHVyZURldGFpbERlc2NyaXB0aW9uLnRvU3RyaW5nKCkpOwotICAgICAgICAgIGZhaWx1cmVEZXRhaWxEZXNjcmlwdGlvbiA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8ZGV0YWlsRGVzY3JpcHRpb24+Ci0gICAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fREVUQUlMX0RFU0NSSVBUSU9OKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIFNldCBkZXRhaWwgZGVzY3JpcHRpb24gaW4gdGVzdCBhc3NlcnRpb24KLSAgICAgICAgICB0ZXN0QXNzZXJ0aW9uLnNldERldGFpbERlc2NyaXB0aW9uKGRldGFpbERlc2NyaXB0aW9uLnRvU3RyaW5nKCkpOwotICAgICAgICAgIGRldGFpbERlc2NyaXB0aW9uID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDx0ZXN0QXNzZXJ0aW9uSUQ+Ci0gICAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fVEVTVF9BU1NFUlRJT05fSUQpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gU2V0IHRlc3QgYXNzZXJ0aW9uIGlkIGluIHByZXJlcSBsaXN0Ci0gICAgICAgICAgdGVzdEFzc2VydGlvbi5hZGRQcmVyZXFJZCh0ZXN0QXNzZXJ0aW9uSWQudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgdGVzdEFzc2VydGlvbklkID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDxhZGR0aW9uYWxFbnRyeVR5cGVMaXN0PgotICAgICAgICBlbHNlIGlmICgKLSAgICAgICAgICBsb2NhbE5hbWUuZXF1YWxzKFdTSUNvbnN0YW50cy5FTEVNX0FERElUSU9OQUxfRU5UUllfVFlQRV9MSVNUKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIFNldCB0YXJnZXQgbGlzdAotICAgICAgICAgIHRlc3RBc3NlcnRpb24uc2V0QWRkaXRpb25hbEVudHJ5VHlwZUxpc3QoZW50cnlUeXBlTGlzdCk7Ci0gICAgICAgICAgZW50cnlUeXBlTGlzdCA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8bWVzc2FnZUlucHV0PgotICAgICAgICBlbHNlIGlmIChsb2NhbE5hbWUuZXF1YWxzKFdTSUNvbnN0YW50cy5FTEVNX01FU1NBR0VfSU5QVVQpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gU2V0IHRlc3QgYXNzZXJ0aW9uIGlkIGluIHByZXJlcSBsaXN0Ci0gICAgICAgICAgZW50cnlUeXBlTGlzdC5zZXRMb2dJbnB1dChsb2dJbnB1dC50b1N0cmluZygpKTsKLSAgICAgICAgICBsb2dJbnB1dCA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8d3NkbElucHV0PgotICAgICAgICBlbHNlIGlmIChsb2NhbE5hbWUuZXF1YWxzKFdTSUNvbnN0YW50cy5FTEVNX1dTRExfSU5QVVQpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gU2V0IHRlc3QgYXNzZXJ0aW9uIGlkIGluIHByZXJlcSBsaXN0Ci0gICAgICAgICAgZW50cnlUeXBlTGlzdC5zZXRXU0RMSW5wdXQod3NkbElucHV0LnRvU3RyaW5nKCkpOwotICAgICAgICAgIHdzZGxJbnB1dCA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyA8cHJvZmlsZUFzc2VydGlvbnM+Ci0gICAgICAgIGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fUFJPRklMRV9BU1NFUlRJT05TKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIGEgbm8tb3AKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFJFTU9WRToKLSAgICAgICAgLy8gPHVkZGlJbnB1dD4KLSAgICAgICAgZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9VRERJX0lOUFVUKSkgewotICAgICAgICAgIC8vIFNldCB0ZXN0IGFzc2VydGlvbiBpZCBpbiBwcmVyZXEgbGlzdAotICAgICAgICAgICBlbnRyeVR5cGVMaXN0LnNldFVERElJbnB1dCh1ZGRpSW5wdXQudG9TdHJpbmcoKSk7ICAgICAgICAgCi0gICAgICAgICAgdWRkaUlucHV0ID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICAqLwotICAgICAgfQotICAgIH0gLy8gRU5EIGVuZEVsZW1lbnQKLQotICAgIHB1YmxpYyB2b2lkIGNoYXJhY3RlcnMoY2hhcltdIGNoLCBpbnQgc3RhcnQsIGludCBsZW5ndGgpCi0gICAgewotICAgICAgLy8gPGNvbnRleHQ+Ci0gICAgICBpZiAoKGNvbnRleHQgIT0gbnVsbCkKLSAgICAgICAgJiYgKGN1cnJlbnRFbGVtZW50LmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9DT05URVhUKSkpCi0gICAgICB7Ci0gICAgICAgIGNvbnRleHQuYXBwZW5kKGNoLCBzdGFydCwgbGVuZ3RoKTsKLSAgICAgIH0KLQotICAgICAgLy8gPGFzc2VydGlvbkRlc2NyaXB0aW9uPgotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChhc3NlcnRpb25EZXNjcmlwdGlvbiAhPSBudWxsKQotICAgICAgICAgICYmIChjdXJyZW50RWxlbWVudC5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fQVNTRVJUSU9OX0RFU0NSSVBUSU9OKSkpCi0gICAgICB7Ci0gICAgICAgIGFzc2VydGlvbkRlc2NyaXB0aW9uLmFwcGVuZChjaCwgc3RhcnQsIGxlbmd0aCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxmYWlsdXJlTWVzc2FnZT4KLSAgICAgIGVsc2UgaWYgKAotICAgICAgICAoZmFpbHVyZU1lc3NhZ2UgIT0gbnVsbCkKLSAgICAgICAgICAmJiAoY3VycmVudEVsZW1lbnQuZXF1YWxzKFdTSUNvbnN0YW50cy5FTEVNX0ZBSUxVUkVfTUVTU0FHRSkpKQotICAgICAgewotICAgICAgICBmYWlsdXJlTWVzc2FnZS5hcHBlbmQoY2gsIHN0YXJ0LCBsZW5ndGgpOwotICAgICAgfQotCi0gICAgICAvLyA8ZmFpbHVyZURldGFpbERlc2NyaXB0aW9uPgotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChmYWlsdXJlRGV0YWlsRGVzY3JpcHRpb24gIT0gbnVsbCkgJiYgKAotICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9GQUlMVVJFX0RFVEFJTF9ERVNDUklQVElPTikpKQotICAgICAgewotICAgICAgICBmYWlsdXJlRGV0YWlsRGVzY3JpcHRpb24uYXBwZW5kKGNoLCBzdGFydCwgbGVuZ3RoKTsKLSAgICAgIH0KLQotICAgICAgLy8gPGRldGFpbERlc2NyaXB0aW9uPgotICAgICAgZWxzZSBpZiAoCi0gICAgICAgIChkZXRhaWxEZXNjcmlwdGlvbiAhPSBudWxsKQotICAgICAgICAgICYmIChjdXJyZW50RWxlbWVudC5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fREVUQUlMX0RFU0NSSVBUSU9OKSkpCi0gICAgICB7Ci0gICAgICAgIGRldGFpbERlc2NyaXB0aW9uLmFwcGVuZChjaCwgc3RhcnQsIGxlbmd0aCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDx0ZXN0QXNzZXJ0aW9uSUQ+Ci0gICAgICBlbHNlIGlmICgKLSAgICAgICAgKHRlc3RBc3NlcnRpb25JZCAhPSBudWxsKQotICAgICAgICAgICYmIChjdXJyZW50RWxlbWVudC5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fVEVTVF9BU1NFUlRJT05fSUQpKSkKLSAgICAgIHsKLSAgICAgICAgdGVzdEFzc2VydGlvbklkLmFwcGVuZChjaCwgc3RhcnQsIGxlbmd0aCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDxtZXNzYWdlSW5wdXQ+Ci0gICAgICBlbHNlIGlmICgKLSAgICAgICAgKGxvZ0lucHV0ICE9IG51bGwpCi0gICAgICAgICAgJiYgKGN1cnJlbnRFbGVtZW50LmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9NRVNTQUdFX0lOUFVUKSkpCi0gICAgICB7Ci0gICAgICAgIGxvZ0lucHV0LmFwcGVuZChjaCwgc3RhcnQsIGxlbmd0aCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIDx3c2RsSW5wdXQ+Ci0gICAgICBlbHNlIGlmICgKLSAgICAgICAgKHdzZGxJbnB1dCAhPSBudWxsKQotICAgICAgICAgICYmIChjdXJyZW50RWxlbWVudC5lcXVhbHMoV1NJQ29uc3RhbnRzLkVMRU1fV1NETF9JTlBVVCkpKQotICAgICAgewotICAgICAgICB3c2RsSW5wdXQuYXBwZW5kKGNoLCBzdGFydCwgbGVuZ3RoKTsKLSAgICAgIH0KLQotICAgICAgLyogUkVNT1ZFOgotICAgICAgLy8gPHVkZGlJbnB1dD4KLSAgICAgIGVsc2UgaWYgKCh1ZGRpSW5wdXQgIT0gbnVsbCkgJiYgKGN1cnJlbnRFbGVtZW50LmVxdWFscyhXU0lDb25zdGFudHMuRUxFTV9VRERJX0lOUFVUKSkpIHsKLSAgICAgICAgdWRkaUlucHV0LmFwcGVuZChjaCwgc3RhcnQsIGxlbmd0aCk7Ci0gICAgICB9Ci0gICAgICAqLwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBOT1RFIHRoYXQgdGhpcyBhcGkgYXNzdW1lcyB0aGF0IGJhc2Ugd3NkbCB2YWxpZGF0b3IgaGFzIGFscmVhZHkgdmFsaWRhdGVkCi0gICAqIHRoZSB3c2RsIGRvY3VtZW50IGFuZCBjb3JyZXNwb25kaW5nIHNjaGVtYXMgYWdhaW5zdCB0aGUgd3NkbCAxLjEgc3BlY2lmaWNhdGlvbi4KLSAgICogTm90ZSBhbHNvIHRoYXQgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGR1cGxpY2F0ZSBjaGVja3MgYmV0d2VlbiB0aGUgYmFzZSB2YWxpZGF0b3IKLSAgICogYW5kIHRoZSB3cy1pIHZhbGlkYXRvci4gU2luY2Ugc29tZSBvZiB0aGVzZSBjaGVja3MgYXJlIGNwdSBpbnRlbnNpdmUsIHdlIGRpc2FibGUgCi0gICAqIHRob3NlIGFzc2VydGlvbnMgaGVyZS4gCi0gICAqCi0gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXNzZXJ0aW9uIGhhcyBhbHJlYWR5IGJlZW4gY2hlY2tlZCBieSB0aGUgYmFzZSB2YWxpZGF0b3IuIAotICAgKiBAcGFyYW0gdGVzdEFzc2VydGlvbgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGFzc2VydGlvbiBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQgYnkgdGhlIGJhc2UgdmFsaWRhdG9yLiAKLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIGFscmVhZHlDaGVja2VkKFN0cmluZyBpZCkKLSAgewotCSBib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotCSBpZiAoaWQgIT0gbnVsbCkKLQkgewotICAgICAgIHJlc3VsdCA9IChpZC5lcXVhbHMoIkJQMjExMCIpIHx8Ci0gICAgCQkgICAJIGlkLmVxdWFscygiQlAyMTE1IikgfHwKLQkJICAgICAgICAgaWQuZXF1YWxzKCJCUDI0MTciKSB8fAotCQkgICAgICAgICBpZC5lcXVhbHMoIkJQMjExNCIpIHx8Ci0JCSAgICAgICAgIGlkLmVxdWFscygiQlAyMTIzIikgfHwKLQkJICAgICAgICAgaWQuZXF1YWxzKCJTU0JQMjIwOSIpIHx8Ci0JCSAgICAgICAgIGlkLmVxdWFscygiQVAyMjA5IikgfHwKLQkJICAgICAgICAgaWQuZXF1YWxzKCJCUDI3MDAiKSB8fAotCQkgICAgICAgICBpZC5lcXVhbHMoIkJQMjAxMSIpCi0JCSAgICAgICAgICk7Ci0JIH0KLQkgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL2ltcGwvVGVzdEFzc2VydGlvbkltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvaW1wbC9UZXN0QXNzZXJ0aW9uSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Njk3NTdhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvaW1wbC9UZXN0QXNzZXJ0aW9uSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjU2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuRW50cnlUeXBlTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgLi4uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBUZXN0QXNzZXJ0aW9uSW1wbCBpbXBsZW1lbnRzIFRlc3RBc3NlcnRpb24KLXsKLSAgLyoqCi0gICAqIFRlc3QgYXNzZXJ0aW9uIGlkLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBpZCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRlc3QgYXNzZXJ0aW9uIHR5cGUuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHR5cGUgPSBudWxsOwotCi0gIC8qKgotICAgKiBUZXN0IGFzc2VydGlvbiBwcmltYXJ5IGVudHJ5IHR5cGUgbmFtZS4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgZW50cnlUeXBlTmFtZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFRlc3QgYXNzZXJ0aW9uIGVuYWJsZWQgaW5kaWNhdG9yLgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gZW5hYmxlZCA9IHRydWU7Ci0KLSAgLyoqCi0gICAqIENvbnRleHQuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGNvbnRleHQgPSBudWxsOwotCi0gIC8qKgotICAgKiBBc3NlcnRpb24gZGVzY3JpcHRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGFzc2VydGlvbkRlc2NyaXB0aW9uID0gbnVsbDsKLQotICAvKioKLSAgICogRmFpbHVyZSBtZXNzYWdlLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBmYWlsdXJlTWVzc2FnZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIEZhaWx1cmUgZGV0YWlsIGRlc2NyaXB0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBmYWlsdXJlRGV0YWlsRGVzY3JpcHRpb24gPSBudWxsOwotCi0gIC8qKgotICAgKiBEZXRhaWwgZGVzY3JpcHRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGRldGFpbERlc2NyaXB0aW9uID0gbnVsbDsKLQotICAvKioKLSAgICogQWRkdGlvbmFsIGVudHJ5IHR5cGUgbGlzdC4KLSAgICovCi0gIHByb3RlY3RlZCBFbnRyeVR5cGVMaXN0IGVudHJ5VHlwZUxpc3QgPSBudWxsOwotCi0gIC8qKgotICAgKiBQcmVyZXEgSUQgbGlzdC4KLSAgICovCi0gIHByb3RlY3RlZCBWZWN0b3IgcHJlcmVxSWRMaXN0ID0gbmV3IFZlY3RvcigpOwotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uI2dldElkKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuaWQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiNzZXRJZChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRJZChTdHJpbmcgaWQpCi0gIHsKLSAgICB0aGlzLmlkID0gaWQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiNnZXRUeXBlKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy50eXBlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24jc2V0VHlwZShTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUeXBlKFN0cmluZyB0eXBlKQotICB7Ci0gICAgdGhpcy50eXBlID0gdHlwZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uI2dldEVudHJ5VHlwZU5hbWUoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRFbnRyeVR5cGVOYW1lKCkKLSAgewotICAgIHJldHVybiB0aGlzLmVudHJ5VHlwZU5hbWU7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiNzZXRFbnRyeVR5cGVOYW1lKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVudHJ5VHlwZU5hbWUoU3RyaW5nIGVudHJ5VHlwZU5hbWUpCi0gIHsKLSAgICB0aGlzLmVudHJ5VHlwZU5hbWUgPSBlbnRyeVR5cGVOYW1lOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24jaXNFbmFibGVkKCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpCi0gIHsKLSAgICByZXR1cm4gZW5hYmxlZDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uI3NldEVuYWJsZWQoYm9vbGVhbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKQotICB7Ci0gICAgdGhpcy5lbmFibGVkID0gZW5hYmxlZDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uI2dldENvbnRleHQoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRDb250ZXh0KCkKLSAgewotICAgIHJldHVybiBjb250ZXh0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24jc2V0Q29udGV4dChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDb250ZXh0KFN0cmluZyBjb250ZXh0KQotICB7Ci0gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uI2dldEFzc2VydGlvbkRlc2NyaXB0aW9uKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QXNzZXJ0aW9uRGVzY3JpcHRpb24oKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuYXNzZXJ0aW9uRGVzY3JpcHRpb247Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiNzZXRBc3NlcnRpb25EZXNjcmlwdGlvbihTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBc3NlcnRpb25EZXNjcmlwdGlvbihTdHJpbmcgYXNzZXJ0aW9uRGVzY3JpcHRpb24pCi0gIHsKLSAgICB0aGlzLmFzc2VydGlvbkRlc2NyaXB0aW9uID0gYXNzZXJ0aW9uRGVzY3JpcHRpb247Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiNnZXRGYWlsdXJlTWVzc2FnZSgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEZhaWx1cmVNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiB0aGlzLmZhaWx1cmVNZXNzYWdlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24jc2V0RmFpbHVyZU1lc3NhZ2UoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RmFpbHVyZU1lc3NhZ2UoU3RyaW5nIGZhaWx1cmVNZXNzYWdlKQotICB7Ci0gICAgdGhpcy5mYWlsdXJlTWVzc2FnZSA9IGZhaWx1cmVNZXNzYWdlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24jZ2V0RmFpbHVyZURldGFpbERlc2NyaXB0aW9uKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RmFpbHVyZURldGFpbERlc2NyaXB0aW9uKCkKLSAgewotICAgIHJldHVybiB0aGlzLmZhaWx1cmVEZXRhaWxEZXNjcmlwdGlvbjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uI3NldEZhaWx1cmVEZXRhaWxEZXNjcmlwdGlvbihTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGYWlsdXJlRGV0YWlsRGVzY3JpcHRpb24oU3RyaW5nIGZhaWx1cmVEZXRhaWxEZXNjcmlwdGlvbikKLSAgewotICAgIHRoaXMuZmFpbHVyZURldGFpbERlc2NyaXB0aW9uID0gZmFpbHVyZURldGFpbERlc2NyaXB0aW9uOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24jZ2V0RGV0YWlsRGVzY3JpcHRpb24oKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXREZXRhaWxEZXNjcmlwdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5kZXRhaWxEZXNjcmlwdGlvbjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uI3NldERldGFpbERlc2NyaXB0aW9uKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERldGFpbERlc2NyaXB0aW9uKFN0cmluZyBkZXRhaWxEZXNjcmlwdGlvbikKLSAgewotICAgIHRoaXMuZGV0YWlsRGVzY3JpcHRpb24gPSBkZXRhaWxEZXNjcmlwdGlvbjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uI2dldEFkZGl0aW9uYWxFbnRyeVR5cGVMaXN0KCkKLSAgICovCi0gIHB1YmxpYyBFbnRyeVR5cGVMaXN0IGdldEFkZGl0aW9uYWxFbnRyeVR5cGVMaXN0KCkKLSAgewotICAgIHJldHVybiB0aGlzLmVudHJ5VHlwZUxpc3Q7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiNzZXRBZGRpdGlvbmFsRW50cnlUeXBlTGlzdChvcmcud3NpLnRlc3QucHJvZmlsZS5FbnRyeVR5cGVMaXN0KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QWRkaXRpb25hbEVudHJ5VHlwZUxpc3QoRW50cnlUeXBlTGlzdCBlbnRyeVR5cGVMaXN0KQotICB7Ci0gICAgdGhpcy5lbnRyeVR5cGVMaXN0ID0gZW50cnlUeXBlTGlzdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uI2dldFByZXJlcUlkTGlzdCgpCi0gICAqLwotICBwdWJsaWMgVmVjdG9yIGdldFByZXJlcUlkTGlzdCgpCi0gIHsKLSAgICByZXR1cm4gcHJlcmVxSWRMaXN0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24jYWRkUHJlcmVxSWQoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkUHJlcmVxSWQoU3RyaW5nIHByZXJlcUlkKQotICB7Ci0gICAgdGhpcy5wcmVyZXFJZExpc3QuYWRkKHByZXJlcUlkKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvQmFzZVZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvQmFzZVZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmU3MDJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL0Jhc2VWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFuYWx5emVyQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBc3NlcnRpb25zOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0QXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRlcjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLQotLyoqCi0gKiBUaGUgYmFzZSBpbnRlcmZhY2UgZm9yIHRoZSBwcm9maWxlIHZhbGlkYXRvci4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAgKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBCYXNlVmFsaWRhdG9yCi17Ci0gIC8qKgotICAgKiBTZXQgYWxsIHRlc3QgYXNzZXJ0aW9ucyBmb3IgYW4gYXJ0aWZhY3QgdG8gbWlzc2luZ0lucHV0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbnkgcHJvYmxlbXMgd2hpbGUgcHJvY2Vzc2luZy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEFsbE1pc3NpbmdJbnB1dCgpIHRocm93cyBXU0lFeGNlcHRpb247Ci0KLSAgLyoqCi0gICAqIENsZWFudXAgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgb2YgdGhlIHRlc3QgYXNzZXJ0aW9ucyBmb3IgYW4gYXJ0aWZhY3QuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFueSBwcm9ibGVtcyBkdXJpbmcgY2xlYW51cC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGNsZWFudXAoKSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgICAqIFBhcnNlIFhNTCBkb2N1bWVudCBhbmQgdmFsaWRhdGUgd2l0aCBhIHNjaGVtYSBkb2N1bWVudC4KLSAgICAgKiBAcGFyYW0gdXJsU3RyaW5nIFhNTCBkb2N1bWVudCBsb2NhdGlvbi4KLSAgICAgKiBAcGFyYW0gYmFzZVVSSSBhIGJhc2UgdXJsIHRvIGFzc2lzdCBpbiBsb2NhdGluZyB0aGUgWE1MIGRvY3VtZW50LgotICAgICAqIEBwYXJhbSBzY2hlbWEgdGhlIHJlbGF0ZWQgWE1MIHNjaGVtYS4KLSAgICAgKiBAcmV0dXJuIFhNTCBkb2N1bWVudC4KLSAgICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBhcmUgYW55IHByb2JsZW1zIHdoaWxlIHBhcnNpbmcgb3IgCi0gICAgICogICAgICAgICB2YWxpZGF0aW5nIHRoZSBYTUwgZG9jdW1lbnQuCi0gICAgICovCi0gIHB1YmxpYyBEb2N1bWVudCBwYXJzZVhNTERvY3VtZW50VVJMKAotICAgIFN0cmluZyB1cmxTdHJpbmcsCi0gICAgU3RyaW5nIGJhc2VVUkksCi0gICAgU3RyaW5nIHNjaGVtYSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgKiBJbml0aWFpbGl6ZSB2YWxpZGF0aW9uIHRlc3QgcHJvY2VkdXJlLgotICAgKiBAcGFyYW0gYW5hbHl6ZXJDb250ZXh0IHRoZSBhbmFseXplckNvbnRleHQuCi0gICAqIEBwYXJhbSBhc3NlcnRpb25zICAgICAgdGhlIGFzc2VydGlvbnMKLSAgICogQHBhcmFtIHJlcG9ydEFydGlmYWN0ICB0aGUgcmVwb3J0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gYW5hbHl6ZXJDb25maWcgIHRoZSBhbmFseXplckNvbmZpZwotICAgKiBAcGFyYW0gcmVwb3J0ZXIgICAgICAgIHRoZSByZXBvcnRlciB3aGljaCBpcyB1c2VkIHRvIGFkZCBlcnJvcnMgdG8gdGhlCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgY29uZm9ybWFuY2UgcmVwb3J0Ci0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uICAgaWYgbWVzc2FnZSB2YWxpZGF0b3IgY291bGQgbm90IGJlIGluaXRpYWxpemVkLgotICAgKi8KLSAgcHVibGljIHZvaWQgaW5pdCgKLSAgICBBbmFseXplckNvbnRleHQgYW5hbHl6ZXJDb250ZXh0LAotICAgIFByb2ZpbGVBc3NlcnRpb25zIGFzc2VydGlvbnMsCi0gICAgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QsCi0gICAgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcsCi0gICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogRGV0ZXJtaW5lcyBpZiB0aGlzIHZhbGlkYXRvciBzaG91bGQgYmUgcnVuIChkZXBlbmRpbmcgb24gdGhlIGFuYWx5emVyCi0gICAqIGNvbmZpZykKLSAgICogQHJldHVybiBib29sZWFuICB0cnVlIGlmIHZhbGlkYXRvciBzaG91bGQgYmUgcnVuLCBmYWxzZSBpZiBub3QKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHJ1blRlc3RzKCk7Ci0KLSAgLyoqCi0gICAqIFJ1biB0aGUgdmFsaWRhdG9yCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJzIGR1cmluZyB2YWxpZGF0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZUFydGlmYWN0KCkgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIGFydGlmYWN0IHR5cGUgdGhhdCB0aGlzIHZhbGlkYXRvciBhcHBsaWVzIHRvLgotICAgKiBAcmV0dXJuIHRoZSBhcnRpZmFjdCB0eXBlIChhIFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QXJ0aWZhY3RUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgY29sbGVjdGlvbiBvZiBlbnRyeSB0eXBlcyB0aGF0IHRoaXMgdmFsaWRhdG9yIGFwcGxpZXMgdG8uCi0gICAqIEByZXR1cm4gYW4gYXJyYXkgb2YgZW50cnkgdHlwZXMgKFN0cmluZ3MpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nW10gZ2V0RW50cnlUeXBlcygpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvRW50cnlDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9FbnRyeUNvbnRleHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRiZDg5My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9FbnRyeUNvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5BbmFseXplckNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NZXNzYWdlRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NaW1lUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkVudHJ5VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC5XU0RMRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIGNvbnRhaW5zIHRoZSB0YXJnZXQgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IGEgdGVzdCBhc3NlcnRpb24uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKiBAYXV0aG9yIEdyYWhhbSBUdXJyZWxsIChndHVycmVsbEB1ay5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgRW50cnlDb250ZXh0Ci17Ci0gIHByb3RlY3RlZCBFbnRyeSBlbnRyeSA9IG51bGw7Ci0KLSAgcHJvdGVjdGVkIE1lc3NhZ2VFbnRyeSByZXF1ZXN0ID0gbnVsbDsKLSAgcHJvdGVjdGVkIE1lc3NhZ2VFbnRyeSByZXNwb25zZSA9IG51bGw7Ci0gIHByb3RlY3RlZCBNZXNzYWdlRW50cnkgbWVzc2FnZUVudHJ5ID0gbnVsbDsKLQotICBwcm90ZWN0ZWQgRG9jdW1lbnQgcmVxdWVzdERvY3VtZW50ID0gbnVsbDsKLSAgcHJvdGVjdGVkIERvY3VtZW50IHJlc3BvbnNlRG9jdW1lbnQgPSBudWxsOwotICBwcm90ZWN0ZWQgRG9jdW1lbnQgbWVzc2FnZUVudHJ5RG9jdW1lbnQgPSBudWxsOwotCi0gIHByb3RlY3RlZCBXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50ID0gbnVsbDsKLQotICBwcm90ZWN0ZWQgQW5hbHl6ZXJDb250ZXh0IGFuYWx5emVyQ29udGV4dCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBlbnRyeSBjb250ZXh0LgotICAgKiBAcGFyYW0gZW50cnkgICAgYSBtZXNzYWdlIGVudHJ5LgotICAgKiBAcGFyYW0gcmVxdWVzdCAgdGhlIHJlcXVlc3QuCi0gICAqIEBwYXJhbSByZXNwb25zZSB0aGUgcmVzcG9uc2UuCi0gICAqLwotICBwdWJsaWMgRW50cnlDb250ZXh0KEVudHJ5IGVudHJ5LCBNZXNzYWdlRW50cnkgcmVxdWVzdCwgTWVzc2FnZUVudHJ5IHJlc3BvbnNlKQotICB7Ci0gICAgdGhpcyhlbnRyeSwgcmVxdWVzdCwgcmVzcG9uc2UsIG51bGwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBlbnRyeSBjb250ZXh0LgotICAgKiBAcGFyYW0gZW50cnkgICAgICAgICAgIGEgbWVzc2FnZSBlbnRyeS4KLSAgICogQHBhcmFtIHJlcXVlc3QgICAgICAgICB0aGUgcmVxdWVzdC4KLSAgICogQHBhcmFtIHJlc3BvbnNlICAgICAgICB0aGUgcmVzcG9uc2UuCi0gICAqIEBwYXJhbSBhbmFseXplckNvbnRleHQgdGhlIGFuYWx5emVyQ29udGV4dC4KLSAgICovCi0gIHB1YmxpYyBFbnRyeUNvbnRleHQoCi0gICAgRW50cnkgZW50cnksCi0gICAgTWVzc2FnZUVudHJ5IHJlcXVlc3QsCi0gICAgTWVzc2FnZUVudHJ5IHJlc3BvbnNlLAotICAgIEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQpCi0gIHsKLSAgICB0aGlzLmVudHJ5ID0gZW50cnk7Ci0gICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICB0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2U7Ci0gICAgdGhpcy5hbmFseXplckNvbnRleHQgPSBhbmFseXplckNvbnRleHQ7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBQYXJzZSBhbGwgZG9jdW1lbnRzCi0gICAgICBpZihyZXF1ZXN0LmlzTWltZUNvbnRlbnQoKSkgCi0gICAgICB7Ci0gICAgICAJTWltZVBhcnQgcGFydCA9IHJlcXVlc3QuZ2V0TWltZVBhcnRzKCkuZ2V0Um9vdFBhcnQoKTsKLSAgICAgICAgaWYgKChwYXJ0ICE9IG51bGwpICYmIChwYXJ0LmdldENvbnRlbnQoKS5sZW5ndGgoKSA+IDApKQotICAgICAgICAgIHJlcXVlc3REb2N1bWVudCA9IFhNTFV0aWxzLnBhcnNlWE1MKHBhcnQuZ2V0Q29udGVudCgpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgCi0gICAgICB7Ci0gICAgICAgIGlmIChyZXF1ZXN0LmdldE1lc3NhZ2UoKS5sZW5ndGgoKSA+IDApCi0gICAgICAgICAgcmVxdWVzdERvY3VtZW50ID0gWE1MVXRpbHMucGFyc2VYTUwocmVxdWVzdC5nZXRNZXNzYWdlKCkpOwotICAgICAgfQotCi0gICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCkgewotICAgICAgICAgIGlmKHJlc3BvbnNlLmlzTWltZUNvbnRlbnQoKSkgCi0gICAgICAgICAgewotICAgICAgICAgIAlNaW1lUGFydCBwYXJ0ID0gcmVzcG9uc2UuZ2V0TWltZVBhcnRzKCkuZ2V0Um9vdFBhcnQoKTsKLSAgICAgICAgICAJaWYgKChwYXJ0ICE9IG51bGwpICYmIChwYXJ0LmdldENvbnRlbnQoKS5sZW5ndGgoKSA+IDApKQotICAgICAgICAgICAgICByZXNwb25zZURvY3VtZW50ID0gWE1MVXRpbHMucGFyc2VYTUwocGFydC5nZXRDb250ZW50KCkpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIAotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyZXNwb25zZS5nZXRNZXNzYWdlKCkubGVuZ3RoKCkgPiAwKQotICAgICAgICAgICAgICByZXNwb25zZURvY3VtZW50ID0gWE1MVXRpbHMucGFyc2VYTUwocmVzcG9uc2UuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgY2F0Y2ggKFdTSUV4Y2VwdGlvbiB3ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gbmVlZCBzb21lIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiBoZXJlIGFuZCBtb3JlIGNhcmVmdWwgY2hlY2tpbmcKLSAgICBpZiAoZW50cnkuZ2V0RW50cnlUeXBlKCkuZXF1YWxzKEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoTWVzc2FnZVZhbGlkYXRvci5UWVBFX01FU1NBR0VfUkVRVUVTVCkpKQotICAgIHsKLSAgICAgIHRoaXMubWVzc2FnZUVudHJ5ID0gcmVxdWVzdDsKLSAgICAgIHRoaXMubWVzc2FnZUVudHJ5RG9jdW1lbnQgPSByZXF1ZXN0RG9jdW1lbnQ7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0aGlzLm1lc3NhZ2VFbnRyeSA9IHJlc3BvbnNlOwotICAgICAgdGhpcy5tZXNzYWdlRW50cnlEb2N1bWVudCA9IHJlc3BvbnNlRG9jdW1lbnQ7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBlbnRyeSBjb250ZXh0LgotICAgKiBAcGFyYW0gZW50cnkgYSBtZXNzYWdlIGVudHJ5LgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IGEgV1NETCBkb2N1bWVudC4KLSAgICovCi0gIHB1YmxpYyBFbnRyeUNvbnRleHQoRW50cnkgZW50cnksIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQpCi0gIHsKLSAgICB0aGlzLmVudHJ5ID0gZW50cnk7Ci0gICAgdGhpcy53c2RsRG9jdW1lbnQgPSB3c2RsRG9jdW1lbnQ7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGVudHJ5IGNvbnRleHQuCi0gICAqIEBwYXJhbSBlbnRyeSBhIG1lc3NhZ2UgZW50cnkuCi0gICAqIEBwYXJhbSBhbmFseXplckNvbnRleHQgdGhlIGFuYWx5emVyQ29udGV4dC4KLSAgICovCi0gIHB1YmxpYyBFbnRyeUNvbnRleHQoRW50cnkgZW50cnksIEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQpCi0gIHsKLSAgICB0aGlzLmVudHJ5ID0gZW50cnk7Ci0gICAgdGhpcy5hbmFseXplckNvbnRleHQgPSBhbmFseXplckNvbnRleHQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgZW50cnkuIAotICAgKiBAcmV0dXJuIHRoZSBlbnRyeS4gCi0gICAqLwotICBwdWJsaWMgRW50cnkgZ2V0RW50cnkoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuZW50cnk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVxdWVzdC4KLSAgICogQHJldHVybiB0aGUgcmVxdWVzdC4KLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlRW50cnkgZ2V0UmVxdWVzdCgpCi0gIHsKLSAgICByZXR1cm4gcmVxdWVzdDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXNwb25zZS4KLSAgICogQHJldHVybiB0aGUgcmVzcG9uc2UuCi0gICAqLwotICBwdWJsaWMgTWVzc2FnZUVudHJ5IGdldFJlc3BvbnNlKCkKLSAgewotICAgIHJldHVybiByZXNwb25zZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBsb2cgZW50cnkgd2hpY2ggaXMgbm90IG51bGwuCi0gICAqIEByZXR1cm4gdGhlIGxvZyBlbnRyeS4KLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlRW50cnkgZ2V0TWVzc2FnZUVudHJ5KCkKLSAgewotICAgIHJldHVybiBtZXNzYWdlRW50cnk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcmVxdWVzdC4KLSAgICogQHJldHVybiBNZXNzYWdlRW50cnkKLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudCBnZXRSZXF1ZXN0RG9jdW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIHJlcXVlc3REb2N1bWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSByZXNwb25zZS4KLSAgICogQHJldHVybiB0aGUgcmVzcG9uc2UuCi0gICAqLwotICBwdWJsaWMgRG9jdW1lbnQgZ2V0UmVzcG9uc2VEb2N1bWVudCgpCi0gIHsKLSAgICByZXR1cm4gcmVzcG9uc2VEb2N1bWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBsb2cgZW50cnkgd2hpY2ggaXMgbm90IG51bGwuCi0gICAqIEByZXR1cm4gdGhlIGxvZyBlbnRyeS4KLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudCBnZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpCi0gIHsKLSAgICByZXR1cm4gbWVzc2FnZUVudHJ5RG9jdW1lbnQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgV1NETCBkb2N1bWVudC4KLSAgICogQHJldHVybiB0aGUgV1NETCBkb2N1bWVudC4KLSAgICovCi0gIHB1YmxpYyBXU0RMRG9jdW1lbnQgZ2V0V1NETERvY3VtZW50KCkKLSAgewotICAgIHJldHVybiB3c2RsRG9jdW1lbnQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyBhbmFseXplckNvbnRleHQuCi0gICAqIEByZXR1cm4gYW5hbHl6ZXJDb250ZXh0Ci0gICAqLwotICBwdWJsaWMgQW5hbHl6ZXJDb250ZXh0IGdldEFuYWx5emVyQ29udGV4dCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5hbmFseXplckNvbnRleHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL0VudmVsb3BlVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9FbnZlbG9wZVZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGRjYzk5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL0VudmVsb3BlVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5BbmFseXplckNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFydGlmYWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0QXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC5XU0RMRG9jdW1lbnQ7Ci0KLS8qKgotICogSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIGVudmVsb3BlIHZhbGlkYXRpb24gdGVzdCBwcm9jZWR1cmUuCi0gKgotICogQHZlcnNpb24gMS4wCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRW52ZWxvcGVWYWxpZGF0b3IgZXh0ZW5kcyBMb2dWYWxpZGF0b3IKLXsKLQotICAvKioKLSAgICogSW5pdGlhaWxpemUgdmFsaWRhdGlvbiB0ZXN0IHByb2NlZHVyZS4KLSAgICogQHBhcmFtIGFuYWx5emVyQ29udGV4dCB0aGUgYW5hbHl6ZXJDb250ZXh0LgotICAgKiBAcGFyYW0gYXJ0aWZhY3QgICAgICAgIGFuIHByb2ZpbGUgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSByZXBvcnRBcnRpZmFjdCAgdGhlIHJlcG9ydCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHdzZGxEb2N1bWVudCB0aGUgV2ViIHNlcnZpY2UgZGVmaW5pdGlvbgotICAgKiBAcGFyYW0gcmVwb3J0ZXIgdGhlIHJlcG9ydGVyIHdoaWNoIGlzIHVzZWQgdG8gYWRkIGVycm9ycyB0byB0aGUgY29uZm9ybWFuY2UgcmVwb3J0Ci0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIG1lc3NhZ2UgdmFsaWRhdG9yIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4KLSAgICogQGRlcHJlY2F0ZWQgLS0gdXNlIGluaXQoQW5hbHl6ZXJDb250ZXh0IGFuYWx5emVyQ29udGV4dCwKLSAgICogICAgICAgICAgICAgICAgICAgICAgICAgUHJvZmlsZUFzc2VydGlvbnMgYXNzZXJ0aW9ucywKLSAgICogICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QsCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emVyQ29uZmlnIGFuYWx5emVyQ29uZmlnLAotICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRlciByZXBvcnRlcikKLSAgICovCi0gIHB1YmxpYyB2b2lkIGluaXQoCi0gICAgQW5hbHl6ZXJDb250ZXh0IGFuYWx5emVyQ29udGV4dCwKLSAgICBQcm9maWxlQXJ0aWZhY3QgYXJ0aWZhY3QsCi0gICAgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QsCi0gICAgV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCwKLSAgICBSZXBvcnRlciByZXBvcnRlcikKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uOwotICAKLSAgLyoqIEVudmVsb3BlIGFydGlmYWN0IHR5cGUgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9FTlZFTE9QRSA9ICJlbnZlbG9wZSI7Ci0KLSAgLyoqIFJlcXVlc3QgZW52ZWxvcGUgZW50cnkgdHlwZS4gKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9FTlZFTE9QRV9SRVFVRVNUID0gInJlcXVlc3RFbnZlbG9wZSI7Ci0KLSAgLyoqIFJlc3BvbnNlIGVudmVsb3BlIGVudHJ5IHR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfRU5WRUxPUEVfUkVTUE9OU0UgPSAicmVzcG9uc2VFbnZlbG9wZSI7Ci0KLSAgLyoqIEFueSBlbnZlbG9wZSBlbnRyeSB0eXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0VOVkVMT1BFX0FOWSA9ICJhbnlFbnZlbG9wZSI7Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvTG9nVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9Mb2dWYWxpZGF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0ZGRiOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9Mb2dWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci0KLS8qKgotICogSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHZhbGlkYXRpb24gdGVzdCBwcm9jZWR1cmVzIGNvbW1vbiB0byBlbnZlbG9wZXMgYW5kCi0gKiBtZXNzYWdlcy4KLSAqLwotcHVibGljIGludGVyZmFjZSBMb2dWYWxpZGF0b3IgZXh0ZW5kcyBCYXNlVmFsaWRhdG9yIHsKLSAgICAvKioKLSAgICAgKiBWYWxpZGF0ZSB0aGUgZW52ZWxvcGUgbG9jYXRlZCBieSB0aGUgbG9nIGVudHJ5LiAKLSAgICAgKiBAcGFyYW0gZW50cnlDb250ZXh0IGEgbG9nIGVudHJ5IGxvY2F0aW5nIGFuIGVudmVsb3BlLgotICAgICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgd2hpbGUKLSAgICAgKiAgICAgICAgIHByb2Nlc3NpbmcgdGhlIGxvZyBlbnRyeS4KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB2YWxpZGF0ZShFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvTWVzc2FnZVZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvTWVzc2FnZVZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTUzZjRiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL01lc3NhZ2VWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFuYWx5emVyQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlQXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRBcnRpZmFjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLldTRExEb2N1bWVudDsKLQotLyoqCi0gKiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgbWVzc2FnZSB2YWxpZGF0aW9uIHRlc3QgcHJvY2VkdXJlLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0KLSAqIEBhdXRob3IgR3JhaGFtIFR1cnJlbGwgKGd0dXJyZWxsQHVrLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTWVzc2FnZVZhbGlkYXRvciBleHRlbmRzIExvZ1ZhbGlkYXRvcgotewotICAvKioKLSAgICogSFRUUCAxLjAgdmVyc2lvbiBpbmRpY2F0b3IuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIVFRQX1ZFUlNJT05fMV8wID0gIkhUVFAvMS4wIjsKLQotICAvKioKLSAgICogSFRUUCAxLjEgdmVyc2lvbiBpbmRpY2F0b3IuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIVFRQX1ZFUlNJT05fMV8xID0gIkhUVFAvMS4xIjsKLQotICAvKioKLSAgICogSFRUUCBQT1NUIG1lc3NhZ2UgaW5kaWNhdG9yLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSFRUUF9QT1NUID0gIlBPU1QiOwotCi0gIC8qKiBNZXNzYWdlIGFydGlmYWN0IHR5cGUgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9NRVNTQUdFID0gIm1lc3NhZ2UiOwotCi0gIC8qKiBSZXF1ZXN0IG1lc3NhZ2UgZW50cnkgdHlwZS4gKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9NRVNTQUdFX1JFUVVFU1QgPSAicmVxdWVzdE1lc3NhZ2UiOwotCi0gIC8qKiBSZXNwb25zZSBtZXNzYWdlIGVudHJ5IHR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfTUVTU0FHRV9SRVNQT05TRSA9ICJyZXNwb25zZU1lc3NhZ2UiOwotCi0gIC8qKiBBbnkgbWVzc2FnZSBlbnRyeSB0eXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX01FU1NBR0VfQU5ZID0gImFueU1lc3NhZ2UiOwotCi0gIC8qKiBNaW1lIHBhcnQgbWVzc2FnZSBlbnRyeSB0eXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX01JTUVfUEFSVCA9ICJwYXJ0IjsKLQotICAvKiogTWltZSByb290IHBhcnQgbWVzc2FnZSBlbnRyeSB0eXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX01JTUVfUk9PVF9QQVJUID0gInJvb3QtcGFydCI7Ci0KLSAgLyoqCi0gICAqIEluaXRpYWlsaXplIHZhbGlkYXRpb24gdGVzdCBwcm9jZWR1cmUuCi0gICAqIEBwYXJhbSBhbmFseXplckNvbnRleHQgdGhlIGFuYWx5emVyQ29udGV4dC4KLSAgICogQHBhcmFtIGFydGlmYWN0ICAgICAgICBhbiBwcm9maWxlIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcmVwb3J0QXJ0aWZhY3QgIHRoZSByZXBvcnQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSB3c2RsRG9jdW1lbnQgdGhlIFdlYiBzZXJ2aWNlIGRlZmluaXRpb24KLSAgICogQHBhcmFtIHJlcG9ydGVyIHRoZSByZXBvcnRlciB3aGljaCBpcyB1c2VkIHRvIGFkZCBlcnJvcnMgdG8gdGhlIGNvbmZvcm1hbmNlIHJlcG9ydAotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBtZXNzYWdlIHZhbGlkYXRvciBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQuCi0gICAqIEBkZXByZWNhdGVkIC0tIHVzZSBpbml0KEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQsCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgIFByb2ZpbGVBc3NlcnRpb25zIGFzc2VydGlvbnMsCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydEFydGlmYWN0IHJlcG9ydEFydGlmYWN0LAotICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXplckNvbmZpZyBhbmFseXplckNvbmZpZywKLSAgICogICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KAotICAgIEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQsCi0gICAgUHJvZmlsZUFydGlmYWN0IGFydGlmYWN0LAotICAgIFJlcG9ydEFydGlmYWN0IHJlcG9ydEFydGlmYWN0LAotICAgIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQsCi0gICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL1Byb2ZpbGVWYWxpZGF0b3JGYWN0b3J5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9Qcm9maWxlVmFsaWRhdG9yRmFjdG9yeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTZmMWQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL1Byb2ZpbGVWYWxpZGF0b3JGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5XU0lQcm9wZXJ0aWVzOwotCi0vKioKLSogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGFjY2VzcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIFByb2ZpbGVWYWxpZGF0b3JGYWN0b3J5IGFic3RyYWN0IGNsYXNzLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0KLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIFByb2ZpbGVWYWxpZGF0b3JGYWN0b3J5Ci17Ci0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgYSB2YWxpZGF0b3IgZGVwZW5kaW5nIG9uIHRoZSBnaXZlbiBhcnRpZmFjdCBuYW1lCi0gICAqIEBwYXJhbSBhcnRpZmFjdE5hbWUgLSBTdHJpbmcgY29udGFpbmluZyB0aGUgYXJ0aWZhY3QgbmFtZSBmcm9tIHRoZSBUQUQKLSAgICogQHJldHVybiBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBCYXNlVmFsaWRhdG9yIGludGVyZmFjZS4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdGhlIHZhbGlkYXRvciBjYW5ub3QgYmUgaW5zdGFudGlhdGVkCi0gICAqLwotICBwdWJsaWMgYWJzdHJhY3QgQmFzZVZhbGlkYXRvciBnZXRWYWxpZGF0b3JGb3JBcnRpZmFjdChTdHJpbmcgYXJ0aWZhY3ROYW1lKQotICAgICAgICAgIHRocm93cyBXU0lFeGNlcHRpb247Ci0KLSAgLyoqIAotICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgYSBVRERJIHZhbGlkYXRvci4KLSAgICogQHJldHVybiAgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgV1NETFZhbGlkYXRvciBpbnRlcmZhY2UuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIFVEREkgdmFsaWRhdG9yIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQuCi0gICAqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRWYWxpZGF0b3JGb3JBcnRpZmFjdChTdHJpbmcgYXJ0aWZhY3ROYW1lKS4KLSAgICovCi0gIHB1YmxpYyBhYnN0cmFjdCBVRERJVmFsaWRhdG9yIG5ld1VERElWYWxpZGF0b3IoKSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKiAKLSAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGEgV1NETCB2YWxpZGF0b3IuCi0gICAqIEByZXR1cm4gYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgV1NETFZhbGlkYXRvciBpbnRlcmZhY2UuIAotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBXU0RMIHZhbGlkYXRvciBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLgotICAgKiBAZGVwcmVjYXRlZCAtLSB1c2UgZ2V0VmFsaWRhdG9yRm9yQXJ0aWZhY3QoU3RyaW5nIGFydGlmYWN0TmFtZSkuCi0gICAqLwotICBwdWJsaWMgYWJzdHJhY3QgV1NETFZhbGlkYXRvciBuZXdXU0RMVmFsaWRhdG9yKCkgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKiogCi0gICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBhIG1lc3NhZ2UgdmFsaWRhdG9yLgotICAgKiBOT1RFOiBEbyB3ZSBuZWVkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0aGUgdHJhbnBvcnQgYW5kIFNPQVAgCi0gICAqIG1lc3NhZ2UgdmFsaWRhdG9yPwotICAgKgotICAgKiBAcmV0dXJuIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIE1lc3NhZ2VWYWxpZGF0b3IgaW50ZXJmYWNlLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBtZXNzYWdlIHZhbGlkYXRvcmNhbm5vdCBiZSBpbnN0YW50aWF0ZWQuCi0gICAqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRWYWxpZGF0b3JGb3JBcnRpZmFjdChTdHJpbmcgYXJ0aWZhY3ROYW1lKS4KLSAgICovCi0gIHB1YmxpYyBhYnN0cmFjdCBNZXNzYWdlVmFsaWRhdG9yIG5ld01lc3NhZ2VWYWxpZGF0b3IoKSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKiAKLSAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGFuIGVudmVsb3BlIHZhbGlkYXRvci4KLSAgICogQHJldHVybiBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBFbnZlbG9wZVZhbGlkYXRvciBpbnRlcmZhY2UuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIG1lc3NhZ2UgdmFsaWRhdG9yIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQuIAotICAgKiBAZGVwcmVjYXRlZCAtLSB1c2UgZ2V0VmFsaWRhdG9yRm9yQXJ0aWZhY3QoU3RyaW5nIGFydGlmYWN0TmFtZSkuCi0gICAqLwotICBwdWJsaWMgYWJzdHJhY3QgRW52ZWxvcGVWYWxpZGF0b3IgbmV3RW52ZWxvcGVWYWxpZGF0b3IoKSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgKiBJbnN0YW50aWF0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFByb2ZpbGVWYWxpZGF0b3JGYWN0b3J5IGNsYXNzLgotICAgKiBUaGUgaW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIHRoaXMgaW50ZXJmYWNlIGlzIHNwZWNpZmllZCBpbiB0aGUgZm9sbG93aW5nIAotICAgKiBKYXZhIHN5c3RlbSBwcm9wZXJ0eToKLSAgICogPFVMPgotICAgKiAgIDxMST53c2kucHJvZmlsZS52YWxpZGF0b3IuZmFjdG9yeQotICAgKiA8L1VMPgotICAgKgotICAgKiBAcmV0dXJuIHRoZSBQcm9maWxlVmFsaWRhdG9yRmFjdG9yeSBvYmplY3QuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIGZhY3RvcnkgY2xhc3MgY2Fubm90IGJlIGluc3RhbnRpYXRlZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgUHJvZmlsZVZhbGlkYXRvckZhY3RvcnkgbmV3SW5zdGFuY2UoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBQcm9maWxlVmFsaWRhdG9yRmFjdG9yeSBmYWN0b3J5ID0gbnVsbDsKLSAgICBTdHJpbmcgZmFjdG9yeUNsYXNzTmFtZSA9IG51bGw7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBHZXQgZmFjdG9yeSBjbGFzcyBuYW1lCi0gICAgICBmYWN0b3J5Q2xhc3NOYW1lID0KLSAgICAgICAgV1NJUHJvcGVydGllcy5nZXRQcm9wZXJ0eSgKLSAgICAgICAgICBXU0lQcm9wZXJ0aWVzLlBST1BfVkFMSURBVE9SX0ZBQ1RPUlksCi0gICAgICAgICAgV1NJUHJvcGVydGllcy5ERUZfVkFMSURBVE9SX0ZBQ1RPUlkpOwotCi0gICAgICAvLyBDcmVhdGUgdGhlIGZhY3RvcnkgY2xhc3MKLSAgICAgIENsYXNzIGZhY3RvcnlDbGFzcyA9IENsYXNzLmZvck5hbWUoZmFjdG9yeUNsYXNzTmFtZSk7Ci0KLSAgICAgIC8vIEluc3RhbnRpYXRlIHRoZSBmYWN0b3J5IAotICAgICAgZmFjdG9yeSA9IChQcm9maWxlVmFsaWRhdG9yRmFjdG9yeSkgZmFjdG9yeUNsYXNzLm5ld0luc3RhbmNlKCk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICJDb3VsZCBub3QgaW5zdGFudGlhdGUgZmFjdG9yeSBjbGFzczogIiArIGZhY3RvcnlDbGFzc05hbWUgKyAiLiIsCi0gICAgICAgIGUpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBmYWN0b3J5Ci0gICAgcmV0dXJuIGZhY3Rvcnk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9VRERJVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9VRERJVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMTI5YmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvVURESVZhbGlkYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQW5hbHl6ZXJDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuVURESVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlQXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRBcnRpZmFjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydGVyOwotCi0vKioKLSAqIFRoZSBXU0RMIHZhbGlkYXRvciB3aWxsIHZlcmlmeSB0aGF0IHRoZSBXU0RMIGFuZCBhc3NvY2lhdGVkIFhNTCBzY2hlbWEgZGVmaW5pdGlvbnMKLSAqIGFyZSBpbiBjb25mb3JtYW5jZSB3aXRoIHRoZSBwcm9maWxlLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0KLSAqLwotcHVibGljIGludGVyZmFjZSBVRERJVmFsaWRhdG9yIGV4dGVuZHMgQmFzZVZhbGlkYXRvcgotewotICAvKiogRGlzY292ZXJ5IGFydGlmYWN0IHR5cGUgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9ESVNDT1ZFUlkgPSAiZGlzY292ZXJ5IjsKLQotICAvKiogQmluZGluZyB0ZW1wbGF0ZSBkaXNjb3ZlcnkgZW50cnkgdHlwZS4gKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9ESVNDT1ZFUllfQklORElOR1RFTVBMQVRFID0gImJpbmRpbmdUZW1wbGF0ZSI7Ci0KLSAgLyoqIHRNb2RlbCBkaXNjb3ZlcnkgZW50cnkgdHlwZS4gKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9ESVNDT1ZFUllfVE1PREVMID0gInRNb2RlbCI7Ci0KLSAgLyoqCi0gICAqIEluaXRpYWlsaXplIHZhbGlkYXRpb24gdGVzdCBwcm9jZWR1cmUuCi0gICAqIEBwYXJhbSBhbmFseXplckNvbnRleHQgdGhlIGFuYWx5emVyQ29udGV4dC4KLSAgICogQHBhcmFtIGFydGlmYWN0ICAgICAgICBhbiBwcm9maWxlIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcmVwb3J0QXJ0aWZhY3QgIHRoZSByZXBvcnQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSB1ZGRpUmVmZXJlbmNlICAgYSBVRERJIHJlZmVyZW5jZS4KLSAgICogQHBhcmFtIHJlcG9ydGVyICAgICAgICBhIFJlcG9ydGVyIG9iamVjdC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgVURESSB2YWxpZGF0b3IgY291bGQgbm90IGJlIGluaXRpYWxpemVkLgotICAgKiBAZGVwcmVjYXRlZCAtLSB1c2UgaW5pdChBbmFseXplckNvbnRleHQgYW5hbHl6ZXJDb250ZXh0LAotICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBQcm9maWxlQXNzZXJ0aW9ucyBhc3NlcnRpb25zLAotICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRBcnRpZmFjdCByZXBvcnRBcnRpZmFjdCwKLSAgICogICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcsCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydGVyIHJlcG9ydGVyKQotCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KAotICAgIEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQsCi0gICAgUHJvZmlsZUFydGlmYWN0IGFydGlmYWN0LAotICAgIFJlcG9ydEFydGlmYWN0IHJlcG9ydEFydGlmYWN0LAotICAgIFVERElSZWZlcmVuY2UgdWRkaVJlZmVyZW5jZSwKLSAgICBSZXBvcnRlciByZXBvcnRlcikKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgKiBWYWxpZGF0ZSB0aGUgVURESSBiYXNlZCBzZXJ2aWNlIGRlc2NyaXB0aW9uLgotICAgKiBAcmV0dXJuIElmIHRoZSBVRERJIGVudHJpZXMgYXJlIHZhbGlkLCB0aGVuIHRoZSB2YWx1ZSByZXR1cm5lZCAKLSAgICogICAgICAgICBpcyB0aGUgVVJMIGZvciB0aGUgV1NETCBkb2N1bWVudC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gV1NJRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQKLSAgICogICAgICAgICB3aGlsZSBwcm9jZXNzaW5nIHRoZSBVRERJZW50cmllcy4KLSAgICogQGRlcHJlY2F0ZWQgLS0gdXNlIHZhbGlkYXRlQXJ0aWZhY3QoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyB2YWxpZGF0ZSgpIHRocm93cyBXU0lFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9XU0RMVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9XU0RMVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ZDg4NjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvV1NETFZhbGlkYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQW5hbHl6ZXJDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBcnRpZmFjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydEFydGlmYWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwuV1NETERvY3VtZW50OwotCi0vKioKLSAqIFRoZSBXU0RMIHZhbGlkYXRvciB3aWxsIHZlcmlmeSB0aGF0IHRoZSBXU0RMIGFuZCBhc3NvY2lhdGVkIFhNTCBzY2hlbWEgZGVmaW5pdGlvbnMKLSAqIGFyZSBpbiBjb25mb3JtYW5jZSB3aXRoIHRoZSBwcm9maWxlLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0KLSAqLwotcHVibGljIGludGVyZmFjZSBXU0RMVmFsaWRhdG9yIGV4dGVuZHMgQmFzZVZhbGlkYXRvcgotewotICAvKiogRGVzY3JpcHRpb24gYXJ0aWZhY3QgdHlwZSAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0RFU0NSSVBUSU9OID0gImRlc2NyaXB0aW9uIjsKLQkgCi0gIC8qKiBEZWZpbml0aW9ucyBkZXNjcmlwdGlvbiBlbnRyeSB0eXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0RFU0NSSVBUSU9OX0RFRklOSVRJT05TID0gImRlZmluaXRpb25zIjsKLQotICAvKiogSW1wb3J0IGRlc2NyaXB0aW9uIGVudHJ5IHR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fSU1QT1JUID0gImltcG9ydCI7Ci0KLSAgLyoqIFR5cGVzIGRlc2NyaXB0aW9uIGVudHJ5IHR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fVFlQRVMgPSAidHlwZXMiOwotCi0gIC8qKiBNZXNzYWdlIGRlc2NyaXB0aW9uIGVudHJ5IHR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fTUVTU0FHRSA9ICJtZXNzYWdlIjsKLQotICAvKiogT3BlcmF0aW9uIGRlc2NyaXB0aW9uIGVudHJ5IHR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fT1BFUkFUSU9OID0gIm9wZXJhdGlvbiI7Ci0KLSAgLyoqIFBvcnRUeXBlIGRlc2NyaXB0aW9uIGVudHJ5IHR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fUE9SVFRZUEUgPSAicG9ydFR5cGUiOwotCi0gIC8qKiBCaW5kaW5nIGRlc2NyaXB0aW9uIGVudHJ5IHR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fQklORElORyA9ICJiaW5kaW5nIjsKLQotICAvKiogUG9ydCBkZXNjcmlwdGlvbiBlbnRyeSB0eXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0RFU0NSSVBUSU9OX1BPUlQgPSAicG9ydCI7Ci0KLSAgLyoqCi0gICAqIEluaXRpYWlsaXplIHZhbGlkYXRpb24gdGVzdCBwcm9jZWR1cmUuCi0gICAqIEBwYXJhbSBhbmFseXplckNvbnRleHQgdGhlIGFuYWx5emVyQ29udGV4dC4KLSAgICogQHBhcmFtIGFydGlmYWN0ICAgICAgICB0aGUgcHJvZmlsZSBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHJlcG9ydEFydGlmYWN0ICB0aGUgcmVwb3J0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gd3NkbFVSTCAgICAgICAgIHRoZSBXU0RMIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50ICAgIHRoZSBXU0RMIGRvY3VtZW50LgotICAgKiBAcGFyYW0gcmVwb3J0ZXIgICAgICAgIGEgUmVwb3J0ZXIgb2JqZWN0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBXU0RMIHZhbGlkYXRvciBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQuCi0gICAqIEBkZXByZWNhdGVkIC0tIHVzZSBpbml0KEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQsCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgIFByb2ZpbGVBc3NlcnRpb25zIGFzc2VydGlvbnMsCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydEFydGlmYWN0IHJlcG9ydEFydGlmYWN0LAotICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXplckNvbmZpZyBhbmFseXplckNvbmZpZywKLSAgICogICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KAotICAgIEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQsCi0gICAgUHJvZmlsZUFydGlmYWN0IGFydGlmYWN0LAotICAgIFJlcG9ydEFydGlmYWN0IHJlcG9ydEFydGlmYWN0LAotICAgIFN0cmluZyB3c2RsVVJMLAotICAgIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQsCi0gICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogVmFsaWRhdGUgdGhlIFdTREwgYmFzZWQgc2VydmljZSBkZXNjcmlwdGlvbi4KLSAgICogQHJldHVybiB0aGUgV1NETCBkb2N1bWVudC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgYW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZAotICAgKiAgICAgICAgIHdoaWxlIHZhbGlkYXRpbmcgaGUgV1NETCBiYXNlZCBzZXJ2aWNlIGRlc2NyaXB0aW9uLgotICAgKiBAZGVwcmVjYXRlZCAgLS0gdXNlIHZhbGlkYXRlQXJ0aWZhY3QoKQotICAgKi8KLSAgcHVibGljIFdTRExEb2N1bWVudCB2YWxpZGF0ZSgpIHRocm93cyBXU0lFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL0Fzc2VydGlvblByb2Nlc3MuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvQXNzZXJ0aW9uUHJvY2Vzcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2EzZDJjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvQXNzZXJ0aW9uUHJvY2Vzcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkZhaWx1cmVEZXRhaWw7Ci0KLQotLyoqCi0gKiBQcm9jZXNzIGFzc2VydGlvbi4KLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyByZXN1bHQ7Ci0gIHByb3RlY3RlZCBTdHJpbmcgZmFpbHVyZURldGFpbE1lc3NhZ2U7Ci0gIHByb3RlY3RlZCBGYWlsdXJlRGV0YWlsIGZhaWx1cmVEZXRhaWw7Ci0gIHByaXZhdGUgZmluYWwgQmFzZVZhbGlkYXRvckltcGwgYmFzZV92YWxpZGF0b3I7Ci0gIAotICAvKioKLSAgICogQHBhcmFtIEJhc2VWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUHJvY2VzcyhCYXNlVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgdGhpcy5iYXNlX3ZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGFzc2VydGlvbiByZXN1bHQuCi0gICAqLwotICB2b2lkIHJlc2V0KCkKLSAgewotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgIGZhaWx1cmVEZXRhaWxNZXNzYWdlID0gbnVsbDsKLSAgICBmYWlsdXJlRGV0YWlsID0gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZSBhc3NlcnRpb24uCi0gICAqLwotICBwdWJsaWMgYWJzdHJhY3QgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgdGFyZ2V0Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgKiBWZXJib3NlIG91dHB1dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGRlYnVnKFN0cmluZyBtZXNzYWdlKQotICB7Ci0gICAgaWYgKChiYXNlX3ZhbGlkYXRvciAhPSBudWxsKSAmJiBiYXNlX3ZhbGlkYXRvci52ZXJib3NlT3B0aW9uKQotICAgIHsKLSAgICAgIFN5c3RlbS5lcnIucHJpbnRsbihtZXNzYWdlKTsKLSAgICB9Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL0Fzc2VydGlvblByb2Nlc3NWaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL0Fzc2VydGlvblByb2Nlc3NWaXNpdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjY2NlZWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3I7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIFByb2Nlc3MgYXNzZXJ0aW9uIHVzaW5nIFdTRExWaXNpdG9yIGludGVyZmFjZS4KLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yCi0gIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotICBpbXBsZW1lbnRzIFdTRExWaXNpdG9yCi17Ci0gIC8qKgotICAgKiBAcGFyYW0gQmFzZVZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvcihCYXNlVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFBhcnQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICBwdWJsaWMgdm9pZCB2aXNpdChTZXJ2aWNlIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgcHVibGljIHZvaWQgdmlzaXQoVHlwZXMgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICBwdWJsaWMgdm9pZCB2aXNpdChPcGVyYXRpb24gb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICBwdWJsaWMgdm9pZCB2aXNpdChJbnB1dCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KE91dHB1dCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KEZhdWx0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgcHVibGljIHZvaWQgdmlzaXQoQmluZGluZyBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIEJpbmRpbmdPcGVyYXRpb24gb2JqLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgQmluZGluZ0lucHV0IG9iaiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIEJpbmRpbmdPdXRwdXQgb2JqLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgQmluZGluZ0ZhdWx0IG9iaiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KEltcG9ydCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KEVsZW1lbnQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICBwdWJsaWMgdm9pZCB2aXNpdChNZXNzYWdlIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgcHVibGljIHZvaWQgdmlzaXQoUG9ydCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KFBvcnRUeXBlIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgcHVibGljIHZvaWQgdmlzaXQoRGVmaW5pdGlvbiBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IG9iaiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBCaW5kaW5nIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgcHVibGljIHZvaWQgdmlzaXQoU09BUEJvZHkgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQSGVhZGVyIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUEhlYWRlckZhdWx0IG9iaiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBGYXVsdCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBPcGVyYXRpb24gb2JqLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL0Jhc2VNZXNzYWdlVmFsaWRhdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL0Jhc2VNZXNzYWdlVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNWNhNjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9CYXNlTWVzc2FnZVZhbGlkYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkxMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiwgUGFyYXNvZnQgYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAgICAgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiAgIFBhcmFzb2Z0IC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXI7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMudXRpbC5VUkk7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNNb2RlbDsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU1R5cGVEZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5BbmFseXplckNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkNhbmRpZGF0ZUluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLlNlcnZpY2VSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5BbmFseXplckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTG9nUmVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5SGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5Qcm9maWxlQXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5Mb2dWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLk1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbC5XU0RMVmFsaWRhdG9ySW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFydGlmYWN0UmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuRmFpbHVyZURldGFpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydEFydGlmYWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRW50cnlUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5VdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC5XU0RMRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwuV1NETFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLQotaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU3RyaW5nVG9rZW5pemVyOwotaW1wb3J0IGNvbS5pYm0ud3NkbC5Db25zdGFudHM7Ci1pbXBvcnQgY29tLmlibS53c2RsLnV0aWwueG1sLkRPTTJXcml0ZXI7Ci1pbXBvcnQgY29tLmlibS53c2RsLnV0aWwueG1sLkRPTVV0aWxzOwotCi0vKioKLSAqIFRoZSBXU0RMIHZhbGlkYXRvciB3aWxsIHZlcmlmeSB0aGF0IHRoZSBXU0RMIGFuZCBhc3NvY2lhdGVkIFhNTCBzY2hlbWEgZGVmaW5pdGlvbnMKLSAqIGFyZSBpbiBjb25mb3JtYW5jZSB3aXRoIHRoZSBwcm9maWxlLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqIEBhdXRob3IgSmltIENsdW5lCi0gKiBAYXV0aG9yIEdyYWhhbSBUdXJyZWxsIChndHVycmVsbEB1ay5pYm0uY29tKQotICogQGF1dGhvciBOZWlsIERlbGltYSAobmRkZWxpbWFAY2EuaWJtLmNvbSkgCi0gKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICBleHRlbmRzIEJhc2VWYWxpZGF0b3JJbXBsCi0gIGltcGxlbWVudHMgTG9nVmFsaWRhdG9yCi17Ci0gIC8qKgotICAqIFdTREwgZG9jdW1lbnQuCi0gICovCi0gIHByaXZhdGUgV1NETERvY3VtZW50IHdzZGxEb2N1bWVudDsKLQotICAvKioKLSAgICogTG9nIGVudHJ5LgotICAgKi8KLSAgcHJvdGVjdGVkIE1lc3NhZ2VFbnRyeSBsb2dFbnRyeTsKLSAgcHJvdGVjdGVkIExvZyBsb2c7Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gdGVzdGFibGU7Ci0gIHByaXZhdGUgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWc7Ci0KLSAgcHVibGljIHZvaWQgaW5pdChBbmFseXplckNvbnRleHQgYW5hbHl6ZXJDb250ZXh0LAotICAgICAgICAgIFByb2ZpbGVBc3NlcnRpb25zIGFzc2VydGlvbnMsCi0gICAgICAgICAgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QsCi0gICAgICAgICAgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcsCi0gICAgICAgICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAgICAgICAgdGhyb3dzIFdTSUV4Y2VwdGlvbiB7Ci0KLSAgICAgIHN1cGVyLmluaXQoYW5hbHl6ZXJDb250ZXh0LCBhc3NlcnRpb25zLmdldEFydGlmYWN0KGdldEFydGlmYWN0VHlwZSgpKSwKLSAgICAgICAgICAgICAgcmVwb3J0QXJ0aWZhY3QsIHJlcG9ydGVyKTsKLQotICAgICAgdGVzdGFibGUgPSBhbmFseXplckNvbmZpZy5nZXRMb2dMb2NhdGlvbigpICE9IG51bGw7Ci0gICAgICB0aGlzLmFuYWx5emVyQ29uZmlnID0gYW5hbHl6ZXJDb25maWc7Ci0gICAgICB0aGlzLndzZGxEb2N1bWVudCA9IChXU0RMRG9jdW1lbnQpIGFuYWx5emVyQ29udGV4dC5nZXRXc2RsRG9jdW1lbnQoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuTWVzc2FnZVZhbGlkYXRvciNpbml0KG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5BbmFseXplckNvbnRleHQsIG9yZy53c2kudGVzdC5wcm9maWxlLlByb2ZpbGVBcnRpZmFjdCwgb3JnLndzaS50ZXN0LnJlcG9ydC5SZXBvcnRBcnRpZmFjdCwgb3JnLndzaS53c2RsLldTRExEb2N1bWVudCwgb3JnLndzaS50ZXN0LnJlcG9ydC5SZXBvcnRlcikKLSAgICovCi0gIHB1YmxpYyB2b2lkIGluaXQoCi0gICAgQW5hbHl6ZXJDb250ZXh0IGFuYWx5emVyQ29udGV4dCwKLSAgICBQcm9maWxlQXJ0aWZhY3QgcHJvZmlsZUFydGlmYWN0LAotICAgIFJlcG9ydEFydGlmYWN0IHJlcG9ydEFydGlmYWN0LAotICAgIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQsCi0gICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQmFzZVZhbGlkYXRvckltcGwKLSAgICBzdXBlci5pbml0KGFuYWx5emVyQ29udGV4dCwgcHJvZmlsZUFydGlmYWN0LCByZXBvcnRBcnRpZmFjdCwgcmVwb3J0ZXIpOwotCi0gICAgdGhpcy5hbmFseXplckNvbmZpZyA9IFV0aWxzLmdldEFuYWx5emVyQ29uZmlnKHJlcG9ydGVyKTsKLSAgICB0ZXN0YWJsZSA9ICgoYW5hbHl6ZXJDb25maWcgIT0gbnVsbCkgJiYgKGFuYWx5emVyQ29uZmlnLmdldExvZ0xvY2F0aW9uKCkgIT0gbnVsbCkpOwkKLQotICAgIC8vIFNhdmUgaW5wdXQgcmVmZXJlbmNlcwotICAgIHRoaXMud3NkbERvY3VtZW50ID0gd3NkbERvY3VtZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgd3NkbERvY3VtZW50Ci0gICAqIEByZXR1cm4gd3NkbERvY3VtZW50Ci0gICAqLwotICBwdWJsaWMgV1NETERvY3VtZW50IGdldFdTRExEb2N1bWVudCgpCi0gIHsKLSAgICByZXR1cm4gd3NkbERvY3VtZW50OwotICB9Ci0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuTWVzc2FnZVZhbGlkYXRvciN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGUoRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy9FbnRyeSBlbnRyeSA9IG51bGw7Ci0KLSAgICAvLyBTYXZlIGxvZyBlbnRyeSB0byBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG1ldGhvZHMKLSAgICB0aGlzLmxvZ0VudHJ5ID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpOwotCi0gICAgLy8gR2V0IHJlZmVyZW5jZSB0byB0aGUgYW5hbHl6ZXIgY29uZmlnIG9iamVjdAotICAgIEFuYWx5emVyQ29uZmlnIGFuYWx5emVyQ29uZmlnID0KLSAgICAgIHJlcG9ydGVyLmdldFJlcG9ydCgpLmdldFJlcG9ydENvbnRleHQoKS5nZXRBbmFseXplcigpLmdldEFuYWx5emVyQ29uZmlnKCk7Ci0KLSAgICAvKiBJZiBTZXJ2aWNlIERlc2NyaXB0aW9uIChXU0RML1VEREkpIE5PVCBzdXBwbGllZCBpbiBhbmFseXplciBjb25maWcgT1IKLSAgICAgKiBTZXJ2aWNlIERlc2NyaXB0aW9uIElTIHN1cHBsaWVkIGFuZCB0aGUgY3VycmVudCBtZXNzYWdlIGNvcnJlbGF0ZXMgdG8gaXQuLi4KLSAgICAgKi8KLSAgICBpZiAoKCFhbmFseXplckNvbmZpZy5pc1dTRExSZWZlcmVuY2VTZXQoKSkKLSAgICAgIHx8IG1lc3NhZ2VDb3JyZWxhdGVzVG9TZXJ2aWNlKAotICAgICAgICBlbnRyeUNvbnRleHQsCi0gICAgICAgIGFuYWx5emVyQ29uZmlnLmdldENvcnJlbGF0aW9uVHlwZSgpKSkKLSAgICB7Ci0gICAgICAvLyBub3cgaW5uZXIgY2xhc3NlcyBtb3ZlZCBvdXQgZnJvbSB0aGUgdmFsaWRhdG9yCi0gICAgICAvL1N0cmluZyBjbGFzc1ByZWZpeCA9IHRoaXMuZ2V0Q2xhc3MoKS5nZXROYW1lKCkgKyAiJCI7Ci0gICAgICBTdHJpbmcgY2xhc3NQcmVmaXggPSB0aGlzLmdldENsYXNzKCkuZ2V0UGFja2FnZSgpLmdldE5hbWUoKSsiLiI7Ci0KLSAgICAgIC8vIFByb2Nlc3MgYXNzZXJ0aW9ucyBmb3IgdGhpcyBhcnRpZmFjdCBhZ2FpbnN0IHRoZSB0YXJnZXQgY29udGV4dAotICAgICAgcHJvY2Vzc0Fzc2VydGlvbnMoY2xhc3NQcmVmaXgsIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrIHdoZXRoZXIgdGhlIG1lc3NhZ2UgY29ycmVsYXRlcyB0byB0aGUgc2VydmljZSB1bmRlciB0ZXN0LgotICAgKiBVc2UgdGhlIHJlcXVlc3QgcGFydCBvZiB0aGUgcmVxdWVzdC1yZXNwb25zZSBwYWlyLCBmcm9tIHdoaWNoIHRoZSBjb3JyZWxhdGlvbiBvZiB0aGUgcmVzcG9uc2UgaXMgaW1wbGllZC4KLSAgICogRW50aXRpZXMgZnJvbSB0aGUgU2VydmljZSB1bmRlciB0ZXN0IGFyZSBkZXRlcm1pbmVkIG9uY2UgZm9yIGFsbC4KLSAgICogQHBhcmFtIGVudHJ5Q29udGV4dCAgICBhbiBlbnRyeSBjb250ZXh0LgotICAgKiBAcGFyYW0gY29ycmVsYXRpb25UeXBlIGEgY29ycmVsYXRpb24gdHlwZS4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZSBtZXNzYWdlIGNvcnJlbGF0ZXMgdG8gdGhlIHNlcnZpY2UgdW5kZXIgdGVzdC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgY29ycmVsYXRpb24gdHlwZSBpcyBub3QgYXBwcm9wcmlhdGUuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gbWVzc2FnZUNvcnJlbGF0ZXNUb1NlcnZpY2UoCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCwKLSAgICBTdHJpbmcgY29ycmVsYXRpb25UeXBlKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgVVJJW10gZW5kcG9pbnRzID0gbnVsbDsKLSAgICBib29sZWFuIGNvcnJlbGF0aW9uID0gZmFsc2U7Ci0KLSAgICAvKiBURU1QOiBHZXQgaXQgZnJvbSBhbmFseXplciBjb25maWcgcGFzc2VkIGluIG9uIGluaXQgbWV0aG9kCi0gICAgQ2FuZGlkYXRlSW5mbyBjYW5kaWRhdGUgPSBlbnRyeUNvbnRleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRBbmFseXplckNvbnRleHQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldENhbmRpZGF0ZUluZm8oKTsKLSAgICAqLwotICAgIENhbmRpZGF0ZUluZm8gY2FuZGlkYXRlID0gYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKTsKLQotICAgIC8vIFNlcnZpY2UgcmVmZXJlbmNlIAotICAgIFNlcnZpY2VSZWZlcmVuY2Ugc2VydmljZVJlZmVyZW5jZSA9IGFuYWx5emVyQ29udGV4dC5nZXRTZXJ2aWNlUmVmZXJlbmNlKCk7Ci0KLSAgICAvLyBHZXQgdGhlIGRlZmluaXRpb24gZWxlbWVudAotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGNhbmRpZGF0ZS5nZXRXc2RsRG9jdW1lbnQoKS5nZXREZWZpbml0aW9ucygpOwotCi0gICAgQmluZGluZyBiaW5kaW5nID0gbnVsbDsKLSAgICBpZiAoc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmlzUG9ydCgpKQotICAgIHsKLSAgICAgIC8vIEdldCBzZXJ2aWNlCi0gICAgICBTZXJ2aWNlIHNlcnZpY2UgPQotICAgICAgICBkZWZpbml0aW9uLmdldFNlcnZpY2UoCi0gICAgICAgICAgc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmdldFBhcmVudEVsZW1lbnRRTmFtZSgpKTsKLQotICAgICAgLy8gR2V0IHBvcnQKLSAgICAgIFBvcnQgcG9ydCA9IHNlcnZpY2UuZ2V0UG9ydChzZXJ2aWNlUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkuZ2V0TmFtZSgpKTsKLQotICAgICAgLy8gR2V0IGJpbmRpbmcKLSAgICAgIGJpbmRpbmcgPSBwb3J0LmdldEJpbmRpbmcoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmlzQmluZGluZygpKQotICAgIHsKLSAgICAgIC8vIEdldCBiaW5kaW5nCi0gICAgICBiaW5kaW5nID0KLSAgICAgICAgZGVmaW5pdGlvbi5nZXRCaW5kaW5nKHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKS5nZXRRTmFtZSgpKTsKLSAgICB9Ci0KLSAgICBpZiAoYmluZGluZyA9PSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoKGVuZHBvaW50cyA9IGhvc3RBbmRQb3J0Q29ycmVsYXRpb24oZW50cnlDb250ZXh0KSkgIT0gbnVsbAotICAgICAgJiYgdXJsUGF0aENvcnJlbGF0aW9uKGVudHJ5Q29udGV4dCwgZW5kcG9pbnRzKSkKLSAgICB7Ci0KLSAgICAgIC8qIElmIGNvcnJlbGF0aW9uIHR5cGUgaXMgImVuZHBvaW50IiwgdGhpcyBpcyBhbGwgdGhlIGNvcnJlbGF0aW9uIHRoYXQgY2FuIGJlIGRvbmUuCi0gICAgICAgKiAoTm90ZSAtIHRoaXMgaXMgaW5jb21wbGV0ZSBjb3JyZWxhdGlvbiBzaW5jZSA+MSBzZXJ2aWNlIGNvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW5kcG9pbnQuCi0gICAgICAgKiAgVGhlcmVmb3JlICwgaWYgbWVzc2FnZXMgZm9yIGRpZmZlcmVudCBzZXJ2aWNlcyBvbiB0aGUgc2FtZSBlbmRwb2ludCBhcHBlYXIgaW4gdGhlIGxvZyBmaWxlCi0gICAgICAgKiAgYW5kIGNvcnJlbGF0aW9uIHR5cGUgaXMgImVuZHBvaW50IiwgYWxsIHRob3NlIG1lc3NhZ2VzIHdpbGwgYmUgYW5hbHl6ZWQpLgotICAgICAgICovCi0gICAgICBpZiAoY29ycmVsYXRpb25UeXBlCi0gICAgICAgIC5lcXVhbHMoV1NJQ29uc3RhbnRzLkFUVFJWQUxfQ09SUkVMQVRJT05fVFlQRV9FTkRQT0lOVCkpCi0gICAgICB7Ci0gICAgICAgIGNvcnJlbGF0aW9uID0gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gYWx3YXlzIGFsbG93IEdFVCByZXF1ZXN0cyByaWdodCB0aHJvdWdoIGlmIHRoZXkndmUgcGFzc2VkIEVuZHBvaW50IENvcnJlbGF0aW9uCi0gICAgICAgIFN0cmluZyByZXF1ZXN0VHlwZSA9IGdldEh0dHBSZXF1ZXN0VHlwZShlbnRyeUNvbnRleHQpOwotICAgICAgICBpZiAoKHJlcXVlc3RUeXBlICE9IG51bGwpICYmIHJlcXVlc3RUeXBlLmVxdWFsc0lnbm9yZUNhc2UoIkdFVCIpKQotICAgICAgICB7Ci0gICAgICAgICAgY29ycmVsYXRpb24gPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIFRoZSBjb3JyZWxhdGlvblR5cGUgaXMgbm90ICJlbmRwb2ludCIgc28gY29udGludWUgb24gdG8gcHJvY2Vzc2luZyBmb3IgYXQgbGVhc3QgCi0gICAgICAgICAgLy8gIm5hbWVzcGFjZSIgY29ycmVsYXRpb24uLi4KLQotICAgICAgICAgIC8vIGdldCB0aGUgb3BlcmF0aW9uIHNpZ25hdHVyZSAoaW5wdXQgJiBvdXRwdXQpIGZyb20gcmVxdWVzdCAmIHJlc3BvbnNlIG1lc3NhZ2VzLi4uCSAgIAotICAgICAgICAgIC8vIGFuZCBkbyBhIHF1aWNrIERPTSBwYXJzZSAKLSAgICAgICAgICBEb2N1bWVudCByZXF1ZXN0TWVzc2FnZSA9IGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0RG9jdW1lbnQoKTsKLQotICAgICAgICAgIC8vIENoZWNrIGlmIG5hbWVzcGFjZSBpcyBmb3VuZCBpbiByZXF1ZXN0IG1lc3NhZ2Ugb25seQotICAgICAgICAgIGlmIChuYW1lc3BhY2VDb3JyZWxhdGlvbihiaW5kaW5nLCByZXF1ZXN0TWVzc2FnZSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gSWYgbmFtZXNwYWNlIGZvdW5kIGFuZCB0aGUgY29ycmVsYXRpb24gdHlwZSBpcyBuYW1lc3BhY2UsIHRoZW4gcHJvY2VzcyBtZXNzYWdlcwotICAgICAgICAgICAgaWYgKGNvcnJlbGF0aW9uVHlwZQotICAgICAgICAgICAgICAuZXF1YWxzKFdTSUNvbnN0YW50cy5BVFRSVkFMX0NPUlJFTEFUSU9OX1RZUEVfTkFNRVNQQUNFKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29ycmVsYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiBvcGVyYXRpb24gaXMgZm91bmQgYW5kIGNvcnJlbGF0aW9uIHR5cGUgaXMgb3BlcmF0aW9uLCB0aGVuIHByb2Nlc3MgbWVzc2FnZXMKLSAgICAgICAgICAgIGVsc2UgaWYgKAotICAgICAgICAgICAgICAob3BlcmF0aW9uQ29ycmVsYXRpb24oYmluZGluZywgcmVxdWVzdE1lc3NhZ2UpKQotICAgICAgICAgICAgICAgICYmIChjb3JyZWxhdGlvblR5cGUKLSAgICAgICAgICAgICAgICAgIC5lcXVhbHMoV1NJQ29uc3RhbnRzLkFUVFJWQUxfQ09SUkVMQVRJT05fVFlQRV9PUEVSQVRJT04pKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29ycmVsYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaWYgY29uZmlnIHNjaGVtYSB3YXMgZm9sbG93ZWQgY29ycmVjdGx5Ci0gICAgICAgICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgIkJhZCBjb3JyZWxhdGlvbiB0eXBlIGZvdW5kIGluIGNvbmZpZzogIiArIGNvcnJlbGF0aW9uVHlwZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvcnJlbGF0aW9uOwotICB9Ci0KLSAgLyoqIAotICAgKiAgQ29ycmVsYXRpb24gQ2hlY2sgMTogU2VydmljZSBEZXNjcmlwdGlvbiBlbmRwb2ludCB2cyBIVFRQIEhlYWRlciAodGVzdCAxKQotICAgKiAgQ2hlY2sgaWYgcmVjZWl2ZXJIb3N0QW5kUG9ydCBmcm9tIHJlcXVlc3QgbWVzc2FnZSBsb2cgbWF0Y2hlcyBob3N0ICYgcG9ydCBmcm9tIFdTREwgU09BUCBiaW5kaW5nIGZvcgotICAgKiAgdGhlIFNlcnZpY2UgdW5kZXIgdGVzdC4KLSAgICogIElmIGl0IGRvZXMgbm90LCBzdG9wIHByb2Nlc3NpbmcgdGhpcyBtZXNzYWdlIHBhaXIuCi0gICAqIEBwYXJhbSBlbnRyeUNvbnRleHQgYW4gZW50cnkgY29udGV4dC4KLSAgICogQHJldHVybiBpZiByZWNlaXZlckhvc3RBbmRQb3J0IGZyb20gcmVxdWVzdCBtZXNzYWdlIGxvZyBtYXRjaGVzIAotICAgKiAgICAgICAgIGhvc3QgJiBwb3J0IGZyb20gV1NETCBTT0FQIGJpbmRpbmcgZm9yIHRoZSBTZXJ2aWNlLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtIG9jY3VycyBkdXJpbmcgY29ycmVsYXRpb24gY2hlY2suCi0gICAqLwotICBwcml2YXRlIFVSSVtdIGhvc3RBbmRQb3J0Q29ycmVsYXRpb24oRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIC8vIGdldCA8cmVjZWl2ZXJIb3N0QW5kUG9ydD4gZnJvbSByZXF1ZXN0IG1lc3NhZ2UKLSAgICBTdHJpbmcgaHR0cEhvc3RBbmRQb3J0ID0gZW50cnlDb250ZXh0LmdldFJlcXVlc3QoKS5nZXRSZWNlaXZlckhvc3RBbmRQb3J0KCk7Ci0gICAgLy8gU2VhcmNoIGVuZHBvaW50IGxpc3QgZm9yIGEgbWF0Y2ggd2l0aCA8cmVjZWl2ZXJIb3N0QW5kUG9ydD4KLQotICAgIC8qIFRFTVA6IEdldCBpdCBmcm9tIGFuYWx5emVyIGNvbmZpZyBwYXNzZWQgaW4gb24gaW5pdCBtZXRob2QKLSAgICByZXR1cm4gZW50cnlDb250ZXh0LmdldEFuYWx5emVyQ29udGV4dCgpCi0gICAgICAgICAgICAgICAgICAgICAgIC5nZXRDYW5kaWRhdGVJbmZvKCkKLSAgICAgICAgICAgICAgICAgICAgICAgLmdldEVuZFBvaW50cyhodHRwSG9zdEFuZFBvcnQpOwotICAgICovCi0gICAgcmV0dXJuIGFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0RW5kUG9pbnRzKGh0dHBIb3N0QW5kUG9ydCk7Ci0gIH0KLQotICAvKiogCi0gICAqIENvcnJlbGF0aW9uIENoZWNrIDI6IFNlcnZpY2UgRGVzY3JpcHRpb24gZW5kcG9pbnQgdnMgSFRUUCBIZWFkZXIgKHRlc3QgMikKLSAgICogCi0gICAqIFVzZSBhbmFseXplciBjb25maWcgaG9zdCAmIHBvcnQsIHBsdXMgVVJMIHBhdGggKGZyb20gcmVxdWVzdCBtZXNzYWdlIGhlYWRlciBIVFRQIFBPU1QpCi0gICAqIHRvIGxvb2sgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGVuZHBvaW50IGluIHRoZSBTZXJ2aWNlIERlZmluaXRpb24uCi0gICAqIElmIGl0IGRvZXMgbm90LCBzdG9wIHByb2Nlc3NpbmcgdGhpcyBtZXNzYWdlIHBhaXIuCi0gICAqIEBwYXJhbSBlbnRyeUNvbnRleHQgYW4gZW50cnkgY29udGV4dC4KLSAgICogQHBhcmFtIGVuZHBvaW50cyBhbiBhcnJheSBvZiBlbmRwb2ludHMuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBjb3JyZXNwb25kaW5nIGVuZHBvaW50cyBhcmUgZm91bmQgaW4gdGhlIFNlcnZpY2UgRGVmaW5pdGlvbi4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbSBvY2N1cnMgZHVyaW5nIGNvcnJlbGF0aW9uIGNoZWNrLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIHVybFBhdGhDb3JyZWxhdGlvbigKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0LAotICAgIFVSSVtdIGVuZHBvaW50cykKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIC8vIGNvbXBhcmVzOiBwcm90b2NvbCAobXVzdCBiZSBodHRwIGZvciBQT1NUKSwgaG9zdCwgcG9ydCBhbmQgcGF0aC4KLQotICAgIC8vIGdldCBQT1NUIFVSSSBwYXRoIGZyb20gbWVzc2FnZSB1c2luZyBUb2tlbml6ZXIJCi0gICAgVmVjdG9yIHJlcXVlc3RMaW5lID0KLSAgICAgIGdldEh0dHBSZXF1ZXN0KGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0SFRUUEhlYWRlcnMoKSk7Ci0gICAgaWYgKHJlcXVlc3RMaW5lID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhbiB1bmV4cGVjdGVkIEhUVFAgcmVxdWVzdCB0eXBlICEKLSAgICB9Ci0KLSAgICBTdHJpbmcgcmVxdWVzdFBhdGggPSAoU3RyaW5nKSByZXF1ZXN0TGluZS5nZXQoMSk7Ci0gICAgLy8gUGF0aCBpbW1lZGlhdGVseSBmb2xsb3dzIFBPU1QKLQotICAgIC8vIGNvbXBhcmUgcGF0aCB3aXRoIHRob3NlIGluIHRoZSBwcmV2aW91cyBnZW5lcmF0ZWQgVVJJIGxpc3QJCi0gICAgVmVjdG9yIGZpbHRlcmVkRW5kcG9pbnRzID0gbmV3IFZlY3RvcigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZW5kcG9pbnRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChlbmRwb2ludHNbaV0udG9TdHJpbmcoKS5lbmRzV2l0aChyZXF1ZXN0UGF0aCkpCi0gICAgICB7Ci0gICAgICAgIGZpbHRlcmVkRW5kcG9pbnRzLmFkZChlbmRwb2ludHNbaV0pOwotICAgICAgfQotICAgIH0KLQotICAgIGlmIChmaWx0ZXJlZEVuZHBvaW50cy5zaXplKCkgPT0gMCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIHRoaXMgVVJJIHNob3VsZCBiZSB1bmlxdWUgaW4gdGhlIFdTREwgLSB0aGVyZSBzaG91bGQgYmUgYXQgbW9zdCBvbmUgbWF0Y2gKLSAgICAvLyBidXQgaWYgd2UgaGF2ZSBhdCBsZWFzdCBvbmUsIHRoYXQncyBzdWZmaWNpZW50IHRvIGFjY2VwdCB0aGUgbWVzc2FnZQotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKiogCi0gICAqIENvcnJlbGF0aW9uIENoZWNrIDM6IFNlcnZpY2UgRGVzY3JpcHRpb24gbmFtZXNwYWNlLgotICAgKiAKLSAgICogRGV0ZXJtaW5lIGlmIHRoZSBTZXJ2aWNlIERlc2NyaXB0aW9uIGRlY2xhcmVzIHRoZSBuYW1lc3BhY2UgdGhhdCBhcHBlYXJzIGluIHRoZSAocmVxdWVzdD8pIG1lc3NhZ2Ugc29hcCBib2R5LgotICAgKiBMb2NhdGlvbiBvZiByZWxldmVudCBuYW1lc3BhY2UgOgotICAgKiBPcGVyYXRpb24gdHlwZSAgICAgICAgICAgICAgICAgICAgCS0gTWVzc2FnZSBOYW1lc3BhY2U6IChjb21wYXJlIHdpdGgpICBTZXJ2aWNlIERlZmluaXRpb24gTmFtZXNwYWNlOgotICAgKiAoZnJvbSBtZXNzYWdlPyBlbmRwb2ludD8gd2hlcmU/KQotICAgKiBycGMtbGl0ZXJhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtzb2FwOkJvZHkmZ3Q7IGNoaWxkIG5hbWVzcGFjZS4gICAgICAgICZsdDtzb2FwYmluZDpib2R5Jmd0OyBuYW1lc3BhY2UuCi0gICAqIGRvYy1saXRlcmFsCQkJICAgICAgICAgICAgICAgICAmbHQ7c29hcDpCb2R5Jmd0OyBjaGlsZCBuYW1lc3BhY2UuICAgICAgIHRhcmdldE5hbWVTcGFjZSBvZiBzY2hlbWEgdGhhdAotICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lcyAgJmx0O3NvYXA6Ym9keSZndDsgY2hpbGQuCi0gICAqIElmIGl0IGRvZXNuJ3QgbWF0Y2gsIHN0b3AgcHJvY2Vzc2luZyB0aGlzIG1lc3NhZ2UgcGFpci4KLSAgICogQHBhcmFtIGJpbmRpbmcgYSBiaW5kaW5nLgotICAgKiBAcGFyYW0gcmVxdWVzdCBhIHJlcXVlc3QuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBkZXNjcmlwdGlvbiBkZWNsYXJlZCBpbiB0aGUgZGVzY3JpcHRpb24gYXJlIHRoZSAKLSAgICogICAgICAgICBzYW1lIGFzIHRob3NlIHRoYXQgYXBwZWFyIGluIHRoZSBtZXNzYWdlIHNvYXAgYm9keS4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbSBvY2N1cnMgZHVyaW5nIGNvcnJlbGF0aW9uY2hlY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBuYW1lc3BhY2VDb3JyZWxhdGlvbihCaW5kaW5nIGJpbmRpbmcsIERvY3VtZW50IHJlcXVlc3QpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgYm9vbGVhbiBuYW1lc3BhY2VGb3VuZCA9IGZhbHNlOwotICAgIFN0cmluZyBiaW5kaW5nU3R5bGUgPSBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DOwotCi0gICAgLy8gR2V0IG9wZXJhdGlvbiBuYW1lc3BhY2UgZnJvbSB0aGUgcmVxdWVzdCBzb2FwIG1lc3NhZ2UKLSAgICBTdHJpbmcgc29hcE9wTlMgPSBnZXRTb2FwQm9keUNoaWxkKHJlcXVlc3QpLmdldE5hbWVzcGFjZVVSSSgpOwotCi0gICAgLy8gR2V0IHNvYXBiaW5kOmJpbmRpbmcKLSAgICBTT0FQQmluZGluZyBzb2FwQmluZGluZyA9IG51bGw7Ci0gICAgaWYgKChzb2FwQmluZGluZyA9IFdTRExVdGlscy5nZXRTb2FwQmluZGluZyhiaW5kaW5nKSkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBiaW5kaW5nU3R5bGUgPSBzb2FwQmluZGluZy5nZXRTdHlsZSgpOwotICAgIH0KLQotICAgIC8vIEdvIHRocm91Z2ggZWFjaCBvcGVyYXRpb24gaW4gdGhlIGJpbmRpbmcgYW5kIGNoZWNrIGZvciBuYW1lc3BhY2UgbWF0Y2gKLSAgICBJdGVyYXRvciBvcGVyYXRpb25zID0gYmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKG9wZXJhdGlvbnMuaGFzTmV4dCgpICYmICEobmFtZXNwYWNlRm91bmQpKQotICAgIHsKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKSBvcGVyYXRpb25zLm5leHQoKTsKLQotICAgICAgLy8gSWYgcnBjLWxpdGVyYWwsIHRoZW4gbG9vayBhdCBuYW1lc3BhY2UgYXR0cmlidXRlIG9uIHNvYXBiaW5kOmJvZHkKLSAgICAgIGlmIChXU0RMVXRpbHMuaXNScGNMaXRlcmFsKGJpbmRpbmdTdHlsZSwgYmluZGluZ09wZXJhdGlvbikpCi0gICAgICB7Ci0gICAgICAgIC8vIEdldCBzb2FwYmluZDpib2R5IGVsZW1lbnQgCi0gICAgICAgIFNPQVBCb2R5IHNvYXBCb2R5ID0gV1NETFV0aWxzLmdldElucHV0U29hcEJvZHkoYmluZGluZ09wZXJhdGlvbik7Ci0KLSAgICAgICAgaWYgKChzb2FwQm9keS5nZXROYW1lc3BhY2VVUkkoKSAhPSBudWxsKQotICAgICAgICAgICYmIChzb2FwQm9keS5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoc29hcE9wTlMpKSkKLSAgICAgICAgewotICAgICAgICAgIG5hbWVzcGFjZUZvdW5kID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyBJZiBkb2MtbGl0ZXJhbCwgdGhlbiBjaGVjayBuYW1lc3BhY2UKLSAgICAgIGVsc2UgaWYgKFdTRExVdGlscy5pc0RvY0xpdGVyYWwoYmluZGluZ1N0eWxlLCBiaW5kaW5nT3BlcmF0aW9uKSkKLSAgICAgIHsKLSAgICAgICAgaW50IHBhcnRDb3VudDsKLSAgICAgICAgSXRlcmF0b3IgcGFydHNJdGVyYXRvciA9IG51bGw7Ci0KLSAgICAgICAgLy8gR2V0IGZpcnN0IHBhcnQgbmFtZSBmcm9tIHNvYXBiaW5kOmJvZHkgZWxlbWVudCBwYXJ0cyBhdHRyaWJ1dGUKLSAgICAgICAgU3RyaW5nIHBhcnROYW1lID0gZ2V0Rmlyc3RQYXJ0TmFtZShiaW5kaW5nT3BlcmF0aW9uKTsKLQotICAgICAgICAvLyBHZXQgdGhlIGxpc3Qgb2YgcGFydHMgZnJvbSB0aGUgbWVzc2FnZSAgICAgICAgICAgCi0gICAgICAgIE1hcCBwYXJ0c01hcCA9IG51bGw7Ci0gICAgICAgIGlmICgocGFydHNNYXAgPQotICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkuZ2V0SW5wdXQoKS5nZXRNZXNzYWdlKCkuZ2V0UGFydHMoKSkKLSAgICAgICAgICAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgcGFydHNJdGVyYXRvciA9IHBhcnRzTWFwLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0KLSAgICAgICAgICAvLyBJZiB0aGUgcGFydCBuYW1lIHdhc24ndCBzcGVjaWZpZWQgb24gdGhlIHNvYXBiaW5kOmJvZHkgZWxlbWVudCwgdGhlbiBwcm9jZXNzIGp1c3QgdGhlIGZpcnN0IG9uZQotICAgICAgICAgIGlmIChwYXJ0TmFtZSA9PSBudWxsKQotICAgICAgICAgICAgcGFydENvdW50ID0gMTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYXJ0Q291bnQgPSBwYXJ0c01hcC5zaXplKCk7Ci0KLSAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcnRDb3VudCAmJiAhbmFtZXNwYWNlRm91bmQ7IGkrKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBHZXQgbmV4dCBwYXJ0Ci0gICAgICAgICAgICBQYXJ0IHBhcnQgPSAoUGFydCkgcGFydHNJdGVyYXRvci5uZXh0KCk7Ci0KLSAgICAgICAgICAgIC8vIElmIHBhcnQgbmFtZSBtYXRjaGVzIG9yIHRoZXJlIGlzIG5vIHBhcnQgbmFtZSwgdGhlbiBjaGVjayBuYW1lc3BhY2UKLSAgICAgICAgICAgIGlmICgocGFydE5hbWUgPT0gbnVsbCkKLSAgICAgICAgICAgICAgfHwgKChwYXJ0TmFtZSAhPSBudWxsKSAmJiAocGFydC5nZXROYW1lKCkuZXF1YWxzKHBhcnROYW1lKSkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAoKHBhcnQuZ2V0RWxlbWVudE5hbWUoKS5nZXROYW1lc3BhY2VVUkkoKSAhPSBudWxsKQotICAgICAgICAgICAgICAgICYmIChwYXJ0LmdldEVsZW1lbnROYW1lKCkuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKHNvYXBPcE5TKSkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbmFtZXNwYWNlRm91bmQ7Ci0gIH0KLQotICAvKiogCi0gICogQ29ycmVsYXRpb24gQ2hlY2sgNCA6IFNlcnZpY2UgRGVzY3JpcHRpb24gIm9wZXJhdGlvbiIKLSAgKgotICAqIENoZWNrIGlmIHRoZSBtZXNzYWdlIGNvbnRlbnQgbWF0Y2hlcyBhbnkgb2YgdGhlIGNhbmRpZGF0ZSBvcGVyYXRpb24gZGVmaW5pdGlvbnMgCi0gICogZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGluIHRoZSBTZXJ2aWNlIERlc2NyaXB0aW9uLgotICAqICAKLSAgKiBGb3IgYm90aCByZXF1ZXN0IGFuZCByZXNwb25zZSwgbG9vayBmb3IgdGhlIHNvYXAgYm9keSBjaGlsZCBlbGVtZW50IG5hbWUKLSAgKiBpbiB0aGUgbGlzdCBvZiBjYW5kaWRhdGUgb3BlcmF0aW9uIG5hbWVzLgotICAqIEBwYXJhbSBiaW5kaW5nICAgICAgICBhIGJpbmRpbmcuCi0gICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIGEgcmVxdWVzdCBtZXNzYWdlLgotICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbWVzc2FnZSBjb250ZW50IG1hdGNoZXMgYW55IG9mIHRoZSBjYW5kaWRhdGUgCi0gICogICAgICAgICBvcGVyYXRpb24gZGVmaW5pdGlvbnMgZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGluIHRoZSAKLSAgKiAgICAgICAgIFNlcnZpY2UgRGVzY3JpcHRpb24uCi0gICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbSBvY2N1cnMgZHVyaW5nIGNvcnJlbGF0aW9uY2hlY2suCi0gICovCi0gIHByaXZhdGUgYm9vbGVhbiBvcGVyYXRpb25Db3JyZWxhdGlvbigKLSAgICBCaW5kaW5nIGJpbmRpbmcsCi0gICAgRG9jdW1lbnQgcmVxdWVzdE1lc3NhZ2UpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgYm9vbGVhbiBvcGVyYXRpb25Gb3VuZCA9IGZhbHNlOwotCi0gICAgU3RyaW5nIGJpbmRpbmdTdHlsZSA9IFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9ET0M7Ci0KLSAgICAvLyBHZXQgc29hcGJpbmQ6YmluZGluZwotICAgIFNPQVBCaW5kaW5nIHNvYXBCaW5kaW5nID0gbnVsbDsKLSAgICBpZiAoKHNvYXBCaW5kaW5nID0gV1NETFV0aWxzLmdldFNvYXBCaW5kaW5nKGJpbmRpbmcpKSAhPSBudWxsKQotICAgIHsKLSAgICAgIGJpbmRpbmdTdHlsZSA9IHNvYXBCaW5kaW5nLmdldFN0eWxlKCk7Ci0gICAgfQotCi0gICAgLy8gR2V0IHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IGZyb20gdGhlIHNvYXAgYm9keQotICAgIEVsZW1lbnQgc29hcEJvZHlDaGlsZCA9IGdldFNvYXBCb2R5Q2hpbGQocmVxdWVzdE1lc3NhZ2UpOwotCi0gICAgLy8gSWYgdGhlcmUgaXMgYSBjaGlsZCBlbGVtZW50LCB0aGVuIGNoZWNrIGl0Ci0gICAgaWYgKHNvYXBCb2R5Q2hpbGQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBHZXQgb3BlcmF0aW9uIG5hbWUgZnJvbSB0aGUgc29hcDpib2R5Ci0gICAgICBTdHJpbmcgb3BlcmF0aW9uTmFtZSA9IHNvYXBCb2R5Q2hpbGQuZ2V0TG9jYWxOYW1lKCk7Ci0KLSAgICAgIC8vIEdldCBvcGVyYXRpb24gUU5hbWUKLSAgICAgIFFOYW1lIG9wZXJhdGlvblFOYW1lID0KLSAgICAgICAgbmV3IFFOYW1lKHNvYXBCb2R5Q2hpbGQuZ2V0TmFtZXNwYWNlVVJJKCksIG9wZXJhdGlvbk5hbWUpOwotCi0gICAgICAvLyBHbyB0aHJvdWdoIGVhY2ggb3BlcmF0aW9uIGluIHRoZSBiaW5kaW5nIGFuZCBjaGVjayBmb3IgbmFtZXNwYWNlIG1hdGNoCi0gICAgICBJdGVyYXRvciBvcGVyYXRpb25zID0gYmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAob3BlcmF0aW9ucy5oYXNOZXh0KCkgJiYgIShvcGVyYXRpb25Gb3VuZCkpCi0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9Ci0gICAgICAgICAgKEJpbmRpbmdPcGVyYXRpb24pIG9wZXJhdGlvbnMubmV4dCgpOwotCi0gICAgICAgIC8vIElmIHJwYy1saXRlcmFsLCB0aGVuIGxvb2sgYXQgbmFtZXNwYWNlIGF0dHJpYnV0ZSBvbiBzb2FwYmluZDpib2R5Ci0gICAgICAgIGlmIChXU0RMVXRpbHMuaXNScGNMaXRlcmFsKGJpbmRpbmdTdHlsZSwgYmluZGluZ09wZXJhdGlvbikpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBHZXQgc29hcGJpbmQ6Ym9keSBlbGVtZW50IAotICAgICAgICAgIGlmIChiaW5kaW5nT3BlcmF0aW9uLmdldE5hbWUoKS5lcXVhbHMob3BlcmF0aW9uTmFtZSkpCi0gICAgICAgICAgICBvcGVyYXRpb25Gb3VuZCA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBkb2MtbGl0ZXJhbCwgdGhlbiBjaGVjayBuYW1lc3BhY2UKLSAgICAgICAgZWxzZSBpZiAoV1NETFV0aWxzLmlzRG9jTGl0ZXJhbChiaW5kaW5nU3R5bGUsIGJpbmRpbmdPcGVyYXRpb24pKQotICAgICAgICB7Ci0gICAgICAgICAgaW50IHBhcnRDb3VudDsKLSAgICAgICAgICBJdGVyYXRvciBwYXJ0c0l0ZXJhdG9yID0gbnVsbDsKLQotICAgICAgICAgIC8vIEdldCBmaXJzdCBwYXJ0IG5hbWUgZnJvbSBzb2FwYmluZDpib2R5IGVsZW1lbnQgcGFydHMgYXR0cmlidXRlCi0gICAgICAgICAgU3RyaW5nIHBhcnROYW1lID0gZ2V0Rmlyc3RQYXJ0TmFtZShiaW5kaW5nT3BlcmF0aW9uKTsKLQotICAgICAgICAgIC8vIEdldCB0aGUgbGlzdCBvZiBwYXJ0cyBmcm9tIHRoZSBtZXNzYWdlICAgICAgICAgICAKLSAgICAgICAgICBNYXAgcGFydHNNYXAgPSBudWxsOwotICAgICAgICAgIGlmICgocGFydHNNYXAgPQotICAgICAgICAgICAgYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKS5nZXRQYXJ0cygpKQotICAgICAgICAgICAgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwYXJ0c0l0ZXJhdG9yID0gcGFydHNNYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKLQotICAgICAgICAgICAgLy8gSWYgdGhlIHBhcnQgbmFtZSB3YXNuJ3Qgc3BlY2lmaWVkIG9uIHRoZSBzb2FwYmluZDpib2R5IGVsZW1lbnQsIHRoZW4gcHJvY2VzcyBqdXN0IHRoZSBmaXJzdCBvbmUKLSAgICAgICAgICAgIGlmIChwYXJ0TmFtZSA9PSBudWxsKQotICAgICAgICAgICAgICBwYXJ0Q291bnQgPSAxOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBwYXJ0Q291bnQgPSBwYXJ0c01hcC5zaXplKCk7Ci0KLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFydENvdW50ICYmICFvcGVyYXRpb25Gb3VuZDsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBHZXQgbmV4dCBwYXJ0Ci0gICAgICAgICAgICAgIFBhcnQgcGFydCA9IChQYXJ0KSBwYXJ0c0l0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgICAgICAgICAvLyBJZiBwYXJ0IG5hbWUgbWF0Y2hlcyBvciB0aGVyZSBpcyBubyBwYXJ0IG5hbWUsIHRoZW4gY2hlY2sgbmFtZXNwYWNlCi0gICAgICAgICAgICAgIGlmICgocGFydE5hbWUgPT0gbnVsbCkKLSAgICAgICAgICAgICAgICB8fCAoKHBhcnROYW1lICE9IG51bGwpICYmIChwYXJ0LmdldE5hbWUoKS5lcXVhbHMocGFydE5hbWUpKSkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoKHBhcnQuZ2V0RWxlbWVudE5hbWUoKSAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgJiYgKHBhcnQuZ2V0RWxlbWVudE5hbWUoKS5lcXVhbHMob3BlcmF0aW9uUU5hbWUpKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBvcGVyYXRpb25Gb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gR28gdGhyb3VnaCBlYWNoIG9wZXJhdGlvbiB0byBmaW5kIGEgbWF0Y2gKLSAgICByZXR1cm4gb3BlcmF0aW9uRm91bmQ7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGZhaWx1cmUgZGV0YWlsLgotICAgKiBAcGFyYW0gbWVzc2FnZSAgICAgICBhIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBlbnRyeUNvbnRleHQgIGFuIGVudHJ5IGNvbnRleHQuCi0gICAqIEByZXR1cm4gZmFpbHVyZSBkZXRhaWwuCi0gICAqLwotICBwdWJsaWMgRmFpbHVyZURldGFpbCBjcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgIFN0cmluZyBtZXNzYWdlLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gIHsKLSAgICBGYWlsdXJlRGV0YWlsIGZhaWx1cmVEZXRhaWwgPSByZXBvcnRlci5jcmVhdGVGYWlsdXJlRGV0YWlsKCk7Ci0gICAgZmFpbHVyZURldGFpbC5zZXRGYWlsdXJlTWVzc2FnZShtZXNzYWdlKTsKLSAgICBmYWlsdXJlRGV0YWlsLnNldEVsZW1lbnRMb2NhdGlvbigKLSAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRFbGVtZW50TG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIGZhaWx1cmVEZXRhaWw7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwjaXNOb3RBcHBsaWNhYmxlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24pCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBpc05vdEFwcGxpY2FibGUoVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uKQotICB7Ci0gICAgYm9vbGVhbiBub3RBcHBsaWNhYmxlID0gZmFsc2U7Ci0KLSAgICAvLyBJZiB0aGUgYWRkaXRpb25hbCBlbnRyeSBpcyBub3QgYXZhaWxhYmxlLCB0aGVuIHNldCBub3RBcHBsaWNhYmxlCi0gICAgaWYgKHRlc3RBc3NlcnRpb24uZ2V0QWRkaXRpb25hbEVudHJ5VHlwZUxpc3QoKS5nZXRXU0RMSW5wdXQoKSAhPSBudWxsCi0gICAgICAmJiAhdGVzdEFzc2VydGlvbi5nZXRBZGRpdGlvbmFsRW50cnlUeXBlTGlzdCgpLmdldFdTRExJbnB1dCgpLmVxdWFscygibm9uZSIpCi0gICAgICAmJiBhbmFseXplckNvbnRleHQuZ2V0U2VydmljZVJlZmVyZW5jZSgpLmdldFdTRExMb2NhdGlvbigpID09IG51bGwpCi0gICAgewotICAgICAgbm90QXBwbGljYWJsZSA9IHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5vdEFwcGxpY2FibGU7Ci0gIH0KLQotCi0gIC8qKgotICAgKiBHZXQgUE9TVCByZXF1ZXN0LgotICAgKiBAcGFyYW0gaHR0cEhlYWRlciBhbiBIVFRQIAotICAgKiBAcmV0dXJuIFBPU1QgcmVxdWVzdC4KLSAgICovCi0gIHB1YmxpYyBWZWN0b3IgZ2V0UG9zdFJlcXVlc3QoU3RyaW5nIGh0dHBIZWFkZXIpCi0gIHsKLSAgICAvL1JlcXVlc3QtTGluZSAgID0gTWV0aG9kIFNQIFJlcXVlc3QtVVJJIFNQIEhUVFAtVmVyc2lvbiBDUkxGCi0gICAgVmVjdG9yIHJlcXVlc3RMaW5lID0gbmV3IFZlY3RvcigpOwotICAgIFN0cmluZyBzdGFydExpbmUgPSBudWxsOwotCi0gICAgU3RyaW5nVG9rZW5pemVyIGh0dHBNZXNzYWdlVG9rZW5pemVyID0KLSAgICAgIG5ldyBTdHJpbmdUb2tlbml6ZXIoaHR0cEhlYWRlciwgIlxuXHJcZiIpOwotCi0gICAgaWYgKGh0dHBNZXNzYWdlVG9rZW5pemVyLmhhc01vcmVUb2tlbnMoKSkKLSAgICB7Ci0gICAgICBzdGFydExpbmUgPSBodHRwTWVzc2FnZVRva2VuaXplci5uZXh0VG9rZW4oKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RhcnRMaW5lLnN0YXJ0c1dpdGgoIlBPU1QiKSkKLSAgICB7Ci0gICAgICBTdHJpbmdUb2tlbml6ZXIgc3RhcnRMaW5lVG9rZW5pemVyID0KLSAgICAgICAgbmV3IFN0cmluZ1Rva2VuaXplcihzdGFydExpbmUsICJcdTAwMjAiKTsKLSAgICAgIHdoaWxlIChzdGFydExpbmVUb2tlbml6ZXIuaGFzTW9yZVRva2VucygpKQotICAgICAgewotICAgICAgICByZXF1ZXN0TGluZS5hZGQoc3RhcnRMaW5lVG9rZW5pemVyLm5leHRUb2tlbigpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlcXVlc3RMaW5lOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBIVFRQIHJlcXVlc3QuCi0gICAqIEBwYXJhbSBodHRwSGVhZGVyIGFuIEhUVFAgCi0gICAqIEByZXR1cm4gSFRUUCByZXF1ZXN0LgotICAqLwotICBwcml2YXRlIFZlY3RvciBnZXRIdHRwUmVxdWVzdChTdHJpbmcgaHR0cEhlYWRlcikKLSAgewotICAgIC8vUmVxdWVzdC1MaW5lICAgPSBNZXRob2QgU1AgUmVxdWVzdC1VUkkgU1AgSFRUUC1WZXJzaW9uIENSTEYKLSAgICBWZWN0b3IgcmVxdWVzdExpbmUgPSBuZXcgVmVjdG9yKCk7Ci0gICAgU3RyaW5nIHN0YXJ0TGluZSA9IG51bGw7Ci0KLSAgICBTdHJpbmdUb2tlbml6ZXIgaHR0cE1lc3NhZ2VUb2tlbml6ZXIgPQotICAgICAgbmV3IFN0cmluZ1Rva2VuaXplcihodHRwSGVhZGVyLCAiXG5cclxmIik7Ci0KLSAgICBpZiAoaHR0cE1lc3NhZ2VUb2tlbml6ZXIuaGFzTW9yZVRva2VucygpKQotICAgIHsKLSAgICAgIHN0YXJ0TGluZSA9IGh0dHBNZXNzYWdlVG9rZW5pemVyLm5leHRUb2tlbigpOwotICAgIH0KLQotICAgIGlmIChzdGFydExpbmUuc3RhcnRzV2l0aCgiUE9TVCIpIHx8IHN0YXJ0TGluZS5zdGFydHNXaXRoKCJHRVQiKSkKLSAgICB7Ci0gICAgICBTdHJpbmdUb2tlbml6ZXIgc3RhcnRMaW5lVG9rZW5pemVyID0KLSAgICAgICAgbmV3IFN0cmluZ1Rva2VuaXplcihzdGFydExpbmUsICJcdTAwMjAiKTsKLSAgICAgIHdoaWxlIChzdGFydExpbmVUb2tlbml6ZXIuaGFzTW9yZVRva2VucygpKQotICAgICAgewotICAgICAgICByZXF1ZXN0TGluZS5hZGQoc3RhcnRMaW5lVG9rZW5pemVyLm5leHRUb2tlbigpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlcXVlc3RMaW5lID0gbnVsbDsgLy8gc2lnbmlmeSBub3QgUE9TVCBvciBHRVQKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVxdWVzdExpbmU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IEhUVFAgcmVxdWVzdCB0eXBlLgotICAgKiBAcGFyYW0gZW50cnlDb250ZXh0IGFuIGVudHJ5IGNvbnRleHQuCi0gICAqIEByZXR1cm4gSFRUUCByZXF1ZXN0IHR5cGUuCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBnZXRIdHRwUmVxdWVzdFR5cGUoRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgewotICAgIC8vUmVxdWVzdC1MaW5lICAgPSBNZXRob2QgU1AgUmVxdWVzdC1VUkkgU1AgSFRUUC1WZXJzaW9uIENSTEYKLQotICAgIFN0cmluZyBodHRwSGVhZGVyID0gZW50cnlDb250ZXh0LmdldFJlcXVlc3QoKS5nZXRIVFRQSGVhZGVycygpOwotICAgIFN0cmluZyBodHRwUmVxdWVzdFR5cGUgPSBudWxsOwotICAgIFN0cmluZyBzdGFydExpbmUgPSBudWxsOwotCi0gICAgU3RyaW5nVG9rZW5pemVyIGh0dHBNZXNzYWdlVG9rZW5pemVyID0KLSAgICAgIG5ldyBTdHJpbmdUb2tlbml6ZXIoaHR0cEhlYWRlciwgIlxuXHJcZiIpOwotCi0gICAgaWYgKGh0dHBNZXNzYWdlVG9rZW5pemVyLmhhc01vcmVUb2tlbnMoKSkKLSAgICB7Ci0gICAgICBzdGFydExpbmUgPSBodHRwTWVzc2FnZVRva2VuaXplci5uZXh0VG9rZW4oKTsKLSAgICAgIFN0cmluZ1Rva2VuaXplciBzdGFydExpbmVUb2tlbml6ZXIgPQotICAgICAgICBuZXcgU3RyaW5nVG9rZW5pemVyKHN0YXJ0TGluZSwgIlx1MDAyMCIpOwotICAgICAgaWYgKHN0YXJ0TGluZVRva2VuaXplci5oYXNNb3JlVG9rZW5zKCkpCi0gICAgICB7Ci0gICAgICAgIGh0dHBSZXF1ZXN0VHlwZSA9IHN0YXJ0TGluZVRva2VuaXplci5uZXh0VG9rZW4oKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGh0dHBSZXF1ZXN0VHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiBEZXRlcm1pbmUgaWYgdGhlIG1lc3NhZ2UgaXMgYSByZXNwb25zZSBmb3IgYSBvbmUtd2F5IG9wZXJhdGlvbi4KLSAgICogQHBhcmFtIGVudHJ5Q29udGV4dCBhbiBlbnRyeSBjb250ZXh0LgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG1lc3NhZ2UgaXMgYSByZXNwb25zZSBmb3IgYSBvbmUtd2F5IG9wZXJhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzT25lV2F5UmVzcG9uc2UoRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgewotICAgIGJvb2xlYW4gb25ld2F5ID0gZmFsc2U7Ci0KLSAgICAvLyBURU1QOiBJZiB0aGlzIGlzIGEgcmVzcG9uc2UgbWVzc2FnZSBhbmQgdGhlcmUgaXMgbm8gY29udGVudCwgdGhlbiBzZXQgb25lLXdheSB0byB0cnVlCi0gICAgLy8gVEVNUDogTmVlZCB0byBmaW5kIGEgd2F5IHRvIGRldGVybWluZSBpZiB0aGUgcmVzcG9uc2UgaXMgZm9yIGEgb25lLXdheSBtZXNzYWdlCi0gICAgaWYgKGVudHJ5Q29udGV4dAotICAgICAgLmdldE1lc3NhZ2VFbnRyeSgpCi0gICAgICAuZ2V0VHlwZSgpCi0gICAgICAuZXF1YWxzSWdub3JlQ2FzZShNZXNzYWdlRW50cnkuVFlQRV9SRVNQT05TRSkKLSAgICAgICYmIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCkubGVuZ3RoKCkgPT0gMCkKLSAgICB7Ci0gICAgICBvbmV3YXkgPSB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBvbmV3YXk7Ci0gIH0KLQotICAvKioKLSAgICogbWVzc2FnZUlzRG9jTGl0U2NoZW1hVmFsaWQuCi0gICAqCi0gICAqIFZhbGlkYXRlcyB0aGUgZG9jLWxpdCBtZXNzYWdlcyBhZ2FpbnN0IHRoZSBzY2hlbWEgZm91bmQgaW4gYSBjYW5kaWRhdGUgd3NkbCBkb2N1bWVudC4KLSAgICoKLSAgICogSWRlbnRpZnkgKG9yIGJlIGdpdmVuKSBhIHJlZmVyZW5jZSBpbiB0aGUgd3NkbCB0byBlbGVtZW50cyAoZm91bmQgaW4gJmx0O3dzZGw6dHlwZXMmZ3Q7Jmx0O3NjaGVtYSZndDsuLi4pCi0gICAqIHRoYXQgYXJlIGltbWVkaWF0ZSBjaGlsZHJlbiBlbGVtZW50cyBpbiB0aGUgc29hcCBib2R5LgotICAgKiBAcGFyYW0gZW50cnlDb250ZXh0IGFuIGVudHJ5IGNvbnRleHQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbGl0ZXJhbCBtZXNzYWdlIGlzIGNvbXBsaWFudCB0byB0aGUgCi0gICAqICAgICAgICAgc2NoZW1hIGZvdW5kIGluIGEgY2FuZGlkYXRlIFdTREwgZG9jdW1lbnQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgcGFyc2luZyBwcm9ibGVtIGR1cmluZyB2YWxpZGF0aW9uLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gbWVzc2FnZUlzRG9jTGl0U2NoZW1hVmFsaWQoRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCB1c2UgYSB2YWxpZGF0aW5nIHBhcnNlciB0aGF0IGlzIGNhcGFibGUgb2YgYWNjZXBwdGluZyBtdWx0aXBsZSBzY2hlbWEgcmVmZXJlbmNlcwotICAgIC8vIHByb2dyYW1tYXRpY2FsbHkuIFRoZW4sIGV2ZXJ5IHNjaGVtYSBpbiBjYW5kaWRhdGUgd3NkbCBjYW4gYmUgcGFzc2VkIGluIHRvIHRoZSB2YWxpZGF0b3IuIFRoaXMgYXZvaWRzIHRoZQotICAgIC8vIG5lZWQgdG8gcGlucG9pbnQgYSBwYXJ0aWN1bGFyIHNjaGVtYSBlbGVtZW50IGZyb20gYWxsIGNhbmRpZGF0ZSB3c2RsOnR5cGVzLCBjb3JyZXNwb25kaW5nIHRvIHRoZSAKLSAgICAvLyB3c2RsOm9wZXJhdGlvbiBiZWluZyB1c2VkLiBUaGUgcGlucG9pbnRpbmcgaXMgYW4gaW5jb21wbGV0ZSB3b3JrYXJvdW5kIGZvciBwYXJzZXJzIG5vdCBjYXBhYmxlIAotICAgIC8vIG9mIGFjY2VwdGluZyBhcnJheXMgb2Ygc2NlaG1hIHJlZmVyZW5jZXMgCi0gICAgLy8gWyBpLmUuIHRoZSBET00gZmFjdG9yeS5zZXRBdHRyaWJ1dGUoSkFYUF9TQ0hFTUEgU09VUkNFLCBPYmplY3RbXSB7Li4ufSkgXQotICAgIC8vIGdldCBhbGwgeHM6c2NoZW1hIGZyb20gYWxsIGNhbmRpZGF0ZSB3c2RsOnR5cGVzICAgICAgICAgICAgICAgICAgICAKLSAgICAvLyBhZGQgZWFjaCA8c2NoZW1hPiB0byBhbiBhcnJheSBhbmQgcGFzcyB0aGlzIGFycmF5IHRvIHRoZSB2YWxpZGF0aW5nIHBhcnNlcgotICAgIC8vIHdoZW4gdmFsaWRhdGluZyB0aGUvZWFjaCBzb2FwIGJvZHkgY2hpbGQuCi0KLSAgICAvLyB1c2UgdGhlIHJlZmVyZW5jZWQgV1NETCBmaWxlIGFuZCBpdHMgaW1wb3J0ZWQgZmlsZXMgdG8gZmluZCBzY2hlbWFzCi0gICAgTGlzdCBzY2hlbWFXU0RMcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBMaXN0IGlubGluZVNjaGVtYXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgTGlzdCBzY2hlbWFTdHJpbmdzID0gbmV3IEFycmF5TGlzdCgpOwotCi0gICAgRGVmaW5pdGlvbltdIGFsbERlZnMgPQotICAgICAgYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXREZWZpbml0aW9ucygpOwotICAgIGZvciAoaW50IHRoaXNEZWYgPSAwOyB0aGlzRGVmIDwgYWxsRGVmcy5sZW5ndGg7IHRoaXNEZWYrKykKLSAgICB7Ci0gICAgICBzY2hlbWFXU0RMcy5hZGQoYWxsRGVmc1t0aGlzRGVmXS5nZXREb2N1bWVudEJhc2VVUkkoKSk7Ci0gICAgfQotICAgIEl0ZXJhdG9yIGZpbGVJdGVyYXRvciA9IHNjaGVtYVdTRExzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGZpbGVJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgLy8gcGFyc2UgZmlsZSBpZiBwb3NzaWJsZQotICAgICAgRG9jdW1lbnQgd3NkbERvYyA9IG51bGw7Ci0gICAgICBTdHJpbmcgd3NkbFVSSSA9IChTdHJpbmcpIGZpbGVJdGVyYXRvci5uZXh0KCk7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgd3NkbERvYyA9IFhNTFV0aWxzLnBhcnNlWE1MRG9jdW1lbnRVUkwod3NkbFVSSSwgbnVsbCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgICAgRWxlbWVudCByb290ID0gd3NkbERvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIC8vIGZpbmQgdGhlIHNjaGVtYQotICAgICAgTm9kZUxpc3Qgc2NoZW1hRWxlbWVudHMgPSByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgIFdTSVRhZy5FTEVNX1hTRF9TQ0hFTUEuZ2V0TmFtZXNwYWNlVVJJKCksCi0gICAgICAgIFdTSVRhZy5FTEVNX1hTRF9TQ0hFTUEuZ2V0TG9jYWxQYXJ0KCkpOwotCi0gICAgICBmb3IgKGludCBlbGVtID0gMDsgZWxlbSA8IHNjaGVtYUVsZW1lbnRzLmdldExlbmd0aCgpOyBlbGVtKyspCi0gICAgICB7ICAgICAKLSAgICAgICAgRWxlbWVudCBzY2hlbWEgPSAoRWxlbWVudCkgc2NoZW1hRWxlbWVudHMuaXRlbShlbGVtKTsKLSAgICAgICAgLy8gY29weWluZyBhbGwgdGhlIE5TIGRlY2xhcmF0aW9ucyBmcm9tIHdzZGw6ZGVmaW5pdGlvbnMgd3NkbDp0eXBlcwotICAgICAgICBjb3B5TlNEZWNsYXJhdGlvbnMocm9vdCwgc2NoZW1hKTsKLSAgICAgICAgY29weU5TRGVjbGFyYXRpb25zKChFbGVtZW50KSBzY2hlbWEuZ2V0UGFyZW50Tm9kZSgpLCBzY2hlbWEpOwotICAgICAgICAvLyBSZXBsYWNpbmcgYWxsIHJlbGF0aXZlIHNjaGVtYUxvY2F0aW9uIFVSSXMgd2l0aCBhYnNvbHV0ZSBvbmVzCi0gICAgICAgIHJlcGxhY2VSZWxhdGl2ZVVSSXMoc2NoZW1hLCB3c2RsVVJJKTsKLSAgICAgICAgaW5saW5lU2NoZW1hcy5hZGQoc2NoZW1hKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOb3RlIHRoYXQgdGhlIFhlcmNlcyBwYXJzZXIgT05MWSBhY2NlcHRzIGFuIGFycmF5Ci0gICAgLy8gb2Ygc2NoZW1hcyB3aXRoIHVuaXF1ZSBuYW1lc3BhY2VzLgotICAgIGlmICghZHVwbGljYXRlTmFtZXNwYWNlc0RldGVjdGVkKGlubGluZVNjaGVtYXMpKQotICAgIHsKLSAgICAgIC8vIFNlcmlhbGl6ZSB0aGUgc2NoZW1hIGVsZW1lbnRzIGluc2lkZSB0aGUgVHlwZXMsIHRoZW4gdXNlIHRoaXMgYXMKLSAgICAgIC8vIHRoZSBzY2hlbWEgc3RyaW5nIGZvciB0aGUgdmFsaWRhdGlvbgotICAgICAgSXRlcmF0b3IgaSA9IGlubGluZVNjaGVtYXMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAJRWxlbWVudCBzY2hlbWEgPSAoRWxlbWVudClpLm5leHQoKTsgCi0gICAgICAgIFN0cmluZyBzY2hlbWFTdHJpbmcgPSBET00yV3JpdGVyLm5vZGVUb1N0cmluZyhzY2hlbWEpOwotICAgICAgICBzY2hlbWFTdHJpbmdzLmFkZChzY2hlbWFTdHJpbmcpOwotICAgICAgfQotCi0gICAgICBOb2RlTGlzdCBlbGVtZW50TGlzdCA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpCi0gICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKFdTSVRhZy5FTEVNX1NPQVBfQk9EWS5nZXROYW1lc3BhY2VVUkkoKSwKLSAgICAgICAgICAgIFdTSVRhZy5FTEVNX1NPQVBfQk9EWS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICBpZiAoZWxlbWVudExpc3QgPT0gbnVsbCB8fCBlbGVtZW50TGlzdC5nZXRMZW5ndGgoKSAhPSAxKQotICAgICAgewotICAgICAgICAvLyBzaG91bGQgb25seSBiZSBhIHNpbmdsZSBzb2FwIGJvZHkgIQotICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHByb2JhYmx5IGFuIGVycm9yIGNvbmRpdGlvbiB0aG91Z2gKLSAgICAgIH0KLQotICAgICAgTm9kZUxpc3Qgc29hcEJvZHlDaGlsZExpc3QgPSAoKEVsZW1lbnQpZWxlbWVudExpc3QuaXRlbSgwKSkuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgZm9yIChpbnQgY2hpbGQgPSAwOyBjaGlsZCA8IHNvYXBCb2R5Q2hpbGRMaXN0LmdldExlbmd0aCgpOyBjaGlsZCsrKQotICAgICAgewotICAgICAgICBOb2RlIHNvYXBCb2R5Q2hpbGQgPSBzb2FwQm9keUNoaWxkTGlzdC5pdGVtKGNoaWxkKTsKLSAgICAgICAgaWYgKHNvYXBCb2R5Q2hpbGQuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgewotICAgICAgICAgIC8vIGRvIGFsbCBmb3Igbm93Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgLy8gV3JpdGUgb3V0IGVsZW1lbnQgdHJlZSB0byBTdHJpbmcKLSAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlQ29udGVudCA9IERPTTJXcml0ZXIubm9kZVRvU3RyaW5nKHNvYXBCb2R5Q2hpbGQpOwotICAgICAgICAgICAgLy8gcGFyc2UgdGhlIGNoaWxkIGVsZW1lbnQsIHZhbGlkYXRpbmcgYWdhaW5zdCB0aGUgc2NoZW1hIAotICAgICAgICAgICAgWE1MVXRpbHMucGFyc2VYTUwobWVzc2FnZUNvbnRlbnQsIHNjaGVtYVN0cmluZ3MpOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKGUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCkgaW5zdGFuY2VvZiBTQVhFeGNlcHRpb24pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vIHZhbGlkYXRpb24gZmFpbGVkCi0gICAgICAgICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oZS5nZXRUYXJnZXRFeGNlcHRpb24oKS5nZXRNZXNzYWdlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oIlZhbGlkYXRpbmcgUGFyc2luZyBwcm9ibGVtIiwgZSk7Ci0gICAgICAgICAgICAvLyBCYWQgdGhpbmdzIGhhdmUgaGFwcGVuZWQKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0gICAKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogQ29weSB0aGUgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucy4KLSAgICogQHBhcmFtIHBhcmVudCBhIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBjaGlsZCBhIHN0cmlwcGVkIG1lc3NhZ2UuCi0gICAqLwotICBwcml2YXRlIHZvaWQgY29weU5TRGVjbGFyYXRpb25zKEVsZW1lbnQgcGFyZW50LCBFbGVtZW50IGNoaWxkKQotICB7Ci0gICAgTmFtZWROb2RlTWFwIG5vZGVNYXAgPSBwYXJlbnQuZ2V0QXR0cmlidXRlcygpOwotICAgIGZvciAoaW50IG5vZGVJZCA9IDA7IG5vZGVJZCA8IG5vZGVNYXAuZ2V0TGVuZ3RoKCk7IG5vZGVJZCsrKQotICAgIHsKLSAgICAgIE5vZGUgbm9kZSA9IG5vZGVNYXAuaXRlbShub2RlSWQpOwotCi0gICAgICBpZiAoKG5vZGUuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkFUVFJJQlVURV9OT0RFKQotICAgICAgICAmJiAobm9kZS5nZXROb2RlTmFtZSgpLnN0YXJ0c1dpdGgoInhtbG5zOiIpKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG5vZGVOYW1lID0gbm9kZS5nZXROb2RlTmFtZSgpOwotICAgICAgICAvLyBJZiBhbiBOUyBiZWluZyBjb3BpZWQgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjaGlsZCBlbGVtZW50IGhhcywgY29weSBpdAotICAgICAgICBpZiAoIWNoaWxkLmdldE5vZGVOYW1lKCkuc3RhcnRzV2l0aCgKLSAgICAgICAgICBub2RlTmFtZS5zdWJzdHJpbmcobm9kZU5hbWUuaW5kZXhPZigiOiIpICsgMSkgKyAiOiIpKQotICAgICAgICB7Ci0gICAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKG5vZGVOYW1lLCBub2RlLmdldE5vZGVWYWx1ZSgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBSZXBsYWNlcyBhbGwgcmVsYXRpdmUgVVJJcyBmb3Igc2NoZW1hTG9jYXRpb24gYXR0cmlidXRlcy4KLSAgICogQHBhcmFtIHNjaGVtYSBhbiB4c2Q6c2NoZW1hIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB3c2RsVVJJIGFuIFVSSSBvZiBXU0RMIHRoYXQgY29udGFpbnMgeHNkOnNjaGVtYSBiZWluZyBwcm9jZXNzZWQuCi0gICAqLwotICBwcml2YXRlIHZvaWQgcmVwbGFjZVJlbGF0aXZlVVJJcyhFbGVtZW50IHNjaGVtYSwgU3RyaW5nIHdzZGxVUkkpCi0gIHsKLSAgICAvLyBSZXRyaWV2aW5nIGFsbCB4c2Q6aW1wb3J0IGVsZW1lbnRzCi0gICAgTm9kZUxpc3QgaW1wb3J0cyA9IHNjaGVtYS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgV1NJVGFnLkVMRU1fWFNEX0lNUE9SVC5nZXROYW1lc3BhY2VVUkkoKSwKLSAgICAgIFdTSVRhZy5FTEVNX1hTRF9JTVBPUlQuZ2V0TG9jYWxQYXJ0KCkpOwotICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIGVsZW1lbnRzCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbXBvcnRzLmdldExlbmd0aCgpOyBpKyspCi0gICAgewotICAgICAgRWxlbWVudCBpbXAgPSAoRWxlbWVudCkgaW1wb3J0cy5pdGVtKGkpOwotICAgICAgLy8gR2V0dGluZyB0aGUgc2NoZW1hTG9jYXRpb24gYXR0cmlidXRlCi0gICAgICBBdHRyIHNjaGVtYUxvY2F0aW9uID0KLSAgICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlKGltcCwgV1NJVGFnLkFUVFJfWFNEX1NDSEVNQUxPQ0FUSU9OKTsKLSAgICAgIC8vIElmIHRoZSBhdHRyaWJ1dGUgaXMgcHJlc2VudAotICAgICAgaWYgKHNjaGVtYUxvY2F0aW9uICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIFRyeWluZyB0byBjcmVhdGUgYW4gVVJJIG9iamVjdCB1c2luZyBhdHRyaWJ1dGUncyB2YWx1ZQotICAgICAgICBVUkkgdXJpID0gbnVsbDsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICB1cmkgPSBuZXcgVVJJKHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCkpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkge30KLSAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBhYnNvbHV0ZSBVUkkgKHRoZSBVUkkgY29uc3RydWN0b3IgdGhyb3dzIHRoZQotICAgICAgICAvLyBNYWxmb3JtZWRVUklFeGNlcHRpb24pLCBjcmVhdGluZyB0aGUgYWJzb2x1dGUgVVJJIHVzaW5nIHdzZGxVUkkKLSAgICAgICAgaWYgKHVyaSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIG5ld1VSSSA9IHdzZGxVUkkuc3Vic3RyaW5nKDAsIHdzZGxVUkkubGFzdEluZGV4T2YoIi8iKSArIDEpCi0gICAgICAgICAgICArIHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCk7Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgdXJpID0gbmV3IFVSSShuZXdVUkkpOwotICAgICAgICAgICAgLy8gU2V0dGluZyBhIG5ldyBVUkkgYXMgYSB2YWx1ZSBmb3IgdGhlIHNjaGVtYUxvY2F0aW9uIGF0dHJpYnV0ZQotICAgICAgICAgICAgc2NoZW1hTG9jYXRpb24uc2V0VmFsdWUodXJpLnRvU3RyaW5nKCkpOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyBiaW5kaW5nIG9wZXJhdGlvbiBtYXRjaGVkIGZvciBTT0FQIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBlbnRyeVR5cGUgbWVzc2FnZSBlbnRyeSB0eXBlLgotICAgKiBAcGFyYW0gZG9jIGEgbWVzc2FnZS4KLSAgICogQHJldHVybiBhbnkgYmluZGluZyBvcGVyYXRpb24gbWF0Y2hlZCwgbnVsbCBpZiBpdCBpcyBub3QgZm91bmQuCi0gICAqLwotICBwdWJsaWMgQmluZGluZ09wZXJhdGlvbiBnZXRPcGVyYXRpb25NYXRjaChFbnRyeVR5cGUgZW50cnlUeXBlLCBEb2N1bWVudCBkb2MpIAotICB7Ci0gICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBHZXR0aW5nIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBTT0FQIEJvZHkgY2hpbGQgZWxlbWVudAotICAgICAgUU5hbWUgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uRnJvbU1lc3NhZ2UoZG9jKTsKLSAgICAgIGlmIChvcGVyYXRpb24gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gUmV0cmlldmluZyBhbGwgdGhlIFJQQyBiaW5kaW5nIG9wZXJhdGlvbnMgZnJvbSB3c2RsOmJpbmRpbmcKLSAgICAgICAgQmluZGluZ09wZXJhdGlvbltdIHJwY0JpbmRpbmdPcHMgPSBnZXRNYXRjaGluZ0JpbmRpbmdPcHMoCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQywKLSAgICAgICAgICBhbmFseXplckNvbnRleHQuZ2V0Q2FuZGlkYXRlSW5mbygpLmdldEJpbmRpbmdzKCkpOwotICAgICAgICAvLyBSZXRyaWV2aW5nIGJpbmRpbmcgb3BlcmF0aW9uIGJ5IHRoZSBnaXZlbiBvcGVyYXRpb24gbmFtZQotICAgICAgICBiaW5kaW5nT3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uTWF0Y2goCi0gICAgICAgICAgZW50cnlUeXBlLCBvcGVyYXRpb24sIHJwY0JpbmRpbmdPcHMpOwotICAgICAgICAvLyBJZiBubyBvbmUgUlBDIG9wZXJhdGlvbiBtYXRjaGVkCi0gICAgICAgIGlmKGJpbmRpbmdPcGVyYXRpb24gPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIC8vIFJldHJpZXZpbmcgYWxsIHRoZSBkb2N1bWVudCBiaW5kaW5nIG9wZXJhdGlvbnMgZnJvbSB3c2RsOmJpbmRpbmcKLSAgICAgICAgICBCaW5kaW5nT3BlcmF0aW9uW10gZG9jQmluZGluZ09wZXJhdGlvbnMgPSBnZXRNYXRjaGluZ0JpbmRpbmdPcHMoCi0gICAgICAgICAgICBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DLAotICAgICAgICAgICAgYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXRCaW5kaW5ncygpKTsKLSAgICAgICAgICAvLyBSZXRyaWV2aW5nIGJpbmRpbmcgb3BlcmF0aW9uIGJ5IGdpdmVuIGVsZW1lbnQgbmFtZQotICAgICAgICAgIEJpbmRpbmdPcGVyYXRpb25bXSBwb3RlbnRpYWxEb2NMaXRPcHMgPQotICAgICAgICAgICAgZ2V0RG9jTGl0T3BlcmF0aW9ucyhlbnRyeVR5cGUsIG9wZXJhdGlvbiwgZG9jQmluZGluZ09wZXJhdGlvbnMpOwotICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGV4YWN0bHkgb25lIG9wZXJhdGlvbiBtYXRjaGVkCi0gICAgICAgICAgaWYgKHBvdGVudGlhbERvY0xpdE9wcy5sZW5ndGggPT0gMSkKLSAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24gPSBwb3RlbnRpYWxEb2NMaXRPcHNbMF07Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQotCi0gICAgcmV0dXJuIGJpbmRpbmdPcGVyYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogTWF0Y2ggZWl0aGVyIElucHV0IG9yIE91dHB1dC4KLSAgICogQHBhcmFtIG1lc3NhZ2VFbnRyeVR5cGUgbWVzc2FnZSBlbnRyeSB0eXBlLgotICAgKiBAcGFyYW0gc29hcE1lc3NhZ2Ugc29hcCBtZXNzYWdlLgotICAgKiBAcGFyYW0gb3AgYmluZGluZyBvcGVyYXRpb25zLgotICAgKiBAcmV0dXJuIG1hdGNoZWQgb3BlcmF0aW9uLgotICAgKi8KLSAgcHVibGljIEJpbmRpbmdPcGVyYXRpb24gZ2V0T3BlcmF0aW9uTWF0Y2goCi0gICAgRW50cnlUeXBlIG1lc3NhZ2VFbnRyeVR5cGUsCi0gICAgRG9jdW1lbnQgc29hcE1lc3NhZ2UsCi0gICAgQmluZGluZ09wZXJhdGlvbltdIG9wKQotICB7Ci0gICAgLy8gR2V0IG9wZXJhdGlvbiBmcm9tIG1lc3NhZ2UKLSAgICBRTmFtZSBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Gcm9tTWVzc2FnZShzb2FwTWVzc2FnZSk7Ci0gICAgLy8gbGlzdCBvZiBRTmFtZXMKLQotICAgIHJldHVybiBnZXRPcGVyYXRpb25NYXRjaChtZXNzYWdlRW50cnlUeXBlLCBvcGVyYXRpb24sIG9wKTsKLSAgfQotCi0gIC8qKgotICAgKiBNYXRjaCBlaXRoZXIgSW5wdXQgb3IgT3V0cHV0LgotICAgKiBAcGFyYW0gbWVzc2FnZUVudHJ5VHlwZSBtZXNzYWdlIGVudHJ5IHR5cGUuCi0gICAqIEBwYXJhbSBvcGVyYXRpb24gU09BUCBvcGVyYXRpb24gbmFtZS4KLSAgICogQHBhcmFtIG9wIGJpbmRpbmcgb3BlcmF0aW9ucy4KLSAgICogQHJldHVybiBtYXRjaGVkIG9wZXJhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBCaW5kaW5nT3BlcmF0aW9uIGdldE9wZXJhdGlvbk1hdGNoKAotICAgIEVudHJ5VHlwZSBtZXNzYWdlRW50cnlUeXBlLAotICAgIFFOYW1lIG9wZXJhdGlvbiwKLSAgICBCaW5kaW5nT3BlcmF0aW9uW10gb3ApCi0gIHsKLSAgICBRTmFtZSBjaGVja09wZXJhdGlvbjsKLQotICAgIC8vIExvb2sgZm9yIGEgY2FuZGlkYXRlIG9wZXJhdGlvbiBpbiB0aGUgd3NkbCB0aGF0IG1hdGNoZXMgdGhpcyBzaWduYXR1cmUuCi0gICAgZm9yIChpbnQgayA9IDA7IGsgPCBvcC5sZW5ndGg7IGsrKykKLSAgICB7Ci0gICAgICBTdHJpbmcgbmFtZSA9IG51bGw7Ci0gICAgICBMaXN0IGV4dGVuc2libGVzID0gbnVsbDsKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wID0gb3Bba107Ci0KLSAgICAgIGlmIChtZXNzYWdlRW50cnlUeXBlLmlzVHlwZShNZXNzYWdlVmFsaWRhdG9yLlRZUEVfTUVTU0FHRV9SRVFVRVNUKQotICAgICAgICAmJiAoYmluZGluZ09wLmdldE9wZXJhdGlvbigpLmdldElucHV0KCkgIT0gbnVsbCkpCi0gICAgICB7Ci0gICAgICAgIG5hbWUgPSBiaW5kaW5nT3AuZ2V0T3BlcmF0aW9uKCkuZ2V0TmFtZSgpOwotICAgICAgICBleHRlbnNpYmxlcyA9IGJpbmRpbmdPcC5nZXRCaW5kaW5nSW5wdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKAotICAgICAgICBtZXNzYWdlRW50cnlUeXBlLmlzVHlwZShNZXNzYWdlVmFsaWRhdG9yLlRZUEVfTUVTU0FHRV9SRVNQT05TRSkKLSAgICAgICAgICAmJiAoYmluZGluZ09wLmdldE9wZXJhdGlvbigpLmdldE91dHB1dCgpICE9IG51bGwpKQotICAgICAgewotICAgICAgICBuYW1lID0gYmluZGluZ09wLmdldE9wZXJhdGlvbigpLmdldE5hbWUoKSArICJSZXNwb25zZSI7Ci0gICAgICAgIGV4dGVuc2libGVzID0gYmluZGluZ09wLmdldEJpbmRpbmdPdXRwdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIH0KLQotICAgICAgLy8gR2V0IHNvYXA6Ym9keQotICAgICAgU09BUEJvZHkgc29hcEJvZHkgPSBnZXRTb2FwQm9keShleHRlbnNpYmxlcyk7Ci0gICAgICBpZiAoc29hcEJvZHkgPT0gbnVsbCkKLSAgICAgICAgY2hlY2tPcGVyYXRpb24gPSBuZXcgUU5hbWUobmFtZSk7Ci0gICAgICBlbHNlCi0gICAgICAgIGNoZWNrT3BlcmF0aW9uID0gbmV3IFFOYW1lKHNvYXBCb2R5LmdldE5hbWVzcGFjZVVSSSgpLCBuYW1lKTsKLQotICAgICAgaWYgKG9wZXJhdGlvbiAhPSBudWxsICYmIG9wZXJhdGlvbi5lcXVhbHMoY2hlY2tPcGVyYXRpb24pKQotICAgICAgewotICAgICAgICByZXR1cm4gKGJpbmRpbmdPcCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIE1hdGNoIGVpdGhlciBJbnB1dCBvciBPdXRwdXQuCi0gICAqIEBwYXJhbSBtZXNzYWdlRW50cnlUeXBlIGEgbWVzc2FnZSBlbnRyeSB0eXBlLgotICAgKiBAcGFyYW0gc29hcE1lc3NhZ2UgYSBzb2FwIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBvcCBiaW5zaW5nIG9wZXJhdGlvbnMuCi0gICAqIEByZXR1cm4gbWF0Y2hlZCBvcGVyYXRpb24uCi0gICAqLwotICBwdWJsaWMgQmluZGluZ09wZXJhdGlvbiBnZXRPcGVyYXRpb25QYXJ0c01hdGNoKAotICAgIEVudHJ5VHlwZSBtZXNzYWdlRW50cnlUeXBlLAotICAgIERvY3VtZW50IHNvYXBNZXNzYWdlLAotICAgIEJpbmRpbmdPcGVyYXRpb25bXSBvcCkKLSAgewotICAgIE1hcCBwYXJ0cyA9IGdldFBhcnRMaXN0RnJvbU1lc3NhZ2Uoc29hcE1lc3NhZ2UpOyAvLyBsaXN0IG9mIFFOYW1lcwotCi0gICAgLy8gTG9vayBmb3IgYSBjYW5kaWRhdGUgb3BlcmF0aW9uIGluIHRoZSB3c2RsIHRoYXQgbWF0Y2hlcyB0aGlzIHNpZ25hdHVyZS4KLSAgICBmb3IgKGludCBrID0gMDsgayA8IG9wLmxlbmd0aDsgaysrKQotICAgIHsKLQotICAgICAgTWVzc2FnZSB3c2RsTWVzc2FnZSA9IG51bGw7Ci0gICAgICBMaXN0IGV4dGVuc2libGVzID0gbnVsbDsKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wID0gb3Bba107Ci0KLSAgICAgIGlmIChtZXNzYWdlRW50cnlUeXBlLmlzVHlwZShNZXNzYWdlVmFsaWRhdG9yLlRZUEVfTUVTU0FHRV9SRVFVRVNUKQotICAgICAgICAmJiAoYmluZGluZ09wLmdldE9wZXJhdGlvbigpLmdldElucHV0KCkgIT0gbnVsbCkpCi0gICAgICB7Ci0gICAgICAgIHdzZGxNZXNzYWdlID0gYmluZGluZ09wLmdldE9wZXJhdGlvbigpLmdldElucHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgICAgICBleHRlbnNpYmxlcyA9IGJpbmRpbmdPcC5nZXRCaW5kaW5nSW5wdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKAotICAgICAgICBtZXNzYWdlRW50cnlUeXBlLmlzVHlwZShNZXNzYWdlVmFsaWRhdG9yLlRZUEVfTUVTU0FHRV9SRVNQT05TRSkKLSAgICAgICAgICAmJiAoYmluZGluZ09wLmdldE9wZXJhdGlvbigpLmdldE91dHB1dCgpICE9IG51bGwpKQotICAgICAgewotICAgICAgICB3c2RsTWVzc2FnZSA9IGJpbmRpbmdPcC5nZXRPcGVyYXRpb24oKS5nZXRPdXRwdXQoKS5nZXRNZXNzYWdlKCk7Ci0gICAgICAgIGV4dGVuc2libGVzID0gYmluZGluZ09wLmdldEJpbmRpbmdPdXRwdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIH0KLSAgICAgIC8vd3NkbEZhdWx0UGFydHMgPSBvcFtrXS5nZXRGYXVsdHMoKTsKLSAgICAgIC8vIEFERDogY2hlY2sgZm9yIGNhc2Ugd2hlbiByZXNwb25zZSBtZXNzYWdlIGlzIGEgZmF1bHQKLQotICAgICAgaWYgKHNhbWVQYXJ0cyhwYXJ0cywgd3NkbE1lc3NhZ2UsIGdldFNvYXBIZWFkZXIoZXh0ZW5zaWJsZXMpKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIChiaW5kaW5nT3ApOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKiAKLSAgICogQmluZGluZ09wZXJhdGlvbiBnZXRPcGVyYXRpb25QYXJ0c01hdGNoKC4uKS4KLSAgICogCi0gICAqIEZpbmQgb25lIG9yIG1vcmUgbWF0Y2hpbmcgYmluZGluZyBvcGVyYXRpb25zIGZyb20gdGhlIFdTREwgY29ycmVzcG9uZGluZyB0byB0aGUKLSAgICogZ2l2ZW4gcmVxdWVzdC1yZXNwb25zZSBzaWduYXR1cmUuCi0gICAqIAotICAgKiBUaGlzIG92ZXJsb2FkZWQgdmVyc2lvbiBpcyBpbnRlbmRlZCBmb3IgcG9zc2libGUgQ29ycmVsYXRpb24gb25seSAobm90IGFzc2VydGlvbnMpLAotICAgKiBzaW5jZSBpdCBjaGVja3MgZm9yIGFuIG9wZXJhdGlvbiBzaWduYXR1cmUgb24gYSByZXF1ZXN0LXJlc3BvbnNlIHBhaXIuCi0gICAqIEFzc2VydGlvbnMgbm93IGNoZWNrIHJlcXVlc3QgJiByZXNwb25zZSBtZXNzYWdlcyBpbmRlcGVuZGVudGx5LiAKLSAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIGEgcmVxdWVzdCBtZXNzYWdlLgotICAgKiBAcGFyYW0gcmVzcG9uc2VNZXNzYWdlIGEgcmVzcG9uc2UgbWVzc2FnZS4KLSAgICogQHBhcmFtIG9wIGJpbmRpbmcgb3BlcmF0aW9ucy4KLSAgICogQHJldHVybiBtYXRjaGVkIG9wZXJhdGlvbi4KLSAgICovCi0gIC8vcHJpdmF0ZSBCaW5kaW5nT3BlcmF0aW9uIGdldE9wZXJhdGlvblBhcnRzTWF0Y2goCi0gIC8vICBEb2N1bWVudCByZXF1ZXN0TWVzc2FnZSwKLSAgLy8gIERvY3VtZW50IHJlc3BvbnNlTWVzc2FnZSwKLSAgLy8gIEJpbmRpbmdPcGVyYXRpb25bXSBvcCkKLSAgLy97Ci0gIC8vICBNYXAgaW5QYXJ0cyA9IGdldFBhcnRMaXN0RnJvbU1lc3NhZ2UocmVxdWVzdE1lc3NhZ2UpOyAvLyBsaXN0IG9mIFFOYW1lcwotICAvLyAgTWFwIG91dFBhcnRzID0gZ2V0UGFydExpc3RGcm9tTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwotICAvLyAgLy8gbGlzdCBvZiBRTmFtZXMKLSAgLy8KLSAgLy8gIC8vIExvb2sgZm9yIGEgY2FuZGlkYXRlIG9wZXJhdGlvbiBpbiB0aGUgd3NkbCB0aGF0IG1hdGNoZXMgdGhpcyBzaWduYXR1cmUuCi0gIC8vICBmb3IgKGludCBrID0gMDsgayA8IG9wLmxlbmd0aDsgaysrKQotICAvLyAgewotICAvLwotICAvLyAgICAvL01hcCB3c2RsRmF1bHRQYXJ0cyA9IG51bGw7Ci0gIC8vICAgIE1lc3NhZ2Ugd3NkbEluTWVzc2FnZSA9IG51bGw7Ci0gIC8vICAgIE1lc3NhZ2Ugd3NkbE91dE1lc3NhZ2UgPSBudWxsOwotICAvLwotICAvLyAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcCA9IG9wW2tdOwotICAvLyAgICBpZiAoYmluZGluZ09wLmdldE9wZXJhdGlvbigpLmdldElucHV0KCkgIT0gbnVsbCkKLSAgLy8gICAgewotICAvLyAgICAgIHdzZGxJbk1lc3NhZ2UgPSBiaW5kaW5nT3AuZ2V0T3BlcmF0aW9uKCkuZ2V0SW5wdXQoKS5nZXRNZXNzYWdlKCk7Ci0gIC8vICAgIH0KLSAgLy8KLSAgLy8gICAgaWYgKGJpbmRpbmdPcC5nZXRPcGVyYXRpb24oKS5nZXRPdXRwdXQoKSAhPSBudWxsKQotICAvLyAgICB7Ci0gIC8vICAgICAgd3NkbE91dE1lc3NhZ2UgPSBiaW5kaW5nT3AuZ2V0T3BlcmF0aW9uKCkuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpOwotICAvLyAgICB9Ci0gIC8vICAgIC8vd3NkbEZhdWx0UGFydHMgPSBvcFtrXS5nZXRGYXVsdHMoKTsKLSAgLy8gICAgLy8gQUREOiBjaGVjayBmb3IgY2FzZSB3aGVuIHJlc3BvbnNlIG1lc3NhZ2UgaXMgYSBmYXVsdAotICAvLwotICAvLyAgICBpZiAoc2FtZVBhcnRzKGluUGFydHMsCi0gIC8vICAgICAgd3NkbEluTWVzc2FnZSwKLSAgLy8gICAgICBnZXRTb2FwSGVhZGVyKGJpbmRpbmdPcC5nZXRCaW5kaW5nSW5wdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSkpKQotICAvLyAgICB7Ci0gIC8vICAgICAgLy8gbWF0Y2ggb24gdGhlIHJlcXVlc3QgLSBub3cgY2hlY2sgcmVzcG9uc2UgaWYgaXRzIG5vdCBhIGZhdWx0Ci0gIC8vICAgICAgaWYgKHJlc3BvbnNlTWVzc2FnZSAhPSBudWxsICYmIGlzRmF1bHQocmVzcG9uc2VNZXNzYWdlKSkKLSAgLy8gICAgICB7Ci0gIC8vICAgICAgICByZXR1cm4gKGJpbmRpbmdPcCk7Ci0gIC8vICAgICAgfQotICAvLyAgICAgIGVsc2UgaWYgKAotICAvLyAgICAgICAgc2FtZVBhcnRzKAotICAvLyAgICAgICAgICBvdXRQYXJ0cywKLSAgLy8gICAgICAgICAgd3NkbE91dE1lc3NhZ2UsCi0gIC8vICAgICAgICAgIGdldFNvYXBIZWFkZXIoCi0gIC8vICAgICAgICAgICAgYmluZGluZ09wLmdldEJpbmRpbmdPdXRwdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSkpKQotICAvLyAgICAgIHsKLSAgLy8gICAgICAgIC8vIEl0IGRvZXMgbWF0Y2ggc28gdHJlYXQgdGhpcyBhcyBhIHJlbGV2YW50IG1lc3NhZ2UgcGFpci4gCi0gIC8vICAgICAgICAvLyBMZXQgdGhlIG1lc3NhZ2UgdGhyb3VnaCBmb3IgdmFsaWRhdGlvbi4KLSAgLy8gICAgICAgIC8vQUREOiBjb3VsZCBwYXNzIHRoZSBvcGVyYXRpb25zIGxpc3QgYmFjayB0byB0aGUgZW50cnlDb250ZXh0IGZvciB0aGUgbWVzc2FnZS4KLSAgLy8gICAgICAgIHJldHVybiAoYmluZGluZ09wKTsKLSAgLy8gICAgICB9Ci0gIC8vICAgIH0KLSAgLy8gIH0KLSAgLy8gIHJldHVybiBudWxsOwotICAvL30KLQotICAvKioKLSAgICogR2V0IHRoZSBzb2FwOmJvZHkgZnJvbSBhIExpc3Qgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cy4KLSAgICogQHBhcmFtIGV4dEVsZW1zIGEgbGlzdCBvZiBleHRlbnNpYmlsaXR5IGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIHRoZSBzb2FwOmJvZHkgZnJvbSBhIExpc3Qgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cy4KLSAgICovCi0gIHByaXZhdGUgU09BUEJvZHkgZ2V0U29hcEJvZHkoTGlzdCBleHRFbGVtcykKLSAgewotICAgIC8vIEZpbmQgdGhlIHNvYXAgYm9keQotICAgIGlmIChleHRFbGVtcyAhPSBudWxsKQotICAgIHsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0RWxlbXMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW0gPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1zLmdldChpKTsKLSAgICAgICAgaWYgKGV4dEVsZW0uZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NJVGFnLldTRExfU09BUF9CT0RZKSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiAoU09BUEJvZHkpIGV4dEVsZW07Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgbWltZTptdWx0aXBhcnRSZWxhdGVkCi0gICAgICAgIGVsc2UgaWYgKGV4dEVsZW0uZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NJVGFnLldTRExfTUlNRV9NVUxUSVBBUlQpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gR2V0dGluZyB0aGUgbWltZTpwYXJ0IGVsZW1lbnRzIG9mIHRoZSBtaW1lOm11bHRpcGFydFJlbGF0ZWQKLSAgICAgICAgICBMaXN0IG1pbWVQYXJ0cyA9ICgoTUlNRU11bHRpcGFydFJlbGF0ZWQpIGV4dEVsZW0pLmdldE1JTUVQYXJ0cygpOwotICAgICAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSBtaW1lOnBhcnQgZWxlbWVudHMKLSAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1pbWVQYXJ0cy5zaXplKCk7IGorKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb2xsZWN0aW5nIGFsbCB0aGUgbWltZTpjb250ZW50IGVsZW1lbnRzIG9mIHRoaXMgbWltZTpwYXJ0Ci0gICAgICAgICAgICBTT0FQQm9keSBzb2FwQm9keSA9IGdldFNvYXBCb2R5KAotICAgICAgICAgICAgICAoKE1JTUVQYXJ0KSBtaW1lUGFydHMuZ2V0KGopKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgICAgICAgICBpZiAoc29hcEJvZHkgIT0gbnVsbCkKLSAgICAgICAgICAgICAgcmV0dXJuIHNvYXBCb2R5OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgU09BUEhlYWRlciBmcm9tIGEgTGlzdCBvZiBleHRlbnNpYmlsaXR5IGVsZW1lbnRzLgotICAgKiBAcGFyYW0gZXh0ZW5zaWJsZXMgYSBsaXN0IG9mIGV4dGVuc2liaWxpdHkgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gdGhlIFNPQVBIZWFkZXIgZnJvbSBhIExpc3Qgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cy4KLSAgICovCi0gIHByaXZhdGUgU09BUEhlYWRlciBnZXRTb2FwSGVhZGVyKExpc3QgZXh0ZW5zaWJsZXMpCi0gIHsKLSAgICBTT0FQSGVhZGVyIHNvYXBIZWFkZXIgPSBudWxsOwotCi0gICAgLy8gZmluZCB0aGUgc29hcCBoZWFkZXIKLSAgICBpZiAoZXh0ZW5zaWJsZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpID0gZXh0ZW5zaWJsZXMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpLmhhc05leHQoKSAmJiBzb2FwSGVhZGVyID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgc29hcEhlYWRlciA9IChTT0FQSGVhZGVyKSBpLm5leHQoKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGMpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gc29hcEhlYWRlcjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgZmlyc3QgcGFydCBuYW1lIGZyb20gc29hcGJpbmQ6Ym9keSBlbGVtZW50LgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0Rmlyc3RQYXJ0TmFtZShCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24pCi0gIHsKLSAgICBTdHJpbmcgcGFydE5hbWUgPSBudWxsOwotICAgIExpc3QgZXh0TGlzdCA9IG51bGw7Ci0gICAgSXRlcmF0b3IgcGFydHNJdGVyYXRvciA9IG51bGw7Ci0KLSAgICAvLyBEZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBsaXN0IG9mIHBhcnRzIGJ5IGZpbmRpbmcgdGhlIHNvYXBiaW5kOmJvZHkgZWxlbWVudAotICAgIGlmICgoZXh0TGlzdCA9Ci0gICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKQotICAgICAgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBMaXN0IHBhcnRzTGlzdCA9IG51bGw7Ci0gICAgICBJdGVyYXRvciBleHRJdGVyYXRvciA9IGV4dExpc3QuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChleHRJdGVyYXRvci5oYXNOZXh0KCkgJiYgKHBhcnROYW1lID09IG51bGwpKQotICAgICAgewotICAgICAgICBPYmplY3QgZXh0RWxlbWVudCA9IGV4dEl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgaWYgKGV4dEVsZW1lbnQgaW5zdGFuY2VvZiBTT0FQQm9keSkKLSAgICAgICAgewotICAgICAgICAgIGlmICgocGFydHNMaXN0ID0gKChTT0FQQm9keSkgZXh0RWxlbWVudCkuZ2V0UGFydHMoKSkgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwYXJ0c0l0ZXJhdG9yID0gcGFydHNMaXN0Lml0ZXJhdG9yKCk7Ci0KLSAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBkb2MgbGl0ZXJhbCBiaW5kaW5nIHRoZXJlIHNob3VsZCBiZSBvbmx5IG9uZSBwYXJ0IG5hbWUKLSAgICAgICAgICAgIGlmIChwYXJ0c0l0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgICAgICAgICAgcGFydE5hbWUgPSAoU3RyaW5nKSBwYXJ0c0l0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcGFydE5hbWU7Ci0gIH0KLQotICBwdWJsaWMgQmluZGluZ09wZXJhdGlvbltdIGdldERvY0xpdE9wZXJhdGlvbnMoCi0gICAgRW50cnlUeXBlIG1lc3NhZ2VUeXBlLAotICAgIFFOYW1lIHBhcnRFbGVtZW50UU5hbWUsCi0gICAgQmluZGluZ09wZXJhdGlvbltdIHdzZGxPcGVyYXRpb25zKQotICB7Ci0KLSAgICBpZiAobWVzc2FnZVR5cGUuaXNUeXBlKEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoTWVzc2FnZVZhbGlkYXRvci5UWVBFX01FU1NBR0VfUkVRVUVTVCkpKQotICAgIHsKLSAgICAgIHJldHVybiBnZXRJbnB1dERvY0xpdE9wZXJhdGlvbnMocGFydEVsZW1lbnRRTmFtZSwgd3NkbE9wZXJhdGlvbnMpOwotICAgIH0KLSAgICBlbHNlIGlmIChtZXNzYWdlVHlwZS5pc1R5cGUoRW50cnlUeXBlLmdldEVudHJ5VHlwZShNZXNzYWdlVmFsaWRhdG9yLlRZUEVfTUVTU0FHRV9SRVNQT05TRSkpKQotICAgIHsKLSAgICAgIHJldHVybiBnZXRPdXRwdXREb2NMaXRPcGVyYXRpb25zKHBhcnRFbGVtZW50UU5hbWUsIHdzZGxPcGVyYXRpb25zKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOyAvLyBzaG91bGQgYmUgb25lIG9yIHRoZSBvdGhlcgotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgQmluZGluZ09wZXJhdGlvbltdIGdldElucHV0RG9jTGl0T3BlcmF0aW9ucygKLSAgICBRTmFtZSBwYXJ0RWxlbWVudFFOYW1lLAotICAgIEJpbmRpbmdPcGVyYXRpb25bXSB3c2RsT3BlcmF0aW9ucykKLSAgewotCi0gICAgVmVjdG9yIHBvdGVudGlhbE9wcyA9IG5ldyBWZWN0b3IoKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd3NkbE9wZXJhdGlvbnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgaWYgKHdzZGxPcGVyYXRpb25zW2ldLmdldE9wZXJhdGlvbigpLmdldElucHV0KCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgTWVzc2FnZSBtZXNzYWdlID0gd3NkbE9wZXJhdGlvbnNbaV0uZ2V0T3BlcmF0aW9uKCkuZ2V0SW5wdXQoKS5nZXRNZXNzYWdlKCk7Ci0gICAgICAgIC8vIElmIFNPQVAgQm9keSBjaGlsZCBlbGVtZW50IGlzIG5vdCBwcmVzZW50IGFuZCB3c2RsOm1lc3NhZ2UgZG9lcyBub3QgaGF2ZSBhbnkgd3NkbDpwYXJ0cywgdGhhdCBpcyB0aGUgbWF0Y2ggCi0gICAgICAgIGlmIChwYXJ0RWxlbWVudFFOYW1lID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAobWVzc2FnZS5nZXRQYXJ0cygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHBvdGVudGlhbE9wcy5hZGQod3NkbE9wZXJhdGlvbnNbaV0pOwotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgSXRlcmF0b3IgcGFydHNJdCA9IG1lc3NhZ2UuZ2V0UGFydHMoKS52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAocGFydHNJdC5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBQYXJ0IG5leHRQYXJ0ID0gKFBhcnQpIHBhcnRzSXQubmV4dCgpOwotICAgICAgICAgIGlmIChwYXJ0RWxlbWVudFFOYW1lLmVxdWFscyhuZXh0UGFydC5nZXRFbGVtZW50TmFtZSgpKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBtYXRjaGluZyBwYXJ0IGZvdW5kIChkb2MtbGl0KSAtIGFkZCB0byBsaXN0IG9mIHBvc3NpYmxlIG9wZXJhdGlvbiBtYXRjaGVzCi0gICAgICAgICAgICBwb3RlbnRpYWxPcHMuYWRkKHdzZGxPcGVyYXRpb25zW2ldKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKEJpbmRpbmdPcGVyYXRpb25bXSkgcG90ZW50aWFsT3BzLnRvQXJyYXkobmV3IEJpbmRpbmdPcGVyYXRpb25bMF0pOwotICB9Ci0KLSAgcHJpdmF0ZSBCaW5kaW5nT3BlcmF0aW9uW10gZ2V0T3V0cHV0RG9jTGl0T3BlcmF0aW9ucygKLSAgICBRTmFtZSBwYXJ0RWxlbWVudFFOYW1lLAotICAgIEJpbmRpbmdPcGVyYXRpb25bXSB3c2RsT3BlcmF0aW9ucykKLSAgewotCi0gICAgVmVjdG9yIHBvdGVudGlhbE9wcyA9IG5ldyBWZWN0b3IoKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd3NkbE9wZXJhdGlvbnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgaWYgKHdzZGxPcGVyYXRpb25zW2ldLmdldE9wZXJhdGlvbigpLmdldE91dHB1dCgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIE1lc3NhZ2UgbWVzc2FnZSA9IHdzZGxPcGVyYXRpb25zW2ldLmdldE9wZXJhdGlvbigpLmdldE91dHB1dCgpLmdldE1lc3NhZ2UoKTsKLSAgICAgICAgLy8gSWYgU09BUCBCb2R5IGNoaWxkIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgYW5kIHdzZGw6bWVzc2FnZSBkb2VzIG5vdCBoYXZlIGFueSB3c2RsOnBhcnRzLCB0aGF0IGlzIHRoZSBtYXRjaAotICAgICAgICBpZiAocGFydEVsZW1lbnRRTmFtZSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKG1lc3NhZ2UuZ2V0UGFydHMoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBwb3RlbnRpYWxPcHMuYWRkKHdzZGxPcGVyYXRpb25zW2ldKTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIEl0ZXJhdG9yIHBhcnRzSXQgPSBtZXNzYWdlLmdldFBhcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKHBhcnRzSXQuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgUGFydCBuZXh0UGFydCA9IChQYXJ0KSBwYXJ0c0l0Lm5leHQoKTsKLSAgICAgICAgICBpZiAocGFydEVsZW1lbnRRTmFtZS5lcXVhbHMobmV4dFBhcnQuZ2V0RWxlbWVudE5hbWUoKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gbWF0Y2hpbmcgcGFydCBmb3VuZCAoZG9jLWxpdCkgLSBhZGQgdG8gbGlzdCBvZiBwb3NzaWJsZSBvcGVyYXRpb24gbWF0Y2hlcwotICAgICAgICAgICAgcG90ZW50aWFsT3BzLmFkZCh3c2RsT3BlcmF0aW9uc1tpXSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChCaW5kaW5nT3BlcmF0aW9uW10pIHBvdGVudGlhbE9wcy50b0FycmF5KG5ldyBCaW5kaW5nT3BlcmF0aW9uWzBdKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb21wYXJlIHNvYXAgbWVzc2FnZSBlbGVtZW50IHBhcnQgbmFtZXMgd2l0aCBQYXJ0cyBmcm9tIHNwZWNpZmllZCB3c2RsIE9wZXJhdGlvbgotICAgKi8KLSAgLy9wcml2YXRlIGJvb2xlYW4gc2FtZVBhcnRzKEhhc2hTZXQgbWVzc2FnZVBhcnRzLCBNYXAgd3NkbFBhcnRzKQotICAvL3sKLSAgLy8KLSAgLy8gIC8vIGxvb2sgZm9yIHRoZSBzb2FwLW1lc3NhZ2Ugb3BlcmF0aW9uIHNpZ25hdHVyZQotICAvLyAgSXRlcmF0b3IgaSA9IHdzZGxQYXJ0cy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAvLyAgLy8gYnVpbGQgYSBzZXQgb2YgUGFydCBuYW1lcwotICAvLyAgSGFzaFNldCBoID0gbmV3IEhhc2hTZXQoKTsKLSAgLy8gIHdoaWxlIChpLmhhc05leHQoKSkKLSAgLy8gIHsKLSAgLy8gICAgUGFydCBwID0gKFBhcnQpIGkubmV4dCgpOwotICAvLyAgICBoLmFkZChwLmdldE5hbWUoKSk7Ci0gIC8vICB9Ci0gIC8vCi0gIC8vICAvLyBjb21wYXJlIHdpdGggdGhlIHBhcnRzIGxpc3QgZnJvbSB0aGUgbWVzc2FnZQkodW5vcmRlcmVkKQotICAvLyAgcmV0dXJuIChoLmVxdWFscyhtZXNzYWdlUGFydHMpKTsKLSAgLy99Ci0KLSAgLyoqCi0gICAqIENvbXBhcmUgc29hcCBtZXNzYWdlIGVsZW1lbnQgcGFydCBuYW1lcyB3aXRoIFBhcnRzIGZyb20gc3BlY2lmaWVkIHdzZGwgT3BlcmF0aW9uCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gc2FtZVBhcnRzKAotICAgIE1hcCBtZXNzYWdlUGFydHMsCi0gICAgTWVzc2FnZSB3c2RsTWVzc2FnZSwKLSAgICBTT0FQSGVhZGVyIHNvYXBIZWFkZXIpCi0gIHsKLQotICAgIFN0cmluZyBzb2FwSGVhZGVyUGFydCA9IG51bGw7Ci0gICAgaWYgKHNvYXBIZWFkZXIgIT0gbnVsbCkKLSAgICAgIHNvYXBIZWFkZXJQYXJ0ID0gc29hcEhlYWRlci5nZXRQYXJ0KCk7Ci0KLSAgICAvLyBjaGVjayBudWxsIGNvbmRpdGlvbnMKLSAgICBpZiAobWVzc2FnZVBhcnRzID09IG51bGwgJiYgd3NkbE1lc3NhZ2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gdHJ1ZTsgLy8gc2ltcGxlIGVxdWFsaXR5IHRlc3QKLSAgICB9Ci0gICAgZWxzZSBpZiAobWVzc2FnZVBhcnRzID09IG51bGwgfHwgd3NkbE1lc3NhZ2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgVmVjdG9yIHYgPSBuZXcgVmVjdG9yKCk7Ci0gICAgLy9MaXN0IHdzZGxQYXJ0cyA9IHdzZGxNZXNzYWdlLmdldE9yZGVyZWRQYXJ0cyhudWxsKTsKLSAgICBNYXAgd3NkbFBhcnRzID0gbnVsbDsKLSAgICBpZiAod3NkbE1lc3NhZ2UuZ2V0UGFydHMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIHdzZGxQYXJ0cyA9IHdzZGxNZXNzYWdlLmdldFBhcnRzKCk7Ci0gICAgICAvLyBsb29rIGZvciB0aGUgc29hcC1tZXNzYWdlIG9wZXJhdGlvbiBzaWduYXR1cmUKLSAgICAgIEl0ZXJhdG9yIGkgPSB3c2RsUGFydHMudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgIC8vIGJ1aWxkIGEgc2V0IG9mIFBhcnQgbmFtZXMgICAgCi0gICAgICB3aGlsZSAoaS5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFBhcnQgcCA9IChQYXJ0KSBpLm5leHQoKTsKLSAgICAgICAgLy8gZG8gbm90IGluY2x1ZGUgdGhlIHBhcnQgZm9yIHRoZSBzb2FwOmhlYWRlciAoaWYgYW55KQotICAgICAgICBpZiAoIXAuZ2V0TmFtZSgpLmVxdWFscyhzb2FwSGVhZGVyUGFydCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBjaGVjayB0aGF0IHRoZSBwYXJ0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc29hcDpib2R5Ci0gICAgICAgICAgdi5hZGQobmV3IFFOYW1lKHAuZ2V0TmFtZSgpKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vIGlmIG9uZSBvZiB0aGUgcGFydHMgaXMgYXNzb2NpYXRlZCB3aXRoIGEgc29hcDpoZWFkZXIgaW4gdGhlIGJpbmRpbmcKLSAgICAgIC8vIChieSA8c29hcDpoZWFkZXIgcGFydD0ie3BhcnRuYW1lfSI+KSwgcmVtb3ZlIHRoaXMgZnJvbSB0aGUgc2V0Ci0KLSAgICB9Ci0KLSAgICAvLyBjb21wYXJlIHdpdGggdGhlIHBhcnRzIGxpc3QgZnJvbSB0aGUgbWVzc2FnZQkob3JkZXJlZCkKLSAgICBpZiAodi5pc0VtcHR5KCkgJiYgbWVzc2FnZVBhcnRzLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBQQjogQ2hhbmdlZCB0byBjb250YWluc0FsbCgpIHNpbmNlIGVxdWFscygpIGZhaWxzIHdoZW4gdXNpbmcgSlJFIDEuNAotICAgIGlmICh2LmNvbnRhaW5zQWxsKG1lc3NhZ2VQYXJ0cy5rZXlTZXQoKSkKLSAgICAgICYmICh2LnNpemUoKSA9PSBtZXNzYWdlUGFydHMuc2l6ZSgpKSkKLSAgICB7Ci0gICAgICAvLyBDaGVjayBmb3IgeHNpOnR5cGUgbWlzbWF0Y2gKLSAgICAgIEl0ZXJhdG9yIHBhcnRzID0gbWVzc2FnZVBhcnRzLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgICBRTmFtZSBwYXJ0TmFtZSwgeHNpVHlwZTsKLSAgICAgIHdoaWxlIChwYXJ0cy5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHBhcnROYW1lID0gKFFOYW1lKSBwYXJ0cy5uZXh0KCk7Ci0KLSAgICAgICAgLy8gR2V0IHhzaTp0eXBlIFFOYW1lCi0gICAgICAgIGlmICgoeHNpVHlwZSA9IChRTmFtZSkgbWVzc2FnZVBhcnRzLmdldChwYXJ0TmFtZSkpICE9IG51bGwKLSAgICAgICAgICAmJiB3c2RsUGFydHMgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldCB0aGUgV1NETCBwYXJ0IGRlZmluaXRpb24KLSAgICAgICAgICBQYXJ0IHBhcnQgPSAoUGFydCkgd3NkbFBhcnRzLmdldChwYXJ0TmFtZS5nZXRMb2NhbFBhcnQoKSk7Ci0KLSAgICAgICAgICAvLyBJZiB4c2lUeXBlIGlzIE5PVCBkZXJpdmVkIGZyb20gdGhlIHR5cGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBwYXJ0Ci0gICAgICAgICAgaWYgKCFpc0Rlcml2ZWRUeXBlKHhzaVR5cGUsIHBhcnQuZ2V0VHlwZU5hbWUoKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gcmV0dXJuIGZhbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy9yZXR1cm4gKHYuZXF1YWxzKG1lc3NhZ2VQYXJ0cykpOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyB3aGV0aGVyIG9uZSBzY2hlbWEgdHlwZSBpcyBkZXJpdmVkIGZyb20gYW5vdGhlci4KLSAgICogQHBhcmFtIGV4dFR5cGUgYW4gYXNzdW1lZCBkZXJpdmVkIHR5cGUuCi0gICAqIEBwYXJhbSB0eXBlIGFuIGFzc3VtZWQgYmFzZSB0eXBlLgotICAgKiBAcmV0dXJuIHRydWUgaWYgZXh0VHlwZSBpcyBkZXJpdmVkIGZyb20gdHlwZSwgZmFsc2Ugb3RoZXJ3aXNlCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0Rlcml2ZWRUeXBlKFFOYW1lIGV4dFR5cGUsIFFOYW1lIHR5cGUpCi0gIHsKLSAgICAvLyBJZiBlaXRoZXIgb2YgdHlwZXMgaXMgbnVsbCwgcmV0dXJuIGZhbHNlCi0gICAgaWYgKGV4dFR5cGUgPT0gbnVsbCB8fCB0eXBlID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gSWYgdGhlIHR5cGVzIGFyZSBlcXVhbCwgcmV0dXJuIHRydWUKLSAgICBpZiAoZXh0VHlwZS5lcXVhbHModHlwZSkpCi0gICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHNjaGVtYXMgCi0gICAgSXRlcmF0b3IgaSA9IHdzZGxEb2N1bWVudC5nZXRTY2hlbWFzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaS5oYXNOZXh0KCkpCi0gICAgewotICAgICAgWFNNb2RlbCB4c01vZGVsID0gKFhTTW9kZWwpIGkubmV4dCgpOwotICAgICAgLy8gUmV0cmlldmluZyB0aGUgZGVyaXZlZCB0eXBlIGRlZmluaXRpb24KLSAgICAgIFhTVHlwZURlZmluaXRpb24geHNUeXBlID0geHNNb2RlbC5nZXRUeXBlRGVmaW5pdGlvbigKLSAgICAgICAgZXh0VHlwZS5nZXRMb2NhbFBhcnQoKSwgZXh0VHlwZS5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgICAvLyBJZiBpdCBpcyBmb3VuZCBhbmQgZGVyaXZlZCBmcm9tIHRoZSBiYXNlIHR5cGUsIHJldHVybiB0cnVlCi0gICAgICBpZiAoeHNUeXBlICE9IG51bGwgJiYgeHNUeXBlLmRlcml2ZWRGcm9tKHR5cGUuZ2V0TmFtZXNwYWNlVVJJKCksCi0gICAgICAgIHR5cGUuZ2V0TG9jYWxQYXJ0KCksIFhTQ29uc3RhbnRzLkRFUklWQVRJT05fTk9ORSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICAvLyBleHRUeXBlIGlzIG5vdCBkZXJpdmVkIGZyb20gdHlwZSwgcmV0dXJuIGZhbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gIAkqIEdldCBhIGxpc3Qgb2YgUU5hbWVzIG9mIHBhcnRzIGZyb20gdGhlIHNvYXAgYm9keSBvZiB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UKLSAgCSovCi0gIHB1YmxpYyBFbGVtZW50IGdldFNvYXBCb2R5Q2hpbGQoRG9jdW1lbnQgZG9jKQotICB7Ci0KLSAgICBFbGVtZW50IG9wRWxlbSA9IG51bGw7Ci0gICAgaWYgKGRvYyAhPSBudWxsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgcm9vdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIE5vZGVMaXN0IGJvZGllcyA9Ci0gICAgICAgIHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsICJCb2R5Iik7Ci0gICAgICAvLyBHZXQgdGhlIGxpc3Qgb2Ygc29hcDpib2R5IGNoaWxkIGVsZW1lbnQgbmFtZXMgZnJvbSB0aGUgcmVxdWVzdCBtZXNzYWdlCi0gICAgICBpZiAoYm9kaWVzICE9IG51bGwgJiYgYm9kaWVzLmdldExlbmd0aCgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgRWxlbWVudCBib2R5ID0gKEVsZW1lbnQpIGJvZGllcy5pdGVtKDApOwotICAgICAgICBOb2RlTGlzdCBjaGlsZHJlbiA9IGJvZHkuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLmdldExlbmd0aCgpICYmIG9wRWxlbSA9PSBudWxsOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICBOb2RlIG4gPSBjaGlsZHJlbi5pdGVtKGkpOwotICAgICAgICAgIGlmIChuIGluc3RhbmNlb2YgRWxlbWVudCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBvcEVsZW0gPSAoRWxlbWVudCkgbjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG9wRWxlbTsKLSAgfQotCi0gIC8qKiBDaGVjayB3aGV0aGVyIHRoaXMgbWVzc2FnZSBpcyBhIHNvYXAgZmF1bHQKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzRmF1bHQoRG9jdW1lbnQgZG9jKQotICB7Ci0gICAgYm9vbGVhbiBpc0ZhdWx0ID0gZmFsc2U7Ci0KLSAgICBpZiAoZG9jICE9IG51bGwpCi0gICAgewotICAgICAgRWxlbWVudCByb290ID0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpOwotICAgICAgaXNGYXVsdCA9Ci0gICAgICAgIChyb290Ci0gICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQLCAiRmF1bHQiKQotICAgICAgICAgIC5nZXRMZW5ndGgoKQotICAgICAgICAgID4gMCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlzRmF1bHQ7Ci0gIH0KLQotICAvKiogCi0gICAqIENoZWNrIHdoZXRoZXIgdGhpcyBtZXNzYWdlIGhhcyBhIHNvYXAgYm9keSB3aXRoIGEgY2hpbGQgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zU29hcEJvZHlXaXRoQ2hpbGQoRG9jdW1lbnQgZG9jKQotICB7Ci0gICAgYm9vbGVhbiBjb250YWlucyA9IGZhbHNlOwotCi0gICAgaWYgKGRvYyAhPSBudWxsKQotICAgIHsKLSAgICAgIGNvbnRhaW5zID0gKChnZXRTb2FwQm9keUNoaWxkKGRvYykgPT0gbnVsbCkgPyBmYWxzZSA6IHRydWUpOwotICAgIH0KLQotICAgIHJldHVybiBjb250YWluczsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgU09BUEFjdGlvbiB2YWx1ZSBmcm9tIHRoZSBIVFRQIGhlYWRlcnMuCi0gICAqIEBwYXJhbSBoZWFkZXJzIEhUVFAgaGVhZGVycwotICAgKiBAcmV0dXJuIFNPQVBBY3Rpb24gdmFsdWUKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U29hcEFjdGlvbihTdHJpbmcgaGVhZGVycykgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gZ2V0IFNPQVBBY3Rpb24KLSAgICBTdHJpbmcgYWN0aW9uID0gbnVsbDsKLSAgICBpZiAoaGVhZGVycyAhPSBudWxsKQotICAgICAgYWN0aW9uID0gKFN0cmluZykgSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoaGVhZGVycywgIjoiKS5nZXQoIlNPQVBBY3Rpb24iLnRvVXBwZXJDYXNlKCkpOwotICAgIHJldHVybiBhY3Rpb247Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGEgbGlzdCBvZiBRTmFtZXMgb2YgcGFydHMgZnJvbSB0aGUgc29hcCBib2R5IG9mIHRoZSBzcGVjaWZpZWQgbWVzc2FnZS4KLSAgICogVGhpcyBtZXRob2QgYXNzdW1lcyBSUEMgc3R5bGUgbWVzc2FnZSBjb250ZW50Ci0gICAqLwotICBwcml2YXRlIFFOYW1lIGdldE9wZXJhdGlvbkZyb21NZXNzYWdlKERvY3VtZW50IGRvYykKLSAgewotICAgIFFOYW1lIG9wZXJhdGlvbiA9IG51bGw7Ci0gICAgaWYgKGRvYyAhPSBudWxsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgcm9vdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIE5vZGVMaXN0IGJvZGllcyA9Ci0gICAgICAgIHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsICJCb2R5Iik7Ci0gICAgICBpZiAoYm9kaWVzICE9IG51bGwgJiYgYm9kaWVzLmdldExlbmd0aCgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgRWxlbWVudCBib2R5ID0gKEVsZW1lbnQpIGJvZGllcy5pdGVtKDApOwotICAgICAgICBOb2RlTGlzdCBjaGlsZHJlbiA9IGJvZHkuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLmdldExlbmd0aCgpOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICBOb2RlIG4gPSBjaGlsZHJlbi5pdGVtKGkpOwotICAgICAgICAgIC8vIElmIGVsZW1lbnQsIHRoZW4gdGhpcyBpcyB0aGUgb3BlcmF0aW9uIG5hbWUKLSAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIEVsZW1lbnQpCi0gICAgICAgICAgewotICAgICAgICAgICAgb3BlcmF0aW9uID0gbmV3IFFOYW1lKG4uZ2V0TmFtZXNwYWNlVVJJKCksIG4uZ2V0TG9jYWxOYW1lKCkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBvcGVyYXRpb247Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGEgbGlzdCBvZiBRTmFtZXMgb2YgcGFydHMgZnJvbSB0aGUgc29hcCBib2R5IG9mIHRoZSBzcGVjaWZpZWQgbWVzc2FnZS4KLSAgICogVGhpcyBtZXRob2QgYXNzdW1lcyBSUEMgc3R5bGUgbWVzc2FnZSBjb250ZW50Ci0gICAqLwotICBwcml2YXRlIE1hcCBnZXRQYXJ0TGlzdEZyb21NZXNzYWdlKERvY3VtZW50IGRvYykKLSAgewotICAgIE1hcCBwYXJ0cyA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgaWYgKGRvYyAhPSBudWxsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgcm9vdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIE5vZGVMaXN0IGJvZGllcyA9Ci0gICAgICAgIHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsICJCb2R5Iik7Ci0gICAgICAvLyBHZXQgdGhlIGxpc3Qgb2Ygc29hcDpib2R5IGdyYW5kLWNoaWxkIGVsZW1lbnQgbmFtZXMgZnJvbSB0aGUgcmVxdWVzdCBtZXNzYWdlCi0gICAgICAvLyAoaW1tZWRpYXRlIGNoaWxkIGlzIHRoZSBtZXNzYWdlIG5hbWUpCi0gICAgICBpZiAoYm9kaWVzICE9IG51bGwgJiYgYm9kaWVzLmdldExlbmd0aCgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgRWxlbWVudCBib2R5ID0gKEVsZW1lbnQpIGJvZGllcy5pdGVtKDApOwotICAgICAgICBOb2RlTGlzdCBjaGlsZHJlbiA9IGJvZHkuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLmdldExlbmd0aCgpOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICBOb2RlIG4gPSBjaGlsZHJlbi5pdGVtKGkpOwotICAgICAgICAgIGlmIChuIGluc3RhbmNlb2YgRWxlbWVudCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBvcGVyYXRpb24gbmFtZS4gSXRzIGNoaWxkcmVuIGFyZSB0aGUgcGFydHMKLSAgICAgICAgICAgIE5vZGVMaXN0IGdyYW5kQ2hpbGRyZW4gPSBuLmdldENoaWxkTm9kZXMoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZ3JhbmRDaGlsZHJlbi5nZXRMZW5ndGgoKTsgaisrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBOb2RlIG0gPSBncmFuZENoaWxkcmVuLml0ZW0oaik7Ci0gICAgICAgICAgICAgIGlmIChtIGluc3RhbmNlb2YgRWxlbWVudCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgcGFydCBoYXMgYW4geHNpOnR5cGUKLSAgICAgICAgICAgICAgICBBdHRyIGF0dHIgPQotICAgICAgICAgICAgICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlKAotICAgICAgICAgICAgICAgICAgICAoRWxlbWVudCkgbSwKLSAgICAgICAgICAgICAgICAgICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfWFNJLCAidHlwZSIpKTsKLQotICAgICAgICAgICAgICAgIFFOYW1lIHhzaVR5cGUgPSBudWxsOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW4geHNpOnR5cGUgYXR0cmlidXRlLCB0aGVuIGdldCB0aGUgdmFsdWUgYXMgYSBRTmFtZSAKLSAgICAgICAgICAgICAgICB0cnkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpZiAoYXR0ciAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICB4c2lUeXBlID0KLSAgICAgICAgICAgICAgICAgICAgICBET01VdGlscy5nZXRRTmFtZShhdHRyLmdldE5vZGVWYWx1ZSgpLCAoRWxlbWVudCkgbSwgd3NkbERvY3VtZW50LmdldERlZmluaXRpb25zKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXRjaCAoamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uIHdlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBhZGQgdG8gdGhlIGNoaWxkIGVsZW1lbnQgbGlzdAotICAgICAgICAgICAgICAgIHBhcnRzLnB1dCgKLSAgICAgICAgICAgICAgICAgIG5ldyBRTmFtZShtLmdldE5hbWVzcGFjZVVSSSgpLCBtLmdldExvY2FsTmFtZSgpKSwKLSAgICAgICAgICAgICAgICAgIHhzaVR5cGUpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBwYXJ0czsKLSAgfQotCi0gIHB1YmxpYyBCaW5kaW5nT3BlcmF0aW9uW10gZ2V0TWF0Y2hpbmdCaW5kaW5nT3BzKAotICAgIFN0cmluZyBiaW5kaW5nU3R5bGUsCi0gICAgQmluZGluZ1tdIGJpbmRpbmdzKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgSGFzaFNldCBiaW5kaW5nT3BlcmF0aW9uc1NldCA9IG5ldyBIYXNoU2V0KCk7Ci0KLSAgICAvLyB3aGl6eiB0aHJvdWdoIHRoZSBiaW5kaW5ncywgY2hlY2tpbmcgZm9yIGEgYmluZGluZ09wZXJhdGlvbiBtYXRjaGluZyB0aGUgbWVzc2FnZQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYmluZGluZ3MubGVuZ3RoOyBpKyspCi0gICAgewotCi0gICAgICBCaW5kaW5nIHRyeUJpbmRpbmcgPSBiaW5kaW5nc1tpXTsKLSAgICAgIExpc3QgYmluZGluZ09wcyA9IHRyeUJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbnMoKTsKLQotICAgICAgaWYgKGJpbmRpbmdPcHMgIT0gbnVsbCkKLSAgICAgIHsKLQotICAgICAgICAvLyBzZWFyY2ggdGhyb3VnaCBiaW5kaW5nIE9wZXJhdGlvbnMKLSAgICAgICAgSXRlcmF0b3IgYmluZGluZ09wSXQgPSB0cnlCaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKGJpbmRpbmdPcEl0Lmhhc05leHQoKSkKLSAgICAgICAgewotCi0gICAgICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3AgPSAoQmluZGluZ09wZXJhdGlvbikgYmluZGluZ09wSXQubmV4dCgpOwotICAgICAgICAgIC8vIGNoZWNrIGRlcGVuZHMgb24gd2hpY2ggYmluZGluZyBzdHlsZSBpcyBkZWNsYXJlZCBpbiB0aGUgd3NkbAotICAgICAgICAgIFNPQVBPcGVyYXRpb24gc29hcE9wID0gV1NETFZhbGlkYXRvckltcGwuZ2V0U29hcE9wZXJhdGlvbihiaW5kaW5nT3ApOwotICAgICAgICAgIC8vR1Q6IG1vdmUgdGhpcyBtZXRob2QgdG8gdXRpbHMKLQotICAgICAgICAgIFN0cmluZyBzdHlsZTsKLSAgICAgICAgICBpZiAoKHNvYXBPcCA9PSBudWxsKSB8fCAoc3R5bGUgPSBzb2FwT3AuZ2V0U3R5bGUoKSkgPT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyB1c2UgdGhlIHN0eWxlIG9mIHRoZSBwYXJlbnQgYmluZGluZ09wCi0KLSAgICAgICAgICAgIFNPQVBCaW5kaW5nIHNvYXBCaW5kID0gV1NETFZhbGlkYXRvckltcGwuZ2V0U29hcEJpbmRpbmcodHJ5QmluZGluZyk7Ci0gICAgICAgICAgICAvL0dUOiBtb3ZlIHRoaXMgbWV0aG9kIHRvIHV0aWxzCi0gICAgICAgICAgICBpZiAoKHN0eWxlID0gc29hcEJpbmQuZ2V0U3R5bGUoKSkgPT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgc3R5bGUgPSBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DOwotICAgICAgICAgICAgICAvL2RlZmF1bHQKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHN0eWxlLmVxdWFscyhiaW5kaW5nU3R5bGUpKQotICAgICAgICAgIHsKLQotICAgICAgICAgICAgYmluZGluZ09wZXJhdGlvbnNTZXQuYWRkKGJpbmRpbmdPcCk7Ci0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0gLy8gY3VycmVudCBiaW5kaW5nIGhhcyBubyBiaW5kaW5nT3BlcmF0aW9ucywgaWdub3JlCi0gICAgfQotICAgIHJldHVybiAoQmluZGluZ09wZXJhdGlvbltdKSBiaW5kaW5nT3BlcmF0aW9uc1NldC50b0FycmF5KAotICAgICAgbmV3IEJpbmRpbmdPcGVyYXRpb25bMF0pOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyB3aGV0aGVyIHNvYXA6Ym9keSBlbGVtZW50IGlzIGxpdGVyYWwuCi0gICAqIEBwYXJhbSBleHRFbGVtZW50cyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIG9mIHdzZGw6aW5wdXQgb3Igd3NkbDpvdXRwdXQKLSAgICogb2YgYSBiaW5kaW5nCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0xpdGVyYWwoTGlzdCBleHRFbGVtcykKLSAgewotICAgIFNPQVBCb2R5IHNvYXBCb2R5ID0gZ2V0U09BUEJvZHkoZXh0RWxlbXMpOwotICAgIGlmIChzb2FwQm9keSAhPSBudWxsCi0gICAgICAmJiBzb2FwQm9keS5nZXRVc2UoKS5lcXVhbHMoV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CT0RZX1VTRV9MSVQpKQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIE9yZGVycyB3c2RsOnBhcnQgbmFtZXMga2VlcGluZyBpbiBtaW5kIHRoZSAicGFydHMiIGF0dHJpYnV0ZSBvZiBXU0RMIHNvYXA6Ym9keQotICAgKiBAcGFyYW0gbWVzc2FnZVBhcnRzIGEgbGlzdCBvZiB3c2RsOnBhcnRTCi0gICAqIEBwYXJhbSBleHRFbGVtcyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIGluIHRoZSBiaW5kaW5nCi0gICAqIEByZXR1cm4gdGhlIG9yZGVyZWQgbGlzdCBvZiBwYXJ0IG5hbWVzCi0gICAqLwotICBwdWJsaWMgTGlzdCBvcmRlclBhcnROYW1lcyhMaXN0IG1lc3NhZ2VQYXJ0cywgTGlzdCBleHRFbGVtcykKLSAgewotICAgIExpc3Qgb3JkZXJlZFBhcnROYW1lcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBMaXN0IGJvZHlQYXJ0cyA9IG51bGw7Ci0KLSAgICBTT0FQQm9keSBzb2FwQm9keSA9IGdldFNPQVBCb2R5KGV4dEVsZW1zKTsKLSAgICBpZiAoc29hcEJvZHkgIT0gbnVsbCkKLSAgICAgIGJvZHlQYXJ0cyA9IHNvYXBCb2R5LmdldFBhcnRzKCk7Ci0KLSAgICBJdGVyYXRvciBpID0gbWVzc2FnZVBhcnRzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGkuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIFN0cmluZyBwYXJ0TmFtZSA9ICgoUGFydCkgaS5uZXh0KCkpLmdldE5hbWUoKTsKLSAgICAgIC8vIElmIHRoZSBwYXJ0cyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBvciBjb250YWlucwotICAgICAgLy8gdGhlIHdzZGw6cGFydCBuYW1lLCB0aGVuIGFkZGluZyBwYXJ0IG5hbWUgdG8gdGhlIG9yZGVyZWQgbGlzdAotICAgICAgaWYgKGJvZHlQYXJ0cyA9PSBudWxsIHx8IGJvZHlQYXJ0cy5jb250YWlucyhwYXJ0TmFtZSkpCi0gICAgICAgIG9yZGVyZWRQYXJ0TmFtZXMuYWRkKHBhcnROYW1lKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gb3JkZXJlZFBhcnROYW1lczsKLSAgfQotCi0gIC8qKgotICAgKiBSZXRyaWV2ZXMgdGhlIFNPQVBCb2R5IG9iamVjdCBmcm9tIGEgbGlzdCBvZiBleHRlbnNpYmlsaXR5IGVsbWVudHMgaW4gYmluZGluZwotICAgKiBAcGFyYW0gZXh0RWxlbXMgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cwotICAgKiBAcmV0dXJuIHRoZSBTT0FQQm9keSBlbGVtZW50Ci0gICAqLwotICBwdWJsaWMgU09BUEJvZHkgZ2V0U09BUEJvZHkoTGlzdCBleHRFbGVtcykKLSAgewotICAgIGlmIChleHRFbGVtcyA9PSBudWxsKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgZm9yIChJdGVyYXRvciBpID0gZXh0RWxlbXMuaXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KQotICAgIHsKLSAgICAgIE9iamVjdCBvYmogPSBpLm5leHQoKTsKLSAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBTT0FQQm9keSkKLSAgICAgICAgcmV0dXJuIChTT0FQQm9keSkgb2JqOwotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotICB9Ci0gCi0gIHB1YmxpYyBMaXN0IHJlc29sdmVTYW1lTmFtZXNwYWNlcyhMaXN0IHNjaGVtYUVsZW1lbnRzKQotICB7Ci0gIAlMaXN0IG5hbWVzcGFjZXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIAlMaXN0IHJlc3VsdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgCUl0ZXJhdG9yIGkgPSBzY2hlbWFFbGVtZW50cy5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBFbGVtZW50IHNjaGVtYSA9IChFbGVtZW50KSBpLm5leHQoKTsKLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSBzY2hlbWEuZ2V0QXR0cmlidXRlKENvbnN0YW50cy5BVFRSX1RBUkdFVF9OQU1FU1BBQ0UpOwotICAgICAgaWYgKCFuYW1lc3BhY2VzLmNvbnRhaW5zKHRhcmdldE5hbWVzcGFjZSkpCi0gICAgICB7Ci0gICAgICAgIG5hbWVzcGFjZXMuYWRkKHRhcmdldE5hbWVzcGFjZSk7Ci0gICAgCUxpc3Qgc2NoZW1hcyA9IGdldFNjaGVtYXNXaXRoU2FtZU5hbWVzcGFjZShzY2hlbWFFbGVtZW50cywgdGFyZ2V0TmFtZXNwYWNlKTsKLSAgICAJaWYgKHNjaGVtYXMuc2l6ZSgpID09IDEpCi0gICAgICAJewotICAgICAgCSAgcmVzdWx0LmFkZChzY2hlbWEpOwotICAgICAgCX0KLSAgICAJZWxzZQotICAgIAl7Ci0gICAgCQkvLyBjb3B5aW5nIGFsbCB0aGUgTlMgZGVjbGFyYXRpb25zIGZyb20gd3NkbDpkZWZpbml0aW9ucyB3c2RsOnR5cGVzCi0gICAgICAvL2NvcHlOU0RlY2xhcmF0aW9ucyhyb290LCBzY2hlbWEpOwotICAgICAgY29weU5TRGVjbGFyYXRpb25zKChFbGVtZW50KSBzY2hlbWEuZ2V0UGFyZW50Tm9kZSgpLCBzY2hlbWEpOwotICAgICAgLy8gUmVwbGFjaW5nIGFsbCByZWxhdGl2ZSBzY2hlbWFMb2NhdGlvbiBVUklzIHdpdGggYWJzb2x1dGUgb25lcwotICAgICAgLy9yZXBsYWNlUmVsYXRpdmVVUklzKHNjaGVtYSwgd3NkbFVSSSk7Ci0gICAgICAvLyBTZXJpYWxpemUgdGhlIHNjaGVtYSBlbGVtZW50cyBpbnNpZGUgdGhlIFR5cGVzLCB0aGVuIHVzZSB0aGlzIGFzCi0gICAgICAvLyB0aGUgc2NoZW1hIHN0cmluZyBmb3IgdGhlIHZhbGlkYXRpb24KLSAgICAgIC8vU3RyaW5nIHNjaGVtYVN0cmluZyA9Ci0gICAgICAvLyAgRE9NMldyaXRlci5ub2RlVG9TdHJpbmcoc2NoZW1hKTsKLSAgICAgIC8vIHNjaGVtYVN0cmluZ3MuYWRkKHNjaGVtYVN0cmluZyk7Ci0gICAgICAJfQotICAgICAgfQotICAgIH0KLSAgCXJldHVybiBudWxsOwotICB9Ci0gIAkKLSAgcHVibGljIExpc3QgZ2V0U2NoZW1hc1dpdGhTYW1lTmFtZXNwYWNlKExpc3Qgc2NoZW1hRWxlbWVudHMsIFN0cmluZyB0YXJnZXROYW1lc3BhY2UpCi0gIHsgCi0gIAlMaXN0IHJlc3VsdCA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBJdGVyYXRvciBpID0gc2NoZW1hRWxlbWVudHMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaS5oYXNOZXh0KCkpCi0gICAgewotICAgICAgRWxlbWVudCBzY2hlbWEgPSAoRWxlbWVudClpLm5leHQoKTsKLSAgICAgIFN0cmluZyBzY2hlbWFUYXJnZXROYW1lc3BhY2UgPSBzY2hlbWEuZ2V0QXR0cmlidXRlKENvbnN0YW50cy5BVFRSX1RBUkdFVF9OQU1FU1BBQ0UpOwotICAgICAgaWYgKHNjaGVtYVRhcmdldE5hbWVzcGFjZSA9PSBudWxsKQotICAgICAgIAlzY2hlbWFUYXJnZXROYW1lc3BhY2UgPSAiIjsKLSAgICAgICAgCi0gICAgICBpZiAoc2NoZW1hVGFyZ2V0TmFtZXNwYWNlLmVxdWFscyh0YXJnZXROYW1lc3BhY2UpKQotICAgICAgewotICAgICAgIAlyZXN1bHQuYWRkKHNjaGVtYSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBkdXBsaWNhdGVOYW1lc3BhY2VzRGV0ZWN0ZWQoTGlzdCBzY2hlbWFFbGVtZW50cykKLSAgeyAKLSAgCWJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0gICAgTGlzdCBuYW1lc3BhY2VzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIEl0ZXJhdG9yIGkgPSBzY2hlbWFFbGVtZW50cy5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpLmhhc05leHQoKSkKLSAgICB7Ci0gICAgCUVsZW1lbnQgc2NoZW1hID0gKEVsZW1lbnQpaS5uZXh0KCk7Ci0gICAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSBzY2hlbWEuZ2V0QXR0cmlidXRlKENvbnN0YW50cy5BVFRSX1RBUkdFVF9OQU1FU1BBQ0UpOwotICAgICAgICBpZiAodGFyZ2V0TmFtZXNwYWNlID09IG51bGwpCi0gICAgICAgIAl0YXJnZXROYW1lc3BhY2UgPSAiIjsKLSAgICAgICAgCi0gICAgICAgIGlmIChuYW1lc3BhY2VzLmNvbnRhaW5zKHRhcmdldE5hbWVzcGFjZSkpCi0gICAgICAgIHsKLSAgICAgICAgCXJlc3VsdCA9IHRydWU7Ci0gICAgICAgIAlicmVhazsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgCW5hbWVzcGFjZXMuYWRkKHRhcmdldE5hbWVzcGFjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biAoZGVwZW5kaW5nIG9uIHRoZSBhbmFseXplcgotICAgKiBjb25maWcpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBydW5UZXN0cygpIHsgcmV0dXJuIHRlc3RhYmxlOyB9Ci0gIAotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZUFydGlmYWN0KCkgdGhyb3dzIFdTSUV4Y2VwdGlvbiB7Ci0gICAgICAvLyBHZXQgdGhlIGxvZyBmaWxlIHJlYWRlcgotICAgICAgTG9nUmVhZGVyIGxvZ1JlYWRlciA9IERvY3VtZW50RmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld0xvZ1JlYWRlcigpOwotCi0gICAgICAvLyBDcmVhdGUgbG9nIHJlYWRlciBjYWxsYmFjawotICAgICAgTG9nUHJvY2Vzc29yIGVudmVsb3BlUHJvY2Vzc29yID0gbmV3IExvZ1Byb2Nlc3Nvcih0aGlzKTsKLQotICAgICAgLy8gU3RhcnQgcmVhZGluZyB0aGUgbG9nIGZpbGUKLSAgICAgIGxvZ1JlYWRlci5yZWFkTG9nKGFuYWx5emVyQ29uZmlnLmdldExvZ0xvY2F0aW9uKCksIGVudmVsb3BlUHJvY2Vzc29yKTsKLSAgfQotCi0gIHByb3RlY3RlZCBjbGFzcyBMb2dQcm9jZXNzb3IgaW1wbGVtZW50cyBNZXNzYWdlRW50cnlIYW5kbGVyIHsKLSAgICAgIExvZ1ZhbGlkYXRvciB2YWxpZGF0b3IgPSBudWxsOwotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlIG1lc3NhZ2UgcHJvY2Vzc29yIGFzIGEgbG9nIHJlYWRlciBjYWxsYmFjayBmdW5jdGlvbi4KLSAgICAgKi8KLSAgICAgIExvZ1Byb2Nlc3NvcihMb2dWYWxpZGF0b3IgdmFsaWRhdG9yKSB7Ci0gICAgICAgICAgdGhpcy52YWxpZGF0b3IgPSB2YWxpZGF0b3I7Ci0gICAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBQcm9jZXNzIGFydGlmYWN0IHJlZmVyZW5jZS4KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBwcm9jZXNzQXJ0aWZhY3RSZWZlcmVuY2UoQXJ0aWZhY3RSZWZlcmVuY2UgYXJ0aWZhY3RSZWZlcmVuY2UpCi0gICAgICAgICAgICB0aHJvd3MgV1NJRXhjZXB0aW9uIHsKLSAgICAgICAgcmVwb3J0ZXIuYWRkQXJ0aWZhY3RSZWZlcmVuY2UoYXJ0aWZhY3RSZWZlcmVuY2UpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFByb2Nlc3MgYSBzaW5nbGUgbG9nIGVudHJ5LgotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHByb2Nlc3NMb2dFbnRyeShFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KSB0aHJvd3MgV1NJRXhjZXB0aW9uIHsKLSAgICAgICAgdmFsaWRhdG9yLnZhbGlkYXRlKGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9CYXNlVmFsaWRhdG9ySW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9CYXNlVmFsaWRhdG9ySW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzJjZTM0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvQmFzZVZhbGlkYXRvckltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcwNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5UcmVlTWFwOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5BbmFseXplckNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFydGlmYWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkJhc2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW52ZWxvcGVWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5FbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkZhaWx1cmVEZXRhaWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5QcmVyZXFGYWlsZWRMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0QXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LmltcGwuUHJlcmVxRmFpbGVkTGlzdEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRW50cnlUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MRG9jdW1lbnRDYWNoZVVzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5kb20uRWxlbWVudExvY2F0aW9uOwotCi0vKioKLSAqIFRoZSBXU0RMIHZhbGlkYXRvciB3aWxsIHZlcmlmeSB0aGF0IHRoZSBXU0RMIGFuZCBhc3NvY2lhdGVkIFhNTCBzY2hlbWEgZGVmaW5pdGlvbnMKLSAqIGFyZSBpbiBjb25mb3JtYW5jZSB3aXRoIHRoZSBwcm9maWxlLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqIEBhdXRob3IgR3JhaGFtIFR1cnJlbGwgICAoZ3R1cnJlbGxAdWsuaWJtLmNvbSkKLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VWYWxpZGF0b3JJbXBsCi0gIGV4dGVuZHMgWE1MRG9jdW1lbnRDYWNoZVVzZXIKLSAgaW1wbGVtZW50cyBCYXNlVmFsaWRhdG9yCi17Ci0KLSAgLyoqCi0gICAqIEEgaGFzaHRhYmxlIHRoYXQgbWFwcyBhc3NlcnRpb24gcmVzdWx0cyB0byB0aGVpciBwcmlvcml0aWVzLCAwIGlzIGxvd2VzdAotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSGFzaHRhYmxlIHJlc3VsdFByaW9yaXR5ID0gbmV3IEhhc2h0YWJsZSg2KTsKLSAgc3RhdGljIHsKLSAgICByZXN1bHRQcmlvcml0eS5wdXQoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQsIG5ldyBJbnRlZ2VyKDApKTsKLSAgICByZXN1bHRQcmlvcml0eS5wdXQoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRSwgbmV3IEludGVnZXIoMSkpOwotICAgIHJlc3VsdFByaW9yaXR5LnB1dChBc3NlcnRpb25SZXN1bHQuUkVTVUxUX01JU1NJTkdfSU5QVVQsIG5ldyBJbnRlZ2VyKDIpKTsKLSAgICByZXN1bHRQcmlvcml0eS5wdXQoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HLCBuZXcgSW50ZWdlcigzKSk7Ci0gICAgcmVzdWx0UHJpb3JpdHkucHV0KEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUFJFUkVRX0ZBSUxFRCwgbmV3IEludGVnZXIoNCkpOwotICAgIHJlc3VsdFByaW9yaXR5LnB1dChBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRCwgbmV3IEludGVnZXIoNSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBoaWdoZXN0IHByaW9yaXR5IHZhbHVlIGJlaW5nIHBhc3NlZCB3aGVuIHByb2Nlc3NpbmcgcHJlLXJlcXVpc2l0ZXMKLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfVkFMSURfUFJJT1JJVFkgPSAxOwotCi0gIC8qKgotICAgKiBBbmFseXplciBjb250ZXh0LgotICAgKi8KLSAgcHVibGljIEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQ7Ci0KLSAgLyoqCi0gICAqIFByb2ZpbGUgYXJ0aWZhY3QuCi0gICAqLwotICBwcm90ZWN0ZWQgUHJvZmlsZUFydGlmYWN0IHByb2ZpbGVBcnRpZmFjdDsKLQotICAvKioKLSAgICogUmVwb3J0ZXIuCi0gICAqLwotICBwcm90ZWN0ZWQgUmVwb3J0ZXIgcmVwb3J0ZXI7Ci0KLSAgLyoqCi0gICAqIEVudHJ5LgotICAgKi8KLSAgLy8gcHJvdGVjdGVkIEVudHJ5IGVudHJ5OwotCi0gIC8qKgotICAgKiBSZXBvcnQgYXJ0aWZhY3QuCi0gICAqLwotICBwcm90ZWN0ZWQgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3Q7Ci0KLSAgLyoqCi0gICAqIFZlcmJvc2Ugb3B0aW9uLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gdmVyYm9zZU9wdGlvbiA9IGZhbHNlOwotCi0gIC8qKgotICAgKiBUZXN0IGFzc2VydGlvbiBwcm9jZXNzZWQgY291bnQuCi0gICAqLwotICBwcm90ZWN0ZWQgaW50IGFzc2VydGlvbkNvdW50ID0gMDsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgQmFzZVZhbGlkYXRvckltcGwoKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogSW5pdGlhaWxpemUgdmFsaWRhdGlvbiB0ZXN0IHByb2NlZHVyZS4KLSAgICogQHBhcmFtIGFuYWx5emVyQ29udGV4dCB0aGUgYW5hbHl6ZXJDb250ZXh0LgotICAgKiBAcGFyYW0gcHJvZmlsZUFydGlmYWN0IHRoZSBwcm9maWxlIGFydGlmaWFjdC4KLSAgICogQHBhcmFtIHJlcG9ydEFydGlmYWN0ICB0aGUgcmVwb3J0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gcmVwb3J0ZXIgICAgICAgIGEgUmVwb3J0ZXIgb2JqZWN0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB2YWxpZGF0b3IgY291bGQgbm90IGJlIGluaXRpYWxpemVkLgotICAgKi8KLSAgcHVibGljIHZvaWQgaW5pdCgKLSAgICBBbmFseXplckNvbnRleHQgYW5hbHl6ZXJDb250ZXh0LAotICAgIFByb2ZpbGVBcnRpZmFjdCBwcm9maWxlQXJ0aWZhY3QsCi0gICAgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QsCi0gICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gU2F2ZSBpbnB1dCByZWZlcmVuY2VzCi0gICAgdGhpcy5hbmFseXplckNvbnRleHQgPSBhbmFseXplckNvbnRleHQ7Ci0gICAgdGhpcy5wcm9maWxlQXJ0aWZhY3QgPSBwcm9maWxlQXJ0aWZhY3Q7Ci0gICAgdGhpcy5yZXBvcnRBcnRpZmFjdCA9IHJlcG9ydEFydGlmYWN0OwotICAgIHRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjsKLQotICAgIC8vIEdldCB2ZXJib3NlIG9wdGlvbiAgICAKLSAgICB2ZXJib3NlT3B0aW9uID0KLSAgICAgIHJlcG9ydGVyCi0gICAgICAgIC5nZXRSZXBvcnQoKQotICAgICAgICAuZ2V0UmVwb3J0Q29udGV4dCgpCi0gICAgICAgIC5nZXRBbmFseXplcigpCi0gICAgICAgIC5nZXRBbmFseXplckNvbmZpZygpCi0gICAgICAgIC5nZXRWZXJib3NlT3B0aW9uKCk7Ci0gIH0KLQotICAvKioKLSAgICogUHJvY2VzcyBhbGwgb2YgdGhlIHRlc3QgYXNzZXJ0aW9ucyBmb3Igb25lIGVudHJ5LgotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggYSBjbGFzcyBwcmVmaXguCi0gICAqIEBwYXJhbSBlbnRyeUNvbnRleHQgYW4gZW50cnkgY29udGV4dC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgc2VyaW91cyBwcm9ibGVtcyBvY2N1ciB3aGlsZSBwcm9jZXNzaW5nIAotICAgKiAgICAgICAgIGFsbCBvZiB0aGUgdGVzdCBhc3NlcnRpb25zIGZvciBhbiBlbnRyeS4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NBc3NlcnRpb25zKAotICAgIFN0cmluZyBjbGFzc1ByZWZpeCwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIGxvbmcgc3RhcnRUaW1lID0gMDsKLQotICAgIEhhc2hNYXAgcHJvY2Vzc0xpc3QgPSBuZXcgSGFzaE1hcCgpOwotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiA9IG51bGw7Ci0gICAgQXNzZXJ0aW9uUHJvY2VzcyBhc3NlcnRpb25Qcm9jZXNzOwotICAgIEFzc2VydGlvblJlc3VsdCBhc3NlcnRpb25SZXN1bHQ7Ci0KLSAgICBUcmVlTWFwIHByZVJlcVJlc3VsdHM7Ci0gICAgUHJlcmVxRmFpbGVkTGlzdCBwcmVyZXFGYWlsZWRMaXN0OwotICAgIFN0cmluZyBwcmVSZXFJZDsKLQotICAgIENsYXNzW10gcGFyYW1UeXBlcyA9IG5ldyBDbGFzc1sxXTsKLSAgICAvLyBJZiB0aGlzIGlzIGFuIGluc3RhbmNlIG9mIE1lc3NhZ2VWYWxpZGF0b3Igb3IgRW52ZWxvcGVWYWxpZGF0b3IKLSAgICAvLyB0aGVuIHVzZSBCYXNlTWVzc2FnZVZhbGlkYXRvciBhcyBhIHBhcmFtIHR5cGUgb2YgYXNzZXJ0aW9ucyBjb25zdHJ1Y3RvcgotICAgIHBhcmFtVHlwZXNbMF0gPSB0aGlzIGluc3RhbmNlb2YgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgPwotICAgICAgQmFzZU1lc3NhZ2VWYWxpZGF0b3IuY2xhc3MgOiB0aGlzLmdldENsYXNzKCk7Ci0KLSAgICBPYmplY3RbXSBwYXJhbXMgPSBuZXcgT2JqZWN0WzFdOwotICAgIHBhcmFtc1swXSA9IHRoaXM7Ci0KLSAgICAvLyBHZXQgZW50cnkgZnJvbSBjb250ZXh0Ci0gICAgRW50cnkgZW50cnkgPSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKTsKLQotICAgIC8vIEFkZCBlbnRyeSB0byBhcnRpZmFjdAotICAgIHRoaXMucmVwb3J0QXJ0aWZhY3QuYWRkRW50cnkoZW50cnkpOwotCi0gICAgLy8gQWRkIGVudHJ5IHRvIHJlcG9ydAotICAgIGlmICh0aGlzIGluc3RhbmNlb2YgRW52ZWxvcGVWYWxpZGF0b3IpCi0gICAgIAl0aGlzLnJlcG9ydGVyLnNldEN1cnJlbnRFbnZlbG9wZUVudHJ5KGVudHJ5KTsgCi0JZWxzZSB0aGlzLnJlcG9ydGVyLnNldEN1cnJlbnRFbnRyeShlbnRyeSk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIHRlc3QgYXNzZXJ0aW9ucyBmb3IgdGhlIGFydGlmYWN0Ci0gICAgICBJdGVyYXRvciBpdGVyYXRvciA9IHByb2ZpbGVBcnRpZmFjdC5nZXRUZXN0QXNzZXJ0aW9uTGlzdCgpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICAvLyBHZXQgbmV4dCB0ZXN0IGFzc2VydGlvbgotICAgICAgICB0ZXN0QXNzZXJ0aW9uID0gKFRlc3RBc3NlcnRpb24pIGl0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgICAvLyBSZXNldCB2YXJpYWJsZXMKLSAgICAgICAgYXNzZXJ0aW9uUmVzdWx0ID0gbnVsbDsKLQotICAgICAgICAvLyBJZiB0aGUgdGVzdCBhc3NlcnRpb24gaXMgZW5hYmxlZCwgdGhlbiBjb250aW51ZQotICAgICAgICAvLyAgICAgICAgaWYgKCh0ZXN0QXNzZXJ0aW9uLmlzRW5hYmxlZCgpKSAmJiAKLSAgICAgICAgLy8gICAgICAgICAgICB0ZXN0QXNzZXJ0aW9uLmdldEVudHJ5VHlwZU5hbWUoKS5lcXVhbHModGFyZ2V0Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5VHlwZSgpLmdldFR5cGVOYW1lKCkpKSB7IAotICAgICAgICBpZiAodGVzdEFzc2VydGlvbi5pc0VuYWJsZWQoKQotICAgICAgICAgICYmIGlzUHJpbWFyeUVudHJ5VHlwZU1hdGNoKHRlc3RBc3NlcnRpb24sIGVudHJ5Q29udGV4dCkpCi0gICAgICAgIHsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBZGQgMSB0byBhc3NlcnRpb24gcHJvY2Vzc2VkIGNvdW50Ci0gICAgICAgICAgICBhc3NlcnRpb25Db3VudCsrOwotCi0gICAgICAgICAgICAvLyBJZiB0aGUgYXNzZXJ0aW9uIHByb2Nlc3MgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQsIHRoZW4gY3JlYXRlIGl0Ci0gICAgICAgICAgICBpZiAoKGFzc2VydGlvblByb2Nlc3MgPQotICAgICAgICAgICAgICAoQXNzZXJ0aW9uUHJvY2VzcykgcHJvY2Vzc0xpc3QuZ2V0KHRlc3RBc3NlcnRpb24uZ2V0SWQoKSkpCi0gICAgICAgICAgICAgID09IG51bGwpCi0gICAgICAgICAgICB7Ci0KLSAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGFzc2VydGlvbiBwcm9jZXNzCi0gICAgICAgICAgICAgIENsYXNzIGFzc2VydGlvbkNsYXNzID0KLSAgICAgICAgICAgICAgICBDbGFzcy5mb3JOYW1lKGNsYXNzUHJlZml4ICsgdGVzdEFzc2VydGlvbi5nZXRJZCgpKTsKLQotICAgICAgICAgICAgICBhc3NlcnRpb25Qcm9jZXNzID0KLSAgICAgICAgICAgICAgICAoQXNzZXJ0aW9uUHJvY2VzcykgYXNzZXJ0aW9uQ2xhc3MuZ2V0Q29uc3RydWN0b3IoCi0gICAgICAgICAgICAgICAgICBwYXJhbVR5cGVzKS5uZXdJbnN0YW5jZSgKLSAgICAgICAgICAgICAgICAgIHBhcmFtcyk7Ci0KLSAgICAgICAgICAgICAgLy8gQWRkIGl0IHRvIHRoZSBsaXN0Ci0gICAgICAgICAgICAgIHByb2Nlc3NMaXN0LnB1dCh0ZXN0QXNzZXJ0aW9uLmdldElkKCksIGFzc2VydGlvblByb2Nlc3MpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIGVudHJ5IGlzIG51bGwKLSAgICAgICAgICAgIGlmIChlbnRyeS5nZXRFbnRyeURldGFpbCgpID09IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGFzc2VydGlvblJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgICAgICAgICAgICAgdGVzdEFzc2VydGlvbiwKLSAgICAgICAgICAgICAgICAgIEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTUlTU0lOR19JTlBVVCwKLSAgICAgICAgICAgICAgICAgIChTdHJpbmcpIG51bGwpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIHRlc3QgYXNzZXJ0aW9uIHNob3VsZCBiZSBydW4KLSAgICAgICAgICAgIC8vaWYgKGlzTm90QXBwbGljYWJsZSh0ZXN0QXNzZXJ0aW9uLCBlbnRyeUNvbnRleHQpKSB7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc05vdEFwcGxpY2FibGUodGVzdEFzc2VydGlvbikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGFzc2VydGlvblJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgICAgICAgICAgICAgdGVzdEFzc2VydGlvbiwKLSAgICAgICAgICAgICAgICAgIEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEUsCi0gICAgICAgICAgICAgICAgICAoU3RyaW5nKSBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy8gUHJvY2Vzc2luZyBhbGwgdGhlIGFzc2VydGlvbiBwcmUtcmVxdWlzaXRlcwotCi0gICAgICAgICAgICAgIHByZVJlcVJlc3VsdHMgPSBudWxsOwotICAgICAgICAgICAgICBwcmVyZXFGYWlsZWRMaXN0ID0gbnVsbDsKLSAgICAgICAgICAgICAgLy8gR2V0IGxpc3Qgb2YgcHJlLXJlcXMgZm9yIHNwZWNpZmllZCBhc3NlcnRpb24KLSAgICAgICAgICAgICAgSXRlcmF0b3IgaSA9IHRlc3RBc3NlcnRpb24uZ2V0UHJlcmVxSWRMaXN0KCkuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgd2hpbGUgKGkuaGFzTmV4dCgpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZVJlcVJlc3VsdHMgPT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgIHByZVJlcVJlc3VsdHMgPSBuZXcgVHJlZU1hcCgpOwotICAgICAgICAgICAgICAgIC8vIEdldCBuZXh0IGlkCi0gICAgICAgICAgICAgICAgcHJlUmVxSWQgPSAoU3RyaW5nKSBpLm5leHQoKTsKLSAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHByZXJlcSByZXN1bHQKLSAgICAgICAgICAgICAgICBBc3NlcnRpb25SZXN1bHQgcHJlUmVxUmVzdWx0ID0gcmVwb3J0ZXIuZ2V0QXNzZXJ0aW9uUmVzdWx0KHByZVJlcUlkKTsKLQotICAgICAgICAgICAgICAgIC8vIEFkZGluZyBhIHJlc3VsdCBwcmlvcml0eSB2YWx1ZSB0byBwcmVSZXFSZXN1bHRzCi0gICAgICAgICAgICAgICAgcHJlUmVxUmVzdWx0cy5wdXQoCi0gICAgICAgICAgICAgICAgICByZXN1bHRQcmlvcml0eS5nZXQocHJlUmVxUmVzdWx0LmdldFJlc3VsdCgpKSwKLSAgICAgICAgICAgICAgICAgIHByZVJlcVJlc3VsdC5nZXRSZXN1bHQoKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcHJlcmVxIGZhaWxlZCwgdGhlbiBhZGQgaXQgdG8gdGhlIGxpc3QKLSAgICAgICAgICAgICAgICBpZiAoKChJbnRlZ2VyKXJlc3VsdFByaW9yaXR5LmdldChwcmVSZXFSZXN1bHQuZ2V0UmVzdWx0KCkpKS5pbnRWYWx1ZSgpCi0gICAgICAgICAgICAgICAgICA+IE1BWF9WQUxJRF9QUklPUklUWSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAvLyBBZGRpbmcgZmFpbGVkIHByZXJlcSBJRCB0byB0aGUgbGlzdAotICAgICAgICAgICAgICAgICAgaWYgKHByZXJlcUZhaWxlZExpc3QgPT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgcHJlcmVxRmFpbGVkTGlzdCA9IG5ldyBQcmVyZXFGYWlsZWRMaXN0SW1wbCgpOwotICAgICAgICAgICAgICAgICAgcHJlcmVxRmFpbGVkTGlzdC5hZGRUZXN0QXNzZXJ0aW9uSUQocHJlUmVxSWQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgIGlmIChwcmVyZXFGYWlsZWRMaXN0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBHZXR0aW5nIHRoZSBoaWdoZXN0IHByZS1yZXF1aXNpdGVzJyByZXN1bHQKLSAgICAgICAgICAgICAgICBJbnRlZ2VyIG1heFJlcyA9IChJbnRlZ2VyKXByZVJlcVJlc3VsdHMubGFzdEtleSgpOwotICAgICAgICAgICAgICAgIFN0cmluZyByZXNTdHJpbmcgPSAoU3RyaW5nKXByZVJlcVJlc3VsdHMuZ2V0KG1heFJlcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc1N0cmluZy5lcXVhbHMoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQpCi0gICAgICAgICAgICAgICAgICB8fHJlc1N0cmluZy5lcXVhbHMoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HKSkgewotICAgICAgICAgICAgICAgICAgcmVzU3RyaW5nID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QUkVSRVFfRkFJTEVEOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYXNzZXJ0aW9uIHJlc3VsdCBiYXNlZCBvbiBwcmUtcmVxdWlzaXRlcyB3aGljaCBhcmUgbm90IHBhc3NlZAotICAgICAgICAgICAgICAgIGFzc2VydGlvblJlc3VsdCA9IGNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXNTdHJpbmcsIHByZXJlcUZhaWxlZExpc3QpOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgLy8gUHJlLXJlcXVpc2l0ZXMgYXJlIHBhc3NlZCwgdmFsaWRhdGUgY3VycmVudCBhc3NlcnRpb24KLSAgICAgICAgICAgICAgZWxzZSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBSZXNldCB0ZXN0IGFzc2VydGlvbgotICAgICAgICAgICAgICAgIGFzc2VydGlvblByb2Nlc3MucmVzZXQoKTsKLQotICAgICAgICAgICAgICAgIC8vICBWRVJCT1NFCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VPcHRpb24pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAiICBQcm9jZXNzaW5nICIKLSAgICAgICAgICAgICAgICAgICAgICArIHRlc3RBc3NlcnRpb24uZ2V0SWQoKQotICAgICAgICAgICAgICAgICAgICAgICsgIiBmb3IgZW50cnkgcmVmZXJlbmNlIElEIFsiCi0gICAgICAgICAgICAgICAgICAgICAgKyBlbnRyeS5nZXRSZWZlcmVuY2VJRCgpCi0gICAgICAgICAgICAgICAgICAgICAgKyAiXSAuLi4iKTsKLSAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSB0YXJnZXQKLSAgICAgICAgICAgICAgICBhc3NlcnRpb25SZXN1bHQgPQotICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uUHJvY2Vzcy52YWxpZGF0ZSh0ZXN0QXNzZXJ0aW9uLCBlbnRyeUNvbnRleHQpOwotCi0gICAgICAgICAgICAgICAgLy8gIFZFUkJPU0UKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZU9wdGlvbikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICIgICAgRWxhcHNlZCB0aW1lOiAiCi0gICAgICAgICAgICAgICAgICAgICAgKyAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydFRpbWUpCi0gICAgICAgICAgICAgICAgICAgICAgKyAibXMiKTsKLSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEFkZCByZXN1bHQgdG8gdGhlIHJlcG9ydAotICAgICAgICAgICAgcmVwb3J0ZXIuYWRkQXNzZXJ0aW9uUmVzdWx0KGFzc2VydGlvblJlc3VsdCk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gY25mZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBERUJVRzoKLSAgICAgICAgICAgIGlmICh0ZXN0QXNzZXJ0aW9uICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHJlcG9ydGVyCi0gICAgICAgICAgICAgICAgLmdldFJlcG9ydCgpCi0gICAgICAgICAgICAgICAgLmdldFJlcG9ydENvbnRleHQoKQotICAgICAgICAgICAgICAgIC5nZXRBbmFseXplcigpCi0gICAgICAgICAgICAgICAgLnByaW50TWVzc2FnZSgKLSAgICAgICAgICAgICAgICAiV0FSTklORzogIgotICAgICAgICAgICAgICAgICAgKyB0ZXN0QXNzZXJ0aW9uLmdldElkKCkKLSAgICAgICAgICAgICAgICAgICsgIiBpcyBub3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFWEVDRVBUSU9OOiAiICsgZS5nZXRNZXNzYWdlKCkpOwotICAgICAgaWYgKHZlcmJvc2VPcHRpb24pCi0gICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0KLSAgICAgIGlmIChlIGluc3RhbmNlb2YgV1NJRXhjZXB0aW9uKQotICAgICAgICB0aHJvdyAoV1NJRXhjZXB0aW9uKSBlOwotICAgICAgZWxzZQotICAgICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLSAgICB9Ci0KLSAgICBmaW5hbGx5Ci0gICAgewotICAgICAgLy8gSW5kaWNhdGUgdGhhdCB3ZSBhcmUgZG9uZSB3aXRoIHRoaXMgYXNzZXJ0aW9uIHRhcmdldAotICAgICAgdGhpcy5yZXBvcnRlci5lbmRDdXJyZW50RW50cnkoKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogRGV0ZXJtaW5lIGlmIHRoZSB0ZXN0IGFzc2VydGlvbiBzaG91bGQgYmUgcHJvY2Vzc2VkIGZvciB0aGUgY3VycmVudCBlbnRyeS4KLSAgICogQHBhcmFtIHRlc3RBc3NlcnRpb24gYSB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHBhcmFtIGVudHJ5Q29udGV4dCAgdGhlIGVudHJ5IGNvbnRleHQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdGVzdCBhc3NlcnRpb24gc2hvdWxkIGJlIHByb2Nlc3NlZCBmb3IgdGhlIGN1cnJlbnQgZW50cnkuCi0gICAqLwotICBwcm90ZWN0ZWQgYWJzdHJhY3QgYm9vbGVhbiBpc1ByaW1hcnlFbnRyeVR5cGVNYXRjaCgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCk7Ci0KLSAgLyoqCi0gICAqIERldGVybWluZSBpZiB0aGUgdGVzdCBhc3NlcnRpb24gc2hvdWxkIGJlIHByb2Nlc3NlZCBmb3IgdGhlIGN1cnJlbnQgZW50cnkuCi0gICAqIEBwYXJhbSB0ZXN0QXNzZXJ0aW9uICBhIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAcGFyYW0gZW50cnkgICAgICAgICAgYW4gRW50cnkgb2JqZWN0Ci0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdGVzdCBhc3NlcnRpb24gc2hvdWxkIGJlIHByb2Nlc3NlZCBmb3IgdGhlIGN1cnJlbnQgZW50cnkuCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBpc1ByaW1hcnlFbnRyeVR5cGVNYXRjaCgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnkgZW50cnkpCi0gIHsKLSAgICBib29sZWFuIG1hdGNoID0gZmFsc2U7Ci0KLSAgICAvLyBJZiB0aGUgdGVzdCBhc3NlcnRpb24gZW50cnkgdHlwZSBtYXRjaGVzIHRoZSB0YXJnZXQgY29udGV4dCBlbnRyeSB0eXBlLCB0aGVuIGNvbnRpbmUKLSAgICBpZiAodGVzdEFzc2VydGlvbgotICAgICAgLmdldEVudHJ5VHlwZU5hbWUoKQotICAgICAgLmVxdWFscyhlbnRyeS5nZXRFbnRyeVR5cGUoKS5nZXRUeXBlTmFtZSgpKSkKLSAgICB7Ci0gICAgICBtYXRjaCA9IHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1hdGNoOwotICB9Ci0KLSAgLyoqCi0gICAqIERldGVybWluZSBpZiB0aGUgdGVzdCBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUuCi0gICAqIEBwYXJhbSB0ZXN0QXNzZXJ0aW9uIGEgdGVzdCBhc3NlcnRpb24uCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdGVzdCBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUuCi0gICAqLwotICBwcm90ZWN0ZWQgYWJzdHJhY3QgYm9vbGVhbiBpc05vdEFwcGxpY2FibGUoVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uKTsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkJhc2VWYWxpZGF0b3IjY2xlYW51cCgpCi0gICAqLwotICBwdWJsaWMgdm9pZCBjbGVhbnVwKCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gSWYgbm8gYXNzZXJ0aW9ucyB3ZXJlIHByb2Nlc3NlZCwgdGhlbiBzZXQgYWxsIG1pc3NpbmdJbnB1dAotICAgIGlmIChhc3NlcnRpb25Db3VudCA9PSAwKQotICAgICAgc2V0QWxsTWlzc2luZ0lucHV0KCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGFzc2VydGlvbiByZXN1bHQuCi0gICAqIEBwYXJhbSB0ZXN0QXNzZXJ0aW9uIGEgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBwYXJhbSByZXN1bHQgICAgICAgIGEgU3RyaW5nIG9iamVjdC4KLSAgICogQHBhcmFtIGZhaWx1cmVEZXRhaWwgYSBGYWlsdXJlRGV0YWlsIG9iamVjdC4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIHRlc3QgcmVzdWx0LgotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCBjcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIFN0cmluZyByZXN1bHQsCi0gICAgRmFpbHVyZURldGFpbCBmYWlsdXJlRGV0YWlsKQotICB7Ci0gICAgVmVjdG9yIGZhaWx1cmVEZXRhaWxMaXN0ID0gbnVsbDsKLQotICAgIC8vIENyZWF0ZSBmYWlsdXJlIGRldGFpbCBsaXN0Ci0gICAgaWYgKGZhaWx1cmVEZXRhaWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmYWlsdXJlRGV0YWlsTGlzdCA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIGZhaWx1cmVEZXRhaWxMaXN0LmFkZChmYWlsdXJlRGV0YWlsKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbExpc3QpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhc3NlcnRpb24gcmVzdWx0LgotICAgKiBAcGFyYW0gdGVzdEFzc2VydGlvbiAgICAgICAgIGEgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBwYXJhbSByZXN1bHQgICAgICAgICAgICAgICAgYSBTdHJpbmcgb2JqZWN0LgotICAgKiBAcGFyYW0gZmFpbHVyZURldGFpbE1lc3NhZ2UgIGEgZmFpbHVyZSBkZXRhaWwgbWVzc2FnZS4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIHRlc3QgcmVzdWx0LgotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCBjcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIFN0cmluZyByZXN1bHQsCi0gICAgU3RyaW5nIGZhaWx1cmVEZXRhaWxNZXNzYWdlKQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sCi0gICAgICByZXN1bHQsCi0gICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSwKLSAgICAgIG51bGwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhc3NlcnRpb24gcmVzdWx0LgotICAgKiBAcGFyYW0gdGVzdEFzc2VydGlvbiAgICAgICAgIGEgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBwYXJhbSByZXN1bHQgICAgICAgICAgICAgICAgYSBTdHJpbmcgb2JqZWN0LgotICAgKiBAcGFyYW0gZmFpbHVyZURldGFpbE1lc3NhZ2UgIGEgZmFpbHVyZSBkZXRhaWwgbWVzc2FnZS4KLSAgICogQHBhcmFtIGVsZW1lbnRMb2NhdGlvbiAgICAgICBlbGVtZW50IGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIG5ld2x5IGNyZWF0ZWQgdGVzdCByZXN1bHQuCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IGNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgU3RyaW5nIHJlc3VsdCwKLSAgICBTdHJpbmcgZmFpbHVyZURldGFpbE1lc3NhZ2UsCi0gICAgRWxlbWVudExvY2F0aW9uIGVsZW1lbnRMb2NhdGlvbikKLSAgewotICAgIC8vIENyZWF0ZSBmYWlsdXJlIGRldGFpbCBsaXN0Ci0gICAgVmVjdG9yIGZhaWx1cmVEZXRhaWxMaXN0ID0gbnVsbDsKLSAgICBpZiAoZmFpbHVyZURldGFpbE1lc3NhZ2UgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmYWlsdXJlRGV0YWlsTGlzdCA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIEZhaWx1cmVEZXRhaWwgZmFpbHVyZURldGFpbCA9IHJlcG9ydGVyLmNyZWF0ZUZhaWx1cmVEZXRhaWwoKTsKLSAgICAgIGZhaWx1cmVEZXRhaWwuc2V0RmFpbHVyZU1lc3NhZ2UoZmFpbHVyZURldGFpbE1lc3NhZ2UpOwotICAgICAgZmFpbHVyZURldGFpbC5zZXRFbGVtZW50TG9jYXRpb24oZWxlbWVudExvY2F0aW9uKTsKLSAgICAgIGZhaWx1cmVEZXRhaWxMaXN0LmFkZChmYWlsdXJlRGV0YWlsKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbExpc3QpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhc3NlcnRpb24gcmVzdWx0LgotICAgKiBAcGFyYW0gdGVzdEFzc2VydGlvbiAgICAgYSB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHBhcmFtIHJlc3VsdCAgICAgICAgICAgIGEgU3RyaW5nIG9iamVjdC4KLSAgICogQHBhcmFtIGZhaWx1cmVEZXRhaWxMaXN0IGEgZmFpbHVyZSBkZXRhaWwgbGlzdC4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIHRlc3QgcmVzdWx0LgotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCBjcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIFN0cmluZyByZXN1bHQsCi0gICAgVmVjdG9yIGZhaWx1cmVEZXRhaWxMaXN0KQotICB7Ci0gICAgLy8gQ3JlYXRlIGFzc2VydGlvbiByZXN1bHQKLSAgICBBc3NlcnRpb25SZXN1bHQgYXNzZXJ0aW9uUmVzdWx0ID0gcmVwb3J0ZXIuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KCk7Ci0KLSAgICAvLyBTZXQgdmFsdWVzIGluIGFzc2VydGlvbiByZXN1bHQKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0QXNzZXJ0aW9uKHRlc3RBc3NlcnRpb24pOwotICAgIGFzc2VydGlvblJlc3VsdC5zZXRSZXN1bHQocmVzdWx0KTsKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0RW50cnkocmVwb3J0ZXIuZ2V0UmVwb3J0KCkuZ2V0Q3VycmVudEVudHJ5KCkpOwotCi0gICAgLy8gU2V0IGZhaWx1cmUgZGV0YWlsIGxpc3QKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0RmFpbHVyZURldGFpbExpc3QoZmFpbHVyZURldGFpbExpc3QpOwotCi0gICAgcmV0dXJuIGFzc2VydGlvblJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYXNzZXJ0aW9uIHJlc3VsdC4KLSAgICogQHBhcmFtIHRlc3RBc3NlcnRpb24gICAgIGEgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBwYXJhbSByZXN1bHQgICAgICAgICAgICBhIFN0cmluZyBvYmplY3QuCi0gICAqIEBwYXJhbSBwcmVyZXFGYWlsZWRMaXN0ICBhIGxpc3QgZmFpbGVkIHByZS1yZXF1aXNpdGUgYXNzZXJ0aW9ucy4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIHRlc3QgcmVzdWx0LgotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCBjcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIFN0cmluZyByZXN1bHQsCi0gICAgUHJlcmVxRmFpbGVkTGlzdCBwcmVyZXFGYWlsZWRMaXN0KQotICB7Ci0gICAgLy8gQ3JlYXRlIGFzc2VydGlvbiByZXN1bHQKLSAgICBBc3NlcnRpb25SZXN1bHQgYXNzZXJ0aW9uUmVzdWx0ID0gcmVwb3J0ZXIuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KCk7Ci0KLSAgICAvLyBTZXQgdmFsdWVzIGluIGFzc2VydGlvbiByZXN1bHQKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0QXNzZXJ0aW9uKHRlc3RBc3NlcnRpb24pOwotICAgIGFzc2VydGlvblJlc3VsdC5zZXRSZXN1bHQocmVzdWx0KTsKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0RW50cnkocmVwb3J0ZXIuZ2V0UmVwb3J0KCkuZ2V0Q3VycmVudEVudHJ5KCkpOwotICAgIGFzc2VydGlvblJlc3VsdC5zZXRQcmVyZXFGYWlsZWRMaXN0KHByZXJlcUZhaWxlZExpc3QpOwotCi0gICAgcmV0dXJuIGFzc2VydGlvblJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiBBZGQgYXNzZXJ0aW9uIHJlc3VsdCB0byByZXBvcnQuCi0gICAqIEBwYXJhbSBhc3NlcnRpb25JZCAgYXNzZXJ0aW9uIGlkLgotICAgKiBAcGFyYW0gcmVzdWx0ICAgICAgIGFzc2VydGlvbiByZXN1bHQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZSBhc3NlcnRpb24gcmVzdWx0IGNhbm5vdCBiZSBhZGRlZCB0byB0aGUgcmVwb3J0LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgYWRkQXNzZXJ0aW9uUmVzdWx0KFN0cmluZyBhc3NlcnRpb25JZCwgU3RyaW5nIHJlc3VsdCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBDcmVhdGUgdGVzdCBhc3NlcnRpb24gcmVzdWx0Ci0gICAgQXNzZXJ0aW9uUmVzdWx0IGFzc2VydGlvblJlc3VsdCA9IHJlcG9ydGVyLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgpOwotCi0gICAgLy8gU2V0IGFzc2VydGlvbiwgcmVzdWx0IGFuZCB0YXJnZXQKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0QXNzZXJ0aW9uKHByb2ZpbGVBcnRpZmFjdC5nZXRUZXN0QXNzZXJ0aW9uKGFzc2VydGlvbklkKSk7Ci0gICAgYXNzZXJ0aW9uUmVzdWx0LnNldFJlc3VsdChyZXN1bHQpOwotICAgIGFzc2VydGlvblJlc3VsdC5zZXRFbnRyeShyZXBvcnRlci5nZXRSZXBvcnQoKS5nZXRDdXJyZW50RW50cnkoKSk7Ci0KLSAgICAvLyBBZGQgaXQgdG8gdGhlIHJlcG9ydAotICAgIHJlcG9ydGVyLmFkZEFzc2VydGlvblJlc3VsdChhc3NlcnRpb25SZXN1bHQpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCBhc3NlcnRpb24gcmVzdWx0IHRvIHJlcG9ydCB3aXRoIGFuIGVycm9yIGRldGFpbCBtZXNzYWdlLgotICAgKiBAcGFyYW0gYXNzZXJ0aW9uSWQgICAgICAgICAgYXNzZXJ0aW9uIGlkLgotICAgKiBAcGFyYW0gcmVzdWx0ICAgICAgICAgICAgICAgYXNzZXJ0aW9uIHJlc3VsdC4KLSAgICogQHBhcmFtIGZhaWx1cmVEZXRhaWxNZXNzYWdlIGFuIGVycm9yIGRldGFpbCBtZXNzYWdlLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGUgYXNzZXJ0aW9uIHJlc3VsdCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIHJlcG9ydC4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGFkZEFzc2VydGlvblJlc3VsdCgKLSAgICBTdHJpbmcgYXNzZXJ0aW9uSWQsCi0gICAgU3RyaW5nIHJlc3VsdCwKLSAgICBTdHJpbmcgZmFpbHVyZURldGFpbE1lc3NhZ2UpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQ29udmVydCBtZXNzYWdlIHRvIHZlY3RvcgotICAgIFZlY3RvciBmYWlsdXJlRGV0YWlsTGlzdCA9IG51bGw7Ci0gICAgaWYgKGZhaWx1cmVEZXRhaWxNZXNzYWdlICE9IG51bGwpCi0gICAgewotICAgICAgZmFpbHVyZURldGFpbExpc3QgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBGYWlsdXJlRGV0YWlsIGZhaWx1cmVEZXRhaWwgPSByZXBvcnRlci5jcmVhdGVGYWlsdXJlRGV0YWlsKCk7Ci0gICAgICBmYWlsdXJlRGV0YWlsTGlzdC5hZGQoZmFpbHVyZURldGFpbCk7Ci0gICAgfQotCi0gICAgLy8gQWRkIGFzc2VydGlvbiByZXN1bHQKLSAgICBhZGRBc3NlcnRpb25SZXN1bHQoYXNzZXJ0aW9uSWQsIHJlc3VsdCwgZmFpbHVyZURldGFpbExpc3QpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCBhc3NlcnRpb24gcmVzdWx0IHRvIHJlcG9ydC4KLSAgICogQHBhcmFtIGFzc2VydGlvbklkICAgICAgICBhc3NlcnRpb24gaWQuCi0gICAqIEBwYXJhbSByZXN1bHQgICAgICAgICAgICAgYXNzZXJ0aW9uIHJlc3VsdC4KLSAgICogQHBhcmFtIGZhaWx1cmVEZXRhaWxMaXN0ICBhIGxpc3Qgb2YgZXJyb3IgZGV0YWlsIG1lc3NhZ2VzLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGUgYXNzZXJ0aW9uIHJlc3VsdCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIHJlcG9ydC4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGFkZEFzc2VydGlvblJlc3VsdCgKLSAgICBTdHJpbmcgYXNzZXJ0aW9uSWQsCi0gICAgU3RyaW5nIHJlc3VsdCwKLSAgICBWZWN0b3IgZmFpbHVyZURldGFpbExpc3QpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQ3JlYXRlIHRlc3QgYXNzZXJ0aW9uIHJlc3VsdAotICAgIEFzc2VydGlvblJlc3VsdCBhc3NlcnRpb25SZXN1bHQgPSByZXBvcnRlci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoKTsKLQotICAgIC8vIFNldCBhc3NlcnRpb24sIHJlc3VsdCBhbmQgdGFyZ2V0Ci0gICAgYXNzZXJ0aW9uUmVzdWx0LnNldEFzc2VydGlvbihwcm9maWxlQXJ0aWZhY3QuZ2V0VGVzdEFzc2VydGlvbihhc3NlcnRpb25JZCkpOwotICAgIGFzc2VydGlvblJlc3VsdC5zZXRSZXN1bHQocmVzdWx0KTsKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0RW50cnkocmVwb3J0ZXIuZ2V0UmVwb3J0KCkuZ2V0Q3VycmVudEVudHJ5KCkpOwotICAgIGFzc2VydGlvblJlc3VsdC5zZXRGYWlsdXJlRGV0YWlsTGlzdChmYWlsdXJlRGV0YWlsTGlzdCk7Ci0KLSAgICAvLyBBZGQgaXQgdG8gdGhlIHJlcG9ydAotICAgIHJlcG9ydGVyLmFkZEFzc2VydGlvblJlc3VsdChhc3NlcnRpb25SZXN1bHQpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCBtaXNzaW5nSW5wdXQgYXNzZXJ0aW9uIHJlc3VsdCB0byByZXBvcnQuCi0gICAqIEBwYXJhbSB0ZXN0QXNzZXJ0aW9uIGEgdGVzdCBhc3NlcnRpb24uCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFueSBwcm9ibGVtIGFkZGluZyBtaXNzaW5nSW5wdXQgCi0gICAqIAkJIGFzc2VydGlvbiByZXN1bHQgdG8gcmVwb3J0LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgYWRkTWlzc2luZ0lucHV0UmVzdWx0KFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbikKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBDcmVhdGUgdGVzdCBhc3NlcnRpb24gcmVzdWx0Ci0gICAgQXNzZXJ0aW9uUmVzdWx0IGFzc2VydGlvblJlc3VsdCA9IHJlcG9ydGVyLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgpOwotCi0gICAgLy8gU2V0IGFzc2VydGlvbiwgcmVzdWx0IGFuZCB0YXJnZXQKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0QXNzZXJ0aW9uKHRlc3RBc3NlcnRpb24pOwotICAgIGFzc2VydGlvblJlc3VsdC5zZXRSZXN1bHQoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9NSVNTSU5HX0lOUFVUKTsKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0RW50cnkocmVwb3J0ZXIuZ2V0UmVwb3J0KCkuZ2V0Q3VycmVudEVudHJ5KCkpOwotCi0gICAgLy8gQWRkIGl0IHRvIHRoZSByZXBvcnQKLSAgICByZXBvcnRlci5hZGRBc3NlcnRpb25SZXN1bHQoYXNzZXJ0aW9uUmVzdWx0KTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuQmFzZVZhbGlkYXRvciNzZXRBbGxNaXNzaW5nSW5wdXQoKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QWxsTWlzc2luZ0lucHV0KCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gSWYgcHJvZmlsZSBhcnRpZmFjdCBpcyBzZXQKLSAgICBpZiAocHJvZmlsZUFydGlmYWN0ICE9IG51bGwpCi0gICAgewotICAgICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uOwotICAKLSAgICAgIC8vIENyZWF0ZSBlbnRyeQotICAgICAgRW50cnkgZW50cnkgPSB0aGlzLnJlcG9ydGVyLmdldFJlcG9ydCgpLmNyZWF0ZUVudHJ5KCk7Ci0gICAgICBlbnRyeS5zZXRBcnRpZmFjdE5hbWUodGhpcy5yZXBvcnRBcnRpZmFjdC5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSk7Ci0gIAotICAgICAgLy8gQWRkIGVudHJ5IHRvIGFydGlmYWN0Ci0gICAgICB0aGlzLnJlcG9ydEFydGlmYWN0LmFkZEVudHJ5KGVudHJ5KTsKLSAgCi0gICAgICAvLyBBZGQgZW50cnkgdG8gcmVwb3J0Ci0gICAgICB0aGlzLnJlcG9ydGVyLnNldEN1cnJlbnRFbnRyeShlbnRyeSk7Ci0gIAotICAgICAgLy8gR28gdGhyb3VnaCB0aGUgbGlzdCBvZiB0ZXN0IGFzc2VydGlvbnMgZm9yIHRoZSBhcnRpZmFjdAotICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBwcm9maWxlQXJ0aWZhY3QuZ2V0VGVzdEFzc2VydGlvbkxpc3QoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgLy8gR2V0IG5leHQgdGVzdCBhc3NlcnRpb24KLSAgICAgICAgdGVzdEFzc2VydGlvbiA9IChUZXN0QXNzZXJ0aW9uKSBpdGVyYXRvci5uZXh0KCk7Ci0gIAotICAgICAgICAvLyBBZGQgbWlzc2luZ0lucHV0IHJlc3VsdAotICAgICAgICBpZiAodGVzdEFzc2VydGlvbi5pc0VuYWJsZWQoKSkKLSAgICAgICAgICBhZGRNaXNzaW5nSW5wdXRSZXN1bHQodGVzdEFzc2VydGlvbik7Ci0gICAgICB9Ci0gIAotICAgICAgLy8gSW5kaWNhdGUgdGhhdCB3ZSBhcmUgZG9uZSB3aXRoIHRoaXMgYXNzZXJ0aW9uIHRhcmdldAotICAgICAgdGhpcy5yZXBvcnRlci5lbmRDdXJyZW50RW50cnkoKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogU2V0IGFsbCByZXN1bHRzIGZvciBhbiBlbnRyeSB0eXBlIHRvIG1pc3NpbmdJbnB1dC4KLSAgICogQHBhcmFtIGVudHJ5VHlwZSBhbiBFbnRyeVR5cGUgb2JqZWN0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbnkgcHJvYmxlbSB3aGlsZSBwcm9jZXNzaW5nLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZSBlbnRyeVR5cGUpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbjsKLQotICAgIC8vIENyZWF0ZSBlbnRyeSAKLSAgICBFbnRyeSBlbnRyeSA9IHRoaXMucmVwb3J0ZXIuZ2V0UmVwb3J0KCkuY3JlYXRlRW50cnkoKTsKLSAgICBlbnRyeS5zZXRFbnRyeVR5cGUoZW50cnlUeXBlKTsKLSAgICBlbnRyeS5zZXRSZWZlcmVuY2VJRCgiWyIgKyBlbnRyeVR5cGUuZ2V0VHlwZU5hbWUoKSArICJdIik7Ci0KLSAgICAvLyBBZGQgZW50cnkgdG8gYXJ0aWZhY3QKLSAgICB0aGlzLnJlcG9ydEFydGlmYWN0LmFkZEVudHJ5KGVudHJ5KTsKLQotICAgIC8vIEFkZCBlbnRyeSB0byByZXBvcnQKLSAgICB0aGlzLnJlcG9ydGVyLnNldEN1cnJlbnRFbnRyeShlbnRyeSk7Ci0KLSAgICAvL3RyeSB7Ci0gICAgLy8gR28gdGhyb3VnaCB0aGUgbGlzdCBvZiB0ZXN0IGFzc2VydGlvbnMgZm9yIHRoZSBhcnRpZmFjdAotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gcHJvZmlsZUFydGlmYWN0LmdldFRlc3RBc3NlcnRpb25MaXN0KCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIC8vIEdldCBuZXh0IHRlc3QgYXNzZXJ0aW9uCi0gICAgICB0ZXN0QXNzZXJ0aW9uID0gKFRlc3RBc3NlcnRpb24pIGl0ZXJhdG9yLm5leHQoKTsKLSAgICAgIGlmICh0ZXN0QXNzZXJ0aW9uLmlzRW5hYmxlZCgpCi0gICAgICAgICYmIGlzUHJpbWFyeUVudHJ5VHlwZU1hdGNoKHRlc3RBc3NlcnRpb24sIGVudHJ5KSkKLSAgICAgIHsKLSAgICAgICAgYWRkTWlzc2luZ0lucHV0UmVzdWx0KHRlc3RBc3NlcnRpb24pOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIEluZGljYXRlIHRoYXQgd2UgYXJlIGRvbmUgd2l0aCB0aGlzIGVudHJ5Ci0gICAgdGhpcy5yZXBvcnRlci5lbmRDdXJyZW50RW50cnkoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9Qcm9maWxlVmFsaWRhdG9yRmFjdG9yeUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvUHJvZmlsZVZhbGlkYXRvckZhY3RvcnlJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1Y2M2ZTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9Qcm9maWxlVmFsaWRhdG9yRmFjdG9yeUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLldTSVRlc3RUb29sc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5CYXNlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnZlbG9wZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuUHJvZmlsZVZhbGlkYXRvckZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLlVERElWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLldTRExWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuRW52ZWxvcGVWYWxpZGF0b3JJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2UuTWVzc2FnZVZhbGlkYXRvckltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwudWRkaS5VRERJVmFsaWRhdG9ySW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsLldTRExWYWxpZGF0b3JJbXBsOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFdTSUxEb2N1bWVudEZhY3RvcnkuCi0gKgotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3I6IFBldGVyIEJyaXR0ZW5oYW0KLSAqLwotcHVibGljIGNsYXNzIFByb2ZpbGVWYWxpZGF0b3JGYWN0b3J5SW1wbCBleHRlbmRzIFByb2ZpbGVWYWxpZGF0b3JGYWN0b3J5Ci17Ci0gIHByaXZhdGUgc3RhdGljIE1hcCB2YWxpZGF0b3JSZWdpc3RyeTsKLQotICBwdWJsaWMgc3RhdGljIHZvaWQgYWRkVG9WYWxpZGF0YXRvclJlZ2lzdHJ5KFN0cmluZyBhcnRpZmFjdE5hbWUsCi0gICAgICAgICAgQmFzZVZhbGlkYXRvciB2YWxpZGF0b3JDbGFzcykgewotICAgICAgaWYgKHZhbGlkYXRvclJlZ2lzdHJ5ID09IG51bGwpCi0gICAgICAgICAgdmFsaWRhdG9yUmVnaXN0cnkgPSBuZXcgSGFzaE1hcCgpOwotICAgICAgdmFsaWRhdG9yUmVnaXN0cnkucHV0KGFydGlmYWN0TmFtZSwgdmFsaWRhdG9yQ2xhc3MpOwotICB9Ci0KLSAgcHVibGljIEJhc2VWYWxpZGF0b3IgZ2V0VmFsaWRhdG9yRm9yQXJ0aWZhY3QoU3RyaW5nIGFydGlmYWN0TmFtZSkgCi0gICAgICAgICAgdGhyb3dzIFdTSUV4Y2VwdGlvbiB7Ci0gICAgICBpZiAodmFsaWRhdG9yUmVnaXN0cnkgPT0gbnVsbCkgewotICAgICAgICAgIEJhc2VWYWxpZGF0b3IgdmFsaWRhdG9yc1tdID0gV1NJVGVzdFRvb2xzUGx1Z2luLmdldFBsdWdpbigpLgotICAgICAgICAgICAgICAgICAgZ2V0QmFzZVZhbGlkYXRvcnMoKTsKLSAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbGlkYXRvcnMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgIGFkZFRvVmFsaWRhdGF0b3JSZWdpc3RyeSh2YWxpZGF0b3JzW2ldLmdldEFydGlmYWN0VHlwZSgpLAotICAgICAgICAgICAgICB2YWxpZGF0b3JzW2ldKTsKLSAgICAgICAgICAKLSAgICAgIH0KLSAgICAgIHJldHVybiAoQmFzZVZhbGlkYXRvcikgdmFsaWRhdG9yUmVnaXN0cnkuZ2V0KGFydGlmYWN0TmFtZSk7Ci0gIH0KLSAgCi0gICAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5Qcm9maWxlVmFsaWRhdG9yRmFjdG9yeSNuZXdVRERJVmFsaWRhdG9yKCkKLSAgICovCi0gIHB1YmxpYyBVRERJVmFsaWRhdG9yIG5ld1VERElWYWxpZGF0b3IoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBDcmVhdGUgbmV3IFVEREkgdmFsaWRhdG9yIAotICAgIFVERElWYWxpZGF0b3IgdWRkaVZhbGlkYXRvciA9IG5ldyBVRERJVmFsaWRhdG9ySW1wbCgpOwotICAgIC8vIFJldHVybiB2YWxpZGF0b3IKLSAgICByZXR1cm4gdWRkaVZhbGlkYXRvcjsKLSAgfQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLlByb2ZpbGVWYWxpZGF0b3JGYWN0b3J5I25ld1dTRExWYWxpZGF0b3IoKQotICAgKi8KLSAgcHVibGljIFdTRExWYWxpZGF0b3IgbmV3V1NETFZhbGlkYXRvcigpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIENyZWF0ZSBuZXcgV1NETCB2YWxpZGF0b3IgCi0gICAgV1NETFZhbGlkYXRvciB3c2RsVmFsaWRhdG9yID0gbmV3IFdTRExWYWxpZGF0b3JJbXBsKCk7Ci0KLSAgICAvLyBSZXR1cm4gdmFsaWRhdG9yCi0gICAgcmV0dXJuIHdzZGxWYWxpZGF0b3I7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLlByb2ZpbGVWYWxpZGF0b3JGYWN0b3J5I25ld01lc3NhZ2VWYWxpZGF0b3IoKQotICAgKi8KLSAgcHVibGljIE1lc3NhZ2VWYWxpZGF0b3IgbmV3TWVzc2FnZVZhbGlkYXRvcigpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIENyZWF0ZSBuZXcgbWVzc2FnZSB2YWxpZGF0b3IgCi0gICAgTWVzc2FnZVZhbGlkYXRvciBtZXNzYWdlVmFsaWRhdG9yID0gbmV3IE1lc3NhZ2VWYWxpZGF0b3JJbXBsKCk7Ci0gICAgLy8gUmV0dXJuIHZhbGlkYXRvcgotICAgIHJldHVybiBtZXNzYWdlVmFsaWRhdG9yOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5Qcm9maWxlVmFsaWRhdG9yRmFjdG9yeSNuZXdFbnZlbG9wZVZhbGlkYXRvcigpCi0gICAqLwotICBwdWJsaWMgRW52ZWxvcGVWYWxpZGF0b3IgbmV3RW52ZWxvcGVWYWxpZGF0b3IoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBDcmVhdGUgbmV3IGVudmVsb3BlIHZhbGlkYXRvciAKLSAgICBFbnZlbG9wZVZhbGlkYXRvciBlbnZlbG9wZVZhbGlkYXRvciA9IG5ldyBFbnZlbG9wZVZhbGlkYXRvckltcGwoKTsKLSAgICAvLyBSZXR1cm4gdmFsaWRhdG9yCi0gICAgcmV0dXJuIGVudmVsb3BlVmFsaWRhdG9yOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9BUDE5MjAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQVAxOTIwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MTFjOWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9BUDE5MjAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkVudHJ5VHlwZTsKLQotLyoqCi0gKiBBUDE5MjAKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYW4gZW52ZWxvcGUgaW4gYSByZXNwb25zZSBtZXNzYWdlCi0gKiBjb250YWluaW5nIGEgc29hcDpGYXVsdCBlbGVtZW50PC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkluIGEgZGVzY3JpcHRpb24sIGlmIGFuZCBvbmx5IGlmLCB0aGUgd3NkbDpvdXRwdXQKLSAqIGVsZW1lbnQgaXMgZGVzY3JpYmVkIHVzaW5nIFdTREwgTUlNRSBiaW5kaW5nLCB0aGVuIHRoZSBlbnZlbG9wZSBpbiB0aGUKLSAqIHJlc3BvbnNlIG1lc3NhZ2UgY2FuIGNvbnRhaW4gZmF1bHRzIHdpdGggYXR0YWNobWVudHMuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMTkyMCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMTkyMChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkgCi0gICAgewotICAgICAgaWYgKCFlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuaXNNaW1lQ29udGVudCgpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvLyBjaGVjayBmb3IgYSBmYXVsdCBlbGVtZW50IHdpdGhpbiB0aGUgbWVzc2FnZSAKLSAgICAgIGlmKChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKSA9PSBudWxsKSB8fCAKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKS4KLSAgICAgICAgICBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKFdTSVRhZy5FTEVNX1NPQVBfRkFVTFQuZ2V0TmFtZXNwYWNlVVJJKCksIAotICAgICAgICAgICAgICBXU0lUYWcuRUxFTV9TT0FQX0ZBVUxULmdldExvY2FsUGFydCgpKS5nZXRMZW5ndGgoKSAhPSAxKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSB2YWxpZGF0b3IuZ2V0T3BlcmF0aW9uTWF0Y2goCi0gICAgICAgICAgRW50cnlUeXBlLmdldEVudHJ5VHlwZShNZXNzYWdlVmFsaWRhdG9yLlRZUEVfTUVTU0FHRV9SRVFVRVNUKSwKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdERvY3VtZW50KCkpOwotCi0gICAgICAvLyBJZiB0aGVyZSBpcyBubyBtYXRjaGVkIG9wZXJhdGlvbiwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKGJpbmRpbmdPcGVyYXRpb24gPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIC8vIElmIHRoZSBlbnZlbG9wZSBpbiBhIHJlc3BvbnNlIG1lc3NhZ2UgY29udGFpbnMgYSBmYXVsdCB3aXRoIGF0dGFjaG1lbnRzCi0gICAgICAvLyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDpvdXRwdXQgZWxlbWVudCBpbiB0aGUgZGVzY3JpcHRpb24gaXMgbm90IAotICAgICAgLy8gZGVzY3JpYmVkIHVzaW5nIHRoZSBXU0RMIE1JTUUgYmluZGluZywgdGhlIGFzc2VydGlvbiBpcyBmYWlsZWQgIAotICAgICAgaWYgKChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWltZVBhcnRzKCkuY291bnQoKSA+IDEpICYmCi0gICAgICAgICAgKGdldE11bHRpcGFydFJlbGF0ZWRCaW5kaW5ncyhiaW5kaW5nT3BlcmF0aW9uKSA9PSBudWxsKSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPSAKLSAgICAgICAgICB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgiVGhlIG1lc3NhZ2UgY29udGFpbnMgXCIiICsgCi0gICAgICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNaW1lUGFydHMoKS5jb3VudCgpICsgIlwiIHBhcnQocykiLCAKLSAgICAgICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOyAKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIE11bHRpcGFydCByZWxhdGVkIGJpbmRpbmdzLCBpZiBkb2VzIG5vdCBmb3VuZCwgcmV0dXJucyBudWxsLgotICAgKiBAcGFyYW0gb3AgYmluZGluZyBvcGVyYXRpb24KLSAgICogQHJldHVybiBNdWx0aXBhcnQgcmVsYXRlZCBiaW5kaW5ncywgaWYgZG9lcyBub3QgZm91bmQsIHJldHVybnMgbnVsbC4KLSAgICovCi0gIHByaXZhdGUgTUlNRU11bHRpcGFydFJlbGF0ZWQgZ2V0TXVsdGlwYXJ0UmVsYXRlZEJpbmRpbmdzKAotICAgICAgQmluZGluZ09wZXJhdGlvbiBvcCkgCi0gIHsKLSAgICAvLyBGaW5kaW5nIG9wZXJhdGlvbiBleHRlbnNpYmlsaXR5IGVsZW1zCi0gICAgLy8gaW4gdGhlIGJpbmRpbmcgZGVwZW5kaW5nIG9uIG1lc3NhZ2UgdHlwZQotICAgIExpc3QgZXh0RWxlbXMgPSBvcC5nZXRCaW5kaW5nT3V0cHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgLy8gY2hlY2sgbGlzdCBvbiBmaXJzdCBlbGVtZW50Ci0gICAgaWYoKGV4dEVsZW1zID09IG51bGwpIHx8IChleHRFbGVtcy5zaXplKCkgPT0gMCkgfHwgCi0gICAgICAgIShleHRFbGVtcy5nZXQoMCkgaW5zdGFuY2VvZiBNSU1FTXVsdGlwYXJ0UmVsYXRlZCkpCi0gICAgICByZXR1cm4gbnVsbDsKLSAgICByZXR1cm4gKE1JTUVNdWx0aXBhcnRSZWxhdGVkKSBleHRFbGVtcy5nZXQoMCk7IAotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9BUDE5MjguamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQVAxOTI4LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NjVmY2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9BUDE5MjguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU0NvbXBsZXhUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU0NvbnN0YW50czsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU0VsZW1lbnREZWNsYXJhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU01vZGVsOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhzLlhTTW9kZWxHcm91cDsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU09iamVjdExpc3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNQYXJ0aWNsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU1Rlcm07Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1pbWVQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk1JTUVDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuTUlNRVV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotLyoqCi0gKiBBUDE5MjgKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgZW52ZWxvcGUgY29udGFpbmluZyBhIFVSSSByZWZlcmVuY2UKLSAqIHRoYXQgaXMgdHlwZWQgdXNpbmcgdGhlIHJlZjpzd2FSZWYgc2NoZW1hIHR5cGU8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+SW4gYW4gZW52ZWxvcGUsIGEgVVJJIHJlZmVyZW5jZSB0aGF0IGlzIHR5cGVkIHVzaW5nCi0gKiB0aGUgcmVmOnN3YVJlZiBzY2hlbWEgdHlwZSByZXNvbHZlcyB0byBhIE1JTUUgcGFydCBpbiB0aGUgc2FtZSBtZXNzYWdlCi0gKiBhcyB0aGUgZW52ZWxvcGUuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMTkyOCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMTkyOChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAoIWVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0gICAgICAvLyBnZXQgdGhlIHJyb3QgcGFydCBvZiBhIG11bHRpcGFydC9yZWxhdGVkIG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IHJvb3QgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKTsKLSAgICAgIE1pbWVQYXJ0cyBtaW1lUGFydHMgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWltZVBhcnRzKCk7Ci0KLSAgICAgIC8vIGdldCBhbiBvcGVyYXRpb24gbWF0Y2hlZCBmb3IgdGhlIG1lc3NhZ2UKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRPcGVyYXRpb25NYXRjaCgKLSAgICAgICAgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlUeXBlKCksIHJvb3QpOwotIAotICAgICAgLy8gaWYgbm8gb25lIG9wZXJhdGlvbiBtYXRjaGVzLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoYmluZGluZ09wZXJhdGlvbiA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyBhbmQgbWVzc2FnZQotICAgICAgTGlzdCBleHRFbGVtczsKLSAgICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICAgIGlmIChNZXNzYWdlRW50cnkuVFlQRV9SRVFVRVNUCi0gICAgICAgIC5lcXVhbHMoZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlUeXBlKCkpKQotICAgICAgewotICAgICAgICBleHRFbGVtcyA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCkgPT0gbnVsbCA/IG51bGwKLSAgICAgICAgICA6IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICAgIG1lc3NhZ2UgPSBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldElucHV0KCkgPT0gbnVsbCA/IG51bGwKLSAgICAgICAgICA6IGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkuZ2V0SW5wdXQoKS5nZXRNZXNzYWdlKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGV4dEVsZW1zID0gYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCkgPT0gbnVsbCA/IG51bGwKLSAgICAgICAgICA6IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICBtZXNzYWdlID0gYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRPdXRwdXQoKSA9PSBudWxsID8gbnVsbAotICAgICAgICAgIDogYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRPdXRwdXQoKS5nZXRNZXNzYWdlKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIGluIHRoZSBXU0RMIGJpbmRpbmcgb3BlcmF0aW9uLAotICAgICAgLy8gdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKGV4dEVsZW1zID09IG51bGwgfHwgZXh0RWxlbXMuc2l6ZSgpIDwgMSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gQ29sbGVjdGluZyB0aGUgbmFtZXMgb2Ygc2NoZW1hIGVsZW1lbnRzIHRoYXQgYXJlIGRlZmluZWQKLSAgICAgIC8vIHdpdGggdGhlIHJlZjpzd2FSZWYgc2NoZW1hIHR5cGUKLSAgICAgIExpc3Qgc3dhUmVmcyA9IGdldFN3YVJlZnMoKEV4dGVuc2liaWxpdHlFbGVtZW50KWV4dEVsZW1zLmdldCgwKSwgbWVzc2FnZSk7Ci0gICAgICAvLyBJZiBzdWNoIHNjaGVtYSBlbGVtZW50cyBhcmUgbm90IGZvdW5kLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoc3dhUmVmcy5pc0VtcHR5KCkpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSBzY2hlbWEgZWxlbWVudCBuYW1lcwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzd2FSZWZzLnNpemUoKTsgaSsrKQotICAgICAgewotICAgICAgICBRTmFtZSBlbGVtTmFtZSA9IChRTmFtZSkgc3dhUmVmcy5nZXQoaSk7Ci0gICAgICAgIC8vIExvb2tpbmcgZm9yIHN1Y2ggZWxlbWVudHMgaW4gdGhlIHJvb3QgTUlNRSBwYXJ0Ci0gICAgICAgIE5vZGVMaXN0IGVsZW1zID0gcm9vdC5nZXREb2N1bWVudEVsZW1lbnQoKS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICAgICAgZWxlbU5hbWUuZ2V0TmFtZXNwYWNlVVJJKCksIGVsZW1OYW1lLmdldExvY2FsUGFydCgpKTsKLSAgICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIHJlZjpzd2FSZWYgcmVmZXJlbmNlcwotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGVsZW1zLmdldExlbmd0aCgpOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICBOb2RlIGVsZW0gPSBlbGVtcy5pdGVtKGopOwotICAgICAgICAgIC8vIEdldHRpbmcgYSB2YWx1ZSBvZiB0aGlzIHJlZmVyZW5jZQotICAgICAgICAgIFN0cmluZyByZWYgPSBlbGVtLmdldEZpcnN0Q2hpbGQoKSA9PSBudWxsID8gbnVsbAotICAgICAgICAgICAgOiBlbGVtLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKTsKLSAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgaW52YWxpZCwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAocmVmID09IG51bGwpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGVsZW1lbnQgIiArIGVsZW0uZ2V0Tm9kZU5hbWUoKQotICAgICAgICAgICAgICArICIgb2YgdGhlIHJlZjpzd2FSZWYgc2NoZW1hIHR5cGUgaXMgc3BlY2lmaWVkLCBidXQgaXRzIHZhdWxlIgotICAgICAgICAgICAgICArICIgaXMgaW52YWxpZC4iKTsKLSAgICAgICAgICAvLyBJZiB0aGUgVVJJIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlICJjaWQ6IiBjb250ZW50LWlkIHByZWZpeAotICAgICAgICAgIC8vIFRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgICAgaWYgKCFyZWYuc3RhcnRzV2l0aCgiY2lkOiIpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgVVJJICIgKyByZWYKLSAgICAgICAgICAgICAgKyAiIG9mIHRoZSByZWY6c3dhUmVmIHNjaGVtYSB0eXBlIG11c3QgdXNlIHRoZSBjaWQ6IHByZWZpeC4iKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYm9vbGVhbiByZWZGb3VuZCA9IGZhbHNlOwotICAgICAgICAgIEl0ZXJhdG9yIGlNaW1lUGFydHMgPSBtaW1lUGFydHMuZ2V0UGFydHMoKS5pdGVyYXRvcigpOwotICAgICAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSBNSU1FIHBhcnRzIG9mIHRoZSBTT0FQIG1lc3NhZ2UKLSAgICAgICAgICB3aGlsZSAoaU1pbWVQYXJ0cy5oYXNOZXh0KCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgTWltZVBhcnQgbWltZVBhcnQgPSAoTWltZVBhcnQpaU1pbWVQYXJ0cy5uZXh0KCk7Ci0gICAgICAgICAgICAvLyBHZXR0aW5nIHBhcnQncyBDb250ZW50LUlEIGhlYWRlcgotICAgICAgICAgICAgU3RyaW5nIGNpZCA9IE1JTUVVdGlscy5nZXRNaW1lSGVhZGVyQXR0cmlidXRlKAotICAgICAgICAgICAgICAgIG1pbWVQYXJ0LmdldEhlYWRlcnMoKSwgTUlNRUNvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9JRCk7Ci0gICAgICAgICAgICBpZiAoY2lkICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vIElmIHRoZSBoZWFkZXIgdmFsdWUgZXF1YWxzIHRoZSByZWZlcmVuY2UgVVJJLAotICAgICAgICAgICAgICAvLyB0aGUgY29ycmVzcG9uZGluZyBNSU1FIHBhcnQgaXMgZm91bmQKLSAgICAgICAgICAgICAgaWYgKGNpZC5lcXVhbHMoJzwnICsgcmVmLnN1YnN0cmluZyg0KSArICc+JykpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZWZGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgLy8gSWYgdGhlIGNvcnJlc3BvbmRpbmcgTUlNRSBwYXJ0IGlzIG5vdCBmb3VuZAotICAgICAgICAgIC8vIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgICAgaWYgKCFyZWZGb3VuZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgU09BUCBtZXNzYWdlIGRvZXMgbm90IGNvbnRhaW4iCi0gICAgICAgICAgICAgICsgIiBhIE1JTUUgcGFydCB3aXRoIHRoZSA8IiArIHJlZi5zdWJzdHJpbmcoNCkgKyAiPiBDb250ZW50LUlELiIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGFuYWUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gYWZlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICBhZmUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb2xsZWN0cyBuYW1lcyBvZiBzY2hlbWEgZWxlbWVudHMgdGhhdCBhcmUgZGVmaW5lZCB3aXRoIHRoZSByZWY6c3dhUmVmCi0gICAqIHNjaGVtYSB0eXBlLgotICAgKiBAcGFyYW0gZXh0RWxlbSBhIGxpc3Qgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cwotICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gYSBsaXN0IG9mIHN1Y2ggbmFtZXMgZm91bmQuCi0gICAqLwotICBwcml2YXRlIExpc3QgZ2V0U3dhUmVmcyhFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtLCBNZXNzYWdlIG1lc3NhZ2UpCi0gIHsKLSAgICBMaXN0IHN3YVJlZnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgaWYgKGV4dEVsZW0uZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NETF9NSU1FX01VTFRJUEFSVCkpCi0gICAgewotICAgICAgLy8gR2V0dGluZyB0aGUgcm9vdCBtaW1lOnBhcnQKLSAgICAgIExpc3QgbWltZVBhcnRzID0gKChNSU1FTXVsdGlwYXJ0UmVsYXRlZCkgZXh0RWxlbSkuZ2V0TUlNRVBhcnRzKCk7Ci0gICAgICBpZiAobWltZVBhcnRzLnNpemUoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIC8vIEdldHRpbmcgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyBvZiB0aGUgZmlyc3QgbWltZTpwYXJ0Ci0gICAgICAgIExpc3QgZWxlbXMgPSAoKE1JTUVQYXJ0KSBtaW1lUGFydHMuZ2V0KDApKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgICAgTGlzdCBib3VuZFBhcnRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgICAvLyBHb2luZyB0aHJvdWdoIGFsbCB0aGUgTUlNRSBwYXJ0J3MgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cwotICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IGVsZW1zLnNpemUoKTsgayArKykKLSAgICAgICAgewotICAgICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGVsZW0gPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGVsZW1zLmdldChrKTsKLSAgICAgICAgICAvLyBJZiB0aGF0IGlzIGEgc29hcDpib2R5Ci0gICAgICAgICAgaWYgKGVsZW0uZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NETF9TT0FQX0JPRFkpICYmIG1lc3NhZ2UgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBHZXR0aW5nIHBhcnRzIHNwZWNpZmllZCBieSB0aGUgcGFydHMgYXR0cmlidXRlCi0gICAgICAgICAgICBMaXN0IGJvZHlQYXJ0cyA9ICgoU09BUEJvZHkpIGVsZW0pLmdldFBhcnRzKCk7Ci0gICAgICAgICAgICAvLyBDb2xsZWN0aW5nIGFsbCB0aGUgbWVzc2FnZSBwYXJ0cyBib3VuZCBieSB0aGlzIHNvYXBiaW5kOmJvZHkKLSAgICAgICAgICAgIEl0ZXJhdG9yIGkgPSBtZXNzYWdlLmdldFBhcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgIHdoaWxlIChpLmhhc05leHQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpIGkubmV4dCgpOwotICAgICAgICAgICAgICBpZiAoYm9keVBhcnRzID09IG51bGwgfHwgYm9keVBhcnRzLmNvbnRhaW5zKHBhcnQuZ2V0TmFtZSgpKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJvdW5kUGFydHMuYWRkKHBhcnQpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vIGVsc2UgaWYgdGhhdCBpcyBhIHNvYXA6aGVhZGVyCi0gICAgICAgICAgZWxzZSBpZiAoZWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX1NPQVBfSEVBREVSKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBRTmFtZSBtc2dOYW1lOwotICAgICAgICAgICAgU3RyaW5nIHBhcnROYW1lOwotICAgICAgICAgICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBTT0FQSGVhZGVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBTT0FQSGVhZGVyIGhlYWRlciA9IChTT0FQSGVhZGVyKSBlbGVtOwotICAgICAgICAgICAgICAvLyBJZiB0aGUgcGFydCBpcyBib3VuZCBieSB0aGlzIGVsZW1lbnQKLSAgICAgICAgICAgICAgbXNnTmFtZSA9IGhlYWRlci5nZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgICAgIHBhcnROYW1lID0gaGVhZGVyLmdldFBhcnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIFdTREw0SiAxLjQgZG9lcyBub3QgcmVjb2duaXplIHNvYXA6aGVhZGVyIGVsZW1lbnRzIHRoYXQKLSAgICAgICAgICAgIC8vIGFyZSBlbmNsb3NlZCBpbiBtaW1lOm11bHRpcGFydFJlbGF0ZWQsIHNvIHVzaW5nIGEgd29ya2Fyb3VuZAotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBFbGVtZW50IGhlYWRlciA9Ci0gICAgICAgICAgICAgICAgKChVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGVsZW0pLmdldEVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgLy8gR2V0dGluZyB0aGUgZWxlbWVudCdzIG1lc3NhZ2UgYXR0cmlidXRlCi0gICAgICAgICAgICAgIFN0cmluZyBtc2dWYWwgPSBoZWFkZXIuZ2V0QXR0cmlidXRlKCJtZXNzYWdlIik7Ci0gICAgICAgICAgICAgIC8vIGZpbmRpbmcgdGhlIGNvbG9uIGRlbGltaXRlcgotICAgICAgICAgICAgICBpbnQgY29sb25Qb3MgPSBtc2dWYWwuaW5kZXhPZigiOiIpOwotICAgICAgICAgICAgICBTdHJpbmcgbnMgPSBudWxsOwotICAgICAgICAgICAgICAvLyBHZXR0aW5nIGEgbG9jYWwgcGFydAotICAgICAgICAgICAgICBTdHJpbmcgbHAgPSBjb2xvblBvcyA+IC0xID8gbXNnVmFsLnN1YnN0cmluZyhjb2xvblBvcyArIDEpIDogbXNnVmFsOwotICAgICAgICAgICAgICAvLyBJZiB0aGUgZGVsaW1pdGVyIGlzIGZvdW5kCi0gICAgICAgICAgICAgIGlmIChjb2xvblBvcyA+IC0xKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gUmV0cmlldmluZyBhIG5hbWVzcGFjZSBVUkkKLSAgICAgICAgICAgICAgICBucyA9IHZhbGlkYXRvci5nZXRXU0RMRG9jdW1lbnQoKQotICAgICAgICAgICAgICAgIC5nZXREZWZpbml0aW9ucygpLmdldE5hbWVzcGFjZShtc2dWYWwuc3Vic3RyaW5nKDAsIGNvbG9uUG9zKSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgbXNnTmFtZSA9IG5ldyBRTmFtZShucywgbHApOwotICAgICAgICAgICAgICBwYXJ0TmFtZSA9IGhlYWRlci5nZXRBdHRyaWJ1dGUoInBhcnQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEdldHRpbmcgYSBtZXNzYWdlIHJlZmVyZW5jZWQgYnkgdGhpcyBzb2FwYmluZDpoZWFkZXIgZWxlbWVudAotICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSAKLSAgICAgICAgICAgICAgdmFsaWRhdG9yLmdldFdTRExEb2N1bWVudCgpLmdldERlZmluaXRpb25zKCkuZ2V0TWVzc2FnZShtc2dOYW1lKTsKLSAgICAgICAgICAgIGlmIChtc2cgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy8gQWRkaW5nIHRoZSBwYXJ0IHRvIHRoZSBsaXN0IG9mIGJvdW5kIHBhcnRzCi0gICAgICAgICAgICAgIFBhcnQgcGFydCA9IG1zZy5nZXRQYXJ0KHBhcnROYW1lKTsKLSAgICAgICAgICAgICAgaWYgKHBhcnQgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICBib3VuZFBhcnRzLmFkZChwYXJ0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbGwgdGhlIGJvdW5kIHBhcnRzIGZyb20gc29hcGJpbmQ6Ym9keSBhbmQgc29hcGJpbmQ6aGVhZGVyCi0gICAgICAgIC8vIGFyZSBjb2xsZWN0ZWQsIGZpbmRpbmcgc3dhUmVmIHJlZmVyZW5jZXMuCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYm91bmRQYXJ0cy5zaXplKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIFBhcnQgcGFydCA9IChQYXJ0KSBib3VuZFBhcnRzLmdldChpKTsKLSAgICAgICAgICBRTmFtZSByZWY7Ci0gICAgICAgICAgc2hvcnQgdHlwZTsKLSAgICAgICAgICAvLyBHZXR0aW5nIGVpdGhlciBwYXJ0J3MgZWxlbWVudCByZWZlcmVuY2Ugb3IgdHlwZSByZWZlcmVuY2UKLSAgICAgICAgICBpZiAoKHJlZiA9IHBhcnQuZ2V0VHlwZU5hbWUoKSkgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlID0gWFNDb25zdGFudHMuVFlQRV9ERUZJTklUSU9OOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmICgocmVmID0gcGFydC5nZXRFbGVtZW50TmFtZSgpKSAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGUgPSBYU0NvbnN0YW50cy5FTEVNRU5UX0RFQ0xBUkFUSU9OOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBUaGUgcGFydCBjb25hdGlucyBuZWl0aGVyIGVsZW1lbnQgbm9yIHR5cGUgYXR0cmlidXRlLAotICAgICAgICAgIC8vIHByb2NlZWRpbmcgd2l0aCB0aGUgbmV4dCBwYXJ0Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBHZXR0aW5nIGEgbGlzdCBvZiBzY2hlbWFzIGRlZmluZWQKLSAgICAgICAgICBNYXAgc2NoZW1hcyA9IHZhbGlkYXRvci5nZXRXU0RMRG9jdW1lbnQoKS5nZXRTY2hlbWFzKCk7Ci0gICAgICAgICAgLy8gR29pbmcgdGhyb3VnaCB0aGUgc2NoZW1hcwotICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gc2NoZW1hcy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgWFNNb2RlbCB4c01vZGVsID0gKFhTTW9kZWwpIGl0Lm5leHQoKTsKLSAgICAgICAgICAgIFhTVHlwZURlZmluaXRpb24geHNUeXBlID0gbnVsbDsKLSAgICAgICAgICAgIC8vIEdldHRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcGFydCB0eXBlCi0gICAgICAgICAgICBpZiAodHlwZSA9PSBYU0NvbnN0YW50cy5FTEVNRU5UX0RFQ0xBUkFUSU9OKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBHZXR0aW5nIHNjaGVtYSBlbGVtZW50Ci0gICAgICAgICAgICAgIFhTRWxlbWVudERlY2xhcmF0aW9uIGVsZW0gPSB4c01vZGVsLmdldEVsZW1lbnREZWNsYXJhdGlvbigKLSAgICAgICAgICAgICAgICByZWYuZ2V0TG9jYWxQYXJ0KCksIHJlZi5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgICAgICAgICAgIGlmIChlbGVtICE9IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBHZXR0aW5nIGVsZW1lbnQncyB0eXBlCi0gICAgICAgICAgICAgICAgeHNUeXBlID0gZWxlbS5nZXRUeXBlRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIHJlZjpzd2FSZWYKLSAgICAgICAgICAgICAgICBpZiAoV1NJQ29uc3RhbnRzLk5TX1VSSV9TV0FfUkVGLmVxdWFscyh4c1R5cGUuZ2V0TmFtZSgpKQotICAgICAgICAgICAgICAgICAgJiYgV1NJQ29uc3RhbnRzLlNDSEVNQV9UWVBFX1NXQV9SRUYuZXF1YWxzKAotICAgICAgICAgICAgICAgICAgICB4c1R5cGUuZ2V0TmFtZXNwYWNlKCkpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgbmFtZSBvZiB0aGUgZWxlbWVudCB0byB0aGUgbGlzdAotICAgICAgICAgICAgICAgICAgc3dhUmVmcy5hZGQoCi0gICAgICAgICAgICAgICAgICAgIG5ldyBRTmFtZShlbGVtLmdldE5hbWVzcGFjZSgpLCBlbGVtLmdldE5hbWUoKSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICB4c1R5cGUgPSB4c01vZGVsLmdldFR5cGVEZWZpbml0aW9uKAotICAgICAgICAgICAgICAgIHJlZi5nZXRMb2NhbFBhcnQoKSwgcmVmLmdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIENvbGxlY3RpbmcgYWxsIHRoZSBlbGVtZW50IG5hbWVzLGFkZGluZyBlbGVtZW50IG5hbWVzIHRvIHRoZSBsaXN0Ci0gICAgICAgICAgICBzd2FSZWZzLmFkZEFsbChjb2xsZWN0U3dhUmVmcyh4c1R5cGUpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHN3YVJlZnM7Ci0gIH0KLQotICAvKioKLSAgICogQ29sbGVjdHMgbmFtZXMgb2Ygc2NoZW1hIGVsZW1lbnRzIHRoYXQgYXJlIGRlZmluZWQgd2l0aCB0aGUgcmVmOnN3YVJlZgotICAgKiBzY2hlbWEgdHlwZS4KLSAgICogQHBhcmFtIHhzVHlwZSBhIHNjaGVtYSB0eXBlLgotICAgKiBAcmV0dXJuIGEgbGlzdCBvZiBuYW1lcyBmb3VuZC4KLSAgICovCi0gIHByaXZhdGUgTGlzdCBjb2xsZWN0U3dhUmVmcyhYU1R5cGVEZWZpbml0aW9uIHhzVHlwZSkKLSAgewotICAgIExpc3Qgc3dhUmVmcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBpZiAoeHNUeXBlICE9IG51bGwpCi0gICAgewotICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbXBsZXggdHlwZQotICAgICAgaWYgKHhzVHlwZS5nZXRUeXBlQ2F0ZWdvcnkoKSA9PSBYU1R5cGVEZWZpbml0aW9uLkNPTVBMRVhfVFlQRSkKLSAgICAgIHsKLSAgICAgICAgWFNDb21wbGV4VHlwZURlZmluaXRpb24geHNDb21wbGV4VHlwZSA9Ci0gICAgICAgICAgKFhTQ29tcGxleFR5cGVEZWZpbml0aW9uKSB4c1R5cGU7Ci0gICAgICAgIC8vIElmIGl0IGNvbnRhaW5zIG1peGVkIGNvbnRleHQKLSAgICAgICAgaWYgKHhzQ29tcGxleFR5cGUuZ2V0UGFydGljbGUoKSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gY29sbGVjdGluZyBlbGVtZW50IG5hbWVzIAotICAgICAgICAgIHN3YVJlZnMuYWRkQWxsKGNvbGxlY3RTd2FSZWZzKHhzQ29tcGxleFR5cGUuZ2V0UGFydGljbGUoKS5nZXRUZXJtKCkpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gc3dhUmVmczsKLSAgfQotCi0gIC8qKgotICAgKiBDb2xsZWN0cyBuYW1lcyBvZiBzY2hlbWEgZWxlbWVudHMgdGhhdCBhcmUgZGVmaW5lZCB3aXRoIHRoZSByZWY6c3dhUmVmCi0gICAqIHNjaGVtYSB0eXBlLgotICAgKiBAcGFyYW0gdGVybSBhIHNjaGVtYSB0ZXJtLgotICAgKiBAcmV0dXJuIGEgbGlzdCBvZiBuYW1lcyBmb3VuZC4KLSAgICovCi0gIHByaXZhdGUgTGlzdCBjb2xsZWN0U3dhUmVmcyhYU1Rlcm0gdGVybSkKLSAgewotICAgIExpc3Qgc3dhUmVmcyA9IG5ldyBBcnJheUxpc3QoKTsgCi0gICAgLy8gSWYgYSB0ZXJtIGlzIGFuIGVsZW1lbnQgZGVjbGFyYXRpb24KLSAgICBpZiAodGVybS5nZXRUeXBlKCkgPT0gWFNDb25zdGFudHMuRUxFTUVOVF9ERUNMQVJBVElPTikKLSAgICB7Ci0gICAgICBYU0VsZW1lbnREZWNsYXJhdGlvbiBlbGVtID0gKFhTRWxlbWVudERlY2xhcmF0aW9uKSB0ZXJtOwotICAgICAgWFNUeXBlRGVmaW5pdGlvbiB4c1R5cGUgPSBlbGVtLmdldFR5cGVEZWZpbml0aW9uKCk7Ci0gICAgICAvLyBJZiBlbGVtZW50J3MgdHlwZSBpcyByZWY6c3dhUmVmCi0gICAgICBpZiAoV1NJQ29uc3RhbnRzLk5TX1VSSV9TV0FfUkVGLmVxdWFscyh4c1R5cGUuZ2V0TmFtZXNwYWNlKCkpCi0gICAgICAgICYmIFdTSUNvbnN0YW50cy5TQ0hFTUFfVFlQRV9TV0FfUkVGLmVxdWFscyh4c1R5cGUuZ2V0TmFtZSgpKSkKLSAgICAgIHsKLSAgICAgICAgLy8gQWRkIGVsZW1lbnQncyBuYW1lIHRvIHRoZSBsaXN0Ci0gICAgICAgIHN3YVJlZnMuYWRkKAotICAgICAgICAgIG5ldyBRTmFtZShlbGVtLmdldE5hbWVzcGFjZSgpLCBlbGVtLmdldE5hbWUoKSkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBlbHNlIGNvbGxlY3RpbmcgZWxlbWVudCBuYW1lcyBmcm9tIGVsZW1lbnQncyB0eXBlCi0gICAgICAgIHN3YVJlZnMuYWRkQWxsKGNvbGxlY3RTd2FSZWZzKHhzVHlwZSkpOwotICAgICAgfQotICAgIH0KLSAgICAvLyBlbHNlIGlmIGEgdGVybSBpcyBhIG1vZGVsIGdyb3VwCi0gICAgZWxzZSBpZih0ZXJtLmdldFR5cGUoKSA9PSBYU0NvbnN0YW50cy5NT0RFTF9HUk9VUCkKLSAgICB7Ci0gICAgICAvLyBHZXR0aW5nIGEgbGlzdCBvZiBQYXJ0aWNsZSBzY2hlbWEgY29tcG9uZW50cwotICAgICAgWFNPYmplY3RMaXN0IGxpc3QgPSAoKFhTTW9kZWxHcm91cCkgdGVybSkuZ2V0UGFydGljbGVzKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3QuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgLy8gQ29sbGVjdGluZyBlbGVtZW50IG5hbWVzCi0gICAgICAgIHN3YVJlZnMuYWRkQWxsKGNvbGxlY3RTd2FSZWZzKCgoWFNQYXJ0aWNsZSkgbGlzdC5pdGVtKGkpKS5nZXRUZXJtKCkpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHN3YVJlZnM7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAwNS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEwMDUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhNDY1ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAwNS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5PcGVyYXRpb25TaWduYXR1cmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVHlwZXNSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLQotLyoqCi0gKiBCUDEwMDUuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDEwMDUgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEwMDUoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gUGFyc2UgbWVzc2FnZQotICAgICAgRG9jdW1lbnQgZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCk7Ci0KLSAgICAgIC8vIElmIHRoaXMgaXMgYSBmYXVsdCBtZXNhZ2UsIHRoZW4gaXQgaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc0ZhdWx0KGRvYykpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGEgc29hcCBib2R5IGVsZW1lbnQKLSAgICAgIGlmICghdGhpcy52YWxpZGF0b3IuY29udGFpbnNTb2FwQm9keVdpdGhDaGlsZChkb2MpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvLyBQYXJzZSByZXF1ZXN0IG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvY1JlcXVlc3QgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdERvY3VtZW50KCk7Ci0KLSAgICAgIC8vIGdldCBTT0FQQWN0aW9uCi0gICAgICBTdHJpbmcgaGVhZGVycyA9IGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0SFRUUEhlYWRlcnMoKTsKLSAgICAgIFN0cmluZyBhY3Rpb24gPSBudWxsOwotICAgICAgaWYgKGhlYWRlcnMgIT0gbnVsbCkKLSAgICAgICAgYWN0aW9uID0gKFN0cmluZykgSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoaGVhZGVycywgIjoiKS5nZXQoIlNPQVBBY3Rpb24iLnRvVXBwZXJDYXNlKCkpOwotCi0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXRCaW5kaW5ncygpWzBdOwotICAgICAgVHlwZXNSZWdpc3RyeSByZWdpc3RyeSA9Ci0gICAgICAgIG5ldyBUeXBlc1JlZ2lzdHJ5KAotICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmdldFdTRExEb2N1bWVudCgpLmdldERlZmluaXRpb25zKCksCi0gICAgICAgICAgdmFsaWRhdG9yKTsKLSAgICAgIE9wZXJhdGlvblNpZ25hdHVyZS5PcGVyYXRpb25NYXRjaCBtYXRjaCA9Ci0gICAgICAgIE9wZXJhdGlvblNpZ25hdHVyZS5tYXRjaE9wZXJhdGlvbigKLSAgICAgICAgICBkb2NSZXF1ZXN0LAotICAgICAgICAgIGFjdGlvbiwKLSAgICAgICAgICBiaW5kaW5nLAotICAgICAgICAgIHJlZ2lzdHJ5KTsKLSAgICAgIGlmIChtYXRjaCA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSBtYXRjaC5nZXRPcGVyYXRpb24oKTsKLQotICAgICAgLy8gSXMgcnBjIHN0eWxlPwotICAgICAgaWYgKCFXU0lDb25zdGFudHMKLSAgICAgICAgLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQwotICAgICAgICAuZXF1YWxzKG1hdGNoLmdldE9wZXJhdGlvblN0eWxlKCkpKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICBMaXN0IGV4dEVsZW1lbnRzID0gbnVsbDsKLQotICAgICAgaWYgKGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpICE9IG51bGwpCi0gICAgICAgIGV4dEVsZW1lbnRzID0KLSAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdPdXRwdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQotICAgICAgLy8gSXMgbWVzc2FnZSBSUEMtbGl0ZXJhbD8KLSAgICAgIGlmICghdmFsaWRhdG9yLmlzTGl0ZXJhbChleHRFbGVtZW50cykpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIC8vR2V0IG1lc3NhZ2UKLQotICAgICAgLy8gR2V0cyBib2R5Ci0gICAgICBOb2RlTGlzdCBzb2FwQm9keUxpc3QgPQotICAgICAgICBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKLSAgICAgICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsCi0gICAgICAgICAgWE1MVXRpbHMuU09BUF9FTEVNX0JPRFkpOwotICAgICAgaWYgKHNvYXBCb2R5TGlzdC5nZXRMZW5ndGgoKSA9PSAwIHx8IHNvYXBCb2R5TGlzdC5nZXRMZW5ndGgoKSA+IDEpCi0gICAgICB7Ci0gICAgICAgIC8vIFRoZXJlIGlzIG5vdCBhIGJvZHkgb3IgbW9yZSB0aGFuIG9uZSBib2RpZXMgaW4gdGhlIGVudmxvcGUuCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0gICAgICBFbGVtZW50IHNvYXBCb2R5RWxlbSA9IChFbGVtZW50KSBzb2FwQm9keUxpc3QuaXRlbSgwKTsKLQotICAgICAgLy8gRmluZCB3cmFwcGVyIGVsZW1lbnQgaW4gdGhlIGJvZHkKLSAgICAgIEVsZW1lbnQgd3JhcHBlckVsZW1lbnQgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKHNvYXBCb2R5RWxlbSk7Ci0gICAgICBpZiAod3JhcHBlckVsZW1lbnQgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHdyYXBwZXJFbGVtZW50Ci0gICAgICAgIC5nZXRMb2NhbE5hbWUoKQotICAgICAgICAuZXF1YWxzKGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpICsgIlJlc3BvbnNlIikpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIH0KLQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDA3LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAwNy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Njk0ODY5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDA3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci0KLQotLyoqCi0gKiBCUDEwMDcKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgbWVzc2FnZSwgaW4gdGhlIG1lc3NhZ2UgbG9nIGZpbGU8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+RFREcyByZWxhdGluZyB0byBzb2FwOmhlYWRlciBvciBzb2FwOmJvZHkgZG9jdW1lbnRzLCBhcmUgbm90IHByZXNlbnQgaW4gdGhlIG1lc3NhZ2U6IG5vIERPQ1RZUEUgZWxlbWVudCBpcyBwcmVzZW50LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDEwMDcgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEwMDcoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gUGFyc2UgbG9nIG1lc3NhZ2UgCi0gICAgRG9jdW1lbnQgZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCk7Ci0gICAgaWYgKGRvYyA9PSBudWxsKQotICAgIHsKLSAgICAgIC8vIG1lc3NhZ2UgaXMgZW1wdHkgb3IgaW52YWxpZCwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgLy8gZWxzZSBpZiB0aGUgbWVzc2FnZSBjb250YWlucyBhIERvY3VtZW50IFR5cGUgRGVjbGFyYXRpb24sIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgZWxzZSBpZiAoZG9jLmdldERvY3R5cGUoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICB0ZXN0QXNzZXJ0aW9uLmdldEZhaWx1cmVEZXRhaWxEZXNjcmlwdGlvbigpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDA4LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAwOC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTIwMjM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDA4LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5PcGVyYXRpb25TaWduYXR1cmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVHlwZXNSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLQotLyoqCi0gKiBCUDEwMDguCi0gKiBNZXNzYWdlIGhhcyBwYXJ0IGFjY2Vzc29yIGVsZW1lbnRzIGZvciBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdmFsdWUsIGluIG5vIG5hbWVzcGFjZXMsIAotICogYnV0IHRoZSBjaGlsZHJlbiBvZiB0aGVzZSBhcmUgbmFtZXNwYWNlIHF1YWxpZmllZCB3aXRoIHRoZSBzYW1lIHRhcmdldE5hbWVzcGFjZSB3aXRoIHdoaWNoIAotICogdGhlaXIgdHlwZXMgYXJlIGRlZmluZWQuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDEwMDggZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEwMDgoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLQotICAgICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oCi0gICAgICAgICAgQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRSk7Ci0KLSAgICAgIC8vIFBhcnNlIG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICAvLyBJZiB0aGVyZSBpcyBubyBtZXNzYWdlLCB0aGVuIHRocm93IGZhaWwgZXhjZXB0aW9uCi0gICAgICBpZiAoZG9jID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCk7Ci0KLSAgICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc0ZhdWx0KGRvYykpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKAotICAgICAgICAgIEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEUpOwotICAgICAgfQotCi0gICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHNvYXAgYm9keSBlbGVtZW50Ci0gICAgICBpZiAoIXRoaXMudmFsaWRhdG9yLmNvbnRhaW5zU29hcEJvZHlXaXRoQ2hpbGQoZG9jKSkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgLy8gUGFyc2UgcmVxdWVzdCBtZXNzYWdlCi0gICAgICBEb2N1bWVudCBkb2NSZXF1ZXN0ID0gZW50cnlDb250ZXh0LmdldFJlcXVlc3REb2N1bWVudCgpOwotCi0gICAgICAvLyBnZXQgU09BUEFjdGlvbgotICAgICAgU3RyaW5nIGFjdGlvbiA9Ci0gICAgICAgIHZhbGlkYXRvci5nZXRTb2FwQWN0aW9uKGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0SFRUUEhlYWRlcnMoKSk7Ci0KLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IHZhbGlkYXRvci5hbmFseXplckNvbnRleHQuZ2V0Q2FuZGlkYXRlSW5mbygpLmdldEJpbmRpbmdzKClbMF07Ci0gICAgICAvL0RlZmluaXRpb24gZGVmaW5pdGlvbiA9IGVudHJ5Q29udGV4dC5nZXRBbmFseXplckNvbnRleHQoKS5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0RGVmaW5pdGlvbnMoKVswXTsKLSAgICAgIFR5cGVzUmVnaXN0cnkgcmVnaXN0cnkgPQotICAgICAgICBuZXcgVHlwZXNSZWdpc3RyeSgKLSAgICAgICAgICB0aGlzLnZhbGlkYXRvci5nZXRXU0RMRG9jdW1lbnQoKS5nZXREZWZpbml0aW9ucygpLAotICAgICAgICAgIHZhbGlkYXRvcik7Ci0gICAgICBPcGVyYXRpb25TaWduYXR1cmUuT3BlcmF0aW9uTWF0Y2ggbWF0Y2ggPQotICAgICAgICBPcGVyYXRpb25TaWduYXR1cmUubWF0Y2hPcGVyYXRpb24oCi0gICAgICAgICAgZG9jUmVxdWVzdCwKLSAgICAgICAgICBhY3Rpb24sCi0gICAgICAgICAgYmluZGluZywKLSAgICAgICAgICByZWdpc3RyeSk7Ci0gICAgICBpZiAobWF0Y2ggPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gbWF0Y2guZ2V0T3BlcmF0aW9uKCk7Ci0KLSAgICAgIC8vIElzIHJwYyBzdHlsZT8KLSAgICAgIGlmICghV1NJQ29uc3RhbnRzCi0gICAgICAgIC5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMKLSAgICAgICAgLmVxdWFscyhtYXRjaC5nZXRPcGVyYXRpb25TdHlsZSgpKSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oCi0gICAgICAgICAgQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRSk7Ci0KLSAgICAgIC8vIEdldHMgYm9keQotICAgICAgTm9kZUxpc3Qgc29hcEJvZHlMaXN0ID0KLSAgICAgICAgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQLAotICAgICAgICAgIFhNTFV0aWxzLlNPQVBfRUxFTV9CT0RZKTsKLSAgICAgIGlmIChzb2FwQm9keUxpc3QuZ2V0TGVuZ3RoKCkgPT0gMCB8fCBzb2FwQm9keUxpc3QuZ2V0TGVuZ3RoKCkgPiAxKQotICAgICAgewotICAgICAgICAvLyBUaGVyZSBpcyBub3QgYSBib2R5IG9yIG1vcmUgdGhhbiBvbmUgYm9kaWVzIGluIHRoZSBlbnZsb3BlLgotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigpOwotICAgICAgfQotICAgICAgRWxlbWVudCBzb2FwQm9keUVsZW0gPSAoRWxlbWVudCkgc29hcEJvZHlMaXN0Lml0ZW0oMCk7Ci0KLSAgICAgIHJlc3VsdCA9IG51bGw7Ci0KLSAgICAgIC8vIEZpbmQgb3BlcmF0aW9uIGluIHRoZSBib2R5Ci0gICAgICBFbGVtZW50IHNvYXBPcGVyYXRpb24gPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKHNvYXBCb2R5RWxlbSk7Ci0gICAgICBpZiAoc29hcE9wZXJhdGlvbiA9PSBudWxsKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvLyBGaW5kIG9wZXJhdGlvbiBtZXNzYWdlIGFuZCBleHQuIGVsZW1lbnRzIGluIHRoZSBiaW5kaW5nCi0gICAgICBNZXNzYWdlIG9wZXJhdGlvbk1lc3NhZ2UgPSBudWxsOwotICAgICAgTGlzdCBleHRFbGVtZW50cyA9IG51bGw7Ci0gICAgICBpZiAoTWVzc2FnZUVudHJ5Ci0gICAgICAgIC5UWVBFX1JFUVVFU1QKLSAgICAgICAgLmVxdWFscyhlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpKSkKLSAgICAgIHsKLSAgICAgICAgb3BlcmF0aW9uTWVzc2FnZSA9Ci0gICAgICAgICAgYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKTsKLSAgICAgICAgaWYgKGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCkgIT0gbnVsbCkKLSAgICAgICAgICBleHRFbGVtZW50cyA9Ci0gICAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoTWVzc2FnZUVudHJ5Ci0gICAgICAgICAgLlRZUEVfUkVTUE9OU0UKLSAgICAgICAgICAuZXF1YWxzKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRUeXBlKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgb3BlcmF0aW9uTWVzc2FnZSA9Ci0gICAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldE91dHB1dCgpLmdldE1lc3NhZ2UoKTsKLSAgICAgICAgICBpZiAoYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCkgIT0gbnVsbCkKLSAgICAgICAgICAgIGV4dEVsZW1lbnRzID0KLSAgICAgICAgICAgICAgYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLy8gSXMgbWVzc2FnZSBSUEMtbGl0ZXJhbD8KLSAgICAgIGlmICghdmFsaWRhdG9yLmlzTGl0ZXJhbChleHRFbGVtZW50cykpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKAotICAgICAgICAgIEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEUpOwotCi0gICAgICAvLyBnZXRzIGZpcnN0IGNoaWxkIG9mIG1lc3NhZ2UKLSAgICAgIEVsZW1lbnQgc29hcE1lc3NhZ2VQYXJ0ID0gWE1MVXRpbHMuZ2V0Rmlyc3RDaGlsZChzb2FwT3BlcmF0aW9uKTsKLSAgICAgIGlmIChzb2FwTWVzc2FnZVBhcnQgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvblBhc3NFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgd2hpbGUgKHNvYXBNZXNzYWdlUGFydCAhPSBudWxsKQotICAgICAgewotICAgICAgICAvLyBjaGVjayB3aGV0aGVyIHBhcnQgYWNjZXNzb3Igb3IgcmV0dXJuIGFyZSBpbiBubyBuYW1lc3BhY2UJCSAgICAJCQotCi0gICAgICAgIGlmIChzb2FwTWVzc2FnZVBhcnQuZ2V0TmFtZXNwYWNlVVJJKCkgIT0gbnVsbAotICAgICAgICAgIHx8ICIiLmVxdWFscyhzb2FwTWVzc2FnZVBhcnQuZ2V0TmFtZXNwYWNlVVJJKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vICAgIGNoZWNrIHdoZXRoZXIgY2hpbGRyZW4gYXJlIG5hbWVzcGFjZSBxdWFsaWZpZWQgCi0gICAgICAgIC8vICB3aXRoIHRoZSBzYW1lIHRhcmdldE5hbWVzcGFjZSB3aXRoIHdoaWNoIHRoZWlyIHR5cGVzIGFyZSBkZWZpbmVkCi0gICAgICAgIFN0cmluZyB0eXBlc1RhcmdldE5TID0KLSAgICAgICAgICBnZXRUeXBlTlMob3BlcmF0aW9uTWVzc2FnZSwgc29hcE1lc3NhZ2VQYXJ0LmdldExvY2FsTmFtZSgpKTsKLQotICAgICAgICBpZiAodHlwZXNUYXJnZXROUyA9PSBudWxsKQotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCk7Ci0KLSAgICAgICAgaWYgKCFjaGVja0NoaWxkcmVuTmFtZXNwYWNlKHNvYXBNZXNzYWdlUGFydCwgdHlwZXNUYXJnZXROUykpCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgc29hcE1lc3NhZ2VQYXJ0ID0gWE1MVXRpbHMuZ2V0TmV4dFNpYmxpbmcoc29hcE1lc3NhZ2VQYXJ0KTsKLSAgICAgIH0KLQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBpZiAoZS5nZXRNZXNzYWdlKCkgIT0gbnVsbCAmJiBlLmdldE1lc3NhZ2UoKS5sZW5ndGgoKSA+IDApCi0gICAgICAgIHJlc3VsdCA9IGUuZ2V0TWVzc2FnZSgpOwotICAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvblBhc3NFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgaWYgKHJlc3VsdCA9PSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRCkKLSAgICB7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChudWxsLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXRzIHBhcnQgdHlwZSBOUy4KLSAgICogQHBhcmFtIG1lc3NhZ2UKLSAgICogQHBhcmFtIHBhcnROYW1lCi0gICAqIEByZXR1cm4gU3RyaW5nCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBnZXRUeXBlTlMoTWVzc2FnZSBtZXNzYWdlLCBTdHJpbmcgcGFydE5hbWUpCi0gIHsKLSAgICBQYXJ0IHBhcnQgPSBtZXNzYWdlLmdldFBhcnQocGFydE5hbWUpOwotICAgIGlmIChwYXJ0ID09IG51bGwpCi0gICAgICByZXR1cm4gbnVsbDsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gcGFydC5nZXRUeXBlTmFtZSgpLmdldE5hbWVzcGFjZVVSSSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyBjaGlsZHJlbiBlbGVtZW50cycgbmFtZXNwYWNlLgotICAgKiBAcGFyYW0gbm9kZQotICAgKiBAcGFyYW0gdHlwZXNUYXJnZXROUwotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0KLSAgcHJpdmF0ZSBib29sZWFuIGNoZWNrQ2hpbGRyZW5OYW1lc3BhY2UoRWxlbWVudCBub2RlLCBTdHJpbmcgdHlwZXNUYXJnZXROUykKLSAgewotICAgIE5vZGVMaXN0IHBhcnRzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFydHMuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICB7Ci0gICAgICBFbGVtZW50IHBhcnQgPSAoRWxlbWVudCkgcGFydHMuaXRlbShpKTsKLSAgICAgIGlmICghdHlwZXNUYXJnZXROUy5lcXVhbHMocGFydC5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGlmICghY2hlY2tDaGlsZHJlbk5hbWVzcGFjZShwYXJ0LCB0eXBlc1RhcmdldE5TKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEwMDkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDA5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZTQwMWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEwMDkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMxMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uVHlwZTsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvblBhc3NFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NZXNzYWdlRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk9wZXJhdGlvblNpZ25hdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5UeXBlc1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIEJQMTAwOS4KLSAqIE1lc3NhZ2UgaW5jbHVkZXMgYWxsIHNvYXBiaW5kOmhlYWRlcnMgc3BlY2lmaWVkIGluIHRoZSB3c2RsOmlucHV0IAotICogKGlmIHJlcXVlc3QpIG9yIHdzZGw6b3V0cHV0IChpZiByZXNwb25zZSkgb2YgdGhlIG9wZXJhdGlvbiByZWZlcnJlZCAKLSAqIHRvIGJ5IGl0cyB3c2RsOmJpbmRpbmcsIGFuZCBtYXkgYWxzbyBpbmNsdWRlIGhlYWRlcnMgdGhhdCB3ZXJlIG5vdCBzcGVjaWZpZWQuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDEwMDkgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEwMDkoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUoVGVzdEFzc2VydGlvbiwgRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAodGhpcy52YWxpZGF0b3IuaXNPbmVXYXlSZXNwb25zZShlbnRyeUNvbnRleHQpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvLyBQYXJzZSBtZXNzYWdlCi0gICAgICBEb2N1bWVudCBkb2MgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKTsKLQotICAgICAgLy8gUGFyc2UgcmVxdWVzdCBtZXNzYWdlCi0gICAgICBEb2N1bWVudCBkb2NSZXF1ZXN0ID0gZW50cnlDb250ZXh0LmdldFJlcXVlc3REb2N1bWVudCgpOwotCi0gICAgICBpZiAoZG9jID09IG51bGwgfHwgZG9jUmVxdWVzdCA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHNvYXAgYm9keSBlbGVtZW50Ci0gICAgICBpZiAoIXRoaXMudmFsaWRhdG9yLmNvbnRhaW5zU29hcEJvZHlXaXRoQ2hpbGQoZG9jKSkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzRmF1bHQoZG9jKSkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oCi0gICAgICAgICAgQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIGdldCBTT0FQQWN0aW9uCi0gICAgICBTdHJpbmcgaGVhZGVycyA9IGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0SFRUUEhlYWRlcnMoKTsKLSAgICAgIFN0cmluZyBhY3Rpb24gPSBudWxsOwotICAgICAgaWYgKGhlYWRlcnMgIT0gbnVsbCkKLSAgICAgICAgYWN0aW9uID0gKFN0cmluZykgSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoaGVhZGVycywgIjoiKS5nZXQoIlNPQVBBY3Rpb24iLnRvVXBwZXJDYXNlKCkpOwotCi0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXRCaW5kaW5ncygpWzBdOwotICAgICAgVHlwZXNSZWdpc3RyeSByZWdpc3RyeSA9Ci0gICAgICAgIG5ldyBUeXBlc1JlZ2lzdHJ5KAotICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmdldFdTRExEb2N1bWVudCgpLmdldERlZmluaXRpb25zKCksCi0gICAgICAgICAgdmFsaWRhdG9yKTsKLSAgICAgIE9wZXJhdGlvblNpZ25hdHVyZS5PcGVyYXRpb25NYXRjaCBtYXRjaCA9Ci0gICAgICAgIE9wZXJhdGlvblNpZ25hdHVyZS5tYXRjaE9wZXJhdGlvbigKLSAgICAgICAgICBkb2NSZXF1ZXN0LAotICAgICAgICAgIGFjdGlvbiwKLSAgICAgICAgICBiaW5kaW5nLAotICAgICAgICAgIHJlZ2lzdHJ5KTsKLQotICAgICAgaWYgKG1hdGNoID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IG1hdGNoLmdldE9wZXJhdGlvbigpOwotCi0gICAgICAvLyBJZiB0aGlzIGlzIGEgb25lLXdheSBvcGVyYXRpb24gYW5kIHdlIGFyZSBwcm9jZXNzaW5nIGEgcmVzcG9uc2UsIHRoZW4gc2V0IHJlc3VsdCB0byBub3RBcHBsaWNhYmxlCi0gICAgICBpZiAoYmluZGluZ09wZXJhdGlvbgotICAgICAgICAuZ2V0T3BlcmF0aW9uKCkKLSAgICAgICAgLmdldFN0eWxlKCkKLSAgICAgICAgLmVxdWFscyhPcGVyYXRpb25UeXBlLk9ORV9XQVkpCi0gICAgICAgICYmIChlbnRyeUNvbnRleHQKLSAgICAgICAgICAuZ2V0TWVzc2FnZUVudHJ5KCkKLSAgICAgICAgICAuZ2V0VHlwZSgpCi0gICAgICAgICAgLmVxdWFscyhNZXNzYWdlRW50cnkuVFlQRV9SRVNQT05TRSkpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvLyBmaW5kIGJvZHkKLSAgICAgIE5vZGVMaXN0IHNvYXBCb2R5TGlzdCA9Ci0gICAgICAgIGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwKLSAgICAgICAgICBYTUxVdGlscy5TT0FQX0VMRU1fQk9EWSk7Ci0gICAgICBpZiAoc29hcEJvZHlMaXN0LmdldExlbmd0aCgpID09IDAgfHwgc29hcEJvZHlMaXN0LmdldExlbmd0aCgpID4gMSkKLSAgICAgIHsKLSAgICAgICAgLy8gVGhlcmUgaXMgbm90IGEgYm9keSBvciBtb3JlIHRoYW4gb25lIGJvZGllcyBpbiB0aGUgZW52bG9wZS4KLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvblBhc3NFeGNlcHRpb24oKTsKLSAgICAgIH0KLSAgICAgIC8vIGZpbmQgaGVhZGVycwotICAgICAgTm9kZUxpc3Qgc29hcEhlYWRlcnMgPQotICAgICAgICBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKLSAgICAgICAgICBXU0lUYWcuRUxFTV9TT0FQX0hFQURFUi5nZXROYW1lc3BhY2VVUkkoKSwKLSAgICAgICAgICBXU0lUYWcuRUxFTV9TT0FQX0hFQURFUi5nZXRMb2NhbFBhcnQoKSk7Ci0KLSAgICAgIC8vZmluZCBhbGwgb3BlcmF0aW9uCi0gICAgICAvL0VsZW1lbnQgc29hcE9wZXJhdGlvbiA9IFhNTFV0aWxzLmdldEZpcnN0Q2hpbGQoc29hcEJvZHlFbGVtKTsKLQotICAgICAgLy8gZ2V0cyBzb2FwYmluZDpoZWFkZXJzCi0gICAgICBMaXN0IGJpbmRpbmdIZWFkZXJzID0gbnVsbDsKLSAgICAgIGlmIChlbnRyeUNvbnRleHQKLSAgICAgICAgLmdldE1lc3NhZ2VFbnRyeSgpCi0gICAgICAgIC5nZXRUeXBlKCkKLSAgICAgICAgLmVxdWFscyhNZXNzYWdlRW50cnkuVFlQRV9SRVFVRVNUKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCkgIT0gbnVsbCkKLSAgICAgICAgICBiaW5kaW5nSGVhZGVycyA9Ci0gICAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oKTsKLQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoZW50cnlDb250ZXh0Ci0gICAgICAgICAgLmdldE1lc3NhZ2VFbnRyeSgpCi0gICAgICAgICAgLmdldFR5cGUoKQotICAgICAgICAgIC5lcXVhbHMoTWVzc2FnZUVudHJ5LlRZUEVfUkVTUE9OU0UpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpICE9IG51bGwpCi0gICAgICAgICAgICBiaW5kaW5nSGVhZGVycyA9Ci0gICAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmIChiaW5kaW5nSGVhZGVycyA9PSBudWxsIHx8IGJpbmRpbmdIZWFkZXJzLnNpemUoKSA9PSAwKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICBJdGVyYXRvciBpdGVyYXRvciA9IGJpbmRpbmdIZWFkZXJzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBPYmplY3QgYmluZGluZ0hlYWRlciA9IGl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgaWYgKGJpbmRpbmdIZWFkZXIgaW5zdGFuY2VvZiBTT0FQSGVhZGVyKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gZmluZCBzb2FwYmluZDpoZWFkZXIgaW4gU09BUCBtZXNzYWdlCi0gICAgICAgICAgaWYgKCFpc0JpbmRpbmdIZWFkZXJJblNPQVBNZXNzYWdlKGVudHJ5Q29udGV4dCwKLSAgICAgICAgICAgIHNvYXBIZWFkZXJzLAotICAgICAgICAgICAgKFNPQVBIZWFkZXIpIGJpbmRpbmdIZWFkZXIpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgaWYgKGUuZ2V0TWVzc2FnZSgpICE9IG51bGwgJiYgZS5nZXRNZXNzYWdlKCkubGVuZ3RoKCkgPiAwKQotICAgICAgICByZXN1bHQgPSBlLmdldE1lc3NhZ2UoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25QYXNzRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLQotICAgIGlmIChyZXN1bHQgPT0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQpCi0gICAgewotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwobnVsbCwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgKiBDaGVja3Mgd2hldGhlciBzcGVjaWZpZWQgU09BUEhlYWRlciBpcyBpbiB0aGUgU09BUE1lc3NhZ2UuCi0gICogQHBhcmFtIHNvYXBIZWFkZXJMaXN0Ci0gICogQHBhcmFtIFNPQVBIZWFkZXIKLSAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzQmluZGluZ0hlYWRlckluU09BUE1lc3NhZ2UoCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCwKLSAgICBOb2RlTGlzdCBzb2FwSGVhZGVycywKLSAgICBTT0FQSGVhZGVyIGJpbmRpbmdIZWFkZXIpCi0gIHsKLQotICAgIE1lc3NhZ2UgbXNnID0gZ2V0TWVzc2FnZUJ5UU5hbWUoZW50cnlDb250ZXh0LCBiaW5kaW5nSGVhZGVyLmdldE1lc3NhZ2UoKSk7Ci0gICAgaWYgKG1zZyA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUGFydCBwYXJ0ID0gbXNnLmdldFBhcnQoYmluZGluZ0hlYWRlci5nZXRQYXJ0KCkpOwotICAgIGlmIChwYXJ0ID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBRTmFtZSBwYXJ0RWxlbWVudE5hbWUgPSBwYXJ0LmdldEVsZW1lbnROYW1lKCk7Ci0gICAgUU5hbWUgcGFydFR5cGVOYW1lID0gcGFydC5nZXRUeXBlTmFtZSgpOwotCi0gICAgaWYgKHBhcnRUeXBlTmFtZSA9PSBudWxsICYmIHBhcnRFbGVtZW50TmFtZSA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHNvYXBIZWFkZXJzID09IG51bGwgfHwgc29hcEhlYWRlcnMuZ2V0TGVuZ3RoKCkgPT0gMCkKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFZlY3RvciBoZWFkZXJzTGlzdCA9Ci0gICAgICBYTUxVdGlscy5nZXRDaGlsZEVsZW1lbnRzKChFbGVtZW50KSBzb2FwSGVhZGVycy5pdGVtKDApKTsKLQotICAgIGZvciAoaW50IGluZGV4SGVhZGVyID0gMDsKLSAgICAgIGluZGV4SGVhZGVyIDwgaGVhZGVyc0xpc3Quc2l6ZSgpOwotICAgICAgaW5kZXhIZWFkZXIrKykKLSAgICB7Ci0gICAgICBFbGVtZW50IHNvYXBIZWFkZXJQYXJ0ID0gKEVsZW1lbnQpIGhlYWRlcnNMaXN0LmdldChpbmRleEhlYWRlcik7Ci0gICAgICBpZiAoc29hcEhlYWRlclBhcnQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgUU5hbWUgc29hcEhlYWRlclBhcnRRTmFtZSA9Ci0gICAgICAgICAgbmV3IFFOYW1lKAotICAgICAgICAgICAgc29hcEhlYWRlclBhcnQuZ2V0TmFtZXNwYWNlVVJJKCksCi0gICAgICAgICAgICBzb2FwSGVhZGVyUGFydC5nZXRMb2NhbE5hbWUoKSk7Ci0gICAgICAgIGlmICgocGFydFR5cGVOYW1lICE9IG51bGwKLSAgICAgICAgICAmJiBwYXJ0VHlwZU5hbWUuZXF1YWxzKHNvYXBIZWFkZXJQYXJ0UU5hbWUpKQotICAgICAgICAgIHx8IChwYXJ0RWxlbWVudE5hbWUgIT0gbnVsbAotICAgICAgICAgICAgJiYgcGFydEVsZW1lbnROYW1lLmVxdWFscyhzb2FwSGVhZGVyUGFydFFOYW1lKSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXRzIG1lc3NhZ2UgYnkgUU5hbWUuCi0gICAqIEBwYXJhbSBlbnRyeUNvbnRleHQKLSAgICogQHBhcmFtIG1lc3NhZ2VOYW1lCi0gICAqIEByZXR1cm4gTWVzc2FnZQotICAgKi8KLSAgcHJpdmF0ZSBNZXNzYWdlIGdldE1lc3NhZ2VCeVFOYW1lKAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQsCi0gICAgUU5hbWUgbWVzc2FnZU5hbWUpCi0gIHsKLSAgICBEZWZpbml0aW9uW10gZGVmcyA9IHZhbGlkYXRvci5hbmFseXplckNvbnRleHQuZ2V0Q2FuZGlkYXRlSW5mbygpLmdldERlZmluaXRpb25zKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWZzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIE1lc3NhZ2UgbXNnID0gZGVmc1tpXS5nZXRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKLSAgICAgIGlmIChtc2cgIT0gbnVsbCkKLSAgICAgICAgcmV0dXJuIG1zZzsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDExLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAxMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTM3YWI2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDExLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvblBhc3NFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIEJQMTAxMS4KLSAqLwotcHVibGljIGNsYXNzIEJQMTAxMSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTAxMShCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBUT0RPIG5lZWQgdG8gaGFuZGxlIHNvYXAgd2l0aCBhdHRhY2htZW50cwotICAgICAgaWYgKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0gICAgICAJIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICAgICAKLSAgICAgIEJpbmRpbmdbXSBiaW5kaW5ncyA9IHZhbGlkYXRvci5hbmFseXplckNvbnRleHQuZ2V0Q2FuZGlkYXRlSW5mbygpLmdldEJpbmRpbmdzKCk7Ci0KLSAgICAgIC8vIGdldCBzb2FwIG1lc3NhZ2UgY2hpbGQgbmFtZQotICAgICAgLy8gR2V0IHRoZSBET00gY29udGVudHMgb2YgdGhlIG1lc3NhZ2Ugc29hcDpib2R5IChpZiBub24tZW1wdHkpCi0gICAgICBEb2N1bWVudCBtZXNzYWdlRG9jID0gbnVsbDsKLQotICAgICAgUU5hbWUgbWVzc2FnZVBhcnRFbGVtZW50UU5hbWUgPSBudWxsOwotCi0gICAgICBpZiAoIWVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCkuZXF1YWxzKCIiKSkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZURvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotICAgICAgICAvL21lc3NhZ2VEb2MgPSBYTUxVdGlscy5wYXJzZVhNTChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpLCAKLSAgICAgICAgLy8JV1NJUHJvcGVydGllcy5ERUZfU09BUF9TQ0hFTUEpOwotICAgICAgICAvLyBnZXQgc29hcCBvcGVyYXRpb24gbmFtZSBmcm9tIHRoZSBzb2FwOmJvZHkKLQotICAgICAgICAvLyBOT1RFOiBnZXRTb2FwQm9keUNoaWxkKCkgbWF5IHJldHVybiBudWxsLCBpZiB0aGUgc29hcDpib2R5IGRpZCBub3QgY29udGFpbiBhbnkgY2hpbGQgZWxlbWVudHMKLSAgICAgICAgRWxlbWVudCBzb2FwTWVzc2FnZUVsZW1lbnQgPSB2YWxpZGF0b3IuZ2V0U29hcEJvZHlDaGlsZChtZXNzYWdlRG9jKTsKLQotICAgICAgICAvLyBmb3IgZG9jLWxpdC4uLiBmaW5kIHRoZSB3c2RsOnBhcnQgZnJvbSBvbmUgb2YgdGhlIHNwZWNpZmllZCBvcGVyYXRpb25zIHRoYXQgaGFzIAotICAgICAgICAvLyB0aGUgc29hcCBlbGVtZW50IHVzZWQgaW4gdGhlIG1lc3NhZ2UuICAgICAgCi0gICAgICAgIC8vIHdlIGFyZSBsb29raW5nIGZvciBhIHBhcnQgd2l0aCBhbiBlbGVtZW50IGF0dHJpYiB2YWwgbWF0Y2hpbmcgdGhlIHNvYXAgbWVzc2FnZSBlbGVtZW50Ci0gICAgICAgIGlmIChzb2FwTWVzc2FnZUVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIG1lc3NhZ2VQYXJ0RWxlbWVudFFOYW1lID0KLSAgICAgICAgICAgIG5ldyBRTmFtZSgKLSAgICAgICAgICAgICAgc29hcE1lc3NhZ2VFbGVtZW50LmdldE5hbWVzcGFjZVVSSSgpLAotICAgICAgICAgICAgICBzb2FwTWVzc2FnZUVsZW1lbnQuZ2V0TG9jYWxOYW1lKCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmICgobWVzc2FnZURvYyA9PSBudWxsKSB8fCB0aGlzLnZhbGlkYXRvci5pc0ZhdWx0KG1lc3NhZ2VEb2MpKQotICAgICAgewotICAgICAgICAvLyBlbXB0eSBtZXNzYWdlcyBhbmQgZmF1bHQgbWVzc2FnZXMgZG8gbm90IHF1YWxpZnkgZm9yIHRoaXMgVEEKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgLy8gbG9vayBmb3IgbWF0Y2gocykgaW4gZG9jIG9wZXJhdGlvbnMKLSAgICAgIC8vIGlmIGZvdW5kLCB3ZSdyZSBkb25lLCBlbHNlCi0gICAgICAvLyBsb29rIGZvciBtYXRjaChzKSBpbiBycGMgb3BlcmF0aW9ucwotCi0gICAgICAvKiBEb2MtbGl0IAotICAgICAgICogZ2V0IGxpc3Qgb2Ygb3BlcmF0aW9ucyAoZnJvbSBjYW5kaWRhdGVzKSBmb3Igd2hpY2ggdGhlIGZpcnN0IHNvYXA6Ym9keSBjaGlsZCBRTmFtZSBpcyB0aGUKLSAgICAgICAqIDxwYXJ0IGVsZW1lbnQ9Ii4uLiI+IHZhbHVlIG9mIHRoYXQgb3BlcmF0aW9uJ3MgPHdzZGw6aW5wdXQ+IG9yIDx3c2RsOm91dHB1dD4gZWxlbWVudCAoZGVwZW5kaW5nCi0gICAgICAgKiBvbiB3aGV0aGVyIG1lc3NhZ2UgaXMgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2UpLgotICAgICAgICovCi0KLSAgICAgIEJpbmRpbmdPcGVyYXRpb25bXSBkb2NCaW5kaW5nT3BlcmF0aW9ucyA9Ci0gICAgICAgIHZhbGlkYXRvci5nZXRNYXRjaGluZ0JpbmRpbmdPcHMoCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQywKLSAgICAgICAgICBiaW5kaW5ncyk7Ci0gICAgICAvLyBsaXN0IG9mIG9wZXJhdGlvbnMgdGhhdCBtYXRjaCB0aGUgPHdzZGw6aW5wdXQ+IG9yIDx3c2RsOm91dHB1dD4gKGRlcGVuZGluZyBvbiBlbnRyeVR5cGUpCi0gICAgICAvLyBmb3IgcGFydCBlbGVtZW50PSIuLi4iCi0gICAgICAvLyAoSVNTVUU6IHdoYXQgYWJvdXQgcGFydCB0eXBlPSIuLi4iPykKLSAgICAgIEJpbmRpbmdPcGVyYXRpb25bXSBwb3RlbnRpYWxEb2NMaXRPcHMgPQotICAgICAgICB2YWxpZGF0b3IuZ2V0RG9jTGl0T3BlcmF0aW9ucygKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeVR5cGUoKSwKLSAgICAgICAgICBtZXNzYWdlUGFydEVsZW1lbnRRTmFtZSwKLSAgICAgICAgICBkb2NCaW5kaW5nT3BlcmF0aW9ucyk7Ci0gICAgICBpZiAocG90ZW50aWFsRG9jTGl0T3BzLmxlbmd0aCAhPSAwKQotICAgICAgewotICAgICAgICAvLyBmb3VuZCBhdCBsZWFzdCBvbmUgZG9jIGxpdCBtYXRjaAotCi0gICAgICAgIC8vICoqKiBOb3cgd2Uga25vdyBpdCdzIGRvY3VtZW50LWxpdGVyYWwsIHNjaGVtYS12YWxpZGF0ZSB0aGUgU09BUCBwYXlsb2FkIGFjY29yZGluZ2x5ICAgICAgICAgICAgCQkKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICB0aGlzLnZhbGlkYXRvci5tZXNzYWdlSXNEb2NMaXRTY2hlbWFWYWxpZChlbnRyeUNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgfQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvKiBzb2FwIG1lc3NhZ2UgaXMgbm90IGRvYy1saXQgc28gdHJ5IDoKLSAgICAgICAqIFJwYy1saXQKLSAgICAgICAqLwotICAgICAgQmluZGluZ09wZXJhdGlvbltdIHJwY0JpbmRpbmdPcGVyYXRpb25zID0KLSAgICAgICAgdGhpcy52YWxpZGF0b3IuZ2V0TWF0Y2hpbmdCaW5kaW5nT3BzKAotICAgICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMsCi0gICAgICAgICAgYmluZGluZ3MpOwotCi0gICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlcmUgaXMgYW4gb3BlcmF0aW9uIG1hdGNoCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uIHJjcE9wTWF0Y2ggPQotICAgICAgICB0aGlzLnZhbGlkYXRvci5nZXRPcGVyYXRpb25NYXRjaCgKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeVR5cGUoKSwKLSAgICAgICAgICBtZXNzYWdlRG9jLAotICAgICAgICAgIHJwY0JpbmRpbmdPcGVyYXRpb25zKTsKLSAgICAgIGlmIChyY3BPcE1hdGNoICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgcGFydHMgbWF0Y2gKLSAgICAgICAgcmNwT3BNYXRjaCA9Ci0gICAgICAgICAgdGhpcy52YWxpZGF0b3IuZ2V0T3BlcmF0aW9uUGFydHNNYXRjaCgKLSAgICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5VHlwZSgpLAotICAgICAgICAgICAgbWVzc2FnZURvYywKLSAgICAgICAgICAgIHJwY0JpbmRpbmdPcGVyYXRpb25zKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHJjcE9wTWF0Y2ggPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy9ub3QgbWF0Y2hlZCB3aXRoIHJwYyBlaXRoZXIuIFByZXBhcmUgYXNzZXJ0aW9uIGZhaWx1cmUuCi0gICAgICAgIFN0cmluZ0J1ZmZlciBycGNPcGVyYXRpb25MaXN0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJwY0JpbmRpbmdPcGVyYXRpb25zLmxlbmd0aDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgcnBjT3BlcmF0aW9uTGlzdC5hcHBlbmQocnBjQmluZGluZ09wZXJhdGlvbnNbaV0udG9TdHJpbmcoKSArICJcbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5nQnVmZmVyIGRvY09wZXJhdGlvbkxpc3QgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZG9jQmluZGluZ09wZXJhdGlvbnMubGVuZ3RoOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBkb2NPcGVyYXRpb25MaXN0LmFwcGVuZChkb2NCaW5kaW5nT3BlcmF0aW9uc1tpXS50b1N0cmluZygpICsgIlxuIik7Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAiLS1NRVNTQUdFOlxuIgotICAgICAgICAgICAgKyBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpCi0gICAgICAgICAgICArICJcbi0tQ0FORElEQVRFIFJQQyBTVFlMRSBPUEVSQVRJT05TICgiCi0gICAgICAgICAgICArIChycGNCaW5kaW5nT3BlcmF0aW9ucy5sZW5ndGggIT0gMAotICAgICAgICAgICAgICA/IChycGNCaW5kaW5nT3BlcmF0aW9ucy5sZW5ndGggKyAiKTpcbiIgKyBycGNPcGVyYXRpb25MaXN0KQotICAgICAgICAgICAgICA6ICJOT05FKSIpCi0gICAgICAgICAgICArICJcbi0tQ0FORElEQVRFIERPQ1VNRU5UIFNUWUxFIE9QRVJBVElPTlMgKCIKLSAgICAgICAgICAgICsgKGRvY0JpbmRpbmdPcGVyYXRpb25zLmxlbmd0aCAhPSAwCi0gICAgICAgICAgICAgID8gKGRvY0JpbmRpbmdPcGVyYXRpb25zLmxlbmd0aCArICIpOlxuIiArIGRvY09wZXJhdGlvbkxpc3QpCi0gICAgICAgICAgICAgIDogIk5PTkUpIikpOwotCi0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25QYXNzRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLQotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEwMTIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDEyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNWQ0ZWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEwMTIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLQotLyoqCi0gKiBCUDEwMTIuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDEwMTIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEwMTIoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gbG9vayBmb3IgPHNvYXA6RW52ZWxvcGU+IGVsZW1lbnRzOgotICAgICAgLy8gKE5vdGU6IHNpbmNlIHRoaXMgaXMgYSBTb2FwIG1lc3NhZ2Ugd2UgZXhwZWN0IGV4YWN0bHkgb25lIHNvYXAgZW52ZWxvcGUsIGJ1dCB3ZSBkbyBub3QgYXNzdW1lIGl0KS4KLSAgICAgIERvY3VtZW50IHJlcXVlc3REb2MgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdERvY3VtZW50KCk7Ci0KLSAgICAgIC8vIG1lc3NhZ2UgaXMgZW1wdHkgb3IgaW52YWxpZCwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKHJlcXVlc3REb2MgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgRWxlbWVudCBlbnZFbGVtID0gcmVxdWVzdERvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIC8vTm9kZUxpc3Qgc29hcEVudkxpc3QgPSByZXF1ZXN0RG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQLCAiRW52ZWxvcGUiKTsKLQotICAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGVsZW1lbnQgdGFnIG5hbWUgaXMgbm90IEVudmVsb3BlCi0gICAgICAvLyBvciB0aGUgbmFtZXNwYWNlIGlzIGh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvCi0gICAgICBpZiAoIWVudkVsZW0uZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKFhNTFV0aWxzLlNPQVBfRUxFTV9FTlZFTE9QRSkKLSAgICAgICAgfHwgZW52RWxlbS5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQKSkKLSAgICAgICAgLy8gUmVxdWVzdCBjb250YWlucyBwcm9wZXIgc29hcCBFbnZlbG9wZSBlbGVtZW50Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIC8vIHdlIGV4cGVjdCBhIFNvYXAgRmF1bHQgYXMgYSByZXNwb25zZQkKLSAgICAgIERvY3VtZW50IHJlc3BvbnNlRG9jID0KLSAgICAgICAgWE1MVXRpbHMucGFyc2VYTUwoZW50cnlDb250ZXh0LmdldFJlc3BvbnNlKCkuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIE5vZGVMaXN0IHNvYXBGYXVsdExpc3QgPQotICAgICAgICByZXNwb25zZURvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwKLSAgICAgICAgICAiRmF1bHQiKTsKLSAgICAgIC8vIEFERCBleHRyYSBjaGVjayBoZXJlIHRoYXQgdGhlIDxzb2FwOkZhdWx0PiBpcyBhIGNoaWxkIG9mIDxzb2FwOkVudmVsb3BlPiA/PwkJICAgICAgCQkJCQotICAgICAgaWYgKChzb2FwRmF1bHRMaXN0ID09IG51bGwpIHx8IChzb2FwRmF1bHRMaXN0LmdldExlbmd0aCgpID09IDApKQotICAgICAgewotICAgICAgICAvLyBObyBTb2FwIGZhdWx0IGZvdW5kLgotICAgICAgICAvLyBBc3NlcnRpb24gZmFpbGVkIChBREQgaGlnaGxpZ2h0IHRoZSBjaGlsZCBoZXJlID8pCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKAotICAgICAgICAgICItLS0gUkVRVUVTVDpcbiIKLSAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldFJlcXVlc3QoKS5nZXRNZXNzYWdlKCkKLSAgICAgICAgICAgICsgIlxuLS0tIFJFU1BPTlNFOlxuIgotICAgICAgICAgICAgKyBlbnRyeUNvbnRleHQuZ2V0UmVzcG9uc2UoKS5nZXRNZXNzYWdlKCkpOwotICAgICAgfQotCi0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGFuYWUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDEzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAxMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjZmOGViLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDEzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotCi0KLQotLyoqCi0gKiBCUDEwMTMuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDEwMTMgZXh0ZW5kcyBCUDEwMTEKLXsKLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTAxMyhCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAzMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEwMzEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZiZGFmYi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAzMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLWltcG9ydCBvcmcudzNjLmRvbS5UZXh0OwotCi0KLS8qKgotICogQlAxMDMxLgotICogCi0gKiBAYXV0aG9yOiBHcmFoYW0gVHVycmVsbCwgSUJNIFVLCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDEwMzEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEwMzEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgZmFpbHVyZURldGFpbCA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRG9jdW1lbnQgZG9jOwotICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBvbmUgd2F5IHJlc3BvbnNlCi0gICAgICAvLyBvciBtZXNzYWdlIGlzIG1lcHR5IG9yIGludmFsaWQKLSAgICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkKLSAgICAgICAgICB8fCAoZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCkpID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIGlmICghdGhpcy52YWxpZGF0b3IuaXNGYXVsdChkb2MpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICBOb2RlTGlzdCBmYXVsdENvZGVzID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmYXVsdGNvZGUiKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmF1bHRDb2Rlcy5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgewotICAgICAgICBOb2RlTGlzdCBmYXVsdENvZGVOb2RlcyA9IChmYXVsdENvZGVzLml0ZW0oaSkpLmdldENoaWxkTm9kZXMoKTsKLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBmYXVsdENvZGVOb2Rlcy5nZXRMZW5ndGgoKTsgaisrKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGZhdWx0Q29kZU5vZGVzLml0ZW0oaikgaW5zdGFuY2VvZiBUZXh0KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFRleHQgZmF1bHRDb2RlVGV4dCA9IChUZXh0KSBmYXVsdENvZGVOb2Rlcy5pdGVtKGopOwotICAgICAgICAgICAgaWYgKGZhdWx0Q29kZVRleHQuZ2V0RGF0YSgpLmluZGV4T2YoJy4nKSA+IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgIC8vIGRvdHRlZCBub3RhdGlvbiB1c2VkLgotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgLy8gbm8gZG90dGVkIG5vdGF0aW9uIHVzZWQgaW4gYSBmYXVsdGNvZGUgZWxlbWVudAotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HOwotICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1lc3NhZ2UoKSwKLSAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDMyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAzMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzQxMzA3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDMyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5BdHRyOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotCi0KLS8qKgotICogQlAxMDMyCi0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIGVudmVsb3BlPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBzb2FwOkVudmVsb3BlLCBzb2FwOkhlYWRlciwgYW5kIHNvYXA6Qm9keSBlbGVtZW50cyBkbyBub3QgaGF2ZSBhbnkgYXR0cmlidXRlcyBpbiB0aGUgbmFtZXNwYWNlICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI8L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlAxMDMyIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMDMyKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0dGluZyBhIG1lc3NhZ2UgZG9jdW1lbnQKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBlbXB0eSBvciBpbnZhbGlkLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoZG9jID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIC8vIEdldHRpbmcgYSByb290IGVsZW1lbnQKLSAgICAgIEVsZW1lbnQgZWxlbWVudCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLQotICAgICAgLy8gQXNzdW1pbmcgdGhhdCByb290IGVsZW1lbnQgc2hvdWxkIGJlIHNvYXA6RW52ZWxvcGUKLSAgICAgIC8vIElmIG5vdCwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKCFlbGVtZW50LmdldExvY2FsTmFtZSgpLmVxdWFscyhYTUxVdGlscy5TT0FQX0VMRU1fRU5WRUxPUEUpKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBsb29raW5nIGZvciBhbnkgYXR0cmlidXRlIG9mIHNvYXA6RW52ZWxvcGUgaW4gdGhlIG5hbWVzcGFjZQotICAgICAgLy8gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIgotICAgICAgLy8gSWYgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZSBpcyBmb3VuZCwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgIEF0dHIgYXR0ciA9IGdldEF0dHJpYnV0ZShlbGVtZW50LmdldEF0dHJpYnV0ZXMoKSk7Ci0gICAgICBpZiAoYXR0ciAhPSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigic29hcDpFbnZlbG9wZSBhdHRyaWJ1dGUgbmFtZSBpcyAiCi0gICAgICAgICAgKyBhdHRyLmdldE5hbWUoKSk7Ci0KLSAgICAgIC8vIEdldHRpbmcgdGhlIGZpcnN0IGNoaWxkIG9mIHNvYXA6RW52ZWxvcGUKLSAgICAgIGVsZW1lbnQgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKGVsZW1lbnQpOwotCi0gICAgICAvLyBJZiB0aGUgY2hpbGQgaXMgc29hcDpIZWFkZXIKLSAgICAgIGlmIChlbGVtZW50ICE9IG51bGwKLSAgICAgICAgJiYgZWxlbWVudC5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoWE1MVXRpbHMuU09BUF9FTEVNX0hFQURFUikpCi0gICAgICB7Ci0gICAgICAgIC8vIGxvb2tpbmcgZm9yIGFueSBhdHRyaWJ1dGUgb2Ygc29hcDpIZWFkZXIgaW4gdGhlIG5hbWVzcGFjZQotICAgICAgICAvLyAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iCi0gICAgICAgIC8vIElmIGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGUgaXMgZm91bmQsIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgIGF0dHIgPSBnZXRBdHRyaWJ1dGUoZWxlbWVudC5nZXRBdHRyaWJ1dGVzKCkpOwotICAgICAgICBpZiAoYXR0ciAhPSBudWxsKQotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJzb2FwOkhlYWRlciBhdHRyaWJ1dGUgbmFtZSBpcyAiCi0gICAgICAgICAgICArIGF0dHIuZ2V0TmFtZSgpKTsKLQotICAgICAgICAvLyBNb3ZpbmcgdG8gdGhlIG5leHQgc29hcDpFbnZlbG9wZSBjaGlsZAotICAgICAgICBlbGVtZW50ID0gWE1MVXRpbHMuZ2V0TmV4dFNpYmxpbmcoZWxlbWVudCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIElmIHRoZSBjaGlsZCBpcyBzb2FwOkJvZHkKLSAgICAgIGlmIChlbGVtZW50ICE9IG51bGwKLSAgICAgICAgJiYgZWxlbWVudC5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoWE1MVXRpbHMuU09BUF9FTEVNX0JPRFkpKQotICAgICAgewotICAgICAgICAvLyBsb29raW5nIGZvciBhbnkgYXR0cmlidXRlIG9mIHNvYXA6Qm9keSBpbiB0aGUgbmFtZXNwYWNlCi0gICAgICAgIC8vICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyIKLSAgICAgICAgLy8gSWYgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZSBpcyBmb3VuZCwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgYXR0ciA9IGdldEF0dHJpYnV0ZShlbGVtZW50LmdldEF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGlmIChhdHRyICE9IG51bGwpCi0gICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oInNvYXA6Qm9keSBhdHRyaWJ1dGUgbmFtZSBpcyAiCi0gICAgICAgICAgICArIGF0dHIuZ2V0TmFtZSgpKTsKLSAgICAgIH0KLQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgYWZlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgICogTG9va3MgZm9yIGFuIGF0dHJpYnV0ZSB0aGF0IGlzIGluIHRoZSBuYW1lc3BhY2UKLSAgICogaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8KLSAgICogQHBhcmFtIGF0dHJzIGEgY29sbGVjdGlvbiBvZiBhdHRyaWJ1dGVzCi0gICAqIEByZXR1cm4gYW4gYXR0cmlidXRlIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlIG9yIG51bGwKLSAgICovCi0gIHByaXZhdGUgQXR0ciBnZXRBdHRyaWJ1dGUoTmFtZWROb2RlTWFwIGF0dHJzKQotICB7Ci0gICAgQXR0ciByZXQgPSBudWxsOwotICAgIGlmIChhdHRycyAhPSBudWxsKQotICAgIHsKLSAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBhdHRycy5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgewotICAgICAgICBBdHRyIGF0dHIgPSAoQXR0cikgYXR0cnMuaXRlbShpKTsKLSAgICAgICAgaWYgKGF0dHIuZ2V0TmFtZXNwYWNlVVJJKCkgIT0gbnVsbAotICAgICAgICAgICYmIGF0dHIuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19VUklfU09BUCkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXQgPSBhdHRyOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJldDsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDMzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTAzMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmVjOGExLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMDMzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0vKioKLSAqIEJQMTAzMwotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBlbnZlbG9wZTwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgU09BUCBlbnZlbG9wZSBkb2VzIG5vdCBjb250YWluIHRoZSBuYW1lc3BhY2UgZGVjbGFyYXRpb24geG1sbnM6eG1sPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDEwMzMgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEwMzMoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0dGluZyBhIG1lc3NhZ2UgZG9jdW1lbnQKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotICAgICAgLy8gSWYgdGhlIG1lc3NhZ2UgaXMgZW1wdHkgb3IgaW52YWxpZCwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKGRvYyA9PSBudWxsKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvLyBHZXR0aW5nIHRoZSByb290IGVsZW1lbnQKLSAgICAgIEVsZW1lbnQgZWxlbSA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIC8vIElmIGl0IGlzIG5vdCB0aGUgc29hcDpFbnZlbG9wZSwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKCFlbGVtLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscyhXU0lDb25zdGFudHMuTlNfVVJJX1NPQVApCi0gICAgICAgIHx8ICFlbGVtLmdldExvY2FsTmFtZSgpLmVxdWFscyhYTUxVdGlscy5TT0FQX0VMRU1fRU5WRUxPUEUpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvLyBJZiB0aGUgZW52ZWxvcGUgY29udGFpbnMgdGhlIHhtbG5zOnhtbCBuYW1lc3BhY2UgZGVjbGFyYXRpb24sCi0gICAgICAvLyB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgU3RyaW5nIGluY29ycmVjdEVsZW1lbnROYW1lID0gZ2V0SW5jb3JyZWN0RWxlbWVudE5hbWUoZWxlbSk7Ci0gICAgICBpZiAoaW5jb3JyZWN0RWxlbWVudE5hbWUgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBuYW1lIG9mIGFuIGVsZW1lbnQgY29udGFpbmluZyAiCi0gICAgICAgICAgKyAic3VjaCBuYW1lc3BhY2UgZGVjbGFyYXRpb24gaXMgXCIiICsgaW5jb3JyZWN0RWxlbWVudE5hbWUgKyAiXCIuIik7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGFuYWUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gYWZlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfV0FSTklORzsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgYWZlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBMb29rcyBmb3IgYW55IGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGUgYXR0cmlidXRlIHhtbG5zOnhtbD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi4gCi0gICAqIEBwYXJhbSBlbGVtIHRoZSByb290IGVsZW1lbnQuCi0gICAqIEByZXR1cm4gdGhlIG5hbWUgb2YgYW4gZWxlbWVudCBmb3VuZCBvciBudWxsLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0SW5jb3JyZWN0RWxlbWVudE5hbWUoRWxlbWVudCBlbGVtKQotICB7Ci0gICAgLy8gR2V0dGluZyBhIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgeG1sbnM6eG1sCi0gICAgU3RyaW5nIGF0dHJWYWx1ZSA9IGVsZW0uZ2V0QXR0cmlidXRlTlMoCi0gICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1hNTE5TLCAieG1sIik7Ci0gICAgLy8gSWYgaXQgZXF1YWxzIHRvICJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLAotICAgIC8vIHJldHVybiBhbiBlbGVtZW50IG5hbWU7Ci0gICAgaWYgKFdTSUNvbnN0YW50cy5OU19VUklfWE1MLmVxdWFscyhhdHRyVmFsdWUpKQotICAgIHsKLSAgICAgIHJldHVybiBlbGVtLmdldE5vZGVOYW1lKCk7Ci0gICAgfQotICAgIC8vIEdvaW5nIHRocm91Z2ggZWxlbWVudCdzIGNoaWxkcmVuCi0gICAgRWxlbWVudCBjaGlsZCA9IFhNTFV0aWxzLmdldEZpcnN0Q2hpbGQoZWxlbSk7Ci0gICAgd2hpbGUgKGNoaWxkICE9IG51bGwpCi0gICAgewotICAgICAgLy8gSWYgYW55IG9mIHRoZW0gaGFzIHhtbG5zOnhtbCBhdHRyaWJ1dGUsIHJldHVybiBhIHZhbHVlCi0gICAgICBTdHJpbmcgbmFtZSA9IGdldEluY29ycmVjdEVsZW1lbnROYW1lKGNoaWxkKTsKLSAgICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBuYW1lOwotICAgICAgfQotICAgICAgLy8gR2V0dGluZyB0aGUgbmV4dCBlbGVtZW50J3MgY2hpbGQKLSAgICAgIGNoaWxkID0gWE1MVXRpbHMuZ2V0TmV4dFNpYmxpbmcoY2hpbGQpOwotICAgIH0KLSAgICAvLyBObyB4bWxuczp4bWwgYXR0cmlidXRlcyBmb3VuZCwgcmV0dXJuIG51bGwKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMTAwLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTEwMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmJhZDcyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMTAwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIEJQMTEwMC4KLSAqIEEgbWVzc2FnZSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYSBTT0FQIGZhdWx0IFNIT1VMRCB1c2UgYSAiMjAwIE9LIiAKLSAqIEhUVFAgc3RhdHVzIGNvZGUuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDExMDAgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDExMDAoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUoVGVzdEFzc2VydGlvbiwgRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBpZiAodGhpcy52YWxpZGF0b3IuaXNPbmVXYXlSZXNwb25zZShlbnRyeUNvbnRleHQpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBsb29rIGZvciA8c29hcDpGYXVsdD4gZWxlbWVudDoKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotICAgICAgaWYgKGRvYyA9PSBudWxsKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBFbGVtZW50IHJvb3QgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgICAgIE5vZGVMaXN0IGZhdWx0TGlzdCA9Ci0gICAgICAgICAgcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwgIkZhdWx0Iik7Ci0KLSAgICAgICAgLy8gSWYgcmVzcG9uc2UgZG9lcyBub3QgY29udGFpbiBhIHNvYXA6RmF1bHQsIHRoZW4gY2hlY2sgaXQKLSAgICAgICAgaWYgKChmYXVsdExpc3QgPT0gbnVsbCkgfHwgKGZhdWx0TGlzdC5nZXRMZW5ndGgoKSA9PSAwKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIFJlc3BvbnNlIGRvZXMgbm90IGNvbnRhaW4gYSBzb2FwOkZhdWx0Ci0gICAgICAgICAgLy8gY2hlY2sgSFRUUCBzdGF0dXMgY29kZQotICAgICAgICAgIFN0cmluZyBodHRwU3RhdHVzID0KLSAgICAgICAgICAgIFV0aWxzLmdldEhUVFBTdGF0dXNDb2RlKAotICAgICAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0SFRUUEhlYWRlcnMoKSk7Ci0gICAgICAgICAgaWYgKCEiMjAwIi5lcXVhbHMoaHR0cFN0YXR1cykpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HOwotICAgICAgICAgICAgLy9mYWlsdXJlRGV0YWlsTWVzc2FnZSA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICAgICAiXG5SZXNwb25zZSBtZXNzYWdlOlxuSGVhZGVyczpcbiIKLSAgICAgICAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCkKLSAgICAgICAgICAgICAgICAgICsgIlxuTWVzc2FnZTpcbiIKLSAgICAgICAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1lc3NhZ2UoKSwKLSAgICAgICAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIGl0IGlzIGEgc29hcDpGYXVsdCwgdGhlbiB0aGUgcmVzdWx0IG11c3QgYmUgbm90QXBwbGljYWJsZQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDExMDcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMTA3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExYzg2OTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDExMDcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5OdWxsVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5PcGVyYXRpb25TaWduYXR1cmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVHlwZXNSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5XU0RMVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogQlAxMTA3LgotICogVGhlIGNvbnRhaW5lZCBzb2FwYmluZDpmYXVsdCBpcyBkZWZpbmVkIGluIHRoZSB3c2RsOmJpbmRpbmcuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDExMDcgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvcgotewotCi0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDExMDcoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgT3BlcmF0aW9uU2lnbmF0dXJlIHJlc3BvbnNlU2lnID0gbnVsbDsKLSAgcHJpdmF0ZSBWZWN0b3IgZmF1bHRzID0gbnVsbDsKLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KFNPQVBGYXVsdCwgT2JqZWN0LCBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBGYXVsdCBmYXVsdCwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgU3RyaW5nIGZhdWx0TmFtZSA9IGZhdWx0LmdldE5hbWUoKTsKLQotICAgIGlmIChmYXVsdE5hbWUgPT0gbnVsbCkKLSAgICAgIGZhdWx0TmFtZSA9IGN0eC5nZXRCaW5kaW5nRmF1bHQoKS5nZXROYW1lKCk7Ci0KLSAgICBPcGVyYXRpb24gb3AgPSBjdHguZ2V0QmluZGluZ09wZXJhdGlvbigpLmdldE9wZXJhdGlvbigpOwotICAgIGlmIChvcCA9PSBudWxsIC8qIHx8IGZhdWx0TmFtZSA9PSBudWxsKi8KLSAgICAgICkgLy8gbWF5IGJlIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBsZWdhbCBmYXVsdCB3aXRoIG51bGwgbmFtZQotICAgICAgcmV0dXJuOwotCi0gICAgLy8gd2Ugc3VwcG9zZSB0aGF0IFNPQVBGYXVsdC5nZXROYW1lKCkgY29ycmVzcG9uZHMgdG8gdGhlIGFic3RyYWN0IG9wZXJhdGlvbidzIGZhdWx0IG5hbWUgICAgICAgICAgIAotICAgIEZhdWx0IGYgPSBvcC5nZXRGYXVsdChmYXVsdE5hbWUpOwotICAgIGlmIChmID09IG51bGwpCi0gICAgICByZXR1cm47Ci0KLSAgICBNZXNzYWdlIG0gPSBmLmdldE1lc3NhZ2UoKTsKLSAgICAvLyBtZXNzYWdlIHNob3VsZCBoYXZlIG9ubHkgb25lIHBhcnQKLSAgICBpZiAobSA9PSBudWxsIHx8IG0uZ2V0UGFydHMoKSA9PSBudWxsIHx8IG0uZ2V0UGFydHMoKS5zaXplKCkgIT0gMSkKLSAgICAgIHJldHVybjsKLQotICAgIC8vUGFydCBmYXVsdFBhcnQgPSBXU0RMVXRpbC5nZXRQYXJ0KG0sIGZhdWx0TmFtZSk7Ci0gICAgUGFydCBmYXVsdFBhcnQgPSAoUGFydCkgbS5nZXRQYXJ0cygpLnZhbHVlcygpLml0ZXJhdG9yKCkubmV4dCgpOwotCi0gICAgVHlwZXNSZWdpc3RyeSB0UmVnID0gKFR5cGVzUmVnaXN0cnkpIGN0eC5nZXRQYXJhbWV0ZXIoIlR5cGVzUmVnaXN0cnkiKTsKLSAgICBRTmFtZSBlbGVtUU5hbWUgPSBmYXVsdFBhcnQuZ2V0RWxlbWVudE5hbWUoKTsKLSAgICBRTmFtZSB0eXBlUU5hbWUgPSBmYXVsdFBhcnQuZ2V0VHlwZU5hbWUoKTsKLSAgICBpZiAodHlwZVFOYW1lID09IG51bGwpCi0gICAgICB0eXBlUU5hbWUgPSB0UmVnLmdldFR5cGUoZmF1bHRQYXJ0LmdldEVsZW1lbnROYW1lKCkpOwotICAgIGlmICh0eXBlUU5hbWUgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlBhcnQgdHlwZSBjYW4gbm90IGJlIG51bGwuIik7Ci0KLSAgICAvLyBmb3IgYWxsIGZhdWx0czsgaWYgaXQgcHJlc2VudHMgaW4gdGhlIGRlZmluaXRpb24gcmVtb3ZlIGl0IGZyb20gbGlzdAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmF1bHRzLnNpemUoKTspCi0gICAgewotICAgICAgRWxlbWVudCBlbGVtID0gKEVsZW1lbnQpIGZhdWx0cy5nZXQoaSk7Ci0KLSAgICAgIC8vIFRPRE86IEkgZG9uJ3QgdW5kZXJzdGFuZCB3aHkgdGhpcyBpcyBoZXJlLiAgT25seSB0aGUgZWxlbWVudCBzZXR0aW5nIHNob3VsZCBiZSBjaGVja2VkLiAKLSAgICAgIC8vYm9vbGVhbiBtYXRjaEJ5VHlwZSA9Ci0gICAgICAvLyAgZWxlbS5nZXRMb2NhbE5hbWUoKS5lcXVhbHModHlwZVFOYW1lLmdldExvY2FsUGFydCgpKSAmJiBOdWxsVXRpbC5lcXVhbHMoZWxlbS5nZXROYW1lc3BhY2VVUkkoKSwgdHlwZVFOYW1lLmdldE5hbWVzcGFjZVVSSSgpKTsKLQotICAgICAgYm9vbGVhbiBtYXRjaEJ5RWxlbWVudCA9Ci0gICAgICAgIGVsZW1RTmFtZSAhPSBudWxsCi0gICAgICAgICAgJiYgZWxlbS5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoZWxlbVFOYW1lLmdldExvY2FsUGFydCgpKQotICAgICAgICAgICYmIE51bGxVdGlsLmVxdWFscygKLSAgICAgICAgICAgIGVsZW0uZ2V0TmFtZXNwYWNlVVJJKCksCi0gICAgICAgICAgICBlbGVtUU5hbWUuZ2V0TmFtZXNwYWNlVVJJKCkpOwotCi0gICAgICAvL2lmIChtYXRjaEJ5VHlwZSB8fCBtYXRjaEJ5RWxlbWVudCkKLSAgICAgIGlmIChtYXRjaEJ5RWxlbWVudCkKLSAgICAgICAgZmF1bHRzLnJlbW92ZShpKTsKLSAgICAgIGVsc2UKLSAgICAgICAgaSsrOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUoVGVzdEFzc2VydGlvbiwgRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIFBhcnNlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvY1JlcXVlc3QgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdERvY3VtZW50KCk7Ci0gICAgICBEb2N1bWVudCBkb2NSZXNwb25zZSA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICBpZiAoKGRvY1JlcXVlc3QgPT0gbnVsbCkgfHwgKGRvY1Jlc3BvbnNlID09IG51bGwpKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoIXRoaXMudmFsaWRhdG9yLmlzRmF1bHQoZG9jUmVzcG9uc2UpKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBjcmVhdGUgcmVxdWVzdCBzaWduYXR1cmUKLSAgICAgICAgT3BlcmF0aW9uU2lnbmF0dXJlLk9wZXJhdGlvbk1hdGNoIG1hdGNoID0KLSAgICAgICAgICBPcGVyYXRpb25TaWduYXR1cmUubWF0Y2hPcGVyYXRpb24oCi0gICAgICAgICAgICBkb2NSZXF1ZXN0LAotICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuZ2V0U29hcEFjdGlvbihlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdCgpLmdldEhUVFBIZWFkZXJzKCkpLAotICAgICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0QmluZGluZ3MoKVswXSwKLSAgICAgICAgICAgIG5ldyBUeXBlc1JlZ2lzdHJ5KAotICAgICAgICAgICAgICAgIHZhbGlkYXRvci5hbmFseXplckNvbnRleHQKLSAgICAgICAgICAgICAgICAuZ2V0Q2FuZGlkYXRlSW5mbygpCi0gICAgICAgICAgICAgICAgLmdldFdzZGxEb2N1bWVudCgpCi0gICAgICAgICAgICAgICAgLmdldERlZmluaXRpb25zKCksCi0gICAgICAgICAgICAgICAgdmFsaWRhdG9yKSk7Ci0KLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLQotICAgICAgICBpZiAobWF0Y2ggIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIC8vIE1PVkVEOiBQYXJzZSByZXNwb25zZSBtZXNzYWdlCi0gICAgICAgICAgLy9kb2MgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKTsKLQotICAgICAgICAgIHJlc3BvbnNlU2lnID0gbmV3IE9wZXJhdGlvblNpZ25hdHVyZShkb2NSZXNwb25zZSk7Ci0gICAgICAgICAgaWYgKFdTSUNvbnN0YW50cwotICAgICAgICAgICAgLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQwotICAgICAgICAgICAgLmVxdWFscyhtYXRjaC5nZXRPcGVyYXRpb25TdHlsZSgpKSkKLSAgICAgICAgICAgIHJlc3BvbnNlU2lnLmNyZWF0ZVJQQ1NpZ25hdHVyZSgpOwotCi0gICAgICAgICAgV1NETFRyYXZlcnNhbCB0cmF2ZXJzYWwgPSBuZXcgV1NETFRyYXZlcnNhbCgpOwotICAgICAgICAgIC8vVmlzaXRvckFkYXB0b3IuYWRhcHQodGhpcyk7Ci0gICAgICAgICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgICAgICAgdHJhdmVyc2FsLnZpc2l0U09BUEZhdWx0KHRydWUpOwotICAgICAgICAgIHRyYXZlcnNhbC5pZ25vcmVCaW5kaW5nSW5wdXQoKTsKLSAgICAgICAgICB0cmF2ZXJzYWwuaWdub3JlQmluZGluZ091dHB1dCgpOwotCi0gICAgICAgICAgaWYgKHJlc3BvbnNlU2lnID09IG51bGwgfHwgIXJlc3BvbnNlU2lnLmlzRmF1bHQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZVNpZyAhPSBudWxsICYmIHJlc3BvbnNlU2lnLmlzRmF1bHQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBleHRyYWN0IGFsbCBmYXVsdHMgYW5kIHRyeSBmaW5kIHRoZW0gaW4gdGhlIGRlZmluaXRpb24KLSAgICAgICAgICAgIC8vIGV4dHJhY3RzIG9ubHkgZmF1bHRzIHdpdGggbmFtZXNwYWNlCi0gICAgICAgICAgICBFbGVtZW50IGJvZHkgPQotICAgICAgICAgICAgICBYTUxVdGlscy5maW5kQ2hpbGRFbGVtZW50KAotICAgICAgICAgICAgICAgIGRvY1Jlc3BvbnNlLmdldERvY3VtZW50RWxlbWVudCgpLAotICAgICAgICAgICAgICAgIFdTSVRhZy5FTEVNX1NPQVBfQk9EWSk7Ci0gICAgICAgICAgICBFbGVtZW50IGZhdWx0ID0KLSAgICAgICAgICAgICAgWE1MVXRpbHMuZmluZENoaWxkRWxlbWVudChib2R5LCBXU0lUYWcuRUxFTV9TT0FQX0ZBVUxUKTsKLSAgICAgICAgICAgIEVsZW1lbnQgZGV0YWlsID0gWE1MVXRpbHMuZ2V0RWxlbWVudCgiZGV0YWlsIiwgZmF1bHQpOwotICAgICAgICAgICAgaWYgKGRldGFpbCA9PSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgICAgICAgICAgICBmYXVsdHMgPSBYTUxVdGlscy5nZXRDaGlsZEVsZW1lbnRzKGRldGFpbCk7Ci0KLSAgICAgICAgICAgICAgLy8gUkVNT1ZFOiBXaHkgZG8gdGhlIGZhdWx0cyBoYXZlIHRvIGJlIG5hbWVzcGFjZWQgcXVhbGlmaWVkPwotICAgICAgICAgICAgICAvL1hNTFV0aWxzLnJlbW92ZUFsbEVsZW1lbnRzV2l0aG91dE5TKGZhdWx0cyk7Ci0KLSAgICAgICAgICAgICAgLy8gaWYgZmF1bHRzIGV4aXN0IHRyeSB0byB2YWxpZGF0ZSBpdAotICAgICAgICAgICAgICBpZiAoZmF1bHRzLnNpemUoKSA+IDApCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBNYXAgbSA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgICAgICAgICAgICAgV1NETFV0aWwuZXhwYW5kRGVmaW5pdGlvbigKLSAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dAotICAgICAgICAgICAgICAgICAgICAuZ2V0Q2FuZGlkYXRlSW5mbygpCi0gICAgICAgICAgICAgICAgICAgIC5nZXRXc2RsRG9jdW1lbnQoKQotICAgICAgICAgICAgICAgICAgICAuZ2V0RGVmaW5pdGlvbnMoKSk7Ci0gICAgICAgICAgICAgICAgbS5wdXQoCi0gICAgICAgICAgICAgICAgICAiZGVmaW5pdGlvbiIsCi0gICAgICAgICAgICAgICAgICB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgIC5nZXRDYW5kaWRhdGVJbmZvKCkKLSAgICAgICAgICAgICAgICAgICAgLmdldFdzZGxEb2N1bWVudCgpCi0gICAgICAgICAgICAgICAgICAgIC5nZXREZWZpbml0aW9ucygpKTsKLSAgICAgICAgICAgICAgICBUeXBlc1JlZ2lzdHJ5IHRSZWcgPQotICAgICAgICAgICAgICAgICAgbmV3IFR5cGVzUmVnaXN0cnkoCi0gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dAotICAgICAgICAgICAgICAgICAgICAgIC5nZXRDYW5kaWRhdGVJbmZvKCkKLSAgICAgICAgICAgICAgICAgICAgICAuZ2V0V3NkbERvY3VtZW50KCkKLSAgICAgICAgICAgICAgICAgICAgICAuZ2V0RGVmaW5pdGlvbnMoKSwKLSAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3IpOwotICAgICAgICAgICAgICAgIG0ucHV0KCJUeXBlc1JlZ2lzdHJ5IiwgdFJlZyk7Ci0gICAgICAgICAgICAgICAgdHJhdmVyc2FsLnRyYXZlcnNlKG1hdGNoLmdldE9wZXJhdGlvbigpLCBtKTsKLSAgICAgICAgICAgICAgICBpZiAoZmF1bHRzLnNpemUoKSA+IDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HOwotICAgICAgICAgICAgICAgICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmYXVsdHMuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgWE1MVXRpbHMuc2VyaWFsaXplRWxlbWVudCgoRWxlbWVudCkgZmF1bHRzLmdldChpKSwgc3cpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB0cnkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3cuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgICAgICAgICAgICAgICJcbkZhdWx0czpcbiIgKyBzdy50b1N0cmluZygpLAotICAgICAgICAgICAgICAgICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMjAxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZjY5MzQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiBCUDEyMDEuCi0gKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSBzb2FwOkVudmVsb3BlIGluIHRoZSBtZXNzYWdlIGhhcyB2YWx1ZTogaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8uIAotICovCi1wdWJsaWMgY2xhc3MgQlAxMjAxIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMjAxKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIERvY3VtZW50IGRvYzsKLSAgICAvLyBDaGVjayBpZiB0aGlzIGlzIG9uZSB3YXkgcmVzcG9uc2Ugb3IgbWVzc2FnZSBpcyBtZXB0eSBvciBpbnZhbGlkCi0gICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSB8fAotICAgICAgKGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBFbGVtZW50IHJvb3QgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgICBTdHJpbmcgbnMgPSByb290LmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgU3RyaW5nIGxvY2FsID0gcm9vdC5nZXRMb2NhbE5hbWUoKTsKLSAgICAgIGlmICghRUxFTV9TT0FQX0VOVkVMT1BFLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscyhucykpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgIlJvb3QgZWxlbWVudCBoYXMgbmFtZXNwYWNlOiAiICsgbnMsIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UgaWYgKCFFTEVNX1NPQVBfRU5WRUxPUEUuZ2V0TG9jYWxQYXJ0KCkuZXF1YWxzKGxvY2FsKSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAiUm9vdCBlbGVtZW50IGhhcyBsb2NhbCBuYW1lOiAiICsgbG9jYWwsIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIwMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMDIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVhYmVlMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIwMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIEJQMTIwMi4gCi0gKiBFYWNoIGNoaWxkIGVsZW1lbnQgKGlmIGFueSkgb2YgdGhlIHNvYXA6Qm9keSBlbGVtZW50IGlzIG5hbWVzcGFjZSBxdWFsaWZpZWQgKG5vdCB0aGUgZ3JhbmRjaGlsZHJlbikuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDEyMDIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEyMDIoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gUGFyc2UgbG9nIG1lc3NhZ2UgCi0gICAgRG9jdW1lbnQgZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCk7Ci0KLSAgICBpZiAodmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLQotICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGEgc29hcCBib2R5IGVsZW1lbnQKLSAgICBlbHNlIGlmICghdmFsaWRhdG9yLmNvbnRhaW5zU29hcEJvZHlXaXRoQ2hpbGQoZG9jKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gR2V0IHRoZSByb290IGVsZW1lbnQKLSAgICAgIEVsZW1lbnQgcm9vdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLQotICAgICAgLy8gR2V0IGEgbm9kZSBsaXN0IHdoaWNoIHNob3VsZCBjb250YWluIHRoZSBzb2FwOkJvZHkgZWxlbWVudAotICAgICAgTm9kZUxpc3Qgcm9vdE5vZGVMaXN0ID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICBFTEVNX1NPQVBfQk9EWS5nZXROYW1lc3BhY2VVUkkoKSwgRUxFTV9TT0FQX0JPRFkuZ2V0TG9jYWxQYXJ0KCkpOwotCi0gICAgICAvLyBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgc29hcDpCb2R5IGVsZW1lbnQsCi0gICAgICAvLyB0aGVuIG1ha2Ugc3VyZSB0aGF0IGVhY2ggY2hpbGQgaXMgbmFtZXNwYWNlIHF1YWxpZmllZAotICAgICAgaWYgKHJvb3ROb2RlTGlzdC5nZXRMZW5ndGgoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIC8vIEdldCB0aGUgc29hcDpCb2R5IGVsZW1lbnQKLSAgICAgICAgRWxlbWVudCBib2R5ID0gKEVsZW1lbnQpIHJvb3ROb2RlTGlzdC5pdGVtKDApOwotCi0gICAgICAgIC8vIEdldCB0aGUgbGlzdCBvZiBzb2FwOkJvZHkgY2hpbGQgZWxlbWVudHMgCi0gICAgICAgIE5vZGVMaXN0IGNoaWxkcmVuID0gYm9keS5nZXRDaGlsZE5vZGVzKCk7Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgZWFjaCBjaGlsZCBlbGVtZW50IGlzIG5hbWVzcGFjZSBxdWFsaWZpZWQKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7Ci0gICAgICAgICAgaSA8IGNoaWxkcmVuLmdldExlbmd0aCgpICYmIHJlc3VsdCA9PSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICAgICAgICArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICBOb2RlIG4gPSBjaGlsZHJlbi5pdGVtKGkpOwotICAgICAgICAgIGlmIChuIGluc3RhbmNlb2YgRWxlbWVudCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmcgbnMgPSBuLmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgICAgICAgaWYgKG5zID09IG51bGwgfHwgbnMubGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMDMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMjAzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0NzBhY2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMDMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXA7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLQotLyoqCi0gKiBCUDEyMDMuIAotICogVGhlIG5hbWVzcGFjZSBvZiB0aGUgZGV0YWlsIGVsZW1lbnQgb2YgYSBxdWFsaWZpZWQgYXR0cmlidXRlIGluIHRoZSBzb2FwOkZhdWx0IGlzIGEgCi0gKiBmb3JlaWduIG5hbWVzcGFjZSwgZGlmZmVyZW50IGZyb20gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIi4KLSAqLwotcHVibGljIGNsYXNzIEJQMTIwMyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTIwMyhCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBib29sZWFuIHF1YWxpZmllZEF0dHJpYnV0ZXMgPSBmYWxzZTsKLQotICAgIERvY3VtZW50IGRvYzsKLSAgICAvLyBDaGVjayBpZiB0aGlzIGlzIG9uZSB3YXkgcmVzcG9uc2Ugb3IgbWVzc2FnZSBpcyBtZXB0eSBvciBpbnZhbGlkCi0gICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KQotICAgICAgICB8fCAoZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCkpID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIEFERDogTmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGVjayBpcyByZXF1aXJlZCwgc2luY2UgaXQgc2hvdWxkIGFscmVhZHkgYmUgZG9uZQotICAgICAgLy8gQXBwbGljYWJsZSB0byByZXNwb25zZSBtZXNzYWdlcyBvbmx5Ci0gICAgICBpZiAoZW50cnlDb250ZXh0Ci0gICAgICAgIC5nZXRNZXNzYWdlRW50cnkoKQotICAgICAgICAuZ2V0VHlwZSgpCi0gICAgICAgIC5lcXVhbHNJZ25vcmVDYXNlKE1lc3NhZ2VFbnRyeS5UWVBFX1JFU1BPTlNFKSkKLSAgICAgIHsKLSAgICAgICAgLy8gbG9vayBmb3IgPHNvYXA6RmF1bHQ+IGVsZW1lbnQ6Ci0gICAgICAgIE5vZGVMaXN0IGZhdWx0TGlzdCA9Ci0gICAgICAgICAgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsCi0gICAgICAgICAgICBYTUxVdGlscy5TT0FQX0VMRU1fRkFVTFQpOwotICAgICAgICBpZiAoKGZhdWx0TGlzdCA9PSBudWxsKSB8fCAoZmF1bHRMaXN0LmdldExlbmd0aCgpID09IDApKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gUmVzcG9uc2UgZG9lcyBub3QgY29udGFpbiBhIHNvYXA6RmF1bHQKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gd2UgaGF2ZSBhIHNvYXA6RmF1bHQuIAotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBsb29rIGF0IGVhY2ggc29hcDpGYXVsdCBpbiB0dXJuCi0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZhdWx0TGlzdC5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBFbGVtZW50IHNvYXBGYXVsdCA9IChFbGVtZW50KSBmYXVsdExpc3QuaXRlbShpKTsKLSAgICAgICAgICAgICAgLy8gZmluZCB0aGUgZGV0YWlsIGVsZW1lbnQocykgaWYgYW55Ci0gICAgICAgICAgICAgIE5vZGVMaXN0IGRldGFpbExpc3QgPQotICAgICAgICAgICAgICAgIHNvYXBGYXVsdC5nZXRFbGVtZW50c0J5VGFnTmFtZShYTUxVdGlscy5TT0FQX0VMRU1fRkFVTFRfREVUQUlMKTsKLSAgICAgICAgICAgICAgaWYgKGRldGFpbExpc3QgIT0gbnVsbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIGRldGFpbCBlbGVtZW50Li4uICAgICAJCQkJCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBkZXRhaWxMaXN0LmdldExlbmd0aCgpOyBqKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgTmFtZWROb2RlTWFwIGRldGFpbEF0dHJpYnMgPQotICAgICAgICAgICAgICAgICAgICBkZXRhaWxMaXN0Lml0ZW0oaikuZ2V0QXR0cmlidXRlcygpOwotICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGFueSBxdWFsaWZpZWQgYXR0cmlidXRlcwotICAgICAgICAgICAgICAgICAgaWYgKGRldGFpbEF0dHJpYnMgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBkZXRhaWxBdHRyaWJzLmdldExlbmd0aCgpOyBrKyspCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBBdHRyIG5leHRBdHRyID0gKEF0dHIpIChkZXRhaWxBdHRyaWJzLml0ZW0oaykpOwotICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIHF1YWxpZmllZCBhdHRyaWJ1dGUsIGNoZWNrIHRoYXQgCi0gICAgICAgICAgICAgICAgICAgICAgLy8gcW5hbWUgIT0gaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZQotICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0QXR0ci5nZXROYW1lc3BhY2VVUkkoKSAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpZmllZEF0dHJpYnV0ZXMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRBdHRyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXROYW1lc3BhY2VVUkkoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19VUklfU09BUCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvdW5kIHVuZXhwZWN0ZWQgcW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghcXVhbGlmaWVkQXR0cmlidXRlcykKLSAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyB0YXJnZXQgbWVzc2FnZSBpcyBub3QgYSBSZXNwb25zZQotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMjA0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIwNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2MwOWZiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMjA0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvblBhc3NFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NZXNzYWdlRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk9wZXJhdGlvblNpZ25hdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5UeXBlc1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIEJQMTIwNC4KLSAqIFRoZSBzZXJpYWxpemVkIGFycmF5IGZvcm0gaW4gdGhlIG1lc3NhZ2UgZG9lcyBub3QgY29udGFpbiB0aGUgCi0gKiBzb2FwZW5jOmFycmF5VHlwZSBhdHRyaWJ1dGUuCi0gKiAKLSAqLwotcHVibGljIGNsYXNzIEJQMTIwNCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTIwNChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShUZXN0QXNzZXJ0aW9uLCBFbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLQotICAgICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gUGFyc2UgbWVzc2FnZQotICAgICAgRG9jdW1lbnQgZG9jID0KLSAgICAgICAgWE1MVXRpbHMucGFyc2VYTUwoZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1lc3NhZ2UoKSk7Ci0KLSAgICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc0ZhdWx0KGRvYykpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25QYXNzRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFBhcnNlIHJlcXVlc3QgbWVzc2FnZQotICAgICAgRG9jdW1lbnQgZG9jUmVxdWVzdCA9Ci0gICAgICAgIFhNTFV0aWxzLnBhcnNlWE1MKGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0TWVzc2FnZSgpKTsKLQotICAgICAgLy8gZ2V0IFNPQVBBY3Rpb24KLSAgICAgIFN0cmluZyBoZWFkZXJzID0gZW50cnlDb250ZXh0LmdldFJlcXVlc3QoKS5nZXRIVFRQSGVhZGVycygpOwotICAgICAgU3RyaW5nIGFjdGlvbiA9IG51bGw7Ci0gICAgICBpZiAoaGVhZGVycyAhPSBudWxsKQotICAgICAgICBhY3Rpb24gPSAoU3RyaW5nKSBIVFRQVXRpbHMuZ2V0SHR0cEhlYWRlclRva2VucyhoZWFkZXJzLCAiOiIpLmdldCgiU09BUEFjdGlvbiIudG9VcHBlckNhc2UoKSk7Ci0KLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IHZhbGlkYXRvci5hbmFseXplckNvbnRleHQuZ2V0Q2FuZGlkYXRlSW5mbygpLmdldEJpbmRpbmdzKClbMF07Ci0gICAgICBUeXBlc1JlZ2lzdHJ5IHJlZ2lzdHJ5ID0KLSAgICAgICAgbmV3IFR5cGVzUmVnaXN0cnkoCi0gICAgICAgICAgdGhpcy52YWxpZGF0b3IuZ2V0V1NETERvY3VtZW50KCkuZ2V0RGVmaW5pdGlvbnMoKSwKLSAgICAgICAgICB2YWxpZGF0b3IpOwotICAgICAgT3BlcmF0aW9uU2lnbmF0dXJlLk9wZXJhdGlvbk1hdGNoIG1hdGNoID0KLSAgICAgICAgT3BlcmF0aW9uU2lnbmF0dXJlLm1hdGNoT3BlcmF0aW9uKAotICAgICAgICAgIGRvY1JlcXVlc3QsCi0gICAgICAgICAgYWN0aW9uLAotICAgICAgICAgIGJpbmRpbmcsCi0gICAgICAgICAgcmVnaXN0cnkpOwotCi0gICAgICBpZiAobWF0Y2ggPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvblBhc3NFeGNlcHRpb24oKTsKLQotICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gbWF0Y2guZ2V0T3BlcmF0aW9uKCk7Ci0KLSAgICAgIE1lc3NhZ2Ugb3BlcmF0aW9uTWVzc2FnZSA9IG51bGw7Ci0gICAgICBpZiAoTWVzc2FnZUVudHJ5Ci0gICAgICAgIC5UWVBFX1JFUVVFU1QKLSAgICAgICAgLmVxdWFscyhlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpKQotICAgICAgICAmJiAoYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRJbnB1dCgpICE9IG51bGwpKQotICAgICAgewotICAgICAgICBvcGVyYXRpb25NZXNzYWdlID0KLSAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldElucHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoTWVzc2FnZUVudHJ5Ci0gICAgICAgICAgLlRZUEVfUkVTUE9OU0UKLSAgICAgICAgICAuZXF1YWxzKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRUeXBlKCkpCi0gICAgICAgICAgJiYgKGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkuZ2V0T3V0cHV0KCkgIT0gbnVsbCkpCi0gICAgICAgIHsKLSAgICAgICAgICBvcGVyYXRpb25NZXNzYWdlID0KLSAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChvcGVyYXRpb25NZXNzYWdlID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25QYXNzRXhjZXB0aW9uKCk7Ci0KLSAgICAgIGJvb2xlYW4gaXNDb250YWluQXJyYXkgPSBmYWxzZTsKLQotICAgICAgQ29sbGVjdGlvbiBwYXJ0cyA9IG9wZXJhdGlvbk1lc3NhZ2UuZ2V0UGFydHMoKS52YWx1ZXMoKTsKLSAgICAgIGZvciAoSXRlcmF0b3IgaXRlciA9IHBhcnRzLml0ZXJhdG9yKCk7IGl0ZXIuaGFzTmV4dCgpOykKLSAgICAgIHsKLSAgICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpIGl0ZXIubmV4dCgpOwotCi0gICAgICAgIFFOYW1lIHR5cGUgPSBudWxsOwotCi0gICAgICAgIGlmIChwYXJ0LmdldFR5cGVOYW1lKCkgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHR5cGUgPSByZWdpc3RyeS5nZXRUeXBlKHBhcnQuZ2V0RWxlbWVudE5hbWUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZSA9IHBhcnQuZ2V0VHlwZU5hbWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlzQ29udGFpbkFycmF5ID0KLSAgICAgICAgICByZWdpc3RyeS5pc0V4dGVuZHNBcnJheSh0eXBlKQotICAgICAgICAgICAgfHwgcmVnaXN0cnkuaXNVc2VzV1NETEFycmF5VHlwZSh0eXBlKQotICAgICAgICAgICAgfHwgaXNBcnJheVR5cGUodHlwZSk7Ci0gICAgICAgIGlmIChpc0NvbnRhaW5BcnJheSkKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgaWYgKGlzQ29udGFpbkFycmF5KQotICAgICAgewotICAgICAgICAvLyBHZXRzIGJvZHkKLSAgICAgICAgTm9kZUxpc3Qgc29hcEJvZHlMaXN0ID0KLSAgICAgICAgICBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKLSAgICAgICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwKLSAgICAgICAgICAgIFhNTFV0aWxzLlNPQVBfRUxFTV9CT0RZKTsKLSAgICAgICAgaWYgKHNvYXBCb2R5TGlzdC5nZXRMZW5ndGgoKSA9PSAwIHx8IHNvYXBCb2R5TGlzdC5nZXRMZW5ndGgoKSA+IDEpCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgRWxlbWVudCBzb2FwQm9keUVsZW0gPSAoRWxlbWVudCkgc29hcEJvZHlMaXN0Lml0ZW0oMCk7Ci0KLSAgICAgICAgTm9kZUxpc3Qgc29hcEJvZHlDaWxkcmVuTGlzdCA9Ci0gICAgICAgICAgc29hcEJvZHlFbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoIioiLCAiKiIpOwotICAgICAgICBmb3IgKGludCBpbmRleENoaWxkID0gMDsKLSAgICAgICAgICBpbmRleENoaWxkIDwgc29hcEJvZHlDaWxkcmVuTGlzdC5nZXRMZW5ndGgoKTsKLSAgICAgICAgICBpbmRleENoaWxkKyspCi0gICAgICAgIHsKLSAgICAgICAgICBFbGVtZW50IGVsZW0gPSAoRWxlbWVudCkgc29hcEJvZHlDaWxkcmVuTGlzdC5pdGVtKGluZGV4Q2hpbGQpOwotICAgICAgICAgIGlmIChlbGVtCi0gICAgICAgICAgICAuaGFzQXR0cmlidXRlTlMoCi0gICAgICAgICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUF9FTkNPRElORywKLSAgICAgICAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJfQVJSQVlfVFlQRSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCksCi0gICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvblBhc3NFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyB3aGV0aGVyIHR5cGUgdXNlcyBhbiBhcnJheSBvciBub3QuCi0gICAqIEBwYXJhbSB0eXBlCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzQXJyYXlUeXBlKFFOYW1lIHR5cGUpCi0gIHsKLSAgICBib29sZWFuIGFycmF5VHlwZSA9IGZhbHNlOwotCi0gICAgRWxlbWVudCB0eXBlRWxlbWVudCA9IGdldFR5cGVFbGVtZW50KHR5cGUpOwotICAgIGlmICh0eXBlRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIE5vZGVMaXN0IGxpc3QgPQotICAgICAgICB0eXBlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfWFNELAotICAgICAgICAgICJzZXF1ZW5jZSIpOwotICAgICAgaWYgKGxpc3QuZ2V0TGVuZ3RoKCkgPiAwKQotICAgICAgICBhcnJheVR5cGUgPSB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBhcnJheVR5cGU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyBYTUwgZWxlbWVudCBkZWZpbmluZyB0aGUgdHlwZS4KLSAgICogQHBhcmFtIHR5cGUKLSAgICogQHJldHVybiBFbGVtZW50Ci0gICAqLwotICBwcml2YXRlIEVsZW1lbnQgZ2V0VHlwZUVsZW1lbnQoUU5hbWUgdHlwZSkKLSAgewotICAgIFR5cGVzW10gYWxsVHlwZXMgPSB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXRUeXBlcygpOwotICAgIGZvciAoaW50IGkgPSAwOyBhbGxUeXBlcyAhPSBudWxsICYmIGkgPCBhbGxUeXBlcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBFbGVtZW50IHR5cGVzRWxlbWVudCA9IG51bGw7Ci0gICAgICBpZiAoYWxsVHlwZXNbaV0gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdHlwZXNFbGVtZW50ID0gYWxsVHlwZXNbaV0uZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKTsKLSAgICAgICAgaWYgKHR5cGVzRWxlbWVudCA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgTGlzdCBleHRMaXN0ID0gYWxsVHlwZXNbaV0uZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICAgICAgZm9yIChJdGVyYXRvciBpdGVyID0gZXh0TGlzdC5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspCi0gICAgICAgICAgewotICAgICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWxlbSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaXRlci5uZXh0KCk7Ci0KLSAgICAgICAgICAgIGlmIChleHRFbGVtCi0gICAgICAgICAgICAgIC5nZXRFbGVtZW50VHlwZSgpCi0gICAgICAgICAgICAgIC5lcXVhbHMobmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfWFNELCAic2NoZW1hIikpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICB0eXBlc0VsZW1lbnQgPQotICAgICAgICAgICAgICAgICgoU2NoZW1hKSBleHRFbGVtKS5nZXRFbGVtZW50KCk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAodHlwZXNFbGVtZW50ICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBOb2RlTGlzdCBjb21wbGV4VHlwZXNMaXN0ID0KLSAgICAgICAgICAgIHR5cGVzRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICAgICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1hTRCwKLSAgICAgICAgICAgICAgImNvbXBsZXhUeXBlIik7Ci0gICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb21wbGV4VHlwZXNMaXN0LmdldExlbmd0aCgpOyBqKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgRWxlbWVudCB0eXBlRWxlbSA9IChFbGVtZW50KSBjb21wbGV4VHlwZXNMaXN0Lml0ZW0oaik7Ci0gICAgICAgICAgICBpZiAodHlwZS5nZXRMb2NhbFBhcnQoKS5lcXVhbHModHlwZUVsZW0uZ2V0QXR0cmlidXRlKCJuYW1lIikpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZXR1cm4gdHlwZUVsZW07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIwOC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMDguamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI2YWY5Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIwOC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVHJhdmVyc2FsOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLlByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKLQotCi0vKioKLSAqIEJQMTIwOCBOT1QgRlVMTFkgVEVTVEVELgotICovCi1wdWJsaWMgY2xhc3MgQlAxMjA4IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMjA4KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIFBhcnNlIGxvZyBtZXNzYWdlIAotICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotICAgIGlmIChkb2MgPT0gbnVsbCkgewotICAgICAgLy9tZXNzYWdlIGlzIGVtcHR5IG9yIGludmFsaWQsIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0KLSAgICB9IGVsc2UgewotCi0gICAgICAvLyBUcmF2ZXJzZSBkb2N1bWVudCBsb29raW5nIGZvciBwcm9jZXNzaW5nIGluc3RydWN0aW9ucy4KLSAgICAgIC8vIElTU1VFOiB0aGlzIGlubmVyIGNsYXNzIG5lZWRzIC4uLiByZXZpc2l0aW5nL3JlcGxhY2luZwotICAgICAgLy8gRUcuIERvIHdlIHdhbnQgdG8gbGlzdCBhbGwgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMsIAotICAgICAgLy8gb3IgaXMgdGhlIGZpcnN0IHN1ZmZpY2llbnQ/Ci0gICAgICBYTUxUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFhNTFRyYXZlcnNhbCgpCi0gICAgICB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIHZpc2l0KFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBwaSkKLSAgICAgICAgewotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPQotICAgICAgICAgICAgICAiVGFyZ2V0OiAiICsgcGkuZ2V0VGFyZ2V0KCkgKyAiLCBEYXRhOiAiICsgcGkuZ2V0RGF0YSgpOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gQUREOiBIb3cgc2hvdWxkIHRoaXMgZXhjZXB0aW9uIGJlIGhhbmRsZWQ/Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgc3VwZXIudmlzaXQocGkpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0cmF2ZXJzYWwudmlzaXQoZG9jKTsKLQotICAgICAgaWYgKHJlc3VsdCA9PSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRAotICAgICAgICAmJiBmYWlsdXJlRGV0YWlsTWVzc2FnZSAhPSBudWxsKQotICAgICAgewotICAgICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChmYWlsdXJlRGV0YWlsTWVzc2FnZSwgZW50cnlDb250ZXh0KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIxMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMTEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkxMzNiOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIxMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk9wZXJhdGlvblNpZ25hdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5UeXBlc1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLldTRExVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFRhZ3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5BdHRyOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiBCUDEyMTEuCi0gKiAKLSAqIENvbnRleHQ6IAotICogRm9yIGEgY2FuZGlkYXRlIG1lc3NhZ2UgaW4gdGhlIG1lc3NhZ2UgbG9nIGZpbGUsIHRoYXQgaXMgcmVmZXJyZWQgYnkgYSBiaW5kaW5nIHN0eWxlIFJQQy1saXRlcmFsCi0gKiAKLSAqIERlc2NyaXB0aW9uOgotICogUGFydCBhY2Nlc3NvciBlbGVtZW50cyBpbiB0aGUgbWVzc2FnZSBkbyBub3QgaGF2ZSBhbiB4c2k6bmlsIGF0dHJpYnV0ZSB3aXRoIGEgdmFsdWUgb2YgIjEiIG9yICJ0cnVlIi4KLSAqLwotcHVibGljIGNsYXNzIEJQMTIxMSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBYTUxUYWdzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEyMTEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUoVGVzdEFzc2VydGlvbiwgRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAodmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gUGFyc2UgbWVzc2FnZQotICAgICAgRG9jdW1lbnQgZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCk7Ci0gICAgICBEb2N1bWVudCBkb2NSZXF1ZXN0ID0gZW50cnlDb250ZXh0LmdldFJlcXVlc3REb2N1bWVudCgpOwotCi0gICAgICBFbGVtZW50IHNvYXBPcGVyYXRpb24gPSBudWxsOwotICAgICAgLy8gSWYgdGhlcmUgaXMgYSBGYXVsdCBlbnRyeSBvciBubyBib2R5IGVudHJpZXMsCi0gICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAodmFsaWRhdG9yLmlzRmF1bHQoZG9jKQotICAgICAgICB8fCAoc29hcE9wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRTb2FwQm9keUNoaWxkKGRvYykpID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIC8vIEdldCBTT0FQQWN0aW9uCi0gICAgICBTdHJpbmcgaGVhZGVycyA9IGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0SFRUUEhlYWRlcnMoKTsKLSAgICAgIFN0cmluZyBhY3Rpb24gPSBudWxsOwotICAgICAgaWYgKGhlYWRlcnMgIT0gbnVsbCkKLSAgICAgICAgYWN0aW9uID0gKFN0cmluZykgSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoaGVhZGVycywgIjoiKS5nZXQoIlNPQVBBY3Rpb24iLnRvVXBwZXJDYXNlKCkpOwotCi0gICAgICAvLyBHZXQgdGhlIGJpbmRpbmcgdGhhdCBpcyBiZWluZyBwcm9jZXNzZWQgICAgICAgICAgICAgICAgCi0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXRCaW5kaW5ncygpWzBdOwotCi0gICAgICAvL0NyZWF0ZSB0aGUgdHlwZXMgcmVnaXN0cnkKLSAgICAgIFR5cGVzUmVnaXN0cnkgcmVnaXN0cnkgPQotICAgICAgICBuZXcgVHlwZXNSZWdpc3RyeSgKLSAgICAgICAgICB0aGlzLnZhbGlkYXRvci5nZXRXU0RMRG9jdW1lbnQoKS5nZXREZWZpbml0aW9ucygpLAotICAgICAgICAgIHZhbGlkYXRvcik7Ci0KLSAgICAgIC8vIEZpbmQgYW4gb3BlcmF0aW9uIG1hdGNoICAgICAgICAKLSAgICAgIE9wZXJhdGlvblNpZ25hdHVyZS5PcGVyYXRpb25NYXRjaCBtYXRjaCA9Ci0gICAgICAgIE9wZXJhdGlvblNpZ25hdHVyZS5tYXRjaE9wZXJhdGlvbigKLSAgICAgICAgICBkb2NSZXF1ZXN0LAotICAgICAgICAgIGFjdGlvbiwKLSAgICAgICAgICBiaW5kaW5nLAotICAgICAgICAgIHJlZ2lzdHJ5KTsKLSAgICAgIGlmIChtYXRjaCA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBHZXQgdGhlIGJpbmRpbmcgb3BlcmF0aW9uIGJhc2VkIG9uIHRoZSBtYXRjaAotICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gbWF0Y2guZ2V0T3BlcmF0aW9uKCk7Ci0KLSAgICAgIC8vIElmIHRoaXMgaXMgbm90IHJwYy1saXRlcmFsLCB0aGVuIHJldHVybiBub3RBcHBsaWNhYmxlIHJlc3VsdAotICAgICAgaWYgKCFXU0RMVXRpbHMKLSAgICAgICAgLmlzUnBjTGl0ZXJhbChtYXRjaC5nZXRPcGVyYXRpb25TdHlsZSgpLCBiaW5kaW5nT3BlcmF0aW9uKSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIGFjY2Vzc29ycwotICAgICAgRWxlbWVudCBhY2Nlc3NvciA9IFhNTFV0aWxzLmdldEZpcnN0Q2hpbGQoc29hcE9wZXJhdGlvbik7Ci0gICAgICB3aGlsZSAoYWNjZXNzb3IgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgQXR0ciBhdHRyID0gWE1MVXRpbHMuZ2V0QXR0cmlidXRlKGFjY2Vzc29yLCBBVFRSX1hTSV9OSUwpOwotICAgICAgICAvLyBJZiB0aGVyZSBpcyB4c2k6bmlsIGF0dHJpYnV0ZSBhbmQgaXRzIHZhbHVlIGlzICIxIiBvciAidHJ1ZSIKLSAgICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgaWYgKGF0dHIgIT0gbnVsbAotICAgICAgICAgICYmIChhdHRyLmdldFZhbHVlKCkuZXF1YWxzKCIxIikgfHwgYXR0ci5nZXRWYWx1ZSgpLmVxdWFscygidHJ1ZSIpKSkKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgYWNjZXNzb3IgbmFtZSBpcyAiCi0gICAgICAgICAgICArIGFjY2Vzc29yLmdldE5vZGVOYW1lKCkpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEdldHRpbmcgdGhlIG5leHQgYWNjZXNzb3IKLSAgICAgICAgYWNjZXNzb3IgPSBYTUxVdGlscy5nZXROZXh0U2libGluZyhhY2Nlc3Nvcik7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgYWZlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMjEyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIxMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzFmNzcyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMjEyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLS8qKgotICogQlAxMjEyCi0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIG5vbi1mYXVsdCBlbnZlbG9wZSBjb250YWluaW5nIGEgc29hcDpib2R5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQ8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIGVudmVsb3BlIGNvbnRhaW5zIGV4YWN0bHkgb25lIHBhcnQgYWNjZXNzb3IgZWxlbWVudCBmb3IgZWFjaCBvZiB0aGUgd3NkbDpwYXJ0IGVsZW1lbnRzIGJvdW5kIHRvIHRoZSBlbnZlbG9wZSdzIGNvcnJlc3BvbmRpbmcgc29hcGJpbmQ6Ym9keSBlbGVtZW50LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDEyMTIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIHsKLQotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMjEyKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIGlmICh2YWxpZGF0b3IuaXNPbmVXYXlSZXNwb25zZShlbnRyeUNvbnRleHQpKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBHZXR0aW5nIGEgbWVzc2FnZSBkb2N1bWVudAotICAgICAgRG9jdW1lbnQgZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCk7Ci0KLSAgICAgIEVsZW1lbnQgc29hcE9wZXJhdGlvbiA9IG51bGw7Ci0gICAgICAvLyBJZiB0aGVyZSBpcyBhIEZhdWx0IGVudHJ5IG9yIG5vIGJvZHkgZW50cmllcywKLSAgICAgIC8vIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmICh2YWxpZGF0b3IuaXNGYXVsdChkb2MpCi0gICAgICAgIHx8IChzb2FwT3BlcmF0aW9uID0gdmFsaWRhdG9yLmdldFNvYXBCb2R5Q2hpbGQoZG9jKSkgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gQ3JlYXRpbmcgYSBxdWFsaWZpZWQgbmFtZSBvZiBwb3RlbnRpYWwgU09BUCBvcGVyYXRpb24KLSAgICAgIFFOYW1lIG9wZXJhdGlvblFOYW1lID0gbmV3IFFOYW1lKAotICAgICAgICBzb2FwT3BlcmF0aW9uLmdldE5hbWVzcGFjZVVSSSgpLCBzb2FwT3BlcmF0aW9uLmdldExvY2FsTmFtZSgpKTsKLQotICAgICAgLy8gUmV0cmlldmluZyBhbGwgdGhlIFJQQyBiaW5kaW5nIG9wZXJhdGlvbnMgZnJvbSB3c2RsOmJpbmRpbmcKLSAgICAgIEJpbmRpbmdPcGVyYXRpb25bXSBycGNCaW5kaW5nT3BlcmF0aW9ucyA9Ci0gICAgICAgIHZhbGlkYXRvci5nZXRNYXRjaGluZ0JpbmRpbmdPcHMoCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQywKLSAgICAgICAgICB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXRCaW5kaW5ncygpKTsKLQotICAgICAgLy8gUmV0cmlldmluZyBiaW5kaW5nIG9wZXJhdGlvbiBieSBnaXZlbiBvcGVyYXRpb24gbmFtZQotICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gdmFsaWRhdG9yLmdldE9wZXJhdGlvbk1hdGNoKAotICAgICAgICBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeVR5cGUoKSwKLSAgICAgICAgb3BlcmF0aW9uUU5hbWUsCi0gICAgICAgIHJwY0JpbmRpbmdPcGVyYXRpb25zKTsKLQotICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbWF0Y2hlZCBvcGVyYXRpb24sIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmIChiaW5kaW5nT3BlcmF0aW9uID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIC8vIEZpbmRpbmcgb3BlcmF0aW9uIG1lc3NhZ2UgcGFydHMgYW5kIGV4dGVuc2liaWxpdHkgZWxlbXMKLSAgICAgIC8vIGluIHRoZSBiaW5kaW5nIGRlcGVuZGluZyBvbiBtZXNzYWdlIHR5cGUKLSAgICAgIExpc3Qgb3BlcmF0aW9uTWVzc2FnZVBhcnRzID0gbnVsbDsKLSAgICAgIExpc3QgZXh0RWxlbXMgPSBudWxsOwotICAgICAgaWYgKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRUeXBlKCkuZXF1YWxzKAotICAgICAgICBNZXNzYWdlRW50cnkuVFlQRV9SRVFVRVNUKSkKLSAgICAgIHsKLSAgICAgICAgb3BlcmF0aW9uTWVzc2FnZVBhcnRzID0gYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKQotICAgICAgICAgIC5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKS5nZXRPcmRlcmVkUGFydHMobnVsbCk7Ci0gICAgICAgIGlmIChiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpICE9IG51bGwpCi0gICAgICAgICAgZXh0RWxlbXMgPQotICAgICAgICAgICAgYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgb3BlcmF0aW9uTWVzc2FnZVBhcnRzID0gYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKQotICAgICAgICAgIC5nZXRPdXRwdXQoKS5nZXRNZXNzYWdlKCkuZ2V0T3JkZXJlZFBhcnRzKG51bGwpOwotICAgICAgICBpZiAoYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCkgIT0gbnVsbCkKLSAgICAgICAgICBleHRFbGVtcyA9Ci0gICAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdPdXRwdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIH0KLQotICAgICAgLy8gR2V0dGluZyBhbGwgdGhlIGFjY2Vzc29ycyBvZiB0aGUgb3BlcmF0aW9uIGVsZW1lbnQKLSAgICAgIExpc3QgYWNjZXNzb3JzID0gWE1MVXRpbHMuZ2V0Q2hpbGRFbGVtZW50cyhzb2FwT3BlcmF0aW9uKTsKLSAgICAgIC8vIEdldHRpbmcgdGhlIG9yZGVyZWQgbGlzdCBvZiB3c2RsOnBhcnQgbmFtZXMKLSAgICAgIExpc3Qgb3JkZXJlZFBhcnROYW1lcyA9Ci0gICAgICAgIHZhbGlkYXRvci5vcmRlclBhcnROYW1lcyhvcGVyYXRpb25NZXNzYWdlUGFydHMsIGV4dEVsZW1zKTsKLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSB3c2RsOnBhcnQgbmFtZXMKLSAgICAgIEl0ZXJhdG9yIGkgPSBvcmRlcmVkUGFydE5hbWVzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaS5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBwYXJ0TmFtZSA9IChTdHJpbmcpIGkubmV4dCgpOwotICAgICAgICAvLyBJZiB0aGVyZSBpcyBub3QgZXhhY3RseSBvbmUgYWNjZXNzb3IgZm9yIHRoZSBwYXJ0IHNwZWNpZmllZCwKLSAgICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgaWYgKGdldFBhcnRzQ291bnQoYWNjZXNzb3JzLCBwYXJ0TmFtZSkgIT0gMSkKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAgICJUaGUgbmFtZSBvZiB3c2RsOnBhcnQgaXMgIiArIHBhcnROYW1lKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gYW5hZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvdW50cyB0aGUgYW1vdW50IG9mIGFjY2Vzc29ycyBvZiBhIHNwZWNpZmljIG5hbWUKLSAgICogQHBhcmFtIGFjY2Vzc29ycyBhIGxpc3Qgb2YgYWNjZXNzb3JzCi0gICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIGFjY2Vzc29yIGVsZW1lbnRzIHRvIGJlIGNvdW50ZWQKLSAgICogQHJldHVybgotICAgKi8KLSAgcHJpdmF0ZSBpbnQgZ2V0UGFydHNDb3VudChMaXN0IGFjY2Vzc29ycywgU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBpbnQgY291bnQgPSAwOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhY2Nlc3NvcnMuc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgRWxlbWVudCBhY2Nlc3NvciA9IChFbGVtZW50KSBhY2Nlc3NvcnMuZ2V0KGkpOwotICAgICAgaWYgKGFjY2Vzc29yLmdldExvY2FsTmFtZSgpLmVxdWFscyhuYW1lKSkKLSAgICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAgICByZXR1cm4gY291bnQ7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIxMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMTMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU1ZDg0Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTIxMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLS8qKgotICogQlAxMjEzCi0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIG5vbi1mYXVsdCBlbnZlbG9wZSBjb250YWluaW5nIGEgc29hcDpCb2R5IGVsZW1lbnQsIGFuZCBpcyByZWZlcnJlZCBieSBhIGRvYy1saXRlcmFsIGJpbmRpbmc8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIGVudmVsb3BlIGhhcyBubyBlbGVtZW50IGNvbnRlbnQgaW4gdGhlIHNvYXA6Qm9keSBlbGVtZW50IGlmIHRoZSB2YWx1ZSBvZiB0aGUgcGFydHMgYXR0cmlidXRlIG9mIHRoZSBzb2FwYmluZDpib2R5IGlzIGFuIGVtcHR5IHN0cmluZyBpbiB0aGUgY29ycmVzcG9uZGluZyBkb2MtbGl0ZXJhbCBkZXNjcmlwdGlvbi48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlAxMjEzIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyB7Ci0KLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTIxMyhCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAodmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gR2V0dGluZyBhIG1lc3NhZ2UgZG9jdW1lbnQKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICBFbGVtZW50IG1lc3NhZ2VFbGVtZW50ID0gbnVsbDsKLSAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGlzIGVtcHR5IG9yIGludmFsaWQgb3IgdGhlcmUgaXMgYSBGYXVsdCBlbnRyeQotICAgICAgLy8gb3IgdGhlcmUgaXMgbm8gYm9keSBlbnRyaWVzLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoZG9jID09IG51bGwKLSAgICAgICAgfHwgdmFsaWRhdG9yLmlzRmF1bHQoZG9jKQotICAgICAgICB8fCAobWVzc2FnZUVsZW1lbnQgPSB2YWxpZGF0b3IuZ2V0U29hcEJvZHlDaGlsZChkb2MpKSA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBHZXR0aW5nIGEgcXVhbGlmaWVkIG5hbWUgb2YgbWVzc2FnZSBlbGVtZW50Ci0gICAgICBRTmFtZSBtZXNzYWdlUGFydEVsZW1lbnRRTmFtZSA9IG5ldyBRTmFtZSgKLSAgICAgICAgbWVzc2FnZUVsZW1lbnQuZ2V0TmFtZXNwYWNlVVJJKCksIG1lc3NhZ2VFbGVtZW50LmdldExvY2FsTmFtZSgpKTsKLQotICAgICAgLy8gUmV0cmlldmluZyBhbGwgdGhlIGRvY3VtZW50IGJpbmRpbmcgb3BlcmF0aW9ucyBmcm9tIHdzZGw6YmluZGluZwotICAgICAgQmluZGluZ09wZXJhdGlvbltdIGRvY0JpbmRpbmdPcGVyYXRpb25zID0KLSAgICAgICAgdmFsaWRhdG9yLmdldE1hdGNoaW5nQmluZGluZ09wcygKLSAgICAgICAgICBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DLAotICAgICAgICAgIHZhbGlkYXRvci5hbmFseXplckNvbnRleHQuZ2V0Q2FuZGlkYXRlSW5mbygpLmdldEJpbmRpbmdzKCkpOwotCi0gICAgICAvLyBSZXRyaWV2aW5nIGJpbmRpbmcgb3BlcmF0aW9uIGJ5IGdpdmVuIGVsZW1lbnQgbmFtZQotICAgICAgQmluZGluZ09wZXJhdGlvbltdIHBvdGVudGlhbERvY0xpdE9wcyA9Ci0gICAgICAgIHZhbGlkYXRvci5nZXREb2NMaXRPcGVyYXRpb25zKAotICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5VHlwZSgpLAotICAgICAgICAgIG1lc3NhZ2VQYXJ0RWxlbWVudFFOYW1lLAotICAgICAgICAgIGRvY0JpbmRpbmdPcGVyYXRpb25zKTsKLQotICAgICAgLy8gSWYgdGhlcmUgaXMgbm90IGV4YWN0bHkgb25lIG9wZXJhdGlvbiBtYXRjaGVkLAotICAgICAgLy8gdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKHBvdGVudGlhbERvY0xpdE9wcy5sZW5ndGggIT0gMSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gRmluZGluZyBvcGVyYXRpb24gZXh0ZW5zaWJpbGl0eSBlbGVtcwotICAgICAgLy8gaW4gdGhlIGJpbmRpbmcgZGVwZW5kaW5nIG9uIG1lc3NhZ2UgdHlwZQotICAgICAgTGlzdCBleHRFbGVtcyA9IG51bGw7Ci0gICAgICBpZiAoZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldFR5cGUoKS5lcXVhbHMoCi0gICAgICAgIE1lc3NhZ2VFbnRyeS5UWVBFX1JFUVVFU1QpCi0gICAgICAgICYmIHBvdGVudGlhbERvY0xpdE9wc1swXS5nZXRCaW5kaW5nSW5wdXQoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBleHRFbGVtcyA9IHBvdGVudGlhbERvY0xpdE9wc1swXQotICAgICAgICAgIC5nZXRCaW5kaW5nSW5wdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRUeXBlKCkuZXF1YWxzKAotICAgICAgICBNZXNzYWdlRW50cnkuVFlQRV9SRVNQT05TRSkKLSAgICAgICAgJiYgcG90ZW50aWFsRG9jTGl0T3BzWzBdLmdldEJpbmRpbmdPdXRwdXQoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBleHRFbGVtcyA9IHBvdGVudGlhbERvY0xpdE9wc1swXQotICAgICAgICAgIC5nZXRCaW5kaW5nT3V0cHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldHRpbmcgdGhlIHBhcnRzIGF0dHJpYnV0ZSBmcm9tIHNvYXBiaW5kOmJvZHkKLSAgICAgIExpc3QgcGFydHMgPSBudWxsOwotICAgICAgU09BUEJvZHkgc29hcEJvZHkgPSB2YWxpZGF0b3IuZ2V0U09BUEJvZHkoZXh0RWxlbXMpOwotICAgICAgaWYgKHNvYXBCb2R5ICE9IG51bGwpCi0gICAgICAgIHBhcnRzID0gc29hcEJvZHkuZ2V0UGFydHMoKTsKLQotICAgICAgLy8gaWYgdGhlIHBhcnRzIGF0dHJpYnV0ZSBpcyBhbiBlbXB0eSBzdHJpbmcgYW5kIHRoZXJlIGlzCi0gICAgICAvLyBhdCBsZWFzdCBvbmUgYWNjZXNzb3IsIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICBpZiAocGFydHMgIT0gbnVsbCAmJiBwYXJ0cy5pc0VtcHR5KCkKLSAgICAgICAgJiYgIVhNTFV0aWxzLmdldENoaWxkRWxlbWVudHMobWVzc2FnZUVsZW1lbnQpLmlzRW1wdHkoKSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIndzZGw6b3BlcmF0aW9uIG5hbWUgaXMgIgotICAgICAgICAgICsgcG90ZW50aWFsRG9jTGl0T3BzWzBdLmdldE5hbWUoKSk7Ci0KLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gYW5hZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMTQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMjE0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkYTEzNDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEyMTQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NZXNzYWdlRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0vKioKLSAqIEJQMTIxNAotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBub24tZmF1bHQgZW52ZWxvcGUgY29udGFpbmluZyBhIHNvYXA6Qm9keSBlbGVtZW50LCBhbmQgaXMgcmVmZXJyZWQgYnkgYSBycGMtbGl0ZXJhbCBiaW5kaW5nPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBlbnZlbG9wZSBkb2VzIG5vdCBjb250YWluIGFueSBwYXJ0IGFjY2Vzc29yIGVsZW1lbnRzIGlmIHRoZSB2YWx1ZSBvZiB0aGUgcGFydHMgYXR0cmlidXRlIG9mIHRoZSBzb2FwYmluZDpib2R5IGlzIGFuIGVtcHR5IHN0cmluZyBpbiB0aGUgY29ycmVzcG9uZGluZyBycGMtbGl0ZXJhbCBkZXNjcmlwdGlvbi48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlAxMjE0IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyB7Ci0KLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTIxNChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAodmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gR2V0dGluZyBhIG1lc3NhZ2UgZG9jdW1lbnQKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICBFbGVtZW50IHNvYXBPcGVyYXRpb24gPSBudWxsOwotICAgICAgLy8gSWYgdGhlcmUgaXMgYSBGYXVsdCBlbnRyeSBvciBubyBib2R5IGVudHJpZXMsCi0gICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAodmFsaWRhdG9yLmlzRmF1bHQoZG9jKQotICAgICAgICB8fCAoc29hcE9wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRTb2FwQm9keUNoaWxkKGRvYykpID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIC8vIENyZWF0aW5nIGEgcXVhbGlmaWVkIG5hbWUgb2YgcG90ZW50aWFsIFNPQVAgb3BlcmF0aW9uCi0gICAgICBRTmFtZSBvcGVyYXRpb25RTmFtZSA9IG5ldyBRTmFtZSgKLSAgICAgICAgc29hcE9wZXJhdGlvbi5nZXROYW1lc3BhY2VVUkkoKSwgc29hcE9wZXJhdGlvbi5nZXRMb2NhbE5hbWUoKSk7Ci0KLSAgICAgIC8vIFJldHJpZXZpbmcgYWxsIHRoZSBSUEMgYmluZGluZyBvcGVyYXRpb25zIGZyb20gd3NkbDpiaW5kaW5nCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uW10gcnBjQmluZGluZ09wZXJhdGlvbnMgPQotICAgICAgICB2YWxpZGF0b3IuZ2V0TWF0Y2hpbmdCaW5kaW5nT3BzKAotICAgICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMsCi0gICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0QmluZGluZ3MoKSk7Ci0KLSAgICAgIC8vIFJldHJpZXZpbmcgYmluZGluZyBvcGVyYXRpb24gYnkgZ2l2ZW4gb3BlcmF0aW9uIG5hbWUKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRPcGVyYXRpb25NYXRjaCgKLSAgICAgICAgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlUeXBlKCksCi0gICAgICAgIG9wZXJhdGlvblFOYW1lLAotICAgICAgICBycGNCaW5kaW5nT3BlcmF0aW9ucyk7Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgb3BlcmF0aW9uLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoYmluZGluZ09wZXJhdGlvbiA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBGaW5kaW5nIG9wZXJhdGlvbiBleHRlbnNpYmlsaXR5IGVsZW1zCi0gICAgICAvLyBpbiB0aGUgYmluZGluZyBkZXBlbmRpbmcgb24gbWVzc2FnZSB0eXBlCi0gICAgICBMaXN0IGV4dEVsZW1zID0gbnVsbDsKLSAgICAgIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpLmVxdWFscygKLSAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVRVUVTVCkKLSAgICAgICAgJiYgYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBleHRFbGVtcyA9Ci0gICAgICAgICAgYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRUeXBlKCkuZXF1YWxzKAotICAgICAgICBNZXNzYWdlRW50cnkuVFlQRV9SRVNQT05TRSkKLSAgICAgICAgJiYgYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZXh0RWxlbXMgPQotICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgfQotCi0gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBub3QgbGl0ZXJhbCwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKCF2YWxpZGF0b3IuaXNMaXRlcmFsKGV4dEVsZW1zKSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gR2V0dGluZyB0aGUgcGFydHMgYXR0cmlidXRlIGZyb20gc29hcGJpbmQ6Ym9keQotICAgICAgTGlzdCBwYXJ0cyA9IG51bGw7Ci0gICAgICBTT0FQQm9keSBzb2FwQm9keSA9IHZhbGlkYXRvci5nZXRTT0FQQm9keShleHRFbGVtcyk7Ci0gICAgICBpZiAoc29hcEJvZHkgIT0gbnVsbCkKLSAgICAgICAgcGFydHMgPSBzb2FwQm9keS5nZXRQYXJ0cygpOwotCi0gICAgICAvLyBpZiB0aGUgcGFydHMgYXR0cmlidXRlIGlzIGFuIGVtcHR5IHN0cmluZyBhbmQgdGhlcmUgaXMKLSAgICAgIC8vIGF0IGxlYXN0IG9uZSBhY2Nlc3NvciwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgIGlmIChwYXJ0cyAhPSBudWxsICYmIHBhcnRzLmlzRW1wdHkoKQotICAgICAgICAmJiAhWE1MVXRpbHMuZ2V0Q2hpbGRFbGVtZW50cyhzb2FwT3BlcmF0aW9uKS5pc0VtcHR5KCkpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJ3c2RsOm9wZXJhdGlvbiBuYW1lIGlzICIKLSAgICAgICAgICArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpKTsKLQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgYWZlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhMjBjNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi0KLS8qKgotICogQlAxMzAxLgotICovCi1wdWJsaWMgY2xhc3MgQlAxMzAxIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMzAxKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgLy9HZXQgdGhlIHJlcXVldHMgbWVzc2FnZSBhbmQgY2hlY2sgdGhlIHZhbHVlIG9mIG11c3RVbmRlcnN0YW5kLgotICAgIFN0cmluZyBtZXNzYWdlID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1lc3NhZ2UoKTsKLSAgICBPYmplY3RbXSBtdXN0VW5kZXJzdGFuZEF0dHJpYnV0ZXMgPSBnZXRNdXN0VW5kZXJzdGFuZEF0dHJpYnV0ZXMobWVzc2FnZSk7Ci0KLSAgICBpZiAobXVzdFVuZGVyc3RhbmRBdHRyaWJ1dGVzID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBtdXN0VW5kZXJzdGFuZEF0dHJpYnV0ZXMubGVuZ3RoOyBpbmRleCsrKQotICAgICAgewotICAgICAgICBpZiAoKG11c3RVbmRlcnN0YW5kQXR0cmlidXRlc1tpbmRleF0gIT0gbnVsbCkKLSAgICAgICAgICAmJiAobXVzdFVuZGVyc3RhbmRBdHRyaWJ1dGVzW2luZGV4XS5lcXVhbHMoIjEiKQotICAgICAgICAgICAgfHwgbXVzdFVuZGVyc3RhbmRBdHRyaWJ1dGVzW2luZGV4XS5lcXVhbHMoIjAiKSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAgICJUaGUgU09BUCBtdXN0VW5kZXJzdGFuZCBhdHRyaWJ1dGUgd2FzIHByZXNlbnQgIgotICAgICAgICAgICAgICAgICsgIiBhbmQgaXRzIHZhbHVlIHdhcyAgIgotICAgICAgICAgICAgICAgICsgbXVzdFVuZGVyc3RhbmRBdHRyaWJ1dGVzW2luZGV4XSwKLSAgICAgICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICAgICAgfSAvL0VuZCBpZgotICAgICAgfSAvL0VuZCBmb3IKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvL1JldHJlaXZlcyB0aGUgdmFsdWUgb2YgdGhlIG11c3RVbmRlcnN0YW5kIGF0dHJpYnV0ZSBmcm9tIEFMTCBTT0FQIGhlYWRlcgotICAvL0lmIHRoZSBIZWFkZXIgaXMgbWlzc2luZyBvciBpZiBpdCBkb2VzIG5vdCBjb250YWluIGFueSB0YXJnZXRzIG9yIGlmCi0gIC8vdGhlIGhlYWRlciBkb2VzIG5vdCBjb250YWluIGEgbXVzdFVuZGVyc3RhbmQgYXR0cmlidXRlIHRoZW4gc2V0IHRoZQotICAvL2Fzc2VydGlvblJlc3VsdCB0byBSRVNVTFRfTk9UX0FQUExJQ0FCTEUuCi0gIHByaXZhdGUgT2JqZWN0W10gZ2V0TXVzdFVuZGVyc3RhbmRBdHRyaWJ1dGVzKFN0cmluZyBtZXNzYWdlKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIGlmIChtZXNzYWdlID09IG51bGwgfHwgbWVzc2FnZS50cmltKCkuZXF1YWxzKCIiKSkgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgRG9jdW1lbnQgZG9jID0gWE1MVXRpbHMucGFyc2VYTUwobWVzc2FnZSk7Ci0gICAgTm9kZUxpc3QgaGVhZGVycyA9Ci0gICAgICBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsICJIZWFkZXIiKTsKLQotICAgIC8vSWYgYSBoZWFkZXIgbm90IHByZXNlbnQgc2V0IHJlc3VsdCB0byBub3RBcHBsaWNhYmxlCi0gICAgLy9lbHNlIHByb2Nlc3MgZWFjaCBoZWFkZXJFbnRyeQotICAgIGlmIChoZWFkZXJzLmdldExlbmd0aCgpIDw9IDApCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBWZWN0b3IgbXVzdFVuZGVyc3RhbmRBdHRyaWJ1dGVzID0gbmV3IFZlY3RvcigpOwotICAgICAgRWxlbWVudCBoZWFkZXIgPSAoRWxlbWVudCkgaGVhZGVycy5pdGVtKDApOwotICAgICAgaWYgKGhlYWRlciA9PSBudWxsKQotICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgTm9kZUxpc3QgaGVhZGVyRW50cmllcyA9IGhlYWRlci5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICAvL0ZvciBlYWNoIGhlYWRlciBlbnRyeSBjaGVjayByZXRyZWl2ZSB0aGUgbXVzdFVuZGVyc3RhbmQgYXR0cmlidXRlIAotICAgICAgLy9pZiBhbnksIGVsc2Ugc2V0IHRoZSB0ZXN0IHJlc3VsdCB0byBub3RBcHBsaWNhYmxlCi0KLSAgICAgIC8vVGhpcyBpcyB1c2VkIHRvIGluZGljYXRlIGlmIGEgaGVhZGVyIGNvbnRhaW5lZCBhbnkgY2hpbGQgRWxlbWVudHMKLSAgICAgIGJvb2xlYW4gaGVhZGVyVGFyZ2V0cyA9IGZhbHNlOwotCi0gICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgaGVhZGVyRW50cmllcy5nZXRMZW5ndGgoKTsgKytpbmRleCkKLSAgICAgIHsKLSAgICAgICAgTm9kZSBoZWFkZXJFbnRyeSA9IGhlYWRlckVudHJpZXMuaXRlbShpbmRleCk7Ci0gICAgICAgIGlmIChoZWFkZXJFbnRyeS5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICB7Ci0gICAgICAgICAgaGVhZGVyVGFyZ2V0cyA9IHRydWU7Ci0gICAgICAgICAgQXR0ciBtdXN0VW5kZXJzdGFuZCA9Ci0gICAgICAgICAgICAoKEVsZW1lbnQpIGhlYWRlckVudHJ5KS5nZXRBdHRyaWJ1dGVOb2RlTlMoCi0gICAgICAgICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwKLSAgICAgICAgICAgICAgIm11c3RVbmRlcnN0YW5kIik7Ci0gICAgICAgICAgLy9SZXRyZWl2ZSB0aGUgdmFsdWUgb2YgdGhlIG11c3RVbmRlcnN0YW5kIGF0dHJpYnV0ZSBvZiB0aGUgcmVxdWVzdC4KLSAgICAgICAgICBpZiAobXVzdFVuZGVyc3RhbmQgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmcgbXVzdFVuZGVyc3RhbmRWYWx1ZSA9IG11c3RVbmRlcnN0YW5kLmdldE5vZGVWYWx1ZSgpOwotICAgICAgICAgICAgbXVzdFVuZGVyc3RhbmRBdHRyaWJ1dGVzLmFkZChtdXN0VW5kZXJzdGFuZFZhbHVlKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICAgICAgICAvL1RoZSBTT0FQIEhlYWRlciBkb2VzIG5vdCBjb250YWluIGEgbXVzdFVuZGVyc3RhbmQgYXR0cmlidXRlLiIKLSAgICAgICAgICB9IC8vCW11c3RVbmRlcnN0YW5kICE9IG51bGwKLSAgICAgICAgfQotICAgICAgfSAvL0VuZCBmb3IKLQotICAgICAgaWYgKCFoZWFkZXJUYXJnZXRzKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgICAvL1RoZSBTT0FQIEhlYWRlciBkb2VzIG5vdCBjb250YWluIGFueSBoZWFkZXIgZW50cmllcy4KLSAgICAgIH0KLQotICAgICAgcmV0dXJuIG11c3RVbmRlcnN0YW5kQXR0cmlidXRlcy50b0FycmF5KCk7Ci0gICAgfSAvL0VuZCBJZiBoZWFkZXJzLmdldExlbmd0aCgpIDwgMAkKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBvYmplY3QgaXMgbXVzdCB1bmRlcnN0YW5kIGZhdWx0IGNvZGUuCi0gICAqIEBwYXJhbSBmYXVsdENvZGVFbGVtIHVuZGVyc3RhbmQgZmF1bHQgY29kZS4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgb2JqZWN0IGlzIG11c3QgdW5kZXJzdGFuZCBmYXVsdCBjb2RlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNNdXN0VW5kZXJzdGFuZEZhdWx0Q29kZShFbGVtZW50IGZhdWx0Q29kZUVsZW0pCi0gIHsKLSAgICAvL0EgZmF1bHRjb2RlIG1heSBvciBtYXlub3QgaGF2ZSBhIHByZWZpeCwgaWYgaXQgZG9lcyBpdHMgbmFtZXNwYWNlIHNob3VsZCBiZSAKLSAgICAvL2h0dDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZSB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgZmF1bHRjb2RlIGVsZW1lbnQuCi0gICAgLy9JZiBhIHByZWZpeCBpcyBwcmVzZW50IGFuZCBpdCBjb3JyZXNwb25kcyB0byBhIGRpZmZlcmVudCBuYW1lc3BhY2Ugb3IgaXMgbnVsbCAKLSAgICAvL3RoZW4gdGhpcyByZXR1cm5zIGZhbHNlLiAgVGhlIGxvY2FsIHBhcnQgb2YgdGhlIGZhdWx0Y29kZSBpcyB0aGVuIGNoZWNrIHRvIHNlZQotICAgIC8vaWYgaXQgaXMgb25lIG9mIHRoZSBwZXJtaXR0ZWQgdmFsdWVzLgotICAgIGlmIChmYXVsdENvZGVFbGVtID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgZmF1bHRDb2RlID0gZmF1bHRDb2RlRWxlbS5nZXRGaXJzdENoaWxkKCkuZ2V0Tm9kZVZhbHVlKCkudHJpbSgpOwotICAgIGlmIChmYXVsdENvZGUgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyBmYXVsdENvZGVFbGVtUHJlZml4ID0gZmF1bHRDb2RlRWxlbS5nZXRQcmVmaXgoKTsKLSAgICBTdHJpbmcgZmF1bHRDb2RlUHJlZml4ID0gZmF1bHRDb2RlLnN1YnN0cmluZygwLCBmYXVsdENvZGUuaW5kZXhPZignOicpKTsKLSAgICBTdHJpbmcgZmF1bHRDb2RlTmFtZSA9Ci0gICAgICBmYXVsdENvZGUuc3Vic3RyaW5nKGZhdWx0Q29kZS5pbmRleE9mKCc6JykgKyAxLCBmYXVsdENvZGUubGVuZ3RoKCkpOwotCi0gICAgaWYgKChmYXVsdENvZGVFbGVtUHJlZml4ICE9IG51bGwgfHwgZmF1bHRDb2RlUHJlZml4ICE9IG51bGwpKQotICAgIHsKLSAgICAgIGlmIChmYXVsdENvZGVQcmVmaXguZXF1YWxzKGZhdWx0Q29kZUVsZW1QcmVmaXgpCi0gICAgICAgICYmIChmYXVsdENvZGVOYW1lLmVxdWFscygiTXVzdFVuZGVyc3RhbmQiKQotICAgICAgICAgIHx8IGZhdWx0Q29kZU5hbWUuc3RhcnRzV2l0aCgiTXVzdFVuZGVyc3RhbmQuIikpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgaWYgKGZhdWx0Q29kZS5lcXVhbHMoIk11c3RVbmRlcnN0YW5kIikKLSAgICAgICAgfHwgZmF1bHRDb2RlTmFtZS5zdGFydHNXaXRoKCJNdXN0VW5kZXJzdGFuZC4iKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMwMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMDIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNhY2Q1Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMwMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAgICogQlAxMzAyLgotICAgKiBUaGUgc29hcDpmYXVsdGNvZGUgdmFsdWUgaW4gdGhlIHNvYXA6RmF1bHQgZWxlbWVudCBvZiB0aGUgcmVzcG9uc2UgCi0gICAqIG1lc3NhZ2UgaXMgbm90IGN1c3RvbSwgYW5kIGlzIG9uZSBvZjogVmVyc2lvbk1pc21hdGNoLCBNdXN0VW5kZXJzdGFuZCwgQ2xpZW50LCBTZXJ2ZXIuCi0gICAqLwotcHVibGljIGNsYXNzIEJQMTMwMiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTMwMihCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLy9TT0FQIGZhdWx0IGNvZGUgdmFsdWVzIHNob3VsZCBub3QgYmUgY3VzdG9tOiBvbmx5IHN0YW5kYXJkIGNvZGUgcXVhbGlmaWVycyAKLSAgLy9hcmUgdXNlZDogVmVyc2lvbk1pc21hdGNoLCBNdXN0VW5kZXJzdGFuZCwgQ2xpZW50LCBTZXJ2ZXIKLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIC8vU3RyaW5nIHJlcXVlc3RNZXNzYWdlID0gbnVsbDsKLSAgICBTdHJpbmcgcmVzcG9uc2VNZXNzYWdlID0gbnVsbDsKLQotICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vR2V0IHRoZSByZXNwb25zZSBtZXNzYWdlIGNoZWNrIHRoZSBmYXVsdGNvZGUuCi0gICAgICBNZXNzYWdlRW50cnkgbG9nRW50cnlSZXNwb25zZSA9IGVudHJ5Q29udGV4dC5nZXRSZXNwb25zZSgpOwotICAgICAgaWYgKGxvZ0VudHJ5UmVzcG9uc2UgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcmVzcG9uc2VNZXNzYWdlID0gbG9nRW50cnlSZXNwb25zZS5nZXRNZXNzYWdlKCk7Ci0KLSAgICAgICAgRG9jdW1lbnQgdGFyZ2V0RG9jID0gWE1MVXRpbHMucGFyc2VYTUwocmVzcG9uc2VNZXNzYWdlKTsKLSAgICAgICAgTm9kZUxpc3QgZmF1bHRDb2RlcyA9IHRhcmdldERvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZmF1bHRjb2RlIik7Ci0gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICB0YXJnZXREb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsICJmYXVsdGNvZGUiKTsKLQotICAgICAgICBpZiAoZmF1bHRDb2Rlcy5nZXRMZW5ndGgoKSA8PSAwKQotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICAgIC8vTm8gZmF1bHRjb2RlCQotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmF1bHRDb2Rlcy5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgTm9kZSBmYXVsdENvZGVFbGVtID0gZmF1bHRDb2Rlcy5pdGVtKGkpOwotICAgICAgICAgIC8vSWYgdGhlIGZhdWx0Y29kZSB3YXMgTXVzdFVuZGVyc3RhbmQsIGNoZWNrIHRoZSB2YWx1ZSBvZiAKLSAgICAgICAgICAvL3RoZSBtdXN0VW5kZXJzdGFuZCBhdHRyaWJ1dGUgaW4gdGhlIHJlcXVlc3QuCi0gICAgICAgICAgaWYgKGZhdWx0Q29kZUVsZW0gPT0gbnVsbCkKLSAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICAgICAgZWxzZSBpZiAoZmF1bHRDb2RlRWxlbS5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkRmF1bHRDb2RlKChFbGVtZW50KSBmYXVsdENvZGVFbGVtKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfV0FSTklORzsKLSAgICAgICAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChyZXNwb25zZU1lc3NhZ2UsIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgICAgICAgIC8vZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgICAgIC8vICAgICJUaGUgZmF1bHRjb2RlIHZhbHVlIHdhcyA6ICIKLSAgICAgICAgICAgICAgLy8gICAgICAgICsgZmF1bHRDb2RlRWxlbS5nZXRGaXJzdENoaWxkKCkuZ2V0Tm9kZVZhbHVlKCkudHJpbSgpOwotICAgICAgICAgICAgfSAvL0VuZCBpZiAoZmF1bHRDb2RlLmVxdWFscy4uLikKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICAgICAgfQotICAgICAgICB9IC8vRW5kIGZvcgkKLSAgICAgIH0gLy9FbmQgaWYgbG9nRW50cnlSZXNwb25zZSE9IG51bGwKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2sgZmF1bHRDb2RlLgotICAgKiBAcGFyYW0gZmF1bHRDb2RlRWxlbSBhIGZhdWx0Y29kZS4KLSAgICogQHJldHVybiB0cnVlIGlmIGZhdWx0Y29kZSBpcyB2YWxpZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzVmFsaWRGYXVsdENvZGUoRWxlbWVudCBmYXVsdENvZGVFbGVtKQotICB7Ci0gICAgLy9BIGZhdWx0Y29kZSBtYXkgb3IgbWF5bm90IGhhdmUgYSBwcmVmaXgsIGlmIGl0IGRvZXMgaXRzIG5hbWVzcGFjZSBzaG91bGQgYmUgCi0gICAgLy9odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlIHdoaWNoIGlzIHRoZSBzYW1lIGFzIHRoZSBmYXVsdGNvZGUgZWxlbWVudC4KLSAgICAvL0lmIGEgcHJlZml4IGlzIHByZXNlbnQgYW5kIGl0IGNvcnJlc3BvbmRzIHRvIGEgZGlmZmVyZW50IG5hbWVzcGFjZSBvciBpcyBudWxsIAotICAgIC8vdGhlbiB0aGlzIHJldHVybnMgZmFsc2UuICBUaGUgbG9jYWwgcGFydCBvZiB0aGUgZmF1bHRjb2RlIGlzIHRoZW4gY2hlY2sgdG8gc2VlCi0gICAgLy9pZiBpdCBpcyBvbmUgb2YgdGhlIHBlcm1pdHRlZCB2YWx1ZXMuCi0gICAgaWYgKGZhdWx0Q29kZUVsZW0gPT0gbnVsbCkKLSAgICAgIHJldHVybiB0cnVlOwotCi0gICAgU3RyaW5nIGZhdWx0Q29kZSA9IGZhdWx0Q29kZUVsZW0uZ2V0Rmlyc3RDaGlsZCgpLmdldE5vZGVWYWx1ZSgpLnRyaW0oKTsKLSAgICBpZiAoZmF1bHRDb2RlID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGSVg6IFRoaXMgaXMgbm90IGNvcnJlY3QsIHNpbmNlIHRoaXMgZWxlbWVudCBjYW4gbm90IGJlIG5hbWVzcGFjZSBxdWFsaWZpZWQKLSAgICBTdHJpbmcgZmF1bHRDb2RlRWxlbVByZWZpeCA9IGZhdWx0Q29kZUVsZW0uZ2V0UGFyZW50Tm9kZSgpLmdldFByZWZpeCgpOwotCi0gICAgLy8gSWYgdGhpcyBpcyBub3QgYSBRTmFtZSB0aGVuIHJldHVybiBmYWxzZQotICAgIGludCBpbmRleDsKLSAgICBTdHJpbmcgZmF1bHRDb2RlUHJlZml4ID0gbnVsbDsKLSAgICBTdHJpbmcgZmF1bHRDb2RlTmFtZSA9IGZhdWx0Q29kZTsKLSAgICBpZiAoKGluZGV4ID0gZmF1bHRDb2RlLmluZGV4T2YoJzonKSkgIT0gLTEpCi0gICAgewotICAgICAgZmF1bHRDb2RlUHJlZml4ID0gZmF1bHRDb2RlLnN1YnN0cmluZygwLCBpbmRleCk7Ci0gICAgICBmYXVsdENvZGVOYW1lID0gZmF1bHRDb2RlLnN1YnN0cmluZyhpbmRleCArIDEsIGZhdWx0Q29kZS5sZW5ndGgoKSk7Ci0gICAgfQotCi0gICAgaWYgKChmYXVsdENvZGVFbGVtUHJlZml4ICE9IG51bGwgJiYgZmF1bHRDb2RlUHJlZml4ICE9IG51bGwpKQotICAgIHsKLSAgICAgIGlmIChmYXVsdENvZGVQcmVmaXguZXF1YWxzKGZhdWx0Q29kZUVsZW1QcmVmaXgpKQotICAgICAgewotICAgICAgICBpZiAoKGZhdWx0Q29kZU5hbWUuZXF1YWxzKCJNdXN0VW5kZXJzdGFuZCIpCi0gICAgICAgICAgfHwgZmF1bHRDb2RlTmFtZS5lcXVhbHMoIlZlcnNpb25NaXNtYXRjaCIpCi0gICAgICAgICAgfHwgZmF1bHRDb2RlTmFtZS5lcXVhbHMoIkNsaWVudCIpCi0gICAgICAgICAgfHwgZmF1bHRDb2RlTmFtZS5lcXVhbHMoIlNlcnZlciIpKSkKLSAgICAgICAgICAvKiBSRU1PVkU6Ci0gICAgICAgICAgfHwgZmF1bHRDb2RlTmFtZS5zdGFydHNXaXRoKCJNdXN0VW5kZXJzdGFuZC4iKQotICAgICAgICAgIHx8IGZhdWx0Q29kZU5hbWUuc3RhcnRzV2l0aCgiVmVyc2lvbk1pc21hdGNoLiIpCi0gICAgICAgICAgfHwgZmF1bHRDb2RlTmFtZS5zdGFydHNXaXRoKCJDbGllbnQuIikKLSAgICAgICAgICB8fCBmYXVsdENvZGVOYW1lLnN0YXJ0c1dpdGgoIlNlcnZlci4iKSkpCi0gICAgICAgICAgKi8KLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpZiAoZmF1bHRDb2RlTmFtZS5lcXVhbHMoIk11c3RVbmRlcnN0YW5kIikKLSAgICAgICAgfHwgZmF1bHRDb2RlTmFtZS5lcXVhbHMoIlZlcnNpb25NaXNtYXRjaCIpCi0gICAgICAgIHx8IGZhdWx0Q29kZU5hbWUuZXF1YWxzKCJDbGllbnQiKQotICAgICAgICB8fCBmYXVsdENvZGVOYW1lLmVxdWFscygiU2VydmVyIikKLSAgICAgICAgfHwgZmF1bHRDb2RlTmFtZS5zdGFydHNXaXRoKCJNdXN0VW5kZXJzdGFuZC4iKQotICAgICAgICB8fCBmYXVsdENvZGVOYW1lLnN0YXJ0c1dpdGgoIlZlcnNpb25NaXNtYXRjaC4iKQotICAgICAgICB8fCBmYXVsdENvZGVOYW1lLnN0YXJ0c1dpdGgoIkNsaWVudC4iKQotICAgICAgICB8fCBmYXVsdENvZGVOYW1lLnN0YXJ0c1dpdGgoIlNlcnZlci4iKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMwNS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMDUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU5YjJhYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMwNS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgamF2YS5uZXQuSHR0cFVSTENvbm5lY3Rpb247Ci1pbXBvcnQgY29tLmlibS5pY3UudXRpbC5TdHJpbmdUb2tlbml6ZXI7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi0KLS8qKgotICAgKiBCUDEzMDUuCi0gICAqIEl0IGlzIGluIGFuIEhUVFAgNTAwIG1lc3NhZ2Ugd2l0aCAiU2VydmVyIiBFcnJvciBjb2RlLgotICAgKi8KLXB1YmxpYyBjbGFzcyBCUDEzMDUgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEzMDUoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBEb2N1bWVudCBkb2M7Ci0gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBvbmUgd2F5IHJlc3BvbnNlCi0gICAgLy8gb3IgbWVzc2FnZSBpcyBtZXB0eSBvciBpbnZhbGlkCi0gICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KQotICAgICAgfHwgKGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBsb29rIGZvciA8c29hcDpGYXVsdD4gZWxlbWVudDoKLSAgICAgIE5vZGVMaXN0IGZhdWx0TGlzdCA9Ci0gICAgICAgIGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwKLSAgICAgICAgICBYTUxVdGlscy5TT0FQX0VMRU1fRkFVTFQpOwotICAgICAgaWYgKChmYXVsdExpc3QgPT0gbnVsbCkgfHwgKGZhdWx0TGlzdC5nZXRMZW5ndGgoKSA9PSAwKSkKLSAgICAgIHsKLSAgICAgICAgLy8gUmVzcG9uc2UgZG9lcyBub3QgY29udGFpbiBhIHNvYXA6ZmF1bHQKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gd2UgaGF2ZSBhIHNvYXA6RmF1bHQuIENoZWNrIHRoYXQgaXQgaXMgY29udGFpbmVkIGluIGEgSFRUUCA1MDAgbWVzc2FnZQotICAgICAgICAvLyBHVCA6IGJhc2UgSFRUUCBIZWFkZXIgcGFyc2luZyBvbiBCUDEwMDEgLSB0aGlzIHNob3VsZCBiZSBmYWN0b3JlZCB0byBhIAotICAgICAgICAvLyBnZW5lcmFsLXB1cnBvc2UgSFRUUCBtZXNzYWdlIHBhcnNpbmcgbWV0aG9kIG9yIG1ldGhvZHMgKHJlcXVlc3QgJiByZXNwb25zZSkKLSAgICAgICAgU3RyaW5nIGh0dHBIZWFkZXIgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0SFRUUEhlYWRlcnMoKTsKLSAgICAgICAgLy9SZXNwb25zZS1MaW5lICAgPSBIVFRQLVZlcnNpb24gUmVzcG9uc2VDb2RlIFJlc3BvbnNlTXNnIFNQIENSTEYKLSAgICAgICAgVmVjdG9yIHJlc3BvbnNlTGluZSA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgU3RyaW5nIHN0YXJ0TGluZSA9IG51bGw7Ci0gICAgICAgIC8vU3RyaW5nIGh0dHBWZXJzaW9uID0gbnVsbDsKLSAgICAgICAgLy9TdHJpbmcgcmVzcG9uc2VDb2RlID0gbnVsbDsKLSAgICAgICAgU3RyaW5nIHN0YXR1c0NvZGUgPSBudWxsOwotICAgICAgICBTdHJpbmdUb2tlbml6ZXIgaHR0cE1lc3NhZ2VUb2tlbml6ZXIgPQotICAgICAgICAgIG5ldyBTdHJpbmdUb2tlbml6ZXIoaHR0cEhlYWRlciwgIlxuXHJcZiIpOwotCi0gICAgICAgIGlmIChodHRwTWVzc2FnZVRva2VuaXplci5oYXNNb3JlVG9rZW5zKCkpCi0gICAgICAgICAgc3RhcnRMaW5lID0gaHR0cE1lc3NhZ2VUb2tlbml6ZXIubmV4dFRva2VuKCk7Ci0KLSAgICAgICAgaWYgKHN0YXJ0TGluZS5zdGFydHNXaXRoKCJIVFRQIikpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3RhcnRMaW5lVG9rZW5pemVyID0KLSAgICAgICAgICAgIG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RhcnRMaW5lLCAiXHUwMDIwIik7Ci0KLSAgICAgICAgICB3aGlsZSAoc3RhcnRMaW5lVG9rZW5pemVyLmhhc01vcmVUb2tlbnMoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXNwb25zZUxpbmUuYWRkKHN0YXJ0TGluZVRva2VuaXplci5uZXh0VG9rZW4oKSk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgLy9odHRwVmVyc2lvbiA9IChTdHJpbmcpIHJlc3BvbnNlTGluZS5nZXQoMCk7Ci0KLSAgICAgICAgICAvLyBQQjogQ2hlY2sgZm9yIDUwMCBzdGF0dXMgY29kZSB3aGljaCBzaG91bGQgYmUgdGhlIHNlY29uZCB0b2tlbiBpbiB0aGUgc3RyaW5nCi0gICAgICAgICAgc3RhdHVzQ29kZSA9IChTdHJpbmcpIHJlc3BvbnNlTGluZS5nZXQoMSk7Ci0KLSAgICAgICAgICAvL3Jlc3BvbnNlQ29kZSA9IChTdHJpbmcpIHJlc3BvbnNlTGluZS5nZXQoMSk7Ci0gICAgICAgICAgLy9zdGF0dXNDb2RlID0gKFN0cmluZykgcmVzcG9uc2VMaW5lLmdldCgyKTsKLSAgICAgICAgfQotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIC8vIFBCOiBKdXN0IGNoZWNrIGZvciA1MDAgc3RhdHVzIGNvZGUKLSAgICAgICAgICBpZiAoIXN0YXR1c0NvZGUKLSAgICAgICAgICAgIC5lcXVhbHMoU3RyaW5nLnZhbHVlT2YoSHR0cFVSTENvbm5lY3Rpb24uSFRUUF9JTlRFUk5BTF9FUlJPUikpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vaWYgKCFyZXNwb25zZUNvZGUuZXF1YWxzSWdub3JlQ2FzZSgiT0siKSB8fAotICAgICAgICAgICAgLy8JKCFzdGF0dXNDb2RlLmVxdWFsc0lnbm9yZUNhc2UoIlNlcnZlckVycm9yIikpKSB7ICAgICAJCQkKLSAgICAgICAgICAgIC8vIEFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKGh0dHBIZWFkZXIpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMwNi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMDYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNlNDBlZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMwNi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAgICogQlAxMzA2LgotICAgKiBUaGUgc29hcDpGYXVsdCBlbGVtZW50IGRvZXMgbm90IGhhdmUgY2hpbGRyZW4gb3RoZXIgdGhhbiBzb2FwOmZhdWx0Y29kZSwgc29hcDpmYXVsdHN0cmluZywgc29hcDpmYXVsdGFjdG9yIG9yIHNvYXA6ZGV0YWlsLgotICAgKi8KLXB1YmxpYyBjbGFzcyBCUDEzMDYgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEzMDYoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBEb2N1bWVudCBkb2M7Ci0gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBvbmUgd2F5IHJlc3BvbnNlCi0gICAgLy8gb3IgbWVzc2FnZSBpcyBtZXB0eSBvciBpbnZhbGlkCi0gICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KQotIAkgICAgfHwgKGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBsb29rIGZvciA8c29hcDpGYXVsdD4gZWxlbWVudDoKLSAgICAgIE5vZGVMaXN0IGZhdWx0TGlzdCA9Ci0gICAgICAgIGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwKLSAgICAgICAgICBYTUxVdGlscy5TT0FQX0VMRU1fRkFVTFQpOwotICAgICAgaWYgKChmYXVsdExpc3QgPT0gbnVsbCkgfHwgKGZhdWx0TGlzdC5nZXRMZW5ndGgoKSA9PSAwKSkKLSAgICAgIHsKLSAgICAgICAgLy8gUmVzcG9uc2UgZG9lcyBub3QgY29udGFpbiBhIHNvYXA6ZmF1bHQKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gY2hlY2sgdGhhdCBubyBzb2FwOmZhdWx0IGNvbnRhaW5zIG9ubHkgZmF1bHRjb2RlLCBmYXVsdHN0cmluZywgZmF1bHRhY3RvciwgZGV0YWlsLgotICAgICAgICAvLyBJZiBpdCBkb2VzLCBmdXJ0aGVyIGNoZWNrIHRoYXQgaXQgaXMgdW5xdWFsaWZpZWQuCi0gICAgICAgIC8vIEZvciBlYWNoIDxzb2FwOkZhdWx0PgotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgZmF1bHRMaXN0LmdldExlbmd0aCgpOyBuKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgZm9yIChOb2RlIGNoaWxkID0gZmF1bHRMaXN0Lml0ZW0obikuZ2V0Rmlyc3RDaGlsZCgpOwotICAgICAgICAgICAgICBjaGlsZCAhPSBudWxsOwotICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLmdldE5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmICgoY2hpbGQuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgICAgICAgICAmJiAhKGNoaWxkCi0gICAgICAgICAgICAgICAgICAuZ2V0TG9jYWxOYW1lKCkKLSAgICAgICAgICAgICAgICAgIC5lcXVhbHNJZ25vcmVDYXNlKFhNTFV0aWxzLlNPQVBfRUxFTV9GQVVMVF9DT0RFKQotICAgICAgICAgICAgICAgICAgfHwgY2hpbGQuZ2V0TG9jYWxOYW1lKCkuZXF1YWxzSWdub3JlQ2FzZSgKLSAgICAgICAgICAgICAgICAgICAgWE1MVXRpbHMuU09BUF9FTEVNX0ZBVUxUX1NUUklORykKLSAgICAgICAgICAgICAgICAgIHx8IGNoaWxkLmdldExvY2FsTmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoCi0gICAgICAgICAgICAgICAgICAgIFhNTFV0aWxzLlNPQVBfRUxFTV9GQVVMVF9BQ1RPUikKLSAgICAgICAgICAgICAgICAgIHx8IGNoaWxkLmdldExvY2FsTmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoCi0gICAgICAgICAgICAgICAgICAgIFhNTFV0aWxzLlNPQVBfRUxFTV9GQVVMVF9ERVRBSUwpKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFBCOiBUaGlzIGlzIGNoZWNrZWQgaW4gMTMxNiBub3cKLSAgICAgICAgICAgICAgICAvL3x8IChjaGlsZC5nZXROYW1lc3BhY2VVUkkoKSAhPSBudWxsKSkgewotICAgICAgICAgICAgICAgIC8vIEFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMzA3LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMwNy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjZkZDYxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMzA3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi0KLS8qKgotICogQlAxMzA3LgotICogVGhlIGVsZW1lbnRzIG9mIHRoZSBtZXNzYWdlIHRoYXQgYXJlIG5hbWVzcGFjZWQgCi0gKiAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iIGRvIG5vdCBoYXZlIGEgc29hcDplbmNvZGluZ1N0eWxlIGF0dHJpYnV0ZS4KLSAqLwotcHVibGljIGNsYXNzIEJQMTMwNyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTMwNyhCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIERvY3VtZW50IGRvYzsKLSAgICAvLyBDaGVjayBpZiB0aGlzIGlzIG9uZSB3YXkgcmVzcG9uc2UKLSAgICAvLyBvciBtZXNzYWdlIGlzIG1lcHR5IG9yIGludmFsaWQKLSAgICBpZiAodGhpcy52YWxpZGF0b3IuaXNPbmVXYXlSZXNwb25zZShlbnRyeUNvbnRleHQpCi0gICAgICB8fCAoZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCkpID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIGxvb2sgZm9yIDxzb2FwOnh4eD4gZWxlbWVudHM6Ci0gICAgICBOb2RlTGlzdCBzb2FwTGlzdCA9Ci0gICAgICAgIGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwgIioiKTsKLSAgICAgIGlmICgoc29hcExpc3QgPT0gbnVsbCkgfHwgKHNvYXBMaXN0LmdldExlbmd0aCgpID09IDApKQotICAgICAgewotICAgICAgICAvLyBSZXNwb25zZSBkb2VzIG5vdCBjb250YWluIGFueSBzb2FwIGVudmVsb3BlIGVsZW1lbnRzCi0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIGNoZWNrIHRoYXQgbm8gPHNvYXA6eHh4PiBlbGVtZW50cyBjb250YWlucyBhIHNvYXA6ZW5jb2RpbmdTdHlsZSBhdHRyaWJ1dGUKLSAgICAgICAgLy8gRm9yIGVhY2ggPHNvYXA6eHh4PgotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgc29hcExpc3QuZ2V0TGVuZ3RoKCk7IG4rKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBFbGVtZW50IG5leHRFbGVtID0gKEVsZW1lbnQpIHNvYXBMaXN0Lml0ZW0obik7Ci0gICAgICAgICAgICBpZiAobmV4dEVsZW0KLSAgICAgICAgICAgICAgLmdldEF0dHJpYnV0ZU5vZGVOUyhXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsICJlbmNvZGluZ1N0eWxlIikKLSAgICAgICAgICAgICAgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy8gQXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMDguamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMzA4LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYzBhNmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMDguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIEJQMTMwOC4KLSAqIFRoZSBjaGlsZHJlbiBlbGVtZW50cyBvZiBzb2FwOkJvZHkgZG8gbm90IGhhdmUgYSBzb2FwOmVuY29kaW5nU3R5bGUgYXR0cmlidXRlLgotICovCi1wdWJsaWMgY2xhc3MgQlAxMzA4IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMzA4KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIEdldHRpbmcgYSBtZXNzYWdlIGRvY3VtZW50Ci0gICAgICBEb2N1bWVudCBkb2MgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKTsKLSAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGlzIGVtcHR5IG9yIGludmFsaWQsIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmIChkb2MgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gbG9vayBmb3Igc29hcDpCb2R5IGVsZW1lbnRzOgotICAgICAgTm9kZUxpc3Qgc29hcEJvZHlMaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgIEVMRU1fU09BUF9CT0RZLmdldE5hbWVzcGFjZVVSSSgpLCBFTEVNX1NPQVBfQk9EWS5nZXRMb2NhbFBhcnQoKSk7Ci0KLSAgICAgIC8vIFRoZSBtZXNzYWdlIGRvZXMgbm90IGNvbnRhaW4gYW55IHNvYXA6Qm9keSwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKChzb2FwQm9keUxpc3QgPT0gbnVsbCkgfHwgKHNvYXBCb2R5TGlzdC5nZXRMZW5ndGgoKSA9PSAwKSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gY2hlY2sgdGhhdCBubyBzb2FwOkJvZHkgY2hpbGQgZWxlbWVudHMgY29udGFpbiBhIHNvYXA6ZW5jb2RpbmdTdHlsZSBhdHRyaWJ1dGUKLSAgICAgIC8vIEdldHRpbmcgdGhlIGZpcnN0IHNvYXA6Qm9keSBjaGlsZCBlbGVtZW50Ci0gICAgICBFbGVtZW50IGNoaWxkID0KLSAgICAgICAgWE1MVXRpbHMuZ2V0Rmlyc3RDaGlsZCgoRWxlbWVudCkgc29hcEJvZHlMaXN0Lml0ZW0oMCkpOwotICAgICAgd2hpbGUgKGNoaWxkICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGlmIChjaGlsZC5nZXRBdHRyaWJ1dGVOb2RlTlMoCi0gICAgICAgICAgRUxFTV9TT0FQX0JPRFkuZ2V0TmFtZXNwYWNlVVJJKCksICJlbmNvZGluZ1N0eWxlIikgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgY2hpbGQgZWxlbWVudCBuYW1lIGlzIFwiIiArCi0gICAgICAgICAgICBjaGlsZC5nZXROb2RlTmFtZSgpICsgIlwiLiIpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEdldHRpbmcgdGhlIG5leHQgc29hcDpCb2R5IGNoaWxkIGVsZW1lbnQKLSAgICAgICAgY2hpbGQgPSBYTUxVdGlscy5nZXROZXh0U2libGluZyhjaGlsZCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGFuYWUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gYWZlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICBhZmUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMDkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxMzA5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiM2I2YTQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMDkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLQotLyoqCi0gKiBCUDEzMDkuCi0gKiBUaGUgc29hcDpFbnZlbG9wZSBkb2VzIG5vdCBoYXZlIGRpcmVjdCBjaGlsZHJlbiBhZnRlciB0aGUgc29hcDpCb2R5IGVsZW1lbnQgCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDEzMDkgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEzMDkoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBEb2N1bWVudCBkb2M7Ci0gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBvbmUgd2F5IHJlc3BvbnNlCi0gICAgLy8gb3IgbWVzc2FnZSBpcyBtZXB0eSBvciBpbnZhbGlkCi0gICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KQotICAgICAgfHwgKGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBsb29rIGZvciA8c29hcDpFbnZlbG9wZT4gZWxlbWVudHM6Ci0gICAgICAvLyAoTm90ZTogc2luY2UgdGhpcyBpcyBhIFNvYXAgbWVzc2FnZSB3ZSBleHBlY3QgZXhhY3RseSBvbmUgc29hcCBlbnZlbG9wZSwgYnV0IHdlIGRvIG5vdCBhc3N1bWUgaXQpLgotICAgICAgTm9kZUxpc3Qgc29hcEVudkxpc3QgPQotICAgICAgICBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKLSAgICAgICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsCi0gICAgICAgICAgWE1MVXRpbHMuU09BUF9FTEVNX0VOVkVMT1BFKTsKLSAgICAgIGlmICgoc29hcEVudkxpc3QgPT0gbnVsbCkgfHwgKHNvYXBFbnZMaXN0LmdldExlbmd0aCgpID09IDApKQotICAgICAgewotICAgICAgICAvLyBSZXNwb25zZSBkb2VzIG5vdCBjb250YWluIGFueSBzb2FwIEVudmVsb3BlIGVsZW1lbnQocykKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gY2hlY2sgdGhhdCBpZiBhIDxzb2FwOkJvZHk+IGV4aXN0cyBpbiBhIDxzb2FwOkVudmVsb3BlPiwgdGhhdCBpdHMgdGhlIGxhc3QgaW4gdGhlIGVudmVsb3BlICAgICAgICAJCSAgICAgIAkJCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgLy8gRm9yIGVhY2ggPHNvYXA6RW52ZWxvcGU+Ci0gICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBzb2FwRW52TGlzdC5nZXRMZW5ndGgoKTsgbisrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIEdldCB0aGUgbGlzdCBvZiBhbGwgZWxlbWVudHMgaW4gdGhlIEVudmVsb3BlICAgICAgIAkJCQkKLSAgICAgICAgICAgIEVsZW1lbnQgc29hcEVudiA9IChFbGVtZW50KSBzb2FwRW52TGlzdC5pdGVtKG4pOwotICAgICAgICAgICAgTm9kZUxpc3QgZW52Q2hpbGRMaXN0ID0gc29hcEVudi5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICAgICAgICBWZWN0b3IgZW52Q2hpbGRFbGVtTGlzdCA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICAgIGZvciAoaW50IHYgPSAwOyB2IDwgZW52Q2hpbGRMaXN0LmdldExlbmd0aCgpOyB2KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIE5vZGUgbmV4dE5vZGUgPSBlbnZDaGlsZExpc3QuaXRlbSh2KTsKLSAgICAgICAgICAgICAgaWYgKG5leHROb2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlbnZDaGlsZEVsZW1MaXN0LmFkZEVsZW1lbnQoKEVsZW1lbnQpIG5leHROb2RlKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gU2VhcmNoIHRoZSBsaXN0IGZvciA8c29hcDpCb2R5PgotICAgICAgICAgICAgZm9yIChpbnQgbSA9IDA7IG0gPCBlbnZDaGlsZEVsZW1MaXN0LnNpemUoKTsgbSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBFbGVtZW50IGVudkNoaWxkRWxlbSA9IChFbGVtZW50KSBlbnZDaGlsZEVsZW1MaXN0LmVsZW1lbnRBdChtKTsKLSAgICAgICAgICAgICAgaWYgKGVudkNoaWxkRWxlbQotICAgICAgICAgICAgICAgIC5nZXROYW1lc3BhY2VVUkkoKQotICAgICAgICAgICAgICAgIC5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQKQotICAgICAgICAgICAgICAgICYmIGVudkNoaWxkRWxlbS5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoWE1MVXRpbHMuU09BUF9FTEVNX0JPRFkpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gZm91bmQgYSA8c29hcDpCb2R5PiBzbyBjaGVjayBpdHMgdGhlIGxhc3QgaW4gdGhlIGxpc3Qgb2YgY2hpbGQgZWxlbWVudHMgb2YgdGhlIEVudmVsb3BlCi0gICAgICAgICAgICAgICAgaWYgKGVudkNoaWxkRWxlbSAhPSBlbnZDaGlsZEVsZW1MaXN0Lmxhc3RFbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMxNi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMTYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg0MTgyZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMxNi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIEJQMTMxNi4KLSAqIFRoZSBzb2FwOkZhdWx0IGVsZW1lbnQgY2hpbGRyZW4gKHNvYXA6ZmF1bHRjb2RlLCBzb2FwOmZhdWx0c3RyaW5nLCBzb2FwOmZhdWx0YWN0b3Igb3Igc29hcDpkZXRhaWwpIGFyZSB1bnF1YWxpZmllZC4KLSAqLwotcHVibGljIGNsYXNzIEJQMTMxNiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTMxNihCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIERvY3VtZW50IGRvYzsKLSAgICAvLyBDaGVjayBpZiB0aGlzIGlzIG9uZSB3YXkgcmVzcG9uc2UKLSAgICAvLyBvciBtZXNzYWdlIGlzIG1lcHR5IG9yIGludmFsaWQKLSAgICBpZiAodGhpcy52YWxpZGF0b3IuaXNPbmVXYXlSZXNwb25zZShlbnRyeUNvbnRleHQpCi0gICAgICB8fCAoZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCkpID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIGxvb2sgZm9yIDxzb2FwOkZhdWx0PiBlbGVtZW50OgotICAgICAgTm9kZUxpc3QgZmF1bHRMaXN0ID0KLSAgICAgICAgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQLAotICAgICAgICAgIFhNTFV0aWxzLlNPQVBfRUxFTV9GQVVMVCk7Ci0gICAgICBpZiAoKGZhdWx0TGlzdCA9PSBudWxsKSB8fCAoZmF1bHRMaXN0LmdldExlbmd0aCgpID09IDApKQotICAgICAgewotICAgICAgICAvLyBSZXNwb25zZSBkb2VzIG5vdCBjb250YWluIGEgc29hcDpmYXVsdAotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBjaGVjayB0aGF0IG5vIHNvYXA6ZmF1bHQgY29udGFpbnMgb25seSBmYXVsdGNvZGUsIGZhdWx0c3RyaW5nLCBmYXVsdGFjdG9yLCBkZXRhaWwuCi0gICAgICAgIC8vIElmIGl0IGRvZXMsIGZ1cnRoZXIgY2hlY2sgdGhhdCBpdCBpcyB1bnF1YWxpZmllZC4KLSAgICAgICAgLy8gRm9yIGVhY2ggPHNvYXA6RmF1bHQ+Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBmYXVsdExpc3QuZ2V0TGVuZ3RoKCk7IG4rKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUgY2hpbGQgPSBmYXVsdExpc3QuaXRlbShuKS5nZXRGaXJzdENoaWxkKCk7Ci0gICAgICAgICAgICAgIGNoaWxkICE9IG51bGw7Ci0gICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQuZ2V0TmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKChjaGlsZC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICAgICAgICAgICYmIChjaGlsZAotICAgICAgICAgICAgICAgICAgLmdldExvY2FsTmFtZSgpCi0gICAgICAgICAgICAgICAgICAuZXF1YWxzSWdub3JlQ2FzZShYTUxVdGlscy5TT0FQX0VMRU1fRkFVTFRfQ09ERSkKLSAgICAgICAgICAgICAgICAgIHx8IGNoaWxkLmdldExvY2FsTmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoCi0gICAgICAgICAgICAgICAgICAgIFhNTFV0aWxzLlNPQVBfRUxFTV9GQVVMVF9TVFJJTkcpCi0gICAgICAgICAgICAgICAgICB8fCBjaGlsZC5nZXRMb2NhbE5hbWUoKS5lcXVhbHNJZ25vcmVDYXNlKAotICAgICAgICAgICAgICAgICAgICBYTUxVdGlscy5TT0FQX0VMRU1fRkFVTFRfQUNUT1IpCi0gICAgICAgICAgICAgICAgICB8fCBjaGlsZC5nZXRMb2NhbE5hbWUoKS5lcXVhbHNJZ25vcmVDYXNlKAotICAgICAgICAgICAgICAgICAgICBYTUxVdGlscy5TT0FQX0VMRU1fRkFVTFRfREVUQUlMKSkKLSAgICAgICAgICAgICAgICAmJiAoY2hpbGQuZ2V0TmFtZXNwYWNlVVJJKCkgIT0gbnVsbCkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBBc3NlcnRpb24gZmFpbGVkCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMxOC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDEzMTguamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE4MDgwMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTMxOC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuT3BlcmF0aW9uU2lnbmF0dXJlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlR5cGVzUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwuV1NETFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi0KLS8qKgotCSAqIEJQMTMxOAotCSAqIAotCSAqIFRoZSBncmFuZGNoaWxkcmVuIGVsZW1lbnRzIG9mIHNvYXA6Qm9keSBkbyBub3QgaGF2ZSBhIHNvYXA6ZW5jb2RpbmdTdHlsZSBhdHRyaWJ1dGUuCi0JICovCi1wdWJsaWMgY2xhc3MgQlAxMzE4IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMzE4KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIC8vIFBhcnNlIG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IHJlc3BvbnNlRG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCk7Ci0gICAgICBEb2N1bWVudCByZXF1ZXN0RG9jID0gZW50cnlDb250ZXh0LmdldFJlcXVlc3REb2N1bWVudCgpOwotCi0gICAgICAvLyBtZXNzYWdlcyBhcmUgZW1wdHkgb3IgaW52YWxpZCwgRE9NIG9iamVjdHMgYXJlIG51bGwKLSAgICAgIGlmIChyZXNwb25zZURvYyA9PSBudWxsIHx8IHJlcXVlc3REb2MgPT0gbnVsbCkgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvL2lmIChpc0ZhdWx0KHJlc3BvbnNlRG9jKSkKLSAgICAgIC8vICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBHZXQgU09BUEFjdGlvbgotICAgICAgU3RyaW5nIGhlYWRlcnMgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdCgpLmdldEhUVFBIZWFkZXJzKCk7Ci0gICAgICBTdHJpbmcgYWN0aW9uID0gbnVsbDsKLSAgICAgIGlmIChoZWFkZXJzICE9IG51bGwpCi0gICAgICAgIGFjdGlvbiA9IChTdHJpbmcpIEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyVG9rZW5zKGhlYWRlcnMsICI6IikuZ2V0KCJTT0FQQWN0aW9uIi50b1VwcGVyQ2FzZSgpKTsKLQotICAgICAgLy8gR2V0IHRoZSBiaW5kaW5nIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkICAgICAgICAgICAgICAgIAotICAgICAgQmluZGluZyBiaW5kaW5nID0gdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0QmluZGluZ3MoKVswXTsKLQotICAgICAgLy9DcmVhdGUgdGhlIHR5cGVzIHJlZ2lzdHJ5Ci0gICAgICBUeXBlc1JlZ2lzdHJ5IHJlZ2lzdHJ5ID0KLSAgICAgICAgbmV3IFR5cGVzUmVnaXN0cnkoCi0gICAgICAgICAgdGhpcy52YWxpZGF0b3IuZ2V0V1NETERvY3VtZW50KCkuZ2V0RGVmaW5pdGlvbnMoKSwKLSAgICAgICAgICB2YWxpZGF0b3IpOwotCi0gICAgICAvLyBGaW5kIGFuIG9wZXJhdGlvbiBtYXRjaCAgICAgICAgCi0gICAgICBPcGVyYXRpb25TaWduYXR1cmUuT3BlcmF0aW9uTWF0Y2ggbWF0Y2ggPQotICAgICAgICBPcGVyYXRpb25TaWduYXR1cmUubWF0Y2hPcGVyYXRpb24oCi0gICAgICAgICAgcmVxdWVzdERvYywKLSAgICAgICAgICBhY3Rpb24sCi0gICAgICAgICAgYmluZGluZywKLSAgICAgICAgICByZWdpc3RyeSk7Ci0gICAgICBpZiAobWF0Y2ggPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gR2V0IHRoZSBiaW5kaW5nIG9wZXJhdGlvbiBiYXNlZCBvbiB0aGUgbWF0Y2gKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IG1hdGNoLmdldE9wZXJhdGlvbigpOwotCi0gICAgICAvLyBJZiB0aGlzIGlzIG5vdCBycGMtbGl0ZXJhbCwgdGhlbiByZXR1cm4gbm90QXBwbGljYWJsZSByZXN1bHQKLSAgICAgIGlmICghV1NETFV0aWxzCi0gICAgICAgIC5pc1JwY0xpdGVyYWwobWF0Y2guZ2V0T3BlcmF0aW9uU3R5bGUoKSwgYmluZGluZ09wZXJhdGlvbikpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0gICAgICAvLyBsb29rIGZvciA8c29hcDpCb2R5PiBlbGVtZW50czoKLSAgICAgIE5vZGVMaXN0IHNvYXBCb2R5TGlzdCA9Ci0gICAgICAgIHJlc3BvbnNlRG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQLAotICAgICAgICAgIFhNTFV0aWxzLlNPQVBfRUxFTV9CT0RZKTsKLSAgICAgIGlmICgoc29hcEJvZHlMaXN0ID09IG51bGwpIHx8IChzb2FwQm9keUxpc3QuZ2V0TGVuZ3RoKCkgPT0gMCkpCi0gICAgICAgIC8vIFJlc3BvbnNlIGRvZXMgbm90IGNvbnRhaW4gYW55IHNvYXAgQm9keSBlbGVtZW50cwotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBjaGVjayB0aGF0IG5vIDxzb2FwOkJvZHk+IGNoaWxkIG9yIGdyYW5kY2hpbGQgZWxlbWVudHMgY29udGFpbnMgYSBzb2FwOmVuY29kaW5nU3R5bGUgYXR0cmlidXRlCi0gICAgICAvLyBGb3IgZWFjaCA8c29hcDpCb2R5PgotICAgICAgYm9vbGVhbiBncmFuZENoaWxkRm91bmQgPSBmYWxzZTsKLSAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgc29hcEJvZHlMaXN0LmdldExlbmd0aCgpOyBuKyspCi0gICAgICB7Ci0gICAgICAgIEVsZW1lbnQgbmV4dEJvZHlFbGVtID0gKEVsZW1lbnQpIHNvYXBCb2R5TGlzdC5pdGVtKG4pOwotICAgICAgICAvLyBSRU1PVkU6IFRoaXMgd2lsbCBnZXQgYWxsIG5vZGVzIChjaGlsZCwgZ3JhbmRjaGlsZHJlbiwgZXRjLikKLSAgICAgICAgLy9Ob2RlTGlzdCBjaGlsZExpc3QgPSBuZXh0Qm9keUVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKLSAgICAgICAgTm9kZUxpc3QgY2hpbGRMaXN0ID0gbmV4dEJvZHlFbGVtLmdldENoaWxkTm9kZXMoKTsKLSAgICAgICAgaWYgKGNoaWxkTGlzdCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gY2hlY2sgYWxsIGNoaWxkIGVsZW1lbnRzCi0gICAgICAgICAgZm9yIChpbnQgbSA9IDA7IG0gPCBjaGlsZExpc3QuZ2V0TGVuZ3RoKCk7IG0rKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY2hpbGRMaXN0Lml0ZW0obSkuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgRWxlbWVudCBuZXh0Q2hpbGRFbGVtID0gKEVsZW1lbnQpIGNoaWxkTGlzdC5pdGVtKG0pOwotICAgICAgICAgICAgICAvLyBjaGVjayBjaGlsZHJlbiBvZiB0aGlzIGNoaWxkCi0gICAgICAgICAgICAgIC8vIFJFTU9WRTogVGhpcyB3aWxsIGdldCBhbGwgbm9kZXMgKGNoaWxkLCBncmFuZGNoaWxkcmVuLCBldGMuKQotICAgICAgICAgICAgICBOb2RlTGlzdCBncmFuZENoaWxkTGlzdCA9IG5leHRDaGlsZEVsZW0uZ2V0Q2hpbGROb2RlcygpOwotICAgICAgICAgICAgICBpZiAoZ3JhbmRDaGlsZExpc3QgIT0gbnVsbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHAgPSAwOyBwIDwgZ3JhbmRDaGlsZExpc3QuZ2V0TGVuZ3RoKCk7IHArKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpZiAoZ3JhbmRDaGlsZExpc3QuaXRlbShwKS5nZXROb2RlVHlwZSgpCi0gICAgICAgICAgICAgICAgICAgID09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgCWdyYW5kQ2hpbGRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIEVsZW1lbnQgbmV4dEdyYW5kQ2hpbGRFbGVtID0KLSAgICAgICAgICAgICAgICAgICAgICAoRWxlbWVudCkgZ3JhbmRDaGlsZExpc3QuaXRlbShwKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRHcmFuZENoaWxkRWxlbQotICAgICAgICAgICAgICAgICAgICAgIC5nZXRBdHRyaWJ1dGVOb2RlTlMoCi0gICAgICAgICAgICAgICAgICAgICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RpbmdTdHlsZSIpCi0gICAgICAgICAgICAgICAgICAgICAgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIC8vIEFzc2VydGlvbiBmYWlsZWQgKEFERCBoaWdobGlnaHQgdGhlIGNoaWxkIGhlcmUgPykKLSAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpZiAoIWdyYW5kQ2hpbGRGb3VuZCkKLSAgICAgIHsKLSAgICAgIAl0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDE2MDAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxNjAwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMTRjMWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDE2MDAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLQotCi0vKioKLSAqIEJQMTYwMAotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBlbnZlbG9wZTwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgZW52ZWxvcGUgY29uZm9ybXMgdG8gdGhlIHN0cnVjdHVyZSBzcGVjaWZpZWQgaW4gU09BUCAxLjEgU2VjdGlvbiA0LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDE2MDAgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDE2MDAoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0dGluZyBhIG1lc3NhZ2UgZG9jdW1lbnQKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBlbXB0eSBvciBpbnZhbGlkLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgaWYgKGRvYyA9PSBudWxsKQotICAgICAgewotICAgICAgCWlmICh0aGlzLnZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkpCi0gICAgICAJCXRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICAgIGVsc2UgCi0gICAgICAgIAl0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGxvZyBtZXNzYWdlIGlzIGVtcHR5IG9yIGludmFsaWQuIik7Ci0gICAgICB9Ci0gICAgICAvLyBTT0FQIDEuMSBzcGVjaWZpY2F0aW9ucywgU2VjdGlvbiA0LgotICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9OT1RFLVNPQVAtMjAwMDA1MDgvI19Ub2M0NzgzODM0OTQKLQotICAgICAgLy8gVGhlIG5hbWVzcGFjZSBpZGVudGlmaWVyIGZvciB0aGUgZWxlbWVudHMgYW5kIGF0dHJpYnV0ZXMgZGVmaW5lZAotICAgICAgLy8gaW4gdGhpcyBzZWN0aW9uIGlzICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyIuCi0KLSAgICAgIC8vICBvIFRoZSBFbnZlbG9wZSBpcyB0aGUgdG9wIGVsZW1lbnQgb2YgdGhlIFhNTCBkb2N1bWVudCByZXByZXNlbnRpbmcgdGhlIG1lc3NhZ2UuCi0KLSAgICAgIC8vIFJ1bGUgMS4gRW52ZWxvcGUKLSAgICAgIC8vICBvIFRoZSBlbGVtZW50IG5hbWUgaXMgIkVudmVsb3BlIi4KLSAgICAgIC8vICBvIFRoZSBlbGVtZW50IE1VU1QgYmUgcHJlc2VudCBpbiBhIFNPQVAgbWVzc2FnZQotICAgICAgLy8gIG8gVGhlIGVsZW1lbnQgTUFZIGNvbnRhaW4gbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KLSAgICAgIC8vICAgIElmIHByZXNlbnQsIHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGVzIE1VU1QgYmUgbmFtZXNwYWNlLXF1YWxpZmllZC4gU2ltaWxhcmx5LAotICAgICAgLy8gICAgdGhlIGVsZW1lbnQgTUFZIGNvbnRhaW4gYWRkaXRpb25hbCBzdWIgZWxlbWVudHMuIElmIHByZXNlbnQgdGhlc2UgZWxlbWVudHMKLSAgICAgIC8vICAgIE1VU1QgYmUgbmFtZXNwYWNlLXF1YWxpZmllZCBhbmQgTVVTVCBmb2xsb3cgdGhlIFNPQVAgQm9keSBlbGVtZW50LgotCi0gICAgICAvLyBHZXR0aW5nIHRoZSB0b3AgZWxlbWVudAotICAgICAgRWxlbWVudCBlbGVtZW50ID0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpOwotCi0gICAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSB0b3AgZWxlbWVudCBzaG91bGQgYmUgc29hcDpFbnZlbG9wZQotICAgICAgLy8gSWYgbm90LCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgaWYgKCFlbGVtZW50LmdldExvY2FsTmFtZSgpLmVxdWFscyhYTUxVdGlscy5TT0FQX0VMRU1fRU5WRUxPUEUpCi0gICAgICAgIHx8ICFpc1NPQVBOYW1lc3BhY2UoZWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgdG9wIGVsZW1lbnQgaXMgbm90IHNvYXA6RW52ZWxvcGUiKTsKLQotICAgICAgLy8gQ29sbGVjdGluZyBhbGwgdGhlIG5hbWVzcGFjZSBkZWNsYXJhdGlvbnMKLSAgICAgIENvbGxlY3Rpb24gZW52ZWxvcGVOYW1lc3BhY2VzID0gY29sbGVjdE5hbWVzcGFjZXMoZWxlbWVudC5nZXRBdHRyaWJ1dGVzKCkpOwotICAgICAgZW52ZWxvcGVOYW1lc3BhY2VzLmFkZChXU0lDb25zdGFudHMuTlNfVVJJX1hNTE5TKTsKLQotICAgICAgLy8gR2V0dGluZyBhbiBhdHRyaWJ1dGUgdGhhdCBpcyBub3QgaW4gYW55IG9mIHRoZSBuYW1lc3BhY2VzCi0gICAgICBBdHRyIG5vdFZhbGlkQXR0ciA9IGdldE5vdFZhbGlkQXR0cigKLSAgICAgICAgZWxlbWVudC5nZXRBdHRyaWJ1dGVzKCksCi0gICAgICAgIGVudmVsb3BlTmFtZXNwYWNlcyk7Ci0KLSAgICAgIC8vIElmIGZvdW5kIG9uZSwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgIGlmIChub3RWYWxpZEF0dHIgIT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBhdHRyaWJ1dGUgIgotICAgICAgICAgICsgbm90VmFsaWRBdHRyLmdldE5vZGVOYW1lKCkgKyAiIGlzIG5vdCBuYW1lc3BhY2UtcXVhbGlmaWVkIik7Ci0KLQotICAgICAgLy8gUnVsZSAyLiBIZWFkZXIgCi0gICAgICAvLyAgbyBUaGUgZWxlbWVudCBuYW1lIGlzICJIZWFkZXIiLgotICAgICAgLy8gIG8gVGhlIGVsZW1lbnQgTUFZIGJlIHByZXNlbnQgaW4gYSBTT0FQIG1lc3NhZ2UuIElmIHByZXNlbnQsIHRoZSBlbGVtZW50Ci0gICAgICAvLyAgICBNVVNUIGJlIHRoZSBmaXJzdCBpbW1lZGlhdGUgY2hpbGQgZWxlbWVudCBvZiBhIFNPQVAgRW52ZWxvcGUgZWxlbWVudC4KLSAgICAgIC8vICBvIFRoZSBlbGVtZW50IE1BWSBjb250YWluIGEgc2V0IG9mIGhlYWRlciBlbnRyaWVzIGVhY2ggYmVpbmcgYW4gaW1tZWRpYXRlCi0gICAgICAvLyAgICBjaGlsZCBlbGVtZW50IG9mIHRoZSBTT0FQIEhlYWRlciBlbGVtZW50LiBBbGwgaW1tZWRpYXRlIGNoaWxkIGVsZW1lbnRzCi0gICAgICAvLyAgICBvZiB0aGUgU09BUCBIZWFkZXIgZWxlbWVudCBNVVNUIGJlIG5hbWVzcGFjZS1xdWFsaWZpZWQuCi0KLSAgICAgIC8vIEdldHRpbmcgdGhlIGZpcnN0IHN1YiBlbGVtZW50IG9mIHRoZSBlbnZlbG9wZQotICAgICAgZWxlbWVudCA9IFhNTFV0aWxzLmdldEZpcnN0Q2hpbGQoZWxlbWVudCk7Ci0gICAgICBDb2xsZWN0aW9uIGhlYWRlck5hbWVzcGFjZXMgPSBjb2xsZWN0TmFtZXNwYWNlcyhlbGVtZW50LmdldEF0dHJpYnV0ZXMoKSk7Ci0KLSAgICAgIC8vIElmIHRoZSBjaGlsZCBpcyBzb2FwOkhlYWRlcgotICAgICAgaWYgKGVsZW1lbnQgIT0gbnVsbAotICAgICAgICAmJiBlbGVtZW50LmdldExvY2FsTmFtZSgpLmVxdWFscyhYTUxVdGlscy5TT0FQX0VMRU1fSEVBREVSKQotICAgICAgICAmJiBpc1NPQVBOYW1lc3BhY2UoZWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICB7Ci0KLSAgICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIEhlYWRlciBlbnRyaWVzCi0gICAgICAgIEVsZW1lbnQgaGVhZGVyRW50cnkgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKGVsZW1lbnQpOwotICAgICAgICB3aGlsZSAoaGVhZGVyRW50cnkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIC8vIENvbGxlY3RpbmcgYWxsIHRoZSBuYW1lc3BhY2VzIGZvciB0aGUgY3VycmVudCBlbnRyeQotICAgICAgICAgIENvbGxlY3Rpb24gaGVhZGVyRW50cnlOYW1lc3BhY2VzID0gY29sbGVjdE5hbWVzcGFjZXMoCi0gICAgICAgICAgICBoZWFkZXJFbnRyeS5nZXRBdHRyaWJ1dGVzKCkpOwotCi0gICAgICAgICAgLy8gSWYgdGhlIGVudHJ5IGlzIG5vdCBpbiB0aGUgbmFtZXNwYWNlcywgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAoIWVudmVsb3BlTmFtZXNwYWNlcy5jb250YWlucyhoZWFkZXJFbnRyeS5nZXROYW1lc3BhY2VVUkkoKSkKLSAgICAgICAgICAgICYmICFoZWFkZXJOYW1lc3BhY2VzLmNvbnRhaW5zKGhlYWRlckVudHJ5LmdldE5hbWVzcGFjZVVSSSgpKQotICAgICAgICAgICAgJiYgIWhlYWRlckVudHJ5TmFtZXNwYWNlcy5jb250YWlucyhoZWFkZXJFbnRyeS5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGhlYWRlciBlbnRyeSAiCi0gICAgICAgICAgICAgICsgaGVhZGVyRW50cnkuZ2V0Tm9kZU5hbWUoKSArICIgaXMgbm90IG5hbWVzcGFjZS1xdWFsaWZpZWQiKTsKLQotICAgICAgICAgIC8vIEdldHRpbmcgdGhlIG5leHQgSGVhZGVyIGVudHJ5Ci0gICAgICAgICAgaGVhZGVyRW50cnkgPSBYTUxVdGlscy5nZXROZXh0U2libGluZyhoZWFkZXJFbnRyeSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXR0aW5nIHRoZSBuZXh0IHN1YiBlbGVtZW50IG9mIHRoZSBlbnZlbG9wZQotICAgICAgICBlbGVtZW50ID0gWE1MVXRpbHMuZ2V0TmV4dFNpYmxpbmcoZWxlbWVudCk7Ci0gICAgICB9Ci0KLQotICAgICAgLy8gUnVsZSAzLiBCb2R5Ci0gICAgICAvLyAgbyBUaGUgZWxlbWVudCBuYW1lIGlzICJCb2R5Ii4KLSAgICAgIC8vICBvIFRoZSBlbGVtZW50IE1VU1QgYmUgcHJlc2VudCBpbiBhIFNPQVAgbWVzc2FnZSBhbmQgTVVTVCBiZSBhbiBpbW1lZGlhdGUKLSAgICAgIC8vICAgIGNoaWxkIGVsZW1lbnQgb2YgYSBTT0FQIEVudmVsb3BlIGVsZW1lbnQuIEl0IE1VU1QgZGlyZWN0bHkgZm9sbG93IHRoZQotICAgICAgLy8gICAgU09BUCBIZWFkZXIgZWxlbWVudCBpZiBwcmVzZW50LiBPdGhlcndpc2UgaXQgTVVTVCBiZSB0aGUgZmlyc3QgaW1tZWRpYXRlCi0gICAgICAvLyAgICBjaGlsZCBlbGVtZW50IG9mIHRoZSBTT0FQIEVudmVsb3BlIGVsZW1lbnQuCi0gICAgICAvLyAgbyBUaGUgZWxlbWVudCBNQVkgY29udGFpbiBhIHNldCBvZiBib2R5IGVudHJpZXMgZWFjaCBiZWluZyBhbiBpbW1lZGlhdGUKLSAgICAgIC8vICAgIGNoaWxkIGVsZW1lbnQgb2YgdGhlIFNPQVAgQm9keSBlbGVtZW50LiBJbW1lZGlhdGUgY2hpbGQgZWxlbWVudHMgb2YgdGhlCi0gICAgICAvLyAgICBTT0FQIEJvZHkgZWxlbWVudCBNQVkgYmUgbmFtZXNwYWNlLXF1YWxpZmllZC4gU09BUCBkZWZpbmVzIHRoZSBTT0FQIEZhdWx0Ci0gICAgICAvLyAgICBlbGVtZW50LCB3aGljaCBpcyB1c2VkIHRvIGluZGljYXRlIGVycm9yIG1lc3NhZ2VzLgotCi0gICAgICAvLyBpZiB0aGUgU09BUCBCb2R5IGVsZW1lbnQgaXMgbm90IHByZXNlbnRlZCwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgIGlmIChlbGVtZW50ID09IG51bGwKLSAgICAgICAgfHwgIWVsZW1lbnQuZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKFhNTFV0aWxzLlNPQVBfRUxFTV9CT0RZKQotICAgICAgICB8fCAhaXNTT0FQTmFtZXNwYWNlKGVsZW1lbnQuZ2V0TmFtZXNwYWNlVVJJKCkpKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIHNvYXA6Qm9keSBlbGVtZW50IGlzIG5vdCBwcmVzZW50ZWQgIgotICAgICAgICAgICsgIm9yIGZvbGxvd3MgYW4gYWRkaXRpb25hbCBzdWIgZWxlbWVudCBvZiBzb2FwOkVudmVsb3BlIik7Ci0KLSAgICAgIC8vIFByb2Nlc3NpbmcgYWxsIG90aGVyIHN1YiBlbGVtZW50cyBvZiB0aGUgZW52ZWxvcGUKLSAgICAgIGVsZW1lbnQgPSBYTUxVdGlscy5nZXROZXh0U2libGluZyhlbGVtZW50KTsKLSAgICAgIHdoaWxlIChlbGVtZW50ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIENoZWNraW5nIGZvciB0aGUgU09BUCBIZWFkZXIgZWxlbWVudAotICAgICAgICBpZiAoZWxlbWVudC5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoWE1MVXRpbHMuU09BUF9FTEVNX0hFQURFUikKLSAgICAgICAgICAmJiBpc1NPQVBOYW1lc3BhY2UoZWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgIlRoZSBzb2FwOkhlYWRlciBlbGVtZW50IGNhbm5vdCBmb2xsb3cgdGhlIHNvYXA6Qm9keSBlbGVtZW50Iik7Ci0KLSAgICAgICAgLy8gQ29sbGVjdGluZyBhbGwgdGhlIG5hbWVzcGFjZXMgZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQKLSAgICAgICAgQ29sbGVjdGlvbiBlbGVtZW50TmFtZXNwYWNlcyA9IGNvbGxlY3ROYW1lc3BhY2VzKAotICAgICAgICAgIGVsZW1lbnQuZ2V0QXR0cmlidXRlcygpKTsKLQotICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBub3QgaW4gdGhlIG5hbWVzcGFjZXMsIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgIGlmICghZW52ZWxvcGVOYW1lc3BhY2VzLmNvbnRhaW5zKGVsZW1lbnQuZ2V0TmFtZXNwYWNlVVJJKCkpCi0gICAgICAgICAgJiYgIWVsZW1lbnROYW1lc3BhY2VzLmNvbnRhaW5zKGVsZW1lbnQuZ2V0TmFtZXNwYWNlVVJJKCkpKQotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgc3ViIGVudmVsb3BlIGVsZW1lbnQgIgotICAgICAgICAgICAgKyBlbGVtZW50LmdldE5vZGVOYW1lKCkgKyAiIGlzIG5vdCBuYW1lc3BhY2UtcXVhbGlmaWVkIik7Ci0KLSAgICAgICAgLy8gR2V0dGluZyB0aGUgbmV4dCBzdWIgZWxlbWVudCBvZiB0aGUgZW52ZWxvcGUKLSAgICAgICAgZWxlbWVudCA9IFhNTFV0aWxzLmdldE5leHRTaWJsaW5nKGVsZW1lbnQpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gYW5hZSkKLQl7Ci0JICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotCX0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb2xsZWN0cyBhbGwgdGhlIG5hbWVzcGFjZSBkZWNsYXJhdGlvbnMgZnJvbSBhdHRyaWJ1dGVzIGNvbGxlY3Rpb24KLSAgICogQHBhcmFtIGF0dHJzIGFuIGF0dHJpYnV0ZXMgY29sbGVjdGlvbgotICAgKiBAcmV0dXJuIGEgY29sbGVjdGlvbiBvZiBuYW1lc3BhY2VzCi0gICAqLwotICBwcml2YXRlIENvbGxlY3Rpb24gY29sbGVjdE5hbWVzcGFjZXMoTmFtZWROb2RlTWFwIGF0dHJzKQotICB7Ci0gICAgQ29sbGVjdGlvbiBucyA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgaWYgKGF0dHJzICE9IG51bGwpCi0gICAgewotICAgICAgZm9yKGludCBpID0gMDsgaSA8IGF0dHJzLmdldExlbmd0aCgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEF0dHIgYXR0ciA9IChBdHRyKSBhdHRycy5pdGVtKGkpOwotICAgICAgICBpZiAoYXR0ci5nZXROYW1lc3BhY2VVUkkoKSAhPSBudWxsCi0gICAgICAgICAgJiYgYXR0ci5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9YTUxOUykpCi0gICAgICAgICAgbnMuYWRkKGF0dHIuZ2V0VmFsdWUoKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG5zOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHJpZXZlcyBhbiBhdHRyaWJ1dGUgdGhhdCBpcyBub3QgaW4gbmFtZXNwYWNlcwotICAgKiBAcGFyYW0gYXR0cnMgYW4gYXR0cmlidXRlcyBjb2xsZWN0aW9uCi0gICAqIEBwYXJhbSBucyBhIG5hbWVzcGFjZXMgY29sbGVjdGlvbgotICAgKiBAcmV0dXJuIGFuIGF0dHJpYnR1ZSB0aGF0IGlzIG5vdCBpbiBhbnkgb2YgdGhlIG5hbWVzcGFjZXMgc3BlY2lmaWVkCi0gICAqLwotICBwcml2YXRlIEF0dHIgZ2V0Tm90VmFsaWRBdHRyKE5hbWVkTm9kZU1hcCBhdHRycywgQ29sbGVjdGlvbiBucykKLSAgewotICAgIEF0dHIgcmV0ID0gbnVsbDsKLSAgICBpZiAoYXR0cnMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmb3IoaW50IGkgPSAwOyBpIDwgYXR0cnMuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgQXR0ciBhdHRyID0gKEF0dHIpIGF0dHJzLml0ZW0oaSk7Ci0gICAgICAgIGlmIChhdHRyLmdldE5hbWVzcGFjZVVSSSgpID09IG51bGwKLSAgICAgICAgICB8fCAhbnMuY29udGFpbnMoYXR0ci5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXQgPSBhdHRyOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci0gIH0KLQotICAvKioKLSAgICogUXVhbGlmaWVzIHdoZXRoZXIgYSBuYW1lc3BhY2UgaXMgdGhlIFNPQVAgbmFtZXNwYWNlCi0gICAqICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyIKLSAgICogQHBhcmFtIG5zIGEgbmFtZXNwYWNlIHRvIGJlIHF1YWxpZmllZAotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG5hbWVzcGFjZSBpcyBxdWFsaWZpZWQsIGZhbHNlIG90aGVyd2lzZQotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzU09BUE5hbWVzcGFjZShTdHJpbmcgbnMpCi0gIHsKLSAgICBpZiAobnMgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBucy5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxNjAxLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQMTYwMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGU3YzQ1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxNjAxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci0KLQotLyoqCi0gKiBCUDE2MDEuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDE2MDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDE2MDEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gT25lLXdheSByZXNwb25zZXMgd2lsbCBub3QgY29udGFpbiBhIFNPQVAgbWVzc2FnZQotICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICAvLyBUcnkgdG8gcGFyc2UgdGhlIFNPQVAgbWVzc2FnZQotICAgICAgICAvL0RvY3VtZW50IGRvYyA9IFhNTFV0aWxzLnBhcnNlWE1MKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCkpOwotICAgICAgICBYTUxVdGlscy5wYXJzZVhNTChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChXU0lFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCkgaW5zdGFuY2VvZiBTQVhFeGNlcHRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAgIGUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCkuZ2V0TWVzc2FnZSgpLAotICAgICAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDE3MDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxNzAxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYTFjODkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDE3MDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5UZXN0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLQotaW1wb3J0IGNvbS5pYm0ud3NkbC51dGlsLnhtbC5ET00yV3JpdGVyOwotCi0KLS8qKgotICogQlAxNzAxLgotICovCi1wdWJsaWMgY2xhc3MgQlAxNzAxIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxNzAxKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICAvLyBURU1QOiBVc2UgbG9jYWwgY29weSBvZiBzY2hlbWEgZm9yIG5vdwotICAgICAgICAvLyBEb2N1bWVudCBkb2MgPSBYTUxVdGlscy5wYXJzZVhNTChlbnRyeUNvbnRleHQuZ2V0TG9nRW50cnkoKS5nZXRNZXNzYWdlKCksIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCk7Ci0gICAgICAgIC8vIERvY3VtZW50IGRvYyA9IFhNTFV0aWxzLnBhcnNlWE1MKGVudHJ5Q29udGV4dC5nZXRMb2dFbnRyeSgpLmdldE1lc3NhZ2UoKSwgInNjaGVtYXMvc29hcEVudmVsb3BlLnhzZCIpOwotCi0gICAgICAgIC8vIEdldCBhIG5vbi12YWxpZGF0ZWQgYnV0ICh3ZWxsLWZvcm1lZCkgRE9NIHRyZWUgb2YgdGhlIG1lc3NhZ2UgY29udGVudAotICAgICAgICBEb2N1bWVudCBkb2MgPQotICAgICAgICAgIFhNTFV0aWxzLnBhcnNlWE1MKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCkpOwotCi0gICAgICAgIC8vIFJlbW92ZSBhbnkgeHNpOnR5cGVzIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbWVzc2FnZSAoU09BUCBIZWFkZXIsIEJvZHkgYW5kIEVudmVsb3BlIGl0c2VsZikKLQotICAgICAgICBOb2RlTGlzdCBlbGVtZW50TGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwotICAgICAgICBpZiAoZWxlbWVudExpc3QgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZWxlbWVudExpc3QuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQgPSAoRWxlbWVudCkgZWxlbWVudExpc3QuaXRlbShpKTsKLSAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlTlMoV1NJQ29uc3RhbnRzLk5TX1VSSV9YU0ksICJ0eXBlIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSAocG90ZW50aWFsbHkpIG1vZGlmaWVkIHRyZWUgdG8gU3RyaW5nCi0gICAgICAgIFN0cmluZyBmaWx0ZXJlZE1lc3NhZ2UgPSBET00yV3JpdGVyLm5vZGVUb1N0cmluZyhkb2MpOwotCi0gICAgICAgIC8vIFBhcnNlIHRoZSByZXN1bHQgd2l0aCB2YWxpZGF0aW9uICJvbiIKLSAgICAgICAgWE1MVXRpbHMucGFyc2VYTUwoCi0gICAgICAgICAgZmlsdGVyZWRNZXNzYWdlLAotICAgICAgICAgIFRlc3RVdGlscy5nZXRTT0FQU2NoZW1hTG9jYXRpb24oKSk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIGlmIChlLmdldFRhcmdldEV4Y2VwdGlvbigpIGluc3RhbmNlb2YgU0FYRXhjZXB0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgICAgICBVdGlscy5nZXRFeGNlcHRpb25EZXRhaWxzKGUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCkpLAotICAgICAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKFV0aWxzLmdldEV4Y2VwdGlvbkRldGFpbHMoZSksIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDE3NTUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlAxNzU1LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiODNlZTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDE3NTUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotLyoqCi0gKiBCUDE3NTUKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgbm9uLWZhdWx0IGVudmVsb3BlIGNvbnRhaW5pbmcgYSBzb2FwOmJvZHkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCwgYW5kIHRoYXQgaXMgcmVmZXJyZWQgYnkgYSBiaW5kaW5nIHN0eWxlIFJQQy1saXRlcmFsPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkVhY2ggcGFydCBhY2Nlc3NvciBlbGVtZW50IGluIHRoZSBlbnZlbG9wZSBoYXMgYSBsb2NhbCBuYW1lIG9mIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBuYW1lIGF0dHJpYnV0ZSBvZiB0aGUgY29ycmVzcG9uZGluZyB3c2RsOnBhcnQgZWxlbWVudC48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlAxNzU1IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyB7Ci0KLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTc1NShCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAodmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLQotICAgICAgLy8gR2V0dGluZyBhIG1lc3NhZ2UgZG9jdW1lbnQKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICBFbGVtZW50IHNvYXBPcGVyYXRpb24gPSBudWxsOwotICAgICAgLy8gSWYgdGhlcmUgaXMgYSBGYXVsdCBlbnRyeSBvciBubyBib2R5IGVudHJpZXMsCi0gICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAodmFsaWRhdG9yLmlzRmF1bHQoZG9jKQotICAgICAgICB8fCAoc29hcE9wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRTb2FwQm9keUNoaWxkKGRvYykpID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIC8vIENyZWF0aW5nIGEgcXVhbGlmaWVkIG5hbWUgb2YgcG90ZW50aWFsIFNPQVAgb3BlcmF0aW9uCi0gICAgICBRTmFtZSBvcGVyYXRpb25RTmFtZSA9IG5ldyBRTmFtZSgKLSAgICAgICAgc29hcE9wZXJhdGlvbi5nZXROYW1lc3BhY2VVUkkoKSwgc29hcE9wZXJhdGlvbi5nZXRMb2NhbE5hbWUoKSk7Ci0KLSAgICAgIC8vIFJldHJpZXZpbmcgYWxsIHRoZSBSUEMgYmluZGluZyBvcGVyYXRpb25zIGZyb20gd3NkbDpiaW5kaW5nCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uW10gcnBjQmluZGluZ09wZXJhdGlvbnMgPQotICAgICAgICB2YWxpZGF0b3IuZ2V0TWF0Y2hpbmdCaW5kaW5nT3BzKAotICAgICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMsCi0gICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0QmluZGluZ3MoKSk7Ci0KLSAgICAgIC8vIFJldHJpZXZpbmcgYmluZGluZyBvcGVyYXRpb24gYnkgZ2l2ZW4gb3BlcmF0aW9uIG5hbWUKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRPcGVyYXRpb25NYXRjaCgKLSAgICAgICAgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlUeXBlKCksCi0gICAgICAgIG9wZXJhdGlvblFOYW1lLAotICAgICAgICBycGNCaW5kaW5nT3BlcmF0aW9ucyk7Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgb3BlcmF0aW9uLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoYmluZGluZ09wZXJhdGlvbiA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBGaW5kaW5nIG9wZXJhdGlvbiBtZXNzYWdlIHBhcnRzIGFuZCBleHRlbnNpYmlsaXR5IGVsZW1zCi0gICAgICAvLyBpbiB0aGUgYmluZGluZyBkZXBlbmRpbmcgb24gbWVzc2FnZSB0eXBlCi0gICAgICBMaXN0IG9wZXJhdGlvbk1lc3NhZ2VQYXJ0cyA9IG51bGw7Ci0gICAgICBMaXN0IGV4dEVsZW1zID0gbnVsbDsKLSAgICAgIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpLmVxdWFscygKLSAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVRVUVTVCkpCi0gICAgICB7Ci0gICAgICAgIG9wZXJhdGlvbk1lc3NhZ2VQYXJ0cyA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkKLSAgICAgICAgICAuZ2V0SW5wdXQoKS5nZXRNZXNzYWdlKCkuZ2V0T3JkZXJlZFBhcnRzKG51bGwpOwotICAgICAgICBpZiAoYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKSAhPSBudWxsKQotICAgICAgICAgIGV4dEVsZW1zID0KLSAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIG9wZXJhdGlvbk1lc3NhZ2VQYXJ0cyA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkKLSAgICAgICAgICAuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpLmdldE9yZGVyZWRQYXJ0cyhudWxsKTsKLSAgICAgICAgaWYgKGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpICE9IG51bGwpCi0gICAgICAgICAgZXh0RWxlbXMgPQotICAgICAgICAgICAgYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGlzIG5vdCBsaXRlcmFsLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoIXZhbGlkYXRvci5pc0xpdGVyYWwoZXh0RWxlbXMpKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0KLSAgICAgIC8qIEJhc2ljIFByb2ZpbGUgVmVyc2lvbiAxLjEgKGh0dHA6Ly93d3cud3MtaS5vcmcvUHJvZmlsZXMvQmFzaWMvMjAwMy0xMi9CYXNpY1Byb2ZpbGUtMS4xLmh0bSkKLSAgICAgICAqIHNheXMgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBzb2FwOmJvZHkgb2YgYW4gRU5WRUxPUEUgTVVTVCBiZQotICAgICAgICogdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgd3NkbDpwYXJ0cyBpbiB0aGUgd3NkbDptZXNzYWdlIHRoYXQgZGVzY3JpYmVzIGl0LgotICAgICAgICogSG93ZXZlciwgd2Ugc2hvdWxkIGtlZXAgaW4gbWluZCB0aGVyZSBpcyB0aGUgInBhcnRzIiBhdHRyaWJ1dGUgb2Ygc29hcGJpbmQ6Ym9keQotICAgICAgICogdGhhdCBpbmRpY2F0ZXMgd2hpY2ggcGFydHMgYXBwZWFyIHdpdGhpbiB0aGUgU09BUCBCb2R5LiAKLSAgICAgICAqLwotCi0gICAgICAvLyBHZXR0aW5nIHRoZSBvcmRlcmVkIGxpc3Qgb2Ygd3NkbDpwYXJ0IG5hbWVzCi0gICAgICBMaXN0IG9yZGVyZWRQYXJ0TmFtZXMgPQotICAgICAgICB2YWxpZGF0b3Iub3JkZXJQYXJ0TmFtZXMob3BlcmF0aW9uTWVzc2FnZVBhcnRzLCBleHRFbGVtcyk7Ci0gICAgICBJdGVyYXRvciBpID0gb3JkZXJlZFBhcnROYW1lcy5pdGVyYXRvcigpOwotICAgICAgLy8gR2V0dGluZyB0aGUgZmlyc3QgYWNjZXNzb3IKLSAgICAgIEVsZW1lbnQgYWNjZXNzb3IgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKHNvYXBPcGVyYXRpb24pOwotICAgICAgd2hpbGUgKGFjY2Vzc29yICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHRoZSBjb3JyZXNwb25kaW5nIHdzZGw6cGFydCBlbGVtZW50Ci0gICAgICAgIC8vIGZvciBhbiBhY2Nlc3NvciwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgaWYgKCFpLmhhc05leHQoKSkKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAgICJUaGUgcGFydCBhY2Nlc3NvciBlbGVtZW50ICciICsgYWNjZXNzb3IuZ2V0TG9jYWxOYW1lKCkKLSAgICAgICAgICAgICsgIicgZG9lcyBub3QgaGF2ZSB0aGUgY29ycmVzcG9uZGluZyB3c2RsOnBhcnQgZWxlbWVudC4iKTsKLQotICAgICAgICAvLyBJZiBsb2NhbCBuYW1lIG9mIGFjY2Vzc29yIGRvZXMgbm90IGVxdWFsIHRvIHRoZSBuYW1lIG9mIHRoZQotICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHdzZGw6cGFydCBlbGVtZW50LCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICBTdHJpbmcgcGFydE5hbWUgPSAoU3RyaW5nKSBpLm5leHQoKTsKLSAgICAgICAgaWYgKCFhY2Nlc3Nvci5nZXRMb2NhbE5hbWUoKS5lcXVhbHMocGFydE5hbWUpKQotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKAotICAgICAgICAgICAgIlRoZSBhY2Nlc3NvciBsb2NhbCBuYW1lIGlzICIgKyBhY2Nlc3Nvci5nZXRMb2NhbE5hbWUoKQotICAgICAgICAgICAgKyAiLCB0aGUgY29ycmVzcG9uZGluZyBwYXJ0IGVsZW1lbnQgbmFtZSBpcyAiICsgcGFydE5hbWUpOwotCi0gICAgICAgIC8vIEdldHRpbmcgdGhlIG5leHQgYWNjZXNzb3IKLSAgICAgICAgYWNjZXNzb3IgPSBYTUxVdGlscy5nZXROZXh0U2libGluZyhhY2Nlc3Nvcik7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGFuYWUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gYWZlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICBhZmUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlA0MTAwLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQNDEwMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTA5YzAwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlA0MTAwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0KLS8qKgotICogQlA0MTAwCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgZW52ZWxvcGUgY29udGFpbmluZyBhIGhlYWRlciBibG9jayB0aGF0IGlzIGVpdGhlciBtYW5kYXRvcnkgb3IgaXMgbm90IGRlc2NyaWJlZCBpbiB0aGUgd3NkbDpiaW5kaW5nLjwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5BbiBlbnZlbG9wZSBjb250YWlucyBhIGhlYWRlciBibG9jayB0aGF0IGlzIGVpdGhlciBtYW5kYXRvcnkgb3IgaXMgbm90IGRlc2NyaWJlZCBpbiB0aGUgd3NkbDpiaW5kaW5nLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDQxMDAgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIHsKLQotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlA0MTAwKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIFBhcnNpbmcgdGhlIG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBlbXB0eSBvciBpbnZhbGlkLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoZG9jID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldHRpbmcgaGVhZGVyIGVsZW1lbnRzIGZyb20gZW52ZWxvcGUKLSAgICAgIEVsZW1lbnQgcm9vdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIE5vZGVMaXN0IGhlYWRlckxpc3QgPSByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwgWE1MVXRpbHMuU09BUF9FTEVNX0hFQURFUik7Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGhlYWRlciwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKGhlYWRlckxpc3QgPT0gbnVsbCB8fCBoZWFkZXJMaXN0LmdldExlbmd0aCgpID09IDApCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldHRpbmcgdGhlIGhlYWRlciBlbGVtZW50Ci0gICAgICBOb2RlIGhlYWRlciA9IGhlYWRlckxpc3QuaXRlbSgwKTsKLQotICAgICAgLy8gR2V0dGluZyB0aGUgaW1tZWRpYXRlIGNoaWxkIGVsZW1lbnRzIG9mIHRoZSBoZWFkZXIKLSAgICAgIE5vZGVMaXN0IGVsZW1zID0gaGVhZGVyLmdldENoaWxkTm9kZXMoKTsKLQotICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGNoaWxkIGVsZW1lbnRzIG9mIHRoZSBoZWFkZXIKLSAgICAgIC8vIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmIChlbGVtcyA9PSBudWxsIHx8IGVsZW1zLmdldExlbmd0aCgpID09IDApCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFdhbGtpbmcgdGhyb3VnaCBjaGlsZCBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtcy5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgewotCi0gICAgICAgIGlmIChlbGVtcy5pdGVtKGkpLmhhc0F0dHJpYnV0ZXMoKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldHRpbmcgdGhlIG11c3RVbmRlcnN0YW5kIGF0dHJpYnV0ZQotICAgICAgICAgIE5vZGUgbXVOb2RlID0gZWxlbXMuaXRlbShpKS5nZXRBdHRyaWJ1dGVzKCkuZ2V0TmFtZWRJdGVtKAotICAgICAgICAgICAgcm9vdC5nZXRQcmVmaXgoKSArICI6IiArIFhNTFV0aWxzLlNPQVBfQVRUUl9NVVNUX1VOREVSU1RBTkQpOwotICAgICAgICAgIC8vIElmIGEgaGVhZGVyIGJsb2NrIGlzIG1hbmRhdG9yeSwgdGhlbiB0aGUgYXNzZXJ0aW9uIHBhc3NlZAotICAgICAgICAgIGlmIChtdU5vZGUgIT0gbnVsbCAmJiBtdU5vZGUuZ2V0Tm9kZVZhbHVlKCkuZXF1YWxzKCIxIikpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvblBhc3NFeGNlcHRpb24oKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXR0aW5nIGhlYWRlciBibG9jayBuYW1lCi0gICAgICAgIFN0cmluZyBibG9ja05hbWUgPSBlbGVtcy5pdGVtKGkpLmdldExvY2FsTmFtZSgpOwotICAgICAgICAvLyBJZiB0aGUgbmFtZSBpcyBub3QgcHJlc2VudGVkIChvY2N1cnMgd2hlbiBlbGVtZW50IGlzIGVtcHR5IHN0cmluZykKLSAgICAgICAgLy8gdGhlbiBjb250aW51ZSB3aXRoIHRoZSBuZXh0IGVsZW1lbnQKLSAgICAgICAgaWYgKGJsb2NrTmFtZSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sZWFuIGJsb2NrTmFtZUV4aXN0cyA9IGZhbHNlOwotCi0gICAgICAgIC8vIEdldHRpbmcgV1NETCBiaW5kaW5ncwotICAgICAgICBCaW5kaW5nW10gYmluZGluZ3MgPSB2YWxpZGF0b3IuZ2V0V1NETERvY3VtZW50KCkuZ2V0QmluZGluZ3MoKTsKLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBiaW5kaW5ncy5sZW5ndGg7IGorKykgCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBHZXR0aW5nIHdzZGw6b3BlcmF0aW9ucwotICAgICAgICAgIExpc3Qgb3BlcmF0aW9ucyA9IGJpbmRpbmdzW2pdLmdldEJpbmRpbmdPcGVyYXRpb25zKCk7Ci0gICAgICAgICAgSXRlcmF0b3IgayA9IG9wZXJhdGlvbnMuaXRlcmF0b3IoKTsKLSAgICAgICAgICB3aGlsZSAoay5oYXNOZXh0KCkgJiYgIWJsb2NrTmFtZUV4aXN0cykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBCaW5kaW5nT3BlcmF0aW9uIG9wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKSBrLm5leHQoKTsKLQotICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHJlcXVlc3QgbWVzc2FnZSwKLSAgICAgICAgICAgIC8vIHRoZW4gZ2V0dGluZyB3c2RsOmlucHV0IGZvciBhbiBvcGVyYXRpb24gCi0gICAgICAgICAgICBpZiAoZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldFR5cGUoKS5lcXVhbHMoCi0gICAgICAgICAgICAgIE1lc3NhZ2VFbnRyeS5UWVBFX1JFUVVFU1QpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBCaW5kaW5nSW5wdXQgb3BJbnB1dCA9IG9wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKTsKLSAgICAgICAgICAgICAgaWYgKG9wSW5wdXQgIT0gbnVsbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIElmIHdzZGw6aW5wdXQgaXMgcHJlc2VudGVkIHRoZW4gY2hlY2tpbmcKLSAgICAgICAgICAgICAgICAvLyB3aGV0aGVyIHRoZSBibG9jayBuYW1lIGlzIGRlc2NyaWJlZCB0aGVyZSBvciBub3QKLSAgICAgICAgICAgICAgICBibG9ja05hbWVFeGlzdHMgPSBibG9ja05hbWVFeGlzdHMoCi0gICAgICAgICAgICAgICAgICBvcElucHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLCBibG9ja05hbWUpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcmVzcG9uc2UgbWVzc2FnZSwKLSAgICAgICAgICAgIC8vIHRoZW4gZ2V0dGluZyB3c2RsOm91dHB1dCBmb3IgYW4gb3BlcmF0aW9uCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIEJpbmRpbmdPdXRwdXQgb3BPdXRwdXQgPSBvcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpOwotICAgICAgICAgICAgICBpZiAob3BPdXRwdXQgIT0gbnVsbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIElmIHdzZGw6b3V0cHV0IGlzIHByZXNlbnRlZCB0aGVuIGNoZWNraW5nCi0gICAgICAgICAgICAgICAgLy8gd2hldGhlciB0aGUgYmxvY2sgbmFtZSBpcyBkZXNjcmliZWQgdGhlcmUgb3Igbm90Ci0gICAgICAgICAgICAgICAgYmxvY2tOYW1lRXhpc3RzID0gYmxvY2tOYW1lRXhpc3RzKAotICAgICAgICAgICAgICAgICAgb3BPdXRwdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCksIGJsb2NrTmFtZSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBhIGhlYWRlciBibG9jayBpcyBub3QgZGVzY3JpYmVkIGluIHRoZSBhcHByb3ByaWF0ZSB3c2RsOmJpbmRpbmcKLSAgICAgICAgLy8gdGhlbiB0aGUgYXNzZXJ0aW9uIHBhc3NlZAotICAgICAgICBpZiAoIWJsb2NrTmFtZUV4aXN0cykKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25QYXNzRXhjZXB0aW9uKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLy8gTm8gb25lIGhlYWRlciBibG9jayBpcyBlaXRoZXIgbWFuZGF0b3J5IG9yIGlzIG5vdCBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAvLyBhcHByb3ByaWF0ZSB3c2RsOmJpbmRpbmcsIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0KLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvblBhc3NFeGNlcHRpb24gYXBlKQotICAgIHsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgdGVzdEFzc2VydGlvbi5nZXREZXRhaWxEZXNjcmlwdGlvbigpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyB0aGUgZXhpc3RlbnNlIG9mIGJsb2NrTmFtZSBpbiB3c2Rsc29hcDpoZWFkZXIsIGlmIGl0IGlzIGZvdW5kIGluCi0gICAqIGEgbGlzdCBvZiBFeHRlbnNpYmlsaXR5RWxlbWVudCBvYmplY3RzCi0gICAqIAotICAgKiBAcGFyYW0gZWxlbXMgQSBsaXN0IG9mIEV4dGVuc2liaWxpdHlFbGVtZW50IG9iamVjdHMKLSAgICogQHBhcmFtIGJsb2NrTmFtZSBUaGUgbmFtZSB0aGF0IHdpbGwgYmUgY2hlY2tlZCBmb3IgZXhpc3RlbmNlCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBibG9ja05hbWUgaXMgZGVzY3JpYmVkIGluIHRoZSB3c2Rsc29hcDpoZWFkZXIgZXh0ZW5zaWJpbGl0eSBlbGVtZW50Ci0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gYmxvY2tOYW1lRXhpc3RzKExpc3QgZWxlbXMsIFN0cmluZyBibG9ja05hbWUpCi0gIHsKLSAgICBpZiAoZWxlbXMgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgSXRlcmF0b3IgaSA9IGVsZW1zLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGkuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGVsZW0gPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGkubmV4dCgpOwotICAgICAgU3RyaW5nIGVsZW1OYW1lID0gZWxlbS5nZXRFbGVtZW50VHlwZSgpLmdldExvY2FsUGFydCgpOwotICAgICAgaWYgKGVsZW1OYW1lLmVxdWFscygiaGVhZGVyIikpCi0gICAgICB7Ci0gICAgICAgIFNPQVBIZWFkZXIgc29hcEhlYWRlciA9IChTT0FQSGVhZGVyKSBlbGVtOwotICAgICAgICBpZiAoc29hcEhlYWRlci5nZXRQYXJ0KCkuZXF1YWxzKGJsb2NrTmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlA0MTAxLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQNDEwMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmQ5M2YzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlA0MTAxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvblBhc3NFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi0vKioKLSAqIEJQNDEwMQotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIGVudmVsb3BlIGNvbnRhaW5pbmcgYSBzb2FwOmFjdG9yIGF0dHJpYnV0ZSB3aXRoIGEgdmFsdWUgb3RoZXIgdGhhbiB0aGUgc3BlY2lhbCB1cmkgImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvYWN0b3IvbmV4dCIuPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkEgaGVhZGVyIGVsZW1lbnQgaW4gdGhlIGVudmVsb3BlIGNvbnRhaW5zIGEgc29hcDphY3RvciBhdHRyaWJ1dGUgd2l0aCBhIHZhbHVlIG90aGVyIHRoYW4gdGhlIHNwZWNpYWwgdXJpICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2FjdG9yL25leHQiLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDQxMDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIHsKLQotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlA0MTAxKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeSB7Ci0KLSAgICAgIC8vIFBhcnNpbmcgdGhlIG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBlbXB0eSBvciBpbnZhbGlkLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoZG9jID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldHRpbmcgaGVhZGVyIGVsZW1lbnRzIGZyb20gZW52ZWxvcGUKLSAgICAgIEVsZW1lbnQgcm9vdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIE5vZGVMaXN0IGhlYWRlckxpc3QgPSByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwgWE1MVXRpbHMuU09BUF9FTEVNX0hFQURFUik7Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGhlYWRlciwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKGhlYWRlckxpc3QgPT0gbnVsbCB8fCBoZWFkZXJMaXN0LmdldExlbmd0aCgpID09IDApCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldHRpbmcgdGhlIGhlYWRlciBlbGVtZW50Ci0gICAgICBOb2RlIGhlYWRlciA9IGhlYWRlckxpc3QuaXRlbSgwKTsKLQotICAgICAgLy8gR2V0dGluZyB0aGUgaW1tZWRpYXRlIGNoaWxkIGVsZW1lbnRzIG9mIHRoZSBoZWFkZXIKLSAgICAgIE5vZGVMaXN0IGVsZW1zID0gaGVhZGVyLmdldENoaWxkTm9kZXMoKTsKLQotICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY2hpbGQgZWxlbWVudHMgb2YgdGhlIGhlYWRlcgotICAgICAgLy8gdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKGVsZW1zID09IG51bGwgfHwgZWxlbXMuZ2V0TGVuZ3RoKCkgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgLy8gV2Fsa2luZyB0aHJvdWdoIGNoaWxkIGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVsZW1zLmdldExlbmd0aCgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIC8vIEdldHRpbmcgbm9kZSBhdHRyaWJ1dGVzCi0gICAgICAgIE5hbWVkTm9kZU1hcCBhdHRycyA9IGVsZW1zLml0ZW0oaSkuZ2V0QXR0cmlidXRlcygpOwotCi0gICAgICAgIC8vIElmIHRoZSBub2RlIGRvZXMgbm90IGhhdmUgYXR0cmlidXRlcyB0aGVuIGNvbnRpbnVlCi0gICAgICAgIGlmIChhdHRycyA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXR0aW5nIGFjdG9yIGF0dHJpYnV0ZQotICAgICAgICBOb2RlIGFjdG9yID0gYXR0cnMuZ2V0TmFtZWRJdGVtKHJvb3QuZ2V0UHJlZml4KCkKLSAgICAgICAgICArICI6IiArIFhNTFV0aWxzLlNPQVBfQVRUUl9BQ1RPUik7Ci0KLSAgICAgICAgLy8gSWYgdGhlIGFjdG9yIGF0dHJpYnV0ZSBpcyBwcmVzZW50ZWQgYW5kIGRvZXMgbm90IGVxdWFsCi0gICAgICAgIC8vIHRvICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2FjdG9yL25leHQiLAotICAgICAgICAvLyB0aGVuIHRoZSBhc3NlcnRpb24gcGFzc2VkCi0gICAgICAgIGlmIChhY3RvciAhPSBudWxsCi0gICAgICAgICAgJiYgIWFjdG9yLmdldE5vZGVWYWx1ZSgpLmVxdWFscyhXU0lDb25zdGFudHMuTlNfVVJJX1NPQVBfTkVYVF9BQ1RPUikpCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIE5vIG9uZSBhY3RvciBhdHRyaWJ1dGUgaGFzIGEgdmFsdWUgb3RoZXIgdGhhbgotICAgICAgLy8gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvYWN0b3IvbmV4dCIsCi0gICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlIAotICAgICAgcmVzdWx0ICA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0KLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvblBhc3NFeGNlcHRpb24gYXBlKQotICAgIHsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgdGVzdEFzc2VydGlvbi5nZXREZXRhaWxEZXNjcmlwdGlvbigpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDQxMDIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvQlA0MTAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiZTE3OTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDQxMDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotLyoqCi0gKiBCUDQxMDIKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBlbnZlbG9wZSBjb250YWluaW5nIGEgZmF1bHQgd2l0aCBhIG5vbi1lbXB0eSBkZXRhaWwgZWxlbWVudC48L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+QSBGYXVsdCBlbGVtZW50IGluIGFuIGVudmVsb3BlIGNvbnRhaW5zIGEgbm9uLWVtcHR5IGRldGFpbCBlbGVtZW50LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDQxMDIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIHsKLQotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlA0MTAyKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeSB7Ci0KLSAgICAgIC8vIFBhcnNpbmcgdGhlIG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBlbXB0eSBvciBpbnZhbGlkLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoZG9jID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldHRpbmcgRmF1bHQgZWxlbWVudHMgZnJvbSBlbnZlbG9wZQotICAgICAgRWxlbWVudCByb290ID0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpOwotICAgICAgTm9kZUxpc3QgZmF1bHRMaXN0ID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsIFhNTFV0aWxzLlNPQVBfRUxFTV9GQVVMVCk7Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIEZhdWx0IGVsZW1lbnQsIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmIChmYXVsdExpc3QgPT0gbnVsbCB8fCBmYXVsdExpc3QuZ2V0TGVuZ3RoKCkgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgLy8gRmF1bHQgZWxlbWVudCBtdXN0IG5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UKLSAgICAgIC8vIHdpdGhpbiBhIEJvZHkgZWxlbWVudCwgc28gZ2V0dGluZyB0aGUgZmlyc3Qgb25lCi0gICAgICBFbGVtZW50IGZhdWx0ID0gKEVsZW1lbnQpIGZhdWx0TGlzdC5pdGVtKDApOwotCi0gICAgICAvLyBHZXR0aW5nIEZ1YWx0J3MgZGV0YWlsIGVsZW1lbnRzCi0gICAgICBOb2RlTGlzdCBkZXRhaWxzID0gZmF1bHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoCi0gICAgICAgIFhNTFV0aWxzLlNPQVBfRUxFTV9GQVVMVF9ERVRBSUwpOwotICAgICAgLy8gSWYgdGhlcmUgaXMgYSBub24tZW1wdHkgZGV0YWlsIGVsZW1lbnQsIHRoZW4gdGhlIGFzc2VydGlvbiBwYXNzZWQKLSAgICAgIGlmIChkZXRhaWxzICE9IG51bGwKLSAgICAgICAgJiYgZGV0YWlscy5nZXRMZW5ndGgoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIE5vZGVMaXN0IGxpc3QgPSBkZXRhaWxzLml0ZW0oMCkuZ2V0Q2hpbGROb2RlcygpOwotICAgICAgICAvLyBzZWFyY2ggZmlyc3QgZWxlbWVudCBub2RlIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3QuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIGlmKChsaXN0Lml0ZW0oaSkuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgCi0gICAgICAgICAgJiYgKGxpc3QuaXRlbShpKS5nZXRMb2NhbE5hbWUoKSAhPSBudWxsKSApIAotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25QYXNzRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIFRoZXJlIGlzIG5vIGRldGFpbCBlbGVtZW50IGluIEZhdWx0LAotICAgICAgLy8gdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbiBhcGUpCi0gICAgewotICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICB0ZXN0QXNzZXJ0aW9uLmdldERldGFpbERlc2NyaXB0aW9uKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGFuYWUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQNDEwOS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9CUDQxMDkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJmOGQxZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL0JQNDEwOS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25QYXNzRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotLyoqCi0gKiBCUDQxMDkKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgZW52ZWxvcGUgY29udGFpbmluZyBhIHNvYXA6Qm9keSBlbGVtZW50IHdpdGggYXR0cmlidXRlczwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5BbiBlbnZlbG9wZSBjb250YWlucyBhIGEgc29hcDpCb2R5IGVsZW1lbnQgd2l0aCBhdHRyaWJ1dGVzLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDQxMDkgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIHsKLQotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlA0MTA5KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeSB7Ci0KLSAgICAgIC8vIFBhcnNpbmcgdGhlIG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBlbXB0eSBvciBpbnZhbGlkLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoZG9jID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEdldHRpbmcgdGhlIHNvYXA6Qm9keSBlbGVtZW50cyBmcm9tIGVudmVsb3BlCi0gICAgICBOb2RlTGlzdCBib2R5TGlzdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAotICAgICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsIFhNTFV0aWxzLlNPQVBfRUxFTV9CT0RZKTsKLQotICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gQm9keSBlbGVtZW50LCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoYm9keUxpc3QgPT0gbnVsbCB8fCBib2R5TGlzdC5nZXRMZW5ndGgoKSA9PSAwKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvLyBHZXR0aW5nIHRoZSBmaXJzdCBzb2FwOkJvZHkgZWxlbWVudAotICAgICAgRWxlbWVudCBib2R5ID0gKEVsZW1lbnQpIGJvZHlMaXN0Lml0ZW0oMCk7Ci0KLSAgICAgIC8vIElmIHRoZSBCb2R5IGVsZW1lbnQgaGFzIGF0dHJpYnV0ZXMgKGV4Y2x1ZGluZyBuYW1lc3BhY2UgZGVjbGFyYXRpb25zKSwKLSAgICAgIC8vIHRoZSBhc3NlcnRpb24gcGFzc2VkCi0gICAgICBOYW1lZE5vZGVNYXAgYXR0cnMgPSBib2R5LmdldEF0dHJpYnV0ZXMoKTsKLSAgICAgIGlmIChhdHRycyAhPSBudWxsKQotICAgICAgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dHJzLmdldExlbmd0aCgpOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgYXR0ck5hbWUgPSAoKEF0dHIpIGF0dHJzLml0ZW0oaSkpLmdldE5hbWUoKTsKLSAgICAgICAgICBpZiAoIWF0dHJOYW1lLmVxdWFscygieG1sbnMiKSAmJiAhYXR0ck5hbWUuc3RhcnRzV2l0aCgieG1sbnM6IikpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvblBhc3NFeGNlcHRpb24oKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvblBhc3NFeGNlcHRpb24gYXBlKQotICAgIHsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgdGVzdEFzc2VydGlvbi5nZXREZXRhaWxEZXNjcmlwdGlvbigpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9FbnZlbG9wZVZhbGlkYXRvckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvRW52ZWxvcGVWYWxpZGF0b3JJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1N2JkMDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9FbnZlbG9wZVZhbGlkYXRvckltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMyBJQk0gQ29ycG9yYXRpb24sIFBhcmFzb2Z0IGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gICAgICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogICBQYXJhc29mdCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnZlbG9wZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLQotLyoqCi0gKiBAdmVyc2lvbiAxLjAKLSAqLwotcHVibGljIGNsYXNzIEVudmVsb3BlVmFsaWRhdG9ySW1wbAotICBleHRlbmRzIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gIGltcGxlbWVudHMgRW52ZWxvcGVWYWxpZGF0b3IKLXsKLSAgLyoqCi0gICAqIEdldCB0aGUgYXJ0aWZhY3QgdHlwZSB0aGF0IHRoaXMgdmFsaWRhdG9yIGFwcGxpZXMgdG8uCi0gICAqIEByZXR1cm4gdGhlIGFydGlmYWN0IHR5cGUgKGEgU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRBcnRpZmFjdFR5cGUoKSB7Ci0gICAgICByZXR1cm4gVFlQRV9FTlZFTE9QRTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIGNvbGxlY3Rpb24gb2YgZW50cnkgdHlwZXMgdGhhdCB0aGlzIHZhbGlkYXRvciBhcHBsaWVzIHRvLgotICAgKiBAcmV0dXJuIGFuIGFycmF5IG9mIGVudHJ5IHR5cGVzIChTdHJpbmdzKQotICAgKi8KLSAgcHVibGljIFN0cmluZ1tdIGdldEVudHJ5VHlwZXMoKSB7Ci0gICAgICByZXR1cm4gbmV3IFN0cmluZ1tdIHsKLSAgICAgICAgICAgICAgVFlQRV9FTlZFTE9QRV9SRVFVRVNULAotICAgICAgICAgICAgICBUWVBFX0VOVkVMT1BFX1JFU1BPTlNFLAotICAgICAgICAgICAgICBUWVBFX0VOVkVMT1BFX0FOWQotICAgICAgfTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbCNpc1ByaW1hcnlFbnRyeVR5cGVNYXRjaChvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNQcmltYXJ5RW50cnlUeXBlTWF0Y2goCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gIHsKLSAgICBib29sZWFuIG1hdGNoID0gZmFsc2U7Ci0KLSAgICAvLyBWZXJpZnkgdGhhdCB0aGUgZW50cnkgYW5kIHRlc3QgYXNzZXJ0aW9uIGhhdmUgdGhlIHNhbWUgcHJpbWFyeSBjb250ZXh0Ci0gICAgaWYgKCh0ZXN0QXNzZXJ0aW9uLmdldEVudHJ5VHlwZU5hbWUoKS5lcXVhbHMoVFlQRV9FTlZFTE9QRV9BTlkpKQotICAgICAgfHwgKHRlc3RBc3NlcnRpb24uZ2V0RW50cnlUeXBlTmFtZSgpLmVxdWFscyhUWVBFX0VOVkVMT1BFX1JFUVVFU1QpCi0gICAgICAgICYmIChlbnRyeUNvbnRleHQKLSAgICAgICAgICAuZ2V0RW50cnkoKQotICAgICAgICAgIC5nZXRFbnRyeVR5cGUoKQotICAgICAgICAgIC5nZXRUeXBlTmFtZSgpCi0gICAgICAgICAgLmVxdWFscyhNZXNzYWdlVmFsaWRhdG9yLlRZUEVfTUVTU0FHRV9SRVFVRVNUKSkpCi0gICAgICB8fCAodGVzdEFzc2VydGlvbi5nZXRFbnRyeVR5cGVOYW1lKCkuZXF1YWxzKFRZUEVfRU5WRUxPUEVfUkVTUE9OU0UpCi0gICAgICAgICYmIChlbnRyeUNvbnRleHQKLSAgICAgICAgICAuZ2V0RW50cnkoKQotICAgICAgICAgIC5nZXRFbnRyeVR5cGUoKQotICAgICAgICAgIC5nZXRUeXBlTmFtZSgpCi0gICAgICAgICAgLmVxdWFscyhNZXNzYWdlVmFsaWRhdG9yLlRZUEVfTUVTU0FHRV9SRVNQT05TRSkpKSkKLSAgICB7Ci0gICAgICBtYXRjaCA9IHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1hdGNoOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9TU0JQMTYwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9lbnZlbG9wZS9TU0JQMTYwMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTlkMzVhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvU1NCUDE2MDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci0KLS8qKgotICogU1NCUDE2MDEKLSAqLwotcHVibGljIGNsYXNzIFNTQlAxNjAxIGV4dGVuZHMgQlAxNjAxCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFNTQlAxNjAxKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvU1NCUDk3MDQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvZW52ZWxvcGUvU1NCUDk3MDQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM1NTI2Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL2VudmVsb3BlL1NTQlA5NzA0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0vKioKLSAqIFNTQlA5NzA0Ci0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIGVudmVsb3BlPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBFTlZFTE9QRSBkb2VzIG5vdCBjb250YWluIHRoZSBuYW1lc3BhY2UgZGVjbGFyYXRpb24geG1sbnM6eG1sPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBTU0JQOTcwNCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFNTQlA5NzA0KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIEdldHRpbmcgYSBtZXNzYWdlIGRvY3VtZW50Ci0gICAgICBEb2N1bWVudCBkb2MgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKTsKLSAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGlzIGVtcHR5IG9yIGludmFsaWQsIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmIChkb2MgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgLy8gR2V0dGluZyB0aGUgcm9vdCBlbGVtZW50Ci0gICAgICBFbGVtZW50IGVsZW0gPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgICAvLyBJZiBpdCBpcyBub3QgdGhlIHNvYXA6RW52ZWxvcGUsIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmICghZWxlbS5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQKQotICAgICAgICB8fCAhZWxlbS5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoWE1MVXRpbHMuU09BUF9FTEVNX0VOVkVMT1BFKSkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgLy8gSWYgdGhlIGVudmVsb3BlIGNvbnRhaW5zIHRoZSB4bWxuczp4bWwgbmFtZXNwYWNlIGRlY2xhcmF0aW9uLAotICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgIFN0cmluZyBpbmNvcnJlY3RFbGVtZW50TmFtZSA9IGdldEluY29ycmVjdEVsZW1lbnROYW1lKGVsZW0pOwotICAgICAgaWYgKGluY29ycmVjdEVsZW1lbnROYW1lICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgbmFtZSBvZiBhbiBlbGVtZW50IGNvbnRhaW5pbmcgIgotICAgICAgICAgICsgInN1Y2ggbmFtZXNwYWNlIGRlY2xhcmF0aW9uIGlzIFwiIiArIGluY29ycmVjdEVsZW1lbnROYW1lICsgIlwiLiIpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1dBUk5JTkc7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgICogTG9va3MgZm9yIGFueSBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIGF0dHJpYnV0ZSB4bWxuczp4bWw9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIuIAotICAgKiBAcGFyYW0gZWxlbSB0aGUgcm9vdCBlbGVtZW50LgotICAgKiBAcmV0dXJuIHRoZSBuYW1lIG9mIGFuIGVsZW1lbnQgZm91bmQgb3IgbnVsbC4KLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIGdldEluY29ycmVjdEVsZW1lbnROYW1lKEVsZW1lbnQgZWxlbSkKLSAgewotICAgIC8vIEdldHRpbmcgYSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIHhtbG5zOnhtbAotICAgIFN0cmluZyBhdHRyVmFsdWUgPSBlbGVtLmdldEF0dHJpYnV0ZU5TKAotICAgICAgV1NJQ29uc3RhbnRzLk5TX1VSSV9YTUxOUywgInhtbCIpOwotICAgIC8vIElmIGl0IGVxdWFscyB0byAiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwKLSAgICAvLyByZXR1cm4gYW4gZWxlbWVudCBuYW1lOwotICAgIGlmIChXU0lDb25zdGFudHMuTlNfVVJJX1hNTC5lcXVhbHMoYXR0clZhbHVlKSkKLSAgICB7Ci0gICAgICByZXR1cm4gZWxlbS5nZXROb2RlTmFtZSgpOwotICAgIH0KLSAgICAvLyBHb2luZyB0aHJvdWdoIGVsZW1lbnQncyBjaGlsZHJlbgotICAgIEVsZW1lbnQgY2hpbGQgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKGVsZW0pOwotICAgIHdoaWxlIChjaGlsZCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIElmIGFueSBvZiB0aGVtIGhhcyB4bWxuczp4bWwgYXR0cmlidXRlLCByZXR1cm4gYSB2YWx1ZQotICAgICAgU3RyaW5nIG5hbWUgPSBnZXRJbmNvcnJlY3RFbGVtZW50TmFtZShjaGlsZCk7Ci0gICAgICBpZiAobmFtZSAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXR1cm4gbmFtZTsKLSAgICAgIH0KLSAgICAgIC8vIEdldHRpbmcgdGhlIG5leHQgZWxlbWVudCdzIGNoaWxkCi0gICAgICBjaGlsZCA9IFhNTFV0aWxzLmdldE5leHRTaWJsaW5nKGNoaWxkKTsKLSAgICB9Ci0gICAgLy8gTm8geG1sbnM6eG1sIGF0dHJpYnV0ZXMgZm91bmQsIHJldHVybiBudWxsCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxMDAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxMDAzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZmYzNzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTAwMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0vKioKLSAqIEFQMTAwMwotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBub24tbXVsdGlwYXJ0L3JlbGF0ZWQgbWVzc2FnZSBpbiB0aGUgbG9nIGZpbGUsIHdoaWNoIGhhcyBhIG5vbi1lbXB0eSBlbnRpdHktYm9keTwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqICBUaGUgbG9nZ2VkIFNPQVAgZW52ZWxvcGUgaXMgYSBVVEYtOCB0cmFuc2NyaXB0IG9mIGFuIGVudmVsb3BlIG9yaWdpbmFsbHkgZW5jb2RlZCBhcyBVVEYtOCBvciBVVEYtMTYuIAotICogIFRoZSBIVFRQIENvbnRlbnQtVHlwZSBoZWFkZXIncyBjaGFyc2V0IHZhbHVlIGlzIGVpdGhlciBVVEYtOCBvciBVVEYtMTYuIExvb2tpbmcgYXQgdGhlIG1lc3NhZ2VDb250ZW50IAotICogIGVsZW1lbnQgb2YgdGhlIGxvZ2dlZCBtZXNzYWdlLCBlaXRoZXIgCi0gKiAgICAoMSkgaXQgaGFzIGEgQk9NIGF0dHJpYnV0ZSB3aGljaCBtYXBzIHRoZSBjaGFyc2V0IHZhbHVlIGluIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyLCBvciAKLSAqICAgICgyKSBpdCBoYXMgaXQgaGFzIGFuIFhNTCBkZWNsYXJhdGlvbiB3aGljaCBtYXRjaGVzIHRoZSBjaGFyc2V0IHZhbHVlIGluIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyLCBvciAKLSAqICAgICgzKSB0aGVyZSBpcyBubyBCT00gYXR0cmlidXRlIGFuZCBubyBYTUwgZGVjbGFyYXRpb24sIGFuZCB0aGUgY2hhcnNldCB2YWx1ZSBpcyBVVEYtOC4KLSAqIDwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKgotICogQGF1dGhvciBsYXV6b25kCi0gKi8KLXB1YmxpYyBjbGFzcyBBUDEwMDMgZXh0ZW5kcyBTU0JQMTAwMyB7Ci0KLQkvKioKLQkgKiBAcGFyYW0gaW1wbAotCSAqLwotCXB1YmxpYyBBUDEwMDMoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkgCi0JewotCQlzdXBlcihpbXBsKTsKLQl9Ci0KLQlwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotCSAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotCSAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLQkgIHRocm93cyBXU0lFeGNlcHRpb24KLQl7Ci0JICAvLyBJZiB0aGVyZSBpcyBhIFNPQVAgTWVzc2FnZSB3aXRoIEF0dGFjaG1lbnRzLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0JICBpZiAoZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmlzTWltZUNvbnRlbnQoKSkKLQkgIHsKLQkgIAlyZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFLCBmYWlsdXJlRGV0YWlsKTsKLQkgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHN1cGVyLnZhbGlkYXRlKHRlc3RBc3NlcnRpb24sIGVudHJ5Q29udGV4dCk7Ci0JICB9Ci0JfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkwMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkwMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDkwMGU2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0vKioKLSAqIEFQMTkwMgotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBtZXNzYWdlPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkluIGEgZGVzY3JpcHRpb24sIGlmIHRoZSB3c2RsOmlucHV0IG9yIHdzZGw6b3V0cHV0Ci0gKiBlbGVtZW50IGluIHRoZSB3c2RsOmJpbmRpbmcgc3BlY2lmaWVzIFdTREwgTUlNRSBiaW5kaW5nLCB0aGVuIHRoZSBtZXNzYWdlCi0gKiBjYW4gY29udGFpbiBTT0FQIGF0dGFjaG1lbnRzLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBBUDE5MDIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBBUDE5MDIoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0dGluZyBhbiBvcGVyYXRpb24gbWF0Y2hlZCBmb3IgYSBtZXNzYWdlCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSB2YWxpZGF0b3IuZ2V0T3BlcmF0aW9uTWF0Y2goCi0gICAgICAgIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5VHlwZSgpLAotICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKSk7Ci0gICAgICAvLyBJZiBubyBvbmUgb3BlcmF0aW9uIG1hdGNoZXMsIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmIChiaW5kaW5nT3BlcmF0aW9uID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICAvLyBHZXR0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICAgIExpc3QgZXh0RWxlbXM7Ci0gICAgICBTdHJpbmcgdHlwZTsKLSAgICAgIGlmIChNZXNzYWdlRW50cnkuVFlQRV9SRVFVRVNUCi0gICAgICAgIC5lcXVhbHMoZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlUeXBlKCkpKQotICAgICAgewotICAgICAgICB0eXBlID0gImlucHV0IjsKLSAgICAgICAgZXh0RWxlbXMgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpID09IG51bGwgPyBudWxsCi0gICAgICAgICAgOiBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICB0eXBlID0gIm91dHB1dCI7Ci0gICAgICAgIGV4dEVsZW1zID0gYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCkgPT0gbnVsbCA/IG51bGwKLSAgICAgICAgICA6IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgfQotICAgICAgLy8gSWYgdGhlIE1JTUUgYmluZGluZyBpcyBub3QgdXNlZCwgYnV0IHRoZSBtZXNzYWdlIGhhcwotICAgICAgLy8gYXQgbGVhc3Qgb25lIG5vbi1yb290IE1JTUUgcGFydCwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgIGlmICghdXNlc01pbWVCaW5kaW5nKGV4dEVsZW1zKQotICAgICAgICAmJiBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWltZVBhcnRzKCkuY291bnQoKSA+IDEpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgd3NkbDoiICsgdHlwZSArICIgb2YgdGhlIFwiIgotICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAiXCIgYmluZGluZyBvcGVyYXRpb24uIik7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGFuYWUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gYWZlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICBhZmUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZmlyc3QgZXh0ZW5zaWJpbGl0eSBlbGVtZW50IGlzIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZC4KLSAgICogQHBhcmFtIGV4dEVsZW1zIGEgbGlzdCBvZiBleHRlbnNpYmlsaXR5IGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGVsZW1lbnQgaXMgbWltZTptdWx0aXBhcnRSZWxhdGVkLCBmYWxzZSBvdGhlcndpc2UKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiB1c2VzTWltZUJpbmRpbmcoTGlzdCBleHRFbGVtcykgewotICAgIC8vIElmIHRoZSBmaXJzdCBleHRlbnNpYmlsaXR5IGVsZW1lbnQgaXMgbWltZTptdWx0aXBhcnRSZWxhdGVkLAotICAgIC8vIHJldHVybiB0cnVlCi0gICAgaWYgKGV4dEVsZW1zICE9IG51bGwgJiYgZXh0RWxlbXMuc2l6ZSgpID4gMAotICAgICAgJiYgKChFeHRlbnNpYmlsaXR5RWxlbWVudClleHRFbGVtcy5nZXQoMCkpCi0gICAgICAuZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NETF9NSU1FX01VTFRJUEFSVCkpCi0gICAgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIC8vIG90aGVyd2lzZSByZXR1cm4gZmFsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTE1LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTE1LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NTI5NzYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkxNS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NaW1lUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1pbWVQYXJ0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5NSU1FQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk1JTUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5VdGlsczsKLQotLyoqCi0gKiBBUDE5MTUKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgcm9vdC1wYXJ0IG9mIGEgbXVsdGlwYXJ0L3JlbGF0ZWQgbWVzc2FnZTwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgZW50aXR5IGJvZHkgb2YgdGhlIHJvb3QtcGFydCBvZiBhCi0gKiBtdWx0aXBhcnQvcmVsYXRlZCBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgdXNpbmcgZWl0aGVyIFVURi04IG9yIFVURi0xNgotICogY2hhcmFjdGVyIGVuY29kaW5nLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBBUDE5MTUgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBBUDE5MTUoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gZ2V0IE1JTUUgcGFydHMKLSAgICBpZiAoIWVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIE1pbWVQYXJ0cyBtaW1lUGFydHMgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWltZVBhcnRzKCk7ICAgIAkKLSAgICAgIE1pbWVQYXJ0IHBhcnQgPSBtaW1lUGFydHMuZ2V0Um9vdFBhcnQoKTsKLSAgICAgIGlmIChwYXJ0ID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyB4bWxFbmNvZGluZyA9IG51bGw7Ci0gICAgICAgIFN0cmluZyBjaGFyc2V0ID0gTUlNRVV0aWxzLmdldE1pbWVIZWFkZXJTdWJBdHRyaWJ1dGUoCi0gICAgICAgICAgcGFydC5nZXRIZWFkZXJzKCksCi0gICAgICAgICAgTUlNRUNvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9UWVBFLCAKLSAgICAgICAgICAiY2hhcnNldCIpOwotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIC8vIFRoZSBIVFRQIENvbnRlbnQtVHlwZSBoZWFkZXIncyBjaGFyc2V0IHZhbHVlIGlzIGVpdGhlciBVVEYtOCBvciBVVEYtMTYuIAotICAgICAgICAgIGlmKChjaGFyc2V0ICE9IG51bGwpICYmIChjaGFyc2V0LmVxdWFsc0lnbm9yZUNhc2UoInV0Zi04IikgfHwKLSAgICAgICAgICAgICAgY2hhcnNldC5lcXVhbHNJZ25vcmVDYXNlKCJ1dGYtMTYiKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gTG9va2luZyBhdCB0aGUgbWVzc2FnZUNvbnRlbnQgZWxlbWVudCBvZiB0aGUgbG9nZ2VkIG1lc3NhZ2UsIGVpdGhlciAKLSAgICAgICAgICAgIC8vICgxKSBpdCBoYXMgYSBCT00gYXR0cmlidXRlIHdoaWNoIG1hcHMgdGhlIGNoYXJzZXQgdmFsdWUgaW4gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIsIG9yIAotICAgICAgICAgICAgaW50IGJvbSA9IDA7Ci0gICAgICAgICAgICBpZiAoKGJvbSA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRCT00oKSkgIT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKChib20gPT0gV1NJQ29uc3RhbnRzLkJPTV9VVEY4Ci0gICAgICAgICAgICAgICAgJiYgIWNoYXJzZXQuZXF1YWxzSWdub3JlQ2FzZSgidXRmLTgiKSkKLSAgICAgICAgICAgICAgICB8fCAoKGJvbSA9PSBXU0lDb25zdGFudHMuQk9NX1VURjE2Ci0gICAgICAgICAgICAgICAgICAmJiAhY2hhcnNldC5lcXVhbHNJZ25vcmVDYXNlKCJ1dGYtMTYiKSkpCi0gICAgICAgICAgICAgICAgfHwgKChib20gPT0gV1NJQ29uc3RhbnRzLkJPTV9VVEYxNl9CSUdfRU5ESUFOCi0gICAgICAgICAgICAgICAgICAmJiAhY2hhcnNldC5lcXVhbHNJZ25vcmVDYXNlKCJ1dGYtMTYiKSkpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBCT00gKCIgKyBib20gKyAKLSAgICAgICAgICAgICAgICAgICAgIikgYW5kIGNoYXJzZXQgdmFsdWUgKCIgKyBjaGFyc2V0ICsgIilkbyBub3QgbWF0Y2guIik7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vICgyKSBpdCBoYXMgYW4gWE1MIGRlY2xhcmF0aW9uIHdoaWNoIG1hdGNoZXMgdGhlIGNoYXJzZXQgdmFsdWUgaW4gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIsIG9yIAotICAgICAgICAgICAgZWxzZSBpZiAoKCh4bWxFbmNvZGluZyA9IAotICAgICAgICAgICAgICBVdGlscy5nZXRYTUxFbmNvZGluZyhwYXJ0LmdldENvbnRlbnQoKSkpICE9IG51bGwpICYmCi0gICAgICAgICAgICAgICF4bWxFbmNvZGluZy5lcXVhbHMoIiIpKSAgCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmKCF4bWxFbmNvZGluZy5lcXVhbHNJZ25vcmVDYXNlKGNoYXJzZXQpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBYTUwgZGVjbGFyYXRpb24gZW5jb2RpbmcgKCIgKyAKLSAgICAgICAgICAgICAgICAgICAgeG1sRW5jb2RpbmcgKyAiKSBhbmQgY2hhcnNldCB2YWx1ZSAoIiArIGNoYXJzZXQgKyAKLSAgICAgICAgICAgICAgICAgICAgIikgZG8gbm90IG1hdGNoLiIpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vICgzKSB0aGVyZSBpcyBubyBCT00gYXR0cmlidXRlIGFuZCBubyBYTUwgZGVjbGFyYXRpb24sIGFuZCB0aGUgY2hhcnNldCB2YWx1ZSBpcyBVVEYtOC4KLSAgICAgICAgICAgIGVsc2UgaWYoIWNoYXJzZXQuZXF1YWxzSWdub3JlQ2FzZSgidXRmLTgiKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBubyBCT00gYXR0cmlidXRlIGFuZCBubyBYTUwgIisKLSAgICAgICAgICAgICAgICAgICJkZWNsYXJhdGlvbiwgYW5kIHRoZSBjaGFyc2V0IHZhbHVlIGlzICgiICsgY2hhcnNldCArICIpIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vIGhlYWRlciBkbyBub3QgZm91bmQgb3IgaW5jb3JyZWN0IGNoYXJzZXQgdmFsdWUKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJFaXRoZXIgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgaXMgbm90ICIrCi0gICAgICAgICAgICAgICAgInByZXNlbnQgaW4gdGhlIFJvb3QgUGFydCBvciBhIGNoYXJzZXQgdmFsdWUgaXMgaW52YWxpZC4iKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkgCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTE3LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTE3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMmQwZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkxNy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBVdGlsczsKLQotLyoqCi0gKiBBUDE5MTcKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgbWVzc2FnZSBjb250YWluaW5nIHplcm8gYXR0YWNobWVudCBwYXJ0czwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5BIG1lc3NhZ2UgY29udGFpbmluZyB6ZXJvIGF0dGFjaG1lbnQgcGFydHMgaXMgc2VudAotICogdXNpbmcgYSBjb250ZW50LXR5cGUgb2YgZWl0aGVyICJ0ZXh0L3htbCIgYXMgdGhvdWdoIGEgU09BUCBIVFRQIGJpbmRpbmcgd2VyZQotICogdXNlZCBvciAibXVsdGlwYXJ0L3JlbGF0ZWQiIHdoZW4gdGhlIFdTREwgZGVzY3JpcHRpb24gZm9yIHRoZSBtZXNzYWdlCi0gKiBzcGVjaWZpZXMgdGhlIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50IG9uIHRoZSBjb3JyZXNwb25kaW5nIHdzZGw6aW5wdXQKLSAqIG9yIHdzZGw6b3V0cHV0IGVsZW1lbnQgaW4gaXRzIHdzZGw6YmluZGluZy48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAxOTE3IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQVAxOTE3KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIG5vdCBhcHBsaWNhYmxlIGlmIHRoZXJlIGFyZSBhdHRhY2htZW50cwotICAgICAgaWYgKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0gICAgICB7Ci0gICAgICAgIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWltZVBhcnRzKCkuY291bnQoKSA+IDEpCi0gICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRPcGVyYXRpb25NYXRjaCgKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeVR5cGUoKSwKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKSk7Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgb3BlcmF0aW9uLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoYmluZGluZ09wZXJhdGlvbiA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBGaW5kaW5nIG9wZXJhdGlvbiBleHRlbnNpYmlsaXR5IGVsZW1zCi0gICAgICAvLyBpbiB0aGUgYmluZGluZyBkZXBlbmRpbmcgb24gbWVzc2FnZSB0eXBlCi0gICAgICBMaXN0IGV4dEVsZW1zID0gbnVsbDsKLSAgICAgIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpLmVxdWFscygKLSAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVRVUVTVCkKLSAgICAgICAgJiYgYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBleHRFbGVtcyA9IGJpbmRpbmdPcGVyYXRpb24KLSAgICAgICAgICAuZ2V0QmluZGluZ0lucHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpLmVxdWFscygKLSAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVTUE9OU0UpCi0gICAgICAgICYmIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGV4dEVsZW1zID0gYmluZGluZ09wZXJhdGlvbgotICAgICAgICAgIC5nZXRCaW5kaW5nT3V0cHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIGNoZWNrIGxpc3QKLSAgICAgIGlmKChleHRFbGVtcyA9PSBudWxsKSB8fCAoZXh0RWxlbXMuc2l6ZSgpID09IDApKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotICAgICAgCi0gICAgICAvLyBkZXRlcm1pbmUgdHlwZSAKLSAgICAgIGJvb2xlYW4gaXNNdWx0aVBhcnQgPSBmYWxzZTsKLSAgICAgIAotICAgICAgLy8gaWYgTUlNRU11bHRpcGFydFJlbGF0ZWQgdGhlbiBvbmx5IHJvb3QtcGFydCBhbGxvd2VkIAotICAgICAgaWYoZXh0RWxlbXMuZ2V0KDApIGluc3RhbmNlb2YgTUlNRU11bHRpcGFydFJlbGF0ZWQpCi0gICAgICB7Ci0gICAgICAgIGlmKCgoTUlNRU11bHRpcGFydFJlbGF0ZWQpIGV4dEVsZW1zLmdldCgwKSkuZ2V0TUlNRVBhcnRzKCkuc2l6ZSgpICE9IDEpIHsKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgICB9Ci0gICAgICAgIGlzTXVsdGlQYXJ0ID0gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIC8vIGVsc2UgaWYgbm90IHNvYXBiaW5kOmJvZHkgcm9vdCBlbGVtZW50Ci0gICAgICBlbHNlIGlmKCEoZXh0RWxlbXMuZ2V0KDApIGluc3RhbmNlb2YgU09BUEJvZHkpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICAvLyBnZXQgSFRUUCBjb250ZW50IHR5cGUKLSAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyQXR0cmlidXRlKAotICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpLAotICAgICAgICAgIEhUVFBDb25zdGFudHMuSEVBREVSX0NPTlRFTlRfVFlQRSk7Ci0gCi0gICAgICAvL2FsbG93ICJ0ZXh0L3htbCIgb3IgCi0gICAgICAvLygibXVsdGlwYXJ0L3JlbGF0ZWQiIGFuZCAibWltZTptdWx0aXBhcnRSZWxhdGVkIiBXU0RMIGJpbmRpbmdzKQotICAgICAgaWYoKGNvbnRlbnRUeXBlID09IG51bGwpIHx8IAotICAgICAgICAgKCFjb250ZW50VHlwZS5lcXVhbHNJZ25vcmVDYXNlKFdTSUNvbnN0YW50cy5DT05URU5UX1RZUEVfTVVMVElQQVJUKSAmJgotICAgICAgICAgIWNvbnRlbnRUeXBlLmVxdWFsc0lnbm9yZUNhc2UoV1NJQ29uc3RhbnRzLkNPTlRFTlRfVFlQRV9URVhUX1hNTCkpIHx8Ci0gICAgICAgICAoKGNvbnRlbnRUeXBlLmVxdWFsc0lnbm9yZUNhc2UoV1NJQ29uc3RhbnRzLkNPTlRFTlRfVFlQRV9NVUxUSVBBUlQpICYmIAotICAgICAgICAgICAgICFpc011bHRpUGFydCkpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGNvbnRlbnQtdHlwZSBoZWFkZXIgZmllbGQgICIgKwotICAgICAgICAgICAgInZhbHVlIFwiIiArIGNvbnRlbnRUeXBlICsgIlwiIGlzIGluY29ycmVjdCIpOwotICAgICAgfQotICAgIH0gCi0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IAotICAgICAgICB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTI1LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTI1LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMWEyYjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkyNS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NZXNzYWdlRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQVXRpbHM7Ci0KLS8qKgotICogQVAxOTI1Ci0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIG1lc3NhZ2U8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+SWYgdGhlIFdTREwgZGVzY3JpcHRpb24gbGlzdHMgYXQgbGVhc3Qgb25lIG5vbi1yb290Ci0gKiBNSU1FIHBhcnQsIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgbWVzc2FnZSBoYXMgYSBDb250ZW50LVR5cGUgSFRUUCBoZWFkZXIKLSAqIGZpZWxkLXZhbHVlIHdpdGggYSBtZWRpYS10eXBlIG9mICJtdWx0aXBhcnQvcmVsYXRlZC48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAxOTI1IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQVAxOTI1KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRPcGVyYXRpb25NYXRjaCgKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeVR5cGUoKSwKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKSk7Ci0gIAotICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbWF0Y2hlZCBvcGVyYXRpb24sIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmIChiaW5kaW5nT3BlcmF0aW9uID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gIAotICAgICAgLy8gRmluZGluZyBvcGVyYXRpb24gZXh0ZW5zaWJpbGl0eSBlbGVtcwotICAgICAgLy8gaW4gdGhlIGJpbmRpbmcgZGVwZW5kaW5nIG9uIG1lc3NhZ2UgdHlwZQotICAgICAgTGlzdCBleHRFbGVtcyA9IG51bGw7Ci0gICAgICBpZiAoZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldFR5cGUoKS5lcXVhbHMoCi0gICAgICAgIE1lc3NhZ2VFbnRyeS5UWVBFX1JFUVVFU1QpCi0gICAgICAgICYmIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZXh0RWxlbXMgPSBiaW5kaW5nT3BlcmF0aW9uCi0gICAgICAgICAgLmdldEJpbmRpbmdJbnB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldFR5cGUoKS5lcXVhbHMoCi0gICAgICAgIE1lc3NhZ2VFbnRyeS5UWVBFX1JFU1BPTlNFKQotICAgICAgICAmJiBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdPdXRwdXQoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBleHRFbGVtcyA9IGJpbmRpbmdPcGVyYXRpb24KLSAgICAgICAgICAuZ2V0QmluZGluZ091dHB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgfQotICAgICAgLy8gY2hlY2sgbGlzdCBvbiBmaXJzdCBlbGVtZW50Ci0gICAgICBpZigoZXh0RWxlbXMgPT0gbnVsbCkgfHwgKGV4dEVsZW1zLnNpemUoKSA9PSAwKSB8fCAKLSAgICAgICAgICEoZXh0RWxlbXMuZ2V0KDApIGluc3RhbmNlb2YgTUlNRU11bHRpcGFydFJlbGF0ZWQpKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgCi0gICAgICAvLyBnZXQgbGlzdCBtaW1lIHBhcnRzIGZyb20gZGVmaW5pdGlvbgotICAgICAgTUlNRU11bHRpcGFydFJlbGF0ZWQgbWltZSA9IChNSU1FTXVsdGlwYXJ0UmVsYXRlZCkgZXh0RWxlbXMuZ2V0KDApOwotICAgICAgTGlzdCBwYXJ0cyA9IG1pbWUuZ2V0TUlNRVBhcnRzKCk7Ci0gICAgICAvLyBpZiBwYXJ0cyBjb3VudCBpcyBtb3JlIHRoYW4gb25lLCB0aGFuIGFzc2VydGlvbiBpcyBub3RBcHBsaWNhYmxlCi0gICAgICBpZihwYXJ0cy5zaXplKCkgPD0gMSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyQXR0cmlidXRlKAotICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpLAotICAgICAgICAgIEhUVFBDb25zdGFudHMuSEVBREVSX0NPTlRFTlRfVFlQRSk7IAotICAgICAgaWYoKGNvbnRlbnRUeXBlID09IG51bGwpIHx8IAotICAgICAgICAgIWNvbnRlbnRUeXBlLmVxdWFsc0lnbm9yZUNhc2UoV1NJQ29uc3RhbnRzLkNPTlRFTlRfVFlQRV9NVUxUSVBBUlQpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiSW5jb3JyZWN0IENvbnRlbnQtVHlwZSB2YWx1ZSBcIiIgKwotICAgICAgICAgICAgY29udGVudFR5cGUgKyAiXCIgaW4gSFRUUCBoZWFkZXIiKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IAotICAgICAgICB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcGFydCB2YWx1ZSBmcm9tIE1JTUVDb250ZW50IGVsZW1lbnQKLSAgICogQHBhcmFtIHBhcnQgTUlNRVBhcnQgZWxlbWVudAotICAgKiBAcmV0dXJuIHRoZSBwYXJ0IHZhbHVlIGZyb20gTUlNRUNvbnRlbnQgZWxlbWVudAotICAgKi8KLSAgLy9wcml2YXRlIFN0cmluZyBnZXRNSU1FQ29udGVudFBhcnQoTUlNRVBhcnQgcGFydCkgewotICAvLyAgTGlzdCBsaXN0ID0gcGFydC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgLy8gIGlmKGxpc3Quc2l6ZSgpID09IDApCi0gIC8vICAgIHJldHVybiBudWxsOwotICAvLyAgcmV0dXJuICgoTUlNRUNvbnRlbnQpIGxpc3QuZ2V0KDApKS5nZXRQYXJ0KCk7Ci0gIC8vfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MjYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MjYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNmMjRlYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTI2LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NZXNzYWdlRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NaW1lUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1pbWVQYXJ0czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5NSU1FQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk1JTUVVdGlsczsKLQotLyoqCi0gKiBBUDE5MjYKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgbWVzc2FnZTwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5BIG1lc3NhZ2UgaW5jbHVkZXMgYWxsIG9mIHRoZSBNSU1FIHBhcnRzIGRlc2NyaWJlZCBieQotICogaXRzIFdTREwgTUlNRSBiaW5kaW5nLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBBUDE5MjYgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBBUDE5MjYoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgaWYoIWVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIC8vIGdldCBtZXNzYWdlIG1pbWUgcGFydHMKLSAgICAgIE1pbWVQYXJ0cyBtaW1lUGFydHMgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWltZVBhcnRzKCk7Ci0gICAgICAKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRPcGVyYXRpb25NYXRjaCgKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeVR5cGUoKSwKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKSk7Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgb3BlcmF0aW9uLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoYmluZGluZ09wZXJhdGlvbiA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBGaW5kaW5nIG9wZXJhdGlvbiBleHRlbnNpYmlsaXR5IGVsZW1zCi0gICAgICAvLyBpbiB0aGUgYmluZGluZyBkZXBlbmRpbmcgb24gbWVzc2FnZSB0eXBlCi0gICAgICBMaXN0IGV4dEVsZW1zID0gbnVsbDsKLSAgICAgIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpLmVxdWFscygKLSAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVRVUVTVCkKLSAgICAgICAgJiYgYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBleHRFbGVtcyA9IGJpbmRpbmdPcGVyYXRpb24KLSAgICAgICAgICAuZ2V0QmluZGluZ0lucHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpLmVxdWFscygKLSAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVTUE9OU0UpCi0gICAgICAgICYmIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGV4dEVsZW1zID0gYmluZGluZ09wZXJhdGlvbgotICAgICAgICAgIC5nZXRCaW5kaW5nT3V0cHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0gICAgICAvLyBjaGVjayBsaXN0IGZvciB0aGUgZmlyc3QgZWxlbWVudAotICAgICAgaWYoKGV4dEVsZW1zID09IG51bGwpIHx8IChleHRFbGVtcy5zaXplKCkgPT0gMCkgfHwgCi0gICAgICAgICAhKGV4dEVsZW1zLmdldCgwKSBpbnN0YW5jZW9mIE1JTUVNdWx0aXBhcnRSZWxhdGVkKSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIAotICAgICAgLy8gZ2V0IGxpc3QgbWltZSBwYXJ0cyBmcm9tIGRlZmluaXRpb24KLSAgICAgIE1JTUVNdWx0aXBhcnRSZWxhdGVkIG1pbWUgPSAoTUlNRU11bHRpcGFydFJlbGF0ZWQpIGV4dEVsZW1zLmdldCgwKTsKLSAgICAgIExpc3QgcGFydHMgPSBtaW1lLmdldE1JTUVQYXJ0cygpOwotCi0gICAgICBpZihtaW1lUGFydHMuZ2V0Um9vdFBhcnQoKSA9PSBudWxsIHx8IG1pbWVQYXJ0cy5jb3VudCgpPT0wKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgLy8gc2tpcCByb290IHBhcnQKLSAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgcGFydHMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBwYXJ0TmFtZSA9IGdldE1JTUVDb250ZW50UGFydCgoTUlNRVBhcnQpIHBhcnRzLmdldChpKSk7Ci0gICAgICAgIC8vIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgTUlNRSBwYXJ0Ci0gICAgICAgIGlmIChmaW5kTUlNRVBhcnQobWltZVBhcnRzLmdldFBhcnRzKCksIHBhcnROYW1lKSA9PSBudWxsKSAKLSAgICAgICAgeyAgICAgICAgICAgIAotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgY29ycmVzcG9uZGluZyBiaW5kaW5nICIgKwotICAgICAgICAgICAgICAib3BlcmF0aW9uIFwiIiArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpICsgCi0gICAgICAgICAgICAgICJcIiBkb2VzIG5vdCBjb250YWluIHBhcnQgXCIiICsgcGFydE5hbWUgKyAiXCIiKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gCi0gICAgICAgIHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICAKLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBmaW5kIGNvcnJlc3BvbmRpbmcgTUlNRSBwYXJ0Ci0gICAqIEBwYXJhbSBwYXJ0cyBhcnJheSBvZiBzb2FwIE1JTUUgcGFydHMKLSAgICogQHBhcmFtIHBhcnROYW1lIHBhcnQgbmFtZSB0byBmaW5kCi0gICAqIEByZXR1cm4gY29ycmVzcG9uZGluZyBNSU1FIHBhcnQgIkNvbnRlbnQtSUQiIHZhbHVlLCAKLSAgICogaWYgdGhlIHBhcnQgZG9lc250IGZvdW5kLCByZXR1bnMgbnVsbAotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZmluZE1JTUVQYXJ0KENvbGxlY3Rpb24gcGFydHMsIFN0cmluZyBwYXJ0TmFtZSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBpZihwYXJ0TmFtZSA9PSBudWxsKQotICAgICAgIHJldHVybiBudWxsOwotICAgIEl0ZXJhdG9yIGlwYXJ0cyA9IHBhcnRzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGlwYXJ0cy5oYXNOZXh0KCkpCi0gICAgewotICAgICAgTWltZVBhcnQgcGFydCA9IChNaW1lUGFydClpcGFydHMubmV4dCgpOwotICAgICAgU3RyaW5nIG1fcGFydE5hbWUgPSBNSU1FVXRpbHMuZ2V0TWltZUhlYWRlckF0dHJpYnV0ZSgKLSAgICAgICAgICBwYXJ0LmdldEhlYWRlcnMoKSwgTUlNRUNvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9JRCk7Ci0KLSAgICAgIC8vIGNoZWNrIHZhbHVlIGZvcm1hdCA8cGFydG5hbWU9VUlEQGhvc3Q+Ci0gICAgICBpZiAoKG1fcGFydE5hbWUgIT0gbnVsbCkgJiYgKG1fcGFydE5hbWUuc3RhcnRzV2l0aCgiPCIpKSAmJiAKLSAgICAgICAgICAobV9wYXJ0TmFtZS5pbmRleE9mKCI9IikgIT0gLTEpICYmIAotICAgICAgICAgIChlbmNvZGVQYXJ0TmFtZShtX3BhcnROYW1lLnN1YnN0cmluZygxLCBtX3BhcnROYW1lLmluZGV4T2YoIj0iKSkpLmVxdWFscyhwYXJ0TmFtZSkpKQotICAgICAgewotICAgICAgICByZXR1cm4gbV9wYXJ0TmFtZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcGFydCB2YWx1ZSBmcm9tIE1JTUVDb250ZW50IGVsZW1lbnQKLSAgICogQHBhcmFtIHBhcnQgTUlNRVBhcnQgZWxlbWVudAotICAgKiBAcmV0dXJuIHRoZSBwYXJ0IHZhbHVlIGZyb20gTUlNRUNvbnRlbnQgZWxlbWVudAotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0TUlNRUNvbnRlbnRQYXJ0KE1JTUVQYXJ0IHBhcnQpIHsKLSAgICBMaXN0IGxpc3QgPSBwYXJ0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIGlmKGxpc3Quc2l6ZSgpID09IDApCi0gICAgICByZXR1cm4gbnVsbDsKLSAgICByZXR1cm4gKChNSU1FQ29udGVudCkgbGlzdC5nZXQoMCkpLmdldFBhcnQoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEVuY29kZSBzdHJpbmcgZnJvbSAlSEggdG8gVVRGCi0gICAqIEBwYXJhbSBzdHIgc3RyaW5nCi0gICAqIEByZXR1cm4gZW5jb2RlZCBzdHJpbmcgZnJvbSAlSEggZm9ybWF0Ci0gICAqLwotICBwcml2YXRlIFN0cmluZyBlbmNvZGVQYXJ0TmFtZShTdHJpbmcgc3RyKSB7Ci0gICAgU3RyaW5nQnVmZmVyIHJlcyA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyBpKyspCi0gICAgewotICAgICAgaWYoKHN0ci5jaGFyQXQoaSkgPT0gJyUnKSAmJiAoc3RyLmxlbmd0aCgpID4gaSsyKSkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBpbnQgdmFsdWUgPSBJbnRlZ2VyLnBhcnNlSW50KAotICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihzdHIuY2hhckF0KGkrMSkpICsKLSAgICAgICAgICAgICAgU3RyaW5nLnZhbHVlT2Yoc3RyLmNoYXJBdChpKzIpKSwgMTYpOwotICAgICAgICAgIHJlcy5hcHBlbmQoKGNoYXIpIHZhbHVlKTsKLSAgICAgICAgICBpICs9MjsKLSAgICAgICAgfQotICAgICAgICBjYXRjaChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSl7fQotICAgICAgfSAKLSAgICAgIGVsc2UgCi0gICAgICB7Ci0gICAgICAgIHJlcy5hcHBlbmQoc3RyLmNoYXJBdChpKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXMudG9TdHJpbmcoKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MzEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MzEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFjZGZjOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTMxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotLyoqCi0gKiBBUDE5MzEKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgcm9vdC1wYXJ0IG9mIGEgbXVsdGlwYXJ0L3JlbGF0ZWQgbWVzc2FnZTwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgZW50aXR5IGJvZHkgb2YgdGhlIHJvb3QtcGFydCBvZiBtdWx0aXBhcnQvcmVsYXRlZAotICogbWVzc2FnZSBpcyBhIHNvYXA6RW52ZWxvcGUuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMTkzMSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMTkzMShCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBjaGVjayBmb3IgdGhlIHJvb3QgcGFydAotICAgIGlmKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkgJiYKLSAgICAgICAoZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1pbWVQYXJ0cygpLmdldFJvb3RQYXJ0KCkgIT0gbnVsbCkpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAvLyBwYXJzZSByb290IHBhcnQgbWVzc2FnZQotICAgICAgRG9jdW1lbnQgZG9jID0gWE1MVXRpbHMucGFyc2VYTUwoCi0gICAgICAgICAgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1pbWVQYXJ0cygpLmdldFJvb3RQYXJ0KCkuZ2V0Q29udGVudCgpKTsKLSAgICAgIAotICAgICAgLy8gZ2V0IGVudGl0eSBib2R5Ci0gICAgICBFbGVtZW50IGVsID0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpOwotICAgICAgCi0gICAgICAvLyBpZiB0aGUgZWxlbWVudCBpcyBub3Qgc29hcDpFbnZlbG9wZSwgdGhlbiBmYWlsICAKLSAgICAgIGlmKCFlbC5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoV1NJVGFnLkVMRU1fU09BUF9FTlZFTE9QRS5nZXRMb2NhbFBhcnQoKSkgfHwKLSAgICAgICAgICFlbC5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoV1NJVGFnLkVMRU1fU09BUF9FTlZFTE9QRS5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAidGhlIGVudGl0eSBib2R5IG9mIHRoZSByb290IHBhcnQgaXMgeyIgKwotICAgICAgICAgICAgZWwuZ2V0TmFtZXNwYWNlVVJJKCkgKyAifSIgKyBlbC5nZXRMb2NhbE5hbWUoKSwgZW50cnlDb250ZXh0KTsKLSAgICAgIH0KLSAgICAgIH0gCi0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAidGhlIGVudGl0eSBib2R5IG9mIHRoZSByb290IHBhcnQgZG9lcyBub3QgY29udGFpbiAiICsKLSAgICAgICAgICAgICJcInNvYXA6RW52ZWxvcGVcIiBlbGVtZW50IiwgZW50cnlDb250ZXh0KTsKLSAgICAgIH0KLSAgICB9IAotICAgIGVsc2UgCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTMyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTMyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YzBmYzcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkzMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBVdGlsczsKLQotLyoqCi0gKiBBUDE5MzIKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgbWVzc2FnZSBjb250YWluaW5nIGEgQ29udGVudC1UeXBlIEhUVFAgaGVhZGVyCi0gKiBmaWVsZC12YWx1ZSB3aXRoIGEgbWVkaWEgdHlwZSBvZiAibXVsdGlwYXJ0L3JlbGF0ZWQiPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkluIGEgbWVzc2FnZSwgdGhlIENvbnRlbnQtVHlwZSBIVFRQIGhlYWRlciBmaWVsZC12YWx1ZQotICogaGFzIGEgdHlwZSBwYXJhbWV0ZXIgd2l0aCBhIHZhbHVlIG9mICJ0ZXh0L3htbCIgd2hlbiBpdCBoYXMgYSBtZWRpYSB0eXBlIG9mCi0gKiAibXVsdGlwYXJ0L3JlbGF0ZWQiLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBBUDE5MzIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBBUDE5MzIoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gY2hlY2sgZm9yIG11bHRpcGFydC9yZWxhdGVkIGNvbnRlbnQgdHlwZQotICAgIFN0cmluZyBjb250ZW50X3R5cGUgPSBIVFRQVXRpbHMuZ2V0SHR0cEhlYWRlckF0dHJpYnV0ZSgKLSAgICAgICAgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCksIAotICAgICAgICBIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEUpOwotICAgIAotICAgIGlmKChjb250ZW50X3R5cGUgPT0gbnVsbCkgfHwgCi0gICAgICAgKCFjb250ZW50X3R5cGUuZXF1YWxzSWdub3JlQ2FzZShXU0lDb25zdGFudHMuQ09OVEVOVF9UWVBFX01VTFRJUEFSVCkpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfSAKLSAgICBlbHNlICAKLSAgICB7Ci0gICAgICBTdHJpbmcgc3ViVHlwZSA9IEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyU3ViQXR0cmlidXRlKAotICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpLCAKLSAgICAgICAgICBIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEUsICJ0eXBlIik7Ci0gICAgICBpZigoc3ViVHlwZSA9PSBudWxsKQotICAgICAgICB8fCAhc3ViVHlwZS5lcXVhbHNJZ25vcmVDYXNlKFdTSUNvbnN0YW50cy5DT05URU5UX1RZUEVfVEVYVF9YTUwpKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgICAgIlRoZSBcInR5cGVcIiBwYXJhbWV0ZXIgdmFsdWUgaXMgXCIiICsgc3ViVHlwZSArICJcIiIsIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkzMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkzMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDQ5MWZiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MzMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI1NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NaW1lUGFydHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuTUlNRUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5NSU1FVXRpbHM7Ci0KLS8qKgotICogQVAxOTMzCi0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIG1lc3NhZ2U8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+SWYgYSBkZXNjcmlwdGlvbiBiaW5kcyBhIHdzZGw6bWVzc2FnZSBwYXJ0IHRvIGEKLSAqIG1pbWU6Y29udGVudCBlbGVtZW50LCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIE1JTUUgcGFydCBpbiBhIG1lc3NhZ2UgaGFzIGEKLSAqIGNvbnRlbnQtaWQgaGVhZGVyIHdpdGggYSBnbG9iYWxseSB1bmlxdWUgdmFsdWUgb2YgdGhlIGZvcm0KLSAqICZsdDtwYXJ0bmFtZT1JREBob3N0bmFtZSZndDssIHdoZXJlICdwYXJ0bmFtZScgaXMgdGhlIHZhbHVlIG9mIHRoZSBuYW1lIGF0dHJpYnV0ZSBvZgotICogdGhlIHdzZGw6cGFydCBlbGVtZW50IHJlZmVyZW5jZWQgYnkgdGhlIG1pbWU6Y29udGVudC48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAxOTMzIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQVAxOTMzKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgdHJ5Ci0gICAgewotICAgICAgaWYoIWVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIC8vIGdldCBtZXNzYWdlIG1pbWUgcGFydHMKLSAgICAgIE1pbWVQYXJ0cyBtaW1lUGFydHMgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWltZVBhcnRzKCk7Ci0gICAgICAKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IHZhbGlkYXRvci5nZXRPcGVyYXRpb25NYXRjaCgKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeVR5cGUoKSwKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKSk7Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgb3BlcmF0aW9uLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoYmluZGluZ09wZXJhdGlvbiA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotCi0gICAgICAvLyBGaW5kaW5nIG9wZXJhdGlvbiBleHRlbnNpYmlsaXR5IGVsZW1zCi0gICAgICAvLyBpbiB0aGUgYmluZGluZyBkZXBlbmRpbmcgb24gbWVzc2FnZSB0eXBlCi0gICAgICBMaXN0IGV4dEVsZW1zID0gbnVsbDsKLSAgICAgIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpLmVxdWFscygKLSAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVRVUVTVCkKLSAgICAgICAgJiYgYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICBleHRFbGVtcyA9IGJpbmRpbmdPcGVyYXRpb24KLSAgICAgICAgICAuZ2V0QmluZGluZ0lucHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0VHlwZSgpLmVxdWFscygKLSAgICAgICAgTWVzc2FnZUVudHJ5LlRZUEVfUkVTUE9OU0UpCi0gICAgICAgICYmIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGV4dEVsZW1zID0gYmluZGluZ09wZXJhdGlvbgotICAgICAgICAgIC5nZXRCaW5kaW5nT3V0cHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0gICAgICAvLyBjaGVjayBsaXN0IGZvciB0aGUgZmlyc3QgZWxlbWVudAotICAgICAgaWYoKGV4dEVsZW1zID09IG51bGwpIHx8IChleHRFbGVtcy5zaXplKCkgPT0gMCkgfHwgCi0gICAgICAgICAhKGV4dEVsZW1zLmdldCgwKSBpbnN0YW5jZW9mIE1JTUVNdWx0aXBhcnRSZWxhdGVkKSkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIAotICAgICAgLy8gZ2V0IGxpc3QgbWltZSBwYXJ0cyBmcm9tIGRlZmluaXRpb24KLSAgICAgIE1JTUVNdWx0aXBhcnRSZWxhdGVkIG1pbWUgPSAoTUlNRU11bHRpcGFydFJlbGF0ZWQpIGV4dEVsZW1zLmdldCgwKTsKLSAgICAgIExpc3QgcGFydHMgPSBtaW1lLmdldE1JTUVQYXJ0cygpOwotICAgICAgCi0gICAgICAvLyBza2lwIHJvb3QgcGFydAotICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBwYXJ0cy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHBhcnROYW1lID0gZ2V0TUlNRUNvbnRlbnRQYXJ0KChNSU1FUGFydCkgcGFydHMuZ2V0KGkpKTsKLSAgICAgICAgLy8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBNSU1FIHBhcnQKLSAgICAgICAgaWYgKGZpbmRNSU1FUGFydChtaW1lUGFydHMuZ2V0UGFydHMoKSwgcGFydE5hbWUpID09IG51bGwpIAotICAgICAgICB7ICAgICAgICAgICAgCi0gICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBjb3JyZXNwb25kaW5nIGJpbmRpbmcgIiArCi0gICAgICAgICAgICAgICJvcGVyYXRpb24gXCIiICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAKLSAgICAgICAgICAgICAgIlwiIGRvZXMgbm90IGNvbnRhaW4gcGFydCBcIiIgKyBwYXJ0TmFtZSArICJcIiIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSAKLSAgICAgICAgdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0gIAotICAvKioKLSAgICogZmluZCBjb3JyZXNwb25kaW5nIE1JTUUgcGFydAotICAgKiBAcGFyYW0gcGFydHMgYXJyYXkgb2Ygc29hcCBNSU1FIHBhcnRzCi0gICAqIEBwYXJhbSBwYXJ0TmFtZSBwYXJ0IG5hbWUgdG8gZmluZAotICAgKiBAcmV0dXJuIGNvcnJlc3BvbmRpbmcgTUlNRSBwYXJ0ICJDb250ZW50LUlEIiB2YWx1ZSwgCi0gICAqIGlmIHRoZSBwYXJ0IGRvZXNudCBmb3VuZCwgcmV0dW5zIG51bGwKLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24KLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIGZpbmRNSU1FUGFydChDb2xsZWN0aW9uIHBhcnRzLCBTdHJpbmcgcGFydE5hbWUpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbiwgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbgotICB7Ci0gICAgaWYocGFydE5hbWUgPT0gbnVsbCkKLSAgICAgICByZXR1cm4gbnVsbDsKLSAgICAKLSAgICBJdGVyYXRvciBpcGFydHMgPSBwYXJ0cy5pdGVyYXRvcigpOwotICAgIGludCBpID0gMDsKLSAgICB3aGlsZSAoaXBhcnRzLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBpID0gaSArIDE7Ci0gICAgICBNaW1lUGFydCBwYXJ0ID0gKE1pbWVQYXJ0KWlwYXJ0cy5uZXh0KCk7Ci0gICAgICBTdHJpbmcgbV9wYXJ0TmFtZSA9IE1JTUVVdGlscy5nZXRNaW1lSGVhZGVyQXR0cmlidXRlKAotICAgICAgICAgIHBhcnQuZ2V0SGVhZGVycygpLCBNSU1FQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX0lEKTsKLQotICAgICAgLy8gY2hlY2sgdmFsdWUgZm9ybWF0IDxwYXJ0bmFtZT1VSURAaG9zdG5hbWU+Ci0gICAgICBpZiAoKG1fcGFydE5hbWUgIT0gbnVsbCkgJiYgbV9wYXJ0TmFtZS5zdGFydHNXaXRoKCI8IikgJiYgbV9wYXJ0TmFtZS5lbmRzV2l0aCgiPiIpKSAKLSAgICAgIHsKLSAgICAgICAgaW50IGlkeCwgYXRJZHg7Ci0gICAgICAgIFN0cmluZyBlblBhcnROYW1lID0gbnVsbDsKLSAgICAgICAgU3RyaW5nIHVpZCA9IG51bGw7Ci0gICAgICAgIFN0cmluZyBob3N0ID0gbnVsbDsKLSAgICAgICAgCi0gICAgICAgIC8vIGdldCBwYXJ0IG5hbWUgZnJvbSBjb250ZW50LWlkCi0gICAgICAgIGlmICgoaWR4ID0gbV9wYXJ0TmFtZS5pbmRleE9mKCI9IikpICE9IC0xKSAKLSAgICAgICAgewotICAgICAgICAgIGVuUGFydE5hbWUgPSBlbmNvZGVQYXJ0TmFtZShtX3BhcnROYW1lLnN1YnN0cmluZygxLCBpZHgpKTsgCi0gICAgICAgIH0KLSAgICAgICAgLy8gZ2V0IHVpZCBhbmQgaG9zdG5hbWUgZnJvbSBjb250ZW50LWlkCi0gICAgICAgIGlmICgoKGF0SWR4ID0gbV9wYXJ0TmFtZS5pbmRleE9mKCJAIikpICE9IC0xKSAmJiAoYXRJZHggPiBpZHgpKSAKLSAgICAgICAgewotICAgICAgICAgIHVpZCA9IG1fcGFydE5hbWUuc3Vic3RyaW5nKGlkeCsxLCBhdElkeCk7Ci0gICAgICAgICAgaG9zdCA9IG1fcGFydE5hbWUuc3Vic3RyaW5nKGF0SWR4KzEsIG1fcGFydE5hbWUubGVuZ3RoKCktMSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gaWYgcGFydCBuYW1lcyBtYXRjaCwgdmFsaWRhdGUgZm9ybWF0Ci0gICAgICAgIGlmKChlblBhcnROYW1lICE9IG51bGwpICYmIGVuUGFydE5hbWUuZXF1YWxzKHBhcnROYW1lKSkKLSAgICAgICAgewotICAgICAgICAgIGlmKCh1aWQgPT0gbnVsbCkgfHwgKHVpZC5sZW5ndGgoKSA9PSAwKSkKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICJUaGUgXCJDb250ZW50LUlEXCIgYXR0cmlidXRlIG9mIHRoZSBwYXJ0IFwiIisoaSsxKSsKLSAgICAgICAgICAgICAgICAiXCJjb250YWlucyB2YWx1ZSBcIiIrIG1fcGFydE5hbWUrCi0gICAgICAgICAgICAgICAgIlwiIHdoaWNoIGhhcyBhIGluY29ycmVjdCBVSUQgZm9ybWF0Iik7Ci0gICAgICAgICAgaWYoaG9zdCA9PSBudWxsKSAKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICJUaGUgXCJDb250ZW50LUlEXCIgYXR0cmlidXRlIG9mIHRoZSBwYXJ0IFwiIisoaSsxKSsKLSAgICAgICAgICAgICAgICAiXCJjb250YWlucyB2YWx1ZSBcIiIrIG1fcGFydE5hbWUrCi0gICAgICAgICAgICAgICAgIlwiIHdoaWNoIGhhcyBhIGluY29ycmVjdCBob3N0IGZvcm1hdCIpOwotICAgICAgICAgIC8vIGNoZWNrIGZvciBtYWxmb3JtZWQgVVJMCi0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgbmV3IFVSTCgiSFRUUCIsIGhvc3QsICIiKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICJUaGUgXCJDb250ZW50LUlEXCIgYXR0cmlidXRlIG9mIHRoZSBwYXJ0IFwiIisoaSsxKSsKLSAgICAgICAgICAgICAgICAiXCJjb250YWlucyB2YWx1ZSBcIiIrIG1fcGFydE5hbWUrCi0gICAgICAgICAgICAgICAgIlwiIHdoaWNoIGhhcyBhIGluY29ycmVjdCBob3N0IGZvcm1hdCIpOwotICAgICAgICAgIH0KLSAgICAgICAgICByZXR1cm4gbV9wYXJ0TmFtZTsKLSAgICAgICAgfSAKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBwYXJ0IHZhbHVlIGZyb20gTUlNRUNvbnRlbnQgZWxlbWVudAotICAgKiBAcGFyYW0gcGFydCBNSU1FUGFydCBlbGVtZW50Ci0gICAqIEByZXR1cm4gdGhlIHBhcnQgdmFsdWUgZnJvbSBNSU1FQ29udGVudCBlbGVtZW50Ci0gICAqLwotICBwcml2YXRlIFN0cmluZyBnZXRNSU1FQ29udGVudFBhcnQoTUlNRVBhcnQgcGFydCkgCi0gIHsKLSAgICBMaXN0IGxpc3QgPSBwYXJ0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIGlmKGxpc3Quc2l6ZSgpID09IDApCi0gICAgICByZXR1cm4gbnVsbDsKLSAgICByZXR1cm4gKChNSU1FQ29udGVudCkgbGlzdC5nZXQoMCkpLmdldFBhcnQoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEVuY29kZSBzdHJpbmcgZnJvbSAlSEggdG8gVVRGCi0gICAqIEBwYXJhbSBzdHIgc3RyaW5nCi0gICAqIEByZXR1cm4gZW5jb2RlZCBzdHJpbmcgZnJvbSAlSEggZm9ybWF0Ci0gICAqLwotICBwcml2YXRlIFN0cmluZyBlbmNvZGVQYXJ0TmFtZShTdHJpbmcgc3RyKSB7Ci0gICAgU3RyaW5nQnVmZmVyIHJlcyA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyBpKyspCi0gICAgewotICAgICAgaWYoKHN0ci5jaGFyQXQoaSkgPT0gJyUnKSAmJiAoc3RyLmxlbmd0aCgpID4gaSsyKSkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBpbnQgdmFsdWUgPSBJbnRlZ2VyLnBhcnNlSW50KAotICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihzdHIuY2hhckF0KGkrMSkpICsKLSAgICAgICAgICAgICAgU3RyaW5nLnZhbHVlT2Yoc3RyLmNoYXJBdChpKzIpKSwgMTYpOwotICAgICAgICAgIHJlcy5hcHBlbmQoKGNoYXIpIHZhbHVlKTsKLSAgICAgICAgICBpICs9MjsKLSAgICAgICAgfQotICAgICAgICBjYXRjaChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSl7fQotICAgICAgfSAKLSAgICAgIGVsc2UgCi0gICAgICB7Ci0gICAgICAgIHJlcy5hcHBlbmQoc3RyLmNoYXJBdChpKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXMudG9TdHJpbmcoKTsKLSAgfSAgCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkzNC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTkzNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzA2MDUxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MzQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1pbWVQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk1JTUVDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuTUlNRVV0aWxzOwotCi0vKioKLSAqIEFQMTkzNAotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBwYXJ0IG9mIGEgbXVsdGlwYXJ0L3JlbGF0ZWQgbWVzc2FnZTwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBmaWVsZCBvZiBhIHBhcnQgaW4gYQotICogbXVsdGlwYXJ0L3JlbGF0ZWQgbWVzc2FnZSBoYXMgYSB2YWx1ZSBvZiAiN2JpdCIsICI4Yml0IiwgImJpbmFyeSIsCi0gKiAicXVvdGVkLXByaW50YWJsZSIgb3IgImJhc2U2NCIuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMTkzNCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMTkzNChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBjaGVjayBmb3IgbXVsdGlwYXJ0L3JlbGF0ZWQgY29udGVudCB0eXBlCi0gICAgaWYoIWVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9IAotICAgIGVsc2UgCi0gICAgewotICAgICAgLy8gZ2V0IE1JTUUgcGFydHMKLSAgICAgIE1pbWVQYXJ0cyBwYXJ0cyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNaW1lUGFydHMoKTsKLSAgICAgIGlmKHBhcnRzLmNvdW50KCkgPT0gMCkgCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAJSXRlcmF0b3IgaXBhcnRzID0gcGFydHMuZ2V0UGFydHMoKS5pdGVyYXRvcigpOwotICAgICAgICAvLyBjaGVjayBlYWNoIHBhcnQgZm9yIHRoZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIGZpZWxkCi0gICAgICAgIGludCBpID0gMDsKLSAgICAgICAgd2hpbGUgKGlwYXJ0cy5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBNaW1lUGFydCBwYXJ0ID0gKE1pbWVQYXJ0KWlwYXJ0cy5uZXh0KCk7Ci0gICAgICAgICAgU3RyaW5nIHR5cGVfdmFsdWUgPSBNSU1FVXRpbHMuZ2V0TWltZUhlYWRlckF0dHJpYnV0ZSgKLSAgICAgICAgICAgICAgcGFydC5nZXRIZWFkZXJzKCksCi0gICAgICAgICAgICAgIE1JTUVDb25zdGFudHMuSEVBREVSX0NPTlRFTlRfVFJBTlNGRVJfRU5DT0RJTkcpOwotICAgICAgICAgIGlmICh0eXBlX3ZhbHVlICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYoKHR5cGVfdmFsdWUgPT0gbnVsbCkgfHwgISh0eXBlX3ZhbHVlLmVxdWFsc0lnbm9yZUNhc2UoIjdiaXQiKSB8fAotICAgICAgICAgICAgICAgIHR5cGVfdmFsdWUuZXF1YWxzSWdub3JlQ2FzZSgiOGJpdCIpIHx8IAotICAgICAgICAgICAgICAgIHR5cGVfdmFsdWUuZXF1YWxzSWdub3JlQ2FzZSgiYmFzZTY0IikgfHwKLSAgICAgICAgICAgICAgICB0eXBlX3ZhbHVlLmVxdWFsc0lnbm9yZUNhc2UoInF1b3RlZC1wcmludGFibGUiKSB8fAotICAgICAgICAgICAgICAgIHR5cGVfdmFsdWUuZXF1YWxzSWdub3JlQ2FzZSgiYmluYXJ5IikpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgICAgICAgICAgIigiICsgKGkrMSkgKwotICAgICAgICAgICAgICAgICAgIiksIHBhcnQgaGVhZGVyIGZpZWxkIFwiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ1wiIGhhcyBpbmNvcnJlY3QgdmFsdWUgXCIiKwotICAgICAgICAgICAgICAgICAgdHlwZV92YWx1ZSsiXCIiLCBlbnRyeUNvbnRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpKys7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MzUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MzUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgyNTFmNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTM1LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1pbWVQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlV0aWxzOwotCi0vKioKLSAqIEFQMTkzNQotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBwYXJ0IG9mIGEgbXVsdGlwYXJ0L3JlbGF0ZWQgbWVzc2FnZTwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgZW5jb2Rpbmcgb2YgdGhlIGJvZHkgb2YgYSBwYXJ0IGluIGEKLSAqIG11bHRpcGFydC9yZWxhdGVkIG1lc3NhZ2UgY29uZm9ybXMgdG8gdGhlIGVuY29kaW5nIGluZGljYXRlZCBieSB0aGUKLSAqIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcgZmllbGQtdmFsdWUsCi0gKiBhcyBzcGVjaWZpZWQgYnkgUkZDMjA0NS48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAxOTM1IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQVAxOTM1KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIGlmKCFlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuaXNNaW1lQ29udGVudCgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfSAKLSAgICBlbHNlIAotICAgIHsKLSAgICAgIC8vIGdldCBNSU1FIHBhcnRzCi0gICAgICBNaW1lUGFydHMgcGFydHMgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWltZVBhcnRzKCk7Ci0gICAgICBpZihwYXJ0cy5jb3VudCgpID09IDApCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIGNoZWNrIGVhY2ggcGFydCBmb3IgdGhlIGVuY29kaW5nIG1hdGNoCi0gICAgICAJSXRlcmF0b3IgaXBhcnRzID0gcGFydHMuZ2V0UGFydHMoKS5pdGVyYXRvcigpOwotICAgICAgCWludCBpID0gMDsKLSAgICAgIAlNaW1lUGFydCByb290ID0gcGFydHMuZ2V0Um9vdFBhcnQoKTsKLSAgICAgICAgd2hpbGUgKGlwYXJ0cy5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpID0gMTsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgIAlNaW1lUGFydCBwYXJ0ID0gKE1pbWVQYXJ0KWlwYXJ0cy5uZXh0KCk7Ci0gICAgICAgIAkKLSAgICAgICAgICAgIC8vIGdldCBlbmNvZGluZyBmcm9tIGhlYWRlcgotICAgICAgICAgICAgU3RyaW5nIGVuY29kaW5nID0gIEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyQXR0cmlidXRlKHBhcnQuZ2V0SGVhZGVycygpLCAKLSAgICAgICAgICAgIAlIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RSQU5TRkVSX0VOQ09ESU5HKTsKLSAgICAgICAgICAKLSAgICAgICAgICAgCWlmICgocGFydCA9PSByb290KSB8fCAKLSAgICAgICAgICAgCQkoKGVuY29kaW5nICE9IG51bGwpICYmIGVuY29kaW5nLmVxdWFsc0lnbm9yZUNhc2UoImJhc2U2NCIpKSkKLSAgICAgICAgICAgICAgY2hlY2tQYXJ0KHBhcnQsIGVuY29kaW5nLCBmYWxzZSk7Ci0gICAgICAgICAgCWVsc2UgCi0gICAgICAgICAgCSAgY2hlY2tQYXJ0KHBhcnQsIGVuY29kaW5nLCB0cnVlKTsKLSAgICAgICAgICB9IGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAgICAgInBhcnQgIisoaSsxKSsiIEVycm9yOiAiICsgZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0gIC8qKgotICAgKiBDaGVjayBtZXNzYWdlIGVudHJ5IHRvIGVuY29kaW5nIGNvbmZvcm1pdHkgCi0gICAqIEBwYXJhbSBlbnRyeSBtZXNzYWdlIGVudHJ5Ci0gICAqIEB0aHJvd3MgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBpZiBtZXNzYWdlIGRvZXMgbm90IGVuY29kaW5nIGNvbmZvcm1pdHkgIAotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiAKLSAgICovCi0gIHByaXZhdGUgdm9pZCBjaGVja1BhcnQoTWltZVBhcnQgcGFydCwgU3RyaW5nICBlbmNvZGluZywgYm9vbGVhbiBlbmNvZGVkKSAKLSAgICB0aHJvd3MgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiwgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgY29udGVudCA9IG51bGw7Ci0gICAgaWYgKGVuY29kZWQpCi0gICAgICAgY29udGVudCA9IG5ldyBTdHJpbmcoVXRpbHMuZGVjb2RlQmFzZTY0KHBhcnQuZ2V0Q29udGVudCgpKSk7Ci0gICAgIGVsc2UKLSAgICAJY29udGVudCA9IHBhcnQuZ2V0Q29udGVudCgpOwotICAgIAotICAgIGlmKGVuY29kaW5nID09IG51bGwpIAotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgLy8gY2hlY2sgN2JpdAotICAgIH0gZWxzZSBpZihlbmNvZGluZy5lcXVhbHNJZ25vcmVDYXNlKCI3Yml0IikpIHsKLSAgICAgIGNoZWNrT243Yml0KGNvbnRlbnQpOwotICAgIC8vIGNoZWNrIDhiaXQKLSAgICB9IGVsc2UgaWYoZW5jb2RpbmcuZXF1YWxzSWdub3JlQ2FzZSgiOGJpdCIpKSB7Ci0gICAgICBjaGVja09uOGJpdChjb250ZW50KTsKLSAgICAvLyBjaGVjayBxdW90ZWQtcHJpbnRhYmxlCi0gICAgfSBlbHNlIGlmKGVuY29kaW5nLmVxdWFsc0lnbm9yZUNhc2UoInF1b3RlZC1wcmludGFibGUiKSkgewotICAgICAgY2hlY2tPblF1b3RlZFByaW50YWJsZShjb250ZW50KTsKLSAgICAvLyBjaGVjayBiYXNlNjQKLSAgICB9IGVsc2UgaWYoZW5jb2RpbmcuZXF1YWxzSWdub3JlQ2FzZSgiYmFzZTY0IikpIHsKLSAgICAgIGNoZWNrT25CYXNlNjQoY29udGVudCk7Ci0gICAgfQotICAgIC8vIHdlIGRvbnQgY2hlY2sgYmluYXJ5IGVuY29kaW5nLCBzaW5jZSBtZXNzYWdlIGNhbiBjb250YWlucyBhbnkgY2hhcnMgCi0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGUgYSA3Yml0IGVuY29kZWQgbWVzc2FnZSAoUkZDMjA0NSkKLSAgICogQHBhcmFtIG1lc3NhZ2UgbWVzc2FnZSB0byBjaGVjawotICAgKiBAdGhyb3dzIEFzc2VydGlvbkZhaWxFeGNlcHRpb24gaWYgbWVzc2FnZSBkb2VzIG5vdCBjb25mb3JtCi0gICAqLwotICBwcml2YXRlIHZvaWQgY2hlY2tPbjdiaXQoU3RyaW5nIG1lc3NhZ2UpIAotICAgIHRocm93cyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmdbXSBzdHJzID0gc3BsaXQobWVzc2FnZSk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIFN0cmluZyBzdHIgPSBzdHJzW2ldOwotICAgICAgCi0gICAgICAvLyBjaGVjayBzdHJpbmcgbGVuZ3RoCi0gICAgICBpZihzdHIubGVuZ3RoKCkgPiA5OTgpIAotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGxlbmd0aCAoIiArIHN0ci5sZW5ndGgoKSArIAotICAgICAgICAgICAgIikgb2YgdGhlIGxpbmUgKCIgKyAoaSsxKSArICIpIGdyZWF0ZXIgdGhhbiA5OTgiKTsKLSAgICAgIH0KLSAgICAgIC8vIE5vIG9jdGV0cyB3aXRoIGRlY2ltYWwgdmFsdWVzIGdyZWF0ZXIgdGhhbiAxMjcKLSAgICAgIC8vIGFyZSBhbGxvd2VkIGFuZCBuZWl0aGVyIGFyZSBOVUxzIChvY3RldHMgd2l0aCBkZWNpbWFsIHZhbHVlIDApLiAgQ1IKLSAgICAgIC8vKGRlY2ltYWwgdmFsdWUgMTMpIGFuZCBMRiAoZGVjaW1hbCB2YWx1ZSAxMCkgb2N0ZXRzIG9ubHkgb2NjdXIgYXMKLSAgICAgIC8vIHBhcnQgb2YgQ1JMRiBsaW5lIHNlcGFyYXRpb24gc2VxdWVuY2VzLgotICAgICAgY2hhcltdIGNoYXJzID0gc3RyLnRvQ2hhckFycmF5KCk7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaisrKQotICAgICAgewotICAgICAgICBpZigoY2hhcnNbal0gPiAxMjcpIHx8IChjaGFyc1tqXSA9PSAwKSB8fCAKLSAgICAgICAgICAgIChjaGFyc1tqXSA9PSAxMCkgfHwgKGNoYXJzW2pdID09IDEzKSkKLSAgICAgICAgewotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgY2hhciAoIiArIGNoYXJzW2pdICsgCi0gICAgICAgICAgICAgICIpW2NvZGU9IiArIChieXRlKSBjaGFyc1tqXSArICIgcG9zaXRpb249IiArIGogKyAKLSAgICAgICAgICAgICAgIl0gZG9lcyBub3QgYWxsb3dzIGluIDdiaXQgZW5jb2RpbmcgY29udGVudCIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFZhbGlkYXRlIGFuIDhiaXQgZW5jb2RlZCBtZXNzYWdlIChSRkMyMDQ1KQotICAgKiBAcGFyYW0gbWVzc2FnZSBtZXNzYWdlIHRvIGNoZWNrCi0gICAqIEB0aHJvd3MgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBpZiBtZXNzYWdlIGRvZXMgbm90IGNvbmZvcm0KLSAgICovCi0gIHByaXZhdGUgdm9pZCBjaGVja09uOGJpdChTdHJpbmcgbWVzc2FnZSkgCi0gICAgdGhyb3dzIEFzc2VydGlvbkZhaWxFeGNlcHRpb24KLSAgewotICAgIFN0cmluZ1tdIHN0cnMgPSBzcGxpdChtZXNzYWdlKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0cnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgU3RyaW5nIHN0ciA9IHN0cnNbaV07Ci0gICAgICAKLSAgICAgIC8vIGNoZWNrIHN0cmluZyBsZW5ndGgKLSAgICAgIGlmKHN0ci5sZW5ndGgoKSA+IDk5OCkgCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgbGVuZ3RoICgiICsgc3RyLmxlbmd0aCgpICsgCi0gICAgICAgICAgICAiKSBvZiB0aGUgbGluZSAoIiArIChpKzEpICsgIikgZ3JlYXRlciB0aGFuIDk5OCIpOwotICAgICAgfQotICAgICAgLy8gb2N0ZXRzIHdpdGggZGVjaW1hbCB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNwotICAgICAgLy8gbWF5IGJlIHVzZWQuICBBcyB3aXRoICI3Yml0IGRhdGEiIENSIGFuZCBMRiBvY3RldHMgb25seSBvY2N1ciBhcyBwYXJ0Ci0gICAgICAvLyBvZiBDUkxGIGxpbmUgc2VwYXJhdGlvbiBzZXF1ZW5jZXMgYW5kIG5vIE5VTHMgYXJlIGFsbG93ZWQuIAotICAgICAgY2hhcltdIGNoYXJzID0gc3RyLnRvQ2hhckFycmF5KCk7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaisrKQotICAgICAgewotICAgICAgICBpZigoY2hhcnNbal0gPT0gMCkgfHwgKGNoYXJzW2pdID09IDEwKSB8fCAoY2hhcnNbal0gPT0gMTMpKQotICAgICAgICB7Ci0gICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBjaGFyICgiICsgY2hhcnNbal0gKyAKLSAgICAgICAgICAgICAgIilbY29kZT0iICsgKGJ5dGUpIGNoYXJzW2pdICsgIiBwb3NpdGlvbj0iICsgaiArIAotICAgICAgICAgICAgICAiXSBkb2VzIG5vdCBhbGxvd3MgaW4gOGJpdCBlbmNvZGluZyBjb250ZW50Iik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGUgYSBxdW90ZWQtcHJpbnRhYmxlIGVuY29kZWQgbWVzc2FnZSAoUkZDMjA0NSkKLSAgICogQHBhcmFtIG1lc3NhZ2UgbWVzc2FnZSB0byBjaGVjawotICAgKiBAdGhyb3dzIEFzc2VydGlvbkZhaWxFeGNlcHRpb24gaWYgbWVzc2FnZSBkb2VzIG5vdCBjb25mb3JtCi0gICAqLwotICBwcml2YXRlIHZvaWQgY2hlY2tPblF1b3RlZFByaW50YWJsZShTdHJpbmcgbWVzc2FnZSkKLSAgICB0aHJvd3MgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nW10gc3RycyA9IHNwbGl0KG1lc3NhZ2UpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3Rycy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICAvLyBjaGVjayBsZW5ndGgKLSAgICAgIC8vIFJGQzIwNDUKLSAgICAgIC8vICg1KSAgIChTb2Z0IExpbmUgQnJlYWtzKSBUaGUgUXVvdGVkLVByaW50YWJsZSBlbmNvZGluZwotICAgICAgLy9SRVFVSVJFUyB0aGF0IGVuY29kZWQgbGluZXMgYmUgbm8gbW9yZSB0aGFuIDc2Ci0gICAgICAvL2NoYXJhY3RlcnMgbG9uZy4gIElmIGxvbmdlciBsaW5lcyBhcmUgdG8gYmUgZW5jb2RlZAotICAgICAgLy93aXRoIHRoZSBRdW90ZWQtUHJpbnRhYmxlIGVuY29kaW5nLCAic29mdCIgbGluZSBicmVha3MKLSAgICAgIC8vbXVzdCBiZSB1c2VkLiAgQW4gZXF1YWwgc2lnbiBhcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb24gYQotICAgICAgLy9lbmNvZGVkIGxpbmUgaW5kaWNhdGVzIHN1Y2ggYSBub24tc2lnbmlmaWNhbnQgKCJzb2Z0IikKLSAgICAgIC8vbGluZSBicmVhayBpbiB0aGUgZW5jb2RlZCB0ZXh0LgotICAgICAgaWYoKChzdHJzW2ldLmluZGV4T2YoIlx0IikgIT0gLTEpIHx8IChzdHJzW2ldLmluZGV4T2YoIiAiKSAhPSAtMSkpICYmCi0gICAgICAgICAgKHN0cnNbaV0ubGVuZ3RoKCkgPiA3NikpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgbGVuZ3RoICgiICsgc3Ryc1tpXS5sZW5ndGgoKSArIAotICAgICAgICAgICAgIikgb2YgdGhlIGxpbmUgKCIgKyAoaSsxKSArIAotICAgICAgICAgICAgIikgZ3JlYXRlciB0aGFuIDc2LCBcInNvZnRcIiBsaW5lIGJyZWFrcyBtdXN0IGJlIHVzZWQiKTsKLSAgICAgIH0KLQotICAgICAgY2hhcltdIGNoYXJzID0gc3Ryc1tpXS50b0NoYXJBcnJheSgpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGorKykKLSAgICAgIHsKLSAgICAgICAgLy8oMSkgICAoR2VuZXJhbCA4Yml0IHJlcHJlc2VudGF0aW9uKSBBbnkgb2N0ZXQsIGV4Y2VwdCBhIENSIG9yCi0gICAgICAgIC8vTEYgdGhhdCBpcyBwYXJ0IG9mIGEgQ1JMRiBsaW5lIGJyZWFrIG9mIHRoZSBjYW5vbmljYWwKLSAgICAgICAgLy8oc3RhbmRhcmQpIGZvcm0gb2YgdGhlIGRhdGEgYmVpbmcgZW5jb2RlZCwgbWF5IGJlCi0gICAgICAgIC8vcmVwcmVzZW50ZWQgYnkgYW4gIj0iIGZvbGxvd2VkIGJ5IGEgdHdvIGRpZ2l0Ci0gICAgICAgIC8vaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9jdGV0J3MgdmFsdWUuICBUaGUKLSAgICAgICAgLy9kaWdpdHMgb2YgdGhlIGhleGFkZWNpbWFsIGFscGhhYmV0LCBmb3IgdGhpcyBwdXJwb3NlLAotICAgICAgICAvL2FyZSAiMDEyMzQ1Njc4OUFCQ0RFRiIuICBVcHBlcmNhc2UgbGV0dGVycyBtdXN0IGJlCi0gICAgICAgIC8vdXNlZDsgbG93ZXJjYXNlIGxldHRlcnMgYXJlIG5vdCBhbGxvd2VkLiAgVGh1cywgZm9yCi0gICAgICAgIC8vZXhhbXBsZSwgdGhlIGRlY2ltYWwgdmFsdWUgMTIgKFVTLUFTQ0lJIGZvcm0gZmVlZCkgY2FuCi0gICAgICAgIC8vYmUgcmVwcmVzZW50ZWQgYnkgIj0wQyIsIGFuZCB0aGUgZGVjaW1hbCB2YWx1ZSA2MSAoVVMtCi0gICAgICAgIC8vQVNDSUkgRVFVQUwgU0lHTikgY2FuIGJlIHJlcHJlc2VudGVkIGJ5ICI9M0QiLiAgVGhpcwotICAgICAgICAvL3J1bGUgbXVzdCBiZSBmb2xsb3dlZCBleGNlcHQgd2hlbiB0aGUgZm9sbG93aW5nIHJ1bGVzCi0gICAgICAgIC8vYWxsb3cgYW4gYWx0ZXJuYXRpdmUgZW5jb2RpbmcuCi0gICAgICAgIC8vICgyKSAgIChMaXRlcmFsIHJlcHJlc2VudGF0aW9uKSBPY3RldHMgd2l0aCBkZWNpbWFsIHZhbHVlcyBvZgotICAgICAgICAvLzMzIHRocm91Z2ggNjAgaW5jbHVzaXZlLCBhbmQgNjIgdGhyb3VnaCAxMjYsIGluY2x1c2l2ZSwKLSAgICAgICAgLy9NQVkgYmUgcmVwcmVzZW50ZWQgYXMgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlcnMgd2hpY2gKLSAgICAgICAgLy9jb3JyZXNwb25kIHRvIHRob3NlIG9jdGV0cyAoRVhDTEFNQVRJT04gUE9JTlQgdGhyb3VnaAotICAgICAgICAvL0xFU1MgVEhBTiwgYW5kIEdSRUFURVIgVEhBTiB0aHJvdWdoIFRJTERFLAotICAgICAgICAvL3Jlc3BlY3RpdmVseSkuCi0gICAgICAgIGlmKChjaGFyc1tqXSA9PSA2MSkgJiYgKGNoYXJzLmxlbmd0aCA+IGorMikpIAotICAgICAgICB7Ci0gICAgICAgICAgaWYoIWlzSGV4KGNoYXJzW2orMV0pIHx8ICFpc0hleChjaGFyc1tqKzJdKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigidGhlIHF1b3RlZCBjaGFyICgiICsgCi0gICAgICAgICAgICAgICAgIGNoYXJzW2pdICsgY2hhcnNbaisxXSArIGNoYXJzW2orMl0gKyAiKSBpcyBpbmNvcnJlY3QiKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaiArPSAyOwotICAgICAgICAgIH0KLSAgICAgICAgfSAKLSAgICAgICAgLy8gY2hlY2sgZm9yIHNwYWNlIGFuZCB0YWIKLSAgICAgICAgZWxzZSBpZigoY2hhcnNbal0gIT0gOSkgJiYgKGNoYXJzW2pdICE9IDMyKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIGNoZWNrIGludmFsaWQgc3ltYm9sCi0gICAgICAgICAgaWYoKGNoYXJzW2pdID09IDApIHx8IChjaGFyc1tqXSA9PSAxMCkgfHwgKGNoYXJzW2pdID09IDEzKSB8fAotICAgICAgICAgICAgIChjaGFyc1tqXSA8IDMzKSB8fCAoY2hhcnNbal0gPiAxMjYpIHx8IChjaGFyc1tqXSA9PSA2MSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBjaGFyICgiICsgY2hhcnNbal0gKyAKLSAgICAgICAgICAgICAgICAiKVtjb2RlPSIgKyAoYnl0ZSkgY2hhcnNbal0gKyAiIHBvc2l0aW9uPSIgKyBqICsgCi0gICAgICAgICAgICAgICAgIl0gbXVzdCBiZSBxdW90ZWQiKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGUgYSBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIChSRkMzNTQ4KQotICAgKiBAcGFyYW0gbWVzc2FnZSBtZXNzYWdlIHRvIGNoZWNrCi0gICAqIEB0aHJvd3MgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBpZiBtZXNzYWdlIGRvZXMgbm90IGNvbmZvcm0KLSAgICovCi0gIHByaXZhdGUgdm9pZCBjaGVja09uQmFzZTY0KFN0cmluZyBtZXNzYWdlKQotICB0aHJvd3MgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nW10gc3RycyA9IHNwbGl0KG1lc3NhZ2UpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3Rycy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBTdHJpbmcgc3RyID0gc3Ryc1tpXTsKLSAgICAgIAotICAgICAgLy8gY2hlY2sgc3RyaW5nIGxlbmd0aAotICAgICAgaWYoc3RyLmxlbmd0aCgpID4gNzYpIAotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGxlbmd0aCAoIiArIHN0ci5sZW5ndGgoKSArIAotICAgICAgICAgICAgIikgb2YgdGhlIGxpbmUgKCIgKyAoaSsxKSArICIpIGdyZWF0ZXIgdGhhbiA5OTgiKTsKLSAgICAgIH0KLSAgICAgIC8vIGNoZWNrIGZvciAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS8rIgotICAgICAgY2hhcltdIGNoYXJzID0gc3RyLnRvQ2hhckFycmF5KCk7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaisrKQotICAgICAgewotICAgICAgICBjaGFyIGMgPSBjaGFyc1tpXTsKLSAgICAgICAgaWYoKGMgPCA0NykgfHwgKGMgPiAxMjIpIHx8ICgoYyA+IDU3KSAmJiAoYyA8IDY1KSkgfHwgCi0gICAgICAgICAgICgoYyA+IDkwKSAmJiAoYyA8IDk3KSkpCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGNoYXIgKCIgKyBjaGFyc1tqXSArIAotICAgICAgICAgICAgICAiKVtjb2RlPSIgKyAoYnl0ZSkgY2hhcnNbal0gKyAiIHBvc2l0aW9uPSIgKyBqICsgCi0gICAgICAgICAgICAgICJdIGRvZXMgbm90IGFsbG93cyBpbiBiYXNlNjQgZW5jb2RpbmcgY29udGVudCIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICAvKioKLSAgICogc3BsaXQgc3RyaW5nIHRvIGFycmF5IG9mIHN0cmluZ3MgYW5kIHVzZSBhcyBkZWxpbWV0ZXIgQ1JMRgotICAgKiBAcGFyYW0gc3RyIG9yaWdpbmFsIHN0cmluZwotICAgKiBAcmV0dXJuIGFycmF5IG9mIHN0cmluZ3MKLSAgICovCi0gIHByaXZhdGUgU3RyaW5nW10gc3BsaXQoU3RyaW5nIHN0cikKLSAgewotICAgIEFycmF5TGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGZvcihpbnQgaWR4ID0gc3RyLmluZGV4T2YoIlxyXG4iKTsgaWR4ICE9IC0xOyBpZHggPSBzdHIuaW5kZXhPZigiXHJcbiIpKQotICAgIHsKLSAgICAgIGxpc3QuYWRkKHN0ci5zdWJzdHJpbmcoMCwgaWR4KSk7Ci0gICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKGlkeCsyKTsKLSAgICB9Ci0gICAgbGlzdC5hZGQoc3RyKTsKLSAgICByZXR1cm4gKFN0cmluZ1tdKSBsaXN0LnRvQXJyYXkobmV3IFN0cmluZ1tsaXN0LnNpemUoKV0pOwotICB9Ci0gIAotICAvKioKLSAgICogUmV0dXJucyB0cnVlIGlmIGJ5dGUgaXMgIjAxMjM0NTY3ODlBQkNERUYiIHJhbmdlLCBmYWxzZSBvdGhld2lzZQotICAgKiBAcGFyYW0gYyBjaGFyCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBieXRlIGlzICIwMTIzNDU2Nzg5QUJDREVGIiByYW5nZSwgZmFsc2Ugb3RoZXdpc2UKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBpc0hleChjaGFyIGMpIHsKLSAgICByZXR1cm4gKCgoYyA+PSA0OCkgJiYgKGMgPD0gNTcpKSB8fCAoKGMgPj0gNjUpICYmIChjIDw9IDcwKSkpOyAKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MzYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5MzYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI4YWU3MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTM2LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotLyoqCi0gKiBBUDE5MzYKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBtdWx0aXBhcnQvcmVsYXRlZCBtZXNzYWdlPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkluIGEgbWVzc2FnZSwgYWxsIE1JTUUgZW5jYXBzdWxhdGlvbiBib3VuZGFyeSBzdHJpbmdzIAotICogYXJlIHByZWNlZGVkIHdpdGggdGhlIGFzY2lpIGNoYXJhY3RlcnMgQ1IgKDEzKSBhbmQgTEYgKDEwKSAKLSAqIGluIHRoYXQgc2VxdWVuY2UuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMTkzNiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEFQMTkzNihCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBpZiBib3VuZGFyeSBlcXVhbHMgbnVsbCwgdGhlbiByZXN1bHQgaXMgbm90IGFwcGxpY2FibGUKLSAgICBpZiAoIWVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9ICAgIAotICAgIC8vIG90aGVyd2lzZSBpdCBpcyB0cnVlIC0tIGNoZWNrZWQgaW4gbW9uaXRvcgotICAgIC8vIE1pbWVQYXJ0cyBtaW1lUGFydHMgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWltZVBhcnRzKCk7Ci0gICAgLy8gSXRlcmF0b3IgaSA9IG1pbWVQYXJ0cy5nZXRQYXJ0cygpLml0ZXJhdG9yKCk7Ci0gICAgLy8gYm9vbGVhbiBpbnZhbGlkQm91bmRhcnlTdHJpbmdGb3VuZCA9IGZhbHNlOwotICAgIC8vd2hpbGUgKGkuaGFzTmV4dCgpICYmICFpbnZhbGlkQm91bmRhcnlTdHJpbmdGb3VuZCkKLSAgICAvL3sKLSAgICAvLwlNaW1lUGFydCBwYXJ0ID0gKE1pbWVQYXJ0KWkubmV4dCgpOwotICAgIC8vCVN0cmluZ1tdIGJvdW5kYXJpZXMgPSBwYXJ0LmdldEJvdW5kYXJ5U3RyaW5ncygpOwotICAgIC8vCWZvciAoaW50IGogPSAwOyBqPGJvdW5kYXJpZXMubGVuZ3RoOyBqKyspCi0gICAgLy8JewotICAgIC8vCQlpZiAoIWJvdW5kYXJpZXNbal0uc3RhcnRzV2l0aCgiJiN4ZDtcbiIpKQotICAgIC8vCQl7Ci0gICAgLy8JCQlpbnZhbGlkQm91bmRhcnlTdHJpbmdGb3VuZCA9IHRydWU7Ci0gICAgLy8JCQlyZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAvLwkJCWZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChib3VuZGFyaWVzW2pdLCBlbnRyeUNvbnRleHQpOwotICAgIC8vCQkJYnJlYWs7Ci0gICAgLy8JCX0KLSAgICAvLwl9Ci0gICAgLy99Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTQyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTQyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmYjc5NzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQMTk0Mi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjY0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQ7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1lc3NhZ2VFbnRyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1pbWVQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk1JTUVDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuTUlNRVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci0KLS8qKgotICogQVAxOTQyCi0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHBhcnQgb2YgYSBtdWx0aXBhcnQvcmVsYXRlZCBtZXNzYWdlIHRoYXQgaXMgYm91bmQKLSAqIHRvIGEgbWltZTpjb250ZW50IHRoYXQgcmVmZXJzIHRvIGdsb2JhbCBlbGVtZW50IGRlY2xhcmF0aW9uICh2aWEgdGhlIGVsZW1lbnQKLSAqIGF0dHJpYnV0ZSBvZiB0aGUgd3NkbDpwYXJ0IGVsZW1lbnQpPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBib3VuZCBtZXNzYWdlIHBhcnQgaXMgc2VyaWFsaXplZCB3aXRoaW4gdGhlIE1JTUUKLSAqIHBhcnQgYXMgYSBzZXJpYWxpemF0aW9uIG9mIGFuIFhNTCBpbmZvc2V0IHdob3NlIHJvb3QgZWxlbWVudCBpcyBkZXNjcmliZWQgYnkKLSAqIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMTk0MiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMTk0MihCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiAoIWVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0gICAgICB7Ci0gICAgICAJdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgIAlNaW1lUGFydHMgbWltZVBhcnRzID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1pbWVQYXJ0cygpOwotICAgICAgCi0gICAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGRvZXMgbm90IGNvbnRhaW4gbm9uLXJvb3QgTUlNRSBwYXJ0cwotICAgICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICAgIGlmIChtaW1lUGFydHMuY291bnQoKTwgMikKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgCi0gICAgICAgIC8vIEdldHRpbmcgYW4gb3BlcmF0aW9uIG1hdGNoZWQgZm9yIGEgbWVzc2FnZQotICAgICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSB2YWxpZGF0b3IuZ2V0T3BlcmF0aW9uTWF0Y2goCi0gICAgICAgICAgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlUeXBlKCksCi0gICAgICAgICAgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCkpOwotICAgICAgICAvLyBJZiBubyBvbmUgb3BlcmF0aW9uIG1hdGNoZXMsIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgICAgaWYgKGJpbmRpbmdPcGVyYXRpb24gPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgICAgLy8gR2V0dGluZyB0aGUgY29ycmVzcG9uZGluZyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIGFuZCBtZXNzYWdlCi0gICAgICAgIExpc3QgZXh0RWxlbXM7Ci0gICAgICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICAgICAgaWYgKE1lc3NhZ2VFbnRyeS5UWVBFX1JFUVVFU1QKLSAgICAgICAgICAuZXF1YWxzKGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5VHlwZSgpKSkKLSAgICAgICAgewotICAgICAgICAgIGV4dEVsZW1zID0gYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKSA9PSBudWxsID8gbnVsbAotICAgICAgICAgICAgOiBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICAgIG1lc3NhZ2UgPSBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldElucHV0KCkgPT0gbnVsbCA/IG51bGwKLSAgICAgICAgICAgIDogYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBleHRFbGVtcyA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpID09IG51bGwgPyBudWxsCi0gICAgICAgICAgICA6IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICAgIG1lc3NhZ2UgPSBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldE91dHB1dCgpID09IG51bGwgPyBudWxsCi0gICAgICAgICAgICA6IGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEEgdmFyaWFibGUgdGhhdCBpbmRpY2F0ZXMgYSBiaW5kaW5nIGNvbnRhaW5zIGF0IGxlYXN0IG9uZQotICAgICAgICAvLyBtaW1lOmNvbnRlbnQgZWxlbWVudCB0aGF0IHJlZmVycyB0byBnbG9iYWwgZWxlbWVudCBkZWNsYXJhdGlvbiAKLSAgICAgICAgYm9vbGVhbiBtaW1lQ29udGVudEZvdW5kID0gZmFsc2U7Ci0gICAgICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIG1lc3NhZ2UgTUlNRSBwYXJ0cwotICAgICAgICBJdGVyYXRvciBpTWltZVBhcnRzID0gbWltZVBhcnRzLmdldFBhcnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgaW50IGkgPSAwOwotICAgICAgICB3aGlsZSAoaU1pbWVQYXJ0cy5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgIAkgIGkgPSBpICsgMTsKLSAgICAgICAgICAvLyBHZXR0aW5nIGEgTUlNRSBwYXJ0Ci0gICAgICAgICAgTWltZVBhcnQgbWltZVBhcnQgPSAoTWltZVBhcnQpaU1pbWVQYXJ0cy5uZXh0KCk7Ci0gICAgICAgICAgLy8gR2V0dGluZyBhIHBhcnQgbmFtZSBmb3JtIHRoZSBDb250ZW50LUlEIGhlYWRlcgotICAgICAgICAgIFN0cmluZyBwYXJ0TmFtZSA9IE1JTUVVdGlscy5nZXRNaW1lSGVhZGVyQXR0cmlidXRlKAotICAgICAgICAgICAgbWltZVBhcnQuZ2V0SGVhZGVycygpLCBNSU1FQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX0lEKTsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgaWR4ID0gcGFydE5hbWUuaW5kZXhPZigiPSIpOwotICAgICAgICAgICAgaWYoKGlkeCAhPSAtMSkgJiYgcGFydE5hbWUuc3RhcnRzV2l0aCgiPCIpKQotICAgICAgICAgICAgICBwYXJ0TmFtZSA9IGVuY29kZVBhcnROYW1lKHBhcnROYW1lLnN1YnN0cmluZygxLCBpZHgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIENvdWxkIG5vdCBleHRyYWN0IGEgcGFydCBuYW1lIGZyb20gdGhlIGhlYWRlciwKLSAgICAgICAgICAgIC8vIHByb2NlZWQgd2l0aCB0aGUgbmV4dCBNSU1FIHBhcnQKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgIH0KLQotICAgICAgICAgIC8vIElmIHRoZSBwYXJ0IGlzIGJvdW5kIGJ5IGEgbWltZTpjb250ZW50IGVsZW1lbnQKLSAgICAgICAgICBpZiAoYm91bmRUb01pbWVDb250ZW50KGV4dEVsZW1zLCBwYXJ0TmFtZSkgJiYgbWVzc2FnZSAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIEdldHRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcGFydAotICAgICAgICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpIG1lc3NhZ2UuZ2V0UGFydHMoKS5nZXQocGFydE5hbWUpOwotICAgICAgICAgICAgUU5hbWUgcmVmTmFtZTsKLSAgICAgICAgICAgIC8vIElmIHRoZSBwYXJ0IHJlZmVycyB0byBnbG9iYWwgZWxlbWVudCBkZWNsYXJhdGlvbgotICAgICAgICAgICAgaWYgKHBhcnQgIT0gbnVsbCAmJiAocmVmTmFtZSA9IHBhcnQuZ2V0RWxlbWVudE5hbWUoKSkgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbWltZUNvbnRlbnRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgIC8vIFRyeWluZyB0byBwYXJzZSBwYXJ0IGNvbnRlbnQKLSAgICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gbnVsbDsKLSAgICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkb2MgPSBYTUxVdGlscy5wYXJzZVhNTChtaW1lUGFydC5nZXRDb250ZW50KCkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkge30KLSAgICAgICAgICAgICAgLy8gSWYgdGhlIG1lc3NhZ2UgaXMgbm90IGFuIFhNTCBpbmZvc2V0LCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgICAgICBpZiAoZG9jID09IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGJvdW5kIG1lc3NhZ2UgcGFydCBvZiB0aGUgIgotICAgICAgICAgICAgICAgICAgKyAiTUlNRSBwYXJ0IG51bWJlciAiICsgKGkgKyAxKSArICIgaXMgaW52YWxpZCBYTUwgaW5mb3NldC4iKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAvLyBDcmVhdGluZyBhIFFOYW1lIG9iamVjdCBvZiB0aGUgcm9vdCBlbGVtZW50Ci0gICAgICAgICAgICAgIFFOYW1lIHJvb3ROYW1lID0gbmV3IFFOYW1lKAotICAgICAgICAgICAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKS5nZXROYW1lc3BhY2VVUkkoKSwKLSAgICAgICAgICAgICAgICBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkuZ2V0TG9jYWxOYW1lKCkpOwotICAgICAgICAgICAgICAvLyBJZiB0aGUgbmFtZXMgb2YgdGhlIHJvb3QgZWxlbWVudCBhbmQgdGhlIHJlZmVyZW5jZWQgZWxlbWVudAotICAgICAgICAgICAgICAvLyBhcmUgbm90IGVxdWFsLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgICAgICBpZiAoIXJlZk5hbWUuZXF1YWxzKHJvb3ROYW1lKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgcm9vdCBlbGVtZW50IG5hbWUgaXMgIgotICAgICAgICAgICAgICAgICAgKyByb290TmFtZSArICIsIHRoZSBuYW1lIG9mIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQgaXMgIgotICAgICAgICAgICAgICAgICAgKyByZWZOYW1lICsgIi4iKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBJZiBubyBtaW1lOmNvbnRlbnRTIGZvdW5kLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICAgIGlmICghbWltZUNvbnRlbnRGb3VuZCkKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgYWZlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHBhcnQgaXMgYm91bmQgYnkgYSBtaW1lOmNvbnRlbnQgZWxlbWVudC4KLSAgICogQHBhcmFtIGV4dEVsZW1zIGEgbGlzdCBvZiBleHRlbnNpYmlsaXR5IGVsZW1lbnRzLgotICAgKiBAcGFyYW0gcGFydCBhIHBhcnQgbmFtZS4KLSAgICogQHJldHVybiB0cnVlIGlmIGEgcGFydCBpcyBib3VuZCBieSBtaW1lOmNvbnRlbnQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBib3VuZFRvTWltZUNvbnRlbnQoTGlzdCBleHRFbGVtcywgU3RyaW5nIHBhcnQpCi0gIHsKLSAgICBpZiAoZXh0RWxlbXMgIT0gbnVsbCAmJiBleHRFbGVtcy5zaXplKCkgPiAwKQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW0gPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1zLmdldCgwKTsKLSAgICAgIC8vIEV4cGVjdGVkIHRoZSBmaXJzdCBleHQgZWxlbSBpcyBtaW1lOm11bHRpcGFydFJlbGF0ZWQKLSAgICAgIGlmIChleHRFbGVtLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKFdTRExfTUlNRV9NVUxUSVBBUlQpKQotICAgICAgewotICAgICAgICAvLyBHZXR0aW5nIHRoZSBtaW1lOnBhcnQgZWxlbWVudHMgb2YgdGhlIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZAotICAgICAgICBMaXN0IG1pbWVQYXJ0cyA9ICgoTUlNRU11bHRpcGFydFJlbGF0ZWQpIGV4dEVsZW0pLmdldE1JTUVQYXJ0cygpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1pbWVQYXJ0cy5zaXplKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldHRpbmcgdGhlIG1pbWU6cGFydCBlbGVtZW50IG5lZWRlZAotICAgICAgICAgIExpc3QgZWxlbXMgPSAoKE1JTUVQYXJ0KSBtaW1lUGFydHMuZ2V0KGkpKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgICAgICBpZiAoZWxlbXMuc2l6ZSgpID4gMCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBHZXR0aW5nIHRoZSBmaXJzdCBlbGVtZW50Ci0gICAgICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlbGVtID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBlbGVtcy5nZXQoMCk7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBtaW1lOmNvbnRlbnQgYW5kIGl0IGJpbmRzIGEgcGFydAotICAgICAgICAgICAgaWYgKGVsZW0uZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NETF9NSU1FX0NPTlRFTlQpCi0gICAgICAgICAgICAgICYmIHBhcnQuZXF1YWxzKCgoTUlNRUNvbnRlbnQpZWxlbSkuZ2V0UGFydCgpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEVuY29kZSBzdHJpbmcgZnJvbSAlSEggdG8gVVRGCi0gICAqIEBwYXJhbSBzdHIgc3RyaW5nCi0gICAqIEByZXR1cm4gZW5jb2RlZCBzdHJpbmcgZnJvbSAlSEggZm9ybWF0Ci0gICAqLwotICBwcml2YXRlIFN0cmluZyBlbmNvZGVQYXJ0TmFtZShTdHJpbmcgc3RyKSB7Ci0gICAgU3RyaW5nQnVmZmVyIHJlcyA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyBpKyspCi0gICAgewotICAgICAgaWYoKHN0ci5jaGFyQXQoaSkgPT0gJyUnKSAmJiAoc3RyLmxlbmd0aCgpID4gaSsyKSkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBpbnQgdmFsdWUgPSBJbnRlZ2VyLnBhcnNlSW50KAotICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihzdHIuY2hhckF0KGkrMSkpICsKLSAgICAgICAgICAgICAgU3RyaW5nLnZhbHVlT2Yoc3RyLmNoYXJBdChpKzIpKSwgMTYpOwotICAgICAgICAgIHJlcy5hcHBlbmQoKGNoYXIpIHZhbHVlKTsKLSAgICAgICAgICBpICs9MjsKLSAgICAgICAgfQotICAgICAgICBjYXRjaChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSl7fQotICAgICAgfSAKLSAgICAgIGVsc2UgCi0gICAgICB7Ci0gICAgICAgIHJlcy5hcHBlbmQoc3RyLmNoYXJBdChpKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXMudG9TdHJpbmcoKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5NDUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5NDUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRiZjMxMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTQ1LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUFV0aWxzOwotCi0vKioKLSAqIEFQMTk0NQotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIG1lc3NhZ2U8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIENvbnRlbnQtVHlwZSBIVFRQIGhlYWRlciBmaWVsZC12YWx1ZSBpbiBhIG1lc3NhZ2UgCi0gKiBpcyBlaXRoZXIgIm11bHRpcGFydC9yZWxhdGVkIiBvciAidGV4dC94bWwiLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBBUDE5NDUgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBBUDE5NDUoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIGhlYWRlck5hbWUgPSBIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEU7Ci0KLSAgICAvLyBHZXR0aW5nIGEgaGVhZGVyCi0gICAgU3RyaW5nIGhlYWRlclZhbHVlID0gSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJBdHRyaWJ1dGUoCi0gICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpLAotICAgICAgICBoZWFkZXJOYW1lKTsKLSAgICAvLyBJZiBoZWFkZXJWYWx1ZSBpcyBudWxsLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgaWYgKGhlYWRlclZhbHVlID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9IAotICAgIC8vIElmIHRoZSBoZWFkZXIgaXMgIm11bHRpcGFydC9yZWxhdGVkIiBvciAidGV4dC94bWwiLAotICAgIC8vIHRoZW4gdGhlIGFzc2VydGlvbiBwYXNzZWQKLSAgICBlbHNlIGlmIChoZWFkZXJWYWx1ZS5lcXVhbHNJZ25vcmVDYXNlKFdTSUNvbnN0YW50cy5DT05URU5UX1RZUEVfTVVMVElQQVJUKQotICAgICAgICB8fCBoZWFkZXJWYWx1ZS5lcXVhbHNJZ25vcmVDYXNlKFdTSUNvbnN0YW50cy5DT05URU5UX1RZUEVfVEVYVF9YTUwpKQotICAgIHsKLSAgICB9Ci0gICAgLy8gZWxzZSB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgIGVsc2UgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgaGVhZGVyVmFsdWUsIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5NDYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDE5NDYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFmMGYxYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVAxOTQ2LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotLyoqCi0gKiBBUDE5NDYKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgbXVsdGlwYXJ0L3JlbGF0ZWQgbWVzc2FnZQotICogY29udGFpbmluZyBub24tcm9vdCBwYXJ0czwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgY2FuZGlkYXRlIG11bHRpcGFydC9yZWxhdGVkIG1lc3NhZ2UKLSAqIGNvbnRhaW5pbmcgbm9uLXJvb3QgcGFydHMuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMTk0NiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMTk0NihCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBNSU1FIHBhcnRzLCB0aGUgYXNzZXJ0aW9uIHBhc3NlZCAKLSAgICBpZiAoZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1pbWVQYXJ0cygpLmNvdW50KCkgPiAxKQotICAgIHsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICB0ZXN0QXNzZXJ0aW9uLmdldERldGFpbERlc2NyaXB0aW9uKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIC8vIFRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICBlbHNlCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVA1MTAwLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVA1MTAwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MGU2NjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0FQNTEwMC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0vKioKLSAqIEFQNTEwMAotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSAgbm9uLW11bHRpcGFydC9yZWxhdGVkIG1lc3NhZ2UgaW4gdGhlIGxvZyBmaWxlLCB3aXRoIGFuIEhUVFAgZW50aXR5LWJvZHkuPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBTT0FQIGVudmVsb3BlIGlzIHRoZSBleGNsdXNpdmUgcGF5bG9hZCBvZiB0aGUgSFRUUCBlbnRpdHktYm9keS48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICoKLSAqIEBhdXRob3IgbGF1em9uZAotICovCi1wdWJsaWMgY2xhc3MgQVA1MTAwIGV4dGVuZHMgU1NCUDUxMDAgCi17Ci0JLyoqCi0gICAgICogQ29uc3RydWN0b3IuCi0JICogQHBhcmFtIGltcGwKLQkgKi8KLQlwdWJsaWMgQVA1MTAwKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpIAotCXsKLQkJc3VwZXIoaW1wbCk7Ci0JfQotCi0JcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLQkgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLQkgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0JICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0JewotCSAgLy8gSWYgdGhlcmUgaXMgYSBTT0FQIE1lc3NhZ2Ugd2l0aCBBdHRhY2htZW50cywgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotCSAgaWYgKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5pc01pbWVDb250ZW50KCkpCi0JICB7Ci0JICAJcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRSwgZmFpbHVyZURldGFpbCk7Ci0JICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzdXBlci52YWxpZGF0ZSh0ZXN0QXNzZXJ0aW9uLCBlbnRyeUNvbnRleHQpOwotCSAgfQotCX0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDUxMDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9BUDUxMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJhMmNiOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQVA1MTAxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIHBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0vKioKLSAqIEFQNTEwMQotICogPGNvbnRleHQ+Rm9yIGEgbm9uLW11bHRpcGFydC9yZWxhdGVkIGNhbmRpZGF0ZSBtZXNzYWdlIGluIHRoZSBsb2cgZmlsZS48L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+QSBtZXNzYWdlIG11c3QgaGF2ZSBhICJDb250ZW50LVR5cGUiIEhUVFAgaGVhZGVyIGZpZWxkLiAgVGhlICJDb250ZW50LVR5cGUiIEhUVFAgaGVhZGVyIGZpZWxkIG11c3QgaGF2ZSBhIGZpZWxkLXZhbHVlIHdob3NlIG1lZGlhIHR5cGUgaXMgInRleHQveG1sIi48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICogCi0gKiBAYXV0aG9yIGxhdXpvbmQKLSAqLwotcHVibGljIGNsYXNzIEFQNTEwMSBleHRlbmRzIFNTQlA1MTAxIHsKLQotCS8qKgotCSAqIEBwYXJhbSBpbXBsCi0JICovCi0JcHVibGljIEFQNTEwMShCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKSAKLQl7Ci0JCXN1cGVyKGltcGwpOwotCX0KLQotCXB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0JICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0JICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotCSAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotCXsKLQkgIC8vIElmIHRoZXJlIGlzIGEgU09BUCBNZXNzYWdlIHdpdGggQXR0YWNobWVudHMsIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLQkgIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuaXNNaW1lQ29udGVudCgpKQotCSAgewotCSAgCXJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEUsIGZhaWx1cmVEZXRhaWwpOwotCSAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXR1cm4gc3VwZXIudmFsaWRhdGUodGVzdEFzc2VydGlvbiwgZW50cnlDb250ZXh0KTsKLQkgIH0KLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlAxMDAxLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlAxMDAxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhYmNiY2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTAwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NZXNzYWdlRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5NZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLQotLyoqCi0gKiBCUDEwMDEuCi0gKiBJZiBpdCBpcyBhIHJlcXVlc3QsIHRoZSBhcmcgIzIgb2YgUE9TVCBpcyAmbHQ7SFRUUC8xLjEmZ3Q7LiBJZiBhYnNlbnQsIGZpcnN0IGxpbmUgb2YgdGhlIAotICogYm9keSBpczogSFRUUC1WZXJzaW9uID0gSFRUUC8xLjEuIElmIGl0IGlzIGEgcmVzcG9uc2UsIGl0IHN0YXJ0cyB3aXRoICZsdDtIVFRQLzEuMSZndDsuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDEwMDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDEwMDEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIGh0dHBIZWFkZXIgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0SFRUUEhlYWRlcnMoKTsKLQotICAgIC8vIElmIHRoaXMgaXMgYSByZXF1ZXN0IG1lc3NhZ2UsIHRoZW4gY2hlY2sgUE9TVCBoZWFkZXIKLSAgICBpZiAoZW50cnlDb250ZXh0Ci0gICAgICAuZ2V0TWVzc2FnZUVudHJ5KCkKLSAgICAgIC5nZXRUeXBlKCkKLSAgICAgIC5lcXVhbHNJZ25vcmVDYXNlKE1lc3NhZ2VFbnRyeS5UWVBFX1JFUVVFU1QpKQotICAgIHsKLSAgICAgIFZlY3RvciByZXF1ZXN0TGluZTsKLSAgICAgIGlmICgoKHJlcXVlc3RMaW5lID0gdGhpcy52YWxpZGF0b3IuZ2V0UG9zdFJlcXVlc3QoaHR0cEhlYWRlcikpID09IG51bGwpCi0gICAgICAgIHx8IChyZXF1ZXN0TGluZS5zaXplKCkgPT0gMCkpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBtZXRob2QgPSAoU3RyaW5nKSByZXF1ZXN0TGluZS5nZXQoMCk7Ci0gICAgICAgIC8vU3RyaW5nIHJlcXVlc3RVUkkgPSAoU3RyaW5nKSByZXF1ZXN0TGluZS5nZXQoMSk7Ci0gICAgICAgIFN0cmluZyBodHRwVmVyc2lvbiA9IChTdHJpbmcpIHJlcXVlc3RMaW5lLmdldCgyKTsKLQotICAgICAgICAvL0ZvciBlYWNoIHJlcXVlc3QgbWVzc2FnZSB0aGF0IGlzIGFuIEhUVFAgUE9TVAotICAgICAgICBpZiAobWV0aG9kLmVxdWFscyhNZXNzYWdlVmFsaWRhdG9yLkhUVFBfUE9TVCkgJiYgaHR0cFZlcnNpb24gIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChodHRwVmVyc2lvbi5lcXVhbHMoTWVzc2FnZVZhbGlkYXRvci5IVFRQX1ZFUlNJT05fMV8xKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfV0FSTklORzsKLSAgICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGh0dHBIZWFkZXIsIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gT3RoZXJ3aXNlIGl0IG11c3QgYmUgYSByZXNwb25zZQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpZiAoaHR0cEhlYWRlci5zdGFydHNXaXRoKE1lc3NhZ2VWYWxpZGF0b3IuSFRUUF9WRVJTSU9OXzFfMSkpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1dBUk5JTkc7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGh0dHBIZWFkZXIsIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTAwMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTAwMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTlhNDZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDEwMDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgY29tLmlibS5pY3UudXRpbC5TdHJpbmdUb2tlbml6ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0KLS8qKgotICogQlAxMDAyLgotICogSWYgaXQgaXMgYSByZXF1ZXN0LCB0aGUgYXJnICMyIG9mIFBPU1QgaXMgJmx0O0hUVFAvMS4xJmd0OyBvciAmbHQ7SFRUUC8xLjAmZ3Q7LiBJZiBhYnNlbnQsIGZpcnN0IGxpbmUgCi0gKiBvZiB0aGUgYm9keSBpczogSFRUUC1WZXJzaW9uID0gSFRUUC8xLjEuIChvciBIVFRQLzEuMCkuIElmIGl0IGlzIGEgcmVzcG9uc2UsIGl0IHN0YXJ0cyB3aXRoIAotICogJmx0O0hUVFAvMS4xJmd0OyBvciAmbHQ7SFRUUC8xLjAmZ3Q7IG9yIGhpZ2hlcjsKLSAqLwotcHVibGljIGNsYXNzIEJQMTAwMiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTAwMihCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgaHR0cEhlYWRlciA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpOwotCi0gICAgLy8gSWYgdGhpcyBpcyBhIHJlcXVlc3QgbWVzc2FnZSwgdGhlbiBjaGVjayBQT1NUIGZvciAxLjEgb3IgMS4wCi0gICAgaWYgKGVudHJ5Q29udGV4dAotICAgICAgLmdldE1lc3NhZ2VFbnRyeSgpCi0gICAgICAuZ2V0VHlwZSgpCi0gICAgICAuZXF1YWxzSWdub3JlQ2FzZShNZXNzYWdlRW50cnkuVFlQRV9SRVFVRVNUKSkKLSAgICB7Ci0gICAgICAvLyBHZXQgZWFjaCBlbnRyeSBpbiB0aGUgcG9zdCBoZWFkZXIKLSAgICAgIFN0cmluZ1Rva2VuaXplciBwb3N0TWVzc2FnZSA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoaHR0cEhlYWRlciwgIiBcclxuIik7Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHRoaXJkIHRva2VuLCB0aGVuIGZhaWwKLSAgICAgIGlmIChwb3N0TWVzc2FnZS5jb3VudFRva2VucygpIDwgMykKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGh0dHBIZWFkZXIsIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIC8vIEdldCB0aGUgM3JkIHRva2VuICh0aGVyZSBtdXN0IGJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzPykKLSAgICAgICAgU3RyaW5nIGh0dHBWZXJzaW9uID0gIiI7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlVHlwZSA9ICIiOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIC8vIE1lc3NhZ2UgdHlwZQotICAgICAgICAgIGlmIChpID09IDApCi0gICAgICAgICAgICBtZXNzYWdlVHlwZSA9IHBvc3RNZXNzYWdlLm5leHRUb2tlbigpOwotICAgICAgICAgIGVsc2UgaWYgKGkgPT0gMikKLSAgICAgICAgICAgIGh0dHBWZXJzaW9uID0gcG9zdE1lc3NhZ2UubmV4dFRva2VuKCk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zdE1lc3NhZ2UubmV4dFRva2VuKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW1lc3NhZ2VUeXBlLmVxdWFscygiUE9TVCIpKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZSB0aGlyZCB0b2tlbiBpcyBub3QgSFRUUC8xLjEgb3QgSFRUUC8xLjAsIHRoZW4gZmFpbAotICAgICAgICBlbHNlIGlmICgKLSAgICAgICAgICAoIWh0dHBWZXJzaW9uLmVxdWFsc0lnbm9yZUNhc2UoTWVzc2FnZVZhbGlkYXRvci5IVFRQX1ZFUlNJT05fMV8xKSkKLSAgICAgICAgICAgICYmICghaHR0cFZlcnNpb24uZXF1YWxzSWdub3JlQ2FzZShNZXNzYWdlVmFsaWRhdG9yLkhUVFBfVkVSU0lPTl8xXzApKSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGh0dHBIZWFkZXIsIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBFbHNlIGl0IGlzIGEgcmVzcG9uc2UgbWVzc2FnZQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBSZXNwb25zZS1MaW5lICgxc3QpID0gSFRUUC1WZXJzaW9uIFNQIFJlc3BvbnNlLWNvZGUgU1AgUmVzcG9uc2UtdGV4dCBDUkxGCi0gICAgICBTdHJpbmdUb2tlbml6ZXIgaHR0cE1lc3NhZ2VUb2tlbml6ZXIgPQotICAgICAgICBuZXcgU3RyaW5nVG9rZW5pemVyKGh0dHBIZWFkZXIsICJcblxyXGYiKTsKLQotICAgICAgU3RyaW5nIHN0YXJ0TGluZSA9IG51bGw7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgaWYgKGh0dHBNZXNzYWdlVG9rZW5pemVyLmhhc01vcmVUb2tlbnMoKSkKLSAgICAgICAgewotICAgICAgICAgIHN0YXJ0TGluZSA9IGh0dHBNZXNzYWdlVG9rZW5pemVyLm5leHRUb2tlbigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIC8vIEhUVFAgdmVyc2lvbiBpbmZvIGV4cGVjdGVkIGJ1dCBub3QgZm91bmQKLSAgICAgICAgICAvLyAoc3RhdGUgdGhlIGZhY3QgaW4gdGhlIGV4Y2VwdGlvbiBtZXNzYWdlPykKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbihodHRwSGVhZGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGNoZWNrIHRoYXQgcHJvdG9jb2wgdmVyc2lvbiBpbmRpY2F0ZXMgSFRUUC8xLjAgb3IgSFRUUC8xLjEKLSAgICAgICAgaWYgKCFzdGFydExpbmUuc3RhcnRzV2l0aChNZXNzYWdlVmFsaWRhdG9yLkhUVFBfVkVSU0lPTl8xXzEpCi0gICAgICAgICAgJiYgIXN0YXJ0TGluZS5zdGFydHNXaXRoKE1lc3NhZ2VWYWxpZGF0b3IuSFRUUF9WRVJTSU9OXzFfMCkpCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbihodHRwSGVhZGVyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDEwMDQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDEwMDQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y3ZjFmMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlAxMDA0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgY29tLmlibS5pY3UudXRpbC5TdHJpbmdUb2tlbml6ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0KLS8qKgotICogQlAxMDA0LiAKLSAqIFRoZSByZXF1ZXN0IG1lc3NhZ2UgaXMgYSBQT1NUIG1lc3NhZ2UsIHdpdGhvdXQgYW55IHVzZSBvZiBmcmFtZXdvcmsgZXh0ZW5zaW9uLgotICovCi1wdWJsaWMgY2xhc3MgQlAxMDA0IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMDA0KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBodHRwSGVhZGVyID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCk7Ci0gICAgU3RyaW5nVG9rZW5pemVyIGh0dHBNZXNzYWdlVG9rZW5pemVyID0KLSAgICAgIG5ldyBTdHJpbmdUb2tlbml6ZXIoaHR0cEhlYWRlciwgIlxuXHJcZiIpOwotCi0gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIFBPU1QgbWVzc2FnZQotICAgIGlmICghaHR0cEhlYWRlci5zdGFydHNXaXRoKE1lc3NhZ2VWYWxpZGF0b3IuSFRUUF9QT1NUKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGh0dHBIZWFkZXIsIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIGxpbmUgPSBudWxsOwotICAgIHdoaWxlIChodHRwTWVzc2FnZVRva2VuaXplci5oYXNNb3JlVG9rZW5zKCkKLSAgICAgICYmIChyZXN1bHQuZXF1YWxzKEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEKSkpCi0gICAgewotICAgICAgbGluZSA9IGh0dHBNZXNzYWdlVG9rZW5pemVyLm5leHRUb2tlbigpOwotICAgICAgaWYgKChsaW5lICE9IG51bGwpCi0gICAgICAgICYmIChsaW5lLnN0YXJ0c1dpdGgoIk0tUE9TVCIpIHx8IGxpbmUuc3RhcnRzV2l0aCgiRXh0OiIpKSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGh0dHBIZWFkZXIsIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0gICAgfSAvL0VuZCBXaGlsZQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTAwNi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTAwNi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDY3Y2UwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDEwMDYuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQVXRpbHM7Ci0KLQotLyoqCi0gKiBCUDEwMDYuIAotICovCi1wdWJsaWMgY2xhc3MgQlAxMDA2IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMDA2KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIFBhcnNlIHRoZSBIVFRQIGhlYWRlcgotICAgIFN0cmluZyByYXdIVFRQSGVhZGVyID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCk7Ci0gICAgTWFwIGh0dHBIZWFkZXIgPSBIVFRQVXRpbHMuZ2V0SHR0cEhlYWRlclRva2VucyhyYXdIVFRQSGVhZGVyLCAiOiIpOwotCi0gICAgLy8gR2V0IHRoZSBzb2FwIGFjdGlvbiBoZWFkZXIKLSAgICBTdHJpbmcgc29hcEFjdGlvbiA9IChTdHJpbmcpIGh0dHBIZWFkZXIuZ2V0KCJTT0FQQWN0aW9uIi50b1VwcGVyQ2FzZSgpKTsKLQotICAgIC8vIElmIHRoZXJlIGlzIG5vIHNvYXAgYWN0aW9uIGhlYWRlciwgdGhlbiBOQQotICAgIGlmIChzb2FwQWN0aW9uID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoIShzb2FwQWN0aW9uLnN0YXJ0c1dpdGgoIlwiIikpIHx8ICEoc29hcEFjdGlvbi5lbmRzV2l0aCgiXCIiKSkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAiSFRUUCBIZWFkZXI6IFwiIiArIHJhd0hUVFBIZWFkZXIgKyAiXCIuIiwKLSAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDEwMTAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDEwMTAuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhYzczNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlAxMDEwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5PcGVyYXRpb25TaWduYXR1cmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVHlwZXNSZWdpc3RyeTsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLQotCi0vKioKLSAqIEJQMTAxMC4KLSAqIEl0IE1VU1QgTk9UIGNvbnRhaW4gYSBTT0FQIEVudmVsb3BlOiB0aGUgSFRUUCBlbnRpdHktYm9keSBtdXN0IGJlIGVtcHR5LgotICovCi1wdWJsaWMgY2xhc3MgQlAxMDEwIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMDEwKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKFRlc3RBc3NlcnRpb24sIEVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBQYXJzZSByZXF1ZXN0IG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvY1JlcXVlc3QgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdERvY3VtZW50KCk7Ci0KLSAgICAgIC8vIGdldCBTT0FQQWN0aW9uCi0gICAgICBTdHJpbmcgaGVhZGVycyA9IGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0SFRUUEhlYWRlcnMoKTsKLSAgICAgIFN0cmluZyBhY3Rpb24gPSBudWxsOwotICAgICAgaWYgKGhlYWRlcnMgIT0gbnVsbCkKLSAgICAgICAgYWN0aW9uID0gKFN0cmluZykgSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoaGVhZGVycywgIjoiKS5nZXQoIlNPQVBBY3Rpb24iLnRvVXBwZXJDYXNlKCkpOwotCi0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXRCaW5kaW5ncygpWzBdOwotICAgICAgVHlwZXNSZWdpc3RyeSByZWdpc3RyeSA9Ci0gICAgICAgIG5ldyBUeXBlc1JlZ2lzdHJ5KAotICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmdldFdTRExEb2N1bWVudCgpLmdldERlZmluaXRpb25zKCksCi0gICAgICAgICAgdmFsaWRhdG9yKTsKLSAgICAgIE9wZXJhdGlvblNpZ25hdHVyZS5PcGVyYXRpb25NYXRjaCBtYXRjaCA9Ci0gICAgICAgIE9wZXJhdGlvblNpZ25hdHVyZS5tYXRjaE9wZXJhdGlvbigKLSAgICAgICAgICBkb2NSZXF1ZXN0LAotICAgICAgICAgIGFjdGlvbiwKLSAgICAgICAgICBiaW5kaW5nLAotICAgICAgICAgIHJlZ2lzdHJ5KTsKLQotICAgICAgaWYgKG1hdGNoID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0KLSAgICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gbWF0Y2guZ2V0T3BlcmF0aW9uKCk7Ci0gICAgICAgIC8vZmluZCBvcGVyYXRpb24gaW4gcG9ydCB0eXBlCi0gICAgICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpOwotICAgICAgICBpZiAob3BlcmF0aW9uID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAob3BlcmF0aW9uLmdldE91dHB1dCgpID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpOwotICAgICAgICAgICAgaWYgKG1lc3NhZ2UubGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKHJlc3VsdCA9PSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRCkKLSAgICAgIHsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwobnVsbCwgZW50cnlDb250ZXh0KTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTEwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTEwMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWVjYWMxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDExMDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlV0aWxzOwotCi0KLS8qKgotICogQlAxMTAxLgotICogQSByZXNwb25zZSBtZXNzYWdlIHRoYXQgZG9lcyBub3QgY29udGFpbiBhIFNPQVAgbWVzc2FnZSBTSE9VTEQgYmUgc2VudCAKLSAqIHVzaW5nIGVpdGhlciBhICIyMDAgT0siIG9yICIyMDIgQWNjZXB0ZWQiIEhUVFAgc3RhdHVzIGNvZGUuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDExMDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDExMDEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUoVGVzdEFzc2VydGlvbiwgRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIC8vIHJlc3BvbnNlIGRvZXMgbm90IGNvbnRhaW5zIFNPQVAgbWVzc2FnZQotICAgIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpID09IG51bGwKLSAgICAgIHx8ICIiLmVxdWFscyhlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpKSkKLSAgICB7Ci0gICAgICAvLyBjaGVjayBIVFRQIHN0YXR1cyBjb2RlIAotICAgICAgU3RyaW5nIGh0dHBTdGF0dXMgPQotICAgICAgICBVdGlscy5nZXRIVFRQU3RhdHVzQ29kZSgKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0SFRUUEhlYWRlcnMoKSk7Ci0gICAgICBpZiAoIjIwMCIuZXF1YWxzKGh0dHBTdGF0dXMpKTsKLSAgICAgIGVsc2UgaWYgKCIyMDIiLmVxdWFscyhodHRwU3RhdHVzKSk7Ci0KLSAgICAgIC8vIElmIDR4eCwgdGhlbiByZXN1bHQgaXMgbm90QXBwbGljYWJsZQotICAgICAgZWxzZSBpZiAoaHR0cFN0YXR1cy5zdGFydHNXaXRoKCI0IikpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfV0FSTklORzsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICJcblJlc3BvbnNlIG1lc3NhZ2U6XG5IZWFkZXJzOlxuIgotICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpCi0gICAgICAgICAgICAgICsgIk1lc3NhZ2U6XG4iCi0gICAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1lc3NhZ2UoKSwKLSAgICAgICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyByZXNwb25zZSBjb250YWlucyBTT0FQIG1lc3NhZ2UKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTEwMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTEwMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDA5MzhmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDExMDMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlV0aWxzOwotCi0KLS8qKgotICogQlAxMTAzLgotICogVGhlIHJlcXVlc3QgbWVzc2FnZSBzaG91bGQgbm90IGNvbnRhaW4gYSBQT1NUIG1ldGhvZC4KLSAqLwotcHVibGljIGNsYXNzIEJQMTEwMyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTEwMyhCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShUZXN0QXNzZXJ0aW9uLCBFbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgTWVzc2FnZUVudHJ5IHJlcXVlc3QgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdCgpOwotICAgIFN0cmluZyByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3QuZ2V0SFRUUEhlYWRlcnMoKTsKLQotICAgIC8vIEdldCBIVFRQIHN0YXR1cyBjb2RlCi0gICAgU3RyaW5nIGh0dHBTdGF0dXMgPQotICAgICAgVXRpbHMuZ2V0SFRUUFN0YXR1c0NvZGUoCi0gICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpKTsKLQotICAgIGlmIChyZXF1ZXN0SGVhZGVycy5zdGFydHNXaXRoKCJQT1NUICIpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UgaWYgKCEiNDA1Ii5lcXVhbHMoaHR0cFN0YXR1cykpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HOwotICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgIlxuUmVxdWVzdCBtZXNzYWdlOlxuSGVhZGVyczpcbiIKLSAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldFJlcXVlc3QoKS5nZXRIVFRQSGVhZGVycygpCi0gICAgICAgICAgICArICJcbk1lc3NhZ2U6XG4iCi0gICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0TWVzc2FnZSgpCi0gICAgICAgICAgICArICJcblxuUmVzcG9uc2UgbWVzc2FnZTpcbkhlYWRlcnM6XG4iCi0gICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRSZXNwb25zZSgpLmdldEhUVFBIZWFkZXJzKCkKLSAgICAgICAgICAgICsgIlxuTWVzc2FnZTpcbiIKLSAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldFJlc3BvbnNlKCkuZ2V0TWVzc2FnZSgpLAotICAgICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTEwNC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTEwNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmNkYmQ3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDExMDQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NZXNzYWdlRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVXRpbHM7Ci0KLQotLyoqCi0gKiBCUDExMDQuCi0gKiBUaGUgcmVxdWVzdCBtZXNzYWdlIHNob3VsZCBub3QgY29udGFpbiBhIGNvbnRlbnQtdHlwZSBvZiAidGV4dC94bWwiLgotICovCi1wdWJsaWMgY2xhc3MgQlAxMTA0IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlAxMTA0KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKFRlc3RBc3NlcnRpb24sIEVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gY2hlY2sgcmVxdWVzdCBmb3IgdGhlICJ0ZXh0L3htbCIgY29udGVudCB0eXBlCi0gICAgTWVzc2FnZUVudHJ5IHJlcXVlc3QgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdCgpOwotICAgIFN0cmluZyBoZWFkZXJzID0gcmVxdWVzdC5nZXRIVFRQSGVhZGVycygpOwotICAgIFN0cmluZyBjb250ZW50VHlwZSA9IChTdHJpbmcpIEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyVG9rZW5zKGhlYWRlcnMsICI6IikKLSAgICAgIC5nZXQoSFRUUENvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9UWVBFLnRvVXBwZXJDYXNlKCkpOwotCi0gICAgLy8gR2V0IEhUVFAgc3RhdHVzIGNvZGUKLSAgICBTdHJpbmcgaHR0cFN0YXR1cyA9Ci0gICAgICBVdGlscy5nZXRIVFRQU3RhdHVzQ29kZSgKLSAgICAgICAgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCkpOwotCi0gICAgLy8gSWYgdGhlIHJlcXVlc3QgbWVzc2FnZSBoYXMgYSBjb250ZW50IHR5cGUgb2YgdGV4dC94bWwsCi0gICAgLy8gdGhlbiB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgaWYgKGNvbnRlbnRUeXBlICE9IG51bGwKLSAgICAgICYmIGNvbnRlbnRUeXBlLmluZGV4T2YoV1NJQ29uc3RhbnRzLkNPTlRFTlRfVFlQRV9URVhUX1hNTCkgIT0gLTEpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIGNoZWNrIEhUVFAgc3RhdHVzIGNvZGUKLSAgICAgIGlmICghIjQxNSIuZXF1YWxzKGh0dHBTdGF0dXMpKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1dBUk5JTkc7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAiXG5SZXF1ZXN0IG1lc3NhZ2U6XG5IZWFkZXJzOlxuIgotICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0SFRUUEhlYWRlcnMoKQotICAgICAgICAgICAgICArICJcbk1lc3NhZ2U6XG4iCi0gICAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldFJlcXVlc3QoKS5nZXRNZXNzYWdlKCkKLSAgICAgICAgICAgICAgKyAiXG5cblJlc3BvbnNlIG1lc3NhZ2U6XG5IZWFkZXJzOlxuIgotICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRSZXNwb25zZSgpLmdldEhUVFBIZWFkZXJzKCkKLSAgICAgICAgICAgICAgKyAiXG5NZXNzYWdlOlxuIgotICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRSZXNwb25zZSgpLmdldE1lc3NhZ2UoKSwKLSAgICAgICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlAxMTE2LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlAxMTE2LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MGY4NGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQMTExNi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk9wZXJhdGlvblNpZ25hdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5UeXBlc1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLQotCi0vKioKLSAqIEJQMTExNi4KLSAqIFNPQVBBY3Rpb24gaGVhZGVyIHNob3VsZCBjb250YWluIGEgcXVvdGVkIHN0cmluZyB0aGF0IGhhcyBzYW1lIAotICogdmFsdWUgYXMgdGhlIHZhbHVlIG9mIHRoZSBzb2FwYmluZDpvcGVyYXRpb24vQHNvYXBBY3Rpb24gYXR0cmlidXRlLCAKLSAqIGFuZCBhbiBlbXB0eSBzdHJpbmcgKCIiKSBpZiB0aGVyZSBpcyBubyBzdWNoIGF0dHJpYnV0ZS4KLSAqLwotcHVibGljIGNsYXNzIEJQMTExNiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yCi17Ci0KLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIEJQMTExNihCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgYWN0aW9uID0gbnVsbDsKLSAgcHJpdmF0ZSBTdHJpbmcgaGVhZGVycyA9IG51bGw7Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbiwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBPcGVyYXRpb24gc29hcE9wZXIsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgc29hcEFjdGlvbiA9IHNvYXBPcGVyLmdldFNvYXBBY3Rpb25VUkkoKTsKLSAgICBpZiAoc29hcEFjdGlvbiA9PSBudWxsKQotICAgIHsKLSAgICAgIGlmICghIiIuZXF1YWxzKGFjdGlvbikpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9Ci0gICAgICAgICAgIlxuSFRUUCBoZWFkZXJzOlxuIiArIGhlYWRlcnMgKyAiXG5zb2FwQWN0aW9uOlxuIiArIHNvYXBBY3Rpb247Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpZiAoIXNvYXBBY3Rpb24uZXF1YWxzKGFjdGlvbikpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9Ci0gICAgICAgICAgIlxuSFRUUCBoZWFkZXJzOlxuIiArIGhlYWRlcnMgKyAiXG5zb2FwQWN0aW9uOlxuIiArIHNvYXBBY3Rpb247Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gUGFyc2UgcmVxdWVzdCBtZXNzYWdlCi0gICAgICBEb2N1bWVudCBkb2MgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5RG9jdW1lbnQoKTsKLQotICAgICAgLy8gZ2V0IFNPQVBBY3Rpb24KLSAgICAgIGhlYWRlcnMgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdCgpLmdldEhUVFBIZWFkZXJzKCk7Ci0gICAgICBpZiAoaGVhZGVycyAhPSBudWxsKQotICAgICAgICBhY3Rpb24gPSAoU3RyaW5nKSBIVFRQVXRpbHMuZ2V0SHR0cEhlYWRlclRva2VucyhoZWFkZXJzLCAiOiIpLmdldCgiU09BUEFjdGlvbiIudG9VcHBlckNhc2UoKSk7Ci0KLSAgICAgIGlmIChhY3Rpb24gPT0gbnVsbCkgCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0KLSAgICAgIGlmIChhY3Rpb24ubGVuZ3RoKCkgPiAxCi0gICAgICAgICYmIGFjdGlvbi5jaGFyQXQoMCkgPT0gJyInCi0gICAgICAgICYmIGFjdGlvbi5jaGFyQXQoYWN0aW9uLmxlbmd0aCgpIC0gMSkgPT0gJyInKQotICAgICAgewotICAgICAgICBhY3Rpb24gPSBhY3Rpb24uc3Vic3RyaW5nKDEsIGFjdGlvbi5sZW5ndGgoKSAtIDEpOwotICAgICAgfQotCi0gICAgICBPcGVyYXRpb25TaWduYXR1cmUuT3BlcmF0aW9uTWF0Y2ggbWF0Y2ggPQotICAgICAgICBPcGVyYXRpb25TaWduYXR1cmUubWF0Y2hPcGVyYXRpb24oCi0gICAgICAgICAgZG9jLAotICAgICAgICAgIG51bGwsCi0gICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0QmluZGluZ3MoKVswXSwKLSAgICAgICAgICBuZXcgVHlwZXNSZWdpc3RyeSgKLSAgICAgICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dAotICAgICAgICAgICAgICAuZ2V0Q2FuZGlkYXRlSW5mbygpCi0gICAgICAgICAgICAgIC5nZXRXc2RsRG9jdW1lbnQoKQotICAgICAgICAgICAgICAuZ2V0RGVmaW5pdGlvbnMoKSwKLSAgICAgICAgICAgICAgdmFsaWRhdG9yKSwKLSAgICAgICAgICBmYWxzZSk7Ci0KLSAgICAgIGlmIChtYXRjaCAhPSBudWxsKQotICAgICAgewotICAgICAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgICAgIC8vVmlzaXRvckFkYXB0b3IuYWRhcHQodGhpcyk7Ci0gICAgICAgIHRyYXZlcnNhbC5zZXRWaXNpdG9yKHRoaXMpOwotICAgICAgICB0cmF2ZXJzYWwudmlzaXRTT0FQT3BlcmF0aW9uKHRydWUpOwotICAgICAgICB0cmF2ZXJzYWwudHJhdmVyc2UobWF0Y2guZ2V0T3BlcmF0aW9uKCkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICBpZiAocmVzdWx0ID09IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVECi0gICAgICAmJiBmYWlsdXJlRGV0YWlsTWVzc2FnZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGZhaWx1cmVEZXRhaWxNZXNzYWdlLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDQxMDMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDQxMDMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYzYTVjZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlA0MTAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5NZXNzYWdlRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQVXRpbHM7Ci0KLS8qKgotICogQlA0MTAzCi0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIG1lc3NhZ2UgaW4gdGhlIG1lc3NhZ2UgbG9nIGZpbGU8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIG1lc3NhZ2UgY29udGFpbnMgYW4gSFRUUCBBdXRoZW50aWNhdGlvbiBoZWFkZXIgZmllbGQ8L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlA0MTAzIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyB7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhUVFBfQVVUSF9TQ0hFTUVfQkFTSUMgPSAiQmFzaWMiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSFRUUF9BVVRIX1NDSEVNRV9ESUdFU1QgPSAiRGlnZXN0IjsKLQotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlA0MTAzKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIEdldHRpbmcgbWVzc2FnZSBoZWFkZXJzCi0gICAgU3RyaW5nIGhlYWRlcnMgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0SFRUUEhlYWRlcnMoKTsKLSAgICAvLyBJZiB0aGlzIGlzIGEgcmVxdWVzdCBtZXNzYWdlCi0gICAgaWYgKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRUeXBlKCkuZXF1YWxzKE1lc3NhZ2VFbnRyeS5UWVBFX1JFUVVFU1QpKQotICAgIHsKLSAgICAgIC8vIElmIHRoZSByZXF1ZXN0IGhlYWRlcnMgY29udGFpbiBhdXRoZW50aWNhdGlvbiBzY2hlbWUgIkJhc2ljIiBvciAiRGlnZXN0IgotICAgICAgLy8gb3IgdGhlcmUgYXJlIG5vIEhUVFAgQXV0aGVudGljYXRpb24gaGVhZGVycywgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKCFjb250YWluc0ludmFsaWRBdXRoKGhlYWRlcnMsIEhUVFBDb25zdGFudHMuSEVBREVSX0FVVEhPUklaQVRJT04pCi0gICAgICAgICYmICFjb250YWluc0ludmFsaWRBdXRoKGhlYWRlcnMsIEhUVFBDb25zdGFudHMuSEVBREVSX1BST1hZX0FVVEhPUklaQVRJT04pKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgIH0KLSAgICAvLyBlbHNlIHRoaXMgaXMgYSByZXNwb25zZQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgaGVhZGVycyBjb250YWluIGF1dGhlbnRpY2F0aW9uIHNjaGVtZSAiQmFzaWMiIG9yICJEaWdlc3QiCi0gICAgICAvLyBvciB0aGVyZSBhcmUgbm8gSFRUUCBBdXRoZW50aWNhdGlvbiBoZWFkZXJzLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoIWNvbnRhaW5zSW52YWxpZEF1dGgoaGVhZGVycywgSFRUUENvbnN0YW50cy5IRUFERVJfV1dXX0FVVEhFTlRJQ0FURSkKLSAgICAgICAgJiYgIWNvbnRhaW5zSW52YWxpZEF1dGgoaGVhZGVycywgSFRUUENvbnN0YW50cy5IRUFERVJfUFJPWFlfQVVUSEVOVElDQVRFKSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBBc3NlcnRpb24gcmVzdWx0IGhhcyBub3QgYmVlbiBjaGFuZ2VkLCBIVFRQIEF1dGhlbnRpY2F0aW9uIGhlYWRlcnMKLSAgICAvLyBkb2VzIG5vdCBjb250YWluIGF1dGhlbnRpY2F0aW9uIHNjaGVtZSAiQmFzaWMiIG9yICJEaWdlc3QiLAotICAgIC8vIHRoZSBhc3NlcnRpb24gcGFzc2VkCi0gICAgaWYgKHJlc3VsdC5lcXVhbHMoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQpKQotICAgIHsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgdGVzdEFzc2VydGlvbi5nZXREZXRhaWxEZXNjcmlwdGlvbigpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyB3aGV0aGVyIEhUVFAgaGVhZGVycyBjb250YWluIEhUVFAgQXV0aGVudGljYXRpb24gaGVhZGVycyB0aGF0IHVzZXMKLSAgICogYXV0aGVudGljYXRpb24gc2NoZW1lIG90aGVyIHRoYW4gIkJhc2ljIiBvciAiRGlnZXN0Ii4KLSAgICogQHBhcmFtIGhlYWRlcnMgSFRUUCBoZWFkZXJzLgotICAgKiBAcGFyYW0gaGVhZGVyIGEgaGVhZGVyIG5hbWUgYmVpbmcgcmV0cmlldmVkLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIEhUVFAgQXV0aGVudGljYXRpb24gaGVhZGVyIHRoYXQgdXNlcyBhdXRoZW50aWNhdGlvbgotICAgKiBzY2hlbWUgb3RoZXIgdGhhbiAiQmFzaWMiIG9yICJEaWdlc3QiIGlzIGZvdW5kLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gY29udGFpbnNJbnZhbGlkQXV0aChTdHJpbmcgaGVhZGVycywgU3RyaW5nIGhlYWRlcikKLSAgewotICAgIC8vIEdldHRpbmcgYSBoZWFkZXIgdmFsdWUKLSAgICBTdHJpbmcgaGVhZGVyVmFsdWUgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIGhlYWRlclZhbHVlID0gKFN0cmluZykgSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoaGVhZGVycywiOiIpCi0gICAgICAgIC5nZXQoaGVhZGVyLnRvVXBwZXJDYXNlKCkpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9Ci0KLSAgICAvLyBJZiB0aGUgaGVhZGVyIGlzIHByZXNlbnRlZAotICAgIGlmIChoZWFkZXJWYWx1ZSAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIFJldHJpZXZpbmcgYXV0aGVudGljYXRpb24gc2NoZW1lCi0gICAgICBpbnQgaWR4U1AgPSBoZWFkZXJWYWx1ZS5pbmRleE9mKCIgIik7Ci0gICAgICBpZiAoaWR4U1AgPiAtMSkKLSAgICAgIHsKLSAgICAgICAgaGVhZGVyVmFsdWUgPSBoZWFkZXJWYWx1ZS5zdWJzdHJpbmcoMCwgaWR4U1ApOwotICAgICAgfQotICAgICAgLy8gSWYgYSBzY2hlbWUgaXMgbmVpdGhlciAiQmFzaWMiIG5vciAiRGlnZXN0IiwgcmV0dXJuIHRydWUKLSAgICAgIGlmICghaGVhZGVyVmFsdWUuZXF1YWxzSWdub3JlQ2FzZShIVFRQX0FVVEhfU0NIRU1FX0JBU0lDKQotICAgICAgICAmJiAhaGVhZGVyVmFsdWUuZXF1YWxzSWdub3JlQ2FzZShIVFRQX0FVVEhfU0NIRU1FX0RJR0VTVCkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlA0MTA0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlA0MTA0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2ZDBjZjkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQNDEwNC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBVdGlsczsKLQotLyoqCi0gKiBCUDQxMDQKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBtZXNzYWdlIGluIHRoZSBtZXNzYWdlIGxvZyBmaWxlIGNvbnRhaW5pbmcgYW4gSFRUUCBIZWFkZXIgZmllbGQgdGhhdCBpcyBub3QgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Qgb2Ygc3BlY2lmaWVkIGhlYWRlciBmaWVsZHM6IChodHRwOi8vd3d3Lm1ub3QubmV0L2RyYWZ0cy9kcmFmdC1ub3R0aW5naGFtLWh0dHAtaGVhZGVyLXJlZy0wMC50eHQpPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBtZXNzYWdlIGNvbnRhaW5zIGFuIEhUVFAgSGVhZGVyIGZpZWxkIHRoYXQgaXMgbm90IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0IG9mIHNwZWNpZmllZCBoZWFkZXIgZmllbGRzOiAoaHR0cDovL3d3dy5tbm90Lm5ldC9kcmFmdHMvZHJhZnQtbm90dGluZ2hhbS1odHRwLWhlYWRlci1yZWctMDAudHh0KTwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDQxMDQgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIHsKLQotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICBwcml2YXRlIExpc3Qga25vd25IZWFkZXJOYW1lczsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgQlA0MTA0KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gICAga25vd25IZWFkZXJOYW1lcyA9IG51bGw7Ci0gIH0KLQotICBwcml2YXRlIExpc3QgZ2V0QWxsS25vd25IZWFkZXJOYW1lcygpIHsKLSAgICBpZiAoa25vd25IZWFkZXJOYW1lcyA9PSBudWxsKSB7Ci0gICAgICBrbm93bkhlYWRlck5hbWVzID0gSFRUUENvbnN0YW50cy5nZXRBbGxLbm93bkhlYWRlck5hbWVzKCk7Ci0gICAgfQotICAgIHJldHVybiBrbm93bkhlYWRlck5hbWVzOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIC8vIGdldHRpbmcgSFRUUCBIZWFkZXJzCi0gICAgTWFwIGhtYXAgPSBIVFRQVXRpbHMuZ2V0SHR0cEhlYWRlclRva2VucygKLSAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpLCAiOiIpOwotCi0gICAgSXRlcmF0b3IgaSA9IGhtYXAua2V5U2V0KCkuaXRlcmF0b3IoKSA7Ci0gICAgd2hpbGUgKGkuaGFzTmV4dCgpKSB7Ci0gICAgICBTdHJpbmcgaGVhZGVyTmFtZSA9IChTdHJpbmcpIGkubmV4dCgpOwotICAgICAgLy8gSWYgaGVhZGVyIG5hbWUgaXMgbm90IGtub3duLCB0aGVuIHRoZSBhc3NlcnRpb24gcGFzc2VkCi0gICAgICBpZiAoIWdldEFsbEtub3duSGVhZGVyTmFtZXMoKS5jb250YWlucyhoZWFkZXJOYW1lLnRvVXBwZXJDYXNlKCkpKQotICAgICAgewotICAgICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgdGVzdEFzc2VydGlvbi5nZXREZXRhaWxEZXNjcmlwdGlvbigpLCBlbnRyeUNvbnRleHQpOwotCi0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHRoZXJlIGlzIG5vIEhUVFAgaGVhZGVyIHRoYXQgaXMgbm90IGZyb20gYSBsaXN0LAotICAgIC8vIHRoZW4gdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZSAKLSAgICBpZiAoZmFpbHVyZURldGFpbCA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQNDEwNS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQNDEwNS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTAzZDM3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDQxMDUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBjb20uaWJtLmljdS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQVXRpbHM7Ci0KLQotLyoqCi0gKiBCUDQxMDUKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBtZXNzYWdlIGluIHRoZSBtZXNzYWdlIGxvZyBmaWxlIGNvbnRhaW5pbmcgYSBDb250ZW50LWVuY29kaW5nIEhUVFAgaGVhZGVyIGZpZWxkIHdpdGggYSB2YWx1ZSBvdGhlciB0aGFuICJnemlwIiwgImNvbXByZXNzIiBvciAiZGVmbGF0ZSI8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIGNvbnRhaW5lZCBDb250ZW50LWVuY29kaW5nIEhUVFAgaGVhZGVyIGZpZWxkIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gImd6aXAiLCAiY29tcHJlc3MiIG9yICJkZWZsYXRlIi48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlA0MTA1IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyB7Ci0KLSAgLy8gQWxsIHRoZSByZWdpc3RlcmVkIGNvbnRlbnQtY29kaW5nIHZhbHVlIHRva2VucyAoUkZDMjYxNikgZXhjZXB0ICJpZGVudGl0eSIKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEdaSVBfVkFMVUUgPSAiZ3ppcCI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT01QUkVTU19WQUxVRSA9ICJjb21wcmVzcyI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZMQVRFX1ZBTFVFID0gImRlZmxhdGUiOwotCi0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDQxMDUoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICAvLyBHZXR0aW5nIHRoZSBDb250ZW50LUVuY29kaW5nIEhUVFAgaGVhZGVyIHZhbHVlCi0gICAgU3RyaW5nIGNvbnRlbnRFbmNvZGluZyA9IChTdHJpbmcpIEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyVG9rZW5zKAotICAgICAgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCksCi0gICAgICAiOiIpLmdldChIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX0VOQ09ESU5HLnRvVXBwZXJDYXNlKCkpOwotCi0gICAgaWYgKGNvbnRlbnRFbmNvZGluZyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIExvd2VyaW5nIHZhbHVlJ3MgY2FzZSBiZWNhdXNlIFJGQzI2MTYgc2F5cwotICAgICAgLy8gdGhhdCBhbGwgY29udGVudC1jb2RpbmcgdmFsdWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCi0gICAgICBjb250ZW50RW5jb2RpbmcgPSBjb250ZW50RW5jb2RpbmcudG9Mb3dlckNhc2UoKTsKLQotICAgICAgLy8gTXVsdGlwbGUgZW5jb2RpbmdzIGNhbiBiZSBhcHBsaWVkIHRvIGFuIGVudGl0eSwKLSAgICAgIC8vIHNvIGJyZWFraW5nIHRoZSB2YWx1ZSBpbnRvIHRva2VucwotICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihjb250ZW50RW5jb2RpbmcsICIsIik7Ci0gICAgICB3aGlsZSAoc3QuaGFzTW9yZVRva2VucygpKQotICAgICAgewotICAgICAgICBTdHJpbmcgdG9rZW4gPSBzdC5uZXh0VG9rZW4oKS50cmltKCk7Ci0gICAgICAgIC8vIElmIGEgdG9rZW4gZG9lcyBub3QgZXF1YWwgdG8gYW55IHJlZ2lzdGVyZWQgb25lCi0gICAgICAgIC8vIHRoZW4gdGhlIGFzc2VydGlvbiBwYXNzZWQKLSAgICAgICAgaWYgKCAhdG9rZW4uZXF1YWxzKEdaSVBfVkFMVUUpCi0gICAgICAgICAgJiYgIXRva2VuLmVxdWFscyhDT01QUkVTU19WQUxVRSkKLSAgICAgICAgICAmJiAhdG9rZW4uZXF1YWxzKERFRkxBVEVfVkFMVUUpKSB7Ci0KLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICB0ZXN0QXNzZXJ0aW9uLmdldERldGFpbERlc2NyaXB0aW9uKCksIGVudHJ5Q29udGV4dCk7Ci0KLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHRoZXJlIGlzIG5vIHVucmVnaXN0ZXJlZCB2YWx1ZSBvZiBDb250ZW50LUVuY29kaW5nLAotICAgIC8vIHRoZW4gdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZSAKLSAgICBpZiAoZmFpbHVyZURldGFpbCA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQNDEwNi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQNDEwNi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjc4NjMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9CUDQxMDYuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUFV0aWxzOwotCi0KLS8qKgotICogQlA0MTA2Ci0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgcmVzcG9uc2UgbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSBsb2cgZmlsZSB0aGF0IGNvbnRhaW5zIGEgdHJhbnNmZXItZW5jb2RpbmcgSFRUUCBoZWFkZXIgZmllbGQuPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBjb250YWluZWQgdHJhbnNmZXItZW5jb2RpbmcgSFRUUCBoZWFkZXIgZmllbGQgaGFzIGEgdmFsdWUgb2YgImNodW5rZWQiPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQNDEwNiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgewotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDSFVOS0VEX1ZBTFVFID0gImNodW5rZWQiOwotCi0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDQxMDYoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICAvLyBHZXR0aW5nIGEgVHJhbnNmZXItRW5jb2RpbmcgSFRUUCBoZWFkZXIgdmFsdWUKLSAgICBTdHJpbmcgdHJhbnNmZXJFbmNvZGluZyA9IChTdHJpbmcpIEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyVG9rZW5zKAotICAgICAgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCksCi0gICAgICAiOiIpLmdldChIVFRQQ29uc3RhbnRzLkhFQURFUl9UUkFOU0ZFUl9FTkNPRElORy50b1VwcGVyQ2FzZSgpKTsKLQotICAgIGlmICh0cmFuc2ZlckVuY29kaW5nICE9IG51bGwpCi0gICAgewotICAgICAgLy8gTG93ZXJpbmcgdmFsdWUncyBjYXNlIGJlY2F1c2UgUkZDMjYxNiBzYXlzCi0gICAgICAvLyB0aGF0IGFsbCB0cmFuc2Zlci1jb2RpbmcgdmFsdWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCi0gICAgICB0cmFuc2ZlckVuY29kaW5nID0gdHJhbnNmZXJFbmNvZGluZy50b0xvd2VyQ2FzZSgpOwotCi0gICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgb3RoZXIgdGhhbiAiY2h1bmtlZCIsIHRoZW4gdGhlIGFzc2VydGlvbiBwYXNzZWQKLSAgICAgIGlmICghdHJhbnNmZXJFbmNvZGluZy5lcXVhbHMoQ0hVTktFRF9WQUxVRSkpIHsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgIHRlc3RBc3NlcnRpb24uZ2V0RGV0YWlsRGVzY3JpcHRpb24oKSwgZW50cnlDb250ZXh0KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBJZiB0aGVyZSBpcyBubyBUcmFuZmVyLUVuY29kaW5nIG9yIGl0cyB2YWx1ZSBpcyAiY2h1bmtlZCIsCi0gICAgLy8gdGhlbiB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlIAotICAgIGlmIChmYWlsdXJlRGV0YWlsID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlA0MTA3LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvQlA0MTA3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OTlhMzMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL0JQNDEwNy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQVXRpbHM7Ci0KLQotLyoqCi0gKiBCUDQxMDcKLSAqIDxjb250ZXh0PkZvciBhIHJlcXVlc3QgbWVzc2FnZSBjb250YWluaW5nIGFuIFVwZ3JhZGUgZmllbGQgaW4gdGhlIEhUVFAgSGVhZGVycy48L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIHJlcXVlc3QgbWVzc2FnZSBjb250YWlucyBhbiBVcGdyYWRlIGZpZWxkIGluIHRoZSBIVFRQIEhlYWRlcnMuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQNDEwNyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgewotCi0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBCUDQxMDcoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gR2V0dGluZyB0aGUgVXBncmFkZSBIVFRQIGhlYWRlciB2YWx1ZQotICAgIFN0cmluZyB1cGdyYWdlID0gKFN0cmluZykgSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoCi0gICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0SFRUUEhlYWRlcnMoKSwKLSAgICAgICI6IikuZ2V0KEhUVFBDb25zdGFudHMuSEVBREVSX1VQR1JBREUudG9VcHBlckNhc2UoKSk7IAotCi0gICAgLy8gSWYgdGhlIGhlYWRlciBpcyBwcmVzZW50ZWQsIHRoZW4gdGhlIGFzc2VydGlvbiBwYXNzZWQKLSAgICBpZiAodXBncmFnZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgdGVzdEFzc2VydGlvbi5nZXREZXRhaWxEZXNjcmlwdGlvbigpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICAvLyBlbHNlIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICBlbHNlCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvTWVzc2FnZVZhbGlkYXRvckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9NZXNzYWdlVmFsaWRhdG9ySW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWFmMGU2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9NZXNzYWdlVmFsaWRhdG9ySW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzIElCTSBDb3Jwb3JhdGlvbiwgUGFyYXNvZnQgYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNICAgICAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqICAgUGFyYXNvZnQgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5NZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotCi0vKioKLSAqIEB2ZXJzaW9uIDEuMAotICovCi1wdWJsaWMgY2xhc3MgTWVzc2FnZVZhbGlkYXRvckltcGwKLSAgZXh0ZW5kcyBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICBpbXBsZW1lbnRzIE1lc3NhZ2VWYWxpZGF0b3IKLXsKLSAgLyoqCi0gICAqIEdldCB0aGUgYXJ0aWZhY3QgdHlwZSB0aGF0IHRoaXMgdmFsaWRhdG9yIGFwcGxpZXMgdG8uCi0gICAqIEByZXR1cm4gdGhlIGFydGlmYWN0IHR5cGUgKGEgU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRBcnRpZmFjdFR5cGUoKSB7Ci0gICAgICByZXR1cm4gVFlQRV9NRVNTQUdFOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgY29sbGVjdGlvbiBvZiBlbnRyeSB0eXBlcyB0aGF0IHRoaXMgdmFsaWRhdG9yIGFwcGxpZXMgdG8uCi0gICAqIEByZXR1cm4gYW4gYXJyYXkgb2YgZW50cnkgdHlwZXMgKFN0cmluZ3MpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nW10gZ2V0RW50cnlUeXBlcygpIHsKLSAgICAgIHJldHVybiBuZXcgU3RyaW5nW10gewotICAgICAgICAgICAgICBUWVBFX01FU1NBR0VfUkVRVUVTVCwKLSAgICAgICAgICAgICAgVFlQRV9NRVNTQUdFX1JFU1BPTlNFLAotICAgICAgICAgICAgICBUWVBFX01FU1NBR0VfQU5ZLAotICAgICAgICAgICAgICBUWVBFX01JTUVfUEFSVCwKLSAgICAgICAgICAgICAgVFlQRV9NSU1FX1JPT1RfUEFSVAotICAgICAgfTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbCNpc1ByaW1hcnlFbnRyeVR5cGVNYXRjaChvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNQcmltYXJ5RW50cnlUeXBlTWF0Y2goCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gIHsKLSAgICBib29sZWFuIG1hdGNoID0gZmFsc2U7Ci0KLSAgICAvLyBWZXJpZnkgdGhhdCB0aGUgZW50cnkgYW5kIHRlc3QgYXNzZXJ0aW9uIGhhdmUgdGhlIHNhbWUgcHJpbWFyeSBjb250ZXh0Ci0gICAgaWYgKCh0ZXN0QXNzZXJ0aW9uLmdldEVudHJ5VHlwZU5hbWUoKS5lcXVhbHMoVFlQRV9NRVNTQUdFX0FOWSkpCi0gICAgICB8fCAodGVzdEFzc2VydGlvbi5nZXRFbnRyeVR5cGVOYW1lKCkuZXF1YWxzKFRZUEVfTUVTU0FHRV9SRVFVRVNUKQotICAgICAgICAmJiAoZW50cnlDb250ZXh0Ci0gICAgICAgICAgLmdldEVudHJ5KCkKLSAgICAgICAgICAuZ2V0RW50cnlUeXBlKCkKLSAgICAgICAgICAuZ2V0VHlwZU5hbWUoKQotICAgICAgICAgIC5lcXVhbHMoVFlQRV9NRVNTQUdFX1JFUVVFU1QpKSkKLSAgICAgIHx8ICh0ZXN0QXNzZXJ0aW9uLmdldEVudHJ5VHlwZU5hbWUoKS5lcXVhbHMoVFlQRV9NRVNTQUdFX1JFU1BPTlNFKQotICAgICAgICAmJiAoZW50cnlDb250ZXh0Ci0gICAgICAgICAgLmdldEVudHJ5KCkKLSAgICAgICAgICAuZ2V0RW50cnlUeXBlKCkKLSAgICAgICAgICAuZ2V0VHlwZU5hbWUoKQotICAgICAgICAgIC5lcXVhbHMoVFlQRV9NRVNTQUdFX1JFU1BPTlNFKSkpCi0gICAgICB8fCB0ZXN0QXNzZXJ0aW9uLmdldEVudHJ5VHlwZU5hbWUoKS5lcXVhbHMoVFlQRV9NSU1FX1JPT1RfUEFSVCkKLSAgICAgIHx8IHRlc3RBc3NlcnRpb24uZ2V0RW50cnlUeXBlTmFtZSgpLmVxdWFscyhUWVBFX01JTUVfUEFSVCkpCi0gICAgewotICAgICAgbWF0Y2ggPSB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBtYXRjaDsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9TU0JQMTAwMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1NTQlAxMDAzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MWVhZTYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1NTQlAxMDAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvblBhc3NFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUFV0aWxzOwotCi0KLS8qKgotICogU1NCUDEwMDMuCi0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIG5vbi1tdWx0aXBhcnQvcmVsYXRlZCBtZXNzYWdlIGluIHRoZSBsb2cgZmlsZSwgd2hpY2ggaGFzIGEgbm9uLWVtcHR5IGVudGl0eS1ib2R5PC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPgotICogIFRoZSBsb2dnZWQgU09BUCBlbnZlbG9wZSBpcyBhIFVURi04IHRyYW5zY3JpcHQgb2YgYW4gZW52ZWxvcGUgb3JpZ2luYWxseSBlbmNvZGVkIGFzIFVURi04IG9yIFVURi0xNi4gCi0gKiAgVGhlIEhUVFAgQ29udGVudC1UeXBlIGhlYWRlcidzIGNoYXJzZXQgdmFsdWUgaXMgZWl0aGVyIFVURi04IG9yIFVURi0xNi4gTG9va2luZyBhdCB0aGUgbWVzc2FnZUNvbnRlbnQgCi0gKiAgZWxlbWVudCBvZiB0aGUgbG9nZ2VkIG1lc3NhZ2UsIGVpdGhlciAKLSAqICAgICgxKSBpdCBoYXMgYSBCT00gYXR0cmlidXRlIHdoaWNoIG1hcHMgdGhlIGNoYXJzZXQgdmFsdWUgaW4gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIsIG9yIAotICogICAgKDIpIGl0IGhhcyBpdCBoYXMgYW4gWE1MIGRlY2xhcmF0aW9uIHdoaWNoIG1hdGNoZXMgdGhlIGNoYXJzZXQgdmFsdWUgaW4gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIsIG9yIAotICogICAgKDMpIHRoZXJlIGlzIG5vIEJPTSBhdHRyaWJ1dGUgYW5kIG5vIFhNTCBkZWNsYXJhdGlvbiwgYW5kIHRoZSBjaGFyc2V0IHZhbHVlIGlzIFVURi04LgotICogPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqCi0gKiBAYXV0aG9yIGxhdXpvbmQKLSAqLyAKLXB1YmxpYyBjbGFzcyBTU0JQMTAwMyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJvdGVjdGVkIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgU1NCUDEwMDMoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gSWYgdGhlcmUgaXMgYSByZXNwb25zZSBtZXNzYWdlIGZvciBvbmUtd2F5IG9wZXJhdGlvbiwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKHZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIFN0cmluZyBodHRwSGVhZGVyID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCk7Ci0KLSAgICAgIE1hcCBodHRwSGVhZGVyTWFwID0gSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoaHR0cEhlYWRlciwgIjoiKTsKLSAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IChTdHJpbmcpIGh0dHBIZWFkZXJNYXAuZ2V0KCJDb250ZW50LVR5cGUiLnRvVXBwZXJDYXNlKCkpOwotCi0gICAgICBpZiAoY29udGVudFR5cGUgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oCi0gICAgICAgICAgIlRoZSBDb250ZW50LVR5cGUgaGVhZGVyIGlzIG5vdCBwcmVzZW50LiIpOwotICAgICAgfQotCi0gICAgICBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLnRyaW0oKTsKLSAgICAgIFN0cmluZyBjaGFyc2V0ID0gY29udGVudFR5cGUuc3Vic3RyaW5nKAotICAgICAgICBjb250ZW50VHlwZS5pbmRleE9mKCI7IikgKyAxLCBjb250ZW50VHlwZS5sZW5ndGgoKSk7Ci0gICAgICBjaGFyc2V0ID0gY2hhcnNldC50cmltKCk7Ci0gICAgICBpZiAoIWNoYXJzZXQuc3RhcnRzV2l0aCgiY2hhcnNldCIpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAiTWlzc2luZyBvciBiYWQgXCJjaGFyc2V0XCIgYXR0cmlidXRlIGluIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyOiAiCi0gICAgICAgICAgKyBjaGFyc2V0KTsKLSAgICAgIH0KLQotICAgICAgU3RyaW5nIGNoYXJzZXRWYWx1ZSA9IGNoYXJzZXQuc3Vic3RyaW5nKAotICAgICAgICBjaGFyc2V0LmluZGV4T2YoIj0iKSArIDEsIGNoYXJzZXQubGVuZ3RoKCkpOwotICAgICAgaWYgKGNoYXJzZXRWYWx1ZS5zdGFydHNXaXRoKCJcIiIpKQotICAgICAgewotICAgICAgICBjaGFyc2V0VmFsdWUgPSBjaGFyc2V0VmFsdWUuc3Vic3RyaW5nKDEsIGNoYXJzZXRWYWx1ZS5sZW5ndGgoKSAtIDEpOwotICAgICAgfQotCi0gICAgICBpZiAoIWNoYXJzZXRWYWx1ZS5lcXVhbHNJZ25vcmVDYXNlKCJ1dGYtOCIpCi0gICAgICAgICAgJiYgIWNoYXJzZXRWYWx1ZS5lcXVhbHNJZ25vcmVDYXNlKCJ1dGYtMTYiKSkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSB2YWx1ZSBvZiB0aGUgXCJjaGFyc2V0XCIgIgotICAgICAgICAgICsgImF0dHJpYnV0ZSBvZiB0aGUgQ29udGVudC1UeXBlIGhlYWRlciBpcyAiICsgY29udGVudFR5cGUpOwotICAgICAgfQotICAgICAgLy8gUGFyc2UgbG9nIG1lc3NhZ2UKLSAgICAgIC8vZ2V0cyBmaXJzdCBzdHJpbmcKLSAgICAgIGludCBpZHggPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpLmluZGV4T2YoIjw/eG1sIik7Ci0gICAgICBpZiAoaWR4ID09IC0xKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICBpbnQgaWR4MiA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCkuaW5kZXhPZigiPz4iKTsKLSAgICAgIGlmIChpZHgyID09IC0xKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICBTdHJpbmcgeG1sRGVjbGFyYXRpb24gPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpCi0gICAgICAgIC5zdWJzdHJpbmcoaWR4LCBpZHgyICsgIj8+Ii5sZW5ndGgoKSk7Ci0KLSAgICAgIGlkeCA9IHhtbERlY2xhcmF0aW9uLmluZGV4T2YoImVuY29kaW5nIik7Ci0gICAgICBpZiAoaWR4ID09IC0xKQotICAgICAgewotICAgICAgICBpZiAoY2hhcnNldFZhbHVlLmVxdWFsc0lnbm9yZUNhc2UoInV0Zi04IikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25QYXNzRXhjZXB0aW9uKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZXJlIGlzIG5vIFhNTCBkZWNsYXJhdGlvbiBhbmQgdGhlIgotICAgICAgICAgICAgKyAiIGNoYXJzZXQgdmFsdWUgaW4gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgaXMgbm90IFVURi04LiIKLSAgICAgICAgICAgICsgIlxuQ2hhcnNldCB2YWx1ZSBpbiB0aGUgQ29udGVudC1UeXBlIGhlYWRlcjogIiArIGNoYXJzZXRWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaW50IGlkeFEgPSB4bWxEZWNsYXJhdGlvbi5pbmRleE9mKCdcJycsIGlkeCk7Ci0gICAgICBpbnQgaWR4UVEgPSB4bWxEZWNsYXJhdGlvbi5pbmRleE9mKCdcIicsIGlkeCk7Ci0gICAgICBpbnQgaWR4UXVvdGUgPSAtMTsKLSAgICAgIGNoYXIgcW91dGVDaCA9ICdcMCc7Ci0gICAgICBpZiAoaWR4USA9PSAtMSkKLSAgICAgIHsKLSAgICAgICAgaWR4UXVvdGUgPSBpZHhRUTsKLSAgICAgICAgcW91dGVDaCA9ICdcIic7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGlmIChpZHhRUSA9PSAtMSkKLSAgICAgICAgewotICAgICAgICAgIGlkeFF1b3RlID0gaWR4UTsKLSAgICAgICAgICBxb3V0ZUNoID0gJ1wnJzsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoaWR4UVEgPCBpZHhRKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlkeFF1b3RlID0gaWR4UVE7Ci0gICAgICAgICAgICBxb3V0ZUNoID0gJ1wiJzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlkeFF1b3RlID0gaWR4UTsKLSAgICAgICAgICAgIHFvdXRlQ2ggPSAnXCcnOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoaWR4UXVvdGUgPT0gLTEgfHwgcW91dGVDaCA9PSAnXDAnKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICBpbnQgaWR4TFFvdXRlID0geG1sRGVjbGFyYXRpb24uaW5kZXhPZihxb3V0ZUNoLCBpZHhRdW90ZSArIDEpOwotCi0gICAgICBpZiAoaWR4TFFvdXRlID09IC0xKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICBTdHJpbmcgeG1sRW5jb2RpbmcgPQotICAgICAgICB4bWxEZWNsYXJhdGlvbi5zdWJzdHJpbmcoaWR4UXVvdGUgKyAxLCBpZHhMUW91dGUpOwotICAgICAgaWYgKGNoYXJzZXRWYWx1ZS5lcXVhbHNJZ25vcmVDYXNlKHhtbEVuY29kaW5nKSkKLSAgICAgIHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBCT00sIHRoZW4gY2hlY2sgdGhhdCBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgeG1sRW5jb2RpbmcKLSAgICAgICAgaW50IGJvbSA9IDA7Ci0gICAgICAgIGlmICgoYm9tID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEJPTSgpKSAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKChib20gPT0gV1NJQ29uc3RhbnRzLkJPTV9VVEY4Ci0gICAgICAgICAgICAmJiAheG1sRW5jb2RpbmcuZXF1YWxzSWdub3JlQ2FzZSgidXRmLTgiKSkKLSAgICAgICAgICAgIHx8ICgoYm9tID09IFdTSUNvbnN0YW50cy5CT01fVVRGMTYKLSAgICAgICAgICAgICAgJiYgIXhtbEVuY29kaW5nLmVxdWFsc0lnbm9yZUNhc2UoInV0Zi0xNiIpKSkKLSAgICAgICAgICAgIHx8ICgoYm9tID09IFdTSUNvbnN0YW50cy5CT01fVVRGMTZfQklHX0VORElBTgotICAgICAgICAgICAgICAmJiAheG1sRW5jb2RpbmcuZXF1YWxzSWdub3JlQ2FzZSgidXRmLTE2IikpKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgIlRoZSBCT00gYW5kIFhNTCBkZWNsYXJhdGlvbiBkbyBub3QgbWF0Y2guIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvblBhc3NFeGNlcHRpb24oKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZXJlIGlzIGFuIFhNTCBkZWNsYXJhdGlvbiwgYnV0IGl0cyAiCi0gICAgICAgICAgKyAiZW5jb2RpbmcgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIGNoYXJzZXQgdmFsdWUuXG4iCi0gICAgICAgICAgKyAiQ2hhcnNldCB2YWx1ZSBpbiB0aGUgQ29udGVudC1UeXBlIGhlYWRlcjogIiArIGNoYXJzZXRWYWx1ZQotICAgICAgICAgICsgIlxuRW5jb2RpbmcgaW4gdGhlIFhNTCBkZWNsYXJhdGlvbjogIiArIHhtbEVuY29kaW5nKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvblBhc3NFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gYW5hZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvU1NCUDUxMDAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9TU0JQNTEwMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjIxNTJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9TU0JQNTEwMC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLQotCi0vKioKLSAqIFNTQlA1MTAwCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgbWVzc2FnZSBpbiB0aGUgbG9nIGZpbGUsIHdpdGggYW4gSFRUUCBlbnRpdHktYm9keS48L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIFNPQVAgZW52ZWxvcGUgaXMgdGhlIGV4Y2x1c2l2ZSBwYXlsb2FkIG9mIHRoZSBIVFRQIGVudGl0eS1ib2R5LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBTU0JQNTEwMCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgewotCi0gIHByb3RlY3RlZCBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFNTQlA1MTAwKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0dGluZyBhIG1lc3NhZ2UgZG9jdW1lbnQKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotICAgICAgCi0gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBlbXB0eSBvciBpbnZhbGlkLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoZG9jID09IG51bGwpCi0gICAgICB7IAotICAgICAgCWlmICh0aGlzLnZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkpCi0gICAgICAJCSB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgCWVsc2UJCi0gICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oKTsKLSAgICAgIH0KLSAgICAgIGlmICghZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmdldExvY2FsTmFtZSgpLmVxdWFscyhYTUxVdGlscy5TT0FQX0VMRU1fRU5WRUxPUEUpKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigpOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgdGVzdEFzc2VydGlvbi5nZXRGYWlsdXJlTWVzc2FnZSgpLAotICAgICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGFuYWUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvU1NCUDUxMDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9TU0JQNTEwMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmFlNTIwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9TU0JQNTEwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBVdGlsczsKLQotLyoqCi0gKiBTU0JQNTEwMQotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIG1lc3NhZ2UgaW4gdGhlIGxvZyBmaWxlLjwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5BIG1lc3NhZ2UgbXVzdCBoYXZlIGEgIkNvbnRlbnQtVHlwZSIgSFRUUCBoZWFkZXIgZmllbGQuICBUaGUgIkNvbnRlbnQtVHlwZSIgSFRUUCBoZWFkZXIgZmllbGQgbXVzdCBoYXZlIGEgZmllbGQtdmFsdWUgd2hvc2UgbWVkaWEgdHlwZSBpcyAidGV4dC94bWwiLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKiAKLSAqIEBhdXRob3IgbGF1em9uZAotICovCi1wdWJsaWMgY2xhc3MgU1NCUDUxMDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIHsKLQotICBwcm90ZWN0ZWQgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBTU0JQNTEwMShCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIC8vIGdldHRpbmcgQ29udGVudC1UeXBlIEhUVFAgaGVhZGVyCi0gICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gKFN0cmluZykgSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoCi0gICAgICBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0SFRUUEhlYWRlcnMoKSwKLSAgICAgICI6IikuZ2V0KEhUVFBDb25zdGFudHMuSEVBREVSX0NPTlRFTlRfVFlQRS50b1VwcGVyQ2FzZSgpKTsKLQotICAgIC8vIGlmIENvbnRlbnQtVHlwZSBoZWFkZXIgaXMgbm90IHByZXNlbnRlZAotICAgIC8vIG9yIGRvZXMgbm90IGVxdWFsIHRvIHRleHQveG1sLCB0aGVuIHRoZSBhc3NlcnRpb24gaXMgZmFpbGVkCi0gICAgaWYgKGNvbnRlbnRUeXBlID09IG51bGwKLSAgICAgIHx8ICFjb250ZW50VHlwZS5zdGFydHNXaXRoKFdTSUNvbnN0YW50cy5DT05URU5UX1RZUEVfVEVYVF9YTUwpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICB0ZXN0QXNzZXJ0aW9uLmdldEZhaWx1cmVNZXNzYWdlKCksCi0gICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIHJldHVybiB0aGlzLnZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDAxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMDY2YjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLQotLyoqCi0gKiBXU0kxMDAxCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMDAxIGV4dGVuZHMgQlAxMDAxCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEwMDEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNDMwOGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLQotLyoqCi0gKiBXU0kxMDAyCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMDAyIGV4dGVuZHMgQlAxMDAyCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEwMDIoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDAzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMDQxMDQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLQotLyoqCi0gKiBXU0kxMDAzCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMDAzIGV4dGVuZHMgU1NCUDEwMDMKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTAwMyhCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAwNC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRmYWQ4Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAwNC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotCi0vKioKLSAqIFdTSTEwMDQKLSAqLwotcHVibGljIGNsYXNzIFdTSTEwMDQgZXh0ZW5kcyBCUDEwMDQKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTAwNChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAwNS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMxYzAwNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAwNS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQMTAwNTsKLQotLyoqCi0gKiBXU0kxMDA1Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMDA1IGV4dGVuZHMgQlAxMDA1Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEwMDUoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDA2LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyZDZmODguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDYuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLQotLyoqCi0gKiBXU0kxMDA2Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMDA2IGV4dGVuZHMgQlAxMDA2Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEwMDYoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDA3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzODVhYWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDEwMDc7Ci0KLS8qKgotICogV1NJMTAwNwotICovCi1wdWJsaWMgY2xhc3MgV1NJMTAwNyBleHRlbmRzIEJQMTAwNwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMDA3KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDA4LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAwOC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmNkMGVlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDA4LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuQlAxMDA4OwotCi0vKioKLSAqIFdTSTEwMDgKLSAqLwotcHVibGljIGNsYXNzIFdTSTEwMDggZXh0ZW5kcyBCUDEwMDgKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTAwOChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAwOS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMDkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI2OGViZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAwOS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQMTAwOTsKLQotLyoqCi0gKiBXU0kxMDA5Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMDA5IGV4dGVuZHMgQlAxMDA5Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEwMDkoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMTAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDEwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMmQ5ODYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMTAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLQotLyoqCi0gKiBXU0kxMDEwCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMDEwIGV4dGVuZHMgQlAxMDEwCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEwMTAoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMTEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDExLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZGNkY2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMTEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDEwMTE7Ci0KLS8qKgotICogV1NJMTAxMQotICovCi1wdWJsaWMgY2xhc3MgV1NJMTAxMSBleHRlbmRzIEJQMTAxMQotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMDExKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDEyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAxMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2Y1NzFiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDEyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuQlAxMDEyOwotCi0vKioKLSAqIFdTSTEwMTIKLSAqLwotcHVibGljIGNsYXNzIFdTSTEwMTIgZXh0ZW5kcyBCUDEwMTIKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTAxMihCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAxMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMTMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg3ZTU5Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTAxMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQMTAxMzsKLQotLyoqCi0gKiBXU0kxMDEzCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMDEzIGV4dGVuZHMgQlAxMDEzCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEwMTMoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMzEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMDMxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZDM5MTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEwMzEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDEwMzE7Ci0KLS8qKgotICogV1NJMTAzMQotICovCi1wdWJsaWMgY2xhc3MgV1NJMTAzMSBleHRlbmRzIEJQMTAzMQotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMDMxKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTAwLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzIwYTA0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTAwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuQlAxMTAwOwotCi0vKioKLSAqIFdTSTExMDAKLSAqLwotcHVibGljIGNsYXNzIFdTSTExMDAgZXh0ZW5kcyBCUDExMDAKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTEwMChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JiMTEzYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotCi0vKioKLSAqIFdTSTExMDEKLSAqLwotcHVibGljIGNsYXNzIFdTSTExMDEgZXh0ZW5kcyBCUDExMDEKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTEwMShCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMDIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEzODMyZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKLQotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuSFRUUFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkh0dHBIZWFkZXJzVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlV0aWxzOwotaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLQotCi0vKioKLSAqIEJQV1NJNC4KLSAqIFRoZSByZXF1ZXN0IG1lc3NhZ2Ugc2hvdWxkIGJlIGludmFsaWQgKEhUVFAgcmVxdWVzdCBtYWxmb3JtZWQsIAotICogWE1MIG5vdCB3ZWxsIGZvcm1lZCwgLi4uKS4KLSAqLwotcHVibGljIGNsYXNzIFdTSTExMDIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMTAyKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIFN0cmluZyBodHRwSGVhZGVyID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCk7Ci0KLSAgICBTdHJpbmcgcmVxdWVzdE1lc3NhZ2UgPSBudWxsOwotICAgIC8vU3RyaW5nIHJlc3BvbnNlTWVzc2FnZSA9IG51bGw7Ci0gICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gbnVsbDsKLSAgICByZXN1bHQgPSBudWxsOwotICAgIC8vCi0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBjaGVjayBIVFRQIHN0YXR1cyBjb2RlCi0gICAgICBTdHJpbmcgaHR0cFN0YXR1cyA9Ci0gICAgICAgIFV0aWxzLmdldEhUVFBTdGF0dXNDb2RlKAotICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpKTsKLSAgICAgIGlmICgiNDAwIi5lcXVhbHMoaHR0cFN0YXR1cykpCi0gICAgICB7Ci0KLSAgICAgICAgcmVxdWVzdE1lc3NhZ2UgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdCgpLmdldE1lc3NhZ2UoKTsKLQotICAgICAgICBTdHJpbmcgcmVxdWVzdEhUVFBIZWFkZXJzID0KLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdCgpLmdldEhUVFBIZWFkZXJzKCk7Ci0KLSAgICAgICAgLy9jaGVjayByZXF1ZXN0IEhUVFAgSGVhZGVycwotCi0gICAgICAgIC8vSHR0cEhlYWRlcnNWYWxpZGF0b3IgdmFsaWRhdG9yID0gbmV3IEh0dHBIZWFkZXJzVmFsaWRhdG9yKCk7Ci0KLSAgICAgICAgaWYgKCFIdHRwSGVhZGVyc1ZhbGlkYXRvcgotICAgICAgICAgIC52YWxpZGF0ZUh0dHBSZXF1ZXN0SGVhZGVycyhyZXF1ZXN0SFRUUEhlYWRlcnMpKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvL2NoZWNrIHJlcXVlc3QgeG1sIG1lc3NhZ2UKLQotICAgICAgICBjb250ZW50VHlwZSA9IChTdHJpbmcpIEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyVG9rZW5zKGh0dHBIZWFkZXIsICI6IikKLSAgICAgICAgIC5nZXQoSFRUUENvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9UWVBFLnRvVXBwZXJDYXNlKCkpOwotICAgICAgICBpZiAoY29udGVudFR5cGUuaW5kZXhPZihXU0lDb25zdGFudHMuQ09OVEVOVF9UWVBFX1RFWFRfWE1MKSAhPSAtMSkKLSAgICAgICAgewotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyZXF1ZXN0TWVzc2FnZSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGZhY3RvcnkgPQotICAgICAgICAgICAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLSAgICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyIGJ1aWxkZXIgPSBmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOwotICAgICAgICAgICAgICAvL0RvY3VtZW50IGRvYyA9IGJ1aWxkZXIucGFyc2UobmV3IElucHV0U291cmNlKG5ldyBTdHJpbmdSZWFkZXIocmVxdWVzdE1lc3NhZ2UpKSk7Ci0gICAgICAgICAgICAgIGJ1aWxkZXIucGFyc2UoCi0gICAgICAgICAgICAgICAgbmV3IElucHV0U291cmNlKG5ldyBTdHJpbmdSZWFkZXIocmVxdWVzdE1lc3NhZ2UpKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKFNBWEV4Y2VwdGlvbiBlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgbmV3IFdTSUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HOwotICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICAgIlxuUmVxdWVzdCBtZXNzYWdlOlxuSGVhZGVyczpcbiIKLSAgICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0SFRUUEhlYWRlcnMoKQotICAgICAgICAgICAgICAgICsgIk1lc3NhZ2U6XG4iCi0gICAgICAgICAgICAgICAgKyBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdCgpLmdldE1lc3NhZ2UoKQotICAgICAgICAgICAgICAgICsgIlxuXG5SZXNwb25zZSBtZXNzYWdlOlxuSGVhZGVyczpcbiIKLSAgICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRSZXNwb25zZSgpLmdldEhUVFBIZWFkZXJzKCkKLSAgICAgICAgICAgICAgICArICJNZXNzYWdlOlxuIgotICAgICAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldFJlc3BvbnNlKCkuZ2V0TWVzc2FnZSgpLAotICAgICAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChXU0lFeGNlcHRpb24gd3NpZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjQ2NTI5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci0KLS8qKgotICogV1NJMTEwMwotICovCi1wdWJsaWMgY2xhc3MgV1NJMTEwMyBleHRlbmRzIEJQMTEwMwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMTAzKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTA0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjJlNDZkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTA0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci0KLS8qKgotICogV1NJMTEwNC4KLSAqIFRoZSByZXF1ZXN0IG1lc3NhZ2Ugc2hvdWxkIG5vdCBjb250YWluIGEgY29udGVudC10eXBlIG9mICJ0ZXh0L3htbCIuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMTA0IGV4dGVuZHMgQlAxMTA0Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTExMDQoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwNS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMDUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQxYTNiYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwNS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkhUVFBVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5TZXRDb29raWUyVmFsaWRhdG9yOwotCi0KLS8qKgotICogQlBXU0k0LgotICogVGhlIENvb2tpZXMgc2hvdWxkIGNvbmZvcm0gdG8gUkZDMjk2NS4KLSAqLwotcHVibGljIGNsYXNzIFdTSTExMDUgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMTA1KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKFRlc3RBc3NlcnRpb24sIEVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBTZXRDb29raWUyVmFsaWRhdG9yIGNvb2tpZVZhbCA9IG5ldyBTZXRDb29raWUyVmFsaWRhdG9yKCk7Ci0gICAgU3RyaW5nIGhlYWRlcnMgPSBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0SFRUUEhlYWRlcnMoKTsKLSAgICBpZiAoZW50cnlDb250ZXh0Ci0gICAgICAuZ2V0TWVzc2FnZUVudHJ5KCkKLSAgICAgIC5nZXRUeXBlKCkKLSAgICAgIC5lcXVhbHNJZ25vcmVDYXNlKE1lc3NhZ2VFbnRyeS5UWVBFX1JFU1BPTlNFKSkKLSAgICB7Ci0gICAgICAvLyBpZiByZXNwb25zZSB0cm9tIHNlcnZlcgotICAgICAgU3RyaW5nIHNldENvb2tpZTIgPQotICAgICAgICAoU3RyaW5nKSBIVFRQVXRpbHMuZ2V0SHR0cEhlYWRlclRva2VucyhoZWFkZXJzLCAiOiIpLmdldCgiU2V0LUNvb2tpZTIiLnRvVXBwZXJDYXNlKCkpOwotICAgICAgaWYgKHNldENvb2tpZTIgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaWYgKGNvb2tpZVZhbC5pc1NldENvb2tpZTIoc2V0Q29va2llMi50cmltKCkpKQotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1dBUk5JTkc7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgICAgICAiXG5NZXNzYWdlOlxuSGVhZGVyczpcbiIKLSAgICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRIVFRQSGVhZGVycygpCi0gICAgICAgICAgICAgICAgKyAiXG5TT0FQIG1lc3NhZ2U6XG4iCi0gICAgICAgICAgICAgICAgKyBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpLAotICAgICAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBpZiByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIKLSAgICAgIFN0cmluZyBjb29raWUgPQotICAgICAgICAoU3RyaW5nKSBIVFRQVXRpbHMuZ2V0SHR0cEhlYWRlclRva2VucyhoZWFkZXJzLCAiOiIpLmdldCgiQ29va2llIik7Ci0gICAgICBpZiAoY29va2llID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGlmIChjb29raWVWYWwuaXNDb29raWUoY29va2llLnRyaW0oKSkpCi0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfV0FSTklORzsKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAgICJcbk1lc3NhZ2U6XG5IZWFkZXJzOlxuIgotICAgICAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldEhUVFBIZWFkZXJzKCkKLSAgICAgICAgICAgICAgICArICJcblNPQVAgbWVzc2FnZTpcbiIKLSAgICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCksCi0gICAgICAgICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMDcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTA3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOTEzZTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMDcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDExMDc7Ci0KLS8qKgotICogV1NJMTEwNwotICovCi1wdWJsaWMgY2xhc3MgV1NJMTEwNyBleHRlbmRzIEJQMTEwNwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMTA3KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTA4LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwOC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTIzNmU2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTA4LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQ7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWVzc2FnZUVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5OdWxsVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5PcGVyYXRpb25TaWduYXR1cmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVHlwZXNSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5XU0RMVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogQlBXU0k0LgotICogRWFjaCBzb2FwYmluZCBleHRlbnNpb24gZWxlbWVudCB3aXRoIGEgd3NkbDpyZXF1aXJlZCAKLSAqIGF0dHJpYnV0ZSBvZiBmYWxzZSBtdXN0IGFwcGVhciBpbiBhIG1lc3NhZ2UuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMTA4IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3IgaW1wbGVtZW50cyBXU0lUYWcKLXsKLQotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTEwOChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHJpdmF0ZSBPcGVyYXRpb25TaWduYXR1cmUuT3BlcmF0aW9uTWF0Y2ggbWF0Y2ggPSBudWxsOwotICBwcml2YXRlIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQgPSBudWxsOwotICBwcml2YXRlIE9wZXJhdGlvblNpZ25hdHVyZSByZXNwb25zZVNpZyA9IG51bGw7Ci0gIHByaXZhdGUgVmVjdG9yIGhlYWRlclJhcnRzID0gbnVsbDsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0RmF1bHQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIGV4aXN0U09BUEhlYWRlciA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBpc1JlcXVlc3QgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIGV4aXN0U09BUEhlYWRlckZhdWx0ID0gdHJ1ZTsKLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KFNPQVBCb2R5LCBPYmplY3QsIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoU09BUEJvZHkgYm9keSwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0KLSAgICAvLyBpZiAid3NkbDpyZXF1aXJlZCIgaXMgdHJ1ZSB0aGVuIHJldHVybgotICAgIGlmIChib2R5LmdldFJlcXVpcmVkKCkgIT0gbnVsbAotICAgICAgJiYgYm9keS5nZXRSZXF1aXJlZCgpLmJvb2xlYW5WYWx1ZSgpID09IHRydWUpCi0gICAgICByZXR1cm47Ci0KLSAgICAvLyBhc3NlcnQgcGFyZW50IGluc3RhbmNlb2YgQmluZGluZ091dHB1dAotICAgIEJpbmRpbmdPcGVyYXRpb24gYm9wID0gY3R4LmdldEJpbmRpbmdPcGVyYXRpb24oKTsKLSAgICBpZiAoYm9wLmdldE9wZXJhdGlvbigpID09IG51bGwKLSAgICAgIHx8IGJvcC5nZXRPcGVyYXRpb24oKS5nZXRPdXRwdXQoKSA9PSBudWxsCi0gICAgICB8fCBib3AuZ2V0T3BlcmF0aW9uKCkuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgTWVzc2FnZSBtc2cgPSBib3AuZ2V0T3BlcmF0aW9uKCkuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgIExpc3QgcGFydHMgPQotICAgICAgV1NETFV0aWwuZ2V0UGFydHMoCi0gICAgICAgIGJvcC5nZXRPcGVyYXRpb24oKSwKLSAgICAgICAgbXNnLAotICAgICAgICBib2R5LAotICAgICAgICBtYXRjaC5nZXRPcGVyYXRpb25TdHlsZSgpKTsKLQotICAgIFFOYW1lIGFkZGl0aW9uYWxOYW1lID0gbnVsbDsKLSAgICAvLyBpZiBvcGVyYXRpb24gaXMgcnBjLCBhZGQgdG8gcGFydHMgcW5hbWUgcWl0aCBmdW5jdGlvbiBuYW1lCi0gICAgaWYgKFdTSUNvbnN0YW50cwotICAgICAgLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQwotICAgICAgLmVxdWFscyhtYXRjaC5nZXRPcGVyYXRpb25TdHlsZSgpKSkKLSAgICB7Ci0gICAgICAvLyBmb3VuZCBvdXQgdGFyZ2V0IG5hbWVzcGFjZQotICAgICAgU3RyaW5nIG5hbWVzcGFjZSA9IGJvZHkuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICBpZiAobmFtZXNwYWNlID09IG51bGwgfHwgbmFtZXNwYWNlLmxlbmd0aCgpID09IDApCi0gICAgICAgIC8vICEhIEFUVEVOVElPTgotICAgICAgICAvLyBuYW1lc3BhY2Ugc2hvdWxkIGJlIHJldHJpZXZlZCBmcm9tIHNlcnZpY2UgdGFyZ2V0IG5hbWVhcGNlICAgICAgICAgICAgCi0gICAgICAgIG5hbWVzcGFjZSA9IGN0eC5nZXRCaW5kaW5nKCkuZ2V0UU5hbWUoKS5nZXROYW1lc3BhY2VVUkkoKTsKLQotICAgICAgLy8gaW5zZXJ0IG9wZXJhdGlvbiBuYW1lIGFzIGZpcnN0IHNpZ25hdHVyZSBwYXJ0Ci0gICAgICBhZGRpdGlvbmFsTmFtZSA9Ci0gICAgICAgIG5ldyBRTmFtZSgKLSAgICAgICAgICBuYW1lc3BhY2UsCi0gICAgICAgICAgYm9wCi0gICAgICAgICAgICAuZ2V0T3BlcmF0aW9uKCkKLSAgICAgICAgICAgIC5nZXRPdXRwdXQoKQotICAgICAgICAgICAgLmdldE1lc3NhZ2UoKQotICAgICAgICAgICAgLmdldFFOYW1lKCkKLSAgICAgICAgICAgIC5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgfQotCi0gICAgLy8gY3JlYXRlIHRoZSBzaWduYXR1cmUgb2YgdGhpcyBvcGVyYXRpb24KLSAgICBPcGVyYXRpb25TaWduYXR1cmUgb3AgPQotICAgICAgbmV3IE9wZXJhdGlvblNpZ25hdHVyZSgKLSAgICAgICAgcGFydHMsCi0gICAgICAgIG51bGwsCi0gICAgICAgIG5ldyBUeXBlc1JlZ2lzdHJ5KAotICAgICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dAotICAgICAgICAgICAgLmdldENhbmRpZGF0ZUluZm8oKQotICAgICAgICAgICAgLmdldFdzZGxEb2N1bWVudCgpCi0gICAgICAgICAgICAuZ2V0RGVmaW5pdGlvbnMoKSwKLSAgICAgICAgICAgIHZhbGlkYXRvciksCi0gICAgICAgIGZhbHNlKTsKLSAgICBpZiAoYWRkaXRpb25hbE5hbWUgIT0gbnVsbCkKLSAgICAgIG9wLmdldFNpZ25hdHVyZSgpLmFkZCgwLCBhZGRpdGlvbmFsTmFtZSk7Ci0KLSAgICBpZiAob3AuZ2V0U2lnbmF0dXJlKCkuZXF1YWxzKHJlc3BvbnNlU2lnLmdldFNpZ25hdHVyZSgpKSkKLSAgICB7Ci0gICAgICAvLyAgICAgICAgICAgIGN0eC5jYW5jZWxCaW5kaW5nT3BlcmF0aW9uUHJvY2Vzc2luZygpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gY3JlYXRlIHRoZSBzaWduYXR1cmUgb2YgdGhpcyBvcGVyYXRpb24KLSAgICAgIG9wID0KLSAgICAgICAgbmV3IE9wZXJhdGlvblNpZ25hdHVyZSgKLSAgICAgICAgICBwYXJ0cywKLSAgICAgICAgICBudWxsLAotICAgICAgICAgIG5ldyBUeXBlc1JlZ2lzdHJ5KAotICAgICAgICAgICAgICB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0Ci0gICAgICAgICAgICAgIC5nZXRDYW5kaWRhdGVJbmZvKCkKLSAgICAgICAgICAgICAgLmdldFdzZGxEb2N1bWVudCgpCi0gICAgICAgICAgICAgIC5nZXREZWZpbml0aW9ucygpLAotICAgICAgICAgICAgICB2YWxpZGF0b3IpLAotICAgICAgICAgIHRydWUpOwotCi0gICAgICBpZiAoYWRkaXRpb25hbE5hbWUgIT0gbnVsbCkKLSAgICAgICAgb3AuZ2V0U2lnbmF0dXJlKCkuYWRkKDAsIGFkZGl0aW9uYWxOYW1lKTsKLSAgICAgIGlmIChvcC5nZXRTaWduYXR1cmUoKS5lcXVhbHMocmVzcG9uc2VTaWcuZ2V0U2lnbmF0dXJlKCkpKQotICAgICAgewotICAgICAgICAvLyAgICAgICAgICAgICAgY3R4LmNhbmNlbEJpbmRpbmdPcGVyYXRpb25Qcm9jZXNzaW5nKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgICAgIlxuTWVzc2FnZTpcbiIgKyBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpLAotICAgICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICAgICAgY3R4LmNhbmNlbEJpbmRpbmdPcGVyYXRpb25Qcm9jZXNzaW5nKCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlciwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBIZWFkZXIgaGVhZGVyLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0KLSAgICBpZiAoZXhpc3RTT0FQSGVhZGVyRmF1bHQgPT0gZmFsc2UpCi0gICAgewotICAgICAgZXhpc3RTT0FQSGVhZGVyID0gZmFsc2U7Ci0gICAgICBjdHguY2FuY2VsQmluZGluZ09wZXJhdGlvblByb2Nlc3NpbmcoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gaWYgIndzZGw6cmVxdWlyZWQiIGlzIHRydWUgdGhlbiByZXR1cm4KLSAgICBpZiAoaGVhZGVyLmdldFJlcXVpcmVkKCkgIT0gbnVsbAotICAgICAgJiYgaGVhZGVyLmdldFJlcXVpcmVkKCkuYm9vbGVhblZhbHVlKCkgPT0gdHJ1ZSkKLSAgICAgIHJldHVybjsKLSAgICAvLyBmaW5kIGhlYWRyIHBhcnQKLSAgICBEZWZpbml0aW9uIGQgPSAoRGVmaW5pdGlvbikgY3R4LmdldFBhcmFtZXRlcigiZGVmaW5pdGlvbiIpOwotICAgIFR5cGVzUmVnaXN0cnkgdFJlZyA9IChUeXBlc1JlZ2lzdHJ5KSBjdHguZ2V0UGFyYW1ldGVyKCJUeXBlc1JlZ2lzdHJ5Iik7Ci0gICAgUGFydCBtZXNQYXJ0ID0KLSAgICAgIFdTRExVdGlsLmdldFBhcnQoZC5nZXRNZXNzYWdlKGhlYWRlci5nZXRNZXNzYWdlKCkpLCBoZWFkZXIuZ2V0UGFydCgpKTsKLQotICAgIC8vIHRlc3QgdGhpcyBwYXJ0IGFuZCBwYXJ0cyBmcm9tIGhlYWRlciAgICAgICAgCi0gICAgUU5hbWUgcGFydFFOYW1lID0gbWVzUGFydC5nZXRUeXBlTmFtZSgpOwotICAgIGlmIChwYXJ0UU5hbWUgPT0gbnVsbCkKLSAgICAgIHBhcnRRTmFtZSA9IHRSZWcuZ2V0VHlwZShtZXNQYXJ0LmdldEVsZW1lbnROYW1lKCkpOwotICAgIGlmIChwYXJ0UU5hbWUgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICJQYXJ0IHR5cGUgY2FuIG5vdCBiZSBudWxsLiIgKyBtZXNQYXJ0LmdldEVsZW1lbnROYW1lKCkudG9TdHJpbmcoKSk7Ci0gICAgU3RyaW5nIGxvY2FsID0gcGFydFFOYW1lLmdldExvY2FsUGFydCgpOwotICAgIFN0cmluZyBucyA9IHBhcnRRTmFtZS5nZXROYW1lc3BhY2VVUkkoKTsKLQotICAgIGV4aXN0U09BUEhlYWRlciA9IGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVyUmFydHMuc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgRWxlbWVudCBlbGVtID0gKEVsZW1lbnQpIGhlYWRlclJhcnRzLmdldChpKTsKLSAgICAgIGlmIChlbGVtLmdldExvY2FsTmFtZSgpLmVxdWFscyhsb2NhbCkKLSAgICAgICAgJiYgTnVsbFV0aWwuZXF1YWxzKG5zLCBlbGVtLmdldE5hbWVzcGFjZVVSSSgpKSkKLSAgICAgIHsKLSAgICAgICAgZXhpc3RTT0FQSGVhZGVyID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChleGlzdFNPQVBIZWFkZXIgPT0gdHJ1ZSkKLSAgICAgIGN0eC5jYW5jZWxTT0FQSGVhZGVyUHJvY2Vzc2luZygpOwotICAgIGlmIChpc1JlcXVlc3QgPT0gdHJ1ZSkKLSAgICAgIGN0eC5jYW5jZWxCaW5kaW5nT3BlcmF0aW9uUHJvY2Vzc2luZygpOwotICAgIGlmIChleGlzdFNPQVBIZWFkZXIgPT0gZmFsc2UgJiYgaXNSZXF1ZXN0ID09IGZhbHNlKQotICAgICAgZXhpc3RTT0FQSGVhZGVyRmF1bHQgPSBmYWxzZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdCwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBIZWFkZXJGYXVsdCBoZWFkZXJGYXVsdCwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIC8vIGZpbmQgaGVhZHIgcGFydAotICAgIERlZmluaXRpb24gZCA9IChEZWZpbml0aW9uKSBjdHguZ2V0UGFyYW1ldGVyKCJkZWZpbml0aW9uIik7Ci0gICAgVHlwZXNSZWdpc3RyeSB0UmVnID0gKFR5cGVzUmVnaXN0cnkpIGN0eC5nZXRQYXJhbWV0ZXIoIlR5cGVzUmVnaXN0cnkiKTsKLSAgICBQYXJ0IG1lc1BhcnQgPQotICAgICAgV1NETFV0aWwuZ2V0UGFydCgKLSAgICAgICAgZC5nZXRNZXNzYWdlKGhlYWRlckZhdWx0LmdldE1lc3NhZ2UoKSksCi0gICAgICAgIGhlYWRlckZhdWx0LmdldFBhcnQoKSk7Ci0KLSAgICAvLyB0ZXN0IHRoaXMgcGFydCBhbmQgcGFydHMgZnJvbSBoZWFkZXJmYXVsdAotICAgIFFOYW1lIHBhcnRRTmFtZSA9IG1lc1BhcnQuZ2V0VHlwZU5hbWUoKTsKLSAgICBpZiAocGFydFFOYW1lID09IG51bGwpCi0gICAgICBwYXJ0UU5hbWUgPSB0UmVnLmdldFR5cGUobWVzUGFydC5nZXRFbGVtZW50TmFtZSgpKTsKLSAgICBpZiAocGFydFFOYW1lID09IG51bGwpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAiUGFydCB0eXBlIGNhbiBub3QgYmUgbnVsbC4iICsgbWVzUGFydC5nZXRFbGVtZW50TmFtZSgpLnRvU3RyaW5nKCkpOwotICAgIFN0cmluZyBsb2NhbCA9IHBhcnRRTmFtZS5nZXRMb2NhbFBhcnQoKTsKLSAgICBTdHJpbmcgbnMgPSBwYXJ0UU5hbWUuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlYWRlclJhcnRzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgIEVsZW1lbnQgZWxlbSA9IChFbGVtZW50KSBoZWFkZXJSYXJ0cy5nZXQoaSk7Ci0gICAgICBpZiAoZWxlbS5nZXRMb2NhbE5hbWUoKS5lcXVhbHMobG9jYWwpCi0gICAgICAgICYmIE51bGxVdGlsLmVxdWFscyhucywgZWxlbS5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICB7Ci0gICAgICAgIGV4aXN0U09BUEhlYWRlckZhdWx0ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChleGlzdFNPQVBIZWFkZXJGYXVsdCA9PSB0cnVlKQotICAgICAgY3R4LmNhbmNlbFNPQVBIZWFkZXJQcm9jZXNzaW5nKCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQRmF1bHQgZmF1bHQsIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIC8vIHNldCBpbiB0cnVlIGlmIGFueSBTT0FQRmF1bHQgZXhpc3QKLSAgICB2aXNpdEZhdWx0ID0gdHJ1ZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgaWYgKHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgdGhpcy5lbnRyeUNvbnRleHQgPSBlbnRyeUNvbnRleHQ7Ci0gICAgICAvLyBQYXJzZSByZXF1ZXN0IG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0RG9jdW1lbnQoKTsKLSAgICAgIC8vIGNyZWF0ZSByZXF1ZXN0IHNpZ25hdHVyZQotICAgICAgbWF0Y2ggPQotICAgICAgICBPcGVyYXRpb25TaWduYXR1cmUubWF0Y2hPcGVyYXRpb24oCi0gICAgICAgICAgZG9jLAotICAgICAgICAgIG51bGwsCi0gICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0QmluZGluZ3MoKVswXSwKLSAgICAgICAgICBuZXcgVHlwZXNSZWdpc3RyeSgKLSAgICAgICAgICAgICAgdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dAotICAgICAgICAgICAgICAuZ2V0Q2FuZGlkYXRlSW5mbygpCi0gICAgICAgICAgICAgIC5nZXRXc2RsRG9jdW1lbnQoKQotICAgICAgICAgICAgICAuZ2V0RGVmaW5pdGlvbnMoKSwKLSAgICAgICAgICAgICAgdmFsaWRhdG9yKSwKLSAgICAgICAgICBmYWxzZSk7Ci0KLSAgICAgIC8vIGlmIHN1Y2ggb3BlcmF0aW9uIGV4aXN0ICAgICAgCi0gICAgICBpZiAobWF0Y2ggIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaXNSZXF1ZXN0ID0KLSAgICAgICAgICBNZXNzYWdlRW50cnkuVFlQRV9SRVFVRVNULmVxdWFscygKLSAgICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRUeXBlKCkpOwotICAgICAgICAvLyBQYXJzZSBtZXNzYWdlCi0gICAgICAgIGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotCi0gICAgICAgIGlmICghaXNSZXF1ZXN0KQotICAgICAgICB7Ci0gICAgICAgICAgcmVzcG9uc2VTaWcgPSBuZXcgT3BlcmF0aW9uU2lnbmF0dXJlKGRvYyk7Ci0gICAgICAgICAgaWYgKFdTSUNvbnN0YW50cwotICAgICAgICAgICAgLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQwotICAgICAgICAgICAgLmVxdWFscyhtYXRjaC5nZXRPcGVyYXRpb25TdHlsZSgpKSkKLSAgICAgICAgICAgIHJlc3BvbnNlU2lnLmNyZWF0ZVJQQ1NpZ25hdHVyZSgpOwotICAgICAgICB9Ci0gICAgICAgIC8vIGV4dHJhY3QgYWxsIGhlYWRlcnMgZnJvbSBtZXNzYWdlCi0gICAgICAgIEVsZW1lbnQgaGVhZGVyRWxlbSA9Ci0gICAgICAgICAgWE1MVXRpbHMuZmluZENoaWxkRWxlbWVudCgKLSAgICAgICAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwKLSAgICAgICAgICAgIFdTSVRhZy5FTEVNX1NPQVBfSEVBREVSKTsKLSAgICAgICAgaGVhZGVyUmFydHMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgIGlmIChoZWFkZXJFbGVtICE9IG51bGwpCi0gICAgICAgICAgaGVhZGVyUmFydHMgPSBYTUxVdGlscy5nZXRDaGlsZEVsZW1lbnRzKGhlYWRlckVsZW0pOwotCi0gICAgICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICAgICAgLy9WaXNpdG9yQWRhcHRvci5hZGFwdCh0aGlzKTsKLSAgICAgICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgICAgIHRyYXZlcnNhbC52aXNpdFNPQVBCb2R5KHRydWUpOwotICAgICAgICB0cmF2ZXJzYWwudmlzaXRTT0FQSGVhZGVyKHRydWUpOwotICAgICAgICB0cmF2ZXJzYWwudmlzaXRTT0FQSGVhZGVyRmF1bHQodHJ1ZSk7Ci0gICAgICAgIHRyYXZlcnNhbC52aXNpdFNPQVBGYXVsdCh0cnVlKTsKLQotICAgICAgICB0cmF2ZXJzYWwuaWdub3JlUmVmZXJlbmNlcygpOwotICAgICAgICB0cmF2ZXJzYWwuaWdub3JlQmluZGluZ0lucHV0MlNPQVBCb2R5KCk7Ci0KLSAgICAgICAgaWYgKGlzUmVxdWVzdCkKLSAgICAgICAgICB0cmF2ZXJzYWwuaWdub3JlQmluZGluZ091dHB1dCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgdHJhdmVyc2FsLmlnbm9yZUJpbmRpbmdJbnB1dDJTT0FQSGVhZGVyKCk7Ci0KLSAgICAgICAgaWYgKHJlc3BvbnNlU2lnICE9IG51bGwgJiYgcmVzcG9uc2VTaWcuaXNGYXVsdCgpKQotICAgICAgICAgIHRyYXZlcnNhbC5pZ25vcmVCaW5kaW5nT3V0cHV0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICB0cmF2ZXJzYWwuaWdub3JlQmluZGluZ0ZhdWx0KCk7Ci0KLSAgICAgICAgZXhpc3RTT0FQSGVhZGVyRmF1bHQgPSB0cnVlOwotICAgICAgICBNYXAgbSA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgICAgIFdTRExVdGlsLmV4cGFuZERlZmluaXRpb24oCi0gICAgICAgICAgICB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0Ci0gICAgICAgICAgICAuZ2V0Q2FuZGlkYXRlSW5mbygpCi0gICAgICAgICAgICAuZ2V0V3NkbERvY3VtZW50KCkKLSAgICAgICAgICAgIC5nZXREZWZpbml0aW9ucygpKTsKLSAgICAgICAgbS5wdXQoCi0gICAgICAgICAgImRlZmluaXRpb24iLAotICAgICAgICAgIHZhbGlkYXRvci5hbmFseXplckNvbnRleHQKLSAgICAgICAgICAgIC5nZXRDYW5kaWRhdGVJbmZvKCkKLSAgICAgICAgICAgIC5nZXRXc2RsRG9jdW1lbnQoKQotICAgICAgICAgICAgLmdldERlZmluaXRpb25zKCkpOwotICAgICAgICBUeXBlc1JlZ2lzdHJ5IHRSZWcgPQotICAgICAgICAgIG5ldyBUeXBlc1JlZ2lzdHJ5KAotICAgICAgICAgICAgICB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0Ci0gICAgICAgICAgICAgIC5nZXRDYW5kaWRhdGVJbmZvKCkKLSAgICAgICAgICAgICAgLmdldFdzZGxEb2N1bWVudCgpCi0gICAgICAgICAgICAgIC5nZXREZWZpbml0aW9ucygpLAotICAgICAgICAgICAgICB2YWxpZGF0b3IpOwotICAgICAgICBtLnB1dCgiVHlwZXNSZWdpc3RyeSIsIHRSZWcpOwotICAgICAgICB0cmF2ZXJzYWwudHJhdmVyc2UobWF0Y2guZ2V0T3BlcmF0aW9uKCksIG0pOwotCi0gICAgICAgIGlmIChpc1JlcXVlc3QgPT0gZmFsc2UpCi0gICAgICAgICAgaWYgKGV4aXN0U09BUEhlYWRlckZhdWx0ID09IHRydWUpCi0gICAgICAgICAgICBleGlzdFNPQVBIZWFkZXIgPSB0cnVlOwotCi0gICAgICAgIGlmIChyZXNwb25zZVNpZyAhPSBudWxsCi0gICAgICAgICAgJiYgcmVzcG9uc2VTaWcuaXNGYXVsdCgpCi0gICAgICAgICAgJiYgdmlzaXRGYXVsdCA9PSBmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICAgIlxuTWVzc2FnZTpcbiIgKyBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpLAotICAgICAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleGlzdFNPQVBIZWFkZXIgPT0gZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAgICJcbk1lc3NhZ2U6XG4iICsgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1lc3NhZ2UoKSwKLSAgICAgICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTA5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTEwOS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmY0NGNmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTA5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi0KLS8qKgotICogV1NJMTEwOS4KLSAqIEFueSBjb25mb3JtYW5jZSBjbGFpbXMgTVVTVCBiZSBjaGlsZHJlbiBvZiB0aGUgc29hcDpIZWFkZXIgZWxlbWVudC4KLSAqLwotcHVibGljIGNsYXNzIFdTSTExMDkgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMTA5KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKFRlc3RBc3NlcnRpb24sIEVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBpZiAoKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKSAhPSBudWxsKQotICAgICAgJiYgKCF0aGlzLnZhbGlkYXRvci5pc09uZVdheVJlc3BvbnNlKGVudHJ5Q29udGV4dCkpKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICAvLyBQYXJzZSBtZXNzYWdlCi0gICAgICAgIERvY3VtZW50IGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpOwotICAgICAgICBFbGVtZW50IHJvb3QgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgICAgIC8vIGZpbmQgIkhlYWRlciIgZWxlbWVudAotICAgICAgICBOb2RlTGlzdCBoZWFkZXJMaXN0ID0KLSAgICAgICAgICByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQLCAiSGVhZGVyIik7Ci0gICAgICAgIEVsZW1lbnQgaGVhZGVyRWxlbSA9IG51bGw7Ci0gICAgICAgIGlmIChoZWFkZXJMaXN0ICE9IG51bGwgJiYgaGVhZGVyTGlzdC5nZXRMZW5ndGgoKSAhPSAwKQotICAgICAgICAgIGhlYWRlckVsZW0gPSAoRWxlbWVudCkgaGVhZGVyTGlzdC5pdGVtKDApOwotCi0gICAgICAgIC8vIGZpbmQgIkNsYWltIiBlbGVtZW50Ci0gICAgICAgIE5vZGVMaXN0IGNsYWltTGlzdCA9Ci0gICAgICAgICAgcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKFdTSUNvbnN0YW50cy5OU19VUklfQ0xBSU0sICJDbGFpbSIpOwotICAgICAgICBpZiAoY2xhaW1MaXN0ID09IG51bGwgfHwgY2xhaW1MaXN0LmdldExlbmd0aCgpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2xhaW1MaXN0LmdldExlbmd0aCgpOyBpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKGhlYWRlckVsZW0gPT0gbnVsbAotICAgICAgICAgICAgICB8fCBjbGFpbUxpc3QuaXRlbShpKS5nZXRQYXJlbnROb2RlKCkgIT0gaGVhZGVyRWxlbSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAgICAgICAiXG5TT0FQIG1lc3NhZ2U6XG4iCi0gICAgICAgICAgICAgICAgICAgICsgZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1lc3NhZ2UoKSwKLSAgICAgICAgICAgICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMTAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTEwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiM2I5ZTIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMTAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIFdTSTExMTAuCi0gKiBBbnkgY29uZm9ybWFuY2UgY2xhaW1zIE1VU1QgYWRoZXJlIHRvIHRoZSBXUy1JIGNvbmZvcm1hbmNlIAotICogY2xhaW0gc2NoZW1hIGRlZmluZWQgaW4gdGhlIEJhc2ljIFByb2ZpbGUuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMTEwIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIEJhc2VNZXNzYWdlVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTExMChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShUZXN0QXNzZXJ0aW9uLCBFbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgRG9jdW1lbnQgZG9jOwotICAgIGlmIChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkgIT0gbnVsbAotICAgICAgJiYgIXRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KQotICAgICAgJiYgKGRvYyA9IGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnlEb2N1bWVudCgpKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgcm9vdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgIC8vIGZpbmQgIkNsYWltIiBlbGVtZW50Ci0gICAgICBOb2RlTGlzdCBjbGFpbUxpc3QgPQotICAgICAgICByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoV1NJQ29uc3RhbnRzLk5TX1VSSV9DTEFJTSwgIkNsYWltIik7Ci0gICAgICBpZiAoY2xhaW1MaXN0ID09IG51bGwgfHwgY2xhaW1MaXN0LmdldExlbmd0aCgpID09IDApCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2xhaW1MaXN0LmdldExlbmd0aCgpOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBFbGVtZW50IGVsZW0gPSAoRWxlbWVudCkgY2xhaW1MaXN0Lml0ZW0oaSk7Ci0gICAgICAgICAgLy8gY2hlY2sgImNvbmZvcm1zVG8iIGF0dHJpYnV0ZQotICAgICAgICAgIE5vZGUgbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiY29uZm9ybXNUbyIpOwotICAgICAgICAgIGlmIChub2RlID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICAgICAiXG5TT0FQIG1lc3NhZ2U6XG4iCi0gICAgICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCksCi0gICAgICAgICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICAvKiBUaGlzIGlzIGNoZWNrZWQgaW4gV1NJMTExMQotICAgICAgICAgIC8vIGNoZWNrICJtdXN0VW5kZXJzdGFuZCIgYXR0cmlidXRlCi0gICAgICAgICAgbm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZU5TKFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwgIm11c3RVbmRlcnN0YW5kIik7Ci0gICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPSBjcmVhdGVGYWlsdXJlRGV0YWlsKCJcblNPQVAgbWVzc2FnZTpcbiIgKyBlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgICovCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMTEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTExLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NGUzZmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMTEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIFdTSTExMTEuCi0gKiBBbnkgY29uZm9ybWFuY2UgY2xhaW1zIE1VU1QgTk9UIHVzZSBzb2FwOm11c3RVbmRlcnN0YW5kPScxJy4KLSAqLwotcHVibGljIGNsYXNzIFdTSTExMTEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMTExKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKFRlc3RBc3NlcnRpb24sIEVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBEb2N1bWVudCBkb2M7Ci0gICAgaWYgKGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKSAhPSBudWxsCi0gICAgICAmJiAhdGhpcy52YWxpZGF0b3IuaXNPbmVXYXlSZXNwb25zZShlbnRyeUNvbnRleHQpCi0gICAgICAmJiAoZG9jID0gZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeURvY3VtZW50KCkpICE9IG51bGwpCi0gICAgewotICAgICAgRWxlbWVudCByb290ID0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpOwotICAgICAgLy8gZmluZCAiQ2xhaW0iIGVsZW1lbnQKLSAgICAgIE5vZGVMaXN0IGNsYWltTGlzdCA9Ci0gICAgICAgIHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhXU0lDb25zdGFudHMuTlNfVVJJX0NMQUlNLCAiQ2xhaW0iKTsKLSAgICAgIGlmIChjbGFpbUxpc3QgIT0gbnVsbCAmJiBjbGFpbUxpc3QuZ2V0TGVuZ3RoKCkgIT0gMCkKLSAgICAgIHsKLSAgICAgICAgLy8gaWYgY29udGFpbnMgIkNsYWltIiBlbGVtZW50IGZpbmQgYWxsICJIZWFkZXIiIGVsZW1lbnRzCi0gICAgICAgIE5vZGVMaXN0IGhlYWRlckxpc3QgPQotICAgICAgICAgIHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhXU0lDb25zdGFudHMuTlNfVVJJX1NPQVAsICJIZWFkZXIiKTsKLSAgICAgICAgaWYgKGhlYWRlckxpc3QgIT0gbnVsbCAmJiBoZWFkZXJMaXN0LmdldExlbmd0aCgpICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICBmb3IgKGludCBpSGVhZGVyID0gMDsgaUhlYWRlciA8IGhlYWRlckxpc3QuZ2V0TGVuZ3RoKCk7IGlIZWFkZXIrKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmaW5kIGFsbCAiSGVhZGVyIiBjaGlsZCBlbGVtZW50cwotICAgICAgICAgICAgTm9kZSBjaGlsZCA9IGhlYWRlckxpc3QuaXRlbShpSGVhZGVyKS5nZXRGaXJzdENoaWxkKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2hpbGQgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBpZiBjb250YWlucyAibXVzdFVuZGVyc3RhbmQiIC0+IGZhaWwKLSAgICAgICAgICAgICAgICBTdHJpbmcgYXR0clZhbCA9Ci0gICAgICAgICAgICAgICAgICAoKEVsZW1lbnQpIGNoaWxkKS5nZXRBdHRyaWJ1dGVOUygKLSAgICAgICAgICAgICAgICAgICAgV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQLAotICAgICAgICAgICAgICAgICAgICAibXVzdFVuZGVyc3RhbmQiKTsKLSAgICAgICAgICAgICAgICBpZiAoYXR0clZhbCAhPSBudWxsICYmICEiIi5lcXVhbHMoYXR0clZhbCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICAgICAgICAgICAiXG5TT0FQIG1lc3NhZ2U6XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICArIGVudHJ5Q29udGV4dC5nZXRNZXNzYWdlRW50cnkoKS5nZXRNZXNzYWdlKCksCi0gICAgICAgICAgICAgICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgIGlIZWFkZXIgPSBoZWFkZXJMaXN0LmdldExlbmd0aCgpOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQuZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMTYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTE2LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyODlkZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMTYuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLQotLyoqCi0gKiBXU0kxMTE2Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMTE2IGV4dGVuZHMgQlAxMTE2Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTExMTYoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMjEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMTIxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiM2ViYWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTExMjEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25QYXNzRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIEJQV1NJNC4KLSAqLwotcHVibGljIGNsYXNzIFdTSTExMjEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgQmFzZU1lc3NhZ2VWYWxpZGF0b3IgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMTIxKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR1Q6IC0tIHN0YXJ0OiBiYXNlIG9uIHdzaTEwMTEgLSBzaG91bGQgcmVmYWN0b3IgdGhpcwotCi0gICAgICBCaW5kaW5nW10gYmluZGluZ3MgPSB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXRCaW5kaW5ncygpOwotCi0gICAgICAvLyBnZXQgc29hcCBtZXNzYWdlIGNoaWxkIG5hbWUKLSAgICAgIC8vIEdldCB0aGUgRE9NIGNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlIHNvYXA6Ym9keSAoaWYgbm9uLWVtcHR5KQotICAgICAgRG9jdW1lbnQgbWVzc2FnZURvYyA9IG51bGw7Ci0KLSAgICAgIFFOYW1lIG1lc3NhZ2VQYXJ0RWxlbWVudFFOYW1lID0gbnVsbDsKLSAgICAgIGlmICghZW50cnlDb250ZXh0LmdldE1lc3NhZ2VFbnRyeSgpLmdldE1lc3NhZ2UoKS5lcXVhbHMoIiIpKQotICAgICAgewotICAgICAgICBtZXNzYWdlRG9jID0KLSAgICAgICAgICBYTUxVdGlscy5wYXJzZVhNTChlbnRyeUNvbnRleHQuZ2V0TWVzc2FnZUVudHJ5KCkuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgLy8gZ2V0IHNvYXAgb3BlcmF0aW9uIG5hbWUgZnJvbSB0aGUgc29hcDpib2R5Ci0KLSAgICAgICAgLy8gTk9URTogZ2V0U29hcEJvZHlDaGlsZCgpIG1heSByZXR1cm4gbnVsbCwgaWYgdGhlIHNvYXA6Ym9keSBkaWQgbm90IGNvbnRhaW4gYW55IGNoaWxkIGVsZW1lbnRzCi0gICAgICAgIEVsZW1lbnQgc29hcE1lc3NhZ2VFbGVtZW50ID0gdGhpcy52YWxpZGF0b3IuZ2V0U29hcEJvZHlDaGlsZChtZXNzYWdlRG9jKTsKLQotICAgICAgICAvLyBmb3IgZG9jLWxpdC4uLiBmaW5kIHRoZSB3c2RsOnBhcnQgZnJvbSBvbmUgb2YgdGhlIHNwZWNpZmllZCBvcGVyYXRpb25zIHRoYXQgaGFzIAotICAgICAgICAvLyB0aGUgc29hcCBlbGVtZW50IHVzZWQgaW4gdGhlIG1lc3NhZ2UuICAgICAgCi0gICAgICAgIC8vIHdlIGFyZSBsb29raW5nIGZvciBhIHBhcnQgd2l0aCBhbiBlbGVtZW50IGF0dHJpYiB2YWwgbWF0Y2hpbmcgdGhlIHNvYXAgbWVzc2FnZSBlbGVtZW50Ci0gICAgICAgIGlmIChzb2FwTWVzc2FnZUVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIG1lc3NhZ2VQYXJ0RWxlbWVudFFOYW1lID0KLSAgICAgICAgICAgIG5ldyBRTmFtZSgKLSAgICAgICAgICAgICAgc29hcE1lc3NhZ2VFbGVtZW50LmdldE5hbWVzcGFjZVVSSSgpLAotICAgICAgICAgICAgICBzb2FwTWVzc2FnZUVsZW1lbnQuZ2V0TG9jYWxOYW1lKCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmICgobWVzc2FnZURvYyA9PSBudWxsKSB8fCB0aGlzLnZhbGlkYXRvci5pc0ZhdWx0KG1lc3NhZ2VEb2MpKQotICAgICAgewotICAgICAgICAvLyBlbXB0eSBtZXNzYWdlcyBhbmQgbWVzc2FnZXMgY29udGFpbmluZyBzb2FwOkZhdWx0cyBkbyBub3QgcXVhbGlmeSBmb3IgdGhpcyBUQQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgICAgfQotCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uW10gZG9jQmluZGluZ09wZXJhdGlvbnMgPQotICAgICAgICB0aGlzLnZhbGlkYXRvci5nZXRNYXRjaGluZ0JpbmRpbmdPcHMoCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQywKLSAgICAgICAgICBiaW5kaW5ncyk7Ci0gICAgICAvLyBsaXN0IG9mIG9wZXJhdGlvbnMgdGhhdCBtYXRjaCB0aGUgPHdzZGw6aW5wdXQ+IG9yIDx3c2RsOm91dHB1dD4gKGRlcGVuZGluZyBvbiBlbnRyeVR5cGUpCi0gICAgICAvLyBmb3IgcGFydCBlbGVtZW50PSIuLi4iCi0gICAgICAvLyAoSVNTVUU6IHdoYXQgYWJvdXQgcGFydCB0eXBlPSIuLi4iPykKLSAgICAgIEJpbmRpbmdPcGVyYXRpb25bXSBwb3RlbnRpYWxEb2NMaXRPcHMgPQotICAgICAgICB0aGlzLnZhbGlkYXRvci5nZXREb2NMaXRPcGVyYXRpb25zKAotICAgICAgICAgIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5VHlwZSgpLAotICAgICAgICAgIG1lc3NhZ2VQYXJ0RWxlbWVudFFOYW1lLAotICAgICAgICAgIGRvY0JpbmRpbmdPcGVyYXRpb25zKTsKLSAgICAgIC8vIEdUOiAtLS0gZW5kOiBiYXNlIG9uIHdzaTEwMTEKLQotICAgICAgLy8gICAgICAgICAgICAgICAKLSAgICAgIGlmIChwb3RlbnRpYWxEb2NMaXRPcHMubGVuZ3RoID09IDApCi0gICAgICB7Ci0gICAgICAgIC8vIG5vdCBkb2MtbGl0IHNvIHF1aXQKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICAgIH0KLQotICAgICAgLy8gV2Uga25vdyB0aGVyZSBpcyBhIGRvYy1saXQgbWF0Y2gsIHNvIG5vdyB0cnkgdG8gdmFsaWRhdGUgdGhlIHNvYXAgbWVzc2FnZSBhZ2FpbnN0IHRoZQotICAgICAgLy8gcmVmZXJlbmNlZCBzY2hlbWEKLQotICAgICAgLy8gR1QgLSBob3cgdG8gcmVmZXJlbmNlIHRoZSBzY2hlbWEgZG9jdW1lbnQ/PyBuZWVkIHRvIHVzZSB0aGUgPHdzZGw6cGFydD4sIG9yIGRvIGl0IHB1cmVseQotICAgICAgLy8gZnJvbSB0aGUgc29hcCBtZXNzYWdlIGVsZW1lbnRzPwotICAgICAgLy8gaWUgYm9keSwgZW52ZWxvcGUgb3Igd3NkbD8/Ci0KLSAgICAgIC8vIDxleHBlcmltZW50PgotCi0gICAgICBib29sZWFuIGlzU2NoZW1hVmFsaWQ7Ci0gICAgICAKLSAgICAgIHRyeSB7Ci0gICAgICAJCWlzU2NoZW1hVmFsaWQgPSB0aGlzLnZhbGlkYXRvci5tZXNzYWdlSXNEb2NMaXRTY2hlbWFWYWxpZChlbnRyeUNvbnRleHQpOyAgICAgICAgIAotICAgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgCQl0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigpOwotICAgICAgCX0KLSAgICAgIC8vIDwvZXhwZXJpbWVudD4KLSAgICAgIAotCi0gICAgICAvL2lzU2NoZW1hVmFsaWQgPSB0cnVlOyAvLyBmb3Igbm93LCBnZXR0aW5nIHRoaXMgZmFyIGRvZXMgaXQKLQotICAgICAgaWYgKGlzU2NoZW1hVmFsaWQpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25QYXNzRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvblBhc3NFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTIwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEyMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM2ZjA4Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTIwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQMTIwMTsKLQotLyoqCi0gKiBXU0kxMjAxCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMjAxIGV4dGVuZHMgQlAxMjAxCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEyMDEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEyMDIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMjAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMzFjZDYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEyMDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDEyMDI7Ci0KLS8qKgotICogV1NJMTIwMgotICovCi1wdWJsaWMgY2xhc3MgV1NJMTIwMiBleHRlbmRzIEJQMTIwMgotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMjAyKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMjAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTIwMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjNiY2JmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMjAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuQlAxMjAzOwotCi0vKioKLSAqIFdTSTEyMDMKLSAqLwotcHVibGljIGNsYXNzIFdTSTEyMDMgZXh0ZW5kcyBCUDEyMDMKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTIwMyhCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTIwNC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEyMDQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZkZGE1NC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTIwNC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQMTIwNDsKLQotLyoqCi0gKiBXU0kxMjA0Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMjA0IGV4dGVuZHMgQlAxMjA0Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEyMDQoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEyMDguamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMjA4LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiOTQ5NjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEyMDguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDEyMDg7Ci0KLS8qKgotICogV1NJMTIwOAotICovCi1wdWJsaWMgY2xhc3MgV1NJMTIwOCBleHRlbmRzIEJQMTIwOAotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMjA4KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMjExLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTIxMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2Y1N2M1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMjExLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuQlAxMjExOwotCi0vKioKLSAqIFdTSTEyMTEKLSAqLwotcHVibGljIGNsYXNzIFdTSTEyMTEgZXh0ZW5kcyBCUDEyMTEKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTIxMShCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTMwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWYwZWI4Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTMwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQMTMwMTsKLQotLyoqCi0gKiBXU0kxMzAxCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMzAxIGV4dGVuZHMgQlAxMzAxCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEzMDEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMDIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlOTc2ZmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDEzMDI7Ci0KLS8qKgotICogV1NJMTMwMgotICovCi1wdWJsaWMgY2xhc3MgV1NJMTMwMiBleHRlbmRzIEJQMTMwMgotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMzAyKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzA1LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTMwNS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjJlMTNhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzA1LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuQlAxMzA1OwotCi0vKioKLSAqIFdTSTEzMDUKLSAqLwotcHVibGljIGNsYXNzIFdTSTEzMDUgZXh0ZW5kcyBCUDEzMDUKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTMwNShCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTMwNi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMDYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYxMDYyOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTMwNi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQMTMwNjsKLQotLyoqCi0gKiBXU0kxMzA2Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMzA2IGV4dGVuZHMgQlAxMzA2Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEzMDYoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMDcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzA3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjNzA1YTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMDcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDEzMDc7Ci0KLS8qKgotICogV1NJMTMwNwotICovCi1wdWJsaWMgY2xhc3MgV1NJMTMwNyBleHRlbmRzIEJQMTMwNwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMzA3KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzA4LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTMwOC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjI3MWNmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzA4LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuQlAxMzA4OwotCi0vKioKLSAqIFdTSTEzMDgKLSAqLwotcHVibGljIGNsYXNzIFdTSTEzMDggZXh0ZW5kcyBCUDEzMDgKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTMwOChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTMwOS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMDkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU2NDM1Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTMwOS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQMTMwOTsKLQotLyoqCi0gKiBXU0kxMzA5Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxMzA5IGV4dGVuZHMgQlAxMzA5Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEzMDkoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMTEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzExLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhOThmYWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMTEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5IVFRQVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuT3BlcmF0aW9uU2lnbmF0dXJlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlR5cGVzUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi0KLS8qKgotICogQlBXU0k0LgotICogVGhlIHJlc3BvbnNlIChTT0FQIGVudmVsb3BlKSBzaG91bGQgYmUgY2FycmllZCBieSBhbiBIVFRQIAotICogcmVzcG9uc2UsIG92ZXIgc2FtZSBIVFRQIGNvbm5lY3Rpb24gYXMgdGhlIFJlcXVlc3QuIAotICovCi1wdWJsaWMgY2xhc3MgV1NJMTMxMSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBCYXNlTWVzc2FnZVZhbGlkYXRvciB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTEzMTEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUoVGVzdEFzc2VydGlvbiwgRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgIGJvb2xlYW4gaXNPbmVXYXlSZXNwb25zZSA9IHRoaXMudmFsaWRhdG9yLmlzT25lV2F5UmVzcG9uc2UoZW50cnlDb250ZXh0KTsKLQotICAgIERvY3VtZW50IGRvY1Jlc3BvbnNlID0gbnVsbDsKLSAgICBpZiAoIWlzT25lV2F5UmVzcG9uc2UpCi0gICAgICBkb2NSZXNwb25zZSA9IGVudHJ5Q29udGV4dC5nZXRSZXNwb25zZURvY3VtZW50KCk7Ci0KLSAgICAvL2lmIGZhdWx0Ci0gICAgaWYgKCFpc09uZVdheVJlc3BvbnNlICYmIHRoaXMudmFsaWRhdG9yLmlzRmF1bHQoZG9jUmVzcG9uc2UpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgIH0KLSAgICBlbHNlCi0gICAgeyAvLyBub3QgZmF1bHQKLSAgICAgIC8vIDEuIGdldCBhbiBvcGVyYXRpb24gZnJvbSByZXF1ZXN0Ci0gICAgICAvLyBQYXJzZSByZXF1ZXN0IG1lc3NhZ2UKLSAgICAgIERvY3VtZW50IGRvY1JlcXVlc3QgPSBlbnRyeUNvbnRleHQuZ2V0UmVxdWVzdERvY3VtZW50KCk7Ci0KLSAgICAgIC8vIGdldCBTT0FQQWN0aW9uCi0gICAgICBTdHJpbmcgaGVhZGVycyA9IGVudHJ5Q29udGV4dC5nZXRSZXF1ZXN0KCkuZ2V0SFRUUEhlYWRlcnMoKTsKLSAgICAgIFN0cmluZyBhY3Rpb24gPSBudWxsOwotICAgICAgaWYgKGhlYWRlcnMgIT0gbnVsbCkKLSAgICAgICAgYWN0aW9uID0gKFN0cmluZykgSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJUb2tlbnMoaGVhZGVycywgIjoiKS5nZXQoIlNPQVBBY3Rpb24iLnRvVXBwZXJDYXNlKCkpOwotICAgICAgQmluZGluZyBiaW5kaW5nID0gdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0QmluZGluZ3MoKVswXTsKLSAgICAgIFR5cGVzUmVnaXN0cnkgcmVnaXN0cnkgPQotICAgICAgICBuZXcgVHlwZXNSZWdpc3RyeSgKLSAgICAgICAgICB0aGlzLnZhbGlkYXRvci5nZXRXU0RMRG9jdW1lbnQoKS5nZXREZWZpbml0aW9ucygpLAotICAgICAgICAgIHZhbGlkYXRvcik7Ci0gICAgICBPcGVyYXRpb25TaWduYXR1cmUuT3BlcmF0aW9uTWF0Y2ggbWF0Y2ggPQotICAgICAgICBPcGVyYXRpb25TaWduYXR1cmUubWF0Y2hPcGVyYXRpb24oCi0gICAgICAgICAgZG9jUmVxdWVzdCwKLSAgICAgICAgICBhY3Rpb24sCi0gICAgICAgICAgYmluZGluZywKLSAgICAgICAgICByZWdpc3RyeSk7Ci0KLSAgICAgIGlmIChtYXRjaCA9PSBudWxsKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotCi0gICAgICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gbWF0Y2guZ2V0T3BlcmF0aW9uKCk7Ci0gICAgICAgICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG51bGw7Ci0KLSAgICAgICAgICAvLyAgICBDaGVjayB3aGV0aGVyIHRoZSB0cmFuc3BvcnQgYXR0cmlidXRlIGhhcyB0aGUgdmFsdWUgCi0gICAgICAgICAgLy8gICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLiAKLSAgICAgICAgICBMaXN0IGV4dEVsZW0gPSBiaW5kaW5nLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICAgIGZvciAoSXRlcmF0b3IgaW5kZXggPSBleHRFbGVtLml0ZXJhdG9yKCk7IGluZGV4Lmhhc05leHQoKTspCi0gICAgICAgICAgewotICAgICAgICAgICAgT2JqZWN0IG8gPSAoT2JqZWN0KSBpbmRleC5uZXh0KCk7Ci0gICAgICAgICAgICBpZiAobyBpbnN0YW5jZW9mIFNPQVBCaW5kaW5nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBTT0FQQmluZGluZyBzb2FwQmluZGluZyA9IChTT0FQQmluZGluZykgbzsKLSAgICAgICAgICAgICAgaWYgKCFXU0lDb25zdGFudHMKLSAgICAgICAgICAgICAgICAuTlNfVVJJX1NPQVBfSFRUUAotICAgICAgICAgICAgICAgIC5lcXVhbHMoc29hcEJpbmRpbmcuZ2V0VHJhbnNwb3J0VVJJKCkpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgLy9maW5kIG9wZXJhdGlvbiBpbiBwb3J0IHR5cGUKLSAgICAgICAgICBvcGVyYXRpb24gPSBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpOwotICAgICAgICAgIGlmIChvcGVyYXRpb24gPT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChpc09uZVdheVJlc3BvbnNlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChvcGVyYXRpb24uZ2V0T3V0cHV0KCkgPT0gbnVsbCkKLSAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvblBhc3NFeGNlcHRpb24oKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oKTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyAgICBjaGVjayB3aGV0aGVyIHRoZSByZXNwb25zZSBtZXNzYWdlIGZyb20gdGhlIGxvZyAKLSAgICAgICAgICAvLyAgY29udGFpbnMgdGhlIG91dHB1dCBtZXNzYWdlCi0gICAgICAgICAgTm9kZUxpc3Qgc29hcEJvZHlMaXN0ID0KLSAgICAgICAgICAgIGRvY1Jlc3BvbnNlLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCi0gICAgICAgICAgICAgIFdTSUNvbnN0YW50cy5OU19VUklfU09BUCwKLSAgICAgICAgICAgICAgWE1MVXRpbHMuU09BUF9FTEVNX0JPRFkpOwotICAgICAgICAgIGlmICgoc29hcEJvZHlMaXN0ID09IG51bGwpIHx8IChzb2FwQm9keUxpc3QuZ2V0TGVuZ3RoKCkgPT0gMCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gUmVzcG9uc2UgZG9lcyBub3QgY29udGFpbiBhbnkgc29hcCBCb2R5IGVsZW1lbnRzCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigpOwotICAgICAgICAgIH0KLSAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvYXBCb2R5TGlzdC5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIEVsZW1lbnQgbmV4dEJvZHlFbGVtID0gKEVsZW1lbnQpIHNvYXBCb2R5TGlzdC5pdGVtKGkpOwotICAgICAgICAgICAgRWxlbWVudCBzb2FwTWVzc2FnZUVsZW1lbnQgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKG5leHRCb2R5RWxlbSk7Ci0gICAgICAgICAgICB3aGlsZSAoc29hcE1lc3NhZ2VFbGVtZW50ICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiBvdXRwdXQgaGFzIG1lc3NhZ2UgZnJvbSBTT0FQIHJlc3BvbnNlCi0gICAgICAgICAgICAgIE1lc3NhZ2UgbWVzc2FnZSA9IG9wZXJhdGlvbi5nZXRPdXRwdXQoKS5nZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgICAgIFFOYW1lIHNvYXBNZXNzYWdlUU5hbWUgPQotICAgICAgICAgICAgICAgIG5ldyBRTmFtZSgKLSAgICAgICAgICAgICAgICAgIHNvYXBNZXNzYWdlRWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKSwKLSAgICAgICAgICAgICAgICAgIHNvYXBNZXNzYWdlRWxlbWVudC5nZXRMb2NhbE5hbWUoKSk7Ci0KLSAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbnVsbAotICAgICAgICAgICAgICAgICYmIHNvYXBNZXNzYWdlUU5hbWUuZXF1YWxzKG1lc3NhZ2UuZ2V0UU5hbWUoKSkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUGFzc0V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgc29hcE1lc3NhZ2VFbGVtZW50ID0KLSAgICAgICAgICAgICAgICBYTUxVdGlscy5nZXROZXh0U2libGluZyhzb2FwTWVzc2FnZUVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChBc3NlcnRpb25QYXNzRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIH0KLQotICAgICAgfQotICAgIH0KLQotICAgIGlmIChyZXN1bHQgPT0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQpCi0gICAgewotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwobnVsbCwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMTYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzE2LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmZDMxNjguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTEzMTYuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDEzMTY7Ci0KLS8qKgotICogV1NJMTMxNgotICovCi1wdWJsaWMgY2xhc3MgV1NJMTMxNiBleHRlbmRzIEJQMTMxNgotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxMzE2KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzE4LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTMxOC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTNjZDk5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxMzE4LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuQlAxMzE4OwotCi0vKioKLSAqIFdTSTEzMTgKLSAqLwotcHVibGljIGNsYXNzIFdTSTEzMTggZXh0ZW5kcyBCUDEzMTgKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJMTMxOChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTYwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTE2MDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU5MjBmNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJMTYwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQMTYwMTsKLQotLyoqCi0gKiBXU0kxNjAxCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kxNjAxIGV4dGVuZHMgQlAxNjAxCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTE2MDEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTE3MDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0kxNzAxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhN2JlZmIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTE3MDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDE3MDE7Ci0KLS8qKgotICogV1NJMTcwMQotICovCi1wdWJsaWMgY2xhc3MgV1NJMTcwMSBleHRlbmRzIEJQMTcwMQotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0kxNzAxKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTAwLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJNDEwMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWMxYTEwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTAwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuZW52ZWxvcGUuQlA0MTAwOwotCi0vKioKLSAqIFdTSTQxMDAKLSAqLwotcHVibGljIGNsYXNzIFdTSTQxMDAgZXh0ZW5kcyBCUDQxMDAKLXsKLQotICAvKioKLSAgICogQHBhcmFtIEJhc2VNZXNzYWdlVmFsaWRhdG9yCi0gICAqLwotICBwdWJsaWMgV1NJNDEwMChCYXNlTWVzc2FnZVZhbGlkYXRvciBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJNDEwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTQxMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUwMTY1YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJNDEwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwubWVzc2FnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VNZXNzYWdlVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLmVudmVsb3BlLkJQNDEwMTsKLQotLyoqCi0gKiBXU0k0MTAxCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0k0MTAxIGV4dGVuZHMgQlA0MTAxCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBCYXNlTWVzc2FnZVZhbGlkYXRvcgotICAgKi8KLSAgcHVibGljIFdTSTQxMDEoQmFzZU1lc3NhZ2VWYWxpZGF0b3IgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTQxMDIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNWZmYWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC9tZXNzYWdlL1dTSTQxMDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLm1lc3NhZ2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5lbnZlbG9wZS5CUDQxMDI7Ci0KLS8qKgotICogV1NJNDEwMgotICovCi1wdWJsaWMgY2xhc3MgV1NJNDEwMiBleHRlbmRzIEJQNDEwMgotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0k0MTAyKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJNDEwMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTYxZDA0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci0KLS8qKgotICogV1NJNDEwMwotICovCi1wdWJsaWMgY2xhc3MgV1NJNDEwMyBleHRlbmRzIEJQNDEwMwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0k0MTAzKEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTA0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJNDEwNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjE3NmQyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTA0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci0KLS8qKgotICogV1NJNDEwNAotICovCi1wdWJsaWMgY2xhc3MgV1NJNDEwNCBleHRlbmRzIEJQNDEwNAotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0k0MTA0KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTA1LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJNDEwNS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmZmOGQwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTA1LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci0KLS8qKgotICogV1NJNDEwNQotICovCi1wdWJsaWMgY2xhc3MgV1NJNDEwNSBleHRlbmRzIEJQNDEwNQotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0k0MTA1KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTA2LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJNDEwNi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2E0NGFlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTA2LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci0KLS8qKgotICogV1NJNDEwNgotICovCi1wdWJsaWMgY2xhc3MgV1NJNDEwNiBleHRlbmRzIEJQNDEwNgotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0k0MTA2KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTA3LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL21lc3NhZ2UvV1NJNDEwNy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWQ1MjQyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvbWVzc2FnZS9XU0k0MTA3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5tZXNzYWdlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZU1lc3NhZ2VWYWxpZGF0b3I7Ci0KLS8qKgotICogV1NJNDEwNwotICovCi1wdWJsaWMgY2xhc3MgV1NJNDEwNyBleHRlbmRzIEJQNDEwNwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gQmFzZU1lc3NhZ2VWYWxpZGF0b3IKLSAgICovCi0gIHB1YmxpYyBXU0k0MTA3KEJhc2VNZXNzYWdlVmFsaWRhdG9yIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9CUDMwMDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9CUDMwMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZmMDNlOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvQlAzMDAxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwudWRkaTsKLQotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlVERElVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC5XU0RMRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5PdmVydmlld0RvYzsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci0KLQotLyoqCi0gKiBCUDMwMDEgLSBUaGUgdE1vZGVsIGVsZW1lbnQgdXNlcyBXU0RMIGFzIHRoZSBkZXNjcmlwdGlvbiBsYW5ndWFnZToKLSAqIHRoZSB1ZGRpOm92ZXJ2aWV3RG9jL3VkZGk6b3ZlcnZpZXdVUkwgZWxlbWVudCBjb250YWlucyBhIHJlZmVyZW5jZQotICogdG8gYSBXU0RMIGRlZmluaXRpb24sIHdoaWNoIHVzZXMgYSBuYW1lc3BhY2UKLSAqIG9mIGh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvLgotICogVGhlIHVkZGk6b3ZlcnZpZXdVUkwgbWF5IHVzZSB0aGUgZnJhZ21lbnQgbm90YXRpb24gdG8gcmVzb2x2ZQotICogdG8gYSB3c2RsOmJpbmRpbmcuCi0gKi8KLXB1YmxpYyBjbGFzcyBCUDMwMDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgVURESVZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gVURESVZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDMwMDEoVURESVZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qKgotICAgKiBTZXRzIHRoZSByZXN1bHQgdmFyaWFibGUgdG8gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQgdmFsdWUgYW5kCi0gICAqIHBsYWNlcyBhIHRNb2RlbCBrZXkgaW4gdGhlIGZhdWx0IGRldGFpbCBtZXNzYWdlLgotICAgKiBAcGFyYW0gdE1vZGVsS2V5Ci0gICAqLwotICBwcml2YXRlIHZvaWQgc2V0RmF1bHRNZXNzYWdlKFN0cmluZyB0TW9kZWxLZXkpCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9ICJUaGUgdE1vZGVsIGtleSBpczogWyIgKyB0TW9kZWxLZXkgKyAiXS4iOwotICB9Ci0KLSAgLyoqCi0gICAqIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgIEJpbmRpbmcgYmluZGluZyA9IG51bGw7Ci0KLSAgICAvLyBHZXQgdGhlIHRNb2RlbCBmcm9tIHRoZSBlbnRyeUNvbnRleHQKLSAgICBUTW9kZWwgdE1vZGVsID0gKFRNb2RlbCkgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIC8vIElmIHRoZSB0TW9kZWwgZG9lcyBub3QgZXhpc3QsIHRoZW4gZmFpbAotICAgIGlmICh0TW9kZWwgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWxNZXNzYWdlID0gIkNvdWxkIG5vdCBsb2NhdGUgYSB0TW9kZWwuIjsKLSAgICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgICB0ZXN0QXNzZXJ0aW9uLAotICAgICAgICByZXN1bHQsCi0gICAgICAgIGZhaWx1cmVEZXRhaWxNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcga2V5ID0gdE1vZGVsLmdldFRNb2RlbEtleSgpOwotCi0gICAgT3ZlcnZpZXdEb2MgZG9jID0gdE1vZGVsLmdldE92ZXJ2aWV3RG9jKCk7Ci0gICAgaWYgKGRvYyAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyB1cmxUZXh0ID0gZG9jLmdldE92ZXJ2aWV3VVJMU3RyaW5nKCk7Ci0KLSAgICAgIC8vIFRyeSB0byByZXNvbHZlIHRoZSBVUkwgJiBjaGVjayB0aGUgV1NETAotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQgPSBuZXcgV1NETERvY3VtZW50KHVybFRleHQpOwotICAgICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSB3c2RsRG9jdW1lbnQuZ2V0RGVmaW5pdGlvbnMoKTsKLSAgICAgICAgTWFwIG5hbWVzcGFjZXMgPSBkZWZpbml0aW9uLmdldE5hbWVzcGFjZXMoKTsKLSAgICAgICAgaWYgKCFuYW1lc3BhY2VzLmNvbnRhaW5zVmFsdWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMKSkKLSAgICAgICAgewotICAgICAgICAgIHVybFRleHQgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gR2V0IGJpbmRpbmcKLSAgICAgICAgYmluZGluZyA9IFVERElVdGlscy5nZXRCaW5kaW5nKHVybFRleHQsIHdzZGxEb2N1bWVudCk7Ci0KLSAgICAgICAgLy8gU2VlIGlmIHRoZSBiaW5kaW5nIGlzIGluIHRoZSBXU0RMIGRvY3VtZW50Ci0gICAgICAgIGlmIChiaW5kaW5nID09IG51bGwKLSAgICAgICAgICB8fCBkZWZpbml0aW9uLmdldEJpbmRpbmcoYmluZGluZy5nZXRRTmFtZSgpKSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgdXJsVGV4dCA9IG51bGw7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICB1cmxUZXh0ID0gbnVsbDsKLSAgICAgIH0KLQotICAgICAgaWYgKHVybFRleHQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGZyYWdtZW50SUQgPSBudWxsOwotICAgICAgICBpbnQgaW5kZXggPSB1cmxUZXh0LmluZGV4T2YoIiMiKTsKLSAgICAgICAgaWYgKGluZGV4ID4gLTEpCi0gICAgICAgIHsKLSAgICAgICAgICBmcmFnbWVudElEID0gdXJsVGV4dC5zdWJzdHJpbmcoaW5kZXggKyAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoZnJhZ21lbnRJRCAhPSBudWxsKQotICAgICAgICAgICYmIChmcmFnbWVudElELmxlbmd0aCgpICE9IDApCi0gICAgICAgICAgJiYgKGZyYWdtZW50SUQudG9VcHBlckNhc2UoKS5pbmRleE9mKCJ4cG9pbnRlcigiLnRvVXBwZXJDYXNlKCkpID09IC0xCi0gICAgICAgICAgICB8fCBmcmFnbWVudElELmxhc3RJbmRleE9mKCIpIikgIT0gZnJhZ21lbnRJRC5sZW5ndGgoKSAtIDEpKQotICAgICAgICB7Ci0gICAgICAgICAgc2V0RmF1bHRNZXNzYWdlKGtleSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBzZXRGYXVsdE1lc3NhZ2Uoa2V5KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBlbHNlCi0gICAgewotICAgICAgc2V0RmF1bHRNZXNzYWdlKGtleSk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWxNZXNzYWdlKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9CUDMwMDIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9CUDMwMDIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcyY2RlNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvQlAzMDAyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC51ZGRpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJpbmRpbmcuQmluZGluZ1RlbXBsYXRlOwotCi0KLS8qKgotICogQlAzMDAyIC0gVGhlIHVkZGk6YmluZGluZ1RlbXBsYXRlIGVsZW1lbnQgY29udGFpbnMgYSB1ZGRpOmFjY2Vzc1BvaW50IGVsZW1lbnQsCi0gKiB3aXRoIGEgbm9uLWVtcHR5IHZhbHVlLgotICovCi1wdWJsaWMgY2xhc3MgQlAzMDAyIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIFVERElWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFVERElWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAzMDAyKFVERElWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgc2VydmljZUxvY2F0aW9uID0gbnVsbDsKLQotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgLy8gR2V0IHRoZSBiaW5kaW5nVGVtcGxhdGUgZnJvbSB0aGUgZW50cnlDb250ZXh0Ci0gICAgQmluZGluZ1RlbXBsYXRlIGJpbmRpbmdUZW1wbGF0ZSA9Ci0gICAgICAoQmluZGluZ1RlbXBsYXRlKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgLy8gSWYgdGhlIGJpbmRpbmdUZW1wbGF0ZSBkb2VzIG5vdCBjb250YWluIGFuIGFjY2Vzc1BvaW50LCB0aGVuIGZhaWwKLSAgICBpZiAoKGJpbmRpbmdUZW1wbGF0ZS5nZXRBY2Nlc3NQb2ludCgpID09IG51bGwpCi0gICAgICB8fCAoKHNlcnZpY2VMb2NhdGlvbiA9IGJpbmRpbmdUZW1wbGF0ZS5nZXRBY2Nlc3NQb2ludCgpLmdldFRleHQoKSkKLSAgICAgICAgPT0gbnVsbCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9Ci0gICAgICAgICJUaGUgYmluZGluZ1RlbXBhdGUga2V5IGlzOiBbIgotICAgICAgICAgICsgYmluZGluZ1RlbXBsYXRlLmdldEJpbmRpbmdLZXkoKQotICAgICAgICAgICsgIl0uIjsKLSAgICB9Ci0KLSAgICAvLyBFbHNlIHNhdmUgdGhlIHNlcnZpY2UgbG9jYXRpb24gaW4gdGhlIGFzc2VydGlvbiByZXN1bHQKLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gU2F2ZSBzZXJ2aWNlIGxvY2F0aW9uIGluIGFuYWx5emVyIGNvbnRleHQKLSAgICAgIGVudHJ5Q29udGV4dAotICAgICAgICAuZ2V0QW5hbHl6ZXJDb250ZXh0KCkKLSAgICAgICAgLmdldFNlcnZpY2VSZWZlcmVuY2UoKQotICAgICAgICAuc2V0U2VydmljZUxvY2F0aW9uKAotICAgICAgICBzZXJ2aWNlTG9jYXRpb24pOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsTWVzc2FnZSk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvQlAzMDAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvQlAzMDAzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZTdkNDguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL0JQMzAwMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwudWRkaTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVURESVV0aWxzOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLQotCi0vKioKLSAqIEJQMzAwMyAtIFRoZSB1ZGRpOnRNb2RlbCBpcyBjYXRlZ29yaXplZCB1c2luZyB0aGUgdWRkaTp0eXBlcyB0YXhvbm9teSwKLSAqIGFzICJ3c2RsU3BlYyI6IHRoZSB1ZGRpOmtleWVkUmVmZXJlbmNlIGVsZW1lbnQgaGFzIGFuIGF0dHJpYnV0ZSBrZXlWYWx1ZQotICogZXF1YWwgdG8gIndzZGxTcGVjIiwgYW5kIGtleU5hbWUgZXF1YWwgdG8gInVkZGktb3JnOnR5cGVzIiBvciAidHlwZXMiLgotICovCi1wdWJsaWMgY2xhc3MgQlAzMDAzIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIFVERElWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFVERElWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAzMDAzKFVERElWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgIC8vIEdldCB0aGUgdE1vZGVsIGZyb20gdGhlIGVudHJ5Q29udGV4dAotICAgIFRNb2RlbCB0TW9kZWwgPSAoVE1vZGVsKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgLy8gSWYgdGhlIHRNb2RlbCBkb2VzIG5vdCBleGlzdCwgdGhlbiBmYWlsCi0gICAgaWYgKHRNb2RlbCA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPQotICAgICAgICAiQ291bGQgbm90IGxvY2F0ZSBhIHRNb2RlbCB3aXRoIGEgY2F0ZWdvcml6YXRpb24gb2YgJ3dzZGxTcGVjJy4iOwotICAgIH0KLQotICAgIC8vIElmIHRoZXJlIGlzIGEgdE1vZGVsIGFuZCBpdCBpcyBub3QgY2F0ZWdvcml6ZWQgYXMgIndzZGxTcGVjIiwgdGhlbiBmYWlsCi0gICAgZWxzZSBpZiAoIShVRERJVXRpbHMuaXNXc2RsU3BlYyh0TW9kZWwpKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWxNZXNzYWdlID0KLSAgICAgICAgIlRoZSB0TW9kZWwga2V5IGlzOiBbIgotICAgICAgICAgICsgdE1vZGVsLmdldFRNb2RlbEtleSgpCi0gICAgICAgICAgKyAiXVxuIgotICAgICAgICAgICsgIlRoZSBjYXRlZ29yeUJhZyBpczogWyIKLSAgICAgICAgICArIHRoaXMudmFsaWRhdG9yLmNhdGVnb3J5QmFnVG9TdHJpbmcodE1vZGVsLmdldENhdGVnb3J5QmFnKCkpCi0gICAgICAgICAgKyAiXSI7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWxNZXNzYWdlKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9VRERJVmFsaWRhdG9ySW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1VERElWYWxpZGF0b3JJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YmM5ZWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1VERElWYWxpZGF0b3JJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwudWRkaTsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFuYWx5emVyQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuU2VydmljZVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuVURESVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLldTRExFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuaW1wbC5XU0RMRWxlbWVudEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFydGlmYWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBc3NlcnRpb25zOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuVURESVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuV1NETFZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0QXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FbnRyeVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVURESVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLldTRExEb2N1bWVudDsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5iaW5kaW5nLkJpbmRpbmdUZW1wbGF0ZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5CaW5kaW5nRGV0YWlsOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuVE1vZGVsRGV0YWlsOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5DYXRlZ29yeUJhZzsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuS2V5ZWRSZWZlcmVuY2U7Ci0KLWltcG9ydCBjb20uaWJtLndzZGwudXRpbC5TdHJpbmdVdGlsczsKLQotLyoqCi0gKiBUaGUgVURESSB2YWxpZGF0b3Igd2lsbCB2ZXJpZnkgdGhhdCBhIHdlYiBzZXJ2aWNlIGRlc2NyaXB0aW9uIHdhcyBwdWJsaXNoZWQgY29ycmVjdGx5IGluIGEgVURESSByZWdpc3RyeS4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBVRERJVmFsaWRhdG9ySW1wbAotICBleHRlbmRzIEJhc2VWYWxpZGF0b3JJbXBsCi0gIGltcGxlbWVudHMgVURESVZhbGlkYXRvcgotewotICAvKioKLSAgICogVURESSByZWZlcmVuY2UuCi0gICAqLwotICBwcm90ZWN0ZWQgVURESVJlZmVyZW5jZSB1ZGRpUmVmZXJlbmNlOwotICAvKioKLSAgICogVURESSBwcm94eS4KLSAgICovCi0gIHByb3RlY3RlZCBVRERJUHJveHkgdWRkaVByb3h5OwotICBwcml2YXRlIGJvb2xlYW4gdGVzdGFibGU7Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgYXJ0aWZhY3QgdHlwZSB0aGF0IHRoaXMgdmFsaWRhdG9yIGFwcGxpZXMgdG8uCi0gICAqIEByZXR1cm4gdGhlIGFydGlmYWN0IHR5cGUgKGEgU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRBcnRpZmFjdFR5cGUoKSB7Ci0gICAgICByZXR1cm4gVFlQRV9ESVNDT1ZFUlk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBjb2xsZWN0aW9uIG9mIGVudHJ5IHR5cGVzIHRoYXQgdGhpcyB2YWxpZGF0b3IgYXBwbGllcyB0by4KLSAgICogQHJldHVybiBhbiBhcnJheSBvZiBlbnRyeSB0eXBlcyAoU3RyaW5ncykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmdbXSBnZXRFbnRyeVR5cGVzKCkgewotICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXSB7Ci0gICAgICAgICAgICAgIFRZUEVfRElTQ09WRVJZX0JJTkRJTkdURU1QTEFURSwKLSAgICAgICAgICAgICAgVFlQRV9ESVNDT1ZFUllfVE1PREVMfTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgaW5pdCgKLSAgICAgICAgICBBbmFseXplckNvbnRleHQgYW5hbHl6ZXJDb250ZXh0LAotICAgICAgICAgIFByb2ZpbGVBc3NlcnRpb25zIGFzc2VydGlvbnMsCi0gICAgICAgICAgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QsCi0gICAgICAgICAgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcsCi0gICAgICAgICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAgICAgICAgdGhyb3dzIFdTSUV4Y2VwdGlvbiB7Ci0gICAgICBzdXBlci5pbml0KGFuYWx5emVyQ29udGV4dCwKLSAgICAgICAgICAgICAgYXNzZXJ0aW9ucy5nZXRBcnRpZmFjdChUWVBFX0RJU0NPVkVSWSksIHJlcG9ydEFydGlmYWN0LCByZXBvcnRlcik7Ci0gICAgICB0aGlzLnVkZGlSZWZlcmVuY2UgPSBhbmFseXplckNvbmZpZy5nZXRVRERJUmVmZXJlbmNlKCk7Ci0gICAgICB0ZXN0YWJsZSA9IGFuYWx5emVyQ29uZmlnLmlzVURESVJlZmVyZW5jZVNldCgpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5VRERJVmFsaWRhdG9yI2luaXQob3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFuYWx5emVyQ29udGV4dCwgb3JnLndzaS50ZXN0LnByb2ZpbGUuUHJvZmlsZUFydGlmYWN0LCBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydEFydGlmYWN0LCBvcmcud3NpLnRlc3QuYW5hbHl6ZXIuY29uZmlnLlVERElSZWZlcmVuY2UsIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0ZXIpCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KAotICAgIEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQsCi0gICAgUHJvZmlsZUFydGlmYWN0IHByb2ZpbGVBcnRpZmFjdCwKLSAgICBSZXBvcnRBcnRpZmFjdCByZXBvcnRBcnRpZmFjdCwKLSAgICBVRERJUmVmZXJlbmNlIHVkZGlSZWZlcmVuY2UsCi0gICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gQmFzZVZhbGlkYXRvckltcGwKLSAgICBzdXBlci5pbml0KGFuYWx5emVyQ29udGV4dCwgcHJvZmlsZUFydGlmYWN0LCByZXBvcnRBcnRpZmFjdCwgcmVwb3J0ZXIpOwotCi0gICAgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcgPSBVdGlscy5nZXRBbmFseXplckNvbmZpZyhyZXBvcnRlcik7Ci0gICAgdGVzdGFibGUgPSAoKGFuYWx5emVyQ29uZmlnICE9IG51bGwpICYmIChhbmFseXplckNvbmZpZy5pc1VERElSZWZlcmVuY2VTZXQoKSkpOwkKLQotICAgIC8vIFNhdmUgaW5wdXQgcmVmZXJlbmNlcwotICAgIHRoaXMudWRkaVJlZmVyZW5jZSA9IHVkZGlSZWZlcmVuY2U7Ci0gIH0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5VRERJVmFsaWRhdG9yI3ZhbGlkYXRlKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZhbGlkYXRlQXJ0aWZhY3QoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBFbnRyeSBlbnRyeSA9IG51bGw7Ci0KLSAgICBCaW5kaW5nVGVtcGxhdGUgYmluZGluZ1RlbXBsYXRlID0gbnVsbDsKLSAgICBUTW9kZWwgdE1vZGVsID0gbnVsbDsKLQotICAgIC8vIGl0IGRlcHJpY2F0ZWQgYWZ0ZXIgcmVmYWN0b3JpbmcgCi0gICAgLy8gbm93IHRoZSBpbm5lciBjbGFzc2VzIG1vdmVkIG91dCBmcm9tIHZhbGlkYXRvcgotICAgIC8vU3RyaW5nIGNsYXNzUHJlZml4ID0gdGhpcy5nZXRDbGFzcygpLmdldE5hbWUoKSArICIkIjsKLSAgICBTdHJpbmcgY2xhc3NQcmVmaXggPSB0aGlzLmdldENsYXNzKCkuZ2V0UGFja2FnZSgpLmdldE5hbWUoKSsiLiI7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBTZXQgdXAgYSByZWZlcmVuY2UgdG8gdGhlIFVEREkgcmVnaXN0cnkKLSAgICAgIHVkZGlQcm94eSA9IG5ldyBVRERJUHJveHkoKTsKLQotICAgICAgLy9uZXcgU29ja2V0KG5ldyBJbmV0QWRkcmVzcyh1ZGRpUmVmZXJlbmNlLmdldElucXVpcnlVUkwoKSkpOwotICAgICAgdWRkaVByb3h5LnNldElucXVpcnlVUkwodWRkaVJlZmVyZW5jZS5nZXRJbnF1aXJ5VVJMKCkpOwotICAgICAgYm9vbGVhbiB3YXNFeCA9IGZhbHNlOwotICAgICAgSW5wdXRTdHJlYW0gc3RyZWFtOwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIFVSTCB1cmwgPSBTdHJpbmdVdGlscy5nZXRVUkwobnVsbCwgdWRkaVJlZmVyZW5jZS5nZXRJbnF1aXJ5VVJMKCkpOwotICAgICAgICBzdHJlYW0gPSB1cmwub3BlblN0cmVhbSgpOwotICAgICAgICBzdHJlYW0uY2xvc2UoKTsKLSAgICAgIH0KLQotICAgICAgY2F0Y2ggKFVua25vd25Ib3N0RXhjZXB0aW9uIGV4KQotICAgICAgewotICAgICAgICB3YXNFeCA9IHRydWU7Ci0gICAgICB9Ci0KLSAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBleCkKLSAgICAgIHsKLSAgICAgIH0KLQotICAgICAgaWYgKCF3YXNFeCkKLSAgICAgIHsKLQotICAgICAgICAvLyBJZiB0aGUgVURESSByZWZlcmVuY2UgaXMgdG8gYSBiaW5kaW5nVGVtcGxhdGUgdGhlbiBnZXQgaXQKLSAgICAgICAgaWYgKHVkZGlSZWZlcmVuY2UuZ2V0S2V5VHlwZSgpLmVxdWFscyhVRERJUmVmZXJlbmNlLkJJTkRJTkdfS0VZKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldCBiaW5kaW5nIGRldGFpbCB3aGljaCB3aWxsIGNvbnRhaW4gdGhlIGJpbmRpbmdUZW1wbGF0ZQotICAgICAgICAgIEJpbmRpbmdEZXRhaWwgYmluZGluZ0RldGFpbCA9Ci0gICAgICAgICAgICB1ZGRpUHJveHkuZ2V0X2JpbmRpbmdEZXRhaWwodWRkaVJlZmVyZW5jZS5nZXRLZXkoKSk7Ci0KLSAgICAgICAgICAvLyBHZXQgYmluZGluZ1RlbXBsYXRlCi0gICAgICAgICAgYmluZGluZ1RlbXBsYXRlID0KLSAgICAgICAgICAgIChCaW5kaW5nVGVtcGxhdGUpIGJpbmRpbmdEZXRhaWwKLSAgICAgICAgICAgICAgLmdldEJpbmRpbmdUZW1wbGF0ZVZlY3RvcigpCi0gICAgICAgICAgICAgIC5lbGVtZW50QXQoCi0gICAgICAgICAgICAgIDApOwotCi0gICAgICAgICAgaWYgKHZlcmJvc2VPcHRpb24pCi0gICAgICAgICAgewotICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKAotICAgICAgICAgICAgICAiICAgIEJpbmRpbmdUZW1wbGF0ZSAtICIKLSAgICAgICAgICAgICAgICArIFVERElVdGlscy5iaW5kaW5nVGVtcGxhdGVUb1N0cmluZyhiaW5kaW5nVGVtcGxhdGUpKTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBHZXQgdGhlIHdzZGxTcGVjIHRNb2RlbAotICAgICAgICAgIHRNb2RlbCA9IFVERElVdGlscy5maW5kVE1vZGVsKHVkZGlQcm94eSwgYmluZGluZ1RlbXBsYXRlLAotICAgICAgICAgICAgICAgICAgdmVyYm9zZU9wdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbHNlIGl0IGhhcyB0byBiZSBhIHRNb2RlbAotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBUTW9kZWxEZXRhaWwgdE1vZGVsRGV0YWlsID0KLSAgICAgICAgICAgIHVkZGlQcm94eS5nZXRfdE1vZGVsRGV0YWlsKHVkZGlSZWZlcmVuY2UuZ2V0S2V5KCkpOwotICAgICAgICAgIHRNb2RlbCA9IChUTW9kZWwpIHRNb2RlbERldGFpbC5nZXRUTW9kZWxWZWN0b3IoKS5lbGVtZW50QXQoMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodmVyYm9zZU9wdGlvbikKLSAgICAgICAgewotICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigKLSAgICAgICAgICAgICIgICAgVE1vZGVsIHNwZWNpZmllZCBvciBmb3VuZCBpbiBiaW5kaW5nVGVtcGxhdGUgLSAiCi0gICAgICAgICAgICAgICsgVURESVV0aWxzLnRNb2RlbFRvU3RyaW5nKHRNb2RlbCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChiaW5kaW5nVGVtcGxhdGUgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgc2V0TWlzc2luZ0lucHV0KAotICAgICAgICAgIEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ESVNDT1ZFUllfQklORElOR1RFTVBMQVRFKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIGEgYmluZGluZ1RlbXBsYXRlLCB0aGVuIHByb2Nlc3MgdGVzdCBhc3NlcnRpb25zIGZvciBpdAotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBDcmVhdGUgZW50cnkKLSAgICAgICAgZW50cnkgPSB0aGlzLnJlcG9ydGVyLmdldFJlcG9ydCgpLmNyZWF0ZUVudHJ5KCk7Ci0gICAgICAgIGVudHJ5LnNldEVudHJ5VHlwZSgKLSAgICAgICAgICBFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfRElTQ09WRVJZX0JJTkRJTkdURU1QTEFURSkpOwotICAgICAgICBlbnRyeS5zZXRSZWZlcmVuY2VJRChiaW5kaW5nVGVtcGxhdGUuZ2V0QmluZGluZ0tleSgpKTsKLSAgICAgICAgZW50cnkuc2V0RW50cnlEZXRhaWwoYmluZGluZ1RlbXBsYXRlKTsKLQotICAgICAgICAvLyBQcm9jZXNzIHRlc3QgYXNzZXJ0aW9ucwotICAgICAgICBwcm9jZXNzQXNzZXJ0aW9ucygKLSAgICAgICAgICBjbGFzc1ByZWZpeCwKLSAgICAgICAgICBuZXcgRW50cnlDb250ZXh0KGVudHJ5LCB0aGlzLmFuYWx5emVyQ29udGV4dCkpOwotICAgICAgfQotCi0gICAgICAvLyBOT1RFOiBGcm9tIHRoaXMgcG9pbnQgZm9yd2FyZCwgaWYgYSBiaW5kaW5nVGVtcGxhdGUgZG9lcyBOT1QgaGF2ZSBhIHdzZGxTcGVjIHRNb2RlbCwKLSAgICAgIC8vICAgICAgIHRoZSB0TW9kZWwgd2lsbCBiZSBOVUxMLgotCi0gICAgICAvLyBDcmVhdGUgZW50cnkKLSAgICAgIGVudHJ5ID0gdGhpcy5yZXBvcnRlci5nZXRSZXBvcnQoKS5jcmVhdGVFbnRyeSgpOwotICAgICAgZW50cnkuc2V0RW50cnlUeXBlKAotICAgICAgICBFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfRElTQ09WRVJZX1RNT0RFTCkpOwotICAgICAgZW50cnkuc2V0UmVmZXJlbmNlSUQoCi0gICAgICAgICh0TW9kZWwgPT0gbnVsbCA/ICJbdE1vZGVsXSIgOiB0TW9kZWwuZ2V0VE1vZGVsS2V5KCkpKTsKLSAgICAgIGVudHJ5LnNldEVudHJ5RGV0YWlsKHRNb2RlbCk7Ci0KLSAgICAgIC8vIFByb2Nlc3MgdGVzdCBhc3NlcnRpb25zCi0gICAgICBwcm9jZXNzQXNzZXJ0aW9ucygKLSAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgIG5ldyBFbnRyeUNvbnRleHQoZW50cnksIHRoaXMuYW5hbHl6ZXJDb250ZXh0KSk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIFRocm93IFdTSUV4Y2VwdGlvbgotICAgICAgaWYgKGUgaW5zdGFuY2VvZiBXU0lFeGNlcHRpb24pCi0gICAgICAgIHRocm93IChXU0lFeGNlcHRpb24pIGU7Ci0gICAgICBlbHNlCi0gICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICAgIkFuIGV4Y2VwdGlvbiBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBkaXNjb3ZlcnkgdGVzdCBhc3NlcnRpb25zLiIsCi0gICAgICAgICAgZSk7Ci0gICAgfQotCi0gICAgLy8gQ2xlYW51cAotICAgIGNsZWFudXAoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuVURESVZhbGlkYXRvciN2YWxpZGF0ZSgpCi0gICAqLwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIHZhbGlkYXRlQXJ0aWZhY3QoKS4gKi8KLSAgcHVibGljIFN0cmluZyB2YWxpZGF0ZSgpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHZhbGlkYXRlQXJ0aWZhY3QoKTsKLSAgICAvLyBHZXQgV1NETCBsb2NhdGlvbgotICAgIHJldHVybiB0aGlzLmFuYWx5emVyQ29udGV4dC5nZXRTZXJ2aWNlUmVmZXJlbmNlKCkuZ2V0V1NETExvY2F0aW9uKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXQgV1NETCBiaW5kaW5nIGluIHRoZSBzZXJ2aWNlIHJlZmVyZW5jZSBwb3J0aW9uIG9mIHRoZSBhbmFseXplciBjb250ZXh0LgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgc2V0V1NETEJpbmRpbmcoQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgU3RyaW5nIGJpbmRpbmdOYW1lID0KLSAgICAgIGJpbmRpbmcgPT0gbnVsbCA/IG51bGwgOiBiaW5kaW5nLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgU3RyaW5nIG5hbWVzcGFjZSA9Ci0gICAgICBiaW5kaW5nID09IG51bGwgPyBudWxsIDogYmluZGluZy5nZXRRTmFtZSgpLmdldE5hbWVzcGFjZVVSSSgpOwotCi0gICAgLy8gU2V0IHRoZSBXU0RMIGRvY3VtZW50IGxvY2F0aW9uIGluIGFuYWx5emVyQ29udGV4dAotICAgIFNlcnZpY2VSZWZlcmVuY2Ugc2VydmljZVJlZmVyZW5jZSA9Ci0gICAgICB0aGlzLmFuYWx5emVyQ29udGV4dC5nZXRTZXJ2aWNlUmVmZXJlbmNlKCk7Ci0KLSAgICAvLyBJZiB0aGUgd3NkbEVsZW1lbnQgZG9lcyBub3QgZXhpc3QsIHRoZW4gc2V0IGl0Ci0gICAgV1NETEVsZW1lbnQgd3NkbEVsZW1lbnQ7Ci0gICAgaWYgKCh3c2RsRWxlbWVudCA9IHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKSkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBHZXQgdGhlIFdTREwgYmluZGluZyBmcm9tIHRoZSBvdmVydmlld1VSTCBhbmQgc2V0IGluIGFuYWx5emVyQ29udGV4dAotICAgICAgd3NkbEVsZW1lbnQgPSBuZXcgV1NETEVsZW1lbnRJbXBsKCk7Ci0gICAgICB3c2RsRWxlbWVudC5zZXROYW1lKGJpbmRpbmdOYW1lKTsKLSAgICAgIHdzZGxFbGVtZW50LnNldE5hbWVzcGFjZShuYW1lc3BhY2UpOwotICAgICAgd3NkbEVsZW1lbnQuc2V0VHlwZShXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fQklORElORyk7Ci0gICAgfQotCi0gICAgLy8gU2V0IHRoZSB3c2RsRWxlbWVudCBpbiB0aGUgc2VydmljZSByZWZlcmVuY2UKLSAgICBzZXJ2aWNlUmVmZXJlbmNlLnNldFdTRExFbGVtZW50KHdzZGxFbGVtZW50KTsKLQotICAgIC8vIFNldCB0aGUgc2VydmljZSByZWZlcmVuY2UgYmFjayBpbnRvIHRoZSBhbmFseXplckNvbnRleHQKLSAgICBhbmFseXplckNvbnRleHQuc2V0U2VydmljZVJlZmVyZW5jZShzZXJ2aWNlUmVmZXJlbmNlKTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgdGhlIFdTREwgbG9jYXRpb24gaW4gdGhlIHNlcnZpY2UgcmVmZXJlbmNlIHBvcnRpb24gb2YgdGhlIGFuYWx5emVyIGNvbnRleHQuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzZXRXU0RMTG9jYXRpb24oU3RyaW5nIHdzZGxVUkwpCi0gIHsKLSAgICAvLyBTZXQgdGhlIFdTREwgZG9jdW1lbnQgbG9jYXRpb24gaW4gYW5hbHl6ZXJDb250ZXh0Ci0gICAgU2VydmljZVJlZmVyZW5jZSBzZXJ2aWNlUmVmZXJlbmNlID0KLSAgICAgIHRoaXMuYW5hbHl6ZXJDb250ZXh0LmdldFNlcnZpY2VSZWZlcmVuY2UoKTsKLSAgICBzZXJ2aWNlUmVmZXJlbmNlLnNldFdTRExMb2NhdGlvbih3c2RsVVJMKTsKLQotICAgIC8vIFNldCB0aGUgc2VydmljZSByZWZlcmVuY2UgYmFjayBpbnRvIHRoZSBhbmFseXplckNvbnRleHQKLSAgICBhbmFseXplckNvbnRleHQuc2V0U2VydmljZVJlZmVyZW5jZShzZXJ2aWNlUmVmZXJlbmNlKTsKLSAgfQotCi0gICAvKioKLSAgICogRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSB3c2RsU3BlYyB0TW9kZWwuCi0gICAqIEBkZXByZWNhdGVkIC0tIHVzZSBVRERJVXRpbHMuaXNXc2RsU3BlYyhTdHJpbmcgd3NkbExvY2F0aW9uKS4KLSAgICovCi0gIHByb3RlY3RlZCBib29sZWFuIGlzV3NkbFNwZWMoVE1vZGVsIHRNb2RlbCkKLSAgewotICAgIGJvb2xlYW4gdE1vZGVsRm91bmQgPSBmYWxzZTsKLSAgICBDYXRlZ29yeUJhZyBjYXRlZ29yeUJhZyA9IG51bGw7Ci0gICAgSXRlcmF0b3IgY2F0ZWdvcnlCYWdJdGVyYXRvciA9IG51bGw7Ci0KLSAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGNhdGV0Z29yeUJhZyBjb250YWlucyB3c2RsU3BlYwotICAgIGlmICgoY2F0ZWdvcnlCYWcgPSB0TW9kZWwuZ2V0Q2F0ZWdvcnlCYWcoKSkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBHZXQgdGhlIGxpc3Qgb2Yga2V5ZWQgcmVmZXJlbmNlcwotICAgICAgY2F0ZWdvcnlCYWdJdGVyYXRvciA9IGNhdGVnb3J5QmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCkuaXRlcmF0b3IoKTsKLQotICAgICAgS2V5ZWRSZWZlcmVuY2Uga2V5ZWRSZWZlcmVuY2UgPSBudWxsOwotCi0gICAgICAvLyBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIGtleWVkIHJlZmVyZW5jZXMKLSAgICAgIHdoaWxlIChjYXRlZ29yeUJhZ0l0ZXJhdG9yLmhhc05leHQoKSAmJiAhKHRNb2RlbEZvdW5kKSkKLSAgICAgIHsKLSAgICAgICAgLy8gR2V0IG5leHQga2V5ZWQgcmVmZXJlbmNlCi0gICAgICAgIGtleWVkUmVmZXJlbmNlID0gKEtleWVkUmVmZXJlbmNlKSBjYXRlZ29yeUJhZ0l0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgICAvLyBJZiB0aGlzIGlzIGEgdHlwZXMgdGF4b25vbXkgdE1vZGVsIGFuZCB0aGUgdmFsdWUgaXMgd3NkbFNwZWMsIHRoZW4gdGhpcyBpcyB0aGUgdE1vZGVsIHdlIHdhbnQKLSAgICAgICAgLy8gUkVNT1ZFOiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNoZWNrIHRoZSBrZXkgbmFtZQotICAgICAgICAvL2lmIChrZXllZFJlZmVyZW5jZS5nZXRUTW9kZWxLZXkoKS5lcXVhbHNJZ25vcmVDYXNlKFRNb2RlbC5UWVBFU19UTU9ERUxfS0VZKSAmJgotICAgICAgICAvLyAgICJ3c2RsU3BlYyIuZXF1YWxzKGtleWVkUmVmZXJlbmNlLmdldEtleVZhbHVlKCkpICYmCi0gICAgICAgIC8vICAgKCJ0eXBlcyIuZXF1YWxzKGtleWVkUmVmZXJlbmNlLmdldEtleU5hbWUoKSkgfHwKLSAgICAgICAgLy8gICAgInVkZGktb3JnOnR5cGVzIi5lcXVhbHMoa2V5ZWRSZWZlcmVuY2UuZ2V0S2V5TmFtZSgpKSkpIHsKLSAgICAgICAgLy8gIHRNb2RlbEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgLy99Ci0gICAgICAgIGlmIChrZXllZFJlZmVyZW5jZQotICAgICAgICAgIC5nZXRUTW9kZWxLZXkoKQotICAgICAgICAgIC5lcXVhbHNJZ25vcmVDYXNlKFRNb2RlbC5UWVBFU19UTU9ERUxfS0VZKQotICAgICAgICAgICYmICJ3c2RsU3BlYyIuZXF1YWxzKGtleWVkUmVmZXJlbmNlLmdldEtleVZhbHVlKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgdE1vZGVsRm91bmQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRNb2RlbEZvdW5kOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBhbiBPdmVydmlld1VSTCBmcm9tIHRNb2RlbC4KLSAgICogQGRlcHJlY2F0ZWQgLS0gdXNlIFVERElVdGlscy5nZXRPdmVydmlld1VSTChTdHJpbmcgd3NkbExvY2F0aW9uKS4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0T3ZlcnZpZXdVUkwoVE1vZGVsIHRNb2RlbCkKLSAgewotICAgIGlmICh0TW9kZWwgIT0gbnVsbAotICAgICAgJiYgdE1vZGVsLmdldE92ZXJ2aWV3RG9jKCkgIT0gbnVsbAotICAgICAgJiYgdE1vZGVsLmdldE92ZXJ2aWV3RG9jKCkuZ2V0T3ZlcnZpZXdVUkwoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIHJldHVybiB0TW9kZWwuZ2V0T3ZlcnZpZXdEb2MoKS5nZXRPdmVydmlld1VSTCgpLmdldFRleHQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IFdTREwgZG9jdW1lbnQuCi0gICAqIEBkZXByZWNhdGVkIC0tIHVzZSBVRERJVXRpbHMuZ2V0V1NETExvY2F0aW9uKFN0cmluZyB3c2RsTG9jYXRpb24pLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRXU0RMTG9jYXRpb24oU3RyaW5nIHdzZGxMb2NhdGlvbikKLSAgewotICAgIGludCBpbmRleDsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBvdmVydmlld1VSTCBjb250YWlucyBhIGZyYWdtZW50IGlkZW50aWZpZXIKLSAgICBpZiAoKGluZGV4ID0gd3NkbExvY2F0aW9uLmluZGV4T2YoIiMiKSkgPiAtMSkKLSAgICB7Ci0gICAgICB3c2RsTG9jYXRpb24gPSB3c2RsTG9jYXRpb24uc3Vic3RyaW5nKDAsIGluZGV4KTsKLSAgICB9Ci0gICAgcmV0dXJuIHdzZGxMb2NhdGlvbjsKLSAgfQotIAotICAvKioKLSAgICogR2V0IFdTREwgZG9jdW1lbnQuCi0gICAqLwotICBwcm90ZWN0ZWQgV1NETERvY3VtZW50IGdldFdTRExEb2N1bWVudChTdHJpbmcgd3NkbExvY2F0aW9uKQotICAgIHRocm93cyBNYWxmb3JtZWRVUkxFeGNlcHRpb24sIFdTRExFeGNlcHRpb24KLSAgewotICAgIHJldHVybiBuZXcgV1NETERvY3VtZW50KFVERElVdGlscy5nZXRXU0RMTG9jYXRpb24od3NkbExvY2F0aW9uKSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IFdTREwgYmluZGluZyBmcm9tIHRoZSBvdmVydmlld1VSTCBpbiB0aGUgdE1vZGVsLgotICAgKi8KLSAgcHJvdGVjdGVkIEJpbmRpbmcgZ2V0QmluZGluZyhTdHJpbmcgb3ZlcnZpZXdVUkwsIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQpCi0gIHsKLSAgICBpbnQgaW5kZXg7Ci0gICAgaW50IG5hbWVJbmRleDsKLQotICAgIEJpbmRpbmdbXSBiaW5kaW5ncyA9IHdzZGxEb2N1bWVudC5nZXRCaW5kaW5ncygpOwotICAgIGlmIChiaW5kaW5ncyA9PSBudWxsIHx8IGJpbmRpbmdzLmxlbmd0aCA9PSAwKQotICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICBpZiAob3ZlcnZpZXdVUkwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBDaGVjayBpZiB0aGUgb3ZlcnZpZXdVUkwgY29udGFpbnMgYSBmcmFnbWVudCBpZGVudGlmaWVyCi0gICAgICBpZiAoKGluZGV4ID0gb3ZlcnZpZXdVUkwuaW5kZXhPZigiIyIpKSA+IC0xKQotICAgICAgewotICAgICAgICAvLyBURU1QOiBOZWVkIHRvIHVzZSBhIHJlYWwgWFBhdGggZXZhbHVhdG9yIGxpa2UgWGFsYW4KLSAgICAgICAgU3RyaW5nIG5hbWVBdHRyaWJ1dGUgPSAiQG5hbWU9IjsKLQotICAgICAgICAvLyBMb2NhdGUgbmFtZSByZWZlcmVuY2UKLSAgICAgICAgaWYgKChuYW1lSW5kZXggPQotICAgICAgICAgIG92ZXJ2aWV3VVJMLnN1YnN0cmluZyhpbmRleCArIDEpLmluZGV4T2YobmFtZUF0dHJpYnV0ZSkpCi0gICAgICAgICAgPiAtMSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIgd2hpY2ggc2hvdWxkIGJlIGEgcXVvdGUKLSAgICAgICAgICBpbnQgZmlyc3RRdW90ZUluZGV4ID0gaW5kZXggKyAxICsgbmFtZUluZGV4ICsgbmFtZUF0dHJpYnV0ZS5sZW5ndGgoKTsKLSAgICAgICAgICBTdHJpbmcgcXVvdGUgPQotICAgICAgICAgICAgb3ZlcnZpZXdVUkwuc3Vic3RyaW5nKGZpcnN0UXVvdGVJbmRleCwgZmlyc3RRdW90ZUluZGV4ICsgMSk7Ci0KLSAgICAgICAgICAvLyBHZXQgdGhlIHBhcnQgb2YgdGhlIFVSTCB3aGljaCBzaG91bGQgY29udGFpbiB0aGUgYmluZGluZyBuYW1lCi0gICAgICAgICAgU3RyaW5nIHVybFBhcnQgPSBvdmVydmlld1VSTC5zdWJzdHJpbmcoZmlyc3RRdW90ZUluZGV4ICsgMSk7Ci0KLSAgICAgICAgICAvLyBGaW5kIHRoZSBuZXh0IHF1b3RlCi0gICAgICAgICAgaW50IG5leHRRdW90ZUluZGV4OwotICAgICAgICAgIGlmICgobmV4dFF1b3RlSW5kZXggPSB1cmxQYXJ0LmluZGV4T2YocXVvdGUpKSA+IC0xKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBiaW5kaW5nTmFtZSA9IHVybFBhcnQuc3Vic3RyaW5nKDAsIG5leHRRdW90ZUluZGV4KTsKLSAgICAgICAgICAgIC8vbG9vayBmb3IgYmluZGluZyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZQotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBiaW5kaW5ncy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKGJpbmRpbmdOYW1lLmVxdWFscyhiaW5kaW5nc1tpXS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYmluZGluZ3NbaV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGJpbmRpbmdzWzBdOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY2F0ZWdvcnlCYWcuCi0gICAqIEBwYXJhbSBjYXRlZ29yeUJhZyBhIENhdGVnb3J5QmFnIG9iamVjdC4KLSAgICogQHJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY2F0ZWdvcnlCYWcuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGNhdGVnb3J5QmFnVG9TdHJpbmcoQ2F0ZWdvcnlCYWcgY2F0ZWdvcnlCYWcpCi0gIHsKLSAgICBTdHJpbmcgdG9TdHJpbmcgPSAiIjsKLQotICAgIGlmIChjYXRlZ29yeUJhZyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciBrZXllZFJlZmVyZW5jZUxpc3QgPSBudWxsOwotICAgICAgaWYgKCgoa2V5ZWRSZWZlcmVuY2VMaXN0ID0gY2F0ZWdvcnlCYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKSkKLSAgICAgICAgPT0gbnVsbCkKLSAgICAgICAgfHwgKGtleWVkUmVmZXJlbmNlTGlzdC5zaXplKCkgPT0gMCkpCi0gICAgICB7Ci0gICAgICAgIHRvU3RyaW5nICs9ICJObyBLZXllZFJlZmVyZW5jZXMiOwotICAgICAgfQotCi0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGludCBjb3VudCA9IDE7Ci0gICAgICAgIEtleWVkUmVmZXJlbmNlIGtleWVkUmVmZXJlbmNlOwotICAgICAgICBJdGVyYXRvciBpdGVyYXRvciA9IGtleWVkUmVmZXJlbmNlTGlzdC5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAga2V5ZWRSZWZlcmVuY2UgPSAoS2V5ZWRSZWZlcmVuY2UpIGl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgICB0b1N0cmluZyArPSAiXG4gIFsiCi0gICAgICAgICAgICArIGNvdW50KysKLSAgICAgICAgICAgICsgIl0gdE1vZGVsS2V5OiAiCi0gICAgICAgICAgICArIGtleWVkUmVmZXJlbmNlLmdldFRNb2RlbEtleSgpCi0gICAgICAgICAgICArICIsIGtleU5hbWU6ICIKLSAgICAgICAgICAgICsga2V5ZWRSZWZlcmVuY2UuZ2V0S2V5TmFtZSgpCi0gICAgICAgICAgICArICIsIGtleVZhbHVlOiAiCi0gICAgICAgICAgICArIGtleWVkUmVmZXJlbmNlLmdldEtleVZhbHVlKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHRvU3RyaW5nID0gIm51bGwiOwotICAgIH0KLQotICAgIHJldHVybiB0b1N0cmluZzsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbCNpc1ByaW1hcnlFbnRyeVR5cGVNYXRjaChvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNQcmltYXJ5RW50cnlUeXBlTWF0Y2goCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCB0YXJnZXRDb250ZXh0KQotICB7Ci0gICAgYm9vbGVhbiBtYXRjaCA9IGZhbHNlOwotCi0gICAgLy8gSWYgdGhlIHRlc3QgYXNzZXJ0aW9uIGVudHJ5IHR5cGUgbWF0Y2hlcyB0aGUgdGFyZ2V0IGNvbnRleHQgZW50cnkgdHlwZSwgdGhlbiBjb250aW5lCi0gICAgaWYgKHRlc3RBc3NlcnRpb24KLSAgICAgIC5nZXRFbnRyeVR5cGVOYW1lKCkKLSAgICAgIC5lcXVhbHModGFyZ2V0Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5VHlwZSgpLmdldFR5cGVOYW1lKCkpKQotICAgIHsKLSAgICAgIG1hdGNoID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWF0Y2g7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwjaXNOb3RBcHBsaWNhYmxlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24pCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBpc05vdEFwcGxpY2FibGUoVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uKQotICB7Ci0gICAgYm9vbGVhbiBub3RBcHBsaWNhYmxlID0gZmFsc2U7Ci0KLSAgICAvLyBBREQ6Ci0KLSAgICByZXR1cm4gbm90QXBwbGljYWJsZTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biAoZGVwZW5kaW5nIG9uIHRoZSBhbmFseXplcgotICAgKiBjb25maWcpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBydW5UZXN0cygpIHsgcmV0dXJuIHRlc3RhYmxlOyB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvV1NJMzAwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU2ODRiMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvV1NJMzAwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwudWRkaTsKLQotLyoqCi0gKiBXU0kzMDAxCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kzMDAxIGV4dGVuZHMgQlAzMDAxCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBVRERJVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTMwMDEoVURESVZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMDIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9XU0kzMDAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwOGRkMmUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLnVkZGk7Ci0KLS8qKgotICogV1NJMzAwMgotICovCi1wdWJsaWMgY2xhc3MgV1NJMzAwMiBleHRlbmRzIEJQMzAwMgotewotCi0gIC8qKgotICAgKiBAcGFyYW0gVURESVZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kzMDAyKFVERElWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9XU0kzMDAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvV1NJMzAwMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWIwMTc2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9XU0kzMDAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC51ZGRpOwotCi0vKioKLSAqIFdTSTMwMDMKLSAqLwotcHVibGljIGNsYXNzIFdTSTMwMDMgZXh0ZW5kcyBCUDMwMDMKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFVERElWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMzAwMyhVRERJVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvV1NJMzAwNC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMDQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWExNzNhNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvV1NJMzAwNC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLnVkZGk7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVURESVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLldTRExEb2N1bWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkNhdGVnb3J5QmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5LZXllZFJlZmVyZW5jZTsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogV1NJMzAwNCAtIFRoZSBjb25mb3JtYW5jZSBjbGFpbXMgaW4gdGhlIHVkZGk6dE1vZGVsIGFyZSB0aGUgc2FtZQotICogYXMgdGhvc2UgaW4gdGhlIHdzZGw6YmluZGluZyB3aGljaCBpcyByZWZlcmVuY2VkIGJ5IHRoZSB1ZGRpOnRNb2RlbC4KLSAqLwotcHVibGljIGNsYXNzIFdTSTMwMDQgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFVERElWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFVERElWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMzAwNChVRERJVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBPUlRTX1BBUkFNID0gInBvcnRzIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJJTkRJTkdfUEFSQU0gPSAiYmluZGluZyI7Ci0KLSAgLyoqCi0gICAqIEdldHMgV1NJIGNvbmZvcm1hbmNlIGNsYWltcyBmcm9tIGEgdE1vZGVsLgotICAgKiBAcGFyYW0gdE1vZGVsCi0gICAqIEByZXR1cm4gSGFzaFNldAotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbgotICAgKi8KLSAgcHJpdmF0ZSBIYXNoU2V0IGdldENvbmZvcm1hbmNlQ2xhaW1zRnJvbVVEREkoVE1vZGVsIHRNb2RlbCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgY29uZm9ybWFuY2VLZXkgPSBVRERJVXRpbHMuZ2V0V1NJQ29uZm9ybWFuY2VUTW9kZWxLZXkodmFsaWRhdG9yLnVkZGlQcm94eSk7Ci0KLSAgICBIYXNoU2V0IHJlc3VsdCA9IG5ldyBIYXNoU2V0KCk7Ci0KLSAgICBDYXRlZ29yeUJhZyBiYWcgPSB0TW9kZWwuZ2V0Q2F0ZWdvcnlCYWcoKTsKLSAgICBpZiAoYmFnICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIHJlZmVyZW5jZXMgPSBiYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVmZXJlbmNlcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2UgcmVmID0gKEtleWVkUmVmZXJlbmNlKSByZWZlcmVuY2VzLmdldChpKTsKLQotICAgICAgICBpZiAocmVmLmdldFRNb2RlbEtleSgpLmVxdWFsc0lnbm9yZUNhc2UoY29uZm9ybWFuY2VLZXkpKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0LmFkZChyZWYuZ2V0S2V5VmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldHMgV1NJIGNvbmZvcm1hbmNlIGNsYWltcyBmcm9tIFdTREwgYmluZGluZwotICAgKiB0aGF0IHJlZmVyZW5jZXMgc3BlY2lmaWVkIHRNb2RlbC4gQWRkaXRpb25hbGx5LAotICAgKiBXU0RMIHBvcnRzLCB3aGljaCB1c2VzIHRoZSBiaW5kaW5nLCBhcmUgcHJvY2Vzc2VkLgotICAgKgotICAgKiBAcGFyYW0gdE1vZGVsCi0gICAqIEByZXR1cm4gSGFzaFNldAotICAgKi8KLSAgcHJpdmF0ZSBIYXNoU2V0IGdldENvbmZvcm1hbmNlQ2xhaW1zRnJvbVdTREwoVE1vZGVsIHRNb2RlbCkKLSAgewotICAgIEhhc2hTZXQgcmVzdWx0ID0gbmV3IEhhc2hTZXQoKTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIFJlYWQgdGhlIFdTREwgZG9jdW1lbnQKLSAgICAgIFN0cmluZyBvdmVydmlld1VSTCA9IFVERElVdGlscy5nZXRPdmVydmlld1VSTCh0TW9kZWwpOwotICAgICAgV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCA9IHZhbGlkYXRvci5nZXRXU0RMRG9jdW1lbnQob3ZlcnZpZXdVUkwpOwotCi0gICAgICAvLyBHZXQgYmluZGluZwotICAgICAgQmluZGluZyBiaW5kaW5nID0gVURESVV0aWxzLmdldEJpbmRpbmcob3ZlcnZpZXdVUkwsIHdzZGxEb2N1bWVudCk7Ci0gICAgICBTdHJpbmcgYmluZGluZ05hbWUgPSBiaW5kaW5nLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0KLSAgICAgIC8vIEdldCBjbGFpbXMKLSAgICAgIHJlc3VsdCA9Ci0gICAgICAgIGdldENsYWltc0Zyb21FbGVtZW50KGJpbmRpbmcuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgcmVzdWx0KTsKLQotICAgICAgLy8gR2V0IHBvcnRzLCB3aGljaCByZWZlcmVuY2UgdGhpcyBiaW5kaW5nLCBiZWNhdXNlOgotICAgICAgLy8gIkEgY2xhaW0gb24gYSB3c2RsOnBvcnQgaXMgaW5oZXJpdGVkIGJ5IHRoZSByZWZlcmVuY2VkIHdzZGw6YmluZGluZ3MuIgotICAgICAgVmVjdG9yIHBvcnRzID0gZ2V0UG9ydHMod3NkbERvY3VtZW50LCBiaW5kaW5nTmFtZSk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBvcnRzLnNpemUoKTsgaSsrKQotICAgICAgewotICAgICAgICBQb3J0IHBvcnQgPSAoUG9ydCkgcG9ydHMuZ2V0KGkpOwotCi0gICAgICAgIHJlc3VsdCA9IGdldENsYWltc0Zyb21FbGVtZW50KHBvcnQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgcmVzdWx0KTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIEFERDoKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldHMgV1NJIGNvbmZvcm1hbmNlIGNsYWltcyBmcm9tIHRoZSAnZG9jdW1lbnRhdGlvbicgWE1MIGVsZW1lbnQKLSAgICogYW5kIHB1dHMgdGhlbSBpbnRvIHRoZSBIYXNoU2V0LgotICAgKiBAcGFyYW0gZG9jRWxlbWVudAotICAgKiBAcGFyYW0gcmVzdWx0Ci0gICAqIEByZXR1cm4gSGFzaFNldAotICAgKi8KLSAgcHJpdmF0ZSBIYXNoU2V0IGdldENsYWltc0Zyb21FbGVtZW50KEVsZW1lbnQgZG9jRWxlbWVudCwgSGFzaFNldCByZXN1bHQpCi0gIHsKLSAgICBpZiAocmVzdWx0ID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gbmV3IEhhc2hTZXQoKTsKLSAgICB9Ci0KLSAgICBpZiAoZG9jRWxlbWVudCAhPSBudWxsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgY2xhaW1FbGVtZW50ID0gWE1MVXRpbHMuZmluZENoaWxkRWxlbWVudChkb2NFbGVtZW50LCBXU0lfQ0xBSU0pOwotICAgICAgd2hpbGUgKGNsYWltRWxlbWVudCAhPSBudWxsKQotICAgICAgewotICAgICAgICAvKgotICAgICAgICBOb2RlIGF0dHIgPSBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoY2xhaW1FbGVtZW50LCBBVFRSX0NMQUlNX0NPTkZPUk1TVE8pOwotICAgICAgICBpZiAoYXR0ciAhPSBudWxsKQotICAgICAgICAJcmVzdWx0LmFkZChhdHRyLmdldE5vZGVWYWx1ZSgpKTsKLSAgICAgICAgKi8KLSAgICAgICAgU3RyaW5nIHZhbHVlID0KLSAgICAgICAgICBjbGFpbUVsZW1lbnQuZ2V0QXR0cmlidXRlKEFUVFJfQ0xBSU1fQ09ORk9STVNUTy5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKQotICAgICAgICAgIHJlc3VsdC5hZGQodmFsdWUpOwotCi0gICAgICAgIGNsYWltRWxlbWVudCA9IFhNTFV0aWxzLmZpbmRFbGVtZW50KGNsYWltRWxlbWVudCwgV1NJX0NMQUlNKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldHMgd3NkbDpwb3J0cywgd2hpY2ggdXNlIHNwZWNpZmllZCBiaW5kaW5nLgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50Ci0gICAqIEBwYXJhbSBiaW5kaW5nTmFtZQotICAgKiBAcmV0dXJuIFZlY3RvcgotICAgKi8KLSAgcHJpdmF0ZSBWZWN0b3IgZ2V0UG9ydHMoV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCwgU3RyaW5nIGJpbmRpbmdOYW1lKQotICB7Ci0gICAgVmVjdG9yIHBvcnRzID0gbmV3IFZlY3RvcigpOwotCi0gICAgTWFwIHBhcmFtcyA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgcGFyYW1zLnB1dChQT1JUU19QQVJBTSwgcG9ydHMpOwotICAgIHBhcmFtcy5wdXQoQklORElOR19QQVJBTSwgYmluZGluZ05hbWUpOwotCi0gICAgV1NETFRyYXZlcnNhbCB0cmF2ZXJzYWwgPSBuZXcgV1NETFRyYXZlcnNhbCgpOwotICAgIC8vVmlzaXRvckFkYXB0b3IuYWRhcHQodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0UG9ydCh0cnVlKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlUmVmZXJlbmNlcygpOwotICAgIHRyYXZlcnNhbC5pZ25vcmVJbXBvcnQoKTsKLSAgICB0cmF2ZXJzYWwudHJhdmVyc2Uod3NkbERvY3VtZW50LmdldERlZmluaXRpb25zKCksIHBhcmFtcyk7Ci0KLSAgICByZXR1cm4gcG9ydHM7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLlBvcnQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChQb3J0IHBvcnQsIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGlmIChwb3J0Ci0gICAgICAuZ2V0QmluZGluZygpCi0gICAgICAuZ2V0UU5hbWUoKQotICAgICAgLmdldExvY2FsUGFydCgpCi0gICAgICAuZXF1YWxzKGN0eC5nZXRQYXJhbWV0ZXIoQklORElOR19QQVJBTSkudG9TdHJpbmcoKSkpCi0gICAgewotICAgICAgKChWZWN0b3IpIGN0eC5nZXRQYXJhbWV0ZXIoUE9SVFNfUEFSQU0pKS5hZGQocG9ydCk7Ci0gICAgfQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgLy8gR2V0IHRoZSB0TW9kZWwgZnJvbSB0aGUgZW50cnlDb250ZXh0Ci0gICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAvLyBJZiB0aGUgdE1vZGVsIGRvZXMgbm90IGV4aXN0LCB0aGVuIGZhaWwKLSAgICBpZiAodE1vZGVsID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9ICJDb3VsZCBub3QgbG9jYXRlIGEgdE1vZGVsLiI7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlcmUgaXMgYSB0TW9kZWwKLSAgICBlbHNlCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIEhhc2hTZXQgY2xhaW1zRnJvbVVEREkgPSBnZXRDb25mb3JtYW5jZUNsYWltc0Zyb21VRERJKHRNb2RlbCk7Ci0gICAgICAgIEhhc2hTZXQgY2xhaW1zRnJvbVdTREwgPSBnZXRDb25mb3JtYW5jZUNsYWltc0Zyb21XU0RMKHRNb2RlbCk7Ci0KLSAgICAgICAgaWYgKGNsYWltc0Zyb21VRERJLnNpemUoKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2xhaW1zRnJvbVVEREkuc2l6ZSgpID09IGNsYWltc0Zyb21XU0RMLnNpemUoKSkKLSAgICAgICAgewotICAgICAgICAgIGludCBjb3VudGVyID0gMDsKLSAgICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ZXIgPSBjbGFpbXNGcm9tV1NETC5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspCi0gICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nIGNsYWltID0gKFN0cmluZykgaXRlci5uZXh0KCk7Ci0KLSAgICAgICAgICAgIGZvciAoSXRlcmF0b3IgaXRlcjIgPSBjbGFpbXNGcm9tVURESS5pdGVyYXRvcigpOwotICAgICAgICAgICAgICBpdGVyMi5oYXNOZXh0KCk7Ci0gICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgU3RyaW5nIHVkZGlDbGFpbSA9IChTdHJpbmcpIGl0ZXIyLm5leHQoKTsKLSAgICAgICAgICAgICAgaWYgKGNsYWltLmVxdWFsc0lnbm9yZUNhc2UodWRkaUNsYWltKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChjb3VudGVyICE9IGNsYWltc0Zyb21XU0RMLnNpemUoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmYWlsZWQKLSAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPQotICAgICAgICAgICAgICAiVGhlIHRNb2RlbCBrZXkgaXM6IFsiICsgdE1vZGVsLmdldFRNb2RlbEtleSgpICsgIl0uIjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy8gZmFpbGVkCi0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPQotICAgICAgICAgICAgIlRoZSB0TW9kZWwga2V5IGlzOiBbIiArIHRNb2RlbC5nZXRUTW9kZWxLZXkoKSArICJdLiI7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChJbGxlZ2FsU3RhdGVFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWxNZXNzYWdlID0KLSAgICAgICAgICAiVGhlIHRNb2RlbCBrZXkgaXM6IFsiICsgdE1vZGVsLmdldFRNb2RlbEtleSgpICsgIl0uIjsKLSAgICAgIH0KLQotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsTWVzc2FnZSk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvV1NJMzAwNV9PQlNPTEVURS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMDVfT0JTT0xFVEUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM2ZjVhNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3VkZGkvV1NJMzAwNV9PQlNPTEVURS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLnVkZGk7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5VRERJVXRpbHM7Ci1pbXBvcnQgb3JnLnVkZGk0ai5jbGllbnQuVURESVByb3h5OwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuQ2F0ZWdvcnlCYWc7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLktleWVkUmVmZXJlbmNlOwotCi0KLS8qKgotICogV1NJMzAwNV9PQlNPTEVURSAtIEEgdWRkaTp0TW9kZWwgd2hpY2ggY2xhaW1zIGNvbmZvcm1hbmNlIHdpdGggYSBXUy1JIHByb2ZpbGUKLSAqIG11c3QgYmUgY2F0ZWdvcml6ZWQgdXNpbmcgdGhlIHdzLWktb3JnOmNvbmZvcm1zVG8gdGF4b25vbXkuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kzMDA1X09CU09MRVRFIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIFVERElWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFVERElWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMzAwNV9PQlNPTEVURShVRERJVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyoqCi0gICAqIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgLy8gR2V0IHRoZSB0TW9kZWwgZnJvbSB0aGUgZW50cnlDb250ZXh0Ci0gICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAvLyBJZiB0aGUgdE1vZGVsIGRvZXMgbm90IGV4aXN0LCB0aGVuIGZhaWwKLSAgICBpZiAodE1vZGVsID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9ICJDb3VsZCBub3QgbG9jYXRlIGEgdE1vZGVsLiI7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlcmUgaXMgYSB0TW9kZWwKLSAgICBlbHNlCi0gICAgewotICAgICAgQ2F0ZWdvcnlCYWcgYmFnID0gdE1vZGVsLmdldENhdGVnb3J5QmFnKCk7Ci0KLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBpZiAoIWNoZWNrQ2F0ZWdvcnlCYWcodGhpcy52YWxpZGF0b3IudWRkaVByb3h5LCBiYWcpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gZmFpbGVkCi0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPQotICAgICAgICAgICAgIlRoZSB0TW9kZWwga2V5IGlzOiBbIiArIHRNb2RlbC5nZXRUTW9kZWxLZXkoKSArICJdLiI7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChJbGxlZ2FsU3RhdGVFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWxNZXNzYWdlID0KLSAgICAgICAgICAiVGhlIFVEREkgcmVnaXN0cnkgZG9lcyBub3QgY29udGFpbiBXU0kgY29uZm9ybWFuY2UgdGF4b25vbXkiCi0gICAgICAgICAgICArICIgdE1vZGVsIChcIndzLWktb3JnOmNvbmZvcm1zVG86MjAwMl8xMlwiKS4iOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsTWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2tzIGEgY2F0ZWdvcnkgYmFnLgotICAgKiBAcGFyYW0gcHJveHkKLSAgICogQHBhcmFtIGJhZwotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBjaGVja0NhdGVnb3J5QmFnKFVERElQcm94eSBwcm94eSwgQ2F0ZWdvcnlCYWcgYmFnKQotICB7Ci0gICAgU3RyaW5nIGNvbmZvcm1hbmNlS2V5ID0gVURESVV0aWxzLmdldFdTSUNvbmZvcm1hbmNlVE1vZGVsS2V5KHByb3h5KTsKLQotICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0KLSAgICBpZiAoYmFnICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIHJlZmVyZW5jZXMgPSBiYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVmZXJlbmNlcy5zaXplKCkgJiYgIXJlc3VsdDsgaSsrKQotICAgICAgewotICAgICAgICBLZXllZFJlZmVyZW5jZSByZWYgPSAoS2V5ZWRSZWZlcmVuY2UpIHJlZmVyZW5jZXMuZ2V0KGkpOwotCi0gICAgICAgIHJlc3VsdCA9IHJlZi5nZXRUTW9kZWxLZXkoKS5lcXVhbHNJZ25vcmVDYXNlKGNvbmZvcm1hbmNlS2V5KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMDYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9XU0kzMDA2LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhOGMwMDMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMDYuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC51ZGRpOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uUmVzdWx0RXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlVERElVdGlsczsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS50bW9kZWwuVE1vZGVsOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5DYXRlZ29yeUJhZzsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuS2V5ZWRSZWZlcmVuY2U7Ci0KLQotLyoqCi0gKiBXU0kzMDA2IC0gVGhlIHVkZGk6dE1vZGVsIHVzZXMgdGhlIHdzLWktb3JnOmNvbmZvcm1zVG86MjAwMl8xMiBjYXRlZ29yaXphdGlvbgotICogdmFsdWUgb2YgImh0dHA6Ly93cy1pLm9yZy9wcm9maWxlcy9iYXNlLzEuMCIuIFRoZSBjYXRlZ29yeUJhZyBpbiB0aGUgdE1vZGVsCi0gKiBjb250YWlucyBhIGtleWVkUmVmZXJlbmNlIHdpdGggYSB0TW9kZWxLZXkgdGhhdCBjb250YWlucyB0aGUga2V5IHZhbHVlCi0gKiB1dWlkOjY1NzE5MTY4LTcyYzYtM2YyOS04YzIwLTYyZGVmYjA5NjFjMCBmb3IgdGhlIHdzLWktb3JnOmNvbmZvcm1zVG86MjAwMl8xMgotICogdE1vZGVsLgotICovCi1wdWJsaWMgY2xhc3MgV1NJMzAwNiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBVRERJVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0gIC8qKgotICAgKiBAcGFyYW0gVURESVZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kzMDA2KFVERElWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPSBudWxsOwotICAgIEtleWVkUmVmZXJlbmNlIGNsYWltS2V5ZWRSZWYgPSBudWxsOwotCi0gICAgLy8gY2hlY2sgd2hldGhlciBhIFVEREkgY29uZm9ybWFuY2UgY2xhaW0gaXMgYmVpbmcgbWFkZS4uLgotCi0gICAgLy8gR2V0IHRoZSB0TW9kZWwgZnJvbSB0aGUgZW50cnlDb250ZXh0Ci0gICAgVE1vZGVsIHRNb2RlbCA9IChUTW9kZWwpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgaWYgKChjbGFpbUtleWVkUmVmID0gY29uZm9ybWFuY2VDbGFpbU1hZGUodE1vZGVsKSkgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvblJlc3VsdEV4Y2VwdGlvbigKLSAgICAgICAgICBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFKTsKLSAgICAgIH0KLQotICAgICAgLy8gd2UgaGF2ZSBhIGNvbmZvcm1hbmNlIGNsYWltLCBzbyBjaGVjayB0aGUga2V5ZWRSZWZlcmVuY2Uga2V5VmFsdWUKLSAgICAgIGlmICghY2xhaW1LZXllZFJlZgotICAgICAgICAuZ2V0S2V5VmFsdWUoKQotICAgICAgICAuZXF1YWxzKFdTSUNvbnN0YW50cy5BVFRSVkFMX1VERElfQ0xBSU1fS0VZVkFMVUUpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uUmVzdWx0RXhjZXB0aW9uKAotICAgICAgICAgIEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVELAotICAgICAgICAgICJUaGUgdE1vZGVsIGtleSBpczogWyIKLSAgICAgICAgICAgICsgdE1vZGVsLmdldFRNb2RlbEtleSgpCi0gICAgICAgICAgICArICJdLlxuVGhlIGNhdGVnb3J5QmFnIGlzOiBbIgotICAgICAgICAgICAgKyB0TW9kZWwuZ2V0Q2F0ZWdvcnlCYWcoKQotICAgICAgICAgICAgKyAiXS4iKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvblJlc3VsdEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IGUuZ2V0TWVzc2FnZSgpOwotICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPSBlLmdldERldGFpbE1lc3NhZ2UoKTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbE1lc3NhZ2UpOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyBhIGNhdGVnb3J5IGJhZyBhbmQgZXh0cmFjdHMgS2V5ZWRSZWZlcmVuY2UgY29udGFpbmluZwotICAgKiB0aGUgY29uZm9ybWFuY2UgY2xhaW0uCi0gICAqIEBwYXJhbSBwcm94eQotICAgKiBAcGFyYW0gYmFnCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBLZXllZFJlZmVyZW5jZSBjaGVja0NhdGVnb3J5QmFnKFVERElQcm94eSBwcm94eSwgQ2F0ZWdvcnlCYWcgYmFnKQotICB7Ci0gICAgU3RyaW5nIGNvbmZvcm1hbmNlS2V5ID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBjb25mb3JtYW5jZUtleSA9IFVERElVdGlscy5nZXRXU0lDb25mb3JtYW5jZVRNb2RlbEtleShwcm94eSk7Ci0gICAgfQotICAgIGNhdGNoIChJbGxlZ2FsU3RhdGVFeGNlcHRpb24gZXgpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgYm9vbGVhbiByZXN1bHQgPSB0cnVlOwotICAgIEtleWVkUmVmZXJlbmNlIGNvbmZvcm1hbmNlUmVmID0gbnVsbDsKLQotICAgIGlmIChiYWcgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBWZWN0b3IgcmVmZXJlbmNlcyA9IGJhZy5nZXRLZXllZFJlZmVyZW5jZVZlY3RvcigpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWZlcmVuY2VzLnNpemUoKSAmJiByZXN1bHQ7IGkrKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2UgcmVmID0gKEtleWVkUmVmZXJlbmNlKSByZWZlcmVuY2VzLmdldChpKTsKLQotICAgICAgICBpZiAocmVmCi0gICAgICAgICAgLmdldFRNb2RlbEtleSgpCi0gICAgICAgICAgLmVxdWFsc0lnbm9yZUNhc2UoY29uZm9ybWFuY2VLZXkpIC8vJiYgcmVmLmdldEtleVZhbHVlKCkuZXF1YWxzKFdTSUNvbnN0YW50cy5BVFRSVkFMX1VERElfQ0xBSU1fS0VZVkFMVUUpCi0gICAgICAgIC8vIHdlIG5lZWQgb25seSB0TW9kZWwga2V5Ci0gICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAgY29uZm9ybWFuY2VSZWYgPSByZWY7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gY29uZm9ybWFuY2VSZWY7Ci0gIH0KLSAgLyoqCi0gICAqIEdldHMgS2V5ZWRSZWZlcmVuY2UgY29udGFpbmluZyB0aGUgY29uZm9ybWFuY2UgY2xhaW0uCi0gICAqIEBwYXJhbSB0TW9kZWwKLSAgICogQHJldHVybgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbgotICAgKi8KLSAgcHJpdmF0ZSBLZXllZFJlZmVyZW5jZSBjb25mb3JtYW5jZUNsYWltTWFkZShUTW9kZWwgdE1vZGVsKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgLy8gSWYgdGhlIHRNb2RlbCBkb2VzIG5vdCBleGlzdCwgdGhlbiBmYWlsCi0gICAgaWYgKHRNb2RlbCA9PSBudWxsKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInRNb2RlbCBjYW5ub3QgYmUgbnVsbCIpOwotICAgIH0KLQotICAgIC8vIElmIHRoZXJlIGlzIGEgdE1vZGVsCi0gICAgZWxzZQotICAgIHsKLSAgICAgIENhdGVnb3J5QmFnIGJhZyA9IHRNb2RlbC5nZXRDYXRlZ29yeUJhZygpOwotICAgICAgcmV0dXJuIGNoZWNrQ2F0ZWdvcnlCYWcodGhpcy52YWxpZGF0b3IudWRkaVByb3h5LCBiYWcpOwotICAgIH0KLQotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMDcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9XU0kzMDA3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2Njc0ZGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMDcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC51ZGRpOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVURESVV0aWxzOwotaW1wb3J0IG9yZy51ZGRpNGouY2xpZW50LlVERElQcm94eTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJpbmRpbmcuQmluZGluZ1RlbXBsYXRlOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLkJ1c2luZXNzU2VydmljZTsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuQ2F0ZWdvcnlCYWc7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLktleWVkUmVmZXJlbmNlOwotCi0KLS8qKgotICogV1NJMzAwNyAtIEEgdWRkaTpidXNpbmVzc0VudGl0eSBvciB1ZGRpOmJ1c2luZXNzU2VydmljZSBhc3NvY2lhdGVkCi0gKiB3aXRoIHRoaXMgdWRkaTpiaW5kaW5nVGVtcGxhdGUgaXMgbm90IGNhdGVnb3JpemVkIHVzaW5nCi0gKiB0aGUgd3MtaS1vcmc6Y29uZm9ybXNUbzoyMDAyXzEyIHRheG9ub215LgotICovCi1wdWJsaWMgY2xhc3MgV1NJMzAwNyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBVRERJVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBVRERJVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTMwMDcoVURESVZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICAvLyBHZXQgdGhlIGJpbmRpbmdUZW1wbGF0ZSBmcm9tIHRoZSBlbnRyeUNvbnRleHQKLSAgICBCaW5kaW5nVGVtcGxhdGUgYmluZGluZ1RlbXBsYXRlID0KLSAgICAgIChCaW5kaW5nVGVtcGxhdGUpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICBib29sZWFuIHZhbGlkU2VydmljZSA9IGZhbHNlOwotICAgIGJvb2xlYW4gdmFsaWRCdXNpbmVzcyA9IGZhbHNlOwotCi0gICAgU3RyaW5nIHNlcnZpY2VLZXkgPSBudWxsOwotICAgIFN0cmluZyBidXNpbmVzc0tleSA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgc2VydmljZUtleSA9IGJpbmRpbmdUZW1wbGF0ZS5nZXRTZXJ2aWNlS2V5KCk7Ci0gICAgICBCdXNpbmVzc1NlcnZpY2Ugc2VydmljZSA9Ci0gICAgICAgIFVERElVdGlscy5nZXRCdXNpbmVzc1NlcnZpY2VCeUtleSh0aGlzLnZhbGlkYXRvci51ZGRpUHJveHksIHNlcnZpY2VLZXkpOwotCi0gICAgICBidXNpbmVzc0tleSA9IHNlcnZpY2UuZ2V0QnVzaW5lc3NLZXkoKTsKLSAgICAgIEJ1c2luZXNzRW50aXR5IGJ1c2luZXNzID0KLSAgICAgICAgVURESVV0aWxzLmdldEJ1c2luZXNzQnlLZXkodGhpcy52YWxpZGF0b3IudWRkaVByb3h5LCBidXNpbmVzc0tleSk7Ci0KLSAgICAgIHZhbGlkU2VydmljZSA9IGNoZWNrQ2F0ZWdvcnlCYWcodGhpcy52YWxpZGF0b3IudWRkaVByb3h5LCBzZXJ2aWNlLmdldENhdGVnb3J5QmFnKCkpOwotICAgICAgdmFsaWRCdXNpbmVzcyA9IGNoZWNrQ2F0ZWdvcnlCYWcodGhpcy52YWxpZGF0b3IudWRkaVByb3h5LCBidXNpbmVzcy5nZXRDYXRlZ29yeUJhZygpKTsKLQotICAgICAgaWYgKCF2YWxpZEJ1c2luZXNzIHx8ICF2YWxpZFNlcnZpY2UpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotCi0gICAgICAgIGlmICghdmFsaWRCdXNpbmVzcykKLSAgICAgICAgewotICAgICAgICAgIGZhaWx1cmVEZXRhaWxNZXNzYWdlID0KLSAgICAgICAgICAgICJUaGUgYnVzaW5lc3NFbnRpdHkga2V5IGlzOiBbIiArIGJ1c2luZXNzS2V5ICsgIl0uIjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghdmFsaWRTZXJ2aWNlKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCF2YWxpZEJ1c2luZXNzKQotICAgICAgICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgKz0gIiAiOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZhaWx1cmVEZXRhaWxNZXNzYWdlID0gIiI7Ci0KLSAgICAgICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSArPSAiVGhlIGJ1c2luZXNzU2VydmljZSBrZXkgaXM6IFsiCi0gICAgICAgICAgICArIHNlcnZpY2VLZXkKLSAgICAgICAgICAgICsgIl0uIjsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9Ci0gICAgICAgICJUaGUgVURESSByZWdpc3RyeSBkb2VzIG5vdCBjb250YWluIFdTSSBjb25mb3JtYW5jZSB0YXhvbm9teSIKLSAgICAgICAgICArICIgdE1vZGVsIChcIndzLWktb3JnOmNvbmZvcm1zVG86MjAwMl8xMlwiKS4iOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIGUpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigKLSAgICAgICAgIkFuIGV4Y2VwdGlvbiBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBkaXNjb3ZlcnkgdGVzdCBhc3NlcnRpb25zLiIsCi0gICAgICAgIGUpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsTWVzc2FnZSk7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNhdGVnb3J5IGJhZyBjb250YWlucyB0aGUgY29uZm9ybWFuY2UgY2xhaW0uCi0gICAqIFJldHVybnMgPGI+dHJ1ZTwvYj4gaWYgdGhlIGJhZyBkb2VzIG5vdCBjb250YWluIHRoZSBjb25mb3JtYW5jZSBjbGFpbS4KLSAgICogQHBhcmFtIHByb3h5Ci0gICAqIEBwYXJhbSBiYWcKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gY2hlY2tDYXRlZ29yeUJhZyhVRERJUHJveHkgcHJveHksIENhdGVnb3J5QmFnIGJhZykKLSAgewotICAgIFN0cmluZyBjb25mb3JtYW5jZUtleSA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgY29uZm9ybWFuY2VLZXkgPSBVRERJVXRpbHMuZ2V0V1NJQ29uZm9ybWFuY2VUTW9kZWxLZXkocHJveHkpOwotICAgIH0KLSAgICBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGV4KQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7Ci0KLSAgICBpZiAoYmFnICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIHJlZmVyZW5jZXMgPSBiYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVmZXJlbmNlcy5zaXplKCkgJiYgcmVzdWx0OyBpKyspCi0gICAgICB7Ci0gICAgICAgIEtleWVkUmVmZXJlbmNlIHJlZiA9IChLZXllZFJlZmVyZW5jZSkgcmVmZXJlbmNlcy5nZXQoaSk7Ci0KLSAgICAgICAgcmVzdWx0ID0gIXJlZi5nZXRUTW9kZWxLZXkoKS5lcXVhbHNJZ25vcmVDYXNlKGNvbmZvcm1hbmNlS2V5KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMjEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvdWRkaS9XU0kzMDIxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NTM1MmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC91ZGRpL1dTSTMwMjEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC51ZGRpOwotCi1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVURESVV0aWxzOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUudG1vZGVsLlRNb2RlbDsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuQ2F0ZWdvcnlCYWc7Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLktleWVkUmVmZXJlbmNlOwotCi0KLS8qKgotKiBXU0kzMDIxIC0gVGhlIHVkZGk6dE1vZGVsIGhhcyBhICJuYW1lIiBlbGVtZW50IG9mIHZhbHVlICJ3cy1pLW9yZzpjb25mb3Jtc1RvOjIwMDJfMTIiICwKLSogaGFzIGFuIG92ZXJ2aWV3VVJMIHZhbHVlIG9mICJodHRwOi8vd3MtaS5vcmcvc2NoZW1hcy9jb25mb3JtYW5jZUNsYWltLyIsIGFuZCBoYXMKLSogYSBrZXllZFJlZmVyZW5jZSBlbGVtZW50IHdpdGgga2V5TmFtZSBhdHRyaWJ1dGUgdmFsdWUgb2YgInVkZGktb3JnOnR5cGVzOmNhdGVnb3JpemF0aW9uIi4KLSovCi1wdWJsaWMgY2xhc3MgV1NJMzAyMSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBVRERJVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBVRERJVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTMwMjEoVURESVZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICBUTW9kZWwgdE1vZGVsID0KLSAgICAgIFVERElVdGlscy5nZXRUTW9kZWxCeUtleSgKLSAgICAgICAgdGhpcy52YWxpZGF0b3IudWRkaVByb3h5LAotICAgICAgICBVRERJVXRpbHMuZ2V0V1NJQ29uZm9ybWFuY2VUTW9kZWxLZXkodGhpcy52YWxpZGF0b3IudWRkaVByb3h5KSk7Ci0KLSAgICAvLyBJZiB0aGUgdE1vZGVsIGRvZXMgbm90IGV4aXN0LCB0aGVuIGZhaWwKLSAgICBpZiAodE1vZGVsID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9ICJDb3VsZCBub3QgbG9jYXRlIGEgdE1vZGVsLiI7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBib29sZWFuIHZhbGlkVVJMID0KLSAgICAgICAgdE1vZGVsLmdldE92ZXJ2aWV3RG9jKCkgIT0gbnVsbAotICAgICAgICAgICYmICJodHRwOi8vd3MtaS5vcmcvc2NoZW1hcy9jb25mb3JtYW5jZUNsYWltLyIuZXF1YWxzKAotICAgICAgICAgICAgdE1vZGVsLmdldE92ZXJ2aWV3RG9jKCkuZ2V0T3ZlcnZpZXdVUkxTdHJpbmcoKSk7Ci0gICAgICBib29sZWFuIHZhbGlkQ2F0ZWdvcnkgPSBjaGVja0NhdGVnb3J5QmFnKHRNb2RlbC5nZXRDYXRlZ29yeUJhZygpKTsKLQotICAgICAgaWYgKHZhbGlkVVJMICYmIHZhbGlkQ2F0ZWdvcnkpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRvci51ZGRpUmVmZXJlbmNlLmdldElucXVpcnlVUkwoKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbE1lc3NhZ2UpOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjYXRlZ29yeSBiYWcgbWVldHMgdGhlIFdTSSdzIHJlcXVpcmVtZW50cy4KLSAgICogQHBhcmFtIGJhZwotICAgKiBAcmV0dXJuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gY2hlY2tDYXRlZ29yeUJhZyhDYXRlZ29yeUJhZyBiYWcpCi0gIHsKLSAgICBib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotCi0gICAgaWYgKGJhZyAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciByZWZlcmVuY2VzID0gYmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlZmVyZW5jZXMuc2l6ZSgpICYmICFyZXN1bHQ7IGkrKykKLSAgICAgIHsKLSAgICAgICAgS2V5ZWRSZWZlcmVuY2UgcmVmID0gKEtleWVkUmVmZXJlbmNlKSByZWZlcmVuY2VzLmdldChpKTsKLQotICAgICAgICByZXN1bHQgPQotICAgICAgICAgICJ1ZGRpLW9yZzp0eXBlczpjYXRlZ29yaXphdGlvbiIuZXF1YWxzKHJlZi5nZXRLZXlOYW1lKCkpCi0gICAgICAgICAgICAmJiAiY2F0ZWdvcml6YXRpb24iLmVxdWFscyhyZWYuZ2V0S2V5VmFsdWUoKSkKLSAgICAgICAgICAgICYmICJ1dWlkOkMxQUNGMjZELTk2NzItNDQwNC05RDcwLTM5Qjc1NkU2MkFCNCIuZXF1YWxzKAotICAgICAgICAgICAgICByZWYuZ2V0VE1vZGVsS2V5KCkpOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTAxLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTAxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZTU2MWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkwMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0vKioKLSAqIEFQMjkwMQotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcgZWxlbWVudDwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5BIGRlc2NyaXB0aW9uIHVzZXMgZWl0aGVyIHRoZSBXU0RMIE1JTUUgQmluZGluZyBhcyBkZXNjcmliZWQgaW4gV1NETCAxLjEgU2VjdGlvbiA1Ci0gKiBvciBXU0RMIFNPQVAgYmluZGluZyBhcyBkZXNjcmliZWQgaW4gV1NETCAxLjEgU2VjdGlvbiAzCi0gKiBvbiBlYWNoIG9mIHRoZSB3c2RsOmlucHV0IG9yIHdzZGw6b3V0cHV0IGVsZW1lbnRzIG9mIGEgd3NkbDpiaW5kaW5nLiA8L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAyOTAxIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICAvKioKLSAgICogV1NETFZhbGlkYXRvcgotICAgKi8KLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgcHJpdmF0ZSBDb2xsZWN0aW9uIG1pbWVFbGVtZW50czsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQVAyOTAxKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0KLSAgICBtaW1lRWxlbWVudHMgPSBuZXcgSGFzaFNldCgpOwotICAgIG1pbWVFbGVtZW50cy5hZGQoV1NETF9NSU1FX0NPTlRFTlQpOwotICAgIG1pbWVFbGVtZW50cy5hZGQoV1NETF9NSU1FX1hNTCk7Ci0gICAgbWltZUVsZW1lbnRzLmFkZChXU0RMX01JTUVfTVVMVElQQVJUKTsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0dGluZyBhIHdzZGw6YmluZGluZwotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAgIC8vIEdldHRpbmcgaXRzIHdzZGw6b3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBMaXN0IG9wcyA9IGJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbnMoKTsKLQotICAgICAgLy8gR29pbmcgdGhyb3VnaCB0aGUgb3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9wcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24pIG9wcy5nZXQoaSk7Ci0KLSAgICAgICAgLy8gR2V0dGluZyB3c2RsOmlucHV0IGFuZCB3c2RsOm91dHB1dCBlbGVtZW50cyBvZiBhbiBvcGVyYXRpb24KLSAgICAgICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCk7Ci0gICAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpOwotCi0gICAgICAgIFFOYW1lIGluYXBwbGljYWJsZUVsZW1lbnQgPSBudWxsOwotICAgICAgICAvLyBHZXR0aW5nIGFuIGluYXBwbGljYWJsZSBleHRlbnNpYmlsaXR5IGVsZW1lbnQgb2Ygd3NkbDppbnB1dAotICAgICAgICAvLyBJZiBzdWNoIGVsZW1lbnQgZXhpc3RzLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICBpZiAoYmluZGluZ0lucHV0ICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBHZXR0aW5nIGFuIGluYXBwbGljYWJsZSBleHRlbnNpYmlsaXR5IGVsZW1lbnQgb2Ygd3NkbDppbnB1dAotICAgICAgICAgIC8vIElmIHN1Y2ggZWxlbWVudCBleGlzdHMsIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgICAgaW5hcHBsaWNhYmxlRWxlbWVudCA9IGdldEluYXBwbGljYWJsZUVsZW1lbnQoYmluZGluZ0lucHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLQotICAgICAgICAgIGlmIChpbmFwcGxpY2FibGVFbGVtZW50ICE9IG51bGwpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbihpbmFwcGxpY2FibGVFbGVtZW50LnRvU3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBHZXR0aW5nIGFuIGluYXBwbGljYWJsZSBleHRlbnNpYmlsaXR5IGVsZW1lbnQgb2Ygd3NkbDpvdXRwdXQKLSAgICAgICAgLy8gSWYgc3VjaCBlbGVtZW50IGV4aXN0cywgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgaWYgKGJpbmRpbmdPdXRwdXQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGluYXBwbGljYWJsZUVsZW1lbnQgPQotICAgICAgICAgICAgZ2V0SW5hcHBsaWNhYmxlRWxlbWVudChiaW5kaW5nT3V0cHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICAgICAgICBpZiAoaW5hcHBsaWNhYmxlRWxlbWVudCAhPSBudWxsKQotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oaW5hcHBsaWNhYmxlRWxlbWVudC50b1N0cmluZygpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIExvb2tzIGZvciBhbnkgZXh0ZW5zaWJpbGl0eSBlbGVtZW50IG9mIHdzZGw6aW5wdXQgb3Igd3NkbDpvdXRwdXQKLSAgICogdGhhdCBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBTT0FQIGJpbmRpbmcgb3IgdGhlIE1JTUUgYmluZGluZy4KLSAgICogQHBhcmFtIGV4dEVsZW1zIGEgbGlzdCBvZiBleHRlbnNpYmlsaXR5IGVsZW1lbnRzCi0gICAqIEByZXR1cm4gdGhlIFFOYW1lIG9mIGFuIGluYXBwbGljYWJsZSBlbGVtZW50Ci0gICAqLwotICBwcml2YXRlIFFOYW1lIGdldEluYXBwbGljYWJsZUVsZW1lbnQoTGlzdCBleHRFbGVtcykKLSAgewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0RWxlbXMuc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgUU5hbWUgZWxlbWVudE5hbWUgPQotICAgICAgICAoKEV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtcy5nZXQoaSkpLmdldEVsZW1lbnRUeXBlKCk7Ci0KLSAgICAgIGlmICghbWltZUVsZW1lbnRzLmNvbnRhaW5zKGVsZW1lbnROYW1lKSAmJgotICAgICAgICAgICFlbGVtZW50TmFtZS5lcXVhbHMoV1NETF9TT0FQX0JPRFkpICYmCi0gICAgICAgICAgIWVsZW1lbnROYW1lLmVxdWFscyhXU0RMX1NPQVBfSEVBREVSKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnROYW1lOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkwMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkwMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmJjMzEzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5MDMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotLyoqCi0gKiBBUDI5MDMKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nIHdpdGggYXQgbGVhc3Qgb25lIG1pbWU6Y29udGVudCBlbGVtZW50PC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBwYXJ0IGF0dHJpYnV0ZSBvZiBlYWNoIG1pbWU6Y29udGVudCBlbGVtZW50IGluIGEgd3NkbDpiaW5kaW5nIHJlZmVyZW5jZXMKLSAqIGEgd3NkbDpwYXJ0IGVsZW1lbnQgb2YgYSB3c2RsOm1lc3NhZ2UgdGhhdCBpcyBwcmVzZW50IGluIHRoZSByZXNwZWN0aXZlIHdzZGw6aW5wdXQgb3Igd3NkbDpvdXRwdXQgb2YgdGhlCi0gKiBjb3JyZXNwb25kaW5nIHdzZGw6b3BlcmF0aW9uIG9mIHRoZSBjb3JyZXNwb25kaW5nIHdzZGw6cG9ydFR5cGUuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMjkwMyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMjkwMyhXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBBIHZhcmlhYmxlIHRoYXQgaW5kaWNhdGVzIGEgYmluZGluZyBjb250YWlucyBhdCBsZWFzdCBvbmUKLSAgICAgIC8vIG1pbWU6Y29udGVudCBlbGVtZW50Ci0gICAgICBib29sZWFuIG1pbWVDb250ZW50c0ZvdW5kID0gZmFsc2U7Ci0KLSAgICAgIC8vIEdldHRpbmcgYSB3c2RsOmJpbmRpbmcKLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgICAvLyBHZXR0aW5nIGl0cyB3c2RsOm9wZXJhdGlvbiBlbGVtZW50cwotICAgICAgTGlzdCBvcHMgPSBiaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCk7Ci0KLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIG9wZXJhdGlvbiBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcHMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKSBvcHMuZ2V0KGkpOwotCi0gICAgICAgIC8vIEdldHRpbmcgd3NkbDppbnB1dCBhbmQgd3NkbDpvdXRwdXQgZWxlbWVudHMgb2YgYW4gb3BlcmF0aW9uCi0gICAgICAgIEJpbmRpbmdJbnB1dCBiaW5kaW5nSW5wdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpOwotICAgICAgICBCaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdPdXRwdXQoKTsKLQotICAgICAgICAvLyBDb2xsZWN0aW5nIGFsbCB0aGUgbWltZTpjb250ZW50IGVsZW1lbnRzIGZyb20gd3NkbDppbnB1dCBhbmQgd3NkbDpvdXRwdXQKLSAgICAgICAgTGlzdCBpbnB1dE1pbWVDb250ZW50cyA9IGdldE1pbWVDb250ZW50RWxlbWVudHMoCi0gICAgICAgICAgYmluZGluZ0lucHV0ID09IG51bGwgPyBudWxsIDogYmluZGluZ0lucHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICAgICAgTGlzdCBvdXRwdXRNaW1lQ29udGVudHMgPSBnZXRNaW1lQ29udGVudEVsZW1lbnRzKAotICAgICAgICAgIGJpbmRpbmdPdXRwdXQgPT0gbnVsbCA/IG51bGwgOiBiaW5kaW5nT3V0cHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLQotICAgICAgICAvLyBJZiB0aGUgd3NkbDppbnB1dCBjb250YWlucyBtaW1lOmNvbnRlbnQgZWxlbWVudHMKLSAgICAgICAgaWYgKCFpbnB1dE1pbWVDb250ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtaW1lQ29udGVudHNGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgSW5wdXQgcG9ydFR5cGVJbnB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkuZ2V0SW5wdXQoKTsKLSAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyB0aGUgY29ycmVzcG9uZGluZyB3c2RsOmlucHV0IGluIHdzZGw6cG9ydFR5cGUsCi0gICAgICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAocG9ydFR5cGVJbnB1dCA9PSBudWxsKQotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oCi0gICAgICAgICAgICAgICJUaGVyZSBpcyBubyB0aGUgY29ycmVzcG9uZ2luZyB3c2RsOmlucHV0IGluIHRoZSB3c2RsOnBvcnRUeXBlIgotICAgICAgICAgICAgICArICIgb3BlcmF0aW9uIGZvciB0aGUgd3NkbDppbnB1dCBvZiB0aGUgXCIiCi0gICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAiXCIgYmluZGluZyBvcGVyYXRpb24uIik7Ci0KLSAgICAgICAgICAvLyBJZiB0aGUgd3NkbDpwb3J0VHlwZSBpbnB1dCBkb2VzIG5vdCByZWZlcmVuY2UgYW55IHdzZGw6bWVzc2FnZSwKLSAgICAgICAgICAvLyB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmIChwb3J0VHlwZUlucHV0LmdldE1lc3NhZ2UoKSA9PSBudWxsKQotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSB3c2RsOmlucHV0IG9mIHRoZSBcIiIKLSAgICAgICAgICAgICAgKyBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldE5hbWUoKSArICJcIiB3c2RsOnBvcnRUeXBlICIKLSAgICAgICAgICAgICAgKyAib3BlcmF0aW9uIGRvZXMgbm90IHJlZmVyZW5jZSBhbnkgd3NkbDptZXNzYWdlLiIpOwotCi0gICAgICAgICAgLy8gR2V0dGluZyB0aGUgcGFydCBuYW1lIHRoYXQgaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgd3NkbDptZXNzYWdlCi0gICAgICAgICAgLy8gdGhlIGlucHV0IG9mIHdzZGw6cG9ydFR5cGUgcmVmZXJzIHRvCi0gICAgICAgICAgU3RyaW5nIHBhcnQgPSBnZXRJbnZhbGlkTWltZUNvbnRlbnRQYXJ0KAotICAgICAgICAgICAgaW5wdXRNaW1lQ29udGVudHMsIHBvcnRUeXBlSW5wdXQuZ2V0TWVzc2FnZSgpKTsKLQotICAgICAgICAgIC8vIElmIHN1Y2ggcGFydCBpcyBmb3VuZCwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAocGFydCAhPSBudWxsKQotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oInBhcnQ9XCIiICsgcGFydCArCi0gICAgICAgICAgICAgICJcIiwgdGhlIGlucHV0IG9mIHRoZSBiaW5kaW5nIG9wZXJhdGlvbiBcIiIKLSAgICAgICAgICAgICAgKyBiaW5kaW5nT3BlcmF0aW9uLmdldE5hbWUoKSArICJcIiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIHdzZGw6b3V0cHV0IGNvbnRhaW5zIG1pbWU6Y29udGVudCBlbGVtZW50cwotICAgICAgICBpZiAoIW91dHB1dE1pbWVDb250ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtaW1lQ29udGVudHNGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgT3V0cHV0IHBvcnRUeXBlT3V0cHV0ID0gYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRPdXRwdXQoKTsKLSAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyB0aGUgY29ycmVzcG9uZGluZyB3c2RsOmlucHV0IGluIHdzZGw6cG9ydFR5cGUsCi0gICAgICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAocG9ydFR5cGVPdXRwdXQgPT0gbnVsbCkKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKAotICAgICAgICAgICAgICAiVGhlcmUgaXMgbm8gdGhlIGNvcnJlc3Bvbmdpbmcgd3NkbDpvdXRwdXQgaW4gdGhlIHdzZGw6cG9ydFR5cGUiCi0gICAgICAgICAgICAgICsgIiBvcGVyYXRpb24gZm9yIHRoZSB3c2RsOm91dHB1dCBvZiB0aGUgXCIiCi0gICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAiXCIgYmluZGluZyBvcGVyYXRpb24uIik7Ci0KLSAgICAgICAgICAvLyBJZiB0aGUgd3NkbDpwb3J0VHlwZSBvdXRwdXQgZG9lcyBub3QgcmVmZXJlbmNlIGFueSB3c2RsOm1lc3NhZ2UsCi0gICAgICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAocG9ydFR5cGVPdXRwdXQuZ2V0TWVzc2FnZSgpID09IG51bGwpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIHdzZGw6b3V0cHV0IG9mIHRoZSBcIiIKLSAgICAgICAgICAgICAgKyBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldE5hbWUoKSArICJcIiB3c2RsOnBvcnRUeXBlICIKLSAgICAgICAgICAgICAgKyAib3BlcmF0aW9uIGRvZXMgbm90IHJlZmVyZW5jZSBhbnkgd3NkbDptZXNzYWdlLiIpOwotCi0gICAgICAgICAgLy8gR2V0dGluZyB0aGUgcGFydCBuYW1lIHRoYXQgaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgd3NkbDptZXNzYWdlCi0gICAgICAgICAgLy8gdGhlIG91dHB1dCBvZiB3c2RsOnBvcnRUeXBlIHJlZmVycyB0bwotICAgICAgICAgIFN0cmluZyBwYXJ0ID0gZ2V0SW52YWxpZE1pbWVDb250ZW50UGFydCgKLSAgICAgICAgICAgICAgb3V0cHV0TWltZUNvbnRlbnRzLCBwb3J0VHlwZU91dHB1dC5nZXRNZXNzYWdlKCkpOwotCi0gICAgICAgICAgLy8gSWYgc3VjaCBwYXJ0IGlzIGZvdW5kLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmIChwYXJ0ICE9IG51bGwpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigicGFydD1cIiIgKyBwYXJ0ICsKLSAgICAgICAgICAgICAgICAiXCIsIHRoZSBvdXRwdXQgb2YgdGhlIGJpbmRpbmcgb3BlcmF0aW9uIFwiIgotICAgICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAiXCIiKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyBJZiB0aGUgYmluZGluZyBjb250YWlucyBubyBtaW1lOmNvbnRlbnQgZWxlbWVudHMsCi0gICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoIW1pbWVDb250ZW50c0ZvdW5kKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgYWZlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb2xsZWN0cyBhbGwgbWltZTpjb250ZW50IGVsZW1lbnRzLgotICAgKiBAcGFyYW0gZXh0RWxlbXMgYSBsaXN0IG9mIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgdGhhdCBjYW4gY29udGFpbiBtaW1lOmNvbnRlbnRTLgotICAgKiBAcmV0dXJuIHRoZSBsaXN0IG9mIG1pbWU6Y29udGVudCBlbGVtZW50cyBmb3VuZC4KLSAgICovCi0gIHByaXZhdGUgTGlzdCBnZXRNaW1lQ29udGVudEVsZW1lbnRzKExpc3QgZXh0RWxlbXMpCi0gIHsKLSAgICBMaXN0IG1pbWVDb250ZW50RWxlbWVudHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICBpZiAoZXh0RWxlbXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBHb2luZyB0aHJvdWdoIGFsbCB0aGUgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHRFbGVtcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWxlbSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbXMuZ2V0KGkpOwotICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBtaW1lOm11bHRpcGFydFJlbGF0ZWQKLSAgICAgICAgaWYgKGV4dEVsZW0uZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NETF9NSU1FX01VTFRJUEFSVCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBHZXR0aW5nIHRoZSBtaW1lOnBhcnQgZWxlbWVudHMgb2YgdGhlIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZAotICAgICAgICAgIExpc3QgbWltZVBhcnRzID0gKChNSU1FTXVsdGlwYXJ0UmVsYXRlZCkgZXh0RWxlbSkuZ2V0TUlNRVBhcnRzKCk7Ci0gICAgICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIG1pbWU6cGFydCBlbGVtZW50cwotICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWltZVBhcnRzLnNpemUoKTsgaisrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIENvbGxlY3RpbmcgYWxsIHRoZSBtaW1lOmNvbnRlbnQgZWxlbWVudHMgb2YgdGhpcyBtaW1lOnBhcnQKLSAgICAgICAgICAgIExpc3QgZWxlbXMgPSBnZXRNaW1lQ29udGVudEVsZW1lbnRzKAotICAgICAgICAgICAgICAoKE1JTUVQYXJ0KSBtaW1lUGFydHMuZ2V0KGopKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgICAgICAgICAvLyBBZGRpbmcgdGhlIGVsZW1lbnRzIHRvIHRoZSBsaXN0IGJlaW5nIHJldHVybmVkCi0gICAgICAgICAgICBtaW1lQ29udGVudEVsZW1lbnRzLmFkZEFsbChlbGVtcyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vIEVsc2UgaWYgdGhlIGVsZW1lbnQgaXMgbWltZTpjb250ZW50Ci0gICAgICAgIGVsc2UgaWYgKGV4dEVsZW0uZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NETF9NSU1FX0NPTlRFTlQpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gQWRkaW5nIHRoZSBlbGVtZW50IHRvIHRoZSBsaXN0IGJlaW5nIHJldHVybmVkCi0gICAgICAgICAgbWltZUNvbnRlbnRFbGVtZW50cy5hZGQoZXh0RWxlbSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbWltZUNvbnRlbnRFbGVtZW50czsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHBhcnQgbmFtZSBzcGVjaWZpZWQgaW4gbWltZTpjb250ZW50IGVsZW1lbnQgdGhhdCBpcyBub3QgcHJlc2VudGVkIGluIHdzZGw6bWVzc2FnZQotICAgKiBAcGFyYW0gbWltZUNvbnRlbnRzIGEgbGlzdCBvZiBtaW1lOmNvbnRlbnQgZWxlbWVudHMgd2hpY2ggcGFydCBhdHRyaWJ1dGVzIGFyZSB2YWxpZGF0ZWQKLSAgICogQHBhcmFtIG1lc3NhZ2UgYSB3c2RsOm1lc3NhZ2UKLSAgICogQHJldHVybiBhIHBhcnQgbmFtZQotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0SW52YWxpZE1pbWVDb250ZW50UGFydChMaXN0IG1pbWVDb250ZW50cywgTWVzc2FnZSBtZXNzYWdlKQotICB7Ci0gICAgLy8gR29pbmcgdGhyb3VnIGFsbCB0aGUgbWltZTpjb250ZW50IGVsZW1lbnRzCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtaW1lQ29udGVudHMuc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgLy8gR2V0dGluZyB0aGUgcGFydCBuYW1lIG9mIGEgbWltZTplbGVtZW50Ci0gICAgICBTdHJpbmcgcGFydCA9ICgoTUlNRUNvbnRlbnQpIG1pbWVDb250ZW50cy5nZXQoaSkpLmdldFBhcnQoKTsKLSAgICAgIC8vIElmIHRoZSB3c2RsOm1lc3NhZ2UgZG9lcyBub3QgY29udGFpbiBzdWNoIHBhcnQsIHJldHVybiB0aGUgcGFydAotICAgICAgaWYgKCFtZXNzYWdlLmdldFBhcnRzKCkua2V5U2V0KCkuY29udGFpbnMocGFydCkpCi0gICAgICAgIHJldHVybiBwYXJ0OwotICAgIH0KLSAgICAvLyBSZXR1cm4gbnVsbCBpZiBubyBvbmUgcGFydCBpcyBmb3VuZAotICAgIHJldHVybiBudWxsOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkwNC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkwNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWE5NzE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5MDQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotLyoqCi0gKiBBUDI5MDQKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcgd2l0aCBhdCBsZWFzdCBvbmUgbWltZTpjb250ZW50IGVsZW1lbnQ8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIHBhcnQgYXR0cmlidXRlIG9mIGVhY2ggbWltZTpjb250ZW50IGVsZW1lbnQgaW4gYSB3c2RsOmJpbmRpbmcKLSAqIGRvZXMgbm90IHJlZmVyZW5jZSBhIHN1Yi1jb21wb25lbnQgb2YgYSB3c2RsOnBhcnQgb2YgdGhlIHdzZGw6bWVzc2FnZSB0aGF0IGlzIHByZXNlbnQgaW4gdGhlCi0gKiByZXNwZWN0aXZlIHdzZGw6aW5wdXQgb3Igd3NkbDpvdXRwdXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDpvcGVyYXRpb24gb2YgdGhlIGNvcnJlc3BvbmRpbmcKLSAqIHdzZGw6cG9ydFR5cGUuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMjkwNCBleHRlbmRzIEFQMjkwMwotewotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQVAyOTA0KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gc3VwZXIudmFsaWRhdGUodGVzdEFzc2VydGlvbiwgZW50cnlDb250ZXh0KTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5MDYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5MDYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM5YzdjZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTA2LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLS8qKgotICogQVAyOTA2Ci0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6YmluZGluZyBjb250YWluaW5nIGEgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnQ8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+QSBub24tcm9vdCBNSU1FIHBhcnQgaW4gYSB3c2RsOmJpbmRpbmcgZG9lcyBub3QgY29udGFpbiBhIHNvYXBiaW5kOmhlYWRlciBlbGVtZW50LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBBUDI5MDYgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBBUDI5MDYoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gQSB2YXJpYWJsZSB0aGF0IGluZGljYXRlcyBhIGJpbmRpbmcgY29udGFpbnMgYXQgbGVhc3Qgb25lCi0gICAgICAvLyBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudAotICAgICAgYm9vbGVhbiBtdWx0aXBhcnRzRm91bmQgPSBmYWxzZTsKLQotICAgICAgLy8gR2V0dGluZyBhIHdzZGw6YmluZGluZwotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAgIC8vIEdldHRpbmcgaXRzIHdzZGw6b3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBMaXN0IG9wcyA9IGJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbnMoKTsKLQotICAgICAgLy8gR29pbmcgdGhyb3VnaCB0aGUgb3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9wcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24pIG9wcy5nZXQoaSk7Ci0KLSAgICAgICAgLy8gR2V0dGluZyB3c2RsOmlucHV0IGFuZCB3c2RsOm91dHB1dCBlbGVtZW50cyBvZiBhbiBvcGVyYXRpb24KLSAgICAgICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCk7Ci0gICAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpOwotCi0gICAgICAgIC8vIENvbGxlY3RpbmcgYWxsIHRoZSBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMgZnJvbSB3c2RsOmlucHV0IGFuZCB3c2RsOm91dHB1dAotICAgICAgICBMaXN0IGlucHV0TXVsdGlwYXJ0cyA9IGdldE1pbWVNdWx0aXBhcnRFbGVtZW50cygKLSAgICAgICAgICBiaW5kaW5nSW5wdXQgPT0gbnVsbCA/IG51bGwgOiBiaW5kaW5nSW5wdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotICAgICAgICBMaXN0IG91dHB1dE11bHRpcGFydHMgPSBnZXRNaW1lTXVsdGlwYXJ0RWxlbWVudHMoCi0gICAgICAgICAgYmluZGluZ091dHB1dCA9PSBudWxsID8gbnVsbCA6IGJpbmRpbmdPdXRwdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotCi0gICAgICAgIC8vIElmIHRoZSB3c2RsOmlucHV0IGNvbnRhaW5zIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50cwotICAgICAgICBpZiAoIWlucHV0TXVsdGlwYXJ0cy5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtdWx0aXBhcnRzRm91bmQgPSB0cnVlOwotCi0gICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBzb2FwOmhlYWRlciBpbiB0aGUgbm9uLXJvb3QgbWltZTpwYXJ0LAotICAgICAgICAgIC8vIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgICAgaWYgKGNvbnRhaW5zSW52YWxpZE1pbWVQYXJ0KGlucHV0TXVsdGlwYXJ0cykpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBpbnZhbGlkIG1pbWU6cGFydCBlbGVtZW50ICIKLSAgICAgICAgICAgICAgKyAiaXMgaW4gdGhlIHdzZGw6aW5wdXQgb2YgdGhlIFwiIiArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpCi0gICAgICAgICAgICAgICsgIlwiIGJpbmRpbmcgb3BlcmF0aW9uLiIpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZSB3c2RsOm91dHB1dCBjb250YWlucyBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMKLSAgICAgICAgaWYgKCFvdXRwdXRNdWx0aXBhcnRzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIG11bHRpcGFydHNGb3VuZCA9IHRydWU7Ci0KLSAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHNvYXA6aGVhZGVyIGluIHRoZSBub24tcm9vdCBtaW1lOnBhcnQsCi0gICAgICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAoY29udGFpbnNJbnZhbGlkTWltZVBhcnQob3V0cHV0TXVsdGlwYXJ0cykpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBpbnZhbGlkIG1pbWU6cGFydCBlbGVtZW50ICIKLSAgICAgICAgICAgICAgICArICJpcyBpbiB0aGUgd3NkbDpvdXRwdXQgb2YgdGhlIFwiIiArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpCi0gICAgICAgICAgICAgICAgKyAiXCIgYmluZGluZyBvcGVyYXRpb24uIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyBJZiB0aGUgYmluZGluZyBjb250YWlucyBubyBvbmUgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnQsCi0gICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoIW11bHRpcGFydHNGb3VuZCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gYW5hZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgICogTG9va3MgZm9yIHN1Y2ggbm9uLXJvb3QgbWltZTpwYXJ0IGVsZW1lbnQgZnJvbSBhIGxpc3Qgb2YgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnRzCi0gICAqIHRoYXQgY29udGFpbnMgYSBzb2FwOmhlYWRlciBlbGVtZW50LgotICAgKiBAcGFyYW0gbXVsdGlwYXJ0cyBhIGxpc3Qgb2YgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnRzCi0gICAqIEByZXR1cm4gdHJ1ZSwgaWYgc3VjaCBlbGVtZW50IGlzIGZvdW5kLCBmYWxzZSBvdGhlcndpc2UKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBjb250YWluc0ludmFsaWRNaW1lUGFydChMaXN0IG11bHRpcGFydHMpCi0gIHsKLSAgICAvLyBHb2luZyB0aHJvdWdoIGEgbGlzdCBvZiBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG11bHRpcGFydHMuc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgLy8gR2V0dGluZyBhIGxpc3Qgb2YgbWltZTpwYXJ0IGVsZW1lbnRzCi0gICAgICBMaXN0IG1pbWVQYXJ0cyA9Ci0gICAgICAgICgoTUlNRU11bHRpcGFydFJlbGF0ZWQpIG11bHRpcGFydHMuZ2V0KGkpKS5nZXRNSU1FUGFydHMoKTsKLQotICAgICAgLy8gTG9va2luZyBmb3Igbm9uLXJvb3QgbWltZTpwYXJ0UwotICAgICAgaWYgKG1pbWVQYXJ0cy5zaXplKCkgPiAxKQotICAgICAgewotICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8IG1pbWVQYXJ0cy5zaXplKCk7IGorKykKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldHRpbmcgYSBsaXN0IG9mIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgb2YgYSBtaW1lOnBhcnQKLSAgICAgICAgICBMaXN0IGV4dEVsZW1zID0KLSAgICAgICAgICAgICgoTUlNRVBhcnQpIG1pbWVQYXJ0cy5nZXQoaikpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IGV4dEVsZW1zLnNpemUoKTsgaysrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIElmIGFuIGV4dGVuc2liaWxpdHkgZWxlbWVudCBpcyBhIHNvYXA6aGVhZGVyLAotICAgICAgICAgICAgLy8gcmV0dXJuIHRydWUKLSAgICAgICAgICAgIGlmICgoKEV4dGVuc2liaWxpdHlFbGVtZW50KWV4dEVsZW1zLmdldChrKSkKLSAgICAgICAgICAgICAgLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKFdTRExfU09BUF9IRUFERVIpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gcmV0dXJuIGZhbHNlLCBpZiB0aGUgZWxlbWVudCBpcyBub3QgZm91bmQKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogQ29sbGVjdHMgYWxsIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50cy4KLSAgICogQHBhcmFtIGV4dEVsZW1zIGEgbGlzdCBvZiBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIHRoYXQgY2FuIGNvbnRhaW4gbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIHRoZSBsaXN0IG9mIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50cyBmb3VuZC4KLSAgICovCi0gIHByaXZhdGUgTGlzdCBnZXRNaW1lTXVsdGlwYXJ0RWxlbWVudHMoTGlzdCBleHRFbGVtcykKLSAgewotICAgIExpc3QgbWltZU11bHRpcGFydEVsZW1lbnRzID0gbmV3IEFycmF5TGlzdCgpOwotCi0gICAgaWYgKGV4dEVsZW1zICE9IG51bGwpCi0gICAgewotICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0RWxlbXMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW0gPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1zLmdldChpKTsKLSAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgbWltZTptdWx0aXBhcnRSZWxhdGVkCi0gICAgICAgIGlmIChleHRFbGVtLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKFdTRExfTUlNRV9NVUxUSVBBUlQpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gQWRkaW5nIHRoZSBlbGVtZW50IHRvIHRoZSBsaXN0IGJlaW5nIHJldHVybmVkCi0gICAgICAgICAgbWltZU11bHRpcGFydEVsZW1lbnRzLmFkZChleHRFbGVtKTsKLSAgICAgICAgICAvLyBHZXR0aW5nIHRoZSBtaW1lOnBhcnQgZWxlbWVudHMgb2YgdGhlIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZAotICAgICAgICAgIExpc3QgbWltZVBhcnRzID0gKChNSU1FTXVsdGlwYXJ0UmVsYXRlZCkgZXh0RWxlbSkuZ2V0TUlNRVBhcnRzKCk7Ci0gICAgICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIG1pbWU6cGFydCBlbGVtZW50cwotICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWltZVBhcnRzLnNpemUoKTsgaisrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIENvbGxlY3RpbmcgYWxsIHRoZSBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMgb2YgdGhpcyBtaW1lOnBhcnQKLSAgICAgICAgICAgIExpc3QgZWxlbXMgPSBnZXRNaW1lTXVsdGlwYXJ0RWxlbWVudHMoCi0gICAgICAgICAgICAgICgoTUlNRVBhcnQpIG1pbWVQYXJ0cy5nZXQoaikpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgZWxlbWVudHMgdG8gdGhlIGxpc3QgYmVpbmcgcmV0dXJuZWQKLSAgICAgICAgICAgIG1pbWVNdWx0aXBhcnRFbGVtZW50cy5hZGRBbGwoZWxlbXMpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBtaW1lTXVsdGlwYXJ0RWxlbWVudHM7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTA3LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTA3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NDQ0NWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkwNy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLS8qKgotICogQVAyOTA3Ci0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6YmluZGluZzwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5FYWNoIE1JTUUgcGFydCBpbiBhIGRlc2NyaXB0aW9uIGlzIGRlZmluZWQgdXNpbmcKLSAqIGFuIGVsZW1lbnQgd2l0aCBhIGxvY2FsIG5hbWUgb2YgcGFydCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQotICogV1NETCBNSU1FIEJpbmRpbmcgZXh0ZW5zaW9uLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBBUDI5MDcgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBBUDI5MDcoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTA4LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTA4LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4OWY0YmEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkwOC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjk2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLS8qKgotICogQVAyOTA4Ci0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6YmluZGluZzwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgbWltZTpwYXJ0IGVsZW1lbnQgaW4gYSBERVNDUklQVElPTiBkb2VzIG5vdCBoYXZlIGEgbmFtZSBhdHRyaWJ1dGUuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMjkwOCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMjkwOChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBHZXR0aW5nIGEgd3NkbDpiaW5kaW5nCi0gICAgICBCaW5kaW5nIHdzZGxCaW5kaW5nID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAgIC8vIFNpbmNlIFdTREw0SiAxLjQgaWdub3JlcyBhbnkgYXR0cmlidXRlcyBvZiBtaW1lOnBhcnQsIHVzZSBYZXJjZXMgMi42LjIgaW5zdGVhZAotICAgICAgRG9jdW1lbnQgZG9jID0gZW50cnlDb250ZXh0LmdldFdTRExEb2N1bWVudCgpLmdldERvY3VtZW50KCk7Ci0gICAgICBpZiAoZG9jID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGRvYyA9IHZhbGlkYXRvci5wYXJzZVhNTERvY3VtZW50VVJMKHZhbGlkYXRvci53c2RsRG9jdW1lbnQuZ2V0TG9jYXRpb24oKSwgbnVsbCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEZpbmRpbmcgdGhlIHdzZGw6YmluZGluZyBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZAotICAgICAgRWxlbWVudCBiaW5kaW5nID0gZ2V0QmluZGluZ0VsZW1lbnQoCi0gICAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwgd3NkbEJpbmRpbmcuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSk7Ci0KLSAgICAgIExpc3Qgb3BzID0gZ2V0Q2hpbGRFbGVtZW50cyhiaW5kaW5nLCBXU0RMX09QRVJBVElPTik7Ci0KLSAgICAgIC8vIEEgdmFyaWFibGUgdGhhdCBpbmRpY2F0ZXMgYSBiaW5kaW5nIGNvbnRhaW5zIGF0IGxlYXN0IG9uZQotICAgICAgLy8gbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnQKLSAgICAgIGJvb2xlYW4gbXVsdGlwYXJ0c0ZvdW5kID0gZmFsc2U7Ci0KLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIG9wZXJhdGlvbiBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcHMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEVsZW1lbnQgYmluZGluZ09wZXJhdGlvbiA9IChFbGVtZW50KSBvcHMuZ2V0KGkpOwotCi0gICAgICAgIC8vIEdldHRpbmcgd3NkbDppbnB1dCBhbmQgd3NkbDpvdXRwdXQgZWxlbWVudHMgb2YgYW4gb3BlcmF0aW9uCi0gICAgICAgIEVsZW1lbnQgYmluZGluZ0lucHV0ID0gZ2V0Q2hpbGRFbGVtZW50KGJpbmRpbmdPcGVyYXRpb24sIFdTRExfSU5QVVQpOwotICAgICAgICBFbGVtZW50IGJpbmRpbmdPdXRwdXQgPSBnZXRDaGlsZEVsZW1lbnQoYmluZGluZ09wZXJhdGlvbiwgV1NETF9PVVRQVVQpOwotCi0gICAgICAgIC8vIENvbGxlY3RpbmcgYWxsIHRoZSBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMgZnJvbSB3c2RsOmlucHV0IGFuZCB3c2RsOm91dHB1dAotICAgICAgICBMaXN0IGlucHV0TXVsdGlwYXJ0cyA9IGdldE1pbWVNdWx0aXBhcnRFbGVtZW50cyhiaW5kaW5nSW5wdXQpOwotICAgICAgICBMaXN0IG91dHB1dE11bHRpcGFydHMgPSBnZXRNaW1lTXVsdGlwYXJ0RWxlbWVudHMoYmluZGluZ091dHB1dCk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIHdzZGw6aW5wdXQgY29udGFpbnMgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnRzCi0gICAgICAgIGlmICghaW5wdXRNdWx0aXBhcnRzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIG11bHRpcGFydHNGb3VuZCA9IHRydWU7Ci0KLSAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG1pbWU6cGFydCBlbGVtZW50IGNvbnRhaW5pbmcgYSBuYW1lIGF0dHJpYnV0ZSwKLSAgICAgICAgICAvLyB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmIChjb250YWluc0ludmFsaWRNaW1lUGFydChpbnB1dE11bHRpcGFydHMpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgaW52YWxpZCAiCi0gICAgICAgICAgICAgICAgKyAibWltZTpwYXJ0IGVsZW1lbnQgaXMgaW4gdGhlIHdzZGw6aW5wdXQgb2YgdGhlIFwiIgotICAgICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXRBdHRyaWJ1dGUoV1NJQ29uc3RhbnRzLkFUVFJfTkFNRSkKLSAgICAgICAgICAgICAgICArICJcIiBiaW5kaW5nIG9wZXJhdGlvbi4iKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgd3NkbDpvdXRwdXQgY29udGFpbnMgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnRzCi0gICAgICAgIGlmICghb3V0cHV0TXVsdGlwYXJ0cy5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtdWx0aXBhcnRzRm91bmQgPSB0cnVlOwotCi0gICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtaW1lOnBhcnQgZWxlbWVudCBjb250YWluaW5nIGEgbmFtZSBhdHRyaWJ1dGUsCi0gICAgICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAoY29udGFpbnNJbnZhbGlkTWltZVBhcnQob3V0cHV0TXVsdGlwYXJ0cykpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBpbnZhbGlkICIKLSAgICAgICAgICAgICAgICArICJtaW1lOnBhcnQgZWxlbWVudCBpcyBpbiB0aGUgd3NkbDpvdXRwdXQgb2YgdGhlIFwiIgotICAgICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXRBdHRyaWJ1dGUoV1NJQ29uc3RhbnRzLkFUVFJfTkFNRSkKLSAgICAgICAgICAgICAgICArICJcIiBiaW5kaW5nIG9wZXJhdGlvbi4iKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vIElmIHRoZSBiaW5kaW5nIGNvbnRhaW5zIG5vIG9uZSBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudCwKLSAgICAgIC8vIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmICghbXVsdGlwYXJ0c0ZvdW5kKQotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gaW9lKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIAotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIFZhbGlkYXRlcyBtaW1lOnBhcnQgZWxlbWVudHMgZm9yIGVhY2ggb2YgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBtdWx0aXBhcnRzIGEgbGlzdCBvZiBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gdHJ1ZSwgaWYgYW55IG1pbWU6cGFydCBjb250YWlucyBhIG5hbWUgYXR0cmlidXRlLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gY29udGFpbnNJbnZhbGlkTWltZVBhcnQoTGlzdCBtdWx0aXBhcnRzKSB7Ci0gICAgLy8gR29pbmcgdGhyb3VnaCBhIGxpc3Qgb2YgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnRzCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtdWx0aXBhcnRzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgIC8vIEdldHRpbmcgYSBsaXN0IG9mIG1pbWU6cGFydCBlbGVtZW50cwotICAgICAgTGlzdCBtaW1lUGFydHMgPQotICAgICAgICBnZXRDaGlsZEVsZW1lbnRzKChFbGVtZW50KSBtdWx0aXBhcnRzLmdldChpKSwgV1NETF9NSU1FX1BBUlQpOwotICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIG1pbWU6cGFydCBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lUGFydHMuc2l6ZSgpOyBqKyspCi0gICAgICB7Ci0gICAgICAgIEVsZW1lbnQgbWltZVBhcnQgPSAoRWxlbWVudCkgbWltZVBhcnRzLmdldChqKTsKLSAgICAgICAgLy8gSWYgdGhlIG1pbWU6cGFydCBlbGVtZW50IGNvbnRhaW5zIGEgbmFtZSBhdHRyaWJ1dGUsCi0gICAgICAgIC8vIHJldHVybiB0cnVlCi0gICAgICAgIGlmIChtaW1lUGFydC5nZXRBdHRyaWJ1dGVOb2RlKFdTSUNvbnN0YW50cy5BVFRSX05BTUUpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAvLyBObyBvbmUgaW52YWxpZCBtaW1lOnBhcnQgZWxlbWVudCBpcyBmb3VuZCwgcmV0dXJuIGZhbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbGxlY3RzIGFsbCBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMuCi0gICAqIEBwYXJhbSBwYXJlbnQgYW4gZWxlbWVudCB3aGljaCB0aGUgY2hpbGQgZWxlbWVudHMgYXJlIGdhdGhlcmVkIGZyb20uCi0gICAqIEByZXR1cm4gdGhlIGxpc3Qgb2YgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnRzIGZvdW5kLgotICAgKi8KLSAgcHJpdmF0ZSBMaXN0IGdldE1pbWVNdWx0aXBhcnRFbGVtZW50cyhFbGVtZW50IHBhcmVudCkKLSAgewotICAgIExpc3QgbWltZU11bHRpcGFydEVsZW1lbnRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIC8vIElmIHRoZSBwYXJlbnQgaXMgbm90IG51bGwKLSAgICBpZiAocGFyZW50ICE9IG51bGwpCi0gICAgewotICAgICAgLy8gR2V0dGluZyB0aGUgZmlyc3QgcGFyZW50J3MgY2hpbGQKLSAgICAgIEVsZW1lbnQgY2hpbGQgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKHBhcmVudCk7Ci0gICAgICB3aGlsZSAoY2hpbGQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gSWYgdGhlIGNoaWxkIGlzIGEgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnQKLSAgICAgICAgaWYgKGNoaWxkLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscyhXU0RMX01JTUVfTVVMVElQQVJULmdldE5hbWVzcGFjZVVSSSgpKQotICAgICAgICAgICYmIGNoaWxkLmdldExvY2FsTmFtZSgpLmVxdWFscyhXU0RMX01JTUVfTVVMVElQQVJULmdldExvY2FsUGFydCgpKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEFkZGluZyB0aGUgZWxlbWVudCB0byB0aGUgbGlzdCBiZWluZyByZXR1cm5lZAotICAgICAgICAgIG1pbWVNdWx0aXBhcnRFbGVtZW50cy5hZGQoY2hpbGQpOwotCi0gICAgICAgICAgLy8gR2V0dGluZyBtaW1lOnBhcnRTIGZyb20gdGhlIGVsZW1lbnQKLSAgICAgICAgICBMaXN0IG1pbWVQYXJ0cyA9IGdldENoaWxkRWxlbWVudHMoY2hpbGQsIFdTRExfTUlNRV9QQVJUKTsKLSAgICAgICAgICAvLyBHb2luZyB0aHJvdWdoIGFsbCB0aGUgbWltZTpwYXJ0IGVsZW1lbnRzCi0gICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtaW1lUGFydHMuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gQ29sbGVjdGluZyBhbGwgdGhlIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50cyBvZiB0aGlzIG1pbWU6cGFydAotICAgICAgICAgICAgTGlzdCBlbGVtcyA9IGdldE1pbWVNdWx0aXBhcnRFbGVtZW50cygoRWxlbWVudCkgbWltZVBhcnRzLmdldChpKSk7Ci0gICAgICAgICAgICAvLyBBZGRpbmcgdGhlIGVsZW1lbnRzIHRvIHRoZSBsaXN0IGJlaW5nIHJldHVybmVkCi0gICAgICAgICAgICBtaW1lTXVsdGlwYXJ0RWxlbWVudHMuYWRkQWxsKGVsZW1zKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gR2V0dGluZyB0aGUgbmV4dCBjaGlsZAotICAgICAgICBjaGlsZCA9IFhNTFV0aWxzLmdldE5leHRTaWJsaW5nKGNoaWxkKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbWltZU11bHRpcGFydEVsZW1lbnRzOwotICB9Ci0KLSAgLyoqCi0gICAqIExvb2tzIGZvciBhbiBlbGVtZW50J3MgY2hpbGQgZWxlbWVudC4KLSAgICogQHBhcmFtIHBhcmVudCBhIHBhcmVudCBlbGVtZW50LgotICAgKiBAcGFyYW0gY2hpbGROYW1lIGEgcXVhbGlmaWVkIGVsZW1lbnQgbmFtZSBiZWluZyBmb3VuZC4KLSAgICogQHJldHVybiBhbiBlbGVtZW50IG9yIG51bGwgaWYgaXQgaXMgbm90IGZvdW5kLgotICAgKi8KLSAgcHJpdmF0ZSBFbGVtZW50IGdldENoaWxkRWxlbWVudChFbGVtZW50IHBhcmVudCwgUU5hbWUgY2hpbGROYW1lKQotICB7Ci0gICAgLy8gR2V0dGluZyB0aGUgZmlyc3QgcGFyZW50J3MgY2hpbGQKLSAgICBFbGVtZW50IGNoaWxkID0gWE1MVXRpbHMuZ2V0Rmlyc3RDaGlsZChwYXJlbnQpOwotICAgIHdoaWxlIChjaGlsZCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIElmIHRoZSBjaGlsZCBoYXMgdGhlIHJlcXVpcmVkIHF1YWxpZmllZCBuYW1lCi0gICAgICBpZiAoY2hpbGQuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKGNoaWxkTmFtZS5nZXROYW1lc3BhY2VVUkkoKSkKLSAgICAgICAgJiYgY2hpbGQuZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKGNoaWxkTmFtZS5nZXRMb2NhbFBhcnQoKSkpCi0gICAgICB7Ci0gICAgICAgIC8vIHJldHVybiB0aGUgY2hpbGQKLSAgICAgICAgcmV0dXJuIGNoaWxkOwotICAgICAgfQotICAgICAgLy8gR2V0dGluZyB0aGUgbmV4dCBjaGlsZAotICAgICAgY2hpbGQgPSBYTUxVdGlscy5nZXROZXh0U2libGluZyhjaGlsZCk7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbGxlY3RzIGVsZW1lbnQncyBjaGlsZCBlbGVtZW50cy4KLSAgICogQHBhcmFtIHBhcmVudCBhIHBhcmVudCBlbGVtZW50LgotICAgKiBAcGFyYW0gY2hpbGROYW1lIGEgcXVhbGlmaWVkIGVsZW1lbnQgbmFtZSBiZWluZyBmb3VuZC4KLSAgICogQHJldHVybiBhIGxpc3Qgb2YgZWxlbWVudHMgZm91bmQuCi0gICAqLwotICBwcml2YXRlIExpc3QgZ2V0Q2hpbGRFbGVtZW50cyhFbGVtZW50IHBhcmVudCwgUU5hbWUgY2hpbGROYW1lKQotICB7Ci0gICAgTGlzdCBjaGlsZHJlbiA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICBpZiAocGFyZW50ICE9IG51bGwpCi0gICAgewotICAgICAgLy8gR2V0dGluZyB0aGUgZmlyc3QgcGFyZW50J3MgY2hpbGQKLSAgICAgIEVsZW1lbnQgY2hpbGQgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKHBhcmVudCk7Ci0gICAgICB3aGlsZSAoY2hpbGQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gSWYgdGhlIGNoaWxkIGhhcyB0aGUgcmVxdWlyZWQgcXVhbGlmaWVkIG5hbWUKLSAgICAgICAgaWYgKGNoaWxkLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscyhjaGlsZE5hbWUuZ2V0TmFtZXNwYWNlVVJJKCkpCi0gICAgICAgICAgJiYgY2hpbGQuZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKGNoaWxkTmFtZS5nZXRMb2NhbFBhcnQoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBBZGRpbmcgdGhlIGNoaWxkIHRvIHRoZSBsaXN0Ci0gICAgICAgICAgY2hpbGRyZW4uYWRkKGNoaWxkKTsKLSAgICAgICAgfQotICAgICAgICAvLyBHZXR0aW5nIHRoZSBuZXh0IGJpbmRpbmcncyBjaGlsZAotICAgICAgICBjaGlsZCA9IFhNTFV0aWxzLmdldE5leHRTaWJsaW5nKGNoaWxkKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGNoaWxkcmVuOwotICB9Ci0KLSAgLyoqCi0gICAqIExvb2tzIGZvciB3c2RsOmJpbmRpbmcgZWxlbWVudC4KLSAgICogQHBhcmFtIGRlZmluaXRpb25zIGEgd3NkbDpkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKiBAcGFyYW0gYmluZGluZ05hbWUgYSBuYW1lIG9mIHdzZGw6YmluZGluZyBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgd3NkbDpiaW5kaW5nIGVsZW1lbnQgb3IgbnVsbCBpZiBpdCBpcyBub3QgZm91bmQuCi0gICAqLwotICBwcml2YXRlIEVsZW1lbnQgZ2V0QmluZGluZ0VsZW1lbnQoRWxlbWVudCBkZWZpbml0aW9ucywgU3RyaW5nIGJpbmRpbmdOYW1lKQotICB7Ci0gICAgLy8gR2V0dGluZyB0aGUgZmlyc3QgZGVmaW5pdGlvbnMnIGNoaWxkCi0gICAgRWxlbWVudCBjaGlsZCA9IFhNTFV0aWxzLmdldEZpcnN0Q2hpbGQoZGVmaW5pdGlvbnMpOwotICAgIHdoaWxlIChjaGlsZCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIElmIGRlZmluaXRpb25zJyBjaGlsZCBpcyB3c2RsOmJpbmRpbmcgZWxlbWVudAotICAgICAgLy8gYW5kIGlzIHRoZSBzYW1lIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkIGJ5IFdTRExWYWxpZGF0b3IKLSAgICAgIGlmIChjaGlsZC5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoV1NETF9CSU5ESU5HLmdldE5hbWVzcGFjZVVSSSgpKQotICAgICAgICAmJiBjaGlsZC5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoV1NETF9CSU5ESU5HLmdldExvY2FsUGFydCgpKQotICAgICAgICAmJiBjaGlsZC5nZXRBdHRyaWJ1dGUoV1NJQ29uc3RhbnRzLkFUVFJfTkFNRSkuZXF1YWxzKGJpbmRpbmdOYW1lKSkKLSAgICAgIHsKLSAgICAgICAgLy8gcmV0dXJuIHRoZSB3c2RsOmJpbmRpbmcgZWxlbWVudAotICAgICAgICByZXR1cm4gY2hpbGQ7Ci0gICAgICB9Ci0gICAgICAvLyBHZXR0aW5nIHRoZSBuZXh0IGRlZmluaXRpb25zJyBjaGlsZAotICAgICAgY2hpbGQgPSBYTUxVdGlscy5nZXROZXh0U2libGluZyhjaGlsZCk7Ci0gICAgfQotICAgIC8vIHJldHVybiBudWxsLCBpcyB0aGVyZSBpcyBubyBzdWNoIHdzZGw6YmluZGluZwotICAgIHJldHVybiBudWxsOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkwOS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkwOS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjY4MWJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5MDkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotLyoqCi0gKiBBUDI5MDkKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPk11bHRpcGxlIG1pbWU6Y29udGVudCBjaGlsZCBlbGVtZW50cyBvZiBhIG1pbWU6cGFydCBlbGVtZW50Ci0gKiBpbiBhIGRlc2NpcHRpb24gcmVmZXJlbmNlIHRoZSBzYW1lIHdzZGw6cGFydC48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAyOTA5IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvLyBBIHZhcmlhYmxlIHRoYXQgaW5kaWNhdGVzIGEgYmluZGluZyBjb250YWlucwotICAvLyBtdWx0aXBsZSBtaW1lOmNvbnRlbnQgZWxlbWVudHMKLSAgcHJpdmF0ZSBib29sZWFuIG11bHRpcGxlQ29udGVudEZvdW5kOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBBUDI5MDkoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gUmVzZXR0aW5nIHRoZSB2YXJpYWJsZQotICAgIG11bHRpcGxlQ29udGVudEZvdW5kID0gZmFsc2U7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBHZXR0aW5nIGEgd3NkbDpiaW5kaW5nCi0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgICAgLy8gR2V0dGluZyBpdHMgd3NkbDpvcGVyYXRpb24gZWxlbWVudHMKLSAgICAgIExpc3Qgb3BzID0gYmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9ucygpOwotCi0gICAgICAvLyBHb2luZyB0aHJvdWdoIHRoZSBvcGVyYXRpb24gZWxlbWVudHMKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb3BzLnNpemUoKTsgaSsrKQotICAgICAgewotICAgICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSAoQmluZGluZ09wZXJhdGlvbikgb3BzLmdldChpKTsKLQotICAgICAgICAvLyBHZXR0aW5nIHdzZGw6aW5wdXQgYW5kIHdzZGw6b3V0cHV0IGVsZW1lbnRzIG9mIGFuIG9wZXJhdGlvbgotICAgICAgICBCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0ID0gYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKTsKLSAgICAgICAgQmluZGluZ091dHB1dCBiaW5kaW5nT3V0cHV0ID0gYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCk7Ci0KLSAgICAgICAgLy8gQ29sbGVjdGluZyBhbGwgdGhlIG1pbWU6cGFydCBlbGVtZW50cyBmcm9tIHdzZGw6aW5wdXQgYW5kIHdzZGw6b3V0cHV0Ci0gICAgICAgIExpc3QgaW5wdXRNaW1lUGFydHMgPSBnZXRNaW1lUGFydHMoCi0gICAgICAgICAgYmluZGluZ0lucHV0ID09IG51bGwgPyBudWxsIDogYmluZGluZ0lucHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICAgICAgTGlzdCBvdXRwdXRNaW1lUGFydHMgPSBnZXRNaW1lUGFydHMoCi0gICAgICAgICAgYmluZGluZ091dHB1dCA9PSBudWxsID8gbnVsbCA6IGJpbmRpbmdPdXRwdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotCi0gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgbWltZTpwYXJ0IGNvbnRhaW5pbmcgbXVsdGlwbGUgbWltZTpjb250ZW50UwotICAgICAgICAvLyB3aGljaCByZWZlcmVuY2UgZGlmZmVyZW50IHdzZGw6cGFydFMsIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgIGlmIChjb250YWluc0ludmFsaWRNaW1lUGFydChpbnB1dE1pbWVQYXJ0cykpCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGludmFsaWQgbWltZTpwYXJ0IGVsZW1lbnQgIgotICAgICAgICAgICAgKyAiaXMgaW4gdGhlIHdzZGw6aW5wdXQgb2YgdGhlIFwiIiArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpCi0gICAgICAgICAgICArICJcIiBiaW5kaW5nIG9wZXJhdGlvbi4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgbWltZTpwYXJ0IGNvbnRhaW5pbmcgbXVsdGlwbGUgbWltZTpjb250ZW50UwotICAgICAgICAvLyB3aGljaCByZWZlcmVuY2UgZGlmZmVyZW50IHdzZGw6cGFydFMsIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgIGlmIChjb250YWluc0ludmFsaWRNaW1lUGFydChvdXRwdXRNaW1lUGFydHMpKQotICAgICAgICB7Ci0gICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBpbnZhbGlkIG1pbWU6cGFydCBlbGVtZW50ICIKLSAgICAgICAgICAgICsgImlzIGluIHRoZSB3c2RsOm91dHB1dCBvZiB0aGUgXCIiICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkKLSAgICAgICAgICAgICsgIlwiIGJpbmRpbmcgb3BlcmF0aW9uLiIpOwotICAgICAgICB9Ci0KLSAgICAgIH0KLSAgICAgIC8vIElmIHRoZSBiaW5kaW5nIGRvZXMgbm90IGNvbnRhaW4gYSBtaW1lOnBhcnQgd2l0aCBtdWx0aXBsZQotICAgICAgLy8gbWltZTpjb250ZW50IGVsZW1lbnRzLCB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoIW11bHRpcGxlQ29udGVudEZvdW5kKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgYWZlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGVzIG1pbWU6cGFydCBlbGVtZW50cy4KLSAgICogQHBhcmFtIG1pbWVQYXJ0cyBhIGxpc3Qgb2YgbWltZTpwYXJ0IGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIHRydWUgaWYgbXVsdGlwbGUgbWltZTpjb250ZW50UyBvZiBhIG1pbWU6cGFydAotICAgKiByZWZlcmVuY2UgZGlmZmVyZW50IHdzZGw6cGFydFMsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBjb250YWluc0ludmFsaWRNaW1lUGFydChMaXN0IG1pbWVQYXJ0cykKLSAgewotICAgIC8vIEdvaW5nIHRocm91Z2ggYSBsaXN0IG9mIG1pbWU6cGFydCBlbGVtZW50cwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWltZVBhcnRzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgIC8vIEEgdmFyaWFibGUgdGhhdCBpbmRpY2F0ZXMgdGhlIG1pbWU6cGFydCBjb250YWlucwotICAgICAgLy8gYXQgbGVhc3Qgb25lIG1pbWU6Y29udGVudCBlbGVtZW50Ci0gICAgICBib29sZWFuIG1pbWVDb250ZW50Rm91bmQgPSBmYWxzZTsKLSAgICAgIFN0cmluZyBtaW1lQ29udGVudFBhcnQgPSBudWxsOwotCi0gICAgICAvLyBHb2luZyB0aHJvdWdoIG1pbWU6cGFydCBleHRlbnNpYmlsaXR5IGVsZW1lbnRzCi0gICAgICBMaXN0IGV4dEVsZW1zID0gKChNSU1FUGFydCkgbWltZVBhcnRzLmdldChpKSkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IGV4dEVsZW1zLnNpemUoKTsgaisrKQotICAgICAgewotICAgICAgICAvLyBJZiBhbiBleHRlbnNpYmlsaXR5IGVsZW1lbnQgaXMgbWltZTpjb250ZW50Ci0gICAgICAgIGlmICgoKEV4dGVuc2liaWxpdHlFbGVtZW50KWV4dEVsZW1zLmdldChqKSkKLSAgICAgICAgICAuZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NETF9NSU1FX0NPTlRFTlQpKQotICAgICAgICB7Ci0gICAgICAgICAgTUlNRUNvbnRlbnQgbWltZUNvbnRlbnQgID0gKE1JTUVDb250ZW50KSBleHRFbGVtcy5nZXQoaik7Ci0gICAgICAgICAgLy8gSWYgYSBtaW1lOmNvbnRlbnQgZWxlbWVudCB3YXMgYWxyZWFkeSBmb3VuZCBpbiB0aGlzIG1pbWU6cGFydAotICAgICAgICAgIGlmIChtaW1lQ29udGVudEZvdW5kKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG11bHRpcGxlQ29udGVudEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIC8vIElmIGEgbWltZTpjb250ZW50IHJlZmVyZW5jZXMgb3RoZXIgd3NkbDpwYXJ0IHRoYW4gdGhlCi0gICAgICAgICAgICAvLyBwcmV2aW91cyBtaW1lOmNvbnRlbnQgZG8sIHJldHVybiB0cnVlCi0gICAgICAgICAgICBpZiAobWltZUNvbnRlbnQuZ2V0UGFydCgpID09IG51bGwKLSAgICAgICAgICAgICAgfHwgIW1pbWVDb250ZW50LmdldFBhcnQoKS5lcXVhbHMobWltZUNvbnRlbnRQYXJ0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IG1pbWU6Y29udGVudCBlbGVtZW50IG9mIG1pbWU6cGFydAotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBtaW1lQ29udGVudEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIG1pbWVDb250ZW50UGFydCA9IG1pbWVDb250ZW50LmdldFBhcnQoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gVGhlcmUgYXJlIG5vIGludmFsaWQgbWltZTpwYXJ0IGVsZW1lbnRzLCByZXR1cm4gZmFsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogQ29sbGVjdHMgYWxsIG1pbWU6cGFydCBlbGVtZW50cy4KLSAgICogQHBhcmFtIGV4dEVsZW1zIGEgbGlzdCBvZiBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIHRoYXQgY2FuIGNvbnRhaW4gbWltZTpwYXJ0IGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIHRoZSBsaXN0IG9mIG1pbWU6cGFydCBlbGVtZW50cyBmb3VuZC4KLSAgICovCi0gIHByaXZhdGUgTGlzdCBnZXRNaW1lUGFydHMoTGlzdCBleHRFbGVtcykKLSAgewotICAgIExpc3QgbWltZVBhcnRzID0gbmV3IEFycmF5TGlzdCgpOwotCi0gICAgaWYgKGV4dEVsZW1zICE9IG51bGwpCi0gICAgewotICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0RWxlbXMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW0gPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1zLmdldChpKTsKLSAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgbWltZTptdWx0aXBhcnRSZWxhdGVkCi0gICAgICAgIGlmIChleHRFbGVtLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKFdTRExfTUlNRV9NVUxUSVBBUlQpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gR2V0dGluZyB0aGUgbWltZTpwYXJ0IGVsZW1lbnRzIG9mIHRoZSBtaW1lOm11bHRpcGFydFJlbGF0ZWQKLSAgICAgICAgICBMaXN0IG1QYXJ0cyA9ICgoTUlNRU11bHRpcGFydFJlbGF0ZWQpIGV4dEVsZW0pLmdldE1JTUVQYXJ0cygpOwotICAgICAgICAgIG1pbWVQYXJ0cy5hZGRBbGwobVBhcnRzKTsKLSAgICAgICAgICAvLyBHb2luZyB0aHJvdWdoIGFsbCB0aGUgbWltZTpwYXJ0IGVsZW1lbnRzCi0gICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtUGFydHMuc2l6ZSgpOyBqKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgTGlzdCBlbGVtcyA9IGdldE1pbWVQYXJ0cygKLSAgICAgICAgICAgICAgICAoKE1JTUVQYXJ0KSBtUGFydHMuZ2V0KGopKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgZWxlbWVudHMgdG8gdGhlIGxpc3QgYmVpbmcgcmV0dXJuZWQKLSAgICAgICAgICAgICAgbWltZVBhcnRzLmFkZEFsbChlbGVtcyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBtaW1lUGFydHM7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTEwLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTEwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MmQzMzUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkxMC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotLyoqCi0gKiBBUDI5MTAKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkEgbWltZTpjb250ZW50IGluIGEgREVTQ1JJUFRJT04gcmVmZXJlbmNlcwotICogYSB3c2RsOnBhcnQgdGhhdCBpcyBkZWZpbmVkIHVzaW5nIGVpdGhlciB0aGUgdHlwZSBhdHRyaWJ1dGUKLSAqIG9yIHRoZSBlbGVtZW50IGF0dHJpYnV0ZS48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAyOTEwIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQVAyOTEwKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIEEgdmFyaWFibGUgdGhhdCBpbmRpY2F0ZXMgYSBiaW5kaW5nIGNvbnRhaW5zIGF0IGxlYXN0IG9uZQotICAgICAgLy8gbWltZTpjb250ZW50IGVsZW1lbnQKLSAgICAgIGJvb2xlYW4gbWltZUNvbnRlbnRzRm91bmQgPSBmYWxzZTsKLQotICAgICAgLy8gR2V0dGluZyBhIHdzZGw6YmluZGluZwotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAgIC8vIEdldHRpbmcgaXRzIHdzZGw6b3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBMaXN0IG9wcyA9IGJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbnMoKTsKLQotICAgICAgLy8gR29pbmcgdGhyb3VnaCB0aGUgb3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9wcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24pIG9wcy5nZXQoaSk7Ci0KLSAgICAgICAgLy8gR2V0dGluZyB3c2RsOmlucHV0IGFuZCB3c2RsOm91dHB1dCBlbGVtZW50cyBvZiBhbiBvcGVyYXRpb24KLSAgICAgICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCk7Ci0gICAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpOwotCi0gICAgICAgIC8vIENvbGxlY3RpbmcgYWxsIHRoZSBtaW1lOmNvbnRlbnQgZWxlbWVudHMgZnJvbSB3c2RsOmlucHV0IGFuZCB3c2RsOm91dHB1dAotICAgICAgICBMaXN0IGlucHV0TWltZUNvbnRlbnRzID0gZ2V0TWltZUNvbnRlbnRFbGVtZW50cygKLSAgICAgICAgICBiaW5kaW5nSW5wdXQgPT0gbnVsbCA/IG51bGwgOiBiaW5kaW5nSW5wdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotICAgICAgICBMaXN0IG91dHB1dE1pbWVDb250ZW50cyA9IGdldE1pbWVDb250ZW50RWxlbWVudHMoCi0gICAgICAgICAgYmluZGluZ091dHB1dCA9PSBudWxsID8gbnVsbCA6IGJpbmRpbmdPdXRwdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotCi0gICAgICAgIC8vIElmIHRoZSB3c2RsOmlucHV0IGNvbnRhaW5zIG1pbWU6Y29udGVudCBlbGVtZW50cwotICAgICAgICBpZiAoIWlucHV0TWltZUNvbnRlbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIG1pbWVDb250ZW50c0ZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICBJbnB1dCBwb3J0VHlwZUlucHV0ID0gYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRJbnB1dCgpOwotICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHRoZSBjb3JyZXNwb25kaW5nIHdzZGw6aW5wdXQgaW4gd3NkbDpwb3J0VHlwZQotICAgICAgICAgIC8vIG9yIHRoZSB3c2RsOmlucHV0IGRvZXMgbm90IHNwZWNpZnkgYSBtZXNzYWdlIGF0dHJpYnV0ZSwKLSAgICAgICAgICAvLyB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmIChwb3J0VHlwZUlucHV0ID09IG51bGwgfHwgcG9ydFR5cGVJbnB1dC5nZXRNZXNzYWdlKCkgPT0gbnVsbCkKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKAotICAgICAgICAgICAgICAiVGhlIGNvcnJlc3Bvbmdpbmcgb3BlcmF0aW9uIGluIHRoZSB3c2RsOnBvcnRUeXBlIGZvciB0aGUgXCIiCi0gICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAiXCIgYmluZGluZyBvcGVyYXRpb24gaXMgaW52YWxpZC4iKTsKLSAgICAgICAgICAvLyBHZXR0aW5nIGEgbWltZTpjb250ZW50IHJlZmVyZW5jaW5nIGFuIGludmFsaWQgd3NkbDpwYXJ0IAotICAgICAgICAgIFN0cmluZyBwYXJ0ID0gZ2V0SW52YWxpZE1pbWVDb250ZW50UGFydCgKLSAgICAgICAgICAgIGlucHV0TWltZUNvbnRlbnRzLCBwb3J0VHlwZUlucHV0LmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgLy8gSWYgc3VjaCBwYXJ0IGlzIGZvdW5kLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmIChwYXJ0ICE9IG51bGwpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigicGFydD1cIiIgKyBwYXJ0ICsKLSAgICAgICAgICAgICAgIlwiLCB0aGUgaW5wdXQgb2YgdGhlIGJpbmRpbmcgb3BlcmF0aW9uIFwiIgotICAgICAgICAgICAgICArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpICsgIlwiIik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgd3NkbDpvdXRwdXQgY29udGFpbnMgbWltZTpjb250ZW50IGVsZW1lbnRzCi0gICAgICAgIGlmICghb3V0cHV0TWltZUNvbnRlbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIG1pbWVDb250ZW50c0ZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICBPdXRwdXQgcG9ydFR5cGVPdXRwdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldE91dHB1dCgpOwotICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHRoZSBjb3JyZXNwb25kaW5nIHdzZGw6b3V0cHV0IGluIHdzZGw6cG9ydFR5cGUKLSAgICAgICAgICAvLyBvciB0aGUgd3NkbDpvdXRwdXQgZG9lcyBub3Qgc3BlY2lmeSBhIG1lc3NhZ2UgYXR0cmlidXRlLAotICAgICAgICAgIC8vIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgICAgaWYgKHBvcnRUeXBlT3V0cHV0ID09IG51bGwgfHwgcG9ydFR5cGVPdXRwdXQuZ2V0TWVzc2FnZSgpID09IG51bGwpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgIlRoZSBjb3JyZXNwb25naW5nIG9wZXJhdGlvbiBpbiB0aGUgd3NkbDpwb3J0VHlwZSBmb3IgdGhlIFwiIgotICAgICAgICAgICAgICArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpICsgIlwiIGJpbmRpbmcgb3BlcmF0aW9uIGlzIGludmFsaWQuIik7Ci0gICAgICAgICAgLy8gR2V0dGluZyBhIG1pbWU6Y29udGVudCByZWZlcmVuY2luZyBhbiBpbnZhbGlkIHdzZGw6cGFydAotICAgICAgICAgIFN0cmluZyBwYXJ0ID0gZ2V0SW52YWxpZE1pbWVDb250ZW50UGFydCgKLSAgICAgICAgICAgICAgb3V0cHV0TWltZUNvbnRlbnRzLCBwb3J0VHlwZU91dHB1dC5nZXRNZXNzYWdlKCkpOwotICAgICAgICAgIC8vIElmIHN1Y2ggcGFydCBpcyBmb3VuZCwgdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAocGFydCAhPSBudWxsKQotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oInBhcnQ9XCIiICsgcGFydCArCi0gICAgICAgICAgICAgICAgIlwiLCB0aGUgb3V0cHV0IG9mIHRoZSBiaW5kaW5nIG9wZXJhdGlvbiBcIiIKLSAgICAgICAgICAgICAgICArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpICsgIlwiIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLy8gSWYgdGhlIGJpbmRpbmcgZG9lcyBub3QgY29udGFpbiBtaW1lOmNvbnRlbnQgZWxlbWVudHMsCi0gICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoIW1pbWVDb250ZW50c0ZvdW5kKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgYWZlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGVzIGV2ZXJ5IG1pbWU6Y29udGVudCBlbGVtZW50LiBJZiBpdCByZWZlcmVuY2VzIGEgd3NkbDpwYXJ0IHRoYXQKLSAgICogaXMgZGVmaW5lZCB1c2luZyBuZWl0aGVyIHRoZSB0eXBlIGF0dHJpYnV0ZSBub3IgdGhlIGVsZW1lbnQgYXR0cmlidXRlCi0gICAqIG9yIHVzaW5nIHRoZW0gdG9nZXRoZXIsIGl0IGlzIGludmFsaWQuCi0gICAqIEBwYXJhbSBtaW1lQ29udGVudHMgYSBsaXN0IG9mIG1pbWU6Y29udGVudCBlbGVtZW50cy4KLSAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDptZXNzYWdlIGVsZW1lbnQgZm9yIG1pbWU6Y29udGVudFMuCi0gICAqIEByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgcGFydCBhdHRyaWJ1dGUgb2YgYW4gaW52YWxpZCBtaW1lOmNvbnRlbnQKLSAgICogb3IgbnVsbCBpZiBhbGwgdGhlIG1pbWU6Y29udGVudCBlbGVtZW50cyBhcmUgdmFsaWQuCi0gICAqLwotICBwcml2YXRlIFN0cmluZyBnZXRJbnZhbGlkTWltZUNvbnRlbnRQYXJ0KExpc3QgbWltZUNvbnRlbnRzLCBNZXNzYWdlIG1lc3NhZ2UpIHsKLSAgICAvLyBHb2luZyB0aHJvdWcgYWxsIHRoZSBtaW1lOmNvbnRlbnQgZWxlbWVudHMKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1pbWVDb250ZW50cy5zaXplKCk7IGkrKykKLSAgICB7Ci0gICAgICAvLyBHZXR0aW5nIGEgdmFsdWUgb2YgdGhlIHBhcnQgYXR0cmlidXRlIGZyb20gYSBtaW1lOmVsZW1lbnQKLSAgICAgIFN0cmluZyBwYXJ0TmFtZSA9ICgoTUlNRUNvbnRlbnQpIG1pbWVDb250ZW50cy5nZXQoaSkpLmdldFBhcnQoKTsKLSAgICAgIC8vIEdldHRpbmcgdGhlIGNvcnJlc3Bvbmdpbmcgd3NkbDpwYXJ0Ci0gICAgICBQYXJ0IHBhcnQgPSBtZXNzYWdlLmdldFBhcnQocGFydE5hbWUpOwotICAgICAgLy8gaWYgaXQgaXMgZGVmaW5lZCBhbmQgdXNlIG5laXRoZXIgdGhlIHR5cGUgYXR0cmlidXRlCi0gICAgICAvLyBub3IgdGhlIGVsZW1lbnQgYXR0cmlidXRlIG9yIHVzZSB0aGVtIHRvZ2V0aGVyLCByZXR1cm4gcGFydCB2YWx1ZQotICAgICAgaWYgKHBhcnQgIT0gbnVsbAotICAgICAgICAmJiAoKHBhcnQuZ2V0VHlwZU5hbWUoKSA9PSBudWxsICYmIHBhcnQuZ2V0RWxlbWVudE5hbWUoKSA9PSBudWxsKQotICAgICAgICB8fCAocGFydC5nZXRUeXBlTmFtZSgpICE9IG51bGwgJiYgcGFydC5nZXRFbGVtZW50TmFtZSgpICE9IG51bGwpKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnROYW1lOwotICAgICAgfQotICAgIH0KLSAgICAvLyBSZXR1cm4gbnVsbCBpZiBubyBvbmUgcGFydCBpcyBmb3VuZAotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbGxlY3RzIGFsbCBtaW1lOmNvbnRlbnQgZWxlbWVudHMuCi0gICAqIEBwYXJhbSBleHRFbGVtcyBhIGxpc3Qgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyB0aGF0IGNhbiBjb250YWluIG1pbWU6Y29udGVudFMuCi0gICAqIEByZXR1cm4gdGhlIGxpc3Qgb2YgbWltZTpjb250ZW50IGVsZW1lbnRzIGZvdW5kLgotICAgKi8KLSAgcHJpdmF0ZSBMaXN0IGdldE1pbWVDb250ZW50RWxlbWVudHMoTGlzdCBleHRFbGVtcykKLSAgewotICAgIExpc3QgbWltZUNvbnRlbnRFbGVtZW50cyA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgIGlmIChleHRFbGVtcyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSBleHRlbnNpYmlsaXR5IGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dEVsZW1zLnNpemUoKTsgaSsrKQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtcy5nZXQoaSk7Ci0gICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZAotICAgICAgICBpZiAoZXh0RWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfTVVMVElQQVJUKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldHRpbmcgdGhlIG1pbWU6cGFydCBlbGVtZW50cyBvZiB0aGUgbWltZTptdWx0aXBhcnRSZWxhdGVkCi0gICAgICAgICAgTGlzdCBtaW1lUGFydHMgPSAoKE1JTUVNdWx0aXBhcnRSZWxhdGVkKSBleHRFbGVtKS5nZXRNSU1FUGFydHMoKTsKLSAgICAgICAgICAvLyBHb2luZyB0aHJvdWdoIGFsbCB0aGUgbWltZTpwYXJ0IGVsZW1lbnRzCi0gICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lUGFydHMuc2l6ZSgpOyBqKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gQ29sbGVjdGluZyBhbGwgdGhlIG1pbWU6Y29udGVudCBlbGVtZW50cyBvZiB0aGlzIG1pbWU6cGFydAotICAgICAgICAgICAgTGlzdCBlbGVtcyA9IGdldE1pbWVDb250ZW50RWxlbWVudHMoCi0gICAgICAgICAgICAgICgoTUlNRVBhcnQpIG1pbWVQYXJ0cy5nZXQoaikpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgZWxlbWVudHMgdG8gdGhlIGxpc3QgYmVpbmcgcmV0dXJuZWQKLSAgICAgICAgICAgIG1pbWVDb250ZW50RWxlbWVudHMuYWRkQWxsKGVsZW1zKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRWxzZSBpZiB0aGUgZWxlbWVudCBpcyBtaW1lOmNvbnRlbnQKLSAgICAgICAgZWxzZSBpZiAoZXh0RWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfQ09OVEVOVCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBBZGRpbmcgdGhlIGVsZW1lbnQgdG8gdGhlIGxpc3QgYmVpbmcgcmV0dXJuZWQKLSAgICAgICAgICBtaW1lQ29udGVudEVsZW1lbnRzLmFkZChleHRFbGVtKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBtaW1lQ29udGVudEVsZW1lbnRzOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkxMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkxMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDMzODNiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5MTEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotLyoqCi0gKiBBUDI5MTEKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMgaW4gd3NkbDppbnB1dCBhbmQgd3NkbDpvdXB1dCBlbGVtZW50cwotICogb2Ygb3BlcmF0aW9ucyBpbiBhIHdzZGw6YmluZGluZywgY29udGFpbiBleGFjdGx5IG9uZSBtaW1lOnBhcnQgY2hpbGQgZWxlbWVudCB0aGF0IGNvbnRhaW5zCi0gKiBhIHNvYXBiaW5kOmJvZHkgY2hpbGQgZWxlbWVudC48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAyOTExIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQVAyOTExKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIEEgdmFyaWFibGUgdGhhdCBpbmRpY2F0ZXMgYSBiaW5kaW5nIGNvbnRhaW5zIGF0IGxlYXN0IG9uZQotICAgICAgLy8gbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnQKLSAgICAgIGJvb2xlYW4gbXVsdGlwYXJ0c0ZvdW5kID0gZmFsc2U7Ci0KLSAgICAgIC8vIEdldHRpbmcgYSB3c2RsOmJpbmRpbmcKLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgICAvLyBHZXR0aW5nIGl0cyB3c2RsOm9wZXJhdGlvbiBlbGVtZW50cwotICAgICAgTGlzdCBvcHMgPSBiaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCk7Ci0KLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIG9wZXJhdGlvbiBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcHMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKSBvcHMuZ2V0KGkpOwotCi0gICAgICAgIC8vIEdldHRpbmcgd3NkbDppbnB1dCBhbmQgd3NkbDpvdXRwdXQgZWxlbWVudHMgb2YgYW4gb3BlcmF0aW9uCi0gICAgICAgIEJpbmRpbmdJbnB1dCBiaW5kaW5nSW5wdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpOwotICAgICAgICBCaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdPdXRwdXQoKTsKLQotICAgICAgICAvLyBDb2xsZWN0aW5nIGFsbCB0aGUgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnRzIGZyb20gd3NkbDppbnB1dCBhbmQgd3NkbDpvdXRwdXQKLSAgICAgICAgTGlzdCBpbnB1dE11bHRpcGFydHMgPSBnZXRNaW1lTXVsdGlwYXJ0RWxlbWVudHMoCi0gICAgICAgICAgYmluZGluZ0lucHV0ID09IG51bGwgPyBudWxsIDogYmluZGluZ0lucHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICAgICAgTGlzdCBvdXRwdXRNdWx0aXBhcnRzID0gZ2V0TWltZU11bHRpcGFydEVsZW1lbnRzKAotICAgICAgICAgIGJpbmRpbmdPdXRwdXQgPT0gbnVsbCA/IG51bGwgOiBiaW5kaW5nT3V0cHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLQotICAgICAgICAvLyBJZiB0aGUgd3NkbDppbnB1dCBjb250YWlucyBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMKLSAgICAgICAgaWYgKCFpbnB1dE11bHRpcGFydHMuaXNFbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgbXVsdGlwYXJ0c0ZvdW5kID0gdHJ1ZTsKLQotICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vdCBleGFjdGx5IG9uZSBtaW1lOnBhcnQgZWxlbWVudCBjb250YWluaW5nCi0gICAgICAgICAgLy8gYSBzb2FwYmluZDpib2R5IGNoaWxkLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmICghY29udGFpbnNPbmVTb2FwQm9keShpbnB1dE11bHRpcGFydHMpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgaW52YWxpZCAiCi0gICAgICAgICAgICAgICAgKyAibWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnQgaXMgaW4gdGhlIHdzZGw6aW5wdXQgb2YgdGhlIFwiIgotICAgICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAiXCIgYmluZGluZyBvcGVyYXRpb24uIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIHdzZGw6b3V0cHV0IGNvbnRhaW5zIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50cwotICAgICAgICBpZiAoIW91dHB1dE11bHRpcGFydHMuaXNFbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgbXVsdGlwYXJ0c0ZvdW5kID0gdHJ1ZTsKLQotICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vdCBleGFjdGx5IG9uZSBtaW1lOnBhcnQgZWxlbWVudCBjb250YWluaW5nCi0gICAgICAgICAgLy8gYSBzb2FwYmluZDpib2R5IGNoaWxkLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmICghY29udGFpbnNPbmVTb2FwQm9keShvdXRwdXRNdWx0aXBhcnRzKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIGludmFsaWQgIgotICAgICAgICAgICAgICAgICsgIm1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50IGlzIGluIHRoZSB3c2RsOm91dHB1dCBvZiB0aGUgXCIiCi0gICAgICAgICAgICAgICAgKyBiaW5kaW5nT3BlcmF0aW9uLmdldE5hbWUoKSArICJcIiBiaW5kaW5nIG9wZXJhdGlvbi4iKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgfQotICAgICAgLy8gSWYgdGhlIGJpbmRpbmcgY29udGFpbnMgbm8gb25lIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50LAotICAgICAgLy8gdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKCFtdWx0aXBhcnRzRm91bmQpCi0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uIGFuYWUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gYWZlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICBhZmUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBMb29rcyBmb3IgbWltZTpwYXJ0IGVsZW1lbnRzIGNvbnRhaW5pbmcgYSBzb2FwOmJvZHkgY2hpbGQKLSAgICogZm9yIGVhY2ggb2YgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBtdWx0aXBhcnRzIGEgbGlzdCBvZiBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBleGFjdGx5IG9uZSBtaW1lOnBhcnQgY29udGFpbmluZyBhIHNvYXA6Ym9keQotICAgKiBjaGlsZCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGNvbnRhaW5zT25lU29hcEJvZHkoTGlzdCBtdWx0aXBhcnRzKQotICB7Ci0gICAgLy8gQSB2YXJpYWJsZSBpbmRpY2F0ZXMgdGhhdCBhIHNvYXA6Ym9keSBlbGVtZW50IGlzIGZvdW5kCi0gICAgYm9vbGVhbiBzb2FwQm9keUZvdW5kID0gZmFsc2U7Ci0KLSAgICAvLyBHb2luZyB0aHJvdWdoIGEgbGlzdCBvZiBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG11bHRpcGFydHMuc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgLy8gR2V0dGluZyBhIGxpc3Qgb2YgbWltZTpwYXJ0IGVsZW1lbnRzCi0gICAgICBMaXN0IG1pbWVQYXJ0cyA9Ci0gICAgICAgICgoTUlNRU11bHRpcGFydFJlbGF0ZWQpIG11bHRpcGFydHMuZ2V0KGkpKS5nZXRNSU1FUGFydHMoKTsKLQotICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIG1pbWU6cGFydCBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lUGFydHMuc2l6ZSgpOyBqKyspCi0gICAgICB7Ci0gICAgICAgIC8vIEdldHRpbmcgYSBsaXN0IG9mIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgb2YgYSBtaW1lOnBhcnQKLSAgICAgICAgTGlzdCBleHRFbGVtcyA9Ci0gICAgICAgICAgKChNSU1FUGFydCkgbWltZVBhcnRzLmdldChqKSkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBleHRFbGVtcy5zaXplKCk7IGsrKykKLSAgICAgICAgewotICAgICAgICAgIC8vIElmIGFuIGV4dGVuc2liaWxpdHkgZWxlbWVudCBpcyBhIHNvYXA6Ym9keQotICAgICAgICAgIGlmICgoKEV4dGVuc2liaWxpdHlFbGVtZW50KWV4dEVsZW1zLmdldChrKSkKLSAgICAgICAgICAgIC5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX1NPQVBfQk9EWSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gSWYgYSBzb2FwOmJvZHkgZWxlbWVudCB3YXMgYWxyZWFkeSBmb3VuZCwKLSAgICAgICAgICAgIC8vIHJldHVybiB0cnVlCi0gICAgICAgICAgICBpZiAoc29hcEJvZHlGb3VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gZWxzZSBzZXQgdGhlIHZhcmlhYmxlIHRvIHRoZSB0cnVlIHZhbHVlCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHNvYXBCb2R5Rm91bmQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBzb2FwQm9keUZvdW5kOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbGxlY3RzIGFsbCBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMuCi0gICAqIEBwYXJhbSBleHRFbGVtcyBhIGxpc3Qgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyB0aGF0IGNhbiBjb250YWluIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50cy4KLSAgICogQHJldHVybiB0aGUgbGlzdCBvZiBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMgZm91bmQuCi0gICAqLwotICBwcml2YXRlIExpc3QgZ2V0TWltZU11bHRpcGFydEVsZW1lbnRzKExpc3QgZXh0RWxlbXMpCi0gIHsKLSAgICBMaXN0IG1pbWVNdWx0aXBhcnRFbGVtZW50cyA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgIGlmIChleHRFbGVtcyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSBleHRlbnNpYmlsaXR5IGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dEVsZW1zLnNpemUoKTsgaSsrKQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtcy5nZXQoaSk7Ci0gICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZAotICAgICAgICBpZiAoZXh0RWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfTVVMVElQQVJUKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEFkZGluZyB0aGUgZWxlbWVudCB0byB0aGUgbGlzdCBiZWluZyByZXR1cm5lZAotICAgICAgICAgIG1pbWVNdWx0aXBhcnRFbGVtZW50cy5hZGQoZXh0RWxlbSk7Ci0gICAgICAgICAgLy8gR2V0dGluZyB0aGUgbWltZTpwYXJ0IGVsZW1lbnRzIG9mIHRoZSBtaW1lOm11bHRpcGFydFJlbGF0ZWQKLSAgICAgICAgICBMaXN0IG1pbWVQYXJ0cyA9ICgoTUlNRU11bHRpcGFydFJlbGF0ZWQpIGV4dEVsZW0pLmdldE1JTUVQYXJ0cygpOwotICAgICAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSBtaW1lOnBhcnQgZWxlbWVudHMKLSAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1pbWVQYXJ0cy5zaXplKCk7IGorKykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb2xsZWN0aW5nIGFsbCB0aGUgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnRzIG9mIHRoaXMgbWltZTpwYXJ0Ci0gICAgICAgICAgICBMaXN0IGVsZW1zID0gZ2V0TWltZU11bHRpcGFydEVsZW1lbnRzKAotICAgICAgICAgICAgICAoKE1JTUVQYXJ0KSBtaW1lUGFydHMuZ2V0KGopKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgICAgICAgICAvLyBBZGRpbmcgdGhlIGVsZW1lbnRzIHRvIHRoZSBsaXN0IGJlaW5nIHJldHVybmVkCi0gICAgICAgICAgICBtaW1lTXVsdGlwYXJ0RWxlbWVudHMuYWRkQWxsKGVsZW1zKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbWltZU11bHRpcGFydEVsZW1lbnRzOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkzMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjkzMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTczNGY4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5MzAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLS8qKgotICogQVAyOTMwCi0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6YmluZGluZzwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5BIHdzZGw6ZmF1bHQgZWxlbWVudCBpbiBhIGRlc2NyaXB0aW9uIGRvZXMgbm90IGhhdmUKLSAqIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCBlbGVtZW50IGFzIGl0cyBjaGlsZCBlbGVtZW50LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBBUDI5MzAgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBBUDI5MzAoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gQSB2YXJpYWJsZSB0aGF0IGluZGljYXRlcyBhIGJpbmRpbmcgY29udGFpbnMgYXQgbGVhc3Qgb25lCi0gICAgICAvLyB3c2RsOmZhdWx0IGVsZW1lbnQKLSAgICAgIGJvb2xlYW4gZmF1bHRzRm91bmQgPSBmYWxzZTsKLQotICAgICAgLy8gR2V0dGluZyBhIHdzZGw6YmluZGluZwotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAgIC8vIEdldHRpbmcgaXRzIHdzZGw6b3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBMaXN0IG9wcyA9IGJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbnMoKTsKLQotICAgICAgLy8gR29pbmcgdGhyb3VnaCB0aGUgb3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9wcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24pIG9wcy5nZXQoaSk7Ci0KLSAgICAgICAgLy8gR2V0dGluZyB3c2RsOmZhdWx0IGVsZW1lbnRzCi0gICAgICAgIENvbGxlY3Rpb24gZmF1bHRzID0gYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nRmF1bHRzKCkudmFsdWVzKCk7Ci0gICAgICAgIGlmICghZmF1bHRzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIGZhdWx0c0ZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgbWltZTptdWx0aXBhcnRSZWxhdGVkIGVsZW1lbnQsCi0gICAgICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAoY29udGFpbnNNaW1lTXVsdGlwYXJ0cyhmYXVsdHMpKQotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBiaW5kaW5nIG9wZXJhdGlvbiBpcyBcIiIKLSAgICAgICAgICAgICAgKyBiaW5kaW5nT3BlcmF0aW9uLmdldE5hbWUoKSArICJcIi4iKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyBJZiB0aGUgYmluZGluZyBkb2VzIG5vdCBjb250YWluIHdzZGw6ZmF1bHQgZWxlbWVudHMsCi0gICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBhcHBsaWNhYmxlCi0gICAgICBpZiAoIWZhdWx0c0ZvdW5kKQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbigpOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgYWZlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCgKLSAgICAgIHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGVzIHdzZGw6ZmF1bHQgZWxlbWVudHMuCi0gICAqIEBwYXJhbSBmYXVsdHMgYSBjb2xsZWN0aW9uIG9mIHdzZGw6ZmF1bHQgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBhbnkgd3NkbDpmYXVsdCBoYXMgYSBtaW1lOm11bHRpcGFydFJlbGF0ZWQgY2hpbGQKLSAgICogZWxlbWVudCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGNvbnRhaW5zTWltZU11bHRpcGFydHMoQ29sbGVjdGlvbiBmYXVsdHMpCi0gIHsKLSAgICAvLyBHb2luZyB0aHJvdWdoIGFsbCB0aGUgd3NkbDpmYXVsdFMKLSAgICBJdGVyYXRvciBpID0gZmF1bHRzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGkuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIC8vIEdldHRpbmcgd3NkbDpmYXVsdCdzIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICAgIExpc3QgZXh0RWxlbXMgPSAoKEJpbmRpbmdGYXVsdCkgaS5uZXh0KCkpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBleHRFbGVtcy5zaXplKCk7IGorKykKLSAgICAgIHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudCwgcmV0dXJuIHRydWUKLSAgICAgICAgaWYgKCgoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZXh0RWxlbXMuZ2V0KGopKQotICAgICAgICAgIC5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfTVVMVElQQVJUKSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIFRoZXJlIGFyZSBubyBtaW1lOm11bHRpcGFydFJlbGF0ZWQgZWxlbWVudHMsIHJldHVybiBmYWxzZQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5NDAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5NDAuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5MmExZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTQwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLklucHV0OwotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLWltcG9ydCBqYXZheC53c2RsLk91dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMuaW1wbC5kdi5YU1NpbXBsZVR5cGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNBdHRyaWJ1dGVVc2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNDb21wbGV4VHlwZURlZmluaXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNFbGVtZW50RGVjbGFyYXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNNb2RlbDsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU01vZGVsR3JvdXA7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNPYmplY3RMaXN0OwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhzLlhTUGFydGljbGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNUZXJtOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhzLlhTVHlwZURlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotLyoqCi0gKiBBUDI5NDAKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkluIGEgZGVzY3JpcHRpb24sIGEgd3NkbDpwYXJ0IGRlZmluZWQgd2l0aCB0aGUKLSAqIHJlZjpzd2FSZWYgc2NoZW1hIHR5cGUgaXMgYm91bmQgdG8gYSBzb2FwYmluZDpib2R5LCBvciBhIHNvYXBiaW5kOmhlYWRlcgotICogaW4gYSBNSU1FIGJpbmRpbmcuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMjk0MCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMjk0MChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBBIHZhcmlhYmxlIHRoYXQgaW5kaWNhdGVzIHdzZGw6cG9ydFR5cGUgcmVmZXJlbmNlcyBhdCBsZWFzdCBvbmUKLSAgICAgIC8vIHdzZGw6cGFydCBkZWZpbmVkIHdpdGggdGhlIHJlZjpzd2FSZWYgc2NoZW1hIHR5cGUKLSAgICAgIGJvb2xlYW4gc3dhUmVmRm91bmQgPSBmYWxzZTsKLQotICAgICAgLy8gR2V0dGluZyBhIHdzZGw6YmluZGluZwotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAgIC8vIEdldHRpbmcgaXRzIHdzZGw6b3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBMaXN0IG9wcyA9IGJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbnMoKTsKLQotICAgICAgLy8gR29pbmcgdGhyb3VnaCB0aGUgb3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9wcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24pIG9wcy5nZXQoaSk7Ci0KLSAgICAgICAgLy8gR2V0dGluZyB3c2RsOmlucHV0IGFuZCB3c2RsOm91dHB1dCBlbGVtZW50cyBvZiBhbiBvcGVyYXRpb24KLSAgICAgICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCk7Ci0gICAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpOwotCi0gICAgICAgIElucHV0IHBvcnRUeXBlSW5wdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldElucHV0KCk7Ci0gICAgICAgIE91dHB1dCBwb3J0VHlwZU91dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkuZ2V0T3V0cHV0KCk7Ci0gICAgICAgIC8vIElmIHRoZSBjb3JyZXNwb25kaW5nIHdzZGw6aW5wdXQgZXhpc3RzIGluIHdzZGw6cG9ydFR5cGUKLSAgICAgICAgLy8gYW5kIGluY2x1ZGVzIHRoZSBtZXNzYWdlIGF0dHJpYnV0ZQotICAgICAgICBpZiAocG9ydFR5cGVJbnB1dCAhPSBudWxsICYmIHBvcnRUeXBlSW5wdXQuZ2V0TWVzc2FnZSgpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBDb2xsZWN0aW5nIGFsbCB0aGUgbWVzc2FnZSdzIHBhcnRzIGRlZmluZWQgd2l0aCByZWY6c3dhUmVmCi0gICAgICAgICAgTGlzdCBzd2FSZWZQYXJ0cyA9IGdldFN3YVJlZlBhcnRzKHBvcnRUeXBlSW5wdXQuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICBpZiAoIXN3YVJlZlBhcnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBzd2FSZWZGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAvLyBHZXR0aW5nIGEgd3NkbDpwYXJ0IHRoYXQgaXMgdW5ib3VuZAotICAgICAgICAgICAgU3RyaW5nIHVuYm91bmRQYXJ0ID0gZ2V0VW5ib3VuZFBhcnQoc3dhUmVmUGFydHMsCi0gICAgICAgICAgICAgIHBvcnRUeXBlSW5wdXQuZ2V0TWVzc2FnZSgpLmdldFFOYW1lKCksCi0gICAgICAgICAgICAgIGJpbmRpbmdJbnB1dCA9PSBudWxsID8gbnVsbCA6IGJpbmRpbmdJbnB1dC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgICAgICAgICAvLyBJZiBzdWNoIHdzZGw6cGFydCBleGlzdHMsIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICAgIGlmICh1bmJvdW5kUGFydCAhPSBudWxsKQotICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIHBhcnQgXCIiICsgdW5ib3VuZFBhcnQKLSAgICAgICAgICAgICAgICArICJcIiBpcyBub3QgYm91bmQgcHJvcGVybHkgdG8gdGhlIHdzZGw6aW5wdXQgb2YgdGhlIFwiIgotICAgICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAiXCIgYmluZGluZyBvcGVyYXRpb24uIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDpvdXRwdXQgZXhpc3RzIGluIHdzZGw6cG9ydFR5cGUKLSAgICAgICAgLy8gYW5kIGluY2x1ZGVzIHRoZSBtZXNzYWdlIGF0dHJpYnV0ZQotICAgICAgICBpZiAocG9ydFR5cGVPdXRwdXQgIT0gbnVsbCAmJiBwb3J0VHlwZU91dHB1dC5nZXRNZXNzYWdlKCkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIC8vIENvbGxlY3RpbmcgYWxsIHRoZSBtZXNzYWdlJ3MgcGFydHMgZGVmaW5lZCB3aXRoIHJlZjpzd2FSZWYKLSAgICAgICAgICBMaXN0IHN3YVJlZlBhcnRzID0gZ2V0U3dhUmVmUGFydHMocG9ydFR5cGVPdXRwdXQuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICBpZiAoIXN3YVJlZlBhcnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBzd2FSZWZGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAvLyBHZXR0aW5nIGEgd3NkbDpwYXJ0IHRoYXQgaXMgdW5ib3VuZAotICAgICAgICAgICAgU3RyaW5nIHVuYm91bmRQYXJ0ID0gZ2V0VW5ib3VuZFBhcnQoc3dhUmVmUGFydHMsCi0gICAgICAgICAgICAgIHBvcnRUeXBlT3V0cHV0LmdldE1lc3NhZ2UoKS5nZXRRTmFtZSgpLAotICAgICAgICAgICAgICBiaW5kaW5nT3V0cHV0ID09IG51bGwgPyBudWxsIDogYmluZGluZ091dHB1dC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgICAgICAgICAvLyBJZiBzdWNoIHdzZGw6cGFydCBleGlzdHMsIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICAgIGlmICh1bmJvdW5kUGFydCAhPSBudWxsKQotICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiVGhlIHBhcnQgXCIiICsgdW5ib3VuZFBhcnQKLSAgICAgICAgICAgICAgICArICJcIiBpcyBub3QgYm91bmQgcHJvcGVybHkgdG8gdGhlIHdzZGw6aW5wdXQgb2YgdGhlIFwiIgotICAgICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAiXCIgYmluZGluZyBvcGVyYXRpb24uIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHdzZGw6cGFydFMgZGVmaW5lZCB3aXRoIHRoZSByZWY6c3dhUmVmCi0gICAgICAvLyBzY2hlbWEgdHlwZSwgdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKCFzd2FSZWZGb3VuZCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gYW5hZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgLy8gVGhlIGFzc2VydGlvbiBpcyAicmVjb21tZW5kZWQiLCB1c2luZyB0aGUgIndhcm5pbmciIHJlc3VsdAotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HOwotICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICBhZmUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIExvb2tzIGZvciBhIHdzZGw6cGFydCB0aGF0IGlzIG5vdCBib3VuZCB0byBlaXRoZXIgc29hcDpib2R5IG9yIHNvYXA6aGVhZGVyCi0gICAqIGluIGEgTUlNRSBiaW5kaW5nLgotICAgKiBAcGFyYW0gc3dhUmVmUGFydHMgYSBsaXN0IG9mIHdzZGw6cGFydCBuYW1lcyB0aGF0IGFyZSBkZWZpbmVkIHdpdGggdGhlCi0gICAqIHJlZjpzd2FSZWYgc2NoZW1hIHR5cGUuCi0gICAqIEBwYXJhbSBtZXNzYWdlTmFtZSB0aGUgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIHdzZGw6bWVzc2FnZSBiZWluZyB2YWxpZGF0ZWQuCi0gICAqIEBwYXJhbSBleHRFbGVtcyBhIGxpc3Qgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyBvZiBlaXRoZXIgd3NkbDppbnB1dCBvcgotICAgKiB3c2RsOm91dHB1dCBvZiB0aGUgY29ycmVzcG9uZGluZyBiaW5kaW5nIG9wZXJhdGlvbi4KLSAgICogQHJldHVybiBhIHdzZGw6cGFydCBuYW1lIHRoYXQgaXMgbm90IGJvdW5kIHByb3Blcmx5LCBvciBudWxsLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0VW5ib3VuZFBhcnQoTGlzdCBzd2FSZWZQYXJ0cywgUU5hbWUgbWVzc2FnZU5hbWUsIExpc3QgZXh0RWxlbXMpIHsKLSAgICAvLyBHb2luZyB0aHJvdWdoIHdzZGw6cGFydCBuYW1lcwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3dhUmVmUGFydHMuc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgU3RyaW5nIHBhcnQgPSAoU3RyaW5nKSBzd2FSZWZQYXJ0cy5nZXQoaSk7Ci0gICAgICBib29sZWFuIGJvdW5kUHJvcGVybHkgPSBmYWxzZTsKLSAgICAgIGlmIChleHRFbGVtcyAhPSBudWxsKQotICAgICAgewotICAgICAgICAvLyBHb2luZyB0aHJvdWdoIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBleHRFbGVtcy5zaXplKCkgJiYgIWJvdW5kUHJvcGVybHk7IGorKykKLSAgICAgICAgewotICAgICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW0gPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1zLmdldChqKTsKLSAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBtaW1lOm11bHRpcGFydFJlbGF0ZWQKLSAgICAgICAgICBpZiAoZXh0RWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfTVVMVElQQVJUKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBHZXR0aW5nIHRoZSBtaW1lOnBhcnQgZWxlbWVudHMgb2YgdGhlIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZAotICAgICAgICAgICAgTGlzdCBtaW1lUGFydHMgPSAoKE1JTUVNdWx0aXBhcnRSZWxhdGVkKSBleHRFbGVtKS5nZXRNSU1FUGFydHMoKTsKLSAgICAgICAgICAgIC8vIEdldHRpbmcgdGhlIGZpcnN0IG1pbWU6cGFydCBlbGVtZW50IHdoZXJlIHNvYXA6Ym9keQotICAgICAgICAgICAgLy8gYW5kIHNvYXA6aGVhZGVyIGNvdWxkIGFwcGVhcgotICAgICAgICAgICAgaWYgKG1pbWVQYXJ0cy5zaXplKCkgPiAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBMaXN0IGVsZW1zID0gKChNSU1FUGFydCkgbWltZVBhcnRzLmdldCgwKSkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICAgICAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSBNSU1FIHBhcnQncyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzCi0gICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgZWxlbXMuc2l6ZSgpOyBrICsrKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZWxlbSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCkgZWxlbXMuZ2V0KGspOwotICAgICAgICAgICAgICAgIC8vIElmIHRoYXQgaXMgYSBzb2FwOmJvZHkKLSAgICAgICAgICAgICAgICBpZiAoZWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX1NPQVBfQk9EWSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgTGlzdCBwdHMgPSAoKFNPQVBCb2R5KSBlbGVtKS5nZXRQYXJ0cygpOwotICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhcnQgaXMgYm91bmQgYnkgdGhpcyBlbGVtZW50Ci0gICAgICAgICAgICAgICAgICBpZiAocHRzID09IG51bGwgfHwgcHRzLmNvbnRhaW5zKHBhcnQpKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBib3VuZFByb3Blcmx5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIGVsc2UgaWYgdGhhdCBpcyBhIHNvYXA6aGVhZGVyCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX1NPQVBfSEVBREVSKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpZiAoZWxlbSBpbnN0YW5jZW9mIFNPQVBIZWFkZXIpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIFNPQVBIZWFkZXIgaGVhZGVyID0gKFNPQVBIZWFkZXIpIGVsZW07Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXJ0IGlzIGJvdW5kIGJ5IHRoaXMgZWxlbWVudAotICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZU5hbWUuZXF1YWxzKGhlYWRlci5nZXRNZXNzYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgJiYgaGVhZGVyLmdldFBhcnQoKSAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICAgJiYgaGVhZGVyLmdldFBhcnQoKS5lcXVhbHMocGFydCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBib3VuZFByb3Blcmx5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgLy8gV1NETDRKIDEuNCBkb2VzIG5vdCByZWNvZ25pemUgc29hcDpoZWFkZXIgZWxlbWVudHMgdGhhdAotICAgICAgICAgICAgICAgICAgLy8gYXJlIGVuY2xvc2VkIGluIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZCwgc28gdXNpbmcgYSB3b3JrYXJvdW5kCi0gICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEVsZW1lbnQgaGVhZGVyID0KLSAgICAgICAgICAgICAgICAgICAgICAoKFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCkgZWxlbSkuZ2V0RWxlbWVudCgpOwotICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIGhlYWRlciByZWZlcmVuY2VzIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2UKLSAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBwYXJ0IGlzIGJvdW5kIGJ5IHRoaXMgZWxlbWVudAotICAgICAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlc01lc3NhZ2UoaGVhZGVyLCBtZXNzYWdlTmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAmJiBoZWFkZXIuZ2V0QXR0cmlidXRlKCJwYXJ0IikuZXF1YWxzKHBhcnQpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgYm91bmRQcm9wZXJseSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vIElmIHRoaXMgcGFydCBpcyB1bmJvdW5kIHByb3Blcmx5LCByZXR1cm4gaXQKLSAgICAgIGlmICghYm91bmRQcm9wZXJseSkKLSAgICAgICAgcmV0dXJuIHBhcnQ7Ci0gICAgfQotICAgIC8vIEFsbCB0aGUgcGFydHMgYXJlIGJvdW5kIHByb3Blcmx5LCByZXR1cm4gbnVsbAotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFZhbGlkYXRlcyB3aGV0aGVyIGFuIGVsZW1lbnQgY29udGFpbnMgYSBtZXNzYWdlIGF0dHJpYnV0ZSB0aGF0IHJlZmVyZW5jZXMKLSAgICogYSBtZXNzYWdlIHRoYXQgaGF2ZSB0aGUgcXVhbGlmaWVkIG5hbWUgc3BlY2lmaWVkLgotICAgKiBAcGFyYW0gZWxlbSBhbiBlbGVtZW50IHRvIGJlIHZhbGlkYXRlZC4KLSAgICogQHBhcmFtIG1lc3NhZ2VOYW1lIHRoZSBxdWFsaWZpZWQgbmFtZSBvZiBhIG1lc3NhZ2UuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gcmVmZXJlbmNlc01lc3NhZ2UoRWxlbWVudCBlbGVtLCBRTmFtZSBtZXNzYWdlTmFtZSkKLSAgewotICAgIC8vIEdldHRpbmcgdGhlIGVsZW1lbnQncyBtZXNzYWdlIGF0dHJpYnV0ZQotICAgIFN0cmluZyBtZXNzYWdlID0gZWxlbS5nZXRBdHRyaWJ1dGUoIm1lc3NhZ2UiKTsKLSAgICAvLyBmaW5kaW5nIHRoZSBjb2xvbiBkZWxpbWl0ZXIKLSAgICBpbnQgY29sb25Qb3MgPSBtZXNzYWdlLmluZGV4T2YoIjoiKTsKLSAgICBTdHJpbmcgbnMgPSBudWxsOwotICAgIC8vIEdldHRpbmcgYSBsb2NhbCBwYXJ0Ci0gICAgU3RyaW5nIGxwID0gY29sb25Qb3MgPiAtMSA/IG1lc3NhZ2Uuc3Vic3RyaW5nKGNvbG9uUG9zICsgMSkgOiBtZXNzYWdlOwotICAgIC8vIElmIHRoZSBkZWxpbWl0ZXIgaXMgZm91bmQKLSAgICBpZiAoY29sb25Qb3MgPiAtMSkKLSAgICB7Ci0gICAgICAvLyBSZXRyaWV2aW5nIGEgbmFtZXNwYWNlIFVSSQotICAgICAgbnMgPSB2YWxpZGF0b3Iud3NkbERvY3VtZW50LmdldERlZmluaXRpb25zKCkKLSAgICAgICAgLmdldE5hbWVzcGFjZShtZXNzYWdlLnN1YnN0cmluZygwLCBjb2xvblBvcykpOwotICAgIH0KLSAgICAvLyBJZiB0aGUgbG9jYWwgcGFydCBhbmQgdGhlIG5hbWVzcGFjZSBVUkkgYXJlIHRoZSBzYW1lIGFzIGEgbWVzc2FnZSBoYXZlCi0gICAgaWYgKG1lc3NhZ2VOYW1lLmdldExvY2FsUGFydCgpLmVxdWFscyhscCkKLSAgICAgICYmIG1lc3NhZ2VOYW1lLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscyhucykpCi0gICAgewotICAgICAgLy8gZWxlbWVudCBpcyB2YWxpZCwgcmV0dXJuIHRydWUKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAvLyBlbGVtZW50IGlzIG5vdCB2YWxpZCwgcmV0dXJuIGZhbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbGxlY3RzIGFsbCB0aGUgd3NkbDpwYXJ0IGRlZmluZWQgd2l0aCB0aGUgcmVmOnN3YVJlZiBzY2hlbWEgdHlwZS4KLSAgICogQHBhcmFtIG1lc3NhZ2UgYSBtZXNzYWdlIGNvbnRhaW5pZyB3c2RsOnBhcnQgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBsaXN0IG9mIHdzZGw6cGFydCBuYW1lcy4KLSAgICovCi0gIHByaXZhdGUgTGlzdCBnZXRTd2FSZWZQYXJ0cyhNZXNzYWdlIG1lc3NhZ2UpCi0gIHsKLSAgICBMaXN0IHN3YVJlZlBhcnRzID0gbmV3IEFycmF5TGlzdCgpOwotCi0gICAgLy8gR29pbmcgdGhyb3VnaCBtZXNzYWdlJ3MgcGFydHMKLSAgICBJdGVyYXRvciBpdCA9IG1lc3NhZ2UuZ2V0UGFydHMoKS52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgewotICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpIGl0Lm5leHQoKTsKLSAgICAgIFFOYW1lIHJlZjsKLSAgICAgIHNob3J0IHR5cGU7Ci0gICAgICAvLyBHZXR0aW5nIGVpdGhlciBwYXJ0J3MgZWxlbWVudCByZWZlcmVuY2Ugb3IgdHlwZSByZWZlcmVuY2UKLSAgICAgIGlmICgocmVmID0gcGFydC5nZXRUeXBlTmFtZSgpKSAhPSBudWxsKQotICAgICAgewotICAgICAgICB0eXBlID0gWFNDb25zdGFudHMuVFlQRV9ERUZJTklUSU9OOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoKHJlZiA9IHBhcnQuZ2V0RWxlbWVudE5hbWUoKSkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdHlwZSA9IFhTQ29uc3RhbnRzLkVMRU1FTlRfREVDTEFSQVRJT047Ci0gICAgICB9Ci0gICAgICAvLyBUaGUgcGFydCBkb2VzIGNvbmF0aW5zIG5laXRoZXIgZWxlbWVudCBub3IgdHlwZSBhdHRyaWJ1dGUsCi0gICAgICAvLyBwcm9jZWVkaW5nIHdpdGggdGhlIG5leHQgcGFydAotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIC8vIEdldHRpbmcgYSBsaXN0IG9mIHNjaGVtYXMgZGVmaW5lZAotICAgICAgTWFwIHNjaGVtYXMgPSB2YWxpZGF0b3Iud3NkbERvY3VtZW50LmdldFNjaGVtYXMoKTsKLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIHNjaGVtYXMKLSAgICAgIEl0ZXJhdG9yIGl0MiA9IHNjaGVtYXMudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdDIuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBYU01vZGVsIHhzTW9kZWwgPSAoWFNNb2RlbCkgaXQyLm5leHQoKTsKLSAgICAgICAgWFNUeXBlRGVmaW5pdGlvbiBwYXJ0VHlwZSA9IG51bGw7Ci0gICAgICAgIC8vIEdldHRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcGFydCB0eXBlCi0gICAgICAgIGlmICh0eXBlID09IFhTQ29uc3RhbnRzLkVMRU1FTlRfREVDTEFSQVRJT04pCi0gICAgICAgIHsKLSAgICAgICAgICBYU0VsZW1lbnREZWNsYXJhdGlvbiBlbGVtID0geHNNb2RlbC5nZXRFbGVtZW50RGVjbGFyYXRpb24oCi0gICAgICAgICAgICByZWYuZ2V0TG9jYWxQYXJ0KCksIHJlZi5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgICAgICAgaWYgKGVsZW0gIT0gbnVsbCkKLSAgICAgICAgICAgIHBhcnRUeXBlID0gZWxlbS5nZXRUeXBlRGVmaW5pdGlvbigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHBhcnRUeXBlID0geHNNb2RlbC5nZXRUeXBlRGVmaW5pdGlvbigKLSAgICAgICAgICAgIHJlZi5nZXRMb2NhbFBhcnQoKSwgcmVmLmdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICAgICAgfQotICAgICAgICAvLyBJZiB0aGUgcGFydCB0eXBlIGlzIGRlZmluZWQgdXNpbmcgdGhlIHJlZjpzd2FSZWYgc2NoZW1hIHR5cGUKLSAgICAgICAgaWYgKHJlZmVyZW5jZXNTd2FSZWYocGFydFR5cGUsIG5ldyBBcnJheUxpc3QoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBBZGRpbmcgdGhlIHBhcnQncyBuYW1lIHRvIHRoZSBsaXN0IGJlaW5nIHJldHVybmVkCi0gICAgICAgICAgc3dhUmVmUGFydHMuYWRkKHBhcnQuZ2V0TmFtZSgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAvLyBSZXR1cm4gdGhlIGxpc3QKLSAgICByZXR1cm4gc3dhUmVmUGFydHM7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2sgc2NoZW1hIHR5cGUgd2hldGhlciBpdCBjb250YWlucyByZWY6c3dhUmVmIHNpbXBsZSBzY2hlbWEgdHlwZQotICAgKiBvciBoYXMgYW4gYXR0cmlidXRlIG9mIHRoaXMgc2NoZW1hIHR5cGUuCi0gICAqIEBwYXJhbSB4c1R5cGUgYSBzY2hlbWEgdHlwZSBkZWZpbml0aW9uIGVsZW1lbnQKLSAgICogQHJldHVybiB0cnVlLCBpZiBzY2hlbWEgdHlwZSBjb250YWlucyByZWY6c3dhUmVmLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gcmVmZXJlbmNlc1N3YVJlZihYU1R5cGVEZWZpbml0aW9uIHhzVHlwZSwgTGlzdCB0eXBlcykKLSAgewotICAgIGlmICgoeHNUeXBlICE9IG51bGwpICYmICghdHlwZXMuY29udGFpbnMoeHNUeXBlKSkpCi0gICAgewotICAgICAgdHlwZXMuYWRkKHhzVHlwZSk7Ci0gICAgICAvLyBJZiB0aGlzIGlzIGEgY29tcGxleCB0eXBlCi0gICAgICBpZiAoeHNUeXBlLmdldFR5cGVDYXRlZ29yeSgpID09IFhTVHlwZURlZmluaXRpb24uQ09NUExFWF9UWVBFKQotICAgICAgewotICAgICAgICBYU0NvbXBsZXhUeXBlRGVmaW5pdGlvbiB4c0NvbXBsZXhUeXBlID0KLSAgICAgICAgICAoWFNDb21wbGV4VHlwZURlZmluaXRpb24pIHhzVHlwZTsKLSAgICAgICAgLy8gSWYgaXQgY29udGFpbnMgbWl4ZWQgY29udGV4dAotICAgICAgICAvLyBjaGVjayB3aGV0aGVyIHRoZSBjb250ZXh0IGNvbnRhaW5zIHJlZjpzd2FSZWYKLSAgICAgICAgaWYgKHhzQ29tcGxleFR5cGUuZ2V0UGFydGljbGUoKSAhPSBudWxsCi0gICAgICAgICAgJiYgcmVmZXJlbmNlc1N3YVJlZih4c0NvbXBsZXhUeXBlLmdldFBhcnRpY2xlKCkuZ2V0VGVybSgpLCB0eXBlcykpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAvLyBHZXR0aW5nIHRoZSB0eXBlJ3MgYXR0cmlidXRlcwotICAgICAgICBYU09iamVjdExpc3QgYXR0ckxpc3QgPSB4c0NvbXBsZXhUeXBlLmdldEF0dHJpYnV0ZVVzZXMoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRyTGlzdC5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgWFNBdHRyaWJ1dGVVc2UgeHNBdHRyVXNlID0gKFhTQXR0cmlidXRlVXNlKSBhdHRyTGlzdC5pdGVtKGkpOwotICAgICAgICAgIC8vIElmIGFuIGF0dHJpYnV0ZSBpcyBkZWZpbmVkIHVzaW5nIHJlZjpzd2FSZWYsIHJldHVybiB0cnVlCi0gICAgICAgICAgaWYgKHJlZmVyZW5jZXNTd2FSZWYoCi0gICAgICAgICAgICB4c0F0dHJVc2UuZ2V0QXR0ckRlY2xhcmF0aW9uKCkuZ2V0VHlwZURlZmluaXRpb24oKSwgdHlwZXMpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgLy8gZWxzZSBpZiB0aGlzIGlzIGEgc2ltcGxlIHR5cGUKLSAgICAgIGVsc2UgaWYgKHhzVHlwZS5nZXRUeXBlQ2F0ZWdvcnkoKSA9PSBYU1R5cGVEZWZpbml0aW9uLlNJTVBMRV9UWVBFKQotICAgICAgewotICAgICAgICBYU1NpbXBsZVR5cGUgeHNTaW1wbGVUeXBlID0gKFhTU2ltcGxlVHlwZSkgeHNUeXBlOwotICAgICAgICAvLyBJZiB0aGlzIHR5cGUgaXMgcmVmOnN3YVJlZiwgcmV0dXJuIHRydWUKLSAgICAgICAgaWYgKHhzU2ltcGxlVHlwZS5nZXROYW1lc3BhY2UoKS5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9TV0FfUkVGKQotICAgICAgICAgICYmIHhzU2ltcGxlVHlwZS5nZXROYW1lKCkuZXF1YWxzKFdTSUNvbnN0YW50cy5TQ0hFTUFfVFlQRV9TV0FfUkVGKSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIFRoZSBzY2hlbWEgdHlwZSBkb2VzIG5vdCBjb250YWluIGFueSBlbGVtZW50IGRlZmluZWQgd2l0aCB0aGUgcmVmOnN3YVJlZgotICAgIC8vIHJldHVybiBmYWxzZQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVja3MgYSB0ZXJtIHdoZXRoZXIgaXQgaXMgZGVmaW5lZCB3aXRoIHJlZjpzd2FSZWYuCi0gICAqIEBwYXJhbSB0ZXJtIGEgdGVybSB0aGF0IGNhbiBiZSBvbmUgb2YgYSBtb2RlbCBncm91cCBvciBhbgotICAgKiBlbGVtZW50IGRlY2xhcmF0aW9uLgotICAgKiBAcmV0dXJuIHRydWUgaWYgYSB0ZXJtIGlzIGRlZmluZWQgd2l0aCByZWY6c3dhUmVmLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gcmVmZXJlbmNlc1N3YVJlZihYU1Rlcm0gdGVybSwgTGlzdCB0eXBlcykKLSAgewotICAgIC8vIElmIGEgdGVybSBpcyBhbiBlbGVtZW50IGRlY2xhcmF0aW9uCi0gICAgaWYgKHRlcm0uZ2V0VHlwZSgpID09IFhTQ29uc3RhbnRzLkVMRU1FTlRfREVDTEFSQVRJT04pCi0gICAgewotICAgICAgLy8gSWYgZWxlbWVudCdzIHR5cGUgaXMgZGVmaW5lZCB3aXRoIHRoZSByZWY6c3dhUmVmLCByZXR1cm4gdHJ1ZQotICAgICAgaWYgKHJlZmVyZW5jZXNTd2FSZWYoCi0gICAgICAgICgoWFNFbGVtZW50RGVjbGFyYXRpb24pIHRlcm0pLmdldFR5cGVEZWZpbml0aW9uKCksIHR5cGVzKSkKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gZWxzZSBpZiBhIHRlcm0gaXMgYSBtb2RlbCBncm91cAotICAgIGVsc2UgaWYodGVybS5nZXRUeXBlKCkgPT0gWFNDb25zdGFudHMuTU9ERUxfR1JPVVApCi0gICAgewotICAgICAgLy8gR2V0dGluZyBhIGxpc3Qgb2YgUGFydGljbGUgc2NoZW1hIGNvbXBvbmVudHMKLSAgICAgIFhTT2JqZWN0TGlzdCBsaXN0ID0gKChYU01vZGVsR3JvdXApIHRlcm0pLmdldFBhcnRpY2xlcygpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0LmdldExlbmd0aCgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIC8vIElmIHRoZSB0ZXJtIG9mIGEgcGFydGljbGUgaXMgZGVmaW5lZCB3aXRoIHRoZSByZWY6c3dhUmVmLAotICAgICAgICAvLyByZXR1cm4gdHJ1ZQotICAgICAgICBpZiAocmVmZXJlbmNlc1N3YVJlZigoKFhTUGFydGljbGUpIGxpc3QuaXRlbShpKSkuZ2V0VGVybSgpLCB0eXBlcykpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTQxLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTQxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2MmYwZGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjk0MS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzY3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXI7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0OwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0vKioKLSAqIEFQMjk0MQotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmc8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+QSB3c2RsOmJpbmRpbmcgaW4gYSBkZXNjcmlwdGlvbiBiaW5kcyBldmVyeSB3c2RsOnBhcnQKLSAqIG9mIGEgd3NkbDptZXNzYWdlIGluIHRoZSB3c2RsOnBvcnRUeXBlIHRvIHdoaWNoIGl0IHJlZmVycyB0byBvbmUgb2YKLSAqIHNvYXBiaW5kOmJvZHksIHNvYXBiaW5kOmhlYWRlciwgc29hcGJpbmQ6ZmF1bHQgLCBzb2FwYmluZDpoZWFkZXJmYXVsdCwKLSAqIG9yIG1pbWU6Y29udGVudC48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAyOTQxIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQVAyOTQxKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIEdldHRpbmcgYSB3c2RsOmJpbmRpbmcKLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgICAvLyBHZXR0aW5nIGl0cyB3c2RsOm9wZXJhdGlvbiBlbGVtZW50cwotICAgICAgTGlzdCBvcHMgPSBiaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCk7Ci0KLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIG9wZXJhdGlvbiBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcHMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKSBvcHMuZ2V0KGkpOwotICAgICAgICBJbnB1dCBwb3J0VHlwZUlucHV0ID0gYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRJbnB1dCgpOwotICAgICAgICBPdXRwdXQgcG9ydFR5cGVPdXRwdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldE91dHB1dCgpOwotICAgICAgICAvLyBJZiB0aGUgY29ycmVzcG9uZGluZyB3c2RsOmlucHV0IGV4aXN0cyBpbiB3c2RsOnBvcnRUeXBlCi0gICAgICAgIC8vIGFuZCBpbmNsdWRlcyB0aGUgbWVzc2FnZSBhdHRyaWJ1dGUKLSAgICAgICAgaWYgKHBvcnRUeXBlSW5wdXQgIT0gbnVsbCAmJiBwb3J0VHlwZUlucHV0LmdldE1lc3NhZ2UoKSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gR2V0dGluZyB0aGUgbGlzdCBvZiBhbGwgdGhlIHBhcnRzIGJvdW5kIGJ5IHdzZGw6aW5wdXQncyBjaGlsZCBlbGVtZW50cwotICAgICAgICAgIExpc3QgaW5wdXRQYXJ0cyA9IGdldEJpbmRpbmdQYXJ0cygKLSAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCksCi0gICAgICAgICAgICBwb3J0VHlwZUlucHV0LmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgLy8gSWYgbm90IHRydWUgdGhhdCBhbGwgdGhlIHdzZGw6cGFydFMgYXJlIGJvdW5kLAotICAgICAgICAgIC8vIHRoZSBhc3NlcnRpb24gZmFpbGVkCi0gICAgICAgICAgaWYgKCFpbnB1dFBhcnRzCi0gICAgICAgICAgICAuY29udGFpbnNBbGwocG9ydFR5cGVJbnB1dC5nZXRNZXNzYWdlKCkuZ2V0UGFydHMoKS5rZXlTZXQoKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSB3c2RsOmlucHV0IG9mIHRoZSBcIiIKLSAgICAgICAgICAgICAgKyBiaW5kaW5nT3BlcmF0aW9uLmdldE5hbWUoKSArICJcIiBiaW5kaW5nIG9wZXJhdGlvbiBkb2VzIG5vdCAiCi0gICAgICAgICAgICAgICsgImJpbmQgYWxsIHRoZSBjb3JyZXNwb25kaW5nIHdzZGw6cGFydFMuIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDpvdXRwdXQgZXhpc3RzIGluIHdzZGw6cG9ydFR5cGUKLSAgICAgICAgLy8gYW5kIGluY2x1ZGVzIHRoZSBtZXNzYWdlIGF0dHJpYnV0ZQotICAgICAgICBpZiAocG9ydFR5cGVPdXRwdXQgIT0gbnVsbCAmJiBwb3J0VHlwZU91dHB1dC5nZXRNZXNzYWdlKCkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldHRpbmcgdGhlIGxpc3Qgb2YgYWxsIHRoZSBwYXJ0cyBib3VuZCBieSB3c2RsOm91dHB1dCdzIGNoaWxkIGVsZW1lbnRzCi0gICAgICAgICAgTGlzdCBvdXRwdXRQYXJ0cyA9IGdldEJpbmRpbmdQYXJ0cygKLSAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLAotICAgICAgICAgICAgcG9ydFR5cGVPdXRwdXQuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICAvLyBJZiBub3QgdHJ1ZSB0aGF0IGFsbCB0aGUgd3NkbDpwYXJ0UyBhcmUgYm91bmQsCi0gICAgICAgICAgLy8gdGhlIGFzc2VydGlvbiBmYWlsZWQKLSAgICAgICAgICBpZiAoIW91dHB1dFBhcnRzCi0gICAgICAgICAgICAuY29udGFpbnNBbGwocG9ydFR5cGVPdXRwdXQuZ2V0TWVzc2FnZSgpLmdldFBhcnRzKCkua2V5U2V0KCkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgd3NkbDpvdXRwdXQgb2YgdGhlIFwiIgotICAgICAgICAgICAgICArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpICsgIlwiIGJpbmRpbmcgb3BlcmF0aW9uIGRvZXMgbm90ICIKLSAgICAgICAgICAgICAgKyAiYmluZCBhbGwgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDpwYXJ0Uy4iKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJRiB0aGVyZSBhcmUgd3NkbDpmYXVsdFMgaW4gdGhlIHdzZGw6cG9ydFR5cGUgb3BlcmF0aW9uCi0gICAgICAgIGlmICghYmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKS5nZXRGYXVsdHMoKS5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBDb2xsZWN0aW5nIGFsbCB0aGUgc29hcDpmYXVsdCBuYW1lcwotICAgICAgICAgIExpc3QgZmF1bHROYW1lcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgICBDb2xsZWN0aW9uIGZhdWx0cyA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0ZhdWx0cygpLnZhbHVlcygpOwotICAgICAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSB3c2RsOmZhdWx0UwotICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gZmF1bHRzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBHZXR0aW5nIHdzZGw6ZmF1bHQncyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzCi0gICAgICAgICAgICBMaXN0IGV4dEVsZW1zID0gKChCaW5kaW5nRmF1bHQpIGl0Lm5leHQoKSkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGV4dEVsZW1zLnNpemUoKTsgaisrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAoKChFeHRlbnNpYmlsaXR5RWxlbWVudClleHRFbGVtcy5nZXQoaikpCi0gICAgICAgICAgICAgICAgLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKFdTRExfU09BUF9GQVVMVCkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmYXVsdE5hbWVzLmFkZCgoKFNPQVBGYXVsdClleHRFbGVtcy5nZXQoaikpLmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIHNvYXA6aGVhZGVyZmF1bHRTCi0gICAgICAgICAgZmF1bHROYW1lcy5hZGRBbGwoZmluZEFsbEhlYWRlckZhdWx0cyhiaW5kaW5nT3BlcmF0aW9uKSk7Ci0gICAgICAgICAgLy8gSWYgbm90IHRydWUgdGhhdCBhbGwgdGhlIHdzZGw6ZmF1bHRTIGFyZSBib3VuZCwKLSAgICAgICAgICAvLyB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmICghZmF1bHROYW1lcy5jb250YWluc0FsbCgKLSAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkuZ2V0RmF1bHRzKCkua2V5U2V0KCkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBiaW5kaW5nIG9wZXJhdGlvbiBcIiIKLSAgICAgICAgICAgICAgICAgICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkgKyAiXCIgZG9lcyBub3QgIgotICAgICAgICAgICAgICAgICAgKyAiYmluZCBhbGwgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDpmYXVsdFMuIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChBc3NlcnRpb25GYWlsRXhjZXB0aW9uIGFmZSkKLSAgICB7Ci0gICAgICAvLyBUaGUgYXNzZXJ0aW9uIGlzICJyZWNvbW1lbmRlZCIsIHVzaW5nIHRoZSAid2FybmluZyIgcmVzdWx0Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1dBUk5JTkc7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbGxlY3RzIGFsbCB0aGUgcGFydHMgYm91bmQgYnkgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cy4KLSAgICogQHBhcmFtIGV4dEVsZW1zIGEgbGl0IG9mIGV4dGVuc2liaWxpdHkgZWxlbWVudHMuCi0gICAqIEBwYXJhbSBtZXNzYWdlIHRoZSB3c2RsOm1lc3NhZ2UgZWxlbWVudCBjb3JyZXNwb25naW5nCi0gICAqIHRvIHRoZSBleHRlbnNpYmlsaXR5IGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgbGlzdCBvZiB3c2RsOnBhcnQgbmFtZXMgYm91bmQuCi0gICAqLwotICBwcml2YXRlIExpc3QgZ2V0QmluZGluZ1BhcnRzKExpc3QgZXh0RWxlbXMsIE1lc3NhZ2UgbWVzc2FnZSkKLSAgewotICAgIExpc3QgcGFydHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgaWYgKGV4dEVsZW1zICE9IG51bGwpCi0gICAgewotICAgICAgLy8gR29pbmcgdGhyb3VnaCB0aGUgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHRFbGVtcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWxlbSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbXMuZ2V0KGkpOwotICAgICAgICAvLyBJZiB0aGF0IGlzIGEgc29hcDpib2R5Ci0gICAgICAgIGlmIChleHRFbGVtLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKFdTRExfU09BUF9CT0RZKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEFkZGluZyBhbGwgdGhlIHBhcnRzIGJvdW5kIHRvIHRoZSBsaXN0Ci0gICAgICAgICAgTGlzdCBwdHMgPSAoKFNPQVBCb2R5KSBleHRFbGVtKS5nZXRQYXJ0cygpOwotICAgICAgICAgIGlmIChwdHMgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwYXJ0cy5hZGRBbGwocHRzKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgLy8gZWxzZSB0aGUgcGFydHMgYXR0cmlidXRlIGlzIG9taXR0ZWQsCi0gICAgICAgICAgLy8gYWxsIHBhcnRzIGRlZmluZWQgYnkgdGhlIG1lc3NhZ2UgYXJlIGFzc3VtZWQgdG8gYmUgaW5jbHVkZWQKLSAgICAgICAgICAvLyBpbiB0aGUgU09BUCBCb2R5IHBvcnRpb24uCi0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBhcnRzLmFkZEFsbChtZXNzYWdlLmdldFBhcnRzKCkua2V5U2V0KCkpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBlbHNlIGlmIHRoYXQgaXMgYSBzb2FwOmhlYWRlcgotICAgICAgICBlbHNlIGlmIChleHRFbGVtLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKFdTRExfU09BUF9IRUFERVIpKQotICAgICAgICB7Ci0gICAgICAgICAgTGlzdCBoZWFkZXJGYXVsdHMgPSBudWxsOwotICAgICAgICAgIGlmIChleHRFbGVtIGluc3RhbmNlb2YgU09BUEhlYWRlcikKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBTT0FQSGVhZGVyIGhlYWRlciA9IChTT0FQSGVhZGVyKSBleHRFbGVtOwotICAgICAgICAgICAgLy8gSWYgYSBoZWFkZXIgcmVmZXJlbmNlcyB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlLAotICAgICAgICAgICAgLy8gYWRkaW5nIHBhcnQgbmFtZSB0byB0aGUgbGlzdCAKLSAgICAgICAgICAgIGlmIChtZXNzYWdlLmdldFFOYW1lKCkuZXF1YWxzKGhlYWRlci5nZXRNZXNzYWdlKCkpKQotICAgICAgICAgICAgICBwYXJ0cy5hZGQoaGVhZGVyLmdldFBhcnQoKSk7Ci0KLSAgICAgICAgICAgIGhlYWRlckZhdWx0cyA9IGhlYWRlci5nZXRTT0FQSGVhZGVyRmF1bHRzKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vIFdTREw0SiAxLjQgZG9lcyBub3QgcmVjb2duaXplIHNvYXA6aGVhZGVyIGVsZW1lbnRzIHRoYXQgYXJlIGVuY2xvc2VkCi0gICAgICAgICAgLy8gaW4gbWltZTptdWx0aXBhcnRSZWxhdGVkLCBzbyB1c2luZyBhIHdvcmthcm91bmQKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgRWxlbWVudCBoZWFkZXIgPQotICAgICAgICAgICAgICAoKFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbSkuZ2V0RWxlbWVudCgpOwotICAgICAgICAgICAgLy8gSWYgYSBoZWFkZXIgcmVmZXJlbmNlcyB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlLAotICAgICAgICAgICAgLy8gYWRkaW5nIHBhcnQgbmFtZSB0byB0aGUgbGlzdAotICAgICAgICAgICAgaWYgKHJlZmVyZW5jZXNNZXNzYWdlKGhlYWRlciwgbWVzc2FnZS5nZXRRTmFtZSgpKSkKLSAgICAgICAgICAgICAgcGFydHMuYWRkKGhlYWRlci5nZXRBdHRyaWJ1dGUoInBhcnQiKSk7Ci0gICAgICAgICAgICAvLyBDb2xsZWN0aW5nIHNvYXA6aGVhZGVyZmF1bHQgZWxlbWVudHMgZm9yIHRoZSBoZWFkZXIKLSAgICAgICAgICAgIGhlYWRlckZhdWx0cyA9IGdldEhlYWRlckZhdWx0cyhoZWFkZXIpOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBHb2luZyB0aHJvdWdoIHRoZSBzb2FwOmhlYWRlcmZhdWx0UwotICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaGVhZGVyRmF1bHRzLnNpemUoKTsgaisrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChoZWFkZXJGYXVsdHMuZ2V0KGopIGluc3RhbmNlb2YgU09BUEhlYWRlckZhdWx0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBTT0FQSGVhZGVyRmF1bHQgc2hmID0gKFNPQVBIZWFkZXJGYXVsdCkgaGVhZGVyRmF1bHRzLmdldChqKTsKLSAgICAgICAgICAgICAgLy8gSWYgYSBzb2FwOmhlYWRlcmZhdWx0IHJlZmVyZW5jZXMgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICAgICAgICAgICAgLy8gbWVzc2FnZSwgYWRkaW5nIHBhcnQgbmFtZSB0byB0aGUgbGlzdAotICAgICAgICAgICAgICBpZiAobWVzc2FnZS5lcXVhbHMoc2hmLmdldE1lc3NhZ2UoKSkpCi0gICAgICAgICAgICAgICAgcGFydHMuYWRkKHNoZi5nZXRQYXJ0KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gdGhlIHNhbWUgd29ya2Fyb3VuZC4uLgotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBFbGVtZW50IHNoZiA9IChFbGVtZW50KSBoZWFkZXJGYXVsdHMuZ2V0KGopOwotICAgICAgICAgICAgICAvLyBJZiBhIHNvYXA6aGVhZGVyZmF1bHQgcmVmZXJlbmNlcyB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICAgICAgICAvLyBtZXNzYWdlLCBhZGRpbmcgcGFydCBuYW1lIHRvIHRoZSBsaXN0Ci0gICAgICAgICAgICAgIGlmIChyZWZlcmVuY2VzTWVzc2FnZShzaGYsIG1lc3NhZ2UuZ2V0UU5hbWUoKSkpCi0gICAgICAgICAgICAgICAgcGFydHMuYWRkKHNoZi5nZXRBdHRyaWJ1dGUoInBhcnQiKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vIGVsc2UgaWYgdGhhdCBpcyBhIG1pbWU6Y29udGVudAotICAgICAgICBlbHNlIGlmIChleHRFbGVtLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKFdTRExfTUlNRV9DT05URU5UKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIGFkZGluZyBwYXJ0IG5hbWUgdG8gdGhlIGxpc3QKLSAgICAgICAgICBwYXJ0cy5hZGQoKChNSU1FQ29udGVudCkgZXh0RWxlbSkuZ2V0UGFydCgpKTsKLSAgICAgICAgfQotICAgICAgICAvLyBlbHNlIGlmIHRoYXQgaXMgYSBtaW1lOm11bHRpcGFydFJlbGF0ZWQKLSAgICAgICAgZWxzZSBpZiAoZXh0RWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfTVVMVElQQVJUKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldHRpbmcgdGhlIG1pbWU6cGFydCBlbGVtZW50cyBvZiB0aGUgbWltZTptdWx0aXBhcnRSZWxhdGVkCi0gICAgICAgICAgTGlzdCBtaW1lUGFydHMgPSAoKE1JTUVNdWx0aXBhcnRSZWxhdGVkKSBleHRFbGVtKS5nZXRNSU1FUGFydHMoKTsKLSAgICAgICAgICAvLyBHb2luZyB0aHJvdWdoIGFsbCB0aGUgbWltZTpwYXJ0IGVsZW1lbnRzCi0gICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lUGFydHMuc2l6ZSgpOyBqKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gQ29sbGVjdGluZyBhbGwgdGhlIHZhbHVlcyBvZiBwYXJ0IGF0dHJpYnV0ZXMKLSAgICAgICAgICAgIC8vIG9mIG1pbWU6cGFydCdzIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICAgICAgICAgIHBhcnRzLmFkZEFsbChnZXRCaW5kaW5nUGFydHMoCi0gICAgICAgICAgICAgICgoTUlNRVBhcnQpIG1pbWVQYXJ0cy5nZXQoaikpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLAotICAgICAgICAgICAgICBtZXNzYWdlKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBwYXJ0czsKLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZXMgd2hldGhlciBhbiBlbGVtZW50IGNvbnRhaW5zIGEgbWVzc2FnZSBhdHRyaWJ1dGUgdGhhdCByZWZlcmVuY2VzCi0gICAqIGEgbWVzc2FnZSB0aGF0IGhhdmUgdGhlIHF1YWxpZmllZCBuYW1lIHNwZWNpZmllZC4KLSAgICogQHBhcmFtIGVsZW0gYW4gZWxlbWVudCB0byBiZSB2YWxpZGF0ZWQuCi0gICAqIEBwYXJhbSBtZXNzYWdlTmFtZSB0aGUgcXVhbGlmaWVkIG5hbWUgb2YgYSBtZXNzYWdlLgotICAgKiBAcmV0dXJuIHRydWUgaWYgYW4gZWxlbWVudCBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIHJlZmVyZW5jZXNNZXNzYWdlKEVsZW1lbnQgZWxlbSwgUU5hbWUgbWVzc2FnZU5hbWUpCi0gIHsKLSAgICAvLyBHZXR0aW5nIHRoZSBlbGVtZW50J3MgbWVzc2FnZSBhdHRyaWJ1dGUKLSAgICBTdHJpbmcgbWVzc2FnZSA9IGVsZW0uZ2V0QXR0cmlidXRlKCJtZXNzYWdlIik7Ci0gICAgLy8gZmluZGluZyB0aGUgY29sb24gZGVsaW1pdGVyCi0gICAgaW50IGNvbG9uUG9zID0gbWVzc2FnZS5pbmRleE9mKCI6Iik7Ci0gICAgU3RyaW5nIG5zID0gbnVsbDsKLSAgICAvLyBHZXR0aW5nIGEgbG9jYWwgcGFydAotICAgIFN0cmluZyBscCA9IGNvbG9uUG9zID4gLTEgPyBtZXNzYWdlLnN1YnN0cmluZyhjb2xvblBvcyArIDEpIDogbWVzc2FnZTsKLSAgICAvLyBJZiB0aGUgZGVsaW1pdGVyIGlzIGZvdW5kCi0gICAgaWYgKGNvbG9uUG9zID4gLTEpCi0gICAgewotICAgICAgLy8gUmV0cmlldmluZyBhIG5hbWVzcGFjZSBVUkkKLSAgICAgIG5zID0gdmFsaWRhdG9yLndzZGxEb2N1bWVudC5nZXREZWZpbml0aW9ucygpCi0gICAgICAgIC5nZXROYW1lc3BhY2UobWVzc2FnZS5zdWJzdHJpbmcoMCwgY29sb25Qb3MpKTsKLSAgICB9Ci0gICAgLy8gSWYgdGhlIGxvY2FsIHBhcnQgYW5kIHRoZSBuYW1lc3BhY2UgVVJJIGFyZSB0aGUgc2FtZSBhcyBhIG1lc3NhZ2UgaGF2ZQotICAgIGlmIChtZXNzYWdlTmFtZS5nZXRMb2NhbFBhcnQoKS5lcXVhbHMobHApCi0gICAgICAmJiBtZXNzYWdlTmFtZS5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMobnMpKQotICAgIHsKLSAgICAgIC8vIGVsZW1lbnQgaXMgdmFsaWQsIHJldHVybiB0cnVlCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgLy8gZWxlbWVudCBpcyBub3QgdmFsaWQsIHJldHVybiBmYWxzZQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHByaXZhdGUgTGlzdCBmaW5kQWxsSGVhZGVyRmF1bHRzKEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wKQotICB7Ci0gICAgTGlzdCBoZWFkZXJGYXVsdHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgaWYgKGJpbmRpbmdPcCA9PSBudWxsKQotICAgICAgcmV0dXJuIGhlYWRlckZhdWx0czsKLSAgICBMaXN0IGlvRWxlbWVudHMgPSBiaW5kaW5nT3AuZ2V0QmluZGluZ0lucHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgaW9FbGVtZW50cy5hZGRBbGwoYmluZGluZ09wLmdldEJpbmRpbmdPdXRwdXQoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpb0VsZW1lbnRzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW0gPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGlvRWxlbWVudHMuZ2V0KGkpOwotICAgICAgaWYgKGV4dEVsZW0uZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoV1NETF9TT0FQX0hFQURFUikpIHsKLSAgICAgICAgTGlzdCBzaGZMaXN0ID0gKChTT0FQSGVhZGVyKSBleHRFbGVtKS5nZXRTT0FQSGVhZGVyRmF1bHRzKCk7Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2hmTGlzdC5zaXplKCk7IGorKykKLSAgICAgICAgICBoZWFkZXJGYXVsdHMuYWRkKCgoU09BUEhlYWRlckZhdWx0KSBzaGZMaXN0LmdldChqKSkuZ2V0UGFydCgpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKCFleHRFbGVtLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKFdTRExfU09BUF9CT0RZKSkgewotICAgICAgICBMaXN0IGVsTGlzdCA9IGdldEhlYWRlckZhdWx0cygoCi0gICAgICAgICAgICAgICAgICAoVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtKS5nZXRFbGVtZW50KCkpOwotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGVsTGlzdC5zaXplKCk7IGorKykKLSAgICAgICAgICBoZWFkZXJGYXVsdHMuYWRkKCgoRWxlbWVudCllbExpc3QuZ2V0KGopKS5nZXRBdHRyaWJ1dGUoInBhcnQiKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBoZWFkZXJGYXVsdHM7Ci0gIH0KLSAgLyoqCi0gICAqIENvbGxlY3RzIGFsbCB0aGUgZWxlbWVudCdzIGNoaWxkIGVsZW1lbnRzIG9mIHRoZSBzb2FwOmhlYWRlcmZhdWx0IHR5cGUuCi0gICAqIEBwYXJhbSBlbGVtZW50IGFuIGVsZW1lbnQgdGhhdCBjYW4gaGF2ZSBzb2FwOmhlYWRlcmZhdWx0IGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIHRoZSBsaXN0IG9mIHNvYXA6aGVhZGVyZmF1bHQgZWxlbWVudHMgZm91bmQuCi0gICAqLwotICBwcml2YXRlIExpc3QgZ2V0SGVhZGVyRmF1bHRzKEVsZW1lbnQgZWxlbWVudCkKLSAgewotICAgIExpc3QgaGVhZGVyRmF1bHRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGlmIChlbGVtZW50ICE9IG51bGwpCi0gICAgewotICAgICAgLy8gR2V0dGluZyB0aGUgZmlyc3QgaGVhZGVyJ3MgY2hpbGQKLSAgICAgIEVsZW1lbnQgY2hpbGQgPSBYTUxVdGlscy5nZXRGaXJzdENoaWxkKGVsZW1lbnQpOwotICAgICAgd2hpbGUgKGNoaWxkICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIElmIHRoZSBjaGlsZCBpcyBzb2FwOmhlYWRlcmZhdWx0Ci0gICAgICAgIGlmIChjaGlsZC5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoV1NETF9TT0FQX0hFQURFUkZBVUxULmdldE5hbWVzcGFjZVVSSSgpKQotICAgICAgICAgICYmIGNoaWxkLmdldExvY2FsTmFtZSgpLmVxdWFscyhXU0RMX1NPQVBfSEVBREVSRkFVTFQuZ2V0TG9jYWxQYXJ0KCkpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gQWRkaW5nIHRoZSBjaGlsZCB0byB0aGUgbGlzdAotICAgICAgICAgIGhlYWRlckZhdWx0cy5hZGQoY2hpbGQpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEdldHRpbmcgdGhlIG5leHQgaGVhZGVyJ3MgY2hpbGQKLSAgICAgICAgY2hpbGQgPSBYTUxVdGlscy5nZXROZXh0U2libGluZyhjaGlsZCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBoZWFkZXJGYXVsdHM7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTQ0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQVAyOTQ0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhOTNhN2IuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjk0NC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0vKioKLSAqIEFQMjk0NAotICoKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmc8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+SW4gYSBERVNDUklQVElPTiwgaWYgYSB3c2RsOnBhcnQgZWxlbWVudCByZWZlcnMgdG8gYQotICogZ2xvYmFsIGVsZW1lbnQgZGVjbGFyYXRpb24gKHZpYSB0aGUgZWxlbWVudCBhdHRyaWJ1dGUgb2YgdGhlIHdzZGw6cGFydCBlbGVtZW50KQotICogdGhlbiB0aGUgdmFsdWUgb2YgdGhlIHR5cGUgYXR0cmlidXRlIG9mIGEgbWltZTpjb250ZW50IGVsZW1lbnQgdGhhdCBiaW5kcyB0aGF0IHBhcnQKLSAqIGlzIGEgY29udGVudCB0eXBlIHN1aXRhYmxlIGZvciBjYXJyeWluZyBhbiBYTUwgc2VyaWFsaXphdGlvbi48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQVAyOTQ0IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvLyBBIHZhcmlhYmxlIHRoYXQgaW5kaWNhdGVzIGEgYmluZGluZyBjb250YWlucyBtaW1lOmNvbnRlbnQgZWxlbWVudHMKLSAgLy8gdGhhdCBiaW5kIHdzZGw6cGFydFMgZGVmaW5lZCB3aXRoIHRoZSBlbGVtZW50IGF0dHJpYnV0ZQotICBwcml2YXRlIGJvb2xlYW4gbWltZUNvbnRlbnRGb3VuZDsKLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMjk0NChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBSZXNldHRpbmcgdGhlIHZhcmlhYmxlCi0gICAgbWltZUNvbnRlbnRGb3VuZCA9IGZhbHNlOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0dGluZyBhIHdzZGw6YmluZGluZwotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAgIC8vIEdldHRpbmcgaXRzIHdzZGw6b3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBMaXN0IG9wcyA9IGJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbnMoKTsKLQotICAgICAgLy8gR29pbmcgdGhyb3VnaCB0aGUgb3BlcmF0aW9uIGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9wcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24pIG9wcy5nZXQoaSk7Ci0KLSAgICAgICAgLy8gR2V0dGluZyB3c2RsOmlucHV0IGFuZCB3c2RsOm91dHB1dCBlbGVtZW50cyBvZiBhbiBvcGVyYXRpb24KLSAgICAgICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCk7Ci0gICAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpOwotCi0gICAgICAgIC8vIENvbGxlY3RpbmcgYWxsIHRoZSBtaW1lOmNvbnRlbnQgZWxlbWVudHMgZnJvbSB3c2RsOmlucHV0IGFuZCB3c2RsOm91dHB1dAotICAgICAgICBMaXN0IGlucHV0TWltZUNvbnRlbnRzID0gZ2V0TWltZUNvbnRlbnRFbGVtZW50cygKLSAgICAgICAgICBiaW5kaW5nSW5wdXQgPT0gbnVsbCA/IG51bGwgOiBiaW5kaW5nSW5wdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotICAgICAgICBMaXN0IG91dHB1dE1pbWVDb250ZW50cyA9IGdldE1pbWVDb250ZW50RWxlbWVudHMoCi0gICAgICAgICAgYmluZGluZ091dHB1dCA9PSBudWxsID8gbnVsbCA6IGJpbmRpbmdPdXRwdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpOwotCi0gICAgICAgIC8vIElmIHRoZSB3c2RsOmlucHV0IGNvbnRhaW5zIG1pbWU6Y29udGVudCBlbGVtZW50cwotICAgICAgICBpZiAoIWlucHV0TWltZUNvbnRlbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIElucHV0IHBvcnRUeXBlSW5wdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldE9wZXJhdGlvbigpLmdldElucHV0KCk7Ci0gICAgICAgICAgLy8gSWYgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDppbnB1dCBleGlzdHMgaW4gd3NkbDpwb3J0VHlwZQotICAgICAgICAgIC8vIGFuZCBpbmNsdWRlcyB0aGUgbWVzc2FnZSBhdHRyaWJ1dGUKLSAgICAgICAgICBpZiAocG9ydFR5cGVJbnB1dCAhPSBudWxsICYmIHBvcnRUeXBlSW5wdXQuZ2V0TWVzc2FnZSgpICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gaW52YWxpZCBtaW1lOmNvbnRlbnQgZWxlbWVudAotICAgICAgICAgICAgTUlNRUNvbnRlbnQgaW1jID0gZ2V0SW52YWxpZE1pbWVDb250ZW50KAotICAgICAgICAgICAgICAgIGlucHV0TWltZUNvbnRlbnRzLCBwb3J0VHlwZUlucHV0LmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICBpZiAoaW1jICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgbWltZTpjb250ZW50IGVsZW1lbnQgaW4gIgotICAgICAgICAgICAgICAgICsgInRoZSB3c2RsOmlucHV0IG9mIHRoZSBcIiIgKyBiaW5kaW5nT3BlcmF0aW9uLmdldE5hbWUoKQotICAgICAgICAgICAgICAgICsgIlwiIHRoYXQgYmluZHMgdGhlIFwiIiArIGltYy5nZXRQYXJ0KCkKLSAgICAgICAgICAgICAgICArICJcIiB3c2RsOnBhcnQgdXNlcyB0aGUgaW52YWxpZCBjb250ZW50IHR5cGUgXCIiCi0gICAgICAgICAgICAgICAgKyBpbWMuZ2V0VHlwZSgpICsgIlwiLiAiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgd3NkbDpvdXRwdXQgY29udGFpbnMgbWltZTpjb250ZW50IGVsZW1lbnRzCi0gICAgICAgIGlmICghb3V0cHV0TWltZUNvbnRlbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgIE91dHB1dCBwb3J0VHlwZU91dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkuZ2V0T3V0cHV0KCk7Ci0gICAgICAgICAgLy8gSWYgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDpvdXRwdXQgZXhpc3RzIGluIHdzZGw6cG9ydFR5cGUKLSAgICAgICAgICAvLyBhbmQgaW5jbHVkZXMgdGhlIG1lc3NhZ2UgYXR0cmlidXRlCi0gICAgICAgICAgaWYgKHBvcnRUeXBlT3V0cHV0ICE9IG51bGwgJiYgcG9ydFR5cGVPdXRwdXQuZ2V0TWVzc2FnZSgpICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gaW52YWxpZCBtaW1lOmNvbnRlbnQgZWxlbWVudAotICAgICAgICAgICAgTUlNRUNvbnRlbnQgaW1jID0gZ2V0SW52YWxpZE1pbWVDb250ZW50KAotICAgICAgICAgICAgICBvdXRwdXRNaW1lQ29udGVudHMsIHBvcnRUeXBlT3V0cHV0LmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICBpZiAoaW1jICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgbWltZTpjb250ZW50IGVsZW1lbnQgaW4gIgotICAgICAgICAgICAgICAgICsgInRoZSB3c2RsOm91dHB1dCBvZiB0aGUgXCIiICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkKLSAgICAgICAgICAgICAgICArICJcIiB0aGF0IGJpbmRzIHRoZSBcIiIgKyBpbWMuZ2V0UGFydCgpCi0gICAgICAgICAgICAgICAgKyAiXCIgd3NkbDpwYXJ0IHVzZXMgdGhlIGludmFsaWQgY29udGVudCB0eXBlIFwiIgotICAgICAgICAgICAgICAgICsgaW1jLmdldFR5cGUoKSArICJcIi4gIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyBJZiBtaW1lOmNvbnRlbnQgZWxlbWVudHMgYXJlIG5vdCBmb3VuZCwKLSAgICAgIC8vIHRoZSBhc3NlcnRpb24gaXMgbm90IGFwcGxpY2FibGUKLSAgICAgIGlmICghbWltZUNvbnRlbnRGb3VuZCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gYW5hZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyB3aGV0aGVyIGFueSBtaW1lOmNvbnRlbnQgZWxlbWVudCBiaW5kcyB3c2RsOnBhcnQgdGhhdCBpcyBkZWZpbmVkCi0gICAqIHdpdGggdGhlIGVsZW1lbnQgYXR0cmlidXRlIGFuZCB1c2VzIHRoZSBjb250ZW50IHR5cGUgInRleHQveG1sIi4KLSAgICogQHBhcmFtIG1pbWVDb250ZW50cyBhIGxpc3Qgb2YgbWltZTpjb250ZW50IGVsZW1lbnRzIG9mIGJpbmRpbmcgb3BlcmF0aW9uLgotICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgY29ycmVzcG9uZGluZyB3c2RsOm1lc3NhZ2UgZWxlbWVudC4KLSAgICogQHJldHVybiBhIG1pbWU6Y29udGVudCBlbGVtZW50IHRoYXQgdXNlcyBhIGNvbnRlbnQgdHlwZSBvdGhlciB0aGFuCi0gICAqICJ0ZXh0L3htbCIsIG51bGwgaWYgbm8gb25lIHN1Y2ggZWxlbWVudCBpcyBmb3VuZC4KLSAgICovCi0gIHByaXZhdGUgTUlNRUNvbnRlbnQgZ2V0SW52YWxpZE1pbWVDb250ZW50KExpc3QgbWltZUNvbnRlbnRzLCBNZXNzYWdlIG1lc3NhZ2UpCi0gIHsKLSAgICAvLyBHb2luZyB0aHJvdWdoIGEgbGlzdCBvZiBtaW1lOmNvbnRlbnQgZWxlbWVudHMKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1pbWVDb250ZW50cy5zaXplKCk7IGkrKykKLSAgICB7Ci0gICAgICBNSU1FQ29udGVudCBtaW1lQ29udGVudCA9IChNSU1FQ29udGVudCkgbWltZUNvbnRlbnRzLmdldChpKTsKLSAgICAgIC8vIEdldHRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgd3NkbDpwYXJ0Ci0gICAgICBQYXJ0IHBhcnQgPSBtZXNzYWdlLmdldFBhcnQobWltZUNvbnRlbnQuZ2V0UGFydCgpKTsKLSAgICAgIC8vIElmIHRoZSBwYXJ0IGlzIGRlZmluZWQgd2l0aCB0aGUgZWxlbWVudCBhdHRyaWJ1dGUKLSAgICAgIGlmIChwYXJ0ICE9IG51bGwgJiYgcGFydC5nZXRFbGVtZW50TmFtZSgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIG1pbWVDb250ZW50Rm91bmQgPSB0cnVlOwotICAgICAgICAvLyBJZiB0aGUgdHlwZSBhdHRyaWJ1dGUgdmFsdWUgaXMgb3RoZXIgdGhhbiAidGV4dC94bWwiCi0gICAgICAgIGlmICghV1NJQ29uc3RhbnRzLkNPTlRFTlRfVFlQRV9URVhUX1hNTC5lcXVhbHMobWltZUNvbnRlbnQuZ2V0VHlwZSgpKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIHJldHVybiB0aGUgaW52YWxpZCBlbGVtZW50Ci0gICAgICAgICAgcmV0dXJuIG1pbWVDb250ZW50OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbGxlY3RzIGFsbCBtaW1lOmNvbnRlbnQgZWxlbWVudHMuCi0gICAqIEBwYXJhbSBleHRFbGVtcyBhIGxpc3Qgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyB0aGF0IGNhbiBjb250YWluIG1pbWU6Y29udGVudFMuCi0gICAqIEByZXR1cm4gdGhlIGxpc3Qgb2YgbWltZTpjb250ZW50IGVsZW1lbnRzIGZvdW5kLgotICAgKi8KLSAgcHJpdmF0ZSBMaXN0IGdldE1pbWVDb250ZW50RWxlbWVudHMoTGlzdCBleHRFbGVtcykKLSAgewotICAgIExpc3QgbWltZUNvbnRlbnRFbGVtZW50cyA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgIGlmIChleHRFbGVtcyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSBleHRlbnNpYmlsaXR5IGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dEVsZW1zLnNpemUoKTsgaSsrKQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtcy5nZXQoaSk7Ci0gICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZAotICAgICAgICBpZiAoZXh0RWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfTVVMVElQQVJUKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldHRpbmcgdGhlIG1pbWU6cGFydCBlbGVtZW50cyBvZiB0aGUgbWltZTptdWx0aXBhcnRSZWxhdGVkCi0gICAgICAgICAgTGlzdCBtaW1lUGFydHMgPSAoKE1JTUVNdWx0aXBhcnRSZWxhdGVkKSBleHRFbGVtKS5nZXRNSU1FUGFydHMoKTsKLSAgICAgICAgICAvLyBHb2luZyB0aHJvdWdoIGFsbCB0aGUgbWltZTpwYXJ0IGVsZW1lbnRzCi0gICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lUGFydHMuc2l6ZSgpOyBqKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gQ29sbGVjdGluZyBhbGwgdGhlIG1pbWU6Y29udGVudCBlbGVtZW50cyBvZiB0aGlzIG1pbWU6cGFydAotICAgICAgICAgICAgTGlzdCBlbGVtcyA9IGdldE1pbWVDb250ZW50RWxlbWVudHMoCi0gICAgICAgICAgICAgICgoTUlNRVBhcnQpIG1pbWVQYXJ0cy5nZXQoaikpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgZWxlbWVudHMgdG8gdGhlIGxpc3QgYmVpbmcgcmV0dXJuZWQKLSAgICAgICAgICAgIG1pbWVDb250ZW50RWxlbWVudHMuYWRkQWxsKGVsZW1zKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRWxzZSBpZiB0aGUgZWxlbWVudCBpcyBtaW1lOmNvbnRlbnQKLSAgICAgICAgZWxzZSBpZiAoZXh0RWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfQ09OVEVOVCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBBZGRpbmcgdGhlIGVsZW1lbnQgdG8gdGhlIGxpc3QgYmVpbmcgcmV0dXJuZWQKLSAgICAgICAgICBtaW1lQ29udGVudEVsZW1lbnRzLmFkZChleHRFbGVtKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBtaW1lQ29udGVudEVsZW1lbnRzOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjk0Ni5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0FQMjk0Ni5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTU1NzM5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9BUDI5NDYuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotLyoqCi0gKiBBUDI5NDYKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nICB3aXRoIGF0IGxlYXN0IG9uZSBtaW1lOmNvbnRlbnQgZWxlbWVudDwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5JbiBhIERFU0NSSVBUSU9OLCBhIG1pbWU6Y29udGVudCBlbGVtZW50Ci0gKiBpbmNsdWRlcyB0aGUgcGFydCBhdHRyaWJ1dGUuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEFQMjk0NiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEFQMjk0NihXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBBIHZhcmlhYmxlIHRoYXQgaW5kaWNhdGVzIGEgYmluZGluZyBjb250YWlucyBhdCBsZWFzdCBvbmUKLSAgICAgIC8vIG1pbWU6Y29udGVudCBlbGVtZW50Ci0gICAgICBib29sZWFuIG1pbWVDb250ZW50c0ZvdW5kID0gZmFsc2U7Ci0KLSAgICAgIC8vIEdldHRpbmcgYSB3c2RsOmJpbmRpbmcKLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgICAvLyBHZXR0aW5nIGl0cyB3c2RsOm9wZXJhdGlvbiBlbGVtZW50cwotICAgICAgTGlzdCBvcHMgPSBiaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCk7Ci0KLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggdGhlIG9wZXJhdGlvbiBlbGVtZW50cwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcHMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKSBvcHMuZ2V0KGkpOwotCi0gICAgICAgIC8vIEdldHRpbmcgd3NkbDppbnB1dCBhbmQgd3NkbDpvdXRwdXQgZWxlbWVudHMgb2YgYW4gb3BlcmF0aW9uCi0gICAgICAgIEJpbmRpbmdJbnB1dCBiaW5kaW5nSW5wdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpOwotICAgICAgICBCaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdPdXRwdXQoKTsKLQotICAgICAgICAvLyBDb2xsZWN0aW5nIGFsbCB0aGUgbWltZTpjb250ZW50IGVsZW1lbnRzIGZyb20gd3NkbDppbnB1dCBhbmQgd3NkbDpvdXRwdXQKLSAgICAgICAgTGlzdCBpbnB1dE1pbWVDb250ZW50cyA9IGdldE1pbWVDb250ZW50RWxlbWVudHMoCi0gICAgICAgICAgYmluZGluZ0lucHV0ID09IG51bGwgPyBudWxsIDogYmluZGluZ0lucHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICAgICAgTGlzdCBvdXRwdXRNaW1lQ29udGVudHMgPSBnZXRNaW1lQ29udGVudEVsZW1lbnRzKAotICAgICAgICAgIGJpbmRpbmdPdXRwdXQgPT0gbnVsbCA/IG51bGwgOiBiaW5kaW5nT3V0cHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLQotICAgICAgICAvLyBJZiB0aGUgd3NkbDppbnB1dCBjb250YWlucyBtaW1lOmNvbnRlbnQgZWxlbWVudHMKLSAgICAgICAgaWYgKCFpbnB1dE1pbWVDb250ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtaW1lQ29udGVudHNGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtaW1lOmNvbnRlbnQgdGhhdCBkb2VzIG5vdCBpbmNsdWRlCi0gICAgICAgICAgLy8gdGhlIHBhcnQgYXR0cmlidXRlLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmIChoYXNJbnZhbGlkTWltZUNvbnRlbnQoaW5wdXRNaW1lQ29udGVudHMpKQotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oIlRoZSBpbnZhbGlkIG1pbWU6Y29udGVudCBlbGVtZW50IgotICAgICAgICAgICAgICArICIgaXMgaW4gdGhlIHdzZGw6aW5wdXQgb2YgdGhlIFwiIiArIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpCi0gICAgICAgICAgICAgICsgIlwiIGJpbmRpbmcgb3BlcmF0aW9uLiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIHdzZGw6b3V0cHV0IGNvbnRhaW5zIG1pbWU6Y29udGVudCBlbGVtZW50cwotICAgICAgICBpZiAoIW91dHB1dE1pbWVDb250ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtaW1lQ29udGVudHNGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtaW1lOmNvbnRlbnQgdGhhdCBkb2VzIG5vdCBpbmNsdWRlCi0gICAgICAgICAgLy8gdGhlIHBhcnQgYXR0cmlidXRlLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgICAgIGlmIChoYXNJbnZhbGlkTWltZUNvbnRlbnQob3V0cHV0TWltZUNvbnRlbnRzKSkKLSAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJUaGUgaW52YWxpZCBtaW1lOmNvbnRlbnQgZWxlbWVudCIKLSAgICAgICAgICAgICAgKyAiIGlzIGluIHRoZSB3c2RsOm91dHB1dCBvZiB0aGUgXCIiICsgYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkKLSAgICAgICAgICAgICAgKyAiXCIgYmluZGluZyBvcGVyYXRpb24uIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLy8gSWYgdGhlIGJpbmRpbmcgY29udGFpbnMgbm8gbWltZTpjb250ZW50IGVsZW1lbnRzLAotICAgICAgLy8gdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKCFtaW1lQ29udGVudHNGb3VuZCkKLSAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24oKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb24gYW5hZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBhZmUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgIGFmZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbGxlY3RzIGFsbCBtaW1lOmNvbnRlbnQgZWxlbWVudHMuCi0gICAqIEBwYXJhbSBleHRFbGVtcyBhIGxpc3Qgb2YgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyB0aGF0IGNhbiBjb250YWluIG1pbWU6Y29udGVudFMuCi0gICAqIEByZXR1cm4gdGhlIGxpc3Qgb2YgbWltZTpjb250ZW50IGVsZW1lbnRzIGZvdW5kLgotICAgKi8KLSAgcHJpdmF0ZSBMaXN0IGdldE1pbWVDb250ZW50RWxlbWVudHMoTGlzdCBleHRFbGVtcykKLSAgewotICAgIExpc3QgbWltZUNvbnRlbnRFbGVtZW50cyA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgIGlmIChleHRFbGVtcyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIEdvaW5nIHRocm91Z2ggYWxsIHRoZSBleHRlbnNpYmlsaXR5IGVsZW1lbnRzCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dEVsZW1zLnNpemUoKTsgaSsrKQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtcy5nZXQoaSk7Ci0gICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIG1pbWU6bXVsdGlwYXJ0UmVsYXRlZAotICAgICAgICBpZiAoZXh0RWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfTVVMVElQQVJUKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIEdldHRpbmcgdGhlIG1pbWU6cGFydCBlbGVtZW50cyBvZiB0aGUgbWltZTptdWx0aXBhcnRSZWxhdGVkCi0gICAgICAgICAgTGlzdCBtaW1lUGFydHMgPSAoKE1JTUVNdWx0aXBhcnRSZWxhdGVkKSBleHRFbGVtKS5nZXRNSU1FUGFydHMoKTsKLSAgICAgICAgICAvLyBHb2luZyB0aHJvdWdoIGFsbCB0aGUgbWltZTpwYXJ0IGVsZW1lbnRzCi0gICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtaW1lUGFydHMuc2l6ZSgpOyBqKyspCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gQ29sbGVjdGluZyBhbGwgdGhlIG1pbWU6Y29udGVudCBlbGVtZW50cyBvZiB0aGlzIG1pbWU6cGFydAotICAgICAgICAgICAgTGlzdCBlbGVtcyA9IGdldE1pbWVDb250ZW50RWxlbWVudHMoCi0gICAgICAgICAgICAgICgoTUlNRVBhcnQpIG1pbWVQYXJ0cy5nZXQoaikpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpKTsKLSAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgZWxlbWVudHMgdG8gdGhlIGxpc3QgYmVpbmcgcmV0dXJuZWQKLSAgICAgICAgICAgIG1pbWVDb250ZW50RWxlbWVudHMuYWRkQWxsKGVsZW1zKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRWxzZSBpZiB0aGUgZWxlbWVudCBpcyBtaW1lOmNvbnRlbnQKLSAgICAgICAgZWxzZSBpZiAoZXh0RWxlbS5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0RMX01JTUVfQ09OVEVOVCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBBZGRpbmcgdGhlIGVsZW1lbnQgdG8gdGhlIGxpc3QgYmVpbmcgcmV0dXJuZWQKLSAgICAgICAgICBtaW1lQ29udGVudEVsZW1lbnRzLmFkZChleHRFbGVtKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBtaW1lQ29udGVudEVsZW1lbnRzOwotICB9Ci0KLSAgLyoqCi0gICAqIFZhbGlkYXRlcyBtaW1lOmNvbnRlbnQgZWxlbWVudHMuCi0gICAqIEBwYXJhbSBtaW1lQ29udGVudHMgYSBsaXN0IG9mIG1pbWU6Y29udGVudCBlbGVtZW50cy4KLSAgICogQHJldHVybiB0cnVlIGlmIGFueSBtaW1lOmNvbnRlbnQgZG9lcyBub3QgaW5jbHVkZSB0aGUgcGFydCBhdHRyaWJ1dGUsCi0gICAqIGZhbHNlIG90aGVyd2lzZQotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGhhc0ludmFsaWRNaW1lQ29udGVudChMaXN0IG1pbWVDb250ZW50cykKLSAgewotICAgIC8vIEdvaW5nIHRocm91Z2ggYSBsaXN0IG9mIG1pbWU6Y29udGVudCBlbGVtZW50cwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWltZUNvbnRlbnRzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgIC8vIElmIGEgbWltZTpjb250ZW50IGRvZXMgbm90IGluY2x1ZGUgdGhlIHBhcnQgYXR0cmlidXRlLCByZXR1cm4gdHJ1ZQotICAgICAgaWYgKCgoTUlNRUNvbnRlbnQpIG1pbWVDb250ZW50cy5nZXQoaSkpLmdldFBhcnQoKSA9PSBudWxsKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgLy8gVGhlcmUgYXJlIG5vIGludmFsaWQgbWltZTpjb250ZW50UywgcmV0dXJuIGZhbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAxMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAxMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTUxOTNlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMTAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0VHlwZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLQotLyoqCi0qIEJQMjAxMC4KLSogIk5hbWUiIGF0dHJpYnV0ZXMgb2YgT3BlcmF0aW9ucyBhcmUgdW5pcXVlIGFjcm9zcyB0aGUgd3NkbDpwb3J0VHlwZSBkZWZpbml0aW9uIAotKgotKiBAdmVyc2lvbiAxLjAuMSAyNy4wNi4yMDAzCi0qIEBhdXRob3IgVml0YWxpIEZlZG9zZW5rbwotKiovCi1wdWJsaWMgY2xhc3MgQlAyMDEwIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMDEwKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgLy8gR2V0IHRoZSBwb3J0VHlwZSBmcm9tIHRoZSBlbnRyeSBjb250ZXh0Ci0gICAgUG9ydFR5cGUgcG9ydFR5cGUgPSAoUG9ydFR5cGUpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAvLyBDaGVjayB0aGUgb3BlcmF0aW9ucyBuYW1lcyBmb3IgdW5pcXVlbmVzcyB3aXRoaW4gdGhlIGNhbmRpZGF0ZSBQb3J0IFR5cGUgaW4gdGhlIFdTREwgCi0gICAgSXRlcmF0b3Igb3BzOwotICAgIEhhc2hTZXQgbmFtZXNTZWVuID0gbmV3IEhhc2hTZXQoKTsKLSAgICBIYXNoU2V0IGR1cGxpY2F0ZXMgPSBuZXcgSGFzaFNldCgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIExpc3Qgb3BzTGlzdCA9IHBvcnRUeXBlLmdldE9wZXJhdGlvbnMoKTsKLSAgICAgIGlmIChvcHNMaXN0ID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICAgIC8vIG5vIG9wZXJhdGlvbnMgZm91bmQgaW4gcG9ydFR5cGUKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgb3BzID0gb3BzTGlzdC5pdGVyYXRvcigpOyAvLyB3aWxsIHVzZSBDYW5kaWRhdGUuZ2V0T3BlcmF0aW9ucygpCi0gICAgICAgIHdoaWxlIChvcHMuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgT3BlcmF0aW9uIG9wID0gKE9wZXJhdGlvbikgb3BzLm5leHQoKTsKLSAgICAgICAgICBTdHJpbmcgb3BOYW1lID0gb3AuZ2V0TmFtZSgpOwotICAgICAgICAgIGlmIChuYW1lc1NlZW4uY29udGFpbnMob3BOYW1lKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBkdXBsaWNhdGVzLmFkZChvcE5hbWUpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgbmFtZXNTZWVuLmFkZChvcE5hbWUpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoIWR1cGxpY2F0ZXMuaXNFbXB0eSgpKQotICAgICAgewotICAgICAgICBTdHJpbmdCdWZmZXIgZmFpbEluZm8gPQotICAgICAgICAgIG5ldyBTdHJpbmdCdWZmZXIoCi0gICAgICAgICAgICAiRHVwbGljYXRlIG9wZXJhdGlvbiBuYW1lcyBpbiBwb3J0VHlwZSAiCi0gICAgICAgICAgICAgICsgcG9ydFR5cGUuZ2V0UU5hbWUoKQotICAgICAgICAgICAgICArICI6ICIpOwotICAgICAgICBJdGVyYXRvciBpID0gZHVwbGljYXRlcy5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaS5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBmYWlsSW5mby5hcHBlbmQoKFN0cmluZykgaS5uZXh0KCkgKyAiOyAiKTsKLSAgICAgICAgfQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbihmYWlsSW5mby50b1N0cmluZygpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpCi0gICAgeyAvLyA/PyBubyBvcGVyYXRpb25zIGZvdW5kLCBidXQgZG9lcyBub3QgZmFpbCB0aGUgYXNzZXJ0aW9uLgotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGUuZ2V0TWVzc2FnZSgpLCBlbnRyeUNvbnRleHQsIHBvcnRUeXBlKTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDExLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDExLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NThhZmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAxMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQ5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLlJlYWRlcjsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuU3RyaW5nVG9rZW5pemVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLQotLyoqCi0gKiBCUDIwMTEuCi0gKiBUaGUgaW1wb3J0ZWQgWE1MIHNjaGVtYSBpcyBhIHdlbGwtZm9ybWVkIFhNTCAxLjAgZG9jdW1lbnQgYW5kIGlmIGl0IGNvbnRhaW5zIGFuIAotICogWE1MIGRlY2xhcmF0aW9uLCBpdCBpcyB2ZXJzaW9uIDEuMC4gCi0gKgotICogQHZlcnNpb24gMS4wLjEgMjcuMDYuMjAwMwotICogQGF1dGhvciBWaXRhbGkgRmVkb3NlbmtvCi0qKi8KLXB1YmxpYyBjbGFzcyBCUDIwMTEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIwMTEoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICBwcml2YXRlIGZpbmFsIGNoYXJbXSBPTU1JVEVEX1hNTF9ERUNMQVJBVElPTl9ERUxJTUlURVJTID0KLSAgICBuZXcgY2hhcltdIHsgMHgyMCwgMHg5LCAweEQsIDB4QSwgJ1wnJywgJ1wiJyB9OwotICBwcml2YXRlIGZpbmFsIGNoYXJbXSBYTUxfREVDTEFSQVRJT05fREVMSU1JVEVSUyA9IG5ldyBjaGFyW10geyAnPScgfTsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVkVSU0lPTl9UT0tFTiA9ICJ2ZXJzaW9uIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVkVSU0lPTiA9ICIxLjAiOwotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotCi0gICAgLy9EZWZpbml0aW9uIGRlZiA9IChEZWZpbml0aW9uKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotICAgIFR5cGVzIHR5cGVzID0gKFR5cGVzKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgTGlzdCBleHRzID0gbnVsbDsKLSAgICAvL2lmIChkZWYuZ2V0VHlwZXMoKSE9bnVsbCkKLSAgICBpZiAodHlwZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBleHRzID0gdHlwZXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgfQotICAgIGlmIChleHRzICE9IG51bGwpCi0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLSAgICAgIGlmICgoZGVmaW5pdGlvbiA9Ci0gICAgICAgIHZhbGlkYXRvci5hbmFseXplckNvbnRleHQuZ2V0Q2FuZGlkYXRlSW5mbygpLmdldERlZmluaXRpb24odHlwZXMpKQotICAgICAgICA9PSBudWxsKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCB0eXBlcyBkZWZpbml0aW9uIGluIGFueSBXU0RMIGRvY3VtZW50LiIpOwotICAgICAgfQotCi0gICAgICBJdGVyYXRvciBpdCA9IGV4dHMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGVsID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBpdC5uZXh0KCk7Ci0gICAgICAgIGlmIChlbCBpbnN0YW5jZW9mIFNjaGVtYSkKLSAgICAgICAgICBzZWFyY2hGb3JTY2hlbWEoKChTY2hlbWEpIGVsKS5nZXRFbGVtZW50KCksCi0gICAgICAgICAgICAgIGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCksIG5ldyBBcnJheUxpc3QoKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfSAvKmVsc2UKLSAgICAgICAgIAkJCXJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOyovCi0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyogU2VhcmNoIHhzZCBzY2hlbWEgb3IgeHNkIGltcG9ydCBmcm9tIG5vZGUuIElmIG5vZGUgaXMgeHNkIGltcG9ydCBpdCdzIGxvYWRpbmcgc2NoZW1hLgotICAgKiBAcGFyYW0gbiAtIFVua25vd25FeHRlbmNpYmlsaXR5RWxlbWVudAotICAqLwotICBwcml2YXRlIHZvaWQgc2VhcmNoRm9yU2NoZW1hKE5vZGUgbiwgU3RyaW5nIGNvbnRleHQsIExpc3QgcHJvY2Vzc2VkU2NoZW1hcykKLSAgewotICAgIGlmICgobiE9IG51bGwpICYmICghcHJvY2Vzc2VkU2NoZW1hcy5jb250YWlucyhuKSkpCi0gICAgewotICAgICAgd2hpbGUgKG4gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gc2VhcmNoZXMgZm9yIHhzZDppbXBvcnQgZWxlbWVudAotICAgICAgICBpZiAoTm9kZS5FTEVNRU5UX05PREUgPT0gbi5nZXROb2RlVHlwZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gaWYgeHNkOnNjaGVtYSBlbGVtZW50IGlzIGZvdW5kIC0+IHByb2Nlc3Mgc2NoZW1hCi0gICAgICAgICAgaWYgKFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9TQ0hFTUEpKQotICAgICAgICAgICAgcHJvY2Vzc1NjaGVtYShuLCBjb250ZXh0LCBwcm9jZXNzZWRTY2hlbWFzKTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAvLyBpZiB4c2Q6aW1wb3J0IGVsZW1lbnQgaXMgZm91bmQgLT4gbG9hZCBzY2hlbWEgYW5kIHByb2Nlc3Mgc2NoZW1hCi0gICAgICAgICAgICAvLyBGSVhFRDogaWYgeHNkOmltcG9ydCBpcyBmb3VuZCBhbmQgcGFyZW50IGVsZW1lbnQgaXMgeHNkOnNjaGVtYQotICAgICAgICAgICAgaWYgKFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9JTVBPUlQpCi0gICAgICAgICAgICAgICYmIFhNTFV0aWxzLmVxdWFscyhuLmdldFBhcmVudE5vZGUoKSwgRUxFTV9YU0RfU0NIRU1BKSkKLSAgICAgICAgICAgICAgbG9hZFNjaGVtYShuLCBjb250ZXh0LCBwcm9jZXNzZWRTY2hlbWFzKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgLy8gZWxzZSBpdGVyYXRlIGVsZW1lbnQgcmVjdXJzaXZlbHkKLSAgICAgICAgICAgICAgc2VhcmNoRm9yU2NoZW1hKG4uZ2V0Rmlyc3RDaGlsZCgpLCBjb250ZXh0LCBwcm9jZXNzZWRTY2hlbWFzKTsKLSAgICAgICAgfQotICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qCi0gICAqIEl0IGxvYWRzIHhzZCBzY2hlbWEgYW5kIHRoZW4gY2hlY2sgdGhlIHZlcnNpb24gMS4wIGFuZCBsb29raW5nIGZvciB4c2Q6c2NoZW1hIGVsZW1lbnQgZm9yIG5leHQgcHJvY2Vzcy4KLSAgICogQHBhcmFtIGltcG9ydE5vZGUgeHNkIHNjaGVtYQotICAqLwotICBwcml2YXRlIHZvaWQgbG9hZFNjaGVtYShOb2RlIGltcG9ydE5vZGUsIFN0cmluZyBjb250ZXh0LCBMaXN0IHByb2Nlc3NlZFNjaGVtYXMpCi0gIHsKLSAgICBFbGVtZW50IGltID0gKEVsZW1lbnQpIGltcG9ydE5vZGU7Ci0gICAgQXR0ciBzY2hlbWFMb2NhdGlvbiA9IFhNTFV0aWxzLmdldEF0dHJpYnV0ZShpbSwgQVRUUl9YU0RfU0NIRU1BTE9DQVRJT04pOwotICAgIC8vIHRyeSB0byBwYXJzZSBpbXBvcnRlZCBYU0QKLSAgICBpZiAoc2NoZW1hTG9jYXRpb24gIT0gbnVsbCAmJiBzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpICE9IG51bGwpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIC8vIGlmIGFueSBlcnJvciBvciByb290IGVsZW1lbnQgaXMgbm90IFhTRCBzY2hlbWEgLT4gZXJyb3IKLSAgICAgICAgU3RyaW5nIGRlY2wgPQotICAgICAgICAgIHJlYWRYTUxEZWNsYXJhdGlvblN0YXRlbWVudChzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpLCBjb250ZXh0KTsKLSAgICAgICAgaWYgKCF2YWxpZFZlcnNpb24oZGVjbCkpCi0gICAgICAgIHsKLSAgICAgICAgICBBdHRyIGEgPSBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoaW0sIEFUVFJfWFNEX05BTUVTUEFDRSk7Ci0gICAgICAgICAgZXJyb3JzLmFkZCgoYSAhPSBudWxsKSA/IGEuZ2V0VmFsdWUoKSA6ICIiKTsKLSAgICAgICAgfQotICAgICAgICBEb2N1bWVudCBzY2hlbWEgPQotICAgICAgICAgIHZhbGlkYXRvci5wYXJzZVhNTERvY3VtZW50VVJMKHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCksIGNvbnRleHQpOwotICAgICAgICBpZiAoWE1MVXRpbHMuZXF1YWxzKHNjaGVtYS5nZXREb2N1bWVudEVsZW1lbnQoKSwgRUxFTV9YU0RfU0NIRU1BKSkKLSAgICAgICAgewotICAgICAgICAgIHByb2Nlc3NTY2hlbWEoc2NoZW1hLmdldERvY3VtZW50RWxlbWVudCgpLAotICAgICAgICAgICAgWE1MVXRpbHMuY3JlYXRlVVJMU3RyaW5nKHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCksIGNvbnRleHQpLCBwcm9jZXNzZWRTY2hlbWFzKTsKLSAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICAgIHsKLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gZWxzZSBpZiB0aGVyZSBpcyBvbmx5IHRoZSBuYW1lc3BhY2UgYXR0cmlidXRlLCB0aGUgaW1wb3J0IHJlbGF0ZXMgdG8gaW5saW5lIHNjaGVtYQotICAgIGVsc2UgaWYgKFhNTFV0aWxzLmdldEF0dHJpYnV0ZShpbSwgQVRUUl9YU0RfTkFNRVNQQUNFKSAhPSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAqIFJlYWRzIGFuIFhNTCBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQuCi0gICogQHBhcmFtIGxvY2F0aW9uCi0gICogQHJldHVybiBTdHJpbmcKLSAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgcmVhZFhNTERlY2xhcmF0aW9uU3RhdGVtZW50KFN0cmluZyBsb2NhdGlvbiwgU3RyaW5nIGJhc2VVUkkpCi0gIHsKLSAgICBTdHJpbmcgcmVzdWx0ID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBuZXcgVVJMKGxvY2F0aW9uKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgIHsKLSAgICAgIC8vIG5vdGhpbmcKLSAgICAgIGludCBpID0gYmFzZVVSSS5sYXN0SW5kZXhPZignLycpOwotICAgICAgaW50IGogPSBiYXNlVVJJLmxhc3RJbmRleE9mKCdcXCcpOwotICAgICAgaWYgKGogPiBpKQotICAgICAgICBpID0gajsKLSAgICAgIGxvY2F0aW9uID0gYmFzZVVSSS5zdWJzdHJpbmcoMCwgaSArIDEpICsgbG9jYXRpb247Ci0gICAgfQotCi0gICAgaWYgKGxvY2F0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgVVJMIHVybCA9IG51bGw7Ci0gICAgICBSZWFkZXIgcmVhZGVyID0gbnVsbDsKLQotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgdXJsID0gbmV3IFVSTChsb2NhdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gd2Ugc2hvdWxkIHRyeSB0byBhY2Nlc3MgbG9jYXRpb24gYXMgZmlsZQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHVybCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgcmVhZGVyID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKHVybC5vcGVuU3RyZWFtKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHJlYWRlciA9IG5ldyBJbnB1dFN0cmVhbVJlYWRlcihuZXcgRmlsZUlucHV0U3RyZWFtKGxvY2F0aW9uKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgY2hhckNvZGU7Ci0gICAgICAgIGJvb2xlYW4gZW5kID0gZmFsc2U7Ci0gICAgICAgIGlmIChyZWFkZXIucmVhZHkoKSkKLSAgICAgICAgewotICAgICAgICAgIGNoYXJDb2RlID0gcmVhZGVyLnJlYWQoKTsKLQotICAgICAgICAgIHdoaWxlIChyZWFkZXIucmVhZHkoKSAmJiAhKGNoYXJDb2RlID09ICc8JykpCi0gICAgICAgICAgewotICAgICAgICAgICAgY2hhckNvZGUgPSByZWFkZXIucmVhZCgpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgICAgaWYgKGNoYXJDb2RlID09ICc8JykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBidWYuYXBwZW5kKChjaGFyKSBjaGFyQ29kZSk7Ci0gICAgICAgICAgICB3aGlsZSAocmVhZGVyLnJlYWR5KCkgJiYgIWVuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2hhckNvZGUgPSByZWFkZXIucmVhZCgpOwotICAgICAgICAgICAgICBidWYuYXBwZW5kKChjaGFyKSBjaGFyQ29kZSk7Ci0KLSAgICAgICAgICAgICAgZW5kID0gY2hhckNvZGUgPT0gJz4nOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gTk9URTogVGhpcyByZXN1bHQgZG9lcyBub3QgZ2V0IHByb3BvZ2F0ZWQgYmFjayEKLSAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPQotICAgICAgICAgICAgICAiQ2Fubm90IHJlYWQgdGhlIFhNTCBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQuIjsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICByZXN1bHQgPSBidWYudG9TdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgfQotICAgICAgZmluYWxseQotICAgICAgewotICAgICAgICBpZiAocmVhZGVyICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZWFkZXIuY2xvc2UoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKFRocm93YWJsZSBlKQotICAgICAgICAgIHsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoKLSAgICogQHBhcmFtIHhtbERlY2wgLSB4bWwgZGVjbGFyYXRpb24KLSAgICogQHJldHVybiBpZiB4bWwgZGVjbGFyYXRpb24gY29udGFpbnMgdmVyc2lvbj0iMS4wIiBpdCByZXRpcm5zIHRydWUuIAotICAqLwotICBwcml2YXRlIGJvb2xlYW4gdmFsaWRWZXJzaW9uKFN0cmluZyB4bWxEZWNsKQotICB7Ci0gICAgLy9ib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotICAgIGJvb2xlYW4gcmVzdWx0ID0gdHJ1ZTsKLSAgICBpZiAoeG1sRGVjbCAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9Ci0gICAgICAgIG5ldyBTdHJpbmdUb2tlbml6ZXIoCi0gICAgICAgICAgT01NSVRFRF9YTUxfREVDTEFSQVRJT05fREVMSU1JVEVSUywKLSAgICAgICAgICBYTUxfREVDTEFSQVRJT05fREVMSU1JVEVSUyk7Ci0gICAgICBFbnVtZXJhdGlvbiB0b2tlbnMgPSBzdC5wYXJzZSh4bWxEZWNsKTsKLSAgICAgIGJvb2xlYW4gZm91bmQgPSBmYWxzZTsKLSAgICAgIHdoaWxlICh0b2tlbnMuaGFzTW9yZUVsZW1lbnRzKCkgJiYgIWZvdW5kKQotICAgICAgewotICAgICAgICBTdHJpbmcgdG9rZW4gPSAoU3RyaW5nKSB0b2tlbnMubmV4dEVsZW1lbnQoKTsKLQotICAgICAgICBpZiAodG9rZW4uZXF1YWxzSWdub3JlQ2FzZShWRVJTSU9OX1RPS0VOKSkKLSAgICAgICAgewotICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLQotICAgICAgICAgIHRva2Vucy5uZXh0RWxlbWVudCgpOwotICAgICAgICAgIFN0cmluZyB2ZXIgPSAoU3RyaW5nKSB0b2tlbnMubmV4dEVsZW1lbnQoKTsKLQotICAgICAgICAgIHJlc3VsdCA9IFZFUlNJT04uZXF1YWxzKHZlcik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoKLSAgICogSXQncyBsb2tpbmcgZm9yIHhzZCBpbXBvcnQgYW5kIGxvYWQgaXQgaWYgZmluZC4KLSAgICogQHBhcmFtIHNjaGVtYSB4c2Qgc2NoZW1hCi0gICovCi0gIHByaXZhdGUgdm9pZCBwcm9jZXNzU2NoZW1hKE5vZGUgc2NoZW1hLCBTdHJpbmcgY29udGV4dCwgTGlzdCBwcm9jZXNzZWRTY2hlbWFzKQotICB7Ci0JaWYgKChzY2hlbWEgIT0gbnVsbCkgJiYgKCFwcm9jZXNzZWRTY2hlbWFzLmNvbnRhaW5zKHNjaGVtYSkpKQotCXsKLQkgIHByb2Nlc3NlZFNjaGVtYXMuYWRkKHNjaGVtYSk7Ci0gICAgICBOb2RlIG4gPSBzY2hlbWEuZ2V0Rmlyc3RDaGlsZCgpOwotICAgICAgd2hpbGUgKG4gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaWYgKE5vZGUuRUxFTUVOVF9OT0RFID09IG4uZ2V0Tm9kZVR5cGUoKQotICAgICAgICAgICYmIFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9JTVBPUlQpKQotICAgICAgICAgIGxvYWRTY2hlbWEobiwgY29udGV4dCwgcHJvY2Vzc2VkU2NoZW1hcyk7Ci0KLSAgICAgICAgbiA9IG4uZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICAgIH0KLQl9Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDEyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDEyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMzNjMWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAxMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbC5XU0RMVmFsaWRhdG9ySW1wbC5CaW5kaW5nTWF0Y2g7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLQotLyoqCi0gICogQlAyMDEyLgotICAqIEV4YW1wbGU6Ci0gICogCi0gICogPG1lc3NhZ2UgbmFtZT0iZ2V0Q29uZmlndXJhdGlvbk9wdGlvbnNSZXF1ZXN0Ij4KLSAgKiAJPHBhcnQgbmFtZT0icmVmcmVzaCIgZWxlbWVudD0iY2ZnOnJlZnJlc2giIC8+IAotICAqIDwvbWVzc2FnZT4KLSAgKiA8cG9ydFR5cGUgbmFtZT0iQ29uZmlndXJhdG9yUG9ydFR5cGUiPgotICAqIAk8b3BlcmF0aW9uIG5hbWU9ImdldENvbmZpZ3VyYXRpb25PcHRpb25zIj4KLSAgKiAJCTxpbnB1dCBtZXNzYWdlPSJ0bnM6Z2V0Q29uZmlndXJhdGlvbk9wdGlvbnNSZXF1ZXN0IiAvPiAKLSAgKiAJCTxvdXRwdXQgLi4uLi4gLz4gCi0gICogCQk8ZmF1bHQgLi4uLi4gLz4gCi0gICogCTwvb3BlcmF0aW9uPgotICAqIDwvcG9ydFR5cGU+Ci0gICogPGJpbmRpbmcgbmFtZT0iQ29uZmlndXJhdG9yQmluZGluZyIgdHlwZT0idG5zOkNvbmZpZ3VyYXRvclBvcnRUeXBlIj4KLSAgKiAJPHNvYXA6YmluZGluZyB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgc3R5bGU9ImRvY3VtZW50IiAvPiAKLSAgKiAJPG9wZXJhdGlvbiBuYW1lPSJnZXRDb25maWd1cmF0aW9uT3B0aW9ucyI+Ci0gICoJCTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3Lnp6ei5jb20venp6LndzZGwvZ2V0Q29uZmlndXJhdGlvbk9wdGlvbnMiIC8+IAotICAqIAkJPGlucHV0PgotICAqIAkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuenp6LmNvbS96enoud3NkbCIgLz4gCi0gICogCQk8L2lucHV0PgotICAqIAkJPG91dHB1dD4uLi4uLjwvb3V0cHV0PgotICAqCQk8ZmF1bHQ+Li4uLi4uPC9mYXVsdD4KLSAgKiAJPC9vcGVyYXRpb24+Ci0gICogPC9iaW5kaW5nPgotICAqIAotICAqIEFib3ZlLCB0aGUgdGVzdCBmb3IgdGhpcyBhc3NlcnRpb24gbWlnaHQgYmUgdGhhdCB0aGUgZWxlbWVudCBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIGluIHRoZSAicmVmcmVzaCIgCi0gICogcGFydCBvZiB0aGUgZ2V0Q29uZmlndXJhdGlvbk9wdGlvbnNSZXF1ZXN0IG1lc3NhZ2UuIAotICAqIAotICAqIENvbnRleHQgOiBmb3IgPGJpbmRpbmc+ICJDb25maWd1cmF0b3JCaW5kaW5nIiwgPHNvYXA6YmluZGluZz4gc3R5bGU9ZG9jdW1lbnQ7IDxzb2FwOmJvZHk+IHVzZT1saXRlcmFsCi0gICogZm9yIHRoZSA8aW5wdXQ+IG9mIGJpbmRpbmcgb3BlcmF0aW9uICJnZXRDb25maWd1cmF0aW9uT3B0aW9ucyIuIAotICAqICg8aW5wdXQ+IGlzIGFuIGV4YW1wbGUuIENvdWxkIGJlIDxvdXRwdXQ+IG9yIDxmYXVsdD4gZXF1YWxseSkuCi0gICogQWN0aW9uOiBjaGVjayB0aGUgcGFydChzKSBvZiB0aGUgbWVzc2FnZSBzcGVjaWZpZWQgaW4gdGhlIDxpbnB1dD4gZWxlbWVudCAoaW4gZXhhbXBsZSkgb2YgdGhlIDxwb3J0VHlwZT4sCi0gICogbmFtZWx5IHRuczpnZXRDb25maWd1cmF0aW9uT3B0aW9uc1JlcXVlc3QsIHRoYXQgdGhlIGVsZW1lbnQgYXR0cmlidXRlIGlzIHNwZWNpZmllZC4gSW4gdGhpcyBjYXNlIHdlIGhhdmUKLSAgKiA8cGFydCBuYW1lPSJyZWZyZXNoIiBlbGVtZW50PSJjZmc6cmVmcmVzaCIgLz4sIHNvIHRoZSB0ZXN0IHBhc3Nlcy4KLSAgKiBBbGwgc3VjaCBwYXJ0cyBhc3NvY2lhdGVkIHdpdGggdGhlIGFzc2VydGlvbiBjYW5kaWRhdGUgYmluZGluZyhzKSBtdXN0IGJlIHNpbWlsYXJseSBjaGVja2VkIGZvciB0aGlzIGFzc2VydGlvbgotICAqIHRvIHBhc3MuCi0gICovCi1wdWJsaWMgY2xhc3MgQlAyMDEyIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMDEyKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiAKLSAgICogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBHZXQgYmluZGluZyBmcm9tIGVudHJ5IGNvbnRleHQKLQotICAgIC8vIE9sZWcncyAmIEdyYWhhbSdzIHZlcnNpb246Ci0gICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAvLyB0byB1c2Ugb3JpZ2luYWwgdmVyc2lvbiByZXF1aXJlIGEgYmluZGluZyBhcnJheQotICAgIC8vQmluZGluZ1tdIGJpbmRpbmcgPSB7KEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCl9OwotCi0gICAgLy8gZ2V0IGxpc3Qgb2YgY2FuZGlkYXRlIG1hdGNoZXMKLSAgICBCaW5kaW5nTWF0Y2hbXSBiaW5kaW5nTWF0Y2ggPQotICAgICAgdGhpcy52YWxpZGF0b3IuZ2V0QmluZGluZ01hdGNoZXMoCi0gICAgICAgIGJpbmRpbmcsCi0gICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9ET0MsCi0gICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQk9EWV9VU0VfTElUKTsKLSAgICBpZiAoYmluZGluZ01hdGNoLmxlbmd0aCA9PSAwKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBpZiAoIXRoaXMudmFsaWRhdG9yLmNoZWNrUGFydEF0dHJpYnV0ZXMoYmluZGluZ01hdGNoLCAidXNlSW5wdXQiLCAidXNlRWxlbWVudCIpCi0gICAgICAgICAgfHwgIXRoaXMudmFsaWRhdG9yLmNoZWNrUGFydEF0dHJpYnV0ZXMoYmluZGluZ01hdGNoLCAidXNlT3V0cHV0IiwgInVzZUVsZW1lbnQiKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbgotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJkaWFnbm9zdGljOiBpbnRlcm5hbCBwcm9jZXNzaW5nIGVycm9yISIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0LCBiaW5kaW5nKTsKLSAgICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMTMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMTMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkzYTM3OC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDEzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGwuV1NETFZhbGlkYXRvckltcGwuQmluZGluZ01hdGNoOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0KLS8qKgotICogQlAyMDEzLgotICogVGhlIGJpbmRpbmcgKGluIHNvYXBiaW5kOmJvZHkgZWxlbWVudHMpIG9ubHkgcmVmZXJzIHRvIHBhcnQgZWxlbWVudHMgdGhhdCBoYXZlIGJlZW4gZGVmaW5lZCB1c2luZyB0aGUgInR5cGUiIGF0dHJpYnV0ZS4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMSAyNy4wNi4yMDAzCi0gKiBAYXV0aG9yIFZpdGFsaSBGZWRvc2Vua28KLSAqLwotcHVibGljIGNsYXNzIEJQMjAxMyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjAxMyhXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBHZXQgYmluZGluZyBmcm9tIGVudHJ5IGNvbnRleHQKLQotICAgIC8vIE9sZWcncyAmIEdyYWhhbSdzIHZlcnNpb246Ci0gICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAvLyB0byB1c2Ugb3JpZ2luYWwgdmVyc2lvbiByZXF1aXJlIGEgYmluZGluZyBhcnJheQotICAgIC8vQmluZGluZ1tdIGJpbmRpbmcgPSB7KEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCl9OwotCi0gICAgLy8gZ2V0IGxpc3Qgb2YgY2FuZGlkYXRlIG1hdGNoZXMKLSAgICBCaW5kaW5nTWF0Y2hbXSBiaW5kaW5nTWF0Y2ggPQotICAgICAgdGhpcy52YWxpZGF0b3IuZ2V0QmluZGluZ01hdGNoZXMoCi0gICAgICAgIGJpbmRpbmcsCi0gICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMsCi0gICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQk9EWV9VU0VfTElUKTsKLSAgICBpZiAoYmluZGluZ01hdGNoLmxlbmd0aCA9PSAwKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBpZiAoIXRoaXMudmFsaWRhdG9yLmNoZWNrUGFydEF0dHJpYnV0ZXMoYmluZGluZ01hdGNoLCAidXNlSW5wdXQiLCAidXNlVHlwZSIpCi0gICAgICAgICAgfHwgIXRoaXMudmFsaWRhdG9yLmNoZWNrUGFydEF0dHJpYnV0ZXMoYmluZGluZ01hdGNoLCAidXNlT3V0cHV0IiwgInVzZVR5cGUiKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbgotICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJkaWFnbm9zdGljOiBpbnRlcm5hbCBwcm9jZXNzaW5nIGVycm9yISIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlLmdldE1lc3NhZ2UoKSwgZW50cnlDb250ZXh0LCBiaW5kaW5nKTsKLSAgICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMTQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMTQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMxMDg4OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDE0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyODYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0OwotCi0KLS8qKgotICogQlAyMDE0LgotICogQ29udGV4dDoKLSAqIEZvciBhIGNhbmRpZGF0ZSB3c2RsOm9wZXJhdGlvbiwgaWYgcmVmZXJyZWQgdG8gYnkgYSBjYW5kaWRhdGUgcnBjLWxpdGVyYWwgd3NkbDpiaW5kaW5nIGVsZW1lbnQKLSAqIElmIHRoZSBwYXJhbWV0ZXJPcmRlciBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgaXQgb21pdHMgYXQgbW9zdCAxIHBhcnQgZnJvbSBvdXRwdXQgd3NkbDptZXNzYWdlLgotICoqLwotcHVibGljIGNsYXNzIEJQMjAxNCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIwMTQoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICAvKgotICAgKiBAcGFyYW0gYmluZGluZyAtIGJpbmRpbmcKLSAgICogQHJldHVybiBJdCByZXR1cm5zIHN0eWxlIG9mIHNvYXAgYmluZGluZyBvZiBiaW5kaW5nLiBJZiBzdHlsZSBvbWl0dGVkIHJldHVybnMgImRvY3VtZW50IiBzdHlsZS4gICAKLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIGdldFNPQVBCaW5kaW5nU3R5bGUoQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgU3RyaW5nIHN0eWxlID0gbnVsbDsKLSAgICBMaXN0IGxpc3QgPSBiaW5kaW5nLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykKLSAgICB7Ci0gICAgICBpZiAobGlzdC5nZXQoaSkgaW5zdGFuY2VvZiBTT0FQQmluZGluZykKLSAgICAgIHsKLSAgICAgICAgc3R5bGUgPSAoKFNPQVBCaW5kaW5nKSBsaXN0LmdldChpKSkuZ2V0U3R5bGUoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChzdHlsZSA9PSBudWxsKQotICAgICAgc3R5bGUgPSBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DOwotICAgIHJldHVybiBzdHlsZTsKLSAgfQotCi0gIC8qCi0gICAqIEBwYXJhbSBsaXN0IC0gTGlzdCBvZiBleHRlbmNpYmlsaXR5IGVsZW1lbnRzIGZyb20gYmluZGluZyBvdXRwdXQKLSAgICogQHJldHVybiBmaXJzdCBzb2FwIGJvZHkgaW4gbGlzdC4KLSAgICovCi0gIHByaXZhdGUgU09BUEJvZHkgZ2V0U09BUEJvZHkoTGlzdCBsaXN0KQotICB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKQotICAgICAgaWYgKGxpc3QuZ2V0KGkpIGluc3RhbmNlb2YgU09BUEJvZHkpCi0gICAgICAgIHJldHVybiAoU09BUEJvZHkpIGxpc3QuZ2V0KGkpOwotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoKLSAgICogQHBhcmFtIGxpc3QgLSBMaXN0IG9mIGV4dGVuY2liaWxpdHkgZWxlbWVudHMgb2YgYmluZGluZyBvcGVyYXRpb24KLSAgICogQHJldHVybiBGaXJzdCBzb2FwIG9wZXJhdGlvbiBpbiBsaXN0LgotICAgKi8KLSAgcHJpdmF0ZSBTT0FQT3BlcmF0aW9uIGdldFNPQVBPcGVyYXRpb24oTGlzdCBsaXN0KQotICB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKQotICAgICAgaWYgKGxpc3QuZ2V0KGkpIGluc3RhbmNlb2YgU09BUE9wZXJhdGlvbikKLSAgICAgICAgcmV0dXJuIChTT0FQT3BlcmF0aW9uKSBsaXN0LmdldChpKTsKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qICAgICAgICAgIAotICAgKiBAcGFyYW0gb3BlciAtIG9wZXJhdGlvbgotICAgKiBAcGFyYW0gYmluZGluZyAtIGJpbmRpbmcKLSAgICogQHJldHVybiBpZiBzdHlsZSBvZiBzb2FwIGJpbmRpbmcgb2YgYmluZGluZyBpcyBycGMgYW5kIHVzZSBvZiBzb2FwIGJvZHkgb2YgYmluZGluZyBvdXRwdXQgb2YgYmluZGluZyBvcGVyYXRpb24gaXMgbGl0ZXJhbCB0aGVuIGl0IHJldHVybnMgdHJ1ZS4gCi0gICovCi0gIHByaXZhdGUgYm9vbGVhbiBjaGVja1JwY0xpdGVyYWwoQmluZGluZ09wZXJhdGlvbiBvcGVyLCBCaW5kaW5nIGJpbmRpbmcpCi0gIHsKLSAgICBMaXN0IGxpc3QgPSBvcGVyLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIFNPQVBPcGVyYXRpb24gc29wID0gZ2V0U09BUE9wZXJhdGlvbihsaXN0KTsKLSAgICBpZiAoc29wID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIHN0eWxlID0KLSAgICAgIChzb3AuZ2V0U3R5bGUoKSA9PSBudWxsCi0gICAgICAgID8gZ2V0U09BUEJpbmRpbmdTdHlsZShiaW5kaW5nKQotICAgICAgICA6IHNvcC5nZXRTdHlsZSgpKTsKLSAgICBpZiAoIXN0eWxlLmVxdWFscyhXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfUlBDKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBsaXN0ID0gb3Blci5nZXRCaW5kaW5nT3V0cHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgU09BUEJvZHkgYm9keSA9IGdldFNPQVBCb2R5KGxpc3QpOwotICAgIGlmIChib2R5ID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIHVzZSA9IGJvZHkuZ2V0VXNlKCk7Ci0gICAgaWYgKHVzZSA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHVzZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CT0RZX1VTRV9MSVQpOwotICB9Ci0KLSAgLyogSXQgY2hlY2tzIG9wZXJhdGlvbiBjb250YWlucyBtb3JlIHRoYW4gb25lIHBhcnQgaW4gcGFyYW1ldGVyIG9yZGVyIAotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5PcGVyYXRpb24sIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChPcGVyYXRpb24gb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBCaW5kaW5nW10gYmluZGluZ3MgPSB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXRCaW5kaW5ncygpOwotICAgIGlmIChvYmouZ2V0UGFyYW1ldGVyT3JkZXJpbmcoKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGJpbmRpbmdzID09IG51bGwgfHwgb2JqID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAob2JqLmdldE91dHB1dCgpID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAob2JqLmdldE91dHB1dCgpLmdldE1lc3NhZ2UoKSA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRm9yIGVhY2ggYmluZGluZwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYmluZGluZ3MubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgTGlzdCBsaXN0ID0gYmluZGluZ3NbaV0uZ2V0QmluZGluZ09wZXJhdGlvbnMoKTsKLSAgICAgIC8vIEZvciBlYWNoIGJpbmRpbmcgb3BlcmF0aW9uCi0gICAgICBmb3IgKGludCBqID0gMDsgaiA8IGxpc3Quc2l6ZSgpOyBqKyspCi0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdPcGVyYXRpb24gb3BlciA9IChCaW5kaW5nT3BlcmF0aW9uKSBsaXN0LmdldChqKTsKLQotICAgICAgICAvLyBJZiB0aGUgaW5wdXQgb3BlcmF0aW9uIG5hbWUgYW5kIGJpbmRpbmcgb3BlcmF0aW5vIG5hbWUgYXJlIG5vdCBudWxsCi0gICAgICAgIGlmIChvYmouZ2V0TmFtZSgpICE9IG51bGwgJiYgb3Blci5nZXROYW1lKCkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIC8vIElmIHRoZSBvcGVyYXRpb24gbmFtZXMgYXJlIGVxdWFsCi0gICAgICAgICAgaWYgKG9iai5nZXROYW1lKCkuZXF1YWxzKG9wZXIuZ2V0TmFtZSgpKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgb3BlcmF0aW9uIGlzIFJQQyBsaXRlcmFsCi0gICAgICAgICAgICBpZiAoY2hlY2tScGNMaXRlcmFsKG9wZXIsIGJpbmRpbmdzW2ldKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy8gR2V0IHRoZSBsaXN0IG9mIHBhcnRzIGluIHRoZSBwYXJhbWV0ZXJPcmRlciBhdHRyaWJ1dGUJCQkJCi0gICAgICAgICAgICAgIExpc3QgcGFydHMgPSBvYmouZ2V0UGFyYW1ldGVyT3JkZXJpbmcoKTsKLQotICAgICAgICAgICAgICBPdXRwdXQgb3V0cHV0ID0gbnVsbDsKLSAgICAgICAgICAgICAgTWVzc2FnZSBtZXNzYWdlID0gbnVsbDsKLSAgICAgICAgICAgICAgTWFwIG1lc3NhZ2VQYXJ0cyA9IG51bGw7Ci0KLSAgICAgICAgICAgICAgLy8gR2V0IHRoZSBsaXN0IG9mIHBhcnRzIGZvciB0aGUgb3V0cHV0IG1lc3NhZ2UKLSAgICAgICAgICAgICAgaWYgKChvdXRwdXQgPSBvYmouZ2V0T3V0cHV0KCkpICE9IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoKG1lc3NhZ2UgPSBvdXRwdXQuZ2V0TWVzc2FnZSgpKSAhPSBudWxsKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIG1lc3NhZ2VQYXJ0cyA9IG1lc3NhZ2UuZ2V0UGFydHMoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgcGFydHMgaW4gdGhlIHBhcmFtZXRlck9yZGVyIGF0dHJpYnV0ZSAKLSAgICAgICAgICAgICAgLy8gYW5kIHRoZXJlIGFyZSBvdXRwdXQgbWVzc2FnZSBwYXJ0cywgdGhlbiBwcm9jZXNzIGFzc2VydGlvbgotICAgICAgICAgICAgICBpZiAocGFydHMgIT0gbnVsbCAmJiBtZXNzYWdlUGFydHMgIT0gbnVsbCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBwYXJ0Q291bnQgPSAwOwotCi0gICAgICAgICAgICAgICAgU3RyaW5nIHBhcnROYW1lOwotICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gcGFydHMuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIC8vIEdldCBwYXJ0IG5hbWUgZnJvbSBwYXJhbWV0ZXJPcmRlciBsaXN0Ci0gICAgICAgICAgICAgICAgICBwYXJ0TmFtZSA9IChTdHJpbmcpIGl0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZWFjaCBvdXRwdXQgbWVzc2FnZSBwYXJ0IHRvIHNlZSBpZiB0aGVyZSBpcyBhIG1hdGNoCi0gICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZVBhcnRzLmNvbnRhaW5zS2V5KHBhcnROYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgcGFydENvdW50Kys7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKChwYXJ0Q291bnQgPT0gbWVzc2FnZVBhcnRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICAgIHx8IChwYXJ0Q291bnQgPT0gbWVzc2FnZVBhcnRzLnNpemUoKSAtIDEpKQotICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGVycm9ycy5hZGQob2JqLmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgICBjdHguY2FuY2VsT3BlcmF0aW9uUHJvY2Vzc2luZygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAocGFydHMgPT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgLy9WaXNpdG9yQWRhcHRvci5hZGFwdCh0aGlzKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRPcGVyYXRpb24odHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZUltcG9ydCgpOwotICAgIHRyYXZlcnNhbC50cmF2ZXJzZSgoT3BlcmF0aW9uKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLQotICAgIGlmICghZXJyb3JzLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgIGVycm9ycy50b1N0cmluZygpLAotICAgICAgICAgIGVudHJ5Q29udGV4dCwKLSAgICAgICAgICBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLSAgICB9Ci0gICAgLy9lbHNlCi0gICAgLy8gIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMTcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMTcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRmNDU5MC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDE3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLQotLyoqCi0gKiBCUDIwMTcuCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSAic3R5bGUiIGF0dHJpYnV0ZSBvZiBlYWNoIG9wZXJhdGlvbiBpbiB0aGUgY29udGFpbmVkIHNvYXA6YmluZGluZyBoYXMgdGhlIHNhbWUgdmFsdWUgb2YgImRvY3VtZW50IiBvciAicnBjIiwgZm9yIGFsbCBvcGVyYXRpb25zIG9mIHRoZSB3c2RsOmJpbmRpbmcuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjAxNyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjAxNyhXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvL1N0cmluZyBmaXJzdFN0eWxlID0gbnVsbDsgLy8gR1Q6IGlzIHRoaXMgbmVlZGVkPz8KLSAgICBWZWN0b3IgZmFpbHVyZURldGFpbExpc3QgPSBuZXcgVmVjdG9yKCk7Ci0KLSAgICAvLyBHZXQgdGhlIGJpbmRpbmcgZnJvbSB0aGUgZW50cnkgY29udGV4dAotICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotICAgIGlmIChiaW5kaW5nID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbExpc3QpOwotICAgIH0KLSAgICBTT0FQQmluZGluZyBzb2FwQiA9IFdTRExWYWxpZGF0b3JJbXBsLmdldFNvYXBCaW5kaW5nKGJpbmRpbmcpOwotICAgIGlmIChzb2FwQiA9PSBudWxsKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWxMaXN0KTsKLSAgICB9Ci0gICAgU3RyaW5nIHN0eWxlQiA9Ci0gICAgICAoc29hcEIuZ2V0U3R5bGUoKSA9PSBudWxsCi0gICAgICAgID8gV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQwotICAgICAgICA6IHNvYXBCLmdldFN0eWxlKCkpOwotCi0gICAgLy8gVHJ5IHRvIGdldCB0aGUgU09BUCBvcGVyYXRpb25zCi0gICAgSGFzaE1hcCBzb2FwT3BlcmF0aW9uTGlzdCA9IHZhbGlkYXRvci5nZXRTb2FwT3BlcmF0aW9ucyhiaW5kaW5nKTsKLQotICAgIGlmIChzb2FwT3BlcmF0aW9uTGlzdC5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIGNoZWNrIHRoYXQgdGhleSBhbGwgaGF2ZSB0aGUgc2FtZSBzdHlsZSBlbGVtZW50IHZhbHVlCi0gICAgICBTdHJpbmcgc3R5bGUgPSBudWxsOwotICAgICAgU3RyaW5nIGNoZWNrU3R5bGU7Ci0gICAgICBTT0FQT3BlcmF0aW9uIHNvYXBPcGVyYXRpb247Ci0gICAgICBJdGVyYXRvciBpdGVyYXRvciA9IHNvYXBPcGVyYXRpb25MaXN0LmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBzb2FwT3BlcmF0aW9uID0gKFNPQVBPcGVyYXRpb24pIGl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgY2hlY2tTdHlsZSA9IHNvYXBPcGVyYXRpb24uZ2V0U3R5bGUoKTsKLSAgICAgICAgaWYgKGNoZWNrU3R5bGUgPT0gbnVsbCkKLSAgICAgICAgICBjaGVja1N0eWxlID0gc3R5bGVCOwotICAgICAgICBpZiAoY2hlY2tTdHlsZSAhPSBudWxsCi0gICAgICAgICAgJiYgIWNoZWNrU3R5bGUuZXF1YWxzKFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9ET0MpCi0gICAgICAgICAgJiYgIWNoZWNrU3R5bGUuZXF1YWxzKFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMpKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbExpc3QuYWRkKAotICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICAgIk9wZXJhdGlvbiBOYW1lOiAiCi0gICAgICAgICAgICAgICAgKyBzb2FwT3BlcmF0aW9uTGlzdC5nZXQoc29hcE9wZXJhdGlvbikKLSAgICAgICAgICAgICAgICArICJcblNPQVAgT3BlcmF0aW9uOiAiCi0gICAgICAgICAgICAgICAgKyBzb2FwT3BlcmF0aW9uLnRvU3RyaW5nKCksCi0gICAgICAgICAgICAgIGVudHJ5Q29udGV4dCwKLSAgICAgICAgICAgICAgc29hcE9wZXJhdGlvbikpOwotICAgICAgICAgIC8vIFJFTU9WRTogTmVlZCB0byBwcm9jZXNzIGFsbCBvcGVyYXRpb25zCi0gICAgICAgICAgLy9icmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzdHlsZSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgc3R5bGUgPSBjaGVja1N0eWxlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCFzdHlsZS5lcXVhbHMoY2hlY2tTdHlsZSkgfHwgIXN0eWxlLmVxdWFscyhzdHlsZUIpKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbExpc3QuYWRkKAotICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICAgIk9wZXJhdGlvbiBOYW1lOiAiCi0gICAgICAgICAgICAgICAgKyBzb2FwT3BlcmF0aW9uTGlzdC5nZXQoc29hcE9wZXJhdGlvbikKLSAgICAgICAgICAgICAgICArICJcblNPQVAgT3BlcmF0aW9uOiAiCi0gICAgICAgICAgICAgICAgKyBzb2FwT3BlcmF0aW9uLnRvU3RyaW5nKCksCi0gICAgICAgICAgICAgIGVudHJ5Q29udGV4dCwKLSAgICAgICAgICAgICAgc29hcE9wZXJhdGlvbikpOwotICAgICAgICAgIC8vIFJFTU9WRTogTmVlZCB0byBwcm9jZXNzIGFsbCBvcGVyYXRpb25zCi0gICAgICAgICAgLy9icmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoc3R5bGUgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gbm8gc3R5bGUgYXR0cmlidXRlIHdhcyBmb3VuZCBpbiB0aGUgU09BUCBvcGVyYXRpb24ocykgb2YgdGhlIGJpbmRpbmcuCi0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsTGlzdCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDE4LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDE4LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNDY3Y2QuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAxOC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogQlAyMDE4LiAKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSBXZWIgc2VydmljZSBkZWZpbml0aW9uPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSB3c2RsOnR5cGVzIGVsZW1lbnQgb2NjdXJzIGVpdGhlciBhcyB0aGUgZmlyc3QgY2hpbGQgaW4gdGhlIFdTREwgbmFtZXNwYWNlIG9mIHRoZSB3c2RsOmRlZmluaXRpb25zIGVsZW1lbnQgaWYgbm8gd3NkbDpkb2N1bWVudGF0aW9uIG9yIHdzZGw6aW1wb3J0IGVsZW1lbnQgaXMgcHJlc2VudDsgb3IgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSB3c2RsOmRvY3VtZW50YXRpb24gZWxlbWVudChzKSBpZiB0aGV5IGFyZSBwcmVzZW50IGJ1dCB3c2RsOmltcG9ydChzKSBhcmUgbm90LCBvciBpbW1lZGlhdGVseSBmb2xsb3dpbmcgYm90aCB0aGUgd3NkbDpkb2N1bWVudGF0aW9uIGFuZCB3c2RsOmltcG9ydCBlbGVtZW4ocykgaWYgcHJlc2VudC48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlAyMDE4IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMDE4KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKgotICAgKiBAcGFyYW0gZWwgLSB4bWwgZWxlbWVudAotICAgKiBAcmV0dXJuIGlmIGVsZW1lbnQgaXMgZXh0ZW5zaWJpbGl0eSBlbGVtZW50IHJldHVybnMgdHJ1ZS4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBpc0V4dGVuc2liaWxpdHlFbGVtZW50KEVsZW1lbnQgZWwpCi0gIHsKLSAgICBib29sZWFuIGlzRXggPSB0cnVlOwotICAgIGlzRXggPSBpc0V4ICYmICFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfQklORElORyk7Ci0gICAgaXNFeCA9IGlzRXggJiYgIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9ERUZJTklUSU9OUyk7Ci0gICAgaXNFeCA9IGlzRXggJiYgIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9ET0NVTUVOVEFUSU9OKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX0ZBVUxUKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX0lNUE9SVCk7Ci0gICAgaXNFeCA9IGlzRXggJiYgIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9JTlBVVCk7Ci0gICAgaXNFeCA9IGlzRXggJiYgIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9NRVNTQUdFKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX09QRVJBVElPTik7Ci0gICAgaXNFeCA9IGlzRXggJiYgIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9PVVRQVVQpOwotICAgIGlzRXggPSBpc0V4ICYmICFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfUEFSVCk7Ci0gICAgaXNFeCA9IGlzRXggJiYgIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9QT1JUKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX1BPUlRUWVBFKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX1NFUlZJQ0UpOwotICAgIGlzRXggPSBpc0V4ICYmICFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfVFlQRVMpOwotCi0gICAgcmV0dXJuIGlzRXg7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgLy8gR2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgV1NETCBkb2N1bWVudAotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9Ci0gICAgICAoRGVmaW5pdGlvbikgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBQYXJzZSB0aGUgV1NETCBkb2N1bWVudCBhcyBhbiBYTUwgZmlsZQotICAgICAgRG9jdW1lbnQgZG9jID0KLSAgICAgICAgdmFsaWRhdG9yLnBhcnNlWE1MRG9jdW1lbnRVUkwoZGVmaW5pdGlvbi5nZXREb2N1bWVudEJhc2VVUkkoKSwgbnVsbCk7Ci0KLSAgICAgIEVsZW1lbnQgcm9vdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsgLy8gZ2V0IGRlZmluaXRpb24KLQotICAgICAgRWxlbWVudCB0eXBlcyA9IFhNTFV0aWxzLmZpbmRDaGlsZEVsZW1lbnQoKEVsZW1lbnQpIHJvb3QsIFdTRExfVFlQRVMpOwotCi0gICAgICBpZiAodHlwZXMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgRWxlbWVudCBlbCA9IFhNTFV0aWxzLmZpbmRQcmV2aW91c1NpYmxpbmcodHlwZXMpOwotICAgICAgICB3aGlsZSAoZWwgIT0gbnVsbCkKLQkJewotICAgICAgICAgIGlmICghaXNFeHRlbnNpYmlsaXR5RWxlbWVudChlbCkgJiYKLQkJCSAgICgoIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9JTVBPUlQpKSAmJgotCQkJICAgICghWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX0RPQ1VNRU5UQVRJT04pKSkpCi0JCSAgewotCQkgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0JCQlTdHJpbmcgbWVzc2FnZSA9ICJUaGUgIiArIGVsLmdldExvY2FsTmFtZSgpICsgIiBlbGVtZW50IG11c3Qgbm90IHByZWNlZGUgdGhlIHR5cGVzIGVsZW1lbnQuIjsKLQkJICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKG1lc3NhZ2UsIGVudHJ5Q29udGV4dCk7Ci0gIAkJICAgIGJyZWFrOwotCQkgIH0KLSAgICAgICAgICBlbCA9IFhNTFV0aWxzLmZpbmRQcmV2aW91c1NpYmxpbmcoZWwpOwotCQl9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgZG9jdW1lbnQgYXQgIgotICAgICAgICAgICAgKyBkZWZpbml0aW9uLmdldERvY3VtZW50QmFzZVVSSSgpCi0gICAgICAgICAgICArICIuXG5cbiIKLSAgICAgICAgICAgICsgVXRpbHMuZ2V0RXhjZXB0aW9uRGV0YWlscyh0KSwKLSAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDE5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDE5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNjcwYmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAxOS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVXRpbHM7Ci0KLQotLyoqCi0gKiBCUDIwMTkuCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nIGVsZW1lbnQsIGlmIHRoZSBjb250YWluZWQgc29hcDpiaW5kaW5nIGVsZW1lbnQgaGFzIGEgInN0eWxlIiBhdHRyaWJ1dGUgZXF1YWwgdG8gImRvY3VtZW50IiBhbmQgc29hcDpvcGVyYXRpb25zIGhhdmUgInVzZSIgYXR0cmlidXRlIGVxdWFsIHRvICJsaXRlcmFsIjo8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlICJuYW1lc3BhY2UiIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIGluIGFueSBjb250YWluZWQgc29hcGJpbmQ6Ym9keSwgc29hcGJpbmQ6aGVhZGVyLCBzb2FwYmluZDo6aGVhZGVyZmF1bHQsIHNvYXBiaW5kOmZhdWx0IGVsZW1lbnRzIDwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKiBAdmVyc2lvbiAxLjAuMSAyNy4wNi4yMDAzCi0gKiBAYXV0aG9yIFZpdGFsaSBGZWRvc2Vua28KLSAqLwotcHVibGljIGNsYXNzIEJQMjAxOSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjAxOShXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIGJvb2xlYW4gZG9jTGl0Rm91bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgZXJyYW50RWxlbWVudHMgPSBuZXcgU3RyaW5nKCIiKTsKLSAgICAvLyBHZXQgdGhlIGJpbmRpbmcgZnJvbSB0aGUgZW50cnkgY29udGV4dAotICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgLy8gVHJ5IHRvIGdldCB0aGUgU09BUCBiaW5kaW5nCi0gICAgU09BUEJpbmRpbmcgc29hcEJpbmRpbmcgPSBXU0RMVmFsaWRhdG9ySW1wbC5nZXRTb2FwQmluZGluZyhiaW5kaW5nKTsKLQotICAgIGlmIChzb2FwQmluZGluZyAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyBzdHlsZSA9Ci0gICAgICAgIChzb2FwQmluZGluZy5nZXRTdHlsZSgpID09IG51bGwpCi0gICAgICAgICAgPyBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DCi0gICAgICAgICAgOiBzb2FwQmluZGluZy5nZXRTdHlsZSgpOwotICAgICAgaWYgKHN0eWxlLmVxdWFscyhXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DKSkKLSAgICAgIHsKLSAgICAgICAgVmVjdG9yIHNvYXBFbGVtZW50cyA9IFV0aWxzLmFycmF5VG9WZWN0b3IodGhpcy52YWxpZGF0b3IuZ2V0U29hcEJvZGllcyhiaW5kaW5nKSk7Ci0gICAgICAgIHNvYXBFbGVtZW50cy5hZGRBbGwoVXRpbHMuYXJyYXlUb1ZlY3Rvcih0aGlzLnZhbGlkYXRvci5nZXRTb2FwRmF1bHRzKGJpbmRpbmcpKSk7Ci0gICAgICAgIHNvYXBFbGVtZW50cy5hZGRBbGwoVXRpbHMuYXJyYXlUb1ZlY3Rvcih0aGlzLnZhbGlkYXRvci5nZXRTb2FwSGVhZGVycyhiaW5kaW5nKSkpOwotICAgICAgICBzb2FwRWxlbWVudHMuYWRkQWxsKAotICAgICAgICAgIFV0aWxzLmFycmF5VG9WZWN0b3IodGhpcy52YWxpZGF0b3IuZ2V0U29hcEhlYWRlckZhdWx0cyhiaW5kaW5nKSkpOwotCi0gICAgICAgIEl0ZXJhdG9yIGkgPSBzb2FwRWxlbWVudHMuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKGkuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgc29hcEVsZW1lbnQgPQotICAgICAgICAgICAgKEV4dGVuc2liaWxpdHlFbGVtZW50KSAoaS5uZXh0KCkpOwotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRvci5pc0xpdGVyYWwoc29hcEVsZW1lbnQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBkb2NMaXRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRvci5uYW1lc3BhY2VGb3VuZEluU29hcExpdGVyYWwoc29hcEVsZW1lbnQpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZXJyYW50RWxlbWVudHMgKz0gIlxuLS0tICIgKyAoc29hcEVsZW1lbnQudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgICAgIHsKLSAgICAgICAgICB9IC8vIGNvbnRpbnVlIHdpdGggY2xlbmNoZWQgdGVldGgKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIGlmICghZG9jTGl0Rm91bmQpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIElmIGEgbmFtZXNwYWNlIHdhcyBub3QgZm91bmQgdGhlbiB0ZXN0IGFzc2VydGlvbiBwYXNzZWQKLSAgICAgIGlmIChlcnJhbnRFbGVtZW50cy5sZW5ndGgoKSAhPSAwKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICJGYWlsaW5nIGVsZW1lbnRzOiIgKyBlcnJhbnRFbGVtZW50cywKLSAgICAgICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAyMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAyMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjhiZjkyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMjAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMudXRpbC5VUkk7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMudXRpbC5VUkkuTWFsZm9ybWVkVVJJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotCi0vKioKLSogQlAyMDIwLgotKiAgICA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nIGVsZW1lbnQsIGlmIHRoZSBzdHlsZSBhdHRyaWJ1dGUgb2YgdGhlIGNvbnRhaW5lZCBzb2FwYmluZDpiaW5kaW5nIGlzICJycGMiIAotKiAgICAgICBhbmQgdGhlIHVzZSBhdHRyaWJ1dGUgaXMgImxpdGVyYWwiLjwvY29udGV4dD4KLSogICAgPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBuYW1lc3BhY2UgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBvbiBhbGwgc29hcGJpbmQ6Ym9keSBlbGVtZW50cyBhbmQgdGhlIHZhbHVlIG9mIHRoZSAKLSogbmFtZXNwYWNlIGF0dHJpYnV0ZSBpcyBhbiBhYnNvbHV0ZSBVUkkuIDwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0qIEB2ZXJzaW9uIDEuMC4xIDI3LjA2LjIwMDMKLSogQGF1dGhvciBWaXRhbGkgRmVkb3NlbmtvCi0qKi8KLXB1YmxpYyBjbGFzcyBCUDIwMjAgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIwMjAoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgYm9vbGVhbiBycGNMaXRGb3VuZCA9IGZhbHNlOwotCi0gICAgLy8gR2V0IHRoZSBiaW5kaW5nIGZyb20gdGhlIGVudHJ5IGNvbnRleHQKLSAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIC8vIFRyeSB0byBnZXQgdGhlIFNPQVAgYmluZGluZwotICAgIFNPQVBCaW5kaW5nIHNvYXBCaW5kaW5nID0gV1NETFZhbGlkYXRvckltcGwuZ2V0U29hcEJpbmRpbmcoYmluZGluZyk7Ci0KLSAgICAvLyBUZXN0IHRoZSBhc3NlcnRpb24gCi0gICAgLy8gQ2hlY2sgc3R5bGUgdG8gbWFrZSBzdXJlIHRoYXQgaXQgaXMgcnBjIC0gdGhlIHN1YmplY3Qgb2YgdGhlIGFzc2VydGlvbgotICAgIFN0cmluZyBzdHlsZSA9IFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9ET0M7Ci0gICAgaWYgKHNvYXBCaW5kaW5nICE9IG51bGwpCi0gICAgICBzdHlsZSA9Ci0gICAgICAgIChzb2FwQmluZGluZy5nZXRTdHlsZSgpID09IG51bGwKLSAgICAgICAgICA/IFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9ET0MKLSAgICAgICAgICA6IHNvYXBCaW5kaW5nLmdldFN0eWxlKCkpOwotCi0gICAgaWYgKChzb2FwQmluZGluZyAhPSBudWxsKQotICAgICAgJiYgKHN0eWxlLmVxdWFscyhXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfUlBDKSkpCi0gICAgewotICAgICAgLy8gR2V0IHRoZSBsaXN0IG9mIFNPQVAgYm9keSBlbGVtZW50cwotICAgICAgU09BUEJvZHlbXSBzb2FwQm9kaWVzID0gdGhpcy52YWxpZGF0b3IuZ2V0U29hcEJvZGllcyhiaW5kaW5nKTsKLQotICAgICAgLy8gQ2hlY2sgZm9yIFNvYXAgb3BlcmF0aW9uIG5hbWVzcGFjZQotICAgICAgYm9vbGVhbiBhc3NlcnRpb25GYWlsdXJlID0gZmFsc2U7Ci0gICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gbnVsbDsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc29hcEJvZGllcy5sZW5ndGggJiYgIShhc3NlcnRpb25GYWlsdXJlKTsgaSsrKQotICAgICAgewotICAgICAgICBTT0FQQm9keSBzb2FwQm9keSA9IHNvYXBCb2RpZXNbaV07Ci0gICAgICAgIC8vIEFkZGVkIGNoZWNrIGZvciBudWxsIHVzZSB2YWx1ZSwgc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgbGl0ZXJhbAotICAgICAgICBpZiAoc29hcEJvZHkuZ2V0VXNlKCkgPT0gbnVsbAotICAgICAgICAgIHx8IHNvYXBCb2R5LmdldFVzZSgpLmVxdWFscyhXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JPRFlfVVNFX0xJVCkpCi0gICAgICAgIHsKLSAgICAgICAgICBycGNMaXRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbmFtZXNwYWNlLCB0aGVuIGZsYWcgYXMgYSBmYWlsdXJlCi0gICAgICAgICAgaWYgKChuYW1lc3BhY2VVUkkgPSBzb2FwQm9keS5nZXROYW1lc3BhY2VVUkkoKSkgPT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBhc3NlcnRpb25GYWlsdXJlID0gdHJ1ZTsKLSAgICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgICAgICAgICItLS0gU09BUCBCT0RZOlxuIgotICAgICAgICAgICAgICAgICAgKyBzb2FwQm9keS50b1N0cmluZygpCi0gICAgICAgICAgICAgICAgICArICJcbi0tLSBCSU5ESU5HIFFOQU1FOlxuIgotICAgICAgICAgICAgICAgICAgKyBiaW5kaW5nLmdldFFOYW1lKCksCi0gICAgICAgICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBFbHNlLCB2ZXJpZnkgdGhhdCB0aGUgbmFtZXNwYWNlIGlzIGFuIGFic29sdXRlIFVSSQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0cnkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy9VUkwgdXJsID0gbmV3IFVSTChuYW1lc3BhY2VVUkkpOwotICAgICAgICAgICAgICBVUkkgdXJpID0gbmV3IFVSSShuYW1lc3BhY2VVUkkpOwotICAgICAgICAgICAgICBpZiAodXJpLmdldFNjaGVtZSgpID09IG51bGwpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBubyBzY2hlbWUgaW1wbGllcyBub3QgYW4gYWJzb2x1dGUgVVJJCi0gICAgICAgICAgICAgICAgYXNzZXJ0aW9uRmFpbHVyZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKAotICAgICAgICAgICAgICAgICAgICAiLS0tIFNPQVAgQk9EWTpcbiIKLSAgICAgICAgICAgICAgICAgICAgICArIHNvYXBCb2R5LnRvU3RyaW5nKCkKLSAgICAgICAgICAgICAgICAgICAgICArICJcbi0tLSBCSU5ESU5HIFFOQU1FOlxuIgotICAgICAgICAgICAgICAgICAgICAgICsgYmluZGluZy5nZXRRTmFtZSgpLAotICAgICAgICAgICAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCAoTWFsZm9ybWVkVVJJRXhjZXB0aW9uIG11ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgYXNzZXJ0aW9uRmFpbHVyZSA9IHRydWU7Ci0gICAgICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICAgICAgICAiLS0tIFNPQVAgQk9EWTpcbiIKLSAgICAgICAgICAgICAgICAgICAgKyBzb2FwQm9keS50b1N0cmluZygpCi0gICAgICAgICAgICAgICAgICAgICsgIlxuLS0tIEJJTkRJTkcgUU5BTUU6XG4iCi0gICAgICAgICAgICAgICAgICAgICsgYmluZGluZy5nZXRRTmFtZSgpLAotICAgICAgICAgICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKCFycGNMaXRGb3VuZCkKLSAgICAgIHsKLSAgICAgICAgLy8gc3R5bGUgaXMgcnBjIGJ1dCBubyBkb2N1bWVudCB1c2UgZWxlbWVudHMKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9IG51bGw7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmICghYXNzZXJ0aW9uRmFpbHVyZSkKLSAgICAgIHsgLy8gSWYgbm8gYXNzZXJ0aW9uIGZhaWx1cmUsIHRoZW4gc2V0IHJlc3VsdCB0byBwYXNzZWQKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPSBudWxsOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gc3R5bGUgaXMgbm90IHJwYwotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSBudWxsOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMjEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMjEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA1MDg2ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDIxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLQotCi0vKioKLSogIEJQMjAyMS4KLSogICAgIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcgZWxlbWVudDwvY29udGV4dD4KLSogICAgIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgd3NkbDppbnB1dCBlbGVtZW50IGFuZCB3c2RsOm91dHB1dCBlbGVtZW50IG9mIGVhY2ggb3BlcmF0aW9uIHVzZXMgdGhlIGF0dHJpYnV0ZSBuYW1lICJwYXJ0IiB3aXRoIGEgU2NoZW1hIHR5cGUgb2YgIk5NVE9LRU4iIGFuZCBkb2VzIG5vdCB1c2UgInBhcnRzIiwgZm9yIGJvdGggc29hcGJpbmQ6aGVhZGVyIGVsZW1lbnRzIGFuZCBzb2FwYmluZDpoZWFkZXJmYXVsdCBlbGVtZW50cy4gPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSoKLSogQHZlcnNpb24gMS4wLjEgMjcuMDYuMjAwMwotKiBAYXV0aG9yIFZpdGFsaSBGZWRvc2Vua28KLSoqLwotcHVibGljIGNsYXNzIEJQMjAyMSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjAyMShXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvL09wZXJhdGlvbiBvcGVyYXRpb24gPSBudWxsOwotCi0gICAgLy8gR2V0IHRoZSBiaW5kaW5nIGZyb20gdGhlIGVudHJ5IGNvbnRleHQKLSAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIC8vIEdldCBTT0FQIGhlYWRlcnMgZm9yIHRoaXMgYmluZGluZwotICAgIFNPQVBIZWFkZXJbXSBzb2FwSGVhZGVycyA9IHRoaXMudmFsaWRhdG9yLmdldFNvYXBIZWFkZXJzKGJpbmRpbmcpOwotCi0gICAgaWYgKHNvYXBIZWFkZXJzLmxlbmd0aCA9PSAwKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBDaGVjayBlYWNoIGhlYWRlciB0byBzZWUgaWYgaXQgaGFzIHBhcnQgZWxlbWVudCB3aXRoIE5NVE9LRU4gdHlwZQotICAgICAgZm9yIChpbnQgaGVhZGVyID0gMDsKLSAgICAgICAgaGVhZGVyIDwgc29hcEhlYWRlcnMubGVuZ3RoCi0gICAgICAgICAgJiYgcmVzdWx0LmVxdWFscyhBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRCk7Ci0gICAgICAgIGhlYWRlcisrKQotICAgICAgewotICAgICAgICBpZiAoKHNvYXBIZWFkZXJzW2hlYWRlcl0uZ2V0UGFydCgpID09IG51bGwpCi0gICAgICAgICAgfHwgKCFYTUxVdGlscy5pc05tdG9rZW4oc29hcEhlYWRlcnNbaGVhZGVyXS5nZXRQYXJ0KCkpKSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChzb2FwSGVhZGVyc1toZWFkZXJdLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRWxzZSwgY2hlY2sgdGhlIGhlYWRlcmZhdWx0IGlmIHRoZXJlIGlzIG9uZQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBMaXN0IHNvYXBIZWFkZXJGYXVsdExpc3QgPQotICAgICAgICAgICAgc29hcEhlYWRlcnNbaGVhZGVyXS5nZXRTT0FQSGVhZGVyRmF1bHRzKCk7Ci0gICAgICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBzb2FwSGVhZGVyRmF1bHRMaXN0Lml0ZXJhdG9yKCk7Ci0KLSAgICAgICAgICAvLyBDaGVjayBlYWNoIGhlYWRlciBmYXVsdCB0byBzZWUgaWYgaXQgaGFzIHBhcnQgZWxlbWVudCB3aXRoIE5NVE9LRU4gdHlwZQotICAgICAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkKLSAgICAgICAgICAgICYmIHJlc3VsdC5lcXVhbHMoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFNPQVBIZWFkZXJGYXVsdCBzb2FwSGVhZGVyRmF1bHQgPQotICAgICAgICAgICAgICAoU09BUEhlYWRlckZhdWx0KSBpdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgICAgICBpZiAoKHNvYXBIZWFkZXJGYXVsdC5nZXRQYXJ0KCkgPT0gbnVsbCkKLSAgICAgICAgICAgICAgfHwgKCFYTUxVdGlscy5pc05tdG9rZW4oc29hcEhlYWRlckZhdWx0LmdldFBhcnQoKSkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChzb2FwSGVhZGVyRmF1bHQudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDIyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDIyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNDVkN2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAyMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0KLS8qKgotICAqIEJQMjAyMi4KLSAgKiAgICA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nIGVsZW1lbnQ8L2NvbnRleHQ+Ci0gICogIDxhc3NlcnRpb25EZXNjcmlwdGlvbj50aGUgbmFtZSBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIG9uIHRoZSBzb2FwYmluZDpmYXVsdCBlbGVtZW50LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0qKi8KLXB1YmxpYyBjbGFzcyBCUDIwMjIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIwMjIoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gR2V0IHRoZSBiaW5kaW5nIGZyb20gdGhlIGVudHJ5IGNvbnRleHQKLSAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIC8vIEdldCBsaXN0IG9mIFNPQVAgZmF1bHRzIGZvciB0aGUgYmluZGluZwotICAgIFNPQVBGYXVsdFtdIHNvYXBGYXVsdHMgPSB0aGlzLnZhbGlkYXRvci5nZXRTb2FwRmF1bHRzKGJpbmRpbmcpOwotCi0gICAgaWYgKHNvYXBGYXVsdHMgPT0gbnVsbCB8fCBzb2FwRmF1bHRzLmxlbmd0aCA9PSAwKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIGNoZWNrIGFsbCBzb2FwOmZhdWx0cy4gCi0gICAgICAvLyBNVVNUIGhhdmUgYSBuYW1lIGF0dHJpYnV0ZQotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb2FwRmF1bHRzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBTT0FQRmF1bHQgc29hcEZhdWx0ID0gc29hcEZhdWx0c1tpXTsKLSAgICAgICAgaWYgKHNvYXBGYXVsdC5nZXROYW1lKCkgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICAgInNvYXBiaW5kOmZhdWx0IGVsZW1lbnQgOiAiICsgc29hcEZhdWx0LnRvU3RyaW5nKCksCi0gICAgICAgICAgICAgIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDIzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDIzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMzYwYWUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAyMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLQotLyoqCi0gKiBCUDIwMjMuCi0gKiAgIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcgZWxlbWVudCwgd2l0aCB0aGUgInVzZSIgYXR0cmlidXRlIHByZXNlbnQgb24gdGhlIHNvYXBiaW5kOmZhdWx0IGVsZW1lbnQ8L2NvbnRleHQ+Ci0gKiAgIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBpcyAibGl0ZXJhbCIuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjAyMyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjAyMyhXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBHZXQgdGhlIGJpbmRpbmcgZnJvbSB0aGUgZW50cnkgY29udGV4dAotICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgLy8gR2V0IGxpc3Qgb2YgU09BUCBmYXVsdHMgZm9yIHRoZSBiaW5kaW5nCi0gICAgU09BUEZhdWx0W10gc29hcEZhdWx0cyA9IHRoaXMudmFsaWRhdG9yLmdldFNvYXBGYXVsdHMoYmluZGluZyk7Ci0KLSAgICBpZiAoc29hcEZhdWx0cyA9PSBudWxsIHx8IHNvYXBGYXVsdHMubGVuZ3RoID09IDApCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gY2hlY2sgYWxsIHNvYXA6ZmF1bHRzLiAKLSAgICAgIC8vIE1VU1QgaGF2ZSBhIG5hbWUgYXR0cmlidXRlLCBhbmQgaWYgYSB1c2UgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgTVVTVCBiZSB2YWx1ZSAibGl0ZXJhbCIKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc29hcEZhdWx0cy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgU09BUEZhdWx0IHNvYXBGYXVsdCA9IHNvYXBGYXVsdHNbaV07Ci0gICAgICAgIGlmICgoc29hcEZhdWx0LmdldFVzZSgpICE9IG51bGwpCi0gICAgICAgICAgJiYgKCFzb2FwRmF1bHQKLSAgICAgICAgICAgIC5nZXRVc2UoKQotICAgICAgICAgICAgLmVxdWFscyhXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JPRFlfVVNFX0xJVCkpKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoc29hcEZhdWx0LnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDMyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDMyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZDk2ZGIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjAzMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0KLS8qKgotICogQlAyMDMyLgotICogICA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nIGVsZW1lbnQ8L2NvbnRleHQ+Ci0gKiAgIDxhc3NlcnRpb25EZXNjcmlwdGlvbj50aGUgbmFtZSBhdHRyaWJ1dGUgdGhhdCBpcyBzcGVjaWZpZWQgb24gdGhlIHNvYXBiaW5kOmZhdWx0IGVsZW1lbnQgbWF0Y2hlcyB0aGUgdmFsdWUgc3BlY2lmaWVkIG9uIHRoZSBwYXJlbnQgZWxlbWVudCB3c2RsOmZhdWx0LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIwMzIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIwMzIoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gR2V0IHRoZSBiaW5kaW5nIGZyb20gdGhlIGVudHJ5IGNvbnRleHQKLSAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIC8vIEdldCBsaXN0IG9mIEJpbmRpbmcgZmF1bHRzIGZvciB0aGUgYmluZGluZwotICAgIEJpbmRpbmdGYXVsdFtdIGJpbmRpbmdGYXVsdHMgPSB0aGlzLnZhbGlkYXRvci5nZXRBbGxCaW5kaW5nRmF1bHRzKGJpbmRpbmcpOwotCi0gICAgaWYgKGJpbmRpbmdGYXVsdHMgPT0gbnVsbCB8fCBiaW5kaW5nRmF1bHRzLmxlbmd0aCA9PSAwKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgIH0KLQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBmb3IgZWFjaCBiaW5kaW5nIGZhdWx0LCBjb21wYXJlIHRoZSBjaGlsZCBzb2FwOmZhdWx0IG5hbWUgd2l0aCB0aGUgYmluZGluZyBmYXVsdCBuYW1lIAotCi0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGJpbmRpbmdGYXVsdHMubGVuZ3RoOyBpKyspCi0gICAgICB7Ci0gICAgICAgIEJpbmRpbmdGYXVsdCBiaW5kaW5nRmF1bHQgPSBiaW5kaW5nRmF1bHRzW2ldOwotICAgICAgICBTT0FQRmF1bHQgc29hcEZhdWx0ID0gdGhpcy52YWxpZGF0b3IuZ2V0U29hcEZhdWx0KGJpbmRpbmdGYXVsdCk7Ci0gICAgICAgIGlmIChzb2FwRmF1bHQgPT0gbnVsbAotICAgICAgICAgIHx8IHNvYXBGYXVsdC5nZXROYW1lKCkgPT0gbnVsbAotICAgICAgICAgIHx8IGJpbmRpbmdGYXVsdC5nZXROYW1lKCkgPT0gbnVsbAotICAgICAgICAgIHx8ICFiaW5kaW5nRmF1bHQuZ2V0TmFtZSgpLmVxdWFscyhzb2FwRmF1bHQuZ2V0TmFtZSgpKSkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotCi0gICAgICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICBzb2FwRmF1bHQgPT0gbnVsbCA/IG51bGwgOiBzb2FwRmF1bHQudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMzQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwMzQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkxMzQ1Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDM0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNjaGVtYS5TY2hlbWE7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLS8qKgotICogQlAyMDM0Ci0gKgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIGRlc2NyaXB0aW9uIHdpdGhpbiBhIFdTREwgZG9jdW1lbnQ8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIGNhbmRpZGF0ZSBkZXNjcmlwdGlvbiBkb2VzIG5vdCBjb250YWluIHRoZSBuYW1lc3BhY2UgZGVjbGFyYXRpb24geG1sbnM6eG1sPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+IAotICovCi1wdWJsaWMgY2xhc3MgQlAyMDM0IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMDM0KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIEdldHRpbmcgd3NkbDpkZWZpbml0aW9uIGVsZW1lbnQKLSAgICBEZWZpbml0aW9uIGRlZiA9IChEZWZpbml0aW9uKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotICAgIFR5cGVzIHR5cGVzOwotICAgIC8vIEdldHRpbmcgdGhlIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiB4bWxuczp4bWwKLSAgICBTdHJpbmcgeG1sTnMgPSAoU3RyaW5nKSBkZWYuZ2V0TmFtZXNwYWNlcygpLmdldCgieG1sIik7Ci0gICAgLy8gSWYgaXQgZXhpc3RzIGFuZCBlcXVhbHMgdG8gImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIKLSAgICBpZiAoeG1sTnMgIT0gbnVsbCAmJiB4bWxOcy5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9YTUwpKQotICAgIHsKLSAgICAgIC8vIHNldHRpbmcgYXNzZXJ0aW9uIHJlc3VsdCB0byB3YXJuaW5nCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1dBUk5JTkc7Ci0gICAgfQotICAgIC8vIHRoZXJlIGlzIG5vIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiB4bWxuczp4bWwgaW4gdGhlIHdzZGw6ZGVmaW5pdGlvbgotICAgIC8vIGVsZW1lbnQsIGNoZWNraW5nIHdoZXRoZXIgdGhlIGRlZmluaXRpb24gaGFzIHdzZGw6dHlwZSBlbGVtZW50Ci0gICAgZWxzZSBpZiAoKHR5cGVzID0gZGVmLmdldFR5cGVzKCkpICE9IG51bGwpCi0gICAgewotICAgICAgLy8gR2V0dGluZyB0aGUgbGlzdCBvZiB3c2RsOnNjaGVtYVMKLSAgICAgIExpc3QgZXh0RWxlbXMgPSB0eXBlcy5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0RWxlbXMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIC8vIEdldHRpbmcgd3NkbDpzY2hlbWEgZWxlbWVudAotICAgICAgICBTY2hlbWEgc2NoZW1hID0KLSAgICAgICAgICAoU2NoZW1hKSBleHRFbGVtcy5nZXQoaSk7Ci0gICAgICAgIC8vIEdldHRpbmcgYSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIHhtbG5zOnhtbAotICAgICAgICBTdHJpbmcgYXR0clZhbHVlID0gc2NoZW1hLmdldEVsZW1lbnQoKS5nZXRBdHRyaWJ1dGVOUygKLSAgICAgICAgICBXU0lDb25zdGFudHMuTlNfVVJJX1hNTE5TLCAieG1sIik7Ci0gICAgICAgIC8vIElmIGl0IGVxdWFscyB0byAiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwKLSAgICAgICAgaWYgKFdTSUNvbnN0YW50cy5OU19VUklfWE1MLmVxdWFscyhhdHRyVmFsdWUpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gc2V0dGluZyBhc3NlcnRpb24gcmVzdWx0IHRvIHdhcm5pbmcKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1dBUk5JTkc7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbCA9IHZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKCJUaGUgbmFtZXNwYWNlICIKLSAgICAgICAgICAgICsgImRlY2xhcmF0aW9uIG5lc3RlZCBpbiB3c2RsOnNjaGVtYSBlbGVtZW50LiIsIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KAotICAgICAgdGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwOTguamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIwOTguamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRiNjUzZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMDk4LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRXJyb3JMaXN0OwotCi0KLS8qKgotICogQlAyMDk4LgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6aW1wb3J0IGVsZW1lbnQ8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlICJsb2NhdGlvbiIgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBmb3IgdGhlIHdzZGw6aW1wb3J0IGVsZW1lbnQsIGFuZCBoYXMgYSBub24tZW1wdHkgdmFsdWUuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjA5OCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjA5OChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JzID0gbmV3IEVycm9yTGlzdCgpOwotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICBJbXBvcnQgaW0gPSAoSW1wb3J0KSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotICAgIC8vIHN1cHBvc2UgdGhhdCBpZiBsb2NhdGlvbiBpcyBpbnZhbGlkLCB0aGUgZGVmaW5pdGlvbiBlcXVhbHMgdG8gbnVsbAotICAgIGlmIChpbS5nZXRMb2NhdGlvblVSSSgpID09IG51bGwgfHwgaW0uZ2V0TG9jYXRpb25VUkkoKSA9PSAiIikKLSAgICAgIGVycm9ycy5hZGQoaW0uZ2V0TmFtZXNwYWNlVVJJKCksIGltLmdldExvY2F0aW9uVVJJKCkpOwotCi0gICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ1YTc3ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTAxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkltcG9ydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRXJyb3JMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSAqIEJQMjEwMS4KLSAgICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6ZGVmaW5pdGlvbiwgaWYgaXQgY29udGFpbnMgd3NkbDppbXBvcnQgc3RhdGVtZW50czwvY29udGV4dD4KLSAgICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkVhY2ggd3NkbDppbXBvcnQgc3RhdGVtZW50IGlzIG9ubHkgdXNlZCB0byBpbXBvcnQgYW5vdGhlciBXU0RMIGRlc2NyaXB0aW9uLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIxMDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMTAxKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwcml2YXRlIEVycm9yTGlzdCBlcnJvcnMgPSBuZXcgRXJyb3JMaXN0KCk7Ci0KLSAgYm9vbGVhbiBpbXBvcnRGb3VuZCA9IGZhbHNlOwotCi0gIC8qIENyZWF0ZSBmYWx1cmUgcmVwb3J0IGlmIGltcG9ydCBjb250YWlucyByZWZlcmVuY2UgdG8gbm9uIFdTREwgZGVzY3JpcHRpb24uIAotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5JbXBvcnQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChJbXBvcnQgaW0sIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGltcG9ydEZvdW5kID0gdHJ1ZTsKLSAgICB0cnkKLSAgICB7Ci0gICAgLy8gYnkgdGhlIHdheSA6IFdTREw0SiB0aHJvd3MgRXhjZXB0aW9uIGlmIGltcG9ydGVkIFdTREwgaXMgbm90IHJlc29sdmVkCi0gICAgLy8gYnV0IGRvY3VtZW50YXRpb24gc2F5cyB0aGF0IGltLmdldERlZmluaXRpb24oKSB3aWxsIGJlIGVxdWFsIHRvIG51bGwKLSAgICBpZiAoaW0uZ2V0RGVmaW5pdGlvbigpID09IG51bGwpCi0gICAgICBlcnJvcnMuYWRkKAotICAgICAgICBpbS5nZXROYW1lc3BhY2VVUkkoKQotICAgICAgICAgICsgIjoiCi0gICAgICAgICAgKyBpbS5nZXRMb2NhdGlvblVSSSgpCi0gICAgICAgICAgKyAiXG5JbXBvcnQgZWxlbWVudCBkb2VzIG5vdCByZWZlcmVuY2UgYSBXU0RMIGRlZmluaXRpb24uIik7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlcnJvcnMuYWRkKAotICAgICAgICBpbS5nZXROYW1lc3BhY2VVUkkoKQotICAgICAgICAgICsgIjoiCi0gICAgICAgICAgKyBpbS5nZXRMb2NhdGlvblVSSSgpCi0gICAgICAgICAgKyAiXG5JbXBvcnQgZWxlbWVudCBkb2VzIG5vdCByZWZlcmVuY2UgYSBXU0RMIGRlZmluaXRpb24uIik7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICAvL1Zpc2l0b3JBZGFwdG9yLmFkYXB0KHRoaXMpOwotICAgIHRyYXZlcnNhbC5zZXRWaXNpdG9yKHRoaXMpOwotICAgIHRyYXZlcnNhbC52aXNpdEltcG9ydCh0cnVlKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlUmVmZXJlbmNlcygpOwotICAgIHRyYXZlcnNhbC50cmF2ZXJzZSgoRGVmaW5pdGlvbikgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKSk7Ci0KLSAgICBpZiAoIWVycm9ycy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlcnJvcnMudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICBlbHNlIGlmICghaW1wb3J0Rm91bmQpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICBlbHNlCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTAyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YjUyMDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjEwMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotCi0KLS8qKgotICogQlAyMTAyLgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6dHlwZXMgZWxlbWVudCwgd2l0aCBYTUwgc2NoZW1hIGltcG9ydCBlbGVtZW50czwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5FYWNoIFhNTCBzY2hlbWEgaW1wb3J0IHN0YXRlbWVudCAoeHNkOmltcG9ydCkgaXMgb25seSB1c2VkIHRvIGRpcmVjdGx5IHJlZmVyZW5jZSBhbiBYTUwgc2NoZW1hIGRlZmluaXRpb24sIHdoaWNoIGhhcyAic2NoZW1hIiBmcm9tIFhNTCBuYW1lc3BhY2UgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBhcyByb290IGVsZW1lbnQuICBJdCBkb2VzIG5vdCBjb250YWluIGEgcmVmZXJlbmNlIHRvIGFub3RoZXIgZG9jdW1lbnQgZW1iZWRkaW5nIHRoZSBYTUwgc2NoZW1hIGRlZmluaXRpb24gKGUuZy4gV1NETCkuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjEwMiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjEwMihXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIGltcG9ydEZvdW5kID0gZmFsc2U7Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgLy8gcGFyc2UgV1NETCBhcyBYTUwKLSAgICB0cnkKLSAgICB7Ci0gICAgICBUeXBlcyB0ID0gKFR5cGVzKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotICAgICAgTGlzdCBleHRzID0gdC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLSAgICAgIGlmICgoZGVmaW5pdGlvbiA9IHZhbGlkYXRvci5hbmFseXplckNvbnRleHQuZ2V0Q2FuZGlkYXRlSW5mbygpLmdldERlZmluaXRpb24odCkpCi0gICAgICAgID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHR5cGVzIGRlZmluaXRpb24gaW4gYW55IFdTREwgZG9jdW1lbnQuIik7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChleHRzICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIEl0ZXJhdG9yIGl0ID0gZXh0cy5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZWwgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGl0Lm5leHQoKTsKLSAgICAgICAgICBpZiAoZWwgaW5zdGFuY2VvZiBTY2hlbWEKLSAgICAgICAgICAgICYmIGVsLmdldEVsZW1lbnRUeXBlKCkuZXF1YWxzKEVMRU1fWFNEX1NDSEVNQSkpCi0gICAgICAgICAgICB0ZXN0Tm9kZSgoKFNjaGVtYSkgZWwpLmdldEVsZW1lbnQoKSwKLSAgICAgICAgICAgICAgZGVmaW5pdGlvbi5nZXREb2N1bWVudEJhc2VVUkkoKSwgbmV3IEFycmF5TGlzdCgpKTsKLQotICAgICAgICAgIGlmIChyZXN1bHQuZXF1YWxzKEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChmYWlsdXJlRGV0YWlsTWVzc2FnZSwgZW50cnlDb250ZXh0KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKCFpbXBvcnRGb3VuZCkKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHR0KQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAiV1NETCBkb2N1bWVudCBjYW4gbm90IGJlIHByb2Nlc3NlZCIsCi0gICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoKLSAgICogQ2hlY2sgbm9kZSBpcyB4c2QgaW1wb3J0IGFuZCBpdCBpcyAKLSAgICogb25seSB1c2VkIHRvIGRpcmVjdGx5IHJlZmVyZW5jZSBhbiBYTUwgc2NoZW1hIGRlZmluaXRpb24sIHdoaWNoIGhhcyAic2NoZW1hIiAKLSAgICogZnJvbSBYTUwgbmFtZXNwYWNlICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgYXMgcm9vdCBlbGVtZW50LiAgCi0gICAqIEFuZCBpdCBkb2VzIG5vdCBjb250YWluIGEgcmVmZXJlbmNlIHRvIGFub3RoZXIgZG9jdW1lbnQgZW1iZWRkaW5nIHRoZSBYTUwgc2NoZW1hIAotICAgKiBkZWZpbml0aW9uIChlLmcuIFdTREwpLgotICAqIEBwYXJhbSBuIC0gVW5rbm93biBleHRlbnNpYmlsaXR5IGVsZW1lbnQKLSAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRlc3ROb2RlKE5vZGUgbiwgU3RyaW5nIGNvbnRleHQsIExpc3QgcHJvY2Vzc2VkU2NoZW1hcykKLSAgewotCWlmICgobiAhPSBudWxsKSAmJiAoIXByb2Nlc3NlZFNjaGVtYXMuY29udGFpbnMobikpKQotCXsKLSAgICAgIGlmIChYTUxVdGlscy5lcXVhbHMobi5nZXRQYXJlbnROb2RlKCksIEVMRU1fWFNEX1NDSEVNQSkpCi0gICAgICAgICBwcm9jZXNzZWRTY2hlbWFzLmFkZChuKTsgICAgCQotCi0gICAgICB3aGlsZSAobiAhPSBudWxsKQotICAgICAgewotICAgICAgICAvLyBzZWFyY2hlcyBmb3IgeHNkOmltcG9ydCBlbGVtZW50Ci0gICAgICAgIGlmIChOb2RlLkVMRU1FTlRfTk9ERSA9PSBuLmdldE5vZGVUeXBlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoWE1MVXRpbHMuZXF1YWxzKG4sIEVMRU1fWFNEX0lNUE9SVCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgaW1wb3J0Rm91bmQgPSB0cnVlOwotCi0gICAgICAgICAgICBFbGVtZW50IGltID0gKEVsZW1lbnQpIG47Ci0gICAgICAgICAgICAvLyBHZXR0aW5nIHRoZSBzY2hlbWFMb2NhdGlvbiBhbmQgdGhlIG5hbWVzcGFjZSBhdHRyaWJ1dGVzCi0gICAgICAgICAgICBBdHRyIHNjaGVtYUxvY2F0aW9uID0KLSAgICAgICAgICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlKGltLCBBVFRSX1hTRF9TQ0hFTUFMT0NBVElPTik7Ci0gICAgICAgICAgICBBdHRyIG5hbWVzcGFjZSA9IFhNTFV0aWxzLmdldEF0dHJpYnV0ZShpbSwgQVRUUl9YU0RfTkFNRVNQQUNFKTsKLSAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG9ubHkgdGhlIG5hbWVzcGFjZSBhdHRyaWJ1dGUgb2YgaW1wb3J0IGVsZW1lbnQKLSAgICAgICAgICAgIGlmIChzY2hlbWFMb2NhdGlvbiA9PSBudWxsICYmIG5hbWVzcGFjZSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBHZXR0aW5nIGFsbCB0aGUgaW5saW5lIHNjaGVtYXMgb2YgdGhlIHdzZGwgZGVmaW5pdGlvbgotICAgICAgICAgICAgICBNYXAgc2NoZW1hc01hcCA9IHZhbGlkYXRvci53c2RsRG9jdW1lbnQuZ2V0U2NoZW1hcygpOwotICAgICAgICAgICAgICAvLyBJZiBhbiBpbmxpbmUgc2NoZW1hIGltcG9ydGVkIGlzIGRlZmluZWQKLSAgICAgICAgICAgICAgaWYgKHNjaGVtYXNNYXAua2V5U2V0KCkuY29udGFpbnMobmFtZXNwYWNlLmdldFZhbHVlKCkpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgYW4gaW5saW5lIHNjaGVtYSBpbXBvcnRlZCBpcyBkZWZpbmVkCi0gICAgICAgICAgICAgICAgLy8gKHRoYXQgbWVhbnMgdGhlIHNjaGVtYSBpcyB2YWxpZCksCi0gICAgICAgICAgICAgICAgLy8gY29udGludWUgd2l0aCB0aGUgbmV4dCBlbGVtZW50Ci0gICAgICAgICAgICAgICAgbiA9IG4uZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgIC8vIG5vIHNjaGVtYUxvY2F0aW9uIHNvIHRyeSB0aGUgbmFtZXNwYWNlIAotICAgICAgICAgICAgICBzY2hlbWFMb2NhdGlvbiA9IG5hbWVzcGFjZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gdHJ5IHRvIHBhcnNlIGltcG9ydGVkIFhTRAotICAgICAgICAgICAgaWYgKHNjaGVtYUxvY2F0aW9uICE9IG51bGwgJiYgc2NoZW1hTG9jYXRpb24uZ2V0VmFsdWUoKSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICB0cnkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIGlmIGFueSBlcnJvciBvciByb290IGVsZW1lbnQgaXMgbm90IFhTRCBzY2hlbWEgLT4gZXJyb3IKLSAgICAgICAgICAgICAgICAvLyAhISBBVFRFTlRJT04KLSAgICAgICAgICAgICAgICAvLyByb290IFhTRCBTQ0hFTUEgU0NIRU1BIGlzIG5vdCB2YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvL0RvY3VtZW50IHNjaGVtYSA9IFhNTFV0aWxzLnBhcnNlWE1MRG9jdW1lbnRVUkwoc2NoZW1hTG9jYXRpb24uZ2V0VmFsdWUoKSwgWFNEX1NDSEVNQUxPQ0FUSU9OLCBjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBEb2N1bWVudCBzY2hlbWEgPQotICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yLnBhcnNlWE1MRG9jdW1lbnRVUkwoc2NoZW1hTG9jYXRpb24uZ2V0VmFsdWUoKSwgY29udGV4dCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgaW1wb3J0IGlzIHZhbGlkLCB0aGVuIGNoZWNrIGl0cyBjb250ZW50cwotICAgICAgICAgICAgICAgIGlmIChYTUxVdGlscwotICAgICAgICAgICAgICAgICAgLmVxdWFscyhzY2hlbWEuZ2V0RG9jdW1lbnRFbGVtZW50KCksIEVMRU1fWFNEX1NDSEVNQSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgY29udGVudCBvZiBpbXBvcnRlZCBkb2N1bWVudAotICAgICAgICAgICAgICAgICAgdGVzdE5vZGUoc2NoZW1hLmdldERvY3VtZW50RWxlbWVudCgpLmdldEZpcnN0Q2hpbGQoKSwKLSAgICAgICAgICAgICAgICAgICAgWE1MVXRpbHMuY3JlYXRlVVJMU3RyaW5nKHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCksIGNvbnRleHQpLCBwcm9jZXNzZWRTY2hlbWFzKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICAgICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9IHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLy9yZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgICAgICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPQotICAgICAgICAgICAgICAgICJzY2hlbWFMb2NhdGlvbiA9PSBudWxsIGFuZCBuYW1lc3BhY2UgPT0gbnVsbCI7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICB0ZXN0Tm9kZShuLmdldEZpcnN0Q2hpbGQoKSwgY29udGV4dCwgcHJvY2Vzc2VkU2NoZW1hcyk7Ci0gICAgICAgIH0KLSAgICAgICAgbiA9IG4uZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTAzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZTM2NzIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjEwMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLQotLyoqCi0gKiBCUDIxMDMuCi0gICAqIDxjb250ZXh0PkZvciBlYWNoIGEgY2FuZGlkYXRlIHdzZGw6ZGVmaW5pdGlvbnM8L2NvbnRleHQ+Ci0gICAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5Gb3IgdGhlIHJlZmVyZW5jZWQgZGVmaW5pdGlvbnMgYXMgd2VsbCBhcyBhbGwgaW1wb3J0ZWQgCi0gICAqIGRlc2NyaXB0aW9ucywgVGhlIFhNTCBzY2hlbWEgaW1wb3J0IHN0YXRlbWVudCBpcyBvbmx5IHVzZWQgd2l0aGluIGFuIHhzZDpzY2hlbWEgCi0gICAqIGVsZW1lbnQuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjEwMyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIxMDMoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICAvKiBDaGVjayBhbGwgdW5rbm93biBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIGl0IGlzIG5vdCB4c2QgaW1wb3J0LgotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZWwsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAoZWwgaW5zdGFuY2VvZiBTY2hlbWEpCi0gICAgICBzZWFyY2hGb3JJbXBvcnQoKChTY2hlbWEpIGVsKS5nZXRFbGVtZW50KCkpOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotCi0gICAgLy9wcm9jZXNzV1NETChlbnRyeUNvbnRleHQuZ2V0V1NETERvY3VtZW50KCkuZ2V0RmlsZW5hbWUoKSk7Ci0gICAgV1NETFRyYXZlcnNhbCB0cmF2ZXJzYWwgPSBuZXcgV1NETFRyYXZlcnNhbCgpOwotICAgIC8vVmlzaXRvckFkYXB0b3IuYWRhcHQodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZUltcG9ydCgpOwotICAgIHRyYXZlcnNhbC52aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KHRydWUpOwotCi0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwudHJhdmVyc2UoKERlZmluaXRpb24pIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCkpOwotCi0gICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qCi0gICAqIENyZWF0ZSBmYWx1cmUgcmVwb3J0IGlmIG5vZGUgaXMgeHNkIGltcG9ydC4gCi0gICAqIEBwYXJhbSBuIC0gbm9kZQotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHNlYXJjaEZvckltcG9ydChOb2RlIG4pCi0gIHsKLSAgICB3aGlsZSAobiAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIHNlYXJjaGVzIGZvciB4c2Q6aW1wb3J0IGVsZW1lbnQKLSAgICAgIGlmIChOb2RlLkVMRU1FTlRfTk9ERSA9PSBuLmdldE5vZGVUeXBlKCkpCi0gICAgICB7Ci0gICAgICAgIGlmIChYTUxVdGlscy5lcXVhbHMobiwgRUxFTV9YU0RfSU1QT1JUKSkKLSAgICAgICAgewotICAgICAgICAgIEF0dHIgYSA9Ci0gICAgICAgICAgICBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoKEVsZW1lbnQpIG4sIEFUVFJfWFNEX1NDSEVNQUxPQ0FUSU9OKTsKLSAgICAgICAgICBTdHJpbmcgc2NoZW1hTG9jYXRpb24gPSAoYSAhPSBudWxsKSA/IGEuZ2V0VmFsdWUoKSA6ICIiOwotICAgICAgICAgIGEgPSBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoKEVsZW1lbnQpIG4sIEFUVFJfWFNEX05BTUVTUEFDRSk7Ci0gICAgICAgICAgU3RyaW5nIG5hbWVzcGFjZSA9IChhICE9IG51bGwpID8gYS5nZXRWYWx1ZSgpIDogIiI7Ci0gICAgICAgICAgZXJyb3JzLmFkZChuZXcgUU5hbWUobmFtZXNwYWNlLCBzY2hlbWFMb2NhdGlvbikpOwotICAgICAgICB9Ci0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy8gaWYgeHNkOnNjaGVtYSBlbGVtZW50IGlzIGZvdW5kIC0+IHByb2Nlc3Mgc2NoZW1hCi0gICAgICAgICAgaWYgKCFYTUxVdGlscy5lcXVhbHMobiwgRUxFTV9YU0RfU0NIRU1BKSkKLSAgICAgICAgICAgIHNlYXJjaEZvckltcG9ydChuLmdldEZpcnN0Q2hpbGQoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgbiA9IG4uZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICB9Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTA0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTA0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MmYzNjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjEwNC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRXJyb3JMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk51bGxVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSAqIEJQMjEwNC4KLSAgICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6aW1wb3J0PC9jb250ZXh0PgotICAgKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIHRhcmdldE5hbWVzcGFjZSBhdHRyaWJ1dGUgb24gdGhlIHdzZGw6ZGVmaW5pdGlvbnMgZWxlbWVudCBmb3IgdGhlIGltcG9ydGVkIFdTREwgZGVzY3JpcHRpb24gaGFzIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBuYW1lc3BhY2UgYXR0cmlidXRlIG9uIHRoZSB3c2RsOmltcG9ydCBlbGVtZW50IHRoYXQgaW1wb3J0ZWQgdGhlIFdTREwgZGVzY3JpcHRpb24uPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjEwNCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIxMDQoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICBwcml2YXRlIGJvb2xlYW4gaW1wb3J0Rm91bmQgPSBmYWxzZTsKLQotICAvKiBDcmVhdGUgZmFsdXJlIHJlcG9ydCBpZiBuYW1lc3BhY2Ugb2Ygd3NkbDppbXBvcnQgZG9lcyBub3QgZXF1YWwgdGFyZ2V0bmFtZXNwYWNlIGluIHJlZmVyZW5jZWQgd3NkbC4gIAotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5JbXBvcnQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChJbXBvcnQgaW0sIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGltcG9ydEZvdW5kID0gdHJ1ZTsKLSAgICBEZWZpbml0aW9uIGRlZiA9IGltLmdldERlZmluaXRpb24oKTsKLSAgICBpZiAoZGVmICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKCFOdWxsVXRpbC5lcXVhbHMoaW0uZ2V0TmFtZXNwYWNlVVJJKCksIGRlZi5nZXRUYXJnZXROYW1lc3BhY2UoKSkpCi0gICAgICAgIGVycm9ycy5hZGQoCi0gICAgICAgICAgbmV3IFFOYW1lKGltLmdldE5hbWVzcGFjZVVSSSgpLCBpbS5nZXRMb2NhdGlvblVSSSgpKSwKLSAgICAgICAgICBuZXcgUU5hbWUoZGVmLmdldFRhcmdldE5hbWVzcGFjZSgpLCBkZWYuZ2V0RG9jdW1lbnRCYXNlVVJJKCkpKTsKLSAgICB9Ci0gIH0KLQotICAvKiAKLSAgICogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotCi0gICAgV1NETFRyYXZlcnNhbCB0cmF2ZXJzYWwgPSBuZXcgV1NETFRyYXZlcnNhbCgpOwotICAgIC8vVmlzaXRvckFkYXB0b3IuYWRhcHQodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0SW1wb3J0KHRydWUpOwotICAgIHRyYXZlcnNhbC5pZ25vcmVSZWZlcmVuY2VzKCk7Ci0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKChEZWZpbml0aW9uKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLQotICAgIGlmICghZXJyb3JzLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGVycm9ycy50b1N0cmluZygpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIGVsc2UgaWYgKCFpbXBvcnRGb3VuZCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTA1LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTA1LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMDRjNmQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjEwNS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLQotLyoqCi0gICogQlAyMTA1LgotICAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmRlZmluaXRpb25zPC9jb250ZXh0PgotICAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5Gb3IgdGhlIHJlZmVyZW5jZWQgZGVmaW5pdGlvbnMsIGFzIHdlbGwgYXMgYWxsIGltcG9ydGVkIGRlc2NyaXB0aW9ucywgaW4gdGhlIFdTREwgbmFtZXNwYWNlIHVuZGVyIHRoZSB3c2RsOmRlZmludGl0aW9ucyBlbGVtZW50LCB0aGUgd3NkbDppbXBvcnQgZWxlbWVudCBpcyBlaXRoZXIgZGlyZWN0bHkgYWZ0ZXIgdGhlIHdzZGw6ZG9jdW1lbnRhdGlvbiBlbGVtZW50IG9yIGlzIHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IGlmIHRoZSB3c2RsOmRvY3VtZW50YXRpb24gZWxlbWVudCBpcyBub3QgcHJlc2VudC48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICAqLwotcHVibGljIGNsYXNzIEJQMjEwNSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIxMDUoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICBwcml2YXRlIGJvb2xlYW4gaW1wb3J0Rm91bmQgPSBmYWxzZTsKLQotICAvKiAKLSAgICogQ2hlY2sgd3NsZCBpbXBvcnQgZWxlbWVudCBpcyBlaXRoZXIgZGlyZWN0bHkgYWZ0ZXIgdGhlIHdzZGw6ZG9jdW1lbnRhdGlvbiBlbGVtZW50IAotICAgKiBvciBpcyB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudCBpZiB0aGUgd3NkbDpkb2N1bWVudGF0aW9uIGVsZW1lbnQgaXMgbm90IHByZXNlbnQuCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLkltcG9ydCwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEltcG9ydCBpbSwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgaW1wb3J0Rm91bmQgPSB0cnVlOwotICAgIGlmIChpbS5nZXREZWZpbml0aW9uKCkgIT0gbnVsbCAmJiBpbS5nZXRMb2NhdGlvblVSSSgpICE9IG51bGwpCi0gICAgICBwcm9jZXNzV1NETChpbS5nZXREZWZpbml0aW9uKCkuZ2V0RG9jdW1lbnRCYXNlVVJJKCkpOwotICB9Ci0KLSAgLyoKLSAgICogQ2hlY2sgZWxlbWVudCBpcyBleHRlbnNpYmlsaXR5LgotICAgKiBAcGFyYW0gZWwgLSB4bWwgZWxlbWVudAotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzRXh0ZW5zaWJpbGl0eUVsZW1lbnQoRWxlbWVudCBlbCkKLSAgewotICAgIGJvb2xlYW4gaXNFeCA9IHRydWU7Ci0gICAgaXNFeCA9IGlzRXggJiYgIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9CSU5ESU5HKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX0RFRklOSVRJT05TKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX0RPQ1VNRU5UQVRJT04pOwotICAgIGlzRXggPSBpc0V4ICYmICFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfRkFVTFQpOwotICAgIGlzRXggPSBpc0V4ICYmICFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfSU1QT1JUKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX0lOUFVUKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX01FU1NBR0UpOwotICAgIGlzRXggPSBpc0V4ICYmICFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfT1BFUkFUSU9OKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX09VVFBVVCk7Ci0gICAgaXNFeCA9IGlzRXggJiYgIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9QQVJUKTsKLSAgICBpc0V4ID0gaXNFeCAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX1BPUlQpOwotICAgIGlzRXggPSBpc0V4ICYmICFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfUE9SVFRZUEUpOwotICAgIGlzRXggPSBpc0V4ICYmICFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfU0VSVklDRSk7Ci0gICAgaXNFeCA9IGlzRXggJiYgIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9UWVBFUyk7Ci0KLSAgICByZXR1cm4gaXNFeDsKLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLQotICAgIC8vIEdldCB0aGUgZGVmaW5pdGlvbiBlbGVtZW50IHRoYXQgd2lsbCBiZSBhbmFseXplZCAgICAgICAKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPQotICAgICAgKERlZmluaXRpb24pIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAvLyBJZiBpdCBkb2Vzbid0IGNvbnRhaW4gYW55IGltcG9ydHMsIHRoZW4gdGhlIHJlc3VsdCBpcyBub3RBcHBsaWNhYmxlCi0gICAgaWYgKChkZWZpbml0aW9uLmdldEltcG9ydHMoKSA9PSBudWxsKQotICAgICAgfHwgKGRlZmluaXRpb24uZ2V0SW1wb3J0cygpLnNpemUoKSA9PSAwKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLQotICAgIC8vIEVsc2UgYW5hbHl6ZSB0aGUgCi0gICAgZWxzZQotICAgIHsKLSAgICAgIHByb2Nlc3NXU0RMKGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCkpOwotCi0gICAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgICAvL1Zpc2l0b3JBZGFwdG9yLmFkYXB0KHRoaXMpOwotICAgICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgICB0cmF2ZXJzYWwudmlzaXRJbXBvcnQodHJ1ZSk7Ci0KLSAgICAgIHRyYXZlcnNhbC5pZ25vcmVSZWZlcmVuY2VzKCk7Ci0gICAgICB0cmF2ZXJzYWwuaWdub3JlSW1wb3J0KCk7Ci0gICAgICB0cmF2ZXJzYWwudHJhdmVyc2UoCi0gICAgICAgIChEZWZpbml0aW9uKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLQotICAgICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UgaWYgKCFpbXBvcnRGb3VuZCkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoKLSAgICogdGhlIG1ldGhvZCBsb2FkcyBXU0RMIGFuZCBjaGVjayBzdHJ1Y3R1cmUKLSAgICogQHBhcmFtIGxvY2F0aW9uCi0gICAqLwotICBwcml2YXRlIHZvaWQgcHJvY2Vzc1dTREwoU3RyaW5nIGxvY2F0aW9uKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gcGFyc2VzIFdTREwKLSAgICAgIERvY3VtZW50IGRvYyA9IHZhbGlkYXRvci5wYXJzZVhNTERvY3VtZW50VVJMKGxvY2F0aW9uLCBudWxsKTsKLSAgICAgIGNoZWNrV1NETChkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkpOyAvLyBnZXQgZGVmaW5pdGlvbgotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgICAgLy8gQUREOiBhZGQgZXhjZXB0aW9uIGhhbmRsaW5nCi0gICAgICAvL1N5c3RlbS5lcnIucHJpbnRsbigiMjEwNSAtIFdTREwgbG9hZCBmYWlsZWQiKTsKLSAgICAgIGVycm9ycy5hZGQodC50b1N0cmluZygpKTsKLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiBDcmVhdGUgZmFsdXJlIHJlcG9ydCBjb250YWlucyBpbmZvcm1hdGlvbiBvZiBub2RlLgotICAgKiBAcGFyYW0gcm9vdAotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGNyZWF0ZUZhaWxlZChOb2RlIHJvb3QpCi0gIHsKLSAgICBBdHRyIGEgPSBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoKEVsZW1lbnQpIHJvb3QsIEFUVFJfV1NETF9MT0NBVElPTik7Ci0gICAgU3RyaW5nIHNjaGVtYUxvY2F0aW9uID0gKGEgIT0gbnVsbCkgPyBhLmdldFZhbHVlKCkgOiAiIjsKLSAgICBhID0gWE1MVXRpbHMuZ2V0QXR0cmlidXRlKChFbGVtZW50KSByb290LCBBVFRSX1dTRExfTkFNRVNQQUNFKTsKLSAgICBTdHJpbmcgbmFtZXNwYWNlID0gKGEgIT0gbnVsbCkgPyBhLmdldFZhbHVlKCkgOiAiIjsKLSAgICBlcnJvcnMuYWRkKG5ldyBRTmFtZShuYW1lc3BhY2UsIHNjaGVtYUxvY2F0aW9uKSk7Ci0gIH0KLQotICAvKgotICAgKiBDaGVjayB3c2RsIGNvcnJlc3BvbnMgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgotICAqIEBwYXJhbSByb290IC0gZGVmaW5pdGlvbgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGNoZWNrV1NETChOb2RlIHJvb3QpCi0gIHsKLSAgICBpZiAocm9vdCAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGltcG9ydCBlbGVtZW50Ci0gICAgICBFbGVtZW50IGltID0gWE1MVXRpbHMuZmluZENoaWxkRWxlbWVudCgoRWxlbWVudCkgcm9vdCwgV1NETF9JTVBPUlQpOwotCi0gICAgICAvLyBEZXRlcm1pbmUgaWYgYSBkb2N1bWVudGF0aW9uIGVsZW1lbnQgaXMgcHJlc2VudCBpbiB0aGUgV1NETCBkb2N1bWVudAotICAgICAgYm9vbGVhbiBkb2N1bWVudElzUHJlc2VudCA9Ci0gICAgICAgIChYTUxVdGlscy5maW5kQ2hpbGRFbGVtZW50KChFbGVtZW50KSByb290LCBXU0RMX0RPQ1VNRU5UQVRJT04pCi0gICAgICAgICAgIT0gbnVsbCk7Ci0KLSAgICAgIC8vIFZlcmlmeSB0aGF0IGFsbCBpbXBvcnQgZWxlbWVudHMgb2NjdXIgYWZ0ZXIgYSBkb2N1bWVudGF0aW9uIGVsZW1lbnQKLSAgICAgIHdoaWxlIChpbSAhPSBudWxsKQotICAgICAgewotICAgICAgICAvLyBGaW5kIGVsZW1lbnRzIHRoYXQgYXJlIHByZXZpb3VzIHRvIHRoZSBpbXBvcnQgZWxlbWVudAotICAgICAgICBFbGVtZW50IGVsID0gWE1MVXRpbHMuZmluZFByZXZpb3VzU2libGluZyhpbSk7Ci0gICAgICAgIGlmIChlbCAhPSBudWxsKQotICAgICAgICAgIHdoaWxlIChpc0V4dGVuc2liaWxpdHlFbGVtZW50KGVsKSAmJiBlbCAhPSBudWxsKQotICAgICAgICAgICAgaWYgKGVsICE9IG51bGwpCi0gICAgICAgICAgICAgIGVsID0gWE1MVXRpbHMuZmluZFByZXZpb3VzU2libGluZyhlbCk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIHdzZGw6ZG9jdW1lbnQgZWxlbW50IGlzIHByZXNlbnQKLSAgICAgICAgaWYgKGRvY3VtZW50SXNQcmVzZW50ICYmIGVsICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIVhNTFV0aWxzLmVxdWFscyhlbCwgV1NETF9ET0NVTUVOVEFUSU9OKSAmJiAhWE1MVXRpbHMuZXF1YWxzKGVsLCBXU0RMX0lNUE9SVCkpCi0gICAgICAgICAgICBjcmVhdGVGYWlsZWQocm9vdCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbHNlIGNoZWNrIGlmIGl0IGlzIGFub3RoZXIgd3NkbDogZWxlbWVudAotICAgICAgICBlbHNlIGlmIChlbCAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gSWYgbm90IHRoZSBkZWZpbml0aW9ucyBlbGVtZW50LCB0aGVuIGNoZWNrIGZvciBvdGhlciB3c2RsOiBlbGVtZW50Ci0gICAgICAgICAgaWYgKCFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfREVGSU5JVElPTlMpICYmICFYTUxVdGlscy5lcXVhbHMoZWwsIFdTRExfSU1QT1JUKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZWwuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19VUklfV1NETCkpCi0gICAgICAgICAgICAgIGNyZWF0ZUZhaWxlZChyb290KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXQgdGhlIG5leHQgaW1wb3J0IGVsZW1lbnQKLSAgICAgICAgaW0gPSBYTUxVdGlscy5maW5kRWxlbWVudChpbSwgV1NETF9JTVBPUlQpOwotICAgICAgfQotICAgIH0KLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMDcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMDcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY0MjA2Ni4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTA3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5BdHRyOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLQotCi0vKioKLSAqIEJQMjEwNy4KLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOnR5cGVzIGVsZW1lbnQgY29udGFpbmluZyBhbiB4c2Q6c2NoZW1hIGVsZW1lbnQ8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIHhzZDpzY2hlbWEgZWxlbWVudCBjb250YWlucyBhIHRhcmdldE5hbWVzcGFjZSBhdHRyaWJ1dGUgd2l0aCBhIHZhbGlkIGFuZCBub24tbnVsbCB2YWx1ZSB1bmxlc3MgdGhlIHhzZDpzY2hlbWEgZWxlbWVudCBoYXMgeHNkOmltcG9ydCBhbmQvb3IgeHNkOmFubm90YXRpb24gYXMgaXRzIG9ubHkgY2hpbGQgZWxlbWVudChzKS48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlAyMTA3IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcyBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMTA3KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gc2NoZW1hRm91bmQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JzID0gbmV3IEVycm9yTGlzdCgpOwotICAvL3ByaXZhdGUgU3RyaW5nIGNvbnRleHQ7Ci0KLSAgLyogCi0gICAqIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLQotICAgIFR5cGVzIHQgPSAoVHlwZXMpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0gICAgTGlzdCBleHRzID0gdC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICBpZiAoZXh0cyAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vY29udGV4dCA9IGVudHJ5Q29udGV4dC5nZXRXU0RMRG9jdW1lbnQoKS5nZXREZWZpbml0aW9ucygpLmdldERvY3VtZW50QmFzZVVSSSgpOwotICAgICAgSXRlcmF0b3IgaXQgPSBleHRzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlbCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaXQubmV4dCgpOwotICAgICAgICBpZiAoZWwgaW5zdGFuY2VvZiBTY2hlbWEpCi0gICAgICAgICAgc2VhcmNoRm9yU2NoZW1hKCgoU2NoZW1hKSBlbCkuZ2V0RWxlbWVudCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLwkJCSAgY29udGV4dCA9IGVudHJ5Q29udGV4dC5nZXRXU0RMRG9jdW1lbnQoKS5nZXREZWZpbml0aW9ucygpLmdldERvY3VtZW50QmFzZVVSSSgpOwotICAgIC8vCQkJICBwcm9jZXNzV1NETChlbnRyeUNvbnRleHQuZ2V0V1NETERvY3VtZW50KCkuZ2V0RmlsZW5hbWUoKSk7Ci0KLSAgICBpZiAoIWVycm9ycy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlcnJvcnMudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICBlbHNlIGlmICghc2NoZW1hRm91bmQpCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotCi0gICAgZWxzZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoKLSAgICogQ2hlY2sgbm9kZSBzY2hlbWEgb3IgbG9hZCBzY2hlbWEgZnJvbSBpbm1wb3J0IGlmIGl0IGV4aXN0cyBhbmQgcHJvY2VzcyBpdC4gCi0gICAqIEBwYXJhbSBuIC0gbm9kZQotICAqLwotICBwcml2YXRlIHZvaWQgc2VhcmNoRm9yU2NoZW1hKE5vZGUgbikKLSAgewotICAgIHdoaWxlIChuICE9IG51bGwpCi0gICAgewotICAgICAgLy8gc2VhcmNoZXMgZm9yIHhzZDppbXBvcnQgZWxlbWVudAotICAgICAgaWYgKE5vZGUuRUxFTUVOVF9OT0RFID09IG4uZ2V0Tm9kZVR5cGUoKSkKLSAgICAgIHsKLSAgICAgICAgLy8gaWYgeHNkOnNjaGVtYSBlbGVtZW50IGlzIGZvdW5kIC0+IHByb2Nlc3Mgc2NoZW1hCi0gICAgICAgIGlmIChYTUxVdGlscy5lcXVhbHMobiwgRUxFTV9YU0RfU0NIRU1BKSkKLSAgICAgICAgewotICAgICAgICAgIHNjaGVtYUZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICBwcm9jZXNzU2NoZW1hKG4sIG51bGwpOwotICAgICAgICB9Ci0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgLy8gaWYgeHNkOmltcG9ydCBlbGVtZW50IGlzIGZvdW5kIC0+IGxvYWQgc2NoZW1hIGFuZCBwcm9jZXNzIHNjaGVtYQotICAgICAgICAgIC8vaWYgKFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9JTVBPUlQpKQotICAgICAgICAgIC8vICBsb2FkU2NoZW1hKG4pOwotICAgICAgICAgIC8vZWxzZQotICAgICAgICAgIC8vIGVsc2UgaXRlcmF0ZSBlbGVtZW50IHJlY3Vyc2l2ZWx5Ci0gICAgICAgICAgc2VhcmNoRm9yU2NoZW1hKG4uZ2V0Rmlyc3RDaGlsZCgpKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgIH0KLSAgfQotCi0gIC8qCi0gICAqIExvYWQgc2NoZW1hIGFuZCBwcm9jZXNzIGl0LgotICAgKiBAcGFyYW0gaW1wb3J0Tm9kZSAtIHhzZDppbXBvcnQgZWxlbWVudAotICAqLwotICAvL3ByaXZhdGUgdm9pZCBsb2FkU2NoZW1hKE5vZGUgaW1wb3J0Tm9kZSkKLSAgLy97Ci0gIC8vICBFbGVtZW50IGltID0gKEVsZW1lbnQpIGltcG9ydE5vZGU7Ci0gIC8vICBBdHRyIHNjaGVtYUxvY2F0aW9uID0gWE1MVXRpbHMuZ2V0QXR0cmlidXRlKGltLCBBVFRSX1hTRF9TQ0hFTUFMT0NBVElPTik7Ci0gIC8vICAvLyB0cnkgdG8gcGFyc2UgaW1wb3J0ZWQgWFNECi0gIC8vICBpZiAoc2NoZW1hTG9jYXRpb24gIT0gbnVsbCAmJiBzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpICE9IG51bGwpCi0gIC8vICAgIHRyeQotICAvLyAgICB7Ci0gIC8vICAgICAgLy8gaWYgYW55IGVycm9yIG9yIHJvb3QgZWxlbWVudCBpcyBub3QgWFNEIHNjaGVtYSAtPiBlcnJvcgotICAvLyAgICAgIERvY3VtZW50IHNjaGVtYSA9Ci0gIC8vICAgICAgICB2YWxpZGF0b3IucGFyc2VYTUxEb2N1bWVudFVSTChzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpLCBjb250ZXh0KTsKLSAgLy8gICAgICBpZiAoWE1MVXRpbHMuZXF1YWxzKHNjaGVtYS5nZXREb2N1bWVudEVsZW1lbnQoKSwgRUxFTV9YU0RfU0NIRU1BKSkKLSAgLy8gICAgICB7Ci0gIC8vICAgICAgICBBdHRyIGEgPSBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoaW0sIEFUVFJfWFNEX05BTUVTUEFDRSk7Ci0gIC8vICAgICAgICBTdHJpbmcgbmFtZXNwYWNlID0gKGEgIT0gbnVsbCkgPyBhLmdldFZhbHVlKCkgOiAiIjsKLSAgLy8gICAgICAgIHByb2Nlc3NTY2hlbWEoc2NoZW1hLmdldERvY3VtZW50RWxlbWVudCgpLCBuYW1lc3BhY2UpOwotICAvLyAgICAgIH0KLSAgLy8gICAgfQotICAvLyAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gIC8vICAgIHsKLSAgLy8gICAgICAvLyBub3RoaW5nLiBpdCdzIG5vdCBhIHNjaGVtYQotICAvLyAgICB9Ci0gIC8vfQotCi0gIC8qCi0gICAqIENyZWF0ZSBmYWx1cmUgcmVwb3J0IGlmIGl0J3Mgbm90IGNvcnJlc3BvbnMgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgotICAgKiBAcGFyYW0gc2NoZW1hIC0geHNkOnNjaGVtYQotICAgKiBAcGFyYW0gbmFtZXNwYWNlIC0gbmFtZXNwYWNlIG9mIHNjaGVtYQotICAqLwotICBwcml2YXRlIHZvaWQgcHJvY2Vzc1NjaGVtYShOb2RlIHNjaGVtYSwgU3RyaW5nIG5hbWVzcGFjZSkKLSAgewotICAgIEF0dHIgYSA9Ci0gICAgICBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoKEVsZW1lbnQpIHNjaGVtYSwgQVRUUl9YU0RfVEFSR0VUTkFNRVNQQUNFKTsKLSAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gKGEgIT0gbnVsbCkgPyBhLmdldFZhbHVlKCkgOiBudWxsOwotCi0gICAgTm9kZSBuID0gc2NoZW1hLmdldEZpcnN0Q2hpbGQoKTsKLSAgICAvLwkgICAhISB3ZSBzdXBwb3NlIHRoYXQgeHNkOmltcG9ydCBlbGVtZW50IGlzIG9jY3VyZWQgb25seSB3aXRoaW4geHNkOnNjaGVtYSBlbGVtZW50Ci0gICAgYm9vbGVhbiBjb250YWluc09ubHlJbXBvcnRBbmRBbm5vdGF0aW9uID0gdHJ1ZTsKLSAgICB3aGlsZSAobiAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChuLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgICB7Ci0gICAgICAgIGNvbnRhaW5zT25seUltcG9ydEFuZEFubm90YXRpb24KLSAgICAgICAgICAmPSAoWE1MVXRpbHMuZXF1YWxzKG4sIEVMRU1fWFNEX0lNUE9SVCkKLSAgICAgICAgICAgIHx8IFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9BTk5PVEFUSU9OKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vaWYgKE5vZGUuRUxFTUVOVF9OT0RFID09IG4uZ2V0Tm9kZVR5cGUoKSAmJiBYTUxVdGlscy5lcXVhbHMobiwgRUxFTV9YU0RfSU1QT1JUKSkKLSAgICAgIC8vCWxvYWRTY2hlbWEobik7Ci0KLSAgICAgIG4gPSBuLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHRhcmdldCBuYW1lc3BhY2UgaXMgbm90IHNldCBhbmQgdGhlcmUgYXJlIGVsZW1lbnRzIGluIGFkZGl0aW9uIHRvIGltcG9ydCBhbmQgYW5ub3RhdGlvbiwgdGhlbiBlcnJvcgotICAgIGlmICgodGFyZ2V0TmFtZXNwYWNlID09IG51bGwgfHwgdGFyZ2V0TmFtZXNwYWNlLmxlbmd0aCgpID09IDApCi0gICAgICAmJiAoIWNvbnRhaW5zT25seUltcG9ydEFuZEFubm90YXRpb24pKQotICAgIHsKLSAgICAgIGVycm9ycy5hZGQodGFyZ2V0TmFtZXNwYWNlLCBYTUxVdGlscy5zZXJpYWxpemUoKEVsZW1lbnQpIHNjaGVtYSkpOwotICAgIH0KLQotICAgIGlmIChuYW1lc3BhY2UgIT0gbnVsbCAmJiAhbmFtZXNwYWNlLmVxdWFscyh0YXJnZXROYW1lc3BhY2UpKQotICAgIHsKLSAgICAgIGVycm9ycy5hZGQobmFtZXNwYWNlLCBYTUxVdGlscy5zZXJpYWxpemUoKEVsZW1lbnQpIHNjaGVtYSkpOwotICAgIH0KLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMDguamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMDguamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY3MzNmNS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTA4LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVHlwZXNSZWdpc3RyeTsKLQotCi0vKioKLQkgKiBCUDIxMDguCi0gICAgICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6dHlwZXMsIHdpdGggQXJyYXkgZGVjbGFyYXRpb25zIGVpdGhlciBsb2NhbGx5IGRlZmluZWQgb3IgZnJvbSBhbiBpbXBvcnRlZCBkZXNjcmlwdGlvbjwvY29udGV4dD4KLSAgICAgKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIHR5cGUgc29hcGVuYzpBcnJheSBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlc2UgZGVjbGFyYXRpb25zLCBhbmQgdGhlIHdzZGw6YXJyYXlUeXBlIGF0dHJpYnV0ZSBpcyBub3QgdXNlZCBpbiB0aGUgdHlwZSBkZWNsYXJhdGlvbi48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotCSAqLwotcHVibGljIGNsYXNzIEJQMjEwOCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjEwOChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JzID0gbmV3IEVycm9yTGlzdCgpOwotCi0gIC8qIAotICAgKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICBUeXBlcyB0ID0gKFR5cGVzKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgLy8gU2VhcmNoIHRoZSBkZWZpbml0aW9ucyBpbiBDYW5kaWRhdGVJbmZvIHRvIGxvY2F0ZSB0aGUgZGVmaW5pdGlvbiBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCB0eXBlcyBlbGVtZW50Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLSAgICBpZiAoKGRlZmluaXRpb24gPSB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXREZWZpbml0aW9uKHQpKQotICAgICAgPT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBpZiBpdCBkb2VzIHRoZW4gdGhyb3cgYW4gZXhlY3B0aW9uCi0gICAgICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJDb3VsZCBub3QgbG9jYXRlIHR5cGVzIGVsZW1lbnQgZGVmaW5pdGlvbi4iKTsKLSAgICB9Ci0KLSAgICBlbHNlCi0gICAgewotICAgICAgVHlwZXNSZWdpc3RyeSByZWdpc3RyeSA9Ci0gICAgICAgIG5ldyBUeXBlc1JlZ2lzdHJ5KAotICAgICAgICAgIHQsCi0gICAgICAgICAgZGVmaW5pdGlvbi5nZXREb2N1bWVudEJhc2VVUkkoKSwKLSAgICAgICAgICB2YWxpZGF0b3IpOwotCi0gICAgICBJdGVyYXRvciBpdCA9IHJlZ2lzdHJ5LmdldEFycmF5VHlwZXMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgICAgZXJyb3JzLmFkZCgoUU5hbWUpIGl0Lm5leHQoKSk7Ci0KLSAgICAgIGlmICghZXJyb3JzLmlzRW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGVycm9ycy50b1N0cmluZygpLCBlbnRyeUNvbnRleHQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTliNmYwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5UeXBlczsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkVycm9yTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5UeXBlc1JlZ2lzdHJ5OwotCi0KLS8qKgotICogQlAyMTEwLgotICAgKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDp0eXBlczwvY29udGV4dD4KLSAgICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkFycmF5IGRlY2xhcmF0aW9uIHdyYXBwZXIgZWxlbWVudHMgZG9lcyBub3QgdXNlIHRoZSBuYW1pbmcgY29udmVudGlvbiBBcnJheU9mWFhYLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIxMTAgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIxMTAoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HOwotCi0gICAgVHlwZXMgdCA9IChUeXBlcykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIC8vIFNlYXJjaCB0aGUgZGVmaW5pdGlvbnMgaW4gQ2FuZGlkYXRlSW5mbyB0byBsb2NhdGUgdGhlIGRlZmluaXRpb24gZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgdHlwZXMgZWxlbWVudAotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IG51bGw7Ci0gICAgaWYgKChkZWZpbml0aW9uID0gdmFsaWRhdG9yLmFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0RGVmaW5pdGlvbih0KSkKLSAgICAgID09IG51bGwpCi0gICAgewotICAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBidXQgaWYgaXQgZG9lcyB0aGVuIHRocm93IGFuIGV4ZWNwdGlvbgotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigiQ291bGQgbm90IGxvY2F0ZSB0eXBlcyBlbGVtZW50IGRlZmluaXRpb24uIik7Ci0gICAgfQotCi0gICAgZWxzZQotICAgIHsKLSAgICAgIFR5cGVzUmVnaXN0cnkgcmVnaXN0cnkgPQotICAgICAgICBuZXcgVHlwZXNSZWdpc3RyeSgKLSAgICAgICAgICB0LAotICAgICAgICAgIGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCksCi0gICAgICAgICAgdmFsaWRhdG9yKTsKLQotICAgICAgSXRlcmF0b3IgaXQgPSByZWdpc3RyeS5nZXRFbGVtZW50TGlzdCgpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBRTmFtZSB0eXBlID0gKFFOYW1lKSBpdC5uZXh0KCk7Ci0gICAgICAgIGlmICh0eXBlLmdldExvY2FsUGFydCgpLnN0YXJ0c1dpdGgoIkFycmF5T2YiKSkKLSAgICAgICAgICBlcnJvcnMuYWRkKHR5cGUpOwotICAgICAgfQotCi0gICAgICBpZiAoIWVycm9ycy5pc0VtcHR5KCkpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfV0FSTklORzsKLSAgICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlkOTQyZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTExLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRXJyb3JMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSAqIEJQMjExMS4KLSAgICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6YmluZGluZywgd2hpY2ggY29udGFpbnMgYSBkb2N1bWVudC1saXRlcmFsIHNvYXA6YmluZGluZzwvY29udGV4dD4KLSAgICogCi0gICAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5JZiB0aGUgInBhcnRzIiBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgdGhlbiB0aGUgc29hcGJpbmQ6Ym9keSBlbGVtZW50KHMpIGhhdmUgYXQgbW9zdCBvbmUgcGFydCBsaXN0ZWQgaW4gdGhlIHBhcnRzIGF0dHJpYnV0ZS48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlAyMTExIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3IgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjExMShXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIGRvY0xpdGVyYWxGb3VuZCA9IGZhbHNlOwotICBwcml2YXRlIEVycm9yTGlzdCBlcnJvcnMgPSBuZXcgRXJyb3JMaXN0KCk7Ci0KLSAgLyogCi0gICAqIFB1dCBpbiBjb250ZXh0IHNvYXAgYmluZGluZydzIHN0eWxlCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZywgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUEJpbmRpbmcgYmluZGluZywKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIFN0cmluZyBzdHlsZSA9Ci0gICAgICAoYmluZGluZy5nZXRTdHlsZSgpID09IG51bGwpCi0gICAgICAgID8gV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQwotICAgICAgICA6IGJpbmRpbmcuZ2V0U3R5bGUoKTsKLSAgICBjdHguYWRkUGFyYW1ldGVyKCJzdHlsZSIsIHN0eWxlKTsKLSAgfQotCi0gIC8qIAotICAgKiBWZXJpZnkgc3R5bGUgb2Ygc29hcCBvcGVyYXRpb24gaXMgImRvY3VtZW50IiBpZiBub3QgdGhlbiBpdCdzIGNhbmNlbGVkIHByb2Nlc3MuIAotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbiwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBPcGVyYXRpb24gb3BlcmF0aW9uLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgU3RyaW5nIHN0eWxlID0gb3BlcmF0aW9uLmdldFN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlID09IG51bGwpCi0gICAgICBzdHlsZSA9IChTdHJpbmcpIGN0eC5nZXRQYXJhbWV0ZXIoInN0eWxlIik7Ci0gICAgLy8gYXNzZXJ0IHN0eWxlICE9IG51bGwKLSAgICBpZiAoIVdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9ET0MuZXF1YWxzKHN0eWxlKSkKLSAgICAgIGN0eC5jYW5jZWxCaW5kaW5nT3BlcmF0aW9uUHJvY2Vzc2luZygpOwotICB9Ci0KLSAgLyogCi0gICAqIElmIHVzZSBvZiBzb2FwIGJvZHkgaXMgImxpdGVyYWwiIGFuZCBwYXJ0cyBvZiBzb2FwIGJvZHkgaXMgbW9yZSB0aGFuIG9uZSBpdCBjcmVhdGVzIGZhbHVyZSByZXBvcnQuIAotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHksIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQQm9keSBib2R5LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICAvLyBhc3NlcnQgc3R5bGUgPT0gImRvY3VtZW50IgotICAgIGlmIChXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JPRFlfVVNFX0xJVC5lcXVhbHMoYm9keS5nZXRVc2UoKSkpCi0gICAgewotICAgICAgZG9jTGl0ZXJhbEZvdW5kID0gdHJ1ZTsKLQotICAgICAgTGlzdCBwYXJ0cyA9IGJvZHkuZ2V0UGFydHMoKTsKLSAgICAgIGlmIChwYXJ0cyAhPSBudWxsICYmIHBhcnRzLnNpemUoKSA+IDEpCi0gICAgICAgIC8vaG93IHRvIHBpY2sgb3V0IG9uZSBib2R5IGZyb20gYW5vdGhlciBvbmUgPwkJCQkJCQotICAgICAgICBlcnJvcnMuYWRkKGJvZHkuZ2V0RWxlbWVudFR5cGUoKSwgYm9keS5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgfQotICB9Ci0KLSAgLyogCi0gICAqIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICAvL1Zpc2l0b3JBZGFwdG9yLmFkYXB0KHRoaXMpOzsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQmluZGluZyh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQm9keSh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQT3BlcmF0aW9uKHRydWUpOwotCi0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlSW1wb3J0KCk7Ci0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLQotICAgIGlmICghZXJyb3JzLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGVycm9ycy50b1N0cmluZygpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIGVsc2UgaWYgKCFkb2NMaXRlcmFsRm91bmQpCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotCi0gICAgZWxzZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjJiYzlmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3NWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkVycm9yTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5XU0RMVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci0KLQotLyoqCi0gKiBCUDIxMTIuCi0gICAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcsIHdpdGggYSBzdHlsZSAicnBjIiBhdHRyaWJ1dGUgYW5kIGNvbnRhaW5pbmcgYXQgbGVhc3QgYSBzb2FwYmluZDpib2R5IGVsZW1lbnQ8L2NvbnRleHQ+Ci0gICAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5ObyB3c2RsOnBhcnQgcmVmZXJyZWQgYnkgc3VjaCBhIHNvYXBiaW5kOmJvZHkgZWxlbWVudCBpcyBkZWZpbmVkIHVzaW5nIHRoZSAiZWxlbWVudCIgYXR0cmlidXRlLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIxMTIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMTEyKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gcnBjTGl0ZXJhbEZvdW5kID0gZmFsc2U7Ci0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICAvKiAKLSAgICogUHV0IGluIGNvbnRleHQgc29hcCBiaW5kaW5nJ3Mgc3R5bGUKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLQotICBwdWJsaWMgdm9pZCB2aXNpdCgKLSAgICBTT0FQQmluZGluZyBiaW5kaW5nLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgU3RyaW5nIHN0eWxlID0KLSAgICAgIChiaW5kaW5nLmdldFN0eWxlKCkgPT0gbnVsbCkKLSAgICAgICAgPyBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DCi0gICAgICAgIDogYmluZGluZy5nZXRTdHlsZSgpOwotICAgIGN0eC5hZGRQYXJhbWV0ZXIoImJpbmRpbmdTdHlsZSIsIHN0eWxlKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIEJpbmRpbmdPcGVyYXRpb24gb3AsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjdHgucmVtb3ZlUGFyYW1ldGVyKCJvcGVyYXRpb25TdHlsZSIpOwotICB9Ci0KLSAgLyogCi0gICAqIFZlcmlmeSBzdHlsZSBvZiBzb2FwIG9wZXJhdGlvbiBpcyAicnBjIiBpZiBub3QgdGhlbiBpdCdzIGNhbmNlbGVkIHByb2Nlc3MuIAotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbiwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBPcGVyYXRpb24gb3BlcmF0aW9uLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY3R4LmFkZFBhcmFtZXRlcigib3BlcmF0aW9uU3R5bGUiLCBvcGVyYXRpb24uZ2V0U3R5bGUoKSk7Ci0gIH0KLQotICAvKiAKLSAgICogSWYgdXNlIG9mIHNvYXAgYm9keSBpcyAibGl0ZXJhbCIgYW5kIGlmIGF0IGxlYXN0IG9uZSBwYXJ0IGlzIGRlZmluZSB1c2luZyAiZWxlbWVudCIgYXR0cmlidXRlIGl0IGNyZWF0ZXMgZmFsdXJlIHJlcG9ydC4gICAgCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBCb2R5IGJvZHksIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIFN0cmluZyBvcFN0eWxlID0gKFN0cmluZykgY3R4LmdldFBhcmFtZXRlcigib3BlcmF0aW9uU3R5bGUiKTsKLSAgICBTdHJpbmcgYlN0eWxlID0gKFN0cmluZykgY3R4LmdldFBhcmFtZXRlcigiYmluZGluZ1N0eWxlIik7Ci0KLSAgICBpZiAoKG9wU3R5bGUgPT0gbnVsbAotICAgICAgICAmJiAhV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQy5lcXVhbHMoYlN0eWxlKSkKLSAgICAgIHx8IChvcFN0eWxlICE9IG51bGwgCi0gICAgICAJJiYgIVdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMuZXF1YWxzKG9wU3R5bGUpKSkKLSAgICB7Ci0gICAgICBjdHguY2FuY2VsQmluZGluZ09wZXJhdGlvblByb2Nlc3NpbmcoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gYXNzZXJ0IHVzZSA9PSAibGl0ZXJhbCIKLSAgICBpZiAoV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CT0RZX1VTRV9MSVQuZXF1YWxzKGJvZHkuZ2V0VXNlKCkpKQotICAgIHsKLSAgICAgIHJwY0xpdGVyYWxGb3VuZCA9IHRydWU7Ci0KLSAgICAgIC8vIGZpbmQgY29ycmVzcG9uZGluZyBtZXNzYWdlCi0gICAgICBPcGVyYXRpb24gb3AgPSBjdHguZ2V0QmluZGluZ09wZXJhdGlvbigpLmdldE9wZXJhdGlvbigpOwotICAgICAgLy8gaWYgc29tZSBsaW5rcyBhcmUgYnJva2VuLCBjYW5jZWwgcHJvY2Vzc2luZwotICAgICAgaWYgKG9wID09IG51bGwKLSAgICAgICAgfHwgKHBhcmVudCBpbnN0YW5jZW9mIEJpbmRpbmdJbnB1dCAmJiBvcC5nZXRJbnB1dCgpID09IG51bGwpCi0gICAgICAgIHx8IChwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nT3V0cHV0ICYmIG9wLmdldE91dHB1dCgpID09IG51bGwpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAgIE1lc3NhZ2UgbSA9Ci0gICAgICAgIChwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nSW5wdXQpCi0gICAgICAgICAgPyBvcC5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKQotICAgICAgICAgIDogb3AuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgICAgLy8gUkVNT1ZFOiBjdXJyZW50IG1lc3NhZ2Ugc2hvdWxkIGVxdWFscyB0byBtZXNzYWdlIGdpdmVuIGFzIGVudHJ5Ci0gICAgICAvL2lmIChtID09IG51bGwgfHwgbWVzc2FnZSAhPSBtKQotICAgICAgaWYgKG0gPT0gbnVsbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgICBMaXN0IHBhcnRzID0KLSAgICAgICAgV1NETFV0aWwuZ2V0UGFydHMoCi0gICAgICAgICAgb3AsCi0gICAgICAgICAgbSwKLSAgICAgICAgICBib2R5LAotICAgICAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMpOwotICAgICAgaWYgKHBhcnRzID09IG51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgICAgLyogY2hlY2sgd2hldGhlciBwYXJ0cyBsaXN0IGNvbnRhaW5zIGEgcGFydHMgd2hpY2ggdXNlcwotICAgICAgICogZWxlbWVudCBhdHRyaWJ1dGUuIElmIHNvLCBwYXJ0IG5hbWUgd2lsbCBiZSBhZGRlZCBpbnRvCi0gICAgICAgKiBlcnJvcnMgc2V0LgotICAgICAgICovCi0gICAgICBJdGVyYXRvciBpdCA9IHBhcnRzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBQYXJ0IHBhcnQgPSAoUGFydCkgaXQubmV4dCgpOwotICAgICAgICBpZiAocGFydC5nZXRFbGVtZW50TmFtZSgpICE9IG51bGwpCi0gICAgICAgICAgZXJyb3JzLmFkZChwYXJ0LmdldE5hbWUoKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyogCi0gICAqIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAvLyBzYXZlIG1lc3NhZ2UgCi0gICAgLy9tZXNzYWdlID0gKE1lc3NhZ2UpZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICAvL1Zpc2l0b3JBZGFwdG9yLmFkYXB0KHRoaXMpOzsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQmluZGluZyh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRCaW5kaW5nT3BlcmF0aW9uKHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBPcGVyYXRpb24odHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0U09BUEJvZHkodHJ1ZSk7Ci0KLSAgICB0cmF2ZXJzYWwuaWdub3JlUmVmZXJlbmNlcygpOwotICAgIHRyYXZlcnNhbC5pZ25vcmVJbXBvcnQoKTsKLQotICAgIHRyYXZlcnNhbC50cmF2ZXJzZSgoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKSk7Ci0KLSAgICBpZiAoIWVycm9ycy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlcnJvcnMudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICBlbHNlIGlmICghcnBjTGl0ZXJhbEZvdW5kKQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLQotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQzMWNkYy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTEzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3NWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkVycm9yTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5XU0RMVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci0KLQotLyoqCi0gKiBCUDIxMTMuCi0gICAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcgZWxlbWVudDwvY29udGV4dD4KLSAgICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBzb2FwYmluZDpoZWFkZXIsIHNvYXBiaW5kOmhlYWRlcmZhdWx0IGFuZCBzb2FwYmluZDpmYXVsdCBlbGVtZW50cyBvbmx5IHJlZmVyIHRvIHdzZGw6cGFydCBlbGVtZW50KHMpIHRoYXQgaGF2ZSBiZWVuIGRlZmluZWQgdXNpbmcgdGhlICJlbGVtZW50IiBhdHRyaWJ1dGUuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjExMyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIxMTMoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICAvKiAKLSAgICogVmVyaWZ5IHNvYXAgaGVhZGVyIHVzZXMgcGFydCBpcyBkZWZpbmUgdXNpbmcgImVsZW1lbnQiIGF0dHJpYnV0ZSAgIAotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlciwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBIZWFkZXIgaGVhZGVyLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgRGVmaW5pdGlvbiBkID0gKERlZmluaXRpb24pIGN0eC5nZXRQYXJhbWV0ZXIoImRlZmluaXRpb24iKTsKLSAgICBNZXNzYWdlIG0gPSBkLmdldE1lc3NhZ2UoaGVhZGVyLmdldE1lc3NhZ2UoKSk7Ci0gICAgaWYgKG0gIT0gbnVsbCkKLSAgICAgIGNoZWNrUGFydChtLmdldFBhcnQoaGVhZGVyLmdldFBhcnQoKSksIGN0eC5nZXRCaW5kaW5nKCkpOwotICB9Ci0KLSAgLyogCi0gICAqIFZlcmlmeSBzb2FwIGhlYWRlcmZhdWx0IHVzZXMgcGFydCBpcyBkZWZpbmUgdXNpbmcgImVsZW1lbnQiIGF0dHJpYnV0ZQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUEhlYWRlckZhdWx0IGZhdWx0LAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgRGVmaW5pdGlvbiBkID0gKERlZmluaXRpb24pIGN0eC5nZXRQYXJhbWV0ZXIoImRlZmluaXRpb24iKTsKLSAgICBNZXNzYWdlIG0gPSBkLmdldE1lc3NhZ2UoZmF1bHQuZ2V0TWVzc2FnZSgpKTsKLSAgICAvLyBpZiBtZXNzYWdlIG9yIHBhcnQgaXMgbm90IGZvdW5kIC0gTk9UX0FQUExJQ0FCTEUgPz8/PwotICAgIGlmIChtICE9IG51bGwpCi0gICAgICBjaGVja1BhcnQobS5nZXRQYXJ0KGZhdWx0LmdldFBhcnQoKSksIGN0eC5nZXRCaW5kaW5nKCkpOwotICB9Ci0KLSAgLyogCi0gICAqIFZlcmlmeSBzb2FwIGZhdWx0IHVzZXMgcGFydCBpcyBkZWZpbmUgdXNpbmcgImVsZW1lbnQiIGF0dHJpYnV0ZQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoU09BUEZhdWx0IGZhdWx0LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgZmF1bHROYW1lID0gZmF1bHQuZ2V0TmFtZSgpOwotICAgIGlmIChmYXVsdE5hbWUgPT0gbnVsbCkKLSAgICAgIGZhdWx0TmFtZSA9IGN0eC5nZXRCaW5kaW5nRmF1bHQoKS5nZXROYW1lKCk7Ci0gICAgT3BlcmF0aW9uIG9wID0gY3R4LmdldEJpbmRpbmdPcGVyYXRpb24oKS5nZXRPcGVyYXRpb24oKTsKLSAgICBpZiAob3AgPT0gbnVsbCAvKiB8fCBmYXVsdE5hbWUgPT0gbnVsbCovCi0gICAgICApIC8vIG1heSBiZSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgbGVnYWwgZmF1bHQgd2l0aCBudWxsIG5hbWUKLSAgICAgIHJldHVybjsKLSAgICAvLyB3ZSBzdXBwb3NlIHRoYXQgU09BUEZhdWx0LmdldE5hbWUoKSBjb3JyZXNwb25kcyB0byB0aGUgYWJzdHJhY3Qgb3BlcmF0aW9uJ3MgZmF1bHQgbmFtZQkJCQotICAgIEZhdWx0IGYgPSBvcC5nZXRGYXVsdChmYXVsdE5hbWUpOwotICAgIGlmIChmID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgTWVzc2FnZSBtID0gZi5nZXRNZXNzYWdlKCk7Ci0gICAgLy8gbWVzc2FnZSBzaG91bGQgaGF2ZSBvbmx5IG9uZSBwYXJ0Ci0gICAgaWYgKG0gPT0gbnVsbCB8fCBtLmdldFBhcnRzKCkgPT0gbnVsbCB8fCBtLmdldFBhcnRzKCkuc2l6ZSgpICE9IDEpCi0gICAgICByZXR1cm47Ci0gICAgY2hlY2tQYXJ0KChQYXJ0KSBtLmdldE9yZGVyZWRQYXJ0cyhudWxsKS5nZXQoMCksIGN0eC5nZXRCaW5kaW5nKCkpOwotICB9Ci0KLSAgLyoKLSAgICogVmVyaWZ5IHBhcnQgaXMgZGVmaW5lIHVzaW5nICJlbGVtZW50IiBhdHRyaWJ1dGUuCi0gICAqIEBwYXJhbSBwIC0gcGFydAotICAgKiBAcGFyYW0gYiAtIGJpbmRpbmcKLSAgKi8KLSAgLy8gcmVmYWN0b3JpbmcKLSAgcHJpdmF0ZSB2b2lkIGNoZWNrUGFydChQYXJ0IHAsIEJpbmRpbmcgYikKLSAgewotICAgIGlmIChwICE9IG51bGwgJiYgcC5nZXRFbGVtZW50TmFtZSgpID09IG51bGwpCi0gICAgICBlcnJvcnMuYWRkKGIuZ2V0UU5hbWUoKSwgcC5nZXROYW1lKCkpOwotICB9Ci0KLSAgLyogCi0gICAqIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICAvL1Zpc2l0b3JBZGFwdG9yLmFkYXB0KHRoaXMpOzsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQSGVhZGVyKHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBIZWFkZXJGYXVsdCh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQRmF1bHQodHJ1ZSk7Ci0KLSAgICBNYXAgbSA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgRGVmaW5pdGlvbiBkZWYgPSBlbnRyeUNvbnRleHQuZ2V0V1NETERvY3VtZW50KCkuZ2V0RGVmaW5pdGlvbnMoKTsKLSAgICBXU0RMVXRpbC5leHBhbmREZWZpbml0aW9uKGRlZik7Ci0gICAgbS5wdXQoImRlZmluaXRpb24iLCBkZWYpOwotICAgIHRyYXZlcnNhbC50cmF2ZXJzZSgoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKSwgbSk7Ci0KLSAgICBpZiAoIWVycm9ycy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlcnJvcnMudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExNC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjU0OWQxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5GYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRXJyb3JMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLldTRExVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSAqIEJQMjExNC4KLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcgZWxlbWVudDwvY29udGV4dD4KLSAqIAotICogCi0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+RXZlcnkgd3NkbDpwYXJ0IGZyb20gZWFjaCB3c2RsOm1lc3NhZ2UgaW4gdGhlIGFzc29jaWF0ZWQgCi0gKiB3c2RsOnBvcnRUeXBlIGlzIHJlZmVyZW5jZWQgZWl0aGVyIGJ5IHRoZSBzb2FwYmluZDpib2R5LCBzb2FwYmluZDpoZWFkZXIsIAotICogc29hcGJpbmQ6ZmF1bHQsIG9yIHNvYXBiaW5kOmhlYWRlcmZhdWx0LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIxMTQgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMTE0KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwcml2YXRlIEVycm9yTGlzdCBlcnJvcnMgPSBuZXcgRXJyb3JMaXN0KCk7Ci0gIC8vIG1hcCBNZXNzYWdlIFFOYW1lIC0+IHNldChQYXJ0IG5hbWUpCi0gIHB1YmxpYyBNYXAgbWVzc2FnZXMgPSBuZXcgSGFzaE1hcCgpOwotCi0gIC8qIAotICAgKiBBZGQgdG8gTWFwIHBhcnRzIHdoaWNoIHVzZWQgYnkgbWVzc2FnZQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5NZXNzYWdlLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoTWVzc2FnZSBtLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAobSAhPSBudWxsCi0gICAgICAmJiAhbWVzc2FnZXMuY29udGFpbnNLZXkobSkKLSAgICAgICYmIG0uZ2V0T3JkZXJlZFBhcnRzKG51bGwpICE9IG51bGwpCi0gICAgewotICAgICAgU2V0IHMgPSBuZXcgSGFzaFNldCgpOwotICAgICAgSXRlcmF0b3IgaXQgPSBtLmdldE9yZGVyZWRQYXJ0cyhudWxsKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgICAgcy5hZGQoKChQYXJ0KSBpdC5uZXh0KCkpLmdldE5hbWUoKSk7Ci0KLSAgICAgIC8vbWVzc2FnZXMucHV0KG0uZ2V0UU5hbWUoKSwgcyk7Ci0gICAgICBpZiAocy5zaXplKCkgPiAwKQotICAgICAgewotICAgICAgICBtZXNzYWdlcy5wdXQobS5nZXRRTmFtZSgpLCBzKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKiAKLSAgICogUHV0IGluIGNvbnRleHQgc3R5bGUgb2Ygc29hcCBiaW5kaW5nCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZywgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBCaW5kaW5nIGJpbmRpbmcsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgc3R5bGUgPQotICAgICAgKGJpbmRpbmcuZ2V0U3R5bGUoKSA9PSBudWxsKQotICAgICAgICA/IFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9ET0MKLSAgICAgICAgOiBiaW5kaW5nLmdldFN0eWxlKCk7Ci0gICAgY3R4LmFkZFBhcmFtZXRlcigic3R5bGUiLCBzdHlsZSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUE9wZXJhdGlvbiBvcGVyYXRpb24sCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgc3R5bGUgPSBvcGVyYXRpb24uZ2V0U3R5bGUoKTsKLSAgICBpZiAoc3R5bGUgIT0gbnVsbCkKLSAgICAgIGN0eC5hZGRQYXJhbWV0ZXIoInN0eWxlIiwgc3R5bGUpOwotICB9Ci0KLSAgLyogCi0gICAqIFJlbW92ZSBwYXJ0cyBvZiBzb2FwIGJvZHkgZnJvbSBNYXAuICAKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoU09BUEJvZHkgYm9keSwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgLy8gU3RyaW5nIHN0eWxlID0gKFN0cmluZyljdHguZ2V0UGFyYW1ldGVyKCJzdHlsZSIpOwotCi0gICAgLy8gZmluZCBjb3JyZXNwb25kaW5nIG1lc3NhZ2UKLSAgICBPcGVyYXRpb24gb3AgPSBjdHguZ2V0QmluZGluZ09wZXJhdGlvbigpLmdldE9wZXJhdGlvbigpOwotICAgIC8vIGlmIHNvbWUgbGlua3MgYXJlIGJyb2tlbiwgY2FuY2VsIHByb2Nlc3NpbmcKLSAgICBpZiAob3AgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBNZXNzYWdlIG0gPSBudWxsOwotICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nSW5wdXQpCi0gICAgewotICAgICAgaWYgKG9wLmdldElucHV0KCkgPT0gbnVsbCkKLSAgICAgICAgcmV0dXJuOwotICAgICAgbSA9IG9wLmdldElucHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgIH0KLSAgICBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nT3V0cHV0KQotICAgIHsKLSAgICAgIGlmIChvcC5nZXRPdXRwdXQoKSA9PSBudWxsKQotICAgICAgICByZXR1cm47Ci0gICAgICBtID0gb3AuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgIH0KLSAgICBpZiAobSA9PSBudWxsKQotICAgICAgcmV0dXJuOwotCi0gICAgLy8gZ2V0IHBhcnRzCi0gICAgTGlzdCBwYXJ0cyA9IFdTRExVdGlsLmdldFBhcnRzKG9wLCBtLCBib2R5LCBudWxsKTsKLSAgICBpZiAocGFydHMgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLQotICAgIC8vIGl0ZXJhdGUgYWxsIHBhcnRzIGFuZCBjaGVjawotICAgIEl0ZXJhdG9yIGl0ID0gcGFydHMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgcmVtb3ZlUGFydChtLmdldFFOYW1lKCksICgoUGFydCkgaXQubmV4dCgpKS5nZXROYW1lKCkpOwotICB9Ci0KLSAgLyogCi0gICAqIFJlbW92ZSBwYXJ0cyBvZiBzb2FwIGhlYWRlciBmcm9tIE1hcC4KLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdCgKLSAgICBTT0FQSGVhZGVyIGhlYWRlciwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIC8vIHdlIHN1cHBvc2UgdGhhdCBpdCBwb3NzaWJsZSB0byBoYXZlIGxlZ2FsIG1lc3NhZ2UgYW5kIHBhcnQgd2l0aCBudWxsIG5hbWVzCi0gICAgLy8gQVRURU5USU9OCi0gICAgLy8gc2hvdWxkIHdlIGFkZCBtZXNzYWdlIHdoaWNoIGlzIHJlZmVyZW5jZWQgYnkgaGVhZGVyIG9yIGhlYWRlcmZhdWx0IHRvIG1lc3NhZ2VzID8KLSAgICByZW1vdmVQYXJ0KGhlYWRlci5nZXRNZXNzYWdlKCksIGhlYWRlci5nZXRQYXJ0KCkpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUEhlYWRlckZhdWx0IGZhdWx0LAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgLy8gd2Ugc3VwcG9zZSB0aGF0IGl0IHBvc3NpYmxlIHRvIGhhdmUgbGVnYWwgbWVzc2FnZSBhbmQgcGF0ciB3aXRoIG51bGwgbmFtZXMKLSAgICBRTmFtZSBtZXNzYWdlTmFtZSA9IGZhdWx0LmdldE1lc3NhZ2UoKTsKLSAgICBpZiAobWVzc2FnZU5hbWUgPT0gbnVsbCkKLSAgICAgIG1lc3NhZ2VOYW1lID0gY3R4LmdldFNPQVBIZWFkZXIoKS5nZXRNZXNzYWdlKCk7Ci0gICAgcmVtb3ZlUGFydChtZXNzYWdlTmFtZSwgZmF1bHQuZ2V0UGFydCgpKTsKLSAgfQotCi0gIC8qIAotICAgKiBSZW1vdmUgcGFydHMgb2Ygc29hcCBmYXVsdCBmcm9tIE1hcC4KLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdCwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBGYXVsdCBmYXVsdCwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgU3RyaW5nIGZhdWx0TmFtZSA9IGZhdWx0LmdldE5hbWUoKTsKLSAgICBpZiAoZmF1bHROYW1lID09IG51bGwpCi0gICAgICBmYXVsdE5hbWUgPSBjdHguZ2V0QmluZGluZ0ZhdWx0KCkuZ2V0TmFtZSgpOwotICAgIE9wZXJhdGlvbiBvcCA9IGN0eC5nZXRCaW5kaW5nT3BlcmF0aW9uKCkuZ2V0T3BlcmF0aW9uKCk7Ci0gICAgaWYgKG9wID09IG51bGwpCi0gICAgICByZXR1cm47Ci0KLSAgICAvLyB3ZSBzdXBwb3NlIHRoYXQgU09BUEZhdWx0LmdldE5hbWUoKSBjb3JyZXNwb25kcyB0byB0aGUgYWJzdHJhY3Qgb3BlcmF0aW9uJ3MgZmF1bHQgbmFtZSAgICAgICAgICAgCi0gICAgRmF1bHQgZiA9IG9wLmdldEZhdWx0KGZhdWx0TmFtZSk7Ci0KLSAgICAvLyBmYXVsdCBtZXNzYWdlIHNob3VsZCBoYXZlIDEgcGFydAotICAgIGlmIChmID09IG51bGwKLSAgICAgIHx8IGYuZ2V0TWVzc2FnZSgpID09IG51bGwKLSAgICAgIHx8IGYuZ2V0TWVzc2FnZSgpLmdldFBhcnRzKCkuc2l6ZSgpICE9IDEpCi0gICAgICByZXR1cm47Ci0KLSAgICBQYXJ0IHAgPSAoUGFydCkgZi5nZXRNZXNzYWdlKCkuZ2V0T3JkZXJlZFBhcnRzKG51bGwpLmdldCgwKTsKLSAgICByZW1vdmVQYXJ0KGYuZ2V0TWVzc2FnZSgpLmdldFFOYW1lKCksIHAuZ2V0TmFtZSgpKTsKLSAgfQotCi0gIC8qCi0gICAqIFJlbW92ZSBwYXJ0IGZyb20gTWFwLiAKLSAgKiBAcGFyYW0gbWVzc2FnZU5hbWUgLSBtZXNzYWdlCi0gICogQHBhcmFtIHBhcnROYW1lIC0gcGFydAotICAqLwotICAvLyByZWZhdG9yaW5nCi0gIHByaXZhdGUgdm9pZCByZW1vdmVQYXJ0KFFOYW1lIG1lc3NhZ2VOYW1lLCBTdHJpbmcgcGFydE5hbWUpCi0gIHsKLSAgICBTZXQgcGFydHMgPSAoU2V0KSBtZXNzYWdlcy5nZXQobWVzc2FnZU5hbWUpOwotICAgIGlmIChwYXJ0cyAhPSBudWxsKQotICAgIHsKLSAgICAgIHBhcnRzLnJlbW92ZShwYXJ0TmFtZSk7Ci0gICAgICBpZiAocGFydHMuc2l6ZSgpID09IDApCi0gICAgICAgIG1lc3NhZ2VzLnJlbW92ZShtZXNzYWdlTmFtZSk7Ci0gICAgfQotICB9Ci0KLSAgLyogCi0gICAqIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1dBUk5JTkc7Ci0KLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgLy9WaXNpdG9yQWRhcHRvci5hZGFwdCh0aGlzKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRNZXNzYWdlKHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBCaW5kaW5nKHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBCb2R5KHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBIZWFkZXIodHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0U09BUEhlYWRlckZhdWx0KHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBGYXVsdCh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQT3BlcmF0aW9uKHRydWUpOwotCi0gICAgQmluZGluZyBiID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKGIpOwotCi0gICAgaWYgKG1lc3NhZ2VzLnNpemUoKSA+IDApCi0gICAgICBlcnJvcnMuYWRkKGIuZ2V0UU5hbWUoKSk7Ci0KLSAgICBpZiAoIWVycm9ycy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgZWxzZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExNS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExNS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTk4Mjk4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVHlwZXNSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci0KLQotLyoqCi0gKiBCUDIxMTUuCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDptZXNzYWdlPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkFuICJlbGVtZW50IiBhdHRyaWJ1dGUgb24gYW55IHdzZGw6cGFydCBlbGVtZW50IHJlZmVycyB0byBhIGdsb2JhbCBlbGVtZW50IGRlY2xhcmF0aW9uLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIxMTUgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMTE1KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwcml2YXRlIEVycm9yTGlzdCBlcnJvcnMgPSBuZXcgRXJyb3JMaXN0KCk7Ci0gIHByaXZhdGUgVHlwZXNSZWdpc3RyeSByZWdpc3RyeSA9IG51bGw7Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5QYXJ0LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoUGFydCBwYXJ0LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAocGFydC5nZXRFbGVtZW50TmFtZSgpICE9IG51bGwKLSAgICAgICYmIHJlZ2lzdHJ5LmdldFR5cGUocGFydC5nZXRFbGVtZW50TmFtZSgpKSA9PSBudWxsKQotICAgIHsKLSAgICAgIGVycm9ycy5hZGQoY3R4LmdldE1lc3NhZ2UoKS5nZXRRTmFtZSgpKTsKLSAgICAgIGN0eC5jYW5jZWxNZXNzYWdlUHJvY2Vzc2luZygpOwotICAgIH0KLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLQotICAgIHJlZ2lzdHJ5ID0KLSAgICAgIG5ldyBUeXBlc1JlZ2lzdHJ5KAotICAgICAgICBlbnRyeUNvbnRleHQuZ2V0V1NETERvY3VtZW50KCkuZ2V0RGVmaW5pdGlvbnMoKSwKLSAgICAgICAgdmFsaWRhdG9yKTsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICAvL1Zpc2l0b3JBZGFwdG9yLmFkYXB0KHRoaXMpOwotICAgIHRyYXZlcnNhbC5zZXRWaXNpdG9yKHRoaXMpOwotICAgIHRyYXZlcnNhbC52aXNpdFBhcnQodHJ1ZSk7Ci0KLSAgICB0cmF2ZXJzYWwuaWdub3JlUmVmZXJlbmNlcygpOwotICAgIHRyYXZlcnNhbC5pZ25vcmVJbXBvcnQoKTsKLSAgICB0cmF2ZXJzYWwudHJhdmVyc2UoKE1lc3NhZ2UpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCkpOwotCi0gICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgZWxzZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExNi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExNi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTlmZjA5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTYuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0OwotCi0KLS8qKgotICogQlAyMTE2LgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6bWVzc2FnZSBlbGVtZW50PC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSB3c2RsOm1lc3NhZ2UgZWxlbWVudCBkb2VzIG5vdCBjb250YWluIHBhcnQgZWxlbWVudHMgdGhhdCB1c2UgYm90aCAidHlwZSIgYW5kICJlbGVtZW50IiBhdHRyaWJ1dGVzLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIxMTYgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotCi0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIxMTYoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuUGFydCwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoUGFydCBwYXJ0LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAocGFydC5nZXRFbGVtZW50TmFtZSgpICE9IG51bGwgJiYgcGFydC5nZXRUeXBlTmFtZSgpICE9IG51bGwpCi0gICAgewotICAgICAgZXJyb3JzLmFkZChjdHguZ2V0TWVzc2FnZSgpLmdldFFOYW1lKCkpOwotICAgICAgY3R4LmNhbmNlbE1lc3NhZ2VQcm9jZXNzaW5nKCk7Ci0gICAgfQotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICAvL1Zpc2l0b3JBZGFwdG9yLmFkYXB0KHRoaXMpOwotICAgIHRyYXZlcnNhbC5zZXRWaXNpdG9yKHRoaXMpOwotICAgIHRyYXZlcnNhbC52aXNpdFBhcnQodHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlSW1wb3J0KCk7Ci0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKChNZXNzYWdlKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLQotICAgIGlmICghZXJyb3JzLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGVycm9ycy50b1N0cmluZygpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTE3LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTE3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3MDlmYTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExNy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXI7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRXJyb3JMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSAqIEJQMjExNy4KLSAgICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6YmluZGluZyBlbGVtZW50LCByZWZlcnJlZCB0byBieSBhbiBycGMtbGl0ZXJhbCBzb2FwOmJpbmRpbmc8L2NvbnRleHQ+Ci0gICAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgcnBjLWxpdGVyYWwgYmluZGluZyBkb2VzIG5vdCBoYXZlIGEgbmFtZXNwYWNlIGF0dHJpYnV0ZSBzcGVjaWZpZWQgb24gYSBjb250YWluZWQgc29hcGJpbmQ6aGVhZGVyLCBzb2FwYmluZDpoZWFkZXJmYXVsdCwgYW5kIHNvYXBiaW5kOmZhdWx0IGVsZW1lbnQuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjExNyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIxMTcoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBycGNMaXRlcmFsRm91bmQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JzID0gbmV3IEVycm9yTGlzdCgpOwotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUEJpbmRpbmcgYmluZGluZywKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIFN0cmluZyBzdHlsZSA9Ci0gICAgICAoYmluZGluZy5nZXRTdHlsZSgpID09IG51bGwpCi0gICAgICAgID8gV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQwotICAgICAgICA6IGJpbmRpbmcuZ2V0U3R5bGUoKTsKLSAgICBjdHguYWRkUGFyYW1ldGVyKCJzdHlsZSIsIHN0eWxlKTsKLSAgfQotCi0gIC8qIAotICAgKiBJZiB1c2Ugb2Ygc29hcCBib2R5IGlzICJsaXRlcmFsIiBhbmQgaWYgYXQgbGVhc3Qgb25lIHBhcnQgaXMgZGVmaW5lIHVzaW5nICJlbGVtZW50IiBhdHRyaWJ1dGUgaXQgY3JlYXRlcyBmYWx1cmUgcmVwb3J0LiAgICAKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoU09BUEJvZHkgYm9keSwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgLy8gYXNzZXJ0IHVzZSA9PSAibGl0ZXJhbCIKLSAgICBpZiAoV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CT0RZX1VTRV9MSVQuZXF1YWxzKGJvZHkuZ2V0VXNlKCkpCi0gICAgICAmJiAoKFN0cmluZykgY3R4LmdldFBhcmFtZXRlcigic3R5bGUiKSkuZXF1YWxzKAotICAgICAgICBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfUlBDKSkKLSAgICB7Ci0gICAgICBycGNMaXRlcmFsRm91bmQgPSB0cnVlOwotICAgIH0KLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24sIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdCgKLSAgICBTT0FQT3BlcmF0aW9uIG9wZXJhdGlvbiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIFN0cmluZyBzdHlsZSA9IG9wZXJhdGlvbi5nZXRTdHlsZSgpOwotICAgIGlmIChzdHlsZSA9PSBudWxsKQotICAgICAgc3R5bGUgPSAoU3RyaW5nKSBjdHguZ2V0UGFyYW1ldGVyKCJzdHlsZSIpOwotCi0gICAgLy8gYXNzZXJ0IHN0eWxlICE9IG51bGwKLSAgICBpZiAoIVdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMuZXF1YWxzKHN0eWxlKSkKLSAgICAgIGN0eC5jYW5jZWxCaW5kaW5nT3BlcmF0aW9uUHJvY2Vzc2luZygpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlciwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBIZWFkZXIgaGVhZGVyLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY2hlY2soaGVhZGVyLmdldFVzZSgpLCBoZWFkZXIuZ2V0TmFtZXNwYWNlVVJJKCksIGN0eCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdCgKLSAgICBTT0FQSGVhZGVyRmF1bHQgZmF1bHQsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjaGVjayhmYXVsdC5nZXRVc2UoKSwgZmF1bHQuZ2V0TmFtZXNwYWNlVVJJKCksIGN0eCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQRmF1bHQgZmF1bHQsIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGNoZWNrKGZhdWx0LmdldFVzZSgpLCBmYXVsdC5nZXROYW1lc3BhY2VVUkkoKSwgY3R4KTsKLSAgfQotCi0gIC8vIHJlZmFjdG9yaW5nCi0gIC8vIGNoZWNrIExJVEVSQUwgdXNlIGFuZCAhPSBuYW1lc3BhY2UKLSAgLy8gY2FuY2VsaW5nIGZ1cnRoZXIgcHJvY2Vzc2luZwotICBwcml2YXRlIHZvaWQgY2hlY2soU3RyaW5nIHVzZSwgU3RyaW5nIG5hbWVzcGFjZSwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgaWYgKFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQk9EWV9VU0VfTElULmVxdWFscyh1c2UpCi0gICAgICAmJiBuYW1lc3BhY2UgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBlcnJvcnMuYWRkKGN0eC5nZXRCaW5kaW5nKCkuZ2V0UU5hbWUoKSk7Ci0gICAgICAvLyAgICAgICAgICAgICAgc3VwcHJlc3NlcyBzdWJzZXF1ZW50IHByb2Nlc3NpbmcsIGJlY2F1c2UgZXJyb3IgbGlzdCBjb250YWlucyBvbmx5IGZhaWxlZCBiaW5kaW5nCi0gICAgICBjdHguY2FuY2VsUHJvY2Vzc2luZygpOwotICAgIH0KLSAgfQotCi0gIC8qIFZhbGlkYXRlcyB0aGUgdGVzdCBhc3NlcnRpb24uCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICAvL1Zpc2l0b3JBZGFwdG9yLmFkYXB0KHRoaXMpOwotICAgIHRyYXZlcnNhbC5zZXRWaXNpdG9yKHRoaXMpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBCaW5kaW5nKHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBCb2R5KHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBIZWFkZXIodHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0U09BUEhlYWRlckZhdWx0KHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFNPQVBGYXVsdCh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQT3BlcmF0aW9uKHRydWUpOwotCi0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlSW1wb3J0KCk7Ci0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLQotICAgIGlmICghZXJyb3JzLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGVycm9ycy50b1N0cmluZygpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIGVsc2UgaWYgKCFycGNMaXRlcmFsRm91bmQpCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotCi0gICAgZWxzZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExOC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjExOC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTRhNzMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3NWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkVycm9yTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci0KLQotLyoqCi0gKiBCUDIxMTguCi0gICAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcgZWxlbWVudDwvY29udGV4dD4KLSAgICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBsaXN0IChvciBzZXQpIG9mIHdzZGw6b3BlcmF0aW9uIGVsZW1lbnRzIGZvciB0aGUgY29udGFpbmVkIHdzZGw6YmluZGluZyBpcyB0aGUgc2FtZSBhcyB0aGUgbGlzdCBvZiB3c2RsOm9wZXJhdGlvbnMgZm9yIHRoZSByZWZlcnJlZCB3c2RsOnBvcnRUeXBlLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIxMTggZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotCi0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIxMTgoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9ycyA9IG5ldyBFcnJvckxpc3QoKTsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLk9wZXJhdGlvbiwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KE9wZXJhdGlvbiBvcCwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgLy8gYXNzZXJ0IHBhcmVudCBpbnN0YW5jZW9mIEJpbmRpbmdPcGVyYXRpb24KLSAgICBpZiAob3AgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBlcnJvcnMuYWRkKGN0eC5nZXRCaW5kaW5nKCkuZ2V0UU5hbWUoKSk7Ci0gICAgICAvLwkJCQlzdXBwcmVzc2VzIHN1YnNlcXVlbnQgcHJvY2Vzc2luZywgYmVjYXVzZSBlcnJvciBsaXN0IGNvbnRhaW5zIG9ubHkgZmFpbGVkIGJpbmRpbmcKLSAgICAgIGN0eC5jYW5jZWxCaW5kaW5nUHJvY2Vzc2luZygpOwotICAgICAgY3R4LmNhbmNlbEJpbmRpbmdPcGVyYXRpb25Qcm9jZXNzaW5nKCk7Ci0gICAgfQotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotCi0gICAgQmluZGluZyBiID0gKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0gICAgLy8gaWYgb3BlcmF0aW9ucyBjb3VudCBpbiBwb3J0IHR5cGUgYW5kIGJpbmRpbmcgaXMgZGlmZmVyIC0+IGVycm9yCi0gICAgaWYgKGIuZ2V0UG9ydFR5cGUoKSA9PSBudWxsCi0gICAgICB8fCBiLmdldFBvcnRUeXBlKCkuZ2V0T3BlcmF0aW9ucygpLnNpemUoKQotICAgICAgICAhPSBiLmdldEJpbmRpbmdPcGVyYXRpb25zKCkuc2l6ZSgpKQotICAgICAgZXJyb3JzLmFkZChiLmdldFFOYW1lKCkpOwotICAgIGVsc2UKLSAgICB7Ci0gICAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgICAvL1Zpc2l0b3JBZGFwdG9yLmFkYXB0KHRoaXMpOwotICAgICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgICB0cmF2ZXJzYWwudmlzaXRPcGVyYXRpb24odHJ1ZSk7Ci0gICAgICB0cmF2ZXJzYWwudHJhdmVyc2UoYik7Ci0gICAgfQotCi0gICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTkuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMTkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RlMWE4My4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTE5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRXJyb3JMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSAqIEJQMjExOS4KLSAgICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6YmluZGluZywgd2hpY2ggaXMgb2YgdHlwZSBkb2N1bWVudC1saXRlcmFsPC9jb250ZXh0PgotICAgKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+SWYgaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgcGFydHMgYXR0cmlidXRlIG9uIGEgc29hcGJpbmQ6Ym9keSBlbGVtZW50LCB0aGUgY29ycmVzcG9uZGluZyBhYnN0cmFjdCB3c2RsOm1lc3NhZ2UgZGVmaW5lcyB6ZXJvIG9yIG9uZSB3c2RsOnBhcnQuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjExOSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIxMTkoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBkb2NMaXRlcmFsRm91bmQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JzID0gbmV3IEVycm9yTGlzdCgpOwotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUEJpbmRpbmcgYmluZGluZywKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIFN0cmluZyBzdHlsZSA9Ci0gICAgICAoYmluZGluZy5nZXRTdHlsZSgpID09IG51bGwpCi0gICAgICAgID8gV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQwotICAgICAgICA6IGJpbmRpbmcuZ2V0U3R5bGUoKTsKLSAgICBjdHguYWRkUGFyYW1ldGVyKCJzdHlsZSIsIHN0eWxlKTsKLSAgfQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUE9wZXJhdGlvbiBvcGVyYXRpb24sCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgc3R5bGUgPSBvcGVyYXRpb24uZ2V0U3R5bGUoKTsKLSAgICBpZiAoc3R5bGUgPT0gbnVsbCkKLSAgICAgIHN0eWxlID0gKFN0cmluZykgY3R4LmdldFBhcmFtZXRlcigic3R5bGUiKTsKLSAgICAvLyBhc3NlcnQgc3R5bGUgIT0gbnVsbAotICAgIGlmICghV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQy5lcXVhbHMoc3R5bGUpKQotICAgICAgY3R4LmNhbmNlbEJpbmRpbmdPcGVyYXRpb25Qcm9jZXNzaW5nKCk7Ci0gIH0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHksIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQQm9keSBib2R5LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgdXNlID0KLSAgICAgIChib2R5LmdldFVzZSgpID09IG51bGwpCi0gICAgICAgID8gV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CT0RZX1VTRV9MSVQKLSAgICAgICAgOiBib2R5LmdldFVzZSgpOwotCi0gICAgLy8gYXNzZXJ0IHN0eWxlID09ICJkb2N1bWVudCIKLSAgICBpZiAoV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CT0RZX1VTRV9MSVQuZXF1YWxzKHVzZSkpCi0gICAgewotICAgICAgZG9jTGl0ZXJhbEZvdW5kID0gdHJ1ZTsKLSAgICAgIGlmIChib2R5LmdldFBhcnRzKCkgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgT3BlcmF0aW9uIG9wID0gY3R4LmdldEJpbmRpbmdPcGVyYXRpb24oKS5nZXRPcGVyYXRpb24oKTsKLSAgICAgICAgaWYgKG9wID09IG51bGwpCi0gICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIE1hcCBwYXJ0cyA9IG51bGw7Ci0gICAgICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nSW5wdXQpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAob3AuZ2V0SW5wdXQoKSA9PSBudWxsIHx8IG9wLmdldElucHV0KCkuZ2V0TWVzc2FnZSgpID09IG51bGwpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgcGFydHMgPSBvcC5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKS5nZXRQYXJ0cygpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEJpbmRpbmdPdXRwdXQpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAob3AuZ2V0T3V0cHV0KCkgPT0gbnVsbCB8fCBvcC5nZXRPdXRwdXQoKS5nZXRNZXNzYWdlKCkgPT0gbnVsbCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBwYXJ0cyA9IG9wLmdldE91dHB1dCgpLmdldE1lc3NhZ2UoKS5nZXRQYXJ0cygpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBhcnRzICE9IG51bGwgJiYgcGFydHMuc2l6ZSgpID4gMSkKLSAgICAgICAgewotICAgICAgICAgIGVycm9ycy5hZGQoY3R4LmdldEJpbmRpbmcoKS5nZXRRTmFtZSgpKTsKLSAgICAgICAgICAvLwkJCQkJCXN1cHByZXNzZXMgc3Vic2VxdWVudCBwcm9jZXNzaW5nLCBiZWNhdXNlIGVycm9yIGxpc3QgY29udGFpbnMgb25seSBmYWlsZWQgYmluZGluZwotICAgICAgICAgIGN0eC5jYW5jZWxCaW5kaW5nUHJvY2Vzc2luZygpOwotICAgICAgICAgIGN0eC5jYW5jZWxCaW5kaW5nT3BlcmF0aW9uUHJvY2Vzc2luZygpOwotICAgICAgICAgIGN0eC5jYW5jZWxCaW5kaW5nSW5wdXRQcm9jZXNzaW5nKCk7Ci0gICAgICAgICAgY3R4LmNhbmNlbEJpbmRpbmdPdXRwdXRQcm9jZXNzaW5nKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgLy9WaXNpdG9yQWRhcHRvci5hZGFwdCh0aGlzKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQmluZGluZyh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQm9keSh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQT3BlcmF0aW9uKHRydWUpOwotICAgIHRyYXZlcnNhbC5pZ25vcmVJbXBvcnQoKTsKLSAgICB0cmF2ZXJzYWwudHJhdmVyc2UoKEJpbmRpbmcpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCkpOwotCi0gICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgZWxzZSBpZiAoIWRvY0xpdGVyYWxGb3VuZCkKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0KLSAgICBlbHNlCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTIwLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTIwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MjcyODMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjEyMC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRXJyb3JMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLldTRExVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSAqIEJQMjEyMC4KLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmc8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+RWFjaCBvcGVyYXRpb24gcmVmZXJlbmNlZCBieSB0aGUgYmluZGluZyByZXN1bHRzIGluIGEgdW5pcXVlIHdpcmUgc2lnbmF0dXJlLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIxMjAgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMTIwKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwcml2YXRlIEVycm9yTGlzdCBlcnJvcnMgPSBuZXcgRXJyb3JMaXN0KCk7Ci0gIHByaXZhdGUgU2V0IHdhcmVzID0gbmV3IEhhc2hTZXQoKTsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZywgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBCaW5kaW5nIGJpbmRpbmcsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgc3R5bGUgPQotICAgICAgKGJpbmRpbmcuZ2V0U3R5bGUoKSA9PSBudWxsKQotICAgICAgICA/IFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9ET0MKLSAgICAgICAgOiBiaW5kaW5nLmdldFN0eWxlKCk7Ci0gICAgY3R4LmFkZFBhcmFtZXRlcigic3R5bGUiLCBzdHlsZSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUE9wZXJhdGlvbiBvcGVyYXRpb24sCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgc3R5bGUgPSBvcGVyYXRpb24uZ2V0U3R5bGUoKTsKLSAgICBpZiAoc3R5bGUgIT0gbnVsbCkKLSAgICAgIGN0eC5hZGRQYXJhbWV0ZXIoInN0eWxlIiwgc3R5bGUpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHksIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQQm9keSBib2R5LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBMaXN0IHNpZ25hdHVyZSA9IG5ldyBMaW5rZWRMaXN0KCk7Ci0KLSAgICBTdHJpbmcgc3R5bGUgPSAoU3RyaW5nKSBjdHguZ2V0UGFyYW1ldGVyKCJzdHlsZSIpOwotCi0gICAgLy8gZmluZCBjb3JyZXNwb25kaW5nIG1lc3NhZ2UKLSAgICBPcGVyYXRpb24gb3AgPSBjdHguZ2V0QmluZGluZ09wZXJhdGlvbigpLmdldE9wZXJhdGlvbigpOwotCi0gICAgLy8gaWYgc29tZSBsaW5rcyBhcmUgYnJva2VuLCBjYW5jZWwgcHJvY2Vzc2luZwotICAgIGlmIChvcCA9PSBudWxsCi0gICAgICB8fCBvcC5nZXRJbnB1dCgpID09IG51bGwKLSAgICAgIHx8IG9wLmdldElucHV0KCkuZ2V0TWVzc2FnZSgpID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgTWVzc2FnZSBtID0gb3AuZ2V0SW5wdXQoKS5nZXRNZXNzYWdlKCk7Ci0KLSAgICBMaXN0IHBhcnRzID0gV1NETFV0aWwuZ2V0UGFydHMob3AsIG0sIGJvZHksIHN0eWxlKTsKLSAgICBpZiAocGFydHMgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICAvLyAhISBBVFRFTlRJT04KLSAgICAvLyBtYXkgYmUgcmVxdWlyZWQgdG8gYWRkIHR5cGVzIGluc3RlYWQgb2YgcGFydCBpbnRvIHNpZ25hdHVyZSA/Ci0KLSAgICAvLyBjcmVhdGUgc2lnbmF0dXJlCi0gICAgc2lnbmF0dXJlLmFkZEFsbChwYXJ0cyk7Ci0KLSAgICAvLyBzdXBwb3NlIHRoYXQgd2lyZSBzaWduYXR1cmUgZm9yCi0gICAgLy8gLSBycGMgc3R5bGUgPSBvcGVyYXRpb24gbmFtZSArIHBhcnRzJyBxbmFtZQotICAgIC8vIC0gZG9jdW1lbnQgc3R5bGUgPSBwYXJ0cycgcW5hbWUKLSAgICBpZiAoV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQy5lcXVhbHMoc3R5bGUpKQotICAgICAgc2lnbmF0dXJlLmFkZCgwLCBvcC5nZXROYW1lKCkpOwotCi0gICAgaWYgKHNhbWVTaWduYXR1cmUod2FyZXMsIHNpZ25hdHVyZSkpCi0gICAgICBlcnJvcnMuYWRkKG9wLmdldE5hbWUoKSk7Ci0gICAgZWxzZQotICAgICAgd2FyZXMuYWRkKHNpZ25hdHVyZSk7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2sgaWYgdGhlIHNpZ25hdHVyZSBpcyBpbiB0aGUgc2V0IG1hdGNoLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIHNhbWVTaWduYXR1cmUoU2V0IHNpZ25hdHVyZVNldCwgTGlzdCBzaWduYXR1cmUpCi0gIHsKLSAgICBib29sZWFuIHNhbWUgPSBmYWxzZTsKLQotICAgIC8vIEdldCBpdGVyYXRvciBmb3Igc2V0Ci0gICAgSXRlcmF0b3Igc2V0ID0gc2lnbmF0dXJlU2V0Lml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKHNldC5oYXNOZXh0KCkgJiYgIXNhbWUpCi0gICAgewotICAgICAgLy8gR2V0IG5leHQgc2lnbmF0dXJlIGZyb20gdGhlIHNldAotICAgICAgTGlzdCBuZXh0U2lnbmF0dXJlID0gKExpc3QpIHNldC5uZXh0KCk7Ci0KLSAgICAgIC8vIE9ubHkgY29udGludWUgaWYgdGhlIHNpZ25hdHVyZXMgYXJlIHRoZSBzYW1lIHNpemUKLSAgICAgIGlmIChuZXh0U2lnbmF0dXJlLnNpemUoKSA9PSBzaWduYXR1cmUuc2l6ZSgpKQotICAgICAgewotICAgICAgICBJdGVyYXRvciBpdGVyYXRvcjEgPSBuZXh0U2lnbmF0dXJlLml0ZXJhdG9yKCk7Ci0gICAgICAgIEl0ZXJhdG9yIGl0ZXJhdG9yMiA9IHNpZ25hdHVyZS5pdGVyYXRvcigpOwotCi0gICAgICAgIC8vIEFzc3VtZSBzYW1lIHVudGlsIGEgZGlmZmVyZW5jZSBpcyBmb3VuZAotICAgICAgICBzYW1lID0gdHJ1ZTsKLQotICAgICAgICAvLyBQcm9jZXNzIGVhY2ggbGlzdCB1bnRpbCBhIGRpZmZlcmVuY2UgaXMgZm91bmQKLSAgICAgICAgd2hpbGUgKGl0ZXJhdG9yMS5oYXNOZXh0KCkgJiYgaXRlcmF0b3IyLmhhc05leHQoKSAmJiBzYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gR2V0IHRoZSBuZXh0IGVsZW1lbnRzCi0gICAgICAgICAgT2JqZWN0IGVsZW1lbnQxID0gaXRlcmF0b3IxLm5leHQoKTsKLSAgICAgICAgICBPYmplY3QgZWxlbWVudDIgPSBpdGVyYXRvcjIubmV4dCgpOwotCi0gICAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgYSBzdHJpbmcsIHRoZW4gaWYgZXF1YWwgY2hlY2sgcGFydHMKLSAgICAgICAgICBpZiAoKGVsZW1lbnQxIGluc3RhbmNlb2YgU3RyaW5nKQotICAgICAgICAgICAgJiYgKGVsZW1lbnQyIGluc3RhbmNlb2YgU3RyaW5nKQotICAgICAgICAgICAgJiYgKCgoU3RyaW5nKSBlbGVtZW50MSkuZXF1YWxzKChTdHJpbmcpIGVsZW1lbnQyKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgc2FtZSA9IHRydWU7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnRzIGFyZSBwYXJ0cywgdGhlbiBjaGVjayBpZiB0aGV5IGFyZSBlcXVhbAotICAgICAgICAgIGVsc2UgaWYgKChlbGVtZW50MSBpbnN0YW5jZW9mIFBhcnQpICYmIChlbGVtZW50MiBpbnN0YW5jZW9mIFBhcnQpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHNhbWUgPSBzYW1lUGFydHMoKFBhcnQpIGVsZW1lbnQxLCAoUGFydCkgZWxlbWVudDIpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBzYW1lID0gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHNhbWU7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2sgaWYgdHdvIHBhcnRzIGFyZSB0aGUgc2FtZS4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBzYW1lUGFydHMoUGFydCBwYXJ0MSwgUGFydCBwYXJ0MikKLSAgewotICAgIGJvb2xlYW4gc2FtZSA9IGZhbHNlOwotCi0gICAgLy8gSWYgdGhlIHBhcnQgaGFzIGFuIGVsZW1lbnQgdGhlbiBzZWUgaWYgdGhleSBhcmUgdGhlIHNhbWUKLSAgICBpZiAocGFydDEuZ2V0RWxlbWVudE5hbWUoKSAhPSBudWxsCi0gICAgICAmJiBwYXJ0Mi5nZXRFbGVtZW50TmFtZSgpICE9IG51bGwKLSAgICAgICYmIHBhcnQxLmdldEVsZW1lbnROYW1lKCkuZXF1YWxzKHBhcnQyLmdldEVsZW1lbnROYW1lKCkpKQotICAgIHsKLSAgICAgIHNhbWUgPSB0cnVlOwotICAgIH0KLQotICAgIC8vIElmIHRoZSBwYXJ0IGhhcyBhbiB0eXBlIHRoZW4gc2VlIGlmIHRoZXkgYXJlIHRoZSBzYW1lCi0gICAgZWxzZSBpZiAoCi0gICAgICBwYXJ0MS5nZXRUeXBlTmFtZSgpICE9IG51bGwKLSAgICAgICAgJiYgcGFydDIuZ2V0VHlwZU5hbWUoKSAhPSBudWxsCi0gICAgICAgICYmIHBhcnQxLmdldFR5cGVOYW1lKCkuZXF1YWxzKHBhcnQyLmdldFR5cGVOYW1lKCkpKQotICAgIHsKLSAgICAgIHNhbWUgPSB0cnVlOwotICAgIH0KLQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBzYW1lID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNhbWU7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgLy9WaXNpdG9yQWRhcHRvci5hZGFwdCh0aGlzKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQmluZGluZyh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQm9keSh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQT3BlcmF0aW9uKHRydWUpOwotICAgIHRyYXZlcnNhbC5pZ25vcmVCaW5kaW5nT3V0cHV0KCk7Ci0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLQotICAgIC8vICEhIEFUVEVOVElPTgotICAgIC8vIEFuYWx5emUgc29hcGJpbmQ6Ym9keTpuYW1lc3BhY2UgYW5kIHNlcnZpY2UgdGFyZ2V0TmFtZXNwYWNlICAgICAgICAgICAgCi0gICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JzLnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMjEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMjEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFkNTk0YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTIxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3NWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkVycm9yTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5UeXBlc1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLldTRExVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSAqIEJQMjEyMS4KLSAqIENvbnRleHQ6Ci0gKiBGb3IgIGEgd3NkbDpiaW5kaW5nIGVsZW1lbnQgd2hpY2ggaXMgcmVmZXJlbmNlZCBkaXJlY3RseSBvciBhc3NvY2lhdGVkCi0gKiB3aXRoIGEgc3BlY2lmaWVkIHdzZGw6cG9ydC4KLSAqIAotICogQXNzZXJ0aW9uIERlc2NyaXB0aW9uOgotICogRWFjaCAgb3BlcmF0aW9uIHJlZmVyZW5jZWQgYnkgYSBkb2N1bWVudC1saXRlcmFsIGJpbmRpbmcgbXVzdCBoYXZlIGEKLSAqIG1lc3NhZ2UgZGVmaW5pdGlvbiB3aGVyZSB0aGUgd3NkbDpwYXJ0IHJlZmVyZW5jZXMgYSBnbG9iYWwgZWxlbWVudAotICogZGVmaW5pdGlvbi4KLSAqLwotcHVibGljIGNsYXNzIEJQMjEyMSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnCi17Ci0KLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjEyMShXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JzID0gbmV3IEVycm9yTGlzdCgpOwotICBwcml2YXRlIFR5cGVzUmVnaXN0cnkgcmVnaXN0cnkgPSBudWxsOwotCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIFNPQVBCaW5kaW5nIGJpbmRpbmcsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgc3R5bGUgPQotICAgICAgKGJpbmRpbmcuZ2V0U3R5bGUoKSA9PSBudWxsKQotICAgICAgICA/IFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9ET0MKLSAgICAgICAgOiBiaW5kaW5nLmdldFN0eWxlKCk7Ci0gICAgY3R4LmFkZFBhcmFtZXRlcigic3R5bGUiLCBzdHlsZSk7Ci0gIH0KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUE9wZXJhdGlvbiBvcGVyYXRpb24sCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBTdHJpbmcgc3R5bGUgPSBvcGVyYXRpb24uZ2V0U3R5bGUoKTsKLSAgICBpZiAoc3R5bGUgPT0gbnVsbCkKLSAgICAgIHN0eWxlID0gKFN0cmluZykgY3R4LmdldFBhcmFtZXRlcigic3R5bGUiKTsKLSAgICAvLyBhc3NlcnQgc3R5bGUgIT0gbnVsbAotICAgIGlmICghV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQy5lcXVhbHMoc3R5bGUpKQotICAgICAgY3R4LmNhbmNlbEJpbmRpbmdPcGVyYXRpb25Qcm9jZXNzaW5nKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQQm9keSBib2R5LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICAvLyAhISBBVFRFTlRJT04KLSAgICAvLyB3ZSBzdXBwb3NlIHRoYXQgc29hcGJvZHkgY2hpbGQgZWxlbWVudHMgaXMgaXRzIHBhcnRzLgotICAgIC8vIGFzc2VydCBzdHlsZSA9PSAiZG9jdW1lbnQiCi0gICAgaWYgKFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQk9EWV9VU0VfTElULmVxdWFscyhib2R5LmdldFVzZSgpKSkKLSAgICB7Ci0gICAgICAvLyBmaW5kIGNvcnJlc3BvbmRpbmcgbWVzc2FnZQotICAgICAgT3BlcmF0aW9uIG9wID0gY3R4LmdldEJpbmRpbmdPcGVyYXRpb24oKS5nZXRPcGVyYXRpb24oKTsKLSAgICAgIC8vIGlmIHNvbWUgbGlua3MgYXJlIGJyb2tlbiwgY2FuY2VsIHByb2Nlc3NpbmcKLSAgICAgIGlmIChvcCA9PSBudWxsCi0gICAgICAgIHx8IChwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nSW5wdXQgJiYgb3AuZ2V0SW5wdXQoKSA9PSBudWxsKQotICAgICAgICB8fCAocGFyZW50IGluc3RhbmNlb2YgQmluZGluZ091dHB1dCAmJiBvcC5nZXRPdXRwdXQoKSA9PSBudWxsKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgICBNZXNzYWdlIG0gPQotICAgICAgICAocGFyZW50IGluc3RhbmNlb2YgQmluZGluZ0lucHV0KQotICAgICAgICAgID8gb3AuZ2V0SW5wdXQoKS5nZXRNZXNzYWdlKCkKLSAgICAgICAgICA6IG9wLmdldE91dHB1dCgpLmdldE1lc3NhZ2UoKTsKLSAgICAgIGlmIChtID09IG51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgICAgLy8gZmluZCBwYXJ0cyB3aGljaCBhcmUgaW52b2x2ZWQgaW4gdGhlIGdpdmVuIGJvZHkKLSAgICAgIExpc3QgcGFydHMgPQotICAgICAgICBXU0RMVXRpbC5nZXRQYXJ0cygKLSAgICAgICAgICBvcCwKLSAgICAgICAgICBtLAotICAgICAgICAgIGJvZHksCi0gICAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQyk7Ci0gICAgICBpZiAocGFydHMgPT0gbnVsbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgICAvLyBjaGVjayBwYXJ0cwotICAgICAgSXRlcmF0b3IgaXQgPSBwYXJ0cy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgUGFydCBwID0gKFBhcnQpIGl0Lm5leHQoKTsKLSAgICAgICAgLy8gY2hlY2sgd2hldGhlciBwIGRlY2xhcmVkIGFzIGdsb2JhbCBlbGVtZW50Ci0gICAgICAgIGlmIChwLmdldEVsZW1lbnROYW1lKCkgPT0gbnVsbAotICAgICAgICAgIHx8IHJlZ2lzdHJ5LmdldFR5cGUocC5nZXRFbGVtZW50TmFtZSgpKSA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgZXJyb3JzLmFkZChvcC5nZXROYW1lKCkpOwotICAgICAgICAgIC8vCQkJCQkJc3VwcHJlc3NlcyBzdWJzZXF1ZW50IHByb2Nlc3NpbmcsIGJlY2F1c2UgZXJyb3IgbGlzdCBjb250YWlucyBvbmx5IGZhaWxlZCBvcGVyYXRpb24KLSAgICAgICAgICBjdHguY2FuY2VsQmluZGluZ09wZXJhdGlvblByb2Nlc3NpbmcoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICByZWdpc3RyeSA9Ci0gICAgICBuZXcgVHlwZXNSZWdpc3RyeSgKLSAgICAgICAgZW50cnlDb250ZXh0LmdldFdTRExEb2N1bWVudCgpLmdldERlZmluaXRpb25zKCksCi0gICAgICAgIHZhbGlkYXRvcik7Ci0KLSAgICAvLyBjb2xsZWN0IGFsbCB0eXBlcyBmcm9tIG1lc3NhZ2VzIHRvIGNoZWNrZWRQYXJ0cyBtYXAKLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgLy9WaXNpdG9yQWRhcHRvci5hZGFwdCh0aGlzKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQmluZGluZyh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQm9keSh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQT3BlcmF0aW9uKHRydWUpOwotICAgIHRyYXZlcnNhbC5pZ25vcmVSZWZlcmVuY2VzKCk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZUltcG9ydCgpOwotICAgIHRyYXZlcnNhbC50cmF2ZXJzZSgoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKSk7Ci0KLSAgICBpZiAoIWVycm9ycy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlcnJvcnMudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjEyMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjEyMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTY2MDU1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMjIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci0KLQotLyoqCi0gKiBCUDIxMjIuIAotICogICAgPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6dHlwZXMgZWxlbWVudDwvY29udGV4dD4KLSAqICAgIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgZGF0YSB0eXBlIGRlZmluaXRpb24gaWYgYW55IHdpdGhpbiB0aGUgd3NkbDp0eXBlcyBlbGVtZW50IGlzIGFuIFhNTCBzY2hlbWEgZGVmaW5pdGlvbiBkZWZpbmVkIGluIHRoZSBYTUwgU2NoZW1hIDEuMCBSZWNvbW1lbmRhdGlvbiB3aXRoIHRoZSBuYW1lc3BhY2UgVVJJICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjEyMiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjEyMihXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShUZXN0QXNzZXJ0aW9uLCBFbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgIEVycm9yTGlzdCBlcnJvckxpc3QgPSBuZXcgRXJyb3JMaXN0KCk7Ci0KLSAgICAvLyBHZXQgdGhlIHR5cGVzIGZyb20gdGhlIGVudHJ5IGNvbnRleHQKLSAgICBUeXBlcyB0eXBlcyA9IChUeXBlcykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIGlmICh0eXBlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW1lbnQ7Ci0gICAgICBMaXN0IGV4dEVsZW1lbnRzID0gdHlwZXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0KLSAgICAgIC8vIFByb2Nlc3MgZWFjaCBleHQuIGVsZW1lbnQKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0RWxlbWVudHMuc2l6ZSgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIC8vIElmIGl0IGlzIGFuIHVua25vd24gZXh0LiBlbGVtZW50IGFuZCBpdCBpcyBhIHNjaGVtYSwgdGhlbiBjaGVjayBpdAotICAgICAgICBpZiAoKGV4dEVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldChpKSkKLSAgICAgICAgICBpbnN0YW5jZW9mIFNjaGVtYSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghZXh0RWxlbWVudC5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhXU0lUYWcuRUxFTV9YU0RfU0NIRU1BKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBJZiBpdCBpcyBub3QgYSBzY2hlbWEgZGVmaW5pdGlvbiwgdGhlbiBpdCBpcyBhbiBlcnJvcgotICAgICAgICAgICAgZXJyb3JMaXN0LmFkZCgKLSAgICAgICAgICAgICAgZXh0RWxlbWVudC5nZXRFbGVtZW50VHlwZSgpLnRvU3RyaW5nKCkKLSAgICAgICAgICAgICAgICArICIgY2FuIG5vdCBiZSBhIGNoaWxkIG9mIHRoZSB3c2RsOnR5cGVzIGVsZW1lbnQuIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYgWE1MU2NoZW1hVmFsaWRhdG9yIGNvdWxkIG5vdCBmaW5kIGFueSBlcnJvcnMsIGNoZWNrIGVycm9ycyBmcm9tIHRoZSBpbmxpbmUgc2NoZW1hIHZhbGlkYXRvcgotICAgIGlmIChlcnJvckxpc3QuaXNFbXB0eSgpKQotICAgICAgZXJyb3JMaXN0LmFkZCh2YWxpZGF0b3Iud3NkbERvY3VtZW50LmdldFNjaGVtYXNWYWxpZGF0aW9uRXJyb3JzKCkpOwotCi0gICAgaWYgKCFlcnJvckxpc3QuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JMaXN0LnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMjMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIxMjMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY1ZjgzMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMTIzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIEJQMjEyMy4gCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpkZWZpbml0aW9ucywgaWYgaXQgY29udGFpbnMgYSB3c2RsOnBvcnQsIHdzZGw6YmluZGluZywgd3NkbDpwb3J0VHlwZSwgd3NkbDpvcGVyYXRpb24sIG9yIHdzZGw6bWVzc2FnZTwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5Db250YWluZWQgV1NETCBleHRlbnNpb24gZWxlbWVudHMgZG8gbm90IHVzZSB0aGUgd3NkbDpyZXF1aXJlZCBhdHRyaWJ1dGUgdmFsdWUgb2YgInRydWUiLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIxMjMgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyMTIzKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gY2xhaW1Gb3VuZCA9IGZhbHNlOwotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQT1JUX0tFWSA9ICJwb3J0IjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJJTkRJTkdfS0VZID0gImJpbmRpbmciOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9SVF9UWVBFX0tFWSA9ICJwb3J0IHR5cGUiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1BFUkFUSU9OX0tFWSA9ICJvcGVyYXRpb24iOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVTU0FHRV9LRVkgPSAibWVzc2FnZSI7Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLlBvcnQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFBvcnQgcG9ydCwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgaWYgKHBvcnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoY29udGFpbnNMZWdhbENsYWltKHBvcnQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSkpCi0gICAgICB7Ci0gICAgICAgIGNsYWltRm91bmQgPSB0cnVlOwotICAgICAgICBjdHguYWRkUGFyYW1ldGVyKFBPUlRfS0VZLCBCb29sZWFuLlRSVUUpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBjdHguYWRkUGFyYW1ldGVyKFBPUlRfS0VZLCBCb29sZWFuLkZBTFNFKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLkJpbmRpbmcsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChCaW5kaW5nIGJpbmRpbmcsIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGlmIChiaW5kaW5nICE9IG51bGwpCi0gICAgewotICAgICAgQm9vbGVhbiBwb3J0ID0gKEJvb2xlYW4pIGN0eC5nZXRQYXJhbWV0ZXIoUE9SVF9LRVkpOwotCi0gICAgICBpZiAocG9ydC5ib29sZWFuVmFsdWUoKSkKLSAgICAgIHsKLSAgICAgICAgY3R4LmFkZFBhcmFtZXRlcihCSU5ESU5HX0tFWSwgQm9vbGVhbi5UUlVFKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgY2xhaW1Gb3VuZCA9IGNvbnRhaW5zQ2xhaW0oYmluZGluZy5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICAgICAgY3R4LmFkZFBhcmFtZXRlcigKLSAgICAgICAgICBCSU5ESU5HX0tFWSwKLSAgICAgICAgICBuZXcgQm9vbGVhbihjb250YWluc0xlZ2FsQ2xhaW0oYmluZGluZy5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKSkpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuUG9ydFR5cGUsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChQb3J0VHlwZSB0eXBlLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAodHlwZSAhPSBudWxsKQotICAgIHsKLSAgICAgIEJvb2xlYW4gYmluZGluZyA9IChCb29sZWFuKSBjdHguZ2V0UGFyYW1ldGVyKEJJTkRJTkdfS0VZKTsKLQotICAgICAgaWYgKGJpbmRpbmcuYm9vbGVhblZhbHVlKCkpCi0gICAgICB7Ci0gICAgICAgIGN0eC5hZGRQYXJhbWV0ZXIoUE9SVF9UWVBFX0tFWSwgQm9vbGVhbi5UUlVFKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgY2xhaW1Gb3VuZCA9IGNvbnRhaW5zQ2xhaW0odHlwZS5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICAgICAgY3R4LmFkZFBhcmFtZXRlcigKLSAgICAgICAgICBQT1JUX1RZUEVfS0VZLAotICAgICAgICAgIG5ldyBCb29sZWFuKGNvbnRhaW5zTGVnYWxDbGFpbSh0eXBlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5PcGVyYXRpb24sIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdCgKLSAgICBPcGVyYXRpb24gb3BlcmF0aW9uLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgaWYgKG9wZXJhdGlvbiAhPSBudWxsKQotICAgIHsKLSAgICAgIEJvb2xlYW4gdHlwZSA9IChCb29sZWFuKSBjdHguZ2V0UGFyYW1ldGVyKFBPUlRfVFlQRV9LRVkpOwotCi0gICAgICBpZiAodHlwZS5ib29sZWFuVmFsdWUoKSkKLSAgICAgIHsKLSAgICAgICAgY3R4LmFkZFBhcmFtZXRlcihPUEVSQVRJT05fS0VZLCBCb29sZWFuLlRSVUUpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBjbGFpbUZvdW5kID0gY29udGFpbnNDbGFpbShvcGVyYXRpb24uZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0gICAgICAgIGN0eC5hZGRQYXJhbWV0ZXIoCi0gICAgICAgICAgT1BFUkFUSU9OX0tFWSwKLSAgICAgICAgICBuZXcgQm9vbGVhbigKLSAgICAgICAgICAgIGNvbnRhaW5zTGVnYWxDbGFpbShvcGVyYXRpb24uZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSkpKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLk1lc3NhZ2UsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChNZXNzYWdlIG1lc3NhZ2UsIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGlmIChtZXNzYWdlICE9IG51bGwpCi0gICAgewotICAgICAgQm9vbGVhbiBvcGVyYXRpb24gPSAoQm9vbGVhbikgY3R4LmdldFBhcmFtZXRlcihPUEVSQVRJT05fS0VZKTsKLQotICAgICAgaWYgKG9wZXJhdGlvbi5ib29sZWFuVmFsdWUoKSkKLSAgICAgIHsKLSAgICAgICAgY3R4LmFkZFBhcmFtZXRlcihNRVNTQUdFX0tFWSwgQm9vbGVhbi5UUlVFKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgY2xhaW1Gb3VuZCA9IGNvbnRhaW5zQ2xhaW0obWVzc2FnZS5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICAgICAgY3R4LmFkZFBhcmFtZXRlcigKLSAgICAgICAgICBNRVNTQUdFX0tFWSwKLSAgICAgICAgICBuZXcgQm9vbGVhbihjb250YWluc0xlZ2FsQ2xhaW0obWVzc2FnZS5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKSkpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEJpbmRpbmdPcGVyYXRpb24gb3BlcmF0aW9uLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpIHsKLSAgCWlmIChvcGVyYXRpb24gIT0gbnVsbCkgewotICAJCWlmIChjb250YWluc0xlZ2FsQ2xhaW0ob3BlcmF0aW9uLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpKSB7Ci0gIAkJCVN5c3RlbS5vdXQucHJpbnRsbigiYmluZGluZyBvcGVyYXRpb24gZm91bmQiKTsKLSAgCQl9IGVsc2UgewotICAJCQkKLSAgCQl9Ci0gIAl9Ci0gIH0KLSAgKi8KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGVsLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgYm9vbGVhbiByZXF1aXJlZCA9Ci0gICAgICBlbCAhPSBudWxsCi0gICAgICAgICYmIGVsLmdldFJlcXVpcmVkKCkgIT0gbnVsbAotICAgICAgICAmJiBlbC5nZXRSZXF1aXJlZCgpLmJvb2xlYW5WYWx1ZSgpOwotCi0gICAgaWYgKGlzUGFyZW50Q29uZm9ybXMocGFyZW50LCBjdHgpKQotICAgIHsKLSAgICAgIGlmIChyZXF1aXJlZCkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9XQVJOSU5HOwotICAgICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9IGVsLnRvU3RyaW5nKCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwYXJlbnQgZWxlbWVudCBjb25mb3JtcyB0byB0aGUgYmFzaWMgcHJvZmlsZS4KLSAgICogQHBhcmFtIHBhcmVudAotICAgKiBAcGFyYW0gY3R4Ci0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzUGFyZW50Q29uZm9ybXMoT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKLQotICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBQb3J0KQotICAgIHsKLSAgICAgIHJlc3VsdCA9ICgoQm9vbGVhbikgY3R4LmdldFBhcmFtZXRlcihQT1JUX0tFWSkpLmJvb2xlYW5WYWx1ZSgpOwotICAgIH0KLSAgICBlbHNlIGlmICgKLSAgICAgIHBhcmVudCBpbnN0YW5jZW9mIEJpbmRpbmcKLSAgICAgICAgfHwgcGFyZW50IGluc3RhbmNlb2YgQmluZGluZ09wZXJhdGlvbgotICAgICAgICB8fCBwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nSW5wdXQKLSAgICAgICAgfHwgcGFyZW50IGluc3RhbmNlb2YgQmluZGluZ091dHB1dAotICAgICAgICB8fCBwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nRmF1bHQpCi0gICAgewotICAgICAgcmVzdWx0ID0gKChCb29sZWFuKSBjdHguZ2V0UGFyYW1ldGVyKEJJTkRJTkdfS0VZKSkuYm9vbGVhblZhbHVlKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHBhcmVudCBpbnN0YW5jZW9mIFBvcnRUeXBlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9ICgoQm9vbGVhbikgY3R4LmdldFBhcmFtZXRlcihQT1JUX1RZUEVfS0VZKSkuYm9vbGVhblZhbHVlKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKAotICAgICAgcGFyZW50IGluc3RhbmNlb2YgT3BlcmF0aW9uCi0gICAgICAgIHx8IHBhcmVudCBpbnN0YW5jZW9mIElucHV0Ci0gICAgICAgIHx8IHBhcmVudCBpbnN0YW5jZW9mIE91dHB1dAotICAgICAgICB8fCBwYXJlbnQgaW5zdGFuY2VvZiBGYXVsdCkKLSAgICB7Ci0gICAgICByZXN1bHQgPSAoKEJvb2xlYW4pIGN0eC5nZXRQYXJhbWV0ZXIoT1BFUkFUSU9OX0tFWSkpLmJvb2xlYW5WYWx1ZSgpOwotICAgIH0KLSAgICBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBNZXNzYWdlIHx8IHBhcmVudCBpbnN0YW5jZW9mIFBhcnQpCi0gICAgewotICAgICAgcmVzdWx0ID0gKChCb29sZWFuKSBjdHguZ2V0UGFyYW1ldGVyKE1FU1NBR0VfS0VZKSkuYm9vbGVhblZhbHVlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUoVGVzdEFzc2VydGlvbiwgRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgIC8vIEV4cGVjdCB3c2RsOmRlZmludGlvbnMKLSAgICBEZWZpbml0aW9uIGRlZiA9IChEZWZpbml0aW9uKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotICAgIC8vKChTZXJ2aWNlKWRlZi5nZXRTZXJ2aWNlcygpLnZhbHVlcygpLnRvQXJyYXkoKVswXSkuZ2V0UG9ydHMoKQotICAgIC8vIFRyYXZlcnNlIFdTREwKLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgLy8gVmlzaXRvckFkYXB0b3IuYWRhcHQodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0T3BlcmF0aW9uKHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdEJpbmRpbmcodHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0TWVzc2FnZSh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRQb3J0KHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFBvcnRUeXBlKHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KHRydWUpOwotCi0gICAgdHJhdmVyc2FsLmlnbm9yZUltcG9ydCgpOwotICAgIHRyYXZlcnNhbC5pZ25vcmVEZWZpbml0aW9uMkJpbmRpbmcoKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlRGVmaW5pdGlvbjJFbGVtZW50KCk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZURlZmluaXRpb24yRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlRGVmaW5pdGlvbjJNZXNzYWdlKCk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZURlZmluaXRpb24yUG9ydFR5cGUoKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlRGVmaW5pdGlvbjJUeXBlcygpOwotCi0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKGRlZik7Ci0KLSAgICBpZiAoIWNsYWltRm91bmQpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9Ci0KLSAgICBlbHNlIGlmIChyZXN1bHQuZXF1YWxzKEFzc2VydGlvblJlc3VsdC5SRVNVTFRfV0FSTklORykpCi0gICAgewotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZmFpbHVyZURldGFpbE1lc3NhZ2UsIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBlbGVtZW50IHdoZXRoZXIgY29udGFpbnMgY29uZm9ybWFuY2UgY2xhaW1zLgotICAgKiBSZXR1cm5zIHRydWUgaWYgZG9jdW1lbnRhdGlvbiBlbGVtZW50IGNvbnRhaW5zIGNvbmZvcm1hbmNlIGNsYWltIHdpdGgKLSAgICogbGVnYWwgc2NoZW1hIGRlZmluaXRpb24gVVJJLiAKLSAgICogbGVnYWwgaXMgJ2h0dHA6Ly93cy1pLm9yZy9zY2hlbWFzL2NvbmZvcm1hbmNlQ2xhaW0vJwotICAgKiBAcGFyYW0gZWwKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gY29udGFpbnNDbGFpbShFbGVtZW50IGVsKQotICB7Ci0gICAgaWYgKGVsID09IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gZmluZCBjbGFpbQotICAgIGVsID0gWE1MVXRpbHMuZmluZENoaWxkRWxlbWVudChlbCwgV1NJX0NMQUlNKTsKLSAgICBpZiAoZWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrIHRoZSBkb2N1bWVudGF0aW9uIGVsZW1lbnQgd2hldGhlciBjb250YWlucyBjb25mb3JtYW5jZSBjbGFpbXMuCi0gICAqIFJldHVybnMgdHJ1ZSBpZiBkb2N1bWVudGF0aW9uIGVsZW1lbnQgY29udGFpbnMgY29uZm9ybWFuY2UgY2xhaW0gd2l0aAotICAgKiBsZWdhbCBzY2hlbWEgZGVmaW5pdGlvbiBVUkkuIAotICAgKiBsZWdhbCBpcyAnaHR0cDovL3dzLWkub3JnL3NjaGVtYXMvY29uZm9ybWFuY2VDbGFpbS8nCi0gICAqIEBwYXJhbSBlbAotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBjb250YWluc0xlZ2FsQ2xhaW0oRWxlbWVudCBlbCkKLSAgewotICAgIGlmIChlbCA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIGZpbmQgY2xhaW0KLSAgICBlbCA9IFhNTFV0aWxzLmZpbmRDaGlsZEVsZW1lbnQoZWwsIFdTSV9DTEFJTSk7Ci0gICAgd2hpbGUgKGVsICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIHZhbHVlID0gZWwuZ2V0QXR0cmlidXRlKEFUVFJfQ0xBSU1fQ09ORk9STVNUTy5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICBpZiAodmFsdWUgIT0gbnVsbAotICAgICAgICAmJiB2YWx1ZS5lcXVhbHNJZ25vcmVDYXNlKFdTSUNvbnN0YW50cy5BVFRSVkFMX1VERElfQ0xBSU1fS0VZVkFMVUUpKQotICAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgZWwgPSBYTUxVdGlscy5maW5kRWxlbWVudChlbCwgV1NJX0NMQUlNKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjIwMS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjIwMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjRkZGZjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIyMDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5SZWFkZXI7Ci1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotLyoqCi0gKiBCUDIyMDEuIAotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIFdlYiBzZXJ2aWNlIGRlZmluaXRpb24gd2l0aGluIGEgV1NETCBkb2N1bWVudCB3aXRoIGEgWE1MIGRlY2xhcmF0aW9uIHN0YXRlbWVudC4gPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBYTUwgZGVjbGFyYXRpb24gc3RhdGVtZW50IHVzZXMgVVRGLTggb3IgVVRGLTE2IGZvciB0aGUgZW5jb2RpbmcuIDwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIyMDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIyMDEoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgZmluYWwgY2hhcltdIE9NTUlURURfWE1MX0RFQ0xBUkFUSU9OX0RFTElNSVRFUlMgPSBuZXcgY2hhcltdezB4MjAsCi0gICAgICAweDksIDB4RCwgMHhBLCAnXCcnLCAnXCInfTsKLSAgcHJpdmF0ZSBmaW5hbCBjaGFyW10gWE1MX0RFQ0xBUkFUSU9OX0RFTElNSVRFUlMgPSBuZXcgY2hhcltdeyc9J307Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFVURl84X0VOQ09ESU5HID0gIlVURi04IjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVVRGXzE2X0VOQ09ESU5HID0gIlVURi0xNiI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEVOQ09ESU5HX1RPS0VOID0gImVuY29kaW5nIjsKLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sCi0gICAqICAgICAgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gKERlZmluaXRpb24pIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpCi0gICAgICAgIC5nZXRFbnRyeURldGFpbCgpOwotICAgIFN0cmluZyBsb2NhdGlvbiA9IGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCk7Ci0gICAgU3RyaW5nIHhtbERlY2wgPSByZWFkWE1MRGVjbGFyYXRpb25TdGF0ZW1lbnQobG9jYXRpb24pOwotICAgIGlmICh4bWxEZWNsID09IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLSAgICB9IGVsc2UKLSAgICB7Ci0gICAgICBpZiAoIXZhbGlkRW5jb2RpbmcoeG1sRGVjbCkpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsID0gdmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoeG1sRGVjbCwgZW50cnlDb250ZXh0KTsKLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0gIC8qKgotICAgKiBSZWFkcyBhbiBYTUwgZGVjbGFyYXRpb24gc3RhdGVtZW50LgotICAgKiAKLSAgICogQHBhcmFtIGxvY2F0aW9uCi0gICAqIEByZXR1cm4gU3RyaW5nCi0gICAqLwotICBwcml2YXRlIFN0cmluZyByZWFkWE1MRGVjbGFyYXRpb25TdGF0ZW1lbnQoU3RyaW5nIGxvY2F0aW9uKQotICB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG51bGw7Ci0gICAgaWYgKGxvY2F0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgVVJMIHVybCA9IG51bGw7Ci0gICAgICBSZWFkZXIgcmVhZGVyID0gbnVsbDsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgIHVybCA9IG5ldyBVUkwobG9jYXRpb24pOwotICAgICAgICB9IGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkKLSAgICAgICAgewotICAgICAgICAgIC8vIHdlIHNob3VsZCB0cnkgdG8gYWNjZXNzIGxvY2F0aW9uIGFzIGZpbGUKLSAgICAgICAgfQotICAgICAgICBpZiAodXJsICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICByZWFkZXIgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIodXJsLm9wZW5TdHJlYW0oKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgcmVhZGVyID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKG5ldyBGaWxlSW5wdXRTdHJlYW0obG9jYXRpb24pKTsKLSAgICAgICAgfQotICAgICAgICBpbnQgY2hhckNvZGU7Ci0gICAgICAgIGJvb2xlYW4gZW5kID0gZmFsc2U7Ci0gICAgICAgIGlmIChyZWFkZXIucmVhZHkoKSkKLSAgICAgICAgewotICAgICAgICAgIGNoYXJDb2RlID0gcmVhZGVyLnJlYWQoKTsKLSAgICAgICAgICB3aGlsZSAocmVhZGVyLnJlYWR5KCkgJiYgIShjaGFyQ29kZSA9PSAnPCcpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXJDb2RlID0gcmVhZGVyLnJlYWQoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2hhcltdIGMgPSBuZXcgY2hhcls0XTsKLSAgICAgICAgICByZWFkZXIucmVhZChjKTsKLSAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgICAgIGlmIChuZXcgU3RyaW5nKGMpLnRvTG93ZXJDYXNlKCkuZXF1YWxzKCI/eG1sIikpCi0gICAgICAgICAgewotICAgICAgICAgICAgYnVmLmFwcGVuZCgiPD94bWwiKTsKLSAgICAgICAgICAgIHdoaWxlIChyZWFkZXIucmVhZHkoKSAmJiAhZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjaGFyQ29kZSA9IHJlYWRlci5yZWFkKCk7Ci0gICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoKGNoYXIpIGNoYXJDb2RlKTsKLSAgICAgICAgICAgICAgZW5kID0gY2hhckNvZGUgPT0gJz4nOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMgcmVzdWx0IGRvZXMgbm90IGdldCBwcm9wb2dhdGVkIGJhY2shCi0gICAgICAgICAgICB0aGlzLnJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmVzdWx0ID0gYnVmLnRvU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICAvL1ZFUkJPU0UKLSAgICAgICAgaWYgKHZhbGlkYXRvci52ZXJib3NlT3B0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCIgIFtXU0kyMjAxXSBFeGNlcHRpb246ICIgKyBlLmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0gZmluYWxseQotICAgICAgewotICAgICAgICBpZiAocmVhZGVyICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZWFkZXIuY2xvc2UoKTsKLSAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgLyoKLSAgICogVmVyaWZ5IHhtbCBkZWNsYXJhdGlvbiBjb250YWlucyB1dGYtMTYgb3IgdXRmLTggZW5jb2RpbmcuIEBwYXJhbSB4bWxEZWNsIC0KLSAgICogeG1sIGRlY2xhcmF0aW9uIEByZXR1cm4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiB2YWxpZEVuY29kaW5nKFN0cmluZyB4bWxEZWNsKQotICB7Ci0gICAgLy9ib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotICAgIGJvb2xlYW4gcmVzdWx0ID0gdHJ1ZTsKLSAgICBpZiAoeG1sRGVjbCAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoCi0gICAgICAgICAgT01NSVRFRF9YTUxfREVDTEFSQVRJT05fREVMSU1JVEVSUywgWE1MX0RFQ0xBUkFUSU9OX0RFTElNSVRFUlMpOwotICAgICAgRW51bWVyYXRpb24gdG9rZW5zID0gc3QucGFyc2UoeG1sRGVjbCk7Ci0gICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7Ci0gICAgICB3aGlsZSAodG9rZW5zLmhhc01vcmVFbGVtZW50cygpICYmICFmb3VuZCkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHRva2VuID0gKFN0cmluZykgdG9rZW5zLm5leHRFbGVtZW50KCk7Ci0gICAgICAgIGlmICh0b2tlbi5lcXVhbHMoRU5DT0RJTkdfVE9LRU4pKQotICAgICAgICB7Ci0gICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgIHRva2Vucy5uZXh0RWxlbWVudCgpOwotICAgICAgICAgIFN0cmluZyBlbmMgPSAoU3RyaW5nKSB0b2tlbnMubmV4dEVsZW1lbnQoKTsKLSAgICAgICAgICByZXN1bHQgPSBVVEZfOF9FTkNPRElORy5lcXVhbHNJZ25vcmVDYXNlKGVuYykKLSAgICAgICAgICAgICAgfHwgVVRGXzE2X0VOQ09ESU5HLmVxdWFsc0lnbm9yZUNhc2UoZW5jKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMjAyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyMjAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMzk4ZmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjIwMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLlJlYWRlcjsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuU3RyaW5nVG9rZW5pemVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLQotLyoqCi0gKiBCUDIyMDIuCi0gKiAgPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6dHlwZXMgZWxlbWVudCB3aXRoaW4gYSBXU0RMIGRvY3VtZW50IHdoaWNoIGltcG9ydHMgYW4gWE1MIHNjaGVtYSBkaXJlY3RseSBvciBpbmRpcmVjdGx5LjwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgaW1wb3J0ZWQgc2NoZW1hIHVzZXMgVVRGLTggb3IgVVRGLTE2IGZvciB0aGUgZW5jb2RpbmcuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjIwMiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjIwMihXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JzID0gbmV3IEVycm9yTGlzdCgpOwotICBwcml2YXRlIGJvb2xlYW4gaW1wb3J0Rm91bmQgPSBmYWxzZTsKLQotICBwcml2YXRlIGZpbmFsIGNoYXJbXSBPTU1JVEVEX1hNTF9ERUNMQVJBVElPTl9ERUxJTUlURVJTID0KLSAgICBuZXcgY2hhcltdIHsgMHgyMCwgMHg5LCAweEQsIDB4QSwgJ1wnJywgJ1wiJyB9OwotICBwcml2YXRlIGZpbmFsIGNoYXJbXSBYTUxfREVDTEFSQVRJT05fREVMSU1JVEVSUyA9IG5ldyBjaGFyW10geyAnPScgfTsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVVRGXzhfRU5DT0RJTkcgPSAiVVRGLTgiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBVVEZfMTZfRU5DT0RJTkcgPSAiVVRGLTE2IjsKLQotICBwcml2YXRlIGZpbmFsIFN0cmluZyBFTkNPRElOR19UT0tFTiA9ICJlbmNvZGluZyI7Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9OT1RfQVBQTElDQUJMRTsKLQotICAgIC8vRGVmaW5pdGlvbiBkZWYgPSAoRGVmaW5pdGlvbikgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLSAgICBUeXBlcyB0eXBlcyA9IChUeXBlcykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLSAgICBMaXN0IGV4dHMgPSBudWxsOwotICAgIC8vaWYgKGRlZi5nZXRUeXBlcygpICE9IG51bGwpCi0gICAgaWYgKHR5cGVzICE9IG51bGwpCi0gICAgICAvL2V4dHMgPSBkZWYuZ2V0VHlwZXMoKS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIGV4dHMgPSB0eXBlcy5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICBpZiAoZXh0cyAhPSBudWxsKQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IG51bGw7Ci0gICAgICBpZiAoKGRlZmluaXRpb24gPQotICAgICAgICB2YWxpZGF0b3IuYW5hbHl6ZXJDb250ZXh0LmdldENhbmRpZGF0ZUluZm8oKS5nZXREZWZpbml0aW9uKHR5cGVzKSkKLSAgICAgICAgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdHlwZXMgZGVmaW5pdGlvbiBpbiBhbnkgV1NETCBkb2N1bWVudC4iKTsKLSAgICAgIH0KLQotICAgICAgSXRlcmF0b3IgaXQgPSBleHRzLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlbCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaXQubmV4dCgpOwotICAgICAgICBpZiAoZWwgaW5zdGFuY2VvZiBTY2hlbWEKLSAgICAgICAgICAmJiBlbC5nZXRFbGVtZW50VHlwZSgpLmVxdWFscyhFTEVNX1hTRF9TQ0hFTUEpKQotICAgICAgICAgIHNlYXJjaEZvclNjaGVtYSgoKFNjaGVtYSkgZWwpLmdldEVsZW1lbnQoKSwKLSAgICAgICAgICAgICAgZGVmaW5pdGlvbi5nZXREb2N1bWVudEJhc2VVUkkoKSwgbmV3IEFycmF5TGlzdCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWVycm9ycy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlcnJvcnMudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICBlbHNlIGlmICghaW1wb3J0Rm91bmQpCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotCi0gICAgZWxzZQotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoKLSAgICogU2VhcmNoIHhzZCBzY2hlbWEgb3IgeHNkIGltcG9ydCBmcm9tIG5vZGUuIElmIG5vZGUgaXMgeHNkIGltcG9ydCBpdCdzIGxvYWRpbmcgc2NoZW1hLgotICAgKiBAcGFyYW0gbiAtIG5vZGUKLSAgKi8KLSAgcHJpdmF0ZSB2b2lkIHNlYXJjaEZvclNjaGVtYShOb2RlIG4sIFN0cmluZyBjb250ZXh0LCBMaXN0IHByb2Nlc3NlZFNjaGVtYXMpCi0gIHsKLQlpZiAoKG4hPSBudWxsKSAmJiAoIXByb2Nlc3NlZFNjaGVtYXMuY29udGFpbnMobikpKQotCXsKLSAgICAgIHdoaWxlIChuICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIHNlYXJjaGVzIGZvciB4c2Q6aW1wb3J0IGVsZW1lbnQKLSAgICAgICAgaWYgKE5vZGUuRUxFTUVOVF9OT0RFID09IG4uZ2V0Tm9kZVR5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIGlmIHhzZDpzY2hlbWEgZWxlbWVudCBpcyBmb3VuZCAtPiBwcm9jZXNzIHNjaGVtYQotICAgICAgICAgIGlmIChYTUxVdGlscy5lcXVhbHMobiwgRUxFTV9YU0RfU0NIRU1BKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwcm9jZXNzU2NoZW1hKG4sIGNvbnRleHQsIHByb2Nlc3NlZFNjaGVtYXMpOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gaWYgeHNkOmltcG9ydCBlbGVtZW50IGlzIGZvdW5kIC0+IGxvYWQgc2NoZW1hIGFuZCBwcm9jZXNzIHNjaGVtYQotICAgICAgICAgICAgaWYgKFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9JTVBPUlQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpbXBvcnRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgIGxvYWRTY2hlbWEobiwgY29udGV4dCwgcHJvY2Vzc2VkU2NoZW1hcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIC8vIGVsc2UgaXRlcmF0ZSBlbGVtZW50IHJlY3Vyc2l2ZWx5Ci0gICAgICAgICAgICAgIHNlYXJjaEZvclNjaGVtYShuLmdldEZpcnN0Q2hpbGQoKSwgY29udGV4dCwgcHJvY2Vzc2VkU2NoZW1hcyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG4gPSBuLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoKLSAgICogSXQgbG9hZHMgeHNkIHNjaGVtYSBhbmQgdGhlbiBjaGVjayB2YWxpZCBlbmNvZGluZyBhbmQgbG9va2luZyBmb3IgeHNkOnNjaGVtYSBlbGVtZW50IGZvciBuZXh0IHByb2Nlc3MuIAotICAgKiBAcGFyYW0gaW1wb3J0Tm9kZSAtIHhzZCBzY2hlbWEKLSAgKi8KLSAgcHJpdmF0ZSB2b2lkIGxvYWRTY2hlbWEoTm9kZSBpbXBvcnROb2RlLCBTdHJpbmcgY29udGV4dCwgTGlzdCBwcm9jZXNzZWRTY2hlbWFzKQotICB7Ci0gICAgRWxlbWVudCBpbSA9IChFbGVtZW50KSBpbXBvcnROb2RlOwotICAgIEF0dHIgc2NoZW1hTG9jYXRpb24gPSBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoaW0sIEFUVFJfWFNEX1NDSEVNQUxPQ0FUSU9OKTsKLSAgICAvLyB0cnkgdG8gcGFyc2UgaW1wb3J0ZWQgWFNECi0gICAgaWYgKHNjaGVtYUxvY2F0aW9uICE9IG51bGwgJiYgc2NoZW1hTG9jYXRpb24uZ2V0VmFsdWUoKSAhPSBudWxsKQotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIC8vIGlmIGFueSBlcnJvciBvciByb290IGVsZW1lbnQgaXMgbm90IFhTRCBzY2hlbWEgLT4gZXJyb3IKLSAgICAgICAgU3RyaW5nIGRlY2wgPQotICAgICAgICAgIHJlYWRYTUxEZWNsYXJhdGlvblN0YXRlbWVudChzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpLCBjb250ZXh0KTsKLSAgICAgICAgaWYgKCF2YWxpZERlY2xhcmF0aW9uKGRlY2wsCi0gICAgICAgICAgRU5DT0RJTkdfVE9LRU4sCi0gICAgICAgICAgbmV3IFN0cmluZ1tdIHsgVVRGXzhfRU5DT0RJTkcsIFVURl8xNl9FTkNPRElORyB9KSkKLSAgICAgICAgewotICAgICAgICAgIEF0dHIgYSA9IFhNTFV0aWxzLmdldEF0dHJpYnV0ZShpbSwgQVRUUl9YU0RfTkFNRVNQQUNFKTsKLSAgICAgICAgICBlcnJvcnMuYWRkKChhICE9IG51bGwpID8gYS5nZXRWYWx1ZSgpIDogIiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF2YWxpZERlY2xhcmF0aW9uKGRlY2wsICJ2ZXJzaW9uIiwgbmV3IFN0cmluZ1tdIHsgIjEuMCIgfSkpCi0gICAgICAgIHsKLSAgICAgICAgICBlcnJvcnMuYWRkKAotICAgICAgICAgICAgIlZlcnNpb24gbnVtYmVyIGluIFhNTCBkZWNsYXJhdGlvbiBpcyBub3QgMS4wLiAgWE1MIHNjaGVtYSBmaWxlOiAiCi0gICAgICAgICAgICAgICsgc2NoZW1hTG9jYXRpb24uZ2V0VmFsdWUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBERUJVRzoKLSAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCkgKyAiOiIgKyBjb250ZXh0KTsKLQotICAgICAgICBEb2N1bWVudCBzY2hlbWEgPQotICAgICAgICAgIHZhbGlkYXRvci5wYXJzZVhNTERvY3VtZW50VVJMKHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCksIGNvbnRleHQpOwotCi0gICAgICAgIGlmIChYTUxVdGlscy5lcXVhbHMoc2NoZW1hLmdldERvY3VtZW50RWxlbWVudCgpLCBFTEVNX1hTRF9TQ0hFTUEpKQotICAgICAgICB7Ci0gICAgICAgICAgIHByb2Nlc3NTY2hlbWEoc2NoZW1hLmdldERvY3VtZW50RWxlbWVudCgpLAotICAgICAgICAgICAgICBYTUxVdGlscy5jcmVhdGVVUkxTdHJpbmcoc2NoZW1hTG9jYXRpb24uZ2V0VmFsdWUoKSwgY29udGV4dCksIHByb2Nlc3NlZFNjaGVtYXMpOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgICAgfQotICAgICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgICAgewotICAgICAgfQotICB9Ci0KLSAgLyoqCi0gICogUmVhZHMgYW4gWE1MIGRlY2xhcmF0aW9uIHN0YXRlbWVudC4KLSAgKiBAcGFyYW0gbG9jYXRpb24KLSAgKiBAcmV0dXJuIFN0cmluZwotICAqLwotICBwcml2YXRlIFN0cmluZyByZWFkWE1MRGVjbGFyYXRpb25TdGF0ZW1lbnQoU3RyaW5nIGxvY2F0aW9uLCBTdHJpbmcgYmFzZVVSSSkKLSAgewotICAgIFN0cmluZyByZXN1bHQgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIG5ldyBVUkwobG9jYXRpb24pOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgICAgLy8gbm90aGluZwotICAgICAgaW50IGkgPSBiYXNlVVJJLmxhc3RJbmRleE9mKCcvJyk7Ci0gICAgICBpbnQgaiA9IGJhc2VVUkkubGFzdEluZGV4T2YoJ1xcJyk7Ci0gICAgICBpZiAoaiA+IGkpCi0gICAgICAgIGkgPSBqOwotICAgICAgbG9jYXRpb24gPSBiYXNlVVJJLnN1YnN0cmluZygwLCBpICsgMSkgKyBsb2NhdGlvbjsKLSAgICB9Ci0KLSAgICBpZiAobG9jYXRpb24gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBVUkwgdXJsID0gbnVsbDsKLSAgICAgIFJlYWRlciByZWFkZXIgPSBudWxsOwotCi0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICB1cmwgPSBuZXcgVVJMKGxvY2F0aW9uKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyB3ZSBzaG91bGQgdHJ5IHRvIGFjY2VzcyBsb2NhdGlvbiBhcyBmaWxlCi0gICAgICAgIH0KLQotICAgICAgICBpZiAodXJsICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICByZWFkZXIgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIodXJsLm9wZW5TdHJlYW0oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgcmVhZGVyID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKG5ldyBGaWxlSW5wdXRTdHJlYW0obG9jYXRpb24pKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBjaGFyQ29kZTsKLSAgICAgICAgYm9vbGVhbiBlbmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHJlYWRlci5yZWFkeSgpKQotICAgICAgICB7Ci0gICAgICAgICAgY2hhckNvZGUgPSByZWFkZXIucmVhZCgpOwotCi0gICAgICAgICAgd2hpbGUgKHJlYWRlci5yZWFkeSgpICYmICEoY2hhckNvZGUgPT0gJzwnKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyQ29kZSA9IHJlYWRlci5yZWFkKCk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgICAgICBpZiAoY2hhckNvZGUgPT0gJzwnKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoKGNoYXIpIGNoYXJDb2RlKTsKLSAgICAgICAgICAgIHdoaWxlIChyZWFkZXIucmVhZHkoKSAmJiAhZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjaGFyQ29kZSA9IHJlYWRlci5yZWFkKCk7Ci0gICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoKGNoYXIpIGNoYXJDb2RlKTsKLQotICAgICAgICAgICAgICBlbmQgPSBjaGFyQ29kZSA9PSAnPic7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBOT1RFOiBUaGlzIHJlc3VsdCBkb2VzIG5vdCBnZXQgcHJvcG9nYXRlZCBiYWNrIQotICAgICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9Ci0gICAgICAgICAgICAgICJDYW5ub3QgcmVhZCB0aGUgWE1MIGRlY2xhcmF0aW9uIHN0YXRlbWVudC4iOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHJlc3VsdCA9IGJ1Zi50b1N0cmluZygpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIGVycm9ycy5hZGQoZS5nZXRNZXNzYWdlKCkpOwotICAgICAgfQotICAgICAgZmluYWxseQotICAgICAgewotICAgICAgICBpZiAocmVhZGVyICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZWFkZXIuY2xvc2UoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKFRocm93YWJsZSBlKQotICAgICAgICAgIHsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoKLSAgICogQHBhcmFtIHhtbERlY2wgLSB4bWwgZGVjbGFyYXRpb24KLSAgICogQHJldHVybiBpZiB4bWwgZGVjbGFyYXRpb24gY29udGFpbnMgZW5jb2Rpbmc9InV0Zi0xNiIgb3IgZW5jb2Rpbmc9InV0Zi04IiBpdCByZXRpcm5zIHRydWUuIAotICAqLwotCi0gIC8vcHJpdmF0ZSBib29sZWFuIHZhbGlkRW5jb2RpbmcoU3RyaW5nIHhtbERlY2wpCi0gIC8vewotICAvLyAgLy9ib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotICAvLyAgYm9vbGVhbiByZXN1bHQgPSB0cnVlOwotICAvLyAgaWYgKHhtbERlY2wgIT0gbnVsbCkKLSAgLy8gIHsKLSAgLy8gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0KLSAgLy8gICAgICBuZXcgU3RyaW5nVG9rZW5pemVyKAotICAvLyAgICAgICAgT01NSVRFRF9YTUxfREVDTEFSQVRJT05fREVMSU1JVEVSUywKLSAgLy8gICAgICAgIFhNTF9ERUNMQVJBVElPTl9ERUxJTUlURVJTKTsKLSAgLy8gICAgRW51bWVyYXRpb24gdG9rZW5zID0gc3QucGFyc2UoeG1sRGVjbCk7Ci0gIC8vICAgYm9vbGVhbiBmb3VuZCA9IGZhbHNlOwotICAvLyAgICB3aGlsZSAodG9rZW5zLmhhc01vcmVFbGVtZW50cygpICYmICFmb3VuZCkKLSAgLy8gICAgewotICAvLyAgICAgIFN0cmluZyB0b2tlbiA9IChTdHJpbmcpIHRva2Vucy5uZXh0RWxlbWVudCgpOwotICAvLwotICAvLyAgICAgIGlmICh0b2tlbi5lcXVhbHMoRU5DT0RJTkdfVE9LRU4pKQotICAvLyAgICAgIHsKLSAgLy8gICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgLy8KLSAgLy8gICAgICAgIHRva2Vucy5uZXh0RWxlbWVudCgpOwotICAvLyAgICAgICAgU3RyaW5nIGVuYyA9IChTdHJpbmcpIHRva2Vucy5uZXh0RWxlbWVudCgpOwotICAvLwotICAvLyAgICAgICAgcmVzdWx0ID0KLSAgLy8gICAgICAgICBVVEZfOF9FTkNPRElORy5lcXVhbHNJZ25vcmVDYXNlKGVuYykKLSAgLy8gICAgICAgICAgICB8fCBVVEZfMTZfRU5DT0RJTkcuZXF1YWxzSWdub3JlQ2FzZShlbmMpOwotICAvLyAgICAgIH0KLSAgLy8gICAgfQotICAvLyAgfQotICAvLwotICAvLyAgcmV0dXJuIHJlc3VsdDsKLSAgLy99Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSB4bWxEZWNsIC0geG1sIGRlY2xhcmF0aW9uCi0gICAqIEByZXR1cm4gaWYgeG1sIGRlY2xhcmF0aW9uIGNvbnRhaW5zIHZhbGlkIHZlcnNpb24gbnVtYmVyIHRoZW4gdHJ1ZSBpcyByZXR1cm5lZC4gCi0gICovCi0gIHByaXZhdGUgYm9vbGVhbiB2YWxpZERlY2xhcmF0aW9uKAotICAgIFN0cmluZyB4bWxEZWNsLAotICAgIFN0cmluZyB0b2tlbk5hbWUsCi0gICAgU3RyaW5nW10gY2hlY2tWYWx1ZUxpc3QpCi0gIHsKLSAgICAvL2Jvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0gICAgYm9vbGVhbiByZXN1bHQgPSB0cnVlOwotICAgIGlmICh4bWxEZWNsICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0KLSAgICAgICAgbmV3IFN0cmluZ1Rva2VuaXplcigKLSAgICAgICAgICBPTU1JVEVEX1hNTF9ERUNMQVJBVElPTl9ERUxJTUlURVJTLAotICAgICAgICAgIFhNTF9ERUNMQVJBVElPTl9ERUxJTUlURVJTKTsKLSAgICAgIEVudW1lcmF0aW9uIHRva2VucyA9IHN0LnBhcnNlKHhtbERlY2wpOwotCi0gICAgICBpZiAodG9rZW5zLmhhc01vcmVFbGVtZW50cygpKQotICAgICAgewotICAgICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIHdoaWxlICh0b2tlbnMuaGFzTW9yZUVsZW1lbnRzKCkgJiYgIWZvdW5kKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIHRva2VuID0gKFN0cmluZykgdG9rZW5zLm5leHRFbGVtZW50KCk7Ci0KLSAgICAgICAgICBpZiAodG9rZW4uZXF1YWxzKHRva2VuTmFtZSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIHRva2Vucy5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgU3RyaW5nIHRva2VuVmFsdWUgPSAoU3RyaW5nKSB0b2tlbnMubmV4dEVsZW1lbnQoKTsKLQotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGVja1ZhbHVlTGlzdC5sZW5ndGggJiYgIXJlc3VsdDsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAoY2hlY2tWYWx1ZUxpc3RbaV0uZXF1YWxzSWdub3JlQ2FzZSh0b2tlblZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdG9rZW5zIHRoZW4gaXQgaXMgbm90IGEgdmFsaWQgZGVjbGFyYWN0aW9uCi0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKgotICAgKiBJdCdzIGxvb2tpbmcgZm9yIHhzZCBpbXBvcnQgYW5kIGxvYWQgaXQgaWYgZmluZC4KLSAgICogQHBhcmFtIHNjaGVtYSAtIHhzZCBzY2hlbWEKLSAgICogQHBhcmFtIG5hbWVzcGFjZSAtIG5hbWVzcGFjZSBvZiBzY2hlbWEKLSAgICovCi0gIHByaXZhdGUgdm9pZCBwcm9jZXNzU2NoZW1hKE5vZGUgc2NoZW1hLCBTdHJpbmcgY29udGV4dCwgTGlzdCBwcm9jZXNzZWRTY2hlbWFzKQotICB7Ci0JaWYgKChzY2hlbWEgIT0gbnVsbCkgJiYgKCFwcm9jZXNzZWRTY2hlbWFzLmNvbnRhaW5zKHNjaGVtYSkpKQotCXsKLQkgIHByb2Nlc3NlZFNjaGVtYXMuYWRkKHNjaGVtYSk7Ci0gICAgICBOb2RlIG4gPSBzY2hlbWEuZ2V0Rmlyc3RDaGlsZCgpOwotICAgICAgd2hpbGUgKG4gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgaWYgKE5vZGUuRUxFTUVOVF9OT0RFID09IG4uZ2V0Tm9kZVR5cGUoKQotICAgICAgICAgICYmIFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9JTVBPUlQpKQotICAgICAgICB7Ci0gICAgICAgICAgaW1wb3J0Rm91bmQgPSB0cnVlOwotICAgICAgICAgIGxvYWRTY2hlbWEobiwgY29udGV4dCwgcHJvY2Vzc2VkU2NoZW1hcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgfQotICAgIH0KLSAgfQotCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjIwOC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjIwOC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzU5NjMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDIyMDguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvblR5cGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0KLS8qKgotICogQlAyMjA4LgotICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6b3BlcmF0aW9uIGluIGEgd3NkbDpwb3J0VHlwZSBkZWZpbml0aW9uPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSB3c2RsOm9wZXJhdGlvbiBlbGVtZW50IGlzIGVpdGhlciBhIFdTREwgcmVxdWVzdC9yZXNwb25zZSBvciBhIG9uZS13YXkgb3BlcmF0aW9uIChubyBOb3RpZmljYXRpb24gb3IgU29sbGljaXQtUmVzcG9uc2UpLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDIyMDggZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDIyMDgoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPQotICAgICAgKE9wZXJhdGlvbikgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLSAgICBPcGVyYXRpb25UeXBlIG9wVHlwZSA9IG9wZXJhdGlvbi5nZXRTdHlsZSgpOwotICAgIGlmICgob3BUeXBlID09IG51bGwpCi0gICAgICB8fCAoIW9wVHlwZS5lcXVhbHMoT3BlcmF0aW9uVHlwZS5PTkVfV0FZKQotICAgICAgICAmJiAhb3BUeXBlLmVxdWFscyhPcGVyYXRpb25UeXBlLlJFUVVFU1RfUkVTUE9OU0UpKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGlmIChvcFR5cGUgPT0gbnVsbCkKLSAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICAgICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBvcGVyYXRpb24gdHlwZSBmb3IgIgotICAgICAgICAgICAgICArIG9wZXJhdGlvbi5nZXROYW1lKCkKLSAgICAgICAgICAgICAgKyAiLiIsCi0gICAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgICAgZWxzZQotICAgICAgICBmYWlsdXJlRGV0YWlsID0gbnVsbDsgLy8gbm9uZSBkZWZpbmVkIGluIFRBRCBhdCBwcmVzZW50IAotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI0MDIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI0MDIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRmM2RhNC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyNDAyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotCi0vKioKLSAqIEJQMjQwMi4KLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcgZWxlbWVudDwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgd3NkbDpiaW5kaW5nIGVsZW1lbnQgaGFzIGEgc29hcGJpbmQ6YmluZGluZyBjaGlsZCBlbGVtZW50LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDI0MDIgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDI0MDIoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLQotICAgIC8vIEdldCB0aGUgcG9ydCBmcm9tIHRoZSBlbnRyeSBjb250ZXh0Ci0gICAgLy9Qb3J0IHBvcnQgPSAoUG9ydCkgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLSAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIC8vIFRyeSB0byBnZXQgdGhlIFNPQVAgYmluZGluZwotICAgIFNPQVBCaW5kaW5nIHNvYXBCaW5kaW5nID0gV1NETFZhbGlkYXRvckltcGwuZ2V0U29hcEJpbmRpbmcoYmluZGluZyk7Ci0KLSAgICAvLyBUZXN0IHRoZSBhc3NlcnRpb24gCi0gICAgLy8gQ2hlY2sgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgU09BUCBCaW5kaW5nCi0gICAgaWYgKHNvYXBCaW5kaW5nICE9IG51bGwpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gbnVsbDsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyNDA0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyNDA0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4OGU4ZDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjQwNC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotCi0vKioKLSAqIEJQMjQwNC4KLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmJpbmRpbmcgZWxlbWVudDwvY29udGV4dD4KLSAqIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgY29udGFpbmVkIHNvYXA6YmluZGluZyBlbGVtZW50IGhhcyBhICJ0cmFuc3BvcnQiIGF0dHJpYnV0ZSwgd2hpY2ggaGFzIHZhbHVlOiBodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjQwNCBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjQwNChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICAvLyBHZXQgdGhlIGJpbmRpbmcgZnJvbSB0aGUgZW50cnkgY29udGV4dAotICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgLy8gVHJ5IHRvIGdldCB0aGUgU09BUCBiaW5kaW5nCi0gICAgU09BUEJpbmRpbmcgc29hcEJpbmRpbmcgPSBXU0RMVmFsaWRhdG9ySW1wbC5nZXRTb2FwQmluZGluZyhiaW5kaW5nKTsKLQotICAgIC8vIFRlc3QgdGhlIGFzc2VydGlvbiAKLSAgICAvLyBDaGVjayBmb3IgU29hcCBiaW5kaW5nIG5hbWVzcGFjZSAKLSAgICBpZiAoKHNvYXBCaW5kaW5nID09IG51bGwpCi0gICAgICB8fCAoc29hcEJpbmRpbmcuZ2V0VHJhbnNwb3J0VVJJKCkgPT0gbnVsbCkKLSAgICAgIHx8ICFzb2FwQmluZGluZy5nZXRUcmFuc3BvcnRVUkkoKS5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9TT0FQX0hUVFApKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgc29hcEJpbmRpbmcgPT0gbnVsbAotICAgICAgICAgID8gIldTREwgZG9jdW1lbnQgZG9lcyBub3QgY29udGFpbiBTT0FQIGJpbmRpbmcgZWxlbWVudC4iCi0gICAgICAgICAgOiBzb2FwQmluZGluZy50b1N0cmluZygpLAotICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI0MDYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI0MDYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ1ZDhlZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyNDA2LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLQotLyoqCi0gKiBCUDI0MDYuCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nIGVsZW1lbnQsIGlmIHRoZSB1c2UgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBvbiB0aGUgc29hcGJpbmQ6Ym9keSwgc29hcGJpbmQ6ZmF1bHQsIHNvYXBiaW5kOmhlYWRlciwgb3Igc29hcGJpbmQ6aGVhZGVyZmF1bHQgZWxlbWVudHMuPC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSB1c2UgYXR0cmlidXRlIGhhcyBhIHZhbHVlIG9mICJsaXRlcmFsIi48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgQlAyNDA2IGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2VzcwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlAyNDA2KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICAvLyBHZXQgdGhlIGJpbmRpbmcgZnJvbSB0aGUgZW50cnkgY29udGV4dAotICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgLy8gR2V0IFNPQVAgYm9keSBlbGVtZW50cyAgICAgIAotICAgIFNPQVBCb2R5W10gc29hcEJvZGllcyA9IHRoaXMudmFsaWRhdG9yLmdldFNvYXBCb2RpZXMoYmluZGluZyk7Ci0KLSAgICAvLyBBREQ6IFdoYXQgaGFwcGVucyBpZiB0aGVyZSBhcmUgbm8gc29hcCBib2R5IGVsZW1lbnRzPyAgUmlnaHQgbm93IHRoZSBUQSByZXN1bHQgaXMgTkEuICAgICAgCi0KLSAgICAvLyBUZXN0IHRoZSBhc3NlcnRpb24gCi0gICAgLy8gQ2hlY2sgZm9yIGNvcnJlY3QgdXNlIHZhbHVlIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc29hcEJvZGllcy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBTT0FQQm9keSBzb2FwQm9keSA9IHNvYXBCb2RpZXNbaV07Ci0gICAgICBpZiAoc29hcEJvZHkuZ2V0VXNlKCkgIT0gbnVsbAotICAgICAgICAmJiAhc29hcEJvZHkuZ2V0VXNlKCkuZXF1YWxzKFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQk9EWV9VU0VfTElUKSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoc29hcEJvZHkudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gR2V0IFNPQVAgZmF1bHQgZWxlbWVudHMgICAgICAKLSAgICBTT0FQRmF1bHRbXSBzb2FwRmF1bHRzID0gdGhpcy52YWxpZGF0b3IuZ2V0U29hcEZhdWx0cyhiaW5kaW5nKTsKLQotICAgIC8vIFRlc3QgdGhlIGFzc2VydGlvbiAKLSAgICAvLyBDaGVjayBmb3IgY29ycmVjdCB1c2UgdmFsdWUgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb2FwRmF1bHRzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIFNPQVBGYXVsdCBzb2FwRmF1bHQgPSBzb2FwRmF1bHRzW2ldOwotICAgICAgaWYgKHNvYXBGYXVsdC5nZXRVc2UoKSAhPSBudWxsCi0gICAgICAgICYmICFzb2FwRmF1bHQuZ2V0VXNlKCkuZXF1YWxzKFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQk9EWV9VU0VfTElUKSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWxNZXNzYWdlID0KLSAgICAgICAgICAoZmFpbHVyZURldGFpbE1lc3NhZ2UgPT0gbnVsbAotICAgICAgICAgICAgPyBzb2FwRmF1bHQudG9TdHJpbmcoKQotICAgICAgICAgICAgOiBmYWlsdXJlRGV0YWlsTWVzc2FnZSArICJcblxuIiArIHNvYXBGYXVsdC50b1N0cmluZygpKTsKLSAgICAgICAgaWYgKGZhaWx1cmVEZXRhaWwgPT0gbnVsbCkKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZmFpbHVyZURldGFpbE1lc3NhZ2UsIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsLnNldEZhaWx1cmVNZXNzYWdlKGZhaWx1cmVEZXRhaWxNZXNzYWdlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gR2V0IFNPQVAgaGVhZGVyIGVsZW1lbnRzICAgICAgCi0gICAgU09BUEhlYWRlcltdIHNvYXBIZWFkZXJzID0gdGhpcy52YWxpZGF0b3IuZ2V0U29hcEhlYWRlcnMoYmluZGluZyk7Ci0KLSAgICAvLyBUZXN0IHRoZSBhc3NlcnRpb24gCi0gICAgLy8gQ2hlY2sgZm9yIGNvcnJlY3QgdXNlIHZhbHVlIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc29hcEhlYWRlcnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgU09BUEhlYWRlciBzb2FwSGVhZGVyID0gc29hcEhlYWRlcnNbaV07Ci0gICAgICBpZiAoc29hcEhlYWRlci5nZXRVc2UoKSAhPSBudWxsCi0gICAgICAgICYmICFzb2FwSGVhZGVyLmdldFVzZSgpLmVxdWFscyhXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JPRFlfVVNFX0xJVCkpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9Ci0gICAgICAgICAgKGZhaWx1cmVEZXRhaWxNZXNzYWdlID09IG51bGwKLSAgICAgICAgICAgID8gc29hcEhlYWRlci50b1N0cmluZygpCi0gICAgICAgICAgICA6IGZhaWx1cmVEZXRhaWxNZXNzYWdlICsgIlxuXG4iICsgc29hcEhlYWRlci50b1N0cmluZygpKTsKLSAgICAgICAgaWYgKGZhaWx1cmVEZXRhaWwgPT0gbnVsbCkKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZmFpbHVyZURldGFpbE1lc3NhZ2UsIGVudHJ5Q29udGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBmYWlsdXJlRGV0YWlsLnNldEZhaWx1cmVNZXNzYWdlKGZhaWx1cmVEZXRhaWxNZXNzYWdlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gR2V0IFNPQVAgaGVhZGVyIGZhdWx0IGVsZW1lbnRzICAgICAgCi0gICAgU09BUEhlYWRlckZhdWx0W10gc29hcEhlYWRlckZhdWx0cyA9IHRoaXMudmFsaWRhdG9yLmdldFNvYXBIZWFkZXJGYXVsdHMoYmluZGluZyk7Ci0KLSAgICAvLyBUZXN0IHRoZSBhc3NlcnRpb24gCi0gICAgLy8gQ2hlY2sgZm9yIGNvcnJlY3QgdXNlIHZhbHVlIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc29hcEhlYWRlckZhdWx0cy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBTT0FQSGVhZGVyRmF1bHQgc29hcEhlYWRlckZhdWx0ID0gc29hcEhlYWRlckZhdWx0c1tpXTsKLSAgICAgIGlmIChzb2FwSGVhZGVyRmF1bHQuZ2V0VXNlKCkgIT0gbnVsbAotICAgICAgICAmJiAhc29hcEhlYWRlckZhdWx0LmdldFVzZSgpLmVxdWFscygKLSAgICAgICAgICBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JPRFlfVVNFX0xJVCkpCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgICBmYWlsdXJlRGV0YWlsTWVzc2FnZSA9Ci0gICAgICAgICAgKGZhaWx1cmVEZXRhaWxNZXNzYWdlID09IG51bGwKLSAgICAgICAgICAgID8gc29hcEhlYWRlckZhdWx0LnRvU3RyaW5nKCkKLSAgICAgICAgICAgIDogZmFpbHVyZURldGFpbE1lc3NhZ2UgKyAiXG5cbiIgKyBzb2FwSGVhZGVyRmF1bHQudG9TdHJpbmcoKSk7Ci0gICAgICAgIGlmIChmYWlsdXJlRGV0YWlsID09IG51bGwpCi0gICAgICAgICAgZmFpbHVyZURldGFpbCA9Ci0gICAgICAgICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGZhaWx1cmVEZXRhaWxNZXNzYWdlLCBlbnRyeUNvbnRleHQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgZmFpbHVyZURldGFpbC5zZXRGYWlsdXJlTWVzc2FnZShmYWlsdXJlRGV0YWlsTWVzc2FnZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHRoZSByZXN1bHQgaXMgcGFzc2VkLCBidXQgdGhlcmUgd2FzIG5vdGhpbmcgdG8gY2hlY2sgdGhlbiBzZXQgdG8gbm90QXBwbGljYWJsZQotICAgIGlmIChyZXN1bHQgPT0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQKLSAgICAgICYmIChzb2FwQm9kaWVzID09IG51bGwgfHwgc29hcEJvZGllcy5sZW5ndGggPT0gMCkKLSAgICAgICYmIChzb2FwRmF1bHRzID09IG51bGwgfHwgc29hcEZhdWx0cy5sZW5ndGggPT0gMCkKLSAgICAgICYmIChzb2FwSGVhZGVycyA9PSBudWxsIHx8IHNvYXBIZWFkZXJzLmxlbmd0aCA9PSAwKQotICAgICAgJiYgKHNvYXBIZWFkZXJGYXVsdHMgPT0gbnVsbCB8fCBzb2FwSGVhZGVyRmF1bHRzLmxlbmd0aCA9PSAwKSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI0MTYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI0MTYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWExZWJhMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyNDE2LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3NWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSogQlAyNDE2LiAKLSogICA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpkZWZpbml0aW9uczwvY29udGV4dD4KLSogICA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+RXZlcnkgUU5hbWUgaW4gdGhlIFdTREwgZG9jdW1lbnQgYW5kIGl0cyBpbXBvcnRzLCBpcyByZWZlcmVuY2luZyBhbiBlbGVtZW50IGluIGEgbmFtZXNwYWNlIHRoYXQgaGFzIGVpdGhlciBiZWVuIGltcG9ydGVkIG9yIGRlZmluZWQgaW4gdGhlIFdTREwgZG9jdW1lbnQgdGhhdCBjb250YWlucyB0aGUgcmVmZXJlbmNlLjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0qLwotcHVibGljIGNsYXNzIEJQMjQxNiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDI0MTYoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOU19MSVNUX0tFWSA9ICJuYW1lc3BhY2VzIjsKLQotICAvKioKLSAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIG5hbWVzcGFjZSBpcyBkZWZpbmVkIG9yIGltcG9ydGVkIGluIHRoZSBkZWZpbml0aW9uLgotICAgKiBAcGFyYW0gcW5hbWUKLSAgICogQHBhcmFtIGN0eAotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGNoZWNrTmFtZXNwYWNlKFFOYW1lIHFuYW1lLCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAocW5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgbmFtZXNwYWNlID0gcW5hbWUuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0KLSAgICAgIGlmIChuYW1lc3BhY2UgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgTGlzdCBuYW1lc3BhY2VzID0gKExpc3QpIGN0eC5nZXRQYXJhbWV0ZXIoTlNfTElTVF9LRVkpOwotCi0gICAgICAgIGlmICghbmFtZXNwYWNlcy5jb250YWlucyhuYW1lc3BhY2UpKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgICAgZmFpbHVyZURldGFpbE1lc3NhZ2UgPSBuYW1lc3BhY2U7Ci0KLSAgICAgICAgICBjdHguY2FuY2VsUHJvY2Vzc2luZygpOwotICAgICAgICB9Ci0gICAgICB9IC8vID8/PyBzaG91bGQgd2UgZG8gc29tZXRoaW5nIG90aGVyd2lzZSAgCi0gICAgfQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5Qb3J0LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoUG9ydCBwb3J0LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAocG9ydCAhPSBudWxsKQotICAgIHsKLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IHBvcnQuZ2V0QmluZGluZygpOwotICAgICAgaWYgKGJpbmRpbmcgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgY2hlY2tOYW1lc3BhY2UoYmluZGluZy5nZXRRTmFtZSgpLCBjdHgpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuQmluZGluZywgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEJpbmRpbmcgYmluZGluZywgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgaWYgKGJpbmRpbmcgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBQb3J0VHlwZSBwVHlwZSA9IGJpbmRpbmcuZ2V0UG9ydFR5cGUoKTsKLSAgICAgIGlmIChwVHlwZSAhPSBudWxsKQotICAgICAgewotICAgICAgICBjaGVja05hbWVzcGFjZShwVHlwZS5nZXRRTmFtZSgpLCBjdHgpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuT3BlcmF0aW9uLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgT3BlcmF0aW9uIG9wZXJhdGlvbiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGlmIChvcGVyYXRpb24gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJbnB1dCBpbnB1dCA9IG9wZXJhdGlvbi5nZXRJbnB1dCgpOwotICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaW5wdXQuZ2V0TWVzc2FnZSgpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGNoZWNrTmFtZXNwYWNlKGlucHV0LmdldE1lc3NhZ2UoKS5nZXRRTmFtZSgpLCBjdHgpOwotICAgICAgfQotCi0gICAgICBPdXRwdXQgb3V0cHV0ID0gb3BlcmF0aW9uLmdldE91dHB1dCgpOwotICAgICAgaWYgKG91dHB1dCAhPSBudWxsICYmIG91dHB1dC5nZXRNZXNzYWdlKCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgY2hlY2tOYW1lc3BhY2Uob3V0cHV0LmdldE1lc3NhZ2UoKS5nZXRRTmFtZSgpLCBjdHgpOwotICAgICAgfQotCi0gICAgICBNYXAgZmF1bHRzID0gb3BlcmF0aW9uLmdldEZhdWx0cygpOwotICAgICAgZm9yIChJdGVyYXRvciBpdGVyID0gZmF1bHRzLnZhbHVlcygpLml0ZXJhdG9yKCk7IGl0ZXIuaGFzTmV4dCgpOykKLSAgICAgIHsKLSAgICAgICAgRmF1bHQgZmF1bHQgPSAoRmF1bHQpIGl0ZXIubmV4dCgpOwotCi0gICAgICAgIGlmIChmYXVsdC5nZXRNZXNzYWdlKCkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIGNoZWNrTmFtZXNwYWNlKGZhdWx0LmdldE1lc3NhZ2UoKS5nZXRRTmFtZSgpLCBjdHgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5NZXNzYWdlLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgLyogUkVNT1ZFOiBUaGlzIGlzIGFscmVhZHkgZG9uZSBpbiBXU0kyNDE3Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KE1lc3NhZ2UgbWVzc2FnZSwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KSB7Ci0gICBpZiAobWVzc2FnZSAhPSBudWxsKSB7Ci0gICAgIE1hcCBwYXJ0cyA9IG1lc3NhZ2UuZ2V0UGFydHMoKTsKLSAgICAgZm9yIChJdGVyYXRvciBpdGVyID0gcGFydHMudmFsdWVzKCkuaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7Ci0gICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpIGl0ZXIubmV4dCgpOwotICAgICAgIAotICAgICAgIGNoZWNrTmFtZXNwYWNlKHBhcnQuZ2V0RWxlbWVudE5hbWUoKSwgY3R4KTsgICAgICAgICAgICAgICAgCi0gICAgICAgY2hlY2tOYW1lc3BhY2UocGFydC5nZXRUeXBlTmFtZSgpLCBjdHgpOwotICAgICB9Ci0gICB9Ci0gIH0KLSAgKi8KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICAvLyBHZXQgdGhlIGRlZmluaXRpb24gZnJvbSB0aGUgZW50cnkgY29udGV4dAotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9Ci0gICAgICAoRGVmaW5pdGlvbikgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIC8vIGdldCBsaXN0IG9mIG5hbWVzcGFjZXMgaW1wb3J0ZWQgYW5kIGRlZmluZWQgaW4gdGhlIGRlZmluaXRpb24KLSAgICBMaXN0IG5hbWVzcGFjZXMgPSB0aGlzLnZhbGlkYXRvci5nZXRXU0RMVGFyZ2V0TmFtZXNwYWNlTGlzdChkZWZpbml0aW9uKTsKLQotICAgIC8vIFJFTU9WRToKLSAgICAvL01hcCBuYW1lc3BhY2VzID0gZGVmaW5pdGlvbi5nZXROYW1lc3BhY2VzKCk7Ci0KLSAgICAvLyB0cmF2ZXJzZSBkZWZpbml0aW9uIHRvIGNoZWNrIG5hbWVzcGFjZXMKLSAgICBNYXAgcGFyYW1zID0gbmV3IEhhc2hNYXAoKTsKLSAgICBwYXJhbXMucHV0KE5TX0xJU1RfS0VZLCBuYW1lc3BhY2VzKTsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICAvLyBWaXNpdG9yQWRhcHRvci5hZGFwdCh0aGlzKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRPcGVyYXRpb24odHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0QmluZGluZyh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRNZXNzYWdlKHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFBvcnQodHJ1ZSk7Ci0KLSAgICB0cmF2ZXJzYWwuaWdub3JlSW1wb3J0KCk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwudHJhdmVyc2UoZGVmaW5pdGlvbiwgcGFyYW1zKTsKLQotICAgIGlmIChyZXN1bHQuZXF1YWxzKEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEKSkKLSAgICB7Ci0gICAgICB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGZhaWx1cmVEZXRhaWxNZXNzYWdlLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI0MTcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI0MTcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc0M2Q0OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyNDE3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0OwotCi0KLS8qKgotICogQlAyNDE3LiAKLSAqICAgPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6ZGVmaW5pdGlvbnM8L2NvbnRleHQ+Ci0gKiAgIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5FdmVyeSBRTmFtZSBpbiB0aGUgV1NETCBkb2N1bWVudCBhbmQgaXRzIGltcG9ydHMgYW5kIHRoYXQgCi0gKiAgICAgIGlzIHJlZmVycmluZyB0byBhIHNjaGVtYSBjb21wb25lbnQsIHVzZXMgdGhlIG5hbWVzcGFjZSBkZWZpbmVkIGluIHRoZSB0YXJnZXROYW1lc3BhY2UgCi0gKiAgICAgIGF0dHJpYnV0ZSBvbiB0aGUgeHM6c2NoZW1hIGVsZW1lbnQsIG9yIGEgbmFtZXNwYWNlIGRlZmluZWQgaW4gdGhlIG5hbWVzcGFjZSBhdHRyaWJ1dGUgCi0gKiAgICAgIG9uIGFuIHhzOmltcG9ydCBlbGVtZW50IHdpdGhpbiB0aGUgeHM6c2NoZW1hIGVsZW1lbnQuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjQxNyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDI0MTcoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9yTGlzdCA9IG5ldyBFcnJvckxpc3QoKTsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5TX0xJU1RfS0VZID0gIm5hbWVzcGFjZXMiOwotCi0gIC8qKgotICAgKiBDaGVja3Mgd2hldGhlciB0aGUgbmFtZXNwYWNlIGlzIGRlZmluZWQgb3IgaW1wb3J0ZWQgaW4gdGhlIGRlZmluaXRpb24uCi0gICAqIEBwYXJhbSBxbmFtZQotICAgKiBAcGFyYW0gY3R4Ci0gICAqLwotICBwcml2YXRlIHZvaWQgY2hlY2tOYW1lc3BhY2UoUU5hbWUgcW5hbWUsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGlmIChxbmFtZSAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBxbmFtZS5nZXROYW1lc3BhY2VVUkkoKTsKLQotICAgICAgaWYgKG5hbWVzcGFjZSAhPSBudWxsKQotICAgICAgewotICAgICAgICBMaXN0IG5hbWVzcGFjZUxpc3QgPSAoTGlzdCkgY3R4LmdldFBhcmFtZXRlcihOU19MSVNUX0tFWSk7Ci0KLSAgICAgICAgaWYgKChuYW1lc3BhY2VMaXN0ICE9IG51bGwpICYmICFuYW1lc3BhY2VMaXN0LmNvbnRhaW5zKG5hbWVzcGFjZSkpCi0gICAgICAgIHsKLSAgICAgICAgICBlcnJvckxpc3QuYWRkKHFuYW1lKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5NZXNzYWdlLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoTWVzc2FnZSBtZXNzYWdlLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAobWVzc2FnZSAhPSBudWxsKQotICAgIHsKLSAgICAgIE1hcCBwYXJ0cyA9IG1lc3NhZ2UuZ2V0UGFydHMoKTsKLQotICAgICAgZm9yIChJdGVyYXRvciBpdGVyID0gcGFydHMudmFsdWVzKCkuaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KQotICAgICAgewotICAgICAgICBQYXJ0IHBhcnQgPSAoUGFydCkgaXRlci5uZXh0KCk7Ci0KLSAgICAgICAgY2hlY2tOYW1lc3BhY2UocGFydC5nZXRFbGVtZW50TmFtZSgpLCBjdHgpOwotICAgICAgICBjaGVja05hbWVzcGFjZShwYXJ0LmdldFR5cGVOYW1lKCksIGN0eCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgIC8vIEdldCB0aGUgZGVmaW5pdGlvbiBmcm9tIHRoZSBlbnRyeSBjb250ZXh0Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0KLSAgICAgIChEZWZpbml0aW9uKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgLy8gR2V0IGEgbGlzdCBvZiBhbGwgc2NoZW1hIHRhcmdldE5hbWVzcGFjZXMKLSAgICBMaXN0IHRuc0xpc3QgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIGlmICgodG5zTGlzdCA9IHRoaXMudmFsaWRhdG9yLmdldFNjaGVtYU5hbWVzcGFjZUxpc3QoZGVmaW5pdGlvbikpID09IG51bGwpCi0gICAgICAgIHRuc0xpc3QgPSBuZXcgVmVjdG9yKCk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKFdTSUV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIFRoaXMgZXhjZXB0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHNjaGVtYSBkZWZpbml0aW9uIGhhZCBhIHByb2JsZW0KLSAgICAgIHRuc0xpc3QgPSBuZXcgVmVjdG9yKCk7Ci0gICAgfQotCi0gICAgLy8gQWx3YXlzIGFkZCBYTUwgc2NoZW1hIG5hbWVzcGFjZSB0byBjb3ZlciBidWlsdC1pbiB0eXBlcwotICAgIHRuc0xpc3QuYWRkKFdTSUNvbnN0YW50cy5OU19VUklfWFNEKTsKLQotICAgIC8vIFRyYXZlcnNlIGRlZmluaXRpb24gdG8gY2hlY2sgc2NoZW1hIG5hbWVzcGFjZXMKLSAgICBNYXAgcGFyYW1zID0gbmV3IEhhc2hNYXAoKTsKLSAgICBwYXJhbXMucHV0KE5TX0xJU1RfS0VZLCB0bnNMaXN0KTsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRNZXNzYWdlKHRydWUpOwotCi0gICAgdHJhdmVyc2FsLmlnbm9yZUltcG9ydCgpOwotICAgIHRyYXZlcnNhbC5pZ25vcmVSZWZlcmVuY2VzKCk7Ci0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKGRlZmluaXRpb24sIHBhcmFtcyk7Ci0KLSAgICAvLyBJZiB0aGVyZSB3ZXJlIG5vIGVycm9ycywgdGhlbiB0aGUgYXNzZXJ0aW9uIHBhc3NlZAotICAgIGlmIChlcnJvckxpc3QuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgIH0KLQotICAgIC8vIE90aGVyd2lzZSBpdCBmYWlsZWQgLyBjcmVhdGUgdGhlIGZhaWx1cmUgZGV0YWlsIHVzaW5nIHRoZSBRTmFtZXMgdGhhdCB3ZXJlIGluIGVycm9yCi0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEOwotICAgICAgZmFpbHVyZURldGFpbCA9IHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoZXJyb3JMaXN0LnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjcwMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjcwMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDY0ZTE0Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI3MDAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlV0aWxzOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLQotLyoqCi0gICogQlAyNzAwLgotICAqICAgPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6ZGVmaW5pdGlvbnMgZWxlbWVudCB3aXRoaW4gYSBXU0RMIGRvY3VtZW50LjwvY29udGV4dD4KLSAgKiAgIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgd3NkbDpkZWZpbml0aW9ucyBpcyBhIHdlbGwtZm9ybWVkIFhNTCAxLjAgZG9jdW1lbnQuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAgKi8KLXB1YmxpYyBjbGFzcyBCUDI3MDAgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDI3MDAoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy9TdHJpbmcgd3NkbFVSSSA9IGVudHJ5Q29udGV4dC5nZXRXU0RMRG9jdW1lbnQoKS5nZXREZWZpbml0aW9ucygpLmdldERvY3VtZW50QmFzZVVSSSgpOyAgCi0gICAgICAvLyBURU1QOiBOZWVkIHRvIGRlZmluZSBhIGJldHRlciB3YXkgdG8gZ2V0IHRoZSBXU0RMIFVSSQotICAgICAgU3RyaW5nIHdzZGxVUkkgPSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRSZWZlcmVuY2VJRCgpOwotICAgICAgLy8gbm9uLXZhbGlkYXRpbmcgcGFyc2UKLSAgICAgIHZhbGlkYXRvci5wYXJzZVhNTERvY3VtZW50VVJMKHdzZGxVUkksIG51bGwpOwotICAgIH0KLQotICAgIGNhdGNoIChXU0lFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBpZiAoZS5nZXRUYXJnZXRFeGNlcHRpb24oKSBpbnN0YW5jZW9mIFNBWEV4Y2VwdGlvbikKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICAgIGZhaWx1cmVEZXRhaWwgPQotICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICAgICAgICBVdGlscy5nZXRFeGNlcHRpb25EZXRhaWxzKGUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCkpLAotICAgICAgICAgICAgZW50cnlDb250ZXh0KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0KLSAgICAgICAgdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChVdGlscy5nZXRFeGNlcHRpb25EZXRhaWxzKGUpLCBlbnRyeUNvbnRleHQpOwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI3MDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI3MDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI0YzFmOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyNzAxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5Bc3NlcnRpb25GYWlsRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotCi0KLS8qKgotICAqIEJQMjcwMS4KLSAgKiAgIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmRlZmluaXRpb25zIGVsZW1lbnQgd2l0aGluIGEgV1NETCBkb2N1bWVudC48L2NvbnRleHQ+Ci0gICogICA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIHdzZGw6ZGVmaW5pdGlvbnMgbmFtZXNwYWNlIGhhcyB2YWx1ZTogaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8uPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAgKi8KLXB1YmxpYyBjbGFzcyBCUDI3MDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDI3MDEoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIERlZmluaXRpb24gZGVmID0gKERlZmluaXRpb24pIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICAvKgotICAgIGlmIChkZWYgIT0gbnVsbCkgewotICAgIAlRTmFtZSBxbmFtZSA9IGRlZi5nZXRRTmFtZSgpOwotICAgIAkJCQkKLSAgICAJaWYgKHFuYW1lICE9IG51bGwpIHsJCi0gICAgCQkvL2lmIChkZWYuZ2V0TmFtZXNwYWNlKCIiKS5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMKSB7Ci0gICAgCQlpZiAocW5hbWUuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19VUklfV1NETCkpIHsKLSAgICAJCQlyZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLSAgICAJCX0KLSAgICAJfQotICAgIH0KLSAgICAqLwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgU3RyaW5nIHNjaGVtYVVzZWQgPSB0aGlzLnZhbGlkYXRvci5nZXRTY2hlbWFVc2VkKGRlZik7Ci0gICAgICBpZiAoc2NoZW1hVXNlZC5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0RMKSkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgY2F0Y2ggKEFzc2VydGlvbkZhaWxFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIC8vQUREOiBmYWlsdXJlIGRlc2NyaXB0aW9uPwotICAgIH0KLQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI3MDMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI3MDMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UyNTY1MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlAyNzAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2VzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLQotCi0vKioKLSAqIEJQMjcwMy4KLSAqICAgPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIGRlc2NyaXB0aW9uIHdpdGhpbiBhIFdTREwgZG9jdW1lbnQsIGlmIGl0IHVzZXMgdGhlIFdTREwgbmFtZXNwYWNlPC9jb250ZXh0PgotICogICA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIGRlZmluaXRpb24gY29uZm9ybXMgdG8gdGhlIFdTREwgc2NoZW1hIGxvY2F0ZWQgYXQgaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8yMDAzLTAyLTExLnhzZDwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBCUDI3MDMgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDI3MDMoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIG5vdGUgdGhhdCB0aGlzIGFzc2VydGlvbiBpcyByZWR1bmRhbnQsIHNpbmNlIHRoZSBiYXNlIHdzZGwgdmFsaWRhdG9yIGNoZWNrcyB0aGlzIGFscmVhZHkuCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjgwMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQMjgwMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjYwMmEyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDI4MDMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLWltcG9ydCBqYXZhLm5ldC5VUkk7Ci0KLWltcG9ydCBqYXZheC53c2RsLkltcG9ydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbkZhaWxFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFzc2VydGlvbk5vdEFwcGxpY2FibGVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci0KLQotLyoqCi0gKiBCUDI4MDMKLSAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmltcG9ydCBlbGVtZW50PC9jb250ZXh0PgotICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSAibmFtZXNwYWNlIiBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIGZvciB0aGUgd3NkbDppbXBvcnQgZWxlbWVudCwgYW5kIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBpcyBub3QgYSByZWxhdGl2ZSBVUkkuPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSAqLwotcHVibGljIGNsYXNzIEJQMjgwMyBleHRlbmRzIEFzc2VydGlvblByb2Nlc3MKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIEJQMjgwMyhXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gICAgdGhpcy52YWxpZGF0b3IgPSBpbXBsOwotICB9Ci0KLSAgLyogVmFsaWRhdGVzIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCB2YWxpZGF0ZSgKLSAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIC8vIEdldHRpbmcgd3NkbDppbXBvcnQKLSAgICBJbXBvcnQgaW0gPSAoSW1wb3J0KSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gdGhlICJuYW1lc3BhY2UiIGF0dHJpYnV0ZSBpbiB0aGUgaW1wb3J0LAotICAgICAgLy8gdGhlIGFzc2VydGlvbiBpcyBub3QgYXBwbGljYWJsZQotICAgICAgaWYgKGltLmdldE5hbWVzcGFjZVVSSSgpID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25Ob3RBcHBsaWNhYmxlRXhjZXB0aW9uKCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIElmIGEgbmFtZXNwYWNlIFVSSSBpcyByZWxhdGl2ZSBvciBpbnZhbGlkLCB0aGUgYXNzZXJ0aW9uIGZhaWxlZAotICAgICAgVVJJIHVyaSA9IG5ldyBVUkkoaW0uZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgICAgaWYgKCF1cmkuaXNBYnNvbHV0ZSgpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigKLSAgICAgICAgICBpbS5nZXROYW1lc3BhY2VVUkkoKSArICIgaXMgcmVsYXRpdmUgVVJJLiIpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoQXNzZXJ0aW9uTm90QXBwbGljYWJsZUV4Y2VwdGlvbiBhbmFlKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRDsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgZS5nZXRNZXNzYWdlKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQNDIwMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQNDIwMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWMwNjViLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDQyMDAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3NWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkVycm9yTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5BdHRyOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotCi0vKioKLSAqIEJQNDIwMC4gCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpkZWZpbml0aW9ucyB0aGF0IGNvbnRhaW5zIGEgd3NkbCBleHRlbnNpb24gZWxlbWVudCBvciBhdHRyaWJ1dGUgZnJvbSBhIG5hbWVzcGFjZSBvdGhlciB0aGFuICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIi48L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+Q29udGFpbmVkIFdTREwgZXh0ZW5zaW9uIGVsZW1lbnRzIHRoYXQgZG8gbm90IGJlbG9uZyB0byB0aGUgImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIG5hbWVzcGFjZXMgbWF5IHJlcXVpcmUgb3V0IG9mIGJhbmQgbmVnb3RpYXRpb24uPC9hc3NlcnRpb25EZXNjcmlwdGlvbj4KLSovCi1wdWJsaWMgY2xhc3MgQlA0MjAwIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3IgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0gIHByaXZhdGUgRXJyb3JMaXN0IGVycm9yTGlzdCA9IG5ldyBFcnJvckxpc3QoKTsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlA0MjAwKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChFeHRlbnNpYmlsaXR5RWxlbWVudCBvYmosIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgLy8gSWYgYSBjaGlsZCBlbGVtZW50IG9mIHdzZGw6dHlwZXMgaXMgZnJvbSBhIG5hbWVzcGFjZSBvdGhlciB0aGFuCi0gICAgLy8gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBUeXBlcykKLSAgICB7Ci0gICAgICAvL2lmICghb2JqLmdldEVsZW1lbnRUeXBlKCkuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKAotICAgICAgLy8gIFdTSUNvbnN0YW50cy5OU19VUklfWFNEKSkKLSAgICAgIC8vewotICAgICAgLy8gIEFkZCBlbGVtZW50IG5hbWUgdG8gZXJyb3IgbGlzdAotICAgICAgLy8gIGVycm9yTGlzdC5hZGQob2JqLmdldEVsZW1lbnRUeXBlKCkpOwotICAgICAgLy99Ci0gICAgfQotICAgIC8vIG9yIGFueSBvdGhlciBleHQgZWxlbWVudCBjb21pbmcgZnJvbSBhIG5hbWVzcGFjZSBvdGhlciB0aGFuCi0gICAgLy8gImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0gICAgZWxzZSBpZiAoIW9iai5nZXRFbGVtZW50VHlwZSgpLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscyhXU0lDb25zdGFudHMuTlNfVVJJX1dTRExfU09BUCkKLSAgICAJICAmJiAhb2JqLmdldEVsZW1lbnRUeXBlKCkuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19VUklfV1NETCkpCi0gICAgewotICAgICAgLy8gQWRkIGVsZW1lbnQgbmFtZSB0byBlcnJvciBsaXN0Ci0gICAgICBlcnJvckxpc3QuYWRkKG9iai5nZXRFbGVtZW50VHlwZSgpKTsgCi0gICAgfQotICB9Ci0KLSAgIC8qKgotICAqICAobm9uLUphdmFkb2MpCi0gICogIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBHZXQgdGhlIGRlZmluaXRpb24gZnJvbSB0aGUgZW50cnkgY29udGV4dAotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9Ci0gICAgICAoRGVmaW5pdGlvbikgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKTsKLQotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLQotICAgIHRyYXZlcnNhbC52aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdEVsZW1lbnQodHJ1ZSk7Ci0KLSAgICB0cmF2ZXJzYWwuaWdub3JlSW1wb3J0KCk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwudHJhdmVyc2UoZGVmaW5pdGlvbik7Ci0KLSAgICB0cnkKLQl7Ci0gICAgICAvLyBnZXR0aW5nIFdTREwgZG9jdW1lbnQuCi0gICAgICBEb2N1bWVudCBkb2MgPSB2YWxpZGF0b3IucGFyc2VYTUxEb2N1bWVudFVSTChkZWZpbml0aW9uLmdldERvY3VtZW50QmFzZVVSSSgpLCBudWxsKTsKLSAgICAgIGlmIChkb2MgIT0gbnVsbCkKLSAgICAgIHsgICAKLSAgICAgICAgY2hlY2tFbGVtZW50KGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSk7Ci0KLSAgICAgICAgaWYgKGVycm9yTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX05PVF9BUFBMSUNBQkxFOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGZhaWx1cmVEZXRhaWwgPSB2YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICAgICAgICB0ZXN0QXNzZXJ0aW9uLmdldERldGFpbERlc2NyaXB0aW9uKCkgKyAiXG5cbiIgKyBlcnJvckxpc3QudG9TdHJpbmcoKSwKLSAgICAgICAgICBlbnRyeUNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICB9Ci0JfSAgIAotICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICB7Ci0JfQotICAgIC8vIFJldHVybiBhc3NlcnRpb24gcmVzdWx0Ci0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQoCi0gICAgICB0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIG9uIHdzZGwgZWxlbWVudHMgcmVjdXJzaXZlbHkgd2hldGhlciB0aGV5IGNvbnRhaW4gZXh0ZW5zaW9uIGF0dHJpYnV0ZXMuCi0gICAqIEBwYXJhbSBlbGVtIEVsZW1lbnQuCi0gICAqLwotICBwcml2YXRlIHZvaWQgY2hlY2tFbGVtZW50KEVsZW1lbnQgZWxlbSkKLSAgewotICAgIHdoaWxlIChlbGVtICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGVsZW1OUyA9IGVsZW0uZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICBOYW1lZE5vZGVNYXAgYXR0cnMgPSBlbGVtLmdldEF0dHJpYnV0ZXMoKTsKLSAgICAgIGlmIChhdHRycyAhPSBudWxsKQotICAgICAgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dHJzLmdldExlbmd0aCgpOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICBBdHRyIGF0dHIgPSAoQXR0cikgYXR0cnMuaXRlbShpKTsKLSAgICAgICAgICBTdHJpbmcgYXR0ck5TID0gYXR0ci5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgICAgICBpZiAoYXR0ck5TICE9IG51bGwKLSAgICAgICAgICAgICYmICFhdHRyTlMuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19VUklfWE1MTlMpCi0gICAgICAgICAgICAmJiAhYXR0ck5TLmVxdWFscyhXU0lDb25zdGFudHMuTlNfVVJJX1dTREwpCi0JCQkmJiAhYXR0ck5TLmVxdWFscyhXU0lDb25zdGFudHMuTlNfVVJJX1dTRExfU09BUCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgZXJyb3JMaXN0LmFkZCgiRXh0ZW5zaWJpbGl0eSBhdHRyaWJ1dGUgIiArIGF0dHIuZ2V0TmFtZSgpCi0gICAgICAgICAgICAgICsgImZvciB0aGUgIiArIGVsZW0uZ2V0Tm9kZU5hbWUoKSArICIgZWxlbWVudCBpcyBmb3VuZC4iKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKCFlbGVtTlMuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19VUklfWFNEKSkKLSAgICAgIHsKLSAgICAgICAgY2hlY2tFbGVtZW50KFhNTFV0aWxzLmdldEZpcnN0Q2hpbGQoZWxlbSkpOwotICAgICAgfQotICAgICAgZWxlbSA9IFhNTFV0aWxzLmdldE5leHRTaWJsaW5nKGVsZW0pOwotICAgIH0KLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDQyMDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9CUDQyMDEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFmMTMxZi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlA0MjAxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRXJyb3JMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dDsKLQotCi0vKioKLSogQlA0MjAxLiAKLSogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6aW1wb3J0IGVsZW1lbnQsIHdoZXJlIHRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUgb3IgdGhlIG5hbWVzcGFjZSBhdHRyaWJ1dGUgaGFzIGEgdmFsdWUgdGhhdCBpcyBhIHJlbGF0aXZlIFVSSSwgb3IgYSBmb3Igc29hcDphZGRyZXNzIGVsZW1lbnQgd2hlcmUgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZSBpcyBhIHJlbGF0aXZlIFVSSS48L2NvbnRleHQ+Ci0qIDxhc3NlcnRpb25EZXNjcmlwdGlvbj5UaGUgdXNlIG9mIGEgcmVsYXRpdmUgVVJJIGFzIHRoZSB2YWx1ZSBmb3IgYSB3c2RsOmltcG9ydCBsb2NhdGlvbiBvciBuYW1lc3BhY2UgYXR0cmlidXRlLCBvciBmb3IgYSBzb2FwOmFkZHJlc3MgbG9jYXRpb24gYXR0cmlidXRlIG1heSByZXF1aXJlIG91dCBvZiBiYW5kIGNvb3JkaW5hdGlvbi48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotKi8KLXB1YmxpYyBjbGFzcyBCUDQyMDEgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvcgotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgQlA0MjAxKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLSAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JMaXN0ID0gbmV3IEVycm9yTGlzdCgpOwotCi0gIC8qKiAKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoSW1wb3J0LCBPYmplY3QsIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoSW1wb3J0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgaWYob2JqICE9IG51bGwpCi0gICAgewotICAgICAgaWYoaXNSZWxhdGl2ZVVSSShvYmouZ2V0TmFtZXNwYWNlVVJJKCkpIHx8IAotICAgICAgICAgIGlzUmVsYXRpdmVVUkkob2JqLmdldExvY2F0aW9uVVJJKCkpKQotICAgICAgewotICAgICAgICBlcnJvckxpc3QuYWRkKG9iai5nZXROYW1lc3BhY2VVUkkoKSwgb2JqLmdldExvY2F0aW9uVVJJKCkpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKiAKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoUG9ydCwgT2JqZWN0LCBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFBvcnQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZihvYmogIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IG9iai5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgIE9iamVjdCBlID0gKE9iamVjdCkgaXQubmV4dCgpOwotICAgICAgICAgLy8gZm9yIGVhY2ggU09BUEFkZHJlc3MgZWxlbWVudHMgY2hlY2sgTG9jYXRpb25VUkkgCi0gICAgICAgICBpZihlIGluc3RhbmNlb2YgU09BUEFkZHJlc3MpIHsKLSAgICAgICAgICAgaWYoaXNSZWxhdGl2ZVVSSSgoKFNPQVBBZGRyZXNzKSBlKS5nZXRMb2NhdGlvblVSSSgpKSkKLSAgICAgICAgICAgewotICAgICAgICAgICAgIGVycm9yTGlzdC5hZGQoKChTT0FQQWRkcmVzcykgZSkuZ2V0RWxlbWVudFR5cGUoKSArIAotICAgICAgICAgICAgICAgICAiOiIgKyAoKFNPQVBBZGRyZXNzKSBlKS5nZXRMb2NhdGlvblVSSSgpKTsKLSAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiAgKG5vbi1KYXZhZG9jKQotICAgKiAgQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbC5Bc3NlcnRpb25Qcm9jZXNzI3ZhbGlkYXRlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24sIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5FbnRyeUNvbnRleHQpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgIFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbiwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgLy8gR2V0IHRoZSBkZWZpbml0aW9uIGZyb20gdGhlIGVudHJ5IGNvbnRleHQKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPQotICAgICAgKERlZmluaXRpb24pIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0SW1wb3J0KHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFBvcnQodHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwudHJhdmVyc2UoZGVmaW5pdGlvbik7Ci0KLSAgICBpZiAoZXJyb3JMaXN0LmlzRW1wdHkoKSkgCi0gICAgewotICAgICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIAotICAgICAgICAgICAgIEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEUsIChTdHJpbmcpIG51bGwpOwotICAgIH0KLSAgICAKLSAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCh0ZXN0QXNzZXJ0aW9uLmdldEZhaWx1cmVNZXNzYWdlKCkgKyAKLSAgICAgICAgIlxuXG4iICsgZXJyb3JMaXN0LnRvU3RyaW5nKCksIGVudHJ5Q29udGV4dCk7Ci0gICAgLy8gUmV0dXJuIGFzc2VydGlvbiByZXN1bHQKLSAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICB9Ci0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgVVJJIGlzIHJlbGF0aXZlIAotICAgKiBAcGFyYW0gcyAtIFVSSQotICAgKiBAcmV0dXJuIHRydWUgLSBpZiBVUkkgaXMgcmVsYXRpdmUsIGZhbHNlIC0gaW4gb3RoZXIgY2FzZSAgCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gaXNSZWxhdGl2ZVVSSShTdHJpbmcgcykKLSAgewotICAgIGlmKHMgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZihuZXcgamF2YS5uZXQuVVJJKHMpLmlzQWJzb2x1dGUoKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0gY2F0Y2ggKFVSSVN5bnRheEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlA0MjAyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvQlA0MjAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxYTU0ODIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL0JQNDIwMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuc2NoZW1hLlhNTFNjaGVtYVByb2Nlc3NvcjsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLQotLyoqCi0gKiBCUDQyMDIuIAotICogPGNvbnRleHQ+Rm9yIGFuIFhNTCBzY2hlbWEgZGVmaW5pdGlvbiBkZWZpbmVkIGluIHRoZSB3c2RsOnR5cGVzIGVsZW1lbnQsIG9yIGltcG9ydGVkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgYnkgYSBzY2hlbWEgZGVmaW5pdGlvbiBkZWZpbmVkIGluIHRoZSB3c2RsOnR5cGVzIGVsZW1lbnQsIHdoaWNoIGNvbnRhaW5zIGFueSBzY2hlbWEgYW5ub3RhdGlvbiBlbGVtZW50cy48L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+QW4gWE1MIHNjaGVtYSBkZWZpbml0aW9uIGRlZmluZWQgaW4gdGhlIHdzZGw6dHlwZXMgZWxlbWVudCwgb3IgaW1wb3J0ZWQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBieSBhIHNjaGVtYSBkZWZpbml0aW9uIGRlZmluZWQgaW4gdGhlIHdzZGw6dHlwZXMgZWxlbWVudCwgbWF5IHVzZSBzY2hlbWEgYW5ub3RhdGlvbiBlbGVtZW50cyBhcyBhbiBleHRlbnNpYmlsaXR5IG1lY2hhbmlzbS48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi0gcHVibGljIGNsYXNzIEJQNDIwMiBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnIAotIHsKLSAgIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBCUDQyMDIoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBTk5PVEFUSU9OX0tFWSA9ICJhbm5vdGF0aW9uIjsKLSAgIAotICAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JMaXN0ID0gbmV3IEVycm9yTGlzdCgpOwotICAgcHJpdmF0ZSBBbm5vdGF0aW9uUHJvY2Vzc29yIHByb2Nlc3NvcjsKLQotICAgLyoqIAotICAgICogKG5vbi1KYXZhZG9jKQotICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KE1lc3NhZ2UsIE9iamVjdCwgV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAgKi8KLSAgIHB1YmxpYyB2b2lkIHZpc2l0KEV4dGVuc2liaWxpdHlFbGVtZW50IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgewotICAgICBpZigob2JqICE9IG51bGwpICYmIChvYmogaW5zdGFuY2VvZiBTY2hlbWEpKQotICAgICB7Ci0gICAgCSBTY2hlbWEgZWwgPSAoU2NoZW1hKSBvYmo7Ci0gICAgICAgdHJ5IHsKLSAgICAgICAgIHByb2Nlc3Nvci5wcm9jZXNzQWxsU2NoZW1hKGVsLmdldEVsZW1lbnQoKSk7Ci0gICAgICAgfSBjYXRjaCAoV1NJRXhjZXB0aW9uIGUpIHt9Ci0gICAgIH0KLSAgIH0KLQotICAgLyoqCi0gICAgKiAgKG5vbi1KYXZhZG9jKQotICAgICogIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwuQXNzZXJ0aW9uUHJvY2VzcyN2YWxpZGF0ZShvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgICovCi0gICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IHZhbGlkYXRlKAotICAgICBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24sCi0gICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgIHsKLSAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQ7Ci0KLSAgICAgLy8gR2V0IHRoZSB0eXBlcyBmcm9tIHRoZSBlbnRyeSBjb250ZXh0Ci0gICAgIFR5cGVzIHR5cGVzID0KLSAgICAgICAoVHlwZXMpIGVudHJ5Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5RGV0YWlsKCk7Ci0gICAgIAotICAgICBwcm9jZXNzb3IgPSBuZXcgQW5ub3RhdGlvblByb2Nlc3NvcigKLSAgICAgICAgICAgZW50cnlDb250ZXh0LmdldFdTRExEb2N1bWVudCgpLmdldERlZmluaXRpb25zKCkuZ2V0RG9jdW1lbnRCYXNlVVJJKCkpOwotICAgICAKLSAgICAgV1NETFRyYXZlcnNhbCB0cmF2ZXJzYWwgPSBuZXcgV1NETFRyYXZlcnNhbCgpOwotICAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICAgdHJhdmVyc2FsLnZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQodHJ1ZSk7Ci0gICAgIHRyYXZlcnNhbC5pZ25vcmVSZWZlcmVuY2VzKCk7Ci0gICAgIHRyYXZlcnNhbC50cmF2ZXJzZSh0eXBlcyk7Ci0gICAgIAotICAgICBpZiAoZXJyb3JMaXN0LmlzRW1wdHkoKSkgCi0gICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgCi0gICAgICAgICAgICAgIEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEUsIChTdHJpbmcpIG51bGwpOwotICAgICB9Ci0gICAgIAotICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbCh0ZXN0QXNzZXJ0aW9uLmdldEZhaWx1cmVNZXNzYWdlKCkgKyAKLSAgICAgICAgICJcblxuIiArIGVycm9yTGlzdC50b1N0cmluZygpLCBlbnRyeUNvbnRleHQpOwotICAgICAvLyBSZXR1cm4gYXNzZXJ0aW9uIHJlc3VsdAotICAgICByZXR1cm4gdmFsaWRhdG9yLmNyZWF0ZUFzc2VydGlvblJlc3VsdCh0ZXN0QXNzZXJ0aW9uLCByZXN1bHQsIGZhaWx1cmVEZXRhaWwpOwotICAgfQotICAgCi0gICAvKioKLSAgICAqIENsYXNzIGZvciBwYXJzZSBzY2hlbWEgYW5kIHNlYXJjaCBhbm5vdGF0aW9uIGVsZW1lbnRzIAotICAgICovCi0gICBjbGFzcyBBbm5vdGF0aW9uUHJvY2Vzc29yIGV4dGVuZHMgWE1MU2NoZW1hUHJvY2Vzc29yCi0gICB7Ci0gICAgIHB1YmxpYyBBbm5vdGF0aW9uUHJvY2Vzc29yKFN0cmluZyBjb250ZXh0KQotICAgICB7Ci0gICAgICAgc3VwZXIoY29udGV4dCwgZmFsc2UpOwotICAgICB9Ci0KLSAgICAgcHJvdGVjdGVkIHZvaWQgcHJvY2Vzc1NjaGVtYShFbGVtZW50IGVsZW1lbnQpCi0gICAgIHsKLSAgICAgICBjaGVja0ZvckFubm90YXRpb24oZWxlbWVudCk7Ci0gICAgIH0KLSAgICAgCi0gICAgIHByaXZhdGUgdm9pZCBjaGVja0ZvckFubm90YXRpb24oTm9kZSBub2RlKSAKLSAgICAgewotICAgICAgIGlmKChub2RlLmdldExvY2FsTmFtZSgpICE9IG51bGwpICYmIChub2RlLmdldExvY2FsTmFtZSgpLmVxdWFscyhBTk5PVEFUSU9OX0tFWSkpKSB7Ci0gICAgICAgICBlcnJvckxpc3QuYWRkKG5vZGUudG9TdHJpbmcoKSk7Ci0gICAgICAgfQotICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbm9kZS5nZXRDaGlsZE5vZGVzKCkuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICAgICB7Ci0gICAgICAgICBjaGVja0ZvckFubm90YXRpb24obm9kZS5nZXRDaGlsZE5vZGVzKCkuaXRlbShpKSk7Ci0gICAgICAgfQotICAgICB9Ci0gICB9Ci0gfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9TU0JQMjIwOS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1NTQlAyMjA5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGRkMGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1NTQlAyMjA5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0KLS8qKgotICogU1NCUDIyMDkKLSAqCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nIGVsZW1lbnQ8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+VGhlIHdzZGw6YmluZGluZyBiaW5kcyBldmVyeSB3c2RsOnBhcnQgb2YgYSB3c2RsOm1lc3NhZ2UgaW4gdGhlIHdzZGw6cG9ydFR5cGUgdG8gd2hpY2ggaXQgcmVmZXJzIHRvIG9uZSBvZiBzb2FwYmluZDpib2R5LCBzb2FwYmluZDpoZWFkZXIsIHNvYXBiaW5kOmZhdWx0IG9yIHNvYXBiaW5kOmhlYWRlcmZhdWx0LjwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBTU0JQMjIwOSBleHRlbmRzIEJQMjExNAotewotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgU1NCUDIyMDkoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1NTQlAyNDAyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvU1NCUDI0MDIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI5MWYzNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvU1NCUDI0MDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogU1NCUDI0MDIKLSAqLwotcHVibGljIGNsYXNzIFNTQlAyNDAyIGV4dGVuZHMgQlAyNDAyCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFNTQlAyNDAyKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9TU0JQMjQwMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1NTQlAyNDAzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MTMyMGYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1NTQlAyNDAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVHJhdmVyc2FsOwotaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotCi0KLS8qKgotICogU1NCUDI0MDMuCi0gKiA8Y29udGV4dD5Gb3IgYSBjYW5kaWRhdGUgd3NkbDpiaW5kaW5nIGVsZW1lbnQ8L2NvbnRleHQ+Ci0gKiA8YXNzZXJ0aW9uRGVzY3JpcHRpb24+RGVzY2VuZGFudCBlbGVtZW50cyBhbmQgYXR0cmlidXRlcyBpbiB0aGUgd3NkbDpiaW5kaW5nIGFyZSBub3QgZnJvbSB0aGUgbmFtZXNwYWNlcyBmb3IgdGhlIFdTREwgTUlNRSwgSFRUUCBHRVQvUE9TVCBvciBESU1FIGJpbmRpbmcgZXh0ZW5zaW9ucy48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgU1NCUDI0MDMgZXh0ZW5kcyBBc3NlcnRpb25Qcm9jZXNzVmlzaXRvciBpbXBsZW1lbnRzIFdTSVRhZwotewotICBwcml2YXRlIGZpbmFsIFdTRExWYWxpZGF0b3JJbXBsIHZhbGlkYXRvcjsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgU1NCUDI0MDMoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0KLSAgcHJpdmF0ZSBFcnJvckxpc3QgZXJyb3JzID0gbmV3IEVycm9yTGlzdCgpOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHRoZSBuYW1lc3BhY2Ugc3BlY2lmaWVzIGFueSBXU0RMIE1JTUUsCi0gICAqIEhUVFAgR0VUL1BPU1Qgb3IgRElNRSBiaW5kaW5nIGV4dGVuc2lvbnMuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2UgYSBuYW1lc3BhY2UuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdGhlIG5hbWVzcGFjZSBzcGVjaWZpZXMgYW55IFdTREwgTUlNRSwKLSAgICogICAgICAgICBIVFRQIEdFVC9QT1NUIG9yIERJTUUgYmluZGluZyBleHRlbnNpb25zLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGlzTm9uQ29uZm9ybWFudEJpbmRpbmdFeHRlbnNpb24oU3RyaW5nIG5hbWVzcGFjZSkKLSAgewotICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKG5hbWVzcGFjZSAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChuYW1lc3BhY2UuZXF1YWxzKFdTSUNvbnN0YW50cy5OU19OQU1FX1dTRExfTUlNRSkKLSAgICAgICAgfHwgbmFtZXNwYWNlLmVxdWFscyhXU0lDb25zdGFudHMuTlNfTkFNRV9XU0RMX0hUVFApCi0gICAgICAgIHx8IG5hbWVzcGFjZS5lcXVhbHMoV1NJQ29uc3RhbnRzLk5TX05BTUVfV1NETF9ESU1FKSkKLSAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4ZWwsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAoaXNOb25Db25mb3JtYW50QmluZGluZ0V4dGVuc2lvbihleGVsCi0gICAgICAuZ2V0RWxlbWVudFR5cGUoKQotICAgICAgLmdldE5hbWVzcGFjZVVSSSgpKSkKLSAgICAgIGVycm9ycy5hZGQoZXhlbC5nZXRFbGVtZW50VHlwZSgpKTsKLSAgICBlbHNlCi0gICAgewotICAgIAkvLyBleHRlbnNpYmlsaXR5IGVsZW1lbnQgaXMgb2ssIGNoZWNrIHRoZSBkZXNjZW5kYW50cwotICAgICAgaWYgKGV4ZWwgaW5zdGFuY2VvZiBVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi0gICAgICB7Ci0gICAgICAgIEVsZW1lbnQgZWwgPSAoKFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCkgZXhlbCkuZ2V0RWxlbWVudCgpOwotCi0gICAgICAgIC8vIHRyYXZlcnNlIGFsbCBvZiB0aGUgZGVzY2VuZGFudHMgYW5kIGNoZWNrIGZvciBub24gY29tcGxpYW50IGJpbmRpbmcgZXh0ZW5zaW9ucwotICAgICAgICBYTUxUcmF2ZXJzYWxDaGVja2luZ0V4dGVuc2lvbnMgdHJhdmVyc2FsID0KLSAgICAgICAgICBuZXcgWE1MVHJhdmVyc2FsQ2hlY2tpbmdFeHRlbnNpb25zKCk7Ci0gICAgICAgIHRyYXZlcnNhbC52aXNpdChlbCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0RWxlbWVudCh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudCh0cnVlKTsKLQotICAgIHRyYXZlcnNhbC5pZ25vcmVSZWZlcmVuY2VzKCk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZUltcG9ydCgpOwotICAgIHRyYXZlcnNhbC50cmF2ZXJzZSgoQmluZGluZykgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKSk7Ci0KLSAgICBpZiAoIWVycm9ycy5pc0VtcHR5KCkpCi0gICAgewotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgICBmYWlsdXJlRGV0YWlsID0gdGhpcy52YWxpZGF0b3IuY3JlYXRlRmFpbHVyZURldGFpbChlcnJvcnMudG9TdHJpbmcoKSwgZW50cnlDb250ZXh0KTsKLSAgICB9Ci0KLSAgICBlbHNlCi0gICAgICByZXN1bHQgPSBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX1BBU1NFRDsKLQotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotCi0gIC8qKgotICAgKiBBIHNwZWNpYWxpemVkIFhNTFRyYXZlcnNhbCBjbGFzcyB0byBjaGVjayBpZiB0aGUgd3NkbDpiaW5kaW5nIGVsZW1lbnQgaGFzIGFueSAKLSAgICogZGVzY2VuZGFudCBlbGVtZW50cy9hdHRyaWJ1dGVzIGZyb20gdGhlIG5hbWVzcGFjZXMgZm9yIHRoZSBXU0RMIE1JTUUsIAotICAgKiBIVFRQIEdFVC9QT1NUIG9yIERJTUUgYmluZGluZyBleHRlbnNpb25zLgotICAgKi8KLSAgcHJpdmF0ZSBjbGFzcyBYTUxUcmF2ZXJzYWxDaGVja2luZ0V4dGVuc2lvbnMgZXh0ZW5kcyBYTUxUcmF2ZXJzYWwKLSAgewotICAgIGJvb2xlYW4gbm9uQ29uZm9ybWFudEV4dGVuc2lvbkZvdW5kID0gZmFsc2U7Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLnhtbC5YTUxUcmF2ZXJzYWwjYWN0aW9uKG9yZy53M2MuZG9tLk5vZGUpCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gYWN0aW9uKE5vZGUgbikKLSAgICB7Ci0gICAgICByZXR1cm4gIW5vbkNvbmZvcm1hbnRFeHRlbnNpb25Gb3VuZDsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLnhtbC5YTUxWaXNpdG9yI3Zpc2l0KG9yZy53M2MuZG9tLkF0dHIpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoQXR0ciBub2RlKQotICAgIHsKLSAgICAgIGlmIChhY3Rpb24obm9kZSkpCi0gICAgICB7Ci0gICAgICAgIGlmIChpc05vbkNvbmZvcm1hbnRCaW5kaW5nRXh0ZW5zaW9uKG5vZGUuZ2V0TmFtZXNwYWNlVVJJKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgZXJyb3JzLmFkZChub2RlLmdldE5hbWUoKSk7Ci0gICAgICAgICAgbm9uQ29uZm9ybWFudEV4dGVuc2lvbkZvdW5kID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy53c2kueG1sLlhNTFZpc2l0b3IjdmlzaXQob3JnLnczYy5kb20uRWxlbWVudCkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB2aXNpdChFbGVtZW50IG5vZGUpCi0gICAgewotICAgICAgaWYgKGFjdGlvbihub2RlKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKGlzTm9uQ29uZm9ybWFudEJpbmRpbmdFeHRlbnNpb24obm9kZS5nZXROYW1lc3BhY2VVUkkoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICBlcnJvcnMuYWRkKG5vZGUuZ2V0Tm9kZU5hbWUoKSk7Ci0gICAgICAgICAgbm9uQ29uZm9ybWFudEV4dGVuc2lvbkZvdW5kID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBlbGVtZW50IGlzIGNvbXBsaWFudCwgY2hlY2sgYXR0cmlidXRlcyBhbmQgZGVzY2VuZGFudHMKLSAgICAgICAgICB2aXNpdChub2RlLmdldEF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgICAgZm9yIChOb2RlIG4gPSBub2RlLmdldEZpcnN0Q2hpbGQoKTsKLSAgICAgICAgICAgIG4gIT0gbnVsbDsKLSAgICAgICAgICAgIG4gPSBuLmdldE5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgZG9WaXNpdChuKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NETFZhbGlkYXRvckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0RMVmFsaWRhdG9ySW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTY3NzE2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0RMVmFsaWRhdG9ySW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjM4NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuSW1wb3J0OwotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVJ1bnRpbWVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFuYWx5emVyQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQ2FuZGlkYXRlSW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuU2VydmljZVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFydGlmYWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBc3NlcnRpb25zOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuV1NETFZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuRW50cnlDb250YWluZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5GYWlsdXJlRGV0YWlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0QXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FbnRyeVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwuV1NETERvY3VtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLldTRExFbGVtZW50TGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC5XU0RMVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5kb20uRWxlbWVudExvY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuc2NoZW1hLlRhcmdldE5hbWVzcGFjZVByb2Nlc3NvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLnNjaGVtYS5YTUxTY2hlbWFWYWxpZGF0b3I7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotLyoqCi0gKiBUaGUgV1NETCB2YWxpZGF0b3Igd2lsbCB2ZXJpZnkgdGhhdCB0aGUgV1NETCBhbmQgYXNzb2NpYXRlZCBYTUwgc2NoZW1hIGRlZmluaXRpb25zCi0gKiBhcmUgaW4gY29uZm9ybWFuY2Ugd2l0aCB0aGUgcHJvZmlsZS4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKiBAYXV0aG9yIEdyYWhhbSBUdXJyZWxsIAkoZ3R1cnJlbGxAdWsuaWJtLmNvbSkKLSAqLwotCi1wdWJsaWMgY2xhc3MgV1NETFZhbGlkYXRvckltcGwKLSAgZXh0ZW5kcyBCYXNlVmFsaWRhdG9ySW1wbAotICBpbXBsZW1lbnRzIFdTRExWYWxpZGF0b3IKLXsKLSAgLyoqCi0gICAqIFdTREwgVVJMLgotICAgKiBAZGVwcmVjYXRlZCAtLSBhY2Nlc3MgdGhlIHdzZGwgdXJsIHZpYSB3c2RsRG9jdW1lbnQgZmllbGQuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHdzZGxVUkw7Ci0KLSAgLyoqCi0gICAqIFdTREwgZG9jdW1lbnQuCi0gICAqLwotICBwcm90ZWN0ZWQgV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCA9IG51bGw7Ci0gIHByaXZhdGUgYm9vbGVhbiB0ZXN0YWJsZTsKLSAgCi0gIC8qKgotICAgKiBFbnRyeSBjb250YWluZXIgbWFwLgotICAgKi8KLSAgcHJvdGVjdGVkIEhhc2hNYXAgY29udGFpbmVyTWFwID0gbmV3IEhhc2hNYXAoKTsKLSAgCi0gIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NEZWZBc3NlcnRpb25zID0gdHJ1ZTsKLQotICAvKioKLSAgICogR2V0IHRoZSBhcnRpZmFjdCB0eXBlIHRoYXQgdGhpcyB2YWxpZGF0b3IgYXBwbGllcyB0by4KLSAgICogQHJldHVybiB0aGUgYXJ0aWZhY3QgdHlwZSAoYSBTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEFydGlmYWN0VHlwZSgpIAotICB7ICAKLSAgICAgIHJldHVybiBUWVBFX0RFU0NSSVBUSU9OOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgY29sbGVjdGlvbiBvZiBlbnRyeSB0eXBlcyB0aGF0IHRoaXMgdmFsaWRhdG9yIGFwcGxpZXMgdG8uCi0gICAqIEByZXR1cm4gYW4gYXJyYXkgb2YgZW50cnkgdHlwZXMgKFN0cmluZ3MpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nW10gZ2V0RW50cnlUeXBlcygpIAotICB7Ci0gICAgICByZXR1cm4gbmV3IFN0cmluZ1tdIHsKLSAgICAgICAgICAgICAgVFlQRV9ERVNDUklQVElPTl9ERUZJTklUSU9OUywKLSAgICAgICAgICAgICAgVFlQRV9ERVNDUklQVElPTl9JTVBPUlQsCi0gICAgICAgICAgICAgIFRZUEVfREVTQ1JJUFRJT05fVFlQRVMsCi0gICAgICAgICAgICAgIFRZUEVfREVTQ1JJUFRJT05fTUVTU0FHRSwKLSAgICAgICAgICAgICAgVFlQRV9ERVNDUklQVElPTl9PUEVSQVRJT04sCi0gICAgICAgICAgICAgIFRZUEVfREVTQ1JJUFRJT05fUE9SVFRZUEUsCi0gICAgICAgICAgICAgIFRZUEVfREVTQ1JJUFRJT05fQklORElORywKLSAgICAgICAgICAgICAgVFlQRV9ERVNDUklQVElPTl9QT1JUCi0gICAgICB9OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5XU0RMVmFsaWRhdG9yI2luaXQob3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFuYWx5emVyQ29udGV4dCwgb3JnLndzaS50ZXN0LnByb2ZpbGUuUHJvZmlsZUFydGlmYWN0LCBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydEFydGlmYWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBvcmcud3NpLndzZGwuV1NETERvY3VtZW50LCBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydGVyKQotICAgKi8KLSAgcHVibGljIHZvaWQgaW5pdCgKLSAgICBBbmFseXplckNvbnRleHQgYW5hbHl6ZXJDb250ZXh0LAotICAgIFByb2ZpbGVBc3NlcnRpb25zIGFzc2VydGlvbnMsCi0gICAgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QsCi0gICAgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcsCi0gICAgUmVwb3J0ZXIgcmVwb3J0ZXIpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgaW5pdChhbmFseXplckNvbnRleHQsIGFzc2VydGlvbnMsIHJlcG9ydEFydGlmYWN0LCBhbmFseXplckNvbmZpZywgcmVwb3J0ZXIsIHRydWUpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgaW5pdCgKLSAgICBBbmFseXplckNvbnRleHQgYW5hbHl6ZXJDb250ZXh0LAotICAgIFByb2ZpbGVBc3NlcnRpb25zIGFzc2VydGlvbnMsCi0gICAgUmVwb3J0QXJ0aWZhY3QgcmVwb3J0QXJ0aWZhY3QsCi0gICAgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWcsCi0gICAgUmVwb3J0ZXIgcmVwb3J0ZXIsCi0gICAgYm9vbGVhbiBwcm9jZXNzRGVmQXNzZXJ0aW9ucykKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBCYXNlVmFsaWRhdG9ySW1wbAotICAgIHN1cGVyLmluaXQoYW5hbHl6ZXJDb250ZXh0LCBhc3NlcnRpb25zLmdldEFydGlmYWN0KFRZUEVfREVTQ1JJUFRJT04pLCByZXBvcnRBcnRpZmFjdCwgcmVwb3J0ZXIpOwotICAgIHRoaXMud3NkbERvY3VtZW50ID0gYW5hbHl6ZXJDb250ZXh0LmdldFdzZGxEb2N1bWVudCgpOwotICAgIHRlc3RhYmxlID0gYW5hbHl6ZXJDb250ZXh0LmdldFdzZGxEb2N1bWVudCgpICE9IG51bGw7Ci0gICAgaWYgKHRoaXMud3NkbERvY3VtZW50ICE9IG51bGwpCi0gICAgICB0aGlzLndzZGxVUkwgPSB3c2RsRG9jdW1lbnQuZ2V0TG9jYXRpb24oKTsKLSAgICB0aGlzLnByb2Nlc3NEZWZBc3NlcnRpb25zID0gcHJvY2Vzc0RlZkFzc2VydGlvbnM7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLldTRExWYWxpZGF0b3IjaW5pdChvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuQW5hbHl6ZXJDb250ZXh0LCBvcmcud3NpLnRlc3QucHJvZmlsZS5Qcm9maWxlQXJ0aWZhY3QsIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0QXJ0aWZhY3QsIGphdmEubGFuZy5TdHJpbmcsIG9yZy53c2kud3NkbC5XU0RMRG9jdW1lbnQsIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0ZXIpCi0gICAqLwotICBwdWJsaWMgdm9pZCBpbml0KAotICAgIEFuYWx5emVyQ29udGV4dCBhbmFseXplckNvbnRleHQsCi0gICAgUHJvZmlsZUFydGlmYWN0IHByb2ZpbGVBcnRpZmFjdCwKLSAgICBSZXBvcnRBcnRpZmFjdCByZXBvcnRBcnRpZmFjdCwKLSAgICBTdHJpbmcgd3NkbFVSTCwKLSAgICBXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50LAotICAgIFJlcG9ydGVyIHJlcG9ydGVyKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIGluaXQoYW5hbHl6ZXJDb250ZXh0LCBwcm9maWxlQXJ0aWZhY3QsIHJlcG9ydEFydGlmYWN0LCB3c2RsVVJMLCB3c2RsRG9jdW1lbnQsIHJlcG9ydGVyLCB0cnVlKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGluaXQoCi0gICAgQW5hbHl6ZXJDb250ZXh0IGFuYWx5emVyQ29udGV4dCwKLSAgICBQcm9maWxlQXJ0aWZhY3QgcHJvZmlsZUFydGlmYWN0LAotICAgIFJlcG9ydEFydGlmYWN0IHJlcG9ydEFydGlmYWN0LAotICAgIFN0cmluZyB3c2RsVVJMLAotICAgIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQsCi0gICAgUmVwb3J0ZXIgcmVwb3J0ZXIsCi0gICAgYm9vbGVhbiBwcm9jZXNzRGVmQXNzZXJ0aW9ucykKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBCYXNlVmFsaWRhdG9ySW1wbAotICAgIHN1cGVyLmluaXQoYW5hbHl6ZXJDb250ZXh0LCBwcm9maWxlQXJ0aWZhY3QsIHJlcG9ydEFydGlmYWN0LCByZXBvcnRlcik7Ci0gICAgdGhpcy53c2RsRG9jdW1lbnQgPSB3c2RsRG9jdW1lbnQ7Ci0gICAgdGVzdGFibGUgPSAod3NkbERvY3VtZW50ICE9IG51bGwpOwotICAgIGlmICh3c2RsRG9jdW1lbnQgIT0gbnVsbCkKLSAgICAgIHRoaXMud3NkbFVSTCA9IHdzZGxEb2N1bWVudC5nZXRMb2NhdGlvbigpOwotCi0gICAgaWYgKHdzZGxVUkwgIT0gbnVsbCkKLSAgICAgIHRoaXMud3NkbFVSTCA9IHdzZGxVUkw7Ci0gICAgdGhpcy5wcm9jZXNzRGVmQXNzZXJ0aW9ucyA9IHByb2Nlc3NEZWZBc3NlcnRpb25zOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5XU0RMVmFsaWRhdG9yI3ZhbGlkYXRlKCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZhbGlkYXRlQXJ0aWZhY3QoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvL1dTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQgPSBudWxsOwotICAgIFNlcnZpY2Ugc2VydmljZSA9IG51bGw7Ci0gICAgUG9ydCBwb3J0ID0gbnVsbDsKLSAgICBCaW5kaW5nIGJpbmRpbmcgPSBudWxsOwotICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gbnVsbDsKLSAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gbnVsbDsKLSAgICBNZXNzYWdlIG1lc3NhZ2UgPSBudWxsOwotCi0gICAgLy8gaXQgZGVwcmljYXRlZCBhZnRlciByZWZhY3RvcmluZyAKLSAgICAvLyBub3cgdGhlIGlubmVyIGNsYXNzZXMgbW92ZWQgb3V0IGZyb20gdmFsaWRhdG9yCi0gICAgLy9TdHJpbmcgY2xhc3NQcmVmaXggPSB0aGlzLmdldENsYXNzKCkuZ2V0TmFtZSgpICsgIiQiOwotICAgIFN0cmluZyBjbGFzc1ByZWZpeCA9IHRoaXMuZ2V0Q2xhc3MoKS5nZXRQYWNrYWdlKCkuZ2V0TmFtZSgpKyIuIjsKLQotICAgIC8vIEdldCB0aGUgZGVmaW5pdGlvbiBlbGVtZW50Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gd3NkbERvY3VtZW50LmdldERlZmluaXRpb25zKCk7Ci0KLSAgICAvLyBHZXQgc2VydmljZSByZWZlcmVuY2UgZnJvbSBhbmFseXplciBjb250ZXh0Ci0gICAgU2VydmljZVJlZmVyZW5jZSBzZXJ2aWNlUmVmZXJlbmNlID0gYW5hbHl6ZXJDb250ZXh0LmdldFNlcnZpY2VSZWZlcmVuY2UoKTsKLQotICAgIC8vIENyZWF0ZSBub3JtYWxpemVkIGRhdGEgYWJvdXQgdGhlIHNlcnZpY2UgdW5kZXIgdGVzdC4KLSAgICBDYW5kaWRhdGVJbmZvIGNhbmRpZGF0ZSA9IG5ldyBDYW5kaWRhdGVJbmZvKHNlcnZpY2VSZWZlcmVuY2UsIHdzZGxEb2N1bWVudCk7Ci0KLSAgICBhbmFseXplckNvbnRleHQuc2V0Q2FuZGlkYXRlSW5mbyhjYW5kaWRhdGUpOwotCi0gICAgLy8gU2V0IHByZXJlcSB0eXBlIHRvIGVudHJ5IGNvbnRhaW5lcgotICAgIHJlcG9ydGVyLnNldFByZXJlcVR5cGUoUmVwb3J0ZXIuUFJFUkVRX1RZUEVfRU5UUllfQ09OVEFJTkVSKTsKLQotICAgIC8vIGFsd2F5cyBwcm9jZXNzIEltcG9ydCwgRGVmaW5pdGlvbnMgJiBUeXBlcyBhc3NlcnRpb25zIAotICAgIC8vIFRFTVA6Ci0gICAgaWYgKHByb2Nlc3NEZWZBc3NlcnRpb25zKQotICAgIHsKLSAgICAgIHByb2Nlc3NEZWZpbml0aW9uQXNzZXJ0aW9ucyhjbGFzc1ByZWZpeCwgY2FuZGlkYXRlKTsKLSAgICAgIHByb2Nlc3NUeXBlc0Fzc2VydGlvbnMoY2xhc3NQcmVmaXgsIGNhbmRpZGF0ZSk7Ci0gICAgICBwcm9jZXNzSW1wb3J0QXNzZXJ0aW9ucyhjbGFzc1ByZWZpeCwgY2FuZGlkYXRlKTsKLSAgICB9Ci0KLSAgICAvLyBQcm9jZXNzIHRoZSBlbGVtZW50IGhpZXJhcmNoeSBpbiB0aGUgV1NETCBkb2N1bWVudCBzdGFydGluZyB3aXRoIHRoZSBvbmUgdGhhdCB3YXMgc3BlY2lmaWVkICAKLSAgICAvLyBGSVg6IEVsZW1lbnQgZmluZGluZyBhbHJlYWR5IGNvbXBsZXRlZCBieSBDYW5kaWRhdGVJbmZvIGNvbnN0cnVjdG9yIC0gc28gdXNlIHRoYXQgcmF0aGVyIHRoYW4gcmV0ZXN0IGhlcmUgIAotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gd3NkbDpwb3J0Ci0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgaWYgKHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKS5pc1BvcnQoKSkKLSAgICB7Ci0gICAgICAvLyBGaW5kIHRoZSBzZXJ2aWNlIGVsZW1lbnQKLSAgICAgIGlmICgoc2VydmljZSA9Ci0gICAgICAgIGRlZmluaXRpb24uZ2V0U2VydmljZSgKLSAgICAgICAgICBzZXJ2aWNlUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkuZ2V0UGFyZW50RWxlbWVudFFOYW1lKCkpKQotICAgICAgICA9PSBudWxsKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgV1NJUnVudGltZUV4Y2VwdGlvbigKLSAgICAgICAgICAiQ291bGQgbm90IGxvY2F0ZSBXU0RMIHNlcnZpY2U6ICIKLSAgICAgICAgICAgICsgc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmdldFBhcmVudEVsZW1lbnROYW1lKCkpOwotICAgICAgfQotCi0gICAgICAvLyBGaW5kIHRoZSBwb3J0IGVsZW1lbnQKLSAgICAgIGlmICgocG9ydCA9IHNlcnZpY2UuZ2V0UG9ydChzZXJ2aWNlUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkuZ2V0TmFtZSgpKSkKLSAgICAgICAgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IFdTSVJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICAgIkNvdWxkIG5vdCBsb2NhdGUgV1NETCBwb3J0OiAiCi0gICAgICAgICAgICArIHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKS5nZXROYW1lKCkpOwotICAgICAgfQotCi0gICAgICAvLyBURU1QOiBSZW1vdmUgdW50aWwgdGhlcmUgYXJlIHBvcnQgdGVzdCBhc3NlcnRpb25zICAgICAgCi0gICAgICAvL3Byb2Nlc3NQb3J0QXNzZXJ0aW9ucyhwb3J0LCBzZXJ2aWNlUmVmZXJlbmNlLCBjbGFzc1ByZWZpeCwgd3NkbERvY3VtZW50KTsJICAgICAKLQotICAgICAgLy8gTmV4dCwgcHJvY2VzcyB0aGUgYmluZGluZwotICAgICAgaWYgKCgoYmluZGluZyA9IHBvcnQuZ2V0QmluZGluZygpKSA9PSBudWxsKSB8fCAoYmluZGluZy5pc1VuZGVmaW5lZCgpKSkKLSAgICAgIHsKLSAgICAgICAgLy90aHJvdyBuZXcgV1NJUnVudGltZUV4Y2VwdGlvbigiQ291bGQgbm90IGxvY2F0ZSBXU0RMIGJpbmRpbmcgZm9yIHBvcnQ6ICIgKyBwb3J0LmdldE5hbWUoKSk7ICAKLSAgICAgICAgLy8gU2V0IG1pc3NpbmdJbnB1dCBmb3IgYWxsIGJpbmRpbmcsIHBvcnRUeXBlLCBvcGVyYXRpb24gYW5kIG1lc3NhZ2UgdGVzdCBhc3NlcnRpb25zIAotICAgICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX0JJTkRJTkcpKTsKLSAgICAgICAgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ERVNDUklQVElPTl9QT1JUVFlQRSkpOwotICAgICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX09QRVJBVElPTikpOwotICAgICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX01FU1NBR0UpKTsKLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBwcm9jZXNzQmluZGluZ0Fzc2VydGlvbnMoCi0gICAgICAgICAgYmluZGluZywKLSAgICAgICAgICBzZXJ2aWNlUmVmZXJlbmNlLAotICAgICAgICAgIGNsYXNzUHJlZml4LAotICAgICAgICAgIHdzZGxEb2N1bWVudCk7Ci0KLSAgICAgICAgLy8gTmV4dCwgcHJvY2VzcyB0aGUgcG9ydFR5cGUKLSAgICAgICAgaWYgKCgocG9ydFR5cGUgPSBiaW5kaW5nLmdldFBvcnRUeXBlKCkpID09IG51bGwpCi0gICAgICAgICAgfHwgKHBvcnRUeXBlLmlzVW5kZWZpbmVkKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgLy90aHJvdyBuZXcgV1NJUnVudGltZUV4Y2VwdGlvbigiQ291bGQgbm90IGxvY2F0ZSBXU0RMIHBvcnRUeXBlIGZvciBiaW5kaW5nOiAiICsgYmluZGluZy5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpKTsKLSAgICAgICAgICAvLyBTZXQgbWlzc2luZ0lucHV0IGZvciBhbGwgcG9ydFR5cGUsIG9wZXJhdGlvbiBhbmQgbWVzc2FnZSB0ZXN0IGFzc2VydGlvbnMgCi0gICAgICAgICAgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ERVNDUklQVElPTl9QT1JUVFlQRSkpOwotICAgICAgICAgIHNldE1pc3NpbmdJbnB1dChFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ERVNDUklQVElPTl9NRVNTQUdFKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBwcm9jZXNzTWVzc2FnZUFzc2VydGlvbnMoCi0gICAgICAgICAgICBiaW5kaW5nLAotICAgICAgICAgICAgc2VydmljZVJlZmVyZW5jZSwKLSAgICAgICAgICAgIGNsYXNzUHJlZml4LAotICAgICAgICAgICAgd3NkbERvY3VtZW50KTsKLSAgICAgICAgICBwcm9jZXNzUG9ydFR5cGVBc3NlcnRpb25zKAotICAgICAgICAgICAgcG9ydFR5cGUsCi0gICAgICAgICAgICBzZXJ2aWNlUmVmZXJlbmNlLAotICAgICAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgICAgICB3c2RsRG9jdW1lbnQpOwotICAgICAgICAgIHByb2Nlc3NPcGVyYXRpb25Bc3NlcnRpb25zKAotICAgICAgICAgICAgcG9ydFR5cGUsCi0gICAgICAgICAgICBzZXJ2aWNlUmVmZXJlbmNlLAotICAgICAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgICAgICB3c2RsRG9jdW1lbnQpOwotICAgICAgICAgIHByb2Nlc3NNZXNzYWdlQXNzZXJ0aW9ucygKLSAgICAgICAgICAgIHBvcnRUeXBlLAotICAgICAgICAgICAgc2VydmljZVJlZmVyZW5jZSwKLSAgICAgICAgICAgIGNsYXNzUHJlZml4LAotICAgICAgICAgICAgd3NkbERvY3VtZW50KTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgfQotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gd3NkbDpiaW5kaW5nCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgZWxzZSBpZiAoc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmlzQmluZGluZygpKQotICAgIHsKLSAgICAgIFdTRExFbGVtZW50IHdzZGxFbGVtZW50ID0gc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpOwotICAgICAgLy8gRmluZCB0aGUgYmluZGluZyBlbGVtZW50Ci0gICAgICBpZiAod3NkbEVsZW1lbnQuZ2V0UU5hbWUoKSAhPSBudWxsCi0gICAgICAgICYmIHdzZGxFbGVtZW50LmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCkgIT0gbnVsbAotICAgICAgICAmJiB3c2RsRWxlbWVudC5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpLmxlbmd0aCgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgaWYgKCgoYmluZGluZyA9Ci0gICAgICAgICAgZGVmaW5pdGlvbi5nZXRCaW5kaW5nKHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKS5nZXRRTmFtZSgpKSkKLSAgICAgICAgICA9PSBudWxsKQotICAgICAgICAgIHx8IChiaW5kaW5nLmlzVW5kZWZpbmVkKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgdGhyb3cgbmV3IFdTSVJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAiQ291bGQgbm90IGxvY2F0ZSBXU0RMIGJpbmRpbmc6ICIKLSAgICAgICAgICAgICAgKyBzZXJ2aWNlUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkuZ2V0TmFtZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHByb2Nlc3NCaW5kaW5nQXNzZXJ0aW9ucygKLSAgICAgICAgICBiaW5kaW5nLAotICAgICAgICAgIHNlcnZpY2VSZWZlcmVuY2UsCi0gICAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgICAgd3NkbERvY3VtZW50KTsKLSAgICAgICAgcHJvY2Vzc01lc3NhZ2VBc3NlcnRpb25zKAotICAgICAgICAgIGJpbmRpbmcsCi0gICAgICAgICAgc2VydmljZVJlZmVyZW5jZSwKLSAgICAgICAgICBjbGFzc1ByZWZpeCwKLSAgICAgICAgICB3c2RsRG9jdW1lbnQpOwotCi0gICAgICAgIC8vIE5leHQsIHByb2Nlc3MgdGhlIHBvcnRUeXBlCi0gICAgICAgIGlmICgoKHBvcnRUeXBlID0gYmluZGluZy5nZXRQb3J0VHlwZSgpKSA9PSBudWxsKQotICAgICAgICAgIHx8IChwb3J0VHlwZS5pc1VuZGVmaW5lZCgpKSkKLSAgICAgICAgewotICAgICAgICAgIC8vdGhyb3cgbmV3IFdTSVJ1bnRpbWVFeGNlcHRpb24oIkNvdWxkIG5vdCBsb2NhdGUgV1NETCBQb3J0VHlwZSBmb3IgQmluZGluZzogIiArIGJpbmRpbmcuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSk7Ci0KLSAgICAgICAgICAvLyBTZXQgbWlzc2luZ0lucHV0IGZvciBhbGwgcG9ydFR5cGUsIG9wZXJhdGlvbiBhbmQgbWVzc2FnZSB0ZXN0IGFzc2VydGlvbnMgCi0gICAgICAgICAgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ERVNDUklQVElPTl9QT1JUVFlQRSkpOwotICAgICAgICAgIHNldE1pc3NpbmdJbnB1dChFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ERVNDUklQVElPTl9NRVNTQUdFKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBwcm9jZXNzUG9ydFR5cGVBc3NlcnRpb25zKAotICAgICAgICAgICAgcG9ydFR5cGUsCi0gICAgICAgICAgICBzZXJ2aWNlUmVmZXJlbmNlLAotICAgICAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgICAgICB3c2RsRG9jdW1lbnQpOwotICAgICAgICAgIHByb2Nlc3NPcGVyYXRpb25Bc3NlcnRpb25zKAotICAgICAgICAgICAgcG9ydFR5cGUsCi0gICAgICAgICAgICBzZXJ2aWNlUmVmZXJlbmNlLAotICAgICAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgICAgICB3c2RsRG9jdW1lbnQpOwotCi0gICAgICAgICAgLy8gUHJvY2VzcyBlYWNoIG1lc3NhZ2Ugd2l0aGluIGVhY2ggb3BlcmF0aW9uIG9mIHRoZSBwb3J0VHlwZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJpbmRpbmcKLSAgICAgICAgICBwcm9jZXNzTWVzc2FnZUFzc2VydGlvbnMoCi0gICAgICAgICAgICBwb3J0VHlwZSwKLSAgICAgICAgICAgIHNlcnZpY2VSZWZlcmVuY2UsCi0gICAgICAgICAgICBjbGFzc1ByZWZpeCwKLSAgICAgICAgICAgIHdzZGxEb2N1bWVudCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLy8gVGhlcmUgd2FzIGEgcHJvYmxlbSB3aXRoIHRoZSBiaW5kaW5nIGVsZW1lbnQgc3BlY2lmaWNhdGlvbi4gIFRoaXMgY2FuIAotICAgICAgLy8gaGFwcGVuIHdoZW4gYSBVRERJIHRNb2RlbCBkaWQgbm90IGhhdmUgYSB2YWxpZCBiaW5kaW5nIHJlZmVyZW5jZS4KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gU2V0IG1pc3NpbmdJbnB1dCBmb3IgYWxsIGJpbmRpbmcsIHBvcnRUeXBlLCBvcGVyYXRpb24gYW5kIG1lc3NhZ2UgdGVzdCBhc3NlcnRpb25zIAotICAgICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX0JJTkRJTkcpKTsKLSAgICAgICAgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ERVNDUklQVElPTl9QT1JUVFlQRSkpOwotICAgICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX09QRVJBVElPTikpOwotICAgICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX01FU1NBR0UpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyB3c2RsOnBvcnRUeXBlCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgZWxzZSBpZiAoc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmlzUG9ydFR5cGUoKSkKLSAgICB7Ci0gICAgICAvLyBGaW5kIHRoZSBQb3J0VHlwZSBlbGVtZW50Ci0gICAgICBpZiAoKChwb3J0VHlwZSA9Ci0gICAgICAgIGRlZmluaXRpb24uZ2V0UG9ydFR5cGUoc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmdldFFOYW1lKCkpKQotICAgICAgICA9PSBudWxsKQotICAgICAgICB8fCAocG9ydFR5cGUuaXNVbmRlZmluZWQoKSkpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBXU0lSdW50aW1lRXhjZXB0aW9uKAotICAgICAgICAgICJDb3VsZCBub3QgbG9jYXRlIFdTREwgUG9ydFR5cGU6ICIKLSAgICAgICAgICAgICsgc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmdldE5hbWUoKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFNldCBtaXNzaW5nSW5wdXQgZm9yIGFsbCBiaW5kaW5nIHRlc3QgYXNzZXJ0aW9ucyAKLSAgICAgIHNldE1pc3NpbmdJbnB1dChFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fQklORElORykpOwotCi0gICAgICBwcm9jZXNzUG9ydFR5cGVBc3NlcnRpb25zKAotICAgICAgICBwb3J0VHlwZSwKLSAgICAgICAgc2VydmljZVJlZmVyZW5jZSwKLSAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgIHdzZGxEb2N1bWVudCk7Ci0gICAgICBwcm9jZXNzT3BlcmF0aW9uQXNzZXJ0aW9ucygKLSAgICAgICAgcG9ydFR5cGUsCi0gICAgICAgIHNlcnZpY2VSZWZlcmVuY2UsCi0gICAgICAgIGNsYXNzUHJlZml4LAotICAgICAgICB3c2RsRG9jdW1lbnQpOwotCi0gICAgICAvLyBQcm9jZXNzIGVhY2ggbWVzc2FnZSB3aXRoaW4gZWFjaCBvcGVyYXRpb24gb2YgdGhlIHBvcnRUeXBlCi0gICAgICBwcm9jZXNzTWVzc2FnZUFzc2VydGlvbnMoCi0gICAgICAgIHBvcnRUeXBlLAotICAgICAgICBzZXJ2aWNlUmVmZXJlbmNlLAotICAgICAgICBjbGFzc1ByZWZpeCwKLSAgICAgICAgd3NkbERvY3VtZW50KTsKLSAgICB9Ci0KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyB3c2RsOm9wZXJhdGlvbgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIGVsc2UgaWYgKHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKS5pc09wZXJhdGlvbigpKQotICAgIHsKLSAgICAgIC8vIEZpbmQgdGhlIG9wZXJhdGlvbgotICAgICAgLy8gZ2V0IHBvcnRUeXBlIGZyb20gY29uZmlnIHBhcmVudCBlbGVtZW50Ci0gICAgICBpZiAoKChwb3J0VHlwZSA9Ci0gICAgICAgIGRlZmluaXRpb24uZ2V0UG9ydFR5cGUoCi0gICAgICAgICAgc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmdldFBhcmVudEVsZW1lbnRRTmFtZSgpKSkKLSAgICAgICAgPT0gbnVsbCkKLSAgICAgICAgfHwgKHBvcnRUeXBlLmlzVW5kZWZpbmVkKCkpKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgV1NJUnVudGltZUV4Y2VwdGlvbigKLSAgICAgICAgICAiQ291bGQgbm90IGxvY2F0ZSBXU0RMIHBvcnRUeXBlOiAiCi0gICAgICAgICAgICArIHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKS5nZXRQYXJlbnRFbGVtZW50UU5hbWUoKSk7Ci0gICAgICB9Ci0KLSAgICAgIGlmICgoKG9wZXJhdGlvbiA9Ci0gICAgICAgIGdldE9wZXJhdGlvbkZyb21Qb3J0VHlwZSgKLSAgICAgICAgICBwb3J0VHlwZSwKLSAgICAgICAgICBzZXJ2aWNlUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkuZ2V0TmFtZSgpKSkKLSAgICAgICAgPT0gbnVsbCkKLSAgICAgICAgfHwgKG9wZXJhdGlvbi5pc1VuZGVmaW5lZCgpKSkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IFdTSVJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICAgIkNvdWxkIG5vdCBsb2NhdGUgV1NETCBPcGVyYXRpb246ICIKLSAgICAgICAgICAgICsgc2VydmljZVJlZmVyZW5jZS5nZXRXU0RMRWxlbWVudCgpLmdldE5hbWUoKQotICAgICAgICAgICAgKyAiaW4gcG9ydFR5cGU6ICIKLSAgICAgICAgICAgICsgcG9ydFR5cGUuZ2V0UU5hbWUoKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFNldCBtaXNzaW5nSW5wdXQgZm9yIGFsbCBiaW5kaW5nIGFuZCBwb3J0VHlwZSB0ZXN0IGFzc2VydGlvbnMgCi0gICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX0JJTkRJTkcpKTsKLSAgICAgIHNldE1pc3NpbmdJbnB1dChFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fUE9SVFRZUEUpKTsKLQotICAgICAgcHJvY2Vzc09wZXJhdGlvbkFzc2VydGlvbnMoCi0gICAgICAgIG9wZXJhdGlvbiwKLSAgICAgICAgcG9ydFR5cGUsCi0gICAgICAgIHNlcnZpY2VSZWZlcmVuY2UsCi0gICAgICAgIGNsYXNzUHJlZml4LAotICAgICAgICB3c2RsRG9jdW1lbnQpOwotICAgICAgcHJvY2Vzc01lc3NhZ2VBc3NlcnRpb25zKAotICAgICAgICBvcGVyYXRpb24sCi0gICAgICAgIHNlcnZpY2VSZWZlcmVuY2UsCi0gICAgICAgIGNsYXNzUHJlZml4LAotICAgICAgICB3c2RsRG9jdW1lbnQpOwotICAgIH0KLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vIHdzZGw6bWVzc2FnZQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIGVsc2UgaWYgKHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKS5pc01lc3NhZ2UoKSkKLSAgICB7Ci0gICAgICAvLyBGaW5kIHRoZSBtZXNzYWdlCi0gICAgICBpZiAoKChtZXNzYWdlID0KLSAgICAgICAgZGVmaW5pdGlvbi5nZXRNZXNzYWdlKHNlcnZpY2VSZWZlcmVuY2UuZ2V0V1NETEVsZW1lbnQoKS5nZXRRTmFtZSgpKSkKLSAgICAgICAgPT0gbnVsbCkKLSAgICAgICAgfHwgKG1lc3NhZ2UuaXNVbmRlZmluZWQoKSkpCi0gICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBXU0lSdW50aW1lRXhjZXB0aW9uKAotICAgICAgICAgICJDb3VsZCBub3QgbG9jYXRlIFdTREwgTWVzc2FnZTogIgotICAgICAgICAgICAgKyBzZXJ2aWNlUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkuZ2V0TmFtZSgpKTsKLSAgICAgIH0KLQotICAgICAgLy8gU2V0IG1pc3NpbmdJbnB1dCBmb3IgYWxsIGJpbmRpbmcsIHBvcnRUeXBlLCBhbmQgb3BlcmF0aW9uIHRlc3QgYXNzZXJ0aW9ucyAKLSAgICAgIHNldE1pc3NpbmdJbnB1dChFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fQklORElORykpOwotICAgICAgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ERVNDUklQVElPTl9QT1JUVFlQRSkpOwotICAgICAgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ERVNDUklQVElPTl9PUEVSQVRJT04pKTsKLQotICAgICAgcHJvY2Vzc01lc3NhZ2VBc3NlcnRpb25zKAotICAgICAgICBtZXNzYWdlLAotICAgICAgICBzZXJ2aWNlUmVmZXJlbmNlLAotICAgICAgICBjbGFzc1ByZWZpeCwKLSAgICAgICAgd3NkbERvY3VtZW50KTsKLSAgICB9Ci0KLSAgICBlbHNlCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSVJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICJUaGUgZm9sbG93aW5nIFdTREwgdHlwZSBpcyBub3Qgc3VwcG9ydGVkOiAiCi0gICAgICAgICAgKyBzZXJ2aWNlUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkuZ2V0VHlwZSgpKTsKLSAgICB9Ci0KLSAgICAvLyBDbGVhbnVwCi0gICAgY2xlYW51cCgpOwotICB9Ci0KLSAvKiAobm9uLUphdmFkb2MpCi0gICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuV1NETFZhbGlkYXRvciN2YWxpZGF0ZSgpCi0gICovCi0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgdmFsaWRhdGVBcnRpZmFjdCgpLiAqLwotICBwdWJsaWMgV1NETERvY3VtZW50IHZhbGlkYXRlKCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgdmFsaWRhdGVBcnRpZmFjdCgpOwotICAgIAotICAgIC8vIFJldHVybiBXU0RMIGRvY3VtZW50Ci0gICAgcmV0dXJuIHRoaXMud3NkbERvY3VtZW50OwotICB9Ci0gIC8qKgotICAgKiBHZXQgZW50cnkgY29udGFpbmVyIHVzaW5nIHRoZSBmaWxlbmFtZSBmb3IgV1NETCBkb2N1bWVudC4KLSAgICogQHBhcmFtIGZpbGVuYW1lIGEgZmlsZSBuYW1lLgotICAgKiBAcmV0dXJuIGVudHJ5IGNvbnRhaW5lciB1c2luZyB0aGUgZmlsZW5hbWUgZm9yIFdTREwgZG9jdW1lbnQuCi0gICAqLwotICBwcm90ZWN0ZWQgRW50cnlDb250YWluZXIgZ2V0RW50cnlDb250YWluZXIoU3RyaW5nIGZpbGVuYW1lKQotICB7Ci0gICAgRW50cnlDb250YWluZXIgZW50cnlDb250YWluZXIgPSBudWxsOwotCi0gICAgLy8gSWYgdGhlIGVudHJ5IGNvbnRhaW5lciBhbHJlYWR5IGV4aXN0cywgdGhlbiB1c2UgaXQKLSAgICBpZiAoKGVudHJ5Q29udGFpbmVyID0gKEVudHJ5Q29udGFpbmVyKSBjb250YWluZXJNYXAuZ2V0KGZpbGVuYW1lKSkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBDcmVhdGUgbmV3IGVudHJ5IGNvbnRhaW5lcgotICAgICAgZW50cnlDb250YWluZXIgPSB0aGlzLnJlcG9ydGVyLmNyZWF0ZUVudHJ5Q29udGFpbmVyKCk7Ci0KLSAgICAgIC8vIFNldCBjb250YWluZXIgaWQgdXNpbmcgdGhlIGZpbGVuYW1lIGZvciB0aGUgV1NETCBkb2N1bWVudAotICAgICAgZW50cnlDb250YWluZXIuc2V0SWQoZmlsZW5hbWUpOwotCi0gICAgICAvLyBQdXQgdGhlIG5ldyBlbnRyeSBjb250YWluZXIgaW50byB0aGUgY29udGFpbmVyIG1hcAotICAgICAgY29udGFpbmVyTWFwLnB1dChmaWxlbmFtZSwgZW50cnlDb250YWluZXIpOwotICAgIH0KLQotICAgIHJldHVybiBlbnRyeUNvbnRhaW5lcjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgb3BlcmF0aW9uIGZyb20gcG9ydCB0eXBlLgotICAgKiBAcGFyYW0gcG9ydFR5cGUgcG9ydCB0eXBlLgotICAgKiBAcGFyYW0gb3BlcmF0aW9uTmFtZSBvcGVyYXRpb24gbmFtZS4KLSAgICogQHJldHVybiBvcGVyYXRpb24gZnJvbSBwb3J0IHR5cGUuCi0gICAqLwotICBwcm90ZWN0ZWQgT3BlcmF0aW9uIGdldE9wZXJhdGlvbkZyb21Qb3J0VHlwZSgKLSAgICBQb3J0VHlwZSBwb3J0VHlwZSwKLSAgICBTdHJpbmcgb3BlcmF0aW9uTmFtZSkKLSAgewotICAgIC8vIEZJWDogd3NkbDRqIGF2YWlsYWJsZSBtZXRob2QgY2FsbCBiZWxvdyBpbXBsaWVzIHRoYXQgb25seSAKLSAgICAvLyBuYW1lK2lucHV0bmFtZStvdXRwdXRuYW1lIHVuaXF1ZWx5IGRlZmluZXMgb3BlcmF0aW9uIAotICAgIC8vIFVzZSB0aGlzIGluc3RlYWQgZm9yIG5vdzogLSBnZXQgdGhlIGZpcnN0IG9wZXJhdGlvbiB3ZSBmaW5kLi4uCi0gICAgT3BlcmF0aW9uIG9wID0gbnVsbDsKLSAgICBpZiAocG9ydFR5cGUuZ2V0T3BlcmF0aW9ucygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3Igb3BJdCA9IHBvcnRUeXBlLmdldE9wZXJhdGlvbnMoKS5pdGVyYXRvcigpOwotCi0gICAgICB3aGlsZSAob3BJdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIG9wID0gKE9wZXJhdGlvbikgb3BJdC5uZXh0KCk7Ci0gICAgICAgIGlmIChvcGVyYXRpb25OYW1lLmVxdWFscyhvcC5nZXROYW1lKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIG9wOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGw7IC8vIG5vIG1hdGNoaW5nIG9wZXJhdGlvbiBmb3VuZAotICB9Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgZGVmaW5pdGlvbiBhc3NlcnRpb25zLgotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggY2xhc3MgcHJlZml4LgotICAgKiBAcGFyYW0gY2FuZGlkYXRlIGNhbmRpZGF0ZS4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgZHVyaW5nIHByb2Nlc3NpbmcuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzRGVmaW5pdGlvbkFzc2VydGlvbnMoCi0gICAgU3RyaW5nIGNsYXNzUHJlZml4LAotICAgIENhbmRpZGF0ZUluZm8gY2FuZGlkYXRlKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgRW50cnkgZW50cnkgPSBudWxsOwotCi0gICAgRGVmaW5pdGlvbltdIHdzZGxEZWZpbml0aW9ucyA9IGNhbmRpZGF0ZS5nZXREZWZpbml0aW9ucygpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3c2RsRGVmaW5pdGlvbnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gd3NkbERlZmluaXRpb25zW2ldOwotICAgICAgaWYgKGRlZmluaXRpb24gPT0gbnVsbCkKLSAgICAgICAgY29udGludWU7Ci0gICAgICAvLyBDcmVhdGUgZW50cnkgCi0gICAgICBlbnRyeSA9IHRoaXMucmVwb3J0ZXIuZ2V0UmVwb3J0KCkuY3JlYXRlRW50cnkoKTsKLSAgICAgIGVudHJ5LnNldEVudHJ5VHlwZShFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fREVGSU5JVElPTlMpKTsKLSAgICAgIGVudHJ5LnNldFJlZmVyZW5jZUlEKGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCkpOwotICAgICAgZW50cnkuc2V0RW50cnlEZXRhaWwoZGVmaW5pdGlvbik7Ci0KLSAgICAgIC8vIFNldCBlbnRyeSBjb250YWluZXIKLSAgICAgIGVudHJ5LnNldEVudHJ5Q29udGFpbmVyKAotICAgICAgICBnZXRFbnRyeUNvbnRhaW5lcihkZWZpbml0aW9uLmdldERvY3VtZW50QmFzZVVSSSgpKSk7Ci0KLSAgICAgIC8vIFByb2Nlc3MgYWxsIG9mIHRoZSBkZWZpbml0aW9uIHJlbGF0ZWQgdGVzdCBhc3NlcnRpb25zCi0gICAgICBwcm9jZXNzQXNzZXJ0aW9ucygKLSAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgIG5ldyBFbnRyeUNvbnRleHQoZW50cnksIGNhbmRpZGF0ZS5nZXRXc2RsRG9jdW1lbnQoKSkpOwotICAgICAgLy8gQUREOiBuZWVkIHRvIHVzZSBoZXJlIHRoZSBzcGVjaWZpYyBkb2N1bWVudCBjb3JyZXNwb25kaW5nIHRvIHRoZSBkZWZpbml0aW9uPz8KLQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBQcm9jZXNzIHR5cGVzIGFzc2VydGlvbnMuCi0gICAqIEBwYXJhbSBjbGFzc1ByZWZpeCBjbGFzcyBwcmVmaXguCi0gICAqIEBwYXJhbSBjYW5kaWRhdGUgY2FuZGlkYXRlLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtIG9jY3VycyBkdXJpbmcgcHJvY2Vzc2luZyAKLSAgICogICAgICAgICB0eXBlIGFzc2VydGlvbnMuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzVHlwZXNBc3NlcnRpb25zKAotICAgIFN0cmluZyBjbGFzc1ByZWZpeCwKLSAgICBDYW5kaWRhdGVJbmZvIGNhbmRpZGF0ZSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBFbnRyeSBlbnRyeSA9IG51bGw7Ci0KLSAgICBUeXBlc1tdIHdzZGxUeXBlcyA9IGNhbmRpZGF0ZS5nZXRUeXBlcygpOwotICAgIERlZmluaXRpb25bXSB3c2RsRGVmaW5pdGlvbnMgPSBjYW5kaWRhdGUuZ2V0RGVmaW5pdGlvbnMoKTsKLQotICAgIC8vIElmIHRoZXJlIGFyZSBubyB0eXBlcyBlbGVtZW50cywgdGhlbiBzZXQgYWxsIHJlc3VsdHMgdG8gbWlzc2luZ0lucHV0ICAgCi0gICAgaWYgKHdzZGxUeXBlcyA9PSBudWxsIHx8IHdzZGxUeXBlcy5sZW5ndGggPT0gMCkKLSAgICB7Ci0gICAgICAvLyBTZXQgbWlzc2luZ0lucHV0IGZvciBhbGwgdGVzdCBhc3NlcnRpb25zIHdpdGggdGhpcyBlbnRyeSB0eXBlCi0gICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX1RZUEVTKSk7Ci0gICAgfQotCi0gICAgZWxzZQotICAgIHsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd3NkbFR5cGVzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBUeXBlcyB0eXBlcyA9IHdzZGxUeXBlc1tpXTsKLSAgICAgICAgaWYgKHR5cGVzID09IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBubyBUeXBlcyBlbGVtZW50IGluIGktdGggZG9jdW1lbnQKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENyZWF0ZSBlbnRyeSAKLSAgICAgICAgZW50cnkgPSB0aGlzLnJlcG9ydGVyLmdldFJlcG9ydCgpLmNyZWF0ZUVudHJ5KCk7Ci0gICAgICAgIGVudHJ5LnNldEVudHJ5VHlwZShFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fVFlQRVMpKTsKLSAgICAgICAgZW50cnkuc2V0UmVmZXJlbmNlSUQoCi0gICAgICAgICAgY2FuZGlkYXRlLmdldERlZmluaXRpb24odHlwZXMpLmdldERvY3VtZW50QmFzZVVSSSgpICsgIi1UeXBlcyIpOwotICAgICAgICBlbnRyeS5zZXRFbnRyeURldGFpbCh0eXBlcyk7Ci0KLSAgICAgICAgLy8gU2V0IGVudHJ5IGNvbnRhaW5lcgotICAgICAgICBlbnRyeS5zZXRFbnRyeUNvbnRhaW5lcigKLSAgICAgICAgICBnZXRFbnRyeUNvbnRhaW5lcih3c2RsRGVmaW5pdGlvbnNbaV0uZ2V0RG9jdW1lbnRCYXNlVVJJKCkpKTsKLQotICAgICAgICAvLyBQcm9jZXNzIGFsbCBvZiB0aGUgVHlwZXMgcmVsYXRlZCB0ZXN0IGFzc2VydGlvbnMKLSAgICAgICAgcHJvY2Vzc0Fzc2VydGlvbnMoCi0gICAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgICAgbmV3IEVudHJ5Q29udGV4dChlbnRyeSwgY2FuZGlkYXRlLmdldFdzZGxEb2N1bWVudCgpKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgaW1wb3J0IGFzc2VydGlvbnMuIAotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggY2xhc3MgcHJlZml4LgotICAgKiBAcGFyYW0gY2FuZGlkYXRlIGNhbmRpZGF0ZS4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbSBvY2N1cnMgZHVyaW5nIHByb2Nlc3NpbmcgCi0gICAqICAgICAgICAgaW1wb3J0IGFzc2VydGlvbnMuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzSW1wb3J0QXNzZXJ0aW9ucygKLSAgICBTdHJpbmcgY2xhc3NQcmVmaXgsCi0gICAgQ2FuZGlkYXRlSW5mbyBjYW5kaWRhdGUpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBFbnRyeSBlbnRyeSA9IG51bGw7Ci0KLSAgICBJbXBvcnRbXSB3c2RsSW1wb3J0cyA9IGNhbmRpZGF0ZS5nZXRJbXBvcnRzKCk7Ci0KLSAgICAvLyBJZiB0aGVyZSBhcmUgbm8gaW1wb3J0IGVsZW1lbnRzLCB0aGVuIHNldCBhbGwgcmVzdWx0cyB0byBtaXNzaW5nSW5wdXQgICAKLSAgICBpZiAod3NkbEltcG9ydHMgPT0gbnVsbCB8fCB3c2RsSW1wb3J0cy5sZW5ndGggPT0gMCkKLSAgICB7Ci0gICAgICAvLyBTZXQgbWlzc2luZ0lucHV0IGZvciBhbGwgdGVzdCBhc3NlcnRpb25zIHdpdGggdGhpcyBlbnRyeSB0eXBlCi0gICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX0lNUE9SVCkpOwotICAgIH0KLQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdzZGxJbXBvcnRzLmxlbmd0aDsgaSsrKQotICAgICAgewotICAgICAgICBJbXBvcnQgd3NkbEltcG9ydCA9IHdzZGxJbXBvcnRzW2ldOwotICAgICAgICAvLyBDcmVhdGUgZW50cnkgCi0gICAgICAgIGVudHJ5ID0gdGhpcy5yZXBvcnRlci5nZXRSZXBvcnQoKS5jcmVhdGVFbnRyeSgpOwotICAgICAgICBlbnRyeS5zZXRFbnRyeVR5cGUoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX0lNUE9SVCkpOwotICAgICAgICBlbnRyeS5zZXRSZWZlcmVuY2VJRCh3c2RsSW1wb3J0LmdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICAgICAgZW50cnkuc2V0RW50cnlEZXRhaWwod3NkbEltcG9ydCk7Ci0KLSAgICAgICAgLy8gU2V0IGVudHJ5IGNvbnRhaW5lcgotICAgICAgICBlbnRyeS5zZXRFbnRyeUNvbnRhaW5lcihnZXRFbnRyeUNvbnRhaW5lcih3c2RsSW1wb3J0LmdldExvY2F0aW9uVVJJKCkpKTsKLQotICAgICAgICAvLyBQcm9jZXNzIGFsbCBvZiB0aGUgaW1wb3J0IHJlbGF0ZWQgdGVzdCBhc3NlcnRpb25zCi0gICAgICAgIHByb2Nlc3NBc3NlcnRpb25zKAotICAgICAgICAgIGNsYXNzUHJlZml4LAotICAgICAgICAgIG5ldyBFbnRyeUNvbnRleHQoZW50cnksIGNhbmRpZGF0ZS5nZXRXc2RsRG9jdW1lbnQoKSkpOwotICAgICAgICAvLyBBREQ6IG5lZWQgdG8gdXNlIGhlcmUgdGhlIHNwZWNpZmljIGRvY3VtZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGltcG9ydCEhCi0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgcG9ydCBhc3NlcnRpb25zLgotICAgKiBAcGFyYW0gcG9ydCBhIHBvcnQuCi0gICAqIEBwYXJhbSBzZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2UgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggY2xhc3MgcHJlZml4LgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IFdTREwgZG9jdW1lbnQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW0gb2NjdXJzIGR1cmluZyBwcm9jZXNzaW5nIAotICAgKiAgICAgICAgIHBvcnQgYXNzZXJ0aW9ucy4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NQb3J0QXNzZXJ0aW9ucygKLSAgICBQb3J0IHBvcnQsCi0gICAgU2VydmljZVJlZmVyZW5jZSBzZXJ2aWNlUmVmZXJlbmNlLAotICAgIFN0cmluZyBjbGFzc1ByZWZpeCwKLSAgICBXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIEVudHJ5IGVudHJ5ID0gbnVsbDsKLQotICAgIC8vIENyZWF0ZSBlbnRyeSAJICAKLSAgICBlbnRyeSA9IHRoaXMucmVwb3J0ZXIuZ2V0UmVwb3J0KCkuY3JlYXRlRW50cnkoKTsKLSAgICBlbnRyeS5zZXRFbnRyeVR5cGUoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX1BPUlQpKTsKLSAgICBlbnRyeS5zZXRSZWZlcmVuY2VJRChwb3J0LmdldE5hbWUoKSk7Ci0gICAgZW50cnkuc2V0UGFyZW50RWxlbWVudE5hbWUoCi0gICAgICBzZXJ2aWNlUmVmZXJlbmNlLmdldFdTRExFbGVtZW50KCkuZ2V0UGFyZW50RWxlbWVudE5hbWUoKSk7Ci0gICAgZW50cnkuc2V0RW50cnlEZXRhaWwocG9ydCk7Ci0KLSAgICAvLyBQcm9jZXNzIGFzc2VydGlvbnMgZm9yIHRoaXMgYXJ0aWZhY3QgYWdhaW5zdCB0aGUgdGFyZ2V0IGNvbnRleHQKLSAgICBwcm9jZXNzQXNzZXJ0aW9ucyhjbGFzc1ByZWZpeCwgbmV3IEVudHJ5Q29udGV4dChlbnRyeSwgd3NkbERvY3VtZW50KSk7Ci0gIH0KLQotICAvKioKLSAgICogUHJvY2VzcyBiaW5kaW5nIGFzc2VydGlvbnMuCi0gICAqIEBwYXJhbSBiaW5kaW5nIGJpbmRpbmcuCi0gICAqIEBwYXJhbSBzZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2UgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggY2xhc3MgcHJlZml4LgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IFdTREwgZG9jdW1lbnQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW0gb2NjdXJzIGR1cmluZyBwcm9jZXNzaW5nIAotICAgKiAgICAgICAgIGJpbmRpbmcgYXNzZXJ0aW9ucy4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NCaW5kaW5nQXNzZXJ0aW9ucygKLSAgICBCaW5kaW5nIGJpbmRpbmcsCi0gICAgU2VydmljZVJlZmVyZW5jZSBzZXJ2aWNlUmVmZXJlbmNlLAotICAgIFN0cmluZyBjbGFzc1ByZWZpeCwKLSAgICBXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIEVudHJ5IGVudHJ5ID0gbnVsbDsKLSAgICBRTmFtZSBiaW5kaW5nUU5hbWUgPSBiaW5kaW5nLmdldFFOYW1lKCk7Ci0KLSAgICAvLyBDcmVhdGUgZW50cnkgCi0gICAgZW50cnkgPSB0aGlzLnJlcG9ydGVyLmdldFJlcG9ydCgpLmNyZWF0ZUVudHJ5KCk7Ci0gICAgZW50cnkuc2V0RW50cnlUeXBlKAotICAgICAgRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX0JJTkRJTkcpKTsKLSAgICBlbnRyeS5zZXRSZWZlcmVuY2VJRChiaW5kaW5nUU5hbWUudG9TdHJpbmcoKSk7Ci0gICAgZW50cnkuc2V0RW50cnlEZXRhaWwoYmluZGluZyk7Ci0KLSAgICAvLyBTZXQgZW50cnkgY29udGFpbmVyCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0KLSAgICAgIGFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0RGVmaW5pdGlvbihiaW5kaW5nKTsKLSAgICBlbnRyeS5zZXRFbnRyeUNvbnRhaW5lcigKLSAgICAgIGdldEVudHJ5Q29udGFpbmVyKAotICAgICAgICAoZGVmaW5pdGlvbiA9PSBudWxsID8gbnVsbCA6IGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCkpKSk7Ci0KLSAgICAvLyBQcm9jZXNzIGJpbmRpbmcgdGVzdCBhc3NlcnRpb25zCi0gICAgcHJvY2Vzc0Fzc2VydGlvbnMoY2xhc3NQcmVmaXgsIG5ldyBFbnRyeUNvbnRleHQoZW50cnksIHdzZGxEb2N1bWVudCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgcG9ydCB0eXBlIGFzc2VydGlvbnMuCi0gICAqIEBwYXJhbSBwb3J0VHlwZSBwb3J0IHR5cGUuCi0gICAqIEBwYXJhbSBzZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2UgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggY2xhc3MgcHJlZml4LgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IFdTREwgZG9jdW1lbnQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW0gb2NjdXJzIGR1cmluZyBwcm9jZXNzaW5nIAotICAgKiAgICAgICAgIHBvcnQgdHlwZSBhc3NlcnRpb25zLgotICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzUG9ydFR5cGVBc3NlcnRpb25zKAotICAgIFBvcnRUeXBlIHBvcnRUeXBlLAotICAgIFNlcnZpY2VSZWZlcmVuY2Ugc2VydmljZVJlZmVyZW5jZSwKLSAgICBTdHJpbmcgY2xhc3NQcmVmaXgsCi0gICAgV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIEVudHJ5IGVudHJ5ID0gbnVsbDsKLSAgICBRTmFtZSBwb3J0VHlwZVFOYW1lID0gcG9ydFR5cGUuZ2V0UU5hbWUoKTsKLQotICAgIC8vIENyZWF0ZSBlbnRyeSAKLSAgICBlbnRyeSA9IHRoaXMucmVwb3J0ZXIuZ2V0UmVwb3J0KCkuY3JlYXRlRW50cnkoKTsKLSAgICBlbnRyeS5zZXRFbnRyeVR5cGUoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX1BPUlRUWVBFKSk7Ci0gICAgZW50cnkuc2V0UmVmZXJlbmNlSUQocG9ydFR5cGVRTmFtZS50b1N0cmluZygpKTsKLSAgICBlbnRyeS5zZXRFbnRyeURldGFpbChwb3J0VHlwZSk7Ci0KLSAgICAvLyBTZXQgZW50cnkgY29udGFpbmVyCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0KLSAgICAgIGFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0RGVmaW5pdGlvbihwb3J0VHlwZSk7Ci0gICAgZW50cnkuc2V0RW50cnlDb250YWluZXIoCi0gICAgICBnZXRFbnRyeUNvbnRhaW5lcigKLSAgICAgICAgKGRlZmluaXRpb24gPT0gbnVsbCA/IG51bGwgOiBkZWZpbml0aW9uLmdldERvY3VtZW50QmFzZVVSSSgpKSkpOwotCi0gICAgLy8gUHJvY2VzcyB0ZXN0IGFzc2VydGlvbnMKLSAgICBwcm9jZXNzQXNzZXJ0aW9ucyhjbGFzc1ByZWZpeCwgbmV3IEVudHJ5Q29udGV4dChlbnRyeSwgd3NkbERvY3VtZW50KSk7Ci0gIH0KLQotICAvKioKLSAgICogUHJvY2VzcyBvcGVyYXRpb24gYXNzZXJ0aW9ucy4KLSAgICogQHBhcmFtIG9wZXJhdGlvbiBhbiBvcGVyYXRpb24uCi0gICAqIEBwYXJhbSBwb3J0VHlwZSBwb3J0IHR5cGUuCi0gICAqIEBwYXJhbSBzZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2UgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggY2xhc3MgcHJlZml4LgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IFdTREwgZG9jdW1lbnQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW0gb2NjdXJzIGR1cmluZyBwcm9jZXNzaW5nIAotICAgKiAgICAgICAgIG9wZXJhdGlvbiBhc3NlcnRpb25zLgotICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzT3BlcmF0aW9uQXNzZXJ0aW9ucygKLSAgICBPcGVyYXRpb24gb3BlcmF0aW9uLAotICAgIFBvcnRUeXBlIHBvcnRUeXBlLAotICAgIFNlcnZpY2VSZWZlcmVuY2Ugc2VydmljZVJlZmVyZW5jZSwKLSAgICBTdHJpbmcgY2xhc3NQcmVmaXgsCi0gICAgV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBxdWFsaWZ5IG9wZXJhdGlvbiB3aXRoIHNlcnZpY2UgbG9jYXRpb24gZnJvbSBjb25maWcuCQotICAgIEVudHJ5IGVudHJ5ID0gbnVsbDsKLQotICAgIC8vIENyZWF0ZSBlbnRyeSAKLSAgICBlbnRyeSA9IHRoaXMucmVwb3J0ZXIuZ2V0UmVwb3J0KCkuY3JlYXRlRW50cnkoKTsKLSAgICBlbnRyeS5zZXRFbnRyeVR5cGUoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX09QRVJBVElPTikpOwotICAgIGVudHJ5LnNldFJlZmVyZW5jZUlEKG9wZXJhdGlvbi5nZXROYW1lKCkpOwotICAgIGVudHJ5LnNldFBhcmVudEVsZW1lbnROYW1lKHBvcnRUeXBlLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCkpOwotICAgIGVudHJ5LnNldEVudHJ5RGV0YWlsKG9wZXJhdGlvbik7Ci0KLSAgICAvLyBTZXQgZW50cnkgY29udGFpbmVyCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0KLSAgICAgIGFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0RGVmaW5pdGlvbihwb3J0VHlwZSk7Ci0gICAgZW50cnkuc2V0RW50cnlDb250YWluZXIoCi0gICAgICBnZXRFbnRyeUNvbnRhaW5lcigKLSAgICAgICAgKGRlZmluaXRpb24gPT0gbnVsbCA/IG51bGwgOiBkZWZpbml0aW9uLmdldERvY3VtZW50QmFzZVVSSSgpKSkpOwotCi0gICAgLy8gUHJvY2VzcyB0ZXN0IGFzc2VydGlvbnMKLSAgICBwcm9jZXNzQXNzZXJ0aW9ucyhjbGFzc1ByZWZpeCwgbmV3IEVudHJ5Q29udGV4dChlbnRyeSwgd3NkbERvY3VtZW50KSk7Ci0gIH0KLQotICAvKioKLSAgICogUHJvY2VzcyBvcGVyYXRpb24gYXNzZXJ0aW9ucy4KLSAgICogQHBhcmFtIHBvcnRUeXBlIHBvcnQgdHlwZS4KLSAgICogQHBhcmFtIHNlcnZpY2VSZWZlcmVuY2Ugc2VydmljZSByZWZlcmVuY2UuCi0gICAqIEBwYXJhbSBjbGFzc1ByZWZpeCBjbGFzcyBwcmVmaXguCi0gICAqIEBwYXJhbSB3c2RsRG9jdW1lbnQgV1NETCBkb2N1bWVudC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbSBvY2N1cnMgZHVyaW5nIHByb2Nlc3NpbmcgCi0gICAqICAgICAgICAgb3BlcmF0aW9uIGFzc2VydGlvbnMuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzT3BlcmF0aW9uQXNzZXJ0aW9ucygKLSAgICBQb3J0VHlwZSBwb3J0VHlwZSwKLSAgICBTZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2VSZWZlcmVuY2UsCi0gICAgU3RyaW5nIGNsYXNzUHJlZml4LAotICAgIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gRm9yIGVhY2ggb3BlcmF0aW9uLCAKLSAgICBpZiAocG9ydFR5cGUuZ2V0T3BlcmF0aW9ucygpID09IG51bGwpCi0gICAgewotICAgICAgc2V0TWlzc2luZ0lucHV0KEVudHJ5VHlwZS5nZXRFbnRyeVR5cGUoVFlQRV9ERVNDUklQVElPTl9PUEVSQVRJT04pKTsKLSAgICB9Ci0KLSAgICBlbHNlCi0gICAgewotICAgICAgT3BlcmF0aW9uIG9wZXJhdGlvbjsKLSAgICAgIEl0ZXJhdG9yIG9wSXQgPSBwb3J0VHlwZS5nZXRPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChvcEl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgb3BlcmF0aW9uID0gKE9wZXJhdGlvbikgb3BJdC5uZXh0KCk7Ci0gICAgICAgIGlmIChvcGVyYXRpb24gPT0gbnVsbCB8fCBvcGVyYXRpb24uaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX09QRVJBVElPTikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcHJvY2Vzc09wZXJhdGlvbkFzc2VydGlvbnMoCi0gICAgICAgICAgICBvcGVyYXRpb24sCi0gICAgICAgICAgICBwb3J0VHlwZSwKLSAgICAgICAgICAgIHNlcnZpY2VSZWZlcmVuY2UsCi0gICAgICAgICAgICBjbGFzc1ByZWZpeCwKLSAgICAgICAgICAgIHdzZGxEb2N1bWVudCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgbWVzc2FnZSBhc3NlcnRpb25zLgotICAgKiBAcGFyYW0gbWVzc2FnZSBhIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBzZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2UgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggY2xhc3MgcHJlZml4LgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IFdTREwgZG9jdW1lbnQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW0gb2NjdXJzIGR1cmluZyBwcm9jZXNzaW5nIAotICAgKiAgICAgICAgIG1lc3NhZ2UgYXNzZXJ0aW9ucy4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NNZXNzYWdlQXNzZXJ0aW9ucygKLSAgICBNZXNzYWdlIG1lc3NhZ2UsCi0gICAgU2VydmljZVJlZmVyZW5jZSBzZXJ2aWNlUmVmZXJlbmNlLAotICAgIFN0cmluZyBjbGFzc1ByZWZpeCwKLSAgICBXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgRW50cnkgZW50cnkgPSBudWxsOwotICAgIFFOYW1lIG1lc3NhZ2VRTmFtZSA9IG1lc3NhZ2UuZ2V0UU5hbWUoKTsKLQotICAgIC8vIENyZWF0ZSBlbnRyeSAKLSAgICBlbnRyeSA9IHRoaXMucmVwb3J0ZXIuZ2V0UmVwb3J0KCkuY3JlYXRlRW50cnkoKTsKLSAgICBlbnRyeS5zZXRFbnRyeVR5cGUoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX01FU1NBR0UpKTsKLSAgICBlbnRyeS5zZXRSZWZlcmVuY2VJRChtZXNzYWdlUU5hbWUudG9TdHJpbmcoKSk7Ci0gICAgZW50cnkuc2V0RW50cnlEZXRhaWwobWVzc2FnZSk7Ci0KLSAgICAvLyBTZXQgZW50cnkgY29udGFpbmVyCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0KLSAgICAgIGFuYWx5emVyQ29udGV4dC5nZXRDYW5kaWRhdGVJbmZvKCkuZ2V0RGVmaW5pdGlvbihtZXNzYWdlKTsKLSAgICBlbnRyeS5zZXRFbnRyeUNvbnRhaW5lcigKLSAgICAgIGdldEVudHJ5Q29udGFpbmVyKAotICAgICAgICAoZGVmaW5pdGlvbiA9PSBudWxsID8gbnVsbCA6IGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCkpKSk7Ci0KLSAgICAvLyBQcm9jZXNzIGJpbmRpbmcgdGVzdCBhc3NlcnRpb25zCi0gICAgcHJvY2Vzc0Fzc2VydGlvbnMoY2xhc3NQcmVmaXgsIG5ldyBFbnRyeUNvbnRleHQoZW50cnksIHdzZGxEb2N1bWVudCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIFByb2Nlc3MgbWVzc2FnZSBhc3NlcnRpb25zLgotICAgKiBAcGFyYW0gYmluZGluZyBhIGJpbmRpbmcuCi0gICAqIEBwYXJhbSBzZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2UgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggY2xhc3MgcHJlZml4LgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IFdTREwgZG9jdW1lbnQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW0gb2NjdXJzIGR1cmluZyBwcm9jZXNzaW5nIAotICAgKiAgICAgICAgIG1lc3NhZ2UgYXNzZXJ0aW9ucy4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NNZXNzYWdlQXNzZXJ0aW9ucygKLSAgICBCaW5kaW5nIGJpbmRpbmcsCi0gICAgU2VydmljZVJlZmVyZW5jZSBzZXJ2aWNlUmVmZXJlbmNlLAotICAgIFN0cmluZyBjbGFzc1ByZWZpeCwKLSAgICBXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIEhhc2hTZXQgbWVzc2FnZVNldDsKLQotICAgIGlmIChiaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCkgIT0gbnVsbCkKLSAgICB7IC8vIGNhbiBkbyBub3RoaW5nIGlmIGhhdmUgbm8gb3BlcmF0aW9ucyBkZWZpbmVkCi0gICAgICBtZXNzYWdlU2V0ID0KLSAgICAgICAgV1NETFV0aWxzLmZpbmRNZXNzYWdlcyh3c2RsRG9jdW1lbnQuZ2V0RGVmaW5pdGlvbnMoKSwgYmluZGluZyk7Ci0KLSAgICAgIC8vIFByb2Nlc3MgYW55IG1lc3NhZ2VzIHRoYXQgd2VyZSBmb3VuZCAgICAKLSAgICAgIGlmIChtZXNzYWdlU2V0LnNpemUoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIEl0ZXJhdG9yIG1lc3NhZ2VJdCA9IG1lc3NhZ2VTZXQuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKG1lc3NhZ2VJdC5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBNZXNzYWdlIG1lc3NhZ2UgPSAoTWVzc2FnZSkgbWVzc2FnZUl0Lm5leHQoKTsKLSAgICAgICAgICBpZiAoIW1lc3NhZ2UuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHByb2Nlc3NNZXNzYWdlQXNzZXJ0aW9ucygKLSAgICAgICAgICAgICAgbWVzc2FnZSwKLSAgICAgICAgICAgICAgc2VydmljZVJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgY2xhc3NQcmVmaXgsCi0gICAgICAgICAgICAgIHdzZGxEb2N1bWVudCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogUHJvY2VzcyBtZXNzYWdlIGFzc2VydGlvbnMuCi0gICAqIEBwYXJhbSBwb3J0VHlwZSBwb3J0IHR5cGUuCi0gICAqIEBwYXJhbSBzZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2UgcmVmZXJlbmNlLgotICAgKiBAcGFyYW0gY2xhc3NQcmVmaXggY2xhc3MgcHJlZml4LgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IFdTREwgZG9jdW1lbnQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW0gb2NjdXJzIGR1cmluZyBwcm9jZXNzaW5nIAotICAgKiAgICAgICAgIG1lc3NhZ2UgYXNzZXJ0aW9ucy4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NNZXNzYWdlQXNzZXJ0aW9ucygKLSAgICBQb3J0VHlwZSBwb3J0VHlwZSwKLSAgICBTZXJ2aWNlUmVmZXJlbmNlIHNlcnZpY2VSZWZlcmVuY2UsCi0gICAgU3RyaW5nIGNsYXNzUHJlZml4LAotICAgIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBIYXNoU2V0IG1lc3NhZ2VTZXQgPSBuZXcgSGFzaFNldCgpOwotCi0gICAgaWYgKHBvcnRUeXBlLmdldE9wZXJhdGlvbnMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIGNhbiBkbyBub3RoaW5nIGlmIGhhdmUgbm8gb3BlcmF0aW9ucyBkZWZpbmVkCi0KLSAgICAgIEl0ZXJhdG9yIG9wSXQgPSBwb3J0VHlwZS5nZXRPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLQotICAgICAgd2hpbGUgKG9wSXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBPcGVyYXRpb24gb3AgPSAoT3BlcmF0aW9uKSBvcEl0Lm5leHQoKTsKLQotICAgICAgICAvLyBTaW5jZSB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB3ZSBoYXZlIGJvdGggYW5kIGlucHV0IGFuZCBvdXRwdXQgbWVzc2FnZSwgCi0gICAgICAgIC8vIGNoZWNrIGZvciBpdHMgZXhpc3RlbmNlIGJlZm9yZSBhZGRpbmcgaXQKLSAgICAgICAgaWYgKG9wLmdldElucHV0KCkgIT0gbnVsbCAmJiAhb3AuZ2V0SW5wdXQoKS5nZXRNZXNzYWdlKCkuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICBtZXNzYWdlU2V0LmFkZChvcC5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKSk7Ci0KLSAgICAgICAgaWYgKG9wLmdldE91dHB1dCgpICE9IG51bGwKLSAgICAgICAgICAmJiAhb3AuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgbWVzc2FnZVNldC5hZGQob3AuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpKTsKLQotICAgICAgICAvLyBhbHNvIG1lc3NhZ2VzIGZyb20gYW55IEZhdWx0cyBkZWZpbmVkIHdpdGhpbiB0aGUgb3BlcmF0aW9uCi0gICAgICAgIGlmIChvcC5nZXRGYXVsdHMoKSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgSXRlcmF0b3IgZmF1bHRJdCA9IG9wLmdldEZhdWx0cygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgTWVzc2FnZSBtZXNzYWdlOwotICAgICAgICAgIHdoaWxlIChmYXVsdEl0Lmhhc05leHQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBtZXNzYWdlID0gKChGYXVsdCkgZmF1bHRJdC5uZXh0KCkpLmdldE1lc3NhZ2UoKTsKLSAgICAgICAgICAgIGlmICghbWVzc2FnZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICBtZXNzYWdlU2V0LmFkZChtZXNzYWdlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKG1lc3NhZ2VTZXQuc2l6ZSgpID09IDApCi0gICAgICB7Ci0gICAgICAgIC8vIFNldCBhbGwgbWVzc2FnZSB0ZXN0IGFzc2VydGlvbiByZXN1bHRzIHRvIG1pc3NpbmdJbnB1dAotICAgICAgICBzZXRNaXNzaW5nSW5wdXQoRW50cnlUeXBlLmdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX01FU1NBR0UpKTsKLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBub3cgc3RlcCB0aHJvdWdoIGVhY2ggZGVyaXZlZCBNZXNzYWdlCi0gICAgICAgIEl0ZXJhdG9yIG1lc3NhZ2VJdCA9IG1lc3NhZ2VTZXQuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKG1lc3NhZ2VJdC5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBwcm9jZXNzTWVzc2FnZUFzc2VydGlvbnMoCi0gICAgICAgICAgICAoTWVzc2FnZSkgKG1lc3NhZ2VJdC5uZXh0KCkpLAotICAgICAgICAgICAgc2VydmljZVJlZmVyZW5jZSwKLSAgICAgICAgICAgIGNsYXNzUHJlZml4LAotICAgICAgICAgICAgd3NkbERvY3VtZW50KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBQcm9jZXNzIG1lc3NhZ2UgYXNzZXJ0aW9ucy4KLSAgICogQHBhcmFtIG9wIC0gb3BlcmF0aW9uLgotICAgKiBAcGFyYW0gc2VydmljZVJlZmVyZW5jZSBzZXJ2aWNlIHJlZmVyZW5jZS4KLSAgICogQHBhcmFtIGNsYXNzUHJlZml4IGNsYXNzIHByZWZpeC4KLSAgICogQHBhcmFtIHdzZGxEb2N1bWVudCBXU0RMIGRvY3VtZW50LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtIG9jY3VycyBkdXJpbmcgcHJvY2Vzc2luZyAKLSAgICogICAgICAgICBtZXNzYWdlIGFzc2VydGlvbnMuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzTWVzc2FnZUFzc2VydGlvbnMoCi0gICAgT3BlcmF0aW9uIG9wLAotICAgIFNlcnZpY2VSZWZlcmVuY2Ugc2VydmljZVJlZmVyZW5jZSwKLSAgICBTdHJpbmcgY2xhc3NQcmVmaXgsCi0gICAgV1NETERvY3VtZW50IHdzZGxEb2N1bWVudCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIEhhc2hTZXQgbWVzc2FnZVNldCA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgaWYgKG9wLmdldElucHV0KCkgIT0gbnVsbCAmJiAhb3AuZ2V0SW5wdXQoKS5nZXRNZXNzYWdlKCkuaXNVbmRlZmluZWQoKSkKLSAgICAgIG1lc3NhZ2VTZXQuYWRkKG9wLmdldElucHV0KCkuZ2V0TWVzc2FnZSgpKTsKLQotICAgIGlmIChvcC5nZXRPdXRwdXQoKSAhPSBudWxsICYmICFvcC5nZXRPdXRwdXQoKS5nZXRNZXNzYWdlKCkuaXNVbmRlZmluZWQoKSkKLSAgICAgIG1lc3NhZ2VTZXQuYWRkKG9wLmdldE91dHB1dCgpLmdldE1lc3NhZ2UoKSk7Ci0KLSAgICAvLyBhbHNvIG1lc3NhZ2VzIGZyb20gYW55IEZhdWx0cyBkZWZpbmVkIHdpdGhpbiB0aGUgb3BlcmF0aW9uCi0gICAgSXRlcmF0b3IgZmF1bHRJdCA9IG9wLmdldEZhdWx0cygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgTWVzc2FnZSBtZXNzYWdlOwotICAgIHdoaWxlIChmYXVsdEl0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBtZXNzYWdlID0gKChGYXVsdCkgZmF1bHRJdC5uZXh0KCkpLmdldE1lc3NhZ2UoKTsKLSAgICAgIGlmICghbWVzc2FnZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBtZXNzYWdlU2V0LmFkZChtZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBpZiAobWVzc2FnZVNldC5zaXplKCkgPT0gMCkKLSAgICB7Ci0gICAgICAvLyBTZXQgYWxsIG1lc3NhZ2UgdGVzdCBhc3NlcnRpb24gcmVzdWx0cyB0byBtaXNzaW5nSW5wdXQKLSAgICAgIHNldE1pc3NpbmdJbnB1dChFbnRyeVR5cGUuZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fTUVTU0FHRSkpOwotICAgIH0KLQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBub3cgc3RlcCB0aHJvdWdoIGVhY2ggZGVyaXZlZCBNZXNzYWdlCi0gICAgICBJdGVyYXRvciBtZXNzYWdlSXQgPSBtZXNzYWdlU2V0Lml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAobWVzc2FnZUl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgcHJvY2Vzc01lc3NhZ2VBc3NlcnRpb25zKAotICAgICAgICAgIChNZXNzYWdlKSAobWVzc2FnZUl0Lm5leHQoKSksCi0gICAgICAgICAgc2VydmljZVJlZmVyZW5jZSwKLSAgICAgICAgICBjbGFzc1ByZWZpeCwKLSAgICAgICAgICB3c2RsRG9jdW1lbnQpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5CYXNlVmFsaWRhdG9ySW1wbCNpc1ByaW1hcnlFbnRyeVR5cGVNYXRjaChvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uLCBvcmcud3NpLnRlc3QucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0KQotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gaXNQcmltYXJ5RW50cnlUeXBlTWF0Y2goCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCB0YXJnZXRDb250ZXh0KQotICB7Ci0gICAgYm9vbGVhbiBtYXRjaCA9IGZhbHNlOwotCi0gICAgLy8gSWYgdGhlIHRlc3QgYXNzZXJ0aW9uIGVudHJ5IHR5cGUgbWF0Y2hlcyB0aGUgdGFyZ2V0IGNvbnRleHQgZW50cnkgdHlwZSwgdGhlbiBjb250aW5lCi0gICAgaWYgKHRlc3RBc3NlcnRpb24KLSAgICAgIC5nZXRFbnRyeVR5cGVOYW1lKCkKLSAgICAgIC5lcXVhbHModGFyZ2V0Q29udGV4dC5nZXRFbnRyeSgpLmdldEVudHJ5VHlwZSgpLmdldFR5cGVOYW1lKCkpKQotICAgIHsKLSAgICAgIG1hdGNoID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWF0Y2g7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLmltcGwuQmFzZVZhbGlkYXRvckltcGwjaXNOb3RBcHBsaWNhYmxlKG9yZy53c2kudGVzdC5wcm9maWxlLlRlc3RBc3NlcnRpb24pCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBpc05vdEFwcGxpY2FibGUoVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uKQotICB7Ci0gICAgYm9vbGVhbiBub3RBcHBsaWNhYmxlID0gZmFsc2U7Ci0KLSAgICAvLyBBREQ6Ci0KLSAgICByZXR1cm4gbm90QXBwbGljYWJsZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0U29hcEZhdWx0cy4KLSAgICogCi0gICAqIEBwYXJhbSBpbkJpbmRpbmcgaW4gYmluZGluZy4KLSAgICogQHJldHVybiBzb2FwIGZhdWx0cy4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgd2hpbGUgcHJvY2Vzc2luZyBiaW5kaW5nIGZhdWx0cy4KLSAgICovCi0gIHByb3RlY3RlZCBTT0FQRmF1bHRbXSBnZXRTb2FwRmF1bHRzKEJpbmRpbmcgaW5CaW5kaW5nKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIFZlY3RvciBzb2FwRmF1bHRzID0gbmV3IFZlY3RvcigpOwotCi0gICAgLy8gR28gdGhyb3VnaCBlYWNoIGJpbmRpbmdGYXVsdCBvbmUgYXQgYSB0aW1lCi0gICAgQmluZGluZ0ZhdWx0W10gYmluZGluZ0ZhdWx0cyA9IGdldEFsbEJpbmRpbmdGYXVsdHMoaW5CaW5kaW5nKTsKLSAgICBmb3IgKGludCBmYXVsdCA9IDA7IGZhdWx0IDwgYmluZGluZ0ZhdWx0cy5sZW5ndGg7IGZhdWx0KyspCi0gICAgewotICAgICAgU09BUEZhdWx0IHNvYXBGYXVsdCA9IGdldFNvYXBGYXVsdChiaW5kaW5nRmF1bHRzW2ZhdWx0XSk7Ci0gICAgICBpZiAoc29hcEZhdWx0ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHNvYXBGYXVsdHMuYWRkKHNvYXBGYXVsdCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgU09BUEZhdWx0W10gc29hcEZhdWx0QXJyYXkgPSBuZXcgU09BUEZhdWx0W3NvYXBGYXVsdHMuc2l6ZSgpXTsKLSAgICBzb2FwRmF1bHRzLmNvcHlJbnRvKHNvYXBGYXVsdEFycmF5KTsKLQotICAgIHJldHVybiBzb2FwRmF1bHRBcnJheTsKLSAgfQotCi0gIC8qKgotICAqIE1ldGhvZCBnZXRBbGxCaW5kaW5nRmF1bHRzLgotICAqIAotICAqIEBwYXJhbSBpbkJpbmRpbmcgYmluZGluZy4KLSAgKiBAcmV0dXJuIGFsbCBiaW5kaW5nIGZhdWx0cy4KLSAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBvY2N1ciBkdXJpbmcgcHJvY2Vzc2luZy4KLSAgKi8KLSAgcHJvdGVjdGVkIEJpbmRpbmdGYXVsdFtdIGdldEFsbEJpbmRpbmdGYXVsdHMoQmluZGluZyBpbkJpbmRpbmcpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBWZWN0b3IgZmF1bHRzID0gbmV3IFZlY3RvcigpOwotCi0gICAgdHJ5Ci0gICAgewotCi0gICAgICBJdGVyYXRvciBiaW5kaW5nT3BlcmF0aW9ucyA9IGluQmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0KLSAgICAgIHdoaWxlIChiaW5kaW5nT3BlcmF0aW9ucy5oYXNOZXh0KCkpCi0gICAgICB7Ci0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBCaW5kaW5nT3BlcmF0aW9uIGJvID0gKEJpbmRpbmdPcGVyYXRpb24pIGJpbmRpbmdPcGVyYXRpb25zLm5leHQoKTsKLSAgICAgICAgICBJdGVyYXRvciBiaW5kaW5nRmF1bHRzID0gYm8uZ2V0QmluZGluZ0ZhdWx0cygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKGJpbmRpbmdGYXVsdHMuaGFzTmV4dCgpKQotICAgICAgICAgIHsKLQotICAgICAgICAgICAgZmF1bHRzLmFkZCgoQmluZGluZ0ZhdWx0KSBiaW5kaW5nRmF1bHRzLm5leHQoKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBubyBiaW5kaW5nIG9wZXJhdGlvbnMgaW4gdGhpcyBiaW5kaW5nIC0gaWdub3JlICYgY29udGludWUKLSAgICB9Ci0KLSAgICBCaW5kaW5nRmF1bHRbXSBmYXVsdEFycmF5ID0gbmV3IEJpbmRpbmdGYXVsdFtmYXVsdHMuc2l6ZSgpXTsKLSAgICBmYXVsdHMuY29weUludG8oZmF1bHRBcnJheSk7Ci0KLSAgICByZXR1cm4gZmF1bHRBcnJheTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0V1NETEZhdWx0cy4KLSAgICogCi0gICAqIEBwYXJhbSBiaW5kaW5nRmF1bHQgYSBiaW5kaW5nIGZhdWx0LgotICAgKiBAcmV0dXJuIFdTREwgZmF1bHRzLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBvY2N1ciBkdXJpbmcgcHJvY2Vzc2luZy4KLSAgICovCi0gIHByb3RlY3RlZCBTT0FQRmF1bHQgZ2V0U29hcEZhdWx0KEJpbmRpbmdGYXVsdCBiaW5kaW5nRmF1bHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBTT0FQRmF1bHQgc29hcEZhdWx0ID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBmYXVsdEV4dGVuc2libGVzID0KLSAgICAgICAgYmluZGluZ0ZhdWx0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0KLSAgICAgIHdoaWxlIChmYXVsdEV4dGVuc2libGVzLmhhc05leHQoKSAmJiBzb2FwRmF1bHQgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBzb2FwRmF1bHQgPSAoU09BUEZhdWx0KSBmYXVsdEV4dGVuc2libGVzLm5leHQoKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpCi0gICAgICAgIHsgLy8gaWdub3JlIGV2ZXJ5dGhpbmcgYnV0IFNPQVAgRmF1bHQgZWxlbWVudHMuCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLQotICAgIHJldHVybiBzb2FwRmF1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGdldFNvYXBIZWFkZXIuCi0gICAqIAotICAgKiBAcGFyYW0gaW5CaW5kaW5nIGEgYmluZGluZy4KLSAgICogQHJldHVybiBTT0FQIGhlYWRlcnMuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW1zIG9jY3VyIGR1cmluZyBwcm9jZXNzaW5nLgotICAgKi8KLSAgcHJvdGVjdGVkIFNPQVBIZWFkZXJbXSBnZXRTb2FwSGVhZGVycyhCaW5kaW5nIGluQmluZGluZykgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gR2V0IGFsbCBiaW5kaW5ncwotICAgIEJpbmRpbmdbXSBiaW5kaW5nTGlzdCA9IG5ldyBCaW5kaW5nWzFdOwotICAgIGJpbmRpbmdMaXN0WzBdID0gaW5CaW5kaW5nOwotCi0gICAgVmVjdG9yIHNvYXBIZWFkZXJMaXN0ID0gbmV3IFZlY3RvcigpOwotCi0gICAgLy8gR28gdGhyb3VnaCBlYWNoIGJpbmRpbmcgb25lIGF0IGEgdGltZQotICAgIGZvciAoaW50IGJpbmRpbmcgPSAwOyBiaW5kaW5nIDwgYmluZGluZ0xpc3QubGVuZ3RoOyBiaW5kaW5nKyspCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIC8vIGdldCB0aGUgbGlzdCBvZiBiaW5kaW5nIE9wZXJhdGlvbnMKLSAgICAgICAgQmluZGluZ09wZXJhdGlvbltdIGJpbmRpbmdPcGVyYXRpb25zID0KLSAgICAgICAgICAoQmluZGluZ09wZXJhdGlvbltdKSBiaW5kaW5nTGlzdFtiaW5kaW5nXQotICAgICAgICAgICAgLmdldEJpbmRpbmdPcGVyYXRpb25zKCkKLSAgICAgICAgICAgIC50b0FycmF5KAotICAgICAgICAgICAgbmV3IEJpbmRpbmdPcGVyYXRpb25bMF0pOwotCi0gICAgICAgIC8vIGdldCByZWZlcmVuY2VzIHRvIHRoZSBleHRlbnNpYmxlIGVsZW1lbnRzIHdpdGhpbiB0aGUgPGlucHV0PiBhbmQgPG91dHB1dD4gZWxlbWVudHMgb2YgdGhpcyBiaW5kaW5nIDxvcGVyYXRpb24+LiAKLSAgICAgICAgZm9yIChpbnQgYm8gPSAwOyBibyA8IGJpbmRpbmdPcGVyYXRpb25zLmxlbmd0aDsgYm8rKykKLSAgICAgICAgewotCi0gICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGFsbCBpbnB1dC9vdXRwdXQgZXh0ZW5zaWJsZXMsIGxvb2tpbmcgZm9yIDxTT0FQOkJvZHk+IGVsZW1lbnRzLgotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIEJpbmRpbmdJbnB1dCBiaW5kaW5nSW5wdXQgPSBiaW5kaW5nT3BlcmF0aW9uc1tib10uZ2V0QmluZGluZ0lucHV0KCk7Ci0gICAgICAgICAgICBCaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQgPQotICAgICAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uc1tib10uZ2V0QmluZGluZ091dHB1dCgpOwotCi0gICAgICAgICAgICBJdGVyYXRvciBleHRFbGVtZW50cyA9Ci0gICAgICAgICAgICAgIGJpbmRpbmdJbnB1dC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgICAgICAgd2hpbGUgKGV4dEVsZW1lbnRzLmhhc05leHQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzb2FwSGVhZGVyTGlzdC5hZGQoKFNPQVBIZWFkZXIpIGV4dEVsZW1lbnRzLm5leHQoKSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKQotICAgICAgICAgICAgICB7IC8vIGlnbm9yZSBldmVyeXRoaW5nIGJ1dCBTT0FQIEhlYWRlci4KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBleHRFbGVtZW50cyA9IGJpbmRpbmdPdXRwdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgIHdoaWxlIChleHRFbGVtZW50cy5oYXNOZXh0KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHRyeQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc29hcEhlYWRlckxpc3QuYWRkKChTT0FQSGVhZGVyKSBleHRFbGVtZW50cy5uZXh0KCkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gZSkKLSAgICAgICAgICAgICAgeyAvLyBpZ25vcmUgZXZlcnl0aGluZyBidXQgU09BUCBIZWFkZXIuCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpCi0gICAgICAgICAgeyAvLyBubyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIGZvciA8aW5wdXQ+IG9yIDxvdXRwdXQ+IC0gaWdub3JlIDogbm90IGNoZWNraW5nIHRoaXMgaGVyZS4KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICAvLyBubyBiaW5kaW5nIG9wZXJhdGlvbnMgaW4gdGhpcyBiaW5kaW5nIC0gaWdub3JlICYgY29udGludWUKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBTT0FQSGVhZGVyW10gc29hcEhlYWRlckFycmF5ID0gbmV3IFNPQVBIZWFkZXJbc29hcEhlYWRlckxpc3Quc2l6ZSgpXTsKLSAgICBzb2FwSGVhZGVyTGlzdC5jb3B5SW50byhzb2FwSGVhZGVyQXJyYXkpOwotCi0gICAgcmV0dXJuIHNvYXBIZWFkZXJBcnJheTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0U29hcEhlYWRlckZhdWx0cy4KLSAgICogCi0gICAqIFdTRExEb2N1bWVudCBnZXR0ZXIgbWV0aG9kIC0gbWF5YmUgYmV0dGVyIG9mZiBpbiBjbGFzcyBXU0RMRG9jdW1lbnQuLi4KLSAgICogCi0gICAqIEBwYXJhbSBpbkJpbmRpbmcgYSBiaW5kaW5nLgotICAgKiBAcmV0dXJuIFNPQVAgaGVhZGVyIGZhdWx0cy4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgZHVyaW5nIHByb2Nlc3NpbmcuCi0gICAqLwotICBwcm90ZWN0ZWQgU09BUEhlYWRlckZhdWx0W10gZ2V0U29hcEhlYWRlckZhdWx0cyhCaW5kaW5nIGluQmluZGluZykKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBWZWN0b3Igc29hcEhlYWRlckZhdWx0TGlzdCA9IG5ldyBWZWN0b3IoKTsKLQotICAgIC8vIEdldCB0aGUgbGlzdCBvZiBTT0FQIGhlYWRlcnMKLSAgICBTT0FQSGVhZGVyW10gc29hcEhlYWRlckFycmF5ID0gZ2V0U29hcEhlYWRlcnMoaW5CaW5kaW5nKTsKLQotICAgIC8vIEdvIHRocm91Z2ggdGhlIGxpc3QgYW5kIGdldCB0aGUgaGVhZGVyIGZhdWx0cwotICAgIExpc3QgbGlzdCA9IG51bGw7Ci0gICAgZm9yIChpbnQgaGVhZGVyID0gMDsgaGVhZGVyIDwgc29hcEhlYWRlckFycmF5Lmxlbmd0aDsgaGVhZGVyKyspCi0gICAgewotICAgICAgLy8gR2V0IGxpc3QgZm9yIHRoaXMgaGVhZGVyCi0gICAgICBpZiAoKGxpc3QgPSBzb2FwSGVhZGVyQXJyYXlbaGVhZGVyXS5nZXRTT0FQSGVhZGVyRmF1bHRzKCkpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIEFkZCB0byBwcmltYXJ5IGxpc3QgICAgICAKLSAgICAgICAgc29hcEhlYWRlckZhdWx0TGlzdC5hZGRBbGwobGlzdCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgU09BUEhlYWRlckZhdWx0W10gc29hcEhlYWRlckZhdWx0QXJyYXkgPQotICAgICAgbmV3IFNPQVBIZWFkZXJGYXVsdFtzb2FwSGVhZGVyRmF1bHRMaXN0LnNpemUoKV07Ci0gICAgc29hcEhlYWRlckZhdWx0TGlzdC5jb3B5SW50byhzb2FwSGVhZGVyRmF1bHRBcnJheSk7Ci0KLSAgICByZXR1cm4gc29hcEhlYWRlckZhdWx0QXJyYXk7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGdldFNvYXBCb2RpZXMuCi0gICAqIAotICAgKiBXU0RMRG9jdW1lbnQgZ2V0dGVyIG1ldGhvZCAtIG1heWJlIGJldHRlciBvZmYgaW4gY2xhc3MgV1NETERvY3VtZW50Li4uCi0gICAqIAotICAgKiBAcGFyYW0gaW5CaW5kaW5nIGEgYmluZGluZy4KLSAgICogQHJldHVybiBTT0FQIGJvZGllcy4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgaWYgcHJvYmxlbXMgb2NjdXIgZHVyaW5nIHByb2Nlc3NpbmcuCi0gICAqLwotICBwcm90ZWN0ZWQgU09BUEJvZHlbXSBnZXRTb2FwQm9kaWVzKEJpbmRpbmcgaW5CaW5kaW5nKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBSRU1PVkU6IEdldCBhbGwgYmluZGluZ3MKLSAgICAvL0JpbmRpbmdbXSBiaW5kaW5nTGlzdCA9IHdzZGxEb2N1bWVudC5nZXRCaW5kaW5ncygpOwotICAgIEJpbmRpbmdbXSBiaW5kaW5nTGlzdCA9IG5ldyBCaW5kaW5nWzFdOwotICAgIGJpbmRpbmdMaXN0WzBdID0gaW5CaW5kaW5nOwotCi0gICAgVmVjdG9yIHNvYXBCb2RpZXMgPSBuZXcgVmVjdG9yKCk7Ci0KLSAgICAvLyBHbyB0aHJvdWdoIGVhY2ggYmluZGluZyBvbmUgYXQgYSB0aW1lCi0gICAgZm9yIChpbnQgYmluZGluZyA9IDA7IGJpbmRpbmcgPCBiaW5kaW5nTGlzdC5sZW5ndGg7IGJpbmRpbmcrKykKLSAgICB7Ci0gICAgICAvLyBnZXQgdGhlIGxpc3Qgb2YgYmluZGluZyBPcGVyYXRpb25zCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uW10gYmluZGluZ09wZXJhdGlvbnMgPQotICAgICAgICAoQmluZGluZ09wZXJhdGlvbltdKSBiaW5kaW5nTGlzdFtiaW5kaW5nXQotICAgICAgICAgIC5nZXRCaW5kaW5nT3BlcmF0aW9ucygpCi0gICAgICAgICAgLnRvQXJyYXkoCi0gICAgICAgICAgbmV3IEJpbmRpbmdPcGVyYXRpb25bMF0pOwotCi0gICAgICAvLyBnZXQgcmVmZXJlbmNlcyB0byB0aGUgZXh0ZW5zaWJsZSBlbGVtZW50cyB3aXRoaW4gdGhlIDxpbnB1dD4gYW5kIDxvdXRwdXQ+IGVsZW1lbnRzIG9mIHRoaXMgYmluZGluZyA8b3BlcmF0aW9uPi4gCi0gICAgICBmb3IgKGludCBibyA9IDA7IGJvIDwgYmluZGluZ09wZXJhdGlvbnMubGVuZ3RoOyBibysrKQotICAgICAgewotCi0gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgaW5wdXQvb3V0cHV0IGV4dGVuc2libGVzLCBsb29raW5nIGZvciA8U09BUDpCb2R5PiBlbGVtZW50cy4KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBJdGVyYXRvciBpbnB1dEV4dGVuc2libGVzID0KLSAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb25zW2JvXQotICAgICAgICAgICAgICAuZ2V0QmluZGluZ0lucHV0KCkKLSAgICAgICAgICAgICAgLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpCi0gICAgICAgICAgICAgIC5pdGVyYXRvcigpOwotICAgICAgICAgIHdoaWxlIChpbnB1dEV4dGVuc2libGVzLmhhc05leHQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0cnkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgc29hcEJvZGllcy5hZGQoKFNPQVBCb2R5KSBpbnB1dEV4dGVuc2libGVzLm5leHQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpCi0gICAgICAgICAgICB7IC8vIGlnbm9yZSBldmVyeXRoaW5nIGJ1dCBTT0FQIEJvZHkgZWxlbWVudHMuCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKQotICAgICAgICB7IC8vIG5vIGV4dGVuc2liaWxpdHkgZWxlbWVudHMgZm9yIDxpbnB1dD4gLSBpZ25vcmUgOiBub3QgY2hlY2tpbmcgdGhpcyBoZXJlLgotICAgICAgICB9Ci0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBJdGVyYXRvciBvdXRwdXRFeHRlbnNpYmxlcyA9Ci0gICAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uc1tib10KLSAgICAgICAgICAgICAgLmdldEJpbmRpbmdPdXRwdXQoKQotICAgICAgICAgICAgICAuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgICAgICAgICAgICAgLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKG91dHB1dEV4dGVuc2libGVzLmhhc05leHQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0cnkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgc29hcEJvZGllcy5hZGQoKFNPQVBCb2R5KSBvdXRwdXRFeHRlbnNpYmxlcy5uZXh0KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKQotICAgICAgICAgICAgeyAvLyBpZ25vcmUgZXZlcnl0aGluZyBidXQgU09BUCBCb2R5IGVsZW1lbnRzLgotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkKLSAgICAgICAgeyAvLyBubyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIGZvciA8b3V0cHV0Pi4KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIFNPQVBCb2R5W10gc29hcEJvZHlBcnJheSA9IG5ldyBTT0FQQm9keVtzb2FwQm9kaWVzLnNpemUoKV07Ci0gICAgc29hcEJvZGllcy5jb3B5SW50byhzb2FwQm9keUFycmF5KTsKLQotICAgIHJldHVybiBzb2FwQm9keUFycmF5OwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBnZXRTb2FwQm9keS4KLSAgICogCi0gICAqIEBwYXJhbSBiaW5kaW5nSW5wdXQgYSBCaW5kaW5nSW5wdXQgb2JqZWN0LgotICAgKiBAcmV0dXJuICBib2R5LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBvY2N1ciBkdXJpbmcgcHJvY2Vzc2luZy4KLSAgICovCi0gIHByb3RlY3RlZCBTT0FQQm9keSBnZXRTb2FwQm9keShCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0KSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIFNPQVBCb2R5IHNvYXBCb2R5ID0gbnVsbDsKLQotICAgIEl0ZXJhdG9yIGV4dGVuc2libGVzID0gYmluZGluZ0lucHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGV4dGVuc2libGVzLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBPYmplY3QgZXh0ZW5zaWJsZSA9IGV4dGVuc2libGVzLm5leHQoKTsKLSAgICAgIGlmIChleHRlbnNpYmxlIGluc3RhbmNlb2YgU09BUEJvZHkpCi0gICAgICB7Ci0gICAgICAgIHNvYXBCb2R5ID0gKFNPQVBCb2R5KSBleHRlbnNpYmxlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHNvYXBCb2R5OwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBnZXRTb2FwQm9keS4KLSAgICogCi0gICAqIEBwYXJhbSBiaW5kaW5nT3V0cHV0IGEgQmluZGluZ091dHB1dCBvYmplY3QuCi0gICAqIEByZXR1cm4gU09BUCBib2R5LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBvY2N1ciBkdXJpbmcgcHJvY2Vzc2luZy4KLSAgICovCi0gIHByb3RlY3RlZCBTT0FQQm9keSBnZXRTb2FwQm9keShCaW5kaW5nT3V0cHV0IGJpbmRpbmdPdXRwdXQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0KLSAgICBTT0FQQm9keSBzb2FwQm9keSA9IG51bGw7Ci0KLSAgICBJdGVyYXRvciBleHRlbnNpYmxlcyA9IGJpbmRpbmdPdXRwdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoZXh0ZW5zaWJsZXMuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIE9iamVjdCBleHRlbnNpYmxlID0gZXh0ZW5zaWJsZXMubmV4dCgpOwotICAgICAgaWYgKGV4dGVuc2libGUgaW5zdGFuY2VvZiBTT0FQQm9keSkKLSAgICAgIHsKLSAgICAgICAgc29hcEJvZHkgPSAoU09BUEJvZHkpIGV4dGVuc2libGU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gc29hcEJvZHk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHNjaGVtYSB1c2VkLgotICAgKiBAcGFyYW0gZGVmIGRlZmluaXRpb24uCi0gICAqIEByZXR1cm4gU2NoZW1hIHVzZWQuCi0gICAqIEB0aHJvd3MgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBpZiBwcm9ibGVtIGdldHRpbmcgV1NETCBkZWZpbnRpb25zIAotICAgKiAgICAgICAgIG5hbWVzcGFjZS4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0U2NoZW1hVXNlZChEZWZpbml0aW9uIGRlZikgdGhyb3dzIEFzc2VydGlvbkZhaWxFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBzY2hlbWFVc2VkID0gIiI7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBOZWVkIHRvIHJlYWQgdGhlIGZpbGUgZGlyZWN0bHksIHNpbmNlIFdTREw0SiBhbHdheXMgcHV0cyBpbiB0aGUgZGVmYXVsdCBXU0RMIG5hbWVzcGFjZQotICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPSB3c2RsRG9jdW1lbnQuZ2V0RG9jdW1lbnQoKTsKLSAgICAgIGlmIChkb2N1bWVudCA9PSBudWxsKQotICAgICAgewotICAgICAgICBkb2N1bWVudCA9IHBhcnNlWE1MRG9jdW1lbnRVUkwoZGVmLmdldERvY3VtZW50QmFzZVVSSSgpLCBudWxsKTsKLSAgICAgIH0KLQotICAgICAgaWYgKGRvY3VtZW50ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIEdldCB0aGUgcm9vdCBlbGVtZW50Ci0gICAgICAgIEVsZW1lbnQgZWxlbWVudCA9IGRvY3VtZW50LmdldERvY3VtZW50RWxlbWVudCgpOwotCi0gICAgICAgIC8vIEdldCB0aGUgbmFtZXNwYWNlIGZvciB0aGlzIGVsZW1lbnQKLSAgICAgICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkKLSAgICAgICAgICBzY2hlbWFVc2VkID0gZWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIHdlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKCJwcm9ibGVtIGdldHRpbmcgV1NETCBkZWZpbnRpb25zIG5hbWVzcGFjZSIpOwotICAgIH0KLQotICAgIC8qCi0gICAgLy8gR2V0IHRoZSBkZWZhdWx0IG5hbWVzcGFjZQotICAgIFN0cmluZyBzY2hlbWFVc2VkID0gZGVmLmdldE5hbWVzcGFjZSgiIik7Ci0gICAgCi0gICAgLy8gSWYgdGhlIGRlZmF1bHQgd2FzIHNldCwgdGhlbiBwcm9jZXNzIGl0IHRvIGdldCB0aGUgbmFtZXNwYWNlCi0gICAgaWYgKHNjaGVtYVVzZWQgPT0gbnVsbCkgewotICAgICAgLy8gZG8gaXQgdGhlIGhhcmQgd2F5IChzdGlsbCBiZXR0ZXIgdGhhbiBhbm90aGVyIERPTSBwYXJzZSkuLi4gCQkJCQotICAgICAgLy9XU0RMV3JpdGVyIHcgPSBuZXcgV1NETFdyaXRlckltcGwoKTsKLSAgICAgIHRyeSB7Ci0gICAgICAgIFdTRExXcml0ZXIgdyA9IFdTRExGYWN0b3J5Lm5ld0luc3RhbmNlKCkubmV3V1NETFdyaXRlcigpOwotICAgICAgCURvY3VtZW50IGRvYyA9IHcuZ2V0RG9jdW1lbnQoZGVmKTsKLSAgICAgIAlFbGVtZW50IGUgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgICAJc2NoZW1hVXNlZCA9IGUuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICB9IAotICAgICAgY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHsKLSAgICAgIAl0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigicHJvYmxlbSBnZXR0aW5nIFdTREwgZGVmaW50aW9ucyBuYW1lc3BhY2UiKTsKLSAgICAgIH0gCi0gICAgICBjYXRjaCAoV1NETEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAJdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oInByb2JsZW0gZ2V0dGluZyBkb2N1bWVudCBkZWZpbnRpb24iKTsKLSAgICAgIH0gICAgICAJCi0gICAgfQotICAgICovCi0KLSAgICByZXR1cm4gc2NoZW1hVXNlZDsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0U29hcEJpbmRpbmcuCi0gICAqIAotICAgKiBHZXQgdGhlIFNPQVAgYmluZGluZyBmb3IgYSBCaW5kaW5nLgotICAgICogCi0gICAqIEBwYXJhbSBiaW5kaW5nIGEgYmluZGluZy4KLSAgICogQHJldHVybiBhIFNPQVAgYmluZGluZy4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgcHJvYmxlbXMgb2NjdXIgZHVyaW5nIHByb2Nlc3NpbmcuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFNPQVBCaW5kaW5nIGdldFNvYXBCaW5kaW5nKEJpbmRpbmcgYmluZGluZykgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgU09BUEJpbmRpbmcgc29hcEJpbmRpbmcgPSBudWxsOwotCi0gICAgLy8gR2V0IHRoZSBsaXN0IG9mIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLSAgICBMaXN0IGV4RWxlbWVudHMgPSBiaW5kaW5nLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIGlmIChleEVsZW1lbnRzICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBiaW5kaW5nLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0KLSAgICAgIC8vICBDaGVjayBmb3IgPHNvYXA6YmluZGluZz4gZWxlbWVudAotICAgICAgd2hpbGUgKChpdGVyYXRvci5oYXNOZXh0KCkpICYmIChzb2FwQmluZGluZyA9PSBudWxsKSkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBzb2FwQmluZGluZyA9IChTT0FQQmluZGluZykgaXRlcmF0b3IubmV4dCgpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gZSkKLSAgICAgICAgeyAvLyBpZ25vcmUgZXZlcnl0aGluZyBidXQgU09BUCBCaW5kaW5nIGVsZW1lbnQKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBzb2FwQmluZGluZzsKLSAgfQotCi0gIC8qKiAKLSAgICogQ3JlYXRlIFhNTCBzY2hlbWEgdmFsaWRhdG9yLiAgVGhpcyBpcyBkb25lIGhlcmUgYmVjYXVzZSBzb21lIGNvbXBpbGVycyBkbyBub3QgYWxsb3cKLSAgICogdGhlIGRvY3VtZW50TGlzdCBmaWVsZCB0byBiZSBhY2Nlc3NlZCBmcm9tIHdpdGhpbiBhbiBpbm5lciBjbGFzcy4KLSAgICogQHBhcmFtIGRvY3VtZW50QmFzZVVSSSB0aGUgYmFzZSBVUkwuCi0gICAqIEByZXR1cm4gbmV3bHkgY3JlYXRlZCBYTUwgc2NoZW1hIHZhbGlkYXRvci4KLSAgICovCi0gIHByb3RlY3RlZCBYTUxTY2hlbWFWYWxpZGF0b3IgY3JlYXRlWE1MU2NoZW1hVmFsaWRhdG9yKFN0cmluZyBkb2N1bWVudEJhc2VVUkkpCi0gIHsKLSAgICAvLyBDcmVhdGUgWE1MIHNjaGVtYSB2YWxpZGF0b3IKLSAgICByZXR1cm4gbmV3IFhNTFNjaGVtYVZhbGlkYXRvcihkb2N1bWVudEJhc2VVUkkpOwotICB9Ci0KLSAgLyoqCi0gICAqIFNlYXJjaCB4c2Qgc2NoZW1hIG9yIHhzZCBpbXBvcnQgZnJvbSBub2RlLiBJZiBub2RlIGlzIHhzZCBpbXBvcnQgaXQncyBsb2FkaW5nIHNjaGVtYS4KLSAgICogQHBhcmFtIGRlZmluaXRpb24gYSBEZWZpbml0aW9uIG9iamVjdC4KLSAgICogQHJldHVybiBhIGxpc3Qgb2Ygc2NoZW1hIHRhcmdldCBuYW1lc3BhY2VzLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtIGR1cmluZyBwcm9jZXNzaW5nIG1ldGhvZC4KLSAgICovCi0gIHByb3RlY3RlZCBMaXN0IGdldFNjaGVtYVRhcmdldE5hbWVzcGFjZUxpc3QoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIExpc3QgbGlzdCA9IG51bGwsIG5leHRMaXN0ID0gbnVsbDsKLQotICAgIC8vIEdldCBsaXN0IG9mIGV4dGVuc2lvbiBlbGVtZW50cyB3aXRoaW4gdGhlIHR5cGVzIGVsZW1lbnQKLSAgICBUeXBlcyB0eXBlcyA9IG51bGw7Ci0gICAgaWYgKCh0eXBlcyA9IGRlZmluaXRpb24uZ2V0VHlwZXMoKSkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdGVyYXRvciA9IHR5cGVzLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0KLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW1lbnQgPSBudWxsOwotICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgLy8gR2V0IG5leHQgZXh0LiBlbGVtZW50Ci0gICAgICAgIGV4dEVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgLy8gSWYgdGhpcyBpcyBhbiB1bmtub3duIGV4dC4gZWxlbWVudCwgdGhlbiBzZWUgaWYgaXQgaXMgYSBzY2hlbWEgZWxlbWVudAotICAgICAgICBUYXJnZXROYW1lc3BhY2VQcm9jZXNzb3IgdG5zUHJvY2Vzc29yID0gbnVsbDsKLSAgICAgICAgaWYgKGV4dEVsZW1lbnQgaW5zdGFuY2VvZiBTY2hlbWEpCi0gICAgICAgIHsKLSAgICAgICAgICB0bnNQcm9jZXNzb3IgPSBuZXcgVGFyZ2V0TmFtZXNwYWNlUHJvY2Vzc29yKGRlZmluaXRpb24uZ2V0RG9jdW1lbnRCYXNlVVJJKCkpOwotCi0KLSAgICAgICAgICBpZiAoKG5leHRMaXN0ID0KLSAgICAgICAgICAgIHRuc1Byb2Nlc3Nvci5wcm9jZXNzQWxsU2NoZW1hKAotICAgICAgICAgICAgICAoKFNjaGVtYSkgZXh0RWxlbWVudCkuZ2V0RWxlbWVudCgpKSkKLSAgICAgICAgICAgICE9IG51bGwpCi0gICAgICAgICAgICBpZiAobGlzdCA9PSBudWxsKQotICAgICAgICAgICAgICBsaXN0ID0gbmV3IFZlY3RvcigpOwotICAgICAgICAgIGxpc3QuYWRkQWxsKG5leHRMaXN0KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBsaXN0OwotICB9Ci0gLyoqCi0gICAqIFNlYXJjaCB4c2Qgc2NoZW1hIG9yIHhzZCBpbXBvcnQgZnJvbSBub2RlLiBJZiBub2RlIGlzIHhzZCBpbXBvcnQgaXQncyBsb2FkaW5nIHNjaGVtYS4KLSAgICogQHBhcmFtIGRlZmluaXRpb24gYSBEZWZpbml0aW9uIG9iamVjdC4KLSAgICogQHJldHVybiBhIGxpc3Qgb2Ygc2NoZW1hIHRhcmdldCBuYW1lc3BhY2VzLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtIGR1cmluZyBwcm9jZXNzaW5nIG1ldGhvZC4KLSAgICovCi0gIHByb3RlY3RlZCBMaXN0IGdldFNjaGVtYU5hbWVzcGFjZUxpc3QoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIExpc3QgbGlzdCA9IG5ldyBWZWN0b3IoKTsKLSAgICAKLSAgICAvLyBBbHdheXMgYWRkIGN1cnJlbnQgZG9jdW1lbnQgdGFyZ2V0TmFtZXNwYWNlCi0gICAgTGlzdCB0YXJnZXROYW1lc3BhY2VMaXN0ID0gZ2V0U2NoZW1hVGFyZ2V0TmFtZXNwYWNlTGlzdChkZWZpbml0aW9uKTsKLSAgICAKLSAgICBpZiAoKHRhcmdldE5hbWVzcGFjZUxpc3QgIT0gbnVsbCkgJiYgIXRhcmdldE5hbWVzcGFjZUxpc3QuaXNFbXB0eSgpKQotICAgICAgbGlzdC5hZGRBbGwodGFyZ2V0TmFtZXNwYWNlTGlzdCk7Ci0gICAgCi0gICAgLy8gR2V0IGxpc3Qgb2YgaW1wb3J0ZWQgV1NETCBkb2N1bWVudHMKLSAgICBNYXAgaW1wb3J0TWFwID0gZGVmaW5pdGlvbi5nZXRJbXBvcnRzKCk7Ci0KLSAgICBJbXBvcnQgaW1wOwotCi0gICAgLy8gQWRkIGVhY2ggaW1wb3J0cyB0YXJnZXROYW1lc3BhY2UgdG8gdGhlIGxpc3QKLSAgICBpZiAoaW1wb3J0TWFwICE9IG51bGwgJiYgIWltcG9ydE1hcC5pc0VtcHR5KCkpCi0gICAgewotICAgICAgSXRlcmF0b3IgdmFsdWVzID0gaW1wb3J0TWFwLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICBMaXN0IGltcG9ydExpc3Q7Ci0gICAgICB3aGlsZSAodmFsdWVzLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgaW1wb3J0TGlzdCA9IChMaXN0KSB2YWx1ZXMubmV4dCgpOwotICAgICAgICBJdGVyYXRvciBpbXBvcnRzID0gaW1wb3J0TGlzdC5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAoaW1wb3J0cy5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpbXAgPSAoSW1wb3J0KSBpbXBvcnRzLm5leHQoKTsKLSAgICAgICAgICBpZiAoaW1wICE9IG51bGwgJiYgaW1wLmdldERlZmluaXRpb24oKSAhPSBudWxsKQotICAgICAgICAgIAlsaXN0LmFkZEFsbChnZXRTY2hlbWFOYW1lc3BhY2VMaXN0KGltcC5nZXREZWZpbml0aW9uKCkpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBsaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIEJ1aWxkIGxpc3Qgb2YgV1NETCB0YXJnZXROYW1lc3BhY2VzLgotICAgKiBAcGFyYW0gZGVmaW5pdGlvbiBhIERlZmluaXRpb24gb2JqZWN0LgotICAgKiBAcmV0dXJuIGxpc3Qgb2YgV1NETCB0YXJnZXROYW1lc3BhY2VzLgotICAgKi8KLSAgcHJvdGVjdGVkIExpc3QgZ2V0V1NETFRhcmdldE5hbWVzcGFjZUxpc3QoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotICB7Ci0gICAgcmV0dXJuIGdldFdTRExUYXJnZXROYW1lc3BhY2VMaXN0KGRlZmluaXRpb24sIG5ldyBBcnJheUxpc3QoKSk7Ci0gIH0KLQotICAvKioKLSAgICogQnVpbGQgbGlzdCBvZiBXU0RMIHRhcmdldE5hbWVzcGFjZXMuCi0gICAqIEBwYXJhbSBkZWZpbml0aW9uIGEgRGVmaW5pdGlvbiBvYmplY3QuCi0gICAqIEByZXR1cm4gbGlzdCBvZiBXU0RMIHRhcmdldE5hbWVzcGFjZXMuCi0gICAqLwotICBwcm90ZWN0ZWQgTGlzdCBnZXRXU0RMVGFyZ2V0TmFtZXNwYWNlTGlzdChEZWZpbml0aW9uIGRlZmluaXRpb24sIExpc3QgYWxyZWFkeVByb2Nlc3NlZERlZmluaXRpb25zKQotICB7Ci0gICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwotICAgIGlmICgoZGVmaW5pdGlvbiAhPSBudWxsKSAmJiAoIWFscmVhZHlQcm9jZXNzZWREZWZpbml0aW9ucy5jb250YWlucyhkZWZpbml0aW9uKSkpCi0gICAgewotICAgICAgYWxyZWFkeVByb2Nlc3NlZERlZmluaXRpb25zLmFkZChkZWZpbml0aW9uKTsKLSAgICAgIAotICAgICAgLy8gQWx3YXlzIGFkZCBjdXJyZW50IGRvY3VtZW50IHRhcmdldE5hbWVzcGFjZQotICAgICAgaWYgKGRlZmluaXRpb24uZ2V0VGFyZ2V0TmFtZXNwYWNlKCkgIT0gbnVsbCkKLSAgICAgICAgbGlzdC5hZGQoZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKSk7Ci0KLSAgICAgIC8vIEdldCBsaXN0IG9mIGltcG9ydGVkIFdTREwgZG9jdW1lbnRzCi0gICAgICBNYXAgaW1wb3J0TWFwID0gZGVmaW5pdGlvbi5nZXRJbXBvcnRzKCk7Ci0KLSAgICAgIEltcG9ydCBpbXA7Ci0KLSAgICAgIC8vIEFkZCBlYWNoIGltcG9ydHMgdGFyZ2V0TmFtZXNwYWNlIHRvIHRoZSBsaXN0Ci0gICAgICBpZiAoaW1wb3J0TWFwICE9IG51bGwgJiYgIWltcG9ydE1hcC5pc0VtcHR5KCkpCi0gICAgICB7Ci0gICAgICAgIEl0ZXJhdG9yIHZhbHVlcyA9IGltcG9ydE1hcC52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICBMaXN0IGltcG9ydExpc3Q7Ci0gICAgICAgIHdoaWxlICh2YWx1ZXMuaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgaW1wb3J0TGlzdCA9IChMaXN0KSB2YWx1ZXMubmV4dCgpOwotICAgICAgICAgIEl0ZXJhdG9yIGltcG9ydHMgPSBpbXBvcnRMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKGltcG9ydHMuaGFzTmV4dCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGltcCA9IChJbXBvcnQpIGltcG9ydHMubmV4dCgpOwotICAgICAgICAgICAgaWYgKGltcCAhPSBudWxsICYmIGltcC5nZXREZWZpbml0aW9uKCkgIT0gbnVsbCkKLSAgICAgICAgICAgIGxpc3QuYWRkQWxsKGdldFdTRExUYXJnZXROYW1lc3BhY2VMaXN0KGltcC5nZXREZWZpbml0aW9uKCksIGFscmVhZHlQcm9jZXNzZWREZWZpbml0aW9ucykpOwotICAgICAgICAgICAgLy8gbGlzdC5hZGQoaW1wLmdldERlZmluaXRpb24oKS5nZXRUYXJnZXROYW1lc3BhY2UoKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGxpc3Q7Ci0gIH0KLQotICBwcm90ZWN0ZWQgY2xhc3MgQmluZGluZ01hdGNoCi0gIHsKLSAgICBwcml2YXRlIEJpbmRpbmcgYmluZGluZzsKLSAgICBwcml2YXRlIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbjsKLSAgICBwcml2YXRlIFNPQVBCaW5kaW5nIHNvYXBCaW5kaW5nOwotICAgIC8vcHJpdmF0ZSBWZWN0b3IgYmluZGluZ0FyZ3M7IC8vIHNldCBvZiBCaW5kaW5nSW5wdXRzIGFuZCBCaW5kaW5nT3V0cHV0cwotICAgIHByaXZhdGUgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dDsKLSAgICBwcml2YXRlIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dDsKLQotICAgIC8vIEFERDogbmVlZCB0byBpbmNsdWRlIEJpbmRpbmdGYXVsdCBzdXBwb3J0Li4uCi0gICAgcHVibGljIEJpbmRpbmdNYXRjaCgKLSAgICAgIEJpbmRpbmcgYiwKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYm8sCi0gICAgICBTT0FQQmluZGluZyBzYiwKLSAgICAgIEJpbmRpbmdJbnB1dCBiaW4sCi0gICAgICBCaW5kaW5nT3V0cHV0IGJvdXQpCi0gICAgewotICAgICAgYmluZGluZyA9IGI7Ci0gICAgICBiaW5kaW5nT3BlcmF0aW9uID0gYm87Ci0gICAgICBzb2FwQmluZGluZyA9IHNiOwotICAgICAgLy9iaW5kaW5nQXJncyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIC8vaWYgKGJpbiAgIT0gbnVsbCkgeyBiaW5kaW5nQXJncy5hZGQoYmluKTsgIH0KLSAgICAgIC8vaWYgKGJvdXQgIT0gbnVsbCkgeyBiaW5kaW5nQXJncy5hZGQoYm91dCk7IH0KLSAgICAgIGJpbmRpbmdJbnB1dCA9IGJpbjsKLSAgICAgIGJpbmRpbmdPdXRwdXQgPSBib3V0OwotICAgIH0KLQotICAgIHB1YmxpYyBCaW5kaW5nTWF0Y2goCi0gICAgICBCaW5kaW5nIGIsCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uIGJvLAotICAgICAgU09BUEJpbmRpbmcgc2IsCi0gICAgICBCaW5kaW5nSW5wdXQgYmluKQotICAgIHsKLSAgICAgIHRoaXMoYiwgYm8sIHNiLCBiaW4sIG51bGwpOwotICAgIH0KLQotICAgIHB1YmxpYyBCaW5kaW5nTWF0Y2goCi0gICAgICBCaW5kaW5nIGIsCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uIGJvLAotICAgICAgU09BUEJpbmRpbmcgc2IsCi0gICAgICBCaW5kaW5nT3V0cHV0IGJvdXQpCi0gICAgewotICAgICAgdGhpcyhiLCBibywgc2IsIG51bGwsIGJvdXQpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIHNvYXBCaW5kaW5nLgotICAgICAqIEByZXR1cm4gU09BUEJpbmRpbmcKLSAgICAgKi8KLSAgICBwdWJsaWMgU09BUEJpbmRpbmcgZ2V0U29hcEJpbmRpbmcoKQotICAgIHsKLSAgICAgIHJldHVybiBzb2FwQmluZGluZzsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBiaW5kaW5nT3BlcmF0aW9uLgotICAgICAqIEByZXR1cm4gQmluZGluZ09wZXJhdGlvbgotICAgICAqLwotICAgIHB1YmxpYyBCaW5kaW5nT3BlcmF0aW9uIGdldEJpbmRpbmdPcGVyYXRpb24oKQotICAgIHsKLSAgICAgIHJldHVybiBiaW5kaW5nT3BlcmF0aW9uOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIGJpbmRpbmdJbnB1dC4KLSAgICAgKiBAcmV0dXJuIEJpbmRpbmdJbnB1dAotICAgICAqLwotICAgIHB1YmxpYyBCaW5kaW5nSW5wdXQgZ2V0QmluZGluZ0lucHV0KCkKLSAgICB7Ci0gICAgICByZXR1cm4gYmluZGluZ0lucHV0OwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIGJpbmRpbmdPdXRwdXQuCi0gICAgICogQHJldHVybiBCaW5kaW5nT3V0cHV0Ci0gICAgICovCi0gICAgcHVibGljIEJpbmRpbmdPdXRwdXQgZ2V0QmluZGluZ091dHB1dCgpCi0gICAgewotICAgICAgcmV0dXJuIGJpbmRpbmdPdXRwdXQ7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaGFzQmluZGluZ0lucHV0KCkKLSAgICB7Ci0gICAgICByZXR1cm4gKHRoaXMuYmluZGluZ0lucHV0ICE9IG51bGwpOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGhhc0JpbmRpbmdPdXRwdXQoKQotICAgIHsKLSAgICAgIHJldHVybiAodGhpcy5iaW5kaW5nT3V0cHV0ICE9IG51bGwpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIGJpbmRpbmcuCi0gICAgICogQHJldHVybiBCaW5kaW5nCi0gICAgICovCi0gICAgcHVibGljIEJpbmRpbmcgZ2V0QmluZGluZygpCi0gICAgewotICAgICAgcmV0dXJuIGJpbmRpbmc7Ci0gICAgfQotCi0gIH0KLQotICAvKioKLSAgICogR2V0IGJpbmRpbmcgbWF0Y2hlcy4KLSAgKiBAcGFyYW0gYmluZGluZyBhIGJpbmRpbmcuCi0gICogQHBhcmFtIHNvYXBCaW5kaW5nU3R5bGUgc29hcCBiaW5kaW5nIHN0eWxlLgotICAqIEBwYXJhbSBzb2FwQm9keVVzZSBzb2FwIGJvZHkgdXNlLgotICAqIEByZXR1cm4gYmluZGluZyBtYXRjaGVzLgotICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHByb2JsZW1zIG9jY3VyIGR1cmluZyBwcm9jZXNzaW5nLgotICAqLwotICBwdWJsaWMgQmluZGluZ01hdGNoW10gZ2V0QmluZGluZ01hdGNoZXMoCi0gICAgQmluZGluZyBiaW5kaW5nLAotICAgIFN0cmluZyBzb2FwQmluZGluZ1N0eWxlLAotICAgIFN0cmluZyBzb2FwQm9keVVzZSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQotICAgIFZlY3RvciBiaW5kaW5nTWF0Y2hlcyA9IG5ldyBWZWN0b3IoKTsKLQotICAgIC8vIENoZWNrIGJpbmRpbmcKLSAgICBTT0FQQmluZGluZyBzb2FwQmluZGluZyA9IGdldFNvYXBCaW5kaW5nKGJpbmRpbmcpOwotCi0gICAgLy8gY2hlY2sgdGhhdCB0aGUgc29hcDpiaW5kaW5nIGZvciB0aGlzIFdTREwgYmluZGluZyBpcyB0aGUgc3BlY2lmaWVkIHN0eWxlCi0gICAgLy8gQUREOiBjaGVjayBmb3IgbnVsbCBwb2ludGVyCi0gICAgaWYgKHNvYXBCaW5kaW5nICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIGRlZmF1bHRTdHlsZSA9IHNvYXBCaW5kaW5nLmdldFN0eWxlKCk7Ci0KLSAgICAgIGlmIChkZWZhdWx0U3R5bGUgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZGVmYXVsdFN0eWxlID0gV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQzsKLSAgICAgIH0KLQotICAgICAgLy8gR2V0IHRoZSBzZXQgb2Ygb3BlcmF0aW9ucyBmb3IgdGhpcyBXU0RMIGJpbmRpbmcKLSAgICAgIExpc3QgYmluZGluZ09wc0xpc3QgPSBiaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCk7Ci0gICAgICBpZiAoYmluZGluZ09wc0xpc3QgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgSXRlcmF0b3IgYmluZGluZ09wcyA9IGJpbmRpbmdPcHNMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgICAgIC8vIGZvciBlYWNoIGJpbmRpbmcgb3BlcmF0aW9uOgotICAgICAgICB3aGlsZSAoYmluZGluZ09wcy5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcCA9IChCaW5kaW5nT3BlcmF0aW9uKSBiaW5kaW5nT3BzLm5leHQoKTsKLQotICAgICAgICAgIFNPQVBPcGVyYXRpb24gc29hcE9wID0gZ2V0U29hcE9wZXJhdGlvbihiaW5kaW5nT3ApOwotCi0gICAgICAgICAgaWYgKChzb2FwT3AgPT0gbnVsbCAmJiBkZWZhdWx0U3R5bGUuZXF1YWxzKHNvYXBCaW5kaW5nU3R5bGUpKQotICAgICAgICAgICAgfHwgKHNvYXBPcCAhPSBudWxsCi0gICAgICAgICAgICAgICYmIHNvYXBPcC5nZXRTdHlsZSgpID09IG51bGwKLSAgICAgICAgICAgICAgJiYgZGVmYXVsdFN0eWxlLmVxdWFscyhzb2FwQmluZGluZ1N0eWxlKSkKLSAgICAgICAgICAgIHx8IChzb2FwT3AgIT0gbnVsbAotICAgICAgICAgICAgICAmJiBzb2FwT3AuZ2V0U3R5bGUoKSAhPSBudWxsCi0gICAgICAgICAgICAgICYmIHNvYXBPcC5nZXRTdHlsZSgpLmVxdWFscyhzb2FwQmluZGluZ1N0eWxlKSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gY2hlY2sgYmluZGluZyBpbnB1dCAmIG91dHB1dAotICAgICAgICAgICAgQmluZGluZ0lucHV0IGJJbnB1dCA9IGJpbmRpbmdPcC5nZXRCaW5kaW5nSW5wdXQoKTsKLSAgICAgICAgICAgIGlmIChiSW5wdXQgIT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgU09BUEJvZHkgaW5wdXRTb2FwQm9keSA9IGdldFNvYXBCb2R5KGJJbnB1dCk7Ci0gICAgICAgICAgICAgIGlmIChpbnB1dFNvYXBCb2R5ID09IG51bGwKLSAgICAgICAgICAgICAgICB8fCAoaW5wdXRTb2FwQm9keS5nZXRVc2UoKSAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAmJiAhaW5wdXRTb2FwQm9keS5nZXRVc2UoKS5lcXVhbHMoc29hcEJvZHlVc2UpKSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJJbnB1dCA9IG51bGw7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQmluZGluZ091dHB1dCBiT3V0cHV0ID0gYmluZGluZ09wLmdldEJpbmRpbmdPdXRwdXQoKTsKLSAgICAgICAgICAgIGlmIChiT3V0cHV0ICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFNPQVBCb2R5IG91dHB1dFNvYXBCb2R5ID0gZ2V0U29hcEJvZHkoYk91dHB1dCk7Ci0KLSAgICAgICAgICAgICAgaWYgKG91dHB1dFNvYXBCb2R5ID09IG51bGwKLSAgICAgICAgICAgICAgICB8fCAob3V0cHV0U29hcEJvZHkuZ2V0VXNlKCkgIT0gbnVsbAotICAgICAgICAgICAgICAgICAgJiYgIW91dHB1dFNvYXBCb2R5LmdldFVzZSgpLmVxdWFscyhzb2FwQm9keVVzZSkpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYk91dHB1dCA9IG51bGw7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKChiT3V0cHV0ICE9IG51bGwpIHx8IChiSW5wdXQgIT0gbnVsbCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBtYXRjaCwgYWRkIHRvIHRoZSB2ZWN0b3IKLSAgICAgICAgICAgICAgYmluZGluZ01hdGNoZXMuYWRkKAotICAgICAgICAgICAgICAgIG5ldyBCaW5kaW5nTWF0Y2goCi0gICAgICAgICAgICAgICAgICBiaW5kaW5nLAotICAgICAgICAgICAgICAgICAgYmluZGluZ09wLAotICAgICAgICAgICAgICAgICAgc29hcEJpbmRpbmcsCi0gICAgICAgICAgICAgICAgICBiSW5wdXQsCi0gICAgICAgICAgICAgICAgICBiT3V0cHV0KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgQmluZGluZ01hdGNoW10gQmluZGluZ01hdGNoQXJyYXkgPSBuZXcgQmluZGluZ01hdGNoW2JpbmRpbmdNYXRjaGVzLnNpemUoKV07Ci0gICAgYmluZGluZ01hdGNoZXMuY29weUludG8oQmluZGluZ01hdGNoQXJyYXkpOwotICAgIHJldHVybiBCaW5kaW5nTWF0Y2hBcnJheTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0U29hcE9wZXJhdGlvbi4KLSAgICoKLSAgICogQHBhcmFtIGJpbmRpbmdPcGVyYXRpb24gYSBiaW5kaW5nIG9wZXJhdGlvbi4KLSAgICogQHJldHVybiBhIHNvYXAgb3BlcmF0aW9uLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiBwcm9ibGVtcyB3aGlsZSBwcm9jZXNzaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTT0FQT3BlcmF0aW9uIGdldFNvYXBPcGVyYXRpb24oQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotCi0gICAgaWYgKGJpbmRpbmdPcGVyYXRpb24uZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkgPT0gbnVsbCkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBJdGVyYXRvciBleHRlbnNpYmxlcyA9Ci0gICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGV4dGVuc2libGVzLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBPYmplY3QgZXh0ZW5zaWJsZSA9IGV4dGVuc2libGVzLm5leHQoKTsKLSAgICAgIGlmIChleHRlbnNpYmxlIGluc3RhbmNlb2YgU09BUE9wZXJhdGlvbikKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIChTT0FQT3BlcmF0aW9uKSBleHRlbnNpYmxlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qIAotICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIFNPQVBPcGVyYXRpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHdzZGw6YmluZGluZyBzdXBwbGllZC4KLSAgICovCi0gIHByb3RlY3RlZCBIYXNoTWFwIGdldFNvYXBPcGVyYXRpb25zKEJpbmRpbmcgYmluZGluZykgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgSGFzaE1hcCBzb2FwT3BlcmF0aW9uTGlzdCA9IG5ldyBIYXNoTWFwKCk7Ci0KLSAgICBpZiAoYmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9ucygpID09IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgLy9WZWN0b3Igc29hcE9wVmVjdG9yID0gbmV3IFZlY3RvcigpOwotCi0gICAgLy8gR2V0IHRoZSBsaXN0IG9mIGJpbmRpbmcgb3BlcmF0aW9ucwotICAgIEl0ZXJhdG9yIG9wZXJhdGlvbnMgPSBiaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLQotICAgIC8vIENoZWNrIGVhY2ggYmluZGluZyBvcGVyYXRpb24gdG8gc2VlIGlmIGl0IGhhcyBhIHNvYXAgb3BlcmF0aW9uIGVsZW1lbnQKLSAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSBudWxsOwotICAgIHdoaWxlIChvcGVyYXRpb25zLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBiaW5kaW5nT3BlcmF0aW9uID0gKEJpbmRpbmdPcGVyYXRpb24pIG9wZXJhdGlvbnMubmV4dCgpOwotICAgICAgSXRlcmF0b3IgZXh0ZW5zaWJsZXMgPQotICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoZXh0ZW5zaWJsZXMuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBPYmplY3QgZXh0ZW5zaWJsZSA9IGV4dGVuc2libGVzLm5leHQoKTsKLSAgICAgICAgaWYgKGV4dGVuc2libGUgaW5zdGFuY2VvZiBTT0FQT3BlcmF0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgc29hcE9wZXJhdGlvbkxpc3QucHV0KGV4dGVuc2libGUsIGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIC8vcmV0dXJuIChTT0FQT3BlcmF0aW9uW10pc29hcE9wVmVjdG9yLnRvQXJyYXkobmV3IFNPQVBPcGVyYXRpb25bXSB7fSk7Ci0gICAgcmV0dXJuIHNvYXBPcGVyYXRpb25MaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrIHBhcnQgYXR0cmlidXRlcy4KLSAgICogQHBhcmFtIGJpbmRpbmdNYXRjaCBhbiBhcnJheSBvZiBCaW5kaW5nTWF0Y2ggb2JqZWN0cy4KLSAgICogQHBhcmFtIGluT3JPdXQgYSBTdHJpbmcgb2JqZWN0LgotICAgKiBAcGFyYW0gYXR0cmliIGF0dHJpYnV0ZS4KLSAgICogQHJldHVybiBhIGJvb2xlYW4uCi0gICAqIEB0aHJvd3MgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbiBpZiB0aGUgcGFydCBpcyBub3QgY29tcGxpYW50LgotICAgKi8KLSAgLy8gR1QgLSByZXdvcmsgdGhpcyBtZXRob2Qgd2l0aCBhIGJldHRlciB3YXkgb2YgcGFyYW1ldGVyaXppbmcgdGhlIGdldHRlcnMgcmVxdWlyZWQgZm9yIHRoZSBpbnZvY2F0aW9uLgotICBwcm90ZWN0ZWQgYm9vbGVhbiBjaGVja1BhcnRBdHRyaWJ1dGVzKAotICAgIEJpbmRpbmdNYXRjaFtdIGJpbmRpbmdNYXRjaCwKLSAgICBTdHJpbmcgaW5Pck91dCwKLSAgICBTdHJpbmcgYXR0cmliKQotICAgIHRocm93cyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uCi0gIHsKLQotICAgIGlmICghKGluT3JPdXQuZXF1YWxzKCJ1c2VJbnB1dCIpIHx8IGluT3JPdXQuZXF1YWxzKCJ1c2VPdXRwdXQiKSkKLSAgICAgIHx8ICEoYXR0cmliLmVxdWFscygidXNlVHlwZSIpIHx8IGF0dHJpYi5lcXVhbHMoInVzZUVsZW1lbnQiKSkpCi0gICAgewotICAgICAgLy8gaW52YWxpZCBhcmd1bWVudCB2YWx1ZSBzdXBwbGllZCBieSBjYWxsaW5nIG1ldGhvZCAtICJpbnRlcm5hbCBlcnJvciIKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGJpbmRpbmdNYXRjaC5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBCaW5kaW5nTWF0Y2ggbmV4dE1hdGNoID0gYmluZGluZ01hdGNoW2ldOwotCi0gICAgICAvLyBjaGVjayB0aGUgYXNzb2NpYXRlZCBwYXJ0cwotICAgICAgTWVzc2FnZSBtc2c7Ci0gICAgICBNYXAgcGFydHM7Ci0gICAgICBJdGVyYXRvciBwYXJ0SXRlcmF0aW9uOwotCi0gICAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcCA9IG5leHRNYXRjaC5nZXRCaW5kaW5nT3BlcmF0aW9uKCk7Ci0gICAgICBpZiAoYmluZGluZ09wID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGNvbnRpbnVlOyAvLyBubyBCaW5kaW5nIE9wZXJhdGlvbiBmb3Igc29tZSByZWFzb24KLSAgICAgIH0KLQotICAgICAgT3BlcmF0aW9uIG9wID0gYmluZGluZ09wLmdldE9wZXJhdGlvbigpOwotCi0gICAgICAvKglBREQ6IGhhbmRsZSBzb2FwOmZhdWx0cyBpbiBzaW1pbGFyIHdheQkgICAJCQotICAgICAgdHJ5IHsKLSAgICAgIC8vIGNoZWNrIGZhdWx0cyAtIHJlbWFya2FibHkgc2ltaWxhci4uLi4gKG5lZWQgdG8gcmV0YWluIG9wZXJhdGlvbiBpZCBmb3IgZmFpbHVyZWRldGFpbCBtc2cpCi0gICAgICAJaWYgKG5leHRNYXRjaC5oYXNCaW5kaW5nRmF1bHQoKSkgewotICAgICAgCQkJCQotICAgICAgCQltc2cgPSBvcC5nZXRGYXVsdCgpLmdldE1lc3NhZ2UoKTsKLSAgICAgIAkJcGFydHMgPSBtc2cuZ2V0UGFydHMoKTsKLSAgICAgIAkJCQkgICAgCQkJCQkgICAgIAkJCQotICAgICAgCQkvL2NoZWNrIHRoYXQgZWFjaCBwYXJ0IGhhcyBhbiBlbGVtZW50IGF0dHJpYnV0ZSAgICAJCQkKLSAgICAgIAkJcGFydEl0ZXJhdGlvbiA9IHBhcnRzLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICAJCXdoaWxlIChwYXJ0SXRlcmF0aW9uLmhhc05leHQoKSkgewotICAgICAgCQkJUGFydCBwYXJ0ID0gKFBhcnQpcGFydEl0ZXJhdGlvbi5uZXh0KCk7Ci0gICAgICAJCQlpZiAocGFydC5nZXRFbGVtZW50TmFtZSgpID09IG51bGwpIHsKLSAgICAgIAkJCQl0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbigiT1BFUkFUSU9OOiAiICsgb3AgKyAiTUVTU0FHRTogIiArIG1zZyk7Ci0gICAgICAJCQl9Ci0gICAgICAJCX0JIAkJCQotICAgICAgCX0KLSAgICAgIH0KLSAgICAgIGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBuKSB7Ci0gICAgICAJLy8gbm8gcGFydHMgZm91bmQgLSB0aGlzIHF1YWxpZmllcyBhbiBhc3NlcnRpb24gZmFpbHVyZQotICAgICAgCXRocm93IG5ldyBBc3NlcnRpb25GYWlsRXhjZXB0aW9uKG4uZ2V0TWVzc2FnZSgpKTsKLSAgICAgIH0KLSAgICAgICovCi0KLSAgICAgIHRyeQotICAgICAgewotCi0gICAgICAgIFFOYW1lIGF0dHJpYnV0ZU5hbWU7Ci0KLSAgICAgICAgLy9HVDogRG8gd2UgbmVlZCB0byBjaGVjayBCaW5kaW5nSW5wdXQgLyBPdXRwdXQgaGVyZSA/PwotCi0gICAgICAgIGlmIChpbk9yT3V0LmVxdWFscygidXNlSW5wdXQiKSkKLSAgICAgICAgewotICAgICAgICAgIGlmIChvcC5nZXRJbnB1dCgpID09IG51bGwgfHwgIW5leHRNYXRjaC5oYXNCaW5kaW5nSW5wdXQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBObyBJbnB1dCBzbyBub3RoaW5nIHRvIGNoZWNrCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBtc2cgPSBvcC5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKTsKLQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgeyAvLyBMb29raW5nIGZvciBPdXRwdXQKLSAgICAgICAgICBpZiAob3AuZ2V0T3V0cHV0KCkgPT0gbnVsbCB8fCAhbmV4dE1hdGNoLmhhc0JpbmRpbmdPdXRwdXQoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBObyBPdXRwdXQgc28gbm90aGluZyB0byBjaGVjawotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgbXNnID0gb3AuZ2V0T3V0cHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1zZyA9PSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgY29udGludWU7IC8vIG5vdGhpbmcgdG8gY2hlY2sgZnJvbSB0aGlzIEJpbmRpbmcgTWF0Y2ggKD8pCi0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXQgdGhlIGxpc3Qgb2YgcGFydHMgCi0gICAgICAgIHBhcnRzID0gbXNnLmdldFBhcnRzKCk7Ci0KLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwYXJ0cyBhdHRyaWJ1dGUsIHRoZW4gb25seSBwcm9jZXNzIHRob3NlIHBhcnRzCi0gICAgICAgIExpc3QgcGFydHNOYW1lTGlzdCA9IG51bGw7Ci0gICAgICAgIGlmICgocGFydHNOYW1lTGlzdCA9IGdldFBhcnRzTGlzdChuZXh0TWF0Y2gsIGluT3JPdXQpKSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgVmVjdG9yIHBhcnRzTGlzdCA9IG5ldyBWZWN0b3IoKTsKLSAgICAgICAgICBJdGVyYXRvciBwYXJ0c05hbWVJdGVyYXRvciA9IHBhcnRzTmFtZUxpc3QuaXRlcmF0b3IoKTsKLSAgICAgICAgICB3aGlsZSAocGFydHNOYW1lSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBhcnRzTGlzdC5hZGQocGFydHMuZ2V0KChTdHJpbmcpIHBhcnRzTmFtZUl0ZXJhdG9yLm5leHQoKSkpOwotICAgICAgICAgIH0KLSAgICAgICAgICBwYXJ0SXRlcmF0aW9uID0gcGFydHNMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPdGhlcndpc2UgdXNlIHRoZSBjb21wbGV0ZSBsaXN0IG9mIHBhcnRzCi0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHBhcnRJdGVyYXRpb24gPSBwYXJ0cy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy9jaGVjayB0aGF0IGVhY2ggcGFydCBoYXMgYW4gZWxlbWVudCBvciB0eXBlIGF0dHJpYnV0ZSAgICAJCQkKLSAgICAgICAgd2hpbGUgKHBhcnRJdGVyYXRpb24uaGFzTmV4dCgpKQotICAgICAgICB7Ci0gICAgICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpIHBhcnRJdGVyYXRpb24ubmV4dCgpOwotICAgICAgICAgIGlmIChhdHRyaWIuZXF1YWxzKCJ1c2VFbGVtZW50IikpCi0gICAgICAgICAgewotICAgICAgICAgICAgYXR0cmlidXRlTmFtZSA9IHBhcnQuZ2V0RWxlbWVudE5hbWUoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsgLy8gInVzZVR5cGUiCi0gICAgICAgICAgICBhdHRyaWJ1dGVOYW1lID0gcGFydC5nZXRUeXBlTmFtZSgpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkZhaWxFeGNlcHRpb24oCi0gICAgICAgICAgICAgICJOYW1lIG9mIG9wZXJhdGlvbiB0aGF0IGZhaWxlZDogIgotICAgICAgICAgICAgICAgICsgb3AuZ2V0TmFtZSgpCi0gICAgICAgICAgICAgICAgKyAiXG4iCi0gICAgICAgICAgICAgICAgKyBvcC50b1N0cmluZygpCi0gICAgICAgICAgICAgICAgKyAiXG4iCi0gICAgICAgICAgICAgICAgKyAiXG5OYW1lIG9mIG1lc3NhZ2UgdGhhdCBmYWlsZWQ6ICIKLSAgICAgICAgICAgICAgICArIG1zZy5nZXRRTmFtZSgpCi0gICAgICAgICAgICAgICAgKyAiXG4iCi0gICAgICAgICAgICAgICAgKyBtc2cudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbikKLSAgICAgIHsKLSAgICAgICAgLy8gbm8gcGFydHMgZm91bmQgLSB0aGlzIHF1YWxpZmllcyBhbiBhc3NlcnRpb24gZmFpbHVyZQotICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRmFpbEV4Y2VwdGlvbihuLnRvU3RyaW5nKCkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsgLy8gdGVzdHMgc3VjY2Vzc2Z1bAotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBwYXJ0cyBsaXN0IGZyb20gYSBzb2FwYmluZDpib2R5IGVsZW1lbnQuCi0gICAqLwotICBwcml2YXRlIExpc3QgZ2V0UGFydHNMaXN0KEJpbmRpbmdNYXRjaCBiaW5kaW5nTWF0Y2gsIFN0cmluZyB0eXBlKQotICB7Ci0gICAgTGlzdCBwYXJ0c0xpc3QgPSBudWxsOwotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gbnVsbDsKLQotICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0IHRoZSBiaW5kaW5nIG9wZXJhdGlvbgotICAgICAgYmluZGluZ09wID0gYmluZGluZ01hdGNoLmdldEJpbmRpbmdPcGVyYXRpb24oKTsKLQotICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBiaW5kaW5nIG9wZXJhdGlvbiBjb250YWlucyBhIHNvYXBiaW5kOmJvZHkgd2l0aCBhIHBhcnRzIGF0dHJpYnV0ZQotICAgICAgaWYgKHR5cGUuZXF1YWxzKCJ1c2VJbnB1dCIpKQotICAgICAgewotICAgICAgICBpdGVyYXRvciA9Ci0gICAgICAgICAgYmluZGluZ09wLmdldEJpbmRpbmdJbnB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGl0ZXJhdG9yID0KLSAgICAgICAgICBiaW5kaW5nT3AuZ2V0QmluZGluZ091dHB1dCgpLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgICAgLy8gZWl0aGVyIG5vIGJpbmRpbmcgb3BlcmF0aW9uLCBiaW5kaW5nIGlucHV0L291dHB1dCwgb3IgU09BUCBlbGVtZW50Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBiaW5kaW5nIG9wZXJhdGlvbiBjb250YWlucyBhIHNvYXBiaW5kOmJvZHkgd2l0aCBhIHBhcnRzIGF0dHJpYnV0ZQotICAgIHdoaWxlICgoaXRlcmF0b3IuaGFzTmV4dCgpKSAmJiAocGFydHNMaXN0ID09IG51bGwpKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBTT0FQQm9keSBzb2FwQm9keSA9IChTT0FQQm9keSkgaXRlcmF0b3IubmV4dCgpOwotICAgICAgICBwYXJ0c0xpc3QgPSBzb2FwQm9keS5nZXRQYXJ0cygpOwotICAgICAgfQotICAgICAgY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBjY2UpCi0gICAgICB7IC8vIG5vdCBhIFNPQVBCb2R5IGV4dGVuc2liaWxpdHkgZWxlbWVudCBzbyBpZ25vcmUKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcGFydHNMaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBlbGVtZW50IGxvY2F0aW9uLgotICAgKiBAcGFyYW0gd3NkbERvY3VtZW50IFdTREwgZG9jdW1lbnQuCi0gICAqIEBwYXJhbSB3c2RsRWxlbWVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gZWxlbWVudCBsb2NhdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCBFbGVtZW50TG9jYXRpb24gZ2V0RWxlbWVudExvY2F0aW9uKAotICAgIFdTRExEb2N1bWVudCB3c2RsRG9jdW1lbnQsCi0gICAgT2JqZWN0IHdzZGxFbGVtZW50KQotICB7Ci0gICAgRWxlbWVudExvY2F0aW9uIGVsZW1lbnRMb2NhdGlvbiA9IG51bGw7Ci0gICAgV1NETEVsZW1lbnRMaXN0IHdzZGxFbGVtZW50TGlzdDsKLQotICAgIGlmICgod3NkbEVsZW1lbnRMaXN0ID0gd3NkbERvY3VtZW50LmdldEVsZW1lbnRMaXN0KCkpICE9IG51bGwpCi0gICAgewotICAgICAgZWxlbWVudExvY2F0aW9uID0gd3NkbEVsZW1lbnRMaXN0LmdldEVsZW1lbnRMb2NhdGlvbih3c2RsRWxlbWVudCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVsZW1lbnRMb2NhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgZmFpbHVyZSBkZXRhaWwuCi0gICAqIEBwYXJhbSBtZXNzYWdlIGEgbWVzc2FnZS4KLSAgICogQHBhcmFtIGVudHJ5Q29udGV4dCBlbnRyeSBjb250ZXh0LgotICAgKiBAcmV0dXJuIGZhaWx1cmUgZGV0YWlsLgotICAgKi8KLSAgcHJvdGVjdGVkIEZhaWx1cmVEZXRhaWwgY3JlYXRlRmFpbHVyZURldGFpbCgKLSAgICBTdHJpbmcgbWVzc2FnZSwKLSAgICBFbnRyeUNvbnRleHQgZW50cnlDb250ZXh0KQotICB7Ci0gICAgcmV0dXJuIGNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgICBtZXNzYWdlLAotICAgICAgZW50cnlDb250ZXh0LAotICAgICAgZW50cnlDb250ZXh0LmdldEVudHJ5KCkuZ2V0RW50cnlEZXRhaWwoKSk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGZhaWx1cmUgZGV0YWlsLgotICAgKiBAcGFyYW0gbWVzc2FnZSBhIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBlbnRyeUNvbnRleHQgZW50cnkgY29udGV4dC4KLSAgICogQHBhcmFtIHdzZGxFbGVtZW50IFdTREwgZWxlbWVudC4KLSAgICogQHJldHVybiBmYWlsdXJlIGRldGFpbC4KLSAgICovCi0gIHByb3RlY3RlZCBGYWlsdXJlRGV0YWlsIGNyZWF0ZUZhaWx1cmVEZXRhaWwoCi0gICAgU3RyaW5nIG1lc3NhZ2UsCi0gICAgRW50cnlDb250ZXh0IGVudHJ5Q29udGV4dCwKLSAgICBPYmplY3Qgd3NkbEVsZW1lbnQpCi0gIHsKLSAgICBGYWlsdXJlRGV0YWlsIGZhaWx1cmVEZXRhaWwgPSByZXBvcnRlci5jcmVhdGVGYWlsdXJlRGV0YWlsKCk7Ci0gICAgZmFpbHVyZURldGFpbC5zZXRGYWlsdXJlTWVzc2FnZShtZXNzYWdlKTsKLSAgICBmYWlsdXJlRGV0YWlsLnNldEVsZW1lbnRMb2NhdGlvbigKLSAgICAgIGdldEVsZW1lbnRMb2NhdGlvbihlbnRyeUNvbnRleHQuZ2V0V1NETERvY3VtZW50KCksIHdzZGxFbGVtZW50KSk7Ci0gICAgcmV0dXJuIGZhaWx1cmVEZXRhaWw7Ci0gIH0KLQotICAvKiogCi0gICAqIFNPQVBCb2R5LCBTT0FQRmF1bHQsIFNPQVBIZWFkZXIgYW5kIFNPQVBIZWFkZXJGYXVsdCBjbGFzcyAKLSAgICogaW50ZXJmYWNlcyBoYXZlIGNvbXBhdGlibGUgZ2V0VXNlKCkgYW5kIGdldE5hbWVzcGFjZVVSSSgpIAotICAgKiBtZXRob2RzLCBidXQgd3NkbDRqIGRvZXMgbm90IGRlY2xhcmUgdGhlbSBhdCB0aGUgcGFyZW50IGludGVyZmFjZS4gCi0gICAqIFRoZXJlZm9yZSB1c2UgcmVmbGVjdGlvbiB0byBhY2Nlc3MgdGhlc2UgY29tbW9uIG1ldGhvZHMuCi0gICAqIAotICAgKiBAcGFyYW0gZXh0RWxlbWVudCBleHRlbnNpYmlsaXR5IGVsZW1lbnQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBuYW1lc3BhY2UgaXMgZm91bmQgaW4gU09BUCBsaXRlcmFsLgotICAgKiBAdGhyb3dzIE5vU3VjaE1ldGhvZEV4Y2VwdGlvbiBpZiB0aGlzIG1ldGhvZCBjYW5ub3QgYmUgZm91bmQuCi0gICAqIEB0aHJvd3MgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBpZiBwcm9ibGVtcyBvY2N1ciBpbiBhbiBpbnZva2VkIG1ldGhvZCBvciBjb25zdHJ1Y3RvcgotICAgKiBAdGhyb3dzIElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gaWYgdGhlcmUgaXMgYW0gYXR0ZW1wdCB0byBsb2FkIGEKLSAgICogICAgICAgICBjbGFzcyB0aGF0IGl0IGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvLgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gbmFtZXNwYWNlRm91bmRJblNvYXBMaXRlcmFsKEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dEVsZW1lbnQpCi0gICAgdGhyb3dzIE5vU3VjaE1ldGhvZEV4Y2VwdGlvbiwgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiwgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbgotICB7Ci0gICAgQ2xhc3MgYyA9IGV4dEVsZW1lbnQuZ2V0Q2xhc3MoKTsKLSAgICBNZXRob2QgZ2V0VXNlTWV0aG9kID0gYy5nZXRNZXRob2QoImdldFVzZSIsIG5ldyBDbGFzc1swXSk7Ci0gICAgTWV0aG9kIGdldE5hbWVzcGFjZVVSSU1ldGhvZCA9IGMuZ2V0TWV0aG9kKCJnZXROYW1lc3BhY2VVUkkiLCBuZXcgQ2xhc3NbMF0pOwotCi0gICAgLy8gKHVzZSBhdHRyaWJ1dGUgaXMgbWFuZGF0b3J5IGJ1dCB0aGUgbnVsbCBjYXNlIGlzIGNoZWNrZWQgZm9yIHNpbmNlIGEgbWlzc2luZyB1c2UgaXMgbm90Ci0gICAgLy8gY2hlY2tlZCB3aXRoIHRoaXMgVEEuIElmIGl0cyBtaXNzaW5nIGl0cyBpbnZhbGlkIGJ1dCB3ZSBkb24ndCBrbm93IHdoZXRoZXIgd2UgaGF2ZSBkb2MtbGl0KS4gICAgIAkJCi0gICAgaWYgKGdldFVzZU1ldGhvZC5pbnZva2UoZXh0RWxlbWVudCwgbnVsbCkgPT0gbnVsbAotICAgICAgfHwgIWdldFVzZU1ldGhvZC5pbnZva2UoZXh0RWxlbWVudCwgbnVsbCkuZXF1YWxzKAotICAgICAgICBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JPRFlfVVNFX0xJVCkpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIHJldHVybiB0cnVlIGlmIG5hbWVzcGFjZSBmb3VuZAotICAgIGJvb2xlYW4gbmFtZXNwYWNlRm91bmQgPQotICAgICAgKGdldE5hbWVzcGFjZVVSSU1ldGhvZC5pbnZva2UoZXh0RWxlbWVudCwgbnVsbCkgIT0gbnVsbCk7Ci0KLSAgICAvLyByZXR1cm4gdHJ1ZSBpZiBuYW1lc3BhY2UgZm91bmQKLSAgICByZXR1cm4gbmFtZXNwYWNlRm91bmQ7Ci0KLSAgfQotCi0gIC8qKgotICAgKiBWZXJpZnkgZXh0ZW5zaWJpbGl0eSBlbGVtZW50IHVzZXMgbGl0ZXJhbC4KLSAgICogQHBhcmFtIGV4dGVuc2libGUgLSBleHRlbnNpYmlsaXR5IGVsZW1lbnQKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqIEB0aHJvd3MgTm9TdWNoTWV0aG9kRXhjZXB0aW9uIGlmIHRoaXMgbWV0aG9kIGNhbm5vdCBiZSBmb3VuZC4KLSAgICogQHRocm93cyBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGlmIHByb2JsZW1zIG9jY3VyIGluIGFuIGludm9rZWQgbWV0aG9kIG9yIGNvbnN0cnVjdG9yCi0gICAqIEB0aHJvd3MgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbSBhdHRlbXB0IHRvIGxvYWQgYQotICAgKiAgICAgICAgIGNsYXNzIHRoYXQgaXQgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8uCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBpc0xpdGVyYWwoRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJsZSkKLSAgICB0aHJvd3MgTm9TdWNoTWV0aG9kRXhjZXB0aW9uLCBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uLCBJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uCi0gIHsKLQotICAgIENsYXNzIGMgPSBleHRlbnNpYmxlLmdldENsYXNzKCk7Ci0gICAgTWV0aG9kIGdldFVzZU1ldGhvZCA9IGMuZ2V0TWV0aG9kKCJnZXRVc2UiLCBuZXcgQ2xhc3NbMF0pOwotCi0gICAgLy8gKHVzZSBhdHRyaWJ1dGUgaXMgbWFuZGF0b3J5IGJ1dCB0aGUgbnVsbCBjYXNlIGlzIGNoZWNrZWQgZm9yIHNpbmNlIGEgbWlzc2luZyB1c2UgaXMgbm90Ci0gICAgLy8gY2hlY2tlZCB3aXRoIHRoaXMgVEEuIElmIGl0cyBtaXNzaW5nIGl0cyBpbnZhbGlkIGJ1dCB3ZSBkb24ndCBrbm93IHdoZXRoZXIgd2UgaGF2ZSBkb2MtbGl0KS4gICAgIAkJCi0gICAgaWYgKGdldFVzZU1ldGhvZC5pbnZva2UoZXh0ZW5zaWJsZSwgbnVsbCkgPT0gbnVsbAotICAgICAgfHwgIWdldFVzZU1ldGhvZC5pbnZva2UoZXh0ZW5zaWJsZSwgbnVsbCkuZXF1YWxzKAotICAgICAgICBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JPRFlfVVNFX0xJVCkpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIHJldHVybiB0cnVlIGlmIHNob3duIHRvIGhhdmUgdXNlPSJsaXRlcmFsIgotICAgIHJldHVybiB0cnVlOwotCi0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biAoZGVwZW5kaW5nIG9uIHRoZSBhbmFseXplcgotICAgKiBjb25maWcpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBydW5UZXN0cygpIHsgcmV0dXJuIHRlc3RhYmxlOyB9IAotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMTAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDEwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMzliNWQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMTAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjAxMAotICovCi1wdWJsaWMgY2xhc3MgV1NJMjAxMCBleHRlbmRzIEJQMjAxMAotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMDEwKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDExLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAxMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWQ1ZGE3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDExLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIwMTEKLSAqLwotcHVibGljIGNsYXNzIFdTSTIwMTEgZXh0ZW5kcyBCUDIwMTEKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjAxMShXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAxMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMTIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFkOWVmMi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAxMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMDEyCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMDEyIGV4dGVuZHMgQlAyMDEyCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIwMTIoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMTMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDEzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZjAxY2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMTMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjAxMwotICovCi1wdWJsaWMgY2xhc3MgV1NJMjAxMyBleHRlbmRzIEJQMjAxMwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMDEzKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDE0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAxNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmI2YTZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDE0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIwMTQKLSAqLwotcHVibGljIGNsYXNzIFdTSTIwMTQgZXh0ZW5kcyBCUDIwMTQKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjAxNChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAxNy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMTcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNlOTgyMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAxNy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMDE3Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMDE3IGV4dGVuZHMgQlAyMDE3Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIwMTcoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMTguamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDE4LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NDVlMzEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMTguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjAxOAotICovCi1wdWJsaWMgY2xhc3MgV1NJMjAxOCBleHRlbmRzIEJQMjAxOAotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMDE4KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDE5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAxOS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjE5N2YyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDE5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIwMTkKLSAqLwotcHVibGljIGNsYXNzIFdTSTIwMTkgZXh0ZW5kcyBCUDIwMTkKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjAxOShXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAyMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMjAuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVmMDIwNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAyMC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMDIwCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMDIwIGV4dGVuZHMgQlAyMDIwCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIwMjAoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMjEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDIxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzN2YxYmMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMjEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjAyMQotICovCi1wdWJsaWMgY2xhc3MgV1NJMjAyMSBleHRlbmRzIEJQMjAyMQotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMDIxKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDIyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAyMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjY5OTY1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDIyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIwMjIKLSAqLwotcHVibGljIGNsYXNzIFdTSTIwMjIgZXh0ZW5kcyBCUDIwMjIKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjAyMihXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAzMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwMzIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMwN2FjMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjAzMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMDMyCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMDMyIGV4dGVuZHMgQlAyMDMyCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIwMzIoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwOTguamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDk4LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyYTkwNWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIwOTguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjA5OAotICovCi1wdWJsaWMgY2xhc3MgV1NJMjA5OCBleHRlbmRzIEJQMjA5OAotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMDk4KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDk5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjA5OS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTRiNTJjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMDk5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk91dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lUYWc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuRW50cnlDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkFzc2VydGlvblByb2Nlc3NWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLkVycm9yTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogV1NJMjA5OS4KLSAgICogPGNvbnRleHQ+Rm9yIGEgY2FuZGlkYXRlIHdzZGw6ZGVmaW5pdGlvbnMsIDwvY29udGV4dD4KLSAgICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPkEgV1MtSSBjb25mb3JtYW5jZSBhbm5vdGF0aW9uIGRvZXMgbm90IGFwcGVhciBvdXRzaWRlIGEgd3NkbDpwb3J0LCB3c2RsOmJpbmRpbmcsIHdzZGw6cG9ydFR5cGUsIHdzZGw6b3BlcmF0aW9uLCBvciB3c2RsOm1lc3NhZ2UgZWxlbWVudC48L2Fzc2VydGlvbkRlc2NyaXB0aW9uPgotICovCi1wdWJsaWMgY2xhc3MgV1NJMjA5OSBleHRlbmRzIEFzc2VydGlvblByb2Nlc3NWaXNpdG9yIGltcGxlbWVudHMgV1NJVGFnCi17Ci0gIHByaXZhdGUgZmluYWwgV1NETFZhbGlkYXRvckltcGwgdmFsaWRhdG9yOwotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMDk5KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgICB0aGlzLnZhbGlkYXRvciA9IGltcGw7Ci0gIH0KLQotICBwcml2YXRlIEVycm9yTGlzdCBlcnJvcnMgPSBuZXcgRXJyb3JMaXN0KCk7Ci0gIHByaXZhdGUgYm9vbGVhbiBjb250YWluc0NsYWltcyA9IGZhbHNlOwotCi0gIC8qKgotICAgKiAgQ2hlY2sgYSBXUy1JIGNvbmZvcm1hbmNlIGFubm90YXRpb24gZG9lcyBub3QgYXBwZWFyIG91dHNpZGUgYSB3c2RsOnBvcnQsIHdzZGw6YmluZGluZywgd3NkbDpwb3J0VHlwZSwgd3NkbDpvcGVyYXRpb24sIG9yIHdzZGw6bWVzc2FnZSBlbGVtZW50IGlmIG5vdCBpdCBjcmVhdGVzIGZhaWx1cmUgcmVwb3J0LgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoRWxlbWVudCBlbCwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgLy8gY29uZm9ybWFuY2UgY2xhaW0gc2hvdWxkIGJlIHdpdGhpbiA6IHBvcnQsIGJpbmRpbmcsIHBvcnR0eXBlLCBvcGVyYXRpb24sIG1lc3NhZ2UKLSAgICBpZiAoY29udGFpbnNDb25mb3JtYW5jZUNsYWltKGVsKSkKLSAgICB7Ci0gICAgICBjb250YWluc0NsYWltcyA9IHRydWU7Ci0KLSAgICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nRmF1bHQpCi0gICAgICAgIGVycm9ycy5hZGQoV1NETF9GQVVMVCwgKChCaW5kaW5nRmF1bHQpIHBhcmVudCkuZ2V0TmFtZSgpKTsKLSAgICAgIGVsc2UgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEJpbmRpbmdJbnB1dCkKLSAgICAgICAgZXJyb3JzLmFkZChXU0RMX0lOUFVULCAoKEJpbmRpbmdJbnB1dCkgcGFyZW50KS5nZXROYW1lKCkpOwotICAgICAgZWxzZSBpZiAocGFyZW50IGluc3RhbmNlb2YgQmluZGluZ09wZXJhdGlvbikKLSAgICAgICAgZXJyb3JzLmFkZChXU0RMX09QRVJBVElPTiwgKChCaW5kaW5nT3BlcmF0aW9uKSBwYXJlbnQpLmdldE5hbWUoKSk7Ci0gICAgICBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nT3V0cHV0KQotICAgICAgICBlcnJvcnMuYWRkKFdTRExfT1VUUFVULCAoKEJpbmRpbmdPdXRwdXQpIHBhcmVudCkuZ2V0TmFtZSgpKTsKLSAgICAgIGVsc2UgaWYgKHBhcmVudCBpbnN0YW5jZW9mIERlZmluaXRpb24pCi0gICAgICAgIGVycm9ycy5hZGQoV1NETF9ERUZJTklUSU9OUywgKChEZWZpbml0aW9uKSBwYXJlbnQpLmdldFFOYW1lKCkpOwotICAgICAgZWxzZSBpZiAocGFyZW50IGluc3RhbmNlb2YgU2VydmljZSkKLSAgICAgICAgZXJyb3JzLmFkZChXU0RMX1NFUlZJQ0UsICgoU2VydmljZSkgcGFyZW50KS5nZXRRTmFtZSgpKTsKLSAgICAgIGVsc2UgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEZhdWx0KQotICAgICAgICBlcnJvcnMuYWRkKFdTRExfRkFVTFQsICgoRmF1bHQpIHBhcmVudCkuZ2V0TmFtZSgpKTsKLSAgICAgIGVsc2UgaWYgKHBhcmVudCBpbnN0YW5jZW9mIE91dHB1dCkKLSAgICAgICAgZXJyb3JzLmFkZChXU0RMX0lOUFVULCAoKE91dHB1dCkgcGFyZW50KS5nZXROYW1lKCkpOwotICAgICAgZWxzZSBpZiAocGFyZW50IGluc3RhbmNlb2YgSW1wb3J0KQotICAgICAgICBlcnJvcnMuYWRkKFdTRExfSU1QT1JULCAoKEltcG9ydCkgcGFyZW50KS5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgICBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBJbnB1dCkKLSAgICAgICAgZXJyb3JzLmFkZChXU0RMX0lOUFVULCAoKElucHV0KSBwYXJlbnQpLmdldE5hbWUoKSk7Ci0gICAgICBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBQYXJ0KQotICAgICAgICBlcnJvcnMuYWRkKFdTRExfUEFSVCwgKChQYXJ0KSBwYXJlbnQpLmdldE5hbWUoKSk7Ci0gICAgICBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBUeXBlcykKLSAgICAgICAgZXJyb3JzLmFkZChXU0RMX1RZUEVTKTsKLSAgICB9Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgLy9WaXNpdG9yQWRhcHRvci5hZGFwdCh0aGlzKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRFbGVtZW50KHRydWUpOwotICAgIC8qCi0gICAgdHJhdmVyc2FsLgotICAgIAlpZ25vcmVQb3J0MkVsZW1lbnQoKS4KLSAgICAJaWdub3JlTWVzc2FnZTJFbGVtZW50KCkuCi0gICAgCWlnbm9yZUJpbmRpbmcyRWxlbWVudCgpLgotICAgIAlpZ25vcmVQb3J0VHlwZTJFbGVtZW50KCkuCi0gICAgCWlnbm9yZU9wZXJhdGlvbjJFbGVtZW50KCk7CQkKLSAgICAgICovCi0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlSW1wb3J0KCk7Ci0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKChEZWZpbml0aW9uKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLQotICAgIC8vIGNyZWF0ZSBkZXRhaWwgbWVzc2FnZSB3aXRoIHRoZSBsaXN0IG9mIGVycm9yIGVsZW1lbnRzCi0gICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGVycm9ycy50b1N0cmluZygpLCBlbnRyeUNvbnRleHQpOwotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgfQotCi0gICAgZWxzZSBpZiAoIWNvbnRhaW5zQ2xhaW1zKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotCi0gICAgZWxzZQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotICAgIH0KLQotICAgIHJldHVybiB2YWxpZGF0b3IuY3JlYXRlQXNzZXJ0aW9uUmVzdWx0KHRlc3RBc3NlcnRpb24sIHJlc3VsdCwgZmFpbHVyZURldGFpbCk7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2sgdGhlIGRvY3VtZW50YXRpb24gZWxlbWVudCB3aGV0aGVyIGNvbnRhaW5zIGNvbmZvcm1hbmNlIGNsYWltcy4gCi0gICAqIFJldHVybnMgdHJ1ZSBpZiBkb2N1bWVudGF0aW9uIGVsZW1lbnQgY29udGFpbnMgY29uZm9ybWFuY2UgY2xhaW0uIAotICAgKiBAcGFyYW0gZWwKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gY29udGFpbnNDb25mb3JtYW5jZUNsYWltKEVsZW1lbnQgZWwpCi0gIHsKLSAgICBpZiAoZWwgPT0gbnVsbCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBlbCA9IFhNTFV0aWxzLmZpbmRDaGlsZEVsZW1lbnQoZWwsIFdTSV9DTEFJTSk7Ci0gICAgcmV0dXJuIChlbCAhPSBudWxsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTAwLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEwMC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTE1NTg1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTAwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlRlc3RBc3NlcnRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Bc3NlcnRpb25Qcm9jZXNzVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FcnJvckxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIFdTSTIxMDAuCi0gICAqIDxjb250ZXh0PkZvciBhIGNhbmRpZGF0ZSB3c2RsOmRlZmluaXRpb25zLCBpZiBpdCBjb250YWlucyBhIHdzZGw6cG9ydCwgd3NkbDpiaW5kaW5nLCB3c2RsOnBvcnRUeXBlLCB3c2RsOm9wZXJhdGlvbiwgb3Igd3NkbDptZXNzYWdlLCB3aGljaCBpbiB0dXJuIGNvbnRhaW5zIGEgY29uZm9ybWFuY2UgYW5ub3RhdGlvbjwvY29udGV4dD4KLSAgICogPGFzc2VydGlvbkRlc2NyaXB0aW9uPlRoZSBjb25mb3JtYW5jZSBhbm5vdGF0aW9uIG9mIHRoZSB3c2RsOnBvcnQsIHdzZGw6YmluZGluZywgd3NkbDpwb3J0VHlwZSwgd3NkbDpvcGVyYXRpb24sIG9yIHdzZGw6bWVzc2FnZSwgdmFsaWRhdGVzIHRvIHRoZSBzY2hlbWEgZGVmaW5lZCBpbiB0aGUgQmFzaWMgUHJvZmlsZSwgYW5kIGlzIGRpcmVjdCBjaGlsZCBvZiB0aGUgZG9jdW1lbnRhdGlvbiBlbGVtZW50IGZvciB0aGUgV1NETCBlbGVtZW50LiBUaGUgc2NoZW1hIGRlZmluaXRpb24gdXNlcyAiaHR0cDovL3dzLWkub3JnL3NjaGVtYXMvY29uZm9ybWFuY2VDbGFpbS8iIGFzIHRoZSB0YXJnZXROYW1lc3BhY2UuIDwvYXNzZXJ0aW9uRGVzY3JpcHRpb24+Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMTAwIGV4dGVuZHMgQXNzZXJ0aW9uUHJvY2Vzc1Zpc2l0b3IgaW1wbGVtZW50cyBXU0lUYWcKLXsKLSAgcHJpdmF0ZSBmaW5hbCBXU0RMVmFsaWRhdG9ySW1wbCB2YWxpZGF0b3I7Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIxMDAoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICAgIHRoaXMudmFsaWRhdG9yID0gaW1wbDsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBjb250YWluc0NsYWltcyA9IGZhbHNlOwotICBwcml2YXRlIEVycm9yTGlzdCBlcnJvcnMgPSBuZXcgRXJyb3JMaXN0KCk7Ci0KLSAgLyogQ3JlYXRlIGZhbHVyZSByZXBvcnQgaWYgcG9ydCBjb250YWlucyBpbGxlZ2FsIGNsYWltLgotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5Qb3J0LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoUG9ydCBwb3J0LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBpZiAocG9ydCAhPSBudWxsICYmICFjb250YWluc0xlZ2FsQ2xhaW0ocG9ydC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKSkKLSAgICAgIGVycm9ycy5hZGQoV1NETF9QT1JULCBwb3J0LmdldE5hbWUoKSk7Ci0gIH0KLQotICAvKiBDcmVhdGUgZmFsdXJlIHJlcG9ydCBpZiBiaW5kaW5nIGNvbnRhaW5zIGlsbGVnYWwgY2xhaW0uCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLkJpbmRpbmcsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChCaW5kaW5nIGJpbmRpbmcsIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGlmIChiaW5kaW5nICE9IG51bGwKLSAgICAgICYmICFjb250YWluc0xlZ2FsQ2xhaW0oYmluZGluZy5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKSkKLSAgICAgIGVycm9ycy5hZGQoV1NETF9CSU5ESU5HLCBiaW5kaW5nLmdldFFOYW1lKCkpOwotICB9Ci0KLSAgLyogQ3JlYXRlIGZhbHVyZSByZXBvcnQgaWYgcG9ydCB0eXBlIGNvbnRhaW5zIGlsbGVnYWwgY2xhaW0uCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLlBvcnRUeXBlLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoUG9ydFR5cGUgdHlwZSwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgaWYgKHR5cGUgIT0gbnVsbCAmJiAhY29udGFpbnNMZWdhbENsYWltKHR5cGUuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSkpCi0gICAgICBlcnJvcnMuYWRkKFdTRExfUE9SVFRZUEUsIHR5cGUuZ2V0UU5hbWUoKSk7Ci0gIH0KLQotICAvKiBDcmVhdGUgZmFsdXJlIHJlcG9ydCBpZiBvcGVyYXRpb24gY29udGFpbnMgaWxsZWdhbCBjbGFpbS4KLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuT3BlcmF0aW9uLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgT3BlcmF0aW9uIG9wZXJhdGlvbiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGlmIChvcGVyYXRpb24gIT0gbnVsbAotICAgICAgJiYgIWNvbnRhaW5zTGVnYWxDbGFpbShvcGVyYXRpb24uZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSkpCi0gICAgICBlcnJvcnMuYWRkKFdTRExfT1BFUkFUSU9OLCBvcGVyYXRpb24uZ2V0TmFtZSgpKTsKLSAgfQotCi0gIC8qIENyZWF0ZSBmYWx1cmUgcmVwb3J0IGlmIG1lc3NhZ2UgY29udGFpbnMgaWxsZWdhbCBjbGFpbS4KLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuTWVzc2FnZSwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KE1lc3NhZ2UgbWVzc2FnZSwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgaWYgKG1lc3NhZ2UgIT0gbnVsbAotICAgICAgJiYgIWNvbnRhaW5zTGVnYWxDbGFpbShtZXNzYWdlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpKQotICAgICAgZXJyb3JzLmFkZChXU0RMX01FU1NBR0UsIG1lc3NhZ2UuZ2V0UU5hbWUoKSk7Ci0gIH0KLQotICAvKiBWYWxpZGF0ZXMgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlIG9yZy53c2kudGVzdC5wcm9maWxlLnZhbGlkYXRvci5pbXBsLkJhc2VWYWxpZGF0b3JJbXBsLkFzc2VydGlvblByb2Nlc3MjdmFsaWRhdGUob3JnLndzaS50ZXN0LnByb2ZpbGUuVGVzdEFzc2VydGlvbiwgb3JnLndzaS50ZXN0LnByb2ZpbGUudmFsaWRhdG9yLkVudHJ5Q29udGV4dCkKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgdmFsaWRhdGUoCi0gICAgVGVzdEFzc2VydGlvbiB0ZXN0QXNzZXJ0aW9uLAotICAgIEVudHJ5Q29udGV4dCBlbnRyeUNvbnRleHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0KLSAgICBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbCA9IG5ldyBXU0RMVHJhdmVyc2FsKCk7Ci0gICAgLy9WaXNpdG9yQWRhcHRvci5hZGFwdCh0aGlzKTsKLSAgICB0cmF2ZXJzYWwuc2V0VmlzaXRvcih0aGlzKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRPcGVyYXRpb24odHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0QmluZGluZyh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRNZXNzYWdlKHRydWUpOwotICAgIHRyYXZlcnNhbC52aXNpdFBvcnQodHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0UG9ydFR5cGUodHJ1ZSk7Ci0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlSW1wb3J0KCk7Ci0gICAgdHJhdmVyc2FsLnRyYXZlcnNlKChEZWZpbml0aW9uKSBlbnRyeUNvbnRleHQuZ2V0RW50cnkoKS5nZXRFbnRyeURldGFpbCgpKTsKLQotICAgIC8vIGNyZWF0ZSBkZXRhaWwgbWVzc2FnZSB3aXRoIHRoZSBsaXN0IG9mIGVycm9yIGVsZW1lbnRzCi0gICAgaWYgKCFlcnJvcnMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIGZhaWx1cmVEZXRhaWwgPSB0aGlzLnZhbGlkYXRvci5jcmVhdGVGYWlsdXJlRGV0YWlsKGVycm9ycy50b1N0cmluZygpLCBlbnRyeUNvbnRleHQpOwotICAgICAgcmVzdWx0ID0gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQ7Ci0gICAgfQotCi0gICAgZWxzZSBpZiAoIWNvbnRhaW5zQ2xhaW1zKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfTk9UX0FQUExJQ0FCTEU7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IEFzc2VydGlvblJlc3VsdC5SRVNVTFRfUEFTU0VEOwotCi0gICAgcmV0dXJuIHZhbGlkYXRvci5jcmVhdGVBc3NlcnRpb25SZXN1bHQodGVzdEFzc2VydGlvbiwgcmVzdWx0LCBmYWlsdXJlRGV0YWlsKTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBlbGVtZW50IHdoZXRoZXIgY29udGFpbnMgY29uZm9ybWFuY2UgY2xhaW1zLgotICAgKiBSZXR1cm5zIHRydWUgaWYgZG9jdW1lbnRhdGlvbiBlbGVtZW50IGNvbnRhaW5zIGNvbmZvcm1hbmNlIGNsYWltIHdpdGgKLSAgICogaWxsZWdhbCBzY2hlbWEgZGVmaW5pdGlvbiBVUkkuIAotICAgKiBsZWdhbCBpcyAnaHR0cDovL3dzLWkub3JnL3NjaGVtYXMvY29uZm9ybWFuY2VDbGFpbS8nCi0gICAqIEBwYXJhbSBlbAotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBjb250YWluc0xlZ2FsQ2xhaW0oRWxlbWVudCBlbCkKLSAgewotICAgIGlmIChlbCA9PSBudWxsKQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgLy8gZmluZCBjbGFpbQotICAgIGVsID0gWE1MVXRpbHMuZmluZENoaWxkRWxlbWVudChlbCwgV1NJX0NMQUlNKTsKLQotICAgIGlmIChlbCAhPSBudWxsKQotICAgICAgY29udGFpbnNDbGFpbXMgPSB0cnVlOwotCi0gICAgd2hpbGUgKGVsICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKFhNTFV0aWxzLmdldEF0dHJpYnV0ZShlbCwgQVRUUl9DTEFJTV9DT05GT1JNU1RPKSA9PSBudWxsCi0gICAgICAgIHx8IFhNTFV0aWxzLmdldEF0dHJpYnV0ZShlbCwgQVRUUl9TT0FQX01VU1RVTkRFUlNUQU5EKSAhPSBudWxsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBlbCA9IFhNTFV0aWxzLmZpbmRFbGVtZW50KGVsLCBXU0lfQ0xBSU0pOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTAxLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEwMS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGYwOWRiLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTAxLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIxMDEKLSAqLwotcHVibGljIGNsYXNzIFdTSTIxMDEgZXh0ZW5kcyBCUDIxMDEKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjEwMShXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEwMi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMDIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM2MjdkMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEwMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMTAyCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMTAyIGV4dGVuZHMgQlAyMTAyCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIxMDIoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMDMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTAzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNzVmMTkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMDMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjEwMwotICovCi1wdWJsaWMgY2xhc3MgV1NJMjEwMyBleHRlbmRzIEJQMjEwMwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMTAzKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTA0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEwNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzQyNzc5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTA0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIxMDQKLSAqLwotcHVibGljIGNsYXNzIFdTSTIxMDQgZXh0ZW5kcyBCUDIxMDQKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjEwNChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEwNS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMDUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJiZGRmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEwNS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMTA1Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMTA1IGV4dGVuZHMgQlAyMTA1Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIxMDUoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMDcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTA3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNTc0MmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMDcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjEwNwotICovCi1wdWJsaWMgY2xhc3MgV1NJMjEwNyBleHRlbmRzIEJQMjEwNwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMTA3KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTA4LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEwOC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDZiZWFhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTA4LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIxMDgKLSAqLwotcHVibGljIGNsYXNzIFdTSTIxMDggZXh0ZW5kcyBCUDIxMDgKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjEwOChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTAuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcwY2M0ZC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExMC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMTEwCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMTEwIGV4dGVuZHMgQlAyMTEwCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIxMTAoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTExLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmOTI4NmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjExMQotICovCi1wdWJsaWMgY2xhc3MgV1NJMjExMSBleHRlbmRzIEJQMjExMQotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMTExKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTEyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDQwYWJlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTEyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIxMTIKLSAqLwotcHVibGljIGNsYXNzIFdTSTIxMTIgZXh0ZW5kcyBCUDIxMTIKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjExMihXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMxMTg5Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMTEzCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMTEzIGV4dGVuZHMgQlAyMTEzCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIxMTMoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTE0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNTVhMjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjExNAotICovCi1wdWJsaWMgY2xhc3MgV1NJMjExNCBleHRlbmRzIEJQMjExNAotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMTE0KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTE1LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExNS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTZlZjdhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTE1LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIxMTUKLSAqLwotcHVibGljIGNsYXNzIFdTSTIxMTUgZXh0ZW5kcyBCUDIxMTUKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjExNShXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExNi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMzNThlNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExNi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMTE2Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMTE2IGV4dGVuZHMgQlAyMTE2Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIxMTYoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTcuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTE3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3YjM3N2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjExNwotICovCi1wdWJsaWMgY2xhc3MgV1NJMjExNyBleHRlbmRzIEJQMjExNwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMTE3KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTE4LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExOC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmQzMzA3Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTE4LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIxMTgKLSAqLwotcHVibGljIGNsYXNzIFdTSTIxMTggZXh0ZW5kcyBCUDIxMTgKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjExOChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExOS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMTkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQxNmNlMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjExOS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMTE5Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMTE5IGV4dGVuZHMgQlAyMTE5Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIxMTkoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMjAuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTIwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMmUyMDUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMjAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjEyMAotICovCi1wdWJsaWMgY2xhc3MgV1NJMjEyMCBleHRlbmRzIEJQMjEyMAotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMTIwKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTIyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEyMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjk5NGVjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMTIyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIxMjIKLSAqLwotcHVibGljIGNsYXNzIFdTSTIxMjIgZXh0ZW5kcyBCUDIxMjIKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjEyMihXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEyMy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIxMjMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRmMDVhNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjEyMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMTIzCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMTIzIGV4dGVuZHMgQlAyMTIzCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIxMjMoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIyMDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMjAxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NjQ1N2MuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIyMDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjIwMQotICovCi1wdWJsaWMgY2xhc3MgV1NJMjIwMSBleHRlbmRzIEJQMjIwMQotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyMjAxKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMjAyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjIwMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmI1OWYzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyMjAyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTIyMDIKLSAqLwotcHVibGljIGNsYXNzIFdTSTIyMDIgZXh0ZW5kcyBCUDIyMDIKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjIwMihXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjIwOC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTIyMDguamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVkNzEzMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjIwOC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyMjA4Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyMjA4IGV4dGVuZHMgQlAyMjA4Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTIyMDgoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTI0MDIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNDAyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYzU3ODUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTI0MDIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjQwMgotICovCi1wdWJsaWMgY2xhc3MgV1NJMjQwMiBleHRlbmRzIEJQMjQwMgotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyNDAyKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNDAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjQwMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmFjZDQyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNDAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTI0MDMKLSAqLwotcHVibGljIGNsYXNzIFdTSTI0MDMgZXh0ZW5kcyBTU0JQMjQwMwotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyNDAzKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNDA0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjQwNC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGZhOGU5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNDA0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTI0MDQKLSAqLwotcHVibGljIGNsYXNzIFdTSTI0MDQgZXh0ZW5kcyBCUDI0MDQKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjQwNChXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjQwNi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTI0MDYuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZkNDIwYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjQwNi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyNDA2Ci0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyNDA2IGV4dGVuZHMgQlAyNDA2Ci17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTI0MDYoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTI0MTYuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNDE2LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MGJmM2YuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTI0MTYuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjQxNgotICovCi1wdWJsaWMgY2xhc3MgV1NJMjQxNiBleHRlbmRzIEJQMjQxNgotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyNDE2KFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNDE3LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjQxNy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzIzODM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNDE3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTI0MTcKLSAqLwotcHVibGljIGNsYXNzIFdTSTI0MTcgZXh0ZW5kcyBCUDI0MTcKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjQxNyhXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjcwMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTI3MDAuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzliYmIzNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjcwMC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0kyNzAwCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0kyNzAwIGV4dGVuZHMgQlAyNzAwCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTI3MDAoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTI3MDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNzAxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMzdmNTMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTI3MDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJMjcwMQotICovCi1wdWJsaWMgY2xhc3MgV1NJMjcwMSBleHRlbmRzIEJQMjcwMQotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0kyNzAxKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNzAzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJMjcwMy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDYzNzA4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0kyNzAzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTI3MDMKLSAqLwotcHVibGljIGNsYXNzIFdTSTI3MDMgZXh0ZW5kcyBCUDI3MDMKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJMjcwMyhXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJNDIwMC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTQyMDAuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0M2E3Yy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJNDIwMC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwud3NkbDsKLQotLyoqCi0gKiBXU0k0MjAwCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0k0MjAwIGV4dGVuZHMgQlA0MjAwCi17Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBXU0RMVmFsaWRhdG9ySW1wbAotICAgKi8KLSAgcHVibGljIFdTSTQyMDAoV1NETFZhbGlkYXRvckltcGwgaW1wbCkKLSAgewotICAgIHN1cGVyKGltcGwpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTQyMDEuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0k0MjAxLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MjMzZDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcHJvZmlsZS92YWxpZGF0b3IvaW1wbC93c2RsL1dTSTQyMDEuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5pbXBsLndzZGw7Ci0KLS8qKgotICogV1NJNDIwMQotICovCi1wdWJsaWMgY2xhc3MgV1NJNDIwMSBleHRlbmRzIEJQNDIwMQotewotCi0gIC8qKgotICAgKiBAcGFyYW0gV1NETFZhbGlkYXRvckltcGwKLSAgICovCi0gIHB1YmxpYyBXU0k0MjAxKFdTRExWYWxpZGF0b3JJbXBsIGltcGwpCi0gIHsKLSAgICBzdXBlcihpbXBsKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0k0MjAyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9wcm9maWxlL3ZhbGlkYXRvci9pbXBsL3dzZGwvV1NJNDIwMi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmQ5YmFlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Byb2ZpbGUvdmFsaWRhdG9yL2ltcGwvd3NkbC9XU0k0MjAyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC53c2RsOwotCi0vKioKLSAqIFdTSTQyMDIKLSAqLwotcHVibGljIGNsYXNzIFdTSTQyMDIgZXh0ZW5kcyBCUDQyMDIKLXsKLQotICAvKioKLSAgICogQHBhcmFtIFdTRExWYWxpZGF0b3JJbXBsCi0gICAqLwotICBwdWJsaWMgV1NJNDIwMihXU0RMVmFsaWRhdG9ySW1wbCBpbXBsKQotICB7Ci0gICAgc3VwZXIoaW1wbCk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvQXJ0aWZhY3RSZWZlcmVuY2UuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9BcnRpZmFjdFJlZmVyZW5jZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTg5OWRlLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9BcnRpZmFjdFJlZmVyZW5jZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQ7Ci0KLS8qKgotICogQW4gYXJ0aWZhY3QgcmVmZXJlbmNlLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIEFydGlmYWN0UmVmZXJlbmNlIGV4dGVuZHMgRG9jdW1lbnRFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9BUlRJRkFDVF9SRUZFUkVOQ0U7Ci0KLSAgLyoqCi0gICAqIFFOYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX1JFUE9SVCwgRUxFTV9OQU1FKTsKLQotICAvKioKLSAgICogR2V0IHRpbWVzdGFtcC4KLSAgICogQHJldHVybiB0aW1lc3RhbXAuCi0gICAqIEBzZWUgI3NldFRpbWVzdGFtcAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRUaW1lc3RhbXAoKTsKLQotICAvKioKLSAgICogU2V0IHRpbWVzdGFtcC4KLSAgICogQHBhcmFtIHRpbWVzdGFtcCBhIHRpbWVzdGFtcC4KLSAgICogQHNlZSAjZ2V0VGltZXN0YW1wCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUaW1lc3RhbXAoU3RyaW5nIHRpbWVzdGFtcCk7Ci0KLSAgLyoqCi0gICAqIEdldCBkb2N1bWVudCBlbGVtZW50LgotICAgKiBAcmV0dXJuIGRvY3VtZW50IGVsZW1lbnQuCi0gICAqIEBzZWUgI3NldERvY3VtZW50RWxlbWVudAotICAgKi8KLSAgcHVibGljIERvY3VtZW50RWxlbWVudCBnZXREb2N1bWVudEVsZW1lbnQoKTsKLQotICAvKioKLSAgICogU2V0IGRvY3VtZW50IGVsZW1lbnQuCi0gICAqIEBwYXJhbSBkb2N1bWVudEVsZW1lbnQgZG9jdW1lbnQgZWxlbWVudC4KLSAgICogQHBhcmFtIG5hbWVzcGFjZU5hbWUgICBuYW1lc3BhY2UgcHJlZml4LgotICAgKiBAc2VlICNnZXREb2N1bWVudEVsZW1lbnQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERvY3VtZW50RWxlbWVudCgKLSAgICBEb2N1bWVudEVsZW1lbnQgZG9jdW1lbnRFbGVtZW50LAotICAgIFN0cmluZyBuYW1lc3BhY2VOYW1lKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9Bc3NlcnRpb25SZXN1bHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9Bc3NlcnRpb25SZXN1bHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxMTNlOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvQXNzZXJ0aW9uUmVzdWx0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydDsKLQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFzc2VydGlvblJlc3VsdHNPcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS5UZXN0QXNzZXJ0aW9uOwotCi0vKioKLSAqIFRlc3QgYXNzZXJ0aW9uIHJlc3VsdC4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgQXNzZXJ0aW9uUmVzdWx0IGV4dGVuZHMgRG9jdW1lbnRFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9BU1NFUlRJT05fUkVTVUxUOwotCi0gIC8qKgotICAgKiBRTmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgUU5hbWUgUU5BTUUgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9SRVBPUlQsIEVMRU1fTkFNRSk7Ci0KLSAgLyoqCi0gICAqIFJlc3VsdCB2YWx1ZXMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRVNVTFRfUEFTU0VEID0gInBhc3NlZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFU1VMVF9GQUlMRUQgPSAiZmFpbGVkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVTVUxUX1BSRVJFUV9GQUlMRUQgPSAicHJlcmVxRmFpbGVkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVTVUxUX01JU1NJTkdfSU5QVVQgPSAibWlzc2luZ0lucHV0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVTVUxUX1dBUk5JTkcgPSAid2FybmluZyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFU1VMVF9OT1RfQVBQTElDQUJMRSA9ICJub3RBcHBsaWNhYmxlIjsKLQotICAvKioKLSAgICogR2V0IHJlc3VsdC4KLSAgICogQHJldHVybiByZXN1bHQuCi0gICAqIEBzZWUgI3NldFJlc3VsdAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSZXN1bHQoKTsKLQotICAvKioKLSAgICogU2V0IHJlc3VsdC4KLSAgICogQHBhcmFtIHJlc3VsdCB0aGUgcmVzdWx0IHZhbHVlLgotICAgKiBAc2VlICNnZXRSZXN1bHQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlc3VsdChTdHJpbmcgcmVzdWx0KTsKLQotICAvKioKLSAgICogR2V0IGFzc2VydGlvbi4KLSAgICogQHJldHVybiBwcm9maWxlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlICNzZXRBc3NlcnRpb24KLSAgICovCi0gIHB1YmxpYyBUZXN0QXNzZXJ0aW9uIGdldEFzc2VydGlvbigpOwotCi0gIC8qKgotICAgKiBTZXQgYXNzZXJ0aW9uLgotICAgKiBAcGFyYW0gcHJvZmlsZUFzc2VydGlvbiBwcm9maWxlIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAc2VlICNnZXRBc3NlcnRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEFzc2VydGlvbihUZXN0QXNzZXJ0aW9uIHByb2ZpbGVBc3NlcnRpb24pOwotCi0gIC8qKgotICAgKiBHZXQgZW50cnkuCi0gICAqIEByZXR1cm4gZW50cnkuCi0gICAqIEBzZWUgI3NldEVudHJ5Ci0gICAqLwotICBwdWJsaWMgRW50cnkgZ2V0RW50cnkoKTsKLQotICAvKioKLSAgICogU2V0IGVudHJ5LgotICAgKiBAcGFyYW0gZW50cnkgYW4gZW50cnkuCi0gICAqIEBzZWUgI2dldEVudHJ5Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbnRyeShFbnRyeSBlbnRyeSk7Ci0KLSAgLyoqCi0gICAqIEdldCBmYWlsdXJlIGRldGFpbCBtZXNzYWdlcy4KLSAgICogQHJldHVybiBmYWlsdXJlIGRldGFpbCBtZXNzYWdlcy4KLSAgICogQHNlZSAjc2V0RmFpbHVyZURldGFpbExpc3QKLSAgICovCi0gIHB1YmxpYyBWZWN0b3IgZ2V0RmFpbHVyZURldGFpbExpc3QoKTsKLQotICAvKioKLSAgICogU2V0IGZhaWx1cmUgZGV0YWlsIG1lc3NhZ2VzLgotICAgKiBAcGFyYW0gZmFpbHVyZURldGFpbExpc3QgZmFpbHVyZSBkZXRhaWwgbWVzc2FnZXMuCi0gICAqIEBzZWUgI2dldEZhaWx1cmVEZXRhaWxMaXN0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGYWlsdXJlRGV0YWlsTGlzdChWZWN0b3IgZmFpbHVyZURldGFpbExpc3QpOwotCi0gIC8qKgotICAgKiBHZXQgd2FybmluZyBtZXNzYWdlcy4KLSAgICogQHJldHVybiB3YXJuaW5nIG1lc3NhZ2VzLgotICAgKiBAc2VlICNzZXRXYXJuaW5nTWVzc2FnZXMKLSAgICovCi0gIC8vcHVibGljIFZlY3RvciBnZXRXYXJuaW5nTWVzc2FnZXMoKTsKLQotICAvKioKLSAgICogU2V0IHdhcm5pbmcgbWVzc2FnZXMuCi0gICAqIEBwYXJhbSB3YXJuaW5nTWVzc2FnZXMgd2FybmluZyBtZXNzYWdlcy4KLSAgICogQHNlZSAjZ2V0V2FybmluZ01lc3NhZ2VzCi0gICAqLwotICAvL3B1YmxpYyB2b2lkIHNldFdhcm5pbmdNZXNzYWdlcyhWZWN0b3Igd2FybmluZ01lc3NhZ2VzKTsKLQotICAvKioKLSAgICogR2V0IGFzc2VydGlvbiByZXN1bHRzIG9wdGlvbi4KLSAgICogQHJldHVybiBzc2VydGlvbiByZXN1bHRzIG9wdGlvbi4KLSAgICogQHNlZSAjc2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbgotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdHNPcHRpb24gZ2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbigpOwotCi0gIC8qKgotICAgKiBTZXQgYXNzZXJ0aW9uIHJlc3VsdHMgb3B0aW9uLgotICAgKiBAcGFyYW0gYXNzZXJ0aW9uUmVzdWx0c09wdGlvbiBhc3NlcnRpb24gcmVzdWx0cyBvcHRpb24uCi0gICAqIEBzZWUgI2dldEFzc2VydGlvblJlc3VsdHNPcHRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEFzc2VydGlvblJlc3VsdHNPcHRpb24oQXNzZXJ0aW9uUmVzdWx0c09wdGlvbiBhc3NlcnRpb25SZXN1bHRzT3B0aW9uKTsKLQotICAvKioKLSAgICogR2V0IHByZXJlcSBmYWlsZWQgbGlzdC4KLSAgICogQHJldHVybiBwcmVyZXEgZmFpbGVkIGxpc3QuCi0gICAqIEBzZWUgI3NldFByZXJlcUZhaWxlZExpc3QKLSAgICovCi0gIHB1YmxpYyBQcmVyZXFGYWlsZWRMaXN0IGdldFByZXJlcUZhaWxlZExpc3QoKTsKLQotICAvKioKLSAgICogU2V0IHByZXJlcSBmYWlsZWQgbGlzdC4KLSAgICogQHBhcmFtIHByZXJlcUZhaWxlZExpc3QgcHJlcmVxIGZhaWxlZCBsaXN0LgotICAgKiBAc2VlICNnZXRQcmVyZXFGYWlsZWRMaXN0Ci0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQcmVyZXFGYWlsZWRMaXN0KFByZXJlcUZhaWxlZExpc3QgcHJlcmVxRmFpbGVkTGlzdCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvQnVpbGRSZXBvcnQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9CdWlsZFJlcG9ydC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWRiYzJmLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9CdWlsZFJlcG9ydC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotCi0vKioKLSAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gYnVpbGQgdGhlIFByb2ZpbGUgcmVwb3J0LgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgQnVpbGRSZXBvcnQKLXsKLSAgLyoqCi0gICAqIFByZXJlcSB0eXBlIC0gZW50cnkuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVSRVFfVFlQRV9FTlRSWSA9ICJlbnRyeSI7Ci0KLSAgLyoqCi0gICAqIFByZXJlcSB0eXBlIC0gZW50cnkgY29udGFpbmVyLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFUkVRX1RZUEVfRU5UUllfQ09OVEFJTkVSID0gImVudHJ5Q29udGFpbmVyIjsKLQotICAvKioKLSAgICogU3RhcnQgY3VycmVudCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHJlcG9ydEFydGlmYWN0IGN1cnJlbnQgcmVwb3J0IGFydGlmYWN0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiB0aGUgYmFzZSBXUy1JIGV4Y2VwdGlvbi4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEN1cnJlbnRBcnRpZmFjdChSZXBvcnRBcnRpZmFjdCByZXBvcnRBcnRpZmFjdCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgKiBBZGQgYXJ0aWZhY3QgcmVmZXJlcmVuY2UuCi0gICAqIEBwYXJhbSBhcnRpZmFjdFJlZmVyZW5jZSBhcnRpZmFjdCByZWZlcmVuY2UuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIHRoZSBiYXNlIFdTLUkgZXhjZXB0aW9uLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkQXJ0aWZhY3RSZWZlcmVuY2UoQXJ0aWZhY3RSZWZlcmVuY2UgYXJ0aWZhY3RSZWZlcmVuY2UpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogRW5kIGN1cnJlbnQgYXJ0aWZhY3QuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIHRoZSBiYXNlIFdTLUkgZXhjZXB0aW9uLgotICAgKi8KLSAgcHVibGljIHZvaWQgZW5kQ3VycmVudEFydGlmYWN0KCkgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogU3RhcnQgY3VycmVudCBlbnRyeS4KLSAgICogQHBhcmFtIGVudHJ5IHRoZSBjdXJyZW50IGVudHJ5LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiB0aGUgYmFzZSBXUy1JIGV4Y2VwdGlvbi4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEN1cnJlbnRFbnRyeShFbnRyeSBlbnRyeSkgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogU3RhcnQgY3VycmVudCBlbnRyeS4KLSAgICogQHBhcmFtIGVudHJ5IHRoZSBjdXJyZW50IGVudHJ5LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiB0aGUgYmFzZSBXUy1JIGV4Y2VwdGlvbi4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEN1cnJlbnRFbnZlbG9wZUVudHJ5KEVudHJ5IGVudHJ5KSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotICAvKioKLSAgICogRW5kIGN1cnJlbnQgZW50cnkuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIHRoZSBiYXNlIFdTLUkgZXhjZXB0aW9uLgotICAgKi8KLSAgcHVibGljIHZvaWQgZW5kQ3VycmVudEVudHJ5KCkgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogQWRkIHRlc3QgYXNzZXJ0aW9uIHJlc3VsdC4KLSAgICogQHBhcmFtIGFzc2VydGlvblJlc3VsdCB0ZXN0IGFzc2VydGlvbiByZXN1bHQuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIHRoZSBiYXNlIFdTLUkgZXhjZXB0aW9uLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkQXNzZXJ0aW9uUmVzdWx0KEFzc2VydGlvblJlc3VsdCBhc3NlcnRpb25SZXN1bHQpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogR2V0IHRoZSBhc3NlcnRpb24gcmVzdWx0IGZvciBhIHNwZWNpZmljIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAcGFyYW0gYXNzZXJ0aW9uSWQgdGhlIHRlc3QgYXNzZXJ0aW9uIElELgotICAgKiBAcmV0dXJuICB0aGUgYXNzZXJ0aW9uIHJlc3VsdCBmb3IgdGhlIHNwZWNpZmllZCB0ZXN0IGFzc2VydGlvbiBJRC4KLSAgICogICAgICAgICAgSWYgYW4gYXNzZXJ0aW9uIHJlc3VsdCB3YXMgbm90IGZvdW5kLCB0aGVuIG51bGwgaXMgcmV0dXJuZWQuCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IGdldEFzc2VydGlvblJlc3VsdChTdHJpbmcgYXNzZXJ0aW9uSWQpOwotCi0gIC8qKgotICAgKiBDcmVhdGUgYXNzZXJ0aW9uIHJlc3VsdC4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIGFzc2VydGlvbiByZXN1bHQuCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IGNyZWF0ZUFzc2VydGlvblJlc3VsdCgpOwotCi0gIC8qKgotICAgKiBDcmVhdGUgZW50cnkuCi0gICAqIEByZXR1cm4gbmV3bHkgY3JlYXRlZCBlbnRyeS4KLSAgICovCi0gIHB1YmxpYyBFbnRyeSBjcmVhdGVFbnRyeSgpOwotCi0gIC8qKgotICAgKiBDcmVhdGUgZW50cnkgY29udGFpbmVyLgotICAgKiBAcmV0dXJuIG5ld2x5IGNyZWF0ZWQgZW50cnkgY29udGFpbmVyLgotICAgKi8KLSAgcHVibGljIEVudHJ5Q29udGFpbmVyIGNyZWF0ZUVudHJ5Q29udGFpbmVyKCk7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhcnRpZmFjdC4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIGFydGlmYWN0LgotICAgKi8KLSAgcHVibGljIFJlcG9ydEFydGlmYWN0IGNyZWF0ZUFydGlmYWN0KCk7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBmYWlsdXJlIGRldGFpbC4KLSAgICogQHJldHVybiBuZXdseSBjcmVhdGVkIGZhaWx1cmUgZGV0YWlsLgotICAgKi8KLSAgcHVibGljIEZhaWx1cmVEZXRhaWwgY3JlYXRlRmFpbHVyZURldGFpbCgpOwotCi0gIC8qKgotICAgKiBTZXQgdHlwZSBvZiBwcmVyZXEgcHJvY2Vzc2luZyAtIGVpdGhlciBlbnRyeSBvciBkb2N1bWVudC4KLSAgICogQHBhcmFtIHByZXJlcVR5cGUgdHlwZSBvZiBwcmVyZXEgcHJvY2Vzc2luZyAtIGVpdGhlciBlbnRyeSBvciBkb2N1bWVudC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFByZXJlcVR5cGUoU3RyaW5nIHByZXJlcVR5cGUpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L0VudHJ5LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvRW50cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTljZDg5YS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvRW50cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0OwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5FbnRyeVR5cGU7Ci0KLS8qKgotICogVGVzdCBhc3NlcnRpb24gdGFyZ2V0LgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBFbnRyeSBleHRlbmRzIEVudHJ5UmVzdWx0LCBEb2N1bWVudEVsZW1lbnQKLXsKLSAgLyoqCi0gICAqIEVsZW1lbnQgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTkFNRSA9IFdTSUNvbnN0YW50cy5FTEVNX0VOVFJZOwotCi0gIC8qKgotICAgKiBRTmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgUU5hbWUgUU5BTUUgPQotICAgIG5ldyBRTmFtZShXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9SRVBPUlQsIEVMRU1fTkFNRSk7Ci0KLSAgLyoqCi0gICAqIEdldCBhc3NlcnRpb24gcmVzdWx0cyBvcHRpb24uCi0gICAqLwotICAvL3B1YmxpYyBBc3NlcnRpb25SZXN1bHRzT3B0aW9uIGdldEFzc2VydGlvblJlc3VsdHNPcHRpb24oKTsKLQotICAvKioKLSAgICogU2V0IGFzc2VydGlvbiByZXN1bHRzIG9wdGlvbi4KLSAgICovCi0gIC8vcHVibGljIHZvaWQgc2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbihBc3NlcnRpb25SZXN1bHRzT3B0aW9uIGFzc2VydGlvblJlc3VsdHNPcHRpb24pOwotCi0gIC8qKgotICAgKiBHZXQgZW50cnkgdHlwZS4KLSAgICogQHJldHVybiBlbnRyeSB0eXBlLgotICAgKiBAc2VlICNzZXRFbnRyeVR5cGUKLSAgICovCi0gIHB1YmxpYyBFbnRyeVR5cGUgZ2V0RW50cnlUeXBlKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBlbnRyeSB0eXBlLgotICAgKiBAcGFyYW0gZW50cnlUeXBlIGVudHJ5IHR5cGUuCi0gICAqIEBzZWUgI2dldEVudHJ5VHlwZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RW50cnlUeXBlKEVudHJ5VHlwZSBlbnRyeVR5cGUpOwotCi0gIC8qKgotICAgKiBHZXQgYXJ0aWZhY3QgbmFtZS4KLSAgICogQHJldHVybiBhcnRpZmFjdCBuYW1lLgotICAgKiBAc2VlICNzZXRBcnRpZmFjdE5hbWUKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QXJ0aWZhY3ROYW1lKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBhcnRpZmFjdCBuYW1lLgotICAgKiBAcGFyYW0gYXJ0aWZhY3ROYW1lIGFydGlmYWN0IG5hbWUuCi0gICAqIEBzZWUgI2dldEFydGlmYWN0TmFtZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QXJ0aWZhY3ROYW1lKFN0cmluZyBhcnRpZmFjdE5hbWUpOwotCi0gIC8qKgotICAgKiBHZXQgcmVmZXJlbmNlIElELgotICAgKiBAcmV0dXJuIHJlZmVyZW5jZSBJRC4KLSAgICogQHNlZSAjc2V0UmVmZXJlbmNlSUQKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVmZXJlbmNlSUQoKTsKLQotICAvKioKLSAgICogU2V0IHJlZmVyZW5jZSBJRC4KLSAgICogQHBhcmFtIHJlZmVyZW5jZUlEIHJlZmVyZW5jZUlELgotICAgKiBAc2VlICNnZXRSZWZlcmVuY2VJRAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UmVmZXJlbmNlSUQoU3RyaW5nIHJlZmVyZW5jZUlEKTsKLQotICAvKioKLSAgICogR2V0IHBhcmVudCBlbGVtZW50IG5hbWUuCi0gICAqIEByZXR1cm4gcGFyZW50IGVsZW1lbnQgbmFtZS4KLSAgICogQHNlZSAjc2V0UGFyZW50RWxlbWVudE5hbWUKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UGFyZW50RWxlbWVudE5hbWUoKTsKLQotICAvKioKLSAgICogU2V0IHBhcmVudCBlbGVtZW50IG5hbWUuCi0gICAqIEBwYXJhbSBwYXJlbnRFbGVtZW50TmFtZSBwYXJlbnQgZWxlbWVudCBuYW1lLgotICAgKiBAc2VlICNnZXRQYXJlbnRFbGVtZW50TmFtZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UGFyZW50RWxlbWVudE5hbWUoU3RyaW5nIHBhcmVudEVsZW1lbnROYW1lKTsKLQotICAvKioKLSAgICogR2V0IGVudHJ5IGRldGFpbC4KLSAgICogQHJldHVybiBlbnRyeSBkZXRhaWwuCi0gICAqIEBzZWUgI3NldEVudHJ5RGV0YWlsCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGdldEVudHJ5RGV0YWlsKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBlbnRyeSBkZXRhaWwuCi0gICAqIEBwYXJhbSBkZXRhaWwgZW50cnkgZGV0YWlsLgotICAgKiBAc2VlICNnZXRFbnRyeURldGFpbAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0RW50cnlEZXRhaWwoT2JqZWN0IGRldGFpbCk7Ci0KLSAgLyoqCi0gICAqIEdldCBlbnRyeSBjb250YWluZXIuCi0gICAqIEByZXR1cm4gZW50cnkgY29udGFpbmVyLgotICAgKiBAc2VlICNzZXRFbnRyeUNvbnRhaW5lcgotICAgKi8KLSAgcHVibGljIEVudHJ5Q29udGFpbmVyIGdldEVudHJ5Q29udGFpbmVyKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBlbnRyeSBjb250YWluZXIuCi0gICAqIEBwYXJhbSBlbnRyeUNvbnRhaW5lciBlbnRyeSBjb250YWluZXIuCi0gICAqIEBzZWUgI2dldEVudHJ5Q29udGFpbmVyCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbnRyeUNvbnRhaW5lcihFbnRyeUNvbnRhaW5lciBlbnRyeUNvbnRhaW5lcik7Ci0KLSAgLyoqCi0gICAqIEdldCBzdGFydCBlbGVtZW50IHN0cmluZy4KLSAgICogQHBhcmFtIG5hbWVzcGFjZU5hbWUgbmFtZXNwYWNlIHByZWZpeC4KLSAgICogQHBhcmFtIHNob3dMb2dFbnRyeSBzaG93IGxvZyBlbnRyeSBvcHRpb24uCi0gICAqIEByZXR1cm4gc3RhcnQgWE1MIGVsZW1lbnQgc3RyaW5nLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTdGFydFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSwgYm9vbGVhbiBzaG93TG9nRW50cnkpOwotCi0gIC8qKgotICAgKiBHZXQgc3RhcnQgZWxlbWVudCBzdHJpbmcuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VOYW1lIG5hbWVzcGFjZSBwcmVmaXguCi0gICAqIEBwYXJhbSBzaG93TG9nRW50cnkgc2hvdyBsb2cgZW50cnkgb3B0aW9uLgotICAgKiBAcmV0dXJuIHN0YXJ0IFhNTCBlbGVtZW50IHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RhcnRYTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUsIGJvb2xlYW4gc2hvd0xvZ0VudHJ5LCBib29sZWFuIGVudmVsb3BlQXJ0aWZhY3RUeXBlKTsKLSAgLyoqCi0gICAqIEdldCBlbmQgZWxlbWVudCBzdHJpbmcuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VOYW1lIG5hbWVzcGFjZSBwcmVmaXguCi0gICAqIEByZXR1cm4gZW5kIFhNTCBlbGVtZW50IHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RW5kWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9FbnRyeUNvbnRhaW5lci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L0VudHJ5Q29udGFpbmVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5OTFlMTUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L0VudHJ5Q29udGFpbmVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0OwotCi0vKioKLSAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGNvbnRhaW5lciB3aGljaCBoYXMgb25lIG9yIG1vcmUgZW50cmllcy4KLSAqIEZvciBleGFtcGxlLCBhIFdTREwgZG9jdW1lbnQgY29udGFpbnMgb25lIG9yIG1vcmUgZWxlbWVudHMuCi0gKiAKLSAqIEBhdXRob3IgUGV0ZXIgIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRW50cnlDb250YWluZXIgZXh0ZW5kcyBFbnRyeVJlc3VsdAotewotICAvKioKLSAgICogR2V0IGNvbnRhaW5lciBpZC4KLSAgICogQHJldHVybiBjb250YWluZXIgaWQuCi0gICAqIEBzZWUgI3NldElkCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldElkKCk7Ci0KLSAgLyoqCi0gICAqIFNldCBjb250YWluZXIgaWQuCi0gICAqIEBwYXJhbSBpZCBjb250YWluZXIgaWQuCi0gICAqIEBzZWUgI2dldElkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRJZChTdHJpbmcgaWQpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L0VudHJ5UmVzdWx0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvRW50cnlSZXN1bHQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdhNGY1Ny4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvRW50cnlSZXN1bHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuVHJlZU1hcDsKLQotLyoqCi0gKiBSZXN1bHQgZm9yIGEgc3BlY2lmaWMgdGVzdCBhc3NlcnRpb24uCi0gKiAKLSAqIEBhdXRob3IgUGV0ZXIgIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgRW50cnlSZXN1bHQKLXsKLSAgLyoqCi0gICAqIEFkZCBhc3NlcnRpb24gcmVzdWx0LgotICAgKiBAcGFyYW0gYXNzZXJ0aW9uUmVzdWx0IGFzc2VydGlvbiByZXN1bHQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRBc3NlcnRpb25SZXN1bHQoQXNzZXJ0aW9uUmVzdWx0IGFzc2VydGlvblJlc3VsdCk7Ci0KLSAgLyoqCi0gICAqIEdldCBhc3NlcnRpb24gcmVzdWx0cy4KLSAgICogQHJldHVybiBhc3NlcnRpb24gcmVzdWx0cy4KLSAgICovCi0gIHB1YmxpYyBUcmVlTWFwIGdldEFzc2VydGlvblJlc3VsdExpc3QoKTsKLQotICAvKioKLSAgICogR2V0IHRoZSBhc3NlcnRpb24gcmVzdWx0IGZvciBhIHNwZWNpZmljIHRlc3QgYXNzZXJ0aW9uLgotICAgKiBAcGFyYW0gYXNzZXJ0aW9uSWQgdGVzdCBhc3NlcnRpb24gaWQuCi0gICAqIEByZXR1cm4gdGhlIGFzc2VydGlvbiByZXN1bHQgZm9yIHRoZSBzcGVjaWZpZWQgdGVzdCBhc3NlcnRpb24gSUQuCi0gICAqICAgICAgICAgSWYgYW4gYXNzZXJ0aW9uIHJlc3VsdCB3YXMgbm90IGZvdW5kLCB0aGVuIG51bGwgaXMgcmV0dXJuZWQuCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IGdldEFzc2VydGlvblJlc3VsdChTdHJpbmcgYXNzZXJ0aW9uSWQpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L0ZhaWx1cmVEZXRhaWwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9GYWlsdXJlRGV0YWlsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjOGFjYjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L0ZhaWx1cmVEZXRhaWwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQ7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuZG9tLkVsZW1lbnRMb2NhdGlvbjsKLQotLyoqCi0gKiBGYWlsdXJlIGRldGFpbC4KLSAqIAotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGludGVyZmFjZSBGYWlsdXJlRGV0YWlsIGV4dGVuZHMgRG9jdW1lbnRFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9GQUlMVVJFX0RFVEFJTDsKLQotICAvKioKLSAgICogUU5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFFOQU1FID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfUkVQT1JULCBFTEVNX05BTUUpOwotCi0gIC8qKgotICAgKiBHZXQgZmFpbHVyZSBkZXRhaWwgbWVzc2FnZS4KLSAgICogQHJldHVybiBmYWlsdXJlIGRldGFpbCBtZXNzYWdlLgotICAgKiBAc2VlICNzZXRGYWlsdXJlTWVzc2FnZQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRGYWlsdXJlTWVzc2FnZSgpOwotCi0gIC8qKgotICAgKiBTZXQgZmFpbHVyZSBkZXRhaWwgbWVzc2FnZS4KLSAgICogQHBhcmFtIGZhaWx1cmVNZXNzYWdlIGZhaWx1cmUgZGV0YWlsIG1lc3NhZ2UuCi0gICAqIEBzZWUgI2dldEZhaWx1cmVNZXNzYWdlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGYWlsdXJlTWVzc2FnZShTdHJpbmcgZmFpbHVyZU1lc3NhZ2UpOwotCi0gIC8qKgotICAgKiBHZXQgcmVmZXJlbmNlIHR5cGUuCi0gICAqIEByZXR1cm4gcmVmZXJlbmNlIHR5cGUuCi0gICAqIEBzZWUgI3NldFJlZmVyZW5jZVR5cGUKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVmZXJlbmNlVHlwZSgpOwotCi0gIC8qKgotICAgKiBTZXQgcmVmZXJlbmNlIHR5cGUuCi0gICAqIEBwYXJhbSByZWZlcmVuY2VUeXBlIHJlZmVyZW5jZSB0eXBlLgotICAgKiBAc2VlICNnZXRSZWZlcmVuY2VUeXBlCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZWZlcmVuY2VUeXBlKFN0cmluZyByZWZlcmVuY2VUeXBlKTsKLQotICAvKioKLSAgICogR2V0IHJlZmVyZW5jZSBJRC4KLSAgICogQHJldHVybiByZWZlcmVuY2UgSUQuCi0gICAqIEBzZWUgI3NldFJlZmVyZW5jZUlEbgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSZWZlcmVuY2VJRCgpOwotCi0gIC8qKgotICAgKiBTZXQgcmVmZXJlbmNlIElELgotICAgKiBAcGFyYW0gcmVmZXJlbmNlSUQgcmVmZXJlbmNlIElELgotICAgKiBAc2VlICNnZXRSZWZlcmVuY2VJRAotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UmVmZXJlbmNlSURuKFN0cmluZyByZWZlcmVuY2VJRCk7Ci0KLSAgLyoqCi0gICAqIEdldCBlbGVtZW50IGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIGVsZW1lbnQgbG9jYXRpb24uCi0gICAqIEBzZWUgI3NldEVsZW1lbnRMb2NhdGlvbgotICAgKi8KLSAgcHVibGljIEVsZW1lbnRMb2NhdGlvbiBnZXRFbGVtZW50TG9jYXRpb24oKTsKLQotICAvKioKLSAgICogU2V0IGVsZW1lbnQgbG9jYXRpb24uCi0gICAqIEBwYXJhbSBlbGVtZW50TG9jYXRpb24gZWxlbWVudCBsb2NhdGlvbi4KLSAgICogQHNlZSAjZ2V0RWxlbWVudExvY2F0aW9uCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbGVtZW50TG9jYXRpb24oRWxlbWVudExvY2F0aW9uIGVsZW1lbnRMb2NhdGlvbik7Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9QcmVyZXFGYWlsZWRMaXN0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvUHJlcmVxRmFpbGVkTGlzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTA1OWQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9QcmVyZXFGYWlsZWRMaXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0OwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RWxlbWVudDsKLQotLyoqCi0gKiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIG1haW50YWluIGFuZCBhY2Nlc3MgdGhlIFByZXJlcXVpc2l0ZSBGYWlsZWQgTGlzdC4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAgKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBQcmVyZXFGYWlsZWRMaXN0IGV4dGVuZHMgRG9jdW1lbnRFbGVtZW50Ci17Ci0gIC8qKgotICAgICogRWxlbWVudCBuYW1lLgotICAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVMRU1fTkFNRSA9IFdTSUNvbnN0YW50cy5FTEVNX1BSRVJFUV9GQUlMRURfTElTVDsKLQotICAvKioKLSAgICogUU5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFFOQU1FID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfUkVQT1JULCBFTEVNX05BTUUpOwotCi0gIC8qKgotICAgKiBBZGQgdGVzdCBhc3NlcnRpb24gSUQuCi0gICAqIEBwYXJhbSBhc3NlcnRpb25JRCB0ZXN0IGFzc2VydGlvbiBJRC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFRlc3RBc3NlcnRpb25JRChTdHJpbmcgYXNzZXJ0aW9uSUQpOwotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvUmVwb3J0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvUmVwb3J0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMGFkNTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L1JlcG9ydC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQ7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5XU0lEb2N1bWVudDsKLQotLyoqCi0gKiBDb25mb3JtYW5jZSB0ZXN0IHJlcG9ydC4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgUmVwb3J0IGV4dGVuZHMgV1NJRG9jdW1lbnQsIEJ1aWxkUmVwb3J0Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9SRVBPUlQ7Ci0KLSAgLyoqCi0gICAqIFFOYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBRTmFtZSBRTkFNRSA9Ci0gICAgbmV3IFFOYW1lKFdTSUNvbnN0YW50cy5OU19VUklfV1NJX1JFUE9SVCwgRUxFTV9OQU1FKTsKLQotICAvKioKLSAgICogR2V0IHJlcG9ydCBjb250ZXh0LgotICAgKiBAcmV0dXJuIHJlcG9ydCBjb250ZXh0LgotICAgKiBAc2VlICNzZXRSZXBvcnRDb250ZXh0Ci0gICAqLwotICBwdWJsaWMgUmVwb3J0Q29udGV4dCBnZXRSZXBvcnRDb250ZXh0KCk7Ci0KLSAgLyoqCi0gICAqIFNldCByZXBvcnQgY29udGV4dC4KLSAgICogQHBhcmFtIHJlcG9ydENvbnRleHQgcmVwb3J0IGNvbnRleHQuCi0gICAqIEBzZWUgI2dldFJlcG9ydENvbnRleHQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlcG9ydENvbnRleHQoUmVwb3J0Q29udGV4dCByZXBvcnRDb250ZXh0KTsKLQotICAvKioKLSAgICogR2V0IGN1cnJlbnQgYXJ0aWZhY3QuCi0gICAqIEByZXR1cm4gY3VycmVudCBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyBSZXBvcnRBcnRpZmFjdCBnZXRDdXJyZW50QXJ0aWZhY3QoKTsKLQotICAvKioKLSAgICogR2V0IGN1cnJlbnQgZW50cnkuCi0gICAqIEByZXR1cm4gY3VycmVudCBlbnRyeS4KLSAgICovCi0gIHB1YmxpYyBFbnRyeSBnZXRDdXJyZW50RW50cnkoKTsKLQotICAvKioKLSAgICogTWV0aG9kIGdldEVudHJpZXMuCi0gICAqIEByZXR1cm4gZW50cnkgbGlzdC4KLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEVudHJpZXMoKTsKLQotICAvKioKLSAgICogTWV0aG9kIGdldEFydGlmYWN0cy4KLSAgICogQHJldHVybiBhcnRpZmFjdHMuCi0gICAqLwotICBwdWJsaWMgTGlzdCBnZXRBcnRpZmFjdHMoKTsKLQotICAvKioKLSAgICogR2V0IHN0YXJ0IGVsZW1lbnQgc3RyaW5nLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlTmFtZSBuYW1lc3BhY2UgcHJlZml4Ci0gICAqIEByZXR1cm4gc3RhcnQgZWxlbWVudCBzdHJpbmcuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFN0YXJ0WE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKTsKLQotICAvKioKLSAgICogR2V0IGVuZCBlbGVtZW50IHN0cmluZy4KLSAgICogQHBhcmFtIG5hbWVzcGFjZU5hbWUgbmFtZXNwYWNlIHByZWZpeAotICAgKiBAcmV0dXJuIGVuZCBlbGVtZW50IHN0cmluZy4gCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEVuZFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSk7Ci0KLSAgLyoqCi0gICAqIEdldCBlcnJvciBYTUwgc3RyaW5nLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlTmFtZSBuYW1lc3BhY2UgcHJlZml4LgotICAgKiBAcGFyYW0gZXJyb3JEZXRhaWwgYW4gZXJyb3IgZGV0YWlsLgotICAgKiBAcmV0dXJuIGVycm9yIFhNTCBzdHJpbmcuIAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRFcnJvclhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSwgU3RyaW5nIGVycm9yRGV0YWlsKTsKLQotICAvKioKLSAgICogR2V0IHN1bW1hcnkgcmVzdWx0LiAKLSAgICogQHJldHVybiBzdW1tYXJ5IHJlc3VsdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3VtbWFyeVJlc3VsdCgpOwotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvUmVwb3J0QXJ0aWZhY3QuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9SZXBvcnRBcnRpZmFjdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTFmYjljLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9SZXBvcnRBcnRpZmFjdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydDsKLQotaW1wb3J0IGphdmEudXRpbC5UcmVlTWFwOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LkRvY3VtZW50RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbC5BcnRpZmFjdFR5cGU7Ci0KLS8qKgotICogUmVwb3J0IGFydGlmYWN0LgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFJlcG9ydEFydGlmYWN0IGV4dGVuZHMgRG9jdW1lbnRFbGVtZW50Ci17Ci0gIC8qKgotICAgKiBFbGVtZW50IG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTEVNX05BTUUgPSBXU0lDb25zdGFudHMuRUxFTV9BUlRJRkFDVDsKLQotICAvKioKLSAgICogUU5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFFOYW1lIFFOQU1FID0KLSAgICBuZXcgUU5hbWUoV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfUkVQT1JULCBFTEVNX05BTUUpOwotCi0gIC8qKgotICAgKiBHZXQgYXJ0aWZhY3QgdHlwZS4KLSAgICogQHJldHVybiBhcnRpZmFjdCB0eXBlLgotICAgKiBAc2VlICNzZXRUeXBlCi0gICAqLwotICBwdWJsaWMgQXJ0aWZhY3RUeXBlIGdldFR5cGUoKTsKLQotICAvKioKLSAgICogU2V0IGFydGlmYWN0IHR5cGUuCi0gICAqIEBwYXJhbSBhcnRpZmFjdFR5cGUgYXJ0aWZhY3QgdHlwZS4KLSAgICogQHNlZSAjZ2V0VHlwZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0VHlwZShBcnRpZmFjdFR5cGUgYXJ0aWZhY3RUeXBlKTsKLQotICAvKioKLSAgICogQWRkIGVudHJ5LgotICAgKiBAcGFyYW0gZW50cnkgYW4gZW50cnkuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRFbnRyeShFbnRyeSBlbnRyeSk7Ci0KLSAgLyoqCi0gICAqIEdldCBlbnRyeSBsaXN0LgotICAgKiBAcmV0dXJuIGVudHJ5IGxpc3QuCi0gICAqLwotICBwdWJsaWMgVHJlZU1hcCBnZXRFbnRyeUxpc3QoKTsKLQotICAvKioKLSAgICogR2V0IHN0YXJ0IGVsZW1lbnQgc3RyaW5nLgotICAgKiBAcGFyYW0gbmFtZXNwYWNlTmFtZSBuYW1lc3BhY2UgcHJlZml4LgotICAgKiBAcmV0dXJuIHN0YXJ0IGVsZW1lbnQgc3RyaW5nLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTdGFydFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSk7Ci0KLSAgLyoqCi0gICAqIEdldCBlbmQgZWxlbWVudCBzdHJpbmcuIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlTmFtZSBuYW1lc3BhY2UgcHJlZml4LgotICAgKiBAcmV0dXJuIGVuZCBlbGVtZW50IHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RW5kWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKTsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9SZXBvcnRDb250ZXh0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvUmVwb3J0Q29udGV4dC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjUwN2IwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9SZXBvcnRDb250ZXh0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLkFuYWx5emVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLlByb2ZpbGVBc3NlcnRpb25zOwotCi0vKioKLSAqIFJlcG9ydCBjb250ZXh0LgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIFJlcG9ydENvbnRleHQKLXsKLSAgLyoqCi0gICAqIFJlcG9ydCB0aXRsZS4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgcmVwb3J0VGl0bGUgPSBXU0lDb25zdGFudHMuREVGQVVMVF9SRVBPUlRfVElUTEU7Ci0KLSAgLyoqCi0gICAqIFByb2ZpbGUgZGVmaW5pdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCBQcm9maWxlQXNzZXJ0aW9ucyBwcm9maWxlQXNzZXJ0aW9uczsKLQotICAvKioKLSAgICogQW5hbHl6ZXIuCi0gICAqLwotICBwcm90ZWN0ZWQgQW5hbHl6ZXIgYW5hbHl6ZXI7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSByZXBvcnQgY29udGV4dC4KLSAgICogQHBhcmFtIHJlcG9ydFRpdGxlIHJlcG9ydCB0aXRsZS4KLSAgICogQHBhcmFtIHByb2ZpbGVBc3NlcnRpb25zIHByb2ZpbGUgdGVzdCBhc3NlcnRpb25zLgotICAgKiBAcGFyYW0gYW5hbHl6ZXIgYW4gQW5hbHl6ZXIgb2JqZWN0LgotICAqLwotICBwdWJsaWMgUmVwb3J0Q29udGV4dCgKLSAgICBTdHJpbmcgcmVwb3J0VGl0bGUsCi0gICAgUHJvZmlsZUFzc2VydGlvbnMgcHJvZmlsZUFzc2VydGlvbnMsCi0gICAgQW5hbHl6ZXIgYW5hbHl6ZXIpCi0gIHsKLSAgICB0aGlzLnJlcG9ydFRpdGxlID0gcmVwb3J0VGl0bGU7Ci0gICAgdGhpcy5wcm9maWxlQXNzZXJ0aW9ucyA9IHByb2ZpbGVBc3NlcnRpb25zOwotICAgIHRoaXMuYW5hbHl6ZXIgPSBhbmFseXplcjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgcmVwb3J0IHRpdGxlLgotICAgKiBAcmV0dXJuIHJlcG9ydCB0aXRsZS4KLSAgICogQHNlZSAjc2V0UmVwb3J0VGl0bGUKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVwb3J0VGl0bGUoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMucmVwb3J0VGl0bGU7Ci0gIH0KLQotICAvKioKLSAgICogU2V0IHJlcG9ydCB0aXRsZS4KLSAgICogQHBhcmFtIHJlcG9ydFRpdGxlIHJlcG9ydCB0aXRsZS4KLSAgICogQHNlZSAjZ2V0UmVwb3J0VGl0bGUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlcG9ydFRpdGxlKFN0cmluZyByZXBvcnRUaXRsZSkKLSAgewotICAgIHRoaXMucmVwb3J0VGl0bGUgPSByZXBvcnRUaXRsZTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgcHJvZmlsZSBkZWZpbml0aW9uLgotICAgKiBAcmV0dXJuIHByb2ZpbGUgZGVmaW5pdGlvbi4KLSAgICogQHNlZSAjc2V0UHJvZmlsZUFzc2VydGlvbnMKLSAgICovCi0gIHB1YmxpYyBQcm9maWxlQXNzZXJ0aW9ucyBnZXRQcm9maWxlQXNzZXJ0aW9ucygpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5wcm9maWxlQXNzZXJ0aW9uczsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgcHJvZmlsZSBkZWZpbml0aW9uLgotICAgKiBAcGFyYW0gcHJvZmlsZUFzc2VydGlvbnMgcHJvZmlsZSBkZWZpbml0aW9uLgotICAgKiBAc2VlICNnZXRQcm9maWxlQXNzZXJ0aW9ucwotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UHJvZmlsZUFzc2VydGlvbnMoUHJvZmlsZUFzc2VydGlvbnMgcHJvZmlsZUFzc2VydGlvbnMpCi0gIHsKLSAgICB0aGlzLnByb2ZpbGVBc3NlcnRpb25zID0gcHJvZmlsZUFzc2VydGlvbnM7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGFuYWx5emVyLgotICAgKiBAcmV0dXJuIGFuYWx5emVyLgotICAgKiBAc2VlICNzZXRBbmFseXplcgotICAgKi8KLSAgcHVibGljIEFuYWx5emVyIGdldEFuYWx5emVyKCkKLSAgewotICAgIHJldHVybiB0aGlzLmFuYWx5emVyOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCBhbmFseXplci4KLSAgICogQHBhcmFtIGFuYWx5emVyIGFuIEFuYWx5emVyIG9iamVjdC4KLSAgICogQHNlZSAjZ2V0QW5hbHl6ZXIKLSAgICogCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBbmFseXplcihBbmFseXplciBhbmFseXplcikKLSAgewotICAgIHRoaXMuYW5hbHl6ZXIgPSBhbmFseXplcjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L1JlcG9ydFdyaXRlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L1JlcG9ydFdyaXRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTdmYzY2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9SZXBvcnRXcml0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQ7Ci0KLWltcG9ydCBqYXZhLmlvLldyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudFdyaXRlcjsKLQotLyoqCi0gKiBEZWZpbmVzIHRoZSBpbnRlcmZhY2UgdXNlZCB0byB3cml0ZSB0aGUgcmVwb3J0IGRvY3VtZW50cy4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFJlcG9ydFdyaXRlciBleHRlbmRzIERvY3VtZW50V3JpdGVyCi17Ci0gIC8qKgotICAgKiBXcml0ZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBkb2N1bWVudCB1c2luZyB0aGUgbG9jYXRpb24KLSAgICogdGhhdCB3YXMgcHJldmlvdXNseSBzZXQgdXNpbmcgdGhlIHNldExvY2F0aW9uIG1ldGhvZC4KLSAgICogQHBhcmFtIHJlcG9ydCBhIHJlcG9ydC4KLSAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gaWYgdGhpcyBvcGVyYXRpb24gaGFzIGJlZW4gaW52b2tlZCAKLSAgICogICAgICAgICBhdCBhbiBpbGxlZ2FsIG9yIGluYXBwcm9wcmlhdGUgdGltZQotICAgKi8KLSAgcHVibGljIHZvaWQgd3JpdGUoUmVwb3J0IHJlcG9ydCkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogV3JpdGUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZG9jdW1lbnQuCi0gICAqIEBwYXJhbSByZXBvcnQgYSByZXBvcnQuCi0gICAqIEBwYXJhbSB3cml0ZXIgYSBXcml0ZXIgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgd3JpdGUoUmVwb3J0IHJlcG9ydCwgV3JpdGVyIHdyaXRlcik7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvUmVwb3J0ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9SZXBvcnRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWE3ODQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9SZXBvcnRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydDsKLQotLyoqCi0gKiBDb25mb3JtYW5jZSB0ZXN0IHJlcG9ydGVyIGludGVyZmFjZS4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgUmVwb3J0ZXIgZXh0ZW5kcyBCdWlsZFJlcG9ydCwgV3JpdGVSZXBvcnQKLXsKLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9Xcml0ZVJlcG9ydC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L1dyaXRlUmVwb3J0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjNzBkOWEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L1dyaXRlUmVwb3J0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIC4uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBXcml0ZVJlcG9ydAotewotICAvKioKLSAgICogU3RhcnQgY29uZm9ybWFuY2UgcmVwb3J0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiB0aGUgYmFzZSBXUy1JIGV4Y2VwdGlvbi4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0YXJ0UmVwb3J0KCkgdGhyb3dzIFdTSUV4Y2VwdGlvbjsKLQotICAvKioKLSAgICogRmluaXNoIHRoZSBjb25mb3JtYW5jZSByZXBvcnQgYnkgYWRkaW5nIHRoZSBzdW1tYXJ5IGFuZCB0ZXN0IGNvdmVyYWdlIGluZm9ybWF0aW9uLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiB0aGUgYmFzZSBXUy1JIGV4Y2VwdGlvbi4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGZpbmlzaFJlcG9ydCgpIHRocm93cyBXU0lFeGNlcHRpb247Ci0KLSAgLyoqCi0gICAqIEZpbmlzaCB0aGUgY29uZm9ybWFuY2UgcmVwb3J0IGJlY2F1c2Ugb2YgYW4gYW5hbHl6ZXIgZXJyb3IuCi0gICAqIEBwYXJhbSBlcnJvckRldGFpbCBhbmFseXplciBlcnJvci4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gdGhlIGJhc2UgV1MtSSBleGNlcHRpb24uCi0gICAqLwotICBwdWJsaWMgdm9pZCBmaW5pc2hSZXBvcnRXaXRoRXJyb3IoU3RyaW5nIGVycm9yRGV0YWlsKSB0aHJvd3MgV1NJRXhjZXB0aW9uOwotCi0gIC8qKgotICAgKiBHZXQgcmVwb3J0LgotICAgKiBAcmV0dXJuIHJlcG9ydC4KLSAgICovCi0gIHB1YmxpYyBSZXBvcnQgZ2V0UmVwb3J0KCk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9BcnRpZmFjdFJlZmVyZW5jZUltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9pbXBsL0FydGlmYWN0UmVmZXJlbmNlSW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGI0NmJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9pbXBsL0FydGlmYWN0UmVmZXJlbmNlSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbDsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5BcnRpZmFjdFJlZmVyZW5jZTsKLQotLyoqCi0gKiBBbiBhcnRpZmFjdCByZWZlcmVuY2UuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBBcnRpZmFjdFJlZmVyZW5jZUltcGwgaW1wbGVtZW50cyBBcnRpZmFjdFJlZmVyZW5jZQotewotICAvKioKLSAgICogVGltZXN0YW1wLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyB0aW1lc3RhbXAgPSBudWxsOwotCi0gIC8qKgotICAgKiBPcHRpb25hbCBkb2N1bWVudCBlbGVtZW50LgotICAgKi8KLSAgcHJvdGVjdGVkIERvY3VtZW50RWxlbWVudCBkb2N1bWVudEVsZW1lbnQgPSBudWxsOwotCi0gIC8qKgotICAgKiBPcHRpb25hbCBkb2N1bWVudCBlbGVtZW50IG5hbWVzcGFjZSBuYW1lLgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyBlbGVtZW50TmFtZXNwYWNlTmFtZSA9IG51bGw7Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQXJ0aWZhY3RSZWZlcmVuY2UjZ2V0VGltZXN0YW1wKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VGltZXN0YW1wKCkKLSAgewotICAgIHJldHVybiB0aGlzLnRpbWVzdGFtcDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkFydGlmYWN0UmVmZXJlbmNlI3NldFRpbWVzdGFtcChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUaW1lc3RhbXAoU3RyaW5nIHRpbWVzdGFtcCkKLSAgewotICAgIHRoaXMudGltZXN0YW1wID0gdGltZXN0YW1wOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQXJ0aWZhY3RSZWZlcmVuY2UjZ2V0RG9jdW1lbnRFbGVtZW50KCkKLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudEVsZW1lbnQgZ2V0RG9jdW1lbnRFbGVtZW50KCkKLSAgewotICAgIHJldHVybiB0aGlzLmRvY3VtZW50RWxlbWVudDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkFydGlmYWN0UmVmZXJlbmNlI3NldERvY3VtZW50RWxlbWVudChEb2N1bWVudEVsZW1lbnQsIFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldERvY3VtZW50RWxlbWVudCgKLSAgICBEb2N1bWVudEVsZW1lbnQgZG9jdW1lbnRFbGVtZW50LAotICAgIFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQ7Ci0gICAgdGhpcy5lbGVtZW50TmFtZXNwYWNlTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBwdy5wcmludGxuKCIgIEFydGlmYWN0IFJlZmVyZW5jZTogIik7Ci0gICAgcHcucHJpbnRsbigiICAgIHRpbWVzdGFtcCAuLi4uLi4uLi4uLiAiICsgdGhpcy50aW1lc3RhbXApOwotCi0gICAgaWYgKHRoaXMuZG9jdW1lbnRFbGVtZW50ICE9IG51bGwpCi0gICAgICBwdy5wcmludGxuKAotICAgICAgICAiICAgIGRvY3VtZW50RWxlbWVudCAuLi4uLiAiCi0gICAgICAgICAgKyB0aGlzLmRvY3VtZW50RWxlbWVudC50b1hNTFN0cmluZyh0aGlzLmVsZW1lbnROYW1lc3BhY2VOYW1lKSk7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50I3RvWE1MU3RyaW5nKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIC8vIENyZWF0ZSBlbGVtZW50IAotICAgIHB3LnByaW50KCIgICAgPCIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiICIpOwotICAgIHB3LnByaW50bG4oV1NJQ29uc3RhbnRzLkFUVFJfVElNRVNUQU1QICsgIj1cIiIgKyBnZXRUaW1lc3RhbXAoKSArICJcIj4iKTsKLQotICAgIC8vIElmIHRoZXJlIGlzIGEgZG9jdW1lbnQgZWxlbWVudCwgdGhlbiBhZGQgaXQKLSAgICBpZiAodGhpcy5kb2N1bWVudEVsZW1lbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwdy5wcmludChkb2N1bWVudEVsZW1lbnQudG9YTUxTdHJpbmcodGhpcy5lbGVtZW50TmFtZXNwYWNlTmFtZSkpOwotICAgIH0KLQotICAgIC8vIEVuZCBlbGVtZW50Ci0gICAgcHcucHJpbnRsbigiICAgIDwvIiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9Bc3NlcnRpb25SZXN1bHRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9Bc3NlcnRpb25SZXN1bHRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMmQ4Y2UuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L2ltcGwvQXNzZXJ0aW9uUmVzdWx0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbDsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuQXNzZXJ0aW9uUmVzdWx0c09wdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLmltcGwuQXNzZXJ0aW9uUmVzdWx0c09wdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuRmFpbHVyZURldGFpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlByZXJlcUZhaWxlZExpc3Q7Ci0KLWltcG9ydCBjb20uaWJtLndzZGwudXRpbC54bWwuRE9NVXRpbHM7Ci0KLS8qKgotICogVGVzdCBhc3NlcnRpb24gcmVzdWx0LgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIEFzc2VydGlvblJlc3VsdEltcGwgaW1wbGVtZW50cyBBc3NlcnRpb25SZXN1bHQKLXsKLSAgLyoqCi0gICAqIEFzc2VydGlvbiByZXN1bHQuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHJlc3VsdCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIEVudHJ5LgotICAgKi8KLSAgcHJvdGVjdGVkIEVudHJ5IGVudHJ5ID0gbnVsbDsKLQotICAvKioKLSAgICogUHJvZmlsZSB0ZXN0IGFzc2VydGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCBUZXN0QXNzZXJ0aW9uIHRlc3RBc3NlcnRpb24gPSBudWxsOwotCi0gIC8qKgotICAgKiBGYWlsdXJlIGRldGFpbCBtZXNzYWdlcy4KLSAgICovCi0gIHByb3RlY3RlZCBWZWN0b3IgZmFpbHVyZURldGFpbExpc3QgPSBudWxsOwotCi0gIC8qKgotICAgKiBBc3NlcnRpb24gcmVzdWx0cyBvcHRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbiBhc3NlcnRpb25SZXN1bHRzT3B0aW9uID0KLSAgICBuZXcgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbkltcGwoKTsKLQotICAvKioKLSAgICogUHJlcmVxIGZhaWxlZCBsaXN0LgotICAgKi8KLSAgcHJvdGVjdGVkIFByZXJlcUZhaWxlZExpc3QgcHJlcmVxRmFpbGVkTGlzdCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBhc3NlcnRpb24gcmVzdWx0LgotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdEltcGwoKQotICB7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQjZ2V0UmVzdWx0KCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVzdWx0KCkKLSAgewotICAgIHJldHVybiB0aGlzLnJlc3VsdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkFzc2VydGlvblJlc3VsdCNzZXRSZXN1bHQoamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlc3VsdChTdHJpbmcgcmVzdWx0KQotICB7Ci0gICAgdGhpcy5yZXN1bHQgPSByZXN1bHQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQjZ2V0QXNzZXJ0aW9uKCkKLSAgICovCi0gIHB1YmxpYyBUZXN0QXNzZXJ0aW9uIGdldEFzc2VydGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy50ZXN0QXNzZXJ0aW9uOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0I3NldEFzc2VydGlvbihvcmcud3NpLnRlc3QucHJvZmlsZS5UZXN0QXNzZXJ0aW9uKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QXNzZXJ0aW9uKFRlc3RBc3NlcnRpb24gdGVzdEFzc2VydGlvbikKLSAgewotICAgIHRoaXMudGVzdEFzc2VydGlvbiA9IHRlc3RBc3NlcnRpb247Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQjZ2V0RW50cnkoKQotICAgKi8KLSAgcHVibGljIEVudHJ5IGdldEVudHJ5KCkKLSAgewotICAgIHJldHVybiB0aGlzLmVudHJ5OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0I3NldEVudHJ5KG9yZy53c2kudGVzdC5yZXBvcnQuRW50cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbnRyeShFbnRyeSBlbnRyeSkKLSAgewotICAgIHRoaXMuZW50cnkgPSBlbnRyeTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkFzc2VydGlvblJlc3VsdCNnZXRGYWlsdXJlRGV0YWlsTGlzdCgpCi0gICAqLwotICBwdWJsaWMgVmVjdG9yIGdldEZhaWx1cmVEZXRhaWxMaXN0KCkKLSAgewotICAgIHJldHVybiB0aGlzLmZhaWx1cmVEZXRhaWxMaXN0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0I3NldEZhaWx1cmVEZXRhaWxMaXN0KGphdmEudXRpbC5WZWN0b3IpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRGYWlsdXJlRGV0YWlsTGlzdChWZWN0b3IgZmFpbHVyZURldGFpbExpc3QpCi0gIHsKLSAgICB0aGlzLmZhaWx1cmVEZXRhaWxMaXN0ID0gZmFpbHVyZURldGFpbExpc3Q7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQjZ2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbigpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbiBnZXRBc3NlcnRpb25SZXN1bHRzT3B0aW9uKCkKLSAgewotICAgIHJldHVybiB0aGlzLmFzc2VydGlvblJlc3VsdHNPcHRpb247Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQjc2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbihvcmcud3NpLnRlc3QuYW5hbHl6ZXIuY29uZmlnLkFzc2VydGlvblJlc3VsdHNPcHRpb24pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBc3NlcnRpb25SZXN1bHRzT3B0aW9uKEFzc2VydGlvblJlc3VsdHNPcHRpb24gYXNzZXJ0aW9uUmVzdWx0c09wdGlvbikKLSAgewotICAgIHRoaXMuYXNzZXJ0aW9uUmVzdWx0c09wdGlvbiA9IGFzc2VydGlvblJlc3VsdHNPcHRpb247Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQjZ2V0UHJlcmVxRmFpbGVkTGlzdCgpCi0gICAqLwotICBwdWJsaWMgUHJlcmVxRmFpbGVkTGlzdCBnZXRQcmVyZXFGYWlsZWRMaXN0KCkKLSAgewotICAgIHJldHVybiB0aGlzLnByZXJlcUZhaWxlZExpc3Q7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQjc2V0UHJlcmVxRmFpbGVkTGlzdChvcmcud3NpLnRlc3QucmVwb3J0LlByZXJlcUZhaWxlZExpc3QpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQcmVyZXFGYWlsZWRMaXN0KFByZXJlcUZhaWxlZExpc3QgcHJlcmVxRmFpbGVkTGlzdCkKLSAgewotICAgIHRoaXMucHJlcmVxRmFpbGVkTGlzdCA9IHByZXJlcUZhaWxlZExpc3Q7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50RWxlbWVudCN0b1hNTFN0cmluZyhqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gQ3JlYXRlIGVsZW1lbnQgCi0gICAgcHcucHJpbnQoIiAgICAgIDwiICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIiAiKTsKLSAgICBwdy5wcmludChXU0lDb25zdGFudHMuQVRUUl9JRCArICI9XCIiICsgdGhpcy50ZXN0QXNzZXJ0aW9uLmdldElkKCkgKyAiXCIgIik7Ci0gICAgcHcucHJpbnRsbihXU0lDb25zdGFudHMuQVRUUl9SRVNVTFQgKyAiPVwiIiArIHRoaXMucmVzdWx0ICsgIlwiPiIpOwotCi0gICAgLy8gQUREOiBBZGQgc3VwcG9ydCBmb3IgYWRkaXRpb25hbCB0YXJnZXRzCi0KLSAgICAvLyBBZGQgcHJlcmVxIGZhaWxlZCBsaXN0Ci0gICAgaWYgKHRoaXMucHJlcmVxRmFpbGVkTGlzdCAhPSBudWxsKQotICAgIHsKLSAgICAgIHB3LnByaW50KHByZXJlcUZhaWxlZExpc3QudG9YTUxTdHJpbmcobnNOYW1lKSk7Ci0gICAgfQotCi0gICAgLy8gQUREOiBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgbGFuZ3VhZ2VzCi0gICAgLy8gSWYgcmVzdWx0IGlzIGZhaWxlZCBvciB3YXJuaW5nLCB0aGVuIGFkZCBmYWlsdXJlIG1lc3NhZ2UKLSAgICBpZiAoKHJlc3VsdC5lcXVhbHMoUkVTVUxUX0ZBSUxFRCkgfHwgcmVzdWx0LmVxdWFscyhSRVNVTFRfV0FSTklORykpCi0gICAgICAmJiAoYXNzZXJ0aW9uUmVzdWx0c09wdGlvbi5nZXRTaG93RmFpbHVyZU1lc3NhZ2UoKSkpCi0gICAgewotICAgICAgcHcucHJpbnQoCi0gICAgICAgICIgICAgICAgIDwiCi0gICAgICAgICAgKyBuc05hbWUKLSAgICAgICAgICArIFdTSUNvbnN0YW50cy5FTEVNX0ZBSUxVUkVfTUVTU0FHRQotICAgICAgICAgICsgIiB4bWw6bGFuZz1cImVuXCI+Iik7Ci0gICAgICBwdy5wcmludChET01VdGlscy5jbGVhblN0cmluZyh0aGlzLnRlc3RBc3NlcnRpb24uZ2V0RmFpbHVyZU1lc3NhZ2UoKSkpOwotICAgICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fRkFJTFVSRV9NRVNTQUdFICsgIj4iKTsKLSAgICB9Ci0KLSAgICAvLyBBREQ6IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBsYW5ndWFnZXMKLSAgICAvLyBJZiBhbnkgZmFpbHVyZSBkZXRhaWwgbWVzc2FnZXMgd2VyZSBzcGVjaWZpZWQsIHRoZW4gYWRkIHRoZW0KLSAgICBpZiAoKGZhaWx1cmVEZXRhaWxMaXN0ICE9IG51bGwpCi0gICAgICAmJiAoYXNzZXJ0aW9uUmVzdWx0c09wdGlvbi5nZXRTaG93RmFpbHVyZURldGFpbCgpKSkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdGVyYXRvciA9IGZhaWx1cmVEZXRhaWxMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBwdy5wcmludCgoKEZhaWx1cmVEZXRhaWwpIGl0ZXJhdG9yLm5leHQoKSkudG9YTUxTdHJpbmcobnNOYW1lKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gRW5kIHRoZSBlbGVtZW50Ci0gICAgcHcucHJpbnRsbigiICAgICAgPC8iICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIj4iKTsKLQotICAgIC8vIFJldHVybiBzdHJpbmcKLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I3RvU3RyaW5nKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L2ltcGwvRGVmYXVsdFJlcG9ydGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9EZWZhdWx0UmVwb3J0ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBhYzJmZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9EZWZhdWx0UmVwb3J0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMgSUJNIENvcnBvcmF0aW9uLCBQYXJhc29mdCBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNICAgICAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqICAgUGFyYXNvZnQgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5BbmFseXplckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFzc2VydGlvblJlc3VsdFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuVGVzdEFzc2VydGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFydGlmYWN0UmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5FbnRyeUNvbnRhaW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkZhaWx1cmVEZXRhaWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRBcnRpZmFjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydFdyaXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydGVyOwotCi0vKioKLSAqIEJhc2UgY2xhc3MgZm9yIHJlcG9ydGluZyBlcnJvcnMgZnJvbSB0aGUgYW5hbHl6ZXIuCi0gKiBFeHRlbmQgdGhpcyBjbGFzcyBmb3Igc3BlY2lmaWMgdHlwZXMgb2YgcmVwb3J0aW5nLCBzdWNoIGFzIHJlcG9ydGluZwotICogaW4gZGlmZmVyZW50IGZvcm1hdHMsIHJlcG9ydGluZyB0byBmaWxlcywgcmVwb3J0aW5nIHRvIGEgR1VJLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIEppbSBDbHVuZQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtCi0gKi8KLXB1YmxpYyBjbGFzcyBEZWZhdWx0UmVwb3J0ZXIgaW1wbGVtZW50cyBSZXBvcnRlcgotewotICAvKioKLSAgICogQ29uZm9ybWFuY2UgcmVwb3J0LgotICAgKi8KLSAgcHJvdGVjdGVkIFJlcG9ydCByZXBvcnQ7Ci0KLSAgLyoqCi0gICAqIERvY3VtZW50IHdyaXRlci4KLSAgICovCi0gIHByb3RlY3RlZCBSZXBvcnRXcml0ZXIgcmVwb3J0V3JpdGVyOwotCi0gIC8qKgotICAgKiBBbmFseXplciBjb25maWcuCi0gICAqLwotICBwcm90ZWN0ZWQgQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJDb25maWc7Ci0KLSAgLyoqCi0gICAqIEFzc2VydG9pbiByZXN1bHQgdHlwZS4KLSAgICovCi0gIHByb3RlY3RlZCBBc3NlcnRpb25SZXN1bHRUeXBlIGFzc2VydGlvblJlc3VsdFR5cGU7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSByZXN1bHQgcmVwb3J0ZXIuCi0gICAqIEBwYXJhbSByZXBvcnQgYSBSZXBvcnQgb2JqZWN0LgotICAgKiBAcGFyYW0gcmVwb3J0V3JpdGVyIGEgUmVwb3J0V3JpdGVyT2JqZWN0LgotICAgKi8KLSAgcHVibGljIERlZmF1bHRSZXBvcnRlcihSZXBvcnQgcmVwb3J0LCBSZXBvcnRXcml0ZXIgcmVwb3J0V3JpdGVyKQotICB7Ci0gICAgdGhpcy5yZXBvcnQgPSByZXBvcnQ7Ci0gICAgdGhpcy5yZXBvcnRXcml0ZXIgPSByZXBvcnRXcml0ZXI7Ci0KLSAgICAvLyBBREQ6IFZlcmlmeSB0aGF0IHdyaXRlciBzZXQgaW4gcmVwb3J0V3JpdGVyCi0KLSAgICAvLyBHZXQgcmVwb3J0IGNvbnRleHQKLSAgICB0aGlzLmFuYWx5emVyQ29uZmlnID0KLSAgICAgIHJlcG9ydC5nZXRSZXBvcnRDb250ZXh0KCkuZ2V0QW5hbHl6ZXIoKS5nZXRBbmFseXplckNvbmZpZygpOwotICAgIHRoaXMuYXNzZXJ0aW9uUmVzdWx0VHlwZSA9Ci0gICAgICB0aGlzLmFuYWx5emVyQ29uZmlnLmdldEFzc2VydGlvblJlc3VsdHNPcHRpb24oKS5nZXRBc3NlcnRpb25SZXN1bHRUeXBlKCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5CdWlsZFJlcG9ydCNzZXRDdXJyZW50QXJ0aWZhY3Qob3JnLndzaS50ZXN0LnJlcG9ydC5SZXBvcnRBcnRpZmFjdCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEN1cnJlbnRBcnRpZmFjdChSZXBvcnRBcnRpZmFjdCByZXBvcnRBcnRpZmFjdCkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXBvcnQuc2V0Q3VycmVudEFydGlmYWN0KHJlcG9ydEFydGlmYWN0KTsKLSAgICByZXBvcnRXcml0ZXIud3JpdGUobmV3IFN0cmluZ1JlYWRlcihyZXBvcnRBcnRpZmFjdC5nZXRTdGFydFhNTFN0cmluZygiIikpKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2VuZEN1cnJlbnRBcnRpZmFjdCgpCi0gICAqLwotICBwdWJsaWMgdm9pZCBlbmRDdXJyZW50QXJ0aWZhY3QoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICByZXBvcnRXcml0ZXIud3JpdGUoCi0gICAgICBuZXcgU3RyaW5nUmVhZGVyKHJlcG9ydC5nZXRDdXJyZW50QXJ0aWZhY3QoKS5nZXRFbmRYTUxTdHJpbmcoIiIpKSk7Ci0gICAgcmVwb3J0LmVuZEN1cnJlbnRBcnRpZmFjdCgpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQnVpbGRSZXBvcnQjYWRkQXJ0aWZhY3RSZWZlcmVuY2Uob3JnLndzaS50ZXN0LnJlcG9ydC5BcnRpZmFjdFJlZmVyZW5jZSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEFydGlmYWN0UmVmZXJlbmNlKEFydGlmYWN0UmVmZXJlbmNlIGFydGlmYWN0UmVmZXJlbmNlKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlcG9ydFdyaXRlci53cml0ZShuZXcgU3RyaW5nUmVhZGVyKGFydGlmYWN0UmVmZXJlbmNlLnRvWE1MU3RyaW5nKCIiKSkpOwotCi0gICAgLy8gQWRkIGFydGlmYWN0IHJlZmVyZW5jZSB0byByZXBvcnQKLSAgICByZXBvcnQuYWRkQXJ0aWZhY3RSZWZlcmVuY2UoYXJ0aWZhY3RSZWZlcmVuY2UpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQnVpbGRSZXBvcnQjc2V0Q3VycmVudEVudHJ5KG9yZy53c2kudGVzdC5yZXBvcnQuRW50cnkpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDdXJyZW50RW50cnkoRW50cnkgZW50cnkpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlcG9ydC5zZXRDdXJyZW50RW50cnkoZW50cnkpOwotICAgIHJlcG9ydFdyaXRlci53cml0ZSgKLSAgICAgIG5ldyBTdHJpbmdSZWFkZXIoCi0gICAgICAgIGVudHJ5LmdldFN0YXJ0WE1MU3RyaW5nKAotICAgICAgICAgICIiLAotICAgICAgICAgIHRoaXMKLSAgICAgICAgICAgIC5yZXBvcnQKLSAgICAgICAgICAgIC5nZXRSZXBvcnRDb250ZXh0KCkKLSAgICAgICAgICAgIC5nZXRBbmFseXplcigpCi0gICAgICAgICAgICAuZ2V0QW5hbHl6ZXJDb25maWcoKQotICAgICAgICAgICAgLmdldEFzc2VydGlvblJlc3VsdHNPcHRpb24oKQotICAgICAgICAgICAgLmdldFNob3dNZXNzYWdlRW50cnkoKSkpKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I3NldEN1cnJlbnRFbnRyeShvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q3VycmVudEVudmVsb3BlRW50cnkoRW50cnkgZW50cnkpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlcG9ydC5zZXRDdXJyZW50RW50cnkoZW50cnkpOwotICAgIHJlcG9ydFdyaXRlci53cml0ZSgKLSAgICAgIG5ldyBTdHJpbmdSZWFkZXIoCi0gICAgICAgIGVudHJ5LmdldFN0YXJ0WE1MU3RyaW5nKAotICAgICAgICAgICIiLAotICAgICAgICAgIHRoaXMKLSAgICAgICAgICAgIC5yZXBvcnQKLSAgICAgICAgICAgIC5nZXRSZXBvcnRDb250ZXh0KCkKLSAgICAgICAgICAgIC5nZXRBbmFseXplcigpCi0gICAgICAgICAgICAuZ2V0QW5hbHl6ZXJDb25maWcoKQotICAgICAgICAgICAgLmdldEFzc2VydGlvblJlc3VsdHNPcHRpb24oKQotICAgICAgICAgICAgLmdldFNob3dNZXNzYWdlRW50cnkoKSwKLQkJICB0cnVlKSkpOwotICB9Ci0vKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5CdWlsZFJlcG9ydCNlbmRDdXJyZW50RW50cnkoKQotICAgKi8KLSAgcHVibGljIHZvaWQgZW5kQ3VycmVudEVudHJ5KCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVwb3J0V3JpdGVyLndyaXRlKAotICAgICAgbmV3IFN0cmluZ1JlYWRlcihyZXBvcnQuZ2V0Q3VycmVudEVudHJ5KCkuZ2V0RW5kWE1MU3RyaW5nKCIiKSkpOwotICAgIHJlcG9ydC5lbmRDdXJyZW50RW50cnkoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2FkZEFzc2VydGlvblJlc3VsdChvcmcud3NpLnRlc3QucmVwb3J0LkFzc2VydGlvblJlc3VsdCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEFzc2VydGlvblJlc3VsdChBc3NlcnRpb25SZXN1bHQgYXNzZXJ0aW9uUmVzdWx0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIEJhc2VkIG9uIHRoZSBjb25maWcgb3B0aW9ucywgd3JpdGUgb3V0IGFzc2VydGlvbiByZXN1bHQKLSAgICBpZiAoKGFzc2VydGlvblJlc3VsdFR5cGUuaXNBbGwoKSkKLSAgICAgIHx8ICgoYXNzZXJ0aW9uUmVzdWx0VHlwZS5pc0ZhaWxlZE9ubHkoKSkKLSAgICAgICAgJiYgKGFzc2VydGlvblJlc3VsdC5nZXRSZXN1bHQoKS5lcXVhbHMoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9GQUlMRUQpKSkKLSAgICAgIHx8ICgoYXNzZXJ0aW9uUmVzdWx0VHlwZS5pc05vdFBhc3NlZCgpKQotICAgICAgICAmJiAoIWFzc2VydGlvblJlc3VsdC5nZXRSZXN1bHQoKS5lcXVhbHMoQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQpKSkKLQkgICAgICB8fCAoKGFzc2VydGlvblJlc3VsdFR5cGUuaXNOb3RJbmZvKCkpCi0JICAgICAgICAgICAgJiYgKCFhc3NlcnRpb25SZXN1bHQuZ2V0QXNzZXJ0aW9uKCkuZ2V0VHlwZSgpLmVxdWFscyhUZXN0QXNzZXJ0aW9uLlRZUEVfSU5GT1JNQVRJT05BTCkpKSkKLSAgICB7Ci0gICAgICByZXBvcnRXcml0ZXIud3JpdGUobmV3IFN0cmluZ1JlYWRlcihhc3NlcnRpb25SZXN1bHQudG9YTUxTdHJpbmcoIiIpKSk7Ci0gICAgfQotCi0gICAgLy8gQWRkIGFzc2VydGlvbiB0byByZXBvcnQKLSAgICByZXBvcnQuYWRkQXNzZXJ0aW9uUmVzdWx0KGFzc2VydGlvblJlc3VsdCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5CdWlsZFJlcG9ydCNnZXRBc3NlcnRpb25SZXN1bHQoamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgZ2V0QXNzZXJ0aW9uUmVzdWx0KFN0cmluZyBhc3NlcnRpb25JZCkKLSAgewotICAgIC8vIEdldCB0aGUgYXNzZXJ0aW9uIHJlc3VsdCBmcm9tIHRoZSBjdXJyZW50IGFzc2VydGlvbiB0YXJnZXQKLSAgICByZXR1cm4gcmVwb3J0LmdldEFzc2VydGlvblJlc3VsdChhc3NlcnRpb25JZCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Xcml0ZVJlcG9ydCNzdGFydFJlcG9ydCgpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzdGFydFJlcG9ydCgpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIFdyaXRlIG91dCBzdGFydCBvZiByZXBvcnQKLSAgICByZXBvcnRXcml0ZXIud3JpdGUobmV3IFN0cmluZ1JlYWRlcihyZXBvcnQuZ2V0U3RhcnRYTUxTdHJpbmcoIiIpKSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Xcml0ZVJlcG9ydCNmaW5pc2hSZXBvcnQoKQotICAgKi8KLSAgcHVibGljIHZvaWQgZmluaXNoUmVwb3J0KCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgLy8gRW5kIHRoZSByZXBvcnQgZmlsZQotICAgIHJlcG9ydFdyaXRlci53cml0ZShuZXcgU3RyaW5nUmVhZGVyKHJlcG9ydC5nZXRFbmRYTUxTdHJpbmcoIiIpKSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5Xcml0ZVJlcG9ydCNmaW5pc2hSZXBvcnRXaXRoRXJyb3IoamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIGZpbmlzaFJlcG9ydFdpdGhFcnJvcihTdHJpbmcgZXJyb3JEZXRhaWwpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIENoZWNrIGlmIGVudHJ5IG9yIGFydGlmYWN0IG5lZWQgdG8gYmUgY2xvc2VkCi0gICAgaWYgKHRoaXMucmVwb3J0LmdldEN1cnJlbnRFbnRyeSgpICE9IG51bGwpCi0gICAgICBlbmRDdXJyZW50RW50cnkoKTsKLSAgICBpZiAodGhpcy5yZXBvcnQuZ2V0Q3VycmVudEFydGlmYWN0KCkgIT0gbnVsbCkKLSAgICAgIGVuZEN1cnJlbnRBcnRpZmFjdCgpOwotCi0gICAgLy8gRW5kIHRoZSByZXBvcnQgZmlsZQotICAgIHJlcG9ydFdyaXRlci53cml0ZSgKLSAgICAgIG5ldyBTdHJpbmdSZWFkZXIocmVwb3J0LmdldEVycm9yWE1MU3RyaW5nKCIiLCBlcnJvckRldGFpbCkpKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2NyZWF0ZUFzc2VydGlvblJlc3VsdCgpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IGNyZWF0ZUFzc2VydGlvblJlc3VsdCgpCi0gIHsKLSAgICByZXR1cm4gcmVwb3J0LmNyZWF0ZUFzc2VydGlvblJlc3VsdCgpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQnVpbGRSZXBvcnQjY3JlYXRlQXJ0aWZhY3QoKQotICAgKi8KLSAgcHVibGljIFJlcG9ydEFydGlmYWN0IGNyZWF0ZUFydGlmYWN0KCkKLSAgewotICAgIHJldHVybiByZXBvcnQuY3JlYXRlQXJ0aWZhY3QoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2NyZWF0ZUVudHJ5KCkKLSAgICovCi0gIHB1YmxpYyBFbnRyeSBjcmVhdGVFbnRyeSgpCi0gIHsKLSAgICByZXR1cm4gcmVwb3J0LmNyZWF0ZUVudHJ5KCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5CdWlsZFJlcG9ydCNjcmVhdGVFbnRyeUNvbnRhaW5lcigpCi0gICAqLwotICBwdWJsaWMgRW50cnlDb250YWluZXIgY3JlYXRlRW50cnlDb250YWluZXIoKQotICB7Ci0gICAgcmV0dXJuIHJlcG9ydC5jcmVhdGVFbnRyeUNvbnRhaW5lcigpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQnVpbGRSZXBvcnQjY3JlYXRlRmFpbHVyZURldGFpbCgpCi0gICAqLwotICBwdWJsaWMgRmFpbHVyZURldGFpbCBjcmVhdGVGYWlsdXJlRGV0YWlsKCkKLSAgewotICAgIHJldHVybiByZXBvcnQuY3JlYXRlRmFpbHVyZURldGFpbCgpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuV3JpdGVSZXBvcnQjZ2V0UmVwb3J0KCkKLSAgICovCi0gIHB1YmxpYyBSZXBvcnQgZ2V0UmVwb3J0KCkKLSAgewotICAgIHJldHVybiB0aGlzLnJlcG9ydDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I3NldFByZXJlcVR5cGUoamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFByZXJlcVR5cGUoU3RyaW5nIHByZXJlcVR5cGUpCi0gIHsKLSAgICB0aGlzLnJlcG9ydC5zZXRQcmVyZXFUeXBlKHByZXJlcVR5cGUpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9FbnRyeUNvbnRhaW5lckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9pbXBsL0VudHJ5Q29udGFpbmVySW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTZkMDg2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9pbXBsL0VudHJ5Q29udGFpbmVySW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzIElCTSBDb3Jwb3JhdGlvbiwgUGFyYXNvZnQgYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAgICAgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiAgIFBhcmFzb2Z0IC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5pbXBsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5FbnRyeUNvbnRhaW5lcjsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIGVudHJpZXMuICAKLSAqIEFuIGV4YW1wbGUgd291bGQgYmUgYSBXU0RMIGRvY3VtZW50LgotICogCi0gKiBAYXV0aG9yIFBldGVyICBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKiBAdmVyc2lvbiAxLjAuMQotICovCi1wdWJsaWMgY2xhc3MgRW50cnlDb250YWluZXJJbXBsCi0gIGV4dGVuZHMgRW50cnlSZXN1bHRJbXBsCi0gIGltcGxlbWVudHMgRW50cnlDb250YWluZXIKLXsKLSAgLyoqCi0gICAqIENvbnRhaW5lciBJRC4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgaWQ7Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuRW50cnlDb250YWluZXIjZ2V0SWQoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRJZCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5pZDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5Q29udGFpbmVyI3NldElkKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldElkKFN0cmluZyBpZCkKLSAgewotICAgIHRoaXMuaWQgPSBpZDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCi0gIHsKLSAgICByZXR1cm4gIlsiICsgdGhpcy5pZCArICJdICIgKyB0aGlzLmFzc2VydGlvblJlc3VsdExpc3Q7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L2ltcGwvRW50cnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9FbnRyeUltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYwNzc1OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9FbnRyeUltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5FbnZlbG9wZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuTWVzc2FnZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuRW50cnlDb250YWluZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuRW50cnlUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci0KLS8qKgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuIGVudHJ5IGluIGEgcmVwb3J0LgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgRW50cnlJbXBsIGV4dGVuZHMgRW50cnlSZXN1bHRJbXBsIGltcGxlbWVudHMgRW50cnkKLXsKLSAgLyoqCi0gICAqIEVudHJ5IHR5cGUuCi0gICAqLwotICBwcm90ZWN0ZWQgRW50cnlUeXBlIGVudHJ5VHlwZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIEFydGlmYWN0IG5hbWUgKG9wdGlvbmFsKS4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgYXJ0aWZhY3ROYW1lID0gbnVsbDsKLQotICAvKioKLSAgICogUmVmZXJlbmNlIElELgotICAgKi8KLSAgcHJvdGVjdGVkIFN0cmluZyByZWZlcmVuY2VJRCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFBhcmVudCBlbGVtZW50IG5hbWUgKG9ubHkgdXNlZCB3aGVuIGVudHJ5IHR5cGUgaXMgInBvcnQiIG9yICJvcGVyYXRpb24iKS4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgcGFyZW50RWxlbWVudE5hbWUgPSBudWxsOwotCi0gIC8qKgotICAgKiBFbnRyeSBkZXRhaWwgb2JqZWN0LgotICAgKi8KLSAgcHJvdGVjdGVkIE9iamVjdCBlbnRyeURldGFpbCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIEVudHJ5IGNvbnRhaW5lci4KLSAgICovCi0gIHByb3RlY3RlZCBFbnRyeUNvbnRhaW5lciBlbnRyeUNvbnRhaW5lciA9IG51bGw7Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuRW50cnkjZ2V0RW50cnlUeXBlKCkKLSAgICovCi0gIHB1YmxpYyBFbnRyeVR5cGUgZ2V0RW50cnlUeXBlKCkKLSAgewotICAgIHJldHVybiB0aGlzLmVudHJ5VHlwZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5I3NldEVudHJ5VHlwZShFbnRyeVR5cGUpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbnRyeVR5cGUoRW50cnlUeXBlIGVudHJ5VHlwZSkKLSAgewotICAgIHRoaXMuZW50cnlUeXBlID0gZW50cnlUeXBlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuRW50cnkjZ2V0QXJ0aWZhY3ROYW1lKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QXJ0aWZhY3ROYW1lKCkKLSAgewotICAgIHJldHVybiB0aGlzLmFydGlmYWN0TmFtZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5I3NldEFydGlmYWN0TmFtZShqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QXJ0aWZhY3ROYW1lKFN0cmluZyBhcnRpZmFjdE5hbWUpCi0gIHsKLSAgICB0aGlzLmFydGlmYWN0TmFtZSA9IGFydGlmYWN0TmFtZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5I2dldFJlZmVyZW5jZUlEKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0UmVmZXJlbmNlSUQoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlSUQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5FbnRyeSNzZXRSZWZlcmVuY2VJRChTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZWZlcmVuY2VJRChTdHJpbmcgcmVmZXJlbmNlSUQpCi0gIHsKLSAgICB0aGlzLnJlZmVyZW5jZUlEID0gcmVmZXJlbmNlSUQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5FbnRyeSNnZXRQYXJlbnRFbGVtZW50TmFtZSgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFBhcmVudEVsZW1lbnROYW1lKCkKLSAgewotICAgIHJldHVybiB0aGlzLnBhcmVudEVsZW1lbnROYW1lOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuRW50cnkjc2V0UGFyZW50RWxlbWVudE5hbWUoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UGFyZW50RWxlbWVudE5hbWUoU3RyaW5nIHBhcmVudEVsZW1lbnROYW1lKQotICB7Ci0gICAgdGhpcy5wYXJlbnRFbGVtZW50TmFtZSA9IHBhcmVudEVsZW1lbnROYW1lOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuRW50cnkjZ2V0RW50cnlEZXRhaWwoKQotICAgKi8KLSAgcHVibGljIE9iamVjdCBnZXRFbnRyeURldGFpbCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5lbnRyeURldGFpbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5I3NldEVudHJ5RGV0YWlsKE9iamVjdCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVudHJ5RGV0YWlsKE9iamVjdCBlbnRyeURldGFpbCkKLSAgewotICAgIHRoaXMuZW50cnlEZXRhaWwgPSBlbnRyeURldGFpbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5I2dldEVudHJ5Q29udGFpbmVyKCkKLSAgICovCi0gIHB1YmxpYyBFbnRyeUNvbnRhaW5lciBnZXRFbnRyeUNvbnRhaW5lcigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5lbnRyeUNvbnRhaW5lcjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5I3NldEVudHJ5Q29udGFpbmVyKG9yZy53c2kudGVzdC5yZXBvcnQuRW50cnlDb250YWluZXIpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbnRyeUNvbnRhaW5lcihFbnRyeUNvbnRhaW5lciBlbnRyeUNvbnRhaW5lcikKLSAgewotICAgIHRoaXMuZW50cnlDb250YWluZXIgPSBlbnRyeUNvbnRhaW5lcjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5UmVzdWx0I2FkZEFzc2VydGlvblJlc3VsdChBc3NlcnRpb25SZXN1bHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRBc3NlcnRpb25SZXN1bHQoQXNzZXJ0aW9uUmVzdWx0IGFzc2VydGlvblJlc3VsdCkKLSAgewotICAgIHN1cGVyLmFkZEFzc2VydGlvblJlc3VsdChhc3NlcnRpb25SZXN1bHQpOwotCi0gICAgaWYgKHRoaXMuZW50cnlDb250YWluZXIgIT0gbnVsbCkKLSAgICAgIHRoaXMuZW50cnlDb250YWluZXIuYWRkQXNzZXJ0aW9uUmVzdWx0KGFzc2VydGlvblJlc3VsdCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5FbnRyeSNnZXRTdGFydFhNTFN0cmluZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFN0YXJ0WE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lLCBib29sZWFuIHNob3dMb2dFbnRyeSwgYm9vbGVhbiBlbnZlbG9wZUFydGlmYWN0VHlwZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gQ3JlYXRlIGVsZW1lbnQgCi0gICAgcHcucHJpbnQoIiAgICA8IiArIG5zTmFtZSArIEVMRU1fTkFNRSArICIgIik7Ci0KLSAgICBpZiAodGhpcy5lbnRyeVR5cGUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoZW52ZWxvcGVBcnRpZmFjdFR5cGUpCi0JICB7Ci0gICAgICAJLy8gd2UgdXNlIHRoZSBzYW1lIGFjdHVhbCBlbnRyeSBmb3IgYm90aCBtZXNzYWdlIGFuZCBlbnZlbG9wZSBhcnRpZmFjdHMKLSAgICAgIAkvLyB3ZSBub3cgbmVlZCB0byBvdXRwdXQgZW50cnkgdHlwZSBuYW1lcyB0aGF0IGFjdHVhbGx5IHBlcnRhaW4gdG8gdGhlIGFydGlmYWN0IHR5cGUKLSAgICAgIAlwdy5wcmludCgKLSAgICAgICAgICAgICAgICBXU0lDb25zdGFudHMuQVRUUl9UWVBFICsgIj1cIiIgKyBnZXRDb3JyZXNwb25kaW5nRW52ZWxvcGVFbnRyeVR5cGVOYW1lKHRoaXMuZW50cnlUeXBlLmdldFR5cGVOYW1lKCkpICsgIlwiICIpOwotCSAgfQotCSAgZWxzZQotCSAgewotICAgICAgICBwdy5wcmludCgKLSAgICAgICAgICBXU0lDb25zdGFudHMuQVRUUl9UWVBFICsgIj1cIiIgKyB0aGlzLmVudHJ5VHlwZS5nZXRUeXBlTmFtZSgpICsgIlwiICIpOwotCSAgfQotICAgIH0KLQotICAgIGVsc2UgaWYgKHRoaXMuYXJ0aWZhY3ROYW1lICE9IG51bGwpCi0gICAgewotICAgICAgcHcucHJpbnQoV1NJQ29uc3RhbnRzLkFUVFJfVFlQRSArICI9XCJbIiArIHRoaXMuYXJ0aWZhY3ROYW1lICsgIl1cIiAiKTsKLSAgICB9Ci0KLSAgICBpZiAodGhpcy5yZWZlcmVuY2VJRCAhPSBudWxsKQotICAgICAgcHcucHJpbnQoV1NJQ29uc3RhbnRzLkFUVFJfUkVGRVJFTkNFX0lEICsgIj1cIiIgKyBYTUxVdGlscy54bWxFc2NhcGVkU3RyaW5nKHRoaXMucmVmZXJlbmNlSUQpICsgIlwiICIpOwotCi0KLSAgICAvLyBJZiBzZXJ2aWNlIG5hbWUgd2FzIHNldCB0aGVuIGFkZCBpdAotICAgIC8vaWYgKHBhcmVudEVsZW1lbnROYW1lICE9IG51bGwpIHsKLSAgICAvLyAgcHcucHJpbnQoIiAiICsgV1NJQ29uc3RhbnRzLkFUVFJfUEFSRU5UX0VMRU1FTlRfTkFNRSArICI9XCIiICsgdGhpcy5wYXJlbnRFbGVtZW50TmFtZSArICJcIiIpOwotICAgIC8vfQotCi0gICAgLy8gQUREOiBOZWVkIHRvIGNoZWNrIGZvciBjb25maWcgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIAotICAgIC8vICAgICAgdGhhdCBsb2cgZW50cmllcyBzaG91bGQgYmUgYWRkZWQKLQotICAgIC8vIElmIHRhcmdldCBpcyBhIGxvZyBlbnRyeSwgdGhlbiBhZGQgcmVmZXJlbmNlIHRvIGl0Ci0gICAgaWYgKChlbnRyeVR5cGUgIT0gbnVsbCkgJiYgKGVudHJ5VHlwZS5nZXRBcnRpZmFjdFR5cGUoKS5pc0xvZ2dhYmxlKCkpICYmIChzaG93TG9nRW50cnkpKSAKLSAgICB7Ci0gICAgICBEb2N1bWVudEVsZW1lbnQgbG9nRW50cnkgPSAoRG9jdW1lbnRFbGVtZW50KSBlbnRyeURldGFpbDsKLSAgICAgIHB3LnByaW50bG4oInZhbHVlPVwiIiArIGxvZ0VudHJ5LnRvWE1MU3RyaW5nKFdTSUNvbnN0YW50cy5OU19OQU1FX1dTSV9MT0cpICsgIlwiICIpOwotICAgIH0KLSAgIAotICAgIC8vIEVuZCBlbGVtZW50Ci0gICAgcHcucHJpbnRsbigiPiIpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5FbnRyeSNnZXRTdGFydFhNTFN0cmluZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFN0YXJ0WE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lLCBib29sZWFuIHNob3dMb2dFbnRyeSkKLSAgewotICAJcmV0dXJuIGdldFN0YXJ0WE1MU3RyaW5nKG5hbWVzcGFjZU5hbWUsIHNob3dMb2dFbnRyeSwgZmFsc2UpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuRW50cnkjZ2V0RW5kWE1MU3RyaW5nKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RW5kWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIHJldHVybiAiICAgIDwvIiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+IjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRFbGVtZW50I3RvWE1MU3RyaW5nKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9YTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICAvLyBSZXR1cm4gc3RyaW5nCi0gICAgcmV0dXJuIGdldFN0YXJ0WE1MU3RyaW5nKCIiLCBmYWxzZSkgKyBnZXRFbmRYTUxTdHJpbmcoIiIpOwotICB9Ci0KLSAgcHVibGljIFN0cmluZyBnZXRDb3JyZXNwb25kaW5nRW52ZWxvcGVFbnRyeVR5cGVOYW1lKFN0cmluZyBtZXNzYWdlRW50cnlUeXBlTmFtZSkKLSAgewotICAJU3RyaW5nIGVudmVsb3BlRW50cnlUeXBlTmFtZSA9IG1lc3NhZ2VFbnRyeVR5cGVOYW1lOwotICAJaWYgKG1lc3NhZ2VFbnRyeVR5cGVOYW1lICE9IG51bGwpCi0gIAl7Ci0gIAlpZiAobWVzc2FnZUVudHJ5VHlwZU5hbWUuZXF1YWxzKE1lc3NhZ2VWYWxpZGF0b3IuVFlQRV9NRVNTQUdFX0FOWSkpCi0gIAkJZW52ZWxvcGVFbnRyeVR5cGVOYW1lID0gRW52ZWxvcGVWYWxpZGF0b3IuVFlQRV9FTlZFTE9QRV9BTlk7Ci0gIAllbHNlIGlmIChtZXNzYWdlRW50cnlUeXBlTmFtZS5lcXVhbHMoTWVzc2FnZVZhbGlkYXRvci5UWVBFX01FU1NBR0VfUkVRVUVTVCkpCi0gIAkJZW52ZWxvcGVFbnRyeVR5cGVOYW1lID0gRW52ZWxvcGVWYWxpZGF0b3IuVFlQRV9FTlZFTE9QRV9SRVFVRVNUOwotICAJZWxzZSBpZiAobWVzc2FnZUVudHJ5VHlwZU5hbWUuZXF1YWxzKE1lc3NhZ2VWYWxpZGF0b3IuVFlQRV9NRVNTQUdFX1JFU1BPTlNFKSkKLSAgCQllbnZlbG9wZUVudHJ5VHlwZU5hbWUgPSBFbnZlbG9wZVZhbGlkYXRvci5UWVBFX0VOVkVMT1BFX1JFU1BPTlNFOwotICAJfQotCi0gIAlyZXR1cm4gZW52ZWxvcGVFbnRyeVR5cGVOYW1lOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9FbnRyeVJlc3VsdEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9pbXBsL0VudHJ5UmVzdWx0SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWZmYjcyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9pbXBsL0VudHJ5UmVzdWx0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5pbXBsOwotCi1pbXBvcnQgamF2YS51dGlsLlRyZWVNYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFzc2VydGlvblJlc3VsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkVudHJ5UmVzdWx0OwotCi0vKioKLSAqIFJlc3VsdCBmb3IgYSBzcGVjaWZpYyB0ZXN0IGFzc2VydGlvbi4KLSAqIAotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIEVudHJ5UmVzdWx0SW1wbCBpbXBsZW1lbnRzIEVudHJ5UmVzdWx0Ci17Ci0gIC8qKgotICAgKiBBc3NlcnRpb24gcmVzdWx0IGxpc3QuCi0gICAqLwotICBwcm90ZWN0ZWQgVHJlZU1hcCBhc3NlcnRpb25SZXN1bHRMaXN0ID0gbmV3IFRyZWVNYXAoKTsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5FbnRyeVJlc3VsdCNhZGRBc3NlcnRpb25SZXN1bHQob3JnLndzaS50ZXN0LnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRBc3NlcnRpb25SZXN1bHQoQXNzZXJ0aW9uUmVzdWx0IGFzc2VydGlvblJlc3VsdCkKLSAgewotICAgIHRoaXMuYXNzZXJ0aW9uUmVzdWx0TGlzdC5wdXQoCi0gICAgICBhc3NlcnRpb25SZXN1bHQuZ2V0QXNzZXJ0aW9uKCkuZ2V0SWQoKSwKLSAgICAgIGFzc2VydGlvblJlc3VsdCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5FbnRyeVJlc3VsdCNnZXRBc3NlcnRpb25SZXN1bHRMaXN0KCkKLSAgICovCi0gIHB1YmxpYyBUcmVlTWFwIGdldEFzc2VydGlvblJlc3VsdExpc3QoKQotICB7Ci0gICAgcmV0dXJuIGFzc2VydGlvblJlc3VsdExpc3Q7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5FbnRyeVJlc3VsdCNnZXRBc3NlcnRpb25SZXN1bHQoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIEFzc2VydGlvblJlc3VsdCBnZXRBc3NlcnRpb25SZXN1bHQoU3RyaW5nIGFzc2VydGlvbklkKQotICB7Ci0gICAgcmV0dXJuIChBc3NlcnRpb25SZXN1bHQpIGFzc2VydGlvblJlc3VsdExpc3QuZ2V0KGFzc2VydGlvbklkKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L2ltcGwvRmFpbHVyZURldGFpbEltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3JlcG9ydC9pbXBsL0ZhaWx1cmVEZXRhaWxJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjN2RjNTEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L2ltcGwvRmFpbHVyZURldGFpbEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkZhaWx1cmVEZXRhaWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5kb20uRWxlbWVudExvY2F0aW9uOwotCi1pbXBvcnQgY29tLmlibS53c2RsLnV0aWwueG1sLkRPTVV0aWxzOwotCi0vKioKLSAqIFRoaXMgY2xhc3Mgd2lsbCAuLi4KLSAqIAotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGNsYXNzIEZhaWx1cmVEZXRhaWxJbXBsIGltcGxlbWVudHMgRmFpbHVyZURldGFpbAotewotICBwcm90ZWN0ZWQgU3RyaW5nIGZhaWx1cmVNZXNzYWdlID0gbnVsbDsKLSAgcHJvdGVjdGVkIFN0cmluZyByZWZlcmVuY2VUeXBlID0gbnVsbDsKLSAgcHJvdGVjdGVkIFN0cmluZyByZWZlcmVuY2VJRCA9IG51bGw7Ci0gIHByb3RlY3RlZCBFbGVtZW50TG9jYXRpb24gZWxlbWVudExvY2F0aW9uID0gbnVsbDsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5GYWlsdXJlRGV0YWlsI2dldEZhaWx1cmVNZXNzYWdlKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RmFpbHVyZU1lc3NhZ2UoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuZmFpbHVyZU1lc3NhZ2U7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5GYWlsdXJlRGV0YWlsI3NldEZhaWx1cmVNZXNzYWdlKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEZhaWx1cmVNZXNzYWdlKFN0cmluZyBmYWlsdXJlTWVzc2FnZSkKLSAgewotICAgIHRoaXMuZmFpbHVyZU1lc3NhZ2UgPSBmYWlsdXJlTWVzc2FnZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkZhaWx1cmVEZXRhaWwjZ2V0UmVmZXJlbmNlVHlwZSgpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFJlZmVyZW5jZVR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkZhaWx1cmVEZXRhaWwjc2V0UmVmZXJlbmNlVHlwZShTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRSZWZlcmVuY2VUeXBlKFN0cmluZyByZWZlcmVuY2VUeXBlKQotICB7Ci0gICAgdGhpcy5yZWZlcmVuY2VUeXBlID0gcmVmZXJlbmNlVHlwZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkZhaWx1cmVEZXRhaWwjZ2V0UmVmZXJlbmNlSUQoKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRSZWZlcmVuY2VJRCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VJRDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkZhaWx1cmVEZXRhaWwjc2V0UmVmZXJlbmNlSURuKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFJlZmVyZW5jZUlEbihTdHJpbmcgcmVmZXJlbmNlSUQpCi0gIHsKLSAgICB0aGlzLnJlZmVyZW5jZUlEID0gcmVmZXJlbmNlSUQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5GYWlsdXJlRGV0YWlsI2dldEVsZW1lbnRMb2NhdGlvbigpCi0gICAqLwotICBwdWJsaWMgRWxlbWVudExvY2F0aW9uIGdldEVsZW1lbnRMb2NhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5lbGVtZW50TG9jYXRpb247Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5GYWlsdXJlRGV0YWlsI3NldEVsZW1lbnRMb2NhdGlvbihFbGVtZW50TG9jYXRpb24pCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbGVtZW50TG9jYXRpb24oRWxlbWVudExvY2F0aW9uIGVsZW1lbnRMb2NhdGlvbikKLSAgewotICAgIHRoaXMuZWxlbWVudExvY2F0aW9uID0gZWxlbWVudExvY2F0aW9uOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQjdG9YTUxTdHJpbmcoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gQ3JlYXRlIGVsZW1lbnQgCi0gICAgcHcucHJpbnQoIiAgICAgIDwiICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIiB4bWw6bGFuZz1cImVuXCIgIik7Ci0KLSAgICBpZiAodGhpcy5yZWZlcmVuY2VUeXBlICE9IG51bGwpCi0gICAgICBwdy5wcmludCgKLSAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJfUkVGRVJFTkNFX1RZUEUgKyAiPVwiIiArIHRoaXMucmVmZXJlbmNlVHlwZSArICJcIiAiKTsKLQotICAgIGlmICh0aGlzLnJlZmVyZW5jZUlEICE9IG51bGwpCi0gICAgICBwdy5wcmludCgKLSAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJfUkVGRVJFTkNFX0lEICsgIj1cIiIgKyB0aGlzLnJlZmVyZW5jZUlEICsgIlwiICIpOwotCi0gICAgLy8gQUREOiBOZWVkIHRvIHVzZSBhIGRpZmZlcmVudCBuYW1lc3BhY2UKLSAgICAvKgotICAgIGlmICh0aGlzLmVsZW1lbnRMb2NhdGlvbiAhPSBudWxsKSB7Ci0gICAgICBTdHJpbmcgbnNOYW1lRXh0ID0gInJlcG9ydGV4dCI7Ci0gICAgICBwdy5wcmludCgieG1sbnM6IiArIG5zTmFtZUV4dCArICI9XCIiICsgV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfUkVQT1JUICsgIi9leHQvXCIiKTsKLSAgICAgIHB3LnByaW50KG5zTmFtZUV4dCArICI6IiArIFdTSUNvbnN0YW50cy5BVFRSX0xJTkVfTlVNQkVSICsgIj1cIiIgKyB0aGlzLmVsZW1lbnRMb2NhdGlvbi5nZXRMaW5lTnVtYmVyKCkgKyAiXCIgIik7Ci0gICAgICBwdy5wcmludChuc05hbWVFeHQgKyAiOiIgKyBXU0lDb25zdGFudHMuQVRUUl9DT0xVTU5fTlVNQkVSICsgIj1cIiIgKyB0aGlzLmVsZW1lbnRMb2NhdGlvbi5nZXRDb2x1bW5OdW1iZXIoKSArICJcIiAiKTsKLSAgICB9Ci0gICAgKi8KLQotICAgIC8vIENsb3NlIHN0YXJ0IGVsZW1lbnQKLSAgICBwdy5wcmludCgiPiIpOwotCi0gICAgaWYgKHRoaXMuZmFpbHVyZU1lc3NhZ2UgIT0gbnVsbCkKLSAgICAgIHB3LnByaW50bG4oRE9NVXRpbHMuY2xlYW5TdHJpbmcodGhpcy5mYWlsdXJlTWVzc2FnZSkpOwotCi0gICAgaWYgKHRoaXMuZWxlbWVudExvY2F0aW9uICE9IG51bGwpCi0gICAgewotICAgICAgcHcucHJpbnRsbigiICIpOwotICAgICAgcHcucHJpbnQodGhpcy5lbGVtZW50TG9jYXRpb24udG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgLy8gRW5kIHRoZSBlbGVtZW50Ci0gICAgcHcucHJpbnRsbigiICAgICAgPC8iICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIj4iKTsKLQotICAgIC8vIFJldHVybiBzdHJpbmcKLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9QcmVyZXFGYWlsZWRMaXN0SW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L2ltcGwvUHJlcmVxRmFpbGVkTGlzdEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIxZGUyMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9QcmVyZXFGYWlsZWRMaXN0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5QcmVyZXFGYWlsZWRMaXN0OwotCi0vKioKLSAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gbWFpbnRhaW4gYW5kIGFjY2VzcyB0aGUgUHJlcmVxdWlzaXRlIEZhaWxlZCBMaXN0LgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgUHJlcmVxRmFpbGVkTGlzdEltcGwgaW1wbGVtZW50cyBQcmVyZXFGYWlsZWRMaXN0Ci17Ci0gIC8qKgotICAgKiBMaXN0IG9mIHRlc3QgYXNzZXJ0aW9uIElEcy4KLSAgICovCi0gIHByb3RlY3RlZCBWZWN0b3IgaWRMaXN0ID0gbmV3IFZlY3RvcigpOwotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlByZXJlcUZhaWxlZExpc3QjYWRkVGVzdEFzc2VydGlvbklEKGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRUZXN0QXNzZXJ0aW9uSUQoU3RyaW5nIGFzc2VydGlvbklEKQotICB7Ci0gICAgaWRMaXN0LmFkZChhc3NlcnRpb25JRCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50RWxlbWVudCN0b1hNTFN0cmluZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLQotICAgIFN0cmluZyBuc05hbWUgPSBuYW1lc3BhY2VOYW1lOwotICAgIGlmICgoIW5zTmFtZS5lcXVhbHMoIiIpICYmICghbnNOYW1lLmVuZHNXaXRoKCI6IikpKSkKLSAgICAgIG5zTmFtZSArPSAiOiI7Ci0KLSAgICBpZiAodGhpcy5pZExpc3Quc2l6ZSgpID4gMCkKLSAgICB7Ci0gICAgICAvLyBDcmVhdGUgZWxlbWVudCAKLSAgICAgIHB3LnByaW50bG4oIiAgICAgICAgPCIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiPiIpOwotCi0gICAgICAvLyBJbmNsdWRlIGVhY2ggdGVzdCBhc3NlcnRpb24gSUQKLSAgICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gaWRMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBwdy5wcmludCgKLSAgICAgICAgICAiICAgICAgICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fVEVTVF9BU1NFUlRJT05fSUQgKyAiPiIpOwotICAgICAgICBwdy5wcmludCgoU3RyaW5nKSBpdGVyYXRvci5uZXh0KCkpOwotICAgICAgICBwdy5wcmludGxuKCI8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9URVNUX0FTU0VSVElPTl9JRCArICI+Iik7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEVuZCBlbGVtZW50Ci0gICAgICBwdy5wcmludGxuKCIgICAgICAgIDwvIiArIG5zTmFtZSArIEVMRU1fTkFNRSArICI+Iik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L2ltcGwvUmVwb3J0QXJ0aWZhY3RJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9SZXBvcnRBcnRpZmFjdEltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyOTliOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9SZXBvcnRBcnRpZmFjdEltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LmltcGw7Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5UcmVlTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkVudHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0QXJ0aWZhY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuQXJ0aWZhY3RUeXBlOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgY29udGFpbnMgYSByZXBvcnQgYXJ0aWZhY3QuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBSZXBvcnRBcnRpZmFjdEltcGwgaW1wbGVtZW50cyBSZXBvcnRBcnRpZmFjdAotewotICAvKioKLSAgICogQXJ0aWZhY3QgdHlwZS4KLSAgICovCi0gIHByb3RlY3RlZCBBcnRpZmFjdFR5cGUgYXJ0aWZhY3RUeXBlID0gbnVsbDsKLQotICAvKioKLSAgICogRW50cmllcy4KLSAgICovCi0gIHByb3RlY3RlZCBUcmVlTWFwIGVudHJ5TGlzdCA9IG5ldyBUcmVlTWFwKCk7Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0QXJ0aWZhY3QjZ2V0VHlwZSgpCi0gICAqLwotICBwdWJsaWMgQXJ0aWZhY3RUeXBlIGdldFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHRoaXMuYXJ0aWZhY3RUeXBlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0QXJ0aWZhY3Qjc2V0VHlwZShBcnRpZmFjdFR5cGUpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRUeXBlKEFydGlmYWN0VHlwZSBhcnRpZmFjdFR5cGUpCi0gIHsKLSAgICB0aGlzLmFydGlmYWN0VHlwZSA9IGFydGlmYWN0VHlwZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydEFydGlmYWN0I2FkZEVudHJ5KEVudHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkRW50cnkoRW50cnkgZW50cnkpCi0gIHsKLSAgICAvLyBBZGQgZW50cnkKLSAgICBpZiAoZW50cnkuZ2V0RW50cnlUeXBlKCkgIT0gbnVsbCkKLSAgICAgIHRoaXMuZW50cnlMaXN0LnB1dChlbnRyeS5nZXRFbnRyeVR5cGUoKS5nZXRUeXBlTmFtZSgpLCBlbnRyeSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5SZXBvcnRBcnRpZmFjdCNnZXRFbnRyeUxpc3QoKQotICAgKi8KLSAgcHVibGljIFRyZWVNYXAgZ2V0RW50cnlMaXN0KCkKLSAgewotICAgIHJldHVybiB0aGlzLmVudHJ5TGlzdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydEFydGlmYWN0I2dldFN0YXJ0WE1MU3RyaW5nKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RhcnRYTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIC8vIENyZWF0ZSBlbGVtZW50IAotICAgIHB3LnByaW50KCIgIDwiICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIiAiKTsKLSAgICBwdy5wcmludCgKLSAgICAgIFdTSUNvbnN0YW50cy5BVFRSX1RZUEUgKyAiPVwiIiArIHRoaXMuYXJ0aWZhY3RUeXBlLmdldFR5cGVOYW1lKCkgKyAiXCI+Iik7Ci0KLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydEFydGlmYWN0I2dldEVuZFhNTFN0cmluZyhTdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEVuZFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZyBuc05hbWUgPSBuYW1lc3BhY2VOYW1lOwotICAgIGlmICgoIW5zTmFtZS5lcXVhbHMoIiIpICYmICghbnNOYW1lLmVuZHNXaXRoKCI6IikpKSkKLSAgICAgIG5zTmFtZSArPSAiOiI7Ci0KLSAgICByZXR1cm4gIiAgPC8iICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIj4iOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5kb2N1bWVudC5Eb2N1bWVudEVsZW1lbnQjdG9YTUxTdHJpbmcoU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIC8vIFJldHVybiBzdHJpbmcKLSAgICByZXR1cm4gZ2V0U3RhcnRYTUxTdHJpbmcoIiIpICsgZ2V0RW5kWE1MU3RyaW5nKCIiKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9SZXBvcnRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9SZXBvcnRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYjEyZjAuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L2ltcGwvUmVwb3J0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTE0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuaW1wbDsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLkxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkFydGlmYWN0UmVmZXJlbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXNzZXJ0aW9uUmVzdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5FbnRyeUNvbnRhaW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LkZhaWx1cmVEZXRhaWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRBcnRpZmFjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVGVzdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci0KLS8qKgotICogV1MtSSBjb25mb3JtYW5jZSB0ZXN0IHJlcG9ydC4KLSAqCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBSZXBvcnRJbXBsIGltcGxlbWVudHMgUmVwb3J0Ci17Ci0gIC8qKgotICAgKiBSZXBvcnQgZmlsZW5hbWUuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGZpbGVuYW1lID0gbnVsbDsKLQotICAvKioKLSAgICogUmVwb3J0IGNvbnRleHQuCi0gICAqLwotICBwcm90ZWN0ZWQgUmVwb3J0Q29udGV4dCByZXBvcnRDb250ZXh0ID0gbnVsbDsKLQotICAvKioKLSAgICogTG9nIGZpbGUuCi0gICAqLwotICBwcm90ZWN0ZWQgTG9nIGxvZyA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIFN1bW1hcnkgYWxsIHBhc3NlZCBmbGFnLgotICAgKi8KLSAgcHJvdGVjdGVkIGJvb2xlYW4gYWxsUGFzc2VkID0gdHJ1ZTsKLQotICAvKioKLSAgICogVGVzdCBjb3ZlcmFnZS4KLSAgICovCi0gIC8vcHJvdGVjdGVkIFRlc3RDb3ZlcmFnZSB0ZXN0Q292ZXJhZ2U7Ci0KLSAgLyoqCi0gICAqIEFydGlmYWN0IGxpc3QuCi0gICAqLwotICBwcm90ZWN0ZWQgVmVjdG9yIGFydGlmYWN0TGlzdCA9IG5ldyBWZWN0b3IoKTsKLQotICAvKioKLSAgICogRW50cnkgbGlzdC4KLSAgICovCi0gIHByb3RlY3RlZCBWZWN0b3IgZW50cnlMaXN0ID0gbmV3IFZlY3RvcigpOwotCi0gIC8qKgotICAgKiBDdXJyZW50IGFydGlmYWN0LgotICAgKi8KLSAgcHJvdGVjdGVkIFJlcG9ydEFydGlmYWN0IGN1cnJlbnRBcnRpZmFjdCA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIEN1cnJlbnQgZW50cnkuCi0gICAqLwotICBwcm90ZWN0ZWQgRW50cnkgY3VycmVudEVudHJ5ID0gbnVsbDsKLQotICAvKioKLSAgICogUHJlcmVxIHR5cGUuCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIHByZXJlcVR5cGU7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBjb25mb3JtYW5jZSByZXBvcnQuCi0gICAqLwotICBwdWJsaWMgUmVwb3J0SW1wbCgpCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuV1NJRG9jdW1lbnQjZ2V0TG9jYXRpb24oKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvbigpCi0gIHsKLSAgICAvLyBHZXQgcmVwb3J0IFVSSQotICAgIC8vcmV0dXJuIHJlcG9ydFVSSTsKLSAgICByZXR1cm4gdGhpcy5maWxlbmFtZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuV1NJRG9jdW1lbnQjc2V0TG9jYXRpb24oamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKFN0cmluZyByZXBvcnRVUkkpCi0gIHsKLSAgICB0aGlzLmZpbGVuYW1lID0gcmVwb3J0VVJJOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0I2dldFJlcG9ydENvbnRleHQoKQotICAgKi8KLSAgcHVibGljIFJlcG9ydENvbnRleHQgZ2V0UmVwb3J0Q29udGV4dCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5yZXBvcnRDb250ZXh0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0I3NldFJlcG9ydENvbnRleHQob3JnLndzaS50ZXN0LnJlcG9ydC5SZXBvcnRDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0UmVwb3J0Q29udGV4dChSZXBvcnRDb250ZXh0IHJlcG9ydENvbnRleHQpCi0gIHsKLSAgICAvLyBTYXZlIGlucHV0IHJlZmVyZW5jZXMKLSAgICB0aGlzLnJlcG9ydENvbnRleHQgPSByZXBvcnRDb250ZXh0OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0I2dldEN1cnJlbnRBcnRpZmFjdCgpCi0gICAqLwotICBwdWJsaWMgUmVwb3J0QXJ0aWZhY3QgZ2V0Q3VycmVudEFydGlmYWN0KCkKLSAgewotICAgIC8vIFJldHVybiBhcnRpZmFjdAotICAgIHJldHVybiB0aGlzLmN1cnJlbnRBcnRpZmFjdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I3NldEN1cnJlbnRBcnRpZmFjdChvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydEFydGlmYWN0KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q3VycmVudEFydGlmYWN0KFJlcG9ydEFydGlmYWN0IGFydGlmYWN0KSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBTYXZlIHJlZmVyZW5jZSB0byBhcnRpZmFjdAotICAgIGFydGlmYWN0TGlzdC5hZGQoYXJ0aWZhY3QpOwotCi0gICAgLy8gU2V0IGFzIGN1cnJlbnQgYXJ0aWZhY3QKLSAgICB0aGlzLmN1cnJlbnRBcnRpZmFjdCA9IGFydGlmYWN0OwotCi0gICAgLy8gU2V0IGRlZmF1bHQgcHJlcmVxIHByb2Nlc3NpbmcKLSAgICB0aGlzLnByZXJlcVR5cGUgPSBQUkVSRVFfVFlQRV9FTlRSWTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2VuZEN1cnJlbnRBcnRpZmFjdCgpCi0gICAqLwotICBwdWJsaWMgdm9pZCBlbmRDdXJyZW50QXJ0aWZhY3QoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBSZW1vdmUgY3VycmVudCBhcnRpZmFjdAotICAgIHRoaXMuY3VycmVudEFydGlmYWN0ID0gbnVsbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2FkZEFydGlmYWN0UmVmZXJlbmNlKG9yZy53c2kudGVzdC5yZXBvcnQuQXJ0aWZhY3RSZWZlcmVuY2UpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRBcnRpZmFjdFJlZmVyZW5jZShBcnRpZmFjdFJlZmVyZW5jZSBhcnRpZmFjdFJlZmVyZW5jZSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBBREQ6IEhvdyBzaG91bGQgdGhpcyBiZSBzYXZlZD8gIFNob3VsZCBpdCBiZSBhZGRlZCB0byB0aGUgY3VycmVudCBhcnRpZmFjdD8KLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydCNnZXRDdXJyZW50RW50cnkoKQotICAgKi8KLSAgcHVibGljIEVudHJ5IGdldEN1cnJlbnRFbnRyeSgpCi0gIHsKLSAgICAvLyBSZXR1cm4gZW50cnkKLSAgICByZXR1cm4gdGhpcy5jdXJyZW50RW50cnk7Ci0gIH0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0I2dldEN1cnJlbnRFbnRyeSgpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRDdXJyZW50RW52ZWxvcGVFbnRyeShFbnRyeSBlbnRyeSkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgCi0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I3NldEN1cnJlbnRFbnRyeShvcmcud3NpLnRlc3QucmVwb3J0LkVudHJ5KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q3VycmVudEVudHJ5KEVudHJ5IGVudHJ5KSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBTYXZlIHJlZmVyZW5jZSB0byBlbnRyeQotICAgIGVudHJ5TGlzdC5hZGQoZW50cnkpOwotCi0gICAgLy8gU2V0IGFzIGN1cnJlbnQgZW50cnkKLSAgICB0aGlzLmN1cnJlbnRFbnRyeSA9IGVudHJ5OwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBnZXRFbnRyaWVzLgotICAgKiBAcmV0dXJuIGVudHJ5IGxpc3QuCi0gICAqLwotICBwdWJsaWMgTGlzdCBnZXRFbnRyaWVzKCkKLSAgewotICAgIHJldHVybiBlbnRyeUxpc3Q7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGdldEFydGlmYWN0cy4KLSAgICogQHJldHVybiBhcnRpZmFjdHMuCi0gICAqLwotICBwdWJsaWMgTGlzdCBnZXRBcnRpZmFjdHMoKQotICB7Ci0gICAgcmV0dXJuIGFydGlmYWN0TGlzdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2VuZEN1cnJlbnRFbnRyeSgpCi0gICAqLwotICBwdWJsaWMgdm9pZCBlbmRDdXJyZW50RW50cnkoKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBSZW1vdmUgY3VycmVudCBlbnRyeQotICAgIHRoaXMuY3VycmVudEVudHJ5ID0gbnVsbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2FkZEFzc2VydGlvblJlc3VsdChvcmcud3NpLnRlc3QucmVwb3J0LkFzc2VydGlvblJlc3VsdCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEFzc2VydGlvblJlc3VsdChBc3NlcnRpb25SZXN1bHQgYXNzZXJ0aW9uUmVzdWx0KQotICB7Ci0gICAgLy8gQUREOiBOZWVkIHRvIGtlZXAganVzdCBhIHN1bW1hcnkgCi0KLSAgICAvLyBBZGQgcmVzdWx0IHRvIGN1cnJlbnQgZW50cnkKLSAgICBpZiAoY3VycmVudEVudHJ5ICE9IG51bGwpCi0gICAgewotICAgICAgY3VycmVudEVudHJ5LmFkZEFzc2VydGlvblJlc3VsdChhc3NlcnRpb25SZXN1bHQpOwotICAgIH0KLQotICAgIC8vIElmIHRoZSByZXN1bHQgd2FzIG5vdCBwYXNzZWQsIHRoZW4gc2V0IHN1bW1hcnkgZmxhZwotICAgIGlmIChhc3NlcnRpb25SZXN1bHQuZ2V0UmVzdWx0KCkuZXF1YWxzKEFzc2VydGlvblJlc3VsdC5SRVNVTFRfRkFJTEVEKSkKLSAgICB7Ci0gICAgICBhbGxQYXNzZWQgPSBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5CdWlsZFJlcG9ydCNnZXRBc3NlcnRpb25SZXN1bHQoamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25SZXN1bHQgZ2V0QXNzZXJ0aW9uUmVzdWx0KFN0cmluZyBhc3NlcnRpb25JZCkKLSAgewotICAgIEFzc2VydGlvblJlc3VsdCByZXN1bHQgPSBudWxsOwotCi0gICAgLy8gRGV0ZXJtaW5lIHdoZXJlIHRvIGdldCB0aGUgYXNzZXJ0aW9uIHJlc3VsdCBmcm9tIAotICAgIGlmICh0aGlzLnByZXJlcVR5cGUuZXF1YWxzKFBSRVJFUV9UWVBFX0VOVFJZKSkKLSAgICAgIHJlc3VsdCA9IGN1cnJlbnRFbnRyeS5nZXRBc3NlcnRpb25SZXN1bHQoYXNzZXJ0aW9uSWQpOwotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IGN1cnJlbnRFbnRyeS5nZXRFbnRyeUNvbnRhaW5lcigpLmdldEFzc2VydGlvblJlc3VsdChhc3NlcnRpb25JZCk7Ci0KLSAgICAvLyB0aGUgYXNzZXJ0aW9uIHJlc3VsdCBpcyBub3QgZm91bmQgYXQgdGhlIGN1cnJlbnQgZW50cnksIGdvaW5nIHRocm91Z2ggYWxsIHRoZSBlbnRyaWVzCi0gICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgIHsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZW50cnlMaXN0LnNpemUoKTsgaSArKykKLSAgICAgIHsKLSAgICAgICAgRW50cnkgZW50cnkgPSAoRW50cnkpIGVudHJ5TGlzdC5nZXQoaSk7Ci0gICAgICAgIGlmICgocmVzdWx0ID0gZW50cnkuZ2V0QXNzZXJ0aW9uUmVzdWx0KGFzc2VydGlvbklkKSkgIT0gbnVsbCkKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2NyZWF0ZUFzc2VydGlvblJlc3VsdCgpCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uUmVzdWx0IGNyZWF0ZUFzc2VydGlvblJlc3VsdCgpCi0gIHsKLSAgICBBc3NlcnRpb25SZXN1bHQgYXNzZXJ0aW9uUmVzdWx0ID0gbmV3IEFzc2VydGlvblJlc3VsdEltcGwoKTsKLSAgICBhc3NlcnRpb25SZXN1bHQuc2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbigKLSAgICAgIHJlcG9ydENvbnRleHQKLSAgICAgICAgLmdldEFuYWx5emVyKCkKLSAgICAgICAgLmdldEFuYWx5emVyQ29uZmlnKCkKLSAgICAgICAgLmdldEFzc2VydGlvblJlc3VsdHNPcHRpb24oKSk7Ci0gICAgcmV0dXJuIGFzc2VydGlvblJlc3VsdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2NyZWF0ZUVudHJ5KCkKLSAgICovCi0gIHB1YmxpYyBFbnRyeSBjcmVhdGVFbnRyeSgpCi0gIHsKLSAgICBFbnRyeSBlbnRyeSA9IG5ldyBFbnRyeUltcGwoKTsKLSAgICAvL2VudHJ5LnNldEFzc2VydGlvblJlc3VsdHNPcHRpb24ocmVwb3J0Q29udGV4dC5nZXRBbmFseXplcigpLmdldEFuYWx5emVyQ29uZmlnKCkuZ2V0QXNzZXJ0aW9uUmVzdWx0c09wdGlvbigpKTsKLSAgICByZXR1cm4gZW50cnk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5CdWlsZFJlcG9ydCNjcmVhdGVFbnRyeUNvbnRhaW5lcigpCi0gICAqLwotICBwdWJsaWMgRW50cnlDb250YWluZXIgY3JlYXRlRW50cnlDb250YWluZXIoKQotICB7Ci0gICAgRW50cnlDb250YWluZXIgZW50cnlDb250YWluZXIgPSBuZXcgRW50cnlDb250YWluZXJJbXBsKCk7Ci0gICAgcmV0dXJuIGVudHJ5Q29udGFpbmVyOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuQnVpbGRSZXBvcnQjY3JlYXRlQXJ0aWZhY3QoKQotICAgKi8KLSAgcHVibGljIFJlcG9ydEFydGlmYWN0IGNyZWF0ZUFydGlmYWN0KCkKLSAgewotICAgIFJlcG9ydEFydGlmYWN0IHJlcG9ydEFydGlmYWN0ID0gbmV3IFJlcG9ydEFydGlmYWN0SW1wbCgpOwotICAgIHJldHVybiByZXBvcnRBcnRpZmFjdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2NyZWF0ZUZhaWx1cmVEZXRhaWwoKQotICAgKi8KLSAgcHVibGljIEZhaWx1cmVEZXRhaWwgY3JlYXRlRmFpbHVyZURldGFpbCgpCi0gIHsKLSAgICBGYWlsdXJlRGV0YWlsIGZhaWx1cmVEZXRhaWwgPSBuZXcgRmFpbHVyZURldGFpbEltcGwoKTsKLSAgICByZXR1cm4gZmFpbHVyZURldGFpbDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydCNnZXRTdW1tYXJ5UmVzdWx0KCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3VtbWFyeVJlc3VsdCgpCi0gIHsKLSAgICByZXR1cm4gKAotICAgICAgYWxsUGFzc2VkCi0gICAgICAgID8gQXNzZXJ0aW9uUmVzdWx0LlJFU1VMVF9QQVNTRUQKLSAgICAgICAgOiBBc3NlcnRpb25SZXN1bHQuUkVTVUxUX0ZBSUxFRCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5CdWlsZFJlcG9ydCNzZXRQcmVyZXFUeXBlKGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRQcmVyZXFUeXBlKFN0cmluZyBwcmVyZXFUeXBlKQotICB7Ci0gICAgdGhpcy5wcmVyZXFUeXBlID0gcHJlcmVxVHlwZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I3RvU3RyaW5nKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgLy8gQUREOiAKLSAgICByZXR1cm4gIlJlcG9ydDogICI7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5SZXBvcnQjZ2V0U3RhcnRYTUxTdHJpbmcoamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0U3RhcnRYTUxTdHJpbmcoU3RyaW5nIG5hbWVzcGFjZU5hbWUpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgU3RyaW5nIG5zTmFtZSA9IG5hbWVzcGFjZU5hbWU7Ci0gICAgaWYgKCghbnNOYW1lLmVxdWFscygiIikgJiYgKCFuc05hbWUuZW5kc1dpdGgoIjoiKSkpKQotICAgICAgbnNOYW1lICs9ICI6IjsKLQotICAgIC8vIENyZWF0ZSByZXBvcnQgZWxlbWVudCAKLSAgICBwdy5wcmludGxuKFdTSUNvbnN0YW50cy5YTUxfREVDTCk7Ci0gICAgcHcucHJpbnRsbigKLSAgICAgIHJlcG9ydENvbnRleHQKLSAgICAgICAgLmdldEFuYWx5emVyKCkKLSAgICAgICAgLmdldEFuYWx5emVyQ29uZmlnKCkKLSAgICAgICAgLmdldEFkZFN0eWxlU2hlZXQoKQotICAgICAgICAuZ2V0U3R5bGVTaGVldFN0cmluZygpKTsKLQotICAgIC8vIEFkZCBYTUwgY29tbWVudAotICAgIFN0cmluZyBjb21tZW50OwotICAgIGlmICgoY29tbWVudCA9IFRlc3RVdGlscy5nZXRYTUxDb21tZW50KCkpICE9IG51bGwpCi0gICAgICBwdy5wcmludChjb21tZW50KTsKLQotICAgIC8vIHJlcG9ydAotICAgIHB3LnByaW50KAotICAgICAgIjwiCi0gICAgICAgICsgbnNOYW1lCi0gICAgICAgICsgRUxFTV9OQU1FCi0gICAgICAgICsgIiAiCi0gICAgICAgICsgV1NJQ29uc3RhbnRzLkFUVFJfTkFNRQotICAgICAgICArICI9XCIiCi0gICAgICAgICsgcmVwb3J0Q29udGV4dC5nZXRSZXBvcnRUaXRsZSgpCi0gICAgICAgICsgIlwiIik7Ci0gICAgcHcucHJpbnRsbigKLSAgICAgICIgICAgIgotICAgICAgICArIFdTSUNvbnN0YW50cy5BVFRSX1RJTUVTVEFNUAotICAgICAgICArICI9XCIiCi0gICAgICAgICsgVXRpbHMuZ2V0VGltZXN0YW1wKCkKLSAgICAgICAgKyAiXCIiKTsKLSAgICBwdy5wcmludGxuKCIgICAgeG1sbnM9XCIiICsgV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfUkVQT1JUICsgIlwiIik7Ci0gICAgcHcucHJpbnRsbigKLSAgICAgICIgICAgeG1sbnM6IgotICAgICAgICArIFdTSUNvbnN0YW50cy5OU19OQU1FX1dTSV9SRVBPUlQKLSAgICAgICAgKyAiPVwiIgotICAgICAgICArIFdTSUNvbnN0YW50cy5OU19VUklfV1NJX1JFUE9SVAotICAgICAgICArICJcIiIpOwotICAgIHB3LnByaW50bG4oCi0gICAgICAiICAgIHhtbG5zOiIKLSAgICAgICAgKyBXU0lDb25zdGFudHMuTlNfTkFNRV9XU0lfTE9HCi0gICAgICAgICsgIj1cIiIKLSAgICAgICAgKyBXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9MT0cKLSAgICAgICAgKyAiXCIiKTsKLSAgICAvL3B3LnByaW50bG4oIiAgICB4bWxuczoiICsgV1NJQ29uc3RhbnRzLk5TX05BTUVfV1NJX0NPTU1PTiArICI9XCIiICsgV1NJQ29uc3RhbnRzLk5TX1VSSV9XU0lfQ09NTU9OICsgIlwiIik7Ci0gICAgcHcucHJpbnRsbigKLSAgICAgICIgICAgeG1sbnM6IgotICAgICAgICArIFdTSUNvbnN0YW50cy5OU19OQU1FX1dTSV9BTkFMWVpFUl9DT05GSUcKLSAgICAgICAgKyAiPVwiIgotICAgICAgICArIFdTSUNvbnN0YW50cy5OU19VUklfV1NJX0FOQUxZWkVSX0NPTkZJRwotICAgICAgICArICJcIiIpOwotICAgIHB3LnByaW50bG4oCi0gICAgICAiICAgIHhtbG5zOiIKLSAgICAgICAgKyBXU0lDb25zdGFudHMuTlNfTkFNRV9XU0lfTU9OSVRPUl9DT05GSUcKLSAgICAgICAgKyAiPVwiIgotICAgICAgICArIFdTSUNvbnN0YW50cy5OU19VUklfV1NJX01PTklUT1JfQ09ORklHCi0gICAgICAgICsgIlwiIik7Ci0gICAgcHcucHJpbnRsbigKLSAgICAgICIgICAgeG1sbnM6IgotICAgICAgICArIFdTSUNvbnN0YW50cy5OU19OQU1FX1dTSV9BU1NFUlRJT05TCi0gICAgICAgICsgIj1cIiIKLSAgICAgICAgKyBXU0lDb25zdGFudHMuTlNfVVJJX1dTSV9BU1NFUlRJT05TCi0gICAgICAgICsgIlwiIik7Ci0gICAgcHcucHJpbnRsbigKLSAgICAgICIgICAgeG1sbnM6IgotICAgICAgICArIFdTSUNvbnN0YW50cy5OU19OQU1FX1hTSQotICAgICAgICArICI9XCIiCi0gICAgICAgICsgV1NJQ29uc3RhbnRzLk5TX1VSSV9YU0kKLSAgICAgICAgKyAiXCI+Iik7Ci0KLSAgICAvLyBBZGQgIGFuYWx5emVyIHRvb2wgaW5mbwotICAgIHB3LnByaW50KHJlcG9ydENvbnRleHQuZ2V0QW5hbHl6ZXIoKS50b1hNTFN0cmluZyhuc05hbWUpKTsKLQotICAgIC8vIFJldHVybiBYTUwgc3RyaW5nCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5SZXBvcnQjZ2V0RW5kWE1MU3RyaW5nKGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEVuZFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBTdHJpbmcgbnNOYW1lID0gbmFtZXNwYWNlTmFtZTsKLSAgICBpZiAoKCFuc05hbWUuZXF1YWxzKCIiKSAmJiAoIW5zTmFtZS5lbmRzV2l0aCgiOiIpKSkpCi0gICAgICBuc05hbWUgKz0gIjoiOwotCi0gICAgLy8gQnVpbGQgc3VtbWFyeQotICAgIHB3LnByaW50KCIgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fU1VNTUFSWSArICIgIik7Ci0gICAgcHcucHJpbnRsbihXU0lDb25zdGFudHMuQVRUUl9SRVNVTFQgKyAiPVwiIiArIGdldFN1bW1hcnlSZXN1bHQoKSArICJcIj4iKTsKLQotICAgIC8vIEFERDogIERldGFpbCBzdW1tYXJ5Ci0gICAgLyoKLSAgICBwdy5wcmludCgiICAgIDwiICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fQVJUSUZBQ1RfU1VNTUFSWSArICIgIik7Ci0gICAgcHcucHJpbnRsbihXU0lDb25zdGFudHMuQVRUUl9SRVNVTFQgKyAiPVwieHh4eFwiPiIpOwotICAgIAotICAgIHB3LnByaW50bG4oIiAgICA8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9BUlRJRkFDVF9TVU1NQVJZICsgIj4iKTsKLSAgICAqLwotCi0gICAgLy8gRW5kIGVsZW1lbnQgCi0gICAgcHcucHJpbnRsbigiICA8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9TVU1NQVJZICsgIj4iKTsKLQotICAgIC8vIEVuZCByZXBvcnQgZWxlbWVudCAKLSAgICBwdy5wcmludGxuKCI8LyIgKyBuc05hbWUgKyBFTEVNX05BTUUgKyAiPiIpOwotCi0gICAgLy8gUmV0dXJuIFhNTCBzdHJpbmcKLSAgICByZXR1cm4gc3cudG9TdHJpbmcoKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydCNnZXRFcnJvclhNTFN0cmluZyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRFcnJvclhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSwgU3RyaW5nIGVycm9yRGV0YWlsKQotICB7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLQotICAgIFN0cmluZyBuc05hbWUgPSBuYW1lc3BhY2VOYW1lOwotICAgIGlmICgoIW5zTmFtZS5lcXVhbHMoIiIpICYmICghbnNOYW1lLmVuZHNXaXRoKCI6IikpKSkKLSAgICAgIG5zTmFtZSArPSAiOiI7Ci0KLSAgICAvLyBCdWlsZCBhbmFseXplciBmYWlsdXJlCi0gICAgcHcucHJpbnRsbigiICA8IiArIG5zTmFtZSArIFdTSUNvbnN0YW50cy5FTEVNX0FOQUxZWkVSX0ZBSUxVUkUgKyAiPiIpOwotCi0gICAgLy8gQWRkIGVycm9yIGRldGFpbAotICAgIHB3LnByaW50KCIgICAgPCIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9GQUlMVVJFX0RFVEFJTCArICI+Iik7Ci0gICAgcHcucHJpbnQoWE1MVXRpbHMueG1sRXNjYXBlZFN0cmluZyhlcnJvckRldGFpbCkpOwotICAgIHB3LnByaW50bG4oIiAgICA8LyIgKyBuc05hbWUgKyBXU0lDb25zdGFudHMuRUxFTV9GQUlMVVJFX0RFVEFJTCArICI+Iik7Ci0KLSAgICAvLyBFbmQgcmVwb3J0IGVsZW1lbnQgCi0gICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgV1NJQ29uc3RhbnRzLkVMRU1fQU5BTFlaRVJfRkFJTFVSRSArICI+Iik7Ci0KLSAgICAvLyBFbmQgcmVwb3J0IGVsZW1lbnQgCi0gICAgcHcucHJpbnRsbigiPC8iICsgbnNOYW1lICsgRUxFTV9OQU1FICsgIj4iKTsKLQotICAgIC8vIFJldHVybiBYTUwgc3RyaW5nCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50RWxlbWVudCN0b1hNTFN0cmluZyhqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSBwdWJsaWMgU3RyaW5nIHRvWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgcmV0dXJuIGdldFN0YXJ0WE1MU3RyaW5nKG5hbWVzcGFjZU5hbWUpICsgZ2V0RW5kWE1MU3RyaW5nKG5hbWVzcGFjZU5hbWUpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9SZXBvcnRXcml0ZXJJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS9yZXBvcnQvaW1wbC9SZXBvcnRXcml0ZXJJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZWViMzUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvcmVwb3J0L2ltcGwvUmVwb3J0V3JpdGVySW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5pbXBsOwotCi1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLldyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5pbXBsLkRvY3VtZW50V3JpdGVySW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydFdyaXRlcjsKLQotLyoqCi0gKiBEZWZpbmVzIHRoZSBpbnRlcmZhY2UgdXNlZCB0byB3cml0ZSB0aGUgQ29uZm9ybWFuY2UgWE1MIGRvY3VtZW50cy4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgUmVwb3J0V3JpdGVySW1wbAotICBleHRlbmRzIERvY3VtZW50V3JpdGVySW1wbAotICBpbXBsZW1lbnRzIFJlcG9ydFdyaXRlcgotewotICAvKioKLSAgICogUmVwb3J0IHdyaXRlci4KLSAgICovCi0gIHB1YmxpYyBSZXBvcnRXcml0ZXJJbXBsKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIFdyaXRlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGRvY3VtZW50IHVzaW5nIHRoZSB3cml0ZXIKLSAgICogdGhhdCB3YXMgcHJldmlvdXNseSBzZXQgdXNpbmcgdGhlIHNldFdyaXRlciBtZXRob2QuCi0gICAqLwotICBwdWJsaWMgdm9pZCB3cml0ZShSZXBvcnQgcmVwb3J0KSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBJZiB3cml0ZXIgd2FzIG5vdCBzZXQgcHJldmlvdXNseSwgdGhlbiB0aHJvdyBleGNlcHRpb24KLSAgICBpZiAod3JpdGVyID09IG51bGwpCi0gICAgewotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiUmVwb3J0IHdyaXRlciBtdXN0IGJlIHNldCBiZWZvcmUgd3JpdGluZyByZXBvcnQuIik7Ci0gICAgfQotCi0gICAgLy8gV3JpdGUgcmVwb3J0Ci0gICAgd3JpdGUocmVwb3J0LCB0aGlzLndyaXRlcik7Ci0gIH0KLQotICAvKioKLSAgICogV3JpdGUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZG9jdW1lbnQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB3cml0ZShSZXBvcnQgcmVwb3J0LCBXcml0ZXIgd3JpdGVyKQotICB7Ci0gICAgLy8gQ3JlYXRlIHByaW50IHdyaXRlcgotICAgIG5ldyBQcmludFdyaXRlcih3cml0ZXIpOwotCi0gICAgLy8gQUREOiBXcml0ZSBvdXQgY29tcGxldGUgcmVwb3J0Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Rvb2xpbmZvLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS90b29saW5mby5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTMwNGM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3Rvb2xpbmZvLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0jIC8qKgotIyAgKiA8Y29weXJpZ2h0PgotIyAgKgotIyAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMyAgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgICogCi0jICAqIENvbnRyaWJ1dG9yczogCi0jICAqICAgSUJNICAgICAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgICogPC9jb3B5cmlnaHQ+Ci0jICAqLwotCi13c2kudG9vbC52ZXJzaW9uPTEuMC4wCi13c2kudG9vbC5yZWxlYXNlLmRhdGU9MjAwNS0wNC0xNQotd3NpLnRvb2wuaW1wbGVtZW50ZXI9RWNsaXBzZS5vcmcgT3JnYW5pemF0aW9uCi13c2kudG9vbC5sb2NhdGlvbj1odHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dzdApkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9BcnRpZmFjdFR5cGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvQXJ0aWZhY3RUeXBlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NjY3YjMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9BcnRpZmFjdFR5cGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuV1NJVGVzdFRvb2xzUGx1Z2luOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgLi4uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBBcnRpZmFjdFR5cGUKLXsKLSAgLyoqCi0gICAqIFRoaXMgdHlwZS4KLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIHR5cGU7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgTWFwIHR5cGVNYXA7Ci0gIHByaXZhdGUgc3RhdGljIExpc3QgbG9nZ2FibGVBcnRpZmFjdFR5cGVzOyAKLQotICAvKioKLSAgICogUmVwb3J0QXJ0aWZhY3QgdHlwZXMuCi0gICAqLwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIEVudmVsb3BlVmFsaWRhdG9yLlRZUEVfRU5WRUxPUEUgKiovIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0VOVkVMT1BFID0gImVudmVsb3BlIjsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBNZXNzYWdlVmFsaWRhdG9yLlRZUEVfTUVTU0FHRSAqKi8gCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfTUVTU0FHRSA9ICJtZXNzYWdlIjsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT04gKiovIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0RFU0NSSVBUSU9OID0gImRlc2NyaXB0aW9uIjsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBVRERJVmFsaWRhdG9yLlRZUEVfRElTQ09WRVJZICoqLyAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9ESVNDT1ZFUlkgPSAiZGlzY292ZXJ5IjsKLQotICAvKioKLSAgICogUmVwb3J0QXJ0aWZhY3QgdHlwZXMuCi0gICAqLwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEFydGlmYWN0VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBBcnRpZmFjdFR5cGUgKiovIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIEFydGlmYWN0VHlwZSBBUlRJRkFDVF9UWVBFX0VOVkVMT1BFID0KLSAgICBuZXcgQXJ0aWZhY3RUeXBlKFRZUEVfRU5WRUxPUEUpOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEFydGlmYWN0VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBBcnRpZmFjdFR5cGUgKiovIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIEFydGlmYWN0VHlwZSBBUlRJRkFDVF9UWVBFX01FU1NBR0UgPQotICAgIG5ldyBBcnRpZmFjdFR5cGUoVFlQRV9NRVNTQUdFKTsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRBcnRpZmFjdFR5cGUoU3RyaW5nIHR5cGVOYW1lKSB0byBhY2Nlc3MgQXJ0aWZhY3RUeXBlICoqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIEFydGlmYWN0VHlwZSBBUlRJRkFDVF9UWVBFX0RFU0NSSVBUSU9OID0KLSAgICBuZXcgQXJ0aWZhY3RUeXBlKFRZUEVfREVTQ1JJUFRJT04pOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEFydGlmYWN0VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBBcnRpZmFjdFR5cGUgKiovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgQXJ0aWZhY3RUeXBlIEFSVElGQUNUX1RZUEVfRElTQ09WRVJZID0KLSAgICBuZXcgQXJ0aWZhY3RUeXBlKFRZUEVfRElTQ09WRVJZKTsKLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYXJ0aWZhY3QgdHlwZS4KLSAgICovCi0gIHByaXZhdGUgQXJ0aWZhY3RUeXBlKFN0cmluZyB0eXBlKQotICB7Ci0gICAgdGhpcy50eXBlID0gdHlwZTsKLSAgfQotCi0gIC8qKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBhcnRpZmFjdCBjYW4gYmUgb3V0cHV0IHRvIHRoZSByZXBvcnQuICovCi0gIHB1YmxpYyBib29sZWFuIGlzTG9nZ2FibGUoKSAKLSAgewotICAgIGlmIChsb2dnYWJsZUFydGlmYWN0VHlwZXMgPT0gbnVsbCkgCi0gICAgewotICAgICAgU3RyaW5nIGFydGlmYWN0QXJyYXlbXSA9IFdTSVRlc3RUb29sc1BsdWdpbi5nZXRQbHVnaW4oKS5nZXRBbGxSZXBvcnRBcnRpZmFjdFR5cGVzKCk7Ci0gICAgICBsb2dnYWJsZUFydGlmYWN0VHlwZXMgPSBuZXcgQXJyYXlMaXN0KGFydGlmYWN0QXJyYXkubGVuZ3RoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJ0aWZhY3RBcnJheS5sZW5ndGg7IGkrKykKLSAgICAgICAgIGxvZ2dhYmxlQXJ0aWZhY3RUeXBlcy5hZGQoYXJ0aWZhY3RBcnJheVtpXSk7Ci0gICAgfQotICAgIHJldHVybiBsb2dnYWJsZUFydGlmYWN0VHlwZXMuY29udGFpbnModHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogSXMgYXJ0aWZhY3QgdHlwZSBlbnZlbG9wZS4KLSAgICogQHJldHVybiB0cnVlIGlmIGFydGlmYWN0IHR5cGUgZW52ZWxvcGUuCi0gICAqIEBkZXByZWNhdGVkIC0tIGFuIGFydGlmYWN0VHlwZSBpcyBubyBsb25nZXIgcmVzdHJpY3RlZCB0byBlbnZlbG9wZSwgCi0gICAqICAgICAgICAgICAgICAgIG1lc3NhZ2UsIGRlc2NyaXB0aW9uIG9yIGRpc2NvdmVyeS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzRW52ZWxvcGUoKQotICB7Ci0gICAgcmV0dXJuIHR5cGUuZXF1YWxzKFRZUEVfRU5WRUxPUEUpOwotICB9Ci0KLSAgLyoqCi0gICAqIElzIGFydGlmYWN0IHR5cGUgbWVzc2FnZXMuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBhcnRpZmFjdCB0eXBlIG1lc3NhZ2VzLgotICAgKiBAZGVwcmVjYXRlZCAtLSBhbiBhcnRpZmFjdFR5cGUgaXMgbm8gbG9uZ2VyIHJlc3RyaWN0ZWQgdG8gZW52ZWxvcGUsIAotICAgKiAgICAgICAgICAgICAgICBtZXNzYWdlLCBkZXNjcmlwdGlvbiBvciBkaXNjb3ZlcnkuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc01lc3NhZ2VzKCkKLSAgewotICAgIHJldHVybiB0eXBlLmVxdWFscyhUWVBFX01FU1NBR0UpOwotICB9Ci0KLSAgLyoqCi0gICAqIElzIGFydGlmYWN0IHR5cGUgZGVzY3JpcHRpb24uCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBhcnRpZmFjdCB0eXBlIGRlc2NyaXB0aW9uLgotICAgKiBAZGVwcmVjYXRlZCAtLSBhbiBhcnRpZmFjdFR5cGUgaXMgbm8gbG9uZ2VyIHJlc3RyaWN0ZWQgdG8gZW52ZWxvcGUsIAotICAgKiAgICAgICAgICAgICAgICBtZXNzYWdlLCBkZXNjcmlwdGlvbiBvciBkaXNjb3ZlcnkuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0Rlc2NyaXB0aW9uKCkKLSAgewotICAgIHJldHVybiB0eXBlLmVxdWFscyhUWVBFX0RFU0NSSVBUSU9OKTsKLSAgfQotCi0gIC8qKgotICAgKiBJcyBhcnRpZmFjdCB0eXBlIGRpc2NvdmVyeS4KLSAgICogQHJldHVybiB0cnVlIGlmIGFydGlmYWN0IHR5cGUgZGlzY292ZXJ5LgotICAgKiBAZGVwcmVjYXRlZCAtLSBhbiBhcnRpZmFjdFR5cGUgaXMgbm8gbG9uZ2VyIHJlc3RyaWN0ZWQgdG8gZW52ZWxvcGUsIAotICAgKiAgICAgICAgICAgICAgICBtZXNzYWdlLCBkZXNjcmlwdGlvbiBvciBkaXNjb3ZlcnkuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0Rpc2NvdmVyeSgpCi0gIHsKLSAgICByZXR1cm4gdHlwZS5lcXVhbHMoVFlQRV9ESVNDT1ZFUlkpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBhcnRpZmFjdCB0eXBlLgotICAgKiBAcmV0dXJuIGFydGlmYWN0IHR5cGUuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldFR5cGVOYW1lKCkKLSAgewotICAgIHJldHVybiB0eXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIEluc3RhbnRpYXRlcyBhIG5ldyBhcnRpZmFjdCB0eXBlIGFuZCBhZGRzIGl0IHRvIHRoZSByZWdpc3RyeSBtYXAKLSAgICogQHBhcmFtIG5hbWUgLSB0aGUgYXJ0aWZhY3QgbmFtZSAobWF0Y2hlcyBhcnRpZmFjdCB0eXBlIGF0dHJpYnV0ZSBmcm9tIFRBRCkKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3RlckFydGlmYWN0VHlwZShTdHJpbmcgbmFtZSkgewotICAgICAgaWYgKHR5cGVNYXAgPT0gbnVsbCkKLSAgICAgICAgICB0eXBlTWFwID0gbmV3IEhhc2hNYXAoKTsKLSAgICAgIHR5cGVNYXAucHV0KG5hbWUsIG5ldyBBcnRpZmFjdFR5cGUobmFtZSkpOwotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGFydGlmYWN0IHR5cGUuCi0gICAqIEBwYXJhbSB0eXBlTmFtZSBhcnRpZmFjdCB0eXBlIG5hbWUuCi0gICAqIEByZXR1cm4gbmV3bHkgY3JlYXRlZCBhcnRpZmFjdCB0eXBlLgotICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgYXJ0aWZhY3QgdHlwZSBuYW1lIGlzIGludmFsaWQgb3IgaW5hcHByb3ByaWF0ZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgQXJ0aWZhY3RUeXBlIGdldEFydGlmYWN0VHlwZShTdHJpbmcgdHlwZU5hbWUpCi0gICAgdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24KLSAgewotICAgICAgaWYgKHR5cGVNYXAgPT0gbnVsbCkgewotICAgICAgICAgIFN0cmluZyB0eXBlc1tdID0gV1NJVGVzdFRvb2xzUGx1Z2luLmdldFBsdWdpbigpLmdldEFydGlmYWN0VHlwZXMoKTsKLSAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICByZWdpc3RlckFydGlmYWN0VHlwZSh0eXBlc1tpXSk7Ci0gICAgICB9Ci0gICAgICAKLSAgICBpZiAodHlwZU1hcC5jb250YWluc0tleSh0eXBlTmFtZSkpCi0gICAgICAgIHJldHVybiAoQXJ0aWZhY3RUeXBlKSB0eXBlTWFwLmdldCh0eXBlTmFtZSk7Ci0gICAgIGVsc2UgewotICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICJDb3VsZCBub3QgY3JlYXRlIG5ldyBhcnRpZmFjdCB0eXBlIHVzaW5nIGludmFsaWQgdHlwZSBuYW1lOiAiCi0gICAgICAgICAgICAgICAgICsgdHlwZU5hbWUgKyAiLiIpOwotICAgICB9Ci0gIH0KLSAgCi0gICAgLyoqCi0gICAqIENyZWF0ZSBhcnRpZmFjdCB0eXBlLgotICAgKiBAcGFyYW0gdHlwZU5hbWUgYXJ0aWZhY3QgdHlwZSBuYW1lLgotICAgKiBAcmV0dXJuIG5ld2x5IGNyZWF0ZWQgYXJ0aWZhY3QgdHlwZS4KLSAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIGFydGlmYWN0IHR5cGUgbmFtZSBpcyBpbnZhbGlkIG9yIGluYXBwcm9wcmlhdGUuCi0gICAqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRBcnRpZmFjdFR5cGUoU3RyaW5nIHR5cGVOYW1lKQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBBcnRpZmFjdFR5cGUgbmV3QXJ0aWZhY3RUeXBlKFN0cmluZyB0eXBlTmFtZSkKLSAgICB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbgotICB7Ci0gICAgQXJ0aWZhY3RUeXBlIGFydGlmYWN0VHlwZSA9IG51bGw7Ci0KLSAgICBpZiAodHlwZU5hbWUuZXF1YWxzKFRZUEVfREVTQ1JJUFRJT04pKQotICAgIHsKLSAgICAgIGFydGlmYWN0VHlwZSA9IEFSVElGQUNUX1RZUEVfREVTQ1JJUFRJT047Ci0gICAgfQotCi0gICAgZWxzZSBpZiAodHlwZU5hbWUuZXF1YWxzKFRZUEVfTUVTU0FHRSkpCi0gICAgewotICAgICAgYXJ0aWZhY3RUeXBlID0gQVJUSUZBQ1RfVFlQRV9NRVNTQUdFOwotICAgIH0KLQotICAgIGVsc2UgaWYgKHR5cGVOYW1lLmVxdWFscyhUWVBFX0VOVkVMT1BFKSkKLSAgICB7Ci0gICAgICBhcnRpZmFjdFR5cGUgPSBBUlRJRkFDVF9UWVBFX0VOVkVMT1BFOwotICAgIH0KLQotICAgIGVsc2UgaWYgKHR5cGVOYW1lLmVxdWFscyhUWVBFX0RJU0NPVkVSWSkpCi0gICAgewotICAgICAgYXJ0aWZhY3RUeXBlID0gQVJUSUZBQ1RfVFlQRV9ESVNDT1ZFUlk7Ci0gICAgfQotCi0gICAgZWxzZQotICAgIHsKLSAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAotICAgICAgICAiQ291bGQgbm90IGNyZWF0ZSBuZXcgYXJ0aWZhY3QgdHlwZSB1c2luZyBpbnZhbGlkIHR5cGUgbmFtZTogIgotICAgICAgICAgICsgdHlwZU5hbWUKLSAgICAgICAgICArICIuIik7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFydGlmYWN0VHlwZTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvQmFzaWNSdWxlcy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9CYXNpY1J1bGVzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMzJiMGUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9CYXNpY1J1bGVzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWw7Ci0KLS8qKgotICogVGhpcyBjbGFzcyB2YWxpZGF0ZXMgYmFzaWMgY29uc3RydWN0cyBvZiBSRkMgMjYxNi4KLSAqIAotICogQGF1dGhvciBWb2xvZGluCi0gKi8KLXB1YmxpYyBjbGFzcyBCYXNpY1J1bGVzCi17Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIENSID0gMTM7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgY2hhciBMRiA9IDEwOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGNoYXIgU1AgPSAzMjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIEhUID0gOTsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIERRID0gMzQ7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENSTEYgPSAiIiArIENSICsgTEY7Ci0KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyW10gU0VQQVJBVE9SUyA9Ci0gICAgewotICAgICAgJygnLAotICAgICAgJyknLAotICAgICAgJzwnLAotICAgICAgJz4nLAotICAgICAgJ0AnLAotICAgICAgJywnLAotICAgICAgJzsnLAotICAgICAgJzonLAotICAgICAgJ1xcJywKLSAgICAgICdcIicsCi0gICAgICAnLycsCi0gICAgICAnWycsCi0gICAgICAnXScsCi0gICAgICAnPycsCi0gICAgICAnPScsCi0gICAgICAneycsCi0gICAgICAnfScsCi0gICAgICBTUCwKLSAgICAgIEhUIH07Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIHJ1bGUuCi0gICAqIAkJT0NURVQgPSAmbHQ7YW55IDgtYml0IHNlcXVlbmNlIG9mIGRhdGEmZ3Q7Ci0gICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIuCi0gICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGNoIGlzIGNvbmZvcm0gdG8gcnVsZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzT0NURVQoY2hhciBjaCkKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIHJ1bGU6Ci0gICAqIAkJQ0hBUiA9ICZsdDthbnkgVVMtQVNDSUkgY2hhcmFjdGVyIChvY3RldHMgMCAtIDEyNykmZ3Q7LgotICAgKiBAcGFyYW0gY2ggY2hhcmFjdGVyLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBjaCBpcyBjb25mb3JtIHRvIHJ1bGUsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0NIQVIoY2hhciBjaCkKLSAgewotICAgIHJldHVybiAoY2ggPj0gMCAmJiBjaCA8PSAxMjcpID8gdHJ1ZSA6IGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIHJ1bGU6Ci0gICAqIAkJVVBBTFBIQSA9ICZsdDthbnkgVVMtQVNDSUkgdXBwZXJjYXNlIGxldHRlciAiQSIuLiJaIiZndDsuCi0gICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIuCi0gICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGNoIGlzIGNvbmZvcm0gdG8gcnVsZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzVVBBTFBIQShjaGFyIGNoKQotICB7Ci0gICAgcmV0dXJuIChjaCA+PSAnQScgJiYgY2ggPD0gJ1onKSA/IHRydWUgOiBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVja2luZyBydWxlOgotICAgKiAJCUxPQUxQSEEgPSAmbHQ7YW55IFVTLUFTQ0lJIGxvd2VyY2FzZSBsZXR0ZXIgImEiLi4ieiImZ3Q7LgotICAgKiBAcGFyYW0gY2ggY2hhcmFjdGVyLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBjaCBpcyBjb25mb3JtIHRvIHJ1bGUsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xPQUxQSEEoY2hhciBjaCkKLSAgewotICAgIHJldHVybiAoY2ggPj0gJ2EnICYmIGNoIDw9ICd6JykgPyB0cnVlIDogZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2tpbmcgcnVsZToKLSAgICogCQlBTFBIQSA9IFVQQUxQSEEgfCBMT0FMUEhBLgotICAgKiBAcGFyYW0gY2ggY2hhcmFjdGVyLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBjaCBpcyBjb25mb3JtIHRvIHJ1bGUsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0FMUEhBKGNoYXIgY2gpCi0gIHsKLSAgICByZXR1cm4gKGlzTE9BTFBIQShjaCkgfHwgaXNVUEFMUEhBKGNoKSkgPyB0cnVlIDogZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2tpbmcgcnVsZToKLSAgICogCQlESUdJVCA9ICZsdDthbnkgVVMtQVNDSUkgZGlnaXQgIjAiLi4iOSImZ3Q7LgotICAgKiBAcGFyYW0gY2ggY2hhcmFjdGVyLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBjaCBpcyBjb25mb3JtIHRvIHJ1bGUsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0RJR0lUKGNoYXIgY2gpCi0gIHsKLSAgICByZXR1cm4gKGNoID49ICcwJyAmJiBjaCA8PSAnOScpID8gdHJ1ZSA6IGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIHJ1bGU6Ci0gICAqIAkJQ1RMID0gJmx0O2FueSBVUy1BU0NJSSBjb250cm9sIGNoYXJhY3RlciAob2N0ZXRzIDAgLSAzMSkgYW5kIERFTCAoMTI3KSZndDsuCi0gICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIuCi0gICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGNoIGlzIGNvbmZvcm0gdG8gcnVsZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzQ1RMKGNoYXIgY2gpCi0gIHsKLSAgICByZXR1cm4gKChjaCA+PSAwICYmIGNoIDw9IDMxKSB8fCBjaCA9PSAxMjcpID8gdHJ1ZSA6IGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIHJ1bGU6Ci0gICAqIAkJQ1IgPSAmbHQ7VVMtQVNDSUkgQ1IsIGNhcnJpYWdlIHJldHVybiAoMTMpJmd0Oy4KLSAgICogQHBhcmFtIGNoIGNoYXJhY3Rlci4KLSAgICogQHJldHVybiBib29sZWFuIHRydWUgaWYgY2ggaXMgY29uZm9ybSB0byBydWxlLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNDUihjaGFyIGNoKQotICB7Ci0gICAgcmV0dXJuIChjaCA9PSBDUikgPyB0cnVlIDogZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2tpbmcgcnVsZToKLSAgICogCQlMRiA9ICZsdDtVUy1BU0NJSSBMRiwgbGluZWZlZWQgKDEwKSZndDsuCi0gICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIKLSAgICogQHJldHVybiBib29sZWFuIHRydWUgaWYgY2ggaXMgY29uZm9ybSB0byBydWxlLCBmYWxzZSBvdGhlcndpc2UKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xGKGNoYXIgY2gpCi0gIHsKLSAgICByZXR1cm4gKGNoID09IExGKSA/IHRydWUgOiBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVja2luZyBydWxlOgotICAgKiAJCVNQID0gJmx0O1VTLUFTQ0lJIFNQLCBzcGFjZSAoMzIpJmd0Oy4KLSAgICogQHBhcmFtIGNoIGNoYXJhY3Rlci4KLSAgICogQHJldHVybiBib29sZWFuIHRydWUgaWYgY2ggaXMgY29uZm9ybSB0byBydWxlLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTUChjaGFyIGNoKQotICB7Ci0gICAgcmV0dXJuIChjaCA9PSBTUCkgPyB0cnVlIDogZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2tpbmcgcnVsZToKLSAgICogCQlIVCA9ICZsdDtVUy1BU0NJSSBIVCwgaG9yaXpvbnRhbC10YWIgKDkpJmd0Oy4KLSAgICogQHBhcmFtIGNoIGNoYXJhY3RlcgotICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBjaCBpcyBjb25mb3JtIHRvIHJ1bGUsIGZhbHNlIG90aGVyd2lzZQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzSFQoY2hhciBjaCkKLSAgewotICAgIHJldHVybiAoY2ggPT0gSFQpID8gdHJ1ZSA6IGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIHJ1bGU6Ci0gICAqIAkJJmx0OyImZ3Q7ID0gJmx0O1VTLUFTQ0lJIGRvdWJsZS1xdW90ZSBtYXJrICgzNCkmZ3Q7LgotICAgKiBAcGFyYW0gY2ggY2hhcmFjdGVyLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBjaCBpcyBjb25mb3JtIHRvIHJ1bGUsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0RvdWJsZVF1b3RlKGNoYXIgY2gpCi0gIHsKLSAgICByZXR1cm4gKGNoID09IERRKSA/IHRydWUgOiBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVja2luZyBydWxlOgotICAgKiAJCUNSTEYgPSBDUiBMRi4KLSAgICogQHBhcmFtIHN0ciBzdHJpbmcuCi0gICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGNoIGlzIGNvbmZvcm0gdG8gcnVsZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzQ1JMRihTdHJpbmcgc3RyKQotICB7Ci0gICAgcmV0dXJuIENSTEYuZXF1YWxzKHN0cik7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2tpbmcgcnVsZToKLSAgICogCQlMV1MgPSBbQ1JMRl0gMSooIFNQIHwgSFQgKS4KLSAgICogQHBhcmFtIHN0ciBzdHJpbmcuCi0gICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIHN0ciBpcyBjb25mb3JtIHRvIHJ1bGUsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xXUyhTdHJpbmcgc3RyKQotICB7Ci0KLSAgICBpbnQgaW5kZXggPSBnZXRMYXN0SW5kZXhMV1Moc3RyLCAwKTsKLSAgICBpZiAoaW5kZXggPT0gLTEgfHwgaW5kZXggIT0gc3RyLmxlbmd0aCgpKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyBsYXN0IGluZGV4IG9mIHRoZSBMV1Mgc3RyaW5nLgotICAgKiBAcGFyYW0gc3RyIHN0cmluZy4KLSAgICogQHBhcmFtIHN0YXJ0SW5kZXggc3RhcnQgaW5kZXguCi0gICAqIEByZXR1cm4gaW50IGFuIGluZGV4IG9mIHRoZSBmaXJzdCBzeW1ib2wgd2hpY2ggaXNuJ3QgTFdTLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBpbnQgZ2V0TGFzdEluZGV4TFdTKFN0cmluZyBzdHIsIGludCBzdGFydEluZGV4KQotICB7Ci0gICAgaW50IGluZGV4ID0gc3RyLmluZGV4T2YoQ1JMRiwgc3RhcnRJbmRleCk7Ci0gICAgaWYgKGluZGV4ID09IC0xKQotICAgICAgaW5kZXggPSBzdGFydEluZGV4OwotICAgIGVsc2UgaWYgKGluZGV4ID09IHN0YXJ0SW5kZXgpCi0gICAgICBpbmRleCArPSBDUkxGLmxlbmd0aCgpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAtMTsKLQotICAgIGlmICghaXNTUChzdHIuY2hhckF0KGluZGV4KSkgJiYgaXNIVChzdHIuY2hhckF0KGluZGV4KSkpCi0gICAgICByZXR1cm4gLTE7Ci0KLSAgICBpbmRleCsrOwotICAgIGZvciAoOyBpbmRleCA8IHN0ci5sZW5ndGgoKTsgaW5kZXgrKykKLSAgICAgIGlmICghaXNTUChzdHIuY2hhckF0KGluZGV4KSkgJiYgaXNIVChzdHIuY2hhckF0KGluZGV4KSkpCi0gICAgICAgIHJldHVybiBpbmRleDsKLSAgICByZXR1cm4gaW5kZXg7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyBsYXN0IGluZGV4IG9mIHRoZSBURVhUIHN0cmluZy4KLSAgICogVEVYVCA9ICZsdDthbnkgT0NURVQgZXhjZXB0IENUTHMsIGJ1dCBpbmNsdWRpbmcgTFdTJmd0OwotICAgKiBAcGFyYW0gc3RyIHN0cmluZy4KLSAgICogQHBhcmFtIHN0YXJ0SW5kZXggc3RhcnQgaW5kZXguCi0gICAqIEByZXR1cm4gaW50IGFuIGluZGV4IG9mIHRoZSBmaXJzdCBzeW1ib2wgd2hpY2ggaXNuJ3QgVEVYVC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IGdldExhc3RURVhUKFN0cmluZyBzdHIsIGludCBzdGFydEluZGV4KQotICB7Ci0gICAgaW50IGluZGV4OwotICAgIGZvciAoaW5kZXggPSBzdGFydEluZGV4OyBpbmRleCA8IHN0ci5sZW5ndGgoKTsgaW5kZXgrKykKLSAgICB7Ci0gICAgICBpZiAoIWlzT0NURVQoc3RyLmNoYXJBdChpbmRleCkpKQotICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgICBpZiAoaXNDVEwoc3RyLmNoYXJBdChpbmRleCkpKQotICAgICAgewotICAgICAgICBpbnQgbGFzdExXUyA9IGdldExhc3RJbmRleExXUyhzdHIsIGluZGV4KTsKLSAgICAgICAgaWYgKGxhc3RMV1MgPT0gLTEpCi0gICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgICAgICBpbmRleCA9IGxhc3RMV1MgLSAxOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gaW5kZXg7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2tpbmcgcnVsZToKLSAgICogCQlIRVggPSAiQSIgfCAiQiIgfCAiQyIgfCAiRCIgfCAiRSIgfCAiRiIgfCAiYSIgfCAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiZiIgfCBESUdJVC4KLSAgICogQHBhcmFtIGNoIGNoYXJhY3Rlci4KLSAgICogQHJldHVybiBib29sZWFuIHRydWUgaWYgY2ggaXMgY29uZm9ybSB0byBydWxlLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNIRVgoY2hhciBjaCkKLSAgewotICAgIHJldHVybiAoCi0gICAgICAoY2ggPj0gJ0EnICYmIGNoIDw9ICdGJykgfHwgKGNoID49ICdhJyAmJiBjaCA8PSAnZicpIHx8IGlzRElHSVQoY2gpKQotICAgICAgPyB0cnVlCi0gICAgICA6IGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIHJ1bGU6Ci0gICAqIAkJdG9rZW4gPSAxKiZsdDthbnkgQ0hBUiBleGNlcHQgQ1RMcyBvciBzZXBhcmF0b3JzJmd0Oy4KLSAgICogQHBhcmFtIHN0ciBzdHJpbmcuCi0gICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIHN0ciBpcyBjb25mb3JtIHRvIHJ1bGUsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1Rva2VuKFN0cmluZyBzdHIpCi0gIHsKLSAgICBpZiAoc3RyLmxlbmd0aCgpID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgc3RyLmxlbmd0aCgpOyBpbmRleCsrKQotICAgIHsKLSAgICAgIGNoYXIgY2ggPSBzdHIuY2hhckF0KGluZGV4KTsKLSAgICAgIGlmICghaXNDSEFSKGNoKSB8fCBpc1NFUEFSQVRPUihjaCkgfHwgaXNDVEwoY2gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXRzIGxhc3QgaW5kZXggb2YgdGhlICJ0b2tlbiIgc3RyaW5nLgotICAgKiBAcGFyYW0gc3RyIHN0cmluZy4KLSAgICogQHBhcmFtIHN0YXJ0SW5kZXggc3RhcnQgaW5kZXguCi0gICAqIEByZXR1cm4gaW50IGFuIGluZGV4IG9mIHRoZSBmaXJzdCBzeW1ib2wgd2hpY2ggaXNuJ3QgInRva2VuIi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IGdldExhc3RUb2tlbihTdHJpbmcgc3RyLCBpbnQgc3RhcnRJbmRleCkKLSAgewotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgZm9yICg7IGluZGV4IDwgc3RyLmxlbmd0aCgpOyBpbmRleCsrKQotICAgIHsKLSAgICAgIGNoYXIgY2ggPSBzdHIuY2hhckF0KGluZGV4KTsKLSAgICAgIGlmICghaXNDSEFSKGNoKSB8fCBpc1NFUEFSQVRPUihjaCkgfHwgaXNDVEwoY2gpKQotICAgICAgICByZXR1cm4gaW5kZXg7Ci0KLSAgICB9Ci0gICAgcmV0dXJuIGluZGV4OwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIHJ1bGU6Ci0gICAqIAkJc2VwYXJhdG9ycyA9ICIoIiB8ICIpIiB8ICI8IiB8ICI+IiB8ICJAIgotICAgICAqICAgICAgICAgICAgICAgICB8ICIsIiB8ICI7IiB8ICI6IiB8ICJcIiB8IDwiPgotICAgICAqICAgICAgICAgICAgICAgICB8ICIvIiB8ICJbIiB8ICJdIiB8ICI/IiB8ICI9IgotICAgICAqICAgICAgICAgICAgICAgICB8ICJ7IiB8ICJ9IiB8IFNQIHwgSFQuCi0gICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIuCi0gICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGNoIGlzIGNvbmZvcm0gdG8gcnVsZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU0VQQVJBVE9SKGNoYXIgY2gpCi0gIHsKLSAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgU0VQQVJBVE9SUy5sZW5ndGg7IGluZGV4KyspCi0gICAgewotICAgICAgaWYgKGNoID09IFNFUEFSQVRPUlNbaW5kZXhdKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBpbmRleCBvZiB0aGUgImNvbW1lbnQiIHN0cmluZy4KLSAgICogCQljb21tZW50ID0gIigiICooIGN0ZXh0IHwgcXVvdGVkLXBhaXIgfCBjb21tZW50ICkgIikiLgotICAgKiBAcGFyYW0gc3RyIHN0cmluZy4KLSAgICogQHBhcmFtIHN0YXJ0SW5kZXggc3RhcnQgaW5kZXguCi0gICAqIEByZXR1cm4gaW50IGFuIGluZGV4IG9mIHRoZSBmaXJzdCBzeW1ib2wgd2hpY2ggaXNuJ3QgImNvbW1lbnQiLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBpbnQgZ2V0TGFzdENvbW1lbnQoU3RyaW5nIHN0ciwgaW50IHN0YXJ0SW5kZXgpCi0gIHsKLQotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgaWYgKHN0ci5sZW5ndGgoKSA8PSBzdGFydEluZGV4KQotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0gICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpICE9ICcoJykKLSAgICAgIHJldHVybiBzdGFydEluZGV4OwotCi0gICAgYm9vbGVhbiBiRXhpdCA9IGZhbHNlOwotICAgIGJvb2xlYW4gYlF1b3RlZFBhaXIgPSBmYWxzZTsKLSAgICBpbnQgaWR4ID0gc3RhcnRJbmRleCArIDE7Ci0gICAgd2hpbGUgKGJFeGl0ID09IGZhbHNlKQotICAgIHsKLSAgICAgIHdoaWxlIChiUXVvdGVkUGFpciA9PSBmYWxzZSkKLSAgICAgIHsKLSAgICAgICAgaWR4ID0gZ2V0TGFzdEN0ZXh0KHN0ciwgaWR4KTsKLSAgICAgICAgaWYgKGlkeCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICAgICAgcmV0dXJuIGlkeDsKLSAgICAgICAgaWYgKCFpc1F1b3RlZFBhaXIoc3RyLCBpZHggLSAxKSkKLSAgICAgICAgICBiUXVvdGVkUGFpciA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBpZHgrKzsKLSAgICAgIH0KLSAgICAgIGlmIChzdHIuY2hhckF0KGlkeCkgPT0gJygnKQotICAgICAgewotICAgICAgICBnZXRMYXN0Q29tbWVudChzdHIsIGlkeCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChzdHIuY2hhckF0KGlkeCkgPT0gJyknKQotICAgICAgewotICAgICAgICByZXR1cm4gaWR4ICsgMTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gaWR4OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBpbmRleCBvZiB0aGUgImN0ZXh0IiBzdHJpbmcuCi0gICAqIAkJY3RleHQgPSAmbHQ7YW55IFRFWFQgZXhjbHVkaW5nICIoIiBhbmQgIikiJmd0OwotICAgKiBAcGFyYW0gc3RyIHN0cmluZy4KLSAgICogQHBhcmFtIHN0YXJ0SW5kZXggc3RhcnQgaW5kZXguCi0gICAqIEByZXR1cm4gaW50IGFuIGluZGV4IG9mIHRoZSBmaXJzdCBzeW1ib2wgd2hpY2ggaXNuJ3QgImN0ZXh0Ii4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGludCBnZXRMYXN0Q3RleHQoU3RyaW5nIHN0ciwgaW50IHN0YXJ0SW5kZXgpCi0gIHsKLSAgICBpbnQgaWR4ID0gZ2V0TGFzdFRFWFQoc3RyLCBzdGFydEluZGV4KTsKLSAgICBpbnQgaUJyYWNrZXQgPSBzdGFydEluZGV4OwotICAgIGZvciAoOyBpQnJhY2tldCA8IGlkeDsgaUJyYWNrZXQrKykKLSAgICB7Ci0gICAgICBpZiAoc3RyLmNoYXJBdChpQnJhY2tldCkgPT0gJygnIHx8IHN0ci5jaGFyQXQoaUJyYWNrZXQpID09ICcpJykKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChpQnJhY2tldCA8IGlkeCkKLSAgICAgIGlkeCA9IGlCcmFja2V0OwotICAgIHJldHVybiBpZHg7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyBsYXN0IGluZGV4IG9mIHRoZSAicWR0ZXh0IiBzdHJpbmcuCi0gICAqIAkJcWR0ZXh0ID0gJmx0O2FueSBURVhUIGV4Y2VwdCAmbHQ7IiZndDsmZ3Q7Ci0gICAqIEBwYXJhbSBzdHIgc3RyaW5nLgotICAgKiBAcGFyYW0gc3RhcnRJbmRleCBzdGFydCBpbmRleC4KLSAgICogQHJldHVybiBpbnQgYW4gaW5kZXggb2YgdGhlIGZpcnN0IHN5bWJvbCB3aGljaCBpc24ndCAicWR0ZXh0Ii4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGludCBnZXRMYXN0UWR0ZXh0KFN0cmluZyBzdHIsIGludCBzdGFydEluZGV4KQotICB7Ci0gICAgaW50IGlkeCA9IGdldExhc3RURVhUKHN0ciwgc3RhcnRJbmRleCk7Ci0gICAgaW50IGlCcmFja2V0ID0gc3RhcnRJbmRleDsKLSAgICBmb3IgKDsgaUJyYWNrZXQgPCBpZHg7IGlCcmFja2V0KyspCi0gICAgewotICAgICAgaWYgKHN0ci5jaGFyQXQoaUJyYWNrZXQpID09ICdcIicpCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoaUJyYWNrZXQgPCBpZHgpCi0gICAgICBpZHggPSBpQnJhY2tldDsKLSAgICByZXR1cm4gaWR4OwotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNraW5nIHJ1bGU6Ci0gICAqIAkJcXVvdGVkLXBhaXIgPSAiXCIgQ0hBUi4KLSAgICogQHBhcmFtIHN0ciBzdHJpbmcuCi0gICAqIEBwYXJhbSBzdGFydEluZGV4IHN0YXJ0IGluZGV4LgotICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBzdHIgaXMgY29uZm9ybSB0byBydWxlLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNRdW90ZWRQYWlyKFN0cmluZyBzdHIsIGludCBzdGFydEluZGV4KQotICB7Ci0gICAgaWYgKHN0ci5sZW5ndGgoKSA+PSBzdGFydEluZGV4ICsgMgotICAgICAgJiYgc3RyLmNoYXJBdChzdGFydEluZGV4KSA9PSAnXFwnCi0gICAgICAmJiBpc0NIQVIoc3RyLmNoYXJBdChzdGFydEluZGV4ICsgMSkpKQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBpbmRleCBvZiB0aGUgInF1b3RlZC1zdHJpbmciIHN0cmluZy4KLSAgICogCQlxdW90ZWQtc3RyaW5nICA9ICggJmx0OyImZ3Q7ICoocWR0ZXh0IHwgcXVvdGVkLXBhaXIgKSAmbHQ7IiZndDsgKQotICAgKiBAcGFyYW0gc3RyIHN0cmluZy4KLSAgICogQHBhcmFtIHN0YXJ0SW5kZXggc3RhcnQgaW5kZXguCi0gICAqIEByZXR1cm4gaW50IGFuIGluZGV4IG9mIHRoZSBmaXJzdCBzeW1ib2wgd2hpY2ggaXNuJ3QgInF1b3RlZC1zdHJpbmciLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBpbnQgZ2V0TGFzdFF1b3RlZFN0cmluZyhTdHJpbmcgc3RyLCBpbnQgc3RhcnRJbmRleCkKLSAgewotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7Ci0KLSAgICAvLyBpZiBlbmQgaWYgdGhlIHN0cmluZwotICAgIGlmIChzdGFydEluZGV4ID09IHN0ci5sZW5ndGgoKSkKLSAgICAgIHJldHVybiBzdGFydEluZGV4OwotICAgIC8vIGlmIHRoZSBiZWdpbiBpcyBub3QgJyInCi0gICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpICE9IERRKQotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICBpbmRleCsrOwotICAgIHdoaWxlICh0cnVlKQotICAgIHsKLSAgICAgIGluZGV4ID0gZ2V0TGFzdFFkdGV4dChzdHIsIGluZGV4KTsKLSAgICAgIGlmIChpbmRleCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotICAgICAgaWYgKGlzUXVvdGVkUGFpcihzdHIsIGluZGV4IC0gMSkpCi0gICAgICB7Ci0gICAgICAgIGluZGV4Kys7Ci0gICAgICAgIGlmIChpbmRleCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAvLyBpZiB0aGUgZW5kIGlzIG5vdCAnIicKLSAgICBpZiAoc3RyLmNoYXJBdChpbmRleCkgIT0gRFEpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIGluZGV4Kys7Ci0gICAgcmV0dXJuIGluZGV4OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL0VudHJ5VHlwZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9FbnRyeVR5cGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIxYTM2Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL0VudHJ5VHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjk2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLlRyZWVNYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuV1NJVGVzdFRvb2xzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5wcm9maWxlLnZhbGlkYXRvci5CYXNlVmFsaWRhdG9yOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgLi4uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBFbnRyeVR5cGUKLXsKLSAgLyoqCi0gICAqIFJlcG9ydEFydGlmYWN0IHR5cGUuCi0gICAqLwotICBwcml2YXRlIEFydGlmYWN0VHlwZSBhcnRpZmFjdFR5cGU7Ci0KLSAgLyoqCi0gICAqIFRoaXMgdHlwZS4KLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIHR5cGVOYW1lOwotCi0gIC8qKgotICAgKiBFbnRyeSB0eXBlcyBhY2Nlc3NpYmxlIGJ5IHR5cGUgbmFtZS4KLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgVHJlZU1hcCBlbnRyeVR5cGVNYXA7Ci0KLSAgLyoqCi0gICAqIEVudHJ5IHR5cGUgbmFtZXMgYWNjZXNzaWJsZSBieSBhcnRpZmFjdC4KLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgVHJlZU1hcCBlbnRyeVR5cGVOYW1lTWFwID0gbmV3IFRyZWVNYXAoKTsKLQotICAvKioKLSAgICogRW52ZWxvcGUgZW50cnkgdHlwZXMuCi0gICAqLwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIEVudmVsb3BlVmFsaWRhdG9yLlRZUEVfRU5WRUxPUEVfUkVRVUVTVCAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0VOVkVMT1BFX1JFUVVFU1QgPSAicmVxdWVzdEVudmVsb3BlIjsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBFbnZlbG9wZVZhbGlkYXRvci5UWVBFX0VOVkVMT1BFX1JFU1BPTlNFICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfRU5WRUxPUEVfUkVTUE9OU0UgPSAicmVzcG9uc2VFbnZlbG9wZSI7Ci0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgRW52ZWxvcGVWYWxpZGF0b3IuVFlQRV9FTlZFTE9QRV9BTllUICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfRU5WRUxPUEVfQU5ZID0gImFueUVudmVsb3BlIjsKLQotICAvKioKLSAgICogTWVzc2FnZSBlbnRyeSB0eXBlcy4KLSAgICovCi0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgTWVzc2FnZVZhbGlkYXRvci5UWVBFX01FU1NBR0VfUkVRVUVTVCAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX01FU1NBR0VfUkVRVUVTVCA9ICJyZXF1ZXN0TWVzc2FnZSI7Ci0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgTWVzc2FnZVZhbGlkYXRvci5UWVBFX01FU1NBR0VfUkVTUE9OU0UgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9NRVNTQUdFX1JFU1BPTlNFID0gInJlc3BvbnNlTWVzc2FnZSI7Ci0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgTWVzc2FnZVZhbGlkYXRvci5UWVBFX01FU1NBR0VfQU5ZICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfTUVTU0FHRV9BTlkgPSAiYW55TWVzc2FnZSI7Ci0KLSAgLyoqCi0gICAqIE1JTUUgZW50cnkgdHlwZXMuCi0gICAqLwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIE1lc3NhZ2VWYWxpZGF0b3IuVFlQRV9NSU1FX1BBUlQgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9NSU1FX1BBUlQgPSAicGFydCI7Ci0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgTWVzc2FnZVZhbGlkYXRvci5UWVBFX01JTUVfUk9PVF9QQVJUICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfTUlNRV9ST09UX1BBUlQgPSAicm9vdC1wYXJ0IjsKLQotICAvKioKLSAgICogRGVzY3JpcHRpb24gZW50cnkgdHlwZXMuCi0gICAqLwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIFdTRExWYWxpZGF0b3IuVFlQRV9ERVNDUklQVElPTl9ERUZJTklUSU9OUyAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0RFU0NSSVBUSU9OX0RFRklOSVRJT05TID0gImRlZmluaXRpb25zIjsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fSU1QT1JUICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fSU1QT1JUID0gImltcG9ydCI7Ci0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgV1NETFZhbGlkYXRvci5UWVBFX0RFU0NSSVBUSU9OX1RZUEVTICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fVFlQRVMgPSAidHlwZXMiOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIFdTRExWYWxpZGF0b3IuVFlQRV9ERVNDUklQVElPTl9NRVNTQUdFICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fTUVTU0FHRSA9ICJtZXNzYWdlIjsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fT1BFUkFUSU9OICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fT1BFUkFUSU9OID0gIm9wZXJhdGlvbiI7Ci0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgV1NETFZhbGlkYXRvci5UWVBFX0RFU0NSSVBUSU9OX1BPUlRUWVBFICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fUE9SVFRZUEUgPSAicG9ydFR5cGUiOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIFdTRExWYWxpZGF0b3IuVFlQRV9ERVNDUklQVElPTl9CSU5ESU5HICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfREVTQ1JJUFRJT05fQklORElORyA9ICJiaW5kaW5nIjsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBXU0RMVmFsaWRhdG9yLlRZUEVfREVTQ1JJUFRJT05fUE9SVCAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0RFU0NSSVBUSU9OX1BPUlQgPSAicG9ydCI7Ci0KLSAgLyoqCi0gICAqIERpc2NvdmVyeSBlbnRyeSB0eXBlcy4KLSAgICovCi0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgVURESVZhbGlkYXRvci5UWVBFX0RJU0NPVkVSWV9CSU5ESU5HVEVNUExBVEUgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9ESVNDT1ZFUllfQklORElOR1RFTVBMQVRFID0gImJpbmRpbmdUZW1wbGF0ZSI7Ci0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgVURESVZhbGlkYXRvci5UWVBFX0RJU0NPVkVSWV9UTU9ERUwgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9ESVNDT1ZFUllfVE1PREVMID0gInRNb2RlbCI7Ci0KLSAgLyoqCi0gICAqIEVudmVsb3BlIGVudHJ5IHR5cGVzLgotICAgKi8KLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRFbnRyeVR5cGUoU3RyaW5nIHR5cGVOYW1lKSB0byBhY2Nlc3MgRW50cnlUeXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudHJ5VHlwZSBFTlRSWV9UWVBFX1JFUVVFU1RFTlYgPSBnZXRFbnRyeVR5cGUoVFlQRV9FTlZFTE9QRV9SRVFVRVNUKTsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRFbnRyeVR5cGUoU3RyaW5nIHR5cGVOYW1lKSB0byBhY2Nlc3MgRW50cnlUeXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudHJ5VHlwZSBFTlRSWV9UWVBFX1JFU1BPTlNFRU5WID0gZ2V0RW50cnlUeXBlKFRZUEVfRU5WRUxPUEVfUkVTUE9OU0UpOwotCi0gIC8qKgotICAgKiBNZXNzYWdlIGVudHJ5IHR5cGVzLgotICAgKi8KLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRFbnRyeVR5cGUoU3RyaW5nIHR5cGVOYW1lKSB0byBhY2Nlc3MgRW50cnlUeXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudHJ5VHlwZSBFTlRSWV9UWVBFX1JFUVVFU1QgPSBnZXRFbnRyeVR5cGUoVFlQRV9NRVNTQUdFX1JFUVVFU1QpOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEVudHJ5VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBFbnRyeVR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgRW50cnlUeXBlIEVOVFJZX1RZUEVfUkVTUE9OU0UgPSBnZXRFbnRyeVR5cGUoVFlQRV9NRVNTQUdFX1JFU1BPTlNFKTsKLSAgLy8gIHB1YmxpYyBzdGF0aWMgZmluYWwgRW50cnlUeXBlIEVOVFJZX1RZUEVfQU5ZRU5UUlkgPSAKLSAgLy8gICAgICAgIG5ldyBFbnRyeVR5cGUoQXJ0aWZhY3RUeXBlLkFSVElGQUNUX1RZUEVfTUVTU0FHRVMsIFRZUEVfTUVTU0FHRV9BTllFTlRSWSk7Ci0KLSAgLyoqCi0gICAqIERlc2NyaXB0aW9uIGVudHJ5IHR5cGVzLgotICAgKi8KLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRFbnRyeVR5cGUoU3RyaW5nIHR5cGVOYW1lKSB0byBhY2Nlc3MgRW50cnlUeXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudHJ5VHlwZSBFTlRSWV9UWVBFX0RFRklOSVRJT05TID0gZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fREVGSU5JVElPTlMpOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEVudHJ5VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBFbnRyeVR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgRW50cnlUeXBlIEVOVFJZX1RZUEVfSU1QT1JUID0gZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fSU1QT1JUKTsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRFbnRyeVR5cGUoU3RyaW5nIHR5cGVOYW1lKSB0byBhY2Nlc3MgRW50cnlUeXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudHJ5VHlwZSBFTlRSWV9UWVBFX1RZUEVTID0gZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fVFlQRVMpOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEVudHJ5VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBFbnRyeVR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgRW50cnlUeXBlIEVOVFJZX1RZUEVfTUVTU0FHRSA9IGdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX01FU1NBR0UpOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEVudHJ5VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBFbnRyeVR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgRW50cnlUeXBlIEVOVFJZX1RZUEVfT1BFUkFUSU9OID0gZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fT1BFUkFUSU9OKTsKLSAgLyoqIEBkZXByZWNhdGVkIC0tIHVzZSBnZXRFbnRyeVR5cGUoU3RyaW5nIHR5cGVOYW1lKSB0byBhY2Nlc3MgRW50cnlUeXBlLiAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudHJ5VHlwZSBFTlRSWV9UWVBFX1BPUlRUWVBFID0gZ2V0RW50cnlUeXBlKFRZUEVfREVTQ1JJUFRJT05fUE9SVFRZUEUpOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEVudHJ5VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBFbnRyeVR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgRW50cnlUeXBlIEVOVFJZX1RZUEVfQklORElORyA9IGdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX0JJTkRJTkcpOwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEVudHJ5VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBFbnRyeVR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgRW50cnlUeXBlIEVOVFJZX1RZUEVfUE9SVCA9IGdldEVudHJ5VHlwZShUWVBFX0RFU0NSSVBUSU9OX1BPUlQpOwotCi0gIC8qKgotICAgKiBEaXNjb3ZlcnkgZW50cnkgdHlwZXMuCi0gICAqLwotICAvKiogQGRlcHJlY2F0ZWQgLS0gdXNlIGdldEVudHJ5VHlwZShTdHJpbmcgdHlwZU5hbWUpIHRvIGFjY2VzcyBFbnRyeVR5cGUuICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgRW50cnlUeXBlIEVOVFJZX1RZUEVfQklORElOR1RFTVBMQVRFID0gZ2V0RW50cnlUeXBlKFRZUEVfRElTQ09WRVJZX0JJTkRJTkdURU1QTEFURSk7Ci0gIC8qKiBAZGVwcmVjYXRlZCAtLSB1c2UgZ2V0RW50cnlUeXBlKFN0cmluZyB0eXBlTmFtZSkgdG8gYWNjZXNzIEVudHJ5VHlwZS4gKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnRyeVR5cGUgRU5UUllfVFlQRV9UTU9ERUwgPSBnZXRFbnRyeVR5cGUoVFlQRV9ESVNDT1ZFUllfVE1PREVMKTsKLQotICAvKioKLSAgICogQ3JlYXRlIGVudHJ5IHR5cGUuCi0gICAqLwotICBwcml2YXRlIEVudHJ5VHlwZShBcnRpZmFjdFR5cGUgYXJ0aWZhY3RUeXBlLCBTdHJpbmcgdHlwZU5hbWUpCi0gIHsKLSAgICB0aGlzLmFydGlmYWN0VHlwZSA9IGFydGlmYWN0VHlwZTsKLSAgICB0aGlzLnR5cGVOYW1lID0gdHlwZU5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogSXMgZW50cnkgdHlwZSBlcXVhbCB0byBzcGVjaWZpZWQgdHlwZS4KLSAgICogQHBhcmFtIHR5cGVOYW1lIGVudHJ5IHR5cGUgbmFtZS4KLSAgICogQHJldHVybiB0cnVlIGlmIGVudHJ5IHR5cGUgZXF1YWwgdG8gc3BlY2lmaWVkIHR5cGUuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1R5cGUoU3RyaW5nIHR5cGVOYW1lKQotICB7Ci0gICAgcmV0dXJuIHRoaXMudHlwZU5hbWUuZXF1YWxzKHR5cGVOYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBJcyBlbnRyeSB0eXBlIGVxdWFsIHRvIHNwZWNpZmllZCB0eXBlLgotICAgKiBAcGFyYW0gZW50cnlUeXBlIGVudHJ5IHR5cGUuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBlbnRyeSB0eXBlIGVxdWFsIHRvIHNwZWNpZmllZCB0eXBlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNUeXBlKEVudHJ5VHlwZSBlbnRyeVR5cGUpCi0gIHsKLSAgICByZXR1cm4gdHlwZU5hbWUuZXF1YWxzKGVudHJ5VHlwZS5nZXRUeXBlTmFtZSgpKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgYXJ0aWZhY3QgdHlwZS4KLSAgICogQHJldHVybiBhcnRpZmFjdCB0eXBlLgotICAgKi8KLSAgcHVibGljIEFydGlmYWN0VHlwZSBnZXRBcnRpZmFjdFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIGFydGlmYWN0VHlwZTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgZW50cnkgdHlwZSBuYW1lLgotICAgKiBAcmV0dXJuIGVudHJ5IHR5cGUgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZU5hbWUoKQotICB7Ci0gICAgcmV0dXJuIHR5cGVOYW1lOwotICB9Ci0KLSAgLyoqCi0gICAqIElzIHZhbGlkIGVudHJ5IHR5cGUuCi0gICAqIEBwYXJhbSB0eXBlTmFtZSBlbnRyeSB0eXBlIG5hbWUuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBlbnRyeSB0eXBlIG5hbWUgaXMgdmFsaWQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gaXNWYWxpZEVudHJ5VHlwZShTdHJpbmcgdHlwZU5hbWUpCi0gIHsKLSAgICByZXR1cm4gKGVudHJ5VHlwZU1hcC5nZXQodHlwZU5hbWUpID09IG51bGwgPyBmYWxzZSA6IHRydWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBlbnRyeSB0eXBlLgotICAgKiBAcGFyYW0gdHlwZU5hbWUgZW50cnkgdHlwZSBuYW1lLgotICAgKiBAcmV0dXJuIGVudHJ5IHR5cGUuCi0gICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBpZiBlbnRyeSB0eXBlIG5hbWUgaXMgaW52YWxpZCBvciBpbmFwcHJvcHJpYXRlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnRyeVR5cGUgZ2V0RW50cnlUeXBlKFN0cmluZyB0eXBlTmFtZSkKLSAgICB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbgotICB7Ci0gICAgaWYgKGVudHJ5VHlwZU1hcCA9PSBudWxsKSB7Ci0gICAgICAgIEJhc2VWYWxpZGF0b3IgdmFsaWRhdG9yc1tdID0gV1NJVGVzdFRvb2xzUGx1Z2luLmdldFBsdWdpbigpCi0gICAgICAgICAgICAgICAgLmdldEJhc2VWYWxpZGF0b3JzKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsaWRhdG9ycy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgU3RyaW5nIGVudHJ5VHlwZXNbXSA9IHZhbGlkYXRvcnNbaV0uZ2V0RW50cnlUeXBlcygpOwotICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBlbnRyeVR5cGVzLmxlbmd0aDsgaisrKQotICAgICAgICAgICAgICAgIHJlZ2lzdGVyRW50cnlUeXBlKEFydGlmYWN0VHlwZS5nZXRBcnRpZmFjdFR5cGUoCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzW2ldLmdldEFydGlmYWN0VHlwZSgpKSwgZW50cnlUeXBlc1tqXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLy8gR2V0IHRoZSBlbnRyeSB0eXBlIGJ5IHR5cGUgbmFtZQotICAgIEVudHJ5VHlwZSBlbnRyeVR5cGUgPSAoRW50cnlUeXBlKSBlbnRyeVR5cGVNYXAuZ2V0KHR5cGVOYW1lKTsKLQotICAgIGlmIChlbnRyeVR5cGUgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigKLSAgICAgICAgIkNvdWxkIG5vdCBnZXQgZW50cnkgdHlwZSBiZWNhdXNlIHR5cGUgbmFtZSBpcyBpbnZhbGlkOiAiCi0gICAgICAgICAgKyB0eXBlTmFtZQotICAgICAgICAgICsgIi4iKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZW50cnlUeXBlOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBsaXN0IG9mIGVudHJ5IHR5cGUgbmFtZXMgZm9yIGEgc3BlY2lmaWVkIGFydGlmYWN0IHR5cGUgbmFtZS4KLSAgICogQHBhcmFtIGFydGlmYWN0VHlwZU5hbWUgYXJ0aWZhY3QgdHlwZSBuYW1lLgotICAgKiBAcmV0dXJuIGxpc3Qgb2YgZW50cnkgdHlwZSBuYW1lcyBmb3IgYSBzcGVjaWZpZWQgYXJ0aWZhY3QgdHlwZSBuYW1lLgotICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgZW50cnkgdHlwZSBuYW1lIGlzIGludmFsaWQgb3IgaW5hcHByb3ByaWF0ZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgVmVjdG9yIGdldEVudHJ5VHlwZU5hbWVMaXN0KFN0cmluZyBhcnRpZmFjdFR5cGVOYW1lKQotICAgIHRocm93cyBSdW50aW1lRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBHZXQgbGlzdAotICAgIFZlY3RvciBlbnRyeVR5cGVOYW1lTGlzdCA9IChWZWN0b3IpIGVudHJ5VHlwZU5hbWVNYXAuZ2V0KGFydGlmYWN0VHlwZU5hbWUpOwotCi0gICAgLy8gSWYgdGhlIGxpc3Qgd2FzIG5vdCBmb3VuZCwgdGhlbiB0aHJvdyBhbiBleGNlcHRpb24KLSAgICBpZiAoZW50cnlUeXBlTmFtZUxpc3QgPT0gbnVsbCkKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigKLSAgICAgICAgIkNvdWxkIG5vdCBnZXQgZW50cnkgdHlwZSBuYW1lIGxpc3QgYmVjYXVzZSBhcnRpZmFjdCB0eXBlIG5hbWUgaXMgaW52YWxpZDogIgotICAgICAgICAgICsgYXJ0aWZhY3RUeXBlTmFtZQotICAgICAgICAgICsgIi4iKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZW50cnlUeXBlTmFtZUxpc3Q7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGxpc3Qgb2YgdHlwZSBuYW1lcyBmb3IgYSBzcGVjaWZpZWQgYXJ0aWZhY3QgdHlwZSBuYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnRyeVR5cGUgcmVnaXN0ZXJFbnRyeVR5cGUoCi0gICAgQXJ0aWZhY3RUeXBlIGFydGlmYWN0VHlwZSwKLSAgICBTdHJpbmcgdHlwZU5hbWUpCi0gIHsKLSAgICBFbnRyeVR5cGUgZW50cnlUeXBlID0gbnVsbDsKLQotICAgIC8vIENyZWF0ZSBlbnRyeSB0eXBlCi0gICAgZW50cnlUeXBlID0gbmV3IEVudHJ5VHlwZShhcnRpZmFjdFR5cGUsIHR5cGVOYW1lKTsKLQotICAgIGlmIChlbnRyeVR5cGVNYXAgPT0gbnVsbCkgewotICAgICAgICBlbnRyeVR5cGVNYXAgPSBuZXcgVHJlZU1hcCgpOwotICAgIH0KLSAgICAvLyBBZGQgdG8gZW50cnkgdHlwZSBtYXAKLSAgICBlbnRyeVR5cGVNYXAucHV0KHR5cGVOYW1lLCBlbnRyeVR5cGUpOwotCi0gICAgLy8gR2V0IHRoZSBlbnRyeSB0eXBlIG5hbWUgdmVjdG9yIGZvciB0aGUgYXJ0aWZhY3QgdHlwZQotICAgIFZlY3RvciBlbnRyeVR5cGVOYW1lTGlzdCA9Ci0gICAgICAoVmVjdG9yKSBlbnRyeVR5cGVOYW1lTWFwLmdldChhcnRpZmFjdFR5cGUuZ2V0VHlwZU5hbWUoKSk7Ci0gICAgCi0gICAgLy8gTGF6eSBpbml0aWFsaXplCi0gICAgaWYgKGVudHJ5VHlwZU5hbWVMaXN0ID09IG51bGwpIHsKLSAgICAgICAgZW50cnlUeXBlTmFtZUxpc3QgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICAgIGVudHJ5VHlwZU5hbWVNYXAucHV0KGFydGlmYWN0VHlwZS5nZXRUeXBlTmFtZSgpLCBlbnRyeVR5cGVOYW1lTGlzdCk7Ci0gICAgfQotCi0gICAgLy8gQWRkIHRoZSB0eXBlIG5hbWUgdG8gdGhlIGxpc3QKLSAgICBlbnRyeVR5cGVOYW1lTGlzdC5hZGQodHlwZU5hbWUpOwotCi0gICAgcmV0dXJuIGVudHJ5VHlwZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9FcnJvckxpc3QuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvRXJyb3JMaXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NTk3ZjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9FcnJvckxpc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbDsKLQotaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOwotaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotLyoqCi0gKiBUaGUgY2xhc3MgYWNjdW11bGF0ZXMgYWxsIGVycm9yIHN0cmluZ3MgaW50byBzdHJpbmcgYnVmZmVyLgotICogCi0gKiBAYXV0aG9yIEt1bGlrCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBFcnJvckxpc3QKLXsKLSAgcHJpdmF0ZSBTZXQgZXJyb3JzID0gbmV3IEhhc2hTZXQoKTsKLSAgcHJpdmF0ZSBNZXNzYWdlRm9ybWF0IGZvcm1hdCA9IG5ldyBNZXNzYWdlRm9ybWF0KCJ7MH06ezF9Iik7Ci0gIHByaXZhdGUgRmllbGRQb3NpdGlvbiBwb3MgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKLQotICAvKioKLSAgICogRGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I09iamVjdCgpCi0gICAqLwotICBwdWJsaWMgRXJyb3JMaXN0KCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdCBlcnJvciBsaXN0IHVzaW5nIGNvbnRlbnRzIG9mIGEgbGlzdC4KLSAgICogQHBhcmFtIGxpc3QgYSBMaXN0IG9iamVjdC4KLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I09iamVjdCgpCi0gICAqLwotICBwdWJsaWMgRXJyb3JMaXN0KExpc3QgbGlzdCkKLSAgewotICAgIGFkZChsaXN0KTsKLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSBmb3JtYXQuCi0gICAqIEBwYXJhbSBmIGEgbWVzc2FnZSBmb3JtYXQuCi0gICAqLwotICBwdWJsaWMgRXJyb3JMaXN0KE1lc3NhZ2VGb3JtYXQgZikKLSAgewotICAgIGlmIChmICE9IG51bGwpCi0gICAgICBmb3JtYXQgPSBmOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCBsaXN0LiAKLSAgICogQHBhcmFtIGxpc3QgbGlzdCBvZiBlcnJvcnMuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGQoTGlzdCBsaXN0KQotICB7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBsaXN0Lml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBhZGQoKFN0cmluZykgaXRlcmF0b3IubmV4dCgpKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQWRkcyBlcnJvciBkZXNjcmlwdGlvbiBpbnRvIHRoZSBsaXN0LiAKLSAgICogQHBhcmFtIHMxIGEgc3RyaW5nLgotICAgKiBAcGFyYW0gczIgYSBzdHJpbmcuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGQoU3RyaW5nIHMxLCBTdHJpbmcgczIpCi0gIHsKLSAgICBlcnJvcnMuYWRkKG5ldyBQYWlyKHMxLCBzMikpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZHMgZXJyb3IgZGVzY3JpcHRpb24gaW50byB0aGUgbGlzdC4KLSAgICogQHBhcmFtIHEgYSBRTmFtZSBvYmplY3QuCi0gICAqIEBwYXJhbSBzIGEgc3RyaW5nLgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkKFFOYW1lIHEsIFN0cmluZyBzKQotICB7Ci0gICAgZXJyb3JzLmFkZChuZXcgUGFpcihOdWxsVXRpbC50b1N0cmluZyhxKSwgcykpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZHMgZXJyb3IgZGVzY3JpcHRpb24gaW50byB0aGUgbGlzdC4KLSAgICogQHBhcmFtIHExIGEgUU5hbWUgb2JqZWN0LgotICAgKiBAcGFyYW0gcTIgYSBzdHJpbmcuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGQoUU5hbWUgcTEsIFFOYW1lIHEyKQotICB7Ci0gICAgZXJyb3JzLmFkZChuZXcgUGFpcihOdWxsVXRpbC50b1N0cmluZyhxMSksIE51bGxVdGlsLnRvU3RyaW5nKHEyKSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZHMgZXJyb3IgZGVzY3JpcHRpb24gaW50byB0aGUgbGlzdC4uLgotICAgKiBAcGFyYW0gcSBhIFFOYW1lIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZChRTmFtZSBxKQotICB7Ci0gICAgZXJyb3JzLmFkZChuZXcgUGFpcihOdWxsVXRpbC50b1N0cmluZyhxKSwgbnVsbCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZHMgZXJyb3IgZGVzY3JpcHRpb24gaW50byB0aGUgbGlzdC4KLSAgICogQHBhcmFtIHMgYSBzdHJpbmcuCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGQoU3RyaW5nIHMpCi0gIHsKLSAgICBlcnJvcnMuYWRkKG5ldyBQYWlyKHMsIG51bGwpKTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBlcnJvciBsaXN0IHN0cmluZyByZXByZXNlbnRhdGlvbi4gCi0gICAqIEByZXR1cm4gdGhlIGVycm9yIGxpc3Qgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAKLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I3RvU3RyaW5nKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLQotICAgIEl0ZXJhdG9yIGl0ID0gZXJyb3JzLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBQYWlyIHAgPSAoUGFpcikgaXQubmV4dCgpOwotICAgICAgaWYgKHAuZ2V0Rmlyc3QoKSAhPSBudWxsICYmIHAuZ2V0U2Vjb25kKCkgIT0gbnVsbCkKLSAgICAgICAgZm9ybWF0LmZvcm1hdChuZXcgT2JqZWN0W10geyBwLmdldEZpcnN0KCksIHAuZ2V0U2Vjb25kKCl9LCBidWYsIHBvcyk7Ci0gICAgICBlbHNlIGlmIChwLmdldEZpcnN0KCkgIT0gbnVsbCkKLSAgICAgICAgYnVmLmFwcGVuZChwLmdldEZpcnN0KCkpOwotICAgICAgZWxzZQotICAgICAgICBidWYuYXBwZW5kKHAuZ2V0U2Vjb25kKCkpOwotICAgICAgaWYgKGl0Lmhhc05leHQoKSkKLSAgICAgICAgYnVmLmFwcGVuZCgiLFxuIik7Ci0gICAgfQotCi0gICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIGVycm9yIGxpc3QgaXMgZW1wdHkgb3Igbm90LgotICAgKiBAcmV0dXJuIHRydWUgaWYgZXJyb3IgbGlzdCBpcyBlbXB0eS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzRW1wdHkoKQotICB7Ci0gICAgcmV0dXJuIGVycm9ycy5zaXplKCkgPT0gMDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9IVFRQQ29uc3RhbnRzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL0hUVFBDb25zdGFudHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRiMDUzMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL0hUVFBDb25zdGFudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYwMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLS8qKgotICogQSBzZXQgb2YgSFRUUCB2YWx1ZXMgdGhhdCBhcmUgZGVmaW5lZCBieSBOZXR3b3JrIFdvcmtpbmcgR3JvdXAuCi0gKiBodHRwOi8vd3d3LmlldGYub3JnLwotICoKLSAqIEB2ZXJzaW9uIDEuMAotICogQGF1dGhvciBJbHlhIEthbm9uaXJvdiAoa2lvQGlzZy5heG1vci5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBIVFRQQ29uc3RhbnRzIHsKLSAgLy8gVGhlIHN0YW5kYXJkaXplZCBIVFRQIEhlYWRlciBmaWVsZC1uYW1lcwotICAvLyBodHRwOi8vd3d3Lm1ub3QubmV0L2RyYWZ0cy9kcmFmdC1ub3R0aW5naGFtLWh0dHAtaGVhZGVyLXJlZy0wMC50eHQKLQotICAvLyBIeXBlcnRleHQgVHJhbnNmZXIgUHJvdG9jb2wgLS0gSFRUUC8xLjEgKG9ic29sZXRlcyBSRkMyMDY4KQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQUNDRVBUID0gIkFjY2VwdCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9BQ0NFUFRfQ0hBUlNFVCA9ICJBY2NlcHQtQ2hhcnNldCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9BQ0NFUFRfRU5DT0RJTkcgPSAiQWNjZXB0LUVuY29kaW5nIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0FDQ0VQVF9MQU5HVUFHRSA9ICJBY2NlcHQtTGFuZ3VhZ2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQUNDRVBUX1JBTkdFUyA9ICJBY2NlcHQtUmFuZ2VzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0FHRSA9ICJBZ2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQUxMT1cgPSAiQWxsb3ciOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQVVUSE9SSVpBVElPTiA9ICJBdXRob3JpemF0aW9uIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NBQ0hFX0NPTlRST0wgPSAiQ2FjaGUtQ29udHJvbCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05ORUNUID0gIkNvbm5lY3QiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQ09OVEVOVF9FTkNPRElORyA9ICJDb250ZW50LUVuY29kaW5nIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRFTlRfTEFOR1VBR0UgPSAiQ29udGVudC1MYW5ndWFnZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05URU5UX0xFTkdUSCA9ICJDb250ZW50LUxlbmd0aCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05URU5UX0xPQ0FUSU9OID0gIkNvbnRlbnQtTG9jYXRpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQ09OVEVOVF9NRDUgPSAiQ29udGVudC1NRDUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQ09OVEVOVF9SQU5HRSA9ICJDb250ZW50LVJhbmdlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRFTlRfVFlQRSA9ICJDb250ZW50LVR5cGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfREFURSA9ICJEYXRlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0VUQUcgPSAiRVRhZyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9FWFBFQ1QgPSAiRXhwZWN0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0VYUElSRVMgPSAiRXhwaXJlcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9GUk9NID0gIkZyb20iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfSE9TVCA9ICJIb3N0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0lGX01BVENIID0gIklmLU1hdGNoIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0lGX01PRElGSUVEX1NJTkNFID0gIklmLU1vZGlmaWVkLVNpbmNlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0lGX05PTkVfTUFUQ0ggPSAiSWYtTm9uZS1NYXRjaCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9JRl9SQU5HRSA9ICJJZi1SYW5nZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9JRl9VTk1PRElGSUVEX1NJTkNFID0gIklmLVVubW9kaWZpZWQtU2luY2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfTEFTVF9NT0RJRklFRCA9ICJMYXN0LU1vZGlmaWVkIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0xPQ0FUSU9OID0gIkxvY2F0aW9uIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX01BWF9GT1JXQVJEUyA9ICJNYXgtRm9yd2FyZHMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfUFJBR01BID0gIlByYWdtYSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9QUk9YWV9BVVRIRU5USUNBVEUgPSAiUHJveHktQXV0aGVudGljYXRlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1BST1hZX0FVVEhPUklaQVRJT04gPSAiUHJveHktQXV0aG9yaXphdGlvbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9SQU5HRSA9ICJSYW5nZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9SRUZFUkVSID0gIlJlZmVyZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfUkVUUllfQUZURVIgPSAiUmV0cnktQWZ0ZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfU0VSVkVSID0gIlNlcnZlciI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9URSA9ICJURSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9UUkFJTEVSID0gIlRyYWlsZXIiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVFJBTlNGRVJfRU5DT0RJTkcgPSAiVHJhbnNmZXItRW5jb2RpbmciOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVVBHUkFERSA9ICJVcGdyYWRlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1VTRVJfQUdFTlQgPSAiVXNlci1BZ2VudCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9WQVJZID0gIlZhcnkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVklBID0gIlZpYSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9XQVJOSU5HID0gIldhcm5pbmciOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfV1dXX0FVVEhFTlRJQ0FURSA9ICJXV1ctQXV0aGVudGljYXRlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX01JTUVfVkVSU0lPTiA9ICJNSU1FLVZlcnNpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQ09OVEVOVF9ESVNQT1NJVElPTiA9ICJDb250ZW50LURpc3Bvc2l0aW9uIjsgIAotCi0gIC8vIEhUVFAgQXV0aGVudGljYXRpb246IEJhc2ljIGFuZCBEaWdlc3QgQWNjZXNzIEF1dGhlbnRpY2F0aW9uCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9BVVRIRU5USUNBVElPTl9JTkZPID0gIkF1dGhlbnRpY2F0aW9uLUluZm8iOwotCi0gIC8vIEhUVFAgU3RhdGUgTWFuYWdlbWVudCBNZWNoYW5pc20KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1NFVF9DT09LSUUgPSAiU2V0LUNvb2tpZSI7Ci0KLSAgLy8gSFRUUCBTdGF0ZSBNYW5hZ2VtZW50IE1lY2hhbmlzbSAob2Jzb2xldGVzIFJGQzIxMDkpCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT09LSUUgPSAiQ29va2llIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPT0tJRTIgPSAiQ29va2llMiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9TRVRfQ09PS0lFMiA9ICJTZXQtQ29va2llMiI7Ci0KLSAgLy8gV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfREFWID0gIkRBViI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9ERVBUSCA9ICJEZXB0aCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9ERVNUSU5BVElPTiA9ICJEZXN0aW5hdGlvbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9JRiA9ICJJZiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9MT0NLX1RPS0VOID0gIkxvY2stVG9rZW4iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfT1ZFUldSSVRFID0gIk92ZXJ3cml0ZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9TVEFUVVNfVVJJID0gIlN0YXR1cy1VUkkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVElNRU9VVCA9ICJUaW1lb3V0IjsKLQotICAvLyBIeXBlcnRleHQgVHJhbnNmZXIgUHJvdG9jb2wgLS0gSFRUUC8xLjEgKFByb3Bvc2VkIFN0YW5kYXJkIC0gdGhlc2UgZmllbGQtbmFtZXMgYXJlIG5vdyBjb25zaWRlcmVkIG9ic29sZXRlKQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQ09OVEVOVF9CQVNFID0gIkNvbnRlbnQtQmFzZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9QVUJMSUMgPSAiUHVibGljIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRFTlRfVkVSU0lPTiA9ICJDb250ZW50LVZlcnNpb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfREVSSVZFRF9GUk9NID0gIkRlcml2ZWQtRnJvbSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9MSU5LID0gIkxpbmsiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVVJJID0gIlVSSSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9LRUVQX0FMSVZFID0gIktlZXAtQWxpdmUiOwotCi0gIC8vIERlbHRhIEVuY29kaW5nIGluIEhUVFAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0FfSU0gPSAiQS1JTSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9ERUxUQV9CQVNFID0gIkRlbHRhLUJhc2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfSU0gPSAiSU0iOwotCi0gIC8vIEluc3RhbmNlIERpZ2VzdHMgaW4gSFRUUAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfRElHRVNUID0gIkRpZ2VzdCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9XQU5UX0RJR0VTVCA9ICJXYW50LURpZ2VzdCI7Ci0KLSAgLy8gU2ltcGxlIEhpdC1NZXRlcmluZyBhbmQgVXNhZ2UtTGltaXRpbmcgZm9yIEhUVFAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX01FVEVSID0gIk1ldGVyIjsKLQotICAvLyBUaGUgS25vd24gTm9uLVN0YW5kYXJkaXplZCBIVFRQIEhlYWRlciBmaWVsZC1uYW1lcwotCi0gIC8vIFRyYW5zcGFyZW50IENvbnRlbnQgTmVnb3RpYXRpb24gaW4gSFRUUAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQUNDRVBUX0ZFQVRVUkVTID0gIkFjY2VwdC1GZWF0dXJlcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9BTFRFUk5BVEVTID0gIkFsdGVybmF0ZXMiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfTkVHT1RJQVRFID0gIk5lZ290aWF0ZSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9UQ04gPSAiVENOIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1ZBUklBTlRfVkFSWSA9ICJWYXJpYW50LVZhcnkiOwotCi0gIC8vIFRoZSBTYWZlIFJlc3BvbnNlIEhlYWRlciBGaWVsZAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfU0FGRSA9ICJTYWZlIjsKLQotICAvLyBIeXBlciBUZXh0IENvZmZlZSBQb3QgQ29udHJvbCBQcm90b2NvbCAoSFRDUENQLzEuMCkKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0FDQ0VQVF9BRERJVElPTlMgPSAiQWNjZXB0LUFkZGl0aW9ucyI7Ci0KLSAgLy8gVGhlIFNlY3VyZSBIeXBlclRleHQgVHJhbnNmZXIgUHJvdG9jb2wKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRFTlRfUFJJVkFDWV9ET01BSU4gPSAiQ29udGVudC1Qcml2YWN5LURvbWFpbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9NQUNfSU5GTyA9ICJNQUMtSW5mbyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9QUkVBUlJBTkdFRF9LRVlfSU5GTyA9ICJQcmVhcnJhbmdlZC1LZXktSW5mbyI7Ci0KLSAgLy8gQW4gSFRUUCBFeHRlbnNpb24gRnJhbWV3b3JrCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DX0VYVCA9ICJDLUV4dCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DX01BTiA9ICJDLU1hbiI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DX09QVCA9ICJDLU9wdCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9FWFQgPSAiRXh0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX01BTiA9ICJNYW4iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfT1BUID0gIk9wdCI7Ci0KLSAgLy8gUElDUyBMYWJlbCBEaXN0cmlidXRpb24gTGFiZWwgU3ludGF4IGFuZCBDb21tdW5pY2F0aW9uIFByb3RvY29scwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfUElDU19MQUJFTCA9ICJQSUNTLUxhYmVsIjsKLQotICAvLyBQbGF0Zm9ybSBGb3IgUHJpdmFjeSBQcmVmZXJlbmNlcyAxLjAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1AzUCA9ICJQM1AiOwotCi0gIC8vIFBFUCAtIGFuIEV4dGVuc2lvbiBNZWNoYW5pc20gZm9yIEhUVFAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NfUEVQID0gIkMtUEVQIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NfUEVQX0lORk8gPSAiQy1QRVAtSW5mbyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9QRVAgPSAiUEVQIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1BFUF9JTkZPID0gIlBlcC1JbmZvIjsKLQotICAvLyBUaGUgSFRUUCBEaXN0cmlidXRpb24gYW5kIFJlcGxpY2F0aW9uIFByb3RvY29sCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05URU5UX0lEID0gIkNvbnRlbnQtSUQiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfRElGRkVSRU5USUFMX0lEID0gIkRpZmZlcmVudGlhbC1JRCI7Ci0KLSAgLy8gRVNJIEFyY2hpdGVjdHVyZQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfU1VSUk9HQVRFX0NBUEFCSUxJVFkgPSAiU3Vycm9nYXRlLUNhcGFiaWxpdHkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfU1VSUk9HQVRFX0NPTlRST0wgPSAiU3Vycm9nYXRlLUNvbnRyb2wiOwotCi0gIC8vIFNlbGVjdGluZyBQYXltZW50IE1lY2hhbmlzbXMgT3ZlciBIVFRQCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9QUk9UT0NPTCA9ICJQcm90b2NvbCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9QUk9UT0NPTF9JTkZPID0gIlByb3RvY29sLUluZm8iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfUFJPVE9DT0xfUVVFUlkgPSAiUHJvdG9jb2wtUXVlcnkiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfUFJPVE9DT0xfUkVRVUVTVCA9ICJQcm90b2NvbC1SZXF1ZXN0IjsKLQotICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBPUFMgT3ZlciBIVFRQCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9HRVRQUk9GSUxFID0gIkdldFByb2ZpbGUiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfUFJPRklMRU9CSkVDVCA9ICJQcm9maWxlT2JqZWN0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1NFVFBST0ZJTEUgPSAiU2V0UHJvZmlsZSI7Ci0KLSAgLy8gTm90aWZpY2F0aW9uIGZvciBQcm94eSBDYWNoZXMKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1BST1hZX0ZFQVRVUkVTID0gIlByb3h5LUZlYXR1cmVzIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1BST1hZX0lOU1RSVUNUSU9OID0gIlByb3h5LUluc3RydWN0aW9uIjsKLQotICAvLyBPYmplY3QgSGVhZGVyIGxpbmVzIGluIEhUVFAKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRFTlRfVFJBTlNGRVJfRU5DT0RJTkcgPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT1NUID0gIkNvc3QiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfTUVTU0FHRV9JRCA9ICJNZXNzYWdlLUlEIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1RJVExFID0gIlRpdGxlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1ZFUlNJT04gPSAiVmVyc2lvbiI7Ci0KLSAgLy8gQSBQcm9wb3NlZCBFeHRlbnNpb24gTWVjaGFuaXNtIGZvciBIVFRQCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9FWFRFTlNJT04gPSAiRXh0ZW5zaW9uIjsKLQotICAvLyBXSVJFIC0gVzMgSWRlbnRpZmllciBSZXNvbHV0aW9uIEV4dGVuc2lvbnMKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX09QVElPTkFMID0gIk9wdGlvbmFsIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1JFU09MVVRJT05fSElOVCA9ICJSZXNvbHV0aW9uLUhpbnQiOwotCi0gIC8vIER1cGxpY2F0ZSBTdXBwcmVzc2lvbiBpbiBIVFRQCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9TVUJPSyA9ICJTdWJPSyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9TVUJTVCA9ICJTdWJzdCI7Ci0KLSAgLy8gU3BlY2lmaWNhdGlvbiBvZiBIVFRQLzEuMSBPUFRJT05TIG1lc3NhZ2VzCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT01QTElBTkNFID0gIkNvbXBsaWFuY2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfTk9OX0NPTVBMSUFOQ0UgPSAiTm9uLUNvbXBsaWFuY2UiOwotCi0gIC8vIFdpZGVseS11c2VkIHVuZG9jdW1lbnRlZCBoZWFkZXJzCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9SRVFVRVNUX1JBTkdFID0gIlJlcXVlc3QtUmFuZ2UiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVUFfQ09MT1IgPSAiVUEtQ29sb3IiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVUFfQ1BVID0gIlVBLUNQVSI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9VQV9PUyA9ICJVQS1PUyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9VQV9QSVhFTFMgPSAiVUEtUGl4ZWxzIjsKLQotICAvLyBJbXBsZW1lbnRhdGlvbiBlcnJvcnMKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1JFRkVSUkVSID0gIlJlZmVycmVyIjsKLQotICAvLyBQcml2YXRlIGZlYXR1cmVzCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT1BZUklHSFQgPSAiQ29weXJpZ2h0IjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRFTlQgPSAiQ29udGVudCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9BVVRIT1IgPSAiQXV0aG9yIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRBQ1QgPSAiQ29udGFjdCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9LRVlXT1JEUyA9ICJLZXl3b3JkcyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9HRU5FUkFUT1IgPSAiR2VuZXJhdG9yIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0RFU0NSSVBUSU9OID0gIkRlc2NyaXB0aW9uIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTU1BTkQgPSAiQ29tbWFuZCI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9TRVNTSU9OID0gIlNlc3Npb24iOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVFlQRSA9ICJUeXBlIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX01FU1NBR0UgPSAiTWVzc2FnZSI7Ci0KLSAgLy8gQWJhbmRvbmVkIHByb3Bvc2FscwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVU5MRVNTX01PRElGSUVEX1NJTkNFID0gIlVubGVzcy1Nb2RpZmllZC1TaW5jZSI7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYWxsIHRoZSBzdGFuZGFyZGl6ZWQgSFRUUCBoZWFkZXIgbmFtZXMgcHJlc2VudGVkIGFzIExpc3QKLSAgICogQHJldHVybiBUaGUgbGlzdCBvZiBzdGFuZGFyZGl6ZWQgSFRUUCBoZWFkZXIgbmFtZXMKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgTGlzdCBnZXRTdGFuZGFyZGl6ZWRIZWFkZXJOYW1lcygpIHsKLSAgICByZXR1cm4gQXJyYXlzLmFzTGlzdChuZXcgT2JqZWN0W10gewotICAgICAgSEVBREVSX0FDQ0VQVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0FDQ0VQVF9DSEFSU0VULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQUNDRVBUX0VOQ09ESU5HLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQUNDRVBUX0xBTkdVQUdFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQUNDRVBUX1JBTkdFUy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0FHRS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0FMTE9XLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQVVUSE9SSVpBVElPTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NBQ0hFX0NPTlRST0wudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05ORUNULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQ09OVEVOVF9FTkNPRElORy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPTlRFTlRfTEFOR1VBR0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05URU5UX0xFTkdUSC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPTlRFTlRfTE9DQVRJT04udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05URU5UX01ENS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPTlRFTlRfUkFOR0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05URU5UX1RZUEUudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9EQVRFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfRVRBRy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0VYUEVDVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0VYUElSRVMudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9GUk9NLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfSE9TVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0lGX01BVENILnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfSUZfTU9ESUZJRURfU0lOQ0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9JRl9OT05FX01BVENILnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfSUZfUkFOR0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9JRl9VTk1PRElGSUVEX1NJTkNFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTEFTVF9NT0RJRklFRC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0xPQ0FUSU9OLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTUFYX0ZPUldBUkRTLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUFJBR01BLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUFJPWFlfQVVUSEVOVElDQVRFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUFJPWFlfQVVUSE9SSVpBVElPTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1JBTkdFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUkVGRVJFUi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1JFVFJZX0FGVEVSLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfU0VSVkVSLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVEUudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9UUkFJTEVSLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVFJBTlNGRVJfRU5DT0RJTkcudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9VUEdSQURFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVVNFUl9BR0VOVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1ZBUlkudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9WSUEudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9XQVJOSU5HLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfV1dXX0FVVEhFTlRJQ0FURS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX01JTUVfVkVSU0lPTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPTlRFTlRfRElTUE9TSVRJT04udG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0FVVEhFTlRJQ0FUSU9OX0lORk8udG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1NFVF9DT09LSUUudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0NPT0tJRS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPT0tJRTIudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9TRVRfQ09PS0lFMi50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfREFWLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfREVQVEgudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9ERVNUSU5BVElPTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0lGLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTE9DS19UT0tFTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX09WRVJXUklURS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1NUQVRVU19VUkkudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9USU1FT1VULnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9DT05URU5UX0JBU0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9QVUJMSUMudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05URU5UX1ZFUlNJT04udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9ERVJJVkVEX0ZST00udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9MSU5LLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVVJJLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfS0VFUF9BTElWRS50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfQV9JTS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0RFTFRBX0JBU0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9JTS50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfRElHRVNULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfV0FOVF9ESUdFU1QudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX01FVEVSLnRvVXBwZXJDYXNlKCkKLSAgICB9KTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIGFsbCB0aGUgbm9uLXN0YW5kYXJkaXplZCBIVFRQIGhlYWRlciBuYW1lcyBwcmVzZW50ZWQgYXMgTGlzdAotICAgKiBAcmV0dXJuIFRoZSBsaXN0IG9mIG5vbi1zdGFuZGFyZGl6ZWQgSFRUUCBoZWFkZXIgbmFtZXMKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgTGlzdCBnZXROb25TdGFuZGFyZGl6ZWRIZWFkZXJOYW1lcygpIHsKLSAgICByZXR1cm4gQXJyYXlzLmFzTGlzdChuZXcgT2JqZWN0W10gewotICAgICAgSEVBREVSX0FDQ0VQVF9GRUFUVVJFUy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0FMVEVSTkFURVMudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9ORUdPVElBVEUudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9UQ04udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9WQVJJQU5UX1ZBUlkudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1NBRkUudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0FDQ0VQVF9BRERJVElPTlMudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0NPTlRFTlRfUFJJVkFDWV9ET01BSU4udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9NQUNfSU5GTy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1BSRUFSUkFOR0VEX0tFWV9JTkZPLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9DX0VYVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NfTUFOLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQ19PUFQudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9FWFQudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9NQU4udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9PUFQudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1BJQ1NfTEFCRUwudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9QUk9UT0NPTC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1BST1RPQ09MX1JFUVVFU1QudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1AzUC50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfQ19QRVAudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DX1BFUF9JTkZPLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUEVQLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUEVQX0lORk8udG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0NPTlRFTlRfSUQudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9ESUZGRVJFTlRJQUxfSUQudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1NVUlJPR0FURV9DQVBBQklMSVRZLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfU1VSUk9HQVRFX0NPTlRST0wudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1BST1RPQ09MLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUFJPVE9DT0xfSU5GTy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1BST1RPQ09MX1FVRVJZLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUFJPVE9DT0xfUkVRVUVTVC50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfR0VUUFJPRklMRS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1BST0ZJTEVPQkpFQ1QudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9TRVRQUk9GSUxFLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9QUk9YWV9GRUFUVVJFUy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1BST1hZX0lOU1RSVUNUSU9OLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9DT05URU5UX1RSQU5TRkVSX0VOQ09ESU5HLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQ09TVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX01FU1NBR0VfSUQudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9USVRMRS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1ZFUlNJT04udG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0VYVEVOU0lPTi50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfT1BUSU9OQUwudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9SRVNPTFVUSU9OX0hJTlQudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1NVQk9LLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfU1VCU1QudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0NPTVBMSUFOQ0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9OT05fQ09NUExJQU5DRS50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfUkVRVUVTVF9SQU5HRS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1VBX0NPTE9SLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVUFfQ1BVLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVUFfT1MudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9VQV9QSVhFTFMudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1JFRkVSUkVSLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9DT1BZUklHSFQudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05URU5ULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQVVUSE9SLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQ09OVEFDVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0tFWVdPUkRTLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfR0VORVJBVE9SLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfREVTQ1JJUFRJT04udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT01NQU5ELnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfU0VTU0lPTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1RZUEUudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9NRVNTQUdFLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9VTkxFU1NfTU9ESUZJRURfU0lOQ0UudG9VcHBlckNhc2UoKQotICAgIH0pOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYWxsIGtub3duIEhUVFAgaGVhZGVyIG5hbWVzIHByZXNlbnRlZCBhcyBMaXN0Ci0gICAqIEByZXR1cm4gVGhlIGxpc3Qgb2YgYWxsIGtub3duIEhUVFAgaGVhZGVyIG5hbWVzCi0gICAqLwotICBwdWJsaWMgc3RhdGljIExpc3QgZ2V0QWxsS25vd25IZWFkZXJOYW1lcygpIHsKLSAgICByZXR1cm4gQXJyYXlzLmFzTGlzdChuZXcgT2JqZWN0W10gewotICAgICAgSEVBREVSX0FDQ0VQVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0FDQ0VQVF9DSEFSU0VULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQUNDRVBUX0VOQ09ESU5HLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQUNDRVBUX0xBTkdVQUdFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQUNDRVBUX1JBTkdFUy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0FHRS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0FMTE9XLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQVVUSE9SSVpBVElPTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NBQ0hFX0NPTlRST0wudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05ORUNULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQ09OVEVOVF9FTkNPRElORy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPTlRFTlRfTEFOR1VBR0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05URU5UX0xFTkdUSC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPTlRFTlRfTE9DQVRJT04udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05URU5UX01ENS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPTlRFTlRfUkFOR0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05URU5UX1RZUEUudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9EQVRFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfRVRBRy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0VYUEVDVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0VYUElSRVMudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9GUk9NLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfSE9TVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0lGX01BVENILnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfSUZfTU9ESUZJRURfU0lOQ0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9JRl9OT05FX01BVENILnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfSUZfUkFOR0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9JRl9VTk1PRElGSUVEX1NJTkNFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTEFTVF9NT0RJRklFRC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0xPQ0FUSU9OLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTUFYX0ZPUldBUkRTLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUFJBR01BLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUFJPWFlfQVVUSEVOVElDQVRFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUFJPWFlfQVVUSE9SSVpBVElPTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1JBTkdFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUkVGRVJFUi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1JFVFJZX0FGVEVSLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfU0VSVkVSLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVEUudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9UUkFJTEVSLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVFJBTlNGRVJfRU5DT0RJTkcudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9VUEdSQURFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVVNFUl9BR0VOVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1ZBUlkudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9WSUEudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9XQVJOSU5HLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfV1dXX0FVVEhFTlRJQ0FURS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX01JTUVfVkVSU0lPTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPTlRFTlRfRElTUE9TSVRJT04udG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0FVVEhFTlRJQ0FUSU9OX0lORk8udG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1NFVF9DT09LSUUudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0NPT0tJRS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPT0tJRTIudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9TRVRfQ09PS0lFMi50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfREFWLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfREVQVEgudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9ERVNUSU5BVElPTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0lGLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTE9DS19UT0tFTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX09WRVJXUklURS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1NUQVRVU19VUkkudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9USU1FT1VULnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9DT05URU5UX0JBU0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9QVUJMSUMudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DT05URU5UX1ZFUlNJT04udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9ERVJJVkVEX0ZST00udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9MSU5LLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVVJJLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfS0VFUF9BTElWRS50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfQV9JTS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0RFTFRBX0JBU0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9JTS50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfRElHRVNULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfV0FOVF9ESUdFU1QudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX01FVEVSLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9BQ0NFUFRfRkVBVFVSRVMudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9BTFRFUk5BVEVTLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTkVHT1RJQVRFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVENOLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVkFSSUFOVF9WQVJZLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9TQUZFLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9BQ0NFUFRfQURESVRJT05TLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9DT05URU5UX1BSSVZBQ1lfRE9NQUlOLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTUFDX0lORk8udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9QUkVBUlJBTkdFRF9LRVlfSU5GTy50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfQ19FWFQudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9DX01BTi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NfT1BULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfRVhULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTUFOLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfT1BULnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9QSUNTX0xBQkVMLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUFJPVE9DT0wudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9QUk9UT0NPTF9SRVFVRVNULnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9QM1AudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0NfUEVQLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQ19QRVBfSU5GTy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1BFUC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1BFUF9JTkZPLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9DT05URU5UX0lELnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfRElGRkVSRU5USUFMX0lELnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9TVVJST0dBVEVfQ0FQQUJJTElUWS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1NVUlJPR0FURV9DT05UUk9MLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9QUk9UT0NPTC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1BST1RPQ09MX0lORk8udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9QUk9UT0NPTF9RVUVSWS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1BST1RPQ09MX1JFUVVFU1QudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX0dFVFBST0ZJTEUudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9QUk9GSUxFT0JKRUNULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfU0VUUFJPRklMRS50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfUFJPWFlfRkVBVFVSRVMudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9QUk9YWV9JTlNUUlVDVElPTi50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfQ09OVEVOVF9UUkFOU0ZFUl9FTkNPRElORy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPU1QudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9NRVNTQUdFX0lELnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVElUTEUudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9WRVJTSU9OLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9FWFRFTlNJT04udG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX09QVElPTkFMLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfUkVTT0xVVElPTl9ISU5ULnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9TVUJPSy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1NVQlNULnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9DT01QTElBTkNFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTk9OX0NPTVBMSUFOQ0UudG9VcHBlckNhc2UoKSwKLQotICAgICAgSEVBREVSX1JFUVVFU1RfUkFOR0UudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9VQV9DT0xPUi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1VBX0NQVS50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1VBX09TLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfVUFfUElYRUxTLnRvVXBwZXJDYXNlKCksCi0KLSAgICAgIEhFQURFUl9SRUZFUlJFUi50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfQ09QWVJJR0hULnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQ09OVEVOVC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0FVVEhPUi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0NPTlRBQ1QudG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9LRVlXT1JEUy50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0dFTkVSQVRPUi50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX0RFU0NSSVBUSU9OLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfQ09NTUFORC50b1VwcGVyQ2FzZSgpLAotICAgICAgSEVBREVSX1NFU1NJT04udG9VcHBlckNhc2UoKSwKLSAgICAgIEhFQURFUl9UWVBFLnRvVXBwZXJDYXNlKCksCi0gICAgICBIRUFERVJfTUVTU0FHRS50b1VwcGVyQ2FzZSgpLAotCi0gICAgICBIRUFERVJfVU5MRVNTX01PRElGSUVEX1NJTkNFLnRvVXBwZXJDYXNlKCkKLSAgICB9KTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvSFRUUFV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL0hUVFBVdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTZlNDQzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvSFRUUFV0aWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU3RyaW5nVG9rZW5pemVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLQotLyoqCi0gKiBTZXQgb2YgSFRUUEwgcmVsYXRlZCB1dGlsaXRpZXMuCi0gKgotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbQotICovCi0KLXB1YmxpYyBmaW5hbCBjbGFzcyBIVFRQVXRpbHMKLXsKLQotICAvKioKLSAgICogRmluZCB0aGUgVVJMIHN0cmluZyBpbiBhIEhUVFAgUE9TVCBoZWFkZXIuCi0gICAqIEBwYXJhbSBodHRwUG9zdEhlYWRlciAgYSBIVFRQIFBPU1QgaGVhZGVyLiAKLSAgICogQHJldHVybiB0aGUgVVJMIHN0cmluZyBpbiBhIEhUVFAgUE9TVCBoZWFkZXIuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRVUkxTdHJpbmcoU3RyaW5nIGh0dHBQb3N0SGVhZGVyKQotICB7Ci0gICAgU3RyaW5nIHVybFN0cmluZyA9IG51bGw7Ci0gICAgaW50IHN0YXJ0LCBlbmQ7Ci0KLSAgICAvLyBJZiBQT1NULCB0aGVuIGNvbnRpbnVlCi0gICAgaWYgKGh0dHBQb3N0SGVhZGVyLnN0YXJ0c1dpdGgoIlBPU1QiKSB8fCBodHRwUG9zdEhlYWRlci5zdGFydHNXaXRoKCJHRVQiKSkKLSAgICB7Ci0gICAgICAvLyBTdGFydCBhZnRlciBmaXJzdCBzcGFjZQotICAgICAgc3RhcnQgPSBodHRwUG9zdEhlYWRlci5pbmRleE9mKCcgJykgKyAxOwotCi0gICAgICAvLyBMb29rIGZvciBuZXh0IG5vbi1zcGFjZSBjaGFyYWN0ZXIKLSAgICAgIHdoaWxlIChodHRwUG9zdEhlYWRlci5jaGFyQXQoc3RhcnQpID09ICcgJykKLSAgICAgICAgc3RhcnQrKzsKLQotICAgICAgLy8gRmluZCBuZXh0IHNwYWNlIGNoYXJhY3RlcgotICAgICAgZW5kID0gaHR0cFBvc3RIZWFkZXIuaW5kZXhPZignICcsIHN0YXJ0KTsKLQotICAgICAgLy8gR2V0IFVSTCBzdHJpbmcgd2hpY2ggaXMgbG9jYXRlZCBpbiBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQKLSAgICAgIHVybFN0cmluZyA9IGh0dHBQb3N0SGVhZGVyLnN1YnN0cmluZyhzdGFydCwgZW5kKTsKLSAgICB9Ci0KLSAgICAvLyBFbHNlIHRocm93IGV4Y2VwdGlvbgotICAgIGVsc2UKLSAgICB7Ci0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAiSFRUUCBoZWFkZXIgZG9lcyBub3QgY29udGFpbiBQT1NUIGRhdGEgKHdhczogIiArIGh0dHBQb3N0SGVhZGVyICsgIikiKTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gVVJMIHN0cmluZwotICAgIHJldHVybiB1cmxTdHJpbmc7Ci0gIH0KLSAgLyoqCi0gICAqIFV0aWxpdHkgdG8gcHJlc2VudCBIVFRQIGhlYWRlciBpbmZvcm1hdGlvbiBhcyBhdHRyaWJ1dGUtdmFsdWUgcGFpcnMsIAotICAgKiBiYXNlZCBvbiAnOicgYXMgYXR0cmlidXRlLXZhbHVlIHNlcGFyYXRvci4KLSAgICogQHBhcmFtIGh0dHBIZWFkZXJTdHJpbmcgYW4gSFRUUCBoZWFkZXIgc3RyaW5nLgotICAgKiBAcGFyYW0gc2VwYXJhdG9ycyBhdHRyaWJ1dGUtdmFsdWUgc2VwYXJhdG9yIGxpc3QuCi0gICAqIEByZXR1cm4gSFRUUCBoZWFkZXIgaW5mb3JtYXRpb24gYXMgYXR0cmlidXRlLXZhbHVlIHBhaXJzLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB1bmFibGUgdG8gY3JlYXRlIEhUVFAgaGVhZGVyIGluZm9ybWF0aW9uIAotICAgKiAgICAgICAgIGFzIGF0dHJpYnV0ZS12YWx1ZSBwYWlycy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgTWFwIGdldEh0dHBIZWFkZXJUb2tlbnMoU3RyaW5nIGh0dHBIZWFkZXJTdHJpbmcsIFN0cmluZyBzZXBhcmF0b3JzKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGh0dHBIZWFkZXJTdHJpbmcsICJcblxyXGYiKTsKLSAgICBNYXAgbWFwID0gbmV3IEhhc2hNYXAoKTsKLSAgICBTdHJpbmcgbmFtZSA9IG51bGw7Ci0gICAgd2hpbGUgKHRva2VuaXplci5oYXNNb3JlVG9rZW5zKCkpCi0gICAgewotICAgICAgU3RyaW5nIGxpbmUgPSB0b2tlbml6ZXIubmV4dFRva2VuKCk7Ci0gICAgICBpbnQgaW5kZXggPSBsaW5lLmluZGV4T2Yoc2VwYXJhdG9ycyk7Ci0gICAgICBpZiAoaW5kZXggPiAwICYmIGluZGV4IDwgbGluZS5sZW5ndGgoKSAtIDEpCi0gICAgICB7Ci0gICAgICAJbmFtZSA9IGxpbmUuc3Vic3RyaW5nKDAsIGluZGV4KS50b1VwcGVyQ2FzZSgpOwotICAgICAgICBtYXAucHV0KG5hbWUsIGxpbmUuc3Vic3RyaW5nKGluZGV4ICsgMSkudHJpbSgpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaWYgKChuYW1lICE9IG51bGwpICYmIChsaW5lLmxlbmd0aCgpPjApICYmIENoYXJhY3Rlci5pc1doaXRlc3BhY2UobGluZS5jaGFyQXQoMCkpKQotICAgICAgICAgICBtYXAucHV0KG5hbWUsIG1hcC5nZXQobmFtZSkgKyAiICIgKyBsaW5lLnRyaW0oKSk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBtYXA7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBVdGlsaXR5IHRvIHRha2Ugc3ViIGF0dHJpYnV0ZSB2YWx1ZSBmcm9tIEhUVFAgaGVhZGVyCi0gICAqIEBwYXJhbSBodHRwSGVhZGVyU3RyaW5nIGFuIEhUVFAgaGVhZGVyIHN0cmluZy4KLSAgICogQHBhcmFtIGF0dHJpYnV0ZU5hbWUgYXR0cmlidXRlIG5hbWUuCi0gICAqIEBwYXJhbSBzdWJBdHRyaWJ1dGVOYW1lIHN1YiBhdHRyaWJ1dGUgbmFtZS4KLSAgICogQHJldHVybiBzdWIgYXR0cmlidXRlIHZhbHVlIGZyb20gSFRUUCBoZWFkZXIuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHVuYWJsZSB0byBnZXQgc3ViIGF0dHJpYnV0ZSB2YWx1ZSBmcm9tIEhUVFAgaGVhZGVyLiAKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEh0dHBIZWFkZXJTdWJBdHRyaWJ1dGUoU3RyaW5nIGh0dHBIZWFkZXJTdHJpbmcsIAotICAgICAgU3RyaW5nIGF0dHJpYnV0ZU5hbWUsIFN0cmluZyBzdWJBdHRyaWJ1dGVOYW1lKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIC8vIGdldCBhdHRyaWJ1dGUgdmFsdWUKLSAgICBTdHJpbmcgdmFsdWUgPSAKLSAgICAgIChTdHJpbmcpIGdldEh0dHBIZWFkZXJUb2tlbnMoaHR0cEhlYWRlclN0cmluZywiOiIpLmdldChhdHRyaWJ1dGVOYW1lLnRvVXBwZXJDYXNlKCkpOwotICAgIGlmKHZhbHVlICE9IG51bGwpCi0gICAgewotICAgICAgLy8gc2VhcmNoIHN1YiBhdHRyaWJ1dGUgdG9rZW4KLSAgICAgIGludCBpZHhRID0gdmFsdWUudG9VcHBlckNhc2UoKS5pbmRleE9mKHN1YkF0dHJpYnV0ZU5hbWUudG9VcHBlckNhc2UoKSsiPVwiIik7Ci0gICAgICBpbnQgaWR4ID0gdmFsdWUudG9VcHBlckNhc2UoKS5pbmRleE9mKHN1YkF0dHJpYnV0ZU5hbWUudG9VcHBlckNhc2UoKSsiPSIpOwotICAgICAgLy8gaWYgYXR0cmlidXRlIGlzIHF1b3RlZAotICAgICAgaWYgKGlkeFEgIT0gLTEpIAotICAgICAgewotICAgICAgICBpZHhRICs9IChzdWJBdHRyaWJ1dGVOYW1lKyI9XCIiKS5sZW5ndGgoKTsKLSAgICAgICAgaW50IGVJZHhRID0gdmFsdWUuaW5kZXhPZigiXCIiLCBpZHhRKTsKLSAgICAgICAgaWYgKGVJZHhRICE9IC0xKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZyhpZHhRLCBlSWR4USk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyBpZiBhdHRyaWJ1dGUgZG8gbm90IHF1b3RlZAotICAgICAgZWxzZSBpZiAoaWR4ICE9IC0xKQotICAgICAgewotICAgICAgICBpZHggKz0gKHN1YkF0dHJpYnV0ZU5hbWUrIj0iKS5sZW5ndGgoKTsKLSAgICAgICAgaW50IGVJZHggPSAtMTsKLSAgICAgICAgLy8gZmluZCBlbmQgc3BhY2Ugc2VwYXJhdG9yCi0gICAgICAgIGlmICgoZUlkeCA9IHZhbHVlLmluZGV4T2YoIiAiLCBpZHgpKSAhPSAtMSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcoaWR4LCBlSWR4KTsKLSAgICAgICAgfQotICAgICAgICAvLyBmaW5kIGNvbWEgc2VwYXJhdG9yCi0gICAgICAgIGVsc2UgaWYgKChlSWR4ID0gdmFsdWUuaW5kZXhPZigiOyIsIGlkeCkpICE9IC0xKQotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZyhpZHgsIGVJZHgpOwotICAgICAgICB9Ci0gICAgICAgIC8vIHRoaXMgaXMgbGFzdCBhdHRyaWJ1dGUKLSAgICAgICAgZWxzZSAKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcoaWR4KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgLy8gaWYgYXR0cmlidXRlIGRvIG5vdCBmb3VuZAotICAgICAgZWxzZSAKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB2YWx1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBVdGlsaXR5IHRvIHRha2UgYXR0cmlidXRlIHZhbHVlIGZyb20gSFRUUCBoZWFkZXIKLSAgICogQHBhcmFtIGh0dHBIZWFkZXJTdHJpbmcgYW4gSFRUUCBoZWFkZXIgc3RyaW5nLgotICAgKiBAcGFyYW0gYXR0cmlidXRlTmFtZSBhdHRyaWJ1dGUgbmFtZS4KLSAgICogQHJldHVybiBhdHRyaWJ1dGUgdmFsdWUgZnJvbSBIVFRQIGhlYWRlci4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdW5hYmxlIHRvIGdldCBhdHRyaWJ1dGUgdmFsdWUgZnJvbSBIVFRQIGhlYWRlci4gCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRIdHRwSGVhZGVyQXR0cmlidXRlKFN0cmluZyBodHRwSGVhZGVyU3RyaW5nLCAKLSAgICAgIFN0cmluZyBhdHRyaWJ1dGVOYW1lKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIFN0cmluZyBhdHRyaWJ1dGVWYWx1ZSA9IAotICAgICAgICAoU3RyaW5nKSBnZXRIdHRwSGVhZGVyVG9rZW5zKGh0dHBIZWFkZXJTdHJpbmcsIjoiKS5nZXQoYXR0cmlidXRlTmFtZS50b1VwcGVyQ2FzZSgpKTsKLSAgICAvLyBnZXQgZmlyc3QgdG9rZW4KLSAgICBpZigoYXR0cmlidXRlVmFsdWUgIT0gbnVsbCkgJiYgKGF0dHJpYnV0ZVZhbHVlLmluZGV4T2YoIjsiKSAhPSAtMSkpIHsKLSAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlVmFsdWUuc3Vic3RyaW5nKDAsIGF0dHJpYnV0ZVZhbHVlLmluZGV4T2YoIjsiKSk7Ci0gICAgfQotICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9IdHRwSGVhZGVyc1ZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9IdHRwSGVhZGVyc1ZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzZhNDk5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvSHR0cEhlYWRlcnNWYWxpZGF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3MjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWw7Ci0KLWltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotaW1wb3J0IGphdmEubmV0LlVSTDsKLWltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKLWltcG9ydCBjb20uaWJtLmljdS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotaW1wb3J0IHN1bi5uZXQud3d3Lk1lc3NhZ2VIZWFkZXI7Ci0KLWltcG9ydCBjb20uaWJtLmljdS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBjaGVja3MgSFRUUCByZXF1ZXN0IGhlYWRlcnMgYWJvdXQgUkZDIDI2MTYuCi0gKgotICogQGF1dGhvciBWb2xvZGluIAotICovCi1wdWJsaWMgY2xhc3MgSHR0cEhlYWRlcnNWYWxpZGF0b3IKLXsKLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0FMTE9XID0gIkFsbG93IjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05URU5UX1RZUEUgPSAiQ29udGVudC1UeXBlIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05URU5UX0VOQ09ESU5HID0gIkNvbnRlbnQtRW5jb2RpbmciOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRFTlRfTEFOR1VBR0UgPSAiQ29udGVudC1MYW5ndWFnZSI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQ09OVEVOVF9MRU5HSFQgPSAiQ29udGVudC1MZW5ndGgiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRFTlRfTE9DQVRJT04gPSAiQ29udGVudC1Mb2NhdGlvbiI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQ09OVEVOVF9SQU5HRSA9ICJDb250ZW50LVJhbmdlIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9FWFBJUkVTID0gIkV4cGlyZXMiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0xBU1RfTU9ESUZJRUQgPSAiTGFzdC1Nb2RpZmllZCI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQ0FDSEVfQ09OVFJPTCA9ICJDYWNoZS1Db250cm9sIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05ORUNUSU9OID0gIkNvbm5lY3Rpb24iOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0RBVEUgPSAiRGF0ZSI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfUFJBR01BID0gIlByYWdtYSI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfVFJBSUxFUiA9ICJUcmFpbGVyIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9UUkFOU0ZFUl9FTkNPRElORyA9ICJUcmFuc2Zlci1FbmNvZGluZyI7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9VUEdSQURFID0gIlVwZ3JhZGUiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1ZJQSA9ICJWaWEiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1dBUk5JTkcgPSAiV2FybmluZyI7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9BQ0NFUFQgPSAiQWNjZXB0IjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9BQ0NFUFRfQ0hBUlNFVCA9ICJBY2NlcHQtQ2hhcnNldCI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQUNDRVBUX0VOQ09ESU5HID0gIkFjY2VwdC1FbmNvZGluZyI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQUNDRVBUX0xBTkdVQUdFID0gIkFjY2VwdC1MYW5ndWFnZSI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQVVUSE9SSVpBVElPTiA9ICJBdXRob3JpemF0aW9uIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9FWFBFQ1QgPSAiRXhwZWN0IjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9GUk9NID0gIkZyb20iOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0hPU1QgPSAiSG9zdCI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfSUZfTUFUQ0ggPSAiSWYtTWF0Y2giOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0lGX01PRElGSUVEX1NJTkNFID0gIklmLU1vZGlmaWVkLVNpbmNlIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9JRl9OT05FX01BVENIID0gIklmLU5vbmUtTWF0Y2giOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0lGX1JBTkdFID0gIklmLVJhbmdlIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9JRl9VTk1PRElGSUVEX1NJTkNFID0KLSAgICAiSWYtVW5tb2RpZmllZC1TaW5jZSI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfTUFYX0ZPUldBUkRTID0gIk1heC1Gb3J3YXJkcyI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfUFJPWFlfQVVUSE9SSVpBVElPTiA9Ci0gICAgIlByb3h5LUF1dGhvcml6YXRpb24iOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1JBTkdFID0gIlJhbmdlIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9SRUZFUkVSID0gIlJlZmVyZXIiOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX1RFID0gIlRFIjsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9VU0VSX0FHRU5UID0gIlVzZXItQWdlbnQiOwotCi0gIC8qKgotICAgKiBUaGlzIGNsYXNzIGNoZWNrcyBlLW1haWwgc3RyaW5nIGFib3V0IFJGQyA4MjIuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGNsYXNzIE1haWxib3hWYWxpZGF0b3IKLSAgewotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXJbXSBTUEVDSUFMID0KLSAgICAgIHsgJygnLCAnKScsICc8JywgJz4nLCAnQCcsICcsJywgJzsnLCAnOicsICdcXCcsICdcIicsICcuJywgJ1snLCAnXScgfTsKLQotICAgIC8qKgotICAgIAkqIFZhbGlkYXRlcyBlLW1haWwgc3RyaW5nLgotICAgICogQHBhcmFtIG1haWxib3ggZS1tYWlsIHN0cmluZwotICAgICogQHJldHVybiBib29sZWFuICB0cnVlIGlmIGUtbWFpbCBzdHJpbmcgaXMgY29uZm9ybSB0byBSRkMgODIyLCBmYWxzZSBvdGhlcndpc2UuCi0gICAgKi8KLQotICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiB2YWxpZGF0ZU1haWxib3goU3RyaW5nIG1haWxib3gpCi0gICAgewotCi0gICAgICBpZiAoIWlzRnVsbEFkZHIobWFpbGJveCkgJiYgIWlzU2hvcnRBZGRyKG1haWxib3gpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIE1ldGhvZCBpc1NpbXBsZUFkZHIuCi0gICAgICogQHBhcmFtIG1haWxib3gKLSAgICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzU2hvcnRBZGRyKFN0cmluZyBtYWlsYm94KQotICAgIHsKLSAgICAgIGludCBpbmRleEF0ID0gbWFpbGJveC5pbmRleE9mKCdAJyk7Ci0gICAgICBpZiAoaW5kZXhBdCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICBpZiAoIWlzTG9jYWxQYXJ0KG1haWxib3guc3Vic3RyaW5nKDAsIGluZGV4QXQpKQotICAgICAgICB8fCAhaXNEb21haW4obWFpbGJveC5zdWJzdHJpbmcoaW5kZXhBdCArIDEpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBNZXRob2QgaXNEb21haW0uCi0gICAgICogQHBhcmFtIHN0cmluZwotICAgICAqIHJldHVybiBib29sZWFuCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0RvbWFpbihTdHJpbmcgc3RyaW5nKQotICAgIHsKLSAgICAgIGlmIChzdHJpbmcudHJpbSgpLmxlbmd0aCgpID09IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyaW5nLCAiLiIpOwotICAgICAgd2hpbGUgKHN0Lmhhc01vcmVUb2tlbnMoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHN1YkRvbWFpbiA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgICBpZiAoIWlzQXRvbShzdWJEb21haW4pICYmICFpc0RvbWFpbkxpdGVyYWwoc3ViRG9tYWluKSkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgIH0KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIE1ldGhvZCBpc0RvbWFpbkxpdGVyYWwuCi0gICAgICogQHBhcmFtIHN1YkRvbWFpbgotICAgICAqIEByZXR1cm4gYm9vbGVhbgotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNEb21haW5MaXRlcmFsKFN0cmluZyBzdWJEb21haW4pCi0gICAgewotICAgICAgaWYgKGdldExhc3REb21haW5MaXRlcmFsKHN1YkRvbWFpbiwgMCkgPT0gc3ViRG9tYWluLmxlbmd0aCgpKQotICAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIGludCBnZXRMYXN0RG9tYWluTGl0ZXJhbChTdHJpbmcgc3RyLCBpbnQgc3RhcnRJbmRleCkKLSAgICB7Ci0KLSAgICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgICAvL2ludCBuZXdJbmRleCA9IDA7Ci0KLSAgICAgIC8vIGlmIGVuZCBpZiB0aGUgc3RyaW5nCi0gICAgICBpZiAoc3RhcnRJbmRleCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotICAgICAgLy8gaWYgdGhlIGJlZ2luIGlzIG5vdCAnWycKLSAgICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSAhPSAnWycpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotCi0gICAgICBpbmRleCsrOwotICAgICAgd2hpbGUgKHRydWUpCi0gICAgICB7Ci0gICAgICAgIGluZGV4ID0gZ2V0TGFzdER0ZXh0KHN0ciwgaW5kZXgpOwotICAgICAgICBpZiAoaW5kZXggPT0gc3RyLmxlbmd0aCgpKQotICAgICAgICAgIHJldHVybiBzdGFydEluZGV4OwotICAgICAgICBpZiAoQmFzaWNSdWxlcy5pc1F1b3RlZFBhaXIoc3RyLCBpbmRleCAtIDEpKQotICAgICAgICB7Ci0gICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgICBpZiAoaW5kZXggPT0gc3RyLmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgLy8gaWYgdGhlIGVuZCBpcyBub3QgJ10nCi0gICAgICBpZiAoc3RyLmNoYXJBdChpbmRleCkgIT0gJ10nKQotICAgICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgICAgaW5kZXgrKzsKLSAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0TGFzdER0ZXh0KFN0cmluZyBzdHIsIGludCBzdGFydEluZGV4KQotICAgIHsKLSAgICAgIGlmIChzdHIubGVuZ3RoKCkgPT0gc3RhcnRJbmRleCkKLSAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0gICAgICBpbnQgaSA9IDA7Ci0gICAgICBmb3IgKDsgaSA8IHN0ci5sZW5ndGgoKTsgaSsrKQotICAgICAgewotICAgICAgICBjaGFyIGNoID0gc3RyLmNoYXJBdChpKTsKLSAgICAgICAgaSA9IEJhc2ljUnVsZXMuZ2V0TGFzdEluZGV4TFdTKHN0ciwgaSk7Ci0gICAgICAgIGlmICghQmFzaWNSdWxlcy5pc0NIQVIoY2gpCi0gICAgICAgICAgfHwgc3RyLmNoYXJBdChpKSA9PSAnWycKLSAgICAgICAgICB8fCBzdHIuY2hhckF0KGkpID09ICddJwotICAgICAgICAgIHx8IHN0ci5jaGFyQXQoaSkgPT0gJ1xcJwotICAgICAgICAgIHx8IHN0ci5jaGFyQXQoaSkgPT0gQmFzaWNSdWxlcy5DUikKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBpICsgMTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIGkgKyAxOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIE1ldGhvZCBpc0xvY2FsUGFydC4KLSAgICAgKiBAcGFyYW0gc3RyaW5nCi0gICAgICogQHJldHVybiBib29sZWFuCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0xvY2FsUGFydChTdHJpbmcgc3RyaW5nKQotICAgIHsKLSAgICAgIGlmIChzdHJpbmcudHJpbSgpLmxlbmd0aCgpID09IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyaW5nLCAiLiIpOwotICAgICAgd2hpbGUgKHN0Lmhhc01vcmVUb2tlbnMoKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKCFpc1dvcmQoc3QubmV4dFRva2VuKCkpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIE1ldGhvZCBpc1dvcmQuCi0gICAgICogQHBhcmFtIHN0cmluZwotICAgICAqIEByZXR1cm4gYm9vbGVhbgotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNXb3JkKFN0cmluZyBzdHJpbmcpCi0gICAgewotICAgICAgaWYgKCFpc0F0b20oc3RyaW5nKSAmJiAhaXNRdW90ZWRTdHJpbmcoc3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogTWV0aG9kIGlzQXRvbS4KLSAgICAgKiBAcGFyYW0gc3RyaW5nCi0gICAgICogQHJldHVybiBib29sZWFuCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0F0b20oU3RyaW5nIHN0cmluZykKLSAgICB7Ci0gICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID09IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIGlmICghQmFzaWNSdWxlcy5pc0NIQVIoc3RyaW5nLmNoYXJBdChpKSkKLSAgICAgICAgICB8fCBpc1NwZWNpYWwoc3RyaW5nLmNoYXJBdChpKSkKLSAgICAgICAgICB8fCBzdHJpbmcuY2hhckF0KGkpID09ICcgJwotICAgICAgICAgIHx8IEJhc2ljUnVsZXMuaXNDVEwoc3RyaW5nLmNoYXJBdChpKSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIE1ldGhvZCBpc1NwZWNpYWwuCi0gICAgICogQHBhcmFtIGMKLSAgICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzU3BlY2lhbChjaGFyIGNoKQotICAgIHsKLSAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBTUEVDSUFMLmxlbmd0aDsgaW5kZXgrKykKLSAgICAgIHsKLSAgICAgICAgaWYgKGNoID09IFNQRUNJQUxbaW5kZXhdKQotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIE1ldGhvZCBpc0Z1bGxBZGRyLgotICAgICAqIEBwYXJhbSBtYWlsYm94Ci0gICAgICogQHJldHVybiBib29sZWFuCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0Z1bGxBZGRyKFN0cmluZyBtYWlsYm94KQotICAgIHsKLSAgICAgIGlmIChtYWlsYm94Lmxlbmd0aCgpID09IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGludCBpZHhMVCA9IG1haWxib3guaW5kZXhPZignPCcpOwotICAgICAgaWYgKGlkeExUID09IC0xKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgIC8vaXMgcGhyYXNlCi0gICAgICBTdHJpbmcgcGhyYXNlID0gbWFpbGJveC5zdWJzdHJpbmcoMCwgaWR4TFQpOwotICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihwaHJhc2UsICIgIik7Ci0gICAgICBpZiAoc3QuY291bnRUb2tlbnMoKSA9PSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB3aGlsZSAoc3QuaGFzTW9yZVRva2VucygpKQotICAgICAgewotICAgICAgICBpZiAoIWlzV29yZChzdC5uZXh0VG9rZW4oKSkpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgaWYgKHBocmFzZS5jaGFyQXQocGhyYXNlLmxlbmd0aCgpIC0gMSkgIT0gQmFzaWNSdWxlcy5TUCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotCi0gICAgICAvL2lzIHJvdXRlLWFkZHIKLSAgICAgIFN0cmluZyByb3V0ZUFkZHIgPSBtYWlsYm94LnN1YnN0cmluZyhpZHhMVCArIDEpOwotICAgICAgLy8gaXMgcm91dGUKLSAgICAgIGludCBpZHhUd29TcG90ID0gcm91dGVBZGRyLmluZGV4T2YoJzonKTsKLSAgICAgIGlmIChpZHhUd29TcG90ICE9IC0xKQotICAgICAgewotICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3RSb3V0ZUFkZHIgPQotICAgICAgICAgIG5ldyBTdHJpbmdUb2tlbml6ZXIocm91dGVBZGRyLnN1YnN0cmluZygwLCBpZHhUd29TcG90KSwgIiwiKTsKLSAgICAgICAgaWYgKCFzdFJvdXRlQWRkci5oYXNNb3JlVG9rZW5zKCkpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB3aGlsZSAoc3RSb3V0ZUFkZHIuaGFzTW9yZVRva2VucygpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc0RvbWFpbihzdFJvdXRlQWRkci5uZXh0VG9rZW4oKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLy9pcyBhZGRyIHNwZWMKLSAgICAgIGludCBpZHhHVCA9IHJvdXRlQWRkci5pbmRleE9mKCc+Jyk7Ci0gICAgICBpZiAoaWR4R1QgPT0gLTEgfHwgaWR4R1QgIT0gKHJvdXRlQWRkci5sZW5ndGgoKSAtIDEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgIGlmICghaXNTaG9ydEFkZHIocm91dGVBZGRyLnN1YnN0cmluZyhpZHhUd29TcG90ICsgMSwgaWR4R1QpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZXMgSFRUUCByZXF1ZXN0IGhlYWRlcnMuCi0gICAqIEBwYXJhbSBoZWFkZXJzIEhUVFAgcmVxdWVzdCBoZWFkZXJzCi0gICAqIEByZXR1cm4gYm9vbGVhbiAgdHJ1ZSBpZiBhbGwgSFRUUCBoZWFkZXJzIHN0cmluZyBpcyBjb25mb3JtIHRvIFJGQyAyNjE2LCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiB2YWxpZGF0ZUh0dHBSZXF1ZXN0SGVhZGVycyhTdHJpbmcgaGVhZGVycykKLSAgewotCi0gICAgTWVzc2FnZUhlYWRlciBtaCA9IG5ldyBNZXNzYWdlSGVhZGVyKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgbWgucGFyc2VIZWFkZXIobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGhlYWRlcnMuZ2V0Qnl0ZXMoKSkpOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgU3RyaW5nIGhlYWRlciA9IG51bGw7Ci0gICAgU3RyaW5nIHZhbHVlID0gbnVsbDsKLQotICAgIGhlYWRlciA9IG1oLmdldEtleSgwKTsKLSAgICBpZiAoaGVhZGVyICE9IG51bGwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB2YWx1ZSA9IG1oLmdldFZhbHVlKDApOwotICAgIGlmICh2YWx1ZSA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy9tZXRob2QKLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHZhbHVlLCAiICIpOwotICAgIGlmICghc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIHN0ciA9IHN0Lm5leHRUb2tlbigpOwotICAgIGlmICghaXNUb2tlbihzdHIpKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFzdC5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzdHIgPSBzdC5uZXh0VG9rZW4oKTsKLSAgICBpZiAoIWlzVVJJKHN0cikgJiYgIXN0ci5lcXVhbHMoIioiKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc3RyID0gc3QubmV4dFRva2VuKCk7Ci0gICAgaWYgKCFpc0hUVFBWZXJzaW9uKHN0cikpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpbnQgaSA9IDE7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgd2hpbGUgKChoZWFkZXIgPSBtaC5nZXRLZXkoaSkpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHZhbHVlID0gbWguZ2V0VmFsdWUoaSk7Ci0gICAgICAgIGkrKzsKLQotICAgICAgICAvLyBpcyBtZXNzYWdlLWhlYWRlciB0b2tlbgotICAgICAgICBpZiAoIWlzVG9rZW4oaGVhZGVyKSkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgLy8tLS0tIGVudGl0eS1oZWFkZXJzCi0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX0FMTE9XKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNWYWxpZEFsbG93KHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9DT05URU5UX1RZUEUpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc01lZGlhVHlwZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX0NPTlRFTlRfRU5DT0RJTkcpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc1Rva2VuKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfQ09OVEVOVF9MQU5HVUFHRSkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzTGFuZ3VhZ2VUYWcodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9DT05URU5UX0xFTkdIVCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzRGlkZ2l0KHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfQ09OVEVOVF9MT0NBVElPTikpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzVVJJKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9DT05URU5UX1JBTkdFKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNWYWxpZENvbnRlbnRSYW5nZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfRVhQSVJFUykKLSAgICAgICAgICB8fCBoZWFkZXIuZXF1YWxzKEhFQURFUl9MQVNUX01PRElGSUVEKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNIVFRQRGF0ZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy0tLS0gZ2VuZXJhbC1oZWFkZXJzCi0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9DQUNIRV9DT05UUk9MKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNWYWxpZENhY2hlQ29udHJvbCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAvL3JldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX0NPTk5FQ1RJT04pKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc1Rva2VuKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9EQVRFKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNIVFRQRGF0ZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfUFJBR01BKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNQcmFnbWFEZXJlY3RpdmUodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX1RSQUlMRVIpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc1Rva2VuKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9UUkFOU0ZFUl9FTkNPRElORykpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzVHJhbnNmZXJDb2RpbmcodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX1VQR1JBREUpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc1ZhbGlkVXBncmFkZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfVklBKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNWYWxpZFZpYSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfV0FSTklORykpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzVmFsaWRXYXJuaW5nKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9BQ0NFUFQpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc1ZhbGlkQWNjZXB0KHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9BQ0NFUFRfQ0hBUlNFVCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzVmFsaWRBY2NlcHRDaGFyU2V0KHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9BQ0NFUFRfRU5DT0RJTkcpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc1ZhbGlkQWNjZXB0RW5jb2RpbmcodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX0FDQ0VQVF9MQU5HVUFHRSkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzVmFsaWRBY2NlcHRMYW5ndWFnZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfQVVUSE9SSVpBVElPTikKLSAgICAgICAgICB8fCBoZWFkZXIuZXF1YWxzKEhFQURFUl9QUk9YWV9BVVRIT1JJWkFUSU9OKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNDcmVkZW50aWFscyh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX0VYUEVDVCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzRXhwZWN0YXRpb24odmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX0ZST00pKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFNYWlsYm94VmFsaWRhdG9yLnZhbGlkYXRlTWFpbGJveCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfSUZfTUFUQ0gpCi0gICAgICAgICAgfHwgaGVhZGVyLmVxdWFscyhIRUFERVJfSUZfTk9ORV9NQVRDSCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzVmFsaWRJZk1hdGNoKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfSUZfUkFOR0UpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc0VudGl0eVRhZyh2YWx1ZSkgJiYgIWlzSFRUUERhdGUodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8tLS0JCQkKLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX0lGX01PRElGSUVEX1NJTkNFKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNIVFRQRGF0ZSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX0lGX1VOTU9ESUZJRURfU0lOQ0UpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc0hUVFBEYXRlKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfTUFYX0ZPUldBUkRTKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNEaWRnaXQodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX1VTRVJfQUdFTlQpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc1ZhbGlkVXNlckFnZW50KHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoZWFkZXIuZXF1YWxzKEhFQURFUl9URSkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzVmFsaWRURSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfUkFOR0UpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc1JhbmdlKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaGVhZGVyLmVxdWFscyhIRUFERVJfSE9TVCkpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIWlzSG9zdCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGhlYWRlci5lcXVhbHMoSEVBREVSX1JFRkVSRVIpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc1VSSSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNWYWxpZElmTWF0Y2guCi0gICAqIEBwYXJhbSB2YWx1ZQotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNWYWxpZElmTWF0Y2goU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgaWYgKHZhbHVlLnRyaW0oKS5sZW5ndGgoKSA9PSAwKQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCIqIi5lcXVhbHModmFsdWUudHJpbSgpKSkKLSAgICAgIHJldHVybiB0cnVlOwotCi0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcih2YWx1ZSwgIiwiKTsKLSAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgU3RyaW5nIHN0ciA9IHN0Lm5leHRUb2tlbigpLnRyaW0oKTsKLSAgICAgIGlmICghaXNFbnRpdHlUYWcoc3RyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzVmFsaWRVcGdyYWRlLgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVmFsaWRVcGdyYWRlKFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGlmICh2YWx1ZS50cmltKCkubGVuZ3RoKCkgPT0gMCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHZhbHVlLCAiLCIpOwotICAgIHdoaWxlIChzdC5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgc3RyID0gc3QubmV4dFRva2VuKCkudHJpbSgpOwotICAgICAgaWYgKCFpc1Byb2R1Y3Qoc3RyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1ZhbGlkQ2FjaGVDb250cm9sLgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVmFsaWRDYWNoZUNvbnRyb2woU3RyaW5nIHZhbHVlKQotICB7Ci0KLSAgICBpZiAodmFsdWUudHJpbSgpLmxlbmd0aCgpID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHZhbHVlLCAiLCIpOwotICAgIHdoaWxlIChzdC5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgc3RyID0gc3QubmV4dFRva2VuKCkudHJpbSgpOwotICAgICAgaW50IGluZGV4ID0gc3RyLmluZGV4T2YoJz0nKTsKLSAgICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgIHsKLQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoIWlzVG9rZW4oc3RyLnN1YnN0cmluZygwLCBpbmRleCkpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgU3RyaW5nIHN0ckFmdGVyRXEgPSBzdHIuc3Vic3RyaW5nKGluZGV4ICsgMSk7Ci0gICAgICAgIGlmICghaXNUb2tlbihzdHJBZnRlckVxKSAmJiAhaXNRdW90ZWRTdHJpbmcoc3RyQWZ0ZXJFcSkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNIVFRQVmVyc2lvbi4KLSAgICogQHBhcmFtIHN0cgotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNIVFRQVmVyc2lvbihTdHJpbmcgc3RyKQotICB7Ci0gICAgaWYgKCFzdHIuc3RhcnRzV2l0aCgiSFRUUC8iKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnQgaWR4ID0gIkhUVFAvIi5sZW5ndGgoKTsKLQotICAgIGludCBpZHgyID0gc3RyLmluZGV4T2YoIi4iKTsKLQotICAgIC8vIDEqRElHSVQKLSAgICBTdHJpbmcgcyA9IHN0ci5zdWJzdHJpbmcoaWR4LCBpZHgyKTsKLSAgICBpZiAoIWlzRGlkZ2l0KHMpKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcyA9IHN0ci5zdWJzdHJpbmcoaWR4MiArIDEpOwotICAgIGlmICghaXNEaWRnaXQocykpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNWYWxpZFdhcm5pbmcuCi0gICAqIEBwYXJhbSB2YWx1ZQotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNWYWxpZFdhcm5pbmcoU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgaWYgKHZhbHVlLmxlbmd0aCgpID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7Ci0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcih2YWx1ZSwgIiAiKTsKLSAgICBTdHJpbmcgc3RyID0gc3QubmV4dFRva2VuKCk7Ci0KLSAgICBpZiAoc3RyLmxlbmd0aCgpID4gMyB8fCAhaXNEaWRnaXQoc3RyKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghc3QuaGFzTW9yZVRva2VucygpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHN0ciA9IHN0Lm5leHRUb2tlbigpOwotICAgIGlmICghaXNIb3N0KHN0cikgJiYgIWlzVG9rZW4oc3RyKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vaWYoIXN0Lmhhc01vcmVUb2tlbnMoKSkgcmV0dXJuIGZhbHNlOwotICAgIHN0ciA9IHN0Lm5leHRUb2tlbigiIikudHJpbSgpOwotICAgIC8vPz8/Ci0KLSAgICBpbnQgbGFzdFF1b3RlZFN0cmluZyA9IEJhc2ljUnVsZXMuZ2V0TGFzdFF1b3RlZFN0cmluZyhzdHIsIDApOwotICAgIGlmIChsYXN0UXVvdGVkU3RyaW5nID09IHN0ci5sZW5ndGgoKSkKLSAgICB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFN0cmluZyBkYXRhID0gc3RyLnN1YnN0cmluZyhsYXN0UXVvdGVkU3RyaW5nKTsKLSAgICAgIGlmIChkYXRhLmNoYXJBdChkYXRhLmxlbmd0aCgpKSAhPSAnXCInKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZiAoc3RyLmNoYXJBdCgwKSAhPSAnXCInKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZiAoIWlzSFRUUERhdGUoc3RyLnN1YnN0cmluZygxLCBkYXRhLmxlbmd0aCgpIC0gMSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzVmFsaWRWaWEuCi0gICAqIEBwYXJhbSB2YWx1ZQotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNWYWxpZFZpYShTdHJpbmcgdmFsdWUpCi0gIHsKLSAgICBpZiAodmFsdWUudHJpbSgpLmxlbmd0aCgpID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHZhbHVlLCAiLCIpOwotICAgIHdoaWxlIChzdC5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0KLSAgICAgIFN0cmluZyBzdHIgPSBzdC5uZXh0VG9rZW4oKS50cmltKCk7Ci0KLSAgICAgIFN0cmluZ1Rva2VuaXplciBzdDIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgIiAiKTsKLQotICAgICAgLy8gcHJvdG9jb2wvdmVyc2lvbgotICAgICAgc3RyID0gc3QyLm5leHRUb2tlbigpOwotICAgICAgaW50IGlkeCA9IHN0ci5pbmRleE9mKCIvIik7Ci0gICAgICBpZiAoaWR4ID09IC0xKQotICAgICAgewotICAgICAgICBpZiAoIWlzVG9rZW4oc3RyKSkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGlmICghaXNUb2tlbihzdHIuc3Vic3RyaW5nKDAsIGlkeCkpCi0gICAgICAgICAgfHwgIWlzVG9rZW4oc3RyLnN1YnN0cmluZyhpZHggKyAxKSkpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotCi0gICAgICAvL2hvc3QKLSAgICAgIHN0ciA9IHN0Mi5uZXh0VG9rZW4oKTsKLSAgICAgIGlmICghaXNIb3N0KHN0cikgJiYgIWlzVG9rZW4oc3RyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAvL2NvbW1lbnQKLSAgICAgIGlmIChzdDIuaGFzTW9yZVRva2VucygpKQotICAgICAgewotICAgICAgICBzdHIgPSBzdDIubmV4dFRva2VuKCIiKTsKLSAgICAgICAgaWYgKCFpc0NvbW1lbnQoc3RyLnRyaW0oKSkpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNIb3N0LgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzSG9zdChTdHJpbmcgdmFsdWUpCi0gIHsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIG5ldyBVUkwoImh0dHA6Ly8iICsgdmFsdWUpOwotICAgIH0KLSAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNWYWxpZEFsbG93LgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVmFsaWRBbGxvdyhTdHJpbmcgdmFsdWUpCi0gIHsKLSAgICBpZiAodmFsdWUudHJpbSgpLmxlbmd0aCgpID09IDApCi0gICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIodmFsdWUsICIsIik7Ci0gICAgd2hpbGUgKHN0Lmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFN0cmluZyBzdHIgPSBzdC5uZXh0VG9rZW4oKS50cmltKCk7Ci0gICAgICBpZiAoIWlzVG9rZW4oc3RyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNWYWxpZENvbnRlbnRSYW5nZS4KLSAgICogQHBhcmFtIHZhbHVlCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1ZhbGlkQ29udGVudFJhbmdlKFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA9PSAwKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aCgiYnl0ZXMiKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgc3RyID0gdmFsdWUuc3Vic3RyaW5nKCJieXRlcyIubGVuZ3RoKCkpLnRyaW0oKTsKLQotICAgIGludCBpZHggPSBzdHIuaW5kZXhPZigiLyIpOwotICAgIGlmIChpZHggPT0gLTEpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgYnl0ZVJhbmdlID0gc3RyLnN1YnN0cmluZygwLCBpZHgpOwotICAgIGludCBpZHgyID0gYnl0ZVJhbmdlLmluZGV4T2YoIi0iKTsKLSAgICBpZiAoaWR4MiA9PSAtMSkKLSAgICB7Ci0gICAgICBpZiAoIWJ5dGVSYW5nZS5lcXVhbHMoIioiKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgaWYgKCFpc0RpZGdpdChieXRlUmFuZ2Uuc3Vic3RyaW5nKDAsIGlkeDIpKQotICAgICAgICB8fCAhaXNEaWRnaXQoYnl0ZVJhbmdlLnN1YnN0cmluZyhpZHgyICsgMSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFpc0RpZGdpdChzdHIuc3Vic3RyaW5nKGlkeCArIDEpKQotICAgICAgJiYgIXN0ci5zdWJzdHJpbmcoaWR4ICsgMSkuZXF1YWxzKCIqIikpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNSYW5nZS4KLSAgICogQHBhcmFtIHZhbHVlCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1JhbmdlKFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA9PSAwKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aCgiYnl0ZXM9IikpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIHN0ckJ5dGVSYW5nZSA9IHZhbHVlLnN1YnN0cmluZygiYnl0ZXM9Ii5sZW5ndGgoKSk7Ci0KLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ckJ5dGVSYW5nZSwgIiwiKTsKLSAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgU3RyaW5nIHN0ciA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgaW50IGlkeCA9IHN0ci5pbmRleE9mKCItIik7Ci0gICAgICBpZiAoaWR4ID09IC0xKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZiAoaWR4ID09IDApCi0gICAgICB7Ci0gICAgICAgIGlmICghaXNEaWRnaXQoc3RyLnN1YnN0cmluZygxKSkpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoaWR4ID09IChzdHIubGVuZ3RoKCkgLSAxKSkKLSAgICAgICAgewotICAgICAgICAgIGlmICghaXNEaWRnaXQoc3RyLnN1YnN0cmluZygwLCBzdHIubGVuZ3RoKCkgLSAxKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFpc0RpZGdpdChzdHIuc3Vic3RyaW5nKDAsIGlkeCkpCi0gICAgICAgICAgICB8fCAhaXNEaWRnaXQoc3RyLnN1YnN0cmluZyhpZHggKyAxKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgfQotCi0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1ZhbGlkVEUuCi0gICAqIEBwYXJhbSB2YWx1ZQotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNWYWxpZFRFKFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGlmICh2YWx1ZS50cmltKCkubGVuZ3RoKCkgPT0gMCkKLSAgICAgIHJldHVybiB0cnVlOwotCi0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcih2YWx1ZSwgIiwiKTsKLSAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgU3RyaW5nIHN0ciA9IHN0Lm5leHRUb2tlbigpLnRyaW0oKTsKLSAgICAgIGlmIChzdC5lcXVhbHMoInRyYWlsZXJzIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICBpbnQgaWR4ID0gc3RyLmluZGV4T2YoIjsiKTsKLSAgICAgIGlmIChpZHggPT0gLTEpCi0gICAgICB7Ci0gICAgICAgIGlmICghaXNMYW5ndWFnZVJhbmdlKHN0cikpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBTdHJpbmcgXzEgPSBzdHIuc3Vic3RyaW5nKDAsIGlkeCkudHJpbSgpOwotICAgICAgICBTdHJpbmcgXzIgPSBzdHIuc3Vic3RyaW5nKGlkeCArIDEpLnRyaW0oKTsKLSAgICAgICAgaWYgKCFpc0xhbmd1YWdlUmFuZ2UoXzEpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFpc1FBbmRRVmFsdWUoXzIpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1ZhbGlkVXNlckFnZW50LgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVmFsaWRVc2VyQWdlbnQoU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgaWYgKHZhbHVlLmxlbmd0aCgpID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcih2YWx1ZSwgIiAiKTsKLSAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgU3RyaW5nIHN0ciA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgaWYgKCFpc1Byb2R1Y3Qoc3RyKSAmJiAhaXNDb21tZW50KHN0cikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc0NvbW1lbnQuCi0gICAqIEBwYXJhbSBzdHIKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzQ29tbWVudChTdHJpbmcgc3RyKQotICB7Ci0gICAgaWYgKEJhc2ljUnVsZXMuZ2V0TGFzdENvbW1lbnQoc3RyLCAwKSAhPSBzdHIubGVuZ3RoKCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzVmFsaWRBY2NlcHRMYW5ndWFnZS4KLSAgICogQHBhcmFtIHZhbHVlCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1ZhbGlkQWNjZXB0TGFuZ3VhZ2UoU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgaWYgKHZhbHVlLnRyaW0oKS5sZW5ndGgoKSA9PSAwKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcih2YWx1ZSwgIiwiKTsKLSAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgU3RyaW5nIHN0ciA9IHN0Lm5leHRUb2tlbigpLnRyaW0oKTsKLSAgICAgIGludCBpZHggPSBzdHIuaW5kZXhPZigiOyIpOwotICAgICAgaWYgKGlkeCA9PSAtMSkKLSAgICAgIHsKLSAgICAgICAgaWYgKCFpc1Rva2VuKHN0cikpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBTdHJpbmcgXzEgPSBzdHIuc3Vic3RyaW5nKDAsIGlkeCkudHJpbSgpOwotICAgICAgICBTdHJpbmcgXzIgPSBzdHIuc3Vic3RyaW5nKGlkeCArIDEpLnRyaW0oKTsKLSAgICAgICAgaWYgKCFpc1Rva2VuKF8xKSkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghaXNBY2NlcHRQYXJhbXMoXzIpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc0xhbmd1YWdlUmFuZ2UuCi0gICAqIEBwYXJhbSBzdHIKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzTGFuZ3VhZ2VSYW5nZShTdHJpbmcgc3RyKQotICB7Ci0gICAgaWYgKHN0ci50cmltKCkuZXF1YWxzKCIqIikpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgIi0iKTsKLSAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgaWYgKCFpczhBTFBIQShzdC5uZXh0VG9rZW4oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzVmFsaWRBY2NlcHRFbmNvZGluZy4KLSAgICogQHBhcmFtIHZhbHVlCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1ZhbGlkQWNjZXB0RW5jb2RpbmcoU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgaWYgKHZhbHVlLnRyaW0oKS5sZW5ndGgoKSA9PSAwKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcih2YWx1ZSwgIiwiKTsKLSAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgU3RyaW5nIHN0ciA9IHN0Lm5leHRUb2tlbigpLnRyaW0oKTsKLSAgICAgIGludCBpZHggPSBzdHIuaW5kZXhPZigiOyIpOwotICAgICAgaWYgKGlkeCA9PSAtMSkKLSAgICAgIHsKLSAgICAgICAgaWYgKCFpc1Rva2VuKHN0cikgJiYgIXN0ci5lcXVhbHMoIioiKSkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBfMSA9IHN0ci5zdWJzdHJpbmcoMCwgaWR4KS50cmltKCk7Ci0gICAgICAgIFN0cmluZyBfMiA9IHN0ci5zdWJzdHJpbmcoaWR4ICsgMSkudHJpbSgpOwotCi0gICAgICAgIGlmICgoIWlzVG9rZW4oXzEpICYmICFfMS5lcXVhbHMoIioiKSkpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWlzUUFuZFFWYWx1ZShfMikpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotCi0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzVmFsaWRBY2NlcHRDaGFyU2V0LgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVmFsaWRBY2NlcHRDaGFyU2V0KFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGlmICh2YWx1ZS50cmltKCkubGVuZ3RoKCkgPT0gMCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIodmFsdWUsICIsIik7Ci0gICAgd2hpbGUgKHN0Lmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIFN0cmluZyBzdHIgPSBzdC5uZXh0VG9rZW4oKS50cmltKCk7Ci0gICAgICBpbnQgaWR4ID0gc3RyLmluZGV4T2YoIjsiKTsKLSAgICAgIGlmIChpZHggPT0gLTEpCi0gICAgICB7Ci0gICAgICAgIGlmICghaXNUb2tlbihzdHIpICYmICFzdHIuZXF1YWxzKCIqIikpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBTdHJpbmcgXzEgPSBzdHIuc3Vic3RyaW5nKDAsIGlkeCkudHJpbSgpOwotICAgICAgICBTdHJpbmcgXzIgPSBzdHIuc3Vic3RyaW5nKGlkeCArIDEpLnRyaW0oKTsKLQotICAgICAgICBpZiAoKCFpc1Rva2VuKF8xKSAmJiAhXzEuZXF1YWxzKCIqIikpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFpc1FBbmRRVmFsdWUoXzIpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1ZhbGlkQWNjZXB0LgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVmFsaWRBY2NlcHQoU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgaWYgKHZhbHVlLnRyaW0oKS5sZW5ndGgoKSA9PSAwKQotICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHZhbHVlLCAiLCIpOwotICAgIHdoaWxlIChzdC5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgc3RyID0gc3QubmV4dFRva2VuKCkudHJpbSgpOwotICAgICAgaW50IGlkeCA9IHN0ci5pbmRleE9mKCI7Iik7Ci0gICAgICBpZiAoaWR4ID09IC0xKQotICAgICAgewotICAgICAgICBpZiAoIWlzTWVkaWFSYW5nZShzdHIpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaWYgKCFpc01lZGlhUmFuZ2Uoc3RyLnN1YnN0cmluZygwLCBpZHgpLnRyaW0oKSkKLSAgICAgICAgICB8fCAhaXNBY2NlcHRQYXJhbXMoc3RyLnN1YnN0cmluZyhpZHggKyAxKS50cmltKCkpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgfQotCi0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc0FjY2VwdFBhcmFtcy4KLSAgICogQHBhcmFtIHN0cmluZwotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNBY2NlcHRQYXJhbXMoU3RyaW5nIHN0cmluZykKLSAgewotICAgIGlmIChzdHJpbmcudHJpbSgpLmxlbmd0aCgpID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0cmluZywgIjsiKTsKLSAgICBTdHJpbmcgc3RyID0gc3QubmV4dFRva2VuKCk7Ci0KLSAgICBpbnQgaWR4ID0gc3RyLmluZGV4T2YoIj0iKTsKLSAgICBpZiAoaWR4ID09IC0xKQotICAgIHsKLSAgICAgIGlmIChzdHIuZXF1YWxzKCJxIikgfHwgIWlzVG9rZW4oc3RyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgaWYgKHN0ci5zdWJzdHJpbmcoMCwgaWR4KS5lcXVhbHMoInEiKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKCFpc1FWYWx1ZShzdHIuc3Vic3RyaW5nKGlkeCArIDEpKSkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGlmICghaXNQYXJhbWV0ZXJXaXRob3V0VmFsdWUoc3RyKSkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgd2hpbGUgKHN0Lmhhc01vcmVFbGVtZW50cygpKQotICAgIHsKLSAgICAgIHN0ciA9IHN0Lm5leHRUb2tlbigpOwotICAgICAgaWYgKCFpc1BhcmFtZXRlcldpdGhvdXRWYWx1ZShzdHIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1FBbmRRVmFsdWUuCi0gICAqIEBwYXJhbSBzdHIKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzUUFuZFFWYWx1ZShTdHJpbmcgc3RyKQotICB7Ci0gICAgc3RyID0gc3RyLnRyaW0oKTsKLSAgICBpZiAoIXN0ci50cmltKCkuc3RhcnRzV2l0aCgicT0iKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWlzUVZhbHVlKHN0ci5zdWJzdHJpbmcoInE9Ii5sZW5ndGgoKSkpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1FWYWx1ZS4KLSAgICogQHBhcmFtIHN0cmluZwotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNRVmFsdWUoU3RyaW5nIHN0cmluZykKLSAgewotICAgIGlmIChzdHJpbmcudHJpbSgpLmxlbmd0aCgpID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpbnQgaWR4ID0gc3RyaW5nLmluZGV4T2YoIi4iKTsKLSAgICBpZiAoaWR4ID09IC0xKQotICAgIHsKLSAgICAgIGlmICghIjAiLmVxdWFscyhzdHJpbmcpICYmICEiMSIuZXF1YWxzKHN0cmluZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFN0cmluZyBzdHJEaWcgPSBzdHJpbmcuc3Vic3RyaW5nKGlkeCArIDEpOwotICAgICAgaWYgKHN0ckRpZy5sZW5ndGgoKSA+IDMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgaWYgKHN0cmluZy5zdWJzdHJpbmcoMCwgaWR4KS5lcXVhbHMoIjAiKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKCFpc0RpZGdpdChzdHJEaWcpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoIXN0cmluZy5zdWJzdHJpbmcoMCwgaWR4KS5lcXVhbHMoIjEiKSkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJEaWcubGVuZ3RoKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIGlmIChzdHJEaWcuY2hhckF0KGkpICE9ICcwJykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc01lZGlhUmFuZ2UuCi0gICAqIEBwYXJhbSBzdHIKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzTWVkaWFSYW5nZShTdHJpbmcgc3RyKQotICB7Ci0gICAgaWYgKHN0ci50cmltKCkubGVuZ3RoKCkgPT0gMCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGludCBpZHggPSBzdHIuaW5kZXhPZigiLyIpOwotICAgIGlmIChpZHggPT0gLTEpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWlzVG9rZW4oc3RyLnN1YnN0cmluZygwLCBpZHgpKSAmJiAhc3RyLnN1YnN0cmluZygwLCBpZHgpLmVxdWFscygiKiIpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghaXNUb2tlbihzdHIuc3Vic3RyaW5nKGlkeCArIDEpKQotICAgICAgJiYgIXN0ci5zdWJzdHJpbmcoaWR4ICsgMSkuZXF1YWxzKCIqIikpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNFbnRpdHlUYWcuCi0gICAqIEBwYXJhbSB2YWx1ZQotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNFbnRpdHlUYWcoU3RyaW5nIHZhbHVlKQotICB7Ci0KLSAgICBpbnQgaWR4ID0gMDsKLSAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgiVy8iKSkKLSAgICAgIGlkeCA9IDI7Ci0gICAgaWYgKCFpc1F1b3RlZFN0cmluZyh2YWx1ZS5zdWJzdHJpbmcoaWR4KSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzRXhwZWN0YXRpb24uCi0gICAqIEBwYXJhbSB2YWx1ZQotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNFeHBlY3RhdGlvbihTdHJpbmcgdmFsdWUpCi0gIHsKLSAgICBpZiAodmFsdWUuZXF1YWxzKCIxMDAtY29udGludWUiKSkKLSAgICAgIHJldHVybiB0cnVlOwotCi0gICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcih2YWx1ZSwgIjsiKTsKLSAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgaWYgKCFpc1BhcmFtZXRlcldpdGhvdXRWYWx1ZShzdC5uZXh0VG9rZW4oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNDcmVkZW50aWFscy4KLSAgICogQHBhcmFtIHZhbHVlCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0NyZWRlbnRpYWxzKFN0cmluZyB2YWx1ZSkKLSAgewotICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIodmFsdWUsICIgIik7Ci0gICAgaWYgKCFpc1Rva2VuKHN0Lm5leHRUb2tlbigpKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHdoaWxlIChzdC5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgcGFyYW0gPSBzdC5uZXh0VG9rZW4oIiwiKTsKLSAgICAgIGlmICghaXNQYXJhbWV0ZXIocGFyYW0pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1Byb2R1Y3QuCi0gICAqIEBwYXJhbSB2YWx1ZQotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNQcm9kdWN0KFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGludCBpZHggPSB2YWx1ZS5pbmRleE9mKCIvIik7Ci0gICAgaWYgKGlkeCA9PSAtMSkKLSAgICB7Ci0gICAgICBpZiAoIWlzVG9rZW4odmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpZiAoIWlzVG9rZW4odmFsdWUuc3Vic3RyaW5nKDAsIGlkeCkpCi0gICAgICAgIHx8ICFpc1Rva2VuKHZhbHVlLnN1YnN0cmluZyhpZHggKyAxKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzVHJhbnNmZXJDb2RpbmcuCi0gICAqIEBwYXJhbSB2YWx1ZQotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNUcmFuc2ZlckNvZGluZyhTdHJpbmcgdmFsdWUpCi0gIHsKLSAgICBpZiAodmFsdWUuZXF1YWxzKCJjaHVua2VkIikpCi0gICAgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHZhbHVlLCAiOyIpOwotICAgICAgaWYgKCFpc1Rva2VuKHN0Lm5leHRUb2tlbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICB7Ci0gICAgICAgIGlmICghaXNQYXJhbWV0ZXIoc3QubmV4dFRva2VuKCkpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1BhcmFtZXRlci4KLSAgICogQHBhcmFtIHN0cmluZwotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNQYXJhbWV0ZXIoU3RyaW5nIHN0cmluZykKLSAgewotCi0gICAgLy8gY2hlY2sgcGFyYW1ldGVyCQotICAgIGludCBpZHggPSBzdHJpbmcuaW5kZXhPZigiPSIpOwotICAgIGlmICghaXNUb2tlbihzdHJpbmcuc3Vic3RyaW5nKDAsIGlkeCkpKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3RyaW5nIHBhclZhbHVlID0gc3RyaW5nLnN1YnN0cmluZyhpZHggKyAxKTsKLSAgICBpZiAoIWlzVG9rZW4ocGFyVmFsdWUpICYmICFpc1F1b3RlZFN0cmluZyhwYXJWYWx1ZSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNQYXJhbWV0ZXJXaXRob3V0VmFsdWUuCi0gICAqIEBwYXJhbSBzdHJpbmcKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzUGFyYW1ldGVyV2l0aG91dFZhbHVlKFN0cmluZyBzdHJpbmcpCi0gIHsKLQotICAgIC8vIGNoZWNrIHBhcmFtZXRlcgkKLSAgICBpbnQgaWR4ID0gc3RyaW5nLmluZGV4T2YoIj0iKTsKLSAgICBpZiAoaWR4ICE9IC0xKQotICAgIHsKLSAgICAgIGlmICghaXNUb2tlbihzdHJpbmcuc3Vic3RyaW5nKDAsIGlkeCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBTdHJpbmcgcGFyVmFsdWUgPSBzdHJpbmcuc3Vic3RyaW5nKGlkeCArIDEpOwotICAgICAgaWYgKCFpc1Rva2VuKHBhclZhbHVlKSAmJiAhaXNRdW90ZWRTdHJpbmcocGFyVmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGlmICghaXNUb2tlbihzdHJpbmcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzUHJhZ21hRGVyZWN0aXZlLgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzUHJhZ21hRGVyZWN0aXZlKFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGlmICh2YWx1ZS5lcXVhbHMoIm5vLWNhY2hlIikpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBlbHNlCi0gICAgewotICAgICAgaW50IGlkeCA9IHZhbHVlLmluZGV4T2YoIj0iKTsKLSAgICAgIGlmIChpZHggPT0gLTEpCi0gICAgICB7Ci0gICAgICAgIGlmIChpc1Rva2VuKHZhbHVlKSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHN0ciA9IHZhbHVlLnN1YnN0cmluZyhpZHggKyAxKTsKLSAgICAgICAgaWYgKGlzVG9rZW4odmFsdWUuc3Vic3RyaW5nKDAsIGlkeCkpCi0gICAgICAgICAgJiYgKGlzVG9rZW4oc3RyKSB8fCBpc1F1b3RlZFN0cmluZyhzdHIpKSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzSFRUUERhdGUuCi0gICAqIEBwYXJhbSB2YWx1ZQotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNIVFRQRGF0ZShTdHJpbmcgdmFsdWUpCi0gIHsKLQotICAgIFN0cmluZyByZmMxMTIzX2RhdGUgPSAiRUVFLCBkZCBNTU0geXl5eSBoaDptbTpzcyAnR01UJyI7Ci0gICAgU3RyaW5nIHJmYzg1MF9kYXRlID0gIkVFRUUsIGRkLU1NTS15eSBoaDptbTpzcyAnR01UJyI7Ci0gICAgU3RyaW5nIGFzY3RpbWVfZGF0ZSA9ICJFRUUgTU1NIGQgaGg6bW06c3MgeXl5eSI7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICBTaW1wbGVEYXRlRm9ybWF0IHNkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KHJmYzExMjNfZGF0ZSwgTG9jYWxlLlVTKTsKLSAgICAgIGlmIChzZGYucGFyc2UodmFsdWUpICE9IG51bGwpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdHJ5Ci0gICAgewotICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChyZmM4NTBfZGF0ZSwgTG9jYWxlLlVTKTsKLSAgICAgIGlmIChzZGYucGFyc2UodmFsdWUpICE9IG51bGwpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdHJ5Ci0gICAgewotICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChhc2N0aW1lX2RhdGUsIExvY2FsZS5VUyk7Ci0gICAgICBpZiAoc2RmLnBhcnNlKHZhbHVlKSAhPSBudWxsKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGUpCi0gICAgewotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLQotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1VSSS4KLSAgICogQHBhcmFtIHZhbHVlCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1VSSShTdHJpbmcgdmFsdWUpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBuZXcgVVJMKHZhbHVlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBuZXcgVVJMKCJodHRwOi8vbG9jYWxob3N0IiArIHZhbHVlKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gZTIpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNMYW5ndWFnZVRhZy4KLSAgICogQHBhcmFtIHZhbHVlCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0xhbmd1YWdlVGFnKFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGludCBpZHggPSB2YWx1ZS5pbmRleE9mKCItIik7Ci0gICAgaWYgKGlkeCA9PSAtMSkKLSAgICB7Ci0gICAgICByZXR1cm4gaXM4QUxQSEEodmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgaWYgKCFpczhBTFBIQSh2YWx1ZS5zdWJzdHJpbmcoMCwgaWR4KSkKLSAgICAgICAgfHwgIWlzOEFMUEhBKHZhbHVlLnN1YnN0cmluZyhpZHggKyAxKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzOEFMUEhBLgotICAgKiBAcGFyYW0gc3RyaW5nCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpczhBTFBIQShTdHJpbmcgc3RyaW5nKQotICB7Ci0gICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IDggfHwgIWlzQUxQSEEoc3RyaW5nKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgaXNBTFBIQS4KLSAgICogQHBhcmFtIHN0cmluZwotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNBTFBIQShTdHJpbmcgc3RyaW5nKQotICB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoKCk7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoIUJhc2ljUnVsZXMuaXNDSEFSKHN0cmluZy5jaGFyQXQoaSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzRGlkZ2l0LgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzRGlkZ2l0KFN0cmluZyB2YWx1ZSkKLSAgewotICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA9PSAwKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNoYXJbXSBjaHMgPSB2YWx1ZS50b0NoYXJBcnJheSgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGlmIChjaHNbaV0gPCAnMCcgfHwgY2hzW2ldID4gJzknKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzTWVkaWFUeXBlLgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzTWVkaWFUeXBlKFN0cmluZyB2YWx1ZSkKLSAgewotICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIodmFsdWUsICI7Iik7Ci0gICAgU3RyaW5nIG1lZGlhVHlwZSA9IHN0Lm5leHRUb2tlbigpOwotCi0gICAgaW50IGlkeCA9IG1lZGlhVHlwZS5pbmRleE9mKCIvIik7Ci0gICAgaWYgKCFpc1Rva2VuKG1lZGlhVHlwZS5zdWJzdHJpbmcoMCwgaWR4KSkKLSAgICAgIHx8ICFpc1Rva2VuKG1lZGlhVHlwZS5zdWJzdHJpbmcoaWR4ICsgMSkpKQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgewotICAgICAgaWYgKCFpc1BhcmFtZXRlcihzdC5uZXh0VG9rZW4oIjsiKS50cmltKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1F1b3RlZFN0cmluZy4KLSAgICogQHBhcmFtIHBhclZhbHVlCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1F1b3RlZFN0cmluZyhTdHJpbmcgcGFyVmFsdWUpCi0gIHsKLSAgICBpZiAoQmFzaWNSdWxlcy5nZXRMYXN0UXVvdGVkU3RyaW5nKHBhclZhbHVlLCAwKSAhPSBwYXJWYWx1ZS5sZW5ndGgoKSkKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1Rva2VuLgotICAgKiBAcGFyYW0gdmFsdWUKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVG9rZW4oU3RyaW5nIHZhbHVlKQotICB7Ci0gICAgcmV0dXJuIEJhc2ljUnVsZXMuaXNUb2tlbih2YWx1ZSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvSmF2YUVuY29kaW5nLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL0phdmFFbmNvZGluZy5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjkzNTM2Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvSmF2YUVuY29kaW5nLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIC8qKgotIyAgKiA8Y29weXJpZ2h0PgotIyAgKgotIyAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMyAgSUJNIENvcnBvcmF0aW9uLCBCZWFjb24gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBJbmMuIGFuZCBvdGhlcnMuCi0jICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgICogCi0jICAqIENvbnRyaWJ1dG9yczogCi0jICAqICAgSUJNICAgICAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgICogICBCZWFjb25JVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyAgKiA8L2NvcHlyaWdodD4KLSMgICovCi0jIyBJMThOOiAyMDAzLjAyLjI2IG1vZGlmaWVkIGJ5IEsuTmFrYWdvbWVAQmVhY29uSVQgCi0jIyBQcm9wZXJ0eSBmaWxlIHVzZWQgdG8gZ2V0IEphdmFWTSBzdXBwb3J0ZWQgY2hhcmFjdGVyIGVuY29kaW5nLgotCi1JU084ODU5XzE9SVNPODg1OV8xIAotSVNPODg1OS0xPUlTTzg4NTlfMSAKLXV0Zjg9VVRGOCAKLXV0Zi04PVVURjggCi1VVEYtOD1VVEY4IAotdXRmMTY9VVRGLTE2IAotdXRmLTE2PVVURi0xNiAKLVVURjE2PVVURi0xNiAKLQotIyMgCi1TaGlmdF9KSVM9V2luZG93cy0zMUoKLQotTVM5MzI9V2luZG93cy0zMUoKLSNTSklTPVNoaWZ0X0pJUwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvTUlNRUNvbnN0YW50cy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9NSU1FQ29uc3RhbnRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NGI0YjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9NSU1FQ29uc3RhbnRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbDsKLQotLyoqCi0gKiBBIHNldCBvZiBIVFRQIHZhbHVlcyB0aGF0IGFyZSBkZWZpbmVkIGJ5IE5ldHdvcmsgV29ya2luZyBHcm91cC4KLSAqIGh0dHA6Ly93d3cuaWV0Zi5vcmcvCi0gKgotICogQHZlcnNpb24gMS4wCi0gKiBAYXV0aG9yIElseWEgS2Fub25pcm92IChraW9AaXNnLmF4bW9yLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIE1JTUVDb25zdGFudHMgewotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVJfQ09OVEVOVF9JRCA9ICJDb250ZW50LUlEIjsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0NPTlRFTlRfVFJBTlNGRVJfRU5DT0RJTkcgPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUl9DT05URU5UX1RZUEUgPSAiQ29udGVudC1UeXBlIjsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL01JTUVVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9NSU1FVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjljZDMzMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL01JTUVVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBjb20uaWJtLmljdS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci0KLS8qKgotICogU2V0IG9mIEhUVFBMIHJlbGF0ZWQgdXRpbGl0aWVzLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0KLSAqLwotCi1wdWJsaWMgZmluYWwgY2xhc3MgTUlNRVV0aWxzCi17Ci0KLSAgLyoqCi0gICAqIFV0aWxpdHkgdG8gcHJlc2VudCBNSU1FIGhlYWRlciBpbmZvcm1hdGlvbiBhcyBhdHRyaWJ1dGUtdmFsdWUgcGFpcnMsIAotICAgKiBiYXNlZCBvbiAnOicgYXMgYXR0cmlidXRlLXZhbHVlIHNlcGFyYXRvci4KLSAgICogQHBhcmFtIG1pbWVIZWFkZXJTdHJpbmcgYW4gTUlNRSBoZWFkZXIgc3RyaW5nLgotICAgKiBAcGFyYW0gc2VwYXJhdG9ycyBhdHRyaWJ1dGUtdmFsdWUgc2VwYXJhdG9yIGxpc3QuCi0gICAqIEByZXR1cm4gTUlNRSBoZWFkZXIgaW5mb3JtYXRpb24gYXMgYXR0cmlidXRlLXZhbHVlIHBhaXJzLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB1bmFibGUgdG8gY3JlYXRlIE1JTUUgaGVhZGVyIGluZm9ybWF0aW9uIAotICAgKiAgICAgICAgIGFzIGF0dHJpYnV0ZS12YWx1ZSBwYWlycy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgTWFwIGdldE1pbWVIZWFkZXJUb2tlbnMoU3RyaW5nIG1pbWVIZWFkZXJTdHJpbmcsIFN0cmluZyBzZXBhcmF0b3JzKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKG1pbWVIZWFkZXJTdHJpbmcsICJcblxyXGYiKTsKLSAgICBNYXAgbWFwID0gbmV3IEhhc2hNYXAoKTsKLSAgICB3aGlsZSAodG9rZW5pemVyLmhhc01vcmVUb2tlbnMoKSkKLSAgICB7Ci0gICAgICBTdHJpbmcgbGluZSA9IHRva2VuaXplci5uZXh0VG9rZW4oKTsKLSAgICAgIGludCBpbmRleCA9IGxpbmUuaW5kZXhPZihzZXBhcmF0b3JzKTsKLSAgICAgIGlmIChpbmRleCA+IDAgJiYgaW5kZXggPCBsaW5lLmxlbmd0aCgpIC0gMSkKLSAgICAgIHsKLSAgICAgICAgbWFwLnB1dChsaW5lLnN1YnN0cmluZygwLCBpbmRleCkudG9VcHBlckNhc2UoKSwgbGluZS5zdWJzdHJpbmcoaW5kZXggKyAxKS50cmltKCkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbWFwOwotICB9Ci0gIAotICAvKioKLSAgICogVXRpbGl0eSB0byB0YWtlIHN1YiBhdHRyaWJ1dGUgdmFsdWUgZnJvbSBNSU1FIGhlYWRlcgotICAgKiBAcGFyYW0gbWltZUhlYWRlclN0cmluZyBhbiBNSU1FIGhlYWRlciBzdHJpbmcuCi0gICAqIEBwYXJhbSBhdHRyaWJ1dGVOYW1lIGF0dHJpYnV0ZSBuYW1lLgotICAgKiBAcGFyYW0gc3ViQXR0cmlidXRlTmFtZSBzdWIgYXR0cmlidXRlIG5hbWUuCi0gICAqIEByZXR1cm4gc3ViIGF0dHJpYnV0ZSB2YWx1ZSBmcm9tIE1JTUUgaGVhZGVyLgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB1bmFibGUgdG8gZ2V0IHN1YiBhdHRyaWJ1dGUgdmFsdWUgZnJvbSBNSU1FIGhlYWRlci4gCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRNaW1lSGVhZGVyU3ViQXR0cmlidXRlKFN0cmluZyBtaW1lSGVhZGVyU3RyaW5nLCAKLSAgICAgIFN0cmluZyBhdHRyaWJ1dGVOYW1lLCBTdHJpbmcgc3ViQXR0cmlidXRlTmFtZSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBnZXQgYXR0cmlidXRlIHZhbHVlCi0gICAgU3RyaW5nIHZhbHVlID0gCi0gICAgICAoU3RyaW5nKSBnZXRNaW1lSGVhZGVyVG9rZW5zKG1pbWVIZWFkZXJTdHJpbmcsIjoiKS5nZXQoYXR0cmlidXRlTmFtZS50b1VwcGVyQ2FzZSgpKTsKLSAgICBpZih2YWx1ZSAhPSBudWxsKQotICAgIHsKLSAgICAgIC8vIHNlYXJjaCBzdWIgYXR0cmlidXRlIHRva2VuCi0gICAgICBpbnQgaWR4USA9IHZhbHVlLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihzdWJBdHRyaWJ1dGVOYW1lLnRvVXBwZXJDYXNlKCkrIj1cIiIpOwotICAgICAgaW50IGlkeCA9IHZhbHVlLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihzdWJBdHRyaWJ1dGVOYW1lLnRvVXBwZXJDYXNlKCkrIj0iKTsKLSAgICAgIC8vIGlmIGF0dHJpYnV0ZSBpcyBxdW90ZWQKLSAgICAgIGlmIChpZHhRICE9IC0xKSAKLSAgICAgIHsKLSAgICAgICAgaWR4USArPSAoc3ViQXR0cmlidXRlTmFtZSsiPVwiIikubGVuZ3RoKCk7Ci0gICAgICAgIGludCBlSWR4USA9IHZhbHVlLmluZGV4T2YoIlwiIiwgaWR4USk7Ci0gICAgICAgIGlmIChlSWR4USAhPSAtMSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcoaWR4USwgZUlkeFEpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgLy8gaWYgYXR0cmlidXRlIGlzIG5vdCBxdW90ZWQKLSAgICAgIGVsc2UgaWYgKGlkeCAhPSAtMSkKLSAgICAgIHsKLSAgICAgICAgaWR4ICs9IChzdWJBdHRyaWJ1dGVOYW1lKyI9IikubGVuZ3RoKCk7Ci0gICAgICAgIGludCBlSWR4ID0gLTE7Ci0gICAgICAgIC8vIGZpbmQgZW5kIHNwYWNlIHNlcGFyYXRvcgotICAgICAgICBpZiAoKGVJZHggPSB2YWx1ZS5pbmRleE9mKCIgIiwgaWR4KSkgIT0gLTEpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKGlkeCwgZUlkeCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gZmluZCBjb21hIHNlcGFyYXRvcgotICAgICAgICBlbHNlIGlmICgoZUlkeCA9IHZhbHVlLmluZGV4T2YoIjsiLCBpZHgpKSAhPSAtMSkKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcoaWR4LCBlSWR4KTsKLSAgICAgICAgfQotICAgICAgICAvLyB0aGlzIGlzIGxhc3QgYXR0cmlidXRlCi0gICAgICAgIGVsc2UgCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKGlkeCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vIGlmIGF0dHJpYnV0ZSBkbyBub3QgZm91bmQKLSAgICAgIGVsc2UgCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLQotICAvKioKLSAgICogVXRpbGl0eSB0byB0YWtlIGF0dHJpYnV0ZSB2YWx1ZSBmcm9tIE1JTUUgaGVhZGVyCi0gICAqIEBwYXJhbSBtaW1lSGVhZGVyU3RyaW5nIGFuIE1JTUUgaGVhZGVyIHN0cmluZy4KLSAgICogQHBhcmFtIGF0dHJpYnV0ZU5hbWUgYXR0cmlidXRlIG5hbWUuCi0gICAqIEByZXR1cm4gYXR0cmlidXRlIHZhbHVlIGZyb20gTUlNRSBoZWFkZXIuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHVuYWJsZSB0byBnZXQgYXR0cmlidXRlIHZhbHVlIGZyb20gTUlNRSBoZWFkZXIuIAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWltZUhlYWRlckF0dHJpYnV0ZShTdHJpbmcgbWltZUhlYWRlclN0cmluZywgCi0gICAgICBTdHJpbmcgYXR0cmlidXRlTmFtZSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWUgPSAKLSAgICAgICAgKFN0cmluZykgZ2V0TWltZUhlYWRlclRva2VucyhtaW1lSGVhZGVyU3RyaW5nLCI6IikuZ2V0KGF0dHJpYnV0ZU5hbWUudG9VcHBlckNhc2UoKSk7Ci0gICAgLy8gZ2V0IGZpcnN0IHRva2VuCi0gICAgaWYoKGF0dHJpYnV0ZVZhbHVlICE9IG51bGwpICYmIChhdHRyaWJ1dGVWYWx1ZS5pbmRleE9mKCI7IikgIT0gLTEpKSB7Ci0gICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlLnN1YnN0cmluZygwLCBhdHRyaWJ1dGVWYWx1ZS5pbmRleE9mKCI7IikpOwotICAgIH0KLSAgICByZXR1cm4gYXR0cmlidXRlVmFsdWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvTWVzc2FnZUxpc3QuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvTWVzc2FnZUxpc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTAyOGNjMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL01lc3NhZ2VMaXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBjcmVhdGVzIGFuZCBtYWludGFpbnMgYSBtZXNzYWdlIGxpc3QuCi0gKiAKLSAqIEBhdXRob3IgUGV0ZXIgIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKi8KLXB1YmxpYyBjbGFzcyBNZXNzYWdlTGlzdAotewotICAvKioKLSAgICogTWVzc2FnZSByZXNvdXJjZSBidW5kbGUuCi0gICAqLwotICBwcml2YXRlIFJlc291cmNlQnVuZGxlIG1lc3NhZ2VSZXNvdXJjZUJ1bmRsZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBNZXNzYWdlTGlzdC4KLSAgICogQHBhcmFtIHJlc291cmNlQnVuZGxlTmFtZSAgYSByZXNvdXJjZSBidW5kbGUgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBNZXNzYWdlTGlzdChTdHJpbmcgcmVzb3VyY2VCdW5kbGVOYW1lKQotICB7Ci0gICAgdGhpcy5tZXNzYWdlUmVzb3VyY2VCdW5kbGUgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUocmVzb3VyY2VCdW5kbGVOYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgYSBtZXNzYWdlIGZyb20gdGhlIHJlc291cmNlIGJ1bmRsZS4KLSAgICogQHBhcmFtIGtleSAgICAgICAgICAgICAgICAgYSBrZXkuCi0gICAqIEBwYXJhbSBkZWZhdWx0TWVzc2FnZSAgICAgIGEgZGVmYXVsdCBtZXNzYWdlLgotICAgKiBAcmV0dXJuIG1lc3NhZ2UgZnJvbSB0aGUgcmVzb3VyY2UgYnVuZGxlLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKFN0cmluZyBrZXksIFN0cmluZyBkZWZhdWx0TWVzc2FnZSkKLSAgewotICAgIHJldHVybiBnZXRNZXNzYWdlKGtleSwgbnVsbCwgZGVmYXVsdE1lc3NhZ2UpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBhIG1lc3NhZ2UgZnJvbSB0aGUgcmVzb3VyY2UgYnVuZGxlLgotICAgKiBAcGFyYW0ga2V5ICAgICAgICAgICAgICAgICBhIGtleS4KLSAgICogQHBhcmFtIG1lc3NhZ2VEYXRhICAgICAgICAgbWVzc2FnZSBkYXRhLgotICAgKiBAcGFyYW0gZGVmYXVsdE1lc3NhZ2UgICAgICBhIGRlZmF1bHQgbWVzc2FnZS4KLSAgICogQHJldHVybiBtZXNzYWdlIGZyb20gdGhlIHJlc291cmNlIGJ1bmRsZS4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0TWVzc2FnZSgKLSAgICBTdHJpbmcga2V5LAotICAgIFN0cmluZyBtZXNzYWdlRGF0YSwKLSAgICBTdHJpbmcgZGVmYXVsdE1lc3NhZ2UpCi0gIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IGRlZmF1bHRNZXNzYWdlOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0IG1lc3NhZ2UKLSAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlUmVzb3VyY2VCdW5kbGUuZ2V0U3RyaW5nKGtleSk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIElnbm9yZSBhbmQganVzdCB1c2UgZGVmYXVsdCBtZXNzYWdlCi0gICAgfQotCi0gICAgaWYgKG1lc3NhZ2VEYXRhICE9IG51bGwpCi0gICAgICBtZXNzYWdlICs9ICIgIiArIG1lc3NhZ2VEYXRhOwotCi0gICAgLy8gUmV0dXJuIG1lc3NhZ2UKLSAgICByZXR1cm4gbWVzc2FnZTsKLSAgfQotCi0gIC8qKgotICAgKiBQcmludCBhIG1lc3NhZ2UgZnJvbSB0aGUgcmVzb3VyY2UgYnVuZGxlLgotICAgKiBAcGFyYW0ga2V5ICAgICAgICAgICAgICAgICBhIGtleS4KLSAgICogQHBhcmFtIGRlZmF1bHRNZXNzYWdlICAgICAgYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgdm9pZCBwcmludE1lc3NhZ2UoU3RyaW5nIGtleSwgU3RyaW5nIGRlZmF1bHRNZXNzYWdlKQotICB7Ci0gICAgcHJpbnRNZXNzYWdlKGtleSwgbnVsbCwgZGVmYXVsdE1lc3NhZ2UpOwotICB9Ci0KLSAgLyoqCi0gICAqIFByaW50IGEgbWVzc2FnZSBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGUuCi0gICAqIEBwYXJhbSBrZXkgICAgICAgICAgICAgICAgIGEga2V5LgotICAgKiBAcGFyYW0gbWVzc2FnZURhdGEgICAgICAgICBtZXNzYWdlIGRhdGEuCi0gICAqIEBwYXJhbSBkZWZhdWx0TWVzc2FnZSAgICAgIGEgZGVmYXVsdCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHZvaWQgcHJpbnRNZXNzYWdlKAotICAgIFN0cmluZyBrZXksCi0gICAgU3RyaW5nIG1lc3NhZ2VEYXRhLAotICAgIFN0cmluZyBkZWZhdWx0TWVzc2FnZSkKLSAgewotICAgIC8vIFByaW50IG1lc3NhZ2UKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oZ2V0TWVzc2FnZShrZXksIG1lc3NhZ2VEYXRhLCBkZWZhdWx0TWVzc2FnZSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIFN0YXRpYyBnZXQgbWVzc2FnZS4KLSAgICogQHBhcmFtIHJlc291cmNlQnVuZGxlTmFtZSAgcmVzb3VyY2UgYnVuZGxlIG5hbWUuCi0gICAqIEBwYXJhbSBrZXkgICAgICAgICAgICAgICAgIGEga2V5LgotICAgKiBAcGFyYW0gbWVzc2FnZURhdGEgICAgICAgICBtZXNzYWdlIGRhdGEuCi0gICAqIEBwYXJhbSBkZWZhdWx0TWVzc2FnZSAgICAgIGEgZGVmYXVsdCBtZXNzYWdlLgotICAgKiBAcmV0dXJuIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRNZXNzYWdlKAotICAgIFN0cmluZyByZXNvdXJjZUJ1bmRsZU5hbWUsCi0gICAgU3RyaW5nIGtleSwKLSAgICBTdHJpbmcgbWVzc2FnZURhdGEsCi0gICAgU3RyaW5nIGRlZmF1bHRNZXNzYWdlKQotICB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBkZWZhdWx0TWVzc2FnZTsKLSAgICBSZXNvdXJjZUJ1bmRsZSBtZXNzYWdlUmVzb3VyY2VCdW5kbGUgPSBudWxsOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0IHJlc291cmNlIGJ1bmRsZQotICAgICAgbWVzc2FnZVJlc291cmNlQnVuZGxlID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKHJlc291cmNlQnVuZGxlTmFtZSk7Ci0KLSAgICAgIC8vIEdldCBtZXNzYWdlCi0gICAgICBtZXNzYWdlID0gbWVzc2FnZVJlc291cmNlQnVuZGxlLmdldFN0cmluZyhrZXkpOwotICAgIH0KLQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAvLyBJZ25vcmUgYW5kIGp1c3QgdXNlIGRlZmF1bHQgbWVzc2FnZQotICAgIH0KLQotICAgIGlmIChtZXNzYWdlRGF0YSAhPSBudWxsKQotICAgICAgbWVzc2FnZSArPSAiICIgKyBtZXNzYWdlRGF0YTsKLQotICAgIGlmICghbWVzc2FnZS5lbmRzV2l0aCgiLiIpKQotICAgICAgbWVzc2FnZSArPSAiLiI7Ci0KLSAgICAvLyBSZXR1cm4gbWVzc2FnZQotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIFByaW50IG1lc3NhZ2UuCi0gICAqIEBwYXJhbSByZXNvdXJjZUJ1bmRsZU5hbWUgIHJlc291cmNlIGJ1bmRsZSBuYW1lLgotICAgKiBAcGFyYW0ga2V5ICAgICAgICAgICAgICAgICBhIGtleS4KLSAgICogQHBhcmFtIG1lc3NhZ2VEYXRhICAgICAgICAgbWVzc2FnZSBkYXRhLgotICAgKiBAcGFyYW0gZGVmYXVsdE1lc3NhZ2UgICAgICBhIGRlZmF1bHQgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludE1lc3NhZ2UoCi0gICAgU3RyaW5nIHJlc291cmNlQnVuZGxlTmFtZSwKLSAgICBTdHJpbmcga2V5LAotICAgIFN0cmluZyBtZXNzYWdlRGF0YSwKLSAgICBTdHJpbmcgZGVmYXVsdE1lc3NhZ2UpCi0gIHsKLSAgICAvLyBQcmludCBtZXNzYWdlCi0gICAgU3lzdGVtLm91dC5wcmludGxuKAotICAgICAgZ2V0TWVzc2FnZShyZXNvdXJjZUJ1bmRsZU5hbWUsIGtleSwgbWVzc2FnZURhdGEsIGRlZmF1bHRNZXNzYWdlKSk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9OdWxsVXRpbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9OdWxsVXRpbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODdjY2EzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvTnVsbFV0aWwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsOwotCi0vKioKLSAqIFRoZSB1dGlsaXR5IGNsYXNzIHRvIGF1dG9tYXRlIG51bGwgY2hlY2tpbmcuCi0gKiAKLSAqIEBhdXRob3IgS3VsaWsKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIE51bGxVdGlsCi17Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGNoZWNrcyBvYmplY3RzIG9uIGV4aXN0ZW5jZSBhbmQgY29tcGFyZSB3aXRoIDxjb2RlPmVxdWFsczwvY29kZT4gbWV0aG9kLgotICAgKiBAcGFyYW0gbzEgZmlyc3Qgb2JqZWN0LgotICAgKiBAcGFyYW0gbzIgc2Vjb25kIG9iamVjdC4KLSAgICogQHJldHVybiB0cnVlIGlmIGZpcnN0IG9iamVjdCBpcyBlcXVhbCB0byB0aGUgc2Vjb25kIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8xLCBPYmplY3QgbzIpCi0gIHsKLSAgICByZXR1cm4gKChvMSA9PSBudWxsICYmIG8yID09IG51bGwpIHx8IChvMSAhPSBudWxsICYmIG8xLmVxdWFscyhvMikpKTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGNoZWNrcyBvYmplY3Qgb24gZXhpc3RlbmNlIGFuZCByZXR1cm5zIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24gd2l0aCA8Y29kZT50b1N0cmluZygpPC9jb2RlPiBtZXRob2QuCi0gICAqIEBwYXJhbSBvIHNvdXJjZSBvYmplY3QuCi0gICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKE9iamVjdCBvKQotICB7Ci0gICAgcmV0dXJuIChvID09IG51bGwpID8gbnVsbCA6IG8udG9TdHJpbmcoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9PcGVyYXRpb25TaWduYXR1cmUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvT3BlcmF0aW9uU2lnbmF0dXJlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzOWEzZjIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9PcGVyYXRpb25TaWduYXR1cmUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbDsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuSW1wb3J0OwotaW1wb3J0IGphdmF4LndzZGwuSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgamF2YXgud3NkbC5UeXBlczsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXI7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotCi0vKioKLSAqIFRoZSBjbGFzcyBpbXBsZW1lbnRzIG1lY2hhbmlzbSBmb3IgY3JlYXRpbmcgdW5pcXVlIHNpZ25hdHVyZSBvZiBvcGVyYXRpb24uCi0gKiAKLSAqIEBhdXRob3IgS3VsaWsKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIE9wZXJhdGlvblNpZ25hdHVyZQotewotICAvLyB0aGUgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbWVzc2FnZXMgaXMgcmVwcmVzZW50ZWQgYXMgZG9jdW1lbnQgc3R5bGUKLSAgLy8gdmljZSB2ZXJzYSBpcyBub3QgZ2VuZXJhbGx5IHRydWUKLSAgcHJpdmF0ZSBib29sZWFuIGlzRG9jdW1lbnRTdHlsZSA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gaXNDcmVhdGVkID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiBpc0ZhdWx0ID0gZmFsc2U7Ci0KLSAgcHJvdGVjdGVkIExpc3Qgc2lnbmF0dXJlID0gbmV3IExpbmtlZExpc3QoKTsKLSAgcHJpdmF0ZSBFbGVtZW50IGZpcnN0Qm9keSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENsYXNzIG9wZXJhdGVzIGFzIGNvbnRhaW5lciBmb3IgbWF0Y2hlZCBvcGVyYXRpb24uCi0gICogQGF1dGhvciBLdWxpawotICAgKi8KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBjbGFzcyBPcGVyYXRpb25NYXRjaAotICB7Ci0gICAgZmluYWwgcHJpdmF0ZSBTdHJpbmcgc3R5bGU7Ci0gICAgZmluYWwgcHJpdmF0ZSBCaW5kaW5nT3BlcmF0aW9uIG9wZXJhdGlvbjsKLSAgICBmaW5hbCBwcml2YXRlIExpc3Qgc2lnbmF0dXJlOwotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0b3IuCi0gICAgICogQHBhcmFtIHN0eWxlIG9wZXJhdGlvbiBzdHlsZS4KLSAgICAgKiBAcGFyYW0gc2lnbmF0dXJlIGEgc2lnbmF0dXJlLgotICAgICAqIEBwYXJhbSBvcGVyYXRpb24gYSBiaW5kaW5nIG9wZXJhdGlvbi4KLSAgICAgKi8KLSAgICBwcm90ZWN0ZWQgT3BlcmF0aW9uTWF0Y2goCi0gICAgICBTdHJpbmcgc3R5bGUsCi0gICAgICBMaXN0IHNpZ25hdHVyZSwKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gb3BlcmF0aW9uKQotICAgIHsKLSAgICAgIHRoaXMuc3R5bGUgPSBzdHlsZTsKLSAgICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlOwotICAgICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247Ci0gICAgfQotICAgIC8qKgotICAgICAqIEdldHMgb3BlcmF0aW9uIHN0eWxlLgotICAgICAqIEByZXR1cm4gb3BlcmF0aW9uIHN0eWxlLgotICAgICAqLwotICAgIHB1YmxpYyBTdHJpbmcgZ2V0T3BlcmF0aW9uU3R5bGUoKQotICAgIHsKLSAgICAgIHJldHVybiBzdHlsZTsKLSAgICB9Ci0gICAgLyoqCi0gICAgICogR2V0cyBXU0RMIGJpbmRpbmcgb3BlcmF0aW9uIG9iamVjdC4KLSAgICAgKiBAcmV0dXJuIFdTREwgYmluZGluZyBvcGVyYXRpb24gb2JqZWN0LgotICAgICAqLwotICAgIHB1YmxpYyBCaW5kaW5nT3BlcmF0aW9uIGdldE9wZXJhdGlvbigpCi0gICAgewotICAgICAgcmV0dXJuIG9wZXJhdGlvbjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBHZXRzIG9wZXJhdGlvbiBzaWduYXR1cmUgYXMgbGlzdC4KLSAgICAgKiBAcmV0dXJuIG9wZXJhdGlvbiBzaWduYXR1cmUgYXMgbGlzdC4KLSAgICAgKi8KLSAgICBwdWJsaWMgTGlzdCBnZXRTaWduYXR1cmUoKQotICAgIHsKLSAgICAgIHJldHVybiBzaWduYXR1cmU7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBjbGFzcyBzZWFyY2hlcyBCaW5kaW5nT3BlcmF0aW9uIGJ5IHRoZSBnaXZlbiBPcGVyYXRpb25TaWdibmF0dXJlLiAKLSAgKiBAYXV0aG9yIEt1bGlrCi0gICAqLwotICBwdWJsaWMgZmluYWwgY2xhc3MgVmlzaXRvciBpbXBsZW1lbnRzIFdTRExWaXNpdG9yCi0gIHsKLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuUGFydCwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB2aXNpdChQYXJ0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuU2VydmljZSwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB2aXNpdChTZXJ2aWNlIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuVHlwZXMsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoVHlwZXMgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gICAgewotICAgIH0KLQotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5PcGVyYXRpb24sIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoT3BlcmF0aW9uIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuSW5wdXQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoSW5wdXQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gICAgewotICAgIH0KLQotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5PdXRwdXQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoT3V0cHV0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuRmF1bHQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoRmF1bHQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gICAgewotICAgIH0KLQotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5CaW5kaW5nLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHZpc2l0KEJpbmRpbmcgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gICAgewotICAgIH0KLQotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uLCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgICAgQmluZGluZ09wZXJhdGlvbiBvYmosCi0gICAgICBPYmplY3QgcGFyZW50LAotICAgICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KGphdmF4LndzZGwuQmluZGluZ0lucHV0LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgICAgQmluZGluZ0lucHV0IG9iaiwKLSAgICAgIE9iamVjdCBwYXJlbnQsCi0gICAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gICAgewotICAgIH0KLQotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0LCBqYXZhLmxhbmcuT2JqZWN0LCBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgICAgQmluZGluZ091dHB1dCBvYmosCi0gICAgICBPYmplY3QgcGFyZW50LAotICAgICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KEJpbmRpbmdGYXVsdCwgT2JqZWN0LCBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB2aXNpdCgKLSAgICAgIEJpbmRpbmdGYXVsdCBvYmosCi0gICAgICBPYmplY3QgcGFyZW50LAotICAgICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpIAotICAgICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChJbXBvcnQsIE9iamVjdCwgV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoSW1wb3J0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpIAotICAgICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChFbGVtZW50LCBPYmplY3QsIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHZpc2l0KEVsZW1lbnQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gICAgewotICAgIH0KLQotICAgIC8qIChub24tSmF2YWRvYykKLSAgICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoTWVzc2FnZSwgT2JqZWN0LCBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB2aXNpdChNZXNzYWdlIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KFBvcnQsIE9iamVjdCwgV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoUG9ydCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgICB7Ci0gICAgfQotCi0gICAgLyogKG5vbi1KYXZhZG9jKQotICAgICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChQb3J0VHlwZSwgT2JqZWN0LCBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB2aXNpdChQb3J0VHlwZSBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgICB7Ci0gICAgfQotCi0gICAgLyogKG5vbi1KYXZhZG9jKQotICAgICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChEZWZpbml0aW9uLCBPYmplY3QsIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHZpc2l0KERlZmluaXRpb24gb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gICAgewotICAgIH0KLQotICAgIC8qIChub24tSmF2YWRvYykgCi0gICAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KEV4dGVuc2liaWxpdHlFbGVtZW50LCBPYmplY3QsIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb2JqLAotICAgICAgT2JqZWN0IHBhcmVudCwKLSAgICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgICB7Ci0gICAgfQotCi0gICAgLyogKG5vbi1KYXZhZG9jKSAKLSAgICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoU09BUEhlYWRlciwgT2JqZWN0LCBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQSGVhZGVyIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICB9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpIAotICAgICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChTT0FQSGVhZGVyRmF1bHQsIE9iamVjdCwgV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgICBTT0FQSGVhZGVyRmF1bHQgb2JqLAotICAgICAgT2JqZWN0IHBhcmVudCwKLSAgICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgICB7Ci0gICAgfQotCi0gICAgLyogKG5vbi1KYXZhZG9jKSAKLSAgICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoU09BUEZhdWx0LCBPYmplY3QsIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBGYXVsdCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgICB7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBTdHJpbmcgcmVxdWlyZWRTdHlsZSA9IG51bGw7Ci0gICAgcHJpdmF0ZSBTdHJpbmcgc29hcEFjdGlvbiA9IG51bGw7Ci0gICAgcHJpdmF0ZSBCaW5kaW5nT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG51bGw7Ci0gICAgcHJpdmF0ZSBUeXBlc1JlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbnVsbDsKLSAgICBwcml2YXRlIGJvb2xlYW4gaXNTT0FQQWN0aW9uUmVxdWlyZWQgPSBmYWxzZTsKLQotICAgIC8qKgotICAgICogQ29uc3RydWN0b3IuCi0gICAgKi8KLSAgICBwdWJsaWMgVmlzaXRvcigpCi0gICAgewotICAgICAgc3VwZXIoKTsKLSAgICAgIC8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY29uc3RydWN0b3Igc3R1YgotICAgIH0KLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yLgotICAgICAqIEBwYXJhbSByZXF1aXJlZFN0eWxlIHJlcXVpcmVkIHN0eWxlLgotICAgICAqIEBwYXJhbSByZWdpc3RyeSB0eXBlcyByZWdpc3RyeS4KLSAgICAgKi8KLSAgICBwdWJsaWMgVmlzaXRvcihTdHJpbmcgcmVxdWlyZWRTdHlsZSwgVHlwZXNSZWdpc3RyeSByZWdpc3RyeSkKLSAgICB7Ci0gICAgICB0aGlzLnJlcXVpcmVkU3R5bGUgPSByZXF1aXJlZFN0eWxlOwotICAgICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5OwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFRoZSBtZXRob2QgcmV0dXJucyBtYXRjaGVkIGJpbmRpbmcgb3BlcmF0aW9uLgotICAgICAqIEByZXR1cm4gQmluZGluZ09wZXJhdGlvbgotICAgICAqLwotICAgIHB1YmxpYyBCaW5kaW5nT3BlcmF0aW9uIGdldE1hdGNoZWRPcGVyYXRpb24oKQotICAgIHsKLSAgICAgIHJldHVybiBvcGVyYXRpb247Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogVGhlIG1ldGhvZCBzZXRzIHVwIHJlcXVpcmVkIG9wZXJhdGlvbiB0byBiZSBmb3VuZC4KLSAgICAgKiBUaGUgcG9zc2libGUgdmFsdWVzIGlzIHJwYyBhbmQgZG9jdW1lbnQuCi0gICAgICogQHBhcmFtIHJlcXVpcmVkU3R5bGUgb3BlcmF0aW9uIHN0eWxlLgotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHNldFJlcXVpcmVkU3R5bGUoU3RyaW5nIHJlcXVpcmVkU3R5bGUpCi0gICAgewotICAgICAgdGhpcy5yZXF1aXJlZFN0eWxlID0gcmVxdWlyZWRTdHlsZTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbWV0aG9kIGluZGljYXRlcyB3aGV0aGVyIFNPQVAgQWN0aW9uIGJlIGluY2x1ZGVkIGludG8gb3BlcmF0aW9uLgotICAgICAqIHNpZ25hdHVyZS4KLSAgICAgKiBAcmV0dXJuIHRydWUgaWYgU09BUCBBY3Rpb24gaXNkIHJlcXVpcmVkLgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIGlzU09BUEFjdGlvblJlcXVpcmVkKCkKLSAgICB7Ci0gICAgICByZXR1cm4gaXNTT0FQQWN0aW9uUmVxdWlyZWQ7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogU2V0cyBTT0FQIGFjdGlvbiB0byBiZSBpbmNsdWRlZCBpbnRvIHNpZ25hdHVyZS4KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzZXRTT0FQQWN0aW9uUmVxdWlyZWQoKQotICAgIHsKLSAgICAgIGlzU09BUEFjdGlvblJlcXVpcmVkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBpbnRlcm5hbCBtZXRob2QuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgICBTT0FQQmluZGluZyBiaW5kaW5nLAotICAgICAgT2JqZWN0IHBhcmVudCwKLSAgICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgICB7Ci0gICAgICBTdHJpbmcgc3R5bGUgPQotICAgICAgICAoYmluZGluZy5nZXRTdHlsZSgpID09IG51bGwpCi0gICAgICAgICAgPyBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JJTkRfU1RZTEVfRE9DCi0gICAgICAgICAgOiBiaW5kaW5nLmdldFN0eWxlKCk7Ci0gICAgICBjdHguYWRkUGFyYW1ldGVyKCJzdHlsZSIsIHN0eWxlKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBpbnRlcm5hbCBtZXRob2QuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgICBTT0FQT3BlcmF0aW9uIG9wZXJhdGlvbiwKLSAgICAgIE9iamVjdCBwYXJlbnQsCi0gICAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gICAgewotICAgICAgc29hcEFjdGlvbiA9IG51bGw7Ci0gICAgICBTdHJpbmcgc3R5bGUgPSBvcGVyYXRpb24uZ2V0U3R5bGUoKTsKLSAgICAgIGlmIChzdHlsZSA9PSBudWxsKQotICAgICAgICBzdHlsZSA9IChTdHJpbmcpIGN0eC5nZXRQYXJhbWV0ZXIoInN0eWxlIik7Ci0gICAgICBpZiAoIXJlcXVpcmVkU3R5bGUuZXF1YWxzKHN0eWxlKSkKLSAgICAgICAgY3R4LmNhbmNlbEJpbmRpbmdPcGVyYXRpb25Qcm9jZXNzaW5nKCk7Ci0gICAgICBlbHNlCi0gICAgICAgIC8vaWYgKGlzU09BUEFjdGlvblJlcXVpcmVkKQotICAgICAgICBzb2FwQWN0aW9uID0gb3BlcmF0aW9uLmdldFNvYXBBY3Rpb25VUkkoKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBpbnRlcm5hbCBtZXRob2QuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmlzaXQoU09BUEJvZHkgYm9keSwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICAgIHsKLSAgICAgIC8vIGFzc2VydCBwYXJlbnQgaW5zdGFuY2VvZiBCaW5kaW5nSW5wdXQKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYm9wID0gY3R4LmdldEJpbmRpbmdPcGVyYXRpb24oKTsKLSAgICAgIGlmIChib3AuZ2V0T3BlcmF0aW9uKCkgPT0gbnVsbAotICAgICAgICB8fCBib3AuZ2V0T3BlcmF0aW9uKCkuZ2V0SW5wdXQoKSA9PSBudWxsCi0gICAgICAgIHx8IGJvcC5nZXRPcGVyYXRpb24oKS5nZXRJbnB1dCgpLmdldE1lc3NhZ2UoKSA9PSBudWxsKQotICAgICAgICByZXR1cm47Ci0KLSAgICAgIE1lc3NhZ2UgbXNnID0gYm9wLmdldE9wZXJhdGlvbigpLmdldElucHV0KCkuZ2V0TWVzc2FnZSgpOwotICAgICAgTGlzdCBwYXJ0cyA9Ci0gICAgICAgIFdTRExVdGlsLmdldFBhcnRzKGJvcC5nZXRPcGVyYXRpb24oKSwgbXNnLCBib2R5LCByZXF1aXJlZFN0eWxlKTsKLQotICAgICAgUU5hbWUgYWRkaXRpb25hbE5hbWUgPSBudWxsOwotICAgICAgLy8gaWYgb3BlcmF0aW9uIGlzIHJwYywgYWRkIHRvIHBhcnRzIHFuYW1lIHFpdGggZnVuY3Rpb24gbmFtZQotICAgICAgaWYgKFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMuZXF1YWxzKHJlcXVpcmVkU3R5bGUpKQotICAgICAgewotICAgICAgICAvLyBmb3VuZCBvdXQgdGFyZ2V0IG5hbWVzcGFjZQotICAgICAgICBTdHJpbmcgbmFtZXNwYWNlID0gYm9keS5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsIHx8IG5hbWVzcGFjZS5sZW5ndGgoKSA9PSAwKQotICAgICAgICAgIC8vICEhIEFUVEVOVElPTgotICAgICAgICAgIC8vIG5hbWVzcGFjZSBzaG91bGQgYmUgcmV0cmlldmVkIGZyb20gc2VydmljZSB0YXJnZXQgbmFtZWFwY2UgICAgICAgICAgICAKLSAgICAgICAgICBuYW1lc3BhY2UgPSBjdHguZ2V0QmluZGluZygpLmdldFFOYW1lKCkuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0KLSAgICAgICAgLy8gaW5zZXJ0IG9wZXJhdGlvbiBuYW1lIGFzIGZpcnN0IHNpZ25hdHVyZSBwYXJ0Ci0gICAgICAgIGFkZGl0aW9uYWxOYW1lID0KLSAgICAgICAgICBuZXcgUU5hbWUobmFtZXNwYWNlLCBjdHguZ2V0QmluZGluZ09wZXJhdGlvbigpLmdldE5hbWUoKSk7Ci0gICAgICB9Ci0KLSAgICAgIE9wZXJhdGlvblNpZ25hdHVyZSBvcCA9Ci0gICAgICAgIG5ldyBPcGVyYXRpb25TaWduYXR1cmUocGFydHMsIG51bGwsIHJlZ2lzdHJ5LCBmYWxzZSk7Ci0KLSAgICAgIGlmIChhZGRpdGlvbmFsTmFtZSAhPSBudWxsKQotICAgICAgICBvcC5nZXRTaWduYXR1cmUoKS5hZGQoMCwgYWRkaXRpb25hbE5hbWUpOwotICAgICAgLy9pZiAoaXNTT0FQQWN0aW9uUmVxdWlyZWQpCi0gICAgICAvL2lmIChzb2FwQWN0aW9uICE9IG51bGwpCi0gICAgICBpZiAoaXNTT0FQQWN0aW9uUmVxdWlyZWQgJiYgc29hcEFjdGlvbiAhPSBudWxsKQotICAgICAgICBvcC5nZXRTaWduYXR1cmUoKS5hZGQoMCwgc29hcEFjdGlvbik7Ci0gICAgICBpZiAob3AuZ2V0U2lnbmF0dXJlKCkuZXF1YWxzKHNpZ25hdHVyZSkpCi0gICAgICB7Ci0gICAgICAgIC8vIHJlcXVpcmVkIG9wZXJhdGlvbiBpcyBmb3VuZAotICAgICAgICBvcGVyYXRpb24gPSBjdHguZ2V0QmluZGluZ09wZXJhdGlvbigpOwotICAgICAgICBjdHguY2FuY2VsQmluZGluZ09wZXJhdGlvblByb2Nlc3NpbmcoKTsKLSAgICAgICAgY3R4LmNhbmNlbEJpbmRpbmdQcm9jZXNzaW5nKCk7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgb3AgPSBuZXcgT3BlcmF0aW9uU2lnbmF0dXJlKHBhcnRzLCBudWxsLCByZWdpc3RyeSwgdHJ1ZSk7Ci0gICAgICAgIGlmIChhZGRpdGlvbmFsTmFtZSAhPSBudWxsKQotICAgICAgICAgIG9wLmdldFNpZ25hdHVyZSgpLmFkZCgwLCBhZGRpdGlvbmFsTmFtZSk7Ci0KLSAgICAgICAgLy9pZiAoaXNTT0FQQWN0aW9uUmVxdWlyZWQpCi0gICAgICAgIC8vaWYgKHNvYXBBY3Rpb24gIT0gbnVsbCkKLSAgICAgICAgaWYgKGlzU09BUEFjdGlvblJlcXVpcmVkICYmIHNvYXBBY3Rpb24gIT0gbnVsbCkKLSAgICAgICAgICBvcC5nZXRTaWduYXR1cmUoKS5hZGQoMCwgc29hcEFjdGlvbik7Ci0KLSAgICAgICAgaWYgKG9wLmdldFNpZ25hdHVyZSgpLmVxdWFscyhzaWduYXR1cmUpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gcmVxdWlyZWQgb3BlcmF0aW9uIGlzIGZvdW5kCi0gICAgICAgICAgb3BlcmF0aW9uID0gY3R4LmdldEJpbmRpbmdPcGVyYXRpb24oKTsKLSAgICAgICAgICBjdHguY2FuY2VsQmluZGluZ09wZXJhdGlvblByb2Nlc3NpbmcoKTsKLSAgICAgICAgICBjdHguY2FuY2VsQmluZGluZ1Byb2Nlc3NpbmcoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBPcGVyYXRpb25TaWduYXR1cmUgZm9yIFNPQVAgbWVzc2FnZS4KLSAgICogQHBhcmFtIGRvYyBhIERvY3VtZW50IG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBPcGVyYXRpb25TaWduYXR1cmUoRG9jdW1lbnQgZG9jKQotICB7Ci0gICAgRWxlbWVudCBib2R5ID0KLSAgICAgIFhNTFV0aWxzLmZpbmRDaGlsZEVsZW1lbnQoCi0gICAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwKLSAgICAgICAgV1NJVGFnLkVMRU1fU09BUF9CT0RZKTsKLSAgICBwcm9jZXNzUGFydHMoYm9keSwgZmFsc2UpOwotICAgIGlzRG9jdW1lbnRTdHlsZSB8PSAoc2lnbmF0dXJlLnNpemUoKSA+IDEpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIE9wZXJhdGlvblNJZ25hdHVyZSBmb3IgCi0gICAqIGxpc3Qgb2YgPGNvZGU+UGFydDwvY29kZT4gb2JqZWN0cyBhbmQgZ2l2ZW4gV1NETCBkb2N1bWVudCB3aXRoaW4gdGhlc2UKLSAgICogcGFydHMgYXJlIGRlZmluZWQuCi0gICAqIAotICAgKiBAcGFyYW0gcGFydHMgYSBsaXN0IG9mIFBhcnQgb2JqZWN0cy4KLSAgICogQHBhcmFtIHdzZGxEb2N1bWVudCBhIFdTREwgZG9jdW1lbnQuCi0gICAqIEBwYXJhbSByZWdpc3RyeSBhIHR5cGVzIHJlZ2lzdHJ5LgotICAgKiBAcGFyYW0gcGFydGlhbCBhIHBhcnRpYWwgc3RhdHVzLgotICAgKi8KLSAgcHVibGljIE9wZXJhdGlvblNpZ25hdHVyZSgKLSAgICBMaXN0IHBhcnRzLAotICAgIERvY3VtZW50IHdzZGxEb2N1bWVudCwKLSAgICBUeXBlc1JlZ2lzdHJ5IHJlZ2lzdHJ5LAotICAgIGJvb2xlYW4gcGFydGlhbCkKLSAgewotICAgIGlmIChwYXJ0cyAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gcGFydHMuaXRlcmF0b3IoKTsKLQotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpIGl0Lm5leHQoKTsKLSAgICAgICAgU3RyaW5nIGxvY2FsTmFtZSA9IChwYXJ0aWFsKSA/IHBhcnQuZ2V0TmFtZSgpIDogbnVsbDsKLSAgICAgICAgUU5hbWUgdHlwZU5hbWUgPSBwYXJ0LmdldFR5cGVOYW1lKCk7Ci0gICAgICAgIFFOYW1lIGVsZW1lbnROYW1lID0gcGFydC5nZXRFbGVtZW50TmFtZSgpOwotCi0gICAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSAiIjsKLQotICAgICAgICAvLyBJZiB0eXBlIG5hbWUgaXMgbm90IG51bGwsIHRoZW4gYSB0eXBlIGVsZW1lbnQgd2FzIHVzZWQgc28gaXQgc2hvdWxkIGJlIGFuIFJQQyBzdHlsZSBzaWduYXR1cmUgCi0gICAgICAgIGlmICh0eXBlTmFtZSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gUGFydCB3cmFwcGVycyBkbyBub3QgaGF2ZSBuYW1lc3BhY2VzIAotICAgICAgICAgIG5hbWVzcGFjZSA9ICIiOwotCi0gICAgICAgICAgaWYgKGxvY2FsTmFtZSA9PSBudWxsKQotICAgICAgICAgICAgbG9jYWxOYW1lID0gdHlwZU5hbWUuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBlbGVtZW50IG5hbWUgaXMgbm90IG51bGwsIHRoZW4gaXQgc2hvdWxkIGJlIGEgZG9jdW1lbnQgc3R5bGUgc2lnbmF0dXJlCi0gICAgICAgIGVsc2UgaWYgKGVsZW1lbnROYW1lICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBuYW1lc3BhY2UgPSBlbGVtZW50TmFtZS5nZXROYW1lc3BhY2VVUkkoKTsKLQotICAgICAgICAgIGlmIChsb2NhbE5hbWUgPT0gbnVsbCkKLSAgICAgICAgICAgIGxvY2FsTmFtZSA9IGVsZW1lbnROYW1lLmdldExvY2FsUGFydCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2lnbmF0dXJlLmFkZChuZXcgUU5hbWUobmFtZXNwYWNlLCBsb2NhbE5hbWUpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpc0NyZWF0ZWQgPSB0cnVlOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgcmVjcmVhdGVzIE9wZXJhdGlvblNpZ25hdHVyZSB3aXRoIGFzc3VtcHRpb24gdGhhdCBvcGVyYXRpb24gaXMKLSAgICogUlBDLgotICAgKi8KLSAgcHVibGljIHZvaWQgY3JlYXRlUlBDU2lnbmF0dXJlKCkKLSAgewotICAgIGlzQ3JlYXRlZCA9IGZhbHNlOwotICAgIGlmIChmaXJzdEJvZHkgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBwcm9jZXNzUGFydHMoZmlyc3RCb2R5LCB0cnVlKTsKLSAgICBpc0RvY3VtZW50U3R5bGUgPSBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBJbnRlcm5hbCBtZXRob2QgcHJvY2Vzc2VzIFdTREwgcGFydHMgYW5kIGNyZWF0ZXMgb3BlcmF0aW9uIHNpZ25hdHVyZS4KLSAgICogQHBhcmFtIHBhcmVudAotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHByb2Nlc3NQYXJ0cyhOb2RlIHBhcmVudCwgYm9vbGVhbiBwcm9jZXNzV3JhcHBlcikKLSAgewotICAgIGlmIChwYXJlbnQgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBOb2RlIG4gPSBwYXJlbnQuZ2V0Rmlyc3RDaGlsZCgpOwotCi0gICAgICAvLyB2YXJpYWJsZSBpbmRpY2F0ZXMgdGhhdCBmaXJzdCB0YWcgaXMgcHJvY2Vzc2VkCi0gICAgICBib29sZWFuIGlzRmlyc3QgPSB0cnVlOwotICAgICAgLy8gaXRlcmF0ZSBhbGwgYm9kaWVzCi0gICAgICB3aGlsZSAobiAhPSBudWxsKQotICAgICAgewotICAgICAgICBpZiAoTm9kZS5FTEVNRU5UX05PREUgPT0gbi5nZXROb2RlVHlwZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGlzRmlyc3QgJiYgZmlyc3RCb2R5ID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlOwotICAgICAgICAgICAgZmlyc3RCb2R5ID0gKEVsZW1lbnQpIG47Ci0gICAgICAgICAgICAvLyBjaGVjayBzb2FwZW52OmZhdWx0Ci0gICAgICAgICAgICBpZiAoWE1MVXRpbHMuZXF1YWxzKG4sIFdTSVRhZy5FTEVNX1NPQVBfRkFVTFQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpc0ZhdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgaXNDcmVhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBTdHJpbmcgbmFtZXNwYWNlID0gbi5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgICAgICBTdHJpbmcgbG9jYWxOYW1lID0gbi5nZXRMb2NhbE5hbWUoKTsKLQotICAgICAgICAgIC8qSSBoYXZlIG5vIGlkZWEgd2h5IHRoaXMgY29kZSBpcyBpbiBoZXJlIHNpbmNlIGl0IG1ha2VzIG5vIHNlbnNlIGF0IGFsbCwgc28gSSBhbSBjb21tZW50aW5nIGl0IG91dAotICAgICAgICAgIC8vIHRyeSB0byBnZXQgeHNpOnRhZwotICAgICAgICAgIGlmIChYTUxVdGlscy5nZXRBdHRyaWJ1dGUoKEVsZW1lbnQpIG4sIFdTSVRhZy5BVFRSX1hTSV9UWVBFKSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgIC8vIHdlIHN1cHBvc2UgdGhhdCBSUEMgc3R5bGUgZG9lcyBub3QgdXNlIHhzaTp0eXBlIGF0dHJpYnV0ZQotICAgICAgICAgICAgICBpc0RvY3VtZW50U3R5bGUgPSB0cnVlOwotICAgICAgICAgICAgICBBdHRyIHhzaVR5cGUgPSBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoKEVsZW1lbnQpIG4sIFdTSVRhZy5BVFRSX1hTSV9UWVBFKTsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgIFN0cmluZyB4c2lWYWx1ZSA9IHhzaVR5cGUuZ2V0Tm9kZVZhbHVlKCk7Ci0gICAgICAgICAgICAgIGludCBpID0geHNpVmFsdWUuaW5kZXhPZignOicpOwotICAgICAgICAgICAgICBpZiAoaSAhPSAtMSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlID0gWE1MVXRpbHMuZmluZE5hbWVzcGFjZVVSSShuLCB4c2lWYWx1ZS5zdWJzdHJpbmcoMCwgaSkpOwotICAgICAgICAgICAgICAgICAgbG9jYWxOYW1lID0geHNpVmFsdWUuc3Vic3RyaW5nKGkrMSk7Ci0gICAgICAgICAgICAgIH0gCi0gICAgICAgICAgfQotICAgICAgICAgICovCi0KLSAgICAgICAgICAvLyBJZiB0aGlzIGlzIHJwYy1saXRlcmFsIGFuZCBwcm9jZXNzaW5nIGEgcGFydCAobm90IHRoZSB3cmFwcGVyKSwgdGhlbiB0aGUgcGFydCBzaG91bGQgbm90IGhhdmUgYSBuYW1lc3BhY2UKLSAgICAgICAgICAvLyBBbmQgaWYgaXQgZG9lcywgdGhlbiBvbmUgb2YgdGhlIHRlc3QgYXNzZXJ0aW9ucyB3aWxsIGRldGVjdCBpdAotICAgICAgICAgIGlmICghaXNEb2N1bWVudFN0eWxlICYmIHByb2Nlc3NXcmFwcGVyKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG5hbWVzcGFjZSA9ICIiOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChuYW1lc3BhY2UgPT0gbnVsbCB8fCBuYW1lc3BhY2UubGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNEb2N1bWVudFN0eWxlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvL0VsZW1lbnQgZmlyc3RDaGlsZCAgPSBudWxsOwotICAgICAgICAgICAgICBOb2RlIGl0ID0gbi5nZXRGaXJzdENoaWxkKCk7Ci0gICAgICAgICAgICAgIHdoaWxlIChpdCAhPSBudWxsICYmICEoaXQgaW5zdGFuY2VvZiBFbGVtZW50KSkKLSAgICAgICAgICAgICAgICBpdCA9IGl0LmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgIGlmIChpdCAhPSBudWxsKQotICAgICAgICAgICAgICAgIG5hbWVzcGFjZSA9IGl0LmdldE5hbWVzcGFjZVVSSSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLQotICAgICAgICAgIC8vIG5vcm1hbGl6ZSBuYW1lc3BhY2VzLiBBbGwgZW1wdHkgbmFtZXNwYWNlcyAtPiBudWxsIAotICAgICAgICAgIGlmIChuYW1lc3BhY2UgIT0gbnVsbCAmJiBuYW1lc3BhY2UubGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgICAgIG5hbWVzcGFjZSA9IG51bGw7Ci0KLSAgICAgICAgICAvLyBwdXQgcGFydCBpbnRvIHNpZ25hdHVyZQotICAgICAgICAgIHNpZ25hdHVyZS5hZGQobmV3IFFOYW1lKG5hbWVzcGFjZSwgbG9jYWxOYW1lKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgaXNDcmVhdGVkID0gZmFsc2U7IC8vIG5vdCBmb3VuZCA/Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaXNDcmVhdGVkID0gdHJ1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvcGVyYXRpb24gaGFzIGRvY3VtZW50IHN0eWxlIG9yIFJQQy4gCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBvcGVyYXRpb24gaGFzIGRvY3VtZW50IHN0eWxlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNEb2N1bWVudFN0eWxlKCkKLSAgewotICAgIHJldHVybiBpc0RvY3VtZW50U3R5bGU7Ci0gIH0KLQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgV1NETCBmYXVsdCBwYXJ0cyBzaG91bGQgYmUgaW5jbHVkZWQgaW50byBzaWduYXR1cmUgb3IKLSAgICogbm90LgotICAgKiBAcmV0dXJuIHRydWUgaWYgV1NETCBmYXVsdCBwYXJ0cyBzaG91bGQgYmUgaW5jbHVkZWQgaW50byBzaWduYXR1cmUuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc0ZhdWx0KCkKLSAgewotICAgIHJldHVybiBpc0ZhdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB0aGF0IG9wZXJhdGlvbiBzaWduYXR1cmUgd2FzIGNyZWF0ZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBvcGVyYXRpb24gc2lnbmF0dXJlIHdhcyBjcmVhdGVkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNDcmVhdGVkKCkKLSAgewotICAgIHJldHVybiBpc0NyZWF0ZWQ7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyBvcGVyYXRpb24gc2lnbmF0dXJlIGNyZWF0ZWQgZm9yIFNPQVAgbWVzc2FnZS4KLSAgICogQHJldHVybiBvcGVyYXRpb24gc2lnbmF0dXJlIGNyZWF0ZWQgZm9yIFNPQVAgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldFNpZ25hdHVyZSgpCi0gIHsKLSAgICByZXR1cm4gc2lnbmF0dXJlOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCNoYXNoQ29kZSgpCi0gICAqLwotICBwdWJsaWMgaW50IGhhc2hDb2RlKCkKLSAgewotICAgIHJldHVybiBzaWduYXR1cmUuaGFzaENvZGUoKTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjZXF1YWxzKE9iamVjdCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykKLSAgewotICAgIGlmIChvIGluc3RhbmNlb2YgT3BlcmF0aW9uU2lnbmF0dXJlKQotICAgICAgcmV0dXJuIHNpZ25hdHVyZS5lcXVhbHMoKChPcGVyYXRpb25TaWduYXR1cmUpIG8pLmdldFNpZ25hdHVyZSgpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCBtYXRjaGVzIG9wZXJhdGlvbiBiYXNlZCBvbiB0aGUgZ2l2ZW4gU09BUCBtZXNzYWdlIHJlcXVlc3QsCi0gICAqIFdTREwgYmluZGluZywgYW5kIHNvYXBBY3Rpb24uCi0gICAqIAotICAgKiBAcGFyYW0gaW5wdXRNZXNzYWdlIGFuIFNPQVAgbWVzc2FnZSByZXF1ZXN0LgotICAgKiBAcGFyYW0gc29hcEFjdGlvbiBhIHNvYXAgYWN0aW9uLgotICAgKiBAcGFyYW0gYmluZGluZyBhIFdTREwgYmluZGluZy4KLSAgICogQHBhcmFtIHJlZ2lzdHJ5IGEgdHlwZXMgcmVnaXN0cnkuCi0gICAqIEByZXR1cm4gT3BlcmF0aW9uTWF0Y2ggb2JqZWN0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBPcGVyYXRpb25NYXRjaCBtYXRjaE9wZXJhdGlvbigKLSAgICBEb2N1bWVudCBpbnB1dE1lc3NhZ2UsCi0gICAgU3RyaW5nIHNvYXBBY3Rpb24sCi0gICAgQmluZGluZyBiaW5kaW5nLAotICAgIFR5cGVzUmVnaXN0cnkgcmVnaXN0cnkpCi0gIHsKLSAgICByZXR1cm4gbWF0Y2hPcGVyYXRpb24oaW5wdXRNZXNzYWdlLCBzb2FwQWN0aW9uLCBiaW5kaW5nLCByZWdpc3RyeSwgdHJ1ZSk7Ci0gIH0KLQotICAvKioKLSAgICAgKiBUaGUgbWV0aG9kIG1hdGNoZXMgb3BlcmF0aW9uIGJhc2VkIG9uIHRoZSBnaXZlbiBTT0FQIG1lc3NhZ2UgcmVxdWVzdCwKLSAgICAgKiBXU0RMIGJpbmRpbmcsIGFuZCBzb2FwQWN0aW9uLgotICAgICAqIAotICAgICAqIEBwYXJhbSBpbnB1dE1lc3NhZ2UgU09BUCBtZXNzYWdlIHJlcXVlc3QuCi0gICAgICogQHBhcmFtIHNvYXBBY3Rpb24gYSBzb2FwIGFjdGlvbi4KLSAgICAgKiBAcGFyYW0gYmluZGluZyBhIFdTREwgYmluZGluZy4KLSAgICAgKiBAcGFyYW0gcmVnaXN0cnkgYSB0eXBlcyByZWdpc3RyeS4KLSAgICAgKiBAcGFyYW0gc29hcEFjdGlvblJlcXVpcmVkIG11c3QgcHJvY2VzcyB0aGUgc29hcEFjdGlvbiB2YWx1ZSBldmVuIGlmIGl0IGlzIG51bGwgCi0gICAgICogQHJldHVybiBPcGVyYXRpb25NYXRjaCBvYmplY3QuCi0gICAgICovCi0gIHB1YmxpYyBzdGF0aWMgT3BlcmF0aW9uTWF0Y2ggbWF0Y2hPcGVyYXRpb24oCi0gICAgRG9jdW1lbnQgaW5wdXRNZXNzYWdlLAotICAgIFN0cmluZyBzb2FwQWN0aW9uLAotICAgIEJpbmRpbmcgYmluZGluZywKLSAgICBUeXBlc1JlZ2lzdHJ5IHJlZ2lzdHJ5LAotICAgIGJvb2xlYW4gc29hcEFjdGlvblJlcXVpcmVkKQotICB7Ci0gICAgLy8gUGFyc2UgcmVxdWVzdCBtZXNzYWdlCi0gICAgT3BlcmF0aW9uU2lnbmF0dXJlIHNpZ25hdHVyZSA9IG5ldyBPcGVyYXRpb25TaWduYXR1cmUoaW5wdXRNZXNzYWdlKTsKLSAgICBpZiAoIXNpZ25hdHVyZS5pc0NyZWF0ZWQoKSkKLSAgICAgIHJldHVybiBudWxsOwotCi0gICAgLy8gZmlyc3Qgb2YgYWxsIGxvb2tpbmcgZm9yIGRvY3VtZW50IHN0eWxlCi0gICAgLy8gYmVjYXVzZSBycGMgc3R5bGUgaXMgc3Vic2V0IG9mIGRvY3VtZW50IHN0eWxlICAKLSAgICBPcGVyYXRpb25TaWduYXR1cmUuVmlzaXRvciByZXNvbHZlciA9Ci0gICAgICBzaWduYXR1cmUubmV3IFZpc2l0b3IoV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQywgcmVnaXN0cnkpOwotCi0gICAgLy8gbm9ybWFsaXplIFNPQVBBY3Rpb24KLSAgICBpZiAoc29hcEFjdGlvbiAhPSBudWxsCi0gICAgICAmJiBzb2FwQWN0aW9uLmxlbmd0aCgpID4gMQotICAgICAgJiYgc29hcEFjdGlvbi5jaGFyQXQoMCkgPT0gJyInCi0gICAgICAmJiBzb2FwQWN0aW9uLmNoYXJBdChzb2FwQWN0aW9uLmxlbmd0aCgpIC0gMSkgPT0gJyInKQotICAgICAgc29hcEFjdGlvbiA9IHNvYXBBY3Rpb24uc3Vic3RyaW5nKDEsIHNvYXBBY3Rpb24ubGVuZ3RoKCkgLSAxKTsKLQotICAgIC8vICAgICAgaWYgc29hcCBhY3Rpb24gVVJJIHByb2Nlc3NpbmcgcmVxdWlyZWQKLSAgICAvLyBpZiBzb2FwIGFjdGlvbiBVUkkgcHJvY2Vzc2luZyByZXF1aXJlZCAKLSAgICAvLyBhbmFseXplIFNPQVBBY3Rpb24gYWZ0ZXIgcGFydHMgYmVpbmcgcHJvY2Vzc2VkCi0gICAgLy8gcHV0IFNPQVBBY3Rpb24gaW50byBzaWduYXR1cmUKLSAgICAvL2lmIChzb2FwQWN0aW9uICE9IG51bGwgJiYgc29hcEFjdGlvbi5sZW5ndGgoKSA+IDApIHsKLSAgICBpZiAoc29hcEFjdGlvbiAhPSBudWxsKQotICAgIHsKLSAgICAgIHNpZ25hdHVyZS5nZXRTaWduYXR1cmUoKS5hZGQoMCwgc29hcEFjdGlvbik7Ci0gICAgfQotCi0gICAgaWYgKHNvYXBBY3Rpb25SZXF1aXJlZCkKLSAgICAgIHJlc29sdmVyLnNldFNPQVBBY3Rpb25SZXF1aXJlZCgpOwotCi0gICAgV1NETFRyYXZlcnNhbCB0cmF2ZXJzYWwgPSBuZXcgV1NETFRyYXZlcnNhbCgpOwotICAgIC8vVmlzaXRvckFkYXB0b3IuYWRhcHQocmVzb2x2ZXIpOwotICAgIHRyYXZlcnNhbC5zZXRWaXNpdG9yKHJlc29sdmVyKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQmluZGluZyh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQQm9keSh0cnVlKTsKLSAgICB0cmF2ZXJzYWwudmlzaXRTT0FQT3BlcmF0aW9uKHRydWUpOwotCi0gICAgdHJhdmVyc2FsLmlnbm9yZVJlZmVyZW5jZXMoKTsKLSAgICB0cmF2ZXJzYWwuaWdub3JlQmluZGluZ091dHB1dCgpOwotICAgIHRyYXZlcnNhbC50cmF2ZXJzZShiaW5kaW5nKTsKLQotICAgIEJpbmRpbmdPcGVyYXRpb24gb3BlcmF0aW9uID0gcmVzb2x2ZXIuZ2V0TWF0Y2hlZE9wZXJhdGlvbigpOwotICAgIGlmIChvcGVyYXRpb24gPT0gbnVsbCAmJiAhc2lnbmF0dXJlLmlzRG9jdW1lbnRTdHlsZSgpKQotICAgIHsKLSAgICAgIHJlc29sdmVyLnNldFJlcXVpcmVkU3R5bGUoV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX1JQQyk7Ci0gICAgICBzaWduYXR1cmUuY3JlYXRlUlBDU2lnbmF0dXJlKCk7Ci0gICAgICB0cmF2ZXJzYWwudHJhdmVyc2UoYmluZGluZyk7Ci0gICAgICBvcGVyYXRpb24gPSByZXNvbHZlci5nZXRNYXRjaGVkT3BlcmF0aW9uKCk7Ci0gICAgICBpZiAob3BlcmF0aW9uID09IG51bGwpCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHJldHVybiBuZXcgT3BlcmF0aW9uTWF0Y2goCi0gICAgICByZXNvbHZlci5yZXF1aXJlZFN0eWxlLAotICAgICAgc2lnbmF0dXJlLmdldFNpZ25hdHVyZSgpLAotICAgICAgcmVzb2x2ZXIuZ2V0TWF0Y2hlZE9wZXJhdGlvbigpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9QYWlyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL1BhaXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcxYTE5Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL1BhaXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsOwotCi0vKioKLSAqIFRoZSBjbGFzcyByZXByZXNlbnRzIHBhaXIgb2YgdmFsdWVzLgotICogCi0gKiBAYXV0aG9yIEt1bGlrCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBQYWlyCi17Ci0gIGZpbmFsIHByaXZhdGUgT2JqZWN0IGZpcnN0OwotICBmaW5hbCBwcml2YXRlIE9iamVjdCBzZWNvbmQ7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKiBAcGFyYW0gZmlyc3Qgb2JqZWN0Ci0gICAqIEBwYXJhbSBzZWNvbmQgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFBhaXIoT2JqZWN0IGZpcnN0LCBPYmplY3Qgc2Vjb25kKQotICB7Ci0gICAgdGhpcy5maXJzdCA9IGZpcnN0OwotICAgIHRoaXMuc2Vjb25kID0gc2Vjb25kOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldHMgZmlyc3Qgb2JqZWN0LgotICAgKiBAcmV0dXJuIE9iamVjdAotICAgKi8KLSAgcHVibGljIE9iamVjdCBnZXRGaXJzdCgpCi0gIHsKLSAgICByZXR1cm4gZmlyc3Q7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyBzZWNvbmQgb2JqZWN0LgotICAgKiBAcmV0dXJuIE9iamVjdAotICAgKi8KLSAgcHVibGljIE9iamVjdCBnZXRTZWNvbmQoKQotICB7Ci0gICAgcmV0dXJuIHNlY29uZDsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjZXF1YWxzKE9iamVjdCkKLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykKLSAgewotICAgIGlmIChvID09IG51bGwgfHwgIShvIGluc3RhbmNlb2YgUGFpcikpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGFpciBwID0gKFBhaXIpIG87Ci0gICAgcmV0dXJuICgKLSAgICAgIE51bGxVdGlsLmVxdWFscyhwLmdldEZpcnN0KCksIGZpcnN0KQotICAgICAgICAmJiBOdWxsVXRpbC5lcXVhbHMocC5nZXRTZWNvbmQoKSwgc2Vjb25kKSk7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I2hhc2hDb2RlKCkKLSAgICovCi0gIHB1YmxpYyBpbnQgaGFzaENvZGUoKQotICB7Ci0gICAgaW50IGNvZGUgPSAwOwotICAgIGlmIChmaXJzdCAhPSBudWxsKQotICAgICAgY29kZSArPSBmaXJzdC5oYXNoQ29kZSgpOwotICAgIGlmIChzZWNvbmQgIT0gbnVsbCkKLSAgICAgIGNvZGUgKz0gc2Vjb25kLmhhc2hDb2RlKCk7Ci0gICAgcmV0dXJuIGNvZGU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvU2V0Q29va2llMlZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9TZXRDb29raWUyVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ODJlM2EuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9TZXRDb29raWUyVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWw7Ci0KLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBjaGVja3MgdGhlIGNvb2tpZXMgY29uZm9ybSB0byBSRkMyOTY1LgotICogCi0gKiBAYXV0aG9yIEJhbHRhawotICovCi1wdWJsaWMgY2xhc3MgU2V0Q29va2llMlZhbGlkYXRvcgotewotCi0gIHByaXZhdGUgVmVjdG9yIGNvbW1lbnRWZWN0ID0gbmV3IFZlY3RvcigpOwotICBwcml2YXRlIFZlY3RvciBjb21tZW50VVJMVmVjdCA9IG5ldyBWZWN0b3IoKTsKLSAgcHJpdmF0ZSBWZWN0b3IgZG9tYWluVmVjdCA9IG5ldyBWZWN0b3IoKTsKLSAgcHJpdmF0ZSBWZWN0b3IgbWF4X0FnZVZlY3QgPSBuZXcgVmVjdG9yKCk7Ci0gIHByaXZhdGUgVmVjdG9yIHBhdGhWZWN0ID0gbmV3IFZlY3RvcigpOwotICBwcml2YXRlIFZlY3RvciBwb3J0VmVjdCA9IG5ldyBWZWN0b3IoKTsKLSAgcHJpdmF0ZSBWZWN0b3IgdmVyc2lvblZlY3QgPSBuZXcgVmVjdG9yKCk7Ci0KLSAgcHJpdmF0ZSBib29sZWFuIHBhdGggPSBmYWxzZTsKLQotICAvKioKLSAgICogTWV0aG9kIHJlc2V0RmxhZ3MuCi0gICAqLwotICBwcml2YXRlIHZvaWQgcmVzZXRQYXRoKCkKLSAgewotICAgIHBhdGggPSBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVjayBpZiB0aGUgc3RyaW5nIHNhdGlzZnkgdGhlICJTZXQtQ29va2llMiIgaGVhZGVyIHZhbHVlLgotICAgKiBAcGFyYW0gc3RyIFN0cmluZyAKLSAgICogQHJldHVybiBib29sZWFuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1NldENvb2tpZTIoU3RyaW5nIHN0cikKLSAgewotCi0gICAgdHJ5Ci0gICAgewotICAgICAgaW50IGluZGV4ID0gMDsKLSAgICAgIGludCBuZXdJbmRleCA9IDA7Ci0gICAgICB3aGlsZSAodHJ1ZSkKLSAgICAgIHsKLSAgICAgICAgbmV3SW5kZXggPSBnZXRMYXN0Q29va2llKHN0ciwgaW5kZXgpOwotICAgICAgICBpZiAoaW5kZXggPT0gbmV3SW5kZXgpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAvLyBza2lwIHNwYWNlcwotICAgICAgICBpbmRleCA9IG5ld0luZGV4OwotICAgICAgICBpbmRleCA9IHNraXBTcGFjZXMoc3RyLCBpbmRleCk7Ci0gICAgICAgIGlmIChpbmRleCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoc3RyLmNoYXJBdChpbmRleCkgIT0gJywnKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGluZGV4Kys7Ci0gICAgICAgICAgLy8gc2tpcCBzcGFjZXMKLSAgICAgICAgICBpbmRleCA9IHNraXBTcGFjZXMoc3RyLCBpbmRleCk7Ci0gICAgICAgIH0KLQotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHRoKQotICAgIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0TGFzdENvb2tpZS4KLSAgICogQHBhcmFtIHN0cgotICAgKiBAcGFyYW0gc3RhcnRJbmRleAotICAgKiBAcmV0dXJuIGludAotICAgKi8KLSAgcHJpdmF0ZSBpbnQgZ2V0TGFzdENvb2tpZShTdHJpbmcgc3RyLCBpbnQgc3RhcnRJbmRleCkKLSAgewotCi0gICAgcmVzZXRQYXRoKCk7Ci0KLSAgICBpbnQgaW5kZXggPSBzdGFydEluZGV4OwotICAgIC8vIGZpbmQgdG9rZW4KLSAgICBpbnQgbmV3SW5kZXggPSBCYXNpY1J1bGVzLmdldExhc3RUb2tlbihzdHIsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggPT0gbmV3SW5kZXgpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIGluZGV4ID0gbmV3SW5kZXg7Ci0gICAgaWYgKGluZGV4ID09IHN0ci5sZW5ndGgoKSkKLSAgICAgIHJldHVybiBzdGFydEluZGV4OwotCi0gICAgLy8gaWYgbm90ICc9JyAtIGVycm9yCi0gICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpICE9ICc9JykKLSAgICAgIHJldHVybiBzdGFydEluZGV4OwotCi0gICAgaW5kZXgrKzsKLSAgICBpZiAoaW5kZXggPT0gc3RyLmxlbmd0aCgpKQotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICAvLyBnZXQgdmFsdWUKLSAgICBuZXdJbmRleCA9IGdldExhc3RWYWx1ZShzdHIsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggPT0gbmV3SW5kZXgpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIHdoaWxlICh0cnVlKQotICAgIHsKLSAgICAgIGluZGV4ID0gbmV3SW5kZXg7Ci0gICAgICBpZiAoaW5kZXggPT0gc3RyLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gaW5kZXg7Ci0KLSAgICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSAhPSAnOycpCi0gICAgICAgIHJldHVybiBpbmRleDsKLSAgICAgIGluZGV4Kys7Ci0gICAgICAvLyBza2lwIHNwYWNlcwotICAgICAgaW5kZXggPSBza2lwU3BhY2VzKHN0ciwgaW5kZXgpOwotCi0gICAgICBpZiAoaW5kZXggPT0gc3RyLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gc3RhcnRJbmRleDsKLSAgICAgIG5ld0luZGV4ID0gZ2V0TGFzdFNldENvb2tpZUF2KHN0ciwgaW5kZXgpOwotICAgICAgaWYgKGluZGV4ID09IG5ld0luZGV4KQotICAgICAgICByZXR1cm4gc3RhcnRJbmRleDsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGdldExhc3RWYWx1ZS4KLSAgICogQHBhcmFtIHN0cgotICAgKiBAcGFyYW0gc3RhcnRJbmRleAotICAgKiBAcmV0dXJuIGludAotICAgKi8KLSAgcHJpdmF0ZSBpbnQgZ2V0TGFzdFZhbHVlKFN0cmluZyBzdHIsIGludCBzdGFydEluZGV4KQotICB7Ci0KLSAgICBpbnQgaW5kZXggPSBCYXNpY1J1bGVzLmdldExhc3RUb2tlbihzdHIsIHN0YXJ0SW5kZXgpOwotICAgIGlmIChpbmRleCAhPSBzdGFydEluZGV4KQotICAgICAgcmV0dXJuIGluZGV4OwotICAgIGluZGV4ID0gQmFzaWNSdWxlcy5nZXRMYXN0UXVvdGVkU3RyaW5nKHN0ciwgc3RhcnRJbmRleCk7Ci0gICAgaWYgKGluZGV4ICE9IHN0YXJ0SW5kZXgpCi0gICAgICByZXR1cm4gaW5kZXg7Ci0KLSAgICByZXR1cm4gc3RhcnRJbmRleDsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0TGFzdFNldENvb2tpZUF2LgotICAgKiBAcGFyYW0gc3RyCi0gICAqIEBwYXJhbSBzdGFydEluZGV4Ci0gICAqIEByZXR1cm4gaW50Ci0gICAqLwotICBwcml2YXRlIGludCBnZXRMYXN0U2V0Q29va2llQXYoU3RyaW5nIHN0ciwgaW50IHN0YXJ0SW5kZXgpCi0gIHsKLQotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgaW50IG5ld0luZGV4ID0gMDsKLQotICAgIGlmIChzdHIuc3RhcnRzV2l0aCgiQ29tbWVudD0iLCBpbmRleCkpCi0gICAgewotICAgICAgaW5kZXggKz0gIkNvbW1lbnQ9Ii5sZW5ndGgoKTsKLSAgICAgIG5ld0luZGV4ID0gZ2V0TGFzdFZhbHVlKHN0ciwgaW5kZXgpOwotICAgICAgaWYgKGluZGV4ID09IG5ld0luZGV4KQotICAgICAgICByZXR1cm4gc3RhcnRJbmRleDsKLSAgICAgIC8vIGRlYnVnIC0+Ci0gICAgICBTdHJpbmcgcXFxID0gZ2V0VmFsdWUoc3RyLCBpbmRleCwgbmV3SW5kZXgpOwotICAgICAgY29tbWVudFZlY3QuYWRkKHFxcSk7Ci0gICAgICAvLyBkZWJ1ZyA8LQotICAgICAgcmV0dXJuIG5ld0luZGV4OwotICAgIH0KLSAgICBlbHNlIGlmIChzdHIuc3RhcnRzV2l0aCgiQ29tbWVudFVSTD0iLCBpbmRleCkpCi0gICAgewotICAgICAgaW5kZXggKz0gIkNvbW1lbnRVUkw9Ii5sZW5ndGgoKTsKLQotICAgICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpICE9ICdcIicpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotCi0gICAgICBuZXdJbmRleCA9IHN0ci5pbmRleE9mKCdcIicsIGluZGV4ICsgMSk7Ci0gICAgICBpZiAobmV3SW5kZXggPT0gLTEpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIG5ldyBVUkwoc3RyLnN1YnN0cmluZyhpbmRleCArIDEsIG5ld0luZGV4KSk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIG11ZSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0gICAgICB9Ci0gICAgICAvLyBkZWJ1ZyAtPgotICAgICAgU3RyaW5nIHFxcSA9IGdldFZhbHVlKHN0ciwgaW5kZXggKyAxLCBuZXdJbmRleCk7Ci0gICAgICBjb21tZW50VVJMVmVjdC5hZGQocXFxKTsKLSAgICAgIC8vIGRlYnVnIDwtCi0gICAgICBuZXdJbmRleCsrOwotICAgICAgcmV0dXJuIG5ld0luZGV4OwotICAgIH0KLSAgICBlbHNlIGlmIChzdHIuc3RhcnRzV2l0aCgiRGlzY2FyZCIsIGluZGV4KSkKLSAgICB7Ci0gICAgICByZXR1cm4gc3RhcnRJbmRleCArICJEaXNjYXJkIi5sZW5ndGgoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyLnN0YXJ0c1dpdGgoIkRvbWFpbj0iLCBpbmRleCkpCi0gICAgewotICAgICAgaW5kZXggKz0gIkRvbWFpbj0iLmxlbmd0aCgpOwotCi0gICAgICBuZXdJbmRleCA9IGdldExhc3RWYWx1ZShzdHIsIGluZGV4KTsKLSAgICAgIGlmIChpbmRleCA9PSBuZXdJbmRleCkKLSAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICAgIC8vIGRlYnVnIC0+Ci0gICAgICBTdHJpbmcgcXFxID0gZ2V0VmFsdWUoc3RyLCBpbmRleCwgbmV3SW5kZXgpOwotICAgICAgZG9tYWluVmVjdC5hZGQocXFxKTsKLSAgICAgIC8vIGRlYnVnIDwtCi0gICAgICByZXR1cm4gbmV3SW5kZXg7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0ci5zdGFydHNXaXRoKCJNYXgtQWdlPSIsIGluZGV4KSkKLSAgICB7Ci0gICAgICBpbmRleCArPSAiTWF4LUFnZT0iLmxlbmd0aCgpOwotCi0gICAgICBuZXdJbmRleCA9IGdldExhc3RWYWx1ZShzdHIsIGluZGV4KTsKLSAgICAgIGlmIChpbmRleCA9PSBuZXdJbmRleCkKLSAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICAgIFN0cmluZyBxcXEgPSBnZXRWYWx1ZShzdHIsIGluZGV4LCBuZXdJbmRleCk7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgSW50ZWdlci5wYXJzZUludChxcXEpOwotICAgICAgfQotICAgICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBuZmUpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotICAgICAgfQotICAgICAgLy8gZGVidWcgLT4KLSAgICAgIG1heF9BZ2VWZWN0LmFkZChxcXEpOwotICAgICAgLy8gZGVidWcgPC0KLSAgICAgIHJldHVybiBuZXdJbmRleDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyLnN0YXJ0c1dpdGgoIlBhdGg9IiwgaW5kZXgpKQotICAgIHsKLSAgICAgIGluZGV4ICs9ICJQYXRoPSIubGVuZ3RoKCk7Ci0KLSAgICAgIG5ld0luZGV4ID0gZ2V0TGFzdFZhbHVlKHN0ciwgaW5kZXgpOwotICAgICAgaWYgKGluZGV4ID09IG5ld0luZGV4KQotICAgICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgICAgU3RyaW5nIHFxcSA9IGdldFZhbHVlKHN0ciwgaW5kZXgsIG5ld0luZGV4KTsKLSAgICAgIGlmIChwYXRoID09IGZhbHNlKQotICAgICAgICBwYXRoVmVjdC5hZGQocXFxKTsKLSAgICAgIHBhdGggPSB0cnVlOwotICAgICAgcmV0dXJuIG5ld0luZGV4OwotICAgIH0KLSAgICBlbHNlIGlmIChzdHIuc3RhcnRzV2l0aCgiUG9ydCIsIGluZGV4KSkKLSAgICB7Ci0gICAgICBpbmRleCArPSAiUG9ydCIubGVuZ3RoKCk7Ci0gICAgICBpZiAoc3RyLmNoYXJBdChpbmRleCkgIT0gJz0nKQotICAgICAgICByZXR1cm4gaW5kZXg7Ci0KLSAgICAgIGluZGV4Kys7Ci0gICAgICBpZiAoc3RyLmNoYXJBdChpbmRleCkgIT0gJ1wiJykKLSAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICAgIGluZGV4Kys7Ci0gICAgICBuZXdJbmRleCA9IGdldExhc3RQb3J0TGlzdChzdHIsIGluZGV4KTsKLSAgICAgIGlmIChpbmRleCA9PSBuZXdJbmRleCkKLSAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICAgIC8vIGRlYnVnIC0+Ci0gICAgICBTdHJpbmcgcXFxID0gZ2V0VmFsdWUoc3RyLCBpbmRleCwgbmV3SW5kZXgpOwotICAgICAgcG9ydFZlY3QuYWRkKHFxcSk7Ci0gICAgICAvLyBkZWJ1ZyA8LQotCi0gICAgICBpbmRleCA9IG5ld0luZGV4OwotICAgICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpICE9ICdcIicpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotICAgICAgaW5kZXgrKzsKLSAgICAgIHJldHVybiBpbmRleDsKLQotICAgIH0KLSAgICBlbHNlIGlmIChzdHIuc3RhcnRzV2l0aCgiU2VjdXJlIiwgaW5kZXgpKQotICAgIHsKLSAgICAgIHJldHVybiBzdGFydEluZGV4ICsgIlNlY3VyZSIubGVuZ3RoKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0ci5zdGFydHNXaXRoKCJWZXJzaW9uPSIsIGluZGV4KSkKLSAgICB7Ci0gICAgICBpbmRleCArPSAiVmVyc2lvbj0iLmxlbmd0aCgpOwotCi0gICAgICBuZXdJbmRleCA9IGdldExhc3RESUdJVChzdHIsIGluZGV4KTsKLSAgICAgIGlmIChpbmRleCA9PSBuZXdJbmRleCkKLSAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICAgIC8vIGRlYnVnIC0+Ci0gICAgICBTdHJpbmcgcXFxID0gZ2V0VmFsdWUoc3RyLCBpbmRleCwgbmV3SW5kZXgpOwotICAgICAgdmVyc2lvblZlY3QuYWRkKHFxcSk7Ci0gICAgICAvLyBkZWJ1ZyA8LQotICAgICAgcmV0dXJuIG5ld0luZGV4OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBnZXRMYXN0UG9ydExpc3QuCi0gICAqIEBwYXJhbSBzdHIKLSAgICogQHBhcmFtIHN0YXJ0SW5kZXgKLSAgICogQHJldHVybiBpbnQKLSAgICovCi0gIHByaXZhdGUgaW50IGdldExhc3RQb3J0TGlzdChTdHJpbmcgc3RyLCBpbnQgc3RhcnRJbmRleCkKLSAgewotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgaW50IG5ld0luZGV4ID0gMDsKLQotICAgIHdoaWxlICh0cnVlKQotICAgIHsKLSAgICAgIG5ld0luZGV4ID0gZ2V0TGFzdERJR0lUKHN0ciwgaW5kZXgpOwotICAgICAgaWYgKGluZGV4ID09IG5ld0luZGV4KQotICAgICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgICAgaW5kZXggPSBuZXdJbmRleDsKLSAgICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSAhPSAnLCcpCi0gICAgICAgIHJldHVybiBpbmRleDsKLSAgICAgIGluZGV4Kys7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBnZXRMYXN0RElHSVQuCi0gICAqIEBwYXJhbSBzdHIKLSAgICogQHBhcmFtIHN0YXJ0SW5kZXgKLSAgICogQHJldHVybiBpbnQKLSAgICovCi0gIHByaXZhdGUgaW50IGdldExhc3RESUdJVChTdHJpbmcgc3RyLCBpbnQgc3RhcnRJbmRleCkKLSAgewotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgZm9yICg7IGluZGV4IDwgc3RyLmxlbmd0aCgpOyBpbmRleCsrKQotICAgIHsKLSAgICAgIGlmICghQmFzaWNSdWxlcy5pc0RJR0lUKHN0ci5jaGFyQXQoaW5kZXgpKSkKLSAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0KLSAgICByZXR1cm4gaW5kZXg7Ci0gIH0KLQotICAvKioKLSAgICogQ2hlY2sgaWYgdGhlIHN0cmluZyBzYXRpc2Z5IHRoZSAiQ29va2llIiBoZWFkZXIgdmFsdWUuCi0gICAqIEBwYXJhbSBzdHIgU3RyaW5nCi0gICAqIEByZXR1cm4gYm9vbGVhbgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNDb29raWUoU3RyaW5nIHN0cikKLSAgewotICAgIGludCBpbmRleCA9IDA7Ci0gICAgaW50IG5ld0luZGV4ID0gMDsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIG5ld0luZGV4ID0gZ2V0TGFzdFZlcnNpb24oc3RyLCBpbmRleCk7Ci0gICAgICBpZiAoaW5kZXggPT0gbmV3SW5kZXgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgaW5kZXggPSBuZXdJbmRleDsKLSAgICAgIGluZGV4ID0gc2tpcFNwYWNlcyhzdHIsIGluZGV4KTsKLSAgICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSAhPSAnOycgJiYgc3RyLmNoYXJBdChpbmRleCkgIT0gJywnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgIGluZGV4Kys7Ci0gICAgICBpbmRleCA9IHNraXBTcGFjZXMoc3RyLCBpbmRleCk7Ci0KLSAgICAgIHdoaWxlICh0cnVlKQotICAgICAgewotICAgICAgICBuZXdJbmRleCA9IGdldExhc3RDb29raWVzVmFsdWUoc3RyLCBpbmRleCk7Ci0gICAgICAgIGlmIChpbmRleCA9PSBuZXdJbmRleCkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaW5kZXggPSBuZXdJbmRleDsKLSAgICAgICAgaWYgKGluZGV4ID09IHN0ci5sZW5ndGgoKSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBpZiAoc3RyLmNoYXJBdChpbmRleCkgIT0gJzsnICYmIHN0ci5jaGFyQXQoaW5kZXgpICE9ICcsJykKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGluZGV4Kys7Ci0gICAgICAgIGluZGV4ID0gc2tpcFNwYWNlcyhzdHIsIGluZGV4KTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSB0aCkKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBnZXRMYXN0VmVyc2lvbi4KLSAgICogQHBhcmFtIHN0cgotICAgKiBAcGFyYW0gc3RhcnRJbmRleAotICAgKiBAcmV0dXJuIGludAotICAgKi8KLSAgcHJpdmF0ZSBpbnQgZ2V0TGFzdFZlcnNpb24oU3RyaW5nIHN0ciwgaW50IHN0YXJ0SW5kZXgpCi0gIHsKLSAgICBpbnQgaW5kZXggPSBzdGFydEluZGV4OwotICAgIGludCBuZXdJbmRleCA9IDA7Ci0gICAgaWYgKCFzdHIuc3RhcnRzV2l0aCgiJFZlcnNpb249IikpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLSAgICBpbmRleCArPSAiJFZlcnNpb249Ii5sZW5ndGgoKTsKLSAgICBuZXdJbmRleCA9IGdldExhc3RWYWx1ZShzdHIsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggPT0gbmV3SW5kZXgpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIHJldHVybiBuZXdJbmRleDsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0TGFzdENvb2tpZXNWYWx1ZS4KLSAgICogQHBhcmFtIHN0cgotICAgKiBAcGFyYW0gc3RhcnRJbmRleAotICAgKiBAcmV0dXJuIGludAotICAgKi8KLSAgcHJpdmF0ZSBpbnQgZ2V0TGFzdENvb2tpZXNWYWx1ZShTdHJpbmcgc3RyLCBpbnQgc3RhcnRJbmRleCkKLSAgewotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgaW50IG5ld0luZGV4ID0gMDsKLSAgICBpbnQgb2xkSW5kZXggPSAwOwotCi0gICAgLy8gZmluZCB0b2tlbgotICAgIG5ld0luZGV4ID0gQmFzaWNSdWxlcy5nZXRMYXN0VG9rZW4oc3RyLCBpbmRleCk7Ci0gICAgaWYgKGluZGV4ID09IG5ld0luZGV4KQotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICBpbmRleCA9IG5ld0luZGV4OwotICAgIGlmIChpbmRleCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIC8vIGlmIG5vdCAnPScgLSBlcnJvcgotICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSAhPSAnPScpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIGluZGV4Kys7Ci0gICAgaWYgKGluZGV4ID09IHN0ci5sZW5ndGgoKSkKLSAgICAgIHJldHVybiBzdGFydEluZGV4OwotCi0gICAgLy8gZ2V0IHZhbHVlCi0gICAgbmV3SW5kZXggPSBnZXRMYXN0VmFsdWUoc3RyLCBpbmRleCk7Ci0gICAgaWYgKGluZGV4ID09IG5ld0luZGV4KQotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICBpbmRleCA9IG5ld0luZGV4OwotICAgIGlmIChpbmRleCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICByZXR1cm4gaW5kZXg7Ci0KLSAgICBpZiAoc3RyLmNoYXJBdChpbmRleCkgIT0gJzsnKQotICAgICAgcmV0dXJuIGluZGV4OwotCi0gICAgLy8gcHJvY2VzcyBbIjsiIHBhdGhdIFsiOyIgZG9tYWluXSBbIjsiIHBvcnRdIAotICAgIG9sZEluZGV4ID0gaW5kZXg7Ci0gICAgaW5kZXgrKzsKLSAgICBpZiAoaW5kZXggPT0gc3RyLmxlbmd0aCgpKQotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICBpbmRleCA9IHNraXBTcGFjZXMoc3RyLCBpbmRleCk7Ci0gICAgaWYgKGluZGV4ID09IHN0ci5sZW5ndGgoKSkKLSAgICAgIHJldHVybiBzdGFydEluZGV4OwotCi0gICAgLy8gcHJvY2VzcyBwYXRoCi0gICAgbmV3SW5kZXggPSBnZXRMYXN0UGF0aChzdHIsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggIT0gbmV3SW5kZXgpCi0gICAgewotICAgICAgaW5kZXggPSBuZXdJbmRleDsKLSAgICAgIGlmIChpbmRleCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBpbmRleDsKLQotICAgICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpICE9ICc7JykKLSAgICAgICAgcmV0dXJuIGluZGV4OwotCi0gICAgICBvbGRJbmRleCA9IGluZGV4OwotICAgICAgaW5kZXgrKzsKLSAgICAgIGlmIChpbmRleCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotCi0gICAgICBpbmRleCA9IHNraXBTcGFjZXMoc3RyLCBpbmRleCk7Ci0gICAgICBpZiAoaW5kZXggPT0gc3RyLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIH0KLQotICAgIC8vIHByb2Nlc3MgZG9tYWluCi0gICAgbmV3SW5kZXggPSBnZXRMYXN0RG9tYWluKHN0ciwgaW5kZXgpOwotICAgIGlmIChpbmRleCAhPSBuZXdJbmRleCkKLSAgICB7Ci0gICAgICBpbmRleCA9IG5ld0luZGV4OwotICAgICAgaWYgKGluZGV4ID09IHN0ci5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGluZGV4OwotCi0gICAgICBpZiAoc3RyLmNoYXJBdChpbmRleCkgIT0gJzsnKQotICAgICAgICByZXR1cm4gaW5kZXg7Ci0KLSAgICAgIG9sZEluZGV4ID0gaW5kZXg7Ci0gICAgICBpbmRleCsrOwotICAgICAgaWYgKGluZGV4ID09IHN0ci5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICAgIGluZGV4ID0gc2tpcFNwYWNlcyhzdHIsIGluZGV4KTsKLSAgICAgIGlmIChpbmRleCA9PSBzdHIubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotCi0gICAgfQotCi0gICAgLy8gcHJvY2VzcyBwb3J0Ci0gICAgbmV3SW5kZXggPSBnZXRMYXN0UG9ydChzdHIsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggIT0gbmV3SW5kZXgpCi0gICAgICByZXR1cm4gbmV3SW5kZXg7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIG9sZEluZGV4OwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBnZXRMYXN0UGF0aC4KLSAgICogQHBhcmFtIHN0cgotICAgKiBAcGFyYW0gc3RhcnRJbmRleAotICAgKiBAcmV0dXJuIGludAotICAgKi8KLSAgcHJpdmF0ZSBpbnQgZ2V0TGFzdFBhdGgoU3RyaW5nIHN0ciwgaW50IHN0YXJ0SW5kZXgpCi0gIHsKLSAgICBpbnQgaW5kZXggPSBzdGFydEluZGV4OwotICAgIGludCBuZXdJbmRleCA9IDA7Ci0KLSAgICBpZiAoIXN0ci5zdGFydHNXaXRoKCIkUGF0aD0iLCBpbmRleCkpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLSAgICBpbmRleCArPSAiJFBhdGg9Ii5sZW5ndGgoKTsKLSAgICBuZXdJbmRleCA9IGdldExhc3RWYWx1ZShzdHIsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggPT0gbmV3SW5kZXgpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIHJldHVybiBuZXdJbmRleDsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0TGFzdERvbWFpbi4KLSAgICogQHBhcmFtIHN0cgotICAgKiBAcGFyYW0gc3RhcnRJbmRleAotICAgKiBAcmV0dXJuIGludAotICAgKi8KLSAgcHJpdmF0ZSBpbnQgZ2V0TGFzdERvbWFpbihTdHJpbmcgc3RyLCBpbnQgc3RhcnRJbmRleCkKLSAgewotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgaW50IG5ld0luZGV4ID0gMDsKLQotICAgIGlmICghc3RyLnN0YXJ0c1dpdGgoIiREb21haW49IiwgaW5kZXgpKQotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0gICAgaW5kZXggKz0gIiREb21haW49Ii5sZW5ndGgoKTsKLSAgICBuZXdJbmRleCA9IGdldExhc3RWYWx1ZShzdHIsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggPT0gbmV3SW5kZXgpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIHJldHVybiBuZXdJbmRleDsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0TGFzdFBvcnQuCi0gICAqIEBwYXJhbSBzdHIKLSAgICogQHBhcmFtIHN0YXJ0SW5kZXgKLSAgICogQHJldHVybiBpbnQKLSAgICovCi0gIHByaXZhdGUgaW50IGdldExhc3RQb3J0KFN0cmluZyBzdHIsIGludCBzdGFydEluZGV4KQotICB7Ci0gICAgaW50IGluZGV4ID0gc3RhcnRJbmRleDsKLSAgICBpbnQgbmV3SW5kZXggPSAwOwotCi0gICAgaWYgKCFzdHIuc3RhcnRzV2l0aCgiJFBvcnQiLCBpbmRleCkpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIGluZGV4ICs9ICIkUG9ydCIubGVuZ3RoKCk7Ci0gICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpICE9ICc9JykKLSAgICAgIHJldHVybiBpbmRleDsKLQotICAgIGluZGV4Kys7Ci0gICAgaWYgKHN0ci5jaGFyQXQoaW5kZXgpICE9ICdcIicpCi0gICAgICByZXR1cm4gc3RhcnRJbmRleDsKLQotICAgIGluZGV4Kys7Ci0gICAgbmV3SW5kZXggPSBnZXRMYXN0UG9ydExpc3Qoc3RyLCBpbmRleCk7Ci0gICAgaWYgKGluZGV4ID09IG5ld0luZGV4KQotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0KLSAgICBpbmRleCA9IG5ld0luZGV4OwotICAgIGlmIChzdHIuY2hhckF0KGluZGV4KSAhPSAnXCInKQotICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0gICAgaW5kZXgrKzsKLSAgICByZXR1cm4gaW5kZXg7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIHNraXBTcGFjZXMuCi0gICAqIEBwYXJhbSBzdHIKLSAgICogQHBhcmFtIGluZGV4Ci0gICAqIEByZXR1cm4gaW50Ci0gICAqLwotICBwcml2YXRlIGludCBza2lwU3BhY2VzKFN0cmluZyBzdHIsIGludCBpbmRleCkKLSAgewotICAgIGZvciAoOyBpbmRleCA8IHN0ci5sZW5ndGgoKTsgaW5kZXgrKykKLSAgICAgIGlmICghQmFzaWNSdWxlcy5pc1NQKHN0ci5jaGFyQXQoaW5kZXgpKSkKLSAgICAgICAgYnJlYWs7Ci0gICAgcmV0dXJuIGluZGV4OwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBnZXRWYWx1ZS4KLSAgICogQHBhcmFtIHN0cgotICAgKiBAcGFyYW0gYmVnCi0gICAqIEBwYXJhbSBlbmQKLSAgICogQHJldHVybiBTdHJpbmcKLSAgICovCi0gIHByaXZhdGUgU3RyaW5nIGdldFZhbHVlKFN0cmluZyBzdHIsIGludCBiZWcsIGludCBlbmQpCi0gIHsKLSAgICBTdHJpbmcgcXFxID0gbnVsbDsKLSAgICBpZiAoc3RyLmNoYXJBdChiZWcpID09ICdcIicpCi0gICAgICBxcXEgPSBzdHIuc3Vic3RyaW5nKGJlZyArIDEsIGVuZCAtIDEpOwotICAgIGVsc2UKLSAgICAgIHFxcSA9IHN0ci5zdWJzdHJpbmcoYmVnLCBlbmQpOwotICAgIHJldHVybiBxcXE7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9TdHJpbmdUb2tlbml6ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvU3RyaW5nVG9rZW5pemVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjOTUzOTguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9TdHJpbmdUb2tlbml6ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWw7Ci0KLS8qKgotICogU3RyaW5nIHRva2VuaXplci4KLSAqIAotICogQGF1dGhvcjogS3VsaWsKLSAqLwotZmluYWwgcHVibGljIGNsYXNzIFN0cmluZ1Rva2VuaXplcgotewotICBwcml2YXRlIGNoYXJbXSBzcGFjZURlbDsKLSAgcHJpdmF0ZSBjaGFyW10gZGVsOwotICBwcml2YXRlIGNoYXJbXSBhbGxEZWw7Ci0KLSAgLyoqCi0gICAqIEVudW1lcmF0aW9uIG9mIHN0cmluZ3MuCi0gICogQGF1dGhvciBLdWxpawotICAgKi8KLSAgcHJpdmF0ZSBjbGFzcyBTdHJpbmdUb2tlbml6ZXJFbnVtZXJhdGlvbiBpbXBsZW1lbnRzIGphdmEudXRpbC5FbnVtZXJhdGlvbgotICB7Ci0gICAgcHJpdmF0ZSBmaW5hbCBjaGFyW10gc3RyOwotICAgIHByaXZhdGUgZmluYWwgaW50IHNpemU7Ci0gICAgcHJpdmF0ZSBpbnQgaW5kZXg7Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3Rvci4KLSAgICAgKiBAcGFyYW0gcwotICAgICAqLwotICAgIFN0cmluZ1Rva2VuaXplckVudW1lcmF0aW9uKGNoYXJbXSBzKQotICAgIHsKLSAgICAgIHN0ciA9IHM7Ci0gICAgICBzaXplID0gc3RyLmxlbmd0aDsKLSAgICAgIGluZGV4ID0gMDsKLQotICAgICAgLy8gc2tpcCBzcGFjZSBkZWxpbWl0ZXJzCi0gICAgICB3aGlsZSAoaW5kZXggPCBzaXplICYmIGNvbnRhaW4oc3RyW2luZGV4XSwgc3BhY2VEZWwpKQotICAgICAgICBpbmRleCsrOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBzZWUgamF2YS51dGlsLkVudW1lcmF0aW9uI2hhc01vcmVFbGVtZW50cygpCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gaGFzTW9yZUVsZW1lbnRzKCkKLSAgICB7Ci0gICAgICByZXR1cm4gKGluZGV4IDwgc2l6ZSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHNlZSBqYXZhLnV0aWwuRW51bWVyYXRpb24jbmV4dEVsZW1lbnQoKQotICAgICAqLwotICAgIHB1YmxpYyBPYmplY3QgbmV4dEVsZW1lbnQoKQotICAgIHsKLSAgICAgIGlmIChpbmRleCA+PSBzaXplKQotICAgICAgICB0aHJvdyBuZXcgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24oCi0gICAgICAgICAgIlN0cmluZ1Rva2VuaXplciBlbnVtZXJhdGlvbiIpOwotCi0gICAgICAvLyBza2lwIGRlbGltaXRlcnMKLSAgICAgIGludCBiZWdTdHIgPSBpbmRleDsKLSAgICAgIGlmIChpbmRleCA8IHNpemUgJiYgY29udGFpbihzdHJbaW5kZXhdLCBkZWwpKQotICAgICAgICBpbmRleCsrOwotCi0gICAgICAvLyBza2lwIHdvcmQKLSAgICAgIGlmIChiZWdTdHIgPT0gaW5kZXgpCi0gICAgICAgIHdoaWxlIChpbmRleCA8IHNpemUgJiYgIWNvbnRhaW4oc3RyW2luZGV4XSwgYWxsRGVsKSkKLSAgICAgICAgICBpbmRleCsrOwotCi0gICAgICBpbnQgZW5kU3RyID0gaW5kZXg7Ci0KLSAgICAgIC8vIHNraXAgc3BhY2UgZGVsaW1pdGVycwotICAgICAgd2hpbGUgKGluZGV4IDwgc2l6ZSAmJiBjb250YWluKHN0cltpbmRleF0sIHNwYWNlRGVsKSkKLSAgICAgICAgaW5kZXgrKzsKLQotICAgICAgcmV0dXJuIFN0cmluZy5jb3B5VmFsdWVPZihzdHIsIGJlZ1N0ciwgZW5kU3RyIC0gYmVnU3RyKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjdG9TdHJpbmcoKQotICAgICAqLwotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICAgIHsKLSAgICAgIGludCBpID0gaW5kZXg7Ci0gICAgICBTdHJpbmcgcyA9IChTdHJpbmcpIG5leHRFbGVtZW50KCk7Ci0gICAgICBpbmRleCA9IGk7Ci0gICAgICByZXR1cm4gczsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogU3RyaW5nVG9rZW5pemVyIGNvbnN0cnVjdG9yLgotICAgICAqIEBwYXJhbSBzcGFjZURlbGltaXRlcnMgdGhlIHNldCBvZiBkZWxpbWl0ZXJzIHRvIGJlIGlnbm9yZWQKLSAgICAgKiBAcGFyYW0gZGVsaW1pdGVycyB0aGUgc2V0IG9mIGRlbGltaXRlcnMgdG8gYmUgcmVtYWluZWQuCi0gICAqLwotICBwdWJsaWMgU3RyaW5nVG9rZW5pemVyKGNoYXJbXSBzcGFjZURlbGltaXRlcnMsIGNoYXJbXSBkZWxpbWl0ZXJzKQotICB7Ci0gICAgc3VwZXIoKTsKLQotICAgIGlmIChzcGFjZURlbGltaXRlcnMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBzcGFjZURlbCA9IG5ldyBjaGFyW3NwYWNlRGVsaW1pdGVycy5sZW5ndGhdOwotICAgICAgU3lzdGVtLmFycmF5Y29weShzcGFjZURlbGltaXRlcnMsIDAsIHNwYWNlRGVsLCAwLCBzcGFjZURlbGltaXRlcnMubGVuZ3RoKTsKLSAgICAgIHNvcnQoc3BhY2VEZWwpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICBzcGFjZURlbCA9IG51bGw7Ci0KLSAgICBpZiAoZGVsaW1pdGVycyAhPSBudWxsKQotICAgIHsKLSAgICAgIGRlbCA9IG5ldyBjaGFyW2RlbGltaXRlcnMubGVuZ3RoXTsKLSAgICAgIFN5c3RlbS5hcnJheWNvcHkoZGVsaW1pdGVycywgMCwgZGVsLCAwLCBkZWxpbWl0ZXJzLmxlbmd0aCk7Ci0gICAgICBzb3J0KGRlbCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGRlbCA9IG51bGw7Ci0KLSAgICBpZiAoZGVsICE9IG51bGwgJiYgc3BhY2VEZWwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBhbGxEZWwgPSBuZXcgY2hhcltkZWwubGVuZ3RoICsgc3BhY2VEZWwubGVuZ3RoXTsKLSAgICAgIFN5c3RlbS5hcnJheWNvcHkoZGVsLCAwLCBhbGxEZWwsIDAsIGRlbC5sZW5ndGgpOwotICAgICAgU3lzdGVtLmFycmF5Y29weShzcGFjZURlbCwgMCwgYWxsRGVsLCBkZWwubGVuZ3RoLCBzcGFjZURlbC5sZW5ndGgpOwotICAgIH0KLSAgICBlbHNlIGlmIChkZWwgIT0gbnVsbCkKLSAgICAgIGFsbERlbCA9IGRlbDsKLSAgICBlbHNlCi0gICAgICBhbGxEZWwgPSBzcGFjZURlbDsKLQotICAgIHNvcnQoYWxsRGVsKTsKLSAgfQotICAvKioKLSAgICogUGFyc2VzIHN0cmluZy4KLSAgICogQHJldHVybiBqYXZhLnV0aWwuRW51bWVyYXRpb24KLSAgICogQHBhcmFtIHMgamF2YS5sYW5nLlN0cmluZwotICAgKi8KLSAgcHVibGljIGphdmEudXRpbC5FbnVtZXJhdGlvbiBwYXJzZShTdHJpbmcgcykKLSAgewotICAgIGlmIChzID09IG51bGwpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTdHJpbmdUb2tlbml6ZXIgOiBTdHJpbmcgY2Fubm90IGJlIE5VTEwiKTsKLQotICAgIHJldHVybiBuZXcgU3RyaW5nVG9rZW5pemVyRW51bWVyYXRpb24ocy50b0NoYXJBcnJheSgpKTsKLSAgfQotCi0gIC8qKgotICAgKiBCaW5hcnkgc2VhcmNoLgotICAgKiBAcmV0dXJuIGJvb2xlYW4KLSAgICogQHBhcmFtIGMgY2hhcgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBjb250YWluKGNoYXIgYywgY2hhcltdIGEpCi0gIHsKLSAgICBpZiAoYSA9PSBudWxsKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW50IGwgPSAwLCByID0gYS5sZW5ndGggLSAxLCBjZW50ZXI7Ci0gICAgd2hpbGUgKGwgPCByKQotICAgIHsKLSAgICAgIGNlbnRlciA9IChsICsgcikgLyAyOwotICAgICAgaWYgKGMgPiBhW2NlbnRlcl0pCi0gICAgICAgIGwgPSBjZW50ZXIgKyAxOwotICAgICAgZWxzZQotICAgICAgICByID0gY2VudGVyOwotICAgIH0KLQotICAgIHJldHVybiBhW2xdID09IGM7Ci0gIH0KLSAgLyoqCi0gICAqIEhlYXAgc29ydAotICAgKiBAcGFyYW0gYyBjaGFyW10KLSAgICovCi0gIHN0YXRpYyBwcml2YXRlIHZvaWQgc29ydChjaGFyW10gYykKLSAgewotICAgIGlmIChjICE9IG51bGwpCi0gICAgewotICAgICAgaW50IGosIGs7Ci0gICAgICBjaGFyIGNpOwotCi0gICAgICAvLyBwdXNoIGhlYXAKLSAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYy5sZW5ndGg7IGkrKykKLSAgICAgIHsKLSAgICAgICAgaiA9ICgoayA9IGkpIC0gMSkgLyAyOwotICAgICAgICBjaSA9IGNbaV07Ci0gICAgICAgIHdoaWxlIChrID4gMCAmJiBjW2pdIDwgY2kpCi0gICAgICAgIHsKLSAgICAgICAgICBjW2tdID0gY1tqXTsKLSAgICAgICAgICBqID0gKChrID0gaikgLSAxKSAvIDI7Ci0gICAgICAgIH0KLSAgICAgICAgY1trXSA9IGNpOwotICAgICAgfQotCi0gICAgICAvLyBwb3AgaGVhcAotICAgICAgZm9yIChpbnQgaSA9IGMubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkKLSAgICAgIHsKLSAgICAgICAgaiA9IDI7Ci0gICAgICAgIGsgPSAwOwotICAgICAgICBjaSA9IGNbMF07Ci0gICAgICAgIHdoaWxlIChqIDw9IGkpCi0gICAgICAgIHsKLSAgICAgICAgICBjW2tdID0gKGNbaiAtIDFdID4gY1tqXSkgPyBjWy0tal0gOiBjW2pdOwotICAgICAgICAgIGogPSAoKGsgPSBqKSArIDEpICogMjsKLSAgICAgICAgfQotICAgICAgICBjW2tdID0gY1tpXTsKLSAgICAgICAgY1tpXSA9IGNpOwotICAgICAgfQotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9UZXN0VXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvVGVzdFV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0N2MxZDEuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9UZXN0VXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUudXRpbDsKLQotaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5Ub29sSW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5jb21tb24uQWRkU3R5bGVTaGVldDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLS8qKgotICogVGVzdCBVdGlsaXR5IGNsYXNzLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgVGVzdFV0aWxzCi17Ci0gIC8qKgotICAgKiBGb3JtYXQgYSBzdHlsZSBzaGVldCBkZWNsYXJhdGlvbiBmcm9tIHRoZSBhZGRTdHlsZVNoZWV0IGVsZW1lbnQuCi0gICAqIEBwYXJhbSBlbGVtZW50IGFuIEVsZW1lbnQgb2JqZWN0LgotICAgKiBAcGFyYW0gYWRkU3R5bGVTaGVldCBhbiBhZGRTdHlsZVNoZWV0IGVsZW1lbnQuCi0gICAqIEBwYXJhbSBkZWZhdWx0SHJlZiBkZWZhdWx0IGhyZWYuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgcGFyc2VBZGRTdHlsZVNoZWV0KAotICAgIEVsZW1lbnQgZWxlbWVudCwKLSAgICBBZGRTdHlsZVNoZWV0IGFkZFN0eWxlU2hlZXQsCi0gICAgU3RyaW5nIGRlZmF1bHRIcmVmKQotICB7Ci0gICAgYWRkU3R5bGVTaGVldC5zZXRIcmVmKAotICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUoZWxlbWVudCwgV1NJQ29uc3RhbnRzLkFUVFJfSFJFRiwgZGVmYXVsdEhyZWYpKTsKLSAgICBhZGRTdHlsZVNoZWV0LnNldFR5cGUoCi0gICAgICBYTUxVdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZSgKLSAgICAgICAgZWxlbWVudCwKLSAgICAgICAgV1NJQ29uc3RhbnRzLkFUVFJfVFlQRSwKLSAgICAgICAgV1NJQ29uc3RhbnRzLkRFRkFVTFRfWFNMX1RZUEUpKTsKLSAgICBhZGRTdHlsZVNoZWV0LnNldFRpdGxlKAotICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUoZWxlbWVudCwgV1NJQ29uc3RhbnRzLkFUVFJfVElUTEUpKTsKLSAgICBhZGRTdHlsZVNoZWV0LnNldE1lZGlhKAotICAgICAgWE1MVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUoZWxlbWVudCwgV1NJQ29uc3RhbnRzLkFUVFJfTUVESUEpKTsKLSAgICBhZGRTdHlsZVNoZWV0LnNldENoYXJzZXQoCi0gICAgICBYTUxVdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShlbGVtZW50LCBXU0lDb25zdGFudHMuQVRUUl9DSEFSU0VUKSk7Ci0gICAgYWRkU3R5bGVTaGVldC5zZXRBbHRlcm5hdGUoCi0gICAgICBYTUxVdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShlbGVtZW50LCBXU0lDb25zdGFudHMuQVRUUl9BTFRFUk5BVEUpKTsKLSAgfQotCi0gIC8qKgotICAgKiBEaXNwbGF5IHRvb2wgbmFtZSBhbmQgY29weXJpZ2h0IG5vdGljZS4KLSAgICogQHBhcmFtIHRvb2xJbmZvIGEgVG9vbEluZm8gb2JqZWN0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyB2b2lkIHByaW50VG9vbEluZm8oVG9vbEluZm8gdG9vbEluZm8pCi0gIHsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oCi0gICAgICAiQ29uZm9ybWFuY2UgIgotICAgICAgICArIHRvb2xJbmZvLmdldE5hbWUoKQotICAgICAgICArICIgVG9vbCIKLSAgICAgICAgKyAiLCBWZXJzaW9uOiAiCi0gICAgICAgICsgdG9vbEluZm8uZ2V0VmVyc2lvbigpCi0gICAgICAgICsgIiwgUmVsZWFzZSBEYXRlOiAiCi0gICAgICAgICsgdG9vbEluZm8uZ2V0UmVsZWFzZURhdGUoKSk7Ci0gICAgLy8gU3lzdGVtLm91dC5wcmludGxuKFdTSUNvbnN0YW50cy5DT1BZUklHSFQpOwotICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiICIpOwotICB9Ci0KLSAgLyoqIAotICAgKiBHZXQgWE1MIGNvbW1lbnQgdXNlZCBpbiBsb2cgYW5kIHJlcG9ydCBmaWxlLgotICAgKiBAcmV0dXJuIFhNTCBjb21tZW50IHVzZWQgaW4gbG9nIGFuZCByZXBvcnQgZmlsZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFhNTENvbW1lbnQoKQotICB7Ci0gICAgU3RyaW5nIGNvbW1lbnQgPSBudWxsOwotICAgIFN0cmluZyByZWFkTGluZSA9IG51bGw7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBBZGQgcmVxdWlyZWQgY29tbWVudHMgKGNvcHlyaWdodCwgZXRjLikKLSAgICAgIEJ1ZmZlcmVkUmVhZGVyIGJ1ZmZlcmVkUmVhZGVyID0KLSAgICAgICAgbmV3IEJ1ZmZlcmVkUmVhZGVyKAotICAgICAgICAgIG5ldyBJbnB1dFN0cmVhbVJlYWRlcigKLSAgICAgICAgICAgIFV0aWxzLmdldElucHV0U3RyZWFtKFdTSUNvbnN0YW50cy5DT01NRU5UU19GSUxFKSkpOwotCi0gICAgICAvLyBJbml0aWFsaXplIHN0cmluZyB0byBlbXB0eSBzdHJpbmcKLSAgICAgIGNvbW1lbnQgPSAiIjsKLQotICAgICAgd2hpbGUgKGJ1ZmZlcmVkUmVhZGVyLnJlYWR5KCkpCi0gICAgICB7Ci0gICAgICAgIGlmICgocmVhZExpbmUgPSBidWZmZXJlZFJlYWRlci5yZWFkTGluZSgpKSAhPSBudWxsKQotICAgICAgICAgIGNvbW1lbnQgKz0gcmVhZExpbmUgKyBXU0lDb25zdGFudHMuTElORV9TRVBBUkFUT1I7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIC8vIElnbm9yZSBleGNlcHRpb24gYW5kIGp1c3QgcmV0dXJuIG51bGwKLSAgICB9Ci0KLSAgICByZXR1cm4gY29tbWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgc2NoZW1hIGxvY2F0aW9uIGZvciBYTUwgc2NoZW1hLgotICAgKiBAcmV0dXJuIHNjaGVtYSBsb2NhdGlvbiBmb3IgWE1MIHNjaGVtYS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFhNTFNjaGVtYUxvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiBnZXRTY2hlbWFMb2NhdGlvbigKLSAgICAgIFdTSVByb3BlcnRpZXMuUFJPUF9YTUxfU0NIRU1BLAotICAgICAgV1NJUHJvcGVydGllcy5ERUZfWE1MX1NDSEVNQSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IFNPQVAgc2NoZW1hIGxvY2F0aW9uLgotICAgKiBAcmV0dXJuIFNPQVAgc2NoZW1hIGxvY2F0aW9uLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0U09BUFNjaGVtYUxvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiBnZXRTY2hlbWFMb2NhdGlvbigKLSAgICAgIFdTSVByb3BlcnRpZXMuUFJPUF9TT0FQX1NDSEVNQSwKLSAgICAgIFdTSVByb3BlcnRpZXMuREVGX1NPQVBfU0NIRU1BKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgV1NETCBzY2hlbWEgbG9jYXRpb24uCi0gICAqIEByZXR1cm4gV1NETCBzY2hlbWEgbG9jYXRpb24uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRXU0RMU2NoZW1hTG9jYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGdldFNjaGVtYUxvY2F0aW9uKAotICAgICAgV1NJUHJvcGVydGllcy5QUk9QX1dTRExfU0NIRU1BLAotICAgICAgV1NJUHJvcGVydGllcy5ERUZfV1NETF9TQ0hFTUEpOwotICB9Ci0KLSAgLyoqCi0gICogR2V0IFdTREwgU09BUCBzY2hlbWEgbG9jYXRpb24uCi0gICogQHJldHVybiBXU0RMIFNPQVAgc2NoZW1hIGxvY2F0aW9uLgotICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRXU0RMU09BUFNjaGVtYUxvY2F0aW9uKCkKLSAgewotICAgIHJldHVybiBnZXRTY2hlbWFMb2NhdGlvbigKLSAgICAgIFdTSVByb3BlcnRpZXMuUFJPUF9XU0RMX1NPQVBfU0NIRU1BLAotICAgICAgV1NJUHJvcGVydGllcy5ERUZfV1NETF9TT0FQX1NDSEVNQSk7Ci0gIH0KLSAgLyoqCi0gICAqIEdldCBXU0RMIHNjaGVtYSBsb2NhdGlvbi4KLSAgICogQHJldHVybiBXU0RMIHNjaGVtYSBsb2NhdGlvbi4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIFN0cmluZyBnZXRTY2hlbWFMb2NhdGlvbigKLSAgICBTdHJpbmcgcHJvcGVydHlOYW1lLAotICAgIFN0cmluZyBkZWZhdWx0VmFsdWUpCi0gIHsKLSAgICAvL1N0cmluZyBzY2hlbWFMb2NhdGlvbiA9IG51bGw7Ci0KLSAgICAvLyBHZXQgdGhlIHdzaS5ob21lIHN5c3RlbSBwcm9wZXJ0eQotICAgIC8vU3RyaW5nIHdzaUhvbWUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoV1NJUHJvcGVydGllcy5QUk9QX1dTSV9IT01FKTsKLSAgICAvL1N0cmluZyBmaWxlTG9jYXRpb24gPSBXU0lQcm9wZXJ0aWVzLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgZGVmYXVsdFZhbHVlKTsKLSAgICAvLwotICAgIC8vIElmIHRoZSBmaWxlIGxvY2F0aW9uIGlzIHNwZWNpZmllZCBpbiB0aGUgd3NpLnByb3BlcnRpZXMgZmlsZSB0aGVuIGJ1aWxkIGxvY2F0aW9uCi0gICAgLy9pZiAoZmlsZUxvY2F0aW9uICE9IG51bGwpCi0gICAgLy97Ci0gICAgLy8gSWYgd3NpLmhvbWUgaXMgc2V0LCB0aGVuIHVzZSBpdAotICAgIC8vICBpZiAod3NpSG9tZSAhPSBudWxsKQotICAgIC8vICB7Ci0gICAgLy8gICAgIHNjaGVtYUxvY2F0aW9uID0gd3NpSG9tZTsKLSAgICAvLyAgIH0KLSAgICAvLyAgIGlmIChzY2hlbWFMb2NhdGlvbiA9PSBudWxsKQotICAgIC8vICAgewotICAgIC8vICAgIHNjaGVtYUxvY2F0aW9uID0gZmlsZUxvY2F0aW9uOwotICAgIC8vICB9Ci0gICAgLy8gIGVsc2UKLSAgICAvLyAgewotICAgIC8vICAgaWYgKCFzY2hlbWFMb2NhdGlvbi5lbmRzV2l0aCgiLyIpKQotICAgIC8vICAgIHsKLSAgICAvLyAgICAgc2NoZW1hTG9jYXRpb24gKz0gIi8iOwotICAgIC8vICAgfQotICAgIC8vCi0gICAgLy8gICAgc2NoZW1hTG9jYXRpb24gKz0gZmlsZUxvY2F0aW9uOwotICAgIC8vICB9Ci0gICAgLy8gfQotICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvVHlwZXNSZWdpc3RyeS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9UeXBlc1JlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMjE0NWYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9UeXBlc1JlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1ODEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSVRhZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuQmFzZVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLQotLyoqCi0gKiBUaGUgY2xhc3MgZXh0cmFjdHMgWFNEIHNjaGVtYSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBnaXZlbiBXU0RMLgotICogCi0gKiBAYXV0aG9yIEt1bGlrCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBUeXBlc1JlZ2lzdHJ5IGltcGxlbWVudHMgV1NJVGFnLCBXU0RMVmlzaXRvcgotewotICBMaXN0IHNjaGVtYVByb2Nlc3NlZExpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLlBhcnQsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChQYXJ0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLlNlcnZpY2UsIGphdmEubGFuZy5PYmplY3QsIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChTZXJ2aWNlIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KFR5cGVzLCBPYmplY3QsCi0gICAqIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoVHlwZXMgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoT3BlcmF0aW9uLCBPYmplY3QsCi0gICAqIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoT3BlcmF0aW9uIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KElucHV0LCBPYmplY3QsCi0gICAqIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoSW5wdXQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoT3V0cHV0LCBPYmplY3QsCi0gICAqIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoT3V0cHV0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KEZhdWx0LCBPYmplY3QsCi0gICAqIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoRmF1bHQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoQmluZGluZywgT2JqZWN0LAotICAgKiBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEJpbmRpbmcgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoQmluZGluZ09wZXJhdGlvbiwgT2JqZWN0LAotICAgKiBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIEJpbmRpbmdPcGVyYXRpb24gb2JqLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KEJpbmRpbmdJbnB1dCwgT2JqZWN0LAotICAgKiBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEJpbmRpbmdJbnB1dCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChCaW5kaW5nT3V0cHV0LCBPYmplY3QsCi0gICAqIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoQmluZGluZ091dHB1dCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChCaW5kaW5nRmF1bHQsIE9iamVjdCwKLSAgICogV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChCaW5kaW5nRmF1bHQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoRWxlbWVudCwgT2JqZWN0LAotICAgKiBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEVsZW1lbnQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoTWVzc2FnZSwgT2JqZWN0LAotICAgKiBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KE1lc3NhZ2Ugb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoUG9ydCwgT2JqZWN0LAotICAgKiBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFBvcnQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoUG9ydFR5cGUsIE9iamVjdCwKLSAgICogV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChQb3J0VHlwZSBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChEZWZpbml0aW9uLCBPYmplY3QsCi0gICAqIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoRGVmaW5pdGlvbiBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChFeHRlbnNpYmlsaXR5RWxlbWVudCwKLSAgICogT2JqZWN0LCBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KAotICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IG9iaiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChTT0FQQmluZGluZywgT2JqZWN0LAotICAgKiBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBCaW5kaW5nIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLndzZGwudHJhdmVyc2FsLldTRExWaXNpdG9yI3Zpc2l0KFNPQVBCb2R5LCBPYmplY3QsCi0gICAqIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoU09BUEJvZHkgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoU09BUEhlYWRlciwgT2JqZWN0LAotICAgKiBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBIZWFkZXIgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoU09BUEhlYWRlckZhdWx0LCBPYmplY3QsCi0gICAqIFdTRExUcmF2ZXJzYWxDb250ZXh0KQotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgU09BUEhlYWRlckZhdWx0IG9iaiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChTT0FQRmF1bHQsIE9iamVjdCwKLSAgICogV1NETFRyYXZlcnNhbENvbnRleHQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQRmF1bHQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kud3NkbC50cmF2ZXJzYWwuV1NETFZpc2l0b3IjdmlzaXQoU09BUE9wZXJhdGlvbiwgT2JqZWN0LAotICAgKiBXU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBPcGVyYXRpb24gb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgfQotCi0gIHByaXZhdGUgTWFwIGVsZW1lbnQyVHlwZSA9IG5ldyBIYXNoTWFwKCk7Ci0gIHByaXZhdGUgU2V0IGV4dGVuZHNBcnJheSA9IG5ldyBIYXNoU2V0KCk7Ci0gIHByaXZhdGUgU2V0IHVzZXNXc2RsQXJyYXlUeXBlID0gbmV3IEhhc2hTZXQoKTsKLQotICBwcm90ZWN0ZWQgQmFzZVZhbGlkYXRvciBiYXNlVmFsaWRhdG9yID0gbnVsbDsKLSAKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGNyZWF0ZXMgdGhlIHR5cGVzIHJlZ2lzdHJ5LiBieSB0aGUgZ2l2ZW4gV1NETCBkZWZpbml0aW9uCi0gICAqIG9iamVjdC4KLSAgICogCi0gICAqIEBwYXJhbSBkZWYgYSBXU0RMIGRlZmluaXRpb24uCi0gICAqIEBwYXJhbSBiYXNlVmFsaWRhdG9yIGEgYmFzZSB2YWxpZGF0b3IuCi0gICAqLwotICBwdWJsaWMgVHlwZXNSZWdpc3RyeShEZWZpbml0aW9uIGRlZiwgQmFzZVZhbGlkYXRvciBiYXNlVmFsaWRhdG9yKQotICB7Ci0gICAgdGhpcy5iYXNlVmFsaWRhdG9yID0gYmFzZVZhbGlkYXRvcjsKLSAgICBpZiAoZGVmID09IG51bGwpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJEZWZpbml0aW9uIGNhbiBub3QgYmUgbnVsbCIpOwotCi0gICAgV1NETFRyYXZlcnNhbCB0cmF2ZXJzYWwgPSBuZXcgV1NETFRyYXZlcnNhbCgpOwotICAgIC8vVmlzaXRvckFkYXB0b3IuYWRhcHQodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnNldFZpc2l0b3IodGhpcyk7Ci0gICAgdHJhdmVyc2FsLnZpc2l0SW1wb3J0KHRydWUpOwotICAgIAotICAgIHByb2Nlc3NUeXBlcyhkZWYuZ2V0VHlwZXMoKSwgZGVmLmdldERvY3VtZW50QmFzZVVSSSgpKTsKLSAgICB0cmF2ZXJzYWwudHJhdmVyc2UoZGVmKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBjcmVhdGVzIHRoZSB0eXBlcyByZWdpc3RyeSBieSBnaXZlbiBXU0RMIHR5cGVzIG9iamVjdCBhbmQKLSAgICogbG9jYXRpb24gY29udGV4dCBVUkkuCi0gICAqIEBwYXJhbSB0eXBlcyBXU0RMIHR5cGVzIG9iamVjdC4KLSAgICogQHBhcmFtIGNvbnRleHQgbG9jYXRpb24gY29udGV4dCBVUkkuCi0gICAqIEBwYXJhbSBiYXNlVmFsaWRhdG9yIGEgYmFzZSB2YWxpZGF0b3IuCi0gICAqLwotICBwdWJsaWMgVHlwZXNSZWdpc3RyeSgKLSAgICBUeXBlcyB0eXBlcywKLSAgICBTdHJpbmcgY29udGV4dCwKLSAgICBCYXNlVmFsaWRhdG9yIGJhc2VWYWxpZGF0b3IpCi0gIHsKLSAgICB0aGlzLmJhc2VWYWxpZGF0b3IgPSBiYXNlVmFsaWRhdG9yOwotICAgIHByb2Nlc3NUeXBlcyh0eXBlcywgY29udGV4dCk7Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCByZXR1cm5zIHR5cGUncyBxbmFtZSBieSBnaXZlbiBlbGVtZW50J3MgcW5hbWUuCi0gICAqIEBwYXJhbSBlbGVtZW50TmFtZSBhIHF1YWxpZmllZCBlbGVtZW50IG5hbWUuCi0gICAqIEByZXR1cm4gdHlwZSdzIHFuYW1lIGJ5IGdpdmVuIGVsZW1lbnQncyBxbmFtZS4KLSAgICovCi0gIHB1YmxpYyBRTmFtZSBnZXRUeXBlKFFOYW1lIGVsZW1lbnROYW1lKQotICB7Ci0gICAgcmV0dXJuIChRTmFtZSkgZWxlbWVudDJUeXBlLmdldChlbGVtZW50TmFtZSk7Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCByZXR1cm5zIHNldCBvZiB0eXBlcyB3aGljaCBpcyBhcnJheSBhdHRyaWJ1dGUuCi0gICAqIEByZXR1cm4gc2V0IG9mIHR5cGVzIHdoaWNoIGlzIGFycmF5IGF0dHJpYnV0ZS4KLSAgICovCi0gIHB1YmxpYyBTZXQgZ2V0QXJyYXlUeXBlcygpCi0gIHsKLSAgICBTZXQgcyA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgcy5hZGRBbGwoKENvbGxlY3Rpb24pIHVzZXNXc2RsQXJyYXlUeXBlKTsKLSAgICBzLmFkZEFsbCgoQ29sbGVjdGlvbikgZXh0ZW5kc0FycmF5KTsKLSAgICByZXR1cm4gczsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHJldHVybnMgc2V0IG9mIGVsZW1lbnRzIGRlZmluZWQgaW4gdHlwZXMgZWxlbWVudC4KLSAgICogQHJldHVybiBzZXQgb2YgZWxlbWVudHMgZGVmaW5lZCBpbiB0eXBlcyBlbGVtZW50LgotICAgKi8KLSAgcHVibGljIFNldCBnZXRFbGVtZW50TGlzdCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5lbGVtZW50MlR5cGUua2V5U2V0KCk7Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHR5cGUgZGVjbGFyZXMgd3NkbDphcnJheVR5cGUKLSAgICogYXR0cmlidXRlIHdpdGhpbiBkZWNsYXJhdGlvbi4KLSAgICogQHBhcmFtIHR5cGUgYSB0eXBlLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHR5cGUgZGVjbGFyZXMgd3NkbDphcnJheVR5cGUKLSAgICogYXR0cmlidXRlIHdpdGhpbiBkZWNsYXJhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzVXNlc1dTRExBcnJheVR5cGUoUU5hbWUgdHlwZSkKLSAgewotICAgIHJldHVybiB1c2VzV3NkbEFycmF5VHlwZS5jb250YWlucyh0eXBlKTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiBnaXZlbiB0eXBlIGV4dGVuZHMgc29hcGVuYzpBcnJheSB0eXBlLgotICAgKiBAcGFyYW0gdHlwZSBhIHR5cGUuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBnaXZlbiB0eXBlIGV4dGVuZHMgc29hcGVuYzpBcnJheSB0eXBlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNFeHRlbmRzQXJyYXkoUU5hbWUgdHlwZSkKLSAgewotICAgIHJldHVybiBleHRlbmRzQXJyYXkuY29udGFpbnModHlwZSk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVmlzaXRvciN2aXNpdChqYXZheC53c2RsLkltcG9ydCwgamF2YS5sYW5nLk9iamVjdCwgb3JnLndzaS53c2RsLnRyYXZlcnNhbC5XU0RMVHJhdmVyc2FsQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEltcG9ydCBpbSwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgaWYgKGltLmdldERlZmluaXRpb24oKSAhPSBudWxsKQotICAgICAgcHJvY2Vzc1dTREwoaW0uZ2V0RGVmaW5pdGlvbigpKTsKLSAgfQotCi0gIC8qKgotICAgKiBJbnRlcm5hbCBtZXRob2QgcHJvY2Vzc2VzIFdTREwgZGVmaW5pdGlvbi4KLSAgICogQHBhcmFtIGRlZiBhIFdTREwgZGVmaW5pdGlvbi4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBwcm9jZXNzV1NETChEZWZpbml0aW9uIGRlZikKLSAgewotICAgIGlmIChkZWYuZ2V0VHlwZXMoKSAhPSBudWxsKQotICAgICAgcHJvY2Vzc1R5cGVzKGRlZi5nZXRUeXBlcygpLCBkZWYuZ2V0RG9jdW1lbnRCYXNlVVJJKCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIEludGVybmFsIG1ldGhvZCBwcm9jZXNzZXMgV1NETCB0eXBlcy4KLSAgICogQHBhcmFtIHR5cGVzIFdTREwgdHlwZXMuCi0gICAqIEBwYXJhbSBjb250ZXh0IGEgY29udGV4dC4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBwcm9jZXNzVHlwZXMoVHlwZXMgdHlwZXMsIFN0cmluZyBjb250ZXh0KQotICB7Ci0gICAgaWYgKHR5cGVzID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgTGlzdCBleHRzID0gdHlwZXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgaWYgKGV4dHMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IGV4dHMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGVsID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBpdC5uZXh0KCk7Ci0gICAgICAgIGlmIChlbCBpbnN0YW5jZW9mIFNjaGVtYSkKLSAgICAgICAgICBzZWFyY2hGb3JTY2hlbWEoCi0gICAgICAgICAgICAoKFNjaGVtYSkgZWwpLmdldEVsZW1lbnQoKSwKLSAgICAgICAgICAgIGNvbnRleHQpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBJbnRlcm5hbCBtZXRob2Qgc2VhcmNoZXMgWFNEIHNjaGVtYSBkZWNsYXJhdGlvbiBhbmQgWFNEIGltcG9ydAotICAgKiBzdGF0ZW1lbnRzLgotICAgKiBAcGFyYW0gbgotICAgKiBAcGFyYW0gY29udGV4dAotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHNlYXJjaEZvclNjaGVtYShOb2RlIG4sIFN0cmluZyBjb250ZXh0KQotICB7Ci0gICAgd2hpbGUgKG4gIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBzZWFyY2hlcyBmb3IgeHNkOmltcG9ydCBlbGVtZW50Ci0gICAgICBpZiAoTm9kZS5FTEVNRU5UX05PREUgPT0gbi5nZXROb2RlVHlwZSgpKQotICAgICAgewotICAgICAgICAvLyBpZiB4c2Q6c2NoZW1hIGVsZW1lbnQgaXMgZm91bmQgLT4gcHJvY2VzcyBzY2hlbWEKLSAgICAgICAgaWYgKFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9TQ0hFTUEpKQotICAgICAgICAgIHByb2Nlc3NTY2hlbWEobiwgY29udGV4dCwgbmV3IEFycmF5TGlzdCgpKTsKLSAgICAgIH0KLSAgICAgIG4gPSBuLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEludGVybmFsIG1ldGhvZCBsb2FkcyBYU0Qgc2NoZW1hIGJ5IHVzaW5nIHNjaGVtYSBsb2NhdGlvbiBhbmQKLSAgICogbG9jYXRpb24gY29udGV4dC4KLSAgICogQHBhcmFtIGltcG9ydE5vZGUKLSAgICogQHBhcmFtIGNvbnRleHQKLSAgICovCi0gIHByaXZhdGUgdm9pZCBsb2FkU2NoZW1hKE5vZGUgaW1wb3J0Tm9kZSwgU3RyaW5nIGNvbnRleHQsIExpc3QgcHJvY2Vzc2VkU2NoZW1hcykKLSAgewotICAgIEVsZW1lbnQgaW0gPSAoRWxlbWVudCkgaW1wb3J0Tm9kZTsKLSAgICBBdHRyIHNjaGVtYUxvY2F0aW9uID0gWE1MVXRpbHMuZ2V0QXR0cmlidXRlKGltLCBBVFRSX1hTRF9TQ0hFTUFMT0NBVElPTik7Ci0JCi0gICAgLy8gdHJ5IHRvIHBhcnNlIGltcG9ydGVkIFhTRAotICAgIGlmIChzY2hlbWFMb2NhdGlvbiAhPSBudWxsICYmIHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCkgIT0gbnVsbCkKLSAgICAgIHRyeQotICAgICAgewotICAgIAlTdHJpbmcgdXJsU3RyaW5nID0gWE1MVXRpbHMuY3JlYXRlVVJMU3RyaW5nKHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCksIGNvbnRleHQpOwotICAgIAlpZiAoIXNjaGVtYVByb2Nlc3NlZExpc3QuY29udGFpbnModXJsU3RyaW5nKSkKLSAgICAJewotICAgICAgICAgIC8vIGlmIGFueSBlcnJvciBvciByb290IGVsZW1lbnQgaXMgbm90IFhTRCBzY2hlbWEgLT4gZXJyb3IKLSAgICAgICAgICBEb2N1bWVudCBzY2hlbWEgPQotICAgICAgICAgICAgYmFzZVZhbGlkYXRvci5wYXJzZVhNTERvY3VtZW50VVJMKAotICAgICAgICAgICAgICBzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpLAotICAgICAgICAgICAgICBjb250ZXh0LAotICAgICAgICAgICAgICBudWxsKTsKLSAgICAgICAgICBzY2hlbWFQcm9jZXNzZWRMaXN0LmFkZCh1cmxTdHJpbmcpOwotICAgICAgICAgIGlmIChYTUxVdGlscy5lcXVhbHMoc2NoZW1hLmdldERvY3VtZW50RWxlbWVudCgpLCBFTEVNX1hTRF9TQ0hFTUEpKQotICAgICAgICAgICAgcHJvY2Vzc1NjaGVtYSgKLSAgICAgICAgICAgICAgc2NoZW1hLmdldERvY3VtZW50RWxlbWVudCgpLAotICAgICAgICAgICAgICB1cmxTdHJpbmcsIHByb2Nlc3NlZFNjaGVtYXMpOwotICAgIAl9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICB7Ci0gICAgICAgIC8vdC5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgICAgLy8gbm90aGluZy4gaXQncyBub3QgYSBzY2hlbWEKLSAgICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBJbnRlcm5hbCBtZXRob2QgcHJvY2Vzc2VzIFhTRCBzY2hlbWEgYW5kIHJldHJpZXZlcyB0eXBlcyBkZWNsYXJhdGlvbiBmcm9tCi0gICAqIGl0LgotICAgKiBAcGFyYW0gc2NoZW1hCi0gICAqIEBwYXJhbSBjb250ZXh0Ci0gICAqLwotICBwcml2YXRlIHZvaWQgcHJvY2Vzc1NjaGVtYShOb2RlIHNjaGVtYSwgU3RyaW5nIGNvbnRleHQsIExpc3QgcHJvY2Vzc2VkU2NoZW1hcykKLSAgewotCWlmICgoc2NoZW1hICE9IG51bGwpICYmICghcHJvY2Vzc2VkU2NoZW1hcy5jb250YWlucyhzY2hlbWEpKSkKLQl7Ci0JICBwcm9jZXNzZWRTY2hlbWFzLmFkZChzY2hlbWEpOwotICAgICAgQXR0ciBhID0gWE1MVXRpbHMuZ2V0QXR0cmlidXRlKChFbGVtZW50KSBzY2hlbWEsIEFUVFJfWFNEX1RBUkdFVE5BTUVTUEFDRSk7Ci0gICAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gKGEgIT0gbnVsbCkgPyBhLmdldFZhbHVlKCkgOiAiIjsKLSAgICAgIC8vIGl0ZXJhdGUgc2NoZW1hCi0gICAgICBOb2RlIG4gPSBzY2hlbWEuZ2V0Rmlyc3RDaGlsZCgpOwotICAgICAgLy8gISEgd2Ugc3VwcG9zZSB0aGF0IHhzZDppbXBvcnQgZWxlbWVudCBpcyBvY2N1cmVkIG9ubHkgd2l0aGluIHhzZDpzY2hlbWEgZWxlbWVudCAgICAgICAgCi0gICAgICB3aGlsZSAobiAhPSBudWxsKQotICAgICAgewotICAgICAgICBpZiAoTm9kZS5FTEVNRU5UX05PREUgPT0gbi5nZXROb2RlVHlwZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9FTEVNRU5UKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBFbGVtZW50IGVsID0gKEVsZW1lbnQpIG47Ci0gICAgICAgICAgICBhID0gWE1MVXRpbHMuZ2V0QXR0cmlidXRlKGVsLCBBVFRSX1hTRF9OQU1FKTsKLSAgICAgICAgICAgIFFOYW1lIGVsZW1lbnQgPQotICAgICAgICAgICAgICBuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCAoYSAhPSBudWxsKSA/IGEuZ2V0VmFsdWUoKSA6ICIiKTsKLQotICAgICAgICAgICAgYSA9IFhNTFV0aWxzLmdldEF0dHJpYnV0ZShlbCwgQVRUUl9YU0RfVFlQRSk7Ci0gICAgICAgICAgICBRTmFtZSB0eXBlID0gbnVsbDsKLSAgICAgICAgICAgIGlmIChhICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFN0cmluZyB0ID0gYS5nZXRWYWx1ZSgpOwotICAgICAgICAgICAgICAvLyBpZiB0eXBlIGNvbnRhaW5zICc6JywgaXQgbWVhbnMgdGhhdCBpdCBjb250YWlucyBxbmFtZQotICAgICAgICAgICAgICBpbnQgaSA9IHQuaW5kZXhPZignOicpOwotICAgICAgICAgICAgICBpZiAoaSAhPSAtMSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFN0cmluZyBwcmVmaXggPSB0LnN1YnN0cmluZygwLCBpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbnNVUkkgPSBYTUxVdGlscy5maW5kTmFtZXNwYWNlVVJJKG4sIHByZWZpeCk7Ci0gICAgICAgICAgICAgICAgdHlwZSA9IG5ldyBRTmFtZShuc1VSSSwgdC5zdWJzdHJpbmcoaSArIDEpKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdHlwZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsIHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyBzdXBwb3NlIHRoYXQgZWxlbWVudCBkaXJlY3RseSBjb250YWlucyB0eXBlIGRlY2xhcmF0aW9uCi0gICAgICAgICAgICAgIHR5cGUgPSBlbGVtZW50OwotICAgICAgICAgICAgICBjaGVja1R5cGUobiwgdHlwZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVsZW1lbnQyVHlwZS5wdXQoZWxlbWVudCwgdHlwZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9JTVBPUlQpKQotICAgICAgICAgICAgbG9hZFNjaGVtYShuLCBjb250ZXh0LCBwcm9jZXNzZWRTY2hlbWFzKTsKLSAgICAgICAgICBlbHNlIGlmIChYTUxVdGlscy5lcXVhbHMobiwgRUxFTV9YU0RfSU5DTFVERSkpCi0gICAgICAgICAgICBsb2FkU2NoZW1hKG4sIGNvbnRleHQsIHByb2Nlc3NlZFNjaGVtYXMpOwotICAgICAgICAgIGVsc2UgaWYgKFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9DT01QTEVYVFlQRSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgRWxlbWVudCBlbCA9IChFbGVtZW50KSBuOwotICAgICAgICAgICAgYSA9IFhNTFV0aWxzLmdldEF0dHJpYnV0ZShlbCwgQVRUUl9YU0RfTkFNRSk7Ci0gICAgICAgICAgICBRTmFtZSB0eXBlID0KLSAgICAgICAgICAgICAgbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgKGEgIT0gbnVsbCkgPyBhLmdldFZhbHVlKCkgOiAiIik7Ci0gICAgICAgICAgICBjaGVja1R5cGUobiwgdHlwZSk7Ci0gICAgICAgICAgfQotCi0gICAgICAgIH0KLQotICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgfQotCX0KLSAgfQotCi0gIC8qKgotICAgKiBJbnRlcm5hbCBtZXRob2QgY2hlY2tzIHdoZXRoZXIgc3BlY2lmaWVkIHR5cGUgaGFzIFdTREwgYXJyYXkgdHlwZQotICAgKiBhdHRyaWJ1dGUgaW4gdGhlIFhTRCBkZWNsYXJhdGlvbi4KLSAgICogQHBhcmFtIG4KLSAgICogQHBhcmFtIG5hbWUKLSAgICovCi0gIHByaXZhdGUgdm9pZCBjaGVja1R5cGUoTm9kZSBuLCBRTmFtZSBuYW1lKQotICB7Ci0gICAgd2hpbGUgKG4gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoTm9kZS5FTEVNRU5UX05PREUgPT0gbi5nZXROb2RlVHlwZSgpKQotICAgICAgewotICAgICAgICAvLyBjaGVjayBzdWNoIHNlbnRlbmNlCi0gICAgICAgIC8vICAgICAgICAgICAgICB4c2Q6YXR0cmlidXRlIHJlZj0ic29hcGVuYzphcnJheVR5cGUiIHdzZGw6YXJyYXlUeXBlPSJ0bnM6TXlBcnJheTJUeXBlW10iLz4KLSAgICAgICAgaWYgKFhNTFV0aWxzLmVxdWFscyhuLCBFTEVNX1hTRF9BVFRSSUJVVEUpKQotICAgICAgICB7Ci0gICAgICAgICAgQXR0ciBhID0gWE1MVXRpbHMuZ2V0QXR0cmlidXRlKChFbGVtZW50KSBuLCBBVFRSX1dTRExfQVJSQVlUWVBFKTsKLSAgICAgICAgICBpZiAoYSAhPSBudWxsKQotICAgICAgICAgICAgdXNlc1dzZGxBcnJheVR5cGUuYWRkKG5hbWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gcmV0cmlldmUgYmFzZSBhdHRyaWJ1dGUgbWF5IGJlIGZyb20gcmVzdHJpY3Rpb24gb3IgZXh0ZW5zaW9uCi0gICAgICAgIEF0dHIgYSA9IFhNTFV0aWxzLmdldEF0dHJpYnV0ZSgoRWxlbWVudCkgbiwgQVRUUl9YU0RfQkFTRSk7Ci0gICAgICAgIGlmIChhICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgYmFzZSA9IGEuZ2V0VmFsdWUoKTsKLSAgICAgICAgICBpbnQgaSA9IGJhc2UuaW5kZXhPZigiOiIpOwotICAgICAgICAgIGlmIChpICE9IC0xKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyBwcmVmaXggPSBiYXNlLnN1YnN0cmluZygwLCBpKTsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhbCA9IGJhc2Uuc3Vic3RyaW5nKGkgKyAxKTsKLSAgICAgICAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBYTUxVdGlscy5maW5kTmFtZXNwYWNlVVJJKG4sIHByZWZpeCk7Ci0gICAgICAgICAgICBpZiAoU09BUEVOQ19BUlJBWS5lcXVhbHMobmV3IFFOYW1lKG5hbWVzcGFjZSwgbG9jYWwpKSkKLSAgICAgICAgICAgICAgZXh0ZW5kc0FycmF5LmFkZChuYW1lKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2hlY2tUeXBlKG4uZ2V0Rmlyc3RDaGlsZCgpLCBuYW1lKTsKLSAgICAgIH0KLSAgICAgIG4gPSBuLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL1VERElVdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9VRERJVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkyZTA2NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL1VERElVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwuV1NETERvY3VtZW50OwotaW1wb3J0IG9yZy51ZGRpNGouVURESUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudWRkaTRqLmNsaWVudC5VRERJUHJveHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5iaW5kaW5nLkJpbmRpbmdUZW1wbGF0ZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLmJpbmRpbmcuVE1vZGVsSW5zdGFuY2VJbmZvOwotaW1wb3J0IG9yZy51ZGRpNGouZGF0YXR5cGUuYnVzaW5lc3MuQnVzaW5lc3NFbnRpdHk7Ci1pbXBvcnQgb3JnLnVkZGk0ai5kYXRhdHlwZS5zZXJ2aWNlLkJ1c2luZXNzU2VydmljZTsKLWltcG9ydCBvcmcudWRkaTRqLmRhdGF0eXBlLnRtb2RlbC5UTW9kZWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5CdXNpbmVzc0RldGFpbDsKLWltcG9ydCBvcmcudWRkaTRqLnJlc3BvbnNlLlNlcnZpY2VEZXRhaWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5UTW9kZWxEZXRhaWw7Ci1pbXBvcnQgb3JnLnVkZGk0ai5yZXNwb25zZS5UTW9kZWxJbmZvOwotaW1wb3J0IG9yZy51ZGRpNGoucmVzcG9uc2UuVE1vZGVsTGlzdDsKLWltcG9ydCBvcmcudWRkaTRqLnRyYW5zcG9ydC5UcmFuc3BvcnRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnVkZGk0ai51dGlsLkNhdGVnb3J5QmFnOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5GaW5kUXVhbGlmaWVyOwotaW1wb3J0IG9yZy51ZGRpNGoudXRpbC5GaW5kUXVhbGlmaWVyczsKLWltcG9ydCBvcmcudWRkaTRqLnV0aWwuS2V5ZWRSZWZlcmVuY2U7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBwcm92aWRlIHNvbWUgc2VydmljZSBmdW5jdGlvbnMgdXNlZCBieSBVRERJVmFsaWRhdG9yLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0KLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIFVERElVdGlscwotewotICBzdGF0aWMgcHVibGljIGZpbmFsIEZpbmRRdWFsaWZpZXJzIEVYQUNUX05BTUVfTUFUQ0hfUVVBTElGSUVSOwotICBzdGF0aWMgewotICAgIFZlY3RvciB2ZWN0b3IgPSBuZXcgVmVjdG9yKCk7Ci0gICAgRVhBQ1RfTkFNRV9NQVRDSF9RVUFMSUZJRVIgPSBuZXcgRmluZFF1YWxpZmllcnMoKTsKLSAgICB2ZWN0b3IuYWRkKG5ldyBGaW5kUXVhbGlmaWVyKEZpbmRRdWFsaWZpZXIuZXhhY3ROYW1lTWF0Y2gpKTsKLSAgICB2ZWN0b3IuYWRkKG5ldyBGaW5kUXVhbGlmaWVyKEZpbmRRdWFsaWZpZXIuc29ydEJ5TmFtZUFzYykpOwotICAgIEVYQUNUX05BTUVfTUFUQ0hfUVVBTElGSUVSLnNldEZpbmRRdWFsaWZpZXJWZWN0b3IodmVjdG9yKTsKLSAgfQotCi0gIHN0YXRpYyBmaW5hbCBTdHJpbmcgV1NfSV9DT05GT1JNQU5DRV9UTU9ERUxfTkFNRSA9Ci0gICAgIndzLWktb3JnOmNvbmZvcm1zVG86MjAwMl8xMiI7Ci0KLSAgc3RhdGljIHByaXZhdGUgSGFzaHRhYmxlIHdzaUNvbmZvcm1hbmNlVGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7Ci0KLSAgLyoqCi0gICAqIEdldHMgYSBidXNpbmVzcyBzZXJ2aWNlIGJ5IGtleS4KLSAgICogQHBhcmFtIHByb3h5ICBhIFVEREkgcHJveHkuCi0gICAqIEBwYXJhbSBrZXkgICAgYSBrZXkgdG8gYSBidXNpbmVzcyBzZXJ2aWNlLgotICAgKiBAcmV0dXJuIGEgYnVzaW5lc3Mgc2VydmljZSBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIGtleS4KLSAgICogQHRocm93cyBUcmFuc3BvcnRFeGNlcHRpb24gaWYgZXJyb3Igb3JpZ2luYXRpbmcgd2l0aGluIHRoZSBTT0FQIHRyYW5zcG9ydC4KLSAgICogQHRocm93cyBVRERJRXhjZXB0aW9uIGlmIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBVRERJIEFQSSBjYW5ub3QgaW5kaWNhdGUgYW4gZXJyb3IgY29uZGl0aW9uLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBCdXNpbmVzc1NlcnZpY2UgZ2V0QnVzaW5lc3NTZXJ2aWNlQnlLZXkoCi0gICAgVURESVByb3h5IHByb3h5LAotICAgIFN0cmluZyBrZXkpCi0gICAgdGhyb3dzIFRyYW5zcG9ydEV4Y2VwdGlvbiwgVURESUV4Y2VwdGlvbgotICB7Ci0gICAgQnVzaW5lc3NTZXJ2aWNlIHJlc3VsdCA9IG51bGw7Ci0KLSAgICBTZXJ2aWNlRGV0YWlsIHNkID0gcHJveHkuZ2V0X3NlcnZpY2VEZXRhaWwoa2V5KTsKLQotICAgIGlmIChzZCAhPSBudWxsKQotICAgIHsKLSAgICAgIFZlY3RvciB2ID0gc2QuZ2V0QnVzaW5lc3NTZXJ2aWNlVmVjdG9yKCk7Ci0KLSAgICAgIGlmICh2ICE9IG51bGwgJiYgdi5zaXplKCkgPiAwKQotICAgICAgewotICAgICAgICByZXN1bHQgPSAoQnVzaW5lc3NTZXJ2aWNlKSB2LmZpcnN0RWxlbWVudCgpOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyBidXNpbmVzcyBlbnRpdHkgYnkga2V5LgotICAgKiBAcGFyYW0gcHJveHkgIGEgVURESSBwcm94eS4KLSAgICogQHBhcmFtIGtleSAgICBhIGtleSB0byBhIGJ1c2luZXNzIGVudGl5LgotICAgKiBAcmV0dXJuIGEgYnVzaW5lc3MgZW50aXR5IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4ga2V5LgotICAgKiBAdGhyb3dzIFRyYW5zcG9ydEV4Y2VwdGlvbiBpZiBlcnJvciBvcmlnaW5hdGluZyB3aXRoaW4gdGhlIFNPQVAgdHJhbnNwb3J0LgotICAgKiBAdGhyb3dzIFVERElFeGNlcHRpb24gaWYgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFVEREkgQVBJIGNhbm5vdCBpbmRpY2F0ZSAKLSAgICogICAgICAgICBhbiBlcnJvciBjb25kaXRpb24uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIEJ1c2luZXNzRW50aXR5IGdldEJ1c2luZXNzQnlLZXkoVURESVByb3h5IHByb3h5LCBTdHJpbmcga2V5KQotICAgIHRocm93cyBUcmFuc3BvcnRFeGNlcHRpb24sIFVERElFeGNlcHRpb24KLSAgewotICAgIEJ1c2luZXNzRW50aXR5IHJlc3VsdCA9IG51bGw7Ci0KLSAgICBCdXNpbmVzc0RldGFpbCBiZCA9IHByb3h5LmdldF9idXNpbmVzc0RldGFpbChrZXkpOwotCi0gICAgaWYgKGJkICE9IG51bGwpCi0gICAgewotICAgICAgVmVjdG9yIHYgPSBiZC5nZXRCdXNpbmVzc0VudGl0eVZlY3RvcigpOwotCi0gICAgICBpZiAodiAhPSBudWxsICYmIHYuc2l6ZSgpID4gMCkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gKEJ1c2luZXNzRW50aXR5KSB2LmZpcnN0RWxlbWVudCgpOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyBhIHRNb2RlbCBieSBrZXkuCi0gICAqIEBwYXJhbSBwcm94eSAgYSBVRERJIHByb3h5LgotICAgKiBAcGFyYW0ga2V5ICAgIGEga2V5IHRvIGEgdE1vZGVsLgotICAgKiBAcmV0dXJuIGEgdE1vZGVsIHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4ga2V5LgotICAgKiBAdGhyb3dzIFRyYW5zcG9ydEV4Y2VwdGlvbiBpZiBlcnJvciBvcmlnaW5hdGluZyB3aXRoaW4gdGhlIFNPQVAgdHJhbnNwb3J0LgotICAgKiBAdGhyb3dzIFVERElFeGNlcHRpb24gaWYgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFVEREkgQVBJIGNhbm5vdCBpbmRpY2F0ZSAKLSAgICogICAgICAgICBhbiBlcnJvciBjb25kaXRpb24uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFRNb2RlbCBnZXRUTW9kZWxCeUtleShVRERJUHJveHkgcHJveHksIFN0cmluZyBrZXkpCi0gIHsKLSAgICBUTW9kZWwgcmVzdWx0ID0gbnVsbDsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIFRNb2RlbERldGFpbCBiZCA9IHByb3h5LmdldF90TW9kZWxEZXRhaWwoa2V5KTsKLQotICAgICAgaWYgKGJkICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIFZlY3RvciB2ID0gYmQuZ2V0VE1vZGVsVmVjdG9yKCk7Ci0KLSAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB2LnNpemUoKSA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSAoVE1vZGVsKSB2LmZpcnN0RWxlbWVudCgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChUaHJvd2FibGUgZSkKLSAgICB7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qKgotICAgKiBHZXRzIGtleSBvZiB0aGUgV1NJIENvbmZvcm1hbmNlIHRNb2RlbC4KLSAgICogQHBhcmFtIHByb3h5ICBhIFVEREkgcHJveHkuCi0gICAqIEByZXR1cm4gdGhlIGtleSBvZiB0aGUgV1NJIENvbmZvcm1hbmNlIHRNb2RlbC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFdTSUNvbmZvcm1hbmNlVE1vZGVsS2V5KFVERElQcm94eSBwcm94eSkKLSAgewotICAgIGlmIChwcm94eSA9PSBudWxsKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVURESSBwcm94eSBjYW5ub3QgYmUgbnVsbC4iKTsKLQotICAgIFN0cmluZyByZXN1bHQgPSBudWxsOwotCi0gICAgaWYgKHdzaUNvbmZvcm1hbmNlVGFibGUuY29udGFpbnNLZXkocHJveHkpKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IHdzaUNvbmZvcm1hbmNlVGFibGUuZ2V0KHByb3h5KS50b1N0cmluZygpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmVzdWx0ID0gZ2V0VE1vZGVsS2V5QnlOYW1lKHByb3h5LCBXU19JX0NPTkZPUk1BTkNFX1RNT0RFTF9OQU1FKTsKLQotICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQotICAgICAgewotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJXUy1JIGNvbmZvcm1hbmNlIHRheG9ub215IHRNb2RlbCB3YXMgbm90IGZvdW5kIik7Ci0gICAgICB9Ci0KLSAgICAgIHdzaUNvbmZvcm1hbmNlVGFibGUucHV0KHByb3h5LCByZXN1bHQpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyBhIHRNb2RlbCBrZXkgYnkgdE1vZGVsIG5hbWUuCi0gICAqIEBwYXJhbSBwcm94eSAgYSBVRERJIHByb3h5LgotICAgKiBAcGFyYW0gbmFtZSAgIGEgdE1vZGVsIG5hbWUuCi0gICAqIEByZXR1cm4gYSB0TW9kZWwga2V5IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gdE1vZGVsIG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRUTW9kZWxLZXlCeU5hbWUoVURESVByb3h5IHByb3h5LCBTdHJpbmcgbmFtZSkKLSAgewotICAgIFN0cmluZyByZXN1bHQgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIFRNb2RlbExpc3QgbGlzdCA9Ci0gICAgICAgIHByb3h5LmZpbmRfdE1vZGVsKG5hbWUsIG51bGwsIG51bGwsIEVYQUNUX05BTUVfTUFUQ0hfUVVBTElGSUVSLCAxKTsKLSAgICAgIFRNb2RlbEluZm8gaW5mbyA9Ci0gICAgICAgIChUTW9kZWxJbmZvKSBsaXN0LmdldFRNb2RlbEluZm9zKCkuZ2V0VE1vZGVsSW5mb1ZlY3RvcigpLmZpcnN0RWxlbWVudCgpOwotICAgICAgcmVzdWx0ID0gaW5mby5nZXRUTW9kZWxLZXkoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSBlKQotICAgIHsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYmluZGluZ1RlbXBsYXRlLgotICAgKiBAcGFyYW0gYmluZGluZ1RlbXBsYXRlICBhIEJpbmRpbmdUZW1wbGF0ZSBvYmplY3QuCi0gICAqIEByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYmluZGluZ1RlbXBsYXRlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgYmluZGluZ1RlbXBsYXRlVG9TdHJpbmcoQmluZGluZ1RlbXBsYXRlIGJpbmRpbmdUZW1wbGF0ZSkKLSAgewotICAgIFN0cmluZyByZXR1cm5TdHJpbmcgPSAiIjsKLQotICAgIGlmIChiaW5kaW5nVGVtcGxhdGUgPT0gbnVsbCkKLSAgICAgIHJldHVyblN0cmluZyA9ICJudWxsIjsKLQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXR1cm5TdHJpbmcgPQotICAgICAgICAiYWNjZXNzUG9pbnQ6ICIKLSAgICAgICAgICArIChiaW5kaW5nVGVtcGxhdGUuZ2V0QWNjZXNzUG9pbnQoKSA9PSBudWxsCi0gICAgICAgICAgICA/ICJudWxsIgotICAgICAgICAgICAgOiBiaW5kaW5nVGVtcGxhdGUuZ2V0QWNjZXNzUG9pbnQoKS5nZXRUZXh0KCkpOwotCi0gICAgICBpZiAoYmluZGluZ1RlbXBsYXRlLmdldFRNb2RlbEluc3RhbmNlRGV0YWlscygpID09IG51bGwKLSAgICAgICAgfHwgYmluZGluZ1RlbXBsYXRlCi0gICAgICAgICAgLmdldFRNb2RlbEluc3RhbmNlRGV0YWlscygpCi0gICAgICAgICAgLmdldFRNb2RlbEluc3RhbmNlSW5mb1ZlY3RvcigpCi0gICAgICAgICAgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuU3RyaW5nICs9ICIsIFtubyB0TW9kZWwgcmVmZXJlbmNlXSI7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPQotICAgICAgICAgIGJpbmRpbmdUZW1wbGF0ZQotICAgICAgICAgICAgLmdldFRNb2RlbEluc3RhbmNlRGV0YWlscygpCi0gICAgICAgICAgICAuZ2V0VE1vZGVsSW5zdGFuY2VJbmZvVmVjdG9yKCkKLSAgICAgICAgICAgIC5pdGVyYXRvcigpOwotCi0gICAgICAgIGludCBpbmZvQ291bnQgPSAxOwotICAgICAgICBUTW9kZWxJbnN0YW5jZUluZm8gaW5mbzsKLSAgICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIGluZm8gPSAoVE1vZGVsSW5zdGFuY2VJbmZvKSBpdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgICAgcmV0dXJuU3RyaW5nICs9ICIsIFsiCi0gICAgICAgICAgICArIGluZm9Db3VudCsrCi0gICAgICAgICAgICArICJdIHRNb2RlbEtleTogIgotICAgICAgICAgICAgKyBpbmZvLmdldFRNb2RlbEtleSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJldHVyblN0cmluZzsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRNb2RlbC4KLSAgICogQHBhcmFtIHRNb2RlbCAgYSBUTW9kZWwgb2JqZWN0LgotICAgKiBAcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRNb2RlbC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRNb2RlbFRvU3RyaW5nKFRNb2RlbCB0TW9kZWwpCi0gIHsKLSAgICBTdHJpbmcgcmV0dXJuU3RyaW5nID0gIiI7Ci0KLSAgICBpZiAodE1vZGVsID09IG51bGwpCi0gICAgICByZXR1cm5TdHJpbmcgPSAibnVsbCI7Ci0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuU3RyaW5nID0KLSAgICAgICAgIm5hbWU6ICIKLSAgICAgICAgICArIHRNb2RlbC5nZXROYW1lU3RyaW5nKCkKLSAgICAgICAgICArICIsIGNhdGVnb3J5QmFnOiAiCi0gICAgICAgICAgKyAodE1vZGVsLmdldENhdGVnb3J5QmFnKCkgPT0gbnVsbAotICAgICAgICAgICAgPyAibnVsbCIKLSAgICAgICAgICAgIDogY2F0ZWdvcnlCYWdUb1N0cmluZyh0TW9kZWwuZ2V0Q2F0ZWdvcnlCYWcoKSkpCi0gICAgICAgICAgKyAiLCBvdmVydmlld1VSTDogIgotICAgICAgICAgICsgKHRNb2RlbC5nZXRPdmVydmlld0RvYygpID09IG51bGwKLSAgICAgICAgICAgID8gIm51bGwiCi0gICAgICAgICAgICA6IHRNb2RlbC5nZXRPdmVydmlld0RvYygpLmdldE92ZXJ2aWV3VVJMU3RyaW5nKCkpOwotICAgIH0KLQotICAgIHJldHVybiByZXR1cm5TdHJpbmc7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBjYXRlZ29yeUJhZy4KLSAgICogQHBhcmFtIGNhdGVnb3J5QmFnICBhIENhdGVnb3J5QmFnIG9iamVjdC4KLSAgICogQHJldHVybiBhIHRyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNhdGVnb3J5QmFnLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgY2F0ZWdvcnlCYWdUb1N0cmluZyhDYXRlZ29yeUJhZyBjYXRlZ29yeUJhZykKLSAgewotICAgIFN0cmluZyByZXR1cm5TdHJpbmcgPSAiIjsKLQotICAgIGlmIChjYXRlZ29yeUJhZyA9PSBudWxsKQotICAgIHsKLSAgICAgIHJldHVyblN0cmluZyArPSAibnVsbCI7Ci0gICAgfQotCi0gICAgZWxzZQotICAgIHsKLSAgICAgIHJldHVyblN0cmluZyArPSAiS2V5ZWRSZWZlcmVuY2VMaXN0OiAiOwotCi0gICAgICBWZWN0b3Iga3JMaXN0ID0gbnVsbDsKLSAgICAgIGlmICgoa3JMaXN0ID0gY2F0ZWdvcnlCYWcuZ2V0S2V5ZWRSZWZlcmVuY2VWZWN0b3IoKSkgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuU3RyaW5nICs9ICJudWxsIjsKLSAgICAgIH0KLQotICAgICAgZWxzZSBpZiAoa3JMaXN0LnNpemUoKSA9PSAwKQotICAgICAgewotICAgICAgICByZXR1cm5TdHJpbmcgKz0gImVtcHR5IjsKLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBLZXllZFJlZmVyZW5jZSBrciA9IG51bGw7Ci0gICAgICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0ga3JMaXN0Lml0ZXJhdG9yKCk7Ci0gICAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBrciA9IChLZXllZFJlZmVyZW5jZSkgaXRlcmF0b3IubmV4dCgpOwotICAgICAgICAgIHJldHVyblN0cmluZyArPSAidE1vZGVsS2V5OiAiCi0gICAgICAgICAgICArIGtyLmdldFRNb2RlbEtleSgpCi0gICAgICAgICAgICArICIsIGtleU5hbWU6ICIKLSAgICAgICAgICAgICsga3IuZ2V0S2V5TmFtZSgpCi0gICAgICAgICAgICArICIsIGtleVZhbHVlOiAiCi0gICAgICAgICAgICArIGtyLmdldEtleVZhbHVlKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwotICB9Ci0KLSAgLyoqCi0gICAqIEZpbmQgdGhlIHdzZGxTcGVjIHRNb2RlbCBhc3NvY2lhdGVkIHdpdGggYSBiaW5kaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBUTW9kZWwgZmluZFRNb2RlbCgKLSAgICBVRERJUHJveHkgdWRkaVByb3h5LAotICAgIEJpbmRpbmdUZW1wbGF0ZSBiaW5kaW5nVGVtcGxhdGUsCi0gICAgYm9vbGVhbiB2ZXJib3NlT3B0aW9uKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIFRNb2RlbCB0TW9kZWwgPSBudWxsOwotCi0gICAgLy8gR2V0IHRoZSBsaXN0IG9mIHRNb2RlbCByZWZlcmVuY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJpbmRpbmdUZW1wbGF0ZQotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0KLSAgICAgIGJpbmRpbmdUZW1wbGF0ZQotICAgICAgICAuZ2V0VE1vZGVsSW5zdGFuY2VEZXRhaWxzKCkKLSAgICAgICAgLmdldFRNb2RlbEluc3RhbmNlSW5mb1ZlY3RvcigpCi0gICAgICAgIC5pdGVyYXRvcigpOwotCi0gICAgLy8gUHJvY2VzcyBlYWNoIHRNb2RlbCByZWZlcmVuY2UKLSAgICBWZWN0b3IgdE1vZGVsS2V5TGlzdCA9IG5ldyBWZWN0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIC8vIEdldCB0TW9kZWxJbnN0YW5jZUluZm8KLSAgICAgIFRNb2RlbEluc3RhbmNlSW5mbyB0TW9kZWxJbnN0YW5jZUluZm8gPQotICAgICAgICAoVE1vZGVsSW5zdGFuY2VJbmZvKSBpdGVyYXRvci5uZXh0KCk7Ci0KLSAgICAgIC8vIEFkZCBrZXkgdG8gbGlzdAotICAgICAgdE1vZGVsS2V5TGlzdC5hZGQodE1vZGVsSW5zdGFuY2VJbmZvLmdldFRNb2RlbEtleSgpKTsKLSAgICB9Ci0KLSAgICAvLyBHZXQgdGhlIHRNb2RlbHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBiaW5kaW5nVGVtcGxhdGUKLSAgICBpZiAodE1vZGVsS2V5TGlzdC5zaXplKCkgPiAwKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICAvLyBHZXQgdGhlIHRNb2RlbCBkZXRhaWxzCi0gICAgICAgIFRNb2RlbERldGFpbCB0TW9kZWxEZXRhaWwgPSB1ZGRpUHJveHkuZ2V0X3RNb2RlbERldGFpbCh0TW9kZWxLZXlMaXN0KTsKLQotICAgICAgICAvLyBHZXQgdGhlIGxpc3Qgb2YgdE1vZGVscwotICAgICAgICBJdGVyYXRvciB0TW9kZWxJdGVyYXRvciA9IHRNb2RlbERldGFpbC5nZXRUTW9kZWxWZWN0b3IoKS5pdGVyYXRvcigpOwotCi0gICAgICAgIC8vYm9vbGVhbiB0TW9kZWxGb3VuZCA9IGZhbHNlOwotICAgICAgICBUTW9kZWwgbmV4dFRNb2RlbCA9IG51bGw7Ci0KLSAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgbGlzdCBvZiB0TW9kZWxzCi0gICAgICAgIHdoaWxlICgodE1vZGVsSXRlcmF0b3IuaGFzTmV4dCgpKSAmJiAodE1vZGVsID09IG51bGwpKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gR2V0IG5leHQgdE1vZGVsIGluIGxpc3QKLSAgICAgICAgICBuZXh0VE1vZGVsID0gKFRNb2RlbCkgdE1vZGVsSXRlcmF0b3IubmV4dCgpOwotCi0gICAgICAgICAgaWYgKHZlcmJvc2VPcHRpb24pCi0gICAgICAgICAgewotICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKAotICAgICAgICAgICAgICAiICAgICAgVE1vZGVsIHJlZmVyZW5jZWQgZnJvbSBiaW5kaW5nVGVtcGxhdGUgLSAiCi0gICAgICAgICAgICAgICAgKyBVRERJVXRpbHMudE1vZGVsVG9TdHJpbmcobmV4dFRNb2RlbCkpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSB3c2RsU3BlYyB0TW9kZWwsIHRoZW4gdGhpcyBpcyB0aGUgdE1vZGVsIHdlIHdhbnQKLSAgICAgICAgICBpZiAoaXNXc2RsU3BlYyhuZXh0VE1vZGVsKSkKLSAgICAgICAgICAgIHRNb2RlbCA9IG5leHRUTW9kZWw7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICAvLyBUaHJvdyBXU0lFeGNlcHRpb24KLSAgICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigiQ291bGQgbm90IGdldCB0TW9kZWwgZGV0YWlscy4iLCBlKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gVGhyb3cgZXhjZXB0aW9uCi0gICAgICAvL3Rocm93IG5ldyBXU0lFeGNlcHRpb24oIlVEREkgYmluZGluZ1RlbXBsYXRlIGRpZCBub3QgY29udGFpbiBhbnkgdE1vZGVsIHJlZmVyZW5jZXMuIik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRNb2RlbDsKLSAgfQotICAKLSAgLyoqCi0gICAqIERldGVybWluZSBpZiB0aGlzIGlzIGEgd3NkbFNwZWMgdE1vZGVsLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzV3NkbFNwZWMoVE1vZGVsIHRNb2RlbCkKLSAgewotICAgIGJvb2xlYW4gdE1vZGVsRm91bmQgPSBmYWxzZTsKLSAgICBDYXRlZ29yeUJhZyBjYXRlZ29yeUJhZyA9IG51bGw7Ci0gICAgSXRlcmF0b3IgY2F0ZWdvcnlCYWdJdGVyYXRvciA9IG51bGw7Ci0KLSAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGNhdGV0Z29yeUJhZyBjb250YWlucyB3c2RsU3BlYwotICAgIGlmICgoY2F0ZWdvcnlCYWcgPSB0TW9kZWwuZ2V0Q2F0ZWdvcnlCYWcoKSkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICAvLyBHZXQgdGhlIGxpc3Qgb2Yga2V5ZWQgcmVmZXJlbmNlcwotICAgICAgY2F0ZWdvcnlCYWdJdGVyYXRvciA9IGNhdGVnb3J5QmFnLmdldEtleWVkUmVmZXJlbmNlVmVjdG9yKCkuaXRlcmF0b3IoKTsKLQotICAgICAgS2V5ZWRSZWZlcmVuY2Uga2V5ZWRSZWZlcmVuY2UgPSBudWxsOwotCi0gICAgICAvLyBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIGtleWVkIHJlZmVyZW5jZXMKLSAgICAgIHdoaWxlIChjYXRlZ29yeUJhZ0l0ZXJhdG9yLmhhc05leHQoKSAmJiAhKHRNb2RlbEZvdW5kKSkKLSAgICAgIHsKLSAgICAgICAgLy8gR2V0IG5leHQga2V5ZWQgcmVmZXJlbmNlCi0gICAgICAgIGtleWVkUmVmZXJlbmNlID0gKEtleWVkUmVmZXJlbmNlKSBjYXRlZ29yeUJhZ0l0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgICAvLyBJZiB0aGlzIGlzIGEgdHlwZXMgdGF4b25vbXkgdE1vZGVsIGFuZCB0aGUgdmFsdWUgaXMgd3NkbFNwZWMsIHRoZW4gdGhpcyBpcyB0aGUgdE1vZGVsIHdlIHdhbnQKLSAgICAgICAgLy8gUkVNT1ZFOiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNoZWNrIHRoZSBrZXkgbmFtZQotICAgICAgICAvL2lmIChrZXllZFJlZmVyZW5jZS5nZXRUTW9kZWxLZXkoKS5lcXVhbHNJZ25vcmVDYXNlKFRNb2RlbC5UWVBFU19UTU9ERUxfS0VZKSAmJgotICAgICAgICAvLyAgICJ3c2RsU3BlYyIuZXF1YWxzKGtleWVkUmVmZXJlbmNlLmdldEtleVZhbHVlKCkpICYmCi0gICAgICAgIC8vICAgKCJ0eXBlcyIuZXF1YWxzKGtleWVkUmVmZXJlbmNlLmdldEtleU5hbWUoKSkgfHwKLSAgICAgICAgLy8gICAgInVkZGktb3JnOnR5cGVzIi5lcXVhbHMoa2V5ZWRSZWZlcmVuY2UuZ2V0S2V5TmFtZSgpKSkpIHsKLSAgICAgICAgLy8gIHRNb2RlbEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgLy99Ci0gICAgICAgIGlmIChrZXllZFJlZmVyZW5jZQotICAgICAgICAgIC5nZXRUTW9kZWxLZXkoKQotICAgICAgICAgIC5lcXVhbHNJZ25vcmVDYXNlKFRNb2RlbC5UWVBFU19UTU9ERUxfS0VZKQotICAgICAgICAgICYmICJ3c2RsU3BlYyIuZXF1YWxzKGtleWVkUmVmZXJlbmNlLmdldEtleVZhbHVlKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgdE1vZGVsRm91bmQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRNb2RlbEZvdW5kOwotICB9Ci0gIC8qKgotICAgKiBHZXQgYW4gT3ZlcnZpZXdVUkwgZnJvbSB0TW9kZWwuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRPdmVydmlld1VSTChUTW9kZWwgdE1vZGVsKQotICB7Ci0gICAgaWYgKHRNb2RlbCAhPSBudWxsCi0gICAgICAmJiB0TW9kZWwuZ2V0T3ZlcnZpZXdEb2MoKSAhPSBudWxsCi0gICAgICAmJiB0TW9kZWwuZ2V0T3ZlcnZpZXdEb2MoKS5nZXRPdmVydmlld1VSTCgpICE9IG51bGwpCi0gICAgewotICAgICAgcmV0dXJuIHRNb2RlbC5nZXRPdmVydmlld0RvYygpLmdldE92ZXJ2aWV3VVJMKCkuZ2V0VGV4dCgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotICAKLQotICAvKioKLSAgICogR2V0IFdTREwgZG9jdW1lbnQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRXU0RMTG9jYXRpb24oU3RyaW5nIHdzZGxMb2NhdGlvbikKLSAgewotICAgIGludCBpbmRleDsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBvdmVydmlld1VSTCBjb250YWlucyBhIGZyYWdtZW50IGlkZW50aWZpZXIKLSAgICBpZiAoKGluZGV4ID0gd3NkbExvY2F0aW9uLmluZGV4T2YoIiMiKSkgPiAtMSkKLSAgICB7Ci0gICAgICB3c2RsTG9jYXRpb24gPSB3c2RsTG9jYXRpb24uc3Vic3RyaW5nKDAsIGluZGV4KTsKLSAgICB9Ci0gICAgcmV0dXJuIHdzZGxMb2NhdGlvbjsKLSAgfQotICAvKioKLSAgICogR2V0IFdTREwgYmluZGluZyBmcm9tIHRoZSBvdmVydmlld1VSTCBpbiB0aGUgdE1vZGVsLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBCaW5kaW5nIGdldEJpbmRpbmcoU3RyaW5nIG92ZXJ2aWV3VVJMLCBXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50KQotICB7Ci0gICAgaW50IGluZGV4OwotICAgIGludCBuYW1lSW5kZXg7Ci0KLSAgICBCaW5kaW5nW10gYmluZGluZ3MgPSB3c2RsRG9jdW1lbnQuZ2V0QmluZGluZ3MoKTsKLSAgICBpZiAoYmluZGluZ3MgPT0gbnVsbCB8fCBiaW5kaW5ncy5sZW5ndGggPT0gMCkKLSAgICAgIHJldHVybiBudWxsOwotCi0gICAgaWYgKG92ZXJ2aWV3VVJMICE9IG51bGwpCi0gICAgewotICAgICAgLy8gQ2hlY2sgaWYgdGhlIG92ZXJ2aWV3VVJMIGNvbnRhaW5zIGEgZnJhZ21lbnQgaWRlbnRpZmllcgotICAgICAgaWYgKChpbmRleCA9IG92ZXJ2aWV3VVJMLmluZGV4T2YoIiMiKSkgPiAtMSkKLSAgICAgIHsKLSAgICAgICAgLy8gVEVNUDogTmVlZCB0byB1c2UgYSByZWFsIFhQYXRoIGV2YWx1YXRvciBsaWtlIFhhbGFuCi0gICAgICAgIFN0cmluZyBuYW1lQXR0cmlidXRlID0gIkBuYW1lPSI7Ci0KLSAgICAgICAgLy8gTG9jYXRlIG5hbWUgcmVmZXJlbmNlCi0gICAgICAgIGlmICgobmFtZUluZGV4ID0KLSAgICAgICAgICBvdmVydmlld1VSTC5zdWJzdHJpbmcoaW5kZXggKyAxKS5pbmRleE9mKG5hbWVBdHRyaWJ1dGUpKQotICAgICAgICAgID4gLTEpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBHZXQgdGhlIG5leHQgY2hhcmFjdGVyIHdoaWNoIHNob3VsZCBiZSBhIHF1b3RlCi0gICAgICAgICAgaW50IGZpcnN0UXVvdGVJbmRleCA9IGluZGV4ICsgMSArIG5hbWVJbmRleCArIG5hbWVBdHRyaWJ1dGUubGVuZ3RoKCk7Ci0gICAgICAgICAgU3RyaW5nIHF1b3RlID0KLSAgICAgICAgICAgIG92ZXJ2aWV3VVJMLnN1YnN0cmluZyhmaXJzdFF1b3RlSW5kZXgsIGZpcnN0UXVvdGVJbmRleCArIDEpOwotCi0gICAgICAgICAgLy8gR2V0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgd2hpY2ggc2hvdWxkIGNvbnRhaW4gdGhlIGJpbmRpbmcgbmFtZQotICAgICAgICAgIFN0cmluZyB1cmxQYXJ0ID0gb3ZlcnZpZXdVUkwuc3Vic3RyaW5nKGZpcnN0UXVvdGVJbmRleCArIDEpOwotCi0gICAgICAgICAgLy8gRmluZCB0aGUgbmV4dCBxdW90ZQotICAgICAgICAgIGludCBuZXh0UXVvdGVJbmRleDsKLSAgICAgICAgICBpZiAoKG5leHRRdW90ZUluZGV4ID0gdXJsUGFydC5pbmRleE9mKHF1b3RlKSkgPiAtMSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmcgYmluZGluZ05hbWUgPSB1cmxQYXJ0LnN1YnN0cmluZygwLCBuZXh0UXVvdGVJbmRleCk7Ci0gICAgICAgICAgICAvL2xvb2sgZm9yIGJpbmRpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYmluZGluZ3MubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmIChiaW5kaW5nTmFtZS5lcXVhbHMoYmluZGluZ3NbaV0uZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJpbmRpbmdzW2ldOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBiaW5kaW5nc1swXTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9VdGlscy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9VdGlscy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDExNjUwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE0NDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDggSUJNIENvcnBvcmF0aW9uLCBCZWFjb24gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBJbmMuIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gICAgICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogICBCZWFjb25JVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsOwotCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuQ29ubmVjdEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5JbmV0QWRkcmVzczsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkRhdGU7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29kZWMuYmluYXJ5LkJhc2U2NDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLldTSVRlc3RUb29sc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmFuYWx5emVyLmNvbmZpZy5BbmFseXplckNvbmZpZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUubG9nLk1pbWVQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuTWltZVBhcnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5sb2cuaW1wbC5NaW1lUGFydEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmxvZy5pbXBsLk1pbWVQYXJ0c0ltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUuUHJvZmlsZUFzc2VydGlvbnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotCi1pbXBvcnQgY29tLmlibS5pY3UudGV4dC5TaW1wbGVEYXRlRm9ybWF0OwotaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU3RyaW5nVG9rZW5pemVyOwotaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuVGltZVpvbmU7Ci0KLS8qKgotICogR2VuZXJhbCBzZXQgb2YgdXRpbGl0aWVzLgotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgVXRpbHMKLXsKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIENSID0gKGJ5dGUpICdccic7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBMRiA9IChieXRlKSAnXG4nOwotCi0gIAotICBwcml2YXRlIHN0YXRpYyBNYXAgdmFsaWRQcm9maWxlVEFEVmVyc2lvbnM7Ci0KLSAgLyoqCi0gICAqIENvbW1vbiB0aW1lc3RhbXAgZm9ybWF0LgotICAgKi8KLSAgLy8JcHVibGljIHN0YXRpYyBmaW5hbCBTaW1wbGVEYXRlRm9ybWF0IHRpbWVzdGFtcEZvcm1hdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0ICgieXl5eS1NTS1kZCdUJ0hIOm1tOnNzLlNTUydaJyIpOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbXBsZURhdGVGb3JtYXQgdGltZXN0YW1wRm9ybWF0ID0KLSAgICBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgieXl5eS1NTS1kZCdUJ0hIOm1tOnNzLlNTUyIpOwotCi0gIC8qKgotICAgKiBCYXNpYyBkYXRlIGZvcm1hdC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlRGF0ZUZvcm1hdCBkYXRlRm9ybWF0ID0KLSAgICBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgieXl5eS1NTS1kZCIpOwotCi0gIC8qKgotICAgKiBXcmFwcGVyIG1ldGhvZCBmb3IgZXJyb3IgbG9nZ2luZzsKLSAgICogZm9yIG5vdyBpdCBqdXN0IGdvZXMgdG8gc3RkZXJyLgotICAgKiBAcGFyYW0gaW5FcnJvciAgYW4gZXJyb3IgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgdm9pZCBsb2dFcnJvcihTdHJpbmcgaW5FcnJvcikKLSAgewotICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRXJyb3I6ICIgKyBpbkVycm9yKTsKLSAgfQotCi0gIC8qKiAKLSAgICogR2V0IGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBhcyBhIHN0cmluZy4KLSAgICogQHBhcmFtIHRocm93YWJsZSAgYSBUaHJvd2FibGUgb2JqZWN0LgotICAgKiBAcmV0dXJuIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBhcyBhIHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIGdldEV4Y2VwdGlvbkRldGFpbHMoVGhyb3dhYmxlIHRocm93YWJsZSkKLSAgewotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0KLSAgICBwdy5wcmludGxuKCJFeGNlcHRpb246ICIpOwotICAgIHRocm93YWJsZS5wcmludFN0YWNrVHJhY2UocHcpOwotCi0gICAgcmV0dXJuIHN3LnRvU3RyaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBhcyBhIHRpbWVzdGFtcC4KLSAgICogQHJldHVybiB1cnJlbnQgZGF0ZSBhbmQgdGltZSBhcyBhIHRpbWVzdGFtcC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFRpbWVzdGFtcCgpCi0gIHsKLSAgICAvLyBVc2UgR01UIHRpbWV6b25lCi0gICAgLy90aW1lc3RhbXBGb3JtYXQuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpKTsKLSAgICB0aW1lc3RhbXBGb3JtYXQuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0RGVmYXVsdCgpKTsKLQotICAgIC8vIFJldHVybiB0aW1lc3RhbXAKLSAgICByZXR1cm4gdGltZXN0YW1wRm9ybWF0LmZvcm1hdChuZXcgRGF0ZSgpKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgY3VycmVudCBkYXRlIGZvciBkZWZhdWx0IHRpbWUgem9uZS4KLSAgICogQHJldHVybiBjdXJyZW50IGRhdGUgZm9yIGRlZmF1bHQgdGltZSB6b25lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZSgpCi0gIHsKLSAgICAvLyBVc2UgR01UIHRpbWV6b25lCi0gICAgZGF0ZUZvcm1hdC5zZXRUaW1lWm9uZShUaW1lWm9uZS5nZXREZWZhdWx0KCkpOwotCi0gICAgLy8gUmV0dXJuIGRhdGUKLSAgICByZXR1cm4gZGF0ZUZvcm1hdC5mb3JtYXQobmV3IERhdGUoKSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IEhUVFAgc3RhdHVzIGNvZGUuCi0gICAqIEBwYXJhbSBodHRwSGVhZGVycyAgSFRUUCBoZWFkZXJzLgotICAgKiBAcmV0dXJuIEhUVFAgc3RhdHVzIGNvZGUuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZSBzdGF0dXMgY29kZSBpbiBodHRwIGhlYWRlcnMgd2FzIG5vdCBmb3VuZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEhUVFBTdGF0dXNDb2RlKFN0cmluZyBodHRwSGVhZGVycykKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgc3RhdHVzQ29kZSA9IG51bGw7Ci0KLSAgICBpZiAoaHR0cEhlYWRlcnMuc3RhcnRzV2l0aCgiSFRUUCIpKQotICAgIHsKLSAgICAgIC8vIEdldCBsb2NhdGlvbiBvZiBzdGF0dXMgY29kZQotICAgICAgaW50IGluZGV4ID0gaHR0cEhlYWRlcnMuaW5kZXhPZigiICIpOwotICAgICAgaW50IGluZGV4MiA9IGh0dHBIZWFkZXJzLmluZGV4T2YoIiAiLCBpbmRleCArIDEpOwotCi0gICAgICBpZiAoKGluZGV4ID09IC0xKSB8fCAoaW5kZXgyID09IC0xKSkKLSAgICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigKLSAgICAgICAgICAiQ291bGQgbm90IGZpbmQgc3RhdHVzIGNvZGUgaW4gaHR0cCBoZWFkZXJzOiBbIiArIGh0dHBIZWFkZXJzICsgIl0uIik7Ci0gICAgICB9Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgc3RhdHVzQ29kZSA9IGh0dHBIZWFkZXJzLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4Mik7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZWxzZQotICAgIHsKLSAgICAgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oCi0gICAgICAgICJDb3VsZCBub3QgZmluZCBzdGF0dXMgY29kZSBpbiBodHRwIGhlYWRlcnM6IFsiICsgaHR0cEhlYWRlcnMgKyAiXS4iKTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gc3RhdHVzIGNvZGUKLSAgICByZXR1cm4gc3RhdHVzQ29kZTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgSFRUUCBoZWFkZXJzIGZyb20gYSBmdWxsIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBmdWxsTWVzc2FnZSAgYSBtZXNzYWdlLgotICAgKiBAcmV0dXJuIEhUVFAgaGVhZGVycyBmcm9tIGEgZnVsbCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SFRUUEhlYWRlcnMoU3RyaW5nIGZ1bGxNZXNzYWdlKQotICB7Ci0gICAgLy9TdHJpbmcgaHR0cEhlYWRlcnMgPSBudWxsOwotCi0gICAgLy8gVHJ5IGxvb2tpbmcgZm9yIHRoZSBkb3VibGUgbmV3bGluZQotICAgIGludCBpbmRleCA9IGZ1bGxNZXNzYWdlLmluZGV4T2YoIlxyXG5cclxuIik7Ci0gICAgaWYgKGluZGV4ICE9IC0xKQotICAgIHsKLSAgICAgIGluZGV4ICs9IDQ7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvLyBjaGVjayBmb3IgY2FzZSAiXHJcci4uLlxyXG5cclxyLi4uXG4iCi0gICAgICAvLyBOb3RlIHRoZSBpbmRleCB0aGF0IGlzIHJldHVybmVkIHBvaW50cyB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIAotICAgICAgLy8gaW1tZWRpYXRlZGx5IGZvbGxvd2luZyB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoZSBDUkxGQ1JMRi4gCi0gICAgICBpbmRleCA9IGdldEZpcnN0Q1JMRkNSTEYoZnVsbE1lc3NhZ2UpOwotICAgICAgaWYgKGluZGV4ID09IC0xKQotICAgICAgewotICAgICAgICBsb2dFcnJvcigKLSAgICAgICAgICAiVW5hYmxlIHRvIHBhcnNlIEhUVFAgbWVzc2FnZSB0byBmaW5kIGhlYWRlcnMuICBGdWxsIG1lc3NhZ2U6ICIKLSAgICAgICAgICArIGZ1bGxNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuICJ4LVdTSS1UZXN0LVRvb2wtRXJyb3I6IENvdWxkbid0IGZpbmQgaGVhZGVycy4gIEZ1bGwgbWVzc2FnZTogWyIKLSAgICAgICAgICArIGZ1bGxNZXNzYWdlCi0gICAgICAgICAgKyAiXS4iOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIFJldHVybiBIVFRQIGhlYWRlcnMKLSAgICByZXR1cm4gZnVsbE1lc3NhZ2Uuc3Vic3RyaW5nKDAsIGluZGV4KTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgU09BUCBtZXNzYWdlIGZyb20gYSBmdWxsIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBmdWxsTWVzc2FnZSAgYSBtZXNzYWdlLgotICAgKiBAcmV0dXJuIFNPQVAgbWVzc2FnZSBmcm9tIGEgZnVsbCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0Q29udGVudChTdHJpbmcgZnVsbE1lc3NhZ2UpCi0gIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9ICIiOwotCi0gICAgLy8gRmluZCBzdGFydCBvZiBtZXNzYWdlCi0gICAgaW50IGluZGV4ID0gZnVsbE1lc3NhZ2UuaW5kZXhPZigiXHJcblxyXG4iKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgewotICAgICAgaW5kZXggKz0gNDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIC8vIGNoZWNrIGZvciBjYXNlICJcclxyLi4uXHJcblxyXHIuLi5cbiIKLSAgICAgIC8vIE5vdGUgdGhlIGluZGV4IHRoYXQgaXMgcmV0dXJuZWQgcG9pbnRzIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgCi0gICAgICAvLyBpbW1lZGlhdGVkbHkgZm9sbG93aW5nIHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2YgdGhlIENSTEZDUkxGLiAKLSAgICAgIGluZGV4ID0gZ2V0Rmlyc3RDUkxGQ1JMRihmdWxsTWVzc2FnZSk7Ci0gICAgfSAgICAJCi0KLSAgICBpZiAoaW5kZXggPCAwKQotICAgIHsKLSAgICAJLy8gSWYgd2UgY291bGRuJ3QgZmluZCB0aGUgZW5kIG9mIHRoZSBIVFRQIGhlYWRlcnMgb3IgdGhlIHN0YXJ0IG9mIHRoZSBtZXNzYWdlLCB0aGVuIHNob3cgZXJyb3IKLSAgICAgIGxvZ0Vycm9yKAotICAgICAgICAiVW5hYmxlIHRvIHBhcnNlIG1lc3NhZ2UgdG8gZ2V0IGNvbnRlbnQuICBGdWxsIG1lc3NhZ2U6ICIKLSAgICAgICAgICArIGZ1bGxNZXNzYWdlKTsKLSAgICAgIG1lc3NhZ2UgPQotICAgICAgICAieC1XU0ktVGVzdC1Ub29sLUVycm9yOiBDb3VsZG4ndCBmaW5kIG1lc3NhZ2UgY29udGVudC4gIEZ1bGwgbWVzc2FnZTogWyIKLSAgICAgICAgICArIGZ1bGxNZXNzYWdlCi0gICAgICAgICAgKyAiXS4iOwotICAgIH0KLSAgICAvLyBJZiB0aGUgaW5kZXggaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGgsIHRoZW4gdGhlcmUgaXMgbm8gbWVzc2FnZSBjb250ZW50Ci0gICAgZWxzZSBpZiAoaW5kZXggPj0gZnVsbE1lc3NhZ2UubGVuZ3RoKCkpCi0gICAgewotICAgICAgbWVzc2FnZSA9ICIiOwotICAgIH0KLQotICAgIC8vIEVsc2UgZ2V0IHRoZSBtZXNzYWdlIGNvbnRlbnQKLSAgICBlbHNlCi0gICAgewotICAgICAgbWVzc2FnZSA9IGZ1bGxNZXNzYWdlLnN1YnN0cmluZyhpbmRleCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIFNPQVAgbWVzc2FnZQotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci0gCi0gIC8qKgotICAgKiBHZXQgSFRUUCBoZWFkZXJzIGZyb20gYSBmdWxsIG1lc3NhZ2UuCi0gICAqIEBwYXJhbSBmdWxsTWVzc2FnZSAgYSBtZXNzYWdlLgotICAgKiBAcmV0dXJuIEhUVFAgaGVhZGVycyBmcm9tIGEgZnVsbCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBieXRlW10gZ2V0SFRUUEhlYWRlcnMoYnl0ZVtdIGZ1bGxNZXNzYWdlKQotICB7Ci0gICAgLy9TdHJpbmcgaHR0cEhlYWRlcnMgPSBudWxsOwotICAgIGludCBpbmRleCA9IGdldEZpcnN0Q1JMRkNSTEYoZnVsbE1lc3NhZ2UsIDApOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICB7Ci0gICAgICBsb2dFcnJvcigKLSAgICAgICAgIlVuYWJsZSB0byBwYXJzZSBIVFRQIG1lc3NhZ2UgdG8gZmluZCBoZWFkZXJzLiAgRnVsbCBtZXNzYWdlOiAiCi0gICAgICAgICAgKyBmdWxsTWVzc2FnZSk7Ci0gICAgICByZXR1cm4gKCJ4LVdTSS1UZXN0LVRvb2wtRXJyb3I6IENvdWxkbid0IGZpbmQgaGVhZGVycy4gIEZ1bGwgbWVzc2FnZTogWyIKLSAgICAgICAgKyBmdWxsTWVzc2FnZSArICJdLiIpLmdldEJ5dGVzKCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIEhUVFAgaGVhZGVycwotCWJ5dGVbXSBiID0gbmV3IGJ5dGVbaW5kZXhdOwotCVN5c3RlbS5hcnJheWNvcHkoZnVsbE1lc3NhZ2UsIDAsIGIsIDAsIGluZGV4KTsKLQotICAgIHJldHVybiBiOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBIVFRQIGhlYWRlcnMgZnJvbSBhIGZ1bGwgbWVzc2FnZS4KLSAgICogQHBhcmFtIGZ1bGxNZXNzYWdlICBhIG1lc3NhZ2UuCi0gICAqIEByZXR1cm4gSFRUUCBoZWFkZXJzIGZyb20gYSBmdWxsIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRIVFRQSGVhZGVyc0FzU3RyaW5nKGJ5dGVbXSBmdWxsTWVzc2FnZSwgU3RyaW5nIGVuY29kaW5nKQotICB7Ci0gICAgLy9TdHJpbmcgaHR0cEhlYWRlcnMgPSBudWxsOwotICAgIGludCBpbmRleCA9IGdldEZpcnN0Q1JMRkNSTEYoZnVsbE1lc3NhZ2UsIDApOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICB7Ci0gICAgICBsb2dFcnJvcigKLSAgICAgICAgIlVuYWJsZSB0byBwYXJzZSBIVFRQIG1lc3NhZ2UgdG8gZmluZCBoZWFkZXJzLiAgRnVsbCBtZXNzYWdlOiAiCi0gICAgICAgICAgKyBmdWxsTWVzc2FnZSk7Ci0gICAgICByZXR1cm4gIngtV1NJLVRlc3QtVG9vbC1FcnJvcjogQ291bGRuJ3QgZmluZCBoZWFkZXJzLiAgRnVsbCBtZXNzYWdlOiBbIgotICAgICAgICArIGZ1bGxNZXNzYWdlICsgIl0uIjsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gSFRUUCBoZWFkZXJzCi0gICAgdHJ5Ci0gICAgewotICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoZnVsbE1lc3NhZ2UsIDAsIGluZGV4LCBlbmNvZGluZyk7Ci0gICAgfQotICAgIGNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgICBsb2dFcnJvcigKLSAgICAgICAgICAgICAgICAiVW5zdXBwb3J0ZWQgRW5jb2Rpbmc6ICIgKyBlbmNvZGluZyArICIuICBGdWxsIG1lc3NhZ2U6ICIKLSAgICAgICAgICAgICAgICAgICsgZnVsbE1lc3NhZ2UpOwotICAgICAgICAgICAgICByZXR1cm4gIngtV1NJLVRlc3QtVG9vbC1FcnJvcjogVW5zdXBwb3J0ZWQgRW5jb2RpbmcgXCIiICsgZW5jb2RpbmcgKyAiXCIuICBGdWxsIG1lc3NhZ2U6IFsiCi0gICAgICAgICAgICAgICAgKyBmdWxsTWVzc2FnZSArICJdLiI7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBTT0FQIG1lc3NhZ2UgZnJvbSBhIGZ1bGwgbWVzc2FnZS4KLSAgICogQHBhcmFtIGZ1bGxNZXNzYWdlICBhIG1lc3NhZ2UuCi0gICAqIEByZXR1cm4gU09BUCBtZXNzYWdlIGZyb20gYSBmdWxsIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRDb250ZW50QXNTdHJpbmcoYnl0ZVtdIG1lc3NhZ2UpCi0gIHsKLSAgCVN0cmluZyBjb250ZW50ID0gIiI7Ci0gICAgLy9TdHJpbmcgaHR0cEhlYWRlcnMgPSBudWxsOwotICAgIGludCBpbmRleCA9IGdldEZpcnN0Q1JMRkNSTEYobWVzc2FnZSwgMCk7Ci0KLSAgICAvLyBJZiB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBlbmQgb2YgdGhlIEhUVFAgaGVhZGVycyBvciB0aGUgc3RhcnQgb2YgdGhlIG1lc3NhZ2UsIHRoZW4gc2hvdyBlcnJvcgotICAgIGlmIChpbmRleCA8IDApCi0gICAgewotICAgICAgbG9nRXJyb3IoCi0gICAgICAgICJVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSB0byBnZXQgY29udGVudC4gIEZ1bGwgbWVzc2FnZTogIgotICAgICAgICAgICsgbWVzc2FnZSk7Ci0gICAgICBjb250ZW50ID0KLSAgICAgICAgIngtV1NJLVRlc3QtVG9vbC1FcnJvcjogQ291bGRuJ3QgZmluZCBtZXNzYWdlIGNvbnRlbnQuICBGdWxsIG1lc3NhZ2U6IFsiCi0gICAgICAgICAgKyBtZXNzYWdlLnRvU3RyaW5nKCkKLSAgICAgICAgICArICJdLiI7Ci0gICAgfQotCi0gICAgLy8gRWxzZSBnZXQgdGhlIG1lc3NhZ2UgY29udGVudAotICAgIGVsc2UgaWYgKGluZGV4IDwgbWVzc2FnZS5sZW5ndGgpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGNvbnRlbnQgPSBuZXcgU3RyaW5nKG1lc3NhZ2UsIGluZGV4LCBtZXNzYWdlLmxlbmd0aCAtIGluZGV4KTsKLSAgICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAJbG9nRXJyb3IoCi0gICAgICAJICAgICAgICAiVW5hYmxlIHRvIHBhcnNlIG1lc3NhZ2UgdG8gZ2V0IGNvbnRlbnQuICBGdWxsIG1lc3NhZ2U6ICIKLSAgICAgIAkgICAgICAgICAgKyBtZXNzYWdlKTsKLSAgICAgIAljb250ZW50ID0KLSAgICAgIAkgICAgICAgICJ4LVdTSS1UZXN0LVRvb2wtRXJyb3I6IENvdWxkbid0IGZpbmQgbWVzc2FnZSBjb250ZW50LiAgRnVsbCBtZXNzYWdlOiBbIgotICAgICAgCSAgICAgICAgICArIG1lc3NhZ2UudG9TdHJpbmcoKQotICAgICAgCSAgICAgICAgICArICJdLiI7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIFNPQVAgbWVzc2FnZQotICAgIHJldHVybiBjb250ZW50OwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBTT0FQIG1lc3NhZ2UgZnJvbSBhIGZ1bGwgbWVzc2FnZS4KLSAgICogQHBhcmFtIGZ1bGxNZXNzYWdlICBhIG1lc3NhZ2UuCi0gICAqIEByZXR1cm4gU09BUCBtZXNzYWdlIGZyb20gYSBmdWxsIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJ5dGVbXSBnZXRDb250ZW50KGJ5dGVbXSBtZXNzYWdlKQotICB7Ci0gICAgYnl0ZVtdIGNvbnRlbnQgPSBuZXcgYnl0ZSBbMF07Ci0KLSAgICAvL1N0cmluZyBodHRwSGVhZGVycyA9IG51bGw7Ci0gICAgaW50IGluZGV4ID0gZ2V0Rmlyc3RDUkxGQ1JMRihtZXNzYWdlLCAwKTsKLSAKLSAgICAvLyBJZiB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBlbmQgb2YgdGhlIEhUVFAgaGVhZGVycyBvciB0aGUgc3RhcnQgb2YgdGhlIG1lc3NhZ2UsIHRoZW4gc2hvdyBlcnJvcgotICAgIGlmIChpbmRleCA8IDApCi0gICAgewotICAgICAgbG9nRXJyb3IoCi0gICAgICAgICJVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSB0byBnZXQgY29udGVudC4gIEZ1bGwgbWVzc2FnZTogIgotICAgICAgICAgICsgbWVzc2FnZSk7Ci0gICAgICBtZXNzYWdlID0KLSAgICAgICAgKCJ4LVdTSS1UZXN0LVRvb2wtRXJyb3I6IENvdWxkbid0IGZpbmQgbWVzc2FnZSBjb250ZW50LiAgRnVsbCBtZXNzYWdlOiBbIgotICAgICAgICAgICsgbWVzc2FnZS50b1N0cmluZygpCi0gICAgICAgICAgKyAiXS4iKS5nZXRCeXRlcygpOwotICAgIH0KLQotICAgIC8vIElmIHRoZSBpbmRleCBpcyBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCwgdGhlbiB0aGVyZSBpcyBubyBtZXNzYWdlIGNvbnRlbnQKLSAgICAvL2Vsc2UgaWYgKGluZGV4ID49IGZ1bGxNZXNzYWdlLmxlbmd0aCgpKQotICAgIC8vewotICAgIC8vICBtZXNzYWdlID0gIiI7Ci0gICAgLy99Ci0KLSAgICAvLyBFbHNlIGdldCB0aGUgbWVzc2FnZSBjb250ZW50Ci0gICAgZWxzZSBpZiAoaW5kZXggPCBtZXNzYWdlLmxlbmd0aCkKLSAgICB7Ci0gICAgCWJ5dGVbXSBiID0gbmV3IGJ5dGVbbWVzc2FnZS5sZW5ndGggLSBpbmRleF07Ci0gICAgCVN5c3RlbS5hcnJheWNvcHkobWVzc2FnZSwgaW5kZXgsIGIsIDAsIG1lc3NhZ2UubGVuZ3RoIC0gaW5kZXgpOwotCi0gICAgICAgIGNvbnRlbnQgPSBiOwotICAgIH0KLQotICAgIC8vIFJldHVybiBTT0FQIG1lc3NhZ2UKLSAgICByZXR1cm4gY29udGVudDsKLSAgfQotCi0gIAotICAvKioKLQkgKiBSZXR1cm5zIHRoZSBmaXJzdCBsb2NhdGlvbiBvZiBhIENSTEYuCi0JICoKLQkgKiBAcmV0dXJuIGludAotCSAqLwotCXB1YmxpYyBzdGF0aWMgaW50IGdldEZpcnN0Q1JMRihieXRlW10gYnVmZmVyLCBpbnQgaW5kZXgpIAotCXsKLQkJaW50IHNpemUgPSBidWZmZXIubGVuZ3RoOwotCQlpbnQgaSA9IGluZGV4OwotCQl3aGlsZSAoaSA8IHNpemUgLSAxKSB7Ci0JCQlpZiAoYnVmZmVyW2ldID09IENSICYmIGJ1ZmZlcltpKzFdID09IExGKQotCQkJCXJldHVybiBpOwotCQkJaSsrOwotCQl9Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBmaXJzdCBsb2NhdGlvbiBvZiBhIENSTEYgZm9sbG93ZWQgaW1lZGlhdGVseSBieSBhbm90aGVyIENSTEYuCi0JICoKLQkgKiBAcmV0dXJuIGludAotCSAqLwotCXB1YmxpYyBzdGF0aWMgaW50IGdldEZpcnN0Q1JMRkNSTEYoYnl0ZVtdIGJ1ZmZlciwgaW50IGluZGV4KSAKLQl7Ci0JCWludCBzaXplID0gYnVmZmVyLmxlbmd0aDsKLQkJaW50IGkgPSBpbmRleDsKLQkJd2hpbGUgKGkgPCBzaXplIC0gMykgCi0JCXsKLQkJICBpZiAoYnVmZmVyW2ldID09IENSICYmIGJ1ZmZlcltpKzFdID09IExGICYmIGJ1ZmZlcltpKzJdID09IENSKQotCQkgIHsKLQkJCWlmIChidWZmZXJbaSszXSA9PSBMRikKLQkJCXsKLQkJCSAgcmV0dXJuIGkrNDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCSAgaW50IGogPSBpICsgMzsKLQkJCSAgd2hpbGUgKGogPCBidWZmZXIubGVuZ3RoICYmIGJ1ZmZlcltqXSA9PSBDUikKLQkJCSAgewotCQkJCWorKzsKLQkJCSAgfQotCQkJICBpZiAoaiA8IGJ1ZmZlci5sZW5ndGggJiYgYnVmZmVyW2pdID09IExGKQotCQkJICB7Ci0JCQkgIAlyZXR1cm4gaiArIDE7Ci0JCQkgIH0KLQkJCX0KLQkJICB9Ci0JCSAgaSsrOwotCQl9Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBmaXJzdCBsb2NhdGlvbiBvZiBhIENSTEYgZm9sbG93ZWQgaW1lZGlhdGVseSBieSBhbm90aGVyIENSTEYuCi0JICoKLQkgKiBAcmV0dXJuIGludAotCSAqLwotCXB1YmxpYyBzdGF0aWMgaW50IGdldEZpcnN0Q1JMRkNSTEYoU3RyaW5nIGJ1ZmZlcikgCi0JewotCQlpbnQgaW5kZXggPSBidWZmZXIuaW5kZXhPZigiXHJcblxyIik7Ci0JCWlmIChpbmRleCAhPSAtMSkKLQkJewotCQkgIGludCBpID0gaW5kZXggKzM7Ci0JCSAgd2hpbGUgKGkgPCBidWZmZXIubGVuZ3RoKCkgJiYgYnVmZmVyLnN0YXJ0c1dpdGgoIlxyIiwgaSkpCi0JCSAgICAgaSsrOwotCQkKLQkJICBpZiAoaSA8IGJ1ZmZlci5sZW5ndGgoKSAmJiBidWZmZXIuc3RhcnRzV2l0aCgiXG4iLCBpKSkKLQkJCXJldHVybiBpKzE7Ci0JCSAgZWxzZQotCQkJcmV0dXJuIGdldEZpcnN0Q1JMRkNSTEYoYnVmZmVyLnN1YnN0cmluZyhpbmRleCArIDMpKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJICByZXR1cm4gLTE7Ci0JCX0KLQl9Ci0KLQkvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGluZGljZXMgd2hpY2ggbWFya3MgdGhlIHNlcGFyYXRpb24gb2YgcGFydHMuCi0gICAgICovCi0JcHVibGljIHN0YXRpYyBpbnRbXSBnZXRCb3VuZGFyeUluZGljZXMoYnl0ZVtdIG1lc3NhZ2UsIFN0cmluZyBib3VuZGFyeVN0cikKLQl7Ci0JICBpbnRbXSBpbmRpY2VzID0gbmV3IGludFsyNTZdOwotCSAgaW50IGluZGljZXNJbmRleCA9IDA7Ci0JICB0cnkKLQkgIHsKLQkgICAgYnl0ZVtdIGJvdW5kYXJ5ID0gKCJcclxuLS0iICsgYm91bmRhcnlTdHIpLmdldEJ5dGVzKCJVUy1BU0NJSSIpOwotCi0JICAgIGludCBpbmRleCA9IDA7Ci0JICAgIGludCBzdGFydCA9IDA7Ci0JICAgIHdoaWxlIChpbmRleCAhPSAtMSkKLQkgICAgewotCSAgICAgIGluZGV4ID0gaW5kZXhPZihtZXNzYWdlLCBib3VuZGFyeSwgc3RhcnQpOwotCSAgICAgIAotCSAgICAgIGlmIChpbmRleCAhPSAtMSkgCi0JICAgICAgewotCQkgICAgc3RhcnQgPSBpbmRleCArIGJvdW5kYXJ5Lmxlbmd0aDsKLQkgICAgCWluZGljZXNbaW5kaWNlc0luZGV4XSA9IGluZGV4OwotCSAgICAJaW5kaWNlc0luZGV4Kys7Ci0JICAgICAgfQotCSAgICB9Ci0gICAgICAJaW50W10gYiA9IG5ldyBpbnRbaW5kaWNlc0luZGV4XTsKLSAgICAJU3lzdGVtLmFycmF5Y29weShpbmRpY2VzLCAwLCBiLCAwLCBpbmRpY2VzSW5kZXgpOwotICAgIAlpbmRpY2VzID0gYjsKLQkgIH0KLQkgIGNhdGNoIChFeGNlcHRpb24gZSkKLQkgIHt9Ci0JICByZXR1cm4gaW5kaWNlczsKLQl9Ci0gCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2Yga2V5IGluIHRoZSBidWZmZXIuCi0gICAgICovCi0JcHVibGljIHN0YXRpYyBpbnQgaW5kZXhPZihieXRlW10gYnVmZmVyLCBieXRlW10ga2V5LCBpbnQgc3RhcnQpCi0JewotCQlpbnQgYnVmZmVyTGVuID0gYnVmZmVyLmxlbmd0aDsKLQkJaW50IGtleUxlbiA9IGtleS5sZW5ndGg7Ci0JCWludCBpLGosayA9IDA7Ci0JCQotCQlpZiAoa2V5TGVuID4gYnVmZmVyTGVuIC0gc3RhcnQpCi0JCXsKLQkJCXJldHVybiAtMTsKLQkJfQotCQotCQlmb3IgKGsgPSBzdGFydCArIGtleUxlbiAtIDE7IGsgPCBidWZmZXJMZW47IGsrKykKLQkJewotICAgICAgICAgICBmb3IgKGogPSBrZXlMZW4gLSAxLCBpID0gazsgKGogPj0gMCkgJiYgKGJ1ZmZlcltpXSA9PSBrZXlbal0pOyBqLS0pIAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpLS07Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICBpZiAoaiA9PSAoLTEpKSB7Ci0gICAgICAgICAgICAgICByZXR1cm4gaSArIDE7Ci0gICAgICAgICAgIH0KLQkJfQotCi0JCXJldHVybiAtMTsKLQl9Ci0JLyoqCi0gICAqIEdldCBjb250ZW50cyBvZiBhIHJlc291cmNlIGFuZCByZXR1cm4gYXMgYSBpbnB1dCBzdHJlYW0uCi0gICAqCi0gICAqIEBwYXJhbSByZXNvdXJjZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIHRvIGdldCBhbmQgcmV0dXJuIGFzCi0gICAqICAgICAgICAgICAgICAgICAgICAgIGFuIGlucHV0IHN0cmVhbS4KLSAgICogQHJldHVybiBjb250ZW50cyBvZiBhIHJlc291cmNlIGFzIGFuIGlucHV0IHN0cmVhbS4KLSAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiB0aGUgcmVzb3VyY2UgY291bGQgbm90IGJlIGxvY2F0ZWQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIElucHV0U3RyZWFtIGdldElucHV0U3RyZWFtKFN0cmluZyByZXNvdXJjZU5hbWUpCi0gICAgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICBJbnB1dFN0cmVhbSBpcyA9IG51bGw7Ci0KLSAgICAvLyBJZiByZXNvdXJjZSByZWZlcmVuY2UgaXMgYSBVUkwsIHRoZW4gaW5wdXQgc3RyZWFtIGZyb20gVVJMCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gVHJ5IHRvIGNyZWF0ZSBVUkwKLSAgICAgIFVSTCB1cmxSZXNvdXJjZSA9IG5ldyBVUkwocmVzb3VyY2VOYW1lKTsKLQotICAgICAgLy8gSWYgc3VjY2Vzc2Z1bCwgdGhlbiBnZXQgVVJMIGlucHV0IHN0cmVhbQotICAgICAgaXMgPSBnZXRJbnB1dFN0cmVhbSh1cmxSZXNvdXJjZSk7Ci0gICAgfQotCi0gICAgLy8gRWxzZSB0cnkgdG8gcmVhZCByZXNvdXJjZSBkaXJlY3RseQotICAgIGNhdGNoIChNYWxmb3JtZWRVUkxFeGNlcHRpb24gbXVlKQotICAgIHsKLSAgICAgIGJvb2xlYW4gYlRyeUNsYXNzTG9hZGVyID0gZmFsc2U7Ci0KLSAgICAgIHRyeQotICAgICAgewotICAgICAgICAvLyBPcGVuIGZpbGUgaW5wdXQgc3RyZWFtCi0gICAgICAgIGlzID0gbmV3IEJ1ZmZlcmVkSW5wdXRTdHJlYW0obmV3IEZpbGVJbnB1dFN0cmVhbShyZXNvdXJjZU5hbWUpKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZm5mZSkKLSAgICAgIHsKLSAgICAgICAgLy8gU2V0IHRyeSBjbGFzcyBsb2FkZXIgZmxhZwotICAgICAgICBiVHJ5Q2xhc3NMb2FkZXIgPSB0cnVlOwotICAgICAgfQotICAgICAgY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIHNlKQotICAgICAgewotICAgICAgICAvLyBTZXQgdHJ5IGNsYXNzIGxvYWRlciBmbGFnCi0gICAgICAgIGJUcnlDbGFzc0xvYWRlciA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIC8vIERFQlVHOgotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkV4Y2VwdGlvbiBpbiBnZXRJbnB1dFN0cmVhbSA6IiArIGUudG9TdHJpbmcoKSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIElmIHRyeSBjbGFzcyBsb2FkZXIsIHRoZW4gdXNlIGl0IHRvIGdldCBpbnB1dCBzdHJlYW0KLSAgICAgIGlmIChiVHJ5Q2xhc3NMb2FkZXIpCi0gICAgICB7Ci0gICAgICAgIC8vIFVzZSBjbGFzcyBsb2FkZXIgdG8gbG9hZCByZXNvdXJjZQotICAgICAgICBpcyA9IENsYXNzTG9hZGVyLmdldFN5c3RlbVJlc291cmNlQXNTdHJlYW0ocmVzb3VyY2VOYW1lKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUgaW5wdXQgc3RyZWFtIGlzIG51bGwsIHRoZW4gdGhyb3cgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCi0gICAgaWYgKGlzID09IG51bGwpCi0gICAgewotICAgICAgLy90cnkgdGhpcwotICAgICAgaXMgPQotICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpLmdldFJlc291cmNlQXNTdHJlYW0oCi0gICAgICAgICAgcmVzb3VyY2VOYW1lKTsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUgaW5wdXQgc3RyZWFtIGlzIG51bGwsIHRoZW4gdGhyb3cgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCi0gICAgaWYgKGlzID09IG51bGwpCi0gICAgewotICAgICAgLy90cnkgdGhpcwotICAgICAgVVJMIGFVUkwgPQotICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpLmdldFJlc291cmNlKAotICAgICAgICAgIHJlc291cmNlTmFtZSk7Ci0gICAgICBpZiAoYVVSTCAhPSBudWxsKQotICAgICAgICBpcyA9IGdldElucHV0U3RyZWFtKGFVUkwpOwotICAgIH0KLQotICAgIGlmIChpcyA9PSBudWxsKQotICAgICAgLy8gVGhyb3cgZXhlY3B0aW9uCi0gICAgICB0aHJvdyBuZXcgRmlsZU5vdEZvdW5kRXhjZXB0aW9uKAotICAgICAgICAiQ291bGQgbm90IGxvY2F0ZSByZXNvdXJjZSBmaWxlOiAiICsgcmVzb3VyY2VOYW1lKTsKLQotICAgIC8vIFJldHVybiBpbnB1dCBzdHJlYW0KLSAgICByZXR1cm4gaXM7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBpbnB1dCBzdHJlYW0gZnJvbSBhIFVSTC4KLSAgICogQHBhcmFtIHVybEZpbGUgdGhlIFVSTCB0byBnZXQgdGhlIGlucHV0IHN0cmVhbSBmcm9tLgotICAgKiBAcmV0dXJuIHRoZSBpbnB1dCBzdHJlYW0gY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gVVJMLgotICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIGF0dGVtcHQgdG8gb3BlbiB0aGUgZmlsZSBkZW5vdGVkIGJ5IFVSTCBoYXMgZmFpbGVkLgotICAgKiBAdGhyb3dzIENvbm5lY3RFeGNlcHRpb24gaWYgdHJvdWJsZSBjb25uZWN0aW5nIHRvIFVSTC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgSW5wdXRTdHJlYW0gZ2V0SW5wdXRTdHJlYW0oVVJMIHVybEZpbGUpCi0gICAgdGhyb3dzIElPRXhjZXB0aW9uLCBDb25uZWN0RXhjZXB0aW9uCi0gIHsKLSAgICBJbnB1dFN0cmVhbSBpcyA9IG51bGw7Ci0KLSAgICAvLyBBREQ6IGhvdyBhcmUgVVJMcyB0aGF0IGFyZSBwYXNzd29yZCBwcm90ZWN0ZWQgaGFuZGxlZD8/Pz8KLQotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIE9wZW4gZmlsZSBpbnB1dCBzdHJlYW0KLSAgICAgIGlzID0gbmV3IEJ1ZmZlcmVkSW5wdXRTdHJlYW0odXJsRmlsZS5vcGVuU3RyZWFtKCkpOwotICAgIH0KLQotICAgIGNhdGNoIChDb25uZWN0RXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gUmUtdGhyb3cgdGhpcyBleGNwZXRpb24gd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gICAgICB0aHJvdyBuZXcgamF2YS5uZXQuQ29ubmVjdEV4Y2VwdGlvbigKLSAgICAgICAgIkNvdWxkIG5vdCBjb25uZWN0IHRvIFVSTDogIiArIHVybEZpbGUudG9FeHRlcm5hbEZvcm0oKSArICIuIik7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGlucHV0IHN0cmVhbQotICAgIHJldHVybiBpczsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgY29udGVudHMgb2YgYSByZXNvdXJjZSBhbmQgcmV0dXJuIGFzIGEgaW5wdXQgc3RyZWFtLgotICAgKiBAcGFyYW0gZmlsZUxvY2F0aW9uIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlsZS4KLSAgICogQHJldHVybiBjb250ZW50cyBvZiBhIHJlc291cmNlIGFzIGEgaW5wdXQgc3RyZWFtLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGZpbGVFeGlzdHMoU3RyaW5nIGZpbGVMb2NhdGlvbikKLSAgewotICAgIGJvb2xlYW4gZmlsZUV4aXN0cyA9IGZhbHNlOwotCi0gICAgLy8gSWYgcmVzb3VyY2UgcmVmZXJlbmNlIGlzIGEgVVJMLCB0aGVuIGlucHV0IHN0cmVhbSBmcm9tIFVSTAotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIFRyeSB0byBjcmVhdGUgVVJMCi0gICAgICBVUkwgdXJsID0gbmV3IFVSTChmaWxlTG9jYXRpb24pOwotCi0gICAgICAvLyBJZiBzdWNjZXNzZnVsLCB0aGVuIHRyeSB0byBvcGVuIGNvbm5lY3Rpb24KLSAgICAgIHVybC5vcGVuU3RyZWFtKCk7Ci0gICAgICBmaWxlRXhpc3RzID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBFbHNlIHRyeSB0byByZWFkIHJlc291cmNlIGRpcmVjdGx5Ci0gICAgY2F0Y2ggKE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiBtdWUpCi0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGZpbGVMb2NhdGlvbik7Ci0KLSAgICAgICAgZmlsZUV4aXN0cyA9IGZpbGUuZXhpc3RzKCk7Ci0gICAgICB9Ci0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZTIpCi0gICAgICB7Ci0gICAgICAgIGZpbGVFeGlzdHMgPSBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGZuZmUpCi0gICAgewotICAgICAgZmlsZUV4aXN0cyA9IGZhbHNlOwotICAgIH0KLQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBmaWxlRXhpc3RzID0gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIGZpbGUgZXhpc3RzIGluZGljYXRvcgotICAgIHJldHVybiBmaWxlRXhpc3RzOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBsb2NhbCBob3N0IG5hbWUuCi0gICAqIEByZXR1cm4gdGhlIGxvY2FsIGhvc3QgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldExvY2FsSG9zdE5hbWUoKQotICB7Ci0gICAgU3RyaW5nIHNMb2NhbEhvc3ROYW1lOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gR2V0IGxvY2FsIGhvc3QgbmFtZQotICAgICAgc0xvY2FsSG9zdE5hbWUgPSBJbmV0QWRkcmVzcy5nZXRMb2NhbEhvc3QoKS5nZXRIb3N0TmFtZSgpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gU2V0IGRlZmF1bHQgbG9jYWwgaG9zdCBuYW1lCi0gICAgICBzTG9jYWxIb3N0TmFtZSA9ICIxMjcuMC4wLjEiOwotICAgIH0KLQotICAgIC8vIFJldHVybiBsb2NhbCBob3N0IG5hbWUKLSAgICByZXR1cm4gc0xvY2FsSG9zdE5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogQnVpbGQgYSBVUkwgc3RyaW5nIGZyb20gaG9zdG5hbWUsIHBvcnQgYW5kIFVSTi4KLSAgICoKLSAgICogQHBhcmFtIGhvc3RuYW1lIHRoZSBob3N0bmFtZS4KLSAgICogQHBhcmFtIHBvcnQgdGhlIHBvcnQuCi0gICAqIEBwYXJhbSB1cm4gdGhlIFVSTi4KLSAgICogQHJldHVybiBmb3JtYXR0ZWQgVVJMIHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGZvcm1hdFVSTChTdHJpbmcgaG9zdG5hbWUsIFN0cmluZyBwb3J0LCBTdHJpbmcgdXJuKQotICB7Ci0gICAgLy8gQnVpbGQgVVJOCi0gICAgU3RyaW5nIGZvcm1hdFVSTiA9IHVybjsKLQotICAgIC8vIElmIFVSTiBkb2Vzbid0IHN0YXJ0IHdpdGggIi8iLCB0aGVuIGFkZCBpdAotICAgIGlmICghKGZvcm1hdFVSTi5zdGFydHNXaXRoKCIvIikpKQotICAgIHsKLSAgICAgIC8vIEFkZCAiLyIgdG8gYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcKLSAgICAgIGZvcm1hdFVSTiA9ICIvIiArIHVybjsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gVVJMIHN0cmluZwotICAgIHJldHVybiAiaHR0cDovLyIgKyBob3N0bmFtZSArICI6IiArIHBvcnQgKyBmb3JtYXRVUk47Ci0gIH0KLQotICAvKioKLSAgICogVGhpcyBtZXRob2Qgd2lsbCByZXBsYWNlIGFsbCBvZiB0aGUgb2NjdXJhbmNlcyBvZiBhIHN0cmluZwotICAgKiB3aXRoIGEgc3Vic3RpdHV0aW9uIHN0cmluZy4KLSAgICoKLSAgICogQHBhcmFtIHNUZXh0IFN0cmluZyB0byB1ZHBhdGUuCi0gICAqIEBwYXJhbSBzRmluZCBTdHJpbmcgdG8gZmluZC4KLSAgICogQHBhcmFtIHNSZXBsYWNlIFN0cmluZyB0byB1c2UgZm9yIHN1YnN0aXR1dGlvbi4KLSAgICogQHJldHVybiB1cGRhdGVkIHN0cmluZy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHJlcGxhY2VTdHJpbmcoCi0gICAgU3RyaW5nIHNUZXh0LAotICAgIFN0cmluZyBzRmluZCwKLSAgICBTdHJpbmcgc1JlcGxhY2UpCi0gIHsKLSAgICBpbnQgaVByZXZJbmRleCA9IDA7Ci0KLSAgICBpbnQgaUZpbmRMZW4gPSBzRmluZC5sZW5ndGgoKTsKLSAgICBpbnQgaVJlcGxhY2VMZW4gPSBzUmVwbGFjZS5sZW5ndGgoKTsKLQotICAgIFN0cmluZyBzVXBkYXRlZFRleHQgPSBzVGV4dDsKLQotICAgIC8vIFJlcGxhY2UgYWxsIG9jY3VyYW5jZXMgb2YgdGhlIGZpbmQgc3RyaW5nCi0gICAgZm9yIChpbnQgaUluZGV4ID0gc1VwZGF0ZWRUZXh0LmluZGV4T2Yoc0ZpbmQpOwotICAgICAgaUluZGV4IDwgKHNVcGRhdGVkVGV4dC5sZW5ndGgoKSAtIDEpICYmIGlJbmRleCAhPSAtMTsKLSAgICAgIGlJbmRleCA9IHNVcGRhdGVkVGV4dC5pbmRleE9mKHNGaW5kLCBpUHJldkluZGV4ICsgaVJlcGxhY2VMZW4pKQotICAgIHsKLSAgICAgIC8vIFNldCB1cGRhdGVkIHRleHQgZnJvbSB0aGUgZnJvbnQgcG9ydGlvbiArIHJlcGxhY2VtZW50IHRleHQgKyBiYWNrIHBvcnRpb24KLSAgICAgIHNVcGRhdGVkVGV4dCA9Ci0gICAgICAgIHNVcGRhdGVkVGV4dC5zdWJzdHJpbmcoMCwgaUluZGV4KQotICAgICAgICAgICsgc1JlcGxhY2UKLSAgICAgICAgICArIHNVcGRhdGVkVGV4dC5zdWJzdHJpbmcoaUluZGV4ICsgaUZpbmRMZW4pOwotCi0gICAgICAvLyBTZXQgdGhlIHByZXZpb3VzIGluZGV4IGZpZWxkCi0gICAgICBpUHJldkluZGV4ID0gaUluZGV4OwotICAgIH0KLQotICAgIC8vIFJldHVybiB1cGRhdGVkIHRleHQgc3RyaW5nCi0gICAgcmV0dXJuIHNVcGRhdGVkVGV4dDsKLSAgfQotCi0gIC8qKgotICAgKiBDb252ZXJ0IHN0cmluZyB0byBoZXggc3RyaW5nLgotICAgKiBAcGFyYW0gZGF0YSAgYSBTdHJpbmcgb2JqZWN0LgotICAgKiBAcmV0dXJuIGhleCBzdHJpbmcuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyB0b0hleFN0cmluZyhTdHJpbmcgZGF0YSkKLSAgewotICAgIGNoYXJbXSBIRVhfQ0hBUlMgPQotICAgICAgewotICAgICAgICAnMCcsCi0gICAgICAgICcxJywKLSAgICAgICAgJzInLAotICAgICAgICAnMycsCi0gICAgICAgICc0JywKLSAgICAgICAgJzUnLAotICAgICAgICAnNicsCi0gICAgICAgICc3JywKLSAgICAgICAgJzgnLAotICAgICAgICAnOScsCi0gICAgICAgICdBJywKLSAgICAgICAgJ0InLAotICAgICAgICAnQycsCi0gICAgICAgICdEJywKLSAgICAgICAgJ0UnLAotICAgICAgICAnRicgfTsKLQotICAgIC8vIEdldCBzdHJpbmcgYXMgYnl0ZSBhcnJheQotICAgIGJ5dGVbXSBieXRlRGF0YSA9IGRhdGEuZ2V0Qnl0ZXMoKTsKLQotICAgIC8vIEdldCBsZW5ndGgKLSAgICBpbnQgbGVuZ3RoID0gYnl0ZURhdGEubGVuZ3RoOwotCi0gICAgLy8gQ3JlYXRlIENoYXIgYnVmZmVyCi0gICAgY2hhcltdIGNoYXJCdWZmZXIgPSBuZXcgY2hhcltsZW5ndGggKiAyXTsKLQotICAgIGludCBuZXh0OwotICAgIGZvciAoaW50IGJ5dGVDbnQgPSAwLCBjaGFyQ250ID0gMDsgYnl0ZUNudCA8IGxlbmd0aDspCi0gICAgewotICAgICAgbmV4dCA9IGJ5dGVEYXRhW2J5dGVDbnQrK107Ci0gICAgICBjaGFyQnVmZmVyW2NoYXJDbnQrK10gPSBIRVhfQ0hBUlNbKG5leHQgPj4+IDQpICYgMHgwRl07Ci0gICAgICBjaGFyQnVmZmVyW2NoYXJDbnQrK10gPSBIRVhfQ0hBUlNbbmV4dCAmIDB4MEZdOwotICAgIH0KLQotICAgIHJldHVybiBuZXcgU3RyaW5nKGNoYXJCdWZmZXIpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnZlcnQgYnl0ZSBidWZmZXIgdG8gaGV4IHN0cmluZy4KLSAgICogQHBhcmFtIGRhdGEgIGEgYnl0ZSBhcnJheS4KLSAgICogQHJldHVybiBoZXggc3RyaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgdG9IZXhTdHJpbmcoYnl0ZVtdIGJ5dGVEYXRhKQotICB7Ci0gICAgY2hhcltdIEhFWF9DSEFSUyA9Ci0gICAgICB7Ci0gICAgICAgICcwJywKLSAgICAgICAgJzEnLAotICAgICAgICAnMicsCi0gICAgICAgICczJywKLSAgICAgICAgJzQnLAotICAgICAgICAnNScsCi0gICAgICAgICc2JywKLSAgICAgICAgJzcnLAotICAgICAgICAnOCcsCi0gICAgICAgICc5JywKLSAgICAgICAgJ0EnLAotICAgICAgICAnQicsCi0gICAgICAgICdDJywKLSAgICAgICAgJ0QnLAotICAgICAgICAnRScsCi0gICAgICAgICdGJyB9OwotCi0KLSAgICAvLyBHZXQgbGVuZ3RoCi0gICAgaW50IGxlbmd0aCA9IGJ5dGVEYXRhLmxlbmd0aDsKLQotICAgIC8vIENyZWF0ZSBDaGFyIGJ1ZmZlcgotICAgIGNoYXJbXSBjaGFyQnVmZmVyID0gbmV3IGNoYXJbbGVuZ3RoICogMl07Ci0KLSAgICBpbnQgbmV4dDsKLSAgICBmb3IgKGludCBieXRlQ250ID0gMCwgY2hhckNudCA9IDA7IGJ5dGVDbnQgPCBsZW5ndGg7KQotICAgIHsKLSAgICAgIG5leHQgPSBieXRlRGF0YVtieXRlQ250KytdOwotICAgICAgY2hhckJ1ZmZlcltjaGFyQ250KytdID0gSEVYX0NIQVJTWyhuZXh0ID4+PiA0KSAmIDB4MEZdOwotICAgICAgY2hhckJ1ZmZlcltjaGFyQ250KytdID0gSEVYX0NIQVJTW25leHQgJiAweDBGXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3IFN0cmluZyhjaGFyQnVmZmVyKTsKLSAgfQotCi0gIC8vIEkxOE46IDIwMDMuMDIuMjYgbW9kaWZpZWQgYnkgSy5OYWthZ29tZUBCZWFjb25JVAotICAvKioKLSAgICogR2V0IE1JTUUgY2hhcnNldCBmcm9tIGEgSFRUUCBoZWFkZXJzLgotICAgKiBAcGFyYW0gaHR0cEhlYWRlcnMgU3RyaW5nIG9mIEhUVFAgaGVhZGVyLgotICAgKiBAcmV0dXJuIHRoZSBNSU1FIGNoYXJzZXQgc3RyaW5nLgotICAgKiBAYXV0aG9yIEsuTmFrYWdvbWVAQmVhY29uSVQgSmFwYW4gU0lHIAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SFRUUENoYXJzZXQoU3RyaW5nIGh0dHBIZWFkZXJzKQotICB7Ci0gICAgU3RyaW5nIG1pbWVDaGFyc2V0ID0gbnVsbDsKLQotICAgIG1pbWVDaGFyc2V0ID0gaHR0cEhlYWRlcnMudG9VcHBlckNhc2UoKTsKLSAgICBpbnRbXSBpbmRleCA9IHsgLTEsIC0xLCAtMSB9OwotICAgIGludCBpbmRleFMgPSBtaW1lQ2hhcnNldC5pbmRleE9mKCJDSEFSU0VUIik7Ci0gICAgaW50IGluZGV4RSA9IEludGVnZXIuTUFYX1ZBTFVFOwotICAgIGlmIChpbmRleFMgPCAxNykKLSAgICB7Ci0gICAgICByZXR1cm4gIiI7Ci0gICAgfQotICAgIGluZGV4UyA9IG1pbWVDaGFyc2V0LmluZGV4T2YoIj0iLCBpbmRleFMgKyA3KTsKLSAgICBpZiAoaW5kZXhTID09IC0xKQotICAgIHsKLSAgICAgIHJldHVybiAiIjsKLSAgICB9Ci0gICAgaW5kZXhTKys7Ci0gICAgaW5kZXhbMF0gPSBtaW1lQ2hhcnNldC5pbmRleE9mKCInIiwgaW5kZXhTKTsKLSAgICBpbmRleFsxXSA9IG1pbWVDaGFyc2V0LmluZGV4T2YoIlxyXG4iLCBpbmRleFMpOwotICAgIGluZGV4WzJdID0gbWltZUNoYXJzZXQuaW5kZXhPZigiXCIiLCBpbmRleFMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKQotICAgIHsKLSAgICAgIGlmIChpbmRleFtpXSAhPSAtMSAmIGluZGV4RSA+IGluZGV4W2ldKQotICAgICAgewotICAgICAgICBpbmRleEUgPSBpbmRleFtpXTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoaW5kZXhFICE9IEludGVnZXIuTUFYX1ZBTFVFKQotICAgIHsKLSAgICAgIG1pbWVDaGFyc2V0ID0gaHR0cEhlYWRlcnMuc3Vic3RyaW5nKGluZGV4UywgaW5kZXhFKTsKLSAgICAgIG1pbWVDaGFyc2V0LnRyaW0oKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIG1pbWVDaGFyc2V0ID0gIiI7Ci0gICAgfQotICAgIHJldHVybiBtaW1lQ2hhcnNldDsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBtZXNzYWdlIGlzIGEgc2ltcGxlIFNPQVAgbWVzc2FnZSBvciB3aGV0aGVyIGl0IGlzIGEgU09BUCBtZXNzYWd3ZSB3aXRoIGF0dGFjaG1lbnRzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzTXVsdGlwYXJ0UmVsYXRlZE1lc3NhZ2UoU3RyaW5nIGh0dHBIZWFkZXJzKQotICB7Ci0gIAlib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotICAgIHRyeSAKLSAgICB7Ci0gICAgICAvLyBjaGVjayBoZWFkZXIgZm9yIG1pbWUgdmVyc2lvbiBhbmQgYm91bmRhcnkKLSAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyQXR0cmlidXRlKGh0dHBIZWFkZXJzLCBIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEUpOwotICAgICAgaWYgKGNvbnRlbnRUeXBlID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIHRoZXJlIGlzIG5vIGNvbnRlbnRUeXBlLCBjaGVjayBpZiB0aGVyZSBpcyBhIGJvdW5kYXJ5IGF0dHJpYnV0ZQotICAgICAgICBTdHJpbmcgYm91bmRhcnkgPSBVdGlscy5nZXRIdHRwSGVhZGVyU3ViQXR0cmlidXRlKGh0dHBIZWFkZXJzLCBIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEUsICJib3VuZGFyeSIpOwotICAgICAgICBpZiAoKGJvdW5kYXJ5ICE9IG51bGwpICYmICghYm91bmRhcnkuZXF1YWxzKCIiKSkpCi0gICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IGNvbnRlbnRUeXBlLmVxdWFsc0lnbm9yZUNhc2UoIm11bHRpcGFydC9yZWxhdGVkIik7Ci0gICAgICB9Ci0gICAgfSAKLSAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIGUpCi0JeyAKLSAgICAJcmVzdWx0ID0gZmFsc2U7IAotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SHR0cEhlYWRlckF0dHJpYnV0ZShTdHJpbmcgaHR0cEhlYWRlcnMsIFN0cmluZyBhdHRyaWJ1dGVOYW1lKQotICB7IFN0cmluZyByZXN1bHQgPSBudWxsOwotICAJdHJ5Ci0gIAl7Ci0gICAgIHJlc3VsdCA9IEhUVFBVdGlscy5nZXRIdHRwSGVhZGVyQXR0cmlidXRlKGh0dHBIZWFkZXJzLCBhdHRyaWJ1dGVOYW1lKTsKLSAgCX0KLSAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIGUpCi0JeyAKLSAgICAJcmVzdWx0ID0gbnVsbDsgCi0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEh0dHBIZWFkZXJTdWJBdHRyaWJ1dGUoU3RyaW5nIGh0dHBIZWFkZXJzLCBTdHJpbmcgYXR0cmlidXRlTmFtZSwgU3RyaW5nIHN1YkF0dHJpYnV0ZU5hbWUpCi0gIHsgU3RyaW5nIHJlc3VsdCA9IG51bGw7Ci0gIAl0cnkKLSAgCXsKLSAgICAgcmVzdWx0ID0gSFRUUFV0aWxzLmdldEh0dHBIZWFkZXJTdWJBdHRyaWJ1dGUoaHR0cEhlYWRlcnMsIGF0dHJpYnV0ZU5hbWUsIHN1YkF0dHJpYnV0ZU5hbWUpOwotICAJfQotICAgIGNhdGNoIChXU0lFeGNlcHRpb24gZSkKLQl7IAotICAgIAlyZXN1bHQgPSBudWxsOyAKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWltZUhlYWRlckF0dHJpYnV0ZShTdHJpbmcgbWltZUhlYWRlcnMsIFN0cmluZyBhdHRyaWJ1dGVOYW1lKQotICB7IFN0cmluZyByZXN1bHQgPSBudWxsOwotICAJdHJ5Ci0gIAl7Ci0gICAgIHJlc3VsdCA9IE1JTUVVdGlscy5nZXRNaW1lSGVhZGVyQXR0cmlidXRlKG1pbWVIZWFkZXJzLCBhdHRyaWJ1dGVOYW1lKTsKLSAgCX0KLSAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIGUpCi0JeyAKLSAgICAJcmVzdWx0ID0gbnVsbDsgCi0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci0gfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldE1pbWVIZWFkZXJTdWJBdHRyaWJ1dGUoU3RyaW5nIG1pbWVIZWFkZXJzLCBTdHJpbmcgYXR0cmlidXRlTmFtZSwgU3RyaW5nIHN1YkF0dHJpYnV0ZU5hbWUpCi0gIHsgU3RyaW5nIHJlc3VsdCA9IG51bGw7Ci0gIAl0cnkKLSAgCXsKLSAgICAgcmVzdWx0ID0gTUlNRVV0aWxzLmdldE1pbWVIZWFkZXJTdWJBdHRyaWJ1dGUobWltZUhlYWRlcnMsIGF0dHJpYnV0ZU5hbWUsIHN1YkF0dHJpYnV0ZU5hbWUpOwotICAJfQotICAgIGNhdGNoIChXU0lFeGNlcHRpb24gZSkKLQl7IAotICAgIAlyZXN1bHQgPSBudWxsOyAKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gIC8vIEkxOE46IDIwMDMuMDIuMjYgbW9kaWZpZWQgYnkgSy5OYWthZ29tZUBCZWFjb25JVAotICAvKioKLSAgICogR2V0IFhNTCBlbmNvZGluZyBmcm9tIGEgU09BUCBNZXNzYWdlcy4KLSAgICogQHBhcmFtIG1lc3NhZ2UgIFNPQVAgTWVzc2FnZSBTdHJpbmcuIAotICAgKiBAcmV0dXJuIGNoYXJhY3RlciBlbmNvZGluZyBvZiBYTUwuCi0gICAqIEBhdXRob3IgSy5OYWthZ29tZUBCZWFjb25JVCBKYXBhbiBTSUcgCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRYTUxFbmNvZGluZyhTdHJpbmcgbWVzc2FnZSkKLSAgewotICAgIFN0cmluZyB4bWxEZWYgPSBudWxsOwotCi0gICAgaW50IGluZGV4UyA9IG1lc3NhZ2UuaW5kZXhPZigiPD94bWwiKTsKLSAgICBpbnQgaW5kZXhFID0gLTE7Ci0gICAgaWYgKGluZGV4UyAhPSAtMSkKLSAgICB7Ci0gICAgICBpbmRleEUgPSBtZXNzYWdlLmluZGV4T2YoIj8+IiwgaW5kZXhTKTsKLSAgICAgIGlmIChpbmRleEUgPiBpbmRleFMpCi0gICAgICB7Ci0gICAgICAgIHhtbERlZiA9IG1lc3NhZ2Uuc3Vic3RyaW5nKGluZGV4UywgaW5kZXhFKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoeG1sRGVmICE9IG51bGwpCi0gICAgewotICAgICAgaW5kZXhTID0geG1sRGVmLmluZGV4T2YoImVuY29kaW5nIik7Ci0gICAgICBpZiAoaW5kZXhTID09IC0xKQotICAgICAgewotICAgICAgICB4bWxEZWYgPSAiIjsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgeG1sRGVmID0geG1sRGVmLnN1YnN0cmluZyhpbmRleFMgKyA4KTsKLSAgICAgICAgeG1sRGVmID0geG1sRGVmLnRyaW0oKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJldHVybiAiIjsKLSAgICB9Ci0KLSAgICBpZiAoeG1sRGVmLmxlbmd0aCgpID4gMykKLSAgICB7Ci0gICAgICBpbmRleFMgPSB4bWxEZWYuaW5kZXhPZigiPSIpOwotICAgICAgaWYgKGluZGV4UyA9PSAwKQotICAgICAgewotICAgICAgICB4bWxEZWYgPSB4bWxEZWYuc3Vic3RyaW5nKDEpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHhtbERlZi5sZW5ndGgoKSA+IDMpCi0gICAgewotICAgICAgU3RyaW5nIGVuZCA9ICJcIiI7Ci0gICAgICBpbmRleFMgPSB4bWxEZWYuaW5kZXhPZihlbmQpOwotICAgICAgaWYgKGluZGV4UyAhPSAwKQotICAgICAgewotICAgICAgICBpbmRleFMgPSB4bWxEZWYuaW5kZXhPZigoZW5kID0gIiciKSk7Ci0gICAgICB9Ci0gICAgICBpZiAoaW5kZXhTID09IDApCi0gICAgICB7Ci0gICAgICAgIGluZGV4RSA9IHhtbERlZi5pbmRleE9mKGVuZCwgMyk7Ci0gICAgICAgIGlmIChpbmRleEUgIT0gLTEpCi0gICAgICAgIHsKLSAgICAgICAgICB4bWxEZWYgPSB4bWxEZWYuc3Vic3RyaW5nKDEsIGluZGV4RSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgeG1sRGVmID0gIiI7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgeG1sRGVmID0gIiI7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB4bWxEZWY7Ci0gIH0KLQotICAvLyBJMThOOiAyMDAzLjAyLjI2IG1vZGlmaWVkIGJ5IEsuTmFrYWdvbWVAQmVhY29uSVQKLSAgcHJpdmF0ZSBzdGF0aWMgUmVzb3VyY2VCdW5kbGUgamF2YUVuY29kaW5nUmVzb3VyY2UgPSBudWxsOwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSkFWQV9FTkNPRElOR19SRVNPVVJDRSA9Ci0gICAgIm9yZy53c2kudGVzdC51dGlsLkphdmFFbmNvZGluZyI7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBKQVZBX0VOQ09ESU5HX0RFRkFVTFQgPSAiVVRGLTgiOwotCi0gIC8vIEkxOE46IDIwMDMuMDIuMjYgbW9kaWZpZWQgYnkgSy5OYWthZ29tZUBCZWFjb25JVAotICAvKioKLSAgICogR2V0IEphdmEgVk0gc3VwcG9ydGVkIGNoYXJhY3RlciBlbmNvZGluZy4KLSAgICogCi0gICAqIEBwYXJhbSBtaW1lRW5jb2RpbmcgIHN0cmluZyBvZiBNSU1FKElBTkEpIGNoYXJhY3RlciBlbmNvZGluZy4gCi0gICAqIEByZXR1cm4gc3RyaW5nIG9mIGNoYXJhY3RlciBlbmNvZGluZyBzdXBwb3J0ZWQgYnkgSmF2YSBWTS4KLSAgICogQGF1dGhvciBLLk5ha2Fnb21lQEJlYWNvbklUIEphcGFuIFNJRyAKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEphdmFFbmNvZGluZyhTdHJpbmcgbWltZUVuY29kaW5nKQotICB7Ci0gICAgaWYgKG1pbWVFbmNvZGluZyA9PSBudWxsIHx8IG1pbWVFbmNvZGluZy5sZW5ndGgoKSA9PSAwKQotICAgIHsKLSAgICAgIHJldHVybiBKQVZBX0VOQ09ESU5HX0RFRkFVTFQ7Ci0gICAgfQotICAgIHRyeQotICAgIHsKLSAgICAgIGlmIChqYXZhRW5jb2RpbmdSZXNvdXJjZSA9PSBudWxsKQotICAgICAgewotICAgICAgICBqYXZhRW5jb2RpbmdSZXNvdXJjZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShKQVZBX0VOQ09ESU5HX1JFU09VUkNFKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBqYXZhRW5jb2RpbmdSZXNvdXJjZS5nZXRTdHJpbmcobWltZUVuY29kaW5nKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgIHsKLSAgICAgIHJldHVybiBtaW1lRW5jb2Rpbmc7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIENvbnZlcnQgYW4gYXJyYXkgdG8gYSBWZWN0b3IuCi0gICAqIAotICAgKiBAcGFyYW0gYXJyYXkgIHRoZSBhcnJheSB0byBiZSBjb252ZXJ0ZWQgLgotICAgKiBAcmV0dXJuIGNvbnZlcnRlZCBWZWN0b3IgKG51bGwgaWYgYXJyYXkgaXMgbnVsbCwgZW1wdHkgaWYgZW1wdHkpLgotICAgKiBAYXV0aG9yIEdyYWhhbSBUdXJyZWxsIElCTQotICAgKi8KLSAgcHVibGljIHN0YXRpYyBWZWN0b3IgYXJyYXlUb1ZlY3RvcihPYmplY3RbXSBhcnJheSkKLSAgewotICAgIGlmIChhcnJheSA9PSBudWxsKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgVmVjdG9yIHYgPSBuZXcgVmVjdG9yKGFycmF5Lmxlbmd0aCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykKLSAgICAgIHYuYWRkKGFycmF5W2ldKTsKLSAgICByZXR1cm4gdjsKLSAgfQotCi0gIC8qKgotICAgKiBEZXNpZ25hdGVzIGxlZ2FsIHZlcnNpb25zIGZvciB0aGUgcHJvZmlsZSB0ZXN0IGFzc2VydGlvbiBkb2N1bWVudAotICAgKiBAcGFyYW0gbmFtZSAtIHRoZSBUQUQgbmFtZQotICAgKiBAcGFyYW0gdmVyc2lvbiAtIHRoZSBsZWdhbCB2ZXJzaW9uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIHZvaWQgcmVnaXN0ZXJWYWxpZFByb2ZpbGVUQURWZXJzaW9uKFN0cmluZyBuYW1lLCBTdHJpbmcgdmVyc2lvbikKLSAgewotICAgICAgaWYgKHZhbGlkUHJvZmlsZVRBRFZlcnNpb25zID09IG51bGwpCi0gICAgICAgICAgdmFsaWRQcm9maWxlVEFEVmVyc2lvbnMgPSBuZXcgSGFzaE1hcCgpOwotICAgICAgdmFsaWRQcm9maWxlVEFEVmVyc2lvbnMucHV0KG5hbWUsIHZlcnNpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogQ2hlY2tzIHRvIGVuc3VyZSB0aGF0IHZlcnNpb24gb2YgdGhlIHByb2ZpbGUgdGVzdCBhc3NlcnRpb24gCi0gICAqIGRvY3VtZW50IGlzIHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHRlc3QgdG9vbHMuCi0gICAqIEBwYXJhbSBwcm9maWxlQXNzZXJ0aW9ucyAtIGEgcHJvZmlsZSBUQUQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdmVyc2lvbiBvZiB0aGUgcHJvZmlsZSB0ZXN0IGFzc2VydGlvbgotICAgKiAgICAgICAgIGRvY3VlbWVudCBpcyBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSB0ZXN0IHRvb2xzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzVmFsaWRQcm9maWxlVEFEVmVyc2lvbihQcm9maWxlQXNzZXJ0aW9ucyBwcm9maWxlQXNzZXJ0aW9ucykKLSAgewotCi0gICAgU3RyaW5nIG5hbWUgPSBwcm9maWxlQXNzZXJ0aW9ucy5nZXRUQUROYW1lKCk7Ci0gICAgU3RyaW5nIHZlcnNpb24gPSBwcm9maWxlQXNzZXJ0aW9ucy5nZXRUQURWZXJzaW9uKCk7Ci0gICAgCi0gICAgaWYgKHZhbGlkUHJvZmlsZVRBRFZlcnNpb25zID09IG51bGwpIHsKLSAgICAgICBTdHJpbmcgdmVyc2lvbnNbXVtdID0gV1NJVGVzdFRvb2xzUGx1Z2luLmdldFBsdWdpbigpLmdldEFsbFRBRFZlcnNpb25zKCk7Ci0gICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZXJzaW9ucy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgcmVnaXN0ZXJWYWxpZFByb2ZpbGVUQURWZXJzaW9uKHZlcnNpb25zW2ldWzBdLCB2ZXJzaW9uc1tpXVsxXSk7Ci0gICAgfQotCi0gICAgaWYgKHZhbGlkUHJvZmlsZVRBRFZlcnNpb25zLmNvbnRhaW5zS2V5KG5hbWUpKQotICAgICAgICByZXR1cm4gY2hlY2tWZXJzaW9uTnVtYmVyKChTdHJpbmcpIHZhbGlkUHJvZmlsZVRBRFZlcnNpb25zLmdldChuYW1lKSwKLSAgICAgICAgICAgICAgICB2ZXJzaW9uKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBDaGVja3MgdG8gZW5zdXJlIHRoYXQgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGFjdHVhbCBwcm9maWxlIHRlc3QgYXNzZXJ0aW9uIAotICAgKiBkb2N1bWVudCBpcyBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSB0ZXN0IHRvb2xzLgotICAgKiBAcGFyYW0gc3VwcG9ydGVkVmVyc2lvbiAtIHN1cHBvcnRlZCB2ZXJzaW9uIG51bWJlciBvZiBwcm9maWxlIFRBRC4KLSAgICogQHBhcmFtIGFjdHVhbFZlcnNpb24gICAgLSBhY3R1YWwgdmVyc2lvbiBudW1iZXIgb2YgcHJvZmlsZSBUQUQuIAotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBhY3R1YWwgcHJvZmlsZSB0ZXN0IGFzc2VydGlvbgotICAgKiAgICAgICAgIGRvY3VtZW50IGlzIHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHRlc3QgdG9vbHMuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGNoZWNrVmVyc2lvbk51bWJlcigKLSAgICBTdHJpbmcgc3VwcG9ydGVkVmVyc2lvbiwKLSAgICBTdHJpbmcgYWN0dWFsVmVyc2lvbikKLSAgewotICAgIGJvb2xlYW4gdmFsaWRWZXJzaW9uID0gdHJ1ZTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIFN0cmluZ1Rva2VuaXplciBzdXBwb3J0ZWRWZXJzaW9uVG9rZW5pemVyID0KLSAgICAgICAgbmV3IFN0cmluZ1Rva2VuaXplcihzdXBwb3J0ZWRWZXJzaW9uLCAiLiIpOwotICAgICAgU3RyaW5nVG9rZW5pemVyIGFjdHVhbFZlcnNpb25Ub2tlbml6ZXIgPQotICAgICAgICBuZXcgU3RyaW5nVG9rZW5pemVyKGFjdHVhbFZlcnNpb24sICIuIik7Ci0KLSAgICAgIHdoaWxlIChzdXBwb3J0ZWRWZXJzaW9uVG9rZW5pemVyLmhhc01vcmVUb2tlbnMoKSAmJiB2YWxpZFZlcnNpb24pCi0gICAgICB7Ci0gICAgICAgIGludCBzdXBwb3J0ZWRWZXJzaW9uVG9rZW4gPQotICAgICAgICAgIEludGVnZXIucGFyc2VJbnQoc3VwcG9ydGVkVmVyc2lvblRva2VuaXplci5uZXh0VG9rZW4oKSk7Ci0gICAgICAgIGlmIChhY3R1YWxWZXJzaW9uVG9rZW5pemVyLmhhc01vcmVUb2tlbnMoKSkKLSAgICAgICAgewotICAgICAgICAgIGludCBhY3R1YWxWZXJzaW9uVG9rZW4gPQotICAgICAgICAgICAgSW50ZWdlci5wYXJzZUludChhY3R1YWxWZXJzaW9uVG9rZW5pemVyLm5leHRUb2tlbigpKTsKLSAgICAgICAgICBpZiAoc3VwcG9ydGVkVmVyc2lvblRva2VuID4gYWN0dWFsVmVyc2lvblRva2VuKSBicmVhazsKLSAgICAgICAgICBlbHNlIHZhbGlkVmVyc2lvbiA9IChzdXBwb3J0ZWRWZXJzaW9uVG9rZW4gPj0gYWN0dWFsVmVyc2lvblRva2VuKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgdmFsaWRWZXJzaW9uID0gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB2YWxpZFZlcnNpb247Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBJZGVudGlmaWVzIHRoZSByb290IHBhcnQgaW4gdGhlIGxpc3QgdXNpbmcgdGhlICJzdGFydCIgYXR0cmlidXRlLgotICAgKiBJZiB0aGUgInN0YXJ0IiBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QgdGhlbiB0aGUgZmlyc3QgcGFydCBpcyBkZXNpZ25hdGVkIHRoZSByb290LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBNaW1lUGFydCBmaW5kUm9vdFBhcnQoU3RyaW5nIGh0dHBIZWFkZXJzLCBDb2xsZWN0aW9uIHBhcnRzKQotICB7Ci0gIAlNaW1lUGFydCByb290ID0gbnVsbDsKLSAgICBTdHJpbmcgc3RhcnQgPSBVdGlscy5nZXRIdHRwSGVhZGVyU3ViQXR0cmlidXRlKGh0dHBIZWFkZXJzLCBIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEUsICJzdGFydCIpOwotICAgIGlmICghcGFydHMuaXNFbXB0eSgpKQotICAgIHsKLSAgICAgIC8vIGRlZmF1bHQgdG8gdGhlIGZpcnN0IHBhcnQgaW4gdGhlIGNvbGxlY3Rpb24KLSAgICAgIHJvb3QgPSAoTWltZVBhcnQpcGFydHMuaXRlcmF0b3IoKS5uZXh0KCk7Ci0gICAgCQotICAgICAgaWYgKChzdGFydCAhPSBudWxsKSAmJiAoIXN0YXJ0LmVxdWFscygiIikpKQotICAgICAgewotICAgIAlJdGVyYXRvciBpID0gcGFydHMuaXRlcmF0b3IoKTsKLSAgICAJYm9vbGVhbiByb290Tm90Rm91bmQgPSB0cnVlOwotICAgIAl3aGlsZSAoaS5oYXNOZXh0KCkgJiYgcm9vdE5vdEZvdW5kKQotICAgIAl7Ci0gICAgCSAgTWltZVBhcnQgcGFydCA9IChNaW1lUGFydClpLm5leHQoKTsKLSAgICAJICBTdHJpbmcgaGVhZGVycyA9IHBhcnQuZ2V0SGVhZGVycygpOwotICAgIAkgIGlmIChoZWFkZXJzICE9IG51bGwpCi0gICAgCSAgewotICAgICAgICAgICAgU3RyaW5nIGNvbnRlbnRJZCA9IFV0aWxzLmdldE1pbWVIZWFkZXJBdHRyaWJ1dGUoaGVhZGVycywgTUlNRUNvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9JRCk7Ci0gICAgICAgICAgICBpZiAoc3RhcnQuZXF1YWxzKGNvbnRlbnRJZCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHJvb3QgPSBwYXJ0OwotCQkJICByb290Tm90Rm91bmQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAJICB9Ci0gICAgCX0KLSAgICAgIH0KLSAgICB9Ci0gIAlyZXR1cm4gcm9vdDsKLSAgfQotICAKLSAgLyoqCi0gICAqIERlY29kZXMgdGhlIGdpdmVuIGVuY29kZWQgc3RyaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBieXRlW10gZGVjb2RlQmFzZTY0KFN0cmluZyBzdHIpCi0gIHsKLSAgCXRyeQotICAJewotICAgIAlCYXNlNjQgZGVjb2RlciA9IG5ldyBCYXNlNjQoKTsKLSAgCSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUoc3RyLmdldEJ5dGVzKCkpOwotICAJfQotICAJY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAJewotICAJCXJldHVybiBuZXcgYnl0ZVswXTsKLSAgCX0KLSAgfQotCi0gIC8qKgotICAgKiBFbmNvZGVzIHRoZSBnaXZlbiBieXRlIGFycmF5LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZW5jb2RlQmFzZTY0KGJ5dGVbXSBidWZmZXIpCi0gIHsgICAgCi0gIAlCYXNlNjQgZW5jb2RlciA9IG5ldyBCYXNlNjQoKTsKLSAgCXJldHVybiBuZXcgU3RyaW5nKGVuY29kZXIuZW5jb2RlKGJ1ZmZlcikpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBNaW1lUGFydHMgcGFyc2VNdWx0aXBhcnRSZWxhdGVkTWVzc2FnZShTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGh0dHBIZWFkZXJzLCBTdHJpbmcgZW5jb2RpbmcpCi0gIHsKLSAgCWJ5dGVbXSBidWZmZXIgPSBudWxsOwotICAJdHJ5Ci0JeyAKLSAgCSAgYnVmZmVyID0gbWVzc2FnZS5nZXRCeXRlcyhlbmNvZGluZyk7Ci0JfQotICAJY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCXsKLSAgCQlyZXR1cm4gbnVsbDsKLQl9Ci0gIAlyZXR1cm4gcGFyc2VNdWx0aXBhcnRSZWxhdGVkTWVzc2FnZShidWZmZXIsIGh0dHBIZWFkZXJzLCBlbmNvZGluZyk7Ci0gIH0KLSAgcHVibGljIHN0YXRpYyBNaW1lUGFydHMgcGFyc2VNdWx0aXBhcnRSZWxhdGVkTWVzc2FnZShieXRlW10gbWVzc2FnZSwgU3RyaW5nIGh0dHBIZWFkZXJzLCBTdHJpbmcgZW5jb2RpbmcpCi0gIHsKLSAgICBNaW1lUGFydHMgbWltZVBhcnRzID0gbmV3IE1pbWVQYXJ0c0ltcGwoKTsKLSAgICBTdHJpbmcgYm91bmRhcnkgPSBVdGlscy5nZXRIdHRwSGVhZGVyU3ViQXR0cmlidXRlKGh0dHBIZWFkZXJzLCBIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEUsICJib3VuZGFyeSIpOwotICAgIEFycmF5TGlzdCBwYXJ0cyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAKLSAgICBpZiAoYm91bmRhcnkgPT0gbnVsbCkKLSAgICB7Ci0gICAgCS8vIGFzc3VtZSBpdCBpcyBhIHNpbXBsZSBTT0FQIG1lc3NhZ2UKLSAgICAJcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBTdHJpbmcgc3RhcnQgPSBVdGlscy5nZXRIdHRwSGVhZGVyU3ViQXR0cmlidXRlKGh0dHBIZWFkZXJzLCBIVFRQQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEUsICJzdGFydCIpOwotICAgICAgaW50W10gaW5kaWNlcyA9IFV0aWxzLmdldEJvdW5kYXJ5SW5kaWNlcyhtZXNzYWdlLCBib3VuZGFyeSk7Ci0gICAgICBib29sZWFuIHJvb3ROb3RGb3VuZCA9IHRydWU7Ci0gICAgICAKLSAgICAgIGZvciAoaW50IGk9IGluZGljZXMubGVuZ3RoIC0gMjsgaT49MDsgaS0tKQotICAgICAgewotICAgICAgICB0cnkKLSAgICAJewotICAgICAgICAgIE1pbWVQYXJ0IHBhcnQgPSBuZXcgTWltZVBhcnRJbXBsKCk7Ci0gICAgICAgICAgaW50IGluZGV4ID0gVXRpbHMuZ2V0Rmlyc3RDUkxGQ1JMRihtZXNzYWdlLCBpbmRpY2VzW2ldKTsKLSAgICAgICAgICBpZiAoKGluZGV4ID4gaW5kaWNlc1tpXSkgJiYgKGluZGV4IDwgaW5kaWNlc1tpKzFdKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyB0aGUgYm91bmRhcnkgc3RyaW5nICYgbWltZSBoZWFkZXJzIChpbmNsdWRlIHRoZSB0cmFpbGluZyBDUkxGIENSTEYpCi0gICAgICAgIAlTdHJpbmcgc3RyID0gbmV3IFN0cmluZyhtZXNzYWdlLCBpbmRpY2VzW2ldLCAoaW5kZXggLSBpbmRpY2VzW2ldKSwgIlVTLUFTQ0lJIik7Ci0gICAgICAgIAlTdHJpbmcgZGVsaW1pdGVyID0gc3RyLnN1YnN0cmluZygwLCBzdHIuaW5kZXhPZigiXHJcbiIsIDIpICsgMik7Ci0KLSAgICAgICAgCWlmIChpID09IGluZGljZXMubGVuZ3RoIC0yKQotICAgICAgICAJewotICAgICAgICAJICBTdHJpbmcgZW5kRGVsaW1pdGVyID0gbmV3IFN0cmluZyhtZXNzYWdlLCBpbmRpY2VzW2kgKyAxXSwgbWVzc2FnZS5sZW5ndGggLSBpbmRpY2VzW2kgKyAxXSwgIlVTLUFTQ0lJIik7Ci0gICAgICAgIAkgIGludCBqID0gc3RyLmluZGV4T2YoIlxyXG4iLCAyKTsKLSAgICAgICAgCSAgaWYgKGogIT0gLTEpCi0gICAgICAgIAkgICAgZW5kRGVsaW1pdGVyID0gc3RyLnN1YnN0cmluZygwLCBzdHIuaW5kZXhPZigiXHJcbiIsIDIpICsgMik7Ci0gICAgICAgICAgICAgIHBhcnQuc2V0Qm91bmRhcnlTdHJpbmdzKG5ldyBTdHJpbmdbXXtkZWxpbWl0ZXIsIGVuZERlbGltaXRlcn0pOwotICAgICAgICAgICAgfQotICAgICAgICAJZWxzZQotICAgICAgICAJICBwYXJ0LnNldEJvdW5kYXJ5U3RyaW5ncyhuZXcgU3RyaW5nW117ZGVsaW1pdGVyfSk7Ci0gICAgICAgCi0gICAgICAgIAkvLyB0aGUgaGVhZGVycwotICAgICAgICAJU3RyaW5nIGhlYWRlcnMgPSBzdHIuc3Vic3RyaW5nKGRlbGltaXRlci5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBpZiAoaGVhZGVycy5zdGFydHNXaXRoKCJcclxuIikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgCSAgLy8gbm8gaGVhZGVycyBwcmVzZW50Ci0gICAgICAgICAgCSAgcGFydC5zZXRIZWFkZXJzKCIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAJICBwYXJ0LnNldEhlYWRlcnMoaGVhZGVycyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIHRoZSBjb250ZW50Ci0gICAgICAgICAgICBTdHJpbmcgY29udGVudElkID0gVXRpbHMuZ2V0TWltZUhlYWRlckF0dHJpYnV0ZShoZWFkZXJzLCBNSU1FQ29uc3RhbnRzLkhFQURFUl9DT05URU5UX0lEKTsKLSAgICAgICAgICAgIGludCBzaXplID0gaW5kaWNlc1tpKzFdIC0gKGluZGV4KTsKLSAgICAgICAgIAlieXRlW10gY29udGVudCA9IG5ldyBieXRlW3NpemVdOwotICAgICAgCSAgICBTeXN0ZW0uYXJyYXljb3B5KG1lc3NhZ2UsIGluZGV4LCBjb250ZW50LCAwLCBzaXplKTsKLSAgICAgIAkgIAotICAgICAgICAgICAgaWYgKChyb290Tm90Rm91bmQgJiYgKGkgPT0gMCkpIHx8Ci0gICAgICAgICAgICAJKChzdGFydCAhPSBudWxsKSAmJiAoIXN0YXJ0LmVxdWFscygiIikpICYmIChzdGFydC5lcXVhbHMoY29udGVudElkKSkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvLyByb290IHBhcnQgLS0gZG8gbm90IGVuY29kZQotICAgICAgICAgICAgICBwYXJ0LnNldENvbnRlbnQobmV3IFN0cmluZyhjb250ZW50LCBlbmNvZGluZykpOwotICAgICAgICAgICAgICBtaW1lUGFydHMuc2V0Um9vdFBhcnQocGFydCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFN0cmluZyB0cmFuc2ZlckVuY29kaW5nID0gIFV0aWxzLmdldE1pbWVIZWFkZXJBdHRyaWJ1dGUoaGVhZGVycywgTUlNRUNvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9UUkFOU0ZFUl9FTkNPRElORyk7Ci0gICAKLSAgICAgICAgICAgICAgaWYgKCh0cmFuc2ZlckVuY29kaW5nICE9IG51bGwpICYmIHRyYW5zZmVyRW5jb2RpbmcuZXF1YWxzSWdub3JlQ2FzZSgiYmFzZTY0IikpCi0gICAgICAgICAgICAgIAlwYXJ0LnNldENvbnRlbnQobmV3IFN0cmluZyhjb250ZW50LCBlbmNvZGluZykpOwotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcGFydC5zZXRDb250ZW50KFV0aWxzLmVuY29kZUJhc2U2NChjb250ZW50KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgIHBhcnRzLmFkZChwYXJ0KTsKLSAgICAgICAgIH0KLSAgICAJfQotICAgIAljYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgCXsKLSAgICAJICByZXR1cm4gbnVsbDsKLSAgICAJfQotICAgICAgfQotICAgICAgaW50IHNpemUgPSBwYXJ0cy5zaXplKCk7Ci0gICAgICBmb3IgKGludCBpID0gc2l6ZS0xOyBpPj0wOyBpLS0pCi0gICAgICAgICBtaW1lUGFydHMuYWRkUGFydCgoTWltZVBhcnQpcGFydHMuZ2V0KGkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1pbWVQYXJ0czsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvWE1MU3RyaW5nKE1pbWVQYXJ0cyBtaW1lUGFydHMpCi0gIHsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOwotCi0gICAgLy8gQWRkIG1lc3NhZ2UgY29udGVudCB3aXRoIGF0dGFjaG1lbnRzIGVsZW1lbnQKLSAgICBwdy5wcmludCgiPCIgKyBXU0lDb25zdGFudHMuRUxFTV9NRVNTQUdFX0NPTlRFTlRfV0lUSF9BVFRBQ0hNRU5UUyk7Ci0gICAgcHcucHJpbnQoIj4iKTsKLQotICAgIENvbGxlY3Rpb24gcGFydExpc3QgPSBtaW1lUGFydHMuZ2V0UGFydHMoKTsKLSAgICBpZiAoIXBhcnRMaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgCUl0ZXJhdG9yIGlNaW1lUGFydHMgPSBwYXJ0TGlzdC5pdGVyYXRvcigpOwotICAgICAgICAJd2hpbGUgKGlNaW1lUGFydHMuaGFzTmV4dCgpKQotICAgICAgICAgICAgewotICAgICAgICAJICBNaW1lUGFydCBtaW1lUGFydCA9IChNaW1lUGFydClpTWltZVBhcnRzLm5leHQoKTsKLSAgICAgICAgIAkgIHB3LnByaW50KG1pbWVQYXJ0LnRvWE1MU3RyaW5nKCIiKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBZGQgZW5kIG1lc3NhZ2UgZWxlbWVudAotICAgICAgICBwdy5wcmludGxuKCI8LyIgKyBXU0lDb25zdGFudHMuRUxFTV9NRVNTQUdFX0NPTlRFTlRfV0lUSF9BVFRBQ0hNRU5UUyArICI+Iik7Ci0gICAgLy8gUmV0dXJuIHN0cmluZwotICAgIHJldHVybiBzdy50b1N0cmluZygpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpCi0gIHsKLSAgCXRyeQotCXsKLSAgCSAgRmlsZUlucHV0U3RyZWFtIGlucHV0U3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbSgiZDpcXGIueG1sIik7Ci0gIAkgIGludCBpID0gaW5wdXRTdHJlYW0uYXZhaWxhYmxlKCk7Ci0gIAkgIGJ5dGVbXSBidWZmZXIgPSBuZXcgYnl0ZVtpXTsKLSAgCSAgaW5wdXRTdHJlYW0ucmVhZChidWZmZXIpOwotICAJICBTdHJpbmcgbWVzc2FnZSA9IG5ldyBTdHJpbmcoYnVmZmVyKTsKLSAgCSAgbWVzc2FnZSA9IFhNTFV0aWxzLnhtbFJlbW92ZUVzY2FwZWRTdHJpbmcobWVzc2FnZSk7Ci0gIAkgIFN0cmluZyBoZWFkZXJzID0gVXRpbHMuZ2V0SFRUUEhlYWRlcnMobWVzc2FnZSk7Ci0gIAkgIE1pbWVQYXJ0cyBwYXJ0cyA9IFV0aWxzLnBhcnNlTXVsdGlwYXJ0UmVsYXRlZE1lc3NhZ2UobWVzc2FnZSwgaGVhZGVycywgVXRpbHMuSkFWQV9FTkNPRElOR19ERUZBVUxUKTsKLSAgCSAgU3lzdGVtLm91dC5wcmludGxuKFV0aWxzLnRvWE1MU3RyaW5nKHBhcnRzKSk7Ci0JfQotICAJY2F0Y2ggKEV4Y2VwdGlvbiBlKXt9Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIEFuYWx5emVyQ29uZmlnIGdldEFuYWx5emVyQ29uZmlnKFJlcG9ydGVyIHJlcG9ydGVyKSAKLSAgewotCUFuYWx5emVyQ29uZmlnIHJlc3VsdCA9IG51bGw7Ci0JaWYgKHJlcG9ydGVyICE9IG51bGwpCi0JewotCSAgdHJ5Ci0JICB7Ci0JCXJlc3VsdCA9IHJlcG9ydGVyLmdldFJlcG9ydCgpLmdldFJlcG9ydENvbnRleHQoKS5nZXRBbmFseXplcigpLmdldEFuYWx5emVyQ29uZmlnKCk7Ci0JICB9Ci0JICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0JICB7Ci0JCXJlc3VsdCA9IG51bGw7Ci0JICB9Ci0JfQotCXJldHVybiByZXN1bHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvV1NETFV0aWwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvV1NETFV0aWwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBkZTZjMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL1dTRExVdGlsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci0KLS8qKgotICogVGhlIHV0aWxpdHkgY2xhc3MgdG8gYXV0b21hdGUgV1NETCBwcm9jZXNzaW5nLgotICogCi0gKiBAYXV0aG9yIEt1bGlrCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBXU0RMVXRpbAotewotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGV4dHJhY3RzIGxpc3Qgb2YgcGFydHMgZm9yIHRoZSBnaXZlbiBzb2FwYmluZDpib2R5LAotICAgKiBiaW5kaW5nIG9wZXJhdGlvbiwgbWVzc2FnZSwgYW5kIHN0eWxlLgotICAgKiAKLSAgICogQHBhcmFtIG9wIGFuIG9wZXJhdGlvbi4KLSAgICogQHBhcmFtIG0gIGEgbWVzc2FnZS4KLSAgICogQHBhcmFtIGJvZHkgYSBTT0FQIGJvZHkuCi0gICAqIEBwYXJhbSBzdHlsZSBhbiBvcGVyYXRpb24gc3R5bGUuCi0gICAqIEByZXR1cm4gbGlzdCBvZiBwYXJ0cyBmb3IgdGhlIGdpdmVuIHNvYXBiaW5kOmJvZHksCi0gICAqICAgICAgICAgYmluZGluZyBvcGVyYXRpb24sIG1lc3NhZ2UsIGFuZCBzdHlsZS4KLSAgICovCi0gIHN0YXRpYyBwdWJsaWMgTGlzdCBnZXRQYXJ0cygKLSAgICBPcGVyYXRpb24gb3AsCi0gICAgTWVzc2FnZSBtLAotICAgIFNPQVBCb2R5IGJvZHksCi0gICAgU3RyaW5nIHN0eWxlKQotICB7Ci0gICAgLy8JCWlmIG51bGwsIGdldCBwYXJ0cyBmcm9tIG1lc3NhZ2UgCi0gICAgaWYgKGJvZHkuZ2V0UGFydHMoKSA9PSBudWxsKQotICAgICAgLy8gaWYgcnBjIHN0eWxlIGlzIHVzZWQsIHRyeSB0byB1c2UgcGFydE9yZGVyIGF0dHJpYnV0ZSBmcm9tIG9wZXJhdGlvbgotICAgICAgaWYgKFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMuZXF1YWxzKHN0eWxlKSkKLSAgICAgICAgcmV0dXJuIG0uZ2V0T3JkZXJlZFBhcnRzKG9wLmdldFBhcmFtZXRlck9yZGVyaW5nKCkpOwotICAgICAgZWxzZQotICAgICAgICByZXR1cm4gbS5nZXRPcmRlcmVkUGFydHMobnVsbCk7Ci0gICAgZWxzZQotICAgICAgLy8gY29udmVyc2UgcGFydHMgbmFtZSB0byBwYXJ0cyBvYmplY3RzCi0gICAgICByZXR1cm4gbS5nZXRPcmRlcmVkUGFydHMoYm9keS5nZXRQYXJ0cygpKTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGl0ZXJhdGVzIGFsbCBpbXBvcnRzIGZyb20gdGhlIGdpdmVuIGRlZmluaXRpb24gYW5kIGV4cGFuZHMgYWxsCi0gICAqIGltcG9ydGVkIG1lc3NhZ2VzLCBzZXJ2aWNlLCBwb3J0VHlwZXMsIGFuZCBiaW5kaW5ncyB0byB0aGUgZGVmaW5pdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBkZWYgYSBXU0RMIGRlZmluaXRpb24uCi0gICAqLwotICBzdGF0aWMgcHVibGljIHZvaWQgZXhwYW5kRGVmaW5pdGlvbihEZWZpbml0aW9uIGRlZikKLSAgewotICAgIGlmIChkZWYgIT0gbnVsbCAmJiBkZWYuZ2V0SW1wb3J0cygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBkZWYuZ2V0SW1wb3J0cygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBMaXN0IHYgPSAoTGlzdCkgaXQubmV4dCgpOwotICAgICAgICBpZiAodiAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgSXRlcmF0b3IgaXQyID0gdi5pdGVyYXRvcigpOwotICAgICAgICAgIHdoaWxlIChpdDIuaGFzTmV4dCgpKQotICAgICAgICAgICAgZXhwYW5kRGVmaW5pdGlvbihkZWYsIChJbXBvcnQpIGl0Mi5uZXh0KCksIG5ldyBBcnJheUxpc3QoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhlIGludGVybmFsIG1ldGhvZCB0byBleHBhbmQgZGVmaW5pdGlvbi4KLSAgICogQHBhcmFtIHRhcmdldCBXU0RMIGRlZmluaXRpb24uCi0gICAqIEBwYXJhbSBpbSBpbnRlcm5hbCBtZXRob2QuCi0gICAqLwotICBzdGF0aWMgcHJpdmF0ZSB2b2lkIGV4cGFuZERlZmluaXRpb24oRGVmaW5pdGlvbiB0YXJnZXQsIEltcG9ydCBpbSwgTGlzdCBwcm9jZXNzZWREZWZpbml0aW9ucykKLSAgewotICAgIGlmIChpbSAhPSBudWxsKQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZCA9IGltLmdldERlZmluaXRpb24oKTsKLSAgICAgIGlmICgoZCAhPSBudWxsKSAmJiAoIXByb2Nlc3NlZERlZmluaXRpb25zLmNvbnRhaW5zKGQpKSkKLSAgICAgIHsKLSAgICAJcHJvY2Vzc2VkRGVmaW5pdGlvbnMuYWRkKGQpOwotCi0gICAgICAgIGlmIChkLmdldE1lc3NhZ2VzKCkgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gZC5nZXRNZXNzYWdlcygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgICAgICAgIHRhcmdldC5hZGRNZXNzYWdlKChNZXNzYWdlKSBpdC5uZXh0KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkLmdldFBvcnRUeXBlcygpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBJdGVyYXRvciBpdCA9IGQuZ2V0UG9ydFR5cGVzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgICAgICAgdGFyZ2V0LmFkZFBvcnRUeXBlKChQb3J0VHlwZSkgaXQubmV4dCgpKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZC5nZXRCaW5kaW5ncygpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBJdGVyYXRvciBpdCA9IGQuZ2V0QmluZGluZ3MoKS52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICAgICAgICB0YXJnZXQuYWRkQmluZGluZygoQmluZGluZykgaXQubmV4dCgpKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZC5nZXRTZXJ2aWNlcygpICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBJdGVyYXRvciBpdCA9IGQuZ2V0U2VydmljZXMoKS52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICAgICAgICB0YXJnZXQuYWRkU2VydmljZSgoU2VydmljZSkgaXQubmV4dCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIEl0ZXJhdG9yIGl0ID0gZC5nZXRJbXBvcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIExpc3QgdiA9IChMaXN0KSBpdC5uZXh0KCk7Ci0gICAgICAgICAgaWYgKHYgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBJdGVyYXRvciBpdDIgPSB2Lml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICB3aGlsZSAoaXQyLmhhc05leHQoKSkKLSAgICAgICAgICAgICAgZXhwYW5kRGVmaW5pdGlvbih0YXJnZXQsIChJbXBvcnQpIGl0Mi5uZXh0KCksIHByb2Nlc3NlZERlZmluaXRpb25zKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCBleHRyYWN0cyBwYXJ0IGZyb20gdGhlIG1lc3NhZ2UuCi0gICAqIAotICAgKiBAcGFyYW0gbWVzc2FnZSBhIFNPQVAgbWVzc2FnZS4KLSAgICogQHBhcmFtIHBhcnQgYSBwYXJ0IG5hbWUuCi0gICAqIEByZXR1cm4gcGFydCBmcm9tIHRoZSBzcGVjaWZpZWQgbWVzc2FnZS4KLSAgICovCi0gIHN0YXRpYyBwdWJsaWMgUGFydCBnZXRQYXJ0KE1lc3NhZ2UgbWVzc2FnZSwgU3RyaW5nIHBhcnQpCi0gIHsKLSAgICBQYXJ0IG1lc1BhcnQgPSBudWxsOwotICAgIGlmIChwYXJ0ID09IG51bGwpCi0gICAgICBtZXNQYXJ0ID0gKFBhcnQpIG1lc3NhZ2UuZ2V0T3JkZXJlZFBhcnRzKG51bGwpLmdldCgwKTsKLSAgICBlbHNlCi0gICAgICBtZXNQYXJ0ID0gbWVzc2FnZS5nZXRQYXJ0KHBhcnQpOwotICAgIHJldHVybiBtZXNQYXJ0OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL1dTSVByb3BlcnRpZXMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvV1NJUHJvcGVydGllcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTE0MDMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3V0aWwvV1NJUHJvcGVydGllcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7Ci1pbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOwotCi1pbXBvcnQgb3JnLnVkZGk0ai50cmFuc3BvcnQuVHJhbnNwb3J0RmFjdG9yeTsKLQotLyoqCi0gKiBUaGUgV1NJIHByb3BlcnRpZXMgY2FuIGJlIGRlZmluZWQgaW4gb25lIG9mIHRocmVlIGxvY2F0aW9ucy4gIAotICoKLSAqICAgMS4gVGhlIHdzaS5wcm9wZXJ0aWVzIGZpbGUgd2hpY2ggY2FuIGJlIGxvY2F0ZWQgYW55d2hlcmUgaW4gdGhlIGNsYXNzcGF0aC4KLSAqICAgMi4gVGhlIHN5c3RlbSBwcm9wZXJ0eSBzZXR0aW5ncy4KLSAqICAgMy4gVGhlIHRocmVhZCBsb2NhbCBwcm9wZXJ0eSBzZXR0aW5ncy4KLSAqIAotICogVGhlIHByb3BlcnRpZXMgYXJlIHNldCBiYXNlZCBvbiB0aGlzIG9yZGVyaW5nLiAgRm9yIGV4YW1wbGUsIHRoZSBwcm9wZXJ0aWVzIAotICogZnJvbSB0aGUgd3NpLnByb3BlcnRpZXMgZmlsZSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHByb3BlcnRpZXMgZnJvbSB0aGUgc3lzdGVtIAotICogcHJvcGVydHkgc2V0dGluZ3MsIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIHRocmVhZCBsb2NhbCBwcm9wZXJ0eSBzZXR0aW5ncy4KLSAqCi0gKiBUaGUgcHJvcGVydGllcyB0aGF0IGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3NlcyBjYW4gYmUKLSAqIHNwZWNpZmllZCBhcyBzeXN0ZW0gcHJvcGVydGllcyBvciBhcyBwcm9wZXJ0aWVzIHRoYXQgYXJlIHNldCBpbiBhIHRocmVhZCAKLSAqIGxvY2FsIHZhcmlhYmxlLiAgU3lzdGVtIHByb3BlcnRpZXMgc2hvdWxkIGJlIHVzZWQgaWYgb25seSBvbmUgaW1wbGVtZW50YXRpb24KLSAqIGlzIG5lZWRlZCBwZXIgSlZNLiAgSWYgdHdvIG9yIG1vcmUgaW1wbGVtZW50YXRpb25zIGFyZSBuZWVkZWQgcGVyIEpWTSwgdGhlbgotICogdGhlIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCB1c2luZyB0aGUgdGhyZWFkIGxvY2FsIHZhcmlhYmxlLgotICoKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yOiBQZXRlciBCcml0dGVuaGFtCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBXU0lQcm9wZXJ0aWVzCi17Ci0gIC8qKgotICAgKiBQcm9wZXJ0aWVzIG9iamVjdC4KLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgUHJvcGVydGllcyB3c2lQcm9wZXJ0aWVzID0gbmV3IFByb3BlcnRpZXMoKTsKLQotICAvKioKLSAgICogRGVmYXVsdCBQcm9maWxlVmFsaWRhdG9yRmFjdG9yeSBjbGFzcyBuYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGX1ZBTElEQVRPUl9GQUNUT1JZID0KLSAgICAib3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnByb2ZpbGUudmFsaWRhdG9yLmltcGwuUHJvZmlsZVZhbGlkYXRvckZhY3RvcnlJbXBsIjsKLQotICAvKioKLSAgICogUHJvcGVydHkgdGhhdCBjb250YWlucyBQcm9maWxlVmFsaWRhdG9yRmFjdG9yeSBjbGFzcyBuYW1lLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUF9WQUxJREFUT1JfRkFDVE9SWSA9Ci0gICAgIndzaS5wcm9maWxlLnZhbGlkYXRvci5mYWN0b3J5IjsKLQotICAvKioKLSAgICogRGVmYXVsdCBkb2N1bWVudCBmYWN0b3J5IGNsYXNzIG5hbWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZfRE9DVU1FTlRfRkFDVE9SWSA9Ci0gICAgIm9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5pbXBsLkRvY3VtZW50RmFjdG9yeUltcGwiOwotCi0gIC8qKgotICAgKiBQcm9wZXJ0eSB0aGF0IGNvbnRhaW5zIGRvY3VtZW50IGZhY3RvcnkgY2xhc3MgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BfRE9DVU1FTlRfRkFDVE9SWSA9ICJ3c2kuZG9jdW1lbnQuZmFjdG9yeSI7Ci0KLSAgLyoqCi0gICAqIERlZmF1bHQgSkFYUCBYTUwgcGFyc2VyIGRvY3VtZW50IGZhY3RvcnkgYnVpbGRlci4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRl9KQVhQX0RPQ1VNRU5UX0ZBQ1RPUlkgPQotICAgICJvcmcuYXBhY2hlLnhlcmNlcy5qYXhwLkRvY3VtZW50QnVpbGRlckZhY3RvcnlJbXBsIjsKLQotICAvKioKLSAgICogUHJvcGVydHkgdGhhdCBjb250YWlucyBKQVhQIFhNTCBwYXJzZXIgZG9jdW1lbnQgZmFjdG9yeSBidWlsZGVyLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUF9KQVhQX0RPQ1VNRU5UX0ZBQ1RPUlkgPQotICAgICJqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IjsKLQotICAvKioKLSAgICogRGVmYXVsdCBXU0RMIHNjaGVtYSBsb2NhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRl9XU0RMX1NDSEVNQSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI7Ci0KLSAgLyoqCi0gICAqIFByb3BlcnR5IHRoYXQgY29udGFpbnMgV1NETCBzY2hlbWEgbG9jYXRpb24uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QX1dTRExfU0NIRU1BID0gIndzaS5hbmFseXplci53c2RsLnNjaGVtYSI7Ci0KLSAgLyoqCi0gICAqIERlZmF1bHQgV1NETCBTT0FQIHNjaGVtYSBsb2NhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRl9XU0RMX1NPQVBfU0NIRU1BID0KLSAgICAiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI7Ci0KLSAgLyoqCi0gICAqIFByb3BlcnR5IHRoYXQgY29udGFpbnMgV1NETCBTT0FQIHNjaGVtYSBsb2NhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BfV1NETF9TT0FQX1NDSEVNQSA9Ci0gICAgIndzaS5hbmFseXplci53c2Rsc29hcC5zY2hlbWEiOwotCi0gIC8qKgotICAgKiBEZWZhdWx0IFdTREwgTUlNRSBzY2hlbWEgbG9jYXRpb24uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZfV1NETF9NSU1FX1NDSEVNQSA9Ci0gICAgImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvbWltZS8iOwotCi0gIC8qKgotICAgKiBQcm9wZXJ0eSB0aGF0IGNvbnRhaW5zIFdTREwgU09BUCBzY2hlbWEgbG9jYXRpb24uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QX1dTRExfTUlNRV9TQ0hFTUEgPQotICAgICJ3c2kuYW5hbHl6ZXIud3NkbG1pbWUuc2NoZW1hIjsKLQotICAvKioKLSAgICogRGVmYXVsdCBTT0FQIHNjaGVtYSBsb2NhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRl9TT0FQX1NDSEVNQSA9Ci0gICAgImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIjsKLQotICAvKioKLSAgICogUHJvcGVydHkgdGhhdCBjb250YWlucyBTT0FQIHNjaGVtYSBsb2NhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BfU09BUF9TQ0hFTUEgPSAid3NpLmFuYWx5emVyLnNvYXAuc2NoZW1hIjsKLQotICAvKioKLSAgICogRGVmYXVsdCBTT0FQIHNjaGVtYSBsb2NhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRl9YTUxfU0NIRU1BID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLnhzZCI7Ci0KLSAgLyoqCi0gICAqIFByb3BlcnR5IHRoYXQgY29udGFpbnMgU09BUCBzY2hlbWEgbG9jYXRpb24uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QX1hNTF9TQ0hFTUEgPSAid3NpLmFuYWx5emVyLnhtbHNjaGVtYS5zY2hlbWEiOwotCi0gIC8qKgotICAgKiBQcm9wZXJ0eSB3aGljaCBjb250YWlucyBXU0lfSE9NRSB2YWx1ZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BfV1NJX0hPTUUgPSAid3NpLmhvbWUiOwotCi0gIC8qKgotICAgKiBQcm9wZXJ0eSBmaWxlIG5hbWUuCi0gICAqLwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QX0ZJTEVOQU1FID0gIm9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLndzaSI7Ci0KLSAgLyoqCi0gICogVGhyZWFkIGxvY2FsIHZhcmlhYmxlLgotICAqLwotICBwcml2YXRlIHN0YXRpYyBUaHJlYWRMb2NhbCB0aHJlYWRMb2NhbCA9IG5ldyBUaHJlYWRMb2NhbCgpOwotCi0gIC8vIExvYWQgcHJvZmlsZXMgZmlsZQotICBzdGF0aWMgewotICAgIGxvYWRQcm9wZXJ0aWVzRmlsZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIExvYWQgcHJvcGVydGllcyBmcm9tIHdzaS5wcm9wZXJ0aWVzIGZpbGUuCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyB2b2lkIGxvYWRQcm9wZXJ0aWVzRmlsZSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBUcnkgdG8gbG9hZCBwcm9wZXJ0aWVzIGZyb20gd3NpLnByb3BlcnRpZXMKLSAgICAgIC8vSW5wdXRTdHJlYW0gaXMgPSBVdGlscy5nZXRJbnB1dFN0cmVhbShQUk9QX0ZJTEVOQU1FKTsKLQotICAgICAgLy8gTG9hZCBwcm9wZXJ0aWVzIGZyb20gZmlsZQotICAgICAgLy93c2lQcm9wZXJ0aWVzRmlsZS5sb2FkKGlzKTsKLQotICAgICAgUmVzb3VyY2VCdW5kbGUgcmVzb3VyY2VCdW5kbGUgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoUFJPUF9GSUxFTkFNRSk7Ci0KLSAgICAgIFN0cmluZyBuZXh0S2V5OwotICAgICAgRW51bWVyYXRpb24gZW51bWVyYXRpb24gPSByZXNvdXJjZUJ1bmRsZS5nZXRLZXlzKCk7Ci0gICAgICB3aGlsZSAoZW51bWVyYXRpb24uaGFzTW9yZUVsZW1lbnRzKCkpCi0gICAgICB7Ci0gICAgICAgIG5leHRLZXkgPSAoU3RyaW5nKSBlbnVtZXJhdGlvbi5uZXh0RWxlbWVudCgpOwotICAgICAgICB3c2lQcm9wZXJ0aWVzLnB1dChuZXh0S2V5LCByZXNvdXJjZUJ1bmRsZS5nZXRTdHJpbmcobmV4dEtleSkpOwotICAgICAgfQotICAgIH0KLQotICAgIGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gbXJlKQotICAgIHsKLSAgICAgIC8vIERFQlVHOgotICAgICAgU3lzdGVtLmVyci5wcmludGxuKAotICAgICAgICAiV0FSTklORzogIENvdWxkIG5vdCByZWFkICIKLSAgICAgICAgICArIFBST1BfRklMRU5BTUUKLSAgICAgICAgICArICIuICAiCi0gICAgICAgICAgKyAiVmVyaWZ5IHRoYXQgaXQgaXMgaW4gdGhlIENMQVNTUEFUSC4iKTsKLQotICAgICAgLy8gU2V0IHVwIGRlZmF1bHQgdmFsdWVzCi0gICAgICB3c2lQcm9wZXJ0aWVzLnB1dChQUk9QX1ZBTElEQVRPUl9GQUNUT1JZLCBERUZfVkFMSURBVE9SX0ZBQ1RPUlkpOwotICAgICAgd3NpUHJvcGVydGllcy5wdXQoUFJPUF9ET0NVTUVOVF9GQUNUT1JZLCBERUZfRE9DVU1FTlRfRkFDVE9SWSk7Ci0gICAgICB3c2lQcm9wZXJ0aWVzLnB1dChQUk9QX0pBWFBfRE9DVU1FTlRfRkFDVE9SWSwgREVGX0pBWFBfRE9DVU1FTlRfRkFDVE9SWSk7Ci0gICAgICB3c2lQcm9wZXJ0aWVzLnB1dCgKLSAgICAgICAgVHJhbnNwb3J0RmFjdG9yeS5QUk9QRVJUWV9OQU1FLAotICAgICAgICAib3JnLnVkZGk0ai50cmFuc3BvcnQuQXBhY2hlQXhpc1RyYW5zcG9ydCIpOwotICAgIH0KLSAgfQotCi0gIC8qKiAKLSAgICogRG8gbm90IGFsbG93IHRoaXMgb2JqZWN0IHRvIGJlIGluc3RhbnRpYXRlZC4KLSAgICovCi0gIHByaXZhdGUgV1NJUHJvcGVydGllcygpCi0gIHsKLSAgfQotCi0gIC8qKiAKLSAgICAqIEdldCBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBzZXQgZm9yIHRoaXMgdGhyZWFkIG9ubHkuCi0gICAgKiBAcmV0dXJuIHRoZSBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBzZXQgZm9yIHRoaXMgdGhyZWFkIG9ubHkuCi0gICAgKgotICAgICogQHNlZSAjc2V0VGhyZWFkTG9jYWxQcm9wZXJ0aWVzCi0gICAgKi8KLSAgcHVibGljIHN0YXRpYyBQcm9wZXJ0aWVzIGdldFRocmVhZExvY2FsUHJvcGVydGllcygpCi0gIHsKLSAgICAvLyBSZXR1cm4gcHJvcGVydGllcwotICAgIHJldHVybiAoUHJvcGVydGllcykgdGhyZWFkTG9jYWwuZ2V0KCk7Ci0gIH0KLQotICAvKiogCi0gICAqIFNldCBwcm9wZXJ0aWVzIGZvciB0aGlzIHRocmVhZCBvbmx5LgotICAgKiBAcGFyYW0gcHJvcHMgIGEgUHJvcGVydGllcyBvYmplY3QuCi0gICAqCi0gICAqIEBzZWUgI2dldFRocmVhZExvY2FsUHJvcGVydGllcwotICAgKi8KLSAgcHVibGljIHN0YXRpYyB2b2lkIHNldFRocmVhZExvY2FsUHJvcGVydGllcyhQcm9wZXJ0aWVzIHByb3BzKQotICB7Ci0gICAgLy8gU2F2ZSB0aGUgcHJvcGVydGllcyBhcyB0aHJlYWQgbG9jYWwgdmFyaWFibGVzCi0gICAgdGhyZWFkTG9jYWwuc2V0KHByb3BzKTsKLSAgfQotCi0gIC8qKiAKLSAgICogR2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBnaXZlbiB0aGUgcHJvcGVydHkgbmFtZS4KLSAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAgYSBwcm9wZXJ0eSBuYW1lLgotICAgKiBAcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlLiBJZiBub3QgZm91bmQgcmV0dXJuIG51bGwuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQcm9wZXJ0eShTdHJpbmcgcHJvcGVydHlOYW1lKQotICB7Ci0gICAgU3RyaW5nIHByb3BlcnR5VmFsdWUgPSBudWxsOwotICAgIFByb3BlcnRpZXMgdGhyZWFkTG9jYWxQcm9wcyA9IG51bGw7Ci0KLSAgICAvLyAxLiBMb29rIGluIHRocmVhZCBsb2NhbCBwcm9wZXJ0aWVzIGZpcnN0Ci0gICAgaWYgKCh0aHJlYWRMb2NhbFByb3BzID0gZ2V0VGhyZWFkTG9jYWxQcm9wZXJ0aWVzKCkpICE9IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlWYWx1ZSA9IHRocmVhZExvY2FsUHJvcHMuZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKTsKLSAgICB9Ci0KLSAgICAvLyAyLiBOZXh0IGxvb2sgaW4gc3lzdGVtIHByb3BlcnRpZXMgCi0gICAgaWYgKHByb3BlcnR5VmFsdWUgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBwcm9wZXJ0eVZhbHVlID0gU3lzdGVtLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSk7Ci0gICAgfQotCi0gICAgLy8gMy4gTGFzdCBsb29rIGluIHRoZSBwcm9wZXJ0aWVzIGZpbGUKLSAgICBpZiAocHJvcGVydHlWYWx1ZSA9PSBudWxsKQotICAgIHsKLSAgICAgIHByb3BlcnR5VmFsdWUgPSB3c2lQcm9wZXJ0aWVzLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIHByb3BlcnR5IHZhbHVlCi0gICAgcmV0dXJuIHByb3BlcnR5VmFsdWU7Ci0gIH0KLQotICAvKiogCi0gICAqIEdldCB0aGUgcHJvcGVydHkgdmFsdWUgZ2l2ZW4gdGhlIHByb3BlcnR5IG5hbWUuCi0gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgIGEgcHJvcGVydHkgbmFtZS4KLSAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcHJvcGVydHkuCi0gICAqIEByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWUuIElmIG5vdCBmb3VuZCByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQcm9wZXJ0eShTdHJpbmcgcHJvcGVydHlOYW1lLCBTdHJpbmcgZGVmYXVsdFZhbHVlKQotICB7Ci0gICAgU3RyaW5nIHByb3BlcnR5VmFsdWUgPSBudWxsOwotCi0gICAgLy8gSWYgdGhlIHByb3BlcnR5VmFsdWUgd2FzIG5vdCBmb3VuZCwgdGhlbiByZXR1cm4gZGVmYXVsdCB2YWx1ZQotICAgIGlmICgocHJvcGVydHlWYWx1ZSA9IGdldFByb3BlcnR5KHByb3BlcnR5TmFtZSkpID09IG51bGwpCi0gICAgewotICAgICAgcHJvcGVydHlWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gcHJvcGVydHkgdmFsdWUKLSAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHVuaXQgdGVzdCB0aGlzIGNsYXNzLgotICAgKiBAcGFyYW0gYXJncyAgdGhlIGFyZ3VtZW50cyBmb3IgbWFpbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBTZXQgcHJvcGVydHkgZm9yIHRoaXMgdGhyZWFkCi0gICAgICBQcm9wZXJ0aWVzIHByb3BzID0gbmV3IFByb3BlcnRpZXMoKTsKLSAgICAgIHByb3BzLnNldFByb3BlcnR5KFBST1BfVkFMSURBVE9SX0ZBQ1RPUlksICJtYWluIik7Ci0gICAgICBXU0lQcm9wZXJ0aWVzLnNldFRocmVhZExvY2FsUHJvcGVydGllcyhwcm9wcyk7Ci0KLSAgICAgIC8vIFN0YXJ0IGZvdXIgdGhyZWFkcyB0byB2ZXJpZnkgdGhhdCB0aGUgbXVsdGl0aHJlYWRlZCB1c2Ugb2YgdHJlYWQgbG9jYWwgdmFycyB3b3JrcwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspCi0gICAgICB7Ci0gICAgICAgIC8vIENyZWF0ZSBuZXcgdGhyZWFkCi0gICAgICAgICAobmV3IFRocmVhZChuZXcgVGhyZWFkVGVzdCgidGVzdCIgKyBpKSkpLnN0YXJ0KCk7Ci0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAvLyBTbGVlcAotICAgICAgICAgIFRocmVhZC5zbGVlcCgyMDApOwotCi0gICAgICAgICAgLy8gRGlzcGxheSBwcm9wZXJ0aWVzLCB3aGljaCBzaG91bGQgYmUgbWFpbgotICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKLSAgICAgICAgICAgICJQUk9QX1ZBTElEQVRPUl9GQUNUT1JZOiAgIgotICAgICAgICAgICAgICArIFdTSVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoUFJPUF9WQUxJREFUT1JfRkFDVE9SWSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogSW5uZXIgY2xhc3MgdXNlZCBmb3IgdW5pdCB0ZXN0LgotICAgKi8KLSAgc3RhdGljIHByaXZhdGUgY2xhc3MgVGhyZWFkVGVzdCBleHRlbmRzIFRocmVhZAotICB7Ci0gICAgU3RyaW5nIG5hbWU7Ci0KLSAgICBUaHJlYWRUZXN0KFN0cmluZyBuYW1lKQotICAgIHsKLSAgICAgIHRoaXMubmFtZSA9IG5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgcnVuKCkKLSAgICB7Ci0gICAgICBQcm9wZXJ0aWVzIHByb3BzID0gbmV3IFByb3BlcnRpZXMoKTsKLSAgICAgIHByb3BzLnNldFByb3BlcnR5KFBST1BfVkFMSURBVE9SX0ZBQ1RPUlksIG5hbWUpOwotICAgICAgV1NJUHJvcGVydGllcy5zZXRUaHJlYWRMb2NhbFByb3BlcnRpZXMocHJvcHMpOwotICAgICAgU3lzdGVtLm91dC5wcmludGxuKAotICAgICAgICAiUFJPUF9WQUxJREFUT1JfRkFDVE9SWTogICIKLSAgICAgICAgICArIFdTSVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoUFJPUF9WQUxJREFUT1JfRkFDVE9SWSkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC9YTUxJbmZvLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL1hNTEluZm8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkyMTE5OS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL1hNTEluZm8uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgLi4uCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgWE1MSW5mbwotewotICAvKioKLSAgICogR2V0IGFkZHRpb25hbCB0b29sIGVudmlyb25tZW50IGluZm9ybWF0aW9uIGFzIGFuIFhNTCBzdHJpbmcuCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VOYW1lIGEgbmFtZXNwYWNlIHByZWZpeC4KLSAgICogQHJldHVybiBhZGR0aW9uYWwgdG9vbCBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbiBhcyBhbiBYTUwgc3RyaW5nLgotICAgKi8KLSAgcHVibGljIFN0cmluZyB0b1hNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSk7Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL3dzaS5wcm9wZXJ0aWVzIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvdXRpbC93c2kucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZlNDhkYS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS91dGlsL3dzaS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotIyAvKioKLSMgICogPGNvcHlyaWdodD4KLSMgICoKLSMgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMgIElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jICAqIAotIyAgKiBDb250cmlidXRvcnM6IAotIyAgKiAgIElCTSAgICAgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jICAqIDwvY29weXJpZ2h0PgotIyAgKi8KLSMKLSMgUHJvcGVydHkgZmlsZSB1c2VkIHRvIHNldCBwYXJhbWV0ZXJzIGZvciBDb25mb3JtYW5jZSBUb29scwotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIERvY3VtZW50IGZhY3RvcnkuCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi13c2kuZG9jdW1lbnQuZmFjdG9yeT1vcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuZG9jdW1lbnQuaW1wbC5Eb2N1bWVudEZhY3RvcnlJbXBsCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUHJvZmlsZSB2YWxpZGF0aW9uIGZhY3RvcnkuCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi13c2kucHJvZmlsZS52YWxpZGF0b3IuZmFjdG9yeT1vcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucHJvZmlsZS52YWxpZGF0b3IuaW1wbC5Qcm9maWxlVmFsaWRhdG9yRmFjdG9yeUltcGwKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBSZWZlcmVuY2UgdG8gSkFYUCBkb2N1bWVudCBidWlsZGVyCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1qYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5PW9yZy5hcGFjaGUueGVyY2VzLmpheHAuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeUltcGwKLSNqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5PW9yZy5lY2xpcGUud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5qYXhwLkRvY3VtZW50QnVpbGRlckZhY3RvcnlJbXBsCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVHJhbnNwb3J0IGNsYXNzIHVzZWQgYnkgVURESTRKCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1vcmcudWRkaTRqLlRyYW5zcG9ydENsYXNzTmFtZT1vcmcudWRkaTRqLnRyYW5zcG9ydC5BcGFjaGVBeGlzVHJhbnNwb3J0Ci0KLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBMb2NhdGlvbiBvZiBYTUwgc2NoZW1hIGRvY3VtZW50cyByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIGRpcmVjdG9yeQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotd3NpLmFuYWx5emVyLnhtbHNjaGVtYS5zY2hlbWE9aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEueHNkCi13c2kuYW5hbHl6ZXIuc29hcC5zY2hlbWE9aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8KLXdzaS5hbmFseXplci53c2RsLnNjaGVtYT1odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLwotd3NpLmFuYWx5emVyLndzZGxzb2FwLnNjaGVtYT13c2kuYW5hbHl6ZXIud3NkbHNvYXAuc2NoZW1hCi13c2kuYW5hbHl6ZXIud3NkbG1pbWUuc2NoZW1hPWh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvbWltZS8KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvV1NETERvY3VtZW50LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL1dTRExEb2N1bWVudC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTAyOTJhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvV1NETERvY3VtZW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGw7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFJlYWRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwueHNkLklubGluZVNjaGVtYVZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFRhZ3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgaW50ZXJmYWNlIHRvIGEgc2luZ2xlIFdTREwgZG9jdW1lbnQuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMRG9jdW1lbnQKLXsKLSAgLyoqCi0gICAqIFdTREwgZG9jdW1lbnQgbG9jYXRpb24uCi0gICAqLwotICBwcm90ZWN0ZWQgU3RyaW5nIGZpbGVOYW1lID0gbnVsbDsKLQotICAvKioKLSAgICogRGVmaW5pdGlvbiBlbGVtZW50LgotICAgKi8KLSAgcHJvdGVjdGVkIERlZmluaXRpb24gZGVmaW5pdGlvbnMgPSBudWxsOwotCi0gIC8qKgotICAgKiBEb2N1bWVudCBlbGVtZW50Ci0gICAqLwotICBwcm90ZWN0ZWQgRG9jdW1lbnQgZG9jdW1lbnQgPSBudWxsOwotCi0gIC8qKgotICAgKiBXU0RMIGVsZW1lbnQgbGlzdCB3aXRoIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzLgotICAgKi8KLSAgcHJvdGVjdGVkIFdTRExFbGVtZW50TGlzdCB3c2RsRWxlbWVudExpc3QgPSBudWxsOwotCi0gIC8qKgotICAgKiBNYXAgb2YgdGFyZ2V0TmFtZXNwYWNlcyB0byB0aGUgY29ycmVzcG9uZGluZyBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU01vZGVsIG9mIHNjaGVtYSBlbGVtZW50cy4KLSAgICovCi0gIHByaXZhdGUgTWFwIHNjaGVtYXMgPSBuZXcgSGFzaE1hcCgpOwotCi0gIC8qKgotICAgKiBMaXN0IG9mIHNjaGVtYXMgdmFsaWRhdGlvbiBlcnJvcnMuCi0gICAqLwotICBwcml2YXRlIExpc3Qgc2NoZW1hc1ZhbGlkYXRpb25FcnJvcnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgLyoqCi0gICAqIFJlYWQgV1NETCBkb2N1bWVudCBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZS4KLSAgICogQHBhcmFtIGZpbGVOYW1lIFdTREwgZG9jdW1lbnQgbG9jYXRpb24uCi0gICAqIEB0aHJvd3MgV1NETEV4Y2VwdGlvbiBpZiBwcm9ibGVtIHJlYWRpbmcgV1NETCBkb2N1bWVudC4KLSAgICovCi0gIHB1YmxpYyBXU0RMRG9jdW1lbnQoU3RyaW5nIGZpbGVOYW1lKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIENsYXNzTG9hZGVyIGN1cnJlbnRMb2FkZXIgPSBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpOyAgIAotCi0gICAgdHJ5Ci0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKFdTRExEb2N1bWVudC5jbGFzcy5nZXRDbGFzc0xvYWRlcigpKTsgICAgCi0KLSAgICAgIC8vIEdldCB0aGUgV1NETFJlYWRlcgotICAgICAgV1NETFJlYWRlciB3c2RsUmVhZGVyID0gbmV3IFdTRExSZWFkZXJJbXBsKCk7Ci0KLSAgICAgIC8vIFNldCBmZWF0dXJlcwotICAgICAgd3NkbFJlYWRlci5zZXRGZWF0dXJlKGNvbS5pYm0ud3NkbC5Db25zdGFudHMuRkVBVFVSRV9WRVJCT1NFLCBmYWxzZSk7Ci0gICAgICAvLyBERUJVRzoKLSAgICAgIC8vd3NkbFJlYWRlci5zZXRGZWF0dXJlKGNvbS5pYm0ud3NkbC5Db25zdGFudHMuRkVBVFVSRV9WRVJCT1NFLCB0cnVlKTsKLSAgICAgIHdzZGxSZWFkZXIuc2V0RmVhdHVyZSgKLSAgICAgICAgY29tLmlibS53c2RsLkNvbnN0YW50cy5GRUFUVVJFX0lNUE9SVF9ET0NVTUVOVFMsCi0gICAgICAgIHRydWUpOwotICAgICAgLy8gREVCVUc6Ci0gICAgICAvL3dzZGxSZWFkZXIuc2V0RmVhdHVyZShjb20uaWJtLndzZGwuQ29uc3RhbnRzLkZFQVRVUkVfSU1QT1JUX0RPQ1VNRU5UUyx0cnVlKTsKLQotICAgICAgLy8gUGFyc2UgdGhlIFdTREwgZG9jdW1lbnQKLSAgICAgIGRvY3VtZW50ID0gWE1MVXRpbHMucGFyc2VYTUxEb2N1bWVudChmaWxlTmFtZSk7Ci0gICAgICB0aGlzLmRlZmluaXRpb25zID0gd3NkbFJlYWRlci5yZWFkV1NETChmaWxlTmFtZSwgZG9jdW1lbnQpOwotCi0gICAgICAvLyBTaW5jZSBpbmxpbmUgc2NoZW1hIHZhbGlkYXRvciBpcyB1c2VkIGJ5IHNldmVyYWwgYXNzZXJ0aW9ucywgdmFsaWRhdGUgYWxsCi0gICAgICAvLyBzY2hlbWFzIHJpZ2h0IGFmdGVyIFdTREwgdmFsaWRhdGlvbgotICAgICAgdmFsaWRhdGVTY2hlbWFzKCk7Ci0KLSAgICAgIC8vIEdldCB0aGUgbGluZSBhbmQgY29sdW1uIG51bWJlciByZWZlcmVuY2VzCi0gICAgICB0aGlzLndzZGxFbGVtZW50TGlzdCA9ICgoV1NETFJlYWRlckltcGwpIHdzZGxSZWFkZXIpLmdldEVsZW1lbnRMaXN0KCk7Ci0KLSAgICAgIC8vIERFQlVHOgotICAgICAgLy9TeXN0ZW0uZXJyLnByaW50bG4od3NkbEVsZW1lbnRMaXN0LnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGNjZSkKLSAgICB7Ci0gICAgICAvLyBTZXQgZWxlbWVudCBsaXN0IHRvIG51bGwKLSAgICAgIHRoaXMud3NkbEVsZW1lbnRMaXN0ID0gbnVsbDsKLSAgICB9Ci0gICAgZmluYWxseQotICAgIHsgCi0gICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihjdXJyZW50TG9hZGVyKTsKLSAgICB9ICAgIAotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBXU0RMIGRvY3VtZW50IGZyb20gZXhpc3RpbmcgRGVmaW5pdGlvbiBvYmplY3QuCi0gICAqIAotICAgKiBAcGFyYW0gZmlsZU5hbWUgV1NETCBkb2N1bWVudCBsb2NhdGlvbi4KLSAgICogQHBhcmFtIGRlZmluaXRpb25zIERlZmluaXRpb24gb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExEb2N1bWVudChTdHJpbmcgZmlsZU5hbWUsIERlZmluaXRpb24gZGVmaW5pdGlvbnMpCi0gIHsKLSAgICB0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgdGhpcy5kZWZpbml0aW9ucyA9IGRlZmluaXRpb25zOwotICAgIHRoaXMuZG9jdW1lbnQgPSBudWxsOwotICAgIHNjaGVtYXMuY2xlYXIoKTsKLSAgICBzY2hlbWFzVmFsaWRhdGlvbkVycm9ycy5jbGVhcigpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgV1NETCBkb2N1bWVudCBsb2NhdGlvbi4KLSAgICogQHJldHVybiBoZSBXU0RMIGRvY3VtZW50IGxvY2F0aW9uLgotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvbigpCi0gIHsKLSAgICAvLyBSZXR1cm4gdGhlIGRvY3VtZW50IGxvY2F0aW9uCi0gICAgcmV0dXJuIHRoaXMuZmlsZU5hbWU7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBkb2N1bWVudCBlbGVtZW50IG9mIHRoZSBXU0RMIGRvY3VtZW50LgotICAgKiBAcmV0dXJuIHRoZSBkb2N1bWVudCBlbGVtZW50Ci0gICAqLwotICBwdWJsaWMgRG9jdW1lbnQgZ2V0RG9jdW1lbnQoKQotICB7Ci0gICAgaWYgKGRvY3VtZW50ID09IG51bGwgJiYgZGVmaW5pdGlvbnMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgZG9jdW1lbnQgPSBYTUxVdGlscy5wYXJzZVhNTERvY3VtZW50KGRlZmluaXRpb25zLmdldERvY3VtZW50QmFzZVVSSSgpKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIHdzaWUpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBkb2N1bWVudDsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIGRlZmluaXRpb24gZWxlbWVudCBvZiB0aGUgV1NETCBkb2N1bWVudC4KLSAgICogQHJldHVybiB0aGUgZGVmaW5pdGlvbiBlbGVtZW50Ci0gICAqLwotICBwdWJsaWMgRGVmaW5pdGlvbiBnZXREZWZpbml0aW9ucygpCi0gIHsKLSAgICAvLyBSZXR1cm4gdGhlIGRlZmluaXRpb24gZWxlbWVudAotICAgIHJldHVybiBkZWZpbml0aW9uczsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgYWxsIHRoZSBwb3J0VHlwZSBlbGVtZW50cyBmcm9tIHRoZSBXU0RMIGRvY3VtZW50LgotICAgKiBAcmV0dXJuIHRoZSBsaXN0IG9mIHBvcnRUeXBlIGVsZW1lbnRzLgotICAgKi8KLSAgcHVibGljIFBvcnRUeXBlW10gZ2V0UG9ydFR5cGVzKCkKLSAgewotICAgIC8vIEdlbmVyYXRlIGFuIGFycmF5IG9mIFBvcnRUeXBlcyBmcm9tIHRoZSBQb3J0VHlwZSBtYXAgZm9yIHRoaXMgRGVmaW5pdGlvbgotICAgIHJldHVybiAoUG9ydFR5cGVbXSkgZGVmaW5pdGlvbnMuZ2V0UG9ydFR5cGVzKCkudmFsdWVzKCkudG9BcnJheSgKLSAgICAgIG5ldyBQb3J0VHlwZVswXSk7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGFsbCB0aGUgYmluZGluZyBlbGVtZW50cyBmcm9tIHRoZSBXU0RMIGRvY3VtZW50LgotICAgKiBAcmV0dXJuIHRoZSBsaXN0IG9mIGJpbmRpbmcgZWxlbWVudHMuCi0gICAqLwotICBwdWJsaWMgQmluZGluZ1tdIGdldEJpbmRpbmdzKCkKLSAgewotICAgIC8vIEdlbmVyYXRlIGFuIGFycmF5IG9mIEJpbmRpbmdzIGZyb20gdGhlIEJpbmRpbmcgbWFwIGZvciB0aGlzIERlZmluaXRpb24KLSAgICByZXR1cm4gKEJpbmRpbmdbXSkgZGVmaW5pdGlvbnMuZ2V0QmluZGluZ3MoKS52YWx1ZXMoKS50b0FycmF5KAotICAgICAgbmV3IEJpbmRpbmdbMF0pOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBhbGwgdGhlIHNlcnZpY2UgZWxlbWVudHMgZnJvbSB0aGUgV1NETCBkb2N1bWVudC4KLSAgICogQHJldHVybiB0aGUgbGlzdCBvZiBzZXJ2aWNlIGVsZW1lbnRzLgotICAgKi8KLSAgcHVibGljIFNlcnZpY2VbXSBnZXRTZXJ2aWNlcygpCi0gIHsKLSAgICAvLyBHZW5lcmF0ZSBhbiBhcnJheSBvZiBTZXJ2aWNlcyBmcm9tIHRoZSBTZXJ2aWNlIG1hcCBmb3IgdGhpcyBEZWZpbml0aW9uCi0gICAgcmV0dXJuIChTZXJ2aWNlW10pIGRlZmluaXRpb25zLmdldFNlcnZpY2VzKCkudmFsdWVzKCkudG9BcnJheSgKLSAgICAgIG5ldyBTZXJ2aWNlWzBdKTsKLSAgfQotCi0gIC8qIFJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCi0gICAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCN0b1N0cmluZygpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKLSAgewotICAgIC8vIFJldHVybiBzdHJpbmcKLSAgICByZXR1cm4gKGRlZmluaXRpb25zID09IG51bGwpCi0gICAgICA/ICJXU0RMIGRlZmluaXRpb24gZWxlbWVudCBub3QgZm91bmQuIgotICAgICAgOiBkZWZpbml0aW9ucy50b1N0cmluZygpOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgZWxlbWVudCBsaXN0LgotICAgKiBAcmV0dXJuIHRoZSBlbGVtZW50IGxpc3QuCi0gICAqLwotICBwdWJsaWMgV1NETEVsZW1lbnRMaXN0IGdldEVsZW1lbnRMaXN0KCkKLSAgewotICAgIHJldHVybiB0aGlzLndzZGxFbGVtZW50TGlzdDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgc2NoZW1hcyBtYXAuCi0gICAqIEByZXR1cm4gYSBtYXAgb2YgdGFyZ2V0TmFtZXNwYWNlIGF0dHJpYnV0ZSB2YWx1ZXMgb2YgdGhlIHNjaGVtYSBlbGVtZW50cwotICAgKiB0byB0aGUgY29ycmVzcG9uZGluZyBvcmcuYXBhY2hlLnhlcmNlcy54cy5YU01vZGVsIG9iamVjdCBvZiB0aGF0IHNjaGVtYS4KLSAgICovCi0gIHB1YmxpYyBNYXAgZ2V0U2NoZW1hcygpCi0gIHsKLSAgICByZXR1cm4gc2NoZW1hczsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBzY2hlbWFzIHZhbGlkYXRpb24gZXJyb3JzIGNhdXNlZCBieSB0aGUgdmFsaWRhdGVTY2hlbWFzKCkgcHJvY2VkdXJlLgotICAgKiBAcmV0dXJuIGEgbGlzdCBvZiBzY2hlbWFzIHZhbGlkYXRpb24gZXJyb3JzLgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0U2NoZW1hc1ZhbGlkYXRpb25FcnJvcnMoKQotICB7Ci0gICAgcmV0dXJuIHNjaGVtYXNWYWxpZGF0aW9uRXJyb3JzOyAKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGludm9rZXMgdGhlIGlubGluZSBzY2hlbWEgdmFsaWRhdG9yIHdoaWNoIHZhbGlkYXRlcyBldmVyeSBzY2hlbWEgZWxlbWVudCBvZiB0aGUgV1NETC4KLSAgICovCi0gIHByaXZhdGUgdm9pZCB2YWxpZGF0ZVNjaGVtYXMoKQotICB7Ci0gICAgc2NoZW1hcy5jbGVhcigpOwotICAgIHNjaGVtYXNWYWxpZGF0aW9uRXJyb3JzLmNsZWFyKCk7Ci0KLSAgICAvKiBJTkxJTkUgU0NIRU1BIFZBTElEQVRPUiAqLwotICAgIGlmIChkZWZpbml0aW9ucyAhPSBudWxsCi0gICAgICAmJiBkZWZpbml0aW9ucy5nZXRUeXBlcygpICE9IG51bGwKLSAgICAgICYmIGRlZmluaXRpb25zLmdldFR5cGVzKCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJbmxpbmVTY2hlbWFWYWxpZGF0b3Igc2NoZW1hVmFsaWRhdG9yID0gbmV3IElubGluZVNjaGVtYVZhbGlkYXRvcigpOwotCi0gICAgICAvLyBDb2xsZWN0aW5nIHNjaGVtYSdzIHBhcmVudCBlbGVtZW50cwotICAgICAgTGlzdCBwYXJlbnRzID0gbmV3IEFycmF5TGlzdCgyKTsKLSAgICAgIHBhcmVudHMuYWRkKGRlZmluaXRpb25zLmdldFR5cGVzKCkpOwotICAgICAgcGFyZW50cy5hZGQoZGVmaW5pdGlvbnMpOwotICAgICAgLy8gR29pbmcgdGhyb3VnaCBhbGwgdGhlIEV4dGVuc2liaWxpdHlFbGVtZW50UyBvZiB3c2RsOnR5cGVzCi0gICAgICAvLyBzaW5jZSB0aGV5IGFyZSBwb3RlbnRpYWwgc2NoZW1hcwotICAgICAgLy8gU2VlIEphdmEgQVBJcyBmb3IgV1NETCBWMS4wIChKU1IxMTApLCBzZWN0aW9uIDQKLSAgICAgIEl0ZXJhdG9yIGkgPSB0aGlzLmRlZmluaXRpb25zLmdldFR5cGVzKCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWwgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGkubmV4dCgpOwotICAgICAgICBpZiAoZXh0RWwuZ2V0RWxlbWVudFR5cGUoKS5lcXVhbHMoWE1MVGFncy5FTEVNX1hTRF9TQ0hFTUEpKQotICAgICAgICB7Ci0gICAgICAgICAgTWFwIG1hcCA9IG51bGw7Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgLy8gVmFsaWRhdGluZyBzY2hlbWEgZWxlbWVudAotICAgICAgICAgICAgbWFwID0gc2NoZW1hVmFsaWRhdG9yLnZhbGlkYXRlKGV4dEVsLCBwYXJlbnRzLCBmaWxlTmFtZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBZGRpbmcgYW4gZXhjZXB0aW9uIHRvIHRoZSBlcnJvcnMgbGlzdAotICAgICAgICAgICAgc2NoZW1hc1ZhbGlkYXRpb25FcnJvcnMuYWRkKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAobWFwICE9IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gQWRkaW5nIHJldHVybmVkIFhTTW9kZWwgdG8gc2NoZW1hcyBtYXAKLSAgICAgICAgICAgIHNjaGVtYXMucHV0QWxsKG1hcCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSAgICAKLSAgfQotCi0gIC8qKgotICAgKiBDb21tYW5kIGxpbmUgaW50ZXJmYWNlLgotICAgKiBAcGFyYW0gYXJncyBmcm9tIGNvbW1hbmQgbGluZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50ID0gbmV3IFdTRExEb2N1bWVudChhcmdzWzBdKTsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih3c2RsRG9jdW1lbnQudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUudG9TdHJpbmcoKTsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotCi0gICAgU3lzdGVtLmV4aXQoMCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvV1NETEVsZW1lbnRMaXN0LmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL1dTRExFbGVtZW50TGlzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWE3N2Q4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvV1NETEVsZW1lbnRMaXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuZG9tLkVsZW1lbnRMb2NhdGlvbjsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIG1haW50YWlucyBhIFdTREwgZWxlbWVudCBsaXN0LgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgV1NETEVsZW1lbnRMaXN0Ci17Ci0gIC8qKgotICAgKiBMaXN0IG9mIFdTREwgZWxlbWVudHMgd2l0aCB0aGVpciBsb2NhdGlvbi4KLSAgICovCi0gIEhhc2hNYXAgd3NkbEVsZW1lbnRMaXN0ID0gbmV3IEhhc2hNYXAoKTsKLQotICAvKioKLSAgICogV1NETCBlbGVtZW50IGxvY2F0b3IuCi0gICAqLwotICBwdWJsaWMgV1NETEVsZW1lbnRMaXN0KCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCBlbGVtZW50IHdpdGggbG9jYXRpb24gaW5mb3JtYXRpb24uCi0gICAqIEBwYXJhbSB3c2RsRWxlbWVudCAgICAgIGEgV1NETCBlbGVtZW50IGFydGlmYWN0LgotICAgKiBAcGFyYW0gZWxlbWVudExvY2F0aW9uICB0aGUgbG9jYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBlbGVtZW50LgotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkRWxlbWVudChPYmplY3Qgd3NkbEVsZW1lbnQsIEVsZW1lbnRMb2NhdGlvbiBlbGVtZW50TG9jYXRpb24pCi0gIHsKLSAgICB0aGlzLndzZGxFbGVtZW50TGlzdC5wdXQod3NkbEVsZW1lbnQsIGVsZW1lbnRMb2NhdGlvbik7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGVsZW1lbnQgbG9jYXRpb24uCi0gICAqIEBwYXJhbSB3c2RsRWxlbWVudCAgYSBXU0RMIGVsZW1lbnQgYXJ0aWZhY3QuCi0gICAqIEByZXR1cm4gdGhlIGxvY2F0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgZWxlbWVudC4KLSAgICovCi0gIHB1YmxpYyBFbGVtZW50TG9jYXRpb24gZ2V0RWxlbWVudExvY2F0aW9uKE9iamVjdCB3c2RsRWxlbWVudCkKLSAgewotICAgIHJldHVybiAoRWxlbWVudExvY2F0aW9uKSB0aGlzLndzZGxFbGVtZW50TGlzdC5nZXQod3NkbEVsZW1lbnQpOwotICB9Ci0KLSAgLyogUmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I3RvU3RyaW5nKCkKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgU3RyaW5nIHN0cmluZyA9ICJXU0RMRWxlbWVudExpc3Q6IFxuIjsKLQotICAgIC8vIEdldCBsaXN0IGVudHJpZXMgKHZhbHVlcz8pCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSB0aGlzLndzZGxFbGVtZW50TGlzdC5rZXlTZXQoKS5pdGVyYXRvcigpOwotCi0gICAgLy8gQWRkIGVhY2ggZW50cnkgaW4gdGhlIGxpc3QgdG8gdGhlIHN0cmluZwotICAgIEVsZW1lbnRMb2NhdGlvbiB3c2RsRWxlbWVudExvY2F0aW9uOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgT2JqZWN0IHdzZGxFbGVtZW50ID0gaXRlcmF0b3IubmV4dCgpOwotCi0gICAgICBpZiAod3NkbEVsZW1lbnQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgc3RyaW5nICs9ICIgICIgKyB3c2RsRWxlbWVudC5nZXRDbGFzcygpLmdldE5hbWUoKSArICI6ICI7Ci0gICAgICAgIGlmICgod3NkbEVsZW1lbnRMb2NhdGlvbiA9Ci0gICAgICAgICAgKEVsZW1lbnRMb2NhdGlvbikgd3NkbEVsZW1lbnRMaXN0LmdldCh3c2RsRWxlbWVudCkpCi0gICAgICAgICAgPT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgIHN0cmluZyArPSAibnVsbFxuIjsKLSAgICAgICAgfQotCi0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHN0cmluZyArPSAiICAiCi0gICAgICAgICAgICArIHdzZGxFbGVtZW50LmdldENsYXNzKCkuZ2V0TmFtZSgpCi0gICAgICAgICAgICArICI6ICIKLSAgICAgICAgICAgICsgd3NkbEVsZW1lbnRMb2NhdGlvbi5nZXRMaW5lTnVtYmVyKCkKLSAgICAgICAgICAgICsgIiwgIgotICAgICAgICAgICAgKyB3c2RsRWxlbWVudExvY2F0aW9uLmdldENvbHVtbk51bWJlcigpCi0gICAgICAgICAgICArICJcbiI7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gc3RyaW5nOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL1dTRExSZWFkZXJJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL1dTRExSZWFkZXJJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NmM0YzguLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC9XU0RMUmVhZGVySW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODEzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbDsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5GYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkltcG9ydDsKLWltcG9ydCBqYXZheC53c2RsLklucHV0OwotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk91dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmZhY3RvcnkuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLmRvbS5FbGVtZW50SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmRvbS5FbGVtZW50TG9jYXRpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLQotaW1wb3J0IGNvbS5pYm0ud3NkbC5Db25zdGFudHM7Ci1pbXBvcnQgY29tLmlibS53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYUNvbnN0YW50czsKLWltcG9ydCBjb20uaWJtLndzZGwudXRpbC5TdHJpbmdVdGlsczsKLWltcG9ydCBjb20uaWJtLndzZGwudXRpbC54bWwuRE9NVXRpbHM7Ci1pbXBvcnQgY29tLmlibS53c2RsLnV0aWwueG1sLlFOYW1lVXRpbHM7Ci1pbXBvcnQgY29tLmlibS53c2RsLnV0aWwueG1sLlhQYXRoVXRpbHM7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBpcyBhIHNwZWNpYWxpemF0aW9uIG9mIGNvbS5pYm0ud3NkbC54bWwuV1NETFJlYWRlckltcGwgaW4gV1NETDRKLgotICogCi0gKiBAdmVyc2lvbiAxLjAuMQotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtICAocGV0ZXJickB1cy5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgV1NETFJlYWRlckltcGwgZXh0ZW5kcyBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsCi17Ci0gIC8vIFdTREwgZWxlbWVudCBsaXN0LgotICBwcm90ZWN0ZWQgV1NETEVsZW1lbnRMaXN0IHdzZGxFbGVtZW50TGlzdCA9IG5ldyBXU0RMRWxlbWVudExpc3QoKTsKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgY29tLmlibS53c2RsLnhtbC5XU0RMUmVhZGVySW1wbCNwYXJzZURlZmluaXRpb25zKGphdmEubGFuZy5TdHJpbmcsIG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmEudXRpbC5NYXApCi0gICAqLwotICBwcm90ZWN0ZWQgRGVmaW5pdGlvbiBwYXJzZURlZmluaXRpb25zKAotICAgIFN0cmluZyBkb2N1bWVudEJhc2VVUkksCi0gICAgRWxlbWVudCBkZWZFbCwKLSAgICBNYXAgaW1wb3J0ZWREZWZzKQotICAgIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLQkgIERlZmluaXRpb24gZGVmID0gbnVsbDsKLQlDbGFzc0xvYWRlciBjdXJyZW50TG9hZGVyID0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKTsgICAKLQl0cnkKLQl7Ci0gICAJICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihXU0RMUmVhZGVySW1wbC5jbGFzcy5nZXRDbGFzc0xvYWRlcigpKTsgICAKLQkKLSAgICAgIGRlZiA9Ci0gICAgICBzdXBlci5wYXJzZURlZmluaXRpb25zKGRvY3VtZW50QmFzZVVSSSwgZGVmRWwsIGltcG9ydGVkRGVmcyk7Ci0KLSAgICAvLyBUcnkgdG8gYWRkIGVsZW1lbnQgdG8gbGlzdAotICAgIGFkZEVsZW1lbnRUb0xpc3QoZGVmRWwsIGRlZik7Ci0KLQotCX0KLWNhdGNoIChFeGNlcHRpb24gZSkKLQl7Ci0JfQotICAgIGZpbmFsbHkKLSAgICB7IAotICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5zZXRDb250ZXh0Q2xhc3NMb2FkZXIoY3VycmVudExvYWRlcik7Ci0gICAgfSAgCi0gICAgcmV0dXJuIGRlZjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlSW1wb3J0KG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmF4LndzZGwuRGVmaW5pdGlvbiwgamF2YS51dGlsLk1hcCkKLSAgICovCi0gIHByb3RlY3RlZCBJbXBvcnQgcGFyc2VJbXBvcnQoRWxlbWVudCBlbGVtZW50LCBEZWZpbml0aW9uIGRlZmluaXRpb24sIE1hcCBtYXApCi0gICAgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIC8qYm9vbGVhbiB3YXNFeCA9IGZhbHNlOwotICAgIGlmIChkZWYuZ2V0RG9jdW1lbnRCYXNlVVJJKCkhPW51bGwpewotICAgIAlGaWxlIGYgPSBuZXcgRmlsZShkZWYuZ2V0RG9jdW1lbnRCYXNlVVJJKCkpOwotICAgIAlpZiAoZi5nZXRQYXJlbnQoKSE9bnVsbCAmJiBpbXBvcnRFbC5nZXRBdHRyaWJ1dGUoImxvY2F0aW9uIikhPW51bGwpewkJCi0gICAgCSAgIGYgPSBuZXcgRmlsZShmLmdldFBhcmVudCgpKyIvIitpbXBvcnRFbC5nZXRBdHRyaWJ1dGUoImxvY2F0aW9uIikpOwotICAgIAkgICAKLSAgICAJfQotICAgIH0gZWxzZSB3YXNFeCA9IGZhbHNlOwotICAgICAgCi0gICAgSW1wb3J0IGltcG9ydERlZiA9IHN1cGVyLnBhcnNlSW1wb3J0KGltcG9ydEVsLCBkZWYsIGltcG9ydGVkRGVmcyk7Ci0gICAgCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KGltcG9ydEVsLCBpbXBvcnREZWYpOwotICAgIAotICAgIHJldHVybiBpbXBvcnREZWY7Ki8KLQotICAgIC8qSW1wb3J0IGltcG9ydDEgPSBkZWZpbml0aW9uLmNyZWF0ZUltcG9ydCgpOwotICAgIFN0cmluZyBzID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKGVsZW1lbnQsICJuYW1lc3BhY2UiKTsKLSAgICBTdHJpbmcgczEgPSBET01VdGlscy5nZXRBdHRyaWJ1dGUoZWxlbWVudCwgImxvY2F0aW9uIik7Ci0gICAgaWYgKHMgIT0gbnVsbCkKLSAgICAJaW1wb3J0MS5zZXROYW1lc3BhY2VVUkkocyk7Ci0gICAgaWYgKHMxICE9IG51bGwpIHsKLSAgICAJaWYgKGltcG9ydERvY3VtZW50cykgewotICAgIAkJU3RyaW5nIHMyID0gZGVmaW5pdGlvbi5nZXREb2N1bWVudEJhc2VVUkkoKTsKLSAgICAJCXRyeSB7Ci0gICAgCi0gICAgCQkJVVJMIHVybDEgPSBzMiA9PSBudWxsID8gbnVsbCA6IFN0cmluZ1V0aWxzLmdldFVSTChudWxsLCBzMik7Ci0gICAgCQkJVVJMIHVybCA9IFN0cmluZ1V0aWxzLmdldFVSTCh1cmwxLCBzMSk7Ci0gICAgCQkJSW5wdXRTdHJlYW0gaW5wdXRzdHJlYW0gPQotICAgIAkJCQlTdHJpbmdVdGlscy5nZXRDb250ZW50QXNJbnB1dFN0cmVhbSh1cmwpOwotICAgIAkJCWlucHV0c3RyZWFtLmNsb3NlKCk7Ci0gICAgCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgewotICAgIAkJCS8vaW1wb3J0MS5zZXRMb2NhdGlvblVSSShudWxsKTsKLSAgICAJCQlhZGRFbGVtZW50VG9MaXN0KGVsZW1lbnQsIGltcG9ydDEpOwotICAgIAkJCXJldHVybiBpbXBvcnQxOwotICAgIAkJfSBjYXRjaCAoVGhyb3dhYmxlIGV4KSB7Ci0gICAgCQkJdGhyb3cgbmV3IFdTRExFeGNlcHRpb24oCi0gICAgCQkJCSJPVEhFUl9FUlJPUiIsCi0gICAgCQkJCSJVbmFibGUgdG8gcmVzb2x2ZSBpbXBvcnRlZCBkb2N1bWVudCBhdCAnIiArIHMxICsgIicuIiwKLSAgICAJCQkJZXgpOwotICAgIAkJfQotICAgIAotICAgIAl9Ci0gICAgfQotICAgIEltcG9ydCBpbXBvcnREZWYgPSBzdXBlci5wYXJzZUltcG9ydChlbGVtZW50LCBkZWZpbml0aW9uLCBtYXApOwotICAgIGFkZEVsZW1lbnRUb0xpc3QoZWxlbWVudCwgaW1wb3J0RGVmKTsqLwotICAgIEltcG9ydCBpbXBvcnQxID0gZGVmaW5pdGlvbi5jcmVhdGVJbXBvcnQoKTsKLSAgICBTdHJpbmcgcyA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZShlbGVtZW50LCAibmFtZXNwYWNlIik7Ci0gICAgU3RyaW5nIHMxID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlKGVsZW1lbnQsICJsb2NhdGlvbiIpOwotICAgIGlmIChzICE9IG51bGwpCi0gICAgICBpbXBvcnQxLnNldE5hbWVzcGFjZVVSSShzKTsKLSAgICAvLyBBREQ6IGNoZWNrICJsb2NhdGlvbiIgYXR0cmlidXRlIGZvciBlbXB0eSAKLSAgICAvLyBzdHJpbmcgdG8gcHJldmVudCBzZWxmLWRlZmVuaXRpb24gYXNzaWduaW5nCi0gICAgaWYgKChzMSAhPSBudWxsKSAmJiAoczEubGVuZ3RoKCkgPiAwKSkKLSAgICB7Ci0gICAgICBpbXBvcnQxLnNldExvY2F0aW9uVVJJKHMxKTsKLSAgICAgIGlmIChpbXBvcnREb2N1bWVudHMpCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIHMyID0gZGVmaW5pdGlvbi5nZXREb2N1bWVudEJhc2VVUkkoKTsKLSAgICAgICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24xID0gbnVsbDsKLSAgICAgICAgICBJbnB1dFN0cmVhbSBpbnB1dHN0cmVhbSA9IG51bGw7Ci0gICAgICAgICAgSW5wdXRTb3VyY2UgaW5wdXRzb3VyY2UgPSBudWxsOwotICAgICAgICAgIFVSTCB1cmwgPSBudWxsOwotICAgICAgICAgIGlmIChsb2MgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpbnB1dHNvdXJjZSA9IGxvYy5nZXRJbXBvcnRJbnB1dFNvdXJjZShzMiwgczEpOwotICAgICAgICAgICAgU3RyaW5nIHMzID0gbG9jLmdldExhdGVzdEltcG9ydFVSSSgpOwotICAgICAgICAgICAgZGVmaW5pdGlvbjEgPSAoRGVmaW5pdGlvbikgbWFwLmdldChzMyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBVUkwgdXJsMSA9IHMyID09IG51bGwgPyBudWxsIDogU3RyaW5nVXRpbHMuZ2V0VVJMKG51bGwsIHMyKTsKLSAgICAgICAgICAgIHVybCA9IFN0cmluZ1V0aWxzLmdldFVSTCh1cmwxLCBzMSk7Ci0gICAgICAgICAgICBkZWZpbml0aW9uMSA9IChEZWZpbml0aW9uKSBtYXAuZ2V0KHVybC50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGlmIChkZWZpbml0aW9uMSA9PSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICB0cnkKLSAgICAgICAgICAgICAgewotCi0gICAgICAgICAgICAgICAgaW5wdXRzdHJlYW0gPSB1cmwub3BlblN0cmVhbSgpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBleCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vaW1wb3J0MS5zZXRMb2NhdGlvblVSSShudWxsKTsKLSAgICAgICAgICAgICAgICBhZGRFbGVtZW50VG9MaXN0KGVsZW1lbnQsIGltcG9ydDEpOwotICAgICAgICAgICAgICAgIHJldHVybiBpbXBvcnQxOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGlmIChpbnB1dHN0cmVhbSAhPSBudWxsKQotICAgICAgICAgICAgICAgIGlucHV0c291cmNlID0gbmV3IElucHV0U291cmNlKGlucHV0c3RyZWFtKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGRlZmluaXRpb24xID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKGlucHV0c291cmNlID09IG51bGwpCi0gICAgICAgICAgICAgIHRocm93IG5ldyBXU0RMRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICJPVEhFUl9FUlJPUiIsCi0gICAgICAgICAgICAgICAgIlVuYWJsZSB0byBsb2NhdGUgaW1wb3J0ZWQgZG9jdW1lbnQgYXQgJyIKLSAgICAgICAgICAgICAgICAgICsgczEKLSAgICAgICAgICAgICAgICAgICsgIiciCi0gICAgICAgICAgICAgICAgICArIChzMiAhPSBudWxsID8gIiwgcmVsYXRpdmUgdG8gJyIgKyBzMiArICInLiIgOiAiLiIpKTsKLSAgICAgICAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gbnVsbDsKLSAgICAgICAgICAgIHRyeQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBkb2N1bWVudCA9IGdldERvY3VtZW50KGlucHV0c291cmNlLCBzMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaCAoV1NETEV4Y2VwdGlvbiBleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgYWRkRWxlbWVudFRvTGlzdChlbGVtZW50LCBpbXBvcnQxKTsKLSAgICAgICAgICAgICAgcmV0dXJuIGltcG9ydDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5wdXRzdHJlYW0gIT0gbnVsbCkKLSAgICAgICAgICAgICAgaW5wdXRzdHJlYW0uY2xvc2UoKTsKLSAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudDIgPSBkb2N1bWVudC5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ERUZJTklUSU9OUywgZWxlbWVudDIpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvL2lmICh2ZXJib3NlKQotICAgICAgICAgICAgICAvLyAgU3lzdGVtLm91dC5wcmludGxuKAotICAgICAgICAgICAgICAvLyAgICAiUmV0cmlldmluZyBkb2N1bWVudCBhdCAnIgotICAgICAgICAgICAgICAvLyAgICAgICsgczEKLSAgICAgICAgICAgICAgLy8gICAgICArICInIgotICAgICAgICAgICAgICAvLyAgICAgICsgKHMyICE9IG51bGwgPyAiLCByZWxhdGl2ZSB0byAnIiArIHMyICsgIicuIiA6ICIuIikpOwotICAgICAgICAgICAgICBTdHJpbmcgczQgPQotICAgICAgICAgICAgICAgIGxvYyA9PSBudWxsCi0gICAgICAgICAgICAgICAgICA/IHVybCA9PSBudWxsCi0gICAgICAgICAgICAgICAgICA/IHMxCi0gICAgICAgICAgICAgICAgICA6IHVybC50b1N0cmluZygpIDogbG9jLmdldExhdGVzdEltcG9ydFVSSSgpOwotICAgICAgICAgICAgICBkZWZpbml0aW9uMSA9IHJlYWRXU0RMKHM0LCBlbGVtZW50MiwgbWFwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgUU5hbWUgcW5hbWUgPSBRTmFtZVV0aWxzLm5ld1FOYW1lKGVsZW1lbnQyKTsKLSAgICAgICAgICAgICAgaWYgKFNjaGVtYUNvbnN0YW50cy5YU0RfUU5BTUVfTElTVC5jb250YWlucyhxbmFtZSkpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBXU0RMRmFjdG9yeSB3c2RsZmFjdG9yeSA9Ci0gICAgICAgICAgICAgICAgICBmYWN0b3J5SW1wbE5hbWUgPT0gbnVsbAotICAgICAgICAgICAgICAgICAgICA/IFdTRExGYWN0b3J5Lm5ld0luc3RhbmNlKCkKLSAgICAgICAgICAgICAgICAgICAgOiBXU0RMRmFjdG9yeS5uZXdJbnN0YW5jZShmYWN0b3J5SW1wbE5hbWUpOwotICAgICAgICAgICAgICAgIGRlZmluaXRpb24xID0gd3NkbGZhY3RvcnkubmV3RGVmaW5pdGlvbigpOwotICAgICAgICAgICAgICAgIGlmIChleHRSZWcgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24xLnNldEV4dGVuc2lvblJlZ2lzdHJ5KGV4dFJlZyk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHM1ID0KLSAgICAgICAgICAgICAgICAgIGxvYyA9PSBudWxsCi0gICAgICAgICAgICAgICAgICAgID8gdXJsID09IG51bGwKLSAgICAgICAgICAgICAgICAgICAgPyBzMQotICAgICAgICAgICAgICAgICAgICA6IHVybC50b1N0cmluZygpIDogbG9jLmdldExhdGVzdEltcG9ydFVSSSgpOwotICAgICAgICAgICAgICAgIGRlZmluaXRpb24xLnNldERvY3VtZW50QmFzZVVSSShzNSk7Ci0gICAgICAgICAgICAgICAgLyogRG9uJ3QgYWRkIHR5cGVzIGVsZW1lbnQgc2luY2UgaXQgZG9lc24ndCBleGlzdC4gIEFkZGluZyBpdCBjYXVzZXMgcHJvYmxlbXMKLSAgICAgICAgICAgICAgICAgKiBzaW5jZSBpdCB3aWxsIGFkZCBhIHR5cGVzIGVsZW1lbnQgZm9yIHByb2Nlc3NpbmcgdGhhdCBkb2VzIG5vdCBleGlzdC4KLSAgICAgICAgICAgICAgICBUeXBlcyB0eXBlcyA9IGRlZmluaXRpb24xLmNyZWF0ZVR5cGVzKCk7Ci0gICAgICAgICAgICAgICAgVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50IHVua25vd25leHRlbnNpYmlsaXR5ZWxlbWVudCA9Ci0gICAgICAgICAgICAgICAgCW5ldyBVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICAgICAgICAgICAgICB1bmtub3duZXh0ZW5zaWJpbGl0eWVsZW1lbnQuc2V0RWxlbWVudChlbGVtZW50Mik7Ci0gICAgICAgICAgICAgICAgdHlwZXMuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoCi0gICAgICAgICAgICAgICAgCXVua25vd25leHRlbnNpYmlsaXR5ZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgZGVmaW5pdGlvbjEuc2V0VHlwZXModHlwZXMpOwotICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGRlZmluaXRpb24xICE9IG51bGwpCi0gICAgICAgICAgICBpbXBvcnQxLnNldERlZmluaXRpb24oZGVmaW5pdGlvbjEpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIHdzZGxleGNlcHRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICB3c2RsZXhjZXB0aW9uLnNldExvY2F0aW9uKFhQYXRoVXRpbHMuZ2V0WFBhdGhFeHByRnJvbU5vZGUoZWxlbWVudCkpOwotICAgICAgICAgIHRocm93IHdzZGxleGNlcHRpb247Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKFRocm93YWJsZSB0aHJvd2FibGUpCi0gICAgICAgIHsKLSAgICAgICAgICB0aHJvdyBuZXcgV1NETEV4Y2VwdGlvbigKLSAgICAgICAgICAgICJPVEhFUl9FUlJPUiIsCi0gICAgICAgICAgICAiVW5hYmxlIHRvIHJlc29sdmUgaW1wb3J0ZWQgZG9jdW1lbnQgYXQgJyIgKyBzMSArICInLiIsCi0gICAgICAgICAgICB0aHJvd2FibGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoRWxlbWVudCBlbGVtZW50MSA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KGVsZW1lbnQpOwotICAgICAgZWxlbWVudDEgIT0gbnVsbDsKLSAgICAgIGVsZW1lbnQxID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KGVsZW1lbnQxKSkKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCBlbGVtZW50MSkpCi0gICAgICAgIGltcG9ydDEuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoZWxlbWVudDEpOwotICAgICAgZWxzZQotICAgICAgICBET01VdGlscy50aHJvd1dTRExFeGNlcHRpb24oZWxlbWVudDEpOwotCi0gICAgcmV0dXJuIGltcG9ydDE7Ci0KLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlVHlwZXMob3JnLnczYy5kb20uRWxlbWVudCwgamF2YXgud3NkbC5EZWZpbml0aW9uKQotICAgKi8KLSAgcHJvdGVjdGVkIFR5cGVzIHBhcnNlVHlwZXMoRWxlbWVudCB0eXBlc0VsLCBEZWZpbml0aW9uIGRlZikKLSAgICB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgVHlwZXMgdHlwZXMgPSBzdXBlci5wYXJzZVR5cGVzKHR5cGVzRWwsIGRlZik7Ci0KLSAgICAvLyBUcnkgdG8gYWRkIGVsZW1lbnQgdG8gbGlzdAotICAgIGFkZEVsZW1lbnRUb0xpc3QodHlwZXNFbCwgdHlwZXMpOwotCi0gICAgcmV0dXJuIHR5cGVzOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGNvbS5pYm0ud3NkbC54bWwuV1NETFJlYWRlckltcGwjcGFyc2VCaW5kaW5nKG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmF4LndzZGwuRGVmaW5pdGlvbikKLSAgICovCi0gIHByb3RlY3RlZCBCaW5kaW5nIHBhcnNlQmluZGluZyhFbGVtZW50IGJpbmRpbmdFbCwgRGVmaW5pdGlvbiBkZWYpCi0gICAgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIEJpbmRpbmcgYmluZGluZyA9IHN1cGVyLnBhcnNlQmluZGluZyhiaW5kaW5nRWwsIGRlZik7Ci0KLSAgICAvLyBUcnkgdG8gYWRkIGVsZW1lbnQgdG8gbGlzdAotICAgIGFkZEVsZW1lbnRUb0xpc3QoYmluZGluZ0VsLCBiaW5kaW5nKTsKLQotICAgIHJldHVybiBiaW5kaW5nOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGNvbS5pYm0ud3NkbC54bWwuV1NETFJlYWRlckltcGwjcGFyc2VCaW5kaW5nT3BlcmF0aW9uKG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmF4LndzZGwuUG9ydFR5cGUsIGphdmF4LndzZGwuRGVmaW5pdGlvbikKLSAgICovCi0gIHByb3RlY3RlZCBCaW5kaW5nT3BlcmF0aW9uIHBhcnNlQmluZGluZ09wZXJhdGlvbigKLSAgICBFbGVtZW50IGJpbmRpbmdPcGVyYXRpb25FbCwKLSAgICBQb3J0VHlwZSBwb3J0VHlwZSwKLSAgICBEZWZpbml0aW9uIGRlZikKLSAgICB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gbnVsbDsKLQotICAgIC8vIFRoZSBmb2xsb3cgdHJ5LWNhdGNoIHdhcyBhZGRlZCB0byBkZXRlY3Qgd2hlbiBhIGR1cGxpY2F0ZSBvcGVyYXRpb24gbmFtZSB3YXMgZGV0ZWN0ZWQKLSAgICB0cnkKLSAgICB7Ci0gICAgICBiaW5kaW5nT3BlcmF0aW9uID0KLSAgICAgICAgc3VwZXIucGFyc2VCaW5kaW5nT3BlcmF0aW9uKGJpbmRpbmdPcGVyYXRpb25FbCwgcG9ydFR5cGUsIGRlZik7Ci0gICAgfQotCi0gICAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpCi0gICAgewotICAgICAgaWYgKGlhZS5nZXRNZXNzYWdlKCkuc3RhcnRzV2l0aCgiRHVwbGljYXRlIikpCi0gICAgICB7Ci0gICAgICAgIGJpbmRpbmdPcGVyYXRpb24gPQotICAgICAgICAgIHBhcnNlQmluZGluZ09wZXJhdGlvbldpdGhEdXBsaWNhdGVOYW1lcygKLSAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb25FbCwKLSAgICAgICAgICAgIHBvcnRUeXBlLAotICAgICAgICAgICAgZGVmKTsKLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICB0aHJvdyBpYWU7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBpZiAoYmluZGluZ09wZXJhdGlvbiAhPSBudWxsKQotICAgIHsKLSAgICAgIGFkZEVsZW1lbnRUb0xpc3QoYmluZGluZ09wZXJhdGlvbkVsLCBiaW5kaW5nT3BlcmF0aW9uKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYmluZGluZ09wZXJhdGlvbjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlQmluZGluZ0lucHV0KG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmF4LndzZGwuRGVmaW5pdGlvbikKLSAgICovCi0gIHByb3RlY3RlZCBCaW5kaW5nSW5wdXQgcGFyc2VCaW5kaW5nSW5wdXQoCi0gICAgRWxlbWVudCBiaW5kaW5nSW5wdXRFbCwKLSAgICBEZWZpbml0aW9uIGRlZikKLSAgICB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IHN1cGVyLnBhcnNlQmluZGluZ0lucHV0KGJpbmRpbmdJbnB1dEVsLCBkZWYpOwotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KGJpbmRpbmdJbnB1dEVsLCBiaW5kaW5nSW5wdXQpOwotCi0gICAgcmV0dXJuIGJpbmRpbmdJbnB1dDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlQmluZGluZ091dHB1dChvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZheC53c2RsLkRlZmluaXRpb24pCi0gICAqLwotICBwcm90ZWN0ZWQgQmluZGluZ091dHB1dCBwYXJzZUJpbmRpbmdPdXRwdXQoCi0gICAgRWxlbWVudCBiaW5kaW5nT3V0cHV0RWwsCi0gICAgRGVmaW5pdGlvbiBkZWYpCi0gICAgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9Ci0gICAgICBzdXBlci5wYXJzZUJpbmRpbmdPdXRwdXQoYmluZGluZ091dHB1dEVsLCBkZWYpOwotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KGJpbmRpbmdPdXRwdXRFbCwgYmluZGluZ091dHB1dCk7Ci0KLSAgICByZXR1cm4gYmluZGluZ091dHB1dDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlQmluZGluZ0ZhdWx0KG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmF4LndzZGwuRGVmaW5pdGlvbikKLSAgICovCi0gIHByb3RlY3RlZCBCaW5kaW5nRmF1bHQgcGFyc2VCaW5kaW5nRmF1bHQoCi0gICAgRWxlbWVudCBiaW5kaW5nRmF1bHRFbCwKLSAgICBEZWZpbml0aW9uIGRlZikKLSAgICB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdCA9IHN1cGVyLnBhcnNlQmluZGluZ0ZhdWx0KGJpbmRpbmdGYXVsdEVsLCBkZWYpOwotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KGJpbmRpbmdGYXVsdEVsLCBiaW5kaW5nRmF1bHQpOwotCi0gICAgcmV0dXJuIGJpbmRpbmdGYXVsdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlTWVzc2FnZShvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZheC53c2RsLkRlZmluaXRpb24pCi0gICAqLwotICBwcm90ZWN0ZWQgTWVzc2FnZSBwYXJzZU1lc3NhZ2UoRWxlbWVudCBtc2dFbCwgRGVmaW5pdGlvbiBkZWYpCi0gICAgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIE1lc3NhZ2UgbXNnID0gc3VwZXIucGFyc2VNZXNzYWdlKG1zZ0VsLCBkZWYpOwotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KG1zZ0VsLCBtc2cpOwotCi0gICAgcmV0dXJuIG1zZzsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlUGFydChvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZheC53c2RsLkRlZmluaXRpb24pCi0gICAqLwotICBwcm90ZWN0ZWQgUGFydCBwYXJzZVBhcnQoRWxlbWVudCBwYXJ0RWwsIERlZmluaXRpb24gZGVmKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgLy9QYXJ0IHBhcnQgPSBzdXBlci5wYXJzZVBhcnQocGFydEVsLCBkZWYpOwotCi0gICAgUGFydCBwYXJ0ID0gZGVmLmNyZWF0ZVBhcnQoKTsKLSAgICBTdHJpbmcgbmFtZSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZShwYXJ0RWwsIENvbnN0YW50cy5BVFRSX05BTUUpOwotCi0gICAgLy8gV1MtSTogVGhlIHRyeS1jYXRjaCB3YXMgYWRkZWQgZm9yIFdTSTI0MTYKLSAgICBRTmFtZSBlbGVtZW50TmFtZTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIGVsZW1lbnROYW1lID0KLSAgICAgICAgRE9NVXRpbHMuZ2V0UXVhbGlmaWVkQXR0cmlidXRlVmFsdWUoCi0gICAgICAgICAgcGFydEVsLAotICAgICAgICAgIENvbnN0YW50cy5BVFRSX0VMRU1FTlQsCi0gICAgICAgICAgQ29uc3RhbnRzLkVMRU1fTUVTU0FHRSwKLSAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICBkZWYpOwotICAgIH0KLQotICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIHdlKQotICAgIHsKLSAgICAgIFN0cmluZyBwcmVmaXhlZFZhbHVlID0KLSAgICAgICAgRE9NVXRpbHMuZ2V0QXR0cmlidXRlKHBhcnRFbCwgQ29uc3RhbnRzLkFUVFJfRUxFTUVOVCk7Ci0gICAgICBpbnQgaW5kZXggPSBwcmVmaXhlZFZhbHVlLmluZGV4T2YoJzonKTsKLSAgICAgIFN0cmluZyBsb2NhbFBhcnQgPSBwcmVmaXhlZFZhbHVlLnN1YnN0cmluZyhpbmRleCArIDEpOwotCi0gICAgICBlbGVtZW50TmFtZSA9IG5ldyBRTmFtZShsb2NhbFBhcnQpOwotICAgIH0KLQotICAgIFFOYW1lIHR5cGVOYW1lID0KLSAgICAgIERPTVV0aWxzLmdldFF1YWxpZmllZEF0dHJpYnV0ZVZhbHVlKAotICAgICAgICBwYXJ0RWwsCi0gICAgICAgIENvbnN0YW50cy5BVFRSX1RZUEUsCi0gICAgICAgIENvbnN0YW50cy5FTEVNX01FU1NBR0UsCi0gICAgICAgIGZhbHNlLAotICAgICAgICBkZWYpOwotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBwYXJ0LnNldE5hbWUobmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKGVsZW1lbnROYW1lICE9IG51bGwpCi0gICAgewotICAgICAgcGFydC5zZXRFbGVtZW50TmFtZShlbGVtZW50TmFtZSk7Ci0gICAgfQotCi0gICAgaWYgKHR5cGVOYW1lICE9IG51bGwpCi0gICAgewotICAgICAgcGFydC5zZXRUeXBlTmFtZSh0eXBlTmFtZSk7Ci0gICAgfQotCi0gICAgRWxlbWVudCB0ZW1wRWwgPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChwYXJ0RWwpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBwYXJ0LnNldERvY3VtZW50YXRpb25FbGVtZW50KHRlbXBFbCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIERPTVV0aWxzLnRocm93V1NETEV4Y2VwdGlvbih0ZW1wRWwpOwotICAgICAgfQotCi0gICAgICB0ZW1wRWwgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodGVtcEVsKTsKLSAgICB9Ci0KLSAgICBwYXJzZUV4dGVuc2liaWxpdHlBdHRyaWJ1dGVzKHBhcnRFbCwgUGFydC5jbGFzcywgcGFydCwgZGVmKTsKLS8vICAgIE1hcCBleHRlbnNpb25BdHRyaWJ1dGVzID0gcGFydC5nZXRFeHRlbnNpb25BdHRyaWJ1dGVzKCk7Ci0vLyAgICBleHRlbnNpb25BdHRyaWJ1dGVzLnB1dEFsbChnZXRQYXJ0QXR0cmlidXRlcyhwYXJ0RWwsIGRlZikpOwotCi0gICAgLy8gTmVlZCB0byBkbyBzb21ldGhpbmcgaGVyZSB0byBsb2NhdGUgcGFydCBkZWZpbml0aW9uLgotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KHBhcnRFbCwgcGFydCk7Ci0KLSAgICByZXR1cm4gcGFydDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlUG9ydFR5cGUob3JnLnczYy5kb20uRWxlbWVudCwgamF2YXgud3NkbC5EZWZpbml0aW9uKQotICAgKi8KLSAgcHJvdGVjdGVkIFBvcnRUeXBlIHBhcnNlUG9ydFR5cGUoRWxlbWVudCBwb3J0VHlwZUVsLCBEZWZpbml0aW9uIGRlZikKLSAgICB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgUG9ydFR5cGUgcG9ydFR5cGUgPSBzdXBlci5wYXJzZVBvcnRUeXBlKHBvcnRUeXBlRWwsIGRlZik7Ci0KLSAgICAvLyBUcnkgdG8gYWRkIGVsZW1lbnQgdG8gbGlzdAotICAgIGFkZEVsZW1lbnRUb0xpc3QocG9ydFR5cGVFbCwgcG9ydFR5cGUpOwotCi0gICAgcmV0dXJuIHBvcnRUeXBlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGNvbS5pYm0ud3NkbC54bWwuV1NETFJlYWRlckltcGwjcGFyc2VPcGVyYXRpb24ob3JnLnczYy5kb20uRWxlbWVudCwgamF2YXgud3NkbC5Qb3J0VHlwZSwgamF2YXgud3NkbC5EZWZpbml0aW9uKQotICAgKi8KLSAgcHJvdGVjdGVkIE9wZXJhdGlvbiBwYXJzZU9wZXJhdGlvbigKLSAgICBFbGVtZW50IG9wRWwsCi0gICAgUG9ydFR5cGUgcG9ydFR5cGUsCi0gICAgRGVmaW5pdGlvbiBkZWYpCi0gICAgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIE9wZXJhdGlvbiBvcCA9IHN1cGVyLnBhcnNlT3BlcmF0aW9uKG9wRWwsIHBvcnRUeXBlLCBkZWYpOwotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KG9wRWwsIG9wKTsKLQotICAgIHJldHVybiBvcDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlU2VydmljZShvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZheC53c2RsLkRlZmluaXRpb24pCi0gICAqLwotICBwcm90ZWN0ZWQgU2VydmljZSBwYXJzZVNlcnZpY2UoRWxlbWVudCBzZXJ2aWNlRWwsIERlZmluaXRpb24gZGVmKQotICAgIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBTZXJ2aWNlIHNlcnZpY2UgPSBzdXBlci5wYXJzZVNlcnZpY2Uoc2VydmljZUVsLCBkZWYpOwotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KHNlcnZpY2VFbCwgc2VydmljZSk7Ci0KLSAgICByZXR1cm4gc2VydmljZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlUG9ydChvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZheC53c2RsLkRlZmluaXRpb24pCi0gICAqLwotICBwcm90ZWN0ZWQgUG9ydCBwYXJzZVBvcnQoRWxlbWVudCBwb3J0RWwsIERlZmluaXRpb24gZGVmKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgUG9ydCBwb3J0ID0gc3VwZXIucGFyc2VQb3J0KHBvcnRFbCwgZGVmKTsKLQotICAgIC8vIFRyeSB0byBhZGQgZWxlbWVudCB0byBsaXN0Ci0gICAgYWRkRWxlbWVudFRvTGlzdChwb3J0RWwsIHBvcnQpOwotCi0gICAgcmV0dXJuIHBvcnQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgY29tLmlibS53c2RsLnhtbC5XU0RMUmVhZGVySW1wbCNwYXJzZUV4dGVuc2liaWxpdHlFbGVtZW50KGphdmEubGFuZy5DbGFzcywgb3JnLnczYy5kb20uRWxlbWVudCwgamF2YXgud3NkbC5EZWZpbml0aW9uKQotICAgKi8KLSAgcHJvdGVjdGVkIEV4dGVuc2liaWxpdHlFbGVtZW50IHBhcnNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoCi0gICAgQ2xhc3MgcGFyZW50VHlwZSwKLSAgICBFbGVtZW50IGVsLAotICAgIERlZmluaXRpb24gZGVmKQotICAgIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtZW50ID0KLSAgICAgIHN1cGVyLnBhcnNlRXh0ZW5zaWJpbGl0eUVsZW1lbnQocGFyZW50VHlwZSwgZWwsIGRlZik7Ci0KLSAgICAvLyBUcnkgdG8gYWRkIGVsZW1lbnQgdG8gbGlzdAotICAgIGFkZEVsZW1lbnRUb0xpc3QoZWwsIGV4dEVsZW1lbnQpOwotCi0gICAgcmV0dXJuIGV4dEVsZW1lbnQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgY29tLmlibS53c2RsLnhtbC5XU0RMUmVhZGVySW1wbCNwYXJzZUlucHV0KG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmF4LndzZGwuRGVmaW5pdGlvbikKLSAgICovCi0gIHByb3RlY3RlZCBJbnB1dCBwYXJzZUlucHV0KEVsZW1lbnQgaW5wdXRFbCwgRGVmaW5pdGlvbiBkZWYpCi0gICAgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIElucHV0IGlucHV0ID0gc3VwZXIucGFyc2VJbnB1dChpbnB1dEVsLCBkZWYpOwotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KGlucHV0RWwsIGlucHV0KTsKLQotICAgIHJldHVybiBpbnB1dDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI3BhcnNlT3V0cHV0KG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmF4LndzZGwuRGVmaW5pdGlvbikKLSAgICovCi0gIHByb3RlY3RlZCBPdXRwdXQgcGFyc2VPdXRwdXQoRWxlbWVudCBvdXRwdXRFbCwgRGVmaW5pdGlvbiBkZWYpCi0gICAgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIE91dHB1dCBvdXRwdXQgPSBzdXBlci5wYXJzZU91dHB1dChvdXRwdXRFbCwgZGVmKTsKLQotICAgIC8vIFRyeSB0byBhZGQgZWxlbWVudCB0byBsaXN0Ci0gICAgYWRkRWxlbWVudFRvTGlzdChvdXRwdXRFbCwgb3V0cHV0KTsKLQotICAgIHJldHVybiBvdXRwdXQ7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgY29tLmlibS53c2RsLnhtbC5XU0RMUmVhZGVySW1wbCNwYXJzZUZhdWx0KG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmF4LndzZGwuRGVmaW5pdGlvbikKLSAgICovCi0gIHByb3RlY3RlZCBGYXVsdCBwYXJzZUZhdWx0KEVsZW1lbnQgZmF1bHRFbCwgRGVmaW5pdGlvbiBkZWYpCi0gICAgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIEZhdWx0IGZhdWx0ID0gc3VwZXIucGFyc2VGYXVsdChmYXVsdEVsLCBkZWYpOwotCi0gICAgLy8gVHJ5IHRvIGFkZCBlbGVtZW50IHRvIGxpc3QKLSAgICBhZGRFbGVtZW50VG9MaXN0KGZhdWx0RWwsIGZhdWx0KTsKLQotICAgIHJldHVybiBmYXVsdDsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBjb20uaWJtLndzZGwueG1sLldTRExSZWFkZXJJbXBsI2dldERvY3VtZW50KG9yZy54bWwuc2F4LklucHV0U291cmNlLCBqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHJvdGVjdGVkIERvY3VtZW50IGdldERvY3VtZW50KElucHV0U291cmNlIGlucHV0U291cmNlLCBTdHJpbmcgZGVzYykKLSAgICB0aHJvd3MgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgQ2xhc3NMb2FkZXIgY3VycmVudExvYWRlciA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCk7Ci0gICAgdHJ5Ci0JewotICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5zZXRDb250ZXh0Q2xhc3NMb2FkZXIoV1NETFJlYWRlckltcGwuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKSk7ICAgCQotCQotICAJICAvL0RvY3VtZW50QnVpbGRlckZhY3RvcnkgZmFjdG9yeSA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLSAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZmFjdG9yeSA9Ci0gICAgICAgIG5ldyBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmpheHAuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeUltcGwoKTsKLQotICAgICAgZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKLSAgICAgIGZhY3Rvcnkuc2V0VmFsaWRhdGluZyhmYWxzZSk7Ci0KLSAgICAgIERvY3VtZW50QnVpbGRlciBidWlsZGVyID0gZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKLSAgICAgIERvY3VtZW50IGRvYyA9IGJ1aWxkZXIucGFyc2UoaW5wdXRTb3VyY2UpOwotCi0gICAgICByZXR1cm4gZG9jOwotICAgIH0KLSAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTRExFeGNlcHRpb24oCi0gICAgICAgIFdTRExFeGNlcHRpb24uUEFSU0VSX0VSUk9SLAotICAgICAgICAiUHJvYmxlbSBwYXJzaW5nICciICsgZGVzYyArICInLiIsCi0gICAgICAgIHQpOwotICAgIH0KLSAgICBmaW5hbGx5Ci0gICAgeyAKLSAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKGN1cnJlbnRMb2FkZXIpOwotICAgIH0gICAgCi0gIH0KLQotICAvKioKLSAgICogR2V0IGVsZW1lbnQgbGlzdC4KLSAgICogQHJldHVybiB0aGUgZWxlbWVudCBsaXN0LgotICAgKi8KLSAgcHVibGljIFdTRExFbGVtZW50TGlzdCBnZXRFbGVtZW50TGlzdCgpCi0gIHsKLSAgICByZXR1cm4gdGhpcy53c2RsRWxlbWVudExpc3Q7Ci0gIH0KLQotICAvKiogCi0gICAqIEFkZCBXU0RMIGVsZW1lbnQgdG8gZWxlbWVudCBsaXN0LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGFkZEVsZW1lbnRUb0xpc3QoRWxlbWVudCBlbGVtZW50LCBPYmplY3Qgd3NkbEVsZW1lbnQpCi0gIHsKLSAgICBFbGVtZW50TG9jYXRpb24gZWxlbWVudExvY2F0aW9uID0gbnVsbDsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIFNlZSBpZiB0aGUgZWxlbWVudCBvYmplY3QgaXMgYW4gaW5zdGFuY2VvZiBvcmcuYXBhY2hlLnhlcmNlcy5kb20uRWxlbWVudEltcGwKLSAgICAgIEVsZW1lbnRJbXBsIGVsZW1lbnRJbXBsID0gKEVsZW1lbnRJbXBsKSBlbGVtZW50OwotCi0gICAgICAvLyBJZiBpdCBpcywgdGhlbiBnZXQgdGhlIGVsZW1lbnQgbG9jYXRpb24gaW5mb3JtYXRpb24KLSAgICAgIGVsZW1lbnRMb2NhdGlvbiA9Ci0gICAgICAgIChFbGVtZW50TG9jYXRpb24pIGVsZW1lbnRJbXBsLmdldFVzZXJEYXRhKCk7Ci0KLSAgICAgIC8vIEFkZCBpdCB0byB0aGUgbGlzdAotICAgICAgdGhpcy53c2RsRWxlbWVudExpc3QuYWRkRWxlbWVudCh3c2RsRWxlbWVudCwgZWxlbWVudExvY2F0aW9uKTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGNjZSkKLSAgICB7Ci0gICAgICAvLyBBREQ6IFNob3VsZCB3ZSBhZGQgdGhlIGVsZW1lbnQgd2l0aCBhIG51bGwgb3IgemVybyBsb2NhdGlvbj8KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB3aGVuIGEgV1NETCBkb2N1bWVudCBjb250YWlucyBkdXBsaWNhdGUgb3BlcmF0aW9uIG5hbWVzLgotICAgKiBJdCBpcyB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwgcGFyc2VCaW5kaW5nT3BlcmF0aW9uIG1ldGhvZCwgZXhjZXB0IHRoYXQgaXQgd2lsbAotICAgKiBqdXN0IGZpbmQgdGhlIGZpcnN0IG9wZXJhdGlvbiB0aGF0IG1hdGNoZXMgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBleGNlcHRpb24uCi0gICAqLwotICBwcml2YXRlIEJpbmRpbmdPcGVyYXRpb24gcGFyc2VCaW5kaW5nT3BlcmF0aW9uV2l0aER1cGxpY2F0ZU5hbWVzKAotICAgIEVsZW1lbnQgYmluZGluZ09wZXJhdGlvbkVsLAotICAgIFBvcnRUeXBlIHBvcnRUeXBlLAotICAgIERlZmluaXRpb24gZGVmKQotICAgIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24gPSBkZWYuY3JlYXRlQmluZGluZ09wZXJhdGlvbigpOwotICAgIFN0cmluZyBuYW1lID0KLSAgICAgIERPTVV0aWxzLmdldEF0dHJpYnV0ZShiaW5kaW5nT3BlcmF0aW9uRWwsIENvbnN0YW50cy5BVFRSX05BTUUpOwotCi0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBiaW5kaW5nT3BlcmF0aW9uLnNldE5hbWUobmFtZSk7Ci0gICAgfQotCi0gICAgRWxlbWVudCB0ZW1wRWwgPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChiaW5kaW5nT3BlcmF0aW9uRWwpOwotCi0gICAgd2hpbGUgKHRlbXBFbCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9ET0NVTUVOVEFUSU9OLCB0ZW1wRWwpKQotICAgICAgewotICAgICAgICBiaW5kaW5nT3BlcmF0aW9uLnNldERvY3VtZW50YXRpb25FbGVtZW50KHRlbXBFbCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChRTmFtZVV0aWxzLm1hdGNoZXMoQ29uc3RhbnRzLlFfRUxFTV9JTlBVVCwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgYmluZGluZ09wZXJhdGlvbi5zZXRCaW5kaW5nSW5wdXQocGFyc2VCaW5kaW5nSW5wdXQodGVtcEVsLCBkZWYpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKFFOYW1lVXRpbHMubWF0Y2hlcyhDb25zdGFudHMuUV9FTEVNX09VVFBVVCwgdGVtcEVsKSkKLSAgICAgIHsKLSAgICAgICAgYmluZGluZ09wZXJhdGlvbi5zZXRCaW5kaW5nT3V0cHV0KHBhcnNlQmluZGluZ091dHB1dCh0ZW1wRWwsIGRlZikpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoUU5hbWVVdGlscy5tYXRjaGVzKENvbnN0YW50cy5RX0VMRU1fRkFVTFQsIHRlbXBFbCkpCi0gICAgICB7Ci0gICAgICAgIGJpbmRpbmdPcGVyYXRpb24uYWRkQmluZGluZ0ZhdWx0KHBhcnNlQmluZGluZ0ZhdWx0KHRlbXBFbCwgZGVmKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGJpbmRpbmdPcGVyYXRpb24uYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoCi0gICAgICAgICAgcGFyc2VFeHRlbnNpYmlsaXR5RWxlbWVudChCaW5kaW5nT3BlcmF0aW9uLmNsYXNzLCB0ZW1wRWwsIGRlZikpOwotICAgICAgfQotCi0gICAgICB0ZW1wRWwgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodGVtcEVsKTsKLSAgICB9Ci0KLSAgICBpZiAocG9ydFR5cGUgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0ID0gYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKTsKLSAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ091dHB1dCgpOwotICAgICAgU3RyaW5nIGlucHV0TmFtZSA9IChiaW5kaW5nSW5wdXQgIT0gbnVsbCA/IGJpbmRpbmdJbnB1dC5nZXROYW1lKCkgOiBudWxsKTsKLSAgICAgIFN0cmluZyBvdXRwdXROYW1lID0KLSAgICAgICAgKGJpbmRpbmdPdXRwdXQgIT0gbnVsbCA/IGJpbmRpbmdPdXRwdXQuZ2V0TmFtZSgpIDogbnVsbCk7Ci0KLSAgICAgIC8vT3BlcmF0aW9uIG9wID0gcG9ydFR5cGUuZ2V0T3BlcmF0aW9uKG5hbWUsIGlucHV0TmFtZSwgb3V0cHV0TmFtZSk7Ci0gICAgICAvLyBHZXQgYWxsIG9wZXJhdGlvbnMsIGFuZCB0aGVuIGZpbmQgdGhlIGZpcnN0IG9uZSB0aGF0IG1hdGNoZXMKLSAgICAgIE9wZXJhdGlvbiBvcCA9IG51bGwsIGNoZWNrT3BlcmF0aW9uOwotICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBwb3J0VHlwZS5nZXRPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkgJiYgb3AgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gR2V0IHRoZSBuZXh0IG9wZXJhdGlvbgotICAgICAgICBjaGVja09wZXJhdGlvbiA9IChPcGVyYXRpb24pIGl0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgICAvLyBHZXQgdGhlIG9wZXJhdGlvbiBuYW1lLCBpbnB1dCBuYW1lLCBhbmQgb3V0cHV0IG5hbWUKLSAgICAgICAgU3RyaW5nIGNoZWNrTmFtZSA9IGNoZWNrT3BlcmF0aW9uLmdldE5hbWUoKTsKLSAgICAgICAgU3RyaW5nIGNoZWNrSW5wdXROYW1lID0KLSAgICAgICAgICAoY2hlY2tPcGVyYXRpb24uZ2V0SW5wdXQoKSA9PSBudWxsCi0gICAgICAgICAgICA/IG51bGwKLSAgICAgICAgICAgIDogY2hlY2tPcGVyYXRpb24uZ2V0SW5wdXQoKS5nZXROYW1lKCkpOwotICAgICAgICBTdHJpbmcgY2hlY2tPdXRwdXROYW1lID0KLSAgICAgICAgICAoY2hlY2tPcGVyYXRpb24uZ2V0T3V0cHV0KCkgPT0gbnVsbAotICAgICAgICAgICAgPyBudWxsCi0gICAgICAgICAgICA6IGNoZWNrT3BlcmF0aW9uLmdldE91dHB1dCgpLmdldE5hbWUoKSk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIG5hbWVzIG1hdGNoLCB0aGVuIHRoYXQgb3BlcmF0aW9uCi0gICAgICAgIGlmICgoY2hlY2tOYW1lICE9IG51bGwgJiYgY2hlY2tOYW1lLmVxdWFscyhuYW1lKSkKLSAgICAgICAgICAmJiAoKGNoZWNrSW5wdXROYW1lICE9IG51bGwgJiYgY2hlY2tJbnB1dE5hbWUuZXF1YWxzKGlucHV0TmFtZSkpCi0gICAgICAgICAgICB8fCAoY2hlY2tJbnB1dE5hbWUgPT0gbnVsbCAmJiBpbnB1dE5hbWUgPT0gbnVsbCkpCi0gICAgICAgICAgJiYgKChjaGVja091dHB1dE5hbWUgIT0gbnVsbCAmJiBjaGVja091dHB1dE5hbWUuZXF1YWxzKG91dHB1dE5hbWUpKQotICAgICAgICAgICAgfHwgKGNoZWNrT3V0cHV0TmFtZSA9PSBudWxsICYmIG91dHB1dE5hbWUgPT0gbnVsbCkpKQotICAgICAgICB7Ci0gICAgICAgICAgb3AgPSBjaGVja09wZXJhdGlvbjsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAob3AgPT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgb3AgPSBkZWYuY3JlYXRlT3BlcmF0aW9uKCk7Ci0gICAgICAgIG9wLnNldE5hbWUobmFtZSk7Ci0gICAgICAgIHBvcnRUeXBlLmFkZE9wZXJhdGlvbihvcCk7Ci0gICAgICB9Ci0KLSAgICAgIGJpbmRpbmdPcGVyYXRpb24uc2V0T3BlcmF0aW9uKG9wKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYmluZGluZ09wZXJhdGlvbjsKLSAgfQotICAKLSBwcm90ZWN0ZWQgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgcGFyc2VTY2hlbWEoQ2xhc3MgY2NjLCBFbGVtZW50IGVsZW0sIERlZmluaXRpb24gZGVmKSB0aHJvd3MgV1NETEV4Y2VwdGlvbgotewotICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0RWxlbSA9IG51bGw7Ci0gICBleHRFbGVtID0gc3VwZXIucGFyc2VTY2hlbWEoY2NjLCBlbGVtLCBkZWYpOwotCi0gICAvLyBUcnkgdG8gYWRkIGVsZW1lbnQgdG8gbGlzdAotICAgYWRkRWxlbWVudFRvTGlzdChlbGVtLCBleHRFbGVtKTsKLSAgcmV0dXJuIGV4dEVsZW07Ci0gfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC9XU0RMVXRpbHMuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvV1NETFV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhN2I2MWIuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC9XU0RMVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQxMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5GYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUNvbnN0YW50czsKLQotLyoqCi0gKiBTZXQgb2YgWE1MIHJlbGF0ZWQgdXRpbGl0aWVzLgotICogCi0gKiBAYXV0aG9yIFBldGVyICBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKiBAdmVyc2lvbiAxLjAuMQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgV1NETFV0aWxzCi17Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBpc1JwY0xpdGVyYWwuCi0gICAqIEBwYXJhbSBiaW5kaW5nU3R5bGUgYSBiaW5kaW5nIHN0eWxlLgotICAgKiBAcGFyYW0gb3BlcmF0aW9uIGEgV1NETCBiaW5kaW5nIG9wZXJhdGlvbiBhcnRpZmFjdC4KLSAgICogQHJldHVybiB0cnVlIGlmIGJpbmRpbmcgaXMgcnBjIGxpdGVyYWwuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNScGNMaXRlcmFsKAotICAgIFN0cmluZyBiaW5kaW5nU3R5bGUsCi0gICAgQmluZGluZ09wZXJhdGlvbiBvcGVyYXRpb24pCi0gIHsKLSAgICByZXR1cm4gY2hlY2tTdHlsZUFuZFVzZSgKLSAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQklORF9TVFlMRV9SUEMsCi0gICAgICBXU0lDb25zdGFudHMuQVRUUlZBTF9TT0FQX0JPRFlfVVNFX0xJVCwKLSAgICAgIGJpbmRpbmdTdHlsZSwKLSAgICAgIG9wZXJhdGlvbik7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGlzRG9jTGl0ZXJhbC4KLSAgICogQHBhcmFtIGJpbmRpbmdTdHlsZSAgdGhlIGJpbmRpbmcgc3R5bGUuCi0gICAqIEBwYXJhbSBvcGVyYXRpb24gYSBXU0RMIGJpbmRpbmcgb3BlcmF0aW9uLgotICAgKiBAcmV0dXJuIHRydWUgaWYgYmluZGluZyBpcyBkb2N1bWVudCBsaXRlcmFsLiAKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0RvY0xpdGVyYWwoCi0gICAgU3RyaW5nIGJpbmRpbmdTdHlsZSwKLSAgICBCaW5kaW5nT3BlcmF0aW9uIG9wZXJhdGlvbikKLSAgewotICAgIHJldHVybiBjaGVja1N0eWxlQW5kVXNlKAotICAgICAgV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CSU5EX1NUWUxFX0RPQywKLSAgICAgIFdTSUNvbnN0YW50cy5BVFRSVkFMX1NPQVBfQk9EWV9VU0VfTElULAotICAgICAgYmluZGluZ1N0eWxlLAotICAgICAgb3BlcmF0aW9uKTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgY2hlY2tTdHlsZUFuZFVzZS4KLSAgICovCi0gIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gY2hlY2tTdHlsZUFuZFVzZSgKLSAgICBTdHJpbmcgY2hlY2tTdHlsZSwKLSAgICBTdHJpbmcgY2hlY2tVc2UsCi0gICAgU3RyaW5nIGJpbmRpbmdTdHlsZSwKLSAgICBCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24pCi0gIHsKLSAgICBib29sZWFuIHN0eWxlRm91bmQgPSBmYWxzZTsKLSAgICBib29sZWFuIHN0eWxlQW5kVXNlRm91bmQgPSBmYWxzZTsKLQotICAgIC8vIEZpbmQgdGhlIHNvYXBiaW5kOm9wZXJhdGlvbiBlbGVtZW50Ci0gICAgU09BUE9wZXJhdGlvbiBzb2FwT3BlcmF0aW9uID0gZ2V0U29hcE9wZXJhdGlvbihiaW5kaW5nT3BlcmF0aW9uKTsKLQotICAgIC8vIElmIHRoZXJlIGFyZSBubyBleHQgZWxlbWVudHMsIHRoZW4gY2hlY2sgYWdhaW5zdCBiaW5kaW5nIHN0eWxlCi0gICAgaWYgKChzb2FwT3BlcmF0aW9uID09IG51bGwpIHx8IChzb2FwT3BlcmF0aW9uLmdldFN0eWxlKCkgPT0gbnVsbCkpCi0gICAgewotICAgICAgaWYgKGNoZWNrU3R5bGUuZXF1YWxzKGJpbmRpbmdTdHlsZSkpCi0gICAgICAgIHN0eWxlRm91bmQgPSB0cnVlOwotICAgIH0KLQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBpZiAoY2hlY2tTdHlsZS5lcXVhbHMoc29hcE9wZXJhdGlvbi5nZXRTdHlsZSgpKSkKLSAgICAgICAgc3R5bGVGb3VuZCA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gSWYgc3R5bGUgZm91bmQgdGhlbiBjaGVjayB1c2UKLSAgICBpZiAoc3R5bGVGb3VuZCkKLSAgICB7Ci0gICAgICAvLyBGaW5kIHRoZSBzb2FwYmluZDpib2R5IGVsZW1lbnQKLSAgICAgIFNPQVBCb2R5IHNvYXBCb2R5ID0gZ2V0SW5wdXRTb2FwQm9keShiaW5kaW5nT3BlcmF0aW9uKTsKLQotICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHNvYXBiaW5kOmJvZHksIHRoZW4gY2hlY2sgYWdhaW5zdCBkZWZhdWx0IHVzZSB2YWx1ZQotICAgICAgaWYgKChzb2FwQm9keSA9PSBudWxsKSB8fCAoc29hcEJvZHkuZ2V0VXNlKCkgPT0gbnVsbCkpCi0gICAgICB7Ci0gICAgICAgIGlmIChjaGVja1VzZS5lcXVhbHMoV1NJQ29uc3RhbnRzLkFUVFJWQUxfU09BUF9CT0RZX1VTRV9MSVQpKQotICAgICAgICAgIHN0eWxlQW5kVXNlRm91bmQgPSB0cnVlOwotICAgICAgfQotCi0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGlmIChjaGVja1VzZS5lcXVhbHMoc29hcEJvZHkuZ2V0VXNlKCkpKQotICAgICAgICAgIHN0eWxlQW5kVXNlRm91bmQgPSB0cnVlOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBzdHlsZUFuZFVzZUZvdW5kOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBzb2FwYmluZDpiaW5kaW5nLgotICAgKiBAcGFyYW0gYmluZGluZyAgYSBCaW5kaW5nIG9iamVjdC4KLSAgICogQHJldHVybiBzb2FwYmluZDpiaW5kaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTT0FQQmluZGluZyBnZXRTb2FwQmluZGluZyhCaW5kaW5nIGJpbmRpbmcpCi0gIHsKLSAgICBTT0FQQmluZGluZyBzb2FwQmluZGluZyA9IG51bGw7Ci0KLSAgICBMaXN0IGV4dEVsZW1lbnRzID0gbnVsbDsKLQotICAgIC8vIEZpbmQgdGhlIHNvYXBiaW5kOm9wZXJhdGlvbiBlbGVtZW50Ci0gICAgaWYgKChleHRFbGVtZW50cyA9IGJpbmRpbmcuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpICE9IG51bGwpCi0gICAgewotICAgICAgZm9yIChJdGVyYXRvciBpdGVyYXRvciA9IGV4dEVsZW1lbnRzLml0ZXJhdG9yKCk7Ci0gICAgICAgIGl0ZXJhdG9yLmhhc05leHQoKSAmJiAoc29hcEJpbmRpbmcgPT0gbnVsbCk7Ci0gICAgICAgICkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IG9iaiA9IGl0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgU09BUEJpbmRpbmcpCi0gICAgICAgIHsKLSAgICAgICAgICBzb2FwQmluZGluZyA9IChTT0FQQmluZGluZykgb2JqOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHNvYXBCaW5kaW5nOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBzb2FwYmluZDpvcGVyYXRpb24uCi0gICAqIEBwYXJhbSBiaW5kaW5nT3BlcmF0aW9uICBhIEJpbmRpbmdPcGVyYXRpb24gb2JqZWN0LgotICAgKiBAcmV0dXJuIHNvYXBiaW5kOm9wZXJhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU09BUE9wZXJhdGlvbiBnZXRTb2FwT3BlcmF0aW9uKEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbikKLSAgewotICAgIFNPQVBPcGVyYXRpb24gc29hcE9wZXJhdGlvbiA9IG51bGw7Ci0KLSAgICBMaXN0IGV4dEVsZW1lbnRzID0gbnVsbDsKLQotICAgIC8vIEZpbmQgdGhlIHNvYXBiaW5kOm9wZXJhdGlvbiBlbGVtZW50Ci0gICAgaWYgKChleHRFbGVtZW50cyA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpICE9IG51bGwpCi0gICAgewotICAgICAgZm9yIChJdGVyYXRvciBpdGVyYXRvciA9IGV4dEVsZW1lbnRzLml0ZXJhdG9yKCk7Ci0gICAgICAgIGl0ZXJhdG9yLmhhc05leHQoKSAmJiAoc29hcE9wZXJhdGlvbiA9PSBudWxsKTsKLSAgICAgICAgKQotICAgICAgewotICAgICAgICBPYmplY3Qgb2JqID0gaXRlcmF0b3IubmV4dCgpOwotCi0gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBTT0FQT3BlcmF0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgc29hcE9wZXJhdGlvbiA9IChTT0FQT3BlcmF0aW9uKSBvYmo7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gc29hcE9wZXJhdGlvbjsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgc29hcGJpbmQ6Ym9keSBmcm9tIGlucHV0IGVsZW1lbnQuCi0gICAqIEBwYXJhbSBiaW5kaW5nT3BlcmF0aW9uICB0aGUgQmluZGluZ09wZXJhdGlvbiBvYmplY3QuCi0gICAqIEByZXR1cm4gc29hcGJpbmQ6Ym9keSBmcm9tIGlucHV0IGVsZW1lbnQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFNPQVBCb2R5IGdldElucHV0U29hcEJvZHkoQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uKQotICB7Ci0gICAgU09BUEJvZHkgc29hcEJvZHkgPSBudWxsOwotCi0gICAgTGlzdCBleHRFbGVtZW50cyA9IG51bGw7Ci0KLSAgICAvLyBGaW5kIHRoZSBzb2FwYmluZDpib2R5IGVsZW1lbnQKLSAgICBpZiAoKGV4dEVsZW1lbnRzID0KLSAgICAgIGJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0lucHV0KCkuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkpCi0gICAgICAhPSBudWxsKQotICAgIHsKLSAgICAgIGZvciAoSXRlcmF0b3IgaXRlcmF0b3IgPSBleHRFbGVtZW50cy5pdGVyYXRvcigpOwotICAgICAgICBpdGVyYXRvci5oYXNOZXh0KCkgJiYgKHNvYXBCb2R5ID09IG51bGwpOwotICAgICAgICApCi0gICAgICB7Ci0gICAgICAgIE9iamVjdCBvYmogPSBpdGVyYXRvci5uZXh0KCk7Ci0KLSAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFNPQVBCb2R5KQotICAgICAgICB7Ci0gICAgICAgICAgc29hcEJvZHkgPSAoU09BUEJvZHkpIG9iajsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBzb2FwQm9keTsKLSAgfQotCi0gIC8qKgotICAgKiBGaW5kIG1lc3NhZ2VzIHJlZmVyZW5jZWQgYnkgYSBoZWFkZXIgb3IgaGVhZGVyZmF1bHQuCi0gICAqIEBwYXJhbSBkZWZpbml0aW9uICBhIERlZmluaXRpb24gb2JqZWN0LgotICAgKiBAcGFyYW0gYmluZGluZyAgYSBCaW5kaW5nIG9iamVjdC4KLSAgICogQHJldHVybiBtZXNzYWdlcyByZWZlcmVuY2VkIGJ5IGEgaGVhZGVyIG9yIGhlYWRlcmZhdWx0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBIYXNoU2V0IGZpbmRNZXNzYWdlcyhEZWZpbml0aW9uIGRlZmluaXRpb24sIEJpbmRpbmcgYmluZGluZykKLSAgewotICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbjsKLQotICAgIEhhc2hTZXQgdGVtcE1lc3NhZ2VzLCBiaW5kaW5nTWVzc2FnZXMgPSBuZXcgSGFzaFNldCgpOwotCi0gICAgSGFzaFNldCBwb3J0VHlwZU1lc3NhZ2VzID0gZmluZE1lc3NhZ2VzKGJpbmRpbmcuZ2V0UG9ydFR5cGUoKSk7Ci0KLSAgICAvLyBQcm9jZXNzIGVhY2ggb3BlcmF0aW9uCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBiaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIGJpbmRpbmdPcGVyYXRpb24gPSAoQmluZGluZ09wZXJhdGlvbikgaXRlcmF0b3IubmV4dCgpOwotCi0gICAgICAvLyBQcm9jZXNzIHRoZSBpbnB1dCBhbmQgdGhlbiB0aGUgb3V0cHV0Ci0gICAgICBpZiAoYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKSAhPSBudWxsKQotICAgICAgewotICAgICAgICB0ZW1wTWVzc2FnZXMgPQotICAgICAgICAgIGZpbmRNZXNzYWdlcygKLSAgICAgICAgICAgIGJpbmRpbmdPcGVyYXRpb24KLSAgICAgICAgICAgICAgLmdldEJpbmRpbmdJbnB1dCgpCi0gICAgICAgICAgICAgIC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKQotICAgICAgICAgICAgICAuaXRlcmF0b3IoKSwKLSAgICAgICAgICAgIHBvcnRUeXBlTWVzc2FnZXMsCi0gICAgICAgICAgICBkZWZpbml0aW9uKTsKLQotICAgICAgICAvLyBBZGQgbWVzc2FnZXMgdG8gYmluZGluZyBtZXNzYWdlIHNldAotICAgICAgICBiaW5kaW5nTWVzc2FnZXMuYWRkQWxsKHRlbXBNZXNzYWdlcyk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFByb2Nlc3Mgb3V0cHV0Ci0gICAgICBpZiAoYmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nT3V0cHV0KCkgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgdGVtcE1lc3NhZ2VzID0KLSAgICAgICAgICBmaW5kTWVzc2FnZXMoCi0gICAgICAgICAgICBiaW5kaW5nT3BlcmF0aW9uCi0gICAgICAgICAgICAgIC5nZXRCaW5kaW5nT3V0cHV0KCkKLSAgICAgICAgICAgICAgLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpCi0gICAgICAgICAgICAgIC5pdGVyYXRvcigpLAotICAgICAgICAgICAgcG9ydFR5cGVNZXNzYWdlcywKLSAgICAgICAgICAgIGRlZmluaXRpb24pOwotCi0gICAgICAgIC8vIEFkZCBtZXNzYWdlcyB0byBiaW5kaW5nIG1lc3NhZ2Ugc2V0Ci0gICAgICAgIGJpbmRpbmdNZXNzYWdlcy5hZGRBbGwodGVtcE1lc3NhZ2VzKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gYmluZGluZ01lc3NhZ2VzOwotICB9Ci0KLSAgLyoqCi0gICAqIEZpbmQgdGhlIG1lc3NhZ2VzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkgYSBoZWFkZXIgb3IgaGVhZGVyZmF1bHQuCi0gICAqIEBwYXJhbSBwb3J0VHlwZSBhIFBvcnRUeXBlIG9iamVjdC4KLSAgICogQHJldHVybiBoZSBtZXNzYWdlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IGEgaGVhZGVyIG9yIGhlYWRlcmZhdWx0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBIYXNoU2V0IGZpbmRNZXNzYWdlcyhQb3J0VHlwZSBwb3J0VHlwZSkKLSAgewotICAgIEhhc2hTZXQgbWVzc2FnZVNldCA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgT3BlcmF0aW9uIG9wZXJhdGlvbjsKLQotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gcG9ydFR5cGUuZ2V0T3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICAvLyBHZXQgbmV4dCBvcGVyYXRpb24gdG8gcHJvY2VzcwotICAgICAgb3BlcmF0aW9uID0gKE9wZXJhdGlvbikgaXRlcmF0b3IubmV4dCgpOwotCi0gICAgICAvLyBHZXQgaW5wdXQgYW5kIG91dHB1dCBtZXNzYWdlCi0gICAgICBpZiAob3BlcmF0aW9uLmdldElucHV0KCkgIT0gbnVsbCkKLSAgICAgICAgbWVzc2FnZVNldC5hZGQob3BlcmF0aW9uLmdldElucHV0KCkuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIGlmIChvcGVyYXRpb24uZ2V0T3V0cHV0KCkgIT0gbnVsbCkKLSAgICAgICAgbWVzc2FnZVNldC5hZGQob3BlcmF0aW9uLmdldE91dHB1dCgpLmdldE1lc3NhZ2UoKSk7Ci0KLSAgICAgIC8vIFByb2Nlc3MgYW55IGZhdWx0cwotICAgICAgSXRlcmF0b3IgZmF1bHRzID0gb3BlcmF0aW9uLmdldEZhdWx0cygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoZmF1bHRzLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgbWVzc2FnZVNldC5hZGQoKChGYXVsdCkgZmF1bHRzLm5leHQoKSkuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbWVzc2FnZVNldDsKLSAgfQotCi0gIC8qKgotICAgKiBGaW5kIHRoZSBtZXNzYWdlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IGEgaGVhZGVyIG9yIGhlYWRlcmZhdWx0LgotICAgKiBAcGFyYW0gZXh0RWxlbWVudExpc3QgYSBsaXN0IG9mIGV4dGVybmFsIGVsZW1lbnRzLgotICAgKiBAcGFyYW0gbWVzc2FnZVNldCBhIHNldCBvZiBtZXNzYWdlcy4KLSAgICogQHBhcmFtIGRlZmluaXRpb24gYSBEZWZpbml0aW9uIG9iamVjdC4KLSAgICogQHJldHVybiB0aGUgbWVzc2FnZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSBhIGhlYWRlciBvciBoZWFkZXJmYXVsdC4KLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgSGFzaFNldCBmaW5kTWVzc2FnZXMoCi0gICAgSXRlcmF0b3IgZXh0RWxlbWVudExpc3QsCi0gICAgSGFzaFNldCBtZXNzYWdlU2V0LAotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgIEhhc2hTZXQgcmV0dXJuU2V0ID0gbmV3IEhhc2hTZXQoKTsKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRFbGVtZW50OwotICAgIE1lc3NhZ2Ugc2F2ZU1lc3NhZ2UgPSBudWxsOwotCi0gICAgd2hpbGUgKGV4dEVsZW1lbnRMaXN0Lmhhc05leHQoKSkKLSAgICB7Ci0gICAgICAvLyBHZXQgZXh0LiBlbGVtZW50Ci0gICAgICBleHRFbGVtZW50ID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50TGlzdC5uZXh0KCk7Ci0KLSAgICAgIFFOYW1lIG1lc3NhZ2VRTmFtZTsKLSAgICAgIE1lc3NhZ2UgbWVzc2FnZTsKLQotICAgICAgLy8gSWYgdGhpcyBpcyBhIHNvYXA6aGVhZGVyIGVsZW1lbnQsIHRoZW4gY2hlY2sgZm9yIG1lc3NhZ2UgcmVmZXJlbmNlCi0gICAgICBpZiAoZXh0RWxlbWVudCBpbnN0YW5jZW9mIFNPQVBIZWFkZXIpCi0gICAgICB7Ci0gICAgICAgIFNPQVBIZWFkZXIgc29hcEhlYWRlciA9IChTT0FQSGVhZGVyKSBleHRFbGVtZW50OwotICAgICAgICBpZiAoKG1lc3NhZ2VRTmFtZSA9IHNvYXBIZWFkZXIuZ2V0TWVzc2FnZSgpKSAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgLy8gSWYgbWVzc2FnZSBub3QgZm91bmQsIHRoZW4gY3JlYXRlIGEgZHVtbXkgbWVzc2FnZSBlbGVtZW50Ci0gICAgICAgICAgaWYgKChtZXNzYWdlID0gZGVmaW5pdGlvbi5nZXRNZXNzYWdlKG1lc3NhZ2VRTmFtZSkpID09IG51bGwpCi0gICAgICAgICAgewotICAgICAgICAgICAgbWVzc2FnZSA9IGRlZmluaXRpb24uY3JlYXRlTWVzc2FnZSgpOwotICAgICAgICAgICAgbWVzc2FnZS5zZXRRTmFtZShtZXNzYWdlUU5hbWUpOwotICAgICAgICAgICAgbWVzc2FnZS5zZXRVbmRlZmluZWQodHJ1ZSk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKCFtZXNzYWdlU2V0LmNvbnRhaW5zKG1lc3NhZ2UpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblNldC5hZGQobWVzc2FnZSk7Ci0gICAgICAgICAgICBzYXZlTWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUHJvY2VzcyBhbnkgaGVhZGVyIGZhdWx0cyB3aXRoaW4gdGhpcyBoZWFkZXIKLSAgICAgICAgSXRlcmF0b3IgaGVhZGVyRmF1bHRMaXN0ID0gc29hcEhlYWRlci5nZXRTT0FQSGVhZGVyRmF1bHRzKCkuaXRlcmF0b3IoKTsKLSAgICAgICAgd2hpbGUgKGhlYWRlckZhdWx0TGlzdC5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBHZXQgc29hcCBoZWFkZXIgZmF1bHQKLSAgICAgICAgICBTT0FQSGVhZGVyRmF1bHQgc29hcEhlYWRlckZhdWx0ID0KLSAgICAgICAgICAgIChTT0FQSGVhZGVyRmF1bHQpIGhlYWRlckZhdWx0TGlzdC5uZXh0KCk7Ci0gICAgICAgICAgaWYgKChtZXNzYWdlUU5hbWUgPSBzb2FwSGVhZGVyRmF1bHQuZ2V0TWVzc2FnZSgpKSAhPSBudWxsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIElmIG1lc3NhZ2Ugbm90IGZvdW5kLCB0aGVuIGNyZWF0ZSBhIGR1bW15IG1lc3NhZ2UgZWxlbWVudAotICAgICAgICAgICAgaWYgKChtZXNzYWdlID0gZGVmaW5pdGlvbi5nZXRNZXNzYWdlKG1lc3NhZ2VRTmFtZSkpID09IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG1lc3NhZ2UgPSBkZWZpbml0aW9uLmNyZWF0ZU1lc3NhZ2UoKTsKLSAgICAgICAgICAgICAgbWVzc2FnZS5zZXRRTmFtZShtZXNzYWdlUU5hbWUpOwotICAgICAgICAgICAgICBtZXNzYWdlLnNldFVuZGVmaW5lZCh0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSWYgbWVzc2FnZSBub3QgaW4gbWVzc2FnZSBzZXQgYW5kIHJldHVybiBzZXQsIHRoZW4gYWRkIGl0ICAKLSAgICAgICAgICAgIGlmICghbWVzc2FnZVNldC5jb250YWlucyhtZXNzYWdlKQotICAgICAgICAgICAgICAmJiAoKHNhdmVNZXNzYWdlID09IG51bGwpCi0gICAgICAgICAgICAgICAgfHwgKHNhdmVNZXNzYWdlICE9IG51bGwKLSAgICAgICAgICAgICAgICAgICYmICFzYXZlTWVzc2FnZS5nZXRRTmFtZSgpLmVxdWFscyhtZXNzYWdlLmdldFFOYW1lKCkpKSkpCi0gICAgICAgICAgICAgIHJldHVyblNldC5hZGQobWVzc2FnZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJldHVyblNldDsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU09BUDEyV1NETChXU0RMRG9jdW1lbnQgd3NkbERvY3VtZW50KQotICB7Ci0JYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKLQlpZiAod3NkbERvY3VtZW50ICE9IG51bGwpCi0JewotCSAgQmluZGluZ1tdIGJpbmRpbmdzID0gd3NkbERvY3VtZW50LmdldEJpbmRpbmdzKCk7Ci0JICBMaXN0IGV4dGVuc2liaWxpdHlFbGVtZW50TGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLQkgIGlmIChiaW5kaW5ncyAhPSBudWxsKQotCSAgewotCQlmb3IgKGludCBpID0gMDsgaSA8IGJpbmRpbmdzLmxlbmd0aDsgaSsrKQotCQkJZXh0ZW5zaWJpbGl0eUVsZW1lbnRMaXN0LmFkZEFsbChiaW5kaW5nc1tpXS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSk7Ci0JCUl0ZXJhdG9yIGl0ZXJhdG9yID0gZXh0ZW5zaWJpbGl0eUVsZW1lbnRMaXN0Lml0ZXJhdG9yKCk7Ci0JCXdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpIAotCQl7Ci0JCSAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZSA9IChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaXRlcmF0b3IubmV4dCgpOwotCQkJaWYgKFdTSUNvbnN0YW50cy5OU19VUklfV1NETF9TT0FQMTIuZXF1YWxzKGUuZ2V0RWxlbWVudFR5cGUoKS5nZXROYW1lc3BhY2VVUkkoKSkpCi0JCQl7Ci0JCQkgIHJlc3VsdCA9IHRydWU7Ci0JCQkgIGJyZWFrOwotCQkJfQotCQl9Ci0JICB9Ci0JfQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvdHJhdmVyc2FsL1Zpc2l0b3JBZGFwdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3RyYXZlcnNhbC9WaXNpdG9yQWRhcHRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjkwOTM4Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvdHJhdmVyc2FsL1Zpc2l0b3JBZGFwdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsOwotCi1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvbkhhbmRsZXI7Ci1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOwotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LlByb3h5OwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5GYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkltcG9ydDsKLWltcG9ydCBqYXZheC53c2RsLklucHV0OwotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk91dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uOwotCi1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotLyoqCi0gKiBUaGUgY2xhc3MgYWRhcHRzIHRoZSBnaXZlbiBvYmplY3Qgd2l0aCB0aGUgaW1wbGVtZW50ZWQKLSAqIDxjb2RlPldTRExWaXNpdG9yPC9jb2RlPiBtZXRob2RzLgotICogCi0gKiBAYXV0aG9yIEt1bGlrCi0gKi8KLXB1YmxpYyBjbGFzcyBWaXNpdG9yQWRhcHRvciBpbXBsZW1lbnRzIEludm9jYXRpb25IYW5kbGVyCi17Ci0KLSAgLy8gb3B0aW1pemF0aW9uIGhpbnQKLSAgc3RhdGljIGZpbmFsIHByaXZhdGUgQ2xhc3NbXSB2aXNpdG9yQ2xhc3MgPSBuZXcgQ2xhc3NbXSB7IFdTRExWaXNpdG9yLmNsYXNzIH07Ci0KLSAgLyoqCi0gICAqIFRoZSBhcnJheSBpcyB1c2VkIGZvciBkZXRlcm1pbmF0aW9uIG9mIGFjdHVhbCBqYXZheC53c2RsIGNsYXNzCi0gICAqLwotICBwcml2YXRlIHN0YXRpYyBDbGFzc1tdIHdzZGwgPQotICAgIG5ldyBDbGFzc1tdIHsKLSAgICAgIFBhcnQuY2xhc3MsCi0gICAgICBTZXJ2aWNlLmNsYXNzLAotICAgICAgVHlwZXMuY2xhc3MsCi0gICAgICBPcGVyYXRpb24uY2xhc3MsCi0gICAgICBJbnB1dC5jbGFzcywKLSAgICAgIE91dHB1dC5jbGFzcywKLSAgICAgIEZhdWx0LmNsYXNzLAotICAgICAgQmluZGluZy5jbGFzcywKLSAgICAgIEJpbmRpbmdPcGVyYXRpb24uY2xhc3MsCi0gICAgICBCaW5kaW5nSW5wdXQuY2xhc3MsCi0gICAgICBCaW5kaW5nT3V0cHV0LmNsYXNzLAotICAgICAgQmluZGluZ0ZhdWx0LmNsYXNzLAotICAgICAgSW1wb3J0LmNsYXNzLAotICAgICAgRWxlbWVudC5jbGFzcywKLSAgICAgIE1lc3NhZ2UuY2xhc3MsCi0gICAgICBQb3J0LmNsYXNzLAotICAgICAgUG9ydFR5cGUuY2xhc3MsCi0gICAgICBEZWZpbml0aW9uLmNsYXNzLAotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQuY2xhc3MsCi0gICAgICBTT0FQQmluZGluZy5jbGFzcywKLSAgICAgIFNPQVBCb2R5LmNsYXNzLAotICAgICAgU09BUEhlYWRlci5jbGFzcywKLSAgICAgIFNPQVBIZWFkZXJGYXVsdC5jbGFzcywKLSAgICAgIFNPQVBGYXVsdC5jbGFzcywKLSAgICAgIFNPQVBPcGVyYXRpb24uY2xhc3MgfTsKLQotICBmaW5hbCBwcml2YXRlIE9iamVjdCB2aXNpdG9yOwotCi0gIHByaXZhdGUgTWFwIG1ldGhvZHMgPSBuZXcgSGFzaE1hcCgpOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3Rvci4KLSAgICogQHBhcmFtIG8gIGEgdmlzaXRvciBvYmplY3QuCi0gICAqLwotICBwcml2YXRlIFZpc2l0b3JBZGFwdG9yKE9iamVjdCBvKQotICB7Ci0gICAgdGhpcy52aXNpdG9yID0gbzsKLSAgfQotCi0gIC8qKgotICAgKiBBZGRzIG1ldGhvZCB0byBtZXRob2QgYmluZGluZy4KLSAgICogQHBhcmFtIHdzZGxNZXRob2QgICAgYSBXU0RMIG1ldGhvZC4KLSAgICogQHBhcmFtIHRhcmdldE1ldGhvZCAgYSAgdGFyZ2V0IG1ldGhvZC4KLSAgICovCi0gIHByaXZhdGUgdm9pZCBhZGRNZXRob2RCaW5kaW5nKE1ldGhvZCB3c2RsTWV0aG9kLCBNZXRob2QgdGFyZ2V0TWV0aG9kKQotICB7Ci0gICAgbWV0aG9kcy5wdXQod3NkbE1ldGhvZCwgdGFyZ2V0TWV0aG9kKTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHByb3hpZXMgYWxsICJ2aXNpdChYWFgpIiBtZXRob2RzIHRvIHRoZSBjb3JyZXNwb25kaW5nCi0gICAqICJ2aXNpdChYWFgpIiBtZXRob2RzIG9mIHRoZSB0YXJnZXQgdmlzaXRvciBvYmplY3QuIAotICAgKiBAc2VlIGphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25IYW5kbGVyI2ludm9rZShPYmplY3QsIE1ldGhvZCwgT2JqZWN0W10pCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IGludm9rZShPYmplY3QgcHJveHksIE1ldGhvZCBtLCBPYmplY3RbXSBwYXJhbXMpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBNZXRob2QgdGFyZ2V0ID0gKE1ldGhvZCkgbWV0aG9kcy5nZXQobSk7Ci0gICAgICAvLyBhc3NlcnQgdGFyZ2V0ICE9IG51bGwKLSAgICAgIHJldHVybiB0YXJnZXQuaW52b2tlKHZpc2l0b3IsIHBhcmFtcyk7Ci0gICAgfQotICAgIGNhdGNoIChUaHJvd2FibGUgdCkKLSAgICB7Ci0gICAgICB0LnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGV4dHJhY3QgdGhlIHNob3J0IGNsYXNzIG5hbWUuIAotICAgKiBAcGFyYW0gYyAgYSBjbGFzcy4KLSAgICogQHJldHVybiB0aGUgc2hvcnQgY2xhc3MgbmFtZS4KLSAgICovCi0gIHN0YXRpYyBwcml2YXRlIFN0cmluZyBnZXROYW1lKENsYXNzIGMpCi0gIHsKLSAgICBpZiAoYyAhPSBudWxsKQotICAgIHsKLSAgICAgIFN0cmluZyBuYW1lID0gYy5nZXROYW1lKCk7Ci0gICAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcobmFtZS5sYXN0SW5kZXhPZigiLiIpICsgMSk7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgZ2VuZXJhdGVzIHByb3h5IGZvciB0aGUgZ2l2ZW4gdmlzaXRvci4KLSAgICogUHJveHkgcmVkaXJlY3RzIGFsbCB2aXNpdChYWFgpIGNhbGxiYWNrIHRvIHRoZSBpbXBsZW1lbnRlZCBpbiB2aXNpdG9yCi0gICAqIG9iamVjdC4KLSAgICogQHBhcmFtIHZpc2l0b3IgIGEgdmlzdG9yIG9iamVjdC4KLSAgICogQHJldHVybiBhIHByb3h5IGZvciB0aGUgZ2l2ZW4gdmlzaXRvci4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgV1NETFRyYXZlcnNhbCBhZGFwdChPYmplY3QgdmlzaXRvcikKLSAgewotICAgIFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsID0gbmV3IFdTRExUcmF2ZXJzYWwoKTsKLQotICAgIGlmICh2aXNpdG9yID09IG51bGwpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJWaXNpdG9yIG9iamVjdCBjYW4gbm90IGJlIE5VTEwiKTsKLQotICAgIFZpc2l0b3JBZGFwdG9yIGFkYXB0b3IgPSBuZXcgVmlzaXRvckFkYXB0b3IodmlzaXRvcik7Ci0KLSAgICAvLyBjaGVjayB3aGV0aGVyIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkCi0gICAgLy8gZ2V0IHJlYWwgY2xhc3Mgb2YgdGhlIG9iamVjdAotICAgIENsYXNzIGMgPSB2aXNpdG9yLmdldENsYXNzKCk7Ci0gICAgLy8gaXRlcmF0ZXMgdGhyb3VnaCB3c2RsIGFydGlmYWN0cyBhbmQgbG9va2luZyBmb3IKLSAgICAvLyB2b2lkIHZpc2l0KFhYWCkgaW1wbGVtZW50ZWQgbWV0aG9kcy4gIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd3NkbC5sZW5ndGg7IGkrKykKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICAvLyBpZiBtZXRob2QgaXMgbm90IGZvdW5kIHRoZSBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24KLSAgICAgICAgTWV0aG9kIG0gPQotICAgICAgICAgIGMuZ2V0TWV0aG9kKAotICAgICAgICAgICAgInZpc2l0IiwKLSAgICAgICAgICAgIG5ldyBDbGFzc1tdIHsgd3NkbFtpXSwgT2JqZWN0LmNsYXNzLCBXU0RMVHJhdmVyc2FsQ29udGV4dC5jbGFzcyB9KTsKLSAgICAgICAgLy8gcmVnaXN0ZXIgYmluZGluZyBXU0RMVmlzaXRvciBtZXRob2QgLT4gdGFyZ2V0IHZpc2l0b3IgbWV0aG9kCi0gICAgICAgIGFkYXB0b3IuYWRkTWV0aG9kQmluZGluZygKLSAgICAgICAgICBXU0RMVmlzaXRvci5jbGFzcy5nZXRNZXRob2QoCi0gICAgICAgICAgICAidmlzaXQiLAotICAgICAgICAgICAgbmV3IENsYXNzW10geyB3c2RsW2ldLCBPYmplY3QuY2xhc3MsIFdTRExUcmF2ZXJzYWxDb250ZXh0LmNsYXNzIH0pLAotICAgICAgICAgIG0pOwotICAgICAgICAvLyByZWdpc3RlciB2aXNpdFhYWCBpbiBXU0RMVHJhdmVyc2FsQnVpbGRlcgotICAgICAgICBtID0KLSAgICAgICAgICBXU0RMVHJhdmVyc2FsLmNsYXNzLmdldE1ldGhvZCgKLSAgICAgICAgICAgICJ2aXNpdCIgKyBnZXROYW1lKHdzZGxbaV0pLAotICAgICAgICAgICAgbmV3IENsYXNzW10geyBib29sZWFuLmNsYXNzIH0pOwotICAgICAgICBtLmludm9rZSh0cmF2ZXJzYWwsIG5ldyBPYmplY3RbXSB7IEJvb2xlYW4uVFJVRSB9KTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgIH0KLQotICAgIC8vIGNvbnN0cnVjdCB0aGUgV1NETFZpc2l0b3IgYnkgdXNpbmcgamF2YS5sYW5nLnJlZmxlY3QuUHJveHkKLSAgICBDbGFzc0xvYWRlciBsb2FkZXIgPSBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpOwotICAgIFdTRExWaXNpdG9yIHdzZGxWaXNpdG9yID0KLSAgICAgIChXU0RMVmlzaXRvcikgUHJveHkubmV3UHJveHlJbnN0YW5jZShsb2FkZXIsIHZpc2l0b3JDbGFzcywgYWRhcHRvcik7Ci0gICAgLy8gdHJhdmVyc2UgV1NETCBkb2N1bWVudAotICAgIHRyYXZlcnNhbC5zZXRWaXNpdG9yKHdzZGxWaXNpdG9yKTsKLSAgICByZXR1cm4gdHJhdmVyc2FsOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3RyYXZlcnNhbC9XU0RMVHJhdmVyc2FsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3RyYXZlcnNhbC9XU0RMVHJhdmVyc2FsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYmMyYjUuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC90cmF2ZXJzYWwvV1NETFRyYXZlcnNhbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzI5MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC50cmF2ZXJzYWw7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbjsKLQotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLS8qKgotICogVGhlIGNsYXNzIGltcGxlbWVudHMgcGxhaW4gdHJhdmVyc2Ugb3ZlciBXU0RMIGFydGlmYWN0cy4KLSAqIFdTRExUcmF2ZXJzYWwgaXMgY29udGV4dC1kcml2ZW4gdHJhdmVyc2FsLiAKLSAqIAotICogQGF1dGhvciBBbmRyZXkgS3VsaWsKLSAqLwotcHVibGljIGNsYXNzIFdTRExUcmF2ZXJzYWwKLXsKLQotICAvKioKLSAgICogQ3VycmVudCBXU0RMIHZpc2l0b3IgKGNhbGxiYWNrKS4KLSAgICovCi0gIHByaXZhdGUgV1NETFZpc2l0b3IgdmlzaXRvcjsKLQotICAvKioKLSAgICogRmxhZ3Mgd2hpY2ggc3BlY2lmeSB3aGV0aGVyIHRyYXZlcnNhbCB3aWxsIHRyYXZlcnMgZnJvbSBvbmUgV1NETCBhcnRpZmFjdAotICAgKiB0byBhbm90aGVyLgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZzJCaW5kaW5nT3BlcmF0aW9uID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZzJFbGVtZW50ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZzJFeHRlbnNpYmlsaXR5RWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZUJpbmRpbmcyUG9ydFR5cGUgPSB0cnVlOyAvLyByZWZlcmVuY2UKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZ0ZhdWx0MkVsZW1lbnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VCaW5kaW5nRmF1bHQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VCaW5kaW5nSW5wdXQyRWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZUJpbmRpbmdJbnB1dDJFeHRlbnNpYmlsaXR5RWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yQmluZGluZ0ZhdWx0ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJCaW5kaW5nSW5wdXQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMkJpbmRpbmdPdXRwdXQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMkVsZW1lbnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMkV4dGVuc2liaWxpdHlFbGVtZW50ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJPcGVyYXRpb24gPSB0cnVlOyAvLyByZWZlcmVuY2UgIAotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VCaW5kaW5nT3V0cHV0MkVsZW1lbnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VCaW5kaW5nT3V0cHV0MkV4dGVuc2liaWxpdHlFbGVtZW50ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlRGVmaW5pdGlvbjJCaW5kaW5nID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlRGVmaW5pdGlvbjJFbGVtZW50ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlRGVmaW5pdGlvbjJFeHRlbnNpYmlsaXR5RWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZURlZmluaXRpb24ySW1wb3J0ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlRGVmaW5pdGlvbjJNZXNzYWdlID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlRGVmaW5pdGlvbjJQb3J0VHlwZSA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZURlZmluaXRpb24yU2VydmljZSA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZURlZmluaXRpb24yVHlwZXMgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VGYXVsdDJFbGVtZW50ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlRmF1bHQyTWVzc2FnZSA9IHRydWU7IC8vIHJlZmVyZW5jZSAKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlSW1wb3J0MkRlZmluaXRpb24gPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VJbXBvcnQyRWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZUlucHV0MkVsZW1lbnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VJbnB1dDJNZXNzYWdlID0gdHJ1ZTsgLy8gcmVmZXJlbmNlIAotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VNZXNzYWdlMkVsZW1lbnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VNZXNzYWdlMlBhcnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VPcGVyYXRpb24yRWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZU9wZXJhdGlvbjJGYXVsdCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZU9wZXJhdGlvbjJJbnB1dCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZU9wZXJhdGlvbjJPdXRwdXQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VPdXRwdXQyRWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZU91dHB1dDJNZXNzYWdlID0gdHJ1ZTsgLy8gcmVmZXJlbmNlIAotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VQYXJ0MkVsZW1lbnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VQb3J0MkJpbmRpbmcgPSB0cnVlOyAvLyByZWZlcmVuY2UgCi0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZVBvcnQyRWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZVBvcnQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VQb3J0VHlwZTJFbGVtZW50ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlUG9ydFR5cGUyT3BlcmF0aW9uID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlU2VydmljZTJFbGVtZW50ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlU2VydmljZTJFeHRlbnNpYmlsaXR5RWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZVNlcnZpY2UyUG9ydCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZVR5cGVzMkVsZW1lbnQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gdHJhdmVyc2VUeXBlczJFeHRlbnNpYmlsaXR5RWxlbWVudCA9IHRydWU7Ci0gIC8vcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlU09BUEJvZHkyUGFydCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZVNPQVBIZWFkZXIyU09BUEhlYWRlckZhdWx0ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZzJTT0FQQmluZGluZyA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yU09BUE9wZXJhdGlvbiA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZUJpbmRpbmdJbnB1dDJTT0FQSGVhZGVyID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZ0lucHV0MlNPQVBCb2R5ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZ091dHB1dDJTT0FQSGVhZGVyID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHRyYXZlcnNlQmluZGluZ091dHB1dDJTT0FQQm9keSA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiB0cmF2ZXJzZUJpbmRpbmdGYXVsdDJTT0FQRmF1bHQgPSB0cnVlOwotCi0gIC8qKgotICAgKiBGbGFncyB3aGljaCBzcGVjaWZ5IHdoZXRoZXIgdHJhdmVyc2FsIHdpbGwgdmlzaXQgY29ycmVzcG9uZGluZyBXU0RMCi0gICAqIGFydGlmYWN0LgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0QmluZGluZyA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gdmlzaXRCaW5kaW5nRmF1bHQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0QmluZGluZ0lucHV0ID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiB2aXNpdEJpbmRpbmdPcGVyYXRpb24gPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0QmluZGluZ091dHB1dCA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gdmlzaXREZWZpbml0aW9uID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiB2aXNpdEVsZW1lbnQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0RmF1bHQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0SW1wb3J0ID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiB2aXNpdElucHV0ID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiB2aXNpdE1lc3NhZ2UgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0T3BlcmF0aW9uID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiB2aXNpdE91dHB1dCA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gdmlzaXRQYXJ0ID0gZmFsc2U7Ci0gIHByaXZhdGUgYm9vbGVhbiB2aXNpdFBvcnQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0UG9ydFR5cGUgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0U2VydmljZSA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gdmlzaXRUeXBlcyA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gdmlzaXRTT0FQQmluZGluZyA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gdmlzaXRTT0FQQm9keSA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gdmlzaXRTT0FQRmF1bHQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0U09BUEhlYWRlciA9IGZhbHNlOwotICBwcml2YXRlIGJvb2xlYW4gdmlzaXRTT0FQSGVhZGVyRmF1bHQgPSBmYWxzZTsKLSAgcHJpdmF0ZSBib29sZWFuIHZpc2l0U09BUE9wZXJhdGlvbiA9IGZhbHNlOwotCi0gIExpc3QgYWxyZWFkeVRyYXZlcnNlZERlZmluaXRpb25zOwotICAvKioKLSAgICogRGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I09iamVjdCgpCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCgpCi0gIHsKLQlhbHJlYWR5VHJhdmVyc2VkRGVmaW5pdGlvbnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCBzcGVjaWZpZXMgdGhhdCB0cmF2ZXJzYWwgd2lsbCBpZ25vcmUgaW5kaXJlY3QgcmVmZXJlbmNlcyBiZXR3ZWVuCi0gICAqIFdTREwgYXJ0aWZhY3RzLiBGb3IgZXhhbXBsZToKLSAgICogPG9sPgotICAgKiAgIDxsaT5iaW5kaW5nIHRvIHBvcnQgdHlwZTwvbGk+Ci0gICAqICAgPGxpPmJpbmRpbmcgb3BlcmF0aW9uIHRvIG9wZXJhdGlvbjwvbGk+Ci0gICAqICAgPGxpPmZhdWx0IHRvIG1lc3NhZ2U8L2xpPgotICAgKiAgIDxsaT5pbnB1dCB0byBtZXNzYWdlPC9saT4KLSAgICogICA8bGk+b3V0cHV0IHRvIG1lc3NhZ2U8L2xpPgotICAgKiAgIDxsaT5wb3J0IHRvIGJpbmRpbmc8L2xpPgotICAgKiA8L29sPgotICAgKi8KLSAgcHVibGljIHZvaWQgaWdub3JlUmVmZXJlbmNlcygpCi0gIHsKLSAgICBpZ25vcmVCaW5kaW5nMlBvcnRUeXBlKCk7Ci0gICAgaWdub3JlQmluZGluZ09wZXJhdGlvbjJPcGVyYXRpb24oKTsKLSAgICBpZ25vcmVGYXVsdDJNZXNzYWdlKCk7Ci0gICAgaWdub3JlSW5wdXQyTWVzc2FnZSgpOwotICAgIGlnbm9yZU91dHB1dDJNZXNzYWdlKCk7Ci0gICAgaWdub3JlUG9ydDJCaW5kaW5nKCk7Ci0gICAgLy9pZ25vcmVTT0FQQm9keTJQYXJ0KCk7Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCBzZXRzIHZpc2l0b3IuCi0gICAqIEBwYXJhbSB2aXNpdG9yICBhIFdTREwgdmlzaXRvci4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFZpc2l0b3IoV1NETFZpc2l0b3IgdmlzaXRvcikKLSAgewotICAgIHRoaXMudmlzaXRvciA9IHZpc2l0b3I7Ci0gIH0KLQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsLgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZzJTT0FQQmluZGluZygpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmcyU09BUEJpbmRpbmcgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZ09wZXJhdGlvbjJTT0FQT3BlcmF0aW9uKCkKLSAgewotICAgIHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJTT0FQT3BlcmF0aW9uID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZUJpbmRpbmdJbnB1dDJTT0FQSGVhZGVyKCkKLSAgewotICAgIHRyYXZlcnNlQmluZGluZ0lucHV0MlNPQVBIZWFkZXIgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZ0lucHV0MlNPQVBCb2R5KCkKLSAgewotICAgIHRyYXZlcnNlQmluZGluZ0lucHV0MlNPQVBCb2R5ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZUJpbmRpbmdPdXRwdXQyU09BUEhlYWRlcigpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmdPdXRwdXQyU09BUEhlYWRlciA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nT3V0cHV0MlNPQVBCb2R5KCkKLSAgewotICAgIHRyYXZlcnNlQmluZGluZ091dHB1dDJTT0FQQm9keSA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nRmF1bHQyU09BUEZhdWx0KCkKLSAgewotICAgIHRyYXZlcnNlQmluZGluZ0ZhdWx0MlNPQVBGYXVsdCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVTT0FQSGVhZGVyMlNPQVBIZWFkZXJGYXVsdCgpCi0gIHsKLSAgICB0cmF2ZXJzZVNPQVBIZWFkZXIyU09BUEhlYWRlckZhdWx0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZUJpbmRpbmcyQmluZGluZ09wZXJhdGlvbigpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmcyQmluZGluZ09wZXJhdGlvbiA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nMkVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nMkVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZzJFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmcyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZzJQb3J0VHlwZSgpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmcyUG9ydFR5cGUgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZ0ZhdWx0MkVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nRmF1bHQyRWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nRmF1bHQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nRmF1bHQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZ0lucHV0MkVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nSW5wdXQyRWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nSW5wdXQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nSW5wdXQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZ09wZXJhdGlvbjJCaW5kaW5nRmF1bHQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMkJpbmRpbmdGYXVsdCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nT3BlcmF0aW9uMkJpbmRpbmdJbnB1dCgpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yQmluZGluZ0lucHV0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZUJpbmRpbmdPcGVyYXRpb24yQmluZGluZ091dHB1dCgpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yQmluZGluZ091dHB1dCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nT3BlcmF0aW9uMkVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMkVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZ09wZXJhdGlvbjJFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZ09wZXJhdGlvbjJPcGVyYXRpb24oKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMk9wZXJhdGlvbiA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nT3V0cHV0MkVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nT3V0cHV0MkVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZ091dHB1dDJFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmdPdXRwdXQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlRGVmaW5pdGlvbjJCaW5kaW5nKCkKLSAgewotICAgIHRyYXZlcnNlRGVmaW5pdGlvbjJCaW5kaW5nID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZURlZmluaXRpb24yRWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZURlZmluaXRpb24yRWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVEZWZpbml0aW9uMkV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgewotICAgIHRyYXZlcnNlRGVmaW5pdGlvbjJFeHRlbnNpYmlsaXR5RWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVEZWZpbml0aW9uMkltcG9ydCgpCi0gIHsKLSAgICB0cmF2ZXJzZURlZmluaXRpb24ySW1wb3J0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZURlZmluaXRpb24yTWVzc2FnZSgpCi0gIHsKLSAgICB0cmF2ZXJzZURlZmluaXRpb24yTWVzc2FnZSA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVEZWZpbml0aW9uMlBvcnRUeXBlKCkKLSAgewotICAgIHRyYXZlcnNlRGVmaW5pdGlvbjJQb3J0VHlwZSA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVEZWZpbml0aW9uMlNlcnZpY2UoKQotICB7Ci0gICAgdHJhdmVyc2VEZWZpbml0aW9uMlNlcnZpY2UgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlRGVmaW5pdGlvbjJUeXBlcygpCi0gIHsKLSAgICB0cmF2ZXJzZURlZmluaXRpb24yVHlwZXMgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlRmF1bHQyRWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZUZhdWx0MkVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlRmF1bHQyTWVzc2FnZSgpCi0gIHsKLSAgICB0cmF2ZXJzZUZhdWx0Mk1lc3NhZ2UgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlSW1wb3J0MkRlZmluaXRpb24oKQotICB7Ci0gICAgdHJhdmVyc2VJbXBvcnQyRGVmaW5pdGlvbiA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVJbXBvcnQyRWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZUltcG9ydDJFbGVtZW50ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZUlucHV0MkVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VJbnB1dDJFbGVtZW50ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZUlucHV0Mk1lc3NhZ2UoKQotICB7Ci0gICAgdHJhdmVyc2VJbnB1dDJNZXNzYWdlID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZU1lc3NhZ2UyRWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZU1lc3NhZ2UyRWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVNZXNzYWdlMlBhcnQoKQotICB7Ci0gICAgdHJhdmVyc2VNZXNzYWdlMlBhcnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlT3BlcmF0aW9uMkVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VPcGVyYXRpb24yRWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVPcGVyYXRpb24yRmF1bHQoKQotICB7Ci0gICAgdHJhdmVyc2VPcGVyYXRpb24yRmF1bHQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlT3BlcmF0aW9uMklucHV0KCkKLSAgewotICAgIHRyYXZlcnNlT3BlcmF0aW9uMklucHV0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZU9wZXJhdGlvbjJPdXRwdXQoKQotICB7Ci0gICAgdHJhdmVyc2VPcGVyYXRpb24yT3V0cHV0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZU91dHB1dDJFbGVtZW50KCkKLSAgewotICAgIHRyYXZlcnNlT3V0cHV0MkVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlT3V0cHV0Mk1lc3NhZ2UoKQotICB7Ci0gICAgdHJhdmVyc2VPdXRwdXQyTWVzc2FnZSA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVQYXJ0MkVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VQYXJ0MkVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlUG9ydDJCaW5kaW5nKCkKLSAgewotICAgIHRyYXZlcnNlUG9ydDJCaW5kaW5nID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZVBvcnQyRWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZVBvcnQyRWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVQb3J0MkV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgewotICAgIHRyYXZlcnNlUG9ydDJFeHRlbnNpYmlsaXR5RWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVQb3J0VHlwZTJFbGVtZW50KCkKLSAgewotICAgIHRyYXZlcnNlUG9ydFR5cGUyRWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVQb3J0VHlwZTJPcGVyYXRpb24oKQotICB7Ci0gICAgdHJhdmVyc2VQb3J0VHlwZTJPcGVyYXRpb24gPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgcmVmZXJlbmNlIGJldHdlZW4gV1NETCBlbGVtZW50cy4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlU2VydmljZTJFbGVtZW50KCkKLSAgewotICAgIHRyYXZlcnNlU2VydmljZTJFbGVtZW50ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZVNlcnZpY2UyRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICB7Ci0gICAgdHJhdmVyc2VTZXJ2aWNlMkV4dGVuc2liaWxpdHlFbGVtZW50ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIHJlZmVyZW5jZSBiZXR3ZWVuIFdTREwgZWxlbWVudHMuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZVNlcnZpY2UyUG9ydCgpCi0gIHsKLSAgICB0cmF2ZXJzZVNlcnZpY2UyUG9ydCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVUeXBlczJFbGVtZW50KCkKLSAgewotICAgIHRyYXZlcnNlVHlwZXMyRWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSByZWZlcmVuY2UgYmV0d2VlbiBXU0RMIGVsZW1lbnRzLi4uCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZVR5cGVzMkV4dGVuc2liaWxpdHlFbGVtZW50KCkKLSAgewotICAgIHRyYXZlcnNlVHlwZXMyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotCi0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIHZpc2l0IG9yIG5vdCB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB2YWx1ZSB0cnVlIGlmIHRoZSBXU0RMIGVsZW1lbnQgc2hvdWxkIGJlIHZpc2l0ZWQsIG90aGVyd2lzZSAtIGZhbHNlLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCB2aXNpdFNPQVBCaW5kaW5nKGJvb2xlYW4gdmFsdWUpCi0gIHsKLSAgICB2aXNpdFNPQVBCaW5kaW5nID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0U09BUEJvZHkoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHZpc2l0U09BUEJvZHkgPSB2YWx1ZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byB2aXNpdCBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsdWUgdHJ1ZSBpZiB0aGUgV1NETCBlbGVtZW50IHNob3VsZCBiZSB2aXNpdGVkLCBvdGhlcndpc2UgLSBmYWxzZS4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgdmlzaXRTT0FQRmF1bHQoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHZpc2l0U09BUEZhdWx0ID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0U09BUEhlYWRlcihib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRTT0FQSGVhZGVyID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0U09BUEhlYWRlckZhdWx0KGJvb2xlYW4gdmFsdWUpCi0gIHsKLSAgICB2aXNpdFNPQVBIZWFkZXJGYXVsdCA9IHZhbHVlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIHZpc2l0IG9yIG5vdCB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB2YWx1ZSB0cnVlIGlmIHRoZSBXU0RMIGVsZW1lbnQgc2hvdWxkIGJlIHZpc2l0ZWQsIG90aGVyd2lzZSAtIGZhbHNlLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCB2aXNpdFNPQVBPcGVyYXRpb24oYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHZpc2l0U09BUE9wZXJhdGlvbiA9IHZhbHVlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIHZpc2l0IG9yIG5vdCB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB2YWx1ZSB0cnVlIGlmIHRoZSBXU0RMIGVsZW1lbnQgc2hvdWxkIGJlIHZpc2l0ZWQsIG90aGVyd2lzZSAtIGZhbHNlLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCB2aXNpdEJpbmRpbmcoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHZpc2l0QmluZGluZyA9IHZhbHVlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIHZpc2l0IG9yIG5vdCB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB2YWx1ZSB0cnVlIGlmIHRoZSBXU0RMIGVsZW1lbnQgc2hvdWxkIGJlIHZpc2l0ZWQsIG90aGVyd2lzZSAtIGZhbHNlLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCB2aXNpdEJpbmRpbmdGYXVsdChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRCaW5kaW5nRmF1bHQgPSB2YWx1ZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byB2aXNpdCBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsdWUgdHJ1ZSBpZiB0aGUgV1NETCBlbGVtZW50IHNob3VsZCBiZSB2aXNpdGVkLCBvdGhlcndpc2UgLSBmYWxzZS4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgdmlzaXRCaW5kaW5nSW5wdXQoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHZpc2l0QmluZGluZ0lucHV0ID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0QmluZGluZ09wZXJhdGlvbihib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRCaW5kaW5nT3BlcmF0aW9uID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0QmluZGluZ091dHB1dChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRCaW5kaW5nT3V0cHV0ID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0RGVmaW5pdGlvbihib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXREZWZpbml0aW9uID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0RWxlbWVudChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRFbGVtZW50ID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSB2YWx1ZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byB2aXNpdCBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsdWUgdHJ1ZSBpZiB0aGUgV1NETCBlbGVtZW50IHNob3VsZCBiZSB2aXNpdGVkLCBvdGhlcndpc2UgLSBmYWxzZS4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgdmlzaXRGYXVsdChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRGYXVsdCA9IHZhbHVlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIHZpc2l0IG9yIG5vdCB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB2YWx1ZSB0cnVlIGlmIHRoZSBXU0RMIGVsZW1lbnQgc2hvdWxkIGJlIHZpc2l0ZWQsIG90aGVyd2lzZSAtIGZhbHNlLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCB2aXNpdEltcG9ydChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRJbXBvcnQgPSB2YWx1ZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byB2aXNpdCBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsdWUgdHJ1ZSBpZiB0aGUgV1NETCBlbGVtZW50IHNob3VsZCBiZSB2aXNpdGVkLCBvdGhlcndpc2UgLSBmYWxzZS4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgdmlzaXRJbnB1dChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRJbnB1dCA9IHZhbHVlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIHZpc2l0IG9yIG5vdCB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB2YWx1ZSB0cnVlIGlmIHRoZSBXU0RMIGVsZW1lbnQgc2hvdWxkIGJlIHZpc2l0ZWQsIG90aGVyd2lzZSAtIGZhbHNlLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCB2aXNpdE1lc3NhZ2UoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHZpc2l0TWVzc2FnZSA9IHZhbHVlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIHZpc2l0IG9yIG5vdCB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSB2YWx1ZSB0cnVlIGlmIHRoZSBXU0RMIGVsZW1lbnQgc2hvdWxkIGJlIHZpc2l0ZWQsIG90aGVyd2lzZSAtIGZhbHNlLgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCB2aXNpdE9wZXJhdGlvbihib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRPcGVyYXRpb24gPSB2YWx1ZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byB2aXNpdCBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsdWUgdHJ1ZSBpZiB0aGUgV1NETCBlbGVtZW50IHNob3VsZCBiZSB2aXNpdGVkLCBvdGhlcndpc2UgLSBmYWxzZS4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgdmlzaXRPdXRwdXQoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHZpc2l0T3V0cHV0ID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0UGFydChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRQYXJ0ID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0UG9ydChib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRQb3J0ID0gdmFsdWU7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gdmlzaXQgb3Igbm90IHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIHZhbHVlIHRydWUgaWYgdGhlIFdTREwgZWxlbWVudCBzaG91bGQgYmUgdmlzaXRlZCwgb3RoZXJ3aXNlIC0gZmFsc2UuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIHZpc2l0UG9ydFR5cGUoYm9vbGVhbiB2YWx1ZSkKLSAgewotICAgIHZpc2l0UG9ydFR5cGUgPSB2YWx1ZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byB2aXNpdCBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsdWUgdHJ1ZSBpZiB0aGUgV1NETCBlbGVtZW50IHNob3VsZCBiZSB2aXNpdGVkLCBvdGhlcndpc2UgLSBmYWxzZS4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgdmlzaXRTZXJ2aWNlKGJvb2xlYW4gdmFsdWUpCi0gIHsKLSAgICB2aXNpdFNlcnZpY2UgPSB2YWx1ZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byB2aXNpdCBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gdmFsdWUgdHJ1ZSBpZiB0aGUgV1NETCBlbGVtZW50IHNob3VsZCBiZSB2aXNpdGVkLCBvdGhlcndpc2UgLSBmYWxzZS4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgdmlzaXRUeXBlcyhib29sZWFuIHZhbHVlKQotICB7Ci0gICAgdmlzaXRUeXBlcyA9IHZhbHVlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIFdTREwKLSAgICogZWxlbWVudC4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZygpCi0gIHsKLSAgICB0cmF2ZXJzZURlZmluaXRpb24yQmluZGluZyA9IGZhbHNlOwotICAgIHRyYXZlcnNlUG9ydDJCaW5kaW5nID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIFdTREwKLSAgICogZWxlbWVudC4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlQmluZGluZ0ZhdWx0KCkKLSAgewotICAgIHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJCaW5kaW5nRmF1bHQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgV1NETAotICAgKiBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nSW5wdXQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMkJpbmRpbmdJbnB1dCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgY29ycmVzcG9uZGluZyBXU0RMCi0gICAqIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZUJpbmRpbmdPcGVyYXRpb24oKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nMkJpbmRpbmdPcGVyYXRpb24gPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgV1NETAotICAgKiBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVCaW5kaW5nT3V0cHV0KCkKLSAgewotICAgIHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJCaW5kaW5nT3V0cHV0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIFdTREwKLSAgICogZWxlbWVudC4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlRGVmaW5pdGlvbigpCi0gIHsKLSAgICB0cmF2ZXJzZUltcG9ydDJEZWZpbml0aW9uID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIFdTREwKLSAgICogZWxlbWVudC4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlRWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmcyRWxlbWVudCA9IGZhbHNlOwotICAgIHRyYXZlcnNlQmluZGluZ0ZhdWx0MkVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZUJpbmRpbmdJbnB1dDJFbGVtZW50ID0gZmFsc2U7Ci0gICAgdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMkVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZUJpbmRpbmdPdXRwdXQyRWxlbWVudCA9IGZhbHNlOwotICAgIHRyYXZlcnNlRGVmaW5pdGlvbjJFbGVtZW50ID0gZmFsc2U7Ci0gICAgdHJhdmVyc2VQb3J0MkVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZVNlcnZpY2UyRWxlbWVudCA9IGZhbHNlOwotICAgIHRyYXZlcnNlRmF1bHQyRWxlbWVudCA9IGZhbHNlOwotICAgIHRyYXZlcnNlT3V0cHV0MkVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZUltcG9ydDJFbGVtZW50ID0gZmFsc2U7Ci0gICAgdHJhdmVyc2VJbnB1dDJFbGVtZW50ID0gZmFsc2U7Ci0gICAgdHJhdmVyc2VPcGVyYXRpb24yRWxlbWVudCA9IGZhbHNlOwotICAgIHRyYXZlcnNlTWVzc2FnZTJFbGVtZW50ID0gZmFsc2U7Ci0gICAgdHJhdmVyc2VQYXJ0MkVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZVBvcnRUeXBlMkVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZVR5cGVzMkVsZW1lbnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgV1NETAotICAgKiBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVFeHRlbnNpYmlsaXR5RWxlbWVudCgpCi0gIHsKLSAgICB0cmF2ZXJzZVNlcnZpY2UyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZVBvcnQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZURlZmluaXRpb24yRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZUJpbmRpbmdPdXRwdXQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZUJpbmRpbmcyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZUJpbmRpbmdGYXVsdDJFeHRlbnNpYmlsaXR5RWxlbWVudCA9IGZhbHNlOwotICAgIHRyYXZlcnNlQmluZGluZ0lucHV0MkV4dGVuc2liaWxpdHlFbGVtZW50ID0gZmFsc2U7Ci0gICAgdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMkV4dGVuc2liaWxpdHlFbGVtZW50ID0gZmFsc2U7Ci0gICAgdHJhdmVyc2VUeXBlczJFeHRlbnNpYmlsaXR5RWxlbWVudCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgY29ycmVzcG9uZGluZyBXU0RMCi0gICAqIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZVNPQVBCaW5kaW5nKCkKLSAgewotICAgIHRyYXZlcnNlQmluZGluZzJTT0FQQmluZGluZyA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgY29ycmVzcG9uZGluZyBXU0RMCi0gICAqIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZVNPQVBPcGVyYXRpb24oKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMlNPQVBPcGVyYXRpb24gPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgV1NETAotICAgKiBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVTT0FQQm9keSgpCi0gIHsKLSAgICB0cmF2ZXJzZUJpbmRpbmdJbnB1dDJTT0FQQm9keSA9IGZhbHNlOwotICAgIHRyYXZlcnNlQmluZGluZ091dHB1dDJTT0FQQm9keSA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgY29ycmVzcG9uZGluZyBXU0RMCi0gICAqIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZVNPQVBIZWFkZXIoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nSW5wdXQyU09BUEhlYWRlciA9IGZhbHNlOwotICAgIHRyYXZlcnNlQmluZGluZ091dHB1dDJTT0FQSGVhZGVyID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIFdTREwKLSAgICogZWxlbWVudC4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlU09BUEhlYWRlckZhdWx0KCkKLSAgewotICAgIHRyYXZlcnNlU09BUEhlYWRlcjJTT0FQSGVhZGVyRmF1bHQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgV1NETAotICAgKiBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVTT0FQRmF1bHQoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nRmF1bHQyU09BUEZhdWx0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIFdTREwKLSAgICogZWxlbWVudC4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlRmF1bHQoKQotICB7Ci0gICAgdHJhdmVyc2VPcGVyYXRpb24yRmF1bHQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgV1NETAotICAgKiBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVJbXBvcnQoKQotICB7Ci0gICAgdHJhdmVyc2VJbXBvcnQyRGVmaW5pdGlvbiA9IGZhbHNlOyAvLyBmaXgKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgV1NETAotICAgKiBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVJbnB1dCgpCi0gIHsKLSAgICB0cmF2ZXJzZU9wZXJhdGlvbjJJbnB1dCA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgY29ycmVzcG9uZGluZyBXU0RMCi0gICAqIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZU1lc3NhZ2UoKQotICB7Ci0gICAgdHJhdmVyc2VGYXVsdDJNZXNzYWdlID0gZmFsc2U7Ci0gICAgdHJhdmVyc2VEZWZpbml0aW9uMk1lc3NhZ2UgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZUlucHV0Mk1lc3NhZ2UgPSBmYWxzZTsKLSAgICB0cmF2ZXJzZU91dHB1dDJNZXNzYWdlID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIFdTREwKLSAgICogZWxlbWVudC4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlT3BlcmF0aW9uKCkKLSAgewotICAgIHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJPcGVyYXRpb24gPSBmYWxzZTsKLSAgICB0cmF2ZXJzZVBvcnRUeXBlMk9wZXJhdGlvbiA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgY29ycmVzcG9uZGluZyBXU0RMCi0gICAqIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZU91dHB1dCgpCi0gIHsKLSAgICB0cmF2ZXJzZU9wZXJhdGlvbjJPdXRwdXQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgV1NETAotICAgKiBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVQYXJ0KCkKLSAgewotICAgIHRyYXZlcnNlTWVzc2FnZTJQYXJ0ID0gZmFsc2U7Ci0gICAgLy90cmF2ZXJzZVNPQVBCb2R5MlBhcnQgPSBmYWxzZTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotICAvKioKLSAgICogSW5zdHJ1Y3RzIHRyYXZlcnNhbCB0byBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgV1NETAotICAgKiBlbGVtZW50LgotICAgKiBAcmV0dXJuIGEgV1NETFRyYXZlcnNhbCBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgV1NETFRyYXZlcnNhbCBpZ25vcmVQb3J0KCkKLSAgewotICAgIHRyYXZlcnNlU2VydmljZTJQb3J0ID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIFdTREwKLSAgICogZWxlbWVudC4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlUG9ydFR5cGUoKQotICB7Ci0gICAgdHJhdmVyc2VCaW5kaW5nMlBvcnRUeXBlID0gZmFsc2U7Ci0gICAgdHJhdmVyc2VEZWZpbml0aW9uMlBvcnRUeXBlID0gZmFsc2U7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluc3RydWN0cyB0cmF2ZXJzYWwgdG8gaWdub3JlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIFdTREwKLSAgICogZWxlbWVudC4KLSAgICogQHJldHVybiBhIFdTRExUcmF2ZXJzYWwgb2JqZWN0LgotICAgKi8KLSAgcHVibGljIFdTRExUcmF2ZXJzYWwgaWdub3JlU2VydmljZSgpCi0gIHsKLSAgICB0cmF2ZXJzZURlZmluaXRpb24yU2VydmljZSA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0gIC8qKgotICAgKiBJbnN0cnVjdHMgdHJhdmVyc2FsIHRvIGlnbm9yZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgY29ycmVzcG9uZGluZyBXU0RMCi0gICAqIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gYSBXU0RMVHJhdmVyc2FsIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGlnbm9yZVR5cGVzKCkKLSAgewotICAgIHRyYXZlcnNlRGVmaW5pdGlvbjJUeXBlcyA9IGZhbHNlOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgYWRqdXN0cyB0cmF2ZXNlWFhYIHZhcmlhYmxlcyBhY2NvcmRpbmcgdG8gdGhlIHZpc2l0WFhYIHZhcmlhYmxlcwotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIGFkanVzdCgpCi0gIHsKLSAgICBhZGp1c3RQYXJ0KCk7Ci0gICAgYWRqdXN0U2VydmljZSgpOwotICAgIGFkanVzdFR5cGVzKCk7Ci0gICAgYWRqdXN0T3BlcmF0aW9uKCk7Ci0gICAgYWRqdXN0SW5wdXQoKTsKLSAgICBhZGp1c3RPdXRwdXQoKTsKLSAgICBhZGp1c3RGYXVsdCgpOwotICAgIGFkanVzdEJpbmRpbmcoKTsKLSAgICBhZGp1c3RCaW5kaW5nT3BlcmF0aW9uKCk7Ci0gICAgYWRqdXN0QmluZGluZ0lucHV0KCk7Ci0gICAgYWRqdXN0QmluZGluZ091dHB1dCgpOwotICAgIGFkanVzdEJpbmRpbmdGYXVsdCgpOwotICAgIGFkanVzdEltcG9ydCgpOwotICAgIGFkanVzdEVsZW1lbnQoKTsKLSAgICBhZGp1c3RNZXNzYWdlKCk7Ci0gICAgYWRqdXN0UG9ydCgpOwotICAgIGFkanVzdFBvcnRUeXBlKCk7Ci0gICAgYWRqdXN0RGVmaW5pdGlvbigpOwotICAgIGFkanVzdEV4dGVuc2liaWxpdHlFbGVtZW50KCk7Ci0gICAgYWRqdXN0U09BUEJpbmRpbmcoKTsKLSAgICBhZGp1c3RTT0FQQm9keSgpOwotICAgIGFkanVzdFNPQVBIZWFkZXIoKTsKLSAgICBhZGp1c3RTT0FQSGVhZGVyRmF1bHQoKTsKLSAgICBhZGp1c3RTT0FQRmF1bHQoKTsKLSAgICBhZGp1c3RTT0FQT3BlcmF0aW9uKCk7Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCBhZGp1c3RzIHRyYXZlcnNhbCBpZ25vcmUgZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZQotICAgKiBjb3JyZXNwb25kaW5nIHZpc2l0IGZsYWdzLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gYWRqdXN0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICB7Ci0gICAgYm9vbGVhbiB2YWx1ZSA9IHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZUV4dGVuc2liaWxpdHlFbGVtZW50KCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RQYXJ0KCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPSB2aXNpdFBhcnQgfHwgKHRyYXZlcnNlUGFydDJFbGVtZW50ICYmIGFkanVzdEVsZW1lbnQoKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZVBhcnQoKTsKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgYWRqdXN0cyB0cmF2ZXJzYWwgaWdub3JlIGZsYWdzIGFjY29yZGluZyB0byB0aGUKLSAgICogY29ycmVzcG9uZGluZyB2aXNpdCBmbGFncy4KLSAgICogQHJldHVybiBib29sZWFuIAotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGFkanVzdFNPQVBIZWFkZXIoKQotICB7Ci0gICAgYm9vbGVhbiB2YWx1ZSA9Ci0gICAgICB2aXNpdFNPQVBIZWFkZXIKLSAgICAgICAgfHwgKHRyYXZlcnNlU09BUEhlYWRlcjJTT0FQSGVhZGVyRmF1bHQgJiYgYWRqdXN0U09BUEhlYWRlckZhdWx0KCkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICBpZ25vcmVTT0FQSGVhZGVyKCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RCaW5kaW5nT3V0cHV0KCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPQotICAgICAgdmlzaXRCaW5kaW5nT3V0cHV0Ci0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmdPdXRwdXQyRWxlbWVudCAmJiBhZGp1c3RFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmdPdXRwdXQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICAgICAgICAmJiBhZGp1c3RFeHRlbnNpYmlsaXR5RWxlbWVudCgpKQotICAgICAgICB8fCAodHJhdmVyc2VCaW5kaW5nT3V0cHV0MlNPQVBCb2R5Ci0gICAgICAgICAgJiYgYWRqdXN0U09BUEJvZHkoKQotICAgICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmdPdXRwdXQyU09BUEhlYWRlciAmJiBhZGp1c3RTT0FQSGVhZGVyKCkpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgaWdub3JlQmluZGluZ091dHB1dCgpOwotICAgIHJldHVybiB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCBhZGp1c3RzIHRyYXZlcnNhbCBpZ25vcmUgZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZQotICAgKiBjb3JyZXNwb25kaW5nIHZpc2l0IGZsYWdzLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gYWRqdXN0RWxlbWVudCgpCi0gIHsKLSAgICBib29sZWFuIHZhbHVlID0gdmlzaXRFbGVtZW50OwotICAgIGlmICghdmFsdWUpCi0gICAgICBpZ25vcmVFbGVtZW50KCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RUeXBlcygpCi0gIHsKLSAgICBib29sZWFuIHZhbHVlID0KLSAgICAgIHZpc2l0VHlwZXMKLSAgICAgICAgfHwgKHRyYXZlcnNlVHlwZXMyRWxlbWVudCAmJiBhZGp1c3RFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZVR5cGVzMkV4dGVuc2liaWxpdHlFbGVtZW50ICYmIGFkanVzdEV4dGVuc2liaWxpdHlFbGVtZW50KCkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICBpZ25vcmVUeXBlcygpOwotICAgIHJldHVybiB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCBhZGp1c3RzIHRyYXZlcnNhbCBpZ25vcmUgZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZQotICAgKiBjb3JyZXNwb25kaW5nIHZpc2l0IGZsYWdzLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gYWRqdXN0U09BUEJpbmRpbmcoKQotICB7Ci0gICAgYm9vbGVhbiB2YWx1ZSA9IHZpc2l0U09BUEJpbmRpbmc7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZVNPQVBCaW5kaW5nKCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RQb3J0KCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPQotICAgICAgdmlzaXRQb3J0Ci0gICAgICAgIHx8ICh0cmF2ZXJzZVBvcnQyRWxlbWVudCAmJiBhZGp1c3RFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZVBvcnQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgJiYgYWRqdXN0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlUG9ydDJCaW5kaW5nICYmIGFkanVzdEJpbmRpbmcoKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZVBvcnQoKTsKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgYWRqdXN0cyB0cmF2ZXJzYWwgaWdub3JlIGZsYWdzIGFjY29yZGluZyB0byB0aGUKLSAgICogY29ycmVzcG9uZGluZyB2aXNpdCBmbGFncy4KLSAgICogQHJldHVybiBib29sZWFuIAotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGFkanVzdE9wZXJhdGlvbigpCi0gIHsKLSAgICBib29sZWFuIHZhbHVlID0KLSAgICAgIHZpc2l0T3BlcmF0aW9uCi0gICAgICAgIHx8ICh0cmF2ZXJzZU9wZXJhdGlvbjJFbGVtZW50ICYmIGFkanVzdEVsZW1lbnQoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlT3BlcmF0aW9uMklucHV0ICYmIGFkanVzdElucHV0KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZU9wZXJhdGlvbjJPdXRwdXQgJiYgYWRqdXN0T3V0cHV0KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZU9wZXJhdGlvbjJGYXVsdCAmJiBhZGp1c3RGYXVsdCgpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgaWdub3JlT3BlcmF0aW9uKCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RCaW5kaW5nT3BlcmF0aW9uKCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPQotICAgICAgdmlzaXRCaW5kaW5nT3BlcmF0aW9uCi0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yRWxlbWVudCAmJiBhZGp1c3RFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yQmluZGluZ0ZhdWx0ICYmIGFkanVzdEJpbmRpbmdGYXVsdCgpKQotICAgICAgICB8fCAodHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMkJpbmRpbmdPdXRwdXQgJiYgYWRqdXN0QmluZGluZ091dHB1dCgpKQotICAgICAgICB8fCAodHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMk9wZXJhdGlvbiAmJiBhZGp1c3RPcGVyYXRpb24oKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJCaW5kaW5nSW5wdXQgJiYgYWRqdXN0QmluZGluZ0lucHV0KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICAgICAgICAmJiBhZGp1c3RFeHRlbnNpYmlsaXR5RWxlbWVudCgpKQotICAgICAgICB8fCAodHJhdmVyc2VCaW5kaW5nT3BlcmF0aW9uMlNPQVBPcGVyYXRpb24gJiYgYWRqdXN0U09BUE9wZXJhdGlvbigpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgaWdub3JlQmluZGluZ09wZXJhdGlvbigpOwotICAgIHJldHVybiB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCBhZGp1c3RzIHRyYXZlcnNhbCBpZ25vcmUgZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZQotICAgKiBjb3JyZXNwb25kaW5nIHZpc2l0IGZsYWdzLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gYWRqdXN0SW5wdXQoKQotICB7Ci0gICAgYm9vbGVhbiB2YWx1ZSA9Ci0gICAgICB2aXNpdElucHV0Ci0gICAgICAgIHx8ICh0cmF2ZXJzZUlucHV0MkVsZW1lbnQgJiYgYWRqdXN0RWxlbWVudCgpKQotICAgICAgICB8fCAodHJhdmVyc2VJbnB1dDJNZXNzYWdlICYmIGFkanVzdE1lc3NhZ2UoKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZUlucHV0KCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RCaW5kaW5nKCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPQotICAgICAgdmlzaXRCaW5kaW5nCi0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmcyRWxlbWVudCAmJiBhZGp1c3RFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmcyQmluZGluZ09wZXJhdGlvbiAmJiBhZGp1c3RCaW5kaW5nT3BlcmF0aW9uKCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmcyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgJiYgYWRqdXN0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlQmluZGluZzJQb3J0VHlwZSAmJiBhZGp1c3RQb3J0VHlwZSgpKQotICAgICAgICB8fCAodHJhdmVyc2VCaW5kaW5nMlNPQVBCaW5kaW5nICYmIGFkanVzdFNPQVBCaW5kaW5nKCkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICBpZ25vcmVCaW5kaW5nKCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RTT0FQQm9keSgpCi0gIHsKLSAgICBib29sZWFuIHZhbHVlID0gdmlzaXRTT0FQQm9keTsKLSAgICAvKiB8fCAKLSAgICAJCSh0cmF2ZXJzZVNPQVBCb2R5MlBhcnQgJiYgYWRqdXN0UGFydCgpKTsqLwotICAgIGlmICghdmFsdWUpCi0gICAgICBpZ25vcmVTT0FQQm9keSgpOwotICAgIHJldHVybiB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCBhZGp1c3RzIHRyYXZlcnNhbCBpZ25vcmUgZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZQotICAgKiBjb3JyZXNwb25kaW5nIHZpc2l0IGZsYWdzLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gYWRqdXN0U09BUEhlYWRlckZhdWx0KCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPSB2aXNpdFNPQVBIZWFkZXJGYXVsdDsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgaWdub3JlU09BUEhlYWRlckZhdWx0KCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RCaW5kaW5nSW5wdXQoKQotICB7Ci0gICAgYm9vbGVhbiB2YWx1ZSA9Ci0gICAgICB2aXNpdEJpbmRpbmdJbnB1dAotICAgICAgICB8fCAodHJhdmVyc2VCaW5kaW5nSW5wdXQyRWxlbWVudCAmJiBhZGp1c3RFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmdJbnB1dDJFeHRlbnNpYmlsaXR5RWxlbWVudAotICAgICAgICAgICYmIGFkanVzdEV4dGVuc2liaWxpdHlFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZUJpbmRpbmdJbnB1dDJTT0FQQm9keQotICAgICAgICAgICYmIGFkanVzdFNPQVBCb2R5KCkKLSAgICAgICAgICB8fCAodHJhdmVyc2VCaW5kaW5nSW5wdXQyU09BUEhlYWRlciAmJiBhZGp1c3RTT0FQSGVhZGVyKCkpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgaWdub3JlQmluZGluZ0lucHV0KCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RPdXRwdXQoKQotICB7Ci0gICAgYm9vbGVhbiB2YWx1ZSA9Ci0gICAgICB2aXNpdE91dHB1dAotICAgICAgICB8fCAodHJhdmVyc2VPdXRwdXQyRWxlbWVudCAmJiBhZGp1c3RFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZU91dHB1dDJNZXNzYWdlICYmIGFkanVzdE1lc3NhZ2UoKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZU91dHB1dCgpOwotICAgIHJldHVybiB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCBhZGp1c3RzIHRyYXZlcnNhbCBpZ25vcmUgZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZQotICAgKiBjb3JyZXNwb25kaW5nIHZpc2l0IGZsYWdzLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gYWRqdXN0QmluZGluZ0ZhdWx0KCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPQotICAgICAgdmlzaXRCaW5kaW5nRmF1bHQKLSAgICAgICAgfHwgKHRyYXZlcnNlQmluZGluZ0ZhdWx0MkVsZW1lbnQgJiYgYWRqdXN0RWxlbWVudCgpKQotICAgICAgICB8fCAodHJhdmVyc2VCaW5kaW5nRmF1bHQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICAgICAgICAmJiBhZGp1c3RFeHRlbnNpYmlsaXR5RWxlbWVudCgpKQotICAgICAgICB8fCAodHJhdmVyc2VCaW5kaW5nRmF1bHQyU09BUEZhdWx0ICYmIGFkanVzdFNPQVBGYXVsdCgpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgaWdub3JlQmluZGluZ0ZhdWx0KCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RTT0FQT3BlcmF0aW9uKCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPSB2aXNpdFNPQVBPcGVyYXRpb247Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZVNPQVBPcGVyYXRpb24oKTsKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgYWRqdXN0cyB0cmF2ZXJzYWwgaWdub3JlIGZsYWdzIGFjY29yZGluZyB0byB0aGUKLSAgICogY29ycmVzcG9uZGluZyB2aXNpdCBmbGFncy4KLSAgICogQHJldHVybiBib29sZWFuIAotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGFkanVzdERlZmluaXRpb24oKQotICB7Ci0gICAgYm9vbGVhbiB2YWx1ZSA9Ci0gICAgICB2aXNpdERlZmluaXRpb24KLSAgICAgICAgfHwgKHRyYXZlcnNlRGVmaW5pdGlvbjJFbGVtZW50ICYmIGFkanVzdEVsZW1lbnQoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlRGVmaW5pdGlvbjJJbXBvcnQgJiYgYWRqdXN0SW1wb3J0KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZURlZmluaXRpb24yVHlwZXMgJiYgYWRqdXN0VHlwZXMoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlRGVmaW5pdGlvbjJNZXNzYWdlICYmIGFkanVzdE1lc3NhZ2UoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlRGVmaW5pdGlvbjJFeHRlbnNpYmlsaXR5RWxlbWVudAotICAgICAgICAgICYmIGFkanVzdEV4dGVuc2liaWxpdHlFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZURlZmluaXRpb24yUG9ydFR5cGUgJiYgYWRqdXN0UG9ydFR5cGUoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlRGVmaW5pdGlvbjJCaW5kaW5nICYmIGFkanVzdEJpbmRpbmcoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlRGVmaW5pdGlvbjJTZXJ2aWNlICYmIGFkanVzdFNlcnZpY2UoKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZURlZmluaXRpb24oKTsKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgYWRqdXN0cyB0cmF2ZXJzYWwgaWdub3JlIGZsYWdzIGFjY29yZGluZyB0byB0aGUKLSAgICogY29ycmVzcG9uZGluZyB2aXNpdCBmbGFncy4KLSAgICogQHJldHVybiBib29sZWFuIAotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGFkanVzdFNPQVBGYXVsdCgpCi0gIHsKLSAgICBib29sZWFuIHZhbHVlID0gdmlzaXRTT0FQRmF1bHQ7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZVNPQVBGYXVsdCgpOwotICAgIHJldHVybiB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCBhZGp1c3RzIHRyYXZlcnNhbCBpZ25vcmUgZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZQotICAgKiBjb3JyZXNwb25kaW5nIHZpc2l0IGZsYWdzLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gYWRqdXN0SW1wb3J0KCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPSB2aXNpdEltcG9ydCB8fCAodHJhdmVyc2VJbXBvcnQyRGVmaW5pdGlvbgotICAgIC8qICYmIGFkanVzdERlZmluaXRpb24oKSovCi0gICAgICApCi0gICAgfHwgLy8gYXZvaWQgY3ljbGluZyBwcm9ibGVtLiBUaHVzLCB5b3Ugc2hvdWxkIGNhbGwgaWdub3JlSW1wb3J0IG1hbnVhbGx5ICAKLSAgICh0cmF2ZXJzZUltcG9ydDJFbGVtZW50ICYmIGFkanVzdEVsZW1lbnQoKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZUltcG9ydCgpOwotICAgIHJldHVybiB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCBhZGp1c3RzIHRyYXZlcnNhbCBpZ25vcmUgZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZQotICAgKiBjb3JyZXNwb25kaW5nIHZpc2l0IGZsYWdzLgotICAgKiBAcmV0dXJuIGJvb2xlYW4gCi0gICAqLwotICBwcml2YXRlIGJvb2xlYW4gYWRqdXN0RmF1bHQoKQotICB7Ci0gICAgYm9vbGVhbiB2YWx1ZSA9Ci0gICAgICB2aXNpdEZhdWx0Ci0gICAgICAgIHx8ICh0cmF2ZXJzZUZhdWx0MkVsZW1lbnQgJiYgYWRqdXN0RWxlbWVudCgpKQotICAgICAgICB8fCAodHJhdmVyc2VGYXVsdDJNZXNzYWdlICYmIGFkanVzdE1lc3NhZ2UoKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZUZhdWx0KCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RQb3J0VHlwZSgpCi0gIHsKLSAgICBib29sZWFuIHZhbHVlID0KLSAgICAgIHZpc2l0UG9ydFR5cGUKLSAgICAgICAgfHwgKHRyYXZlcnNlUG9ydFR5cGUyRWxlbWVudCAmJiBhZGp1c3RFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZVBvcnRUeXBlMk9wZXJhdGlvbiAmJiBhZGp1c3RPcGVyYXRpb24oKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZVBvcnRUeXBlKCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIGFkanVzdHMgdHJhdmVyc2FsIGlnbm9yZSBmbGFncyBhY2NvcmRpbmcgdG8gdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdmlzaXQgZmxhZ3MuCi0gICAqIEByZXR1cm4gYm9vbGVhbiAKLSAgICovCi0gIHByaXZhdGUgYm9vbGVhbiBhZGp1c3RTZXJ2aWNlKCkKLSAgewotICAgIGJvb2xlYW4gdmFsdWUgPQotICAgICAgdmlzaXRTZXJ2aWNlCi0gICAgICAgIHx8ICh0cmF2ZXJzZVNlcnZpY2UyRWxlbWVudCAmJiBhZGp1c3RFbGVtZW50KCkpCi0gICAgICAgIHx8ICh0cmF2ZXJzZVNlcnZpY2UyRXh0ZW5zaWJpbGl0eUVsZW1lbnQgJiYgYWRqdXN0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlU2VydmljZTJQb3J0ICYmIGFkanVzdFBvcnQoKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZVNlcnZpY2UoKTsKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgYWRqdXN0cyB0cmF2ZXJzYWwgaWdub3JlIGZsYWdzIGFjY29yZGluZyB0byB0aGUKLSAgICogY29ycmVzcG9uZGluZyB2aXNpdCBmbGFncy4KLSAgICogQHJldHVybiBib29sZWFuIAotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIGFkanVzdE1lc3NhZ2UoKQotICB7Ci0gICAgYm9vbGVhbiB2YWx1ZSA9Ci0gICAgICB2aXNpdE1lc3NhZ2UKLSAgICAgICAgfHwgKHRyYXZlcnNlTWVzc2FnZTJFbGVtZW50ICYmIGFkanVzdEVsZW1lbnQoKSkKLSAgICAgICAgfHwgKHRyYXZlcnNlTWVzc2FnZTJQYXJ0ICYmIGFkanVzdFBhcnQoKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgIGlnbm9yZU1lc3NhZ2UoKTsKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBleHRlbnNpYmlsaXR5IGVsZW1lbnQgYWNjb3JkaW5nIHRvIHRoZSAKLSAgICogc2V0dGluZ3MgaW4gdGhlIHRyYXZlcnNhbCBjb250ZXh0LgotICAgKiAKLSAgICogQHBhcmFtIG9iakV4dGVuc2liaWxpdHlFbGVtZW50ICBhIFdTREwgZXh0ZW5zaWJpbGl0eSBlbGVtZW50IGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyZW50ICAgICAgICAgICAgICAgICAgIHBhcmVudCBvZiB0aGUgV1NETCBleHRlbnNpYmlsaXR5IGVsZW1lbnQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBjdHggICAgICAgICAgICAgICAgICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgb2JqRXh0ZW5zaWJpbGl0eUVsZW1lbnQsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjdHgucmVzdW1lRXh0ZW5zaWJpbGl0eUVsZW1lbnRQcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldEV4dGVuc2liaWxpdHlFbGVtZW50KG9iakV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICBpZiAodmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgICAgIHZpc2l0b3IudmlzaXQob2JqRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIHBhcmVudCwgY3R4KTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIHBhcnQgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBpbgotICAgKiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqUGFydCAgdGhlIFdTREwgcGFydCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgIHBhcmVudCBvZiB0aGUgV1NETCBwYXJ0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gY3R4ICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoUGFydCBvYmpQYXJ0LCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjdHgucmVzdW1lUGFydFByb2Nlc3NpbmcoKTsKLSAgICBjdHguc2V0UGFydChvYmpQYXJ0KTsKLSAgICBpZiAodmlzaXRQYXJ0KQotICAgIHsKLSAgICAgIHZpc2l0b3IudmlzaXQob2JqUGFydCwgcGFyZW50LCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc1BhcnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob2JqUGFydCA9PSBudWxsKQotICAgICAgcmV0dXJuOwotICAgIGlmICh0cmF2ZXJzZVBhcnQyRWxlbWVudCkKLSAgICAgIHRyYXZlcnNlKG9ialBhcnQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgb2JqUGFydCwgY3R4KTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIFNPQVAgaGVhZGVyIGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgCi0gICAqIHNldHRpbmdzIGluIHRoZSB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmpTT0FQSGVhZGVyICBhIFdTREwgU09BUCBoZWFkZXIgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJlbnQgICAgICAgICBwYXJlbnQgb2YgdGhlIFdTREwgU09BUCBoZWFkZXIgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBjdHggICAgICAgICAgICB0aGUgdHJhdmVyc2FsIGNvbnRleC4KLSAgICovCi0gIHByaXZhdGUgdm9pZCB0cmF2ZXJzZSgKLSAgICBTT0FQSGVhZGVyIG9ialNPQVBIZWFkZXIsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjdHgucmVzdW1lU09BUEhlYWRlclByb2Nlc3NpbmcoKTsKLSAgICBjdHguc2V0U09BUEhlYWRlcihvYmpTT0FQSGVhZGVyKTsKLSAgICBpZiAodmlzaXRTT0FQSGVhZGVyKQotICAgIHsKLSAgICAgIHZpc2l0b3IudmlzaXQob2JqU09BUEhlYWRlciwgcGFyZW50LCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc1NPQVBIZWFkZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob2JqU09BUEhlYWRlciA9PSBudWxsKQotICAgICAgcmV0dXJuOwotICAgIGlmICh0cmF2ZXJzZVNPQVBIZWFkZXIyU09BUEhlYWRlckZhdWx0Ci0gICAgICAmJiBvYmpTT0FQSGVhZGVyLmdldFNPQVBIZWFkZXJGYXVsdHMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb2JqU09BUEhlYWRlci5nZXRTT0FQSGVhZGVyRmF1bHRzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHRyYXZlcnNlKChTT0FQSGVhZGVyRmF1bHQpIGl0Lm5leHQoKSwgb2JqU09BUEhlYWRlciwgY3R4KTsKLSAgICAgICAgaWYgKCFjdHgucHJvY2Vzc1NPQVBIZWFkZXIoKSkKLSAgICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgZWxlbWVudCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIGluCi0gICAqIHRoZSB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmpFbGVtZW50ICBhIFdTREwgZWxlbWVudCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgIHBhcmVudCBvZiB0aGUgV1NETCBlbGVtZW50IGFydGlmYWN0LgotICAgKiBAcGFyYW0gY3R4ICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgRWxlbWVudCBvYmpFbGVtZW50LAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY3R4LnNldEVsZW1lbnQob2JqRWxlbWVudCk7Ci0gICAgaWYgKHZpc2l0RWxlbWVudCkKLSAgICAgIHZpc2l0b3IudmlzaXQob2JqRWxlbWVudCwgcGFyZW50LCBjdHgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgdHlwZXMgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBpbgotICAgKiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqVHlwZXMgIGEgV1NETCB0eXBlcyBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgICBwYXJlbnQgb2YgdGhlIFdTREwgdHlwZXMgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBjdHggICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgVHlwZXMgb2JqVHlwZXMsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjdHgucmVzdW1lVHlwZXNQcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldFR5cGVzKG9ialR5cGVzKTsKLSAgICBpZiAodmlzaXRUeXBlcykKLSAgICB7Ci0gICAgICB2aXNpdG9yLnZpc2l0KG9ialR5cGVzLCBwYXJlbnQsIGN0eCk7Ci0gICAgICBpZiAoIWN0eC5wcm9jZXNzVHlwZXMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob2JqVHlwZXMgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBpZiAodHJhdmVyc2VUeXBlczJFbGVtZW50KQotICAgIHsKLSAgICAgIHRyYXZlcnNlKG9ialR5cGVzLmdldERvY3VtZW50YXRpb25FbGVtZW50KCksIG9ialR5cGVzLCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc1R5cGVzKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlVHlwZXMyRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICAgICYmIG9ialR5cGVzLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBvYmpUeXBlcy5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgdHJhdmVyc2UoKEV4dGVuc2liaWxpdHlFbGVtZW50KSBpdC5uZXh0KCksIG9ialR5cGVzLCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzVHlwZXMoKSkKLSAgICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgU09BUCBiaW5kaW5nIGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgCi0gICAqIHNldHRpbmdzIGluIHRoZSB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmpTT0FQQmluZGluZyAgYSBXU0RMIFNPQVAgYmluZGluZyBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgICAgICAgICBwYXJlbnQgb2YgdGhlIFdTREwgU09BUCBiaW5kaW5nIGFydGlmYWN0LgotICAgKiBAcGFyYW0gY3R4ICAgICAgICAgICAgIHRoZSB0cmF2ZXJzYWwgY29udGV4LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlKAotICAgIFNPQVBCaW5kaW5nIG9ialNPQVBCaW5kaW5nLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY3R4LnNldFNPQVBCaW5kaW5nKG9ialNPQVBCaW5kaW5nKTsKLSAgICBpZiAodmlzaXRTT0FQQmluZGluZykKLSAgICAgIHZpc2l0b3IudmlzaXQob2JqU09BUEJpbmRpbmcsIHBhcmVudCwgY3R4KTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGRlZmluaXRpb24gYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSAKLSAgICogc2V0dGluZ3MgaW4gdGhlIHRyYXZlcnNhbCBjb250ZXh0LgotICAgKiAKLSAgICogQHBhcmFtIG9iakRlZmluaXRpb24gIGEgV1NETCBkZWZpbml0aW9uIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyZW50ICAgICAgICAgcGFyZW50IG9mIHRoZSBXU0RMIGRlZmluaXRpb24gYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBjdHggICAgICAgICAgICB0aGUgdHJhdmVyc2FsIGNvbnRleC4KLSAgICovCi0gIHByaXZhdGUgdm9pZCB0cmF2ZXJzZSgKLSAgICBEZWZpbml0aW9uIG9iakRlZmluaXRpb24sCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLQlpZiAoKG9iakRlZmluaXRpb24gPT0gbnVsbCkgfHwgKHRoaXMuYWxyZWFkeVRyYXZlcnNlZERlZmluaXRpb25zLmNvbnRhaW5zKG9iakRlZmluaXRpb24pKSkKLQl7Ci0JICByZXR1cm47CQotCX0KLQl0aGlzLmFscmVhZHlUcmF2ZXJzZWREZWZpbml0aW9ucy5hZGQob2JqRGVmaW5pdGlvbik7Ci0gICAgY3R4LnJlc3VtZURlZmluaXRpb25Qcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldERlZmluaXRpb24ob2JqRGVmaW5pdGlvbik7Ci0KLSAgICBpZiAodmlzaXREZWZpbml0aW9uKQotICAgIHsKLSAgICAgIHZpc2l0b3IudmlzaXQob2JqRGVmaW5pdGlvbiwgcGFyZW50LCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc0RlZmluaXRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHJhdmVyc2VEZWZpbml0aW9uMkltcG9ydCAmJiBvYmpEZWZpbml0aW9uLmdldEltcG9ydHMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb2JqRGVmaW5pdGlvbi5nZXRJbXBvcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIFZlY3RvciB2ID0gKFZlY3RvcikgaXQubmV4dCgpOwotICAgICAgICBpZiAodiAhPSBudWxsKQotICAgICAgICB7Ci0gICAgICAgICAgSXRlcmF0b3IgaXQyID0gdi5pdGVyYXRvcigpOwotICAgICAgICAgIHdoaWxlIChpdDIuaGFzTmV4dCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHRyYXZlcnNlKChJbXBvcnQpIGl0Mi5uZXh0KCksIG9iakRlZmluaXRpb24sIGN0eCk7Ci0gICAgICAgICAgICBpZiAoIWN0eC5wcm9jZXNzRGVmaW5pdGlvbigpKQotICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZURlZmluaXRpb24yRWxlbWVudCkKLSAgICB7Ci0gICAgICB0cmF2ZXJzZShvYmpEZWZpbml0aW9uLmdldERvY3VtZW50YXRpb25FbGVtZW50KCksIG9iakRlZmluaXRpb24sIGN0eCk7Ci0gICAgICBpZiAoIWN0eC5wcm9jZXNzRGVmaW5pdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZURlZmluaXRpb24yVHlwZXMpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqRGVmaW5pdGlvbi5nZXRUeXBlcygpLCBvYmpEZWZpbml0aW9uLCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc0RlZmluaXRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHJhdmVyc2VEZWZpbml0aW9uMk1lc3NhZ2UgJiYgb2JqRGVmaW5pdGlvbi5nZXRNZXNzYWdlcygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBvYmpEZWZpbml0aW9uLmdldE1lc3NhZ2VzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHRyYXZlcnNlKChNZXNzYWdlKSBpdC5uZXh0KCksIG9iakRlZmluaXRpb24sIGN0eCk7Ci0gICAgICAgIGlmICghY3R4LnByb2Nlc3NEZWZpbml0aW9uKCkpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIH0KLSAgICBpZiAodHJhdmVyc2VEZWZpbml0aW9uMlBvcnRUeXBlICYmIG9iakRlZmluaXRpb24uZ2V0UG9ydFR5cGVzKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IG9iakRlZmluaXRpb24uZ2V0UG9ydFR5cGVzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHRyYXZlcnNlKChQb3J0VHlwZSkgaXQubmV4dCgpLCBvYmpEZWZpbml0aW9uLCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzRGVmaW5pdGlvbigpKQotICAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlRGVmaW5pdGlvbjJCaW5kaW5nICYmIG9iakRlZmluaXRpb24uZ2V0QmluZGluZ3MoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb2JqRGVmaW5pdGlvbi5nZXRCaW5kaW5ncygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICB0cmF2ZXJzZSgoQmluZGluZykgaXQubmV4dCgpLCBvYmpEZWZpbml0aW9uLCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzRGVmaW5pdGlvbigpKQotICAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlRGVmaW5pdGlvbjJTZXJ2aWNlICYmIG9iakRlZmluaXRpb24uZ2V0U2VydmljZXMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb2JqRGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICB0cmF2ZXJzZSgoU2VydmljZSkgaXQubmV4dCgpLCBvYmpEZWZpbml0aW9uLCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzRGVmaW5pdGlvbigpKQotICAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlRGVmaW5pdGlvbjJFeHRlbnNpYmlsaXR5RWxlbWVudAotICAgICAgJiYgb2JqRGVmaW5pdGlvbi5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb2JqRGVmaW5pdGlvbi5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgdHJhdmVyc2UoKEV4dGVuc2liaWxpdHlFbGVtZW50KSBpdC5uZXh0KCksIG9iakRlZmluaXRpb24sIGN0eCk7Ci0gICAgICAgIGlmICghY3R4LnByb2Nlc3NEZWZpbml0aW9uKCkpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIHBvcnQgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBpbgotICAgKiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqUG9ydCAgYSBXU0RMIHBvcnQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJlbnQgICBwYXJlbnQgb2YgdGhlIFdTREwgcG9ydCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIGN0eCAgICAgIHRoZSB0cmF2ZXJzYWwgY29udGV4LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlKFBvcnQgb2JqUG9ydCwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY3R4LnJlc3VtZVBvcnRQcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldFBvcnQob2JqUG9ydCk7Ci0gICAgaWYgKHZpc2l0UG9ydCkKLSAgICB7Ci0gICAgICB2aXNpdG9yLnZpc2l0KG9ialBvcnQsIHBhcmVudCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NQb3J0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG9ialBvcnQgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBpZiAodHJhdmVyc2VQb3J0MkVsZW1lbnQpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqUG9ydC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBvYmpQb3J0LCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc1BvcnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHJhdmVyc2VQb3J0MkJpbmRpbmcpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqUG9ydC5nZXRCaW5kaW5nKCksIG9ialBvcnQsIGN0eCk7Ci0gICAgICBpZiAoIWN0eC5wcm9jZXNzUG9ydCgpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZVBvcnQyRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICAgICYmIG9ialBvcnQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IG9ialBvcnQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHRyYXZlcnNlKChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaXQubmV4dCgpLCBvYmpQb3J0LCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzUG9ydCgpKQotICAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBvcGVyYXRpb24gYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBpbgotICAgKiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqT3BlcmF0aW9uICBhIFdTREwgb3BlcmF0aW9uIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyZW50ICAgICAgICBwYXJlbnQgb2YgdGhlIFdTREwgb3BlcmF0aW9uIGFydGlmYWN0dC4KLSAgICogQHBhcmFtIGN0eCAgICAgICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgT3BlcmF0aW9uIG9iak9wZXJhdGlvbiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGN0eC5yZXN1bWVPcGVyYXRpb25Qcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldE9wZXJhdGlvbihvYmpPcGVyYXRpb24pOwotICAgIGlmICh2aXNpdE9wZXJhdGlvbikKLSAgICB7Ci0gICAgICB2aXNpdG9yLnZpc2l0KG9iak9wZXJhdGlvbiwgcGFyZW50LCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc09wZXJhdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvYmpPcGVyYXRpb24gPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBpZiAodHJhdmVyc2VPcGVyYXRpb24yRWxlbWVudCkKLSAgICB7Ci0gICAgICB0cmF2ZXJzZShvYmpPcGVyYXRpb24uZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgb2JqT3BlcmF0aW9uLCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc09wZXJhdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZU9wZXJhdGlvbjJJbnB1dCkKLSAgICB7Ci0gICAgICB0cmF2ZXJzZShvYmpPcGVyYXRpb24uZ2V0SW5wdXQoKSwgb2JqT3BlcmF0aW9uLCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc09wZXJhdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZU9wZXJhdGlvbjJPdXRwdXQpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqT3BlcmF0aW9uLmdldE91dHB1dCgpLCBvYmpPcGVyYXRpb24sIGN0eCk7Ci0gICAgICBpZiAoIWN0eC5wcm9jZXNzT3BlcmF0aW9uKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlT3BlcmF0aW9uMkZhdWx0ICYmIG9iak9wZXJhdGlvbi5nZXRGYXVsdHMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb2JqT3BlcmF0aW9uLmdldEZhdWx0cygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICB0cmF2ZXJzZSgoRmF1bHQpIGl0Lm5leHQoKSwgb2JqT3BlcmF0aW9uLCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzT3BlcmF0aW9uKCkpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGlucHV0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MgaW4KLSAgICogdGhlIHRyYXZlcnNhbCBjb250ZXh0LgotICAgKiAKLSAgICogQHBhcmFtIG9iaklucHV0ICBhIFdTREwgaW5wdXQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJlbnQgICAgcGFyZW50IG9mIHRoZSBXU0RMIGlucHV0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gY3R4ICAgICAgIHRoZSB0cmF2ZXJzYWwgY29udGV4LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlKAotICAgIElucHV0IG9iaklucHV0LAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY3R4LnJlc3VtZUlucHV0UHJvY2Vzc2luZygpOwotICAgIGN0eC5zZXRJbnB1dChvYmpJbnB1dCk7Ci0gICAgaWYgKHZpc2l0SW5wdXQpCi0gICAgewotICAgICAgdmlzaXRvci52aXNpdChvYmpJbnB1dCwgcGFyZW50LCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc0lucHV0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG9iaklucHV0ID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgaWYgKHRyYXZlcnNlSW5wdXQyRWxlbWVudCkKLSAgICB7Ci0gICAgICB0cmF2ZXJzZShvYmpJbnB1dC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBvYmpJbnB1dCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NJbnB1dCgpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZUlucHV0Mk1lc3NhZ2UpCi0gICAgICB0cmF2ZXJzZShvYmpJbnB1dC5nZXRNZXNzYWdlKCksIG9iaklucHV0LCBjdHgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgU09BUCBib2R5IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgCi0gICAqIHNldHRpbmdzIGluIHRoZSB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmpTT0FQQm9keSAgYSBXU0RMIFNPQVAgYm9keSBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgICAgICBwYXJlbnQgb2YgdGhlIFdTREwgU09BUCBib2R5IGFydGlmYWN0LgotICAgKiBAcGFyYW0gY3R4ICAgICAgICAgIHRoZSB0cmF2ZXJzYWwgY29udGV4LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlKAotICAgIFNPQVBCb2R5IG9ialNPQVBCb2R5LAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgLy8gIAljdHgucmVzdW1lU09BUEJvZHlQcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldFNPQVBCb2R5KG9ialNPQVBCb2R5KTsKLSAgICBpZiAodmlzaXRTT0FQQm9keSkKLSAgICAgIC8vCXsKLSAgICAgIHZpc2l0b3IudmlzaXQob2JqU09BUEJvZHksIHBhcmVudCwgY3R4KTsKLSAgICAvKgkgIGlmICghY3R4LnByb2Nlc3NTT0FQQm9keSgpKQotICAgIAkJcmV0dXJuOwotICAgIAl9Ci0gICAgCWlmIChvYmpTT0FQQm9keSA9PSBudWxsKQotICAgIAkJcmV0dXJuOwotICAgIAlpZiAodHJhdmVyc2VTT0FQQm9keTJQYXJ0ICYmIG9ialNPQVBCb2R5LmdldFBhcnRzKCkgIT0gbnVsbCkgewotICAgIAkgIGlmIChjdHgpCi0gICAgCSAgSXRlcmF0b3IgaXQgPSBvYmpTT0FQQm9keS5nZXRQYXJ0cygpLml0ZXJhdG9yKCk7Ci0gICAgCSAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgIAkgIAkKLSAgICAJCXRyYXZlcnNlKChQYXJ0KWl0Lm5leHQoKSwgb2JqU09BUEJvZHksIGN0eCk7Ci0gICAgCQlpZiAoIWN0eC5wcm9jZXNzU09BUEJvZHkoKSkKLSAgICAJCSAgcmV0dXJuOwotICAgIAkgIH0KLSAgICAJfQotICAgICovCi0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBTT0FQIGhlYWRlciBmYXVsdCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gCi0gICAqIHRoZSBzZXR0aW5ncyBpbiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqU09BUEhlYWRlckZhdWx0ICBhIFdTREwgU09BUCBoZWFkZXIgZmF1bHQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJlbnQgICAgICAgICAgICAgIHBhcmVudCBvZiB0aGUgV1NETCBTT0FQIGhlYWRlciBmYXVsdCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIGN0eCAgICAgICAgICAgICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgU09BUEhlYWRlckZhdWx0IG9ialNPQVBIZWFkZXJGYXVsdCwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGN0eC5zZXRTT0FQSGVhZGVyRmF1bHQob2JqU09BUEhlYWRlckZhdWx0KTsKLSAgICBpZiAodmlzaXRTT0FQSGVhZGVyRmF1bHQpCi0gICAgICB2aXNpdG9yLnZpc2l0KG9ialNPQVBIZWFkZXJGYXVsdCwgcGFyZW50LCBjdHgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgb3V0cHV0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MgaW4KLSAgICogdGhlIHRyYXZlcnNhbCBjb250ZXh0LgotICAgKiAKLSAgICogQHBhcmFtIG9iak91dHB1dCAgYSBXU0RMIG91dHB1dCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgIHBhcmVudCBvZiB0aGUgV1NETCBvdXRwdXQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBjdHggICAgICB0aGUgdHJhdmVyc2FsIGNvbnRleC4KLSAgICogQHBhcmFtIHBhcmVudAotICAgKiBAcGFyYW0gY3R4Ci0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgT3V0cHV0IG9iak91dHB1dCwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGN0eC5yZXN1bWVPdXRwdXRQcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldE91dHB1dChvYmpPdXRwdXQpOwotICAgIGlmICh2aXNpdE91dHB1dCkKLSAgICB7Ci0gICAgICB2aXNpdG9yLnZpc2l0KG9iak91dHB1dCwgcGFyZW50LCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc091dHB1dCgpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvYmpPdXRwdXQgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBpZiAodHJhdmVyc2VPdXRwdXQyRWxlbWVudCkKLSAgICB7Ci0gICAgICB0cmF2ZXJzZShvYmpPdXRwdXQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgb2JqT3V0cHV0LCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc091dHB1dCgpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZU91dHB1dDJNZXNzYWdlKQotICAgICAgdHJhdmVyc2Uob2JqT3V0cHV0LmdldE1lc3NhZ2UoKSwgb2JqT3V0cHV0LCBjdHgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgYmluZGluZyBmYXVsdCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIAotICAgKiBzZXR0aW5ncyBpbiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqQmluZGluZ0ZhdWx0ICBhIFdTREwgYmluZGluZyBmYXVsdCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgICAgICAgICAgcGFyZW50IG9mIHRoZSBXU0RMIGJpbmRpbmcgZmF1bHQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBjdHggICAgICAgICAgICAgIHRoZSB0cmF2ZXJzYWwgY29udGV4LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlKAotICAgIEJpbmRpbmdGYXVsdCBvYmpCaW5kaW5nRmF1bHQsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjdHgucmVzdW1lQmluZGluZ0ZhdWx0UHJvY2Vzc2luZygpOwotICAgIGN0eC5zZXRCaW5kaW5nRmF1bHQob2JqQmluZGluZ0ZhdWx0KTsKLSAgICBpZiAodmlzaXRCaW5kaW5nRmF1bHQpCi0gICAgewotICAgICAgdmlzaXRvci52aXNpdChvYmpCaW5kaW5nRmF1bHQsIHBhcmVudCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nRmF1bHQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob2JqQmluZGluZ0ZhdWx0ID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgaWYgKHRyYXZlcnNlQmluZGluZ0ZhdWx0MkVsZW1lbnQpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqQmluZGluZ0ZhdWx0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCksIG9iakJpbmRpbmdGYXVsdCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nRmF1bHQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHJhdmVyc2VCaW5kaW5nRmF1bHQyU09BUEZhdWx0Ci0gICAgICAmJiBvYmpCaW5kaW5nRmF1bHQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IG9iakJpbmRpbmdGYXVsdC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IG8gPSBpdC5uZXh0KCk7Ci0gICAgICAgIGlmIChvIGluc3RhbmNlb2YgU09BUEZhdWx0KQotICAgICAgICAgIHRyYXZlcnNlKChTT0FQRmF1bHQpIG8sIG9iakJpbmRpbmdGYXVsdCwgY3R4KTsKLSAgICAgICAgaWYgKCFjdHgucHJvY2Vzc0JpbmRpbmdGYXVsdCgpKQotICAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlQmluZGluZ0ZhdWx0MkV4dGVuc2liaWxpdHlFbGVtZW50Ci0gICAgICAmJiBvYmpCaW5kaW5nRmF1bHQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IG9iakJpbmRpbmdGYXVsdC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgdHJhdmVyc2UoKEV4dGVuc2liaWxpdHlFbGVtZW50KSBpdC5uZXh0KCksIG9iakJpbmRpbmdGYXVsdCwgY3R4KTsKLSAgICAgICAgaWYgKCFjdHgucHJvY2Vzc0JpbmRpbmdGYXVsdCgpKQotICAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBTT0FQIG9wZXJhdGlvbiBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gCi0gICAqIHRoZSBzZXR0aW5ncyBpbiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqU09BUE9wZXJhdGlvbiAgYSBXU0RMIFNPQVAgb3BlcmF0aW9uIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyZW50ICAgICAgICAgICAgcGFyZW50IG9mIHRoZSBXU0RMIFNPQVAgb3BlcmF0aW9uIGFydGlmYWN0LgotICAgKiBAcGFyYW0gY3R4ICAgICAgICAgICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgU09BUE9wZXJhdGlvbiBvYmpTT0FQT3BlcmF0aW9uLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY3R4LnNldFNPQVBPcGVyYXRpb24ob2JqU09BUE9wZXJhdGlvbik7Ci0gICAgaWYgKHZpc2l0U09BUE9wZXJhdGlvbikKLSAgICAgIHZpc2l0b3IudmlzaXQob2JqU09BUE9wZXJhdGlvbiwgcGFyZW50LCBjdHgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgYmluZGluZyBpbnB1dCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gCi0gICAqIHRoZSBzZXR0aW5ncyBpbiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqQmluZGluZ0lucHV0ICBhIFdTREwgYmluZGluZyBpbnB1dCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgICAgICAgICAgcGFyZW50IG9mIHRoZSBXU0RMIGJpbmRpbmcgaW5wdXQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBjdHggICAgICAgICAgICAgIHRoZSB0cmF2ZXJzYWwgY29udGV4LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlKAotICAgIEJpbmRpbmdJbnB1dCBvYmpCaW5kaW5nSW5wdXQsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjdHgucmVzdW1lQmluZGluZ0lucHV0UHJvY2Vzc2luZygpOwotICAgIGN0eC5zZXRCaW5kaW5nSW5wdXQob2JqQmluZGluZ0lucHV0KTsKLSAgICBpZiAodmlzaXRCaW5kaW5nSW5wdXQpCi0gICAgewotICAgICAgdmlzaXRvci52aXNpdChvYmpCaW5kaW5nSW5wdXQsIHBhcmVudCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nSW5wdXQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob2JqQmluZGluZ0lucHV0ID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgaWYgKHRyYXZlcnNlQmluZGluZ0lucHV0MkVsZW1lbnQpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqQmluZGluZ0lucHV0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCksIG9iakJpbmRpbmdJbnB1dCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nSW5wdXQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoKHRyYXZlcnNlQmluZGluZ0lucHV0MlNPQVBCb2R5IHx8IHRyYXZlcnNlQmluZGluZ0lucHV0MlNPQVBIZWFkZXIpCi0gICAgICAmJiBvYmpCaW5kaW5nSW5wdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IG9iakJpbmRpbmdJbnB1dC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IG8gPSBpdC5uZXh0KCk7Ci0gICAgICAgIGlmICh0cmF2ZXJzZUJpbmRpbmdJbnB1dDJTT0FQQm9keSAmJiAobyBpbnN0YW5jZW9mIFNPQVBCb2R5KSkKLSAgICAgICAgICB0cmF2ZXJzZSgoU09BUEJvZHkpIG8sIG9iakJpbmRpbmdJbnB1dCwgY3R4KTsKLSAgICAgICAgZWxzZSBpZiAodHJhdmVyc2VCaW5kaW5nSW5wdXQyU09BUEhlYWRlciAmJiAobyBpbnN0YW5jZW9mIFNPQVBIZWFkZXIpKQotICAgICAgICAgIHRyYXZlcnNlKChTT0FQSGVhZGVyKSBvLCBvYmpCaW5kaW5nSW5wdXQsIGN0eCk7Ci0gICAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nSW5wdXQoKSkKLSAgICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZUJpbmRpbmdJbnB1dDJFeHRlbnNpYmlsaXR5RWxlbWVudAotICAgICAgJiYgb2JqQmluZGluZ0lucHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBvYmpCaW5kaW5nSW5wdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHRyYXZlcnNlKChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaXQubmV4dCgpLCBvYmpCaW5kaW5nSW5wdXQsIGN0eCk7Ci0gICAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nSW5wdXQoKSkKLSAgICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgYmluZGluZyBvcGVyYXRpb24gYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIAotICAgKiB0aGUgc2V0dGluZ3MgaW4gdGhlIHRyYXZlcnNhbCBjb250ZXh0LgotICAgKiAKLSAgICogQHBhcmFtIG9iakJpbmRpbmdPcGVyYXRpb24gIGEgV1NETCBiaW5kaW5nIG9wZXJhdGlvbiBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgICAgICAgICAgICAgIHBhcmVudCBvZiB0aGUgV1NETCBiaW5kaW5nIG9wZXJhdGlvbiBhcnRpZmFjdC4KLSAgICogQHBhcmFtIGN0eCAgICAgICAgICAgICAgICAgIHRoZSB0cmF2ZXJzYWwgY29udGV4LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlKAotICAgIEJpbmRpbmdPcGVyYXRpb24gb2JqQmluZGluZ09wZXJhdGlvbiwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGN0eC5yZXN1bWVCaW5kaW5nT3BlcmF0aW9uUHJvY2Vzc2luZygpOwotICAgIGN0eC5zZXRCaW5kaW5nT3BlcmF0aW9uKG9iakJpbmRpbmdPcGVyYXRpb24pOwotICAgIGlmICh2aXNpdEJpbmRpbmdPcGVyYXRpb24pCi0gICAgewotICAgICAgdmlzaXRvci52aXNpdChvYmpCaW5kaW5nT3BlcmF0aW9uLCBwYXJlbnQsIGN0eCk7Ci0gICAgICBpZiAoIWN0eC5wcm9jZXNzQmluZGluZ09wZXJhdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvYmpCaW5kaW5nT3BlcmF0aW9uID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgaWYgKHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJFbGVtZW50KQotICAgIHsKLSAgICAgIHRyYXZlcnNlKAotICAgICAgICBvYmpCaW5kaW5nT3BlcmF0aW9uLmdldERvY3VtZW50YXRpb25FbGVtZW50KCksCi0gICAgICAgIG9iakJpbmRpbmdPcGVyYXRpb24sCi0gICAgICAgIGN0eCk7Ci0gICAgICBpZiAoIWN0eC5wcm9jZXNzQmluZGluZ09wZXJhdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yU09BUE9wZXJhdGlvbgotICAgICAgJiYgb2JqQmluZGluZ09wZXJhdGlvbi5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb2JqQmluZGluZ09wZXJhdGlvbi5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgT2JqZWN0IG8gPSBpdC5uZXh0KCk7Ci0gICAgICAgIGlmIChvIGluc3RhbmNlb2YgU09BUE9wZXJhdGlvbikKLSAgICAgICAgICB0cmF2ZXJzZSgoU09BUE9wZXJhdGlvbikgbywgb2JqQmluZGluZ09wZXJhdGlvbiwgY3R4KTsKLSAgICAgICAgaWYgKCFjdHgucHJvY2Vzc0JpbmRpbmdPcGVyYXRpb24oKSkKLSAgICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZUJpbmRpbmdPcGVyYXRpb24yRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICAgICYmIG9iakJpbmRpbmdPcGVyYXRpb24uZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IG9iakJpbmRpbmdPcGVyYXRpb24uZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHRyYXZlcnNlKChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaXQubmV4dCgpLCBvYmpCaW5kaW5nT3BlcmF0aW9uLCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzQmluZGluZ09wZXJhdGlvbigpKQotICAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJPcGVyYXRpb24pCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqQmluZGluZ09wZXJhdGlvbi5nZXRPcGVyYXRpb24oKSwgb2JqQmluZGluZ09wZXJhdGlvbiwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nT3BlcmF0aW9uKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJCaW5kaW5nSW5wdXQpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqQmluZGluZ09wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKSwgb2JqQmluZGluZ09wZXJhdGlvbiwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nT3BlcmF0aW9uKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJCaW5kaW5nT3V0cHV0KQotICAgIHsKLSAgICAgIHRyYXZlcnNlKAotICAgICAgICBvYmpCaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdPdXRwdXQoKSwKLSAgICAgICAgb2JqQmluZGluZ09wZXJhdGlvbiwKLSAgICAgICAgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nT3BlcmF0aW9uKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlQmluZGluZ09wZXJhdGlvbjJCaW5kaW5nRmF1bHQKLSAgICAgICYmIG9iakJpbmRpbmdPcGVyYXRpb24uZ2V0QmluZGluZ0ZhdWx0cygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBvYmpCaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdGYXVsdHMoKS52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgdHJhdmVyc2UoKEJpbmRpbmdGYXVsdCkgaXQubmV4dCgpLCBvYmpCaW5kaW5nT3BlcmF0aW9uLCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzQmluZGluZ09wZXJhdGlvbigpKQotICAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBTT0FQIGZhdWx0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgCi0gICAqIHNldHRpbmdzIGluIHRoZSB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmpTT0FQRmF1bHQgIGEgV1NETCBTT0FQIGZhdWx0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyZW50ICAgICAgICBwYXJlbnQgb2YgdGhlIFdTREwgU09BUCBmYXVsdCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIGN0eCAgICAgICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgU09BUEZhdWx0IG9ialNPQVBGYXVsdCwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGN0eC5zZXRTT0FQRmF1bHQob2JqU09BUEZhdWx0KTsKLSAgICBpZiAodmlzaXRTT0FQRmF1bHQpCi0gICAgICB2aXNpdG9yLnZpc2l0KG9ialNPQVBGYXVsdCwgcGFyZW50LCBjdHgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgYmluZGluZyBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIGluCi0gICAqIHRoZSB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmpCaW5kaW5nICBhIFdTREwgYmluZGluZyBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmVudCAgICAgIHBhcmVudCBvZiB0aGUgV1NETCBiaW5kaW5nIGFydGlmYWN0LgotICAgKiBAcGFyYW0gY3R4ICAgICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgQmluZGluZyBvYmpCaW5kaW5nLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY3R4LnJlc3VtZUJpbmRpbmdQcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldEJpbmRpbmcob2JqQmluZGluZyk7Ci0gICAgaWYgKHZpc2l0QmluZGluZykKLSAgICB7Ci0gICAgICB2aXNpdG9yLnZpc2l0KG9iakJpbmRpbmcsIHBhcmVudCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG9iakJpbmRpbmcgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBpZiAodHJhdmVyc2VCaW5kaW5nMkVsZW1lbnQpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqQmluZGluZy5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBvYmpCaW5kaW5nLCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc0JpbmRpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHJhdmVyc2VCaW5kaW5nMlNPQVBCaW5kaW5nCi0gICAgICAmJiBvYmpCaW5kaW5nLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBvYmpCaW5kaW5nLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBPYmplY3QgbyA9IGl0Lm5leHQoKTsKLSAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBTT0FQQmluZGluZykKLSAgICAgICAgICB0cmF2ZXJzZSgoU09BUEJpbmRpbmcpIG8sIG9iakJpbmRpbmcsIGN0eCk7Ci0gICAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nKCkpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIH0KLSAgICBpZiAodHJhdmVyc2VCaW5kaW5nMlBvcnRUeXBlKQotICAgIHsKLSAgICAgIHRyYXZlcnNlKG9iakJpbmRpbmcuZ2V0UG9ydFR5cGUoKSwgb2JqQmluZGluZywgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlQmluZGluZzJCaW5kaW5nT3BlcmF0aW9uCi0gICAgICAmJiBvYmpCaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IG9iakJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbnMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgdHJhdmVyc2UoKEJpbmRpbmdPcGVyYXRpb24pIGl0Lm5leHQoKSwgb2JqQmluZGluZywgY3R4KTsKLSAgICAgICAgaWYgKCFjdHgucHJvY2Vzc0JpbmRpbmcoKSkKLSAgICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICh0cmF2ZXJzZUJpbmRpbmcyRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLSAgICAgICYmIG9iakJpbmRpbmcuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpdCA9IG9iakJpbmRpbmcuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHRyYXZlcnNlKChFeHRlbnNpYmlsaXR5RWxlbWVudCkgaXQubmV4dCgpLCBvYmpCaW5kaW5nLCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzQmluZGluZygpKQotICAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBmYXVsdCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIGluCi0gICAqIHRoZSB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmpGYXVsdCAgYSBXU0RMIGZhdWx0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyZW50ICAgIHBhcmVudCBvZiB0aGUgV1NETCBmYXVsdCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIGN0eCAgICAgICB0aGUgdHJhdmVyc2FsIGNvbnRleC4KLSAgICovCi0gIHByaXZhdGUgdm9pZCB0cmF2ZXJzZSgKLSAgICBGYXVsdCBvYmpGYXVsdCwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGN0eC5yZXN1bWVGYXVsdFByb2Nlc3NpbmcoKTsKLSAgICBjdHguc2V0RmF1bHQob2JqRmF1bHQpOwotICAgIGlmICh2aXNpdEZhdWx0KQotICAgIHsKLSAgICAgIHZpc2l0b3IudmlzaXQob2JqRmF1bHQsIHBhcmVudCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NGYXVsdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvYmpGYXVsdCA9PSBudWxsKQotICAgICAgcmV0dXJuOwotICAgIGlmICh0cmF2ZXJzZUZhdWx0MkVsZW1lbnQpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqRmF1bHQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgb2JqRmF1bHQsIGN0eCk7Ci0gICAgICBpZiAoIWN0eC5wcm9jZXNzRmF1bHQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHJhdmVyc2VGYXVsdDJNZXNzYWdlKQotICAgICAgdHJhdmVyc2Uob2JqRmF1bHQuZ2V0TWVzc2FnZSgpLCBvYmpGYXVsdCwgY3R4KTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIHNlcnZpY2UgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBpbgotICAgKiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqU2VydmljZSAgYSBXU0RMIHNlcnZpY2UgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJlbnQgICAgICBwYXJlbnQgb2YgdGhlIFdTREwgc2VydmljZSBhcnRpZmFjdC4KLSAgICogQHBhcmFtIGN0eCAgICAgICAgIHRoZSB0cmF2ZXJzYWwgY29udGV4LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlKAotICAgIFNlcnZpY2Ugb2JqU2VydmljZSwKLSAgICBPYmplY3QgcGFyZW50LAotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCkKLSAgewotICAgIGN0eC5yZXN1bWVTZXJ2aWNlUHJvY2Vzc2luZygpOwotICAgIGN0eC5zZXRTZXJ2aWNlKG9ialNlcnZpY2UpOwotICAgIGlmICh2aXNpdFNlcnZpY2UpCi0gICAgewotICAgICAgdmlzaXRvci52aXNpdChvYmpTZXJ2aWNlLCBwYXJlbnQsIGN0eCk7Ci0gICAgICBpZiAoIWN0eC5wcm9jZXNzU2VydmljZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChvYmpTZXJ2aWNlID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgaWYgKHRyYXZlcnNlU2VydmljZTJFbGVtZW50KQotICAgIHsKLSAgICAgIHRyYXZlcnNlKG9ialNlcnZpY2UuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgb2JqU2VydmljZSwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NTZXJ2aWNlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlU2VydmljZTJFeHRlbnNpYmlsaXR5RWxlbWVudAotICAgICAgJiYgb2JqU2VydmljZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb2JqU2VydmljZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgdHJhdmVyc2UoKEV4dGVuc2liaWxpdHlFbGVtZW50KSBpdC5uZXh0KCksIG9ialNlcnZpY2UsIGN0eCk7Ci0gICAgICAgIGlmICghY3R4LnByb2Nlc3NTZXJ2aWNlKCkpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIH0KLSAgICBpZiAodHJhdmVyc2VTZXJ2aWNlMlBvcnQgJiYgb2JqU2VydmljZS5nZXRQb3J0cygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBvYmpTZXJ2aWNlLmdldFBvcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHRyYXZlcnNlKChQb3J0KSBpdC5uZXh0KCksIG9ialNlcnZpY2UsIGN0eCk7Ci0gICAgICAgIGlmICghY3R4LnByb2Nlc3NTZXJ2aWNlKCkpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGltcG9ydCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIGluCi0gICAqIHRoZSB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmpJbXBvcnQgIGEgV1NETCBpbXBvcnQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJlbnQgICAgIHBhcmVudCBvZiB0aGUgV1NETCBpbXBvcnQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBjdHggICAgICAgIHRoZSB0cmF2ZXJzYWwgY29udGV4LgotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlKAotICAgIEltcG9ydCBvYmpJbXBvcnQsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjdHgucmVzdW1lSW1wb3J0UHJvY2Vzc2luZygpOwotICAgIGN0eC5zZXRJbXBvcnQob2JqSW1wb3J0KTsKLSAgICBpZiAodmlzaXRJbXBvcnQpCi0gICAgewotICAgICAgdmlzaXRvci52aXNpdChvYmpJbXBvcnQsIHBhcmVudCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NJbXBvcnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob2JqSW1wb3J0ID09IG51bGwpCi0gICAgICByZXR1cm47Ci0gICAgaWYgKHRyYXZlcnNlSW1wb3J0MkVsZW1lbnQpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqSW1wb3J0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCksIG9iakltcG9ydCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NJbXBvcnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHJhdmVyc2VJbXBvcnQyRGVmaW5pdGlvbikKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gb2JqSW1wb3J0LmdldERlZmluaXRpb24oKTsKLSAgICAgICAgaWYgKChkZWZpbml0aW9uICE9IG51bGwpICYmICghYWxyZWFkeVRyYXZlcnNlZERlZmluaXRpb25zLmNvbnRhaW5zKGRlZmluaXRpb24pKSkKLSAgICAgICAgewotICAgICAgICAgIGFscmVhZHlUcmF2ZXJzZWREZWZpbml0aW9ucy5hZGQoZGVmaW5pdGlvbik7Ci0gICAgICAgICAgdHJhdmVyc2Uob2JqSW1wb3J0LmdldERlZmluaXRpb24oKSwgb2JqSW1wb3J0LCBjdHgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpe30KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBiaW5kaW5nIG91dHB1dCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIAotICAgKiBzZXR0aW5ncyBpbiB0aGUgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqIAotICAgKiBAcGFyYW0gb2JqQmluZGluZ091dHB1dCAgYSBXU0RMIGJpbmRpbmcgb3V0cHV0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyZW50ICAgICAgICAgICAgcGFyZW50IG9mIHRoZSBXU0RMIGJpbmRpbmcgb3V0cHV0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gY3R4ICAgICAgICAgICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgQmluZGluZ091dHB1dCBvYmpCaW5kaW5nT3V0cHV0LAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY3R4LnJlc3VtZUJpbmRpbmdPdXRwdXRQcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldEJpbmRpbmdPdXRwdXQob2JqQmluZGluZ091dHB1dCk7Ci0gICAgaWYgKHZpc2l0QmluZGluZ091dHB1dCkKLSAgICB7Ci0gICAgICB2aXNpdG9yLnZpc2l0KG9iakJpbmRpbmdPdXRwdXQsIHBhcmVudCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nT3V0cHV0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG9iakJpbmRpbmdPdXRwdXQgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBpZiAodHJhdmVyc2VCaW5kaW5nT3V0cHV0MkVsZW1lbnQpCi0gICAgewotICAgICAgdHJhdmVyc2UoCi0gICAgICAgIG9iakJpbmRpbmdPdXRwdXQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwKLSAgICAgICAgb2JqQmluZGluZ091dHB1dCwKLSAgICAgICAgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nT3V0cHV0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCh0cmF2ZXJzZUJpbmRpbmdPdXRwdXQyU09BUEJvZHkgfHwgdHJhdmVyc2VCaW5kaW5nT3V0cHV0MlNPQVBIZWFkZXIpCi0gICAgICAmJiBvYmpCaW5kaW5nT3V0cHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBvYmpCaW5kaW5nT3V0cHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBPYmplY3QgbyA9IGl0Lm5leHQoKTsKLSAgICAgICAgaWYgKHRyYXZlcnNlQmluZGluZ091dHB1dDJTT0FQQm9keSAmJiAobyBpbnN0YW5jZW9mIFNPQVBCb2R5KSkKLSAgICAgICAgICB0cmF2ZXJzZSgoU09BUEJvZHkpIG8sIG9iakJpbmRpbmdPdXRwdXQsIGN0eCk7Ci0gICAgICAgIGVsc2UgaWYgKHRyYXZlcnNlQmluZGluZ091dHB1dDJTT0FQSGVhZGVyICYmIChvIGluc3RhbmNlb2YgU09BUEhlYWRlcikpCi0gICAgICAgICAgdHJhdmVyc2UoKFNPQVBIZWFkZXIpIG8sIG9iakJpbmRpbmdPdXRwdXQsIGN0eCk7Ci0gICAgICAgIGlmICghY3R4LnByb2Nlc3NCaW5kaW5nT3V0cHV0KCkpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIH0KLSAgICBpZiAodHJhdmVyc2VCaW5kaW5nT3V0cHV0MkV4dGVuc2liaWxpdHlFbGVtZW50Ci0gICAgICAmJiBvYmpCaW5kaW5nT3V0cHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBvYmpCaW5kaW5nT3V0cHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICB0cmF2ZXJzZSgoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGl0Lm5leHQoKSwgb2JqQmluZGluZ091dHB1dCwgY3R4KTsKLSAgICAgICAgaWYgKCFjdHgucHJvY2Vzc0JpbmRpbmdPdXRwdXQoKSkKLSAgICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgcG9ydCB0eXBlIGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MgaW4KLSAgICogdGhlIHRyYXZlcnNhbCBjb250ZXh0LgotICAgKiAKLSAgICogQHBhcmFtIG9ialBvcnRUeXBlICBhIFdTREwgcG9ydCB0eXBlIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyZW50ICAgICAgIHBhcmVudCBvZiB0aGUgV1NETCBwb3J0IHR5cGUuCi0gICAqIEBwYXJhbSBjdHggICAgICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgUG9ydFR5cGUgb2JqUG9ydFR5cGUsCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpCi0gIHsKLSAgICBjdHgucmVzdW1lUG9ydFR5cGVQcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldFBvcnRUeXBlKG9ialBvcnRUeXBlKTsKLSAgICBpZiAodmlzaXRQb3J0VHlwZSkKLSAgICB7Ci0gICAgICB2aXNpdG9yLnZpc2l0KG9ialBvcnRUeXBlLCBwYXJlbnQsIGN0eCk7Ci0gICAgICBpZiAoIWN0eC5wcm9jZXNzUG9ydFR5cGUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAob2JqUG9ydFR5cGUgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBpZiAodHJhdmVyc2VQb3J0VHlwZTJFbGVtZW50KQotICAgIHsKLSAgICAgIHRyYXZlcnNlKG9ialBvcnRUeXBlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCksIG9ialBvcnRUeXBlLCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc1BvcnRUeXBlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHRyYXZlcnNlUG9ydFR5cGUyT3BlcmF0aW9uICYmIG9ialBvcnRUeXBlLmdldE9wZXJhdGlvbnMoKSAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGl0ID0gb2JqUG9ydFR5cGUuZ2V0T3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICB0cmF2ZXJzZSgoT3BlcmF0aW9uKSBpdC5uZXh0KCksIG9ialBvcnRUeXBlLCBjdHgpOwotICAgICAgICBpZiAoIWN0eC5wcm9jZXNzUG9ydFR5cGUoKSkKLSAgICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgbWVzc2FnZSBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIGluCi0gICAqIHRoZSB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBvYmpNZXNzYWdlICBhIFdTREwgbWVzc2FnZS4KLSAgICogQHBhcmFtIHBhcmVudCAgICAgIHBhcmVudCBvZiB0aGUgV1NETCBtZXNzYWdlLgotICAgKiBAcGFyYW0gY3R4ICAgICAgICAgdGhlIHRyYXZlcnNhbCBjb250ZXguCi0gICAqLwotICBwcml2YXRlIHZvaWQgdHJhdmVyc2UoCi0gICAgTWVzc2FnZSBvYmpNZXNzYWdlLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KQotICB7Ci0gICAgY3R4LnJlc3VtZU1lc3NhZ2VQcm9jZXNzaW5nKCk7Ci0gICAgY3R4LnNldE1lc3NhZ2Uob2JqTWVzc2FnZSk7Ci0gICAgaWYgKHZpc2l0TWVzc2FnZSkKLSAgICB7Ci0gICAgICB2aXNpdG9yLnZpc2l0KG9iak1lc3NhZ2UsIHBhcmVudCwgY3R4KTsKLSAgICAgIGlmICghY3R4LnByb2Nlc3NNZXNzYWdlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG9iak1lc3NhZ2UgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBpZiAodHJhdmVyc2VNZXNzYWdlMkVsZW1lbnQpCi0gICAgewotICAgICAgdHJhdmVyc2Uob2JqTWVzc2FnZS5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBvYmpNZXNzYWdlLCBjdHgpOwotICAgICAgaWYgKCFjdHgucHJvY2Vzc01lc3NhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHJhdmVyc2VNZXNzYWdlMlBhcnQgJiYgb2JqTWVzc2FnZS5nZXRQYXJ0cygpICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXQgPSBvYmpNZXNzYWdlLmdldFBhcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIHRyYXZlcnNlKChQYXJ0KSBpdC5uZXh0KCksIG9iak1lc3NhZ2UsIGN0eCk7Ci0gICAgICAgIGlmICghY3R4LnByb2Nlc3NNZXNzYWdlKCkpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIHBhcnQgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgIGEgV1NETCBwYXJ0IGFydGlmYWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoUGFydCBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBzZXJ2aWNlIGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICBhIFdTREwgc2VydmljZSBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKFNlcnZpY2UgYSkKLSAgewotICAgIGFkanVzdCgpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKSk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgdHlwZXMgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgV1NETCB0eXBlcyBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKFR5cGVzIGEpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcykpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIG9wZXJhdGlvbiBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgYSBXU0RMIG9wZXJhdGlvbiBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKE9wZXJhdGlvbiBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBpbnB1dCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgYSBXU0RMIGlucHV0IGFydGlmYWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoSW5wdXQgYSkKLSAgewotICAgIGFkanVzdCgpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKSk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgb3V0cHV0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICBhIFdTREwgb3V0cHV0IGFydGlmYWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoT3V0cHV0IGEpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcykpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGZhdWx0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICBhIFdTREwgZmF1bHQgYXJ0aWZhY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShGYXVsdCBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBiaW5kaW5nIGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICBhIFdTREwgYmluZGluZyBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEJpbmRpbmcgYSkKLSAgewotICAgIGFkanVzdCgpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKSk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgYmluZGluZyBvcGVyYXRpb24gYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSAKLSAgICogc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICBhIFdTREwgYmluZGluZyBvcGVyYXRpb24gYXJ0aWZhY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShCaW5kaW5nT3BlcmF0aW9uIGEpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcykpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGJpbmRpbmcgaW5wdXQgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIAotICAgKiB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICBhIFdTREwgYmluZGluZyBpbnB1dCBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEJpbmRpbmdJbnB1dCBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBiaW5kaW5nIG91dHB1dCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gCi0gICAqIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgIGEgV1NETCBiaW5kaW5nIG91dHB1dCBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEJpbmRpbmdPdXRwdXQgYSkKLSAgewotICAgIGFkanVzdCgpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKSk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgYmluZGluZyBmYXVsdCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gCi0gICAqIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICBhIFdTREwgYmluZGluZyBmYXVsdCBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEJpbmRpbmdGYXVsdCBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBpbXBvcnQgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgIGEgV1NETCBpbXBvcnQgYXJ0aWZhY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShJbXBvcnQgYSkKLSAgewotICAgIGFkanVzdCgpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKSk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgZWxlbWVudCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgYSBXU0RMIGVsZW1lbnQgYXJ0aWZhY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShFbGVtZW50IGEpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcykpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIG1lc3NhZ2UgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgIGEgV1NETCBtZXNzYWdlIGFydGlmYWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoTWVzc2FnZSBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBwb3J0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICBhIFdTREwgcG9ydCBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKFBvcnQgYSkKLSAgewotICAgIGFkanVzdCgpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKSk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgcG9ydCB0eXBlIGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICBhIFdTREwgcG9ydCB0eXBlIGFydGlmYWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoUG9ydFR5cGUgYSkKLSAgewotICAgIGFkanVzdCgpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKSk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgZGVmaW5pdGlvbiBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgYSBXU0RMIGRlZmluaXRpb24gYXJ0aWZhY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShEZWZpbml0aW9uIGEpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcykpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGV4dGVuc2liaWxpdHkgZWxtZW50IGFydGlmYWN0IGFjY29yZGluZyAKLSAgICogdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgYSBXU0RMIGV4dGVuc2liaWxpdHkgZWxlbWVudCBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEV4dGVuc2liaWxpdHlFbGVtZW50IGEpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcykpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIFNPQVAgYmluZGluZyBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gCi0gICAqIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgIGEgV1NETCBTT0FQIGJpbmRpbmcgYXJ0aWZhY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShTT0FQQmluZGluZyBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBTT0FQIGJvZHkgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgIGEgV1NETCBTT0FQIGJvZHkgYXJ0aWZhY3QuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShTT0FQQm9keSBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBTT0FQIGhlYWRlciBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgYSBXU0RMIFNPQVAgaGVhZGVyIGFydGlmYWN0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoU09BUEhlYWRlciBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBTT0FQIGhlYWRlciBmYXVsdCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gCi0gICAqIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgIGEgV1NETCBTT0FQIGhlYWRlciBmYXVsdCBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKFNPQVBIZWFkZXJGYXVsdCBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBTT0FQIGZhdWx0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICBhIFdTREwgU09BUCBmYXVsdCBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKFNPQVBGYXVsdCBhKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpKTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBTT0FQIG9wZXJhdGlvbiBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gCi0gICAqIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgIGEgV1NETCBTT0FQIG9wZXJhdGlvbiBhcnRpZmFjdC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKFNPQVBPcGVyYXRpb24gYSkKLSAgewotICAgIGFkanVzdCgpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKSk7Ci0gIH0KLQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBwYXJ0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICAgICAgIGEgV1NETCBwYXJ0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyYW1zICBhIE1hcCBvYmplY3QgcmVwcmVzZW50aW5nIHNldHRpbmdzLiAgCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShQYXJ0IGEsIE1hcCBwYXJhbXMpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHggPSBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcyk7Ci0gICAgaWYgKHBhcmFtcyAhPSBudWxsKQotICAgICAgY3R4LnBhcmFtcy5wdXRBbGwocGFyYW1zKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBjdHgpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIHNlcnZpY2UgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICAgICAgYSBXU0RMIHNlcnZpY2UgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKFNlcnZpY2UgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgdHlwZXMgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICAgICAgYSBXU0RMIHR5cGVzIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyYW1zICBhIE1hcCBvYmplY3QgcmVwcmVzZW50aW5nIHNldHRpbmdzLiAgCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShUeXBlcyBhLCBNYXAgcGFyYW1zKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4ID0gbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpOwotICAgIGlmIChwYXJhbXMgIT0gbnVsbCkKLSAgICAgIGN0eC5wYXJhbXMucHV0QWxsKHBhcmFtcyk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgY3R4KTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBvcGVyYXRpb24gYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICAgICAgYSBXU0RMIG9wZXJhdGlvbiBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmFtcyAgYSBNYXAgb2JqZWN0IHJlcHJlc2VudGluZyBzZXR0aW5ncy4gIAotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoT3BlcmF0aW9uIGEsIE1hcCBwYXJhbXMpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHggPSBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcyk7Ci0gICAgaWYgKHBhcmFtcyAhPSBudWxsKQotICAgICAgY3R4LnBhcmFtcy5wdXRBbGwocGFyYW1zKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBjdHgpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGlucHV0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICAgICAgIGEgV1NETCBpbnB1dCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmFtcyAgYSBNYXAgb2JqZWN0IHJlcHJlc2VudGluZyBzZXR0aW5ncy4gIAotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoSW5wdXQgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgb3V0cHV0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICAgICAgIGEgV1NETCBvdXRwdXQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKE91dHB1dCBhLCBNYXAgcGFyYW1zKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4ID0gbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpOwotICAgIGlmIChwYXJhbXMgIT0gbnVsbCkKLSAgICAgIGN0eC5wYXJhbXMucHV0QWxsKHBhcmFtcyk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgY3R4KTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBmYXVsdCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgICAgICBhIFdTREwgZmF1bHQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEZhdWx0IGEsIE1hcCBwYXJhbXMpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHggPSBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcyk7Ci0gICAgaWYgKHBhcmFtcyAhPSBudWxsKQotICAgICAgY3R4LnBhcmFtcy5wdXRBbGwocGFyYW1zKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBjdHgpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGJpbmRpbmcgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICAgICAgYSBXU0RMIGJpbmRpbmcgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEJpbmRpbmcgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgYmluZGluZyBvcGVyYXRpb24gYXJ0aWZhY3QgYWNjb3JkaW5nIAotICAgKiB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICAgICAgIGEgV1NETCBiaW5kaW5nIG9wZXJhdGlvbiBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmFtcyAgYSBNYXAgb2JqZWN0IHJlcHJlc2VudGluZyBzZXR0aW5ncy4gIAotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoQmluZGluZ09wZXJhdGlvbiBhLCBNYXAgcGFyYW1zKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4ID0gbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpOwotICAgIGlmIChwYXJhbXMgIT0gbnVsbCkKLSAgICAgIGN0eC5wYXJhbXMucHV0QWxsKHBhcmFtcyk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgY3R4KTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBiaW5kaW5nIGlucHV0IGFydGlmYWN0IGFjY29yZGluZyAKLSAgICogdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgICAgICBhIFdTREwgYmluZGluZyBpbnB1dCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmFtcyAgYSBNYXAgb2JqZWN0IHJlcHJlc2VudGluZyBzZXR0aW5ncy4gIAotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoQmluZGluZ0lucHV0IGEsIE1hcCBwYXJhbXMpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHggPSBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcyk7Ci0gICAgaWYgKHBhcmFtcyAhPSBudWxsKQotICAgICAgY3R4LnBhcmFtcy5wdXRBbGwocGFyYW1zKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBjdHgpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGJpbmRpbmcgb3V0cHV0IGFydGlmYWN0IGFjY29yZGluZyB0byAKLSAgICogdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgICAgICBhIFdTREwgYmluZGluZyBvdXRwdXQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEJpbmRpbmdPdXRwdXQgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgYmluZGluZyBmYXVsdCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gCi0gICAqIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICAgICAgYSBXU0RMIGJpbmRpbmcgZmF1bHQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAgCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShCaW5kaW5nRmF1bHQgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgaW1wb3J0IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICAgICAgIGEgV1NETCBpbXBvcnQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAgCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShJbXBvcnQgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgZWxlbWVudCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgICAgICBhIFdTREwgZWxlbWVudCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmFtcyAgYSBNYXAgb2JqZWN0IHJlcHJlc2VudGluZyBzZXR0aW5ncy4gICAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEVsZW1lbnQgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgbWVzc2FnZSBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgICAgICBhIFdTREwgbWVzc2FnZS4KLSAgICogQHBhcmFtIHBhcmFtcyAgYSBNYXAgb2JqZWN0IHJlcHJlc2VudGluZyBzZXR0aW5ncy4gICAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKE1lc3NhZ2UgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgcG9ydCBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgICAgICBhIFdTREwgcG9ydC4KLSAgICogQHBhcmFtIHBhcmFtcyAgYSBNYXAgb2JqZWN0IHJlcHJlc2VudGluZyBzZXR0aW5ncy4gICAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKFBvcnQgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgcG9ydCB0eXBlIGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICAgICAgIGEgV1NETCBwb3J0IHR5cGUgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAgCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShQb3J0VHlwZSBhLCBNYXAgcGFyYW1zKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4ID0gbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpOwotICAgIGlmIChwYXJhbXMgIT0gbnVsbCkKLSAgICAgIGN0eC5wYXJhbXMucHV0QWxsKHBhcmFtcyk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgY3R4KTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBkZWZpbml0aW9uIGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICAgICAgIGEgV1NETCBkZWZpbml0aW9uIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyYW1zICBhIE1hcCBvYmplY3QgcmVwcmVzZW50aW5nIHNldHRpbmdzLiAgIAotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoRGVmaW5pdGlvbiBhLCBNYXAgcGFyYW1zKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4ID0gbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpOwotICAgIGlmIChwYXJhbXMgIT0gbnVsbCkKLSAgICAgIGN0eC5wYXJhbXMucHV0QWxsKHBhcmFtcyk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgY3R4KTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBleHRlbnNpYmlsaXR5IGVsZW1lbnQgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICAgICAgYSBXU0RMIGV4dGVuc2liaWxpdHkgZWxlbWVudCBhcnRpZmFjdC4KLSAgICogQHBhcmFtIHBhcmFtcyAgYSBNYXAgb2JqZWN0IHJlcHJlc2VudGluZyBzZXR0aW5ncy4gICAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlKEV4dGVuc2liaWxpdHlFbGVtZW50IGEsIE1hcCBwYXJhbXMpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHggPSBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcyk7Ci0gICAgaWYgKHBhcmFtcyAhPSBudWxsKQotICAgICAgY3R4LnBhcmFtcy5wdXRBbGwocGFyYW1zKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBjdHgpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIFNPQVAgYmluZGluZyBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgICAgICBhIFdTREwgU09BUCBiaW5kaW5nIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyYW1zICBhIE1hcCBvYmplY3QgcmVwcmVzZW50aW5nIHNldHRpbmdzLiAgIAotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoU09BUEJpbmRpbmcgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgU09BUCBib2R5IGFydGlmYWN0IGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MuCi0gICAqIEBwYXJhbSBhICAgICAgIGEgV1NETCBTT0FQIGJvZHkgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAgCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShTT0FQQm9keSBhLCBNYXAgcGFyYW1zKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4ID0gbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpOwotICAgIGlmIChwYXJhbXMgIT0gbnVsbCkKLSAgICAgIGN0eC5wYXJhbXMucHV0QWxsKHBhcmFtcyk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgY3R4KTsKLSAgfQotICAvKioKLSAgICogVGhlIG1ldGhvZCB0cmF2ZXJzZXMgZ2l2ZW4gV1NETCBTT0FQIGhlYWRlciBhcnRpZmFjdCBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzLgotICAgKiBAcGFyYW0gYSAgICAgICBhIFdTREwgU09BUCBoZWFkZXIgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAgCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShTT0FQSGVhZGVyIGEsIE1hcCBwYXJhbXMpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHggPSBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcyk7Ci0gICAgaWYgKHBhcmFtcyAhPSBudWxsKQotICAgICAgY3R4LnBhcmFtcy5wdXRBbGwocGFyYW1zKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBjdHgpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIGhlYXJkZXIgZmF1bHQgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICAgICAgYSBXU0RMIFNPQVAgaGVhZGVyIGZhdWx0IGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyYW1zICBhIE1hcCBvYmplY3QgcmVwcmVzZW50aW5nIHNldHRpbmdzLiAgIAotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoU09BUEhlYWRlckZhdWx0IGEsIE1hcCBwYXJhbXMpCi0gIHsKLSAgICBhZGp1c3QoKTsKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHggPSBuZXcgV1NETFRyYXZlcnNhbENvbnRleHQodGhpcyk7Ci0gICAgaWYgKHBhcmFtcyAhPSBudWxsKQotICAgICAgY3R4LnBhcmFtcy5wdXRBbGwocGFyYW1zKTsKLSAgICB0cmF2ZXJzZShhLCBudWxsLCBjdHgpOwotICB9Ci0gIC8qKgotICAgKiBUaGUgbWV0aG9kIHRyYXZlcnNlcyBnaXZlbiBXU0RMIFNPQVAgZmF1bHQgYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICAgICAgYSBXU0RMIFNPQVAgZmF1bHQgYXJ0aWZhY3QuCi0gICAqIEBwYXJhbSBwYXJhbXMgIGEgTWFwIG9iamVjdCByZXByZXNlbnRpbmcgc2V0dGluZ3MuICAgCi0gICAqLwotICBwdWJsaWMgdm9pZCB0cmF2ZXJzZShTT0FQRmF1bHQgYSwgTWFwIHBhcmFtcykKLSAgewotICAgIGFkanVzdCgpOwotICAgIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCA9IG5ldyBXU0RMVHJhdmVyc2FsQ29udGV4dCh0aGlzKTsKLSAgICBpZiAocGFyYW1zICE9IG51bGwpCi0gICAgICBjdHgucGFyYW1zLnB1dEFsbChwYXJhbXMpOwotICAgIHRyYXZlcnNlKGEsIG51bGwsIGN0eCk7Ci0gIH0KLSAgLyoqCi0gICAqIFRoZSBtZXRob2QgdHJhdmVyc2VzIGdpdmVuIFdTREwgU09BUCBvcGVyYXRpb24gYXJ0aWZhY3QgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncy4KLSAgICogQHBhcmFtIGEgICAgICAgYSBXU0RMIFNPQVAgb3BlcmF0aW9uIGFydGlmYWN0LgotICAgKiBAcGFyYW0gcGFyYW1zICBhIE1hcCBvYmplY3QgcmVwcmVzZW50aW5nIHNldHRpbmdzLgotICAgKi8KLSAgcHVibGljIHZvaWQgdHJhdmVyc2UoU09BUE9wZXJhdGlvbiBhLCBNYXAgcGFyYW1zKQotICB7Ci0gICAgYWRqdXN0KCk7Ci0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4ID0gbmV3IFdTRExUcmF2ZXJzYWxDb250ZXh0KHRoaXMpOwotICAgIGlmIChwYXJhbXMgIT0gbnVsbCkKLSAgICAgIGN0eC5wYXJhbXMucHV0QWxsKHBhcmFtcyk7Ci0gICAgdHJhdmVyc2UoYSwgbnVsbCwgY3R4KTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC90cmF2ZXJzYWwvV1NETFRyYXZlcnNhbENvbnRleHQuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvdHJhdmVyc2FsL1dTRExUcmF2ZXJzYWxDb250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkNGRiZTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC90cmF2ZXJzYWwvV1NETFRyYXZlcnNhbENvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsOwotCi1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuVHJlZU1hcDsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuSW1wb3J0OwotaW1wb3J0IGphdmF4LndzZGwuSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuT3V0cHV0OwotaW1wb3J0IGphdmF4LndzZGwuUGFydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgamF2YXgud3NkbC5UeXBlczsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXI7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb247Ci0KLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0vKioKLSAqIFRoZSBjbGFzcyByZXByZXNlbnRzIHJ1bnRpbWUgY29udGV4dCBmb3IgdGhlIHRyYXZlcnNhbCBwcm9jZXNzLgotICogQ29udGV4dCBzdG9yZXMgYXJ0aWZhY3RzIGJlaW5nIHByb2Nlc3NlZC4KLSAqIAotICogQGF1dGhvciBBbmRyZXkgS3VsaWsKLSAqLwotcHVibGljIGNsYXNzIFdTRExUcmF2ZXJzYWxDb250ZXh0Ci17Ci0gIC8qKgotICAgKiBGbGFncyB3aGljaCBpbmRpY2F0ZSB3aGV0aGVyIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50IHNob3VsZCBiZSBwcm9jZXNzZWQKLSAgICogb3Igbm90LgotICAgKi8KLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NQYXJ0ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NTZXJ2aWNlID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NUeXBlcyA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzT3BlcmF0aW9uID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NJbnB1dCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzT3V0cHV0ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NGYXVsdCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzQmluZGluZyA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzQmluZGluZ09wZXJhdGlvbiA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzQmluZGluZ0lucHV0ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NCaW5kaW5nT3V0cHV0ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NCaW5kaW5nRmF1bHQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc0ltcG9ydCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzRWxlbWVudCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzTWVzc2FnZSA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzUG9ydCA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzUG9ydFR5cGUgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc0RlZmluaXRpb24gPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc0V4dGVuc2liaWxpdHlFbGVtZW50ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NTT0FQQmluZGluZyA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzU09BUEhlYWRlciA9IHRydWU7Ci0gIHByaXZhdGUgYm9vbGVhbiBwcm9jZXNzU09BUEhlYWRlckZhdWx0ID0gdHJ1ZTsKLSAgcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NTT0FQRmF1bHQgPSB0cnVlOwotICBwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc1NPQVBPcGVyYXRpb24gPSB0cnVlOwotCi0gIC8qKgotICAgKiBMYXN0IHByb2Nlc3NlZCBXU0RMIGVsZW1lbnRzLiAKLSAgICovCi0gIHByaXZhdGUgUGFydCBhY3RpdmVQYXJ0ID0gbnVsbDsKLSAgcHJpdmF0ZSBTZXJ2aWNlIGFjdGl2ZVNlcnZpY2UgPSBudWxsOwotICBwcml2YXRlIFR5cGVzIGFjdGl2ZVR5cGVzID0gbnVsbDsKLSAgcHJpdmF0ZSBPcGVyYXRpb24gYWN0aXZlT3BlcmF0aW9uID0gbnVsbDsKLSAgcHJpdmF0ZSBJbnB1dCBhY3RpdmVJbnB1dCA9IG51bGw7Ci0gIHByaXZhdGUgT3V0cHV0IGFjdGl2ZU91dHB1dCA9IG51bGw7Ci0gIHByaXZhdGUgRmF1bHQgYWN0aXZlRmF1bHQgPSBudWxsOwotICBwcml2YXRlIEJpbmRpbmcgYWN0aXZlQmluZGluZyA9IG51bGw7Ci0gIHByaXZhdGUgQmluZGluZ09wZXJhdGlvbiBhY3RpdmVCaW5kaW5nT3BlcmF0aW9uID0gbnVsbDsKLSAgcHJpdmF0ZSBCaW5kaW5nSW5wdXQgYWN0aXZlQmluZGluZ0lucHV0ID0gbnVsbDsKLSAgcHJpdmF0ZSBCaW5kaW5nT3V0cHV0IGFjdGl2ZUJpbmRpbmdPdXRwdXQgPSBudWxsOwotICBwcml2YXRlIEJpbmRpbmdGYXVsdCBhY3RpdmVCaW5kaW5nRmF1bHQgPSBudWxsOwotICBwcml2YXRlIEltcG9ydCBhY3RpdmVJbXBvcnQgPSBudWxsOwotICBwcml2YXRlIEVsZW1lbnQgYWN0aXZlRWxlbWVudCA9IG51bGw7Ci0gIHByaXZhdGUgTWVzc2FnZSBhY3RpdmVNZXNzYWdlID0gbnVsbDsKLSAgcHJpdmF0ZSBQb3J0IGFjdGl2ZVBvcnQgPSBudWxsOwotICBwcml2YXRlIFBvcnRUeXBlIGFjdGl2ZVBvcnRUeXBlID0gbnVsbDsKLSAgcHJpdmF0ZSBEZWZpbml0aW9uIGFjdGl2ZURlZmluaXRpb24gPSBudWxsOwotICBwcml2YXRlIEV4dGVuc2liaWxpdHlFbGVtZW50IGFjdGl2ZUV4dGVuc2liaWxpdHlFbGVtZW50ID0gbnVsbDsKLSAgcHJpdmF0ZSBTT0FQQmluZGluZyBhY3RpdmVTT0FQQmluZGluZyA9IG51bGw7Ci0gIHByaXZhdGUgU09BUEJvZHkgYWN0aXZlU09BUEJvZHkgPSBudWxsOwotICBwcml2YXRlIFNPQVBIZWFkZXIgYWN0aXZlU09BUEhlYWRlciA9IG51bGw7Ci0gIHByaXZhdGUgU09BUEhlYWRlckZhdWx0IGFjdGl2ZVNPQVBIZWFkZXJGYXVsdCA9IG51bGw7Ci0gIHByaXZhdGUgU09BUEZhdWx0IGFjdGl2ZVNPQVBGYXVsdCA9IG51bGw7Ci0gIHByaXZhdGUgU09BUE9wZXJhdGlvbiBhY3RpdmVTT0FQT3BlcmF0aW9uID0gbnVsbDsKLQotICAvKioKLSAgICogUGFyYW1ldGVycyBtYXAKLSAgICovCi0gIE1hcCBwYXJhbXMgPSBuZXcgVHJlZU1hcCgpOwotCi0gIC8qKgotICAgKiBBY3RpdmUgdHJhdmVyc2FsLgotICAgKi8KLSAgZmluYWwgcHJpdmF0ZSBXU0RMVHJhdmVyc2FsIHRyYXZlcnNhbDsKLQotICAvKioKLSAgICogVGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCi0gICAqIEBwYXJhbSB0cmF2ZXJzYWwKLSAgICovCi0gIFdTRExUcmF2ZXJzYWxDb250ZXh0KFdTRExUcmF2ZXJzYWwgdHJhdmVyc2FsKQotICB7Ci0gICAgdGhpcy50cmF2ZXJzYWwgPSB0cmF2ZXJzYWw7Ci0gIH0KLQotICAvKioKLSAgICogR2V0cyB0aGUgYWN0aXZlIHRyYXZlcnNhbC4KLSAgICogQHJldHVybiB0aGEgYWN0aXZlIHRyYXZlcnNhbC4KLSAgICovCi0gIHB1YmxpYyBXU0RMVHJhdmVyc2FsIGdldFRyYXZlcnNhbCgpCi0gIHsKLSAgICByZXR1cm4gdHJhdmVyc2FsOwotICB9Ci0KLSAgLyoqCi0gICAqIEdldHMgcGFyYW1ldGVyIGZyb20gY29udGV4dCBieSB0aGUgZ2l2ZW4ga2V5LiAKLSAgICogQHBhcmFtIGtleSAgYSBrZXkgdmFsdWUuCi0gICAqIEByZXR1cm4gYSBwYXJhbWV0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4ga2V5LgotICAgKi8KLSAgcHVibGljIE9iamVjdCBnZXRQYXJhbWV0ZXIoT2JqZWN0IGtleSkKLSAgewotICAgIHJldHVybiBwYXJhbXMuZ2V0KGtleSk7Ci0gIH0KLQotICAvKioKLSAgICogQWRkcyBwYXJhbWV0ZXIgaW50byBjb250ZXh0IHdpdGggdGhlIGdpdmVuIGtleS4KLSAgICogQHBhcmFtIGtleSAgICB0aGUga2V5LgotICAgKiBAcGFyYW0gdmFsdWUgIHRoZSB2YWx1ZS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFBhcmFtZXRlcihPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpCi0gIHsKLSAgICBwYXJhbXMucHV0KGtleSwgdmFsdWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlbW92ZXMgdGhlIHBhcmFtZXRlciBmcm9tIGNvbnRleHQgYnkgdGhlIGdpdmVuIGtleS4KLSAgICogQHBhcmFtIGtleSAgYSBrZXkgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgdm9pZCByZW1vdmVQYXJhbWV0ZXIoT2JqZWN0IGtleSkKLSAgewotICAgIHBhcmFtcy5yZW1vdmUoa2V5KTsKLSAgfQotCi0gIC8qKgotICAgKiBDYW5jZWxzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBwYXJ0LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNhbmNlbFBhcnRQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NQYXJ0ID0gZmFsc2U7Ci0gIH0KLSAgLyoqCi0gICAqIENhbmNlbHMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIHNlcnZpY2UuIAotICAgKi8KLSAgcHVibGljIHZvaWQgY2FuY2VsU2VydmljZVByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1NlcnZpY2UgPSBmYWxzZTsKLSAgfQotICAvKioKLSAgICogQ2FuY2VscyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgdHlwZXMuIAotICAgKi8KLSAgcHVibGljIHZvaWQgY2FuY2VsVHlwZXNQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NUeXBlcyA9IGZhbHNlOwotICB9Ci0gIC8qKgotICAgKiBDYW5jZWxzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBvcGVyYXRpb24uIAotICAgKi8KLSAgcHVibGljIHZvaWQgY2FuY2VsT3BlcmF0aW9uUHJvY2Vzc2luZygpCi0gIHsKLSAgICBwcm9jZXNzT3BlcmF0aW9uID0gZmFsc2U7Ci0gIH0KLSAgLyoqCi0gICAqIENhbmNlbHMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGlucHV0LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNhbmNlbElucHV0UHJvY2Vzc2luZygpCi0gIHsKLSAgICBwcm9jZXNzSW5wdXQgPSBmYWxzZTsKLSAgfQotICAvKioKLSAgICogQ2FuY2VscyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgb3V0cHV0LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNhbmNlbE91dHB1dFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc091dHB1dCA9IGZhbHNlOwotICB9Ci0gIC8qKgotICAgKiBDYW5jZWxzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBmYXVsdC4gCi0gICAqLwotICBwdWJsaWMgdm9pZCBjYW5jZWxGYXVsdFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0ZhdWx0ID0gZmFsc2U7Ci0gIH0KLSAgLyoqCi0gICAqIENhbmNlbHMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGJpbmRpbmcuIAotICAgKi8KLSAgcHVibGljIHZvaWQgY2FuY2VsQmluZGluZ1Byb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0JpbmRpbmcgPSBmYWxzZTsKLSAgfQotICAvKioKLSAgICogQ2FuY2VscyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBvcGVyYXRpb24uIAotICAgKi8KLSAgcHVibGljIHZvaWQgY2FuY2VsQmluZGluZ09wZXJhdGlvblByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0JpbmRpbmdPcGVyYXRpb24gPSBmYWxzZTsKLSAgfQotICAvKioKLSAgICogQ2FuY2VscyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBpbnB1dC4gCi0gICAqLwotICBwdWJsaWMgdm9pZCBjYW5jZWxCaW5kaW5nSW5wdXRQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NCaW5kaW5nSW5wdXQgPSBmYWxzZTsKLSAgfQotICAvKioKLSAgICogQ2FuY2VscyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBvdXRwdXQuIAotICAgKi8KLSAgcHVibGljIHZvaWQgY2FuY2VsQmluZGluZ091dHB1dFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0JpbmRpbmdPdXRwdXQgPSBmYWxzZTsKLSAgfQotICAvKioKLSAgICogQ2FuY2VscyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBmYXVsdC4gCi0gICAqLwotICBwdWJsaWMgdm9pZCBjYW5jZWxCaW5kaW5nRmF1bHRQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NCaW5kaW5nRmF1bHQgPSBmYWxzZTsKLSAgfQotICAvKioKLSAgICogQ2FuY2VscyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgaW1wb3J0LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNhbmNlbEltcG9ydFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0ltcG9ydCA9IGZhbHNlOwotICB9Ci0gIC8qKgotICAgKiBDYW5jZWxzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNhbmNlbEVsZW1lbnRQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NFbGVtZW50ID0gZmFsc2U7Ci0gIH0KLSAgLyoqCi0gICAqIENhbmNlbHMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIG1lc3NhZ2UuIAotICAgKi8KLSAgcHVibGljIHZvaWQgY2FuY2VsTWVzc2FnZVByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc01lc3NhZ2UgPSBmYWxzZTsKLSAgfQotICAvKioKLSAgICogQ2FuY2VscyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgcG9ydC4gCi0gICAqLwotICBwdWJsaWMgdm9pZCBjYW5jZWxQb3J0UHJvY2Vzc2luZygpCi0gIHsKLSAgICBwcm9jZXNzUG9ydCA9IGZhbHNlOwotICB9Ci0gIC8qKgotICAgKiBDYW5jZWxzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBwb3J0IHR5cGUuIAotICAgKi8KLSAgcHVibGljIHZvaWQgY2FuY2VsUG9ydFR5cGVQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NQb3J0VHlwZSA9IGZhbHNlOwotICB9Ci0gIC8qKgotICAgKiBDYW5jZWxzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBkZWZpbml0aW9uLiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNhbmNlbERlZmluaXRpb25Qcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NEZWZpbml0aW9uID0gZmFsc2U7Ci0gIH0KLSAgLyoqCi0gICAqIENhbmNlbHMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGV4dGVuc2liaWxpdHkgZWxlbWVudC4gCi0gICAqLwotICBwdWJsaWMgdm9pZCBjYW5jZWxFeHRlbnNpYmlsaXR5RWxlbWVudFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0V4dGVuc2liaWxpdHlFbGVtZW50ID0gZmFsc2U7Ci0gIH0KLSAgLyoqCi0gICAqIENhbmNlbHMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIFNPQVAgYmluZGluZy4gCi0gICAqLwotICBwdWJsaWMgdm9pZCBjYW5jZWxTT0FQQmluZGluZ1Byb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1NPQVBCaW5kaW5nID0gZmFsc2U7Ci0gIH0KLSAgLyoqCi0gICAqIENhbmNlbHMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIFNPQVAgaGVhZGVyLiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNhbmNlbFNPQVBIZWFkZXJQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NTT0FQSGVhZGVyID0gZmFsc2U7Ci0gIH0KLSAgLyoqCi0gICAqIENhbmNlbHMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIFNPQVAgaGVhZGVyIGZhdWx0LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNhbmNlbFNPQVBIZWFkZXJGYXVsdFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1NPQVBIZWFkZXJGYXVsdCA9IGZhbHNlOwotICB9Ci0gIC8qKgotICAgKiBDYW5jZWxzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBTT0FQIGZhdWx0LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIGNhbmNlbFNPQVBGYXVsdFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1NPQVBGYXVsdCA9IGZhbHNlOwotICB9Ci0gIC8qKgotICAgKiBDYW5jZWxzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBvcGVyYXRpb24uIAotICAgKi8KLSAgcHVibGljIHZvaWQgY2FuY2VsU09BUE9wZXJhdGlvblByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1NPQVBPcGVyYXRpb24gPSBmYWxzZTsKLSAgfQotCi0gIC8qKgotICAgKiBDYW5jZWxzIFdTREwgZWxlbWVudHMgcHJvY2Vzc2luZy4gCi0gICAqLwotICBwdWJsaWMgdm9pZCBjYW5jZWxQcm9jZXNzaW5nKCkKLSAgewotICAgIGNhbmNlbFBhcnRQcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsU2VydmljZVByb2Nlc3NpbmcoKTsKLSAgICBjYW5jZWxUeXBlc1Byb2Nlc3NpbmcoKTsKLSAgICBjYW5jZWxPcGVyYXRpb25Qcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsSW5wdXRQcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsT3V0cHV0UHJvY2Vzc2luZygpOwotICAgIGNhbmNlbEZhdWx0UHJvY2Vzc2luZygpOwotICAgIGNhbmNlbEJpbmRpbmdQcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsQmluZGluZ09wZXJhdGlvblByb2Nlc3NpbmcoKTsKLSAgICBjYW5jZWxCaW5kaW5nSW5wdXRQcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsQmluZGluZ091dHB1dFByb2Nlc3NpbmcoKTsKLSAgICBjYW5jZWxCaW5kaW5nRmF1bHRQcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsSW1wb3J0UHJvY2Vzc2luZygpOwotICAgIGNhbmNlbEVsZW1lbnRQcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsTWVzc2FnZVByb2Nlc3NpbmcoKTsKLSAgICBjYW5jZWxQb3J0UHJvY2Vzc2luZygpOwotICAgIGNhbmNlbFBvcnRUeXBlUHJvY2Vzc2luZygpOwotICAgIGNhbmNlbERlZmluaXRpb25Qcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsRXh0ZW5zaWJpbGl0eUVsZW1lbnRQcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsU09BUEJpbmRpbmdQcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsU09BUEhlYWRlclByb2Nlc3NpbmcoKTsKLSAgICBjYW5jZWxTT0FQSGVhZGVyRmF1bHRQcm9jZXNzaW5nKCk7Ci0gICAgY2FuY2VsU09BUEZhdWx0UHJvY2Vzc2luZygpOwotICAgIGNhbmNlbFNPQVBPcGVyYXRpb25Qcm9jZXNzaW5nKCk7Ci0gIH0KLQotICAvKioKLSAgICogUmVzdW1lcyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgcGFydC4gCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXN1bWVQYXJ0UHJvY2Vzc2luZygpCi0gIHsKLSAgICBwcm9jZXNzUGFydCA9IHRydWU7Ci0gIH0KLSAgLyoqCi0gICAqIFJlc3VtZXMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIHNlcnZpY2UuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lU2VydmljZVByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1NlcnZpY2UgPSB0cnVlOwotICB9Ci0gIC8qKgotICAgKiBSZXN1bWVzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCB0eXBlcy4gCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXN1bWVUeXBlc1Byb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1R5cGVzID0gdHJ1ZTsKLSAgfQotICAvKioKLSAgICogUmVzdW1lcyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgb3BlcmF0aW9uLiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlc3VtZU9wZXJhdGlvblByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc09wZXJhdGlvbiA9IHRydWU7Ci0gIH0KLSAgLyoqCi0gICAqIFJlc3VtZXMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGlucHV0LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlc3VtZUlucHV0UHJvY2Vzc2luZygpCi0gIHsKLSAgICBwcm9jZXNzSW5wdXQgPSB0cnVlOwotICB9Ci0gIC8qKgotICAgKiBSZXN1bWVzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBvdXRwdXQuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lT3V0cHV0UHJvY2Vzc2luZygpCi0gIHsKLSAgICBwcm9jZXNzT3V0cHV0ID0gdHJ1ZTsKLSAgfQotICAvKioKLSAgICogUmVzdW1lcyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZmF1bHQuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lRmF1bHRQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NGYXVsdCA9IHRydWU7Ci0gIH0KLSAgLyoqCi0gICAqIFJlc3VtZXMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGJpbmRpbmcuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lQmluZGluZ1Byb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0JpbmRpbmcgPSB0cnVlOwotICB9Ci0gIC8qKgotICAgKiBSZXN1bWVzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBiaW5kaW5nIG9wZXJhdGlvbi4gCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXN1bWVCaW5kaW5nT3BlcmF0aW9uUHJvY2Vzc2luZygpCi0gIHsKLSAgICBwcm9jZXNzQmluZGluZ09wZXJhdGlvbiA9IHRydWU7Ci0gIH0KLSAgLyoqCi0gICAqIFJlc3VtZXMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGJpbmRpbmcgaW5wdXQuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lQmluZGluZ0lucHV0UHJvY2Vzc2luZygpCi0gIHsKLSAgICBwcm9jZXNzQmluZGluZ0lucHV0ID0gdHJ1ZTsKLSAgfQotICAvKioKLSAgICogUmVzdW1lcyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBvdXRwdXQuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lQmluZGluZ091dHB1dFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0JpbmRpbmdPdXRwdXQgPSB0cnVlOwotICB9Ci0gIC8qKgotICAgKiBSZXN1bWVzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBiaW5kaW5nIGZhdWx0LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlc3VtZUJpbmRpbmdGYXVsdFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0JpbmRpbmdGYXVsdCA9IHRydWU7Ci0gIH0KLSAgLyoqCi0gICAqIFJlc3VtZXMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGltcG9ydC4gCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXN1bWVJbXBvcnRQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NJbXBvcnQgPSB0cnVlOwotICB9Ci0gIC8qKgotICAgKiBSZXN1bWVzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlc3VtZUVsZW1lbnRQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NFbGVtZW50ID0gdHJ1ZTsKLSAgfQotICAvKioKLSAgICogUmVzdW1lcyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgbWVzc2FnZS4gCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXN1bWVNZXNzYWdlUHJvY2Vzc2luZygpCi0gIHsKLSAgICBwcm9jZXNzTWVzc2FnZSA9IHRydWU7Ci0gIH0KLSAgLyoqCi0gICAqIFJlc3VtZXMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIHBvcnQuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lUG9ydFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1BvcnQgPSB0cnVlOwotICB9Ci0gIC8qKgotICAgKiBSZXN1bWVzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBwb3J0IHR5cGUuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lUG9ydFR5cGVQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NQb3J0VHlwZSA9IHRydWU7Ci0gIH0KLSAgLyoqCi0gICAqIFJlc3VtZXMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGRlZmluaXRpb24uIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lRGVmaW5pdGlvblByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc0RlZmluaXRpb24gPSB0cnVlOwotICB9Ci0gIC8qKgotICAgKiBSZXN1bWVzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBleHRlbnNpYmlsaXR5IGVsZW1lbnQuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lRXh0ZW5zaWJpbGl0eUVsZW1lbnRQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NFeHRlbnNpYmlsaXR5RWxlbWVudCA9IHRydWU7Ci0gIH0KLSAgLyoqCi0gICAqIFJlc3VtZXMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIFNPQVAgYmluZGluZy4gCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXN1bWVTT0FQQmluZGluZ1Byb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1NPQVBCaW5kaW5nID0gdHJ1ZTsKLSAgfQotICAvKioKLSAgICogUmVzdW1lcyBwcm9jZXNzaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgU09BUCBoZWFkZXIuIAotICAgKi8KLSAgcHVibGljIHZvaWQgcmVzdW1lU09BUEhlYWRlclByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1NPQVBIZWFkZXIgPSB0cnVlOwotICB9Ci0gIC8qKgotICAgKiBSZXN1bWVzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBTT0FQIGhlYWRlciBmYXVsdC4gCi0gICAqLwotICBwdWJsaWMgdm9pZCByZXN1bWVTT0FQSGVhZGVyRmF1bHRQcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NTT0FQSGVhZGVyRmF1bHQgPSB0cnVlOwotICB9Ci0gIC8qKgotICAgKiBSZXN1bWVzIHByb2Nlc3Npbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBTT0FQIGZhdWx0LiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlc3VtZVNPQVBGYXVsdFByb2Nlc3NpbmcoKQotICB7Ci0gICAgcHJvY2Vzc1NPQVBGYXVsdCA9IHRydWU7Ci0gIH0KLSAgLyoqCi0gICAqIFJlc3VtZXMgcHJvY2Vzc2luZyBvZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIFNPQVAgb3BlcmF0aW9uLiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHJlc3VtZVNPQVBPcGVyYXRpb25Qcm9jZXNzaW5nKCkKLSAgewotICAgIHByb2Nlc3NTT0FQT3BlcmF0aW9uID0gdHJ1ZTsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBwYXJ0IHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIHBhcnQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NQYXJ0KCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzUGFydDsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBzZXJ2aWNlIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIHNlcnZpY2Ugc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzU2VydmljZTsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCB0eXBlcyBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCB0eXBlcyBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc1R5cGVzKCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzVHlwZXM7Ci0gIH0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgb3BlcmF0aW9uIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIG9wZXJhdGlvbiBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc09wZXJhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gcHJvY2Vzc09wZXJhdGlvbjsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBpbnB1dCBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBpbnB1dCBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc0lucHV0KCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzSW5wdXQ7Ci0gIH0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgb3V0cHV0IHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIG91dHB1dCBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc091dHB1dCgpCi0gIHsKLSAgICByZXR1cm4gcHJvY2Vzc091dHB1dDsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBmYXVsdCBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBmYXVsdCBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc0ZhdWx0KCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzRmF1bHQ7Ci0gIH0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBiaW5kaW5nIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzQmluZGluZygpCi0gIHsKLSAgICByZXR1cm4gcHJvY2Vzc0JpbmRpbmc7Ci0gIH0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBvcGVyYXRpb24gc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBvcGVyYXRpb24gc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NCaW5kaW5nT3BlcmF0aW9uKCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzQmluZGluZ09wZXJhdGlvbjsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBiaW5kaW5nIGlucHV0IHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGJpbmRpbmcgaW5wdXQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NCaW5kaW5nSW5wdXQoKQotICB7Ci0gICAgcmV0dXJuIHByb2Nlc3NCaW5kaW5nSW5wdXQ7Ci0gIH0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBvdXRwdXQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgYmluZGluZyBvdXRwdXQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NCaW5kaW5nT3V0cHV0KCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzQmluZGluZ091dHB1dDsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBiaW5kaW5nIGZhdWx0IHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGJpbmRpbmcgZmF1bHQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NCaW5kaW5nRmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIHByb2Nlc3NCaW5kaW5nRmF1bHQ7Ci0gIH0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgaW1wb3J0IHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGltcG9ydCBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc0ltcG9ydCgpCi0gIHsKLSAgICByZXR1cm4gcHJvY2Vzc0ltcG9ydDsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBlbGVtZW50IHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGVsZW1lbnQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NFbGVtZW50KCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzRWxlbWVudDsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBtZXNzYWdlIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIG1lc3NhZ2Ugc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzTWVzc2FnZTsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBwb3J0IHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIHBvcnQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NQb3J0KCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzUG9ydDsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBwb3J0IHR5cGUgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgcG9ydCB0eXBlIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzUG9ydFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIHByb2Nlc3NQb3J0VHlwZTsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBkZWZpbml0aW9uIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyBXU0RMIGRlZmluaXRpb24gc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NEZWZpbml0aW9uKCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzRGVmaW5pdGlvbjsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBleHRlbnNpYmlsaXR5IGVsZW1lbnQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgZXh0ZW5zaWJpbGl0eSBlbGVtZW50IHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIHByb2Nlc3NFeHRlbnNpYmlsaXR5RWxlbWVudDsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBTT0FQIGJpbmRpbmcgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgU09BUCBiaW5kaW5nIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzU09BUEJpbmRpbmcoKQotICB7Ci0gICAgcmV0dXJuIHByb2Nlc3NTT0FQQmluZGluZzsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBTT0FQIGhlYWRlciBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBTT0FQIGhlYWRlciBzaG91bGQgYmUgcHJvY2Vzc2VkLm4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIHByb2Nlc3NTT0FQSGVhZGVyKCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzU09BUEhlYWRlcjsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBTT0FQIGhlYWRlciBmYXVsdCBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBTT0EgaGVhZGVyIGZhdWx0IHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzU09BUEhlYWRlckZhdWx0KCkKLSAgewotICAgIHJldHVybiBwcm9jZXNzU09BUEhlYWRlckZhdWx0OwotICB9Ci0gIC8qKgotICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29ycmVzcG9uZGluZyBXU0RMIFNPQVAgZmF1bHQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgU09BUCBmYXVsdCBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gcHJvY2Vzc1NPQVBGYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gcHJvY2Vzc1NPQVBGYXVsdDsKLSAgfQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgV1NETCBvcGVyYXRpb24gc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb3JyZXNwb25kaW5nIFdTREwgb3BlcmF0aW9uIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzU09BUE9wZXJhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gcHJvY2Vzc1NPQVBPcGVyYXRpb247Ci0gIH0KLSAgLyoqCi0gICAqIFNldHMgV1NETCBwYXJ0IHRvIGJlIHByb2Nlc3NlZC4KLSAgICogQHBhcmFtIHZhbHVlICB0aGUgV1NETCBwYXJ0IHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0UGFydChQYXJ0IHZhbHVlKQotICB7Ci0gICAgYWN0aXZlUGFydCA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgcGFydC4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBwYXJ0LgotICAgKi8KLSAgcHVibGljIFBhcnQgZ2V0UGFydCgpCi0gIHsKLSAgICByZXR1cm4gYWN0aXZlUGFydDsKLSAgfQotICAvKioKLSAgICogU2V0cyBXU0RMIHNlcnZpY2UgdG8gYmUgcHJvY2Vzc2VkLgotICAgKiBAcGFyYW0gdmFsdWUgIHRoZSBXU0RMIHNlcnZpY2UgdG8gYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgdm9pZCBzZXRTZXJ2aWNlKFNlcnZpY2UgdmFsdWUpCi0gIHsKLSAgICBhY3RpdmVTZXJ2aWNlID0gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBwcm9jZXNzZWQgV1NETCBzZXJ2aWNlLgotICAgKiBAcmV0dXJuIHRoZSBsYXN0IHByb2Nlc3NlZCBXU0RMIHNlcnZpY2UuCi0gICAqLwotICBwdWJsaWMgU2VydmljZSBnZXRTZXJ2aWNlKCkKLSAgewotICAgIHJldHVybiBhY3RpdmVTZXJ2aWNlOwotICB9Ci0gIC8qKgotICAgKiBTZXRzIFdTREwgdHlwZXMgdG8gYmUgcHJvY2Vzc2VkLgotICAgKiBAcGFyYW0gdmFsdWUgIHRoZSBXU0RMIHR5cGVzIHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0VHlwZXMoVHlwZXMgdmFsdWUpCi0gIHsKLSAgICBhY3RpdmVUeXBlcyA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgdHlwZXMuCi0gICAqIEByZXR1cm4gdGhlIGxhc3QgcHJvY2Vzc2VkIFdTREwgdHlwZXMuCi0gICAqLwotICBwdWJsaWMgVHlwZXMgZ2V0VHlwZXMoKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZVR5cGVzOwotICB9Ci0gIC8qKgotICAgKiBTZXRzIFdTREwgb3BlcmF0aW9uIHRvIGJlIHByb2Nlc3NlZC4KLSAgICogQHBhcmFtIHZhbHVlICB0aGUgV1NETCBvcGVyYXRpb24gdG8gYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgdm9pZCBzZXRPcGVyYXRpb24oT3BlcmF0aW9uIHZhbHVlKQotICB7Ci0gICAgYWN0aXZlT3BlcmF0aW9uID0gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBwcm9jZXNzZWQgV1NETCBvcGVyYXRpb24uCi0gICAqIEByZXR1cm4gdGhlIGxhc3QgcHJvY2Vzc2VkIFdTREwgb3BlcmF0aW9uLgotICAgKi8KLSAgcHVibGljIE9wZXJhdGlvbiBnZXRPcGVyYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZU9wZXJhdGlvbjsKLSAgfQotICAvKioKLSAgICogU2V0cyBXU0RMIGlucHV0IHRvIGJlIHByb2Nlc3NlZAotICAgKiBAcGFyYW0gdGhlIFdTREwgaW5wdXQgdG8gYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgdm9pZCBzZXRJbnB1dChJbnB1dCB2YWx1ZSkKLSAgewotICAgIGFjdGl2ZUlucHV0ID0gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBwcm9jZXNzZWQgV1NETCBpbnB1dC4KLSAgICogQHJldHVybiBsYXN0IHByb2Nlc3NlZCBXU0RMIGlucHV0LgotICAgKi8KLSAgcHVibGljIElucHV0IGdldElucHV0KCkKLSAgewotICAgIHJldHVybiBhY3RpdmVJbnB1dDsKLSAgfQotICAvKioKLSAgICogU2V0cyBXU0RMIG91dHB1dCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIFdTREwgb3V0cHV0IHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0T3V0cHV0KE91dHB1dCB2YWx1ZSkKLSAgewotICAgIGFjdGl2ZU91dHB1dCA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgb3V0cHV0LgotICAgKiBAcmV0dXJuIHRoZSBsYXN0IHByb2Nlc3NlZCBXU0RMIG91dHB1dC4KLSAgICovCi0gIHB1YmxpYyBPdXRwdXQgZ2V0T3V0cHV0KCkKLSAgewotICAgIHJldHVybiBhY3RpdmVPdXRwdXQ7Ci0gIH0KLSAgLyoqCi0gICAqIFNldHMgV1NETCBmYXVsdCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIFdTREwgZmF1bHQgdG8gYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgdm9pZCBzZXRGYXVsdChGYXVsdCB2YWx1ZSkKLSAgewotICAgIGFjdGl2ZUZhdWx0ID0gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBwcm9jZXNzZWQgV1NETCBmYXVsdC4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBmYXVsdC4KLSAgICovCi0gIHB1YmxpYyBGYXVsdCBnZXRGYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gYWN0aXZlRmF1bHQ7Ci0gIH0KLSAgLyoqCi0gICAqIFNldHMgV1NETCBiaW5kaW5nIHRvIGJlIHByb2Nlc3NlZC4KLSAgICogQHBhcmFtIHZhbHVlICB0aGUgV1NETCBiaW5kaW5nIHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0QmluZGluZyhCaW5kaW5nIHZhbHVlKQotICB7Ci0gICAgYWN0aXZlQmluZGluZyA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgYmluZGluZy4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBiaW5kaW5nLgotICAgKi8KLSAgcHVibGljIEJpbmRpbmcgZ2V0QmluZGluZygpCi0gIHsKLSAgICByZXR1cm4gYWN0aXZlQmluZGluZzsKLSAgfQotICAvKioKLSAgICogU2V0cyBXU0RMIGJpbmRpbmcgb3BlcmF0aW9uIHRvIGJlIHByb2Nlc3NlZC4KLSAgICogQHBhcmFtIHZhbHVlICB0aGUgU0RMIGJpbmRpbmcgb3BlcmF0aW9uIHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0QmluZGluZ09wZXJhdGlvbihCaW5kaW5nT3BlcmF0aW9uIHZhbHVlKQotICB7Ci0gICAgYWN0aXZlQmluZGluZ09wZXJhdGlvbiA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgYmluZGluZyBvcGVyYXRpb24uCi0gICAqIEByZXR1cm4gdGhlIGxhc3QgcHJvY2Vzc2VkIFdTREwgYmluZGluZyBvcGVyYXRpb24uCi0gICAqLwotICBwdWJsaWMgQmluZGluZ09wZXJhdGlvbiBnZXRCaW5kaW5nT3BlcmF0aW9uKCkKLSAgewotICAgIHJldHVybiBhY3RpdmVCaW5kaW5nT3BlcmF0aW9uOwotICB9Ci0gIC8qKgotICAgKiBTZXRzIFdTREwgYmluZGluZyBpbnB1dCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIFdTREwgYmluZGluZyBpbnB1dCB0byBiZSBwcm9jZXNzZWQuCi0gICAqLwotICB2b2lkIHNldEJpbmRpbmdJbnB1dChCaW5kaW5nSW5wdXQgdmFsdWUpCi0gIHsKLSAgICBhY3RpdmVCaW5kaW5nSW5wdXQgPSB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogR2V0cyBsYXN0IHByb2Nlc3NlZCBXU0RMIGJpbmRpbmcgaW5wdXQuCi0gICAqIEByZXR1cm4gdGhlIGxhc3QgcHJvY2Vzc2VkIFdTREwgYmluZGluZyBpbnB1dC4KLSAgICovCi0gIHB1YmxpYyBCaW5kaW5nSW5wdXQgZ2V0QmluZGluZ0lucHV0KCkKLSAgewotICAgIHJldHVybiBhY3RpdmVCaW5kaW5nSW5wdXQ7Ci0gIH0KLSAgLyoqCi0gICAqIFNldHMgV1NETCBiaW5kaW5nIG91dHB1dCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIFdTREwgYmluZGluZyBvdXRwdXQgdG8gYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgdm9pZCBzZXRCaW5kaW5nT3V0cHV0KEJpbmRpbmdPdXRwdXQgdmFsdWUpCi0gIHsKLSAgICBhY3RpdmVCaW5kaW5nT3V0cHV0ID0gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBwcm9jZXNzZWQgV1NETCBiaW5kaW5nIG91dHB1dC4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBiaW5kaW5nIG91dHB1dC4KLSAgICovCi0gIHB1YmxpYyBCaW5kaW5nT3V0cHV0IGdldEJpbmRpbmdPdXRwdXQoKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZUJpbmRpbmdPdXRwdXQ7Ci0gIH0KLSAgLyoqCi0gICAqIFNldHMgV1NETCBiaW5kaW5nIGZhdWx0IHRvIGJlIHByb2Nlc3NlZC4KLSAgICogQHBhcmFtIHZhbHVlICB0aGUgV1NETCBiaW5kaW5nIGZhdWx0IHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0QmluZGluZ0ZhdWx0KEJpbmRpbmdGYXVsdCB2YWx1ZSkKLSAgewotICAgIGFjdGl2ZUJpbmRpbmdGYXVsdCA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgYmluZGluZyBmYXVsdC4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBiaW5kaW5nIGZhdWx0LgotICAgKi8KLSAgcHVibGljIEJpbmRpbmdGYXVsdCBnZXRCaW5kaW5nRmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZUJpbmRpbmdGYXVsdDsKLSAgfQotICAvKioKLSAgICogU2V0cyBXU0RMIGltcG9ydCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIFdTREwgaW1wb3J0IHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0SW1wb3J0KEltcG9ydCB2YWx1ZSkKLSAgewotICAgIGFjdGl2ZUltcG9ydCA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgaW1wb3J0LgotICAgKiBAcmV0dXJuIHRoZSBsYXN0IHByb2Nlc3NlZCBXU0RMIGltcG9ydC4KLSAgICovCi0gIHB1YmxpYyBJbXBvcnQgZ2V0SW1wb3J0KCkKLSAgewotICAgIHJldHVybiBhY3RpdmVJbXBvcnQ7Ci0gIH0KLSAgLyoqCi0gICAqIFNldHMgV1NETCBlbGVtZW50IHRvIGJlIHByb2Nlc3NlZC4KLSAgICogQHBhcmFtIHZhbHVlICB0aGUgV1NETCBlbGVtZW50IHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0RWxlbWVudChFbGVtZW50IHZhbHVlKQotICB7Ci0gICAgYWN0aXZlRWxlbWVudCA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgZWxlbWVudC4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBlbGVtZW50LgotICAgKi8KLSAgcHVibGljIEVsZW1lbnQgZ2V0RWxlbWVudCgpCi0gIHsKLSAgICByZXR1cm4gYWN0aXZlRWxlbWVudDsKLSAgfQotICAvKioKLSAgICogU2V0cyBXU0RMIG1lc3NhZ2UgdG8gYmUgcHJvY2Vzc2VkLgotICAgKiBAcGFyYW0gdmFsdWUgIHRoZSBXU0RMIG1lc3NhZ2UgdG8gYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgdm9pZCBzZXRNZXNzYWdlKE1lc3NhZ2UgdmFsdWUpCi0gIHsKLSAgICBhY3RpdmVNZXNzYWdlID0gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBwcm9jZXNzZWQgV1NETCBtZXNzYWdlLgotICAgKiBAcmV0dXJuIHRoZSBsYXN0IHByb2Nlc3NlZCBXU0RMIG1lc3NhZ2UuCi0gICAqLwotICBwdWJsaWMgTWVzc2FnZSBnZXRNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiBhY3RpdmVNZXNzYWdlOwotICB9Ci0gIC8qKgotICAgKiBTZXRzIFdTREwgcG9ydCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIFdTREwgcG9ydCB0byBiZSBwcm9jZXNzZWQuCi0gICAqLwotICB2b2lkIHNldFBvcnQoUG9ydCB2YWx1ZSkKLSAgewotICAgIGFjdGl2ZVBvcnQgPSB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogR2V0cyBsYXN0IHByb2Nlc3NlZCBXU0RMIHBvcnQuCi0gICAqIEByZXR1cm4gdGhlIGxhc3QgcHJvY2Vzc2VkIFdTREwgcG9ydC4KLSAgICovCi0gIHB1YmxpYyBQb3J0IGdldFBvcnQoKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZVBvcnQ7Ci0gIH0KLSAgLyoqCi0gICAqIFNldHMgV1NETCBwb3J0IHR5cGUgdG8gYmUgcHJvY2Vzc2VkLgotICAgKiBAcGFyYW0gdmFsdWUgIHRoZSBXU0RMIHBvcnQgdHlwZSB0byBiZSBwcm9jZXNzZWQuCi0gICAqLwotICB2b2lkIHNldFBvcnRUeXBlKFBvcnRUeXBlIHZhbHVlKQotICB7Ci0gICAgYWN0aXZlUG9ydFR5cGUgPSB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogR2V0cyBsYXN0IHByb2Nlc3NlZCBXU0RMIHBvcnQgdHlwZS4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBwb3J0IHR5cGUuCi0gICAqLwotICBwdWJsaWMgUG9ydFR5cGUgZ2V0UG9ydFR5cGUoKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZVBvcnRUeXBlOwotICB9Ci0gIC8qKgotICAgKiBTZXRzIFdTREwgZGVmaW5pdGlvbiB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIFdTREwgZGVmaW5pdGlvbiB0byBiZSBwcm9jZXNzZWQuCi0gICAqLwotICB2b2lkIHNldERlZmluaXRpb24oRGVmaW5pdGlvbiB2YWx1ZSkKLSAgewotICAgIGFjdGl2ZURlZmluaXRpb24gPSB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogR2V0cyBsYXN0IHByb2Nlc3NlZCBXU0RMIGRlZmluaXRpb24uCi0gICAqIEByZXR1cm4gdGhlIGxhc3QgcHJvY2Vzc2VkIFdTREwgZGVmaW5pdGlvbi4KLSAgICovCi0gIHB1YmxpYyBEZWZpbml0aW9uIGdldERlZmluaXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZURlZmluaXRpb247Ci0gIH0KLSAgLyoqCi0gICAqIFNldHMgV1NETCBleHRlbnNpYmlsaXR5IGVsZW1lbnQgdG8gYmUgcHJvY2Vzc2VkLgotICAgKiBAcGFyYW0gdmFsdWUgIHRoZSBXU0RMIGV4dGVuc2liaWxpdHkgZWxlbWVudCB0byBiZSBwcm9jZXNzZWQuCi0gICAqLwotICB2b2lkIHNldEV4dGVuc2liaWxpdHlFbGVtZW50KEV4dGVuc2liaWxpdHlFbGVtZW50IHZhbHVlKQotICB7Ci0gICAgYWN0aXZlRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogR2V0cyBsYXN0IHByb2Nlc3NlZCBXU0RMIGV4dGVuc2liaWxpdHkgZWxlbWVudC4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBleHRlbnNpYmlsaXR5IGVsZW1lbnQuCi0gICAqLwotICBwdWJsaWMgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZUV4dGVuc2liaWxpdHlFbGVtZW50OwotICB9Ci0gIC8qKgotICAgKiBTZXRzIFdTREwgZWxlbWVudCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIFdTREwgZWxlbWVudCB0byBiZSBwcm9jZXNzZWQuCi0gICAqLwotICB2b2lkIHNldFNPQVBCaW5kaW5nKFNPQVBCaW5kaW5nIHZhbHVlKQotICB7Ci0gICAgYWN0aXZlU09BUEJpbmRpbmcgPSB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogR2V0cyBsYXN0IHByb2Nlc3NlZCBXU0RMIFNPQVAgYmluZGluZy4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBTT0FQIGJpbmRpbmcuCi0gICAqLwotICBwdWJsaWMgU09BUEJpbmRpbmcgZ2V0U09BUEJpbmRpbmcoKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZVNPQVBCaW5kaW5nOwotICB9Ci0gIC8qKgotICAgKiBTZXRzIFdTREwgZWxlbWVudCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgV1NETCBlbGVtZW50IHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0U09BUEJvZHkoU09BUEJvZHkgdmFsdWUpCi0gIHsKLSAgICBhY3RpdmVTT0FQQm9keSA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgU09BUCBib2R5LgotICAgKiBAcmV0dXJuIHRoZSBsYXN0IHByb2Nlc3NlZCBXU0RMIFNPQVAgYm9keS4KLSAgICovCi0gIHB1YmxpYyBTT0FQQm9keSBnZXRTT0FQQm9keSgpCi0gIHsKLSAgICByZXR1cm4gYWN0aXZlU09BUEJvZHk7Ci0gIH0KLSAgLyoqCi0gICAqIFNldHMgV1NETCBlbGVtZW50IHRvIGJlIHByb2Nlc3NlZC4KLSAgICogQHBhcmFtIHZhbHVlICB0aGUgV1NETCBlbGVtZW50IHRvIGJlIHByb2Nlc3NlZC4KLSAgICovCi0gIHZvaWQgc2V0U09BUEhlYWRlcihTT0FQSGVhZGVyIHZhbHVlKQotICB7Ci0gICAgYWN0aXZlU09BUEhlYWRlciA9IHZhbHVlOwotICB9Ci0gIC8qKgotICAgKiBHZXRzIGxhc3QgcHJvY2Vzc2VkIFdTREwgU09BUCBoZWFkZXIuCi0gICAqIEByZXR1cm4gdGhlIGxhc3QgcHJvY2Vzc2VkIFdTREwgU09BUCBoZWFkZXIuCi0gICAqLwotICBwdWJsaWMgU09BUEhlYWRlciBnZXRTT0FQSGVhZGVyKCkKLSAgewotICAgIHJldHVybiBhY3RpdmVTT0FQSGVhZGVyOwotICB9Ci0gIC8qKgotICAgKiBTZXRzIFdTREwgZWxlbWVudCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIFdTREwgZWxlbWVudCB0byBiZSBwcm9jZXNzZWQuCi0gICAqLwotICB2b2lkIHNldFNPQVBIZWFkZXJGYXVsdChTT0FQSGVhZGVyRmF1bHQgdmFsdWUpCi0gIHsKLSAgICBhY3RpdmVTT0FQSGVhZGVyRmF1bHQgPSB2YWx1ZTsKLSAgfQotICAvKioKLSAgICogR2V0cyBsYXN0IHByb2Nlc3NlZCBXU0RMIFNPQVAgaGVhZGVyIGZhdWx0LgotICAgKiBAcmV0dXJuIHRoZSBsYXN0IHByb2Nlc3NlZCBXU0RMIFNPQVAgaGVhZGVyIGZhdWx0LgotICAgKi8KLSAgcHVibGljIFNPQVBIZWFkZXJGYXVsdCBnZXRTT0FQSGVhZGVyRmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZVNPQVBIZWFkZXJGYXVsdDsKLSAgfQotICAvKioKLSAgICogU2V0cyBXU0RMIGVsZW1lbnQgdG8gYmUgcHJvY2Vzc2VkLgotICAgKiBAcGFyYW0gdmFsdWUgIHRoZSBXU0RMIGVsZW1lbnQgdG8gYmUgcHJvY2Vzc2VkLgotICAgKi8KLSAgdm9pZCBzZXRTT0FQRmF1bHQoU09BUEZhdWx0IHZhbHVlKQotICB7Ci0gICAgYWN0aXZlU09BUEZhdWx0ID0gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBwcm9jZXNzZWQgV1NETCBTT0FQIGZhdWx0LgotICAgKiBAcmV0dXJuIHRoZSBsYXN0IHByb2Nlc3NlZCBXU0RMIFNPQVAgZmF1bHQuCi0gICAqLwotICBwdWJsaWMgU09BUEZhdWx0IGdldFNPQVBGYXVsdCgpCi0gIHsKLSAgICByZXR1cm4gYWN0aXZlU09BUEZhdWx0OwotICB9Ci0gIC8qKgotICAgKiBTZXRzIFdTREwgZWxlbWVudCB0byBiZSBwcm9jZXNzZWQuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlV1NETCBlbGVtZW50IHRvIGJlIHByb2Nlc3NlZAotICAgKi8KLSAgdm9pZCBzZXRTT0FQT3BlcmF0aW9uKFNPQVBPcGVyYXRpb24gdmFsdWUpCi0gIHsKLSAgICBhY3RpdmVTT0FQT3BlcmF0aW9uID0gdmFsdWU7Ci0gIH0KLSAgLyoqCi0gICAqIEdldHMgbGFzdCBwcm9jZXNzZWQgV1NETCBTT0FQIG9wZXJhdGlvbi4KLSAgICogQHJldHVybiB0aGUgbGFzdCBwcm9jZXNzZWQgV1NETCBTT0FQIG9wZXJhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBTT0FQT3BlcmF0aW9uIGdldFNPQVBPcGVyYXRpb24oKQotICB7Ci0gICAgcmV0dXJuIGFjdGl2ZVNPQVBPcGVyYXRpb247Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvdHJhdmVyc2FsL1dTRExWaXNpdG9yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3RyYXZlcnNhbC9XU0RMVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjk1ZDdhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwvdHJhdmVyc2FsL1dTRExWaXNpdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwudHJhdmVyc2FsOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keTsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbjsKLQotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLS8qKgotICogVGhlIGludGVyZmFjZSBkZWZpbmVzIGNhbGxiYWNrIG1ldGhvZHMgZHVyaW5nIHRyYXZlcnNlIFdTREwuCi0gKiBXU0RMVmlzaXRvciBjb3VsZCBjYW5jZWwgYXJ0aWZhY3QgcHJvY2Vzc2luZyBieSB1c2luZyB0cmF2ZXJzYWwgY29udGV4dAotICogPGNvZGU+Y2FuY2VsWFhYUHJvY2Vzc2luZzwvY29kZT4gbWV0aG9kcy4KLSAqIAotICogQGF1dGhvciBLdWxpawotICovCi1wdWJsaWMgaW50ZXJmYWNlIFdTRExWaXNpdG9yCi17Ci0gIC8qKgotICAgKiBNZXRob2QgdmlzaXRzIFdTREwgcGFydCBvYmplY3QuCi0gICAqIEBwYXJhbSBvYmogV1NETCBlbGVtZW50IHRvIGJlIHZpc2l0ZWQuCi0gICAqIEBwYXJhbSBwYXJlbnQgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gY3R4IGN1cnJlbnQgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChQYXJ0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBzZXJ2aWNlIG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNlcnZpY2Ugb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpOwotICAvKioKLSAgICogTWV0aG9kIHZpc2l0cyBXU0RMIHR5cGVzIG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFR5cGVzIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBvcGVyYXRpb24gb2JqZWN0LgotICAgKiBAcGFyYW0gb2JqIFdTREwgZWxlbWVudCB0byBiZSB2aXNpdGVkLgotICAgKiBAcGFyYW0gcGFyZW50IFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIGN0eCBjdXJyZW50IHRyYXZlcnNhbCBjb250ZXh0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoT3BlcmF0aW9uIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBpbnB1dCBvYmplY3QuCi0gICAqIEBwYXJhbSBvYmogV1NETCBlbGVtZW50IHRvIGJlIHZpc2l0ZWQuCi0gICAqIEBwYXJhbSBwYXJlbnQgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gY3R4IGN1cnJlbnQgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChJbnB1dCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCk7Ci0gIC8qKgotICAgKiBNZXRob2QgdmlzaXRzIFdTREwgb3V0cHV0IG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KE91dHB1dCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCk7Ci0gIC8qKgotICAgKiBNZXRob2QgdmlzaXRzIFdTREwgZmF1bHQgb2JqZWN0LgotICAgKiBAcGFyYW0gb2JqIFdTREwgZWxlbWVudCB0byBiZSB2aXNpdGVkLgotICAgKiBAcGFyYW0gcGFyZW50IFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIGN0eCBjdXJyZW50IHRyYXZlcnNhbCBjb250ZXh0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoRmF1bHQgb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpOwotICAvKioKLSAgICogTWV0aG9kIHZpc2l0cyBXU0RMIGJpbmRpbmcgb2JqZWN0LgotICAgICAqIEBwYXJhbSBvYmogV1NETCBlbGVtZW50IHRvIGJlIHZpc2l0ZWQuCi0gICAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAgICogQHBhcmFtIGN0eCBjdXJyZW50IHRyYXZlcnNhbCBjb250ZXh0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoQmluZGluZyBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCk7Ci0gIC8qKgotICAgKiBNZXRob2QgdmlzaXRzIFdTREwgYmluZGluZyBvcGVyYXRpb24gb2JqZWN0LgotICAgKiBAcGFyYW0gb2JqIFdTREwgZWxlbWVudCB0byBiZSB2aXNpdGVkLgotICAgKiBAcGFyYW0gcGFyZW50IFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIGN0eCBjdXJyZW50IHRyYXZlcnNhbCBjb250ZXh0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoCi0gICAgQmluZGluZ09wZXJhdGlvbiBvYmosCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpOwotICAvKioKLSAgICogTWV0aG9kIHZpc2l0cyBXU0RMIGJpbmRpbmcgaW5wdXQgb2JqZWN0LgotICAgKiBAcGFyYW0gb2JqIFdTREwgZWxlbWVudCB0byBiZSB2aXNpdGVkLgotICAgKiBAcGFyYW0gcGFyZW50IFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIGN0eCBjdXJyZW50IHRyYXZlcnNhbCBjb250ZXh0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoQmluZGluZ0lucHV0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBiaW5kaW5nIG91dHB1dCBvYmplY3QuCi0gICAqIEBwYXJhbSBvYmogV1NETCBlbGVtZW50IHRvIGJlIHZpc2l0ZWQuCi0gICAqIEBwYXJhbSBwYXJlbnQgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gY3R4IGN1cnJlbnQgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChCaW5kaW5nT3V0cHV0IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBiaW5kaW5nIGZhdWx0IG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEJpbmRpbmdGYXVsdCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCk7Ci0gIC8qKgotICAgKiBNZXRob2QgdmlzaXRzIFdTREwgaW1wb3J0IG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEltcG9ydCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCk7Ci0gIC8qKgotICAgKiBNZXRob2QgdmlzaXRzIFdTREwgZWxlbWVudCBvYmplY3QuCi0gICAqIEBwYXJhbSBvYmogV1NETCBlbGVtZW50IHRvIGJlIHZpc2l0ZWQuCi0gICAqIEBwYXJhbSBwYXJlbnQgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gY3R4IGN1cnJlbnQgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChFbGVtZW50IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBtZXNzYWdlIG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KE1lc3NhZ2Ugb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpOwotICAvKioKLSAgICogTWV0aG9kIHZpc2l0cyBXU0RMIHBvcnQgb2JqZWN0LgotICAgKiBAcGFyYW0gb2JqIFdTREwgZWxlbWVudCB0byBiZSB2aXNpdGVkLgotICAgKiBAcGFyYW0gcGFyZW50IFdTREwgZWxlbWVudC4KLSAgICogQHBhcmFtIGN0eCBjdXJyZW50IHRyYXZlcnNhbCBjb250ZXh0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoUG9ydCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCk7Ci0gIC8qKgotICAgKiBNZXRob2QgdmlzaXRzIFdTREwgcG9ydCB0eXBlIG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFBvcnRUeXBlIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBkZWZpbml0aW9uIG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KERlZmluaXRpb24gb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpOwotICAvKioKLSAgICogTWV0aG9kIHZpc2l0cyBXU0RMIGV4dGVuc2liaWxpdHkgZWxlbWVudCBvYmplY3QuCi0gICAqIEBwYXJhbSBvYmogV1NETCBlbGVtZW50IHRvIGJlIHZpc2l0ZWQuCi0gICAqIEBwYXJhbSBwYXJlbnQgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gY3R4IGN1cnJlbnQgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdCgKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBvYmosCi0gICAgT2JqZWN0IHBhcmVudCwKLSAgICBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpOwotICAvKioKLSAgICogTWV0aG9kIHZpc2l0cyBXU0RMIFNPQVAgYmluZGluZyBvYmplY3QuCi0gICAqIEBwYXJhbSBvYmogV1NETCBlbGVtZW50IHRvIGJlIHZpc2l0ZWQuCi0gICAqIEBwYXJhbSBwYXJlbnQgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gY3R4IGN1cnJlbnQgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQQmluZGluZyBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCk7Ci0gIC8qKgotICAgKiBNZXRob2QgdmlzaXRzIFdTREwgU09BUCBib2R5IG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBCb2R5IG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBTT0FQIGhlYWRlciBvYmplY3QuCi0gICAqIEBwYXJhbSBvYmogV1NETCBlbGVtZW50IHRvIGJlIHZpc2l0ZWQuCi0gICAqIEBwYXJhbSBwYXJlbnQgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gY3R4IGN1cnJlbnQgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChTT0FQSGVhZGVyIG9iaiwgT2JqZWN0IHBhcmVudCwgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBTT0FQIGhlYWRlciBmYXVsdCBvYmplY3QuCi0gICAqIEBwYXJhbSBvYmogV1NETCBlbGVtZW50IHRvIGJlIHZpc2l0ZWQuCi0gICAqIEBwYXJhbSBwYXJlbnQgV1NETCBlbGVtZW50LgotICAgKiBAcGFyYW0gY3R4IGN1cnJlbnQgdHJhdmVyc2FsIGNvbnRleHQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdCgKLSAgICBTT0FQSGVhZGVyRmF1bHQgb2JqLAotICAgIE9iamVjdCBwYXJlbnQsCi0gICAgV1NETFRyYXZlcnNhbENvbnRleHQgY3R4KTsKLSAgLyoqCi0gICAqIE1ldGhvZCB2aXNpdHMgV1NETCBTT0FQIGZhdWx0IG9iamVjdC4KLSAgICogQHBhcmFtIG9iaiBXU0RMIGVsZW1lbnQgdG8gYmUgdmlzaXRlZC4KLSAgICogQHBhcmFtIHBhcmVudCBXU0RMIGVsZW1lbnQuCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBGYXVsdCBvYmosIE9iamVjdCBwYXJlbnQsIFdTRExUcmF2ZXJzYWxDb250ZXh0IGN0eCk7Ci0gIC8qKgotICAgKiBNZXRob2QgdmlzaXRzIFdTREwgU09BUCBvcGVyYXRpb24gb2JqZWN0LgotICAgKiBAcGFyYW0gb2JqIFdTREwgZWxlbWVudCB0byBiZSB2aXNpdGVkLgotICAgKiBAcGFyYW0gcGFyZW50IFdTREwgZWxlbWVudC4uCi0gICAqIEBwYXJhbSBjdHggY3VycmVudCB0cmF2ZXJzYWwgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFNPQVBPcGVyYXRpb24gb2JqLCBPYmplY3QgcGFyZW50LCBXU0RMVHJhdmVyc2FsQ29udGV4dCBjdHgpOwotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC94c2QvRmlsZUVudGl0eVJlc29sdmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9GaWxlRW50aXR5UmVzb2x2ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRhZmJkOS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9GaWxlRW50aXR5UmVzb2x2ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnhzZDsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MUmVzb3VyY2VJZGVudGlmaWVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFbnRpdHlSZXNvbHZlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTElucHV0U291cmNlOwotCi0vKioKLSAqIEVudGl0eSByZXNvbHZlIHRvIHJlc29sdmUgZmlsZSBlbnRpdGllcy4KLSAqLwotcHVibGljIGNsYXNzIEZpbGVFbnRpdHlSZXNvbHZlciBpbXBsZW1lbnRzIFhNTEVudGl0eVJlc29sdmVyCi17Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFbnRpdHlSZXNvbHZlciNyZXNvbHZlRW50aXR5KG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAqLwotICBwdWJsaWMgWE1MSW5wdXRTb3VyY2UgcmVzb2x2ZUVudGl0eShYTUxSZXNvdXJjZUlkZW50aWZpZXIgcmVzb3VyY2UpIHRocm93cyBYTklFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgcHVibGljSWQgPSByZXNvdXJjZS5nZXRQdWJsaWNJZCgpOwotICAgIFN0cmluZyBzeXN0ZW1JZCA9IHJlc291cmNlLmdldEV4cGFuZGVkU3lzdGVtSWQoKTsKLSAgICBTdHJpbmcgdXJsID0gc3lzdGVtSWQ7Ci0gICAgaWYodXJsID09IG51bGwpCi0gICAgewotICAgICAgdXJsID0gcHVibGljSWQ7Ci0gICAgfQotICAgIGlmKHVybCA9PSBudWxsKQotICAgIHsKLSAgICAgIHVybCA9IHJlc291cmNlLmdldE5hbWVzcGFjZSgpOwotICAgIH0KLSAgICBpZih1cmwgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJbnB1dFN0cmVhbSBpcyA9IG5ldyBMYXp5VVJMSW5wdXRTdHJlYW0odXJsKTsKLSAgICAgIHJldHVybiBuZXcgWE1MSW5wdXRTb3VyY2UocHVibGljSWQsIHN5c3RlbUlkLCBzeXN0ZW1JZCwgaXMsIG51bGwpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9JbmxpbmVTY2hlbWFHZW5lcmF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL0lubGluZVNjaGVtYUdlbmVyYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGJlYzNkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL0lubGluZVNjaGVtYUdlbmVyYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTkwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC54c2Q7Ci0KLWltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci0KLWltcG9ydCBjb20uaWJtLndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hQ29uc3RhbnRzOwotCi0vKioKLSAqIEdlbmVyYXRlIGEgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgc2NoZW1hIGZvciBhbiBpbmxpbmUgc2NoZW1hLiBXaWxsIGFkZCBpbXBvcnRzIGZvciB1bnJlc29sdmVkCi0gKiBuYW1lc3BhY2VzLgotICogCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCwgSUJNCi0gKi8KLXB1YmxpYyBjbGFzcyBJbmxpbmVTY2hlbWFHZW5lcmF0b3IKLXsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBTT0FQX0VOQ09ESU5HX1VSSSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgWE1MTlMgPSAieG1sbnMiOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIFRBUkdFVE5BTUVTUEFDRSA9ICJ0YXJnZXROYW1lc3BhY2UiOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIE5BTUVTUEFDRSA9ICJuYW1lc3BhY2UiOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIElNUE9SVCA9ICJpbXBvcnQiOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIElOQ0xVREUgPSAiaW5jbHVkZSI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgU0NIRU1BID0gInNjaGVtYSI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgU0NIRU1BTE9DQVRJT04gPSAic2NoZW1hTG9jYXRpb24iOwotICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIFRZUEUgPSAidHlwZSI7Ci0gIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgTkFNRSA9ICJuYW1lIjsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZ1tdIGlnbm9yZU5hbWVzcGFjZXMgPQotICAgIHsgU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMTk5OSwgU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMCwgU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMSB9OwotCi0gIHByb3RlY3RlZCBzdGF0aWMgSW5saW5lU2NoZW1hR2VuZXJhdG9yIGluc3RhbmNlID0gbnVsbDsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwcm90ZWN0ZWQgSW5saW5lU2NoZW1hR2VuZXJhdG9yKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgaW5zdGFuY2Ugb2YgdGhlIElubGluZVNjaGVtYUdlbmVyYXRvci4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGluc3RhbmNlIG9mIHRoZSBpbmxpbmUgc2NoZW1hIGdlbmVyYXRvci4KLSAgICovCi0gIHByb3RlY3RlZCBzdGF0aWMgSW5saW5lU2NoZW1hR2VuZXJhdG9yIGdldEluc3RhbmNlKCkKLSAgewotICAgIGlmIChpbnN0YW5jZSA9PSBudWxsKQotICAgIHsKLSAgICAgIGluc3RhbmNlID0gbmV3IElubGluZVNjaGVtYUdlbmVyYXRvcigpOwotICAgIH0KLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzY2hlbWEgZnJvbSB0aGUgZWxlbWVudCBwcm92aWRlZC4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtZW50IFRoZSByb290IGVsZW1lbnQgb2YgdGhlIHNjaGVtYS4KLSAgICogQHBhcmFtIGVsZW1lbnRzIEEgbGlzdCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNjaGVtYSBpbiBvcmRlci4KLSAgICogQHBhcmFtIGZpbGVsb2NhdGlvbiBUaGUgVVJJIG9mIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHNjaGVtYS4KLSAgICogQHJldHVybiBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHNjaGVtYS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGNyZWF0ZVhTRFN0cmluZyhFbGVtZW50IGVsZW1lbnQsIExpc3QgZWxlbWVudHMsIFN0cmluZyBmaWxlbG9jYXRpb24pCi0gIHsKLSAgICByZXR1cm4gSW5saW5lU2NoZW1hR2VuZXJhdG9yLmNyZWF0ZVhTRFN0cmluZyhlbGVtZW50LCBlbGVtZW50cywgZmlsZWxvY2F0aW9uLCBuZXcgSGFzaHRhYmxlKCkpOwotICB9Ci0gIAotICAvKioKLSAgCSogQ3JlYXRlcyBhIFN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNjaGVtYSBtb2RlbCB3aXRoIHRoZSByb290IGVsZW1lbnQgb2YKLSAgCSogZXh0RWxlbS4gQ2FsbHMgY3JlYXRlWFNEU3RyaW5nUmVjdXJzaXZlbHkgdG8gdGFrZSBjYXJlIG9mIGJ1aWxkaW5nIHRoZSBTdHJpbmcKLSAgCSogYWZ0ZXIgaXQgb2J0YWlucyB0aGUgRWxlbWVudCBmcm9tIHRoZSBVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuCi0gIAkqIAotICAJKiBAcGFyYW0gZWxlbWVudCBUaGUgcm9vdCBlbGVtZW50IG9mIHRoZSBzY2hlbWEuCi0gIAkqIEBwYXJhbSBlbGVtZW50cyBBIGxpc3QgdG8gY29udGFpbiB0aGUgZWxlbWVudHMgaW4gdGhlIHNjaGVtYSBpbiBvcmRlci4KLSAgCSogQHBhcmFtIGZpbGVsb2NhdGlvbiBUaGUgbG9jYXRpb24gb2YgdGhlIGZpbGUgdGhlIHNjaGVtYSBpcyBsb2NhdGVkIGluLgotICAJKiBAcGFyYW0gcGFyZW50TlNzIEEgaGFzaHRhYmxlIG9mIHBhcmVudCBuYW1lc3BhY2VzIHRvIHVzZWQgdG8gcmVzb2x2ZSBwcmVmaXhlcy4KLSAgCSogQHJldHVybiBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2NoZW1hIHdpdGggdGhlIHJvb3QgZWxlbWVudCAnZWxlbWVudCcuCi0gIAkqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBjcmVhdGVYU0RTdHJpbmcoRWxlbWVudCBlbGVtZW50LCBMaXN0IGVsZW1lbnRzLCBTdHJpbmcgZmlsZWxvY2F0aW9uLCBIYXNodGFibGUgcGFyZW50TlNzKQotICB7Ci0gICAgSW5saW5lU2NoZW1hR2VuZXJhdG9yIHNjaGVtYUdlbmVyYXRvciA9IElubGluZVNjaGVtYUdlbmVyYXRvci5nZXRJbnN0YW5jZSgpOwotICAgIEhhc2h0YWJsZSBuc1Jlc29sdmVyID0gc2NoZW1hR2VuZXJhdG9yLmdldE5TUmVzb2x2ZXIoZWxlbWVudCk7Ci0gICAgTGlzdCByZXFucyA9IHNjaGVtYUdlbmVyYXRvci5nZXRSZXF1aXJlZE5hbWVzcGFjZXMoZWxlbWVudCk7Ci0gICAgSGFzaHRhYmxlIHJlcU5TRGVjbCA9IHNjaGVtYUdlbmVyYXRvci5yZXNvbHZlTmFtZXNwYWNlcyhyZXFucywgbnNSZXNvbHZlciwgcGFyZW50TlNzKTsKLSAgICAvL0hhc2h0YWJsZSByZXFOU0RlY2wgPSBzY2hlbWFHZW5lcmF0b3IuZ2V0UmVxdWlyZWROU0RlY2xhcmF0aW9ucyhyZXFucywgbnNSZXNvbHZlciwgcGFyZW50TlNzKTsKLSAgICBMaXN0IGltcG9ydE5TID0gc2NoZW1hR2VuZXJhdG9yLmdldEltcG9ydE5hbWVzcGFjZXMoZWxlbWVudCk7Ci0gICAgcmVxbnMgPSBzY2hlbWFHZW5lcmF0b3IucmVtb3ZlSW1wb3J0cyhyZXFucywgaW1wb3J0TlMpOwotICAgIHJlcW5zID0gc2NoZW1hR2VuZXJhdG9yLnJlbW92ZUxvY2FsTmFtZXNwYWNlcyhyZXFucywgZWxlbWVudCk7Ci0gICAgcmV0dXJuIHNjaGVtYUdlbmVyYXRvci5jcmVhdGVYU0RTdHJpbmdSZWN1cnNpdmVseShlbGVtZW50LCBlbGVtZW50cywgcmVxbnMsIHJlcU5TRGVjbCwgZmlsZWxvY2F0aW9uKTsKLSAgfQotICAvKioKLSAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBTT0FQIGVuY29kaW5nIG5hbWVzcGFjZSBpcyByZXF1aXJlZCBidXQgbm90IGltcG9ydGVkLgotICAgKiAKLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgc2NoZW1hLgotICAgKiBAcGFyYW0gZmlsZWxvY2F0aW9uIFRoZSBsb2NhdGlvbiBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBzY2hlbWEuCi0gICAqIEBwYXJhbSBwYXJlbnROU3MgQSBoYXNodGFibGUgb2YgdGhlIHBhcmVudCBuYW1lc3BhY2VzLgotICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIHNvYXAgZW5jb2RpbmcgbmFtZXNwYWNlIGlzIHJlcXVpcmVkIGJ1dCBub3QgaW1wb3J0ZWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBzb2FwRW5jb2RpbmdSZXF1aXJlZE5vdEltcG9ydGVkKEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIGZpbGVsb2NhdGlvbiwgSGFzaHRhYmxlIHBhcmVudE5TcykKLSAgewotICAgIElubGluZVNjaGVtYUdlbmVyYXRvciBzY2hlbWFHZW5lcmF0b3IgPSBJbmxpbmVTY2hlbWFHZW5lcmF0b3IuZ2V0SW5zdGFuY2UoKTsKLSAgICBIYXNodGFibGUgbnNSZXNvbHZlciA9IHNjaGVtYUdlbmVyYXRvci5nZXROU1Jlc29sdmVyKGVsZW1lbnQpOwotICAgIExpc3QgcmVxbnMgPSBudWxsOwotCi0gICAgcmVxbnMgPSBzY2hlbWFHZW5lcmF0b3IuZ2V0UmVxdWlyZWROYW1lc3BhY2VzKGVsZW1lbnQpOwotICAgIHNjaGVtYUdlbmVyYXRvci5yZXNvbHZlTmFtZXNwYWNlcyhyZXFucywgbnNSZXNvbHZlciwgcGFyZW50TlNzKTsKLSAgICAvL3NjaGVtYUdlbmVyYXRvci5yZXNvbHZlVW5kZWNsYXJlZE5hbWVzcGFjZXMocmVxbnMsIHBhcmVudE5Tcyk7Ci0gICAgTGlzdCBpbXBvcnROUyA9IHNjaGVtYUdlbmVyYXRvci5nZXRJbXBvcnROYW1lc3BhY2VzKGVsZW1lbnQpOwotICAgIHJlcW5zID0gc2NoZW1hR2VuZXJhdG9yLnJlbW92ZUltcG9ydHMocmVxbnMsIGltcG9ydE5TKTsKLSAgICByZXFucyA9IHNjaGVtYUdlbmVyYXRvci5yZW1vdmVMb2NhbE5hbWVzcGFjZXMocmVxbnMsIGVsZW1lbnQpOwotCi0gICAgcmV0dXJuIHNjaGVtYUdlbmVyYXRvci5jaGVja1NPQVBFbmNvZGluZ1JlcXVpcmVkKHJlcW5zKTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGlzIHJlY3Vyc2l2ZSBtZXRob2QgY3JlYXRlcyB0aGUgc2NoZW1hIFN0cmluZyBmcm9tIHRoZSByb290IEVsZW1lbnQuCi0gICAqIAotICAgKiBAcGFyYW0gZWxlbSBUaGUgcm9vdCBlbGVtZW50IG9mIHRoZSBzY2hlbWEuCi0gICAqIEBwYXJhbSBlbGVtZW50cyBBIGxpc3QgdG8gYmUgY3JlYXRlZCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNjaGVtYSBpbiBvcmRlci4KLSAgICogQHBhcmFtIHJlcXVpcmVkTmFtZXNwYWNlcyBBIGxpc3Qgb2YgcmVxdWlyZWQgbmFtZXNwYWNlcy4KLSAgICogQHBhcmFtIHJlcU5TRGVjbCBBIGhhc2h0YWJsZSBvZiByZXF1aXJlZCBuYW1lc3BhY2UgZGVjbGFyYXRpb25zLgotICAgKiBAcGFyYW0gZmlsZWxvY2F0aW9uIFRoZSB1cmkgb2YgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGlzIHNjaGVtYS4KLSAgICogQHJldHVybiBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNjaGVtYS4KLSAgICovCi0gIHByb3RlY3RlZCBTdHJpbmcgY3JlYXRlWFNEU3RyaW5nUmVjdXJzaXZlbHkoCi0gICAgRWxlbWVudCBlbGVtLAotICAgIExpc3QgZWxlbWVudHMsCi0gICAgTGlzdCByZXF1aXJlZE5hbWVzcGFjZXMsCi0gICAgSGFzaHRhYmxlIHJlcU5TRGVjbCwKLSAgICBTdHJpbmcgZmlsZWxvY2F0aW9uKQotICB7Ci0gICAgaWYgKGVsZW0gPT0gbnVsbCkKLSAgICAgIHJldHVybiAiIjsgLy8ganVzdCBpbiBjYXNlCi0KLSAgICBlbGVtZW50cy5hZGQoZWxlbSk7Ci0KLSAgICBTdHJpbmdCdWZmZXIgeHNkU3RyaW5nID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgIFN0cmluZyBlbGVtZW50TmFtZSA9IGVsZW0uZ2V0VGFnTmFtZSgpOwotICAgIHhzZFN0cmluZy5hcHBlbmQoIjwiKS5hcHBlbmQoZWxlbWVudE5hbWUpOwotCi0gICAgYm9vbGVhbiBmb3VuZFNjaGVtYUxvY2F0aW9uID0gZmFsc2U7IC8vIGZsYWcgaWYgc2NoZW1hbG9jYXRpb24gaXMgZGVmaW5lZAotICAgIFN0cmluZyBuYW1lc3BhY2UgPSAiIjsgLy8gdGhlIG5hbWVzcGFjZSBpZiB3ZSdyZSBjaGVja2luZyBhbiBpbXBvcnQgb3IgaW5jbHVkZQotICAgIFN0cmluZyBuYW1lUHJlZml4ID0gIiI7IC8vIHRoZSB4bWxucyBwcmVmaXggdXNlZCBmb3IgdGhlIGVsZW1lbnRzCi0gICAgLy8gR2V0IGFsbCBvZiB0aGUgYXR0cmlidXRlcyBmb3IgdGhpcyBlbGVtZW50IGFuZCBhcHBlbmQgdGhlbSB0byB0aGUgeHNkU3RyaW5nCi0gICAgTmFtZWROb2RlTWFwIGF0dHMgPSBlbGVtLmdldEF0dHJpYnV0ZXMoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dHMuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICB7Ci0gICAgICBOb2RlIG4gPSBhdHRzLml0ZW0oaSk7Ci0gICAgICB4c2RTdHJpbmcuYXBwZW5kKCIgIikuYXBwZW5kKG4uZ2V0Tm9kZU5hbWUoKSkuYXBwZW5kKCI9XCIiKTsKLSAgICAgIFN0cmluZyBub2RlTmFtZSA9IG4uZ2V0Tm9kZU5hbWUoKTsKLSAgICAgIGlmIChub2RlTmFtZS5lcXVhbHNJZ25vcmVDYXNlKFNDSEVNQUxPQ0FUSU9OKSAmJiBmaWxlbG9jYXRpb24gIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgZm91bmRTY2hlbWFMb2NhdGlvbiA9IHRydWU7Ci0gICAgICAgIFN0cmluZyByZWxhdGl2ZVBhdGggPSBuLmdldE5vZGVWYWx1ZSgpOwotICAgICAgICB4c2RTdHJpbmcuYXBwZW5kKHJlbGF0aXZlUGF0aCkuYXBwZW5kKCJcIiIpOyAgIAotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBTdHJpbmcgbm9kZVZhbHVlID0gbi5nZXROb2RlVmFsdWUoKTsKLSAgICAgICAgaWYgKG5vZGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoTkFNRVNQQUNFKSkKLSAgICAgICAgewotICAgICAgICAgIG5hbWVzcGFjZSA9IG5vZGVWYWx1ZTsKLSAgICAgICAgfQotICAgICAgICAvLyBnZXQgdGhlIG5hbWUgcHJlZml4IGZvciB0aGlzIHNjaGVtYSB0byB1c2UgaW4gZ2VuZXJhdGluZyBpbXBvcnQgc3RhdGVtZW50cwotICAgICAgICBlbHNlIGlmIChub2RlTmFtZS5pbmRleE9mKFhNTE5TKSAhPSAtMSkKLSAgICAgICAgewotCi0gICAgICAgICAgaWYgKG5vZGVWYWx1ZS5lcXVhbHNJZ25vcmVDYXNlKGVsZW0uZ2V0TmFtZXNwYWNlVVJJKCkpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG5hbWVQcmVmaXggPSBub2RlTmFtZTsKLSAgICAgICAgICAgIGlmIChuYW1lUHJlZml4LmVxdWFsc0lnbm9yZUNhc2UoWE1MTlMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBuYW1lUHJlZml4ID0gIiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG5hbWVQcmVmaXggPSBuYW1lUHJlZml4LnN1YnN0cmluZyg2KSArICI6IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gUmVwbGFjZSBvbGQgc2NoZW1hIG5hbWVzcGFjZXMgd2l0aCB0aGUgbmV3IHNjaGVtYSBuYW1lc3BhY2UuCi0gICAgICAgIGlmKG5vZGVWYWx1ZS5lcXVhbHMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMTk5OSkgfHwgbm9kZVZhbHVlLmVxdWFscyhTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAwKSkKLSAgICAgICAgIHsKLSAgICAgICAgICBub2RlVmFsdWUgPSBTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxOwotICAgICAgICB9Ci0gICAgICAgIHhzZFN0cmluZy5hcHBlbmQobm9kZVZhbHVlKS5hcHBlbmQoIlwiIik7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChlbGVtZW50TmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJpbXBvcnQiKSAmJiAhZm91bmRTY2hlbWFMb2NhdGlvbikKLSAgICB7Ci0gICAgICB4c2RTdHJpbmcuYXBwZW5kKCIgIikuYXBwZW5kKFNDSEVNQUxPQ0FUSU9OKS5hcHBlbmQoIj1cIiIpLmFwcGVuZChuYW1lc3BhY2UpLmFwcGVuZCgiXCIiKTsKLSAgICB9Ci0gICAgLy8gYWRkIGluIGFueSByZXF1aXJlZCBOUyBkZWNsYXJhdGlvbnMgZnJvbSBwYXJlbnQgZWxlbWVudHMKLSAgICBpZiAocmVxTlNEZWNsICE9IG51bGwpCi0gICAgewotICAgICAgRW51bWVyYXRpb24ga2V5cyA9IHJlcU5TRGVjbC5rZXlzKCk7Ci0gICAgICB3aGlsZSAoa2V5cy5oYXNNb3JlRWxlbWVudHMoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGtleSA9IChTdHJpbmcpa2V5cy5uZXh0RWxlbWVudCgpOwotICAgICAgICBTdHJpbmcgZGVjbE5TID0gKFN0cmluZylyZXFOU0RlY2wuZ2V0KGtleSk7Ci0gICAgICAgIGlmKGRlY2xOUy5lcXVhbHMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMTk5OSkgfHwgZGVjbE5TLmVxdWFscyhTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAwKSkKLSAgICAgICAgIHsKLSAgICAgICAgICBkZWNsTlMgPSBTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxOwotICAgICAgICB9Ci0gICAgICAgIHhzZFN0cmluZy5hcHBlbmQoIiAiKS5hcHBlbmQoa2V5KS5hcHBlbmQoIj1cIiIpLmFwcGVuZChkZWNsTlMpLmFwcGVuZCgiXCIiKTsKLSAgICAgIH0KLQotICAgIH0KLSAgICB4c2RTdHJpbmcuYXBwZW5kKCI+Iik7Ci0gICAgaWYgKHJlcXVpcmVkTmFtZXNwYWNlcyAhPSBudWxsKQotICAgIHsKLSAgICAgIEl0ZXJhdG9yIGlSZXF1aXJlZE5hbWVzcGFjZXMgPSByZXF1aXJlZE5hbWVzcGFjZXMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpUmVxdWlyZWROYW1lc3BhY2VzLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIG5zID0gKFN0cmluZylpUmVxdWlyZWROYW1lc3BhY2VzLm5leHQoKTsKLQotICAgICAgICB4c2RTdHJpbmcKLSAgICAgICAgICAuYXBwZW5kKCI8IikKLSAgICAgICAgICAuYXBwZW5kKG5hbWVQcmVmaXgpCi0gICAgICAgICAgLmFwcGVuZChJTVBPUlQpCi0gICAgICAgICAgLmFwcGVuZCgiICIpCi0gICAgICAgICAgLmFwcGVuZChOQU1FU1BBQ0UpCi0gICAgICAgICAgLmFwcGVuZCgiPVwiIikKLSAgICAgICAgICAuYXBwZW5kKG5zKQotICAgICAgICAgIC5hcHBlbmQoIlwiICIpCi0gICAgICAgICAgLmFwcGVuZChTQ0hFTUFMT0NBVElPTikKLSAgICAgICAgICAuYXBwZW5kKCI9XCIiKQotICAgICAgICAgIC5hcHBlbmQobnMpCi0gICAgICAgICAgLmFwcGVuZCgiXCIvPiIpOwotICAgICAgfQotCi0gICAgfQotICAgIHhzZFN0cmluZy5hcHBlbmQoIlxuIik7Ci0KLSAgICAvLyBjYWxsIHRoZSBtZXRob2QgcmVjdXJzaXZlbHkgZm9yIGVhY2ggY2hpbGQgZWxlbWVudAotICAgIE5vZGVMaXN0IGNoaWxkTm9kZXMgPSBlbGVtLmdldENoaWxkTm9kZXMoKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGROb2Rlcy5nZXRMZW5ndGgoKSB8fCBpIDwgNTsgaSsrKQotICAgIHsKLSAgICAgIE5vZGUgbiA9IGNoaWxkTm9kZXMuaXRlbShpKTsKLSAgICAgIC8vIHdlIG9ubHkgd2FudCBub2RlcyB0aGF0IGFyZSBFbGVtZW50cwotICAgICAgaWYgKG4gaW5zdGFuY2VvZiBFbGVtZW50KQotICAgICAgewotICAgICAgICBFbGVtZW50IGNoaWxkID0gKEVsZW1lbnQpbjsKLSAgICAgICAgeHNkU3RyaW5nLmFwcGVuZChjcmVhdGVYU0RTdHJpbmdSZWN1cnNpdmVseShjaGlsZCwgZWxlbWVudHMsIG51bGwsIG51bGwsIGZpbGVsb2NhdGlvbikpOwotICAgICAgfQotICAgIH0KLQotICAgIHhzZFN0cmluZy5hcHBlbmQoIjwvIikuYXBwZW5kKGVsZW0uZ2V0VGFnTmFtZSgpKS5hcHBlbmQoIj4iKTsKLQotICAgIHJldHVybiB4c2RTdHJpbmcudG9TdHJpbmcoKTsKLQotICB9Ci0gIC8qKgotICAgKiBHZXQgYSBsaXN0IG9mIGFsbCB0aGUgbmFtZXNwYWNlcyB0aGF0IGFyZSB1c2VkIGZvciBlbGVtZW50cyBvciB0eXBlcyBpbiB0aGUgc2NoZW1hLgotICAgKiBUaGVzZSBhcmUgdGhlIHJlcXVpcmVkIG5hbWVzcGFjZXMgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgYWxsIHRoZSBlbG1lbnRzIGFyZSB2YWxpZC4KLSAgICogCi0gICAqIEBwYXJhbSBlbGVtIFRoZSBlbGVtZW50IHRvIGNoZWNrIGZvciByZXF1aXJlZCBuYW1lc3BhY2VzLgotICAgKiBAcmV0dXJuIEEgbGlzdCBvZiByZXF1aXJlZCBuYW1lc3BhY2VzIGZvciB0aGUgZWxlbWVudCBhbmQgYWxsIGl0cyBjaGlsZHJlbi4KLSAgICovCi0gIHByb3RlY3RlZCBMaXN0IGdldFJlcXVpcmVkTmFtZXNwYWNlcyhFbGVtZW50IGVsZW0pCi0gIHsKLSAgICBMaXN0IG5hbWVzcGFjZSA9IG5ldyBWZWN0b3IoKTsKLQotICAgIC8vIGNhbGwgdGhlIG1ldGhvZCByZWN1cnNpdmVseSBmb3IgZWFjaCBjaGlsZCBlbGVtZW50Ci0gICAgLy8gcmVnaXN0ZXIgYWxsIHRoZSBjaGlsZCB0eXBlcyBmaXJzdAotICAgIE5vZGVMaXN0IGNoaWxkTm9kZXMgPSBlbGVtLmdldENoaWxkTm9kZXMoKTsKLSAgICBpbnQgbnVtQ2hpbGRyZW4gPSBjaGlsZE5vZGVzLmdldExlbmd0aCgpOwotICAgIC8vIFRPRE86IHdoeSBpcyB0aGVyZSBhIDwgNSBjb25kaXRpb24/Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DaGlsZHJlbiAvKnx8IGkgPCA1Ki87IGkrKykKLSAgICB7Ci0gICAgICBOb2RlIG4gPSBjaGlsZE5vZGVzLml0ZW0oaSk7Ci0gICAgICAvLyB3ZSBvbmx5IHdhbnQgbm9kZXMgdGhhdCBhcmUgRWxlbWVudHMKLSAgICAgIGlmIChuIGluc3RhbmNlb2YgRWxlbWVudCkKLSAgICAgIHsKLSAgICAgICAgRWxlbWVudCBjaGlsZCA9IChFbGVtZW50KW47Ci0gICAgICAgIExpc3QgY2hpbGRucyA9IGdldFJlcXVpcmVkTmFtZXNwYWNlcyhjaGlsZCk7Ci0gICAgICAgIGZvciAoaW50IGogPSBjaGlsZG5zLnNpemUoKSAtIDE7IGogPj0gMDsgai0tKQotICAgICAgICB7Ci0gICAgICAgICAgU3RyaW5nIG5zID0gKFN0cmluZyljaGlsZG5zLmdldChqKTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZiAoIW5hbWVzcGFjZS5jb250YWlucyhucykpCi0gICAgICAgICAgewotICAgICAgICAgICAgbmFtZXNwYWNlLmFkZChucyk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIEFkZCB0aGUgbmFtZXNwYWNlIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQKLSAgICBTdHJpbmcgZWxlbU5TID0gZWxlbS5nZXRQcmVmaXgoKTsKLSAgICAvLyBpZiB0aGVyZSBpcyBubyBuYW1lc3BhY2UgcHJlZml4IHNldCBpdCB0byB0aGUgZW1wdHkgcHJlZml4LgotICAgIGlmKGVsZW1OUyA9PSBudWxsKQotICAgIHsKLSAgICAgIGVsZW1OUyA9ICIiOwotICAgIH0KLSAgICBpZiAoIW5hbWVzcGFjZS5jb250YWlucyhlbGVtTlMuaW50ZXJuKCkpKQotICAgICB7Ci0gICAgICBuYW1lc3BhY2UuYWRkKGVsZW1OUy5pbnRlcm4oKSk7Ci0gICAgfQotICAgIC8vIG5vdyBhZGQgYWxsIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQncyBuYW1lc3BhY2VzCi0gICAgLy8gZG9uJ3QgaW5jbHVkZSBpbXBvcnQgYW5kIHNjaGVtYSBlbGVtZW50cwotICAgIFN0cmluZyBsb2NhbG5hbWUgPSBlbGVtLmdldExvY2FsTmFtZSgpOwotICAgIGlmICghbG9jYWxuYW1lLmVxdWFscyhJTVBPUlQpICYmICFsb2NhbG5hbWUuZXF1YWxzKElOQ0xVREUpICYmICFsb2NhbG5hbWUuZXF1YWxzKFNDSEVNQSkpCi0gICAgewotICAgICAgTmFtZWROb2RlTWFwIGF0dHMgPSBlbGVtLmdldEF0dHJpYnV0ZXMoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0cy5nZXRMZW5ndGgoKTsgaSsrKQotICAgICAgewotICAgICAgICBOb2RlIG4gPSBhdHRzLml0ZW0oaSk7Ci0KLSAgICAgICAgU3RyaW5nIG5vZGVOYW1lID0gbi5nZXROb2RlTmFtZSgpOwotICAgICAgICAvLyByZW1vdmVkIHJlc3RyaWN0aW9uIHRoYXQgd2UncmUgb25seSBsb29raW5nIGF0IHR5cGVzCi0gICAgICAgIC8vCQlpZiAobm9kZU5hbWUuZXF1YWxzSWdub3JlQ2FzZShUWVBFKSkKLSAgICAgICAgLy8JCXsKLSAgICAgICAgLy8gZG9uJ3QgdGFrZSBuYW1lc3BhY2UgaW5mbyBmcm9tIGF0dHJpYnV0ZXMgZGVmaW5pbmcgbmFtZXNwYWNlcy4KLSAgICAgICAgLy8gdGhhdCBpbmNsdWRlcyB4bWxucywgdGFyZ2V0TmFtZXNwYWNlCi0gICAgICAgIC8vIGRvbid0IHRha2UgbmFtZXNwYWNlIGluZm8gZnJvbSBuYW1lIGF0dHJpYnV0ZXMKLSAgICAgICAgaWYgKG5vZGVOYW1lLmluZGV4T2YoWE1MTlMpICE9IC0xIHx8IG5vZGVOYW1lLmVxdWFscyhUQVJHRVROQU1FU1BBQ0UpIHx8IG5vZGVOYW1lLmVxdWFscyhOQU1FKSkKLSAgICAgICAgewotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBub2RlVmFsdWUgPSBuLmdldE5vZGVWYWx1ZSgpOwotICAgICAgICAKLSAgICAgICAgCi0gICAgICAgIGludCBjb2xvbkluZGV4ID0gbm9kZVZhbHVlLmluZGV4T2YoIjoiKTsKLSAgICAgICAgLy8gRG9uJ3QgdGFrZSBuYW1lc3BhY2UgaW5mbyBmcm9tIGF0dHJpYnV0ZXMgd2l0aCB0aGUgZGVmYXVsdCBuYW1lc3BhY2UsIHRoYXQgaXMgYXR0cmlidXRlcwotICAgICAgICAvLyB0aGF0IGFyZSBub3QgcHJlZml4ZWQuIChjb2xvbkluZGV4ID09IC0xKQotICAgICAgICAvLyBJZiB0aGUgY29sb25JbmRleCBpcyBmb2xsb3dlZCBieSBhIC8gdGhlbiBpdCBpcyBhIFVSSSBhbmQgbm90Ci0gICAgICAgIC8vIG5hbWVzcGFjZSBxdWFsaWZpZWQuCi0gICAgICAgIGlmIChjb2xvbkluZGV4ID09IC0xIHx8IG5vZGVWYWx1ZS5jaGFyQXQoY29sb25JbmRleCArIDEpID09ICcvJykKLSAgICAgICAgewotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIC8vIGhlcmUgd2UgaGF2ZSBmb3VuZCBhIGNvbG9uIGRlbGltaXRlciBzbyB3ZSBuZWVkIHRoZSBuYW1lc3BhY2UgZGVmaW5lZCBoZXJlCi0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIG5vZGVWYWx1ZSA9IG5vZGVWYWx1ZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFuYW1lc3BhY2UuY29udGFpbnMobm9kZVZhbHVlLmludGVybigpKSkKLSAgICAgICAgewotCi0gICAgICAgICAgbmFtZXNwYWNlLmFkZChub2RlVmFsdWUuaW50ZXJuKCkpOwotICAgICAgICB9Ci0gICAgICAgIC8vCQl9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG5hbWVzcGFjZTsKLQotICB9Ci0KLSAgLyoqCi0gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBuYW1lc3BhY2VzIHRoYXQgaGF2ZSBhbiBpbXBvcnQgc3RhdGVtZW50LgotICAgKiAKLSAgICogQHBhcmFtIGVsZW0gVGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgc2NoZW1hLgotICAgKiBAcmV0dXJuIEEgbGlzdCBvZiBhbGwgdGhlIG5hbWVzcGFjZXMgdGhhdCBhcmUgaW1wb3J0ZWQuCi0gICAqLwotICBwcm90ZWN0ZWQgTGlzdCBnZXRJbXBvcnROYW1lc3BhY2VzKEVsZW1lbnQgZWxlbSkKLSAgewotICAgIExpc3QgbmFtZXNwYWNlID0gbmV3IFZlY3RvcigpOwotCi0gICAgLy8gY2FsbCB0aGUgbWV0aG9kIHJlY3Vyc2l2ZWx5IGZvciBlYWNoIGNoaWxkIGVsZW1lbnQKLSAgICAvLyByZWdpc3RlciBhbGwgdGhlIGNoaWxkIHR5cGVzIGZpcnN0Ci0gICAgTm9kZUxpc3QgY2hpbGROb2RlcyA9IGVsZW0uZ2V0Q2hpbGROb2RlcygpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmdldExlbmd0aCgpIHx8IGkgPCA1OyBpKyspCi0gICAgewotICAgICAgTm9kZSBuID0gY2hpbGROb2Rlcy5pdGVtKGkpOwotICAgICAgLy8gd2Ugb25seSB3YW50IG5vZGVzIHRoYXQgYXJlIEVsZW1lbnRzCi0gICAgICBpZiAobiBpbnN0YW5jZW9mIEVsZW1lbnQpCi0gICAgICB7Ci0gICAgICAgIEVsZW1lbnQgY2hpbGQgPSAoRWxlbWVudCluOwotICAgICAgICBMaXN0IGNoaWxkbnMgPSBnZXRJbXBvcnROYW1lc3BhY2VzKGNoaWxkKTsKLSAgICAgICAgZm9yIChpbnQgaiA9IGNoaWxkbnMuc2l6ZSgpIC0gMTsgaiA+PSAwOyBqLS0pCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgbnMgPSAoU3RyaW5nKWNoaWxkbnMuZ2V0KGopOwotICAgICAgICAgIGlmICghbmFtZXNwYWNlLmNvbnRhaW5zKG5zKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBuYW1lc3BhY2UuYWRkKG5zKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgLy8gaWYgdGhpcyBpcyBhbiBpbXBvcnQgZWxlbWVudCBnZXQgdGhlIG5hbWVzcGFjZSBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0Ci0gICAgaWYgKGVsZW0uZ2V0TG9jYWxOYW1lKCkuZXF1YWxzSWdub3JlQ2FzZShJTVBPUlQpKQotICAgIHsKLSAgICAgIE5hbWVkTm9kZU1hcCBhdHRzID0gZWxlbS5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dHMuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgTm9kZSBuID0gYXR0cy5pdGVtKGkpOwotCi0gICAgICAgIFN0cmluZyBub2RlTmFtZSA9IG4uZ2V0Tm9kZU5hbWUoKTsKLSAgICAgICAgaWYgKG5vZGVOYW1lLmVxdWFsc0lnbm9yZUNhc2UoTkFNRVNQQUNFKSkKLSAgICAgICAgewotICAgICAgICAgIFN0cmluZyBub2RlVmFsdWUgPSBuLmdldE5vZGVWYWx1ZSgpOwotICAgICAgICAgIGlmICghbmFtZXNwYWNlLmNvbnRhaW5zKG5vZGVWYWx1ZS5pbnRlcm4oKSkpCi0gICAgICAgICAgewotCi0gICAgICAgICAgICBuYW1lc3BhY2UuYWRkKG5vZGVWYWx1ZS5pbnRlcm4oKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG5hbWVzcGFjZTsKLQotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybiBhIEhhc2h0YWJsZSB3aXRoIG5hbWVzcGFjZSBwcmVmaXhlcyBhcyBrZXlzIGZyb20gdGhlIGdpdmVuIGVsZW1lbnQuCi0gICAqIAotICAgKiBAcGFyYW0gZWxlbSBUaGUgcm9vdCBlbGVtZW50IG9mIHRoZSBzY2hlbWEuCi0gICAqIEByZXR1cm4gQSBoYXNodGFibGUgd2l0aCBuYW1lc3BhY2UgcHJlZml4ZXMgbWFwcGVkIHRvIG5hbWVzcGFjZXMuCi0gICAqLwotICBwcm90ZWN0ZWQgSGFzaHRhYmxlIGdldE5TUmVzb2x2ZXIoRWxlbWVudCBlbGVtKQotICB7Ci0gICAgSGFzaHRhYmxlIG5zUmVzb2x2ZXIgPSBuZXcgSGFzaHRhYmxlKCk7Ci0KLSAgICBOYW1lZE5vZGVNYXAgYXR0cyA9IGVsZW0uZ2V0QXR0cmlidXRlcygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0cy5nZXRMZW5ndGgoKTsgaSsrKQotICAgIHsKLSAgICAgIE5vZGUgbiA9IGF0dHMuaXRlbShpKTsKLQotICAgICAgU3RyaW5nIG5vZGVOYW1lID0gbi5nZXROb2RlTmFtZSgpOwotICAgICAgaWYgKG5vZGVOYW1lLmluZGV4T2YoWE1MTlMpICE9IC0xKQotICAgICAgewotICAgICAgICBTdHJpbmcgbm9kZVZhbHVlID0gbi5nZXROb2RlVmFsdWUoKTsKLSAgICAgICAgU3RyaW5nIG5hbWVQcmVmaXggPSBub2RlTmFtZTsKLQotICAgICAgICBpZiAobmFtZVByZWZpeC5lcXVhbHNJZ25vcmVDYXNlKFhNTE5TKSkKLSAgICAgICAgewotICAgICAgICAgIG5hbWVQcmVmaXggPSAiIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBuYW1lUHJlZml4ID0gbmFtZVByZWZpeC5zdWJzdHJpbmcoNik7Ci0gICAgICAgIH0KLSAgICAgICAgbnNSZXNvbHZlci5wdXQobmFtZVByZWZpeCwgbm9kZVZhbHVlKTsKLQotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnNSZXNvbHZlcjsKLQotICB9Ci0KLSAgLyoqCi0gICAqIFJlc29sdmUgdGhlIG5hbWVzcGFjZXMgaW4gdGhlIGdpdmVuIG5hbWVzcGFjZXMgbGlzdCB3aXRoIHRoZSB0d28gbmFtZXNwYWNlCi0gICAqIHJlc29sdmVyIGhhc2h0YWJsZXMgcHJvdmlkZWQuIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBuYW1lc3BhY2UgdGhhdCBuZWVkCi0gICAqIHRvIGJlIGRlY2xhcmVkLgotICAgKiBGaXJzdCByZXNvbHZlIGFnYWluc3QgdGhlIGxvY2FsIG5hbWVzcGFjZXMgd2l0aCBuc1Jlc29sdmVyLgotICAgKiBOZXh0IHJlc29sdmUgYWdhaW5zdCB0aGUgcGFyZW50IG5hbWVzcGFjZSB3aXRoIHBhcmVudE5TUmVzb2x2ZXIuCi0gICAqIEEgc2lkZSBhZmZlY3Qgb2YgdGhpcyBtZXRob2QgaXMgdGhlIG5hbWVzcGFjZXMgbGlzdCBpcyBsZWZ0IHdpdGggb25seSB0aG9zZSAKLSAgICogbmFtZXNwYWNlcyB0aGF0IGFyZSByZXNvbHZlZCBhbmQgdGhlIHJlc29sdmVkIGVudGl0aWVzIGFyZSBwbGFjZWQgaW4gdGhlIAotICAgKiBsaXN0IGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGVudHJpZXMuCi0gICAqIEZvciBleC4gSWYgeW91IHByb3ZpZGUgYSBsaXN0IHN1Y2ggYXMge3hzZCwgaW50Zn0gYW5kIG9ubHkgeHNkIGNhbiBiZSByZXNvbHZlZAotICAgKiB5b3Ugd2lsbCBlbmQgdXAgd2l0aCB0aGUgbGlzdCB7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9Ci0gICAqIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlcyBUaGUgbGlzdCBvZiBuYW1lc3BhY2VzIHRvIHJlc29sdmUuCi0gICAqIEBwYXJhbSBuc1Jlc29sdmVyIFRoZSBoYXNodGFibGUgdG8gYmUgdXNlZCBhcyB0aGUgbG9jYWwgcmVzb2x2ZXIuCi0gICAqIEBwYXJhbSBwYXJlbnROU1Jlc29sdmVyIFRoZSBoYXNodGFibGUgdG8gYmUgdXNlZCBhcyB0aGUgcGFyZW50IG5hbWVzcGFjZSByZXNvbHZlci4KLSAgICogQHJldHVybiBBIEhhc2h0YWJsZSBvZiBuYW1lc3BhY2VzIHRoYXQgbXVzdCBiZSBkZWNsYXJlZC4KLSAgICovCi0gIHByb3RlY3RlZCBIYXNodGFibGUgcmVzb2x2ZU5hbWVzcGFjZXMoTGlzdCBuYW1lc3BhY2VzLCBIYXNodGFibGUgbnNSZXNvbHZlciwgSGFzaHRhYmxlIHBhcmVudE5TUmVzb2x2ZXIpCi0gIHsKLSAgCUhhc2h0YWJsZSByZXFOU0RlY2wgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgaWYgKG5hbWVzcGFjZXMgIT0gbnVsbCAmJiAhbmFtZXNwYWNlcy5pc0VtcHR5KCkgJiYgbnNSZXNvbHZlciAhPSBudWxsKQotICAgIHsKLSAgICAgIGZvciAoaW50IGkgPSBuYW1lc3BhY2VzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKQotICAgICAgewotICAgICAgICBTdHJpbmcgbnMgPSAoU3RyaW5nKW5hbWVzcGFjZXMuZ2V0KGkpOwotICAgICAgICAvLyBSZW1vdmUgdGhlIG5hbWVzcGFjZSBmcm9tIHRoZSBsaXN0LgotICAgICAgICBuYW1lc3BhY2VzLnJlbW92ZShpKTsKLSAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIHJlc29sdmUgYWdhaW5zdCB0aGUgbG9jYWwgbmFtZXNwYWNlIHJlc29sdmVyLgotICAgICAgICBpZiAobnNSZXNvbHZlci5jb250YWluc0tleShucykpCi0gICAgICAgIHsKLSAgICAgICAgICBPYmplY3QgcmVzb2x2ZWROUyA9IG5zUmVzb2x2ZXIuZ2V0KG5zKTsKLSAgICAgICAgICAvLyBPbmx5IGFkZCB0aGUgbmFtZXNwYWNlIGlmIGl0J3Mgbm90IGFscmVhZHkgaW4gdGhlIGxpc3QuCi0gICAgICAgICAgaWYoIW5hbWVzcGFjZXMuY29udGFpbnMocmVzb2x2ZWROUykpCi0gICAgICAgICAgewotICAgICAgICAgICAgbmFtZXNwYWNlcy5hZGQoaSwgbnNSZXNvbHZlci5nZXQobnMpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gTmV4dCB0cnkgdG8gcmVzb2x2ZSBhZ2FpbnN0IHRoZSBwYXJlbnQgbmFtZXNwYWNlIHJlc29sdmVyLgotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgCWlmIChucy5lcXVhbHMoIiIpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBucyA9IFhNTE5TOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBucyA9IFhNTE5TICsgIjoiICsgbnM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocGFyZW50TlNSZXNvbHZlci5jb250YWluc0tleShucykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIE9iamVjdCByZXNvbHZlZE5TID0gcGFyZW50TlNSZXNvbHZlci5nZXQobnMpOwotICAgICAgICAgICAgICAvLyBPbmx5IGFkZCB0aGUgbmFtZXNwYWNlIGlmIGl0J3Mgbm90IGFscmVhZHkgaW4gdGhlIGxpc3QuCi0gICAgICAgICAgICAgIGlmKCFuYW1lc3BhY2VzLmNvbnRhaW5zKHJlc29sdmVkTlMpKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbmFtZXNwYWNlcy5hZGQoaSwgcmVzb2x2ZWROUyk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgLy8gU3RpbGwgbmVlZCB0byBkZWNsYXJlIHRoZSBuYW1lc3BhY2UgdGhvdWdoLgotICAgICAgICAgICAgICByZXFOU0RlY2wucHV0KG5zLCByZXNvbHZlZE5TKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXFOU0RlY2w7Ci0gIH0KLQotICAvKioKLSAgICogUmVtb3ZlIGFueSBuYW1lc3BhY2UgZnJvbSB0aGUgbmFtZXNwYWNlcyBsaXN0IGlmIGl0IGlzIGluIHRoZSBpbXBvcnQgbGlzdC4KLSAgICogCi0gICAqIEBwYXJhbSBuYW1lc3BhY2VzIFRoZSBuYW1lc3BhY2VzIGxpc3QuCi0gICAqIEBwYXJhbSBpbXBvcnRlZE5hbWVzcGFjZXMgQSBsaXN0IG9mIGltcG9ydGVkIG5hbWVzcGFjZXMuCi0gICAqIEByZXR1cm4gVGhlIGxpc3Qgb2YgbmFtZXNwYWNlcyB3aXRob3V0IHRoZSBpbXBvcnRlZCBuYW1lc3BhY2VzLgotICAgKi8KLSAgcHJvdGVjdGVkIExpc3QgcmVtb3ZlSW1wb3J0cyhMaXN0IG5hbWVzcGFjZXMsIExpc3QgaW1wb3J0ZWROYW1lc3BhY2VzKQotICB7Ci0gICAgaWYgKG5hbWVzcGFjZXMgIT0gbnVsbCAmJiBpbXBvcnRlZE5hbWVzcGFjZXMgIT0gbnVsbCAmJiAhaW1wb3J0ZWROYW1lc3BhY2VzLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpSW1wb3J0ZWROUyA9IGltcG9ydGVkTmFtZXNwYWNlcy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUgKGlJbXBvcnRlZE5TLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIGlOUyA9IChTdHJpbmcpaUltcG9ydGVkTlMubmV4dCgpOwotCi0gICAgICAgIG5hbWVzcGFjZXMucmVtb3ZlKGlOUyk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBuYW1lc3BhY2VzOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlbW92ZSB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NoZW1hIGFuZCB0aGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gdGhlIGlnbm9yZU5hbWVzcGFjZXMKLSAgICogbGlzdCBmcm9tIHRoZSBuYW1lc3BhY2VzIGxpc3QgcHJvdmlkZWQuCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZXNwYWNlcyBUaGUgbGlzdCBvZiBsb2NhbCBuYW1lc3BhY2VzLgotICAgKiBAcGFyYW0gZWxlbSBUaGUgcm9vdCBlbGVtZW50IG9mIHRoZSBzY2hlbWEuCi0gICAqIEByZXR1cm4gVGhlIGxpc3Qgb2YgbmFtZXNwYWNlcyB3aXRoIHRoZSBsb2NhbCBuYW1lc3BhY2VzIHJlbW92ZWQuCi0gICAqLwotICBwcm90ZWN0ZWQgTGlzdCByZW1vdmVMb2NhbE5hbWVzcGFjZXMoTGlzdCBuYW1lc3BhY2VzLCBFbGVtZW50IGVsZW0pCi0gIHsKLSAgICBpZiAobmFtZXNwYWNlcyAhPSBudWxsICYmIGVsZW0gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgbnMgPSBlbGVtLmdldEF0dHJpYnV0ZShUQVJHRVROQU1FU1BBQ0UpOwotICAgICAgbmFtZXNwYWNlcy5yZW1vdmUobnMpOwotCi0gICAgICBmb3IgKGludCBpID0gaWdub3JlTmFtZXNwYWNlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkKLSAgICAgIHsKLSAgICAgICAgLy8ga2VlcCByZW1vdmluZyB0aGUgbmFtZXNwYWNlIHVudGlsIGl0IGlzIG5vdCBpbiB0aGUgbGlzdAotICAgICAgICBpZiAobmFtZXNwYWNlcy5yZW1vdmUoaWdub3JlTmFtZXNwYWNlc1tpXSkpCi0gICAgICAgIHsKLSAgICAgICAgICBpKys7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5hbWVzcGFjZXM7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIFNPQVAgZW5jb2RpbmcgbmFtZXNwYWNlIGlzIGluIHRoZSBsaXN0IG9mIHJlcXVpcmVkIG5hbWVzcGFjZXMsCi0gICAqIGZhbHNlIG90aGVyd2lzZS4KLSAgICogCi0gICAqIEBwYXJhbSByZXFucyBUaGUgbGlzdCBvZiBuYW1lc3BhY2VzIHRvIGNoZWNrIGZvciB0aGUgU09BUCBlbmNvZGluZyBuYW1lc3BhY2UuCi0gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgU09BUCBlbmNvZGluZyBuYW1lc3BhY2VzIGlzIGluIHRoZSBsaXN0LCBmYWxzZSBvdGhlcndpc2UuCi0gICAqLwotICBwcm90ZWN0ZWQgYm9vbGVhbiBjaGVja1NPQVBFbmNvZGluZ1JlcXVpcmVkKExpc3QgcmVxbnMpCi0gIHsKLSAgICBpZiAocmVxbnMuY29udGFpbnMoU09BUF9FTkNPRElOR19VUkkpKQotICAgIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL0lubGluZVNjaGVtYVZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC94c2QvSW5saW5lU2NoZW1hVmFsaWRhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3OTFhMTcuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC94c2QvSW5saW5lU2NoZW1hVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnhzZDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zY2hlbWEuU2NoZW1hOwotCi1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXA7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKLQotaW1wb3J0IGNvbS5pYm0ud3NkbC5Db25zdGFudHM7Ci1pbXBvcnQgY29tLmlibS53c2RsLmV4dGVuc2lvbnMuc2NoZW1hLlNjaGVtYUNvbnN0YW50czsKLQotLyoqCi0gKiBQbHVnaW4gdmFsaWRhdG9yIGZvciB0aGUgV1NETCBWYWxpZGF0aW9uIGZyYW1ld29yay4gVmFsaWRhdGVzIGlubGluZSBzY2hlbWEgZm91bmQgaW4gYSBXU0RMIGRvY3VtZW50LgotICogCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCAobG1hbmRlbEBjYS5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgSW5saW5lU2NoZW1hVmFsaWRhdG9yCi17Ci0gIExpc3QgZWxlbWVudHMgPSBudWxsOwotCi0KLSAgcHVibGljIE1hcCB2YWxpZGF0ZShPYmplY3QgZWxlbWVudCwgTGlzdCBwYXJlbnRzLCBTdHJpbmcgZmlsZW5hbWUpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAJZWxlbWVudHMgPSBuZXcgVmVjdG9yKCk7Ci0gIAlTY2hlbWEgZWxlbSA9IChTY2hlbWEpIGVsZW1lbnQ7Ci0gICAgRGVmaW5pdGlvbiB3c2RsRGVmaW5pdGlvbiA9IChEZWZpbml0aW9uKSBwYXJlbnRzLmdldChwYXJlbnRzLnNpemUoKSAtIDEpOwotICAgIC8vIEFkZCBpbiB0aGUgbmFtZXNwYWNlcyBkZWZpbmVkIGluIHRoZSBkb2MgYWxyZWFkeSB0aGF0IGFyZW4ndCBkZWZpbmVkIGxvY2FsbHkgaW4gdGhpcyBzY2hlbWEuCi0gICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayBmb3IgbmFtZXNwYWNlcyBvdGhlciB0aGVuIGluIHRoZSBkZWZpbnRpb25zIGFuZCB0eXBlcyBlbGVtZW50cyBhcwotICAgIC8vIGlubGluZSBzY2hlbWEgY2FuIG5vdCBoYXZlIGFueSBvdGhlciBwYXJlbnRzIGFuZCBtdXN0IGhhdmUgdGhlcmUgdHdvIHBhcmVudHMuCi0gICAgLy8gRmlyc3QgdGFrZSBjYXJlIG9mIHRoZSBkZWZpbml0aW9ucyBlbGVtZW50Ci0KLSAgICAvLyBjcmVhdGUgdGhlIGlubGluZSBzY2hlbWEgc3RyaW5nCi0JRWxlbWVudCB3M2NlbGVtZW50ID0gZWxlbS5nZXRFbGVtZW50KCk7Ci0JSGFzaHRhYmxlIHBhcmVudG5hbWVzcGFjZXMgPSBnZXROYW1lc3BhY2VEZWNsYXJhdGlvbnNGcm9tUGFyZW50cyh3c2RsRGVmaW5pdGlvbix3M2NlbGVtZW50KTsKLQlTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gdzNjZWxlbWVudC5nZXRBdHRyaWJ1dGUoQ29uc3RhbnRzLkFUVFJfVEFSR0VUX05BTUVTUEFDRSk7Ci0JLy8gaWYgdGhlIHRhcmdldE5hbWVzcGFjZSBoYXNuJ3QgYmVlbiBkZWZpbmVkIGZvciB0aGUgc2NoZW1hIHVzZSB0aGUgCi0JLy8gdGFyZ2V0TmFtZXNwYWNlIG9mIHRoZSBkZWZpbml0aW9ucyBlbGVtZW50Ci0JLyppZih0YXJnZXROYW1lc3BhY2UgPT0gbnVsbCB8fCB0YXJnZXROYW1lc3BhY2UuZXF1YWxzKCIiKSkKLQkgewotCSAgdGFyZ2V0TmFtZXNwYWNlID0gd3NkbERlZmluaXRpb24uZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0JICB3M2NlbGVtZW50LnNldEF0dHJpYnV0ZShDb25zdGFudHMuQVRUUl9UQVJHRVRfTkFNRVNQQUNFLHRhcmdldE5hbWVzcGFjZSk7Ci0JfSovCi0KLQlTdHJpbmcgeHNkID0gSW5saW5lU2NoZW1hR2VuZXJhdG9yLmNyZWF0ZVhTRFN0cmluZyh3M2NlbGVtZW50LCBlbGVtZW50cywgZmlsZW5hbWUsIHBhcmVudG5hbWVzcGFjZXMpOwotCi0gICAgLy8gSWYgdGhlIG5hbWVzcGFjZSBnaXZlbiBpcyBvbmUgb2YgdGhlIG9sZCBzY2hlbWEgbmFtZXNwYWNlcyBwcm9kdWNlIGEgd2FybmluZy4KLSAgICBTdHJpbmcgbmFtZXNwYWNlID0gdzNjZWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICBpZihuYW1lc3BhY2UuZXF1YWxzKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzE5OTkpIHx8IG5hbWVzcGFjZS5lcXVhbHMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMCkpCi0gICAgewotICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiQW4gb2xkIHZlcnNpb24gb2YgdGhlIHNjaGVtYSBuYW1lc3BhY2UgaXMgc3BlY2lmaWVkLiIpOwotICAgIH0KLQotICAgIC8vIG5vdyBjcmVhdGUgYW5kIGNhbGwgdGhlIHZhbGlkYXRvciBmb3IgdGhlIGlubGluZSBzY2hlbWEKLSAgICBYU0RWYWxpZGF0b3Igc2NoZW1hdiA9IG5ldyBYU0RWYWxpZGF0b3IoKTsKLQotICAgIC8vU3RyaW5nIGZpbGVMb2NhdGlvbiA9IG5ldyBVUkwodmFsaWRhdG9ybWFuYWdlci5nZXRGaWxlbmFtZSgpKS5nZXRQYXRoKCk7Ci0gICAgSW5saW5lWFNEUmVzb2x2ZXIgaW5saW5lRW50aXR5UmVzb2x2ZXIgPQotICAgICAgZ2V0RW50aXR5UmVzb2x2ZXIod3NkbERlZmluaXRpb24sIChUeXBlcykgcGFyZW50cy5nZXQoMCksIGZpbGVuYW1lLCB0YXJnZXROYW1lc3BhY2UpOwotICAgIC8vCWFkZCBpbiB0aGUgZXh0ZXJuYWwgWFNEIENhdGFsb2cgdG8gcmVzb2x2ZSBzY2hlbWFzIG9mZmxpbmUKLSAgICBYTUxFbnRpdHlSZXNvbHZlckNoYWluIGVudGl0eVJlc29sdmVyQ2hhaW4gPSBuZXcgWE1MRW50aXR5UmVzb2x2ZXJDaGFpbigpOwotICAgIGVudGl0eVJlc29sdmVyQ2hhaW4uYWRkRW50aXR5UmVzb2x2ZXIoaW5saW5lRW50aXR5UmVzb2x2ZXIpOwotICAgIGVudGl0eVJlc29sdmVyQ2hhaW4uYWRkRW50aXR5UmVzb2x2ZXIobmV3IEZpbGVFbnRpdHlSZXNvbHZlcigpKTsKLSAgICBlbnRpdHlSZXNvbHZlckNoYWluLmFkZEVudGl0eVJlc29sdmVyKFhNTENhdGFsb2dSZXNvbHZlci5nZXRJbnN0YW5jZSgpKTsKLSAgICBzY2hlbWF2LnZhbGlkYXRlSW5saW5lU2NoZW1hKHhzZCwgdGFyZ2V0TmFtZXNwYWNlLCBmaWxlbmFtZSwgZW50aXR5UmVzb2x2ZXJDaGFpbiwgaW5saW5lRW50aXR5UmVzb2x2ZXIpOwotCi0gICAgLy8gY2hlY2sgaWYgdGhlIFNPQVAgRW5jb2RpbmcgbmFtZXNwYWNlIGlzIHJlcXVpcmVkIGJ1dCBub3QgaW1wb3J0ZWQKLSAgICBpZiAoSW5saW5lU2NoZW1hR2VuZXJhdG9yLnNvYXBFbmNvZGluZ1JlcXVpcmVkTm90SW1wb3J0ZWQoZWxlbS5nZXRFbGVtZW50KCksIGZpbGVuYW1lLHBhcmVudG5hbWVzcGFjZXMpKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIlRoZSBpbmxpbmUgc2NoZW1hIHVzZXMgYW4gZWxlbWVudCBvciB0eXBlIGZyb20gIgotICAgICAgICArICJ0aGUgU09BUCBlbmNvZGluZyBuYW1lc3BhY2UgYnV0IHRoZSBuYW1lc3BhY2UgaGFzIG5vdCBiZWVuIGltcG9ydGVkLiAiCi0gICAgICAgICsgIlRoZSBTT0FQIGVuY29kaW5nIG5hbWVzcGFjZSBzaG91bGQgYmUgaW1wb3J0ZWQgd2l0aCBhbiBpbXBvcnQgIgotICAgICAgICArICJzdGF0ZW1lbnQgYmVmb3JlIGl0IGlzIHVzZWQuIik7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHNjaGVtYSBpc24ndCB2YWxpZAotICAgIGlmICghc2NoZW1hdi5pc1ZhbGlkKCkpCi0gICAgewotICAgICAgLy8gR2F0aGVyaW5nIGFsbCB0aGUgZXJyb3JzCi0gICAgICBTdHJpbmdCdWZmZXIgZXhjZXB0aW9uID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICAgSXRlcmF0b3IgaSA9IHNjaGVtYXYuZ2V0RXJyb3JzKCkuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpLmhhc05leHQoKSkKLSAgICAgIHsKLSAgICAgICAgZXhjZXB0aW9uLmFwcGVuZChpLm5leHQoKSkuYXBwZW5kKCdcbicpOwotICAgICAgfQotICAgICAgLy8gdGhyb3cgYW4gZXhjZXB0aW9uCi0gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKGV4Y2VwdGlvbi50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgLy8gaWYgdGhlIHNjaGVtYSBpcyB2YWxpZAotICAgIGVsc2UKLSAgICB7Ci0gICAgICBNYXAgbWFwID0gbmV3IEhhc2hNYXAoMSk7Ci0gICAgICBtYXAucHV0KHRhcmdldE5hbWVzcGFjZSwgc2NoZW1hdi5nZXRYU01vZGVsKCkpOwotICAgICAgcmV0dXJuIG1hcDsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogR2V0IGFuIGVudGl0eSByZXNvbHZlciB0aGF0IHdpbGwgcmVzb2x2ZSBpbmxpbmUgc2NoZW1hcy4gIEV2ZXJ5IGlubGluZSBzY2hlbWEgaXMgcHJlcmVnaXN0ZXJlZCB3aXRoCi0gICAqIHRoZSByZXNvbHZlci4KLSAgICogCi0gICAqIEBwYXJhbSB3c2RsRGVmaW5pdGlvbiBUaGUgV1NETCBkZWZpbml0aW9ucyBlbGVtZW50LgotICAgKiBAcGFyYW0gdHlwZXMgVGhlIHR5cGVzIGVsZW1lbnQuCi0gICAqIEBwYXJhbSByZWZlcmVuY2VMb2NhdGlvbiBUaGUgbG9jYXRpb24gb2YgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGlzIHNjaGVtYS4KLSAgICogQHBhcmFtIHRhcmdldE5hbWVzcGFjZSBUaGUgdGFyZ2V0TmFtZXNwYWNlIG9mIHRoZSBzY2hlbWEuCi0gICAqIEByZXR1cm4gQW4gZW50aXR5IHJlc29sdmVyIHRoYXQgY2FuIHJlc29sdmUgaW5saW5lIHNjaGVtYXMuCi0gICAqLwotICBwcm90ZWN0ZWQgSW5saW5lWFNEUmVzb2x2ZXIgZ2V0RW50aXR5UmVzb2x2ZXIoRGVmaW5pdGlvbiB3c2RsRGVmaW5pdGlvbiwgVHlwZXMgdHlwZXMsIFN0cmluZyByZWZlcmVuY2VMb2NhdGlvbiwgU3RyaW5nIHRhcmdldE5hbWVzcGFjZSkKLSAgewotICAgIElubGluZVhTRFJlc29sdmVyIGVudGl0eVJlc29sdmVyID0gbmV3IElubGluZVhTRFJlc29sdmVyKCk7Ci0vLyAgICBlbnRpdHlSZXNvbHZlci5zZXRSZWZlcmVuY2VMb2NhdGlvbihyZWZlcmVuY2VMb2NhdGlvbik7Ci0gICAgTGlzdCBzY2hlbWFzID0gdHlwZXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgaWYgKHNjaGVtYXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBJdGVyYXRvciBpU2NoZW1hcyA9IHNjaGVtYXMuaXRlcmF0b3IoKTsKLSAgICAgIHdoaWxlIChpU2NoZW1hcy5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgCVNjaGVtYSBleHRFbGVtID0gKFNjaGVtYSkgaVNjaGVtYXMubmV4dCgpOwotICAgICAgICBTdHJpbmcgdGhpc05hbWVzcGFjZSA9IGV4dEVsZW0uZ2V0RWxlbWVudCgpLmdldEF0dHJpYnV0ZShDb25zdGFudHMuQVRUUl9UQVJHRVRfTkFNRVNQQUNFKTsKLSAgICAgICAgaWYgKHRoaXNOYW1lc3BhY2UgIT0gbnVsbCAmJiAhdGhpc05hbWVzcGFjZS5lcXVhbHNJZ25vcmVDYXNlKHRhcmdldE5hbWVzcGFjZSkpCi0gICAgICAgIHsKLQotICAgICAgICAJRWxlbWVudCBlbGVtZW50ID0gZXh0RWxlbS5nZXRFbGVtZW50KCk7Ci0JCQkKLS8vCQkJY3JlYXRlIHRoZSBpbmxpbmUgc2NoZW1hIHN0cmluZwotCQkJIC8vRWxlbWVudCB3M2NlbGVtZW50ID0gZWxlbS5nZXRFbGVtZW50KCk7Ci0JCQkgSGFzaHRhYmxlIHBhcmVudG5hbWVzcGFjZXMgPSBnZXROYW1lc3BhY2VEZWNsYXJhdGlvbnNGcm9tUGFyZW50cyh3c2RsRGVmaW5pdGlvbixlbGVtZW50KTsKLQkJCSBTdHJpbmcgeHNkID0gSW5saW5lU2NoZW1hR2VuZXJhdG9yLmNyZWF0ZVhTRFN0cmluZyhlbGVtZW50LCBlbGVtZW50cywgcmVmZXJlbmNlTG9jYXRpb24sIHBhcmVudG5hbWVzcGFjZXMpOwotICAgICAgICAJLy9hZGROYW1lc3BhY2VEZWNsYXJhdGlvbnNGcm9tUGFyZW50cyh3c2RsRGVmaW5pdGlvbixlbGVtZW50KTsKLSAgICAgICAgICBlbnRpdHlSZXNvbHZlci5hZGQodGhpc05hbWVzcGFjZSwgeHNkKTsKLSAgICAgICAgfQotCi0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlbnRpdHlSZXNvbHZlcjsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyBhcyBpbiB0aGUgZm9ybSAKLSAgICogeG1sbnM9InNvbWVuYW1lc3BhY2UiCi0gICAqIGZyb20gdGhlIGRlZmluaXRpb25zIGFuZCB0eXBlcyBlbGVtZW50cyBhbmQgYWRkIHRoZW0gdG8gdGhlIHNjaGVtYSBlbGVtZW50IHNvIHRoZSBzY2hlbWEgCi0gICAqIHZhbGlkYXRvciB3aWxsIGhhdmUgYWNjZXNzIHRvIHRoZW0uCi0gICAqIAotICAgKiBAcGFyYW0gd3NkbERlZmluaXRpb24gVGhlIFdTREwgZGVmaW5pdGlvbnMgZWxlbWVudC4KLSAgICogQHBhcmFtIGVsZW1lbnQgVGhlIHR5cGVzIGVsZW1lbnQuCi0gICAqIEByZXR1cm4gQSBoYXNodGFibGUgd2l0aCB0aGUgbmFtZXNwYWNlIGVsZW1lbnRzIGZyb20gdGhlIGVsZW1lbnRzIHByb3ZpZGVkLgotICAgKi8KLSAgcHJvdGVjdGVkIEhhc2h0YWJsZSBnZXROYW1lc3BhY2VEZWNsYXJhdGlvbnNGcm9tUGFyZW50cyhEZWZpbml0aW9uIHdzZGxEZWZpbml0aW9uLCBFbGVtZW50IGVsZW1lbnQpCi0gIHsKLSAgCUhhc2h0YWJsZSBuc3MgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgSXRlcmF0b3IgbmFtZVNwYWNlcyA9IHdzZGxEZWZpbml0aW9uLmdldE5hbWVzcGFjZXMoKS5rZXlTZXQoKS5pdGVyYXRvcigpOwotCi0gICAgU3RyaW5nIFhNTE5TID0gQ29uc3RhbnRzLkFUVFJfWE1MTlM7Ci0gICAgCi0gICAgd2hpbGUgKG5hbWVTcGFjZXMuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIFN0cmluZyBuc3ByZWZpeCA9IFhNTE5TOwotICAgICAgU3RyaW5nIG5zID0gKFN0cmluZykgbmFtZVNwYWNlcy5uZXh0KCk7Ci0gICAgICBpZiAoIW5zLmVxdWFsc0lnbm9yZUNhc2UoIiIpKQotICAgICAgewotICAgICAgICBuc3ByZWZpeCArPSAiOiI7Ci0gICAgICB9Ci0gICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKG5zcHJlZml4ICsgbnMpKQotICAgICAgewotICAgICAgCW5zcy5wdXQobnNwcmVmaXggKyBucywgd3NkbERlZmluaXRpb24uZ2V0TmFtZXNwYWNlKG5zKSk7Ci0vLyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobnNwcmVmaXggKyBucywgd3NkbERlZmluaXRpb24uZ2V0TmFtZXNwYWNlKG5zKSk7Ci0gICAgICB9Ci0KLSAgICB9Ci0gICAgLy8gTmV4dCBoYW5kbGUgdGhlIHBhcmVudCB0eXBlcyBlbGVtZW50Ci0gICAgTmFtZWROb2RlTWFwIGF0dHMgPSBlbGVtZW50LmdldFBhcmVudE5vZGUoKS5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgaW50IGF0dHNsZW5ndGggPSBhdHRzLmdldExlbmd0aCgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0c2xlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIE5vZGUgdGVtcG5vZGUgPSBhdHRzLml0ZW0oaSk7Ci0gICAgICBTdHJpbmcgbm9kZW5hbWUgPSB0ZW1wbm9kZS5nZXROb2RlTmFtZSgpOwotICAgICAgLy8gaWYgdGhpcyBpcyBhIG5hbWVzcGFjZSBhdHRyaWJ1dGUKLSAgICAgIGlmIChub2RlbmFtZS5pbmRleE9mKFhNTE5TKSAhPSAtMSkKLSAgICAgIHsKLQkJbnNzLnB1dChub2RlbmFtZSwgIHRlbXBub2RlLmdldE5vZGVWYWx1ZSgpKTsKLSAgICAgICAgLy9lbGVtZW50LnNldEF0dHJpYnV0ZShub2RlbmFtZSwgdGVtcG5vZGUuZ2V0Tm9kZVZhbHVlKCkpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnNzOwotICB9Ci0gIAotICAvKioKLSAgICogR2l2ZW4gYSBsaW5lIG51bWJlciBmb3IgdGhlIHNjaGVtYSByZXR1cm5zIHRoZSBlbGVtZW50IGZvdW5kIG9uIHRoYXQgbGluZS4gCi0gICAqIFVzZWZ1bCBmb3Igb2J0YWluaW5nIGVsZW1lbnRzIGZyb20gc2NoZW1hIFN0cmluZ3MuCi0gICAqIAotICAgKiBAcGFyYW0gbGluZSBUaGUgbGluZSBudW1iZXIgZm9yIHRoZSBzY2hlbWEuCi0gICAqIEByZXR1cm4gVGhlIG9iamVjdCBsb2NhdGVkIGF0IHRoZSBsaW5lIG9yIGF0IGxpbmUgMCBpZiB0aGUgbGluZSBpcyBpbnZhbGlkLgotICAgKi8KLSAgIHB1YmxpYyBPYmplY3QgZ2V0T2JqZWN0QXRMaW5lKGludCBsaW5lKQotICAgewotICAgCWlmKGxpbmUgPCAwIHx8IGxpbmUgPj0gZWxlbWVudHMuc2l6ZSgpKQotICAgCXsKLSAgIAkgIGxpbmUgPSAwOwotICAgCX0KLQlyZXR1cm4gZWxlbWVudHMuZ2V0KGxpbmUpOwotICAgfQotICAgCi0gIC8qKgotICAgKiBSZXBsYWNlIGFueSBpbnN0YW5jZSBvZiB0aGUgMjAwMSBzY2hlbWEgbmFtZXNwYWNlIGluIHRoZSBnaXZlbiBtZXNzYWdlIHdpdGgKLSAgICogdGhlIGdpdmVuIG5hbWVzcGFjZS4KLSAgICogCi0gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIHJlcGxhY2UgdGhlIG5hbWVzcGFjZSBpbi4KLSAgICogQHBhcmFtIG5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIHVzZWQgZm9yIHJlcGxhY2VtZW50LgotICAgKiBAcmV0dXJuIFRoZSBtZXNzYWdlIHdpdGggdGhlIDIwMDEgc2NoZW1hIG5hbWVzcGFjZSByZXBsYWNlZCBieSB0aGUgZ2l2ZW4gbmFtZXNwYWNlLgotICAgKi8KLSAvLyBwcml2YXRlIFN0cmluZyByZXBsYWNlTmFtZXNwYWNlKFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgbmFtZXNwYWNlKQotIC8vICB7Ci0gLy8gICAgU3RyaW5nIHhzZDIwMDEgPSBDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxOwotIC8vICAgIGludCBzdGFydCA9IG1lc3NhZ2UuaW5kZXhPZih4c2QyMDAxKTsKLSAvLyAgICBpbnQgZW5kID0gc3RhcnQgKyB4c2QyMDAxLmxlbmd0aCgpOwotIC8vICAgIGlmKHN0YXJ0IDwgMCkKLSAvLyAgICB7Ci0gLy8gICAgICByZXR1cm4gbWVzc2FnZTsKLSAvLyAgICB9Ci0gLy8gICAgU3RyaW5nIHN0YXJ0U3RyaW5nID0gbWVzc2FnZS5zdWJzdHJpbmcoMCxzdGFydCk7Ci0gLy8gICAgU3RyaW5nIGVuZFN0cmluZyA9IG1lc3NhZ2Uuc3Vic3RyaW5nKGVuZCxtZXNzYWdlLmxlbmd0aCgpKTsKLSAvLyAgICByZXR1cm4gc3RhcnRTdHJpbmcgKyBuYW1lc3BhY2UgKyBlbmRTdHJpbmc7Ci0gLy8gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL0lubGluZVhTRFJlc29sdmVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9JbmxpbmVYU0RSZXNvbHZlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWQ1YTc5Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL0lubGluZVhTRFJlc29sdmVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwueHNkOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlhNTFJlc291cmNlSWRlbnRpZmllcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE5JRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MRW50aXR5UmVzb2x2ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxJbnB1dFNvdXJjZTsKLQotLyoqCi0gKiBBbiBYTUxFbnRpdHlSZXNvbHZlciB0aGF0IGFsbG93cyBpbmxpbmUgc2NoZW1hcyB0byByZXNvbHZlIGVhY2ggb3RoZXIgdGhyb3VnaCBpbXBvcnRzLgotICogCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCAobG1hbmRlbEBjYS5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgSW5saW5lWFNEUmVzb2x2ZXIgaW1wbGVtZW50cyBYTUxFbnRpdHlSZXNvbHZlcgotewotICBwcm90ZWN0ZWQgSGFzaHRhYmxlIGVudGl0aWVzID0gbmV3IEhhc2h0YWJsZSgpOwotICBwcm90ZWN0ZWQgWE1MSW5wdXRTb3VyY2UgcmVmZXJyaW5nU2NoZW1hSW5wdXRTb3VyY2UgPSBudWxsOwotICBwcm90ZWN0ZWQgU3RyaW5nIHJlZmVycmluZ1NjaGVtYU5hbWVzcGFjZSA9IG51bGw7Ci0KLSAgLyoqCi0gICAqIENvbnN0dWN0b3IuCi0gICAqLwotICBwdWJsaWMgSW5saW5lWFNEUmVzb2x2ZXIoKQotICB7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFbnRpdHlSZXNvbHZlciNyZXNvbHZlRW50aXR5KG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAqLwotICBwdWJsaWMgWE1MSW5wdXRTb3VyY2UgcmVzb2x2ZUVudGl0eShYTUxSZXNvdXJjZUlkZW50aWZpZXIgcmVzb3VyY2VJZGVudGlmaWVyKQotCQkgdGhyb3dzIFhOSUV4Y2VwdGlvbiwgSU9FeGNlcHRpb24gewotCVN0cmluZyBzeXN0ZW1JZCA9IHJlc291cmNlSWRlbnRpZmllci5nZXRFeHBhbmRlZFN5c3RlbUlkKCk7Ci0JU3RyaW5nIHB1YmxpY0lkID0gcmVzb3VyY2VJZGVudGlmaWVyLmdldFB1YmxpY0lkKCk7Ci0JU3RyaW5nIG5hbWVzcGFjZSA9IHJlc291cmNlSWRlbnRpZmllci5nZXROYW1lc3BhY2UoKTsKLQlYTUxJbnB1dFNvdXJjZSBpcyA9IG51bGw7Ci0JU3RyaW5nIHNjaGVtYSA9IG51bGw7Ci0JaWYgKHN5c3RlbUlkID09IG51bGwpCi0JewotCSAgaWYocHVibGljSWQgPT0gbnVsbCkKLQkgIHsKLQkgIAlpZihuYW1lc3BhY2UgPT0gbnVsbCkKLQkgIAl7CQotCSAgICAgIHJldHVybiBudWxsOwotCSAgCX0KLQkgIAllbHNlCi0JICAJewotCSAgCQlzeXN0ZW1JZCA9IG5hbWVzcGFjZTsKLQkgIAl9Ci0JICB9Ci0JICBlbHNlCi0JICB7CQotCSAgICBzeXN0ZW1JZCA9IHB1YmxpY0lkOwotCSAgfQotCX0KLQkgIAotCWlmKHJlZmVycmluZ1NjaGVtYU5hbWVzcGFjZSAhPSBudWxsICYmIHJlZmVycmluZ1NjaGVtYU5hbWVzcGFjZS5lcXVhbHMoc3lzdGVtSWQpKQotCXsKLQkJaWYocmVmZXJyaW5nU2NoZW1hSW5wdXRTb3VyY2UhPW51bGwpCi0JCXsKLQkJCXJldHVybiByZWZlcnJpbmdTY2hlbWFJbnB1dFNvdXJjZTsKLQkJfQotCX0KLQllbHNlIGlmICgoc2NoZW1hID0gKFN0cmluZykgZW50aXRpZXMuZ2V0KHN5c3RlbUlkKSkgIT0gbnVsbCAmJiAhc2NoZW1hLmVxdWFscygiIikpCi0JewotCQlpcyA9IG5ldyBYTUxJbnB1dFNvdXJjZShwdWJsaWNJZCwgc3lzdGVtSWQsIHN5c3RlbUlkLG5ldyBTdHJpbmdSZWFkZXIoc2NoZW1hKSxudWxsKTsKLQl9Ci0JCi0gICAgLy9pZihpcyA9PSBudWxsKQotICAgIC8vewotICAgIC8vCXRocm93IG5ldyBJT0V4Y2VwdGlvbigpOwotICAgIC8vfQotCXJldHVybiBpczsKLSAgfQotCi0gIC8qKgotICAgKiBBZGQgYW4gaW5saW5lIHNjaGVtYS4KLSAgICogCi0gICAqIEBwYXJhbSB0YXJnZXROYW1lc3BhY2UgLSB0aGUgdGFyZ2V0IG5hbWVzcGFjZSBvZiB0aGUgc2NoZW1hCi0gICAqIEBwYXJhbSBzY2hlbWEgLSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2NoZW1hCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGQoU3RyaW5nIHRhcmdldE5hbWVzcGFjZSwgU3RyaW5nIHNjaGVtYSkKLSAgewotICAgIGVudGl0aWVzLnB1dCh0YXJnZXROYW1lc3BhY2UsIHNjaGVtYSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBBZGQgdGhlIHJlZmVycmluZyBpbmxpbmUgc2NoZW1hLiAKLSAgICogCi0gICAqIEBwYXJhbSBpbnB1dFNvdXJjZSAtIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlubGluZSBzY2hlbWEKLSAgICogQHBhcmFtIG5hbWVzcGFjZSAtIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIGlubGluZSBzY2hlbWEKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZFJlZmVycmluZ1NjaGVtYShYTUxJbnB1dFNvdXJjZSBpbnB1dFNvdXJjZSwgU3RyaW5nIG5hbWVzcGFjZSkKLSAgewotICAgIHJlZmVycmluZ1NjaGVtYUlucHV0U291cmNlID0gaW5wdXRTb3VyY2U7Ci0gICAgcmVmZXJyaW5nU2NoZW1hTmFtZXNwYWNlID0gbmFtZXNwYWNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9MYXp5VVJMSW5wdXRTdHJlYW0uamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL0xhenlVUkxJbnB1dFN0cmVhbS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmUyYTkxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL0xhenlVUkxJbnB1dFN0cmVhbS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwueHNkOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLQotLyoqCi0gKiBUaGlzIGNsYXNzIGFsbG93cyBJbnB1dFN0cmVhbXMgdG8gYmUgY3JlYXRlZCBhbmQgcmV0dXJuZWQgdG8geGVyY2VzIHdpdGhvdXQKLSAqIGFjdHVhbGx5IG9wZW5pbmcgZmlsZSBoYW5kbGVzIG9yIG5ldHdvcmsgY29ubmVjdGlvbnMgdW50aWwgaXQgaXMgYWJzb2x1dGVseQotICogbmVjY2Vzc2FyeS4KLSAqLwotcHVibGljIGNsYXNzIExhenlVUkxJbnB1dFN0cmVhbSBleHRlbmRzIElucHV0U3RyZWFtCi17ICAKLSAgcHJpdmF0ZSBzdGF0aWMgaW50IGRlYnVnVG90YWxPcGVuU3RyZWFtQ291bnQgPSAwOyAKLSAgcHJvdGVjdGVkIElucHV0U3RyZWFtIGlubmVyOwotICBwcm90ZWN0ZWQgU3RyaW5nIHVybDsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gZXJyb3I7Ci0gIGJvb2xlYW4gaGFzTWFya3M7Ci0gIGJvb2xlYW4gcHJldGVuZEZpbGVJc1N0aWxsT3BlbjsKLQotICBwdWJsaWMgTGF6eVVSTElucHV0U3RyZWFtKFN0cmluZyB1cmwpCi0gIHsKLSAgICB0aGlzLnVybCA9IHVybDsKLQlpbm5lciA9IG51bGw7Ci0JcHJldGVuZEZpbGVJc1N0aWxsT3BlbiA9IGZhbHNlOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGNyZWF0ZUlubmVyU3RyZWFtSWZSZXF1aXJlZCgpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgaWYgKGlubmVyID09IG51bGwgJiYgIWVycm9yKQotICAgIHsKLSAgICAgIGRlYnVnVG90YWxPcGVuU3RyZWFtQ291bnQrKzsKLSAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJDcmVhdGluZyBzdHJlYW0gKCIgKyBkZWJ1Z1RvdGFsT3BlblN0cmVhbUNvdW50ICsgIiktLSAiICsgdXJsKTsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBpbm5lciA9IG5ldyBVUkwodXJsKS5vcGVuU3RyZWFtKCk7Ci0JCXByZXRlbmRGaWxlSXNTdGlsbE9wZW4gPSBmYWxzZTsKLQkJaGFzTWFya3MgPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGZpbmFsbHkgCi0gICAgICB7Ci0gICAgICAgIGlmIChpbm5lciA9PSBudWxsKQotICAgICAgICB7ICAKLSAgICAgICAgICBlcnJvciA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotCXByb3RlY3RlZCB2b2lkIGNsb3NlU3RyZWFtKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKLQkJaWYgKGlubmVyICE9IG51bGwgJiYgIXByZXRlbmRGaWxlSXNTdGlsbE9wZW4pIHsKLQkJCWlubmVyLmNsb3NlKCk7Ci0JCQlwcmV0ZW5kRmlsZUlzU3RpbGxPcGVuID0gdHJ1ZTsKLQkJfQotICAJfQotCi0gIHB1YmxpYyBpbnQgYXZhaWxhYmxlKCkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLQlpZiAocHJldGVuZEZpbGVJc1N0aWxsT3BlbikgcmV0dXJuIDA7Ci0JY3JlYXRlSW5uZXJTdHJlYW1JZlJlcXVpcmVkKCk7Ci0JaWYgKGlubmVyID09IG51bGwpIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiU3RyZWFtIG5vdCBhdmFpbGFibGUiKTsKLQlyZXR1cm4gaW5uZXIuYXZhaWxhYmxlKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0JaWYgKHByZXRlbmRGaWxlSXNTdGlsbE9wZW4pIHsKLQkJLy8gU3RvcCBiZWhhdmluZyBhcyBpZiB0aGUgc3RyZWFtIHdlcmUgc3RpbGwgb3Blbi4KLQkJcHJldGVuZEZpbGVJc1N0aWxsT3BlbiA9IGZhbHNlOwotCX0gZWxzZSB7Ci0JCWlmIChpbm5lciAhPSBudWxsKSB7Ci0JCQlkZWJ1Z1RvdGFsT3BlblN0cmVhbUNvdW50LS07Ci0JCSAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJDbG9zaW5nIHN0cmVhbSAoIiArIGRlYnVnVG90YWxPcGVuU3RyZWFtQ291bnQgKyAiKSAtLSAiICsgdXJsKTsKLQkJCWlubmVyLmNsb3NlKCk7Ci0JCX0KLQl9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBtYXJrKGludCByZWFkbGltaXQpCi0gIHsKLQlpZiAocHJldGVuZEZpbGVJc1N0aWxsT3BlbikgcmV0dXJuOwotCWhhc01hcmtzID0gdHJ1ZTsKLQl0cnkgewotCQljcmVhdGVJbm5lclN0cmVhbUlmUmVxdWlyZWQoKTsKLQkJaW5uZXIubWFyayhyZWFkbGltaXQpOwotCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKLQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jawotCQllLnByaW50U3RhY2tUcmFjZSgpOwotCX0KLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIG1hcmtTdXBwb3J0ZWQoKQotICB7Ci0JaWYgKHByZXRlbmRGaWxlSXNTdGlsbE9wZW4pIHJldHVybiBmYWxzZTsKLQl0cnkgewotCQljcmVhdGVJbm5lclN0cmVhbUlmUmVxdWlyZWQoKTsKLQkJaWYgKGlubmVyID09IG51bGwpIHJldHVybiBmYWxzZTsKLQkJcmV0dXJuIGlubmVyLm1hcmtTdXBwb3J0ZWQoKTsKLQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2sKLQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQl9Ci0JcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcHVibGljIGludCByZWFkKCkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLQlpZiAocHJldGVuZEZpbGVJc1N0aWxsT3BlbikgcmV0dXJuIC0xOwotCWNyZWF0ZUlubmVyU3RyZWFtSWZSZXF1aXJlZCgpOwotCWlmIChpbm5lciA9PSBudWxsKSB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlN0cmVhbSBub3QgYXZhaWxhYmxlIik7Ci0JaW50IGJ5dGVzUmVhZCA9IGlubmVyLnJlYWQoKTsKLQlpZiAoYnl0ZXNSZWFkID09IC0xICYmICFoYXNNYXJrcykgY2xvc2VTdHJlYW0oKTsKLQlyZXR1cm4gYnl0ZXNSZWFkOwotICB9Ci0KLQotCXB1YmxpYyBpbnQgcmVhZChieXRlW10gYikgdGhyb3dzIElPRXhjZXB0aW9uIHsKLQkJaWYgKHByZXRlbmRGaWxlSXNTdGlsbE9wZW4pIHJldHVybiAtMTsKLQkJY3JlYXRlSW5uZXJTdHJlYW1JZlJlcXVpcmVkKCk7Ci0JCWlmIChpbm5lciA9PSBudWxsKSB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlN0cmVhbSBub3QgYXZhaWxhYmxlIik7Ci0JCWludCBieXRlc1JlYWQgPSBpbm5lci5yZWFkKGIpOwotCQlpZiAoYnl0ZXNSZWFkID09IC0xICYmICFoYXNNYXJrcykgY2xvc2VTdHJlYW0oKTsKLQkJcmV0dXJuIGJ5dGVzUmVhZDsKLQl9Ci0KLSAgcHVibGljIGludCByZWFkKGJ5dGVbXSBiLCBpbnQgb2ZmLCBpbnQgbGVuKSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgeyAgICAKLQlpZiAocHJldGVuZEZpbGVJc1N0aWxsT3BlbikgcmV0dXJuIC0xOwotCWNyZWF0ZUlubmVyU3RyZWFtSWZSZXF1aXJlZCgpOwotCWlmIChpbm5lciA9PSBudWxsKSB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlN0cmVhbSBub3QgYXZhaWxhYmxlIik7Ci0JaW50IGJ5dGVzUmVhZCA9IGlubmVyLnJlYWQoYiwgb2ZmLCBsZW4pOwotCWlmIChieXRlc1JlYWQgPT0gLTEgJiYgIWhhc01hcmtzKSBjbG9zZVN0cmVhbSgpOwotCXJldHVybiBieXRlc1JlYWQ7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCByZXNldCgpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0JaWYgKHByZXRlbmRGaWxlSXNTdGlsbE9wZW4pIHJldHVybjsKLQljcmVhdGVJbm5lclN0cmVhbUlmUmVxdWlyZWQoKTsKLQlpZiAoaW5uZXIgPT0gbnVsbCkgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJTdHJlYW0gbm90IGF2YWlsYWJsZSIpOwotCWlubmVyLnJlc2V0KCk7Ci0gIH0KLQotICBwdWJsaWMgbG9uZyBza2lwKGxvbmcgbikgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsgICAKLQlpZiAocHJldGVuZEZpbGVJc1N0aWxsT3BlbikgcmV0dXJuIDA7Ci0JY3JlYXRlSW5uZXJTdHJlYW1JZlJlcXVpcmVkKCk7Ci0JaWYgKGlubmVyID09IG51bGwpIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiU3RyZWFtIG5vdCBhdmFpbGFibGUiKTsKLQlyZXR1cm4gaW5uZXIuc2tpcChuKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC94c2QvU2NoZW1hQXR0cmlidXRlVGFibGUuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1NjaGVtYUF0dHJpYnV0ZVRhYmxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0OTc2MmYuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC94c2QvU2NoZW1hQXR0cmlidXRlVGFibGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC54c2Q7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5pbXBsLnhzLlNjaGVtYVN5bWJvbHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMudXRpbC5TeW1ib2xUYWJsZTsKLS8qKgotICogVGhpcyBjbGFzcyB3aWxsIGFsbG93IHRoZSBjYWxsaW5nIGNvZGUgdG8gc2VlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgZGVmaW5lZCBpbiBzY2hlbWEuCi0gKiBUaGlzIHNlcnZlcyBhcyBzY2hlbWEgZm9yIHNjaGVtYS4KLSAqIAotICogQGF1dGhvciBMYXdyZW5jZSBNYW5kZWwgKGxtYW5kZWxAY2EuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIFNjaGVtYUF0dHJpYnV0ZVRhYmxlIGV4dGVuZHMgU3ltYm9sVGFibGUKLXsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgU2NoZW1hQXR0cmlidXRlVGFibGUoKQotICB7Ci0gICAgLy8gYWRkIGFsbCBvZiB0aGUgc3lib2xzIHRvIHRoZSB0YWJsZS4gU2NoZW1hU3ltYm9scyBwcm9iYWJseSBzaG91bGQgaGF2ZQotICAgIC8vIGEgU3ltYm9sVGFibGUgZm9yIHRoZXNlIGJ1dCBpdCBkb2Vzbid0Ci0KLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfVFdPUE9VTkRBTlkpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9UV09QT1VORExPQ0FMKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfVFdPUE9VTkRPVEhFUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1RXT1BPVU5EVEFSR0VUTlMpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9QT1VOREFMTCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0ZBTFNFXzApOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9UUlVFXzEpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9BTllTSU1QTEVUWVBFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfQU5ZVFlQRSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0FOWVVSSSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0JBU0U2NEJJTkFSWSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0JPT0xFQU4pOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9CWVRFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfQ09MTEFQU0UpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9EQVRFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfREFURVRJTUUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9EQVkpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9ERUNJTUFMKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfRE9VQkxFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfRFVSQVRJT04pOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9FTlRJVFkpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9FTlRJVElFUyk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0VYVEVOU0lPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0ZBTFNFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfRkxPQVQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9IRVhCSU5BUlkpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9JRCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0lEUkVGKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfSURSRUZTKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfSU5UKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfSU5URUdFUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0xBTkdVQUdFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfTEFYKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfTElTVCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX0xPTkcpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9OQU1FKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfTkVHQVRJVkVJTlRFR0VSKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfTU9OVEgpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9NT05USERBWSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05DTkFNRSk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05NVE9LRU4pOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9OTVRPS0VOUyk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05PTk5FR0FUSVZFSU5URUdFUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05PTlBPU0lUSVZFSU5URUdFUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX05PUk1BTElaRURTVFJJTkcpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9OT1RBVElPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX09QVElPTkFMKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfUE9TSVRJVkVJTlRFR0VSKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfUFJFU0VSVkUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9QUk9ISUJJVEVEKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfUU5BTUUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9RVUFMSUZJRUQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9SRVBMQUNFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfUkVRVUlSRUQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9SRVNUUklDVElPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1NIT1JUKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfU0tJUCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1NUUklDVCk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1NUUklORyk7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1NVQlNUSVRVVElPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1RJTUUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9UT0tFTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1RSVUUpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9VTkJPVU5ERUQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9VTklPTik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1VOUVVBTElGSUVEKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfVU5TSUdORURCWVRFKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfVU5TSUdORURJTlQpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9VTlNJR05FRExPTkcpOwotICAgIHN1cGVyLmFkZFN5bWJvbChTY2hlbWFTeW1ib2xzLkFUVFZBTF9VTlNJR05FRFNIT1JUKTsKLSAgICBzdXBlci5hZGRTeW1ib2woU2NoZW1hU3ltYm9scy5BVFRWQUxfWUVBUik7Ci0gICAgc3VwZXIuYWRkU3ltYm9sKFNjaGVtYVN5bWJvbHMuQVRUVkFMX1lFQVJNT05USCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1ZhbGlkYXRlRXJyb3JIYW5kbGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9WYWxpZGF0ZUVycm9ySGFuZGxlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2E3M2ZhLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1ZhbGlkYXRlRXJyb3JIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC54c2Q7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlhOSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTEVycm9ySGFuZGxlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTFBhcnNlRXhjZXB0aW9uOwotCi0vKioKLSAqIEFuIGltcGxlbWVudGF0aW9uIG9mIFhNTEVycm9ySGFuZGxlciB0aGF0IGNhcHR1cmVzIGVycm9yIGZyb20gWGVyY2VzLgotICogCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCAobG1hbmRlbEBjYS5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVFcnJvckhhbmRsZXIgaW1wbGVtZW50cyBYTUxFcnJvckhhbmRsZXIKLXsKLSAgQXJyYXlMaXN0IGVycm9yTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAvKioKLSAgICogR2V0IHRoZSBlcnJvciBtZXNzYWdlcyBjcmVhdGVkIGJ5IFhlcmNlcy4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIGVycm9ycyBsaXN0LgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0RXJyb3JNZXNzYWdlcygpCi0gIHsKLSAgICByZXR1cm4gZXJyb3JMaXN0OwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFcnJvckhhbmRsZXIjZXJyb3IoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxQYXJzZUV4Y2VwdGlvbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIGVycm9yKFN0cmluZyBhcmcwLCBTdHJpbmcgYXJnMSwgWE1MUGFyc2VFeGNlcHRpb24gZXhjZXB0aW9uKSB0aHJvd3MgWE5JRXhjZXB0aW9uCi0gIHsKLSAgICBlcnJvckxpc3QuYWRkKCJFcnJvcjogIiArIGV4Y2VwdGlvbi5nZXRNZXNzYWdlKCkpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFcnJvckhhbmRsZXIjZmF0YWxFcnJvcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTFBhcnNlRXhjZXB0aW9uKQotICAgKi8KLSAgcHVibGljIHZvaWQgZmF0YWxFcnJvcihTdHJpbmcgYXJnMCwgU3RyaW5nIGFyZzEsIFhNTFBhcnNlRXhjZXB0aW9uIGV4Y2VwdGlvbikgdGhyb3dzIFhOSUV4Y2VwdGlvbgotICB7Ci0gICAgZXJyb3JMaXN0LmFkZCgiRmF0YWwgZXJyb3I6ICIgKyBleGNlcHRpb24uZ2V0TWVzc2FnZSgpKTsKLSAgfQotCi0gIC8qKgotICAgKiBAc2VlIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MRXJyb3JIYW5kbGVyI3dhcm5pbmcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxQYXJzZUV4Y2VwdGlvbikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHdhcm5pbmcoU3RyaW5nIGFyZzAsIFN0cmluZyBhcmcxLCBYTUxQYXJzZUV4Y2VwdGlvbiBleGNlcHRpb24pIHRocm93cyBYTklFeGNlcHRpb24KLSAgewotICAgIGVycm9yTGlzdC5hZGQoIldhcm5pbmc6ICIgKyBleGNlcHRpb24uZ2V0TWVzc2FnZSgpKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1hNTENhdGFsb2cuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1hNTENhdGFsb2cuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRhZmI1NS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9YTUxDYXRhbG9nLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUud3NkbC54c2Q7Ci0KLS8qKgotICogWE1MQ2F0YWxvZwotICogVGhpcyBjbGFzcyBjYW4gYmUgdXNlZCB0byByZWdpc3Rlciwgb2J0YWluIGFuZCBkZWxldGUgYW4gaW5zdGFuY2Ugb2YgYW4gCi0gKiBYTUwgY2F0YWxvZy4gTWV0aG9kIGRlZmluaXRpb25zIGFyZSBwcm92aWRlZCBmb3IgdGhlIGNhdGFsb2cgdG8gc2V0Ci0gKiBhIGxvY2F0aW9uIGluIHRoZSBjYXRhbG9nIGFuZCByZXNvbHZlIGFuIGVudGl0eSBmcm9tIHRoZSBjYXRhbG9nLgotICogCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCAobG1hbmRlbEBjYS5pYm0uY29tKQotICovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgWE1MQ2F0YWxvZwotewotICBwcml2YXRlIHN0YXRpYyBYTUxDYXRhbG9nIGluc3RhbmNlID0gbnVsbDsKLSAgcHJpdmF0ZSBzdGF0aWMgQ2xhc3MgeG1sY2F0YWxvZ2NsYXNzID0gbnVsbDsKLQotICAvKioKLSAgICogUmV0dXJuIGFuIGluc3RhbmNlIG9mIHRoZSBYTUwgY2F0YWxvZy4gSWYgbm8gaW5zdGFuY2UgaXMgcmVnaXN0ZXJlZCwKLSAgICogcmV0dXJucyBhIGRlZmF1bHQgaW5zdGFuY2UuCi0gICAqIAotICAgKiBAcmV0dXJuIHRoZSBpbnN0YW5jZSBvZiB0aGUgWE1MIGNhdGFsb2cKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgWE1MQ2F0YWxvZyBnZXRJbnN0YW5jZSgpCi0gIHsKLSAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoeG1sY2F0YWxvZ2NsYXNzICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgaW5zdGFuY2UgPSAoWE1MQ2F0YWxvZyl4bWxjYXRhbG9nY2xhc3MubmV3SW5zdGFuY2UoKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnN0YW5jZSA9IG5ldyBYTUxDYXRhbG9nSW1wbCgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGluc3RhbmNlID0gbmV3IFhNTENhdGFsb2dJbXBsKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotCi0gIC8qKgotICAgKiBTZXQgdGhlIGNsYXNzIG9mIHRoZSBYTUwgY2F0YWxvZyB0byBiZSB1c2VkLgotICAgKiAKLSAgICogQHBhcmFtIHhtbGNhdGFsb2cgLSB0aGUgY2xhc3Mgb2YgdGhlIFhNTCBjYXRhbG9nIHRvIGJlIHVzZWQKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRYTUxDYXRhbG9nKENsYXNzIHhtbGNhdGFsb2cpCi0gIHsKLSAgICB4bWxjYXRhbG9nY2xhc3MgPSB4bWxjYXRhbG9nOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlc2V0cyB0aGUgaW5zdGFuY2Ugb2YgdGhlIFhNTCBjYXRhbG9nIHRvIG51bGwuIEFsbG93cyBzd2l0Y2hpbmcgWE1MIGNhdGFsb2dzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyB2b2lkIHJlc2V0KCkKLSAgewotICAgIGluc3RhbmNlID0gbnVsbDsKLSAgICB4bWxjYXRhbG9nY2xhc3MgPSBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCBhIHB1YmxpYyBpZCBhbmQgYSBsb2NhdGlvbiB0byB0aGUgY2F0YWxvZy4KLSAgICogCi0gICAqIEBwYXJhbSBwdWJsaWNJZCAtIHRoZSBwdWJsaWMgaWQgb2YgdGhlIGVudHJ5Ci0gICAqIEBwYXJhbSBzeXN0ZW1JZCAtIHRoZSBzeXN0ZW0gaWQgb2YgdGhlIGVudHJ5Ci0gICAqLwotICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBhZGRFbnRyeVRvQ2F0YWxvZyhTdHJpbmcgcHVibGljSWQsIFN0cmluZyBzeXN0ZW1JZCk7Ci0KLSAgLyoqCi0gICAqIFJlc29sdmUgdGhlIGxvY2F0aW9uIG9mIGFuIGVudGl0eSBnaXZlbiBwdWJsaWMgYW5kIHN5c3RlbSBpZHMuCi0gICAqIAotICAgKiBAcGFyYW0gcHVibGljSWQgLSB0aGUgcHVibGljIGlkIG9mIHRoZSBlbnRpdHkgdG8gYmUgcmVzb2x2ZWQKLSAgICogQHBhcmFtIHN5c3RlbUlkIC0gdGhlIHN5c3RlbSBpZCBvZiB0aGUgZW50aXR5IHRvIGJlIHJlc29sdmVkCi0gICAqIEByZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBlbnRpdHkKLSAgICovCi0gIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgcmVzb2x2ZUVudGl0eUxvY2F0aW9uKFN0cmluZyBwdWJsaWNJZCwgU3RyaW5nIHN5c3RlbUlkKTsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9YTUxDYXRhbG9nSW1wbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC94c2QvWE1MQ2F0YWxvZ0ltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdjNDBlNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9YTUxDYXRhbG9nSW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwueHNkOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi0vKioKLSAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBYTUwgQ2F0YWxvZy4KLSAqIAotICogQGF1dGhvciBMYXdyZW5jZSBNYW5kZWwgKGxtYW5kZWxAY2EuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIFhNTENhdGFsb2dJbXBsIGV4dGVuZHMgWE1MQ2F0YWxvZwotewotICBwcm90ZWN0ZWQgTWFwIGNhdGFsb2cgPSBuZXcgSGFzaHRhYmxlKCk7Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzZGwudmFsaWRhdGUueG1sY29uZm9ybWFuY2UuWE1MQ2F0YWxvZyNhZGRFbnRyeVRvQ2F0YWxvZyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkRW50cnlUb0NhdGFsb2coU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQpCi0gIHsKLSAgICBjYXRhbG9nLnB1dChwdWJsaWNJZCwgc3lzdGVtSWQpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzZGwudmFsaWRhdGUueG1sY29uZm9ybWFuY2UuWE1MQ2F0YWxvZyNyZXNvbHZlRW50aXR5TG9jYXRpb24oamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgcmVzb2x2ZUVudGl0eUxvY2F0aW9uKFN0cmluZyBwdWJsaWNJZCwgU3RyaW5nIHN5c3RlbUlkKQotICB7Ci0gIAkvLyBpZiB0aGVyZSdzIG5vIHN5c3RlbSBpZCB1c2UgdGhlIHB1YmxpYyBpZAotICAgIGlmIChzeXN0ZW1JZCA9PSBudWxsIHx8IHN5c3RlbUlkLmVxdWFscygiIikpCi0gICAgewotICAgICAgc3lzdGVtSWQgPSBwdWJsaWNJZDsKLSAgICB9Ci0gICAgcmV0dXJuIChTdHJpbmcpY2F0YWxvZy5nZXQoc3lzdGVtSWQpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9YTUxDYXRhbG9nUmVzb2x2ZXIuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1hNTENhdGFsb2dSZXNvbHZlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2VmZGMyLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1hNTENhdGFsb2dSZXNvbHZlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLndzZGwueHNkOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxSZXNvdXJjZUlkZW50aWZpZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlhOSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTEVudGl0eVJlc29sdmVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MSW5wdXRTb3VyY2U7Ci0KLS8qKgotICogQSByZXNvbHZlciB0byByZXNvbHZlIGVudGl0aWVzIGZyb20gdGhlIFhNTCBjYXRhbG9nLgotICogCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCAobG1hbmRlbEBjYS5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgWE1MQ2F0YWxvZ1Jlc29sdmVyIGltcGxlbWVudHMgWE1MRW50aXR5UmVzb2x2ZXIKLXsKLSAgcHJvdGVjdGVkIHN0YXRpYyBYTUxDYXRhbG9nUmVzb2x2ZXIgeG1sQ2F0YWxvZzsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwcm90ZWN0ZWQgWE1MQ2F0YWxvZ1Jlc29sdmVyKCkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIEdldCB0aGUgaW5zdGFuY2Ugb2YgdGhpcyByZXNvbHZlci4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIGluc3RhbmNlIG9mIHRoaXMgcmVzb2x2ZXIKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgWE1MQ2F0YWxvZ1Jlc29sdmVyIGdldEluc3RhbmNlKCkKLSAgewotICAgIGlmICh4bWxDYXRhbG9nID09IG51bGwpCi0gICAgewotICAgICAgeG1sQ2F0YWxvZyA9IG5ldyBYTUxDYXRhbG9nUmVzb2x2ZXIoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHhtbENhdGFsb2c7Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlciNyZXNvbHZlRW50aXR5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgWE1MSW5wdXRTb3VyY2UgcmVzb2x2ZUVudGl0eShYTUxSZXNvdXJjZUlkZW50aWZpZXIgcmVzb3VyY2VJZGVudGlmaWVyKSB0aHJvd3MgWE5JRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIHB1YmxpY0lkID0gcmVzb3VyY2VJZGVudGlmaWVyLmdldFB1YmxpY0lkKCk7Ci0gICAgU3RyaW5nIHN5c3RlbUlkID0gcmVzb3VyY2VJZGVudGlmaWVyLmdldEV4cGFuZGVkU3lzdGVtSWQoKTsKLSAgICBTdHJpbmcgbG9jYXRpb24gPSBYTUxDYXRhbG9nLmdldEluc3RhbmNlKCkucmVzb2x2ZUVudGl0eUxvY2F0aW9uKHB1YmxpY0lkLCBzeXN0ZW1JZCk7Ci0gICAgaWYgKGxvY2F0aW9uID09IG51bGwpCi0gICAgewotICAgICAgWE1MSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UgPSBuZXcgWE1MSW5wdXRTb3VyY2UocHVibGljSWQsIHN5c3RlbUlkLCBzeXN0ZW1JZCwgbmV3IFN0cmluZ1JlYWRlcihsb2NhdGlvbiksIG51bGwpOwotICAgICAgcmV0dXJuIGlucHV0U291cmNlOwotICAgIH0KLSAgICAvLyBvdGhlcndpc2UgcmV0dXJuIG51bGwgdG8gdGVsbCB0aGUgcGFyc2VyIHRvIGxvY2F0ZSB0aGUgc3lzdGVtSWQgYXMgYSBVUkkKLSAgICByZXR1cm4gbnVsbDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC94c2QvWE1MRW50aXR5UmVzb2x2ZXJDaGFpbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUvd3NkbC94c2QvWE1MRW50aXR5UmVzb2x2ZXJDaGFpbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzFmODAzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1hNTEVudGl0eVJlc29sdmVyQ2hhaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnhzZDsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MUmVzb3VyY2VJZGVudGlmaWVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLnBhcnNlci5YTUxFbnRpdHlSZXNvbHZlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTElucHV0U291cmNlOwotCi0vKioKLSAqIEhhbmRsZSBhIGNoYWluIG9mIGVudGl0eSByZXNvbHZlcnMuCi0gKiAKLSAqIEBhdXRob3IgTGF3cmVuY2UgTWFuZGVsIChsbWFuZGVsQGNhLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBYTUxFbnRpdHlSZXNvbHZlckNoYWluIGltcGxlbWVudHMgWE1MRW50aXR5UmVzb2x2ZXIKLXsKLSAgcHJpdmF0ZSBMaXN0IGVudGl0eVJlc29sdmVycyA9IG5ldyBWZWN0b3IoKTsKLSAgCi0gIC8qKgotICAgKiBAc2VlIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MRW50aXR5UmVzb2x2ZXIjcmVzb2x2ZUVudGl0eShvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MUmVzb3VyY2VJZGVudGlmaWVyKQotICAgKi8KLSAgcHVibGljIFhNTElucHV0U291cmNlIHJlc29sdmVFbnRpdHkoWE1MUmVzb3VyY2VJZGVudGlmaWVyIHhtbFJlc291cmNlSWRlbnRpZmllcikgdGhyb3dzIFhOSUV4Y2VwdGlvbiwgSU9FeGNlcHRpb24KLSAgewotICAgIFhNTElucHV0U291cmNlIGlzID0gbnVsbDsKLSAgICBJdGVyYXRvciBlbnRpdHlSZXNvbHZlckl0ZXIgPSBlbnRpdHlSZXNvbHZlcnMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoZW50aXR5UmVzb2x2ZXJJdGVyLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBYTUxFbnRpdHlSZXNvbHZlciBlbnRpdHlSZXNvbHZlciA9IChYTUxFbnRpdHlSZXNvbHZlcillbnRpdHlSZXNvbHZlckl0ZXIubmV4dCgpOwotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGlzID0gZW50aXR5UmVzb2x2ZXIucmVzb2x2ZUVudGl0eSh4bWxSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgICAgfQotICAgICAgY2F0Y2ggKFhOSUV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgfQotICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgICBpZiAoaXMgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIFRocm93IGFuZCBJT0V4Y2VwdGlvbiBpZiB0aGUgZmlsZSBpc24ndCBmb3VuZAotICAgIGlmIChpcyA9PSBudWxsKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiVW5hYmxlIHRvIGxvY2F0ZSBmaWxlIik7Ci0gICAgfQotICAgIHJldHVybiBpczsKLSAgfQotCi0gIC8qKgotICAgKiBBZGQgYW4gZW50aXR5IHJlc29sdmVyIHRvIHRoaXMgY2hhaW4uCi0gICAqIAotICAgKiBAcGFyYW0gZW50aXR5UmVzb2x2ZXIgVGhlIHJlc29sdmVyIHRvIGFkZCB0byB0aGUgY2hhaW4uCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRFbnRpdHlSZXNvbHZlcihYTUxFbnRpdHlSZXNvbHZlciBlbnRpdHlSZXNvbHZlcikKLSAgewotICAgIGVudGl0eVJlc29sdmVycy5hZGQoZW50aXR5UmVzb2x2ZXIpOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS93c2RsL3hzZC9YU0RWYWxpZGF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1hTRFZhbGlkYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWQzYzcxLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3dzZGwveHNkL1hTRFZhbGlkYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLnhzZDsKLQotaW1wb3J0IGphdmEuaW8uUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nUmVhZGVyOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5wYXJzZXJzLlhNTEdyYW1tYXJQcmVwYXJzZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMudXRpbC5YTUxHcmFtbWFyUG9vbEltcGw7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLmdyYW1tYXJzLlhNTEdyYW1tYXJEZXNjcmlwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuZ3JhbW1hcnMuWE1MR3JhbW1hclBvb2w7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLmdyYW1tYXJzLlhTR3JhbW1hcjsKLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy54bmkucGFyc2VyLlhNTEVudGl0eVJlc29sdmVyOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5wYXJzZXIuWE1MSW5wdXRTb3VyY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueHMuWFNNb2RlbDsKLQotCi0vKioKLSAqIFZhbGlkYXRlIHNjaGVtYXMgZnJvbSBmaWxlcyBvciBTdHJpbmcuCi0gKiAKLSAqIEBhdXRob3IgTGF3cmVuY2UgTWFuZGVsIChsbWFuZGVsQGNhLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBYU0RWYWxpZGF0b3IKLXsKLSAgcHJpdmF0ZSBYU01vZGVsIHhzTW9kZWw7Ci0gIHByaXZhdGUgYm9vbGVhbiBpc1ZhbGlkWFNEOwotICBwcml2YXRlIExpc3QgZXJyb3JzOwotICBwcml2YXRlIFN0cmluZyBmaWxlbG9jYXRpb247Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIFhTRFZhbGlkYXRvcigpCi0gIHsKLSAgICB4c01vZGVsID0gbnVsbDsKLSAgICBpc1ZhbGlkWFNEID0gZmFsc2U7Ci0gICAgZXJyb3JzID0gbmV3IEFycmF5TGlzdCgpOwotICB9Ci0gIC8qKgotICAgKiBWYWxpZGF0ZSBhbiBpbmxpbmUgc2NoZW1hLgotICAgKiAKLSAgICogQHBhcmFtIHNjaGVtYSBBIHNjaGVtYSByZXByZXNlbnRlZCBhcyBhIHN0cmluZy4KLSAgICogQHBhcmFtIHRhcmdldE5hbWVzcGFjZSBUaGUgdGFyZ2V0IG5hbWVzcGFjZSBvZiB0aGUgc2NoZW1hLgotICAgKiBAcGFyYW0gZmlsZWxvYyBUaGUgdXJpIG9mIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHNjaGVtYS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZhbGlkYXRlSW5saW5lU2NoZW1hKFN0cmluZyBzY2hlbWEsIFN0cmluZyB0YXJnZXROYW1lc3BhY2UsIFN0cmluZyBmaWxlbG9jKQotICB7Ci0gICAgdmFsaWRhdGVJbmxpbmVTY2hlbWEoc2NoZW1hLCB0YXJnZXROYW1lc3BhY2UsIGZpbGVsb2MsIG51bGwsIG51bGwpOwotICB9Ci0KLSAgLyoqCi0gICAqIFZhbGlkYXRlIGFuIGlubGluZSBzY2hlbWEgYW5kIHNwZWNpZnkgYW4gZW50aXR5IHJlc29sdmVyLgotICAgKiAKLSAgICogQHBhcmFtIHNjaGVtYSBUaGlzIHNjaGVtYSByZXByZXNlbnRlZCBhcyBhIHN0cmluZy4KLSAgICogQHBhcmFtIHRhcmdldE5hbWVzcGFjZSBUaGUgdGFyZ2V0IG5hbWVzcGFjZSBvZiB0aGUgc2NoZW1hLgotICAgKiBAcGFyYW0gZmlsZWxvYyBUaGUgdXJpIG9mIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhpcyBzY2hlbWEuCi0gICAqIEBwYXJhbSBlbnRpdHlSZXNvbHZlckNoYWluIFRoZSBlbnRpdHkgcmVzb2x2ZXIgY2hhaW4uCi0gICAqIEBwYXJhbSBpbmxpbmVTY2hlbWFFbnRpdHlSZXNvbHZlciBBbiBpbmxpbmUgc2NoZW1hIHJlc29sdmVyIGZvciB0aGlzIHNjaGVtYS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHZhbGlkYXRlSW5saW5lU2NoZW1hKAotICAgIFN0cmluZyBzY2hlbWEsCi0gICAgU3RyaW5nIHRhcmdldE5hbWVzcGFjZSwKLSAgICBTdHJpbmcgZmlsZWxvYywKLSAgICBYTUxFbnRpdHlSZXNvbHZlciBlbnRpdHlSZXNvbHZlckNoYWluLAotICAgIFhNTEVudGl0eVJlc29sdmVyIGlubGluZVNjaGVtYUVudGl0eVJlc29sdmVyKQotICB7Ci0gICAgZmlsZWxvY2F0aW9uID0gZmlsZWxvYzsKLQotICAgIHZhbGlkYXRlWFNEKHNjaGVtYSwgdHJ1ZSwgZW50aXR5UmVzb2x2ZXJDaGFpbix0YXJnZXROYW1lc3BhY2UsIGlubGluZVNjaGVtYUVudGl0eVJlc29sdmVyKTsKLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZSB0aGUgZmlsZSBsb2NhdGVkIGF0IHRoZSB1cmkgc3BlY2lmaWVkIHdpdGggdGhlIGdpdmVuIGVudGl0eSByZXNvbHZlci4KLSAgICogCi0gICAqIEBwYXJhbSB1cmkgQW4gYWJzb2x1dGUgdXJpIGZvciB0aGUgc2NoZW1hIGxvY2F0aW9uLgotICAgKiBAcGFyYW0gZW50aXR5UmVzb2x2ZXIgQW4gZW50aXR5IHJlc29sdmVyIHRvIGJlIHVzZWQuCi0gICAqLwotICBwdWJsaWMgdm9pZCB2YWxpZGF0ZShTdHJpbmcgdXJpLCBYTUxFbnRpdHlSZXNvbHZlciBlbnRpdHlSZXNvbHZlcikKLSAgewotICAgIHZhbGlkYXRlWFNEKHVyaSwgZmFsc2UsIGVudGl0eVJlc29sdmVyLCBudWxsLCBudWxsKTsKLSAgfQotCi0gIC8qKgotICAgKiBWYWxpZGF0ZSB0aGUgc2NoZW1hLgotICAgKiAKLSAgICogQHBhcmFtIHNjaGVtYSBUaGUgc2NoZW1hIG9yIGl0J3MgbG9jYXRpb24uCi0gICAqIEBwYXJhbSBpbmxpbmVYU0QgVHJ1ZSBpZiBhbiBpbmxpbmUgc2NoZW1hLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqIEBwYXJhbSBlbnRpdHlSZXNvbHZlciBBbiBlbnRpdHkgcmVzb2x2ZXIgdG8gdXNlLgotICAgKiBAcGFyYW0gdGFyZ2V0TmFtZXNwYWNlIFRoZSB0YXJnZXQgbmFtZXNwYWNlIG9mIHRoZSBzY2hlbWEgYmVpbmcgdmFsaWRhdGVkLgotICAgKiBAcGFyYW0gaW5saW5lU2NoZW1hRW50aXR5UmVzb2x2ZXIgQW4gaW5saW5lIHNjaGVtYSBlbnRpdHkgcmVzb2x2ZXIuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2YWxpZGF0ZVhTRChTdHJpbmcgc2NoZW1hLCBib29sZWFuIGlubGluZVhTRCwgWE1MRW50aXR5UmVzb2x2ZXIgZW50aXR5UmVzb2x2ZXIsIFN0cmluZyB0YXJnZXROYW1lc3BhY2UsIFhNTEVudGl0eVJlc29sdmVyIGlubGluZVNjaGVtYUVudGl0eVJlc29sdmVyKQotICB7Ci0gICAgVmFsaWRhdGVFcnJvckhhbmRsZXIgZXJyb3JIYW5kbGVyID0gbmV3IFZhbGlkYXRlRXJyb3JIYW5kbGVyKCk7Ci0gICAgZXJyb3JIYW5kbGVyLmdldEVycm9yTWVzc2FnZXMoKS5jbGVhcigpOwotICAgIHRyeQotICAgIHsKLQkJWE1MR3JhbW1hclByZXBhcnNlciBncmFtbWFyUHJlcGFyc2VyID0gbmV3IFhNTEdyYW1tYXJQcmVwYXJzZXIoKTsKLQkJWE1MR3JhbW1hclBvb2wgZ3JhbW1hclBvb2wgPSBuZXcgWE1MR3JhbW1hclBvb2xJbXBsKCk7Ci0JCWdyYW1tYXJQcmVwYXJzZXIuc2V0R3JhbW1hclBvb2woZ3JhbW1hclBvb2wpOwotCSAKLSAgICAgIGdyYW1tYXJQcmVwYXJzZXIuc2V0RXJyb3JIYW5kbGVyKGVycm9ySGFuZGxlcik7Ci0gICAgICBpZiAoZW50aXR5UmVzb2x2ZXIgIT0gbnVsbCkKLSAgICAgIHsKLQkJZ3JhbW1hclByZXBhcnNlci5zZXRFbnRpdHlSZXNvbHZlcihlbnRpdHlSZXNvbHZlcik7Ci0gICAgICB9Ci0KLSAgICAgIHRyeQotICAgICAgewotCQlYTUxJbnB1dFNvdXJjZSBpcyA9IG51bGw7Ci0gICAgICAgIC8vIHRoaXMgYWxsb3dzIHN1cHBvcnQgZm9yIHRoZSBpbmxpbmUgc2NoZW1hIGluIFdTREwgZG9jdW1lbnRzCi0gICAgICAgIGlmIChpbmxpbmVYU0QpCi0gICAgICAgIHsKLSAgICAgICAgCQotICAgICAgICAJUmVhZGVyIHJlYWRlciA9IG5ldyBTdHJpbmdSZWFkZXIoc2NoZW1hKTsKLQkJCWlzID0gbmV3IFhNTElucHV0U291cmNlKG51bGwsZmlsZWxvY2F0aW9uLGZpbGVsb2NhdGlvbixyZWFkZXIsbnVsbCk7Ci0JCQkKLQkJCSgoSW5saW5lWFNEUmVzb2x2ZXIpaW5saW5lU2NoZW1hRW50aXR5UmVzb2x2ZXIpLmFkZFJlZmVycmluZ1NjaGVtYShpcyx0YXJnZXROYW1lc3BhY2UpOwotCi0gICAgICAgIH0KLSAgICAgICAgLy8gZ2V0IHRoZSBpbnB1dCBzb3VyY2UgZm9yIGFuIGV4dGVybmFsIHNjaGVtYSBmaWxlCi0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGlzID0gbmV3IFhNTElucHV0U291cmNlKG51bGwsc2NoZW1hLHNjaGVtYSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGdyYW1tYXJQcmVwYXJzZXIucmVnaXN0ZXJQcmVwYXJzZXIoWE1MR3JhbW1hckRlc2NyaXB0aW9uLlhNTF9TQ0hFTUEsbnVsbC8qc2NoZW1hTG9hZGVyKi8pOwotICAgICAgICBncmFtbWFyUHJlcGFyc2VyLmdldExvYWRlcihYTUxHcmFtbWFyRGVzY3JpcHRpb24uWE1MX1NDSEVNQSk7Ci0KLQkJWFNHcmFtbWFyIGdyYW1tYXIgPSAoWFNHcmFtbWFyKWdyYW1tYXJQcmVwYXJzZXIucHJlcGFyc2VHcmFtbWFyKFhNTEdyYW1tYXJEZXNjcmlwdGlvbi5YTUxfU0NIRU1BLGlzKTsKLQkJeHNNb2RlbCA9IGdyYW1tYXIudG9YU01vZGVsKCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIC8vcGFyc2VyIHdpbGwgcmV0dXJuIG51bGwgcG9pbnRlciBleGNlcHRpb24gaWYgdGhlIGRvY3VtZW50IGlzIHN0cnVjdHVyYWxseSBpbnZhbGlkCi0gICAgICAgIGVycm9ycy5hZGQoIlNjaGVtYSBpcyBzdHJ1Y3R1cmFsbHkgaW52YWxpZC4iKTsKLSAgICAgIH0KLQotICAgICAgZXJyb3JzLmFkZEFsbChlcnJvckhhbmRsZXIuZ2V0RXJyb3JNZXNzYWdlcygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAJU3lzdGVtLm91dC5wcmludGxuKGUpOwotICAgIH0KLSAgICBpZiAoZXJyb3JzLmlzRW1wdHkoKSkKLSAgICB7Ci0gICAgICBpc1ZhbGlkWFNEID0gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgWFNNb2RlbCBjcmVhdGVkLgotICAgKiAKLSAgICogQHJldHVybiBUaGUgWFNNb2RlbCBjcmVhdGVkLgotICAgKi8KLQotICBwdWJsaWMgWFNNb2RlbCBnZXRYU01vZGVsKCkKLSAgewotICAJcmV0dXJuIHhzTW9kZWw7Ci0gIH0KLSAgLyoqCi0gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2NoZW1hIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuCi0gICAqIAotICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIHNjaGVtYSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgKi8KLSAgcHVibGljIGJvb2xlYW4gaXNWYWxpZCgpCi0gIHsKLSAgICByZXR1cm4gaXNWYWxpZFhTRDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIGVycm9yIGxpc3QuCi0gICAqIAotICAgKiBAcmV0dXJuIEEgbGlzdCBvZiBlcnJvciBmcm9tIHRoZSBzY2hlbWEuCi0gICAqLwotICBwdWJsaWMgTGlzdCBnZXRFcnJvcnMoKQotICB7Ci0gICAgcmV0dXJuIGVycm9yczsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL1hNTENvbnZlcnRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL1hNTENvbnZlcnRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmIxMzRjLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3htbC9YTUxDb252ZXJ0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sOwotCi1pbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOwotCi1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lcjsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQ7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgY29udmVydHMgYSBYTUwgZG9jdW1lbnQgdXNpbmcgYW4gWFNMIGZpbGUuCi0gKiAKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBYTUxDb252ZXJ0b3IKLXsKLQotICAvKioKLSAgICogVHJhbnNmb3JtcyBhbiBYTUwgZG9jdW1lbnQgdXNpbmcgYW4gWFNMIGZpbGUuCi0gICAqIEBwYXJhbSBhcmdzICBhcmd1bWVudHMgZm9yIG1haW4uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgMykKLSAgICAgIHsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAotICAgICAgICAgICJVc2FnZTogWE1MQ29udmVydG9yIDx4c2xGaWxlPiA8aW5YTUxGaWxlPiA8b3V0RmlsZT4iKTsKLSAgICAgIH0KLQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAvLyBHZXQgdHJhbnNmb3JtZXIgCi0gICAgICAgIFRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyID0KLSAgICAgICAgICBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdUcmFuc2Zvcm1lcigKLSAgICAgICAgICAgIG5ldyBTdHJlYW1Tb3VyY2UoYXJnc1swXSkpOwotCi0gICAgICAgIC8vIFRyYW5zZm9ybSB0aGUgWE1MIGRvY3VtZW50IHVzaW5nIHRoZSBzcGVjaWZpY2VkIFhTTCBmaWxlCi0gICAgICAgIHRyYW5zZm9ybWVyLnRyYW5zZm9ybSgKLSAgICAgICAgICBuZXcgU3RyZWFtU291cmNlKGFyZ3NbMV0pLAotICAgICAgICAgIG5ldyBTdHJlYW1SZXN1bHQobmV3IEZpbGVPdXRwdXRTdHJlYW0oYXJnc1syXSkpKTsKLQotICAgICAgICAvLyBEaXNwbGF5IHJlc3VsdHMKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAotICAgICAgICAgICJDcmVhdGVkICIgKyBhcmdzWzJdICsgIiBmcm9tICIgKyBhcmdzWzBdICsgIiBhbmQgIiArIGFyZ3NbMV0gKyAiLiIpOwotICAgICAgfQotICAgIH0KLQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLQotICAgIFN5c3RlbS5leGl0KDApOwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MRG9jdW1lbnRDYWNoZS5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL1hNTERvY3VtZW50Q2FjaGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEwODc1Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MRG9jdW1lbnRDYWNoZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBjcmVhdGVzIGEgSGFzaE1hcCB0byBjYWNoZSBYTUwgZG9jdW1lbnRzLgotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGNsYXNzIFhNTERvY3VtZW50Q2FjaGUgZXh0ZW5kcyBIYXNoTWFwCi17Ci0Jc3RhdGljIFhNTERvY3VtZW50Q2FjaGUgaW5zdGFuY2U7Ci0KLSAgLyoqCi0JICogQ29tbWVudCBmb3IgPGNvZGU+c2VyaWFsVmVyc2lvblVJRDwvY29kZT4KLQkgKi8KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAzODM0MDI4MDQzNzA5NjU3NDAxTDsKLQotCS8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgWE1MRG9jdW1lbnRDYWNoZS4KLSAgICogQHBhcmFtIGluaXRpYWxDYXBhY2l0eSAgdGhlIGluaXRpYWwgY2FwYWNpdHkuCi0gICAqIEBwYXJhbSBsb2FkRmFjdG9yICAgICAgIHRoZSBsb2FkIGZhY3Rvci4gCi0gICAqLwotICBwdWJsaWMgWE1MRG9jdW1lbnRDYWNoZShpbnQgaW5pdGlhbENhcGFjaXR5LCBmbG9hdCBsb2FkRmFjdG9yKQotICB7Ci0gICAgc3VwZXIoaW5pdGlhbENhcGFjaXR5LCBsb2FkRmFjdG9yKTsKLSAgICBpbnN0YW5jZSA9IHRoaXM7Ci0gIH0KLQotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIFhNTERvY3VtZW50Q2FjaGUuCi0gICAqIEBwYXJhbSBpbml0aWFsQ2FwYWNpdHkgIHRoZSBpbml0aWFsIGNhcGFjaXR5LgotICAgKi8KLSAgcHVibGljIFhNTERvY3VtZW50Q2FjaGUoaW50IGluaXRpYWxDYXBhY2l0eSkKLSAgewotICAgIHN1cGVyKGluaXRpYWxDYXBhY2l0eSk7Ci0gICAgaW5zdGFuY2UgPSB0aGlzOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBYTUxEb2N1bWVudENhY2hlLgotICAgKi8KLSAgcHVibGljIFhNTERvY3VtZW50Q2FjaGUoKQotICB7Ci0gICAgc3VwZXIoKTsKLSAgICBpbnN0YW5jZSA9IHRoaXM7Ci0gIH0KLQotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIFhNTERvY3VtZW50Q2FjaGUuCi0gICAqIEBwYXJhbSB0ICB0aGUgbWFwIHdob3NlIG1hcHBpbmdzIGFyZSB0byBiZSBwbGFjZWQgaW4gdGhpcyBtYXAuCi0gICAqLwotICBwdWJsaWMgWE1MRG9jdW1lbnRDYWNoZShNYXAgdCkKLSAgewotICAgIHN1cGVyKHQpOwotICAgIGluc3RhbmNlID0gdGhpczsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgWE1MRG9jdW1lbnRDYWNoZSBpbnN0YW5jZSgpCi0gIHsKLQkgIGlmIChpbnN0YW5jZSA9PSBudWxsKSAKLQkJICBpbnN0YW5jZSA9IG5ldyBYTUxEb2N1bWVudENhY2hlKCk7Ci0JICAKLQkgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL1hNTERvY3VtZW50Q2FjaGVVc2VyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MRG9jdW1lbnRDYWNoZVVzZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUwZjA3ZS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MRG9jdW1lbnRDYWNoZVVzZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sOwotCi1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLQotLyoqCi0gKiBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgdGFrZXMgYWR2YW50YWdlIG9mIGNhY2hlZCBYTUwgZG9jdW1lbnRzLgotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgWE1MRG9jdW1lbnRDYWNoZVVzZXIKLXsKLSAgLyoqCi0gICAqIEdldCBkb2N1bWVudCBmcm9tIGNhY2hlLgotICAgKiBAc2VlICNzZXREb2N1bWVudAotICAgKgotICAgKiBAcGFyYW0ga2V5ICBhIFN0cmluZy4gCi0gICAqIEByZXR1cm4gYSBEb2N1bWVudCBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUga2V5LgotICAgKi8KLSAgcHJvdGVjdGVkIERvY3VtZW50IGdldERvY3VtZW50KFN0cmluZyBrZXkpCi0gIHsKLSAgICByZXR1cm4gKERvY3VtZW50KSBYTUxEb2N1bWVudENhY2hlLmluc3RhbmNlKCkuZ2V0KGtleSk7Ci0gIH0KLQotICAvKioKLSAgICogUHV0IGRvY3VtZW50IHdpdGggY29ycmVzcG9uZGluZyBrZXkgaW4gY2FjaGUuCi0gICAqIEBzZWUgI2dldERvY3VtZW50Ci0gICAqCi0gICAqIEBwYXJhbSBrZXkgICAgICAgYSBTdHJpbmcgdXNlZCBhcyBhIGtleSB0byBpZGVudGlmeSBzcGVjaWZpZWQgZG9jdW1lbnQuCi0gICAqIEBwYXJhbSBkb2N1bWVudCAgYSBkb2N1bWVudC4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldERvY3VtZW50KFN0cmluZyBrZXksIE9iamVjdCBkb2N1bWVudCkKLSAgewotCSAgWE1MRG9jdW1lbnRDYWNoZS5pbnN0YW5jZSgpLnB1dChrZXksIGRvY3VtZW50KTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgZG9jdW1lbnQgbGlzdC4KLSAgICogQHJldHVybiBhIFhNTERvY3VtZW50Q2FjaGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZG9jdW1lbnQgbGlzdCB2YWx1ZS4KLSAgICovCi0gIHB1YmxpYyBYTUxEb2N1bWVudENhY2hlIGdldERvY3VtZW50TGlzdCgpCi0gIHsKLSAgICByZXR1cm4gWE1MRG9jdW1lbnRDYWNoZS5pbnN0YW5jZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIFhNTCBkb2N1bWVudC4KLSAgICogQHBhcmFtIHVybFN0cmluZyAgYSBTdHJpbmcgbG9jYXRpbmcgdGhlIFhNTCBkb2N1bWVudC4KLSAgICogQHBhcmFtIGJhc2VVUkkgICAgYSBiYXNlIHVybCB0byBhc3Npc3QgaW4gbG9jYXRpbmcgdGhlIFhNTCBkb2N1bWVudC4KLSAgICogQHJldHVybiBhIERvY3VtZW50IG9iamVjdC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgZG9jdW1lbnQgY2Fubm90IGJlIHBhcnNlZC4KLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudCBwYXJzZVhNTERvY3VtZW50VVJMKFN0cmluZyB1cmxTdHJpbmcsIFN0cmluZyBiYXNlVVJJKQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJldHVybiBwYXJzZVhNTERvY3VtZW50VVJMKHVybFN0cmluZywgYmFzZVVSSSwgbnVsbCk7Ci0gIH0KLQotICAvKioKLSAgICogUGFyc2UgWE1MIGRvY3VtZW50IGFuZCB2YWxpZGF0ZSB3aXRoIGEgc2NoZW1hIGRvY3VtZW50LgotICAgKiBAcGFyYW0gdXJsU3RyaW5nICBhIFN0cmluZyBsb2NhdGluZyB0aGUgWE1MIGRvY3VtZW50LgotICAgKiBAcGFyYW0gYmFzZVVSSSAgICBhIGJhc2UgdXJsIHRvIGFzc2lzdCBpbiBsb2NhdGluZyB0aGUgWE1MIGRvY3VtZW50LgotICAgKiBAcGFyYW0gc2NoZW1hICAgICBhIFN0cmluZyBpZGVudGlmeWluZyByZWxhdGVkIHNjaGVtYSBkb2N1bWVudC4KLSAgICogQHJldHVybiBhIERvY3VtZW50IG9iamVjdC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgZG9jdW1lbnQgY2Fubm90IGJlIHBhcnNlZC4KLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudCBwYXJzZVhNTERvY3VtZW50VVJMKAotICAgIFN0cmluZyB1cmxTdHJpbmcsCi0gICAgU3RyaW5nIGJhc2VVUkksCi0gICAgU3RyaW5nIHNjaGVtYSkKLSAgICB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgICBEb2N1bWVudCBkb2N1bWVudCA9IG51bGw7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBDcmVhdGUgVVJMIHJlZmVyZW5jZSB0byBkb2N1bWVudAotICAgICAgVVJMIHVybCA9IFhNTFV0aWxzLmNyZWF0ZVVSTCh1cmxTdHJpbmcsIGJhc2VVUkkpOwotICAgICAgICAgICAgICAgCi0gICAgICAvLyBUT0RPOiBBZGQgc2NoZW1hIHRvIHRoZSB4bWwgZG9jdW1lbnQgY2FjaGUsIHNvIHRoYXQgeW91IGNhbiBkZXRlY3Qgd2hlbiBpdCBoYXMgYWxyZWFkeSAKLSAgICAgIC8vICBiZWVuIHBhcnNlZCB1c2luZyBhIHNwZWNpZmljIHNjaGVtYSBkZWZpbml0aW9uIAotCi0gICAgICAvLyBJZiB0aGUgZG9jdW1lbnQgaXMgbm90IGluIHRoZSBjYWNoZSwgdGhlbiByZWFkIGFuZCBwYXJzZSBpdAotICAgCSAgaWYgKChkb2N1bWVudCA9IGdldERvY3VtZW50KHVybFN0cmluZykpID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGRvY3VtZW50ID0gWE1MVXRpbHMucGFyc2VYTUxEb2N1bWVudFVSTCh1cmwsIHNjaGVtYSk7Ci0gICAgICAgIC8vIEFkZCBkb2N1bWVudCB0byBjYWNoZQotICAgICAgICBzZXREb2N1bWVudCh1cmxTdHJpbmcsIGRvY3VtZW50KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgdGhyb3cgZTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRvY3VtZW50OwotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MVGFncy5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL1hNTFRhZ3MuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEyZDA0Zi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MVGFncy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbDsKLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBjb250YWlucyBpbmZvcm1hdGlvbiBvbiBYTUwgdGFncy4KLSAqIAotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGludGVyZmFjZSBYTUxUYWdzCi17Ci0gIC8qKgotICAgKiBOYW1lc3BhY2VzLgotICAgKi8KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfVVJJX1hTSSA9Ci0gICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfVVJJX1hNTE5TID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIjsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgTlNfVVJJX1hTRCA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIFhTRF9TQ0hFTUFMT0NBVElPTiA9Ci0gICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLnhzZCI7Ci0KLSAgLyoqCi0gICAqIFF1YWxpZmllZCBuYW1lcyBvZiBYU0QgZWxlbWVudHMgYW5kIGF0dHJpYnV0ZXMuCi0gICAqLwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIEVMRU1fWFNEX0FOTk9UQVRJT04gPQotICAgIG5ldyBRTmFtZShOU19VUklfWFNELCAiYW5ub3RhdGlvbiIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIEVMRU1fWFNEX0lNUE9SVCA9IG5ldyBRTmFtZShOU19VUklfWFNELCAiaW1wb3J0Iik7ICAKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBFTEVNX1hTRF9JTkNMVURFID0gbmV3IFFOYW1lKE5TX1VSSV9YU0QsICJpbmNsdWRlIik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgRUxFTV9YU0RfU0NIRU1BID0gbmV3IFFOYW1lKE5TX1VSSV9YU0QsICJzY2hlbWEiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBFTEVNX1hTRF9FTEVNRU5UID0gbmV3IFFOYW1lKE5TX1VSSV9YU0QsICJlbGVtZW50Iik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgRUxFTV9YU0RfQVRUUklCVVRFID0KLSAgICBuZXcgUU5hbWUoTlNfVVJJX1hTRCwgImF0dHJpYnV0ZSIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIEVMRU1fWFNEX0NPTVBMRVhUWVBFID0KLSAgICBuZXcgUU5hbWUoTlNfVVJJX1hTRCwgImNvbXBsZXhUeXBlIik7Ci0KLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBBVFRSX1hTSV9UWVBFID0gbmV3IFFOYW1lKE5TX1VSSV9YU0ksICJ0eXBlIik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgQVRUUl9YU0lfTklMID0gbmV3IFFOYW1lKE5TX1VSSV9YU0ksICJuaWwiKTsKLQotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIEFUVFJfWFNEX05BTUUgPSBuZXcgUU5hbWUoTlNfVVJJX1hTRCwgIm5hbWUiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBBVFRSX1hTRF9UWVBFID0gbmV3IFFOYW1lKE5TX1VSSV9YU0QsICJ0eXBlIik7Ci0gIHB1YmxpYyBmaW5hbCBzdGF0aWMgUU5hbWUgQVRUUl9YU0RfQkFTRSA9IG5ldyBRTmFtZShOU19VUklfWFNELCAiYmFzZSIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIEFUVFJfWFNEX05BTUVTUEFDRSA9Ci0gICAgbmV3IFFOYW1lKE5TX1VSSV9YU0QsICJuYW1lc3BhY2UiKTsKLSAgcHVibGljIGZpbmFsIHN0YXRpYyBRTmFtZSBBVFRSX1hTRF9TQ0hFTUFMT0NBVElPTiA9Ci0gICAgbmV3IFFOYW1lKE5TX1VSSV9YU0QsICJzY2hlbWFMb2NhdGlvbiIpOwotICBwdWJsaWMgZmluYWwgc3RhdGljIFFOYW1lIEFUVFJfWFNEX1RBUkdFVE5BTUVTUEFDRSA9Ci0gICAgbmV3IFFOYW1lKE5TX1VSSV9YU0QsICJ0YXJnZXROYW1lc3BhY2UiKTsKLQotfQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL1hNTFRyYXZlcnNhbC5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL1hNTFRyYXZlcnNhbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjIzM2YwLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3htbC9YTUxUcmF2ZXJzYWwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sOwotCi1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5DREFUQVNlY3Rpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uQ29tbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudFR5cGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbnRpdHk7Ci1pbXBvcnQgb3JnLnczYy5kb20uRW50aXR5UmVmZXJlbmNlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vdGF0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLlByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5UZXh0OwotCi0vKioKLSAqIFdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBub2RlIHNvdXJjZSBjb2RlLCBzbyB0aGlzIGRvZXMKLSAqIG91ciBkb3VibGUtZGlzcGF0Y2ggdGhlIGhhcmQgd2F5LgotICovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgWE1MVHJhdmVyc2FsIGV4dGVuZHMgWE1MVmlzaXRvcgotewotICAvKioKLSAgICAgKiBSZXR1cm5pbmcgZmFsc2UgZnJvbSBhY3Rpb24gd291bGQgdGVybWluYXRlcyB0cmF2ZXJzYWwuCi0gICAgICogSG93ZXZlciwgdGhpcyBhbHdheXMgcmV0dXJucyB0cnVlLiAtLSBhIG5vLW9wLgotICAgICAqIEBwYXJhbSBuIC0gYW4gWE1MIG5vZGUuCi0gICAgICogQHJldHVybiBhbHdheXMgdHJ1ZS4KLSAgICAgKi8KLSAgcHVibGljIGJvb2xlYW4gYWN0aW9uKE5vZGUgbikKLSAgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdmlzaXQoQ0RBVEFTZWN0aW9uIHMpCi0gIHsKLSAgICBhY3Rpb24ocyk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB2aXNpdChEb2N1bWVudCBlKQotICB7Ci0gICAgaWYgKGFjdGlvbihlKSkKLSAgICB7Ci0gICAgICAvLyBUaGlzIGRvZXMgdmlzaXQgRG9jdW1lbnRUeXBlLCB3aGljaCBpcyBjb25zaWRlcmVkIGEgY2hpbGQgTm9kZS4KLSAgICAgIGZvciAoTm9kZSBuID0gZS5nZXRGaXJzdENoaWxkKCk7IG4gIT0gbnVsbDsgbiA9IG4uZ2V0TmV4dFNpYmxpbmcoKSkKLSAgICAgIHsKLSAgICAgICAgZG9WaXNpdChuKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB2aXNpdChEb2N1bWVudFR5cGUgdHlwZSkKLSAgewotICAgIGlmIChhY3Rpb24odHlwZSkpCi0gICAgewotICAgICAgdmlzaXQodHlwZS5nZXRFbnRpdGllcygpKTsKLSAgICAgIHZpc2l0KHR5cGUuZ2V0Tm90YXRpb25zKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEF0dHIgZSkKLSAgewotICAgIGFjdGlvbihlKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEVsZW1lbnQgbm9kZSkKLSAgewotICAgIGlmIChhY3Rpb24obm9kZSkpCi0gICAgewotICAgICAgdmlzaXQobm9kZS5nZXRBdHRyaWJ1dGVzKCkpOwotICAgICAgZm9yIChOb2RlIG4gPSBub2RlLmdldEZpcnN0Q2hpbGQoKTsgbiAhPSBudWxsOyBuID0gbi5nZXROZXh0U2libGluZygpKQotICAgICAgewotICAgICAgICBkb1Zpc2l0KG4pOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHZpc2l0KENvbW1lbnQgZSkKLSAgewotICAgIGFjdGlvbihlKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHZpc2l0KFRleHQgZSkKLSAgewotICAgIGFjdGlvbihlKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEVudGl0eVJlZmVyZW5jZSBlKQotICB7Ci0gICAgYWN0aW9uKGUpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdmlzaXQoRW50aXR5IGUpCi0gIHsKLSAgICBhY3Rpb24oZSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB2aXNpdChOb3RhdGlvbiBuKQotICB7Ci0gICAgYWN0aW9uKG4pOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdmlzaXQoUHJvY2Vzc2luZ0luc3RydWN0aW9uIGkpCi0gIHsKLSAgICBhY3Rpb24oaSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB2aXNpdChOYW1lZE5vZGVNYXAgbWFwKQotICB7Ci0gICAgaWYgKG1hcCAhPSBudWxsKQotICAgIHsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWFwLmdldExlbmd0aCgpOyArK2kpCi0gICAgICB7Ci0gICAgICAgIGRvVmlzaXQobWFwLml0ZW0oaSkpOwotICAgICAgfQotICAgIH0KLSAgfQotfQotCi0vLyBFTkQgT0YgRklMRQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL1hNTFV0aWxzLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYyMjcyNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MVXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1MzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbDsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwotaW1wb3J0IGphdmEuaW8uV3JpdGVyOwotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkk7Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKLQotaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlcmlhbGl6ZS5PdXRwdXRGb3JtYXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VyaWFsaXplLlhNTFNlcmlhbGl6ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLldTSUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJVGFnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLk51bGxVdGlsOwotaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7Ci1pbXBvcnQgb3JnLnczYy5kb20uQ2hhcmFjdGVyRGF0YTsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotaW1wb3J0IG9yZy54bWwuc2F4LkVycm9ySGFuZGxlcjsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnhtbC5zYXguWE1MUmVhZGVyOwotCi1pbXBvcnQgY29tLmlibS53c2RsLnV0aWwuU3RyaW5nVXRpbHM7Ci0KLS8qKgotICogU2V0IG9mIFhNTCByZWxhdGVkIHV0aWxpdGllcy4KLSAqIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgWE1MVXRpbHMKLXsKLQkvKioKLQkgKiBTb21lIHNheCBmZWF0dXJlcyB0aGF0IG5lZWQgdG8gYmUgc2V0LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfTkFNRVNQQUNFX1BSRUZJWEVTID0gImh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy9uYW1lc3BhY2UtcHJlZml4ZXMiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfTkFNRVNQQUNFUyA9ICJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlcyI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9WQUxJREFUSU9OX1NDSEVNQSA9ICJodHRwOi8vYXBhY2hlLm9yZy94bWwvZmVhdHVyZXMvdmFsaWRhdGlvbi9zY2hlbWEiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEpBWFBfU0NIRU1BX0xBTkdVQUdFID0gImh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL2pheHAvcHJvcGVydGllcy9zY2hlbWFMYW5ndWFnZSI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVzNDX1hNTF9TQ0hFTUEgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFczQ19TT0FQXzEyX1NDSEVNQSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSkFYUF9TQ0hFTUFfU09VUkNFID0gImh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL2pheHAvcHJvcGVydGllcy9zY2hlbWFTb3VyY2UiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRZX0VYVEVSTkFMX1NDSEVNQV9MT0NBVElPTiA9ICJodHRwOi8vYXBhY2hlLm9yZy94bWwvcHJvcGVydGllcy9zY2hlbWEvZXh0ZXJuYWwtc2NoZW1hTG9jYXRpb24iOwotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09BUF9FTEVNX0VOVkVMT1BFID0gIkVudmVsb3BlIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTT0FQX0VMRU1fSEVBREVSID0gIkhlYWRlciI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09BUF9FTEVNX0JPRFkgPSAiQm9keSI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09BUF9FTEVNX0ZBVUxUID0gIkZhdWx0IjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTT0FQX0VMRU1fRkFVTFRfQ09ERSA9ICJmYXVsdGNvZGUiOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNPQVBfRUxFTV9GQVVMVF9TVFJJTkcgPSAiZmF1bHRzdHJpbmciOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNPQVBfRUxFTV9GQVVMVF9ERVRBSUwgPSAiZGV0YWlsIjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTT0FQX0VMRU1fRkFVTFRfQUNUT1IgPSAiZmF1bHRhY3RvciI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09BUF9BVFRSX01VU1RfVU5ERVJTVEFORCA9ICJtdXN0VW5kZXJzdGFuZCI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09BUF9BVFRSX0FDVE9SID0gImFjdG9yIjsKLQotCS8qKgotCSAqIEdldCBYTUxSZWFkZXIuCi0JICogCi0JICogQHJldHVybiB0aGUgWE1MUmVhZGVyIHZhbHVlCi0JICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdGhlcmUgYXJlIHByb2JsZW1zIGdldHRpbmcgdGhlIFhNTFJlYWRlcgotCSAqICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFhNTFJlYWRlciBnZXRYTUxSZWFkZXIoKSB0aHJvd3MgV1NJRXhjZXB0aW9uIHsKLQkJWE1MUmVhZGVyIHhtbFJlYWRlciA9IG51bGw7Ci0KLQkJdHJ5Ci0JCXsKLQkJCXhtbFJlYWRlciA9IChuZXcgb3JnLmFwYWNoZS54ZXJjZXMuamF4cC5TQVhQYXJzZXJGYWN0b3J5SW1wbCgpKQotCQkJCQkubmV3U0FYUGFyc2VyKCkuZ2V0WE1MUmVhZGVyKCk7Ci0KLQkJCS8vIFNldCBuYW1lc3BhY2UgYXdhcmUKLQkJCXhtbFJlYWRlci5zZXRGZWF0dXJlKEZFQVRVUkVfTkFNRVNQQUNFX1BSRUZJWEVTLCB0cnVlKTsKLQkJCXhtbFJlYWRlci5zZXRGZWF0dXJlKEZFQVRVUkVfTkFNRVNQQUNFUywgdHJ1ZSk7Ci0JCX0KLQotCQljYXRjaCAoRXhjZXB0aW9uIGUpCi0JCXsKLQkJCXRocm93IG5ldyBXU0lFeGNlcHRpb24oIkNvdWxkIG5vdCBnZXQgWE1MUmVhZGVyIGltcGxlbWVudGF0aW9uLiIsIGUpOwotCQl9Ci0KLQkJcmV0dXJuIHhtbFJlYWRlcjsKLQl9Ci0KLQkvKioKLQkgKiBQYXJzZSB0ZXh0IHN0cmluZyBhcyBhbiBYTUwgZG9jdW1lbnQgYW5kIHJldHVybiB0aGUgZG9jdW1lbnQgZWxlbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gdGV4dCBYTUwgZG9jdW1lbnQgdGV4dC4KLQkgKiBAcGFyYW0gdmFsaWRhdGUgdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgd2lsbCBiZSB2YWxpZGF0ZSwgZmFsc2Ugb3RoZXJ3aXNlCi0JICogQHJldHVybiBhIERvY3VtZW50IG9iamVjdC4KLQkgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHByb2JsZW0gcGFyc2luZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgcGFyc2VYTUwoU3RyaW5nIHRleHQsIGJvb2xlYW4gdmFsaWRhdGUpCi0JCQl0aHJvd3MgV1NJRXhjZXB0aW9uIHsKLQkJcmV0dXJuIHBhcnNlWE1MKG5ldyBTdHJpbmdSZWFkZXIodGV4dCksIHZhbGlkYXRlKTsKLQl9Ci0KLQkvKioKLQkgKiBQYXJzZSB0ZXh0IHN0cmluZyBhcyBhbiBYTUwgZG9jdW1lbnQgYW5kIHJldHVybiB0aGUgZG9jdW1lbnQgZWxlbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gdGV4dCBYTUwgZG9jdW1lbnQgdGV4dC4KLQkgKiBAcmV0dXJuIGEgRG9jdW1lbnQgb2JqZWN0LgotCSAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSBwYXJzaW5nIHRoZSBYTUwgZG9jdW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyBEb2N1bWVudCBwYXJzZVhNTChTdHJpbmcgdGV4dCkgdGhyb3dzIFdTSUV4Y2VwdGlvbiB7Ci0JCXJldHVybiBwYXJzZVhNTChuZXcgU3RyaW5nUmVhZGVyKHRleHQpKTsKLQl9Ci0KLQkvKioKLQkgKiBQYXJzZSB0aGUgWE1MIGRvY3VtZW50IGFuZCByZXR1cm4gdGhlIGRvY3VtZW50IGVsZW1lbnQuCi0JICogCi0JICogQHBhcmFtIHVyaSB0aGUgbG9jYXRpb24gb2YgdGhlIFhNTCBkb2N1bWVudC4KLQkgKiBAcmV0dXJuIGEgRG9jdW1lbnQgb2JqZWN0LgotCSAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSBwYXJzaW5nIHRoZSBYTUwgZG9jdW1lbnQuCi0JICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiBhbiBJL08gZXhjZXB0aW9uIG9mIHNvbWUgc29ydCBoYXMgb2NjdXJyZWQuCi0JICovCi0JcHVibGljIHN0YXRpYyBEb2N1bWVudCBwYXJzZVhNTERvY3VtZW50KFN0cmluZyB1cmkpIAotCXRocm93cyBXU0lFeGNlcHRpb24sIElPRXhjZXB0aW9uIAotCXsKLQkJcmV0dXJuIHBhcnNlWE1MRG9jdW1lbnQodXJpLCBudWxsKTsKLQl9Ci0KLQkvKioKLQkgKiBQYXJzZSB0aGUgWE1MIGRvY3VtZW50IGFuZCByZXR1cm4gdGhlIGRvY3VtZW50IGVsZW1lbnQuCi0JICogCi0JICogQHBhcmFtIHVyaSB0aGUgbG9jYXRpb24gb2YgdGhlIFhNTCBkb2N1bWVudC4KLQkgKiBAcGFyYW0gc2NoZW1hIGEgU3RyaW5nIGlkZW50aWZ5aW5nIHJlbGF0ZWQgc2NoZW1hIGRvY3VtZW50LgotCSAqIEByZXR1cm4gYSBEb2N1bWVudCBvYmplY3QuCi0JICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHBhcnNpbmcgdGhlIFhNTCBkb2N1bWVudC4KLQkgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIGFuIEkvTyBleGNlcHRpb24gb2Ygc29tZSBzb3J0IGhhcyBvY2N1cnJlZC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIERvY3VtZW50IHBhcnNlWE1MRG9jdW1lbnQoU3RyaW5nIHVyaSwgU3RyaW5nIHNjaGVtYSkKLQl0aHJvd3MgV1NJRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiAKLQl7Ci0JICAgICAgVVJMIHVybCA9IFN0cmluZ1V0aWxzLmdldFVSTChudWxsLCB1cmkpOwotCSAgICAgIElucHV0U3RyZWFtIGlucHV0U3RyZWFtID0gKElucHV0U3RyZWFtKXVybC5nZXRDb250ZW50KCk7Ci0JICAgICAgSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UgPSBuZXcgSW5wdXRTb3VyY2UoaW5wdXRTdHJlYW0pOwotCSAgICAgIGlucHV0U291cmNlLnNldFN5c3RlbUlkKHVybC50b1N0cmluZygpKTsKLQkgICAgICAKLQkgICAgICBpZiAoc2NoZW1hID09IG51bGwpCi0JICAgICAgCXJldHVybiBwYXJzZVhNTChpbnB1dFNvdXJjZSwgZmFsc2UpOwotCSAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBwYXJzZVhNTChpbnB1dFNvdXJjZSwgc2NoZW1hKTsKLQl9Ci0KLQkvKioKLQkgKiBQYXJzZXMgYW4gWE1MIGRvY3VtZW50IGZyb20gYSByZWFkZXIgYW5kIHJldHVybnMgdGhlIGRvY3VtZW50IG9iamVjdC4KLQkgKiAKLQkgKiBAcGFyYW0gdXJsIGEgU3RyaW5nIGxvY2F0aW5nIHRoZSBYTUwgZG9jdW1lbnQuCi0JICogQHBhcmFtIHNjaGVtYSBhIFN0cmluZyBpZGVudGlmeWluZyByZWxhdGVkIHNjaGVtYSBkb2N1bWVudC4KLQkgKiBAcGFyYW0gYmFzZVVSSSBhIGJhc2UgdXJsIHRvIGFzc2lzdCBpbiBsb2NhdGluZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqIEByZXR1cm4gRG9jdW1lbnQuCi0JICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHBhcnNpbmcgdGhlIFhNTCBkb2N1bWVudC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIERvY3VtZW50IHBhcnNlWE1MRG9jdW1lbnRVUkwoU3RyaW5nIHVybCwgU3RyaW5nIHNjaGVtYSwKLQkJCVN0cmluZyBiYXNlVVJJKSB0aHJvd3MgV1NJRXhjZXB0aW9uIHsKLQkJdHJ5Ci0JCXsKLQkJICBwYXJzZVhNTERvY3VtZW50VVJMKGNyZWF0ZVVSTCh1cmwsIGJhc2VVUkkpLCBzY2hlbWEpOwotCQl9Ci0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCQl7Ci0JCQl0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLQkJfQotCi0JCXJldHVybiBwYXJzZVhNTERvY3VtZW50VVJMKHVybCwgc2NoZW1hKTsKLQl9Ci0KLQkvKioKLQkgKiBQYXJzZXMgYW4gWE1MIGRvY3VtZW50IGZyb20gYSByZWFkZXIgYW5kIHJldHVybnMgdGhlIGRvY3VtZW50IG9iamVjdC4KLQkgKiAKLQkgKiBAcGFyYW0gdXJsIGEgVVJMIG9iamVjdCBpZGVudGlmeWluZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqIEBwYXJhbSBzY2hlbWEgYSBTdHJpbmcgaWRlbnRpZnlpbmcgcmVsYXRlZCBzY2hlbWEgZG9jdW1lbnQuCi0JICogQHJldHVybiBEb2N1bWVudC4KLQkgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHByb2JsZW0gcGFyc2luZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgcGFyc2VYTUxEb2N1bWVudFVSTChVUkwgdXJsLCBTdHJpbmcgc2NoZW1hKQotCQkJdGhyb3dzIFdTSUV4Y2VwdGlvbiB7Ci0JCXRyeQotCQl7Ci0JICAgICAgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gPSAoSW5wdXRTdHJlYW0pdXJsLmdldENvbnRlbnQoKTsKLQkgICAgICBJbnB1dFNvdXJjZSBpbnB1dFNvdXJjZSA9IG5ldyBJbnB1dFNvdXJjZShpbnB1dFN0cmVhbSk7Ci0JICAgICAgaW5wdXRTb3VyY2Uuc2V0U3lzdGVtSWQodXJsLnRvU3RyaW5nKCkpOwotCi0JCQlEb2N1bWVudCBkb2MgPSBudWxsOwotCi0JCQlpZiAoc2NoZW1hID09IG51bGwpCi0JCQkJZG9jID0gcGFyc2VYTUwoaW5wdXRTb3VyY2UpOwotCQkJZWxzZQotCQkJCWRvYyA9IHBhcnNlWE1MKGlucHV0U291cmNlLCBzY2hlbWEpOwotCi0JCQlpbnB1dFN0cmVhbS5jbG9zZSgpOwotCQkJcmV0dXJuIGRvYzsKLQkJfQotCi0JCWNhdGNoIChXU0lFeGNlcHRpb24gZSkKLQkJewotCQkJdGhyb3cgZTsKLQkJfQotCi0JCWNhdGNoIChUaHJvd2FibGUgdCkKLQkJewotCQkJdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbih0LmdldE1lc3NhZ2UoKSk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBQYXJzZXMgYW4gWE1MIGRvY3VtZW50IGZyb20gYSByZWFkZXIgYW5kIHJldHVybnMgdGhlIGRvY3VtZW50IG9iamVjdC4KLQkgKiAKLQkgKiBAcGFyYW0gdXJsU3RyaW5nIGEgU3RyaW5nIGxvY2F0aW5nIHRoZSBYTUwgZG9jdW1lbnQuCi0JICogQHBhcmFtIGJhc2VVUkkgYSBiYXNlIHVybCB0byBhc3Npc3QgaW4gbG9jYXRpbmcgdGhlIFhNTCBkb2N1bWVudC4KLQkgKiBAcmV0dXJuIERvY3VtZW50IG9iamVjdC4KLQkgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHByb2JsZW0gcGFyc2luZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgcGFyc2VYTUxEb2N1bWVudFVSTChTdHJpbmcgdXJsU3RyaW5nLCBTdHJpbmcgYmFzZVVSSSkKLQkJCXRocm93cyBXU0lFeGNlcHRpb24gewotCQlEb2N1bWVudCBkb2N1bWVudCA9IG51bGw7Ci0KLQkJdHJ5Ci0JCXsKLQkJCVVSTCB1cmwgPSBjcmVhdGVVUkwodXJsU3RyaW5nLCBiYXNlVVJJKTsKLQotCQkJZG9jdW1lbnQgPSBwYXJzZVhNTERvY3VtZW50VVJMKHVybCk7Ci0JCX0KLQotCQljYXRjaCAoV1NJRXhjZXB0aW9uIHdlKQotCQl7Ci0JCQl0aHJvdyB3ZTsKLQkJfQotCi0JCWNhdGNoIChFeGNlcHRpb24gZSkKLQkJewotCQkJdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0JCX0KLQotCQlyZXR1cm4gZG9jdW1lbnQ7Ci0JfQotCi0JLyoqCi0JICogUGFyc2VzIGFuIFhNTCBkb2N1bWVudCBmcm9tIGEgcmVhZGVyIGFuZCByZXR1cm5zIHRoZSBkb2N1bWVudCBvYmplY3QuCi0JICogCi0JICogQHBhcmFtIHVybCBhIFVSTCBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIFhNTCBkb2N1bWVudC4KLQkgKiBAcmV0dXJuIERvY3VtZW50LgotCSAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSBwYXJzaW5nIHRoZSBYTUwgZG9jdW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyBEb2N1bWVudCBwYXJzZVhNTERvY3VtZW50VVJMKFVSTCB1cmwpIHRocm93cyBXU0lFeGNlcHRpb24gewotCQlEb2N1bWVudCBkb2N1bWVudCA9IG51bGw7Ci0KLQkJdHJ5Ci0JCXsKLQkJCVJlYWRlciByZWFkZXIgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIodXJsLm9wZW5TdHJlYW0oKSk7Ci0JCQlJbnB1dFNvdXJjZSBzb3VyY2UgPSBuZXcgSW5wdXRTb3VyY2UocmVhZGVyKTsKLQkJCXNvdXJjZS5zZXRTeXN0ZW1JZCh1cmwudG9TdHJpbmcoKSk7Ci0JCQlkb2N1bWVudCA9IHBhcnNlWE1MKHNvdXJjZSk7Ci0KLQkJCXJlYWRlci5jbG9zZSgpOwotCQl9Ci0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCQl7Ci0JCQl0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLQkJfQotCi0JCXJldHVybiBkb2N1bWVudDsKLQl9Ci0KLQlwcml2YXRlIHN0YXRpYyBEb2N1bWVudEJ1aWxkZXIgYnVpbGRlciA9IG51bGw7Ci0KLQkvKioKLQkgKiBQYXJzZSBhbiBYTUwgZG9jdW1lbnQgZnJvbSBhIHJlYWRlciBhbmQgcmV0dXJuIHRoZSBkb2N1bWVudCBvYmplY3QuCi0JICogCi0JICogQHBhcmFtIHJlYWRlciBhIFJlYWRlciBvYmplY3QuCi0JICogQHBhcmFtIHZhbGlkYXRlIHRydWUgaWYgdGhlIGRvY3VtZW50IHdpbGwgYmUgdmFsaWRhdGUsIGZhbHNlIG90aGVyd2lzZQotCSAqIEByZXR1cm4gYSBEb2N1bWVudCBvYmplY3QuCi0JICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHBhcnNpbmcgdGhlIFhNTCBkb2N1bWVudC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIERvY3VtZW50IHBhcnNlWE1MKElucHV0U291cmNlIHNvdXJjZSwgYm9vbGVhbiB2YWxpZGF0ZSkKLQkJCXRocm93cyBXU0lFeGNlcHRpb24gewotCQlEb2N1bWVudCBkb2MgPSBudWxsOwotCQlDbGFzc0xvYWRlciBjdXJyZW50TG9hZGVyID0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKTsgICAKLQkJdHJ5Ci0JCXsKLSAgICAJICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihYTUxVdGlscy5jbGFzcy5nZXRDbGFzc0xvYWRlcigpKTsgICAKLQotICAgIAkgIGlmIChidWlsZGVyID09IG51bGwpCi0gICAgCSAgewotICAJCSAgICAvLyBHZXQgdGhlIGRvY3VtZW50IGZhY3RvcnkKLQkJICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZmFjdG9yeSA9IG5ldyBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmpheHAuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeUltcGwoKTsKLQotCQkgICAgLy8gU2V0IG5hbWVzcGFjZSBhd2FyZSwgYnV0IGZvciBub3cgZG8gbm90IHZhbGlkYXRlCi0JCSAgICBmYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOwotCQkgICAgZmFjdG9yeS5zZXRJZ25vcmluZ0VsZW1lbnRDb250ZW50V2hpdGVzcGFjZSh0cnVlKTsKLQotCQkgICAgLy8gQUREOiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gdHJ1ZSB3aGVuIHdlIGhhdmUgYWNjZXNzIHRvIHRoZSBzY2hlbWEKLQkJICAgIC8vIGRvY3VtZW50Ci0JCSAgICBmYWN0b3J5LnNldFZhbGlkYXRpbmcoZmFsc2UpOwotCi0JCSAgICBidWlsZGVyID0gZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKLSAgICAJICB9Ci0JCSAgLy8gUGFyc2UgdGhlIGRvY3VtZW50Ci0JCSAgZG9jID0gYnVpbGRlci5wYXJzZShzb3VyY2UpOwotCQkgIC8vIHdvcmthcm91bmQgZm9yIGNvbXBhdGliaWxpdHkgWGVyY2VzIDIuMi4xIHdpdGggWGVyY2VzIDIuNi4yLAotCQkgIC8vIFhlcmNlcyAyLjYuMiBzdXBwb3J0ZWQgWE1MIDEuMSBidXQgV1NJLXRvb2wgYW5kIFhlcmNlcyAyLjIuMQotCQkgIC8vIHN1cHBvcnRlZCBvbmx5IFhNTCAxLjAKLQkJICBpZiAoZG9jIGluc3RhbmNlb2Ygb3JnLmFwYWNoZS54ZXJjZXMuZG9tLkRvY3VtZW50SW1wbCkKLQkJICB7Ci0JCQlpZiAoKChvcmcuYXBhY2hlLnhlcmNlcy5kb20uRG9jdW1lbnRJbXBsKSBkb2MpLmdldFhtbFZlcnNpb24oKS5lcXVhbHMoCi0JCQkJCQkiMS4xIikpCi0JCQl7Ci0JCQkJdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigiRmF0YWwgRXJyb3I6IFhNTCB2ZXJzaW9uICZxdW90OzEuMSZxdW90OyAiCi0JCQkJCQkrICJpcyBub3Qgc3VwcG9ydGVkLCBvbmx5IFhNTCAxLjAgaXMgc3VwcG9ydGVkLiIpOwotCQkJfQotCQkgIH0KLQkJfQotCQljYXRjaCAoRXhjZXB0aW9uIGUpCi0JCXsKLQkJCXRocm93IG5ldyBXU0lFeGNlcHRpb24oIkNvdWxkIG5vdCBwYXJzZSBYTUwgZG9jdW1lbnQuIiwgZSk7Ci0JCX0KLQkgICAgZmluYWxseQotCSAgICB7IAotCSAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKGN1cnJlbnRMb2FkZXIpOwotCSAgICB9ICAgIAotCi0JCS8vIFJldHVybiBkb2N1bWVudAotCQlyZXR1cm4gZG9jOwotCX0KLQotCS8qKgotCSAqIFBhcnNlIGFuIFhNTCBkb2N1bWVudCBmcm9tIGEgcmVhZGVyIGFuZCByZXR1cm4gdGhlIGRvY3VtZW50IG9iamVjdC4KLQkgKiAKLQkgKiBAcGFyYW0gcmVhZGVyIGEgUmVhZGVyIG9iamVjdC4KLQkgKiBAcGFyYW0gdmFsaWRhdGUgdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgd2lsbCBiZSB2YWxpZGF0ZSwgZmFsc2Ugb3RoZXJ3aXNlCi0JICogQHJldHVybiBhIERvY3VtZW50IG9iamVjdC4KLQkgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHByb2JsZW0gcGFyc2luZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgcGFyc2VYTUwoUmVhZGVyIHJlYWRlciwgYm9vbGVhbiB2YWxpZGF0ZSkKLQkJCXRocm93cyBXU0lFeGNlcHRpb24gewotCQlEb2N1bWVudCBkb2MgPSBudWxsOwotCQlDbGFzc0xvYWRlciBjdXJyZW50TG9hZGVyID0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKTsgICAKLQkJdHJ5Ci0JCXsKLQkJICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihYTUxVdGlscy5jbGFzcy5nZXRDbGFzc0xvYWRlcigpKTsgICAKLQkJCi0JCSAgLy8gQ3JlYXRlIGlucHV0IHNvdXJjZQotCQkgIElucHV0U291cmNlIGlucHV0U291cmNlID0gbmV3IElucHV0U291cmNlKHJlYWRlcik7Ci0KLQkJICBpZiAoYnVpbGRlciA9PSBudWxsKQotCQkgIHsKLQkJICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgZmFjdG9yeQotCQkgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBmYWN0b3J5ID0gbmV3IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuamF4cC5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5SW1wbCgpOwotCi0JCSAgICAvLyBTZXQgbmFtZXNwYWNlIGF3YXJlLCBidXQgZm9yIG5vdyBkbyBub3QgdmFsaWRhdGUKLQkJICAgIGZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7Ci0JCSAgICBmYWN0b3J5LnNldElnbm9yaW5nRWxlbWVudENvbnRlbnRXaGl0ZXNwYWNlKHRydWUpOwotCi0JCSAgICAvLyBBREQ6IFRoaXMgc2hvdWxkIGJlIHNldCB0byB0cnVlIHdoZW4gd2UgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNjaGVtYQotCQkgICAgLy8gZG9jdW1lbnQKLQkJICAgIGZhY3Rvcnkuc2V0VmFsaWRhdGluZyhmYWxzZSk7Ci0KLQkJICAgIGJ1aWxkZXIgPSBmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOwotCQkgIH0KLQkJICAvLyBQYXJzZSB0aGUgZG9jdW1lbnQKLQkJICBkb2MgPSBidWlsZGVyLnBhcnNlKGlucHV0U291cmNlKTsKLQkgICAJICAvLyB3b3JrYXJvdW5kIGZvciBjb21wYXRpYmlsaXR5IFhlcmNlcyAyLjIuMSB3aXRoIFhlcmNlcyAyLjYuMiwKLQkJICAvLyBYZXJjZXMgMi42LjIgc3VwcG9ydGVkIFhNTCAxLjEgYnV0IFdTSS10b29sIGFuZCBYZXJjZXMgMi4yLjEKLQkJICAvLyBzdXBwb3J0ZWQgb25seSBYTUwgMS4wCi0JCSAgaWYgKGRvYyBpbnN0YW5jZW9mIG9yZy5hcGFjaGUueGVyY2VzLmRvbS5Eb2N1bWVudEltcGwpCi0JCSAgewotCQkJaWYgKCgob3JnLmFwYWNoZS54ZXJjZXMuZG9tLkRvY3VtZW50SW1wbCkgZG9jKS5nZXRYbWxWZXJzaW9uKCkuZXF1YWxzKAotCQkJCQkJIjEuMSIpKQotCQkJewotCQkJICB0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJGYXRhbCBFcnJvcjogWE1MIHZlcnNpb24gJnF1b3Q7MS4xJnF1b3Q7ICIKLQkJCQkJCQkrICJpcyBub3Qgc3VwcG9ydGVkLCBvbmx5IFhNTCAxLjAgaXMgc3VwcG9ydGVkLiIpOwotCQkJfQotCSAgICAgIH0KLQkJfQotCQljYXRjaCAoRXhjZXB0aW9uIGUpCi0JCXsKLQkJCXRocm93IG5ldyBXU0lFeGNlcHRpb24oIkNvdWxkIG5vdCBwYXJzZSBYTUwgZG9jdW1lbnQuIiwgZSk7Ci0JCX0KLQkgICAgZmluYWxseQotCSAgICB7IAotCSAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKGN1cnJlbnRMb2FkZXIpOwotCSAgICB9ICAgIAotCi0JCS8vIFJldHVybiBkb2N1bWVudAotCQlyZXR1cm4gZG9jOwotCX0KLQotCS8qKgotCSAqIFBhcnNlIGFuIFhNTCBkb2N1bWVudCBmcm9tIGEgaW5wdXQgc291cmNlIGFuZCByZXR1cm4gdGhlIGRvY3VtZW50IG9iamVjdC4KLQkgKiAKLQkgKiBAcGFyYW0gc291cmNlIGEgSW5wdXRTb3VyY2Ugb2JqZWN0LgotCSAqIEByZXR1cm4gYSBEb2N1bWVudCBvYmplY3QuCi0JICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHBhcnNpbmcgdGhlIFhNTCBkb2N1bWVudC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIERvY3VtZW50IHBhcnNlWE1MKFJlYWRlciByZWFkZXIpIHRocm93cyBXU0lFeGNlcHRpb24gewotCQlyZXR1cm4gcGFyc2VYTUwocmVhZGVyLCBmYWxzZSk7Ci0JfQotCi0JLyoqCi0JICogUGFyc2UgYW4gWE1MIGRvY3VtZW50IGZyb20gYSBpbnB1dCBzb3VyY2UgYW5kIHJldHVybiB0aGUgZG9jdW1lbnQgb2JqZWN0LgotCSAqIAotCSAqIEBwYXJhbSBzb3VyY2UgYSBJbnB1dFNvdXJjZSBvYmplY3QuCi0JICogQHJldHVybiBhIERvY3VtZW50IG9iamVjdC4KLQkgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHByb2JsZW0gcGFyc2luZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgcGFyc2VYTUwoSW5wdXRTb3VyY2Ugc291cmNlKSB0aHJvd3MgV1NJRXhjZXB0aW9uIHsKLQkJcmV0dXJuIHBhcnNlWE1MKHNvdXJjZSwgZmFsc2UpOwotCX0KLQotCS8qKgotCSAqIFBhcnNlIHRleHQgc3RyaW5nIGFzIGFuIFhNTCBkb2N1bWVudCBhbmQgcmV0dXJuIHRoZSBkb2N1bWVudCBlbGVtZW50LgotCSAqIAotCSAqIEBwYXJhbSB0ZXh0IFhNTCBkb2N1bWVudCB0ZXh0LgotCSAqIEBwYXJhbSBzY2hlbWEgYSBTdHJpbmcgaWRlbnRpZnlpbmcgcmVsYXRlZCBzY2hlbWEgZG9jdW1lbnQuCi0JICogQHJldHVybiBhIERvY3VtZW50IG9iamVjdC4KLQkgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHByb2JsZW0gcGFyc2luZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgcGFyc2VYTUwoU3RyaW5nIHRleHQsIFN0cmluZyBzY2hlbWEpCi0JCQl0aHJvd3MgV1NJRXhjZXB0aW9uIHsKLQkJcmV0dXJuIHBhcnNlWE1MKG5ldyBTdHJpbmdSZWFkZXIodGV4dCksIHNjaGVtYSk7Ci0JfQotCi0JLyoqCi0JICogUGFyc2UgdGV4dCBzdHJpbmcgYXMgYW4gWE1MIGRvY3VtZW50IGFuZCByZXR1cm4gdGhlIGRvY3VtZW50IGVsZW1lbnQuCi0JICogCi0JICogQHBhcmFtIHRleHQgWE1MIGRvY3VtZW50IHRleHQuCi0JICogQHBhcmFtIHNjaGVtYXMgYSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgc2NoZW1hIGRvY3VtZW50cy4KLQkgKiBAcmV0dXJuIGEgRG9jdW1lbnQgb2JqZWN0LgotCSAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSBwYXJzaW5nIHRoZSBYTUwgZG9jdW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyBEb2N1bWVudCBwYXJzZVhNTChTdHJpbmcgdGV4dCwgQ29sbGVjdGlvbiBzY2hlbWFzKQotCQkJdGhyb3dzIFdTSUV4Y2VwdGlvbiB7Ci0JCXJldHVybiBwYXJzZVhNTChuZXcgU3RyaW5nUmVhZGVyKHRleHQpLCBzY2hlbWFzKTsKLQl9Ci0KLQotCS8qKgotCSAqIFBhcnNlIHRoZSBYTUwgZG9jdW1lbnQgYW5kIHJldHVybiB0aGUgZG9jdW1lbnQgZWxlbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gdGV4dCBYTUwgZG9jdW1lbnQgdGV4dC4KLQkgKiBAcGFyYW0gc2NoZW1hU3RyaW5nIGEgU3RyaW5nUmVhZGVyIG9iamVjdC4KLQkgKiBAcmV0dXJuIGEgRG9jdW1lbnQgb2JqZWN0LgotCSAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSBwYXJzaW5nIHRoZSBYTUwgZG9jdW1lbnQuCi0JICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiBhbiBJL08gZXhjZXB0aW9uIG9mIHNvbWUgc29ydCBoYXMgb2NjdXJyZWQuCi0JICovCi0JcHVibGljIHN0YXRpYyBEb2N1bWVudCBwYXJzZVhNTChTdHJpbmcgdGV4dCwgU3RyaW5nUmVhZGVyIHNjaGVtYVN0cmluZykKLQkJCXRocm93cyBXU0lFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsKLQkJcmV0dXJuIHBhcnNlWE1MKG5ldyBTdHJpbmdSZWFkZXIodGV4dCksIHNjaGVtYVN0cmluZyk7Ci0JfQotCi0JLyoqCi0JICogUGFyc2UgdGhlIFhNTCBkb2N1bWVudCBhbmQgcmV0dXJuIHRoZSBkb2N1bWVudCBlbGVtZW50LgotCSAqIAotCSAqIEBwYXJhbSByZWFkZXIgYSBSZWFkZXIgb2JqZWN0LgotCSAqIEBwYXJhbSBzY2hlbWEgYSBTdHJpbmcgaWRlbnRpZnlpbmcgcmVsYXRlZCBzY2hlbWEgZG9jdW1lbnQuCi0JICogQHJldHVybiBhIERvY3VtZW50IG9iamVjdC4KLQkgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHByb2JsZW0gcGFyc2luZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgcGFyc2VYTUwoUmVhZGVyIHJlYWRlciwgU3RyaW5nIHNjaGVtYSkKLQkJCXRocm93cyBXU0lFeGNlcHRpb24gewotCQlEb2N1bWVudCBkb2MgPSBudWxsOwotCQlDbGFzc0xvYWRlciBjdXJyZW50TG9hZGVyID0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKTsgICAKLQkJdHJ5Ci0JCXsKLSAgICAJICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihYTUxVdGlscy5jbGFzcy5nZXRDbGFzc0xvYWRlcigpKTsgICAKLQkJICAvLyBDcmVhdGUgaW5wdXQgc291cmNlCi0JCSAgSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UgPSBuZXcgSW5wdXRTb3VyY2UocmVhZGVyKTsKLQotCQkgIC8vIEdldCB0aGUgZG9jdW1lbnQgZmFjdG9yeQotCQkgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZmFjdG9yeSA9IG5ldyBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmpheHAuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeUltcGwoKTsKLQotCQkgIC8vIFNldCBuYW1lc3BhY2UgYXdhcmUsIGJ1dCBmb3Igbm93IGRvIG5vdCB2YWxpZGF0ZQotCQkgIGZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7Ci0JCSAgZmFjdG9yeS5zZXRJZ25vcmluZ0VsZW1lbnRDb250ZW50V2hpdGVzcGFjZSh0cnVlKTsKLQotCQkgIHRyeQotCQkgIHsKLQkJICAgIGZhY3Rvcnkuc2V0VmFsaWRhdGluZyhmYWxzZSk7Ci0JCQlmYWN0b3J5LnNldEF0dHJpYnV0ZShKQVhQX1NDSEVNQV9MQU5HVUFHRSwgVzNDX1hNTF9TQ0hFTUEpOwotIAkJICB9Ci0gICAJCSAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKQotCQkgIHsKLQkJCVN0cmluZyBlcnJNZXNzYWdlID0gIkVycm9yOiBKQVhQIERvY3VtZW50QnVpbGRlckZhY3RvcnkgYXR0cmlidXRlIG5vdCByZWNvZ25pemVkOiAiCi0JCQkJCSsgSkFYUF9TQ0hFTUFfTEFOR1VBR0UKLQkJCQkJKyAiXG4iCi0JCQkJCSsgIkNoZWNrIHRvIHNlZSBpZiBwYXJzZXIgY29uZm9ybXMgdG8gSkFYUCAxLjIgc3BlYy4iOwotCQkJdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbihlcnJNZXNzYWdlLCBlKTsKLQkJICB9Ci0JCSAgZmFjdG9yeS5zZXRBdHRyaWJ1dGUoSkFYUF9TQ0hFTUFfU09VUkNFLCBuZXcgSW5wdXRTb3VyY2Uoc2NoZW1hKSk7Ci0KLQkJICAvLyBQYXJzZSB0aGUgZG9jdW1lbnQKLQkJICBEb2N1bWVudEJ1aWxkZXIgYnVpbGRlciA9IGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7Ci0JCSAgYnVpbGRlci5zZXRFcnJvckhhbmRsZXIobmV3IEVyckhhbmRsZXIoKSk7Ci0JCSAgZG9jID0gYnVpbGRlci5wYXJzZShpbnB1dFNvdXJjZSk7Ci0KLQkJICAvLyB3b3JrYXJvdW5kIGZvciBjb21wYXRpYmlsaXR5IFhlcmNlcyAyLjIuMSB3aXRoIFhlcmNlcyAyLjYuMiwKLQkJICAvLyBYZXJjZXMgMi42LjIgc3VwcG9ydGVkIFhNTCAxLjEgYnV0IFdTSS10b29sIGFuZCBYZXJjZXMgMi4yLjEKLQkJICAvLyBzdXBwb3J0ZWQgb25seSBYTUwgMS4wCi0JCSAgaWYgKGRvYyBpbnN0YW5jZW9mIG9yZy5hcGFjaGUueGVyY2VzLmRvbS5Eb2N1bWVudEltcGwpCi0JCSAgewotCQkJaWYgKCgob3JnLmFwYWNoZS54ZXJjZXMuZG9tLkRvY3VtZW50SW1wbCkgZG9jKS5nZXRYbWxWZXJzaW9uKCkuZXF1YWxzKCIxLjEiKSkKLQkJCXsKLQkJIAkgIHRocm93IG5ldyBXU0lFeGNlcHRpb24oIkZhdGFsIEVycm9yOiBYTUwgdmVyc2lvbiAmcXVvdDsxLjEmcXVvdDsgIgotCQkJCQkJCSsgImlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgWE1MIDEuMCBpcyBzdXBwb3J0ZWQuIik7Ci0JCQl9Ci0JCSAgfQotCSAgICB9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSkKLQkJewotCQkJdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigiQ291bGQgbm90IHBhcnNlIFhNTCBkb2N1bWVudC4iLCBlKTsKLQkJfQotCSAgICBmaW5hbGx5Ci0JICAgIHsgCi0JICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5zZXRDb250ZXh0Q2xhc3NMb2FkZXIoY3VycmVudExvYWRlcik7Ci0JICAgIH0gICAgCi0JCS8vIFJldHVybiBkb2N1bWVudAotICAgIAlyZXR1cm4gZG9jOwotCX0KLQotCS8qKgotCSAqIFBhcnNlIHRoZSBYTUwgZG9jdW1lbnQgYW5kIHJldHVybiB0aGUgZG9jdW1lbnQgZWxlbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gcmVhZGVyIGEgUmVhZGVyIG9iamVjdC4KLQkgKiBAcGFyYW0gc2NoZW1hIGEgU3RyaW5nIGlkZW50aWZ5aW5nIHJlbGF0ZWQgc2NoZW1hIGRvY3VtZW50LgotCSAqIEByZXR1cm4gYSBEb2N1bWVudCBvYmplY3QuCi0JICogQHRocm93cyBXU0lFeGNlcHRpb24gaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHBhcnNpbmcgdGhlIFhNTCBkb2N1bWVudC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIERvY3VtZW50IHBhcnNlWE1MKElucHV0U291cmNlIHNvdXJjZSwgU3RyaW5nIHNjaGVtYSkKLQkJCXRocm93cyBXU0lFeGNlcHRpb24gewotCQlEb2N1bWVudCBkb2MgPSBudWxsOwotCQlDbGFzc0xvYWRlciBjdXJyZW50TG9hZGVyID0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKTsgICAKLQkJdHJ5Ci0JCXsKLSAgICAJICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihYTUxVdGlscy5jbGFzcy5nZXRDbGFzc0xvYWRlcigpKTsgICAKLSAJCSAgLy8gR2V0IHRoZSBkb2N1bWVudCBmYWN0b3J5Ci0JCSAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBmYWN0b3J5ID0gbmV3IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuamF4cC5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5SW1wbCgpOwotCi0JCSAgLy8gU2V0IG5hbWVzcGFjZSBhd2FyZSwgYnV0IGZvciBub3cgZG8gbm90IHZhbGlkYXRlCi0JCSAgZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKLQkJICBmYWN0b3J5LnNldElnbm9yaW5nRWxlbWVudENvbnRlbnRXaGl0ZXNwYWNlKHRydWUpOwotCi0JCSAgZmFjdG9yeS5zZXRWYWxpZGF0aW5nKGZhbHNlKTsKLQkJICB0cnkKLQkJICB7Ci0JCQlmYWN0b3J5LnNldEF0dHJpYnV0ZShKQVhQX1NDSEVNQV9MQU5HVUFHRSwgVzNDX1hNTF9TQ0hFTUEpOwotCQkgIH0KLQotCQkgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkKLQkJICB7Ci0JCQlTdHJpbmcgZXJyTWVzc2FnZSA9ICJFcnJvcjogSkFYUCBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGF0dHJpYnV0ZSBub3QgcmVjb2duaXplZDogIgotCQkJCQkrIEpBWFBfU0NIRU1BX0xBTkdVQUdFCi0JCQkJCSsgIlxuIgotCQkJCQkrICJDaGVjayB0byBzZWUgaWYgcGFyc2VyIGNvbmZvcm1zIHRvIEpBWFAgMS4yIHNwZWMuIjsKLQkJCXRocm93IG5ldyBXU0lFeGNlcHRpb24oZXJyTWVzc2FnZSwgZSk7Ci0JCSAgfQotCQkgIGZhY3Rvcnkuc2V0QXR0cmlidXRlKEpBWFBfU0NIRU1BX1NPVVJDRSwgbmV3IElucHV0U291cmNlKHNjaGVtYSkpOwotCi0gICAgICAgICAgLy8gUGFyc2UgdGhlIGRvY3VtZW50Ci0JCSAgRG9jdW1lbnRCdWlsZGVyIGJ1aWxkZXIgPSBmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOwotCQkgIGJ1aWxkZXIuc2V0RXJyb3JIYW5kbGVyKG5ldyBFcnJIYW5kbGVyKCkpOwotCQkgIGRvYyA9IGJ1aWxkZXIucGFyc2Uoc291cmNlKTsKLQotCQkgIC8vIHdvcmthcm91bmQgZm9yIGNvbXBhdGliaWxpdHkgWGVyY2VzIDIuMi4xIHdpdGggWGVyY2VzIDIuNi4yLAotCQkgIC8vIFhlcmNlcyAyLjYuMiBzdXBwb3J0ZWQgWE1MIDEuMSBidXQgV1NJLXRvb2wgYW5kIFhlcmNlcyAyLjIuMQotCQkgIC8vIHN1cHBvcnRlZCBvbmx5IFhNTCAxLjAKLQkJICBpZiAoZG9jIGluc3RhbmNlb2Ygb3JnLmFwYWNoZS54ZXJjZXMuZG9tLkRvY3VtZW50SW1wbCkKLQkJICB7Ci0JCQlpZiAoKChvcmcuYXBhY2hlLnhlcmNlcy5kb20uRG9jdW1lbnRJbXBsKSBkb2MpLmdldFhtbFZlcnNpb24oKS5lcXVhbHMoCi0JCQkJCQkiMS4xIikpCi0JCQl7Ci0JCQkJdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbigiRmF0YWwgRXJyb3I6IFhNTCB2ZXJzaW9uICZxdW90OzEuMSZxdW90OyAiCi0JCQkJCQkrICJpcyBub3Qgc3VwcG9ydGVkLCBvbmx5IFhNTCAxLjAgaXMgc3VwcG9ydGVkLiIpOwotCQkJfQotCQkgIH0KLQkJfQotCQljYXRjaCAoRXhjZXB0aW9uIGUpCi0JCXsKLQkJCXRocm93IG5ldyBXU0lFeGNlcHRpb24oIkNvdWxkIG5vdCBwYXJzZSBYTUwgZG9jdW1lbnQuIiwgZSk7Ci0JCX0KLQkgICAgZmluYWxseQotCSAgICB7IAotCSAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKGN1cnJlbnRMb2FkZXIpOwotCSAgICB9ICAgIAotCi0JCS8vIFJldHVybiBkb2N1bWVudAotCQlyZXR1cm4gZG9jOwotCi0JfQotCi0JLyoqCi0JICogUGFyc2UgdGhlIFhNTCBkb2N1bWVudCBhbmQgcmV0dXJuIHRoZSBkb2N1bWVudCBlbGVtZW50LgotCSAqIAotCSAqIEBwYXJhbSBmaWxlbmFtZSBhIFJlYWRlciBvYmplY3QuCi0JICogQHBhcmFtIHNjaGVtYVN0cmluZyBhIFN0cmluZ1JlYWRlciBvYmplY3QuCi0JICogQHJldHVybiBhIERvY3VtZW50IG9iamVjdC4KLQkgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHByb2JsZW0gcGFyc2luZyB0aGUgWE1MIGRvY3VtZW50LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgcGFyc2VYTUwoUmVhZGVyIGZpbGVuYW1lLCBTdHJpbmdSZWFkZXIgc2NoZW1hU3RyaW5nKQotCQkJdGhyb3dzIFdTSUV4Y2VwdGlvbiB7Ci0KLQkJRG9jdW1lbnQgZG9jID0gbnVsbDsKLQkJQ2xhc3NMb2FkZXIgY3VycmVudExvYWRlciA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCk7ICAgCi0JCXRyeQotCQl7Ci0gICAgCSAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5zZXRDb250ZXh0Q2xhc3NMb2FkZXIoWE1MVXRpbHMuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKSk7ICAgCi0KLQkJICAvLyBDcmVhdGUgaW5wdXQgc291cmNlCi0JCSAgSW5wdXRTb3VyY2UgaW5wdXRTb3VyY2UgPSBuZXcgSW5wdXRTb3VyY2UoZmlsZW5hbWUpOwotCi0JCSAgLy8gR2V0IHRoZSBkb2N1bWVudCBmYWN0b3J5Ci0JCSAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBmYWN0b3J5ID0gbmV3IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuamF4cC5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5SW1wbCgpOwotCi0JCSAgLy8gU2V0IG5hbWVzcGFjZSBhd2FyZSwgYnV0IGZvciBub3cgZG8gbm90IHZhbGlkYXRlCi0JCSAgZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKLQkJICBmYWN0b3J5LnNldElnbm9yaW5nRWxlbWVudENvbnRlbnRXaGl0ZXNwYWNlKHRydWUpOwotCi0JCSAgZmFjdG9yeS5zZXRWYWxpZGF0aW5nKGZhbHNlKTsKLQkJICB0cnkKLQkJICB7Ci0JCQlmYWN0b3J5LnNldEF0dHJpYnV0ZShKQVhQX1NDSEVNQV9MQU5HVUFHRSwgVzNDX1hNTF9TQ0hFTUEpOwotCQkgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKQotCQkgIHsKLQkJCVN0cmluZyBlcnJNZXNzYWdlID0gIkVycm9yOiBKQVhQIERvY3VtZW50QnVpbGRlckZhY3RvcnkgYXR0cmlidXRlIG5vdCByZWNvZ25pemVkOiAiCi0JCQkJCSsgSkFYUF9TQ0hFTUFfTEFOR1VBR0UKLQkJCQkJKyAiXG4iCi0JCQkJCSsgIkNoZWNrIHRvIHNlZSBpZiBwYXJzZXIgY29uZm9ybXMgdG8gSkFYUCAxLjIgc3BlYy4iOwotCQkJdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbihlcnJNZXNzYWdlLCBlKTsKLQkJICB9Ci0JCSAgZmFjdG9yeS5zZXRBdHRyaWJ1dGUoSkFYUF9TQ0hFTUFfU09VUkNFLCBuZXcgSW5wdXRTb3VyY2Uoc2NoZW1hU3RyaW5nKSk7Ci0KLQkJICAvLyBQYXJzZSB0aGUgZG9jdW1lbnQKLQkJICBEb2N1bWVudEJ1aWxkZXIgYnVpbGRlciA9IGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7Ci0JCSAgYnVpbGRlci5zZXRFcnJvckhhbmRsZXIobmV3IEVyckhhbmRsZXIoKSk7Ci0JCSAgZG9jID0gYnVpbGRlci5wYXJzZShpbnB1dFNvdXJjZSk7Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCQl7Ci0JCQl0aHJvdyBuZXcgV1NJRXhjZXB0aW9uKCJDb3VsZCBub3QgcGFyc2UgWE1MIGRvY3VtZW50LiIsIGUpOwotCQl9Ci0JICAgIGZpbmFsbHkKLQkgICAgeyAKLQkgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihjdXJyZW50TG9hZGVyKTsKLQkgICAgfSAgICAKLQotCQkvLyBSZXR1cm4gZG9jdW1lbnQKLQkJcmV0dXJuIGRvYzsKLQotCX0KLQotCS8qKgotCSAqIFBhcnNlIHRoZSBYTUwgZG9jdW1lbnQgYW5kIHJldHVybiB0aGUgZG9jdW1lbnQgZWxlbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gZmlsZW5hbWUgYSBSZWFkZXIgb2JqZWN0Ci0JICogQHBhcmFtIHNjaGVtYVN0cmluZ3MgYSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgc2NoZW1hIGRvY3VtZW50cy4KLQkgKiBAcmV0dXJuIGEgRG9jdW1lbnQgb2JqZWN0LgotCSAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSBwYXJzaW5nIHRoZSBYTUwgZG9jdW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyBEb2N1bWVudCBwYXJzZVhNTChSZWFkZXIgZmlsZW5hbWUsIENvbGxlY3Rpb24gc2NoZW1hU3RyaW5ncykKLQkJCXRocm93cyBXU0lFeGNlcHRpb24gewotCi0JCURvY3VtZW50IGRvYyA9IG51bGw7Ci0JCUNsYXNzTG9hZGVyIGN1cnJlbnRMb2FkZXIgPSBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpOyAgIAotCQl0cnkKLQkJewotICAgIAkgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKFhNTFV0aWxzLmNsYXNzLmdldENsYXNzTG9hZGVyKCkpOyAgIAotCi0JCSAgLy8gQ3JlYXRlIGlucHV0IHNvdXJjZQotCQkgIElucHV0U291cmNlIGlucHV0U291cmNlID0gbmV3IElucHV0U291cmNlKGZpbGVuYW1lKTsKLQotCQkgIC8vIEdldCB0aGUgZG9jdW1lbnQgZmFjdG9yeQotCQkgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZmFjdG9yeSA9IG5ldyBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmpheHAuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeUltcGwoKTsKLQotCQkgIC8vIFNldCBuYW1lc3BhY2UgYXdhcmUsIGJ1dCBmb3Igbm93IGRvIG5vdCB2YWxpZGF0ZQotCQkgIGZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7Ci0JCSAgZmFjdG9yeS5zZXRJZ25vcmluZ0VsZW1lbnRDb250ZW50V2hpdGVzcGFjZSh0cnVlKTsKLQotCQkgIGZhY3Rvcnkuc2V0VmFsaWRhdGluZyhmYWxzZSk7Ci0JCSAgdHJ5Ci0JCSAgewotCQkJZmFjdG9yeS5zZXRBdHRyaWJ1dGUoSkFYUF9TQ0hFTUFfTEFOR1VBR0UsIFczQ19YTUxfU0NIRU1BKTsKLQkJICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkKLQkJICB7Ci0JCSAgICBTdHJpbmcgZXJyTWVzc2FnZSA9ICJFcnJvcjogSkFYUCBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGF0dHJpYnV0ZSBub3QgcmVjb2duaXplZDogIgotCQkJCQkrIEpBWFBfU0NIRU1BX0xBTkdVQUdFCi0JCQkJCSsgIlxuIgotCQkJCQkrICJDaGVjayB0byBzZWUgaWYgcGFyc2VyIGNvbmZvcm1zIHRvIEpBWFAgMS4yIHNwZWMuIjsKLQkJCXRocm93IG5ldyBXU0lFeGNlcHRpb24oZXJyTWVzc2FnZSwgZSk7Ci0JCSAgfQotCQkgIC8vIGNvbnZlcnQgc2NoZW1hIHN0cmluZ3MgdG8gYXJyYXkgb2YgSW5wdXRTb3VyY2VzCi0JCSAgSXRlcmF0b3IgaSA9IHNjaGVtYVN0cmluZ3MuaXRlcmF0b3IoKTsKLQkJICBWZWN0b3IgcmVhZGVycyA9IG5ldyBWZWN0b3IoKTsKLQkJICB3aGlsZSAoaS5oYXNOZXh0KCkpCi0JCSAgewotCQkJU3RyaW5nIG5leHRTY2hlbWEgPSAoU3RyaW5nKSBpLm5leHQoKTsKLQkJCXJlYWRlcnMuYWRkKG5ldyBJbnB1dFNvdXJjZShuZXcgU3RyaW5nUmVhZGVyKG5leHRTY2hlbWEpKSk7Ci0JCSAgfQotCQkgIElucHV0U291cmNlW10gaW5wdXRTb3VyY2VzID0gKElucHV0U291cmNlW10pIHJlYWRlcnMKLQkJCQkudG9BcnJheShuZXcgSW5wdXRTb3VyY2VbXXt9KTsKLQkJICAvLyBwYXNzIGFuIGFycmF5IG9mIHNjaGVtYSBzdHJpbmdzIChlYWNoIG9mIHdoaWNoIGNvbnRhaW5zIGEgc2NoZW1hKQotCQkgIGZhY3Rvcnkuc2V0QXR0cmlidXRlKEpBWFBfU0NIRU1BX1NPVVJDRSwgaW5wdXRTb3VyY2VzKTsKLQotCQkgIC8vIFBhcnNlIHRoZSBkb2N1bWVudAotCQkgIERvY3VtZW50QnVpbGRlciBidWlsZGVyID0gZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKLQkJICBidWlsZGVyLnNldEVycm9ySGFuZGxlcihuZXcgRXJySGFuZGxlcigpKTsKLQkJICBkb2MgPSBidWlsZGVyLnBhcnNlKGlucHV0U291cmNlKTsKLQkJfQotCQljYXRjaCAoRXhjZXB0aW9uIGUpCi0JCXsKLQkJCXRocm93IG5ldyBXU0lFeGNlcHRpb24oIkNvdWxkIG5vdCBwYXJzZSBYTUwgZG9jdW1lbnQuIiwgZSk7Ci0JCX0KLQkgICAgZmluYWxseQotCSAgICB7IAotCSAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKGN1cnJlbnRMb2FkZXIpOwotCSAgICB9ICAgIAotCi0JCS8vIFJldHVybiBkb2N1bWVudAotCQlyZXR1cm4gZG9jOwotCi0JfQotCi0JLyoqCi0JICogR2V0IGF0dHJpYnV0ZSB2YWx1ZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGRlZmluZWQgZm9yIHRoZSBzcGVjaWZpZWQgZWxlbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gZWxlbWVudCBhbiBFbGVtZW50IG9iamVjdC4KLQkgKiBAcGFyYW0gYXR0ck5hbWUgYSBuYW1lIG9mIGFuIGF0dHJpYnV0ZQotCSAqIEByZXR1cm4gdGhlIGF0dHJpYnV0ZSB2YWx1ZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBdHRyaWJ1dGVWYWx1ZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBhdHRyTmFtZSkgewotCQlTdHJpbmcgYXR0clZhbHVlID0gbnVsbDsKLQkJQXR0ciBhdHRyID0gbnVsbDsKLQotCQkvLyBHZXQgdGhlIGF0dHJpYnV0ZSB1c2luZyBpdHMgbmFtZQotCQlpZiAoKGF0dHIgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoYXR0ck5hbWUpKSAhPSBudWxsKQotCQl7Ci0JCQlhdHRyVmFsdWUgPSBhdHRyLmdldFZhbHVlKCkudHJpbSgpOwotCQl9Ci0KLQkJLy8gUmV0dXJuIGF0dHJpYnV0ZSB2YWx1ZQotCQlyZXR1cm4gYXR0clZhbHVlOwotCX0KLQotCS8qKgotCSAqIEdldCBhdHRyaWJ1dGUgdmFsdWUuCi0JICogCi0JICogQHBhcmFtIGVsZW1lbnQgYW4gRWxlbWVudCBvYmplY3QuCi0JICogQHBhcmFtIGF0dHJOYW1lIGEgbmFtZSBvZiBhbiBhdHRyaWJ1dGUKLQkgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUuCi0JICogQHJldHVybiB0aGUgYXR0cmlidXRlIHZhbHVlIGlmIGZvdW5kLiBPdGhlcndpc2UgdGhlIHNwZWNpZmllZCBkZWZhdWx0Ci0JICogICAgICAgICB2YWx1ZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBdHRyaWJ1dGVWYWx1ZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBhdHRyTmFtZSwKLQkJCVN0cmluZyBkZWZhdWx0VmFsdWUpIHsKLQkJU3RyaW5nIHJldHVyblZhbHVlID0gZGVmYXVsdFZhbHVlOwotCQlTdHJpbmcgYXR0clZhbHVlID0gbnVsbDsKLQotCQlpZiAoKGF0dHJWYWx1ZSA9IGdldEF0dHJpYnV0ZVZhbHVlKGVsZW1lbnQsIGF0dHJOYW1lKSkgIT0gbnVsbCkKLQkJCXJldHVyblZhbHVlID0gYXR0clZhbHVlOwotCi0JCXJldHVybiByZXR1cm5WYWx1ZTsKLQl9Ci0KLQkvKioKLQkgKiBHZXQgYXR0cmlidXRlIHZhbHVlLgotCSAqIAotCSAqIEBwYXJhbSBlbGVtZW50IGFuIEVsZW1lbnQgb2JqZWN0LgotCSAqIEBwYXJhbSBuYW1lc3BhY2UgYSBuYW1lc3BhY2UuCi0JICogQHBhcmFtIGF0dHJOYW1lIGEgbmFtZSBvZiBhbiBhdHRyaWJ1dGUKLQkgKiBAcmV0dXJuIHRoZSBhdHRyaWJ1dGUgdmFsdWUuCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QXR0cmlidXRlVmFsdWVOUyhFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBuYW1lc3BhY2UsCi0JCQlTdHJpbmcgYXR0ck5hbWUpIHsKLQkJU3RyaW5nIGF0dHJWYWx1ZSA9IG51bGw7Ci0JCUF0dHIgYXR0ciA9IG51bGw7Ci0KLQkJLy8gR2V0IHRoZSBhdHRyaWJ1dGUgdXNpbmcgaXRzIG5hbWUKLQkJaWYgKChhdHRyID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlLCBhdHRyTmFtZSkpICE9IG51bGwpCi0JCXsKLQkJCWF0dHJWYWx1ZSA9IGF0dHIuZ2V0VmFsdWUoKS50cmltKCk7Ci0JCX0KLQotCQkvLyBSZXR1cm4gYXR0cmlidXRlIHZhbHVlCi0JCXJldHVybiBhdHRyVmFsdWU7Ci0JfQotCi0JLyoqCi0JICogR2V0IHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IGZyb20gdGhlIGlucHV0IGVsbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gZWxlbWVudCBhbiBFbGVtZW50IG9iamVjdC4KLQkgKiBAcmV0dXJuIHRoZSBmaXJzdGNoaWxkIGVsZW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyBFbGVtZW50IGdldEZpcnN0Q2hpbGQoRWxlbWVudCBlbGVtZW50KSB7Ci0JCS8vIFJldHVybiB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudAotCQlyZXR1cm4gZmluZE5leHRTaWJsaW5nKGVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpKTsKLQl9Ci0KLQkvKioKLQkgKiBHZXQgdGhlIG5leHQgc2libGluZyBlbGVtZW50LgotCSAqIAotCSAqIEBwYXJhbSBlbGVtZW50IC0gYW4gRWxlbWVudCBvYmplY3QuCi0JICogQHJldHVybiB0aGUgbmV4dCBzaWJsaW5nIGVsZW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyBFbGVtZW50IGdldE5leHRTaWJsaW5nKEVsZW1lbnQgZWxlbWVudCkgewotCQkvLyBSZXR1cm4gbmV4dCBzaWJsaW5nIGVsZW1lbnQKLQkJcmV0dXJuIGZpbmROZXh0U2libGluZyhlbGVtZW50LmdldE5leHRTaWJsaW5nKCkpOwotCX0KLQotCS8qKgotCSAqIEZpbmQgdGhlIG5leHQgc2libGluZyBlbGVtZW50LgotCSAqIAotCSAqIEBwYXJhbSBzdGFydE5vZGUgWE1MIHN0YXJ0IG5vZGUuCi0JICogQHJldHVybiB0aGUgbmV4dCBzaWJsaW5nIGVsZW1lbnQuCi0JICovCi0JcHJvdGVjdGVkIHN0YXRpYyBFbGVtZW50IGZpbmROZXh0U2libGluZyhOb2RlIHN0YXJ0Tm9kZSkgewotCQlOb2RlIG5vZGUgPSBudWxsOwotCQlFbGVtZW50IHJldHVybkVsZW1lbnQgPSBudWxsOwotCi0JCS8vIEZpbmQgdGhlIG5leHQgc2libGluZyBlbGVtZW50Ci0JCWZvciAobm9kZSA9IHN0YXJ0Tm9kZTsgbm9kZSAhPSBudWxsICYmIHJldHVybkVsZW1lbnQgPT0gbnVsbDsgbm9kZSA9IG5vZGUKLQkJCQkuZ2V0TmV4dFNpYmxpbmcoKSkKLQkJewotCQkJLy8gSWYgdGhpcyBub2RlIGlzIGFuIGVsZW1lbnQgbm9kZSwgdGhlbiByZXR1cm4gaXQKLQkJCWlmIChub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0JCQl7Ci0JCQkJcmV0dXJuRWxlbWVudCA9IChFbGVtZW50KSBub2RlOwotCQkJfQotCQl9Ci0KLQkJLy8gUmV0dXJuIG5leHQgc2libGluZyBlbGVtZW50Ci0JCXJldHVybiAoRWxlbWVudCkgcmV0dXJuRWxlbWVudDsKLQl9Ci0KLQkvKioKLQkgKiBGaW5kIHRoZSBwcmV2aW91cyBzaWJsaW5nIGVsZW1lbnQuCi0JICogCi0JICogQHBhcmFtIHN0YXJ0Tm9kZSBYTUwgc3RhcnQgbm9kZS4KLQkgKiBAcmV0dXJuIHRoZSBwcmV2aW91cyBzaWJsaW5nIGVsZW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyBFbGVtZW50IGZpbmRQcmV2aW91c1NpYmxpbmcoTm9kZSBzdGFydE5vZGUpIHsKLQkJaWYgKHN0YXJ0Tm9kZSA9PSBudWxsKQotCQkJcmV0dXJuIG51bGw7Ci0KLQkJd2hpbGUgKHN0YXJ0Tm9kZSAhPSBudWxsKQotCQl7Ci0JCQlzdGFydE5vZGUgPSBzdGFydE5vZGUuZ2V0UHJldmlvdXNTaWJsaW5nKCk7Ci0JCQlpZiAoc3RhcnROb2RlID09IG51bGwpCi0JCQkJcmV0dXJuIG51bGw7Ci0JCQlpZiAoc3RhcnROb2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0JCQkJcmV0dXJuIChFbGVtZW50KSBzdGFydE5vZGU7Ci0JCX0KLQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBHZXQgdGhlIHRleHQgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbGVtZW50LgotCSAqIAotCSAqIEBwYXJhbSBlbGVtZW50IGFuIEVsZW1lbnQgb2JqZWN0LgotCSAqIEByZXR1cm4gdGhlIHRleHQgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbGVtZW50LgotCSAqLwotCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFRleHQoRWxlbWVudCBlbGVtZW50KSB7Ci0JCVN0cmluZyB0ZXh0ID0gbnVsbDsKLQotCQkvLyBHZXQgZmlyc3QgY2hpbGQgZWxlbWVudAotCQlOb2RlIG5vZGUgPSBlbGVtZW50LmdldEZpcnN0Q2hpbGQoKTsKLQotCQkvLyBOb2RlTGlzdCBub2RlTGlzdCA9IGVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpOwotCi0JCS8vIGludCBsZW5ndGggPSBub2RlTGlzdC5nZXRMZW5ndGgoKTsKLQotCQkvLyBQcm9jZXNzIHdoaWxlIHRoZXJlIGFyZSBub2RlcyBhbmQgdGhlIHRleHQgaGFzbid0IGJlZW4gZm91bmQKLQkJd2hpbGUgKChub2RlICE9IG51bGwpICYmICh0ZXh0ID09IG51bGwpKQotCQl7Ci0JCQkvLyBJZiBhIHRleHQgbm9kZSBvciBjZGF0YSBzZWN0aW9uIGlzIGZvdW5kLCB0aGVuIGdldCB0ZXh0Ci0JCQlpZiAoKG5vZGUuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLlRFWFRfTk9ERSkKLQkJCQkJfHwgKG5vZGUuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERSkpCi0JCQl7Ci0JCQkJdGV4dCA9ICgoQ2hhcmFjdGVyRGF0YSkgbm9kZSkuZ2V0RGF0YSgpOwotCQkJfQotCi0JCQkvLyBHZXQgbmV4dCBzaWJsaW5nCi0JCQlub2RlID0gbm9kZS5nZXROZXh0U2libGluZygpOwotCQl9Ci0KLQkJaWYgKHRleHQgIT0gbnVsbCkKLQkJCXRleHQgPSB0ZXh0LnRyaW0oKTsKLQotCQlyZXR1cm4gdGV4dDsKLQl9Ci0KLQkvKioKLQkgKiBEZXRlcm1pbmUgaWYgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSB0aGUgUU5hbWUuCi0JICogCi0JICogQHBhcmFtIHFuYW1lIGEgUU5hbWUgb2JqZWN0LgotCSAqIEBwYXJhbSBlbGVtZW50IGFuIEVsZW1lbnQgb2JqZWN0LgotCSAqIEByZXR1cm4gdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBRTmFtZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gZXF1YWxzKFFOYW1lIHFuYW1lLCBFbGVtZW50IGVsZW1lbnQpIHsKLQkJYm9vbGVhbiBlcXVhbHMgPSBmYWxzZTsKLQotCQkvLyBJZiBib3RoIHRoZSBuYW1lc3BhY2UgVVJJIGFuZCBsb2NhbCBuYW1lIGFyZSB0aGUgc2FtZSwgdGhlbiB0aGV5IGFyZQotCQkvLyBlcXVhbAotCQlpZiAoKHFuYW1lLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscyhlbGVtZW50LmdldE5hbWVzcGFjZVVSSSgpKSkKLQkJCQkmJiAocW5hbWUuZ2V0TG9jYWxQYXJ0KCkuZXF1YWxzKGVsZW1lbnQuZ2V0TG9jYWxOYW1lKCkpKSkKLQkJewotCQkJZXF1YWxzID0gdHJ1ZTsKLQkJfQotCi0JCXJldHVybiBlcXVhbHM7Ci0JfQotCi0JLyoqCi0JICogWE1MIGVuY29kZSBhIHRleHQgc3RyaW5nLgotCSAqIAotCSAqIEBwYXJhbSB0ZXh0IC0gYSBTdHJpbmcuCi0JICogQHJldHVybiBhbiBYTUwgZW5jb2RlZCB0ZXh0IHN0cmluZy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyB4bWxFc2NhcGVkU3RyaW5nKFN0cmluZyB0ZXh0KSAKLQl7Ci0JICBpZiAodGV4dCA9PSBudWxsKSByZXR1cm4gdGV4dDsKLQkgIGVsc2UKLQkgIHsKLQkgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcih0ZXh0Lmxlbmd0aCgpKjIpOwotCSAgICBpbnQgc2l6ZSA9IHRleHQubGVuZ3RoKCk7Ci0JICAgIGZvciAoaW50IGk9MDsgaTxzaXplOyBpKyspCi0JICAgIHsKLQkgICAgICBjaGFyIGMgPSB0ZXh0LmNoYXJBdChpKTsKLQkgICAgICBzd2l0Y2ggKGMpCi0JCSAgewotICAgICAgICAgICAgIGNhc2UgJzwnOiAKLSAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiJmx0OyIpOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgY2FzZSAnPic6IAotICAgICAgICAgICAgIAlzYi5hcHBlbmQoIiZndDsiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlICcmJzogCi0gICAgICAgICAgICAgCXNiLmFwcGVuZCgiJmFtcDsiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlICciJzogCi0gICAgICAgICAgICAgCXNiLmFwcGVuZCgiJnF1b3Q7Iik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgY2FzZSAnXCcnOiAKLSAgICAgICAgICAgICAJc2IuYXBwZW5kKCImYXBvczsiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlICdccic6IAotICAgICAgICAgICAgIAlzYi5hcHBlbmQoIiYjeGQ7Iik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAJc2IuYXBwZW5kKGMpOwotCQkgIH0KLQkJfQotCSAgICByZXR1cm4gIHNiLnRvU3RyaW5nKCk7Ci0JICB9Ci0JfQotCi0JLyoqCi0JICogWE1MIGVuY29kZSBhIHRleHQgc3RyaW5nLgotCSAqIAotCSAqIEBwYXJhbSB0ZXh0IC0gYSBTdHJpbmcuCi0JICogQHJldHVybiBhbiBYTUwgZW5jb2RlZCB0ZXh0IHN0cmluZy4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyB4bWxSZW1vdmVFc2NhcGVkU3RyaW5nKFN0cmluZyB0ZXh0KSAKLQl7Ci0JICBpZiAodGV4dCA9PSBudWxsKSByZXR1cm4gdGV4dDsKLQkgIGVsc2UKLQkgIHsKLSAgICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcih0ZXh0KTsKLSAgICAgIAotCSAgICBpbnQgaSA9IHNiLmluZGV4T2YoIiYjeGQ7Iik7Ci0JICAgIHdoaWxlKGkgIT0gLTEpCi0JICAgIHsKLQkgICAgICBzYi5yZXBsYWNlKGksIGkrNSwgIlxyIik7Ci0JICAgICAgaSA9IHNiLmluZGV4T2YoIiYjeGQ7Iik7Ci0JICAgIH0KLQkgICAgCi0JICAgIGkgPSBzYi5pbmRleE9mKCImbHQ7Iik7Ci0JICAgIHdoaWxlKGkgIT0gLTEpCi0JICAgIHsKLQkgICAgICBzYi5yZXBsYWNlKGksIGkrNCwgIjwiKTsKLQkgICAgICBpID0gc2IuaW5kZXhPZigiJmx0OyIpOwotCSAgICB9Ci0KLQkgICAgaSA9IHNiLmluZGV4T2YoIiZndDsiKTsKLQkgICAgd2hpbGUoaSAhPSAtMSkKLQkgICAgewotCSAgICAgIHNiLnJlcGxhY2UoaSwgaSs0LCAiPiIpOwotCSAgICAgIGkgPSBzYi5pbmRleE9mKCImZ3Q7Iik7Ci0JICAgIH0KLQotCSAgICBpID0gc2IuaW5kZXhPZigiJnF1b3Q7Iik7Ci0JICAgIHdoaWxlKGkgIT0gLTEpCi0JICAgIHsKLQkgICAgICBzYi5yZXBsYWNlKGksIGkrNiwgIlwiIik7Ci0JICAgICAgaSA9IHNiLmluZGV4T2YoIiZxdW90OyIpOwotCSAgICB9Ci0KLQkgICAgaSA9IHNiLmluZGV4T2YoIiZhcG9zOyIpOwotCSAgICB3aGlsZShpICE9IC0xKQotCSAgICB7Ci0JICAgICAgc2IucmVwbGFjZShpLCBpKzYsICJcJyIpOwotCSAgICAgIGkgPSBzYi5pbmRleE9mKCImYXBvczsiKTsKLQkgICAgfQotCi0JICAgIGkgPSBzYi5pbmRleE9mKCImYW1wOyIpOwotCSAgICB3aGlsZShpICE9IC0xKQotCSAgICB7Ci0JICAgICAgc2IucmVwbGFjZShpLCBpKzUsICImIik7Ci0JICAgICAgaSA9IHNiLmluZGV4T2YoIiZhbXA7Iik7Ci0JICAgIH0KLSAJICAgIHJldHVybiAgc2IudG9TdHJpbmcoKTsKLQkgIH0KLQl9Ci0JLyoqCi0JICogR2V0IHRoZSBzcGVjaWZpZWQgZWxlbWVudCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuCi0JICogCi0JICogQHBhcmFtIGVsZW1lbnROYW1lIHRoZSBlbGVtZW50IHRhZyB0byBzZXJhY2ggZm9yLgotCSAqIEBwYXJhbSBwYXJlbnRFbGVtZW50IHRoZSBwYXJlbnQgZWxlbWVudC4KLQkgKiBAcmV0dXJuIGFuIGVsZW1lbnQgZ2l2ZW4gdGhlIG5hbWUgYW5kIHRoZSBwYXJlbnQgZWxlbWVudC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIEVsZW1lbnQgZ2V0RWxlbWVudChTdHJpbmcgZWxlbWVudE5hbWUsIEVsZW1lbnQgcGFyZW50RWxlbWVudCkgewotCQlFbGVtZW50IHJldHVybkVsZW1lbnQgPSBudWxsOwotCQlOb2RlTGlzdCBubDsKLQotCQkvLyBHZXQgdGhlIGxpc3Qgb2YgZWxlbWVudHMKLQkJaWYgKChubCA9IHBhcmVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZWxlbWVudE5hbWUpKSAhPSBudWxsKQotCQl7Ci0JCQkvLyBSZXR1cm4gZmlyc3QgZWxlbWVudCBmb3VuZAotCQkJcmV0dXJuRWxlbWVudCA9IChFbGVtZW50KSBubC5pdGVtKDApOwotCQl9Ci0KLQkJLy8gUmV0dXJuIGVsZW1lbnQKLQkJcmV0dXJuIHJldHVybkVsZW1lbnQ7Ci0JfQotCi0JLyoqCi0JICogRGV0ZXJtaW5lIGlmIHRoaXMgZWxlbWVudCBtYXRjaGVzIHNwZWNpZmllZCBsb2NhbCBuYW1lIGluIHRoZSBzcGVjaWZpZWQKLQkgKiBuYW1lc3BhY2UuCi0JICogCi0JICogQHBhcmFtIGVsZW1lbnQgYW4gRWxlbWVudCBvYmplY3QuCi0JICogQHBhcmFtIG5hbWVzcGFjZVVSSSBhIG5hbWVzcGFjZS4KLQkgKiBAcGFyYW0gbG9jYWxOYW1lIGEgbG9jYWwgbmFtZS4KLQkgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBlbGVtZW50IG1hdGNoZXMgc3BlY2lmaWVkIGxvY2FsIG5hbWUgaW4gdGhlIHNwZWNpZmllZAotCSAqICAgICAgICAgbmFtZXNwYWNlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0VsZW1lbnQoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgbmFtZXNwYWNlVVJJLAotCQkJU3RyaW5nIGxvY2FsTmFtZSkgewotCQlib29sZWFuIGlzRWxlbWVudCA9IGZhbHNlOwotCi0JCWlmIChlbGVtZW50ICE9IG51bGwpCi0JCXsKLQkJCS8vIENoZWNrIGlzCi0JCQlpZiAoZWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMobmFtZXNwYWNlVVJJKQotCQkJCQkmJiBlbGVtZW50LmdldExvY2FsTmFtZSgpLmVxdWFscyhsb2NhbE5hbWUpKQotCQkJewotCQkJCWlzRWxlbWVudCA9IHRydWU7Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gaXNFbGVtZW50OwotCX0KLQotCS8qKgotCSAqIERldGVybWluZSBpZiB0aGlzIGVsZW1lbnQgbWF0Y2hlcyBzcGVjaWZpZWQgbG9jYWwgbmFtZSBpbiB0aGUgc3BlY2lmaWVkCi0JICogbmFtZXNwYWNlLgotCSAqIAotCSAqIEBwYXJhbSBlbGVtZW50IGFuIEVsZW1lbnQgb2JqZWN0LgotCSAqIEBwYXJhbSBuYW1lc3BhY2VVUklzIGEgbGlzdCBvZiB2YWxpZCBuYW1lc3BhY2VzLgotCSAqIEBwYXJhbSBsb2NhbE5hbWUgYSBsb2NhbCBuYW1lLgotCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIGVsZW1lbnQgbWF0Y2hlcyBzcGVjaWZpZWQgbG9jYWwgbmFtZSBpbiB0aGUgc3BlY2lmaWVkCi0JICogICAgICAgICBuYW1lc3BhY2UuCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIExpc3QgbmFtZXNwYWNlVVJJcywKLQkJCVN0cmluZyBsb2NhbE5hbWUpIHsKLQkJYm9vbGVhbiBpc0VsZW1lbnQgPSBmYWxzZTsKLQotCQlpZiAoZWxlbWVudCAhPSBudWxsKQotCQl7Ci0JCQkvLyBDaGVjayBpcwotCQkJaWYgKG5hbWVzcGFjZVVSSXMuY29udGFpbnMoZWxlbWVudC5nZXROYW1lc3BhY2VVUkkoKSkKLQkJCQkJJiYgZWxlbWVudC5nZXRMb2NhbE5hbWUoKS5lcXVhbHMobG9jYWxOYW1lKSkKLQkJCXsKLQkJCQlpc0VsZW1lbnQgPSB0cnVlOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIGlzRWxlbWVudDsKLQl9Ci0KLQkvKioKLQkgKiBHZXQgZWxlbWVudCB0ZXh0IGFzIGEgYm9vbGVhbi4KLQkgKiAKLQkgKiBAcGFyYW0gZWxlbWVudCBhbiBFbGVtZW50IG9iamVjdC4KLQkgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIGEgYm9vbGVhbiB0byBiZSB1c2VkIGFzIGEgZGVmYXVsdCB2YWx1ZS4KLQkgKiBAcmV0dXJuIGVsZW1lbnQgdGV4dCBhcyBhIGJvb2xlYW4gdmFsdWUuCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGdldEJvb2xlYW5WYWx1ZShFbGVtZW50IGVsZW1lbnQsIGJvb2xlYW4gZGVmYXVsdFZhbHVlKSB7Ci0JCWJvb2xlYW4gcmV0dXJuVmFsdWUgPSBkZWZhdWx0VmFsdWU7Ci0JCVN0cmluZyBib29sZWFuVmFsdWUgPSBudWxsOwotCi0JCS8vIEdldCB2YWx1ZSBhcyBhIHN0cmluZwotCQlpZiAoKGJvb2xlYW5WYWx1ZSA9IFhNTFV0aWxzLmdldFRleHQoZWxlbWVudCkpICE9IG51bGwpCi0JCXsKLQkJCXJldHVyblZhbHVlID0gQm9vbGVhbi52YWx1ZU9mKGJvb2xlYW5WYWx1ZSkuYm9vbGVhblZhbHVlKCk7Ci0JCX0KLQotCQkvLyBSZXR1cm4gYm9vbGVhbgotCQlyZXR1cm4gcmV0dXJuVmFsdWU7Ci0JfQotCi0JLyoqCi0JICogR2V0IGF0dHJpYnV0ZSB2YWx1ZSBhcyBhIGJvb2xlYW4uCi0JICogCi0JICogQHBhcmFtIGVsZW1lbnQgYW4gRWxlbWVudCBvYmplY3QuCi0JICogQHBhcmFtIGF0dHJOYW1lIGEgbmFtZSBvZiBhbiBhdHRyaWJ1dGUuCi0JICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBhIGJvb2xlYW4gdG8gYmUgdXNlZCBhcyBhIGRlZmF1bHQgdmFsdWUuCi0JICogQHJldHVybiBhdHRyaWJ1dGUgdmFsdWUgYXMgYSBib29sZWFuLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBnZXRCb29sZWFuVmFsdWUoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgYXR0ck5hbWUsCi0JCQlib29sZWFuIGRlZmF1bHRWYWx1ZSkgewotCQlib29sZWFuIHJldHVyblZhbHVlID0gZGVmYXVsdFZhbHVlOwotCQlTdHJpbmcgYm9vbGVhblZhbHVlID0gbnVsbDsKLQotCQkvLyBHZXQgdmFsdWUgYXMgYSBzdHJpbmcKLQkJaWYgKChib29sZWFuVmFsdWUgPSBYTUxVdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShlbGVtZW50LCBhdHRyTmFtZSkpICE9IG51bGwpCi0JCXsKLQkJCXJldHVyblZhbHVlID0gQm9vbGVhbi52YWx1ZU9mKGJvb2xlYW5WYWx1ZSkuYm9vbGVhblZhbHVlKCk7Ci0JCX0KLQotCQkvLyBSZXR1cm4gYm9vbGVhbgotCQlyZXR1cm4gcmV0dXJuVmFsdWU7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlIFFOYW1lLgotCSAqIAotCSAqIEBwYXJhbSBxbmFtZVN0cmluZyBhIHF1YWxpZmllZCBuYW1lLgotCSAqIEByZXR1cm4gYSBRTmFtZSBvYmplY3QuCi0JICovCi0JcHVibGljIHN0YXRpYyBRTmFtZSBjcmVhdGVRTmFtZShTdHJpbmcgcW5hbWVTdHJpbmcpIHsKLQkJUU5hbWUgcW5hbWUgPSBudWxsOwotCi0JCS8vIExvY2F0ZSBsb2NhbCBwYXJ0Ci0JCWludCBpbmRleCA9IHFuYW1lU3RyaW5nLmxhc3RJbmRleE9mKCI6Iik7Ci0KLQkJLy8gQ3JlYXRlIG5ldyBRTmFtZQotCQlpZiAoaW5kZXggIT0gLTEpCi0JCXsKLQkJCXFuYW1lID0gbmV3IFFOYW1lKHFuYW1lU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCksIHFuYW1lU3RyaW5nCi0JCQkJCS5zdWJzdHJpbmcoaW5kZXggKyAxKSk7Ci0JCX0KLQotCQllbHNlCi0JCXsKLQkJCXFuYW1lID0gbmV3IFFOYW1lKHFuYW1lU3RyaW5nKTsKLQkJfQotCi0JCXJldHVybiBxbmFtZTsKLQl9Ci0KLQkvKioKLQkgKiBFcnJvciBIYW5kbGVyCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRXJySGFuZGxlciBpbXBsZW1lbnRzIEVycm9ySGFuZGxlcgotCXsKLQkJLyoqCi0JCSAqIFdhcm5pbmcKLQkJICovCi0JCXB1YmxpYyB2b2lkIHdhcm5pbmcoU0FYUGFyc2VFeGNlcHRpb24gc3BlKSB0aHJvd3MgU0FYRXhjZXB0aW9uIHsKLQkJCVN0cmluZyBtZXNzYWdlID0gIldhcm5pbmc6ICIgKyBzcGUuZ2V0TWVzc2FnZSgpOwotCQkJdGhyb3cgbmV3IFNBWEV4Y2VwdGlvbihtZXNzYWdlKTsKLQkJfQotCi0JCS8qKgotCQkgKiBFcnJvcgotCQkgKi8KLQkJcHVibGljIHZvaWQgZXJyb3IoU0FYUGFyc2VFeGNlcHRpb24gc3BlKSB0aHJvd3MgU0FYRXhjZXB0aW9uIHsKLQkJCVN0cmluZyBtZXNzYWdlID0gIkVycm9yOiAiICsgc3BlLmdldE1lc3NhZ2UoKTsKLQkJCXRocm93IG5ldyBTQVhFeGNlcHRpb24obWVzc2FnZSk7Ci0JCX0KLQotCQkvKioKLQkJICogRmF0YWwgRXJyb3IKLQkJICovCi0JCXB1YmxpYyB2b2lkIGZhdGFsRXJyb3IoU0FYUGFyc2VFeGNlcHRpb24gc3BlKSB0aHJvd3MgU0FYRXhjZXB0aW9uIHsKLQkJCVN0cmluZyBtZXNzYWdlID0gIkZhdGFsIEVycm9yOiAiICsgc3BlLmdldE1lc3NhZ2UoKTsKLQkJCXRocm93IG5ldyBTQVhFeGNlcHRpb24obWVzc2FnZSk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBEZXRlcm1pbmUgaWYgdGhlIHN0cmluZyBpcyBhIE5NVE9LRU4gZGF0YSB0eXBlLgotCSAqIAotCSAqIEBwYXJhbSB0ZXh0IGEgc3RyaW5nIHZhbHVlLgotCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgTk1UT0tFTiBkYXRhIHR5cGUuCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzTm10b2tlbihTdHJpbmcgdGV4dCkgewotCQlib29sZWFuIG5tdG9rZW4gPSB0cnVlOwotCi0JCS8vIEFERDogTmVlZCB0byBmaW5kIGEgdXRpbGl0eSBmdW5jdGlvbiB0aGF0IGRvZXMgdGhpcyBvciB3cml0ZSBpdCBmcm9tCi0JCS8vIHNjcmF0Y2gKLQotCQlyZXR1cm4gbm10b2tlbjsKLQl9Ci0KLQkvKioKLQkgKiBUaGUgbWV0aG9kIHNlYXJjaGVzIHRoZSBmaXJzdCBkaXJlY3QgZGVzY2VuZGFudCBlbGVtZW50IHdpdGggdGhlIGdpdmVuCi0JICogcW5hbWUuCi0JICogCi0JICogQHBhcmFtIHBhcmVudCBwYXJlbnQgRE9NIGVsZW1lbnQuCi0JICogQHBhcmFtIGVsZW1lbnROYW1lIFFOYW1lIG9mIHRoZSBlbGVtZW50IHRvIGJlIHNlYXJjaGVkLgotCSAqIEByZXR1cm4gRE9NIGVsZW1lbnQgaWYgdGhlIHJlcXVpcmVkIGVsZW1lbnQgZm91bmQsIGFuZCBudWxsIG90aGVyd2lzZS4KLQkgKi8KLQlzdGF0aWMgcHVibGljIEVsZW1lbnQgZmluZENoaWxkRWxlbWVudChFbGVtZW50IHBhcmVudCwgUU5hbWUgZWxlbWVudE5hbWUpIHsKLQkJaWYgKHBhcmVudCA9PSBudWxsKQotCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUGFyZW50IGVsZW1lbnQgY2FuIG5vdCBiZSBOVUxMIik7Ci0JCWlmIChlbGVtZW50TmFtZSA9PSBudWxsKQotCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRWxlbWVudCBuYW1lIGNhbiBub3QgYmUgTlVMTCIpOwotCQlpZiAoZWxlbWVudE5hbWUuZ2V0TG9jYWxQYXJ0KCkgPT0gbnVsbCkKLQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0JCQkJCSJMb2NhbCBwYXJ0IG9mIHRoZSBlbGVtZW50IG5hbWUgY2FuIG5vdCBiZSBOVUxMIik7Ci0KLQkJTm9kZSBuID0gcGFyZW50LmdldEZpcnN0Q2hpbGQoKTsKLQkJU3RyaW5nIGxvY2FsID0gZWxlbWVudE5hbWUuZ2V0TG9jYWxQYXJ0KCk7Ci0JCVN0cmluZyBucyA9IGVsZW1lbnROYW1lLmdldE5hbWVzcGFjZVVSSSgpOwotCQl3aGlsZSAobiAhPSBudWxsKQotCQl7Ci0JCQlpZiAoTm9kZS5FTEVNRU5UX05PREUgPT0gbi5nZXROb2RlVHlwZSgpCi0JCQkJCSYmIGxvY2FsLmVxdWFscyhuLmdldExvY2FsTmFtZSgpKQotCQkJCQkmJiBOdWxsVXRpbC5lcXVhbHMobnMsIG4uZ2V0TmFtZXNwYWNlVVJJKCkpKQotCQkJCXJldHVybiAoRWxlbWVudCkgbjsKLQkJCW4gPSBuLmdldE5leHRTaWJsaW5nKCk7Ci0JCX0KLQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBUaGUgbWV0aG9kIHNlYXJjaGVzIHRoZSBmaXJzdCBzaWJsaW5nIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4gcW5hbWUuCi0JICogCi0JICogQHBhcmFtIGFjdGl2ZSBET00gZWxlbWVudC4KLQkgKiBAcGFyYW0gZWxlbWVudE5hbWUgUU5hbWUgb2YgdGhlIGVsZW1lbnQgdG8gYmUgc2VhcmNoZWQuCi0JICogQHJldHVybiBET00gZWxlbWVudCBpZiB0aGUgcmVxdWlyZWQgZWxlbWVudCBmb3VuZCwgYW5kIG51bGwgb3RoZXJ3aXNlLgotCSAqLwotCXN0YXRpYyBwdWJsaWMgRWxlbWVudCBmaW5kRWxlbWVudChFbGVtZW50IGFjdGl2ZSwgUU5hbWUgZWxlbWVudE5hbWUpIHsKLQkJaWYgKGFjdGl2ZSA9PSBudWxsKQotCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQWN0aXZlIGVsZW1lbnQgY2FuIG5vdCBiZSBOVUxMIik7Ci0JCWlmIChlbGVtZW50TmFtZSA9PSBudWxsKQotCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRWxlbWVudCBuYW1lIGNhbiBub3QgYmUgTlVMTCIpOwotCQlpZiAoZWxlbWVudE5hbWUuZ2V0TG9jYWxQYXJ0KCkgPT0gbnVsbCkKLQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0JCQkJCSJMb2NhbCBwYXJ0IG9mIHRoZSBlbGVtZW50IG5hbWUgY2FuIG5vdCBiZSBOVUxMIik7Ci0KLQkJTm9kZSBuID0gYWN0aXZlLmdldE5leHRTaWJsaW5nKCk7Ci0JCVN0cmluZyBsb2NhbCA9IGVsZW1lbnROYW1lLmdldExvY2FsUGFydCgpOwotCQlTdHJpbmcgbnMgPSBlbGVtZW50TmFtZS5nZXROYW1lc3BhY2VVUkkoKTsKLQkJd2hpbGUgKG4gIT0gbnVsbCkKLQkJewotCQkJaWYgKE5vZGUuRUxFTUVOVF9OT0RFID09IG4uZ2V0Tm9kZVR5cGUoKQotCQkJCQkmJiBsb2NhbC5lcXVhbHMobi5nZXRMb2NhbE5hbWUoKSkKLQkJCQkJJiYgTnVsbFV0aWwuZXF1YWxzKG5zLCBuLmdldE5hbWVzcGFjZVVSSSgpKSkKLQkJCQlyZXR1cm4gKEVsZW1lbnQpIG47Ci0JCQluID0gbi5nZXROZXh0U2libGluZygpOwotCQl9Ci0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogVGhlIG1ldGhvZCByZXR1cm5zIGF0dHJpYnV0ZSBub2RlIGJ5IHRoZSBnaXZlbiBxbmFtZS4KLQkgKiAKLQkgKiBAcGFyYW0gZWwgb3duZXIgZWxlbWVudC4KLQkgKiBAcGFyYW0gYXR0cmlidXRlTmFtZSBRTmFtZSBvZiB0aGUgYXR0cmlidXRlIG5vZGUgdG8gYmUgc2VhcmNoZWQuCi0JICogQHJldHVybiBhdHRyaWJ1dGUgbm9kZSBieSB0aGUgZ2l2ZW4gcW5hbWUuCi0JICovCi0Jc3RhdGljIHB1YmxpYyBBdHRyIGdldEF0dHJpYnV0ZShFbGVtZW50IGVsLCBRTmFtZSBhdHRyaWJ1dGVOYW1lKSB7Ci0JCWlmIChlbCA9PSBudWxsKQotCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRWxlbWVudCBjYW4gbm90IGJlIE5VTEwiKTsKLQkJaWYgKGF0dHJpYnV0ZU5hbWUgPT0gbnVsbCkKLQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkF0dHJpYnV0ZSBuYW1lIGNhbiBub3QgYmUgTlVMTCIpOwotCQlTdHJpbmcgbnNVUkkgPSBhdHRyaWJ1dGVOYW1lLmdldE5hbWVzcGFjZVVSSSgpOwotCQlTdHJpbmcgbG9jYWxQYXJ0ID0gYXR0cmlidXRlTmFtZS5nZXRMb2NhbFBhcnQoKTsKLQkJaWYgKGxvY2FsUGFydCA9PSBudWxsKQotCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLQkJCQkJIkxvY2FsIHBhcnQgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lIGNhbiBub3QgYmUgTlVMTCIpOwotCi0JCUF0dHIgYSA9IGVsLmdldEF0dHJpYnV0ZU5vZGVOUyhuc1VSSSwKLQkJCQlsb2NhbFBhcnQpOwotCQlpZiAoYSA9PSBudWxsKQotCQkJLy8gdHJ5IHRvIGdldCB3aXRoIG51bGwgbmFtZXNwYWNlCi0JCQlhID0gZWwuZ2V0QXR0cmlidXRlTm9kZU5TKG51bGwsIGxvY2FsUGFydCk7Ci0JCXJldHVybiBhOwotCX0KLQotCS8qKgotCSAqIFRoZSBtZXRob2QgY29tcGFyZXMgbm9kZSdzIG5hbWUgdG8gdGhlIGdpdmVuIHFuYW1lLgotCSAqIAotCSAqIEBwYXJhbSBuIGEgbm9kZS4KLQkgKiBAcGFyYW0gbmFtZSBhIFFOYW1lIG9iamVjdC4KLQkgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG5vZGUncyBuYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBnaXZlbiBxbmFtZS4KLQkgKi8KLQlzdGF0aWMgcHVibGljIGJvb2xlYW4gZXF1YWxzKE5vZGUgbiwgUU5hbWUgbmFtZSkgewotCQlpZiAobiA9PSBudWxsIHx8IG5hbWUgPT0gbnVsbCkKLQkJCXJldHVybiBmYWxzZTsKLQkJcmV0dXJuIChOdWxsVXRpbC5lcXVhbHMobmFtZS5nZXRMb2NhbFBhcnQoKSwgbi5nZXRMb2NhbE5hbWUoKSkgJiYgTnVsbFV0aWwKLQkJCQkuZXF1YWxzKG5hbWUuZ2V0TmFtZXNwYWNlVVJJKCksIG4uZ2V0TmFtZXNwYWNlVVJJKCkpKTsKLQl9Ci0KLQkvKioKLQkgKiBUaGUgbWV0aG9kIHNlYXJjaGVzIG5hbWVzcGFjZSBVUkkgZm9yIHRoZSBnaXZlbiBwcmVmaXguIFRoZSBzZWFyY2hpbmcKLQkgKiBtZWNoYW5pc20gaXMgaW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSAiWE1MIE5hbWVzcGFjZXMgcmVzb2x1dGlvbiIKLQkgKiBhbGdvcml0aG0gKCdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLQotCSAqIENvcmUtMjAwMzAyMjYvbmFtZXNwYWNlcy1hbGdvcml0aG1zLmh0bWwnKS4KLQkgKiAKLQkgKiBAcGFyYW0gbiBhIG5vZGUuCi0JICogQHBhcmFtIHByZWZpeCBhIHByZWZpeC4KLQkgKiBAcmV0dXJuIHRoZSBuYW1lc3BhY2UgVVJJIGZvciB0aGUgZ2l2ZW4gcHJlZml4LgotCSAqLwotCXN0YXRpYyBwdWJsaWMgU3RyaW5nIGZpbmROYW1lc3BhY2VVUkkoTm9kZSBuLCBTdHJpbmcgcHJlZml4KSB7Ci0JCWlmIChwcmVmaXggPT0gbnVsbCkKLQkJCXJldHVybiBudWxsOwotCi0JCXdoaWxlIChuICE9IG51bGwpCi0JCXsKLQkJCWlmIChwcmVmaXguZXF1YWxzKG4uZ2V0UHJlZml4KCkpKQotCQkJCXJldHVybiBuLmdldE5hbWVzcGFjZVVSSSgpOwotCi0JCQlpZiAoTm9kZS5FTEVNRU5UX05PREUgPT0gbi5nZXROb2RlVHlwZSgpKQotCQkJewotCQkJCU5hbWVkTm9kZU1hcCBtID0gbi5nZXRBdHRyaWJ1dGVzKCk7Ci0JCQkJaWYgKG0gIT0gbnVsbCkKLQkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBtLmdldExlbmd0aCgpOyBpKyspCi0JCQkJCXsKLQkJCQkJCU5vZGUgYSA9IG0uaXRlbShpKTsKLQkJCQkJCWlmIChXU0lUYWcuTlNfVVJJX1hNTE5TLmVxdWFscyhhLmdldE5hbWVzcGFjZVVSSSgpKQotCQkJCQkJCQkmJiBwcmVmaXguZXF1YWxzKGEuZ2V0TG9jYWxOYW1lKCkpKQotCQkJCQkJCXJldHVybiBhLmdldE5vZGVWYWx1ZSgpOwotCQkJCQl9Ci0JCQl9Ci0KLQkJCW4gPSBuLmdldFBhcmVudE5vZGUoKTsKLQkJfQotCi0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFNlcmlhbGl6ZXMgZWxlbWVudC4KLQkgKiAKLQkgKiBAcGFyYW0gbiBhIERPTSBlbGVtZW50LgotCSAqIEByZXR1cm4gdGhlIHNlcmlhbGl6ZWQgZWxlbWVudC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBzZXJpYWxpemUoRWxlbWVudCBuKSB7Ci0JCVN0cmluZyB2YWx1ZSA9IG51bGw7Ci0JCXRyeQotCQl7Ci0JCQlTdHJpbmdXcml0ZXIgd3JpdGVyID0gbmV3IFN0cmluZ1dyaXRlcigpOwotCQkJWE1MU2VyaWFsaXplciBzID0gbmV3IFhNTFNlcmlhbGl6ZXIod3JpdGVyLCBuZXcgT3V0cHV0Rm9ybWF0KCJ4bWwiLAotCQkJCQkiVVRGLTgiLCB0cnVlKSk7Ci0JCQlzLnNlcmlhbGl6ZShuKTsKLQkJCXZhbHVlID0gd3JpdGVyLnRvU3RyaW5nKCk7Ci0JCQl3cml0ZXIuY2xvc2UoKTsKLQkJfSBjYXRjaCAoVGhyb3dhYmxlIHQpCi0JCXsKLQkJCS8vIG5vdGhpbmcKLQkJCXZhbHVlID0gIkVYQ0VQVElPTiA6ICIgKyB0LmdldE1lc3NhZ2UoKTsKLQkJfQotCi0JCXJldHVybiB2YWx1ZTsKLQl9Ci0KLQkvKioKLQkgKiBUaGUgbWV0aG9kIHJldHVybiBsaXN0IG9mIGNoaWxkIGVsZW1lbnRzLgotCSAqIAotCSAqIEBwYXJhbSBwYXJlbnQgYW4gb3JnLnczYy5kb20uRWxlbWVudCBvYmplY3QuCi0JICogQHJldHVybiBsaXN0IG9mIGNoaWxkIGVsZW1lbnRzLgotCSAqLwotCXN0YXRpYyBwdWJsaWMgVmVjdG9yIGdldENoaWxkRWxlbWVudHMoRWxlbWVudCBwYXJlbnQpIHsKLQkJaWYgKHBhcmVudCA9PSBudWxsKQotCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRWxlbWVudCBjYW4gbm90IGJlIE5VTEwiKTsKLQotCQlWZWN0b3IgdmVjdCA9IG5ldyBWZWN0b3IoKTsKLQkJRWxlbWVudCBlbGVtID0gZ2V0Rmlyc3RDaGlsZChwYXJlbnQpOwotCQl3aGlsZSAoZWxlbSAhPSBudWxsKQotCQl7Ci0JCQl2ZWN0LmFkZChlbGVtKTsKLQkJCWVsZW0gPSBnZXROZXh0U2libGluZyhlbGVtKTsKLQkJfQotCQlyZXR1cm4gdmVjdDsKLQl9Ci0KLQkvKioKLQkgKiBTZXJpYWxpemVzIGRvY3VtZW50LgotCSAqIAotCSAqIEBwYXJhbSBkb2MgYW4gb3JnLnczYy5kb20uRG9jdW1lbnQgb2JqZWN0LgotCSAqIEBwYXJhbSB3cml0ZXIgYSBqYXZhLmlvLldyaXRlciBvYmplY3QuCi0JICogQHRocm93cyBFeGNlcHRpb24gaWYgdW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgZG9jdW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIHNlcmlhbGl6ZURvYyhEb2N1bWVudCBkb2MsIFdyaXRlciB3cml0ZXIpCi0JCQl0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbiB7Ci0JCVhNTFNlcmlhbGl6ZXIgcyA9IG5ldyBYTUxTZXJpYWxpemVyKHdyaXRlciwgbmV3IE91dHB1dEZvcm1hdCgieG1sIiwKLQkJCQkiVVRGLTgiLCB0cnVlKSk7Ci0JCXMuc2VyaWFsaXplKGRvYyk7Ci0JfQotCi0JLyoqCi0JICogU2VyZWFsaXplcyBlbGVtZW50LgotCSAqIAotCSAqIEBwYXJhbSBlbGVtIGFuIG9yZy53M2MuZG9tLkVsZW1lbnQgb2JqZWN0LgotCSAqIEBwYXJhbSB3cml0ZXIgYSBqYXZhLmlvLldyaXRlciBvYmplY3QuCi0JICogQHRocm93cyBFeGNlcHRpb24gaWYgdW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgRE9NIGVsZW1lbnQuCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIHNlcmlhbGl6ZUVsZW1lbnQoRWxlbWVudCBlbGVtLCBXcml0ZXIgd3JpdGVyKQotCQkJdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24gewotCQlYTUxTZXJpYWxpemVyIHMgPSBuZXcgWE1MU2VyaWFsaXplcih3cml0ZXIsIG5ldyBPdXRwdXRGb3JtYXQoInhtbCIsCi0JCQkJIlVURi04IiwgdHJ1ZSkpOwotCQlzLnNlcmlhbGl6ZShlbGVtKTsKLQl9Ci0KLQkvKioKLQkgKiBSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gbGlzdCB3aXRob3V0IG5hbWVzcGFjZS4KLQkgKiAKLQkgKiBAcGFyYW0gdmVjdCBhIGxpc3Qgb2YgZWxlbWVudHMuCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIHJlbW92ZUFsbEVsZW1lbnRzV2l0aG91dE5TKFZlY3RvciB2ZWN0KSB7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgdmVjdC5zaXplKCk7KQotCQl7Ci0JCQlpZiAoKChFbGVtZW50KSB2ZWN0LmdldChpKSkuZ2V0TmFtZXNwYWNlVVJJKCkgPT0gbnVsbAotCQkJCQl8fCAoKEVsZW1lbnQpIHZlY3QuZ2V0KGkpKS5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoIiIpKQotCQkJCXZlY3QucmVtb3ZlKGkpOwotCQkJZWxzZQotCQkJCWkrKzsKLQkJfQotCX0KLQotCS8qKgotCSAqIENyZWF0ZSBVUkwgdXNpbmcgYmFzZSBVUkkuCi0JICogCi0JICogQHBhcmFtIHVybCBhIFVSTCBzdHJpbmcuCi0JICogQHBhcmFtIGJhc2VVUkkgYSBiYXNlIHVybCBzdHJpbmcgdG8gYXNzaXN0IGluIGNyZWF0aW5nIGEgVVJMLgotCSAqIEByZXR1cm4gbmV3bHkgY3JlYXRlZCBVUkwuCi0JICogQHRocm93cyBNYWxmb3JtZWRVUkxFeGNlcHRpb24gaWYgYSBtYWxmb3JtZWQgVVJMIGhhcyBvY2N1cnJlZC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFVSTCBjcmVhdGVVUkwoU3RyaW5nIHVybCwgU3RyaW5nIGJhc2VVUkkpCi0JCQl0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uIHsKLQkJVVJMIHJldHVyblVSTCA9IG51bGw7Ci0JCVVSSSB1cmkgPSBudWxsOwotCQl0cnkKLQkJewotICAgICAgICAgICAgcmV0dXJuVVJMID0gbmV3IFVSTCh1cmwpOwotCQkJdXJpID0gbmV3IFVSSSh1cmwpOwotCQkJdXJpID0gdXJpLm5vcm1hbGl6ZSgpOwotCQkJcmV0dXJuVVJMID0gIG5ldyBVUkwodXJpLnRvU3RyaW5nKCkpOwotCQl9Ci0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBtdWUpCi0JCXsKLQkJCWludCBpID0gYmFzZVVSSS5sYXN0SW5kZXhPZignLycpOwotCQkJaW50IGogPSBiYXNlVVJJLmxhc3RJbmRleE9mKCdcXCcpOwotCQkJaWYgKGogPiBpKQotCQkJCWkgPSBqOwotCQkJdHJ5Ci0JCQl7Ci0JCQkgIHVyaSA9IG5ldyBVUkkoYmFzZVVSSS5zdWJzdHJpbmcoMCwgaSArIDEpICsgdXJsKTsKLQkJCSAgdXJpID0gdXJpLm5vcm1hbGl6ZSgpOwotCQkJICByZXR1cm5VUkwgPSB1cmkudG9VUkwoKTsKLQkJCX0KLQkJCWNhdGNoIChFeGNlcHRpb24gZSkKLQkJCXsKLQkJCSAgcmV0dXJuIG5ldyBVUkwoYmFzZVVSSS5zdWJzdHJpbmcoMCwgaSArIDEpICsgdXJsKTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gcmV0dXJuVVJMOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZSBVUkwgdXNpbmcgYmFzZSBVUkkuCi0JICogCi0JICogQHBhcmFtIHVybCBhIFVSTCBzdHJpbmcuCi0JICogQHBhcmFtIGJhc2VVUkkgYSBiYXNlIHVybCBzdHJpbmcgdG8gYXNzaXN0IGluIGNyZWF0aW5nIGEgVVJMLgotCSAqIEByZXR1cm4gbmV3bHkgY3JlYXRlZCBVUkwgc3RyaW5nLgotCSAqIEB0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGlmIGEgbWFsZm9ybWVkIFVSTCBoYXMgb2NjdXJyZWQuCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgY3JlYXRlVVJMU3RyaW5nKFN0cmluZyB1cmwsIFN0cmluZyBiYXNlVVJJKQotCQkJdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiB7Ci0JCXJldHVybiBjcmVhdGVVUkwodXJsLCBiYXNlVVJJKS50b0V4dGVybmFsRm9ybSgpOwotCX0KLQotCS8qKgotCSAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgb25seSBmb3IgdW5pdCB0ZXN0aW5nLgotCSAqIAotCSAqIEBwYXJhbSBhcmdzIGFyZ3VtZW50cyBmb3IgbWFpbi4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7Ci0JCXRyeQotCQl7Ci0JCSAgU3lzdGVtLm91dC5wcmludGxuKCJGaWxlbmFtZTogIiArIGFyZ3NbMF0gKyAiLCBzY2hlbWE6ICIgKyBhcmdzWzFdKTsKLQkJICBwYXJzZVhNTERvY3VtZW50KGFyZ3NbMF0sIGFyZ3NbMV0pOwotCQkgIFN5c3RlbS5vdXQucHJpbnRsbigiRG9uZS4iKTsKLQkJfQotCi0JCWNhdGNoIChFeGNlcHRpb24gZSkKLQkJewotCQkJU3lzdGVtLmVyci5wcmludGxuKGUudG9TdHJpbmcoKSk7Ci0JCX0KLQotCQlTeXN0ZW0uZXhpdCgwKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MVmlzaXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL1hNTFZpc2l0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM5ZWEzNi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvWE1MVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWw7Ci0KLWltcG9ydCBvcmcudzNjLmRvbS5BdHRyOwotaW1wb3J0IG9yZy53M2MuZG9tLkNEQVRBU2VjdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5Db21tZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50VHlwZTsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVudGl0eTsKLWltcG9ydCBvcmcudzNjLmRvbS5FbnRpdHlSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vdGF0aW9uOwotaW1wb3J0IG9yZy53M2MuZG9tLlByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKLWltcG9ydCBvcmcudzNjLmRvbS5UZXh0OwotCi0vKioKLSAqIFdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBub2RlIHNvdXJjZSBjb2RlLCBzbyB0aGlzIGRvZXMKLSAqIG91ciBkb3VibGUtZGlzcGF0Y2ggdGhlIGhhcmQgd2F5LgotICovCi1wdWJsaWMgY2xhc3MgWE1MVmlzaXRvcgotewotICAvKioKLSAgKiBWaXNpdCBYTUwgQ0RBVEFTZWN0aW9uIG5vZGUuCi0gICogQHBhcmFtIHMgIGFuIFhNTCBDREFUQVNlY3Rpb24gbm9kZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoQ0RBVEFTZWN0aW9uIHMpCi0gIHsKLSAgfQotCi0gIC8qKgotICAqIFZpc2l0IFhNTCBEb2N1bWVudCBub2RlLgotICAqIEBwYXJhbSBlICBhbiBYTUwgRG9jdW1lbnQgbm9kZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoRG9jdW1lbnQgZSkKLSAgewotICB9Ci0KLSAgLyoqCi0gICogVmlzaXQgWE1MIERvY3VtZW50VHlwZSBub2RlLgotICAqIEBwYXJhbSBlICBhbiBNTCBEb2N1bWVudFR5cGUgbm9kZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoRG9jdW1lbnRUeXBlIGUpCi0gIHsKLSAgfQotCi0gIC8qKgotICAqIFZpc2l0IFhNTCBBdHRyaWJ1dGUgbm9kZS4KLSAgKiBAcGFyYW0gZSAgYW4gWE1MIEF0cnJpYnV0ZSBub2RlLgotICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChBdHRyIGUpCi0gIHsKLSAgfQotCi0gIC8qKgotICAqIFZpc2l0IFhNTCBFbGVtZW50IG5vZGUuCi0gICogQHBhcmFtIGUgIGFuIFhNTCBFbGVtZW50IG5vZGUuCi0gICovCi0gIHB1YmxpYyB2b2lkIHZpc2l0KEVsZW1lbnQgZSkKLSAgewotICB9Ci0KLSAgLyoqCi0gICogVmlzaXQgWE1MIENvbW1lbnQgbm9kZS4KLSAgKiBAcGFyYW0gZSAgYW4gWE1MIENvbW1lbnQgbm9kZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoQ29tbWVudCBlKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogVmlzaXQgWE1MIFRleHQgbm9kZS4KLSAgKiBAcGFyYW0gZSAgYW4gWE1MIFRleHQgbm9kZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoVGV4dCBlKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogVmlzaXQgWE1MIEVudGl0eVJlZmVyZW5jZSBub2RlLiAKLSAgKiBAcGFyYW0gZSAgYW4gWE1MIEVudGl0eVJlZmVyZW5jZSBub2RlLgotICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChFbnRpdHlSZWZlcmVuY2UgZSkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIFZpc2l0IFhNTCBFbnRpdHkgbm9kZS4gCi0gICogQHBhcmFtIGUgIGFuIFhNTCBFbnRpdHkgbm9kZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoRW50aXR5IGUpCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiBWaXNpdCBYTUwgTm90YXRpb24gbm9kZS4gCi0gICogQHBhcmFtIG4gIGFuIFhNTCBOb3RhdGlvbiBub2RlLgotICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChOb3RhdGlvbiBuKQotICB7Ci0gIH0KLQotICAvKioKLSAgICogVmlzaXQgWE1MIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBub2RlLiAKLSAgKiBAcGFyYW0gaSAgYW4gWE1MIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBub2RlLgotICAqLwotICBwdWJsaWMgdm9pZCB2aXNpdChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gaSkKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIFZpc2l0IFhNTCBOYW1lZE5vZGVNYXAgbm9kZS4gCi0gICogQHBhcmFtIGkgIGFuIFhNTCBOYW1lZE5vZGVNYXAgbm9kZS4KLSAgKi8KLSAgcHVibGljIHZvaWQgdmlzaXQoTmFtZWROb2RlTWFwIGkpCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiBWaXNpdCBYTUwgbm9kZS4gCi0gICogQHBhcmFtIG5vZGUgIGFuIFhNTCBub2RlLgotICAqLwotICBwdWJsaWMgdm9pZCBkb1Zpc2l0KE9iamVjdCBub2RlKQotICB7Ci0gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KQotICAgIHsKLSAgICAgIHZpc2l0KChFbGVtZW50KSBub2RlKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIENvbW1lbnQpCi0gICAgewotICAgICAgdmlzaXQoKENvbW1lbnQpIG5vZGUpOwotICAgIH0KLSAgICBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgQ0RBVEFTZWN0aW9uKQotICAgIHsKLSAgICAgIC8vIENEQVRBU2VjdGlvbiBleHRlbmRzIFRleHQsIHNvIGl0IG11c3QgY29tZSBmaXJzdAotICAgICAgdmlzaXQoKENEQVRBU2VjdGlvbikgbm9kZSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBUZXh0KQotICAgIHsKLSAgICAgIHZpc2l0KChUZXh0KSBub2RlKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIEF0dHIpCi0gICAgewotICAgICAgdmlzaXQoKEF0dHIpIG5vZGUpOwotICAgIH0KLSAgICBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgRG9jdW1lbnQpCi0gICAgewotICAgICAgdmlzaXQoKERvY3VtZW50KSBub2RlKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIEVudGl0eVJlZmVyZW5jZSkKLSAgICB7Ci0gICAgICB2aXNpdCgoRW50aXR5UmVmZXJlbmNlKSBub2RlKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIEVudGl0eSkKLSAgICB7Ci0gICAgICB2aXNpdCgoRW50aXR5KSBub2RlKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIERvY3VtZW50VHlwZSkKLSAgICB7Ci0gICAgICB2aXNpdCgoRG9jdW1lbnRUeXBlKSBub2RlKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIE5vdGF0aW9uKQotICAgIHsKLSAgICAgIHZpc2l0KChOb3RhdGlvbikgbm9kZSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCi0gICAgewotICAgICAgdmlzaXQoKFByb2Nlc3NpbmdJbnN0cnVjdGlvbikgbm9kZSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBOYW1lZE5vZGVNYXApCi0gICAgewotICAgICAgdmlzaXQoKE5hbWVkTm9kZU1hcCkgbm9kZSk7Ci0gICAgfQotICB9Ci19Ci0KLS8vIEVORCBPRiBGSUxFCmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvZG9tL0RPTVBhcnNlci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL2RvbS9ET01QYXJzZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVlMDM2MS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvZG9tL0RPTVBhcnNlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5kb207Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5kb20uRWxlbWVudEltcGw7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLkF1Z21lbnRhdGlvbnM7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLk5hbWVzcGFjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlFOYW1lOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxBdHRyaWJ1dGVzOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTUxMb2NhdG9yOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5YTklFeGNlcHRpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbjsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIHNwZWNpYWxpemVzIG9yZy5hcGFjaGUueGVyY2VzLnBhcnNlcnMuRE9NUGFyc2VyLgotICogCi0gKiBAYXV0aG9yIFBldGVyICBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKiBAdmVyc2lvbiAxLjAuMQotICovCi1wdWJsaWMgY2xhc3MgRE9NUGFyc2VyIGV4dGVuZHMgb3JnLmFwYWNoZS54ZXJjZXMucGFyc2Vycy5ET01QYXJzZXIKLXsKLSAgLyoqCi0gICAqIExvY2F0b3IuCi0gICAqLwotICBYTUxMb2NhdG9yIGxvY2F0b3IgPSBudWxsOwotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MRG9jdW1lbnRIYW5kbGVyI3N0YXJ0RG9jdW1lbnQob3JnLmFwYWNoZS54ZXJjZXMueG5pLlhNTExvY2F0b3IsIGphdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUueGVyY2VzLnhuaS5OYW1lc3BhY2VDb250ZXh0LCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuQXVnbWVudGF0aW9ucykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0YXJ0RG9jdW1lbnQoCi0gICAgWE1MTG9jYXRvciBsb2NhdG9yLAotICAgIFN0cmluZyBlbmNvZGluZywKLSAgICBOYW1lc3BhY2VDb250ZXh0IGNvbnRleHQsCi0gICAgQXVnbWVudGF0aW9ucyBhdWdzKQotICAgIHRocm93cyBYTklFeGNlcHRpb24KLSAgewotICAgIHRoaXMubG9jYXRvciA9IGxvY2F0b3I7Ci0gICAgc3VwZXIuc3RhcnREb2N1bWVudChsb2NhdG9yLCBlbmNvZGluZywgY29udGV4dCwgYXVncyk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmFwYWNoZS54ZXJjZXMueG5pLlhNTERvY3VtZW50SGFuZGxlciNzdGFydEVsZW1lbnQob3JnLmFwYWNoZS54ZXJjZXMueG5pLlFOYW1lLCBvcmcuYXBhY2hlLnhlcmNlcy54bmkuWE1MQXR0cmlidXRlcywgb3JnLmFwYWNoZS54ZXJjZXMueG5pLkF1Z21lbnRhdGlvbnMpCi0gICAqLwotICBwdWJsaWMgdm9pZCBzdGFydEVsZW1lbnQoCi0gICAgUU5hbWUgcW5hbWUsCi0gICAgWE1MQXR0cmlidXRlcyBhdHRyaWJ1dGVzLAotICAgIEF1Z21lbnRhdGlvbnMgYXVncykKLSAgICB0aHJvd3MgWE5JRXhjZXB0aW9uCi0gIHsKLSAgICBFbGVtZW50IGVsZW1lbnQ7Ci0gICAgRWxlbWVudEltcGwgZWxlbWVudEltcGw7Ci0KLSAgICAvLyBERUJVRzoKLSAgICAvL1N5c3RlbS5lcnIucHJpbnRsbigiMS1saW5lOiAiICsgbG9jYXRvci5nZXRMaW5lTnVtYmVyKCkgKyAiLCBjb2x1bW46ICIgKyBsb2NhdG9yLmdldENvbHVtbk51bWJlcigpKTsKLQotICAgIHN1cGVyLnN0YXJ0RWxlbWVudChxbmFtZSwgYXR0cmlidXRlcywgYXVncyk7Ci0KLSAgICAvLyBERUJVRzoKLSAgICAvL1N5c3RlbS5lcnIucHJpbnRsbigiMi1saW5lOiAiICsgbG9jYXRvci5nZXRMaW5lTnVtYmVyKCkgKyAiLCBjb2x1bW46ICIgKyBsb2NhdG9yLmdldENvbHVtbk51bWJlcigpKTsgICAgCi0KLSAgICB0cnkKLSAgICB7Ci0gICAgICBlbGVtZW50ID0gKEVsZW1lbnQpIGdldFByb3BlcnR5KENVUlJFTlRfRUxFTUVOVF9OT0RFKTsKLQotICAgICAgZWxlbWVudEltcGwgPSAoRWxlbWVudEltcGwpIGVsZW1lbnQ7Ci0gICAgICAvLyBTZXR0aW5nIHRoZSB1c2VyIGRhdGEgd2l0aCBhbiBpZGVudGlmaWVyIHN1Y2ggYXMgRWxlbWVudExvY2F0aW9uLktFWV9OQU1FCi0gICAgICAvLyBtYXkgYmUgYSBsb25nIHRlcm0gZ29vZCBpZGVhLiBUaGUgc2V0VXNlckRhdGEgbWV0aG9kIHdpdGggbm8gaWQgaXMgdXNlZCAKLSAgICAgIC8vIHRvIHN1cHBvcnQgSlZNcyB3aXRoIGFsdGVybmF0ZSB2ZXJzaW9ucyBvZiBYZXJjZXMuCi0gICAgICBlbGVtZW50SW1wbC5zZXRVc2VyRGF0YShuZXcgRWxlbWVudExvY2F0aW9uKGxvY2F0b3IuZ2V0TGluZU51bWJlcigpLCBsb2NhdG9yLmdldENvbHVtbk51bWJlcigpKSk7Ci0gICAgfQotICAgIGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gY2NlKQotICAgIHsKLSAgICB9Ci0gICAgY2F0Y2ggKFNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBzbnNlKQotICAgIHsKLSAgICAgIC8vIERFQlVHOgotICAgICAgLy9TeXN0ZW0uZXJyLnByaW50bG4oc25zZS50b1N0cmluZygpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKFNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24gc25yZSkKLSAgICB7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvZG9tL0VsZW1lbnRMb2NhdGlvbi5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL2RvbS9FbGVtZW50TG9jYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE5MDUzMy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvZG9tL0VsZW1lbnRMb2NhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5kb207Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJQ29uc3RhbnRzOwotaW1wb3J0IG9yZy54bWwuc2F4LkxvY2F0b3I7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBwcm92aWRlcyBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIGEgbm9kZSB3aXRoaW4gYW4gWE1MIGRvY3VtZW50LgotICogIAotICogQHZlcnNpb24gMS4wLjEKLSAqIEBhdXRob3IgUGV0ZXIgQnJpdHRlbmhhbSAgKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIEVsZW1lbnRMb2NhdGlvbgotewotICAvKioKLSAgICogTGluZSBudW1iZXIuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfTkFNRSA9IEVsZW1lbnRMb2NhdGlvbi5jbGFzcy5nZXROYW1lKCk7Ci0KLSAgLyoqCi0gICAqIExpbmUgbnVtYmVyLgotICAgKi8KLSAgcHJvdGVjdGVkIGludCBsaW5lTnVtYmVyID0gMDsKLQotICAvKioKLSAgICogQ29sdW1uIG51bWJlci4KLSAgICovCi0gIHByb3RlY3RlZCBpbnQgY29sdW1uTnVtYmVyID0gMDsKLQotICAvKioKLSAgICogRWxlbWVudCBsb2NhdGlvbi4KLSAgICogQHBhcmFtIGxpbmVOdW1iZXIgICAgYSBsaW5lIG51bWJlci4KLSAgICogQHBhcmFtIGNvbHVtbk51bWJlciAgYSBjb2x1bW4gbnVtYmVyLgotICAgKi8KLSAgcHVibGljIEVsZW1lbnRMb2NhdGlvbihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKLSAgewotICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7Ci0gICAgdGhpcy5jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7Ci0gIH0KLQotICAvKioKLSAgICogRWxlbWVudCBsb2NhdGlvbi4KLSAgICogQHBhcmFtIGxvY2F0b3IgIGEgTG9jYXRvciBvYmplY3QuCi0gICAqLwotICBwdWJsaWMgRWxlbWVudExvY2F0aW9uKExvY2F0b3IgbG9jYXRvcikKLSAgewotICAgIHRoaXMubGluZU51bWJlciA9IGxvY2F0b3IuZ2V0TGluZU51bWJlcigpOwotICAgIHRoaXMuY29sdW1uTnVtYmVyID0gbG9jYXRvci5nZXRDb2x1bW5OdW1iZXIoKTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIGxpbmUgbnVtYmVyLgotICAgKiBAcmV0dXJuIGFuIGludCByZXByZXNlbnRpbmcgdGhlIGxpbmUgbnVtYmVyIHZhbHVlLgotICAgKi8KLSAgcHVibGljIGludCBnZXRMaW5lTnVtYmVyKCkKLSAgewotICAgIHJldHVybiB0aGlzLmxpbmVOdW1iZXI7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBjb2x1bW4gbnVtYmVyLgotICAgKiBAcmV0dXJuIGFuIGludCByZXByZXNlbnRpbmcgdGhlIGNvbHVtbiBudW1iZXIgdmFsdWUuCi0gICAqLwotICBwdWJsaWMgaW50IGdldENvbHVtbk51bWJlcigpCi0gIHsKLSAgICByZXR1cm4gdGhpcy5jb2x1bW5OdW1iZXI7Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQotICB7Ci0gICAgcmV0dXJuICJFbGVtZW50IExvY2F0aW9uOlxuIgotICAgICAgKyAiICAiCi0gICAgICArIFdTSUNvbnN0YW50cy5BVFRSX0xJTkVfTlVNQkVSCi0gICAgICArICI9IgotICAgICAgKyB0aGlzLmxpbmVOdW1iZXIKLSAgICAgICsgIlxuIjsKLSAgICAvLysgIiAgIiArIFdTSUNvbnN0YW50cy5BVFRSX0NPTFVNTl9OVU1CRVIgKyAiPSIgKyB0aGlzLmNvbHVtbk51bWJlciArICJcbiI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3htbC9qYXhwL0RvY3VtZW50QnVpbGRlckZhY3RvcnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvamF4cC9Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmVjNWNkLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3htbC9qYXhwL0RvY3VtZW50QnVpbGRlckZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5qYXhwOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLQotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci0KLS8qKgotICogVGhpcyBjbGFzcyBkZWZpbmVzIGEgZmFjdG9yeSBBUEkgdGhhdCBlbmFibGVzIHVzIHRvIG9idGFpbiBhIHBhcnNlciB0aGF0Ci0gKiBwcm9kdWNlcyBET00gb2JqZWN0IHRyZWVzIGZyb20gWE1MIGRvY3VtZW50cy4gTm90ZSB0aGlzIGNsYXNzIHNwZWNpYWxpemVzIAotICogamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS4KLSAqIAotICogQGF1dGhvciBQZXRlciBCcml0dGVuaGFtIChwZXRlcmJyQHVzLmlibS5jb20pCi0gKi8KLXB1YmxpYyBjbGFzcyBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5SW1wbCBleHRlbmRzIERvY3VtZW50QnVpbGRlckZhY3RvcnkKLXsKLQotICBwcm90ZWN0ZWQgSGFzaHRhYmxlIGF0dHJpYnV0ZXMgPSBuZXcgSGFzaHRhYmxlKCk7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYSBEb2N1bWVudEJ1aWxkZXIgdXNpbmcgdGhlIGN1cnJlbnRseSAKLSAgICogY29uZmlndXJlZCBwYXJhbWV0ZXJzLgotICAgKiAKLSAgICogQHJldHVybiBhIG5ldyBpbnN0YW5jZSBvZiBhIERvY3VtZW50QnVpbGRlci4gCi0gICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBpZiBhIERvY3VtZW50QnVpbGRlciBjYW5ub3QKLSAgICogICAgICAgICBiZSBjcmVhdGVkIHdoaWNoIHNhdGlzZmllcyB0aGUgY29uZmlndXJhdGlvbiByZXF1ZXN0ZWQuCi0gICAqLwotICBwdWJsaWMgRG9jdW1lbnRCdWlsZGVyIG5ld0RvY3VtZW50QnVpbGRlcigpCi0gICAgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KLSAgewotICAgIERvY3VtZW50QnVpbGRlciBkb2N1bWVudEJ1aWxkZXIgPSBudWxsOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgZG9jdW1lbnRCdWlsZGVyID0gbmV3IERvY3VtZW50QnVpbGRlckltcGwodGhpcywgYXR0cmlidXRlcyk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZG9jdW1lbnRCdWlsZGVyOwotICB9Ci0KLSAgLyoqCi0gICAqIEFsbG93cyB0aGUgdXNlciB0byByZXRyaWV2ZSBzcGVjaWZpYyBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIAotICAgKiBpbXBsZW1lbnRhdGlvbi4KLSAgICogCi0gICAqIEBwYXJhbSBuYW1lICB0aGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlLgotICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLiAKLSAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gCi0gICAqICAgICAgICAgZG9lc24ndCByZWNvZ25pemUgdGhlIGF0dHJpYnV0ZS4KLSAgICovCi0gIHB1YmxpYyBPYmplY3QgZ2V0QXR0cmlidXRlKFN0cmluZyBuYW1lKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCi0gIHsKLSAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQobmFtZSk7Ci0gIH0KLQotICAvKioKLSAgICogQWxsb3dzIHRoZSB1c2VyIHRvIHNldCBzcGVjaWZpYyBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIAotICAgKiBpbXBsZW1lbnRhdGlvbi4gCi0gICAqIAotICAgKiBAcGFyYW0gbmFtZSAgIHRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUuCi0gICAqIEBwYXJhbSB2YWx1ZSAgdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUuCi0gICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIAotICAgKiAgICAgICAgIGRvZXNuJ3QgcmVjb2duaXplIHRoZSBhdHRyaWJ1dGUuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRBdHRyaWJ1dGUoU3RyaW5nIG5hbWUsIE9iamVjdCB2YWx1ZSkKLSAgICB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCi0gIHsKLSAgICBhdHRyaWJ1dGVzLnB1dChuYW1lLCB2YWx1ZSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEZlYXR1cmUoU3RyaW5nIGFyZzAsIGJvb2xlYW4gYXJnMSkgCi0gICAgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KLSAgewotICAgIC8vIGN1cnJlbnRseSB3ZSBkbyBub3Qgc3VwcG9ydCBzZXR0aW5nIGFueSBmZWF0dXJlCi0JLy8gYXMgcGVyIHNwZWMsIHdlIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24KLQl0aHJvdyBuZXcgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbihhcmcwICsgIiBOb3Qgc3VwcG9ydGVkIik7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBnZXRGZWF0dXJlKFN0cmluZyBhcmcwKSAKLSAgICB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgotICB7Ci0JLy8gYXMgcGVyIHNwZWMsIHdlIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24KLQl0aHJvdyBuZXcgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbihhcmcwICsgIiBpcyBub3Qgc3VwcG9ydGVkIik7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3htbC9qYXhwL0RvY3VtZW50QnVpbGRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3htbC9qYXhwL0RvY3VtZW50QnVpbGRlckltcGwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg1OGRkNy4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvamF4cC9Eb2N1bWVudEJ1aWxkZXJJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5qYXhwOwotCi0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotCi1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5kb20uRE9NSW1wbGVtZW50YXRpb25JbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLmRvbS5Eb2N1bWVudEltcGw7Ci1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMuaW1wbC5Db25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLmRvbS5ET01QYXJzZXI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRE9NSW1wbGVtZW50YXRpb247Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXI7Ci1pbXBvcnQgb3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyOwotaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOwotaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyOwotCi0vKioKLSAqIFVzaW5nIHRoaXMgY2xhc3MsIHdlIGNhbiBvYnRhaW4gYSBEb2N1bWVudCBmcm9tIFhNTC4gVGhpcyBjbGFzcyBpcyBhIAotICogc3BlY2lhbGl6YXRpb24gb2YgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyLgotICogCi0gKiBBbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSAKLSAqIERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyIG1ldGhvZC4gT25jZSBhbiBpbnN0YW5jZSAKLSAqIG9mIHRoaXMgY2xhc3MgaXMgb2J0YWluZWQsIFhNTCBjYW4gYmUgcGFyc2VkIGZyb20gYSB2YXJpZXR5IG9mIGlucHV0IAotICogc291cmNlcy4gVGhlc2UgaW5wdXQgc291cmNlcyBhcmUgSW5wdXRTdHJlYW1zLCBGaWxlcywgVVJMcywgYW5kIFNBWCAKLSAqIElucHV0U291cmNlcy4KLQotVGhpcyBjbGFzcyB3aWxsIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkuLi4KLSAqIAotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGNsYXNzIERvY3VtZW50QnVpbGRlckltcGwgZXh0ZW5kcyBEb2N1bWVudEJ1aWxkZXIKLXsKLSAgcHJvdGVjdGVkIERPTVBhcnNlciBkb21QYXJzZXIgPSBudWxsOwotCi0gIHByb3RlY3RlZCBFbnRpdHlSZXNvbHZlciBlbnRpdHlSZXNvbHZlciA9IG51bGw7Ci0gIHByb3RlY3RlZCBFcnJvckhhbmRsZXIgZXJyb3JIYW5kbGVyID0gbmV3IERlZmF1bHRIYW5kbGVyKCk7Ci0KLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRVNQQUNFU19GRUFUVVJFID0KLSAgICBDb25zdGFudHMuU0FYX0ZFQVRVUkVfUFJFRklYICsgQ29uc3RhbnRzLk5BTUVTUEFDRVNfRkVBVFVSRTsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkFMSURBVElPTl9GRUFUVVJFID0KLSAgICBDb25zdGFudHMuU0FYX0ZFQVRVUkVfUFJFRklYICsgQ29uc3RhbnRzLlZBTElEQVRJT05fRkVBVFVSRTsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIERvY3VtZW50QnVpbGRlckltcGwyLgotICAgKgotICAgKiBAcGFyYW0gZGJGYWN0b3J5ICBhIERvY3VtZW50QnVpbGRlckZhY3Rvcnkgb2JqZWN0LgotICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbiBpZiBhbnkgcGFyc2UgZXJyb3JzIG9jY3VyLiAKLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudEJ1aWxkZXJJbXBsKERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJGYWN0b3J5LCBIYXNodGFibGUgYXR0cmlidXRlcykKLSAgICB0aHJvd3MgU0FYRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBDcmVhdGUgcGFyc2VyCi0gICAgZG9tUGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwotCi0gICAgLy8gU2V0IG5hbWVzcGFjZSBhd2FyZQotICAgIGRvbVBhcnNlci5zZXRGZWF0dXJlKE5BTUVTUEFDRVNfRkVBVFVSRSwgZGJGYWN0b3J5LmlzTmFtZXNwYWNlQXdhcmUoKSk7Ci0KLSAgICAvLyBTZXQgdmFsaWRhdGluZwotICAgIGRvbVBhcnNlci5zZXRGZWF0dXJlKFZBTElEQVRJT05fRkVBVFVSRSwgZGJGYWN0b3J5LmlzVmFsaWRhdGluZygpKTsKLSAgICBpZiAoZGJGYWN0b3J5LmlzVmFsaWRhdGluZygpKSBkb21QYXJzZXIuc2V0RmVhdHVyZShYTUxVdGlscy5GRUFUVVJFX1ZBTElEQVRJT05fU0NIRU1BLCB0cnVlKTsKLQotICAgIC8vIERvIG5vdCBkZWZlciBub2RlIGV4cGFuc2lvbgotICAgIGRvbVBhcnNlci5zZXRGZWF0dXJlKAotICAgICAgQ29uc3RhbnRzLlhFUkNFU19GRUFUVVJFX1BSRUZJWCArIENvbnN0YW50cy5ERUZFUl9OT0RFX0VYUEFOU0lPTl9GRUFUVVJFLAotICAgICAgZmFsc2UpOwotCi0gICAgLy8gU2V0IG90aGVyIGZlYXR1cmVzIGZyb20gdGhlIGRvY3VtZW50IGZhY3RvcnkgYnVpbGRlcgotICAgIGRvbVBhcnNlci5zZXRGZWF0dXJlKAotICAgICAgQ29uc3RhbnRzLlhFUkNFU19GRUFUVVJFX1BSRUZJWCArIENvbnN0YW50cy5JTkNMVURFX0lHTk9SQUJMRV9XSElURVNQQUNFLAotICAgICAgIWRiRmFjdG9yeS5pc0lnbm9yaW5nRWxlbWVudENvbnRlbnRXaGl0ZXNwYWNlKCkpOwotICAgIGRvbVBhcnNlci5zZXRGZWF0dXJlKAotICAgICAgQ29uc3RhbnRzLlhFUkNFU19GRUFUVVJFX1BSRUZJWAotICAgICAgICArIENvbnN0YW50cy5DUkVBVEVfRU5USVRZX1JFRl9OT0RFU19GRUFUVVJFLAotICAgICAgIWRiRmFjdG9yeS5pc0V4cGFuZEVudGl0eVJlZmVyZW5jZXMoKSk7Ci0gICAgZG9tUGFyc2VyLnNldEZlYXR1cmUoCi0gICAgICBDb25zdGFudHMuWEVSQ0VTX0ZFQVRVUkVfUFJFRklYICsgQ29uc3RhbnRzLklOQ0xVREVfQ09NTUVOVFNfRkVBVFVSRSwKLSAgICAgICFkYkZhY3RvcnkuaXNJZ25vcmluZ0NvbW1lbnRzKCkpOwotICAgIGRvbVBhcnNlci5zZXRGZWF0dXJlKAotICAgICAgQ29uc3RhbnRzLlhFUkNFU19GRUFUVVJFX1BSRUZJWCArIENvbnN0YW50cy5DUkVBVEVfQ0RBVEFfTk9ERVNfRkVBVFVSRSwKLSAgICAgICFkYkZhY3RvcnkuaXNDb2FsZXNjaW5nKCkpOwotICAgCi0gICAgLy8gc2V0IGZlYXR1cmVzIGFuZCBwcm9wZXJ0aWVzIHNwZWNpZmllZCBhdCBmYWN0b3J5IGxldmVsCi0gICAgaWYgKGF0dHJpYnV0ZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBmb3IgKEVudW1lcmF0aW9uIGk9YXR0cmlidXRlcy5rZXlzKCk7IGkuaGFzTW9yZUVsZW1lbnRzKCk7KQotICAgICAgewotICAgICAgICBTdHJpbmcgYXR0cmlidXRlID0gKFN0cmluZylpLm5leHRFbGVtZW50KCk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGUuZXF1YWxzKFhNTFV0aWxzLkpBWFBfU0NIRU1BX1NPVVJDRSkpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBmb3IgbXVsdGlwbGUgc2NoZW1hIHZhbGlkYXRpb24gbWF5IGJlIGFycmF5IG9mIElucHV0U291cmNlIAotICAgICAgICAgIGlmKGF0dHJpYnV0ZXMuZ2V0KGF0dHJpYnV0ZSkgaW5zdGFuY2VvZiBJbnB1dFNvdXJjZVtdKQotICAgICAgICAgICAgZG9tUGFyc2VyLnNldFByb3BlcnR5KGF0dHJpYnV0ZSwgKElucHV0U291cmNlW10pYXR0cmlidXRlcy5nZXQoYXR0cmlidXRlKSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgZG9tUGFyc2VyLnNldFByb3BlcnR5KGF0dHJpYnV0ZSwgKElucHV0U291cmNlKWF0dHJpYnV0ZXMuZ2V0KGF0dHJpYnV0ZSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGRvbVBhcnNlci5zZXRQcm9wZXJ0eShhdHRyaWJ1dGUsIGF0dHJpYnV0ZXMuZ2V0KGF0dHJpYnV0ZSkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFBhcnNlIHRoZSBjb250ZW50IG9mIHRoZSBnaXZlbiBpbnB1dCBzb3VyY2UgYXMgYW4gWE1MIGRvY3VtZW50IGFuZCByZXR1cm4gYSBuZXcgRE9NLgotICAgKiBAcGFyYW0gaXMgIElucHV0U3RyZWFtIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgdG8gYmUgcGFyc2VkLiAKLSAgICogQHRocm93cyBTQVhFeGNlcHRpb24gaWYgYW55IHBhcnNlIGVycm9ycyBvY2N1ci4gCi0gICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gaWYgYW55IElPIGVycm9ycyBvY2N1ci4gCi0gICAqLwotICBwdWJsaWMgRG9jdW1lbnQgcGFyc2UoSW5wdXRTb3VyY2UgaXMpIHRocm93cyBTQVhFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0gIHsKLQlDbGFzc0xvYWRlciBjdXJyZW50TG9hZGVyID0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKTsgICAKLQl0cnkKLQl7Ci0JICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihYTUxVdGlscy5jbGFzcy5nZXRDbGFzc0xvYWRlcigpKTsgICAKLSAJCi0gICAgICAvLyBTZXQgZW50aXR5IHJlc29sdmVyCi0gICAgICBpZiAodGhpcy5lbnRpdHlSZXNvbHZlciAhPSBudWxsKQotICAgICAgICBkb21QYXJzZXIuc2V0RW50aXR5UmVzb2x2ZXIodGhpcy5lbnRpdHlSZXNvbHZlcik7Ci0KLSAgICAgIC8vIFNldCBlcnJvciBoYW5kbGVyICAgIAotICAgICAgaWYgKHRoaXMuZXJyb3JIYW5kbGVyICE9IG51bGwpCi0gICAgICAgIGRvbVBhcnNlci5zZXRFcnJvckhhbmRsZXIodGhpcy5lcnJvckhhbmRsZXIpOwotCi0gICAgICAvLyBQYXJzZSBpbnB1dCBzb3VyY2UKLSAgICAgIGRvbVBhcnNlci5wYXJzZShpcyk7Ci0KLSAgICAgIC8vIFJldHVybiB0aGUgZG9jdW1lbnQgdGhhdCB3YXMgY3JlYXRlZAotICAgICAgcmV0dXJuIGRvbVBhcnNlci5nZXREb2N1bWVudCgpOwotCX0KLSAgICBmaW5hbGx5Ci0gICAgeyAKLSAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKGN1cnJlbnRMb2FkZXIpOwotICAgIH0gICAgCi0gIH0KLQotICAvKioKLSAgICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoaXMgcGFyc2VyIGlzIGNvbmZpZ3VyZWQgdG8gdW5kZXJzdGFuZCBuYW1lc3BhY2VzLgotICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBwYXJzZXIgaXMgY29uZmlndXJlZCB0byB1bmRlcnN0YW5kIG5hbWVzcGFjZXM7IGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzTmFtZXNwYWNlQXdhcmUoKQotICB7Ci0gICAgYm9vbGVhbiBuYW1lc3BhY2VBd2FyZSA9IGZhbHNlOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgbmFtZXNwYWNlQXdhcmUgPSBkb21QYXJzZXIuZ2V0RmVhdHVyZShOQU1FU1BBQ0VTX0ZFQVRVUkUpOwotICAgIH0KLQotICAgIGNhdGNoIChTQVhFeGNlcHRpb24gc2UpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oc2UudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5hbWVzcGFjZUF3YXJlOwotICB9Ci0KLSAgLyoqCi0gICAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBhcnNlciBpcyBjb25maWd1cmVkIHRvIHZhbGlkYXRlIFhNTCBkb2N1bWVudHMuCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIHBhcnNlciBpcyBjb25maWd1cmVkIHRvIHZhbGlkYXRlIFhNTCBkb2N1bWVudHM7IGZhbHNlIG90aGVyd2lzZS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzVmFsaWRhdGluZygpCi0gIHsKLSAgICBib29sZWFuIHZhbGlkYXRpbmcgPSBmYWxzZTsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIHZhbGlkYXRpbmcgPSBkb21QYXJzZXIuZ2V0RmVhdHVyZShWQUxJREFUSU9OX0ZFQVRVUkUpOwotICAgIH0KLQotICAgIGNhdGNoIChTQVhFeGNlcHRpb24gc2UpCi0gICAgewotICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oc2UudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkYXRpbmc7Ci0gIH0KLQotICAvKioKLSAgICogU3BlY2lmeSB0aGUgRW50aXR5UmVzb2x2ZXIgdG8gYmUgdXNlZCB0byByZXNvbHZlIGVudGl0aWVzIHByZXNlbnQgCi0gICAqIGluIHRoZSBYTUwgZG9jdW1lbnQgdG8gYmUgcGFyc2VkLiBTZXR0aW5nIHRoaXMgdG8gbnVsbCB3aWxsIHJlc3VsdCAKLSAgICogaW4gdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gdXNpbmcgaXQncyBvd24gZGVmYXVsdCAKLSAgICogaW1wbGVtZW50YXRpb24gYW5kIGJlaGF2aW9yLgotICAgKiAKLSAgICogQHBhcmFtIGVyICB0aGUgRW50aXR5UmVzb2x2ZXIgdG8gYmUgdXNlZCB0byByZXNvbHZlIGVudGl0aWVzIAotICAgKiAgICAgICAgICAgIHByZXNlbnQgaW4gdGhlIFhNTCBkb2N1bWVudCB0byBiZSBwYXJzZWQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFbnRpdHlSZXNvbHZlcihFbnRpdHlSZXNvbHZlciBlbnRpdHlSZXNvbHZlcikKLSAgewotICAgIHRoaXMuZW50aXR5UmVzb2x2ZXIgPSBlbnRpdHlSZXNvbHZlcjsKLSAgfQotCi0gIC8qKgotICAgKiBTcGVjaWZ5IHRoZSBFcnJvckhhbmRsZXIgdG8gYmUgdXNlZCB0byByZXBvcnQgZXJyb3JzIHByZXNlbnQgaW4gCi0gICAqIHRoZSBYTUwgZG9jdW1lbnQgdG8gYmUgcGFyc2VkLiBTZXR0aW5nIHRoaXMgdG8gbnVsbCB3aWxsIHJlc3VsdCAKLSAgICogaW4gdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gdXNpbmcgaXQncyBvd24gZGVmYXVsdCAKLSAgICogaW1wbGVtZW50YXRpb24gYW5kIGJlaGF2aW9yLiAKLSAgICogCi0gICAqIHBhcmFtIGVoICB0aGUgRXJyb3JIYW5kbGVyIHRvIGJlIHVzZWQgdG8gcmVwb3J0IGVycm9ycyBwcmVzZW50IGluIAotICAgKiAgICAgICAgICAgdGhlIFhNTCBkb2N1bWVudCB0byBiZSBwYXJzZWQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRFcnJvckhhbmRsZXIoRXJyb3JIYW5kbGVyIGVycm9ySGFuZGxlcikKLSAgewotICAgIHRoaXMuZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyOwotICB9Ci0KLSAgLyoqCi0gICAqIE9idGFpbiBhIG5ldyBpbnN0YW5jZSBvZiBhIERPTSBEb2N1bWVudCBvYmplY3QgdG8gYnVpbGQgYSBET00gCi0gICAqIHRyZWUgd2l0aC4gQW4gYWx0ZXJuYXRpdmUgd2F5IHRvIGNyZWF0ZSBhIERPTSBEb2N1bWVudCBvYmplY3QgCi0gICAqIGlzIHRvIHVzZSB0aGUgZ2V0RE9NSW1wbGVtZW50YXRpb24gbWV0aG9kIHRvIGdldCBhIERPTSBMZXZlbCAyIAotICAgKiBET01JbXBsZW1lbnRhdGlvbiBvYmplY3QgYW5kIHRoZW4gdXNlIERPTSBMZXZlbCAyIG1ldGhvZHMgb24gCi0gICAqIHRoYXQgb2JqZWN0IHRvIGNyZWF0ZSBhIERPTSBEb2N1bWVudCBvYmplY3QuCi0gICAqIAotICAgKiBAcmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIGEgRE9NIERvY3VtZW50IG9iamVjdC4KLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudCBuZXdEb2N1bWVudCgpCi0gIHsKLSAgICByZXR1cm4gbmV3IERvY3VtZW50SW1wbCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIE9idGFpbiBhbiBpbnN0YW5jZSBvZiBhIERPTUltcGxlbWVudGF0aW9uIG9iamVjdC4gCi0gICAqIEByZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgYSBET01JbXBsZW1lbnRhdGlvbi4KLSAgICovCi0gIHB1YmxpYyBET01JbXBsZW1lbnRhdGlvbiBnZXRET01JbXBsZW1lbnRhdGlvbigpCi0gIHsKLSAgICByZXR1cm4gbmV3IERPTUltcGxlbWVudGF0aW9uSW1wbCgpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3htbC9zY2hlbWEvVGFyZ2V0TmFtZXNwYWNlUHJvY2Vzc29yLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvc2NoZW1hL1RhcmdldE5hbWVzcGFjZVByb2Nlc3Nvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGMyNDM1Li4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9jb3JlL3htbC9zY2hlbWEvVGFyZ2V0TmFtZXNwYWNlUHJvY2Vzc29yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5zY2hlbWE7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVGVzdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBwcm9jZXNzZXMgdGFyZ2V0IG5hbWVzcGFjZXMuIE5vdGUgdGhpcyBjbGFzcyBpcyBhIHNwZWNpYWxpemF0aW9uCi0gKiBvZiBvcmcud3NpLnhtbC5zY2hlbWEuWE1MU2NoZW1hUHJvY2Vzc29yLgotICogCi0gKiBAYXV0aG9yIFBldGVyIEJyaXR0ZW5oYW0gKHBldGVyYnJAdXMuaWJtLmNvbSkKLSAqIEB2ZXJzaW9uIDEuMC4xCi0gKi8KLXB1YmxpYyBjbGFzcyBUYXJnZXROYW1lc3BhY2VQcm9jZXNzb3IgZXh0ZW5kcyBYTUxTY2hlbWFQcm9jZXNzb3IKLXsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIFRhcmdldE5hbWVzcGFjZVByb2Nlc3MuCi0gICAqIAotICAgKiBAcGFyYW0gY29udGV4dAotICAgKiAgICAgICAgICAgIGRvY3VtZW50IGNvbnRleHQKLSAgICogQHBhcmFtIGRvY3VtZW50TGlzdAotICAgKiAgICAgICAgICAgIGNhY2hlIG9mIHByZXZpb3VzbHkgcGFyc2VkIGRvY3VtZW50cwotICAgKi8KLSAgcHVibGljIFRhcmdldE5hbWVzcGFjZVByb2Nlc3NvcihTdHJpbmcgY29udGV4dCkKLSAgewotICAgIHN1cGVyKGNvbnRleHQsIGZhbHNlKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NTY2hlbWEoRWxlbWVudCBlbGVtZW50KQotICB7Ci0gICAgU3RyaW5nIHRucyA9IG51bGw7Ci0gICAgQXR0ciBhdHRyID0gWE1MVXRpbHMuZ2V0QXR0cmlidXRlKGVsZW1lbnQsIEFUVFJfWFNEX1RBUkdFVE5BTUVTUEFDRSk7Ci0KLSAgICAvLyBJZiB0aGUgYXR0cmlidXRlIHdhcyBmb3VuZCBhbmQgdmFsdWUgaXMgbm90IG51bGwsIHRoZW4gYWRkIGl0IHRvIHRoZSBsaXN0Ci0gICAgaWYgKChhdHRyICE9IG51bGwpICYmICgodG5zID0gYXR0ci5nZXRWYWx1ZSgpKSAhPSBudWxsKSkKLSAgICB7Ci0gICAgICAvLyBBZGQgdGhlIHRhcmdldE5hbWVzcGFjZSB0byB0aGUgcmV0dXJuIGxpc3QKLSAgICAgIHJldHVybkxpc3QuYWRkKHRucyk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIFNlYXJjaCBmb3IgYWxsIHNjaGVtYSBlbGVtZW50cywgbG9hZCB0aGUgeHNkIGRvY3VtZW50cywgYW5kIHRoZW4gcHJvY2VzcwotICAgKiB0aGVtLgotICAgKiAKLSAgICogQHBhcmFtIG5vZGUKLSAgICogICAgICAgICAgICBub2RlLgotICAgKiBAcmV0dXJuIGEgbGlzdC4KLSAgICogQHRocm93cyBXU0lFeGNlcHRpb24KLSAgICogICAgICAgICAgICAgaWYgdGhlIFhNTCBzY2hlbWEgZmlsZSBpcyBub3QgZm91bmQgb3IgaWYgaXQgaXMgbm90IGZvcm1hdHRlZAotICAgKiAgICAgICAgICAgICBjb3JyZWN0bHkuCi0gICAqLwotICBwdWJsaWMgTGlzdCBwcm9jZXNzQWxsU2NoZW1hKE5vZGUgbm9kZSkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIHByb2Nlc3NBbGxTY2hlbWEobm9kZSwgY29udGV4dCk7Ci0gIH0KLQotICAvKioKLSAgICogU2VhcmNoIGZvciBhbGwgc2NoZW1hIGVsZW1lbnRzLCBsb2FkIHRoZSB4c2QgZG9jdW1lbnRzLCBhbmQgdGhlbiBwcm9jZXNzCi0gICAqIHRoZW0uCi0gICAqIAotICAgKiBAcGFyYW0gbm9kZQotICAgKiAgICAgICAgICAgIG5vZGUuCi0gICAqIEByZXR1cm4gYSBsaXN0LgotICAgKiBAdGhyb3dzIFdTSUV4Y2VwdGlvbgotICAgKiAgICAgICAgICAgICBpZiB0aGUgWE1MIHNjaGVtYSBmaWxlIGlzIG5vdCBmb3VuZCBvciBpZiBpdCBpcyBub3QgZm9ybWF0dGVkCi0gICAqICAgICAgICAgICAgIGNvcnJlY3RseS4KLSAgICovCi0gIHByaXZhdGUgTGlzdCBwcm9jZXNzQWxsU2NoZW1hKE5vZGUgbm9kZSwgU3RyaW5nIGN0eCkgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0JQ2xhc3NMb2FkZXIgY3VycmVudExvYWRlciA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCk7ICAgCi0JdHJ5Ci0JewotICAgCSAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5zZXRDb250ZXh0Q2xhc3NMb2FkZXIoWE1MVXRpbHMuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKSk7ICAgCi0JCi0gICAgICAvLyBpZiB4c2Q6c2NoZW1hIGVsZW1lbnQgaXMgZm91bmQgLT4gcHJvY2VzcyBzY2hlbWEKLSAgICAgIGlmIChYTUxVdGlscy5lcXVhbHMobm9kZSwgRUxFTV9YU0RfU0NIRU1BKSkKLSAgICAgIHsKLSAgICAgICAgcHJvY2Vzc1NjaGVtYSgoRWxlbWVudCkgbm9kZSk7Ci0KLSAgICAgICAgTm9kZSBuID0gbm9kZS5nZXRGaXJzdENoaWxkKCk7Ci0gICAgICAgIHdoaWxlIChuICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoTm9kZS5FTEVNRU5UX05PREUgPT0gbi5nZXROb2RlVHlwZSgpJiYgWE1MVXRpbHMuZXF1YWxzKG4sIEVMRU1fWFNEX0lNUE9SVCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgQXR0ciBzY2hlbWFMb2NhdGlvbiA9IFhNTFV0aWxzLmdldEF0dHJpYnV0ZSgoRWxlbWVudCkgbiwgQVRUUl9YU0RfU0NIRU1BTE9DQVRJT04pOwotCi0gICAgICAgICAgICAvLyBUcnkgdG8gcGFyc2UgaW1wb3J0ZWQgWFNECi0gICAgICAgICAgICBpZiAoc2NoZW1hTG9jYXRpb24gIT0gbnVsbCAmJiBzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAJICBpZiAoIXNjaGVtYUxvY2F0aW9ucy5jb250YWlucyhzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpKSkKLSAgICAgICAgICAJICB7Ci0gICAgICAgICAgICAgICAgc2NoZW1hTG9jYXRpb25zLmFkZChzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICB0cnkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAvLyBSZWFkIGFuZCBwUGFyc2UgdGhlIFhNTCBzY2hlbWEgZG9jdW1lbnQKLSAgICAgICAgICAgICAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gcGFyc2VYTUxEb2N1bWVudFVSTChzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpLCBjdHgsIFRlc3RVdGlscy5nZXRYTUxTY2hlbWFMb2NhdGlvbigpKTsKLSAgICAgICAgICAgICAgICAgIHByb2Nlc3NBbGxTY2hlbWEoZG9jdW1lbnQuZ2V0RG9jdW1lbnRFbGVtZW50KCksIFhNTFV0aWxzLmNyZWF0ZVVSTFN0cmluZyhzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpLCBjdHgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2F0Y2ggKFdTSUV4Y2VwdGlvbiBlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikgdGhyb3cgZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2F0Y2ggKFRocm93YWJsZSB0KQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvLyBOT1RFOiBBbiBleGNlcHRpb24gd2lsbCBvY2N1ciBpZiB0aGUgWE1MIHNjaGVtYSBmaWxlIGlzIG5vdAotICAJCQkgICAgIC8vIGZvdW5kIG9yIGlmIGl0IGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5Ci0gICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbih0LmdldE1lc3NhZ2UoKSwgdCk7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgIH0KLSAgICAgfQotCi0gICAgIC8vIFJldHVybiBsaXN0IGNyZWF0ZWQgYnkgdGhlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGlzIGNsYXNzCi0gICAgIHJldHVybiByZXR1cm5MaXN0OwotICAgIH0KLSAgICBmaW5hbGx5Ci0gICAgeyAKLSAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKGN1cnJlbnRMb2FkZXIpOwotICAgIH0gICAgCi19Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvc2NoZW1hL1hNTFNjaGVtYVByb2Nlc3Nvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL3NjaGVtYS9YTUxTY2hlbWFQcm9jZXNzb3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZlNTJlMS4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvc2NoZW1hL1hNTFNjaGVtYVByb2Nlc3Nvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuc2NoZW1hOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnV0aWwuVGVzdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MRG9jdW1lbnRDYWNoZVVzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnhtbC5YTUxUYWdzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKLWltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLS8qKgotICogVGhpcyBhYnN0cmFjdCBjbGFzcyBpcyB1c2VkIHRvIHByb2Nlc3MgYW4gWE1MIFNjaGVtYS4KLSAqIAotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIFhNTFNjaGVtYVByb2Nlc3NvcgotICBleHRlbmRzIFhNTERvY3VtZW50Q2FjaGVVc2VyCi0gIGltcGxlbWVudHMgWE1MVGFncwotewotICBwcm90ZWN0ZWQgTGlzdCByZXR1cm5MaXN0ID0gbmV3IFZlY3RvcigpOwotICBwcm90ZWN0ZWQgU3RyaW5nIGNvbnRleHQ7Ci0gIHByb3RlY3RlZCBib29sZWFuIHRocm93RXhjZXB0aW9uID0gdHJ1ZTsKLSAgcHJvdGVjdGVkIExpc3Qgc2NoZW1hTG9jYXRpb25zID0gbmV3IFZlY3RvcigpOwotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgWE1MU2NoZW1hUHJvY2Vzc29yLgotICAgKiBAcGFyYW0gY29udGV4dCAgICAgICBkb2N1bWVudCBjb250ZXh0LiAKLSAgICogQHBhcmFtIGRvY3VtZW50TGlzdCAgY2FjaGUgb2YgcHJldmlvdXNseSBwYXJzZWQgZG9jdW1lbnRzLgotICAgKi8KLSAgcHVibGljIFhNTFNjaGVtYVByb2Nlc3NvcihTdHJpbmcgY29udGV4dCkKLSAgewotICAgIHRoaXMoY29udGV4dCwgdHJ1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogQ29uc3RydWN0b3IgZm9yIFhNTFNjaGVtYVByb2Nlc3Nvci4KLSAgICogQHBhcmFtIGNvbnRleHQgICAgICAgIGRvY3VtZW50IGNvbnRleHQuIAotICAgKiBAcGFyYW0gZG9jdW1lbnRMaXN0ICAgY2FjaGUgb2YgcHJldmlvdXNseSBwYXJzZWQgZG9jdW1lbnRzLgotICAgKiBAcGFyYW0gdGhyb3dFeGNlcHRpb24gaW5kaWNhdGVzIGlmIGFuIGV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIGlmIHRoZXJlIGlzIGEgcGFyc2luZyBwcm9ibGVtLgotICAgKi8KLSAgcHVibGljIFhNTFNjaGVtYVByb2Nlc3NvcigKLSAgICBTdHJpbmcgY29udGV4dCwKLSAgICBib29sZWFuIHRocm93RXhjZXB0aW9uKQotICB7Ci0gICAgc3VwZXIoKTsKLQotICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7Ci0gICAgdGhpcy50aHJvd0V4Y2VwdGlvbiA9IHRocm93RXhjZXB0aW9uOwotICB9Ci0KLSAgLyoqCi0gICAqIFNlYXJjaCBmb3IgYWxsIHNjaGVtYSBlbGVtZW50cywgbG9hZCB0aGUgeHNkIGRvY3VtZW50cywgYW5kIHRoZW4gcHJvY2VzcyB0aGVtLgotICAgKiBAcGFyYW0gbm9kZSAgbm9kZS4KLSAgICogQHJldHVybiBhIGxpc3QuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZSBYTUwgc2NoZW1hIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlmIGl0IGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5LgotICAgKi8KLSAgcHVibGljIExpc3QgcHJvY2Vzc0FsbFNjaGVtYShOb2RlIG5vZGUpIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJldHVybiBwcm9jZXNzQWxsU2NoZW1hKG5vZGUsIGNvbnRleHQpOwotICB9Ci0KLSAgLyoqCi0gICAqIFNlYXJjaCBmb3IgYWxsIHNjaGVtYSBlbGVtZW50cywgbG9hZCB0aGUgeHNkIGRvY3VtZW50cywgYW5kIHRoZW4gcHJvY2VzcyB0aGVtLgotICAgKiBAcGFyYW0gbm9kZSAgbm9kZS4KLSAgICogQHJldHVybiBhIGxpc3QuCi0gICAqIEB0aHJvd3MgV1NJRXhjZXB0aW9uIGlmIHRoZSBYTUwgc2NoZW1hIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlmIGl0IGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5LgotICAgKi8KLSAgcHJpdmF0ZSBMaXN0IHByb2Nlc3NBbGxTY2hlbWEoTm9kZSBub2RlLCBTdHJpbmcgY3R4KSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLQlDbGFzc0xvYWRlciBjdXJyZW50TG9hZGVyID0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKTsgICAKLQl0cnkKLQl7Ci0gICAJICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihYTUxTY2hlbWFQcm9jZXNzb3IuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKSk7ICAgCi0gICAgICAvLyBQcm9jZXNzIGFsbCBub2RlcwotICAgICAgd2hpbGUgKG5vZGUgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgLy8gSWYgdGhpcyBpcyBhbiBlbGVtZW50IG5vZGUsIHRoZW4gY29udGludWUKLSAgICAgICAgaWYgKE5vZGUuRUxFTUVOVF9OT0RFID09IG5vZGUuZ2V0Tm9kZVR5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgIC8vIGlmIHhzZDpzY2hlbWEgZWxlbWVudCBpcyBmb3VuZCAtPiBwcm9jZXNzIHNjaGVtYQotICAgICAgICAgIGlmIChYTUxVdGlscy5lcXVhbHMobm9kZSwgRUxFTV9YU0RfU0NIRU1BKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwcm9jZXNzU2NoZW1hKChFbGVtZW50KSBub2RlKTsKLQotICAgICAgICAgICAgLy8gUHJvY2VzcyBhbGwgY2hpbGRyZW4gb2YgdGhlIHNjaGVtYSBlbGVtZW50Ci0gICAgICAgICAgICBwcm9jZXNzQWxsU2NoZW1hKG5vZGUuZ2V0Rmlyc3RDaGlsZCgpLCBjdHgpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIC8vIGlmIHhzZDppbXBvcnQgZWxlbWVudCBpcyBmb3VuZCAtPiBsb2FkIHNjaGVtYSBhbmQgcHJvY2VzcyBzY2hlbWEKLSAgICAgICAgICBlbHNlIGlmIChYTUxVdGlscy5lcXVhbHMobm9kZSwgRUxFTV9YU0RfSU1QT1JUKSkKLSAgICAgICAgICB7Ci0KLSAgICAgICAgICAgIEF0dHIgc2NoZW1hTG9jYXRpb24gPQotICAgICAgICAgICAgICBYTUxVdGlscy5nZXRBdHRyaWJ1dGUoKEVsZW1lbnQpIG5vZGUsIEFUVFJfWFNEX1NDSEVNQUxPQ0FUSU9OKTsKLQotICAgICAgICAgICAgLy8gVHJ5IHRvIHBhcnNlIGltcG9ydGVkIFhTRAotICAgICAgICAgICAgaWYgKHNjaGVtYUxvY2F0aW9uICE9IG51bGwgJiYgc2NoZW1hTG9jYXRpb24uZ2V0VmFsdWUoKSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgIAkgIGlmICghc2NoZW1hTG9jYXRpb25zLmNvbnRhaW5zKHNjaGVtYUxvY2F0aW9uLmdldFZhbHVlKCkpKQotICAgICAgICAgIAkgIHsKLSAgICAgICAgICAJCXNjaGVtYUxvY2F0aW9ucy5hZGQoc2NoZW1hTG9jYXRpb24uZ2V0VmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgLy8gUmVhZCBhbmQgcFBhcnNlIHRoZSBYTUwgc2NoZW1hIGRvY3VtZW50Ci0gICAgICAgICAgICAgICAgICBEb2N1bWVudCBkb2N1bWVudCA9Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlWE1MRG9jdW1lbnRVUkwoCi0gICAgICAgICAgICAgICAgICAgICAgc2NoZW1hTG9jYXRpb24uZ2V0VmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgVGVzdFV0aWxzLmdldFhNTFNjaGVtYUxvY2F0aW9uKCkpOwotCi0gICAgICAgICAgICAgICAgICBwcm9jZXNzQWxsU2NoZW1hKGRvY3VtZW50LmdldERvY3VtZW50RWxlbWVudCgpLAotICAgICAgICAgICAgICAgICAgICAgIFhNTFV0aWxzLmNyZWF0ZVVSTFN0cmluZyhzY2hlbWFMb2NhdGlvbi5nZXRWYWx1ZSgpLCBjdHgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2F0Y2ggKFdTSUV4Y2VwdGlvbiBlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIHQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgLy8gTk9URTogQW4gZXhjZXB0aW9uIHdpbGwgb2NjdXIgaWYgdGhlIFhNTCBzY2hlbWEgZmlsZSBpcyBub3QgZm91bmQgb3IgaWYgaXQgaXMgbm90IGZvcm1hdHRlZCBjb3JyZWN0bHkKLSAgICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdTSUV4Y2VwdGlvbih0LmdldE1lc3NhZ2UoKSwgdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGVsc2UgaXRlcmF0ZSBlbGVtZW50IHJlY3Vyc2l2ZWx5Ci0gICAgICAgICAgICBwcm9jZXNzQWxsU2NoZW1hKG5vZGUuZ2V0Rmlyc3RDaGlsZCgpLCBjdHgpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdldCBuZXh0IHNpYmlsaW5nCi0gICAgICAgIG5vZGUgPSBub2RlLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICB9Ci0KLSAgICB9Ci0gICAgZmluYWxseQotICAgIHsgCi0gICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihjdXJyZW50TG9hZGVyKTsKLSAgICB9ICAgIAotCi0KLSAgICAvLyBSZXR1cm4gbGlzdCBjcmVhdGVkIGJ5IHRoZSBjbGFzcyB0aGF0IGV4dGVuZHMgdGhpcyBjbGFzcwotICAgIHJldHVybiByZXR1cm5MaXN0OwotICB9Ci0KLSAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgcHJvY2Vzc1NjaGVtYShFbGVtZW50IGVsZW1lbnQpOwotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvc2NoZW1hL1hNTFNjaGVtYVZhbGlkYXRvci5qYXZhIGIvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL2NvcmUveG1sL3NjaGVtYS9YTUxTY2hlbWFWYWxpZGF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZjYTEzMC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvY29yZS94bWwvc2NoZW1hL1hNTFNjaGVtYVZhbGlkYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuc2NoZW1hOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS51dGlsLlRlc3RVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUueG1sLlhNTFV0aWxzOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci0KLWltcG9ydCBjb20uaWJtLndzZGwudXRpbC54bWwuRE9NMldyaXRlcjsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gdmFsaWRhdGUgYW4gWE1MIFNjaGVtYS4KLSAqIAotICogQGF1dGhvciBQZXRlciAgQnJpdHRlbmhhbSAocGV0ZXJickB1cy5pYm0uY29tKQotICogQHZlcnNpb24gMS4wLjEKLSAqLwotcHVibGljIGNsYXNzIFhNTFNjaGVtYVZhbGlkYXRvciBleHRlbmRzIFhNTFNjaGVtYVByb2Nlc3NvcgotewotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgWE1MTlNfUFJFRklYID0gInhtbG5zOiI7Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBYTUxTY2hlbWFWYWxpZGF0b3IuCi0gICAqIEBwYXJhbSBjb250ZXh0ICAgICAgIGRvY3VtZW50IGNvbnRleHQuIAotICAgKiBAcGFyYW0gZG9jdW1lbnRMaXN0ICBjYWNoZSBvZiBwcmV2aW91c2x5IHBhcnNlZCBkb2N1bWVudHMuCi0gICAqLwotICBwdWJsaWMgWE1MU2NoZW1hVmFsaWRhdG9yKFN0cmluZyBjb250ZXh0KQotICB7Ci0gICAgc3VwZXIoY29udGV4dCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzU2NoZW1hKEVsZW1lbnQgZWxlbWVudCkKLSAgewotICAgIE5hbWVkTm9kZU1hcCBhdHRyTGlzdDsKLQotICAgIEhhc2hNYXAgZWxlbWVudE1hcCA9IG5ldyBIYXNoTWFwKCk7Ci0gICAgSGFzaE1hcCBuc01hcCA9IG5ldyBIYXNoTWFwKCk7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBHZXQgc2NoZW1hIGNvbnRlbnQgYXMgYSBzdHJpbmcKLSAgICAgIFN0cmluZyBzY2hlbWEgPSBET00yV3JpdGVyLm5vZGVUb1N0cmluZyhlbGVtZW50KTsKLQotICAgICAgLy8gR2V0IGxpc3Qgb2YgZWxlbWVudCBuYW1lc3BhY2VzCi0gICAgICBpZiAoKGF0dHJMaXN0ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVzKCkpICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGFkZE5hbWVzcGFjZXMoYXR0ckxpc3QsIGVsZW1lbnRNYXAsIG51bGwpOwotICAgICAgfQotCi0gICAgICAvLyBJZiBlbGVtZW50TWFwIGRvZXMgbm90IGNvbnRhaW4gZW50cnkgZm9yIGl0J3Mgb3duIG5hbWVzcGFjZSwgdGhlbiBhZGQgaXQKLSAgICAgIGlmIChlbGVtZW50TWFwLmdldChYTUxOU19QUkVGSVggKyBlbGVtZW50LmdldFByZWZpeCgpKSA9PSBudWxsKQotICAgICAgewotICAgICAgICBlbGVtZW50TWFwLnB1dCgKLSAgICAgICAgICBYTUxOU19QUkVGSVggKyBlbGVtZW50LmdldFByZWZpeCgpLAotICAgICAgICAgIGVsZW1lbnQuZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgICAgfQotCi0gICAgICAvLyBHZXQgZmlyc3QgcGFyZW50IG5vZGUgYW5kIHRoZW4gcHJvY2VzcyBhbGwgb2YgdGhlbSB1bnRpbCB5b3UgaGl0IHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50Ci0gICAgICBOb2RlIHBhcmVudE5vZGUgPSBlbGVtZW50LmdldFBhcmVudE5vZGUoKTsKLSAgICAgIHdoaWxlIChwYXJlbnROb2RlICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIC8vIE9ubHkgcHJvY2VzcyBFbGVtZW50IG5vZGVzCi0gICAgICAgIGlmIChwYXJlbnROb2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgICAgIHsKLSAgICAgICAgICAvLyBHZXQgdGhlIGxpc3Qgb2YgYXR0cmlidXRlcyBmb3IgdGhlIHBhcmVudCBub2RlCi0gICAgICAgICAgYXR0ckxpc3QgPSBwYXJlbnROb2RlLmdldEF0dHJpYnV0ZXMoKTsKLQotICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBhdHRyaWJ1dGVzLCBsb29rIGZvciB0aGUgeG1sbnM6IGF0dHJpYnV0ZXMKLSAgICAgICAgICBpZiAoYXR0ckxpc3QgIT0gbnVsbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBhZGROYW1lc3BhY2VzKGF0dHJMaXN0LCBuc01hcCwgZWxlbWVudE1hcCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUuZ2V0UGFyZW50Tm9kZSgpOwotICAgICAgfQotCi0gICAgICAvLyBCdWlsZCBuYW1lc3BhY2UgbGlzdAotICAgICAgaWYgKG5zTWFwLnNpemUoKSA+IDApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBhdHRyOwotICAgICAgICBTdHJpbmcgbmFtZXNwYWNlTGlzdCA9ICIiOwotICAgICAgICBJdGVyYXRvciBpdGVyYXRvciA9IG5zTWFwLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBhdHRyID0gKFN0cmluZykgaXRlcmF0b3IubmV4dCgpOwotICAgICAgICAgIG5hbWVzcGFjZUxpc3QgKz0gIiAiICsgYXR0ciArICI9XCIiICsgbnNNYXAuZ2V0KGF0dHIpICsgIlwiIjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFkZCBuYW1lc3BhY2Ugc2V0dGluZ3MsIHNpbmNlIHRoZSBET00yV3JpdGVyIHdpbGwgbWlzcyBhbnkgdGhhdCBhcmUgdXNlZCBhcyBhdHRyaWJ1dGUgdmFsdWVzCi0gICAgICAgIGludCBpbmRleCA9IHNjaGVtYS5pbmRleE9mKCI+Iik7Ci0gICAgICAgIGlmIChpbmRleCA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgc3RhcnQgPSBzY2hlbWEuc3Vic3RyaW5nKDAsIGluZGV4KTsKLSAgICAgICAgICBTdHJpbmcgZW5kID0gc2NoZW1hLnN1YnN0cmluZyhpbmRleCk7Ci0KLSAgICAgICAgICBzY2hlbWEgPSBzdGFydCArIG5hbWVzcGFjZUxpc3QgKyBlbmQ7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLy8gU2NoZW1hIHZhbGlkYXRlIHRoZSBYTUwgc2NoZW1hIGRvY3VtZW50Ci0gICAgICBYTUxVdGlscy5wYXJzZVhNTChzY2hlbWEsIFRlc3RVdGlscy5nZXRYTUxTY2hlbWFMb2NhdGlvbigpKTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoV1NJRXhjZXB0aW9uIHdlKQotICAgIHsKLSAgICAgIFRocm93YWJsZSB0ID0gd2UuZ2V0VGFyZ2V0RXhjZXB0aW9uKCk7Ci0gICAgICBpZiAodCAhPSBudWxsKQotICAgICAgewotICAgICAgICByZXR1cm5MaXN0LmFkZCh0LmdldE1lc3NhZ2UoKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGFkZE5hbWVzcGFjZXMoTmFtZWROb2RlTWFwIGF0dHJMaXN0LCBNYXAgbnNNYXAsIE1hcCBlbGVtZW50TWFwKQotICB7Ci0gICAgTm9kZSBhdHRyOwotICAgIFN0cmluZyBub2RlTmFtZTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0ckxpc3QuZ2V0TGVuZ3RoKCk7IGkrKykKLSAgICB7Ci0gICAgICBhdHRyID0gYXR0ckxpc3QuaXRlbShpKTsKLQotICAgICAgLy8gR2V0IHRoZSBhdHRyaWJ1dGUgbm9kZSBuYW1lCi0gICAgICBub2RlTmFtZSA9IGF0dHIuZ2V0Tm9kZU5hbWUoKTsKLQotICAgICAgLy8gSWYgaXQgc3RhcnRzIHdpdGggeG1sbnM6LCB0aGVuIGRldGVybWluZSBpZiBpdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgbmFtZXNwYWNlcyAKLSAgICAgIGlmIChub2RlTmFtZS5zdGFydHNXaXRoKFhNTE5TX1BSRUZJWCkKLSAgICAgICAgJiYgKChlbGVtZW50TWFwID09IG51bGwKLSAgICAgICAgICB8fCAoZWxlbWVudE1hcCAhPSBudWxsICYmIGVsZW1lbnRNYXAuZ2V0KG5vZGVOYW1lKSA9PSBudWxsKSkpKQotICAgICAgewotICAgICAgICBpZiAobnNNYXAuZ2V0KG5vZGVOYW1lKSA9PSBudWxsKQotICAgICAgICAgIG5zTWFwLnB1dChub2RlTmFtZSwgYXR0ci5nZXROb2RlVmFsdWUoKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9kb2N1bWVudC9Eb2N1bWVudEZhY3RvcnlJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvZG9jdW1lbnQvRG9jdW1lbnRGYWN0b3J5SW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGM0YmMzLi4wMDAwMDAwCi0tLSBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9kb2N1bWVudC9Eb2N1bWVudEZhY3RvcnlJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmRvY3VtZW50OwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydFdyaXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUucmVwb3J0LlJlcG9ydGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwucmVwb3J0Lk51bGxSZXBvcnRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwucmVwb3J0LlJlcG9ydE5vV3JpdGVySW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLnJlcG9ydC5TaW1wbGVSZXBvcnRlcjsKLQotLyoqCi0gKiBEb2N1bWVudEZhY3RvcnlJbXBsCi0gKiAKLSAqIEV4dGVuZHMgdGhlIFdTLUkgVGVzdCBUb29scyBkb2N1bWVudCBmYWN0b3J5IHRvIHNwZWNpZnkgc3BlY2lmaWMgUmVwb3J0Ci0gKiBhbmQgUmVwb3J0V3JpdGVyIGNsYXNzZXMgbmVlZGVkIGZvciBpbmNsdXNpb24gb2YgdGhlIHRvb2xzIGluIFdTQUQuCi0gKi8KLXB1YmxpYyBjbGFzcyBEb2N1bWVudEZhY3RvcnlJbXBsIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmRvY3VtZW50LmltcGwuRG9jdW1lbnRGYWN0b3J5SW1wbAotewotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgRG9jdW1lbnRGYWN0b3J5SW1wbC4KLSAgICovCi0gIHB1YmxpYyBEb2N1bWVudEZhY3RvcnlJbXBsKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGEgRG9jdW1lbnRXcml0ZXIuCi0gICAqLwotICBwdWJsaWMgUmVwb3J0V3JpdGVyIG5ld1JlcG9ydFdyaXRlcigpCi0gIHsKLSAgICAvLyBSZXR1cm4gaW1wbGVtZW50YXRpb24KLSAgICByZXR1cm4gbmV3IFJlcG9ydE5vV3JpdGVySW1wbCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSByZXBvcnQuCi0gICAqIEByZXR1cm4gbmV3bHkgY3JlYXRlZCByZXBvcnQuCi0gICAqLwotICBwdWJsaWMgUmVwb3J0IG5ld1JlcG9ydCgpCi0gIHsKLSAgICByZXR1cm4gbmV3IE51bGxSZXBvcnRJbXBsKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgcmVwb3J0ZXIuCi0gICAqIEByZXR1cm4gbmV3bHkgY3JlYXRlZCByZXBvcnRlci4KLSAgICovCi0gIHB1YmxpYyBSZXBvcnRlciBuZXdSZXBvcnRlcihSZXBvcnQgcmVwb3J0LCBSZXBvcnRXcml0ZXIgcmVwb3J0V3JpdGVyKQotICB7Ci0gICAgcmV0dXJuIG5ldyBTaW1wbGVSZXBvcnRlcihyZXBvcnQsIHJlcG9ydFdyaXRlcik7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9yZXBvcnQvQXNzZXJ0aW9uRXJyb3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9yZXBvcnQvQXNzZXJ0aW9uRXJyb3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UwZWM4Mi4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvcmVwb3J0L0Fzc2VydGlvbkVycm9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSBwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwucmVwb3J0OwotCi0vKioKLSAqIEFzc2VydGlvbkVycm9yCi0gKiAKLSAqIE9iamVjdCB0byBob2xkIGFuIGFzc2VydGlvbiBlcnJvciBnZW5lcmF0ZWQgYnkgdGhlIFdTLUkgVGVzdCBUb29scy4KLSAqIFByb3ZpZGVzIGFjY2VzcyB0byBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvciBpbmNsdWRpbmcgdGhlCi0gKiBpZCwgbWVzc2FnZSBhbmQgbG9jYXRpb24gaW4gdGhlIGZpbGUuCi0gKi8KLXB1YmxpYyBjbGFzcyBBc3NlcnRpb25FcnJvcgotewotCi0gIHByb3RlY3RlZCBTdHJpbmcgbWVzc2FnZTsKLSAgcHJvdGVjdGVkIFN0cmluZyBhc3NlcnRpb25pZDsKLSAgcHJvdGVjdGVkIGludCBjb2x1bW47Ci0gIHByb3RlY3RlZCBpbnQgbGluZTsKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yIGZvciBBc3NlcnRpb25FcnJvci4KLSAgICovCi0gIHB1YmxpYyBBc3NlcnRpb25FcnJvcigpCi0gIHsKLSAgICBtZXNzYWdlID0gYXNzZXJ0aW9uaWQgPSAiIjsKLSAgICBsaW5lID0gY29sdW1uID0gMDsKLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvciBmb3IgQXNzZXJ0aW9uRXJyb3IuCi0gICAqIEBwYXJhbSBpZCBhc3NlcnRpb24gaWQuCi0gICAqIEBwYXJhbSBtZXNzYWdlIGEgZXJyb3IgbWVzc2FnZS4KLSAgICogQHBhcmFtIGxpbmUgYSBsaW5lIG51bWJlci4KLSAgICogQHBhcmFtIGNvbHVtbiBhIGNvbHVtbiBudW1iZXIuCi0gICAqLwotICBwdWJsaWMgQXNzZXJ0aW9uRXJyb3IoU3RyaW5nIGlkLCBTdHJpbmcgbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4pCi0gIHsKLSAgICB0aGlzLmFzc2VydGlvbmlkID0gaWQ7Ci0gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKLSAgICB0aGlzLmxpbmUgPSBsaW5lOwotICAgIHRoaXMuY29sdW1uID0gY29sdW1uOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBzZXRBc3NlcnRpb25JRC4KLSAgICogQHBhcmFtIGlkIGFzc2VydGlvbiBpZC4KLSAgICogQHNlZSAjZ2V0QXNzZXJ0aW9uSUQKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEFzc2VydGlvbklEKFN0cmluZyBpZCkKLSAgewotICAgIGFzc2VydGlvbmlkID0gaWQ7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGdldEFzc2VydGlvbklELgotICAgKiBAcmV0dXJuIGFzc2VyaW9uIGlkLgotICAgKiBAc2VlICNzZXRBc3NlcnRpb25JRAotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRBc3NlcnRpb25JRCgpCi0gIHsKLSAgICByZXR1cm4gYXNzZXJ0aW9uaWQ7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIHNldEVycm9yTWVzc2FnZS4KLSAgICogQHBhcmFtIG1lc3NhZ2UgYSBlcnJvciBtZXNzYWdlLgotICAgKiBAc2VlICNnZXRFcnJvck1lc3NhZ2UKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldEVycm9yTWVzc2FnZShTdHJpbmcgbWVzc2FnZSkKLSAgewotICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGdldEVycm9yTWVzc2FnZS4KLSAgICogQHJldHVybiBlcnJvciBtZXNzYWdlLgotICAgKiBAc2VlICNzZXRFcnJvck1lc3NhZ2UKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkKLSAgewotICAgIHJldHVybiBtZXNzYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIE1ldGhvZCBzZXRMaW5lLgotICAgKiBAcGFyYW0gbGluZSBsaW5lIG51bWJlci4KLSAgICogQHNlZSAjZ2V0TGluZQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0TGluZShpbnQgbGluZSkKLSAgewotICAgIHRoaXMubGluZSA9IGxpbmU7Ci0gIH0KLQotICAvKioKLSAgICogTWV0aG9kIGdldExpbmUuCi0gICAqIEByZXR1cm4gbGluZSBudW1iZXIuCi0gICAqIEBzZWUgI3NldExpbmUKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0TGluZSgpCi0gIHsKLSAgICByZXR1cm4gbGluZTsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2Qgc2V0Q29sdW1uLgotICAgKiBAcGFyYW0gY29sdW1uIGNvbHVtbiBudW1iZXIuCi0gICAqIEBzZWUgI2dldENvbHVtbgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0Q29sdW1uKGludCBjb2x1bW4pCi0gIHsKLSAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjsKLSAgfQotCi0gIC8qKgotICAgKiBNZXRob2QgZ2V0Q29sdW1uLgotICAgKiBAcmV0dXJuIGNvbHVtbiBudW1iZXIuCi0gICAqIEBzZWUgI3NldENvbHVtbgotICAgKi8KLSAgcHVibGljIGludCBnZXRDb2x1bW4oKQotICB7Ci0gICAgcmV0dXJuIGNvbHVtbjsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvcmVwb3J0L051bGxSZXBvcnRJbXBsLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvcmVwb3J0L051bGxSZXBvcnRJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YWU5OGQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL3JlcG9ydC9OdWxsUmVwb3J0SW1wbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwucmVwb3J0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5pbXBsLlJlcG9ydEltcGw7Ci0KLS8qKgotICogTnVsbCByZXBvcnQuCi0gKgotICogQGF1dGhvciBKZWZmcmV5IExpdSAoamVmZmxpdUBjYS5pYm0uY29tKQotICovCi1wdWJsaWMgY2xhc3MgTnVsbFJlcG9ydEltcGwgZXh0ZW5kcyBSZXBvcnRJbXBsIGltcGxlbWVudHMgUmVwb3J0Ci17Ci0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydCNnZXRTdGFydFhNTFN0cmluZyhqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIFN0cmluZyBnZXRTdGFydFhNTFN0cmluZyhTdHJpbmcgbmFtZXNwYWNlTmFtZSkKLSAgewotICAgIHJldHVybiAiIjsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydCNnZXRFbmRYTUxTdHJpbmcoamF2YS5sYW5nLlN0cmluZykKLSAgICovCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RW5kWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgcmV0dXJuICIiOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy53c2kudGVzdC5yZXBvcnQuUmVwb3J0I2dldEVycm9yWE1MU3RyaW5nKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpCi0gICAqLwotICBwdWJsaWMgU3RyaW5nIGdldEVycm9yWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lLCBTdHJpbmcgZXJyb3JEZXRhaWwpCi0gIHsKLSAgICByZXR1cm4gIiI7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LmRvY3VtZW50LkRvY3VtZW50RWxlbWVudCN0b1hNTFN0cmluZyhqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSBwdWJsaWMgU3RyaW5nIHRvWE1MU3RyaW5nKFN0cmluZyBuYW1lc3BhY2VOYW1lKQotICB7Ci0gICAgcmV0dXJuICIiOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL3JlcG9ydC9SZXBvcnROb1dyaXRlckltcGwuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC9yZXBvcnQvUmVwb3J0Tm9Xcml0ZXJJbXBsLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMzcyNWMuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL3JlcG9ydC9SZXBvcnROb1dyaXRlckltcGwuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwucmVwb3J0OwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLlJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLldyaXRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci0KLS8qKgotICogV1MtSSBjb25mb3JtYW5jZSB0ZXN0IFJlcG9ydFdyaXRlciBmb3Igd3NpIHBsdWdpbi4KLSAqIFRoaXMgUmVwb3J0V3JpdGVyIHdyaXRlcyBub3RoaW5nIHNvIG5vIHJlcG9ydCBmaWxlIHdpbGwgYmUgY3JlYXRlZC4KLSAqLwotcHVibGljIGNsYXNzIFJlcG9ydE5vV3JpdGVySW1wbCBpbXBsZW1lbnRzIG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuUmVwb3J0V3JpdGVyCi17Ci0KLSAgLyoqCi0gICAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCNPYmplY3QoKQotICAgKi8KLSAgcHVibGljIFJlcG9ydE5vV3JpdGVySW1wbCgpCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRXcml0ZXIjZ2V0RG9jdW1lbnQoKQotICAgKi8KLSAgcHVibGljIERvY3VtZW50IGdldERvY3VtZW50KCkgdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRXcml0ZXIjc2V0V3JpdGVyKFN0cmluZykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFdyaXRlcihTdHJpbmcgZG9jdW1lbnRMb2NhdGlvbikgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRXcml0ZXIjd3JpdGUoUmVhZGVyKQotICAgKi8KLSAgcHVibGljIHZvaWQgd3JpdGUoUmVhZGVyIHJlYWRlcikgdGhyb3dzIFdTSUV4Y2VwdGlvbiwgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRXcml0ZXIjd3JpdGUoUmVhZGVyLCBXcml0ZXIpCi0gICAqLwotICBwdWJsaWMgdm9pZCB3cml0ZShSZWFkZXIgcmVhZGVyLCBXcml0ZXIgd3JpdGVyKSB0aHJvd3MgV1NJRXhjZXB0aW9uCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydFdyaXRlciN3cml0ZShSZXBvcnQpCi0gICAqLwotICBwdWJsaWMgdm9pZCB3cml0ZShSZXBvcnQgcmVwb3J0KSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LlJlcG9ydFdyaXRlciN3cml0ZShSZXBvcnQsIFdyaXRlcikKLSAgICovCi0gIHB1YmxpYyB2b2lkIHdyaXRlKFJlcG9ydCByZXBvcnQsIFdyaXRlciB3cml0ZXIpCi0gIHsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QuZG9jdW1lbnQuRG9jdW1lbnRXcml0ZXIjY2xvc2UoKQotICAgKi8KLSAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgV1NJRXhjZXB0aW9uLCBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KLSAgewotICB9Ci19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvcmVwb3J0L1NpbXBsZVJlcG9ydGVyLmphdmEgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvcmVwb3J0L1NpbXBsZVJlcG9ydGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNjVlNDkuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL2ludGVybmFsL3JlcG9ydC9TaW1wbGVSZXBvcnRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5yZXBvcnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuV1NJRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5yZXBvcnQuQXJ0aWZhY3RSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5Bc3NlcnRpb25SZXN1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5SZXBvcnRXcml0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLnJlcG9ydC5pbXBsLkRlZmF1bHRSZXBvcnRlcjsKLQotLyoqCi0gKiBUaGlzIHJlcG9ydGVyIGRvZXMgbm90IHdyaXRlIGFydGlmYWN0cyBhbmQgYXNzZXJ0aW9ucwotICovCi1wdWJsaWMgY2xhc3MgU2ltcGxlUmVwb3J0ZXIgZXh0ZW5kcyBEZWZhdWx0UmVwb3J0ZXIKLXsKLSAgcHVibGljIFNpbXBsZVJlcG9ydGVyKFJlcG9ydCByZXBvcnQsIFJlcG9ydFdyaXRlciByZXBvcnRXcml0ZXIpCi0gIHsKLSAgICBzdXBlcihyZXBvcnQsIHJlcG9ydFdyaXRlcik7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLndzaS50ZXN0LnJlcG9ydC5CdWlsZFJlcG9ydCNhZGRBcnRpZmFjdFJlZmVyZW5jZShvcmcud3NpLnRlc3QucmVwb3J0LkFydGlmYWN0UmVmZXJlbmNlKQotICAgKi8KLSAgcHVibGljIHZvaWQgYWRkQXJ0aWZhY3RSZWZlcmVuY2UoQXJ0aWZhY3RSZWZlcmVuY2UgYXJ0aWZhY3RSZWZlcmVuY2UpCi0gICAgdGhyb3dzIFdTSUV4Y2VwdGlvbgotICB7Ci0gICAgcmVwb3J0LmFkZEFydGlmYWN0UmVmZXJlbmNlKGFydGlmYWN0UmVmZXJlbmNlKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcud3NpLnRlc3QucmVwb3J0LkJ1aWxkUmVwb3J0I2FkZEFzc2VydGlvblJlc3VsdChvcmcud3NpLnRlc3QucmVwb3J0LkFzc2VydGlvblJlc3VsdCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIGFkZEFzc2VydGlvblJlc3VsdChBc3NlcnRpb25SZXN1bHQgYXNzZXJ0aW9uUmVzdWx0KQotICAgIHRocm93cyBXU0lFeGNlcHRpb24KLSAgewotICAgIHJlcG9ydC5hZGRBc3NlcnRpb25SZXN1bHQoYXNzZXJ0aW9uUmVzdWx0KTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC92YWxpZGF0ZS93c2RsL1dTRExWYWxpZGF0b3IuamF2YSBiL2J1bmRsZXMvb3JnLmVjbGlwc2Uud3N0LndzaS9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS9pbnRlcm5hbC92YWxpZGF0ZS93c2RsL1dTRExWYWxpZGF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNhN2NiOC4uMDAwMDAwMAotLS0gYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvaW50ZXJuYWwvdmFsaWRhdGUvd3NkbC9XU0RMVmFsaWRhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzODkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC52YWxpZGF0ZS53c2RsOwotaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOwotaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKLQotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZzsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5NZXNzYWdlOwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLldTRExFeGNlcHRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklWYWxpZGF0aW9uSW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLklXU0RMVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuVmFsaWRhdGlvbkluZm9JbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZXhjZXB0aW9uLlZhbGlkYXRlV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnJlc29sdmVyLlVSSVJlc29sdmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudXRpbC5NZXNzYWdlR2VuZXJhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLldTREwxMVZhbGlkYXRpb25JbmZvSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS5XU0RMRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuV1NETFJlYWRlckltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5XU0lQcmVmZXJlbmNlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLldTSVRlc3RUb29sc0VjbGlwc2VQcm9wZXJ0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuV1NJVGVzdFRvb2xzUHJvcGVydGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmFuYWx5emVyLldTRExBbmFseXplcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmFuYWx5emVyLldTSUFuYWx5emVyRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5XU0lDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5yZXBvcnQuQXNzZXJ0aW9uRXJyb3I7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci0KLS8qKgotICogVGhlIFdTSSB2YWxpZGF0b3IgcGx1Z3MgaW50byB0aGUgV1NETCB2YWxpZGF0b3IgdG8gcHJvdmlkZQotICogdmFsaWRhdGlvbiBmb3IgYSBXU0RMIGRvY3VtZW50IHdpdGggcmVzcGVjdCB0byB0aGUgV1MtSSBCYXNpYyBQcm9maWxlIChjdXJyZW50bHkgMS4wKS4KLSAqIFRoaXMgY2xhc3MgYWN0cyBhcyBhbiBicmlkZ2UgYmV0d2VlbiB0aGUgV1MtSSB0b29scyBhbmQgdGhlIFdTREwgVmFsaWRhdG9yLgotICogCi0gKiBAYXV0aG9yIExhd3JlbmNlIE1hbmRlbCAobG1hbmRlbEBjYS5pYm0uY29tKQotICogQGF1dGhvciBXYWppaGEgUmVobWFuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMVmFsaWRhdG9yIGltcGxlbWVudHMgSVdTRExWYWxpZGF0b3IKLXsKLSAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBfRVhDX1VOQUJMRV9UT19WQUxJREFURV9XU0kgPSAiX0VYQ19VTkFCTEVfVE9fVkFMSURBVEVfV1NJIjsKLQotICAvLyBpbmRpY2F0aW9ucyBmb3IgdHlwZXMgb2YgZXJyb3JzCi0gIHByb3RlY3RlZCBmaW5hbCBpbnQgRVJST1IgPSAyOwotICBwcm90ZWN0ZWQgZmluYWwgaW50IFdBUk5JTkcgPSAxOwotICAKLSAgcHJvdGVjdGVkIFJlc291cmNlQnVuZGxlIHJlc291cmNlYnVuZGxlID0gbnVsbDsKLSAgcHJvdGVjdGVkIGJvb2xlYW4gd3NpVmFsaWQgPSBmYWxzZTsKLQotICAvKioKLSAgICogQ29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgV1NETFZhbGlkYXRvcigpCi0gIHsKLQlyZXNvdXJjZWJ1bmRsZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSgid3NpdmFsaWRhdGUiLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c2RsLnZhbGlkYXRlLklXU0RMVmFsaWRhdG9yI3ZhbGlkYXRlKG9yZy53M2MuZG9tLkRvY3VtZW50LCBvcmcuZWNsaXBzZS53c2RsLnZhbGlkYXRlLlZhbGlkYXRpb25JbmZvKQotICAgKi8KLSAgcHVibGljIHZvaWQgdmFsaWRhdGUoRG9jdW1lbnQgZG9tTW9kZWwsIElWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKSB0aHJvd3MgVmFsaWRhdGVXU0RMRXhjZXB0aW9uCi0gIHsKLQlib29sZWFuIHdpdGhBdHRhY2htZW50cyA9IGZhbHNlOwotCWJvb2xlYW4gd2l0aEJhc2ljID0gZmFsc2U7Ci0JT2JqZWN0IGF0dFZhbHVlID0gdmFsSW5mby5nZXRBdHRyaWJ1dGUoImh0dHA6Ly93cy1pLm9yZy9wcm9maWxlcy9CYXNpY1dpdGhBdHRhY2htZW50cy9Db21wbGlhbmNlTGV2ZWwiKTsKLQlpZihhdHRWYWx1ZSA9PSBudWxsKQotCXsKLQkgIGF0dFZhbHVlID0gdmFsSW5mby5nZXRBdHRyaWJ1dGUoImh0dHA6Ly93cy1pLm9yZy9wcm9maWxlcy9CYXNpYy9Db21wbGlhbmNlTGV2ZWwiKTsKLSAgIAkgIGlmKGF0dFZhbHVlICE9IG51bGwpCi0JICB7Ci0JICAgIHdpdGhCYXNpYyA9IHRydWU7Ci0JICB9Ci0JfQotCWVsc2UKLQl7Ci0JICB3aXRoQXR0YWNobWVudHMgPSB0cnVlOwotCX0KLQlTdHJpbmcgd3NpTGV2ZWwgPSBXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzLldBUk5fTk9OX1dTSTsKLQlXU0lQcmVmZXJlbmNlcyB3c2lQcmVmZXJlbmNlID0gbnVsbDsKLQlTdHJpbmcgdXJpID0gdmFsSW5mby5nZXRGaWxlVVJJKCk7Ci0JaWYoYXR0VmFsdWUgIT0gbnVsbCkKLQl7Ci0JICBTdHJpbmcgdmFsdWUgPSAoU3RyaW5nKWF0dFZhbHVlOwotCSAgaWYodmFsdWUuZXF1YWxzKCJJR05PUkUiKSkKLQkgIHsKLQkgIAl3c2lMZXZlbCA9IFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuSUdOT1JFX05PTl9XU0k7Ci0JICB9Ci0JICBlbHNlIGlmKHZhbHVlLmVxdWFscygiUkVRVUlSRSIpKQotCSAgewotCSAgIAl3c2lMZXZlbCA9IFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuU1RPUF9OT05fV1NJOwotCSAgfQotCX0KLQllbHNlIAotCXsKLQkgIGlmKFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuZ2V0RWNsaXBzZUNvbnRleHQoKSkKLQkgIHsKLQkJd3NpUHJlZmVyZW5jZSA9IFdTSVRlc3RUb29sc0VjbGlwc2VQcm9wZXJ0aWVzLmNoZWNrV1NJUHJlZmVyZW5jZXModXJpKTsKLQkJd3NpTGV2ZWwgPSB3c2lQcmVmZXJlbmNlLmdldENvbXBsaWFuY2VMZXZlbCgpOwotCSAgfQotCSAgZWxzZQotCSAgewotCQl3c2lQcmVmZXJlbmNlID0gV1NJVGVzdFRvb2xzUHJvcGVydGllcy5jaGVja1dTSVByZWZlcmVuY2VzKHVyaSk7Ci0JCXdzaUxldmVsID0gd3NpUHJlZmVyZW5jZS5nZXRDb21wbGlhbmNlTGV2ZWwoKTsKLQkgIH0KLQl9Ci0JLy8gSWYgd2UgYXJlIGlnbm9yaW5nIFdTLUkgdGhlbiBkb24ndCBydW4gdGhlIHRlc3RzLgotCWlmKHdzaUxldmVsLmVxdWFscyhXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzLklHTk9SRV9OT05fV1NJKSkKLQl7Ci0JICByZXR1cm47Ci0JfQotCSAgICAKLSAgCXdzaVZhbGlkID0gdHJ1ZTsKLSAgCURlZmluaXRpb24gZGVmaW5pdGlvbiA9IG51bGw7Ci0JYm9vbGVhbiBoYXNBbmFseXplckNvbmZpZyA9IGZhbHNlOwotICAJdHJ5Ci0gIAl7Ci0gICAgICAvL1dTRExGYWN0b3J5IGZhY3RvcnkgPSBXU0RMRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwotIAkgIFZhbGlkYXRpb25JbmZvSW1wbCB2YWxpID0gbmV3IFZhbGlkYXRpb25JbmZvSW1wbCh2YWxJbmZvLmdldEZpbGVVUkkoKSwgbmV3IE1lc3NhZ2VHZW5lcmF0b3IocmVzb3VyY2VidW5kbGUpKTsKLSAgCSAgdmFsaS5zZXRVUklSZXNvbHZlcigoVVJJUmVzb2x2ZXIpdmFsSW5mby5nZXRVUklSZXNvbHZlcigpKTsKLSAgICAgIFdTRExSZWFkZXJJbXBsIHJlYWRlciA9IG5ldyBXU0RMUmVhZGVySW1wbChuZXcgV1NETDExVmFsaWRhdGlvbkluZm9JbXBsKHZhbGkpKTsKLSAgICAgIFdTRExEb2N1bWVudFtdIGRvY3MgPSByZWFkZXIucmVhZFdTREwodXJpLCBkb21Nb2RlbCk7Ci0gICAgICBpbnQgbnVtZG9jcyA9IGRvY3MubGVuZ3RoOwotICAgICAgZm9yKGludCBpID0gMDsgaSA8IG51bWRvY3M7IGkrKykKLSAgICAgIHsKLSAgICAgICAgV1NETERvY3VtZW50IHRlbXBEb2MgPSBkb2NzW2ldOwotCQlpZih0ZW1wRG9jLmdldERlZmluaXRpb24oKS5nZXREb2N1bWVudEJhc2VVUkkoKS5lcXVhbHModmFsSW5mby5nZXRGaWxlVVJJKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgZGVmaW5pdGlvbiA9IHRlbXBEb2MuZ2V0RGVmaW5pdGlvbigpOyAgCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgCX0KLSAgCWNhdGNoKFdTRExFeGNlcHRpb24gZSkKLSAgCXsKLSAgCSAgdGhyb3cgbmV3IFZhbGlkYXRlV1NETEV4Y2VwdGlvbihNZXNzYWdlRm9ybWF0LmZvcm1hdChyZXNvdXJjZWJ1bmRsZS5nZXRTdHJpbmcoX0VYQ19VTkFCTEVfVE9fVkFMSURBVEVfV1NJKSwgbmV3IE9iamVjdFtdIHsgdXJpIH0pKTsKLSAgCX0KLQkgICAgCi0gICAgaWYgKGRlZmluaXRpb24gIT0gbnVsbCAmJiB2YWxJbmZvICE9IG51bGwpCi0gICAgewotICAgICAgU3RyaW5nIG5hbWVzcGFjZSA9IGRlZmluaXRpb24uZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0KLSAgICAgIC8vIGdldCBhbGwgdGhlIGNvbGxlY3Rpb25zIHdlIG1heSBuZWVkIHRvIHZhbGlkYXRlCi0gICAgICBDb2xsZWN0aW9uIHNlcnZpY2VzID0gZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpLnZhbHVlcygpOwotICAgICAgQ29sbGVjdGlvbiBiaW5kaW5ncyA9IGRlZmluaXRpb24uZ2V0QmluZGluZ3MoKS52YWx1ZXMoKTsKLSAgICAgIENvbGxlY3Rpb24gcG9ydFR5cGVzID0gZGVmaW5pdGlvbi5nZXRQb3J0VHlwZXMoKS52YWx1ZXMoKTsKLSAgICAgIENvbGxlY3Rpb24gbWVzc2FnZXMgPSBkZWZpbml0aW9uLmdldE1lc3NhZ2VzKCkudmFsdWVzKCk7Ci0KLSAgICAgIFdTRExBbmFseXplciB3c2RsQW5hbHl6ZXI7Ci0JICBpZih3aXRoQXR0YWNobWVudHMpCi0JICB7Ci0JICAJV1NJUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXMgPSBuZXcgV1NJUHJlZmVyZW5jZXMoKTsKLSAgIAkgICAgcHJlZmVyZW5jZXMuc2V0Q29tcGxpYW5jZUxldmVsKHdzaUxldmVsKTsKLQkgICAgcHJlZmVyZW5jZXMuc2V0VEFERmlsZShXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzLkFQX0FTU0VSVElPTl9GSUxFKTsKLQkgICAgd3NkbEFuYWx5emVyID0gbmV3IFdTRExBbmFseXplcih1cmksIHByZWZlcmVuY2VzKTsKLQkgIH0KLQkgIGVsc2UgaWYod2l0aEJhc2ljKQotCSAgewotCSAgCVdTSVByZWZlcmVuY2VzIHByZWZlcmVuY2VzID0gbmV3IFdTSVByZWZlcmVuY2VzKCk7Ci0JCXByZWZlcmVuY2VzLnNldENvbXBsaWFuY2VMZXZlbCh3c2lMZXZlbCk7CQotCSAgICBwcmVmZXJlbmNlcy5zZXRUQURGaWxlKFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuU1NCUF9BU1NFUlRJT05fRklMRSk7Ci0JICAgIHdzZGxBbmFseXplciA9IG5ldyBXU0RMQW5hbHl6ZXIodXJpLCBwcmVmZXJlbmNlcyk7Ci0JICB9Ci0JICBlbHNlIGlmKHdzaVByZWZlcmVuY2UgIT0gbnVsbCkKLQkgIHsKLQkJd3NkbEFuYWx5emVyID0gbmV3IFdTRExBbmFseXplcih1cmksIHdzaVByZWZlcmVuY2UpOwotCSAgfQotCSAgZWxzZSB7Ci0JCS8vIGRlZmF1bHQgcHJlZmVyZW5jZSBzZXR0aW5nCi0JICAJd3NkbEFuYWx5emVyID0gbmV3IFdTRExBbmFseXplcih1cmkpOwotCSAgfQotCi0JICAvLyBUaGUgV1MtSSBjb25mb3JtYW5jZSB0b29scyByZXF1aXJlIHRoYXQgZWFjaCBzZXJ2aWNlIGJlIGFuYWx5emVkIHNlcGFyYXRlbHkuCi0JICAvLyBHZXQgYWxsIHRoZSBzZXJ2aWNlcyBhbmQgYW5hbHl6ZSB0aGVtLgotCSAgaWYgKHNlcnZpY2VzICE9IG51bGwgJiYgIXNlcnZpY2VzLmlzRW1wdHkoKSkKLQkgIHsKLQkgICAgSXRlcmF0b3Igc2VydmljZUl0ZXJhdG9yID0gc2VydmljZXMuaXRlcmF0b3IoKTsKLQotCSAgICB3aGlsZSAoc2VydmljZUl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIFNlcnZpY2Ugc2VydmljZSA9IChTZXJ2aWNlKSBzZXJ2aWNlSXRlcmF0b3IubmV4dCgpOwotCi0gICAgICAgICAgU3RyaW5nIHNlcnZpY2VuYW1lID0gc2VydmljZS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpOwotCi0gICAgICAgICAgQ29sbGVjdGlvbiBwb3J0cyA9IHNlcnZpY2UuZ2V0UG9ydHMoKS52YWx1ZXMoKTsKLSAgICAgICAgICBpZiAocG9ydHMgIT0gbnVsbCAmJiAhcG9ydHMuaXNFbXB0eSgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBXUy1JIHRvb2xzIG11c3QgYmUgY2FsbGVkIG9uY2UgZm9yIGVhY2ggcG9ydCB3aXRoaW4gZWFjaCBzZXJ2aWNlLgotICAgICAgICAgICAgSXRlcmF0b3IgcG9ydEl0ZXJhdG9yID0gcG9ydHMuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgIHdoaWxlIChwb3J0SXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBQb3J0IHBvcnQgPSAoUG9ydCkgcG9ydEl0ZXJhdG9yLm5leHQoKTsKLQotICAgICAgICAgICAgICB0cnkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHdzZGxBbmFseXplci5hZGRDb25maWd1cmF0aW9uVG9UZXN0KHNlcnZpY2VuYW1lLCBuYW1lc3BhY2UsIHBvcnQuZ2V0TmFtZSgpLCBXU0RMQW5hbHl6ZXIuUE9SVCk7Ci0JCQkJaGFzQW5hbHl6ZXJDb25maWcgPSB0cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGNhdGNoIChXU0lBbmFseXplckV4Y2VwdGlvbiBlKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gVE9ETzogQWRkIGNvZGUgdG8gbG9nIGVycm9yIAotICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJleGNlcHRpb24gIiArIGUpOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vIHZhbGlkYXRlIGF0IHRoZSBiaW5kaW5nIGxldmVsIC0gY2hlY2sgZm9yIGV2ZXJ5IGJpbmRpbmcKLSAgICAgIGVsc2UgaWYgKGJpbmRpbmdzICE9IG51bGwgJiYgIWJpbmRpbmdzLmlzRW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgSXRlcmF0b3IgYmluZGluZ0l0ZXJhdG9yID0gYmluZGluZ3MuaXRlcmF0b3IoKTsKLQotICAgICAgICB3aGlsZSAoYmluZGluZ0l0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBiaW5kaW5nSXRlcmF0b3IubmV4dCgpOwotCi0gICAgICAgICAgU3RyaW5nIGJpbmRpbmduYW1lID0gYmluZGluZy5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpOwotICAgICAgICAgIHRyeQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHdzZGxBbmFseXplci5hZGRDb25maWd1cmF0aW9uVG9UZXN0KG51bGwsIG5hbWVzcGFjZSwgYmluZGluZ25hbWUsIFdTRExBbmFseXplci5CSU5ESU5HKTsKLQkJCWhhc0FuYWx5emVyQ29uZmlnID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKFdTSUFuYWx5emVyRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gVE9ETzogQWRkIGNvZGUgdG8gbG9nIGVycm9yIAotICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oImV4Y2VwdGlvbiAiICsgZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyB2YWxpZGF0ZSBhdCB0aGUgcG9ydFR5cGUgbGV2ZWwgLSBjaGVjayBmb3IgZXZlcnkgcG9ydFR5cGUKLSAgICAgIGVsc2UgaWYgKHBvcnRUeXBlcyAhPSBudWxsICYmICFwb3J0VHlwZXMuaXNFbXB0eSgpKQotICAgICAgewotICAgICAgICBJdGVyYXRvciBwb3J0VHlwZUl0ZXJhdG9yID0gcG9ydFR5cGVzLml0ZXJhdG9yKCk7Ci0gICAgICAgIHdoaWxlIChwb3J0VHlwZUl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgICAgewotICAgICAgICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gKFBvcnRUeXBlKSBwb3J0VHlwZUl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgICBTdHJpbmcgcG9ydFR5cGVuYW1lID0gcG9ydFR5cGUuZ2V0UU5hbWUoKS5nZXRMb2NhbFBhcnQoKTsKLSAgICAgICAgICB0cnkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB3c2RsQW5hbHl6ZXIuYWRkQ29uZmlndXJhdGlvblRvVGVzdChudWxsLCBuYW1lc3BhY2UsIHBvcnRUeXBlbmFtZSwgV1NETEFuYWx5emVyLlBPUlRUWVBFKTsKLQkJCWhhc0FuYWx5emVyQ29uZmlnID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2F0Y2ggKFdTSUFuYWx5emVyRXhjZXB0aW9uIGUpCi0gICAgICAgICAgewotICAgICAgICAgICAgLy8gVE9ETzogQWRkIGNvZGUgdG8gbG9nIGVycm9yIAotICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oImV4Y2VwdGlvbiAiICsgZSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyB2YWxpZGF0ZSBhdCB0aGUgbWVzc2FnZSBsZXZlbCAtIGNoZWNrIGZvciBldmVyeSBtZXNzYWdlCi0gICAgICBlbHNlIGlmIChtZXNzYWdlcyAhPSBudWxsICYmICFtZXNzYWdlcy5pc0VtcHR5KCkpCi0gICAgICB7Ci0gICAgICAgIEl0ZXJhdG9yIG1lc3NhZ2VJdGVyYXRvciA9IG1lc3NhZ2VzLml0ZXJhdG9yKCk7Ci0KLSAgICAgICAgd2hpbGUgKG1lc3NhZ2VJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBNZXNzYWdlIG1lc3NhZ2UgPSAoTWVzc2FnZSkgbWVzc2FnZUl0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgICBTdHJpbmcgbWVzc2FnZW5hbWUgPSBtZXNzYWdlLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgICAgdHJ5Ci0gICAgICAgICAgewotICAgICAgICAgICAgd3NkbEFuYWx5emVyLmFkZENvbmZpZ3VyYXRpb25Ub1Rlc3QobnVsbCwgbmFtZXNwYWNlLCBtZXNzYWdlbmFtZSwgV1NETEFuYWx5emVyLk1FU1NBR0UpOwotCQkJaGFzQW5hbHl6ZXJDb25maWcgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXRjaCAoV1NJQW5hbHl6ZXJFeGNlcHRpb24gZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUT0RPOiBBZGQgY29kZSB0byBsb2cgZXJyb3IgCi0gICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiZXhjZXB0aW9uICIgKyBlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHRyeQotICAgICAgewotICAgICAgICAvLyBvbmx5IHJ1biB0aGUgYW5hbHl6ZXIgaWYgdGhlcmUgaXMgc29tZXRoaW5nIHRvIGNoZWNrCi0JCWlmKGhhc0FuYWx5emVyQ29uZmlnKQotCQl7Ci0JCSAgLy8gcnVuIHRoZSBjb25mb3JtYW5jZSBjaGVjayBhbmQgYWRkIGVycm9ycyBhbmQgd2FybmluZ3MgYXMgbmVlZGVkCi0JCSAgd3NkbEFuYWx5emVyLnZhbGlkYXRlQ29uZm9ybWFuY2UoKTsKLQkJCSAgCi0JCSAgLy8gSWYgdGhlIGxldmVsIGlzIHN1Z2dlc3QgYWxsIGVycm9ycyBzaG91bGQgYmUgcmVwb3J0ZWQgYXMgd2FybmluZ3MuCi0JCSAgaWYod3NkbEFuYWx5emVyLmdldFdTSVByZWZlcmVuY2VzKCkuZ2V0Q29tcGxpYW5jZUxldmVsKCkuZXF1YWxzKFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuV0FSTl9OT05fV1NJKSkKLQkJICB7Ci0JCSAgICBhZGRXYXJuaW5ncyh3c2RsQW5hbHl6ZXIuZ2V0QXNzZXJ0aW9uRXJyb3JzKCksIHZhbEluZm8pOwotCQkgIH0KLQkJICBlbHNlCi0JCSAgewotCQkgICAgYWRkRXJyb3JzKHdzZGxBbmFseXplci5nZXRBc3NlcnRpb25FcnJvcnMoKSwgdmFsSW5mbyk7Ci0JCSAgfQotCQkgIGFkZFdhcm5pbmdzKHdzZGxBbmFseXplci5nZXRBc3NlcnRpb25XYXJuaW5ncygpLCB2YWxJbmZvKTsKLQkJfQotICAgICAgfQotCSAgY2F0Y2ggKFdTSUFuYWx5emVyRXhjZXB0aW9uIGUpCi0JICB7Ci0JCS8vIFRPRE86IEFkZCBjb2RlIHRvIGxvZyBlcnJvciAKLQkgICAgdmFsSW5mby5hZGRXYXJuaW5nKFdTSUNvbnN0YW50cy5XU0lfUFJFRklYICsgIkEgcHJvYmxlbSBvY2N1cmVkIHdoaWxlIHJ1bm5pbmcgdGhlIFdTLUkgV1NETCBjb25mb3JtYW5jZSBjaGVjazogIiArIGUsIDEsIDAsIHZhbEluZm8uZ2V0RmlsZVVSSSgpKTsKLQkgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQWRkIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSB2YWxpZGF0aW9uY29udHJvbGxlci4KLSAgICogCi0gICAqIEBwYXJhbSBlcnJvcnMgVGhlIGxpc3Qgb2YgZXJyb3JzIHRvIGFkZC4KLSAgICogQHBhcmFtIHZhbEluZm8gVGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSB2YWxpZGF0aW9uIGluZm9ybWF0aW9uLgotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgYWRkRXJyb3JzKExpc3QgZXJyb3JzLCBJVmFsaWRhdGlvbkluZm8gdmFsSW5mbykKLSAgewotICAgIHJlcG9ydFByb2JsZW1zKGVycm9ycywgdmFsSW5mbywgRVJST1IpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFkZCB3YXJuaW5nIG1lc3NhZ2VzIHRvIHRoZSB2YWxpZGF0aW9uY29udHJvbGxlci4KLSAgICogCi0gICAqIEBwYXJhbSB3YXJuaW5ncyBUaGUgbGlzdCBvZiB3YXJuaW5ncyB0byBhZGQuCi0gICAqIEBwYXJhbSB2YWxJbmZvIFRoZSBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBpbmZvcm1hdGlvbi4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGFkZFdhcm5pbmdzKExpc3Qgd2FybmluZ3MsIElWYWxpZGF0aW9uSW5mbyB2YWxJbmZvKQotICB7Ci0gICAgcmVwb3J0UHJvYmxlbXMod2FybmluZ3MsIHZhbEluZm8sIFdBUk5JTkcpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlcG9ydCB0aGUgcHJvYmxlbXMgc3BlY2lmaWVkIGZvciB0aGUgZ2l2ZW4gdHlwZSB0byB0aGUgdmFsaWRhdGlvbmNvbnRyb2xsZXIuCi0gICAqIAotICAgKiBAcGFyYW0gcHJvYmxlbXMgVGhlIHByb2JsZW1zIHRvIHJlcG9ydC4KLSAgICogQHBhcmFtIHZhbEluZm8gVGhlIG9iamVjdCB0byByZXBvcnQgdGhlIHByb2JsZW1zIHRvLgotICAgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiBtZXNzYWdlcyB0byBhZGQuCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCByZXBvcnRQcm9ibGVtcyhMaXN0IHByb2JsZW1zLCBJVmFsaWRhdGlvbkluZm8gdmFsSW5mbywgaW50IHR5cGUpCi0gIHsKLSAgICAvLyBpZiB0aGVyZSB3ZXJlIG5vIHByb2JsZW1zIGp1c3QgcmV0dXJuCi0gICAgaWYgKHByb2JsZW1zID09IG51bGwpCi0gICAgICByZXR1cm47Ci0KLSAgICAKLSAgICBJdGVyYXRvciBwcm9ibGVtc0l0ZXJhdG9yID0gcHJvYmxlbXMuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAocHJvYmxlbXNJdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgQXNzZXJ0aW9uRXJyb3IgYXNzZXJ0aW9uZXJyb3IgPSAoQXNzZXJ0aW9uRXJyb3IpIHByb2JsZW1zSXRlcmF0b3IubmV4dCgpOwotICAgICAgaWYgKHR5cGUgPT0gRVJST1IpCi0gICAgICB7Ci0JCXdzaVZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHZhbEluZm8uYWRkRXJyb3IoCi0gICAgICAgIAkJV1NJQ29uc3RhbnRzLldTSV9QUkVGSVggKyAiKCIgKyBhc3NlcnRpb25lcnJvci5nZXRBc3NlcnRpb25JRCgpKyAiKSAiICsgYXNzZXJ0aW9uZXJyb3IuZ2V0RXJyb3JNZXNzYWdlKCksCi0gICAgICAgICAgYXNzZXJ0aW9uZXJyb3IuZ2V0TGluZSgpLAotICAgICAgICAgIGFzc2VydGlvbmVycm9yLmdldENvbHVtbigpLAotICAgICAgICAgIHZhbEluZm8uZ2V0RmlsZVVSSSgpKTsKLQotICAgICAgfQotICAgICAgZWxzZSBpZiAodHlwZSA9PSBXQVJOSU5HKQotICAgICAgewotICAgICAgICB2YWxJbmZvLmFkZFdhcm5pbmcoCi0gICAgICAgIAkJV1NJQ29uc3RhbnRzLldTSV9QUkVGSVggKyAiKCIgKyBhc3NlcnRpb25lcnJvci5nZXRBc3NlcnRpb25JRCgpKyAiKSAiICsgYXNzZXJ0aW9uZXJyb3IuZ2V0RXJyb3JNZXNzYWdlKCksCi0gICAgICAgICAgYXNzZXJ0aW9uZXJyb3IuZ2V0TGluZSgpLAotICAgICAgICAgIGFzc2VydGlvbmVycm9yLmdldENvbHVtbigpLAotICAgICAgICAgIHZhbEluZm8uZ2V0RmlsZVVSSSgpKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c2RsLnZhbGlkYXRlLmNvbnRyb2xsZXIuSVdTRExWYWxpZGF0b3IjaXNWYWxpZCgpCi0gICAqLwotICBwdWJsaWMgYm9vbGVhbiBpc1ZhbGlkKCkKLSAgewotICAgIHJldHVybiB3c2lWYWxpZDsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHNldFJlc291cmNlQnVuZGxlKFJlc291cmNlQnVuZGxlIHJiKSB7Ci0JLy8gTm90IHVzZWQuCi0JCi0gIH0KLSAgCi0gIAotCi19CmRpZmYgLS1naXQgYS9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL3dzaXZhbGlkYXRlLnByb3BlcnRpZXMgYi9idW5kbGVzL29yZy5lY2xpcHNlLndzdC53c2kvc3JjL3dzaXZhbGlkYXRlLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhOTA2YjQuLjAwMDAwMDAKLS0tIGEvYnVuZGxlcy9vcmcuZWNsaXBzZS53c3Qud3NpL3NyYy93c2l2YWxpZGF0ZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIyAvKioKLSMgICogPGNvcHlyaWdodD4KLSMgICoKLSMgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDb21tb24gUHVibGljIExpY2Vuc2UgdjEuMAotIyAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbAotIyAgKiAKLSMgICogQ29udHJpYnV0b3JzOiAKLSMgICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgICoKLSMgICogPC9jb3B5cmlnaHQ+Ci0jICAqLwotCi1fRVhDX1VOQUJMRV9UT19WQUxJREFURV9XU0kgPSBVbmFibGUgdG8gdmFsaWRhdGUgV1MtSSBjb25mb3JtYW5jZS4gIEFuIGVycm9yIG9jY3VyZWQgcmVhZGluZyB0aGUgV1NETCBkb2N1bWVudCB7MH0uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wLy5jdnNpZ25vcmUgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmluZm9wb3AvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE0NDg3Yy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmluZm9wb3AvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWJ1aWxkLnhtbApkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wLy5wcm9qZWN0IGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzQ1NzlhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuaW5mb3BvcC8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmluZm9wb3A8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmluZm9wb3AvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmluZm9wb3AvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZmVhYmIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlcGx1Z2luTmFtZQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuaW5mb3BvcDsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjMwMC5xdWFsaWZpZXIKLUJ1bmRsZS1WZW5kb3I6ICVwbHVnaW5Qcm92aWRlcgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL2Fib3V0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmluZm9wb3AvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmluZm9wb3AvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL2F4aXNjb25zdW1wdGlvbnVpLWYxQ29udGV4dHMueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL2F4aXNjb25zdW1wdGlvbnVpLWYxQ29udGV4dHMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWJhOGI5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuaW5mb3BvcC9heGlzY29uc3VtcHRpb251aS1mMUNvbnRleHRzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLmNvbnRleHRzIj8+Ci08IS0tIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gLS0+Ci08Y29udGV4dHM+Ci0KLTwhLS1XZWJTZXJ2aWNlQXhpc1Byb3h5UGFnZS5qYXZhLS0+Ci0KLTxjb250ZXh0IGlkPSJQV0pCMDAwMSI+Ci08IS0tV1NETCB0byBKYXZhIEJpbmRpbmdzIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBXZWIgc2VydmljZSBjbGllbnQgd2lsbCBiZSBjcmVhdGVkLiBUaGUgSmF2YSBiZWFuIGNsaWVudCBwcm94eSB0aGF0IGlzIGdlbmVyYXRlZCBwcm92aWRlcyBhIHJlbW90ZSBwcm9jZWR1cmUgY2FsbCBpbnRlcmZhY2UgdG8gdGhlIFdlYiBzZXJ2aWNlLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV0pCMDAwMyI+Ci08IS0tRm9sZGVyIGZpZWxkIG9mIHRoZSBXU0RMIHRvIEphdmEgQmluZGluZ3MgUGFnZS0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGUgcHJvamVjdCBhbmQgZm9sZGVyIGluIHdoaWNoIHRoZSBXZWIgc2VydmljZSBjbGllbnQgd2lsbCBiZSBjcmVhdGVkLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV0pCMDAwOSI+Ci08IS0tSW5kaWNhdGVzIHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBwcm94eSBvciBub3QtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhpcyBjaGVjayBib3ggSmF2YSBiZWFuIGNsaWVudCBwcm94eSB0byB0aGUgV2ViIHNlcnZpY2UuIFRoZSBKYXZhIGJlYW4gY2xpZW50IHByb3h5IHRoYXQgaXMgZ2VuZXJhdGVkIHByb3ZpZGVzIGEgcmVtb3RlIHByb2NlZHVyZSBjYWxsIGludGVyZmFjZSB0byB0aGUgV2ViIHNlcnZpY2UuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXSkIwMDE2Ij4KLTwhLS1TaG93IE1hcHBpbmdzIGNoZWNrYm94IG9mIHRoZSBCZWFuIE1ldGhvZHMgUGFnZS0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGlzIGNoZWNrIGJveCB0byBjdXN0b21pemUgdGhlIG1hcHBpbmdzIGJldHdlZW4gcGFja2FnZXMgYW5kIG5hbWVzcGFjZXMuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPCEtLVdlYlNlcnZpY2VBeGlzTWFwcGluZ3NQYWdlLmphdmEtLT4KLQotPGNvbnRleHQgaWQ9IlBXSk0wMDAxIj4KLTwhLS1XU0RMIHRvIEphdmEgTWFwcGluZ3MgUGFnZS0tPgotPGRlc2NyaXB0aW9uPlVzZSB0aGlzIHBhbmVsIHRvIGFkZCBjdXN0b21pemVkIHBhY2thZ2UgdG8gbmFtZXNwYWNlIG1hcHBpbmdzLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTwhLS1BeGlzRW1pdHRlclByZWZlcmVuY2VQYWdlLmphdmEtLT4KLQotPGNvbnRleHQgaWQ9IlBQQUUwMDAxIj4KLTwhLS1BeGlzIEVtaXR0ZXIgUHJlZmVyZW5jZSBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VXNlIHRoaXMgcGFnZSB0byBzZWxlY3QgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIHdpemFyZHMgd2hlbiBnZW5lcmF0aW5nIEF4aXMgV2ViIHNlcnZpY2VzLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQUEFFMDAwMiI+Ci08IS0tR2VuZXJhdGUgY29kZSBmb3IgYWxsIGVsZW1lbnRzLS0+Ci08ZGVzY3JpcHRpb24+QnkgZGVmYXVsdCwgV1NETDJKYXZhIG9ubHkgZ2VuZXJhdGVzIGNvZGUgZm9yIHRob3NlIGVsZW1lbnRzIGluIHRoZSBXU0RMIGZpbGUgdGhhdCBhcmUgcmVmZXJlbmNlZC4gU2VsZWN0aW5nIHRoaXMgY2hlY2tib3ggd2lsbCBnZW5lcmF0ZSBjb2RlIGZvciBhbGwgZWxlbWVudHMgaW4gdGhlIHNjb3BlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IGFyZSByZWZlcmVuY2VkLiBCeSBkZWZhdWx0LCB0aGUgc2NvcGUgaXMgYWxsIFdTREwgZmlsZXM7IGlmIGdlbmVyYXRlSW1wb3J0cyhmYWxzZSksIHRoZW4gdGhlIHNjb3BlIGlzIG9ubHkgdGhlIGltbWVkaWF0ZSBXU0RMIGZpbGUuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBQQUUwMDAzIj4KLTwhLS1FbWl0cyBzZXBhcmF0ZSBIZWxwZXIgY2xhc3NlcyBmb3IgbWV0YWRhdGEtLT4KLTxkZXNjcmlwdGlvbj5JZiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uIFdTREwySmF2YSB3aWxsIGNyZWF0ZSBhIHNlcGFyYXRlIGhlbHBlciBjbGFzcyB0aGF0IGNvbnRhaW5zIHRoZSBtZXRhZGF0YSByYXRoZXIgdGhhbiBpbmNsdWRpbmcgaXQgaW4gdGhlIHNrZWxldG9uLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQUEFFMDAwNCI+Ci08IS0tUHJlZmVycyBidWlsZGluZyBiZWFucyB0byBzdHJhaWdodCBhcnJheXMgZm9yIHdyYXBwZWQgWE1MIGFycmF5IHR5cGVzLS0+Ci08ZGVzY3JpcHRpb24+SWYgeW91IHdvdWxkIHJhdGhlciBhIHNwZWNpZmljIEphdmFCZWFuIGNsYXNzIChBcnJheU9mU3RyaW5nKSBiZSBnZW5lcmF0ZWQgZm9yIHRoZXNlIHR5cGVzIG9mIHNjaGVtYXMsIHNlbGVjdCB0aGlzIG9wdGlvbi48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFBBRTAwMDUiPgotPCEtLUFkZCBzY29wZSB0byBkZXBsb3kud3NkZC0tPgotPGRlc2NyaXB0aW9uPlRoaXMgaW5kaWNhdGVzIGhvdyB0byBkZXBsb3kgdGhlIHNlcnZlciBpbXBsZW1lbnRhdGlvbi4gCi1BcHBsaWNhdGlvbiB1c2VzIG9uZSBpbnN0YW5jZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIGFsbCByZXF1ZXN0cy4gCi1SZXF1ZXN0IGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uIGNsYXNzIGZvciBlYWNoIHJlcXVlc3QuIAotU2Vzc2lvbiBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgZWFjaCBzZXNzaW9uLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQUEFFMDAwNiI+Ci08IS0tVGltZW91dC0tPgotPGRlc2NyaXB0aW9uPlRoZSBkZWZhdWx0IGlzIDQ1IHNlY29uZHMuIFVzZSAtMSB0byBkaXNhYmxlIHRoZSB0aW1lb3V0LjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQUEFFMDAwNyI+Ci08IS0tTG9vayBmb3IgYWxsb3dlZCBtZXRob2RzIGluIGluaGVyaXRlZCBjbGFzcy0tPgotPGRlc2NyaXB0aW9uPklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlIEphdmEyV1NETCBwYXJzZXIgd2lsbCBsb29rIGludG8gZXh0ZW5kZWQgY2xhc3NlcyB0byBkZXRlcm1pbmUgdGhlIGxpc3Qgb2YgbWV0aG9kcyB0byBleHBvcnQgaW50byB0aGUgV1NETCBmaWxlLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQUEFFMDAwOCI+Ci08IS0tTG9vayBmb3IgYWxsb3dlZCBtZXRob2RzIGluIGluaGVyaXRlZCBjbGFzcy0tPgotPGRlc2NyaXB0aW9uPlVzZSB0aGlzIHBhZ2UgdG8gc2VsZWN0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSB3aXphcmRzIHdoZW4gZ2VuZXJhdGluZyBBeGlzIFdlYiBzZXJ2aWNlcy48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFBBRTAwMDkiPgotPCEtLUxvb2sgZm9yIGFsbG93ZWQgbWV0aG9kcyBpbiBpbmhlcml0ZWQgY2xhc3MtLT4KLTxkZXNjcmlwdGlvbj5Vc2UgdGhpcyBwYWdlIHRvIHNlbGVjdCB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgd2l6YXJkcyB3aGVuIGdlbmVyYXRpbmcgQXhpcyBXZWIgc2VydmljZXMuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBQQUUwMDEwIj4KLTwhLS12YWxpZGF0ZSBhZ2FpbnN0IEpBWFJQQy0tPgotPGRlc2NyaXB0aW9uPklmIHNlbGVjdGVkLCB0aGUgdG9vbHMgd2lsbCBleGFtaW5lIHRoZSBKYXZhIHNlcnZpY2UgY2xhc3MgYW5kIGl0cyB2YWx1ZSB0eXBlcyB0byBkZXRlcm1pbmUgaWYgaXQgc2F0aXNmaWVzIGltcG9ydGFudCByZXF1aXJlbWVudHMgb2YgdGhlIEpBWC1SUEMgc3BlY2lmaWNhdGlvbi48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08L2NvbnRleHRzPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL2F4aXNjcmVhdGlvbnVpLWYxQ29udGV4dHMueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL2F4aXNjcmVhdGlvbnVpLWYxQ29udGV4dHMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjA5OTc4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuaW5mb3BvcC9heGlzY3JlYXRpb251aS1mMUNvbnRleHRzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLmNvbnRleHRzIj8+Ci08IS0tIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gLS0+Ci08Y29udGV4dHM+Ci0KLTwhLS1XZWJTZXJ2aWNlQXhpc0JlYW5Db25maWdQYWdlLmphdmEtLT4KLTxjb250ZXh0IGlkPSJQQkNGMDAwMSI+Ci08IS0tQmVhbiBJZGVudGl0eSBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+T24gdGhpcyBwYWdlIHlvdSBjYW4gc2VsZWN0IHRoZSBuYW1lIG9mIHRoZSBXU0RMIGZpbGUgdGhhdCB3aWxsIGJlIGdlbmVyYXRlZCwgYW5kIHRoZSBtZXRob2RzIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgV2ViIHNlcnZpY2UuIFlvdSBjYW4gYWxzbyBzZWxlY3QgdGhlIGVuY29kaW5nIHN0eWxlLiBSUEMvRW5jb2RlZCBpcyB0aGUgcmVjb21tZW5kZWQgZW5jb2Rpbmcgc3R5bGUgZm9yIHRoZSBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFRoaXMgZW5jb2RpbmcgbWV0aG9kIGlzIG5vdCBXUy1JIGNvbXBsaWFudC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUEJDRjAwMDYiPgotPCEtLVdTREwgRm9sZGVyIGZpZWxkIGluIHRoZSBCZWFuIENvbmZpZyBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VGhpcyBmaWVsZCBsaXN0cyB0aGUgbG9jYXRpb24gb2YgdGhlIFdTREwgZmlsZSBiZWluZyBnZW5lcmF0ZWQuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLTxjb250ZXh0IGlkPSJQQkNGMDAwNyI+Ci08IS0tV1NETCBGaWxlIGZpZWxkIG9mIHRoZSBCZWFuIENvbmZpZyBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VGhpcyBmaWVsZCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlIHRoYXQgd2lsbCBiZSBnZW5lcmF0ZWQuIEFjY2VwdCB0aGUgZGVmYXVsdCBvciBlbnRlciBhIG5ldyBuYW1lLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQQkNGMDAxNiI+Ci08IS0tU2hvdyBNYXBwaW5ncyBjaGVja2JveCBvZiB0aGUgQmVhbiBNZXRob2RzIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhpcyBjaGVjayBib3ggdG8gY3VzdG9taXplIHRoZSBtYXBwaW5ncyBiZXR3ZWVuIHBhY2thZ2VzIGFuZCBuYW1lc3BhY2VzLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQQk1FMDAwMiI+Ci08IS0tTWV0aG9kcyB0cmVlIG9mIHRoZSBCZWFuIE1ldGhvZHMgUGFnZS0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCBmcm9tIHRoZSBhdmFpbGFibGUgSmF2YSBiZWFuIG1ldGhvZHMgd2hpY2ggb25lcyB0byBpbmNsdWRlIGluIHlvdXIgV2ViIHNlcnZpY2UuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLTxjb250ZXh0IGlkPSJQQk1FMDAxMCI+Ci08IS0tU2VsZWN0IEFsbCBidXR0b24gb2YgdGhlIEJlYW4gTWV0aG9kcyBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+Q2xpY2sgdGhpcyBidXR0b24gdG8gaW5jbHVkZSBhbGwgbGlzdGVkIG1ldGhvZHMgaW4geW91ciBXZWIgc2VydmljZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotPGNvbnRleHQgaWQ9IlBCTUUwMDExIj4KLTwhLS1EZXNlbGVjdCBBbGwgYnV0dG9uIG9mIHRoZSBCZWFuIE1ldGhvZHMgUGFnZS0tPgotPGRlc2NyaXB0aW9uPkNsaWNrIHRoaXMgYnV0dG9uIHRvIHJlbW92ZSBhbGwgbGlzdGVkIG1ldGhvZHMgZnJvbSB5b3VyIFdlYiBzZXJ2aWNlLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLQotCi08IS0tV2ViU2VydmljZVNrZWxldG9uQXhpc0NvbmZpZ1BhZ2UuamF2YS0tPgotCi08Y29udGV4dCBpZD0iUEJTQzAwMDEiPgotPCEtLVNrZWxldG9uIENvbmZpZyBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VXNlIHRoaXMgcGFnZSB0byBzcGVjaWZ5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBKYXZhIGJlYW4gc2tlbGV0b24gYmVpbmcgY3JlYXRlZC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotPGNvbnRleHQgaWQ9IlBCU0MwMDA0Ij4KLTwhLS1Ta2VsZXRvbiBGb2xkZXIgZmllbGQgb2YgdGhlIFNrZWxldG9uIENvbmZpZyBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+RW50ZXIgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBKYXZhIGJlYW4gc2tlbGV0b24gd2lsbCBiZSBjcmVhdGVkLCBvciBhY2NlcHQgdGhlIGRlZmF1bHQuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLTxjb250ZXh0IGlkPSJQQlNDMDAxNiI+Ci08IS0tU2hvdyBNYXBwaW5ncyBjaGVja2JveCBvZiB0aGUgQmVhbiBNZXRob2RzIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhpcyBjaGVjayBib3ggdG8gY3VzdG9taXplIHRoZSBtYXBwaW5ncyBiZXR3ZWVuIG5hbWVzcGFjZXMgYW5kIHBhY2thZ2VzLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTwvY29udGV4dHM+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmluZm9wb3AvYnVpbGQucHJvcGVydGllcyBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuaW5mb3BvcC9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGRlZjUyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuaW5mb3BvcC9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBheGlzY29uc3VtcHRpb251aS1mMUNvbnRleHRzLnhtbCxcCi0gICAgICAgICAgICAgICBheGlzY3JlYXRpb251aS1mMUNvbnRleHRzLnhtbCxcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvCi1zcmMuaW5jbHVkZXMgPSBidWlsZC5wcm9wZXJ0aWVzCi1nZW5lcmF0ZVNvdXJjZUJ1bmRsZT1mYWxzZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL3BsdWdpbi5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTUwYmFlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuaW5mb3BvcC9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyBwcm9wZXJ0aWVzIGZpbGUgZm9yIG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmluZm9wb3AKLXBsdWdpbk5hbWUgICAgID0gV2ViIHNlcnZpY2VzIEF4aXMgY29udGV4dCBzZW5zaXRpdmUgaGVscAotcGx1Z2luUHJvdmlkZXIgPSBFY2xpcHNlLm9yZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuaW5mb3BvcC9wbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1M2Q2YzQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5pbmZvcG9wL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC50b2MiPz4gCi08IS0tIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gLS0+Ci08cGx1Z2luPgotCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5jb250ZXh0cyI+Ci0JCTxjb250ZXh0cyBmaWxlPSJheGlzY29uc3VtcHRpb251aS1mMUNvbnRleHRzLnhtbCIgcGx1Z2luPSJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi51aSIvPgotCQk8Y29udGV4dHMgZmlsZT0iYXhpc2NyZWF0aW9udWktZjFDb250ZXh0cy54bWwiIHBsdWdpbj0ib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24udWkiLz4KLQk8L2V4dGVuc2lvbj4KLTwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvLmN2c2lnbm9yZSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUxMTkzZi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLW9yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyXzEuMC4wLmphcgotYmFrCi10ZW1wCi1idWlsZC54bWwKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvLnByb2plY3QgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzVhYTk5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlcjwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvRG9jQnVpbGQueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9Eb2NCdWlsZC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YzAwZDUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9Eb2NCdWlsZC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KLTwhLS0gCi0KLQlUaGlzIHNjcmlwdCBidWlsZCB0aGUgSGVscCBwbHVnLWluIGJ5IHRyYW5zZm9ybWluZyB0aGUgRElUQSBzb3VyY2UgZmlsZXMgaW50byBIVE1MLgotCQotCVRvIHVzZSB0aGlzIHNjcmlwdCwgeW91IG11c3QgaW5zdGFsbCBESVRBLU9UIG9uIHlvdXIgbWFjaGluZSBpbiB0aGUgZGlyZWN0b3J5Ci0JZGVmaW5lZCBieSB0aGUgZGl0YS5vdC5kaXIgcHJvcGVydHkuCi0JCi0JUnVuIHRoZSBkZWZhdWx0IHRhcmdldCBhZnRlciB5b3UgZWRpdCB0aGUgRElUQSBzb3VyY2UgZmlsZXMgdG8gcmVnZW5lcmF0ZSB0aGUgSFRNTC4KLQkKLQlUbyBjdXN0b21pemUgdGhpcyBzY3JpcHQgZm9yIG90aGVyIEhlbHAgcGx1Zy1pbnMsIG1vZGlmeSB0aGUgdmFsdWUgb2YgdGhlIGFyZ3MuaW5wdXQgcHJvcGVydHkKLQl0byBiZSB0aGUgRElUQSBtYXAgZmlsZSBmb3IgdGhlIHBsdWctaW4uCi0JCi0JTk9URTogVGhpcyBzY3JpcHQgYXNzdW1lcyB0aGF0IGxpbmtzIHRvIHNpYmxpbmcgSGVscCBwbHVnLWlucyBoYXZlIHNjb3BlPSJwZWVyIiwgb3RoZXJ3aXNlIHRoZQotCW91dHB1dCBkaXJlY3Rvcnkgc3RydWN0dXJlIHdpbGwgYmUgc2hpZnRlZCBpbmNvcnJlY3RseS4KLQkKLQlOT1RFOiBUaGlzIHNjcmlwdCBhc3N1bWVzIHRoYXQgeW91IGhhbmQgY29kZSB5b3VyIHBsdWdpbi54bWwgZmlsZSBpbiBteXBsdWdpbi54bWwuIFRoaXMgZmlsZQotCXdpbGwgYmUgY29waWVkIG92ZXIgdGhlIGdlbmVyYXRlZCBwbHVnaW4ueG1sIHdoaWNoIGlzIGN1cnJlbnRseSBub3QgYmVpbmcgZ2VuZXJhdGVkIGNvcnJlY3RseQotCWJ5IERJVEEtT1QuCi0JCi0JQ2hhbmdlTG9nOgotCTIwMDYtMDQtMDUgQXJ0aHVyIFJ5bWFuIDxyeW1hbkBjYS5pYm0uY29tPgotCS0gQ3JlYXRlZC4KLQkyMDA4LTAxLTA5IEthdGUgUHJpY2UgPGthdGVwQGNhLmlibS5jb20+Ci0JLSBtb2RpZmllZCBmb3IgbmV3IERJVEEtT1QgdmVyc2lvbgotCTIwMDgtMDUtMDUgS2F0ZSBQcmljZSA8a2F0ZXBAY2EuaWJtLmNvbT4KLQktIG1vZGlmaWVkIHRvIGFkZCBnZW5lcmF0aW9uIG9mIHByZS1idWlsdCBoZWxwIGluZGV4LiAKLQktIE11c3QgZGVsZXRlIC9pbmRleCBmb2xkZXIgYmVmb3JlIHJ1bm5pbmcgYnVpbGQJCi0tLT4KLTxwcm9qZWN0IG5hbWU9ImVjbGlwc2VoZWxwIiBkZWZhdWx0PSJhbGwiPgotCi0JPHByb3BlcnR5IG5hbWU9ImRpdGEub3QuZGlyIiBsb2NhdGlvbj0iQzovRElUQS1PVDEuMi4yIiAvPgotCi0JPHBhdGggaWQ9ImRvc3QuY2xhc3MucGF0aCI+Ci0JCTxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtkaXRhLm90LmRpcn0ke2ZpbGUuc2VwYXJhdG9yfWxpYiR7ZmlsZS5zZXBhcmF0b3J9ZG9zdC5qYXIiIC8+Ci0JPC9wYXRoPgotCi0JPHRhc2tkZWYgbmFtZT0iaW50ZWdyYXRlIiBjbGFzc25hbWU9Im9yZy5kaXRhLmRvc3QucGxhdGZvcm0uSW50ZWdyYXRvclRhc2siPgotCQk8Y2xhc3NwYXRoIHJlZmlkPSJkb3N0LmNsYXNzLnBhdGgiIC8+Ci0JPC90YXNrZGVmPgotCTx0YXJnZXQgbmFtZT0iYWxsIiBkZXBlbmRzPSJpbnRlZ3JhdGUsIGVjbGlwc2VoZWxwIj4KLQk8L3RhcmdldD4KLQk8dGFyZ2V0IG5hbWU9ImludGVncmF0ZSI+Ci0JCTxpbnRlZ3JhdGUgZGl0YWRpcj0iJHtkaXRhLm90LmRpcn0iIC8+Ci0JPC90YXJnZXQ+Ci0KLQk8IS0tIHJldmlzZSBiZWxvdyBoZXJlIC0tPgotCTx0YXJnZXQgbmFtZT0iZWNsaXBzZWhlbHAiPgotCQk8YW50IGFudGZpbGU9IiR7ZGl0YS5vdC5kaXJ9JHtmaWxlLnNlcGFyYXRvcn1jb25kdWN0b3IueG1sIiB0YXJnZXQ9ImluaXQiIGRpcj0iJHtkaXRhLm90LmRpcn0iPgotCQkJPHByb3BlcnR5IG5hbWU9ImFyZ3MuY29weWNzcyIgdmFsdWU9Im5vIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9ImFyZ3MuY3NzcGF0aCIgdmFsdWU9Ii4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlciIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmVjbGlwc2UucHJvdmlkZXIiIHZhbHVlPSJFY2xpcHNlLm9yZyIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmVjbGlwc2UudmVyc2lvbiIgdmFsdWU9IjMuMC4wIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9ImFyZ3MuaW5wdXQiIGxvY2F0aW9uPSJ3c2F4aXNidWlsZF90b2MuZGl0YW1hcCIgLz4gICAKLQkJCTxwcm9wZXJ0eSBuYW1lPSJjbGVhbi50ZW1wIiB2YWx1ZT0idHJ1ZSIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJkaXRhLmV4dG5hbWUiIHZhbHVlPSIuZGl0YSIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJkaXRhLnRlbXAuZGlyIiBsb2NhdGlvbj0idGVtcCIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJvdXRwdXQuZGlyIiBsb2NhdGlvbj0iIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9InRyYW5zdHlwZSIgdmFsdWU9ImVjbGlwc2VoZWxwIiAvPgotCQk8L2FudD4KLQkJPGNvcHkgZmlsZT0ibXlwbHVnaW4ueG1sIiB0b2ZpbGU9InBsdWdpbi54bWwiIG92ZXJ3cml0ZT0ieWVzIiAvPgotCTwvdGFyZ2V0PgotCTx0YXJnZXQgbmFtZT0iYnVpbGQuaW5kZXgiIGRlc2NyaXB0aW9uPSJCdWlsZHMgc2VhcmNoIGluZGV4IGZvciB0aGUgcGx1Zy1pbiIgaWY9ImVjbGlwc2UucnVubmluZyI+Ci0JICAgICA8aGVscC5idWlsZEhlbHBJbmRleCBtYW5pZmVzdD0icGx1Z2luLnhtbCIgZGVzdGluYXRpb249Ii4iLz4KLQk8L3RhcmdldD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWRlOGQzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVwbHVnaW5OYW1lCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlcjsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4xLjAucXVhbGlmaWVyCi1CdW5kbGUtVmVuZG9yOiAlcGx1Z2luUHJvdmlkZXIKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9hYm91dC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGEzZDQ2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgd3NheGlzYnVpbGRfdG9jLnhtbCxcCi0gICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlcmluZGV4LnhtbCxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIGNvbmNlcHRzLyouaHRtKixcCi0gICAgICAgICAgICAgICB0YXNrcy8qLmh0bSosXAotICAgICAgICAgICAgICAgaW5kZXgvLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICB0b3BpY3MvLFwKLSAgICAgICAgICAgICAgIHdzYXhpc19yZWx0YWJsZV90b2MueG1sCi1zcmMuaW5jbHVkZXMgPSBidWlsZC5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgICoubWFwbGlzdCxcCi0gICAgICAgICAgICAgICAqLmRpdGFtYXAsXAotICAgICAgICAgICAgICAgY29uY2VwdHMvKi5kaXRhLFwKLSAgICAgICAgICAgICAgIHRhc2tzLyouZGl0YSxcCi0gICAgICAgICAgICAgICB0b3BpY3MvLFwKLSAgICAgICAgICAgICAgIHdzYXhpc19yZWx0YWJsZV90b2MueG1sLFwKLSAgICAgICAgICAgICAgIHdzYXhpc2J1aWxkX3RvYy54bWwsXAotICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXJpbmRleC54bWwsXAotICAgICAgICAgICAgICAgaW5kZXgvLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sCi1iaW4uZXhjbHVkZXMgPSBEb2NCdWlsZC54bWwsXAotICAgICAgICAgICAgICAgbXlQbHVnaW4qLnhtbCxcCi0gICAgICAgICAgICAgICB0b3BpY3MvKi5kaXRhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9pbmRleC9fNS5jZnMgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL2luZGV4L181LmNmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y3MjhjMS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL2luZGV4L181LmNmcworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvaW5kZXgvZGVsZXRhYmxlIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9pbmRleC9kZWxldGFibGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5M2Y0NzAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9pbmRleC9kZWxldGFibGUKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfY29udHJpYnV0aW9ucyBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGE3YjVlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlOyBkbyBub3QgZWRpdC4NCi0jV2VkIE1heSAxNCAxNTozODoyOCBFRFQgMjAwOA0KLW9yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyPW9yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyXG4xLjEuMC5xdWFsaWZpZXINCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfZGVwZW5kZW5jaWVzIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RlcGVuZGVuY2llcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM1MWM4Mi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfZGVwZW5kZW5jaWVzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlOyBkbyBub3QgZWRpdC4NCi0jV2VkIE1heSAxNCAxNTozODoyOCBFRFQgMjAwOA0KLWx1Y2VuZT0xLjkuMS52MjAwODAzMDYxODExDQotYW5hbHl6ZXI9b3JnLmVjbGlwc2UuaGVscC5iYXNlXCMzLjMuMTAwLnYyMDA4MDQyNT9sb2NhbGVcPWVuDQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RvY3MgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfZG9jcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJiNTdjYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfZG9jcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotI1RoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZTsgZG8gbm90IGVkaXQuDQotI1dlZCBNYXkgMTQgMTU6Mzg6MjggRURUIDIwMDgNCi0vb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL2NheGlzdG92ZXIuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90c2FtcGFwcGEuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90dG9tY2F0c2Vydi5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3Rza2x3c2RsYS5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3R3c2JlYW5hLmh0bWw9MA0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvaW5kZXgvc2VnbWVudHMgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL2luZGV4L3NlZ21lbnRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjQyYmQxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvaW5kZXgvc2VnbWVudHMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL215cGx1Z2luLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvbXlwbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2UzNjgwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvbXlwbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+IAotPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgotPHBsdWdpbj4KLSAgCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC50b2MiPgotCQk8dG9jIGZpbGU9IndzYXhpc2J1aWxkX3RvYy54bWwiIC8+Ci0gICAgICAgPGluZGV4IHBhdGg9ImluZGV4LyIvPgotCTwvZXh0ZW5zaW9uPgotCQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuaW5kZXgiPgotICAgICAgPGluZGV4IGZpbGU9Im9yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyaW5kZXgueG1sIi8+Ci08L2V4dGVuc2lvbj4KLSAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UubHVjZW5lU2VhcmNoUGFydGljaXBhbnRzIj4KLSAgICAgIDxiaW5kaW5nIHBhcnRpY2lwYW50SWQ9Im9yZy5lY2xpcHNlLmhlbHAuYmFzZS54aHRtbCIvPgotICAgPC9leHRlbnNpb24+Ci08L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyLm1hcGxpc3QgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyLm1hcGxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNDM4MjIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci5tYXBsaXN0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08bWFwbGlzdCB2ZXJzaW9uPSIzLjYuMiI+Ci0gIDxuYXY+Ci0gICAgPG1hcCBmaWxlPSJ3c2F4aXNidWlsZF90b2MuZGl0YW1hcCIvPgotICA8L25hdj4KLSAgPGxpbms+Ci0gICAgPG1hcCBmaWxlPSJ3c2F4aXNidWlsZF90b2MuZGl0YW1hcCIvPgotICA8L2xpbms+Ci08L21hcGxpc3Q+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyaW5kZXgueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlcmluZGV4LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI4NzJhOC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyaW5kZXgueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxpbmRleD4KLSAgPGVudHJ5IGtleXdvcmQ9IkF4aXMgcnVudGltZSBlbnZpcm9ubWVudCI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9IldlYiBzZXJ2aWNlcyI+Ci0gICAgICA8ZW50cnkga2V5d29yZD0ib3ZlcnZpZXciPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL2NheGlzdG92ZXIuaHRtbCNheGlzb3ZlcnZpZXciIHRpdGxlPSJDcmVhdGluZyBXZWIgc2VydmljZXMgd2l0aCB0aGUgQXBhY2hlIEF4aXMxIHJ1bnRpbWUgZW52aXJvbm1lbnQiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgICA8ZW50cnkga2V5d29yZD0iSmF2YSBiZWFucyI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0b3BpY3MvdHdzYmVhbmEuaHRtbCN0d3NiZWFuYSIgdGl0bGU9IkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgZnJvbSBhIEphdmEgYmVhbiB1c2luZyB0aGUgQXBhY2hlIEF4aXMxIHJ1bnRpbWUgZW52aXJvbm1lbnQiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgICA8ZW50cnkga2V5d29yZD0ic2tlbGV0b24iPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL3Rza2x3c2RsYS5odG1sI3Rza2x3c2RsYSIgdGl0bGU9IkNyZWF0aW5nIGEgSmF2YSBiZWFuIHNrZWxldG9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudCIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJjbGllbnRzIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy90c2FtcGFwcGEuaHRtbCN0c2FtcGFwcGEiIHRpdGxlPSJHZW5lcmF0aW5nIGEgSmF2YSBjbGllbnQgcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50Ii8+Ci0gICAgICA8L2VudHJ5PgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9IkFwYWNoZSBUb21jYXQiPgotICAgICAgPHRvcGljIGhyZWY9InRvcGljcy90dG9tY2F0c2Vydi5odG1sI2NyZWF0aW5nYW5hcGFjaGV0b21jYXRzZXJ2ZXIiIHRpdGxlPSJDcmVhdGluZyBhbiBBcGFjaGUgVG9tY2F0IHNlcnZlciBhbmQgV2ViIHByb2plY3QiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0iV2ViIHNlcnZpY2VzIj4KLSAgICA8ZW50cnkga2V5d29yZD0iQXhpcyBydW50aW1lIGVudmlyb25tZW50Ij4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJvdmVydmlldyI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0b3BpY3MvY2F4aXN0b3Zlci5odG1sI2F4aXNvdmVydmlldyIgdGl0bGU9IkNyZWF0aW5nIFdlYiBzZXJ2aWNlcyB3aXRoIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudCIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJjcmVhdGluZyBhIFdlYiBzZXJ2aWNlIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy90d3NiZWFuYS5odG1sI3R3c2JlYW5hIiB0aXRsZT0iQ3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIHVzaW5nIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudCIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJza2VsZXRvbiBXZWIgc2VydmljZXMiPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL3Rza2x3c2RsYS5odG1sI3Rza2x3c2RsYSIgdGl0bGU9IkNyZWF0aW5nIGEgSmF2YSBiZWFuIHNrZWxldG9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudCIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJXZWIgc2VydmljZSBjbGllbnRzIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy90c2FtcGFwcGEuaHRtbCN0c2FtcGFwcGEiIHRpdGxlPSJHZW5lcmF0aW5nIGEgSmF2YSBjbGllbnQgcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50Ii8+Ci0gICAgICA8L2VudHJ5PgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImNyZWF0aW5nIGFuIEFwYWNoZSBUb21jYXQgc2VydmVyIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0b3BpY3MvdHRvbWNhdHNlcnYuaHRtbCNjcmVhdGluZ2FuYXBhY2hldG9tY2F0c2VydmVyIiB0aXRsZT0iQ3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXIgYW5kIFdlYiBwcm9qZWN0Ii8+Ci0gICAgPC9lbnRyeT4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9IkFwYWNoZSBUb21jYXQiPgotICAgIDxlbnRyeSBrZXl3b3JkPSJzZXJ2ZXJzIGZvciBXZWIgc2VydmljZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRvcGljcy90dG9tY2F0c2Vydi5odG1sI2NyZWF0aW5nYW5hcGFjaGV0b21jYXRzZXJ2ZXIiIHRpdGxlPSJDcmVhdGluZyBhbiBBcGFjaGUgVG9tY2F0IHNlcnZlciBhbmQgV2ViIHByb2plY3QiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotPC9pbmRleD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg2ZmI4Ny4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgTkxTX01FU1NBR0VGT1JNQVRfVkFSIAotIyBOTFNfRU5DT0RJTkc9VVRGLTggCi0KLXBsdWdpbk5hbWUgPSBBeGlzIFdlYiBzZXJ2aWNlcyBkb2N1bWVudGF0aW9uCi1wbHVnaW5Qcm92aWRlciA9IEVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3BsdWdpbi54bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZTM2ODAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+IAotPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgotPHBsdWdpbj4KLSAgCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC50b2MiPgotCQk8dG9jIGZpbGU9IndzYXhpc2J1aWxkX3RvYy54bWwiIC8+Ci0gICAgICAgPGluZGV4IHBhdGg9ImluZGV4LyIvPgotCTwvZXh0ZW5zaW9uPgotCQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuaW5kZXgiPgotICAgICAgPGluZGV4IGZpbGU9Im9yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyaW5kZXgueG1sIi8+Ci08L2V4dGVuc2lvbj4KLSAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UubHVjZW5lU2VhcmNoUGFydGljaXBhbnRzIj4KLSAgICAgIDxiaW5kaW5nIHBhcnRpY2lwYW50SWQ9Im9yZy5lY2xpcHNlLmhlbHAuYmFzZS54aHRtbCIvPgotICAgPC9leHRlbnNpb24+Ci08L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy9jYXhpc3RvdmVyLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy9jYXhpc3RvdmVyLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNzE4M2EuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvY2F4aXN0b3Zlci5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSBjb25jZXB0IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIENvbmNlcHQvL0VOIg0KLSAiY29uY2VwdC5kdGQiPg0KLTxjb25jZXB0IGlkPSJheGlzb3ZlcnZpZXciIHhtbDpsYW5nPSJlbi11cyI+DQotPHRpdGxlPkNyZWF0aW5nIFdlYiBzZXJ2aWNlcyB3aXRoIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudDwvdGl0bGU+DQotPHNob3J0ZGVzYz5UaGlzIHJ1bnRpbWUgZW52aXJvbm1lbnRzIGlzIGZvciB1c2VycyB3aG8gcHJlZmVyIHRvIGRldmVsb3AgZm9yDQotdGhlIG9wZW4gQXBhY2hlIEF4aXMgcGxhdGZvcm0uPC9zaG9ydGRlc2M+DQotPHByb2xvZz48bWV0YWRhdGE+DQotPGtleXdvcmRzPjxpbmRleHRlcm0ga2V5cmVmPSJjYXhpc3RvdmVyfDF8QXhpc3J1bnRpbWVlbnZpcm9ubWVudFdlYnNlcnZpY2Vzb3ZlcnZpZXciDQotc3RhdHVzPSJ1bmNoYW5nZWQiPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5vdmVydmlldzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPg0KLTxpbmRleHRlcm0ga2V5cmVmPSJjYXhpc3RvdmVyfDJ8V2Vic2VydmljZXNBeGlzcnVudGltZWVudmlyb25tZW50IiBzdGF0dXM9InVuY2hhbmdlZCI+V2ViDQotc2VydmljZXM8aW5kZXh0ZXJtPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+b3ZlcnZpZXc8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT4NCi08L2tleXdvcmRzPg0KLTwvbWV0YWRhdGE+PC9wcm9sb2c+DQotPGNvbmJvZHk+DQotPHNlY3Rpb24+PHRpdGxlPkFwYWNoZSBBeGlzMSBPdmVydmlldzwvdGl0bGU+PHA+QXhpcyBpcyB0aGUgdGhpcmQgZ2VuZXJhdGlvbg0KLW9mIHRoZSBBcGFjaGUgU09BUCBpbXBsZW1lbnRhdGlvbi4gSXQgZXZvbHZlZCBmcm9tIEFwYWNoZSBTT0FQIHRvIG1ha2UgdGhlDQotU09BUCBlbmdpbmUgbW9yZSBmbGV4aWJsZSwgY29uZmlndXJhYmxlLCBhbmQgYWJsZSB0byBoYW5kbGUgYm90aCBTT0FQIGFuZA0KLXRoZSB1cGNvbWluZyBYTUwgUHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmcm9tIHRoZSBXM0Mgb3Blbi1zb3VyY2UgZWZmb3J0LiBBeGlzDQotaXMgYmFzZWQgb24gSlNSIDEwMSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiINCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBBUElzIGZvciBYTUwgYmFzZWQgUlBDIChhbHNvIGtub3duDQotYXMgSkFYLVJQQykuIEpTUiAxMDEgcHJvdmlkZXMgYSBzaW5nbGUgaW50ZXJmYWNlIHRvIGFueSBYTUwtYmFzZWQgUlBDIG1lY2hhbmlzbSwNCi1pbmNsdWRpbmcgU09BUC48L3A+PHA+V2ViIHNlcnZpY2VzIGFwcGxpY2F0aW9uIHNlcnZlciB1c2VzIEF4aXMgd2l0aGluIGEgc2VydmxldA0KLXRvIHByb2Nlc3MgdGhlIGluY29taW5nIG1lc3NhZ2UsIGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSB0aGUgbWVzc2FnZSBoZWFkZXJzLA0KLWFuZCBwYXlsb2FkcywgYXMgd2VsbCBhcyBjb25mb3JtaW5nIHRvIHRoZSBwYXJ0aWN1bGFyIFJQQyBzZW1hbnRpY3MuIDwvcD48L3NlY3Rpb24+DQotPC9jb25ib2R5Pg0KLTxyZWxhdGVkLWxpbmtzPg0KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+DQotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5kaXRhIiBzY29wZT0icGVlciI+DQotPGxpbmt0ZXh0PldlYiBzZXJ2aWNlczwvbGlua3RleHQ+PC9saW5rPg0KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5kaXRhIiBzY29wZT0icGVlciI+DQotPGxpbmt0ZXh0PlRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4NCi08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY2pheHJwYy5kaXRhIiBzY29wZT0icGVlciI+DQotPGxpbmt0ZXh0PkpBWC1SUEM8L2xpbmt0ZXh0PjwvbGluaz4NCi08L2xpbmtsaXN0Pg0KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+DQotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuZGl0YSIgc2NvcGU9InBlZXIiPg0KLTxsaW5rdGV4dD4gRGV2ZWxvcGluZyBXZWIgc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4NCi08L2xpbmtsaXN0Pg0KLTwvcmVsYXRlZC1saW5rcz4NCi08L2NvbmNlcHQ+DQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvY2F4aXN0b3Zlci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvY2F4aXN0b3Zlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTZiYTc2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL2NheGlzdG92ZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJjb25jZXB0IiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkNyZWF0aW5nIFdlYiBzZXJ2aWNlcyB3aXRoIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudCIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGlzIHJ1bnRpbWUgZW52aXJvbm1lbnRzIGlzIGZvciB1c2VycyB3aG8gcHJlZmVyIHRvIGRldmVsb3AgZm9yIHRoZSBvcGVuIEFwYWNoZSBBeGlzIHBsYXRmb3JtLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGlzIHJ1bnRpbWUgZW52aXJvbm1lbnRzIGlzIGZvciB1c2VycyB3aG8gcHJlZmVyIHRvIGRldmVsb3AgZm9yIHRoZSBvcGVuIEFwYWNoZSBBeGlzIHBsYXRmb3JtLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IkF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgV2ViIHNlcnZpY2VzLCBvdmVydmlldywgV2ViIHNlcnZpY2VzIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iQXhpcyBydW50aW1lIGVudmlyb25tZW50LCBXZWIgc2VydmljZXMsIG92ZXJ2aWV3LCBXZWIgc2VydmljZXMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90b3BpY3MvdHdzYmVhbmEuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdG9waWNzL3Rza2x3c2RsYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90b3BpY3MvdHNhbXBhcHBhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jamF4cnBjLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci90YXNrcy90b3ZlcndzLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0iYXhpc292ZXJ2aWV3IiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+Q3JlYXRpbmcgV2ViIHNlcnZpY2VzIHdpdGggdGhlIEFwYWNoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJheGlzb3ZlcnZpZXciPjxhIG5hbWU9ImF4aXNvdmVydmlldyI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+Q3JlYXRpbmcgV2ViIHNlcnZpY2VzIHdpdGggdGhlIEFwYWNoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50PC9oMT4KLQotCi0KLTxkaXY+PHA+VGhpcyBydW50aW1lIGVudmlyb25tZW50cyBpcyBmb3IgdXNlcnMgd2hvIHByZWZlciB0byBkZXZlbG9wIGZvcgotdGhlIG9wZW4gQXBhY2hlIEF4aXMgcGxhdGZvcm0uPC9wPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+QXBhY2hlIEF4aXMxIE92ZXJ2aWV3PC9oND48cD5BeGlzIGlzIHRoZSB0aGlyZCBnZW5lcmF0aW9uCi1vZiB0aGUgQXBhY2hlIFNPQVAgaW1wbGVtZW50YXRpb24uIEl0IGV2b2x2ZWQgZnJvbSBBcGFjaGUgU09BUCB0byBtYWtlIHRoZQotU09BUCBlbmdpbmUgbW9yZSBmbGV4aWJsZSwgY29uZmlndXJhYmxlLCBhbmQgYWJsZSB0byBoYW5kbGUgYm90aCBTT0FQIGFuZAotdGhlIHVwY29taW5nIFhNTCBQcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIFczQyBvcGVuLXNvdXJjZSBlZmZvcnQuIEF4aXMKLWlzIGJhc2VkIG9uIEpTUiAxMDEgSmF2YeKEoiBBUElzIGZvciBYTUwgYmFzZWQgUlBDIChhbHNvIGtub3duCi1hcyBKQVgtUlBDKS4gSlNSIDEwMSBwcm92aWRlcyBhIHNpbmdsZSBpbnRlcmZhY2UgdG8gYW55IFhNTC1iYXNlZCBSUEMgbWVjaGFuaXNtLAotaW5jbHVkaW5nIFNPQVAuPC9wPgotPHA+V2ViIHNlcnZpY2VzIGFwcGxpY2F0aW9uIHNlcnZlciB1c2VzIEF4aXMgd2l0aGluIGEgc2VydmxldAotdG8gcHJvY2VzcyB0aGUgaW5jb21pbmcgbWVzc2FnZSwgZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtZXNzYWdlIGhlYWRlcnMsCi1hbmQgcGF5bG9hZHMsIGFzIHdlbGwgYXMgY29uZm9ybWluZyB0byB0aGUgcGFydGljdWxhciBSUEMgc2VtYW50aWNzLiA8L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+PGRpdiBjbGFzcz0icmVsdGFza3MiPjxzdHJvbmc+UmVsYXRlZCB0YXNrczwvc3Ryb25nPjxiciAvPgotPGRpdj48YSBocmVmPSIuLi90b3BpY3MvdHdzYmVhbmEuaHRtbCIgdGl0bGU9IlRoZSBXZWIgU2VydmljZSB3aXphcmQgYXNzaXN0cyB5b3UgaW4gY3JlYXRpbmcgYSBuZXcgV2ViIHNlcnZpY2UsIGNvbmZpZ3VyaW5nIGl0IGZvciBkZXBsb3ltZW50LCBhbmQgZGVwbG95aW5nIHRoZSBXZWIgc2VydmljZSB0byBhIHNlcnZlci4gT25jZSB5b3VyIFdlYiBzZXJ2aWNlIGlzIGRlcGxveWVkLCB0aGUgd2l6YXJkIGFzc2lzdHMgeW91IGluIGdlbmVyYXRpbmcgdGhlIGNsaWVudCBwcm94eSBhbmQgc2FtcGxlIGFwcGxpY2F0aW9uIHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlLiBXaGVuIHlvdSBoYXZlIGNvbXBsZXRlZCB0ZXN0aW5nLCB5b3UgY2FuIHB1Ymxpc2ggeW91ciBXZWIgc2VydmljZSB0byBhIFVEREkgQnVzaW5lc3MgUmVnaXN0cnkgdXNpbmcgdGhlIEV4cG9ydCB3aXphcmQuIj5DcmVhdGluZyBhIFdlYiBzZXJ2aWNlIGZyb20gYSBKYXZhIGJlYW4gdXNpbmcgdGhlIEFwYWNoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi90b3BpY3MvdHNrbHdzZGxhLmh0bWwiIHRpdGxlPSJUaGUgV2ViIHNlcnZpY2Ugd2l6YXJkIGFzc2lzdHMgeW91IGluIGNyZWF0aW5nIGEgc2tlbGV0b24gYmVhbiBmcm9tIGFuIGV4aXN0aW5nIFdTREwgZG9jdW1lbnQuIFRoZSBza2VsZXRvbiBiZWFuIGNvbnRhaW5zIGEgc2V0IG9mIG1ldGhvZHMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBvcGVyYXRpb25zIGRlc2NyaWJlZCBpbiB0aGUgV1NETCBkb2N1bWVudC4gV2hlbiB0aGUgYmVhbiBpcyBjcmVhdGVkLCBlYWNoIG1ldGhvZCBoYXMgYSB0cml2aWFsIGltcGxlbWVudGF0aW9uIHRoYXQgeW91IHJlcGxhY2UgYnkgZWRpdGluZyB0aGUgYmVhbi4iPkNyZWF0aW5nIGEgSmF2YSBiZWFuIHNrZWxldG9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vdG9waWNzL3RzYW1wYXBwYS5odG1sIiB0aXRsZT0iVGhlIFdlYiBTZXJ2aWNlIENsaWVudCB3aXphcmQgYXNzaXN0cyB5b3UgaW4gZ2VuZXJhdGluZyBhIEphdmEgYmVhbiBwcm94eSBhbmQgYSBzYW1wbGUgYXBwbGljYXRpb24uIFRoZSBzYW1wbGUgV2ViIGFwcGxpY2F0aW9uIGRlbW9uc3RyYXRlcyBob3cgdG8gY29kZSBhIHByb3h5IGZpbGUuIj5HZW5lcmF0aW5nIGEgSmF2YSBjbGllbnQgcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50PC9hPjwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlczwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPlRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jamF4cnBjLmh0bWwiPkpBWC1SUEM8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5odG1sIj4gRGV2ZWxvcGluZyBXZWIgc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3RzYW1wYXBwYS5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvdHNhbXBhcHBhLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZTc4ODIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvdHNhbXBhcHBhLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIg0KLSAidGFzay5kdGQiPg0KLTx0YXNrIGlkPSJ0c2FtcGFwcGEiIHhtbDpsYW5nPSJlbi11cyI+DQotPHRpdGxlPkdlbmVyYXRpbmcgYSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiINCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBjbGllbnQgcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uDQotZnJvbSBhIFdTREwgZG9jdW1lbnQgdXNpbmcgdGhlIEF4aXMxIHJ1bnRpbWUgZW52aXJvbm1lbnQ8L3RpdGxlPg0KLTx0aXRsZWFsdHM+DQotPHNlYXJjaHRpdGxlPkdlbmVyYXRpbmcgYSBKYXZhIGNsaWVudCBwcm94eSBhbmQgYSBzYW1wbGUgYXBwbGljYXRpb24gZnJvbQ0KLWEgV1NETCBkb2N1bWVudCB1c2luZyB0aGUgQXhpcyBydW50aW1lIGVudmlyb25tZW50PC9zZWFyY2h0aXRsZT4NCi08L3RpdGxlYWx0cz4NCi08c2hvcnRkZXNjPlRoZSBXZWIgU2VydmljZSBDbGllbnQgd2l6YXJkIGFzc2lzdHMgeW91IGluIGdlbmVyYXRpbmcgYSA8dG0gdG1jbGFzcz0ic3BlY2lhbCINCi10bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIiB0bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBiZWFuDQotcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uLiBUaGUgc2FtcGxlIFdlYiBhcHBsaWNhdGlvbiBkZW1vbnN0cmF0ZXMgaG93DQotdG8gY29kZSBhIHByb3h5IGZpbGUuPC9zaG9ydGRlc2M+DQotPHByb2xvZz48bWV0YWRhdGE+DQotPGtleXdvcmRzPjxpbmRleHRlcm0ga2V5cmVmPSJ0c2FtcGFwcGF8MXxBeGlzcnVudGltZWVudmlyb25tZW50V2Vic2VydmljZWNsaWVudHMiDQotc3RhdHVzPSJ1bmNoYW5nZWQiPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5jbGllbnRzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+DQotPGluZGV4dGVybSBrZXlyZWY9InRzYW1wYXBwYXwyfFdlYnNlcnZpY2VzQXhpc3J1bnRpbWVlbnZpcm9ubWVudFdlYnNlcnZpY2VjbGllbnRzIg0KLXN0YXR1cz0idW5jaGFuZ2VkIj5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+V2ViDQotc2VydmljZSBjbGllbnRzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9rZXl3b3Jkcz4NCi08L21ldGFkYXRhPjwvcHJvbG9nPg0KLTx0YXNrYm9keT4NCi08cHJlcmVxPjxwPlByZXJlcXVpc2l0ZXM6PC9wPjxvbD4NCi08bGkgY29ucmVmPSJ0d3NiZWFuYS5kaXRhI3R3c2JlYW5hL2NyZWF0ZXRvbWNhdGxpbmsiPjwvbGk+DQotPGxpPkRpc2NvdmVyIGFuZCBpbXBvcnQgYSBXU0RMIGRvY3VtZW50IGludG8gdGhlIFdlYiBwcm9qZWN0LiBZb3UgY2FuIG9ubHkNCi11c2UgYSBXU0RMIGZpbGUgdGhhdCBjb250YWlucyBhIHNlcnZpY2UgZWxlbWVudC48L2xpPg0KLTwvb2w+PC9wcmVyZXE+DQotPGNvbnRleHQ+VG8gZ2VuZXJhdGUgYSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiINCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBjbGllbnQgcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uDQotZnJvbSBhIGRpc2NvdmVyZWQgV1NETCBkb2N1bWVudDo8L2NvbnRleHQ+DQotPHN0ZXBzPg0KLTxzdGVwPjxjbWQ+U3dpdGNoIHRvIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlICg8dWljb250cm9sPldpbmRvdyA+IE9wZW4gUGVyc3BlY3RpdmUNCi0+IEphdmEgRUU8L3VpY29udHJvbD4pLjwvY21kPjwvc3RlcD4NCi08c3RlcD48Y21kPkluIHRoZSBOYXZpZ2F0b3Igdmlldywgc2VsZWN0IHRoZSBXZWIgcHJvamVjdCBpbiB3aGljaCB5b3Ugd2FudA0KLXRvIGdlbmVyYXRlIGEgc2FtcGxlIGFwcGxpY2F0aW9uLjwvY21kPjwvc3RlcD4NCi08c3RlcD48Y21kPkNsaWNrICA8dWljb250cm9sPkZpbGUgPiBOZXcgPiBPdGhlcjwvdWljb250cm9sPi4gU2VsZWN0ICA8dWljb250cm9sPldlYg0KLVNlcnZpY2VzPC91aWNvbnRyb2w+IGluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIHZhcmlvdXMgV2ViIHNlcnZpY2Ugd2l6YXJkcy4NCi1TZWxlY3QgdGhlICA8dWljb250cm9sPldlYiBTZXJ2aWNlIENsaWVudDwvdWljb250cm9sPiB3aXphcmQuIENsaWNrICA8dWljb250cm9sPk5leHQ8L3VpY29udHJvbD4uPC9jbWQ+DQotPC9zdGVwPg0KLTxzdGVwPjxjbWQ+V2ViIFNlcnZpY2VzIHBhZ2U6IDwvY21kPg0KLTxzdWJzdGVwcz4NCi08c3Vic3RlcD48Y21kPkVudGVyIHRoZSBVUkkgdG8gdGhlIFdTREwsIFdTSUwsIG9yIEhUTUwgZmlsZSB0aGF0IHdpbGwgYmUgdXNlZA0KLXRvIGdlbmVyYXRlIHRoZSBjbGllbnQuPC9jbWQ+PC9zdWJzdGVwPg0KLTxzdWJzdGVwPjxjbWQ+U2VsZWN0IHRoZSB0eXBlIG9mIHByb3h5IHRvIGJlIGdlbmVyYXRlZDwvY21kPjwvc3Vic3RlcD4NCi08c3Vic3RlcD48Y21kPlNlbGVjdCB0aGUgc3RhZ2VzIG9mIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCB0aGF0IHlvdSB3YW50DQotdG8gY29tcGxldGUgdXNpbmcgdGhlIHNsaWRlcjo8L2NtZD48aW5mbz48dWw+DQotPGxpPkRldmVsb3A6IHRoaXMgd2lsbCBkZXZlbG9wIHRoZSBXU0RMIGRlZmluaXRpb24gYW5kIGltcGxlbWVudGF0aW9uIG9mIHRoZQ0KLVdlYiBzZXJ2aWNlLiBUaGlzIGluY2x1ZGVzIHN1Y2ggdGFza3MgYXMgY3JlYXRpbmcgdGhlIG1vZHVsZXMgd2hpY2ggd2lsbCBjb250YWluDQotdGhlIGdlbmVyYXRlZCBjb2RlIGFuZCBKYXZhIGZpbGVzLCBhcyB3ZWxsIGFzIGNvcHlpbmcgdGhlIEF4aXMgSkFScy4uPC9saT4NCi08bGk+QXNzZW1ibGU6IHRoaXMgZW5zdXJlcyB0aGUgcHJvamVjdCB0aGF0IHdpbGwgaG9zdCB0aGUgV2ViIHNlcnZpY2Ugb3IgY2xpZW50DQotZ2V0cyBhc3NvY2lhdGVkIHRvIGFuIEVBUiB3aGVuIHJlcXVpcmVkIGJ5IHRoZSB0YXJnZXQgYXBwbGljYXRpb24gc2VydmVyLjwvbGk+DQotPGxpPkRlcGxveTogdGhpcyB3aWxsIGNyZWF0ZSB0aGUgZGVwbG95bWVudCBjb2RlIGZvciB0aGUgc2VydmljZS48L2xpPg0KLTxsaT5JbnN0YWxsOiB0aGlzIHdpbGwgaW5zdGFsbCBhbmQgY29uZmlndXJlIHRoZSBXZWIgbW9kdWxlIGFuZCBFQVJzIG9uIHRoZQ0KLXRhcmdldCBzZXJ2ZXIuPC9saT4NCi08bGk+U3RhcnQ6IHRoaXMgd2lsbCBzdGFydCB0aGUgc2VydmVyIG9uY2UgdGhlIHNlcnZpY2UgaGFzIGJlZW4gaW5zdGFsbGVkDQotb24gaXQuIFRoZSBzZXJ2ZXItY29uZmlnLndzZGQgZmlsZSB3aWxsIGJlIGdlbmVyYXRlZC48L2xpPg0KLTxsaT5UZXN0OiB0aGlzIHdpbGwgcHJvdmlkZSB2YXJpb3VzIG9wdGlvbnMgZm9yIHRlc3RpbmcgdGhlIHNlcnZpY2UsIHN1Y2gNCi1hcyB1c2luZyB0aGUgV2ViIFNlcnZpY2UgRXhwbG9yZXIgb3Igc2FtcGxlIEpTUHMuPC9saT4NCi08L3VsPjwvaW5mbz48L3N1YnN0ZXA+DQotPHN1YnN0ZXA+PGNtZD5TZWxlY3QgeW91ciBzZXJ2ZXI6IHRoZSBkZWZhdWx0IHNlcnZlciBpcyBkaXNwbGF5ZWQuIElmIHlvdQ0KLXdhbnQgdG8gZGVwbG95IHlvdXIgY2xpZW50IHRvIGEgZGlmZmVyZW50IHNlcnZlciBjbGljayB0aGUgbGluayB0byBzcGVjaWZ5DQotYSBkaWZmZXJlbnQgc2VydmVyLjwvY21kPjwvc3Vic3RlcD4NCi08c3Vic3RlcD48Y21kPlNlbGVjdCB5b3VyIHJ1bnRpbWU6IHRoZSBkZWZhdWx0IHJ1bnRpbWUgaXMgZGlzcGxheWVkLiBJZiB5b3UNCi13YW50IHRvIGRlcGxveSB5b3VyIGNsaWVudCB0byBhIGRpZmZlcmVudCBydW50aW1lIGNsaWNrIHRoZSBsaW5rIHRvIHNwZWNpZnkNCi1hIGRpZmZlcmVudCBydW50aW1lLjwvY21kPjwvc3Vic3RlcD4NCi08c3Vic3RlcD48Y21kPlNlbGVjdCB0aGUgY2xpZW50IHByb2plY3Q6IHRoZSBwcm9qZWN0IGNvbnRhaW5pbmcgdGhlIHByb2plY3QNCi1zZWxlY3RlZCBpbiB5b3VyIHdvcmtzcGFjZSBpcyBkaXNwbGF5ZWQuIFRvIHNlbGVjdCBhIGRpZmZlcmVudCBwcm9qZWN0IGFuZA0KLUVBUiBjbGljayBvbiB0aGUgcHJvamVjdCBsaW5rLjwvY21kPjxpbmZvPkVuc3VyZSB0aGF0IHRoZSBwcm9qZWN0IHNlbGVjdGVkDQotYXMgdGhlIENsaWVudCBXZWIgUHJvamVjdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgU2VydmljZSBXZWIgUHJvamVjdCwgb3IgdGhlDQotc2VydmljZSB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBjbGllbnQncyBnZW5lcmF0ZWQgYXJ0aWZhY3RzLjwvaW5mbz48L3N1YnN0ZXA+DQotPHN1YnN0ZXA+PGNtZD5Nb25pdG9yIHRoZSBXZWIgc2VydmljZTogdGhpcyB3aWxsIHNlbmQgdGhlIFdlYiBzZXJ2aWNlIHRyYWZmaWMNCi10aHJvdWdoIHRoZSBUQ1AvSVAgTW9uaXRvciwgd2hpY2ggYWxsb3dzIHlvdSB0byB3YXRjaCB0aGUgU09BUCB0cmFmZmljIGdlbmVyYXRlZA0KLWJ5IHRoZSBXZWIgc2VydmljZSBhbmQgdG8gdGVzdCB0aGlzIHRyYWZmaWMgZm9yIFdTLUkgY29tcGxpYW5jZS4gQWx0ZXJuYXRlbHkNCi15b3UgY2FuIG1hbnVhbGx5IHNldCB1cCBhIFRDUC9JUCBtb25pdG9yIGFzIGRlc2NyaWJlZCBpbiA8eHJlZiBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3Rtb25pdG9yLmRpdGEiDQotc2NvcGU9InBlZXIiPlVzaW5nIHRoZSBUQ1AvSVAgTW9uaXRvciB0byB0ZXN0IFdlYiBzZXJ2aWNlczwveHJlZj48L2NtZD48L3N1YnN0ZXA+DQotPC9zdWJzdGVwcz4NCi08L3N0ZXA+DQotPHN0ZXA+PGNtZD5XZWIgU2VydmljZSBQcm94eSBwYWdlOiBUaGlzIHBhbmVsIHNob3dzIHRoZSBvcHRpb25zIGZvciB0aGUgcHJveHkuDQotSXQgbGlzdHMgdGhlIGZvbGRlciB3aGVyZSB0aGUgcHJveHkgd2lsbCBiZSBnZW5lcmF0ZWQsIGFuZCB5b3UgY2FuIG9wdGlvbmFsbHkNCi1jcmVhdGUgY3VzdG9tIG1hcHBpbmdzIGJldHdlZW4gbmFtZXNwYWNlcyBhbmQgcGFja2FnZXMuPC9jbWQ+PC9zdGVwPg0KLTxzdGVwPjxjbWQ+V2ViIFNlcnZpY2UgTmFtZXNwYWNlIHRvIFBhY2thZ2UgTWFwcGluZ3MgcGFnZTogaWYgeW91IHNlbGVjdGVkDQotIDx1aWNvbnRyb2w+RGVmaW5lIGN1c3RvbSBtYXBwaW5nIGZvciBuYW1lc3BhY2UgdG8gcGFja2FnZTwvdWljb250cm9sPiBvbg0KLXRoZSBwcmV2aW91cyBwYWdlLCB5b3UgY2FuIGVudGVyIHlvdXIgY3VzdG9tIG1hcHBpbmcgcGFpcnMgb24gdGhpcyBwYWdlIGJ5DQotY2xpY2tpbmcgIDx1aWNvbnRyb2w+QWRkPC91aWNvbnRyb2w+LiBBbHRlcm5hdGVseSwgeW91IGNhbiBjbGljayAgPGI+SW1wb3J0PC9iPiB0bw0KLWltcG9ydCBjdXN0b20gbWFwcGluZyBwYWlycyBmcm9tIGEgIDxzeXN0ZW1vdXRwdXQ+LnByb3BlcnRpZXM8L3N5c3RlbW91dHB1dD4gZmlsZS4NCi1UaGUgY29udGVudCBvZiB0aGUgcHJvcGVydGllcyBmaWxlIG11c3QgYmUgb2YgdGhlIGZvcm1hdCAgPGNvZGVwaD48dmFybmFtZT5uYW1lc3BhY2U9cGFja2FnZTwvdmFybmFtZT48L2NvZGVwaD4uPC9jbWQ+DQotPGluZm8+WW91IHdpbGwgbmVlZCB0byBlc2NhcGUgc29tZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIHByb3BlcnRpZXMgZmlsZXMuDQotIEZvciBleGFtcGxlIDxjb2RlcGg+aHR0cDovL3NvbWVOYW1lc3BhY2U9c29tZVBhY2thZ2U8L2NvZGVwaD4gc2hvdWxkIGJlIDxjb2RlcGg+aHR0cFw6Ly9zb21lTmFtZXNwYWNlPXNvbWVQYWNrYWdlPC9jb2RlcGg+Lg0KLSBPdGhlcndpc2UsIHRoZSBjb2xvbiAoOikgd291bGQgYmUgdHJlYXRlZCBhcyBkZWxpbWl0ZXIgcmVzdWx0aW5nIGluIHRyeWluZw0KLXRvIG1hcCA8Y29kZXBoPmh0dHA8L2NvZGVwaD4gdG8gPGNvZGVwaD4vL3NvbWVOYW1lc3BhY2U9c29tZVBhY2thZ2U8L2NvZGVwaD4uPC9pbmZvPg0KLTwvc3RlcD4NCi08c3RlcD48Y21kPldlYiBTZXJ2aWNlIENsaWVudCBUZXN0IHBhZ2U6IFRoaXMgcGFnZSBkaXNwbGF5cyBpZiB5b3Ugc2VsZWN0ZWQNCi10byB0ZXN0IHlvdXIgY2xpZW50LiBTZWxlY3QgdGhlIHRlc3QgZmFjaWxpdHkgdGhhdCB5b3Ugd2lsbCB1c2UgdG8gdGVzdCB0aGUNCi1wcm94eSwgYW5kIHRoZSBtZXRob2RzIHRoYXQgeW91IHdhbnQgaW5jbHVkZWQgaW4gdGhlIHByb3h5LiBOb3RlIHRoYXQgdGhlDQotVW5pdmVyc2FsIFRlc3QgQ2xpZW50IChVVEMpIGlzIG9ubHkgY29tcGF0aWJsZSB3aXRoIFdlYiBzZXJ2aWNlIGNsaWVudHMgZGVwbG95ZWQNCi1vbiA8dG0gdG1jbGFzcz0iaWJtIiB0bW93bmVyPSJJQk0gQ29ycG9yYXRpb24iIHRtdHlwZT0icmVnIiB0cmFkZW1hcms9IldlYlNwaGVyZSI+V2ViU3BoZXJlPC90bT4gc2VydmVycy48L2NtZD4NCi08L3N0ZXA+DQotPHN0ZXA+PGNtZD5DbGljayAgPHVpY29udHJvbD5GaW5pc2g8L3VpY29udHJvbD4uIElmIHlvdSBoYXZlIHNlbGVjdGVkIHRvIHRlc3QNCi10aGUgcHJveHksIHRoZSB0ZXN0IGNsaWVudCB3aWxsIG9wZW4gaW4gYSBicm93c2VyIHdpbmRvdy48L2NtZD48L3N0ZXA+DQotPC9zdGVwcz4NCi08cmVzdWx0PjxwPlRoZSBnZW5lcmF0ZWQgPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iDQotdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gYmVhbiBwcm94eSBwcm92aWRlcyBhIHJlbW90ZSBwcm9jZWR1cmUNCi1jYWxsIGludGVyZmFjZSB0byB0aGUgV2ViIHNlcnZpY2UuIFRoZSBzYW1wbGUgV2ViIGFwcGxpY2F0aW9uIGRlbW9uc3RyYXRlcw0KLWhvdyB0byBjb2RlIHRoZSBwcm94eSBmaWxlLjwvcD48cD5PbmNlIHlvdSBoYXZlIGdlbmVyYXRlZCB5b3VyIDx0bSB0bWNsYXNzPSJzcGVjaWFsIg0KLXRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iIHRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IGNsaWVudA0KLXByb3h5LCB5b3UgbWF5IHRlc3QgdGhlIG1ldGhvZHMgb2YgdGhlIFdlYiBzZXJ2aWNlIHRocm91Z2ggdGhlIHByb3h5IHVzaW5nDQotV2ViIFNlcnZpY2VzIHNhbXBsZSBKU1BzIG9yIHRoZSBVbml2ZXJzYWwgdGVzdCBjbGllbnQuPC9wPjx1bCBvdXRwdXRjbGFzcz0id3NjbGllbnR0ZXN0b3B0aW9ucyI+DQotPGxpPklmIHlvdSBoYXZlIHNlbGVjdGVkIHRvIHRlc3QgdGhlIGdlbmVyYXRlZCBwcm94eSB1c2luZyBXZWIgc2VydmljZSBKU1BzLA0KLXRoZSBwcm94eSBpcyBsYXVuY2hlZCBpbiBhIFdlYiBicm93c2VyIGF0IHRoZSBmb2xsb3dpbmcgVVJMOiA8Y29kZXBoPmh0dHA6Ly9sb2NhbGhvc3Q6IDx2YXJuYW1lPnBvcnQ8L3Zhcm5hbWU+LyA8dmFybmFtZT5XZWJQcm9qZWN0PC92YXJuYW1lPkNsaWVudC9zYW1wbGU8aQ0KLT5CZWFuTmFtZTwvaT4vIDx2YXJuYW1lPldlYlNlcnZpY2VOYW1lPC92YXJuYW1lPi9UZXN0Q2xpZW50LmpzcDwvY29kZXBoPiBZb3UNCi1jYW4gdXNlIHRoaXMgc2FtcGxlIGFwcGxpY2F0aW9uIHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlIGJ5IHNlbGVjdGluZyBhIG1ldGhvZCwNCi1lbnRlcmluZyBhIHZhbHVlIGZvciB0aGUgbWV0aG9kLCBhbmQgY2xpY2tpbmcgIDx1aWNvbnRyb2w+SW52b2tlPC91aWNvbnRyb2w+Lg0KLVRoZSByZXN1bHQgb2YgdGhlIG1ldGhvZCB3aWxsIGRpc3BsYXkgaW4gdGhlIHJlc3VsdHMgcGFuZS48L2xpPg0KLTxsaT5JZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byB0ZXN0IHRoZSBXZWIgc2VydmljZSB1c2luZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLA0KLXRoZSBFeHBsb3JlciB3aWxsIG9wZW4uIFNlbGVjdCB0aGUgb3BlcmF0aW9uIHlvdSB3YW50IHRvIHRlc3QsIGVudGVyIHRoZSByZXF1aXJlZA0KLWluZm9ybWF0aW9uLCBhbmQgY2xpY2sgIDxiPkdvPC9iPi4gVGhlIHJlc3VsdCB3aWxsIGRpc3BsYXkgaW4gdGhlIFN0YXR1cyBwYW5lLjwvbGk+DQotPC91bD48cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBhIFdlYiBwcm9qZWN0LCByZWZlciB0byB0aGUgV2ViIGFwcGxpY2F0aW9uDQotZGV2ZWxvcG1lbnQgZG9jdW1lbnRhdGlvbi48L3A+PC9yZXN1bHQ+DQotPC90YXNrYm9keT4NCi08cmVsYXRlZC1saW5rcz4NCi08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPg0KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5kaXRhIiBzY29wZT0icGVlciI+DQotPGxpbmt0ZXh0PiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+DQotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5kaXRhIiBzY29wZT0icGVlciI+DQotPGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPg0KLTwvbGlua2xpc3Q+DQotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4NCi08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVkZGlleHAuZGl0YSINCi1zY29wZT0icGVlciI+PGxpbmt0ZXh0PiBVc2luZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9saW5rdGV4dD48L2xpbms+DQotPC9saW5rbGlzdD4NCi08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgUmVmZXJlbmNlPC90aXRsZT4NCi08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmRpdGEiIHNjb3BlPSJwZWVyIj4NCi08bGlua3RleHQ+V1NETCBkb2N1bWVudHM8L2xpbmt0ZXh0PjwvbGluaz4NCi08L2xpbmtsaXN0Pg0KLTwvcmVsYXRlZC1saW5rcz4NCi08L3Rhc2s+DQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvdHNhbXBhcHBhLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90c2FtcGFwcGEuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIwZjcwYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90c2FtcGFwcGEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJHZW5lcmF0aW5nIGEgSmF2YSBjbGllbnQgcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50IiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IlRoZSBXZWIgU2VydmljZSBDbGllbnQgd2l6YXJkIGFzc2lzdHMgeW91IGluIGdlbmVyYXRpbmcgYSBKYXZhIGJlYW4gcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uLiBUaGUgc2FtcGxlIFdlYiBhcHBsaWNhdGlvbiBkZW1vbnN0cmF0ZXMgaG93IHRvIGNvZGUgYSBwcm94eSBmaWxlLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGUgV2ViIFNlcnZpY2UgQ2xpZW50IHdpemFyZCBhc3Npc3RzIHlvdSBpbiBnZW5lcmF0aW5nIGEgSmF2YSBiZWFuIHByb3h5IGFuZCBhIHNhbXBsZSBhcHBsaWNhdGlvbi4gVGhlIHNhbXBsZSBXZWIgYXBwbGljYXRpb24gZGVtb25zdHJhdGVzIGhvdyB0byBjb2RlIGEgcHJveHkgZmlsZS4iIC8+Ci08bWV0YSBjb250ZW50PSJBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIFdlYiBzZXJ2aWNlcywgY2xpZW50cywgV2ViIHNlcnZpY2UgY2xpZW50cyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IkF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgV2ViIHNlcnZpY2VzLCBjbGllbnRzLCBXZWIgc2VydmljZSBjbGllbnRzIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdG9waWNzL2NheGlzdG92ZXIuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzZGwuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0c2FtcGFwcGEiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5HZW5lcmF0aW5nIGEgSmF2YSBjbGllbnQgcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uIGZyb20KLWEgV1NETCBkb2N1bWVudCB1c2luZyB0aGUgQXhpcyBydW50aW1lIGVudmlyb25tZW50PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0c2FtcGFwcGEiPjxhIG5hbWU9InRzYW1wYXBwYSI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+R2VuZXJhdGluZyBhIEphdmEgY2xpZW50IHByb3h5IGFuZCBhIHNhbXBsZSBhcHBsaWNhdGlvbgotZnJvbSBhIFdTREwgZG9jdW1lbnQgdXNpbmcgdGhlIEF4aXMxIHJ1bnRpbWUgZW52aXJvbm1lbnQ8L2gxPgotCi0KLQotCi08ZGl2PjxwPlRoZSBXZWIgU2VydmljZSBDbGllbnQgd2l6YXJkIGFzc2lzdHMgeW91IGluIGdlbmVyYXRpbmcgYSBKYXZh4oSiIGJlYW4KLXByb3h5IGFuZCBhIHNhbXBsZSBhcHBsaWNhdGlvbi4gVGhlIHNhbXBsZSBXZWIgYXBwbGljYXRpb24gZGVtb25zdHJhdGVzIGhvdwotdG8gY29kZSBhIHByb3h5IGZpbGUuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj48cD5QcmVyZXF1aXNpdGVzOjwvcD4KLTxvbD4KLTxsaT5JZiB5b3UgYXJlIHVzaW5nIHRoZSBBcGFjaGUgSmFrYXJ0YSBUb21jYXQgc2VydmxldAotY29udGFpbmVyIGFzIHlvdXIgc2VydmVyLCB5b3UgbXVzdCBpbnN0YWxsIGl0LCBjb25maWd1cmUgYW4gaW5zdGFuY2Ugb2YgaXQsCi1hbmQgY3JlYXRlIGEgV2ViIHByb2plY3QgdGFyZ2V0ZWQgdG8gaXQgYXMgZGVzY3JpYmVkIGluIDxhIGhyZWY9InR0b21jYXRzZXJ2Lmh0bWwiPkNyZWF0aW5nIGFuIEFwYWNoZSBUb21jYXQgc2VydmVyIGFuZCBXZWIgcHJvamVjdDwvYT48L2xpPgotCi08bGk+RGlzY292ZXIgYW5kIGltcG9ydCBhIFdTREwgZG9jdW1lbnQgaW50byB0aGUgV2ViIHByb2plY3QuIFlvdSBjYW4gb25seQotdXNlIGEgV1NETCBmaWxlIHRoYXQgY29udGFpbnMgYSBzZXJ2aWNlIGVsZW1lbnQuPC9saT4KLQotPC9vbD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj5UbyBnZW5lcmF0ZSBhIEphdmEgY2xpZW50IHByb3h5IGFuZCBhIHNhbXBsZSBhcHBsaWNhdGlvbgotZnJvbSBhIGRpc2NvdmVyZWQgV1NETCBkb2N1bWVudDo8L2Rpdj4KLQotPG9sPgotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5Td2l0Y2ggdG8gdGhlIEphdmEgRUUgcGVyc3BlY3RpdmUgKDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPldpbmRvdyAmZ3Q7IE9wZW4gUGVyc3BlY3RpdmUKLSZndDsgSmF2YSBFRTwvc3Bhbj4pLjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBOYXZpZ2F0b3Igdmlldywgc2VsZWN0IHRoZSBXZWIgcHJvamVjdCBpbiB3aGljaCB5b3Ugd2FudAotdG8gZ2VuZXJhdGUgYSBzYW1wbGUgYXBwbGljYXRpb24uPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+Q2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZpbGUgJmd0OyBOZXcgJmd0OyBPdGhlcjwvc3Bhbj4uIFNlbGVjdCAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViCi1TZXJ2aWNlczwvc3Bhbj4gaW4gb3JkZXIgdG8gZGlzcGxheSB0aGUgdmFyaW91cyBXZWIgc2VydmljZSB3aXphcmRzLgotU2VsZWN0IHRoZSAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViIFNlcnZpY2UgQ2xpZW50PC9zcGFuPiB3aXphcmQuIENsaWNrICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5OZXh0PC9zcGFuPi48L3NwYW4+Ci08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPldlYiBTZXJ2aWNlcyBwYWdlOiA8L3NwYW4+Ci08b2wgdHlwZT0iYSI+Ci08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPkVudGVyIHRoZSBVUkkgdG8gdGhlIFdTREwsIFdTSUwsIG9yIEhUTUwgZmlsZSB0aGF0IHdpbGwgYmUgdXNlZAotdG8gZ2VuZXJhdGUgdGhlIGNsaWVudC48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj5TZWxlY3QgdGhlIHR5cGUgb2YgcHJveHkgdG8gYmUgZ2VuZXJhdGVkPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3Vic3RlcGV4cGFuZCI+PHNwYW4+U2VsZWN0IHRoZSBzdGFnZXMgb2YgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IHRoYXQgeW91IHdhbnQKLXRvIGNvbXBsZXRlIHVzaW5nIHRoZSBzbGlkZXI6PC9zcGFuPiA8dWw+Ci08bGk+RGV2ZWxvcDogdGhpcyB3aWxsIGRldmVsb3AgdGhlIFdTREwgZGVmaW5pdGlvbiBhbmQgaW1wbGVtZW50YXRpb24gb2YgdGhlCi1XZWIgc2VydmljZS4gVGhpcyBpbmNsdWRlcyBzdWNoIHRhc2tzIGFzIGNyZWF0aW5nIHRoZSBtb2R1bGVzIHdoaWNoIHdpbGwgY29udGFpbgotdGhlIGdlbmVyYXRlZCBjb2RlIGFuZCBKYXZhIGZpbGVzLCBhcyB3ZWxsIGFzIGNvcHlpbmcgdGhlIEF4aXMgSkFScy4uPC9saT4KLQotPGxpPkFzc2VtYmxlOiB0aGlzIGVuc3VyZXMgdGhlIHByb2plY3QgdGhhdCB3aWxsIGhvc3QgdGhlIFdlYiBzZXJ2aWNlIG9yIGNsaWVudAotZ2V0cyBhc3NvY2lhdGVkIHRvIGFuIEVBUiB3aGVuIHJlcXVpcmVkIGJ5IHRoZSB0YXJnZXQgYXBwbGljYXRpb24gc2VydmVyLjwvbGk+Ci0KLTxsaT5EZXBsb3k6IHRoaXMgd2lsbCBjcmVhdGUgdGhlIGRlcGxveW1lbnQgY29kZSBmb3IgdGhlIHNlcnZpY2UuPC9saT4KLQotPGxpPkluc3RhbGw6IHRoaXMgd2lsbCBpbnN0YWxsIGFuZCBjb25maWd1cmUgdGhlIFdlYiBtb2R1bGUgYW5kIEVBUnMgb24gdGhlCi10YXJnZXQgc2VydmVyLjwvbGk+Ci0KLTxsaT5TdGFydDogdGhpcyB3aWxsIHN0YXJ0IHRoZSBzZXJ2ZXIgb25jZSB0aGUgc2VydmljZSBoYXMgYmVlbiBpbnN0YWxsZWQKLW9uIGl0LiBUaGUgc2VydmVyLWNvbmZpZy53c2RkIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuPC9saT4KLQotPGxpPlRlc3Q6IHRoaXMgd2lsbCBwcm92aWRlIHZhcmlvdXMgb3B0aW9ucyBmb3IgdGVzdGluZyB0aGUgc2VydmljZSwgc3VjaAotYXMgdXNpbmcgdGhlIFdlYiBTZXJ2aWNlIEV4cGxvcmVyIG9yIHNhbXBsZSBKU1BzLjwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB5b3VyIHNlcnZlcjogdGhlIGRlZmF1bHQgc2VydmVyIGlzIGRpc3BsYXllZC4gSWYgeW91Ci13YW50IHRvIGRlcGxveSB5b3VyIGNsaWVudCB0byBhIGRpZmZlcmVudCBzZXJ2ZXIgY2xpY2sgdGhlIGxpbmsgdG8gc3BlY2lmeQotYSBkaWZmZXJlbnQgc2VydmVyLjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB5b3VyIHJ1bnRpbWU6IHRoZSBkZWZhdWx0IHJ1bnRpbWUgaXMgZGlzcGxheWVkLiBJZiB5b3UKLXdhbnQgdG8gZGVwbG95IHlvdXIgY2xpZW50IHRvIGEgZGlmZmVyZW50IHJ1bnRpbWUgY2xpY2sgdGhlIGxpbmsgdG8gc3BlY2lmeQotYSBkaWZmZXJlbnQgcnVudGltZS48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj5TZWxlY3QgdGhlIGNsaWVudCBwcm9qZWN0OiB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBwcm9qZWN0Ci1zZWxlY3RlZCBpbiB5b3VyIHdvcmtzcGFjZSBpcyBkaXNwbGF5ZWQuIFRvIHNlbGVjdCBhIGRpZmZlcmVudCBwcm9qZWN0IGFuZAotRUFSIGNsaWNrIG9uIHRoZSBwcm9qZWN0IGxpbmsuPC9zcGFuPiBFbnN1cmUgdGhhdCB0aGUgcHJvamVjdCBzZWxlY3RlZAotYXMgdGhlIENsaWVudCBXZWIgUHJvamVjdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgU2VydmljZSBXZWIgUHJvamVjdCwgb3IgdGhlCi1zZXJ2aWNlIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGNsaWVudCdzIGdlbmVyYXRlZCBhcnRpZmFjdHMuPC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj5Nb25pdG9yIHRoZSBXZWIgc2VydmljZTogdGhpcyB3aWxsIHNlbmQgdGhlIFdlYiBzZXJ2aWNlIHRyYWZmaWMKLXRocm91Z2ggdGhlIFRDUC9JUCBNb25pdG9yLCB3aGljaCBhbGxvd3MgeW91IHRvIHdhdGNoIHRoZSBTT0FQIHRyYWZmaWMgZ2VuZXJhdGVkCi1ieSB0aGUgV2ViIHNlcnZpY2UgYW5kIHRvIHRlc3QgdGhpcyB0cmFmZmljIGZvciBXUy1JIGNvbXBsaWFuY2UuIEFsdGVybmF0ZWx5Ci15b3UgY2FuIG1hbnVhbGx5IHNldCB1cCBhIFRDUC9JUCBtb25pdG9yIGFzIGRlc2NyaWJlZCBpbiA8YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3Rtb25pdG9yLmh0bWwiPlVzaW5nIHRoZSBUQ1AvSVAgTW9uaXRvciB0byB0ZXN0IFdlYiBzZXJ2aWNlczwvYT48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZSBQcm94eSBwYWdlOiBUaGlzIHBhbmVsIHNob3dzIHRoZSBvcHRpb25zIGZvciB0aGUgcHJveHkuCi1JdCBsaXN0cyB0aGUgZm9sZGVyIHdoZXJlIHRoZSBwcm94eSB3aWxsIGJlIGdlbmVyYXRlZCwgYW5kIHlvdSBjYW4gb3B0aW9uYWxseQotY3JlYXRlIGN1c3RvbSBtYXBwaW5ncyBiZXR3ZWVuIG5hbWVzcGFjZXMgYW5kIHBhY2thZ2VzLjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPldlYiBTZXJ2aWNlIE5hbWVzcGFjZSB0byBQYWNrYWdlIE1hcHBpbmdzIHBhZ2U6IGlmIHlvdSBzZWxlY3RlZAotIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRlZmluZSBjdXN0b20gbWFwcGluZyBmb3IgbmFtZXNwYWNlIHRvIHBhY2thZ2U8L3NwYW4+IG9uCi10aGUgcHJldmlvdXMgcGFnZSwgeW91IGNhbiBlbnRlciB5b3VyIGN1c3RvbSBtYXBwaW5nIHBhaXJzIG9uIHRoaXMgcGFnZSBieQotY2xpY2tpbmcgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFkZDwvc3Bhbj4uIEFsdGVybmF0ZWx5LCB5b3UgY2FuIGNsaWNrICA8c3Ryb25nPkltcG9ydDwvc3Ryb25nPiB0bwotaW1wb3J0IGN1c3RvbSBtYXBwaW5nIHBhaXJzIGZyb20gYSAgPHR0IGNsYXNzPSJzeXNvdXQiPi5wcm9wZXJ0aWVzPC90dD4gZmlsZS4KLVRoZSBjb250ZW50IG9mIHRoZSBwcm9wZXJ0aWVzIGZpbGUgbXVzdCBiZSBvZiB0aGUgZm9ybWF0ICA8c2FtcCBjbGFzcz0iY29kZXBoIj48dmFyIGNsYXNzPSJ2YXJuYW1lIj5uYW1lc3BhY2U9cGFja2FnZTwvdmFyPjwvc2FtcD4uPC9zcGFuPgotIFlvdSB3aWxsIG5lZWQgdG8gZXNjYXBlIHNvbWUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSBwcm9wZXJ0aWVzIGZpbGVzLgotIEZvciBleGFtcGxlIDxzYW1wIGNsYXNzPSJjb2RlcGgiPmh0dHA6Ly9zb21lTmFtZXNwYWNlPXNvbWVQYWNrYWdlPC9zYW1wPiBzaG91bGQgYmUgPHNhbXAgY2xhc3M9ImNvZGVwaCI+aHR0cFw6Ly9zb21lTmFtZXNwYWNlPXNvbWVQYWNrYWdlPC9zYW1wPi4KLSBPdGhlcndpc2UsIHRoZSBjb2xvbiAoOikgd291bGQgYmUgdHJlYXRlZCBhcyBkZWxpbWl0ZXIgcmVzdWx0aW5nIGluIHRyeWluZwotdG8gbWFwIDxzYW1wIGNsYXNzPSJjb2RlcGgiPmh0dHA8L3NhbXA+IHRvIDxzYW1wIGNsYXNzPSJjb2RlcGgiPi8vc29tZU5hbWVzcGFjZT1zb21lUGFja2FnZTwvc2FtcD4uCi08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPldlYiBTZXJ2aWNlIENsaWVudCBUZXN0IHBhZ2U6IFRoaXMgcGFnZSBkaXNwbGF5cyBpZiB5b3Ugc2VsZWN0ZWQKLXRvIHRlc3QgeW91ciBjbGllbnQuIFNlbGVjdCB0aGUgdGVzdCBmYWNpbGl0eSB0aGF0IHlvdSB3aWxsIHVzZSB0byB0ZXN0IHRoZQotcHJveHksIGFuZCB0aGUgbWV0aG9kcyB0aGF0IHlvdSB3YW50IGluY2x1ZGVkIGluIHRoZSBwcm94eS4gTm90ZSB0aGF0IHRoZQotVW5pdmVyc2FsIFRlc3QgQ2xpZW50IChVVEMpIGlzIG9ubHkgY29tcGF0aWJsZSB3aXRoIFdlYiBzZXJ2aWNlIGNsaWVudHMgZGVwbG95ZWQKLW9uIFdlYlNwaGVyZTxzdXA+wq48L3N1cD4gc2VydmVycy48L3NwYW4+Ci08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkNsaWNrICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5GaW5pc2g8L3NwYW4+LiBJZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byB0ZXN0Ci10aGUgcHJveHksIHRoZSB0ZXN0IGNsaWVudCB3aWxsIG9wZW4gaW4gYSBicm93c2VyIHdpbmRvdy48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VGhlIGdlbmVyYXRlZCBKYXZhIGJlYW4gcHJveHkgcHJvdmlkZXMgYSByZW1vdGUgcHJvY2VkdXJlCi1jYWxsIGludGVyZmFjZSB0byB0aGUgV2ViIHNlcnZpY2UuIFRoZSBzYW1wbGUgV2ViIGFwcGxpY2F0aW9uIGRlbW9uc3RyYXRlcwotaG93IHRvIGNvZGUgdGhlIHByb3h5IGZpbGUuPC9wPgotPHA+T25jZSB5b3UgaGF2ZSBnZW5lcmF0ZWQgeW91ciBKYXZhIGNsaWVudAotcHJveHksIHlvdSBtYXkgdGVzdCB0aGUgbWV0aG9kcyBvZiB0aGUgV2ViIHNlcnZpY2UgdGhyb3VnaCB0aGUgcHJveHkgdXNpbmcKLVdlYiBTZXJ2aWNlcyBzYW1wbGUgSlNQcyBvciB0aGUgVW5pdmVyc2FsIHRlc3QgY2xpZW50LjwvcD4KLTx1bCBjbGFzcz0id3NjbGllbnR0ZXN0b3B0aW9ucyI+Ci08bGk+SWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gdGVzdCB0aGUgZ2VuZXJhdGVkIHByb3h5IHVzaW5nIFdlYiBzZXJ2aWNlIEpTUHMsCi10aGUgcHJveHkgaXMgbGF1bmNoZWQgaW4gYSBXZWIgYnJvd3NlciBhdCB0aGUgZm9sbG93aW5nIFVSTDogPHNhbXAgY2xhc3M9ImNvZGVwaCI+aHR0cDovL2xvY2FsaG9zdDogPHZhciBjbGFzcz0idmFybmFtZSI+cG9ydDwvdmFyPi8gPHZhciBjbGFzcz0idmFybmFtZSI+V2ViUHJvamVjdDwvdmFyPkNsaWVudC9zYW1wbGU8ZW0+QmVhbk5hbWU8L2VtPi8gPHZhciBjbGFzcz0idmFybmFtZSI+V2ViU2VydmljZU5hbWU8L3Zhcj4vVGVzdENsaWVudC5qc3A8L3NhbXA+IFlvdQotY2FuIHVzZSB0aGlzIHNhbXBsZSBhcHBsaWNhdGlvbiB0byB0ZXN0IHRoZSBXZWIgc2VydmljZSBieSBzZWxlY3RpbmcgYSBtZXRob2QsCi1lbnRlcmluZyBhIHZhbHVlIGZvciB0aGUgbWV0aG9kLCBhbmQgY2xpY2tpbmcgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkludm9rZTwvc3Bhbj4uCi1UaGUgcmVzdWx0IG9mIHRoZSBtZXRob2Qgd2lsbCBkaXNwbGF5IGluIHRoZSByZXN1bHRzIHBhbmUuPC9saT4KLQotPGxpPklmIHlvdSBoYXZlIHNlbGVjdGVkIHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIsCi10aGUgRXhwbG9yZXIgd2lsbCBvcGVuLiBTZWxlY3QgdGhlIG9wZXJhdGlvbiB5b3Ugd2FudCB0byB0ZXN0LCBlbnRlciB0aGUgcmVxdWlyZWQKLWluZm9ybWF0aW9uLCBhbmQgY2xpY2sgIDxzdHJvbmc+R288L3N0cm9uZz4uIFRoZSByZXN1bHQgd2lsbCBkaXNwbGF5IGluIHRoZSBTdGF0dXMgcGFuZS48L2xpPgotCi08L3VsPgotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYSBXZWIgcHJvamVjdCwgcmVmZXIgdG8gdGhlIFdlYiBhcHBsaWNhdGlvbgotZGV2ZWxvcG1lbnQgZG9jdW1lbnRhdGlvbi48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+PGRpdiBjbGFzcz0icmVsY29uY2VwdHMiPjxzdHJvbmc+UmVsYXRlZCBjb25jZXB0czwvc3Ryb25nPjxiciAvPgotPGRpdj48YSBocmVmPSIuLi90b3BpY3MvY2F4aXN0b3Zlci5odG1sIiB0aXRsZT0iVGhpcyBydW50aW1lIGVudmlyb25tZW50cyBpcyBmb3IgdXNlcnMgd2hvIHByZWZlciB0byBkZXZlbG9wIGZvciB0aGUgb3BlbiBBcGFjaGUgQXhpcyBwbGF0Zm9ybS4iPkNyZWF0aW5nIFdlYiBzZXJ2aWNlcyB3aXRoIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudDwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dWRkaWV4cC5odG1sIj4gVXNpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBSZWZlcmVuY2U8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmh0bWwiPldTREwgZG9jdW1lbnRzPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90c2tsd3NkbGEuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3Rza2x3c2RsYS5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWU4NTJhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3Rza2x3c2RsYS5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4NCi08IURPQ1RZUEUgdGFzayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBUYXNrLy9FTiINCi0gIi4uLy4uL2R0ZC90YXNrLmR0ZCI+DQotPHRhc2sgaWQ9InRza2x3c2RsYSIgeG1sOmxhbmc9ImVuLXVzIj4NCi08dGl0bGU+Q3JlYXRpbmcgYSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiIgdG10eXBlPSJ0bSINCi10cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBiZWFuIHNrZWxldG9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBcGFjaGUNCi1BeGlzMSBydW50aW1lIGVudmlyb25tZW50PC90aXRsZT4NCi08dGl0bGVhbHRzPg0KLTxzZWFyY2h0aXRsZT5DcmVhdGluZyBhIEphdmEgYmVhbiBza2VsZXRvbiBmcm9tIGEgV1NETCBkb2N1bWVudCB1c2luZyB0aGUNCi1BcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudDwvc2VhcmNodGl0bGU+DQotPC90aXRsZWFsdHM+DQotPHNob3J0ZGVzYz5UaGUgV2ViIHNlcnZpY2Ugd2l6YXJkIGFzc2lzdHMgeW91IGluIGNyZWF0aW5nIGEgc2tlbGV0b24gYmVhbg0KLWZyb20gYW4gZXhpc3RpbmcgV1NETCBkb2N1bWVudC4gVGhlIHNrZWxldG9uIGJlYW4gY29udGFpbnMgYSBzZXQgb2YgbWV0aG9kcw0KLXRoYXQgY29ycmVzcG9uZCB0byB0aGUgb3BlcmF0aW9ucyBkZXNjcmliZWQgaW4gdGhlIFdTREwgZG9jdW1lbnQuIFdoZW4gdGhlDQotYmVhbiBpcyBjcmVhdGVkLCBlYWNoIG1ldGhvZCBoYXMgYSB0cml2aWFsIGltcGxlbWVudGF0aW9uIHRoYXQgeW91IHJlcGxhY2UNCi1ieSBlZGl0aW5nIHRoZSBiZWFuLjwvc2hvcnRkZXNjPg0KLTxwcm9sb2c+PG1ldGFkYXRhPg0KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtIGtleXJlZj0idHNrbHdzZGxhfDF8QXhpc3J1bnRpbWVlbnZpcm9ubWVudHNrZWxldG9uV2Vic2VydmljZXMiDQotc3RhdHVzPSJ1bmNoYW5nZWQiPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5za2VsZXRvbjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPg0KLTxpbmRleHRlcm0ga2V5cmVmPSJ0c2tsd3NkbGF8MnxXZWJzZXJ2aWNlc0F4aXNydW50aW1lZW52aXJvbm1lbnRza2VsZXRvbldlYnNlcnZpY2VzIg0KLXN0YXR1cz0idW5jaGFuZ2VkIj5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+c2tlbGV0b24NCi1XZWIgc2VydmljZXM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPg0KLTwvbWV0YWRhdGE+PC9wcm9sb2c+DQotPHRhc2tib2R5Pg0KLTxwcmVyZXE+PHA+UHJlcmVxdWlzaXRlczo8L3A+PG9sPg0KLTxsaSBjb25yZWY9InR3c2JlYW5hLmRpdGEjdHdzYmVhbmEvY3JlYXRldG9tY2F0bGluayI+PC9saT4NCi08bGk+Q3JlYXRlIG9yIGltcG9ydCBhIFdTREwgZmlsZSBpbnRvIHRoZSBXZWIgQ29udGVudCBmb2xkZXIgb2YgdGhlIFdlYiBwcm9qZWN0Lg0KLVlvdSBjYW4gb25seSB1c2UgYSBXU0RMIGZpbGUgdGhhdCBjb250YWlucyBhIHNlcnZpY2UgZWxlbWVudC48L2xpPg0KLTwvb2w+PC9wcmVyZXE+DQotPGNvbnRleHQ+VG8gY3JlYXRlIGEgV2ViIHNlcnZpY2UgZnJvbSBhIFdTREwgZmlsZSB1c2luZyB0aGUgQXBhY2hlIEF4aXMxIHJ1bnRpbWUNCi1lbnZpcm9ubWVudDo8L2NvbnRleHQ+DQotPHN0ZXBzPg0KLTxzdGVwPjxjbWQ+U3dpdGNoIHRvIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlICg8dWljb250cm9sPldpbmRvdyA+IE9wZW4gUGVyc3BlY3RpdmUNCi0+IEphdmEgRUU8L3VpY29udHJvbD4pLjwvY21kPjwvc3RlcD4NCi08c3RlcD48Y21kPkluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIHZpZXcsIHNlbGVjdCB0aGUgV1NETCBmaWxlIHRoYXQgeW91IGNyZWF0ZWQNCi1vciBpbXBvcnRlZCBpbnRvIHRoZSBXZWIgQ29udGVudCBmb2xkZXIgb2YgeW91ciBXZWIgcHJvamVjdC48L2NtZD48L3N0ZXA+DQotPHN0ZXA+PGNtZD5DbGljayAgPHVpY29udHJvbD5GaWxlID4gTmV3ID4gT3RoZXI8L3VpY29udHJvbD4uIFNlbGVjdCAgPHVpY29udHJvbD5XZWINCi1TZXJ2aWNlczwvdWljb250cm9sPiBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSB2YXJpb3VzIFdlYiBzZXJ2aWNlIHdpemFyZHMuDQotU2VsZWN0IHRoZSAgPHVpY29udHJvbD5XZWIgU2VydmljZTwvdWljb250cm9sPiB3aXphcmQuIENsaWNrICA8dWljb250cm9sPk5leHQ8L3VpY29udHJvbD4uPC9jbWQ+DQotPC9zdGVwPg0KLTxzdGVwPjxjbWQ+V2ViIFNlcnZpY2VzIHBhZ2U6IHNlbGVjdCAgPHVpY29udHJvbD5Ub3AgZG93biBKYXZhIGJlYW4gV2ViIHNlcnZpY2U8L3VpY29udHJvbD4gYXMNCi15b3VyIFdlYiBzZXJ2aWNlIHR5cGUsIGFuZCBzZWxlY3QgdGhlIGFydGlmYWN0IGZyb20gd2hpY2ggdGhlIHNlcnZpY2Ugd2lsbA0KLWJlIGNyZWF0ZWQuPC9jbWQ+DQotPHN1YnN0ZXBzIGNvbnJlZj0idHdzYmVhbmEuZGl0YSN0d3NiZWFuYS9jcmVhdGVzdGVwNHVsIj4NCi08c3Vic3RlcD48Y21kPjwvY21kPjwvc3Vic3RlcD4NCi08L3N1YnN0ZXBzPg0KLTwvc3RlcD4NCi08c3RlcD48Y21kPldlYiBTZXJ2aWNlcyBTa2VsZXRvbiA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiINCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBCZWFuIENvbmZpZ3VyYXRpb24gcGFnZTogU2VsZWN0IHRoZQ0KLWZvbGRlciB3aGVyZSB0aGUgZ2VuZXJhdGVkIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIg0KLXRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IHdpbGwgYmUgc3RvcmVkLiBJZiB5b3Ugd2FudCB0byByZXZpZXcNCi1vciBlZGl0IHRoZSBtYXBwaW5ncyBiZXR3ZWVuIHBhY2thZ2VzIGFuZCBuYW1lc3BhY2VzLCBzZWxlY3QgdGhlICA8dWljb250cm9sPkRlZmluZQ0KLWN1c3RvbSBtYXBwaW5nIGZvciBuYW1lc3BhY2UgdG8gcGFja2FnZTwvdWljb250cm9sPiBjaGVjayBib3guIENsaWNrICA8dWljb250cm9sPk5leHQ8L3VpY29udHJvbD4uPC9jbWQ+DQotPC9zdGVwPg0KLTxzdGVwPjxjbWQ+V2ViIFNlcnZpY2UgTmFtZXNwYWNlIHRvIFBhY2thZ2UgTWFwcGluZ3MgcGFnZTogaWYgeW91IHNlbGVjdGVkDQotIDx1aWNvbnRyb2w+RGVmaW5lIGN1c3RvbSBtYXBwaW5nIGZvciBwYWNrYWdlIHRvIG5hbWVzcGFjZTwvdWljb250cm9sPiBvbg0KLXRoZSBwcmV2aW91cyBwYW5lbCwgeW91IGNhbiBlbnRlciB5b3VyIGN1c3RvbSBtYXBwaW5nIHBhaXJzIG9uIHRoaXMgcGFuZWwNCi1ieSBjbGlja2luZyAgPHVpY29udHJvbD5BZGQ8L3VpY29udHJvbD4uIEFsdGVybmF0ZWx5LCB5b3UgY2FuIGNsaWNrICA8Yj5JbXBvcnQ8L2I+IHRvDQotaW1wb3J0IGN1c3RvbSBtYXBwaW5nIHBhaXJzIGZyb20gYSAgPHN5c3RlbW91dHB1dD4ucHJvcGVydGllczwvc3lzdGVtb3V0cHV0PiBmaWxlLg0KLVRoZSBjb250ZW50IG9mIHRoZSBwcm9wZXJ0aWVzIGZpbGUgbXVzdCBiZSBvZiB0aGUgZm9ybWF0ICA8Y29kZXBoPjx2YXJuYW1lPm5hbWVzcGFjZT1wYWNrYWdlPC92YXJuYW1lPjwvY29kZXBoPi48L2NtZD4NCi08aW5mbz5Zb3Ugd2lsbCBuZWVkIHRvIGVzY2FwZSBzb21lIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgcHJvcGVydGllcyBmaWxlcy4NCi0gRm9yIGV4YW1wbGUgPGNvZGVwaD5odHRwOi8vc29tZU5hbWVzcGFjZT1zb21lUGFja2FnZTwvY29kZXBoPiBzaG91bGQgYmUgPGNvZGVwaD5odHRwXDovL3NvbWVOYW1lc3BhY2U9c29tZVBhY2thZ2U8L2NvZGVwaD4uDQotIE90aGVyd2lzZSwgdGhlIGNvbG9uICg6KSB3b3VsZCBiZSB0cmVhdGVkIGFzIGRlbGltaXRlciByZXN1bHRpbmcgaW4gdHJ5aW5nDQotdG8gbWFwIDxjb2RlcGg+aHR0cDwvY29kZXBoPiB0byA8Y29kZXBoPi8vc29tZU5hbWVzcGFjZT1zb21lUGFja2FnZTwvY29kZXBoPi48L2luZm8+DQotPC9zdGVwPg0KLTxzdGVwPjxjbWQ+V2ViIFNlcnZpY2UgVGVzdCBwYWdlOiBJZiB5b3Ugc2VsZWN0ZWQgdG8gdGVzdCB0aGUgV2ViIHNlcnZpY2UsDQotc2VsZWN0IHRoZSB0ZXN0IGZhY2lsaXR5IGZvciB0aGUgZ2VuZXJhdGVkIFdlYiBzZXJ2aWNlLiBUaGlzIHdpbGwgb3BlbiB0aGUNCi1XZWIgc2VydmljZSBpbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLiBTZWxlY3QgdGhlIG9wZXJhdGlvbiB5b3Ugd2FudCB0bw0KLXRlc3QsIGVudGVyIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiwgYW5kIGNsaWNrICA8dWljb250cm9sPkdvPC91aWNvbnRyb2w+Lg0KLVRoZSByZXN1bHQgd2lsbCBkaXNwbGF5IGluIHRoZSBTdGF0dXMgcGFuZS4gQ2xpY2sgIDx1aWNvbnRyb2w+TmV4dDwvdWljb250cm9sPi48L2NtZD4NCi08L3N0ZXA+DQotPHN0ZXA+PGNtZD5XZWIgU2VydmljZSBQcm94eSBwYWdlOiBJZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byBnZW5lcmF0ZSBhIHByb3h5LA0KLXRoaXMgcGFnZSBzaG93cyB0aGUgb3B0aW9ucyBmb3IgdGhlIHByb3h5LiBJdCBsaXN0cyB0aGUgZm9sZGVyIHdoZXJlIHRoZSBwcm94eQ0KLXdpbGwgYmUgZ2VuZXJhdGVkLCBhbmQgeW91IGNhbiBvcHRpb25hbGx5IGNyZWF0ZSBjdXN0b20gbWFwcGluZ3MgYmV0d2VlbiBuYW1lc3BhY2VzDQotYW5kIHBhY2thZ2VzLiBDbGljayAgPHVpY29udHJvbD5OZXh0PC91aWNvbnRyb2w+LjwvY21kPjwvc3RlcD4NCi08c3RlcD48Y21kPldlYiBTZXJ2aWNlIENsaWVudCBUZXN0IHBhZ2U6IFVzZSB0aGlzIHBhZ2UgdG8gc2VsZWN0IHRoZSBmb2xsb3dpbmcNCi1vcHRpb25zOiA8L2NtZD4NCi08c3Vic3RlcHM+DQotPHN1YnN0ZXA+PGNtZD5TZWxlY3QgeW91ciB0ZXN0IGZhY2lsaXR5LiBZb3UgY2FuIHRlc3QgdGhlIGdlbmVyYXRlZCBwcm94eQ0KLWluIHRoZSBXZWIgU2VydmljZSBFeHBsb3Jlciwgb3IgeW91IGNhbiBnZW5lcmF0ZSBhIHNhbXBsZSBXZWIgc2VydmljZSBKU1AuPC9jbWQ+DQotPC9zdWJzdGVwPg0KLTxzdWJzdGVwPjxjbWQ+SWYgeW91IHNlbGVjdGVkIHRvIHRlc3QgdGhlIHByb3h5IHRocm91Z2ggYSBKU1AsIHlvdSBjYW4gc2VsZWN0DQotdGhlIGZvbGRlciB3aGVyZSB0aGUgSlNQIHdpbGwgYmUgbG9jYXRlZCwgYW5kIHlvdSBjYW4gc2VsZWN0IHRoZSBtZXRob2RzIHRoYXQNCi13aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBKU1AuPC9jbWQ+PC9zdWJzdGVwPg0KLTxzdWJzdGVwPjxjbWQ+U2VsZWN0ICA8dWljb250cm9sPlJ1biB0ZXN0IG9uIHNlcnZlcjwvdWljb250cm9sPiB0byBzdGFydCB0aGUNCi1zZXJ2ZXIgZm9yIHlvdSBhdXRvbWF0aWNhbGx5LjwvY21kPjwvc3Vic3RlcD4NCi08L3N1YnN0ZXBzPg0KLTwvc3RlcD4NCi08c3RlcD48Y21kPldlYiBTZXJ2aWNlIFB1YmxpY2F0aW9uIHBhZ2U6IElmIHlvdSBoYXZlIHNlbGVjdGVkIHRvIHB1Ymxpc2ggeW91cg0KLVdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeSwgdXNlIHRoaXMgcGFnZSB0byBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlcg0KLWFuZCBzZWxlY3QgdGhlIFVEREkgcmVnaXN0cnkgdG8gd2hpY2ggdGhlIFdlYiBzZXJ2aWNlIHdpbGwgYmUgcHVibGlzaGVkLiBDbGljaw0KLSA8dWljb250cm9sPkZpbmlzaDwvdWljb250cm9sPi48L2NtZD48L3N0ZXA+DQotPC9zdGVwcz4NCi08cmVzdWx0IGNvbnJlZj0idHdzYmVhbmEuZGl0YSN0d3NiZWFuYS9heGlzd3NjcmVhdGVyZXN1bHQiPkFmdGVyIHRoZSBXZWIgc2VydmljZQ0KLWhhcyBiZWVuIGNyZWF0ZWQsIHRoZSBmb2xsb3dpbmcgbWF5IG9jY3VyIGRlcGVuZGluZyBvbiB0aGUgb3B0aW9ucyB5b3Ugc2VsZWN0ZWQ6IDx1bD4NCi08bGk+SWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gdGVzdCB0aGUgZ2VuZXJhdGVkIHByb3h5IHVzaW5nIFdlYiBzZXJ2aWNlIEpTUHMsDQotdGhlIHByb3h5IGlzIGxhdW5jaGVkIGluIGEgV2ViIGJyb3dzZXIgYXQgdGhlIGZvbGxvd2luZyBVUkw6IDxjb2RlcGg+aHR0cDovL2xvY2FsaG9zdDogPHZhcm5hbWU+cG9ydDwvdmFybmFtZT4vIDx2YXJuYW1lPldlYlByb2plY3Q8L3Zhcm5hbWU+Q2xpZW50L3NhbXBsZTxpDQotPkJlYW5OYW1lPC9pPi88dmFybmFtZT5XZWJTZXJ2aWNlTmFtZTwvdmFybmFtZT4vVGVzdENsaWVudC5qc3A8L2NvZGVwaD4gWW91DQotY2FuIHVzZSB0aGlzIHNhbXBsZSBhcHBsaWNhdGlvbiB0byB0ZXN0IHRoZSBXZWIgc2VydmljZSBieSBzZWxlY3RpbmcgYSBtZXRob2QsDQotZW50ZXJpbmcgYSB2YWx1ZSBmb3IgdGhlIG1ldGhvZCwgYW5kIGNsaWNraW5nICA8dWljb250cm9sPkludm9rZTwvdWljb250cm9sPi4NCi1UaGUgcmVzdWx0IG9mIHRoZSBtZXRob2Qgd2lsbCBkaXNwbGF5IGluIHRoZSByZXN1bHRzIHBhbmUuPC9saT4NCi08bGk+SWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gdGVzdCB0aGUgV2ViIHNlcnZpY2UgdXNpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciwNCi10aGUgRXhwbG9yZXIgd2lsbCBvcGVuLiBTZWxlY3QgdGhlIG9wZXJhdGlvbiB5b3Ugd2FudCB0byB0ZXN0LCBlbnRlciB0aGUgcmVxdWlyZWQNCi1pbmZvcm1hdGlvbiwgYW5kIGNsaWNrICA8Yj5HbzwvYj4uIFRoZSByZXN1bHQgd2lsbCBkaXNwbGF5IGluIHRoZSBTdGF0dXMgcGFuZS48L2xpPg0KLTxsaT5JZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byBwdWJsaXNoIHRoZSBXZWIgc2VydmljZSwgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlcg0KLWlzIGxhdW5jaGVkIGRpc3BsYXlpbmcgdGhlIHBhZ2UgcmVxdWlyZWQgdG8gcHVibGlzaCB5b3VyIFdlYiBzZXJ2aWNlLiBGb2xsb3cNCi10aGUgaW5zdHJ1Y3Rpb25zIGluIDx2YXJuYW1lPlB1Ymxpc2hpbmcgdGhlIFdlYiBzZXJ2aWNlPC92YXJuYW1lPiB0byBjb21wbGV0ZQ0KLXRoaXMgdGFzay48L2xpPg0KLTwvdWw+PC9yZXN1bHQ+DQotPC90YXNrYm9keT4NCi08cmVsYXRlZC1saW5rcz4NCi08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPg0KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5kaXRhIiBzY29wZT0icGVlciI+DQotPGxpbmt0ZXh0PiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+DQotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5kaXRhIiBzY29wZT0icGVlciI+DQotPGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPg0KLTwvbGlua2xpc3Q+DQotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4NCi08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5kaXRhIiBzY29wZT0icGVlciI+DQotPGxpbmt0ZXh0PiBEZXZlbG9waW5nIFdlYiBzZXJ2aWNlczwvbGlua3RleHQ+PC9saW5rPg0KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dWRkaWV4cC5kaXRhIg0KLXNjb3BlPSJwZWVyIj48bGlua3RleHQ+IFVzaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2xpbmt0ZXh0PjwvbGluaz4NCi08L2xpbmtsaXN0Pg0KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBSZWZlcmVuY2U8L3RpdGxlPg0KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzZGwuZGl0YSIgc2NvcGU9InBlZXIiPg0KLTxsaW5rdGV4dD5XU0RMIGRvY3VtZW50czwvbGlua3RleHQ+PC9saW5rPg0KLTwvbGlua2xpc3Q+DQotPC9yZWxhdGVkLWxpbmtzPg0KLTwvdGFzaz4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90c2tsd3NkbGEuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3Rza2x3c2RsYS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzZhOWI3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3Rza2x3c2RsYS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjI2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJ0YXNrIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkNyZWF0aW5nIGEgSmF2YSBiZWFuIHNrZWxldG9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudCIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgV2ViIHNlcnZpY2Ugd2l6YXJkIGFzc2lzdHMgeW91IGluIGNyZWF0aW5nIGEgc2tlbGV0b24gYmVhbiBmcm9tIGFuIGV4aXN0aW5nIFdTREwgZG9jdW1lbnQuIFRoZSBza2VsZXRvbiBiZWFuIGNvbnRhaW5zIGEgc2V0IG9mIG1ldGhvZHMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBvcGVyYXRpb25zIGRlc2NyaWJlZCBpbiB0aGUgV1NETCBkb2N1bWVudC4gV2hlbiB0aGUgYmVhbiBpcyBjcmVhdGVkLCBlYWNoIG1ldGhvZCBoYXMgYSB0cml2aWFsIGltcGxlbWVudGF0aW9uIHRoYXQgeW91IHJlcGxhY2UgYnkgZWRpdGluZyB0aGUgYmVhbi4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVGhlIFdlYiBzZXJ2aWNlIHdpemFyZCBhc3Npc3RzIHlvdSBpbiBjcmVhdGluZyBhIHNrZWxldG9uIGJlYW4gZnJvbSBhbiBleGlzdGluZyBXU0RMIGRvY3VtZW50LiBUaGUgc2tlbGV0b24gYmVhbiBjb250YWlucyBhIHNldCBvZiBtZXRob2RzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgb3BlcmF0aW9ucyBkZXNjcmliZWQgaW4gdGhlIFdTREwgZG9jdW1lbnQuIFdoZW4gdGhlIGJlYW4gaXMgY3JlYXRlZCwgZWFjaCBtZXRob2QgaGFzIGEgdHJpdmlhbCBpbXBsZW1lbnRhdGlvbiB0aGF0IHlvdSByZXBsYWNlIGJ5IGVkaXRpbmcgdGhlIGJlYW4uIiAvPgotPG1ldGEgY29udGVudD0iQXhpcyBydW50aW1lIGVudmlyb25tZW50LCBXZWIgc2VydmljZXMsIHNrZWxldG9uLCBza2VsZXRvbiBXZWIgc2VydmljZXMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIFdlYiBzZXJ2aWNlcywgc2tlbGV0b24sIHNrZWxldG9uIFdlYiBzZXJ2aWNlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3RvcGljcy9jYXhpc3RvdmVyLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci90YXNrcy90b3ZlcndzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dWRkaWV4cC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idHNrbHdzZGxhIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+Q3JlYXRpbmcgYSBKYXZhIGJlYW4gc2tlbGV0b24gZnJvbSBhIFdTREwgZG9jdW1lbnQgdXNpbmcgdGhlCi1BcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudDwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0idHNrbHdzZGxhIj48YSBuYW1lPSJ0c2tsd3NkbGEiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkNyZWF0aW5nIGEgSmF2YSBiZWFuIHNrZWxldG9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBcGFjaGUKLUF4aXMxIHJ1bnRpbWUgZW52aXJvbm1lbnQ8L2gxPgotCi0KLQotCi08ZGl2PjxwPlRoZSBXZWIgc2VydmljZSB3aXphcmQgYXNzaXN0cyB5b3UgaW4gY3JlYXRpbmcgYSBza2VsZXRvbiBiZWFuCi1mcm9tIGFuIGV4aXN0aW5nIFdTREwgZG9jdW1lbnQuIFRoZSBza2VsZXRvbiBiZWFuIGNvbnRhaW5zIGEgc2V0IG9mIG1ldGhvZHMKLXRoYXQgY29ycmVzcG9uZCB0byB0aGUgb3BlcmF0aW9ucyBkZXNjcmliZWQgaW4gdGhlIFdTREwgZG9jdW1lbnQuIFdoZW4gdGhlCi1iZWFuIGlzIGNyZWF0ZWQsIGVhY2ggbWV0aG9kIGhhcyBhIHRyaXZpYWwgaW1wbGVtZW50YXRpb24gdGhhdCB5b3UgcmVwbGFjZQotYnkgZWRpdGluZyB0aGUgYmVhbi48L3A+Ci0KLTxkaXYgY2xhc3M9InAiPjxwPlByZXJlcXVpc2l0ZXM6PC9wPgotPG9sPgotPGxpPklmIHlvdSBhcmUgdXNpbmcgdGhlIEFwYWNoZSBKYWthcnRhIFRvbWNhdCBzZXJ2bGV0Ci1jb250YWluZXIgYXMgeW91ciBzZXJ2ZXIsIHlvdSBtdXN0IGluc3RhbGwgaXQsIGNvbmZpZ3VyZSBhbiBpbnN0YW5jZSBvZiBpdCwKLWFuZCBjcmVhdGUgYSBXZWIgcHJvamVjdCB0YXJnZXRlZCB0byBpdCBhcyBkZXNjcmliZWQgaW4gPGEgaHJlZj0idHRvbWNhdHNlcnYuaHRtbCI+Q3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXIgYW5kIFdlYiBwcm9qZWN0PC9hPjwvbGk+Ci0KLTxsaT5DcmVhdGUgb3IgaW1wb3J0IGEgV1NETCBmaWxlIGludG8gdGhlIFdlYiBDb250ZW50IGZvbGRlciBvZiB0aGUgV2ViIHByb2plY3QuCi1Zb3UgY2FuIG9ubHkgdXNlIGEgV1NETCBmaWxlIHRoYXQgY29udGFpbnMgYSBzZXJ2aWNlIGVsZW1lbnQuPC9saT4KLQotPC9vbD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj5UbyBjcmVhdGUgYSBXZWIgc2VydmljZSBmcm9tIGEgV1NETCBmaWxlIHVzaW5nIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZQotZW52aXJvbm1lbnQ6PC9kaXY+Ci0KLTxvbD4KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+U3dpdGNoIHRvIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlICg8c3BhbiBjbGFzcz0idWljb250cm9sIj5XaW5kb3cgJmd0OyBPcGVuIFBlcnNwZWN0aXZlCi0mZ3Q7IEphdmEgRUU8L3NwYW4+KS48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgUHJvamVjdCBFeHBsb3JlciB2aWV3LCBzZWxlY3QgdGhlIFdTREwgZmlsZSB0aGF0IHlvdSBjcmVhdGVkCi1vciBpbXBvcnRlZCBpbnRvIHRoZSBXZWIgQ29udGVudCBmb2xkZXIgb2YgeW91ciBXZWIgcHJvamVjdC48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5DbGljayAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmlsZSAmZ3Q7IE5ldyAmZ3Q7IE90aGVyPC9zcGFuPi4gU2VsZWN0ICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5XZWIKLVNlcnZpY2VzPC9zcGFuPiBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSB2YXJpb3VzIFdlYiBzZXJ2aWNlIHdpemFyZHMuCi1TZWxlY3QgdGhlICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5XZWIgU2VydmljZTwvc3Bhbj4gd2l6YXJkLiBDbGljayAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV4dDwvc3Bhbj4uPC9zcGFuPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZXMgcGFnZTogc2VsZWN0ICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Ub3AgZG93biBKYXZhIGJlYW4gV2ViIHNlcnZpY2U8L3NwYW4+IGFzCi15b3VyIFdlYiBzZXJ2aWNlIHR5cGUsIGFuZCBzZWxlY3QgdGhlIGFydGlmYWN0IGZyb20gd2hpY2ggdGhlIHNlcnZpY2Ugd2lsbAotYmUgY3JlYXRlZC48L3NwYW4+Ci08b2wgdHlwZT0iYSI+Ci08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB0aGUgc3RhZ2VzIG9mIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCB0aGF0IHlvdSB3YW50Ci10byBjb21wbGV0ZSB1c2luZyB0aGUgc2xpZGVyOjwvc3Bhbj4gPHVsPgotPGxpPkRldmVsb3A6IHRoaXMgd2lsbCBkZXZlbG9wIHRoZSBXU0RMIGRlZmluaXRpb24gYW5kIGltcGxlbWVudGF0aW9uIG9mIHRoZQotV2ViIHNlcnZpY2UuIFRoaXMgaW5jbHVkZXMgc3VjaCB0YXNrcyBhcyBjcmVhdGluZyB0aGUgbW9kdWxlcyB3aGljaCB3aWxsIGNvbnRhaW4KLXRoZSBnZW5lcmF0ZWQgY29kZSwgV1NETCBmaWxlcywgZGVwbG95bWVudCBkZXNjcmlwdG9ycywgYW5kIEphdmEgZmlsZXMgd2hlbgotYXBwcm9wcmlhdGUuPC9saT4KLQotPGxpPkFzc2VtYmxlOiB0aGlzIGVuc3VyZXMgdGhlIHByb2plY3QgdGhhdCB3aWxsIGhvc3QgdGhlIFdlYiBzZXJ2aWNlIG9yIGNsaWVudAotZ2V0cyBhc3NvY2lhdGVkIHRvIGFuIEVBUiB3aGVuIHJlcXVpcmVkIGJ5IHRoZSB0YXJnZXQgYXBwbGljYXRpb24gc2VydmVyLjwvbGk+Ci0KLTxsaT5EZXBsb3k6IHRoaXMgd2lsbCBjcmVhdGUgdGhlIGRlcGxveW1lbnQgY29kZSBmb3IgdGhlIHNlcnZpY2UuPC9saT4KLQotPGxpPkluc3RhbGw6IHRoaXMgd2lsbCBpbnN0YWxsIGFuZCBjb25maWd1cmUgdGhlIFdlYiBtb2R1bGUgYW5kIEVBUnMgb24gdGhlCi10YXJnZXQgc2VydmVyLjwvbGk+Ci0KLTxsaT5TdGFydDogdGhpcyB3aWxsIHN0YXJ0IHRoZSBzZXJ2ZXIgb25jZSB0aGUgc2VydmljZSBoYXMgYmVlbiBpbnN0YWxsZWQKLW9uIGl0LiBUaGUgc2VydmVyLWNvbmZpZy53c2RkIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuPC9saT4KLQotPGxpPlRlc3Q6IHRoaXMgd2lsbCBwcm92aWRlIHZhcmlvdXMgb3B0aW9ucyBmb3IgdGVzdGluZyB0aGUgc2VydmljZSwgc3VjaAotYXMgdXNpbmcgdGhlIFdlYiBTZXJ2aWNlIEV4cGxvcmVyIG9yIHNhbXBsZSBKU1BzLjwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB5b3VyIHNlcnZlcjogdGhlIGRlZmF1bHQgc2VydmVyIGlzIGRpc3BsYXllZC4gSWYgeW91Ci13YW50IHRvIGRlcGxveSB5b3VyIHNlcnZpY2UgdG8gYSBkaWZmZXJlbnQgc2VydmVyIGNsaWNrIHRoZSBsaW5rIHRvIHNwZWNpZnkKLWEgZGlmZmVyZW50IHNlcnZlci48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj5TZWxlY3QgeW91ciBydW50aW1lOiB0aGUgZGVmYXVsdCBydW50aW1lIGlzIGRpc3BsYXllZC4gSWYgeW91Ci13YW50IHRvIGRlcGxveSB5b3VyIHNlcnZpY2UgdG8gYSBkaWZmZXJlbnQgcnVudGltZSBjbGljayB0aGUgbGluayB0byBzcGVjaWZ5Ci1hIGRpZmZlcmVudCBydW50aW1lLjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB0aGUgc2VydmljZSBwcm9qZWN0OiB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBwcm9qZWN0Ci1zZWxlY3RlZCBpbiB5b3VyIHdvcmtzcGFjZSBpcyBkaXNwbGF5ZWQuIFRvIHNlbGVjdCBhIGRpZmZlcmVudCBwcm9qZWN0IGFuZAotRUFSIGNsaWNrIG9uIHRoZSBwcm9qZWN0IGxpbmsuPC9zcGFuPiBFbnN1cmUgdGhhdCB0aGUgcHJvamVjdCBzZWxlY3RlZAotYXMgdGhlIENsaWVudCBXZWIgUHJvamVjdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgU2VydmljZSBXZWIgUHJvamVjdCwgb3IgdGhlCi1zZXJ2aWNlIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGNsaWVudCdzIGdlbmVyYXRlZCBhcnRpZmFjdHMuPC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj5JZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBjbGllbnQsIHNlbGVjdCB0aGUgdHlwZSBvZiBwcm94eSB0bwotYmUgZ2VuZXJhdGVkIGFuZCByZXBlYXQgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUgY2xpZW50Ljwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlB1Ymxpc2ggdGhlIFdlYiBzZXJ2aWNlOiB0aGlzIHdpbGwgbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIKLXRvIHB1Ymxpc2ggeW91ciBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnkuPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3Vic3RlcGV4cGFuZCI+PHNwYW4+TW9uaXRvciB0aGUgV2ViIHNlcnZpY2U6IHRoaXMgd2lsbCBzZW5kIHRoZSBXZWIgc2VydmljZSB0cmFmZmljCi10aHJvdWdoIHRoZSBUQ1AvSVAgTW9uaXRvciwgd2hpY2ggYWxsb3dzIHlvdSB0byB3YXRjaCB0aGUgU09BUCB0cmFmZmljIGdlbmVyYXRlZAotYnkgdGhlIFdlYiBzZXJ2aWNlIGFuZCB0byB0ZXN0IHRoaXMgdHJhZmZpYyBmb3IgV1MtSSBjb21wbGlhbmNlLiBBbHRlcm5hdGVseQoteW91IGNhbiBtYW51YWxseSBzZXQgdXAgYSBUQ1AvSVAgbW9uaXRvciBhcyBkZXNjcmliZWQgaW4gPGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90bW9uaXRvci5odG1sIj5Vc2luZyB0aGUgVENQL0lQIE1vbml0b3IgdG8gdGVzdCBXZWIgc2VydmljZXM8L2E+PC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+V2ViIFNlcnZpY2VzIFNrZWxldG9uIEphdmHihKIgQmVhbiBDb25maWd1cmF0aW9uIHBhZ2U6IFNlbGVjdCB0aGUKLWZvbGRlciB3aGVyZSB0aGUgZ2VuZXJhdGVkIEphdmEgd2lsbCBiZSBzdG9yZWQuIElmIHlvdSB3YW50IHRvIHJldmlldwotb3IgZWRpdCB0aGUgbWFwcGluZ3MgYmV0d2VlbiBwYWNrYWdlcyBhbmQgbmFtZXNwYWNlcywgc2VsZWN0IHRoZSAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RGVmaW5lCi1jdXN0b20gbWFwcGluZyBmb3IgbmFtZXNwYWNlIHRvIHBhY2thZ2U8L3NwYW4+IGNoZWNrIGJveC4gQ2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+Ljwvc3Bhbj4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+V2ViIFNlcnZpY2UgTmFtZXNwYWNlIHRvIFBhY2thZ2UgTWFwcGluZ3MgcGFnZTogaWYgeW91IHNlbGVjdGVkCi0gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RGVmaW5lIGN1c3RvbSBtYXBwaW5nIGZvciBwYWNrYWdlIHRvIG5hbWVzcGFjZTwvc3Bhbj4gb24KLXRoZSBwcmV2aW91cyBwYW5lbCwgeW91IGNhbiBlbnRlciB5b3VyIGN1c3RvbSBtYXBwaW5nIHBhaXJzIG9uIHRoaXMgcGFuZWwKLWJ5IGNsaWNraW5nICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5BZGQ8L3NwYW4+LiBBbHRlcm5hdGVseSwgeW91IGNhbiBjbGljayAgPHN0cm9uZz5JbXBvcnQ8L3N0cm9uZz4gdG8KLWltcG9ydCBjdXN0b20gbWFwcGluZyBwYWlycyBmcm9tIGEgIDx0dCBjbGFzcz0ic3lzb3V0Ij4ucHJvcGVydGllczwvdHQ+IGZpbGUuCi1UaGUgY29udGVudCBvZiB0aGUgcHJvcGVydGllcyBmaWxlIG11c3QgYmUgb2YgdGhlIGZvcm1hdCAgPHNhbXAgY2xhc3M9ImNvZGVwaCI+PHZhciBjbGFzcz0idmFybmFtZSI+bmFtZXNwYWNlPXBhY2thZ2U8L3Zhcj48L3NhbXA+Ljwvc3Bhbj4KLSBZb3Ugd2lsbCBuZWVkIHRvIGVzY2FwZSBzb21lIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgcHJvcGVydGllcyBmaWxlcy4KLSBGb3IgZXhhbXBsZSA8c2FtcCBjbGFzcz0iY29kZXBoIj5odHRwOi8vc29tZU5hbWVzcGFjZT1zb21lUGFja2FnZTwvc2FtcD4gc2hvdWxkIGJlIDxzYW1wIGNsYXNzPSJjb2RlcGgiPmh0dHBcOi8vc29tZU5hbWVzcGFjZT1zb21lUGFja2FnZTwvc2FtcD4uCi0gT3RoZXJ3aXNlLCB0aGUgY29sb24gKDopIHdvdWxkIGJlIHRyZWF0ZWQgYXMgZGVsaW1pdGVyIHJlc3VsdGluZyBpbiB0cnlpbmcKLXRvIG1hcCA8c2FtcCBjbGFzcz0iY29kZXBoIj5odHRwPC9zYW1wPiB0byA8c2FtcCBjbGFzcz0iY29kZXBoIj4vL3NvbWVOYW1lc3BhY2U9c29tZVBhY2thZ2U8L3NhbXA+LgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZSBUZXN0IHBhZ2U6IElmIHlvdSBzZWxlY3RlZCB0byB0ZXN0IHRoZSBXZWIgc2VydmljZSwKLXNlbGVjdCB0aGUgdGVzdCBmYWNpbGl0eSBmb3IgdGhlIGdlbmVyYXRlZCBXZWIgc2VydmljZS4gVGhpcyB3aWxsIG9wZW4gdGhlCi1XZWIgc2VydmljZSBpbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLiBTZWxlY3QgdGhlIG9wZXJhdGlvbiB5b3Ugd2FudCB0bwotdGVzdCwgZW50ZXIgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uLCBhbmQgY2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkdvPC9zcGFuPi4KLVRoZSByZXN1bHQgd2lsbCBkaXNwbGF5IGluIHRoZSBTdGF0dXMgcGFuZS4gQ2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+Ljwvc3Bhbj4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+V2ViIFNlcnZpY2UgUHJveHkgcGFnZTogSWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gZ2VuZXJhdGUgYSBwcm94eSwKLXRoaXMgcGFnZSBzaG93cyB0aGUgb3B0aW9ucyBmb3IgdGhlIHByb3h5LiBJdCBsaXN0cyB0aGUgZm9sZGVyIHdoZXJlIHRoZSBwcm94eQotd2lsbCBiZSBnZW5lcmF0ZWQsIGFuZCB5b3UgY2FuIG9wdGlvbmFsbHkgY3JlYXRlIGN1c3RvbSBtYXBwaW5ncyBiZXR3ZWVuIG5hbWVzcGFjZXMKLWFuZCBwYWNrYWdlcy4gQ2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+Ljwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPldlYiBTZXJ2aWNlIENsaWVudCBUZXN0IHBhZ2U6IFVzZSB0aGlzIHBhZ2UgdG8gc2VsZWN0IHRoZSBmb2xsb3dpbmcKLW9wdGlvbnM6IDwvc3Bhbj4KLTxvbCB0eXBlPSJhIj4KLTxsaT48c3Bhbj5TZWxlY3QgeW91ciB0ZXN0IGZhY2lsaXR5LiBZb3UgY2FuIHRlc3QgdGhlIGdlbmVyYXRlZCBwcm94eQotaW4gdGhlIFdlYiBTZXJ2aWNlIEV4cGxvcmVyLCBvciB5b3UgY2FuIGdlbmVyYXRlIGEgc2FtcGxlIFdlYiBzZXJ2aWNlIEpTUC48L3NwYW4+Ci08L2xpPgotCi08bGk+PHNwYW4+SWYgeW91IHNlbGVjdGVkIHRvIHRlc3QgdGhlIHByb3h5IHRocm91Z2ggYSBKU1AsIHlvdSBjYW4gc2VsZWN0Ci10aGUgZm9sZGVyIHdoZXJlIHRoZSBKU1Agd2lsbCBiZSBsb2NhdGVkLCBhbmQgeW91IGNhbiBzZWxlY3QgdGhlIG1ldGhvZHMgdGhhdAotd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgSlNQLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+U2VsZWN0ICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5SdW4gdGVzdCBvbiBzZXJ2ZXI8L3NwYW4+IHRvIHN0YXJ0IHRoZQotc2VydmVyIGZvciB5b3UgYXV0b21hdGljYWxseS48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZSBQdWJsaWNhdGlvbiBwYWdlOiBJZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byBwdWJsaXNoIHlvdXIKLVdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeSwgdXNlIHRoaXMgcGFnZSB0byBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcgotYW5kIHNlbGVjdCB0aGUgVURESSByZWdpc3RyeSB0byB3aGljaCB0aGUgV2ViIHNlcnZpY2Ugd2lsbCBiZSBwdWJsaXNoZWQuIENsaWNrCi0gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluaXNoPC9zcGFuPi48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGRpdiBjbGFzcz0icCI+QWZ0ZXIgdGhlIFdlYiBzZXJ2aWNlIGhhcyBiZWVuIGNyZWF0ZWQsCi10aGUgZm9sbG93aW5nIG1heSBvY2N1ciBkZXBlbmRpbmcgb24gdGhlIG9wdGlvbnMgeW91IHNlbGVjdGVkOiA8dWw+Ci08bGk+SWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gdGVzdCB0aGUgZ2VuZXJhdGVkIHByb3h5IHVzaW5nIFdlYiBzZXJ2aWNlIEpTUHMsCi10aGUgcHJveHkgaXMgbGF1bmNoZWQgaW4gYSBXZWIgYnJvd3NlciBhdCB0aGUgZm9sbG93aW5nIFVSTDogaHR0cDovL2xvY2FsaG9zdDogPHZhciBjbGFzcz0idmFybmFtZSI+cG9ydDwvdmFyPi8gPHZhciBjbGFzcz0idmFybmFtZSI+V2ViUHJvamVjdDwvdmFyPkNsaWVudC9zYW1wbGU8ZW0+QmVhbk5hbWU8L2VtPi8gPHZhciBjbGFzcz0idmFybmFtZSI+V2ViU2VydmljZU5hbWU8L3Zhcj4vVGVzdENsaWVudC5qc3AgWW91IGNhbiB1c2UKLXRoaXMgc2FtcGxlIGFwcGxpY2F0aW9uIHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlIGJ5IHNlbGVjdGluZyBhIG1ldGhvZCwgZW50ZXJpbmcKLWEgdmFsdWUgZm9yIHRoZSBtZXRob2QsIGFuZCBjbGlja2luZyAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+SW52b2tlPC9zcGFuPi4gVGhlIHJlc3VsdAotb2YgdGhlIG1ldGhvZCB3aWxsIGRpc3BsYXkgaW4gdGhlIHJlc3VsdHMgcGFuZS48L2xpPgotCi08bGk+SWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gdGVzdCB0aGUgV2ViIHNlcnZpY2UgdXNpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciwKLXRoZSBFeHBsb3JlciB3aWxsIG9wZW4uIFNlbGVjdCB0aGUgb3BlcmF0aW9uIHlvdSB3YW50IHRvIHRlc3QsIGVudGVyIHRoZSByZXF1aXJlZAotaW5mb3JtYXRpb24sIGFuZCBjbGljayAgPHN0cm9uZz5Hbzwvc3Ryb25nPi4gVGhlIHJlc3VsdCB3aWxsIGRpc3BsYXkgaW4gdGhlIFN0YXR1cyBwYW5lLjwvbGk+Ci0KLTxsaT5JZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byBwdWJsaXNoIHRoZSBXZWIgc2VydmljZSwgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcgotaXMgbGF1bmNoZWQgZGlzcGxheWluZyB0aGUgcGFnZSByZXF1aXJlZCB0byBwdWJsaXNoIHlvdXIgV2ViIHNlcnZpY2UuIEZvbGxvdwotdGhlIGluc3RydWN0aW9ucyBpbiAgPHZhciBjbGFzcz0idmFybmFtZSI+UHVibGlzaGluZyB0aGUgV2ViIHNlcnZpY2U8L3Zhcj4gdG8gY29tcGxldGUKLXRoaXMgdGFzay48L2xpPgotCi08L3VsPgotPC9kaXY+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+PGRpdiBjbGFzcz0icmVsY29uY2VwdHMiPjxzdHJvbmc+UmVsYXRlZCBjb25jZXB0czwvc3Ryb25nPjxiciAvPgotPGRpdj48YSBocmVmPSIuLi90b3BpY3MvY2F4aXN0b3Zlci5odG1sIiB0aXRsZT0iVGhpcyBydW50aW1lIGVudmlyb25tZW50cyBpcyBmb3IgdXNlcnMgd2hvIHByZWZlciB0byBkZXZlbG9wIGZvciB0aGUgb3BlbiBBcGFjaGUgQXhpcyBwbGF0Zm9ybS4iPkNyZWF0aW5nIFdlYiBzZXJ2aWNlcyB3aXRoIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudDwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci90YXNrcy90b3ZlcndzLmh0bWwiPiBEZXZlbG9waW5nIFdlYiBzZXJ2aWNlczwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiPiBVc2luZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFJlZmVyZW5jZTwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzZGwuaHRtbCI+V1NETCBkb2N1bWVudHM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3R0b21jYXRzZXJ2LmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90dG9tY2F0c2Vydi5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzhlYzQ0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3R0b21jYXRzZXJ2LmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+DQotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iDQotICIuLi8uLi9kdGQvdGFzay5kdGQiPg0KLTx0YXNrIGlkPSJjcmVhdGluZ2FuYXBhY2hldG9tY2F0c2VydmVyIiB4bWw6bGFuZz0iZW4tdXMiPg0KLTx0aXRsZT5DcmVhdGluZyBhbiBBcGFjaGUgVG9tY2F0IHNlcnZlciBhbmQgV2ViIHByb2plY3Q8L3RpdGxlPg0KLTxzaG9ydGRlc2M+SWYgeW91IHBsYW4gdG8gY3JlYXRlIGEgV2ViIHNlcnZpY2UgdGhhdCB1c2VzIEFwYWNoZSBKYWthcnRhIFRvbWNhdA0KLWFzIGl0cyBzZXJ2ZXIsIFRvbWNhdCBtdXN0IGJlIGluc3RhbGxlZCBhbmQgYSBzZXJ2ZXIgY3JlYXRlZCBiZWZvcmUgeW91IGJlZ2luDQotY3JlYXRpbmcgeW91ciBXZWIgc2VydmljZS48L3Nob3J0ZGVzYz4NCi08cHJvbG9nPjxtZXRhZGF0YT4NCi08a2V5d29yZHM+PGluZGV4dGVybSBrZXlyZWY9InR0b21jYXRzZXJ2fDF8QXhpc3J1bnRpbWVlbnZpcm9ubWVudGNyZWF0aW5nYW5BcGFjaGVUb21jYXRzZXJ2ZXIiDQotc3RhdHVzPSJ1bmNoYW5nZWQiPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+QXBhY2hlIFRvbWNhdDwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPg0KLTxpbmRleHRlcm0ga2V5cmVmPSJ0dG9tY2F0c2VydnwyfFRvbWNhdHNlcnZlcmNyZWF0aW5nc2VydmVyc2ZvcldlYnNlcnZpY2VzIg0KLXN0YXR1cz0idW5jaGFuZ2VkIj5BcGFjaGUgVG9tY2F0PGluZGV4dGVybT5zZXJ2ZXJzIGZvciBXZWIgc2VydmljZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4NCi08aW5kZXh0ZXJtIGtleXJlZj0idHRvbWNhdHNlcnZ8M3xXZWJzZXJ2aWNlc2NyZWF0aW5nYW5BcGFjaGVUb21jYXRzZXJ2ZXIiDQotc3RhdHVzPSJ1bmNoYW5nZWQiPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+Y3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXI8L2luZGV4dGVybT48L2luZGV4dGVybT4NCi08L2tleXdvcmRzPg0KLTwvbWV0YWRhdGE+PC9wcm9sb2c+DQotPHRhc2tib2R5Pg0KLTxwcmVyZXE+SW5zdGFsbCBBcGFjaGUgSmFrYXJ0YSBUb21jYXQgZnJvbSB0aGlzIFVSTDogPHhyZWYgaHJlZj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy90b21jYXQiDQotc2NvcGU9ImV4dGVybmFsIj5odHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnL3RvbWNhdDwveHJlZj48L3ByZXJlcT4NCi08Y29udGV4dD5PbmNlIHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgc2VydmVyLCBjcmVhdGUgYSBUb21jYXQgc2VydmVyIGluIHRoZQ0KLXdvcmtiZW5jaCBieSBkb2luZyB0aGUgZm9sbG93aW5nOiA8L2NvbnRleHQ+DQotPHN0ZXBzPg0KLTxzdGVwPjxjbWQ+RnJvbSB0aGUgRmlsZSBtZW51LCBzZWxlY3QgPHVpY29udHJvbD5OZXcgPiBPdGhlciA+IFNlcnZlciA+IFNlcnZlcg0KLT4gTmV4dDwvdWljb250cm9sPi48L2NtZD48L3N0ZXA+DQotPHN0ZXA+PGNtZD5TZWxlY3QgVG9tY2F0IHYgMy54LCA0LngsIHY1LngsIG9yIDYueCBhcyB0aGUgc2VydmVyIHR5cGUsIGVsZWN0aW5nDQotdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBUb21jYXQgZm9yIHlvdXIgaW5zdGFsbCwgYW5kIGNsaWNrIDx1aWNvbnRyb2w+TmV4dDwvdWljb250cm9sPi48L2NtZD4NCi08L3N0ZXA+DQotPHN0ZXA+PGNtZD5PbiB0aGUgVG9tY2F0IHNlcnZlciBwYWdlOjwvY21kPg0KLTxzdWJzdGVwcz4NCi08c3Vic3RlcD48Y21kPkVudGVyIGEgc2VydmVyIG5hbWUuPC9jbWQ+PC9zdWJzdGVwPg0KLTxzdWJzdGVwPjxjbWQ+U3BlY2lmeSB3aGVyZSBUb21jYXQgaXMgaW5zdGFsbGVkLjwvY21kPjwvc3Vic3RlcD4NCi08c3Vic3RlcD48Y21kPkNsaWNrIDx1aWNvbnRyb2w+SW5zdGFsbGVkIEpSRXM8L3VpY29udHJvbD4sIGNsaWNrIDx1aWNvbnRyb2w+QWRkPC91aWNvbnRyb2w+LA0KLWFuZCBlbnRlciB0aGUgYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24gZm9yIHRoZSBKREsgeW91IHBsYW4gdG8gdXNlIGZvciBUb21jYXQuDQotRm9yIGV4YW1wbGUsIGZvciBUb21jYXQgdjUuMCB0aGUgSlJFIG5hbWUgd291bGQgYmUgamRrMTQxIGFuZCB0aGUgSlJFIGhvbWUNCi13b3VsZCBiZSB0aGUgaG9tZSBkaXJlY3RvcnkgZm9yIEpESyAxLjQuMS4gQ2xpY2sgPHVpY29udHJvbD5PSzwvdWljb250cm9sPiB0d2ljZQ0KLW9uY2UgeW91IGhhdmUgZW50ZXJlZCB0aGlzIGluZm9ybWF0aW9uLiBFbnN1cmUgdGhhdCB0aGUgbmV3bHkgYWRkZWQgSkRLIGlzDQotbm93IHNlbGVjdGVkIGluIHRoZSBKUkUgZmllbGQgb2YgdGhlIFRvbWNhdCBzZXJ2ZXIgcGFnZS4gTm90ZSB0aGF0IGlmIHlvdQ0KLXBvaW50IHRoZSBzZXJ2ZXIgYXQgYSBKUkUgcmF0aGVyIHRoYW4gYSBKREsgdGhlIEpTUHMgd2lsbCBub3QgcHJvcGVybHkgY29tcGlsZQ0KLWFuZCB3aWxsIG5vdCBiZSBhYmxlIHRvIHJ1biBvbiB0aGUgVG9tY2F0IHNlcnZlci48L2NtZD48L3N1YnN0ZXA+DQotPC9zdWJzdGVwcz4NCi08L3N0ZXA+DQotPHN0ZXA+PGNtZD5DbGljayA8dWljb250cm9sPkZpbmlzaDwvdWljb250cm9sPi48L2NtZD48c3RlcHJlc3VsdD4gVG8gc2VlIHRoZQ0KLXNlcnZlciB5b3UgaGF2ZSBjcmVhdGVkIGluIHRoZSB3b3Jrc3BhY2UsIGZyb20gdGhlIFdpbmRvdyBtZW51IHNlbGVjdCA8dWljb250cm9sPlNob3cNCi12aWV3ID4gT3RoZXIgPiBTZXJ2ZXIgPiBTZXJ2ZXJzID4gT2suPC91aWNvbnRyb2w+IDwvc3RlcHJlc3VsdD48L3N0ZXA+DQotPC9zdGVwcz4NCi08ZXhhbXBsZT48cD5UbyBidWlsZCBhIGR5bmFtaWMgV2ViIHByb2plY3QgdGhhdCBwb2ludHMgdG8gdGhlIFRvbWNhdCBzZXJ2ZXINCi10aGF0IHlvdSBoYXZlIGNyZWF0ZWQ6PC9wPjxvbD4NCi08bGk+Q3JlYXRlIHRoZSBzZXJ2aWNlIFdlYiBwcm9qZWN0IGJ5IHNlbGVjdGluZyA8dWljb250cm9sPk5ldyA+IER5bmFtaWMgV2ViDQotcHJvamVjdDwvdWljb250cm9sPi4gRW50ZXIgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjogPHVsPg0KLTxsaT5Qcm9qZWN0IE5hbWU6IGVudGVyIGEgcHJvamVjdCBuYW1lPC9saT4NCi08bGk+VGFyZ2V0IHJ1bnRpbWU6IFRvbWNhdCBzZXJ2ZXIgdjMueCwgNC54LCA1LngsIG9yIDYuMCBkZXBlbmRpbmcgb24gdGhlDQotdmVyc2lvbiB5b3UgaW5zdGFsbGVkLiBJZiBpdCBpcyBub3QgbGlzdGVkLCBjbGljayBOZXcgYW5kIGJyb3dzZSB0byB0aGUgbG9jYXRpb24NCi13aGVyZSBpdCBpcyBpbnN0YWxsZWQuPC9saT4NCi08bGk+RW5zdXJlIHRoYXQgPHVpY29udHJvbD5BZGQgcHJvamVjdCB0byBhbiBFQVI8L3VpY29udHJvbD4gaXMgPGk+bm90PC9pPiBzZWxlY3RlZC48L2xpPg0KLTwvdWw+PC9saT4NCi08bGk+Q2xpY2sgPHVpY29udHJvbD5GaW5pc2g8L3VpY29udHJvbD4uPC9saT4NCi08bGk+VG8gYXNzb2NpYXRlIHRoZSBwcm9qZWN0IHdpdGggdGhlIHNlcnZlciwgcmlnaHQtY2xpY2sgdGhlIFRvbWNhdCBzZXJ2ZXINCi15b3UgY3JlYXRlZCBpbiB0aGUgU2VydmVyIHZpZXcgYW5kIHNlbGVjdCA8dWljb250cm9sPkFkZCBhbmQgcmVtb3ZlIHByb2plY3RzPC91aWNvbnRyb2w+Lg0KLVNlbGVjdCB0aGUgc2VydmljZSBhbmQgY2xpZW50IHByb2plY3RzIGZyb20gdGhlIEF2YWlsYWJsZSBwcm9qZWN0cyBsaXN0IGFuZA0KLWNsaWNrIDx1aWNvbnRyb2w+QWRkPC91aWNvbnRyb2w+LiA8L2xpPg0KLTwvb2w+PC9leGFtcGxlPg0KLTwvdGFza2JvZHk+DQotPC90YXNrPg0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3R0b21jYXRzZXJ2Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90dG9tY2F0c2Vydi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTAyYWM4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3R0b21jYXRzZXJ2Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iQ3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXIgYW5kIFdlYiBwcm9qZWN0IiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IklmIHlvdSBwbGFuIHRvIGNyZWF0ZSBhIFdlYiBzZXJ2aWNlIHRoYXQgdXNlcyBBcGFjaGUgSmFrYXJ0YSBUb21jYXQgYXMgaXRzIHNlcnZlciwgVG9tY2F0IG11c3QgYmUgaW5zdGFsbGVkIGFuZCBhIHNlcnZlciBjcmVhdGVkIGJlZm9yZSB5b3UgYmVnaW4gY3JlYXRpbmcgeW91ciBXZWIgc2VydmljZS4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iSWYgeW91IHBsYW4gdG8gY3JlYXRlIGEgV2ViIHNlcnZpY2UgdGhhdCB1c2VzIEFwYWNoZSBKYWthcnRhIFRvbWNhdCBhcyBpdHMgc2VydmVyLCBUb21jYXQgbXVzdCBiZSBpbnN0YWxsZWQgYW5kIGEgc2VydmVyIGNyZWF0ZWQgYmVmb3JlIHlvdSBiZWdpbiBjcmVhdGluZyB5b3VyIFdlYiBzZXJ2aWNlLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IkF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgQXBhY2hlIFRvbWNhdCwgc2VydmVycyBmb3IgV2ViIHNlcnZpY2VzLCBXZWIgc2VydmljZXMsIGNyZWF0aW5nIGFuIEFwYWNoZSBUb21jYXQgc2VydmVyIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iQXhpcyBydW50aW1lIGVudmlyb25tZW50LCBBcGFjaGUgVG9tY2F0LCBzZXJ2ZXJzIGZvciBXZWIgc2VydmljZXMsIFdlYiBzZXJ2aWNlcywgY3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXIiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9ImNyZWF0aW5nYW5hcGFjaGV0b21jYXRzZXJ2ZXIiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5DcmVhdGluZyBhbiBBcGFjaGUgVG9tY2F0IHNlcnZlciBhbmQgV2ViIHByb2plY3Q8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9ImNyZWF0aW5nYW5hcGFjaGV0b21jYXRzZXJ2ZXIiPjxhIG5hbWU9ImNyZWF0aW5nYW5hcGFjaGV0b21jYXRzZXJ2ZXIiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkNyZWF0aW5nIGFuIEFwYWNoZSBUb21jYXQgc2VydmVyIGFuZCBXZWIgcHJvamVjdDwvaDE+Ci0KLQotCi08ZGl2PjxwPklmIHlvdSBwbGFuIHRvIGNyZWF0ZSBhIFdlYiBzZXJ2aWNlIHRoYXQgdXNlcyBBcGFjaGUgSmFrYXJ0YSBUb21jYXQKLWFzIGl0cyBzZXJ2ZXIsIFRvbWNhdCBtdXN0IGJlIGluc3RhbGxlZCBhbmQgYSBzZXJ2ZXIgY3JlYXRlZCBiZWZvcmUgeW91IGJlZ2luCi1jcmVhdGluZyB5b3VyIFdlYiBzZXJ2aWNlLjwvcD4KLQotPGRpdiBjbGFzcz0icCI+SW5zdGFsbCBBcGFjaGUgSmFrYXJ0YSBUb21jYXQgZnJvbSB0aGlzIFVSTDogPGEgaHJlZj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy90b21jYXQiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnL3RvbWNhdDwvYT48L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+T25jZSB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIHNlcnZlciwgY3JlYXRlIGEgVG9tY2F0IHNlcnZlciBpbiB0aGUKLXdvcmtiZW5jaCBieSBkb2luZyB0aGUgZm9sbG93aW5nOiA8L2Rpdj4KLQotPG9sPgotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5Gcm9tIHRoZSBGaWxlIG1lbnUsIHNlbGVjdCA8c3BhbiBjbGFzcz0idWljb250cm9sIj5OZXcgJmd0OyBPdGhlciAmZ3Q7IFNlcnZlciAmZ3Q7IFNlcnZlcgotJmd0OyBOZXh0PC9zcGFuPi48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5TZWxlY3QgVG9tY2F0IHYgMy54LCA0LngsIHY1LngsIG9yIDYueCBhcyB0aGUgc2VydmVyIHR5cGUsIGVsZWN0aW5nCi10aGUgY29ycmVjdCB2ZXJzaW9uIG9mIFRvbWNhdCBmb3IgeW91ciBpbnN0YWxsLCBhbmQgY2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV4dDwvc3Bhbj4uPC9zcGFuPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5PbiB0aGUgVG9tY2F0IHNlcnZlciBwYWdlOjwvc3Bhbj4KLTxvbCB0eXBlPSJhIj4KLTxsaT48c3Bhbj5FbnRlciBhIHNlcnZlciBuYW1lLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+U3BlY2lmeSB3aGVyZSBUb21jYXQgaXMgaW5zdGFsbGVkLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+Q2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+SW5zdGFsbGVkIEpSRXM8L3NwYW4+LCBjbGljayA8c3BhbiBjbGFzcz0idWljb250cm9sIj5BZGQ8L3NwYW4+LAotYW5kIGVudGVyIHRoZSBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBmb3IgdGhlIEpESyB5b3UgcGxhbiB0byB1c2UgZm9yIFRvbWNhdC4KLUZvciBleGFtcGxlLCBmb3IgVG9tY2F0IHY1LjAgdGhlIEpSRSBuYW1lIHdvdWxkIGJlIGpkazE0MSBhbmQgdGhlIEpSRSBob21lCi13b3VsZCBiZSB0aGUgaG9tZSBkaXJlY3RvcnkgZm9yIEpESyAxLjQuMS4gQ2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+T0s8L3NwYW4+IHR3aWNlCi1vbmNlIHlvdSBoYXZlIGVudGVyZWQgdGhpcyBpbmZvcm1hdGlvbi4gRW5zdXJlIHRoYXQgdGhlIG5ld2x5IGFkZGVkIEpESyBpcwotbm93IHNlbGVjdGVkIGluIHRoZSBKUkUgZmllbGQgb2YgdGhlIFRvbWNhdCBzZXJ2ZXIgcGFnZS4gTm90ZSB0aGF0IGlmIHlvdQotcG9pbnQgdGhlIHNlcnZlciBhdCBhIEpSRSByYXRoZXIgdGhhbiBhIEpESyB0aGUgSlNQcyB3aWxsIG5vdCBwcm9wZXJseSBjb21waWxlCi1hbmQgd2lsbCBub3QgYmUgYWJsZSB0byBydW4gb24gdGhlIFRvbWNhdCBzZXJ2ZXIuPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+Q2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluaXNoPC9zcGFuPi48L3NwYW4+ICBUbyBzZWUgdGhlCi1zZXJ2ZXIgeW91IGhhdmUgY3JlYXRlZCBpbiB0aGUgd29ya3NwYWNlLCBmcm9tIHRoZSBXaW5kb3cgbWVudSBzZWxlY3QgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+U2hvdwotdmlldyAmZ3Q7IE90aGVyICZndDsgU2VydmVyICZndDsgU2VydmVycyAmZ3Q7IE9rLjwvc3Bhbj4gPC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+VG8gYnVpbGQgYSBkeW5hbWljIFdlYiBwcm9qZWN0IHRoYXQgcG9pbnRzIHRvIHRoZSBUb21jYXQgc2VydmVyCi10aGF0IHlvdSBoYXZlIGNyZWF0ZWQ6PC9wPgotPG9sPgotPGxpPkNyZWF0ZSB0aGUgc2VydmljZSBXZWIgcHJvamVjdCBieSBzZWxlY3RpbmcgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV3ICZndDsgRHluYW1pYyBXZWIKLXByb2plY3Q8L3NwYW4+LiBFbnRlciB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOiA8dWw+Ci08bGk+UHJvamVjdCBOYW1lOiBlbnRlciBhIHByb2plY3QgbmFtZTwvbGk+Ci0KLTxsaT5UYXJnZXQgcnVudGltZTogVG9tY2F0IHNlcnZlciB2My54LCA0LngsIDUueCwgb3IgNi4wIGRlcGVuZGluZyBvbiB0aGUKLXZlcnNpb24geW91IGluc3RhbGxlZC4gSWYgaXQgaXMgbm90IGxpc3RlZCwgY2xpY2sgTmV3IGFuZCBicm93c2UgdG8gdGhlIGxvY2F0aW9uCi13aGVyZSBpdCBpcyBpbnN0YWxsZWQuPC9saT4KLQotPGxpPkVuc3VyZSB0aGF0IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFkZCBwcm9qZWN0IHRvIGFuIEVBUjwvc3Bhbj4gaXMgPGVtPm5vdDwvZW0+IHNlbGVjdGVkLjwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGk+Q2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluaXNoPC9zcGFuPi48L2xpPgotCi08bGk+VG8gYXNzb2NpYXRlIHRoZSBwcm9qZWN0IHdpdGggdGhlIHNlcnZlciwgcmlnaHQtY2xpY2sgdGhlIFRvbWNhdCBzZXJ2ZXIKLXlvdSBjcmVhdGVkIGluIHRoZSBTZXJ2ZXIgdmlldyBhbmQgc2VsZWN0IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFkZCBhbmQgcmVtb3ZlIHByb2plY3RzPC9zcGFuPi4KLVNlbGVjdCB0aGUgc2VydmljZSBhbmQgY2xpZW50IHByb2plY3RzIGZyb20gdGhlIEF2YWlsYWJsZSBwcm9qZWN0cyBsaXN0IGFuZAotY2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWRkPC9zcGFuPi4gPC9saT4KLQotPC9vbD4KLTwvZGl2PgotCi08L2Rpdj4KLQotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvdHdzYmVhbmEuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3R3c2JlYW5hLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MWYyMjkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvdHdzYmVhbmEuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDE3NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+DQotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iDQotICIuLi8uLi9kdGQvdGFzay5kdGQiPg0KLTx0YXNrIGlkPSJ0d3NiZWFuYSIgeG1sOmxhbmc9ImVuLXVzIj4NCi08dGl0bGU+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iDQotdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gYmVhbiB1c2luZyB0aGUgQXBhY2hlIEF4aXMxIHJ1bnRpbWUNCi1lbnZpcm9ubWVudDwvdGl0bGU+DQotPHRpdGxlYWx0cz4NCi08c2VhcmNodGl0bGU+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIHVzaW5nIHRoZSBBcGFjaGUgQXhpczENCi1ydW50aW1lIGVudmlyb25tZW50PC9zZWFyY2h0aXRsZT4NCi08L3RpdGxlYWx0cz4NCi08c2hvcnRkZXNjPlRoZSBXZWIgU2VydmljZSB3aXphcmQgYXNzaXN0cyB5b3UgaW4gY3JlYXRpbmcgYSBuZXcgV2ViIHNlcnZpY2UsDQotY29uZmlndXJpbmcgaXQgZm9yIGRlcGxveW1lbnQsIGFuZCBkZXBsb3lpbmcgdGhlIFdlYiBzZXJ2aWNlIHRvIGEgc2VydmVyLg0KLU9uY2UgeW91ciBXZWIgc2VydmljZSBpcyBkZXBsb3llZCwgdGhlIHdpemFyZCBhc3Npc3RzIHlvdSBpbiBnZW5lcmF0aW5nIHRoZQ0KLWNsaWVudCBwcm94eSBhbmQgc2FtcGxlIGFwcGxpY2F0aW9uIHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlLiBXaGVuIHlvdSBoYXZlDQotY29tcGxldGVkIHRlc3RpbmcsIHlvdSBjYW4gcHVibGlzaCB5b3VyIFdlYiBzZXJ2aWNlIHRvIGEgVURESSBCdXNpbmVzcyBSZWdpc3RyeQ0KLXVzaW5nIHRoZSBFeHBvcnQgd2l6YXJkLjwvc2hvcnRkZXNjPg0KLTxwcm9sb2c+PG1ldGFkYXRhPg0KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtIGtleXJlZj0idHdzYmVhbmF8MXxBeGlzMXJ1bnRpbWVlbnZpcm9ubWVudFdlYnNlcnZpY2VzSmF2YWJlYW5zIg0KLXN0YXR1cz0idW5jaGFuZ2VkIj5BeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQ8aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+SmF2YQ0KLWJlYW5zPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PGluZGV4dGVybSBrZXlyZWY9InR3c2JlYW5hfDJ8V2Vic2VydmljZXNBeGlzcnVudGltZWVudmlyb25tZW50Y3JlYXRpbmdhV2Vic2VydmljZSINCi1zdGF0dXM9InVuY2hhbmdlZCI+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5BeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQ8aW5kZXh0ZXJtPmNyZWF0aW5nDQotYSBXZWIgc2VydmljZTwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwva2V5d29yZHM+DQotPC9tZXRhZGF0YT48L3Byb2xvZz4NCi08dGFza2JvZHk+DQotPHByZXJlcT48cD5QcmVyZXF1aXNpdGVzOjxvbD4NCi08bGkgaWQ9ImNyZWF0ZXRvbWNhdGxpbmsiPklmIHlvdSBhcmUgdXNpbmcgdGhlIEFwYWNoZSBKYWthcnRhIFRvbWNhdCBzZXJ2bGV0DQotY29udGFpbmVyIGFzIHlvdXIgc2VydmVyLCB5b3UgbXVzdCBpbnN0YWxsIGl0LCBjb25maWd1cmUgYW4gaW5zdGFuY2Ugb2YgaXQsDQotYW5kIGNyZWF0ZSBhIFdlYiBwcm9qZWN0IHRhcmdldGVkIHRvIGl0IGFzIGRlc2NyaWJlZCBpbiA8eHJlZiBocmVmPSJ0dG9tY2F0c2Vydi5kaXRhIg0KLXNjb3BlPSJsb2NhbCI+Q3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXIgYW5kIFdlYiBwcm9qZWN0PC94cmVmPjwvbGk+DQotPGxpPkNyZWF0ZSBvciBpbXBvcnQgYSBiZWFuIGludG8gdGhlIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIg0KLXRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IHNvdXJjZSBmb2xkZXIgb2YgdGhlIFdlYiBwcm9qZWN0LiBUbw0KLWltcG9ydCwgc2VsZWN0IHRoZSA8Yj5KYXZhIFJlc291cmNlczogc3JjPC9iPiBmb2xkZXIsIGFuZCBmcm9tIHRoZSBmaWxlIG1lbnUNCi1zZWxlY3QgPG1lbnVjYXNjYWRlPjx1aWNvbnRyb2w+SW1wb3J0PC91aWNvbnRyb2w+PHVpY29udHJvbD5HZW5lcmFsPC91aWNvbnRyb2w+DQotPHVpY29udHJvbD5GaWxlIFN5c3RlbTwvdWljb250cm9sPjwvbWVudWNhc2NhZGU+IGFuZCBicm93c2UgdG8gd2hlcmUgeW91cg0KLXBhY2thZ2UgaXMuPC9saT4NCi08L29sPjwvcD48L3ByZXJlcT4NCi08Y29udGV4dD5UbyBjcmVhdGUgYSBXZWIgc2VydmljZSBmcm9tIGEgYmVhbiB1c2luZyB0aGUgQXBhY2hlIEF4aXMxIHJ1bnRpbWUNCi1lbnZpcm9ubWVudDo8L2NvbnRleHQ+DQotPHN0ZXBzPg0KLTxzdGVwPjxjbWQ+U3dpdGNoIHRvIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlICg8dWljb250cm9sPldpbmRvdyA+IE9wZW4gUGVyc3BlY3RpdmUNCi0+IEphdmEgRUU8L3VpY29udHJvbD4pLjwvY21kPjwvc3RlcD4NCi08c3RlcD48Y21kPkluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIHZpZXcsIHNlbGVjdCB0aGUgYmVhbiB0aGF0IHlvdSBjcmVhdGVkDQotb3IgaW1wb3J0ZWQgaW50byB0aGUgc291cmNlIGZvbGRlciBvZiB5b3VyIFdlYiBwcm9qZWN0LjwvY21kPjwvc3RlcD4NCi08c3RlcD48Y21kPkNsaWNrICA8dWljb250cm9sPkZpbGUgPiBOZXcgPiBPdGhlcjwvdWljb250cm9sPi48L2NtZD48aW5mbz5TZWxlY3Q8dWljb250cm9sPldlYg0KLVNlcnZpY2VzPC91aWNvbnRyb2w+IGluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIHZhcmlvdXMgV2ViIHNlcnZpY2Ugd2l6YXJkcy4NCi1TZWxlY3QgdGhlICA8dWljb250cm9sPldlYiBTZXJ2aWNlPC91aWNvbnRyb2w+IHdpemFyZC4gQ2xpY2sgIDx1aWNvbnRyb2w+TmV4dDwvdWljb250cm9sPi48L2luZm8+DQotPC9zdGVwPg0KLTxzdGVwPjxjbWQ+V2ViIFNlcnZpY2VzIHBhZ2U6IHNlbGVjdCAgPHVpY29udHJvbD5Cb3R0b20gdXAgSmF2YSBiZWFuIFdlYiBzZXJ2aWNlPC91aWNvbnRyb2w+IGFzDQoteW91ciBXZWIgc2VydmljZSB0eXBlLCBhbmQgZW50ZXIgdGhlIFVSSSB0byB0aGUgV1NETCwgV1NJTCwgb3IgSFRNTCBmaWxlIHRoYXQNCi13aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHNlcnZpY2UuPC9jbWQ+DQotPHN1YnN0ZXBzIGlkPSJjcmVhdGVzdGVwNHVsIj4NCi08c3Vic3RlcD48Y21kPlNlbGVjdCB0aGUgc3RhZ2VzIG9mIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCB0aGF0IHlvdSB3YW50DQotdG8gY29tcGxldGUgdXNpbmcgdGhlIHNsaWRlcjo8L2NtZD48aW5mbz48dWw+DQotPGxpPkRldmVsb3A6IHRoaXMgd2lsbCBkZXZlbG9wIHRoZSBXU0RMIGRlZmluaXRpb24gYW5kIGltcGxlbWVudGF0aW9uIG9mIHRoZQ0KLVdlYiBzZXJ2aWNlLiBUaGlzIGluY2x1ZGVzIHN1Y2ggdGFza3MgYXMgY3JlYXRpbmcgdGhlIG1vZHVsZXMgd2hpY2ggd2lsbCBjb250YWluDQotdGhlIGdlbmVyYXRlZCBjb2RlLCBXU0RMIGZpbGVzLCBkZXBsb3ltZW50IGRlc2NyaXB0b3JzLCBhbmQgSmF2YSBmaWxlcyB3aGVuDQotYXBwcm9wcmlhdGUuPC9saT4NCi08bGk+QXNzZW1ibGU6IHRoaXMgZW5zdXJlcyB0aGUgcHJvamVjdCB0aGF0IHdpbGwgaG9zdCB0aGUgV2ViIHNlcnZpY2Ugb3IgY2xpZW50DQotZ2V0cyBhc3NvY2lhdGVkIHRvIGFuIEVBUiB3aGVuIHJlcXVpcmVkIGJ5IHRoZSB0YXJnZXQgYXBwbGljYXRpb24gc2VydmVyLjwvbGk+DQotPGxpPkRlcGxveTogdGhpcyB3aWxsIGNyZWF0ZSB0aGUgZGVwbG95bWVudCBjb2RlIGZvciB0aGUgc2VydmljZS48L2xpPg0KLTxsaT5JbnN0YWxsOiB0aGlzIHdpbGwgaW5zdGFsbCBhbmQgY29uZmlndXJlIHRoZSBXZWIgbW9kdWxlIGFuZCBFQVJzIG9uIHRoZQ0KLXRhcmdldCBzZXJ2ZXIuPC9saT4NCi08bGk+U3RhcnQ6IHRoaXMgd2lsbCBzdGFydCB0aGUgc2VydmVyIG9uY2UgdGhlIHNlcnZpY2UgaGFzIGJlZW4gaW5zdGFsbGVkDQotb24gaXQuIFRoZSBzZXJ2ZXItY29uZmlnLndzZGQgZmlsZSB3aWxsIGJlIGdlbmVyYXRlZC48L2xpPg0KLTxsaT5UZXN0OiB0aGlzIHdpbGwgcHJvdmlkZSB2YXJpb3VzIG9wdGlvbnMgZm9yIHRlc3RpbmcgdGhlIHNlcnZpY2UsIHN1Y2gNCi1hcyB1c2luZyB0aGUgV2ViIFNlcnZpY2UgRXhwbG9yZXIgb3Igc2FtcGxlIEpTUHMuPC9saT4NCi08L3VsPjwvaW5mbz48L3N1YnN0ZXA+DQotPHN1YnN0ZXA+PGNtZD5TZWxlY3QgeW91ciBzZXJ2ZXI6IHRoZSBkZWZhdWx0IHNlcnZlciBpcyBkaXNwbGF5ZWQuIElmIHlvdQ0KLXdhbnQgdG8gZGVwbG95IHlvdXIgc2VydmljZSB0byBhIGRpZmZlcmVudCBzZXJ2ZXIgY2xpY2sgdGhlIGxpbmsgdG8gc3BlY2lmeQ0KLWEgZGlmZmVyZW50IHNlcnZlci48L2NtZD48L3N1YnN0ZXA+DQotPHN1YnN0ZXA+PGNtZD5TZWxlY3QgeW91ciBydW50aW1lOiB0aGUgZGVmYXVsdCBydW50aW1lIGlzIGRpc3BsYXllZC4gSWYgeW91DQotd2FudCB0byBkZXBsb3kgeW91ciBzZXJ2aWNlIHRvIGEgZGlmZmVyZW50IHJ1bnRpbWUgY2xpY2sgdGhlIGxpbmsgdG8gc3BlY2lmeQ0KLWEgZGlmZmVyZW50IHJ1bnRpbWUuPC9jbWQ+PC9zdWJzdGVwPg0KLTxzdWJzdGVwPjxjbWQ+U2VsZWN0IHRoZSBzZXJ2aWNlIHByb2plY3Q6IHRoZSBwcm9qZWN0IGNvbnRhaW5pbmcgdGhlIHByb2plY3QNCi1zZWxlY3RlZCBpbiB5b3VyIHdvcmtzcGFjZSBpcyBkaXNwbGF5ZWQuIFRvIHNlbGVjdCBhIGRpZmZlcmVudCBwcm9qZWN0IGFuZA0KLUVBUiBjbGljayBvbiB0aGUgcHJvamVjdCBsaW5rLjwvY21kPjxpbmZvPkVuc3VyZSB0aGF0IHRoZSBwcm9qZWN0IHNlbGVjdGVkDQotYXMgdGhlIENsaWVudCBXZWIgUHJvamVjdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgU2VydmljZSBXZWIgUHJvamVjdCwgb3IgdGhlDQotc2VydmljZSB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBjbGllbnQncyBnZW5lcmF0ZWQgYXJ0aWZhY3RzLjwvaW5mbz48L3N1YnN0ZXA+DQotPHN1YnN0ZXA+PGNtZD5JZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBjbGllbnQsIHNlbGVjdCB0aGUgdHlwZSBvZiBwcm94eSB0bw0KLWJlIGdlbmVyYXRlZCBhbmQgcmVwZWF0IHRoZSBhYm92ZSBzdGVwcyBmb3IgdGhlIGNsaWVudC48L2NtZD48L3N1YnN0ZXA+DQotPHN1YnN0ZXA+PGNtZD5QdWJsaXNoIHRoZSBXZWIgc2VydmljZTogdGhpcyB3aWxsIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyDQotdG8gcHVibGlzaCB5b3VyIFdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeS48L2NtZD48L3N1YnN0ZXA+DQotPHN1YnN0ZXA+PGNtZD5Nb25pdG9yIHRoZSBXZWIgc2VydmljZTogdGhpcyB3aWxsIHNlbmQgdGhlIFdlYiBzZXJ2aWNlIHRyYWZmaWMNCi10aHJvdWdoIHRoZSBUQ1AvSVAgTW9uaXRvciwgd2hpY2ggYWxsb3dzIHlvdSB0byB3YXRjaCB0aGUgU09BUCB0cmFmZmljIGdlbmVyYXRlZA0KLWJ5IHRoZSBXZWIgc2VydmljZSBhbmQgdG8gdGVzdCB0aGlzIHRyYWZmaWMgZm9yIFdTLUkgY29tcGxpYW5jZS4gQWx0ZXJuYXRlbHkNCi15b3UgY2FuIG1hbnVhbGx5IHNldCB1cCBhIFRDUC9JUCBtb25pdG9yIGFzIGRlc2NyaWJlZCBpbiA8eHJlZiBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3Rtb25pdG9yLmRpdGEiDQotc2NvcGU9InBlZXIiPlVzaW5nIHRoZSBUQ1AvSVAgTW9uaXRvciB0byB0ZXN0IFdlYiBzZXJ2aWNlczwveHJlZj48L2NtZD48L3N1YnN0ZXA+DQotPC9zdWJzdGVwcz4NCi08L3N0ZXA+DQotPHN0ZXA+PGNtZD5XZWIgU2VydmljZSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiINCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBCZWFuIElkZW50aXR5IHBhZ2U6IHRoZSBXZWIgc2VydmljZQ0KLVdTREwgbmFtZSB3aWxsIGJlIGxpc3RlZC48L2NtZD48aW5mbz5Zb3UgaGF2ZSB0aGUgZm9sbG93aW5nIG9wdGlvbnM6PHVsPg0KLTxsaT5TZWxlY3QgdGhlIG1ldGhvZHMgdG8gZXhwb3NlLjwvbGk+DQotPGxpPlNlbGVjdCB0aGUgZW5jb2Rpbmcgc3R5bGUuIFJQQy9FbmNvZGVkIGlzIHRoZSByZWNvbW1lbmRlZCBlbmNvZGluZyBzdHlsZQ0KLWZvciB0aGUgQXhpcyBydW50aW1lIGVudmlyb25tZW50LiBUaGlzIGVuY29kaW5nIG1ldGhvZCBpcyBub3QgV1MtSSBjb21wbGlhbnQuPC9saT4NCi08bGk+U2VsZWN0IGlmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgcGFja2FnZSB0byBuYW1lc3BhY2UgbWFwcGluZ3MuPC9saT4NCi08L3VsPkNsaWNrICA8dWljb250cm9sPk5leHQ8L3VpY29udHJvbD48L2luZm8+PC9zdGVwPg0KLTxzdGVwPjxjbWQ+V2ViIFNlcnZpY2UgUGFja2FnZSB0byBOYW1lc3BhY2UgTWFwcGluZ3MgcGFnZTogaWYgeW91IHNlbGVjdGVkDQotIDx1aWNvbnRyb2w+RGVmaW5lIGN1c3RvbSBtYXBwaW5nIGZvciBwYWNrYWdlIHRvIG5hbWVzcGFjZTwvdWljb250cm9sPiBvbg0KLXRoZSBwcmV2aW91cyBwYW5lbCwgeW91IGNhbiBlbnRlciB5b3VyIGN1c3RvbSBtYXBwaW5nIHBhaXJzIG9uIHRoaXMgcGFuZWwNCi1ieSBjbGlja2luZyAgPHVpY29udHJvbD5BZGQ8L3VpY29udHJvbD4uIEFsdGVybmF0ZWx5LCB5b3UgY2FuIGNsaWNrICA8Yj5JbXBvcnQ8L2I+IHRvDQotaW1wb3J0IGN1c3RvbSBtYXBwaW5nIHBhaXJzIGZyb20gYSAgPHN5c3RlbW91dHB1dD4ucHJvcGVydGllczwvc3lzdGVtb3V0cHV0PiBmaWxlLg0KLVRoZSBjb250ZW50IG9mIHRoZSBwcm9wZXJ0aWVzIGZpbGUgbXVzdCBiZSBvZiB0aGUgZm9ybWF0ICA8Y29kZXBoPjx2YXJuYW1lPnBhY2thZ2U9bmFtZXNwYWNlPC92YXJuYW1lPjwvY29kZXBoPi4gPC9jbWQ+DQotPGluZm8+WW91IHdpbGwgbmVlZCB0byBlc2NhcGUgc29tZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIHByb3BlcnRpZXMgZmlsZXMuDQotIEZvciBleGFtcGxlIDxjb2RlcGg+c29tZVBhY2thZ2U9aHR0cDovL3NvbWVOYW1lc3BhY2U8L2NvZGVwaD4gc2hvdWxkIGJlIDxjb2RlcGg+c29tZVBhY2thZ2U9aHR0cFw6Ly9zb21lTmFtZXNwYWNlPC9jb2RlcGg+Lg0KLSBPdGhlcndpc2UsIHRoZSBjb2xvbiAoOikgd291bGQgYmUgdHJlYXRlZCBhcyBkZWxpbWl0ZXIgcmVzdWx0aW5nIGluIHRyeWluZw0KLXRvIG1hcCA8Y29kZXBoPnNvbWVwYWNrYWdlPC9jb2RlcGg+IHRvIDxjb2RlcGg+aHR0cDwvY29kZXBoPi48L2luZm8+PC9zdGVwPg0KLTxzdGVwPjxjbWQ+V2ViIFNlcnZpY2UgVGVzdCBwYWdlOiBJZiB5b3Ugc2VsZWN0ZWQgdG8gdGVzdCB0aGUgV2ViIHNlcnZpY2UsDQotc2VsZWN0IHRoZSB0ZXN0IGZhY2lsaXR5IGZvciB0aGUgZ2VuZXJhdGVkIFdlYiBzZXJ2aWNlLjwvY21kPjxpbmZvPlRoaXMgd2lsbA0KLW9wZW4gdGhlIFdlYiBzZXJ2aWNlIGluIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuIFNlbGVjdCB0aGUgb3BlcmF0aW9uIHlvdQ0KLXdhbnQgdG8gdGVzdCwgZW50ZXIgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uLCBhbmQgY2xpY2s8dWljb250cm9sPkdvPC91aWNvbnRyb2w+Lg0KLVRoZSByZXN1bHQgd2lsbCBkaXNwbGF5IGluIHRoZSBTdGF0dXMgcGFuZS4gQ2xpY2sgIDx1aWNvbnRyb2w+TmV4dDwvdWljb250cm9sPi48L2luZm8+DQotPC9zdGVwPg0KLTxzdGVwPjxjbWQ+V2ViIFNlcnZpY2UgUHJveHkgcGFnZTogaWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gZ2VuZXJhdGUgYSBwcm94eSwNCi1zZWxlY3QgaWYgeW91IHdhbnQgdG8gY3VzdG9taXplIHRoZSBwYWNrYWdlIHRvIG5hbWVzcGFjZSBtYXBwaW5ncy48L2NtZD48L3N0ZXA+DQotPHN0ZXA+PGNtZD5XZWIgU2VydmljZSBDbGllbnQgVGVzdCBwYWdlOiBVc2UgdGhpcyBwYWdlIHRvIHNlbGVjdCB0aGUgZm9sbG93aW5nDQotb3B0aW9uczogPC9jbWQ+DQotPHN1YnN0ZXBzPg0KLTxzdWJzdGVwPjxjbWQ+U2VsZWN0IHlvdXIgdGVzdCBmYWNpbGl0eS4gWW91IGNhbiB0ZXN0IHRoZSBnZW5lcmF0ZWQgcHJveHkNCi1pbiB0aGUgV2ViIFNlcnZpY2UgRXhwbG9yZXIsIG9yIHlvdSBjYW4gZ2VuZXJhdGUgYSBzYW1wbGUgV2ViIHNlcnZpY2UgSlNQLjwvY21kPg0KLTwvc3Vic3RlcD4NCi08c3Vic3RlcD48Y21kPklmIHlvdSBzZWxlY3RlZCB0byB0ZXN0IHRoZSBwcm94eSB0aHJvdWdoIGEgSlNQLCB5b3UgY2FuIHNlbGVjdA0KLXRoZSBmb2xkZXIgd2hlcmUgdGhlIEpTUCB3aWxsIGJlIGxvY2F0ZWQsIGFuZCB5b3UgY2FuIHNlbGVjdCB0aGUgbWV0aG9kcyB0aGF0DQotd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgSlNQLjwvY21kPjwvc3Vic3RlcD4NCi08c3Vic3RlcD48Y21kPlNlbGVjdCAgPHVpY29udHJvbD5SdW4gdGVzdCBvbiBzZXJ2ZXI8L3VpY29udHJvbD4gdG8gc3RhcnQgdGhlDQotc2VydmVyIGZvciB5b3UgYXV0b21hdGljYWxseS48L2NtZD48L3N1YnN0ZXA+DQotPC9zdWJzdGVwcz4NCi08L3N0ZXA+DQotPHN0ZXA+PGNtZD5XZWIgU2VydmljZSBQdWJsaWNhdGlvbiBwYWdlOiBTZWxlY3Qgd2hldGhlciBvciBub3QgeW91IHdhbnQgdG8NCi1wdWJsaXNoIHRoaXMgV2ViIHNlcnZpY2UgdG8gYSBVRERJIHJlZ2lzdHJ5LiBDbGljayA8dWljb250cm9sPkZpbmlzaDwvdWljb250cm9sPi4mbmJzcDs8L2NtZD4NCi08aW5mbz5Ob3RlOiB5b3UgbWF5IHNlZSBhIHdhcm5pbmcgc3RhdGluZyA8Y29kZXBoPkVycm9yIGluIGdlbmVyYXRpbmcgV1NETA0KLWZyb20gSmF2YS4gQ2xhc3NOb3RGb3VuZDogJmx0O2JlYW4gbmFtZT48L2NvZGVwaD4uIFRoaXMgZXJyb3IgY2FuIGJlIHNhZmVseQ0KLWlnbm9yZWQuPC9pbmZvPjwvc3RlcD4NCi08L3N0ZXBzPg0KLTxyZXN1bHQgaWQ9ImF4aXN3c2NyZWF0ZXJlc3VsdCI+PHA+QWZ0ZXIgdGhlIFdlYiBzZXJ2aWNlIGhhcyBiZWVuIGNyZWF0ZWQsDQotdGhlIGZvbGxvd2luZyBtYXkgb2NjdXIgZGVwZW5kaW5nIG9uIHRoZSBvcHRpb25zIHlvdSBzZWxlY3RlZDogPHVsPg0KLTxsaT5JZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byB0ZXN0IHRoZSBnZW5lcmF0ZWQgcHJveHkgdXNpbmcgV2ViIHNlcnZpY2UgSlNQcywNCi10aGUgcHJveHkgaXMgbGF1bmNoZWQgaW4gYSBXZWIgYnJvd3NlciBhdCB0aGUgZm9sbG93aW5nIFVSTDogaHR0cDovL2xvY2FsaG9zdDogPHZhcm5hbWU+cG9ydDwvdmFybmFtZT4vIDx2YXJuYW1lPldlYlByb2plY3Q8L3Zhcm5hbWU+Q2xpZW50L3NhbXBsZTxpDQotPkJlYW5OYW1lPC9pPi8gPHZhcm5hbWU+V2ViU2VydmljZU5hbWU8L3Zhcm5hbWU+L1Rlc3RDbGllbnQuanNwIFlvdSBjYW4gdXNlDQotdGhpcyBzYW1wbGUgYXBwbGljYXRpb24gdG8gdGVzdCB0aGUgV2ViIHNlcnZpY2UgYnkgc2VsZWN0aW5nIGEgbWV0aG9kLCBlbnRlcmluZw0KLWEgdmFsdWUgZm9yIHRoZSBtZXRob2QsIGFuZCBjbGlja2luZyAgPHVpY29udHJvbD5JbnZva2U8L3VpY29udHJvbD4uIFRoZSByZXN1bHQNCi1vZiB0aGUgbWV0aG9kIHdpbGwgZGlzcGxheSBpbiB0aGUgcmVzdWx0cyBwYW5lLjwvbGk+DQotPGxpPklmIHlvdSBoYXZlIHNlbGVjdGVkIHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIsDQotdGhlIEV4cGxvcmVyIHdpbGwgb3Blbi4gU2VsZWN0IHRoZSBvcGVyYXRpb24geW91IHdhbnQgdG8gdGVzdCwgZW50ZXIgdGhlIHJlcXVpcmVkDQotaW5mb3JtYXRpb24sIGFuZCBjbGljayAgPGI+R288L2I+LiBUaGUgcmVzdWx0IHdpbGwgZGlzcGxheSBpbiB0aGUgU3RhdHVzIHBhbmUuPC9saT4NCi08bGk+SWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gcHVibGlzaCB0aGUgV2ViIHNlcnZpY2UsIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXINCi1pcyBsYXVuY2hlZCBkaXNwbGF5aW5nIHRoZSBwYWdlIHJlcXVpcmVkIHRvIHB1Ymxpc2ggeW91ciBXZWIgc2VydmljZS4gRm9sbG93DQotdGhlIGluc3RydWN0aW9ucyBpbiAgPHZhcm5hbWU+UHVibGlzaGluZyB0aGUgV2ViIHNlcnZpY2U8L3Zhcm5hbWU+IHRvIGNvbXBsZXRlDQotdGhpcyB0YXNrLjwvbGk+DQotPC91bD48L3A+PC9yZXN1bHQ+DQotPHBvc3RyZXE+PHA+IDx1aWNvbnRyb2w+SW1wb3J0YW50OjwvdWljb250cm9sPiBJZiB5b3VyIG1ldGhvZHMgY29udGFpbiB0eXBlcywNCi1ub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzYW1wbGUsIHN1Y2ggYXMgYXJyYXlzLCBpbmRleGVkIHByb3BlcnRpZXMsIGFuZCBjb2xsZWN0aW9ucywNCi10aGUgbWV0aG9kcyB3aWxsIGJlIG9taXR0ZWQgZnJvbSB0aGUgc2FtcGxlIGFuZCB5b3Ugd2lsbCByZWNlaXZlIGEgd2FybmluZw0KLW1lc3NhZ2UuPC9wPjwvcG9zdHJlcT4NCi08L3Rhc2tib2R5Pg0KLTxyZWxhdGVkLWxpbmtzPg0KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+DQotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmRpdGEiIHNjb3BlPSJwZWVyIj4NCi08bGlua3RleHQ+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4NCi08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEiIHNjb3BlPSJwZWVyIj4NCi08bGlua3RleHQ+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+DQotPC9saW5rbGlzdD4NCi08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPg0KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci90YXNrcy90b3ZlcndzLmRpdGEiIHNjb3BlPSJwZWVyIj4NCi08bGlua3RleHQ+IERldmVsb3BpbmcgV2ViIHNlcnZpY2VzPC9saW5rdGV4dD48L2xpbms+DQotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1ZGRpZXhwLmRpdGEiDQotc2NvcGU9InBlZXIiPjxsaW5rdGV4dD4gVXNpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvbGlua3RleHQ+PC9saW5rPg0KLTwvbGlua2xpc3Q+DQotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFJlZmVyZW5jZTwvdGl0bGU+DQotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yd3NkbC5kaXRhIiBzY29wZT0icGVlciI+DQotPGxpbmt0ZXh0PldTREwgZG9jdW1lbnRzPC9saW5rdGV4dD48L2xpbms+DQotPC9saW5rbGlzdD4NCi08L3JlbGF0ZWQtbGlua3M+DQotPC90YXNrPg0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3R3c2JlYW5hLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90d3NiZWFuYS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTI0MjdiLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3R3c2JlYW5hLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iQ3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIHVzaW5nIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZSBlbnZpcm9ubWVudCIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgV2ViIFNlcnZpY2Ugd2l6YXJkIGFzc2lzdHMgeW91IGluIGNyZWF0aW5nIGEgbmV3IFdlYiBzZXJ2aWNlLCBjb25maWd1cmluZyBpdCBmb3IgZGVwbG95bWVudCwgYW5kIGRlcGxveWluZyB0aGUgV2ViIHNlcnZpY2UgdG8gYSBzZXJ2ZXIuIE9uY2UgeW91ciBXZWIgc2VydmljZSBpcyBkZXBsb3llZCwgdGhlIHdpemFyZCBhc3Npc3RzIHlvdSBpbiBnZW5lcmF0aW5nIHRoZSBjbGllbnQgcHJveHkgYW5kIHNhbXBsZSBhcHBsaWNhdGlvbiB0byB0ZXN0IHRoZSBXZWIgc2VydmljZS4gV2hlbiB5b3UgaGF2ZSBjb21wbGV0ZWQgdGVzdGluZywgeW91IGNhbiBwdWJsaXNoIHlvdXIgV2ViIHNlcnZpY2UgdG8gYSBVRERJIEJ1c2luZXNzIFJlZ2lzdHJ5IHVzaW5nIHRoZSBFeHBvcnQgd2l6YXJkLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGUgV2ViIFNlcnZpY2Ugd2l6YXJkIGFzc2lzdHMgeW91IGluIGNyZWF0aW5nIGEgbmV3IFdlYiBzZXJ2aWNlLCBjb25maWd1cmluZyBpdCBmb3IgZGVwbG95bWVudCwgYW5kIGRlcGxveWluZyB0aGUgV2ViIHNlcnZpY2UgdG8gYSBzZXJ2ZXIuIE9uY2UgeW91ciBXZWIgc2VydmljZSBpcyBkZXBsb3llZCwgdGhlIHdpemFyZCBhc3Npc3RzIHlvdSBpbiBnZW5lcmF0aW5nIHRoZSBjbGllbnQgcHJveHkgYW5kIHNhbXBsZSBhcHBsaWNhdGlvbiB0byB0ZXN0IHRoZSBXZWIgc2VydmljZS4gV2hlbiB5b3UgaGF2ZSBjb21wbGV0ZWQgdGVzdGluZywgeW91IGNhbiBwdWJsaXNoIHlvdXIgV2ViIHNlcnZpY2UgdG8gYSBVRERJIEJ1c2luZXNzIFJlZ2lzdHJ5IHVzaW5nIHRoZSBFeHBvcnQgd2l6YXJkLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IkF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgV2ViIHNlcnZpY2VzLCBKYXZhIGJlYW5zLCBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iQXhpcyBydW50aW1lIGVudmlyb25tZW50LCBXZWIgc2VydmljZXMsIEphdmEgYmVhbnMsIGNyZWF0aW5nIGEgV2ViIHNlcnZpY2UiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90b3BpY3MvY2F4aXN0b3Zlci5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVkZGlleHAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yd3NkbC5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InR3c2JlYW5hIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIHVzaW5nIHRoZSBBcGFjaGUgQXhpczEKLXJ1bnRpbWUgZW52aXJvbm1lbnQ8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InR3c2JlYW5hIj48YSBuYW1lPSJ0d3NiZWFuYSI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIHVzaW5nIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZQotZW52aXJvbm1lbnQ8L2gxPgotCi0KLQotCi08ZGl2PjxwPlRoZSBXZWIgU2VydmljZSB3aXphcmQgYXNzaXN0cyB5b3UgaW4gY3JlYXRpbmcgYSBuZXcgV2ViIHNlcnZpY2UsCi1jb25maWd1cmluZyBpdCBmb3IgZGVwbG95bWVudCwgYW5kIGRlcGxveWluZyB0aGUgV2ViIHNlcnZpY2UgdG8gYSBzZXJ2ZXIuCi1PbmNlIHlvdXIgV2ViIHNlcnZpY2UgaXMgZGVwbG95ZWQsIHRoZSB3aXphcmQgYXNzaXN0cyB5b3UgaW4gZ2VuZXJhdGluZyB0aGUKLWNsaWVudCBwcm94eSBhbmQgc2FtcGxlIGFwcGxpY2F0aW9uIHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlLiBXaGVuIHlvdSBoYXZlCi1jb21wbGV0ZWQgdGVzdGluZywgeW91IGNhbiBwdWJsaXNoIHlvdXIgV2ViIHNlcnZpY2UgdG8gYSBVRERJIEJ1c2luZXNzIFJlZ2lzdHJ5Ci11c2luZyB0aGUgRXhwb3J0IHdpemFyZC48L3A+Ci0KLTxkaXYgY2xhc3M9InAiPjxkaXYgY2xhc3M9InAiPlByZXJlcXVpc2l0ZXM6PG9sPgotPGxpIGlkPSJ0d3NiZWFuYV9fY3JlYXRldG9tY2F0bGluayI+PGEgbmFtZT0idHdzYmVhbmFfX2NyZWF0ZXRvbWNhdGxpbmsiPjwhLS0gLS0+PC9hPklmIHlvdSBhcmUgdXNpbmcgdGhlIEFwYWNoZSBKYWthcnRhIFRvbWNhdCBzZXJ2bGV0Ci1jb250YWluZXIgYXMgeW91ciBzZXJ2ZXIsIHlvdSBtdXN0IGluc3RhbGwgaXQsIGNvbmZpZ3VyZSBhbiBpbnN0YW5jZSBvZiBpdCwKLWFuZCBjcmVhdGUgYSBXZWIgcHJvamVjdCB0YXJnZXRlZCB0byBpdCBhcyBkZXNjcmliZWQgaW4gPGEgaHJlZj0idHRvbWNhdHNlcnYuaHRtbCI+Q3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXIgYW5kIFdlYiBwcm9qZWN0PC9hPjwvbGk+Ci0KLTxsaT5DcmVhdGUgb3IgaW1wb3J0IGEgYmVhbiBpbnRvIHRoZSBKYXZh4oSiIHNvdXJjZSBmb2xkZXIgb2YgdGhlIFdlYiBwcm9qZWN0LiBUbwotaW1wb3J0LCBzZWxlY3QgdGhlIDxzdHJvbmc+SmF2YSBSZXNvdXJjZXM6IHNyYzwvc3Ryb25nPiBmb2xkZXIsIGFuZCBmcm9tIHRoZSBmaWxlIG1lbnUKLXNlbGVjdCA8c3BhbiBjbGFzcz0ibWVudWNhc2NhZGUiPjxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkltcG9ydDwvc3Bhbj4gJmd0OyA8c3BhbiBjbGFzcz0idWljb250cm9sIj5HZW5lcmFsPC9zcGFuPgotICZndDsgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmlsZSBTeXN0ZW08L3NwYW4+PC9zcGFuPiBhbmQgYnJvd3NlIHRvIHdoZXJlIHlvdXIKLXBhY2thZ2UgaXMuPC9saT4KLQotPC9vbD4KLTwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPlRvIGNyZWF0ZSBhIFdlYiBzZXJ2aWNlIGZyb20gYSBiZWFuIHVzaW5nIHRoZSBBcGFjaGUgQXhpczEgcnVudGltZQotZW52aXJvbm1lbnQ6PC9kaXY+Ci0KLTxvbD4KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+U3dpdGNoIHRvIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlICg8c3BhbiBjbGFzcz0idWljb250cm9sIj5XaW5kb3cgJmd0OyBPcGVuIFBlcnNwZWN0aXZlCi0mZ3Q7IEphdmEgRUU8L3NwYW4+KS48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgUHJvamVjdCBFeHBsb3JlciB2aWV3LCBzZWxlY3QgdGhlIGJlYW4gdGhhdCB5b3UgY3JlYXRlZAotb3IgaW1wb3J0ZWQgaW50byB0aGUgc291cmNlIGZvbGRlciBvZiB5b3VyIFdlYiBwcm9qZWN0Ljwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkNsaWNrICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5GaWxlICZndDsgTmV3ICZndDsgT3RoZXI8L3NwYW4+Ljwvc3Bhbj4gU2VsZWN0PHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViCi1TZXJ2aWNlczwvc3Bhbj4gaW4gb3JkZXIgdG8gZGlzcGxheSB0aGUgdmFyaW91cyBXZWIgc2VydmljZSB3aXphcmRzLgotU2VsZWN0IHRoZSAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViIFNlcnZpY2U8L3NwYW4+IHdpemFyZC4gQ2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+LgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZXMgcGFnZTogc2VsZWN0ICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Cb3R0b20gdXAgSmF2YSBiZWFuIFdlYiBzZXJ2aWNlPC9zcGFuPiBhcwoteW91ciBXZWIgc2VydmljZSB0eXBlLCBhbmQgZW50ZXIgdGhlIFVSSSB0byB0aGUgV1NETCwgV1NJTCwgb3IgSFRNTCBmaWxlIHRoYXQKLXdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgc2VydmljZS48L3NwYW4+Ci08YSBuYW1lPSJ0d3NiZWFuYV9fY3JlYXRlc3RlcDR1bCI+PCEtLSAtLT48L2E+PG9sIHR5cGU9ImEiIGlkPSJ0d3NiZWFuYV9fY3JlYXRlc3RlcDR1bCI+Ci08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB0aGUgc3RhZ2VzIG9mIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCB0aGF0IHlvdSB3YW50Ci10byBjb21wbGV0ZSB1c2luZyB0aGUgc2xpZGVyOjwvc3Bhbj4gPHVsPgotPGxpPkRldmVsb3A6IHRoaXMgd2lsbCBkZXZlbG9wIHRoZSBXU0RMIGRlZmluaXRpb24gYW5kIGltcGxlbWVudGF0aW9uIG9mIHRoZQotV2ViIHNlcnZpY2UuIFRoaXMgaW5jbHVkZXMgc3VjaCB0YXNrcyBhcyBjcmVhdGluZyB0aGUgbW9kdWxlcyB3aGljaCB3aWxsIGNvbnRhaW4KLXRoZSBnZW5lcmF0ZWQgY29kZSwgV1NETCBmaWxlcywgZGVwbG95bWVudCBkZXNjcmlwdG9ycywgYW5kIEphdmEgZmlsZXMgd2hlbgotYXBwcm9wcmlhdGUuPC9saT4KLQotPGxpPkFzc2VtYmxlOiB0aGlzIGVuc3VyZXMgdGhlIHByb2plY3QgdGhhdCB3aWxsIGhvc3QgdGhlIFdlYiBzZXJ2aWNlIG9yIGNsaWVudAotZ2V0cyBhc3NvY2lhdGVkIHRvIGFuIEVBUiB3aGVuIHJlcXVpcmVkIGJ5IHRoZSB0YXJnZXQgYXBwbGljYXRpb24gc2VydmVyLjwvbGk+Ci0KLTxsaT5EZXBsb3k6IHRoaXMgd2lsbCBjcmVhdGUgdGhlIGRlcGxveW1lbnQgY29kZSBmb3IgdGhlIHNlcnZpY2UuPC9saT4KLQotPGxpPkluc3RhbGw6IHRoaXMgd2lsbCBpbnN0YWxsIGFuZCBjb25maWd1cmUgdGhlIFdlYiBtb2R1bGUgYW5kIEVBUnMgb24gdGhlCi10YXJnZXQgc2VydmVyLjwvbGk+Ci0KLTxsaT5TdGFydDogdGhpcyB3aWxsIHN0YXJ0IHRoZSBzZXJ2ZXIgb25jZSB0aGUgc2VydmljZSBoYXMgYmVlbiBpbnN0YWxsZWQKLW9uIGl0LiBUaGUgc2VydmVyLWNvbmZpZy53c2RkIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuPC9saT4KLQotPGxpPlRlc3Q6IHRoaXMgd2lsbCBwcm92aWRlIHZhcmlvdXMgb3B0aW9ucyBmb3IgdGVzdGluZyB0aGUgc2VydmljZSwgc3VjaAotYXMgdXNpbmcgdGhlIFdlYiBTZXJ2aWNlIEV4cGxvcmVyIG9yIHNhbXBsZSBKU1BzLjwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB5b3VyIHNlcnZlcjogdGhlIGRlZmF1bHQgc2VydmVyIGlzIGRpc3BsYXllZC4gSWYgeW91Ci13YW50IHRvIGRlcGxveSB5b3VyIHNlcnZpY2UgdG8gYSBkaWZmZXJlbnQgc2VydmVyIGNsaWNrIHRoZSBsaW5rIHRvIHNwZWNpZnkKLWEgZGlmZmVyZW50IHNlcnZlci48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj5TZWxlY3QgeW91ciBydW50aW1lOiB0aGUgZGVmYXVsdCBydW50aW1lIGlzIGRpc3BsYXllZC4gSWYgeW91Ci13YW50IHRvIGRlcGxveSB5b3VyIHNlcnZpY2UgdG8gYSBkaWZmZXJlbnQgcnVudGltZSBjbGljayB0aGUgbGluayB0byBzcGVjaWZ5Ci1hIGRpZmZlcmVudCBydW50aW1lLjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB0aGUgc2VydmljZSBwcm9qZWN0OiB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBwcm9qZWN0Ci1zZWxlY3RlZCBpbiB5b3VyIHdvcmtzcGFjZSBpcyBkaXNwbGF5ZWQuIFRvIHNlbGVjdCBhIGRpZmZlcmVudCBwcm9qZWN0IGFuZAotRUFSIGNsaWNrIG9uIHRoZSBwcm9qZWN0IGxpbmsuPC9zcGFuPiBFbnN1cmUgdGhhdCB0aGUgcHJvamVjdCBzZWxlY3RlZAotYXMgdGhlIENsaWVudCBXZWIgUHJvamVjdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgU2VydmljZSBXZWIgUHJvamVjdCwgb3IgdGhlCi1zZXJ2aWNlIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGNsaWVudCdzIGdlbmVyYXRlZCBhcnRpZmFjdHMuPC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj5JZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBjbGllbnQsIHNlbGVjdCB0aGUgdHlwZSBvZiBwcm94eSB0bwotYmUgZ2VuZXJhdGVkIGFuZCByZXBlYXQgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUgY2xpZW50Ljwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlB1Ymxpc2ggdGhlIFdlYiBzZXJ2aWNlOiB0aGlzIHdpbGwgbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIKLXRvIHB1Ymxpc2ggeW91ciBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnkuPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3Vic3RlcGV4cGFuZCI+PHNwYW4+TW9uaXRvciB0aGUgV2ViIHNlcnZpY2U6IHRoaXMgd2lsbCBzZW5kIHRoZSBXZWIgc2VydmljZSB0cmFmZmljCi10aHJvdWdoIHRoZSBUQ1AvSVAgTW9uaXRvciwgd2hpY2ggYWxsb3dzIHlvdSB0byB3YXRjaCB0aGUgU09BUCB0cmFmZmljIGdlbmVyYXRlZAotYnkgdGhlIFdlYiBzZXJ2aWNlIGFuZCB0byB0ZXN0IHRoaXMgdHJhZmZpYyBmb3IgV1MtSSBjb21wbGlhbmNlLiBBbHRlcm5hdGVseQoteW91IGNhbiBtYW51YWxseSBzZXQgdXAgYSBUQ1AvSVAgbW9uaXRvciBhcyBkZXNjcmliZWQgaW4gPGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90bW9uaXRvci5odG1sIj5Vc2luZyB0aGUgVENQL0lQIE1vbml0b3IgdG8gdGVzdCBXZWIgc2VydmljZXM8L2E+PC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+V2ViIFNlcnZpY2UgSmF2YSBCZWFuIElkZW50aXR5IHBhZ2U6IHRoZSBXZWIgc2VydmljZQotV1NETCBuYW1lIHdpbGwgYmUgbGlzdGVkLjwvc3Bhbj4gWW91IGhhdmUgdGhlIGZvbGxvd2luZyBvcHRpb25zOjx1bD4KLTxsaT5TZWxlY3QgdGhlIG1ldGhvZHMgdG8gZXhwb3NlLjwvbGk+Ci0KLTxsaT5TZWxlY3QgdGhlIGVuY29kaW5nIHN0eWxlLiBSUEMvRW5jb2RlZCBpcyB0aGUgcmVjb21tZW5kZWQgZW5jb2Rpbmcgc3R5bGUKLWZvciB0aGUgQXhpcyBydW50aW1lIGVudmlyb25tZW50LiBUaGlzIGVuY29kaW5nIG1ldGhvZCBpcyBub3QgV1MtSSBjb21wbGlhbnQuPC9saT4KLQotPGxpPlNlbGVjdCBpZiB5b3Ugd2FudCB0byBjdXN0b21pemUgdGhlIHBhY2thZ2UgdG8gbmFtZXNwYWNlIG1hcHBpbmdzLjwvbGk+Ci0KLTwvdWw+Ci1DbGljayAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV4dDwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPldlYiBTZXJ2aWNlIFBhY2thZ2UgdG8gTmFtZXNwYWNlIE1hcHBpbmdzIHBhZ2U6IGlmIHlvdSBzZWxlY3RlZAotIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRlZmluZSBjdXN0b20gbWFwcGluZyBmb3IgcGFja2FnZSB0byBuYW1lc3BhY2U8L3NwYW4+IG9uCi10aGUgcHJldmlvdXMgcGFuZWwsIHlvdSBjYW4gZW50ZXIgeW91ciBjdXN0b20gbWFwcGluZyBwYWlycyBvbiB0aGlzIHBhbmVsCi1ieSBjbGlja2luZyAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWRkPC9zcGFuPi4gQWx0ZXJuYXRlbHksIHlvdSBjYW4gY2xpY2sgIDxzdHJvbmc+SW1wb3J0PC9zdHJvbmc+IHRvCi1pbXBvcnQgY3VzdG9tIG1hcHBpbmcgcGFpcnMgZnJvbSBhICA8dHQgY2xhc3M9InN5c291dCI+LnByb3BlcnRpZXM8L3R0PiBmaWxlLgotVGhlIGNvbnRlbnQgb2YgdGhlIHByb3BlcnRpZXMgZmlsZSBtdXN0IGJlIG9mIHRoZSBmb3JtYXQgIDxzYW1wIGNsYXNzPSJjb2RlcGgiPjx2YXIgY2xhc3M9InZhcm5hbWUiPnBhY2thZ2U9bmFtZXNwYWNlPC92YXI+PC9zYW1wPi4gPC9zcGFuPgotIFlvdSB3aWxsIG5lZWQgdG8gZXNjYXBlIHNvbWUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSBwcm9wZXJ0aWVzIGZpbGVzLgotIEZvciBleGFtcGxlIDxzYW1wIGNsYXNzPSJjb2RlcGgiPnNvbWVQYWNrYWdlPWh0dHA6Ly9zb21lTmFtZXNwYWNlPC9zYW1wPiBzaG91bGQgYmUgPHNhbXAgY2xhc3M9ImNvZGVwaCI+c29tZVBhY2thZ2U9aHR0cFw6Ly9zb21lTmFtZXNwYWNlPC9zYW1wPi4KLSBPdGhlcndpc2UsIHRoZSBjb2xvbiAoOikgd291bGQgYmUgdHJlYXRlZCBhcyBkZWxpbWl0ZXIgcmVzdWx0aW5nIGluIHRyeWluZwotdG8gbWFwIDxzYW1wIGNsYXNzPSJjb2RlcGgiPnNvbWVQYWNrYWdlPC9zYW1wPiB0byA8c2FtcCBjbGFzcz0iY29kZXBoIj5odHRwPC9zYW1wPi4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+V2ViIFNlcnZpY2UgVGVzdCBwYWdlOiBJZiB5b3Ugc2VsZWN0ZWQgdG8gdGVzdCB0aGUgV2ViIHNlcnZpY2UsCi1zZWxlY3QgdGhlIHRlc3QgZmFjaWxpdHkgZm9yIHRoZSBnZW5lcmF0ZWQgV2ViIHNlcnZpY2UuPC9zcGFuPiBUaGlzIHdpbGwKLW9wZW4gdGhlIFdlYiBzZXJ2aWNlIGluIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuIFNlbGVjdCB0aGUgb3BlcmF0aW9uIHlvdQotd2FudCB0byB0ZXN0LCBlbnRlciB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24sIGFuZCBjbGljazxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkdvPC9zcGFuPi4KLVRoZSByZXN1bHQgd2lsbCBkaXNwbGF5IGluIHRoZSBTdGF0dXMgcGFuZS4gQ2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+LgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZSBQcm94eSBwYWdlOiBpZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byBnZW5lcmF0ZSBhIHByb3h5LAotc2VsZWN0IGlmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgcGFja2FnZSB0byBuYW1lc3BhY2UgbWFwcGluZ3MuPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+V2ViIFNlcnZpY2UgQ2xpZW50IFRlc3QgcGFnZTogVXNlIHRoaXMgcGFnZSB0byBzZWxlY3QgdGhlIGZvbGxvd2luZwotb3B0aW9uczogPC9zcGFuPgotPG9sIHR5cGU9ImEiPgotPGxpPjxzcGFuPlNlbGVjdCB5b3VyIHRlc3QgZmFjaWxpdHkuIFlvdSBjYW4gdGVzdCB0aGUgZ2VuZXJhdGVkIHByb3h5Ci1pbiB0aGUgV2ViIFNlcnZpY2UgRXhwbG9yZXIsIG9yIHlvdSBjYW4gZ2VuZXJhdGUgYSBzYW1wbGUgV2ViIHNlcnZpY2UgSlNQLjwvc3Bhbj4KLTwvbGk+Ci0KLTxsaT48c3Bhbj5JZiB5b3Ugc2VsZWN0ZWQgdG8gdGVzdCB0aGUgcHJveHkgdGhyb3VnaCBhIEpTUCwgeW91IGNhbiBzZWxlY3QKLXRoZSBmb2xkZXIgd2hlcmUgdGhlIEpTUCB3aWxsIGJlIGxvY2F0ZWQsIGFuZCB5b3UgY2FuIHNlbGVjdCB0aGUgbWV0aG9kcyB0aGF0Ci13aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBKU1AuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5TZWxlY3QgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlJ1biB0ZXN0IG9uIHNlcnZlcjwvc3Bhbj4gdG8gc3RhcnQgdGhlCi1zZXJ2ZXIgZm9yIHlvdSBhdXRvbWF0aWNhbGx5Ljwvc3Bhbj48L2xpPgotCi08L29sPgotCi08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPldlYiBTZXJ2aWNlIFB1YmxpY2F0aW9uIHBhZ2U6IFNlbGVjdCB3aGV0aGVyIG9yIG5vdCB5b3Ugd2FudCB0bwotcHVibGlzaCB0aGlzIFdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeS4gQ2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluaXNoPC9zcGFuPi7CoDwvc3Bhbj4KLSBOb3RlOiB5b3UgbWF5IHNlZSBhIHdhcm5pbmcgc3RhdGluZyA8c2FtcCBjbGFzcz0iY29kZXBoIj5FcnJvciBpbiBnZW5lcmF0aW5nIFdTREwKLWZyb20gSmF2YS4gQ2xhc3NOb3RGb3VuZDogJmx0O2JlYW4gbmFtZSZndDs8L3NhbXA+LiBUaGlzIGVycm9yIGNhbiBiZSBzYWZlbHkKLWlnbm9yZWQuPC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiIgaWQ9InR3c2JlYW5hX19heGlzd3NjcmVhdGVyZXN1bHQiPjxhIG5hbWU9InR3c2JlYW5hX19heGlzd3NjcmVhdGVyZXN1bHQiPjwhLS0gLS0+PC9hPjxkaXYgY2xhc3M9InAiPkFmdGVyIHRoZSBXZWIgc2VydmljZSBoYXMgYmVlbiBjcmVhdGVkLAotdGhlIGZvbGxvd2luZyBtYXkgb2NjdXIgZGVwZW5kaW5nIG9uIHRoZSBvcHRpb25zIHlvdSBzZWxlY3RlZDogPHVsPgotPGxpPklmIHlvdSBoYXZlIHNlbGVjdGVkIHRvIHRlc3QgdGhlIGdlbmVyYXRlZCBwcm94eSB1c2luZyBXZWIgc2VydmljZSBKU1BzLAotdGhlIHByb3h5IGlzIGxhdW5jaGVkIGluIGEgV2ViIGJyb3dzZXIgYXQgdGhlIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly9sb2NhbGhvc3Q6IDx2YXIgY2xhc3M9InZhcm5hbWUiPnBvcnQ8L3Zhcj4vIDx2YXIgY2xhc3M9InZhcm5hbWUiPldlYlByb2plY3Q8L3Zhcj5DbGllbnQvc2FtcGxlPGVtPkJlYW5OYW1lPC9lbT4vIDx2YXIgY2xhc3M9InZhcm5hbWUiPldlYlNlcnZpY2VOYW1lPC92YXI+L1Rlc3RDbGllbnQuanNwIFlvdSBjYW4gdXNlCi10aGlzIHNhbXBsZSBhcHBsaWNhdGlvbiB0byB0ZXN0IHRoZSBXZWIgc2VydmljZSBieSBzZWxlY3RpbmcgYSBtZXRob2QsIGVudGVyaW5nCi1hIHZhbHVlIGZvciB0aGUgbWV0aG9kLCBhbmQgY2xpY2tpbmcgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkludm9rZTwvc3Bhbj4uIFRoZSByZXN1bHQKLW9mIHRoZSBtZXRob2Qgd2lsbCBkaXNwbGF5IGluIHRoZSByZXN1bHRzIHBhbmUuPC9saT4KLQotPGxpPklmIHlvdSBoYXZlIHNlbGVjdGVkIHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIsCi10aGUgRXhwbG9yZXIgd2lsbCBvcGVuLiBTZWxlY3QgdGhlIG9wZXJhdGlvbiB5b3Ugd2FudCB0byB0ZXN0LCBlbnRlciB0aGUgcmVxdWlyZWQKLWluZm9ybWF0aW9uLCBhbmQgY2xpY2sgIDxzdHJvbmc+R288L3N0cm9uZz4uIFRoZSByZXN1bHQgd2lsbCBkaXNwbGF5IGluIHRoZSBTdGF0dXMgcGFuZS48L2xpPgotCi08bGk+SWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gcHVibGlzaCB0aGUgV2ViIHNlcnZpY2UsIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIKLWlzIGxhdW5jaGVkIGRpc3BsYXlpbmcgdGhlIHBhZ2UgcmVxdWlyZWQgdG8gcHVibGlzaCB5b3VyIFdlYiBzZXJ2aWNlLiBGb2xsb3cKLXRoZSBpbnN0cnVjdGlvbnMgaW4gIDx2YXIgY2xhc3M9InZhcm5hbWUiPlB1Ymxpc2hpbmcgdGhlIFdlYiBzZXJ2aWNlPC92YXI+IHRvIGNvbXBsZXRlCi10aGlzIHRhc2suPC9saT4KLQotPC91bD4KLTwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5JbXBvcnRhbnQ6PC9zcGFuPiBJZiB5b3VyIG1ldGhvZHMgY29udGFpbiB0eXBlcywKLW5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNhbXBsZSwgc3VjaCBhcyBhcnJheXMsIGluZGV4ZWQgcHJvcGVydGllcywgYW5kIGNvbGxlY3Rpb25zLAotdGhlIG1ldGhvZHMgd2lsbCBiZSBvbWl0dGVkIGZyb20gdGhlIHNhbXBsZSBhbmQgeW91IHdpbGwgcmVjZWl2ZSBhIHdhcm5pbmcKLW1lc3NhZ2UuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PjxkaXYgY2xhc3M9InJlbGNvbmNlcHRzIj48c3Ryb25nPlJlbGF0ZWQgY29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLTxkaXY+PGEgaHJlZj0iLi4vdG9waWNzL2NheGlzdG92ZXIuaHRtbCIgdGl0bGU9IlRoaXMgcnVudGltZSBlbnZpcm9ubWVudHMgaXMgZm9yIHVzZXJzIHdobyBwcmVmZXIgdG8gZGV2ZWxvcCBmb3IgdGhlIG9wZW4gQXBhY2hlIEF4aXMgcGxhdGZvcm0uIj5DcmVhdGluZyBXZWIgc2VydmljZXMgd2l0aCB0aGUgQXBhY2hlIEF4aXMxIHJ1bnRpbWUgZW52aXJvbm1lbnQ8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIj4gVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIj5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5odG1sIj4gRGV2ZWxvcGluZyBXZWIgc2VydmljZXM8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dWRkaWV4cC5odG1sIj4gVXNpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBSZWZlcmVuY2U8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmh0bWwiPldTREwgZG9jdW1lbnRzPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3dzYXhpc19yZWx0YWJsZV90b2MuZGl0YW1hcCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvd3NheGlzX3JlbHRhYmxlX3RvYy5kaXRhbWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2Y5YjdjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvd3NheGlzX3JlbHRhYmxlX3RvYy5kaXRhbWFwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSBtYXAgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgTWFwLy9FTiINCi0gIm1hcC5kdGQiPg0KLTxtYXAgdGl0bGU9IlJlbHRhYmxlIGZvciBBeGlzIFdlYiBzZXJ2aWNlcyBkb2NzIj4NCi08cmVsdGFibGU+DQotPHJlbGhlYWRlcj4NCi08cmVsY29sc3BlYyB0eXBlPSJjb25jZXB0Ij48L3JlbGNvbHNwZWM+DQotPHJlbGNvbHNwZWMgdHlwZT0idGFzayI+PC9yZWxjb2xzcGVjPg0KLTxyZWxjb2xzcGVjIHR5cGU9InJlZmVyZW5jZSI+PC9yZWxjb2xzcGVjPg0KLTwvcmVsaGVhZGVyPg0KLTxyZWxyb3c+DQotPHJlbGNlbGwgY29sbGVjdGlvbi10eXBlPSJmYW1pbHkiPg0KLTx0b3BpY3JlZiBocmVmPSJ0b3BpY3MvY2F4aXN0b3Zlci5kaXRhIiBuYXZ0aXRsZT0iQ3JlYXRpbmcgV2ViIHNlcnZpY2VzIHdpdGggdGhlIEFwYWNoZSBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnRzIj4NCi08L3RvcGljcmVmPg0KLTwvcmVsY2VsbD4NCi08cmVsY2VsbD4NCi08dG9waWNyZWYgaHJlZj0idG9waWNzL3R3c2JlYW5hLmRpdGEiIG5hdnRpdGxlPSJDcmVhdGluZyBhbiBBeGlzMSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIj4NCi08L3RvcGljcmVmPg0KLTx0b3BpY3JlZiBocmVmPSJ0b3BpY3MvdHNrbHdzZGxhLmRpdGEiIG5hdnRpdGxlPSJDcmVhdGluZyBhbiBBeGlzMSBXZWIgc2VydmljZSBmcm9tIFdTREwiPg0KLTwvdG9waWNyZWY+DQotPHRvcGljcmVmIGhyZWY9InRvcGljcy90c2FtcGFwcGEuZGl0YSIgbmF2dGl0bGU9IkNyZWF0aW5nIGFuIEF4aXMxIFdlYiBzZXJ2aWNlIGNsaWVudCI+DQotPC90b3BpY3JlZj4NCi08L3JlbGNlbGw+DQotPHJlbGNlbGw+PC9yZWxjZWxsPg0KLTwvcmVscm93Pg0KLTwvcmVsdGFibGU+DQotPC9tYXA+DQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci93c2F4aXNfcmVsdGFibGVfdG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvd3NheGlzX3JlbHRhYmxlX3RvYy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNTIwZDMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci93c2F4aXNfcmVsdGFibGVfdG9jLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC50b2MiPz4KLQotPHRvYyBsYWJlbD0iUmVsdGFibGUgZm9yIEF4aXMgV2ViIHNlcnZpY2VzIGRvY3MiLz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvd3NheGlzYnVpbGRfdG9jLmRpdGFtYXAgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3dzYXhpc2J1aWxkX3RvYy5kaXRhbWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2YxOGQzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvd3NheGlzYnVpbGRfdG9jLmRpdGFtYXAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSBtYXAgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgTWFwLy9FTiIKLSAibWFwLmR0ZCI+Ci08bWFwIGFuY2hvcnJlZj0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3dzY3JlYXRpb250MV90b2MuZGl0YW1hcCN3c2F4aXMiCi1pZD0id3NheGlzIiB0aXRsZT0id3NheGlzIj4KLTx0b3BpY3JlZiBocmVmPSJ0b3BpY3MvY2F4aXN0b3Zlci5kaXRhIiBuYXZ0aXRsZT0iQXBhY2hlIEF4aXMxIHJ1bnRpbWUiIHRvYz0ieWVzIj4KLTx0b3BpY3JlZiBocmVmPSJ0b3BpY3MvdHRvbWNhdHNlcnYuZGl0YSIgbmF2dGl0bGU9Ikluc3RhbGxpbmcgYW5kIGNvbmZpZ3VyaW5nIEFwYWNoZSBUb21jYXQiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0b3BpY3MvdHdzYmVhbmEuZGl0YSIgbmF2dGl0bGU9IkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgZnJvbSBhIEphdmEgYmVhbiI+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRvcGljcy90c2tsd3NkbGEuZGl0YSIgbmF2dGl0bGU9IkNyZWF0aW5nIGEgSmF2YSBTa2VsZXRvbiBmcm9tIFdTREwiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0b3BpY3MvdHNhbXBhcHBhLmRpdGEiIG5hdnRpdGxlPSJHZW5lcmF0aW5nIGEgSmF2YSBjbGllbnQgcHJveHkgZnJvbSBhIFdTREwgZG9jdW1lbnQiPgotPC90b3BpY3JlZj4KLTwvdG9waWNyZWY+Ci08L21hcD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvd3NheGlzYnVpbGRfdG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvd3NheGlzYnVpbGRfdG9jLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU3MmI4ZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3dzYXhpc2J1aWxkX3RvYy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotCi08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PgotCi08dG9jIGxpbmtfdG89Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93c2NyZWF0aW9udDFfdG9jLnhtbCN3c2F4aXMiIGxhYmVsPSJ3c2F4aXMiIHRvcGljPSJ0b3BpY3MvY2F4aXN0b3Zlci5odG1sIj4KLTx0b3BpYyBsYWJlbD0iQ3JlYXRpbmcgV2ViIHNlcnZpY2VzIHdpdGggdGhlIEFwYWNoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50IiBocmVmPSJ0b3BpY3MvY2F4aXN0b3Zlci5odG1sIj4KLTx0b3BpYyBsYWJlbD0iQ3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXIgYW5kIFdlYiBwcm9qZWN0IiBocmVmPSJ0b3BpY3MvdHRvbWNhdHNlcnYuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJDcmVhdGluZyBhIFdlYiBzZXJ2aWNlIGZyb20gYSBKYXZhIGJlYW4gdXNpbmcgdGhlIEFwYWNoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50IiBocmVmPSJ0b3BpY3MvdHdzYmVhbmEuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJDcmVhdGluZyBhIEphdmEgYmVhbiBza2VsZXRvbiBmcm9tIGEgV1NETCBkb2N1bWVudCB1c2luZyB0aGUgQXBhY2hlIEF4aXMxIHJ1bnRpbWUgZW52aXJvbm1lbnQiIGhyZWY9InRvcGljcy90c2tsd3NkbGEuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJHZW5lcmF0aW5nIGEgSmF2YSBjbGllbnQgcHJveHkgYW5kIGEgc2FtcGxlIGFwcGxpY2F0aW9uIGZyb20gYSBXU0RMIGRvY3VtZW50IHVzaW5nIHRoZSBBeGlzMSBydW50aW1lIGVudmlyb25tZW50IiBocmVmPSJ0b3BpY3MvdHNhbXBhcHBhLmh0bWwiLz4KLTwvdG9waWM+Ci08L3RvYz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLmluZm9wb3AvLmN2c2lnbm9yZSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLmluZm9wb3AvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE0NDg3Yy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbmZvcG9wLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1idWlsZC54bWwKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLmluZm9wb3AvLnByb2plY3QgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbmZvcG9wLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDBiZGEzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLmluZm9wb3AvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcDwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLmluZm9wb3AvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbmZvcG9wL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGNhZGQzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLmluZm9wb3AvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVwbHVnaW5OYW1lCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcDsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjMwMC5xdWFsaWZpZXIKLUJ1bmRsZS1WZW5kb3I6ICVwbHVnaW5Qcm92aWRlcgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbmZvcG9wL2Fib3V0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbmZvcG9wL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcC9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbmZvcG9wL2J1aWxkLnByb3BlcnRpZXMgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbmZvcG9wL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NTdlYzIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcC9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIHdzY29uc3VtcHRpb251aS1mMUNvbnRleHRzLnhtbCxcCi0gICAgICAgICAgICAgICB3c2NyZWF0aW9udWktZjFDb250ZXh0cy54bWwsXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMKLXNyYy5pbmNsdWRlcyA9IGJ1aWxkLnByb3BlcnRpZXMKLWdlbmVyYXRlU291cmNlQnVuZGxlPWZhbHNlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcC9wbHVnaW4ucHJvcGVydGllcyBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLmluZm9wb3AvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3OTc3YjIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcC9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotISBQbHVnLWluIHByb3BlcnRpZXMKLXBsdWdpbk5hbWUgICAgID0gV2ViIHNlcnZpY2VzIFVJCi1wbHVnaW5Qcm92aWRlciA9IEVjbGlwc2Uub3JnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcC9wbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcC9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTU2Y2NhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLmluZm9wb3AvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PiAKLTwhLS0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAtLT4KLTxwbHVnaW4+Ci0gIAotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuY29udGV4dHMiPgotCQk8Y29udGV4dHMgZmlsZT0id3Njb25zdW1wdGlvbnVpLWYxQ29udGV4dHMueG1sIiBwbHVnaW49Im9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aSIvPgotCQk8Y29udGV4dHMgZmlsZT0id3NjcmVhdGlvbnVpLWYxQ29udGV4dHMueG1sIiBwbHVnaW49Im9yZy5lY2xpcHNlLmpzdC53cy5jcmVhdGlvbi51aSIvPgotCTwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcC93c2NvbnN1bXB0aW9udWktZjFDb250ZXh0cy54bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbmZvcG9wL3dzY29uc3VtcHRpb251aS1mMUNvbnRleHRzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNjOWNlYi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi5pbmZvcG9wL3dzY29uc3VtcHRpb251aS1mMUNvbnRleHRzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDQxNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC5jb250ZXh0cyI/PgotPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgotPGNvbnRleHRzPgotCi08IS0tVG9wb2xvZ3lQcmVmZXJlbmNlUGFnZS5qYXZhLS0+Ci0KLTxjb250ZXh0IGlkPSJQUFRQMDAwMSI+Ci08IS0tUFRQUDAwMDEgZm9yIHRoZSBUb3BvbG9neSBQcmVmZXJlbmNlIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5UaGVzZSB0YWJsZXMgcmVzcHJlc2VudHMgdGhlIHRoZSB0eXBlcyBvZiBwcm9qZWN0cyBhdmFpbGFibGUgaW50byB3aGljaCB5b3UgY2FuIGdlbmVyYXRlIGEgV2ViIHNlcnZpY2Ugb3IgY2xpZW50LiAKLVlvdSBjYW5ub3QgYWRkIG9yIHJlbW92ZSBwcm9qZWN0IHR5cGVzLCBob3dldmVyIHlvdSBjYW4gY2hhbmdlIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFwcGVhciBpbiB0aGUgV2ViIHNlcnZpY2VzIHdpemFyZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSBjcmVhdGluZyBzZXZlcmFsIFdlYiBzZXJ2aWNlcyB0aGF0IHVzZSB0aGUgc2FtZSB0eXBlIG9mIHNlcnZpY2Ugb3IgY2xpZW50IHByb2plY3QgYmVjYXVzZSB5b3UgY2FuIHNldCB0aGF0IHNlcnZpY2Ugb3IgY2xpZW50IHByb2plY3QgdHlwZSBhcyB0aGUgZGVmYXVsdC4gCi1UbyBjaGFuZ2UgdGhlIG9yZGVyLCBzZWxlY3QgYSBwcm9qZWN0IHR5cGUgYW5kIHVzZSB0aGUgdXAgYW5kIGRvd24gYXJyb3dzIHRvIG1vdmUgaXQgd2l0aGluIHRoZSBsaXN0LiBDaGFuZ2luZyB0aGUgb3JkZXIgb2YgdGhlIGxpc3QgZG9lcyBub3QgcmVzdHJpY3QgeW91ciBhYmlsaXR5IHRvIHNlbGVjdCBhbnkgb2YgdGhlIG9wdGlvbnMuCi1JZiB5b3Ugc2VsZWN0IHRoZSBjaGVjayBib3gsIGJ5IGRlZmF1bHQgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmQgd2lsbCBnZW5lcmF0ZSB0aGUgV2ViIHNlcnZpY2VzIHNlcnZlciBhbmQgY2xpZW50IGNvZGUgaW50byBkaWZmZXJlbnQgRUFScy4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZW5hYmxlIHRoaXMgZmVhdHVyZS4KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTwhLS0gU2VydmVyIGFuZCBSdW50aW1lIFByZWZlcmVuY2UgcGFnZS0tPgotPGNvbnRleHQgaWQ9IlNSUEYwMDAxIj4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhlIGRlZmF1bHQgV2ViIHNlcnZlciB0byBiZSB1c2VkIGZvciBXZWIgc2VydmljZSBjcmVhdGlvbi48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotPGNvbnRleHQgaWQ9IlNSUEYwMDAyIj4KLTwhLS1ydW50aW1lIHByZWZlcmVuY2Ugb24gdGhlIHNlcnZlciBydW50aW1lIHByZWZlcmVuY2UgcGFnZS0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGUgZGVmYXVsdCBzZXJ2ZXIgcnVuLXRpbWUgZW52aXJvbm1lbnQgdG8gYmUgdXNlZCBmb3IgV2ViIHNlcnZpY2UgY3JlYXRpb24uPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPCEtLSBTdGFydCBzZXJ2ZXIgcGFnZS0tPgotPGNvbnRleHQgaWQ9IlNTV1AwMDAxIj4KLTxkZXNjcmlwdGlvbj5JZiB5b3UgaGF2ZSBjaG9zZW4gdG8gaW5zdGFsbCwgc3RhcnQsIG9yIGRlcGxveSB0aGUgV2ViIHNlcnZpY2UsIHRoZSBzZXJ2ZXIgbmVlZHMgdG8gYmUgc3RhcnRlZCBiZWZvcmUgdGhlIHdpemFyZCBjYW4gcHJvY2VlZC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08IS0tIEVKQiBzZWxlY3Rpb24gd2lkZ2V0LS0+Ci08Y29udGV4dCBpZD0iUEVCRDAwMDEiPgotPCEtLSBFQVIgUHJvamVjdHMgZHJvcC1kb3duIGJveCAtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgZnJvbSB0aGUgbGlzdGVkIEVBUiBwcm9qZWN0cy48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUEVCRDAwMDIiPgotPCEtLSBUYWJsZSBjb250YWluaW5nIGFsbCBvZiB0aGUgYmVhbiBuYW1lcyAtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgZnJvbSB0aGUgbGlzdGVkIEphdmEgYmVhbnMuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPCEtLVdlYlNlcnZpY2VUUEJlYW5DbGFzc1BhZ2UuamF2YS0tPgotPGNvbnRleHQgaWQ9IlBCQ0wwMDAxIj4KLTwhLS1QQkNMMDAwMSBmb3IgdGhlIEJlYW4gU2VsZWN0aW9uIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5Vc2UgdGhpcyBwYWdlIHRvIHNlbGVjdCB0aGUgSmF2YSBiZWFuIG9yIGNsYXNzIHVzZWQgdG8gY3JlYXRlIHRoZSBXZWIgc2VydmljZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotPGNvbnRleHQgaWQ9IlBCQ0wwMDAyIj4KLTwhLS1QQkNMMDAwMiBmb3IgdGhlIEJlYW4gU2VsZWN0aW9uIGZpZWxkIG9mIHRoZSBCZWFuIFNlbGVjdGlvbiBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+RW50ZXIgdGhlIG5hbWUgb2YgdGhlIEphdmEgYmVhbiB0byBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgV2ViIHNlcnZpY2UuIERlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBKYXZhIGJlYW4uIENsaWNrIEJyb3dzZSBjbGFzc2VzIHRvIHZpZXcgdGhlIGJlYW4gY2xhc3Mgb2YgdGhlIHNlbGVjdGVkIEphdmEgYmVhbi4gVGhlIGJlYW4gY2xhc3MgaXMgYSBtb2RlbCBvciB0ZW1wbGF0ZSAoYW4gYWJzdHJhY3QgZGF0YSB0eXBlKSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdG8gY3JlYXRlIG9iamVjdHMgd2l0aCBhIGNvbW1vbiBkZWZpbml0aW9uIGFuZCB0aGVyZWZvcmUsIGNvbW1vbiBwcm9wZXJ0aWVzLCBvcGVyYXRpb25zLCBhbmQgYmVoYXZpb3IuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLTxjb250ZXh0IGlkPSJQQkNMMDAwMyI+Ci08IS0tUEJDTDAwMDMgZm9yIHRoZSBCZWFuIENsYXNzIEJyb3dzZSBidXR0b24gb2YgdGhlIEJlYW4gU2VsZWN0aW9uIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5DbGljayB0byB2aWV3IHRoZSBiZWFuIGNsYXNzIG9mIHRoZSBzZWxlY3RlZCBKYXZhIGJlYW4uPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLTxjb250ZXh0IGlkPSJQQkNMMDAwNCI+Ci08IS0tUEJDTDAwMDQgZm9yIHRoZSBCZWFuIFJlc291cmNlIEJyb3dzZSBidXR0b24gb2YgdGhlIEJlYW4gU2VsZWN0aW9uIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5Ccm93c2UgdG8gdGhlIGNvcnJlY3QgSmF2YSBiZWFuIHRvIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBXZWIgc2VydmljZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi0KLTwhLS1XU0RMU2VsZWN0aW9uV2lkZ2V0LmphdmEtLT4KLTxjb250ZXh0IGlkPSJQQ09OMDAwMSI+Ci08IS0tIFdTREwgU2VsZWN0aW9uIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5Vc2UgdGhpcyBwYWdlIHRvIHNlbGVjdCB0aGUgV1NETCwgV1NJTCwgb3IgSFRNTCBkb2N1bWVudCB0aGF0IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgdGhlIFdlYiBzZXJ2aWNlLiBCeSBkZWZhdWx0IFdTREwgdmFsaWRhdGlvbiBpcyBkaXNhYmxlZC4gWW91IGNhbiBlbmFibGUgaXQgdGhyb3VnaCBQcmVmZXJlbmNlcyA+IFdlYiBTZXJ2aWNlcyA+IFdpemFyZCBWYWxpZGF0aW9uLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQQ09OMDAwMiI+Ci08IS0tIFdTREwgRG9jdW1lbnQgdGV4dCBmaWVsZCBvZiB0aGUgV1NETCBTZWxlY3Rpb24gUGFnZS0tPgotPGRlc2NyaXB0aW9uPkVudGVyIHRoZSBwYXRoIHRvIGEgV1NETCwgV1NJTCwgb3IgSFRNTCBkb2N1bWVudC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUENPTjAwMDMiPgotPCEtLSBXU0RMIFJlc291cmNlIEJyb3dzZSBidXR0b24gb2YgdGhlIFdTREwgU2VsZWN0aW9uIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5Ccm93c2UgdG8gdGhlIGxvY2F0aW9uIG9mIGEgV1NETCwgV1NJTCwgb3IgSFRNTCBkb2N1bWVudC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUENPTjAwMDQiPgotPCEtLSAgZm9yIHRoZSBXaXphcmQgV1NETCBWYWxpZGF0aW9uIHRhYmxlIG9mIHRoZSBXU0RMIFNlbGVjdGlvbiBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VGhpcyB0YWJsZSBsaXN0cyBhbnkgaXNzdWVzIHRoZSBXU0RMIHZhbGlkYXRvciBtYXkgaGF2ZSBlbmNvdW50ZXJlZCB3aGlsZSBleGFtaW5pbmcgdGhlIHNwZWNpZmllZCBXU0RMIGZpbGUuIEJ5IGRlZmF1bHQgV1NETCB2YWxpZGF0aW9uIGlzIGRpc2FibGVkLiBZb3UgY2FuIGVuYWJsZSBpdCB0aHJvdWdoIFByZWZlcmVuY2VzID4gV2ViIFNlcnZpY2VzID4gV2l6YXJkIFZhbGlkYXRpb24uPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBDT04wMDA1Ij4KLTwhLS0gIFdpemFyZCBXU0RMIFZhbGlkYXRpb24gc3VtbWFyeSBtZXNzYWdlIG9mIHRoZSBXU0RMIFNlbGVjdGlvbiBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VGhpcyB0YWJsZSBsaXN0cyBhbnkgaXNzdWVzIHRoZSBXU0RMIHZhbGlkYXRvciBtYXkgaGF2ZSBlbmNvdW50ZXJlZCB3aGlsZSBleGFtaW5pbmcgdGhlIHNwZWNpZmllZCBXU0RMIGZpbGUuIEJ5IGRlZmF1bHQgV1NETCB2YWxpZGF0aW9uIGlzIGRpc2FibGVkLiBZb3UgY2FuIGVuYWJsZSBpdCB0aHJvdWdoIFByZWZlcmVuY2VzID4gV2ViIFNlcnZpY2VzID4gV2l6YXJkIFZhbGlkYXRpb24uPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBDT04wMDA2Ij4KLTwhLS0gIFN0b3AgV2l6YXJkIFdTREwgVmFsaWRhdGlvbiBidXR0b24gb2YgdGhlIFdTREwgU2VsZWN0aW9uIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5DbGljayB0aGlzIGJ1dHRvbiB0byBzdG9wIHRoZSB2YWxpZGF0aW9uIG9mIHRoZSBzZWxlY3RlZCBXU0RMIGZpbGUuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPCEtLVJ1bnRpbWVTZXJ2ZXJTZWxlY3Rpb25EaWFsb2cuamF2YS0tPgotPGNvbnRleHQgaWQ9IlBXUlMwMDAxIj4KLTwhLS0gIFJ1bi10aW1lL3NlcnZlcnMgaW4gdGhlIFdlYiBTZXJ2aWNlIHR5cGUtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhlIHNjZW5hcmlvIGNvbmZpZ3VyYXRpb24gZm9yIHJ1bnRpbWUgZW52aXJvbm1lbnRzLCBzZXJ2ZXJzLCBhbmQgcHJvamVjdHMuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUlMwMDAyIj4KLTwhLS0gIHNlcnZpY2Utc2lkZSBydW4tdGltZSBlbnZpcm9ubWVudCBzZWxlY3Rpb24gb2YgdGhlIHJ1bi10aW1lIGVudmlyb25tZW50IHNlbGVjdGlvbiBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VGhpcyBpcyB0aGUgc2VydmVyLXNpZGUgcnVudGltZSBlbnZpcm9ubWVudCB3aGljaCB0aGUgV2ViIHNlcnZpY2Ugd2lsbCB1c2UuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUlMwMDAzIj4KLTwhLS0gc2VydmljZS1zaWRlIHNlcnZlciBzZWxlY3Rpb24gb2YgdGhlIHJ1bi10aW1lIGVudmlyb25tZW50IHNlbGVjdGlvbiBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VGhpcyBpcyB0aGUgc2VydmVyLXNpZGUgc2VydmVyIG9uIHdoaWNoIHRoZSBXZWIgc2VydmljZSB3aWxsIHJ1bi48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdSUzAwMDUiPgotPCEtLSAgcnVudGltZSB2aWV3IHJhZGlvIGJ1dHRvbi0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGlzIHZpZXcgdG8gc2VlIHJ1bnRpbWUvc2VydmVyIGNvbWJpbmF0aW9ucyBzb3J0ZWQgYnkgcnVudGltZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdSUzAwMDYiPgotPCEtLXNlcnZlciB2aWV3IHJhZGlvIGJ1dHRvbi0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGlzIHZpZXcgdG8gc2VlIHJ1bnRpbWUvc2VydmVyIGNvbWJpbmF0aW9ucyBzb3J0ZWQgYnkgc2VydmVyLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1JTMDAwNyI+Ci08IS0tICBjZXhwbG9yZSB2aWV3IHJhZGlvIGJ1dHRvbi0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGlzIHZpZXcgdG8gZXhwbG9yZSBhdmFpbGFibGUgcnVudGltZS9zZXJ2ZXIgY29tYmluYXRpb25zLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLQotPCEtLVByb2plY3RTZWxlY3Rpb25XaWRnZXQuamF2YS0tPgotPGNvbnRleHQgaWQ9IlBXUlMwMDE2Ij4KLTwhLS0gIHNlcnZpY2Utc2lkZSBXZWIgcHJvamVjdCBjb21ibyBib3ggb2YgdGhlIHJ1bi10aW1lIGVudmlyb25tZW50IHNlbGVjdGlvbiBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+U2VsZWN0IHRoZSBwcm9qZWN0IGluIHdoaWNoIHRoZSBXZWIgc2VydmljZSBjbGllbnQgd2lsbCBiZSBjcmVhdGVkLiBUaGUgd2l6YXJkIHdpbGwgZ2VuZXJhdGUgdGhpcyBwcm9qZWN0IGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUlMwMDE4Ij4KLTwhLS0gY2xpZW50IHR5cGUgY29tYm8gYm94ICAtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgZnJvbSB0aGUgbGlzdGVkIHByb2plY3QgdHlwZXMgdGhlIHR5cGUgb2YgcHJvamVjdCB0aGF0IHlvdSB3YW50IGNyZWF0ZWQgdG8gY29udGFpbiB5b3VyIFdlYiBzZXJ2aWNlIGNsaWVudC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdSUzAwMjAiPgotPCEtLSBzZXJ2aWNlIHByb2plY3QgdHlwZSBjb21ibyBib3ggLS0+Ci08ZGVzY3JpcHRpb24+U2VsZWN0IGZyb20gdGhlIGxpc3RlZCBwcm9qZWN0IHR5cGVzIHRoZSB0eXBlIG9mIHByb2plY3QgdGhhdCB5b3Ugd2FudCBjcmVhdGVkIHRvIGNvbnRhaW4geW91ciBXZWIgc2VydmljZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi0KLTxjb250ZXh0IGlkPSJQV1NNMDAwMSI+Ci08IS0tIFNhbXBsZSBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPlRoZSBzYW1wbGUgV2ViIGFwcGxpY2F0aW9uIGRlbW9uc3RyYXRlcyBob3cgdG8gY29kZSB0aGUgcHJveHkgZmlsZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdTTTAwMDIiPgotPCEtLSBUZXN0IGNoZWNrIGJveCBvZiB0aGUgU2FtcGxlIFBhZ2UgLS0+Ci08ZGVzY3JpcHRpb24+SWYgc2VsZWN0ZWQgd2lsbCBsYXVuY2ggdGhlIHNhbXBsZSBXZWIgYXBwbGljYXRpb24gaW4gdGhlIFdlYiBicm93c2VyLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1NNMDAwMyI+Ci08IS0tIFRlc3QgVHlwZSBDb21ibyBib3ggb2YgdGhlIFNhbXBsZSBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPlRoZSBzYW1wbGUgV2ViIGFwcGxpY2F0aW9uIGRlbW9uc3RyYXRlcyBob3cgdG8gY29kZSB0aGUgcHJveHkgZmlsZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdTTTAwMDYiPgotPCEtLSBTZWxlY3QgQWxsIGJ1dHRvbiBvZiB0aGUgU2FtcGxlIFBhZ2UgLS0+Ci08ZGVzY3JpcHRpb24+Q2xpY2sgdGhpcyBidXR0b24gdG8gYWRkIGFsbCB0aGUgYXZhaWxhYmxlIG1ldGhvZHMgdG8gdGhlIFdlYiBzZXJ2aWNlIHNhbXBsZSBwcm94eS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdTTTAwMDciPgotPCEtLSBEZXNlbGVjdCBBbGwgYnV0dG9uIG9mIHRoZSBTYW1wbGUgUGFnZSAtLT4KLTxkZXNjcmlwdGlvbj5DbGljayB0aGlzIGJ1dHRvbiB0byByZW1vdmUgYWxsIHRoZSBhdmFpbGFibGUgbWV0aG9kcyB0byB0aGUgV2ViIHNlcnZpY2Ugc2FtcGxlIHByb3h5LjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1NNMDAwOCI+Ci08IS0tIEpTUCBGb2xkZXIgZmllbGQgb2YgdGhlIFNhbXBsZSBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPkZvbGRlciBpbnRvIHdoaWNoIHlvdXIgV2ViIHNlcnZpY2UgSlNQcyBhcmUgZGVwb3NpdGVkLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1NNMDAwOSI+Ci08IS0tIEpTUCBGb2xkZXIgQnJvd3NlIGJ1dHRvbiBvZiB0aGUgU2FtcGxlIFBhZ2UgLS0+Ci08ZGVzY3JpcHRpb24+Q2xpY2sgdG8gZmluZCB0aGUgZm9sZGVyIGludG8gd2hpY2ggeW91ciBXZWIgc2VydmljZSBKU1BzIGFyZSBkZXBvc2l0ZWQuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXU00wMDEwIj4KLTwhLS0gUHJvamVjdCBjb21ibyBib3ggb2YgdGhlIFNhbXBsZSBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCBhbiBleGlzdGluZyBwcm9qZWN0IGludG8gd2hpY2ggeW91ciBzYW1wbGUgd2lsbCBiZSBnZW5lcmF0ZWQuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXU00wMDE0Ij4KLTwhLS0gRm9sZGVyIGZpZWxkIG9mIHRoZSBTYW1wbGUgUGFnZSAtLT4KLTxkZXNjcmlwdGlvbj5Gb2xkZXIgaW50byB3aGljaCB0aGUgZnVsbHkgcXVhbGlmaWVkIHByb3h5IGlzIGdlbmVyYXRlZC4gRGVmYXVsdHMgdG8gdGhlIHNvdXJjZSBmb2xkZXIgaW5zaWRlIG9mIHlvdXIgV2ViIHByb2plY3QuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXU00wMDE1Ij4KLTwhLS0gUnVuIHRlc3QgY2hlY2sgYm94IG9mIHRoZSBTYW1wbGUgUGFnZSAtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhpcyBjaGVjayBib3ggdG8gcnVuIHRoZSBzYW1wbGUgYXBwbGljYXRpb24gb24gdGhlIHNlcnZlci48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdTTTAwMTYiPgotPCEtLSBFQVIgY29tYm8gYm94IG9mIHRoZSBTYW1wbGUgUGFnZSAtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhlIEVBUiBpbiB3aGljaCB5b3Ugd2FudCB5b3VyIFdlYiBzZXJ2aWNlIHNhbXBsZSBhcHBsaWNhdGlvbiBjcmVhdGVkLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTwhLS0gaGFuZGxlciB3aXphcmQtLT4KLTxjb250ZXh0IGlkPSJBSERMMDAwMSI+Ci08IS0tSGFuZGxlciBjb25maWcgcGFnZS0tPgotPGRlc2NyaXB0aW9uPlVzZSB0aGlzIHdpemFyZCB0byBhZGQgYW5kIHJlbW92ZSBoYW5kbGVycyBmb3IgYSBXZWIgc2VydmljZS4gVGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIGxpc3RlZCByZXByZXNlbnRzIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgaGFuZGxlcnMgd2lsbCBiZSBhY3RlZCB1cG9uLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci08Y29udGV4dCBpZD0iQUhETDAwMDIiPgotPCEtLUhhbmRsZXIgY29uZmlnIHBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5Vc2UgdGhpcyB3aXphcmQgdG8gYWRkIGFuZCByZW1vdmUgaGFuZGxlcnMgZm9yIGEgV2ViIHNlcnZpY2UuIFRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBsaXN0ZWQgcmVwcmVzZW50cyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGhhbmRsZXJzIHdpbGwgYmUgYWN0ZWQgdXBvbi48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotPGNvbnRleHQgaWQ9IkFIREwwMDAzIj4KLTwhLS1IYW5kbGVyIGNvbmZpZyBwYWdlLS0+Ci08ZGVzY3JpcHRpb24+VXNlIHRoaXMgd2l6YXJkIHRvIGFkZCBhbmQgcmVtb3ZlIGhhbmRsZXJzIGZvciBhIFdlYiBzZXJ2aWNlLiBUaGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmUgbGlzdGVkIHJlcHJlc2VudHMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBoYW5kbGVycyB3aWxsIGJlIGFjdGVkIHVwb24uPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotCi0KLTwhLS1XZWJTZXJ2aWNlV2l6TmV3Rmlyc3RQYWdlLS0+Ci08Y29udGV4dCBpZD0iV1NXU0NFTjAwMDEiPgotPCEtLSBGaXJzdCBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+T24gdGhpcyBwYWdlIHNlbGVjdCB0aGUgYXJ0aWZhY3QgZnJvbSB3aGljaCB5b3VyIFdlYiBjbGllbnQgd2lsbCBiZSBjcmVhdGVkLCBhbmQgdGhlIHN0YWdlcyBvZiBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgdGhhdCB5b3Ugd2FudAotdG8gY29tcGxldGU6Ci0tIERldmVsb3A6IHRoaXMgd2lsbCBjcmVhdGUgdGhlIGNsaWVudCBjb2RlCi0tIEFzc2VtYmxlOiB0aGlzIGVuc3VyZXMgdGhhdCB0aGUgcHJvamVjdCB0aGF0IHdpbGwgaG9zdCB0aGUgY2xpZW50IGdldHMgYXNzb2NpYXRlZCB0byBhbiBFQVIgd2hlbiByZXF1aXJlZCBieSB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uIHNlcnZlcgotLSBEZXBsb3k6IHRoaXMgd2lsbCBjcmVhdGUgdGhlIGRlcGxveW1lbnQgY29kZSBmb3IgdGhlIGNsaWVudAotLSBJbnN0YWxsOiB0aGlzIHdpbGwgaW5zdGFsbCB0aGUgY2xpZW50IG9uIHRoZSBjaG9zZW4gc2VydmVyCi0tIFN0YXJ0OiB0aGlzIHdpbGwgc3RhcnQgdGhlIHNlcnZlciBvbmNlIHRoZSBjbGllbnQgaGFzIGJlZW4gaW5zdGFsbGVkIG9uIGl0Ci0tIFRlc3Q6IHRoaXMgd2lsbCBwcm92aWRlIHZhcmlvdXMgb3B0aW9ucyBmb3IgdGVzdGluZyB0aGUgY2xpZW50Ci1TZWxlY3QgdGhlIHNlcnZlciBhbmQgcnVudGltZSBmb3IgeW91ciBXZWIgY2xpZW50LCBhbmQgd2hldGhlciBvciBub3QgeW91IHdhbnQgdG8gcHVibGlzaCBvciBtb25pdG9yIHRoZSBzZXJ2aWNlLgotPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IldTV1NDRU4wMDE0Ij4KLTwhLS1Nb25pdG9yIGNoZWNrYm94IG9mIHRoZSBGaXJzdCBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+TW9uaXRvciB0aGUgV2ViIHNlcnZpY2U6IHRoaXMgd2lsbCBzZW5kIHRoZSBXZWIgc2VydmljZSB0cmFmZmljIHRocm91Z2ggdGhlIFRDUC9JUCBNb25pdG9yLCB3aGljaCBhbGxvd3MgeW91IHRvIHdhdGNoIHRoZSBTT0FQIHRyYWZmaWMgZ2VuZXJhdGVkIGJ5IHRoZSBXZWIgc2VydmljZSBhbmQgdG8gdGVzdCB0aGlzIHRyYWZmaWMgZm9yIFdTLUkgY29tcGxpYW5jZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iV1NXU0NFTjAwMjAiPgotPCEtLVNlcnZpY2UgaW1wbGVtZW50YXRpb24gZmllbGQgb2YgdGhlIEZpcnN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5FbnRlciB0aGUgVVJJIHRvIHRoZSBXU0RMLCBXU0lMLCBvciBIVE1MIGZpbGUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHNlcnZpY2U8L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iV1NXU0NFTjAwMjIiPgotPCEtLVNlcnZlciBsaW5rIG9mIHRoZSBGaXJzdCBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+U2VsZWN0IHlvdXIgc2VydmVyOiB0aGUgZGVmYXVsdCBzZXJ2ZXIgaXMgZGlzcGxheWVkLiBJZiB5b3Ugd2FudCB0byBkZXBsb3kgeW91ciBzZXJ2aWNlIHRvIGEgZGlmZmVyZW50IHNlcnZlciBjbGljayB0aGUgbGluayB0byBzcGVjaWZ5IGEgZGlmZmVyZW50IHNlcnZlci48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iV1NXU0NFTjAwMjMiPgotPCEtLXJ1bnRpbWUgbGluayBvZiB0aGUgRmlyc3QgUGFnZS0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB5b3VyIHJ1bnRpbWU6IHRoZSBkZWZhdWx0IHJ1bnRpbWUgaXMgZGlzcGxheWVkLiBJZiB5b3UKLXdhbnQgdG8gZGVwbG95IHlvdXIgc2VydmljZSB0byBhIGRpZmZlcmVudCBydW50aW1lIGNsaWNrIHRoZSBsaW5rIHRvIHNwZWNpZnkKLWEgZGlmZmVyZW50IHJ1bnRpbWUuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IldTV1NDRU4wMDI0Ij4KLTwhLS1wcm9qZWN0cyBsaW5rIG9mIHRoZSBGaXJzdCBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+U2VsZWN0IHRoZSBzZXJ2aWNlIHByb2plY3Q6IHRoZSBwcm9qZWN0IGNvbnRhaW5pbmcgdGhlIHByb2plY3QKLXNlbGVjdGVkIGluIHlvdXIgd29ya3NwYWNlIGlzIGRpc3BsYXllZC4gVG8gc2VsZWN0IGEgZGlmZmVyZW50IHByb2plY3QgYW5kCi1FQVIgY2xpY2sgb24gdGhlIHByb2plY3QgbGluay4gRW5zdXJlIHRoYXQgdGhlIHByb2plY3Qgc2VsZWN0ZWQKLWFzIHRoZSBDbGllbnQgV2ViIFByb2plY3QgaXMgZGlmZmVyZW50IGZyb20gdGhlIFNlcnZpY2UgV2ViIFByb2plY3QsIG9yIHRoZQotc2VydmljZSB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBjbGllbnQncyBnZW5lcmF0ZWQgYXJ0aWZhY3RzLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAyNSI+Ci08IS0tY2xpZW50IHR5cGUgY29tYm8gb2YgdGhlIEZpcnN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5UaGUgSmF2YSBiZWFuIGNsaWVudCBwcm94eSB0aGF0IGlzIGdlbmVyYXRlZCBwcm92aWRlcyBhIHJlbW90ZSBwcm9jZWR1cmUgY2FsbCBpbnRlcmZhY2UgdG8gdGhlIFdlYiBzZXJ2aWNlLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAyNiI+Ci08IS0tQ2xpZW50IHNsaWRlciBvZiB0aGUgRmlyc3QgUGFnZS0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGUgc3RhZ2VzIG9mIFdlYiBzZXJ2aWNlcyBjbGllbnQgZGV2ZWxvcG1lbnQgdGhhdCB5b3Ugd2FudAotdG8gY29tcGxldGUgdXNpbmcgdGhlIHNsaWRlcjoKLS0gRGV2ZWxvcDogdGhpcyB3aWxsIGNyZWF0ZSB0aGUgY2xpZW50IGNvZGUKLS0gQXNzZW1ibGU6IHRoaXMgZW5zdXJlcyB0aGF0IHRoZSBwcm9qZWN0IHRoYXQgd2lsbCBob3N0IHRoZSBjbGllbnQgZ2V0cyBhc3NvY2lhdGVkIHRvIGFuIEVBUiB3aGVuIHJlcXVpcmVkIGJ5IHRoZSB0YXJnZXQgYXBwbGljYXRpb24gc2VydmVyCi0tIERlcGxveTogdGhpcyB3aWxsIGNyZWF0ZSB0aGUgZGVwbG95bWVudCBjb2RlIGZvciB0aGUgY2xpZW50Ci0tIEluc3RhbGw6IHRoaXMgd2lsbCBpbnN0YWxsIHRoZSBjbGllbnQgb24gdGhlIGNob3NlbiBzZXJ2ZXIKLS0gU3RhcnQ6IHRoaXMgd2lsbCBzdGFydCB0aGUgc2VydmVyIG9uY2UgdGhlIGNsaWVudCBoYXMgYmVlbiBpbnN0YWxsZWQgb24gaXQKLS0gVGVzdDogdGhpcyB3aWxsIHByb3ZpZGUgdmFyaW91cyBvcHRpb25zIGZvciB0ZXN0aW5nIHRoZSBjbGllbnQKLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAzMCI+Ci08IS0tZmlsZSBvdmVyd3JpdGUgY2hlY2tib3ggb2YgdGhlIEZpcnN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5UaGlzIGFsbG93cyB5b3UgdG8gb3ZlcndyaXRlIGZpbGVzIHdpdGhvdXQgcmVjZWl2aW5nIGEgd2FybmluZyBtZXNzYWdlIGFza2luZyBmb3IgY29uZmlybWF0aW9uIHdoZW4gb3ZlcndyaXRpbmcgZmlsZXMuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IldTSUwwMDAxIj4KLTwhLS0gIFdTSUwgSW1wb3J0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5FbnRlciB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYSBzdGFuZGFyZGl6ZWQgV1NETCByZWZlcmVuY2UgKFdTSUwpIGRvY3VtZW50IGluIHlvdXIgcHJvamVjdC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iV1NJTDAwMDIiPgotPCEtLSAgV1NJTCBUZXh0IGZpZWxkLS0+Ci08ZGVzY3JpcHRpb24+RW50ZXIgdGhlIG5hbWUgb2YgdGhlIFdTSUwgZG9jdW1lbnQgYmVpbmcgZ2VuZXJhdGVkLCBvciBhY2NlcHQgdGhlIGRlZmF1bHQuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IldTSUwwMDAzIj4KLTwhLS0gIFdTSUwgYnJvd3NlIGJ1dHRvbi0tPgotPGRlc2NyaXB0aW9uPkJyb3dzZSB0byB0aGUgbG9jYXRpb24gb2YgYSBXU0RMIG9yIFdTSUwgZmlsZSBmcm9tIHdoaWNoIHRoZSBuZXcgV1NJTCBkb2N1bWVudCB3aWxsIGJlIGdlbmVyYXRlZC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iV1NJTDAwMDQiPgotPCEtLSAgV1NJTCB0YWJsZS0tPgotPGRlc2NyaXB0aW9uPlRoaXMgbGlzdHMgYWxsIHRoZSBXU0RMIFVSSXMgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBXU0lMIGRvY3VtZW50LjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1BSMDAwMSI+Ci08IS0tIFByb2plY3QgUGFnZSAtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhlIHR5cGUgb2YgV2ViIHNlcnZpY2UgeW91IHdhbnQgdG8gZ2VuZXJhdGUgYW5kIGFueSBmaWxlIGFuZCBmb2xkZXIgb3B0aW9ucyBmb3IgeW91ciBXZWIgc2VydmljZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdQUjAwMDMiPgotPCEtLU92ZXJ3cml0ZSBmaWxlcyB3aXRob3V0IHdhcm5pbmcgKGNoZWNrYm94KS0tPgotPGRlc2NyaXB0aW9uPkFsbG93cyB5b3UgdG8gb3ZlcndyaXRlIGZpbGVzIHdpdGhvdXQgcmVjZWl2aW5nIGEgd2FybmluZyBtZXNzYWdlIGFza2luZyBmb3IgY29uZmlybWF0aW9uIHdoZW4gb3ZlcndyaXRpbmcgZmlsZXMuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUFIwMDA0Ij4KLTwhLS1DcmVhdGUgZm9sZGVycyB3aGVuIG5lY2Vzc2FyeSAoY2hlY2tib3gpLS0+Ci08ZGVzY3JpcHRpb24+U2VsZWN0IHRvIGNyZWF0ZSBmb2xkZXJzIGFuZCBmb2xkZXIgc3RydWN0dXJlcyB3aXRob3V0IHJlY2VpdmluZyBhIHdhcm5pbmcgbWVzc2FnZSBhc2tpbmcgZm9yIGNvbmZpcm1hdGlvbi48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdQUjAwMDUiPgotPCEtLSAgR2VuZXJhdGUgUHJveHkgY2hlY2sgYm94IG9mIHRoZSBQcm9qZWN0IFBhZ2UgLS0+Ci08ZGVzY3JpcHRpb24+VGhlIGdlbmVyYXRlZCBKYXZhIGJlYW4gcHJveHkgcHJvdmlkZXMgYSByZW1vdGUgcHJvY2VkdXJlIGNhbGwgaW50ZXJmYWNlIHRvIHRoZSBXZWIgc2VydmljZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdQUjAwMDYiPgotPCEtLSAgVGVzdCBQcm94eSBjaGVjayBib3ggb2YgdGhlIFByb2plY3QgUGFnZSAtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhpcyBjaGVjayBib3ggdG8gdGVzdCB0aGUgZ2VuZXJhdGVkIHByb3h5LjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1BSMDAwOSI+Ci08IS0tICBTdGFydCBXZWIgUHJvamVjdCBjaGVjayBib3ggY2hlY2sgYm94IG9mIHRoZSBQcm9qZWN0IFBhZ2UgLS0+Ci08ZGVzY3JpcHRpb24+Q2xpY2sgdG8gc3RhcnQgdGhlIHNlcnZlci4gSWYgeW91IGxlYXZlIHRoZSBib3ggdW5jaGVja2VkIHlvdSB3aWxsIGhhdmUgdG8gbWFudWFsbHkgc3RhcnQgdGhlIHNlcnZlci48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdQUjAwMTAiPgotPCEtLSBXZWIgU2VydmljZSBUeXBlIGNvbWJvIGJveCBvZiB0aGUgUHJvamVjdCBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGUgdHlwZSBvZiBXZWIgc2VydmljZSB5b3Ugd2FudCB0byBidWlsZC4gWW91ciBzZWxlY3Rpb24gd2lsbCBhZmZlY3QgdGhlIGZpbGVzIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1BSMDAxMSI+Ci08IS0tICBXaXphcmQgU2NlbmFyaW8gU2VydmljZSBncm91cCBvZiB0aGUgUHJvamVjdCBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGUgdHlwZSBvZiBXZWIgc2VydmljZSB5b3Ugd2FudCB0byBidWlsZC4gWW91ciBzZWxlY3Rpb24gd2lsbCBhZmZlY3QgdGhlIGZpbGVzIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1BSMDAxMSI+Ci08IS0tICBUZXN0IHNlcnZpY2UgY2hlY2tib3ggb2YgdGhlIHByb2plY3QgcGFnZSAtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhpcyBjaGVjayBib3ggdG8gbGF1bmNoIHRoZSBXZWIgc2VydmljZSBpbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIG9yZGVyIHRvIGV4YW1pbmUgaXQuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUFIwMDEyIj4KLTwhLS0gIExhdW5jaCBVRERJIGNoZWNrIGJveCBvZiB0aGUgUHJvamVjdCBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGlzIGNoZWNrYm94IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIG9yZGVyIHRvIHB1Ymxpc2ggdGhlIFdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdQUjAwMTMiPgotPCEtLSAgV2l6YXJkIFNjZW5hcmlvIENsaWVudCBncm91cCBvZiB0aGUgUHJvamVjdCBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPlRoZSBnZW5lcmF0ZWQgSmF2YSBiZWFuIHByb3h5IHByb3ZpZGVzIGEgcmVtb3RlIHByb2NlZHVyZSBjYWxsIGludGVyZmFjZSB0byB0aGUgV2ViIHNlcnZpY2UuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUFIwMDE0Ij4KLTwhLS0gIFdlYiBTZXJ2aWNlIENsaWVudCBUeXBlIGNvbWJvIGJveCBvZiB0aGUgUHJvamVjdCBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGUgY2xpZW50IHByb3h5IHR5cGUuIFRoZSBnZW5lcmF0ZWQgSmF2YSBiZWFuIHByb3h5IHByb3ZpZGVzIGEgcmVtb3RlIHByb2NlZHVyZSBjYWxsIGludGVyZmFjZSB0byB0aGUgV2ViIHNlcnZpY2UuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUFIwMDE1Ij4KLTwhLS0gIENoZWNrIE91dCBGaWxlcyBjaGVjayBib3ggb2YgdGhlIFByb2plY3QgUGFnZSAtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdG8gY2hlY2sgb3V0IGZpbGVzIHdpdGhvdXQgcmVjZWl2aW5nIGEgd2FybmluZyBtZXNzYWdlIGFza2luZyBmb3IgY29uZmlybWF0aW9uLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLQotPGNvbnRleHQgaWQ9IlBXUEIwMDAxIj4KLTwhLS0gIFVEREkgUHVibGlzaCBQYWdlIC0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0byBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB0byBhbGxvdyB5b3UgdG8gcHVibGlzaCB0aGUgV2ViIHNlcnZpY2UuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUEIwMDAyIj4KLTwhLS0gIFVEREkgTGF1bmNoIGNoZWNrIGJveCBvZiB0aGUgVURESSBQdWJsaXNoIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5JZiBzZWxlY3RlZCB3aWxsIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHRvIGFsbG93IHlvdSB0byBwdWJsaXNoIHRoZSBXZWIgc2VydmljZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdXUzAwMDEiPgotPCEtLSAgV1NETCBTZWxlY3Rpb24gUGFnZS0tPgotPGRlc2NyaXB0aW9uPlVzZSB0aGlzIHBhZ2UgdG8gc2VsZWN0IHRoZSBXU0RMLCBXU0lMLCBvciBIVE1MIGRvY3VtZW50IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgV2ViIHNlcnZpY2UuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXV1MwMDAyIj4KLTwhLS0gIFdTREwgRG9jdW1lbnQgdGV4dCBmaWVsZCBvZiB0aGUgV1NETCBTZWxlY3Rpb24gUGFnZS0tPgotPGRlc2NyaXB0aW9uPkVudGVyIHRoZSBwYXRoIHRvIGEgV1NETCwgV1NJTCwgb3IgSFRNTCBkb2N1bWVudC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdXUzAwMDMiPgotPCEtLSAgV1NETCBSZXNvdXJjZSBCcm93c2UgYnV0dG9uIG9mIHRoZSBXU0RMIFNlbGVjdGlvbiBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+QnJvd3NlIHRvIHRoZSBsb2NhdGlvbiBvZiBhIFdTREwsIFdTSUwsIG9yIEhUTUwgZG9jdW1lbnQuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotCi08Y29udGV4dCBpZD0iREJBUzAwMDEiPgotPCEtLSBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHVzZXIgbmFtZSAtLT4KLTxkZXNjcmlwdGlvbj5FbnRlciB0aGUgdXNlciBuYW1lIHVzZWQgZm9yIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb24uPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IkRCQVMwMDAyIj4KLTwhLS0gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvbiBwYXNzd29yZCAtLT4KLTxkZXNjcmlwdGlvbj5FbnRlciB0aGUgcGFzc3dvcmQgdXNlZCBmb3IgSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvbi48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi0KLQotPC9jb250ZXh0cz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLmluZm9wb3Avd3NjcmVhdGlvbnVpLWYxQ29udGV4dHMueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcC93c2NyZWF0aW9udWktZjFDb250ZXh0cy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZTM3N2MuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24uaW5mb3BvcC93c2NyZWF0aW9udWktZjFDb250ZXh0cy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC5jb250ZXh0cyI/PgotPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgotPGNvbnRleHRzPgotCi08Y29udGV4dCBpZD0iUFNUUDAwMDEiPgotPCEtLSAgVGVzdCBUeXBlIENvbWJvIGJveCBvZiB0aGUgU2VydmljZSBUZXN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhlIHRlc3QgZmFjaWxpdHkgaW4gd2hpY2ggeW91IHdvdWxkIGxpa2UgdG8gdGVzdCB0aGUgV2ViIHNlcnZpY2UgYmVpbmcgY3JlYXRlZC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFNUUDAwMDIiPgotPCEtLSAgTGF1bmNoIGJ1dHRvbiBvZiB0aGUgU2VydmljZSBUZXN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5DbGljayB0aGlzIHRvIGxhdW5jaCB0aGUgV2ViIHNlcnZpY2UgaW4gYSBicm93c2VyIHdpbmRvdyB0byB0ZXN0IGl0LjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTwhLS1XZWJTZXJ2aWNlV2l6TmV3Rmlyc3RQYWdlLS0+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAwMSI+Ci08IS0tIEZpcnN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5PbiB0aGlzIHBhZ2Ugc2VsZWN0IHRoZSBhcnRpZmFjdCBmcm9tIHdoaWNoIHlvdXIgV2ViIHNlcnZpY2Ugb3IgY2xpZW50IHdpbGwgYmUgY3JlYXRlZCwgYW5kIHRoZSBzdGFnZXMgb2YgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IHRoYXQgeW91IHdhbnQgdG8gY29tcGxldGU6Ci0tIERldmVsb3A6IHRoaXMgd2lsbCBjcmVhdGUgdGhlIHNlcnZpY2UgY29kZQotLSBBc3NlbWJsZTogdGhpcyBlbnN1cmVzIHRoYXQgdGhlIHByb2plY3QgdGhhdCB3aWxsIGhvc3QgdGhlIFdlYiBzZXJ2aWNlIG9yIGNsaWVudCBnZXRzIGFzc29jaWF0ZWQgdG8gYW4gRUFSIHdoZW4gcmVxdWlyZWQgYnkgdGhlIHRhcmdldCBhcHBsaWNhdGlvbiBzZXJ2ZXIKLS0gRGVwbG95OiB0aGlzIHdpbGwgY3JlYXRlIHRoZSBkZXBsb3ltZW50IGNvZGUgZm9yIHRoZSBzZXJ2aWNlCi0tIEluc3RhbGw6IHRoaXMgd2lsbCBpbnN0YWxsIHRoZSBzZXJ2aWNlIG9uIHRoZSBjaG9zZW4gc2VydmVyCi0tIFN0YXJ0OiB0aGlzIHdpbGwgc3RhcnQgdGhlIHNlcnZlciBvbmNlIHRoZSBzZXJ2aWNlIGhhcyBiZWVuIGluc3RhbGxlZCBvbiBpdAotLSBUZXN0OiB0aGlzIHdpbGwgcHJvdmlkZSB2YXJpb3VzIG9wdGlvbnMgZm9yIHRlc3RpbmcgdGhlIHNlcnZpY2UKLVNlbGVjdCB0aGUgc2VydmVyIGFuZCBydW50aW1lIGZvciB5b3VyIFdlYiBzZXJ2aWNlIG9yIGNsaWVudCwgYW5kIHdoZXRoZXIgb3Igbm90IHlvdSB3YW50IHRvIHB1Ymxpc2ggb3IgbW9uaXRvciB0aGUgc2VydmljZS4KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAxMCI+Ci08IS0tV2ViIHNlcnZpY2UgdHlwZSBjb21ibyBib3ggb2YgdGhlIEZpcnN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhlIHR5cGUgb2YgV2ViIHNlcnZpY2UgeW91IHdhbnQgdG8gY3JlYXRlLiBBIGJvdHRvbS11cCBzZXJ2aWNlIGNyZWF0ZXMgYSBzZXJ2aWNlIGZyb20gYSBKYXZhIGJlYW4gb3IgRUpCLCB3aGlsZSBhIHRvcC1kb3duIHNlcnZpY2Ugd2lsbCBjcmVhdGUgYSBzZXJ2aWNlIGZyb20gYSBXU0RMIGZpbGUgYW5kIHRoZW4gY3JlYXRlIGEgc2tlbGV0b24gSmF2YSBiZWFuIG9yIEVKQiBmb3IgeW91IHRvIGltcGxlbWVudCBsYXRlci48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iV1NXU0NFTjAwMTQiPgotPCEtLU1vbml0b3IgY2hlY2tib3ggb2YgdGhlIEZpcnN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5Nb25pdG9yIHRoZSBXZWIgc2VydmljZTogdGhpcyB3aWxsIHNlbmQgdGhlIFdlYiBzZXJ2aWNlIHRyYWZmaWMgdGhyb3VnaCB0aGUgVENQL0lQIE1vbml0b3IsIHdoaWNoIGFsbG93cyB5b3UgdG8gd2F0Y2ggdGhlIFNPQVAgdHJhZmZpYyBnZW5lcmF0ZWQgYnkgdGhlIFdlYiBzZXJ2aWNlIGFuZCB0byB0ZXN0IHRoaXMgdHJhZmZpYyBmb3IgV1MtSSBjb21wbGlhbmNlLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAxMiI+Ci08IS0tTGF1bmNoIFVEREkgY2hlY2sgYm94IG9mIHRoZSBGaXJzdCBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+UHVibGlzaCB0aGUgV2ViIHNlcnZpY2U6IHRoaXMgd2lsbCBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB0byBwdWJsaXNoIHlvdXIgV2ViIHNlcnZpY2UgdG8gYSBVRERJIHJlZ2lzdHJ5LjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAyMCI+Ci08IS0tU2VydmljZSBpbXBsZW1lbnRhdGlvbiBmaWVsZCBvZiB0aGUgRmlyc3QgUGFnZS0tPgotPGRlc2NyaXB0aW9uPkVudGVyIHRoZSBVUkkgdG8gdGhlIFdTREwsIFdTSUwsIG9yIEhUTUwgZmlsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgc2VydmljZTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAyMSI+Ci08IS0tU2VydmljZSBzbGlkZXIgb2YgdGhlIEZpcnN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhlIHN0YWdlcyBvZiBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgdGhhdCB5b3Ugd2FudCB0byBjb21wbGV0ZSB1c2luZyB0aGUgc2xpZGVyOgotLSBEZXZlbG9wOiB0aGlzIHdpbGwgY3JlYXRlIHRoZSBzZXJ2aWNlIGNvZGUKLS0gQXNzZW1ibGU6IHRoaXMgZW5zdXJlcyB0aGF0IHRoZSBwcm9qZWN0IHRoYXQgd2lsbCBob3N0IHRoZSBXZWIgc2VydmljZSBvciBjbGllbnQgZ2V0cyBhc3NvY2lhdGVkIHRvIGFuIEVBUiB3aGVuIHJlcXVpcmVkIGJ5IHRoZSB0YXJnZXQgYXBwbGljYXRpb24gc2VydmVyCi0tIERlcGxveTogdGhpcyB3aWxsIGNyZWF0ZSB0aGUgZGVwbG95bWVudCBjb2RlIGZvciB0aGUgc2VydmljZQotLSBJbnN0YWxsOiB0aGlzIHdpbGwgaW5zdGFsbCB0aGUgc2VydmljZSBvbiB0aGUgY2hvc2VuIHNlcnZlcgotLSBTdGFydDogdGhpcyB3aWxsIHN0YXJ0IHRoZSBzZXJ2ZXIgb25jZSB0aGUgc2VydmljZSBoYXMgYmVlbiBpbnN0YWxsZWQgb24gaXQKLS0gVGVzdDogdGhpcyB3aWxsIHByb3ZpZGUgdmFyaW91cyBvcHRpb25zIGZvciB0ZXN0aW5nIHRoZSBzZXJ2aWNlCi08L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iV1NXU0NFTjAwMjIiPgotPCEtLVNlcnZlciBsaW5rIG9mIHRoZSBGaXJzdCBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+U2VsZWN0IHlvdXIgc2VydmVyOiB0aGUgZGVmYXVsdCBzZXJ2ZXIgaXMgZGlzcGxheWVkLiBJZiB5b3Ugd2FudCB0byBkZXBsb3kgeW91ciBzZXJ2aWNlIHRvIGEgZGlmZmVyZW50IHNlcnZlciBjbGljayB0aGUgbGluayB0byBzcGVjaWZ5IGEgZGlmZmVyZW50IHNlcnZlci48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iV1NXU0NFTjAwMjMiPgotPCEtLXJ1bnRpbWUgbGluayBvZiB0aGUgRmlyc3QgUGFnZS0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB5b3VyIHJ1bnRpbWU6IHRoZSBkZWZhdWx0IHJ1bnRpbWUgaXMgZGlzcGxheWVkLiBJZiB5b3Ugd2FudCB0byBkZXBsb3kgeW91ciBzZXJ2aWNlIHRvIGEgZGlmZmVyZW50IHJ1bnRpbWUgY2xpY2sgdGhlIGxpbmsgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBydW50aW1lLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAyNCI+Ci08IS0tcHJvamVjdHMgbGluayBvZiB0aGUgRmlyc3QgUGFnZS0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGUgc2VydmljZSBwcm9qZWN0OiB0aGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBwcm9qZWN0IHNlbGVjdGVkIGluIHlvdXIgd29ya3NwYWNlIGlzIGRpc3BsYXllZC4gVG8gc2VsZWN0IGEgZGlmZmVyZW50IHByb2plY3QgYW5kIEVBUiBjbGljayBvbiB0aGUgcHJvamVjdCBsaW5rLiBFbnN1cmUgdGhhdCB0aGUgcHJvamVjdCBzZWxlY3RlZCBhcyB0aGUgQ2xpZW50IFdlYiBQcm9qZWN0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBTZXJ2aWNlIFdlYiBQcm9qZWN0LCBvciB0aGUgc2VydmljZSB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBjbGllbnQncyBnZW5lcmF0ZWQgYXJ0aWZhY3RzLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJXU1dTQ0VOMDAzMCI+Ci08IS0tZmlsZSBvdmVyd3JpdGUgY2hlY2tib3ggb2YgdGhlIEZpcnN0IFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5UaGlzIGFsbG93cyB5b3UgdG8gb3ZlcndyaXRlIGZpbGVzIHdpdGhvdXQgcmVjZWl2aW5nIGEgd2FybmluZyBtZXNzYWdlIGFza2luZyBmb3IgY29uZmlybWF0aW9uIHdoZW4gb3ZlcndyaXRpbmcgZmlsZXMuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPC9jb250ZXh0cz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyLy5jdnNpZ25vcmUgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTQwZmIyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLW9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlcl8xLjAuMC5qYXIKLWJhawotdGVtcAotRGl0YUxpbmsuY2F0Ci1idWlsZC54bWwKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyLy5wcm9qZWN0IGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiM2RjYjEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXI8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9Eb2NCdWlsZC54bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9Eb2NCdWlsZC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZGY1ZWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvRG9jQnVpbGQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Ci08IS0tIAotCi0JVGhpcyBzY3JpcHQgYnVpbGQgdGhlIEhlbHAgcGx1Zy1pbiBieSB0cmFuc2Zvcm1pbmcgdGhlIERJVEEgc291cmNlIGZpbGVzIGludG8gSFRNTC4KLQkKLQlUbyB1c2UgdGhpcyBzY3JpcHQsIHlvdSBtdXN0IGluc3RhbGwgRElUQS1PVCBvbiB5b3VyIG1hY2hpbmUgaW4gdGhlIGRpcmVjdG9yeQotCWRlZmluZWQgYnkgdGhlIGRpdGEub3QuZGlyIHByb3BlcnR5LgotCQotCVJ1biB0aGUgZGVmYXVsdCB0YXJnZXQgYWZ0ZXIgeW91IGVkaXQgdGhlIERJVEEgc291cmNlIGZpbGVzIHRvIHJlZ2VuZXJhdGUgdGhlIEhUTUwuCi0JCi0JVG8gY3VzdG9taXplIHRoaXMgc2NyaXB0IGZvciBvdGhlciBIZWxwIHBsdWctaW5zLCBtb2RpZnkgdGhlIHZhbHVlIG9mIHRoZSBhcmdzLmlucHV0IHByb3BlcnR5Ci0JdG8gYmUgdGhlIERJVEEgbWFwIGZpbGUgZm9yIHRoZSBwbHVnLWluLgotCQotCU5PVEU6IFRoaXMgc2NyaXB0IGFzc3VtZXMgdGhhdCBsaW5rcyB0byBzaWJsaW5nIEhlbHAgcGx1Zy1pbnMgaGF2ZSBzY29wZT0icGVlciIsIG90aGVyd2lzZSB0aGUKLQlvdXRwdXQgZGlyZWN0b3J5IHN0cnVjdHVyZSB3aWxsIGJlIHNoaWZ0ZWQgaW5jb3JyZWN0bHkuCi0JCi0JTk9URTogVGhpcyBzY3JpcHQgYXNzdW1lcyB0aGF0IHlvdSBoYW5kIGNvZGUgeW91ciBwbHVnaW4ueG1sIGZpbGUgaW4gbXlwbHVnaW4ueG1sLiBUaGlzIGZpbGUKLQl3aWxsIGJlIGNvcGllZCBvdmVyIHRoZSBnZW5lcmF0ZWQgcGx1Z2luLnhtbCB3aGljaCBpcyBjdXJyZW50bHkgbm90IGJlaW5nIGdlbmVyYXRlZCBjb3JyZWN0bHkKLQlieSBESVRBLU9ULgotCQotCUNoYW5nZUxvZzoKLQkyMDA2LTA0LTA1IEFydGh1ciBSeW1hbiA8cnltYW5AY2EuaWJtLmNvbT4KLQktIENyZWF0ZWQuCi0JMjAwOC0wNS0wNSBLYXRlIFByaWNlIDxrYXRlcEBjYS5pYm0uY29tPgotCS0gbW9kaWZpZWQgdG8gYWRkIGdlbmVyYXRpb24gb2YgcHJlLWJ1aWx0IGhlbHAgaW5kZXguIAotCS0gTXVzdCBkZWxldGUgL2luZGV4IGZvbGRlciBiZWZvcmUgcnVubmluZyBidWlsZAotLS0+Ci08cHJvamVjdCBuYW1lPSJlY2xpcHNlaGVscCIgZGVmYXVsdD0iYWxsIj4KLQotCTxwcm9wZXJ0eSBuYW1lPSJkaXRhLm90LmRpciIgbG9jYXRpb249IkM6L0RJVEEtT1QxLjIuMiIgLz4KLQotCTxwYXRoIGlkPSJkb3N0LmNsYXNzLnBhdGgiPgotCQk8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7ZGl0YS5vdC5kaXJ9JHtmaWxlLnNlcGFyYXRvcn1saWIke2ZpbGUuc2VwYXJhdG9yfWRvc3QuamFyIiAvPgotCTwvcGF0aD4KLQotCTx0YXNrZGVmIG5hbWU9ImludGVncmF0ZSIgY2xhc3NuYW1lPSJvcmcuZGl0YS5kb3N0LnBsYXRmb3JtLkludGVncmF0b3JUYXNrIj4KLQkJPGNsYXNzcGF0aCByZWZpZD0iZG9zdC5jbGFzcy5wYXRoIiAvPgotCTwvdGFza2RlZj4KLQk8dGFyZ2V0IG5hbWU9ImFsbCIgZGVwZW5kcz0iaW50ZWdyYXRlLCBlY2xpcHNlaGVscCI+Ci0JPC90YXJnZXQ+Ci0JPHRhcmdldCBuYW1lPSJpbnRlZ3JhdGUiPgotCQk8aW50ZWdyYXRlIGRpdGFkaXI9IiR7ZGl0YS5vdC5kaXJ9IiAvPgotCTwvdGFyZ2V0PgotCi0JPCEtLSByZXZpc2UgYmVsb3cgaGVyZSAtLT4KLQk8dGFyZ2V0IG5hbWU9ImVjbGlwc2VoZWxwIj4KLQkJPGFudCBhbnRmaWxlPSIke2RpdGEub3QuZGlyfSR7ZmlsZS5zZXBhcmF0b3J9Y29uZHVjdG9yLnhtbCIgdGFyZ2V0PSJpbml0IiBkaXI9IiR7ZGl0YS5vdC5kaXJ9Ij4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmNvcHljc3MiIHZhbHVlPSJubyIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmNzc3BhdGgiIHZhbHVlPSIuLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5lY2xpcHNlLnByb3ZpZGVyIiB2YWx1ZT0iRWNsaXBzZS5vcmciIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5lY2xpcHNlLnZlcnNpb24iIHZhbHVlPSIzLjMuMCIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmlucHV0IiBsb2NhdGlvbj0id3Njb25zdW1wdGlvbnRfdG9jLmRpdGFtYXAiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iY2xlYW4udGVtcCIgdmFsdWU9InRydWUiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iZGl0YS5leHRuYW1lIiB2YWx1ZT0iLmRpdGEiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iZGl0YS50ZW1wLmRpciIgbG9jYXRpb249InRlbXAiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0ib3V0cHV0LmRpciIgbG9jYXRpb249IiIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJ0cmFuc3R5cGUiIHZhbHVlPSJlY2xpcHNlaGVscCIgLz4KLQkJPC9hbnQ+Ci0JCTxjb3B5IGZpbGU9Im15cGx1Z2luLnhtbCIgdG9maWxlPSJwbHVnaW4ueG1sIiBvdmVyd3JpdGU9InllcyIgLz4KLQk8L3RhcmdldD4KLQk8dGFyZ2V0IG5hbWU9ImJ1aWxkLmluZGV4IiBkZXNjcmlwdGlvbj0iQnVpbGRzIHNlYXJjaCBpbmRleCBmb3IgdGhlIHBsdWctaW4iIGlmPSJlY2xpcHNlLnJ1bm5pbmciPgotCSAgICAgPGhlbHAuYnVpbGRIZWxwSW5kZXggbWFuaWZlc3Q9InBsdWdpbi54bWwiIGRlc3RpbmF0aW9uPSIuIi8+Ci0JPC90YXJnZXQ+CQotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjExMTJlZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJXBsdWdpbk5hbWUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlcjsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjU1MC5xdWFsaWZpZXIKLUJ1bmRsZS1WZW5kb3I6ICVwbHVnaW5Qcm92aWRlcgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvYWJvdXQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvYnVpbGQucHJvcGVydGllcyBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlYmQ0MDIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgd3Njb25zdW1wdGlvbmJ1aWxkX3RvYy54bWwsXAotICAgICAgICAgICAgICAgd3Njb25zdW1wdGlvbnRfdG9jLnhtbCxcCi0gICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXJpbmRleC54bWwsXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICBpbWFnZXMvLFwKLSAgICAgICAgICAgICAgIGNvbmNlcHRzLyouaHRtKixcCi0gICAgICAgICAgICAgICB0YXNrcy8qLmh0bSosXAotICAgICAgICAgICAgICAgcmVmLyouaHRtKixcCi0gICAgICAgICAgICAgICBpbmRleC8sXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvCi1zcmMuaW5jbHVkZXMgPSBidWlsZC5wcm9wZXJ0aWVzLFwKLQkJICAgICAgICoubWFwbGlzdCxcCi0gICAgICAgICAgICAgICAqLmRpdGFtYXAsXAotCQkgICAgICAgY29uY2VwdHMvKi5kaXRhLFwKLSAgICAgICAgICAgICAgIHRhc2tzLyouZGl0YSxcCi0gICAgICAgICAgICAgICByZWYvKi5kaXRhCi1iaW4uZXhjbHVkZXMgPSBEb2NCdWlsZC54bWwsXAotICAgICAgICAgICAgICAgbXlQbHVnaW4qLnhtbApkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvY29uY2VwdHMvY3VkZGkuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N1ZGRpLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYWJiMzguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvY29uY2VwdHMvY3VkZGkuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDUsIHYuNDAwMi0tPgotPCFET0NUWVBFIGNvbmNlcHQgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgQ29uY2VwdC8vRU4iCi0gImNvbmNlcHQuZHRkIj4KLTxjb25jZXB0IGlkPSJjdWRkaSIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpPC9zZWFyY2h0aXRsZT4KLTwvdGl0bGVhbHRzPgotPHNob3J0ZGVzYz5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSBzcGVjaWZpY2F0aW9uCi1kZWZpbmVzIGEgd2F5IHRvIHB1Ymxpc2ggYW5kIGRpc2NvdmVyIGluZm9ybWF0aW9uIGFib3V0IFdlYiBzZXJ2aWNlcy48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+VURESTwvaW5kZXh0ZXJtPjxpbmRleHRlcm0+VW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksCi1hbmQgSW50ZWdyYXRpb24gPC9pbmRleHRlcm0+PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPlVEREk8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPGNvbmJvZHk+Ci08cD5VRERJIGhhcyB0d28gZnVuY3Rpb25zOiA8dWw+Ci08bGk+SXQgaXMgYSBTT0FQLWJhc2VkIHByb3RvY29sIHRoYXQgZGVmaW5lcyBob3cgY2xpZW50cyBjb21tdW5pY2F0ZSB3aXRoCi1VRERJIHJlZ2lzdHJpZXMuPC9saT4KLTxsaT5JdCBpcyBhIHBhcnRpY3VsYXIgc2V0IG9mIGdsb2JhbCByZXBsaWNhdGVkIHJlZ2lzdHJpZXMuPC9saT4KLTwvdWw+PC9wPgotPHA+VURESSBpbmNsdWRlcyBhbiBYTUwgc2NoZW1hIGZvciBTT0FQIG1lc3NhZ2VzIHRoYXQgZGVmaW5lcyBhIHNldCBvZiBkb2N1bWVudHMKLXRvIGRlc2NyaWJlIGJ1c2luZXNzIGFuZCBzZXJ2aWNlcyBpbmZvcm1hdGlvbiwgYSBjb21tb24gc2V0IG9mIEFQSXMgZm9yIHF1ZXJ5aW5nCi1hbmQgcHVibGlzaGluZyBpbmZvcm1hdGlvbiB0byB0aGUgZGlyZWN0b3JpZXMsIGFuZCBhbiBBUEkgZm9yIHJlcGxpY2F0aW5nCi1kaXJlY3RvcnkgZW50cmllcyBiZXR3ZWVuIHBlZXIgVURESSBub2Rlcy48L3A+Ci08cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBVRERJIHJlZmVyIHRvICA8eHJlZiBmb3JtYXQ9Imh0bWwiIGhyZWY9Imh0dHA6Ly93d3cudWRkaS5vcmciCi1zY29wZT0iZXh0ZXJuYWwiPnd3dy51ZGRpLm9yZzwveHJlZj48L3A+Ci08c2VjdGlvbj48dGl0bGU+VURESSByZWdpc3RyaWVzPC90aXRsZT48cD5VRERJIG1hbmFnZXMgdGhlIGRpc2NvdmVyeSBvZiBXZWIKLXNlcnZpY2VzIGJ5IHJlbHlpbmcgb24gYSBkaXN0cmlidXRlZCByZWdpc3RyeSBvZiBidXNpbmVzc2VzIGFuZCB0aGVpciBzZXJ2aWNlCi1kZXNjcmlwdGlvbnMgaW1wbGVtZW50ZWQgaW4gYSBjb21tb24gWE1MIGZvcm1hdC4gQmVmb3JlIHlvdSBjYW4gcHVibGlzaCB5b3VyCi1idXNpbmVzcyBlbnRpdHkgYW5kIFdlYiBzZXJ2aWNlIHRvIGEgcHVibGljIHJlZ2lzdHJ5LCB5b3UgbXVzdCBmaXJzdCByZWdpc3RlcgoteW91ciBidXNpbmVzcyBlbnRpdHkgd2l0aCBhIFVEREkgcmVnaXN0cnkuPC9wPjxwPlVEREkgcmVnaXN0cmllcyBjb21lIGluIHR3bwotZm9ybXM6IHB1YmxpYyBhbmQgcHJpdmF0ZS4mbmJzcDsgQm90aCB0eXBlcyBjb21wbHkgdG8gdGhlIHNhbWUgc3BlY2lmaWNhdGlvbnMuJm5ic3A7Ci1BIHByaXZhdGUgcmVnaXN0cnkgZW5hYmxlcyB5b3UgdG8gcHVibGlzaCBhbmQgdGVzdCB5b3VyIGludGVybmFsIGUtYnVzaW5lc3MKLWFwcGxpY2F0aW9ucyBpbiZuYnNwO2Egc2VjdXJlLCBwcml2YXRlIGVudmlyb25tZW50LjwvcD48cD5BIHB1YmxpYyByZWdpc3RyeQotaXMgYSBjb2xsZWN0aW9uIG9mIHBlZXIgZGlyZWN0b3JpZXMgdGhhdCBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGJ1c2luZXNzZXMKLWFuZCBzZXJ2aWNlcy4gSXQgbG9jYXRlcyBzZXJ2aWNlcyB0aGF0IGFyZSByZWdpc3RlcmVkIGF0IG9uZSBvZiBpdHMgcGVlciBub2RlcwotYW5kIGZhY2lsaXRhdGVzIHRoZSBkaXNjb3Zlcnkgb2YgcHVibGlzaGVkIFdlYiBzZXJ2aWNlcy4gRGF0YSBpcyByZXBsaWNhdGVkCi1hdCBlYWNoIG9mIHRoZSByZWdpc3RyaWVzIG9uIGEgcmVndWxhciBiYXNpcy4gVGhpcyBlbnN1cmVzIGNvbnNpc3RlbmN5IGluCi1zZXJ2aWNlIGRlc2NyaXB0aW9uIGZvcm1hdHMgYW5kIG1ha2VzIGl0IGVhc3kgdG8gdHJhY2sgY2hhbmdlcyBhcyB0aGV5IG9jY3VyLiA8dG0KLXRtY2xhc3M9ImlibSIgdG1vd25lcj0iSUJNIENvcnBvcmF0aW9uIiB0bXR5cGU9InJlZyIgdHJhZGVtYXJrPSJJQk0iPklCTTwvdG0+IG1haW50YWlucwotdHdvIHB1YmxpYyByZWdpc3RyaWVzIGNhbGxlZCB0aGUgPHRtIHRtY2xhc3M9ImlibSIgdG1vd25lcj0iSUJNIENvcnBvcmF0aW9uIgotdG10eXBlPSJyZWciIHRyYWRlbWFyaz0iSUJNIj5JQk08L3RtPiBVRERJIEJ1c2luZXNzIFJlZ2lzdHJ5IGFuZCB0aGUgPHRtIHRtY2xhc3M9ImlibSIKLXRtb3duZXI9IklCTSBDb3Jwb3JhdGlvbiIgdG10eXBlPSJyZWciIHRyYWRlbWFyaz0iSUJNIj5JQk08L3RtPiBVRERJIFRlc3QKLVJlZ2lzdHJ5LiBUaGUgPHRtIHRtY2xhc3M9ImlibSIgdG1vd25lcj0iSUJNIENvcnBvcmF0aW9uIiB0bXR5cGU9InJlZyIgdHJhZGVtYXJrPSJJQk0iPklCTTwvdG0+IFVEREkKLVRlc3QgUmVnaXN0cnkgYWxsb3dzIHlvdSB0byBkZXZlbG9wIHlvdXIgV2ViIHNlcnZpY2UgYW5kIGV4cGVyaWVuY2UgdGhlIFVEREkKLXJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdpdGhvdXQgcGxhY2luZyB5b3VyIFdlYiBzZXJ2aWNlIGluIGFuIG9mZmljaWFsIHJlZ2lzdHJ5LiZuYnNwOwotVXNlIHRoZSA8dG0gdG1jbGFzcz0iaWJtIiB0bW93bmVyPSJJQk0gQ29ycG9yYXRpb24iIHRtdHlwZT0icmVnIiB0cmFkZW1hcms9IklCTSI+SUJNPC90bT4gVURESQotVGVzdCBSZWdpc3RyeSB0byBleHBlcmltZW50IHdpdGggVURESSwgYW5kIHRvIHRlc3QgYW5kIHZhbGlkYXRlIHlvdXIgV2ViIHNlcnZpY2UuJm5ic3A7Ci1Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgSUJNJ3MgcHVibGljIHJlZ2lzdHJpZXMsIHJlZmVyIHRvICA8eHJlZiBmb3JtYXQ9Imh0bWwiCi1ocmVmPSJodHRwOi8vdWRkaS5pYm0uY29tIiBzY29wZT0iZXh0ZXJuYWwiPmh0dHA6Ly91ZGRpLmlibS5jb208L3hyZWY+IEZvcgotYSBsaXN0IG9mIHB1YmxpYyByZWdpc3RyaWVzLCByZWZlciB0byAgPHhyZWYgaHJlZj0iaHR0cDovL3d3dy51ZGRpLm9yZy9yZWdpc3Rlci5odG1sIgotc2NvcGU9ImV4dGVybmFsIj5odHRwOi8vd3d3LnVkZGkub3JnL3JlZ2lzdGVyLmh0bWw8L3hyZWY+PC9wPjxwPkEgcHJpdmF0ZQotcmVnaXN0cnkgYWxsb3dzIHlvdSB0byBwdWJsaXNoIGFuZCB0ZXN0IHlvdXIgaW50ZXJuYWwgYXBwbGljYXRpb25zIGluIGEgc2VjdXJlLAotcHJpdmF0ZSBlbnZpcm9ubWVudC48L3A+PHA+VGhlIFVEREkgQnVzaW5lc3MgUmVnaXN0cnkgYWN0cyBhcyBhIEIyQiBkaXJlY3RvcnkKLWxpbmtpbmcgbWFya2V0cGxhY2VzLCBidXllcnMsIGFuZCBzZWxsZXJzLiBUaGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgaW4gdGhlCi1yZWdpc3RyeSBjb25zaXN0cyBvZiB0aHJlZSBjb21wb25lbnRzOiB3aGl0ZSBwYWdlcywgeWVsbG93IHBhZ2VzLCBhbmQgZ3JlZW4KLXBhZ2VzLiBXaGl0ZSBwYWdlcyBpbmNsdWRlIHRoZSBidXNpbmVzcyBuYW1lLCBjb250YWN0IGluZm9ybWF0aW9uLCBhbmQgYSB0ZXh0Ci1kZXNjcmlwdGlvbiBvZiB0aGUgYnVzaW5lc3MncyBzZXJ2aWNlcy4gWWVsbG93IHBhZ2VzIGluY2x1ZGUgaW5kdXN0cmlhbCBjYXRlZ29yaXphdGlvbnMKLWJhc2VkIG9uIHN0YW5kYXJkIHRheG9ub21pZXMgc3VjaCBhcyBOQUlDUywgSVNPIDMxNjYsIGFuZCBVTlNQU0MuIEdyZWVuIHBhZ2VzCi1pbmNsdWRlIHJlZmVyZW5jZXMgdG8gc3BlY2lmaWNhdGlvbnMgZm9yIFdlYiBzZXJ2aWNlcyBhbmQgcG9pbnRlcnMgdG8gdmFyaW91cwotZmlsZSBhbmQgVVJMLWJhc2VkIGRpc2NvdmVyeSBtZWNoYW5pc21zLiBUaGlzIG1ha2VzIGl0IGVhc3kgZm9yIGJ1c2luZXNzZXMKLXRvIGludGVncmF0ZSBhY3Jvc3MgbWFya2V0cGxhY2VzLiBCZWNhdXNlIGl0IGlzIHJlZ2lzdGVyZWQsIGluZm9ybWF0aW9uIGlzCi1tYWRlIGF2YWlsYWJsZSBhY3Jvc3MgYWxsIGFwcGxpY2F0aW9ucy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gTkFJQ1MgcmVmZXIKLXRvICA8eHJlZiBmb3JtYXQ9Imh0bWwiIGhyZWY9Imh0dHA6Ly93d3cubmFpY3MuY29tIiBzY29wZT0iZXh0ZXJuYWwiPnd3dy5uYWljcy5jb208L3hyZWY+IEZvcgotbW9yZSBpbmZvcm1hdGlvbiBvbiBVTlNQU0MgcmVmZXIgdG8gIDx4cmVmIGZvcm1hdD0iaHRtbCIgaHJlZj0iaHR0cDovL3d3dy51bnNwc2Mub3JnIgotc2NvcGU9ImV4dGVybmFsIj53d3cudW5zcHNjLm9yZzwveHJlZj4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gSVNPIDMxNjYgcmVmZXIKLXRvICA8eHJlZiBmb3JtYXQ9Imh0bWwiIGhyZWY9Imh0dHA6Ly93d3cuaXNvLm9yZy9pc28vZW4vcHJvZHMtc2VydmljZXMvaXNvMzE2Nm1hL2luZGV4Lmh0bWwiCi1zY29wZT0iZXh0ZXJuYWwiPmh0dHA6Ly93d3cuaXNvLm9yZy9pc28vZW4vcHJvZHMtc2VydmljZXMvaXNvMzE2Nm1hL2luZGV4Lmh0bWw8L3hyZWY+PC9wPjxwPkJ1c2luZXNzZXMKLXBvcHVsYXRlIHRoZSByZWdpc3RyeSB3aXRoIGRlc2NyaXB0aW9ucyBvZiB0aGUgc2VydmljZXMgdGhhdCB0aGV5IHN1cHBvcnQuCi1VRERJIGFzc2lnbnMgYSB1bmlxdWUgaWRlbnRpZmllciB0byBlYWNoIHNlcnZpY2UgZGVzY3JpcHRpb24gYW5kIGJ1c2luZXNzCi1yZWdpc3RyYXRpb24uIFRoZXNlIGJlY29tZSB0aGUgc2VydmljZSBhbmQgYnVzaW5lc3Mga2V5cyByZXNwZWN0aXZlbHkuIFNlYXJjaAotZW5naW5lcywgYW5kIGFwcGxpY2F0aW9ucyBxdWVyeSB0aGUgcmVnaXN0cnkgdG8gZGlzY292ZXIgc2VydmljZXMuIFVEREkgc2VydmVycwotYXJlIGEgZGlyZWN0b3J5IG9mIGF2YWlsYWJsZSBzZXJ2aWNlcyBhbmQgc2VydmljZSBwcm92aWRlcnMuPC9wPjwvc2VjdGlvbj4KLTwvY29uYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIENvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iY3dzZGx1ZC5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaWx1ZC5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+UmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NJTDwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSIuLi90YXNrcy90dWRkaWV4cC5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9yZWYvcnVkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvY29uY2VwdD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N1ZGRpLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9jb25jZXB0cy9jdWRkaS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWFhODgzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N1ZGRpLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9ImNvbmNlcHQiIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgd2F5IHRvIHB1Ymxpc2ggYW5kIGRpc2NvdmVyIGluZm9ybWF0aW9uIGFib3V0IFdlYiBzZXJ2aWNlcy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgd2F5IHRvIHB1Ymxpc2ggYW5kIGRpc2NvdmVyIGluZm9ybWF0aW9uIGFib3V0IFdlYiBzZXJ2aWNlcy4iIC8+Ci08bWV0YSBjb250ZW50PSJVRERJLCBVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uLCBXZWIgc2VydmljZXMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJVRERJLCBVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uLCBXZWIgc2VydmljZXMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImN3c2RsdWQuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lsdWQuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHVkZGlleHAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vcmVmL3J1ZGRpLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0iY3VkZGkiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0iY3VkZGkiPjxhIG5hbWU9ImN1ZGRpIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvaDE+Ci0KLQotCi0KLTxkaXY+PHA+VW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbgotZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj5VRERJIGhhcyB0d28gZnVuY3Rpb25zOiA8dWw+Ci08bGk+SXQgaXMgYSBTT0FQLWJhc2VkIHByb3RvY29sIHRoYXQgZGVmaW5lcyBob3cgY2xpZW50cyBjb21tdW5pY2F0ZSB3aXRoCi1VRERJIHJlZ2lzdHJpZXMuPC9saT4KLQotPGxpPkl0IGlzIGEgcGFydGljdWxhciBzZXQgb2YgZ2xvYmFsIHJlcGxpY2F0ZWQgcmVnaXN0cmllcy48L2xpPgotCi08L3VsPgotPC9kaXY+Ci0KLTxwPlVEREkgaW5jbHVkZXMgYW4gWE1MIHNjaGVtYSBmb3IgU09BUCBtZXNzYWdlcyB0aGF0IGRlZmluZXMgYSBzZXQgb2YgZG9jdW1lbnRzCi10byBkZXNjcmliZSBidXNpbmVzcyBhbmQgc2VydmljZXMgaW5mb3JtYXRpb24sIGEgY29tbW9uIHNldCBvZiBBUElzIGZvciBxdWVyeWluZwotYW5kIHB1Ymxpc2hpbmcgaW5mb3JtYXRpb24gdG8gdGhlIGRpcmVjdG9yaWVzLCBhbmQgYW4gQVBJIGZvciByZXBsaWNhdGluZwotZGlyZWN0b3J5IGVudHJpZXMgYmV0d2VlbiBwZWVyIFVEREkgbm9kZXMuPC9wPgotCi08cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBVRERJIHJlZmVyIHRvICA8YSBocmVmPSJodHRwOi8vd3d3LnVkZGkub3JnIiB0YXJnZXQ9Il9ibGFuayI+d3d3LnVkZGkub3JnPC9hPjwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGg0IGNsYXNzPSJzZWN0aW9udGl0bGUiPlVEREkgcmVnaXN0cmllczwvaDQ+PHA+VURESSBtYW5hZ2VzIHRoZSBkaXNjb3Zlcnkgb2YgV2ViCi1zZXJ2aWNlcyBieSByZWx5aW5nIG9uIGEgZGlzdHJpYnV0ZWQgcmVnaXN0cnkgb2YgYnVzaW5lc3NlcyBhbmQgdGhlaXIgc2VydmljZQotZGVzY3JpcHRpb25zIGltcGxlbWVudGVkIGluIGEgY29tbW9uIFhNTCBmb3JtYXQuIEJlZm9yZSB5b3UgY2FuIHB1Ymxpc2ggeW91cgotYnVzaW5lc3MgZW50aXR5IGFuZCBXZWIgc2VydmljZSB0byBhIHB1YmxpYyByZWdpc3RyeSwgeW91IG11c3QgZmlyc3QgcmVnaXN0ZXIKLXlvdXIgYnVzaW5lc3MgZW50aXR5IHdpdGggYSBVRERJIHJlZ2lzdHJ5LjwvcD4KLTxwPlVEREkgcmVnaXN0cmllcyBjb21lIGluIHR3bwotZm9ybXM6IHB1YmxpYyBhbmQgcHJpdmF0ZS7CoCBCb3RoIHR5cGVzIGNvbXBseSB0byB0aGUgc2FtZSBzcGVjaWZpY2F0aW9ucy7CoAotQSBwcml2YXRlIHJlZ2lzdHJ5IGVuYWJsZXMgeW91IHRvIHB1Ymxpc2ggYW5kIHRlc3QgeW91ciBpbnRlcm5hbCBlLWJ1c2luZXNzCi1hcHBsaWNhdGlvbnMgaW7CoGEgc2VjdXJlLCBwcml2YXRlIGVudmlyb25tZW50LjwvcD4KLTxwPkEgcHVibGljIHJlZ2lzdHJ5Ci1pcyBhIGNvbGxlY3Rpb24gb2YgcGVlciBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgYnVzaW5lc3NlcwotYW5kIHNlcnZpY2VzLiBJdCBsb2NhdGVzIHNlcnZpY2VzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgYXQgb25lIG9mIGl0cyBwZWVyIG5vZGVzCi1hbmQgZmFjaWxpdGF0ZXMgdGhlIGRpc2NvdmVyeSBvZiBwdWJsaXNoZWQgV2ViIHNlcnZpY2VzLiBEYXRhIGlzIHJlcGxpY2F0ZWQKLWF0IGVhY2ggb2YgdGhlIHJlZ2lzdHJpZXMgb24gYSByZWd1bGFyIGJhc2lzLiBUaGlzIGVuc3VyZXMgY29uc2lzdGVuY3kgaW4KLXNlcnZpY2UgZGVzY3JpcHRpb24gZm9ybWF0cyBhbmQgbWFrZXMgaXQgZWFzeSB0byB0cmFjayBjaGFuZ2VzIGFzIHRoZXkgb2NjdXIuIElCTTxzdXA+wq48L3N1cD4gbWFpbnRhaW5zCi10d28gcHVibGljIHJlZ2lzdHJpZXMgY2FsbGVkIHRoZSBJQk0gVURESSBCdXNpbmVzcyBSZWdpc3RyeSBhbmQgdGhlIElCTSBVRERJIFRlc3QKLVJlZ2lzdHJ5LiBUaGUgSUJNIFVEREkKLVRlc3QgUmVnaXN0cnkgYWxsb3dzIHlvdSB0byBkZXZlbG9wIHlvdXIgV2ViIHNlcnZpY2UgYW5kIGV4cGVyaWVuY2UgdGhlIFVEREkKLXJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdpdGhvdXQgcGxhY2luZyB5b3VyIFdlYiBzZXJ2aWNlIGluIGFuIG9mZmljaWFsIHJlZ2lzdHJ5LsKgCi1Vc2UgdGhlIElCTSBVRERJCi1UZXN0IFJlZ2lzdHJ5IHRvIGV4cGVyaW1lbnQgd2l0aCBVRERJLCBhbmQgdG8gdGVzdCBhbmQgdmFsaWRhdGUgeW91ciBXZWIgc2VydmljZS7CoAotRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIElCTSdzIHB1YmxpYyByZWdpc3RyaWVzLCByZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3VkZGkuaWJtLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly91ZGRpLmlibS5jb208L2E+IEZvcgotYSBsaXN0IG9mIHB1YmxpYyByZWdpc3RyaWVzLCByZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3d3dy51ZGRpLm9yZy9yZWdpc3Rlci5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy51ZGRpLm9yZy9yZWdpc3Rlci5odG1sPC9hPjwvcD4KLTxwPkEgcHJpdmF0ZQotcmVnaXN0cnkgYWxsb3dzIHlvdSB0byBwdWJsaXNoIGFuZCB0ZXN0IHlvdXIgaW50ZXJuYWwgYXBwbGljYXRpb25zIGluIGEgc2VjdXJlLAotcHJpdmF0ZSBlbnZpcm9ubWVudC48L3A+Ci08cD5UaGUgVURESSBCdXNpbmVzcyBSZWdpc3RyeSBhY3RzIGFzIGEgQjJCIGRpcmVjdG9yeQotbGlua2luZyBtYXJrZXRwbGFjZXMsIGJ1eWVycywgYW5kIHNlbGxlcnMuIFRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCBpbiB0aGUKLXJlZ2lzdHJ5IGNvbnNpc3RzIG9mIHRocmVlIGNvbXBvbmVudHM6IHdoaXRlIHBhZ2VzLCB5ZWxsb3cgcGFnZXMsIGFuZCBncmVlbgotcGFnZXMuIFdoaXRlIHBhZ2VzIGluY2x1ZGUgdGhlIGJ1c2luZXNzIG5hbWUsIGNvbnRhY3QgaW5mb3JtYXRpb24sIGFuZCBhIHRleHQKLWRlc2NyaXB0aW9uIG9mIHRoZSBidXNpbmVzcydzIHNlcnZpY2VzLiBZZWxsb3cgcGFnZXMgaW5jbHVkZSBpbmR1c3RyaWFsIGNhdGVnb3JpemF0aW9ucwotYmFzZWQgb24gc3RhbmRhcmQgdGF4b25vbWllcyBzdWNoIGFzIE5BSUNTLCBJU08gMzE2NiwgYW5kIFVOU1BTQy4gR3JlZW4gcGFnZXMKLWluY2x1ZGUgcmVmZXJlbmNlcyB0byBzcGVjaWZpY2F0aW9ucyBmb3IgV2ViIHNlcnZpY2VzIGFuZCBwb2ludGVycyB0byB2YXJpb3VzCi1maWxlIGFuZCBVUkwtYmFzZWQgZGlzY292ZXJ5IG1lY2hhbmlzbXMuIFRoaXMgbWFrZXMgaXQgZWFzeSBmb3IgYnVzaW5lc3NlcwotdG8gaW50ZWdyYXRlIGFjcm9zcyBtYXJrZXRwbGFjZXMuIEJlY2F1c2UgaXQgaXMgcmVnaXN0ZXJlZCwgaW5mb3JtYXRpb24gaXMKLW1hZGUgYXZhaWxhYmxlIGFjcm9zcyBhbGwgYXBwbGljYXRpb25zLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBOQUlDUyByZWZlcgotdG8gIDxhIGhyZWY9Imh0dHA6Ly93d3cubmFpY3MuY29tIiB0YXJnZXQ9Il9ibGFuayI+d3d3Lm5haWNzLmNvbTwvYT4gRm9yCi1tb3JlIGluZm9ybWF0aW9uIG9uIFVOU1BTQyByZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3d3dy51bnNwc2Mub3JnIiB0YXJnZXQ9Il9ibGFuayI+d3d3LnVuc3BzYy5vcmc8L2E+IEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIElTTyAzMTY2IHJlZmVyCi10byAgPGEgaHJlZj0iaHR0cDovL3d3dy5pc28ub3JnL2lzby9lbi9wcm9kcy1zZXJ2aWNlcy9pc28zMTY2bWEvaW5kZXguaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuaXNvLm9yZy9pc28vZW4vcHJvZHMtc2VydmljZXMvaXNvMzE2Nm1hL2luZGV4Lmh0bWw8L2E+PC9wPgotPHA+QnVzaW5lc3NlcwotcG9wdWxhdGUgdGhlIHJlZ2lzdHJ5IHdpdGggZGVzY3JpcHRpb25zIG9mIHRoZSBzZXJ2aWNlcyB0aGF0IHRoZXkgc3VwcG9ydC4KLVVEREkgYXNzaWducyBhIHVuaXF1ZSBpZGVudGlmaWVyIHRvIGVhY2ggc2VydmljZSBkZXNjcmlwdGlvbiBhbmQgYnVzaW5lc3MKLXJlZ2lzdHJhdGlvbi4gVGhlc2UgYmVjb21lIHRoZSBzZXJ2aWNlIGFuZCBidXNpbmVzcyBrZXlzIHJlc3BlY3RpdmVseS4gU2VhcmNoCi1lbmdpbmVzLCBhbmQgYXBwbGljYXRpb25zIHF1ZXJ5IHRoZSByZWdpc3RyeSB0byBkaXNjb3ZlciBzZXJ2aWNlcy4gVURESSBzZXJ2ZXJzCi1hcmUgYSBkaXJlY3Rvcnkgb2YgYXZhaWxhYmxlIHNlcnZpY2VzIGFuZCBzZXJ2aWNlIHByb3ZpZGVycy48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIj5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9ImN3c2RsdWQuaHRtbCIgdGl0bGU9IlRoZSBVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSB3YXkgdG8gcHVibGlzaCBhbmQgZGlzY292ZXIgaW5mb3JtYXRpb24gYWJvdXQgV2ViIHNlcnZpY2VzLiBVRERJIGhhcyB0d28gZnVuY3Rpb25zOiAoMSkgaXQgaXMgYSBTT0FQLWJhc2VkIHByb3RvY29sIHRoYXQgZGVmaW5lcyBob3cgVURESSBjbGllbnRzIGNvbW11bmljYXRlIHdpdGggcmVnaXN0cmllcywgYW5kICgyKSBpdCBpcyBhIHBhcnRpY3VsYXIgc2V0IG9mIGdsb2JhbGx5IHJlcGxpY2F0ZWQgcmVnaXN0cmllcy4iPlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTREw8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbHVkLmh0bWwiPlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTSUw8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi90YXNrcy90dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBSZWZlcmVuY2U8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9yZWYvcnVkZGkuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbmQgbG9nZ2VkIGluIHRvIHRoZSBVRERJIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UgaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwgYmluZGluZyBpbmZvcm1hdGlvbiwgYW5kIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljYXRpb25zIGZvciBzZXJ2aWNlcy4gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLiI+RGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9jb25jZXB0cy9jd3NkbHVkLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9jb25jZXB0cy9jd3NkbHVkLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlY2JmNDUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGx1ZC5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDUsIHYuNDAwMi0tPgotPCFET0NUWVBFIGNvbmNlcHQgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgQ29uY2VwdC8vRU4iCi0gImNvbmNlcHQuZHRkIj4KLTxjb25jZXB0IGlkPSJjd3NkbHVkIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTREw8L3RpdGxlPgotPHNob3J0ZGVzYz5UaGUgVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbgotZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIFVEREkKLWhhcyB0d28gZnVuY3Rpb25zOiAoMSkgaXQgaXMgYSBTT0FQLWJhc2VkIHByb3RvY29sIHRoYXQgZGVmaW5lcyBob3cgVURESSBjbGllbnRzCi1jb21tdW5pY2F0ZSB3aXRoIHJlZ2lzdHJpZXMsIGFuZCAoMikgaXQgaXMgYSBwYXJ0aWN1bGFyIHNldCBvZiBnbG9iYWxseSByZXBsaWNhdGVkCi1yZWdpc3RyaWVzLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5VRERJPGluZGV4dGVybT5yZWxhdGlvbnNoaXAgd2l0aCBXU0RMPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08aW5kZXh0ZXJtPldTREw8aW5kZXh0ZXJtPnJlbGF0aW9uc2hpcCB3aXRoIFVEREk8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTxjb25ib2R5PgotPHA+UmVnaXN0ZXJpbmcgYSBzZXJ2aWNlIGludm9sdmVzIGZvdXIgY29yZSBkYXRhIHN0cnVjdHVyZSB0eXBlczo8L3A+Ci08dWw+Ci08bGk+VGhlICA8c3lzdGVtb3V0cHV0PmJ1c2luZXNzRW50aXR5PC9zeXN0ZW1vdXRwdXQ+IGRhdGEgdHlwZSBjb250YWlucyBpbmZvcm1hdGlvbgotYWJvdXQgdGhlIGJ1c2luZXNzIHRoYXQgaGFzIGEgcHVibGlzaGVkIHNlcnZpY2UuPC9saT4KLTxsaT5UaGUgIDxzeXN0ZW1vdXRwdXQ+YnVzaW5lc3NTZXJ2aWNlPC9zeXN0ZW1vdXRwdXQ+IGRhdGEgdHlwZSBpcyBhIGRlc2NyaXB0aW9uCi1vZiBhIFdlYiBzZXJ2aWNlLjwvbGk+Ci08bGk+VGhlICA8c3lzdGVtb3V0cHV0PmJpbmRpbmdUZW1wbGF0ZTwvc3lzdGVtb3V0cHV0PiBkYXRhIHR5cGUgY29udGFpbnMgdGVjaG5pY2FsCi1pbmZvcm1hdGlvbiBmb3IgZGV0ZXJtaW5pbmcgdGhlIGVudHJ5IHBvaW50IGFuZCBjb25zdHJ1Y3Rpb24gc3BlY2lmaWNhdGlvbnMKLWZvciBpbnZva2luZyBhIFdlYiBzZXJ2aWNlLjwvbGk+Ci08bGk+VGhlICA8c3lzdGVtb3V0cHV0PnRNb2RlbDwvc3lzdGVtb3V0cHV0PiBkYXRhIHR5cGUgcHJvdmlkZXMgYSByZWZlcmVuY2UKLXN5c3RlbSB0byBhc3Npc3QgaW4gdGhlIGRpc2NvdmVyeSBvZiBXZWIgc2VydmljZXMgYW5kIGFjdHMgYXMgYSB0ZWNobmljYWwKLXNwZWNpZmljYXRpb24gZm9yIGEgV2ViIHNlcnZpY2UuPC9saT4KLTwvdWw+Ci08cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgVURESSBkYXRhIHR5cGVzLCByZWZlciB0byB0aGUgcmVsYXRlZCByZWZlcmVuY2UKLXRvcGljcyBhdCB0aGUgZW5kIG9mIHRoaXMgdG9waWMuPC9wPgotPHA+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSBpcyBhbiBYTUwtYmFzZWQgc3RhbmRhcmQgc3BlY2lmaWNhdGlvbgotZm9yIGRlc2NyaWJpbmcgV2ViIHNlcnZpY2VzLiBXU0RMIGRlZmluZXMgYW4gWE1MIGZvcm1hdCBmb3IgZGVzY3JpYmluZyBuZXR3b3JrCi1zZXJ2aWNlcyBhcyBhIHNldCBvZiBlbmRwb2ludHMgdGhhdCBvcGVyYXRlIG9uIG1lc3NhZ2VzIHRoYXQgY29udGFpbiBlaXRoZXIKLWRvY3VtZW50LW9yaWVudGVkIG9yIHByb2NlZHVyZS1vcmllbnRlZCBpbmZvcm1hdGlvbi48L3A+Ci08cD5UaGUgV1NETCBzZXJ2aWNlIGRlc2NyaXB0aW9uIGNhbiBiZSBzdHJ1Y3R1cmVkIGluIG1hbnkgd2F5cy4gSG93ZXZlciwgdG8KLWFzc2lzdCB3aXRoIHB1Ymxpc2hpbmcgYW5kIGZpbmRpbmcgV1NETCBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBpbiBhIFVEREkgcmVnaXN0cnksCi1XU0RMIGRvY3VtZW50cyBjb25zaXN0IG9mIHR3byBtYWluIHBhcnRzOiZuYnNwOzwvcD4KLTx1bD4KLTxsaT5UaGUgc2VydmljZSBpbnRlcmZhY2UgZGVmaW5pdGlvbiBkZXNjcmliZXMgdGhlIGFic3RyYWN0IHR5cGUgaW50ZXJmYWNlCi1hbmQgaXRzIHByb3RvY29sIGJpbmRpbmcsIGtub3duIGFzIHRoZSBXU0RMIGJpbmRpbmcgZG9jdW1lbnQ8L2xpPgotPGxpPlRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGRlZmluaXRpb24gZGVzY3JpYmVzIHRoZSBzZXJ2aWNlIGFjY2VzcyBsb2NhdGlvbgotaW5mb3JtYXRpb24sIGtub3duIGFzIHRoZSBXU0RMIHNlcnZpY2UgZG9jdW1lbnQ8L2xpPgotPC91bD4KLTxwPldoZW4gY3JlYXRpbmcgV2ViIHNlcnZpY2VzIHdpdGggdGhlIEFwYWNoZSBBeGlzIHJ1bi10aW1lIGVudmlyb25tZW50LCB0aGUKLVdlYiBzZXJ2aWNlcyB0b29scyBjcmVhdGUgYSBzaW5nbGUgV1NETCBkb2N1bWVudCB3aGVuIGdlbmVyYXRpbmcgV2ViIHNlcnZpY2VzCi1mcm9tIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIiB0bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBiZWFucwotb3IgRUpCcy4gVGhpcyBXU0RMIGRvY3VtZW50IGNvbnRhaW5zIGJvdGggdGhlIHNlcnZpY2UgaW50ZXJmYWNlIGFuZCBpbXBsZW1lbnRhdGlvbgotZG9jdW1lbnRzLjwvcD4KLTxwPkEgc2VydmljZSBpbnRlcmZhY2UgaXMgZGVzY3JpYmVkIGJ5IGEgV1NETCBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIHRoZSB0eXBlcywKLWltcG9ydCwgbWVzc2FnZSwgcG9ydFR5cGUsIGFuZCBiaW5kaW5nIGVsZW1lbnRzLiBBIHNlcnZpY2UgaW50ZXJmYWNlIGNvbnRhaW5zCi10aGUgV1NETCBzZXJ2aWNlIGRlZmluaXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gaW1wbGVtZW50IG9uZSBvciBtb3JlIHNlcnZpY2VzLgotSXQgaXMgYW4gYWJzdHJhY3QgZGVmaW5pdGlvbiBvZiBhIFdlYiBzZXJ2aWNlLCBhbmQgaXMgdXNlZCB0byBkZXNjcmliZSBhIHNwZWNpZmljCi10eXBlIG9mIHNlcnZpY2UuIFRoaXMgZG9jdW1lbnQgY2FuIHJlZmVyZW5jZSBhbm90aGVyIHNlcnZpY2UgaW50ZXJmYWNlIGRvY3VtZW50Ci11c2luZyBhbiBpbXBvcnQgZWxlbWVudC4gVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBpbiB0aGlzIHByb2R1Y3QgZ2VuZXJhdGUgYQotc2VydmljZSBpbnRlcmZhY2UgZG9jdW1lbnQgdGhhdCBjb250YWlucyBvbmx5IHRoZSBtZXNzYWdlIGFuZCBwb3J0VHlwZSBlbGVtZW50cwotdGhhdCBhcmUgcmVmZXJlbmNlZCBieSB0aGUgYmluZGluZyBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIG9ubHkgYmluZGluZ3MgZm9yCi10aGUgcG9ydFR5cGUuPC9wPgotPHA+VGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gZG9jdW1lbnQgY29udGFpbnMgdGhlIHNlcnZpY2UgZWxlbWVudHMuIEEgc2VydmljZQotaW1wbGVtZW50YXRpb24gZG9jdW1lbnQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiBhIHNlcnZpY2UgdGhhdCBpbXBsZW1lbnRzCi1hIHNlcnZpY2UgaW50ZXJmYWNlLiBBdCBsZWFzdCBvbmUgb2YgdGhlIGltcG9ydCBlbGVtZW50cyB3aWxsIGNvbnRhaW4gYSByZWZlcmVuY2UKLXRvIHRoZSBXU0RMIHNlcnZpY2UgaW50ZXJmYWNlIGRvY3VtZW50OyBob3dldmVyIG1vbm9saXRoaWMgV1NETCBzdWNoIGFzIHRoYXQKLWNyZWF0ZWQgdXNpbmcgdGhlIEF4aXMgcnVuLXRpbWUgZW52aXJvbm1lbnQgZG9lcyBub3QgaGF2ZSBpbXBvcnRzLiBBIHNlcnZpY2UKLWltcGxlbWVudGF0aW9uIGRvY3VtZW50IGNhbiBjb250YWluIHJlZmVyZW5jZXMgdG8gbW9yZSB0aGFuIG9uZSBzZXJ2aWNlIGludGVyZmFjZQotZG9jdW1lbnQuPC9wPgotPHA+QSBzZXJ2aWNlIHByb3ZpZGVyIGhvc3RzIGEgV2ViIHNlcnZpY2UgYW5kIG1ha2VzIGl0IGFjY2Vzc2libGUgdXNpbmcgcHJvdG9jb2xzCi1zdWNoIGFzIFNPQVAvSFRUUCBhbmQgU09BUC9KTVMuIFRoZSBXZWIgc2VydmljZSBpcyBkZXNjcmliZWQgYnkgdGhlIFdTREwgZG9jdW1lbnRzCi10aGF0IGFyZSBzdG9yZWQgb24gdGhlIHByb3ZpZGVyJ3Mgc2VydmVyIG9yIGluIGEgc3BlY2lhbCByZXBvc2l0b3J5LiBUaGUgV1NETAotZG9jdW1lbnRzIGFyZSByZWZlcmVuY2VkIGJ5IFVEREkgYnVzaW5lc3Mgc2VydmljZXMgKHNlcnZpY2UgZG9jdW1lbnRzKSBhbmQKLXRNb2RlbHMgKGJpbmRpbmcgZG9jdW1lbnRzKS4gVGhlc2UgcG9pbnRlcnMgZW5hYmxlIGRpc2NvdmVyeSBvZiBhIFdlYiBzZXJ2aWNlCi1ieSBhIHNlcnZpY2UgcmVxdWVzdG9yLjwvcD4KLTxwPkZpZ3VyZSAxLiBSZWxhdGlvbnNoaXAgYmV0d2VlbiBVRERJIGFuZCBXU0RMLjwvcD4KLTxwPiA8aW1hZ2UgYWx0PSJJbGx1c3RyYXRpb24gb2YgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTREwuIiBocmVmPSIuLi9pbWFnZXMvd3NkbHVkZGkuZ2lmIj4KLTwvaW1hZ2U+IDwvcD4KLTxwPkZpZ3VyZSAxIGlsbHVzdHJhdGVzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBVRERJIGFuZCBXU0RMLiBUaGUgV1NETCBzZXJ2aWNlCi1lbGVtZW50IHJlZmVyZW5jZXMgdGhlIFdTREwgYmluZGluZyBlbGVtZW50LiBUaGUgVVJMIG9mIHRoZSBkb2N1bWVudCBjb250YWluaW5nCi10aGUgV1NETCBiaW5kaW5nIGVsZW1lbnQgaXMgcHVibGlzaGVkIHRvIHRoZSBVRERJIGJ1c2luZXNzIHJlZ2lzdHJ5IGFzIGEgdE1vZGVsLgotVGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgV1NETCBzZXJ2aWNlIGVsZW1lbnQgaXMgcHVibGlzaGVkIHRvCi10aGUgVURESSBidXNpbmVzcyByZWdpc3RyeSBhcyBhIGJ1c2luZXNzU2VydmljZSBhbmQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQKLXRoZSBiaW5kaW5nVGVtcGxhdGUuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFVEREkgcmVnaXN0cnkgZGF0YSBzdHJ1Y3R1cmUKLXR5cGVzLCByZWZlciB0byB0aGUgcmVsYXRlZCByZWZlcmVuY2Ugc2VjdGlvbiBhdCB0aGUgZW5kIG9mIHRoaXMgZG9jdW1lbnQuCi1Ob3RlIHRoYXQgdGhlIGltcG9ydCBwb3J0aW9uIG9mIHRoZSBkaWFncmFtIGlzIG9wdGlvbmFsIGRlcGVuZGluZyBvbiB0aGUgcnVuLXRpbWUKLWVudmlyb25tZW50OyBtb25vbGl0aGljIFdTREwgc3VjaCBhcyB0aGF0IGNyZWF0ZWQgdXNpbmcgdGhlIEF4aXMgcnVuLXRpbWUKLWVudmlyb25tZW50IGRvZXMgbm90IGhhdmUgaW1wb3J0cy48L3A+Ci08cD5UaGUgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBkZXNjcmliZXMgYW4gaW5zdGFuY2Ugb2YgYSBzZXJ2aWNlLiBUaGUgaW5zdGFuY2UKLWlzIGRlZmluZWQgdXNpbmcgYSBXU0RMIHNlcnZpY2UgZWxlbWVudC4gVGhlIHNlcnZpY2UgZWxlbWVudCBpbiBhIHNlcnZpY2UKLWltcGxlbWVudGF0aW9uIGRvY3VtZW50IGlzIHVzZWQgdG8gcHVibGlzaCBhIFVEREkgYnVzaW5lc3NTZXJ2aWNlLiBXaGVuIHB1Ymxpc2hpbmcKLWEgV1NETCBzZXJ2aWNlIGRlc2NyaXB0aW9uLCBhIHNlcnZpY2UgaW50ZXJmYWNlIG11c3QgYmUgcHVibGlzaGVkIGFzIGEgdE1vZGVsCi1iZWZvcmUgYSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGlzIHB1Ymxpc2hlZCBhcyBhIGJ1c2luZXNzU2VydmljZS48L3A+Ci08cD5BIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gaXMgcHVibGlzaGVkIGluIGEgVURESSByZWdpc3RyeSBhcyBwYXJ0IG9mIGEgYnVzaW5lc3NTZXJ2aWNlCi13aXRoIG9uZSBvciBtb3JlIGJpbmRpbmdUZW1wbGF0ZSBlbGVtZW50cy4gVGhlIGJ1c2luZXNzU2VydmljZSBpcyBwdWJsaXNoZWQKLWJ5IHRoZSBzZXJ2aWNlIHByb3ZpZGVyLiBBIG5ldyBidXNpbmVzc1NlcnZpY2UgaXMgY3JlYXRlZCBmb3IgYSBzZXJ2aWNlIGVsZW1lbnQKLXRoYXQgaXMgZGVmaW5lZCBpbiB0aGUgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBkb2N1bWVudC4gQSBuZXcgYmluZGluZ1RlbXBsYXRlCi1lbGVtZW50IGlzIGNyZWF0ZWQgd2l0aGluIGEgYnVzaW5lc3NTZXJ2aWNlIGZvciBlYWNoIHBvcnQgZWxlbWVudCB0aGF0IGlzCi1kZWZpbmVkIHdpdGhpbiBhIHNlcnZpY2UgZWxlbWVudC48L3A+Ci08cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gV1NETCBhbmQgVURESSByZWZlciB0bwotIDx4cmVmIGhyZWY9Imh0dHA6Ly91ZGRpLm9yZy9iZXN0cHJhY3RpY2VzLmh0bWwiIHNjb3BlPSJleHRlcm5hbCI+dWRkaS5vcmcvYmVzdHByYWN0aWNlcy5odG1sPC94cmVmPi48L3A+Ci08L2NvbmJvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSJjdWRkaS5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGwuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCk8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgUmVmZXJlbmNlPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL3JlZi9ydWRkaS5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpPC9saW5rdGV4dD48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC9jb25jZXB0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGx1ZC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGx1ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2ViZGI0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsdWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0iY29uY2VwdCIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJSZWxhdGlvbnNoaXAgYmV0d2VlbiBVRERJIGFuZCBXU0RMIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IlRoZSBVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSB3YXkgdG8gcHVibGlzaCBhbmQgZGlzY292ZXIgaW5mb3JtYXRpb24gYWJvdXQgV2ViIHNlcnZpY2VzLiBVRERJIGhhcyB0d28gZnVuY3Rpb25zOiAoMSkgaXQgaXMgYSBTT0FQLWJhc2VkIHByb3RvY29sIHRoYXQgZGVmaW5lcyBob3cgVURESSBjbGllbnRzIGNvbW11bmljYXRlIHdpdGggcmVnaXN0cmllcywgYW5kICgyKSBpdCBpcyBhIHBhcnRpY3VsYXIgc2V0IG9mIGdsb2JhbGx5IHJlcGxpY2F0ZWQgcmVnaXN0cmllcy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVGhlIFVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIFVEREkgaGFzIHR3byBmdW5jdGlvbnM6ICgxKSBpdCBpcyBhIFNPQVAtYmFzZWQgcHJvdG9jb2wgdGhhdCBkZWZpbmVzIGhvdyBVRERJIGNsaWVudHMgY29tbXVuaWNhdGUgd2l0aCByZWdpc3RyaWVzLCBhbmQgKDIpIGl0IGlzIGEgcGFydGljdWxhciBzZXQgb2YgZ2xvYmFsbHkgcmVwbGljYXRlZCByZWdpc3RyaWVzLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IlVEREksIHJlbGF0aW9uc2hpcCB3aXRoIFdTREwsIFdTREwsIHJlbGF0aW9uc2hpcCB3aXRoIFVEREkiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJVRERJLCByZWxhdGlvbnNoaXAgd2l0aCBXU0RMLCBXU0RMLCByZWxhdGlvbnNoaXAgd2l0aCBVRERJIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iY3VkZGkuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3JlZi9ydWRkaS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0iY3dzZGx1ZCIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTREw8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9ImN3c2RsdWQiPjxhIG5hbWU9ImN3c2RsdWQiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTREw8L2gxPgotCi0KLQotPGRpdj48cD5UaGUgVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbgotZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIFVEREkKLWhhcyB0d28gZnVuY3Rpb25zOiAoMSkgaXQgaXMgYSBTT0FQLWJhc2VkIHByb3RvY29sIHRoYXQgZGVmaW5lcyBob3cgVURESSBjbGllbnRzCi1jb21tdW5pY2F0ZSB3aXRoIHJlZ2lzdHJpZXMsIGFuZCAoMikgaXQgaXMgYSBwYXJ0aWN1bGFyIHNldCBvZiBnbG9iYWxseSByZXBsaWNhdGVkCi1yZWdpc3RyaWVzLjwvcD4KLQotPHA+UmVnaXN0ZXJpbmcgYSBzZXJ2aWNlIGludm9sdmVzIGZvdXIgY29yZSBkYXRhIHN0cnVjdHVyZSB0eXBlczo8L3A+Ci0KLTx1bD4KLTxsaT5UaGUgIDx0dCBjbGFzcz0ic3lzb3V0Ij5idXNpbmVzc0VudGl0eTwvdHQ+IGRhdGEgdHlwZSBjb250YWlucyBpbmZvcm1hdGlvbgotYWJvdXQgdGhlIGJ1c2luZXNzIHRoYXQgaGFzIGEgcHVibGlzaGVkIHNlcnZpY2UuPC9saT4KLQotPGxpPlRoZSAgPHR0IGNsYXNzPSJzeXNvdXQiPmJ1c2luZXNzU2VydmljZTwvdHQ+IGRhdGEgdHlwZSBpcyBhIGRlc2NyaXB0aW9uCi1vZiBhIFdlYiBzZXJ2aWNlLjwvbGk+Ci0KLTxsaT5UaGUgIDx0dCBjbGFzcz0ic3lzb3V0Ij5iaW5kaW5nVGVtcGxhdGU8L3R0PiBkYXRhIHR5cGUgY29udGFpbnMgdGVjaG5pY2FsCi1pbmZvcm1hdGlvbiBmb3IgZGV0ZXJtaW5pbmcgdGhlIGVudHJ5IHBvaW50IGFuZCBjb25zdHJ1Y3Rpb24gc3BlY2lmaWNhdGlvbnMKLWZvciBpbnZva2luZyBhIFdlYiBzZXJ2aWNlLjwvbGk+Ci0KLTxsaT5UaGUgIDx0dCBjbGFzcz0ic3lzb3V0Ij50TW9kZWw8L3R0PiBkYXRhIHR5cGUgcHJvdmlkZXMgYSByZWZlcmVuY2UKLXN5c3RlbSB0byBhc3Npc3QgaW4gdGhlIGRpc2NvdmVyeSBvZiBXZWIgc2VydmljZXMgYW5kIGFjdHMgYXMgYSB0ZWNobmljYWwKLXNwZWNpZmljYXRpb24gZm9yIGEgV2ViIHNlcnZpY2UuPC9saT4KLQotPC91bD4KLQotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFVEREkgZGF0YSB0eXBlcywgcmVmZXIgdG8gdGhlIHJlbGF0ZWQgcmVmZXJlbmNlCi10b3BpY3MgYXQgdGhlIGVuZCBvZiB0aGlzIHRvcGljLjwvcD4KLQotPHA+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSBpcyBhbiBYTUwtYmFzZWQgc3RhbmRhcmQgc3BlY2lmaWNhdGlvbgotZm9yIGRlc2NyaWJpbmcgV2ViIHNlcnZpY2VzLiBXU0RMIGRlZmluZXMgYW4gWE1MIGZvcm1hdCBmb3IgZGVzY3JpYmluZyBuZXR3b3JrCi1zZXJ2aWNlcyBhcyBhIHNldCBvZiBlbmRwb2ludHMgdGhhdCBvcGVyYXRlIG9uIG1lc3NhZ2VzIHRoYXQgY29udGFpbiBlaXRoZXIKLWRvY3VtZW50LW9yaWVudGVkIG9yIHByb2NlZHVyZS1vcmllbnRlZCBpbmZvcm1hdGlvbi48L3A+Ci0KLTxwPlRoZSBXU0RMIHNlcnZpY2UgZGVzY3JpcHRpb24gY2FuIGJlIHN0cnVjdHVyZWQgaW4gbWFueSB3YXlzLiBIb3dldmVyLCB0bwotYXNzaXN0IHdpdGggcHVibGlzaGluZyBhbmQgZmluZGluZyBXU0RMIHNlcnZpY2UgZGVzY3JpcHRpb25zIGluIGEgVURESSByZWdpc3RyeSwKLVdTREwgZG9jdW1lbnRzIGNvbnNpc3Qgb2YgdHdvIG1haW4gcGFydHM6wqA8L3A+Ci0KLTx1bD4KLTxsaT5UaGUgc2VydmljZSBpbnRlcmZhY2UgZGVmaW5pdGlvbiBkZXNjcmliZXMgdGhlIGFic3RyYWN0IHR5cGUgaW50ZXJmYWNlCi1hbmQgaXRzIHByb3RvY29sIGJpbmRpbmcsIGtub3duIGFzIHRoZSBXU0RMIGJpbmRpbmcgZG9jdW1lbnQ8L2xpPgotCi08bGk+VGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gZGVmaW5pdGlvbiBkZXNjcmliZXMgdGhlIHNlcnZpY2UgYWNjZXNzIGxvY2F0aW9uCi1pbmZvcm1hdGlvbiwga25vd24gYXMgdGhlIFdTREwgc2VydmljZSBkb2N1bWVudDwvbGk+Ci0KLTwvdWw+Ci0KLTxwPldoZW4gY3JlYXRpbmcgV2ViIHNlcnZpY2VzIHdpdGggdGhlIEFwYWNoZSBBeGlzIHJ1bi10aW1lIGVudmlyb25tZW50LCB0aGUKLVdlYiBzZXJ2aWNlcyB0b29scyBjcmVhdGUgYSBzaW5nbGUgV1NETCBkb2N1bWVudCB3aGVuIGdlbmVyYXRpbmcgV2ViIHNlcnZpY2VzCi1mcm9tIEphdmHihKIgYmVhbnMKLW9yIEVKQnMuIFRoaXMgV1NETCBkb2N1bWVudCBjb250YWlucyBib3RoIHRoZSBzZXJ2aWNlIGludGVyZmFjZSBhbmQgaW1wbGVtZW50YXRpb24KLWRvY3VtZW50cy48L3A+Ci0KLTxwPkEgc2VydmljZSBpbnRlcmZhY2UgaXMgZGVzY3JpYmVkIGJ5IGEgV1NETCBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIHRoZSB0eXBlcywKLWltcG9ydCwgbWVzc2FnZSwgcG9ydFR5cGUsIGFuZCBiaW5kaW5nIGVsZW1lbnRzLiBBIHNlcnZpY2UgaW50ZXJmYWNlIGNvbnRhaW5zCi10aGUgV1NETCBzZXJ2aWNlIGRlZmluaXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gaW1wbGVtZW50IG9uZSBvciBtb3JlIHNlcnZpY2VzLgotSXQgaXMgYW4gYWJzdHJhY3QgZGVmaW5pdGlvbiBvZiBhIFdlYiBzZXJ2aWNlLCBhbmQgaXMgdXNlZCB0byBkZXNjcmliZSBhIHNwZWNpZmljCi10eXBlIG9mIHNlcnZpY2UuIFRoaXMgZG9jdW1lbnQgY2FuIHJlZmVyZW5jZSBhbm90aGVyIHNlcnZpY2UgaW50ZXJmYWNlIGRvY3VtZW50Ci11c2luZyBhbiBpbXBvcnQgZWxlbWVudC4gVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBpbiB0aGlzIHByb2R1Y3QgZ2VuZXJhdGUgYQotc2VydmljZSBpbnRlcmZhY2UgZG9jdW1lbnQgdGhhdCBjb250YWlucyBvbmx5IHRoZSBtZXNzYWdlIGFuZCBwb3J0VHlwZSBlbGVtZW50cwotdGhhdCBhcmUgcmVmZXJlbmNlZCBieSB0aGUgYmluZGluZyBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIG9ubHkgYmluZGluZ3MgZm9yCi10aGUgcG9ydFR5cGUuPC9wPgotCi08cD5UaGUgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBkb2N1bWVudCBjb250YWlucyB0aGUgc2VydmljZSBlbGVtZW50cy4gQSBzZXJ2aWNlCi1pbXBsZW1lbnRhdGlvbiBkb2N1bWVudCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIGEgc2VydmljZSB0aGF0IGltcGxlbWVudHMKLWEgc2VydmljZSBpbnRlcmZhY2UuIEF0IGxlYXN0IG9uZSBvZiB0aGUgaW1wb3J0IGVsZW1lbnRzIHdpbGwgY29udGFpbiBhIHJlZmVyZW5jZQotdG8gdGhlIFdTREwgc2VydmljZSBpbnRlcmZhY2UgZG9jdW1lbnQ7IGhvd2V2ZXIgbW9ub2xpdGhpYyBXU0RMIHN1Y2ggYXMgdGhhdAotY3JlYXRlZCB1c2luZyB0aGUgQXhpcyBydW4tdGltZSBlbnZpcm9ubWVudCBkb2VzIG5vdCBoYXZlIGltcG9ydHMuIEEgc2VydmljZQotaW1wbGVtZW50YXRpb24gZG9jdW1lbnQgY2FuIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBtb3JlIHRoYW4gb25lIHNlcnZpY2UgaW50ZXJmYWNlCi1kb2N1bWVudC48L3A+Ci0KLTxwPkEgc2VydmljZSBwcm92aWRlciBob3N0cyBhIFdlYiBzZXJ2aWNlIGFuZCBtYWtlcyBpdCBhY2Nlc3NpYmxlIHVzaW5nIHByb3RvY29scwotc3VjaCBhcyBTT0FQL0hUVFAgYW5kIFNPQVAvSk1TLiBUaGUgV2ViIHNlcnZpY2UgaXMgZGVzY3JpYmVkIGJ5IHRoZSBXU0RMIGRvY3VtZW50cwotdGhhdCBhcmUgc3RvcmVkIG9uIHRoZSBwcm92aWRlcidzIHNlcnZlciBvciBpbiBhIHNwZWNpYWwgcmVwb3NpdG9yeS4gVGhlIFdTREwKLWRvY3VtZW50cyBhcmUgcmVmZXJlbmNlZCBieSBVRERJIGJ1c2luZXNzIHNlcnZpY2VzIChzZXJ2aWNlIGRvY3VtZW50cykgYW5kCi10TW9kZWxzIChiaW5kaW5nIGRvY3VtZW50cykuIFRoZXNlIHBvaW50ZXJzIGVuYWJsZSBkaXNjb3Zlcnkgb2YgYSBXZWIgc2VydmljZQotYnkgYSBzZXJ2aWNlIHJlcXVlc3Rvci48L3A+Ci0KLTxwPkZpZ3VyZSAxLiBSZWxhdGlvbnNoaXAgYmV0d2VlbiBVRERJIGFuZCBXU0RMLjwvcD4KLQotPHA+IDxpbWcgc3JjPSIuLi9pbWFnZXMvd3NkbHVkZGkuZ2lmIiBhbHQ9IklsbHVzdHJhdGlvbiBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NETC4iIC8+IDwvcD4KLQotPHA+RmlndXJlIDEgaWxsdXN0cmF0ZXMgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTREwuIFRoZSBXU0RMIHNlcnZpY2UKLWVsZW1lbnQgcmVmZXJlbmNlcyB0aGUgV1NETCBiaW5kaW5nIGVsZW1lbnQuIFRoZSBVUkwgb2YgdGhlIGRvY3VtZW50IGNvbnRhaW5pbmcKLXRoZSBXU0RMIGJpbmRpbmcgZWxlbWVudCBpcyBwdWJsaXNoZWQgdG8gdGhlIFVEREkgYnVzaW5lc3MgcmVnaXN0cnkgYXMgYSB0TW9kZWwuCi1UaGUgVVJMIG9mIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBXU0RMIHNlcnZpY2UgZWxlbWVudCBpcyBwdWJsaXNoZWQgdG8KLXRoZSBVRERJIGJ1c2luZXNzIHJlZ2lzdHJ5IGFzIGEgYnVzaW5lc3NTZXJ2aWNlIGFuZCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dAotdGhlIGJpbmRpbmdUZW1wbGF0ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gVURESSByZWdpc3RyeSBkYXRhIHN0cnVjdHVyZQotdHlwZXMsIHJlZmVyIHRvIHRoZSByZWxhdGVkIHJlZmVyZW5jZSBzZWN0aW9uIGF0IHRoZSBlbmQgb2YgdGhpcyBkb2N1bWVudC4KLU5vdGUgdGhhdCB0aGUgaW1wb3J0IHBvcnRpb24gb2YgdGhlIGRpYWdyYW0gaXMgb3B0aW9uYWwgZGVwZW5kaW5nIG9uIHRoZSBydW4tdGltZQotZW52aXJvbm1lbnQ7IG1vbm9saXRoaWMgV1NETCBzdWNoIGFzIHRoYXQgY3JlYXRlZCB1c2luZyB0aGUgQXhpcyBydW4tdGltZQotZW52aXJvbm1lbnQgZG9lcyBub3QgaGF2ZSBpbXBvcnRzLjwvcD4KLQotPHA+VGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gZGVzY3JpYmVzIGFuIGluc3RhbmNlIG9mIGEgc2VydmljZS4gVGhlIGluc3RhbmNlCi1pcyBkZWZpbmVkIHVzaW5nIGEgV1NETCBzZXJ2aWNlIGVsZW1lbnQuIFRoZSBzZXJ2aWNlIGVsZW1lbnQgaW4gYSBzZXJ2aWNlCi1pbXBsZW1lbnRhdGlvbiBkb2N1bWVudCBpcyB1c2VkIHRvIHB1Ymxpc2ggYSBVRERJIGJ1c2luZXNzU2VydmljZS4gV2hlbiBwdWJsaXNoaW5nCi1hIFdTREwgc2VydmljZSBkZXNjcmlwdGlvbiwgYSBzZXJ2aWNlIGludGVyZmFjZSBtdXN0IGJlIHB1Ymxpc2hlZCBhcyBhIHRNb2RlbAotYmVmb3JlIGEgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBpcyBwdWJsaXNoZWQgYXMgYSBidXNpbmVzc1NlcnZpY2UuPC9wPgotCi08cD5BIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gaXMgcHVibGlzaGVkIGluIGEgVURESSByZWdpc3RyeSBhcyBwYXJ0IG9mIGEgYnVzaW5lc3NTZXJ2aWNlCi13aXRoIG9uZSBvciBtb3JlIGJpbmRpbmdUZW1wbGF0ZSBlbGVtZW50cy4gVGhlIGJ1c2luZXNzU2VydmljZSBpcyBwdWJsaXNoZWQKLWJ5IHRoZSBzZXJ2aWNlIHByb3ZpZGVyLiBBIG5ldyBidXNpbmVzc1NlcnZpY2UgaXMgY3JlYXRlZCBmb3IgYSBzZXJ2aWNlIGVsZW1lbnQKLXRoYXQgaXMgZGVmaW5lZCBpbiB0aGUgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBkb2N1bWVudC4gQSBuZXcgYmluZGluZ1RlbXBsYXRlCi1lbGVtZW50IGlzIGNyZWF0ZWQgd2l0aGluIGEgYnVzaW5lc3NTZXJ2aWNlIGZvciBlYWNoIHBvcnQgZWxlbWVudCB0aGF0IGlzCi1kZWZpbmVkIHdpdGhpbiBhIHNlcnZpY2UgZWxlbWVudC48L3A+Ci0KLTxwPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBXU0RMIGFuZCBVRERJIHJlZmVyIHRvCi0gPGEgaHJlZj0iaHR0cDovL3VkZGkub3JnL2Jlc3RwcmFjdGljZXMuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPnVkZGkub3JnL2Jlc3RwcmFjdGljZXMuaHRtbDwvYT4uPC9wPgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJjdWRkaS5odG1sIiB0aXRsZT0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgd2F5IHRvIHB1Ymxpc2ggYW5kIGRpc2NvdmVyIGluZm9ybWF0aW9uIGFib3V0IFdlYiBzZXJ2aWNlcy4iPlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGwuaHRtbCI+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBSZWZlcmVuY2U8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9yZWYvcnVkZGkuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbmQgbG9nZ2VkIGluIHRvIHRoZSBVRERJIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UgaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwgYmluZGluZyBpbmZvcm1hdGlvbiwgYW5kIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljYXRpb25zIGZvciBzZXJ2aWNlcy4gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLiI+RGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmh0bWwiPldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCk8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9hZGRmYXYuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2FkZGZhdi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ODk1ZjQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2FkZGZhdi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvYWRkdWRkaS5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvYWRkdWRkaS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzOTliYjAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2FkZHVkZGkuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2JlYW5pbmZvanNwLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9iZWFuaW5mb2pzcC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYmU0MGMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2JlYW5pbmZvanNwLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9iaW5kbm9kZS5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvYmluZG5vZGUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmY1ZDAzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9iaW5kbm9kZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvYnJvd3NlYnV0dG9uLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9icm93c2VidXR0b24uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODRhNWJiLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9icm93c2VidXR0b24uZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2J1c2Fzc3QuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2J1c2Fzc3QuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmRjYmIwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9idXNhc3N0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9mYXYuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2Zhdi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlYmZhYmQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2Zhdi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvZmluZC5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvZmluZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYzNlYmUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2ZpbmQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2Zzd3NkbGljb24uZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2Zzd3NkbGljb24uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDYwZTU1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9mc3dzZGxpY29uLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9sb2dpbi5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvbG9naW4uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzdiZGQyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9sb2dpbi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvbG9naW5pY29uLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9sb2dpbmljb24uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDUxMGNhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9sb2dpbmljb24uZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2xvZ291dGljb24uZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL2xvZ291dGljb24uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzcwOWNmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9sb2dvdXRpY29uLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9tcHR3c2RsaWNvbi5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvbXB0d3NkbGljb24uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDVlNjU1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9tcHR3c2RsaWNvbi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvbmV3anNwLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9uZXdqc3AuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjRiNTA5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9uZXdqc3AuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL29wbm9kZS5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvb3Bub2RlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThlYjM0OS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvb3Bub2RlLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9wcm94eW9uanNwLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9wcm94eW9uanNwLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUyZTRlYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvcHJveHlvbmpzcC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvcHVibGlzaDIuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3B1Ymxpc2gyLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRhMTFhNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvcHVibGlzaDIuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3B1YnNlcnYuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3B1YnNlcnYuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWQzNmI3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9wdWJzZXJ2LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9yZWZzZXJ2LmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9yZWZzZXJ2LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVjMDE1Yi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvcmVmc2Vydi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvcnVuanNmLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9ydW5qc2YuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTg4NGQyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9ydW5qc2YuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3NjZW5hcmlvNy5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvc2NlbmFyaW83LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM2NTMxZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvc2NlbmFyaW83LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9zZXJ2bm9kZS5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvc2Vydm5vZGUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTEyMzNkLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy9zZXJ2bm9kZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvc29hcHVkd3MuY2RyIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3NvYXB1ZHdzLmNkcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVlZGFlYi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvc29hcHVkd3MuY2RyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3VkZGkuY2RyIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3VkZGkuY2RyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzUyZjAxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy91ZGRpLmNkcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy91ZGRpLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy91ZGRpLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EwMmMwOS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvdWRkaS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvdWRkaXJlZi5jZHIgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvdWRkaXJlZi5jZHIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ZGEzMmEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3VkZGlyZWYuY2RyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3VkZGlyZWYuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3VkZGlyZWYuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzE0OGE3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy91ZGRpcmVmLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy91ZGRpdmlldy5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvdWRkaXZpZXcuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjAxYmM4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy91ZGRpdmlldy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbGJuZGRldGwuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxibmRkZXRsLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAyMjYyZi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbGJuZGRldGwuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxkZXRhaWwuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxkZXRhaWwuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjU0NTY4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RsZGV0YWlsLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RsZHRsaWNvbi5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbGR0bGljb24uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGVlNjdjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RsZHRsaWNvbi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbGV4cC5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbGV4cC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZWYxMGEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxleHAuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxmYXZpY29uLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RsZmF2aWNvbi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YWNjM2QuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxmYXZpY29uLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RsaWNvbi5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbGljb24uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWVjMzI2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RsaWNvbi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbG5vZGUuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxub2RlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I3NTIxYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbG5vZGUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxvcC5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbG9wLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg3ZGQ0YS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbG9wLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2Rsb3ByZXQuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxvcHJldC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjODNlMzUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxvcHJldC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbG9wcmV0eC5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbG9wcmV0eC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYTIwMjYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxvcHJldHguZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxwYWdlLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RscGFnZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzN2MxYzAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxwYWdlLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2Rsc2VydmRldC5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbHNlcnZkZXQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODdjYjg1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2Rsc2VydmRldC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbHN0YXR4LmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2Rsc3RhdHguZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWJhNzg3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2Rsc3RhdHguZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGx0ZW1wLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RsdGVtcC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YmQyMDcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGx0ZW1wLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RsdWRkaS5jZHIgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbHVkZGkuY2RyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTQ5MDk4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2RsdWRkaS5jZHIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbHVkZGkuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGx1ZGRpLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmViYjdkNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NkbHVkZGkuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzaWxwYWdlLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2lscGFnZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZTZlMDMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzaWxwYWdlLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2lsdmlldy5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NpbHZpZXcuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODlkNjg5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2ltYWdlcy93c2lsdmlldy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NpbmpzcC5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3NpbmpzcC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNWQ1ZjAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzaW5qc3AuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW1hZ2VzL3dzd2l6aWNvbi5naWYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3N3aXppY29uLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IxN2FhNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbWFnZXMvd3N3aXppY29uLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2luZGV4L19rLmNmcyBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2luZGV4L19rLmNmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU4N2MxMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbmRleC9fay5jZnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbmRleC9kZWxldGFibGUgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbmRleC9kZWxldGFibGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5M2Y0NzAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW5kZXgvZGVsZXRhYmxlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmZiOTEwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfY29udHJpYnV0aW9ucworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotI1RoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZTsgZG8gbm90IGVkaXQuDQotI1dlZCBNYXkgMTQgMTY6NDk6MjkgRURUIDIwMDgNCi1vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXI9b3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyXG4xLjAuNDAwLnF1YWxpZmllcg0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfZGVwZW5kZW5jaWVzIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kZXBlbmRlbmNpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMDJkNjQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kZXBlbmRlbmNpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSNUaGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGU7IGRvIG5vdCBlZGl0Lg0KLSNXZWQgTWF5IDE0IDE2OjQ5OjI5IEVEVCAyMDA4DQotbHVjZW5lPTEuOS4xLnYyMDA4MDMwNjE4MTENCi1hbmFseXplcj1vcmcuZWNsaXBzZS5oZWxwLmJhc2VcIzMuMy4xMDAudjIwMDgwNDI1P2xvY2FsZVw9ZW4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RvY3MgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RvY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNTQ2ZmQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kb2NzCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotI1RoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZTsgZG8gbm90IGVkaXQuDQotI1dlZCBNYXkgMTQgMTY6NDk6MjkgRURUIDIwMDgNCi0vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3Rsb2dleHAuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YWRkcmVnLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGRpc2Nvdi5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RyZWcuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90Z2Vud3NpbC5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsdWQuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YXNzZXJ0Lmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvY29uY2VwdHMvY3VkZGkuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9yZWYvcnVkZGkuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dXBkYXRlLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVkZGlleHAuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90d3NkbGV4cC5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1bnB1Yi5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RzdHJ0ZXhwLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGJrbXJrLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHB1Ymxpc2guaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YnVzcHJvai5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RwdWJlbnQuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dGVzdHdzZGwuaHRtbD0wDQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvaW5kZXgvc2VnbWVudHMgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbmRleC9zZWdtZW50cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyMjE1Ni4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9pbmRleC9zZWdtZW50cworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL215cGx1Z2luLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL215cGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgxN2FhNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9teXBsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC50b2MiPz4gCi08IS0tIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gLS0+Ci08cGx1Z2luPgotICAKLQk8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI+Ci0JCTx0b2MgZmlsZT0id3Njb25zdW1wdGlvbmJ1aWxkX3RvYy54bWwiLz4KLQkJPHRvYyBmaWxlPSJ3c2NvbnN1bXB0aW9udF90b2MueG1sIiAvPgotICAgICAgIDxpbmRleCBwYXRoPSJpbmRleC8iLz4KLQk8L2V4dGVuc2lvbj4KLSAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLmluZGV4Ij4KLSAgICAgIDxpbmRleCBmaWxlPSJvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXJpbmRleC54bWwiLz4KLTwvZXh0ZW5zaW9uPgotICAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuYmFzZS5sdWNlbmVTZWFyY2hQYXJ0aWNpcGFudHMiPgotICAgICAgPGJpbmRpbmcgcGFydGljaXBhbnRJZD0ib3JnLmVjbGlwc2UuaGVscC5iYXNlLnhodG1sIi8+Ci0gICA8L2V4dGVuc2lvbj4KLTwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci5tYXBsaXN0IGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyLm1hcGxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzA0YjAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyLm1hcGxpc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08bWFwbGlzdCB2ZXJzaW9uPSIzLjYuMiI+Ci0gIDxuYXY+Ci0gICAgPG1hcCBmaWxlPSJ3c2NvbnN1bXB0aW9uYnVpbGRfdG9jLmRpdGFtYXAiLz4KLSAgICA8bWFwIGZpbGU9IndzY29uc3VtcHRpb250X3RvYy5kaXRhbWFwIi8+Ci0gIDwvbmF2PgotICA8bGluaz4KLSAgICA8bWFwIGZpbGU9IndzY29uc3VtcHRpb250X3RvYy5kaXRhbWFwIi8+Ci0gICAgPG1hcCBmaWxlPSJ3c2NvbnN1bXB0aW9uYnVpbGRfdG9jLmRpdGFtYXAiLz4KLSAgPC9saW5rPgotPC9tYXBsaXN0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyaW5kZXguaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlcmluZGV4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyNTI3YTYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyaW5kZXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIGh0bWwKLSAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9InNlY3VyaXR5IiBjb250ZW50PSJwdWJsaWMiIC8+Ci08bWV0YSBuYW1lPSJSb2JvdHMiIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgbmFtZT0iREMuRm9ybWF0IiBjb250ZW50PSJYSFRNTCIgLz4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9pYm1kaXRhLmNzcyIgLz4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiAvPgotPHRpdGxlPkluZGV4PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5PgotPGgxPkluZGV4PC9oMT4KLTxhIG5hbWU9IklEWDBfNDIiIGhyZWY9IiNJRFgxXzQyIj5CPC9hPgotPGEgbmFtZT0iSURYMF80NCIgaHJlZj0iI0lEWDFfNDQiPkQ8L2E+Ci08YSBuYW1lPSJJRFgwXzUyIiBocmVmPSIjSURYMV81MiI+UjwvYT4KLTxhIG5hbWU9IklEWDBfNTMiIGhyZWY9IiNJRFgxXzUzIj5TPC9hPgotPGEgbmFtZT0iSURYMF81NSIgaHJlZj0iI0lEWDFfNTUiPlU8L2E+Ci08YSBuYW1lPSJJRFgwXzU3IiBocmVmPSIjSURYMV81NyI+VzwvYT4KLTxocj48L2hyPgotPHN0cm9uZz48YSBuYW1lPSJJRFgxXzQyIiBocmVmPSIjSURYMF80MiI+QjwvYT48L3N0cm9uZz4KLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT5idXNpbmVzcyBlbnRpdGllcwotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9InRhc2tzL3R1ZGRpZXhwLmh0bWwjdHVkZGlleHAiPnB1Ymxpc2hpbmc8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3RwdWJlbnQuaHRtbCN0cHViZW50Ij5wdWJsaXNoaW5nIHRvIFVEREk8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3R1bnB1Yi5odG1sI3R1bnB1YiI+cmVtb3ZpbmcgZnJvbSBhIFVEREkgcmVnaXN0cnk8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3R1cGRhdGUuaHRtbCN0dXBkYXRlIj51cGRhdGluZyBpbiBhIFVEREkgcmVnaXN0cnk8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPHN0cm9uZz48YSBuYW1lPSJJRFgxXzQ0IiBocmVmPSIjSURYMF80NCI+RDwvYT48L3N0cm9uZz4KLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT5kYXRhIHN0cnVjdHVyZSB0eXBlcwotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9InJlZi9ydWRkaS5odG1sI3J1ZGRpIj5VRERJIHJlZ2lzdHJ5PC9hPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTxzdHJvbmc+PGEgbmFtZT0iSURYMV81MiIgaHJlZj0iI0lEWDBfNTIiPlI8L2E+PC9zdHJvbmc+Ci08dWwgY2xhc3M9ImluZGV4bGlzdCI+Ci08bGk+cmVnaXN0cmllcwotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9InRhc2tzL3RhZGRyZWcuaHRtbCN0YWRkcmVnIj5hZGRpbmcgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08c3Ryb25nPjxhIG5hbWU9IklEWDFfNTMiIGhyZWY9IiNJRFgwXzUzIj5TPC9hPjwvc3Ryb25nPgotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPnNlcnZpY2UgaW50ZXJmYWNlcwotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9InRhc2tzL3R1bnB1Yi5odG1sI3R1bnB1YiI+cmVtb3ZpbmcgZnJvbSBhIFVEREkgcmVnaXN0cnk8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3R1cGRhdGUuaHRtbCN0dXBkYXRlIj51cGRhdGluZyBVRERJIHJlZ2lzdHJpZXM8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPHN0cm9uZz48YSBuYW1lPSJJRFgxXzU1IiBocmVmPSIjSURYMF81NSI+VTwvYT48L3N0cm9uZz4KLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jdWRkaS5odG1sI2N1ZGRpIj5VRERJPC9hPgotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9InJlZi9ydWRkaS5odG1sI3J1ZGRpIj5kYXRhIHN0cnVjdHVyZSB0eXBlczwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0idGFza3MvdGRpc2Nvdi5odG1sI3RkaXNjb3YiPmRpc2NvdmVyaW5nIFdlYiBzZXJ2aWNlczwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0idGFza3MvdGxvZ2V4cC5odG1sI3Rsb2dleHAiPmxvZ2dpbmcgaW50byBhIHJlZ2lzdHJ5PC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90YXNzZXJ0Lmh0bWwjdGFzc2VydCI+bWFuYWdpbmcgcHVibGlzaGVyIGFzc2VydGlvbnM8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3RidXNwcm9qLmh0bWwjdGJ1c3Byb2oiPm1hbmFnaW5nIHNlcnZpY2VzPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90cHViZW50Lmh0bWwjdHB1YmVudCI+cHVibGlzaGluZyBhIGJ1c2luZXNzIGVudGl0eTwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0idGFza3MvdHB1Ymxpc2guaHRtbCN0cHVibGlzaCI+cHVibGlzaGluZyBhIFdlYiBzZXJ2aWNlPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90cmVnLmh0bWwjdHJlZyI+cmVnaXN0ZXJpbmcgd2l0aCBhIHJlZ2lzdHJ5PC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jd3NkbHVkLmh0bWwjY3dzZGx1ZCI+cmVsYXRpb25zaGlwIHdpdGggV1NETDwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0idGFza3MvdHVucHViLmh0bWwjdHVucHViIj5yZW1vdmluZyBzZXJ2aWNlcyBmcm9tIGEgcmVnaXN0cnk8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08bGk+PGEgaHJlZj0iY29uY2VwdHMvY3VkZGkuaHRtbCNjdWRkaSI+VW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbjwvYT4KLTwvbGk+Ci08L3VsPgotPHN0cm9uZz48YSBuYW1lPSJJRFgxXzU3IiBocmVmPSIjSURYMF81NyI+VzwvYT48L3N0cm9uZz4KLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT5XZWIgU2VydmljZSBFeHBsb3JlcgotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9InRhc2tzL3Ria21yay5odG1sI3Ria21yayI+YWRkaW5nIEZhdm9yaXRlczwvYT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTxsaT5XZWIgc2VydmljZXMKLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT48YSBocmVmPSJ0YXNrcy90YWRkcmVnLmh0bWwjdGFkZHJlZyI+YWRkaW5nIGEgcmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0idGFza3MvdGRpc2Nvdi5odG1sI3RkaXNjb3YiPmRpc2NvdmVyaW5nPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90d3NkbGV4cC5odG1sI3R3c2RsZXhwIj5leHBsb3JpbmcgV1NETDwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0idGFza3MvdGdlbndzaWwuaHRtbCN0Z2Vud3NpbCI+Z2VuZXJhdGluZyBXU0lMPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90YnVzcHJvai5odG1sI3RidXNwcm9qIj5tYW5hZ2luZyBzZXJ2aWNlczwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0idGFza3MvdHB1YmVudC5odG1sI3RwdWJlbnQiPnB1Ymxpc2hpbmcgYSBidXNpbmVzcyBlbnRpdHk8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3RwdWJsaXNoLmh0bWwjdHB1Ymxpc2giPnB1Ymxpc2hpbmcgdG8gYSBVRERJIHJlZ2lzdHJ5PC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90cmVnLmh0bWwjdHJlZyI+cmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnk8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3R1bnB1Yi5odG1sI3R1bnB1YiI+cmVtb3ZpbmcgZnJvbSBhIFVEREkgcmVnaXN0cnk8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3R0ZXN0d3NkbC5odG1sI3R0ZXN0d3NkbCI+dGVzdGluZyB3aXRoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9ImNvbmNlcHRzL2N1ZGRpLmh0bWwjY3VkZGkiPlVEREk8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3R1cGRhdGUuaHRtbCN0dXBkYXRlIj51cGRhdGluZyBVRERJIHJlZ2lzdHJpZXM8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08bGk+V2ViIFNlcnZpY2VzCi08dWwgY2xhc3M9ImluZGV4bGlzdCI+Ci08bGk+cHVibGlzaGluZwotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9InRhc2tzL3R1ZGRpZXhwLmh0bWwjdHVkZGlleHAiPm92ZXJ2aWV3PC9hPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08bGk+V2ViIFNlcnZpY2VzIEV4cGxvcmVyCi08dWwgY2xhc3M9ImluZGV4bGlzdCI+Ci08bGk+PGEgaHJlZj0idGFza3MvdGFkZHJlZy5odG1sI3RhZGRyZWciPmFkZGluZyBhIHJlZ2lzdHJ5PC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90c3RydGV4cC5odG1sI3RzdHJ0ZXhwIj5sYXVuY2hpbmc8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3Rsb2dleHAuaHRtbCN0bG9nZXhwIj5sb2dnaW5nIGludG8gYSBVRERJIHJlZ2lzdHJ5PC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90dWRkaWV4cC5odG1sI3R1ZGRpZXhwIj5wdWJsaXNoaW5nIFdlYiBzZXJ2aWNlczwvYT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTxsaT5XU0RMCi08dWwgY2xhc3M9ImluZGV4bGlzdCI+Ci08bGk+PGEgaHJlZj0idGFza3MvdGJrbXJrLmh0bWwjdGJrbXJrIj5hZGRpbmcgdG8gRmF2b3JpdGVzPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90d3NkbGV4cC5odG1sI3R3c2RsZXhwIj5leHBsb3Jpbmc8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9ImNvbmNlcHRzL2N3c2RsdWQuaHRtbCNjd3NkbHVkIj5yZWxhdGlvbnNoaXAgd2l0aCBVRERJPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90dGVzdHdzZGwuaHRtbCN0dGVzdHdzZGwiPnRlc3Rpbmcgd2l0aCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPGxpPldTSUwKLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT48YSBocmVmPSJ0YXNrcy90YmttcmsuaHRtbCN0YmttcmsiPmFkZGluZyB0byBGYXZvcml0ZXM8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3RkaXNjb3YuaHRtbCN0ZGlzY292Ij5kaXNjb3ZlcmluZyBXZWIgc2VydmljZXM8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9InRhc2tzL3RnZW53c2lsLmh0bWwjdGdlbndzaWwiPmdlbmVyYXRpbmc8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlcmluZGV4LnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlcmluZGV4LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ3NjA3Ni4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXJpbmRleC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxpbmRleD4KLSAgPGVudHJ5IGtleXdvcmQ9IlVEREkiPgotICAgIDx0b3BpYyBocmVmPSJjb25jZXB0cy9jdWRkaS5odG1sI2N1ZGRpIiB0aXRsZT0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkiLz4KLSAgICA8ZW50cnkga2V5d29yZD0icmVsYXRpb25zaGlwIHdpdGggV1NETCI+Ci0gICAgICA8dG9waWMgaHJlZj0iY29uY2VwdHMvY3dzZGx1ZC5odG1sI2N3c2RsdWQiIHRpdGxlPSJSZWxhdGlvbnNoaXAgYmV0d2VlbiBVRERJIGFuZCBXU0RMIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iZGlzY292ZXJpbmcgV2ViIHNlcnZpY2VzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90ZGlzY292Lmh0bWwjdGRpc2NvdiIgdGl0bGU9IkRpc2NvdmVyaW5nIFdlYiBTZXJ2aWNlcyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InJlZ2lzdGVyaW5nIHdpdGggYSByZWdpc3RyeSI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHJlZy5odG1sI3RyZWciIHRpdGxlPSJSZWdpc3RlcmluZyB3aXRoIGEgVURESSByZWdpc3RyeSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImxvZ2dpbmcgaW50byBhIHJlZ2lzdHJ5Ij4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90bG9nZXhwLmh0bWwjdGxvZ2V4cCIgdGl0bGU9IkxvZ2dpbmcgaW4gdG8gYSBVRERJIHJlZ2lzdHJ5Ii8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0icHVibGlzaGluZyBhIGJ1c2luZXNzIGVudGl0eSI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHB1YmVudC5odG1sI3RwdWJlbnQiIHRpdGxlPSJQdWJsaXNoaW5nIGEgYnVzaW5lc3MgZW50aXR5Ii8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0icHVibGlzaGluZyBhIFdlYiBzZXJ2aWNlIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90cHVibGlzaC5odG1sI3RwdWJsaXNoIiB0aXRsZT0iUHVibGlzaGluZyBhIFdlYiBzZXJ2aWNlIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iZGF0YSBzdHJ1Y3R1cmUgdHlwZXMiPgotICAgICAgPHRvcGljIGhyZWY9InJlZi9ydWRkaS5odG1sI3J1ZGRpIiB0aXRsZT0iRGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0icmVtb3Zpbmcgc2VydmljZXMgZnJvbSBhIHJlZ2lzdHJ5Ij4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90dW5wdWIuaHRtbCN0dW5wdWIiIHRpdGxlPSJSZW1vdmluZyBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIGZyb20gYSByZWdpc3RyeSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9Im1hbmFnaW5nIHNlcnZpY2VzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90YnVzcHJvai5odG1sI3RidXNwcm9qIiB0aXRsZT0iTWFuYWdpbmcgcmVmZXJlbmNlZCBzZXJ2aWNlcyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9Im1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90YXNzZXJ0Lmh0bWwjdGFzc2VydCIgdGl0bGU9Ik1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zIi8+Ci0gICAgPC9lbnRyeT4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9IlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24iPgotICAgIDx0b3BpYyBocmVmPSJjb25jZXB0cy9jdWRkaS5odG1sI2N1ZGRpIiB0aXRsZT0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkiLz4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9IldlYiBzZXJ2aWNlcyI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9IlVEREkiPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2N1ZGRpLmh0bWwjY3VkZGkiIHRpdGxlPSJVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImRpc2NvdmVyaW5nIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90ZGlzY292Lmh0bWwjdGRpc2NvdiIgdGl0bGU9IkRpc2NvdmVyaW5nIFdlYiBTZXJ2aWNlcyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImV4cGxvcmluZyBXU0RMIGZpbGVzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90d3NkbGV4cC5odG1sI3R3c2RsZXhwIiB0aXRsZT0iRXhwbG9yaW5nIFdTREwgdXNpbmcgdGhlIFdTREwgRXhwbG9yZXIiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJ0ZXN0aW5nIHdpdGggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHRlc3R3c2RsLmh0bWwjdHRlc3R3c2RsIiB0aXRsZT0iVGVzdGluZyBXU0RMIGRvY3VtZW50cyBhbmQgV2ViIHNlcnZpY2VzIHVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0icmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnkiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RyZWcuaHRtbCN0cmVnIiB0aXRsZT0iUmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnkiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJhZGRpbmcgYSByZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90YWRkcmVnLmh0bWwjdGFkZHJlZyIgdGl0bGU9IkFkZGluZyBhIFJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJwdWJsaXNoaW5nIj4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJidXNpbmVzcyBlbnRpdGllcyI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90cHViZW50Lmh0bWwjdHB1YmVudCIgdGl0bGU9IlB1Ymxpc2hpbmcgYSBidXNpbmVzcyBlbnRpdHkiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgICA8ZW50cnkga2V5d29yZD0iVURESSByZWdpc3RyeSI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90cHVibGlzaC5odG1sI3RwdWJsaXNoIiB0aXRsZT0iUHVibGlzaGluZyBhIFdlYiBzZXJ2aWNlIi8+Ci0gICAgICA8L2VudHJ5PgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InVwZGF0aW5nIFVEREkgcmVnaXN0cmllcyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHVwZGF0ZS5odG1sI3R1cGRhdGUiIHRpdGxlPSJVcGRhdGluZyBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0icmVtb3ZpbmcgZnJvbSBhIFVEREkgcmVnaXN0cnkiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3R1bnB1Yi5odG1sI3R1bnB1YiIgdGl0bGU9IlJlbW92aW5nIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UgZnJvbSBhIHJlZ2lzdHJ5Ii8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0ibWFuYWdpbmcgc2VydmljZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RidXNwcm9qLmh0bWwjdGJ1c3Byb2oiIHRpdGxlPSJNYW5hZ2luZyByZWZlcmVuY2VkIHNlcnZpY2VzIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iZ2VuZXJhdGluZyBXU0lMIGZpbGVzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90Z2Vud3NpbC5odG1sI3RnZW53c2lsIiB0aXRsZT0iR2VuZXJhdGluZyBhIFdTSUwgZmlsZSIvPgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci0gIDxlbnRyeSBrZXl3b3JkPSJXU0RMIj4KLSAgICA8ZW50cnkga2V5d29yZD0icmVsYXRpb25zaGlwIHdpdGggVURESSI+Ci0gICAgICA8dG9waWMgaHJlZj0iY29uY2VwdHMvY3dzZGx1ZC5odG1sI2N3c2RsdWQiIHRpdGxlPSJSZWxhdGlvbnNoaXAgYmV0d2VlbiBVRERJIGFuZCBXU0RMIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iYWRkaW5nIHRvIEZhdm9yaXRlcyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGJrbXJrLmh0bWwjdGJrbXJrIiB0aXRsZT0iQWRkaW5nIGEgcmVnaXN0cnksIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsIFdTSUwsIG9yIFdTREwgc2VydmljZSB0byBGYXZvcml0ZXMiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0iV1NJTCBmaWxlcyI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImRpc2NvdmVyaW5nIFdlYiBzZXJ2aWNlcyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGRpc2Nvdi5odG1sI3RkaXNjb3YiIHRpdGxlPSJEaXNjb3ZlcmluZyBXZWIgU2VydmljZXMiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJnZW5lcmF0aW5nIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90Z2Vud3NpbC5odG1sI3RnZW53c2lsIiB0aXRsZT0iR2VuZXJhdGluZyBhIFdTSUwgZmlsZSIvPgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci0gIDxlbnRyeSBrZXl3b3JkPSJXU0RMIGZpbGVzIj4KLSAgICA8ZW50cnkga2V5d29yZD0iZXhwbG9yaW5nIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90d3NkbGV4cC5odG1sI3R3c2RsZXhwIiB0aXRsZT0iRXhwbG9yaW5nIFdTREwgdXNpbmcgdGhlIFdTREwgRXhwbG9yZXIiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJ0ZXN0aW5nIHdpdGggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHRlc3R3c2RsLmh0bWwjdHRlc3R3c2RsIiB0aXRsZT0iVGVzdGluZyBXU0RMIGRvY3VtZW50cyBhbmQgV2ViIHNlcnZpY2VzIHVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyIi8+Ci0gICAgPC9lbnRyeT4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9IldlYiBTZXJ2aWNlcyI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InB1Ymxpc2hpbmciPgotICAgICAgPGVudHJ5IGtleXdvcmQ9Im92ZXJ2aWV3Ij4KLSAgICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3R1ZGRpZXhwLmh0bWwjdHVkZGlleHAiIHRpdGxlPSJQdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXMiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgPC9lbnRyeT4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9ImJ1c2luZXNzIGVudGl0aWVzIj4KLSAgICA8ZW50cnkga2V5d29yZD0icHVibGlzaGluZyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHVkZGlleHAuaHRtbCN0dWRkaWV4cCIgdGl0bGU9IlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllcyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InB1Ymxpc2hpbmcgdG8gVURESSI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHB1YmVudC5odG1sI3RwdWJlbnQiIHRpdGxlPSJQdWJsaXNoaW5nIGEgYnVzaW5lc3MgZW50aXR5Ii8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0idXBkYXRpbmcgaW4gYSBVRERJIHJlZ2lzdHJ5Ij4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90dXBkYXRlLmh0bWwjdHVwZGF0ZSIgdGl0bGU9IlVwZGF0aW5nIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJyZW1vdmluZyBmcm9tIGEgVURESSByZWdpc3RyeSI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHVucHViLmh0bWwjdHVucHViIiB0aXRsZT0iUmVtb3ZpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSBmcm9tIGEgcmVnaXN0cnkiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0iV2ViIFNlcnZpY2VzIEV4cGxvcmVyIj4KLSAgICA8ZW50cnkga2V5d29yZD0icHVibGlzaGluZyBXZWIgc2VydmljZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3R1ZGRpZXhwLmh0bWwjdHVkZGlleHAiIHRpdGxlPSJQdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXMiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJsYXVuY2hpbmciPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RzdHJ0ZXhwLmh0bWwjdHN0cnRleHAiIHRpdGxlPSJMYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImxvZ2dpbmcgaW50byBhIFVEREkgcmVnaXN0cnkiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3Rsb2dleHAuaHRtbCN0bG9nZXhwIiB0aXRsZT0iTG9nZ2luZyBpbiB0byBhIFVEREkgcmVnaXN0cnkiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJhZGRpbmcgYSByZWdpc3RyeSI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGFkZHJlZy5odG1sI3RhZGRyZWciIHRpdGxlPSJBZGRpbmcgYSBSZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iYWRkaW5nIEZhdm9yaXRlcyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGJrbXJrLmh0bWwjdGJrbXJrIiB0aXRsZT0iQWRkaW5nIGEgcmVnaXN0cnksIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsIFdTSUwsIG9yIFdTREwgc2VydmljZSB0byBGYXZvcml0ZXMiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0icmVnaXN0cmllcyI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImFkZGluZyB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90YWRkcmVnLmh0bWwjdGFkZHJlZyIgdGl0bGU9IkFkZGluZyBhIFJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0iZGF0YSBzdHJ1Y3R1cmUgdHlwZXMiPgotICAgIDxlbnRyeSBrZXl3b3JkPSJVRERJIHJlZ2lzdHJ5Ij4KLSAgICAgIDx0b3BpYyBocmVmPSJyZWYvcnVkZGkuaHRtbCNydWRkaSIgdGl0bGU9IkRhdGEgc3RydWN0dXJlIHR5cGVzIChVRERJIHJlZ2lzdHJ5KSIvPgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci0gIDxlbnRyeSBrZXl3b3JkPSJzZXJ2aWNlIGludGVyZmFjZXMiPgotICAgIDxlbnRyeSBrZXl3b3JkPSJ1cGRhdGluZyBVRERJIHJlZ2lzdHJpZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3R1cGRhdGUuaHRtbCN0dXBkYXRlIiB0aXRsZT0iVXBkYXRpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InJlbW92aW5nIGZyb20gYSBVRERJIHJlZ2lzdHJ5Ij4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90dW5wdWIuaHRtbCN0dW5wdWIiIHRpdGxlPSJSZW1vdmluZyBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIGZyb20gYSByZWdpc3RyeSIvPgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci0gIDxlbnRyeSBrZXl3b3JkPSJXU0lMIj4KLSAgICA8ZW50cnkga2V5d29yZD0iYWRkaW5nIHRvIEZhdm9yaXRlcyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGJrbXJrLmh0bWwjdGJrbXJrIiB0aXRsZT0iQWRkaW5nIGEgcmVnaXN0cnksIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsIFdTSUwsIG9yIFdTREwgc2VydmljZSB0byBGYXZvcml0ZXMiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotPC9pbmRleD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9wbHVnaW4ucHJvcGVydGllcyBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGY0Njc0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgTkxTX01FU1NBR0VGT1JNQVRfVkFSIAotIyBOTFNfRU5DT0RJTkc9VVRGLTggCi0KLXBsdWdpbk5hbWUgPSBXZWIgc2VydmljZSBjb25zdW1wdGlvbiBkb2N1bWVudGF0aW9uCi1wbHVnaW5Qcm92aWRlciA9IEVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9wbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgxN2FhNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+IAotPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgotPHBsdWdpbj4KLSAgCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC50b2MiPgotCQk8dG9jIGZpbGU9IndzY29uc3VtcHRpb25idWlsZF90b2MueG1sIi8+Ci0JCTx0b2MgZmlsZT0id3Njb25zdW1wdGlvbnRfdG9jLnhtbCIgLz4KLSAgICAgICA8aW5kZXggcGF0aD0iaW5kZXgvIi8+Ci0JPC9leHRlbnNpb24+Ci0gICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5pbmRleCI+Ci0gICAgICA8aW5kZXggZmlsZT0ib3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyaW5kZXgueG1sIi8+Ci08L2V4dGVuc2lvbj4KLSAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UubHVjZW5lU2VhcmNoUGFydGljaXBhbnRzIj4KLSAgICAgIDxiaW5kaW5nIHBhcnRpY2lwYW50SWQ9Im9yZy5lY2xpcHNlLmhlbHAuYmFzZS54aHRtbCIvPgotICAgPC9leHRlbnNpb24+Ci08L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9yZWYvcnVkZGkuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3JlZi9ydWRkaS5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTc2ZmVmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3JlZi9ydWRkaS5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNSwgdi40MDAyLS0+Ci08IURPQ1RZUEUgcmVmZXJlbmNlIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFJlZmVyZW5jZS8vRU4iCi0gInJlZmVyZW5jZS5kdGQiPgotPHJlZmVyZW5jZSBpZD0icnVkZGkiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+RGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpPC90aXRsZT4KLTxzaG9ydGRlc2M+T25jZSB5b3UgaGF2ZSByZWdpc3RlcmVkIGFuZCBsb2dnZWQgaW4gdG8gdGhlIFVEREkgcmVnaXN0cnkgdGhhdAoteW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UKLWludm9sdmVzIGZvdXIgY29yZSBkYXRhIHN0cnVjdHVyZSB0eXBlczogYnVzaW5lc3MgaW5mb3JtYXRpb24sIHNlcnZpY2UgaW5mb3JtYXRpb24sCi1iaW5kaW5nIGluZm9ybWF0aW9uLCBhbmQgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIHNlcnZpY2VzLgotVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5VRERJPGluZGV4dGVybT5kYXRhIHN0cnVjdHVyZSB0eXBlczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5kYXRhIHN0cnVjdHVyZSB0eXBlczxpbmRleHRlcm0+VURESSByZWdpc3RyeTwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08cmVmYm9keT4KLTxzZWN0aW9uPjxscT4gPHA+IDx1aWNvbnRyb2w+QnVzaW5lc3MgaW5mb3JtYXRpb24uPC91aWNvbnRyb2w+IEluZm9ybWF0aW9uCi10aGF0IGlzIGNvbnRhaW5lZCBpbiBhICA8c3lzdGVtb3V0cHV0PmJ1c2luZXNzRW50aXR5PC9zeXN0ZW1vdXRwdXQ+IHN0cnVjdHVyZS4KLVRoZSAgPHN5c3RlbW91dHB1dD5idXNpbmVzc0VudGl0eTwvc3lzdGVtb3V0cHV0PiBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dAotdGhlIGJ1c2luZXNzIHRoYXQgaGFzIHB1Ymxpc2hlZCB0aGUgc2VydmljZSwgc3VjaCBhcyBidXNpbmVzcyBuYW1lLCBkZXNjcmlwdGlvbiwKLWNvbnRhY3RzIGFuZCBpZGVudGlmaWVycy48L3A+IDxwPiA8dWljb250cm9sPlNlcnZpY2UgaW5mb3JtYXRpb24uPC91aWNvbnRyb2w+IEluZm9ybWF0aW9uCi10aGF0IGRlc2NyaWJlcyBhIGdyb3VwIG9mIFdlYiBzZXJ2aWNlcy4gSXQgaXMgY29udGFpbmVkIGluIGEgIDxzeXN0ZW1vdXRwdXQ+YnVzaW5lc3NTZXJ2aWNlPC9zeXN0ZW1vdXRwdXQ+IHN0cnVjdHVyZS4KLVRoZSAgPHN5c3RlbW91dHB1dD5idXNpbmVzc1NlcnZpY2U8L3N5c3RlbW91dHB1dD4gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQKLWZhbWlsaWVzIG9mIHRlY2huaWNhbCBzZXJ2aWNlcy4mbmJzcDsgSXQgZ3JvdXBzIGEgc2V0IG9mIFdlYiBzZXJ2aWNlcyByZWxhdGVkCi10byBlaXRoZXIgYSBidXNpbmVzcyBwcm9jZXNzIG9yIGdyb3VwIG9mIHNlcnZpY2VzLjwvcD4gPHA+IDx1aWNvbnRyb2w+QmluZGluZwotaW5mb3JtYXRpb24uPC91aWNvbnRyb2w+IEluZm9ybWF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoZSAgPHN5c3RlbW91dHB1dD5iaW5kaW5nVGVtcGxhdGU8L3N5c3RlbW91dHB1dD4gc3RydWN0dXJlLgotVGhlICA8c3lzdGVtb3V0cHV0PmJpbmRpbmdUZW1wbGF0ZTwvc3lzdGVtb3V0cHV0PiBob2xkcyB0ZWNobmljYWwgaW5mb3JtYXRpb24KLWZvciBkZXRlcm1pbmluZyB0aGUgZW50cnkgcG9pbnQgYW5kIGNvbnN0cnVjdGlvbiBzcGVjaWZpY2F0aW9ucyBmb3IgaW52b2tpbmcKLWEgV2ViIHNlcnZpY2UuJm5ic3A7IFRoZSAgPHN5c3RlbW91dHB1dD5iaW5kaW5nVGVtcGxhdGU8L3N5c3RlbW91dHB1dD4gcHJvdmlkZXMKLXRoZSBXZWIgc2VydmljZSBkZXNjcmlwdGlvbnMgcmVsZXZhbnQgZm9yIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgdGhhdCB3YW50Ci10byBmaW5kIGFuZCBpbnZva2UgYSBXZWIgc2VydmljZS4mbmJzcDsgVGhlICA8c3lzdGVtb3V0cHV0PmJpbmRpbmdUZW1wbGF0ZTwvc3lzdGVtb3V0cHV0PiBwb2ludHMKLXRvIGEgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBkZXNjcmlwdGlvbnMsIGZvciBleGFtcGxlIHZpYSBhIFVSTC48L3A+IDxwPiA8dWljb250cm9sPkluZm9ybWF0aW9uCi1kZXNjcmliaW5nIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3Igc2VydmljZXMuPC91aWNvbnRyb2w+IE1ldGFkYXRhIGFib3V0IHRoZQotdmFyaW91cyBzcGVjaWZpY2F0aW9ucyBpbXBsZW1lbnRlZCBieSBhIGdpdmVuIFdlYiBzZXJ2aWNlIHJlcHJlc2VudGVkIGJ5IHRoZQotIDxzeXN0ZW1vdXRwdXQ+dE1vZGVsPC9zeXN0ZW1vdXRwdXQ+LiBUaGUgIDxzeXN0ZW1vdXRwdXQ+dE1vZGVsPC9zeXN0ZW1vdXRwdXQ+IHByb3ZpZGVzCi1hIHJlZmVyZW5jZSBzeXN0ZW0gdG8gYXNzaXN0IGluIHRoZSBkaXNjb3Zlcnkgb2YgV2ViIHNlcnZpY2VzLjwvcD4gPC9scT48cD5GaWd1cmUKLTEuIFJlbGF0aW9uc2hpcCBiZXR3ZWVuIGRhdGEgdHlwZXMuPC9wPjxwPiA8aW1hZ2UgYWx0PSJGaWd1cmUgMSBpbGx1c3RyYXRlcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwgYmluZGluZyB0ZW1wbGF0ZSwgYW5kIHRtb2RlbC4iCi1ocmVmPSIuLi9pbWFnZXMvdWRkaS5naWYiPjwvaW1hZ2U+IDwvcD48cD5FYWNoIGNoaWxkIHN0cnVjdHVyZSBoYXMgYSB1bmlxdWUKLXBhcmVudCBzdHJ1Y3R1cmUuIFRoaXMgbWVhbnMgdGhhdCBlYWNoICA8c3lzdGVtb3V0cHV0PmJ1c2luZXNzU2VydmljZTwvc3lzdGVtb3V0cHV0PiBzdHJ1Y3R1cmUKLWlzIG93bmVkIGJ5IGEgc3BlY2lmaWMgIDxzeXN0ZW1vdXRwdXQ+YnVzaW5lc3NFbnRpdHk8L3N5c3RlbW91dHB1dD4uIEluIHR1cm4sCi1lYWNoICA8c3lzdGVtb3V0cHV0PmJpbmRpbmdUZW1wbGF0ZTwvc3lzdGVtb3V0cHV0PiBpcyBvd25lZCBieSBhIHNwZWNpZmljCi0gPHN5c3RlbW91dHB1dD5idXNpbmVzc1NlcnZpY2U8L3N5c3RlbW91dHB1dD4uIEVhY2ggIDxzeXN0ZW1vdXRwdXQ+YmluZGluZ1RlbXBsYXRlPC9zeXN0ZW1vdXRwdXQ+IHN0cnVjdHVyZQotcmVmZXJlbmNlcyB0byB1bmlxdWUgaW5zdGFuY2VzIG9mICA8c3lzdGVtb3V0cHV0PnRNb2RlbDwvc3lzdGVtb3V0cHV0PiBzdHJ1Y3R1cmVzOwotaG93ZXZlciwgc2luY2UgcmVmZXJlbmNlcyBjYW4gYmUgcmVwZWF0ZWQgd2l0aGluIHNldmVyYWwgcGFyZW50IHN0cnVjdHVyZXMsCi10aGVyZSBjYW4gYmUgbWFueSByZWZlcmVuY2VzIHRvICA8c3lzdGVtb3V0cHV0PnRNb2RlbHM8L3N5c3RlbW91dHB1dD4gZnJvbQotZGlmZmVyZW50IEVudGl0eS1TZXJ2aWNlLVRlbXBsYXRlIHBhcmVudHMsIGFzIHNlZW4gaW4gRmlndXJlIDIuPC9wPjxwPkZpZ3VyZQotMi4gUmVmZXJlbmNlcyB0byB0TW9kZWwuPC9wPjxwPiA8aW1hZ2UgYWx0PSJGaWd1cmUgMiBpbGx1c3RyYXRlcyB0aGUgbXVsdGlwbGUgcmVmZXJlbmNlcyB0byBhIHRNb2RlbC4iCi1ocmVmPSIuLi9pbWFnZXMvdWRkaXJlZi5naWYiPjwvaW1hZ2U+IDwvcD48L3NlY3Rpb24+Ci08c2VjdGlvbj48dGl0bGU+UHVibGlzaGVyIGFzc2VydGlvbnM8L3RpdGxlPjxwPkEgcHVibGlzaGVyIGFzc2VydGlvbiBpcyBhCi13YXkgaW4gVURESSB0byBhc3NvY2lhdGUgYnVzaW5lc3NFbnRpdHkgc3RydWN0dXJlcy4gVGhlIHB1Ymxpc2hlciBhc3NlcnRpb24KLWRlZmluZXMgYSBncm91cCBvZiBidXNpbmVzc0VudGl0eSBzdHJ1Y3R1cmVzLiBNYW55IGJ1c2luZXNzZXMgYXJlIG5vdCBlZmZlY3RpdmVseQotcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgYnVzaW5lc3NFbnRpdHkuIEEgcHVibGlzaGVyIGFzc2VydGlvbiBhbGxvd3MgZm9yIHRoZQotYXNzb2NpYXRpb24gYmV0d2VlbiBidXNpbmVzc0VudGl0eSBzdHJ1Y3R1cmVzLiBGb3IgZXhhbXBsZSwgYSBsYXJnZSBjb21wYW55Ci1tYXkgaGF2ZSBzZXZlcmFsIHN1YnNpZGlhcmllcyB0aGF0IGhhdmUgZGlmZmVyZW50IGRlc2NyaXB0aW9ucyBidXQgYXJlIHN0aWxsCi1jbG9zZWx5IGNvdXBsZWQgYW5kIHdhbnQgdG8gbWFrZSB0aGVpciByZWxhdGlvbnNoaXBzIHZpc2libGUgaW4gVURESSByZWdpc3RyaWVzLjwvcD48L3NlY3Rpb24+Ci08c2VjdGlvbj48dGl0bGU+U2VydmljZSBwcm9qZWN0aW9uczwvdGl0bGU+PHA+QSBzZXJ2aWNlIHByb2plY3Rpb24gZW5hYmxlcwotYSBidXNpbmVzcyBlbnRpdHkgdG8gcmVmZXJlbmNlIGEgc2VydmljZSB0aGF0IHdhcyBwdWJsaXNoZWQgYnkgYW5vdGhlciBidXNpbmVzcwotZW50aXR5LiBCeSB1c2luZyB0aGUgYnVzaW5lc3NTZXJ2aWNlIHN0cnVjdHVyZSBhcyBhIHByb2plY3Rpb24gdG8gYW4gYWxyZWFkeQotcHVibGlzaGVkIGJ1c2luZXNzU2VydmljZSwgYnVzaW5lc3NlcyBjYW4gc2hhcmUgb3IgcmV1c2Ugc2VydmljZXMuIFNlcnZpY2UKLXByb2plY3Rpb25zIGFyZSBtYW5hZ2VkIGNlbnRyYWxseSBhcyBwYXJ0IG9mIHRoZSByZWZlcmVuY2luZyBidXNpbmVzc0VudGl0eS4KLVRoaXMgbWVhbnMgdGhhdCBhbnkgY2hhbmdlcyBtYWRlIHRvIHRoZSBidXNpbmVzc1NlcnZpY2UgYnkgYW55IG9mIHRoZSByZWZlcmVuY2luZwotYnVzaW5lc3NFbnRpdHkgc3RydWN0dXJlcyBhcmUgdmFsaWQgZm9yIGFsbCBvZiB0aGUgcmVmZXJlbmNpbmcgYnVzaW5lc3NFbnRpdHkKLXN0cnVjdHVyZXMuPC9wPjwvc2VjdGlvbj4KLTwvcmVmYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIENvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSIuLi90YXNrcy90dWRkaWV4cC5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC9yZWZlcmVuY2U+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9yZWYvcnVkZGkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3JlZi9ydWRkaS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWIzNjJlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3JlZi9ydWRkaS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJyZWZlcmVuY2UiIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iRGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9Ik9uY2UgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbmQgbG9nZ2VkIGluIHRvIHRoZSBVRERJIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UgaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwgYmluZGluZyBpbmZvcm1hdGlvbiwgYW5kIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljYXRpb25zIGZvciBzZXJ2aWNlcy4gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJPbmNlIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYW5kIGxvZ2dlZCBpbiB0byB0aGUgVURESSByZWdpc3RyeSB0aGF0IHlvdSB3YW50IHRvIHVzZSwgeW91IGNhbiByZWdpc3RlciB5b3VyIFdlYiBzZXJ2aWNlLiBSZWdpc3RyYXRpb24gb2YgYSBzZXJ2aWNlIGludm9sdmVzIGZvdXIgY29yZSBkYXRhIHN0cnVjdHVyZSB0eXBlczogYnVzaW5lc3MgaW5mb3JtYXRpb24sIHNlcnZpY2UgaW5mb3JtYXRpb24sIGJpbmRpbmcgaW5mb3JtYXRpb24sIGFuZCBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3Igc2VydmljZXMuIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBkYXRhIHR5cGVzIGlzIGRlc2NyaWJlZCBpbiBGaWd1cmUgMS4iIC8+Ci08bWV0YSBjb250ZW50PSJVRERJLCBkYXRhIHN0cnVjdHVyZSB0eXBlcywgVURESSByZWdpc3RyeSIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlVEREksIGRhdGEgc3RydWN0dXJlIHR5cGVzLCBVRERJIHJlZ2lzdHJ5IiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHB1Ymxpc2guaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHVkZGlleHAuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJydWRkaSIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPkRhdGEgc3RydWN0dXJlIHR5cGVzIChVRERJIHJlZ2lzdHJ5KTwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0icnVkZGkiPjxhIG5hbWU9InJ1ZGRpIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5EYXRhIHN0cnVjdHVyZSB0eXBlcyAoVURESSByZWdpc3RyeSk8L2gxPgotCi0KLQotPGRpdj48cD5PbmNlIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYW5kIGxvZ2dlZCBpbiB0byB0aGUgVURESSByZWdpc3RyeSB0aGF0Ci15b3Ugd2FudCB0byB1c2UsIHlvdSBjYW4gcmVnaXN0ZXIgeW91ciBXZWIgc2VydmljZS4gUmVnaXN0cmF0aW9uIG9mIGEgc2VydmljZQotaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwKLWJpbmRpbmcgaW5mb3JtYXRpb24sIGFuZCBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3Igc2VydmljZXMuCi1UaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZGF0YSB0eXBlcyBpcyBkZXNjcmliZWQgaW4gRmlndXJlIDEuPC9wPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48YmxvY2txdW90ZT4gPHA+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkJ1c2luZXNzIGluZm9ybWF0aW9uLjwvc3Bhbj4gSW5mb3JtYXRpb24KLXRoYXQgaXMgY29udGFpbmVkIGluIGEgIDx0dCBjbGFzcz0ic3lzb3V0Ij5idXNpbmVzc0VudGl0eTwvdHQ+IHN0cnVjdHVyZS4KLVRoZSAgPHR0IGNsYXNzPSJzeXNvdXQiPmJ1c2luZXNzRW50aXR5PC90dD4gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQKLXRoZSBidXNpbmVzcyB0aGF0IGhhcyBwdWJsaXNoZWQgdGhlIHNlcnZpY2UsIHN1Y2ggYXMgYnVzaW5lc3MgbmFtZSwgZGVzY3JpcHRpb24sCi1jb250YWN0cyBhbmQgaWRlbnRpZmllcnMuPC9wPgotIDxwPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5TZXJ2aWNlIGluZm9ybWF0aW9uLjwvc3Bhbj4gSW5mb3JtYXRpb24KLXRoYXQgZGVzY3JpYmVzIGEgZ3JvdXAgb2YgV2ViIHNlcnZpY2VzLiBJdCBpcyBjb250YWluZWQgaW4gYSAgPHR0IGNsYXNzPSJzeXNvdXQiPmJ1c2luZXNzU2VydmljZTwvdHQ+IHN0cnVjdHVyZS4KLVRoZSAgPHR0IGNsYXNzPSJzeXNvdXQiPmJ1c2luZXNzU2VydmljZTwvdHQ+IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0Ci1mYW1pbGllcyBvZiB0ZWNobmljYWwgc2VydmljZXMuwqAgSXQgZ3JvdXBzIGEgc2V0IG9mIFdlYiBzZXJ2aWNlcyByZWxhdGVkCi10byBlaXRoZXIgYSBidXNpbmVzcyBwcm9jZXNzIG9yIGdyb3VwIG9mIHNlcnZpY2VzLjwvcD4KLSA8cD4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QmluZGluZwotaW5mb3JtYXRpb24uPC9zcGFuPiBJbmZvcm1hdGlvbiByZXByZXNlbnRlZCBieSB0aGUgIDx0dCBjbGFzcz0ic3lzb3V0Ij5iaW5kaW5nVGVtcGxhdGU8L3R0PiBzdHJ1Y3R1cmUuCi1UaGUgIDx0dCBjbGFzcz0ic3lzb3V0Ij5iaW5kaW5nVGVtcGxhdGU8L3R0PiBob2xkcyB0ZWNobmljYWwgaW5mb3JtYXRpb24KLWZvciBkZXRlcm1pbmluZyB0aGUgZW50cnkgcG9pbnQgYW5kIGNvbnN0cnVjdGlvbiBzcGVjaWZpY2F0aW9ucyBmb3IgaW52b2tpbmcKLWEgV2ViIHNlcnZpY2UuwqAgVGhlICA8dHQgY2xhc3M9InN5c291dCI+YmluZGluZ1RlbXBsYXRlPC90dD4gcHJvdmlkZXMKLXRoZSBXZWIgc2VydmljZSBkZXNjcmlwdGlvbnMgcmVsZXZhbnQgZm9yIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgdGhhdCB3YW50Ci10byBmaW5kIGFuZCBpbnZva2UgYSBXZWIgc2VydmljZS7CoCBUaGUgIDx0dCBjbGFzcz0ic3lzb3V0Ij5iaW5kaW5nVGVtcGxhdGU8L3R0PiBwb2ludHMKLXRvIGEgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBkZXNjcmlwdGlvbnMsIGZvciBleGFtcGxlIHZpYSBhIFVSTC48L3A+Ci0gPHA+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkluZm9ybWF0aW9uCi1kZXNjcmliaW5nIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3Igc2VydmljZXMuPC9zcGFuPiBNZXRhZGF0YSBhYm91dCB0aGUKLXZhcmlvdXMgc3BlY2lmaWNhdGlvbnMgaW1wbGVtZW50ZWQgYnkgYSBnaXZlbiBXZWIgc2VydmljZSByZXByZXNlbnRlZCBieSB0aGUKLSA8dHQgY2xhc3M9InN5c291dCI+dE1vZGVsPC90dD4uIFRoZSAgPHR0IGNsYXNzPSJzeXNvdXQiPnRNb2RlbDwvdHQ+IHByb3ZpZGVzCi1hIHJlZmVyZW5jZSBzeXN0ZW0gdG8gYXNzaXN0IGluIHRoZSBkaXNjb3Zlcnkgb2YgV2ViIHNlcnZpY2VzLjwvcD4KLSA8L2Jsb2NrcXVvdGU+Ci08cD5GaWd1cmUKLTEuIFJlbGF0aW9uc2hpcCBiZXR3ZWVuIGRhdGEgdHlwZXMuPC9wPgotPHA+IDxpbWcgc3JjPSIuLi9pbWFnZXMvdWRkaS5naWYiIGFsdD0iRmlndXJlIDEgaWxsdXN0cmF0ZXMgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsIGJpbmRpbmcgdGVtcGxhdGUsIGFuZCB0bW9kZWwuIiAvPiA8L3A+Ci08cD5FYWNoIGNoaWxkIHN0cnVjdHVyZSBoYXMgYSB1bmlxdWUKLXBhcmVudCBzdHJ1Y3R1cmUuIFRoaXMgbWVhbnMgdGhhdCBlYWNoICA8dHQgY2xhc3M9InN5c291dCI+YnVzaW5lc3NTZXJ2aWNlPC90dD4gc3RydWN0dXJlCi1pcyBvd25lZCBieSBhIHNwZWNpZmljICA8dHQgY2xhc3M9InN5c291dCI+YnVzaW5lc3NFbnRpdHk8L3R0Pi4gSW4gdHVybiwKLWVhY2ggIDx0dCBjbGFzcz0ic3lzb3V0Ij5iaW5kaW5nVGVtcGxhdGU8L3R0PiBpcyBvd25lZCBieSBhIHNwZWNpZmljCi0gPHR0IGNsYXNzPSJzeXNvdXQiPmJ1c2luZXNzU2VydmljZTwvdHQ+LiBFYWNoICA8dHQgY2xhc3M9InN5c291dCI+YmluZGluZ1RlbXBsYXRlPC90dD4gc3RydWN0dXJlCi1yZWZlcmVuY2VzIHRvIHVuaXF1ZSBpbnN0YW5jZXMgb2YgIDx0dCBjbGFzcz0ic3lzb3V0Ij50TW9kZWw8L3R0PiBzdHJ1Y3R1cmVzOwotaG93ZXZlciwgc2luY2UgcmVmZXJlbmNlcyBjYW4gYmUgcmVwZWF0ZWQgd2l0aGluIHNldmVyYWwgcGFyZW50IHN0cnVjdHVyZXMsCi10aGVyZSBjYW4gYmUgbWFueSByZWZlcmVuY2VzIHRvICA8dHQgY2xhc3M9InN5c291dCI+dE1vZGVsczwvdHQ+IGZyb20KLWRpZmZlcmVudCBFbnRpdHktU2VydmljZS1UZW1wbGF0ZSBwYXJlbnRzLCBhcyBzZWVuIGluIEZpZ3VyZSAyLjwvcD4KLTxwPkZpZ3VyZQotMi4gUmVmZXJlbmNlcyB0byB0TW9kZWwuPC9wPgotPHA+IDxpbWcgc3JjPSIuLi9pbWFnZXMvdWRkaXJlZi5naWYiIGFsdD0iRmlndXJlIDIgaWxsdXN0cmF0ZXMgdGhlIG11bHRpcGxlIHJlZmVyZW5jZXMgdG8gYSB0TW9kZWwuIiAvPiA8L3A+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGg0IGNsYXNzPSJzZWN0aW9udGl0bGUiPlB1Ymxpc2hlciBhc3NlcnRpb25zPC9oND48cD5BIHB1Ymxpc2hlciBhc3NlcnRpb24gaXMgYQotd2F5IGluIFVEREkgdG8gYXNzb2NpYXRlIGJ1c2luZXNzRW50aXR5IHN0cnVjdHVyZXMuIFRoZSBwdWJsaXNoZXIgYXNzZXJ0aW9uCi1kZWZpbmVzIGEgZ3JvdXAgb2YgYnVzaW5lc3NFbnRpdHkgc3RydWN0dXJlcy4gTWFueSBidXNpbmVzc2VzIGFyZSBub3QgZWZmZWN0aXZlbHkKLXJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlIGJ1c2luZXNzRW50aXR5LiBBIHB1Ymxpc2hlciBhc3NlcnRpb24gYWxsb3dzIGZvciB0aGUKLWFzc29jaWF0aW9uIGJldHdlZW4gYnVzaW5lc3NFbnRpdHkgc3RydWN0dXJlcy4gRm9yIGV4YW1wbGUsIGEgbGFyZ2UgY29tcGFueQotbWF5IGhhdmUgc2V2ZXJhbCBzdWJzaWRpYXJpZXMgdGhhdCBoYXZlIGRpZmZlcmVudCBkZXNjcmlwdGlvbnMgYnV0IGFyZSBzdGlsbAotY2xvc2VseSBjb3VwbGVkIGFuZCB3YW50IHRvIG1ha2UgdGhlaXIgcmVsYXRpb25zaGlwcyB2aXNpYmxlIGluIFVEREkgcmVnaXN0cmllcy48L3A+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGg0IGNsYXNzPSJzZWN0aW9udGl0bGUiPlNlcnZpY2UgcHJvamVjdGlvbnM8L2g0PjxwPkEgc2VydmljZSBwcm9qZWN0aW9uIGVuYWJsZXMKLWEgYnVzaW5lc3MgZW50aXR5IHRvIHJlZmVyZW5jZSBhIHNlcnZpY2UgdGhhdCB3YXMgcHVibGlzaGVkIGJ5IGFub3RoZXIgYnVzaW5lc3MKLWVudGl0eS4gQnkgdXNpbmcgdGhlIGJ1c2luZXNzU2VydmljZSBzdHJ1Y3R1cmUgYXMgYSBwcm9qZWN0aW9uIHRvIGFuIGFscmVhZHkKLXB1Ymxpc2hlZCBidXNpbmVzc1NlcnZpY2UsIGJ1c2luZXNzZXMgY2FuIHNoYXJlIG9yIHJldXNlIHNlcnZpY2VzLiBTZXJ2aWNlCi1wcm9qZWN0aW9ucyBhcmUgbWFuYWdlZCBjZW50cmFsbHkgYXMgcGFydCBvZiB0aGUgcmVmZXJlbmNpbmcgYnVzaW5lc3NFbnRpdHkuCi1UaGlzIG1lYW5zIHRoYXQgYW55IGNoYW5nZXMgbWFkZSB0byB0aGUgYnVzaW5lc3NTZXJ2aWNlIGJ5IGFueSBvZiB0aGUgcmVmZXJlbmNpbmcKLWJ1c2luZXNzRW50aXR5IHN0cnVjdHVyZXMgYXJlIHZhbGlkIGZvciBhbGwgb2YgdGhlIHJlZmVyZW5jaW5nIGJ1c2luZXNzRW50aXR5Ci1zdHJ1Y3R1cmVzLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90YXNrcy90cHVibGlzaC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlLCBhbHNvIGtub3duIGFzIHRoZSBidXNpbmVzcyBzZXJ2aWNlLCBkZXNjcmliZXMgYSBXZWIgc2VydmljZSdzIGVuZHBvaW50IGFuZCB3aGVyZSBpdHMgV1NETCBmaWxlIHJlc2lkZXMuIFRoZSBXU0RMIGZpbGUgbGlzdHMgdGhlIG9wZXJhdGlvbnMgdGhhdCBzZXJ2aWNlIHByb3ZpZGVzLiI+UHVibGlzaGluZyBhIFdlYiBzZXJ2aWNlPC9hPjwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuaHRtbCI+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCI+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vdGFza3MvdHVkZGlleHAuaHRtbCIgdGl0bGU9IlRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIj5QdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRyZWcuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRyZWcuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAxNWVjYy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YWRkcmVnLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA1LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idGFkZHJlZyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5BZGRpbmcgYSBSZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC90aXRsZT4KLTx0aXRsZWFsdHM+Ci08c2VhcmNodGl0bGU+QWRkaW5nIGEgUmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlcjwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+QWx0aG91Z2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBjb21lcyBwb3B1bGF0ZWQgd2l0aCBzZXZlcmFsCi1yZWdpc3RyaWVzLCB5b3UgY2FuIGFsc28gYWRkIGFkZGl0aW9uYWwgcmVnaXN0cmllcyB0byB5b3VyIGxpc3Qgb2YgZmF2b3JpdGVzLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmFkZGluZyBhIHJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMKLUV4cGxvcmVyPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PGluZGV4dGVybT5XZWIgU2VydmljZXMgRXhwbG9yZXI8aW5kZXh0ZXJtPmFkZGluZwotYSByZWdpc3RyeTwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0+cmVnaXN0cmllczxpbmRleHRlcm0+YWRkaW5nIHRvCi10aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08dGFza2JvZHk+Ci08cHJlcmVxPjxwPlByZXJlcXVpc2l0ZXM6PG9sPgotPGxpPjx4cmVmIGhyZWY9InRyZWcuZGl0YSI+UmVnaXN0ZXIgd2l0aCBhIHJlZ2lzdHJ5PC94cmVmPjwvbGk+Ci08bGk+PHhyZWYgaHJlZj0idHN0cnRleHAuZGl0YSI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L3hyZWY+PC9saT4KLTwvb2w+PC9wPjwvcHJlcmVxPgotPGNvbnRleHQ+PHA+V2hlbiB5b3UgYXJlIHJlYWR5IHRvIHB1Ymxpc2ggeW91ciBidXNpbmVzcyBlbnRpdHkgYW5kIFdlYiBzZXJ2aWNlLAotYWRkIGEgcHJvZHVjdGlvbiByZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLiBJbiBvcmRlciB0byBwdWJsaXNoCi15b3VyIGJ1c2luZXNzIGVudGl0eSBhbmQgV2ViIHNlcnZpY2UgdG8gYSBwcm9kdWN0aW9uIHJlZ2lzdHJ5LCB5b3UgbXVzdCBmaXJzdAotcmVnaXN0ZXIgd2l0aCB0aGUgcmVnaXN0cnkuIFRoZSByZWdpc3RyeSB3aWxsIHByb3ZpZGUgaW5zdHJ1Y3Rpb25zIGZvciByZWdpc3RlcmluZy4KLUZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHJlZ2lzdHJpZXMsIHJlZmVyIHRvICA8eHJlZiBocmVmPSJ0cmVnLmRpdGEiPlJlZ2lzdGVyaW5nCi13aXRoIGEgcmVnaXN0cnk8L3hyZWY+LjwvcD48cD5UaGUgVURESSBCdXNpbmVzcyBSZWdpc3RyeSBpcyBhIHNldCBvZiBnbG9iYWwKLXJlcGxpY2F0ZWQgcmVnaXN0cmllcy4gRm9yIGEgbGlzdCBvZiBwdWJsaWMgcmVnaXN0cmllcyByZWZlciB0byAgPHhyZWYgaHJlZj0iaHR0cDovL3d3dy5VRERJLm9yZy9yZWdpc3Rlci5odG1sIgotc2NvcGU9ImV4dGVybmFsIj53d3cudWRkaS5vcmcvcmVnaXN0ZXIuaHRtbDwveHJlZj48L3A+PHA+VGhlIDx0bSB0bWNsYXNzPSJpYm0iCi10bW93bmVyPSJJQk0gQ29ycG9yYXRpb24iIHRtdHlwZT0icmVnIiB0cmFkZW1hcms9IklCTSI+SUJNPC90bT4gVURESSBCdXNpbmVzcwotUmVnaXN0cnkgaXMgYSBwdWJsaWMgcHJvZHVjdGlvbiByZWdpc3RyeSBtYWludGFpbmVkIGJ5IDx0bSB0bWNsYXNzPSJpYm0iIHRtb3duZXI9IklCTSBDb3Jwb3JhdGlvbiIKLXRtdHlwZT0icmVnIiB0cmFkZW1hcms9IklCTSI+SUJNPC90bT4uIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSA8dG0gdG1jbGFzcz0iaWJtIgotdG1vd25lcj0iSUJNIENvcnBvcmF0aW9uIiB0bXR5cGU9InJlZyIgdHJhZGVtYXJrPSJJQk0iPklCTTwvdG0+IFVEREkgQnVzaW5lc3MKLVJlZ2lzdHJ5IHJlZmVyIHRvICA8eHJlZiBmb3JtYXQ9Imh0bWwiIGhyZWY9Imh0dHA6Ly91ZGRpLmlibS5jb20iIHNjb3BlPSJleHRlcm5hbCI+aHR0cDovL3VkZGkuaWJtLmNvbTwveHJlZj48L3A+PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5UbyBhZGQgYSBSZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGZyb20gRmF2b3JpdGVzLAotZG8gdGhlIGZvbGxvd2luZzo8L2NtZD4KLTxzdWJzdGVwcz4KLTxzdWJzdGVwPjxjbWQ+Q2xpY2sgdGhlICA8dWljb250cm9sPkZhdm9yaXRlczwvdWljb250cm9sPiBpY29uICA8aW1hZ2UgYWx0PSJQaWN0dXJlIG9mIHRoZSBGYXZvcml0ZXMgaWNvbi4iCi1ocmVmPSIuLi9pbWFnZXMvZmF2LmdpZiI+PC9pbWFnZT4gaW4gdGhlIG1haW4gdG9vbGJhci48L2NtZD48L3N1YnN0ZXA+Ci08c3Vic3RlcD48Y21kPkV4cGFuZCAgPHVpY29udHJvbD5GYXZvcml0ZSBVRERJIFJlZ2lzdHJpZXM8L3VpY29udHJvbD4uPC9jbWQ+Ci08L3N1YnN0ZXA+Ci08c3Vic3RlcD48Y21kPlNlbGVjdCBhIHJlZ2lzdHJ5IHRoZW4gY2xpY2sgdGhlICA8dWljb250cm9sPkFkZCB0byBVRERJIFBhZ2U8L3VpY29udHJvbD4gaWNvbgotIDxpbWFnZSBhbHQ9IlBpY3R1cmUgb2YgdGhlIEFkZCB0byBVRERJIFBhZ2UgaWNvbi4iIGhyZWY9Ii4uL2ltYWdlcy9hZGR1ZGRpLmdpZiI+Ci08L2ltYWdlPiBpbiB0aGUgQWN0aW9ucyBwYW5lLjwvY21kPjwvc3Vic3RlcD4KLTwvc3Vic3RlcHM+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPlRvIGFkZCBhIFJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgbWFudWFsbHksIGRvIHRoZQotZm9sbG93aW5nOjwvY21kPgotPHN1YnN0ZXBzPgotPHN1YnN0ZXA+PGNtZD5JbiB0aGUgVURESSBOYXZpZ2F0b3IgcGFuZSwgY2xpY2sgdGhlICA8dWljb250cm9sPlVEREkgTWFpbjwvdWljb250cm9sPiBub2RlLjwvY21kPgotPC9zdWJzdGVwPgotPHN1YnN0ZXA+PGNtZD5JbiB0aGUgQWN0aW9ucyBwYW5lLCBlbnRlciB0aGUgUmVnaXN0cnkgbmFtZSBhbmQgSW5xdWlyeSBVUkwKLW9mIHRoZSByZWdpc3RyeSB5b3Ugd2FudCB0byBhZGQuPC9jbWQ+PC9zdWJzdGVwPgotPHN1YnN0ZXA+PGNtZD5DbGljayAgPHVpY29udHJvbD5HbzwvdWljb250cm9sPi48L2NtZD48L3N1YnN0ZXA+Ci08L3N1YnN0ZXBzPgotPC9zdGVwPgotPC9zdGVwcz4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0idHVkZGlleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHN0cnRleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHJlZy5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9yZWYvcnVkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRyZWcuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRyZWcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg5ZWYwNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YWRkcmVnLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iQWRkaW5nIGEgUmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJBbHRob3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGNvbWVzIHBvcHVsYXRlZCB3aXRoIHNldmVyYWwgcmVnaXN0cmllcywgeW91IGNhbiBhbHNvIGFkZCBhZGRpdGlvbmFsIHJlZ2lzdHJpZXMgdG8geW91ciBsaXN0IG9mIGZhdm9yaXRlcy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQWx0aG91Z2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBjb21lcyBwb3B1bGF0ZWQgd2l0aCBzZXZlcmFsIHJlZ2lzdHJpZXMsIHlvdSBjYW4gYWxzbyBhZGQgYWRkaXRpb25hbCByZWdpc3RyaWVzIHRvIHlvdXIgbGlzdCBvZiBmYXZvcml0ZXMuIiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBhZGRpbmcgYSByZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCBXZWIgU2VydmljZXMgRXhwbG9yZXIsIGFkZGluZyBhIHJlZ2lzdHJ5LCByZWdpc3RyaWVzLCBhZGRpbmcgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgYWRkaW5nIGEgcmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciwgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCBhZGRpbmcgYSByZWdpc3RyeSwgcmVnaXN0cmllcywgYWRkaW5nIHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90dWRkaWV4cC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jdWRkaS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0dWRkaWV4cC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0c3RydGV4cC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0cmVnLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3JlZi9ydWRkaS5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InRhZGRyZWciIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5BZGRpbmcgYSBSZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0YWRkcmVnIj48YSBuYW1lPSJ0YWRkcmVnIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5BZGRpbmcgYSBSZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9oMT4KLQotCi0KLQotPGRpdj48cD5BbHRob3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGNvbWVzIHBvcHVsYXRlZCB3aXRoIHNldmVyYWwKLXJlZ2lzdHJpZXMsIHlvdSBjYW4gYWxzbyBhZGQgYWRkaXRpb25hbCByZWdpc3RyaWVzIHRvIHlvdXIgbGlzdCBvZiBmYXZvcml0ZXMuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj48ZGl2IGNsYXNzPSJwIj5QcmVyZXF1aXNpdGVzOjxvbD4KLTxsaT48YSBocmVmPSJ0cmVnLmh0bWwiPlJlZ2lzdGVyIHdpdGggYSByZWdpc3RyeTwvYT48L2xpPgotCi08bGk+PGEgaHJlZj0idHN0cnRleHAuaHRtbCI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+PC9saT4KLQotPC9vbD4KLTwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPldoZW4geW91IGFyZSByZWFkeSB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5IGFuZCBXZWIgc2VydmljZSwKLWFkZCBhIHByb2R1Y3Rpb24gcmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlci4gSW4gb3JkZXIgdG8gcHVibGlzaAoteW91ciBidXNpbmVzcyBlbnRpdHkgYW5kIFdlYiBzZXJ2aWNlIHRvIGEgcHJvZHVjdGlvbiByZWdpc3RyeSwgeW91IG11c3QgZmlyc3QKLXJlZ2lzdGVyIHdpdGggdGhlIHJlZ2lzdHJ5LiBUaGUgcmVnaXN0cnkgd2lsbCBwcm92aWRlIGluc3RydWN0aW9ucyBmb3IgcmVnaXN0ZXJpbmcuCi1Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiByZWdpc3RyaWVzLCByZWZlciB0byAgPGEgaHJlZj0idHJlZy5odG1sIj5SZWdpc3RlcmluZyB3aXRoIGEgcmVnaXN0cnk8L2E+LjwvcD4KLTxwPlRoZSBVRERJIEJ1c2luZXNzIFJlZ2lzdHJ5IGlzIGEgc2V0IG9mIGdsb2JhbAotcmVwbGljYXRlZCByZWdpc3RyaWVzLiBGb3IgYSBsaXN0IG9mIHB1YmxpYyByZWdpc3RyaWVzIHJlZmVyIHRvICA8YSBocmVmPSJodHRwOi8vd3d3LlVEREkub3JnL3JlZ2lzdGVyLmh0bWwiIHRhcmdldD0iX2JsYW5rIj53d3cudWRkaS5vcmcvcmVnaXN0ZXIuaHRtbDwvYT48L3A+Ci08cD5UaGUgSUJNPHN1cD7Crjwvc3VwPiBVRERJIEJ1c2luZXNzCi1SZWdpc3RyeSBpcyBhIHB1YmxpYyBwcm9kdWN0aW9uIHJlZ2lzdHJ5IG1haW50YWluZWQgYnkgSUJNLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgSUJNIFVEREkgQnVzaW5lc3MKLVJlZ2lzdHJ5IHJlZmVyIHRvICA8YSBocmVmPSJodHRwOi8vdWRkaS5pYm0uY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3VkZGkuaWJtLmNvbTwvYT48L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpPjxzcGFuPlRvIGFkZCBhIFJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgZnJvbSBGYXZvcml0ZXMsCi1kbyB0aGUgZm9sbG93aW5nOjwvc3Bhbj4KLTxvbCB0eXBlPSJhIj4KLTxsaT48c3Bhbj5DbGljayB0aGUgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZhdm9yaXRlczwvc3Bhbj4gaWNvbiAgPGltZyBzcmM9Ii4uL2ltYWdlcy9mYXYuZ2lmIiBhbHQ9IlBpY3R1cmUgb2YgdGhlIEZhdm9yaXRlcyBpY29uLiIgLz4gaW4gdGhlIG1haW4gdG9vbGJhci48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkV4cGFuZCAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmF2b3JpdGUgVURESSBSZWdpc3RyaWVzPC9zcGFuPi48L3NwYW4+Ci08L2xpPgotCi08bGk+PHNwYW4+U2VsZWN0IGEgcmVnaXN0cnkgdGhlbiBjbGljayB0aGUgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFkZCB0byBVRERJIFBhZ2U8L3NwYW4+IGljb24KLSA8aW1nIHNyYz0iLi4vaW1hZ2VzL2FkZHVkZGkuZ2lmIiBhbHQ9IlBpY3R1cmUgb2YgdGhlIEFkZCB0byBVRERJIFBhZ2UgaWNvbi4iIC8+IGluIHRoZSBBY3Rpb25zIHBhbmUuPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTwvbGk+Ci0KLTxsaT48c3Bhbj5UbyBhZGQgYSBSZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG1hbnVhbGx5LCBkbyB0aGUKLWZvbGxvd2luZzo8L3NwYW4+Ci08b2wgdHlwZT0iYSI+Ci08bGk+PHNwYW4+SW4gdGhlIFVEREkgTmF2aWdhdG9yIHBhbmUsIGNsaWNrIHRoZSAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+VURESSBNYWluPC9zcGFuPiBub2RlLjwvc3Bhbj4KLTwvbGk+Ci0KLTxsaT48c3Bhbj5JbiB0aGUgQWN0aW9ucyBwYW5lLCBlbnRlciB0aGUgUmVnaXN0cnkgbmFtZSBhbmQgSW5xdWlyeSBVUkwKLW9mIHRoZSByZWdpc3RyeSB5b3Ugd2FudCB0byBhZGQuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+R288L3NwYW4+Ljwvc3Bhbj48L2xpPgotCi08L29sPgotCi08L2xpPgotCi08L29sPgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90YXNrcy90dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgdGl0bGU9IlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InR1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0c3RydGV4cC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBhbGxvd3MgeW91IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIHNldmVyYWwgd2F5cy4iPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0cmVnLmh0bWwiIHRpdGxlPSJJbiBvcmRlciB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5IGFuZCBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnksIHlvdSBtdXN0IGZpcnN0IHJlZ2lzdGVyIHdpdGggdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLiI+UmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnk8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgUmVmZXJlbmNlPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vcmVmL3J1ZGRpLmh0bWwiIHRpdGxlPSJPbmNlIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYW5kIGxvZ2dlZCBpbiB0byB0aGUgVURESSByZWdpc3RyeSB0aGF0IHlvdSB3YW50IHRvIHVzZSwgeW91IGNhbiByZWdpc3RlciB5b3VyIFdlYiBzZXJ2aWNlLiBSZWdpc3RyYXRpb24gb2YgYSBzZXJ2aWNlIGludm9sdmVzIGZvdXIgY29yZSBkYXRhIHN0cnVjdHVyZSB0eXBlczogYnVzaW5lc3MgaW5mb3JtYXRpb24sIHNlcnZpY2UgaW5mb3JtYXRpb24sIGJpbmRpbmcgaW5mb3JtYXRpb24sIGFuZCBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3Igc2VydmljZXMuIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBkYXRhIHR5cGVzIGlzIGRlc2NyaWJlZCBpbiBGaWd1cmUgMS4iPkRhdGEgc3RydWN0dXJlIHR5cGVzIChVRERJIHJlZ2lzdHJ5KTwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGFzc2VydC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGFzc2VydC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDk4ZGE3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3Rhc3NlcnQuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDUsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0YXNzZXJ0IiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPk1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zPC90aXRsZT4KLTxzaG9ydGRlc2M+QSBwdWJsaXNoZXIgYXNzZXJ0aW9uIGlzIGEgd2F5IGluIFVEREkgdG8gYXNzb2NpYXRlIGJ1c2luZXNzRW50aXR5Ci1zdHJ1Y3R1cmVzLiZuYnNwOyBUaGUgcHVibGlzaGVyIGFzc2VydGlvbiBkZWZpbmVzIGEgZ3JvdXAgb2YgYnVzaW5lc3NFbnRpdHkKLXN0cnVjdHVyZXMuIE1hbnkgYnVzaW5lc3NlcyBhcmUgbm90IGVmZmVjdGl2ZWx5IHJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlIGJ1c2luZXNzRW50aXR5LgotQSBwdWJsaXNoZXIgYXNzZXJ0aW9uIGFsbG93cyBmb3IgYXNzb2NpYXRpb25zIHRvIGJlIGZvcm1lZCBiZXR3ZWVuIHNldmVyYWwKLWJ1c2luZXNzRW50aXR5IHN0cnVjdHVyZXMuIEZvciBleGFtcGxlLCBhIGxhcmdlIGNvbXBhbnkgbWF5IGhhdmUgc2V2ZXJhbCBzdWJzaWRpYXJpZXMKLXRoYXQgaGF2ZSBkaWZmZXJlbnQgZGVzY3JpcHRpb25zIGJ1dCBhcmUgc3RpbGwgY2xvc2VseSBjb3VwbGVkIGFuZCB3YW50IHRvCi1tYWtlIHRoZWlyIHJlbGF0aW9uc2hpcHMgdmlzaWJsZSBpbiBVRERJIHJlZ2lzdHJpZXMuPC9zaG9ydGRlc2M+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPlVEREk8aW5kZXh0ZXJtPm1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxwcmVyZXE+UHJlcmVxdWlzaXRlczo8b2w+Ci08bGk+PHhyZWYgaHJlZj0idHJlZy5kaXRhIj5SZWdpc3RlciB3aXRoIGEgcmVnaXN0cnk8L3hyZWY+PC9saT4KLTxsaT48eHJlZiBocmVmPSJ0c3RydGV4cC5kaXRhIj5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwveHJlZj48L2xpPgotPGxpPjx4cmVmIGhyZWY9InRhZGRyZWcuZGl0YSI+QWRkIHRoZSByZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC94cmVmPjwvbGk+Ci08L29sPjwvcHJlcmVxPgotPGNvbnRleHQ+PHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcHVibGlzaGVyIGFzc2VydGlvbnMsIHJlZmVyIHRvIHRoZSAgPHhyZWYKLWhyZWY9Imh0dHA6Ly93d3cudWRkaS5vcmcvc3BlY2lmaWNhdGlvbi5odG1sIiBzY29wZT0iZXh0ZXJuYWwiPlVEREkgVmVyc2lvbgotMi4wIFByb2dyYW1tZXIncyBBUEkgU3BlY2lmaWNhdGlvbjwveHJlZj4gYW5kIHRoZSAgPHhyZWYgaHJlZj0iaHR0cDovL3d3dy51ZGRpLm9yZy9zcGVjaWZpY2F0aW9uLmh0bWwiCi1zY29wZT0iZXh0ZXJuYWwiPlVEREkgVmVyc2lvbiAyLjAgRGF0YSBTdHJ1Y3R1cmUgU3BlY2lmaWNhdGlvbjwveHJlZj4uPC9wPjxwPlRvCi1tYW5hZ2UgcHVibGlzaGVyIGFzc2VydGlvbnMsIGRvIHRoZSBmb2xsb3dpbmc6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+SW4gdGhlIE5hdmlnYXRvciBwYW5lLCBzZWxlY3QgdGhlIGJ1c2luZXNzIGVudGl0eSBmb3Igd2hpY2ggeW91Ci13YW50IHRvIG1hbmFnZSByZWZlcmVuY2VkIGJ1c2luZXNzZXMuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgQWN0aW9ucyBwYW5lIHRvb2xiYXIsIGNsaWNrIHRoZSAgPHVpY29udHJvbD5NYW5hZ2UgUHVibGlzaGVyCi1Bc3NlcnRpb25zPC91aWNvbnRyb2w+IGljb24gIDxpbWFnZSBhbHQ9IlBpY3R1cmUgb2YgdGhlIE1hbmFnZSBQdWJsaXNoZXIgQXNzZXJ0aW9ucyBpY29uLiIKLWhyZWY9Ii4uL2ltYWdlcy9idXNhc3N0LmdpZiI+PC9pbWFnZT4uPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5PbiB0aGUgTWFuYWdlIFB1Ymxpc2hlciBBc3NlcnRpb25zIHBhZ2UgeW91IGNhbiBhZGQsIHJlbW92ZSwgYW5kCi1tYWludGFpbiByZWxhdGlvbnNoaXBzIHdpdGggb3RoZXIgYnVzaW5lc3MgZW50aXRpZXMuPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+PHA+IDx1aWNvbnRyb2w+SW1wb3J0YW50OjwvdWljb250cm9sPiBBIGJ1c2luZXNzIGVudGl0eSB0aGF0IGlzIHJlZmVyZW5jZWQKLWJ5IGFub3RoZXIgYnVzaW5lc3MgZW50aXR5IG11c3QgaW4gdHVybiByZWZlcmVuY2UgdGhhdCBidXNpbmVzcyBlbnRpdHkgaW4KLW9yZGVyIHRvIG1ha2UgdGhlIHB1Ymxpc2hlciBhc3NlcnRpb24gcHVibGljLiBBIG9uZS13YXkgcmVmZXJlbmNlIGlzIGNvbnNpZGVyZWQKLWFuIGluY29tcGxldGUgcHVibGlzaGVyIGFzc2VydGlvbiBhbmQgaXMgdmlzaWJsZSBvbmx5IHRvIHRoZSBvd25lciBvZiB0aGUKLWJ1c2luZXNzIGVudGl0eS48L3A+PC9yZXN1bHQ+Ci08L3Rhc2tib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD4gVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jdWRkaS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InR1ZGRpZXhwLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRzdHJ0ZXhwLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRyZWcuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBSZWZlcmVuY2U8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vcmVmL3J1ZGRpLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L3Rhc2s+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YXNzZXJ0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YXNzZXJ0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5M2FiOWUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGFzc2VydC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJ0YXNrIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9Ik1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IkEgcHVibGlzaGVyIGFzc2VydGlvbiBpcyBhIHdheSBpbiBVRERJIHRvIGFzc29jaWF0ZSBidXNpbmVzc0VudGl0eSBzdHJ1Y3R1cmVzLsKgIFRoZSBwdWJsaXNoZXIgYXNzZXJ0aW9uIGRlZmluZXMgYSBncm91cCBvZiBidXNpbmVzc0VudGl0eSBzdHJ1Y3R1cmVzLiBNYW55IGJ1c2luZXNzZXMgYXJlIG5vdCBlZmZlY3RpdmVseSByZXByZXNlbnRlZCBieSBhIHNpbmdsZSBidXNpbmVzc0VudGl0eS4gQSBwdWJsaXNoZXIgYXNzZXJ0aW9uIGFsbG93cyBmb3IgYXNzb2NpYXRpb25zIHRvIGJlIGZvcm1lZCBiZXR3ZWVuIHNldmVyYWwgYnVzaW5lc3NFbnRpdHkgc3RydWN0dXJlcy4gRm9yIGV4YW1wbGUsIGEgbGFyZ2UgY29tcGFueSBtYXkgaGF2ZSBzZXZlcmFsIHN1YnNpZGlhcmllcyB0aGF0IGhhdmUgZGlmZmVyZW50IGRlc2NyaXB0aW9ucyBidXQgYXJlIHN0aWxsIGNsb3NlbHkgY291cGxlZCBhbmQgd2FudCB0byBtYWtlIHRoZWlyIHJlbGF0aW9uc2hpcHMgdmlzaWJsZSBpbiBVRERJIHJlZ2lzdHJpZXMuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkEgcHVibGlzaGVyIGFzc2VydGlvbiBpcyBhIHdheSBpbiBVRERJIHRvIGFzc29jaWF0ZSBidXNpbmVzc0VudGl0eSBzdHJ1Y3R1cmVzLsKgIFRoZSBwdWJsaXNoZXIgYXNzZXJ0aW9uIGRlZmluZXMgYSBncm91cCBvZiBidXNpbmVzc0VudGl0eSBzdHJ1Y3R1cmVzLiBNYW55IGJ1c2luZXNzZXMgYXJlIG5vdCBlZmZlY3RpdmVseSByZXByZXNlbnRlZCBieSBhIHNpbmdsZSBidXNpbmVzc0VudGl0eS4gQSBwdWJsaXNoZXIgYXNzZXJ0aW9uIGFsbG93cyBmb3IgYXNzb2NpYXRpb25zIHRvIGJlIGZvcm1lZCBiZXR3ZWVuIHNldmVyYWwgYnVzaW5lc3NFbnRpdHkgc3RydWN0dXJlcy4gRm9yIGV4YW1wbGUsIGEgbGFyZ2UgY29tcGFueSBtYXkgaGF2ZSBzZXZlcmFsIHN1YnNpZGlhcmllcyB0aGF0IGhhdmUgZGlmZmVyZW50IGRlc2NyaXB0aW9ucyBidXQgYXJlIHN0aWxsIGNsb3NlbHkgY291cGxlZCBhbmQgd2FudCB0byBtYWtlIHRoZWlyIHJlbGF0aW9uc2hpcHMgdmlzaWJsZSBpbiBVRERJIHJlZ2lzdHJpZXMuIiAvPgotPG1ldGEgY29udGVudD0iVURESSwgbWFuYWdpbmcgcHVibGlzaGVyIGFzc2VydGlvbnMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJVRERJLCBtYW5hZ2luZyBwdWJsaXNoZXIgYXNzZXJ0aW9ucyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InR1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRzdHJ0ZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRyZWcuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vcmVmL3J1ZGRpLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idGFzc2VydCIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPk1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0YXNzZXJ0Ij48YSBuYW1lPSJ0YXNzZXJ0Ij48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5NYW5hZ2luZyBwdWJsaXNoZXIgYXNzZXJ0aW9uczwvaDE+Ci0KLQotCi08ZGl2PjxwPkEgcHVibGlzaGVyIGFzc2VydGlvbiBpcyBhIHdheSBpbiBVRERJIHRvIGFzc29jaWF0ZSBidXNpbmVzc0VudGl0eQotc3RydWN0dXJlcy7CoCBUaGUgcHVibGlzaGVyIGFzc2VydGlvbiBkZWZpbmVzIGEgZ3JvdXAgb2YgYnVzaW5lc3NFbnRpdHkKLXN0cnVjdHVyZXMuIE1hbnkgYnVzaW5lc3NlcyBhcmUgbm90IGVmZmVjdGl2ZWx5IHJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlIGJ1c2luZXNzRW50aXR5LgotQSBwdWJsaXNoZXIgYXNzZXJ0aW9uIGFsbG93cyBmb3IgYXNzb2NpYXRpb25zIHRvIGJlIGZvcm1lZCBiZXR3ZWVuIHNldmVyYWwKLWJ1c2luZXNzRW50aXR5IHN0cnVjdHVyZXMuIEZvciBleGFtcGxlLCBhIGxhcmdlIGNvbXBhbnkgbWF5IGhhdmUgc2V2ZXJhbCBzdWJzaWRpYXJpZXMKLXRoYXQgaGF2ZSBkaWZmZXJlbnQgZGVzY3JpcHRpb25zIGJ1dCBhcmUgc3RpbGwgY2xvc2VseSBjb3VwbGVkIGFuZCB3YW50IHRvCi1tYWtlIHRoZWlyIHJlbGF0aW9uc2hpcHMgdmlzaWJsZSBpbiBVRERJIHJlZ2lzdHJpZXMuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj5QcmVyZXF1aXNpdGVzOjxvbD4KLTxsaT48YSBocmVmPSJ0cmVnLmh0bWwiPlJlZ2lzdGVyIHdpdGggYSByZWdpc3RyeTwvYT48L2xpPgotCi08bGk+PGEgaHJlZj0idHN0cnRleHAuaHRtbCI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+PC9saT4KLQotPGxpPjxhIGhyZWY9InRhZGRyZWcuaHRtbCI+QWRkIHRoZSByZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvbGk+Ci0KLTwvb2w+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcHVibGlzaGVyIGFzc2VydGlvbnMsIHJlZmVyIHRvIHRoZSAgPGEgaHJlZj0iaHR0cDovL3d3dy51ZGRpLm9yZy9zcGVjaWZpY2F0aW9uLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5VRERJIFZlcnNpb24gMi4wIFByb2dyYW1tZXIncyBBUEkgU3BlY2lmaWNhdGlvbjwvYT4gYW5kIHRoZSAgPGEgaHJlZj0iaHR0cDovL3d3dy51ZGRpLm9yZy9zcGVjaWZpY2F0aW9uLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5VRERJIFZlcnNpb24gMi4wIERhdGEgU3RydWN0dXJlIFNwZWNpZmljYXRpb248L2E+LjwvcD4KLTxwPlRvCi1tYW5hZ2UgcHVibGlzaGVyIGFzc2VydGlvbnMsIGRvIHRoZSBmb2xsb3dpbmc6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaT48c3Bhbj5JbiB0aGUgTmF2aWdhdG9yIHBhbmUsIHNlbGVjdCB0aGUgYnVzaW5lc3MgZW50aXR5IGZvciB3aGljaCB5b3UKLXdhbnQgdG8gbWFuYWdlIHJlZmVyZW5jZWQgYnVzaW5lc3Nlcy48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkluIHRoZSBBY3Rpb25zIHBhbmUgdG9vbGJhciwgY2xpY2sgdGhlICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5NYW5hZ2UgUHVibGlzaGVyCi1Bc3NlcnRpb25zPC9zcGFuPiBpY29uICA8aW1nIHNyYz0iLi4vaW1hZ2VzL2J1c2Fzc3QuZ2lmIiBhbHQ9IlBpY3R1cmUgb2YgdGhlIE1hbmFnZSBQdWJsaXNoZXIgQXNzZXJ0aW9ucyBpY29uLiIgLz4uPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5PbiB0aGUgTWFuYWdlIFB1Ymxpc2hlciBBc3NlcnRpb25zIHBhZ2UgeW91IGNhbiBhZGQsIHJlbW92ZSwgYW5kCi1tYWludGFpbiByZWxhdGlvbnNoaXBzIHdpdGggb3RoZXIgYnVzaW5lc3MgZW50aXRpZXMuPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5JbXBvcnRhbnQ6PC9zcGFuPiBBIGJ1c2luZXNzIGVudGl0eSB0aGF0IGlzIHJlZmVyZW5jZWQKLWJ5IGFub3RoZXIgYnVzaW5lc3MgZW50aXR5IG11c3QgaW4gdHVybiByZWZlcmVuY2UgdGhhdCBidXNpbmVzcyBlbnRpdHkgaW4KLW9yZGVyIHRvIG1ha2UgdGhlIHB1Ymxpc2hlciBhc3NlcnRpb24gcHVibGljLiBBIG9uZS13YXkgcmVmZXJlbmNlIGlzIGNvbnNpZGVyZWQKLWFuIGluY29tcGxldGUgcHVibGlzaGVyIGFzc2VydGlvbiBhbmQgaXMgdmlzaWJsZSBvbmx5IHRvIHRoZSBvd25lciBvZiB0aGUKLWJ1c2luZXNzIGVudGl0eS48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vdGFza3MvdHVkZGlleHAuaHRtbCIgdGl0bGU9IlRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIj5QdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXM8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIj4gVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIj5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIHRpdGxlPSJVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSB3YXkgdG8gcHVibGlzaCBhbmQgZGlzY292ZXIgaW5mb3JtYXRpb24gYWJvdXQgV2ViIHNlcnZpY2VzLiI+VW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSk8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJ0dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idHN0cnRleHAuaHRtbCIgdGl0bGU9IlRoZSBXZWIgc2VydmljZXMgdG9vbHMgYWxsb3dzIHlvdSB0byBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBpbiBzZXZlcmFsIHdheXMuIj5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idHJlZy5odG1sIiB0aXRsZT0iSW4gb3JkZXIgdG8gcHVibGlzaCB5b3VyIGJ1c2luZXNzIGVudGl0eSBhbmQgV2ViIHNlcnZpY2UgdG8gYSBVRERJIHJlZ2lzdHJ5LCB5b3UgbXVzdCBmaXJzdCByZWdpc3RlciB3aXRoIHRoZSByZWdpc3RyeSB0aGF0IHlvdSB3YW50IHRvIHVzZS4iPlJlZ2lzdGVyaW5nIHdpdGggYSBVRERJIHJlZ2lzdHJ5PC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFJlZmVyZW5jZTwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3JlZi9ydWRkaS5odG1sIiB0aXRsZT0iT25jZSB5b3UgaGF2ZSByZWdpc3RlcmVkIGFuZCBsb2dnZWQgaW4gdG8gdGhlIFVEREkgcmVnaXN0cnkgdGhhdCB5b3Ugd2FudCB0byB1c2UsIHlvdSBjYW4gcmVnaXN0ZXIgeW91ciBXZWIgc2VydmljZS4gUmVnaXN0cmF0aW9uIG9mIGEgc2VydmljZSBpbnZvbHZlcyBmb3VyIGNvcmUgZGF0YSBzdHJ1Y3R1cmUgdHlwZXM6IGJ1c2luZXNzIGluZm9ybWF0aW9uLCBzZXJ2aWNlIGluZm9ybWF0aW9uLCBiaW5kaW5nIGluZm9ybWF0aW9uLCBhbmQgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIHNlcnZpY2VzLiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZGF0YSB0eXBlcyBpcyBkZXNjcmliZWQgaW4gRmlndXJlIDEuIj5EYXRhIHN0cnVjdHVyZSB0eXBlcyAoVURESSByZWdpc3RyeSk8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3Ria21yay5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGJrbXJrLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YzZhNzQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGJrbXJrLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idGJrbXJrIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPkFkZGluZyBhIHJlZ2lzdHJ5LCBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsIHNlcnZpY2UgaW50ZXJmYWNlLAotV1NJTCwgb3IgV1NETCBzZXJ2aWNlIHRvIEZhdm9yaXRlczwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPkFkZGluZyBhIHJlZ2lzdHJ5LCBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsIHNlcnZpY2UKLWludGVyZmFjZSwgV1NJTCwgb3IgV1NETCBzZXJ2aWNlIHRvIEZhdm9yaXRlczwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+WW91IGNhbiBhZGQgYSByZWdpc3RyeSwgYnVzaW5lc3MgZW50aXR5LCBidXNpbmVzcyBzZXJ2aWNlLCBzZXJ2aWNlCi1pbnRlcmZhY2UsIFdTSUwsIG9yIFdTREwgc2VydmljZSB0byB0aGUgV2ViIFNlcnZpY2UgRXhwbG9yZXIgRmF2b3JpdGVzIGlmCi15b3UgcGxhbiB0byBhY2Nlc3MgdGhlbSBpbiB0aGUgZnV0dXJlLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XZWIgU2VydmljZXMgRXhwbG9yZXI8aW5kZXh0ZXJtPmFkZGluZyBGYXZvcml0ZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V1NJTDxpbmRleHRlcm0+YWRkaW5nIHRvIEZhdm9yaXRlczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0+V1NETDxpbmRleHRlcm0+YWRkaW5nCi10byBGYXZvcml0ZXM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxwcmVyZXE+UHJlcmVxdWlzaXRlOiAgPHVsPgotPGxpPjx4cmVmIGhyZWY9InRzdHJ0ZXhwLmRpdGEiPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC94cmVmPjwvbGk+Ci08L3VsPjwvcHJlcmVxPgotPGNvbnRleHQ+PHA+VG8gYWRkIGEgcmVnaXN0cnksIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIHNlcnZpY2UgaW50ZXJmYWNlLAotV1NJTCwgb3IgV1NETCB0byBGYXZvcml0ZXMgdXNpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlcjo8L3A+PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5OYXZpZ2F0ZSB0aHJvdWdoIHRoZSByZWdpc3RyeSBoaWVyYXJjaHkgdG8gZmluZCB0aGUgcmVnaXN0cnksIGJ1c2luZXNzCi1lbnRpdHksIFdlYiBzZXJ2aWNlLCBzZXJ2aWNlIGludGVyZmFjZSBvciB0aGUgV1NJTCBwYWdlIHRvIGZpbmQgdGhlIFdTSUwgb3IKLVdTREwgc2VydmljZSB5b3Ugd2FudCB0byBhZGQgdG8gRmF2b3JpdGVzLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+U2VsZWN0IHRoZSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBzZXJ2aWNlIGludGVyZmFjZSwgV1NJTCwKLW9yIFdTREwgc2VydmljZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkluIHRoZSBBY3Rpb25zIGljb24gYmFyLCBjbGljayB0aGUgIDx1aWNvbnRyb2w+QWRkIHRvIGZhdm9yaXRlczwvdWljb250cm9sPiBpY29uCi0gPGltYWdlIGFsdD0iUGljdHVyZSBvZiB0aGUgQWRkIHRvIGZhdm9yaXRlcyBpY29uLiIgaHJlZj0iLi4vaW1hZ2VzL2FkZGZhdi5naWYiPgotPC9pbWFnZT4uPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+PHA+QW55IGZhdm9yaXRlcyB0aGF0IHlvdSBhZGQgYXJlIHNhdmVkIGJ5IHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIKLXRvJm5ic3A7PC9wPjxwPiA8dmFybmFtZT5YPC92YXJuYW1lPjpcd29ya3NwYWNlXC5tZXRhZGF0YVwucGx1Z2luc1xjb20uaWJtLmV0b29scy53ZWJzZXJ2aWNlLmV4cGxvcmVyXGZhdm9yaXRlcy53c2lsPC9wPjxwPldoZXJlCi0gPHZhcm5hbWU+WDwvdmFybmFtZT4gaXMgdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3VyIHdvcmtzcGFjZSBmb2xkZXIgaXMgbG9jYXRlZC4KLUlmIHlvdSBhcmUgbWlncmF0aW5nIGZyb20gYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoZSBwcm9kdWN0LCB5b3VyIGZhdm9yaXRlcwotd2lsbCBiZSBhdXRvbWF0aWNhbGx5IG1pZ3JhdGVkIHRvIHRoaXMgbG9jYXRpb24uPC9wPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIENvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSJ0dWRkaWV4cC5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSJ0c3RydGV4cC5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSJ0cmVnLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgUmVmZXJlbmNlPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL3JlZi9ydWRkaS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGJrbXJrLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YmttcmsuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIyZWVmNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YmttcmsuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJBZGRpbmcgYSByZWdpc3RyeSwgYnVzaW5lc3MgZW50aXR5LCBidXNpbmVzcyBzZXJ2aWNlLCBzZXJ2aWNlIGludGVyZmFjZSwgV1NJTCwgb3IgV1NETCBzZXJ2aWNlIHRvIEZhdm9yaXRlcyIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJZb3UgY2FuIGFkZCBhIHJlZ2lzdHJ5LCBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsIHNlcnZpY2UgaW50ZXJmYWNlLCBXU0lMLCBvciBXU0RMIHNlcnZpY2UgdG8gdGhlIFdlYiBTZXJ2aWNlIEV4cGxvcmVyIEZhdm9yaXRlcyBpZiB5b3UgcGxhbiB0byBhY2Nlc3MgdGhlbSBpbiB0aGUgZnV0dXJlLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJZb3UgY2FuIGFkZCBhIHJlZ2lzdHJ5LCBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsIHNlcnZpY2UgaW50ZXJmYWNlLCBXU0lMLCBvciBXU0RMIHNlcnZpY2UgdG8gdGhlIFdlYiBTZXJ2aWNlIEV4cGxvcmVyIEZhdm9yaXRlcyBpZiB5b3UgcGxhbiB0byBhY2Nlc3MgdGhlbSBpbiB0aGUgZnV0dXJlLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBTZXJ2aWNlcyBFeHBsb3JlciwgYWRkaW5nIEZhdm9yaXRlcywgV1NJTCwgYWRkaW5nIHRvIEZhdm9yaXRlcywgV1NETCwgYWRkaW5nIHRvIEZhdm9yaXRlcyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBTZXJ2aWNlcyBFeHBsb3JlciwgYWRkaW5nIEZhdm9yaXRlcywgV1NJTCwgYWRkaW5nIHRvIEZhdm9yaXRlcywgV1NETCwgYWRkaW5nIHRvIEZhdm9yaXRlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InR1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRzdHJ0ZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRyZWcuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vcmVmL3J1ZGRpLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idGJrbXJrIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+QWRkaW5nIGEgcmVnaXN0cnksIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwgc2VydmljZQotaW50ZXJmYWNlLCBXU0lMLCBvciBXU0RMIHNlcnZpY2UgdG8gRmF2b3JpdGVzPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0YmttcmsiPjxhIG5hbWU9InRia21yayI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+QWRkaW5nIGEgcmVnaXN0cnksIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsCi1XU0lMLCBvciBXU0RMIHNlcnZpY2UgdG8gRmF2b3JpdGVzPC9oMT4KLQotCi0KLQotPGRpdj48cD5Zb3UgY2FuIGFkZCBhIHJlZ2lzdHJ5LCBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsIHNlcnZpY2UKLWludGVyZmFjZSwgV1NJTCwgb3IgV1NETCBzZXJ2aWNlIHRvIHRoZSBXZWIgU2VydmljZSBFeHBsb3JlciBGYXZvcml0ZXMgaWYKLXlvdSBwbGFuIHRvIGFjY2VzcyB0aGVtIGluIHRoZSBmdXR1cmUuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj5QcmVyZXF1aXNpdGU6ICA8dWw+Ci08bGk+PGEgaHJlZj0idHN0cnRleHAuaHRtbCI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+PC9saT4KLQotPC91bD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBhZGQgYSByZWdpc3RyeSwgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsCi1XU0lMLCBvciBXU0RMIHRvIEZhdm9yaXRlcyB1c2luZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+TmF2aWdhdGUgdGhyb3VnaCB0aGUgcmVnaXN0cnkgaGllcmFyY2h5IHRvIGZpbmQgdGhlIHJlZ2lzdHJ5LCBidXNpbmVzcwotZW50aXR5LCBXZWIgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2Ugb3IgdGhlIFdTSUwgcGFnZSB0byBmaW5kIHRoZSBXU0lMIG9yCi1XU0RMIHNlcnZpY2UgeW91IHdhbnQgdG8gYWRkIHRvIEZhdm9yaXRlcy48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPlNlbGVjdCB0aGUgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsIFdTSUwsCi1vciBXU0RMIHNlcnZpY2UuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5JbiB0aGUgQWN0aW9ucyBpY29uIGJhciwgY2xpY2sgdGhlICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5BZGQgdG8gZmF2b3JpdGVzPC9zcGFuPiBpY29uCi0gPGltZyBzcmM9Ii4uL2ltYWdlcy9hZGRmYXYuZ2lmIiBhbHQ9IlBpY3R1cmUgb2YgdGhlIEFkZCB0byBmYXZvcml0ZXMgaWNvbi4iIC8+Ljwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5BbnkgZmF2b3JpdGVzIHRoYXQgeW91IGFkZCBhcmUgc2F2ZWQgYnkgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcgotdG/CoDwvcD4KLTxwPiA8dmFyIGNsYXNzPSJ2YXJuYW1lIj5YPC92YXI+Olx3b3Jrc3BhY2VcLm1ldGFkYXRhXC5wbHVnaW5zXGNvbS5pYm0uZXRvb2xzLndlYnNlcnZpY2UuZXhwbG9yZXJcZmF2b3JpdGVzLndzaWw8L3A+Ci08cD5XaGVyZQotIDx2YXIgY2xhc3M9InZhcm5hbWUiPlg8L3Zhcj4gaXMgdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3VyIHdvcmtzcGFjZSBmb2xkZXIgaXMgbG9jYXRlZC4KLUlmIHlvdSBhcmUgbWlncmF0aW5nIGZyb20gYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoZSBwcm9kdWN0LCB5b3VyIGZhdm9yaXRlcwotd2lsbCBiZSBhdXRvbWF0aWNhbGx5IG1pZ3JhdGVkIHRvIHRoaXMgbG9jYXRpb24uPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuaHRtbCI+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCI+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi9jb25jZXB0cy9jdWRkaS5odG1sIiB0aXRsZT0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgd2F5IHRvIHB1Ymxpc2ggYW5kIGRpc2NvdmVyIGluZm9ybWF0aW9uIGFib3V0IFdlYiBzZXJ2aWNlcy4iPlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0idHVkZGlleHAuaHRtbCIgdGl0bGU9IlRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIj5QdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXM8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRzdHJ0ZXhwLmh0bWwiIHRpdGxlPSJUaGUgV2ViIHNlcnZpY2VzIHRvb2xzIGFsbG93cyB5b3UgdG8gbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgaW4gc2V2ZXJhbCB3YXlzLiI+TGF1bmNoaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRyZWcuaHRtbCIgdGl0bGU9IkluIG9yZGVyIHRvIHB1Ymxpc2ggeW91ciBidXNpbmVzcyBlbnRpdHkgYW5kIFdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeSwgeW91IG11c3QgZmlyc3QgcmVnaXN0ZXIgd2l0aCB0aGUgcmVnaXN0cnkgdGhhdCB5b3Ugd2FudCB0byB1c2UuIj5SZWdpc3RlcmluZyB3aXRoIGEgVURESSByZWdpc3RyeTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBSZWZlcmVuY2U8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9yZWYvcnVkZGkuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbmQgbG9nZ2VkIGluIHRvIHRoZSBVRERJIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UgaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwgYmluZGluZyBpbmZvcm1hdGlvbiwgYW5kIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljYXRpb25zIGZvciBzZXJ2aWNlcy4gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLiI+RGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YnVzcHJvai5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGJ1c3Byb2ouZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRjNWQ1NS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YnVzcHJvai5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNSwgdi40MDAyLS0+Ci08IURPQ1RZUEUgdGFzayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBUYXNrLy9FTiIKLSAidGFzay5kdGQiPgotPHRhc2sgaWQ9InRidXNwcm9qIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPk1hbmFnaW5nIHJlZmVyZW5jZWQgc2VydmljZXM8L3RpdGxlPgotPHNob3J0ZGVzYz5BIHNlcnZpY2UgcHJvamVjdGlvbiBlbmFibGVzIGEgYnVzaW5lc3MgZW50aXR5IHRvIHJlZmVyZW5jZSBhIHNlcnZpY2UKLXRoYXQgd2FzIHB1Ymxpc2hlZCBieSBhbm90aGVyIGJ1c2luZXNzIGVudGl0eS4gQnkgdXNpbmcgdGhlIGJ1c2luZXNzU2VydmljZQotc3RydWN0dXJlIGFzIGEgcHJvamVjdGlvbiB0byBhbiBhbHJlYWR5IHB1Ymxpc2hlZCBidXNpbmVzc1NlcnZpY2UsIGJ1c2luZXNzZXMKLWNhbiBzaGFyZSBvciByZXVzZSBzZXJ2aWNlcy4mbmJzcDsgU2VydmljZSBwcm9qZWN0aW9ucyBhcmUgbWFuYWdlZCBjZW50cmFsbHkKLWFzIHBhcnQgb2YgdGhlIHJlZmVyZW5jaW5nIGJ1c2luZXNzRW50aXR5Ljwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPm1hbmFnaW5nIHNlcnZpY2VzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08aW5kZXh0ZXJtPlVEREk8aW5kZXh0ZXJtPm1hbmFnaW5nIHNlcnZpY2VzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08dGFza2JvZHk+Ci08cHJlcmVxPlByZXJlcXVpc2l0ZXM6PG9sPgotPGxpPjx4cmVmIGhyZWY9InRyZWcuZGl0YSI+UmVnaXN0ZXIgd2l0aCBhIHJlZ2lzdHJ5PC94cmVmPjwvbGk+Ci08bGk+PHhyZWYgaHJlZj0idHN0cnRleHAuZGl0YSI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L3hyZWY+PC9saT4KLTxsaT48eHJlZiBocmVmPSJ0YWRkcmVnLmRpdGEiPkFkZCB0aGUgcmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwveHJlZj48L2xpPgotPC9vbD48L3ByZXJlcT4KLTxjb250ZXh0PjxwPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHJlZmVyZW5jZWQgc2VydmljZXMsIHJlZmVyIHRvIHRoZSAgPHhyZWYKLWhyZWY9Imh0dHA6Ly93d3cudWRkaS5vcmcvc3BlY2lmaWNhdGlvbi5odG1sIiBzY29wZT0iZXh0ZXJuYWwiPlVEREkgVmVyc2lvbgotMi4wIFByb2dyYW1tZXIncyBBUEkgU3BlY2lmaWNhdGlvbjwveHJlZj4gYW5kIHRoZSAgPHhyZWYgaHJlZj0iaHR0cDovL3d3dy51ZGRpLm9yZy9zcGVjaWZpY2F0aW9uLmh0bWwiCi1zY29wZT0iZXh0ZXJuYWwiPlVEREkgVmVyc2lvbiAyLjAgRGF0YSBTdHJ1Y3R1cmUgU3BlY2lmaWNhdGlvbjwveHJlZj4uPC9wPjxwPlRvCi1tYW5hZ2UgcmVmZXJlbmNlZCBzZXJ2aWNlcywgZG8gdGhlIGZvbGxvd2luZzo8L3A+PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5JbiB0aGUgTmF2aWdhdG9yIHBhbmUsIHNlbGVjdCB0aGUgYnVzaW5lc3MgZW50aXR5IGZvciB3aGljaCB5b3UKLXdhbnQgdG8gbWFuYWdlIHJlZmVyZW5jZWQgc2VydmljZXMuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgQWN0aW9ucyBwYW5lIHRvb2xiYXIsIGNsaWNrIHRoZSAgPHVpY29udHJvbD5NYW5hZ2UgUmVmZXJlbmNlZAotU2VydmljZXM8L3VpY29udHJvbD4gaWNvbiAgPGltYWdlIGFsdD0iUGljdHVyZSBvZiB0aGUgTWFuYWdlIFJlZmVyZW5jZWQgU2VydmljZXMgaWNvbi4iCi1ocmVmPSIuLi9pbWFnZXMvcmVmc2Vydi5naWYiPjwvaW1hZ2U+LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+T24gdGhlIE1hbmFnZSBSZWZlcmVuY2VkIFNlcnZpY2VzIHBhZ2UgeW91IGNhbiBhZGQsIHJlbW92ZSwgYW5kCi1tYWludGFpbiBzZXJ2aWNlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IHRoZSBidXNpbmVzcyBlbnRpdHkuPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0idHVkZGlleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHN0cnRleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHJlZy5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9yZWYvcnVkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RidXNwcm9qLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90YnVzcHJvai5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWRjM2VkLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RidXNwcm9qLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJNYW5hZ2luZyByZWZlcmVuY2VkIHNlcnZpY2VzIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IkEgc2VydmljZSBwcm9qZWN0aW9uIGVuYWJsZXMgYSBidXNpbmVzcyBlbnRpdHkgdG8gcmVmZXJlbmNlIGEgc2VydmljZSB0aGF0IHdhcyBwdWJsaXNoZWQgYnkgYW5vdGhlciBidXNpbmVzcyBlbnRpdHkuIEJ5IHVzaW5nIHRoZSBidXNpbmVzc1NlcnZpY2Ugc3RydWN0dXJlIGFzIGEgcHJvamVjdGlvbiB0byBhbiBhbHJlYWR5IHB1Ymxpc2hlZCBidXNpbmVzc1NlcnZpY2UsIGJ1c2luZXNzZXMgY2FuIHNoYXJlIG9yIHJldXNlIHNlcnZpY2VzLsKgIFNlcnZpY2UgcHJvamVjdGlvbnMgYXJlIG1hbmFnZWQgY2VudHJhbGx5IGFzIHBhcnQgb2YgdGhlIHJlZmVyZW5jaW5nIGJ1c2luZXNzRW50aXR5LiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJBIHNlcnZpY2UgcHJvamVjdGlvbiBlbmFibGVzIGEgYnVzaW5lc3MgZW50aXR5IHRvIHJlZmVyZW5jZSBhIHNlcnZpY2UgdGhhdCB3YXMgcHVibGlzaGVkIGJ5IGFub3RoZXIgYnVzaW5lc3MgZW50aXR5LiBCeSB1c2luZyB0aGUgYnVzaW5lc3NTZXJ2aWNlIHN0cnVjdHVyZSBhcyBhIHByb2plY3Rpb24gdG8gYW4gYWxyZWFkeSBwdWJsaXNoZWQgYnVzaW5lc3NTZXJ2aWNlLCBidXNpbmVzc2VzIGNhbiBzaGFyZSBvciByZXVzZSBzZXJ2aWNlcy7CoCBTZXJ2aWNlIHByb2plY3Rpb25zIGFyZSBtYW5hZ2VkIGNlbnRyYWxseSBhcyBwYXJ0IG9mIHRoZSByZWZlcmVuY2luZyBidXNpbmVzc0VudGl0eS4iIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgc2VydmljZXMsIG1hbmFnaW5nIHNlcnZpY2VzLCBVRERJIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBtYW5hZ2luZyBzZXJ2aWNlcywgVURESSIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InR1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRzdHJ0ZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRyZWcuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vcmVmL3J1ZGRpLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idGJ1c3Byb2oiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5NYW5hZ2luZyByZWZlcmVuY2VkIHNlcnZpY2VzPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0YnVzcHJvaiI+PGEgbmFtZT0idGJ1c3Byb2oiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPk1hbmFnaW5nIHJlZmVyZW5jZWQgc2VydmljZXM8L2gxPgotCi0KLQotPGRpdj48cD5BIHNlcnZpY2UgcHJvamVjdGlvbiBlbmFibGVzIGEgYnVzaW5lc3MgZW50aXR5IHRvIHJlZmVyZW5jZSBhIHNlcnZpY2UKLXRoYXQgd2FzIHB1Ymxpc2hlZCBieSBhbm90aGVyIGJ1c2luZXNzIGVudGl0eS4gQnkgdXNpbmcgdGhlIGJ1c2luZXNzU2VydmljZQotc3RydWN0dXJlIGFzIGEgcHJvamVjdGlvbiB0byBhbiBhbHJlYWR5IHB1Ymxpc2hlZCBidXNpbmVzc1NlcnZpY2UsIGJ1c2luZXNzZXMKLWNhbiBzaGFyZSBvciByZXVzZSBzZXJ2aWNlcy7CoCBTZXJ2aWNlIHByb2plY3Rpb25zIGFyZSBtYW5hZ2VkIGNlbnRyYWxseQotYXMgcGFydCBvZiB0aGUgcmVmZXJlbmNpbmcgYnVzaW5lc3NFbnRpdHkuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj5QcmVyZXF1aXNpdGVzOjxvbD4KLTxsaT48YSBocmVmPSJ0cmVnLmh0bWwiPlJlZ2lzdGVyIHdpdGggYSByZWdpc3RyeTwvYT48L2xpPgotCi08bGk+PGEgaHJlZj0idHN0cnRleHAuaHRtbCI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+PC9saT4KLQotPGxpPjxhIGhyZWY9InRhZGRyZWcuaHRtbCI+QWRkIHRoZSByZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvbGk+Ci0KLTwvb2w+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcmVmZXJlbmNlZCBzZXJ2aWNlcywgcmVmZXIgdG8gdGhlICA8YSBocmVmPSJodHRwOi8vd3d3LnVkZGkub3JnL3NwZWNpZmljYXRpb24uaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPlVEREkgVmVyc2lvbiAyLjAgUHJvZ3JhbW1lcidzIEFQSSBTcGVjaWZpY2F0aW9uPC9hPiBhbmQgdGhlICA8YSBocmVmPSJodHRwOi8vd3d3LnVkZGkub3JnL3NwZWNpZmljYXRpb24uaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPlVEREkgVmVyc2lvbiAyLjAgRGF0YSBTdHJ1Y3R1cmUgU3BlY2lmaWNhdGlvbjwvYT4uPC9wPgotPHA+VG8KLW1hbmFnZSByZWZlcmVuY2VkIHNlcnZpY2VzLCBkbyB0aGUgZm9sbG93aW5nOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+SW4gdGhlIE5hdmlnYXRvciBwYW5lLCBzZWxlY3QgdGhlIGJ1c2luZXNzIGVudGl0eSBmb3Igd2hpY2ggeW91Ci13YW50IHRvIG1hbmFnZSByZWZlcmVuY2VkIHNlcnZpY2VzLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+SW4gdGhlIEFjdGlvbnMgcGFuZSB0b29sYmFyLCBjbGljayB0aGUgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk1hbmFnZSBSZWZlcmVuY2VkCi1TZXJ2aWNlczwvc3Bhbj4gaWNvbiAgPGltZyBzcmM9Ii4uL2ltYWdlcy9yZWZzZXJ2LmdpZiIgYWx0PSJQaWN0dXJlIG9mIHRoZSBNYW5hZ2UgUmVmZXJlbmNlZCBTZXJ2aWNlcyBpY29uLiIgLz4uPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5PbiB0aGUgTWFuYWdlIFJlZmVyZW5jZWQgU2VydmljZXMgcGFnZSB5b3UgY2FuIGFkZCwgcmVtb3ZlLCBhbmQKLW1haW50YWluIHNlcnZpY2VzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkgdGhlIGJ1c2luZXNzIGVudGl0eS48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vdGFza3MvdHVkZGlleHAuaHRtbCIgdGl0bGU9IlRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIj5QdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXM8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIj4gVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIj5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIHRpdGxlPSJVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSB3YXkgdG8gcHVibGlzaCBhbmQgZGlzY292ZXIgaW5mb3JtYXRpb24gYWJvdXQgV2ViIHNlcnZpY2VzLiI+VW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSk8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJ0dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idHN0cnRleHAuaHRtbCIgdGl0bGU9IlRoZSBXZWIgc2VydmljZXMgdG9vbHMgYWxsb3dzIHlvdSB0byBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBpbiBzZXZlcmFsIHdheXMuIj5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idHJlZy5odG1sIiB0aXRsZT0iSW4gb3JkZXIgdG8gcHVibGlzaCB5b3VyIGJ1c2luZXNzIGVudGl0eSBhbmQgV2ViIHNlcnZpY2UgdG8gYSBVRERJIHJlZ2lzdHJ5LCB5b3UgbXVzdCBmaXJzdCByZWdpc3RlciB3aXRoIHRoZSByZWdpc3RyeSB0aGF0IHlvdSB3YW50IHRvIHVzZS4iPlJlZ2lzdGVyaW5nIHdpdGggYSBVRERJIHJlZ2lzdHJ5PC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFJlZmVyZW5jZTwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3JlZi9ydWRkaS5odG1sIiB0aXRsZT0iT25jZSB5b3UgaGF2ZSByZWdpc3RlcmVkIGFuZCBsb2dnZWQgaW4gdG8gdGhlIFVEREkgcmVnaXN0cnkgdGhhdCB5b3Ugd2FudCB0byB1c2UsIHlvdSBjYW4gcmVnaXN0ZXIgeW91ciBXZWIgc2VydmljZS4gUmVnaXN0cmF0aW9uIG9mIGEgc2VydmljZSBpbnZvbHZlcyBmb3VyIGNvcmUgZGF0YSBzdHJ1Y3R1cmUgdHlwZXM6IGJ1c2luZXNzIGluZm9ybWF0aW9uLCBzZXJ2aWNlIGluZm9ybWF0aW9uLCBiaW5kaW5nIGluZm9ybWF0aW9uLCBhbmQgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIHNlcnZpY2VzLiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZGF0YSB0eXBlcyBpcyBkZXNjcmliZWQgaW4gRmlndXJlIDEuIj5EYXRhIHN0cnVjdHVyZSB0eXBlcyAoVURESSByZWdpc3RyeSk8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RkaXNjb3YuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RkaXNjb3YuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE4NDcwZi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90ZGlzY292LmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgdGFzayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBUYXNrLy9FTiIKLSAidGFzay5kdGQiPgotPHRhc2sgaWQ9InRkaXNjb3YiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+RGlzY292ZXJpbmcgV2ViIFNlcnZpY2VzPC90aXRsZT4KLTx0aXRsZWFsdHM+Ci08c2VhcmNodGl0bGU+RGlzY292ZXJpbmcgYW5kIGltcG9ydGluZyBXZWIgc2VydmljZXM8L3NlYXJjaHRpdGxlPgotPC90aXRsZWFsdHM+Ci08c2hvcnRkZXNjPldlYiBzZXJ2aWNlcyBjYW4gYmUgbG9jYXRlZCB0aHJvdWdoIGEgcHVibGljIGJ1c2luZXNzIHJlZ2lzdHJ5LAotYSBwcml2YXRlIGJ1c2luZXNzIHJlZ2lzdHJ5LCBvciBhIFdTSUwgZG9jdW1lbnQuIFVEREkgbWFuYWdlcyB0aGUgZGlzY292ZXJ5Ci1vZiBXZWIgc2VydmljZXMgYnkgcmVseWluZyBvbiBhIGRpc3RyaWJ1dGVkIHJlZ2lzdHJ5IG9mIGJ1c2luZXNzZXMgYW5kIHRoZWlyCi1zZXJ2aWNlIGRlc2NyaXB0aW9ucyBpbXBsZW1lbnRlZCBpbiBhIGNvbW1vbiBYTUwgZm9ybWF0Ljwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmRpc2NvdmVyaW5nPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08aW5kZXh0ZXJtPlVEREk8aW5kZXh0ZXJtPmRpc2NvdmVyaW5nIFdlYiBzZXJ2aWNlczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5XU0lMIGZpbGVzPGluZGV4dGVybT5kaXNjb3ZlcmluZyBXZWIgc2VydmljZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPHByZXJlcT48cD5QcmVyZXF1aXNpdGVzOjxvbD4KLTxsaT48eHJlZiBocmVmPSJ0cmVnLmRpdGEiPlJlZ2lzdGVyIHdpdGggYSByZWdpc3RyeTwveHJlZj48L2xpPgotPGxpPjx4cmVmIGhyZWY9InRzdHJ0ZXhwLmRpdGEiPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC94cmVmPjwvbGk+Ci08bGk+PHhyZWYgaHJlZj0idGFkZHJlZy5kaXRhIj5BZGQgdGhlIHJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L3hyZWY+PC9saT4KLTwvb2w+PC9wPjwvcHJlcmVxPgotPGNvbnRleHQ+PHA+V2ViIFNlcnZpY2VzIEluc3BlY3Rpb24gTGFuZ3VhZ2UgKFdTSUwpIGlzIGEgc2VydmljZSBkaXNjb3ZlcnkKLW1lY2hhbmlzbSB0aGF0IGlzIGFuIGFsdGVybmF0aXZlIHRvIFVEREkgYXMgd2VsbCBhcyBjb21wbGVtZW50YXJ5IHRvIFVEREkuCi1XU0lMIGFsbG93cyB5b3UgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNlcnZpY2UgcHJvdmlkZXIgYW5kIGFzayBmb3IgdGhlIHNlcnZpY2VzCi1pdCBwcm92aWRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFdlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlCi1zcGVjaWZpY2F0aW9uLCByZWZlciB0byAgPHhyZWYgaHJlZj0iaHR0cDovL3d3dy0xMDYuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWwiCi1zY29wZT0iZXh0ZXJuYWwiPiB3d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWw8L3hyZWY+LgotIC48L3A+PHA+WW91IGNhbiBkaXNjb3ZlciBhIFdlYiBzZXJ2aWNlIGluIHR3byB3YXlzIHVzaW5nIHRoZSBXZWIgU2VydmljZXMKLUV4cGxvcmVyOjwvcD48L2NvbnRleHQ+Ci08cmVzdWx0Pjx1bD4KLTxsaT4gRGlzY292ZXJpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgVURESSByZWdpc3RyeSA8L2xpPgotPGxpPiBEaXNjb3ZlcmluZyBhIFdlYiBzZXJ2aWNlIGZyb20gYSBXU0lMIGRvY3VtZW50IDwvbGk+Ci08L3VsPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTx0YXNrIGlkPSJkaXNjb3Zlcl9mcm9tX3VkZGkiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+IERpc2NvdmVyaW5nIGEgV2ViIFNlcnZpY2UgZnJvbSBhIFVEREkgUmVnaXN0cnk8L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VGhlIHJlZ2lzdHJ5IGNvbnRhaW5zIFVSTCByZWZlcmVuY2VzIHRvIFdlYiBzZXJ2aWNlIFdTREwgZG9jdW1lbnRzLgotSW4gb3JkZXIgdG8gZGlzY292ZXIgYSBXZWIgc2VydmljZSB0aGUgVVJMIHRvIHRoZSBXZWIgc2VydmljZSBXU0RMIGRvY3VtZW50Ci1tdXN0IGJlIHJlc29sdmFibGUuIFRvIGxvY2F0ZSBXZWIgc2VydmljZSBkZXNjcmlwdGlvbnM6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrIDx1aWNvbnRyb2w+VURESSBNYWluPC91aWNvbnRyb2w+LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIEFjdGlvbnMgcGFuZSBzZWxlY3QgYSByZWdpc3RyeSBmcm9tIHRoZSBkcm9wLWRvd24gbGlzdCBhbmQKLWNsaWNrIDx1aWNvbnRyb2w+R288L3VpY29udHJvbD4uPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgQWN0aW9ucyBwYW5lIHRvb2xiYXIgY2xpY2sgdGhlICA8Yj5GaW5kPC9iPiBpY29uICA8aW1hZ2UKLWFsdD0iQSBwaWN0dXJlIG9mIHRoZSBGaW5kIGljb24uIiBocmVmPSIuLi9pbWFnZXMvZmluZC5naWYiPjwvaW1hZ2U+LjwvY21kPgotPC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgQWN0aW9ucyBwYW5lLCBlbnRlciB0aGUgbmFtZSBvZiB0aGUgcXVlcnksIHdoYXQgeW91IGFyZQotc2VhcmNoaW5nIGZvciwgdGhlIHR5cGUgb2Ygc2VhcmNoIHRoYXQgeW91IHdhbnQgdG8gcGVyZm9ybSwgYW5kIGFueSBxdWVyeQotaW5mb3JtYXRpb246IDwvY21kPgotPHN1YnN0ZXBzPgotPHN1YnN0ZXA+PGNtZD4gPGI+U2VhcmNoIGZvcjwvYj4mbmJzcDsgVGhpcyBsaXN0IGFsbG93cyB5b3UgdG8gc2VhcmNoIGZvcgotYnVzaW5lc3Nlcywgc2VydmljZXMsIG9yIHNlcnZpY2UgaW50ZXJmYWNlcy4gPC9jbWQ+PGluZm8+PHVsPgotPGxpPiA8Yj5CdXNpbmVzc2VzPC9iPiBPbmNlIHlvdSBsb2NhdGUgYSBidXNpbmVzcyBpbiB0aGUgcmVnaXN0cnksIHVzZSB0aGUKLWljb25zIGluIHRoZSBBY3Rpb24gcGFuZSB0b29sYmFyIHRvIGRvIHRoZSBmb2xsb3dpbmc6PHVsPgotPGxpPlZpZXcgYW5kIGVkaXQgYnVzaW5lc3MgZGV0YWlsczwvbGk+Ci08bGk+R2V0IHRoZSBzZXJ2aWNlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBidXNpbmVzczwvbGk+Ci08bGk+UHVibGlzaCBhIHNlcnZpY2U8L2xpPgotPGxpPk1hbmFnZSByZWZlcmVuY2VkIHNlcnZpY2VzPC9saT4KLTxsaT5NYW5hZ2UgcHVibGlzaGVyIGFzc2VydGlvbnM8L2xpPgotPGxpPkFkZCB0aGUgYnVzaW5lc3MgdG8gRmF2b3JpdGVzPC9saT4KLTxsaT5VbnB1Ymxpc2ggdGhlIGJ1c2luZXNzPC9saT4KLTwvdWw+PC9saT4KLTxsaT4gPGI+U2VydmljZXM8L2I+IE9uY2UgeW91IGxvY2F0ZSBhIHNlcnZpY2UgaW4gdGhlIHJlZ2lzdHJ5LCB1c2UgdGhlIGljb25zCi1pbiB0aGUgQWN0aW9uIHBhbmUgdG9vbGJhciB0byBkbyB0aGUgZm9sbG93aW5nOiA8dWw+Ci08bGk+VmlldyBhbmQgZWRpdCBzZXJ2aWNlIGRldGFpbHM8L2xpPgotPGxpPkdldCB0aGUgYnVzaW5lc3MgYXNzb2NpYXRlZCB3aXRoIHRoYXQgc2VydmljZTwvbGk+Ci08bGk+R2V0IHRoZSBzZXJ2aWNlIGludGVyZmFjZXMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgc2VydmljZTwvbGk+Ci08bGk+SW1wb3J0IHRoZSBzZXJ2aWNlIFdTREwgZmlsZSB0byB0aGUgRWNsaXBzZSB3b3JrYmVuY2g8L2xpPgotPGxpPkltcG9ydCB0aGUgc2VydmljZSBXU0RMIGZpbGUgdG8gdGhlIGZpbGUgc3lzdGVtPC9saT4KLTxsaT5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlIHdpemFyZHM8L2xpPgotPGxpPkFkZCB0aGUgc2VydmljZSB0byBGYXZvcml0ZXM8L2xpPgotPGxpPlVucHVibGlzaCB0aGUgc2VydmljZTwvbGk+Ci08L3VsPjwvbGk+Ci08bGk+IDxiPlNlcnZpY2UgaW50ZXJmYWNlczwvYj4gT25jZSB5b3UgbG9jYXRlIGEgc2VydmljZSBpbnRlcmZhY2UgaW4gdGhlCi1yZWdpc3RyeSwgdXNlIHRoZSBpY29ucyBpbiB0aGUgQWN0aW9uIHBhbmUgdG9vbGJhciB0byBkbyB0aGUgZm9sbG93aW5nOiA8dWw+Ci08bGk+VmlldyBhbmQgZWRpdCBpbnRlcmZhY2UgZGV0YWlsczwvbGk+Ci08bGk+R2V0IHRoZSBzZXJ2aWNlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBzZXJ2aWNlIGludGVyZmFjZTwvbGk+Ci08bGk+R2V0IHRoZSBidXNpbmVzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcnZpY2UgaW50ZXJmYWNlPC9saT4KLTxsaT5JbXBvcnQgdGhlIHNlcnZpY2UgaW50ZXJmYWNlIFdTREwgZmlsZSB0byB0aGUgRWNsaXBzZSB3b3JrYmVuY2g8L2xpPgotPGxpPkltcG9ydCB0aGUgc2VydmljZSBpbnRlcmZhY2UgV1NETCBmaWxlIHRvIHRoZSBmaWxlIHN5c3RlbTwvbGk+Ci08bGk+TGF1bmNoIHRoZSBXZWIgU2VydmljZSB3aXphcmRzPC9saT4KLTxsaT5BZGQgdGhlIHNlcnZpY2UgaW50ZXJmYWNlIHRvIEZhdm9yaXRlczwvbGk+Ci08bGk+VW5wdWJsaXNoIHRoZSBzZXJ2aWNlIGludGVyZmFjZTwvbGk+Ci08L3VsPjwvbGk+Ci08L3VsPjwvaW5mbz48L3N1YnN0ZXA+Ci08c3Vic3RlcD48Y21kPiA8Yj5UeXBlIG9mIHNlYXJjaDwvYj4mbmJzcDsgVGhlc2UgcmFkaW8gYnV0dG9ucyBhbGxvdyB5b3UgdG8KLXNwZWNpZnkgYSBzaW1wbGUgb3IgYWR2YW5jZWQgc2VhcmNoLCBvciBhIHNlYXJjaCBieSBhIFVuaXZlcnNhbCBVbmlxdWUgSWRlbnRpZmllcgotKFVVSUQpLiA8L2NtZD48aW5mbz48ZGw+PGRsZW50cnk+Ci08ZHQ+U2ltcGxlPC9kdD4KLTxkZD5UeXBlIHRoZSBuYW1lIG9mIHRoZSBidXNpbmVzc2VzLCBzZXJ2aWNlcywgb3Igc2VydmljZSBpbnRlcmZhY2VzIGZvciB3aGljaAoteW91IGFyZSBzZWFyY2hpbmcuICA8Yj5Ob3RlOjwvYj4gVGhlIHNlYXJjaCBzZXQgc2l6ZSBpcyBzZXQgdG8gMTAwIGFuZCB0aGUKLW1heGltdW0gbnVtYmVyIG9mIHJldHVybmVkIHJlc3VsdHMgaXMgc2V0IHRvIDEwIGJ5IGRlZmF1bHQuJm5ic3A7IElmIHlvdSB3b3VsZAotbGlrZSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdHMsIHVzZSB0aGUgQWR2YW5jZWQgc2VhcmNoLjwvZGQ+Ci08L2RsZW50cnk+PGRsZW50cnk+Ci08ZHQ+QWR2YW5jZWQgPC9kdD4KLTxkZD5BbGxvd3MgeW91IHRvIGVudGVyIG1vcmUgc2VhcmNoIG9wdGlvbnMgdG8gZm9jdXMgdGhlIHNjb3BlIG9mIHlvdXIgc2VhcmNoLgotU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3b3VsZCBsaWtlIHRvIHNlYXJjaCBmb3IgbXVsdGlwbGUgYnVzaW5lc3NlcyBvcgotc2VydmljZXMuPC9kZD4KLTwvZGxlbnRyeT48ZGxlbnRyeT4KLTxkdD5VVUlEIDwvZHQ+Ci08ZGQ+QWxsb3cgeW91IHRvIGVudGVyIHRoZSBVVUlEIGtleS4gVGhlIFVVSUQga2V5IGlzIHRoZSBpZGVudGlmaWVyIHRoYXQgaXMKLWFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGlzaGVkIG9iamVjdC48L2RkPgotPC9kbGVudHJ5PjwvZGw+PC9pbmZvPjwvc3Vic3RlcD4KLTwvc3Vic3RlcHM+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPk9uY2UgeW91IGhhdmUgc2VhcmNoZWQgYW5kIGRpc2NvdmVyZWQgdGhlIGJ1c2luZXNzIHNlcnZpY2UgZGVzY3JpcHRpb24KLXlvdSBkZXNpcmVkLCBzZWxlY3QgdGhlIHNlcnZpY2Ugb3IgdGhlIHNlcnZpY2UgaW50ZXJmYWNlIGFuZCBjbGljayB0aGUgIDxiPkltcG9ydDwvYj4gaWNvbgotdG86IDwvY21kPgotPGNob2ljZXM+Ci08Y2hvaWNlPmltcG9ydCB0aGUgV1NETCBkb2N1bWVudCBpbnRvIHlvdXIgV2ViIHByb2plY3Q8L2Nob2ljZT4KLTxjaG9pY2U+aW1wb3J0IHRoZSBXU0RMIGRvY3VtZW50IGludG8gdGhlIFdTREwgRXhwbG9yZXIgZm9yIHRlc3Rpbmc8L2Nob2ljZT4KLTxjaG9pY2U+bGF1bmNoIHRoZSBXZWIgU2VydmljZSBTa2VsZXRvbiBDcmVhdGlvbiB3aXphcmQgb3IgV2ViIFNlcnZpY2UgQ2xpZW50Ci13aXphcmQgZGlyZWN0bHkgZnJvbSB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLjwvY2hvaWNlPgotPC9jaG9pY2VzPgotPC9zdGVwPgotPC9zdGVwcz4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iZGlzY292ZXJfZnJvbV93c2lsIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPiBEaXNjb3ZlcmluZyBhIFdlYiBTZXJ2aWNlIGZyb20gYSBXU0lMIERvY3VtZW50PC90aXRsZT4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRvIGxvY2F0ZSBXZWIgc2VydmljZSBkZXNjcmlwdGlvbnM6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+RnJvbSB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHRvb2xiYXIsIGNsaWNrIHRoZSAgPGI+V1NJTCBQYWdlPC9iPiBpY29uCi0gPGltYWdlIGFsdD0iUGljdHVyZSBvZiB0aGUgV1NJTCBQYWdlIGljb24uIiBocmVmPSIuLi9pbWFnZXMvd3NpbHZpZXcuZ2lmIj4KLTwvaW1hZ2U+LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIE5hdmlnYXRvciBwYW5lLCBjbGljayAgPGI+V1NJTCBNYWluPC9iPi48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkluIHRoZSAgPGI+VVJMIHRvIGRvY3VtZW50PC9iPiBmaWVsZCBvZiB0aGUgQWN0aW9ucyBwYW5lIGVudGVyCi10aGUgVVJMIHRvIHRoZSBXU0lMIGRvY3VtZW50IG9yIEhUVFAgZG9jdW1lbnQgdGhhdCBjb250YWlucyBsaW5rcyB0byBhIFdTSUwKLWRvY3VtZW50LiBEZXRhaWxzIG9uIGhvdyBhbiBIVFRQIGZpbGUgY2FuIGNvbnRhaW4gbGlua3MgdG8gV1NJTCBjYW4gYmUgZm91bmQKLWhlcmU6IGh0dHA6Ly93d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWw8L2NtZD4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+T25jZSB5b3UgaGF2ZSBsb2NhdGVkIHRoZSBXU0lMIGRvY3VtZW50LCB1c2UgdGhlIGljb25zIGluIHRoZSBBY3Rpb24KLXBhbmUgdG9vbGJhciB0byBkbyB0aGUgZm9sbG93aW5nOjwvY21kPgotPGNob2ljZXM+Ci08Y2hvaWNlPlZpZXcgV1NJTCBkb2N1bWVudCBkZXRhaWxzPC9jaG9pY2U+Ci08Y2hvaWNlPkxpc3QgYWxsIG9mIHRoZSBXU0RMIHNlcnZpY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IFdTSUwgZG9jdW1lbnQ8L2Nob2ljZT4KLTxjaG9pY2U+TGlzdCBhbGwgb2YgdGhlIFVEREkgc2VydmljZXMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgV1NJTCBkb2N1bWVudDwvY2hvaWNlPgotPGNob2ljZT5MaXN0IGFsbCBvZiB0aGUgVURESSBidXNpbmVzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IFdTSUwgZG9jdW1lbnQ8L2Nob2ljZT4KLTxjaG9pY2U+TGlzdCBhbGwgb2YgdGhlIFdTSUwgbGlua3MgYXNzb2NpYXRlZCB3aXRoIHRoYXQgV1NJTCBkb2N1bWVudDwvY2hvaWNlPgotPGNob2ljZT5JbXBvcnQgdGhlIFdTSUwgZG9jdW1lbnQgdG8gdGhlIGZpbGUgc3lzdGVtPC9jaG9pY2U+Ci08Y2hvaWNlPkFkZCB0aGUgV1NJTCBkb2N1bWVudCB0byBGYXZvcml0ZXM8L2Nob2ljZT4KLTwvY2hvaWNlcz4KLTxpbmZvPjxiPkltcG9ydGFudDo8L2I+IElmIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgZG9lcyBub3QgZGlzcGxheSB0aGUKLXByb2plY3QgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBpbXBvcnQgeW91ciBXU0RMIGZpbGUgdG8sIGVuc3VyZSB0aGF0IHlvdSBoYXZlCi1jcmVhdGVkIHRoZSBwcm9qZWN0IGFuZC9vciBjbGljayB0aGUgIDxiPlJlZnJlc2g8L2I+IGljb24uPC9pbmZvPjwvc3RlcD4KLTwvc3RlcHM+Ci08L3Rhc2tib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD4gVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jdWRkaS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InR1ZGRpZXhwLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRzdHJ0ZXhwLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRyZWcuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuZGl0YSIgcHJvZHVjdD0iIgotc2NvcGU9InBlZXIiPjxsaW5rdGV4dD4gRGV2ZWxvcGluZyBXZWIgc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgUmVmZXJlbmNlPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL3JlZi9ydWRkaS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGRpc2Nvdi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGRpc2Nvdi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzFlYmRhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RkaXNjb3YuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJEaXNjb3ZlcmluZyBXZWIgU2VydmljZXMiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iV2ViIHNlcnZpY2VzIGNhbiBiZSBsb2NhdGVkIHRocm91Z2ggYSBwdWJsaWMgYnVzaW5lc3MgcmVnaXN0cnksIGEgcHJpdmF0ZSBidXNpbmVzcyByZWdpc3RyeSwgb3IgYSBXU0lMIGRvY3VtZW50LiBVRERJIG1hbmFnZXMgdGhlIGRpc2NvdmVyeSBvZiBXZWIgc2VydmljZXMgYnkgcmVseWluZyBvbiBhIGRpc3RyaWJ1dGVkIHJlZ2lzdHJ5IG9mIGJ1c2luZXNzZXMgYW5kIHRoZWlyIHNlcnZpY2UgZGVzY3JpcHRpb25zIGltcGxlbWVudGVkIGluIGEgY29tbW9uIFhNTCBmb3JtYXQuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcyBjYW4gYmUgbG9jYXRlZCB0aHJvdWdoIGEgcHVibGljIGJ1c2luZXNzIHJlZ2lzdHJ5LCBhIHByaXZhdGUgYnVzaW5lc3MgcmVnaXN0cnksIG9yIGEgV1NJTCBkb2N1bWVudC4gVURESSBtYW5hZ2VzIHRoZSBkaXNjb3Zlcnkgb2YgV2ViIHNlcnZpY2VzIGJ5IHJlbHlpbmcgb24gYSBkaXN0cmlidXRlZCByZWdpc3RyeSBvZiBidXNpbmVzc2VzIGFuZCB0aGVpciBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBpbXBsZW1lbnRlZCBpbiBhIGNvbW1vbiBYTUwgZm9ybWF0LiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgZGlzY292ZXJpbmcsIFVEREksIGRpc2NvdmVyaW5nIFdlYiBzZXJ2aWNlcywgV1NJTCBmaWxlcyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgZGlzY292ZXJpbmcsIFVEREksIGRpc2NvdmVyaW5nIFdlYiBzZXJ2aWNlcywgV1NJTCBmaWxlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idGRpc2NvdiIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPkRpc2NvdmVyaW5nIGFuZCBpbXBvcnRpbmcgV2ViIHNlcnZpY2VzPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0ZGlzY292Ij48YSBuYW1lPSJ0ZGlzY292Ij48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5EaXNjb3ZlcmluZyBXZWIgU2VydmljZXM8L2gxPgotCi0KLQotCi08ZGl2PjxwPldlYiBzZXJ2aWNlcyBjYW4gYmUgbG9jYXRlZCB0aHJvdWdoIGEgcHVibGljIGJ1c2luZXNzIHJlZ2lzdHJ5LAotYSBwcml2YXRlIGJ1c2luZXNzIHJlZ2lzdHJ5LCBvciBhIFdTSUwgZG9jdW1lbnQuIFVEREkgbWFuYWdlcyB0aGUgZGlzY292ZXJ5Ci1vZiBXZWIgc2VydmljZXMgYnkgcmVseWluZyBvbiBhIGRpc3RyaWJ1dGVkIHJlZ2lzdHJ5IG9mIGJ1c2luZXNzZXMgYW5kIHRoZWlyCi1zZXJ2aWNlIGRlc2NyaXB0aW9ucyBpbXBsZW1lbnRlZCBpbiBhIGNvbW1vbiBYTUwgZm9ybWF0LjwvcD4KLQotPGRpdiBjbGFzcz0icCI+PGRpdiBjbGFzcz0icCI+UHJlcmVxdWlzaXRlczo8b2w+Ci08bGk+PGEgaHJlZj0idHJlZy5odG1sIj5SZWdpc3RlciB3aXRoIGEgcmVnaXN0cnk8L2E+PC9saT4KLQotPGxpPjxhIGhyZWY9InRzdHJ0ZXhwLmh0bWwiPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvbGk+Ci0KLTxsaT48YSBocmVmPSJ0YWRkcmVnLmh0bWwiPkFkZCB0aGUgcmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L2xpPgotCi08L29sPgotPC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+V2ViIFNlcnZpY2VzIEluc3BlY3Rpb24gTGFuZ3VhZ2UgKFdTSUwpIGlzIGEgc2VydmljZSBkaXNjb3ZlcnkKLW1lY2hhbmlzbSB0aGF0IGlzIGFuIGFsdGVybmF0aXZlIHRvIFVEREkgYXMgd2VsbCBhcyBjb21wbGVtZW50YXJ5IHRvIFVEREkuCi1XU0lMIGFsbG93cyB5b3UgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNlcnZpY2UgcHJvdmlkZXIgYW5kIGFzayBmb3IgdGhlIHNlcnZpY2VzCi1pdCBwcm92aWRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFdlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlCi1zcGVjaWZpY2F0aW9uLCByZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3d3dy0xMDYuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWwiIHRhcmdldD0iX2JsYW5rIj53d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWw8L2E+LgotIC48L3A+Ci08cD5Zb3UgY2FuIGRpc2NvdmVyIGEgV2ViIHNlcnZpY2UgaW4gdHdvIHdheXMgdXNpbmcgdGhlIFdlYiBTZXJ2aWNlcwotRXhwbG9yZXI6PC9wPgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjx1bD4KLTxsaT5EaXNjb3ZlcmluZyBhIFdlYiBzZXJ2aWNlIGZyb20gYSBVRERJIHJlZ2lzdHJ5PC9saT4KLQotPGxpPkRpc2NvdmVyaW5nIGEgV2ViIHNlcnZpY2UgZnJvbSBhIFdTSUwgZG9jdW1lbnQ8L2xpPgotCi08L3VsPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiB4bWw6bGFuZz0iZW4tdXMiIGlkPSJkaXNjb3Zlcl9mcm9tX3VkZGkiPjxhIG5hbWU9ImRpc2NvdmVyX2Zyb21fdWRkaSI+PCEtLSAtLT48L2E+Ci08aDIgY2xhc3M9InRvcGljdGl0bGUyIj4gRGlzY292ZXJpbmcgYSBXZWIgU2VydmljZSBmcm9tIGEgVURESSBSZWdpc3RyeTwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UaGUgcmVnaXN0cnkgY29udGFpbnMgVVJMIHJlZmVyZW5jZXMgdG8gV2ViIHNlcnZpY2UgV1NETCBkb2N1bWVudHMuCi1JbiBvcmRlciB0byBkaXNjb3ZlciBhIFdlYiBzZXJ2aWNlIHRoZSBVUkwgdG8gdGhlIFdlYiBzZXJ2aWNlIFdTREwgZG9jdW1lbnQKLW11c3QgYmUgcmVzb2x2YWJsZS4gVG8gbG9jYXRlIFdlYiBzZXJ2aWNlIGRlc2NyaXB0aW9uczo8L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpPjxzcGFuPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayA8c3BhbiBjbGFzcz0idWljb250cm9sIj5VRERJIE1haW48L3NwYW4+Ljwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+SW4gdGhlIEFjdGlvbnMgcGFuZSBzZWxlY3QgYSByZWdpc3RyeSBmcm9tIHRoZSBkcm9wLWRvd24gbGlzdCBhbmQKLWNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkdvPC9zcGFuPi48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkluIHRoZSBBY3Rpb25zIHBhbmUgdG9vbGJhciBjbGljayB0aGUgIDxzdHJvbmc+RmluZDwvc3Ryb25nPiBpY29uICA8aW1nIHNyYz0iLi4vaW1hZ2VzL2ZpbmQuZ2lmIiBhbHQ9IkEgcGljdHVyZSBvZiB0aGUgRmluZCBpY29uLiIgLz4uPC9zcGFuPgotPC9saT4KLQotPGxpPjxzcGFuPkluIHRoZSBBY3Rpb25zIHBhbmUsIGVudGVyIHRoZSBuYW1lIG9mIHRoZSBxdWVyeSwgd2hhdCB5b3UgYXJlCi1zZWFyY2hpbmcgZm9yLCB0aGUgdHlwZSBvZiBzZWFyY2ggdGhhdCB5b3Ugd2FudCB0byBwZXJmb3JtLCBhbmQgYW55IHF1ZXJ5Ci1pbmZvcm1hdGlvbjogPC9zcGFuPgotPG9sIHR5cGU9ImEiPgotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj4gPHN0cm9uZz5TZWFyY2ggZm9yPC9zdHJvbmc+wqAgVGhpcyBsaXN0IGFsbG93cyB5b3UgdG8gc2VhcmNoIGZvcgotYnVzaW5lc3Nlcywgc2VydmljZXMsIG9yIHNlcnZpY2UgaW50ZXJmYWNlcy4gPC9zcGFuPiA8dWw+Ci08bGk+IDxzdHJvbmc+QnVzaW5lc3Nlczwvc3Ryb25nPiBPbmNlIHlvdSBsb2NhdGUgYSBidXNpbmVzcyBpbiB0aGUgcmVnaXN0cnksIHVzZSB0aGUKLWljb25zIGluIHRoZSBBY3Rpb24gcGFuZSB0b29sYmFyIHRvIGRvIHRoZSBmb2xsb3dpbmc6PHVsPgotPGxpPlZpZXcgYW5kIGVkaXQgYnVzaW5lc3MgZGV0YWlsczwvbGk+Ci0KLTxsaT5HZXQgdGhlIHNlcnZpY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGJ1c2luZXNzPC9saT4KLQotPGxpPlB1Ymxpc2ggYSBzZXJ2aWNlPC9saT4KLQotPGxpPk1hbmFnZSByZWZlcmVuY2VkIHNlcnZpY2VzPC9saT4KLQotPGxpPk1hbmFnZSBwdWJsaXNoZXIgYXNzZXJ0aW9uczwvbGk+Ci0KLTxsaT5BZGQgdGhlIGJ1c2luZXNzIHRvIEZhdm9yaXRlczwvbGk+Ci0KLTxsaT5VbnB1Ymxpc2ggdGhlIGJ1c2luZXNzPC9saT4KLQotPC91bD4KLTwvbGk+Ci0KLTxsaT4gPHN0cm9uZz5TZXJ2aWNlczwvc3Ryb25nPiBPbmNlIHlvdSBsb2NhdGUgYSBzZXJ2aWNlIGluIHRoZSByZWdpc3RyeSwgdXNlIHRoZSBpY29ucwotaW4gdGhlIEFjdGlvbiBwYW5lIHRvb2xiYXIgdG8gZG8gdGhlIGZvbGxvd2luZzogPHVsPgotPGxpPlZpZXcgYW5kIGVkaXQgc2VydmljZSBkZXRhaWxzPC9saT4KLQotPGxpPkdldCB0aGUgYnVzaW5lc3MgYXNzb2NpYXRlZCB3aXRoIHRoYXQgc2VydmljZTwvbGk+Ci0KLTxsaT5HZXQgdGhlIHNlcnZpY2UgaW50ZXJmYWNlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBzZXJ2aWNlPC9saT4KLQotPGxpPkltcG9ydCB0aGUgc2VydmljZSBXU0RMIGZpbGUgdG8gdGhlIEVjbGlwc2Ugd29ya2JlbmNoPC9saT4KLQotPGxpPkltcG9ydCB0aGUgc2VydmljZSBXU0RMIGZpbGUgdG8gdGhlIGZpbGUgc3lzdGVtPC9saT4KLQotPGxpPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2Ugd2l6YXJkczwvbGk+Ci0KLTxsaT5BZGQgdGhlIHNlcnZpY2UgdG8gRmF2b3JpdGVzPC9saT4KLQotPGxpPlVucHVibGlzaCB0aGUgc2VydmljZTwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGk+IDxzdHJvbmc+U2VydmljZSBpbnRlcmZhY2VzPC9zdHJvbmc+IE9uY2UgeW91IGxvY2F0ZSBhIHNlcnZpY2UgaW50ZXJmYWNlIGluIHRoZQotcmVnaXN0cnksIHVzZSB0aGUgaWNvbnMgaW4gdGhlIEFjdGlvbiBwYW5lIHRvb2xiYXIgdG8gZG8gdGhlIGZvbGxvd2luZzogPHVsPgotPGxpPlZpZXcgYW5kIGVkaXQgaW50ZXJmYWNlIGRldGFpbHM8L2xpPgotCi08bGk+R2V0IHRoZSBzZXJ2aWNlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBzZXJ2aWNlIGludGVyZmFjZTwvbGk+Ci0KLTxsaT5HZXQgdGhlIGJ1c2luZXNzZXMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgc2VydmljZSBpbnRlcmZhY2U8L2xpPgotCi08bGk+SW1wb3J0IHRoZSBzZXJ2aWNlIGludGVyZmFjZSBXU0RMIGZpbGUgdG8gdGhlIEVjbGlwc2Ugd29ya2JlbmNoPC9saT4KLQotPGxpPkltcG9ydCB0aGUgc2VydmljZSBpbnRlcmZhY2UgV1NETCBmaWxlIHRvIHRoZSBmaWxlIHN5c3RlbTwvbGk+Ci0KLTxsaT5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlIHdpemFyZHM8L2xpPgotCi08bGk+QWRkIHRoZSBzZXJ2aWNlIGludGVyZmFjZSB0byBGYXZvcml0ZXM8L2xpPgotCi08bGk+VW5wdWJsaXNoIHRoZSBzZXJ2aWNlIGludGVyZmFjZTwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08L3VsPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj4gPHN0cm9uZz5UeXBlIG9mIHNlYXJjaDwvc3Ryb25nPsKgIFRoZXNlIHJhZGlvIGJ1dHRvbnMgYWxsb3cgeW91IHRvCi1zcGVjaWZ5IGEgc2ltcGxlIG9yIGFkdmFuY2VkIHNlYXJjaCwgb3IgYSBzZWFyY2ggYnkgYSBVbml2ZXJzYWwgVW5pcXVlIElkZW50aWZpZXIKLShVVUlEKS4gPC9zcGFuPiA8ZGw+Ci08ZHQgY2xhc3M9ImRsdGVybSI+U2ltcGxlPC9kdD4KLQotPGRkPlR5cGUgdGhlIG5hbWUgb2YgdGhlIGJ1c2luZXNzZXMsIHNlcnZpY2VzLCBvciBzZXJ2aWNlIGludGVyZmFjZXMgZm9yIHdoaWNoCi15b3UgYXJlIHNlYXJjaGluZy4gIDxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIHNlYXJjaCBzZXQgc2l6ZSBpcyBzZXQgdG8gMTAwIGFuZCB0aGUKLW1heGltdW0gbnVtYmVyIG9mIHJldHVybmVkIHJlc3VsdHMgaXMgc2V0IHRvIDEwIGJ5IGRlZmF1bHQuwqAgSWYgeW91IHdvdWxkCi1saWtlIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0cywgdXNlIHRoZSBBZHZhbmNlZCBzZWFyY2guPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+QWR2YW5jZWQgPC9kdD4KLQotPGRkPkFsbG93cyB5b3UgdG8gZW50ZXIgbW9yZSBzZWFyY2ggb3B0aW9ucyB0byBmb2N1cyB0aGUgc2NvcGUgb2YgeW91ciBzZWFyY2guCi1TZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdvdWxkIGxpa2UgdG8gc2VhcmNoIGZvciBtdWx0aXBsZSBidXNpbmVzc2VzIG9yCi1zZXJ2aWNlcy48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5VVUlEIDwvZHQ+Ci0KLTxkZD5BbGxvdyB5b3UgdG8gZW50ZXIgdGhlIFVVSUQga2V5LiBUaGUgVVVJRCBrZXkgaXMgdGhlIGlkZW50aWZpZXIgdGhhdCBpcwotYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJsaXNoZWQgb2JqZWN0LjwvZGQ+Ci0KLTwvZGw+Ci08L2xpPgotCi08L29sPgotCi08L2xpPgotCi08bGk+PHNwYW4+T25jZSB5b3UgaGF2ZSBzZWFyY2hlZCBhbmQgZGlzY292ZXJlZCB0aGUgYnVzaW5lc3Mgc2VydmljZSBkZXNjcmlwdGlvbgoteW91IGRlc2lyZWQsIHNlbGVjdCB0aGUgc2VydmljZSBvciB0aGUgc2VydmljZSBpbnRlcmZhY2UgYW5kIGNsaWNrIHRoZSAgPHN0cm9uZz5JbXBvcnQ8L3N0cm9uZz4gaWNvbgotdG86IDwvc3Bhbj4KLTx1bD4KLTxsaT5pbXBvcnQgdGhlIFdTREwgZG9jdW1lbnQgaW50byB5b3VyIFdlYiBwcm9qZWN0PC9saT4KLQotPGxpPmltcG9ydCB0aGUgV1NETCBkb2N1bWVudCBpbnRvIHRoZSBXU0RMIEV4cGxvcmVyIGZvciB0ZXN0aW5nPC9saT4KLQotPGxpPmxhdW5jaCB0aGUgV2ViIFNlcnZpY2UgU2tlbGV0b24gQ3JlYXRpb24gd2l6YXJkIG9yIFdlYiBTZXJ2aWNlIENsaWVudAotd2l6YXJkIGRpcmVjdGx5IGZyb20gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlci48L2xpPgotCi08L3VsPgotCi08L2xpPgotCi08L29sPgotCi08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIHhtbDpsYW5nPSJlbi11cyIgaWQ9ImRpc2NvdmVyX2Zyb21fd3NpbCI+PGEgbmFtZT0iZGlzY292ZXJfZnJvbV93c2lsIj48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPiBEaXNjb3ZlcmluZyBhIFdlYiBTZXJ2aWNlIGZyb20gYSBXU0lMIERvY3VtZW50PC9oMj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRvIGxvY2F0ZSBXZWIgc2VydmljZSBkZXNjcmlwdGlvbnM6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+RnJvbSB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHRvb2xiYXIsIGNsaWNrIHRoZSAgPHN0cm9uZz5XU0lMIFBhZ2U8L3N0cm9uZz4gaWNvbgotIDxpbWcgc3JjPSIuLi9pbWFnZXMvd3NpbHZpZXcuZ2lmIiBhbHQ9IlBpY3R1cmUgb2YgdGhlIFdTSUwgUGFnZSBpY29uLiIgLz4uPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+SW4gdGhlIE5hdmlnYXRvciBwYW5lLCBjbGljayAgPHN0cm9uZz5XU0lMIE1haW48L3N0cm9uZz4uPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+SW4gdGhlICA8c3Ryb25nPlVSTCB0byBkb2N1bWVudDwvc3Ryb25nPiBmaWVsZCBvZiB0aGUgQWN0aW9ucyBwYW5lIGVudGVyCi10aGUgVVJMIHRvIHRoZSBXU0lMIGRvY3VtZW50IG9yIEhUVFAgZG9jdW1lbnQgdGhhdCBjb250YWlucyBsaW5rcyB0byBhIFdTSUwKLWRvY3VtZW50LiBEZXRhaWxzIG9uIGhvdyBhbiBIVFRQIGZpbGUgY2FuIGNvbnRhaW4gbGlua3MgdG8gV1NJTCBjYW4gYmUgZm91bmQKLWhlcmU6IGh0dHA6Ly93d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWw8L3NwYW4+Ci08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPk9uY2UgeW91IGhhdmUgbG9jYXRlZCB0aGUgV1NJTCBkb2N1bWVudCwgdXNlIHRoZSBpY29ucyBpbiB0aGUgQWN0aW9uCi1wYW5lIHRvb2xiYXIgdG8gZG8gdGhlIGZvbGxvd2luZzo8L3NwYW4+Ci08dWw+Ci08bGk+VmlldyBXU0lMIGRvY3VtZW50IGRldGFpbHM8L2xpPgotCi08bGk+TGlzdCBhbGwgb2YgdGhlIFdTREwgc2VydmljZXMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgV1NJTCBkb2N1bWVudDwvbGk+Ci0KLTxsaT5MaXN0IGFsbCBvZiB0aGUgVURESSBzZXJ2aWNlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBXU0lMIGRvY3VtZW50PC9saT4KLQotPGxpPkxpc3QgYWxsIG9mIHRoZSBVRERJIGJ1c2luZXNzZXMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgV1NJTCBkb2N1bWVudDwvbGk+Ci0KLTxsaT5MaXN0IGFsbCBvZiB0aGUgV1NJTCBsaW5rcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBXU0lMIGRvY3VtZW50PC9saT4KLQotPGxpPkltcG9ydCB0aGUgV1NJTCBkb2N1bWVudCB0byB0aGUgZmlsZSBzeXN0ZW08L2xpPgotCi08bGk+QWRkIHRoZSBXU0lMIGRvY3VtZW50IHRvIEZhdm9yaXRlczwvbGk+Ci0KLTwvdWw+Ci0KLSA8c3Ryb25nPkltcG9ydGFudDo8L3N0cm9uZz4gSWYgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBkb2VzIG5vdCBkaXNwbGF5IHRoZQotcHJvamVjdCB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGltcG9ydCB5b3VyIFdTREwgZmlsZSB0bywgZW5zdXJlIHRoYXQgeW91IGhhdmUKLWNyZWF0ZWQgdGhlIHByb2plY3QgYW5kL29yIGNsaWNrIHRoZSAgPHN0cm9uZz5SZWZyZXNoPC9zdHJvbmc+IGljb24uPC9saT4KLQotPC9vbD4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgdGl0bGU9IlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InR1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0c3RydGV4cC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBhbGxvd3MgeW91IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIHNldmVyYWwgd2F5cy4iPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0cmVnLmh0bWwiIHRpdGxlPSJJbiBvcmRlciB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5IGFuZCBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnksIHlvdSBtdXN0IGZpcnN0IHJlZ2lzdGVyIHdpdGggdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLiI+UmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnk8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci90YXNrcy90b3ZlcndzLmh0bWwiPiBEZXZlbG9waW5nIFdlYiBzZXJ2aWNlczwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBSZWZlcmVuY2U8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9yZWYvcnVkZGkuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbmQgbG9nZ2VkIGluIHRvIHRoZSBVRERJIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UgaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwgYmluZGluZyBpbmZvcm1hdGlvbiwgYW5kIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljYXRpb25zIGZvciBzZXJ2aWNlcy4gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLiI+RGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLQotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGdlbndzaWwuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RnZW53c2lsLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkNGFkZWEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGdlbndzaWwuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0Z2Vud3NpbCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5HZW5lcmF0aW5nIGEgV1NJTCBmaWxlPC90aXRsZT4KLTx0aXRsZWFsdHM+Ci08c2VhcmNodGl0bGU+R2VuZXJhdGluZyBhIFdTSUwgZmlsZTwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+V2ViIFNlcnZpY2VzIEluc3BlY3Rpb24gTGFuZ3VhZ2UgKFdTSUwpIGlzIGEgc2VydmljZSBkaXNjb3ZlcnkKLW1lY2hhbmlzbSB0aGF0IGlzIGFuIGFsdGVybmF0aXZlIHRvIFVEREkgYXMgd2VsbCBhcyBjb21wbGVtZW50YXJ5IHRvIFVEREkuCi1XU0lMIGNhbiBiZSBnZW5lcmF0ZWQgYXQgYW55IHBvaW50IGluIHRoZSBXZWIgc2VydmljZSBkZXZlbG9wbWVudCBjeWNsZSBvbmNlCi10aGUgV1NETCBmaWxlIGZvciB0aGUgV2ViIHNlcnZpY2UgaGFzIGJlZW4gY3JlYXRlZC48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5nZW5lcmF0aW5nIFdTSUwgZmlsZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V1NJTCBmaWxlczxpbmRleHRlcm0+Z2VuZXJhdGluZzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPHByZXJlcT48Yj5QcmVyZXF1aXNpdGVzOjwvYj4gSW4gb3JkZXIgdG8gZ2VuZXJhdGUgYSBXU0lMIGZpbGUsIHlvdSBuZWVkIHRvCi1rbm93IHRoZSBVUkwgdG8gYSBXU0RMIGZpbGUuPC9wcmVyZXE+Ci08Y29udGV4dD48cD5XU0lMIGhlbHBzIHN5bmNocm9uaXplIHRoaXMgcHJvY2VzcyBieSBtYWludGFpbmluZyByZWZlcmVuY2VzCi10byBXU0RMIFVSTHMuIFdlYiBzZXJ2aWNlcyB0b29scyB0aGF0IHByb2Nlc3MgV1NETCBkb2N1bWVudHMgLSBzdWNoIGFzIHRoZQotV2ViIFNlcnZpY2UgQ2xpZW50IGFuZCBDcmVhdGlvbiB3aXphcmRzIC0gd2lsbCBhY2NlcHQgYSBXU0lMIGRvY3VtZW50IGFzIGEKLXN1YnN0aXR1dGUgZm9yIFdTREwuIFRoaXMgYWxsb3dzIHlvdSB0byBjcmVhdGUgYSBzdGFuZGFyZGl6ZWQgV1NETCByZWZlcmVuY2UKLShXU0lMKSBkb2N1bWVudCBpbiB5b3VyIHByb2plY3QgZHVyaW5nIFdlYiBzZXJ2aWNlIGNsaWVudCBnZW5lcmF0aW9uLCB0aGVuCi1hdCBhIGxhdGVyIHRpbWUgZWFzaWx5IHJlZ2VuZXJhdGUgdGhlIGNsaWVudCBmcm9tIHRoYXQgcmVmZXJlbmNlIGRvY3VtZW50LgotTm8gY29waWVzIG9mIHRoZSBXU0RMIG9yIFdTREwgVVJMcyBhcmUgcmVxdWlyZWQuPC9wPjxwPllvdSBjYW4gZ2VuZXJhdGUgYQotV1NJTCBmaWxlIGZyb20gYSBwcmUtZXhpc3RpbmcgV1NETCBmaWxlIG9yIGR1cmluZyBXZWIgc2VydmljZSBjcmVhdGlvbiBvcgotY29uc3VtcHRpb24uPC9wPjwvY29udGV4dD4KLTwvdGFza2JvZHk+Ci08dGFzayBpZD0iZDBlMjciIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+R2VuZXJhdGluZyBhIFdTSUwgZmlsZSB0aG91Z2ggdGhlIGltcG9ydCB1dGlsaXR5PC90aXRsZT4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRvIGdlbmVyYXRlIGEgV1NJTCBmaWxlIHRocm91Z2ggdGhlIGltcG9ydCB1dGlsaXR5OjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPk9wdGlvbmFsOiBTZWxlY3QgdGhlIFdTREwgZG9jdW1lbnQgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGNyZWF0ZQotYSBXU0lMIGZpbGUuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5Gcm9tIHRoZSAgPGI+RmlsZTwvYj4gbWVudSwgc2VsZWN0ICA8Yj5JbXBvcnQ8L2I+ID4gIDxiPldTSUwgPgotTmV4dDwvYj4uIFRoZSBXU0lMIEltcG9ydCB3aW5kb3cgb3BlbnMuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byBwZXJmb3JtIHN0ZXAgMSwgdGhlIFdTSUwgVVJJIGZpZWxkIHNob3VsZAotYmUgcHJlZmlsbGVkIHdpdGggdGhlIG5hbWUgb2YgeW91ciBXU0RMIGZpbGUsIHdoZXJlIHRoZSBleHRlbnNpb24gaGFzIGJlZW4KLWNoYW5nZWQgZnJvbSAgPHN5c3RlbW91dHB1dD4ud3NkbDwvc3lzdGVtb3V0cHV0PiB0byAgPHN5c3RlbW91dHB1dD4ud3NpbDwvc3lzdGVtb3V0cHV0Pi4KLVRoZSBXU0RMIHNlY3Rpb24gc2hvdWxkIGNvbnRhaW4gdGhlIFVSTHMgdG8gdGhlIHNlbGVjdGVkIFdTREwgZmlsZXMuIFlvdSBjYW4KLWFsc28gZW50ZXIgYWRkaXRpb25hbCBXU0RMIFVSTHMuIEFsdGVybmF0ZWx5LCB5b3UgY2FuIGJyb3dzZSB0byB0aGUgbG9jYXRpb24KLW9mIGEgV1NJTCBmaWxlLCBvciBtYW51YWxseSBlbnRlciB0aGUgbG9jYXRpb24gb2YgdGhlIFdTSUwgYW5kIFdTREwgZmlsZXMKLWluIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbnMuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5DbGljayBGaW5pc2guIEEgV1NJTCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkIGluIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uPC9jbWQ+Ci08L3N0ZXA+Ci08L3N0ZXBzPgotPC90YXNrYm9keT4KLTwvdGFzaz4KLTx0YXNrIGlkPSJkMGU2MiIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5HZW5lcmF0aW5nIGEgV1NJTCBmaWxlIHRocm91Z2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UbyBnZW5lcmF0ZSBhIFdTSUwgZmlsZSB0aHJvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+T3BlbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+T3BlbiB0aGUgV1NETCBFeHBsb3JlciBieSBjbGlja2luZyB0aGlzIGljb246ICA8aW1hZ2UgYWx0PSJpY29uIHVzZWQgdG8gbGF1bmNoIHRoZSB3ZWIgc2VydmljZXMgZXhwbG9yZXIiCi1ocmVmPSIuLi9pbWFnZXMvd3NkbGljb24uZ2lmIj48L2ltYWdlPjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+T3BlbiBhIFdTREwgZmlsZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPlNlbGVjdCB0aGUgV1NETCBmaWxlIHRoYXQgeW91IGhhdmUgb3BlbmVkIGluIHRoZSBOYXZpZ2F0b3IgcGFuZSwKLWFuZCBmcm9tIHRoZSBhdmFpbGFibGUgYWN0aW9ucywgY2hvb3NlIHRvIGltcG9ydCBhIFdTREwgZmlsZSB0byB0aGUgd29ya2JlbmNoCi1ieSBjbGlja2luZyB0aGlzIGljb246ICA8aW1hZ2UgYWx0PSJpY29uIHVzZWQgdG8gaW1wb3J0IGEgZmlsZSIgaHJlZj0iLi4vaW1hZ2VzL21wdHdzZGxpY29uLmdpZiI+Ci08L2ltYWdlPjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+U2VsZWN0ICA8Yj5JbXBvcnQgYXMgYSBzZXJ2aWNlIHJlZmVyZW5jZSB0byBhIFdTSUwgZG9jdW1lbnQ8L2I+LjwvY21kPgotPC9zdGVwPgotPHN0ZXA+PGNtZD5FbnRlciBhIG5hbWUgZm9yIHRoZSBXU0lMIGZpbGUgdGhhdCB5b3Ugd2FudCB0byBnZW5lcmF0ZSwgYW5kIGNsaWNrCi0gPGI+R288L2I+LjwvY21kPjwvc3RlcD4KLTwvc3RlcHM+Ci08L3Rhc2tib2R5PgotPC90YXNrPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGdlbndzaWwuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RnZW53c2lsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMTE0YTQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGdlbndzaWwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwNiIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJHZW5lcmF0aW5nIGEgV1NJTCBmaWxlIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IldlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKSBpcyBhIHNlcnZpY2UgZGlzY292ZXJ5IG1lY2hhbmlzbSB0aGF0IGlzIGFuIGFsdGVybmF0aXZlIHRvIFVEREkgYXMgd2VsbCBhcyBjb21wbGVtZW50YXJ5IHRvIFVEREkuIFdTSUwgY2FuIGJlIGdlbmVyYXRlZCBhdCBhbnkgcG9pbnQgaW4gdGhlIFdlYiBzZXJ2aWNlIGRldmVsb3BtZW50IGN5Y2xlIG9uY2UgdGhlIFdTREwgZmlsZSBmb3IgdGhlIFdlYiBzZXJ2aWNlIGhhcyBiZWVuIGNyZWF0ZWQuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IldlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKSBpcyBhIHNlcnZpY2UgZGlzY292ZXJ5IG1lY2hhbmlzbSB0aGF0IGlzIGFuIGFsdGVybmF0aXZlIHRvIFVEREkgYXMgd2VsbCBhcyBjb21wbGVtZW50YXJ5IHRvIFVEREkuIFdTSUwgY2FuIGJlIGdlbmVyYXRlZCBhdCBhbnkgcG9pbnQgaW4gdGhlIFdlYiBzZXJ2aWNlIGRldmVsb3BtZW50IGN5Y2xlIG9uY2UgdGhlIFdTREwgZmlsZSBmb3IgdGhlIFdlYiBzZXJ2aWNlIGhhcyBiZWVuIGNyZWF0ZWQuIiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBnZW5lcmF0aW5nIFdTSUwsIFdTSUwsIGdlbmVyYXRpbmciIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgc2VydmljZXMsIGdlbmVyYXRpbmcgV1NJTCwgV1NJTCwgZ2VuZXJhdGluZyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idGdlbndzaWwiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5HZW5lcmF0aW5nIGEgV1NJTCBmaWxlPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0Z2Vud3NpbCI+PGEgbmFtZT0idGdlbndzaWwiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkdlbmVyYXRpbmcgYSBXU0lMIGZpbGU8L2gxPgotCi0KLQotCi08ZGl2PjxwPldlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKSBpcyBhIHNlcnZpY2UgZGlzY292ZXJ5Ci1tZWNoYW5pc20gdGhhdCBpcyBhbiBhbHRlcm5hdGl2ZSB0byBVRERJIGFzIHdlbGwgYXMgY29tcGxlbWVudGFyeSB0byBVRERJLgotV1NJTCBjYW4gYmUgZ2VuZXJhdGVkIGF0IGFueSBwb2ludCBpbiB0aGUgV2ViIHNlcnZpY2UgZGV2ZWxvcG1lbnQgY3ljbGUgb25jZQotdGhlIFdTREwgZmlsZSBmb3IgdGhlIFdlYiBzZXJ2aWNlIGhhcyBiZWVuIGNyZWF0ZWQuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj48c3Ryb25nPlByZXJlcXVpc2l0ZXM6PC9zdHJvbmc+IEluIG9yZGVyIHRvIGdlbmVyYXRlIGEgV1NJTCBmaWxlLCB5b3UgbmVlZCB0bwota25vdyB0aGUgVVJMIHRvIGEgV1NETCBmaWxlLjwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5XU0lMIGhlbHBzIHN5bmNocm9uaXplIHRoaXMgcHJvY2VzcyBieSBtYWludGFpbmluZyByZWZlcmVuY2VzCi10byBXU0RMIFVSTHMuIFdlYiBzZXJ2aWNlcyB0b29scyB0aGF0IHByb2Nlc3MgV1NETCBkb2N1bWVudHMgLSBzdWNoIGFzIHRoZQotV2ViIFNlcnZpY2UgQ2xpZW50IGFuZCBDcmVhdGlvbiB3aXphcmRzIC0gd2lsbCBhY2NlcHQgYSBXU0lMIGRvY3VtZW50IGFzIGEKLXN1YnN0aXR1dGUgZm9yIFdTREwuIFRoaXMgYWxsb3dzIHlvdSB0byBjcmVhdGUgYSBzdGFuZGFyZGl6ZWQgV1NETCByZWZlcmVuY2UKLShXU0lMKSBkb2N1bWVudCBpbiB5b3VyIHByb2plY3QgZHVyaW5nIFdlYiBzZXJ2aWNlIGNsaWVudCBnZW5lcmF0aW9uLCB0aGVuCi1hdCBhIGxhdGVyIHRpbWUgZWFzaWx5IHJlZ2VuZXJhdGUgdGhlIGNsaWVudCBmcm9tIHRoYXQgcmVmZXJlbmNlIGRvY3VtZW50LgotTm8gY29waWVzIG9mIHRoZSBXU0RMIG9yIFdTREwgVVJMcyBhcmUgcmVxdWlyZWQuPC9wPgotPHA+WW91IGNhbiBnZW5lcmF0ZSBhCi1XU0lMIGZpbGUgZnJvbSBhIHByZS1leGlzdGluZyBXU0RMIGZpbGUgb3IgZHVyaW5nIFdlYiBzZXJ2aWNlIGNyZWF0aW9uIG9yCi1jb25zdW1wdGlvbi48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIHhtbDpsYW5nPSJlbi11cyIgaWQ9ImQwZTI3Ij48YSBuYW1lPSJkMGUyNyI+PCEtLSAtLT48L2E+Ci08aDIgY2xhc3M9InRvcGljdGl0bGUyIj5HZW5lcmF0aW5nIGEgV1NJTCBmaWxlIHRob3VnaCB0aGUgaW1wb3J0IHV0aWxpdHk8L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VG8gZ2VuZXJhdGUgYSBXU0lMIGZpbGUgdGhyb3VnaCB0aGUgaW1wb3J0IHV0aWxpdHk6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaT48c3Bhbj5PcHRpb25hbDogU2VsZWN0IHRoZSBXU0RMIGRvY3VtZW50IGZvciB3aGljaCB5b3Ugd2FudCB0byBjcmVhdGUKLWEgV1NJTCBmaWxlLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+RnJvbSB0aGUgIDxzdHJvbmc+RmlsZTwvc3Ryb25nPiBtZW51LCBzZWxlY3QgIDxzdHJvbmc+SW1wb3J0PC9zdHJvbmc+ICZndDsgIDxzdHJvbmc+V1NJTCAmZ3Q7Ci1OZXh0PC9zdHJvbmc+LiBUaGUgV1NJTCBJbXBvcnQgd2luZG93IG9wZW5zLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+SWYgeW91IGhhdmUgc2VsZWN0ZWQgdG8gcGVyZm9ybSBzdGVwIDEsIHRoZSBXU0lMIFVSSSBmaWVsZCBzaG91bGQKLWJlIHByZWZpbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHlvdXIgV1NETCBmaWxlLCB3aGVyZSB0aGUgZXh0ZW5zaW9uIGhhcyBiZWVuCi1jaGFuZ2VkIGZyb20gIDx0dCBjbGFzcz0ic3lzb3V0Ij4ud3NkbDwvdHQ+IHRvICA8dHQgY2xhc3M9InN5c291dCI+LndzaWw8L3R0Pi4KLVRoZSBXU0RMIHNlY3Rpb24gc2hvdWxkIGNvbnRhaW4gdGhlIFVSTHMgdG8gdGhlIHNlbGVjdGVkIFdTREwgZmlsZXMuIFlvdSBjYW4KLWFsc28gZW50ZXIgYWRkaXRpb25hbCBXU0RMIFVSTHMuIEFsdGVybmF0ZWx5LCB5b3UgY2FuIGJyb3dzZSB0byB0aGUgbG9jYXRpb24KLW9mIGEgV1NJTCBmaWxlLCBvciBtYW51YWxseSBlbnRlciB0aGUgbG9jYXRpb24gb2YgdGhlIFdTSUwgYW5kIFdTREwgZmlsZXMKLWluIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbnMuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayBGaW5pc2guIEEgV1NJTCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkIGluIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uPC9zcGFuPgotPC9saT4KLQotPC9vbD4KLQotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiB4bWw6bGFuZz0iZW4tdXMiIGlkPSJkMGU2MiI+PGEgbmFtZT0iZDBlNjIiPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+R2VuZXJhdGluZyBhIFdTSUwgZmlsZSB0aHJvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VG8gZ2VuZXJhdGUgYSBXU0lMIGZpbGUgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+T3BlbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+T3BlbiB0aGUgV1NETCBFeHBsb3JlciBieSBjbGlja2luZyB0aGlzIGljb246ICA8aW1nIHNyYz0iLi4vaW1hZ2VzL3dzZGxpY29uLmdpZiIgYWx0PSJpY29uIHVzZWQgdG8gbGF1bmNoIHRoZSB3ZWIgc2VydmljZXMgZXhwbG9yZXIiIC8+PC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5PcGVuIGEgV1NETCBmaWxlLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+U2VsZWN0IHRoZSBXU0RMIGZpbGUgdGhhdCB5b3UgaGF2ZSBvcGVuZWQgaW4gdGhlIE5hdmlnYXRvciBwYW5lLAotYW5kIGZyb20gdGhlIGF2YWlsYWJsZSBhY3Rpb25zLCBjaG9vc2UgdG8gaW1wb3J0IGEgV1NETCBmaWxlIHRvIHRoZSB3b3JrYmVuY2gKLWJ5IGNsaWNraW5nIHRoaXMgaWNvbjogIDxpbWcgc3JjPSIuLi9pbWFnZXMvbXB0d3NkbGljb24uZ2lmIiBhbHQ9Imljb24gdXNlZCB0byBpbXBvcnQgYSBmaWxlIiAvPjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+U2VsZWN0ICA8c3Ryb25nPkltcG9ydCBhcyBhIHNlcnZpY2UgcmVmZXJlbmNlIHRvIGEgV1NJTCBkb2N1bWVudDwvc3Ryb25nPi48L3NwYW4+Ci08L2xpPgotCi08bGk+PHNwYW4+RW50ZXIgYSBuYW1lIGZvciB0aGUgV1NJTCBmaWxlIHRoYXQgeW91IHdhbnQgdG8gZ2VuZXJhdGUsIGFuZCBjbGljawotIDxzdHJvbmc+R288L3N0cm9uZz4uPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTwvZGl2PgotCi08L2Rpdj4KLQotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGxvZ2V4cC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGxvZ2V4cC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDBmMGU3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3Rsb2dleHAuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDUsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0bG9nZXhwIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPkxvZ2dpbmcgaW4gdG8gYSBVRERJIHJlZ2lzdHJ5PC90aXRsZT4KLTxzaG9ydGRlc2M+SWYgeW91IGhhdmUgcHVibGlzaGVkIHlvdXIgV2ViIHNlcnZpY2UgdG8gYSBVRERJIHJlZ2lzdHJ5IHlvdSBjYW4KLWxvZyBpbnRvIHRoZSByZWdpc3RyeSBhbmQgbWFuYWdlIHRoZSBzZXJ2aWNlIHRocm91Z2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlci48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+VURESTxpbmRleHRlcm0+bG9nZ2luZyBpbnRvIGEgcmVnaXN0cnk8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V2ViIFNlcnZpY2VzIEV4cGxvcmVyPGluZGV4dGVybT5sb2dnaW5nIGludG8gYSBVRERJIHJlZ2lzdHJ5PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxwcmVyZXE+UHJlcmVxdWlzaXRlczo8b2w+Ci08bGk+PHhyZWYgaHJlZj0idHJlZy5kaXRhIj5SZWdpc3RlciB3aXRoIGEgcmVnaXN0cnk8L3hyZWY+PC9saT4KLTxsaT48eHJlZiBocmVmPSJ0c3RydGV4cC5kaXRhIj5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwveHJlZj48L2xpPgotPC9vbD48L3ByZXJlcT4KLTxjb250ZXh0PjxwPlRvIExvZyBpbiB0byB0aGUgcmVnaXN0cnk6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+T25jZSB5b3UgaGF2ZSBzZWxlY3RlZCBhIHJlZ2lzdHJ5LCB5b3UgY2FuIHNjcm9sbCB0byB0aGUgPHVpY29udHJvbD5PdGhlcgotQWN0aW9uczwvdWljb250cm9sPiBzZWN0aW9uIG9mIHRoZSBwYWdlIGFuZCBzZWxlY3QgPHVpY29udHJvbD5Mb2dpbjwvdWljb250cm9sPiwKLW9yIHVzZSB0aGUgbG9naW4gYnV0dG9uIGF0IHRoZSB0b3Agb2YgdGhlIEV4cGxvcmVyOiA8aW1hZ2UgaHJlZj0iLi4vaW1hZ2VzL2xvZ2luaWNvbi5naWYiPgotPGFsdD5zY3JlZW4gY2FwdHVyZSBvZiB0aGUgbG9naW4gaWNvbjwvYWx0PjwvaW1hZ2U+LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+RW50ZXIgdGhlIFVSTCAoaWYgaXQgaGFzIG5vdCBiZWVuIHByZWZpbGxlZCBmb3IgeW91KSwgdGhlIHVzZXIKLUlELCBhbmQgdGhlIHBhc3N3b3JkIGZvciB0aGUgcmVnaXN0cnkgYW5kIGNsaWNrIDx1aWNvbnRyb2w+R288L3VpY29udHJvbD4uPC9jbWQ+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPlRoZSBTdW1tYXJ5IG9mIEJ1c2luZXNzIHBhZ2UgZGlzcGxheXMuIEl0IGxpc3RzIGFsbCB0aGUgYnVzaW5lc3NlcwotYXNzb2NpYXRlZCB3aXRoIHRoZSByZWdpc3RyeS48L2NtZD48L3N0ZXA+Ci08L3N0ZXBzPgotPHJlc3VsdD48cD5XaGVuIHlvdSBoYXZlIHN1Y2Nlc3NmdWxseSBsb2dnZWQgaW4sIHRoZSBTdGF0dXMgcGFuZSBkaXNwbGF5cwotYSBtZXNzYWdlIGluZGljYXRpbmcgeW91IHdlcmUgc3VjY2Vzc2Z1bC48L3A+PC9yZXN1bHQ+Ci08cG9zdHJlcT5UbyBsb2cgb3V0IG9mIHRoZSByZWdpc3RyeSBjbGljayB0aGUgTG9nb3V0IGJ1dHRvbjogPGltYWdlIGhyZWY9Ii4uL2ltYWdlcy9sb2dvdXRpY29uLmdpZiI+Ci08YWx0PnNjcmVlbiBjYXB0dXJlIG9mIHRoZSBsb2dvdXQgaWNvbjwvYWx0PjwvaW1hZ2U+LjwvcG9zdHJlcT4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0idHVkZGlleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHN0cnRleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHJlZy5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+IERldmVsb3BpbmcgV2ViIHNlcnZpY2VzPC9saW5rdGV4dD48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9yZWYvcnVkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3Rsb2dleHAuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3Rsb2dleHAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZlZjk0Yy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90bG9nZXhwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJMb2dnaW5nIGluIHRvIGEgVURESSByZWdpc3RyeSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJJZiB5b3UgaGF2ZSBwdWJsaXNoZWQgeW91ciBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnkgeW91IGNhbiBsb2cgaW50byB0aGUgcmVnaXN0cnkgYW5kIG1hbmFnZSB0aGUgc2VydmljZSB0aHJvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IklmIHlvdSBoYXZlIHB1Ymxpc2hlZCB5b3VyIFdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeSB5b3UgY2FuIGxvZyBpbnRvIHRoZSByZWdpc3RyeSBhbmQgbWFuYWdlIHRoZSBzZXJ2aWNlIHRocm91Z2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlci4iIC8+Ci08bWV0YSBjb250ZW50PSJVRERJLCBsb2dnaW5nIGludG8gYSByZWdpc3RyeSwgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCBsb2dnaW5nIGludG8gYSBVRERJIHJlZ2lzdHJ5IiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iVURESSwgbG9nZ2luZyBpbnRvIGEgcmVnaXN0cnksIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciwgbG9nZ2luZyBpbnRvIGEgVURESSByZWdpc3RyeSIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InR1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRzdHJ0ZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRyZWcuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vcmVmL3J1ZGRpLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idGxvZ2V4cCIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPkxvZ2dpbmcgaW4gdG8gYSBVRERJIHJlZ2lzdHJ5PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0bG9nZXhwIj48YSBuYW1lPSJ0bG9nZXhwIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5Mb2dnaW5nIGluIHRvIGEgVURESSByZWdpc3RyeTwvaDE+Ci0KLQotCi08ZGl2PjxwPklmIHlvdSBoYXZlIHB1Ymxpc2hlZCB5b3VyIFdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeSB5b3UgY2FuCi1sb2cgaW50byB0aGUgcmVnaXN0cnkgYW5kIG1hbmFnZSB0aGUgc2VydmljZSB0aHJvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj5QcmVyZXF1aXNpdGVzOjxvbD4KLTxsaT48YSBocmVmPSJ0cmVnLmh0bWwiPlJlZ2lzdGVyIHdpdGggYSByZWdpc3RyeTwvYT48L2xpPgotCi08bGk+PGEgaHJlZj0idHN0cnRleHAuaHRtbCI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+PC9saT4KLQotPC9vbD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBMb2cgaW4gdG8gdGhlIHJlZ2lzdHJ5OjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+T25jZSB5b3UgaGF2ZSBzZWxlY3RlZCBhIHJlZ2lzdHJ5LCB5b3UgY2FuIHNjcm9sbCB0byB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+T3RoZXIKLUFjdGlvbnM8L3NwYW4+IHNlY3Rpb24gb2YgdGhlIHBhZ2UgYW5kIHNlbGVjdCA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Mb2dpbjwvc3Bhbj4sCi1vciB1c2UgdGhlIGxvZ2luIGJ1dHRvbiBhdCB0aGUgdG9wIG9mIHRoZSBFeHBsb3JlcjogPGltZyBzcmM9Ii4uL2ltYWdlcy9sb2dpbmljb24uZ2lmIiBhbHQ9InNjcmVlbiBjYXB0dXJlIG9mIHRoZSBsb2dpbiBpY29uIiAvPi48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkVudGVyIHRoZSBVUkwgKGlmIGl0IGhhcyBub3QgYmVlbiBwcmVmaWxsZWQgZm9yIHlvdSksIHRoZSB1c2VyCi1JRCwgYW5kIHRoZSBwYXNzd29yZCBmb3IgdGhlIHJlZ2lzdHJ5IGFuZCBjbGljayA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Hbzwvc3Bhbj4uPC9zcGFuPgotPC9saT4KLQotPGxpPjxzcGFuPlRoZSBTdW1tYXJ5IG9mIEJ1c2luZXNzIHBhZ2UgZGlzcGxheXMuIEl0IGxpc3RzIGFsbCB0aGUgYnVzaW5lc3NlcwotYXNzb2NpYXRlZCB3aXRoIHRoZSByZWdpc3RyeS48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+V2hlbiB5b3UgaGF2ZSBzdWNjZXNzZnVsbHkgbG9nZ2VkIGluLCB0aGUgU3RhdHVzIHBhbmUgZGlzcGxheXMKLWEgbWVzc2FnZSBpbmRpY2F0aW5nIHlvdSB3ZXJlIHN1Y2Nlc3NmdWwuPC9wPgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPlRvIGxvZyBvdXQgb2YgdGhlIHJlZ2lzdHJ5IGNsaWNrIHRoZSBMb2dvdXQgYnV0dG9uOiA8aW1nIHNyYz0iLi4vaW1hZ2VzL2xvZ291dGljb24uZ2lmIiBhbHQ9InNjcmVlbiBjYXB0dXJlIG9mIHRoZSBsb2dvdXQgaWNvbiIgLz4uPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuaHRtbCI+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCI+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi9jb25jZXB0cy9jdWRkaS5odG1sIiB0aXRsZT0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgd2F5IHRvIHB1Ymxpc2ggYW5kIGRpc2NvdmVyIGluZm9ybWF0aW9uIGFib3V0IFdlYiBzZXJ2aWNlcy4iPlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0idHVkZGlleHAuaHRtbCIgdGl0bGU9IlRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIj5QdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXM8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRzdHJ0ZXhwLmh0bWwiIHRpdGxlPSJUaGUgV2ViIHNlcnZpY2VzIHRvb2xzIGFsbG93cyB5b3UgdG8gbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgaW4gc2V2ZXJhbCB3YXlzLiI+TGF1bmNoaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRyZWcuaHRtbCIgdGl0bGU9IkluIG9yZGVyIHRvIHB1Ymxpc2ggeW91ciBidXNpbmVzcyBlbnRpdHkgYW5kIFdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeSwgeW91IG11c3QgZmlyc3QgcmVnaXN0ZXIgd2l0aCB0aGUgcmVnaXN0cnkgdGhhdCB5b3Ugd2FudCB0byB1c2UuIj5SZWdpc3RlcmluZyB3aXRoIGEgVURESSByZWdpc3RyeTwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuaHRtbCI+IERldmVsb3BpbmcgV2ViIHNlcnZpY2VzPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFJlZmVyZW5jZTwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3JlZi9ydWRkaS5odG1sIiB0aXRsZT0iT25jZSB5b3UgaGF2ZSByZWdpc3RlcmVkIGFuZCBsb2dnZWQgaW4gdG8gdGhlIFVEREkgcmVnaXN0cnkgdGhhdCB5b3Ugd2FudCB0byB1c2UsIHlvdSBjYW4gcmVnaXN0ZXIgeW91ciBXZWIgc2VydmljZS4gUmVnaXN0cmF0aW9uIG9mIGEgc2VydmljZSBpbnZvbHZlcyBmb3VyIGNvcmUgZGF0YSBzdHJ1Y3R1cmUgdHlwZXM6IGJ1c2luZXNzIGluZm9ybWF0aW9uLCBzZXJ2aWNlIGluZm9ybWF0aW9uLCBiaW5kaW5nIGluZm9ybWF0aW9uLCBhbmQgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIHNlcnZpY2VzLiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZGF0YSB0eXBlcyBpcyBkZXNjcmliZWQgaW4gRmlndXJlIDEuIj5EYXRhIHN0cnVjdHVyZSB0eXBlcyAoVURESSByZWdpc3RyeSk8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RwdWJlbnQuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RwdWJlbnQuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAzNDUzOC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90cHViZW50LmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgdGFzayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBUYXNrLy9FTiIKLSAidGFzay5kdGQiPgotPHRhc2sgaWQ9InRwdWJlbnQiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+UHVibGlzaGluZyBhIGJ1c2luZXNzIGVudGl0eTwvdGl0bGU+Ci08c2hvcnRkZXNjPkEgYnVzaW5lc3MgZW50aXR5IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidXNpbmVzcyB0aGF0Ci1oYXMgcHVibGlzaGVkIGEgc2VydmljZS4mbmJzcDsgQmVmb3JlIHlvdSBjYW4gcHVibGlzaCBhIGJ1c2luZXNzIHNlcnZpY2UsCi15b3UgbXVzdCBwdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5Ljwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybSBrZXlyZWY9InRwdWJlbnR8MXxVRERJcHVibGlzaGluZ2FidXNpbmVzc2VudGl0eSIgc3RhdHVzPSJ1bmNoYW5nZWQiPlVEREk8aW5kZXh0ZXJtPnB1Ymxpc2hpbmcKLWEgYnVzaW5lc3MgZW50aXR5PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PGluZGV4dGVybSBrZXlyZWY9InRwdWJlbnR8MnxXZWJzZXJ2aWNlc3B1Ymxpc2hpbmdhYnVzaW5lc3NlbnRpdHkiCi1zdGF0dXM9InVuY2hhbmdlZCI+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5wdWJsaXNoaW5nPGluZGV4dGVybT5idXNpbmVzcyBlbnRpdGllczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybSBrZXlyZWY9InRwdWJlbnR8M3xidXNpbmVzc2VudGl0aWVzcHVibGlzaGluZ3RvVURESSIgc3RhdHVzPSJ1bmNoYW5nZWQiPmJ1c2luZXNzCi1lbnRpdGllczxpbmRleHRlcm0+cHVibGlzaGluZyB0byBVRERJPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08dGFza2JvZHk+Ci08cHJlcmVxPlByZXJlcXVpc2l0ZXM6PG9sPgotPGxpPjx4cmVmIGhyZWY9InRyZWcuZGl0YSI+UmVnaXN0ZXIgd2l0aCBhIHJlZ2lzdHJ5PC94cmVmPjwvbGk+Ci08bGk+PHhyZWYgaHJlZj0idHN0cnRleHAuZGl0YSI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L3hyZWY+PC9saT4KLTxsaT48eHJlZiBocmVmPSJ0YWRkcmVnLmRpdGEiPkFkZCB0aGUgcmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwveHJlZj48L2xpPgotPC9vbD48L3ByZXJlcT4KLTxjb250ZXh0PjxwPllvdSBjYW4gcHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eSB1c2luZyB0d28gZGlmZmVyZW50IHB1YmxpY2F0aW9uCi1mb3JtYXRzOiBzaW1wbGUgYW5kIGFkdmFuY2VkLjwvcD48bHE+IDxwPiA8dWljb250cm9sPlNpbXBsZTwvdWljb250cm9sPiBBbGxvd3MKLXlvdSB0byBlbnRlciB0aGUgbWluaW1hbCBhbW91bnQgb2YgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gcHVibGlzaCB5b3VyIGJ1c2luZXNzCi1lbnRpdHkuJm5ic3A7IEEgc2ltcGxlIHB1Ymxpc2ggb25seSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgb25seSBvbmUgbmFtZSBhbmQKLW9uZSBidXNpbmVzcyBkZXNjcmlwdGlvbi48L3A+PHA+IDx1aWNvbnRyb2w+QWR2YW5jZWQgPC91aWNvbnRyb2w+IEFsbG93cyB5b3UKLXRvIGVudGVyIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBidXNpbmVzcyBlbnRpdHkuIEFuIGFkdmFuY2VkIHB1Ymxpc2gKLWFsbG93cyB5b3UgdG8gc3BlY2lmeSBtdWx0aXBsZSBuYW1lcyBhbmQgZGVzY3JpcHRpb25zIGZvciBtdWx0aS1saW5ndWFsIHN1cHBvcnQuPC9wPiA8L2xxPjwvY29udGV4dD4KLTwvdGFza2JvZHk+Ci08dGFzayBpZD0iZDBlNzQiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+UHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eSB1c2luZyB0aGUgc2ltcGxlIG9wdGlvbjwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UbyBwdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5IHVzaW5nIHRoZSBzaW1wbGUgb3B0aW9uOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIsIHNlbGVjdCBVRERJIE1haW4gYW5kIHNlbGVjdCB0aGUgcmVnaXN0cnkKLXRvIHdoaWNoIHlvdSB3YW50IHRvIHB1Ymxpc2ggdGhlIGJ1c2luZXNzIGVudGl0eS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkluIHRoZSZuYnNwO05hdmlnYXRvciBwYW5lLCBzZWxlY3QgdGhlIGJ1c2luZXNzIGVudGl0eSBmb3Igd2hpY2gKLXlvdSB3YW50IHRvIHB1Ymxpc2ggdGhlIGJ1c2luZXNzIHNlcnZpY2UuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgQWN0aW9ucyBwYW5lIHRvb2xiYXIsIGNsaWNrIHRoZSAgPGI+UHVibGlzaDwvYj4gaWNvbiAgPGltYWdlCi1hbHQ9IlBpY3R1cmUgb2YgdGhlIFB1Ymxpc2ggIGljb24uIiBocmVmPSIuLi9pbWFnZXMvcHVibGlzaDIuZ2lmIj48L2ltYWdlPi48L2NtZD4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+U2VsZWN0IHRoZSAgPGI+U2ltcGxlPC9iPiByYWRpbyBidXR0b24uPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5FbnRlciB0aGUgcHVibGlzaCBVUkwsIHlvdXIgdXNlciBJRCwgcGFzc3dvcmQsIFdTREwgVVJMLCBidXNpbmVzcwotbmFtZSwgYW5kIGJ1c2luZXNzIGRlc2NyaXB0aW9uIGluIHRoZSByZXNwZWN0aXZlIGZpZWxkcy48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrICA8Yj5HbzwvYj4gdG8gcHVibGlzaCB5b3VyIGJ1c2luZXNzIGVudGl0eS48L2NtZD48L3N0ZXA+Ci08L3N0ZXBzPgotPHJlc3VsdD48cD5UaGUgPHRtIHRtY2xhc3M9ImlibSIgdG1vd25lcj0iSUJNIENvcnBvcmF0aW9uIiB0bXR5cGU9InJlZyIgdHJhZGVtYXJrPSJJQk0iPklCTTwvdG0+IFdlYgotU2VydmljZXMgRXhwbG9yZXIgaXMgYXV0b21hdGljYWxseSB1cGRhdGVkIHdpdGggeW91ciBwdWJsaXNoZWQgV2ViIHNlcnZpY2UuCi1UaGUgcmVnaXN0cnkgY29udGFpbnMgcG9pbnRlcnMgdG8gdGhlIFVSTCBvZiB0aGUgV1NETCBzZXJ2aWNlIGRvY3VtZW50IG9mCi10aGUgV2ViIHNlcnZpY2UuIEJ1c2luZXNzZXMgY2FuIG5vdyBkaXNjb3ZlciBhbmQgaW50ZWdyYXRlIHdpdGggeW91ciBXZWIgc2VydmljZS48L3A+PC9yZXN1bHQ+Ci08L3Rhc2tib2R5PgotPC90YXNrPgotPHRhc2sgaWQ9ImQwZTExMyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5QdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5IHVzaW5nIHRoZSBhZHZhbmNlZCBvcHRpb248L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VG8gcHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eSB1c2luZyB0aGUgYWR2YW5jZWQgb3B0aW9uOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIHRoZSZuYnNwOyBXZWIgU2VydmljZXMgRXhwbG9yZXIgTmF2aWdhdG9yIHBhbmUsIHNlbGVjdCB0aGUgYnVzaW5lc3MKLWVudGl0eSBmb3Igd2hpY2ggeW91IHdhbnQgdG8gcHVibGlzaCB0aGUgYnVzaW5lc3Mgc2VydmljZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkluIHRoZSBBY3Rpb25zIHBhbmUgdG9vbGJhciwgY2xpY2sgdGhlICA8Yj5QdWJsaXNoIFNlcnZpY2U8L2I+IGljb24KLSA8aW1hZ2UgYWx0PSJQaWN0dXJlIG9mIHRoZSBQdWJsaXNoIFNlcnZpY2UgaWNvbi4iIGhyZWY9Ii4uL2ltYWdlcy9wdWJzZXJ2LmdpZiI+Ci08L2ltYWdlPi48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPlNlbGVjdCB0aGUgIDxiPkFkdmFuY2VkPC9iPiByYWRpbyBidXR0b24uPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5FbnRlciB0aGUgcHVibGlzaCBVUkwsIHlvdXIgdXNlciBJRCwgcGFzc3dvcmQsIGFuZCBXU0RMIFVSTCBpbgotdGhlIHJlc3BlY3RpdmUgZmllbGRzLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+Q2xpY2sgIDxiPkFkZDwvYj4gdG8gY3JlYXRlIGJ1c2luZXNzIG5hbWVzLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+Q2xpY2sgIDxiPkFkZDwvYj4gdG8gY3JlYXRlIGJ1c2luZXNzIGRlc2NyaXB0aW9ucy48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrIDx1aWNvbnRyb2w+QWRkPC91aWNvbnRyb2w+IHRvIGNyZWF0ZSBhbiBpZGVudGlmaWVyLiBGb3IgZXhhbXBsZSwKLWFuIGlkZW50aWZpZXIgZm9yIHlvdXIgYnVzaW5lc3MgZW50aXR5IG1heSBiZSB5b3VyIGJ1c2luZXNzIHBob25lIG51bWJlci4KLVRoZSBrZXkgbmFtZSB3b3VsZCBiZSAiUGhvbmUgTnVtYmVyIiBhbmQgdGhlIGtleSB2YWx1ZSB3b3VsZCBiZSB5b3VyIGJ1c2luZXNzCi10ZWxlcGhvbmUgbnVtYmVyLiA8L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrICA8Yj5BZGQ8L2I+IHRvIGNyZWF0ZSBjYXRlZ29yaWVzLiBFbnRlciB5b3VyIGJ1c2luZXNzIGNhdGVnb3JpZXMuCi1TZWxlY3QgYSBjYXRlZ29yeSB0eXBlIGZyb20gdGhlIGRyb3AgZG93biBsaXN0LiBDbGljayAgPGI+QnJvd3NlPC9iPiB0byBvcGVuCi10aGUgQ2F0ZWdvcmllcyBwYW5lLiBOYXZpZ2F0ZSB0aHJvdWdoIHRoZSBoaWVyYXJjaGljYWwgdGF4b25vbXkgYW5kIHNlbGVjdAotdGhlIGFwcHJvcHJpYXRlIGNsYXNzaWZpY2F0aW9uIGZvciB5b3VyIGJ1c2luZXNzIHNlcnZpY2UsIHRoZW4gZXhpdCB0aGUgQ2F0ZWdvcmllcwotcGFuZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrICA8Yj5HbzwvYj4gdG8gcHVibGlzaCB5b3VyIGJ1c2luZXNzIGVudGl0eS48L2NtZD48L3N0ZXA+Ci08L3N0ZXBzPgotPHJlc3VsdD48cD5UaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGlzIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCB3aXRoIHlvdXIgcHVibGlzaGVkCi1XZWIgc2VydmljZS4gVGhlIHJlZ2lzdHJ5IGNvbnRhaW5zIHBvaW50ZXJzIHRvIHRoZSBVUkwgb2YgdGhlIFdTREwgc2VydmljZQotZG9jdW1lbnQgb2YgdGhlIFdlYiBzZXJ2aWNlLiBCdXNpbmVzc2VzIGNhbiBub3cgZGlzY292ZXIgYW5kIGludGVncmF0ZSB3aXRoCi15b3VyIFdlYiBzZXJ2aWNlLjwvcD48L3Jlc3VsdD4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0idHVkZGlleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHN0cnRleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHJlZy5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9yZWYvcnVkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RwdWJlbnQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RwdWJlbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRiMjI1ZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90cHViZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iUHVibGlzaGluZyBhIGJ1c2luZXNzIGVudGl0eSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJBIGJ1c2luZXNzIGVudGl0eSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVzaW5lc3MgdGhhdCBoYXMgcHVibGlzaGVkIGEgc2VydmljZS7CoCBCZWZvcmUgeW91IGNhbiBwdWJsaXNoIGEgYnVzaW5lc3Mgc2VydmljZSwgeW91IG11c3QgcHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eS4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQSBidXNpbmVzcyBlbnRpdHkgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1c2luZXNzIHRoYXQgaGFzIHB1Ymxpc2hlZCBhIHNlcnZpY2UuwqAgQmVmb3JlIHlvdSBjYW4gcHVibGlzaCBhIGJ1c2luZXNzIHNlcnZpY2UsIHlvdSBtdXN0IHB1Ymxpc2ggYSBidXNpbmVzcyBlbnRpdHkuIiAvPgotPG1ldGEgY29udGVudD0iVURESSwgcHVibGlzaGluZyBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2VzLCBwdWJsaXNoaW5nLCBidXNpbmVzcyBlbnRpdGllcywgYnVzaW5lc3MgZW50aXRpZXMsIHB1Ymxpc2hpbmcgdG8gVURESSIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlVEREksIHB1Ymxpc2hpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlcywgcHVibGlzaGluZywgYnVzaW5lc3MgZW50aXRpZXMsIGJ1c2luZXNzIGVudGl0aWVzLCBwdWJsaXNoaW5nIHRvIFVEREkiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InRwdWJlbnQiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5QdWJsaXNoaW5nIGEgYnVzaW5lc3MgZW50aXR5PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0cHViZW50Ij48YSBuYW1lPSJ0cHViZW50Ij48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5QdWJsaXNoaW5nIGEgYnVzaW5lc3MgZW50aXR5PC9oMT4KLQotCi0KLTxkaXY+PHA+QSBidXNpbmVzcyBlbnRpdHkgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1c2luZXNzIHRoYXQKLWhhcyBwdWJsaXNoZWQgYSBzZXJ2aWNlLsKgIEJlZm9yZSB5b3UgY2FuIHB1Ymxpc2ggYSBidXNpbmVzcyBzZXJ2aWNlLAoteW91IG11c3QgcHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eS48L3A+Ci0KLTxkaXYgY2xhc3M9InAiPlByZXJlcXVpc2l0ZXM6PG9sPgotPGxpPjxhIGhyZWY9InRyZWcuaHRtbCI+UmVnaXN0ZXIgd2l0aCBhIHJlZ2lzdHJ5PC9hPjwvbGk+Ci0KLTxsaT48YSBocmVmPSJ0c3RydGV4cC5odG1sIj5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L2xpPgotCi08bGk+PGEgaHJlZj0idGFkZHJlZy5odG1sIj5BZGQgdGhlIHJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+PC9saT4KLQotPC9vbD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5Zb3UgY2FuIHB1Ymxpc2ggYSBidXNpbmVzcyBlbnRpdHkgdXNpbmcgdHdvIGRpZmZlcmVudCBwdWJsaWNhdGlvbgotZm9ybWF0czogc2ltcGxlIGFuZCBhZHZhbmNlZC48L3A+Ci08YmxvY2txdW90ZT4gPHA+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlNpbXBsZTwvc3Bhbj4gQWxsb3dzCi15b3UgdG8gZW50ZXIgdGhlIG1pbmltYWwgYW1vdW50IG9mIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIHB1Ymxpc2ggeW91ciBidXNpbmVzcwotZW50aXR5LsKgIEEgc2ltcGxlIHB1Ymxpc2ggb25seSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgb25seSBvbmUgbmFtZSBhbmQKLW9uZSBidXNpbmVzcyBkZXNjcmlwdGlvbi48L3A+Ci08cD4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWR2YW5jZWQgPC9zcGFuPiBBbGxvd3MgeW91Ci10byBlbnRlciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgYnVzaW5lc3MgZW50aXR5LiBBbiBhZHZhbmNlZCBwdWJsaXNoCi1hbGxvd3MgeW91IHRvIHNwZWNpZnkgbXVsdGlwbGUgbmFtZXMgYW5kIGRlc2NyaXB0aW9ucyBmb3IgbXVsdGktbGluZ3VhbCBzdXBwb3J0LjwvcD4KLSA8L2Jsb2NrcXVvdGU+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIHhtbDpsYW5nPSJlbi11cyIgaWQ9ImQwZTc0Ij48YSBuYW1lPSJkMGU3NCI+PCEtLSAtLT48L2E+Ci08aDIgY2xhc3M9InRvcGljdGl0bGUyIj5QdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5IHVzaW5nIHRoZSBzaW1wbGUgb3B0aW9uPC9oMj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRvIHB1Ymxpc2ggYSBidXNpbmVzcyBlbnRpdHkgdXNpbmcgdGhlIHNpbXBsZSBvcHRpb246PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaT48c3Bhbj5JbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCBzZWxlY3QgVURESSBNYWluIGFuZCBzZWxlY3QgdGhlIHJlZ2lzdHJ5Ci10byB3aGljaCB5b3Ugd2FudCB0byBwdWJsaXNoIHRoZSBidXNpbmVzcyBlbnRpdHkuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5JbiB0aGXCoE5hdmlnYXRvciBwYW5lLCBzZWxlY3QgdGhlIGJ1c2luZXNzIGVudGl0eSBmb3Igd2hpY2gKLXlvdSB3YW50IHRvIHB1Ymxpc2ggdGhlIGJ1c2luZXNzIHNlcnZpY2UuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5JbiB0aGUgQWN0aW9ucyBwYW5lIHRvb2xiYXIsIGNsaWNrIHRoZSAgPHN0cm9uZz5QdWJsaXNoPC9zdHJvbmc+IGljb24gIDxpbWcgc3JjPSIuLi9pbWFnZXMvcHVibGlzaDIuZ2lmIiBhbHQ9IlBpY3R1cmUgb2YgdGhlIFB1Ymxpc2ggIGljb24uIiAvPi48L3NwYW4+Ci08L2xpPgotCi08bGk+PHNwYW4+U2VsZWN0IHRoZSAgPHN0cm9uZz5TaW1wbGU8L3N0cm9uZz4gcmFkaW8gYnV0dG9uLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+RW50ZXIgdGhlIHB1Ymxpc2ggVVJMLCB5b3VyIHVzZXIgSUQsIHBhc3N3b3JkLCBXU0RMIFVSTCwgYnVzaW5lc3MKLW5hbWUsIGFuZCBidXNpbmVzcyBkZXNjcmlwdGlvbiBpbiB0aGUgcmVzcGVjdGl2ZSBmaWVsZHMuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5Hbzwvc3Ryb25nPiB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5Ljwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UaGUgSUJNPHN1cD7Crjwvc3VwPiBXZWIKLVNlcnZpY2VzIEV4cGxvcmVyIGlzIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCB3aXRoIHlvdXIgcHVibGlzaGVkIFdlYiBzZXJ2aWNlLgotVGhlIHJlZ2lzdHJ5IGNvbnRhaW5zIHBvaW50ZXJzIHRvIHRoZSBVUkwgb2YgdGhlIFdTREwgc2VydmljZSBkb2N1bWVudCBvZgotdGhlIFdlYiBzZXJ2aWNlLiBCdXNpbmVzc2VzIGNhbiBub3cgZGlzY292ZXIgYW5kIGludGVncmF0ZSB3aXRoIHlvdXIgV2ViIHNlcnZpY2UuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiB4bWw6bGFuZz0iZW4tdXMiIGlkPSJkMGUxMTMiPjxhIG5hbWU9ImQwZTExMyI+PCEtLSAtLT48L2E+Ci08aDIgY2xhc3M9InRvcGljdGl0bGUyIj5QdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5IHVzaW5nIHRoZSBhZHZhbmNlZCBvcHRpb248L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VG8gcHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eSB1c2luZyB0aGUgYWR2YW5jZWQgb3B0aW9uOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+SW4gdGhlwqAgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIE5hdmlnYXRvciBwYW5lLCBzZWxlY3QgdGhlIGJ1c2luZXNzCi1lbnRpdHkgZm9yIHdoaWNoIHlvdSB3YW50IHRvIHB1Ymxpc2ggdGhlIGJ1c2luZXNzIHNlcnZpY2UuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5JbiB0aGUgQWN0aW9ucyBwYW5lIHRvb2xiYXIsIGNsaWNrIHRoZSAgPHN0cm9uZz5QdWJsaXNoIFNlcnZpY2U8L3N0cm9uZz4gaWNvbgotIDxpbWcgc3JjPSIuLi9pbWFnZXMvcHVic2Vydi5naWYiIGFsdD0iUGljdHVyZSBvZiB0aGUgUHVibGlzaCBTZXJ2aWNlIGljb24uIiAvPi48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPlNlbGVjdCB0aGUgIDxzdHJvbmc+QWR2YW5jZWQ8L3N0cm9uZz4gcmFkaW8gYnV0dG9uLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+RW50ZXIgdGhlIHB1Ymxpc2ggVVJMLCB5b3VyIHVzZXIgSUQsIHBhc3N3b3JkLCBhbmQgV1NETCBVUkwgaW4KLXRoZSByZXNwZWN0aXZlIGZpZWxkcy48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkNsaWNrICA8c3Ryb25nPkFkZDwvc3Ryb25nPiB0byBjcmVhdGUgYnVzaW5lc3MgbmFtZXMuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5BZGQ8L3N0cm9uZz4gdG8gY3JlYXRlIGJ1c2luZXNzIGRlc2NyaXB0aW9ucy48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFkZDwvc3Bhbj4gdG8gY3JlYXRlIGFuIGlkZW50aWZpZXIuIEZvciBleGFtcGxlLAotYW4gaWRlbnRpZmllciBmb3IgeW91ciBidXNpbmVzcyBlbnRpdHkgbWF5IGJlIHlvdXIgYnVzaW5lc3MgcGhvbmUgbnVtYmVyLgotVGhlIGtleSBuYW1lIHdvdWxkIGJlICJQaG9uZSBOdW1iZXIiIGFuZCB0aGUga2V5IHZhbHVlIHdvdWxkIGJlIHlvdXIgYnVzaW5lc3MKLXRlbGVwaG9uZSBudW1iZXIuIDwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+Q2xpY2sgIDxzdHJvbmc+QWRkPC9zdHJvbmc+IHRvIGNyZWF0ZSBjYXRlZ29yaWVzLiBFbnRlciB5b3VyIGJ1c2luZXNzIGNhdGVnb3JpZXMuCi1TZWxlY3QgYSBjYXRlZ29yeSB0eXBlIGZyb20gdGhlIGRyb3AgZG93biBsaXN0LiBDbGljayAgPHN0cm9uZz5Ccm93c2U8L3N0cm9uZz4gdG8gb3BlbgotdGhlIENhdGVnb3JpZXMgcGFuZS4gTmF2aWdhdGUgdGhyb3VnaCB0aGUgaGllcmFyY2hpY2FsIHRheG9ub215IGFuZCBzZWxlY3QKLXRoZSBhcHByb3ByaWF0ZSBjbGFzc2lmaWNhdGlvbiBmb3IgeW91ciBidXNpbmVzcyBzZXJ2aWNlLCB0aGVuIGV4aXQgdGhlIENhdGVnb3JpZXMKLXBhbmUuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5Hbzwvc3Ryb25nPiB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5Ljwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGlzIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCB3aXRoIHlvdXIgcHVibGlzaGVkCi1XZWIgc2VydmljZS4gVGhlIHJlZ2lzdHJ5IGNvbnRhaW5zIHBvaW50ZXJzIHRvIHRoZSBVUkwgb2YgdGhlIFdTREwgc2VydmljZQotZG9jdW1lbnQgb2YgdGhlIFdlYiBzZXJ2aWNlLiBCdXNpbmVzc2VzIGNhbiBub3cgZGlzY292ZXIgYW5kIGludGVncmF0ZSB3aXRoCi15b3VyIFdlYiBzZXJ2aWNlLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90YXNrcy90dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgdGl0bGU9IlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InR1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0c3RydGV4cC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBhbGxvd3MgeW91IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIHNldmVyYWwgd2F5cy4iPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0cmVnLmh0bWwiIHRpdGxlPSJJbiBvcmRlciB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5IGFuZCBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnksIHlvdSBtdXN0IGZpcnN0IHJlZ2lzdGVyIHdpdGggdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLiI+UmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnk8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgUmVmZXJlbmNlPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vcmVmL3J1ZGRpLmh0bWwiIHRpdGxlPSJPbmNlIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYW5kIGxvZ2dlZCBpbiB0byB0aGUgVURESSByZWdpc3RyeSB0aGF0IHlvdSB3YW50IHRvIHVzZSwgeW91IGNhbiByZWdpc3RlciB5b3VyIFdlYiBzZXJ2aWNlLiBSZWdpc3RyYXRpb24gb2YgYSBzZXJ2aWNlIGludm9sdmVzIGZvdXIgY29yZSBkYXRhIHN0cnVjdHVyZSB0eXBlczogYnVzaW5lc3MgaW5mb3JtYXRpb24sIHNlcnZpY2UgaW5mb3JtYXRpb24sIGJpbmRpbmcgaW5mb3JtYXRpb24sIGFuZCBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3Igc2VydmljZXMuIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBkYXRhIHR5cGVzIGlzIGRlc2NyaWJlZCBpbiBGaWd1cmUgMS4iPkRhdGEgc3RydWN0dXJlIHR5cGVzIChVRERJIHJlZ2lzdHJ5KTwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci0KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RwdWJsaXNoLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90cHVibGlzaC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWFhOGQ5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RwdWJsaXNoLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgdGFzayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBUYXNrLy9FTiIKLSAidGFzay5kdGQiPgotPHRhc2sgaWQ9InRwdWJsaXNoIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPlB1Ymxpc2hpbmcgYSBXZWIgc2VydmljZTwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPlB1Ymxpc2hpbmcgYSBXZWIgc2VydmljZTwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+VGhlIFdlYiBzZXJ2aWNlLCBhbHNvIGtub3duIGFzIHRoZSBidXNpbmVzcyBzZXJ2aWNlLCBkZXNjcmliZXMKLWEgV2ViIHNlcnZpY2UncyBlbmRwb2ludCBhbmQgd2hlcmUgaXRzIFdTREwgZmlsZSByZXNpZGVzLiBUaGUgV1NETCBmaWxlIGxpc3RzCi10aGUgb3BlcmF0aW9ucyB0aGF0IHNlcnZpY2UgcHJvdmlkZXMuPC9zaG9ydGRlc2M+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtIGtleXJlZj0idHB1Ymxpc2h8MXxVRERJcHVibGlzaGluZ2FXZWJzZXJ2aWNlIiBzdGF0dXM9InVuY2hhbmdlZCI+VURESTxpbmRleHRlcm0+cHVibGlzaGluZwotYSBXZWIgc2VydmljZTwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0ga2V5cmVmPSJ0cHVibGlzaHwyfFdlYnNlcnZpY2VzcHVibGlzaGluZ3RvYVVERElyZWdpc3RyeSIKLXN0YXR1cz0idW5jaGFuZ2VkIj5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPnB1Ymxpc2hpbmc8aW5kZXh0ZXJtPlVEREkgcmVnaXN0cnk8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPHByZXJlcT5QcmVyZXF1aXNpdGVzOjxvbD4KLTxsaT4gPHhyZWYgaHJlZj0idHJlZy5kaXRhIj5SZWdpc3RlciB3aXRoIGEgcmVnaXN0cnk8L3hyZWY+LjwvbGk+Ci08bGk+IDx4cmVmIGhyZWY9InRzdHJ0ZXhwLmRpdGEiPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC94cmVmPi48L2xpPgotPGxpPiA8eHJlZiBocmVmPSJ0YWRkcmVnLmRpdGEiPkFkZCB0aGUgcmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwveHJlZj4uPC9saT4KLTxsaT5DcmVhdGUgYSBXZWIgc2VydmljZS48L2xpPgotPGxpPkRlcGxveSB0aGUgV2ViIHNlcnZpY2UuPC9saT4KLTxsaT4gPHhyZWYgaHJlZj0idHB1YmVudC5kaXRhIj5QdWJsaXNoIGEgQnVzaW5lc3MgRW50aXR5PC94cmVmPi48L2xpPgotPC9vbD48L3ByZXJlcT4KLTxyZXN1bHQ+PHA+WW91IGNhbiBwdWJsaXNoIGEgYnVzaW5lc3Mgc2VydmljZSB1c2luZyB0d28gZGlmZmVyZW50IHB1YmxpY2F0aW9uCi1mb3JtYXRzOiBzaW1wbGUgYW5kIGFkdmFuY2VkLjwvcD48L3Jlc3VsdD4KLTwvdGFza2JvZHk+Ci08dGFzayBpZD0iZDBlNzQiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+UHVibGlzaCBhIGJ1c2luZXNzIHNlcnZpY2UgdXNpbmcgdGhlIHNpbXBsZSBvcHRpb248L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VG8gcHVibGlzaCBhIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBzaW1wbGUgb3B0aW9uOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgTmF2aWdhdG9yIHBhbmUsIHNlbGVjdCB0aGUgYnVzaW5lc3MKLWVudGl0eSBmb3Igd2hpY2ggeW91IHdhbnQgdG8gcHVibGlzaCB0aGUgYnVzaW5lc3Mgc2VydmljZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkluIHRoZSBBY3Rpb25zIHBhbmUgdG9vbGJhciwgY2xpY2sgdGhlICA8Yj5QdWJsaXNoIFNlcnZpY2U8L2I+IGljb24KLSA8aW1hZ2UgYWx0PSJQaWN0dXJlIG9mIHRoZSBQdWJsaXNoIFNlcnZpY2UgaWNvbi4iIGhyZWY9Ii4uL2ltYWdlcy9wdWJzZXJ2LmdpZiI+Ci08L2ltYWdlPi48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPlNlbGVjdCB0aGUgIDxiPlNpbXBsZTwvYj4gcmFkaW8gYnV0dG9uLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+RW50ZXIgdGhlIHB1Ymxpc2ggVVJMLCB5b3VyIHVzZXIgSUQsIHBhc3N3b3JkLCBXU0RMIFVSTCwgYnVzaW5lc3MKLW5hbWUsIGFuZCBidXNpbmVzcyBkZXNjcmlwdGlvbiBpbiB0aGUgcmVzcGVjdGl2ZSBmaWVsZHMuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5DbGljayAgPGI+R288L2I+IHRvIHB1Ymxpc2ggeW91ciBidXNpbmVzcyBlbnRpdHkuPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+PHA+IDxiPkltcG9ydGFudDo8L2I+IEVuc3VyZSB0aGF0IHlvdSBzZWxlY3QgdGhlIHNlcnZpY2UgZG9jdW1lbnQsCi1zaW5jZSB0aGUgc2VydmljZSBlbGVtZW50IGlzIHRoZSBiYXNpcyBmb3IgdGhlIEJ1c2luZXNzIFNlcnZpY2UgdGhhdCB5b3Ugd2lsbAotcHVibGlzaC4gWW91IGNhbm5vdCBwdWJsaXNoIGEgQnVzaW5lc3MgU2VydmljZSB1c2luZyBhIFdTREwgZG9jdW1lbnQgdGhhdAotZG9lcyBub3QgaGF2ZSBzZXJ2aWNlIGVsZW1lbnRzLjwvcD48cD5UaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGlzIGF1dG9tYXRpY2FsbHkKLXVwZGF0ZWQgd2l0aCB5b3VyIHB1Ymxpc2hlZCBXZWIgc2VydmljZS4gVGhlIHJlZ2lzdHJ5IGNvbnRhaW5zIHBvaW50ZXJzIHRvCi10aGUgVVJMIG9mIHRoZSBXU0RMIHNlcnZpY2UgZG9jdW1lbnQgb2YgdGhlIFdlYiBzZXJ2aWNlLiBCdXNpbmVzc2VzIGNhbiBub3cKLWRpc2NvdmVyIGFuZCBpbnRlZ3JhdGUgd2l0aCB5b3VyIFdlYiBzZXJ2aWNlLjwvcD48L3Jlc3VsdD4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iZDBlMTEzIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPlB1Ymxpc2ggYSBidXNpbmVzcyBzZXJ2aWNlIHVzaW5nIHRoZSBhZHZhbmNlZCBvcHRpb248L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VG8gcHVibGlzaCBhIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBhZHZhbmNlZCBvcHRpb246PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+SW4gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBOYXZpZ2F0b3IgcGFuZSwgc2VsZWN0IHRoZSBidXNpbmVzcwotZW50aXR5IGZvciB3aGljaCB5b3Ugd2FudCB0byBwdWJsaXNoIHRoZSBidXNpbmVzcyBzZXJ2aWNlLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIEFjdGlvbnMgcGFuZSB0b29sYmFyLCBjbGljayB0aGUgIDxiPlB1Ymxpc2ggU2VydmljZTwvYj4gaWNvbgotIDxpbWFnZSBhbHQ9IlBpY3R1cmUgb2YgdGhlIFB1Ymxpc2ggU2VydmljZSBpY29uLiIgaHJlZj0iLi4vaW1hZ2VzL3B1YnNlcnYuZ2lmIj4KLTwvaW1hZ2U+LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+U2VsZWN0IHRoZSAgPGI+QWR2YW5jZWQ8L2I+IHJhZGlvIGJ1dHRvbi48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkVudGVyIHRoZSBwdWJsaXNoIFVSTCwgeW91ciB1c2VyIElELCBwYXNzd29yZCwgYW5kIFdTREwgVVJMIGluCi10aGUgcmVzcGVjdGl2ZSBmaWVsZHMuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5DbGljayAgPGI+R2V0PC9iPiBvciA8dWljb250cm9sPkZpbmQ8L3VpY29udHJvbD4gdG8gYXNzb2NpYXRlIHRoZQotc2VydmljZSB3aXRoIGEgYnVzaW5lc3MgZW50aXR5LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+Q2xpY2sgIDxiPkdldDwvYj4gb3IgPHVpY29udHJvbD5GaW5kPC91aWNvbnRyb2w+IHRvIGFzc29jaWF0ZSBhCi1zcGVjaWZpYyBzZXJ2aWNlIGludGVyZmFjZSB3aXRoIHRoZSBzZXJ2aWNlLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+Q2xpY2sgIDxiPkFkZDwvYj4gdG8gY3JlYXRlIGJ1c2luZXNzIHNlcnZpY2UgbmFtZXMuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5DbGljayAgPGI+QWRkPC9iPiB0byBjcmVhdGUgYnVzaW5lc3Mgc2VydmljZSBkZXNjcmlwdGlvbnMuPC9jbWQ+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrICA8Yj5BZGQ8L2I+IHRvIGNyZWF0ZSBjYXRlZ29yaWVzLiBFbnRlciB5b3VyIGJ1c2luZXNzIHNlcnZpY2UKLWNhdGVnb3JpZXMuIFNlbGVjdCBhIGNhdGVnb3J5IHR5cGUgZnJvbSB0aGUgZHJvcCBkb3duIGxpc3QuIENsaWNrICA8Yj5Ccm93c2U8L2I+IHRvCi1vcGVuIHRoZSBDYXRlZ29yaWVzIHBhbmUuJm5ic3A7IE5hdmlnYXRlIHRocm91Z2ggdGhlIGhpZXJhcmNoaWNhbCB0YXhvbm9teQotYW5kIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgY2xhc3NpZmljYXRpb24gZm9yIHlvdXIgYnVzaW5lc3Mgc2VydmljZSwgdGhlbgotZXhpdCB0aGUgQ2F0ZWdvcmllcyBwYW5lLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+Q2xpY2sgIDxiPkdvPC9iPiB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5LjwvY21kPjwvc3RlcD4KLTwvc3RlcHM+Ci08cmVzdWx0PjxwPiA8Yj5JbXBvcnRhbnQ6PC9iPiBFbnN1cmUgdGhhdCB5b3Ugc2VsZWN0IHRoZSBzZXJ2aWNlIGRvY3VtZW50LAotc2luY2UgdGhlIHNlcnZpY2UgZWxlbWVudCBpcyB0aGUgYmFzaXMgZm9yIHRoZSBCdXNpbmVzcyBTZXJ2aWNlIHRoYXQgeW91IHdpbGwKLXB1Ymxpc2guJm5ic3A7IFlvdSBjYW5ub3QgcHVibGlzaCBhIEJ1c2luZXNzIFNlcnZpY2UgdXNpbmcgYSBXU0RMIGRvY3VtZW50Ci10aGF0IGRvZXMgbm90IGhhdmUgc2VydmljZSBlbGVtZW50cy48L3A+PHA+VGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBpcyBhdXRvbWF0aWNhbGx5Ci11cGRhdGVkIHdpdGggeW91ciBwdWJsaXNoZWQgV2ViIHNlcnZpY2UuIFRoZSByZWdpc3RyeSBjb250YWlucyBwb2ludGVycyB0bwotdGhlIFVSTCBvZiB0aGUgV1NETCBzZXJ2aWNlIGRvY3VtZW50IG9mIHRoZSBXZWIgc2VydmljZS4gQnVzaW5lc3NlcyBjYW4gbm93Ci1kaXNjb3ZlciBhbmQgaW50ZWdyYXRlIHdpdGggeW91ciBXZWIgc2VydmljZS48L3A+PC9yZXN1bHQ+Ci08L3Rhc2tib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD4gVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jdWRkaS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InR1ZGRpZXhwLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRzdHJ0ZXhwLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRyZWcuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBSZWZlcmVuY2U8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vcmVmL3J1ZGRpLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L3Rhc2s+Ci08L3Rhc2s+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90cHVibGlzaC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHB1Ymxpc2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI0ODcyNC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90cHVibGlzaC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJ0YXNrIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IlB1Ymxpc2hpbmcgYSBXZWIgc2VydmljZSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgV2ViIHNlcnZpY2UsIGFsc28ga25vd24gYXMgdGhlIGJ1c2luZXNzIHNlcnZpY2UsIGRlc2NyaWJlcyBhIFdlYiBzZXJ2aWNlJ3MgZW5kcG9pbnQgYW5kIHdoZXJlIGl0cyBXU0RMIGZpbGUgcmVzaWRlcy4gVGhlIFdTREwgZmlsZSBsaXN0cyB0aGUgb3BlcmF0aW9ucyB0aGF0IHNlcnZpY2UgcHJvdmlkZXMuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlRoZSBXZWIgc2VydmljZSwgYWxzbyBrbm93biBhcyB0aGUgYnVzaW5lc3Mgc2VydmljZSwgZGVzY3JpYmVzIGEgV2ViIHNlcnZpY2UncyBlbmRwb2ludCBhbmQgd2hlcmUgaXRzIFdTREwgZmlsZSByZXNpZGVzLiBUaGUgV1NETCBmaWxlIGxpc3RzIHRoZSBvcGVyYXRpb25zIHRoYXQgc2VydmljZSBwcm92aWRlcy4iIC8+Ci08bWV0YSBjb250ZW50PSJVRERJLCBwdWJsaXNoaW5nIGEgV2ViIHNlcnZpY2UsIFdlYiBzZXJ2aWNlcywgcHVibGlzaGluZywgVURESSByZWdpc3RyeSIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlVEREksIHB1Ymxpc2hpbmcgYSBXZWIgc2VydmljZSwgV2ViIHNlcnZpY2VzLCBwdWJsaXNoaW5nLCBVRERJIHJlZ2lzdHJ5IiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0cHVibGlzaCIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPlB1Ymxpc2hpbmcgYSBXZWIgc2VydmljZTwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0idHB1Ymxpc2giPjxhIG5hbWU9InRwdWJsaXNoIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5QdWJsaXNoaW5nIGEgV2ViIHNlcnZpY2U8L2gxPgotCi0KLQotCi08ZGl2PjxwPlRoZSBXZWIgc2VydmljZSwgYWxzbyBrbm93biBhcyB0aGUgYnVzaW5lc3Mgc2VydmljZSwgZGVzY3JpYmVzCi1hIFdlYiBzZXJ2aWNlJ3MgZW5kcG9pbnQgYW5kIHdoZXJlIGl0cyBXU0RMIGZpbGUgcmVzaWRlcy4gVGhlIFdTREwgZmlsZSBsaXN0cwotdGhlIG9wZXJhdGlvbnMgdGhhdCBzZXJ2aWNlIHByb3ZpZGVzLjwvcD4KLQotPGRpdiBjbGFzcz0icCI+UHJlcmVxdWlzaXRlczo8b2w+Ci08bGk+IDxhIGhyZWY9InRyZWcuaHRtbCI+UmVnaXN0ZXIgd2l0aCBhIHJlZ2lzdHJ5PC9hPi48L2xpPgotCi08bGk+IDxhIGhyZWY9InRzdHJ0ZXhwLmh0bWwiPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPi48L2xpPgotCi08bGk+IDxhIGhyZWY9InRhZGRyZWcuaHRtbCI+QWRkIHRoZSByZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPi48L2xpPgotCi08bGk+Q3JlYXRlIGEgV2ViIHNlcnZpY2UuPC9saT4KLQotPGxpPkRlcGxveSB0aGUgV2ViIHNlcnZpY2UuPC9saT4KLQotPGxpPiA8YSBocmVmPSJ0cHViZW50Lmh0bWwiPlB1Ymxpc2ggYSBCdXNpbmVzcyBFbnRpdHk8L2E+LjwvbGk+Ci0KLTwvb2w+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+WW91IGNhbiBwdWJsaXNoIGEgYnVzaW5lc3Mgc2VydmljZSB1c2luZyB0d28gZGlmZmVyZW50IHB1YmxpY2F0aW9uCi1mb3JtYXRzOiBzaW1wbGUgYW5kIGFkdmFuY2VkLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgeG1sOmxhbmc9ImVuLXVzIiBpZD0iZDBlNzQiPjxhIG5hbWU9ImQwZTc0Ij48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPlB1Ymxpc2ggYSBidXNpbmVzcyBzZXJ2aWNlIHVzaW5nIHRoZSBzaW1wbGUgb3B0aW9uPC9oMj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRvIHB1Ymxpc2ggYSBXZWIgc2VydmljZSB1c2luZyB0aGUgc2ltcGxlIG9wdGlvbjo8L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpPjxzcGFuPkluIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgTmF2aWdhdG9yIHBhbmUsIHNlbGVjdCB0aGUgYnVzaW5lc3MKLWVudGl0eSBmb3Igd2hpY2ggeW91IHdhbnQgdG8gcHVibGlzaCB0aGUgYnVzaW5lc3Mgc2VydmljZS48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkluIHRoZSBBY3Rpb25zIHBhbmUgdG9vbGJhciwgY2xpY2sgdGhlICA8c3Ryb25nPlB1Ymxpc2ggU2VydmljZTwvc3Ryb25nPiBpY29uCi0gPGltZyBzcmM9Ii4uL2ltYWdlcy9wdWJzZXJ2LmdpZiIgYWx0PSJQaWN0dXJlIG9mIHRoZSBQdWJsaXNoIFNlcnZpY2UgaWNvbi4iIC8+Ljwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+U2VsZWN0IHRoZSAgPHN0cm9uZz5TaW1wbGU8L3N0cm9uZz4gcmFkaW8gYnV0dG9uLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+RW50ZXIgdGhlIHB1Ymxpc2ggVVJMLCB5b3VyIHVzZXIgSUQsIHBhc3N3b3JkLCBXU0RMIFVSTCwgYnVzaW5lc3MKLW5hbWUsIGFuZCBidXNpbmVzcyBkZXNjcmlwdGlvbiBpbiB0aGUgcmVzcGVjdGl2ZSBmaWVsZHMuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5Hbzwvc3Ryb25nPiB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5Ljwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD4gPHN0cm9uZz5JbXBvcnRhbnQ6PC9zdHJvbmc+IEVuc3VyZSB0aGF0IHlvdSBzZWxlY3QgdGhlIHNlcnZpY2UgZG9jdW1lbnQsCi1zaW5jZSB0aGUgc2VydmljZSBlbGVtZW50IGlzIHRoZSBiYXNpcyBmb3IgdGhlIEJ1c2luZXNzIFNlcnZpY2UgdGhhdCB5b3Ugd2lsbAotcHVibGlzaC4gWW91IGNhbm5vdCBwdWJsaXNoIGEgQnVzaW5lc3MgU2VydmljZSB1c2luZyBhIFdTREwgZG9jdW1lbnQgdGhhdAotZG9lcyBub3QgaGF2ZSBzZXJ2aWNlIGVsZW1lbnRzLjwvcD4KLTxwPlRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgaXMgYXV0b21hdGljYWxseQotdXBkYXRlZCB3aXRoIHlvdXIgcHVibGlzaGVkIFdlYiBzZXJ2aWNlLiBUaGUgcmVnaXN0cnkgY29udGFpbnMgcG9pbnRlcnMgdG8KLXRoZSBVUkwgb2YgdGhlIFdTREwgc2VydmljZSBkb2N1bWVudCBvZiB0aGUgV2ViIHNlcnZpY2UuIEJ1c2luZXNzZXMgY2FuIG5vdwotZGlzY292ZXIgYW5kIGludGVncmF0ZSB3aXRoIHlvdXIgV2ViIHNlcnZpY2UuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPHVsIGNsYXNzPSJ1bGxpbmtzIj4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vcmVmL3J1ZGRpLmh0bWwiPkRhdGEgc3RydWN0dXJlIHR5cGVzIChVRERJIHJlZ2lzdHJ5KTwvYT48L3N0cm9uZz48YnIgLz4KLU9uY2UgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbmQgbG9nZ2VkIGluIHRvIHRoZSBVRERJIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UgaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwgYmluZGluZyBpbmZvcm1hdGlvbiwgYW5kIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljYXRpb25zIGZvciBzZXJ2aWNlcy4gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLjwvbGk+Ci08L3VsPgotCi08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vdGFza3MvdHVkZGlleHAuaHRtbCIgdGl0bGU9IlRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIj5QdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXM8L2E+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIHhtbDpsYW5nPSJlbi11cyIgaWQ9ImQwZTExMyI+PGEgbmFtZT0iZDBlMTEzIj48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPlB1Ymxpc2ggYSBidXNpbmVzcyBzZXJ2aWNlIHVzaW5nIHRoZSBhZHZhbmNlZCBvcHRpb248L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VG8gcHVibGlzaCBhIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBhZHZhbmNlZCBvcHRpb246PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaT48c3Bhbj5JbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIE5hdmlnYXRvciBwYW5lLCBzZWxlY3QgdGhlIGJ1c2luZXNzCi1lbnRpdHkgZm9yIHdoaWNoIHlvdSB3YW50IHRvIHB1Ymxpc2ggdGhlIGJ1c2luZXNzIHNlcnZpY2UuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5JbiB0aGUgQWN0aW9ucyBwYW5lIHRvb2xiYXIsIGNsaWNrIHRoZSAgPHN0cm9uZz5QdWJsaXNoIFNlcnZpY2U8L3N0cm9uZz4gaWNvbgotIDxpbWcgc3JjPSIuLi9pbWFnZXMvcHVic2Vydi5naWYiIGFsdD0iUGljdHVyZSBvZiB0aGUgUHVibGlzaCBTZXJ2aWNlIGljb24uIiAvPi48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPlNlbGVjdCB0aGUgIDxzdHJvbmc+QWR2YW5jZWQ8L3N0cm9uZz4gcmFkaW8gYnV0dG9uLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+RW50ZXIgdGhlIHB1Ymxpc2ggVVJMLCB5b3VyIHVzZXIgSUQsIHBhc3N3b3JkLCBhbmQgV1NETCBVUkwgaW4KLXRoZSByZXNwZWN0aXZlIGZpZWxkcy48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkNsaWNrICA8c3Ryb25nPkdldDwvc3Ryb25nPiBvciA8c3BhbiBjbGFzcz0idWljb250cm9sIj5GaW5kPC9zcGFuPiB0byBhc3NvY2lhdGUgdGhlCi1zZXJ2aWNlIHdpdGggYSBidXNpbmVzcyBlbnRpdHkuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5HZXQ8L3N0cm9uZz4gb3IgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluZDwvc3Bhbj4gdG8gYXNzb2NpYXRlIGEKLXNwZWNpZmljIHNlcnZpY2UgaW50ZXJmYWNlIHdpdGggdGhlIHNlcnZpY2UuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5BZGQ8L3N0cm9uZz4gdG8gY3JlYXRlIGJ1c2luZXNzIHNlcnZpY2UgbmFtZXMuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5BZGQ8L3N0cm9uZz4gdG8gY3JlYXRlIGJ1c2luZXNzIHNlcnZpY2UgZGVzY3JpcHRpb25zLjwvc3Bhbj4KLTwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5BZGQ8L3N0cm9uZz4gdG8gY3JlYXRlIGNhdGVnb3JpZXMuIEVudGVyIHlvdXIgYnVzaW5lc3Mgc2VydmljZQotY2F0ZWdvcmllcy4gU2VsZWN0IGEgY2F0ZWdvcnkgdHlwZSBmcm9tIHRoZSBkcm9wIGRvd24gbGlzdC4gQ2xpY2sgIDxzdHJvbmc+QnJvd3NlPC9zdHJvbmc+IHRvCi1vcGVuIHRoZSBDYXRlZ29yaWVzIHBhbmUuwqAgTmF2aWdhdGUgdGhyb3VnaCB0aGUgaGllcmFyY2hpY2FsIHRheG9ub215Ci1hbmQgc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBjbGFzc2lmaWNhdGlvbiBmb3IgeW91ciBidXNpbmVzcyBzZXJ2aWNlLCB0aGVuCi1leGl0IHRoZSBDYXRlZ29yaWVzIHBhbmUuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5Hbzwvc3Ryb25nPiB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5Ljwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD4gPHN0cm9uZz5JbXBvcnRhbnQ6PC9zdHJvbmc+IEVuc3VyZSB0aGF0IHlvdSBzZWxlY3QgdGhlIHNlcnZpY2UgZG9jdW1lbnQsCi1zaW5jZSB0aGUgc2VydmljZSBlbGVtZW50IGlzIHRoZSBiYXNpcyBmb3IgdGhlIEJ1c2luZXNzIFNlcnZpY2UgdGhhdCB5b3Ugd2lsbAotcHVibGlzaC7CoCBZb3UgY2Fubm90IHB1Ymxpc2ggYSBCdXNpbmVzcyBTZXJ2aWNlIHVzaW5nIGEgV1NETCBkb2N1bWVudAotdGhhdCBkb2VzIG5vdCBoYXZlIHNlcnZpY2UgZWxlbWVudHMuPC9wPgotPHA+VGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBpcyBhdXRvbWF0aWNhbGx5Ci11cGRhdGVkIHdpdGggeW91ciBwdWJsaXNoZWQgV2ViIHNlcnZpY2UuIFRoZSByZWdpc3RyeSBjb250YWlucyBwb2ludGVycyB0bwotdGhlIFVSTCBvZiB0aGUgV1NETCBzZXJ2aWNlIGRvY3VtZW50IG9mIHRoZSBXZWIgc2VydmljZS4gQnVzaW5lc3NlcyBjYW4gbm93Ci1kaXNjb3ZlciBhbmQgaW50ZWdyYXRlIHdpdGggeW91ciBXZWIgc2VydmljZS48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08dWwgY2xhc3M9InVsbGlua3MiPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi9yZWYvcnVkZGkuaHRtbCI+RGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpPC9hPjwvc3Ryb25nPjxiciAvPgotT25jZSB5b3UgaGF2ZSByZWdpc3RlcmVkIGFuZCBsb2dnZWQgaW4gdG8gdGhlIFVEREkgcmVnaXN0cnkgdGhhdCB5b3Ugd2FudCB0byB1c2UsIHlvdSBjYW4gcmVnaXN0ZXIgeW91ciBXZWIgc2VydmljZS4gUmVnaXN0cmF0aW9uIG9mIGEgc2VydmljZSBpbnZvbHZlcyBmb3VyIGNvcmUgZGF0YSBzdHJ1Y3R1cmUgdHlwZXM6IGJ1c2luZXNzIGluZm9ybWF0aW9uLCBzZXJ2aWNlIGluZm9ybWF0aW9uLCBiaW5kaW5nIGluZm9ybWF0aW9uLCBhbmQgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIHNlcnZpY2VzLiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZGF0YSB0eXBlcyBpcyBkZXNjcmliZWQgaW4gRmlndXJlIDEuPC9saT4KLTwvdWw+Ci0KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90YXNrcy90dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgdGl0bGU9IlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InR1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0c3RydGV4cC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBhbGxvd3MgeW91IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIHNldmVyYWwgd2F5cy4iPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0cmVnLmh0bWwiIHRpdGxlPSJJbiBvcmRlciB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5IGFuZCBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnksIHlvdSBtdXN0IGZpcnN0IHJlZ2lzdGVyIHdpdGggdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLiI+UmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnk8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgUmVmZXJlbmNlPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vcmVmL3J1ZGRpLmh0bWwiIHRpdGxlPSJPbmNlIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYW5kIGxvZ2dlZCBpbiB0byB0aGUgVURESSByZWdpc3RyeSB0aGF0IHlvdSB3YW50IHRvIHVzZSwgeW91IGNhbiByZWdpc3RlciB5b3VyIFdlYiBzZXJ2aWNlLiBSZWdpc3RyYXRpb24gb2YgYSBzZXJ2aWNlIGludm9sdmVzIGZvdXIgY29yZSBkYXRhIHN0cnVjdHVyZSB0eXBlczogYnVzaW5lc3MgaW5mb3JtYXRpb24sIHNlcnZpY2UgaW5mb3JtYXRpb24sIGJpbmRpbmcgaW5mb3JtYXRpb24sIGFuZCBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3Igc2VydmljZXMuIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBkYXRhIHR5cGVzIGlzIGRlc2NyaWJlZCBpbiBGaWd1cmUgMS4iPkRhdGEgc3RydWN0dXJlIHR5cGVzIChVRERJIHJlZ2lzdHJ5KTwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci0KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RyZWcuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RyZWcuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZiNmFiZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90cmVnLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA1LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idHJlZyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5SZWdpc3RlcmluZyB3aXRoIGEgVURESSByZWdpc3RyeTwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPlJlZ2lzdGVyaW5nIHdpdGggYSBVRERJIFJlZ2lzdHJ5PC9zZWFyY2h0aXRsZT4KLTwvdGl0bGVhbHRzPgotPHNob3J0ZGVzYz5JbiBvcmRlciB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5IGFuZCBXZWIgc2VydmljZSB0byBhIFVEREkKLXJlZ2lzdHJ5LCB5b3UgbXVzdCBmaXJzdCByZWdpc3RlciB3aXRoIHRoZSByZWdpc3RyeSB0aGF0IHlvdSB3YW50IHRvIHVzZS48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+VURESTxpbmRleHRlcm0+cmVnaXN0ZXJpbmcgd2l0aCBhIHJlZ2lzdHJ5PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+cmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnk8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VGhlcmUgYXJlIG1hbnkgZGlmZmVyZW50IHByaXZhdGUgcmVnaXN0cmllcyB3aXRoIHdoaWNoIHlvdSBjYW4KLXJlZ2lzdGVyLiBTaW5jZSBlYWNoIHJlZ2lzdHJ5IGlzIGRpZmZlcmVudCwgdGhlIHJlZ2lzdHJ5IHByb3ZpZGVyIHdpbGwgZ2l2ZQoteW91IGluc3RydWN0aW9ucyBmb3IgcmVnaXN0ZXJpbmcuPC9wPjxwPlRoZSBmb2xsb3dpbmcgcmVnaXN0cmllcyBhcmUgYXV0b21hdGljYWxseQotYWRkZWQgdG8gRmF2b3JpdGVzOjwvcD48dWw+Ci08bGk+U0FQIFVEREkgUmVnaXN0cnk8L2xpPgotPGxpPlNBUCBVRERJIFRlc3QgUmVnaXN0cnk8L2xpPgotPGxpPlhNZXRob2RzIFJlZ2lzdHJ5PC9saT4KLTxsaT5OVFQgQ29tbXVuaWNhdGlvbnMgUmVnaXN0cnk8L2xpPgotPC91bD48cD5Zb3UgY2FuIHVzZSBhbnkgb2YgdGhlc2UgcmVnaXN0cmllcyBieSBzZWxlY3RpbmcgdGhlIEZhdm9yaXRlcyBpY29uCi1pbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHRvb2xiYXIuIEFsbCBvZiB0aGVzZSByZWdpc3RyaWVzIGFyZSBiYXNlZCBvbgotdGhlIFVEREkgQnVzaW5lc3MgUmVnaXN0cnkgVmVyc2lvbiAyLiBUaGUgZGV0YWlscyBwYWdlIG9mIGVhY2ggcmVnaXN0cnkgd2lsbAotaGF2ZSByZWdpc3RyYXRpb24gaW5zdHJ1Y3Rpb25zLjwvcD48cD5UaGUgcHVibGljIHByb2R1Y3Rpb24gcmVnaXN0cmllcyBhcmUKLWxpc3RlZCB1bmRlciBGYXZvcml0ZXMuIFRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgZG9lcyBub3QgcHJlbG9hZCBhbnkgcmVnaXN0cmllcwotYnkgZGVmYXVsdC4mbmJzcDsgWW91IGNhbiBwcmVsb2FkIHJlZ2lzdHJpZXMgZnJvbSB0aGUgZmF2b3JpdGVzIHNlY3Rpb24gb2YKLXRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgb3IgYnkgdXNpbmcgdGhlIFVuaXQgVGVzdCBVRERJIHdpemFyZC4gWW91IGNhbiBhbHNvCi1wcmVsb2FkIGFuZCBjb25maWd1cmUgcHJpdmF0ZSByZWdpc3RyaWVzIHVzaW5nIHRoZSBVbml0IFRlc3QgVURESSB3aXphcmQuCi1PbiB0aGUgT3BlbiBSZWdpc3RyeSBwYWdlIG9mIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIsIHlvdSBjYW4gc2VsZWN0IGZyb20KLXB1YmxpYyByZWdpc3RyaWVzIGFuZCByZWdpc3RyaWVzIGxpc3RlZCBpbiB5b3VyIGZhdm9yaXRlcyB0byBhdXRvbWF0aWNhbGx5Ci1maWxsIGluIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBvcGVuIGEgcGFydGljdWxhciByZWdpc3RyeS48L3A+PC9jb250ZXh0PgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIENvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSJ0dWRkaWV4cC5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSJ0c3RydGV4cC5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9yZWYvcnVkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RyZWcuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RyZWcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNjYjBlYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90cmVnLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJSZWdpc3RlcmluZyB3aXRoIGEgVURESSByZWdpc3RyeSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJJbiBvcmRlciB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5IGFuZCBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnksIHlvdSBtdXN0IGZpcnN0IHJlZ2lzdGVyIHdpdGggdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJJbiBvcmRlciB0byBwdWJsaXNoIHlvdXIgYnVzaW5lc3MgZW50aXR5IGFuZCBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnksIHlvdSBtdXN0IGZpcnN0IHJlZ2lzdGVyIHdpdGggdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IlVEREksIHJlZ2lzdGVyaW5nIHdpdGggYSByZWdpc3RyeSwgV2ViIHNlcnZpY2VzLCByZWdpc3RlcmluZyB3aXRoIGEgVURESSByZWdpc3RyeSIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlVEREksIHJlZ2lzdGVyaW5nIHdpdGggYSByZWdpc3RyeSwgV2ViIHNlcnZpY2VzLCByZWdpc3RlcmluZyB3aXRoIGEgVURESSByZWdpc3RyeSIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InR1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRzdHJ0ZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3JlZi9ydWRkaS5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InRyZWciIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5SZWdpc3RlcmluZyB3aXRoIGEgVURESSBSZWdpc3RyeTwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0idHJlZyI+PGEgbmFtZT0idHJlZyI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+UmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnk8L2gxPgotCi0KLQotCi08ZGl2PjxwPkluIG9yZGVyIHRvIHB1Ymxpc2ggeW91ciBidXNpbmVzcyBlbnRpdHkgYW5kIFdlYiBzZXJ2aWNlIHRvIGEgVURESQotcmVnaXN0cnksIHlvdSBtdXN0IGZpcnN0IHJlZ2lzdGVyIHdpdGggdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLjwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VGhlcmUgYXJlIG1hbnkgZGlmZmVyZW50IHByaXZhdGUgcmVnaXN0cmllcyB3aXRoIHdoaWNoIHlvdSBjYW4KLXJlZ2lzdGVyLiBTaW5jZSBlYWNoIHJlZ2lzdHJ5IGlzIGRpZmZlcmVudCwgdGhlIHJlZ2lzdHJ5IHByb3ZpZGVyIHdpbGwgZ2l2ZQoteW91IGluc3RydWN0aW9ucyBmb3IgcmVnaXN0ZXJpbmcuPC9wPgotPHA+VGhlIGZvbGxvd2luZyByZWdpc3RyaWVzIGFyZSBhdXRvbWF0aWNhbGx5Ci1hZGRlZCB0byBGYXZvcml0ZXM6PC9wPgotPHVsPgotPGxpPlNBUCBVRERJIFJlZ2lzdHJ5PC9saT4KLQotPGxpPlNBUCBVRERJIFRlc3QgUmVnaXN0cnk8L2xpPgotCi08bGk+WE1ldGhvZHMgUmVnaXN0cnk8L2xpPgotCi08bGk+TlRUIENvbW11bmljYXRpb25zIFJlZ2lzdHJ5PC9saT4KLQotPC91bD4KLTxwPllvdSBjYW4gdXNlIGFueSBvZiB0aGVzZSByZWdpc3RyaWVzIGJ5IHNlbGVjdGluZyB0aGUgRmF2b3JpdGVzIGljb24KLWluIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdG9vbGJhci4gQWxsIG9mIHRoZXNlIHJlZ2lzdHJpZXMgYXJlIGJhc2VkIG9uCi10aGUgVURESSBCdXNpbmVzcyBSZWdpc3RyeSBWZXJzaW9uIDIuIFRoZSBkZXRhaWxzIHBhZ2Ugb2YgZWFjaCByZWdpc3RyeSB3aWxsCi1oYXZlIHJlZ2lzdHJhdGlvbiBpbnN0cnVjdGlvbnMuPC9wPgotPHA+VGhlIHB1YmxpYyBwcm9kdWN0aW9uIHJlZ2lzdHJpZXMgYXJlCi1saXN0ZWQgdW5kZXIgRmF2b3JpdGVzLiBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGRvZXMgbm90IHByZWxvYWQgYW55IHJlZ2lzdHJpZXMKLWJ5IGRlZmF1bHQuwqAgWW91IGNhbiBwcmVsb2FkIHJlZ2lzdHJpZXMgZnJvbSB0aGUgZmF2b3JpdGVzIHNlY3Rpb24gb2YKLXRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgb3IgYnkgdXNpbmcgdGhlIFVuaXQgVGVzdCBVRERJIHdpemFyZC4gWW91IGNhbiBhbHNvCi1wcmVsb2FkIGFuZCBjb25maWd1cmUgcHJpdmF0ZSByZWdpc3RyaWVzIHVzaW5nIHRoZSBVbml0IFRlc3QgVURESSB3aXphcmQuCi1PbiB0aGUgT3BlbiBSZWdpc3RyeSBwYWdlIG9mIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIsIHlvdSBjYW4gc2VsZWN0IGZyb20KLXB1YmxpYyByZWdpc3RyaWVzIGFuZCByZWdpc3RyaWVzIGxpc3RlZCBpbiB5b3VyIGZhdm9yaXRlcyB0byBhdXRvbWF0aWNhbGx5Ci1maWxsIGluIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBvcGVuIGEgcGFydGljdWxhciByZWdpc3RyeS48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vdGFza3MvdHVkZGlleHAuaHRtbCIgdGl0bGU9IlRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIj5QdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXM8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIj4gVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIj5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIHRpdGxlPSJVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSB3YXkgdG8gcHVibGlzaCBhbmQgZGlzY292ZXIgaW5mb3JtYXRpb24gYWJvdXQgV2ViIHNlcnZpY2VzLiI+VW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSk8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJ0dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idHN0cnRleHAuaHRtbCIgdGl0bGU9IlRoZSBXZWIgc2VydmljZXMgdG9vbHMgYWxsb3dzIHlvdSB0byBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBpbiBzZXZlcmFsIHdheXMuIj5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBSZWZlcmVuY2U8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9yZWYvcnVkZGkuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbmQgbG9nZ2VkIGluIHRvIHRoZSBVRERJIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UgaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwgYmluZGluZyBpbmZvcm1hdGlvbiwgYW5kIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljYXRpb25zIGZvciBzZXJ2aWNlcy4gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLiI+RGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90c3RydGV4cC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHN0cnRleHAuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY1OGM3Yy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90c3RydGV4cC5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0c3RydGV4cCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9zZWFyY2h0aXRsZT4KLTwvdGl0bGVhbHRzPgotPHNob3J0ZGVzYz5UaGUgV2ViIHNlcnZpY2VzIHRvb2xzIGFsbG93cyB5b3UgdG8gbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIKLWluIHNldmVyYWwgd2F5cy48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V2ViIFNlcnZpY2VzIEV4cGxvcmVyPGluZGV4dGVybT5sYXVuY2hpbmc8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHVsPgotPGxpPkZyb20gdGhlIG1haW4gdG9vbGJhciBpbiB0aGUgSmF2YSBFRSBwZXJzcGVjdGl2ZS48L2xpPgotPGxpPkJ5IHVzaW5nIHRoZSBXZWIgc2VydmljZSB3aXphcmRzLjwvbGk+Ci08bGk+QnkgdXNpbmcgdGhlIEltcG9ydCB3aXphcmQuPC9saT4KLTxsaT5CeSB1c2luZyB0aGUgRXhwb3J0IHdpemFyZC48L2xpPgotPGxpPkZyb20gdGhlIFJ1biBtZW51IGluIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlLjwvbGk+Ci08bGk+RnJvbSBhIFdTREwgZmlsZS48L2xpPgotPC91bD48L2NvbnRleHQ+Ci08L3Rhc2tib2R5PgotPHRhc2sgaWQ9ImQwZTM4IiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGZyb20gdGhlIG1haW4gdG9vbGJhcjwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UbyBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBmcm9tIHRoZSBtYWluIHRvb2xiYXIsIGVuc3VyZQotdGhhdCB5b3UgYXJlIGluIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlIGFuZCBjbGljayB0aGUgIDxiPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzCi1FeHBsb3JlcjwvYj4gaWNvbiAgPGltYWdlIGFsdD0iUGljdHVyZSBvZiB0aGUgTGF1bmNoIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBpY29uLiIKLWhyZWY9Ii4uL2ltYWdlcy91ZGRpdmlldy5naWYiPjwvaW1hZ2U+LiBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG9wZW5zIHdpdGhvdXQKLWFueSByZWdpc3RyaWVzIGRpc3BsYXllZCBpbiB0aGUgTmF2aWdhdG9yIHBhbmUuIFlvdSBjYW4gbm93ICA8eHJlZiBocmVmPSJ0YWRkcmVnLmRpdGEiPmFkZAotYSByZWdpc3RyeTwveHJlZj4gdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlci48L3A+PC9jb250ZXh0PgotPC90YXNrYm9keT4KLTwvdGFzaz4KLTx0YXNrIGlkPSJkMGU1MCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB1c2luZyB0aGUgV2ViIFNlcnZpY2VzIFdpemFyZDwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UbyBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBmcm9tIHRoZSBXZWIgU2VydmljZXMgV2l6YXJkLAotc2VsZWN0IHRoZSAgPGI+VGVzdCB0aGUgV2ViIFNlcnZpY2U8L2I+IGNoZWNrIGJveCBpbiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUKLVdlYiBTZXJ2aWNlcyBXaXphcmQuIFByb2NlZWQgd2l0aCB0aGUgd2l6YXJkIGFuZCB0aGVuIGluIHRoZSBXZWIgU2VydmljZSBUZXN0Ci1QYWdlLCBjaG9vc2UgIDxiPldlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYj4gYXMgdGhlIHRlc3QgZmFjaWxpdHkgYW5kIGNsaWNrCi1vbiB0aGUgIDxiPkxhdW5jaDwvYj4gYnV0dG9uLiBJZiB5b3UgbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdXNpbmcKLXRoaXMgbWV0aG9kLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgcHJlbG9hZCB0aGUgV1NETCAoYW5kIGl0cyBjaGlsZCBub2RlcykKLWluIHRoZSBXU0RMIHBhZ2UuPC9wPjwvY29udGV4dD4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iZDBlNjMiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+TGF1bmNoaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdXNpbmcgdGhlIEltcG9ydCB3aXphcmQ8L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VG8gbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdXNpbmcgdGhlIEltcG9ydCB3aXphcmQsIGRvCi10aGUgZm9sbG93aW5nOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkZyb20gdGhlIG1haW4gbWVudSwgY2xpY2sgIDxiPkZpbGUgPiBJbXBvcnQ8L2I+LiBUaGUgSW1wb3J0IHdpemFyZAotb3BlbnMuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5TZWxlY3QgIDxiPldlYiBTZXJ2aWNlPC9iPiBhbmQgY2xpY2sgIDxiPk5leHQ8L2I+LiBUaGUgV2ViIHNlcnZpY2UKLWltcG9ydCB3aXphcmQgb3BlbnMuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5DbGljayAgPGI+RmluaXNoPC9iPi48L2NtZD48L3N0ZXA+Ci08L3N0ZXBzPgotPHJlc3VsdD48cD5UaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG9wZW5zLiBJZiB5b3Ugc2VsZWN0ZWQgYSByZWdpc3RyeSBvbgotdGhlIFdlYiBTZXJ2aWNlIFB1YmxpY2F0aW9uIHBhZ2Ugb2YgdGhlIFdlYiBzZXJ2aWNlIEltcG9ydCB3aXphcmQsIHlvdSB3aWxsCi1zZWUgdGhlIHJlZ2lzdHJ5IGRpc3BsYXllZCBpbiB0aGUgTmF2aWdhdG9yIHBhbmUuPC9wPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTwvdGFzaz4KLTx0YXNrIGlkPSJkMGU5NSIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB1c2luZyB0aGUgRXhwb3J0IHdpemFyZDwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UbyBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB1c2luZyB0aGUgRXhwb3J0IHdpemFyZCwgZG8KLXRoZSBmb2xsb3dpbmc6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+RnJvbSB0aGUgbWFpbiBtZW51LCBjbGljayAgPGI+RmlsZSA+IEV4cG9ydDwvYj4uIFRoZSBFeHBvcnQgd2l6YXJkCi1vcGVucy48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPlNlbGVjdCAgPGI+V2ViIFNlcnZpY2U8L2I+IGFuZCBjbGljayAgPGI+TmV4dDwvYj4uIFRoZSBXZWIgU2VydmljZQotRXhwb3J0IHdpemFyZCBvcGVucy48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrICA8Yj5GaW5pc2g8L2I+LiBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG9wZW5zLjwvY21kPjwvc3RlcD4KLTwvc3RlcHM+Ci08cmVzdWx0PjxwPlRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgb3BlbnMuJm5ic3A7IElmIHlvdSBzZWxlY3RlZCBhIHJlZ2lzdHJ5Ci1vbiB0aGUgV2ViIFNlcnZpY2UgUHVibGljYXRpb24gcGFnZSBvZiB0aGUgV2ViIFNlcnZpY2UgRXhwb3J0IHdpemFyZCwgeW91Ci13aWxsIHNlZSB0aGUgcmVnaXN0cnkgZGlzcGxheWVkIGluIHRoZSBOYXZpZ2F0b3IgcGFuZS48L3A+PC9yZXN1bHQ+Ci08L3Rhc2tib2R5PgotPC90YXNrPgotPHRhc2sgaWQ9ImQwZTEyNyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBmcm9tIHRoZSBSdW4gbWVudTwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UbyBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBmcm9tIHRoZSBtYWluIG1lbnUsIGVuc3VyZQotdGhhdCB5b3UgYXJlIGluIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlIGFuZCBjbGljayAgPGI+UnVuID4gTGF1bmNoIHRoZSBXZWIKLVNlcnZpY2VzIEV4cGxvcmVyPC9iPi4gVGhlIEltcG9ydCB3aXphcmQgb3BlbnMuIFRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIKLW9wZW5zLiZuYnNwOyBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG9wZW5zIHdpdGhvdXQgYW55IHJlZ2lzdHJpZXMgZGlzcGxheWVkCi1pbiB0aGUgTmF2aWdhdG9yIHBhbmUuPC9wPjwvY29udGV4dD4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iZDBlMTM0IiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGZyb20gYSBXU0RMIGZpbGU8L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VG8gbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgZnJvbSBhIFdTREwgZmlsZSwgc2VsZWN0IHRoZQotV1NETCBmaWxlIGFuZCByaWdodC1jbGljayBhbmQgY2hvb3NlICA8Yj5XZWIgU2VydmljZXMgPiBUZXN0IHdpdGggV2ViIFNlcnZpY2VzCi1FeHBsb3JlcjwvYj4gb3IgIDxiPlB1Ymxpc2ggV1NETCBmaWxlPC9iPi4mbmJzcDsgVGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlcgotb3BlbnMuIFRoZSAgPGI+VGVzdCB3aXRoIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYj4gYWN0aW9uIHdpbGwgcHJlbG9hZCB0aGUKLVdTREwgaW4gdGhlIFdTREwgcGFnZS48L3A+PC9jb250ZXh0PgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIENvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSJ0dWRkaWV4cC5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSJ0cmVnLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgUmVmZXJlbmNlPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL3JlZi9ydWRkaS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHN0cnRleHAuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RzdHJ0ZXhwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MTA0OTEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHN0cnRleHAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJMYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgV2ViIHNlcnZpY2VzIHRvb2xzIGFsbG93cyB5b3UgdG8gbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgaW4gc2V2ZXJhbCB3YXlzLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGUgV2ViIHNlcnZpY2VzIHRvb2xzIGFsbG93cyB5b3UgdG8gbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgaW4gc2V2ZXJhbCB3YXlzLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBTZXJ2aWNlcyBFeHBsb3JlciwgbGF1bmNoaW5nIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCBsYXVuY2hpbmciIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InRzdHJ0ZXhwIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+TGF1bmNoaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InRzdHJ0ZXhwIj48YSBuYW1lPSJ0c3RydGV4cCI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+TGF1bmNoaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2gxPgotCi0KLQotCi08ZGl2PjxwPlRoZSBXZWIgc2VydmljZXMgdG9vbHMgYWxsb3dzIHlvdSB0byBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcgotaW4gc2V2ZXJhbCB3YXlzLjwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHVsPgotPGxpPkZyb20gdGhlIG1haW4gdG9vbGJhciBpbiB0aGUgSmF2YSBFRSBwZXJzcGVjdGl2ZS48L2xpPgotCi08bGk+QnkgdXNpbmcgdGhlIFdlYiBzZXJ2aWNlIHdpemFyZHMuPC9saT4KLQotPGxpPkJ5IHVzaW5nIHRoZSBJbXBvcnQgd2l6YXJkLjwvbGk+Ci0KLTxsaT5CeSB1c2luZyB0aGUgRXhwb3J0IHdpemFyZC48L2xpPgotCi08bGk+RnJvbSB0aGUgUnVuIG1lbnUgaW4gdGhlIEphdmEgRUUgcGVyc3BlY3RpdmUuPC9saT4KLQotPGxpPkZyb20gYSBXU0RMIGZpbGUuPC9saT4KLQotPC91bD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgeG1sOmxhbmc9ImVuLXVzIiBpZD0iZDBlMzgiPjxhIG5hbWU9ImQwZTM4Ij48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGZyb20gdGhlIG1haW4gdG9vbGJhcjwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBmcm9tIHRoZSBtYWluIHRvb2xiYXIsIGVuc3VyZQotdGhhdCB5b3UgYXJlIGluIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlIGFuZCBjbGljayB0aGUgIDxzdHJvbmc+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMKLUV4cGxvcmVyPC9zdHJvbmc+IGljb24gIDxpbWcgc3JjPSIuLi9pbWFnZXMvdWRkaXZpZXcuZ2lmIiBhbHQ9IlBpY3R1cmUgb2YgdGhlIExhdW5jaCBXZWIgU2VydmljZXMgRXhwbG9yZXIgaWNvbi4iIC8+LiBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG9wZW5zIHdpdGhvdXQKLWFueSByZWdpc3RyaWVzIGRpc3BsYXllZCBpbiB0aGUgTmF2aWdhdG9yIHBhbmUuIFlvdSBjYW4gbm93ICA8YSBocmVmPSJ0YWRkcmVnLmh0bWwiPmFkZCBhIHJlZ2lzdHJ5PC9hPiB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90YXNrcy90dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgeG1sOmxhbmc9ImVuLXVzIiBpZD0iZDBlNTAiPjxhIG5hbWU9ImQwZTUwIj48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHVzaW5nIHRoZSBXZWIgU2VydmljZXMgV2l6YXJkPC9oMj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGZyb20gdGhlIFdlYiBTZXJ2aWNlcyBXaXphcmQsCi1zZWxlY3QgdGhlICA8c3Ryb25nPlRlc3QgdGhlIFdlYiBTZXJ2aWNlPC9zdHJvbmc+IGNoZWNrIGJveCBpbiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUKLVdlYiBTZXJ2aWNlcyBXaXphcmQuIFByb2NlZWQgd2l0aCB0aGUgd2l6YXJkIGFuZCB0aGVuIGluIHRoZSBXZWIgU2VydmljZSBUZXN0Ci1QYWdlLCBjaG9vc2UgIDxzdHJvbmc+V2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9zdHJvbmc+IGFzIHRoZSB0ZXN0IGZhY2lsaXR5IGFuZCBjbGljawotb24gdGhlICA8c3Ryb25nPkxhdW5jaDwvc3Ryb25nPiBidXR0b24uIElmIHlvdSBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB1c2luZwotdGhpcyBtZXRob2QsIGl0IHdpbGwgYXV0b21hdGljYWxseSBwcmVsb2FkIHRoZSBXU0RMIChhbmQgaXRzIGNoaWxkIG5vZGVzKQotaW4gdGhlIFdTREwgcGFnZS48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiB4bWw6bGFuZz0iZW4tdXMiIGlkPSJkMGU2MyI+PGEgbmFtZT0iZDBlNjMiPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+TGF1bmNoaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdXNpbmcgdGhlIEltcG9ydCB3aXphcmQ8L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VG8gbGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdXNpbmcgdGhlIEltcG9ydCB3aXphcmQsIGRvCi10aGUgZm9sbG93aW5nOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+RnJvbSB0aGUgbWFpbiBtZW51LCBjbGljayAgPHN0cm9uZz5GaWxlICZndDsgSW1wb3J0PC9zdHJvbmc+LiBUaGUgSW1wb3J0IHdpemFyZAotb3BlbnMuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5TZWxlY3QgIDxzdHJvbmc+V2ViIFNlcnZpY2U8L3N0cm9uZz4gYW5kIGNsaWNrICA8c3Ryb25nPk5leHQ8L3N0cm9uZz4uIFRoZSBXZWIgc2VydmljZQotaW1wb3J0IHdpemFyZCBvcGVucy48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkNsaWNrICA8c3Ryb25nPkZpbmlzaDwvc3Ryb25nPi48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBvcGVucy4gSWYgeW91IHNlbGVjdGVkIGEgcmVnaXN0cnkgb24KLXRoZSBXZWIgU2VydmljZSBQdWJsaWNhdGlvbiBwYWdlIG9mIHRoZSBXZWIgc2VydmljZSBJbXBvcnQgd2l6YXJkLCB5b3Ugd2lsbAotc2VlIHRoZSByZWdpc3RyeSBkaXNwbGF5ZWQgaW4gdGhlIE5hdmlnYXRvciBwYW5lLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIHhtbDpsYW5nPSJlbi11cyIgaWQ9ImQwZTk1Ij48YSBuYW1lPSJkMGU5NSI+PCEtLSAtLT48L2E+Ci08aDIgY2xhc3M9InRvcGljdGl0bGUyIj5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB1c2luZyB0aGUgRXhwb3J0IHdpemFyZDwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB1c2luZyB0aGUgRXhwb3J0IHdpemFyZCwgZG8KLXRoZSBmb2xsb3dpbmc6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaT48c3Bhbj5Gcm9tIHRoZSBtYWluIG1lbnUsIGNsaWNrICA8c3Ryb25nPkZpbGUgJmd0OyBFeHBvcnQ8L3N0cm9uZz4uIFRoZSBFeHBvcnQgd2l6YXJkCi1vcGVucy48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPlNlbGVjdCAgPHN0cm9uZz5XZWIgU2VydmljZTwvc3Ryb25nPiBhbmQgY2xpY2sgIDxzdHJvbmc+TmV4dDwvc3Ryb25nPi4gVGhlIFdlYiBTZXJ2aWNlCi1FeHBvcnQgd2l6YXJkIG9wZW5zLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+Q2xpY2sgIDxzdHJvbmc+RmluaXNoPC9zdHJvbmc+LiBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG9wZW5zLjwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG9wZW5zLsKgIElmIHlvdSBzZWxlY3RlZCBhIHJlZ2lzdHJ5Ci1vbiB0aGUgV2ViIFNlcnZpY2UgUHVibGljYXRpb24gcGFnZSBvZiB0aGUgV2ViIFNlcnZpY2UgRXhwb3J0IHdpemFyZCwgeW91Ci13aWxsIHNlZSB0aGUgcmVnaXN0cnkgZGlzcGxheWVkIGluIHRoZSBOYXZpZ2F0b3IgcGFuZS48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiB4bWw6bGFuZz0iZW4tdXMiIGlkPSJkMGUxMjciPjxhIG5hbWU9ImQwZTEyNyI+PCEtLSAtLT48L2E+Ci08aDIgY2xhc3M9InRvcGljdGl0bGUyIj5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBmcm9tIHRoZSBSdW4gbWVudTwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBmcm9tIHRoZSBtYWluIG1lbnUsIGVuc3VyZQotdGhhdCB5b3UgYXJlIGluIHRoZSBKYXZhIEVFIHBlcnNwZWN0aXZlIGFuZCBjbGljayAgPHN0cm9uZz5SdW4gJmd0OyBMYXVuY2ggdGhlIFdlYgotU2VydmljZXMgRXhwbG9yZXI8L3N0cm9uZz4uIFRoZSBJbXBvcnQgd2l6YXJkIG9wZW5zLiBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyCi1vcGVucy7CoCBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIG9wZW5zIHdpdGhvdXQgYW55IHJlZ2lzdHJpZXMgZGlzcGxheWVkCi1pbiB0aGUgTmF2aWdhdG9yIHBhbmUuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgeG1sOmxhbmc9ImVuLXVzIiBpZD0iZDBlMTM0Ij48YSBuYW1lPSJkMGUxMzQiPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+TGF1bmNoaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgZnJvbSBhIFdTREwgZmlsZTwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBmcm9tIGEgV1NETCBmaWxlLCBzZWxlY3QgdGhlCi1XU0RMIGZpbGUgYW5kIHJpZ2h0LWNsaWNrIGFuZCBjaG9vc2UgIDxzdHJvbmc+V2ViIFNlcnZpY2VzICZndDsgVGVzdCB3aXRoIFdlYiBTZXJ2aWNlcwotRXhwbG9yZXI8L3N0cm9uZz4gb3IgIDxzdHJvbmc+UHVibGlzaCBXU0RMIGZpbGU8L3N0cm9uZz4uwqAgVGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlcgotb3BlbnMuIFRoZSAgPHN0cm9uZz5UZXN0IHdpdGggV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9zdHJvbmc+IGFjdGlvbiB3aWxsIHByZWxvYWQgdGhlCi1XU0RMIGluIHRoZSBXU0RMIHBhZ2UuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuaHRtbCI+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCI+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi9jb25jZXB0cy9jdWRkaS5odG1sIiB0aXRsZT0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgd2F5IHRvIHB1Ymxpc2ggYW5kIGRpc2NvdmVyIGluZm9ybWF0aW9uIGFib3V0IFdlYiBzZXJ2aWNlcy4iPlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0idHVkZGlleHAuaHRtbCIgdGl0bGU9IlRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIj5QdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXM8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRyZWcuaHRtbCIgdGl0bGU9IkluIG9yZGVyIHRvIHB1Ymxpc2ggeW91ciBidXNpbmVzcyBlbnRpdHkgYW5kIFdlYiBzZXJ2aWNlIHRvIGEgVURESSByZWdpc3RyeSwgeW91IG11c3QgZmlyc3QgcmVnaXN0ZXIgd2l0aCB0aGUgcmVnaXN0cnkgdGhhdCB5b3Ugd2FudCB0byB1c2UuIj5SZWdpc3RlcmluZyB3aXRoIGEgVURESSByZWdpc3RyeTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBSZWZlcmVuY2U8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9yZWYvcnVkZGkuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbmQgbG9nZ2VkIGluIHRvIHRoZSBVRERJIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UgaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwgYmluZGluZyBpbmZvcm1hdGlvbiwgYW5kIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljYXRpb25zIGZvciBzZXJ2aWNlcy4gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLiI+RGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLQotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHRlc3R3c2RsLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dGVzdHdzZGwuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJkMzQ4OS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dGVzdHdzZGwuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idHRlc3R3c2RsIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPlRlc3RpbmcgV1NETCBkb2N1bWVudHMgYW5kIFdlYiBzZXJ2aWNlcyB1c2luZyB0aGUgV1NETCBFeHBsb3JlcjwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPlVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyPC9zZWFyY2h0aXRsZT4KLTwvdGl0bGVhbHRzPgotPHNob3J0ZGVzYz5XU0RMIGRvY3VtZW50cyBhbGxvdyBkZXZlbG9wZXJzIHRvIGV4cG9zZSB0aGVpciBhcHBsaWNhdGlvbnMgYXMKLW5ldHdvcmstYWNjZXNzaWJsZSBzZXJ2aWNlcyBvbiB0aGUgSW50ZXJuZXQuIFRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIKLWFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zCi1vciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4gVGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBhbGxvd3MgeW91Ci10byBleHBsb3JlLCBpbXBvcnQsIGFuZCB0ZXN0IFdTREwgZG9jdW1lbnRzLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybSBrZXlyZWY9InR0ZXN0d3NkbHwxfFdTREx0ZXN0aW5nd2l0aHRoZVdlYlNlcnZpY2VzRXhwbG9yZXIiCi1zdGF0dXM9InVuY2hhbmdlZCI+V1NETCBmaWxlczxpbmRleHRlcm0+dGVzdGluZyB3aXRoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0ga2V5cmVmPSJ0dGVzdHdzZGx8MnxXZWJzZXJ2aWNlc3Rlc3Rpbmd3aXRodGhlV2ViU2VydmljZXNFeHBsb3JlciIKLXN0YXR1cz0idW5jaGFuZ2VkIj5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPnRlc3Rpbmcgd2l0aCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxwcmVyZXE+UHJlcmVxdWlzaXRlczogVG8gdXNlIHRoZSBXU0RMIEV4cGxvcmVyOjx1bD4KLTxsaT5Zb3UgbXVzdCBoYXZlIGEgdmFsaWQgVVJMIGZvciBhIFdTREwgZG9jdW1lbnQuPC9saT4KLTxsaT5Zb3UgbXVzdCBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjogPHhyZWYgaHJlZj0idHN0cnRleHAuZGl0YSI+TGF1bmNoCi10aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC94cmVmPjwvbGk+Ci08L3VsPjwvcHJlcmVxPgotPGNvbnRleHQ+PHA+VGhlIFdTREwgRXhwbG9yZXIgYWxsb3dzIHlvdSB0byBleHBsb3JlLCBhbmQgdGVzdCBXU0RMIGRvY3VtZW50cy4KLUZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGV4cGxvcmluZyBXU0RMIGRvY3VtZW50cyB1c2luZyB0aGUgV1NETCBFeHBsb3JlciwKLXJlZmVyIHRvIDx4cmVmIGhyZWY9InR3c2RsZXhwLmRpdGEiPlVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyPC94cmVmPiAuPC9wPjxwPlRvCi10ZXN0IGEgV2ViIHNlcnZpY2UgdXNpbmcgdGhlIFdTREwgRXhwbG9yZXI6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+VG8gbGF1bmNoIHRoZSBXU0RMIEV4cGxvcmVyLCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvY21kPgotPHN1YnN0ZXBzPgotPHN1YnN0ZXA+PGNtZD5JbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCBzd2l0Y2ggdG8gdGhlIFdTREwgRXhwbG9yZXIgYnkKLWNsaWNraW5nIHRoZSBpY29uIGluIHRoZSB1cHBlciByaWdodC1oYW5kIGNvcm5lciAgPGltYWdlIGFsdD0iSWNvbiB0byBsYXVuY2ggdGhlIFdTREwgRXhwbG9yZXIiCi1ocmVmPSIuLi9pbWFnZXMvd3NkbGljb24uZ2lmIj48L2ltYWdlPi4gPC9jbWQ+PC9zdWJzdGVwPgotPC9zdWJzdGVwcz4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+U2VsZWN0IFdTREwgTWFpbiBpbiB0aGUgTmF2aWdhdG9yIHBhbmUsIGVudGVyIG9yIGJyb3dzZSB0byBhbiBleGlzdGluZwotV1NETCBVUkwgaW4gdGhlIHJpZ2h0LWhhbmQgcGFuZSwgYW5kIGNsaWNrICA8Yj5HbzwvYj4uIEZvciB0aGlzIGV4YW1wbGUgdGhlCi1XU0RMIGJlaW5nIHVzZWQgaXMgYSBXZWIgU2VydmljZSB3aGljaCBjb252ZXJ0cyB0ZW1wZXJhdHVyZSBmcm9tIENlbHNpdXMgdG8KLUZhaHJlbmhlaXQgb3IgRmFocmVuaGVpdCB0byBDZWxzaXVzLiAgIDxpbWFnZSBhbHQ9IlNjcmVlbiBjYXB0dXJlIG9mIHRoZSBXU0RMIE1haW4gcGFuZSBvZiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIgotaHJlZj0iLi4vaW1hZ2VzL3dzZGx0ZW1wLmdpZiIgcGxhY2VtZW50PSJicmVhayI+PC9pbWFnZT4gIFRoZSBmb2xsb3dpbmcgbm9kZXMKLXdpbGwgYmUgYWRkZWQgdG8gdGhlIFdTREwgdHJlZTogPC9jbWQ+PGluZm8+PHVsPgotPGxpPlRoZSBXU0RMIG5vZGU6ICA8aW1hZ2UgYWx0PSJXU0RMIG5vZGUgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL3dzZGxub2RlLmdpZiI+Ci08L2ltYWdlPjwvbGk+Ci08bGk+VGhlIHNlcnZpY2Ugbm9kZSAod2hpY2ggcmVwcmVzZW50cyBhIHNlcnZpY2UgZWxlbWVudCB3aXRoaW4gdGhlIFdTREwgZmlsZSk6Ci0gPGltYWdlIGFsdD0iU2VydmljZSBub2RlIGljb24iIGhyZWY9Ii4uL2ltYWdlcy9zZXJ2bm9kZS5naWYiPjwvaW1hZ2U+PC9saT4KLTxsaT5UaGUgYmluZGluZyBub2RlOiAgPGltYWdlIGFsdD0iQmluZGluZyBub2RlIGljb24iIGhyZWY9Ii4uL2ltYWdlcy9iaW5kbm9kZS5naWYiPgotPC9pbWFnZT48L2xpPgotPGxpPlRoZSBvcGVyYXRpb24gbm9kZTogIDxpbWFnZSBhbHQ9Ik9wZXJhdGlvbiBub2RlIGljb24iIGhyZWY9Ii4uL2ltYWdlcy9vcG5vZGUuZ2lmIj4KLTwvaW1hZ2U+PC9saT4KLTwvdWw+PC9pbmZvPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIFdTREwgQmluZGluZyBEZXRhaWxzIHBhbmUsIGNsaWNrIHRoZSBvcGVyYXRpb24gKGluIHRoaXMKLWV4YW1wbGUgdGhlICA8c3lzdGVtb3V0cHV0PkN0b0Y8L3N5c3RlbW91dHB1dD4gb3BlcmF0aW9uKSB0byBkaXNwbGF5OiA8L2NtZD4KLTxpbmZvPjx1bD4KLTxsaT5BIGRyb3AtZG93biBsaXN0IHdpdGggdGhlIGVuZHBvaW50cyBhdmFpbGFibGUgZm9yIHRoaXMgb3BlcmF0aW9uPC9saT4KLTxsaT5GaWVsZHMgZm9yIGVhY2ggb2YgdGhlIHBhcmFtZXRlcnMgb2YgdGhpcyBvcGVyYXRpb24gKGluIHRoaXMgZXhhbXBsZSB0aGUKLSA8c3lzdGVtb3V0cHV0PnRlbXA8L3N5c3RlbW91dHB1dD4gcGFyYW1ldGVyKSBhbmQgdGhlIHR5cGUgb2YgaW5mb3JtYXRpb24KLXRoZSBwYXJhbWV0ZXIgaXMgbG9va2luZyBmb3IgKGluIHRoaXMgZXhhbXBsZSAgPHN5c3RlbW91dHB1dD50ZW1wPC9zeXN0ZW1vdXRwdXQ+IGlzCi1yZXF1ZXN0aW5nIGFuIGludGVnZXIpLjxpbWFnZSBhbHQ9Ikludm9rZSBhIFdTREwgT3BlcmF0aW9uIHBhbmUgb2YgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciIKLWhyZWY9Ii4uL2ltYWdlcy93c2Rsb3AuZ2lmIiBwbGFjZW1lbnQ9ImJyZWFrIj48L2ltYWdlPiAgVGhlIEZvcm0gdmlldyBhbGxvd3MKLXlvdSB0byBlbnRlciB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIFdlYiBzZXJ2aWNlIG9wZXJhdGlvbiBjYWxsLiBQYXJhbWV0ZXJzCi1uYW1lcyBhcmUgZGlzcGxheWVkIGFzIGxpbmtzIHdob3NlIGFjdGlvbiBpcyB0byBkaXNwbGF5IGEgZGlhbG9nIGRlc2NyaWJpbmcKLWVtYmVkZGVkIFhNTCBTY2hlbWEgRGVmaW5pdGlvbiBMYW5ndWFnZSAoWFNEKSBpbmZvcm1hdGlvbi4gTW9yZSBpbmZvcm1hdGlvbgotYWJvdXQgWFNEIGNhbiBiZSBmb3VuZCBoZXJlOiAgPHhyZWYgZm9ybWF0PSJodG1sIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3hzZC8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHNkLzwveHJlZj4gCi0gPGltYWdlIGFsdD0iU2NyZWVuIGNhcHR1cmUgb2YgdGhlIFhTRCBJbmZvcm1hdGlvbiBEaWFsb2ciIGhyZWY9Ii4uL2ltYWdlcy9zY2VuYXJpbzcuZ2lmIgotcGxhY2VtZW50PSJicmVhayI+PC9pbWFnZT4gJm5ic3A7PC9saT4KLTwvdWw+PC9pbmZvPjwvc3RlcD4KLTxzdGVwPjxjbWQ+RW50ZXIgeW91ciBpbnRlZ2VyIGFuZCBjbGljayAgPGI+R288L2I+LiBUaGUgcmVzdWx0IGlzIHJldHVybmVkCi1pbiB0aGUgU3RhdHVzIHBhbmUuICAgPGltYWdlIGFsdD0iU2NyZWVuIGNhcHR1cmUgb2YgYW4gaW52b2tlZCBXU0RMIG9wZXJhdGlvbiBzaG93aW5nIHRoZSByZXN1bHQgaW4gdGhlIFN0YXR1cyBwYW5lIgotaHJlZj0iLi4vaW1hZ2VzL3dzZGxvcHJldC5naWYiIHBsYWNlbWVudD0iYnJlYWsiPjwvaW1hZ2U+IDwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SWYgeW91IGFyZSB1c2luZyBTT0FQIGFzIHlvdXIgYmluZGluZyBtZXRob2QsIGNsaWNraW5nIFNvdXJjZSBvcgotRm9ybSBpbiB0aGUgdXBwZXIgcmlnaHQtaGFuZCBjb3JuZXIgd2lsbCB0b2dnbGUgdGhlIGRpc3BsYXkgYmV0d2VlbiB0aGUgRm9ybQotdmlldyAoc2hvd24gYWJvdmUpIGFuZCB0aGUgU291cmNlIHZpZXcsIHdoaWNoIGRpc3BsYXlzIHRoZSBTT0FQIG1lc3NhZ2UgaW4KLXRoZSBYTUwgZm9ybWF0LiBZb3UgY2FuIGFsc28gZW50ZXIgdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgaW4gdGhlIGZvcm0sIG9ubHkKLWluIFhNTCBmb3JtYXQgKHRoaXMgaXMgc3VnZ2VzdGVkIGZvciBhZHZhbmNlZCB1c2VycyBvbmx5KS4gVGhlIEV4cGxvcmVyIGRvZXMKLXZhbGlkYXRlIHRoZSBYTUwgaWYgeW91IG1vZGlmeSBpdCwgYnV0IG5vdCB0aGUgcGFyYW1ldGVyIHZhbHVlcyB5b3UgZW50ZXIuCi0gPGltYWdlIGFsdD0iU291cmNlIHZpZXcgb2YgdGhlIEludm9rZSBhIFdTREwgT3BlcmF0aW9uIHBhbmUuIiBocmVmPSIuLi9pbWFnZXMvd3NkbG9wcmV0eC5naWYiCi1wbGFjZW1lbnQ9ImJyZWFrIj48L2ltYWdlPjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SWYgeW91IGFyZSB1c2luZyBTT0FQIGFzIHlvdXIgYmluZGluZyB0eXBlLCB5b3Ugd2lsbCBhbHNvIGhhdmUKLXRoZSBvcHRpb24gb2YgdG9nZ2xpbmcgdGhlIFN0YXR1cyBwYW5lIGJldHdlZW4gdGhlIFNvdXJjZSBhbmQgRm9ybSB2aWV3cy4KLVRoZSBTb3VyY2UgdmlldyBzaG93cyB0aGUgU09BUCByZXF1ZXN0IGFuZCByZXNwb25zZSBlbnZlbG9wZXMsIGluY2x1ZGluZyB0aGUKLXBhcmFtZXRlcnMgeW91IGhhdmUgZW50ZXJlZCB0byB0ZXN0IHRoZSBzZXJ2aWNlIGFuZCB0aGUgcmV0dXJuZWQgdmFsdWUuICAgPGltYWdlCi1hbHQ9IlNjcmVlbiBjYXB0dXJlIG9mIHRoZSBzb3VyY2UgdmlldyBvZiB0aGUgU09BUCByZXF1ZXN0IGFuZCByZXNwb25zZSBlbnZlbG9wZXMiCi1ocmVmPSIuLi9pbWFnZXMvd3NkbHN0YXR4LmdpZiIgcGxhY2VtZW50PSJicmVhayI+PC9pbWFnZT4gPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0idHVkZGlleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHN0cnRleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PiBEZXZlbG9waW5nIFdlYiBzZXJ2aWNlczwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R0ZXN0d3NkbC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHRlc3R3c2RsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MjFiOGIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHRlc3R3c2RsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDYiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iVGVzdGluZyBXU0RMIGRvY3VtZW50cyBhbmQgV2ViIHNlcnZpY2VzIHVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IldTREwgZG9jdW1lbnRzIGFsbG93IGRldmVsb3BlcnMgdG8gZXhwb3NlIHRoZWlyIGFwcGxpY2F0aW9ucyBhcyBuZXR3b3JrLWFjY2Vzc2libGUgc2VydmljZXMgb24gdGhlIEludGVybmV0LiBUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGFsbG93cyB5b3UgdG8gZXhwbG9yZSwgaW1wb3J0LCBhbmQgdGVzdCBXU0RMIGRvY3VtZW50cy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iV1NETCBkb2N1bWVudHMgYWxsb3cgZGV2ZWxvcGVycyB0byBleHBvc2UgdGhlaXIgYXBwbGljYXRpb25zIGFzIG5ldHdvcmstYWNjZXNzaWJsZSBzZXJ2aWNlcyBvbiB0aGUgSW50ZXJuZXQuIFRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIFRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgYWxsb3dzIHlvdSB0byBleHBsb3JlLCBpbXBvcnQsIGFuZCB0ZXN0IFdTREwgZG9jdW1lbnRzLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldTREwsIHRlc3Rpbmcgd2l0aCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCBXZWIgc2VydmljZXMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXU0RMLCB0ZXN0aW5nIHdpdGggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciwgV2ViIHNlcnZpY2VzIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idHVkZGlleHAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idHN0cnRleHAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0dGVzdHdzZGwiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5Vc2luZyB0aGUgV1NETCBFeHBsb3JlcjwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0idHRlc3R3c2RsIj48YSBuYW1lPSJ0dGVzdHdzZGwiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPlRlc3RpbmcgV1NETCBkb2N1bWVudHMgYW5kIFdlYiBzZXJ2aWNlcyB1c2luZyB0aGUgV1NETCBFeHBsb3JlcjwvaDE+Ci0KLQotCi0KLTxkaXY+PHA+V1NETCBkb2N1bWVudHMgYWxsb3cgZGV2ZWxvcGVycyB0byBleHBvc2UgdGhlaXIgYXBwbGljYXRpb25zIGFzCi1uZXR3b3JrLWFjY2Vzc2libGUgc2VydmljZXMgb24gdGhlIEludGVybmV0LiBUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyCi1hcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucwotb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIFRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgYWxsb3dzIHlvdQotdG8gZXhwbG9yZSwgaW1wb3J0LCBhbmQgdGVzdCBXU0RMIGRvY3VtZW50cy48L3A+Ci0KLTxkaXYgY2xhc3M9InAiPlByZXJlcXVpc2l0ZXM6IFRvIHVzZSB0aGUgV1NETCBFeHBsb3Jlcjo8dWw+Ci08bGk+WW91IG11c3QgaGF2ZSBhIHZhbGlkIFVSTCBmb3IgYSBXU0RMIGRvY3VtZW50LjwvbGk+Ci0KLTxsaT5Zb3UgbXVzdCBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjogPGEgaHJlZj0idHN0cnRleHAuaHRtbCI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+PC9saT4KLQotPC91bD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UaGUgV1NETCBFeHBsb3JlciBhbGxvd3MgeW91IHRvIGV4cGxvcmUsIGFuZCB0ZXN0IFdTREwgZG9jdW1lbnRzLgotRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZXhwbG9yaW5nIFdTREwgZG9jdW1lbnRzIHVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyLAotcmVmZXIgdG8gPGEgaHJlZj0idHdzZGxleHAuaHRtbCI+VXNpbmcgdGhlIFdTREwgRXhwbG9yZXI8L2E+IC48L3A+Ci08cD5UbwotdGVzdCBhIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPlRvIGxhdW5jaCB0aGUgV1NETCBFeHBsb3JlciwgY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L3NwYW4+Ci08b2wgdHlwZT0iYSI+Ci08bGk+PHNwYW4+SW4gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlciwgc3dpdGNoIHRvIHRoZSBXU0RMIEV4cGxvcmVyIGJ5Ci1jbGlja2luZyB0aGUgaWNvbiBpbiB0aGUgdXBwZXIgcmlnaHQtaGFuZCBjb3JuZXIgIDxpbWcgc3JjPSIuLi9pbWFnZXMvd3NkbGljb24uZ2lmIiBhbHQ9Ikljb24gdG8gbGF1bmNoIHRoZSBXU0RMIEV4cGxvcmVyIiAvPi4gPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+U2VsZWN0IFdTREwgTWFpbiBpbiB0aGUgTmF2aWdhdG9yIHBhbmUsIGVudGVyIG9yIGJyb3dzZSB0byBhbiBleGlzdGluZwotV1NETCBVUkwgaW4gdGhlIHJpZ2h0LWhhbmQgcGFuZSwgYW5kIGNsaWNrICA8c3Ryb25nPkdvPC9zdHJvbmc+LiBGb3IgdGhpcyBleGFtcGxlIHRoZQotV1NETCBiZWluZyB1c2VkIGlzIGEgV2ViIFNlcnZpY2Ugd2hpY2ggY29udmVydHMgdGVtcGVyYXR1cmUgZnJvbSBDZWxzaXVzIHRvCi1GYWhyZW5oZWl0IG9yIEZhaHJlbmhlaXQgdG8gQ2Vsc2l1cy4gICA8YnIgLz48aW1nIHNyYz0iLi4vaW1hZ2VzL3dzZGx0ZW1wLmdpZiIgYWx0PSJTY3JlZW4gY2FwdHVyZSBvZiB0aGUgV1NETCBNYWluIHBhbmUgb2YgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciIgLz48YnIgLz4gIFRoZSBmb2xsb3dpbmcgbm9kZXMKLXdpbGwgYmUgYWRkZWQgdG8gdGhlIFdTREwgdHJlZTogPC9zcGFuPiA8dWw+Ci08bGk+VGhlIFdTREwgbm9kZTogIDxpbWcgc3JjPSIuLi9pbWFnZXMvd3NkbG5vZGUuZ2lmIiBhbHQ9IldTREwgbm9kZSBpY29uIiAvPjwvbGk+Ci0KLTxsaT5UaGUgc2VydmljZSBub2RlICh3aGljaCByZXByZXNlbnRzIGEgc2VydmljZSBlbGVtZW50IHdpdGhpbiB0aGUgV1NETCBmaWxlKToKLSA8aW1nIHNyYz0iLi4vaW1hZ2VzL3NlcnZub2RlLmdpZiIgYWx0PSJTZXJ2aWNlIG5vZGUgaWNvbiIgLz48L2xpPgotCi08bGk+VGhlIGJpbmRpbmcgbm9kZTogIDxpbWcgc3JjPSIuLi9pbWFnZXMvYmluZG5vZGUuZ2lmIiBhbHQ9IkJpbmRpbmcgbm9kZSBpY29uIiAvPjwvbGk+Ci0KLTxsaT5UaGUgb3BlcmF0aW9uIG5vZGU6ICA8aW1nIHNyYz0iLi4vaW1hZ2VzL29wbm9kZS5naWYiIGFsdD0iT3BlcmF0aW9uIG5vZGUgaWNvbiIgLz48L2xpPgotCi08L3VsPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgV1NETCBCaW5kaW5nIERldGFpbHMgcGFuZSwgY2xpY2sgdGhlIG9wZXJhdGlvbiAoaW4gdGhpcwotZXhhbXBsZSB0aGUgIDx0dCBjbGFzcz0ic3lzb3V0Ij5DdG9GPC90dD4gb3BlcmF0aW9uKSB0byBkaXNwbGF5OiA8L3NwYW4+Ci0gPHVsPgotPGxpPkEgZHJvcC1kb3duIGxpc3Qgd2l0aCB0aGUgZW5kcG9pbnRzIGF2YWlsYWJsZSBmb3IgdGhpcyBvcGVyYXRpb248L2xpPgotCi08bGk+RmllbGRzIGZvciBlYWNoIG9mIHRoZSBwYXJhbWV0ZXJzIG9mIHRoaXMgb3BlcmF0aW9uIChpbiB0aGlzIGV4YW1wbGUgdGhlCi0gPHR0IGNsYXNzPSJzeXNvdXQiPnRlbXA8L3R0PiBwYXJhbWV0ZXIpIGFuZCB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbgotdGhlIHBhcmFtZXRlciBpcyBsb29raW5nIGZvciAoaW4gdGhpcyBleGFtcGxlICA8dHQgY2xhc3M9InN5c291dCI+dGVtcDwvdHQ+IGlzCi1yZXF1ZXN0aW5nIGFuIGludGVnZXIpLjxiciAvPjxpbWcgc3JjPSIuLi9pbWFnZXMvd3NkbG9wLmdpZiIgYWx0PSJJbnZva2UgYSBXU0RMIE9wZXJhdGlvbiBwYW5lIG9mIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiIC8+PGJyIC8+ICBUaGUgRm9ybSB2aWV3IGFsbG93cwoteW91IHRvIGVudGVyIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgV2ViIHNlcnZpY2Ugb3BlcmF0aW9uIGNhbGwuIFBhcmFtZXRlcnMKLW5hbWVzIGFyZSBkaXNwbGF5ZWQgYXMgbGlua3Mgd2hvc2UgYWN0aW9uIGlzIHRvIGRpc3BsYXkgYSBkaWFsb2cgZGVzY3JpYmluZwotZW1iZWRkZWQgWE1MIFNjaGVtYSBEZWZpbml0aW9uIExhbmd1YWdlIChYU0QpIGluZm9ybWF0aW9uLiBNb3JlIGluZm9ybWF0aW9uCi1hYm91dCBYU0QgY2FuIGJlIGZvdW5kIGhlcmU6ICA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3hzZC8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHNkLzwvYT4gCi0gPGJyIC8+PGltZyBzcmM9Ii4uL2ltYWdlcy9zY2VuYXJpbzcuZ2lmIiBhbHQ9IlNjcmVlbiBjYXB0dXJlIG9mIHRoZSBYU0QgSW5mb3JtYXRpb24gRGlhbG9nIiAvPjxiciAvPiDCoDwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkVudGVyIHlvdXIgaW50ZWdlciBhbmQgY2xpY2sgIDxzdHJvbmc+R288L3N0cm9uZz4uIFRoZSByZXN1bHQgaXMgcmV0dXJuZWQKLWluIHRoZSBTdGF0dXMgcGFuZS4gICA8YnIgLz48aW1nIHNyYz0iLi4vaW1hZ2VzL3dzZGxvcHJldC5naWYiIGFsdD0iU2NyZWVuIGNhcHR1cmUgb2YgYW4gaW52b2tlZCBXU0RMIG9wZXJhdGlvbiBzaG93aW5nIHRoZSByZXN1bHQgaW4gdGhlIFN0YXR1cyBwYW5lIiAvPjxiciAvPiDCoDwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPklmIHlvdSBhcmUgdXNpbmcgU09BUCBhcyB5b3VyIGJpbmRpbmcgbWV0aG9kLCBjbGlja2luZyBTb3VyY2Ugb3IKLUZvcm0gaW4gdGhlIHVwcGVyIHJpZ2h0LWhhbmQgY29ybmVyIHdpbGwgdG9nZ2xlIHRoZSBkaXNwbGF5IGJldHdlZW4gdGhlIEZvcm0KLXZpZXcgKHNob3duIGFib3ZlKSBhbmQgdGhlIFNvdXJjZSB2aWV3LCB3aGljaCBkaXNwbGF5cyB0aGUgU09BUCBtZXNzYWdlIGluCi10aGUgWE1MIGZvcm1hdC4gWW91IGNhbiBhbHNvIGVudGVyIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIGluIHRoZSBmb3JtLCBvbmx5Ci1pbiBYTUwgZm9ybWF0ICh0aGlzIGlzIHN1Z2dlc3RlZCBmb3IgYWR2YW5jZWQgdXNlcnMgb25seSkuIFRoZSBFeHBsb3JlciBkb2VzCi12YWxpZGF0ZSB0aGUgWE1MIGlmIHlvdSBtb2RpZnkgaXQsIGJ1dCBub3QgdGhlIHBhcmFtZXRlciB2YWx1ZXMgeW91IGVudGVyLgotIDxiciAvPjxpbWcgc3JjPSIuLi9pbWFnZXMvd3NkbG9wcmV0eC5naWYiIGFsdD0iU291cmNlIHZpZXcgb2YgdGhlIEludm9rZSBhIFdTREwgT3BlcmF0aW9uIHBhbmUuIiAvPjxiciAvPjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPklmIHlvdSBhcmUgdXNpbmcgU09BUCBhcyB5b3VyIGJpbmRpbmcgdHlwZSwgeW91IHdpbGwgYWxzbyBoYXZlCi10aGUgb3B0aW9uIG9mIHRvZ2dsaW5nIHRoZSBTdGF0dXMgcGFuZSBiZXR3ZWVuIHRoZSBTb3VyY2UgYW5kIEZvcm0gdmlld3MuCi1UaGUgU291cmNlIHZpZXcgc2hvd3MgdGhlIFNPQVAgcmVxdWVzdCBhbmQgcmVzcG9uc2UgZW52ZWxvcGVzLCBpbmNsdWRpbmcgdGhlCi1wYXJhbWV0ZXJzIHlvdSBoYXZlIGVudGVyZWQgdG8gdGVzdCB0aGUgc2VydmljZSBhbmQgdGhlIHJldHVybmVkIHZhbHVlLiAgIDxiciAvPjxpbWcgc3JjPSIuLi9pbWFnZXMvd3NkbHN0YXR4LmdpZiIgYWx0PSJTY3JlZW4gY2FwdHVyZSBvZiB0aGUgc291cmNlIHZpZXcgb2YgdGhlIFNPQVAgcmVxdWVzdCBhbmQgcmVzcG9uc2UgZW52ZWxvcGVzIiAvPjxiciAvPiA8L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgdGl0bGU9IlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InR1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0c3RydGV4cC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBhbGxvd3MgeW91IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIHNldmVyYWwgd2F5cy4iPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5odG1sIj4gRGV2ZWxvcGluZyBXZWIgc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1ZGRpZXhwLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dWRkaWV4cC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDhiZDM4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1ZGRpZXhwLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNSwgdi40MDAyLS0+Ci08IURPQ1RZUEUgdGFzayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBUYXNrLy9FTiIKLSAidGFzay5kdGQiPgotPHRhc2sgaWQ9InR1ZGRpZXhwIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllcyB3aXRoIHRoZSBXZWIgU2VydmljZXMKLUV4cGxvcmVyPC9zZWFyY2h0aXRsZT4KLTwvdGl0bGVhbHRzPgotPHNob3J0ZGVzYz5UaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMKLWFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4gPC9zaG9ydGRlc2M+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPldlYiBTZXJ2aWNlczxpbmRleHRlcm0+cHVibGlzaGluZzxpbmRleHRlcm0+b3ZlcnZpZXc8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+YnVzaW5lc3MgZW50aXRpZXM8aW5kZXh0ZXJtPnB1Ymxpc2hpbmc8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V2ViIFNlcnZpY2VzIEV4cGxvcmVyPGluZGV4dGVybT5wdWJsaXNoaW5nIFdlYiBzZXJ2aWNlczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5VRERJIGVuYWJsZXMgdGhlIGRpc2NvdmVyeSBvZiBXZWIgc2VydmljZXMgYnkgcHJvdmlkaW5nIGEgZGlzdHJpYnV0ZWQKLXJlZ2lzdHJ5IG9mIGJ1c2luZXNzZXMgYW5kIHRoZWlyIHNlcnZpY2UgZGVzY3JpcHRpb25zLCBpbXBsZW1lbnRlZCBpbiBhIGNvbW1vbgotWE1MIGZvcm1hdC4mbmJzcDsgSW4gb3JkZXIgZm9yIGEgc2VydmljZSByZXF1ZXN0b3IgdG8gZGlzY292ZXIgYSBzZXJ2aWNlLAotYSBzZXJ2aWNlIHByb3ZpZGVyIG11c3QgZmlyc3QgcHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eSBhbmQgYXQgbGVhc3Qgb25lIGJ1c2luZXNzCi1zZXJ2aWNlLCBhbmQgc2VydmljZSBpbnRlcmZhY2UgaW4gYSBVRERJIHJlZ2lzdHJ5LiZuYnNwOyBUaGUgV2ViIFNlcnZpY2VzCi1FeHBsb3JlciBpcyBhIFdlYiBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnRzIHRoZSBwdWJsaWNhdGlvbiwgZGlzY292ZXJ5LCBhbmQKLW1haW50ZW5hbmNlIG9mIGJ1c2luZXNzIGVudGl0aWVzLCBidXNpbmVzcyBzZXJ2aWNlcywgYW5kIHNlcnZpY2UgaW50ZXJmYWNlcy48L3A+PHA+V1NJTAotZW5hYmxlcyB0aGUgZGlzY292ZXJ5IG9mIFdlYiBzZXJ2aWNlcyBieSBkZWZpbmluZyBhIGRpc3RyaWJ1dGVkIHNlcnZpY2UgZGlzY292ZXJ5Ci1tZXRob2QgdGhhdCBzdXBwbGllcyByZWZlcmVuY2VzIHRvIHNlcnZpY2UgZGVzY3JpcHRpb25zIGF0IHRoZSBzZXJ2aWNlIHByb3ZpZGVyJ3MKLXBvaW50LW9mLW9mZmVyaW5nLCBieSBzcGVjaWZ5aW5nIGhvdyB0byBpbnNwZWN0IGEgV2ViIHNpdGUgZm9yIGF2YWlsYWJsZSBXZWIKLXNlcnZpY2VzLiZuYnNwOyBUaGUgV1NJTCBzcGVjaWZpY2F0aW9uIGRlZmluZXMgdGhlIGxvY2F0aW9ucyBvbiBhIFdlYiBzaXRlCi13aGVyZSB5b3UgY2FuIGxvb2sgZm9yIFdlYiBzZXJ2aWNlIGRlc2NyaXB0aW9ucy4mbmJzcDtTaW5jZSBXU0lMIGZvY3VzZXMgb24KLWRpc3RyaWJ1dGVkIHNlcnZpY2UgZGlzY292ZXJ5LCB0aGUgV1NJTCBzcGVjaWZpY2F0aW9uIGNvbXBsZW1lbnRzIFVEREkgYnkKLWZhY2lsaXRhdGluZyB0aGUgZGlzY292ZXJ5IG9mIHNlcnZpY2VzIHRoYXQgYXJlIGF2YWlsYWJsZSBvbiBXZWIgc2l0ZXMgdGhhdAotbWF5IG5vdCBiZSBsaXN0ZWQgeWV0IGluIGEgVURESSByZWdpc3RyeS4gVGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBhbGxvd3MKLXlvdSB0byBnZW5lcmF0ZSBhbmQgZXhwbG9yZSBXU0lMIGRvY3VtZW50cy48L3A+PHA+VGhlIGZhdm9yaXRlcyBwYWdlIG9mIHRoZQotV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGFsbG93cyB5b3UgdG8gc3RvcmUgdGhlIGxvY2F0aW9uIG9mIFVEREkgcmVnaXN0cmllcywKLWJ1c2luZXNzIGVudGl0aWVzLCBXZWIgc2VydmljZXMsIHNlcnZpY2UgaW50ZXJmYWNlcywgYXMgd2VsbCBhcyBXU0lMIGFuZCBXU0RMCi1kb2N1bWVudHMuPC9wPjxwPlVzZSB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHRvIGRvIGFueSBvZiB0aGUgZm9sbG93aW5nCi10YXNrczo8L3A+PHVsPgotPGxpPiA8eHJlZiBocmVmPSJ0YWRkcmVnLmRpdGEiPkFkZCBhIHJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L3hyZWY+IDwvbGk+Ci08bGk+IDx4cmVmIGhyZWY9InRia21yay5kaXRhIj5BZGRpbmcgYSByZWdpc3RyeSwgYnVzaW5lc3MgZW50aXR5LCBidXNpbmVzcwotc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsIFdTSUwsIG9yIFdTREwgc2VydmljZSB0byBGYXZvcml0ZXM8L3hyZWY+IDwvbGk+Ci08bGk+PHhyZWYgaHJlZj0idGxvZ2V4cC5kaXRhIj48L3hyZWY+PC9saT4KLTxsaT4gPHhyZWYgaHJlZj0idGRpc2Nvdi5kaXRhIj5EaXNjb3ZlciBhIFdlYiBzZXJ2aWNlPC94cmVmPiA8L2xpPgotPGxpPiA8eHJlZiBocmVmPSJ0cHViZW50LmRpdGEiPlB1Ymxpc2ggYSBidXNpbmVzcyBlbnRpdHkgdG8gYSByZWdpc3RyeTwveHJlZj4gPC9saT4KLTxsaT4gPHhyZWYgaHJlZj0idHB1Ymxpc2guZGl0YSI+UHVibGlzaCBhIGJ1c2luZXNzIHNlcnZpY2UgdG8gYSByZWdpc3RyeTwveHJlZj4gPC9saT4KLTxsaT4gPHhyZWYgaHJlZj0idHVucHViLmRpdGEiPlJlbW92ZSBhIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwKLW9yIHNlcnZpY2UgaW50ZXJmYWNlIGZyb20gYSByZWdpc3RyeTwveHJlZj4gPC9saT4KLTxsaT4gPHhyZWYgaHJlZj0idHVwZGF0ZS5kaXRhIj5VcGRhdGUgYSBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsCi1vciBzZXJ2aWNlIGludGVyZmFjZTwveHJlZj4gPC9saT4KLTxsaT4gPHhyZWYgaHJlZj0idGJ1c3Byb2ouZGl0YSI+TWFuYWdlIHJlZmVyZW5jZWQgc2VydmljZXM8L3hyZWY+IDwvbGk+Ci08bGk+IDx4cmVmIGhyZWY9InRhc3NlcnQuZGl0YSI+TWFuYWdlIHB1Ymxpc2hlciBhc3NlcnRpb25zPC94cmVmPiA8L2xpPgotPC91bD48cD5QcmVyZXF1aXNpdGVzOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHRvIHBlcmZvcm0gYW55IG9mCi10aGVzZSBmdW5jdGlvbnMsIHlvdSBtdXN0ICA8eHJlZiBocmVmPSJ0cmVnLmRpdGEiPnJlZ2lzdGVyIHdpdGggYSBwdWJsaWMgcmVnaXN0cnk8L3hyZWY+LiZuYnNwOwotVGhlcmUgYXJlIG1hbnkgZGlmZmVyZW50IHJlZ2lzdHJpZXMgd2l0aCB3aGljaCB5b3UgY2FuIHJlZ2lzdGVyLjwvY21kPjxpbmZvPjwvaW5mbz4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+RW5zdXJlIHRoYXQgeW91IGFyZSB1c2luZyBhIHN1cHBvcnRlZCBXZWIgYnJvd3Nlci48L2NtZD48aW5mbz5UaGUKLWZvbGxvd2luZyBXZWIgYnJvd3NlcnMgYW5kIHZlcnNpb25zIGFyZSBzdXBwb3J0ZWQ6PHVsPgotPGxpPkludGVybmV0IEV4cGxvcmVyOiA2LjAgYW5kIHVwPC9saT4KLTxsaT5Nb3ppbGxhOiAxLjIuMSBhbmQgdXA8L2xpPgotPC91bD48L2luZm8+PC9zdGVwPgotPHN0ZXA+PGNtZD4gPHhyZWYgaHJlZj0idHN0cnRleHAuZGl0YSI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L3hyZWY+LjwvY21kPgotPC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+PHA+PGI+S25vd24gbGltaXRhdGlvbnMgb2YgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlcjo8L2I+PHVsPgotPGxpPlRoZSB0YXhvbm9teSBjYXRlZ29yaWVzIGluIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgYXJlIG5vdCB0cmFuc2xhdGVkCi1zaW5jZSB0aGV5IG11c3QgbWF0Y2ggdGhvc2UgaW4gdGhlIHN0YW5kYXJkcyBhZGhlcmVkIHRvIGJ5IFVEREkgKElTTywgVU5TUFNDCi03LjMsIE5BSUNTKS48L2xpPgotPGxpPlRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgd2lsbCBsYXVuY2ggd2l0aG91dCB0aGUgYnJvd3NlciB0b29sYmFyIHdoaWNoCi1zaG93cywgYW1vbmdzdCBvdGhlciB0aGluZ3MsIHRoZSBVUkwgdG8gdGhlIFdlYiBhcHBsaWNhdGlvbi4gVGhpcyBVUkwgc2hvdWxkCi1vbmx5IGJlIHVzZWQgYnkgdXNlcnMgd2l0aCBhY2Nlc3NpYmlsaXR5IG5lZWRzLiBUaGUgVVJMIHRvIHRoZSBXZWIgU2VydmljZXMKLUV4cGxvcmVyIFdlYiBhcHBsaWNhdGlvbiBjYW4gYmUgb2J0YWluZWQgdGhyb3VnaCB0aGUgZm9sbG93aW5nIHN0ZXBzOjxvbD4KLTxsaT5Gcm9tIHRoZSBXaW5kb3cgbWVudSwgc2VsZWN0IFByZWZlcmVuY2VzLjwvbGk+Ci08bGk+SW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZywgc2VsZWN0IDx1aWNvbnRyb2w+V2ViIEJyb3dzZXI8L3VpY29udHJvbD4gaW4KLXRoZSBsZWZ0IHBhbmUuPC9saT4KLTxsaT5PbiB0aGUgcmlnaHQsIHNlbGVjdCA8dWljb250cm9sPlVzZSBleHRlcm5hbCBXZWIgQnJvd3NlcjwvdWljb250cm9sPi48L2xpPgotPGxpPkluIHRoZSA8dWljb250cm9sPkxvY2F0aW9uOiB0ZXh0PC91aWNvbnRyb2w+IGZpZWxkLCBicm93c2Ugb3IgdHlwZSBpbgotdGhlIGZ1bGwgcGF0aCBvZiB0aGUgSW50ZXJuZXQgRXhwbG9yZXIgZXhlY3V0YWJsZS4gKGZvciBleGFtcGxlLCBDOlxQcm9ncmFtCi1GaWxlc1xJbnRlcm5ldCBFeHBsb3JlclxpZXhwbG9yZS5leGUpLjwvbGk+Ci08bGk+Q2xpY2sgPHVpY29udHJvbD5BcHBseTwvdWljb250cm9sPiBmb2xsb3dlZCBieSA8dWljb250cm9sPk9LPC91aWNvbnRyb2w+LjwvbGk+Ci08L29sPiBOb3RlIHRoYXQgdGhpcyBwcmVmZXJlbmNlIHdpbGwgbm93IGFwcGx5IHRvIGFueSBicm93c2VyIHdpbmRvd3MgdGhhdAotYXJlIGxhdW5jaGVkIGJ5IHRoZSB1c2VyIG9yIGJ5IHRoZSB0b29scyB0aGVtc2VsdmVzIChzdWNoIGFzIHRoZSBVbml2ZXJzYWwKLVRlc3QgQ2xpZW50KS4gIFRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgd2lsbCBub3cgbGF1bmNoIGluIGFuIGV4dGVybmFsIGJyb3dzZXIKLWFuZCBpdHMgVVJMIHNob3VsZCBiZSBpbiB0aGUgQWRkcmVzcyBmaWVsZC4gVGhpcyBjYW4gdGhlbiBiZSBwYXN0ZWQgb3Igb3BlbmVkCi11c2luZyBhbSBhY2Nlc3NpYmlsaXR5IGFzc2lzdGluZyBicm93c2VyLjwvbGk+Ci08bGk+V2hlbiBwZXJmb3JtaW5nIGFuIGFkdmFuY2VkIGZpbmQgb3IgcHVibGlzaCBpbiB0aGUgVURESSBwYWdlIG9mIHRoZSBXZWIKLVNlcnZpY2VzIEV4cGxvcmVyLCB0aGUgaXRlbXMgaW4gdGhlIGRyb3AgZG93biBsaXN0IGZvciBwaWNraW5nIGEgbGFuZ3VhZ2UKLWluIGNvbmp1bmN0aW9uIHdpdGggYSBuYW1lIG9yIGRlc2NyaXB0aW9uIGlzIHNvcnRlZCAgYWNjb3JkaW5nIHRvIHRoZSBvcGVyYXRpbmcKLXN5c3RlbSdzIGxvY2FsZSBzZXR0aW5ncy4gT24gPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9Ik1pY3Jvc29mdCBDb3Jwb3JhdGlvbiIKLXRtdHlwZT0icmVnIiB0cmFkZW1hcms9IldpbmRvd3MiPldpbmRvd3M8L3RtPiwgdGhpcyBvcmRlciBtYXkgYmUgbWFuYWdlZCB0aHJvdWdoCi10aGUgQ29udHJvbCBQYW5lbC4gVG8gZG8gdGhpczo8b2w+Ci08bGk+T3BlbiB0aGUgQ29udHJvbCBQYW5lbC48L2xpPgotPGxpPkxhdW5jaCB0aGUgUmVnaW9uYWwgT3B0aW9ucyBjb250cm9sIHBhbmVsIGFwcGxldC48L2xpPgotPGxpPkluIHRoZSBHZW5lcmFsIHRhYiBvZiB0aGUgcmVzdWx0aW5nIGRpYWxvZywgdGhlcmUgbWF5IGJlIGEgIlNvcnRpbmcgb3JkZXIiCi1kcm9wLWRvd24gbGlzdC4gSWYgc28sIHBpY2sgYSBzb3J0aW5nIG9yZGVyIGFuZCB0aGVuIGNsaWNrIDx1aWNvbnRyb2w+QXBwbHk8L3VpY29udHJvbD4gZm9sbG93ZWQKLWJ5IDx1aWNvbnRyb2w+T0s8L3VpY29udHJvbD4uPC9saT4KLTxsaT5JbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCB0aGUgbmV3IHNvcnRpbmcgb3JkZXIgY29tZXMgaW50byBlZmZlY3QKLW9uY2UgdGhlIHBhZ2UgcmVsb2Fkcy4gVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IHByZXNzaW5nIHRoZSBiYWNrIGFycm93Ci1mb2xsb3dlZCBieSB0aGUgZm9yd2FyZCBhcnJvdyBpbiB0aGUgbWFpbiB0b29sYmFyLjwvbGk+Ci08L29sPk5vdGU6IFRoZSBpbnN0cnVjdGlvbnMgYWJvdmUgYXBwbHkgdG8gPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9Ik1pY3Jvc29mdCBDb3Jwb3JhdGlvbiIKLXRtdHlwZT0icmVnIiB0cmFkZW1hcms9IldpbmRvd3MiPldpbmRvd3M8L3RtPiAyMDAwLiBPbiA8dG0gdG1jbGFzcz0ic3BlY2lhbCIKLXRtb3duZXI9Ik1pY3Jvc29mdCBDb3Jwb3JhdGlvbiIgdG10eXBlPSJyZWciIHRyYWRlbWFyaz0iV2luZG93cyI+V2luZG93czwvdG0+IFhQLAotdGhlIHRhYiBtZW50aW9uZWQgaW4gc3RlcCAzIGlzIGNhbGxlZCAiUmVnaW9uYWwgT3B0aW9ucyIuIEJlc2lkZSB0aGUgbGFuZ3VhZ2UKLWRyb3AtZG93biwgdGhlcmUgaXMgYSA8dWljb250cm9sPkN1c3RvbWl6ZTwvdWljb250cm9sPiBidXR0b24uIFdoZW4gdGhpcyBpcwotY2xpY2tlZCwgYSBuZXcgZGlhbG9nIGFwcGVhcnMuIEEgc29ydGluZyB0YWIgd2lsbCBhbGxvdyB1c2VycyB0byBwaWNrIHRoZQotc29ydGluZyBtZXRob2QgaWYgYXBwbGljYWJsZS48L2xpPgotPC91bD48L3A+PC9yZXN1bHQ+Ci08L3Rhc2tib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD4gVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jdWRkaS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InR1ZGRpZXhwLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRzdHJ0ZXhwLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InR3c2RsZXhwLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci90YXNrcy90b3ZlcndzLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD4gRGV2ZWxvcGluZyBXZWIgc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgUmVmZXJlbmNlPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL3JlZi9ydWRkaS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVkZGlleHAuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1ZGRpZXhwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNDU0ZTkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVkZGlleHAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJQdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXMiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgU2VydmljZXMsIHB1Ymxpc2hpbmcsIG92ZXJ2aWV3LCBidXNpbmVzcyBlbnRpdGllcywgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCBwdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBTZXJ2aWNlcywgcHVibGlzaGluZywgb3ZlcnZpZXcsIGJ1c2luZXNzIGVudGl0aWVzLCBXZWIgU2VydmljZXMgRXhwbG9yZXIsIHB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHN0cnRleHAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHJlZy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90bG9nZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3RhZGRyZWcuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHB1YmVudC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90cHVibGlzaC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90dXBkYXRlLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3R1bnB1Yi5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90YnVzcHJvai5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90YXNzZXJ0Lmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3Ria21yay5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jdWRkaS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0dWRkaWV4cC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0c3RydGV4cC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0d3NkbGV4cC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9yZWYvcnVkZGkuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0dWRkaWV4cCIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllcyB3aXRoIHRoZSBXZWIgU2VydmljZXMKLUV4cGxvcmVyPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0dWRkaWV4cCI+PGEgbmFtZT0idHVkZGlleHAiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvaDE+Ci0KLQotCi0KLTxkaXY+PHA+VGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzCi1hbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIDwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VURESSBlbmFibGVzIHRoZSBkaXNjb3Zlcnkgb2YgV2ViIHNlcnZpY2VzIGJ5IHByb3ZpZGluZyBhIGRpc3RyaWJ1dGVkCi1yZWdpc3RyeSBvZiBidXNpbmVzc2VzIGFuZCB0aGVpciBzZXJ2aWNlIGRlc2NyaXB0aW9ucywgaW1wbGVtZW50ZWQgaW4gYSBjb21tb24KLVhNTCBmb3JtYXQuwqAgSW4gb3JkZXIgZm9yIGEgc2VydmljZSByZXF1ZXN0b3IgdG8gZGlzY292ZXIgYSBzZXJ2aWNlLAotYSBzZXJ2aWNlIHByb3ZpZGVyIG11c3QgZmlyc3QgcHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eSBhbmQgYXQgbGVhc3Qgb25lIGJ1c2luZXNzCi1zZXJ2aWNlLCBhbmQgc2VydmljZSBpbnRlcmZhY2UgaW4gYSBVRERJIHJlZ2lzdHJ5LsKgIFRoZSBXZWIgU2VydmljZXMKLUV4cGxvcmVyIGlzIGEgV2ViIGFwcGxpY2F0aW9uIHRoYXQgc3VwcG9ydHMgdGhlIHB1YmxpY2F0aW9uLCBkaXNjb3ZlcnksIGFuZAotbWFpbnRlbmFuY2Ugb2YgYnVzaW5lc3MgZW50aXRpZXMsIGJ1c2luZXNzIHNlcnZpY2VzLCBhbmQgc2VydmljZSBpbnRlcmZhY2VzLjwvcD4KLTxwPldTSUwKLWVuYWJsZXMgdGhlIGRpc2NvdmVyeSBvZiBXZWIgc2VydmljZXMgYnkgZGVmaW5pbmcgYSBkaXN0cmlidXRlZCBzZXJ2aWNlIGRpc2NvdmVyeQotbWV0aG9kIHRoYXQgc3VwcGxpZXMgcmVmZXJlbmNlcyB0byBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBhdCB0aGUgc2VydmljZSBwcm92aWRlcidzCi1wb2ludC1vZi1vZmZlcmluZywgYnkgc3BlY2lmeWluZyBob3cgdG8gaW5zcGVjdCBhIFdlYiBzaXRlIGZvciBhdmFpbGFibGUgV2ViCi1zZXJ2aWNlcy7CoCBUaGUgV1NJTCBzcGVjaWZpY2F0aW9uIGRlZmluZXMgdGhlIGxvY2F0aW9ucyBvbiBhIFdlYiBzaXRlCi13aGVyZSB5b3UgY2FuIGxvb2sgZm9yIFdlYiBzZXJ2aWNlIGRlc2NyaXB0aW9ucy7CoFNpbmNlIFdTSUwgZm9jdXNlcyBvbgotZGlzdHJpYnV0ZWQgc2VydmljZSBkaXNjb3ZlcnksIHRoZSBXU0lMIHNwZWNpZmljYXRpb24gY29tcGxlbWVudHMgVURESSBieQotZmFjaWxpdGF0aW5nIHRoZSBkaXNjb3Zlcnkgb2Ygc2VydmljZXMgdGhhdCBhcmUgYXZhaWxhYmxlIG9uIFdlYiBzaXRlcyB0aGF0Ci1tYXkgbm90IGJlIGxpc3RlZCB5ZXQgaW4gYSBVRERJIHJlZ2lzdHJ5LiBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGFsbG93cwoteW91IHRvIGdlbmVyYXRlIGFuZCBleHBsb3JlIFdTSUwgZG9jdW1lbnRzLjwvcD4KLTxwPlRoZSBmYXZvcml0ZXMgcGFnZSBvZiB0aGUKLVdlYiBTZXJ2aWNlcyBFeHBsb3JlciBhbGxvd3MgeW91IHRvIHN0b3JlIHRoZSBsb2NhdGlvbiBvZiBVRERJIHJlZ2lzdHJpZXMsCi1idXNpbmVzcyBlbnRpdGllcywgV2ViIHNlcnZpY2VzLCBzZXJ2aWNlIGludGVyZmFjZXMsIGFzIHdlbGwgYXMgV1NJTCBhbmQgV1NETAotZG9jdW1lbnRzLjwvcD4KLTxwPlVzZSB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHRvIGRvIGFueSBvZiB0aGUgZm9sbG93aW5nCi10YXNrczo8L3A+Ci08dWw+Ci08bGk+IDxhIGhyZWY9InRhZGRyZWcuaHRtbCI+QWRkIGEgcmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT4gPC9saT4KLQotPGxpPiA8YSBocmVmPSJ0YmttcmsuaHRtbCI+QWRkaW5nIGEgcmVnaXN0cnksIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsIFdTSUwsIG9yIFdTREwgc2VydmljZSB0byBGYXZvcml0ZXM8L2E+IDwvbGk+Ci0KLTxsaT48YSBocmVmPSJ0bG9nZXhwLmh0bWwiIHRpdGxlPSJJZiB5b3UgaGF2ZSBwdWJsaXNoZWQgeW91ciBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnkgeW91IGNhbiYjMTA7bG9nIGludG8gdGhlIHJlZ2lzdHJ5IGFuZCBtYW5hZ2UgdGhlIHNlcnZpY2UgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLiI+TG9nZ2luZyBpbiB0byBhIFVEREkgcmVnaXN0cnk8L2E+PC9saT4KLQotPGxpPiA8YSBocmVmPSJ0ZGlzY292Lmh0bWwiPkRpc2NvdmVyIGEgV2ViIHNlcnZpY2U8L2E+IDwvbGk+Ci0KLTxsaT4gPGEgaHJlZj0idHB1YmVudC5odG1sIj5QdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5IHRvIGEgcmVnaXN0cnk8L2E+IDwvbGk+Ci0KLTxsaT4gPGEgaHJlZj0idHB1Ymxpc2guaHRtbCI+UHVibGlzaCBhIGJ1c2luZXNzIHNlcnZpY2UgdG8gYSByZWdpc3RyeTwvYT4gPC9saT4KLQotPGxpPiA8YSBocmVmPSJ0dW5wdWIuaHRtbCI+UmVtb3ZlIGEgYnVzaW5lc3MgZW50aXR5LCBidXNpbmVzcyBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSBmcm9tIGEgcmVnaXN0cnk8L2E+IDwvbGk+Ci0KLTxsaT4gPGEgaHJlZj0idHVwZGF0ZS5odG1sIj5VcGRhdGUgYSBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlPC9hPiA8L2xpPgotCi08bGk+IDxhIGhyZWY9InRidXNwcm9qLmh0bWwiPk1hbmFnZSByZWZlcmVuY2VkIHNlcnZpY2VzPC9hPiA8L2xpPgotCi08bGk+IDxhIGhyZWY9InRhc3NlcnQuaHRtbCI+TWFuYWdlIHB1Ymxpc2hlciBhc3NlcnRpb25zPC9hPiA8L2xpPgotCi08L3VsPgotPHA+UHJlcmVxdWlzaXRlczo8L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5CZWZvcmUgeW91IGNhbiB1c2UgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciB0byBwZXJmb3JtIGFueSBvZgotdGhlc2UgZnVuY3Rpb25zLCB5b3UgbXVzdCAgPGEgaHJlZj0idHJlZy5odG1sIj5yZWdpc3RlciB3aXRoIGEgcHVibGljIHJlZ2lzdHJ5PC9hPi7CoAotVGhlcmUgYXJlIG1hbnkgZGlmZmVyZW50IHJlZ2lzdHJpZXMgd2l0aCB3aGljaCB5b3UgY2FuIHJlZ2lzdGVyLjwvc3Bhbj4gCi08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkVuc3VyZSB0aGF0IHlvdSBhcmUgdXNpbmcgYSBzdXBwb3J0ZWQgV2ViIGJyb3dzZXIuPC9zcGFuPiBUaGUKLWZvbGxvd2luZyBXZWIgYnJvd3NlcnMgYW5kIHZlcnNpb25zIGFyZSBzdXBwb3J0ZWQ6PHVsPgotPGxpPkludGVybmV0IEV4cGxvcmVyOiA2LjAgYW5kIHVwPC9saT4KLQotPGxpPk1vemlsbGE6IDEuMi4xIGFuZCB1cDwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPiA8YSBocmVmPSJ0c3RydGV4cC5odG1sIj5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT4uPC9zcGFuPgotPC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGRpdiBjbGFzcz0icCI+PHN0cm9uZz5Lbm93biBsaW1pdGF0aW9ucyBvZiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyOjwvc3Ryb25nPjx1bD4KLTxsaT5UaGUgdGF4b25vbXkgY2F0ZWdvcmllcyBpbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGFyZSBub3QgdHJhbnNsYXRlZAotc2luY2UgdGhleSBtdXN0IG1hdGNoIHRob3NlIGluIHRoZSBzdGFuZGFyZHMgYWRoZXJlZCB0byBieSBVRERJIChJU08sIFVOU1BTQwotNy4zLCBOQUlDUykuPC9saT4KLQotPGxpPlRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgd2lsbCBsYXVuY2ggd2l0aG91dCB0aGUgYnJvd3NlciB0b29sYmFyIHdoaWNoCi1zaG93cywgYW1vbmdzdCBvdGhlciB0aGluZ3MsIHRoZSBVUkwgdG8gdGhlIFdlYiBhcHBsaWNhdGlvbi4gVGhpcyBVUkwgc2hvdWxkCi1vbmx5IGJlIHVzZWQgYnkgdXNlcnMgd2l0aCBhY2Nlc3NpYmlsaXR5IG5lZWRzLiBUaGUgVVJMIHRvIHRoZSBXZWIgU2VydmljZXMKLUV4cGxvcmVyIFdlYiBhcHBsaWNhdGlvbiBjYW4gYmUgb2J0YWluZWQgdGhyb3VnaCB0aGUgZm9sbG93aW5nIHN0ZXBzOjxvbD4KLTxsaT5Gcm9tIHRoZSBXaW5kb3cgbWVudSwgc2VsZWN0IFByZWZlcmVuY2VzLjwvbGk+Ci0KLTxsaT5JbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLCBzZWxlY3QgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViIEJyb3dzZXI8L3NwYW4+IGluCi10aGUgbGVmdCBwYW5lLjwvbGk+Ci0KLTxsaT5PbiB0aGUgcmlnaHQsIHNlbGVjdCA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Vc2UgZXh0ZXJuYWwgV2ViIEJyb3dzZXI8L3NwYW4+LjwvbGk+Ci0KLTxsaT5JbiB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TG9jYXRpb246IHRleHQ8L3NwYW4+IGZpZWxkLCBicm93c2Ugb3IgdHlwZSBpbgotdGhlIGZ1bGwgcGF0aCBvZiB0aGUgSW50ZXJuZXQgRXhwbG9yZXIgZXhlY3V0YWJsZS4gKGZvciBleGFtcGxlLCBDOlxQcm9ncmFtCi1GaWxlc1xJbnRlcm5ldCBFeHBsb3JlclxpZXhwbG9yZS5leGUpLjwvbGk+Ci0KLTxsaT5DbGljayA8c3BhbiBjbGFzcz0idWljb250cm9sIj5BcHBseTwvc3Bhbj4gZm9sbG93ZWQgYnkgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+T0s8L3NwYW4+LjwvbGk+Ci0KLTwvb2w+Ci0gTm90ZSB0aGF0IHRoaXMgcHJlZmVyZW5jZSB3aWxsIG5vdyBhcHBseSB0byBhbnkgYnJvd3NlciB3aW5kb3dzIHRoYXQKLWFyZSBsYXVuY2hlZCBieSB0aGUgdXNlciBvciBieSB0aGUgdG9vbHMgdGhlbXNlbHZlcyAoc3VjaCBhcyB0aGUgVW5pdmVyc2FsCi1UZXN0IENsaWVudCkuICBUaGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHdpbGwgbm93IGxhdW5jaCBpbiBhbiBleHRlcm5hbCBicm93c2VyCi1hbmQgaXRzIFVSTCBzaG91bGQgYmUgaW4gdGhlIEFkZHJlc3MgZmllbGQuIFRoaXMgY2FuIHRoZW4gYmUgcGFzdGVkIG9yIG9wZW5lZAotdXNpbmcgYW0gYWNjZXNzaWJpbGl0eSBhc3Npc3RpbmcgYnJvd3Nlci48L2xpPgotCi08bGk+V2hlbiBwZXJmb3JtaW5nIGFuIGFkdmFuY2VkIGZpbmQgb3IgcHVibGlzaCBpbiB0aGUgVURESSBwYWdlIG9mIHRoZSBXZWIKLVNlcnZpY2VzIEV4cGxvcmVyLCB0aGUgaXRlbXMgaW4gdGhlIGRyb3AgZG93biBsaXN0IGZvciBwaWNraW5nIGEgbGFuZ3VhZ2UKLWluIGNvbmp1bmN0aW9uIHdpdGggYSBuYW1lIG9yIGRlc2NyaXB0aW9uIGlzIHNvcnRlZCAgYWNjb3JkaW5nIHRvIHRoZSBvcGVyYXRpbmcKLXN5c3RlbSdzIGxvY2FsZSBzZXR0aW5ncy4gT24gV2luZG93czxzdXA+wq48L3N1cD4sIHRoaXMgb3JkZXIgbWF5IGJlIG1hbmFnZWQgdGhyb3VnaAotdGhlIENvbnRyb2wgUGFuZWwuIFRvIGRvIHRoaXM6PG9sPgotPGxpPk9wZW4gdGhlIENvbnRyb2wgUGFuZWwuPC9saT4KLQotPGxpPkxhdW5jaCB0aGUgUmVnaW9uYWwgT3B0aW9ucyBjb250cm9sIHBhbmVsIGFwcGxldC48L2xpPgotCi08bGk+SW4gdGhlIEdlbmVyYWwgdGFiIG9mIHRoZSByZXN1bHRpbmcgZGlhbG9nLCB0aGVyZSBtYXkgYmUgYSAiU29ydGluZyBvcmRlciIKLWRyb3AtZG93biBsaXN0LiBJZiBzbywgcGljayBhIHNvcnRpbmcgb3JkZXIgYW5kIHRoZW4gY2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QXBwbHk8L3NwYW4+IGZvbGxvd2VkCi1ieSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5PSzwvc3Bhbj4uPC9saT4KLQotPGxpPkluIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIsIHRoZSBuZXcgc29ydGluZyBvcmRlciBjb21lcyBpbnRvIGVmZmVjdAotb25jZSB0aGUgcGFnZSByZWxvYWRzLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkgcHJlc3NpbmcgdGhlIGJhY2sgYXJyb3cKLWZvbGxvd2VkIGJ5IHRoZSBmb3J3YXJkIGFycm93IGluIHRoZSBtYWluIHRvb2xiYXIuPC9saT4KLQotPC9vbD4KLU5vdGU6IFRoZSBpbnN0cnVjdGlvbnMgYWJvdmUgYXBwbHkgdG8gV2luZG93cyAyMDAwLiBPbiBXaW5kb3dzIFhQLAotdGhlIHRhYiBtZW50aW9uZWQgaW4gc3RlcCAzIGlzIGNhbGxlZCAiUmVnaW9uYWwgT3B0aW9ucyIuIEJlc2lkZSB0aGUgbGFuZ3VhZ2UKLWRyb3AtZG93biwgdGhlcmUgaXMgYSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5DdXN0b21pemU8L3NwYW4+IGJ1dHRvbi4gV2hlbiB0aGlzIGlzCi1jbGlja2VkLCBhIG5ldyBkaWFsb2cgYXBwZWFycy4gQSBzb3J0aW5nIHRhYiB3aWxsIGFsbG93IHVzZXJzIHRvIHBpY2sgdGhlCi1zb3J0aW5nIG1ldGhvZCBpZiBhcHBsaWNhYmxlLjwvbGk+Ci0KLTwvdWw+Ci08L2Rpdj4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTx1bCBjbGFzcz0idWxsaW5rcyI+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL3Rhc2tzL3RzdHJ0ZXhwLmh0bWwiPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvc3Ryb25nPjxiciAvPgotVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBhbGxvd3MgeW91IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIHNldmVyYWwgd2F5cy48L2xpPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi90YXNrcy90cmVnLmh0bWwiPlJlZ2lzdGVyaW5nIHdpdGggYSBVRERJIHJlZ2lzdHJ5PC9hPjwvc3Ryb25nPjxiciAvPgotSW4gb3JkZXIgdG8gcHVibGlzaCB5b3VyIGJ1c2luZXNzIGVudGl0eSBhbmQgV2ViIHNlcnZpY2UgdG8gYSBVRERJIHJlZ2lzdHJ5LCB5b3UgbXVzdCBmaXJzdCByZWdpc3RlciB3aXRoIHRoZSByZWdpc3RyeSB0aGF0IHlvdSB3YW50IHRvIHVzZS48L2xpPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi90YXNrcy90bG9nZXhwLmh0bWwiPkxvZ2dpbmcgaW4gdG8gYSBVRERJIHJlZ2lzdHJ5PC9hPjwvc3Ryb25nPjxiciAvPgotSWYgeW91IGhhdmUgcHVibGlzaGVkIHlvdXIgV2ViIHNlcnZpY2UgdG8gYSBVRERJIHJlZ2lzdHJ5IHlvdSBjYW4gbG9nIGludG8gdGhlIHJlZ2lzdHJ5IGFuZCBtYW5hZ2UgdGhlIHNlcnZpY2UgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLjwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL3Rhc2tzL3RhZGRyZWcuaHRtbCI+QWRkaW5nIGEgUmVnaXN0cnkgdG8gdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L3N0cm9uZz48YnIgLz4KLUFsdGhvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgY29tZXMgcG9wdWxhdGVkIHdpdGggc2V2ZXJhbCByZWdpc3RyaWVzLCB5b3UgY2FuIGFsc28gYWRkIGFkZGl0aW9uYWwgcmVnaXN0cmllcyB0byB5b3VyIGxpc3Qgb2YgZmF2b3JpdGVzLjwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL3Rhc2tzL3RwdWJlbnQuaHRtbCI+UHVibGlzaGluZyBhIGJ1c2luZXNzIGVudGl0eTwvYT48L3N0cm9uZz48YnIgLz4KLUEgYnVzaW5lc3MgZW50aXR5IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidXNpbmVzcyB0aGF0IGhhcyBwdWJsaXNoZWQgYSBzZXJ2aWNlLsKgIEJlZm9yZSB5b3UgY2FuIHB1Ymxpc2ggYSBidXNpbmVzcyBzZXJ2aWNlLCB5b3UgbXVzdCBwdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5LjwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL3Rhc2tzL3RwdWJsaXNoLmh0bWwiPlB1Ymxpc2hpbmcgYSBXZWIgc2VydmljZTwvYT48L3N0cm9uZz48YnIgLz4KLVRoZSBXZWIgc2VydmljZSwgYWxzbyBrbm93biBhcyB0aGUgYnVzaW5lc3Mgc2VydmljZSwgZGVzY3JpYmVzIGEgV2ViIHNlcnZpY2UncyBlbmRwb2ludCBhbmQgd2hlcmUgaXRzIFdTREwgZmlsZSByZXNpZGVzLiBUaGUgV1NETCBmaWxlIGxpc3RzIHRoZSBvcGVyYXRpb25zIHRoYXQgc2VydmljZSBwcm92aWRlcy48L2xpPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi90YXNrcy90dXBkYXRlLmh0bWwiPlVwZGF0aW5nIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2U8L2E+PC9zdHJvbmc+PGJyIC8+Ci1BZnRlciB5b3UgaGF2ZSBwdWJsaXNoZWQgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSwgeW91IGNhbiB1cGRhdGUgaXQgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLjwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL3Rhc2tzL3R1bnB1Yi5odG1sIj5SZW1vdmluZyBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIGZyb20gYSByZWdpc3RyeTwvYT48L3N0cm9uZz48YnIgLz4KLUFmdGVyIHlvdSBoYXZlIHB1Ymxpc2hlZCBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlLCB5b3UgY2FuIHJlbW92ZSBvciB1bnB1Ymxpc2ggaXQgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLjwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL3Rhc2tzL3RidXNwcm9qLmh0bWwiPk1hbmFnaW5nIHJlZmVyZW5jZWQgc2VydmljZXM8L2E+PC9zdHJvbmc+PGJyIC8+Ci1BIHNlcnZpY2UgcHJvamVjdGlvbiBlbmFibGVzIGEgYnVzaW5lc3MgZW50aXR5IHRvIHJlZmVyZW5jZSBhIHNlcnZpY2UgdGhhdCB3YXMgcHVibGlzaGVkIGJ5IGFub3RoZXIgYnVzaW5lc3MgZW50aXR5LiBCeSB1c2luZyB0aGUgYnVzaW5lc3NTZXJ2aWNlIHN0cnVjdHVyZSBhcyBhIHByb2plY3Rpb24gdG8gYW4gYWxyZWFkeSBwdWJsaXNoZWQgYnVzaW5lc3NTZXJ2aWNlLCBidXNpbmVzc2VzIGNhbiBzaGFyZSBvciByZXVzZSBzZXJ2aWNlcy7CoCBTZXJ2aWNlIHByb2plY3Rpb25zIGFyZSBtYW5hZ2VkIGNlbnRyYWxseSBhcyBwYXJ0IG9mIHRoZSByZWZlcmVuY2luZyBidXNpbmVzc0VudGl0eS48L2xpPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi90YXNrcy90YXNzZXJ0Lmh0bWwiPk1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zPC9hPjwvc3Ryb25nPjxiciAvPgotQSBwdWJsaXNoZXIgYXNzZXJ0aW9uIGlzIGEgd2F5IGluIFVEREkgdG8gYXNzb2NpYXRlIGJ1c2luZXNzRW50aXR5IHN0cnVjdHVyZXMuwqAgVGhlIHB1Ymxpc2hlciBhc3NlcnRpb24gZGVmaW5lcyBhIGdyb3VwIG9mIGJ1c2luZXNzRW50aXR5IHN0cnVjdHVyZXMuIE1hbnkgYnVzaW5lc3NlcyBhcmUgbm90IGVmZmVjdGl2ZWx5IHJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlIGJ1c2luZXNzRW50aXR5LiBBIHB1Ymxpc2hlciBhc3NlcnRpb24gYWxsb3dzIGZvciBhc3NvY2lhdGlvbnMgdG8gYmUgZm9ybWVkIGJldHdlZW4gc2V2ZXJhbCBidXNpbmVzc0VudGl0eSBzdHJ1Y3R1cmVzLiBGb3IgZXhhbXBsZSwgYSBsYXJnZSBjb21wYW55IG1heSBoYXZlIHNldmVyYWwgc3Vic2lkaWFyaWVzIHRoYXQgaGF2ZSBkaWZmZXJlbnQgZGVzY3JpcHRpb25zIGJ1dCBhcmUgc3RpbGwgY2xvc2VseSBjb3VwbGVkIGFuZCB3YW50IHRvIG1ha2UgdGhlaXIgcmVsYXRpb25zaGlwcyB2aXNpYmxlIGluIFVEREkgcmVnaXN0cmllcy48L2xpPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi90YXNrcy90YmttcmsuaHRtbCI+QWRkaW5nIGEgcmVnaXN0cnksIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsIFdTSUwsIG9yIFdTREwgc2VydmljZSB0byBGYXZvcml0ZXM8L2E+PC9zdHJvbmc+PGJyIC8+Ci1Zb3UgY2FuIGFkZCBhIHJlZ2lzdHJ5LCBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsIHNlcnZpY2UgaW50ZXJmYWNlLCBXU0lMLCBvciBXU0RMIHNlcnZpY2UgdG8gdGhlIFdlYiBTZXJ2aWNlIEV4cGxvcmVyIEZhdm9yaXRlcyBpZiB5b3UgcGxhbiB0byBhY2Nlc3MgdGhlbSBpbiB0aGUgZnV0dXJlLjwvbGk+Ci08L3VsPgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgdGl0bGU9IlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InR1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0c3RydGV4cC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBhbGxvd3MgeW91IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIHNldmVyYWwgd2F5cy4iPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0d3NkbGV4cC5odG1sIiB0aXRsZT0iIj5FeHBsb3JpbmcgV1NETCB1c2luZyB0aGUgV1NETCBFeHBsb3JlcjwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuaHRtbCI+IERldmVsb3BpbmcgV2ViIHNlcnZpY2VzPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFJlZmVyZW5jZTwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3JlZi9ydWRkaS5odG1sIiB0aXRsZT0iT25jZSB5b3UgaGF2ZSByZWdpc3RlcmVkIGFuZCBsb2dnZWQgaW4gdG8gdGhlIFVEREkgcmVnaXN0cnkgdGhhdCB5b3Ugd2FudCB0byB1c2UsIHlvdSBjYW4gcmVnaXN0ZXIgeW91ciBXZWIgc2VydmljZS4gUmVnaXN0cmF0aW9uIG9mIGEgc2VydmljZSBpbnZvbHZlcyBmb3VyIGNvcmUgZGF0YSBzdHJ1Y3R1cmUgdHlwZXM6IGJ1c2luZXNzIGluZm9ybWF0aW9uLCBzZXJ2aWNlIGluZm9ybWF0aW9uLCBiaW5kaW5nIGluZm9ybWF0aW9uLCBhbmQgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIHNlcnZpY2VzLiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZGF0YSB0eXBlcyBpcyBkZXNjcmliZWQgaW4gRmlndXJlIDEuIj5EYXRhIHN0cnVjdHVyZSB0eXBlcyAoVURESSByZWdpc3RyeSk8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1bnB1Yi5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVucHViLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMDdlNDQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVucHViLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idHVucHViIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPlJlbW92aW5nIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UgZnJvbQotYSByZWdpc3RyeTwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPlJlbW92aW5nIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UKLWZyb20gYSByZWdpc3RyeTwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+QWZ0ZXIgeW91IGhhdmUgcHVibGlzaGVkIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZQotaW50ZXJmYWNlLCB5b3UgY2FuIHJlbW92ZSBvciB1bnB1Ymxpc2ggaXQgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybSBrZXlyZWY9InR1bnB1YnwxfFdlYnNlcnZpY2VzcmVtb3Zpbmdmcm9tYVVERElyZWdpc3RyeSIKLXN0YXR1cz0idW5jaGFuZ2VkIj5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPnJlbW92aW5nIGZyb20gYSBVRERJIHJlZ2lzdHJ5PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08aW5kZXh0ZXJtIGtleXJlZj0idHVucHVifDJ8c2VydmljZWludGVyZmFjZXNyZW1vdmluZ2Zyb21hVURESXJlZ2lzdHJ5IiBzdGF0dXM9InVuY2hhbmdlZCI+c2VydmljZQotaW50ZXJmYWNlczxpbmRleHRlcm0+cmVtb3ZpbmcgZnJvbSBhIFVEREkgcmVnaXN0cnk8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0ga2V5cmVmPSJ0dW5wdWJ8M3xidXNpbmVzc2VudGl0aWVzcmVtb3Zpbmdmcm9tYVVERElyZWdpc3RyeSIgc3RhdHVzPSJ1bmNoYW5nZWQiPmJ1c2luZXNzCi1lbnRpdGllczxpbmRleHRlcm0+cmVtb3ZpbmcgZnJvbSBhIFVEREkgcmVnaXN0cnk8L2luZGV4dGVybT48L2luZGV4dGVybT48aW5kZXh0ZXJtCi1rZXlyZWY9InR1bnB1Ynw0fFVERElyZW1vdmluZ3NlcnZpY2VzZnJvbWFyZWdpc3RyeSIgc3RhdHVzPSJ1bmNoYW5nZWQiPlVEREk8aW5kZXh0ZXJtPnJlbW92aW5nCi1zZXJ2aWNlcyBmcm9tIGEgcmVnaXN0cnk8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxwcmVyZXE+UHJlcmVxdWlzaXRlczo8b2w+Ci08bGk+IDx4cmVmIGhyZWY9InRwdWJlbnQuZGl0YSI+UHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eTwveHJlZj4uPC9saT4KLTxsaT4gPHhyZWYgaHJlZj0idHB1Ymxpc2guZGl0YSI+UHVibGlzaCBhIFdlYiBzZXJ2aWNlPC94cmVmPi48L2xpPgotPGxpPiA8eHJlZiBocmVmPSJ0cHVibGlzaC5kaXRhIj5QdWJsaXNoIGEgc2VydmljZSBpbnRlcmZhY2U8L3hyZWY+LjwvbGk+Ci08bGk+IDx4cmVmIGhyZWY9InRzdHJ0ZXhwLmRpdGEiPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC94cmVmPi48L2xpPgotPC9vbD48L3ByZXJlcT4KLTxjb250ZXh0PlRvIHVucHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlCi11c2luZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyOjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+TmF2aWdhdGUgdGhyb3VnaCB0aGUgcmVnaXN0cnkgaGllcmFyY2h5IHRvIGZpbmQgdGhlIGJ1c2luZXNzIGVudGl0eSwKLVdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSB5b3Ugd2FudCB0byB1bnB1Ymxpc2guIFNlbGVjdCB0aGUgYnVzaW5lc3MKLWVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIEFjdGlvbnMgaWNvbiBiYXIsIGNsaWNrIHRoZSAgPHVpY29udHJvbD5VbnB1Ymxpc2g8L3VpY29udHJvbD4gaWNvbi48L2NtZD4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+RW50ZXIgdGhlIHB1Ymxpc2ggVVJMLCB5b3VyIHVzZXIgSUQsIGFuZCBwYXNzd29yZCwgaWYgbmVjZXNzYXJ5LAotdGhlbiBjbGljayAgPHVpY29udHJvbD5HbzwvdWljb250cm9sPi48L2NtZD48L3N0ZXA+Ci08L3N0ZXBzPgotPHJlc3VsdD48cD5UaGUgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UgaXMgcmVtb3ZlZAotZnJvbSB0aGUgcmVnaXN0cnkgYW5kIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgaXMgYXV0b21hdGljYWxseSB1cGRhdGVkIHdpdGgKLXlvdXIgY2hhbmdlLjwvcD48L3Jlc3VsdD4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0idHVkZGlleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHN0cnRleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHB1YmVudC5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSJ0cHVibGlzaC5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSJ0dW5wdWIuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHVwZGF0ZS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9yZWYvcnVkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1bnB1Yi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVucHViLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOTIxZmYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVucHViLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iUmVtb3ZpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSBmcm9tIGEgcmVnaXN0cnkiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iQWZ0ZXIgeW91IGhhdmUgcHVibGlzaGVkIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UsIHlvdSBjYW4gcmVtb3ZlIG9yIHVucHVibGlzaCBpdCB0aHJvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkFmdGVyIHlvdSBoYXZlIHB1Ymxpc2hlZCBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlLCB5b3UgY2FuIHJlbW92ZSBvciB1bnB1Ymxpc2ggaXQgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgcmVtb3ZpbmcgZnJvbSBhIFVEREkgcmVnaXN0cnksIHNlcnZpY2UgaW50ZXJmYWNlcywgYnVzaW5lc3MgZW50aXRpZXMsIFVEREksIHJlbW92aW5nIHNlcnZpY2VzIGZyb20gYSByZWdpc3RyeSIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgcmVtb3ZpbmcgZnJvbSBhIFVEREkgcmVnaXN0cnksIHNlcnZpY2UgaW50ZXJmYWNlcywgYnVzaW5lc3MgZW50aXRpZXMsIFVEREksIHJlbW92aW5nIHNlcnZpY2VzIGZyb20gYSByZWdpc3RyeSIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InR1ZGRpZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRzdHJ0ZXhwLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRwdWJlbnQuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idHB1Ymxpc2guaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idHVucHViLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InR1cGRhdGUuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vcmVmL3J1ZGRpLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idHVucHViIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+UmVtb3ZpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZQotZnJvbSBhIHJlZ2lzdHJ5PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0dW5wdWIiPjxhIG5hbWU9InR1bnB1YiI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+UmVtb3ZpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSBmcm9tCi1hIHJlZ2lzdHJ5PC9oMT4KLQotCi0KLQotPGRpdj48cD5BZnRlciB5b3UgaGF2ZSBwdWJsaXNoZWQgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlCi1pbnRlcmZhY2UsIHlvdSBjYW4gcmVtb3ZlIG9yIHVucHVibGlzaCBpdCB0aHJvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj5QcmVyZXF1aXNpdGVzOjxvbD4KLTxsaT4gPGEgaHJlZj0idHB1YmVudC5odG1sIj5QdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5PC9hPi48L2xpPgotCi08bGk+IDxhIGhyZWY9InRwdWJsaXNoLmh0bWwiPlB1Ymxpc2ggYSBXZWIgc2VydmljZTwvYT4uPC9saT4KLQotPGxpPiA8YSBocmVmPSJ0cHVibGlzaC5odG1sIj5QdWJsaXNoIGEgc2VydmljZSBpbnRlcmZhY2U8L2E+LjwvbGk+Ci0KLTxsaT4gPGEgaHJlZj0idHN0cnRleHAuaHRtbCI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2E+LjwvbGk+Ci0KLTwvb2w+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+VG8gdW5wdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UKLXVzaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI6PC9kaXY+Ci0KLTxvbD4KLTxsaT48c3Bhbj5OYXZpZ2F0ZSB0aHJvdWdoIHRoZSByZWdpc3RyeSBoaWVyYXJjaHkgdG8gZmluZCB0aGUgYnVzaW5lc3MgZW50aXR5LAotV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIHlvdSB3YW50IHRvIHVucHVibGlzaC4gU2VsZWN0IHRoZSBidXNpbmVzcwotZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5JbiB0aGUgQWN0aW9ucyBpY29uIGJhciwgY2xpY2sgdGhlICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5VbnB1Ymxpc2g8L3NwYW4+IGljb24uPC9zcGFuPgotPC9saT4KLQotPGxpPjxzcGFuPkVudGVyIHRoZSBwdWJsaXNoIFVSTCwgeW91ciB1c2VyIElELCBhbmQgcGFzc3dvcmQsIGlmIG5lY2Vzc2FyeSwKLXRoZW4gY2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkdvPC9zcGFuPi48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VGhlIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIGlzIHJlbW92ZWQKLWZyb20gdGhlIHJlZ2lzdHJ5IGFuZCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGlzIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCB3aXRoCi15b3VyIGNoYW5nZS48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vdGFza3MvdHVkZGlleHAuaHRtbCIgdGl0bGU9IlRocm91Z2ggVURESSBhbmQgV1NJTCwgb3RoZXIgYXBwbGljYXRpb25zIGNhbiBkaXNjb3ZlciBXU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlciBidXNpbmVzcyBwcm9jZXNzZXMuIj5QdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyBhbmQgYnVzaW5lc3MgZW50aXRpZXM8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIj4gVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIj5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIHRpdGxlPSJVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSB3YXkgdG8gcHVibGlzaCBhbmQgZGlzY292ZXIgaW5mb3JtYXRpb24gYWJvdXQgV2ViIHNlcnZpY2VzLiI+VW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSk8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJ0dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idHN0cnRleHAuaHRtbCIgdGl0bGU9IlRoZSBXZWIgc2VydmljZXMgdG9vbHMgYWxsb3dzIHlvdSB0byBsYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBpbiBzZXZlcmFsIHdheXMuIj5MYXVuY2hpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idHB1YmVudC5odG1sIiB0aXRsZT0iQSBidXNpbmVzcyBlbnRpdHkgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1c2luZXNzIHRoYXQgaGFzIHB1Ymxpc2hlZCBhIHNlcnZpY2UuwqAgQmVmb3JlIHlvdSBjYW4gcHVibGlzaCBhIGJ1c2luZXNzIHNlcnZpY2UsIHlvdSBtdXN0IHB1Ymxpc2ggYSBidXNpbmVzcyBlbnRpdHkuIj5QdWJsaXNoaW5nIGEgYnVzaW5lc3MgZW50aXR5PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0cHVibGlzaC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlLCBhbHNvIGtub3duIGFzIHRoZSBidXNpbmVzcyBzZXJ2aWNlLCBkZXNjcmliZXMgYSBXZWIgc2VydmljZSdzIGVuZHBvaW50IGFuZCB3aGVyZSBpdHMgV1NETCBmaWxlIHJlc2lkZXMuIFRoZSBXU0RMIGZpbGUgbGlzdHMgdGhlIG9wZXJhdGlvbnMgdGhhdCBzZXJ2aWNlIHByb3ZpZGVzLiI+UHVibGlzaGluZyBhIFdlYiBzZXJ2aWNlPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0dW5wdWIuaHRtbCIgdGl0bGU9IkFmdGVyIHlvdSBoYXZlIHB1Ymxpc2hlZCBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlLCB5b3UgY2FuIHJlbW92ZSBvciB1bnB1Ymxpc2ggaXQgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLiI+UmVtb3ZpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSBmcm9tIGEgcmVnaXN0cnk8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InR1cGRhdGUuaHRtbCIgdGl0bGU9IkFmdGVyIHlvdSBoYXZlIHB1Ymxpc2hlZCBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlLCB5b3UgY2FuIHVwZGF0ZSBpdCB0aHJvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuIj5VcGRhdGluZyBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFJlZmVyZW5jZTwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3JlZi9ydWRkaS5odG1sIiB0aXRsZT0iT25jZSB5b3UgaGF2ZSByZWdpc3RlcmVkIGFuZCBsb2dnZWQgaW4gdG8gdGhlIFVEREkgcmVnaXN0cnkgdGhhdCB5b3Ugd2FudCB0byB1c2UsIHlvdSBjYW4gcmVnaXN0ZXIgeW91ciBXZWIgc2VydmljZS4gUmVnaXN0cmF0aW9uIG9mIGEgc2VydmljZSBpbnZvbHZlcyBmb3VyIGNvcmUgZGF0YSBzdHJ1Y3R1cmUgdHlwZXM6IGJ1c2luZXNzIGluZm9ybWF0aW9uLCBzZXJ2aWNlIGluZm9ybWF0aW9uLCBiaW5kaW5nIGluZm9ybWF0aW9uLCBhbmQgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIHNlcnZpY2VzLiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZGF0YSB0eXBlcyBpcyBkZXNjcmliZWQgaW4gRmlndXJlIDEuIj5EYXRhIHN0cnVjdHVyZSB0eXBlcyAoVURESSByZWdpc3RyeSk8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1cGRhdGUuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1cGRhdGUuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRmZGQyNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dXBkYXRlLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA1LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idHVwZGF0ZSIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5VcGRhdGluZyBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlPC90aXRsZT4KLTxzaG9ydGRlc2M+QWZ0ZXIgeW91IGhhdmUgcHVibGlzaGVkIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZQotaW50ZXJmYWNlLCB5b3UgY2FuIHVwZGF0ZSBpdCB0aHJvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuPC9zaG9ydGRlc2M+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPmJ1c2luZXNzIGVudGl0aWVzPGluZGV4dGVybT51cGRhdGluZyBpbiBhIFVEREkgcmVnaXN0cnk8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT51cGRhdGluZyBVRERJIHJlZ2lzdHJpZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+c2VydmljZSBpbnRlcmZhY2VzPGluZGV4dGVybT51cGRhdGluZyBVRERJIHJlZ2lzdHJpZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPHByZXJlcT5QcmVyZXF1aXNpdGVzOjxvbD4KLTxsaT4gPHhyZWYgaHJlZj0idHB1YmVudC5kaXRhIj5QdWJsaXNoIGEgYnVzaW5lc3MgZW50aXR5PC94cmVmPi48L2xpPgotPGxpPiA8eHJlZiBocmVmPSJ0cHVibGlzaC5kaXRhIj5QdWJsaXNoIGEgV2ViIHNlcnZpY2U8L3hyZWY+LjwvbGk+Ci08bGk+IDx4cmVmIGhyZWY9InRwdWJsaXNoLmRpdGEiPlB1Ymxpc2ggYSBzZXJ2aWNlIGludGVyZmFjZTwveHJlZj4uPC9saT4KLTxsaT4gPHhyZWYgaHJlZj0idHN0cnRleHAuZGl0YSI+TGF1bmNoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L3hyZWY+LjwvbGk+Ci08L29sPjwvcHJlcmVxPgotPGNvbnRleHQ+VG8gdXBkYXRlIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UgdXNpbmcKLXRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI6PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5OYXZpZ2F0ZSB0aHJvdWdoIHRoZSByZWdpc3RyeSBoaWVyYXJjaHkgdG8gZmluZCB0aGUgYnVzaW5lc3MgZW50aXR5LAotV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIHlvdSB3YW50IHRvIHVwZGF0ZS4gU2VsZWN0IHRoZSBidXNpbmVzcwotZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgQWN0aW9ucyBpY29uIGJhciwgY2xpY2sgdGhlICA8dWljb250cm9sPkRldGFpbHM8L3VpY29udHJvbD4gaWNvbi48L2NtZD4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+TWFrZSBhbnkgbmVjZXNzYXJ5IGNoYW5nZXMgYW5kIGVudGVyIHlvdXIgcHVibGlzaCBVUkwsIHlvdXIgdXNlcgotSUQsIGFuZCBwYXNzd29yZCwgaWYgbmVjZXNzYXJ5LCB0aGVuIGNsaWNrICA8dWljb250cm9sPkdvPC91aWNvbnRyb2w+LjwvY21kPgotPC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+PHA+VGhlIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIGlzIHVwZGF0ZWQKLWluIHRoZSByZWdpc3RyeSBhbmQgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgd2l0aAoteW91ciBjaGFuZ2UuPC9wPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIENvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+IFRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSJ0dWRkaWV4cC5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSJ0c3RydGV4cC5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSJ0cHViZW50LmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRwdWJsaXNoLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9InR1bnB1Yi5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9yZWYvcnVkZGkuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1cGRhdGUuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1cGRhdGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI0ZjYxOS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dXBkYXRlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iVXBkYXRpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJBZnRlciB5b3UgaGF2ZSBwdWJsaXNoZWQgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSwgeW91IGNhbiB1cGRhdGUgaXQgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJBZnRlciB5b3UgaGF2ZSBwdWJsaXNoZWQgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSwgeW91IGNhbiB1cGRhdGUgaXQgdGhyb3VnaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLiIgLz4KLTxtZXRhIGNvbnRlbnQ9ImJ1c2luZXNzIGVudGl0aWVzLCB1cGRhdGluZyBpbiBhIFVEREkgcmVnaXN0cnksIFdlYiBzZXJ2aWNlcywgdXBkYXRpbmcgVURESSByZWdpc3RyaWVzLCBzZXJ2aWNlIGludGVyZmFjZXMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJidXNpbmVzcyBlbnRpdGllcywgdXBkYXRpbmcgaW4gYSBVRERJIHJlZ2lzdHJ5LCBXZWIgc2VydmljZXMsIHVwZGF0aW5nIFVEREkgcmVnaXN0cmllcywgc2VydmljZSBpbnRlcmZhY2VzIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHVkZGlleHAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idHVkZGlleHAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idHN0cnRleHAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idHB1YmVudC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0cHVibGlzaC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0dW5wdWIuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vcmVmL3J1ZGRpLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idHVwZGF0ZSIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPlVwZGF0aW5nIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2U8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InR1cGRhdGUiPjxhIG5hbWU9InR1cGRhdGUiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPlVwZGF0aW5nIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2U8L2gxPgotCi0KLQotPGRpdj48cD5BZnRlciB5b3UgaGF2ZSBwdWJsaXNoZWQgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlCi1pbnRlcmZhY2UsIHlvdSBjYW4gdXBkYXRlIGl0IHRocm91Z2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlci48L3A+Ci0KLTxkaXYgY2xhc3M9InAiPlByZXJlcXVpc2l0ZXM6PG9sPgotPGxpPiA8YSBocmVmPSJ0cHViZW50Lmh0bWwiPlB1Ymxpc2ggYSBidXNpbmVzcyBlbnRpdHk8L2E+LjwvbGk+Ci0KLTxsaT4gPGEgaHJlZj0idHB1Ymxpc2guaHRtbCI+UHVibGlzaCBhIFdlYiBzZXJ2aWNlPC9hPi48L2xpPgotCi08bGk+IDxhIGhyZWY9InRwdWJsaXNoLmh0bWwiPlB1Ymxpc2ggYSBzZXJ2aWNlIGludGVyZmFjZTwvYT4uPC9saT4KLQotPGxpPiA8YSBocmVmPSJ0c3RydGV4cC5odG1sIj5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT4uPC9saT4KLQotPC9vbD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj5UbyB1cGRhdGUgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSB1c2luZwotdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3Jlcjo8L2Rpdj4KLQotPG9sPgotPGxpPjxzcGFuPk5hdmlnYXRlIHRocm91Z2ggdGhlIHJlZ2lzdHJ5IGhpZXJhcmNoeSB0byBmaW5kIHRoZSBidXNpbmVzcyBlbnRpdHksCi1XZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UgeW91IHdhbnQgdG8gdXBkYXRlLiBTZWxlY3QgdGhlIGJ1c2luZXNzCi1lbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZS48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkluIHRoZSBBY3Rpb25zIGljb24gYmFyLCBjbGljayB0aGUgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRldGFpbHM8L3NwYW4+IGljb24uPC9zcGFuPgotPC9saT4KLQotPGxpPjxzcGFuPk1ha2UgYW55IG5lY2Vzc2FyeSBjaGFuZ2VzIGFuZCBlbnRlciB5b3VyIHB1Ymxpc2ggVVJMLCB5b3VyIHVzZXIKLUlELCBhbmQgcGFzc3dvcmQsIGlmIG5lY2Vzc2FyeSwgdGhlbiBjbGljayAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+R288L3NwYW4+Ljwvc3Bhbj4KLTwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRoZSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSBpcyB1cGRhdGVkCi1pbiB0aGUgcmVnaXN0cnkgYW5kIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgaXMgYXV0b21hdGljYWxseSB1cGRhdGVkIHdpdGgKLXlvdXIgY2hhbmdlLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90YXNrcy90dWRkaWV4cC5odG1sIiB0aXRsZT0iVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyIFdTREwgZG9jdW1lbnRzIGFuZCBiaW5kIHdpdGggdGhlbSB0byBleGVjdXRlIHRyYW5zYWN0aW9ucyBvciBwZXJmb3JtIG90aGVyIGJ1c2luZXNzIHByb2Nlc3Nlcy4iPlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgdGl0bGU9IlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InR1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0c3RydGV4cC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBhbGxvd3MgeW91IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIHNldmVyYWwgd2F5cy4iPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0cHViZW50Lmh0bWwiIHRpdGxlPSJBIGJ1c2luZXNzIGVudGl0eSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVzaW5lc3MgdGhhdCBoYXMgcHVibGlzaGVkIGEgc2VydmljZS7CoCBCZWZvcmUgeW91IGNhbiBwdWJsaXNoIGEgYnVzaW5lc3Mgc2VydmljZSwgeW91IG11c3QgcHVibGlzaCBhIGJ1c2luZXNzIGVudGl0eS4iPlB1Ymxpc2hpbmcgYSBidXNpbmVzcyBlbnRpdHk8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRwdWJsaXNoLmh0bWwiIHRpdGxlPSJUaGUgV2ViIHNlcnZpY2UsIGFsc28ga25vd24gYXMgdGhlIGJ1c2luZXNzIHNlcnZpY2UsIGRlc2NyaWJlcyBhIFdlYiBzZXJ2aWNlJ3MgZW5kcG9pbnQgYW5kIHdoZXJlIGl0cyBXU0RMIGZpbGUgcmVzaWRlcy4gVGhlIFdTREwgZmlsZSBsaXN0cyB0aGUgb3BlcmF0aW9ucyB0aGF0IHNlcnZpY2UgcHJvdmlkZXMuIj5QdWJsaXNoaW5nIGEgV2ViIHNlcnZpY2U8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InR1bnB1Yi5odG1sIiB0aXRsZT0iQWZ0ZXIgeW91IGhhdmUgcHVibGlzaGVkIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UsIHlvdSBjYW4gcmVtb3ZlIG9yIHVucHVibGlzaCBpdCB0aHJvdWdoIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIuIj5SZW1vdmluZyBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIGZyb20gYSByZWdpc3RyeTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBSZWZlcmVuY2U8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9yZWYvcnVkZGkuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbmQgbG9nZ2VkIGluIHRvIHRoZSBVRERJIHJlZ2lzdHJ5IHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY2FuIHJlZ2lzdGVyIHlvdXIgV2ViIHNlcnZpY2UuIFJlZ2lzdHJhdGlvbiBvZiBhIHNlcnZpY2UgaW52b2x2ZXMgZm91ciBjb3JlIGRhdGEgc3RydWN0dXJlIHR5cGVzOiBidXNpbmVzcyBpbmZvcm1hdGlvbiwgc2VydmljZSBpbmZvcm1hdGlvbiwgYmluZGluZyBpbmZvcm1hdGlvbiwgYW5kIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljYXRpb25zIGZvciBzZXJ2aWNlcy4gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGRhdGEgdHlwZXMgaXMgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLiI+RGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90d3NkbGV4cC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHdzZGxleHAuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ5NDQ5MC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90d3NkbGV4cC5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0d3NkbGV4cCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5FeHBsb3JpbmcgV1NETCB1c2luZyB0aGUgV1NETCBFeHBsb3JlcjwvdGl0bGU+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPldTREwgZmlsZXM8aW5kZXh0ZXJtPmV4cGxvcmluZzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmV4cGxvcmluZyBXU0RMIGZpbGVzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxwcmVyZXE+UHJlcmVxdWlzaXRlczogVG8gdXNlIHRoZSBXU0RMIEV4cGxvcmVyLCB5b3UgbXVzdCBoYXZlIGEgdmFsaWQgVVJMCi1mb3IgYSBXU0RMIGRvY3VtZW50LjwvcHJlcmVxPgotPGNvbnRleHQ+VGhlIFdTREwgRXhwbG9yZXIgYWxsb3dzIHlvdSB0byBleHBsb3JlLCBhbmQgdGVzdCBXU0RMIGRvY3VtZW50cy4KLVRoZSBmb2xsb3dpbmcgYWN0aW9ucyBhcmUgYXZhaWxhYmxlIGluIHRoZSBXU0RMIEV4cGxvcmVyOjx1bD4KLTxsaT5TaG93IFdTREwgZGV0YWlsczogIDxpbWFnZSBhbHQ9IldTREwgRGV0YWlscyBpY29uIiBocmVmPSIuLi9pbWFnZXMvd3NkbGR0bGljb24uZ2lmIj4KLTwvaW1hZ2U+PC9saT4KLTxsaT5JbXBvcnQgV1NETCB0byB0aGUgV29ya2JlbmNoOiAgPGltYWdlIGFsdD0iSW1wb3J0IFdTREwgdG8gdGhlIFdvcmtiZW5jaCBpY29uIgotaHJlZj0iLi4vaW1hZ2VzL21wdHdzZGxpY29uLmdpZiI+PC9pbWFnZT48L2xpPgotPGxpPkltcG9ydCBXU0RMIHRvIHlvdXIgZmlsZSBzeXN0ZW06ICA8aW1hZ2UgYWx0PSJJbXBvcnQgV1NETCB0byB5b3VyIGZpbGUgc3lzdGVtIGljb24iCi1ocmVmPSIuLi9pbWFnZXMvZnN3c2RsaWNvbi5naWYiPjwvaW1hZ2U+PC9saT4KLTxsaT5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlIFdpemFyZDogIDxpbWFnZSBhbHQ9IkxhdW5jaCB0aGUgV2ViIFNlcnZpY2UgV2l6YXJkIGljb24iCi1ocmVmPSIuLi9pbWFnZXMvd3N3aXppY29uLmdpZiI+PC9pbWFnZT48L2xpPgotPGxpPkFkZCBXU0RMIHRvIEZhdm9yaXRlczogIDxpbWFnZSBhbHQ9IkFkZCBXU0RMIHRvIEZhdm9yaXRlcyBpY29uIiBocmVmPSIuLi9pbWFnZXMvd3NkbGZhdmljb24uZ2lmIj4KLTwvaW1hZ2U+PC9saT4KLTwvdWw+PC9jb250ZXh0PgotPC90YXNrYm9keT4KLTx0YXNrIGlkPSJkMGU0NyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5MYXVuY2hpbmcgdGhlIFdTREwgRXhwbG9yZXI8L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VG8gbGF1bmNoIHRoZSBXU0RMIEV4cGxvcmVyLCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPiA8eHJlZiBocmVmPSJ0c3RydGV4cC5kaXRhIj5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwveHJlZj4uPC9jbWQ+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPlN3aXRjaCB0byB0aGUgV1NETCBFeHBsb3JlciBieSBjbGlja2luZyB0aGUgaWNvbiBpbiB0aGUgdXBwZXIgcmlnaHQtaGFuZAotY29ybmVyICA8aW1hZ2UgYWx0PSJJY29uIHRvIGxhdW5jaCB0aGUgV1NETCBFeHBsb3JlciIgaHJlZj0iLi4vaW1hZ2VzL3dzZGxpY29uLmdpZiI+Ci08L2ltYWdlPi48L2NtZD48L3N0ZXA+Ci08L3N0ZXBzPgotPC90YXNrYm9keT4KLTwvdGFzaz4KLTx0YXNrIGlkPSJkMGU2NCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5JbXBvcnRpbmcgYSBXU0RMIGZpbGUgdG8geW91ciB3b3Jrc3BhY2U8L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VG8gaW1wb3J0IHRoZSBXU0RMIGZpbGUgdG8gdGhlIFdvcmtiZW5jaDo8L3A+PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5DbGljayB0aGlzIGljb246ICA8aW1hZ2UgYWx0PSJJbXBvcnQgV1NETCB0byB0aGUgV29ya2JlbmNoIGljb24iCi1ocmVmPSIuLi9pbWFnZXMvbXB0d3NkbGljb24uZ2lmIj48L2ltYWdlPi48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPlNlbGVjdCB0aGUgcHJvamVjdCBpbnRvIHdoaWNoIHlvdSB3YW50IHRvIGltcG9ydCB0aGUgV1NETC48L2NtZD4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+SWYgeW91IHdhbnQgdG8gZ2VuZXJhdGUgYSBXU0lMIGZpbGUgZnJvbSB0aGUgV1NETCwgc2VsZWN0ICA8Yj5JbXBvcnQKLWFzIGEgc2VydmljZSByZWZlcmVuY2UgdG8gYSBXU0lMIGRvY3VtZW50PC9iPi48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrICA8Yj5HbzwvYj4uPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iZDBlOTAiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+SW1wb3J0aW5nIGEgV1NETCBmaWxlIHRvIHlvdXIgZmlsZSBzeXN0ZW08L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VG8gaW1wb3J0IHRoZSBXU0RMIGZpbGUgdG8geW91ciBmaWxlIHN5c3RlbSwgY2xpY2sgdGhpcyBpY29uOgotIDxpbWFnZSBhbHQ9IkltcG9ydCBXU0RMIHRvIHlvdXIgZmlsZSBzeXN0ZW0gaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zzd3NkbGljb24uZ2lmIj4KLTwvaW1hZ2U+LiBTcGVjaWZ5IHdoZXJlIHlvdSB3YW50IHRoZSBXU0RMIGZpbGUgc2F2ZWQgb24geW91ciBzeXN0ZW0uPC9wPjwvY29udGV4dD4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iZDBlOTYiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+TGF1bmNoaW5nIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkPC90aXRsZT4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2UgV2l6YXJkLCBjbGljayB0aGlzIGljb246ICA8aW1hZ2UgYWx0PSJMYXVuY2ggdGhlIFdlYiBTZXJ2aWNlIFdpemFyZCBpY29uIgotaHJlZj0iLi4vaW1hZ2VzL3dzd2l6aWNvbi5naWYiPjwvaW1hZ2U+LiBZb3UgY2FuIHNlbGVjdCBpZiB5b3Ugd2FudCB0byBjcmVhdGUKLWEgV2ViIHNlcnZpY2UgY2xpZW50IG9yIGEgU2tlbGV0b24gV2ViIHNlcnZpY2UgZnJvbSB0aGUgV1NETCBmaWxlLiBDbGljayAgPGI+R288L2I+IHRvCi1sYXVuY2ggdGhlIHdpemFyZC48L3A+PC9jb250ZXh0PgotPC90YXNrYm9keT4KLTwvdGFzaz4KLTx0YXNrIGlkPSJkMGUxMDUiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+QWRkaW5nIGEgV1NETCBmaWxlIHRvIHlvdXIgZmF2b3JpdGVzPC90aXRsZT4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRvIGFkZCB0aGUgV1NETCBmaWxlIHRvIEZhdm9yaXRlcywgY2xpY2sgdGhpcyBpY29uOiAgPGltYWdlIGFsdD0iQWRkIFdTREwgdG8gRmF2b3JpdGVzIGljb24iCi1ocmVmPSIuLi9pbWFnZXMvd3NkbGZhdmljb24uZ2lmIj48L2ltYWdlPjwvcD48cD4uIFRoZSBTdGF0dXMgcGFuZSBkaXNwbGF5cwotdGhhdCB0aGUgV1NETCB3YXMgc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIHlvdXIgbGlzdCBvZiBmYXZvcml0ZXMuIDwvcD48L2NvbnRleHQ+Ci08L3Rhc2tib2R5PgotPC90YXNrPgotPHRhc2sgaWQ9ImQwZTExMCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5FeHBsb3JpbmcgV1NETCBkb2N1bWVudHMgdXNpbmcgdGhlIFdTREwgRXhwbG9yZXI6PC90aXRsZT4KLTx0YXNrYm9keT4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+U2VsZWN0IFdTREwgTWFpbiBpbiB0aGUgTmF2aWdhdG9yIHBhbmUsIGVudGVyIG9yIGJyb3dzZSB0byBhbiBleGlzdGluZwotV1NETCBVUkwgaW4gdGhlIHJpZ2h0LWhhbmQgcGFuZSwgYW5kIGNsaWNrICA8Yj5HbzwvYj4uIE5vdGUgdGhhdCB0aGUgRXhwbG9yZXIKLXdpbGwgb25seSBhbGxvdyB5b3UgdG8gYnJvd3NlIGZvciBXU0RMIGZpbGVzIHRoYXQgcmVzaWRlIGluIHRoZSA8Y29kZXBoPldlYkNvbnRlbnQvV1NETDwvY29kZXBoPiBmb2xkZXIKLW9mIGEgcHJvamVjdC4gVG8gZXhwbG9yZSBXU0RMIGZpbGVzIHN0b3JlZCBpbiBvdGhlciBsb2NhdGlvbnMgd2l0aGluIHlvdXIKLXdvcmtzcGFjZSwgdHlwZSB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlIG9yIHNlbGVjdCB0aGUgZmlsZSBpbiB0aGUgd29ya3NwYWNlLAotcmlnaHQtY2xpY2sgYW5kIHNlbGVjdCA8bWVudWNhc2NhZGU+PHVpY29udHJvbD5XZWIgU2VydmljZXMgPC91aWNvbnRyb2w+PHVpY29udHJvbD4gTGF1bmNoCi1XZWIgU2VydmljZXMgRXhwbG9yZXI8L3VpY29udHJvbD48L21lbnVjYXNjYWRlPi4gRm9yIHRoaXMgZXhhbXBsZSB0aGUgV1NETAotYmVpbmcgdXNlZCBpcyBhIFdlYiBTZXJ2aWNlIHdoaWNoIHJldHVybnMgYSB0ZW1wZXJhdHVyZSBmb3IgYW55IGVudGVyZWQgemlwCi1jb2RlLiAgIDxpbWFnZSBhbHQ9IiIgaHJlZj0iLi4vaW1hZ2VzL3dzZGxleHAuZ2lmIiBwbGFjZW1lbnQ9ImJyZWFrIj48L2ltYWdlPiAKLVRoZSBmb2xsb3dpbmcgbm9kZXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgV1NETCB0cmVlOiA8L2NtZD48aW5mbz48dWw+Ci08bGk+VGhlIFdTREwgbm9kZTogIDxpbWFnZSBhbHQ9IldTREwgbm9kZSBpY29uIiBocmVmPSIuLi9pbWFnZXMvd3NkbG5vZGUuZ2lmIj4KLTwvaW1hZ2U+PC9saT4KLTxsaT5UaGUgc2VydmljZSBub2RlICh3aGljaCByZXByZXNlbnRzIGEgc2VydmljZSBlbGVtZW50IHdpdGhpbiB0aGUgV1NETCBmaWxlKToKLSA8aW1hZ2UgYWx0PSJTZXJ2aWNlIG5vZGUgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL3NlcnZub2RlLmdpZiI+PC9pbWFnZT48L2xpPgotPGxpPlRoZSBiaW5kaW5nIG5vZGU6ICA8aW1hZ2UgYWx0PSJCaW5kaW5nIG5vZGUgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2JpbmRub2RlLmdpZiI+Ci08L2ltYWdlPjwvbGk+Ci08bGk+VGhlIG9wZXJhdGlvbiBub2RlOiAgPGltYWdlIGFsdD0iT3BlcmF0aW9uIG5vZGUgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL29wbm9kZS5naWYiPgotPC9pbWFnZT48L2xpPgotPC91bD48L2luZm8+PC9zdGVwPgotPHN0ZXA+PGNtZD5DbGlja2luZyB0aGUgU2VydmljZSBub2RlIGluIHRoZSBOYXZpZ2F0b3IgcGFuZSAoaW4gdGhpcyBleGFtcGxlCi10aGlzIHdvdWxkIGJlIHRoZSAgPHN5c3RlbW91dHB1dD5UZW1wZXJhdHVyZVNlcnZpY2U8L3N5c3RlbW91dHB1dD4gbm9kZSkgZGlzcGxheXMKLWFsbCB0aGUgYmluZGluZ3MgZm9yIHRoaXMgc2VydmljZSwgYXMgd2VsbCBhcyB0aGVpciB0eXBlIGFuZCBhIGJyaWVmIGRlc2NyaXB0aW9uCi1vZiB0aGUgYmluZGluZyBpZiB0aGUgV1NETCBwcm92aWRlciBoYXMgaW5jbHVkZWQgb25lIGluIHRoZSBBY3Rpb25zIHBhbmUuCi1UaHJlZSB0eXBlcyBvZiBiaW5kaW5ncyBhcmUgc3VwcG9ydGVkOiBTT0FQLCBIVFRQIEdldCwgYW5kIEhUVFAgUG9zdC4gICA8aW1hZ2UKLWFsdD0iIiBocmVmPSIuLi9pbWFnZXMvd3NkbHNlcnZkZXQuZ2lmIiBwbGFjZW1lbnQ9ImJyZWFrIj48L2ltYWdlPiAgVGhlIFdTREwKLXVzZWQgaW4gdGhpcyBleGFtcGxlIG9ubHkgaGFzIG9uZSBiaW5kaW5nLCAgPHN5c3RlbW91dHB1dD5UZW1wZXJhdHVyZUJpbmRpbmc8L3N5c3RlbW91dHB1dD4sCi13aGljaCBpcyByZXByZXNlbnRlZCBhcyB0aGUgIDxzeXN0ZW1vdXRwdXQ+VGVtcGVyYXR1cmVQb3J0VHlwZTwvc3lzdGVtb3V0cHV0PiBub2RlCi1pbiB0aGUgV1NETCB0cmVlIGluIHRoZSBOYXZpZ2F0b3IgcGFuZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNraW5nIGEgZGlzcGxheWVkIGJpbmRpbmcgb3IgaXRzIG5vZGUgZGlzcGxheXMgdGhlIFdTREwgYmluZGluZwotZGV0YWlscyBpbiB0aGUgQWN0aW9ucyBwYW5lLiBUaGlzIGluY2x1ZGVzIHRoZSBvcGVyYXRpb25zIGFuZCBlbmRwb2ludHMgYXZhaWxhYmxlCi1mb3IgdGhpcyBzZXJ2aWNlLiAgIDxpbWFnZSBhbHQ9IiIgaHJlZj0iLi4vaW1hZ2VzL3dzZGxibmRkZXRsLmdpZiIgcGxhY2VtZW50PSJicmVhayI+Ci08L2ltYWdlPiAgSW4gdGhpcyB2aWV3IHlvdSBjYW4gYWRkIG9yIHJlbW92ZSBlbmRwb2ludHMgZm9yIHRoZSBzZXJ2aWNlLiBUbwotYWRkIGFuIGVuZHBvaW50LCBjbGljayAgPGI+QWRkPC9iPiwgZW50ZXIgdGhlIFVSTCBmb3IgdGhlIGVuZHBvaW50LCBhbmQgY2xpY2sKLSA8Yj5HbzwvYj4uIFRoZSBTdGF0dXMgcGFuZSBzaG91bGQgc2F5IHRoYXQgdGhlIGVuZHBvaW50cyB3ZXJlIHN1Y2Nlc3NmdWxseQotdXBkYXRlZC4gVG8gcmVtb3ZlIGFuIGVuZHBvaW50LCBzZWxlY3QgaXRzIGNoZWNrYm94LCBhbmQgY2xpY2sgIDxiPlJlbW92ZTwvYj4uPC9jbWQ+Ci08L3N0ZXA+Ci08L3N0ZXBzPgotPHBvc3RyZXE+PG5vdGU+PGRyYWZ0LWNvbW1lbnQ+MjgyNDEzIChyZWYgMjc5MjA5KTwvZHJhZnQtY29tbWVudD5XaGVuIHRoZQotV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGxvYWRzIFdTREwgZmlsZXMgdGhhdCB1c2UgbXVsdGlwbGUgaW5saW5lIHNjaGVtYXMsIHdhcm5pbmcKLW1lc3NhZ2VzIHdpbGwgYmUgZ2VuZXJhdGVkIGZvciB0eXBlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGFjcm9zcyB0aGVzZSBzY2hlbWFzLgotVGhlIHdhcm5pbmcgbWVzc2FnZSB3aWxsIGJlIHNpbWlsYXIgdG86IDxjb2RlcGg+UmVmZXJlbmNlIG9mIHR5cGUgJmx0OzxpPnF1YWxpZmllZF90eXBlX25hbWU8L2k+PgotaXNuJ3QgcmVzb2x2ZWQuPC9jb2RlcGg+PC9ub3RlPjwvcG9zdHJlcT4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N1ZGRpLmRpdGEiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0idHVkZGlleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0idHN0cnRleHAuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PiBEZXZlbG9waW5nIFdlYiBzZXJ2aWNlczwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R3c2RsZXhwLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90d3NkbGV4cC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWUzZGMwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R3c2RsZXhwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iRXhwbG9yaW5nIFdTREwgdXNpbmcgdGhlIFdTREwgRXhwbG9yZXIiIC8+Ci08bWV0YSBjb250ZW50PSJXU0RMIGZpbGVzLCBleHBsb3JpbmcsIFdlYiBzZXJ2aWNlcywgZXhwbG9yaW5nIFdTREwgZmlsZXMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXU0RMIGZpbGVzLCBleHBsb3JpbmcsIFdlYiBzZXJ2aWNlcywgZXhwbG9yaW5nIFdTREwgZmlsZXMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InR3c2RsZXhwIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+RXhwbG9yaW5nIFdTREwgdXNpbmcgdGhlIFdTREwgRXhwbG9yZXI8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InR3c2RsZXhwIj48YSBuYW1lPSJ0d3NkbGV4cCI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+RXhwbG9yaW5nIFdTREwgdXNpbmcgdGhlIFdTREwgRXhwbG9yZXI8L2gxPgotCi0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJwIj5QcmVyZXF1aXNpdGVzOiBUbyB1c2UgdGhlIFdTREwgRXhwbG9yZXIsIHlvdSBtdXN0IGhhdmUgYSB2YWxpZCBVUkwKLWZvciBhIFdTREwgZG9jdW1lbnQuPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPlRoZSBXU0RMIEV4cGxvcmVyIGFsbG93cyB5b3UgdG8gZXhwbG9yZSwgYW5kIHRlc3QgV1NETCBkb2N1bWVudHMuCi1UaGUgZm9sbG93aW5nIGFjdGlvbnMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgV1NETCBFeHBsb3Jlcjo8dWw+Ci08bGk+U2hvdyBXU0RMIGRldGFpbHM6ICA8aW1nIHNyYz0iLi4vaW1hZ2VzL3dzZGxkdGxpY29uLmdpZiIgYWx0PSJXU0RMIERldGFpbHMgaWNvbiIgLz48L2xpPgotCi08bGk+SW1wb3J0IFdTREwgdG8gdGhlIFdvcmtiZW5jaDogIDxpbWcgc3JjPSIuLi9pbWFnZXMvbXB0d3NkbGljb24uZ2lmIiBhbHQ9IkltcG9ydCBXU0RMIHRvIHRoZSBXb3JrYmVuY2ggaWNvbiIgLz48L2xpPgotCi08bGk+SW1wb3J0IFdTREwgdG8geW91ciBmaWxlIHN5c3RlbTogIDxpbWcgc3JjPSIuLi9pbWFnZXMvZnN3c2RsaWNvbi5naWYiIGFsdD0iSW1wb3J0IFdTREwgdG8geW91ciBmaWxlIHN5c3RlbSBpY29uIiAvPjwvbGk+Ci0KLTxsaT5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlIFdpemFyZDogIDxpbWcgc3JjPSIuLi9pbWFnZXMvd3N3aXppY29uLmdpZiIgYWx0PSJMYXVuY2ggdGhlIFdlYiBTZXJ2aWNlIFdpemFyZCBpY29uIiAvPjwvbGk+Ci0KLTxsaT5BZGQgV1NETCB0byBGYXZvcml0ZXM6ICA8aW1nIHNyYz0iLi4vaW1hZ2VzL3dzZGxmYXZpY29uLmdpZiIgYWx0PSJBZGQgV1NETCB0byBGYXZvcml0ZXMgaWNvbiIgLz48L2xpPgotCi08L3VsPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiB4bWw6bGFuZz0iZW4tdXMiIGlkPSJkMGU0NyI+PGEgbmFtZT0iZDBlNDciPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+TGF1bmNoaW5nIHRoZSBXU0RMIEV4cGxvcmVyPC9oMj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRvIGxhdW5jaCB0aGUgV1NETCBFeHBsb3JlciwgY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpPjxzcGFuPiA8YSBocmVmPSJ0c3RydGV4cC5odG1sIj5MYXVuY2ggdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT4uPC9zcGFuPgotPC9saT4KLQotPGxpPjxzcGFuPlN3aXRjaCB0byB0aGUgV1NETCBFeHBsb3JlciBieSBjbGlja2luZyB0aGUgaWNvbiBpbiB0aGUgdXBwZXIgcmlnaHQtaGFuZAotY29ybmVyICA8aW1nIHNyYz0iLi4vaW1hZ2VzL3dzZGxpY29uLmdpZiIgYWx0PSJJY29uIHRvIGxhdW5jaCB0aGUgV1NETCBFeHBsb3JlciIgLz4uPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgeG1sOmxhbmc9ImVuLXVzIiBpZD0iZDBlNjQiPjxhIG5hbWU9ImQwZTY0Ij48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPkltcG9ydGluZyBhIFdTREwgZmlsZSB0byB5b3VyIHdvcmtzcGFjZTwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBpbXBvcnQgdGhlIFdTREwgZmlsZSB0byB0aGUgV29ya2JlbmNoOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+Q2xpY2sgdGhpcyBpY29uOiAgPGltZyBzcmM9Ii4uL2ltYWdlcy9tcHR3c2RsaWNvbi5naWYiIGFsdD0iSW1wb3J0IFdTREwgdG8gdGhlIFdvcmtiZW5jaCBpY29uIiAvPi48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPlNlbGVjdCB0aGUgcHJvamVjdCBpbnRvIHdoaWNoIHlvdSB3YW50IHRvIGltcG9ydCB0aGUgV1NETC48L3NwYW4+Ci08L2xpPgotCi08bGk+PHNwYW4+SWYgeW91IHdhbnQgdG8gZ2VuZXJhdGUgYSBXU0lMIGZpbGUgZnJvbSB0aGUgV1NETCwgc2VsZWN0ICA8c3Ryb25nPkltcG9ydAotYXMgYSBzZXJ2aWNlIHJlZmVyZW5jZSB0byBhIFdTSUwgZG9jdW1lbnQ8L3N0cm9uZz4uPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayAgPHN0cm9uZz5Hbzwvc3Ryb25nPi48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiB4bWw6bGFuZz0iZW4tdXMiIGlkPSJkMGU5MCI+PGEgbmFtZT0iZDBlOTAiPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+SW1wb3J0aW5nIGEgV1NETCBmaWxlIHRvIHlvdXIgZmlsZSBzeXN0ZW08L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VG8gaW1wb3J0IHRoZSBXU0RMIGZpbGUgdG8geW91ciBmaWxlIHN5c3RlbSwgY2xpY2sgdGhpcyBpY29uOgotIDxpbWcgc3JjPSIuLi9pbWFnZXMvZnN3c2RsaWNvbi5naWYiIGFsdD0iSW1wb3J0IFdTREwgdG8geW91ciBmaWxlIHN5c3RlbSBpY29uIiAvPi4gU3BlY2lmeSB3aGVyZSB5b3Ugd2FudCB0aGUgV1NETCBmaWxlIHNhdmVkIG9uIHlvdXIgc3lzdGVtLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIHhtbDpsYW5nPSJlbi11cyIgaWQ9ImQwZTk2Ij48YSBuYW1lPSJkMGU5NiI+PCEtLSAtLT48L2E+Ci08aDIgY2xhc3M9InRvcGljdGl0bGUyIj5MYXVuY2hpbmcgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmQ8L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VG8gbGF1bmNoIHRoZSBXZWIgU2VydmljZSBXaXphcmQsIGNsaWNrIHRoaXMgaWNvbjogIDxpbWcgc3JjPSIuLi9pbWFnZXMvd3N3aXppY29uLmdpZiIgYWx0PSJMYXVuY2ggdGhlIFdlYiBTZXJ2aWNlIFdpemFyZCBpY29uIiAvPi4gWW91IGNhbiBzZWxlY3QgaWYgeW91IHdhbnQgdG8gY3JlYXRlCi1hIFdlYiBzZXJ2aWNlIGNsaWVudCBvciBhIFNrZWxldG9uIFdlYiBzZXJ2aWNlIGZyb20gdGhlIFdTREwgZmlsZS4gQ2xpY2sgIDxzdHJvbmc+R288L3N0cm9uZz4gdG8KLWxhdW5jaCB0aGUgd2l6YXJkLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIHhtbDpsYW5nPSJlbi11cyIgaWQ9ImQwZTEwNSI+PGEgbmFtZT0iZDBlMTA1Ij48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPkFkZGluZyBhIFdTREwgZmlsZSB0byB5b3VyIGZhdm9yaXRlczwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBhZGQgdGhlIFdTREwgZmlsZSB0byBGYXZvcml0ZXMsIGNsaWNrIHRoaXMgaWNvbjogIDxpbWcgc3JjPSIuLi9pbWFnZXMvd3NkbGZhdmljb24uZ2lmIiBhbHQ9IkFkZCBXU0RMIHRvIEZhdm9yaXRlcyBpY29uIiAvPjwvcD4KLTxwPi4gVGhlIFN0YXR1cyBwYW5lIGRpc3BsYXlzCi10aGF0IHRoZSBXU0RMIHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQgdG8geW91ciBsaXN0IG9mIGZhdm9yaXRlcy4gPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgeG1sOmxhbmc9ImVuLXVzIiBpZD0iZDBlMTEwIj48YSBuYW1lPSJkMGUxMTAiPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+RXhwbG9yaW5nIFdTREwgZG9jdW1lbnRzIHVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyOjwvaDI+Ci0KLTxkaXY+Ci08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCBXU0RMIE1haW4gaW4gdGhlIE5hdmlnYXRvciBwYW5lLCBlbnRlciBvciBicm93c2UgdG8gYW4gZXhpc3RpbmcKLVdTREwgVVJMIGluIHRoZSByaWdodC1oYW5kIHBhbmUsIGFuZCBjbGljayAgPHN0cm9uZz5Hbzwvc3Ryb25nPi4gTm90ZSB0aGF0IHRoZSBFeHBsb3Jlcgotd2lsbCBvbmx5IGFsbG93IHlvdSB0byBicm93c2UgZm9yIFdTREwgZmlsZXMgdGhhdCByZXNpZGUgaW4gdGhlIDxzYW1wIGNsYXNzPSJjb2RlcGgiPldlYkNvbnRlbnQvV1NETDwvc2FtcD4gZm9sZGVyCi1vZiBhIHByb2plY3QuIFRvIGV4cGxvcmUgV1NETCBmaWxlcyBzdG9yZWQgaW4gb3RoZXIgbG9jYXRpb25zIHdpdGhpbiB5b3VyCi13b3Jrc3BhY2UsIHR5cGUgdGhlIG5hbWUgb2YgdGhlIFdTREwgZmlsZSBvciBzZWxlY3QgdGhlIGZpbGUgaW4gdGhlIHdvcmtzcGFjZSwKLXJpZ2h0LWNsaWNrIGFuZCBzZWxlY3QgPHNwYW4gY2xhc3M9Im1lbnVjYXNjYWRlIj48c3BhbiBjbGFzcz0idWljb250cm9sIj5XZWIgU2VydmljZXMgPC9zcGFuPiAmZ3Q7IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPiBMYXVuY2gKLVdlYiBTZXJ2aWNlcyBFeHBsb3Jlcjwvc3Bhbj48L3NwYW4+LiBGb3IgdGhpcyBleGFtcGxlIHRoZSBXU0RMCi1iZWluZyB1c2VkIGlzIGEgV2ViIFNlcnZpY2Ugd2hpY2ggcmV0dXJucyBhIHRlbXBlcmF0dXJlIGZvciBhbnkgZW50ZXJlZCB6aXAKLWNvZGUuICAgPGJyIC8+PGltZyBzcmM9Ii4uL2ltYWdlcy93c2RsZXhwLmdpZiIgYWx0PSIiIC8+PGJyIC8+IAotVGhlIGZvbGxvd2luZyBub2RlcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBXU0RMIHRyZWU6IDwvc3Bhbj4gPHVsPgotPGxpPlRoZSBXU0RMIG5vZGU6ICA8aW1nIHNyYz0iLi4vaW1hZ2VzL3dzZGxub2RlLmdpZiIgYWx0PSJXU0RMIG5vZGUgaWNvbiIgLz48L2xpPgotCi08bGk+VGhlIHNlcnZpY2Ugbm9kZSAod2hpY2ggcmVwcmVzZW50cyBhIHNlcnZpY2UgZWxlbWVudCB3aXRoaW4gdGhlIFdTREwgZmlsZSk6Ci0gPGltZyBzcmM9Ii4uL2ltYWdlcy9zZXJ2bm9kZS5naWYiIGFsdD0iU2VydmljZSBub2RlIGljb24iIC8+PC9saT4KLQotPGxpPlRoZSBiaW5kaW5nIG5vZGU6ICA8aW1nIHNyYz0iLi4vaW1hZ2VzL2JpbmRub2RlLmdpZiIgYWx0PSJCaW5kaW5nIG5vZGUgaWNvbiIgLz48L2xpPgotCi08bGk+VGhlIG9wZXJhdGlvbiBub2RlOiAgPGltZyBzcmM9Ii4uL2ltYWdlcy9vcG5vZGUuZ2lmIiBhbHQ9Ik9wZXJhdGlvbiBub2RlIGljb24iIC8+PC9saT4KLQotPC91bD4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+Q2xpY2tpbmcgdGhlIFNlcnZpY2Ugbm9kZSBpbiB0aGUgTmF2aWdhdG9yIHBhbmUgKGluIHRoaXMgZXhhbXBsZQotdGhpcyB3b3VsZCBiZSB0aGUgIDx0dCBjbGFzcz0ic3lzb3V0Ij5UZW1wZXJhdHVyZVNlcnZpY2U8L3R0PiBub2RlKSBkaXNwbGF5cwotYWxsIHRoZSBiaW5kaW5ncyBmb3IgdGhpcyBzZXJ2aWNlLCBhcyB3ZWxsIGFzIHRoZWlyIHR5cGUgYW5kIGEgYnJpZWYgZGVzY3JpcHRpb24KLW9mIHRoZSBiaW5kaW5nIGlmIHRoZSBXU0RMIHByb3ZpZGVyIGhhcyBpbmNsdWRlZCBvbmUgaW4gdGhlIEFjdGlvbnMgcGFuZS4KLVRocmVlIHR5cGVzIG9mIGJpbmRpbmdzIGFyZSBzdXBwb3J0ZWQ6IFNPQVAsIEhUVFAgR2V0LCBhbmQgSFRUUCBQb3N0LiAgIDxiciAvPjxpbWcgc3JjPSIuLi9pbWFnZXMvd3NkbHNlcnZkZXQuZ2lmIiBhbHQ9IiIgLz48YnIgLz4gIFRoZSBXU0RMCi11c2VkIGluIHRoaXMgZXhhbXBsZSBvbmx5IGhhcyBvbmUgYmluZGluZywgIDx0dCBjbGFzcz0ic3lzb3V0Ij5UZW1wZXJhdHVyZUJpbmRpbmc8L3R0PiwKLXdoaWNoIGlzIHJlcHJlc2VudGVkIGFzIHRoZSAgPHR0IGNsYXNzPSJzeXNvdXQiPlRlbXBlcmF0dXJlUG9ydFR5cGU8L3R0PiBub2RlCi1pbiB0aGUgV1NETCB0cmVlIGluIHRoZSBOYXZpZ2F0b3IgcGFuZS48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5DbGlja2luZyBhIGRpc3BsYXllZCBiaW5kaW5nIG9yIGl0cyBub2RlIGRpc3BsYXlzIHRoZSBXU0RMIGJpbmRpbmcKLWRldGFpbHMgaW4gdGhlIEFjdGlvbnMgcGFuZS4gVGhpcyBpbmNsdWRlcyB0aGUgb3BlcmF0aW9ucyBhbmQgZW5kcG9pbnRzIGF2YWlsYWJsZQotZm9yIHRoaXMgc2VydmljZS4gICA8YnIgLz48aW1nIHNyYz0iLi4vaW1hZ2VzL3dzZGxibmRkZXRsLmdpZiIgYWx0PSIiIC8+PGJyIC8+ICBJbiB0aGlzIHZpZXcgeW91IGNhbiBhZGQgb3IgcmVtb3ZlIGVuZHBvaW50cyBmb3IgdGhlIHNlcnZpY2UuIFRvCi1hZGQgYW4gZW5kcG9pbnQsIGNsaWNrICA8c3Ryb25nPkFkZDwvc3Ryb25nPiwgZW50ZXIgdGhlIFVSTCBmb3IgdGhlIGVuZHBvaW50LCBhbmQgY2xpY2sKLSA8c3Ryb25nPkdvPC9zdHJvbmc+LiBUaGUgU3RhdHVzIHBhbmUgc2hvdWxkIHNheSB0aGF0IHRoZSBlbmRwb2ludHMgd2VyZSBzdWNjZXNzZnVsbHkKLXVwZGF0ZWQuIFRvIHJlbW92ZSBhbiBlbmRwb2ludCwgc2VsZWN0IGl0cyBjaGVja2JveCwgYW5kIGNsaWNrICA8c3Ryb25nPlJlbW92ZTwvc3Ryb25nPi48L3NwYW4+Ci08L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48ZGl2IGNsYXNzPSJub3RlIj48c3BhbiBjbGFzcz0ibm90ZXRpdGxlIj5Ob3RlOjwvc3Bhbj4gV2hlbiB0aGUKLVdlYiBTZXJ2aWNlcyBFeHBsb3JlciBsb2FkcyBXU0RMIGZpbGVzIHRoYXQgdXNlIG11bHRpcGxlIGlubGluZSBzY2hlbWFzLCB3YXJuaW5nCi1tZXNzYWdlcyB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgdHlwZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBhY3Jvc3MgdGhlc2Ugc2NoZW1hcy4KLVRoZSB3YXJuaW5nIG1lc3NhZ2Ugd2lsbCBiZSBzaW1pbGFyIHRvOiA8c2FtcCBjbGFzcz0iY29kZXBoIj5SZWZlcmVuY2Ugb2YgdHlwZSAmbHQ7PGVtPnF1YWxpZmllZF90eXBlX25hbWU8L2VtPiZndDsKLWlzbid0IHJlc29sdmVkLjwvc2FtcD48L2Rpdj4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwiPldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3VkZGkuaHRtbCIgdGl0bGU9IlVuaXZlcnNhbCBEZXNjcmlwdGlvbiwgRGlzY292ZXJ5LCBhbmQgSW50ZWdyYXRpb24gKFVEREkpIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHdheSB0byBwdWJsaXNoIGFuZCBkaXNjb3ZlciBpbmZvcm1hdGlvbiBhYm91dCBXZWIgc2VydmljZXMuIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InR1ZGRpZXhwLmh0bWwiIHRpdGxlPSJUaHJvdWdoIFVEREkgYW5kIFdTSUwsIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4gZGlzY292ZXIgV1NETCBkb2N1bWVudHMgYW5kIGJpbmQgd2l0aCB0aGVtIHRvIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIG9yIHBlcmZvcm0gb3RoZXIgYnVzaW5lc3MgcHJvY2Vzc2VzLiI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0c3RydGV4cC5odG1sIiB0aXRsZT0iVGhlIFdlYiBzZXJ2aWNlcyB0b29scyBhbGxvd3MgeW91IHRvIGxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIGluIHNldmVyYWwgd2F5cy4iPkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5odG1sIj4gRGV2ZWxvcGluZyBXZWIgc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotCi0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci93c2NvbnN1bXB0aW9uYnVpbGRfdG9jLmRpdGFtYXAgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci93c2NvbnN1bXB0aW9uYnVpbGRfdG9jLmRpdGFtYXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMDZhN2QuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvd3Njb25zdW1wdGlvbmJ1aWxkX3RvYy5kaXRhbWFwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgbWFwIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIE1hcC8vRU4iCi0gIm1hcC5kdGQiPgotPG1hcCBhbmNob3JyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93ZWJzZXJ2aWNlX3RvYy5kaXRhbWFwI3dzY29uc3VtcHRpb250IgotaWQ9IndzY29uc3VtcHRpb250IiB0aXRsZT0id3Njb25zdW1wdGlvbnQiPgotPHRvcGljcmVmIGhyZWY9ImNvbmNlcHRzL2N1ZGRpLmRpdGEiIG5hdnRpdGxlPSJVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSI+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9ImNvbmNlcHRzL2N3c2RsdWQuZGl0YSIgbmF2dGl0bGU9IlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTREwiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90ZGlzY292LmRpdGEiIG5hdnRpdGxlPSJEaXNjb3ZlcmluZyBhbmQgaW1wb3J0aW5nIGEgV2ViIHNlcnZpY2UiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90d3NkbGV4cC5kaXRhIiBuYXZ0aXRsZT0iRXhwbG9yaW5nIGFuZCB0ZXN0aW5nIFdTREwgdXNpbmcgdGhlIFdTREwgRXhwbG9yZXIiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90dGVzdHdzZGwuZGl0YSIgbmF2dGl0bGU9IlRlc3RpbmcgV1NETCBkb2N1bWVudHMgYW5kIFdlYiBzZXJ2aWNlcyB3aXRoIHRoZSBXU0RMIEV4cGxvcmVyIj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHVkZGlleHAuZGl0YSIgbmF2dGl0bGU9IlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllcyI+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHN0cnRleHAuZGl0YSIgbmF2dGl0bGU9IkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHJlZy5kaXRhIiBuYXZ0aXRsZT0iUmVnaXN0ZXJpbmcgd2l0aCBhIHJlZ2lzdHJ5Ij48L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3Rsb2dleHAuZGl0YSIgbmF2dGl0bGU9IkxvZ2dpbmcgaW50byBhIHJlZ2lzdHJ5Ij48L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RhZGRyZWcuZGl0YSIgbmF2dGl0bGU9IkFkZGluZyBhIFJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90cHViZW50LmRpdGEiIG5hdnRpdGxlPSJQdWJsaXNoaW5nIGEgYnVzaW5lc3MgZW50aXR5Ij4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHB1Ymxpc2guZGl0YSIgbmF2dGl0bGU9IlB1Ymxpc2hpbmcgYSBXZWIgc2VydmljZSI+Ci08dG9waWNyZWYgaHJlZj0icmVmL3J1ZGRpLmRpdGEiIG5hdnRpdGxlPSJEYXRhIHN0cnVjdHVyZSB0eXBlcyAoVURESSByZWdpc3RyeSkiPgotPC90b3BpY3JlZj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHVwZGF0ZS5kaXRhIiBuYXZ0aXRsZT0iVXBkYXRpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSI+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3R1bnB1Yi5kaXRhIiBuYXZ0aXRsZT0iUmVtb3ZpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSBmcm9tIGEgcmVnaXN0cnkiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90YnVzcHJvai5kaXRhIiBuYXZ0aXRsZT0iTWFuYWdpbmcgcmVmZXJlbmNlZCBzZXJ2aWNlcyI+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3Rhc3NlcnQuZGl0YSIgbmF2dGl0bGU9Ik1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zIj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdGJrbXJrLmRpdGEiIG5hdnRpdGxlPSJBZGRpbmcgdG8gRmF2b3JpdGVzIj48L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RnZW53c2lsLmRpdGEiIG5hdnRpdGxlPSJHZW5lcmF0aW5nIFdTSUwiPjwvdG9waWNyZWY+Ci08L3RvcGljcmVmPgotPC9tYXA+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci93c2NvbnN1bXB0aW9uYnVpbGRfdG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3dzY29uc3VtcHRpb25idWlsZF90b2MueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDU3NDBlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3dzY29uc3VtcHRpb25idWlsZF90b2MueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC50b2MiPz4KLQotPHRvYyBsaW5rX3RvPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvd2Vic2VydmljZV90b2MueG1sI3dzY29uc3VtcHRpb250IiBsYWJlbD0id3Njb25zdW1wdGlvbnQiIHRvcGljPSJjb25jZXB0cy9jdWRkaS5odG1sIj4KLTx0b3BpYyBsYWJlbD0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkiIGhyZWY9ImNvbmNlcHRzL2N1ZGRpLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iUmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NETCIgaHJlZj0iY29uY2VwdHMvY3dzZGx1ZC5odG1sIi8+Ci08dG9waWMgbGFiZWw9IkRpc2NvdmVyaW5nIFdlYiBTZXJ2aWNlcyIgaHJlZj0idGFza3MvdGRpc2Nvdi5odG1sIi8+Ci08dG9waWMgbGFiZWw9IkV4cGxvcmluZyBXU0RMIHVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyIiBocmVmPSJ0YXNrcy90d3NkbGV4cC5odG1sIi8+Ci08dG9waWMgbGFiZWw9IlRlc3RpbmcgV1NETCBkb2N1bWVudHMgYW5kIFdlYiBzZXJ2aWNlcyB1c2luZyB0aGUgV1NETCBFeHBsb3JlciIgaHJlZj0idGFza3MvdHRlc3R3c2RsLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iUHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzIiBocmVmPSJ0YXNrcy90dWRkaWV4cC5odG1sIj4KLTx0b3BpYyBsYWJlbD0iTGF1bmNoaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiIGhyZWY9InRhc2tzL3RzdHJ0ZXhwLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iUmVnaXN0ZXJpbmcgd2l0aCBhIFVEREkgcmVnaXN0cnkiIGhyZWY9InRhc2tzL3RyZWcuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJMb2dnaW5nIGluIHRvIGEgVURESSByZWdpc3RyeSIgaHJlZj0idGFza3MvdGxvZ2V4cC5odG1sIi8+Ci08dG9waWMgbGFiZWw9IkFkZGluZyBhIFJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiIGhyZWY9InRhc2tzL3RhZGRyZWcuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJQdWJsaXNoaW5nIGEgYnVzaW5lc3MgZW50aXR5IiBocmVmPSJ0YXNrcy90cHViZW50Lmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iUHVibGlzaGluZyBhIFdlYiBzZXJ2aWNlIiBocmVmPSJ0YXNrcy90cHVibGlzaC5odG1sIj4KLTx0b3BpYyBsYWJlbD0iRGF0YSBzdHJ1Y3R1cmUgdHlwZXMgKFVEREkgcmVnaXN0cnkpIiBocmVmPSJyZWYvcnVkZGkuaHRtbCIvPgotPC90b3BpYz4KLTx0b3BpYyBsYWJlbD0iVXBkYXRpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSIgaHJlZj0idGFza3MvdHVwZGF0ZS5odG1sIi8+Ci08dG9waWMgbGFiZWw9IlJlbW92aW5nIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UgZnJvbSBhIHJlZ2lzdHJ5IiBocmVmPSJ0YXNrcy90dW5wdWIuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJNYW5hZ2luZyByZWZlcmVuY2VkIHNlcnZpY2VzIiBocmVmPSJ0YXNrcy90YnVzcHJvai5odG1sIi8+Ci08dG9waWMgbGFiZWw9Ik1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zIiBocmVmPSJ0YXNrcy90YXNzZXJ0Lmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iQWRkaW5nIGEgcmVnaXN0cnksIGJ1c2luZXNzIGVudGl0eSwgYnVzaW5lc3Mgc2VydmljZSwgc2VydmljZSBpbnRlcmZhY2UsIFdTSUwsIG9yIFdTREwgc2VydmljZSB0byBGYXZvcml0ZXMiIGhyZWY9InRhc2tzL3Ria21yay5odG1sIi8+Ci08dG9waWMgbGFiZWw9IkdlbmVyYXRpbmcgYSBXU0lMIGZpbGUiIGhyZWY9InRhc2tzL3RnZW53c2lsLmh0bWwiLz4KLTwvdG9waWM+Ci08L3RvYz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3dzY29uc3VtcHRpb250X3RvYy5kaXRhbWFwIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvd3Njb25zdW1wdGlvbnRfdG9jLmRpdGFtYXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MjM3MGIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvd3Njb25zdW1wdGlvbnRfdG9jLmRpdGFtYXAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSBtYXAgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgTWFwLy9FTiIKLSAibWFwLmR0ZCI+Ci08bWFwIGFuY2hvcnJlZj0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3dlYnNlcnZpY2VfdG9jLmRpdGFtYXAjd3Njb25zdW1wdGlvbnQiCi1pZD0id3Njb25zdW1wdGlvbnQiIHRpdGxlPSJ3c2NvbnN1bXB0aW9udCI+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHVkZGlleHAuZGl0YSIgbmF2dGl0bGU9IlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllcyI+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHN0cnRleHAuZGl0YSIgbmF2dGl0bGU9IkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHJlZy5kaXRhIiBuYXZ0aXRsZT0iUmVnaXN0ZXJpbmcgd2l0aCBhIHJlZ2lzdHJ5Ij48L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3Rsb2dleHAuZGl0YSIgbmF2dGl0bGU9IkxvZ2dpbmcgaW50byBhIHJlZ2lzdHJ5Ij48L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RhZGRyZWcuZGl0YSIgbmF2dGl0bGU9IkFkZGluZyBhIFJlZ2lzdHJ5IHRvIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90cHViZW50LmRpdGEiIG5hdnRpdGxlPSJQdWJsaXNoaW5nIGEgYnVzaW5lc3MgZW50aXR5Ij4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHB1Ymxpc2guZGl0YSIgbmF2dGl0bGU9IlB1Ymxpc2hpbmcgYSBXZWIgc2VydmljZSI+Ci08dG9waWNyZWYgaHJlZj0icmVmL3J1ZGRpLmRpdGEiIG5hdnRpdGxlPSJEYXRhIHN0cnVjdHVyZSB0eXBlcyAoVURESSByZWdpc3RyeSkiPgotPC90b3BpY3JlZj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHVwZGF0ZS5kaXRhIiBuYXZ0aXRsZT0iVXBkYXRpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSI+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3R1bnB1Yi5kaXRhIiBuYXZ0aXRsZT0iUmVtb3ZpbmcgYSBidXNpbmVzcyBlbnRpdHksIFdlYiBzZXJ2aWNlLCBvciBzZXJ2aWNlIGludGVyZmFjZSBmcm9tIGEgcmVnaXN0cnkiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90YnVzcHJvai5kaXRhIiBuYXZ0aXRsZT0iTWFuYWdpbmcgcmVmZXJlbmNlZCBzZXJ2aWNlcyI+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3Rhc3NlcnQuZGl0YSIgbmF2dGl0bGU9Ik1hbmFnaW5nIHB1Ymxpc2hlciBhc3NlcnRpb25zIj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdGJrbXJrLmRpdGEiIG5hdnRpdGxlPSJBZGRpbmcgdG8gRmF2b3JpdGVzIj48L3RvcGljcmVmPgotPC90b3BpY3JlZj4KLTwvbWFwPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvd3Njb25zdW1wdGlvbnRfdG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3dzY29uc3VtcHRpb250X3RvYy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZTYwYjQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvd3Njb25zdW1wdGlvbnRfdG9jLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+Ci0KLTx0b2MgbGlua190bz0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3dlYnNlcnZpY2VfdG9jLnhtbCN3c2NvbnN1bXB0aW9udCIgbGFiZWw9IndzY29uc3VtcHRpb250IiB0b3BpYz0idGFza3MvdHVkZGlleHAuaHRtbCI+Ci08dG9waWMgbGFiZWw9IlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllcyIgaHJlZj0idGFza3MvdHVkZGlleHAuaHRtbCI+Ci08dG9waWMgbGFiZWw9IkxhdW5jaGluZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIiBocmVmPSJ0YXNrcy90c3RydGV4cC5odG1sIi8+Ci08dG9waWMgbGFiZWw9IlJlZ2lzdGVyaW5nIHdpdGggYSBVRERJIHJlZ2lzdHJ5IiBocmVmPSJ0YXNrcy90cmVnLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iTG9nZ2luZyBpbiB0byBhIFVEREkgcmVnaXN0cnkiIGhyZWY9InRhc2tzL3Rsb2dleHAuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJBZGRpbmcgYSBSZWdpc3RyeSB0byB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIiBocmVmPSJ0YXNrcy90YWRkcmVnLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iUHVibGlzaGluZyBhIGJ1c2luZXNzIGVudGl0eSIgaHJlZj0idGFza3MvdHB1YmVudC5odG1sIi8+Ci08dG9waWMgbGFiZWw9IlB1Ymxpc2hpbmcgYSBXZWIgc2VydmljZSIgaHJlZj0idGFza3MvdHB1Ymxpc2guaHRtbCI+Ci08dG9waWMgbGFiZWw9IkRhdGEgc3RydWN0dXJlIHR5cGVzIChVRERJIHJlZ2lzdHJ5KSIgaHJlZj0icmVmL3J1ZGRpLmh0bWwiLz4KLTwvdG9waWM+Ci08dG9waWMgbGFiZWw9IlVwZGF0aW5nIGEgYnVzaW5lc3MgZW50aXR5LCBXZWIgc2VydmljZSwgb3Igc2VydmljZSBpbnRlcmZhY2UiIGhyZWY9InRhc2tzL3R1cGRhdGUuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJSZW1vdmluZyBhIGJ1c2luZXNzIGVudGl0eSwgV2ViIHNlcnZpY2UsIG9yIHNlcnZpY2UgaW50ZXJmYWNlIGZyb20gYSByZWdpc3RyeSIgaHJlZj0idGFza3MvdHVucHViLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iTWFuYWdpbmcgcmVmZXJlbmNlZCBzZXJ2aWNlcyIgaHJlZj0idGFza3MvdGJ1c3Byb2ouaHRtbCIvPgotPHRvcGljIGxhYmVsPSJNYW5hZ2luZyBwdWJsaXNoZXIgYXNzZXJ0aW9ucyIgaHJlZj0idGFza3MvdGFzc2VydC5odG1sIi8+Ci08dG9waWMgbGFiZWw9IkFkZGluZyBhIHJlZ2lzdHJ5LCBidXNpbmVzcyBlbnRpdHksIGJ1c2luZXNzIHNlcnZpY2UsIHNlcnZpY2UgaW50ZXJmYWNlLCBXU0lMLCBvciBXU0RMIHNlcnZpY2UgdG8gRmF2b3JpdGVzIiBocmVmPSJ0YXNrcy90YmttcmsuaHRtbCIvPgotPC90b3BpYz4KLTwvdG9jPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLmN2c2lnbm9yZSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YTdiMjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyXzEuMC4wLmphcgotYmFrCi10ZW1wCi1idWlsZC54bWwKLW91dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyLy5wcm9qZWN0IGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwY2ZlZjcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXI8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9Eb2NCdWlsZC54bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9Eb2NCdWlsZC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YjNiNDEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvRG9jQnVpbGQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Ci08IS0tIAotCi0JVGhpcyBzY3JpcHQgYnVpbGQgdGhlIEhlbHAgcGx1Zy1pbiBieSB0cmFuc2Zvcm1pbmcgdGhlIERJVEEgc291cmNlIGZpbGVzIGludG8gSFRNTC4KLQkKLQlUbyB1c2UgdGhpcyBzY3JpcHQsIHlvdSBtdXN0IGluc3RhbGwgRElUQS1PVCBvbiB5b3VyIG1hY2hpbmUgaW4gdGhlIGRpcmVjdG9yeQotCWRlZmluZWQgYnkgdGhlIGRpdGEub3QuZGlyIHByb3BlcnR5LgotCQotCVJ1biB0aGUgZGVmYXVsdCB0YXJnZXQgYWZ0ZXIgeW91IGVkaXQgdGhlIERJVEEgc291cmNlIGZpbGVzIHRvIHJlZ2VuZXJhdGUgdGhlIEhUTUwuCi0JCi0JVG8gY3VzdG9taXplIHRoaXMgc2NyaXB0IGZvciBvdGhlciBIZWxwIHBsdWctaW5zLCBtb2RpZnkgdGhlIHZhbHVlIG9mIHRoZSBhcmdzLmlucHV0IHByb3BlcnR5Ci0JdG8gYmUgdGhlIERJVEEgbWFwIGZpbGUgZm9yIHRoZSBwbHVnLWluLgotCQotCU5PVEU6IFRoaXMgc2NyaXB0IGFzc3VtZXMgdGhhdCBsaW5rcyB0byBzaWJsaW5nIEhlbHAgcGx1Zy1pbnMgaGF2ZSBzY29wZT0icGVlciIsIG90aGVyd2lzZSB0aGUKLQlvdXRwdXQgZGlyZWN0b3J5IHN0cnVjdHVyZSB3aWxsIGJlIHNoaWZ0ZWQgaW5jb3JyZWN0bHkuCi0JCi0JTk9URTogVGhpcyBzY3JpcHQgYXNzdW1lcyB0aGF0IHlvdSBoYW5kIGNvZGUgeW91ciBwbHVnaW4ueG1sIGZpbGUgaW4gbXlwbHVnaW4ueG1sLiBUaGlzIGZpbGUKLQl3aWxsIGJlIGNvcGllZCBvdmVyIHRoZSBnZW5lcmF0ZWQgcGx1Z2luLnhtbCB3aGljaCBpcyBjdXJyZW50bHkgbm90IGJlaW5nIGdlbmVyYXRlZCBjb3JyZWN0bHkKLQlieSBESVRBLU9ULgotCQotCUNoYW5nZUxvZzoKLQkyMDA2LTA0LTA1IEFydGh1ciBSeW1hbiA8cnltYW5AY2EuaWJtLmNvbT4KLQktIENyZWF0ZWQuCi0JMjAwOC0wMS0wOSBLYXRlIFByaWNlIDxrYXRlcEBjYS5pYm0uY29tPgotCS0gbW9kaWZpZWQgZm9yIG5ldyBESVRBLU9UIHZlcnNpb24KLQkyMDA4LTA1LTA1IEthdGUgUHJpY2UgPGthdGVwQGNhLmlibS5jb20+Ci0JLSBtb2RpZmllZCB0byBhZGQgZ2VuZXJhdGlvbiBvZiBwcmUtYnVpbHQgaGVscCBpbmRleC4gCi0JLSBNdXN0IGRlbGV0ZSAvaW5kZXggZm9sZGVyIGJlZm9yZSBydW5uaW5nIGJ1aWxkCQotLS0+Ci08cHJvamVjdCBuYW1lPSJlY2xpcHNlaGVscCIgZGVmYXVsdD0iYWxsIj4KLQotCTxwcm9wZXJ0eSBuYW1lPSJkaXRhLm90LmRpciIgbG9jYXRpb249IkM6L0RJVEEtT1QxLjIuMiIgLz4KLQotCTxwYXRoIGlkPSJkb3N0LmNsYXNzLnBhdGgiPgotCQk8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7ZGl0YS5vdC5kaXJ9JHtmaWxlLnNlcGFyYXRvcn1saWIke2ZpbGUuc2VwYXJhdG9yfWRvc3QuamFyIiAvPgotCTwvcGF0aD4KLQotCTx0YXNrZGVmIG5hbWU9ImludGVncmF0ZSIgY2xhc3NuYW1lPSJvcmcuZGl0YS5kb3N0LnBsYXRmb3JtLkludGVncmF0b3JUYXNrIj4KLQkJPGNsYXNzcGF0aCByZWZpZD0iZG9zdC5jbGFzcy5wYXRoIiAvPgotCTwvdGFza2RlZj4KLQk8dGFyZ2V0IG5hbWU9ImFsbCIgZGVwZW5kcz0iaW50ZWdyYXRlLCBlY2xpcHNlaGVscCI+Ci0JPC90YXJnZXQ+Ci0JPHRhcmdldCBuYW1lPSJpbnRlZ3JhdGUiPgotCQk8aW50ZWdyYXRlIGRpdGFkaXI9IiR7ZGl0YS5vdC5kaXJ9IiAvPgotCTwvdGFyZ2V0PgotCi0JPCEtLSByZXZpc2UgYmVsb3cgaGVyZSAtLT4KLQk8dGFyZ2V0IG5hbWU9ImVjbGlwc2VoZWxwIj4KLQkJPGFudCBhbnRmaWxlPSIke2RpdGEub3QuZGlyfSR7ZmlsZS5zZXBhcmF0b3J9Y29uZHVjdG9yLnhtbCIgdGFyZ2V0PSJpbml0IiBkaXI9IiR7ZGl0YS5vdC5kaXJ9Ij4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmNvcHljc3MiIHZhbHVlPSJubyIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmNzc3BhdGgiIHZhbHVlPSIuLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5lY2xpcHNlLnByb3ZpZGVyIiB2YWx1ZT0iRWNsaXBzZS5vcmciIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5lY2xpcHNlLnZlcnNpb24iIHZhbHVlPSIzLjMuMCIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmlucHV0IiBsb2NhdGlvbj0id2Vic2VydmljZV90b2MuZGl0YW1hcCIgLz4gCi0JCQk8cHJvcGVydHkgbmFtZT0iY2xlYW4udGVtcCIgdmFsdWU9InRydWUiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iZGl0YS5leHRuYW1lIiB2YWx1ZT0iLmRpdGEiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iZGl0YS50ZW1wLmRpciIgbG9jYXRpb249InRlbXAiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0ib3V0cHV0LmRpciIgbG9jYXRpb249IiIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJ0cmFuc3R5cGUiIHZhbHVlPSJlY2xpcHNlaGVscCIgLz4KLQkJPC9hbnQ+Ci0JCTxjb3B5IGZpbGU9Im15cGx1Z2luLnhtbCIgdG9maWxlPSJwbHVnaW4ueG1sIiBvdmVyd3JpdGU9InllcyIgLz4KLQk8L3RhcmdldD4KLQk8dGFyZ2V0IG5hbWU9ImJ1aWxkLmluZGV4IiBkZXNjcmlwdGlvbj0iQnVpbGRzIHNlYXJjaCBpbmRleCBmb3IgdGhlIHBsdWctaW4iIGlmPSJlY2xpcHNlLnJ1bm5pbmciPgotCSAgICAgPGhlbHAuYnVpbGRIZWxwSW5kZXggbWFuaWZlc3Q9InBsdWdpbi54bWwiIGRlc3RpbmF0aW9uPSIuIi8+Ci0JPC90YXJnZXQ+CQotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3YTBkYy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJXBsdWdpbk5hbWUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlcjsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjUwMC5xdWFsaWZpZXIKLUJ1bmRsZS1WZW5kb3I6ICVwbHVnaW5Qcm92aWRlcgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9hYm91dC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM5NWU1Ny4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICB3ZWJzZXJ2aWNlX3RvYy54bWwsXAotICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyaW5kZXgueG1sLFwKLSAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXAotICAgICAgICAgICAgICAgaW1hZ2VzLyxcCi0gICAgICAgICAgICAgICBjb25jZXB0cy8qLmh0bSosXAotICAgICAgICAgICAgICAgdGFza3MvKi5odG0qLFwKLSAgICAgICAgICAgICAgIHJlZi8qLmh0bSosXAotICAgICAgICAgICAgICAgaW5kZXgvLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLwotc3JjLmluY2x1ZGVzID0gYnVpbGQucHJvcGVydGllcyxcCi0JCSAgICAgICAqLm1hcGxpc3QsXAotICAgICAgICAgICAgICAgKi5kaXRhbWFwLFwKLQkJICAgICAgIGNvbmNlcHRzLyouZGl0YSxcCi0gICAgICAgICAgICAgICB0YXNrcy8qLmRpdGEsXAotICAgICAgICAgICAgICAgcmVmLyouZGl0YQotYmluLmV4Y2x1ZGVzID0gRG9jQnVpbGQueG1sLFwKLSAgICAgICAgICAgICAgIG15UGx1Z2luKi54bWwKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2NqYXhycGMuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2NqYXhycGMuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNiNWIyNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jamF4cnBjLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA1LCB2LjQwMDItLT4KLTwhRE9DVFlQRSBjb25jZXB0IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIENvbmNlcHQvL0VOIgotICJjb25jZXB0LmR0ZCI+Ci08Y29uY2VwdCBpZD0iY2pheHJwYyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5KQVgtUlBDPC90aXRsZT4KLTxzaG9ydGRlc2M+SkFYLVJQQyBzdGFuZHMgZm9yIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIgotdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gQVBJIGZvciBYTUwtYmFzZWQgUlBDLCBhbHNvIGtub3duIGFzCi1KU1IgMTAxLiBJdCBpcyBhIHNwZWNpZmljYXRpb24gdGhhdCBkZXNjcmliZXMgPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2VzCi0oQVBJcykgYW5kIGNvbnZlbnRpb25zIGZvciBidWlsZGluZyBXZWIgc2VydmljZXMgYW5kIFdlYiBzZXJ2aWNlIGNsaWVudHMgdGhhdAotdXNlIHJlbW90ZSBwcm9jZWR1cmUgY2FsbHMgKFJQQykgYW5kIFhNTC4gSXQgc3RhbmRhcmRpemVzIHRoZSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIKLXRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iIHRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IHRvCi1XU0RMIGFuZCBXU0RMIHRvIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIiB0bXR5cGU9InRtIgotdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gbWFwcGluZ3MsIGFuZCBwcm92aWRlcyB0aGUgY29yZSBBUElzIGZvciBkZXZlbG9waW5nCi1XZWIgc2VydmljZXMgYW5kIFdlYiBzZXJ2aWNlIGNsaWVudHMgb24gdGhlIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIgotdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gcGxhdGZvcm0uIE9mdGVuIHVzZWQgaW4gYSBkaXN0cmlidXRlZAotY2xpZW50L3NlcnZlciBtb2RlbCwgYW4gUlBDIG1lY2hhbmlzbSBlbmFibGVzIGNsaWVudHMgdG8gZXhlY3V0ZSBwcm9jZWR1cmVzCi1vbiBvdGhlciBzeXN0ZW1zLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5KQVgtUlBDPGluZGV4dGVybT5XZWIgc2VydmljZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5KQVgtUlBDPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTxjb25ib2R5PgotPHA+VGhlIGN1cnJlbnQgcmVsZWFzZSBvZiBKQVgtUlBDIHJlcXVpcmVzIHRoZSBzdXBwb3J0IG9mIFNPQVAgb3ZlciBIVFRQIGZvcgotaW50ZXJvcGVyYWJpbGl0eSBwdXJwb3Nlcy4gVGhlIFNPQVAgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIG1lc3NhZ2Ugc3RydWN0dXJlLAotZW5jb2RpbmcgcnVsZXMsIGFuZCBjb252ZW50aW9ucyBmb3IgZXhjaGFuZ2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgUlBDIHByb2dyYW1taW5nCi1tb2RlbC4gVGhlc2UgY2FsbHMgYW5kIHJlc3BvbnNlcyBhcmUgdHJhbnNtaXR0ZWQgYXMgU09BUCBtZXNzYWdlcyBvdmVyIEhUVFAuCi1JbiB0aGlzIHJlbGVhc2UsIEpBWC1SUEMgc3VwcG9ydHMgU09BUCAxLjEgYW5kIEhUVFAgMS4xLiBGb3IgbW9yZSBpbmZvcm1hdGlvbgotb24gU09BUCwgcmVmZXIgdG8gPHhyZWYgaHJlZj0iY3NvYXAuZGl0YSIgc2NvcGU9ImxvY2FsIj48L3hyZWY+LjwvcD4KLTxwPkFsdGhvdWdoIHRoZSB1bmRlcmx5aW5nIHJ1bi10aW1lIG1lY2hhbmlzbXMgKGZvciBleGFtcGxlLCA8dG0gdG1jbGFzcz0ic3BlY2lhbCIKLXRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iIHRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IHRvCi1XU0RMIHNlcmlhbGl6YXRpb24sIFdTREwgdG8gPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBkZXNlcmlhbGl6YXRpb24sIHByb3RvY29sIGFuZCB0cmFuc3BvcnQpCi1hcmUgdmVyeSBjb21wbGV4LCB0aGUgQVBJIGhpZGVzIHRoaXMgY29tcGxleGl0eSBmcm9tIHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIuCi1PbiB0aGUgc2VydmVyIHNpZGUsIHRoZSBkZXZlbG9wZXIgY2FuIHByb3ZpZGUgYSBTZXJ2aWNlIEVuZHBvaW50IEludGVyZmFjZQotKFNFSSk7IGFsdGVybmF0ZWx5IGFuIFNFSSBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUgV2ViIHNlcnZpY2VzIHdpenJkcy4gQW4KLVNFSSBpcyBhbiBpbnRlcmZhY2Ugd3JpdHRlbiBpbiB0aGUgPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBwcm9ncmFtbWluZyBsYW5ndWFnZSB0aGF0IHNwZWNpZmllcwotdGhlIHJlbW90ZSBwcm9jZWR1cmVzIG9mIGEgV2ViIHNlcnZpY2UuIFRoZSBkZXZlbG9wZXIgYWxzbyBwcm92aWRlcyB0aGUgaW1wbGVtZW50YXRpb24KLW9mIGEgV2ViIHNlcnZpY2UsIGluIHRoZSBmb3JtIG9mIG9uZSBvciBtb3JlIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIgotdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gY2xhc3NlcyB0aGF0IGltcGxlbWVudCBtZXRob2RzIG9mIHRoZQotc2FtZSBzaWduYXR1cmUgYXMgdGhvc2Ugb24gdGhlIFNFSS4gQ2xpZW50IHByb2dyYW1zIGFyZSBhbHNvIGVhc3kgdG8gY29kZS4KLUEgY2xpZW50IGNyZWF0ZXMgYSBwcm94eSwgYSBsb2NhbCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uCi1hbmQgdGhlIFNFSSwgYW5kIHRoZW4gc2ltcGx5IGludm9rZXMgbWV0aG9kcyBvbiB0aGUgcHJveHkuPC9wPgotPHA+SkFYLVJQQyBpcyBoaWdobHkgaW50ZXJvcGVyYWJsZTogYSBKQVgtUlBDIGNsaWVudCBjYW4gYWNjZXNzIGEgV2ViIHNlcnZpY2UKLXRoYXQgaXMgbm90IHJ1bm5pbmcgb24gdGhlIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIgotdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gcGxhdGZvcm0gYW5kIHZpY2UgdmVyc2EuIFRoaXMgZmxleGliaWxpdHkKLWlzIHBvc3NpYmxlIGJlY2F1c2UgSkFYLVJQQyB1c2VzIFNPQVAgb3ZlciBIVFRQLCBhbmQgdGhlIFdlYiBTZXJ2aWNlIERlc2NyaXB0aW9uCi1MYW5ndWFnZSAoV1NETCkuIEpBWC1SUEMgd2FzIGRlc2lnbmVkIHRvIHN1cHBvcnQgV1MtSS48L3A+Ci08cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBKQVgtUlBDLCByZWZlciB0byB0aGUgIDx4cmVmIGZvcm1hdD0iaHRtbCIgaHJlZj0iaHR0cDovL3d3dy5qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MTAxIgotc2NvcGU9ImV4dGVybmFsIj5vZmZpY2lhbCBKU1IgMTAxIHNwZWNpZmljYXRpb25zPC94cmVmPi48L3A+Ci08L2NvbmJvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSJjd3MuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0iY3dzaW53c2EuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0iY2pzcjEwOS5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuZGl0YSIgc2NvcGU9InBlZXIiPjxsaW5rdGV4dD4gRGV2ZWxvcGluZyBXZWIKLXNlcnZpY2VzPC9saW5rdGV4dD48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC9jb25jZXB0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY2pheHJwYy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY2pheHJwYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjM5NWU0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2NqYXhycGMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJjb25jZXB0IiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkpBWC1SUEMiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iSkFYLVJQQyBzdGFuZHMgZm9yIEphdmEgQVBJIGZvciBYTUwtYmFzZWQgUlBDLCBhbHNvIGtub3duIGFzIEpTUiAxMDEuIEl0IGlzIGEgc3BlY2lmaWNhdGlvbiB0aGF0IGRlc2NyaWJlcyBKYXZhIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZXMgKEFQSXMpIGFuZCBjb252ZW50aW9ucyBmb3IgYnVpbGRpbmcgV2ViIHNlcnZpY2VzIGFuZCBXZWIgc2VydmljZSBjbGllbnRzIHRoYXQgdXNlIHJlbW90ZSBwcm9jZWR1cmUgY2FsbHMgKFJQQykgYW5kIFhNTC4gSXQgc3RhbmRhcmRpemVzIHRoZSBKYXZhIHRvIFdTREwgYW5kIFdTREwgdG8gSmF2YSBtYXBwaW5ncywgYW5kIHByb3ZpZGVzIHRoZSBjb3JlIEFQSXMgZm9yIGRldmVsb3BpbmcgV2ViIHNlcnZpY2VzIGFuZCBXZWIgc2VydmljZSBjbGllbnRzIG9uIHRoZSBKYXZhIHBsYXRmb3JtLiBPZnRlbiB1c2VkIGluIGEgZGlzdHJpYnV0ZWQgY2xpZW50L3NlcnZlciBtb2RlbCwgYW4gUlBDIG1lY2hhbmlzbSBlbmFibGVzIGNsaWVudHMgdG8gZXhlY3V0ZSBwcm9jZWR1cmVzIG9uIG90aGVyIHN5c3RlbXMuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkpBWC1SUEMgc3RhbmRzIGZvciBKYXZhIEFQSSBmb3IgWE1MLWJhc2VkIFJQQywgYWxzbyBrbm93biBhcyBKU1IgMTAxLiBJdCBpcyBhIHNwZWNpZmljYXRpb24gdGhhdCBkZXNjcmliZXMgSmF2YSBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2VzIChBUElzKSBhbmQgY29udmVudGlvbnMgZm9yIGJ1aWxkaW5nIFdlYiBzZXJ2aWNlcyBhbmQgV2ViIHNlcnZpY2UgY2xpZW50cyB0aGF0IHVzZSByZW1vdGUgcHJvY2VkdXJlIGNhbGxzIChSUEMpIGFuZCBYTUwuIEl0IHN0YW5kYXJkaXplcyB0aGUgSmF2YSB0byBXU0RMIGFuZCBXU0RMIHRvIEphdmEgbWFwcGluZ3MsIGFuZCBwcm92aWRlcyB0aGUgY29yZSBBUElzIGZvciBkZXZlbG9waW5nIFdlYiBzZXJ2aWNlcyBhbmQgV2ViIHNlcnZpY2UgY2xpZW50cyBvbiB0aGUgSmF2YSBwbGF0Zm9ybS4gT2Z0ZW4gdXNlZCBpbiBhIGRpc3RyaWJ1dGVkIGNsaWVudC9zZXJ2ZXIgbW9kZWwsIGFuIFJQQyBtZWNoYW5pc20gZW5hYmxlcyBjbGllbnRzIHRvIGV4ZWN1dGUgcHJvY2VkdXJlcyBvbiBvdGhlciBzeXN0ZW1zLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IkpBWC1SUEMsIFdlYiBzZXJ2aWNlcyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IkpBWC1SUEMsIFdlYiBzZXJ2aWNlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3c3N0YW5kYXJkcy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iY3dzaW53c2EuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iY2pzcjEwOS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90b3ZlcndzLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0iY2pheHJwYyIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPkpBWC1SUEM8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9ImNqYXhycGMiPjxhIG5hbWU9ImNqYXhycGMiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkpBWC1SUEM8L2gxPgotCi0KLQotPGRpdj48cD5KQVgtUlBDIHN0YW5kcyBmb3IgSmF2YeKEoiBBUEkgZm9yIFhNTC1iYXNlZCBSUEMsIGFsc28ga25vd24gYXMKLUpTUiAxMDEuIEl0IGlzIGEgc3BlY2lmaWNhdGlvbiB0aGF0IGRlc2NyaWJlcyBKYXZhIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZXMKLShBUElzKSBhbmQgY29udmVudGlvbnMgZm9yIGJ1aWxkaW5nIFdlYiBzZXJ2aWNlcyBhbmQgV2ViIHNlcnZpY2UgY2xpZW50cyB0aGF0Ci11c2UgcmVtb3RlIHByb2NlZHVyZSBjYWxscyAoUlBDKSBhbmQgWE1MLiBJdCBzdGFuZGFyZGl6ZXMgdGhlIEphdmEgdG8KLVdTREwgYW5kIFdTREwgdG8gSmF2YSBtYXBwaW5ncywgYW5kIHByb3ZpZGVzIHRoZSBjb3JlIEFQSXMgZm9yIGRldmVsb3BpbmcKLVdlYiBzZXJ2aWNlcyBhbmQgV2ViIHNlcnZpY2UgY2xpZW50cyBvbiB0aGUgSmF2YSBwbGF0Zm9ybS4gT2Z0ZW4gdXNlZCBpbiBhIGRpc3RyaWJ1dGVkCi1jbGllbnQvc2VydmVyIG1vZGVsLCBhbiBSUEMgbWVjaGFuaXNtIGVuYWJsZXMgY2xpZW50cyB0byBleGVjdXRlIHByb2NlZHVyZXMKLW9uIG90aGVyIHN5c3RlbXMuPC9wPgotCi08cD5UaGUgY3VycmVudCByZWxlYXNlIG9mIEpBWC1SUEMgcmVxdWlyZXMgdGhlIHN1cHBvcnQgb2YgU09BUCBvdmVyIEhUVFAgZm9yCi1pbnRlcm9wZXJhYmlsaXR5IHB1cnBvc2VzLiBUaGUgU09BUCBzcGVjaWZpY2F0aW9uIGRlZmluZXMgbWVzc2FnZSBzdHJ1Y3R1cmUsCi1lbmNvZGluZyBydWxlcywgYW5kIGNvbnZlbnRpb25zIGZvciBleGNoYW5naW5nIGluZm9ybWF0aW9uIGluIHRoZSBSUEMgcHJvZ3JhbW1pbmcKLW1vZGVsLiBUaGVzZSBjYWxscyBhbmQgcmVzcG9uc2VzIGFyZSB0cmFuc21pdHRlZCBhcyBTT0FQIG1lc3NhZ2VzIG92ZXIgSFRUUC4KLUluIHRoaXMgcmVsZWFzZSwgSkFYLVJQQyBzdXBwb3J0cyBTT0FQIDEuMSBhbmQgSFRUUCAxLjEuIEZvciBtb3JlIGluZm9ybWF0aW9uCi1vbiBTT0FQLCByZWZlciB0byA8YSBocmVmPSJjc29hcC5odG1sIiB0aXRsZT0iU09BUCAoZm9ybWVybHkga25vd24gYXMgU2ltcGxlIE9iamVjdCBBY2Nlc3MgUHJvdG9jb2wpIGlzIGEgbGlnaHR3ZWlnaHQmIzEwO3Byb3RvY29sIGZvciB0aGUgZXhjaGFuZ2Ugb2YgaW5mb3JtYXRpb24gaW4gYSBkZWNlbnRyYWxpemVkLCBkaXN0cmlidXRlZCBlbnZpcm9ubWVudC4mIzEwO0EgU09BUCBtZXNzYWdlIGlzIGEgdHJhbnNtaXNzaW9uIG9mIGluZm9ybWF0aW9uIGZyb20gYSBzZW5kZXIgdG8gYSByZWNlaXZlci4mIzEwO1NPQVAgbWVzc2FnZXMgY2FuIGJlIGNvbWJpbmVkIHRvIHBlcmZvcm0gcmVxdWVzdC9yZXNwb25zZSBwYXR0ZXJucy4gIj5TT0FQPC9hPi48L3A+Ci0KLTxwPkFsdGhvdWdoIHRoZSB1bmRlcmx5aW5nIHJ1bi10aW1lIG1lY2hhbmlzbXMgKGZvciBleGFtcGxlLCBKYXZhIHRvCi1XU0RMIHNlcmlhbGl6YXRpb24sIFdTREwgdG8gSmF2YSBkZXNlcmlhbGl6YXRpb24sIHByb3RvY29sIGFuZCB0cmFuc3BvcnQpCi1hcmUgdmVyeSBjb21wbGV4LCB0aGUgQVBJIGhpZGVzIHRoaXMgY29tcGxleGl0eSBmcm9tIHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIuCi1PbiB0aGUgc2VydmVyIHNpZGUsIHRoZSBkZXZlbG9wZXIgY2FuIHByb3ZpZGUgYSBTZXJ2aWNlIEVuZHBvaW50IEludGVyZmFjZQotKFNFSSk7IGFsdGVybmF0ZWx5IGFuIFNFSSBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUgV2ViIHNlcnZpY2VzIHdpenJkcy4gQW4KLVNFSSBpcyBhbiBpbnRlcmZhY2Ugd3JpdHRlbiBpbiB0aGUgSmF2YSBwcm9ncmFtbWluZyBsYW5ndWFnZSB0aGF0IHNwZWNpZmllcwotdGhlIHJlbW90ZSBwcm9jZWR1cmVzIG9mIGEgV2ViIHNlcnZpY2UuIFRoZSBkZXZlbG9wZXIgYWxzbyBwcm92aWRlcyB0aGUgaW1wbGVtZW50YXRpb24KLW9mIGEgV2ViIHNlcnZpY2UsIGluIHRoZSBmb3JtIG9mIG9uZSBvciBtb3JlIEphdmEgY2xhc3NlcyB0aGF0IGltcGxlbWVudCBtZXRob2RzIG9mIHRoZQotc2FtZSBzaWduYXR1cmUgYXMgdGhvc2Ugb24gdGhlIFNFSS4gQ2xpZW50IHByb2dyYW1zIGFyZSBhbHNvIGVhc3kgdG8gY29kZS4KLUEgY2xpZW50IGNyZWF0ZXMgYSBwcm94eSwgYSBsb2NhbCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uCi1hbmQgdGhlIFNFSSwgYW5kIHRoZW4gc2ltcGx5IGludm9rZXMgbWV0aG9kcyBvbiB0aGUgcHJveHkuPC9wPgotCi08cD5KQVgtUlBDIGlzIGhpZ2hseSBpbnRlcm9wZXJhYmxlOiBhIEpBWC1SUEMgY2xpZW50IGNhbiBhY2Nlc3MgYSBXZWIgc2VydmljZQotdGhhdCBpcyBub3QgcnVubmluZyBvbiB0aGUgSmF2YSBwbGF0Zm9ybSBhbmQgdmljZSB2ZXJzYS4gVGhpcyBmbGV4aWJpbGl0eQotaXMgcG9zc2libGUgYmVjYXVzZSBKQVgtUlBDIHVzZXMgU09BUCBvdmVyIEhUVFAsIGFuZCB0aGUgV2ViIFNlcnZpY2UgRGVzY3JpcHRpb24KLUxhbmd1YWdlIChXU0RMKS4gSkFYLVJQQyB3YXMgZGVzaWduZWQgdG8gc3VwcG9ydCBXUy1JLjwvcD4KLQotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gSkFYLVJQQywgcmVmZXIgdG8gdGhlICA8YSBocmVmPSJodHRwOi8vd3d3LmpjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xMDEiIHRhcmdldD0iX2JsYW5rIj5vZmZpY2lhbCBKU1IgMTAxIHNwZWNpZmljYXRpb25zPC9hPi48L3A+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c3N0YW5kYXJkcy5odG1sIiB0aXRsZT0iT25lIG9mIHRoZSBrZXkgYXR0cmlidXRlcyBvZiBJbnRlcm5ldCBzdGFuZGFyZHMgaXMgdGhhdCB0aGV5IGZvY3VzIG9uIHByb3RvY29scyBhbmQgbm90IG9uIGltcGxlbWVudGF0aW9ucy4gVGhlIEludGVybmV0IGlzIGNvbXBvc2VkIG9mIGhldGVyb2dlbmVvdXMgdGVjaG5vbG9naWVzIHRoYXQgc3VjY2Vzc2Z1bGx5IGludGVyb3BlcmF0ZSB0aHJvdWdoIHNoYXJlZCBwcm90b2NvbHMuIFRoaXMgcHJldmVudHMgaW5kaXZpZHVhbCB2ZW5kb3JzIGZyb20gaW1wb3NpbmcgYSBzdGFuZGFyZCBvbiB0aGUgSW50ZXJuZXQuIE9wZW4gU291cmNlIHNvZnR3YXJlIGRldmVsb3BtZW50IHBsYXlzIGEgY3J1Y2lhbCByb2xlIGluIHByZXNlcnZpbmcgdGhlIGludGVyb3BlcmFiaWxpdHkgb2YgdmVuZG9yIGltcGxlbWVudGF0aW9ucyBvZiBzdGFuZGFyZHMuIj5XZWIgc2VydmljZXMgc3RhbmRhcmRzPC9hPjwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJjd3MuaHRtbCIgdGl0bGU9IkEgV2ViIHNlcnZpY2UgaXMgYSBzZXQgb2YgcmVsYXRlZCBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBpbnZva2VkIG92ZXIgdGhlIEludGVybmV0LiBCdXNpbmVzc2VzIGNhbiBkeW5hbWljYWxseSBtaXggYW5kIG1hdGNoIFdlYiBzZXJ2aWNlcyB0byBwZXJmb3JtIGNvbXBsZXggdHJhbnNhY3Rpb25zIHdpdGggbWluaW1hbCBwcm9ncmFtbWluZy4gV2ViIHNlcnZpY2VzIGFsbG93IGJ1eWVycyBhbmQgc2VsbGVycyBhbGwgb3ZlciB0aGUgd29ybGQgdG8gZGlzY292ZXIgZWFjaCBvdGhlciwgY29ubmVjdCBkeW5hbWljYWxseSwgYW5kIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIGluIHJlYWwgdGltZSB3aXRoIG1pbmltYWwgaHVtYW4gaW50ZXJhY3Rpb24uIj5XZWIgc2VydmljZXMgb3ZlcnZpZXc8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9ImN3c2lud3NhLmh0bWwiIHRpdGxlPSIiPlRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9ImNqc3IxMDkuaHRtbCIgdGl0bGU9IkpTUiAxMDkgKEltcGxlbWVudGluZyBFbnRlcnByaXNlIFdlYiBTZXJ2aWNlcykgZGVmaW5lcyB0aGUgcHJvZ3JhbW1pbmcgbW9kZWwgYW5kIHJ1bi10aW1lIGFyY2hpdGVjdHVyZSB0byBkZXBsb3kgYW5kIGxvb2sgdXAgV2ViIHNlcnZpY2VzIGluIHRoZSBKYXZhIEVFIGVudmlyb25tZW50OyBtb3JlIHNwZWNpZmljYWxseSwgaW4gdGhlIFdlYiwgRUpCLCBhbmQgQ2xpZW50IEFwcGxpY2F0aW9uIGNvbnRhaW5lcnMuIE9uZSBvZiBpdHMgbWFpbiBnb2FscyBpcyB0byBlbnN1cmUgdmVuZG9ycycgaW1wbGVtZW50YXRpb25zIGludGVyb3BlcmF0ZS4iPkpTUiAxMDkgLSBJbXBsZW1lbnRpbmcgRW50ZXJwcmlzZSBXZWIgc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi90YXNrcy90b3ZlcndzLmh0bWwiPiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2Nqc3IxMDkuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2Nqc3IxMDkuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgzYTA1NC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9janNyMTA5LmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSBjb25jZXB0IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIENvbmNlcHQvL0VOIgotICJjb25jZXB0LmR0ZCI+Ci08Y29uY2VwdCBpZD0iY2pzcjEwOSIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5KU1IgMTA5IC0gSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIHNlcnZpY2VzPC90aXRsZT4KLTxzaG9ydGRlc2M+SlNSIDEwOSAoSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIFNlcnZpY2VzKSBkZWZpbmVzIHRoZSBwcm9ncmFtbWluZwotbW9kZWwgYW5kIHJ1bi10aW1lIGFyY2hpdGVjdHVyZSB0byBkZXBsb3kgYW5kIGxvb2sgdXAgV2ViIHNlcnZpY2VzIGluIHRoZQotSmF2YSBFRSBlbnZpcm9ubWVudDsgbW9yZSBzcGVjaWZpY2FsbHksIGluIHRoZSBXZWIsIEVKQiwgYW5kIENsaWVudCBBcHBsaWNhdGlvbgotY29udGFpbmVycy4gT25lIG9mIGl0cyBtYWluIGdvYWxzIGlzIHRvIGVuc3VyZSB2ZW5kb3JzJyBpbXBsZW1lbnRhdGlvbnMgaW50ZXJvcGVyYXRlLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5KU1IgMTA5IEphdmEgc3BlY2lmaWNhdGlvbjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0+SlNSCi05MjEgSmF2YSBzcGVjaWZpY2F0aW9uPC9pbmRleHRlcm0+PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPkphdmEgc3BlY2lmaWNhdGlvbgotcmVxdWVzdHM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTxjb25ib2R5PgotPHA+SlNSIDEwOSBidWlsZHMgb24gdG9wIG9mIEpBWC1SUEMgdG8gY292ZXIgdGhlIHVzZSBvZiBKQVgtUlBDIGluIGEgSmF2YQotRUUgZW52aXJvbm1lbnQsIGFzIHdlbGwgYXMgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBkZXBsb3ltZW50IG9mIFdlYiBzZXJ2aWNlcwotdG8gYSBKYXZhIEVFIGFwcGxpY2F0aW9uIHNlcnZlci4gSlNSIDEwOSBkZWZpbmVzIGEgc2V0IG9mIFhNTC1iYXNlZCBkZXBsb3ltZW50Ci1kZXNjcmlwdG9ycyB0byBzdGFuZGFyZGl6ZSBXZWIgc2VydmljZXMgYW5kIFdlYiBzZXJ2aWNlIGNsaWVudCBkZXBsb3ltZW50cwotaW4gdGhlIEphdmEgRUUgZW52aXJvbm1lbnQuIEpTUiA5MjEgd2FzIGEgbWFpbnRlbmFuY2UgcmV2aXNpb24gb2YgSlNSIDEwOSwKLWFuZCBoYXMgc2luY2UgYmVlbiByZXBsYWNlZCBieSB0aGUgdXBkYXRlZCB2ZXJzaW9uIG9mIEpTUiAxMDkuPC9wPgotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvOiAgPHhyZWYgZm9ybWF0PSJodG1sIiBocmVmPSJodHRwOi8vd3d3LmpjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xMDkiCi1zY29wZT0iZXh0ZXJuYWwiPkpTUiAxMDksICJJbXBsZW1lbnRpbmcgRW50ZXJwcmlzZSBXZWIgU2VydmljZXM8L3hyZWY+IGFuZCA8eHJlZgotaHJlZj0iaHR0cDovL3d3dy5qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9OTIxIiBzY29wZT0iZXh0ZXJuYWwiPkpTUiA5MjE6IEltcGxlbWVudGluZwotRW50ZXJwcmlzZSBXZWIgU2VydmljZXMgMS4xPC94cmVmPi48L3A+Ci08L2NvbmJvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSJjd3MuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0iY3dzaW53c2EuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0iY2pheHJwYy5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuZGl0YSIgc2NvcGU9InBlZXIiPjxsaW5rdGV4dD4gRGV2ZWxvcGluZyBXZWIKLXNlcnZpY2VzPC9saW5rdGV4dD48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC9jb25jZXB0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY2pzcjEwOS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY2pzcjEwOS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjRjM2IxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2Nqc3IxMDkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJjb25jZXB0IiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkpTUiAxMDkgLSBJbXBsZW1lbnRpbmcgRW50ZXJwcmlzZSBXZWIgc2VydmljZXMiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iSlNSIDEwOSAoSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIFNlcnZpY2VzKSBkZWZpbmVzIHRoZSBwcm9ncmFtbWluZyBtb2RlbCBhbmQgcnVuLXRpbWUgYXJjaGl0ZWN0dXJlIHRvIGRlcGxveSBhbmQgbG9vayB1cCBXZWIgc2VydmljZXMgaW4gdGhlIEphdmEgRUUgZW52aXJvbm1lbnQ7IG1vcmUgc3BlY2lmaWNhbGx5LCBpbiB0aGUgV2ViLCBFSkIsIGFuZCBDbGllbnQgQXBwbGljYXRpb24gY29udGFpbmVycy4gT25lIG9mIGl0cyBtYWluIGdvYWxzIGlzIHRvIGVuc3VyZSB2ZW5kb3JzJyBpbXBsZW1lbnRhdGlvbnMgaW50ZXJvcGVyYXRlLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJKU1IgMTA5IChJbXBsZW1lbnRpbmcgRW50ZXJwcmlzZSBXZWIgU2VydmljZXMpIGRlZmluZXMgdGhlIHByb2dyYW1taW5nIG1vZGVsIGFuZCBydW4tdGltZSBhcmNoaXRlY3R1cmUgdG8gZGVwbG95IGFuZCBsb29rIHVwIFdlYiBzZXJ2aWNlcyBpbiB0aGUgSmF2YSBFRSBlbnZpcm9ubWVudDsgbW9yZSBzcGVjaWZpY2FsbHksIGluIHRoZSBXZWIsIEVKQiwgYW5kIENsaWVudCBBcHBsaWNhdGlvbiBjb250YWluZXJzLiBPbmUgb2YgaXRzIG1haW4gZ29hbHMgaXMgdG8gZW5zdXJlIHZlbmRvcnMnIGltcGxlbWVudGF0aW9ucyBpbnRlcm9wZXJhdGUuIiAvPgotPG1ldGEgY29udGVudD0iSlNSIDEwOSBKYXZhIHNwZWNpZmljYXRpb24sIEpTUiA5MjEgSmF2YSBzcGVjaWZpY2F0aW9uLCBXZWIgc2VydmljZXMsIEphdmEgc3BlY2lmaWNhdGlvbiByZXF1ZXN0cyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IkpTUiAxMDkgSmF2YSBzcGVjaWZpY2F0aW9uLCBKU1IgOTIxIEphdmEgc3BlY2lmaWNhdGlvbiwgV2ViIHNlcnZpY2VzLCBKYXZhIHNwZWNpZmljYXRpb24gcmVxdWVzdHMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3NzdGFuZGFyZHMuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImN3c2lud3NhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImNqYXhycGMuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdG92ZXJ3cy5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9ImNqc3IxMDkiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5KU1IgMTA5IC0gSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIHNlcnZpY2VzPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJjanNyMTA5Ij48YSBuYW1lPSJjanNyMTA5Ij48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5KU1IgMTA5IC0gSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIHNlcnZpY2VzPC9oMT4KLQotCi0KLTxkaXY+PHA+SlNSIDEwOSAoSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIFNlcnZpY2VzKSBkZWZpbmVzIHRoZSBwcm9ncmFtbWluZwotbW9kZWwgYW5kIHJ1bi10aW1lIGFyY2hpdGVjdHVyZSB0byBkZXBsb3kgYW5kIGxvb2sgdXAgV2ViIHNlcnZpY2VzIGluIHRoZQotSmF2YSBFRSBlbnZpcm9ubWVudDsgbW9yZSBzcGVjaWZpY2FsbHksIGluIHRoZSBXZWIsIEVKQiwgYW5kIENsaWVudCBBcHBsaWNhdGlvbgotY29udGFpbmVycy4gT25lIG9mIGl0cyBtYWluIGdvYWxzIGlzIHRvIGVuc3VyZSB2ZW5kb3JzJyBpbXBsZW1lbnRhdGlvbnMgaW50ZXJvcGVyYXRlLjwvcD4KLQotPHA+SlNSIDEwOSBidWlsZHMgb24gdG9wIG9mIEpBWC1SUEMgdG8gY292ZXIgdGhlIHVzZSBvZiBKQVgtUlBDIGluIGEgSmF2YQotRUUgZW52aXJvbm1lbnQsIGFzIHdlbGwgYXMgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBkZXBsb3ltZW50IG9mIFdlYiBzZXJ2aWNlcwotdG8gYSBKYXZhIEVFIGFwcGxpY2F0aW9uIHNlcnZlci4gSlNSIDEwOSBkZWZpbmVzIGEgc2V0IG9mIFhNTC1iYXNlZCBkZXBsb3ltZW50Ci1kZXNjcmlwdG9ycyB0byBzdGFuZGFyZGl6ZSBXZWIgc2VydmljZXMgYW5kIFdlYiBzZXJ2aWNlIGNsaWVudCBkZXBsb3ltZW50cwotaW4gdGhlIEphdmEgRUUgZW52aXJvbm1lbnQuIEpTUiA5MjEgd2FzIGEgbWFpbnRlbmFuY2UgcmV2aXNpb24gb2YgSlNSIDEwOSwKLWFuZCBoYXMgc2luY2UgYmVlbiByZXBsYWNlZCBieSB0aGUgdXBkYXRlZCB2ZXJzaW9uIG9mIEpTUiAxMDkuPC9wPgotCi08cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG86ICA8YSBocmVmPSJodHRwOi8vd3d3LmpjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xMDkiIHRhcmdldD0iX2JsYW5rIj5KU1IgMTA5LCAiSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIFNlcnZpY2VzPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL3d3dy5qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9OTIxIiB0YXJnZXQ9Il9ibGFuayI+SlNSIDkyMTogSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIFNlcnZpY2VzIDEuMTwvYT4uPC9wPgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi9jb25jZXB0cy9jd3NzdGFuZGFyZHMuaHRtbCIgdGl0bGU9Ik9uZSBvZiB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgSW50ZXJuZXQgc3RhbmRhcmRzIGlzIHRoYXQgdGhleSBmb2N1cyBvbiBwcm90b2NvbHMgYW5kIG5vdCBvbiBpbXBsZW1lbnRhdGlvbnMuIFRoZSBJbnRlcm5ldCBpcyBjb21wb3NlZCBvZiBoZXRlcm9nZW5lb3VzIHRlY2hub2xvZ2llcyB0aGF0IHN1Y2Nlc3NmdWxseSBpbnRlcm9wZXJhdGUgdGhyb3VnaCBzaGFyZWQgcHJvdG9jb2xzLiBUaGlzIHByZXZlbnRzIGluZGl2aWR1YWwgdmVuZG9ycyBmcm9tIGltcG9zaW5nIGEgc3RhbmRhcmQgb24gdGhlIEludGVybmV0LiBPcGVuIFNvdXJjZSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBwcmVzZXJ2aW5nIHRoZSBpbnRlcm9wZXJhYmlsaXR5IG9mIHZlbmRvciBpbXBsZW1lbnRhdGlvbnMgb2Ygc3RhbmRhcmRzLiI+V2ViIHNlcnZpY2VzIHN0YW5kYXJkczwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iY3dzLmh0bWwiIHRpdGxlPSJBIFdlYiBzZXJ2aWNlIGlzIGEgc2V0IG9mIHJlbGF0ZWQgYXBwbGljYXRpb24gZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgaW52b2tlZCBvdmVyIHRoZSBJbnRlcm5ldC4gQnVzaW5lc3NlcyBjYW4gZHluYW1pY2FsbHkgbWl4IGFuZCBtYXRjaCBXZWIgc2VydmljZXMgdG8gcGVyZm9ybSBjb21wbGV4IHRyYW5zYWN0aW9ucyB3aXRoIG1pbmltYWwgcHJvZ3JhbW1pbmcuIFdlYiBzZXJ2aWNlcyBhbGxvdyBidXllcnMgYW5kIHNlbGxlcnMgYWxsIG92ZXIgdGhlIHdvcmxkIHRvIGRpc2NvdmVyIGVhY2ggb3RoZXIsIGNvbm5lY3QgZHluYW1pY2FsbHksIGFuZCBleGVjdXRlIHRyYW5zYWN0aW9ucyBpbiByZWFsIHRpbWUgd2l0aCBtaW5pbWFsIGh1bWFuIGludGVyYWN0aW9uLiI+V2ViIHNlcnZpY2VzIG92ZXJ2aWV3PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJjd3NpbndzYS5odG1sIiB0aXRsZT0iIj5Ub29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJjamF4cnBjLmh0bWwiIHRpdGxlPSJKQVgtUlBDIHN0YW5kcyBmb3IgSmF2YSBBUEkgZm9yIFhNTC1iYXNlZCBSUEMsIGFsc28ga25vd24gYXMgSlNSIDEwMS4gSXQgaXMgYSBzcGVjaWZpY2F0aW9uIHRoYXQgZGVzY3JpYmVzIEphdmEgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlcyAoQVBJcykgYW5kIGNvbnZlbnRpb25zIGZvciBidWlsZGluZyBXZWIgc2VydmljZXMgYW5kIFdlYiBzZXJ2aWNlIGNsaWVudHMgdGhhdCB1c2UgcmVtb3RlIHByb2NlZHVyZSBjYWxscyAoUlBDKSBhbmQgWE1MLiBJdCBzdGFuZGFyZGl6ZXMgdGhlIEphdmEgdG8gV1NETCBhbmQgV1NETCB0byBKYXZhIG1hcHBpbmdzLCBhbmQgcHJvdmlkZXMgdGhlIGNvcmUgQVBJcyBmb3IgZGV2ZWxvcGluZyBXZWIgc2VydmljZXMgYW5kIFdlYiBzZXJ2aWNlIGNsaWVudHMgb24gdGhlIEphdmEgcGxhdGZvcm0uIE9mdGVuIHVzZWQgaW4gYSBkaXN0cmlidXRlZCBjbGllbnQvc2VydmVyIG1vZGVsLCBhbiBSUEMgbWVjaGFuaXNtIGVuYWJsZXMgY2xpZW50cyB0byBleGVjdXRlIHByb2NlZHVyZXMgb24gb3RoZXIgc3lzdGVtcy4iPkpBWC1SUEM8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi90YXNrcy90b3ZlcndzLmh0bWwiPiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2Nzb2FwLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jc29hcC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2JmMDA1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2Nzb2FwLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgY29uY2VwdCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBDb25jZXB0Ly9FTiIKLSAiY29uY2VwdC5kdGQiPgotPGNvbmNlcHQgaWQ9ImNzb2FwIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPlNPQVA8L3RpdGxlPgotPHNob3J0ZGVzYz5TT0FQIChmb3JtZXJseSBrbm93biBhcyBTaW1wbGUgT2JqZWN0IEFjY2VzcyBQcm90b2NvbCkgaXMgYSBsaWdodHdlaWdodAotcHJvdG9jb2wgZm9yIHRoZSBleGNoYW5nZSBvZiBpbmZvcm1hdGlvbiBpbiBhIGRlY2VudHJhbGl6ZWQsIGRpc3RyaWJ1dGVkIGVudmlyb25tZW50LgotQSBTT0FQIG1lc3NhZ2UgaXMgYSB0cmFuc21pc3Npb24gb2YgaW5mb3JtYXRpb24gZnJvbSBhIHNlbmRlciB0byBhIHJlY2VpdmVyLgotU09BUCBtZXNzYWdlcyBjYW4gYmUgY29tYmluZWQgdG8gcGVyZm9ybSByZXF1ZXN0L3Jlc3BvbnNlIHBhdHRlcm5zLiA8L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+U09BUDxpbmRleHRlcm0+b3ZlcnZpZXc8L2luZGV4dGVybT48L2luZGV4dGVybT48aW5kZXh0ZXJtPldlYgotc2VydmljZXM8aW5kZXh0ZXJtPlNPQVA8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTxjb25ib2R5PgotPHA+U09BUCBpcyB0cmFuc3BvcnQgaW5kZXBlbmRlbnQgYnV0IGlzIG1vc3QgY29tbW9ubHkgY2FycmllZCBvdmVyIEhUVFAgaW4KLW9yZGVyIHRvIHJ1biB3aXRoIHRoZSBleGlzdGluZyBJbnRlcm5ldCBpbmZyYXN0cnVjdHVyZS4mbmJzcDsgU09BUCBlbmFibGVzCi10aGUgYmluZGluZyBhbmQgdXNhZ2Ugb2YgZGlzY292ZXJlZCBXZWIgc2VydmljZXMgYnkgZGVmaW5pbmcgYSBtZXNzYWdlIHBhdGgKLWZvciByb3V0aW5nIG1lc3NhZ2VzLiBTT0FQIGlzIHVzZWQgdG8gcXVlcnkgVURESSBmb3IgV2ViIHNlcnZpY2VzLiBUaGUgd29ya2JlbmNoCi1zdXBwb3J0cyBTT0FQIDEuMS48L3A+Ci08cD5TT0FQIGlzIGFuIFhNTC1iYXNlZCBwcm90b2NvbCB0aGF0IGRlZmluZXMgdGhyZWUgcGFydHMgdG8gZXZlcnkgbWVzc2FnZTo8L3A+Ci08dWw+Ci08bGk+IDx1aWNvbnRyb2w+RW52ZWxvcGUuPC91aWNvbnRyb2w+Jm5ic3A7IFRoZSBlbnZlbG9wZSBkZWZpbmVzIGEgZnJhbWV3b3JrCi1mb3IgZGVzY3JpYmluZyB3aGF0IGlzIGluIGEgbWVzc2FnZSBhbmQgaG93IHRvIHByb2Nlc3MgaXQuJm5ic3A7IEEgU09BUCBtZXNzYWdlCi1pcyBhbiBlbnZlbG9wZSBjb250YWluaW5nIHplcm8gb3IgbW9yZSBoZWFkZXJzIGFuZCBleGFjdGx5IG9uZSBib2R5LiZuYnNwOwotVGhlIGVudmVsb3BlIGlzIHRoZSB0b3AgZWxlbWVudCBvZiB0aGUgWE1MIGRvY3VtZW50LCBwcm92aWRpbmcgYSBjb250YWluZXIKLWZvciBjb250cm9sIGluZm9ybWF0aW9uLCB0aGUgYWRkcmVzcyBvZiBhIG1lc3NhZ2UsIGFuZCB0aGUgbWVzc2FnZSBpdHNlbGYuJm5ic3A7Ci1IZWFkZXJzIHRyYW5zcG9ydCBhbnkgY29udHJvbCBpbmZvcm1hdGlvbiBzdWNoIGFzIHF1YWxpdHktb2Ytc2VydmljZSBhdHRyaWJ1dGVzLiZuYnNwOwotVGhlIGJvZHkgY29udGFpbnMgdGhlIG1lc3NhZ2UgaWRlbnRpZmljYXRpb24gYW5kIGl0cyBwYXJhbWV0ZXJzLiZuYnNwOyBCb3RoCi10aGUgaGVhZGVycyBhbmQgdGhlIGJvZHkgYXJlIGNoaWxkIGVsZW1lbnRzIG9mIHRoZSBlbnZlbG9wZS48L2xpPgotPGxpPiA8dWljb250cm9sPkVuY29kaW5nIHJ1bGVzLjwvdWljb250cm9sPiZuYnNwOyBUaGUgc2V0IG9mIGVuY29kaW5nIHJ1bGVzCi1leHByZXNzZXMgaW5zdGFuY2VzIG9mIGFwcGxpY2F0aW9uLWRlZmluZWQgZGF0YSB0eXBlcy4gRW5jb2RpbmcgcnVsZXMgZGVmaW5lCi1hIHNlcmlhbGl6YXRpb24gbWVjaGFuaXNtIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhjaGFuZ2UgaW5zdGFuY2VzIG9mIGFwcGxpY2F0aW9uLWRlZmluZWQKLWRhdGEgdHlwZXMuIFNPQVAgZGVmaW5lcyBhIHByb2dyYW1taW5nIGxhbmd1YWdlLWluZGVwZW5kZW50IGRhdGEgdHlwZSBzY2hlbWUKLWJhc2VkIG9uIFhTRCBwbHVzIGVuY29kaW5nIHJ1bGVzIGZvciBhbGwgZGF0YSB0eXBlcyBkZWZpbmVkIGFjY29yZGluZyB0byB0aGlzCi1tb2RlbC4gU09BUCBlbmNvZGluZyBpcyBub3QgV1MtSSBjb21wbGlhbnQgYW5kIHRodXMgdGhlIExpdGVyYWwgdXNlICh3aGljaAotaXMgbm8gZW5jb2RpbmcpIGlzIHN1Z2dlc3RlZCBmb3IgaW50ZXJvcGVyYWJsZSBXZWIgc2VydmljZXMgYW5kIHJlcXVpcmVkIGZvcgotV1MtSSBjb21wbGlhbmNlLjwvbGk+Ci08bGk+IDx1aWNvbnRyb2w+Q29tbXVuaWNhdGlvbiBzdHlsZXMuPC91aWNvbnRyb2w+IENvbW11bmljYXRpb25zIGNhbiBmb2xsb3cKLWEgcmVtb3RlIHByb2NlZHVyZSBjYWxsIChSUEMpIG9yIG1lc3NhZ2Utb3JpZW50ZWQgKERvY3VtZW50KSBmb3JtYXQuJm5ic3A7Ci1UaGVzZSBhcmUgZGlzY3Vzc2VkIGJlbG93LjwvbGk+Ci08L3VsPgotPHNlY3Rpb24+PHRpdGxlPkJpbmRpbmcgc3R5bGVzPC90aXRsZT48cD5TT0FQIHN1cHBvcnRzIHR3byBkaWZmZXJlbnQgY29tbXVuaWNhdGlvbgotc3R5bGVzOjwvcD48bHE+IDxwPiA8dWljb250cm9sPlJlbW90ZSBwcm9jZWR1cmUgY2FsbCAoUlBDKTo8L3VpY29udHJvbD4mbmJzcDsKLUludm9jYXRpb24gb2YgYW4gb3BlcmF0aW9uIHJldHVybmluZyBhIHJlc3VsdC4gVHlwaWNhbGx5IHVzZWQgd2l0aCBTT0FQIGVuY29kaW5nLAotd2hpY2ggaXMgbm90IFdTLUkgY29tcGxpYW50LjwvcD48cD4gPHVpY29udHJvbD5Eb2N1bWVudCBTdHlsZTo8L3VpY29udHJvbD4mbmJzcDsKLUFsc28ga25vd24gYXMgZG9jdW1lbnQtb3JpZW50ZWQgb3IgbWVzc2FnZS1vcmllbnRlZCBzdHlsZS4mbmJzcDsgVGhpcyBzdHlsZQotcHJvdmlkZXMgYSBsb3dlciBsYXllciBvZiBhYnN0cmFjdGlvbiwgYW5kIHJlcXVpcmVzIG1vcmUgcHJvZ3JhbW1pbmcgd29yay48L3A+IDwvbHE+PC9zZWN0aW9uPgotPHNlY3Rpb24+PHRpdGxlPkVuY29kaW5nIHN0eWxlczwvdGl0bGU+PHA+SW4gZGlzdHJpYnV0ZWQgY29tcHV0aW5nIGVudmlyb25tZW50cywKLWVuY29kaW5nIHN0eWxlcyBkZWZpbmUgaG93IGRhdGEgdmFsdWVzIGRlZmluZWQgaW4gdGhlIGFwcGxpY2F0aW9uIGNhbiBiZSB0cmFuc2xhdGVkCi10byBhbmQgZnJvbSBhIHBhcnRpY3VsYXIgcHJvdG9jb2wgZm9ybWF0LiZuYnNwOyBUaGUgdHJhbnNsYXRpb24gcHJvY2VzcyBpcwota25vdyBhcyBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24uPC9wPjxwPlRoZSBTT0FQIHNwZWNpZmljYXRpb24gZGVmaW5lcwotdGhlIFNPQVAgZW5jb2Rpbmcgc3R5bGU6PC9wPjxscT4gPHA+IDx1aWNvbnRyb2w+U09BUCBlbmNvZGluZzo8L3VpY29udHJvbD4mbmJzcDsKLVRoZSBTT0FQIGVuY29kaW5nIHN0eWxlIGFsbG93cyB5b3UgdG8gc2VyaWFsaXplL2Rlc2VyaWFsaXplIHZhbHVlcyBvZiBkYXRhCi10eXBlcyBmcm9tIHRoZSBTT0FQIGRhdGEgbW9kZWwuJm5ic3A7IFRoaXMgZW5jb2Rpbmcgc3R5bGUgaXMgZGVmaW5lZCBpbiB0aGUKLVNPQVAgMS4xIHN0YW5kYXJkLCBhbmQgaXMgbm90IFdTLUkgY29tcGxpYW50LjwvcD4gPC9scT48cD5XU0RMIGRlZmluZXMgdGhlCi1MaXRlcmFsIFhNTCBlbmNvZGluZyBzdHlsZTo8L3A+PGxxPiA8cD4gPHVpY29udHJvbD5MaXRlcmFsIFhNTDo8L3VpY29udHJvbD4mbmJzcDsKLUxpdGVyYWwgcmVmZXJzIHRvIHRoZSBmYWN0IHRoYXQgdGhlIGRvY3VtZW50IHNob3VsZCBiZSByZWFkIGFzLWlzLCBvciB1bmVuY29kZWQuCi1UaGUgZG9jdW1lbnQgaXMgc2VyaWFsaXplZCBhcyBYTUksIG1lYW5pbmcgdGhhdCB0aGUgbWVzc2FnZSBYTUwgY29tcGxpZXMgd2l0aAotdGhlIFNjaGVtYSBpbiB0aGUgV1NETC4gV2hlbiB1c2luZyBMaXRlcmFsIGVuY29kaW5nLCBlYWNoIG1lc3NhZ2UgcGFydCByZWZlcmVuY2VzCi1hIGNvbmNyZXRlIHNjaGVtYSBkZWZpbml0aW9uLiBMaXRlcmFsIGVuY29kaW5nIGlzIFdTLUkgY29tcGxpYW50LjwvcD4gPC9scT48L3NlY3Rpb24+Ci08c2VjdGlvbj48dGl0bGU+RGF0YSBtb2RlbDwvdGl0bGU+PHA+VGhlIHB1cnBvc2Ugb2YgdGhlIFNPQVAgZGF0YSBtb2RlbCBpcwotdG8gcHJvdmlkZSBhIGxhbmd1YWdlLWluZGVwZW5kZW50IGFic3RyYWN0aW9uIGZvciBkYXRhIHR5cGVzIHVzZWQgYnkgY29tbW9uCi1wcm9ncmFtbWluZyBsYW5ndWFnZSB0eXBlcy4mbmJzcDtJdCBjb25zaXN0cyBvZjo8L3A+PHVsPgotPGxpPiA8dWljb250cm9sPlNpbXBsZSBYU0QgdHlwZXMuPC91aWNvbnRyb2w+Jm5ic3A7IEZvciBleGFtcGxlIGludCwgc3RyaW5nLAotYW5kIGRhdGUuPC9saT4KLTxsaT4gPHVpY29udHJvbD5Db21wb3VuZCB0eXBlcy48L3VpY29udHJvbD4mbmJzcDsgVGhlcmUgYXJlIHR3byBraW5kcyBvZiBjb21wb3VuZAotdHlwZXMsICA8dmFybmFtZT5zdHJ1Y3RzPC92YXJuYW1lPiBhbmQgIDx2YXJuYW1lPmFycmF5czwvdmFybmFtZT4uJm5ic3A7IFN0cnVjdHMKLWFyZSBuYW1lZCBhZ2dyZWdhdGUgdHlwZXMgaW4gd2hpY2ggZWFjaCBlbGVtZW50IGhhcyBhIHVuaXF1ZSBuYW1lIG9yIFhNTCB0YWcuJm5ic3A7Ci1BcnJheXMgaGF2ZSBlbGVtZW50cyB0aGF0IGFyZSBpZGVudGlmaWVkIGJ5IHBvc2l0aW9uLCBub3QgYnkgbmFtZS48L2xpPgotPC91bD48cD5BbGwgZWxlbWVudHMgYW5kIGlkZW50aWZpZXJzIGNvbXByaXNpbmcgdGhlIFNPQVAgZGF0YSBtb2RlbCBhcmUgZGVmaW5lZAotaW4gdGhlIG5hbWVzcGFjZSBVUkkuJm5ic3A7IFRoZSBTT0FQIHN0YW5kYXJkIGRlZmluZXMgdGhlIHJ1bGVzIGZvciBob3cgZGF0YQotdHlwZXMgY2FuIGJlIGNvbnN0cnVjdGVkLiBBIHByb2plY3Qgc3BlY2lmaWMgWE1MIHNjaGVtYSBtdXN0IGRlZmluZSB0aGUgYWN0dWFsCi1kYXRhIHR5cGVzLiBUaGUgZWxlbWVudHMgb2YgdGhlIFNPQVAgc3BlY2lmaWNhdGlvbiBhcmUgZGVmaW5lZCBpbiAgPHhyZWYgZm9ybWF0PSJodG1sIgotaHJlZj0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iIHNjb3BlPSJleHRlcm5hbCI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS88L3hyZWY+IGFuZAotIDx4cmVmIGZvcm1hdD0iaHRtbCIgaHJlZj0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIHNjb3BlPSJleHRlcm5hbCI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy88L3hyZWY+PC9wPjwvc2VjdGlvbj4KLTxzZWN0aW9uPjx0aXRsZT5TT0FQIGltcGxlbWVudGF0aW9uczwvdGl0bGU+PHA+RGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZgotdGhlIFNPQVAgcHJvdG9jb2wgYXJlIGF2YWlsYWJsZSB0b2RheS4gRm9yIGV4YW1wbGUsIHRoZSBBcGFjaGUgRm91bmRhdGlvbgotcHJvdmlkZXMgQXBhY2hlIFNPQVAsIHdoaWNoIGdyZXcgb3V0IG9mIGFuIDx0bSB0bWNsYXNzPSJpYm0iIHRtb3duZXI9IklCTSBDb3Jwb3JhdGlvbiIKLXRtdHlwZT0icmVnIiB0cmFkZW1hcms9IklCTSI+SUJNPC90bT4gcHJvamVjdCBjYWxsZWQgU09BUDRKLCBhcyB3ZWxsIGFzIEFwYWNoZQotQXhpcyBhbmQgdGhlIDx0bSB0bWNsYXNzPSJpYm0iIHRtb3duZXI9IklCTSBDb3Jwb3JhdGlvbiIgdG10eXBlPSJyZWciIHRyYWRlbWFyaz0iSUJNIj5JQk08L3RtPiA8dG0KLXRtY2xhc3M9ImlibSIgdG1vd25lcj0iSUJNIENvcnBvcmF0aW9uIiB0bXR5cGU9InJlZyIgdHJhZGVtYXJrPSJXZWJTcGhlcmUiPldlYlNwaGVyZTwvdG0+IHJ1bnRpbWUKLWVudmlyb25tZW50cy48L3A+PC9zZWN0aW9uPgotPHNlY3Rpb24+PHRpdGxlPk1hcHBpbmdzPC90aXRsZT48cD5BIG1hcHBpbmcgZGVmaW5lcyBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuCi1hIHF1YWxpZmllZCBYTUwgZWxlbWVudCBuYW1lLCBhIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIgotdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gY2xhc3MgbmFtZSwgYW5kIGFuIGVuY29kaW5nIHN0eWxlLiZuYnNwOwotVGhlIG1hcHBpbmcgc3BlY2lmaWVzIGhvdywgdW5kZXIgdGhlIGdpdmVuIGVuY29kaW5nLCBhbiBpbmNvbWluZyBYTUwgZWxlbWVudAotd2l0aCBhIGZ1bGx5IHF1YWxpZmllZCBuYW1lIGlzIGNvbnZlcnRlZCB0byBhIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIgotdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gY2xhc3MgYW5kIHZpY2UgdmVyc2EuPC9wPjxwPkZvciBtb3JlCi1pbmZvcm1hdGlvbiBvbiBBcGFjaGUgU09BUCwgcmVmZXIgdG8gIDx4cmVmIGZvcm1hdD0iaHRtbCIgaHJlZj0iaHR0cDovL3htbC5hcGFjaGUub3JnL3NvYXAiCi1zY29wZT0iZXh0ZXJuYWwiPnhtbC5hcGFjaGUub3JnL3NvYXA8L3hyZWY+Jm5ic3A7IEZvciBtb3JlIGluZm9ybWF0aW9uIG9uCi1TT0FQIHJlZmVyIHRvICA8eHJlZiBmb3JtYXQ9Imh0bWwiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NPQVAiIHNjb3BlPSJleHRlcm5hbCI+d3d3LnczLm9yZy9UUi9TT0FQPC94cmVmPiA8L3A+PC9zZWN0aW9uPgotPC9jb25ib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iY3dzLmRpdGEiPjxsaW5rdGV4dD5XZWIgc2VydmljZXMgb3ZlcnZpZXc8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9ImN3c2lud3NhLmRpdGEiPjxsaW5rdGV4dD5Ub29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD4KLTwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vdGFza3MvdG92ZXJ3cy5kaXRhIiBzY29wZT0icGVlciI+PGxpbmt0ZXh0PiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L2NvbmNlcHQ+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jc29hcC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3NvYXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc3NjM5NC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jc29hcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJjb25jZXB0IiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IlNPQVAiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iU09BUCAoZm9ybWVybHkga25vd24gYXMgU2ltcGxlIE9iamVjdCBBY2Nlc3MgUHJvdG9jb2wpIGlzIGEgbGlnaHR3ZWlnaHQgcHJvdG9jb2wgZm9yIHRoZSBleGNoYW5nZSBvZiBpbmZvcm1hdGlvbiBpbiBhIGRlY2VudHJhbGl6ZWQsIGRpc3RyaWJ1dGVkIGVudmlyb25tZW50LiBBIFNPQVAgbWVzc2FnZSBpcyBhIHRyYW5zbWlzc2lvbiBvZiBpbmZvcm1hdGlvbiBmcm9tIGEgc2VuZGVyIHRvIGEgcmVjZWl2ZXIuIFNPQVAgbWVzc2FnZXMgY2FuIGJlIGNvbWJpbmVkIHRvIHBlcmZvcm0gcmVxdWVzdC9yZXNwb25zZSBwYXR0ZXJucy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iU09BUCAoZm9ybWVybHkga25vd24gYXMgU2ltcGxlIE9iamVjdCBBY2Nlc3MgUHJvdG9jb2wpIGlzIGEgbGlnaHR3ZWlnaHQgcHJvdG9jb2wgZm9yIHRoZSBleGNoYW5nZSBvZiBpbmZvcm1hdGlvbiBpbiBhIGRlY2VudHJhbGl6ZWQsIGRpc3RyaWJ1dGVkIGVudmlyb25tZW50LiBBIFNPQVAgbWVzc2FnZSBpcyBhIHRyYW5zbWlzc2lvbiBvZiBpbmZvcm1hdGlvbiBmcm9tIGEgc2VuZGVyIHRvIGEgcmVjZWl2ZXIuIFNPQVAgbWVzc2FnZXMgY2FuIGJlIGNvbWJpbmVkIHRvIHBlcmZvcm0gcmVxdWVzdC9yZXNwb25zZSBwYXR0ZXJucy4iIC8+Ci08bWV0YSBjb250ZW50PSJTT0FQLCBvdmVydmlldywgV2ViIHNlcnZpY2VzIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iU09BUCwgb3ZlcnZpZXcsIFdlYiBzZXJ2aWNlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3c3N0YW5kYXJkcy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iY3dzaW53c2EuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdG92ZXJ3cy5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9ImNzb2FwIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+U09BUDwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0iY3NvYXAiPjxhIG5hbWU9ImNzb2FwIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5TT0FQPC9oMT4KLQotCi0KLTxkaXY+PHA+U09BUCAoZm9ybWVybHkga25vd24gYXMgU2ltcGxlIE9iamVjdCBBY2Nlc3MgUHJvdG9jb2wpIGlzIGEgbGlnaHR3ZWlnaHQKLXByb3RvY29sIGZvciB0aGUgZXhjaGFuZ2Ugb2YgaW5mb3JtYXRpb24gaW4gYSBkZWNlbnRyYWxpemVkLCBkaXN0cmlidXRlZCBlbnZpcm9ubWVudC4KLUEgU09BUCBtZXNzYWdlIGlzIGEgdHJhbnNtaXNzaW9uIG9mIGluZm9ybWF0aW9uIGZyb20gYSBzZW5kZXIgdG8gYSByZWNlaXZlci4KLVNPQVAgbWVzc2FnZXMgY2FuIGJlIGNvbWJpbmVkIHRvIHBlcmZvcm0gcmVxdWVzdC9yZXNwb25zZSBwYXR0ZXJucy4gPC9wPgotCi08cD5TT0FQIGlzIHRyYW5zcG9ydCBpbmRlcGVuZGVudCBidXQgaXMgbW9zdCBjb21tb25seSBjYXJyaWVkIG92ZXIgSFRUUCBpbgotb3JkZXIgdG8gcnVuIHdpdGggdGhlIGV4aXN0aW5nIEludGVybmV0IGluZnJhc3RydWN0dXJlLsKgIFNPQVAgZW5hYmxlcwotdGhlIGJpbmRpbmcgYW5kIHVzYWdlIG9mIGRpc2NvdmVyZWQgV2ViIHNlcnZpY2VzIGJ5IGRlZmluaW5nIGEgbWVzc2FnZSBwYXRoCi1mb3Igcm91dGluZyBtZXNzYWdlcy4gU09BUCBpcyB1c2VkIHRvIHF1ZXJ5IFVEREkgZm9yIFdlYiBzZXJ2aWNlcy4gVGhlIHdvcmtiZW5jaAotc3VwcG9ydHMgU09BUCAxLjEuPC9wPgotCi08cD5TT0FQIGlzIGFuIFhNTC1iYXNlZCBwcm90b2NvbCB0aGF0IGRlZmluZXMgdGhyZWUgcGFydHMgdG8gZXZlcnkgbWVzc2FnZTo8L3A+Ci0KLTx1bD4KLTxsaT4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RW52ZWxvcGUuPC9zcGFuPsKgIFRoZSBlbnZlbG9wZSBkZWZpbmVzIGEgZnJhbWV3b3JrCi1mb3IgZGVzY3JpYmluZyB3aGF0IGlzIGluIGEgbWVzc2FnZSBhbmQgaG93IHRvIHByb2Nlc3MgaXQuwqAgQSBTT0FQIG1lc3NhZ2UKLWlzIGFuIGVudmVsb3BlIGNvbnRhaW5pbmcgemVybyBvciBtb3JlIGhlYWRlcnMgYW5kIGV4YWN0bHkgb25lIGJvZHkuwqAKLVRoZSBlbnZlbG9wZSBpcyB0aGUgdG9wIGVsZW1lbnQgb2YgdGhlIFhNTCBkb2N1bWVudCwgcHJvdmlkaW5nIGEgY29udGFpbmVyCi1mb3IgY29udHJvbCBpbmZvcm1hdGlvbiwgdGhlIGFkZHJlc3Mgb2YgYSBtZXNzYWdlLCBhbmQgdGhlIG1lc3NhZ2UgaXRzZWxmLsKgCi1IZWFkZXJzIHRyYW5zcG9ydCBhbnkgY29udHJvbCBpbmZvcm1hdGlvbiBzdWNoIGFzIHF1YWxpdHktb2Ytc2VydmljZSBhdHRyaWJ1dGVzLsKgCi1UaGUgYm9keSBjb250YWlucyB0aGUgbWVzc2FnZSBpZGVudGlmaWNhdGlvbiBhbmQgaXRzIHBhcmFtZXRlcnMuwqAgQm90aAotdGhlIGhlYWRlcnMgYW5kIHRoZSBib2R5IGFyZSBjaGlsZCBlbGVtZW50cyBvZiB0aGUgZW52ZWxvcGUuPC9saT4KLQotPGxpPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5FbmNvZGluZyBydWxlcy48L3NwYW4+wqAgVGhlIHNldCBvZiBlbmNvZGluZyBydWxlcwotZXhwcmVzc2VzIGluc3RhbmNlcyBvZiBhcHBsaWNhdGlvbi1kZWZpbmVkIGRhdGEgdHlwZXMuIEVuY29kaW5nIHJ1bGVzIGRlZmluZQotYSBzZXJpYWxpemF0aW9uIG1lY2hhbmlzbSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4Y2hhbmdlIGluc3RhbmNlcyBvZiBhcHBsaWNhdGlvbi1kZWZpbmVkCi1kYXRhIHR5cGVzLiBTT0FQIGRlZmluZXMgYSBwcm9ncmFtbWluZyBsYW5ndWFnZS1pbmRlcGVuZGVudCBkYXRhIHR5cGUgc2NoZW1lCi1iYXNlZCBvbiBYU0QgcGx1cyBlbmNvZGluZyBydWxlcyBmb3IgYWxsIGRhdGEgdHlwZXMgZGVmaW5lZCBhY2NvcmRpbmcgdG8gdGhpcwotbW9kZWwuIFNPQVAgZW5jb2RpbmcgaXMgbm90IFdTLUkgY29tcGxpYW50IGFuZCB0aHVzIHRoZSBMaXRlcmFsIHVzZSAod2hpY2gKLWlzIG5vIGVuY29kaW5nKSBpcyBzdWdnZXN0ZWQgZm9yIGludGVyb3BlcmFibGUgV2ViIHNlcnZpY2VzIGFuZCByZXF1aXJlZCBmb3IKLVdTLUkgY29tcGxpYW5jZS48L2xpPgotCi08bGk+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkNvbW11bmljYXRpb24gc3R5bGVzLjwvc3Bhbj4gQ29tbXVuaWNhdGlvbnMgY2FuIGZvbGxvdwotYSByZW1vdGUgcHJvY2VkdXJlIGNhbGwgKFJQQykgb3IgbWVzc2FnZS1vcmllbnRlZCAoRG9jdW1lbnQpIGZvcm1hdC7CoAotVGhlc2UgYXJlIGRpc2N1c3NlZCBiZWxvdy48L2xpPgotCi08L3VsPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+QmluZGluZyBzdHlsZXM8L2g0PjxwPlNPQVAgc3VwcG9ydHMgdHdvIGRpZmZlcmVudCBjb21tdW5pY2F0aW9uCi1zdHlsZXM6PC9wPgotPGJsb2NrcXVvdGU+IDxwPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5SZW1vdGUgcHJvY2VkdXJlIGNhbGwgKFJQQyk6PC9zcGFuPsKgCi1JbnZvY2F0aW9uIG9mIGFuIG9wZXJhdGlvbiByZXR1cm5pbmcgYSByZXN1bHQuIFR5cGljYWxseSB1c2VkIHdpdGggU09BUCBlbmNvZGluZywKLXdoaWNoIGlzIG5vdCBXUy1JIGNvbXBsaWFudC48L3A+Ci08cD4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RG9jdW1lbnQgU3R5bGU6PC9zcGFuPsKgCi1BbHNvIGtub3duIGFzIGRvY3VtZW50LW9yaWVudGVkIG9yIG1lc3NhZ2Utb3JpZW50ZWQgc3R5bGUuwqAgVGhpcyBzdHlsZQotcHJvdmlkZXMgYSBsb3dlciBsYXllciBvZiBhYnN0cmFjdGlvbiwgYW5kIHJlcXVpcmVzIG1vcmUgcHJvZ3JhbW1pbmcgd29yay48L3A+Ci0gPC9ibG9ja3F1b3RlPgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxoNCBjbGFzcz0ic2VjdGlvbnRpdGxlIj5FbmNvZGluZyBzdHlsZXM8L2g0PjxwPkluIGRpc3RyaWJ1dGVkIGNvbXB1dGluZyBlbnZpcm9ubWVudHMsCi1lbmNvZGluZyBzdHlsZXMgZGVmaW5lIGhvdyBkYXRhIHZhbHVlcyBkZWZpbmVkIGluIHRoZSBhcHBsaWNhdGlvbiBjYW4gYmUgdHJhbnNsYXRlZAotdG8gYW5kIGZyb20gYSBwYXJ0aWN1bGFyIHByb3RvY29sIGZvcm1hdC7CoCBUaGUgdHJhbnNsYXRpb24gcHJvY2VzcyBpcwota25vdyBhcyBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24uPC9wPgotPHA+VGhlIFNPQVAgc3BlY2lmaWNhdGlvbiBkZWZpbmVzCi10aGUgU09BUCBlbmNvZGluZyBzdHlsZTo8L3A+Ci08YmxvY2txdW90ZT4gPHA+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlNPQVAgZW5jb2Rpbmc6PC9zcGFuPsKgCi1UaGUgU09BUCBlbmNvZGluZyBzdHlsZSBhbGxvd3MgeW91IHRvIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSB2YWx1ZXMgb2YgZGF0YQotdHlwZXMgZnJvbSB0aGUgU09BUCBkYXRhIG1vZGVsLsKgIFRoaXMgZW5jb2Rpbmcgc3R5bGUgaXMgZGVmaW5lZCBpbiB0aGUKLVNPQVAgMS4xIHN0YW5kYXJkLCBhbmQgaXMgbm90IFdTLUkgY29tcGxpYW50LjwvcD4KLSA8L2Jsb2NrcXVvdGU+Ci08cD5XU0RMIGRlZmluZXMgdGhlCi1MaXRlcmFsIFhNTCBlbmNvZGluZyBzdHlsZTo8L3A+Ci08YmxvY2txdW90ZT4gPHA+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkxpdGVyYWwgWE1MOjwvc3Bhbj7CoAotTGl0ZXJhbCByZWZlcnMgdG8gdGhlIGZhY3QgdGhhdCB0aGUgZG9jdW1lbnQgc2hvdWxkIGJlIHJlYWQgYXMtaXMsIG9yIHVuZW5jb2RlZC4KLVRoZSBkb2N1bWVudCBpcyBzZXJpYWxpemVkIGFzIFhNSSwgbWVhbmluZyB0aGF0IHRoZSBtZXNzYWdlIFhNTCBjb21wbGllcyB3aXRoCi10aGUgU2NoZW1hIGluIHRoZSBXU0RMLiBXaGVuIHVzaW5nIExpdGVyYWwgZW5jb2RpbmcsIGVhY2ggbWVzc2FnZSBwYXJ0IHJlZmVyZW5jZXMKLWEgY29uY3JldGUgc2NoZW1hIGRlZmluaXRpb24uIExpdGVyYWwgZW5jb2RpbmcgaXMgV1MtSSBjb21wbGlhbnQuPC9wPgotIDwvYmxvY2txdW90ZT4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+RGF0YSBtb2RlbDwvaDQ+PHA+VGhlIHB1cnBvc2Ugb2YgdGhlIFNPQVAgZGF0YSBtb2RlbCBpcwotdG8gcHJvdmlkZSBhIGxhbmd1YWdlLWluZGVwZW5kZW50IGFic3RyYWN0aW9uIGZvciBkYXRhIHR5cGVzIHVzZWQgYnkgY29tbW9uCi1wcm9ncmFtbWluZyBsYW5ndWFnZSB0eXBlcy7CoEl0IGNvbnNpc3RzIG9mOjwvcD4KLTx1bD4KLTxsaT4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+U2ltcGxlIFhTRCB0eXBlcy48L3NwYW4+wqAgRm9yIGV4YW1wbGUgaW50LCBzdHJpbmcsCi1hbmQgZGF0ZS48L2xpPgotCi08bGk+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkNvbXBvdW5kIHR5cGVzLjwvc3Bhbj7CoCBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIGNvbXBvdW5kCi10eXBlcywgIDx2YXIgY2xhc3M9InZhcm5hbWUiPnN0cnVjdHM8L3Zhcj4gYW5kICA8dmFyIGNsYXNzPSJ2YXJuYW1lIj5hcnJheXM8L3Zhcj4uwqAgU3RydWN0cwotYXJlIG5hbWVkIGFnZ3JlZ2F0ZSB0eXBlcyBpbiB3aGljaCBlYWNoIGVsZW1lbnQgaGFzIGEgdW5pcXVlIG5hbWUgb3IgWE1MIHRhZy7CoAotQXJyYXlzIGhhdmUgZWxlbWVudHMgdGhhdCBhcmUgaWRlbnRpZmllZCBieSBwb3NpdGlvbiwgbm90IGJ5IG5hbWUuPC9saT4KLQotPC91bD4KLTxwPkFsbCBlbGVtZW50cyBhbmQgaWRlbnRpZmllcnMgY29tcHJpc2luZyB0aGUgU09BUCBkYXRhIG1vZGVsIGFyZSBkZWZpbmVkCi1pbiB0aGUgbmFtZXNwYWNlIFVSSS7CoCBUaGUgU09BUCBzdGFuZGFyZCBkZWZpbmVzIHRoZSBydWxlcyBmb3IgaG93IGRhdGEKLXR5cGVzIGNhbiBiZSBjb25zdHJ1Y3RlZC4gQSBwcm9qZWN0IHNwZWNpZmljIFhNTCBzY2hlbWEgbXVzdCBkZWZpbmUgdGhlIGFjdHVhbAotZGF0YSB0eXBlcy4gVGhlIGVsZW1lbnRzIG9mIHRoZSBTT0FQIHNwZWNpZmljYXRpb24gYXJlIGRlZmluZWQgaW4gIDxhIGhyZWY9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS88L2E+IGFuZAotIDxhIGhyZWY9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy88L2E+PC9wPgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxoNCBjbGFzcz0ic2VjdGlvbnRpdGxlIj5TT0FQIGltcGxlbWVudGF0aW9uczwvaDQ+PHA+RGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZgotdGhlIFNPQVAgcHJvdG9jb2wgYXJlIGF2YWlsYWJsZSB0b2RheS7CoCBGb3IgZXhhbXBsZSwgdGhlIEFwYWNoZSBGb3VuZGF0aW9uCi1wcm92aWRlcyBBcGFjaGUgU09BUCwgd2hpY2ggZ3JldyBvdXQgb2YgYW4gSUJNPHN1cD7Crjwvc3VwPiBwcm9qZWN0IGNhbGxlZCBTT0FQNEosIGFzIHdlbGwgYXMgQXBhY2hlCi1BeGlzIGFuZCB0aGUgSUJNIFdlYlNwaGVyZTxzdXA+wq48L3N1cD4gcnVudGltZQotZW52aXJvbm1lbnRzLjwvcD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+TWFwcGluZ3M8L2g0PjxwPkEgbWFwcGluZyBkZWZpbmVzIGFuIGFzc29jaWF0aW9uIGJldHdlZW4KLWEgcXVhbGlmaWVkIFhNTCBlbGVtZW50IG5hbWUsIGEgSmF2YeKEoiBjbGFzcyBuYW1lLCBhbmQgYW4gZW5jb2Rpbmcgc3R5bGUuwqAKLVRoZSBtYXBwaW5nIHNwZWNpZmllcyBob3csIHVuZGVyIHRoZSBnaXZlbiBlbmNvZGluZywgYW4gaW5jb21pbmcgWE1MIGVsZW1lbnQKLXdpdGggYSBmdWxseSBxdWFsaWZpZWQgbmFtZSBpcyBjb252ZXJ0ZWQgdG8gYSBKYXZhIGNsYXNzIGFuZCB2aWNlIHZlcnNhLjwvcD4KLTxwPkZvciBtb3JlCi1pbmZvcm1hdGlvbiBvbiBBcGFjaGUgU09BUCwgcmVmZXIgdG8gIDxhIGhyZWY9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy9zb2FwIiB0YXJnZXQ9Il9ibGFuayI+eG1sLmFwYWNoZS5vcmcvc29hcDwvYT7CoCBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgotU09BUCByZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvU09BUCIgdGFyZ2V0PSJfYmxhbmsiPnd3dy53My5vcmcvVFIvU09BUDwvYT4gPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c3N0YW5kYXJkcy5odG1sIiB0aXRsZT0iT25lIG9mIHRoZSBrZXkgYXR0cmlidXRlcyBvZiBJbnRlcm5ldCBzdGFuZGFyZHMgaXMgdGhhdCB0aGV5IGZvY3VzIG9uIHByb3RvY29scyBhbmQgbm90IG9uIGltcGxlbWVudGF0aW9ucy4gVGhlIEludGVybmV0IGlzIGNvbXBvc2VkIG9mIGhldGVyb2dlbmVvdXMgdGVjaG5vbG9naWVzIHRoYXQgc3VjY2Vzc2Z1bGx5IGludGVyb3BlcmF0ZSB0aHJvdWdoIHNoYXJlZCBwcm90b2NvbHMuIFRoaXMgcHJldmVudHMgaW5kaXZpZHVhbCB2ZW5kb3JzIGZyb20gaW1wb3NpbmcgYSBzdGFuZGFyZCBvbiB0aGUgSW50ZXJuZXQuIE9wZW4gU291cmNlIHNvZnR3YXJlIGRldmVsb3BtZW50IHBsYXlzIGEgY3J1Y2lhbCByb2xlIGluIHByZXNlcnZpbmcgdGhlIGludGVyb3BlcmFiaWxpdHkgb2YgdmVuZG9yIGltcGxlbWVudGF0aW9ucyBvZiBzdGFuZGFyZHMuIj5XZWIgc2VydmljZXMgc3RhbmRhcmRzPC9hPjwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJjd3MuaHRtbCIgdGl0bGU9IkEgV2ViIHNlcnZpY2UgaXMgYSBzZXQgb2YgcmVsYXRlZCBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBpbnZva2VkIG92ZXIgdGhlIEludGVybmV0LiBCdXNpbmVzc2VzIGNhbiBkeW5hbWljYWxseSBtaXggYW5kIG1hdGNoIFdlYiBzZXJ2aWNlcyB0byBwZXJmb3JtIGNvbXBsZXggdHJhbnNhY3Rpb25zIHdpdGggbWluaW1hbCBwcm9ncmFtbWluZy4gV2ViIHNlcnZpY2VzIGFsbG93IGJ1eWVycyBhbmQgc2VsbGVycyBhbGwgb3ZlciB0aGUgd29ybGQgdG8gZGlzY292ZXIgZWFjaCBvdGhlciwgY29ubmVjdCBkeW5hbWljYWxseSwgYW5kIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIGluIHJlYWwgdGltZSB3aXRoIG1pbmltYWwgaHVtYW4gaW50ZXJhY3Rpb24uIj5XZWIgc2VydmljZXMgb3ZlcnZpZXc8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9ImN3c2lud3NhLmh0bWwiIHRpdGxlPSIiPlRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi90YXNrcy90b3ZlcndzLmh0bWwiPiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZTYyODYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA1LCB2LjQwMDItLT4KLTwhRE9DVFlQRSBjb25jZXB0IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIENvbmNlcHQvL0VOIgotICJjb25jZXB0LmR0ZCI+Ci08Y29uY2VwdCBpZD0iY3dzIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvdGl0bGU+Ci08c2hvcnRkZXNjPkEgV2ViIHNlcnZpY2UgaXMgYSBzZXQgb2YgcmVsYXRlZCBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4KLWJlIHByb2dyYW1tYXRpY2FsbHkgaW52b2tlZCBvdmVyIHRoZSBJbnRlcm5ldC4gQnVzaW5lc3NlcyBjYW4gZHluYW1pY2FsbHkKLW1peCBhbmQgbWF0Y2ggV2ViIHNlcnZpY2VzIHRvIHBlcmZvcm0gY29tcGxleCB0cmFuc2FjdGlvbnMgd2l0aCBtaW5pbWFsIHByb2dyYW1taW5nLgotV2ViIHNlcnZpY2VzIGFsbG93IGJ1eWVycyBhbmQgc2VsbGVycyBhbGwgb3ZlciB0aGUgd29ybGQgdG8gZGlzY292ZXIgZWFjaAotb3RoZXIsIGNvbm5lY3QgZHluYW1pY2FsbHksIGFuZCBleGVjdXRlIHRyYW5zYWN0aW9ucyBpbiByZWFsIHRpbWUgd2l0aCBtaW5pbWFsCi1odW1hbiBpbnRlcmFjdGlvbi48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5vdmVydmlldzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08Y29uYm9keT4KLTxwPldlYiBzZXJ2aWNlcyBhcmUgc2VsZi1jb250YWluZWQsIHNlbGYtZGVzY3JpYmluZyBtb2R1bGFyIGFwcGxpY2F0aW9ucyB0aGF0Ci1jYW4gYmUgcHVibGlzaGVkLCBsb2NhdGVkLCBhbmQgaW52b2tlZCBhY3Jvc3MgdGhlIFdlYi48L3A+Ci08bHE+IDxwPiA8dWljb250cm9sPldlYiBzZXJ2aWNlcyBhcmUgc2VsZi1jb250YWluZWQuPC91aWNvbnRyb2w+IE9uIHRoZSBjbGllbnQKLXNpZGUsIG5vIGFkZGl0aW9uYWwgc29mdHdhcmUgaXMgcmVxdWlyZWQuJm5ic3A7IEEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugd2l0aAotWE1MIGFuZCBIVFRQIGNsaWVudCBzdXBwb3J0IGlzIGVub3VnaCB0byBnZXQgeW91IHN0YXJ0ZWQuJm5ic3A7IE9uIHRoZSBzZXJ2ZXIKLXNpZGUsIGEgV2ViIHNlcnZlciBhbmQgc2VydmxldCBlbmdpbmUgYXJlIHJlcXVpcmVkLiZuYnNwOyBUaGUgY2xpZW50IGFuZCBzZXJ2ZXIKLWNhbiBiZSBpbXBsZW1lbnRlZCBpbiBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLiZuYnNwOyBJdCBpcyBwb3NzaWJsZSB0byBXZWIKLXNlcnZpY2UgZW5hYmxlIGFuIGV4aXN0aW5nIGFwcGxpY2F0aW9uIHdpdGhvdXQgd3JpdGluZyBhIHNpbmdsZSBsaW5lIG9mIGNvZGUuPC9wPiA8cD4gPHVpY29udHJvbD5XZWIKLXNlcnZpY2VzIGFyZSBzZWxmLWRlc2NyaWJpbmcuPC91aWNvbnRyb2w+IFRoZSBjbGllbnQgYW5kIHNlcnZlciBuZWVkIHRvIHJlY29nbml6ZQotb25seSB0aGUgZm9ybWF0IGFuZCBjb250ZW50IG9mIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG1lc3NhZ2VzLiZuYnNwOyBUaGUgZGVmaW5pdGlvbgotb2YgdGhlIG1lc3NhZ2UgZm9ybWF0IHRyYXZlbHMgd2l0aCB0aGUgbWVzc2FnZTsgbm8gZXh0ZXJuYWwgbWV0YWRhdGEgcmVwb3NpdG9yaWVzCi1vciBjb2RlIGdlbmVyYXRpb24gdG9vbHMgYXJlIHJlcXVpcmVkLjwvcD4gPHA+IDx1aWNvbnRyb2w+V2ViIHNlcnZpY2VzIGFyZQotbW9kdWxhci48L3VpY29udHJvbD4gU2ltcGxlIFdlYiBzZXJ2aWNlcyBjYW4gYmUgYWdncmVnYXRlZCB0byBmb3JtIG1vcmUgY29tcGxleAotV2ViIHNlcnZpY2VzIGVpdGhlciBieSB1c2luZyB3b3JrZmxvdyB0ZWNobmlxdWVzIG9yIGJ5IGNhbGxpbmcgbG93ZXIgbGF5ZXIKLVdlYiBzZXJ2aWNlcyBmcm9tIGEgV2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24uPC9wPjxwPjx1aWNvbnRyb2w+V2ViIFNlcnZpY2VzCi1hcmUgcGxhdGZvcm0gaW5kZXBlbmRlbnQuPC91aWNvbnRyb2w+IFdlYiBzZXJ2aWNlcyBhcmUgYmFzZWQgb24gYSBjb25jaXNlCi1zZXQgb2Ygb3BlbiwgWE1MLWJhc2VkIHN0YW5kYXJkcyBkZXNpZ25lZCB0byBwcm9tb3RlIGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbgotYSBXZWIgc2VydmljZSBhbmQgY2xpZW50cyBhY3Jvc3MgYSB2YXJpZXR5IG9mIGNvbXB1dGluZyBwbGF0Zm9ybXMgYW5kIHByb2dyYW1taW5nCi1sYW5ndWFnZXMuPC9wPiA8L2xxPgotPHA+V2ViIHNlcnZpY2VzIG1pZ2h0IGJlIGFueXRoaW5nLCBmb3IgZXhhbXBsZSwgdGhlYXRyZSByZXZpZXcgYXJ0aWNsZXMsIHdlYXRoZXIKLXJlcG9ydHMsIGNyZWRpdCBjaGVja3MsIHN0b2NrIHF1b3RhdGlvbnMsIHRyYXZlbCBhZHZpc29yaWVzLCBvciBhaXJsaW5lIHRyYXZlbAotcmVzZXJ2YXRpb24gcHJvY2Vzc2VzLiBFYWNoIG9mIHRoZXNlIHNlbGYtY29udGFpbmVkIGJ1c2luZXNzIHNlcnZpY2VzIGlzIGFuCi1hcHBsaWNhdGlvbiB0aGF0IGNhbiBlYXNpbHkgaW50ZWdyYXRlIHdpdGggb3RoZXIgc2VydmljZXMsIGZyb20gdGhlIHNhbWUgb3IKLWRpZmZlcmVudCBjb21wYW5pZXMsIHRvIGNyZWF0ZSBhIGNvbXBsZXRlIGJ1c2luZXNzIHByb2Nlc3MuIFRoaXMgaW50ZXJvcGVyYWJpbGl0eQotYWxsb3dzIGJ1c2luZXNzZXMgdG8gZHluYW1pY2FsbHkgcHVibGlzaCwgZGlzY292ZXIsIGFuZCBiaW5kIGEgcmFuZ2Ugb2YgV2ViCi1zZXJ2aWNlcyB0aHJvdWdoIHRoZSBJbnRlcm5ldC48L3A+Ci08c2VjdGlvbj48dGl0bGU+Q2F0ZWdvcmllcyBvZiBXZWIgc2VydmljZXM8L3RpdGxlPjxwPldlYiBzZXJ2aWNlcyBjYW4gYmUgZ3JvdXBlZAotaW50byB0aHJlZSBjYXRlZ29yaWVzOjwvcD48bHE+IDxwPiA8dWljb250cm9sPkJ1c2luZXNzIGluZm9ybWF0aW9uLjwvdWljb250cm9sPiBBCi1idXNpbmVzcyBzaGFyZXMgaW5mb3JtYXRpb24gd2l0aCBjb25zdW1lcnMgb3Igb3RoZXIgYnVzaW5lc3Nlcy4gSW4gdGhpcyBjYXNlLAotdGhlIGJ1c2luZXNzIGlzIHVzaW5nIFdlYiBzZXJ2aWNlcyB0byBleHBhbmQgaXRzIHNjb3BlLiBFeGFtcGxlcyBvZiBidXNpbmVzcwotaW5mb3JtYXRpb25hbCBXZWIgc2VydmljZXMgYXJlIG5ld3Mgc3RyZWFtcywgd2VhdGhlciByZXBvcnRzLCBvciBzdG9jayBxdW90YXRpb25zLjwvcD4gPHA+IDx1aWNvbnRyb2w+QnVzaW5lc3MKLWludGVncmF0aW9uLjwvdWljb250cm9sPiBBIGJ1c2luZXNzIHByb3ZpZGVzIHRyYW5zYWN0aW9uYWwsICJmb3IgZmVlIiBzZXJ2aWNlcwotdG8gaXRzIGN1c3RvbWVycy4gSW4gdGhpcyBjYXNlLCB0aGUgYnVzaW5lc3MgYmVjb21lcyBwYXJ0IG9mIGEgZ2xvYmFsIG5ldHdvcmsKLW9mIHZhbHVlLWFkZGVkIHN1cHBsaWVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmR1Y3QgY29tbWVyY2UuIEV4YW1wbGVzIG9mCi1idXNpbmVzcyBpbnRlZ3JhdGlvbiBXZWIgc2VydmljZXMgaW5jbHVkZSBiaWQgYW5kIGF1Y3Rpb24gZS1tYXJrZXRwbGFjZXMsCi1yZXNlcnZhdGlvbiBzeXN0ZW1zLCBhbmQgY3JlZGl0IGNoZWNraW5nLjwvcD4gPHA+IDx1aWNvbnRyb2w+QnVzaW5lc3MgcHJvY2VzcwotZXh0ZXJuYWxpemF0aW9uLjwvdWljb250cm9sPiBBIGJ1c2luZXNzIGRpZmZlcmVudGlhdGVzIGl0c2VsZiBmcm9tIGl0cyBjb21wZXRpdGlvbgotdGhyb3VnaCB0aGUgY3JlYXRpb24gb2YgYSBnbG9iYWwgdmFsdWUgY2hhaW4uIEluIHRoaXMgY2FzZSwgdGhlIGJ1c2luZXNzIHVzZXMKLVdlYiBzZXJ2aWNlcyB0byBkeW5hbWljYWxseSBpbnRlZ3JhdGUgaXRzIHByb2Nlc3Nlcy4gQW4gZXhhbXBsZSBvZiBidXNpbmVzcwotcHJvY2VzcyBleHRlcm5hbGl6YXRpb24gV2ViIHNlcnZpY2VzIGlzIHRoZSBhc3NvY2lhdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQKLWNvbXBhbmllcyB0byBjb21iaW5lIG1hbnVmYWN0dXJpbmcsIGFzc2VtYmx5LCB3aG9sZXNhbGUgZGlzdHJpYnV0aW9uLCBhbmQKLXJldGFpbCBzYWxlcyBvZiBhIHBhcnRpY3VsYXIgcHJvZHVjdC48L3A+IDwvbHE+PC9zZWN0aW9uPgotPHNlY3Rpb24+PHRpdGxlPlNlcnZpY2Ugcm9sZXMgYW5kIGludGVyYWN0aW9uczwvdGl0bGU+PHA+QSBuZXR3b3JrIGNvbXBvbmVudAotaW4gYSBXZWIgU2VydmljZXMgYXJjaGl0ZWN0dXJlIGNhbiBwbGF5IG9uZSBvciBtb3JlIGZ1bmRhbWVudGFsIHJvbGVzOiBzZXJ2aWNlCi1wcm92aWRlciwgc2VydmljZSBicm9rZXIsIGFuZCBzZXJ2aWNlIGNsaWVudC48L3A+PHVsPgotPGxpPlNlcnZpY2UgcHJvdmlkZXJzIGNyZWF0ZSBhbmQgZGVwbG95IHRoZWlyIFdlYiBzZXJ2aWNlcyBhbmQgY2FuIHB1Ymxpc2gKLXRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlaXIgV1NETC1kZXNjcmliZWQgc2VydmljZXMgdGhyb3VnaCBhIHNlcnZpY2UgcmVnaXN0cnksCi1zdWNoIGFzIGEgVURESSBCdXNpbmVzcyBSZWdpc3RyeS48L2xpPgotPGxpPlNlcnZpY2UgYnJva2VycyByZWdpc3RlciBhbmQgY2F0ZWdvcml6ZSBwdWJsaXNoZWQgc2VydmljZXMgYW5kIHByb3ZpZGUKLXNlYXJjaCBzZXJ2aWNlcy4gRm9yIGV4YW1wbGUsIFVEREkgYWN0cyBhcyBhIHNlcnZpY2UgYnJva2VyIGZvciBXU0RMLWRlc2NyaWJlZAotV2ViIHNlcnZpY2VzLjwvbGk+Ci08bGk+U2VydmljZSBjbGllbnRzIHVzZSBicm9rZXIgc2VydmljZXMgc3VjaCBhcyB0aGUgVURESSBCdXNpbmVzcyBSZWdpc3RyeQotdG8gZGlzY292ZXIgYSBuZWVkZWQgV1NETC1kZXNjcmliZWQgc2VydmljZSBhbmQgdGhlbiBiaW5kIHRvIGFuZCBjYWxsIHRoZQotc2VydmljZSBwcm92aWRlci48L2xpPgotPC91bD48cD5CaW5kaW5nIGludm9sdmVzIGVzdGFibGlzaGluZyBhbGwgZW52aXJvbm1lbnRhbCBwcmVyZXF1aXNpdGVzIHRoYXQKLWFyZSBuZWNlc3NhcnkgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlIHRoZSBzZXJ2aWNlcy4gRXhhbXBsZXMgb2YgZW52aXJvbm1lbnRhbAotcHJlcmVxdWlzaXRlcyBpbmNsdWRlIHNlY3VyaXR5LCB0cmFuc2FjdGlvbiBtb25pdG9yaW5nLCBhbmQgSFRUUCBhdmFpbGFiaWxpdHkuCi1UaGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIHJvbGVzIGFyZSBkZXNjcmliZWQgaW4gRmlndXJlIDEuPC9wPjxwPkZpZ3VyZQotMS4gU2VydmljZSByb2xlcyBhbmQgaW50ZXJhY3Rpb25zLjwvcD48cD4gPGltYWdlIGFsdD0iRmlndXJlIDEgaWxsdXN0cmF0ZXMgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBzZXJ2aWNlIGJyb2tlciwgc2VydmljZSBwcm92aWRlciwgYW5kIHNlcnZpY2UgcmVxdWVzdG9yLiIKLWhyZWY9Ii4uL2ltYWdlcy9yb2xlcy5naWYiPjwvaW1hZ2U+IDwvcD48cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBXZWIgc2VydmljZXMsCi1yZWZlciB0byAgPHhyZWYgZm9ybWF0PSJodG1sIiBocmVmPSJodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvd2Vic2VydmljZXMiCi1zY29wZT0iZXh0ZXJuYWwiPnd3dy5pYm0uY29tL2RldmVsb3BlcndvcmtzL3dlYnNlcnZpY2VzPC94cmVmPjwvcD48L3NlY3Rpb24+Ci08L2NvbmJvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSJjd3NpbndzYS5kaXRhIj48bGlua3RleHQ+VG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvbGlua3RleHQ+Ci08L2xpbms+Ci08bGluayBocmVmPSJjd3NzdGFuZGFyZHMuZGl0YSIgc2NvcGU9ImxvY2FsIj48bGlua3RleHQ+V2ViIHNlcnZpY2VzIHN0YW5kYXJkczwvbGlua3RleHQ+Ci08L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuZGl0YSIgc2NvcGU9ImxvY2FsIj48bGlua3RleHQ+IERldmVsb3BpbmcgV2ViCi1zZXJ2aWNlczwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvY29uY2VwdD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3cy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MzljNjcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9ImNvbmNlcHQiIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iV2ViIHNlcnZpY2VzIG92ZXJ2aWV3IiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IkEgV2ViIHNlcnZpY2UgaXMgYSBzZXQgb2YgcmVsYXRlZCBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBpbnZva2VkIG92ZXIgdGhlIEludGVybmV0LiBCdXNpbmVzc2VzIGNhbiBkeW5hbWljYWxseSBtaXggYW5kIG1hdGNoIFdlYiBzZXJ2aWNlcyB0byBwZXJmb3JtIGNvbXBsZXggdHJhbnNhY3Rpb25zIHdpdGggbWluaW1hbCBwcm9ncmFtbWluZy4gV2ViIHNlcnZpY2VzIGFsbG93IGJ1eWVycyBhbmQgc2VsbGVycyBhbGwgb3ZlciB0aGUgd29ybGQgdG8gZGlzY292ZXIgZWFjaCBvdGhlciwgY29ubmVjdCBkeW5hbWljYWxseSwgYW5kIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIGluIHJlYWwgdGltZSB3aXRoIG1pbmltYWwgaHVtYW4gaW50ZXJhY3Rpb24uIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkEgV2ViIHNlcnZpY2UgaXMgYSBzZXQgb2YgcmVsYXRlZCBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBpbnZva2VkIG92ZXIgdGhlIEludGVybmV0LiBCdXNpbmVzc2VzIGNhbiBkeW5hbWljYWxseSBtaXggYW5kIG1hdGNoIFdlYiBzZXJ2aWNlcyB0byBwZXJmb3JtIGNvbXBsZXggdHJhbnNhY3Rpb25zIHdpdGggbWluaW1hbCBwcm9ncmFtbWluZy4gV2ViIHNlcnZpY2VzIGFsbG93IGJ1eWVycyBhbmQgc2VsbGVycyBhbGwgb3ZlciB0aGUgd29ybGQgdG8gZGlzY292ZXIgZWFjaCBvdGhlciwgY29ubmVjdCBkeW5hbWljYWxseSwgYW5kIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIGluIHJlYWwgdGltZSB3aXRoIG1pbmltYWwgaHVtYW4gaW50ZXJhY3Rpb24uIiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBvdmVydmlldyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgb3ZlcnZpZXciIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3NzdGFuZGFyZHMuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzdG9wZG93bi5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3NidG11cC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3NzdGFuZGFyZHMuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdG92ZXJ3cy5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9ImN3cyIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0iY3dzIj48YSBuYW1lPSJjd3MiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvaDE+Ci0KLQotCi08ZGl2PjxwPkEgV2ViIHNlcnZpY2UgaXMgYSBzZXQgb2YgcmVsYXRlZCBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4KLWJlIHByb2dyYW1tYXRpY2FsbHkgaW52b2tlZCBvdmVyIHRoZSBJbnRlcm5ldC4gQnVzaW5lc3NlcyBjYW4gZHluYW1pY2FsbHkKLW1peCBhbmQgbWF0Y2ggV2ViIHNlcnZpY2VzIHRvIHBlcmZvcm0gY29tcGxleCB0cmFuc2FjdGlvbnMgd2l0aCBtaW5pbWFsIHByb2dyYW1taW5nLgotV2ViIHNlcnZpY2VzIGFsbG93IGJ1eWVycyBhbmQgc2VsbGVycyBhbGwgb3ZlciB0aGUgd29ybGQgdG8gZGlzY292ZXIgZWFjaAotb3RoZXIsIGNvbm5lY3QgZHluYW1pY2FsbHksIGFuZCBleGVjdXRlIHRyYW5zYWN0aW9ucyBpbiByZWFsIHRpbWUgd2l0aCBtaW5pbWFsCi1odW1hbiBpbnRlcmFjdGlvbi48L3A+Ci0KLTxwPldlYiBzZXJ2aWNlcyBhcmUgc2VsZi1jb250YWluZWQsIHNlbGYtZGVzY3JpYmluZyBtb2R1bGFyIGFwcGxpY2F0aW9ucyB0aGF0Ci1jYW4gYmUgcHVibGlzaGVkLCBsb2NhdGVkLCBhbmQgaW52b2tlZCBhY3Jvc3MgdGhlIFdlYi48L3A+Ci0KLTxibG9ja3F1b3RlPiA8cD4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViIHNlcnZpY2VzIGFyZSBzZWxmLWNvbnRhaW5lZC48L3NwYW4+IE9uIHRoZSBjbGllbnQKLXNpZGUsIG5vIGFkZGl0aW9uYWwgc29mdHdhcmUgaXMgcmVxdWlyZWQuwqAgQSBwcm9ncmFtbWluZyBsYW5ndWFnZSB3aXRoCi1YTUwgYW5kIEhUVFAgY2xpZW50IHN1cHBvcnQgaXMgZW5vdWdoIHRvIGdldCB5b3Ugc3RhcnRlZC7CoCBPbiB0aGUgc2VydmVyCi1zaWRlLCBhIFdlYiBzZXJ2ZXIgYW5kIHNlcnZsZXQgZW5naW5lIGFyZSByZXF1aXJlZC7CoCBUaGUgY2xpZW50IGFuZCBzZXJ2ZXIKLWNhbiBiZSBpbXBsZW1lbnRlZCBpbiBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLsKgIEl0IGlzIHBvc3NpYmxlIHRvIFdlYgotc2VydmljZSBlbmFibGUgYW4gZXhpc3RpbmcgYXBwbGljYXRpb24gd2l0aG91dCB3cml0aW5nIGEgc2luZ2xlIGxpbmUgb2YgY29kZS48L3A+Ci0gPHA+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPldlYgotc2VydmljZXMgYXJlIHNlbGYtZGVzY3JpYmluZy48L3NwYW4+IFRoZSBjbGllbnQgYW5kIHNlcnZlciBuZWVkIHRvIHJlY29nbml6ZQotb25seSB0aGUgZm9ybWF0IGFuZCBjb250ZW50IG9mIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG1lc3NhZ2VzLsKgIFRoZSBkZWZpbml0aW9uCi1vZiB0aGUgbWVzc2FnZSBmb3JtYXQgdHJhdmVscyB3aXRoIHRoZSBtZXNzYWdlOyBubyBleHRlcm5hbCBtZXRhZGF0YSByZXBvc2l0b3JpZXMKLW9yIGNvZGUgZ2VuZXJhdGlvbiB0b29scyBhcmUgcmVxdWlyZWQuPC9wPgotIDxwPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5XZWIgc2VydmljZXMgYXJlCi1tb2R1bGFyLjwvc3Bhbj4gU2ltcGxlIFdlYiBzZXJ2aWNlcyBjYW4gYmUgYWdncmVnYXRlZCB0byBmb3JtIG1vcmUgY29tcGxleAotV2ViIHNlcnZpY2VzIGVpdGhlciBieSB1c2luZyB3b3JrZmxvdyB0ZWNobmlxdWVzIG9yIGJ5IGNhbGxpbmcgbG93ZXIgbGF5ZXIKLVdlYiBzZXJ2aWNlcyBmcm9tIGEgV2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24uPC9wPgotPHA+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViIFNlcnZpY2VzCi1hcmUgcGxhdGZvcm0gaW5kZXBlbmRlbnQuPC9zcGFuPiBXZWIgc2VydmljZXMgYXJlIGJhc2VkIG9uIGEgY29uY2lzZQotc2V0IG9mIG9wZW4sIFhNTC1iYXNlZCBzdGFuZGFyZHMgZGVzaWduZWQgdG8gcHJvbW90ZSBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4KLWEgV2ViIHNlcnZpY2UgYW5kIGNsaWVudHMgYWNyb3NzIGEgdmFyaWV0eSBvZiBjb21wdXRpbmcgcGxhdGZvcm1zIGFuZCBwcm9ncmFtbWluZwotbGFuZ3VhZ2VzLjwvcD4KLSA8L2Jsb2NrcXVvdGU+Ci0KLTxwPldlYiBzZXJ2aWNlcyBtaWdodCBiZSBhbnl0aGluZywgZm9yIGV4YW1wbGUsIHRoZWF0cmUgcmV2aWV3IGFydGljbGVzLCB3ZWF0aGVyCi1yZXBvcnRzLCBjcmVkaXQgY2hlY2tzLCBzdG9jayBxdW90YXRpb25zLCB0cmF2ZWwgYWR2aXNvcmllcywgb3IgYWlybGluZSB0cmF2ZWwKLXJlc2VydmF0aW9uIHByb2Nlc3Nlcy4gRWFjaCBvZiB0aGVzZSBzZWxmLWNvbnRhaW5lZCBidXNpbmVzcyBzZXJ2aWNlcyBpcyBhbgotYXBwbGljYXRpb24gdGhhdCBjYW4gZWFzaWx5IGludGVncmF0ZSB3aXRoIG90aGVyIHNlcnZpY2VzLCBmcm9tIHRoZSBzYW1lIG9yCi1kaWZmZXJlbnQgY29tcGFuaWVzLCB0byBjcmVhdGUgYSBjb21wbGV0ZSBidXNpbmVzcyBwcm9jZXNzLiBUaGlzIGludGVyb3BlcmFiaWxpdHkKLWFsbG93cyBidXNpbmVzc2VzIHRvIGR5bmFtaWNhbGx5IHB1Ymxpc2gsIGRpc2NvdmVyLCBhbmQgYmluZCBhIHJhbmdlIG9mIFdlYgotc2VydmljZXMgdGhyb3VnaCB0aGUgSW50ZXJuZXQuPC9wPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+Q2F0ZWdvcmllcyBvZiBXZWIgc2VydmljZXM8L2g0PjxwPldlYiBzZXJ2aWNlcyBjYW4gYmUgZ3JvdXBlZAotaW50byB0aHJlZSBjYXRlZ29yaWVzOjwvcD4KLTxibG9ja3F1b3RlPiA8cD4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QnVzaW5lc3MgaW5mb3JtYXRpb24uPC9zcGFuPiBBCi1idXNpbmVzcyBzaGFyZXMgaW5mb3JtYXRpb24gd2l0aCBjb25zdW1lcnMgb3Igb3RoZXIgYnVzaW5lc3Nlcy4gSW4gdGhpcyBjYXNlLAotdGhlIGJ1c2luZXNzIGlzIHVzaW5nIFdlYiBzZXJ2aWNlcyB0byBleHBhbmQgaXRzIHNjb3BlLiBFeGFtcGxlcyBvZiBidXNpbmVzcwotaW5mb3JtYXRpb25hbCBXZWIgc2VydmljZXMgYXJlIG5ld3Mgc3RyZWFtcywgd2VhdGhlciByZXBvcnRzLCBvciBzdG9jayBxdW90YXRpb25zLjwvcD4KLSA8cD4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QnVzaW5lc3MKLWludGVncmF0aW9uLjwvc3Bhbj4gQSBidXNpbmVzcyBwcm92aWRlcyB0cmFuc2FjdGlvbmFsLCAiZm9yIGZlZSIgc2VydmljZXMKLXRvIGl0cyBjdXN0b21lcnMuIEluIHRoaXMgY2FzZSwgdGhlIGJ1c2luZXNzIGJlY29tZXMgcGFydCBvZiBhIGdsb2JhbCBuZXR3b3JrCi1vZiB2YWx1ZS1hZGRlZCBzdXBwbGllcnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25kdWN0IGNvbW1lcmNlLiBFeGFtcGxlcyBvZgotYnVzaW5lc3MgaW50ZWdyYXRpb24gV2ViIHNlcnZpY2VzIGluY2x1ZGUgYmlkIGFuZCBhdWN0aW9uIGUtbWFya2V0cGxhY2VzLAotcmVzZXJ2YXRpb24gc3lzdGVtcywgYW5kIGNyZWRpdCBjaGVja2luZy48L3A+Ci0gPHA+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkJ1c2luZXNzIHByb2Nlc3MKLWV4dGVybmFsaXphdGlvbi48L3NwYW4+IEEgYnVzaW5lc3MgZGlmZmVyZW50aWF0ZXMgaXRzZWxmIGZyb20gaXRzIGNvbXBldGl0aW9uCi10aHJvdWdoIHRoZSBjcmVhdGlvbiBvZiBhIGdsb2JhbCB2YWx1ZSBjaGFpbi4gSW4gdGhpcyBjYXNlLCB0aGUgYnVzaW5lc3MgdXNlcwotV2ViIHNlcnZpY2VzIHRvIGR5bmFtaWNhbGx5IGludGVncmF0ZSBpdHMgcHJvY2Vzc2VzLiBBbiBleGFtcGxlIG9mIGJ1c2luZXNzCi1wcm9jZXNzIGV4dGVybmFsaXphdGlvbiBXZWIgc2VydmljZXMgaXMgdGhlIGFzc29jaWF0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudAotY29tcGFuaWVzIHRvIGNvbWJpbmUgbWFudWZhY3R1cmluZywgYXNzZW1ibHksIHdob2xlc2FsZSBkaXN0cmlidXRpb24sIGFuZAotcmV0YWlsIHNhbGVzIG9mIGEgcGFydGljdWxhciBwcm9kdWN0LjwvcD4KLSA8L2Jsb2NrcXVvdGU+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGg0IGNsYXNzPSJzZWN0aW9udGl0bGUiPlNlcnZpY2Ugcm9sZXMgYW5kIGludGVyYWN0aW9uczwvaDQ+PHA+QSBuZXR3b3JrIGNvbXBvbmVudAotaW4gYSBXZWIgU2VydmljZXMgYXJjaGl0ZWN0dXJlIGNhbiBwbGF5IG9uZSBvciBtb3JlIGZ1bmRhbWVudGFsIHJvbGVzOiBzZXJ2aWNlCi1wcm92aWRlciwgc2VydmljZSBicm9rZXIsIGFuZCBzZXJ2aWNlIGNsaWVudC48L3A+Ci08dWw+Ci08bGk+U2VydmljZSBwcm92aWRlcnMgY3JlYXRlIGFuZCBkZXBsb3kgdGhlaXIgV2ViIHNlcnZpY2VzIGFuZCBjYW4gcHVibGlzaAotdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGVpciBXU0RMLWRlc2NyaWJlZCBzZXJ2aWNlcyB0aHJvdWdoIGEgc2VydmljZSByZWdpc3RyeSwKLXN1Y2ggYXMgYSBVRERJIEJ1c2luZXNzIFJlZ2lzdHJ5LjwvbGk+Ci0KLTxsaT5TZXJ2aWNlIGJyb2tlcnMgcmVnaXN0ZXIgYW5kIGNhdGVnb3JpemUgcHVibGlzaGVkIHNlcnZpY2VzIGFuZCBwcm92aWRlCi1zZWFyY2ggc2VydmljZXMuIEZvciBleGFtcGxlLCBVRERJIGFjdHMgYXMgYSBzZXJ2aWNlIGJyb2tlciBmb3IgV1NETC1kZXNjcmliZWQKLVdlYiBzZXJ2aWNlcy48L2xpPgotCi08bGk+U2VydmljZSBjbGllbnRzIHVzZSBicm9rZXIgc2VydmljZXMgc3VjaCBhcyB0aGUgVURESSBCdXNpbmVzcyBSZWdpc3RyeQotdG8gZGlzY292ZXIgYSBuZWVkZWQgV1NETC1kZXNjcmliZWQgc2VydmljZSBhbmQgdGhlbiBiaW5kIHRvIGFuZCBjYWxsIHRoZQotc2VydmljZSBwcm92aWRlci48L2xpPgotCi08L3VsPgotPHA+QmluZGluZyBpbnZvbHZlcyBlc3RhYmxpc2hpbmcgYWxsIGVudmlyb25tZW50YWwgcHJlcmVxdWlzaXRlcyB0aGF0Ci1hcmUgbmVjZXNzYXJ5IHRvIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGUgc2VydmljZXMuIEV4YW1wbGVzIG9mIGVudmlyb25tZW50YWwKLXByZXJlcXVpc2l0ZXMgaW5jbHVkZSBzZWN1cml0eSwgdHJhbnNhY3Rpb24gbW9uaXRvcmluZywgYW5kIEhUVFAgYXZhaWxhYmlsaXR5LgotVGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSByb2xlcyBhcmUgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLjwvcD4KLTxwPkZpZ3VyZQotMS4gU2VydmljZSByb2xlcyBhbmQgaW50ZXJhY3Rpb25zLjwvcD4KLTxwPiA8aW1nIHNyYz0iLi4vaW1hZ2VzL3JvbGVzLmdpZiIgYWx0PSJGaWd1cmUgMSBpbGx1c3RyYXRlcyB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIHNlcnZpY2UgYnJva2VyLCBzZXJ2aWNlIHByb3ZpZGVyLCBhbmQgc2VydmljZSByZXF1ZXN0b3IuIiAvPiA8L3A+Ci08cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBXZWIgc2VydmljZXMsCi1yZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3d3dy5pYm0uY29tL2RldmVsb3BlcndvcmtzL3dlYnNlcnZpY2VzIiB0YXJnZXQ9Il9ibGFuayI+d3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvd2Vic2VydmljZXM8L2E+PC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPHVsIGNsYXNzPSJ1bGxpbmtzIj4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzc3RhbmRhcmRzLmh0bWwiPldlYiBzZXJ2aWNlcyBzdGFuZGFyZHM8L2E+PC9zdHJvbmc+PGJyIC8+Ci1PbmUgb2YgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIEludGVybmV0IHN0YW5kYXJkcyBpcyB0aGF0IHRoZXkgZm9jdXMgb24gcHJvdG9jb2xzIGFuZCBub3Qgb24gaW1wbGVtZW50YXRpb25zLiBUaGUgSW50ZXJuZXQgaXMgY29tcG9zZWQgb2YgaGV0ZXJvZ2VuZW91cyB0ZWNobm9sb2dpZXMgdGhhdCBzdWNjZXNzZnVsbHkgaW50ZXJvcGVyYXRlIHRocm91Z2ggc2hhcmVkIHByb3RvY29scy4gVGhpcyBwcmV2ZW50cyBpbmRpdmlkdWFsIHZlbmRvcnMgZnJvbSBpbXBvc2luZyBhIHN0YW5kYXJkIG9uIHRoZSBJbnRlcm5ldC4gT3BlbiBTb3VyY2Ugc29mdHdhcmUgZGV2ZWxvcG1lbnQgcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gcHJlc2VydmluZyB0aGUgaW50ZXJvcGVyYWJpbGl0eSBvZiB2ZW5kb3IgaW1wbGVtZW50YXRpb25zIG9mIHN0YW5kYXJkcy48L2xpPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi9jb25jZXB0cy9jd3N0b3Bkb3duLmh0bWwiPkNyZWF0aW5nIHRvcC1kb3duIFdlYiBzZXJ2aWNlczwvYT48L3N0cm9uZz48YnIgLz4KLVdlYiBzZXJ2aWNlcyBjYW4gYmUgY3JlYXRlZCB1c2luZyB0d28gbWV0aG9kczogdG9wLWRvd24gZGV2ZWxvcG1lbnQgYW5kIGJvdHRvbS11cCBkZXZlbG9wbWVudC4gVG9wLWRvd24gV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGludm9sdmVzIGNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgZnJvbSBhIFdTREwgZmlsZS48L2xpPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi9jb25jZXB0cy9jd3NidG11cC5odG1sIj5DcmVhdGluZyBib3R0b20tdXAgV2ViIHNlcnZpY2VzPC9hPjwvc3Ryb25nPjxiciAvPgotV2ViIHNlcnZpY2VzIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHR3byBtZXRob2RzOiB0b3AtZG93biBkZXZlbG9wbWVudCBhbmQgYm90dG9tLXVwIGRldmVsb3BtZW50LiBCb3R0b20tdXAgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGludm9sdmVzIGNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgZnJvbSBhIEphdmEgYmVhbiBvciBlbnRlcnByaXNlIGJlYW4uPC9saT4KLTwvdWw+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJjd3NpbndzYS5odG1sIiB0aXRsZT0iIj5Ub29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJjd3NzdGFuZGFyZHMuaHRtbCIgdGl0bGU9Ik9uZSBvZiB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgSW50ZXJuZXQgc3RhbmRhcmRzIGlzIHRoYXQgdGhleSBmb2N1cyBvbiBwcm90b2NvbHMgYW5kIG5vdCBvbiBpbXBsZW1lbnRhdGlvbnMuIFRoZSBJbnRlcm5ldCBpcyBjb21wb3NlZCBvZiBoZXRlcm9nZW5lb3VzIHRlY2hub2xvZ2llcyB0aGF0IHN1Y2Nlc3NmdWxseSBpbnRlcm9wZXJhdGUgdGhyb3VnaCBzaGFyZWQgcHJvdG9jb2xzLiBUaGlzIHByZXZlbnRzIGluZGl2aWR1YWwgdmVuZG9ycyBmcm9tIGltcG9zaW5nIGEgc3RhbmRhcmQgb24gdGhlIEludGVybmV0LiBPcGVuIFNvdXJjZSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBwcmVzZXJ2aW5nIHRoZSBpbnRlcm9wZXJhYmlsaXR5IG9mIHZlbmRvciBpbXBsZW1lbnRhdGlvbnMgb2Ygc3RhbmRhcmRzLiI+V2ViIHNlcnZpY2VzIHN0YW5kYXJkczwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuaHRtbCIgdGl0bGU9IlVzZSBXZWIgc2VydmljZXMgdG9vbHMgdG8gZGlzY292ZXIsIGNyZWF0ZSwgYW5kIHB1Ymxpc2ggV2ViIHNlcnZpY2VzIHRoYXQgYXJlIGNyZWF0ZWQgZnJvbSBKYXZhIGJlYW5zLCBlbnRlcnByaXNlIGJlYW5zLCBhbmQgV1NETCBmaWxlcy4gWW91IGNhbiBjcmVhdGUgb2YgV2ViIHNlcnZpY2VzIHVzaW5nIGEgdG9wLWRvd24gYXBwcm9hY2ggKHdoaWNoIHN0YXJ0cyB3aXRoIGEgV1NETCBmaWxlKSBvciBhIGJvdHRvbS11cCBhcHByb2FjaCAod2hpY2ggc3RhcnRzIHdpdGggYSBKYXZhIGJlYW4gb3IgRUpCKS4iPiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2J0bXVwLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NidG11cC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMThmN2ZiLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2J0bXVwLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA1LCB2LjQwMDItLT4KLTwhRE9DVFlQRSBjb25jZXB0IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIENvbmNlcHQvL0VOIgotICJjb25jZXB0LmR0ZCI+Ci08Y29uY2VwdCBpZD0iY3JlYXRpbmdib3R0b20tdXB3ZWJzZXJ2aWNlcyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5DcmVhdGluZyBib3R0b20tdXAgV2ViIHNlcnZpY2VzPC90aXRsZT4KLTxzaG9ydGRlc2M+V2ViIHNlcnZpY2VzIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHR3byBtZXRob2RzOiB0b3AtZG93biBkZXZlbG9wbWVudAotYW5kIGJvdHRvbS11cCBkZXZlbG9wbWVudC4gQm90dG9tLXVwIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCBpbnZvbHZlcyBjcmVhdGluZwotYSBXZWIgc2VydmljZSBmcm9tIGEgPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBiZWFuIG9yIGVudGVycHJpc2UgYmVhbi48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+Ym90dG9tLXVwIFdlYiBzZXJ2aWNlczxpbmRleHRlcm0+b3ZlcnZpZXc8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5ib3R0b20tdXA8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPGNvbmJvZHk+Ci08cD5BbHRob3VnaCBib3R0b20tdXAgV2ViIHNlcnZpY2UgZGV2ZWxvcG1lbnQgbWF5IGJlIGZhc3RlciBhbmQgZWFzaWVyLCBlc3BlY2lhbGx5Ci1pZiB5b3UgYXJlIG5ldyB0byBXZWIgc2VydmljZXMsIHRoZSB0b3AtZG93biBhcHByb2FjaCBpcyB0aGUgcmVjb21tZW5kZWQgd2F5Ci1vZiBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlLjwvcD4KLTxwPldoZW4gY3JlYXRpbmcgYSBXZWIgc2VydmljZSB1c2luZyBhIGJvdHRvbS11cCBhcHByb2FjaCwgZmlyc3QgeW91IGNyZWF0ZQotYSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiIgdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gYmVhbgotb3IgRUpCIGJlYW4gYW5kIHRoZW4gdXNlIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkIHRvIGNyZWF0ZSB0aGUgV1NETCBmaWxlIGFuZAotV2ViIHNlcnZpY2UuPC9wPgotPC9jb25ib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iY3dzLmRpdGEiPjxsaW5rdGV4dD5XZWIgc2VydmljZXMgb3ZlcnZpZXc8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9ImN3c2lud3NhLmRpdGEiPjxsaW5rdGV4dD5Ub29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD4KLTwvbGluaz4KLTxsaW5rIGhyZWY9ImN3c3RvcGRvd24uZGl0YSIgc2NvcGU9ImxvY2FsIj48bGlua3RleHQ+Q3JlYXRpbmcgdG9wLWRvd24gV2ViCi1zZXJ2aWNlczwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSIuLi90YXNrcy90b3ZlcndzLmRpdGEiIHNjb3BlPSJsb2NhbCI+PGxpbmt0ZXh0PiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L2NvbmNlcHQ+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NidG11cC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzYnRtdXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWEzMzljNC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NidG11cC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9ImNvbmNlcHQiIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iQ3JlYXRpbmcgYm90dG9tLXVwIFdlYiBzZXJ2aWNlcyIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJXZWIgc2VydmljZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdHdvIG1ldGhvZHM6IHRvcC1kb3duIGRldmVsb3BtZW50IGFuZCBib3R0b20tdXAgZGV2ZWxvcG1lbnQuIEJvdHRvbS11cCBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaW52b2x2ZXMgY3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIG9yIGVudGVycHJpc2UgYmVhbi4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iV2ViIHNlcnZpY2VzIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHR3byBtZXRob2RzOiB0b3AtZG93biBkZXZlbG9wbWVudCBhbmQgYm90dG9tLXVwIGRldmVsb3BtZW50LiBCb3R0b20tdXAgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGludm9sdmVzIGNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgZnJvbSBhIEphdmEgYmVhbiBvciBlbnRlcnByaXNlIGJlYW4uIiAvPgotPG1ldGEgY29udGVudD0iYm90dG9tLXVwIFdlYiBzZXJ2aWNlcywgb3ZlcnZpZXcsIFdlYiBzZXJ2aWNlcywgYm90dG9tLXVwIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iYm90dG9tLXVwIFdlYiBzZXJ2aWNlcywgb3ZlcnZpZXcsIFdlYiBzZXJ2aWNlcywgYm90dG9tLXVwIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImN3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3N0b3Bkb3duLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3RvdmVyd3MuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJjcmVhdGluZ2JvdHRvbS11cHdlYnNlcnZpY2VzIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+Q3JlYXRpbmcgYm90dG9tLXVwIFdlYiBzZXJ2aWNlczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0iY3JlYXRpbmdib3R0b20tdXB3ZWJzZXJ2aWNlcyI+PGEgbmFtZT0iY3JlYXRpbmdib3R0b20tdXB3ZWJzZXJ2aWNlcyI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+Q3JlYXRpbmcgYm90dG9tLXVwIFdlYiBzZXJ2aWNlczwvaDE+Ci0KLQotCi08ZGl2PjxwPldlYiBzZXJ2aWNlcyBjYW4gYmUgY3JlYXRlZCB1c2luZyB0d28gbWV0aG9kczogdG9wLWRvd24gZGV2ZWxvcG1lbnQKLWFuZCBib3R0b20tdXAgZGV2ZWxvcG1lbnQuIEJvdHRvbS11cCBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaW52b2x2ZXMgY3JlYXRpbmcKLWEgV2ViIHNlcnZpY2UgZnJvbSBhIEphdmHihKIgYmVhbiBvciBlbnRlcnByaXNlIGJlYW4uPC9wPgotCi08cD5BbHRob3VnaCBib3R0b20tdXAgV2ViIHNlcnZpY2UgZGV2ZWxvcG1lbnQgbWF5IGJlIGZhc3RlciBhbmQgZWFzaWVyLCBlc3BlY2lhbGx5Ci1pZiB5b3UgYXJlIG5ldyB0byBXZWIgc2VydmljZXMsIHRoZSB0b3AtZG93biBhcHByb2FjaCBpcyB0aGUgcmVjb21tZW5kZWQgd2F5Ci1vZiBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlLjwvcD4KLQotPHA+V2hlbiBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlIHVzaW5nIGEgYm90dG9tLXVwIGFwcHJvYWNoLCBmaXJzdCB5b3UgY3JlYXRlCi1hIEphdmEgYmVhbgotb3IgRUpCIGJlYW4gYW5kIHRoZW4gdXNlIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkIHRvIGNyZWF0ZSB0aGUgV1NETCBmaWxlIGFuZAotV2ViIHNlcnZpY2UuPC9wPgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi9jb25jZXB0cy9jd3MuaHRtbCIgdGl0bGU9IkEgV2ViIHNlcnZpY2UgaXMgYSBzZXQgb2YgcmVsYXRlZCBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBpbnZva2VkIG92ZXIgdGhlIEludGVybmV0LiBCdXNpbmVzc2VzIGNhbiBkeW5hbWljYWxseSBtaXggYW5kIG1hdGNoIFdlYiBzZXJ2aWNlcyB0byBwZXJmb3JtIGNvbXBsZXggdHJhbnNhY3Rpb25zIHdpdGggbWluaW1hbCBwcm9ncmFtbWluZy4gV2ViIHNlcnZpY2VzIGFsbG93IGJ1eWVycyBhbmQgc2VsbGVycyBhbGwgb3ZlciB0aGUgd29ybGQgdG8gZGlzY292ZXIgZWFjaCBvdGhlciwgY29ubmVjdCBkeW5hbWljYWxseSwgYW5kIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIGluIHJlYWwgdGltZSB3aXRoIG1pbmltYWwgaHVtYW4gaW50ZXJhY3Rpb24uIj5XZWIgc2VydmljZXMgb3ZlcnZpZXc8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9ImN3cy5odG1sIiB0aXRsZT0iQSBXZWIgc2VydmljZSBpcyBhIHNldCBvZiByZWxhdGVkIGFwcGxpY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGludm9rZWQgb3ZlciB0aGUgSW50ZXJuZXQuIEJ1c2luZXNzZXMgY2FuIGR5bmFtaWNhbGx5IG1peCBhbmQgbWF0Y2ggV2ViIHNlcnZpY2VzIHRvIHBlcmZvcm0gY29tcGxleCB0cmFuc2FjdGlvbnMgd2l0aCBtaW5pbWFsIHByb2dyYW1taW5nLiBXZWIgc2VydmljZXMgYWxsb3cgYnV5ZXJzIGFuZCBzZWxsZXJzIGFsbCBvdmVyIHRoZSB3b3JsZCB0byBkaXNjb3ZlciBlYWNoIG90aGVyLCBjb25uZWN0IGR5bmFtaWNhbGx5LCBhbmQgZXhlY3V0ZSB0cmFuc2FjdGlvbnMgaW4gcmVhbCB0aW1lIHdpdGggbWluaW1hbCBodW1hbiBpbnRlcmFjdGlvbi4iPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iY3dzaW53c2EuaHRtbCIgdGl0bGU9IiI+VG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iY3dzdG9wZG93bi5odG1sIiB0aXRsZT0iV2ViIHNlcnZpY2VzIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHR3byBtZXRob2RzOiB0b3AtZG93biBkZXZlbG9wbWVudCBhbmQgYm90dG9tLXVwIGRldmVsb3BtZW50LiBUb3AtZG93biBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaW52b2x2ZXMgY3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgV1NETCBmaWxlLiI+Q3JlYXRpbmcgdG9wLWRvd24gV2ViCi1zZXJ2aWNlczwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuaHRtbCIgdGl0bGU9IlVzZSBXZWIgc2VydmljZXMgdG9vbHMgdG8gZGlzY292ZXIsIGNyZWF0ZSwgYW5kIHB1Ymxpc2ggV2ViIHNlcnZpY2VzIHRoYXQgYXJlIGNyZWF0ZWQgZnJvbSBKYXZhIGJlYW5zLCBlbnRlcnByaXNlIGJlYW5zLCBhbmQgV1NETCBmaWxlcy4gWW91IGNhbiBjcmVhdGUgb2YgV2ViIHNlcnZpY2VzIHVzaW5nIGEgdG9wLWRvd24gYXBwcm9hY2ggKHdoaWNoIHN0YXJ0cyB3aXRoIGEgV1NETCBmaWxlKSBvciBhIGJvdHRvbS11cCBhcHByb2FjaCAod2hpY2ggc3RhcnRzIHdpdGggYSBKYXZhIGJlYW4gb3IgRUpCKS4iPiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NkbC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2U5Y2EyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSBjb25jZXB0IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIENvbmNlcHQvL0VOIgotICJjb25jZXB0LmR0ZCI+Ci08Y29uY2VwdCBpZD0iY3dzZGwiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKTwvdGl0bGU+Ci08c2hvcnRkZXNjPldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkgaXMgYSBzdGFuZGFyZCBzcGVjaWZpY2F0aW9uCi1mb3IgZGVzY3JpYmluZyBuZXR3b3JrZWQsIFhNTC1iYXNlZCBzZXJ2aWNlcy4gSXQgcHJvdmlkZXMgYSBzaW1wbGUgd2F5IGZvcgotc2VydmljZSBwcm92aWRlcnMgdG8gZGVzY3JpYmUgdGhlIGJhc2ljIGZvcm1hdCBvZiByZXF1ZXN0cyB0byB0aGVpciBzeXN0ZW1zCi1yZWdhcmRsZXNzIG9mIHRoZSB1bmRlcmx5aW5nIHJ1bi10aW1lIGltcGxlbWVudGF0aW9uLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XU0RMIGZpbGVzPGluZGV4dGVybT5vdmVydmlldzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPldTREw8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTxjb25ib2R5PgotPHA+V1NETCBkZWZpbmVzIGFuIFhNTCBmb3JtYXQgZm9yIGRlc2NyaWJpbmcgbmV0d29yayBzZXJ2aWNlcyBhcyBhIHNldCBvZgotIDx2YXJuYW1lPmVuZHBvaW50czwvdmFybmFtZT4gdGhhdCBvcGVyYXRlIG9uIG1lc3NhZ2VzIHRoYXQgY29udGFpbiBlaXRoZXIKLWRvY3VtZW50LW9yaWVudGVkIG9yIHByb2NlZHVyZS1vcmllbnRlZCBpbmZvcm1hdGlvbi4gVGhlIG9wZXJhdGlvbnMgYW5kIG1lc3NhZ2VzCi1hcmUgZmlyc3QgZGVzY3JpYmVkIGFic3RyYWN0bHkgYW5kIHRoZW4gYm91bmQgdG8gYSBjb25jcmV0ZSBuZXR3b3JrIHByb3RvY29sCi1hbmQgbWVzc2FnZSBmb3JtYXQgaW4gb3JkZXIgdG8gZGVmaW5lIGFuIGVuZHBvaW50LiBSZWxhdGVkIGNvbmNyZXRlIGVuZHBvaW50cwotYXJlIGNvbWJpbmVkIGludG8gYWJzdHJhY3QgZW5kcG9pbnRzIChzZXJ2aWNlcykuIFdTREwgaXMgZXh0ZW5zaWJsZSB0byBhbGxvdwotZGVzY3JpcHRpb24gb2YgZW5kcG9pbnRzIGFuZCB0aGVpciBtZXNzYWdlcywgcmVnYXJkbGVzcyBvZiB3aGljaCBtZXNzYWdlIGZvcm1hdHMKLW9yIG5ldHdvcmsgcHJvdG9jb2xzIGFyZSB1c2VkIHRvIGNvbW11bmljYXRlLiBUaGlzIG1lYW5zIHRoYXQgaW50ZXJmYWNlcyBhcmUKLWRlZmluZWQgYWJzdHJhY3RseSB1c2luZyBYTUwgc2NoZW1hIGFuZCB0aGVuIGJvdW5kIHRvIGNvbmNyZXRlIHJlcHJlc2VudGF0aW9ucwotdGhhdCBhcmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBwcm90b2NvbC48L3A+Ci08cD5XU0RMIGFsbG93cyBhIHNlcnZpY2UgcHJvdmlkZXIgdG8gc3BlY2lmeSB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcmlzdGljcwotb2YgYSBXZWIgc2VydmljZTo8L3A+Ci08dWw+Ci08bGk+VGhlIG5hbWUgb2YgdGhlIFdlYiBzZXJ2aWNlIGFuZCBhZGRyZXNzaW5nIGluZm9ybWF0aW9uPC9saT4KLTxsaT5UaGUgcHJvdG9jb2wgYW5kIGVuY29kaW5nIHN0eWxlIHRvIGJlIHVzZWQgd2hlbiBhY2Nlc3NpbmcgdGhlIHB1YmxpYyBvcGVyYXRpb25zCi1vZiB0aGUgV2ViIHNlcnZpY2U8L2xpPgotPGxpPlRoZSB0eXBlIGluZm9ybWF0aW9uIHN1Y2ggYXMgb3BlcmF0aW9ucywgcGFyYW1ldGVycywgYW5kIGRhdGEgdHlwZXMgY29tcHJpc2luZwotdGhlIGludGVyZmFjZSBvZiB0aGUgV2ViIHNlcnZpY2U8L2xpPgotPC91bD4KLTxwPldTREwgZG9jdW1lbnRzIGFsbG93IGRldmVsb3BlcnMgdG8gZXhwb3NlIHRoZWlyIGFwcGxpY2F0aW9ucyBhcyBuZXR3b3JrLWFjY2Vzc2libGUKLXNlcnZpY2VzIG9uIHRoZSBJbnRlcm5ldC4gVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyCi1XU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlcgotYnVzaW5lc3MgcHJvY2Vzc2VzLjwvcD4KLTxwPlRoaXMgZGV2ZWxvcG1lbnQgcGxhdGZvcm0gc3VwcG9ydHMgYW5kIGVuY291cmFnZXMgdGhlIGRldmVsb3BtZW50IGFuZCB1c2UKLW9mIFdTLUkgY29tcGxpYW50IFdTREwuIEJ1c2luZXNzIHNlcnZpY2UgcHJvdmlkZXJzIGNhbiBkZXBsb3kgPHRtIHRtY2xhc3M9InNwZWNpYWwiCi10bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIiB0bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBiZWFucwotYW5kIGVudGVycHJpc2UgYmVhbnMgYXMgYSBXZWIgc2VydmljZSBhbmQgZ2VuZXJhdGUgYSBXU0RMIGRvY3VtZW50IHRoYXQgZGVzY3JpYmVzCi10aGUgc2VydmljZS4gVGhleSBjYW4gYWxzbyBnZW5lcmF0ZSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiIKLXRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IGFuZCBlbnRlcnByaXNlIGJlYW4gc2tlbGV0b25zIGZyb20KLWFuIGV4aXN0aW5nIFdTREwgZmlsZS4gQSBidXNpbmVzcyBzZXJ2aWNlIGNsaWVudCBjYW4gZ2VuZXJhdGUgYSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIKLXRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iIHRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IHByb3h5Ci1mcm9tIGEgV1NETCBkb2N1bWVudCwgdGhlcmVieSBwcm92aWRpbmcgYW4gZWFzeS10by11c2UgPHRtIHRtY2xhc3M9InNwZWNpYWwiCi10bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIiB0bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBpbnRlcmZhY2UKLXRvIHRoZSBXZWIgc2VydmljZS4gVGhlIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIgotdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gaW50ZXJmYWNlIGhpZGVzIHRoZSBuZXR3b3JrIGNvbW11bmljYXRpb25zCi1kZXRhaWxzIGZyb20gdGhlIGNsaWVudCBlbmFibGluZyB0aGUgYnVzaW5lc3Mgc2VydmljZSBwcm92aWRlciB0byBmb2N1cyBvbgotYnVzaW5lc3MgYW5kIHByb2Nlc3MgcG9ydGlvbnMgb2YgdGhlIGFwcGxpY2F0aW9uLjwvcD4KLTxwPkluIGFkZGl0aW9uIHRvIHByb3ZpZGluZyB0b29scyB0byBjcmVhdGUgV2ViIHNlcnZpY2VzLCB0aGUgd29ya2JlbmNoIHByb3ZpZGVzCi1hIFdTREwgZWRpdG9yIHRoYXQgYWxsb3dzIHlvdSB0byBjcmVhdGUgV1NETCBmaWxlcyB1c2luZyBhIGdyYXBoaWNhbCBpbnRlcmZhY2UsCi1hIFdTREwgdmFsaWRhdG9yIHRoYXQgZW5zdXJlcyB0aGF0IHlvdXIgV1NETCBmaWxlIGlzIHNlbWFudGljYWxseSBjb3JyZWN0Ci1hbmQgb3B0aW9uYWxseSBjaGVja3MgZm9yIFdTLUkgY29tcGxpYW5jZSwgYW5kIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgd2hpY2gKLWFsbG93cyB5b3UgdG8gZHluYW1pY2FsbHkgdGVzdCBXZWIgc2VydmljZXMgd2l0aG91dCByZXF1aXJpbmcgeW91IHRvIGdlbmVyYXRlCi1hIHByb3h5LjwvcD4KLTxwPlRoZSB3b3JrYmVuY2ggc3VwcG9ydHMgV1NETCAxLjEuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBXU0RMIHNwZWNpZmljYXRpb24sCi1yZWZlciB0byAgPHhyZWYgZm9ybWF0PSJodG1sIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi93c2RsIiBzY29wZT0iZXh0ZXJuYWwiPnd3dy53My5vcmcvVFIvd3NkbDwveHJlZj48L3A+Ci08L2NvbmJvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSJjd3MuZGl0YSI+PGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBvdmVydmlldzwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iY3dzaW53c2EuZGl0YSI+PGxpbmt0ZXh0PlRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PgotPC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSIuLi90YXNrcy90b3ZlcndzLmRpdGEiIHNjb3BlPSJwZWVyIj48bGlua3RleHQ+IERldmVsb3BpbmcgV2ViCi1zZXJ2aWNlczwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvY29uY2VwdD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NkbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjYyMWNhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9ImNvbmNlcHQiIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iV2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIGlzIGEgc3RhbmRhcmQgc3BlY2lmaWNhdGlvbiBmb3IgZGVzY3JpYmluZyBuZXR3b3JrZWQsIFhNTC1iYXNlZCBzZXJ2aWNlcy4gSXQgcHJvdmlkZXMgYSBzaW1wbGUgd2F5IGZvciBzZXJ2aWNlIHByb3ZpZGVycyB0byBkZXNjcmliZSB0aGUgYmFzaWMgZm9ybWF0IG9mIHJlcXVlc3RzIHRvIHRoZWlyIHN5c3RlbXMgcmVnYXJkbGVzcyBvZiB0aGUgdW5kZXJseWluZyBydW4tdGltZSBpbXBsZW1lbnRhdGlvbi4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iV2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSBpcyBhIHN0YW5kYXJkIHNwZWNpZmljYXRpb24gZm9yIGRlc2NyaWJpbmcgbmV0d29ya2VkLCBYTUwtYmFzZWQgc2VydmljZXMuIEl0IHByb3ZpZGVzIGEgc2ltcGxlIHdheSBmb3Igc2VydmljZSBwcm92aWRlcnMgdG8gZGVzY3JpYmUgdGhlIGJhc2ljIGZvcm1hdCBvZiByZXF1ZXN0cyB0byB0aGVpciBzeXN0ZW1zIHJlZ2FyZGxlc3Mgb2YgdGhlIHVuZGVybHlpbmcgcnVuLXRpbWUgaW1wbGVtZW50YXRpb24uIiAvPgotPG1ldGEgY29udGVudD0iV1NETCBmaWxlcywgb3ZlcnZpZXcsIFdlYiBzZXJ2aWNlcywgV1NETCIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldTREwgZmlsZXMsIG92ZXJ2aWV3LCBXZWIgc2VydmljZXMsIFdTREwiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3NzdGFuZGFyZHMuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vcmVmL3J3c2RsLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImN3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90b3ZlcndzLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0iY3dzZGwiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5XZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJjd3NkbCI+PGEgbmFtZT0iY3dzZGwiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCk8L2gxPgotCi0KLQotPGRpdj48cD5XZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIGlzIGEgc3RhbmRhcmQgc3BlY2lmaWNhdGlvbgotZm9yIGRlc2NyaWJpbmcgbmV0d29ya2VkLCBYTUwtYmFzZWQgc2VydmljZXMuIEl0IHByb3ZpZGVzIGEgc2ltcGxlIHdheSBmb3IKLXNlcnZpY2UgcHJvdmlkZXJzIHRvIGRlc2NyaWJlIHRoZSBiYXNpYyBmb3JtYXQgb2YgcmVxdWVzdHMgdG8gdGhlaXIgc3lzdGVtcwotcmVnYXJkbGVzcyBvZiB0aGUgdW5kZXJseWluZyBydW4tdGltZSBpbXBsZW1lbnRhdGlvbi48L3A+Ci0KLTxwPldTREwgZGVmaW5lcyBhbiBYTUwgZm9ybWF0IGZvciBkZXNjcmliaW5nIG5ldHdvcmsgc2VydmljZXMgYXMgYSBzZXQgb2YKLSA8dmFyIGNsYXNzPSJ2YXJuYW1lIj5lbmRwb2ludHM8L3Zhcj4gdGhhdCBvcGVyYXRlIG9uIG1lc3NhZ2VzIHRoYXQgY29udGFpbiBlaXRoZXIKLWRvY3VtZW50LW9yaWVudGVkIG9yIHByb2NlZHVyZS1vcmllbnRlZCBpbmZvcm1hdGlvbi4gVGhlIG9wZXJhdGlvbnMgYW5kIG1lc3NhZ2VzCi1hcmUgZmlyc3QgZGVzY3JpYmVkIGFic3RyYWN0bHkgYW5kIHRoZW4gYm91bmQgdG8gYSBjb25jcmV0ZSBuZXR3b3JrIHByb3RvY29sCi1hbmQgbWVzc2FnZSBmb3JtYXQgaW4gb3JkZXIgdG8gZGVmaW5lIGFuIGVuZHBvaW50LiBSZWxhdGVkIGNvbmNyZXRlIGVuZHBvaW50cwotYXJlIGNvbWJpbmVkIGludG8gYWJzdHJhY3QgZW5kcG9pbnRzIChzZXJ2aWNlcykuIFdTREwgaXMgZXh0ZW5zaWJsZSB0byBhbGxvdwotZGVzY3JpcHRpb24gb2YgZW5kcG9pbnRzIGFuZCB0aGVpciBtZXNzYWdlcywgcmVnYXJkbGVzcyBvZiB3aGljaCBtZXNzYWdlIGZvcm1hdHMKLW9yIG5ldHdvcmsgcHJvdG9jb2xzIGFyZSB1c2VkIHRvIGNvbW11bmljYXRlLiBUaGlzIG1lYW5zIHRoYXQgaW50ZXJmYWNlcyBhcmUKLWRlZmluZWQgYWJzdHJhY3RseSB1c2luZyBYTUwgc2NoZW1hIGFuZCB0aGVuIGJvdW5kIHRvIGNvbmNyZXRlIHJlcHJlc2VudGF0aW9ucwotdGhhdCBhcmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBwcm90b2NvbC48L3A+Ci0KLTxwPldTREwgYWxsb3dzIGEgc2VydmljZSBwcm92aWRlciB0byBzcGVjaWZ5IHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyaXN0aWNzCi1vZiBhIFdlYiBzZXJ2aWNlOjwvcD4KLQotPHVsPgotPGxpPlRoZSBuYW1lIG9mIHRoZSBXZWIgc2VydmljZSBhbmQgYWRkcmVzc2luZyBpbmZvcm1hdGlvbjwvbGk+Ci0KLTxsaT5UaGUgcHJvdG9jb2wgYW5kIGVuY29kaW5nIHN0eWxlIHRvIGJlIHVzZWQgd2hlbiBhY2Nlc3NpbmcgdGhlIHB1YmxpYyBvcGVyYXRpb25zCi1vZiB0aGUgV2ViIHNlcnZpY2U8L2xpPgotCi08bGk+VGhlIHR5cGUgaW5mb3JtYXRpb24gc3VjaCBhcyBvcGVyYXRpb25zLCBwYXJhbWV0ZXJzLCBhbmQgZGF0YSB0eXBlcyBjb21wcmlzaW5nCi10aGUgaW50ZXJmYWNlIG9mIHRoZSBXZWIgc2VydmljZTwvbGk+Ci0KLTwvdWw+Ci0KLTxwPldTREwgZG9jdW1lbnRzIGFsbG93IGRldmVsb3BlcnMgdG8gZXhwb3NlIHRoZWlyIGFwcGxpY2F0aW9ucyBhcyBuZXR3b3JrLWFjY2Vzc2libGUKLXNlcnZpY2VzIG9uIHRoZSBJbnRlcm5ldC4gVGhyb3VnaCBVRERJIGFuZCBXU0lMLCBvdGhlciBhcHBsaWNhdGlvbnMgY2FuIGRpc2NvdmVyCi1XU0RMIGRvY3VtZW50cyBhbmQgYmluZCB3aXRoIHRoZW0gdG8gZXhlY3V0ZSB0cmFuc2FjdGlvbnMgb3IgcGVyZm9ybSBvdGhlcgotYnVzaW5lc3MgcHJvY2Vzc2VzLjwvcD4KLQotPHA+VGhpcyBkZXZlbG9wbWVudCBwbGF0Zm9ybSBzdXBwb3J0cyBhbmQgZW5jb3VyYWdlcyB0aGUgZGV2ZWxvcG1lbnQgYW5kIHVzZQotb2YgV1MtSSBjb21wbGlhbnQgV1NETC4gQnVzaW5lc3Mgc2VydmljZSBwcm92aWRlcnMgY2FuIGRlcGxveSBKYXZh4oSiIGJlYW5zCi1hbmQgZW50ZXJwcmlzZSBiZWFucyBhcyBhIFdlYiBzZXJ2aWNlIGFuZCBnZW5lcmF0ZSBhIFdTREwgZG9jdW1lbnQgdGhhdCBkZXNjcmliZXMKLXRoZSBzZXJ2aWNlLiBUaGV5IGNhbiBhbHNvIGdlbmVyYXRlIEphdmEgYW5kIGVudGVycHJpc2UgYmVhbiBza2VsZXRvbnMgZnJvbQotYW4gZXhpc3RpbmcgV1NETCBmaWxlLiBBIGJ1c2luZXNzIHNlcnZpY2UgY2xpZW50IGNhbiBnZW5lcmF0ZSBhIEphdmEgcHJveHkKLWZyb20gYSBXU0RMIGRvY3VtZW50LCB0aGVyZWJ5IHByb3ZpZGluZyBhbiBlYXN5LXRvLXVzZSBKYXZhIGludGVyZmFjZQotdG8gdGhlIFdlYiBzZXJ2aWNlLiBUaGUgSmF2YSBpbnRlcmZhY2UgaGlkZXMgdGhlIG5ldHdvcmsgY29tbXVuaWNhdGlvbnMKLWRldGFpbHMgZnJvbSB0aGUgY2xpZW50IGVuYWJsaW5nIHRoZSBidXNpbmVzcyBzZXJ2aWNlIHByb3ZpZGVyIHRvIGZvY3VzIG9uCi1idXNpbmVzcyBhbmQgcHJvY2VzcyBwb3J0aW9ucyBvZiB0aGUgYXBwbGljYXRpb24uPC9wPgotCi08cD5JbiBhZGRpdGlvbiB0byBwcm92aWRpbmcgdG9vbHMgdG8gY3JlYXRlIFdlYiBzZXJ2aWNlcywgdGhlIHdvcmtiZW5jaCBwcm92aWRlcwotYSBXU0RMIGVkaXRvciB0aGF0IGFsbG93cyB5b3UgdG8gY3JlYXRlIFdTREwgZmlsZXMgdXNpbmcgYSBncmFwaGljYWwgaW50ZXJmYWNlLAotYSBXU0RMIHZhbGlkYXRvciB0aGF0IGVuc3VyZXMgdGhhdCB5b3VyIFdTREwgZmlsZSBpcyBzZW1hbnRpY2FsbHkgY29ycmVjdAotYW5kIG9wdGlvbmFsbHkgY2hlY2tzIGZvciBXUy1JIGNvbXBsaWFuY2UsIGFuZCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHdoaWNoCi1hbGxvd3MgeW91IHRvIGR5bmFtaWNhbGx5IHRlc3QgV2ViIHNlcnZpY2VzIHdpdGhvdXQgcmVxdWlyaW5nIHlvdSB0byBnZW5lcmF0ZQotYSBwcm94eS48L3A+Ci0KLTxwPlRoZSB3b3JrYmVuY2ggc3VwcG9ydHMgV1NETCAxLjEuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBXU0RMIHNwZWNpZmljYXRpb24sCi1yZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvd3NkbCIgdGFyZ2V0PSJfYmxhbmsiPnd3dy53My5vcmcvVFIvd3NkbDwvYT48L3A+Ci0KLTwvZGl2PgotCi08ZGl2PgotPHVsIGNsYXNzPSJ1bGxpbmtzIj4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vcmVmL3J3c2RsLmh0bWwiPldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkgcmVmZXJlbmNlPC9hPjwvc3Ryb25nPjxiciAvPgotQSBXU0RMIGRvY3VtZW50IGRlZmluZXMgc2VydmljZXMgYXMgY29sbGVjdGlvbnMgb2YgbmV0d29yayBlbmRwb2ludHMsIG9yIHBvcnRzLiBJbiBXU0RMLCB0aGUgYWJzdHJhY3QgZGVmaW5pdGlvbiBvZiBlbmRwb2ludHMgYW5kIG1lc3NhZ2VzIGlzIHNlcGFyYXRlZCBmcm9tIHRoZWlyIGNvbmNyZXRlIG5ldHdvcmsgZGVwbG95bWVudCBvciBkYXRhIGZvcm1hdCBiaW5kaW5ncy4gVGhpcyBhbGxvd3MgdGhlIHJldXNlIG9mIGFic3RyYWN0IGRlZmluaXRpb25zOiBtZXNzYWdlcywgd2hpY2ggYXJlIGFic3RyYWN0IGRlc2NyaXB0aW9ucyBvZiB0aGUgZGF0YSBiZWluZyBleGNoYW5nZWQsIGFuZCBwb3J0IHR5cGVzIHdoaWNoIGFyZSBhYnN0cmFjdCBjb2xsZWN0aW9ucyBvZiBvcGVyYXRpb25zLjwvbGk+Ci08L3VsPgotCi08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzc3RhbmRhcmRzLmh0bWwiIHRpdGxlPSJPbmUgb2YgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIEludGVybmV0IHN0YW5kYXJkcyBpcyB0aGF0IHRoZXkgZm9jdXMgb24gcHJvdG9jb2xzIGFuZCBub3Qgb24gaW1wbGVtZW50YXRpb25zLiBUaGUgSW50ZXJuZXQgaXMgY29tcG9zZWQgb2YgaGV0ZXJvZ2VuZW91cyB0ZWNobm9sb2dpZXMgdGhhdCBzdWNjZXNzZnVsbHkgaW50ZXJvcGVyYXRlIHRocm91Z2ggc2hhcmVkIHByb3RvY29scy4gVGhpcyBwcmV2ZW50cyBpbmRpdmlkdWFsIHZlbmRvcnMgZnJvbSBpbXBvc2luZyBhIHN0YW5kYXJkIG9uIHRoZSBJbnRlcm5ldC4gT3BlbiBTb3VyY2Ugc29mdHdhcmUgZGV2ZWxvcG1lbnQgcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gcHJlc2VydmluZyB0aGUgaW50ZXJvcGVyYWJpbGl0eSBvZiB2ZW5kb3IgaW1wbGVtZW50YXRpb25zIG9mIHN0YW5kYXJkcy4iPldlYiBzZXJ2aWNlcyBzdGFuZGFyZHM8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9ImN3cy5odG1sIiB0aXRsZT0iQSBXZWIgc2VydmljZSBpcyBhIHNldCBvZiByZWxhdGVkIGFwcGxpY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGludm9rZWQgb3ZlciB0aGUgSW50ZXJuZXQuIEJ1c2luZXNzZXMgY2FuIGR5bmFtaWNhbGx5IG1peCBhbmQgbWF0Y2ggV2ViIHNlcnZpY2VzIHRvIHBlcmZvcm0gY29tcGxleCB0cmFuc2FjdGlvbnMgd2l0aCBtaW5pbWFsIHByb2dyYW1taW5nLiBXZWIgc2VydmljZXMgYWxsb3cgYnV5ZXJzIGFuZCBzZWxsZXJzIGFsbCBvdmVyIHRoZSB3b3JsZCB0byBkaXNjb3ZlciBlYWNoIG90aGVyLCBjb25uZWN0IGR5bmFtaWNhbGx5LCBhbmQgZXhlY3V0ZSB0cmFuc2FjdGlvbnMgaW4gcmVhbCB0aW1lIHdpdGggbWluaW1hbCBodW1hbiBpbnRlcmFjdGlvbi4iPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iY3dzaW53c2EuaHRtbCIgdGl0bGU9IiI+VG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudDwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuaHRtbCI+IERldmVsb3BpbmcgV2ViCi1zZXJ2aWNlczwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaWwuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lsLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4ZjJhYmUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaWwuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIGNvbmNlcHQgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgQ29uY2VwdC8vRU4iCi0gImNvbmNlcHQuZHRkIj4KLTxjb25jZXB0IGlkPSJjd3NpbCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5XZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCk8L3RpdGxlPgotPHNob3J0ZGVzYz5XZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCkgaXMgYSBzZXJ2aWNlIGRpc2NvdmVyeQotbWVjaGFuaXNtIHRoYXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gVURESSBhcyB3ZWxsIGFzIGNvbXBsZW1lbnRhcnkgdG8gVURESS4KLVdoZW4geW91IGRpc2NvdmVyIFdlYiBzZXJ2aWNlcyB3aXRoIFVEREksIHlvdSBnbyB0byBhIGNlbnRyYWxpemVkIHJlZ2lzdHJ5LiZuYnNwOwotV1NJTCBpcyBhbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCB0byBXZWIgc2VydmljZSBkaXNjb3ZlcnkuJm5ic3A7IFdTSUwgYWxsb3dzCi15b3UgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNlcnZpY2UgcHJvdmlkZXIgYW5kIGFzayBmb3IgdGhlIHNlcnZpY2VzIGl0IHByb3ZpZGVzLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XU0lMIGZpbGVzPGluZGV4dGVybT5vdmVydmlldzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPldTSUw8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTxjb25ib2R5PgotPHA+PHRtIHRtY2xhc3M9ImlibSIgdG1vd25lcj0iSUJNIENvcnBvcmF0aW9uIiB0bXR5cGU9InJlZyIgdHJhZGVtYXJrPSJJQk0iPklCTTwvdG0+IGFuZAotTWljcm9zb2Z0J3MgcHJvcG9zYWwgZm9yIHRoZSBXU0lMIHNwZWNpZmljYXRpb24gaXMgZGVzaWduZWQgYXJvdW5kIGFuIFhNTC1iYXNlZAotbW9kZWwgZm9yIGJ1aWxkaW5nIGFuIGFnZ3JlZ2F0aW9uIG9mIHJlZmVyZW5jZXMgdG8gZXhpc3RpbmcgV2ViIHNlcnZpY2UgZGVzY3JpcHRpb25zLAotdGhhdCBhcmUgZXhwb3NlZCB1c2luZyBzdGFuZGFyZCBXZWIgc2VydmVyIHRlY2hub2xvZ3kuPC9wPgotPHA+V1NJTCBwcm92aWRlcyBhIGRpc3RyaWJ1dGVkIHNlcnZpY2UgZGlzY292ZXJ5IG1ldGhvZCB0aGF0IHN1cHBsaWVzIHJlZmVyZW5jZXMKLXRvIHNlcnZpY2UgZGVzY3JpcHRpb25zIGF0IHRoZSBzZXJ2aWNlIHByb3ZpZGVyJ3MgcG9pbnQtb2Ytb2ZmZXJpbmcsIGJ5IHNwZWNpZnlpbmcKLWhvdyB0byBpbnNwZWN0IGEgV2ViIHNpdGUgZm9yIGF2YWlsYWJsZSBXZWIgc2VydmljZXMuIFRoZSBXU0lMIHNwZWNpZmljYXRpb24KLWRlZmluZXMgdGhlIGxvY2F0aW9ucyBvbiBhIFdlYiBzaXRlIHdoZXJlIHlvdSBjYW4gbG9vayBmb3IgV2ViIHNlcnZpY2UgZGVzY3JpcHRpb25zLjwvcD4KLTxwPlNpbmNlIFdTSUwgZm9jdXNlcyBvbiBkaXN0cmlidXRlZCBzZXJ2aWNlIGRpc2NvdmVyeSwgdGhlIFdTSUwgc3BlY2lmaWNhdGlvbgotY29tcGxlbWVudHMgVURESSBieSBmYWNpbGl0YXRpbmcgdGhlIGRpc2NvdmVyeSBvZiBzZXJ2aWNlcyB0aGF0IGFyZSBhdmFpbGFibGUKLW9uIFdlYiBzaXRlcyB0aGF0IG1heSBub3QgYmUgbGlzdGVkIHlldCBpbiBhIFVEREkgcmVnaXN0cnkuIEEgc2VwYXJhdGUgdG9waWMKLWluIHRoaXMgZG9jdW1lbnRhdGlvbiBkaXNjdXNzZXMgdGhlICA8eHJlZiBocmVmPSJjd3NpbHVkLmRpdGEiPlJlbGF0aW9uc2hpcAotYmV0d2VlbiBVRERJIGFuZCBXU0lMPC94cmVmPi48L3A+Ci08cD5UaGUgV1NJTCBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGRlZmluZSBhIHNlcnZpY2UgZGVzY3JpcHRpb24gbGFuZ3VhZ2UuJm5ic3A7Ci1XU0lMIGRvY3VtZW50cyBwcm92aWRlIGEgbWV0aG9kIGZvciBhZ2dyZWdhdGluZyBkaWZmZXJlbnQgdHlwZXMgb2Ygc2VydmljZQotZGVzY3JpcHRpb25zLiZuYnNwOyBXaXRoaW4gYSBXU0lMIGRvY3VtZW50LCBhIHNpbmdsZSBzZXJ2aWNlIGNhbiBoYXZlIG1vcmUKLXRoYW4gb25lIHJlZmVyZW5jZSB0byBhIHNlcnZpY2UgZGVzY3JpcHRpb24uJm5ic3A7IEZvciBleGFtcGxlLCBhIHNpbmdsZSBXZWIKLXNlcnZpY2UgbWlnaHQgYmUgcmVmZXJlbmNlZCB0d2ljZSBpbiBhIFdTSUwgZG9jdW1lbnQ6IG9uY2UgZGlyZWN0bHkgdmlhIGl0cwotV1NETCwgYW5kIGFnYWluIHZpYSBpdHMgYnVzaW5lc3NTZXJ2aWNlIGVudHJ5IGluIGEgVURESSByZWdpc3RyeS4gUmVmZXJlbmNlcwotdG8gdGhlc2UgdHdvIHNlcnZpY2UgZGVzY3JpcHRpb25zIHNob3VsZCBiZSBwdXQgaW50byBhIFdTSUwgZG9jdW1lbnQuJm5ic3A7Ci1JZiBtdWx0aXBsZSByZWZlcmVuY2VzIGFyZSBhdmFpbGFibGUsIGl0IGlzIGJlbmVmaWNpYWwgdG8gcHV0IGFsbCBvZiB0aGVtCi1pbiB0aGUgV1NJTCBkb2N1bWVudCBzbyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB0aGF0IHVzZXMgdGhlIGRvY3VtZW50IGNhbiBzZWxlY3QKLXRoZSB0eXBlIG9mIHNlcnZpY2UgZGVzY3JpcHRpb24gdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggYW5kIHByZWZlcnJlZCBieSB0aGF0Ci1hcHBsaWNhdGlvbi48L3A+Ci08cD5UaGUgV1NJTCBzcGVjaWZpY2F0aW9uIHNlcnZlcyB0d28gcHJpbWFyeSBmdW5jdGlvbnM6PC9wPgotPHVsPgotPGxpPldTSUwgZGVmaW5lcyBhbiBYTUwgZm9ybWF0IGZvciBsaXN0aW5nIHJlZmVyZW5jZXMgdG8gZXhpc3Rpbmcgc2VydmljZQotZGVzY3JpcHRpb25zLiBUaGVzZSBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBjYW4gYmUgZGVmaW5lZCBpbiBhbnkgZm9ybWF0LCBzdWNoCi1hcyBXU0RMLCBVRERJLCBvciBwbGFpbiBIVE1MLiZuYnNwOyBBIFdTSUwgZG9jdW1lbnQgaXMgZ2VuZXJhbGx5IG1hZGUgYXZhaWxhYmxlCi1hdCB0aGUgcG9pbnQtb2Ytb2ZmZXJpbmcgZm9yIHRoZSBzZXJ2aWNlcyB0aGF0IGFyZSByZWZlcmVuY2VkIHdpdGhpbiB0aGUgZG9jdW1lbnQuCi1BIFdTSUwgZG9jdW1lbnQgY2FuIGNvbnRhaW4gYSBsaXN0IG9mIHJlZmVyZW5jZXMgdG8gc2VydmljZSBkZXNjcmlwdGlvbnMsCi1hcyB3ZWxsIGFzIHJlZmVyZW5jZXMgdG8gb3RoZXIgV1NJTCBkb2N1bWVudHMuICA8cD5UaGUgYWJpbGl0eSB0byBsaW5rIGEgV1NJTAotZG9jdW1lbnQgdG8gb25lIG9yIG1vcmUgZGlmZmVyZW50IFdTSUwgZG9jdW1lbnRzIGFsbG93cyB5b3UgdG8gbWFuYWdlIHNlcnZpY2UKLWRlc2NyaXB0aW9uIHJlZmVyZW5jZXMgYnkgZ3JvdXBpbmcgdGhlbSBpbnRvIGRpZmZlcmVudCBkb2N1bWVudHMgYW5kIHRvIGJ1aWxkCi1hIGhpZXJhcmNoeSBvZiBXU0lMIGRvY3VtZW50cy4mbmJzcDsgRm9yIGV4YW1wbGUsIHNlcGFyYXRlIFdTSUwgZG9jdW1lbnRzCi1jYW4gYmUgY3JlYXRlZCBmb3IgZGlmZmVyZW50IGNhdGVnb3JpZXMgb2Ygc2VydmljZXMsIGFuZCBvbmUgcHJpbWFyeSBXU0lMCi1kb2N1bWVudCBjYW4gbGluayBhbGwgb2YgdGhlbSB0b2dldGhlci48L3A+PC9saT4KLTxsaT5XU0lMIGRlZmluZXMgYSBzZXQgb2YgY29udmVudGlvbnMgc28gdGhhdCBpdCBpcyBlYXN5IHRvIGxvY2F0ZSBvdGhlciBXU0lMCi1kb2N1bWVudHMuIFRoZSBXU0lMIHNwZWNpZmljYXRpb24gZG9lcyBub3QgbGltaXQgdGhlIHR5cGUgb2Ygc2VydmljZSBkZXNjcmlwdGlvbnMKLXRoYXQgY2FuIGJlIHJlZmVyZW5jZWQuJm5ic3A7IFRoZSBXU0lMIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIHNldCBvZiBzdGFuZGFyZAotZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyBmb3IgYm90aCBXU0RMIGFuZCBVRERJLiZuYnNwOyBUaGUgV1NJTCBzcGVjaWZpY2F0aW9uCi1pcyB0aGUgZGVmaW5pdGlvbiBvZiBsb2NhdGlvbnMgd2hlcmUgeW91IGNhbiBhY2Nlc3MgV1NJTCBkb2N1bWVudHMuPC9saT4KLTxsaT4gVHdvIGNvbnZlbnRpb25zIG1ha2UgdGhlIGxvY2F0aW9uIGFuZCByZXRyaWV2YWwgb2YgV1NJTCBkb2N1bWVudHMgZWFzeTogPHVsPgotPGxpPiA8dWljb250cm9sPkZpeGVkLW5hbWUgV1NJTCBkb2N1bWVudHMuPC91aWNvbnRyb2w+IFRoZSBmaXhlZCBuYW1lIGZvcgotV1NJTCBkb2N1bWVudHMgaXMgaW5zcGVjdGlvbi53c2lsLiZuYnNwOyBUaGUgaW5zcGVjdGlvbi53c2lsIGZpbGUgaXMgcGxhY2VkCi1hdCBjb21tb24gZW50cnkgcG9pbnRzIGZvciBhIFdlYiBzaXRlLiZuYnNwOyBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvbW1vbiBlbnRyeQotcG9pbnQgaXMgaHR0cDovL2VudHJ5cG9pbnQuY29tIHRoZW4gdGhlIGxvY2F0aW9uIG9mIHRoZSBXU0lMIGRvY3VtZW50IHdvdWxkCi1iZSBodHRwOi8vZW50cnlwb2ludC5jb20vaW5zcGVjdGlvbi53c2lsPC9saT4KLTxsaT4gPHVpY29udHJvbD5MaW5rZWQgV1NJTCBkb2N1bWVudHMuPC91aWNvbnRyb2w+IFJlZmVyZW5jZXMgdG8gV1NJTCBkb2N1bWVudHMKLWNhbiBhbHNvIGFwcGVhciB3aXRoaW4gZGlmZmVyZW50IGNvbnRlbnQgZG9jdW1lbnRzLCBzdWNoIGFzIEhUTUwgcGFnZXMuPC9saT4KLTwvdWw+IDwvbGk+Ci08L3VsPgotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFdlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIHNwZWNpZmljYXRpb24sCi1yZWZlciB0byAgPHhyZWYgaHJlZj0iaHR0cDovL3d3dy0xMDYuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWwiCi1zY29wZT0iZXh0ZXJuYWwiPiB3d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWw8L3hyZWY+PC9wPgotPC9jb25ib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iY3dzLmRpdGEiPjxsaW5rdGV4dD5XZWIgc2VydmljZXMgb3ZlcnZpZXc8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9ImN3c2lud3NhLmRpdGEiPjxsaW5rdGV4dD5Ub29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9saW5rdGV4dD4KLTwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vdGFza3MvdG92ZXJ3cy5kaXRhIiBzY29wZT0icGVlciI+PGxpbmt0ZXh0PiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L2NvbmNlcHQ+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJjYTAzOS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJjb25jZXB0IiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IldlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJXZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCkgaXMgYSBzZXJ2aWNlIGRpc2NvdmVyeSBtZWNoYW5pc20gdGhhdCBpcyBhbiBhbHRlcm5hdGl2ZSB0byBVRERJIGFzIHdlbGwgYXMgY29tcGxlbWVudGFyeSB0byBVRERJLiBXaGVuIHlvdSBkaXNjb3ZlciBXZWIgc2VydmljZXMgd2l0aCBVRERJLCB5b3UgZ28gdG8gYSBjZW50cmFsaXplZCByZWdpc3RyeS7CoCBXU0lMIGlzIGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIFdlYiBzZXJ2aWNlIGRpc2NvdmVyeS7CoCBXU0lMIGFsbG93cyB5b3UgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNlcnZpY2UgcHJvdmlkZXIgYW5kIGFzayBmb3IgdGhlIHNlcnZpY2VzIGl0IHByb3ZpZGVzLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJXZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCkgaXMgYSBzZXJ2aWNlIGRpc2NvdmVyeSBtZWNoYW5pc20gdGhhdCBpcyBhbiBhbHRlcm5hdGl2ZSB0byBVRERJIGFzIHdlbGwgYXMgY29tcGxlbWVudGFyeSB0byBVRERJLiBXaGVuIHlvdSBkaXNjb3ZlciBXZWIgc2VydmljZXMgd2l0aCBVRERJLCB5b3UgZ28gdG8gYSBjZW50cmFsaXplZCByZWdpc3RyeS7CoCBXU0lMIGlzIGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIFdlYiBzZXJ2aWNlIGRpc2NvdmVyeS7CoCBXU0lMIGFsbG93cyB5b3UgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNlcnZpY2UgcHJvdmlkZXIgYW5kIGFzayBmb3IgdGhlIHNlcnZpY2VzIGl0IHByb3ZpZGVzLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldTSUwgZmlsZXMsIG92ZXJ2aWV3LCBXZWIgc2VydmljZXMsIFdTSUwiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXU0lMIGZpbGVzLCBvdmVydmlldywgV2ViIHNlcnZpY2VzLCBXU0lMIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzc3RhbmRhcmRzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3c2lsdWQuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImN3c2lud3NhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3RvdmVyd3MuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJjd3NpbCIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPldlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKTwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0iY3dzaWwiPjxhIG5hbWU9ImN3c2lsIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5XZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCk8L2gxPgotCi0KLQotPGRpdj48cD5XZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCkgaXMgYSBzZXJ2aWNlIGRpc2NvdmVyeQotbWVjaGFuaXNtIHRoYXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gVURESSBhcyB3ZWxsIGFzIGNvbXBsZW1lbnRhcnkgdG8gVURESS4KLVdoZW4geW91IGRpc2NvdmVyIFdlYiBzZXJ2aWNlcyB3aXRoIFVEREksIHlvdSBnbyB0byBhIGNlbnRyYWxpemVkIHJlZ2lzdHJ5LsKgCi1XU0lMIGlzIGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIFdlYiBzZXJ2aWNlIGRpc2NvdmVyeS7CoCBXU0lMIGFsbG93cwoteW91IHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzZXJ2aWNlIHByb3ZpZGVyIGFuZCBhc2sgZm9yIHRoZSBzZXJ2aWNlcyBpdCBwcm92aWRlcy48L3A+Ci0KLTxwPklCTTxzdXA+wq48L3N1cD4gYW5kCi1NaWNyb3NvZnQncyBwcm9wb3NhbCBmb3IgdGhlIFdTSUwgc3BlY2lmaWNhdGlvbiBpcyBkZXNpZ25lZCBhcm91bmQgYW4gWE1MLWJhc2VkCi1tb2RlbCBmb3IgYnVpbGRpbmcgYW4gYWdncmVnYXRpb24gb2YgcmVmZXJlbmNlcyB0byBleGlzdGluZyBXZWIgc2VydmljZSBkZXNjcmlwdGlvbnMsCi10aGF0IGFyZSBleHBvc2VkIHVzaW5nIHN0YW5kYXJkIFdlYiBzZXJ2ZXIgdGVjaG5vbG9neS48L3A+Ci0KLTxwPldTSUwgcHJvdmlkZXMgYSBkaXN0cmlidXRlZCBzZXJ2aWNlIGRpc2NvdmVyeSBtZXRob2QgdGhhdCBzdXBwbGllcyByZWZlcmVuY2VzCi10byBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBhdCB0aGUgc2VydmljZSBwcm92aWRlcidzIHBvaW50LW9mLW9mZmVyaW5nLCBieSBzcGVjaWZ5aW5nCi1ob3cgdG8gaW5zcGVjdCBhIFdlYiBzaXRlIGZvciBhdmFpbGFibGUgV2ViIHNlcnZpY2VzLiBUaGUgV1NJTCBzcGVjaWZpY2F0aW9uCi1kZWZpbmVzIHRoZSBsb2NhdGlvbnMgb24gYSBXZWIgc2l0ZSB3aGVyZSB5b3UgY2FuIGxvb2sgZm9yIFdlYiBzZXJ2aWNlIGRlc2NyaXB0aW9ucy48L3A+Ci0KLTxwPlNpbmNlIFdTSUwgZm9jdXNlcyBvbiBkaXN0cmlidXRlZCBzZXJ2aWNlIGRpc2NvdmVyeSwgdGhlIFdTSUwgc3BlY2lmaWNhdGlvbgotY29tcGxlbWVudHMgVURESSBieSBmYWNpbGl0YXRpbmcgdGhlIGRpc2NvdmVyeSBvZiBzZXJ2aWNlcyB0aGF0IGFyZSBhdmFpbGFibGUKLW9uIFdlYiBzaXRlcyB0aGF0IG1heSBub3QgYmUgbGlzdGVkIHlldCBpbiBhIFVEREkgcmVnaXN0cnkuIEEgc2VwYXJhdGUgdG9waWMKLWluIHRoaXMgZG9jdW1lbnRhdGlvbiBkaXNjdXNzZXMgdGhlICA8YSBocmVmPSJjd3NpbHVkLmh0bWwiPlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTSUw8L2E+LjwvcD4KLQotPHA+VGhlIFdTSUwgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBkZWZpbmUgYSBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlLsKgCi1XU0lMIGRvY3VtZW50cyBwcm92aWRlIGEgbWV0aG9kIGZvciBhZ2dyZWdhdGluZyBkaWZmZXJlbnQgdHlwZXMgb2Ygc2VydmljZQotZGVzY3JpcHRpb25zLsKgIFdpdGhpbiBhIFdTSUwgZG9jdW1lbnQsIGEgc2luZ2xlIHNlcnZpY2UgY2FuIGhhdmUgbW9yZQotdGhhbiBvbmUgcmVmZXJlbmNlIHRvIGEgc2VydmljZSBkZXNjcmlwdGlvbi7CoCBGb3IgZXhhbXBsZSwgYSBzaW5nbGUgV2ViCi1zZXJ2aWNlIG1pZ2h0IGJlIHJlZmVyZW5jZWQgdHdpY2UgaW4gYSBXU0lMIGRvY3VtZW50OiBvbmNlIGRpcmVjdGx5IHZpYSBpdHMKLVdTREwsIGFuZCBhZ2FpbiB2aWEgaXRzIGJ1c2luZXNzU2VydmljZSBlbnRyeSBpbiBhIFVEREkgcmVnaXN0cnkuIFJlZmVyZW5jZXMKLXRvIHRoZXNlIHR3byBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBzaG91bGQgYmUgcHV0IGludG8gYSBXU0lMIGRvY3VtZW50LsKgCi1JZiBtdWx0aXBsZSByZWZlcmVuY2VzIGFyZSBhdmFpbGFibGUsIGl0IGlzIGJlbmVmaWNpYWwgdG8gcHV0IGFsbCBvZiB0aGVtCi1pbiB0aGUgV1NJTCBkb2N1bWVudCBzbyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB0aGF0IHVzZXMgdGhlIGRvY3VtZW50IGNhbiBzZWxlY3QKLXRoZSB0eXBlIG9mIHNlcnZpY2UgZGVzY3JpcHRpb24gdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggYW5kIHByZWZlcnJlZCBieSB0aGF0Ci1hcHBsaWNhdGlvbi48L3A+Ci0KLTxwPlRoZSBXU0lMIHNwZWNpZmljYXRpb24gc2VydmVzIHR3byBwcmltYXJ5IGZ1bmN0aW9uczo8L3A+Ci0KLTx1bD4KLTxsaT5XU0lMIGRlZmluZXMgYW4gWE1MIGZvcm1hdCBmb3IgbGlzdGluZyByZWZlcmVuY2VzIHRvIGV4aXN0aW5nIHNlcnZpY2UKLWRlc2NyaXB0aW9ucy4gVGhlc2Ugc2VydmljZSBkZXNjcmlwdGlvbnMgY2FuIGJlIGRlZmluZWQgaW4gYW55IGZvcm1hdCwgc3VjaAotYXMgV1NETCwgVURESSwgb3IgcGxhaW4gSFRNTC7CoCBBIFdTSUwgZG9jdW1lbnQgaXMgZ2VuZXJhbGx5IG1hZGUgYXZhaWxhYmxlCi1hdCB0aGUgcG9pbnQtb2Ytb2ZmZXJpbmcgZm9yIHRoZSBzZXJ2aWNlcyB0aGF0IGFyZSByZWZlcmVuY2VkIHdpdGhpbiB0aGUgZG9jdW1lbnQuCi1BIFdTSUwgZG9jdW1lbnQgY2FuIGNvbnRhaW4gYSBsaXN0IG9mIHJlZmVyZW5jZXMgdG8gc2VydmljZSBkZXNjcmlwdGlvbnMsCi1hcyB3ZWxsIGFzIHJlZmVyZW5jZXMgdG8gb3RoZXIgV1NJTCBkb2N1bWVudHMuICA8cD5UaGUgYWJpbGl0eSB0byBsaW5rIGEgV1NJTAotZG9jdW1lbnQgdG8gb25lIG9yIG1vcmUgZGlmZmVyZW50IFdTSUwgZG9jdW1lbnRzIGFsbG93cyB5b3UgdG8gbWFuYWdlIHNlcnZpY2UKLWRlc2NyaXB0aW9uIHJlZmVyZW5jZXMgYnkgZ3JvdXBpbmcgdGhlbSBpbnRvIGRpZmZlcmVudCBkb2N1bWVudHMgYW5kIHRvIGJ1aWxkCi1hIGhpZXJhcmNoeSBvZiBXU0lMIGRvY3VtZW50cy7CoCBGb3IgZXhhbXBsZSwgc2VwYXJhdGUgV1NJTCBkb2N1bWVudHMKLWNhbiBiZSBjcmVhdGVkIGZvciBkaWZmZXJlbnQgY2F0ZWdvcmllcyBvZiBzZXJ2aWNlcywgYW5kIG9uZSBwcmltYXJ5IFdTSUwKLWRvY3VtZW50IGNhbiBsaW5rIGFsbCBvZiB0aGVtIHRvZ2V0aGVyLjwvcD4KLTwvbGk+Ci0KLTxsaT5XU0lMIGRlZmluZXMgYSBzZXQgb2YgY29udmVudGlvbnMgc28gdGhhdCBpdCBpcyBlYXN5IHRvIGxvY2F0ZSBvdGhlciBXU0lMCi1kb2N1bWVudHMuIFRoZSBXU0lMIHNwZWNpZmljYXRpb24gZG9lcyBub3QgbGltaXQgdGhlIHR5cGUgb2Ygc2VydmljZSBkZXNjcmlwdGlvbnMKLXRoYXQgY2FuIGJlIHJlZmVyZW5jZWQuwqAgVGhlIFdTSUwgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgc2V0IG9mIHN0YW5kYXJkCi1leHRlbnNpYmlsaXR5IGVsZW1lbnRzIGZvciBib3RoIFdTREwgYW5kIFVEREkuwqAgVGhlIFdTSUwgc3BlY2lmaWNhdGlvbgotaXMgdGhlIGRlZmluaXRpb24gb2YgbG9jYXRpb25zIHdoZXJlIHlvdSBjYW4gYWNjZXNzIFdTSUwgZG9jdW1lbnRzLjwvbGk+Ci0KLTxsaT4gVHdvIGNvbnZlbnRpb25zIG1ha2UgdGhlIGxvY2F0aW9uIGFuZCByZXRyaWV2YWwgb2YgV1NJTCBkb2N1bWVudHMgZWFzeTogPHVsPgotPGxpPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5GaXhlZC1uYW1lIFdTSUwgZG9jdW1lbnRzLjwvc3Bhbj4gVGhlIGZpeGVkIG5hbWUgZm9yCi1XU0lMIGRvY3VtZW50cyBpcyBpbnNwZWN0aW9uLndzaWwuwqAgVGhlIGluc3BlY3Rpb24ud3NpbCBmaWxlIGlzIHBsYWNlZAotYXQgY29tbW9uIGVudHJ5IHBvaW50cyBmb3IgYSBXZWIgc2l0ZS7CoCBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvbW1vbiBlbnRyeQotcG9pbnQgaXMgaHR0cDovL2VudHJ5cG9pbnQuY29tIHRoZW4gdGhlIGxvY2F0aW9uIG9mIHRoZSBXU0lMIGRvY3VtZW50IHdvdWxkCi1iZSBodHRwOi8vZW50cnlwb2ludC5jb20vaW5zcGVjdGlvbi53c2lsPC9saT4KLQotPGxpPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5MaW5rZWQgV1NJTCBkb2N1bWVudHMuPC9zcGFuPiBSZWZlcmVuY2VzIHRvIFdTSUwgZG9jdW1lbnRzCi1jYW4gYWxzbyBhcHBlYXIgd2l0aGluIGRpZmZlcmVudCBjb250ZW50IGRvY3VtZW50cywgc3VjaCBhcyBIVE1MIHBhZ2VzLjwvbGk+Ci0KLTwvdWw+Ci0gPC9saT4KLQotPC91bD4KLQotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFdlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIHNwZWNpZmljYXRpb24sCi1yZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3d3dy0xMDYuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWwiIHRhcmdldD0iX2JsYW5rIj53d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWw8L2E+PC9wPgotCi08L2Rpdj4KLQotPGRpdj4KLTx1bCBjbGFzcz0idWxsaW5rcyI+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2lsdWQuaHRtbCI+UmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NJTDwvYT48L3N0cm9uZz48YnIgLz4KLVRoZSBXZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCkgYW5kIHRoZSBVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSBzcGVjaWZpY2F0aW9uIGJvdGggYWRkcmVzcyBpc3N1ZXMgcmVsYXRlZCB0byBXZWIgc2VydmljZSBkaXNjb3ZlcnkuIEhvd2V2ZXIsIGVhY2ggc3BlY2lmaWNhdGlvbiB0YWtlcyBhIGRpZmZlcmVudCBhcHByb2FjaCB0byB0aGUgZGlzY292ZXJ5IG9mIFdlYiBzZXJ2aWNlcy4gVGhlIHR3byBzcGVjaWZpY2F0aW9ucyBjYW4gYmUgdXNlZCBzZXBhcmF0ZWx5IG9yIGpvaW50bHk7IHNlYXJjaGluZyB3aXRoIFdTSUwgY2FuIHJlc3VsdCBpbiBmaW5kaW5nIGl0ZW1zIGluIFVEREkuPC9saT4KLTwvdWw+Ci0KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi9jb25jZXB0cy9jd3NzdGFuZGFyZHMuaHRtbCIgdGl0bGU9Ik9uZSBvZiB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgSW50ZXJuZXQgc3RhbmRhcmRzIGlzIHRoYXQgdGhleSBmb2N1cyBvbiBwcm90b2NvbHMgYW5kIG5vdCBvbiBpbXBsZW1lbnRhdGlvbnMuIFRoZSBJbnRlcm5ldCBpcyBjb21wb3NlZCBvZiBoZXRlcm9nZW5lb3VzIHRlY2hub2xvZ2llcyB0aGF0IHN1Y2Nlc3NmdWxseSBpbnRlcm9wZXJhdGUgdGhyb3VnaCBzaGFyZWQgcHJvdG9jb2xzLiBUaGlzIHByZXZlbnRzIGluZGl2aWR1YWwgdmVuZG9ycyBmcm9tIGltcG9zaW5nIGEgc3RhbmRhcmQgb24gdGhlIEludGVybmV0LiBPcGVuIFNvdXJjZSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBwcmVzZXJ2aW5nIHRoZSBpbnRlcm9wZXJhYmlsaXR5IG9mIHZlbmRvciBpbXBsZW1lbnRhdGlvbnMgb2Ygc3RhbmRhcmRzLiI+V2ViIHNlcnZpY2VzIHN0YW5kYXJkczwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iY3dzLmh0bWwiIHRpdGxlPSJBIFdlYiBzZXJ2aWNlIGlzIGEgc2V0IG9mIHJlbGF0ZWQgYXBwbGljYXRpb24gZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgaW52b2tlZCBvdmVyIHRoZSBJbnRlcm5ldC4gQnVzaW5lc3NlcyBjYW4gZHluYW1pY2FsbHkgbWl4IGFuZCBtYXRjaCBXZWIgc2VydmljZXMgdG8gcGVyZm9ybSBjb21wbGV4IHRyYW5zYWN0aW9ucyB3aXRoIG1pbmltYWwgcHJvZ3JhbW1pbmcuIFdlYiBzZXJ2aWNlcyBhbGxvdyBidXllcnMgYW5kIHNlbGxlcnMgYWxsIG92ZXIgdGhlIHdvcmxkIHRvIGRpc2NvdmVyIGVhY2ggb3RoZXIsIGNvbm5lY3QgZHluYW1pY2FsbHksIGFuZCBleGVjdXRlIHRyYW5zYWN0aW9ucyBpbiByZWFsIHRpbWUgd2l0aCBtaW5pbWFsIGh1bWFuIGludGVyYWN0aW9uLiI+V2ViIHNlcnZpY2VzIG92ZXJ2aWV3PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJjd3NpbndzYS5odG1sIiB0aXRsZT0iIj5Ub29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vdGFza3MvdG92ZXJ3cy5odG1sIj4gRGV2ZWxvcGluZyBXZWIKLXNlcnZpY2VzPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbHVkLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbHVkLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkM2FmNDUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaWx1ZC5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgY29uY2VwdCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBDb25jZXB0Ly9FTiIKLSAiY29uY2VwdC5kdGQiPgotPGNvbmNlcHQgaWQ9ImN3c2lsdWQiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+UmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NJTDwvdGl0bGU+Ci08c2hvcnRkZXNjPlRoZSBXZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCkgYW5kIHRoZSBVbml2ZXJzYWwgRGVzY3JpcHRpb24sCi1EaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBib3RoIGFkZHJlc3MgaXNzdWVzIHJlbGF0ZWQKLXRvIFdlYiBzZXJ2aWNlIGRpc2NvdmVyeS4gSG93ZXZlciwgZWFjaCBzcGVjaWZpY2F0aW9uIHRha2VzIGEgZGlmZmVyZW50IGFwcHJvYWNoCi10byB0aGUgZGlzY292ZXJ5IG9mIFdlYiBzZXJ2aWNlcy4gVGhlIHR3byBzcGVjaWZpY2F0aW9ucyBjYW4gYmUgdXNlZCBzZXBhcmF0ZWx5Ci1vciBqb2ludGx5OyBzZWFyY2hpbmcgd2l0aCBXU0lMIGNhbiByZXN1bHQgaW4gZmluZGluZyBpdGVtcyBpbiBVRERJLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5VRERJPGluZGV4dGVybT5yZWxhdGlvbnNoaXAgd2l0aCBXU0lMPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08aW5kZXh0ZXJtPldTSUw8aW5kZXh0ZXJtPnJlbGF0aW9uc2hpcCB3aXRoIFVEREk8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTxjb25ib2R5PgotPHA+VGhlIFVEREkgc3BlY2lmaWNhdGlvbiBhZGRyZXNzZXMgV2ViIHNlcnZpY2UgZGlzY292ZXJ5IHRocm91Z2ggdGhlIHVzZQotb2YgYSBjZW50cmFsaXplZCBtb2RlbC4gT25lIG9yIG1vcmUgcmVwb3NpdG9yaWVzIGFyZSBjcmVhdGVkIHRvIGhvdXNlIGluZm9ybWF0aW9uCi1hYm91dCBidXNpbmVzc2VzIGFuZCB0aGUgc2VydmljZXMgdGhleSBvZmZlci4gUmVxdWVzdHMgYW5kIHVwZGF0ZXMgcGVydGFpbmluZwotdG8gdGhlIHNlcnZpY2UgYW5kIGJ1c2luZXNzIHJlbGF0ZWQgaW5mb3JtYXRpb24gYXJlIGlzc3VlZCBkaXJlY3RseSBhZ2FpbnN0Ci10aGUgcmVwb3NpdG9yaWVzLiBJbiBhZGRpdGlvbiwgVURESSBwcmVzY3JpYmVzIGEgc3BlY2lmaWMgZm9ybWF0IGZvciBhIHBvcnRpb24KLW9mIHRoZSBzdG9yZWQgZGVzY3JpcHRpb24gaW5mb3JtYXRpb24gYW5kLCB0byBmYWNpbGl0YXRlIGFkdmFuY2VkIChmb2N1c2VkKQotc2VhcmNoaW5nLCBhc3N1bWVzIHRoYXQgb3RoZXIgZGVzY3JpcHRpb24gaW5mb3JtYXRpb24gd2lsbCBiZSBzdG9yZWQgYW5kIHJlZ2lzdGVyZWQKLXdpdGhpbiB0aGUgc3lzdGVtIGFzIHdlbGwuPC9wPgotPHA+VURESSBzeXN0ZW1zIGZhY2lsaXRhdGUgZm9jdXNlZCBkaXNjb3ZlcnkgcGF0dGVybnMgc2luY2UgdGhlc2Ugc3lzdGVtcwotYXJlIGJhc2VkIG9uIG9yZ2FuaXplZCByZXBvc2l0b3JpZXMgdGhhdCBwcm92aWRlIGFkdmFuY2VkIHNlYXJjaGluZyBjYXBhYmlsaXRpZXMuCi1UaGlzIGhlbHBzIHJlcXVlc3RvcnMgbG9jYXRlIHBvdGVudGlhbCBjb21tdW5pY2F0aW9uIHBhcnRuZXJzLiBJbiBvcmRlciB0bwotcHJvdmlkZSBhZHZhbmNlZCBmdW5jdGlvbmFsaXR5LCBob3dldmVyLCBVRERJIHJlcXVpcmVzIHRoZSBkZXBsb3ltZW50IGFuZAotbWFpbnRlbmFuY2Ugb2YgYSBjZXJ0YWluIGFtb3VudCBvZiBpbmZyYXN0cnVjdHVyZSwgdGh1cyBpbmNyZWFzaW5nIHRoZSBjb3N0Ci1vZiBvcGVyYXRpb24uIEluIGFkZGl0aW9uLCB1bmxlc3MgdGhlIHNlcnZpY2UgZGVzY3JpcHRpb25zIGFyZSBzdG9yZWQgb25seQotd2l0aGluIFVEREksIHRoZXJlIGlzIGEgY29zdCBhc3NvY2lhdGVkIHdpdGgga2VlcGluZyB0aGUgZGlmZmVyZW50IHZlcnNpb25zCi1zeW5jaHJvbml6ZWQuPC9wPgotPHA+VGhlIFdTSUwgc3BlY2lmaWNhdGlvbiByZWxpZXMgb24gYSBjb21wbGV0ZWx5IGRpc3RyaWJ1dGVkIG1vZGVsIGZvciBwcm92aWRpbmcKLXNlcnZpY2UtcmVsYXRlZCBpbmZvcm1hdGlvbi4gVGhlIHNlcnZpY2UgZGVzY3JpcHRpb25zIGNhbiBiZSBzdG9yZWQgYXQgYW55Ci1sb2NhdGlvbiwgYW5kIHJlcXVlc3RzIHRvIHJldHJpZXZlIHRoZSBpbmZvcm1hdGlvbiBhcmUgZ2VuZXJhbGx5IG1hZGUgZGlyZWN0bHkKLXRvIHRoZSBlbnRpdGllcyB0aGF0IGFyZSBvZmZlcmluZyB0aGUgc2VydmljZXMuIFRoZSBXU0lMIHNwZWNpZmljYXRpb24gZG9lcwotbm90IHN0aXB1bGF0ZSBhbnkgcGFydGljdWxhciBmb3JtYXQgZm9yIHRoZSBzZXJ2aWNlIGluZm9ybWF0aW9uLiBJdCByZWxpZXMKLW9uIG90aGVyIHN0YW5kYXJkcywgaW5jbHVkaW5nIFVEREksIHRvIGRlZmluZSB0aGUgZGVzY3JpcHRpb24gZm9ybWF0cy4gVGhlCi1XU0lMIHNwZWNpZmljYXRpb24gYWxzbyByZWxpZXMgb24gZXhpc3RpbmcgV2ViIHRlY2hub2xvZ2llcyBhbmQgaW5mcmFzdHJ1Y3R1cmUKLXRvIHByb3ZpZGUgbWVjaGFuaXNtcyBmb3IgcHVibGlzaGluZyBhbmQgcmV0cmlldmluZyBpdHMgZG9jdW1lbnRzLjwvcD4KLTxwPldTSUwgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZGlzc2VtaW5hdGUgc2VydmljZS1yZWxhdGVkIGluZm9ybWF0aW9uIHRocm91Z2gKLWV4aXN0aW5nIHByb3RvY29scyBkaXJlY3RseSBmcm9tIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgc2VydmljZSBpcyBiZWluZyBvZmZlcmVkLgotVGhpcyBlbmFibGVzIGZvY3VzZWQgZGlzY292ZXJ5IHRvIGJlIHBlcmZvcm1lZCBvbiBhIHNpbmdsZSB0YXJnZXQ7IGhvd2V2ZXIsCi1iZWNhdXNlIG9mIGl0cyBkZWNlbnRyYWxpemVkIGFuZCBkaXN0cmlidXRlZCBtb2RlbCwgV1NJTCBpcyBub3QgYSBnb29kIG1lY2hhbmlzbQotZm9yIGV4ZWN1dGluZyBmb2N1c2VkIGRpc2NvdmVyeSBpZiB0aGUgY29tbXVuaWNhdGlvbiBwYXJ0bmVyIGlzIHVua25vd24uPC9wPgotPHA+VGhlIFVEREkgYW5kIFdTSUwgc3BlY2lmaWNhdGlvbnMgc2hvdWxkIGJlIHZpZXdlZCBhcyBjb21wbGVtZW50YXJ5IHRlY2hub2xvZ2llcwotdG8gYmUgdXNlZCBlaXRoZXIgdG9nZXRoZXIgb3Igc2VwYXJhdGVseSBkZXBlbmRpbmcgb24gdGhlIHNpdHVhdGlvbi4gRm9yIGV4YW1wbGUsCi1hIFVEREkgcmVwb3NpdG9yeSBjb3VsZCBiZSBwb3B1bGF0ZWQgYmFzZWQgb24gdGhlIHJlc3VsdHMgZm91bmQgd2hlbiBwZXJmb3JtaW5nCi1hIHNlYXJjaCBmb3IgV1NJTCBkb2N1bWVudHMuIExpa2V3aXNlLCBhIFVEREkgcmVwb3NpdG9yeSBtYXkgaXRzZWxmIGJlIGRpc2NvdmVyZWQKLXdoZW4gYSByZXF1ZXN0ZXIgcmV0cmlldmVzIGEgV1NJTCBkb2N1bWVudCB0aGF0IHJlZmVyZW5jZXMgYW4gZW50cnkgaW4gdGhlCi1yZXBvc2l0b3J5LiBJbiBlbnZpcm9ubWVudHMgd2hlcmUgdGhlIGFkdmFuY2VkIGZ1bmN0aW9uYWxpdHkgYWZmb3JkZWQgYnkgVURESQotaXMgbm90IHJlcXVpcmVkIGFuZCB3aGVyZSBjb25zdHJhaW50cyBkbyBub3QgYWxsb3cgZm9yIGl0cyBkZXBsb3ltZW50LCB0aGUKLVdTSUwgbWVjaGFuaXNtIG1heSBwcm92aWRlIGFsbCBvZiB0aGUgY2FwYWJpbGl0aWVzIHRoYXQgYXJlIG5lZWRlZC4gSW4gc2l0dWF0aW9ucwotd2hlcmUgZGF0YSBuZWVkcyB0byBiZSBjZW50cmFsbHkgbWFuYWdlZCwgYSBVRERJIHNvbHV0aW9uIGFsb25lIG1heSBwcm92aWRlCi10aGUgYmVzdCBmaXQuIFRoZSBVRERJIGFuZCBXU0lMIHNwZWNpZmljYXRpb25zIHNob3VsZCBub3QgYmUgdmlld2VkIGFzIG11dHVhbGx5Ci1leGNsdXNpdmUuPC9wPgotPG5vdGU+Qm90aCBVRERJIGFuZCBXU0lMIGNvbnRhaW4gb25seSByZWZlcmVuY2VzIHRvIFdTREwgLSB0aGV5IGRvIG5vdCBjb250YWluCi10aGUgV1NETCBkb2N1bWVudHMgdGhlbXNlbHZlcy48L25vdGU+Ci08L2NvbmJvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSJjd3MuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0iY3dzaW53c2EuZGl0YSI+PC9saW5rPgotPGxpbmsgaHJlZj0iY3dzaWwuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSIuLi90YXNrcy90b3ZlcndzLmRpdGEiIHNjb3BlPSJwZWVyIj48bGlua3RleHQ+IERldmVsb3BpbmcgV2ViCi1zZXJ2aWNlczwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvY29uY2VwdD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lsdWQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lsdWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU5NWIwYy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbHVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9ImNvbmNlcHQiIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iUmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NJTCIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgV2ViIFNlcnZpY2VzIEluc3BlY3Rpb24gTGFuZ3VhZ2UgKFdTSUwpIGFuZCB0aGUgVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBib3RoIGFkZHJlc3MgaXNzdWVzIHJlbGF0ZWQgdG8gV2ViIHNlcnZpY2UgZGlzY292ZXJ5LiBIb3dldmVyLCBlYWNoIHNwZWNpZmljYXRpb24gdGFrZXMgYSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gdGhlIGRpc2NvdmVyeSBvZiBXZWIgc2VydmljZXMuIFRoZSB0d28gc3BlY2lmaWNhdGlvbnMgY2FuIGJlIHVzZWQgc2VwYXJhdGVseSBvciBqb2ludGx5OyBzZWFyY2hpbmcgd2l0aCBXU0lMIGNhbiByZXN1bHQgaW4gZmluZGluZyBpdGVtcyBpbiBVRERJLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGUgV2ViIFNlcnZpY2VzIEluc3BlY3Rpb24gTGFuZ3VhZ2UgKFdTSUwpIGFuZCB0aGUgVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBib3RoIGFkZHJlc3MgaXNzdWVzIHJlbGF0ZWQgdG8gV2ViIHNlcnZpY2UgZGlzY292ZXJ5LiBIb3dldmVyLCBlYWNoIHNwZWNpZmljYXRpb24gdGFrZXMgYSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gdGhlIGRpc2NvdmVyeSBvZiBXZWIgc2VydmljZXMuIFRoZSB0d28gc3BlY2lmaWNhdGlvbnMgY2FuIGJlIHVzZWQgc2VwYXJhdGVseSBvciBqb2ludGx5OyBzZWFyY2hpbmcgd2l0aCBXU0lMIGNhbiByZXN1bHQgaW4gZmluZGluZyBpdGVtcyBpbiBVRERJLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IlVEREksIHJlbGF0aW9uc2hpcCB3aXRoIFdTSUwsIFdTSUwsIHJlbGF0aW9uc2hpcCB3aXRoIFVEREkiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJVRERJLCByZWxhdGlvbnNoaXAgd2l0aCBXU0lMLCBXU0lMLCByZWxhdGlvbnNoaXAgd2l0aCBVRERJIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzaWwuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImN3c2lud3NhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImN3c2lsLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3RvdmVyd3MuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJjd3NpbHVkIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+UmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NJTDwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0iY3dzaWx1ZCI+PGEgbmFtZT0iY3dzaWx1ZCI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+UmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NJTDwvaDE+Ci0KLQotCi08ZGl2PjxwPlRoZSBXZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCkgYW5kIHRoZSBVbml2ZXJzYWwgRGVzY3JpcHRpb24sCi1EaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkgc3BlY2lmaWNhdGlvbiBib3RoIGFkZHJlc3MgaXNzdWVzIHJlbGF0ZWQKLXRvIFdlYiBzZXJ2aWNlIGRpc2NvdmVyeS4gSG93ZXZlciwgZWFjaCBzcGVjaWZpY2F0aW9uIHRha2VzIGEgZGlmZmVyZW50IGFwcHJvYWNoCi10byB0aGUgZGlzY292ZXJ5IG9mIFdlYiBzZXJ2aWNlcy4gVGhlIHR3byBzcGVjaWZpY2F0aW9ucyBjYW4gYmUgdXNlZCBzZXBhcmF0ZWx5Ci1vciBqb2ludGx5OyBzZWFyY2hpbmcgd2l0aCBXU0lMIGNhbiByZXN1bHQgaW4gZmluZGluZyBpdGVtcyBpbiBVRERJLjwvcD4KLQotPHA+VGhlIFVEREkgc3BlY2lmaWNhdGlvbiBhZGRyZXNzZXMgV2ViIHNlcnZpY2UgZGlzY292ZXJ5IHRocm91Z2ggdGhlIHVzZQotb2YgYSBjZW50cmFsaXplZCBtb2RlbC4gT25lIG9yIG1vcmUgcmVwb3NpdG9yaWVzIGFyZSBjcmVhdGVkIHRvIGhvdXNlIGluZm9ybWF0aW9uCi1hYm91dCBidXNpbmVzc2VzIGFuZCB0aGUgc2VydmljZXMgdGhleSBvZmZlci4gUmVxdWVzdHMgYW5kIHVwZGF0ZXMgcGVydGFpbmluZwotdG8gdGhlIHNlcnZpY2UgYW5kIGJ1c2luZXNzIHJlbGF0ZWQgaW5mb3JtYXRpb24gYXJlIGlzc3VlZCBkaXJlY3RseSBhZ2FpbnN0Ci10aGUgcmVwb3NpdG9yaWVzLiBJbiBhZGRpdGlvbiwgVURESSBwcmVzY3JpYmVzIGEgc3BlY2lmaWMgZm9ybWF0IGZvciBhIHBvcnRpb24KLW9mIHRoZSBzdG9yZWQgZGVzY3JpcHRpb24gaW5mb3JtYXRpb24gYW5kLCB0byBmYWNpbGl0YXRlIGFkdmFuY2VkIChmb2N1c2VkKQotc2VhcmNoaW5nLCBhc3N1bWVzIHRoYXQgb3RoZXIgZGVzY3JpcHRpb24gaW5mb3JtYXRpb24gd2lsbCBiZSBzdG9yZWQgYW5kIHJlZ2lzdGVyZWQKLXdpdGhpbiB0aGUgc3lzdGVtIGFzIHdlbGwuPC9wPgotCi08cD5VRERJIHN5c3RlbXMgZmFjaWxpdGF0ZSBmb2N1c2VkIGRpc2NvdmVyeSBwYXR0ZXJucyBzaW5jZSB0aGVzZSBzeXN0ZW1zCi1hcmUgYmFzZWQgb24gb3JnYW5pemVkIHJlcG9zaXRvcmllcyB0aGF0IHByb3ZpZGUgYWR2YW5jZWQgc2VhcmNoaW5nIGNhcGFiaWxpdGllcy4KLVRoaXMgaGVscHMgcmVxdWVzdG9ycyBsb2NhdGUgcG90ZW50aWFsIGNvbW11bmljYXRpb24gcGFydG5lcnMuIEluIG9yZGVyIHRvCi1wcm92aWRlIGFkdmFuY2VkIGZ1bmN0aW9uYWxpdHksIGhvd2V2ZXIsIFVEREkgcmVxdWlyZXMgdGhlIGRlcGxveW1lbnQgYW5kCi1tYWludGVuYW5jZSBvZiBhIGNlcnRhaW4gYW1vdW50IG9mIGluZnJhc3RydWN0dXJlLCB0aHVzIGluY3JlYXNpbmcgdGhlIGNvc3QKLW9mIG9wZXJhdGlvbi4gSW4gYWRkaXRpb24sIHVubGVzcyB0aGUgc2VydmljZSBkZXNjcmlwdGlvbnMgYXJlIHN0b3JlZCBvbmx5Ci13aXRoaW4gVURESSwgdGhlcmUgaXMgYSBjb3N0IGFzc29jaWF0ZWQgd2l0aCBrZWVwaW5nIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMKLXN5bmNocm9uaXplZC48L3A+Ci0KLTxwPlRoZSBXU0lMIHNwZWNpZmljYXRpb24gcmVsaWVzIG9uIGEgY29tcGxldGVseSBkaXN0cmlidXRlZCBtb2RlbCBmb3IgcHJvdmlkaW5nCi1zZXJ2aWNlLXJlbGF0ZWQgaW5mb3JtYXRpb24uIFRoZSBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBjYW4gYmUgc3RvcmVkIGF0IGFueQotbG9jYXRpb24sIGFuZCByZXF1ZXN0cyB0byByZXRyaWV2ZSB0aGUgaW5mb3JtYXRpb24gYXJlIGdlbmVyYWxseSBtYWRlIGRpcmVjdGx5Ci10byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgb2ZmZXJpbmcgdGhlIHNlcnZpY2VzLiBUaGUgV1NJTCBzcGVjaWZpY2F0aW9uIGRvZXMKLW5vdCBzdGlwdWxhdGUgYW55IHBhcnRpY3VsYXIgZm9ybWF0IGZvciB0aGUgc2VydmljZSBpbmZvcm1hdGlvbi4gSXQgcmVsaWVzCi1vbiBvdGhlciBzdGFuZGFyZHMsIGluY2x1ZGluZyBVRERJLCB0byBkZWZpbmUgdGhlIGRlc2NyaXB0aW9uIGZvcm1hdHMuIFRoZQotV1NJTCBzcGVjaWZpY2F0aW9uIGFsc28gcmVsaWVzIG9uIGV4aXN0aW5nIFdlYiB0ZWNobm9sb2dpZXMgYW5kIGluZnJhc3RydWN0dXJlCi10byBwcm92aWRlIG1lY2hhbmlzbXMgZm9yIHB1Ymxpc2hpbmcgYW5kIHJldHJpZXZpbmcgaXRzIGRvY3VtZW50cy48L3A+Ci0KLTxwPldTSUwgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZGlzc2VtaW5hdGUgc2VydmljZS1yZWxhdGVkIGluZm9ybWF0aW9uIHRocm91Z2gKLWV4aXN0aW5nIHByb3RvY29scyBkaXJlY3RseSBmcm9tIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgc2VydmljZSBpcyBiZWluZyBvZmZlcmVkLgotVGhpcyBlbmFibGVzIGZvY3VzZWQgZGlzY292ZXJ5IHRvIGJlIHBlcmZvcm1lZCBvbiBhIHNpbmdsZSB0YXJnZXQ7IGhvd2V2ZXIsCi1iZWNhdXNlIG9mIGl0cyBkZWNlbnRyYWxpemVkIGFuZCBkaXN0cmlidXRlZCBtb2RlbCwgV1NJTCBpcyBub3QgYSBnb29kIG1lY2hhbmlzbQotZm9yIGV4ZWN1dGluZyBmb2N1c2VkIGRpc2NvdmVyeSBpZiB0aGUgY29tbXVuaWNhdGlvbiBwYXJ0bmVyIGlzIHVua25vd24uPC9wPgotCi08cD5UaGUgVURESSBhbmQgV1NJTCBzcGVjaWZpY2F0aW9ucyBzaG91bGQgYmUgdmlld2VkIGFzIGNvbXBsZW1lbnRhcnkgdGVjaG5vbG9naWVzCi10byBiZSB1c2VkIGVpdGhlciB0b2dldGhlciBvciBzZXBhcmF0ZWx5IGRlcGVuZGluZyBvbiB0aGUgc2l0dWF0aW9uLiBGb3IgZXhhbXBsZSwKLWEgVURESSByZXBvc2l0b3J5IGNvdWxkIGJlIHBvcHVsYXRlZCBiYXNlZCBvbiB0aGUgcmVzdWx0cyBmb3VuZCB3aGVuIHBlcmZvcm1pbmcKLWEgc2VhcmNoIGZvciBXU0lMIGRvY3VtZW50cy4gTGlrZXdpc2UsIGEgVURESSByZXBvc2l0b3J5IG1heSBpdHNlbGYgYmUgZGlzY292ZXJlZAotd2hlbiBhIHJlcXVlc3RlciByZXRyaWV2ZXMgYSBXU0lMIGRvY3VtZW50IHRoYXQgcmVmZXJlbmNlcyBhbiBlbnRyeSBpbiB0aGUKLXJlcG9zaXRvcnkuIEluIGVudmlyb25tZW50cyB3aGVyZSB0aGUgYWR2YW5jZWQgZnVuY3Rpb25hbGl0eSBhZmZvcmRlZCBieSBVRERJCi1pcyBub3QgcmVxdWlyZWQgYW5kIHdoZXJlIGNvbnN0cmFpbnRzIGRvIG5vdCBhbGxvdyBmb3IgaXRzIGRlcGxveW1lbnQsIHRoZQotV1NJTCBtZWNoYW5pc20gbWF5IHByb3ZpZGUgYWxsIG9mIHRoZSBjYXBhYmlsaXRpZXMgdGhhdCBhcmUgbmVlZGVkLiBJbiBzaXR1YXRpb25zCi13aGVyZSBkYXRhIG5lZWRzIHRvIGJlIGNlbnRyYWxseSBtYW5hZ2VkLCBhIFVEREkgc29sdXRpb24gYWxvbmUgbWF5IHByb3ZpZGUKLXRoZSBiZXN0IGZpdC4gVGhlIFVEREkgYW5kIFdTSUwgc3BlY2lmaWNhdGlvbnMgc2hvdWxkIG5vdCBiZSB2aWV3ZWQgYXMgbXV0dWFsbHkKLWV4Y2x1c2l2ZS48L3A+Ci0KLTxkaXYgY2xhc3M9Im5vdGUiPjxzcGFuIGNsYXNzPSJub3RldGl0bGUiPk5vdGU6PC9zcGFuPiBCb3RoIFVEREkgYW5kIFdTSUwgY29udGFpbiBvbmx5IHJlZmVyZW5jZXMgdG8gV1NETCAtIHRoZXkgZG8gbm90IGNvbnRhaW4KLXRoZSBXU0RMIGRvY3VtZW50cyB0aGVtc2VsdmVzLjwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi9jb25jZXB0cy9jd3NpbC5odG1sIiB0aXRsZT0iV2ViIFNlcnZpY2VzIEluc3BlY3Rpb24gTGFuZ3VhZ2UgKFdTSUwpIGlzIGEgc2VydmljZSBkaXNjb3ZlcnkgbWVjaGFuaXNtIHRoYXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gVURESSBhcyB3ZWxsIGFzIGNvbXBsZW1lbnRhcnkgdG8gVURESS4gV2hlbiB5b3UgZGlzY292ZXIgV2ViIHNlcnZpY2VzIHdpdGggVURESSwgeW91IGdvIHRvIGEgY2VudHJhbGl6ZWQgcmVnaXN0cnkuwqAgV1NJTCBpcyBhbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCB0byBXZWIgc2VydmljZSBkaXNjb3ZlcnkuwqAgV1NJTCBhbGxvd3MgeW91IHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzZXJ2aWNlIHByb3ZpZGVyIGFuZCBhc2sgZm9yIHRoZSBzZXJ2aWNlcyBpdCBwcm92aWRlcy4iPldlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKTwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iY3dzLmh0bWwiIHRpdGxlPSJBIFdlYiBzZXJ2aWNlIGlzIGEgc2V0IG9mIHJlbGF0ZWQgYXBwbGljYXRpb24gZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgaW52b2tlZCBvdmVyIHRoZSBJbnRlcm5ldC4gQnVzaW5lc3NlcyBjYW4gZHluYW1pY2FsbHkgbWl4IGFuZCBtYXRjaCBXZWIgc2VydmljZXMgdG8gcGVyZm9ybSBjb21wbGV4IHRyYW5zYWN0aW9ucyB3aXRoIG1pbmltYWwgcHJvZ3JhbW1pbmcuIFdlYiBzZXJ2aWNlcyBhbGxvdyBidXllcnMgYW5kIHNlbGxlcnMgYWxsIG92ZXIgdGhlIHdvcmxkIHRvIGRpc2NvdmVyIGVhY2ggb3RoZXIsIGNvbm5lY3QgZHluYW1pY2FsbHksIGFuZCBleGVjdXRlIHRyYW5zYWN0aW9ucyBpbiByZWFsIHRpbWUgd2l0aCBtaW5pbWFsIGh1bWFuIGludGVyYWN0aW9uLiI+V2ViIHNlcnZpY2VzIG92ZXJ2aWV3PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJjd3NpbndzYS5odG1sIiB0aXRsZT0iIj5Ub29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJjd3NpbC5odG1sIiB0aXRsZT0iV2ViIFNlcnZpY2VzIEluc3BlY3Rpb24gTGFuZ3VhZ2UgKFdTSUwpIGlzIGEgc2VydmljZSBkaXNjb3ZlcnkgbWVjaGFuaXNtIHRoYXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gVURESSBhcyB3ZWxsIGFzIGNvbXBsZW1lbnRhcnkgdG8gVURESS4gV2hlbiB5b3UgZGlzY292ZXIgV2ViIHNlcnZpY2VzIHdpdGggVURESSwgeW91IGdvIHRvIGEgY2VudHJhbGl6ZWQgcmVnaXN0cnkuwqAgV1NJTCBpcyBhbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCB0byBXZWIgc2VydmljZSBkaXNjb3ZlcnkuwqAgV1NJTCBhbGxvd3MgeW91IHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzZXJ2aWNlIHByb3ZpZGVyIGFuZCBhc2sgZm9yIHRoZSBzZXJ2aWNlcyBpdCBwcm92aWRlcy4iPldlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuaHRtbCI+IERldmVsb3BpbmcgV2ViCi1zZXJ2aWNlczwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZDBhMTguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDUsIHYuNDAwMi0tPgotPCFET0NUWVBFIGNvbmNlcHQgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgQ29uY2VwdC8vRU4iCi0gImNvbmNlcHQuZHRkIj4KLTxjb25jZXB0IGlkPSJjd3NpbndzYSIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5Ub29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC90aXRsZT4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT50b29scyBvdmVydmlldzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08Y29uYm9keT4KLTxwPlRvb2xzIGFyZSBwcm92aWRlZCB0byBhc3Npc3Qgd2l0aCB0aGUgZm9sbG93aW5nIGFzcGVjdHMgb2YgV2ViIHNlcnZpY2VzCi1kZXZlbG9wbWVudDo8L3A+Ci08dWw+Ci08bGk+IDx1aWNvbnRyb2w+RGlzY292ZXI8L3VpY29udHJvbD4uIEJyb3dzZSB0aGUgVURESSBCdXNpbmVzcyBSZWdpc3RyaWVzCi1vciBXU0lMIGRvY3VtZW50cyB0byBsb2NhdGUgZXhpc3RpbmcgV2ViIHNlcnZpY2VzIGZvciBpbnRlZ3JhdGlvbi48L2xpPgotPGxpPiA8dWljb250cm9sPkNyZWF0ZSBvciBUcmFuc2Zvcm08L3VpY29udHJvbD4uIENyZWF0ZSBib3R0b20tdXAgV2ViIHNlcnZpY2VzCi1mcm9tIGV4aXN0aW5nIGFydGlmYWN0cywgc3VjaCBhcyA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiIKLXRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IGJlYW5zIGFuZCBlbnRlcnByaXNlIGJlYW5zLiBDcmVhdGUKLXRvcC1kb3duIFdlYiBzZXJ2aWNlcyBmcm9tIFdTREwgZGlzY292ZXJlZCBmcm9tIG90aGVycyBvciBjcmVhdGVkIHVzaW5nIHRoZQotV1NETCBFZGl0b3IuPC9saT4KLTxsaT4gPHVpY29udHJvbD5CdWlsZDwvdWljb250cm9sPi4gV3JhcCBleGlzdGluZyBhcnRpZmFjdHMgYXMgU09BUCBhY2Nlc3NpYmxlCi1zZXJ2aWNlcyBhbmQgZGVzY3JpYmUgdGhlbSBpbiBXU0RMLiBUaGUgV2ViIHNlcnZpY2VzIHdpemFyZHMgYXNzaXN0IHlvdSBpbgotZ2VuZXJhdGluZyBhIDx0bSB0bWNsYXNzPSJzcGVjaWFsIiB0bW93bmVyPSJTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIiB0bXR5cGU9InRtIgotdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gY2xpZW50IHByb3h5IHRvIFdlYiBzZXJ2aWNlcyBkZXNjcmliZWQgaW4gV1NETAotYW5kIGluIGdlbmVyYXRpbmcgPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iIHRtdHlwZT0idG0iCi10cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBiZWFuIHNrZWxldG9ucyBmcm9tIFdTREwuPC9saT4KLTxsaT4gPHVpY29udHJvbD5EZXBsb3k8L3VpY29udHJvbD4uIERlcGxveSBXZWIgc2VydmljZXMgaW50byBhIHZhcmlldHkgb2YKLXRlc3QgZW52aXJvbm1lbnRzLjwvbGk+Ci08bGk+IDx1aWNvbnRyb2w+VGVzdDwvdWljb250cm9sPi4gVGVzdCBXZWIgc2VydmljZXMgcnVubmluZyBsb2NhbGx5IG9yIHJlbW90ZWx5Ci1pbiBvcmRlciB0byBnZXQgaW5zdGFudCBmZWVkYmFjay48L2xpPgotPGxpPiA8dWljb250cm9sPkRldmVsb3A8L3VpY29udHJvbD4uIEdlbmVyYXRlIHNhbXBsZSBhcHBsaWNhdGlvbnMgdG8gYXNzaXN0Ci15b3UgaW4gY3JlYXRpbmcgeW91ciBvd24gV2ViIHNlcnZpY2UgY2xpZW50IGFwcGxpY2F0aW9uLjwvbGk+Ci08bGk+IDx1aWNvbnRyb2w+UHVibGlzaDwvdWljb250cm9sPi4gUHVibGlzaCBXZWIgc2VydmljZXMgdG8gYSBVRERJIHYyIG9yCi12MyBCdXNpbmVzcyBSZWdpc3RyeSwgYWR2ZXJ0aXNpbmcgeW91ciBXZWIgc2VydmljZXMgc28gdGhhdCBvdGhlciBidXNpbmVzc2VzCi1hbmQgY2xpZW50cyBjYW4gYWNjZXNzIHRoZW0uPC9saT4KLTwvdWw+Ci08L2NvbmJvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSJjd3MuZGl0YSI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSIuLi90YXNrcy90b3ZlcndzLmRpdGEiIHNjb3BlPSJsb2NhbCI+PGxpbmt0ZXh0PiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L2NvbmNlcHQ+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW53c2EuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY4NWYyNC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbndzYS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9ImNvbmNlcHQiIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgdG9vbHMgb3ZlcnZpZXciIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgc2VydmljZXMsIHRvb2xzIG92ZXJ2aWV3IiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImN3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90b3ZlcndzLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0iY3dzaW53c2EiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5Ub29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJjd3NpbndzYSI+PGEgbmFtZT0iY3dzaW53c2EiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPlRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2gxPgotCi0KLTxkaXY+Ci08cD5Ub29scyBhcmUgcHJvdmlkZWQgdG8gYXNzaXN0IHdpdGggdGhlIGZvbGxvd2luZyBhc3BlY3RzIG9mIFdlYiBzZXJ2aWNlcwotZGV2ZWxvcG1lbnQ6PC9wPgotCi08dWw+Ci08bGk+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRpc2NvdmVyPC9zcGFuPi4gQnJvd3NlIHRoZSBVRERJIEJ1c2luZXNzIFJlZ2lzdHJpZXMKLW9yIFdTSUwgZG9jdW1lbnRzIHRvIGxvY2F0ZSBleGlzdGluZyBXZWIgc2VydmljZXMgZm9yIGludGVncmF0aW9uLjwvbGk+Ci0KLTxsaT4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+Q3JlYXRlIG9yIFRyYW5zZm9ybTwvc3Bhbj4uIENyZWF0ZSBib3R0b20tdXAgV2ViIHNlcnZpY2VzCi1mcm9tIGV4aXN0aW5nIGFydGlmYWN0cywgc3VjaCBhcyBKYXZh4oSiIGJlYW5zIGFuZCBlbnRlcnByaXNlIGJlYW5zLiBDcmVhdGUKLXRvcC1kb3duIFdlYiBzZXJ2aWNlcyBmcm9tIFdTREwgZGlzY292ZXJlZCBmcm9tIG90aGVycyBvciBjcmVhdGVkIHVzaW5nIHRoZQotV1NETCBFZGl0b3IuPC9saT4KLQotPGxpPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5CdWlsZDwvc3Bhbj4uIFdyYXAgZXhpc3RpbmcgYXJ0aWZhY3RzIGFzIFNPQVAgYWNjZXNzaWJsZQotc2VydmljZXMgYW5kIGRlc2NyaWJlIHRoZW0gaW4gV1NETC4gVGhlIFdlYiBzZXJ2aWNlcyB3aXphcmRzIGFzc2lzdCB5b3UgaW4KLWdlbmVyYXRpbmcgYSBKYXZhIGNsaWVudCBwcm94eSB0byBXZWIgc2VydmljZXMgZGVzY3JpYmVkIGluIFdTREwKLWFuZCBpbiBnZW5lcmF0aW5nIEphdmEgYmVhbiBza2VsZXRvbnMgZnJvbSBXU0RMLjwvbGk+Ci0KLTxsaT4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RGVwbG95PC9zcGFuPi4gRGVwbG95IFdlYiBzZXJ2aWNlcyBpbnRvIGEgdmFyaWV0eSBvZgotdGVzdCBlbnZpcm9ubWVudHMuPC9saT4KLQotPGxpPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5UZXN0PC9zcGFuPi4gVGVzdCBXZWIgc2VydmljZXMgcnVubmluZyBsb2NhbGx5IG9yIHJlbW90ZWx5Ci1pbiBvcmRlciB0byBnZXQgaW5zdGFudCBmZWVkYmFjay48L2xpPgotCi08bGk+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRldmVsb3A8L3NwYW4+LiBHZW5lcmF0ZSBzYW1wbGUgYXBwbGljYXRpb25zIHRvIGFzc2lzdAoteW91IGluIGNyZWF0aW5nIHlvdXIgb3duIFdlYiBzZXJ2aWNlIGNsaWVudCBhcHBsaWNhdGlvbi48L2xpPgotCi08bGk+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlB1Ymxpc2g8L3NwYW4+LiBQdWJsaXNoIFdlYiBzZXJ2aWNlcyB0byBhIFVEREkgdjIgb3IKLXYzIEJ1c2luZXNzIFJlZ2lzdHJ5LCBhZHZlcnRpc2luZyB5b3VyIFdlYiBzZXJ2aWNlcyBzbyB0aGF0IG90aGVyIGJ1c2luZXNzZXMKLWFuZCBjbGllbnRzIGNhbiBhY2Nlc3MgdGhlbS48L2xpPgotCi08L3VsPgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi9jb25jZXB0cy9jd3MuaHRtbCIgdGl0bGU9IkEgV2ViIHNlcnZpY2UgaXMgYSBzZXQgb2YgcmVsYXRlZCBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBpbnZva2VkIG92ZXIgdGhlIEludGVybmV0LiBCdXNpbmVzc2VzIGNhbiBkeW5hbWljYWxseSBtaXggYW5kIG1hdGNoIFdlYiBzZXJ2aWNlcyB0byBwZXJmb3JtIGNvbXBsZXggdHJhbnNhY3Rpb25zIHdpdGggbWluaW1hbCBwcm9ncmFtbWluZy4gV2ViIHNlcnZpY2VzIGFsbG93IGJ1eWVycyBhbmQgc2VsbGVycyBhbGwgb3ZlciB0aGUgd29ybGQgdG8gZGlzY292ZXIgZWFjaCBvdGhlciwgY29ubmVjdCBkeW5hbWljYWxseSwgYW5kIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIGluIHJlYWwgdGltZSB3aXRoIG1pbmltYWwgaHVtYW4gaW50ZXJhY3Rpb24uIj5XZWIgc2VydmljZXMgb3ZlcnZpZXc8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9ImN3cy5odG1sIiB0aXRsZT0iQSBXZWIgc2VydmljZSBpcyBhIHNldCBvZiByZWxhdGVkIGFwcGxpY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGludm9rZWQgb3ZlciB0aGUgSW50ZXJuZXQuIEJ1c2luZXNzZXMgY2FuIGR5bmFtaWNhbGx5IG1peCBhbmQgbWF0Y2ggV2ViIHNlcnZpY2VzIHRvIHBlcmZvcm0gY29tcGxleCB0cmFuc2FjdGlvbnMgd2l0aCBtaW5pbWFsIHByb2dyYW1taW5nLiBXZWIgc2VydmljZXMgYWxsb3cgYnV5ZXJzIGFuZCBzZWxsZXJzIGFsbCBvdmVyIHRoZSB3b3JsZCB0byBkaXNjb3ZlciBlYWNoIG90aGVyLCBjb25uZWN0IGR5bmFtaWNhbGx5LCBhbmQgZXhlY3V0ZSB0cmFuc2FjdGlvbnMgaW4gcmVhbCB0aW1lIHdpdGggbWluaW1hbCBodW1hbiBpbnRlcmFjdGlvbi4iPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuaHRtbCIgdGl0bGU9IlVzZSBXZWIgc2VydmljZXMgdG9vbHMgdG8gZGlzY292ZXIsIGNyZWF0ZSwgYW5kIHB1Ymxpc2ggV2ViIHNlcnZpY2VzIHRoYXQgYXJlIGNyZWF0ZWQgZnJvbSBKYXZhIGJlYW5zLCBlbnRlcnByaXNlIGJlYW5zLCBhbmQgV1NETCBmaWxlcy4gWW91IGNhbiBjcmVhdGUgb2YgV2ViIHNlcnZpY2VzIHVzaW5nIGEgdG9wLWRvd24gYXBwcm9hY2ggKHdoaWNoIHN0YXJ0cyB3aXRoIGEgV1NETCBmaWxlKSBvciBhIGJvdHRvbS11cCBhcHByb2FjaCAod2hpY2ggc3RhcnRzIHdpdGggYSBKYXZhIGJlYW4gb3IgRUpCKS4iPiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lvdmVyLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3Npb3Zlci5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmNhZDYxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lvdmVyLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSBjb25jZXB0IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIENvbmNlcHQvL0VOIgotICJjb25jZXB0LmR0ZCI+Ci08Y29uY2VwdCBpZD0iY3dzaW92ZXIiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+V2ViIHNlcnZpY2VzIGludGVyb3BlcmFiaWxpdHkgKFdTLUkpPC90aXRsZT4KLTxzaG9ydGRlc2M+V1MtSSBpcyBhbiBvcmdhbml6YXRpb24gZGVzaWduZWQgdG8gcHJvbW90ZSBXZWIgc2VydmljZSBpbnRlcm9wZXJhYmlsaXR5Ci1hY3Jvc3MgcGxhdGZvcm1zLCBvcGVyYXRpbmcgc3lzdGVtcywgYW5kIHByb2dyYW1taW5nIGxhbmd1YWdlcy48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzIGludGVyb3BlcmFiaWxpdHk8L2luZGV4dGVybT48aW5kZXh0ZXJtPmludGVyb3BlcmFiaWxpdHk8aW5kZXh0ZXJtPldlYgotc2VydmljZXM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTxjb25ib2R5PgotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gV1MtSSwgcmVmZXIgdG8gdGhlaXIgV2ViIHNpdGU6ICA8eHJlZiBmb3JtYXQ9Imh0bWwiCi1ocmVmPSJodHRwOi8vd3d3LndzLWkub3JnLyIgc2NvcGU9ImV4dGVybmFsIj5odHRwOi8vd3d3LndzLWkub3JnLzwveHJlZj4uCi1UaGlzIHNpdGUgY29udGFpbnMgcmVzb3VyY2VzIHN1Y2ggYXMgYW4gb3ZlcnZpZXcgb2YgV2ViIHNlcnZpY2VzIGludGVyb3BlcmFiaWxpdHksCi11c2FnZSBzY2VuYXJpb3MsIGFuZCBzcGVjaWZpY2F0aW9ucy48L3A+Ci08cD5XUy1JIEJhc2ljIFByb2ZpbGUgaXMgYSBvdXRsaW5lIG9mIHJlcXVpcmVtZW50cyB0byB3aGljaCBXU0RMIGFuZCBXZWIgc2VydmljZQotcHJvdG9jb2wgKFNPQVAvSFRUUCkgdHJhZmZpYyBtdXN0IGNvbXBseSBpbiBvcmRlciB0byBjbGFpbSBXUy1JIGNvbmZvcm1hbmNlLgotVGhlIFdlYiBzZXJ2aWNlcyBXUy1JIHZhbGlkYXRpb24gdG9vbHMgY3VycmVudGx5IHN1cHBvcnQgV1MtSSBTaW1wbGUgU09BUAotQmluZGluZyBQcm9maWxlIDEuMCAoV1MtSSBTU0JQKSB3aGljaCBidWlsZHMgb24gdGhlIFdTLUkgQmFzaWMgUHJvZmlsZSwgYW5kCi10aGUgV1MtSSBBdHRhY2htZW50cyBQcm9maWxlIDEuMCAoV1MtSSBBUCkuIFRvIHZpZXcgdGhlIHNwZWNpZmljYXRpb25zLCByZWZlcgotdG8gdGhlIFdTLUkgV2ViIHNpdGUsIGFuZCB1bmRlciAgPHVpY29udHJvbD5EZWxpdmVyYWJsZXM8L3VpY29udHJvbD4gc2VsZWN0Ci0gPHVpY29udHJvbD5CYXNpYyBQcm9maWxlPC91aWNvbnRyb2w+LjwvcD4KLTxwPkRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBXZWIgc2VydmljZSBiZWluZyBjcmVhdGVkLCB5b3UgbWF5IG9yIG1heSBub3QKLXdhbnQgeW91ciBXZWIgc2VydmljZSB0byBjb21wbHkgd2l0aCB0aGUgV1MtSSBwcm9maWxlcy4gVGhlIGRlZmF1bHQgbGV2ZWwKLW9mIGNvbXBsaWFuY2UgaXMgdG8gZ2VuZXJhdGUgYSB3YXJuaW5nIGlmIGEgbm9uIFdTLUkgU1NCUCBjb21wbGFpbnQgV2ViIHNlcnZpY2UKLW9wdGlvbiBpcyBzZWxlY3RlZCBhbmQgdG8gaWdub3JlIGFueSBub24gV1MtSSBBUCBjb21wbGlhbnQgc2VsZWN0aW9ucy4gWW91Ci1jYW4gc2V0IHRoZSBsZXZlbCBvZiBXUy1JIGNvbXBsaWFuY2UgYXQgdGhlIHdvcmtzcGFjZSBvciBwcm9qZWN0IGxldmVsLiBUaGUKLVdlYiBzZXJ2aWNlcyB3aXphcmRzLCB0aGUgPHRtIHRtY2xhc3M9ImlibSIgdG1vd25lcj0iSUJNIENvcnBvcmF0aW9uIiB0bXR5cGU9InJlZyIKLXRyYWRlbWFyaz0iV2ViU3BoZXJlIj5XZWJTcGhlcmU8L3RtPiBydW4tdGltZSBlbnZpcm9ubWVudHMsIHRoZSBXU0RMIGVkaXRvciwKLWFuZCBvdGhlciBXZWIgc2VydmljZXMgdG9vbHMgcHJvdmlkZWQgc3VwcG9ydCBhbmQgZW5jb3VyYWdlIHRoZSBkZXZlbG9wbWVudAotb2YgV1MtSSBjb21wbGlhbmNlIHNlcnZpY2VzLjwvcD4KLTwvY29uYm9keT4KLTwvY29uY2VwdD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lvdmVyLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3Npb3Zlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjFmNjJkLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lvdmVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0iY29uY2VwdCIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJXZWIgc2VydmljZXMgaW50ZXJvcGVyYWJpbGl0eSAoV1MtSSkiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iV1MtSSBpcyBhbiBvcmdhbml6YXRpb24gZGVzaWduZWQgdG8gcHJvbW90ZSBXZWIgc2VydmljZSBpbnRlcm9wZXJhYmlsaXR5IGFjcm9zcyBwbGF0Zm9ybXMsIG9wZXJhdGluZyBzeXN0ZW1zLCBhbmQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJXUy1JIGlzIGFuIG9yZ2FuaXphdGlvbiBkZXNpZ25lZCB0byBwcm9tb3RlIFdlYiBzZXJ2aWNlIGludGVyb3BlcmFiaWxpdHkgYWNyb3NzIHBsYXRmb3Jtcywgb3BlcmF0aW5nIHN5c3RlbXMsIGFuZCBwcm9ncmFtbWluZyBsYW5ndWFnZXMuIiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzIGludGVyb3BlcmFiaWxpdHksIGludGVyb3BlcmFiaWxpdHksIFdlYiBzZXJ2aWNlcyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcyBpbnRlcm9wZXJhYmlsaXR5LCBpbnRlcm9wZXJhYmlsaXR5LCBXZWIgc2VydmljZXMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3NzdGFuZGFyZHMuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJjd3Npb3ZlciIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPldlYiBzZXJ2aWNlcyBpbnRlcm9wZXJhYmlsaXR5IChXUy1JKTwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0iY3dzaW92ZXIiPjxhIG5hbWU9ImN3c2lvdmVyIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5XZWIgc2VydmljZXMgaW50ZXJvcGVyYWJpbGl0eSAoV1MtSSk8L2gxPgotCi0KLQotPGRpdj48cD5XUy1JIGlzIGFuIG9yZ2FuaXphdGlvbiBkZXNpZ25lZCB0byBwcm9tb3RlIFdlYiBzZXJ2aWNlIGludGVyb3BlcmFiaWxpdHkKLWFjcm9zcyBwbGF0Zm9ybXMsIG9wZXJhdGluZyBzeXN0ZW1zLCBhbmQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLjwvcD4KLQotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gV1MtSSwgcmVmZXIgdG8gdGhlaXIgV2ViIHNpdGU6ICA8YSBocmVmPSJodHRwOi8vd3d3LndzLWkub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cud3MtaS5vcmcvPC9hPi4KLVRoaXMgc2l0ZSBjb250YWlucyByZXNvdXJjZXMgc3VjaCBhcyBhbiBvdmVydmlldyBvZiBXZWIgc2VydmljZXMgaW50ZXJvcGVyYWJpbGl0eSwKLXVzYWdlIHNjZW5hcmlvcywgYW5kIHNwZWNpZmljYXRpb25zLjwvcD4KLQotPHA+V1MtSSBCYXNpYyBQcm9maWxlIGlzIGEgb3V0bGluZSBvZiByZXF1aXJlbWVudHMgdG8gd2hpY2ggV1NETCBhbmQgV2ViIHNlcnZpY2UKLXByb3RvY29sIChTT0FQL0hUVFApIHRyYWZmaWMgbXVzdCBjb21wbHkgaW4gb3JkZXIgdG8gY2xhaW0gV1MtSSBjb25mb3JtYW5jZS4KLVRoZSBXZWIgc2VydmljZXMgV1MtSSB2YWxpZGF0aW9uIHRvb2xzIGN1cnJlbnRseSBzdXBwb3J0IFdTLUkgU2ltcGxlIFNPQVAKLUJpbmRpbmcgUHJvZmlsZSAxLjAgKFdTLUkgU1NCUCkgd2hpY2ggYnVpbGRzIG9uIHRoZSBXUy1JIEJhc2ljIFByb2ZpbGUsIGFuZAotdGhlIFdTLUkgQXR0YWNobWVudHMgUHJvZmlsZSAxLjAgKFdTLUkgQVApLiBUbyB2aWV3IHRoZSBzcGVjaWZpY2F0aW9ucywgcmVmZXIKLXRvIHRoZSBXUy1JIFdlYiBzaXRlLCBhbmQgdW5kZXIgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRlbGl2ZXJhYmxlczwvc3Bhbj4gc2VsZWN0Ci0gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QmFzaWMgUHJvZmlsZTwvc3Bhbj4uPC9wPgotCi08cD5EZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgV2ViIHNlcnZpY2UgYmVpbmcgY3JlYXRlZCwgeW91IG1heSBvciBtYXkgbm90Ci13YW50IHlvdXIgV2ViIHNlcnZpY2UgdG8gY29tcGx5IHdpdGggdGhlIFdTLUkgcHJvZmlsZXMuIFRoZSBkZWZhdWx0IGxldmVsCi1vZiBjb21wbGlhbmNlIGlzIHRvIGdlbmVyYXRlIGEgd2FybmluZyBpZiBhIG5vbiBXUy1JIFNTQlAgY29tcGxhaW50IFdlYiBzZXJ2aWNlCi1vcHRpb24gaXMgc2VsZWN0ZWQgYW5kIHRvIGlnbm9yZSBhbnkgbm9uIFdTLUkgQVAgY29tcGxpYW50IHNlbGVjdGlvbnMuIFlvdQotY2FuIHNldCB0aGUgbGV2ZWwgb2YgV1MtSSBjb21wbGlhbmNlIGF0IHRoZSB3b3Jrc3BhY2Ugb3IgcHJvamVjdCBsZXZlbC4gVGhlCi1XZWIgc2VydmljZXMgd2l6YXJkcywgdGhlIFdlYlNwaGVyZTxzdXA+wq48L3N1cD4gcnVuLXRpbWUgZW52aXJvbm1lbnRzLCB0aGUgV1NETCBlZGl0b3IsCi1hbmQgb3RoZXIgV2ViIHNlcnZpY2VzIHRvb2xzIHByb3ZpZGVkIHN1cHBvcnQgYW5kIGVuY291cmFnZSB0aGUgZGV2ZWxvcG1lbnQKLW9mIFdTLUkgY29tcGxpYW5jZSBzZXJ2aWNlcy48L3A+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c3N0YW5kYXJkcy5odG1sIiB0aXRsZT0iT25lIG9mIHRoZSBrZXkgYXR0cmlidXRlcyBvZiBJbnRlcm5ldCBzdGFuZGFyZHMgaXMgdGhhdCB0aGV5IGZvY3VzIG9uIHByb3RvY29scyBhbmQgbm90IG9uIGltcGxlbWVudGF0aW9ucy4gVGhlIEludGVybmV0IGlzIGNvbXBvc2VkIG9mIGhldGVyb2dlbmVvdXMgdGVjaG5vbG9naWVzIHRoYXQgc3VjY2Vzc2Z1bGx5IGludGVyb3BlcmF0ZSB0aHJvdWdoIHNoYXJlZCBwcm90b2NvbHMuIFRoaXMgcHJldmVudHMgaW5kaXZpZHVhbCB2ZW5kb3JzIGZyb20gaW1wb3NpbmcgYSBzdGFuZGFyZCBvbiB0aGUgSW50ZXJuZXQuIE9wZW4gU291cmNlIHNvZnR3YXJlIGRldmVsb3BtZW50IHBsYXlzIGEgY3J1Y2lhbCByb2xlIGluIHByZXNlcnZpbmcgdGhlIGludGVyb3BlcmFiaWxpdHkgb2YgdmVuZG9yIGltcGxlbWVudGF0aW9ucyBvZiBzdGFuZGFyZHMuIj5XZWIgc2VydmljZXMgc3RhbmRhcmRzPC9hPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c3N0YW5kYXJkcy5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzc3RhbmRhcmRzLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YjQxNzUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzc3RhbmRhcmRzLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgY29uY2VwdCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBDb25jZXB0Ly9FTiIKLSAiY29uY2VwdC5kdGQiPgotPGNvbmNlcHQgaWQ9IndlYnNlcnZpY2Vzc3RhbmRhcmRzIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPldlYiBzZXJ2aWNlcyBzdGFuZGFyZHM8L3RpdGxlPgotPHNob3J0ZGVzYz5PbmUgb2YgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIEludGVybmV0IHN0YW5kYXJkcyBpcyB0aGF0IHRoZXkgZm9jdXMKLW9uIHByb3RvY29scyBhbmQgbm90IG9uIGltcGxlbWVudGF0aW9ucy4gVGhlIEludGVybmV0IGlzIGNvbXBvc2VkIG9mIGhldGVyb2dlbmVvdXMKLXRlY2hub2xvZ2llcyB0aGF0IHN1Y2Nlc3NmdWxseSBpbnRlcm9wZXJhdGUgdGhyb3VnaCBzaGFyZWQgcHJvdG9jb2xzLiBUaGlzCi1wcmV2ZW50cyBpbmRpdmlkdWFsIHZlbmRvcnMgZnJvbSBpbXBvc2luZyBhIHN0YW5kYXJkIG9uIHRoZSBJbnRlcm5ldC4gT3BlbgotU291cmNlIHNvZnR3YXJlIGRldmVsb3BtZW50IHBsYXlzIGEgY3J1Y2lhbCByb2xlIGluIHByZXNlcnZpbmcgdGhlIGludGVyb3BlcmFiaWxpdHkKLW9mIHZlbmRvciBpbXBsZW1lbnRhdGlvbnMgb2Ygc3RhbmRhcmRzLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPnN0YW5kYXJkczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08Y29uYm9keT4KLTxwPlRoZSBmb2xsb3dpbmcgc3RhbmRhcmRzIHBsYXkga2V5IHJvbGVzIGluIFdlYiBzZXJ2aWNlczogVW5pdmVyc2FsIERlc2NyaXB0aW9uLAotRGlzY292ZXJ5IGFuZCBJbnRlZ3JhdGlvbiAoVURESSksIFdlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCksCi1XZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCksIFNPQVAsIGFuZCBXZWIgU2VydmljZXMgSW50ZXJvcGVyYWJpbGl0eQotKFdTLUkpLiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2Ugc3RhbmRhcmRzIGlzIGRlc2NyaWJlZCBpbiBGaWd1cmUgMi48L3A+Ci08cD5UaGUgVURESSBzcGVjaWZpY2F0aW9uIGRlZmluZXMgb3BlbiwgcGxhdGZvcm0taW5kZXBlbmRlbnQgc3RhbmRhcmRzIHRoYXQKLWVuYWJsZSBidXNpbmVzc2VzIHRvIHNoYXJlIGluZm9ybWF0aW9uIGluIGEgZ2xvYmFsIGJ1c2luZXNzIHJlZ2lzdHJ5LCBkaXNjb3Zlcgotc2VydmljZXMgb24gdGhlIHJlZ2lzdHJ5LCBhbmQgZGVmaW5lIGhvdyB0aGV5IGludGVyYWN0IG92ZXIgdGhlIEludGVybmV0LgotRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gVURESSwgcmVmZXIgdG8gIDx4cmVmIGZvcm1hdD0iaHRtbCIgaHJlZj0iaHR0cDovL3d3dy51ZGRpLm9yZyIKLXNjb3BlPSJleHRlcm5hbCI+d3d3LnVkZGkub3JnPC94cmVmPjwvcD4KLTxwPldTSUwgaXMgYW4gWE1MLWJhc2VkIG9wZW4gc3BlY2lmaWNhdGlvbiB0aGF0IGRlZmluZXMgYSBkaXN0cmlidXRlZCBzZXJ2aWNlCi1kaXNjb3ZlcnkgbWV0aG9kIHRoYXQgc3VwcGxpZXMgcmVmZXJlbmNlcyB0byBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBhdCB0aGUgc2VydmljZQotcHJvdmlkZXIncyBwb2ludC1vZi1vZmZlcmluZywgYnkgc3BlY2lmeWluZyBob3cgdG8gaW5zcGVjdCBhIFdlYiBzaXRlIGZvcgotYXZhaWxhYmxlIFdlYiBzZXJ2aWNlcy4mbmJzcDsgQSBXU0lMIGRvY3VtZW50IGRlZmluZXMgdGhlIGxvY2F0aW9ucyBvbiBhIFdlYgotc2l0ZSB3aGVyZSB5b3UgY2FuIGxvb2sgZm9yIFdlYiBzZXJ2aWNlIGRlc2NyaXB0aW9ucy4mbmJzcDtTaW5jZSBXU0lMIGZvY3VzZXMKLW9uIGRpc3RyaWJ1dGVkIHNlcnZpY2UgZGlzY292ZXJ5LCB0aGUgV1NJTCBzcGVjaWZpY2F0aW9uIGNvbXBsZW1lbnRzIFVEREkKLWJ5IGZhY2lsaXRhdGluZyB0aGUgZGlzY292ZXJ5IG9mIHNlcnZpY2VzIHRoYXQgYXJlIGF2YWlsYWJsZSBvbiBXZWIgc2l0ZXMKLXRoYXQgbWF5IG5vdCBiZSBsaXN0ZWQgeWV0IGluIGEgVURESSByZWdpc3RyeS4mbmJzcDtBIHNlcGFyYXRlIHRvcGljIGluIHRoaXMKLWRvY3VtZW50YXRpb24gZGlzY3Vzc2VzIHRoZSAgPHhyZWYgaHJlZj0iY3dzaWx1ZC5kaXRhIj5SZWxhdGlvbnNoaXAgYmV0d2VlbgotVURESSBhbmQgV1NJTDwveHJlZj4uJm5ic3A7IEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFdTSUwsIHJlZmVyIHRvICA8eHJlZgotaHJlZj0iaHR0cDovL3d3dy0xMDYuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWwiCi1zY29wZT0iZXh0ZXJuYWwiPiB3d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWw8L3hyZWY+PC9wPgotPHA+V1NETCBpcyBhbiBYTUwtYmFzZWQgb3BlbiBzcGVjaWZpY2F0aW9uIHRoYXQgZGVzY3JpYmVzIHRoZSBpbnRlcmZhY2VzIHRvCi1hbmQgaW5zdGFuY2VzIG9mIFdlYiBzZXJ2aWNlcyBvbiB0aGUgbmV0d29yay4gSXQgaXMgZXh0ZW5zaWJsZSwgc28gZW5kcG9pbnRzCi1jYW4gYmUgZGVzY3JpYmVkIHJlZ2FyZGxlc3Mgb2YgdGhlIG1lc3NhZ2UgZm9ybWF0cyBvciBuZXR3b3JrIHByb3RvY29scyB0aGF0Ci1hcmUgdXNlZCB0byBjb21tdW5pY2F0ZS4gQnVzaW5lc3NlcyBjYW4gbWFrZSB0aGUgV1NETCBkb2N1bWVudHMgZm9yIHRoZWlyCi1XZWIgc2VydmljZXMgYXZhaWxhYmxlIHRob3VnaCBVRERJLCBXU0lMLCBvciBieSBicm9hZGNhc3RpbmcgdGhlIFVSTHMgdG8gdGhlaXIKLVdTREwgdmlhIGVtYWlsIG9yIFdlYiBzaXRlcy4gV1NETCBpcyBkZXNjcmliZWQgYXMgYSBzZXBhcmF0ZSB0b3BpYyBpbiB0aGlzCi1kb2N1bWVudGF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBXU0RMLCByZWZlciB0byAgPHhyZWYgZm9ybWF0PSJodG1sIgotaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvd3NkbCIgc2NvcGU9ImV4dGVybmFsIj53d3cudzMub3JnL1RSL3dzZGw8L3hyZWY+PC9wPgotPHA+U09BUCBpcyBhbiBYTUwtYmFzZWQgc3RhbmRhcmQgZm9yIG1lc3NhZ2luZyBvdmVyIEhUVFAgYW5kIG90aGVyIEludGVybmV0Ci1wcm90b2NvbHMuIEl0IGlzIGEgbGlnaHR3ZWlnaHQgcHJvdG9jb2wgZm9yIHRoZSBleGNoYW5nZSBvZiBpbmZvcm1hdGlvbiBpbgotYSBkZWNlbnRyYWxpemVkLCBkaXN0cmlidXRlZCBlbnZpcm9ubWVudC4gSXQgaXMgYmFzZWQgb24gWE1MIGFuZCBjb25zaXN0cwotb2YgdGhyZWUgcGFydHM6PHVsPgotPGxpPkFuIGVudmVsb3BlIHRoYXQgZGVmaW5lcyBhIGZyYW1ld29yayBmb3IgZGVzY3JpYmluZyB3aGF0IGlzIGluIGEgbWVzc2FnZQotYW5kIGhvdyB0byBwcm9jZXNzIGl0LjwvbGk+Ci08bGk+QSBzZXQgb2YgZW5jb2RpbmcgcnVsZXMgZm9yIGV4cHJlc3NpbmcgaW5zdGFuY2VzIG9mIGFwcGxpY2F0aW9uLWRlZmluZWQKLWRhdGEgdHlwZXMuPC9saT4KLTxsaT5BIGNvbnZlbnRpb24gZm9yIHJlcHJlc2VudGluZyByZW1vdGUgcHJvY2VkdXJlIGNhbGxzIGFuZCByZXNwb25zZXMuPC9saT4KLTwvdWw+U09BUCBlbmFibGVzIHRoZSBiaW5kaW5nIGFuZCB1c2FnZSBvZiBkaXNjb3ZlcmVkIFdlYiBzZXJ2aWNlcyBieSBkZWZpbmluZwotYSBtZXNzYWdlIHBhdGggZm9yIHJvdXRpbmcgbWVzc2FnZXMuIFNPQVAgbWF5IGJlIHVzZWQgdG8gcXVlcnkgVURESSBmb3IgV2ViCi1zZXJ2aWNlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gU09BUCAxLjEgKFNPQVAgMS4yIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCi1XZWIgc2VydmljZXMgdG9vbHMpLCByZWZlciB0byAgPHhyZWYgZm9ybWF0PSJodG1sIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TT0FQIgotc2NvcGU9ImV4dGVybmFsIj53d3cudzMub3JnL1RSL1NPQVA8L3hyZWY+PC9wPgotPHA+RmlndXJlIDIuIFJlbGF0aW9uc2hpcHMgYmV0d2VlbiBTT0FQLCBVRERJLCBXU0lMIGFuZCBXU0RMLjwvcD4KLTxwPiA8aW1hZ2UgYWx0PSJGaWd1cmUgMiBpbGx1c3RyYXRlcyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIFNPQVAsIFVEREksIFdTSUwsIGFuZCBXU0RMLiIKLWhyZWY9Ii4uL2ltYWdlcy9zb2FwdWR3cy5naWYiPjwvaW1hZ2U+IDwvcD4KLTxwPkEgc2VydmljZSBwcm92aWRlciBob3N0cyBhIFdlYiBzZXJ2aWNlIGFuZCBtYWtlcyBpdCBhY2Nlc3NpYmxlIHVzaW5nIHByb3RvY29scwotc3VjaCBhcyBTT0FQL0hUVFAgb3IgU09BUC9KTVMuIFRoZSBXZWIgc2VydmljZSBpcyBkZXNjcmliZWQgYnkgYSBXU0RMIGRvY3VtZW50Ci10aGF0IGlzIHN0b3JlZCBvbiB0aGUgcHJvdmlkZXIncyBzZXJ2ZXIgb3IgaW4gYSBzcGVjaWFsIHJlcG9zaXRvcnkuIFRoZSBXU0RMCi1kb2N1bWVudCBtYXkgYmUgcmVmZXJlbmNlZCBieSB0aGUgVURESSBidXNpbmVzcyByZWdpc3RyeSBhbmQgV1NJTCBkb2N1bWVudHMuCi1UaGVzZSBjb250YWluIHBvaW50ZXJzIHRvIHRoZSBXZWIgc2VydmljZSdzIFdTREwgZmlsZXMuPC9wPgotPHA+VGhlIFdTLUkgU2ltcGxlIFNPQVAgQmluZGluZyBQcm9maWxlIGFuZCBXUy1JIEF0dGFjaG1lbnRzIFByb2ZpbGUgYXJlIG91dGxpbmVzCi1vZiByZXF1aXJlbWVudHMgdG8gd2hpY2ggV1NETCBhbmQgV2ViIHNlcnZpY2UgcHJvdG9jb2wgKFNPQVAvSFRUUCkgdHJhZmZpYwotbXVzdCBjb21wbHkgaW4gb3JkZXIgdG8gY2xhaW0gV1MtSSBjb25mb3JtYW5jZS4gVGhlIFdlYiBzZXJ2aWNlcyBXUy1JIHZhbGlkYXRpb24KLXRvb2xzIGN1cnJlbnRseSBzdXBwb3J0IFdTLUkgU2ltcGxlIFNPQVAgQmluZGluZyBQcm9maWxlIDEuMCBhbmQgdGhlIEF0dGFjaG1lbnQKLVByb2ZpbGUgMS4wLiBUbyB2aWV3IHRoZSBzcGVjaWZpY2F0aW9ucywgcmVmZXIgdG8gdGhlIFdTLUkgV2ViIHNpdGUsIGFuZCB1bmRlcgotIDx1aWNvbnRyb2w+UmVzb3VyY2VzPC91aWNvbnRyb2w+IHNlbGVjdCAgPHVpY29udHJvbD5Eb2N1bWVudGF0aW9uPC91aWNvbnRyb2w+OiA8eHJlZgotaHJlZj0iaHR0cDovL3d3dy53cy1pLm9yZyIgc2NvcGU9ImV4dGVybmFsIj5odHRwOi8vd3d3LndzLWkub3JnPC94cmVmPjwvcD4KLTxwPlNldmVyYWwgbmV3IFdlYiBzZXJ2aWNlcyBzdGFuZGFyZHMgYXJlIGFsc28gc3VwcG9ydGVkIGJ5IHRoaXMgZGV2ZWxvcG1lbnQKLWVudmlyb25tZW50LiBUaGVzZSBpbmNsdWRlOjxkbD48ZGxlbnRyeT4KLTxkdD5KQVgtUlBDPC9kdD4KLTxkZD5KQVgtUlBDIHN0YW5kcyBmb3IgPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iCi10bXR5cGU9InRtIiB0cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBBUEkgZm9yIFhNTC1iYXNlZCBSUEMsIGFsc28ga25vd24gYXMKLUpTUiAxMDEuIEl0IGlzIGEgc3BlY2lmaWNhdGlvbiB0aGF0IGRlc2NyaWJlcyA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiIKLXRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZXMKLShBUElzKSBhbmQgY29udmVudGlvbnMgZm9yIGJ1aWxkaW5nIFdlYiBzZXJ2aWNlcyBhbmQgV2ViIHNlcnZpY2UgY2xpZW50cyB0aGF0Ci11c2UgcmVtb3RlIHByb2NlZHVyZSBjYWxscyAoUlBDKSBhbmQgWE1MLiBJdCBzdGFuZGFyZGl6ZXMgdGhlIDx0bSB0bWNsYXNzPSJzcGVjaWFsIgotdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiIgdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gdG8KLVdTREwgYW5kIFdTREwgdG8gPHRtIHRtY2xhc3M9InNwZWNpYWwiIHRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iIHRtdHlwZT0idG0iCi10cmFkZW1hcms9IkphdmEiPkphdmE8L3RtPiBtYXBwaW5ncywgYW5kIHByb3ZpZGVzIHRoZSBjb3JlIEFQSXMgZm9yIGRldmVsb3BpbmcKLWFuZCBkZXBsb3lpbmcgV2ViIHNlcnZpY2VzIGFuZCBXZWIgc2VydmljZSBjbGllbnRzIG9uIHRoZSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIKLXRtb3duZXI9IlN1biBNaWNyb3N5c3RlbXMsIEluYy4iIHRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IHBsYXRmb3JtLgotRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVmZXIgdG8gdGhlIDx4cmVmIGhyZWY9Imh0dHA6Ly93d3cuamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTEwMSIKLXNjb3BlPSJleHRlcm5hbCI+b2ZmaWNpYWwgc3BlY2lmaWNhdGlvbnM8L3hyZWY+LjwvZGQ+Ci08L2RsZW50cnk+PGRsZW50cnk+Ci08ZHQ+SlNSLTEwOTwvZHQ+Ci08ZGQ+SlNSLTEwOSAoSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIFNlcnZpY2VzKSBkZWZpbmVzIHRoZSBwcm9ncmFtbWluZwotbW9kZWwgYW5kIHJ1bi10aW1lIGFyY2hpdGVjdHVyZSB0byBkZXBsb3kgYW5kIGxvb2sgdXAgV2ViIHNlcnZpY2VzIGluIHRoZQotSmF2YSBFRSBlbnZpcm9ubWVudDsgbW9yZSBzcGVjaWZpY2FsbHksIGluIHRoZSBXZWIsIEVKQiwgYW5kIENsaWVudCBBcHBsaWNhdGlvbgotY29udGFpbmVycy4gT25lIG9mIGl0cyBtYWluIGdvYWxzIGlzIHRvIGVuc3VyZSB2ZW5kb3JzJyBpbXBsZW1lbnRhdGlvbnMgaW50ZXJvcGVyYXRlLgotRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvIHRoZSBvZmZpY2lhbCBzcGVjaWZpY2F0aW9uczogPHVsPgotPGxpPjx4cmVmIGhyZWY9Imh0dHA6Ly93d3cuamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTEwOSIgc2NvcGU9ImV4dGVybmFsIgotdHlwZT0iaHRtbCI+SlNSLTEwOTwveHJlZj48L2xpPgotPGxpPjx4cmVmIGhyZWY9Imh0dHA6Ly93d3cuamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTkyMSIgc2NvcGU9ImV4dGVybmFsIgotdHlwZT0iaHRtbCI+SlNSLTkyMTwveHJlZj48L2xpPgotPC91bD48L2RkPgotPC9kbGVudHJ5PjxkbGVudHJ5PgotPGR0PldTLVM8L2R0PgotPGRkPlRoZXNlIHRvb2xzIHN1cHBvcnQgdGhlIE9BU0lTIFdlYiBTZXJ2aWNlcyBTZWN1cml0eSAxLjAgc3RhbmRhcmQuIEZvcgotbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgdmFyaW91cyBjb21wb25lbnRzIG9mIHRoaXMgc3RhbmRhcmQsIHJlZmVyIHRvOjx1bD4KLTxsaT48eHJlZiBocmVmPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXNvYXAtbWVzc2FnZS1zZWN1cml0eS0xLjAucGRmIgotc2NvcGU9ImV4dGVybmFsIiB0eXBlPSJodG1sIj5XZWIgU2VydmljZXMgU2VjdXJpdHk6IFNPQVAgTWVzc2FnZSBTZWN1cml0eQotVjEuMDwveHJlZj4gPC9saT4KLTxsaT4gPHhyZWYgaHJlZj0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy11c2VybmFtZS10b2tlbi1wcm9maWxlLTEuMC5wZGYiCi1zY29wZT0iZXh0ZXJuYWwiIHR5cGU9Imh0bWwiPldlYiBTZXJ2aWNlcyBTZWN1cml0eTogVXNlcm5hbWUgVG9rZW4gUHJvZmlsZQotVjEuMDwveHJlZj48L2xpPgotPGxpPiA8eHJlZiBocmVmPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXg1MDktdG9rZW4tcHJvZmlsZS0xLjAucGRmIgotc2NvcGU9ImV4dGVybmFsIiB0eXBlPSJodG1sIj5XZWIgU2VydmljZXMgU2VjdXJpdHk6IFguNTA5IFRva2VuIFByb2ZpbGUgVjEuMDwveHJlZj48L2xpPgotPC91bD48L2RkPgotPC9kbGVudHJ5PjwvZGw+PC9wPgotPHA+V2ViIHNlcnZpY2VzIHRvb2xpbmcgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzcGVjaWZpY2F0aW9uczo8L3A+Ci08dGFibGU+Ci08dGdyb3VwIGNvbHM9IjIiPjxjb2xzcGVjIGNvbG5hbWU9ImNvbDEiIGNvbHdpZHRoPSI5NSoiLz48Y29sc3BlYyBjb2xuYW1lPSJjb2wyIgotY29sd2lkdGg9IjEwNCoiLz4KLTx0aGVhZD4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSIgdmFsaWduPSJ0b3AiPlRlY2hub2xvZ3kgb3Igc3BlY2lmaWNhdGlvbjwvZW50cnk+Ci08ZW50cnkgY29sbmFtZT0iY29sMiIgdmFsaWduPSJ0b3AiPlZlcnNpb24gb3IgbGV2ZWwgc3VwcG9ydGVkPC9lbnRyeT4KLTwvcm93PgotPC90aGVhZD4KLTx0Ym9keT4KLTxyb3c+Ci08ZW50cnkgbmFtZWVuZD0iY29sMiIgbmFtZXN0PSJjb2wxIj48Yj5UcmFuc3BvcnRzPC9iPjwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSI+SFRUUC9IVFRQUzwvZW50cnk+Ci08ZW50cnkgY29sbmFtZT0iY29sMiI+djEuMCBhbmQgdjEuMTwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSI+Sk1TPC9lbnRyeT4KLTxlbnRyeSBjb2xuYW1lPSJjb2wyIj48L2VudHJ5PgotPC9yb3c+Ci08cm93PgotPGVudHJ5IG5hbWVlbmQ9ImNvbDIiIG5hbWVzdD0iY29sMSI+PGI+TWVzc2FnaW5nPC9iPjwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSI+U09BUCBzcGVjaWZpY2F0aW9uPC9lbnRyeT4KLTxlbnRyeSBjb2xuYW1lPSJjb2wyIj52MS4xPC9lbnRyeT4KLTwvcm93PgotPHJvdz4KLTxlbnRyeSBjb2xuYW1lPSJjb2wxIj5TT0FQIEF0dGFjaGVtZW50czwvZW50cnk+Ci08ZW50cnkgY29sbmFtZT0iY29sMiI+PC9lbnRyeT4KLTwvcm93PgotPHJvdz4KLTxlbnRyeSBuYW1lZW5kPSJjb2wyIiBuYW1lc3Q9ImNvbDEiPjxiPkRlc2NyaXB0aW9uPC9iPjwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSI+VURESTwvZW50cnk+Ci08ZW50cnkgY29sbmFtZT0iY29sMiI+djIuMDwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSI+V1NETDwvZW50cnk+Ci08ZW50cnkgY29sbmFtZT0iY29sMiI+djEuMTwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSI+V1NJTDwvZW50cnk+Ci08ZW50cnkgY29sbmFtZT0iY29sMiI+djEuMDwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgbmFtZWVuZD0iY29sMiIgbmFtZXN0PSJjb2wxIj48Yj5TZWN1cml0eTwvYj48L2VudHJ5PgotPC9yb3c+Ci08cm93PgotPGVudHJ5IGNvbG5hbWU9ImNvbDEiPldTLVNlY3VyaXR5PC9lbnRyeT4KLTxlbnRyeSBjb2xuYW1lPSJjb2wyIj5PQVNJUyBTdGFuZGFyZCAxLjA8L2VudHJ5PgotPC9yb3c+Ci08cm93PgotPGVudHJ5IG5hbWVlbmQ9ImNvbDIiIG5hbWVzdD0iY29sMSI+PGI+SW5lcm9wZXJhYmlsaXR5PC9iPjwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSI+V1MtSSBCYXNpYyBQcm9maWxlPC9lbnRyeT4KLTxlbnRyeSBjb2xuYW1lPSJjb2wyIj4xLjEuMjwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSI+V1MtSSBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGU8L2VudHJ5PgotPGVudHJ5IGNvbG5hbWU9ImNvbDIiPjEuMC4zPC9lbnRyeT4KLTwvcm93PgotPHJvdz4KLTxlbnRyeSBjb2xuYW1lPSJjb2wxIj5XUy1JIEF0dGFjaG1lbnRzIFByb2ZpbGU8L2VudHJ5PgotPGVudHJ5IGNvbG5hbWU9ImNvbDIiPjEuMDwvZW50cnk+Ci08L3Jvdz4KLTxyb3c+Ci08ZW50cnkgY29sbmFtZT0iY29sMSI+PGI+T3RoZXIgU3RhbmRhcmRzPC9iPjwvZW50cnk+Ci08ZW50cnkgY29sbmFtZT0iY29sMiI+PC9lbnRyeT4KLTwvcm93PgotPHJvdz4KLTxlbnRyeSBjb2xuYW1lPSJjb2wxIj5KQVgtUlBDPC9lbnRyeT4KLTxlbnRyeSBjb2xuYW1lPSJjb2wyIj52MS4wIGZvciBKMkVFIDEuMywgdjEuMSBmb3IgSjJFRSAxLjQgYW5kIEphdmEgRUUgMS41PC9lbnRyeT4KLTwvcm93PgotPHJvdz4KLTxlbnRyeSBjb2xuYW1lPSJjb2wxIj5KU1IgMTA5PC9lbnRyeT4KLTxlbnRyeSBjb2xuYW1lPSJjb2wyIj48L2VudHJ5PgotPC9yb3c+Ci08L3Rib2R5PgotPC90Z3JvdXA+Ci08L3RhYmxlPgotPC9jb25ib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iY3dzLmRpdGEiIHNjb3BlPSJsb2NhbCI+PGxpbmt0ZXh0PldlYiBzZXJ2aWNlcyBvdmVydmlldzwvbGlua3RleHQ+Ci08L2xpbms+Ci08bGluayBocmVmPSJjd3NpbndzYS5kaXRhIiBzY29wZT0ibG9jYWwiPjxsaW5rdGV4dD5Ub29scyBmb3IgV2ViIHNlcnZpY2VzCi1kZXZlbG9wbWVudDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iY3dzaW92ZXIuZGl0YSIgc2NvcGU9ImxvY2FsIj48bGlua3RleHQ+V2ViIHNlcnZpY2VzIGludGVyb3BlcmFiaWxpdHkKLShXUy1JKTwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSIuLi90YXNrcy90b3ZlcndzLmRpdGEiIHNjb3BlPSJsb2NhbCI+PGxpbmt0ZXh0PiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L2NvbmNlcHQ+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NzdGFuZGFyZHMuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c3N0YW5kYXJkcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjM3YTBiLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c3N0YW5kYXJkcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJjb25jZXB0IiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcyBzdGFuZGFyZHMiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iT25lIG9mIHRoZSBrZXkgYXR0cmlidXRlcyBvZiBJbnRlcm5ldCBzdGFuZGFyZHMgaXMgdGhhdCB0aGV5IGZvY3VzIG9uIHByb3RvY29scyBhbmQgbm90IG9uIGltcGxlbWVudGF0aW9ucy4gVGhlIEludGVybmV0IGlzIGNvbXBvc2VkIG9mIGhldGVyb2dlbmVvdXMgdGVjaG5vbG9naWVzIHRoYXQgc3VjY2Vzc2Z1bGx5IGludGVyb3BlcmF0ZSB0aHJvdWdoIHNoYXJlZCBwcm90b2NvbHMuIFRoaXMgcHJldmVudHMgaW5kaXZpZHVhbCB2ZW5kb3JzIGZyb20gaW1wb3NpbmcgYSBzdGFuZGFyZCBvbiB0aGUgSW50ZXJuZXQuIE9wZW4gU291cmNlIHNvZnR3YXJlIGRldmVsb3BtZW50IHBsYXlzIGEgY3J1Y2lhbCByb2xlIGluIHByZXNlcnZpbmcgdGhlIGludGVyb3BlcmFiaWxpdHkgb2YgdmVuZG9yIGltcGxlbWVudGF0aW9ucyBvZiBzdGFuZGFyZHMuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik9uZSBvZiB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgSW50ZXJuZXQgc3RhbmRhcmRzIGlzIHRoYXQgdGhleSBmb2N1cyBvbiBwcm90b2NvbHMgYW5kIG5vdCBvbiBpbXBsZW1lbnRhdGlvbnMuIFRoZSBJbnRlcm5ldCBpcyBjb21wb3NlZCBvZiBoZXRlcm9nZW5lb3VzIHRlY2hub2xvZ2llcyB0aGF0IHN1Y2Nlc3NmdWxseSBpbnRlcm9wZXJhdGUgdGhyb3VnaCBzaGFyZWQgcHJvdG9jb2xzLiBUaGlzIHByZXZlbnRzIGluZGl2aWR1YWwgdmVuZG9ycyBmcm9tIGltcG9zaW5nIGEgc3RhbmRhcmQgb24gdGhlIEludGVybmV0LiBPcGVuIFNvdXJjZSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBwcmVzZXJ2aW5nIHRoZSBpbnRlcm9wZXJhYmlsaXR5IG9mIHZlbmRvciBpbXBsZW1lbnRhdGlvbnMgb2Ygc3RhbmRhcmRzLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgc3RhbmRhcmRzIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBzdGFuZGFyZHMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzZGwuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3NvYXAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N1ZGRpLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3c2lsLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2NqYXhycGMuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY2pzcjEwOS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3Npb3Zlci5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iY3dzaW53c2EuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iY3dzaW92ZXIuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdG92ZXJ3cy5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IndlYnNlcnZpY2Vzc3RhbmRhcmRzIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+V2ViIHNlcnZpY2VzIHN0YW5kYXJkczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0id2Vic2VydmljZXNzdGFuZGFyZHMiPjxhIG5hbWU9IndlYnNlcnZpY2Vzc3RhbmRhcmRzIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5XZWIgc2VydmljZXMgc3RhbmRhcmRzPC9oMT4KLQotCi0KLTxkaXY+PHA+T25lIG9mIHRoZSBrZXkgYXR0cmlidXRlcyBvZiBJbnRlcm5ldCBzdGFuZGFyZHMgaXMgdGhhdCB0aGV5IGZvY3VzCi1vbiBwcm90b2NvbHMgYW5kIG5vdCBvbiBpbXBsZW1lbnRhdGlvbnMuIFRoZSBJbnRlcm5ldCBpcyBjb21wb3NlZCBvZiBoZXRlcm9nZW5lb3VzCi10ZWNobm9sb2dpZXMgdGhhdCBzdWNjZXNzZnVsbHkgaW50ZXJvcGVyYXRlIHRocm91Z2ggc2hhcmVkIHByb3RvY29scy4gVGhpcwotcHJldmVudHMgaW5kaXZpZHVhbCB2ZW5kb3JzIGZyb20gaW1wb3NpbmcgYSBzdGFuZGFyZCBvbiB0aGUgSW50ZXJuZXQuIE9wZW4KLVNvdXJjZSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBwcmVzZXJ2aW5nIHRoZSBpbnRlcm9wZXJhYmlsaXR5Ci1vZiB2ZW5kb3IgaW1wbGVtZW50YXRpb25zIG9mIHN0YW5kYXJkcy48L3A+Ci0KLTxwPlRoZSBmb2xsb3dpbmcgc3RhbmRhcmRzIHBsYXkga2V5IHJvbGVzIGluIFdlYiBzZXJ2aWNlczogVW5pdmVyc2FsIERlc2NyaXB0aW9uLAotRGlzY292ZXJ5IGFuZCBJbnRlZ3JhdGlvbiAoVURESSksIFdlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCksCi1XZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCksIFNPQVAsIGFuZCBXZWIgU2VydmljZXMgSW50ZXJvcGVyYWJpbGl0eQotKFdTLUkpLiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2Ugc3RhbmRhcmRzIGlzIGRlc2NyaWJlZCBpbiBGaWd1cmUgMi48L3A+Ci0KLTxwPlRoZSBVRERJIHNwZWNpZmljYXRpb24gZGVmaW5lcyBvcGVuLCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBzdGFuZGFyZHMgdGhhdAotZW5hYmxlIGJ1c2luZXNzZXMgdG8gc2hhcmUgaW5mb3JtYXRpb24gaW4gYSBnbG9iYWwgYnVzaW5lc3MgcmVnaXN0cnksIGRpc2NvdmVyCi1zZXJ2aWNlcyBvbiB0aGUgcmVnaXN0cnksIGFuZCBkZWZpbmUgaG93IHRoZXkgaW50ZXJhY3Qgb3ZlciB0aGUgSW50ZXJuZXQuCi1Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBVRERJLCByZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3d3dy51ZGRpLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPnd3dy51ZGRpLm9yZzwvYT48L3A+Ci0KLTxwPldTSUwgaXMgYW4gWE1MLWJhc2VkIG9wZW4gc3BlY2lmaWNhdGlvbiB0aGF0IGRlZmluZXMgYSBkaXN0cmlidXRlZCBzZXJ2aWNlCi1kaXNjb3ZlcnkgbWV0aG9kIHRoYXQgc3VwcGxpZXMgcmVmZXJlbmNlcyB0byBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBhdCB0aGUgc2VydmljZQotcHJvdmlkZXIncyBwb2ludC1vZi1vZmZlcmluZywgYnkgc3BlY2lmeWluZyBob3cgdG8gaW5zcGVjdCBhIFdlYiBzaXRlIGZvcgotYXZhaWxhYmxlIFdlYiBzZXJ2aWNlcy7CoCBBIFdTSUwgZG9jdW1lbnQgZGVmaW5lcyB0aGUgbG9jYXRpb25zIG9uIGEgV2ViCi1zaXRlIHdoZXJlIHlvdSBjYW4gbG9vayBmb3IgV2ViIHNlcnZpY2UgZGVzY3JpcHRpb25zLsKgU2luY2UgV1NJTCBmb2N1c2VzCi1vbiBkaXN0cmlidXRlZCBzZXJ2aWNlIGRpc2NvdmVyeSwgdGhlIFdTSUwgc3BlY2lmaWNhdGlvbiBjb21wbGVtZW50cyBVRERJCi1ieSBmYWNpbGl0YXRpbmcgdGhlIGRpc2NvdmVyeSBvZiBzZXJ2aWNlcyB0aGF0IGFyZSBhdmFpbGFibGUgb24gV2ViIHNpdGVzCi10aGF0IG1heSBub3QgYmUgbGlzdGVkIHlldCBpbiBhIFVEREkgcmVnaXN0cnkuwqBBIHNlcGFyYXRlIHRvcGljIGluIHRoaXMKLWRvY3VtZW50YXRpb24gZGlzY3Vzc2VzIHRoZSAgPGEgaHJlZj0iY3dzaWx1ZC5odG1sIj5SZWxhdGlvbnNoaXAgYmV0d2VlbiBVRERJIGFuZCBXU0lMPC9hPi7CoCBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBXU0lMLCByZWZlciB0byAgPGEgaHJlZj0iaHR0cDovL3d3dy0xMDYuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWwiIHRhcmdldD0iX2JsYW5rIj53d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy93ZWJzZXJ2aWNlcy9saWJyYXJ5L3dzLXdzaWxzcGVjLmh0bWw8L2E+PC9wPgotCi08cD5XU0RMIGlzIGFuIFhNTC1iYXNlZCBvcGVuIHNwZWNpZmljYXRpb24gdGhhdCBkZXNjcmliZXMgdGhlIGludGVyZmFjZXMgdG8KLWFuZCBpbnN0YW5jZXMgb2YgV2ViIHNlcnZpY2VzIG9uIHRoZSBuZXR3b3JrLiBJdCBpcyBleHRlbnNpYmxlLCBzbyBlbmRwb2ludHMKLWNhbiBiZSBkZXNjcmliZWQgcmVnYXJkbGVzcyBvZiB0aGUgbWVzc2FnZSBmb3JtYXRzIG9yIG5ldHdvcmsgcHJvdG9jb2xzIHRoYXQKLWFyZSB1c2VkIHRvIGNvbW11bmljYXRlLiBCdXNpbmVzc2VzIGNhbiBtYWtlIHRoZSBXU0RMIGRvY3VtZW50cyBmb3IgdGhlaXIKLVdlYiBzZXJ2aWNlcyBhdmFpbGFibGUgdGhvdWdoIFVEREksIFdTSUwsIG9yIGJ5IGJyb2FkY2FzdGluZyB0aGUgVVJMcyB0byB0aGVpcgotV1NETCB2aWEgZW1haWwgb3IgV2ViIHNpdGVzLiBXU0RMIGlzIGRlc2NyaWJlZCBhcyBhIHNlcGFyYXRlIHRvcGljIGluIHRoaXMKLWRvY3VtZW50YXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFdTREwsIHJlZmVyIHRvICA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi93c2RsIiB0YXJnZXQ9Il9ibGFuayI+d3d3LnczLm9yZy9UUi93c2RsPC9hPjwvcD4KLQotPGRpdiBjbGFzcz0icCI+U09BUCBpcyBhbiBYTUwtYmFzZWQgc3RhbmRhcmQgZm9yIG1lc3NhZ2luZyBvdmVyIEhUVFAgYW5kIG90aGVyIEludGVybmV0Ci1wcm90b2NvbHMuIEl0IGlzIGEgbGlnaHR3ZWlnaHQgcHJvdG9jb2wgZm9yIHRoZSBleGNoYW5nZSBvZiBpbmZvcm1hdGlvbiBpbgotYSBkZWNlbnRyYWxpemVkLCBkaXN0cmlidXRlZCBlbnZpcm9ubWVudC4gSXQgaXMgYmFzZWQgb24gWE1MIGFuZCBjb25zaXN0cwotb2YgdGhyZWUgcGFydHM6PHVsPgotPGxpPkFuIGVudmVsb3BlIHRoYXQgZGVmaW5lcyBhIGZyYW1ld29yayBmb3IgZGVzY3JpYmluZyB3aGF0IGlzIGluIGEgbWVzc2FnZQotYW5kIGhvdyB0byBwcm9jZXNzIGl0LjwvbGk+Ci0KLTxsaT5BIHNldCBvZiBlbmNvZGluZyBydWxlcyBmb3IgZXhwcmVzc2luZyBpbnN0YW5jZXMgb2YgYXBwbGljYXRpb24tZGVmaW5lZAotZGF0YSB0eXBlcy48L2xpPgotCi08bGk+QSBjb252ZW50aW9uIGZvciByZXByZXNlbnRpbmcgcmVtb3RlIHByb2NlZHVyZSBjYWxscyBhbmQgcmVzcG9uc2VzLjwvbGk+Ci0KLTwvdWw+Ci1TT0FQIGVuYWJsZXMgdGhlIGJpbmRpbmcgYW5kIHVzYWdlIG9mIGRpc2NvdmVyZWQgV2ViIHNlcnZpY2VzIGJ5IGRlZmluaW5nCi1hIG1lc3NhZ2UgcGF0aCBmb3Igcm91dGluZyBtZXNzYWdlcy4gU09BUCBtYXkgYmUgdXNlZCB0byBxdWVyeSBVRERJIGZvciBXZWIKLXNlcnZpY2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBTT0FQIDEuMSAoU09BUCAxLjIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUKLVdlYiBzZXJ2aWNlcyB0b29scyksIHJlZmVyIHRvICA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TT0FQIiB0YXJnZXQ9Il9ibGFuayI+d3d3LnczLm9yZy9UUi9TT0FQPC9hPjwvZGl2PgotCi08cD5GaWd1cmUgMi4gUmVsYXRpb25zaGlwcyBiZXR3ZWVuIFNPQVAsIFVEREksIFdTSUwgYW5kIFdTREwuPC9wPgotCi08cD4gPGltZyBzcmM9Ii4uL2ltYWdlcy9zb2FwdWR3cy5naWYiIGFsdD0iRmlndXJlIDIgaWxsdXN0cmF0ZXMgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBTT0FQLCBVRERJLCBXU0lMLCBhbmQgV1NETC4iIC8+IDwvcD4KLQotPHA+QSBzZXJ2aWNlIHByb3ZpZGVyIGhvc3RzIGEgV2ViIHNlcnZpY2UgYW5kIG1ha2VzIGl0IGFjY2Vzc2libGUgdXNpbmcgcHJvdG9jb2xzCi1zdWNoIGFzIFNPQVAvSFRUUCBvciBTT0FQL0pNUy4gVGhlIFdlYiBzZXJ2aWNlIGlzIGRlc2NyaWJlZCBieSBhIFdTREwgZG9jdW1lbnQKLXRoYXQgaXMgc3RvcmVkIG9uIHRoZSBwcm92aWRlcidzIHNlcnZlciBvciBpbiBhIHNwZWNpYWwgcmVwb3NpdG9yeS4gVGhlIFdTREwKLWRvY3VtZW50IG1heSBiZSByZWZlcmVuY2VkIGJ5IHRoZSBVRERJIGJ1c2luZXNzIHJlZ2lzdHJ5IGFuZCBXU0lMIGRvY3VtZW50cy4KLVRoZXNlIGNvbnRhaW4gcG9pbnRlcnMgdG8gdGhlIFdlYiBzZXJ2aWNlJ3MgV1NETCBmaWxlcy48L3A+Ci0KLTxwPlRoZSBXUy1JIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSBhbmQgV1MtSSBBdHRhY2htZW50cyBQcm9maWxlIGFyZSBvdXRsaW5lcwotb2YgcmVxdWlyZW1lbnRzIHRvIHdoaWNoIFdTREwgYW5kIFdlYiBzZXJ2aWNlIHByb3RvY29sIChTT0FQL0hUVFApIHRyYWZmaWMKLW11c3QgY29tcGx5IGluIG9yZGVyIHRvIGNsYWltIFdTLUkgY29uZm9ybWFuY2UuIFRoZSBXZWIgc2VydmljZXMgV1MtSSB2YWxpZGF0aW9uCi10b29scyBjdXJyZW50bHkgc3VwcG9ydCBXUy1JIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSAxLjAgYW5kIHRoZSBBdHRhY2htZW50Ci1Qcm9maWxlIDEuMC4gVG8gdmlldyB0aGUgc3BlY2lmaWNhdGlvbnMsIHJlZmVyIHRvIHRoZSBXUy1JIFdlYiBzaXRlLCBhbmQgdW5kZXIKLSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5SZXNvdXJjZXM8L3NwYW4+IHNlbGVjdCAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RG9jdW1lbnRhdGlvbjwvc3Bhbj46IDxhIGhyZWY9Imh0dHA6Ly93d3cud3MtaS5vcmciIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LndzLWkub3JnPC9hPjwvcD4KLQotPGRpdiBjbGFzcz0icCI+U2V2ZXJhbCBuZXcgV2ViIHNlcnZpY2VzIHN0YW5kYXJkcyBhcmUgYWxzbyBzdXBwb3J0ZWQgYnkgdGhpcyBkZXZlbG9wbWVudAotZW52aXJvbm1lbnQuIFRoZXNlIGluY2x1ZGU6PGRsPgotPGR0IGNsYXNzPSJkbHRlcm0iPkpBWC1SUEM8L2R0PgotCi08ZGQ+SkFYLVJQQyBzdGFuZHMgZm9yIEphdmHihKIgQVBJIGZvciBYTUwtYmFzZWQgUlBDLCBhbHNvIGtub3duIGFzCi1KU1IgMTAxLiBJdCBpcyBhIHNwZWNpZmljYXRpb24gdGhhdCBkZXNjcmliZXMgSmF2YSBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2VzCi0oQVBJcykgYW5kIGNvbnZlbnRpb25zIGZvciBidWlsZGluZyBXZWIgc2VydmljZXMgYW5kIFdlYiBzZXJ2aWNlIGNsaWVudHMgdGhhdAotdXNlIHJlbW90ZSBwcm9jZWR1cmUgY2FsbHMgKFJQQykgYW5kIFhNTC4gSXQgc3RhbmRhcmRpemVzIHRoZSBKYXZhIHRvCi1XU0RMIGFuZCBXU0RMIHRvIEphdmEgbWFwcGluZ3MsIGFuZCBwcm92aWRlcyB0aGUgY29yZSBBUElzIGZvciBkZXZlbG9waW5nCi1hbmQgZGVwbG95aW5nIFdlYiBzZXJ2aWNlcyBhbmQgV2ViIHNlcnZpY2UgY2xpZW50cyBvbiB0aGUgSmF2YSBwbGF0Zm9ybS4KLUZvciBtb3JlIGluZm9ybWF0aW9uIHJlZmVyIHRvIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmpjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xMDEiIHRhcmdldD0iX2JsYW5rIj5vZmZpY2lhbCBzcGVjaWZpY2F0aW9uczwvYT4uPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+SlNSLTEwOTwvZHQ+Ci0KLTxkZD5KU1ItMTA5IChJbXBsZW1lbnRpbmcgRW50ZXJwcmlzZSBXZWIgU2VydmljZXMpIGRlZmluZXMgdGhlIHByb2dyYW1taW5nCi1tb2RlbCBhbmQgcnVuLXRpbWUgYXJjaGl0ZWN0dXJlIHRvIGRlcGxveSBhbmQgbG9vayB1cCBXZWIgc2VydmljZXMgaW4gdGhlCi1KYXZhIEVFIGVudmlyb25tZW50OyBtb3JlIHNwZWNpZmljYWxseSwgaW4gdGhlIFdlYiwgRUpCLCBhbmQgQ2xpZW50IEFwcGxpY2F0aW9uCi1jb250YWluZXJzLiBPbmUgb2YgaXRzIG1haW4gZ29hbHMgaXMgdG8gZW5zdXJlIHZlbmRvcnMnIGltcGxlbWVudGF0aW9ucyBpbnRlcm9wZXJhdGUuCi1Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8gdGhlIG9mZmljaWFsIHNwZWNpZmljYXRpb25zOiA8dWw+Ci08bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MTA5IiB0YXJnZXQ9Il9ibGFuayI+SlNSLTEwOTwvYT48L2xpPgotCi08bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9OTIxIiB0YXJnZXQ9Il9ibGFuayI+SlNSLTkyMTwvYT48L2xpPgotCi08L3VsPgotPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+V1MtUzwvZHQ+Ci0KLTxkZD5UaGVzZSB0b29scyBzdXBwb3J0IHRoZSBPQVNJUyBXZWIgU2VydmljZXMgU2VjdXJpdHkgMS4wIHN0YW5kYXJkLiBGb3IKLW1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGlzIHN0YW5kYXJkLCByZWZlciB0bzo8dWw+Ci08bGk+PGEgaHJlZj0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy1zb2FwLW1lc3NhZ2Utc2VjdXJpdHktMS4wLnBkZiIgdGFyZ2V0PSJfYmxhbmsiPldlYiBTZXJ2aWNlcyBTZWN1cml0eTogU09BUCBNZXNzYWdlIFNlY3VyaXR5IFYxLjA8L2E+IDwvbGk+Ci0KLTxsaT4gPGEgaHJlZj0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy11c2VybmFtZS10b2tlbi1wcm9maWxlLTEuMC5wZGYiIHRhcmdldD0iX2JsYW5rIj5XZWIgU2VydmljZXMgU2VjdXJpdHk6IFVzZXJuYW1lIFRva2VuIFByb2ZpbGUgVjEuMDwvYT48L2xpPgotCi08bGk+IDxhIGhyZWY9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3MteDUwOS10b2tlbi1wcm9maWxlLTEuMC5wZGYiIHRhcmdldD0iX2JsYW5rIj5XZWIgU2VydmljZXMgU2VjdXJpdHk6IFguNTA5IFRva2VuIFByb2ZpbGUgVjEuMDwvYT48L2xpPgotCi08L3VsPgotPC9kZD4KLQotPC9kbD4KLTwvZGl2PgotCi08cD5XZWIgc2VydmljZXMgdG9vbGluZyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHNwZWNpZmljYXRpb25zOjwvcD4KLQotCi08ZGl2IGNsYXNzPSJ0YWJsZW5vYm9yZGVyIj48dGFibGUgc3VtbWFyeT0iIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjQiIGZyYW1lPSJib3JkZXIiIGJvcmRlcj0iMSIgcnVsZXM9ImFsbCI+Ci08dGhlYWQgYWxpZ249ImxlZnQiPgotPHRyPgotPHRoIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBpZD0iTjEwMUI0Ij5UZWNobm9sb2d5IG9yIHNwZWNpZmljYXRpb248L3RoPgotCi08dGggdmFsaWduPSJ0b3AiIHdpZHRoPSI1Mi4yNjEzMDY1MzI2NjMzMiUiIGlkPSJOMTAxQkMiPlZlcnNpb24gb3IgbGV2ZWwgc3VwcG9ydGVkPC90aD4KLQotPC90cj4KLQotPC90aGVhZD4KLQotPHRib2R5PgotPHRyPgotPHRkIGNvbHNwYW49IjIiIHZhbGlnbj0idG9wIiBoZWFkZXJzPSJOMTAxQjQgTjEwMUJDICI+PHN0cm9uZz5UcmFuc3BvcnRzPC9zdHJvbmc+PC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5IVFRQL0hUVFBTPC90ZD4KLQotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNTIuMjYxMzA2NTMyNjYzMzIlIiBoZWFkZXJzPSJOMTAxQkMgIj52MS4wIGFuZCB2MS4xPC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5KTVM8L3RkPgotCi08dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI1Mi4yNjEzMDY1MzI2NjMzMiUiIGhlYWRlcnM9Ik4xMDFCQyAiPiZuYnNwOzwvdGQ+Ci0KLTwvdHI+Ci0KLTx0cj4KLTx0ZCBjb2xzcGFuPSIyIiB2YWxpZ249InRvcCIgaGVhZGVycz0iTjEwMUI0IE4xMDFCQyAiPjxzdHJvbmc+TWVzc2FnaW5nPC9zdHJvbmc+PC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5TT0FQIHNwZWNpZmljYXRpb248L3RkPgotCi08dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI1Mi4yNjEzMDY1MzI2NjMzMiUiIGhlYWRlcnM9Ik4xMDFCQyAiPnYxLjE8L3RkPgotCi08L3RyPgotCi08dHI+Ci08dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI0Ny43Mzg2OTM0NjczMzY2OSUiIGhlYWRlcnM9Ik4xMDFCNCAiPlNPQVAgQXR0YWNoZW1lbnRzPC90ZD4KLQotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNTIuMjYxMzA2NTMyNjYzMzIlIiBoZWFkZXJzPSJOMTAxQkMgIj4mbmJzcDs8L3RkPgotCi08L3RyPgotCi08dHI+Ci08dGQgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiIGhlYWRlcnM9Ik4xMDFCNCBOMTAxQkMgIj48c3Ryb25nPkRlc2NyaXB0aW9uPC9zdHJvbmc+PC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5VRERJPC90ZD4KLQotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNTIuMjYxMzA2NTMyNjYzMzIlIiBoZWFkZXJzPSJOMTAxQkMgIj52Mi4wPC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5XU0RMPC90ZD4KLQotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNTIuMjYxMzA2NTMyNjYzMzIlIiBoZWFkZXJzPSJOMTAxQkMgIj52MS4xPC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5XU0lMPC90ZD4KLQotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNTIuMjYxMzA2NTMyNjYzMzIlIiBoZWFkZXJzPSJOMTAxQkMgIj52MS4wPC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIGNvbHNwYW49IjIiIHZhbGlnbj0idG9wIiBoZWFkZXJzPSJOMTAxQjQgTjEwMUJDICI+PHN0cm9uZz5TZWN1cml0eTwvc3Ryb25nPjwvdGQ+Ci0KLTwvdHI+Ci0KLTx0cj4KLTx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjQ3LjczODY5MzQ2NzMzNjY5JSIgaGVhZGVycz0iTjEwMUI0ICI+V1MtU2VjdXJpdHk8L3RkPgotCi08dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI1Mi4yNjEzMDY1MzI2NjMzMiUiIGhlYWRlcnM9Ik4xMDFCQyAiPk9BU0lTIFN0YW5kYXJkIDEuMDwvdGQ+Ci0KLTwvdHI+Ci0KLTx0cj4KLTx0ZCBjb2xzcGFuPSIyIiB2YWxpZ249InRvcCIgaGVhZGVycz0iTjEwMUI0IE4xMDFCQyAiPjxzdHJvbmc+SW5lcm9wZXJhYmlsaXR5PC9zdHJvbmc+PC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5XUy1JIEJhc2ljIFByb2ZpbGU8L3RkPgotCi08dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI1Mi4yNjEzMDY1MzI2NjMzMiUiIGhlYWRlcnM9Ik4xMDFCQyAiPjEuMS4yPC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5XUy1JIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZTwvdGQ+Ci0KLTx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjUyLjI2MTMwNjUzMjY2MzMyJSIgaGVhZGVycz0iTjEwMUJDICI+MS4wLjM8L3RkPgotCi08L3RyPgotCi08dHI+Ci08dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI0Ny43Mzg2OTM0NjczMzY2OSUiIGhlYWRlcnM9Ik4xMDFCNCAiPldTLUkgQXR0YWNobWVudHMgUHJvZmlsZTwvdGQ+Ci0KLTx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjUyLjI2MTMwNjUzMjY2MzMyJSIgaGVhZGVycz0iTjEwMUJDICI+MS4wPC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj48c3Ryb25nPk90aGVyIFN0YW5kYXJkczwvc3Ryb25nPjwvdGQ+Ci0KLTx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjUyLjI2MTMwNjUzMjY2MzMyJSIgaGVhZGVycz0iTjEwMUJDICI+Jm5ic3A7PC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5KQVgtUlBDPC90ZD4KLQotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNTIuMjYxMzA2NTMyNjYzMzIlIiBoZWFkZXJzPSJOMTAxQkMgIj52MS4wIGZvciBKMkVFIDEuMywgdjEuMSBmb3IgSjJFRSAxLjQgYW5kIEphdmEgRUUgMS41PC90ZD4KLQotPC90cj4KLQotPHRyPgotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDcuNzM4NjkzNDY3MzM2NjklIiBoZWFkZXJzPSJOMTAxQjQgIj5KU1IgMTA5PC90ZD4KLQotPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNTIuMjYxMzA2NTMyNjYzMzIlIiBoZWFkZXJzPSJOMTAxQkMgIj4mbmJzcDs8L3RkPgotCi08L3RyPgotCi08L3Rib2R5PgotCi08L3RhYmxlPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPHVsIGNsYXNzPSJ1bGxpbmtzIj4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzZGwuaHRtbCI+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKTwvYT48L3N0cm9uZz48YnIgLz4KLVdlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkgaXMgYSBzdGFuZGFyZCBzcGVjaWZpY2F0aW9uIGZvciBkZXNjcmliaW5nIG5ldHdvcmtlZCwgWE1MLWJhc2VkIHNlcnZpY2VzLiBJdCBwcm92aWRlcyBhIHNpbXBsZSB3YXkgZm9yIHNlcnZpY2UgcHJvdmlkZXJzIHRvIGRlc2NyaWJlIHRoZSBiYXNpYyBmb3JtYXQgb2YgcmVxdWVzdHMgdG8gdGhlaXIgc3lzdGVtcyByZWdhcmRsZXNzIG9mIHRoZSB1bmRlcmx5aW5nIHJ1bi10aW1lIGltcGxlbWVudGF0aW9uLjwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2Nzb2FwLmh0bWwiPlNPQVA8L2E+PC9zdHJvbmc+PGJyIC8+Ci1TT0FQIChmb3JtZXJseSBrbm93biBhcyBTaW1wbGUgT2JqZWN0IEFjY2VzcyBQcm90b2NvbCkgaXMgYSBsaWdodHdlaWdodCBwcm90b2NvbCBmb3IgdGhlIGV4Y2hhbmdlIG9mIGluZm9ybWF0aW9uIGluIGEgZGVjZW50cmFsaXplZCwgZGlzdHJpYnV0ZWQgZW52aXJvbm1lbnQuIEEgU09BUCBtZXNzYWdlIGlzIGEgdHJhbnNtaXNzaW9uIG9mIGluZm9ybWF0aW9uIGZyb20gYSBzZW5kZXIgdG8gYSByZWNlaXZlci4gU09BUCBtZXNzYWdlcyBjYW4gYmUgY29tYmluZWQgdG8gcGVyZm9ybSByZXF1ZXN0L3Jlc3BvbnNlIHBhdHRlcm5zLjwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9jb25jZXB0cy9jdWRkaS5odG1sIj5Vbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKTwvYT48L3N0cm9uZz48YnIgLz4KLTwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2lsLmh0bWwiPldlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKTwvYT48L3N0cm9uZz48YnIgLz4KLVdlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKSBpcyBhIHNlcnZpY2UgZGlzY292ZXJ5IG1lY2hhbmlzbSB0aGF0IGlzIGFuIGFsdGVybmF0aXZlIHRvIFVEREkgYXMgd2VsbCBhcyBjb21wbGVtZW50YXJ5IHRvIFVEREkuIFdoZW4geW91IGRpc2NvdmVyIFdlYiBzZXJ2aWNlcyB3aXRoIFVEREksIHlvdSBnbyB0byBhIGNlbnRyYWxpemVkIHJlZ2lzdHJ5LsKgIFdTSUwgaXMgYW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggdG8gV2ViIHNlcnZpY2UgZGlzY292ZXJ5LsKgIFdTSUwgYWxsb3dzIHlvdSB0byBnbyBkaXJlY3RseSB0byB0aGUgc2VydmljZSBwcm92aWRlciBhbmQgYXNrIGZvciB0aGUgc2VydmljZXMgaXQgcHJvdmlkZXMuPC9saT4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vY29uY2VwdHMvY2pheHJwYy5odG1sIj5KQVgtUlBDPC9hPjwvc3Ryb25nPjxiciAvPgotSkFYLVJQQyBzdGFuZHMgZm9yIEphdmEgQVBJIGZvciBYTUwtYmFzZWQgUlBDLCBhbHNvIGtub3duIGFzIEpTUiAxMDEuIEl0IGlzIGEgc3BlY2lmaWNhdGlvbiB0aGF0IGRlc2NyaWJlcyBKYXZhIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZXMgKEFQSXMpIGFuZCBjb252ZW50aW9ucyBmb3IgYnVpbGRpbmcgV2ViIHNlcnZpY2VzIGFuZCBXZWIgc2VydmljZSBjbGllbnRzIHRoYXQgdXNlIHJlbW90ZSBwcm9jZWR1cmUgY2FsbHMgKFJQQykgYW5kIFhNTC4gSXQgc3RhbmRhcmRpemVzIHRoZSBKYXZhIHRvIFdTREwgYW5kIFdTREwgdG8gSmF2YSBtYXBwaW5ncywgYW5kIHByb3ZpZGVzIHRoZSBjb3JlIEFQSXMgZm9yIGRldmVsb3BpbmcgV2ViIHNlcnZpY2VzIGFuZCBXZWIgc2VydmljZSBjbGllbnRzIG9uIHRoZSBKYXZhIHBsYXRmb3JtLiBPZnRlbiB1c2VkIGluIGEgZGlzdHJpYnV0ZWQgY2xpZW50L3NlcnZlciBtb2RlbCwgYW4gUlBDIG1lY2hhbmlzbSBlbmFibGVzIGNsaWVudHMgdG8gZXhlY3V0ZSBwcm9jZWR1cmVzIG9uIG90aGVyIHN5c3RlbXMuPC9saT4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vY29uY2VwdHMvY2pzcjEwOS5odG1sIj5KU1IgMTA5IC0gSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIHNlcnZpY2VzPC9hPjwvc3Ryb25nPjxiciAvPgotSlNSIDEwOSAoSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIFNlcnZpY2VzKSBkZWZpbmVzIHRoZSBwcm9ncmFtbWluZyBtb2RlbCBhbmQgcnVuLXRpbWUgYXJjaGl0ZWN0dXJlIHRvIGRlcGxveSBhbmQgbG9vayB1cCBXZWIgc2VydmljZXMgaW4gdGhlIEphdmEgRUUgZW52aXJvbm1lbnQ7IG1vcmUgc3BlY2lmaWNhbGx5LCBpbiB0aGUgV2ViLCBFSkIsIGFuZCBDbGllbnQgQXBwbGljYXRpb24gY29udGFpbmVycy4gT25lIG9mIGl0cyBtYWluIGdvYWxzIGlzIHRvIGVuc3VyZSB2ZW5kb3JzJyBpbXBsZW1lbnRhdGlvbnMgaW50ZXJvcGVyYXRlLjwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2lvdmVyLmh0bWwiPldlYiBzZXJ2aWNlcyBpbnRlcm9wZXJhYmlsaXR5IChXUy1JKTwvYT48L3N0cm9uZz48YnIgLz4KLVdTLUkgaXMgYW4gb3JnYW5pemF0aW9uIGRlc2lnbmVkIHRvIHByb21vdGUgV2ViIHNlcnZpY2UgaW50ZXJvcGVyYWJpbGl0eSBhY3Jvc3MgcGxhdGZvcm1zLCBvcGVyYXRpbmcgc3lzdGVtcywgYW5kIHByb2dyYW1taW5nIGxhbmd1YWdlcy48L2xpPgotPC91bD4KLQotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3cy5odG1sIiB0aXRsZT0iQSBXZWIgc2VydmljZSBpcyBhIHNldCBvZiByZWxhdGVkIGFwcGxpY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGludm9rZWQgb3ZlciB0aGUgSW50ZXJuZXQuIEJ1c2luZXNzZXMgY2FuIGR5bmFtaWNhbGx5IG1peCBhbmQgbWF0Y2ggV2ViIHNlcnZpY2VzIHRvIHBlcmZvcm0gY29tcGxleCB0cmFuc2FjdGlvbnMgd2l0aCBtaW5pbWFsIHByb2dyYW1taW5nLiBXZWIgc2VydmljZXMgYWxsb3cgYnV5ZXJzIGFuZCBzZWxsZXJzIGFsbCBvdmVyIHRoZSB3b3JsZCB0byBkaXNjb3ZlciBlYWNoIG90aGVyLCBjb25uZWN0IGR5bmFtaWNhbGx5LCBhbmQgZXhlY3V0ZSB0cmFuc2FjdGlvbnMgaW4gcmVhbCB0aW1lIHdpdGggbWluaW1hbCBodW1hbiBpbnRlcmFjdGlvbi4iPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvYT48L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iY3dzLmh0bWwiIHRpdGxlPSJBIFdlYiBzZXJ2aWNlIGlzIGEgc2V0IG9mIHJlbGF0ZWQgYXBwbGljYXRpb24gZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgaW52b2tlZCBvdmVyIHRoZSBJbnRlcm5ldC4gQnVzaW5lc3NlcyBjYW4gZHluYW1pY2FsbHkgbWl4IGFuZCBtYXRjaCBXZWIgc2VydmljZXMgdG8gcGVyZm9ybSBjb21wbGV4IHRyYW5zYWN0aW9ucyB3aXRoIG1pbmltYWwgcHJvZ3JhbW1pbmcuIFdlYiBzZXJ2aWNlcyBhbGxvdyBidXllcnMgYW5kIHNlbGxlcnMgYWxsIG92ZXIgdGhlIHdvcmxkIHRvIGRpc2NvdmVyIGVhY2ggb3RoZXIsIGNvbm5lY3QgZHluYW1pY2FsbHksIGFuZCBleGVjdXRlIHRyYW5zYWN0aW9ucyBpbiByZWFsIHRpbWUgd2l0aCBtaW5pbWFsIGh1bWFuIGludGVyYWN0aW9uLiI+V2ViIHNlcnZpY2VzIG92ZXJ2aWV3PC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJjd3NpbndzYS5odG1sIiB0aXRsZT0iIj5Ub29scyBmb3IgV2ViIHNlcnZpY2VzCi1kZXZlbG9wbWVudDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iY3dzaW92ZXIuaHRtbCIgdGl0bGU9IldTLUkgaXMgYW4gb3JnYW5pemF0aW9uIGRlc2lnbmVkIHRvIHByb21vdGUgV2ViIHNlcnZpY2UgaW50ZXJvcGVyYWJpbGl0eSBhY3Jvc3MgcGxhdGZvcm1zLCBvcGVyYXRpbmcgc3lzdGVtcywgYW5kIHByb2dyYW1taW5nIGxhbmd1YWdlcy4iPldlYiBzZXJ2aWNlcyBpbnRlcm9wZXJhYmlsaXR5Ci0oV1MtSSk8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi90YXNrcy90b3ZlcndzLmh0bWwiIHRpdGxlPSJVc2UgV2ViIHNlcnZpY2VzIHRvb2xzIHRvIGRpc2NvdmVyLCBjcmVhdGUsIGFuZCBwdWJsaXNoIFdlYiBzZXJ2aWNlcyB0aGF0IGFyZSBjcmVhdGVkIGZyb20gSmF2YSBiZWFucywgZW50ZXJwcmlzZSBiZWFucywgYW5kIFdTREwgZmlsZXMuIFlvdSBjYW4gY3JlYXRlIG9mIFdlYiBzZXJ2aWNlcyB1c2luZyBhIHRvcC1kb3duIGFwcHJvYWNoICh3aGljaCBzdGFydHMgd2l0aCBhIFdTREwgZmlsZSkgb3IgYSBib3R0b20tdXAgYXBwcm9hY2ggKHdoaWNoIHN0YXJ0cyB3aXRoIGEgSmF2YSBiZWFuIG9yIEVKQikuIj4gRGV2ZWxvcGluZyBXZWIKLXNlcnZpY2VzPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3N0b3Bkb3duLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3N0b3Bkb3duLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMTY3NmQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzdG9wZG93bi5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNSwgdi40MDAyLS0+Ci08IURPQ1RZUEUgY29uY2VwdCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBDb25jZXB0Ly9FTiIKLSAiY29uY2VwdC5kdGQiPgotPGNvbmNlcHQgaWQ9ImNyZWF0aW5ndG9wLWRvd253ZWJzZXJ2aWNlcyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5DcmVhdGluZyB0b3AtZG93biBXZWIgc2VydmljZXM8L3RpdGxlPgotPHNob3J0ZGVzYz5XZWIgc2VydmljZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdHdvIG1ldGhvZHM6IHRvcC1kb3duIGRldmVsb3BtZW50Ci1hbmQgYm90dG9tLXVwIGRldmVsb3BtZW50LiBUb3AtZG93biBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaW52b2x2ZXMgY3JlYXRpbmcKLWEgV2ViIHNlcnZpY2UgZnJvbSBhIFdTREwgZmlsZS48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+dG9wLWRvd24gV2ViIHNlcnZpY2VzPGluZGV4dGVybT5jcmVhdGluZzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPnRvcC1kb3duPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTxjb25ib2R5PgotPHA+V2hlbiBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlIHVzaW5nIGEgdG9wLWRvd24gYXBwcm9hY2gsIGZpcnN0IHlvdSBkZXNpZ24KLXRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2ViIHNlcnZpY2UgYnkgY3JlYXRpbmcgYSBXU0RMIGZpbGUuIFlvdSBjYW4gZG8KLXRoaXMgdXNpbmcgdGhlIFdTREwgRWRpdG9yLiBZb3UgY2FuIHRoZW4gdXNlIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkIHRvIGNyZWF0ZQotdGhlIFdlYiBzZXJ2aWNlIGFuZCBza2VsZXRvbiA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiIKLXRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IGNsYXNzZXMgdG8gd2hpY2ggeW91IGNhbiBhZGQgdGhlIHJlcXVpcmVkCi1jb2RlLjwvcD4KLTxwPkFsdGhvdWdoIGJvdHRvbS11cCBXZWIgc2VydmljZSBkZXZlbG9wbWVudCBtYXkgYmUgZmFzdGVyIGFuZCBlYXNpZXIsIGVzcGVjaWFsbHkKLWlmIHlvdSBhcmUgbmV3IHRvIFdlYiBzZXJ2aWNlcywgdGhlIHRvcC1kb3duIGFwcHJvYWNoIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkKLW9mIGNyZWF0aW5nIGEgV2ViIHNlcnZpY2UuIEJ5IGNyZWF0aW5nIHRoZSBXU0RMIGZpbGUgZmlyc3QgeW91IHdpbGwgdWx0aW1hdGVseQotaGF2ZSBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgV2ViIHNlcnZpY2UsIGFuZCBjYW4gZWxpbWluYXRlIGludGVyb3BlcmFiaWxpdHkKLWlzc3VlcyB0aGF0IG1heSBhcmlzZSB3aGVuIGNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgdXNpbmcgdGhlIGJvdHRvbS11cCBtZXRob2QuPC9wPgotPC9jb25ib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iY3dzLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9ImN3c2lud3NhLmRpdGEiPjwvbGluaz4KLTxsaW5rIGhyZWY9ImN3c2J0bXVwLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBUYXNrczwvdGl0bGU+Ci08bGluayBocmVmPSIuLi90YXNrcy90b3ZlcndzLmRpdGEiIHNjb3BlPSJsb2NhbCI+PGxpbmt0ZXh0PiBEZXZlbG9waW5nIFdlYgotc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L2NvbmNlcHQ+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3N0b3Bkb3duLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3N0b3Bkb3duLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5OTNjZGUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzdG9wZG93bi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9ImNvbmNlcHQiIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iQ3JlYXRpbmcgdG9wLWRvd24gV2ViIHNlcnZpY2VzIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcyBjYW4gYmUgY3JlYXRlZCB1c2luZyB0d28gbWV0aG9kczogdG9wLWRvd24gZGV2ZWxvcG1lbnQgYW5kIGJvdHRvbS11cCBkZXZlbG9wbWVudC4gVG9wLWRvd24gV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGludm9sdmVzIGNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgZnJvbSBhIFdTREwgZmlsZS4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iV2ViIHNlcnZpY2VzIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHR3byBtZXRob2RzOiB0b3AtZG93biBkZXZlbG9wbWVudCBhbmQgYm90dG9tLXVwIGRldmVsb3BtZW50LiBUb3AtZG93biBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaW52b2x2ZXMgY3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgV1NETCBmaWxlLiIgLz4KLTxtZXRhIGNvbnRlbnQ9InRvcC1kb3duIFdlYiBzZXJ2aWNlcywgY3JlYXRpbmcsIFdlYiBzZXJ2aWNlcywgdG9wLWRvd24iIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJ0b3AtZG93biBXZWIgc2VydmljZXMsIGNyZWF0aW5nLCBXZWIgc2VydmljZXMsIHRvcC1kb3duIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9ImN3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3NpbndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJjd3NidG11cC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90b3ZlcndzLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0iY3JlYXRpbmd0b3AtZG93bndlYnNlcnZpY2VzIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+Q3JlYXRpbmcgdG9wLWRvd24gV2ViIHNlcnZpY2VzPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJjcmVhdGluZ3RvcC1kb3dud2Vic2VydmljZXMiPjxhIG5hbWU9ImNyZWF0aW5ndG9wLWRvd253ZWJzZXJ2aWNlcyI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+Q3JlYXRpbmcgdG9wLWRvd24gV2ViIHNlcnZpY2VzPC9oMT4KLQotCi0KLTxkaXY+PHA+V2ViIHNlcnZpY2VzIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHR3byBtZXRob2RzOiB0b3AtZG93biBkZXZlbG9wbWVudAotYW5kIGJvdHRvbS11cCBkZXZlbG9wbWVudC4gVG9wLWRvd24gV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGludm9sdmVzIGNyZWF0aW5nCi1hIFdlYiBzZXJ2aWNlIGZyb20gYSBXU0RMIGZpbGUuPC9wPgotCi08cD5XaGVuIGNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgdXNpbmcgYSB0b3AtZG93biBhcHByb2FjaCwgZmlyc3QgeW91IGRlc2lnbgotdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXZWIgc2VydmljZSBieSBjcmVhdGluZyBhIFdTREwgZmlsZS4gWW91IGNhbiBkbwotdGhpcyB1c2luZyB0aGUgV1NETCBFZGl0b3IuIFlvdSBjYW4gdGhlbiB1c2UgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmQgdG8gY3JlYXRlCi10aGUgV2ViIHNlcnZpY2UgYW5kIHNrZWxldG9uIEphdmHihKIgY2xhc3NlcyB0byB3aGljaCB5b3UgY2FuIGFkZCB0aGUgcmVxdWlyZWQKLWNvZGUuPC9wPgotCi08cD5BbHRob3VnaCBib3R0b20tdXAgV2ViIHNlcnZpY2UgZGV2ZWxvcG1lbnQgbWF5IGJlIGZhc3RlciBhbmQgZWFzaWVyLCBlc3BlY2lhbGx5Ci1pZiB5b3UgYXJlIG5ldyB0byBXZWIgc2VydmljZXMsIHRoZSB0b3AtZG93biBhcHByb2FjaCBpcyB0aGUgcmVjb21tZW5kZWQgd2F5Ci1vZiBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlLiBCeSBjcmVhdGluZyB0aGUgV1NETCBmaWxlIGZpcnN0IHlvdSB3aWxsIHVsdGltYXRlbHkKLWhhdmUgbW9yZSBjb250cm9sIG92ZXIgdGhlIFdlYiBzZXJ2aWNlLCBhbmQgY2FuIGVsaW1pbmF0ZSBpbnRlcm9wZXJhYmlsaXR5Ci1pc3N1ZXMgdGhhdCBtYXkgYXJpc2Ugd2hlbiBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBib3R0b20tdXAgbWV0aG9kLjwvcD4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzLmh0bWwiIHRpdGxlPSJBIFdlYiBzZXJ2aWNlIGlzIGEgc2V0IG9mIHJlbGF0ZWQgYXBwbGljYXRpb24gZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgaW52b2tlZCBvdmVyIHRoZSBJbnRlcm5ldC4gQnVzaW5lc3NlcyBjYW4gZHluYW1pY2FsbHkgbWl4IGFuZCBtYXRjaCBXZWIgc2VydmljZXMgdG8gcGVyZm9ybSBjb21wbGV4IHRyYW5zYWN0aW9ucyB3aXRoIG1pbmltYWwgcHJvZ3JhbW1pbmcuIFdlYiBzZXJ2aWNlcyBhbGxvdyBidXllcnMgYW5kIHNlbGxlcnMgYWxsIG92ZXIgdGhlIHdvcmxkIHRvIGRpc2NvdmVyIGVhY2ggb3RoZXIsIGNvbm5lY3QgZHluYW1pY2FsbHksIGFuZCBleGVjdXRlIHRyYW5zYWN0aW9ucyBpbiByZWFsIHRpbWUgd2l0aCBtaW5pbWFsIGh1bWFuIGludGVyYWN0aW9uLiI+V2ViIHNlcnZpY2VzIG92ZXJ2aWV3PC9hPjwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJjd3MuaHRtbCIgdGl0bGU9IkEgV2ViIHNlcnZpY2UgaXMgYSBzZXQgb2YgcmVsYXRlZCBhcHBsaWNhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBpbnZva2VkIG92ZXIgdGhlIEludGVybmV0LiBCdXNpbmVzc2VzIGNhbiBkeW5hbWljYWxseSBtaXggYW5kIG1hdGNoIFdlYiBzZXJ2aWNlcyB0byBwZXJmb3JtIGNvbXBsZXggdHJhbnNhY3Rpb25zIHdpdGggbWluaW1hbCBwcm9ncmFtbWluZy4gV2ViIHNlcnZpY2VzIGFsbG93IGJ1eWVycyBhbmQgc2VsbGVycyBhbGwgb3ZlciB0aGUgd29ybGQgdG8gZGlzY292ZXIgZWFjaCBvdGhlciwgY29ubmVjdCBkeW5hbWljYWxseSwgYW5kIGV4ZWN1dGUgdHJhbnNhY3Rpb25zIGluIHJlYWwgdGltZSB3aXRoIG1pbmltYWwgaHVtYW4gaW50ZXJhY3Rpb24uIj5XZWIgc2VydmljZXMgb3ZlcnZpZXc8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9ImN3c2lud3NhLmh0bWwiIHRpdGxlPSIiPlRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9ImN3c2J0bXVwLmh0bWwiIHRpdGxlPSJXZWIgc2VydmljZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdHdvIG1ldGhvZHM6IHRvcC1kb3duIGRldmVsb3BtZW50IGFuZCBib3R0b20tdXAgZGV2ZWxvcG1lbnQuIEJvdHRvbS11cCBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaW52b2x2ZXMgY3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIG9yIGVudGVycHJpc2UgYmVhbi4iPkNyZWF0aW5nIGJvdHRvbS11cCBXZWIgc2VydmljZXM8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi90YXNrcy90b3ZlcndzLmh0bWwiIHRpdGxlPSJVc2UgV2ViIHNlcnZpY2VzIHRvb2xzIHRvIGRpc2NvdmVyLCBjcmVhdGUsIGFuZCBwdWJsaXNoIFdlYiBzZXJ2aWNlcyB0aGF0IGFyZSBjcmVhdGVkIGZyb20gSmF2YSBiZWFucywgZW50ZXJwcmlzZSBiZWFucywgYW5kIFdTREwgZmlsZXMuIFlvdSBjYW4gY3JlYXRlIG9mIFdlYiBzZXJ2aWNlcyB1c2luZyBhIHRvcC1kb3duIGFwcHJvYWNoICh3aGljaCBzdGFydHMgd2l0aCBhIFdTREwgZmlsZSkgb3IgYSBib3R0b20tdXAgYXBwcm9hY2ggKHdoaWNoIHN0YXJ0cyB3aXRoIGEgSmF2YSBiZWFuIG9yIEVKQikuIj4gRGV2ZWxvcGluZyBXZWIKLXNlcnZpY2VzPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9pbWFnZXMvcm9sZXMuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvaW1hZ2VzL3JvbGVzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVlOTk4Ny4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9pbWFnZXMvcm9sZXMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvaW1hZ2VzL3NvYXB1ZHdzLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2ltYWdlcy9zb2FwdWR3cy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYjQyZjUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvaW1hZ2VzL3NvYXB1ZHdzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2luZGV4L192LmNmcyBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2luZGV4L192LmNmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2ZTBlNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9pbmRleC9fdi5jZnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9pbmRleC9kZWxldGFibGUgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9pbmRleC9kZWxldGFibGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5M2Y0NzAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvaW5kZXgvZGVsZXRhYmxlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2M5Zjk3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfY29udHJpYnV0aW9ucworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotI1RoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZTsgZG8gbm90IGVkaXQuDQotI1dlZCBNYXkgMTQgMTc6MTQ6NDcgRURUIDIwMDgNCi1vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXI9b3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyXG4xLjAuNDAwLnF1YWxpZmllcg0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfZGVwZW5kZW5jaWVzIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kZXBlbmRlbmNpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MjJjNmEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kZXBlbmRlbmNpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSNUaGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGU7IGRvIG5vdCBlZGl0Lg0KLSNXZWQgTWF5IDE0IDE3OjE0OjQ3IEVEVCAyMDA4DQotbHVjZW5lPTEuOS4xLnYyMDA4MDMwNjE4MTENCi1hbmFseXplcj1vcmcuZWNsaXBzZS5oZWxwLmJhc2VcIzMuMy4xMDAudjIwMDgwNDI1P2xvY2FsZVw9ZW4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9pbmRleC9pbmRleGVkX2RvY3MgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9pbmRleC9pbmRleGVkX2RvY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MjQ1NTMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kb2NzCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotI1RoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZTsgZG8gbm90IGVkaXQuDQotI1dlZCBNYXkgMTQgMTc6MTQ6NDcgRURUIDIwMDgNCi0vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2J0bXVwLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N1ZGRpLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RkaXNjb3YuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3N0b3Bkb3duLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLi4vb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NkbHZhbC5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3R3c3ByZWYuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NkbC5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLi4vb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90bW9uaXRvci5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90Z2Vud3NpbC5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2Nzb2FwLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R0ZXN0d3NkbC5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yd3NkbHByZWYuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzd2l6cHJlZi5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NzdGFuZGFyZHMuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcnNlcnZwb2xwcmVmLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLi4vb3JnLmVjbGlwc2UuanN0LndzLmF4aXMudWkuZG9jLnVzZXIvdG9waWNzL3R0b21jYXRzZXJ2Lmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY2pheHJwYy5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lvdmVyLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3JheGlzcHJlZi5odG1sPTANCi0vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9jb25jZXB0cy9jd3NkbHVkLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvLi4vb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NpdmFsLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaWwuaHRtbD0wDQotL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NpbHVkLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY2pzcjEwOS5odG1sPTANCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9pbmRleC9zZWdtZW50cyBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2luZGV4L3NlZ21lbnRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjYzNDJhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2luZGV4L3NlZ21lbnRzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvbXlwbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvbXlwbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDFmYWI4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL215cGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4zIj8+Ci08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PiAKLTwhLS0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAtLT4KLTxwbHVnaW4+Ci0gIAotICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI+Ci0gICAgICAgPHRvYyBmaWxlPSJ3ZWJzZXJ2aWNlX3RvYy54bWwiIC8+Ci0gICAgICAgPGluZGV4IHBhdGg9ImluZGV4LyIvPgotICAgPC9leHRlbnNpb24+Ci0gICAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLmluZGV4Ij4KLSAgICAgIDxpbmRleCBmaWxlPSJvcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXJpbmRleC54bWwiLz4KLSAgICAgIDwvZXh0ZW5zaW9uPgotICAgICAgICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5iYXNlLmx1Y2VuZVNlYXJjaFBhcnRpY2lwYW50cyI+Ci0gICAgICA8YmluZGluZyBwYXJ0aWNpcGFudElkPSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UueGh0bWwiLz4KLSAgIDwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyLm1hcGxpc3QgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIubWFwbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI2Njk5MS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIubWFwbGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPG1hcGxpc3QgdmVyc2lvbj0iMy42LjIiPgotICA8bmF2PgotICAgIDxtYXAgZmlsZT0id2Vic2VydmljZV90b2MuZGl0YW1hcCIvPgotICA8L25hdj4KLSAgPGxpbms+Ci0gICAgPG1hcCBmaWxlPSJ3ZWJzZXJ2aWNlX3RvYy5kaXRhbWFwIi8+Ci0gIDwvbGluaz4KLTwvbWFwbGlzdD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlcmluZGV4Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXJpbmRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjk1MDVlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlcmluZGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBodG1sCi0gIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iKEMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAwNyIgLz4KLTxtZXRhIG5hbWU9InNlY3VyaXR5IiBjb250ZW50PSJwdWJsaWMiIC8+Ci08bWV0YSBuYW1lPSJSb2JvdHMiIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgbmFtZT0iREMuRm9ybWF0IiBjb250ZW50PSJYSFRNTCIgLz4KLTwhLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTGljZW5zZWQgTWF0ZXJpYWxzIFByb3BlcnR5IG9mIElCTSAtLT4KLTwhLS0gVVMgR292ZXJubWVudCBVc2VycyBSZXN0cmljdGVkIFJpZ2h0cyAtLT4KLTwhLS0gVXNlLCBkdXBsaWNhdGlvbiBvciBkaXNjbG9zdXJlIHJlc3RyaWN0ZWQgYnkgLS0+Ci08IS0tIEdTQSBBRFAgU2NoZWR1bGUgQ29udHJhY3Qgd2l0aCBJQk0gQ29ycC4gLS0+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJpYm1kaXRhLmNzcyIgLz4KLTx0aXRsZT5JbmRleDwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxoMT5JbmRleDwvaDE+Ci08YSBuYW1lPSJJRFgwXzQyIiBocmVmPSIjSURYMV80MiI+QjwvYT4KLTxhIG5hbWU9IklEWDBfNDkiIGhyZWY9IiNJRFgxXzQ5Ij5JPC9hPgotPGEgbmFtZT0iSURYMF80QSIgaHJlZj0iI0lEWDFfNEEiPko8L2E+Ci08YSBuYW1lPSJJRFgwXzUwIiBocmVmPSIjSURYMV81MCI+UDwvYT4KLTxhIG5hbWU9IklEWDBfNTMiIGhyZWY9IiNJRFgxXzUzIj5TPC9hPgotPGEgbmFtZT0iSURYMF81NCIgaHJlZj0iI0lEWDFfNTQiPlQ8L2E+Ci08YSBuYW1lPSJJRFgwXzU1IiBocmVmPSIjSURYMV81NSI+VTwvYT4KLTxhIG5hbWU9IklEWDBfNTciIGhyZWY9IiNJRFgxXzU3Ij5XPC9hPgotPGhyPjwvaHI+Ci08c3Ryb25nPjxhIG5hbWU9IklEWDFfNDIiIGhyZWY9IiNJRFgwXzQyIj5CPC9hPjwvc3Ryb25nPgotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPmJvdHRvbS11cCBXZWIgc2VydmljZXMKLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jd3NidG11cC5odG1sI2NyZWF0aW5nYm90dG9tLXVwd2Vic2VydmljZXMiPm92ZXJ2aWV3PC9hPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTxzdHJvbmc+PGEgbmFtZT0iSURYMV80OSIgaHJlZj0iI0lEWDBfNDkiPkk8L2E+PC9zdHJvbmc+Ci08dWwgY2xhc3M9ImluZGV4bGlzdCI+Ci08bGk+aW50ZXJvcGVyYWJpbGl0eQotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9ImNvbmNlcHRzL2N3c2lvdmVyLmh0bWwjY3dzaW92ZXIiPldlYiBzZXJ2aWNlIHRyYWZmaWMgY29tcGxpYW5jZTwvYT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08c3Ryb25nPjxhIG5hbWU9IklEWDFfNEEiIGhyZWY9IiNJRFgwXzRBIj5KPC9hPjwvc3Ryb25nPgotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPkpBWC1SUEMKLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jamF4cnBjLmh0bWwjY2pheHJwYyI+V2ViIHNlcnZpY2VzPC9hPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPGxpPjxhIGhyZWY9ImNvbmNlcHRzL2Nqc3IxMDkuaHRtbCNjanNyMTA5Ij5KU1IgMTA5IEphdmEgc3BlY2lmaWNhdGlvbjwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0iY29uY2VwdHMvY2pzcjEwOS5odG1sI2Nqc3IxMDkiPkpTUiA5MjEgSmF2YSBzcGVjaWZpY2F0aW9uPC9hPgotPC9saT4KLTwvdWw+Ci08c3Ryb25nPjxhIG5hbWU9IklEWDFfNTAiIGhyZWY9IiNJRFgwXzUwIj5QPC9hPjwvc3Ryb25nPgotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPnByZWZlcmVuY2VzCi08dWwgY2xhc3M9ImluZGV4bGlzdCI+Ci08bGk+PGEgaHJlZj0icmVmL3J3c3ByZWYuaHRtbCNyd3NwcmVmIj5XZWIgc2VydmljZXM8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPHN0cm9uZz48YSBuYW1lPSJJRFgxXzUzIiBocmVmPSIjSURYMF81MyI+UzwvYT48L3N0cm9uZz4KLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT5TT0FQCi08dWwgY2xhc3M9ImluZGV4bGlzdCI+Ci08bGk+PGEgaHJlZj0iY29uY2VwdHMvY3NvYXAuaHRtbCNjc29hcCI+b3ZlcnZpZXc8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPHN0cm9uZz48YSBuYW1lPSJJRFgxXzU0IiBocmVmPSIjSURYMF81NCI+VDwvYT48L3N0cm9uZz4KLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT50b3AtZG93biBXZWIgc2VydmljZXMKLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jd3N0b3Bkb3duLmh0bWwjY3JlYXRpbmd0b3AtZG93bndlYnNlcnZpY2VzIj5jcmVhdGluZzwvYT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08c3Ryb25nPjxhIG5hbWU9IklEWDFfNTUiIGhyZWY9IiNJRFgwXzU1Ij5VPC9hPjwvc3Ryb25nPgotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPlVEREkKLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jd3NpbHVkLmh0bWwjY3dzaWx1ZCI+cmVsYXRpb25zaGlwIHdpdGggV1NJTDwvYT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08c3Ryb25nPjxhIG5hbWU9IklEWDFfNTciIGhyZWY9IiNJRFgwXzU3Ij5XPC9hPjwvc3Ryb25nPgotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPldlYiBzZXJ2aWNlcwotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9ImNvbmNlcHRzL2N3c2J0bXVwLmh0bWwjY3JlYXRpbmdib3R0b20tdXB3ZWJzZXJ2aWNlcyI+Ym90dG9tLXVwPC9hPgotPC9saT4KLTxsaT5jcmVhdGluZwotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9InRhc2tzL3RvdmVyd3MuaHRtbCN0b3ZlcndzIj5vdmVydmlldzwvYT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTxsaT48YSBocmVmPSJ0YXNrcy90d3NpY29tcGx5Lmh0bWwjdHdzaWNvbXBseSI+aW50ZXJvcGVyYWJpbGl0eSBjb21wbGlhbmNlPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9janNyMTA5Lmh0bWwjY2pzcjEwOSI+SmF2YSBzcGVjaWZpY2F0aW9uIHJlcXVlc3RzPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jamF4cnBjLmh0bWwjY2pheHJwYyI+SkFYLVJQQzwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0iY29uY2VwdHMvY3dzLmh0bWwjY3dzIj5vdmVydmlldzwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0icmVmL3J3c3ByZWYuaHRtbCNyd3NwcmVmIj5wcmVmZXJlbmNlczwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0iY29uY2VwdHMvY3NvYXAuaHRtbCNjc29hcCI+U09BUDwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0iY29uY2VwdHMvY3dzc3RhbmRhcmRzLmh0bWwjd2Vic2VydmljZXNzdGFuZGFyZHMiPnN0YW5kYXJkczwvYT4KLTwvbGk+Ci08bGk+PGEgaHJlZj0iY29uY2VwdHMvY3dzaW53c2EuaHRtbCNjd3NpbndzYSI+dG9vbHMgb3ZlcnZpZXc8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9ImNvbmNlcHRzL2N3c3RvcGRvd24uaHRtbCNjcmVhdGluZ3RvcC1kb3dud2Vic2VydmljZXMiPnRvcC1kb3duPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jd3NkbC5odG1sI2N3c2RsIj5XU0RMPC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJyZWYvcndzZGwuaHRtbCNyd3NkbCI+V1NETCByZWZlcmVuY2U8L2E+Ci08L2xpPgotPGxpPjxhIGhyZWY9ImNvbmNlcHRzL2N3c2lsLmh0bWwjY3dzaWwiPldTSUw8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08bGk+V2ViIHNlcnZpY2VzIGludGVyb3BlcmFiaWxpdHkKLTx1bCBjbGFzcz0iaW5kZXhsaXN0Ij4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jd3Npb3Zlci5odG1sI2N3c2lvdmVyIj50cmFmZmljIGNvbXBsaWFuY2U8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08bGk+V1NETAotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9ImNvbmNlcHRzL2N3c2RsLmh0bWwjY3dzZGwiPm92ZXJ2aWV3PC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJyZWYvcndzZGwuaHRtbCNyd3NkbCI+cmVmZXJlbmNlPC9hPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPGxpPldTSQotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9InRhc2tzL3R3c2ljb21wbHkuaHRtbCN0d3NpY29tcGx5Ij5zZXR0aW5nIGNvbXBsaWFuY2U8L2E+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08bGk+V1NJTAotPHVsIGNsYXNzPSJpbmRleGxpc3QiPgotPGxpPjxhIGhyZWY9ImNvbmNlcHRzL2N3c2lsLmh0bWwjY3dzaWwiPm92ZXJ2aWV3PC9hPgotPC9saT4KLTxsaT48YSBocmVmPSJjb25jZXB0cy9jd3NpbHVkLmh0bWwjY3dzaWx1ZCI+cmVsYXRpb25zaGlwIHdpdGggVURESTwvYT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyaW5kZXgueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyaW5kZXgueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzhkZTgwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlcmluZGV4LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPGluZGV4PgotICA8ZW50cnkga2V5d29yZD0iV2ViIHNlcnZpY2VzIj4KLSAgICA8ZW50cnkga2V5d29yZD0ib3ZlcnZpZXciPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2N3cy5odG1sI2N3cyIgdGl0bGU9IldlYiBzZXJ2aWNlcyBvdmVydmlldyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InN0YW5kYXJkcyI+Ci0gICAgICA8dG9waWMgaHJlZj0iY29uY2VwdHMvY3dzc3RhbmRhcmRzLmh0bWwjd2Vic2VydmljZXNzdGFuZGFyZHMiIHRpdGxlPSJXZWIgc2VydmljZXMgc3RhbmRhcmRzIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iV1NETCI+Ci0gICAgICA8dG9waWMgaHJlZj0iY29uY2VwdHMvY3dzZGwuaHRtbCNjd3NkbCIgdGl0bGU9IldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJXU0RMIHJlZmVyZW5jZSI+Ci0gICAgICA8dG9waWMgaHJlZj0icmVmL3J3c2RsLmh0bWwjcndzZGwiIHRpdGxlPSJXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIHJlZmVyZW5jZSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9IlNPQVAiPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2Nzb2FwLmh0bWwjY3NvYXAiIHRpdGxlPSJTT0FQIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iV1NJTCI+Ci0gICAgICA8dG9waWMgaHJlZj0iY29uY2VwdHMvY3dzaWwuaHRtbCNjd3NpbCIgdGl0bGU9IldlYiBTZXJ2aWNlcyBJbnNwZWN0aW9uIExhbmd1YWdlIChXU0lMKSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9IkpBWC1SUEMiPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2NqYXhycGMuaHRtbCNjamF4cnBjIiB0aXRsZT0iSkFYLVJQQyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9IkphdmEgc3BlY2lmaWNhdGlvbiByZXF1ZXN0cyI+Ci0gICAgICA8dG9waWMgaHJlZj0iY29uY2VwdHMvY2pzcjEwOS5odG1sI2Nqc3IxMDkiIHRpdGxlPSJKU1IgMTA5IC0gSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIHNlcnZpY2VzIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0idG9wLWRvd24iPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2N3c3RvcGRvd24uaHRtbCNjcmVhdGluZ3RvcC1kb3dud2Vic2VydmljZXMiIHRpdGxlPSJDcmVhdGluZyB0b3AtZG93biBXZWIgc2VydmljZXMiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJib3R0b20tdXAiPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2N3c2J0bXVwLmh0bWwjY3JlYXRpbmdib3R0b20tdXB3ZWJzZXJ2aWNlcyIgdGl0bGU9IkNyZWF0aW5nIGJvdHRvbS11cCBXZWIgc2VydmljZXMiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJ0b29scyBvdmVydmlldyI+Ci0gICAgICA8dG9waWMgaHJlZj0iY29uY2VwdHMvY3dzaW53c2EuaHRtbCNjd3NpbndzYSIgdGl0bGU9IlRvb2xzIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJwcmVmZXJlbmNlcyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHdzcHJlZi5odG1sI3NldHRpbmd3ZWJzZXJ2aWNlc3ByZWZlcmVuY2VzIiB0aXRsZT0iU2V0dGluZyBXZWIgc2VydmljZXMgcHJlZmVyZW5jZXMiLz4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJBeGlzIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InJlZi9yYXhpc3ByZWYuaHRtbCNheGlzZW1pdHRlcnByZWZlcmVuY2VzIiB0aXRsZT0iQXhpcyBlbWl0dGVyIHByZWZlcmVuY2VzIi8+Ci0gICAgICA8L2VudHJ5PgotICAgICAgPGVudHJ5IGtleXdvcmQ9IndpemFyZHMiPgotICAgICAgICA8dG9waWMgaHJlZj0icmVmL3J3c3dpenByZWYuaHRtbCN3ZWJzZXJ2aWNlc3dpemFyZHNiYXNpY3ByZWZlcmVuY2VzIiB0aXRsZT0iV2ViIHNlcnZpY2VzIHdpemFyZHMgYmFzaWMgcHJlZmVyZW5jZXMiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgICA8ZW50cnkga2V5d29yZD0iV1NETCI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJyZWYvcndzZGxwcmVmLmh0bWwjd3NkbGZpbGVzcHJlZmVyZW5jZXMiIHRpdGxlPSJXU0RMIGZpbGUgcHJlZmVyZW5jZXMiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgICA8ZW50cnkga2V5d29yZD0iV1MtSSI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJyZWYvcnNlcnZwb2xwcmVmLmh0bWwjc2VydmljZXBvbGljaWVzcHJlZmVyZW5jZXMiIHRpdGxlPSJXUy1JIGNvbXBsaWFuY2UgcHJlZmVyZW5jZXMiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iaW50ZXJvcGVyYWJpbGl0eSI+Ci0gICAgICA8ZW50cnkga2V5d29yZD0icHJlZmVyZW5jZXMiPgotICAgICAgICA8dG9waWMgaHJlZj0icmVmL3JzZXJ2cG9scHJlZi5odG1sI3NlcnZpY2Vwb2xpY2llc3ByZWZlcmVuY2VzIiB0aXRsZT0iV1MtSSBjb21wbGlhbmNlIHByZWZlcmVuY2VzIi8+Ci0gICAgICA8L2VudHJ5PgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImNyZWF0aW5nIj4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJvdmVydmlldyI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90b3ZlcndzLmh0bWwjdG92ZXJ3cyIgdGl0bGU9IkRldmVsb3BpbmcgV2ViIHNlcnZpY2VzIi8+Ci0gICAgICA8L2VudHJ5PgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci0gIDxlbnRyeSBrZXl3b3JkPSJXU0RMIGZpbGVzIj4KLSAgICA8ZW50cnkga2V5d29yZD0ib3ZlcnZpZXciPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2N3c2RsLmh0bWwjY3dzZGwiIHRpdGxlPSJXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0icmVmZXJlbmNlIj4KLSAgICAgIDx0b3BpYyBocmVmPSJyZWYvcndzZGwuaHRtbCNyd3NkbCIgdGl0bGU9IldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkgcmVmZXJlbmNlIi8+Ci0gICAgPC9lbnRyeT4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9IlNPQVAiPgotICAgIDxlbnRyeSBrZXl3b3JkPSJvdmVydmlldyI+Ci0gICAgICA8dG9waWMgaHJlZj0iY29uY2VwdHMvY3NvYXAuaHRtbCNjc29hcCIgdGl0bGU9IlNPQVAiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0iV1NJTCBmaWxlcyI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9Im92ZXJ2aWV3Ij4KLSAgICAgIDx0b3BpYyBocmVmPSJjb25jZXB0cy9jd3NpbC5odG1sI2N3c2lsIiB0aXRsZT0iV2ViIFNlcnZpY2VzIEluc3BlY3Rpb24gTGFuZ3VhZ2UgKFdTSUwpIi8+Ci0gICAgPC9lbnRyeT4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9IlVEREkiPgotICAgIDxlbnRyeSBrZXl3b3JkPSJyZWxhdGlvbnNoaXAgd2l0aCBXU0lMIj4KLSAgICAgIDx0b3BpYyBocmVmPSJjb25jZXB0cy9jd3NpbHVkLmh0bWwjY3dzaWx1ZCIgdGl0bGU9IlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTSUwiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0iV1NJTCI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InJlbGF0aW9uc2hpcCB3aXRoIFVEREkiPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2N3c2lsdWQuaHRtbCNjd3NpbHVkIiB0aXRsZT0iUmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NJTCIvPgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci0gIDxlbnRyeSBrZXl3b3JkPSJKQVgtUlBDIj4KLSAgICA8ZW50cnkga2V5d29yZD0iV2ViIHNlcnZpY2VzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJjb25jZXB0cy9jamF4cnBjLmh0bWwjY2pheHJwYyIgdGl0bGU9IkpBWC1SUEMiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0iSlNSIDEwOSBKYXZhIHNwZWNpZmljYXRpb24iPgotICAgIDx0b3BpYyBocmVmPSJjb25jZXB0cy9janNyMTA5Lmh0bWwjY2pzcjEwOSIgdGl0bGU9IkpTUiAxMDkgLSBJbXBsZW1lbnRpbmcgRW50ZXJwcmlzZSBXZWIgc2VydmljZXMiLz4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9IkpTUiA5MjEgSmF2YSBzcGVjaWZpY2F0aW9uIj4KLSAgICA8dG9waWMgaHJlZj0iY29uY2VwdHMvY2pzcjEwOS5odG1sI2Nqc3IxMDkiIHRpdGxlPSJKU1IgMTA5IC0gSW1wbGVtZW50aW5nIEVudGVycHJpc2UgV2ViIHNlcnZpY2VzIi8+Ci0gIDwvZW50cnk+Ci0gIDxlbnRyeSBrZXl3b3JkPSJXZWIgc2VydmljZXMgaW50ZXJvcGVyYWJpbGl0eSI+Ci0gICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2N3c2lvdmVyLmh0bWwjY3dzaW92ZXIiIHRpdGxlPSJXZWIgc2VydmljZXMgaW50ZXJvcGVyYWJpbGl0eSAoV1MtSSkiLz4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9ImludGVyb3BlcmFiaWxpdHkiPgotICAgIDxlbnRyeSBrZXl3b3JkPSJXZWIgc2VydmljZXMiPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2N3c2lvdmVyLmh0bWwjY3dzaW92ZXIiIHRpdGxlPSJXZWIgc2VydmljZXMgaW50ZXJvcGVyYWJpbGl0eSAoV1MtSSkiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0idG9wLWRvd24gV2ViIHNlcnZpY2VzIj4KLSAgICA8ZW50cnkga2V5d29yZD0iY3JlYXRpbmciPgotICAgICAgPHRvcGljIGhyZWY9ImNvbmNlcHRzL2N3c3RvcGRvd24uaHRtbCNjcmVhdGluZ3RvcC1kb3dud2Vic2VydmljZXMiIHRpdGxlPSJDcmVhdGluZyB0b3AtZG93biBXZWIgc2VydmljZXMiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotICA8ZW50cnkga2V5d29yZD0iYm90dG9tLXVwIFdlYiBzZXJ2aWNlcyI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9Im92ZXJ2aWV3Ij4KLSAgICAgIDx0b3BpYyBocmVmPSJjb25jZXB0cy9jd3NidG11cC5odG1sI2NyZWF0aW5nYm90dG9tLXVwd2Vic2VydmljZXMiIHRpdGxlPSJDcmVhdGluZyBib3R0b20tdXAgV2ViIHNlcnZpY2VzIi8+Ci0gICAgPC9lbnRyeT4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9InByZWZlcmVuY2VzIj4KLSAgICA8ZW50cnkga2V5d29yZD0iV2ViIHNlcnZpY2VzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90d3NwcmVmLmh0bWwjc2V0dGluZ3dlYnNlcnZpY2VzcHJlZmVyZW5jZXMiIHRpdGxlPSJTZXR0aW5nIFdlYiBzZXJ2aWNlcyBwcmVmZXJlbmNlcyIvPgotICAgICAgPGVudHJ5IGtleXdvcmQ9IkF4aXMiPgotICAgICAgICA8dG9waWMgaHJlZj0icmVmL3JheGlzcHJlZi5odG1sI2F4aXNlbWl0dGVycHJlZmVyZW5jZXMiIHRpdGxlPSJBeGlzIGVtaXR0ZXIgcHJlZmVyZW5jZXMiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgICA8ZW50cnkga2V5d29yZD0id2l6YXJkcyI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJyZWYvcndzd2l6cHJlZi5odG1sI3dlYnNlcnZpY2Vzd2l6YXJkc2Jhc2ljcHJlZmVyZW5jZXMiIHRpdGxlPSJXZWIgc2VydmljZXMgd2l6YXJkcyBiYXNpYyBwcmVmZXJlbmNlcyIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJXU0RMIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InJlZi9yd3NkbHByZWYuaHRtbCN3c2RsZmlsZXNwcmVmZXJlbmNlcyIgdGl0bGU9IldTREwgZmlsZSBwcmVmZXJlbmNlcyIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJXUy1JIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InJlZi9yc2VydnBvbHByZWYuaHRtbCNzZXJ2aWNlcG9saWNpZXNwcmVmZXJlbmNlcyIgdGl0bGU9IldTLUkgY29tcGxpYW5jZSBwcmVmZXJlbmNlcyIvPgotICAgICAgPC9lbnRyeT4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotPC9pbmRleD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9wbHVnaW4ucHJvcGVydGllcyBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2NjN2FhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgTkxTX01FU1NBR0VGT1JNQVRfVkFSIAotIyBOTFNfRU5DT0RJTkc9VVRGLTggCi0KLXBsdWdpbk5hbWUgICAgID0gV2ViIFNlcnZpY2VzIFVJCi1wbHVnaW5Qcm92aWRlciA9IEVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9wbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAxZmFiOC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjMiPz4KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+IAotPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgotPHBsdWdpbj4KLSAgCi0gIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj4KLSAgICAgICA8dG9jIGZpbGU9IndlYnNlcnZpY2VfdG9jLnhtbCIgLz4KLSAgICAgICA8aW5kZXggcGF0aD0iaW5kZXgvIi8+Ci0gICA8L2V4dGVuc2lvbj4KLSAgICAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuaW5kZXgiPgotICAgICAgPGluZGV4IGZpbGU9Im9yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlcmluZGV4LnhtbCIvPgotICAgICAgPC9leHRlbnNpb24+Ci0gICAgICAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UubHVjZW5lU2VhcmNoUGFydGljaXBhbnRzIj4KLSAgICAgIDxiaW5kaW5nIHBhcnRpY2lwYW50SWQ9Im9yZy5lY2xpcHNlLmhlbHAuYmFzZS54aHRtbCIvPgotICAgPC9leHRlbnNpb24+Ci08L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcmF4aXNwcmVmLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcmF4aXNwcmVmLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZTAyYWIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3JheGlzcHJlZi5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSByZWZlcmVuY2UgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgUmVmZXJlbmNlLy9FTiINCi0gInJlZmVyZW5jZS5kdGQiPg0KLTxyZWZlcmVuY2UgaWQ9ImF4aXNlbWl0dGVycHJlZmVyZW5jZXMiIHhtbDpsYW5nPSJlbi11cyI+DQotPHRpdGxlPkF4aXMgZW1pdHRlciBwcmVmZXJlbmNlczwvdGl0bGU+DQotPHNob3J0ZGVzYz5UaGUgQXhpcyBFbWl0dGVyIHByZWZlcmVuY2VzIHBhZ2UgYWxsb3dzIHlvdSB0byBzZXQgdGhlIGZvbGxvd2luZw0KLXByZWZlcmVuY2VzIHVzZWQgd2hlbiBjcmVhdGluZyBvciBjb25zdW1pbmcgQXhpcyBXZWIgc2VydmljZXMuPC9zaG9ydGRlc2M+DQotPHByb2xvZz48bWV0YWRhdGE+DQotPGtleXdvcmRzPjxpbmRleHRlcm0+cHJlZmVyZW5jZXM8aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+QXhpczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPg0KLTxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5wcmVmZXJlbmNlczxpbmRleHRlcm0+QXhpczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPg0KLTwva2V5d29yZHM+DQotPC9tZXRhZGF0YT48L3Byb2xvZz4NCi08cmVmYm9keT4NCi08c2VjdGlvbj48dGl0bGU+V1NETDJKYXZhPC90aXRsZT48ZGw+PGRsZW50cnk+DQotPGR0PkdlbmVyYXRlIGNvZGUgZm9yIGFsbCBlbGVtZW50czo8L2R0Pg0KLTxkZD5CeSBkZWZhdWx0LCBXU0RMMkphdmEgb25seSBnZW5lcmF0ZXMgY29kZSBmb3IgdGhvc2UgZWxlbWVudHMgaW4gdGhlIFdTREwNCi1maWxlIHRoYXQgYXJlIHJlZmVyZW5jZWQuIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBob3cgcmVmZXJlbmNpbmcNCi13b3JrcyByZWZlciB0byB0aGUgQXhpcyByZWZlcmVuY2UgZ3VpZGU6IDx4cmVmIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMvamF2YS9yZWZlcmVuY2UuaHRtbCINCi1zY29wZT0iZXh0ZXJuYWwiPjwveHJlZj48L2RkPg0KLTwvZGxlbnRyeT48ZGxlbnRyeT4NCi08ZHQ+RW1pdHMgc2VwYXJhdGUgSGVscGVyIGNsYXNzZXMgZm9yIG1ldGFkYXRhOjwvZHQ+DQotPGRkPklmIHlvdSBzZWxlY3QgdGhpcyBvcHRpb24gV1NETDJKYXZhIHdpbGwgY3JlYXRlIGEgc2VwYXJhdGUgaGVscGVyIGNsYXNzDQotdGhhdCBjb250YWlucyB0aGUgbWV0YWRhdGEgcmF0aGVyIHRoYW4gaW5jbHVkaW5nIGl0IGluIHRoZSBza2VsZXRvbi48L2RkPg0KLTwvZGxlbnRyeT48ZGxlbnRyeT4NCi08ZHQ+UHJlZmVycyBidWlsZGluZyBiZWFucyB0byBzdHJhaWdodCBhcnJheXMgZm9yIHdyYXBwZWQgWE1MIGFycmF5IHR5cGVzOjwvZHQ+DQotPGRkPlRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIG1hcCB0aGlzIFhNTCBjb25zdHJ1Y3Q6IDxjb2RlYmxvY2s+Jmx0O2VsZW1lbnQgbmFtZT0iYXJyYXkiPg0KLSAmbHQ7Y29tcGxleFR5cGU+DQotICAmbHQ7c2VxdWVuY2U+DQotICAgJmx0O2VsZW1lbnQgbmFtZT0iaXRlbSIgdHlwZT0ieHM6c3RyaW5nIi8+DQotICAmbHQ7L3NlcXVlbmNlPg0KLSAmbHQ7L2NvbXBsZXhUeXBlPg0KLSZsdDsvZWxlbWVudD48L2NvZGVibG9jaz50byBhIEphdmEgU3RyaW5nIGFycmF5IChTdHJpbmdbXSkuIElmIHlvdSB3b3VsZCByYXRoZXINCi1hIHNwZWNpZmljIEphdmFCZWFuIGNsYXNzIChBcnJheU9mU3RyaW5nKSBiZSBnZW5lcmF0ZWQgZm9yIHRoZXNlIHR5cGVzIG9mDQotc2NoZW1hcywgc2VsZWN0IHRoaXMgb3B0aW9uLiA8L2RkPg0KLTwvZGxlbnRyeT48ZGxlbnRyeT4NCi08ZHQ+QWRkIHNjb3BlIHRvIGRlcGxveS53c2RkOjwvZHQ+DQotPGRkPlRoaXMgaW5kaWNhdGVzIGhvdyB0byBkZXBsb3kgdGhlIHNlcnZlciBpbXBsZW1lbnRhdGlvbi4gQXBwbGljYXRpb24gdXNlcw0KLW9uZSBpbnN0YW5jZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIGFsbCByZXF1ZXN0cy4gUmVxdWVzdCBjcmVhdGVzDQotYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uIGNsYXNzIGZvciBlYWNoIHJlcXVlc3QuIFNlc3Npb24gY3JlYXRlcw0KLWEgbmV3IGluc3RhbmNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgZWFjaCBzZXNzaW9uLjwvZGQ+DQotPC9kbGVudHJ5PjxkbGVudHJ5Pg0KLTxkdD5UaW1lb3V0IGluIHNlY29uZHM6PC9kdD4NCi08ZGQ+VGhlIGRlZmF1bHQgaXMgNDUuIFVzZSAtMSB0byBkaXNhYmxlIHRoZSB0aW1lb3V0LjwvZGQ+DQotPC9kbGVudHJ5PjwvZGw+PC9zZWN0aW9uPg0KLTxzZWN0aW9uPjx0aXRsZT5KYXZhMldTREw8L3RpdGxlPjxkbD48ZGxlbnRyeT4NCi08ZHQ+TG9vayBmb3IgYWxsb3dlZCBtZXRob2RzIGluIGluaGVyaXRlZCBjbGFzczo8L2R0Pg0KLTxkZD5JZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoZSBKYXZhMldTREwgcGFyc2VyIHdpbGwgbG9vayBpbnRvIGV4dGVuZGVkDQotY2xhc3NlcyB0byBkZXRlcm1pbmUgdGhlIGxpc3Qgb2YgbWV0aG9kcyB0byBleHBvcnQgaW50byB0aGUgV1NETCBmaWxlLiA8L2RkPg0KLTwvZGxlbnRyeT48ZGxlbnRyeT4NCi08ZHQ+QW5hbHl6ZSB0aGUgc2VydmljZSBjbGFzcyBmb3IgY29tcGxpYW5jZSB0byBKQVgtUlBDIGJlZm9yZSBnZW5lcmF0aW5nDQotY29kZTo8L2R0Pg0KLTxkZD5JZiBzZWxlY3RlZCwgdGhlIHRvb2xzIHdpbGwgZXhhbWluZSB0aGUgSmF2YSBzZXJ2aWNlIGNsYXNzIGFuZCBpdHMgdmFsdWUNCi10eXBlcyB0byBkZXRlcm1pbmUgaWYgaXQgc2F0aXNmaWVzIGltcG9ydGFudCByZXF1aXJlbWVudHMgb2YgdGhlIEpBWC1SUEMgc3BlY2lmaWNhdGlvbi48L2RkPg0KLTwvZGxlbnRyeT48L2RsPjwvc2VjdGlvbj4NCi08L3JlZmJvZHk+DQotPC9yZWZlcmVuY2U+DQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3JheGlzcHJlZi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3JheGlzcHJlZi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzMxYWI1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yYXhpc3ByZWYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0icmVmZXJlbmNlIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkF4aXMgZW1pdHRlciBwcmVmZXJlbmNlcyIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgQXhpcyBFbWl0dGVyIHByZWZlcmVuY2VzIHBhZ2UgYWxsb3dzIHlvdSB0byBzZXQgdGhlIGZvbGxvd2luZyBwcmVmZXJlbmNlcyB1c2VkIHdoZW4gY3JlYXRpbmcgb3IgY29uc3VtaW5nIEF4aXMgV2ViIHNlcnZpY2VzLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGUgQXhpcyBFbWl0dGVyIHByZWZlcmVuY2VzIHBhZ2UgYWxsb3dzIHlvdSB0byBzZXQgdGhlIGZvbGxvd2luZyBwcmVmZXJlbmNlcyB1c2VkIHdoZW4gY3JlYXRpbmcgb3IgY29uc3VtaW5nIEF4aXMgV2ViIHNlcnZpY2VzLiIgLz4KLTxtZXRhIGNvbnRlbnQ9InByZWZlcmVuY2VzLCBXZWIgc2VydmljZXMsIEF4aXMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJwcmVmZXJlbmNlcywgV2ViIHNlcnZpY2VzLCBBeGlzIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHdzcHJlZi5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9ImF4aXNlbWl0dGVycHJlZmVyZW5jZXMiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5BeGlzIGVtaXR0ZXIgcHJlZmVyZW5jZXM8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9ImF4aXNlbWl0dGVycHJlZmVyZW5jZXMiPjxhIG5hbWU9ImF4aXNlbWl0dGVycHJlZmVyZW5jZXMiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkF4aXMgZW1pdHRlciBwcmVmZXJlbmNlczwvaDE+Ci0KLQotCi08ZGl2PjxwPlRoZSBBeGlzIEVtaXR0ZXIgcHJlZmVyZW5jZXMgcGFnZSBhbGxvd3MgeW91IHRvIHNldCB0aGUgZm9sbG93aW5nCi1wcmVmZXJlbmNlcyB1c2VkIHdoZW4gY3JlYXRpbmcgb3IgY29uc3VtaW5nIEF4aXMgV2ViIHNlcnZpY2VzLjwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGg0IGNsYXNzPSJzZWN0aW9udGl0bGUiPldTREwySmF2YTwvaDQ+PGRsPgotPGR0IGNsYXNzPSJkbHRlcm0iPkdlbmVyYXRlIGNvZGUgZm9yIGFsbCBlbGVtZW50czo8L2R0PgotCi08ZGQ+QnkgZGVmYXVsdCwgV1NETDJKYXZhIG9ubHkgZ2VuZXJhdGVzIGNvZGUgZm9yIHRob3NlIGVsZW1lbnRzIGluIHRoZSBXU0RMCi1maWxlIHRoYXQgYXJlIHJlZmVyZW5jZWQuIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBob3cgcmVmZXJlbmNpbmcKLXdvcmtzIHJlZmVyIHRvIHRoZSBBeGlzIHJlZmVyZW5jZSBndWlkZTogPGEgaHJlZj0iaHR0cDovL3dzLmFwYWNoZS5vcmcvYXhpcy9qYXZhL3JlZmVyZW5jZS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3dzLmFwYWNoZS5vcmcvYXhpcy9qYXZhL3JlZmVyZW5jZS5odG1sPC9hPjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkVtaXRzIHNlcGFyYXRlIEhlbHBlciBjbGFzc2VzIGZvciBtZXRhZGF0YTo8L2R0PgotCi08ZGQ+SWYgeW91IHNlbGVjdCB0aGlzIG9wdGlvbiBXU0RMMkphdmEgd2lsbCBjcmVhdGUgYSBzZXBhcmF0ZSBoZWxwZXIgY2xhc3MKLXRoYXQgY29udGFpbnMgdGhlIG1ldGFkYXRhIHJhdGhlciB0aGFuIGluY2x1ZGluZyBpdCBpbiB0aGUgc2tlbGV0b24uPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+UHJlZmVycyBidWlsZGluZyBiZWFucyB0byBzdHJhaWdodCBhcnJheXMgZm9yIHdyYXBwZWQgWE1MIGFycmF5IHR5cGVzOjwvZHQ+Ci0KLTxkZD5UaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBtYXAgdGhpcyBYTUwgY29uc3RydWN0OiA8cHJlPiZsdDtlbGVtZW50IG5hbWU9ImFycmF5IiZndDsKLSAmbHQ7Y29tcGxleFR5cGUmZ3Q7Ci0gICZsdDtzZXF1ZW5jZSZndDsKLSAgICZsdDtlbGVtZW50IG5hbWU9Iml0ZW0iIHR5cGU9InhzOnN0cmluZyIvJmd0OwotICAmbHQ7L3NlcXVlbmNlJmd0OwotICZsdDsvY29tcGxleFR5cGUmZ3Q7Ci0mbHQ7L2VsZW1lbnQmZ3Q7PC9wcmU+Ci10byBhIEphdmEgU3RyaW5nIGFycmF5IChTdHJpbmdbXSkuIElmIHlvdSB3b3VsZCByYXRoZXIKLWEgc3BlY2lmaWMgSmF2YUJlYW4gY2xhc3MgKEFycmF5T2ZTdHJpbmcpIGJlIGdlbmVyYXRlZCBmb3IgdGhlc2UgdHlwZXMgb2YKLXNjaGVtYXMsIHNlbGVjdCB0aGlzIG9wdGlvbi4gPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+QWRkIHNjb3BlIHRvIGRlcGxveS53c2RkOjwvZHQ+Ci0KLTxkZD5UaGlzIGluZGljYXRlcyBob3cgdG8gZGVwbG95IHRoZSBzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIEFwcGxpY2F0aW9uIHVzZXMKLW9uZSBpbnN0YW5jZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIGFsbCByZXF1ZXN0cy4gUmVxdWVzdCBjcmVhdGVzCi1hIG5ldyBpbnN0YW5jZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIGVhY2ggcmVxdWVzdC4gU2Vzc2lvbiBjcmVhdGVzCi1hIG5ldyBpbnN0YW5jZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIGVhY2ggc2Vzc2lvbi48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5UaW1lb3V0IGluIHNlY29uZHM6PC9kdD4KLQotPGRkPlRoZSBkZWZhdWx0IGlzIDQ1LiBVc2UgLTEgdG8gZGlzYWJsZSB0aGUgdGltZW91dC48L2RkPgotCi08L2RsPgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxoNCBjbGFzcz0ic2VjdGlvbnRpdGxlIj5KYXZhMldTREw8L2g0PjxkbD4KLTxkdCBjbGFzcz0iZGx0ZXJtIj5Mb29rIGZvciBhbGxvd2VkIG1ldGhvZHMgaW4gaW5oZXJpdGVkIGNsYXNzOjwvZHQ+Ci0KLTxkZD5JZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoZSBKYXZhMldTREwgcGFyc2VyIHdpbGwgbG9vayBpbnRvIGV4dGVuZGVkCi1jbGFzc2VzIHRvIGRldGVybWluZSB0aGUgbGlzdCBvZiBtZXRob2RzIHRvIGV4cG9ydCBpbnRvIHRoZSBXU0RMIGZpbGUuIDwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkFuYWx5emUgdGhlIHNlcnZpY2UgY2xhc3MgZm9yIGNvbXBsaWFuY2UgdG8gSkFYLVJQQyBiZWZvcmUgZ2VuZXJhdGluZwotY29kZTo8L2R0PgotCi08ZGQ+SWYgc2VsZWN0ZWQsIHRoZSB0b29scyB3aWxsIGV4YW1pbmUgdGhlIEphdmEgc2VydmljZSBjbGFzcyBhbmQgaXRzIHZhbHVlCi10eXBlcyB0byBkZXRlcm1pbmUgaWYgaXQgc2F0aXNmaWVzIGltcG9ydGFudCByZXF1aXJlbWVudHMgb2YgdGhlIEpBWC1SUEMgc3BlY2lmaWNhdGlvbi48L2RkPgotCi08L2RsPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL3Rhc2tzL3R3c3ByZWYuaHRtbCIgdGl0bGU9IkJlZm9yZSB5b3UgYmVnaW4gZGV2ZWxvcGluZyBXZWIgc2VydmljZXMgb3IgY2xpZW50cywgeW91IGNhbiBvcHRpbWl6ZSB0aGUgd29ya2JlbmNoIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgYnkgc2V0dGluZyBhIHZhcmlldHkgb2YgcHJlZmVyZW5jZXMuIj5TZXR0aW5nIFdlYiBzZXJ2aWNlcyBwcmVmZXJlbmNlczwvYT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcnNlcnZwb2xwcmVmLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcnNlcnZwb2xwcmVmLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMTM3MmMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3JzZXJ2cG9scHJlZi5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSByZWZlcmVuY2UgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgUmVmZXJlbmNlLy9FTiINCi0gInJlZmVyZW5jZS5kdGQiPg0KLTxyZWZlcmVuY2UgaWQ9InNlcnZpY2Vwb2xpY2llc3ByZWZlcmVuY2VzIiB4bWw6bGFuZz0iZW4tdXMiPg0KLTx0aXRsZT5XUy1JIGNvbXBsaWFuY2UgcHJlZmVyZW5jZXM8L3RpdGxlPg0KLTxzaG9ydGRlc2M+VGhlIFNlcnZpY2UgcG9saWNpZXMgcHJlZmVyZW5jZXMgcGFnZSBhbGxvd3MgeW91IHRvIHNlbGVjdCB5b3VyDQotbGV2ZWwgb2YgY29tcGxpYW5jZSB3aXRoIHRoZSBXUy1JIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSAoU1NCUCkgYW5kIFdTLUkNCi1BdHRhY2hlbWVudCBQcm9maWxlIChBUCkuIFRoZXkgY2FuIGJlIGZvdW5kIG9uIHRoZSBTZXJ2aWNlIFBvbGljaWVzIHByZWZlcmVuY2VzDQotcGFnZS48L3Nob3J0ZGVzYz4NCi08cHJvbG9nPjxtZXRhZGF0YT4NCi08a2V5d29yZHM+PGluZGV4dGVybSBrZXlyZWY9InJzZXJ2cG9scHJlZnwxfHByZWZlcmVuY2VzV2Vic2VydmljZXNXUy1JIiBzdGF0dXM9Im5ldyI+cHJlZmVyZW5jZXM8aW5kZXh0ZXJtPldlYg0KLXNlcnZpY2VzPGluZGV4dGVybT5XUy1JPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PGluZGV4dGVybSBrZXlyZWY9InJzZXJ2cG9scHJlZnwyfFdlYnNlcnZpY2VzcHJlZmVyZW5jZXNXUy1JIg0KLXN0YXR1cz0ibmV3Ij5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPnByZWZlcmVuY2VzPGluZGV4dGVybT5XUy1JPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+DQotPGluZGV4dGVybSBrZXlyZWY9InJzZXJ2cG9scHJlZnwzfFdTLUlwcmVmZXJlbmNlcyIgc3RhdHVzPSJjaGFuZ2VkIj5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmludGVyb3BlcmFiaWxpdHk8aW5kZXh0ZXJtPnByZWZlcmVuY2VzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0NCi0+PC9pbmRleHRlcm0+PC9rZXl3b3Jkcz4NCi08L21ldGFkYXRhPjwvcHJvbG9nPg0KLTxyZWZib2R5Pg0KLTxzZWN0aW9uPjx0aXRsZT5TZXR0aW5nIFdTLUkgcHJlZmVyZW5jZXM8L3RpdGxlPjxwPldTLUkgQmFzaWMgUHJvZmlsZSBpcyBhDQotb3V0bGluZSBvZiByZXF1aXJlbWVudHMgdG8gd2hpY2ggV1NETCBhbmQgV2ViIHNlcnZpY2UgcHJvdG9jb2wgKFNPQVAvSFRUUCkNCi10cmFmZmljIG11c3QgY29tcGx5IGluIG9yZGVyIHRvIGNsYWltIFdTLUkgY29uZm9ybWFuY2UuIFRoZSBXZWIgc2VydmljZXMgV1MtSQ0KLXZhbGlkYXRpb24gdG9vbHMgY3VycmVudGx5IHN1cHBvcnQgV1MtSSBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGUgMS4wIChXUy1JDQotU1NCUCkgd2hpY2ggYnVpbGRzIG9uIHRoZSBXUy1JIEJhc2ljIFByb2ZpbGUsIGFuZCB0aGUgV1MtSSBBdHRhY2htZW50cyBQcm9maWxlDQotMS4wIChXUy1JIEFQKS4gVG8gdmlldyB0aGUgc3BlY2lmaWNhdGlvbnMsIHJlZmVyIHRvIHRoZSBXUy1JIFdlYiBzaXRlLCBhbmQNCi11bmRlciAgPHVpY29udHJvbD5EZWxpdmVyYWJsZXM8L3VpY29udHJvbD4gc2VsZWN0ICA8dWljb250cm9sPkJhc2ljIFByb2ZpbGU8L3VpY29udHJvbD4uPC9wPjxwPkZvcg0KLW1vcmUgaW5mb3JtYXRpb24gb24gV1MtSSwgcmVmZXIgdG86IDx4cmVmIGhyZWY9Imh0dHA6Ly93d3cud3MtaS5vcmcvIiBzY29wZT0iZXh0ZXJuYWwiPjwveHJlZj48L3A+PHA+V1MtSQ0KLXByZWZlcmVuY2VzIGNhbiBiZSBzZXQgYXQgdGhlIHdvcmtzcGFjZSBsZXZlbCBieSBvcGVuaW5nIHRoZSBQcmVmZXJlbmNlcyBub3RlYm9vaywNCi1vciBhdCB0aGUgcHJvamVjdCBsZXZlbCBieSByaWdodC1jbGlja2luZyBvbiBhIHByb2plY3QgYW5kIHNlbGVjdGluZyBQcmVmZXJlbmNlcy48L3A+PHA+WW91DQotY2FuIHNlbGVjdCB0aGUgV1MtSSBBUCAxLjAgb3IgV1MtSSBCUCAxLjEgKyBTU0JQIDEuMCBwcm9maWxlcyBhbmQgY2hvb3NlIGZvcg0KLXRoZSBXZWIgc2VydmljZXMgdG9vbHMgdG8gaWdub3JlLCBzdWdnZXN0LCBvciByZXF1aXJlIGNvbXBsaWFuY2UuIFN1Z2dlc3QNCi13aWxsIGdlbmVyYXRlIGEgd2FybmluZyBpZiB5b3UgYXR0ZW1wdCB0byBnZW5lcmF0ZSBub24tY29tcGxpYW50IGNvZGUsIHdoZXJlYXMNCi1yZXF1aXJlIHdpbGwgcHJldmVudCB5b3UgZnJvbSBnZW5lcmF0aW5nIG5vbi1jb21wbGlhbnQgY29kZS48L3A+PG5vdGU+SWYgeW91DQotY2hhbmdlIHRoZSBsZXZlbCBvZiBXUy1JIGNvbXBsaWFuY2Ugd2hpbGUgV1MtSSBpbmNvbXBsaWFuY2VzIGFyZSBsaXN0ZWQgaW4NCi10aGUgVGFzayB2aWV3LCB0aGUgVGFzayB2aWV3IHdpbGwgbm90IGJlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZC4gVGhlIHdvcmtzcGFjZQ0KLW11c3QgYmUgcmV2YWxpZGF0ZWQgYmVmb3JlIHRoZSB3YXJuaW5ncyB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgVGFzayB2aWV3Ljwvbm90ZT48L3NlY3Rpb24+DQotPC9yZWZib2R5Pg0KLTwvcmVmZXJlbmNlPg0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yc2VydnBvbHByZWYuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yc2VydnBvbHByZWYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVhZWViOS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcnNlcnZwb2xwcmVmLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0icmVmZXJlbmNlIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IldTLUkgY29tcGxpYW5jZSBwcmVmZXJlbmNlcyIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgU2VydmljZSBwb2xpY2llcyBwcmVmZXJlbmNlcyBwYWdlIGFsbG93cyB5b3UgdG8gc2VsZWN0IHlvdXIgbGV2ZWwgb2YgY29tcGxpYW5jZSB3aXRoIHRoZSBXUy1JIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSAoU1NCUCkgYW5kIFdTLUkgQXR0YWNoZW1lbnQgUHJvZmlsZSAoQVApLiBUaGV5IGNhbiBiZSBmb3VuZCBvbiB0aGUgU2VydmljZSBQb2xpY2llcyBwcmVmZXJlbmNlcyBwYWdlLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGUgU2VydmljZSBwb2xpY2llcyBwcmVmZXJlbmNlcyBwYWdlIGFsbG93cyB5b3UgdG8gc2VsZWN0IHlvdXIgbGV2ZWwgb2YgY29tcGxpYW5jZSB3aXRoIHRoZSBXUy1JIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSAoU1NCUCkgYW5kIFdTLUkgQXR0YWNoZW1lbnQgUHJvZmlsZSAoQVApLiBUaGV5IGNhbiBiZSBmb3VuZCBvbiB0aGUgU2VydmljZSBQb2xpY2llcyBwcmVmZXJlbmNlcyBwYWdlLiIgLz4KLTxtZXRhIGNvbnRlbnQ9InByZWZlcmVuY2VzLCBXZWIgc2VydmljZXMsIFdTLUksIFdlYiBzZXJ2aWNlcywgaW50ZXJvcGVyYWJpbGl0eSIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InByZWZlcmVuY2VzLCBXZWIgc2VydmljZXMsIFdTLUksIFdlYiBzZXJ2aWNlcywgaW50ZXJvcGVyYWJpbGl0eSIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3Rhc2tzL3R3c3ByZWYuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJzZXJ2aWNlcG9saWNpZXNwcmVmZXJlbmNlcyIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPldTLUkgY29tcGxpYW5jZSBwcmVmZXJlbmNlczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0ic2VydmljZXBvbGljaWVzcHJlZmVyZW5jZXMiPjxhIG5hbWU9InNlcnZpY2Vwb2xpY2llc3ByZWZlcmVuY2VzIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5XUy1JIGNvbXBsaWFuY2UgcHJlZmVyZW5jZXM8L2gxPgotCi0KLQotPGRpdj48cD5UaGUgU2VydmljZSBwb2xpY2llcyBwcmVmZXJlbmNlcyBwYWdlIGFsbG93cyB5b3UgdG8gc2VsZWN0IHlvdXIKLWxldmVsIG9mIGNvbXBsaWFuY2Ugd2l0aCB0aGUgV1MtSSBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGUgKFNTQlApIGFuZCBXUy1JCi1BdHRhY2hlbWVudCBQcm9maWxlIChBUCkuIFRoZXkgY2FuIGJlIGZvdW5kIG9uIHRoZSBTZXJ2aWNlIFBvbGljaWVzIHByZWZlcmVuY2VzCi1wYWdlLjwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGg0IGNsYXNzPSJzZWN0aW9udGl0bGUiPlNldHRpbmcgV1MtSSBwcmVmZXJlbmNlczwvaDQ+PHA+V1MtSSBCYXNpYyBQcm9maWxlIGlzIGEKLW91dGxpbmUgb2YgcmVxdWlyZW1lbnRzIHRvIHdoaWNoIFdTREwgYW5kIFdlYiBzZXJ2aWNlIHByb3RvY29sIChTT0FQL0hUVFApCi10cmFmZmljIG11c3QgY29tcGx5IGluIG9yZGVyIHRvIGNsYWltIFdTLUkgY29uZm9ybWFuY2UuIFRoZSBXZWIgc2VydmljZXMgV1MtSQotdmFsaWRhdGlvbiB0b29scyBjdXJyZW50bHkgc3VwcG9ydCBXUy1JIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSAxLjAgKFdTLUkKLVNTQlApIHdoaWNoIGJ1aWxkcyBvbiB0aGUgV1MtSSBCYXNpYyBQcm9maWxlLCBhbmQgdGhlIFdTLUkgQXR0YWNobWVudHMgUHJvZmlsZQotMS4wIChXUy1JIEFQKS4gVG8gdmlldyB0aGUgc3BlY2lmaWNhdGlvbnMsIHJlZmVyIHRvIHRoZSBXUy1JIFdlYiBzaXRlLCBhbmQKLXVuZGVyICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5EZWxpdmVyYWJsZXM8L3NwYW4+IHNlbGVjdCAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QmFzaWMgUHJvZmlsZTwvc3Bhbj4uPC9wPgotPHA+Rm9yCi1tb3JlIGluZm9ybWF0aW9uIG9uIFdTLUksIHJlZmVyIHRvOiA8YSBocmVmPSJodHRwOi8vd3d3LndzLWkub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cud3MtaS5vcmcvPC9hPjwvcD4KLTxwPldTLUkKLXByZWZlcmVuY2VzIGNhbiBiZSBzZXQgYXQgdGhlIHdvcmtzcGFjZSBsZXZlbCBieSBvcGVuaW5nIHRoZSBQcmVmZXJlbmNlcyBub3RlYm9vaywKLW9yIGF0IHRoZSBwcm9qZWN0IGxldmVsIGJ5IHJpZ2h0LWNsaWNraW5nIG9uIGEgcHJvamVjdCBhbmQgc2VsZWN0aW5nIFByZWZlcmVuY2VzLjwvcD4KLTxwPllvdQotY2FuIHNlbGVjdCB0aGUgV1MtSSBBUCAxLjAgb3IgV1MtSSBCUCAxLjEgKyBTU0JQIDEuMCBwcm9maWxlcyBhbmQgY2hvb3NlIGZvcgotdGhlIFdlYiBzZXJ2aWNlcyB0b29scyB0byBpZ25vcmUsIHN1Z2dlc3QsIG9yIHJlcXVpcmUgY29tcGxpYW5jZS4gU3VnZ2VzdAotd2lsbCBnZW5lcmF0ZSBhIHdhcm5pbmcgaWYgeW91IGF0dGVtcHQgdG8gZ2VuZXJhdGUgbm9uLWNvbXBsaWFudCBjb2RlLCB3aGVyZWFzCi1yZXF1aXJlIHdpbGwgcHJldmVudCB5b3UgZnJvbSBnZW5lcmF0aW5nIG5vbi1jb21wbGlhbnQgY29kZS48L3A+Ci08ZGl2IGNsYXNzPSJub3RlIj48c3BhbiBjbGFzcz0ibm90ZXRpdGxlIj5Ob3RlOjwvc3Bhbj4gSWYgeW91Ci1jaGFuZ2UgdGhlIGxldmVsIG9mIFdTLUkgY29tcGxpYW5jZSB3aGlsZSBXUy1JIGluY29tcGxpYW5jZXMgYXJlIGxpc3RlZCBpbgotdGhlIFRhc2sgdmlldywgdGhlIFRhc2sgdmlldyB3aWxsIG5vdCBiZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQuIFRoZSB3b3Jrc3BhY2UKLW11c3QgYmUgcmV2YWxpZGF0ZWQgYmVmb3JlIHRoZSB3YXJuaW5ncyB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgVGFzayB2aWV3LjwvZGl2PgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL3Rhc2tzL3R3c3ByZWYuaHRtbCIgdGl0bGU9IkJlZm9yZSB5b3UgYmVnaW4gZGV2ZWxvcGluZyBXZWIgc2VydmljZXMgb3IgY2xpZW50cywgeW91IGNhbiBvcHRpbWl6ZSB0aGUgd29ya2JlbmNoIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgYnkgc2V0dGluZyBhIHZhcmlldHkgb2YgcHJlZmVyZW5jZXMuIj5TZXR0aW5nIFdlYiBzZXJ2aWNlcyBwcmVmZXJlbmNlczwvYT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzZGwuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yd3NkbC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTg4Mjc3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yd3NkbC5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgcmVmZXJlbmNlIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFJlZmVyZW5jZS8vRU4iCi0gInJlZmVyZW5jZS5kdGQiPgotPHJlZmVyZW5jZSBpZD0icndzZGwiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSByZWZlcmVuY2U8L3RpdGxlPgotPHNob3J0ZGVzYz5BIFdTREwgZG9jdW1lbnQgZGVmaW5lcyBzZXJ2aWNlcyBhcyBjb2xsZWN0aW9ucyBvZiBuZXR3b3JrIGVuZHBvaW50cywKLW9yIHBvcnRzLiBJbiBXU0RMLCB0aGUgYWJzdHJhY3QgZGVmaW5pdGlvbiBvZiBlbmRwb2ludHMgYW5kIG1lc3NhZ2VzIGlzIHNlcGFyYXRlZAotZnJvbSB0aGVpciBjb25jcmV0ZSBuZXR3b3JrIGRlcGxveW1lbnQgb3IgZGF0YSBmb3JtYXQgYmluZGluZ3MuIFRoaXMgYWxsb3dzCi10aGUgcmV1c2Ugb2YgYWJzdHJhY3QgZGVmaW5pdGlvbnM6IG1lc3NhZ2VzLCB3aGljaCBhcmUgYWJzdHJhY3QgZGVzY3JpcHRpb25zCi1vZiB0aGUgZGF0YSBiZWluZyBleGNoYW5nZWQsIGFuZCBwb3J0IHR5cGVzIHdoaWNoIGFyZSBhYnN0cmFjdCBjb2xsZWN0aW9ucwotb2Ygb3BlcmF0aW9ucy4gPC9zaG9ydGRlc2M+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtIGtleXJlZj0icndzZGx8MXxXU0RMcmVmZXJlbmNlIiBzdGF0dXM9ImNoYW5nZWQiPldTREwKLWZpbGVzPGluZGV4dGVybT5yZWZlcmVuY2U8L2luZGV4dGVybT48L2luZGV4dGVybT48aW5kZXh0ZXJtIGtleXJlZj0icndzZGx8MnxXZWJzZXJ2aWNlc1dTRExyZWZlcmVuY2UiCi1zdGF0dXM9Im5ldyI+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5XU0RMIHJlZmVyZW5jZTwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08cmVmYm9keT4KLTxzZWN0aW9uPjxwPlRoZSBjb25jcmV0ZSBwcm90b2NvbCBhbmQgZGF0YSBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgZm9yIGEgcGFydGljdWxhcgotcG9ydCB0eXBlIGNvbnN0aXR1dGVzIGEgcmV1c2FibGUgYmluZGluZy4gQSBwb3J0IGlzIGRlZmluZWQgYnkgYXNzb2NpYXRpbmcKLWEgbmV0d29yayBhZGRyZXNzIHdpdGggYSByZXVzYWJsZSBiaW5kaW5nLCBhbmQgYSBjb2xsZWN0aW9uIG9mIHBvcnRzIGRlZmluZQotYSBzZXJ2aWNlLiBIZW5jZSwgYSBXU0RMIGRvY3VtZW50IHVzZXMgdGhlIGZvbGxvd2luZyBlbGVtZW50cyBpbiB0aGUgZGVmaW5pdGlvbgotb2YgbmV0d29yayBzZXJ2aWNlczo8L3A+PHVsPgotPGxpPiA8dWljb250cm9sPlR5cGVzPC91aWNvbnRyb2w+OiBhIGNvbnRhaW5lciBmb3IgZGF0YSB0eXBlIGRlZmluaXRpb25zIHVzaW5nCi1zb21lIHR5cGUgc3lzdGVtIChzdWNoIGFzIFhTRCkuPC9saT4KLTxsaT4gPHVpY29udHJvbD5NZXNzYWdlPC91aWNvbnRyb2w+OiBhbiBhYnN0cmFjdCwgdHlwZWQgZGVmaW5pdGlvbiBvZiB0aGUKLWRhdGEgYmVpbmcgY29tbXVuaWNhdGVkLjwvbGk+Ci08bGk+IDx1aWNvbnRyb2w+T3BlcmF0aW9uPC91aWNvbnRyb2w+OiBhbiBhYnN0cmFjdCBkZXNjcmlwdGlvbiBvZiBhbiBhY3Rpb24KLXN1cHBvcnRlZCBieSB0aGUgc2VydmljZS48L2xpPgotPGxpPiA8dWljb250cm9sPlBvcnQgVHlwZTwvdWljb250cm9sPjogYW4gYWJzdHJhY3Qgc2V0IG9mIG9wZXJhdGlvbnMgc3VwcG9ydGVkCi1ieSBvbmUgb3IgbW9yZSBlbmRwb2ludHMuPC9saT4KLTxsaT4gPHVpY29udHJvbD5CaW5kaW5nPC91aWNvbnRyb2w+OiBhIGNvbmNyZXRlIHByb3RvY29sIGFuZCBkYXRhIGZvcm1hdCBzcGVjaWZpY2F0aW9uCi1mb3IgYSBwYXJ0aWN1bGFyIHBvcnQgdHlwZS4gVGhlIGJpbmRpbmcgaXMgdXN1YWxseSBTT0FQIGFuZCB0aGUgZW5jb2RpbmcgYW5kCi1kYXRhIGZvcm1hdHRpbmcgcmVndWxhdGlvbnMgdXNlZCAoYWxzbyBrbm93biBhcyB0aGUgc3R5bGUpIGlzIHVzdWFsbHkgbGl0ZXJhbAotKHRoaXMgaW5jbHVkZXMgZG9jdW1lbnQvbGl0ZXJhbCwgYW5kIHNvbWV0aW1lcyBycGMvbGl0ZXJhbCkuPC9saT4KLTxsaT4gPHVpY29udHJvbD5Qb3J0PC91aWNvbnRyb2w+OiBhIHNpbmdsZSBlbmRwb2ludCBkZWZpbmVkIGFzIGEgY29tYmluYXRpb24KLW9mIGEgYmluZGluZyBhbmQgYSBuZXR3b3JrIGFkZHJlc3MuPC9saT4KLTxsaT4gPHVpY29udHJvbD5TZXJ2aWNlPC91aWNvbnRyb2w+OiBhIGNvbGxlY3Rpb24gb2YgcmVsYXRlZCBlbmRwb2ludHMuPC9saT4KLTwvdWw+PHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gV1NETCwgcmVmZXIgdG8gIDwvcD48cD48eHJlZiBmb3JtYXQ9Imh0bWwiCi1ocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi93c2RsIiBzY29wZT0iZXh0ZXJuYWwiPnd3dy53My5vcmcvVFIvd3NkbDwveHJlZj48L3A+PHA+VGhlCi12YXJpb3VzIFdTREwgZWxlbWVudHMgY2FuIGJlIHN0cnVjdHVyZWQgaW4gbWFueSB3YXlzLiBJdCBjYW4gYmUgaW4gb25lIHNpbmdsZQotV1NETCBmaWxlIG9yIGluIG11bHRpcGxlIFdTREwgZmlsZXMuPC9wPjwvc2VjdGlvbj4KLTwvcmVmYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIENvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N3cy5kaXRhIj48L2xpbms+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jd3NkbC5kaXRhIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuZGl0YSIgc2NvcGU9InBlZXIiPjxsaW5rdGV4dD4gRGV2ZWxvcGluZyBXZWIKLXNlcnZpY2VzPC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVkZGlleHAuZGl0YSIKLXNjb3BlPSJwZWVyIj48bGlua3RleHQ+IFVzaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXI8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L3JlZmVyZW5jZT4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yd3NkbC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyODBhZDMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0icmVmZXJlbmNlIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkgcmVmZXJlbmNlIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IkEgV1NETCBkb2N1bWVudCBkZWZpbmVzIHNlcnZpY2VzIGFzIGNvbGxlY3Rpb25zIG9mIG5ldHdvcmsgZW5kcG9pbnRzLCBvciBwb3J0cy4gSW4gV1NETCwgdGhlIGFic3RyYWN0IGRlZmluaXRpb24gb2YgZW5kcG9pbnRzIGFuZCBtZXNzYWdlcyBpcyBzZXBhcmF0ZWQgZnJvbSB0aGVpciBjb25jcmV0ZSBuZXR3b3JrIGRlcGxveW1lbnQgb3IgZGF0YSBmb3JtYXQgYmluZGluZ3MuIFRoaXMgYWxsb3dzIHRoZSByZXVzZSBvZiBhYnN0cmFjdCBkZWZpbml0aW9uczogbWVzc2FnZXMsIHdoaWNoIGFyZSBhYnN0cmFjdCBkZXNjcmlwdGlvbnMgb2YgdGhlIGRhdGEgYmVpbmcgZXhjaGFuZ2VkLCBhbmQgcG9ydCB0eXBlcyB3aGljaCBhcmUgYWJzdHJhY3QgY29sbGVjdGlvbnMgb2Ygb3BlcmF0aW9ucy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQSBXU0RMIGRvY3VtZW50IGRlZmluZXMgc2VydmljZXMgYXMgY29sbGVjdGlvbnMgb2YgbmV0d29yayBlbmRwb2ludHMsIG9yIHBvcnRzLiBJbiBXU0RMLCB0aGUgYWJzdHJhY3QgZGVmaW5pdGlvbiBvZiBlbmRwb2ludHMgYW5kIG1lc3NhZ2VzIGlzIHNlcGFyYXRlZCBmcm9tIHRoZWlyIGNvbmNyZXRlIG5ldHdvcmsgZGVwbG95bWVudCBvciBkYXRhIGZvcm1hdCBiaW5kaW5ncy4gVGhpcyBhbGxvd3MgdGhlIHJldXNlIG9mIGFic3RyYWN0IGRlZmluaXRpb25zOiBtZXNzYWdlcywgd2hpY2ggYXJlIGFic3RyYWN0IGRlc2NyaXB0aW9ucyBvZiB0aGUgZGF0YSBiZWluZyBleGNoYW5nZWQsIGFuZCBwb3J0IHR5cGVzIHdoaWNoIGFyZSBhYnN0cmFjdCBjb2xsZWN0aW9ucyBvZiBvcGVyYXRpb25zLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldTREwgZmlsZXMsIHJlZmVyZW5jZSwgV2ViIHNlcnZpY2VzLCBXU0RMIHJlZmVyZW5jZSIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldTREwgZmlsZXMsIHJlZmVyZW5jZSwgV2ViIHNlcnZpY2VzLCBXU0RMIHJlZmVyZW5jZSIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3c2RsLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3cy5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3NkbC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90b3ZlcndzLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dWRkaWV4cC5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InJ3c2RsIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSByZWZlcmVuY2U8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InJ3c2RsIj48YSBuYW1lPSJyd3NkbCI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSByZWZlcmVuY2U8L2gxPgotCi0KLQotPGRpdj48cD5BIFdTREwgZG9jdW1lbnQgZGVmaW5lcyBzZXJ2aWNlcyBhcyBjb2xsZWN0aW9ucyBvZiBuZXR3b3JrIGVuZHBvaW50cywKLW9yIHBvcnRzLiBJbiBXU0RMLCB0aGUgYWJzdHJhY3QgZGVmaW5pdGlvbiBvZiBlbmRwb2ludHMgYW5kIG1lc3NhZ2VzIGlzIHNlcGFyYXRlZAotZnJvbSB0aGVpciBjb25jcmV0ZSBuZXR3b3JrIGRlcGxveW1lbnQgb3IgZGF0YSBmb3JtYXQgYmluZGluZ3MuIFRoaXMgYWxsb3dzCi10aGUgcmV1c2Ugb2YgYWJzdHJhY3QgZGVmaW5pdGlvbnM6IG1lc3NhZ2VzLCB3aGljaCBhcmUgYWJzdHJhY3QgZGVzY3JpcHRpb25zCi1vZiB0aGUgZGF0YSBiZWluZyBleGNoYW5nZWQsIGFuZCBwb3J0IHR5cGVzIHdoaWNoIGFyZSBhYnN0cmFjdCBjb2xsZWN0aW9ucwotb2Ygb3BlcmF0aW9ucy4gPC9wPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UaGUgY29uY3JldGUgcHJvdG9jb2wgYW5kIGRhdGEgZm9ybWF0IHNwZWNpZmljYXRpb25zIGZvciBhIHBhcnRpY3VsYXIKLXBvcnQgdHlwZSBjb25zdGl0dXRlcyBhIHJldXNhYmxlIGJpbmRpbmcuIEEgcG9ydCBpcyBkZWZpbmVkIGJ5IGFzc29jaWF0aW5nCi1hIG5ldHdvcmsgYWRkcmVzcyB3aXRoIGEgcmV1c2FibGUgYmluZGluZywgYW5kIGEgY29sbGVjdGlvbiBvZiBwb3J0cyBkZWZpbmUKLWEgc2VydmljZS4gSGVuY2UsIGEgV1NETCBkb2N1bWVudCB1c2VzIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgaW4gdGhlIGRlZmluaXRpb24KLW9mIG5ldHdvcmsgc2VydmljZXM6PC9wPgotPHVsPgotPGxpPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5UeXBlczwvc3Bhbj46IGEgY29udGFpbmVyIGZvciBkYXRhIHR5cGUgZGVmaW5pdGlvbnMgdXNpbmcKLXNvbWUgdHlwZSBzeXN0ZW0gKHN1Y2ggYXMgWFNEKS48L2xpPgotCi08bGk+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk1lc3NhZ2U8L3NwYW4+OiBhbiBhYnN0cmFjdCwgdHlwZWQgZGVmaW5pdGlvbiBvZiB0aGUKLWRhdGEgYmVpbmcgY29tbXVuaWNhdGVkLjwvbGk+Ci0KLTxsaT4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+T3BlcmF0aW9uPC9zcGFuPjogYW4gYWJzdHJhY3QgZGVzY3JpcHRpb24gb2YgYW4gYWN0aW9uCi1zdXBwb3J0ZWQgYnkgdGhlIHNlcnZpY2UuPC9saT4KLQotPGxpPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Qb3J0IFR5cGU8L3NwYW4+OiBhbiBhYnN0cmFjdCBzZXQgb2Ygb3BlcmF0aW9ucyBzdXBwb3J0ZWQKLWJ5IG9uZSBvciBtb3JlIGVuZHBvaW50cy48L2xpPgotCi08bGk+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkJpbmRpbmc8L3NwYW4+OiBhIGNvbmNyZXRlIHByb3RvY29sIGFuZCBkYXRhIGZvcm1hdCBzcGVjaWZpY2F0aW9uCi1mb3IgYSBwYXJ0aWN1bGFyIHBvcnQgdHlwZS4gVGhlIGJpbmRpbmcgaXMgdXN1YWxseSBTT0FQIGFuZCB0aGUgZW5jb2RpbmcgYW5kCi1kYXRhIGZvcm1hdHRpbmcgcmVndWxhdGlvbnMgdXNlZCAoYWxzbyBrbm93biBhcyB0aGUgc3R5bGUpIGlzIHVzdWFsbHkgbGl0ZXJhbAotKHRoaXMgaW5jbHVkZXMgZG9jdW1lbnQvbGl0ZXJhbCwgYW5kIHNvbWV0aW1lcyBycGMvbGl0ZXJhbCkuPC9saT4KLQotPGxpPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Qb3J0PC9zcGFuPjogYSBzaW5nbGUgZW5kcG9pbnQgZGVmaW5lZCBhcyBhIGNvbWJpbmF0aW9uCi1vZiBhIGJpbmRpbmcgYW5kIGEgbmV0d29yayBhZGRyZXNzLjwvbGk+Ci0KLTxsaT4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+U2VydmljZTwvc3Bhbj46IGEgY29sbGVjdGlvbiBvZiByZWxhdGVkIGVuZHBvaW50cy48L2xpPgotCi08L3VsPgotPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gV1NETCwgcmVmZXIgdG8gIDwvcD4KLTxwPjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3dzZGwiIHRhcmdldD0iX2JsYW5rIj53d3cudzMub3JnL1RSL3dzZGw8L2E+PC9wPgotPHA+VGhlCi12YXJpb3VzIFdTREwgZWxlbWVudHMgY2FuIGJlIHN0cnVjdHVyZWQgaW4gbWFueSB3YXlzLiBJdCBjYW4gYmUgaW4gb25lIHNpbmdsZQotV1NETCBmaWxlIG9yIGluIG11bHRpcGxlIFdTREwgZmlsZXMuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsLmh0bWwiIHRpdGxlPSJXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIGlzIGEgc3RhbmRhcmQgc3BlY2lmaWNhdGlvbiBmb3IgZGVzY3JpYmluZyBuZXR3b3JrZWQsIFhNTC1iYXNlZCBzZXJ2aWNlcy4gSXQgcHJvdmlkZXMgYSBzaW1wbGUgd2F5IGZvciBzZXJ2aWNlIHByb3ZpZGVycyB0byBkZXNjcmliZSB0aGUgYmFzaWMgZm9ybWF0IG9mIHJlcXVlc3RzIHRvIHRoZWlyIHN5c3RlbXMgcmVnYXJkbGVzcyBvZiB0aGUgdW5kZXJseWluZyBydW4tdGltZSBpbXBsZW1lbnRhdGlvbi4iPldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCk8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3cy5odG1sIiB0aXRsZT0iQSBXZWIgc2VydmljZSBpcyBhIHNldCBvZiByZWxhdGVkIGFwcGxpY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGludm9rZWQgb3ZlciB0aGUgSW50ZXJuZXQuIEJ1c2luZXNzZXMgY2FuIGR5bmFtaWNhbGx5IG1peCBhbmQgbWF0Y2ggV2ViIHNlcnZpY2VzIHRvIHBlcmZvcm0gY29tcGxleCB0cmFuc2FjdGlvbnMgd2l0aCBtaW5pbWFsIHByb2dyYW1taW5nLiBXZWIgc2VydmljZXMgYWxsb3cgYnV5ZXJzIGFuZCBzZWxsZXJzIGFsbCBvdmVyIHRoZSB3b3JsZCB0byBkaXNjb3ZlciBlYWNoIG90aGVyLCBjb25uZWN0IGR5bmFtaWNhbGx5LCBhbmQgZXhlY3V0ZSB0cmFuc2FjdGlvbnMgaW4gcmVhbCB0aW1lIHdpdGggbWluaW1hbCBodW1hbiBpbnRlcmFjdGlvbi4iPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzZGwuaHRtbCIgdGl0bGU9IldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkgaXMgYSBzdGFuZGFyZCBzcGVjaWZpY2F0aW9uIGZvciBkZXNjcmliaW5nIG5ldHdvcmtlZCwgWE1MLWJhc2VkIHNlcnZpY2VzLiBJdCBwcm92aWRlcyBhIHNpbXBsZSB3YXkgZm9yIHNlcnZpY2UgcHJvdmlkZXJzIHRvIGRlc2NyaWJlIHRoZSBiYXNpYyBmb3JtYXQgb2YgcmVxdWVzdHMgdG8gdGhlaXIgc3lzdGVtcyByZWdhcmRsZXNzIG9mIHRoZSB1bmRlcmx5aW5nIHJ1bi10aW1lIGltcGxlbWVudGF0aW9uLiI+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKTwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBUYXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3Rhc2tzL3RvdmVyd3MuaHRtbCI+IERldmVsb3BpbmcgV2ViCi1zZXJ2aWNlczwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1ZGRpZXhwLmh0bWwiPiBVc2luZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzZGxwcmVmLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzZGxwcmVmLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNmY3YTQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RscHJlZi5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSByZWZlcmVuY2UgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgUmVmZXJlbmNlLy9FTiINCi0gInJlZmVyZW5jZS5kdGQiPg0KLTxyZWZlcmVuY2UgaWQ9IndzZGxmaWxlc3ByZWZlcmVuY2VzIiB4bWw6bGFuZz0iZW4tdXMiPg0KLTx0aXRsZT5XU0RMIGZpbGUgcHJlZmVyZW5jZXM8L3RpdGxlPg0KLTxzaG9ydGRlc2M+VXNlIHRoZSBXU0RMIEZpbGVzIHByZWZlcmVuY2VzIHBhZ2UgdG8gc2V0IHRoZSBkZWZhdWx0IGJlaGF2aW9yDQotd2hlbiBjcmVhdGluZyBvciBzYXZpbmcgV1NETCBmaWxlcy48L3Nob3J0ZGVzYz4NCi08cHJvbG9nPjxtZXRhZGF0YT4NCi08a2V5d29yZHM+PGluZGV4dGVybT5wcmVmZXJlbmNlczxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5XU0RMPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+DQotPGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPnByZWZlcmVuY2VzPGluZGV4dGVybT5XU0RMPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9pbmRleHRlcm0+DQotPC9rZXl3b3Jkcz4NCi08L21ldGFkYXRhPjwvcHJvbG9nPg0KLTxyZWZib2R5Pg0KLTxzZWN0aW9uPjxkbD48ZGxlbnRyeT4NCi08ZHQ+RGVmYXVsdCB0YXJnZXQgbmFtZXNwYWNlOjwvZHQ+DQotPGRkPldoZW4gY3JlYXRpbmcgYSBXU0RMIGZpbGUgaW4gdGhlIFdTREwgZWRpdG9yLCB5b3UgY2FuIHNldCB0aGUgZGVmYXVsdA0KLXRhcmdldCBuYW1lc3BhY2UuIElmIHlvdSBkbyBub3Qgc2VsZWN0IHRvIGNoYW5nZSB0aGUgZGVmYXVsdCwgeW91ciBXU0RMIGZpbGUNCi13aWxsIGhhdmUgaHR0cDovL3RlbXB1cmkub3JnIGFzIGl0cyB0YXJnZXQgbmFtZXNwYWNlLjwvZGQ+DQotPC9kbGVudHJ5PjxkbGVudHJ5Pg0KLTxkdD5SZWdlbmVyYXRlIEJpbmRpbmcgb24gc2F2ZTwvZHQ+DQotPGRkPlNlbGVjdCB0aGlzIHRvIGF1dG9tYXRpY2FsbHkgcmVnZW5lcmF0ZSB0aGUgYmluZGluZyBldmVyeSB0aW1lIHlvdSBzYXZlDQotYSBXU0RMIGZpbGUuPC9kZD4NCi08L2RsZW50cnk+PGRsZW50cnk+DQotPGR0PlByb21wdCBSZWdlbmVyYXRlIEJpbmRpbmcgb24gc2F2ZTwvZHQ+DQotPGRkPlNlbGVjdCB0aGlzIHRvIGJlIGFza2VkIGlmIHlvdSB3YW50IHRvIHJlZ2VuZXJhdGUgdGhlIGJpbmRpbmcgZXZlcnkgdGltZQ0KLXlvdSBzYXZlIGEgV1NETCBmaWxlLjwvZGQ+DQotPC9kbGVudHJ5PjwvZGw+PC9zZWN0aW9uPg0KLTwvcmVmYm9keT4NCi08L3JlZmVyZW5jZT4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzZGxwcmVmLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzZGxwcmVmLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMGIzMjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c2RscHJlZi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InJlZmVyZW5jZSIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJXU0RMIGZpbGUgcHJlZmVyZW5jZXMiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iVXNlIHRoZSBXU0RMIEZpbGVzIHByZWZlcmVuY2VzIHBhZ2UgdG8gc2V0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gY3JlYXRpbmcgb3Igc2F2aW5nIFdTREwgZmlsZXMuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlVzZSB0aGUgV1NETCBGaWxlcyBwcmVmZXJlbmNlcyBwYWdlIHRvIHNldCB0aGUgZGVmYXVsdCBiZWhhdmlvciB3aGVuIGNyZWF0aW5nIG9yIHNhdmluZyBXU0RMIGZpbGVzLiIgLz4KLTxtZXRhIGNvbnRlbnQ9InByZWZlcmVuY2VzLCBXZWIgc2VydmljZXMsIFdTREwiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJwcmVmZXJlbmNlcywgV2ViIHNlcnZpY2VzLCBXU0RMIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHdzcHJlZi5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IndzZGxmaWxlc3ByZWZlcmVuY2VzIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+V1NETCBmaWxlIHByZWZlcmVuY2VzPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ3c2RsZmlsZXNwcmVmZXJlbmNlcyI+PGEgbmFtZT0id3NkbGZpbGVzcHJlZmVyZW5jZXMiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPldTREwgZmlsZSBwcmVmZXJlbmNlczwvaDE+Ci0KLQotCi08ZGl2PjxwPlVzZSB0aGUgV1NETCBGaWxlcyBwcmVmZXJlbmNlcyBwYWdlIHRvIHNldCB0aGUgZGVmYXVsdCBiZWhhdmlvcgotd2hlbiBjcmVhdGluZyBvciBzYXZpbmcgV1NETCBmaWxlcy48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxkbD4KLTxkdCBjbGFzcz0iZGx0ZXJtIj5EZWZhdWx0IHRhcmdldCBuYW1lc3BhY2U6PC9kdD4KLQotPGRkPldoZW4gY3JlYXRpbmcgYSBXU0RMIGZpbGUgaW4gdGhlIFdTREwgZWRpdG9yLCB5b3UgY2FuIHNldCB0aGUgZGVmYXVsdAotdGFyZ2V0IG5hbWVzcGFjZS4gSWYgeW91IGRvIG5vdCBzZWxlY3QgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LCB5b3VyIFdTREwgZmlsZQotd2lsbCBoYXZlIGh0dHA6Ly90ZW1wdXJpLm9yZyBhcyBpdHMgdGFyZ2V0IG5hbWVzcGFjZS48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5SZWdlbmVyYXRlIEJpbmRpbmcgb24gc2F2ZTwvZHQ+Ci0KLTxkZD5TZWxlY3QgdGhpcyB0byBhdXRvbWF0aWNhbGx5IHJlZ2VuZXJhdGUgdGhlIGJpbmRpbmcgZXZlcnkgdGltZSB5b3Ugc2F2ZQotYSBXU0RMIGZpbGUuPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+UHJvbXB0IFJlZ2VuZXJhdGUgQmluZGluZyBvbiBzYXZlPC9kdD4KLQotPGRkPlNlbGVjdCB0aGlzIHRvIGJlIGFza2VkIGlmIHlvdSB3YW50IHRvIHJlZ2VuZXJhdGUgdGhlIGJpbmRpbmcgZXZlcnkgdGltZQoteW91IHNhdmUgYSBXU0RMIGZpbGUuPC9kZD4KLQotPC9kbD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90YXNrcy90d3NwcmVmLmh0bWwiIHRpdGxlPSJCZWZvcmUgeW91IGJlZ2luIGRldmVsb3BpbmcgV2ViIHNlcnZpY2VzIG9yIGNsaWVudHMsIHlvdSBjYW4gb3B0aW1pemUgdGhlIHdvcmtiZW5jaCBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGJ5IHNldHRpbmcgYSB2YXJpZXR5IG9mIHByZWZlcmVuY2VzLiI+U2V0dGluZyBXZWIgc2VydmljZXMgcHJlZmVyZW5jZXM8L2E+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c3dpenByZWYuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yd3N3aXpwcmVmLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZTQzMWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c3dpenByZWYuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4NCi08IURPQ1RZUEUgcmVmZXJlbmNlIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFJlZmVyZW5jZS8vRU4iDQotICJyZWZlcmVuY2UuZHRkIj4NCi08cmVmZXJlbmNlIGlkPSJ3ZWJzZXJ2aWNlc3dpemFyZHNiYXNpY3ByZWZlcmVuY2VzIiB4bWw6bGFuZz0iZW4tdXMiPg0KLTx0aXRsZT5XZWIgc2VydmljZXMgd2l6YXJkcyBiYXNpYyBwcmVmZXJlbmNlczwvdGl0bGU+DQotPHNob3J0ZGVzYz5UaGUgZGVmYXVsdCBiZWhhdmlvcnMgb2YgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmRzIGNhbiBiZSBzZXQgdXNpbmcNCi10aGUgZm9sbG93aW5nIHByZWZlcmVuY2UgcGFuZWxzLiBBbGwgcHJlZmVyZW5jZXMgY2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlDQotd2l6YXJkLjwvc2hvcnRkZXNjPg0KLTxwcm9sb2c+PG1ldGFkYXRhPg0KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPnByZWZlcmVuY2VzPGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPndpemFyZHM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT4NCi08aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+cHJlZmVyZW5jZXM8aW5kZXh0ZXJtPndpemFyZHM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT4NCi08L2tleXdvcmRzPg0KLTwvbWV0YWRhdGE+PC9wcm9sb2c+DQotPHJlZmJvZHk+DQotPHNlY3Rpb24+PHRpdGxlPlBvcHVwIERpYWxvZyBTZWxlY3Rpb248L3RpdGxlPjxwPlRoZSBkaWFsb2cgcHJlZmVyZW5jZXMgZW5hYmxlDQoteW91IHRvIGRldGVybWluZSB3aGljaCBkaWFsb2cgYm94ZXMgdGhhdCB5b3Ugd2FudCB0byBzZWUgd2hlbiBydW5uaW5nIHBvcHVwDQotYWN0aW9ucy4gSWYgeW91IGhhdmUgZGlzYWJsZWQgYW55IG9mIHRoZSBkaWFsb2dzIGJ5IHNlbGVjdGluZyAiRG8gbm90IHNob3cNCi10aGlzIGRpYWxvZyBhZ2FpbiIgb24gdGhlIGZpcnN0IHBhZ2Ugb2YgYSBXZWIgc2VydmljZXMgd2l6YXJkLCB5b3UgY2FuIHVuZG8NCi15b3VyIGNoYW5nZSBieSBjbGVhcmluZyB0aGUgY2hlY2sgYm94IGJlc2lkZSB0aGUgZGlhbG9nIHRoYXQgeW91IGhhdmUgY2hvc2VuDQotdG8gaGlkZS48L3A+PC9zZWN0aW9uPg0KLTxzZWN0aW9uPjx0aXRsZT5Qcm9qZWN0IFRvcG9sb2d5PC90aXRsZT48ZGw+PGRsZW50cnk+DQotPGR0PlNlcnZpY2UgcHJvamVjdCB0eXBlczo8L2R0Pg0KLTxkZD5TZWxlY3QgdGhlIGRlZmF1bHQgc2VydmljZSBwcm9qZWN0IHR5cGUgdGhhdCB0aGUgV2ViIHNlcnZpY2VzIHdpemFyZHMNCi13aWxsIGNyZWF0ZSB3aGVuIGdlbmVyYXRpbmcgYSBXZWIgc2VydmljZS4gWW91IGNhbiBhbHNvIHNldCB0aGUgb3JkZXIgaW4gd2hpY2gNCi10aGUgcHJvamVjdCB0eXBlcyB3aWxsIGJlIGxpc3RlZCBpbiB0aGUgd2l6YXJkLiBOb3RlIHRoYXQgdGhpcyBzZWxlY3Rpb24gaXMNCi1zaW1wbHkgYSBkZWZhdWx0IGFuZCBhbiBhbHRlcm5hdGUgcHJvamVjdCB0eXBlIGNhbiBiZSBzZWxlY3RlZCBpbiB0aGUgd2l6YXJkLjwvZGQ+DQotPC9kbGVudHJ5PjxkbGVudHJ5Pg0KLTxkdD5DbGllbnQgcHJvamVjdCB0eXBlczo8L2R0Pg0KLTxkZD5TZWxlY3QgdGhlIGRlZmF1bHQgY2xpZW50IHByb2plY3QgdHlwZSB0aGF0IHRoZSBXZWIgc2VydmljZXMgd2l6YXJkcyB3aWxsDQotY3JlYXRlIHdoZW4gZ2VuZXJhdGluZyBhIFdlYiBzZXJ2aWNlIGNsaWVudC4gWW91IGNhbiBhbHNvIHNldCB0aGUgb3JkZXIgaW4NCi13aGljaCB0aGUgY2xpZW50IHByb2plY3QgdHlwZXMgd2lsbCBiZSBsaXN0ZWQgaW4gdGhlIHdpemFyZC4gTm90ZSB0aGF0IHRoaXMNCi1zZWxlY3Rpb24gaXMgc2ltcGx5IGEgZGVmYXVsdCBhbmQgYW4gYWx0ZXJuYXRlIHByb2plY3QgdHlwZSBjYW4gYmUgc2VsZWN0ZWQNCi1pbiB0aGUgd2l6YXJkLjwvZGQ+DQotPC9kbGVudHJ5PjxkbGVudHJ5Pg0KLTxkdD5HZW5lcmF0ZSBXZWIgc2VydmljZSBhbmQgdGhlIFdlYiBzZXJ2aWNlIGNsaWVudCBpbiBkaWZmZXJlbnQgRUFSIHByb2plY3RzOjwvZHQ+DQotPGRkPkdlbmVyYXRpbmcgdGhlIHNlcnZpY2UgYW5kIGNsaWVudCBpbnRvIGRpZmZlcmVudCBFQVIgcHJvamVjdHMgY2FuIHJlZHVjZQ0KLXRoZSBjaGFuY2Ugb2YgY29uZmxpY3RzIHRoYXQgb2NjdXIgd2hlbiBib3RoIGV4aXN0IGluIGEgc2luZ2xlIEVBUiBwcm9qZWN0LA0KLWJ1dCB1c2VzIG1vcmUgc3lzdGVtIHJlc291cmNlcy48L2RkPg0KLTwvZGxlbnRyeT48L2RsPjwvc2VjdGlvbj4NCi08c2VjdGlvbj48dGl0bGU+UmVzb3VyY2UgTWFuYWdlbWVudDwvdGl0bGU+PHA+VGhlIFJlc291cmNlIE1hbmFnZW1lbnQgcHJlZmVyZW5jZXMNCi1lbmFibGUgeW91IHRvIGRldGVybWluZSB0aGUgZmlsZSBhbmQgZm9sZGVyIGNyZWF0aW9uIGFuZCBvdmVyd3JpdGluZyBkZWZhdWx0cw0KLXRoYXQgeW91IHdhbnQgdG8gdXNlIHdoZW4gY3JlYXRpbmcgeW91ciBXZWIgc2VydmljZS48ZGw+PGRsZW50cnk+DQotPGR0Pk92ZXJ3cml0ZSBmaWxlcyB3aXRob3V0IHdhcm5pbmc6PC9kdD4NCi08ZGQ+U2VsZWN0aW5nIHRoaXMgd2lsbCBhbGxvdyB0aGUgd2l6YXJkcyB0byBvdmVyd3JpdGUgYW55IGV4aXN0aW5nIGZpbGVzDQotaW4gdGhlIHdvcmtzcGFjZSB3aXRob3V0IHByb21wdGluZy4gSWYgaXQgaXMgbm90IHNlbGVjdGVkIHlvdSB3aWxsIGJlIHByb21wdGVkDQotZWFjaCB0aW1lIGEgZmlsZSBuZWVkcyB0byBiZSBvdmVyd3JpdHRlbi48L2RkPg0KLTwvZGxlbnRyeT48ZGxlbnRyeT4NCi08ZHQ+Q3JlYXRlIGZvbGRlcnMgd2hlbiBuZWNlc3Nhcnk6PC9kdD4NCi08ZGQ+U2VsZWN0aW5nIHRoaXMgZW5hYmxlcyB0aGUgd2l6YXJkcyB0byBjcmVhdGUgYW55IHJlcXVpcmVkIGZvbGRlcnMuPC9kZD4NCi08L2RsZW50cnk+PGRsZW50cnk+DQotPGR0PkNoZWNrIG91dCBmaWxlcyB3aXRob3V0IHdhcm5pbmc6PC9kdD4NCi08ZGQ+U2VsZWN0IHRvIGNoZWNrIG91dCBmaWxlcyB3aXRob3V0IHJlY2VpdmluZyBhIHdhcm5pbmcgbWVzc2FnZSBhc2tpbmcgZm9yDQotY29uZmlybWF0aW9uLjwvZGQ+DQotPC9kbGVudHJ5PjxkbGVudHJ5Pg0KLTxkdD5NZXJnZSBnZW5lcmF0ZWQgc2tlbGV0b24gZmlsZTo8L2R0Pg0KLTxkZD5UaGlzIGNoZWNrIGJveCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LiAgSWYgdGhpcyBjaGVjayBib3ggaXMgZW5hYmxlZCwNCi13aGVuIGEgc2tlbGV0b24gZmlsZSBvZiB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzIGluIHRoZSB3b3Jrc3BhY2UsIHRoZQ0KLW5ld2x5IGdlbmVyYXRlZCBza2VsZXRvbiBmaWxlIHdpbGwgbWVyZ2Ugd2l0aCB0aGUgZXhpc3Rpbmcgc2tlbGV0b24gZmlsZS4NCi0gRW5hYmxlIHRoaXMgdG8gcHJlc2VydmUgY29kZSB0aGF0IHlvdSBoYXZlIGFscmVhZHkgbW9kaWZpZWQgaW4gdGhlIGV4aXN0aW5nDQotc2tlbGV0b24gZmlsZXMuPG5vdGU+V2hlbiB0aGlzIHByZWZlcmVuY2UgaXMgZW5hYmxlZCwgaWYgeW91IGNoYW5nZSB0aGUgcmV0dXJuDQotdHlwZSBvZiBhbiBpbnRlcmZhY2UsIHRoZSByZXN1bHRpbmcgc2tlbGV0b24gZmlsZSB3aWxsIGhhdmUgYSBtZXRob2QgcmV0dXJuaW5nDQotdGhlIHR5cGUgYXMgZGVmaW5lZCBpbiB0aGUgbmV3IGludGVyZmFjZSBidXQgd291bGQgaGF2ZSBhIG1ldGhvZCBib2R5IGZyb20NCi10aGUgb3JpZ2luYWwgc2tlbGV0b24gZmlsZSAod2hpY2ggd291bGQgYmUgcmV0dXJuaW5nIGEgZGlmZmVyZW50IHR5cGUpLiAgVGhpcw0KLXdpbGwgcmVzdWx0IGluIGFuIGNvbXBpbGF0aW9uIGVycm9yIHRoYXQgdGhlIHlvdSB3aWxsIGhhdmUgdG8gY29ycmVjdCBtYW51YWxseS48L25vdGU+PC9kZD4NCi08L2RsZW50cnk+PC9kbD48L3A+PC9zZWN0aW9uPg0KLTxzZWN0aW9uPjx0aXRsZT5TY2VuYXJpbyBEZWZhdWx0czwvdGl0bGU+PHA+VGhlIFNjZW5hcmlvIERlZmF1bHRzIHByZWZlcmVuY2VzDQotZW5hYmxlIHlvdSB0byBzZXQgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyBkZWZhdWx0cyB0aGF0IHlvdSB3YW50IHRvIHVzZSB3aGVuDQotY3JlYXRpbmcgeW91ciBXZWIgc2VydmljZTo8dWw+DQotPGxpPndoaWNoIHR5cGUgb2YgV2ViIHNlcnZpY2UgYW5kIGNsaWVudCB5b3Ugd2FudCB0byBiZSBzZWxlY3RlZCBieSBkZWZhdWx0LjwvbGk+DQotPGxpPndoaWNoIHBoYXNlcyBvZiB0aGUgV2ViIHNlcnZpY2UgbGlmZWN5Y2xlIHlvdSB3YW50IHRvIGNvbXBsZXRlIGluIHRoZQ0KLXdpemFyZC48L2xpPg0KLTxsaT5pZiB5b3Ugd2FudCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHRvIGxhdW5jaCBieSBkZWZhdWx0IHNvIHRoYXQgeW91DQotY2FuIHB1Ymxpc2ggeW91ciBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnkuPC9saT4NCi08bGk+aWYgeW91IHdhbnQgdGhlIFdlYiBzZXJ2aWNlIFNPQVAgdHJhZmZpYyByb3V0ZWQgdGhyb3VnaCBhIFRDUC9JUCBtb25pdG9yDQotc28gdGhhdCB5b3UgY2FuIG1vbml0b3IgdGhlIFNPQVAgcGFja2V0cyBhbmQgb3B0aW9uYWxseSB0ZXN0IHRoZW0gZm9yIFdTLUkNCi1jb21wbGlhbmNlLjwvbGk+DQotPC91bD48L3A+PC9zZWN0aW9uPg0KLTxzZWN0aW9uPjx0aXRsZT5TZXJ2ZXIgYW5kIFJ1bnRpbWU8L3RpdGxlPjxwPlNlbGVjdCB0aGUgc2VydmVyIGFuZCBXZWIgc2VydmljZQ0KLXJ1bnRpbWUgZW52aXJvbm1lbnQgdGhhdCB5b3Ugd2FudCBzZWxlY3RlZCBieSBkZWZhdWx0IGluIHRoZSBXZWIgc2VydmljZXMNCi13aXphcmQuPC9wPjwvc2VjdGlvbj4NCi08c2VjdGlvbj48dGl0bGU+VGVzdCBGYWNpbGl0eSBEZWZhdWx0czwvdGl0bGU+PHA+WW91IGNhbiBzZWxlY3Qgd2hldGhlciB0bw0KLWhhdmUgdGhlIHdpemFyZCBhdXRvbWF0aWNhbGx5IGxhdW5jaCBhIHRlc3QgZmFjaWxpdHksIGFuZCB5b3UgY2FuIHNlbGVjdCB5b3VyDQotcHJlZmVycmVkIHR5cGUgb2YgdGVzdCBmYWNpbGl0eS48L3A+PC9zZWN0aW9uPg0KLTxzZWN0aW9uPjx0aXRsZT5XaXphcmQgdmFsaWRhdGlvbjwvdGl0bGU+PHA+VGhlIFdpemFyZCBWYWxpZGF0aW9uIHByZWZlcmVuY2VzDQotcGFnZSBhbGxvd3MgeW91IHRvIHNlbGVjdCB3aGVuIFdTREwgdmFsaWRhdGlvbiBpcyBydW4gYWdhaW5zdCBXU0RMIGZpbGVzIGNvbnN1bWVkDQotYnkgd2l6YXJkcy4gWW91IGNhbiBzZWxlY3QgdG8gdHVybiBvZmYgdmFsaWRpYXRpb24sIG9yIHRvIGVuYWJsZSBpdCBmb3IgbG9jYWwNCi1vciBsb2NhbCBhbmQgcmVtb3RlIFdTREwgZmlsZXMuPC9wPjwvc2VjdGlvbj4NCi08L3JlZmJvZHk+DQotPC9yZWZlcmVuY2U+DQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c3dpenByZWYuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yd3N3aXpwcmVmLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2OTc1NmMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3J3c3dpenByZWYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0icmVmZXJlbmNlIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcyB3aXphcmRzIGJhc2ljIHByZWZlcmVuY2VzIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IlRoZSBkZWZhdWx0IGJlaGF2aW9ycyBvZiB0aGUgV2ViIHNlcnZpY2VzIHdpemFyZHMgY2FuIGJlIHNldCB1c2luZyB0aGUgZm9sbG93aW5nIHByZWZlcmVuY2UgcGFuZWxzLiBBbGwgcHJlZmVyZW5jZXMgY2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIHdpemFyZC4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVGhlIGRlZmF1bHQgYmVoYXZpb3JzIG9mIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkcyBjYW4gYmUgc2V0IHVzaW5nIHRoZSBmb2xsb3dpbmcgcHJlZmVyZW5jZSBwYW5lbHMuIEFsbCBwcmVmZXJlbmNlcyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgd2l6YXJkLiIgLz4KLTxtZXRhIGNvbnRlbnQ9InByZWZlcmVuY2VzLCBXZWIgc2VydmljZXMsIHdpemFyZHMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJwcmVmZXJlbmNlcywgV2ViIHNlcnZpY2VzLCB3aXphcmRzIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdHdzcHJlZi5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IndlYnNlcnZpY2Vzd2l6YXJkc2Jhc2ljcHJlZmVyZW5jZXMiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5XZWIgc2VydmljZXMgd2l6YXJkcyBiYXNpYyBwcmVmZXJlbmNlczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0id2Vic2VydmljZXN3aXphcmRzYmFzaWNwcmVmZXJlbmNlcyI+PGEgbmFtZT0id2Vic2VydmljZXN3aXphcmRzYmFzaWNwcmVmZXJlbmNlcyI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+V2ViIHNlcnZpY2VzIHdpemFyZHMgYmFzaWMgcHJlZmVyZW5jZXM8L2gxPgotCi0KLQotPGRpdj48cD5UaGUgZGVmYXVsdCBiZWhhdmlvcnMgb2YgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmRzIGNhbiBiZSBzZXQgdXNpbmcKLXRoZSBmb2xsb3dpbmcgcHJlZmVyZW5jZSBwYW5lbHMuIEFsbCBwcmVmZXJlbmNlcyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUKLXdpemFyZC48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxoNCBjbGFzcz0ic2VjdGlvbnRpdGxlIj5Qb3B1cCBEaWFsb2cgU2VsZWN0aW9uPC9oND48cD5UaGUgZGlhbG9nIHByZWZlcmVuY2VzIGVuYWJsZQoteW91IHRvIGRldGVybWluZSB3aGljaCBkaWFsb2cgYm94ZXMgdGhhdCB5b3Ugd2FudCB0byBzZWUgd2hlbiBydW5uaW5nIHBvcHVwCi1hY3Rpb25zLiBJZiB5b3UgaGF2ZSBkaXNhYmxlZCBhbnkgb2YgdGhlIGRpYWxvZ3MgYnkgc2VsZWN0aW5nICJEbyBub3Qgc2hvdwotdGhpcyBkaWFsb2cgYWdhaW4iIG9uIHRoZSBmaXJzdCBwYWdlIG9mIGEgV2ViIHNlcnZpY2VzIHdpemFyZCwgeW91IGNhbiB1bmRvCi15b3VyIGNoYW5nZSBieSBjbGVhcmluZyB0aGUgY2hlY2sgYm94IGJlc2lkZSB0aGUgZGlhbG9nIHRoYXQgeW91IGhhdmUgY2hvc2VuCi10byBoaWRlLjwvcD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+UHJvamVjdCBUb3BvbG9neTwvaDQ+PGRsPgotPGR0IGNsYXNzPSJkbHRlcm0iPlNlcnZpY2UgcHJvamVjdCB0eXBlczo8L2R0PgotCi08ZGQ+U2VsZWN0IHRoZSBkZWZhdWx0IHNlcnZpY2UgcHJvamVjdCB0eXBlIHRoYXQgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmRzCi13aWxsIGNyZWF0ZSB3aGVuIGdlbmVyYXRpbmcgYSBXZWIgc2VydmljZS4gWW91IGNhbiBhbHNvIHNldCB0aGUgb3JkZXIgaW4gd2hpY2gKLXRoZSBwcm9qZWN0IHR5cGVzIHdpbGwgYmUgbGlzdGVkIGluIHRoZSB3aXphcmQuIE5vdGUgdGhhdCB0aGlzIHNlbGVjdGlvbiBpcwotc2ltcGx5IGEgZGVmYXVsdCBhbmQgYW4gYWx0ZXJuYXRlIHByb2plY3QgdHlwZSBjYW4gYmUgc2VsZWN0ZWQgaW4gdGhlIHdpemFyZC48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5DbGllbnQgcHJvamVjdCB0eXBlczo8L2R0PgotCi08ZGQ+U2VsZWN0IHRoZSBkZWZhdWx0IGNsaWVudCBwcm9qZWN0IHR5cGUgdGhhdCB0aGUgV2ViIHNlcnZpY2VzIHdpemFyZHMgd2lsbAotY3JlYXRlIHdoZW4gZ2VuZXJhdGluZyBhIFdlYiBzZXJ2aWNlIGNsaWVudC4gWW91IGNhbiBhbHNvIHNldCB0aGUgb3JkZXIgaW4KLXdoaWNoIHRoZSBjbGllbnQgcHJvamVjdCB0eXBlcyB3aWxsIGJlIGxpc3RlZCBpbiB0aGUgd2l6YXJkLiBOb3RlIHRoYXQgdGhpcwotc2VsZWN0aW9uIGlzIHNpbXBseSBhIGRlZmF1bHQgYW5kIGFuIGFsdGVybmF0ZSBwcm9qZWN0IHR5cGUgY2FuIGJlIHNlbGVjdGVkCi1pbiB0aGUgd2l6YXJkLjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkdlbmVyYXRlIFdlYiBzZXJ2aWNlIGFuZCB0aGUgV2ViIHNlcnZpY2UgY2xpZW50IGluIGRpZmZlcmVudCBFQVIgcHJvamVjdHM6PC9kdD4KLQotPGRkPkdlbmVyYXRpbmcgdGhlIHNlcnZpY2UgYW5kIGNsaWVudCBpbnRvIGRpZmZlcmVudCBFQVIgcHJvamVjdHMgY2FuIHJlZHVjZQotdGhlIGNoYW5jZSBvZiBjb25mbGljdHMgdGhhdCBvY2N1ciB3aGVuIGJvdGggZXhpc3QgaW4gYSBzaW5nbGUgRUFSIHByb2plY3QsCi1idXQgdXNlcyBtb3JlIHN5c3RlbSByZXNvdXJjZXMuPC9kZD4KLQotPC9kbD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+UmVzb3VyY2UgTWFuYWdlbWVudDwvaDQ+PGRpdiBjbGFzcz0icCI+VGhlIFJlc291cmNlIE1hbmFnZW1lbnQgcHJlZmVyZW5jZXMKLWVuYWJsZSB5b3UgdG8gZGV0ZXJtaW5lIHRoZSBmaWxlIGFuZCBmb2xkZXIgY3JlYXRpb24gYW5kIG92ZXJ3cml0aW5nIGRlZmF1bHRzCi10aGF0IHlvdSB3YW50IHRvIHVzZSB3aGVuIGNyZWF0aW5nIHlvdXIgV2ViIHNlcnZpY2UuPGRsPgotPGR0IGNsYXNzPSJkbHRlcm0iPk92ZXJ3cml0ZSBmaWxlcyB3aXRob3V0IHdhcm5pbmc6PC9kdD4KLQotPGRkPlNlbGVjdGluZyB0aGlzIHdpbGwgYWxsb3cgdGhlIHdpemFyZHMgdG8gb3ZlcndyaXRlIGFueSBleGlzdGluZyBmaWxlcwotaW4gdGhlIHdvcmtzcGFjZSB3aXRob3V0IHByb21wdGluZy4gSWYgaXQgaXMgbm90IHNlbGVjdGVkIHlvdSB3aWxsIGJlIHByb21wdGVkCi1lYWNoIHRpbWUgYSBmaWxlIG5lZWRzIHRvIGJlIG92ZXJ3cml0dGVuLjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkNyZWF0ZSBmb2xkZXJzIHdoZW4gbmVjZXNzYXJ5OjwvZHQ+Ci0KLTxkZD5TZWxlY3RpbmcgdGhpcyBlbmFibGVzIHRoZSB3aXphcmRzIHRvIGNyZWF0ZSBhbnkgcmVxdWlyZWQgZm9sZGVycy48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5DaGVjayBvdXQgZmlsZXMgd2l0aG91dCB3YXJuaW5nOjwvZHQ+Ci0KLTxkZD5TZWxlY3QgdG8gY2hlY2sgb3V0IGZpbGVzIHdpdGhvdXQgcmVjZWl2aW5nIGEgd2FybmluZyBtZXNzYWdlIGFza2luZyBmb3IKLWNvbmZpcm1hdGlvbi48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5NZXJnZSBnZW5lcmF0ZWQgc2tlbGV0b24gZmlsZTo8L2R0PgotCi08ZGQ+VGhpcyBjaGVjayBib3ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIElmIHRoaXMgY2hlY2sgYm94IGlzIGVuYWJsZWQsCi13aGVuIGEgc2tlbGV0b24gZmlsZSBvZiB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzIGluIHRoZSB3b3Jrc3BhY2UsIHRoZQotbmV3bHkgZ2VuZXJhdGVkIHNrZWxldG9uIGZpbGUgd2lsbCBtZXJnZSB3aXRoIHRoZSBleGlzdGluZyBza2VsZXRvbiBmaWxlLgotIEVuYWJsZSB0aGlzIHRvIHByZXNlcnZlIGNvZGUgdGhhdCB5b3UgaGF2ZSBhbHJlYWR5IG1vZGlmaWVkIGluIHRoZSBleGlzdGluZwotc2tlbGV0b24gZmlsZXMuPGRpdiBjbGFzcz0ibm90ZSI+PHNwYW4gY2xhc3M9Im5vdGV0aXRsZSI+Tm90ZTo8L3NwYW4+IFdoZW4gdGhpcyBwcmVmZXJlbmNlIGlzIGVuYWJsZWQsIGlmIHlvdSBjaGFuZ2UgdGhlIHJldHVybgotdHlwZSBvZiBhbiBpbnRlcmZhY2UsIHRoZSByZXN1bHRpbmcgc2tlbGV0b24gZmlsZSB3aWxsIGhhdmUgYSBtZXRob2QgcmV0dXJuaW5nCi10aGUgdHlwZSBhcyBkZWZpbmVkIGluIHRoZSBuZXcgaW50ZXJmYWNlIGJ1dCB3b3VsZCBoYXZlIGEgbWV0aG9kIGJvZHkgZnJvbQotdGhlIG9yaWdpbmFsIHNrZWxldG9uIGZpbGUgKHdoaWNoIHdvdWxkIGJlIHJldHVybmluZyBhIGRpZmZlcmVudCB0eXBlKS4gIFRoaXMKLXdpbGwgcmVzdWx0IGluIGFuIGNvbXBpbGF0aW9uIGVycm9yIHRoYXQgdGhlIHlvdSB3aWxsIGhhdmUgdG8gY29ycmVjdCBtYW51YWxseS48L2Rpdj4KLTwvZGQ+Ci0KLTwvZGw+Ci08L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+U2NlbmFyaW8gRGVmYXVsdHM8L2g0PjxkaXYgY2xhc3M9InAiPlRoZSBTY2VuYXJpbyBEZWZhdWx0cyBwcmVmZXJlbmNlcwotZW5hYmxlIHlvdSB0byBzZXQgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyBkZWZhdWx0cyB0aGF0IHlvdSB3YW50IHRvIHVzZSB3aGVuCi1jcmVhdGluZyB5b3VyIFdlYiBzZXJ2aWNlOjx1bD4KLTxsaT53aGljaCB0eXBlIG9mIFdlYiBzZXJ2aWNlIGFuZCBjbGllbnQgeW91IHdhbnQgdG8gYmUgc2VsZWN0ZWQgYnkgZGVmYXVsdC48L2xpPgotCi08bGk+d2hpY2ggcGhhc2VzIG9mIHRoZSBXZWIgc2VydmljZSBsaWZlY3ljbGUgeW91IHdhbnQgdG8gY29tcGxldGUgaW4gdGhlCi13aXphcmQuPC9saT4KLQotPGxpPmlmIHlvdSB3YW50IHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIgdG8gbGF1bmNoIGJ5IGRlZmF1bHQgc28gdGhhdCB5b3UKLWNhbiBwdWJsaXNoIHlvdXIgV2ViIHNlcnZpY2UgdG8gYSBVRERJIHJlZ2lzdHJ5LjwvbGk+Ci0KLTxsaT5pZiB5b3Ugd2FudCB0aGUgV2ViIHNlcnZpY2UgU09BUCB0cmFmZmljIHJvdXRlZCB0aHJvdWdoIGEgVENQL0lQIG1vbml0b3IKLXNvIHRoYXQgeW91IGNhbiBtb25pdG9yIHRoZSBTT0FQIHBhY2tldHMgYW5kIG9wdGlvbmFsbHkgdGVzdCB0aGVtIGZvciBXUy1JCi1jb21wbGlhbmNlLjwvbGk+Ci0KLTwvdWw+Ci08L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+U2VydmVyIGFuZCBSdW50aW1lPC9oND48cD5TZWxlY3QgdGhlIHNlcnZlciBhbmQgV2ViIHNlcnZpY2UKLXJ1bnRpbWUgZW52aXJvbm1lbnQgdGhhdCB5b3Ugd2FudCBzZWxlY3RlZCBieSBkZWZhdWx0IGluIHRoZSBXZWIgc2VydmljZXMKLXdpemFyZC48L3A+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGg0IGNsYXNzPSJzZWN0aW9udGl0bGUiPlRlc3QgRmFjaWxpdHkgRGVmYXVsdHM8L2g0PjxwPllvdSBjYW4gc2VsZWN0IHdoZXRoZXIgdG8KLWhhdmUgdGhlIHdpemFyZCBhdXRvbWF0aWNhbGx5IGxhdW5jaCBhIHRlc3QgZmFjaWxpdHksIGFuZCB5b3UgY2FuIHNlbGVjdCB5b3VyCi1wcmVmZXJyZWQgdHlwZSBvZiB0ZXN0IGZhY2lsaXR5LjwvcD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+V2l6YXJkIHZhbGlkYXRpb248L2g0PjxwPlRoZSBXaXphcmQgVmFsaWRhdGlvbiBwcmVmZXJlbmNlcwotcGFnZSBhbGxvd3MgeW91IHRvIHNlbGVjdCB3aGVuIFdTREwgdmFsaWRhdGlvbiBpcyBydW4gYWdhaW5zdCBXU0RMIGZpbGVzIGNvbnN1bWVkCi1ieSB3aXphcmRzLiBZb3UgY2FuIHNlbGVjdCB0byB0dXJuIG9mZiB2YWxpZGlhdGlvbiwgb3IgdG8gZW5hYmxlIGl0IGZvciBsb2NhbAotb3IgbG9jYWwgYW5kIHJlbW90ZSBXU0RMIGZpbGVzLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90YXNrcy90d3NwcmVmLmh0bWwiIHRpdGxlPSJCZWZvcmUgeW91IGJlZ2luIGRldmVsb3BpbmcgV2ViIHNlcnZpY2VzIG9yIGNsaWVudHMsIHlvdSBjYW4gb3B0aW1pemUgdGhlIHdvcmtiZW5jaCBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGJ5IHNldHRpbmcgYSB2YXJpZXR5IG9mIHByZWZlcmVuY2VzLiI+U2V0dGluZyBXZWIgc2VydmljZXMgcHJlZmVyZW5jZXM8L2E+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTA0NWY1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDUsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0b3ZlcndzIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPkRldmVsb3BpbmcgV2ViIHNlcnZpY2VzPC90aXRsZT4KLTxzaG9ydGRlc2M+VXNlIFdlYiBzZXJ2aWNlcyB0b29scyB0byBkaXNjb3ZlciwgY3JlYXRlLCBhbmQgcHVibGlzaCBXZWIgc2VydmljZXMKLXRoYXQgYXJlIGNyZWF0ZWQgZnJvbSA8dG0gdG1jbGFzcz0ic3BlY2lhbCIgdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiIKLXRtdHlwZT0idG0iIHRyYWRlbWFyaz0iSmF2YSI+SmF2YTwvdG0+IGJlYW5zLCBlbnRlcnByaXNlIGJlYW5zLCBhbmQgV1NETCBmaWxlcy4KLVlvdSBjYW4gY3JlYXRlIG9mIFdlYiBzZXJ2aWNlcyB1c2luZyBhIHRvcC1kb3duIGFwcHJvYWNoICh3aGljaCBzdGFydHMgd2l0aAotYSBXU0RMIGZpbGUpIG9yIGEgYm90dG9tLXVwIGFwcHJvYWNoICh3aGljaCBzdGFydHMgd2l0aCBhIDx0bSB0bWNsYXNzPSJzcGVjaWFsIgotdG1vd25lcj0iU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiIgdG10eXBlPSJ0bSIgdHJhZGVtYXJrPSJKYXZhIj5KYXZhPC90bT4gYmVhbgotb3IgRUpCKS48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5jcmVhdGluZzxpbmRleHRlcm0+b3ZlcnZpZXc8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+SW4gdGhpcyByZWxlYXNlLCB0aGUgZGV2ZWxvcG1lbnQgcGF0aCB0aGF0IHlvdSB3b3VsZCB0eXBpY2FsbHkKLWZvbGxvdyB0byBjcmVhdGUgYW5kIHB1Ymxpc2ggYSBXZWIgc2VydmljZSBpcyBhcyBmb2xsb3dzOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkNyZWF0ZSBhIFdlYiBwcm9qZWN0LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+Q3JlYXRlIG9yIGltcG9ydCBhbiBhcnRpZmFjdCB0byBiZSB0dXJuZWQgaW50byBhIFdlYiBzZXJ2aWNlLjwvY21kPgotPC9zdGVwPgotPHN0ZXA+PGNtZD5DcmVhdGUgYSBXZWIgc2VydmljZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPlB1Ymxpc2ggYSBidXNpbmVzcyBlbnRpdHkuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5QdWJsaXNoIGEgV2ViIHNlcnZpY2UuPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+PHA+Rm9yIGluc3RydWN0aW9ucyBvbiBwZXJmb3JtaW5nIHRoZXNlIHRhc2tzLCByZWZlciB0byB0aGUgbGlzdCBvZgotcmVsYXRlZCB0b3BpY3MgYXQgdGhlIGVuZCBvZiB0aGlzIHRvcGljLjwvcD48cD5XZWIgdG9vbHMgYXNzaXN0IHlvdSBpbiBkZXZlbG9waW5nCi1XZWIgYXBwbGljYXRpb25zIHRoYXQgeW91IGNhbiBjb25maWd1cmUgYXMgYSBXZWIgc2VydmljZS4gV2ViIGFwcGxpY2F0aW9ucwotYXJlIGRldmVsb3BlZCBpbiBhIFdlYiBwcm9qZWN0LCBhbmQgU2VydmVyIHRvb2xzIGFsbG93IHlvdSB0byB1c2UgdGhlIHNlcnZlcgotdGVzdCBlbnZpcm9ubWVudCB0byB0ZXN0IGFuZCBkZXBsb3kgeW91ciBXZWIgc2VydmljZXMuPC9wPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIENvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N3cy5kaXRhIiBzY29wZT0ibG9jYWwiPjxsaW5rdGV4dD5XZWIgc2VydmljZXMgb3ZlcnZpZXc8L2xpbmt0ZXh0PgotPC9saW5rPgotPGxpbmsgaHJlZj0iLi4vY29uY2VwdHMvY3dzaW53c2EuZGl0YSIgc2NvcGU9ImxvY2FsIj48bGlua3RleHQ+VG9vbHMgZm9yIFdlYgotc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2J0bXVwLmRpdGEiIHNjb3BlPSJsb2NhbCI+PGxpbmt0ZXh0PkNyZWF0aW5nIGJvdHRvbS11cAotV2ViIHNlcnZpY2VzPC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jd3N0b3Bkb3duLmRpdGEiIHNjb3BlPSJsb2NhbCI+PGxpbmt0ZXh0PkNyZWF0aW5nCi10b3AtZG93biBXZWIgc2VydmljZXM8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydHdzZGwuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PkNyZWF0aW5nIGEgbmV3IFdTREwgZmlsZTwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R1ZGRpZXhwLmRpdGEiCi1zY29wZT0icGVlciI+PGxpbmt0ZXh0PlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIGFuZCBidXNpbmVzcyBlbnRpdGllczwvbGlua3RleHQ+Ci08L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdG92ZXJ3cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTE3MDk5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJ0YXNrIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkRldmVsb3BpbmcgV2ViIHNlcnZpY2VzIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IlVzZSBXZWIgc2VydmljZXMgdG9vbHMgdG8gZGlzY292ZXIsIGNyZWF0ZSwgYW5kIHB1Ymxpc2ggV2ViIHNlcnZpY2VzIHRoYXQgYXJlIGNyZWF0ZWQgZnJvbSBKYXZhIGJlYW5zLCBlbnRlcnByaXNlIGJlYW5zLCBhbmQgV1NETCBmaWxlcy4gWW91IGNhbiBjcmVhdGUgb2YgV2ViIHNlcnZpY2VzIHVzaW5nIGEgdG9wLWRvd24gYXBwcm9hY2ggKHdoaWNoIHN0YXJ0cyB3aXRoIGEgV1NETCBmaWxlKSBvciBhIGJvdHRvbS11cCBhcHByb2FjaCAod2hpY2ggc3RhcnRzIHdpdGggYSBKYXZhIGJlYW4gb3IgRUpCKS4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVXNlIFdlYiBzZXJ2aWNlcyB0b29scyB0byBkaXNjb3ZlciwgY3JlYXRlLCBhbmQgcHVibGlzaCBXZWIgc2VydmljZXMgdGhhdCBhcmUgY3JlYXRlZCBmcm9tIEphdmEgYmVhbnMsIGVudGVycHJpc2UgYmVhbnMsIGFuZCBXU0RMIGZpbGVzLiBZb3UgY2FuIGNyZWF0ZSBvZiBXZWIgc2VydmljZXMgdXNpbmcgYSB0b3AtZG93biBhcHByb2FjaCAod2hpY2ggc3RhcnRzIHdpdGggYSBXU0RMIGZpbGUpIG9yIGEgYm90dG9tLXVwIGFwcHJvYWNoICh3aGljaCBzdGFydHMgd2l0aCBhIEphdmEgYmVhbiBvciBFSkIpLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgY3JlYXRpbmcsIG92ZXJ2aWV3IiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBjcmVhdGluZywgb3ZlcnZpZXciIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzaW53c2EuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzYnRtdXAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzdG9wZG93bi5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90Y3J0d3NkbC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVkZGlleHAuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0b3ZlcndzIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+RGV2ZWxvcGluZyBXZWIgc2VydmljZXM8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InRvdmVyd3MiPjxhIG5hbWU9InRvdmVyd3MiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkRldmVsb3BpbmcgV2ViIHNlcnZpY2VzPC9oMT4KLQotCi0KLTxkaXY+PHA+VXNlIFdlYiBzZXJ2aWNlcyB0b29scyB0byBkaXNjb3ZlciwgY3JlYXRlLCBhbmQgcHVibGlzaCBXZWIgc2VydmljZXMKLXRoYXQgYXJlIGNyZWF0ZWQgZnJvbSBKYXZh4oSiIGJlYW5zLCBlbnRlcnByaXNlIGJlYW5zLCBhbmQgV1NETCBmaWxlcy4KLVlvdSBjYW4gY3JlYXRlIG9mIFdlYiBzZXJ2aWNlcyB1c2luZyBhIHRvcC1kb3duIGFwcHJvYWNoICh3aGljaCBzdGFydHMgd2l0aAotYSBXU0RMIGZpbGUpIG9yIGEgYm90dG9tLXVwIGFwcHJvYWNoICh3aGljaCBzdGFydHMgd2l0aCBhIEphdmEgYmVhbgotb3IgRUpCKS48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPkluIHRoaXMgcmVsZWFzZSwgdGhlIGRldmVsb3BtZW50IHBhdGggdGhhdCB5b3Ugd291bGQgdHlwaWNhbGx5Ci1mb2xsb3cgdG8gY3JlYXRlIGFuZCBwdWJsaXNoIGEgV2ViIHNlcnZpY2UgaXMgYXMgZm9sbG93czo8L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpPjxzcGFuPkNyZWF0ZSBhIFdlYiBwcm9qZWN0Ljwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+Q3JlYXRlIG9yIGltcG9ydCBhbiBhcnRpZmFjdCB0byBiZSB0dXJuZWQgaW50byBhIFdlYiBzZXJ2aWNlLjwvc3Bhbj4KLTwvbGk+Ci0KLTxsaT48c3Bhbj5DcmVhdGUgYSBXZWIgc2VydmljZS48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPlB1Ymxpc2ggYSBidXNpbmVzcyBlbnRpdHkuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5QdWJsaXNoIGEgV2ViIHNlcnZpY2UuPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPkZvciBpbnN0cnVjdGlvbnMgb24gcGVyZm9ybWluZyB0aGVzZSB0YXNrcywgcmVmZXIgdG8gdGhlIGxpc3Qgb2YKLXJlbGF0ZWQgdG9waWNzIGF0IHRoZSBlbmQgb2YgdGhpcyB0b3BpYy48L3A+Ci08cD5XZWIgdG9vbHMgYXNzaXN0IHlvdSBpbiBkZXZlbG9waW5nCi1XZWIgYXBwbGljYXRpb25zIHRoYXQgeW91IGNhbiBjb25maWd1cmUgYXMgYSBXZWIgc2VydmljZS4gV2ViIGFwcGxpY2F0aW9ucwotYXJlIGRldmVsb3BlZCBpbiBhIFdlYiBwcm9qZWN0LCBhbmQgU2VydmVyIHRvb2xzIGFsbG93IHlvdSB0byB1c2UgdGhlIHNlcnZlcgotdGVzdCBlbnZpcm9ubWVudCB0byB0ZXN0IGFuZCBkZXBsb3kgeW91ciBXZWIgc2VydmljZXMuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBDb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3cy5odG1sIiB0aXRsZT0iQSBXZWIgc2VydmljZSBpcyBhIHNldCBvZiByZWxhdGVkIGFwcGxpY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGludm9rZWQgb3ZlciB0aGUgSW50ZXJuZXQuIEJ1c2luZXNzZXMgY2FuIGR5bmFtaWNhbGx5IG1peCBhbmQgbWF0Y2ggV2ViIHNlcnZpY2VzIHRvIHBlcmZvcm0gY29tcGxleCB0cmFuc2FjdGlvbnMgd2l0aCBtaW5pbWFsIHByb2dyYW1taW5nLiBXZWIgc2VydmljZXMgYWxsb3cgYnV5ZXJzIGFuZCBzZWxsZXJzIGFsbCBvdmVyIHRoZSB3b3JsZCB0byBkaXNjb3ZlciBlYWNoIG90aGVyLCBjb25uZWN0IGR5bmFtaWNhbGx5LCBhbmQgZXhlY3V0ZSB0cmFuc2FjdGlvbnMgaW4gcmVhbCB0aW1lIHdpdGggbWluaW1hbCBodW1hbiBpbnRlcmFjdGlvbi4iPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzaW53c2EuaHRtbCIgdGl0bGU9IiI+VG9vbHMgZm9yIFdlYgotc2VydmljZXMgZGV2ZWxvcG1lbnQ8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2J0bXVwLmh0bWwiIHRpdGxlPSJXZWIgc2VydmljZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdHdvIG1ldGhvZHM6IHRvcC1kb3duIGRldmVsb3BtZW50IGFuZCBib3R0b20tdXAgZGV2ZWxvcG1lbnQuIEJvdHRvbS11cCBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaW52b2x2ZXMgY3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIG9yIGVudGVycHJpc2UgYmVhbi4iPkNyZWF0aW5nIGJvdHRvbS11cAotV2ViIHNlcnZpY2VzPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi9jb25jZXB0cy9jd3N0b3Bkb3duLmh0bWwiIHRpdGxlPSJXZWIgc2VydmljZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdHdvIG1ldGhvZHM6IHRvcC1kb3duIGRldmVsb3BtZW50IGFuZCBib3R0b20tdXAgZGV2ZWxvcG1lbnQuIFRvcC1kb3duIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCBpbnZvbHZlcyBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlIGZyb20gYSBXU0RMIGZpbGUuIj5DcmVhdGluZwotdG9wLWRvd24gV2ViIHNlcnZpY2VzPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydHdzZGwuaHRtbCI+Q3JlYXRpbmcgYSBuZXcgV1NETCBmaWxlPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHVkZGlleHAuaHRtbCI+UHVibGlzaGluZyBXZWIgc2VydmljZXMgYW5kIGJ1c2luZXNzIGVudGl0aWVzPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci90YXNrcy90d3NwcmVmLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci90YXNrcy90d3NwcmVmLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNWNmYzAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdHdzcHJlZi5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIg0KLSAidGFzay5kdGQiPg0KLTx0YXNrIGlkPSJzZXR0aW5nd2Vic2VydmljZXNwcmVmZXJlbmNlcyIgeG1sOmxhbmc9ImVuLXVzIj4NCi08dGl0bGU+U2V0dGluZyBXZWIgc2VydmljZXMgcHJlZmVyZW5jZXM8L3RpdGxlPg0KLTxzaG9ydGRlc2M+QmVmb3JlIHlvdSBiZWdpbiBkZXZlbG9waW5nIFdlYiBzZXJ2aWNlcyBvciBjbGllbnRzLCB5b3UgY2FuIG9wdGltaXplDQotdGhlIHdvcmtiZW5jaCBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGJ5IHNldHRpbmcgYSB2YXJpZXR5IG9mIHByZWZlcmVuY2VzLjwvc2hvcnRkZXNjPg0KLTxwcm9sb2c+PG1ldGFkYXRhPg0KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPnByZWZlcmVuY2VzPGluZGV4dGVybT5XZWIgc2VydmljZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4NCi08aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+cHJlZmVyZW5jZXM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPg0KLTwvbWV0YWRhdGE+PC9wcm9sb2c+DQotPHRhc2tib2R5Pg0KLTxjb250ZXh0PlRvIHNldCBhbnkgb2YgdGhlIFdlYiBzZXJ2aWNlcyBwcmVmZXJlbmNlcywgZm9sbG93IHRoZXNlIHN0ZXBzOjwvY29udGV4dD4NCi08c3RlcHM+DQotPHN0ZXA+PGNtZD5DbGljayAgPHVpY29udHJvbD5XaW5kb3cgPiBQcmVmZXJlbmNlczwvdWljb250cm9sPiB0byBvcGVuIHRoZQ0KLVByZWZlcmVuY2VzIG5vdGVib29rLjwvY21kPjwvc3RlcD4NCi08c3RlcD48Y21kPkV4cGFuZCAgPHVpY29udHJvbD5XZWIgc2VydmljZXM8L3VpY29udHJvbD4gb3IgPHVpY29udHJvbD5TZXJ2aWNlDQotcG9saWNpZXM8L3VpY29udHJvbD4sIGFuZCBjbGljayB0aGUgcHJlZmVyZW5jZSBjYXRlZ29yeSB0aGF0IHlvdSB3YW50IHRvIHNldC48L2NtZD4NCi08L3N0ZXA+DQotPHN0ZXA+PGNtZD5TZWxlY3QgdGhlIGNoZWNrIGJveGVzIHRoYXQgeW91IHdhbnQgdG8gc2V0IGFzIHRoZSBkZWZhdWx0IHdoZW4NCi1jcmVhdGluZyB5b3VyIFdlYiBzZXJ2aWNlLjwvY21kPjxpbmZvPklmIHlvdSByZXF1aXJlIG1vcmUgaW5mb3JtYXRpb24gb24gYW55DQotb2YgdGhlIG9wdGlvbnMsIHNlbGVjdCB0aGUgb3B0aW9uIGFuZCBwcmVzcyAgPHVpY29udHJvbD5GMTwvdWljb250cm9sPi48L2luZm8+DQotPC9zdGVwPg0KLTxzdGVwPjxjbWQ+Q2xpY2sgIDx1aWNvbnRyb2w+T0s8L3VpY29udHJvbD4gdG8gYXBwbHkgdGhlIGNoYW5nZXMgYW5kIGNsb3NlDQotdGhlIFByZWZlcmVuY2VzIG5vdGVib29rLjwvY21kPjwvc3RlcD4NCi08L3N0ZXBzPg0KLTxwb3N0cmVxPkZvciBpbmZvcm1hdGlvbiBvbiBpbmRpdmlkdWFsIHByZWZlcmVuY2VzLCByZWZlciB0byB0aGUgZm9sbG93aW5nOjx1bD4NCi08bGk+PHhyZWYgaHJlZj0iLi4vcmVmL3JheGlzcHJlZi5kaXRhIj48L3hyZWY+PC9saT4NCi08bGk+PHhyZWYgaHJlZj0iLi4vcmVmL3J3c3dpenByZWYuZGl0YSI+PC94cmVmPjwvbGk+DQotPGxpPjx4cmVmIGhyZWY9Ii4uL3JlZi9yd3NkbHByZWYuZGl0YSI+PC94cmVmPjwvbGk+DQotPGxpPjx4cmVmIGhyZWY9Ii4uL3JlZi9yc2VydnBvbHByZWYuZGl0YSI+PC94cmVmPjwvbGk+DQotPC91bD48L3Bvc3RyZXE+DQotPC90YXNrYm9keT4NCi08L3Rhc2s+DQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdHdzcHJlZi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdHdzcHJlZi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmMxMTA2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3R3c3ByZWYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJ0YXNrIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IlNldHRpbmcgV2ViIHNlcnZpY2VzIHByZWZlcmVuY2VzIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IkJlZm9yZSB5b3UgYmVnaW4gZGV2ZWxvcGluZyBXZWIgc2VydmljZXMgb3IgY2xpZW50cywgeW91IGNhbiBvcHRpbWl6ZSB0aGUgd29ya2JlbmNoIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgYnkgc2V0dGluZyBhIHZhcmlldHkgb2YgcHJlZmVyZW5jZXMuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkJlZm9yZSB5b3UgYmVnaW4gZGV2ZWxvcGluZyBXZWIgc2VydmljZXMgb3IgY2xpZW50cywgeW91IGNhbiBvcHRpbWl6ZSB0aGUgd29ya2JlbmNoIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgYnkgc2V0dGluZyBhIHZhcmlldHkgb2YgcHJlZmVyZW5jZXMuIiAvPgotPG1ldGEgY29udGVudD0icHJlZmVyZW5jZXMsIFdlYiBzZXJ2aWNlcyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InByZWZlcmVuY2VzLCBXZWIgc2VydmljZXMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3MuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vcmVmL3JheGlzcHJlZi5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9yZWYvcndzd2l6cHJlZi5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9yZWYvcndzZGxwcmVmLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3JlZi9yc2VydnBvbHByZWYuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJzZXR0aW5nd2Vic2VydmljZXNwcmVmZXJlbmNlcyIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPlNldHRpbmcgV2ViIHNlcnZpY2VzIHByZWZlcmVuY2VzPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJzZXR0aW5nd2Vic2VydmljZXNwcmVmZXJlbmNlcyI+PGEgbmFtZT0ic2V0dGluZ3dlYnNlcnZpY2VzcHJlZmVyZW5jZXMiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPlNldHRpbmcgV2ViIHNlcnZpY2VzIHByZWZlcmVuY2VzPC9oMT4KLQotCi0KLTxkaXY+PHA+QmVmb3JlIHlvdSBiZWdpbiBkZXZlbG9waW5nIFdlYiBzZXJ2aWNlcyBvciBjbGllbnRzLCB5b3UgY2FuIG9wdGltaXplCi10aGUgd29ya2JlbmNoIGZvciBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgYnkgc2V0dGluZyBhIHZhcmlldHkgb2YgcHJlZmVyZW5jZXMuPC9wPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj5UbyBzZXQgYW55IG9mIHRoZSBXZWIgc2VydmljZXMgcHJlZmVyZW5jZXMsIGZvbGxvdyB0aGVzZSBzdGVwczo8L2Rpdj4KLQotPG9sPgotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5DbGljayAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2luZG93ICZndDsgUHJlZmVyZW5jZXM8L3NwYW4+IHRvIG9wZW4gdGhlCi1QcmVmZXJlbmNlcyBub3RlYm9vay48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5FeHBhbmQgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPldlYiBzZXJ2aWNlczwvc3Bhbj4gb3IgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+U2VydmljZQotcG9saWNpZXM8L3NwYW4+LCBhbmQgY2xpY2sgdGhlIHByZWZlcmVuY2UgY2F0ZWdvcnkgdGhhdCB5b3Ugd2FudCB0byBzZXQuPC9zcGFuPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5TZWxlY3QgdGhlIGNoZWNrIGJveGVzIHRoYXQgeW91IHdhbnQgdG8gc2V0IGFzIHRoZSBkZWZhdWx0IHdoZW4KLWNyZWF0aW5nIHlvdXIgV2ViIHNlcnZpY2UuPC9zcGFuPiBJZiB5b3UgcmVxdWlyZSBtb3JlIGluZm9ybWF0aW9uIG9uIGFueQotb2YgdGhlIG9wdGlvbnMsIHNlbGVjdCB0aGUgb3B0aW9uIGFuZCBwcmVzcyAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RjE8L3NwYW4+LgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5DbGljayAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+T0s8L3NwYW4+IHRvIGFwcGx5IHRoZSBjaGFuZ2VzIGFuZCBjbG9zZQotdGhlIFByZWZlcmVuY2VzIG5vdGVib29rLjwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj5Gb3IgaW5mb3JtYXRpb24gb24gaW5kaXZpZHVhbCBwcmVmZXJlbmNlcywgcmVmZXIgdG8gdGhlIGZvbGxvd2luZzo8dWw+Ci08bGk+PGEgaHJlZj0iLi4vcmVmL3JheGlzcHJlZi5odG1sIiB0aXRsZT0iVGhlIEF4aXMgRW1pdHRlciBwcmVmZXJlbmNlcyBwYWdlIGFsbG93cyB5b3UgdG8gc2V0IHRoZSBmb2xsb3dpbmcmIzEwO3ByZWZlcmVuY2VzIHVzZWQgd2hlbiBjcmVhdGluZyBvciBjb25zdW1pbmcgQXhpcyBXZWIgc2VydmljZXMuIj5BeGlzIGVtaXR0ZXIgcHJlZmVyZW5jZXM8L2E+PC9saT4KLQotPGxpPjxhIGhyZWY9Ii4uL3JlZi9yd3N3aXpwcmVmLmh0bWwiIHRpdGxlPSJUaGUgZGVmYXVsdCBiZWhhdmlvcnMgb2YgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmRzIGNhbiBiZSBzZXQgdXNpbmcmIzEwO3RoZSBmb2xsb3dpbmcgcHJlZmVyZW5jZSBwYW5lbHMuIEFsbCBwcmVmZXJlbmNlcyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUmIzEwO3dpemFyZC4iPldlYiBzZXJ2aWNlcyB3aXphcmRzIGJhc2ljIHByZWZlcmVuY2VzPC9hPjwvbGk+Ci0KLTxsaT48YSBocmVmPSIuLi9yZWYvcndzZGxwcmVmLmh0bWwiIHRpdGxlPSJVc2UgdGhlIFdTREwgRmlsZXMgcHJlZmVyZW5jZXMgcGFnZSB0byBzZXQgdGhlIGRlZmF1bHQgYmVoYXZpb3ImIzEwO3doZW4gY3JlYXRpbmcgb3Igc2F2aW5nIFdTREwgZmlsZXMuIj5XU0RMIGZpbGUgcHJlZmVyZW5jZXM8L2E+PC9saT4KLQotPGxpPjxhIGhyZWY9Ii4uL3JlZi9yc2VydnBvbHByZWYuaHRtbCIgdGl0bGU9IlRoZSBTZXJ2aWNlIHBvbGljaWVzIHByZWZlcmVuY2VzIHBhZ2UgYWxsb3dzIHlvdSB0byBzZWxlY3QgeW91ciYjMTA7bGV2ZWwgb2YgY29tcGxpYW5jZSB3aXRoIHRoZSBXUy1JIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSAoU1NCUCkgYW5kIFdTLUkmIzEwO0F0dGFjaGVtZW50IFByb2ZpbGUgKEFQKS4gVGhleSBjYW4gYmUgZm91bmQgb24gdGhlIFNlcnZpY2UgUG9saWNpZXMgcHJlZmVyZW5jZXMmIzEwO3BhZ2UuIj5XUy1JIGNvbXBsaWFuY2UgcHJlZmVyZW5jZXM8L2E+PC9saT4KLQotPC91bD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTx1bCBjbGFzcz0idWxsaW5rcyI+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL3JlZi9yYXhpc3ByZWYuaHRtbCI+QXhpcyBlbWl0dGVyIHByZWZlcmVuY2VzPC9hPjwvc3Ryb25nPjxiciAvPgotVGhlIEF4aXMgRW1pdHRlciBwcmVmZXJlbmNlcyBwYWdlIGFsbG93cyB5b3UgdG8gc2V0IHRoZSBmb2xsb3dpbmcgcHJlZmVyZW5jZXMgdXNlZCB3aGVuIGNyZWF0aW5nIG9yIGNvbnN1bWluZyBBeGlzIFdlYiBzZXJ2aWNlcy48L2xpPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi9yZWYvcndzd2l6cHJlZi5odG1sIj5XZWIgc2VydmljZXMgd2l6YXJkcyBiYXNpYyBwcmVmZXJlbmNlczwvYT48L3N0cm9uZz48YnIgLz4KLVRoZSBkZWZhdWx0IGJlaGF2aW9ycyBvZiB0aGUgV2ViIHNlcnZpY2VzIHdpemFyZHMgY2FuIGJlIHNldCB1c2luZyB0aGUgZm9sbG93aW5nIHByZWZlcmVuY2UgcGFuZWxzLiBBbGwgcHJlZmVyZW5jZXMgY2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIHdpemFyZC48L2xpPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi9yZWYvcndzZGxwcmVmLmh0bWwiPldTREwgZmlsZSBwcmVmZXJlbmNlczwvYT48L3N0cm9uZz48YnIgLz4KLVVzZSB0aGUgV1NETCBGaWxlcyBwcmVmZXJlbmNlcyBwYWdlIHRvIHNldCB0aGUgZGVmYXVsdCBiZWhhdmlvciB3aGVuIGNyZWF0aW5nIG9yIHNhdmluZyBXU0RMIGZpbGVzLjwvbGk+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL3JlZi9yc2VydnBvbHByZWYuaHRtbCI+V1MtSSBjb21wbGlhbmNlIHByZWZlcmVuY2VzPC9hPjwvc3Ryb25nPjxiciAvPgotVGhlIFNlcnZpY2UgcG9saWNpZXMgcHJlZmVyZW5jZXMgcGFnZSBhbGxvd3MgeW91IHRvIHNlbGVjdCB5b3VyIGxldmVsIG9mIGNvbXBsaWFuY2Ugd2l0aCB0aGUgV1MtSSBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGUgKFNTQlApIGFuZCBXUy1JIEF0dGFjaGVtZW50IFByb2ZpbGUgKEFQKS4gVGhleSBjYW4gYmUgZm91bmQgb24gdGhlIFNlcnZpY2UgUG9saWNpZXMgcHJlZmVyZW5jZXMgcGFnZS48L2xpPgotPC91bD4KLQotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3cy5odG1sIiB0aXRsZT0iQSBXZWIgc2VydmljZSBpcyBhIHNldCBvZiByZWxhdGVkIGFwcGxpY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGludm9rZWQgb3ZlciB0aGUgSW50ZXJuZXQuIEJ1c2luZXNzZXMgY2FuIGR5bmFtaWNhbGx5IG1peCBhbmQgbWF0Y2ggV2ViIHNlcnZpY2VzIHRvIHBlcmZvcm0gY29tcGxleCB0cmFuc2FjdGlvbnMgd2l0aCBtaW5pbWFsIHByb2dyYW1taW5nLiBXZWIgc2VydmljZXMgYWxsb3cgYnV5ZXJzIGFuZCBzZWxsZXJzIGFsbCBvdmVyIHRoZSB3b3JsZCB0byBkaXNjb3ZlciBlYWNoIG90aGVyLCBjb25uZWN0IGR5bmFtaWNhbGx5LCBhbmQgZXhlY3V0ZSB0cmFuc2FjdGlvbnMgaW4gcmVhbCB0aW1lIHdpdGggbWluaW1hbCBodW1hbiBpbnRlcmFjdGlvbi4iPldlYiBzZXJ2aWNlcyBvdmVydmlldzwvYT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93ZWJzZXJ2aWNlX3RvYy5kaXRhbWFwIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvd2Vic2VydmljZV90b2MuZGl0YW1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVkNmExYy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93ZWJzZXJ2aWNlX3RvYy5kaXRhbWFwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgbWFwIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIE1hcC8vRU4iCi0gIm1hcC5kdGQiPgotPG1hcCBpZD0id3NtYWludG9jIiB0aXRsZT0id3NtYWludG9jIj4KLTx0b3BpY3JlZiBocmVmPSJjb25jZXB0cy9jd3MuZGl0YSIgbmF2dGl0bGU9IldlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCI+Ci08dG9waWNyZWYgaHJlZj0iY29uY2VwdHMvY3dzc3RhbmRhcmRzLmRpdGEiIG5hdnRpdGxlPSJXZWIgc2VydmljZXMgc3RhbmRhcmRzIgotc2NvcGU9ImxvY2FsIj4KLTx0b3BpY3JlZiBocmVmPSJjb25jZXB0cy9jd3NkbC5kaXRhIiBuYXZ0aXRsZT0iV2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSI+Ci08dG9waWNyZWYgaHJlZj0icmVmL3J3c2RsLmRpdGEiIG5hdnRpdGxlPSJXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIHJlZmVyZW5jZSI+Ci08L3RvcGljcmVmPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJjb25jZXB0cy9jc29hcC5kaXRhIiBuYXZ0aXRsZT0iU09BUCI+PC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvY29uY2VwdHMvY3VkZGkuZGl0YSIKLW5hdnRpdGxlPSJVbml2ZXJzYWwgRGVzY3JpcHRpb24sIERpc2NvdmVyeSwgYW5kIEludGVncmF0aW9uIChVRERJKSIgc2NvcGU9InBlZXIiPgotPHRvcGljcmVmIGhyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9jb25jZXB0cy9jd3NkbHVkLmRpdGEiCi1uYXZ0aXRsZT0iUmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NETCIgc2NvcGU9InBlZXIiPjwvdG9waWNyZWY+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9ImNvbmNlcHRzL2N3c2lsLmRpdGEiIG5hdnRpdGxlPSJXZWIgU2VydmljZXMgSW5zcGVjdGlvbiBMYW5ndWFnZSAoV1NJTCkiPgotPHRvcGljcmVmIGhyZWY9ImNvbmNlcHRzL2N3c2lsdWQuZGl0YSIgbmF2dGl0bGU9IlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFVEREkgYW5kIFdTSUwiPgotPC90b3BpY3JlZj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0iY29uY2VwdHMvY2pheHJwYy5kaXRhIiBuYXZ0aXRsZT0iSkFYLVJQQyI+PC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJjb25jZXB0cy9janNyMTA5LmRpdGEiIG5hdnRpdGxlPSJKU1IgMTA5IGFuZCBKU1IgOTIxIj48L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9ImNvbmNlcHRzL2N3c2lvdmVyLmRpdGEiIG5hdnRpdGxlPSJXUy1JIGNvbXBsaWFuY2UiIHNjb3BlPSJsb2NhbCI+Ci08L3RvcGljcmVmPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJjb25jZXB0cy9jd3N0b3Bkb3duLmRpdGEiIG5hdnRpdGxlPSJUb3AtZG93biBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQiCi1zY29wZT0ibG9jYWwiPjwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0iY29uY2VwdHMvY3dzYnRtdXAuZGl0YSIgbmF2dGl0bGU9IkJvdHRvbS11cCBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQiCi1zY29wZT0ibG9jYWwiPjwvdG9waWNyZWY+Ci08dG9waWNyZWYgbmF2dGl0bGU9IldvcmtzcGFjZSBhbmQgdG9vbHMiPgotPHRvcGljcmVmIGhyZWY9ImNvbmNlcHRzL2N3c2lud3NhLmRpdGEiIG5hdnRpdGxlPSJUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50Igotc2NvcGU9ImxvY2FsIj48L3RvcGljcmVmPgotPHRvcGljcmVmIG5hdnRpdGxlPSJDb25maWd1cmluZyB5b3VyIHdvcmtzcGFjZSI+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHdzcHJlZi5kaXRhIiBuYXZ0aXRsZT0iU2V0dGluZyBXZWIgc2VydmljZXMgcHJlZmVyZW5jZXMiCi1zY29wZT0ibG9jYWwiPgotPHRvcGljcmVmIGhyZWY9InJlZi9yYXhpc3ByZWYuZGl0YSIgbmF2dGl0bGU9IkF4aXMgZW1pdHRlciBwcmVmZXJlbmNlcyI+PC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJyZWYvcndzd2l6cHJlZi5kaXRhIiBuYXZ0aXRsZT0iV2ViIHNlcnZpY2VzIHdpemFyZHMgYmFzaWMgcHJlZmVyZW5jZXMiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJyZWYvcndzZGxwcmVmLmRpdGEiIG5hdnRpdGxlPSJXU0RMIGZpbGUgcHJlZmVyZW5jZXMiPjwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0icmVmL3JzZXJ2cG9scHJlZi5kaXRhIiBuYXZ0aXRsZT0iU2VydmljZSBwb2xpY2llcyBwcmVmZXJlbmNlcyI+Ci08L3RvcGljcmVmPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvdHRvbWNhdHNlcnYuZGl0YSIKLW5hdnRpdGxlPSJDcmVhdGluZyBhbiBBcGFjaGUgVG9tY2F0IHNlcnZlciBhbmQgIFdlYiBwcm9qZWN0IiBzY29wZT0icGVlciI+Ci08L3RvcGljcmVmPgotPC90b3BpY3JlZj4KLTwvdG9waWNyZWY+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIG5hdnRpdGxlPSJJbXBvcnRpbmcgYW5kIGNyZWF0aW5nIHJlc291cmNlcyB1c2VkIGJ5IFdlYiBzZXJ2aWNlcyI+Ci08bmF2cmVmIG1hcHJlZj0iLi4vb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvd3N3c2RsZWRpdG9ydF90b2MuZGl0YW1hcCIvPgotPHRvcGljcmVmIGhyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90ZGlzY292LmRpdGEiCi1uYXZ0aXRsZT0iRGlzY292ZXJpbmcgYW5kIGltcG9ydGluZyBhIFdlYiBzZXJ2aWNlIiBzY29wZT0icGVlciI+PC90b3BpY3JlZj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdG92ZXJ3cy5kaXRhIiBuYXZ0aXRsZT0iQ3JlYXRpbmcgV2ViIHNlcnZpY2VzIj4KLTxuYXZyZWYgbWFwcmVmPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci93c2F4aXNidWlsZF90b2MuZGl0YW1hcCIvPgotPG5hdnJlZiBtYXByZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5heGlzMi51aS5kb2MudXNlci93c2F4aXMyYnVpbGRfdG9jLmRpdGFtYXAiLz4KLTxuYXZyZWYgbWFwcmVmPSIuLi9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvd3NheGlzYW50X3RvYy5kaXRhbWFwIi8+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIG5hdnRpdGxlPSJUZXN0aW5nIGFuZCB2YWxpZGF0aW5nIFdlYiBzZXJ2aWNlcyI+Ci08dG9waWNyZWYgaHJlZj0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R0ZXN0d3NkbC5kaXRhIgotbmF2dGl0bGU9IlRlc3RpbmcgV1NETCBkb2N1bWVudHMgYW5kIFdlYiBzZXJ2aWNlcyB3aXRoIHRoZSBXU0RMIEV4cGxvcmVyIgotc2NvcGU9InBlZXIiPjwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0iLi4vb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NkbHZhbC5kaXRhIiBuYXZ0aXRsZT0iVmFsaWRhdGluZyBXU0RMIgotc2NvcGU9InBlZXIiPjwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0iLi4vb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90bW9uaXRvci5kaXRhIiBuYXZ0aXRsZT0iVGVzdGluZyBXZWIgc2VydmljZXMgd2l0aCB0aGUgVENQL0lQIE1vbml0b3IiCi1zY29wZT0icGVlciI+Ci08dG9waWNyZWYgaHJlZj0iLi4vb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NpdmFsLmRpdGEiIG5hdnRpdGxlPSJWYWxpZGF0aW5nIFdTLUkgY29tcGxpYW5jZSBvZiBXZWIgc2VydmljZSBTT0FQIHRyYWZmaWMiCi1zY29wZT0icGVlciI+PC90b3BpY3JlZj4KLTwvdG9waWNyZWY+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIG5hdnRpdGxlPSJQdWJsaXNoaW5nIFdlYiBzZXJ2aWNlcyI+Ci08bmF2cmVmIG1hcHJlZj0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3dzY29uc3VtcHRpb250X3RvYy5kaXRhbWFwIi8+Ci08dG9waWNyZWYgaHJlZj0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3RnZW53c2lsLmRpdGEiCi1uYXZ0aXRsZT0iR2VuZXJhdGluZyBXU0lMIiBzY29wZT0icGVlciI+PC90b3BpY3JlZj4KLTwvdG9waWNyZWY+Ci08L21hcD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3dlYnNlcnZpY2VfdG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3dlYnNlcnZpY2VfdG9jLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IyYmVhNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93ZWJzZXJ2aWNlX3RvYy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotCi08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PgotCi08dG9jIGxhYmVsPSJ3c21haW50b2MiIHRvcGljPSJjb25jZXB0cy9jd3MuaHRtbCI+Ci08dG9waWMgbGFiZWw9IldlYiBzZXJ2aWNlcyBvdmVydmlldyIgaHJlZj0iY29uY2VwdHMvY3dzLmh0bWwiPgotPHRvcGljIGxhYmVsPSJXZWIgc2VydmljZXMgc3RhbmRhcmRzIiBocmVmPSJjb25jZXB0cy9jd3NzdGFuZGFyZHMuaHRtbCI+Ci08dG9waWMgbGFiZWw9IldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkiIGhyZWY9ImNvbmNlcHRzL2N3c2RsLmh0bWwiPgotPHRvcGljIGxhYmVsPSJXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIHJlZmVyZW5jZSIgaHJlZj0icmVmL3J3c2RsLmh0bWwiLz4KLTwvdG9waWM+Ci08dG9waWMgbGFiZWw9IlNPQVAiIGhyZWY9ImNvbmNlcHRzL2Nzb2FwLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iVW5pdmVyc2FsIERlc2NyaXB0aW9uLCBEaXNjb3ZlcnksIGFuZCBJbnRlZ3JhdGlvbiAoVURESSkiIGhyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci9jb25jZXB0cy9jdWRkaS5odG1sIj4KLTx0b3BpYyBsYWJlbD0iUmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NETCIgaHJlZj0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsdWQuaHRtbCIvPgotPC90b3BpYz4KLTx0b3BpYyBsYWJlbD0iV2ViIFNlcnZpY2VzIEluc3BlY3Rpb24gTGFuZ3VhZ2UgKFdTSUwpIiBocmVmPSJjb25jZXB0cy9jd3NpbC5odG1sIj4KLTx0b3BpYyBsYWJlbD0iUmVsYXRpb25zaGlwIGJldHdlZW4gVURESSBhbmQgV1NJTCIgaHJlZj0iY29uY2VwdHMvY3dzaWx1ZC5odG1sIi8+Ci08L3RvcGljPgotPHRvcGljIGxhYmVsPSJKQVgtUlBDIiBocmVmPSJjb25jZXB0cy9jamF4cnBjLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iSlNSIDEwOSAtIEltcGxlbWVudGluZyBFbnRlcnByaXNlIFdlYiBzZXJ2aWNlcyIgaHJlZj0iY29uY2VwdHMvY2pzcjEwOS5odG1sIi8+Ci08dG9waWMgbGFiZWw9IldlYiBzZXJ2aWNlcyBpbnRlcm9wZXJhYmlsaXR5IChXUy1JKSIgaHJlZj0iY29uY2VwdHMvY3dzaW92ZXIuaHRtbCIvPgotPC90b3BpYz4KLTx0b3BpYyBsYWJlbD0iQ3JlYXRpbmcgdG9wLWRvd24gV2ViIHNlcnZpY2VzIiBocmVmPSJjb25jZXB0cy9jd3N0b3Bkb3duLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iQ3JlYXRpbmcgYm90dG9tLXVwIFdlYiBzZXJ2aWNlcyIgaHJlZj0iY29uY2VwdHMvY3dzYnRtdXAuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJXb3Jrc3BhY2UgYW5kIHRvb2xzIj4KLTx0b3BpYyBsYWJlbD0iVG9vbHMgZm9yIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCIgaHJlZj0iY29uY2VwdHMvY3dzaW53c2EuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJDb25maWd1cmluZyB5b3VyIHdvcmtzcGFjZSI+Ci08dG9waWMgbGFiZWw9IlNldHRpbmcgV2ViIHNlcnZpY2VzIHByZWZlcmVuY2VzIiBocmVmPSJ0YXNrcy90d3NwcmVmLmh0bWwiPgotPHRvcGljIGxhYmVsPSJBeGlzIGVtaXR0ZXIgcHJlZmVyZW5jZXMiIGhyZWY9InJlZi9yYXhpc3ByZWYuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJXZWIgc2VydmljZXMgd2l6YXJkcyBiYXNpYyBwcmVmZXJlbmNlcyIgaHJlZj0icmVmL3J3c3dpenByZWYuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJXU0RMIGZpbGUgcHJlZmVyZW5jZXMiIGhyZWY9InJlZi9yd3NkbHByZWYuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJXUy1JIGNvbXBsaWFuY2UgcHJlZmVyZW5jZXMiIGhyZWY9InJlZi9yc2VydnBvbHByZWYuaHRtbCIvPgotPC90b3BpYz4KLTx0b3BpYyBsYWJlbD0iQ3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXIgYW5kIFdlYiBwcm9qZWN0IiBocmVmPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvdHRvbWNhdHNlcnYuaHRtbCIvPgotPC90b3BpYz4KLTwvdG9waWM+Ci08L3RvcGljPgotPHRvcGljIGxhYmVsPSJJbXBvcnRpbmcgYW5kIGNyZWF0aW5nIHJlc291cmNlcyB1c2VkIGJ5IFdlYiBzZXJ2aWNlcyI+Ci08bGluayB0b2M9Ii4uL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3dzd3NkbGVkaXRvcnRfdG9jLnhtbCIvPgotPHRvcGljIGxhYmVsPSJEaXNjb3ZlcmluZyBhbmQgaW1wb3J0aW5nIGEgV2ViIHNlcnZpY2UiIGhyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90ZGlzY292Lmh0bWwiLz4KLTwvdG9waWM+Ci08dG9waWMgbGFiZWw9IkRldmVsb3BpbmcgV2ViIHNlcnZpY2VzIiBocmVmPSJ0YXNrcy90b3ZlcndzLmh0bWwiPgotPGxpbmsgdG9jPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci93c2F4aXNidWlsZF90b2MueG1sIi8+Ci08bGluayB0b2M9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5heGlzMi51aS5kb2MudXNlci93c2F4aXMyYnVpbGRfdG9jLnhtbCIvPgotPGxpbmsgdG9jPSIuLi9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvd3NheGlzYW50X3RvYy54bWwiLz4KLTwvdG9waWM+Ci08dG9waWMgbGFiZWw9IlRlc3RpbmcgYW5kIHZhbGlkYXRpbmcgV2ViIHNlcnZpY2VzIj4KLTx0b3BpYyBsYWJlbD0iVGVzdGluZyBXU0RMIGRvY3VtZW50cyBhbmQgV2ViIHNlcnZpY2VzIHdpdGggdGhlIFdTREwgRXhwbG9yZXIiIGhyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dGVzdHdzZGwuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJWYWxpZGF0aW5nIFdTREwiIGhyZWY9Ii4uL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvdGFza3MvdHdzZGx2YWwuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJUZXN0aW5nIFdlYiBzZXJ2aWNlcyB3aXRoIHRoZSBUQ1AvSVAgTW9uaXRvciIgaHJlZj0iLi4vb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90bW9uaXRvci5odG1sIj4KLTx0b3BpYyBsYWJlbD0iVmFsaWRhdGluZyBXUy1JIGNvbXBsaWFuY2Ugb2YgV2ViIHNlcnZpY2UgU09BUCB0cmFmZmljIiBocmVmPSIuLi9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3R3c2l2YWwuaHRtbCIvPgotPC90b3BpYz4KLTwvdG9waWM+Ci08dG9waWMgbGFiZWw9IlB1Ymxpc2hpbmcgV2ViIHNlcnZpY2VzIj4KLTxsaW5rIHRvYz0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3dzY29uc3VtcHRpb250X3RvYy54bWwiLz4KLTx0b3BpYyBsYWJlbD0iR2VuZXJhdGluZyBXU0lMIiBocmVmPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdGdlbndzaWwuaHRtbCIvPgotPC90b3BpYz4KLTwvdG9jPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC8uY3ZzaWdub3JlIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTQ0ODdjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmluZm9wb3AvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWJ1aWxkLnhtbApkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC8ucHJvamVjdCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmluZm9wb3AvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2YjVkNjkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLmpzdC53cy5pbmZvcG9wPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmluZm9wb3AvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkOWQ4NjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJUJ1bmRsZS1OYW1lLjAKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLmpzdC53cy5pbmZvcG9wOyBzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuMzAwLnF1YWxpZmllcgotQnVuZGxlLVZlbmRvcjogJUJ1bmRsZS1WZW5kb3IuMAotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5pbmZvcG9wL2Fib3V0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5pbmZvcG9wL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5pbmZvcG9wL2J1aWxkLnByb3BlcnRpZXMgYi9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5pbmZvcG9wL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZjRiNjYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIHdlYnNlcnZpY2V1aS1mMUNvbnRleHRzLnhtbCxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcwotZ2VuZXJhdGVTb3VyY2VCdW5kbGU9ZmFsc2UKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5pbmZvcG9wL3BsdWdpbi5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzYxMWFmYy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5pbmZvcG9wL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jIHByb3BlcnRpZXMgZmlsZSBmb3Igb3JnLmVjbGlwc2UuanN0LndzLmluZm9wb3AKLUJ1bmRsZS1WZW5kb3IuMCA9IEVjbGlwc2Uub3JnCi1CdW5kbGUtTmFtZS4wID0gV2ViIHNlcnZpY2VzIFVJClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC9wbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS5qc3Qud3MuaW5mb3BvcC9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzY2NDM4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmluZm9wb3AvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PiAKLTwhLS0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAtLT4KLTxwbHVnaW4+Ci0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5jb250ZXh0cyI+Ci0JCTxjb250ZXh0cyBmaWxlPSJ3ZWJzZXJ2aWNldWktZjFDb250ZXh0cy54bWwiIHBsdWdpbj0ib3JnLmVjbGlwc2UuanN0LndzLnVpIi8+Ci0JPC9leHRlbnNpb24+Ci08L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLmpzdC53cy5pbmZvcG9wL3dlYnNlcnZpY2V1aS1mMUNvbnRleHRzLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmluZm9wb3Avd2Vic2VydmljZXVpLWYxQ29udGV4dHMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGU3MmRmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2UuanN0LndzLmluZm9wb3Avd2Vic2VydmljZXVpLWYxQ29udGV4dHMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLmNvbnRleHRzIj8+Ci08IS0tIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gLS0+Ci08Y29udGV4dHM+Ci0KLTwhLS1EUkVTOiBSZXNvdXJjZSBTZWxlY3Rpb24gRGlhbG9nLS0+Ci08Y29udGV4dCBpZD0iRFJFUzAwMDEiPgotPCEtLVJlc291cmNlIFR5cGUgZHJvcCBkb3duLS0+Ci08ZGVzY3JpcHRpb24+U2VsZWN0IGEgcmVzb3VyY2UgZnJvbSB3aGljaCB0byBjcmVhdGUgYSBXZWIgc2VydmljZS48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotPGNvbnRleHQgaWQ9IkRSRVMwMDAyIj4KLTwhLS1SZXNvdXJjZSB0cmVlLS0+Ci08ZGVzY3JpcHRpb24+TGlzdHMgdGhlIHJlc291cmNlcyB0aGF0IGNhbiBiZSB0dXJuZWQgaW50byBhIFdlYiBzZXJ2aWNlLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTwhLS1QUFJNOiBSZXNvdXJjZSBNYW5hZ2VtZW50IFByZWZlcmVuY2UgcGFnZS0tPgotCi08Y29udGV4dCBpZD0iUFBSTTAwMDEiPgotPCEtLW1haW4gcGFnZS0tPgotPGRlc2NyaXB0aW9uPlRoZSBSZXNvdXJjZSBNYW5hZ2VtZW50IHByZWZlcmVuY2VzIGVuYWJsZSB5b3UgdG8gZGV0ZXJtaW5lIHRoZSBkZWZhdWx0cyB0aGF0IHlvdSB3YW50IHRvIHVzZSB3aGVuIGNyZWF0aW5nIHlvdXIgV2ViIHNlcnZpY2UuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBQUk0wMDAyIj4KLTwhLS1GaWxlIG92ZXJ3cml0ZSBjaGVjayBib3gtLT4KLTxkZXNjcmlwdGlvbj5UaGlzIGNoZWNrYm94IGFsbG93cyB5b3UgdG8gb3ZlcndyaXRlIGZpbGVzIHdpdGhvdXQgcmVjZWl2aW5nIGEgd2FybmluZyBtZXNzYWdlIGFza2luZyBmb3IgY29uZmlybWF0aW9uIHdoZW4gb3ZlcndyaXRpbmcgZmlsZXMuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLTxjb250ZXh0IGlkPSJQUFJNMDAwMyI+Ci08IS0tQ3JlYXRlIGZvbGRlcnMgY2hlY2sgYm94LS0+Ci08ZGVzY3JpcHRpb24+U2VsZWN0IHRoaXMgY2hlY2tib3ggdG8gY3JlYXRlIGZvbGRlcnMgYW5kIGZvbGRlciBzdHJ1Y3R1cmVzIHdpdGhvdXQgcmVjZWl2aW5nIGEgd2FybmluZyBtZXNzYWdlIGFza2luZyBmb3IgY29uZmlybWF0aW9uLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci08Y29udGV4dCBpZD0iUFBSTTAwMDQiPgotPCEtLUNoZWNrIG91dCBmaWxlcyBjaGVjayBib3gtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhpcyBjaGVja2JveCB0byBjaGVjayBvdXQgZmlsZXMgd2l0aG91dCByZWNlaXZpbmcgYSB3YXJuaW5nIG1lc3NhZ2UgYXNraW5nIGZvciBjb25maXJtYXRpb24uPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBQUk0wMDA1Ij4KLTwhLS1Ta2VsZXRvbiBtZXJnZS0tPgotPGRlc2NyaXB0aW9uPlRoaXMgY2hlY2sgYm94IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIElmIHRoaXMgY2hlY2sgYm94IGlzIGVuYWJsZWQsIHdoZW4gYSBza2VsZXRvbiBmaWxlIG9mIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHdvcmtzcGFjZSwgdGhlIG5ld2x5IGdlbmVyYXRlZCBza2VsZXRvbiBmaWxlIHdpbGwgbWVyZ2Ugd2l0aCB0aGUgZXhpc3Rpbmcgc2tlbGV0b24gZmlsZS4gIEVuYWJsZSB0aGlzIHRvIHByZXNlcnZlIGNvZGUgdGhhdCB5b3UgaGF2ZSBhbHJlYWR5IG1vZGlmaWVkIGluIHRoZSBleGlzdGluZyBza2VsZXRvbiBmaWxlcy4gIAotCi1Ob3RlIHRoYXQgd2hlbiB0aGlzIHByZWZlcmVuY2UgaXMgZW5hYmxlZCwgaWYgeW91IGNoYW5nZSB0aGUgcmV0dXJuIHR5cGUgb2YgYW4gaW50ZXJmYWNlLCB0aGUgcmVzdWx0aW5nIHNrZWxldG9uIGZpbGUgd2lsbCBoYXZlIGEgbWV0aG9kIHJldHVybmluZyB0aGUgdHlwZSBhcyBkZWZpbmVkIGluIHRoZSBuZXcgaW50ZXJmYWNlIGJ1dCB3b3VsZCBoYXZlIGEgbWV0aG9kIGJvZHkgZnJvbSB0aGUgb3JpZ2luYWwgc2tlbGV0b24gZmlsZSAod2hpY2ggd291bGQgYmUgcmV0dXJuaW5nIGEgZGlmZmVyZW50IHR5cGUpLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhbiBjb21waWxhdGlvbiBlcnJvciB0aGF0IHRoZSB5b3Ugd2lsbCBoYXZlIHRvIGNvcnJlY3QgbWFudWFsbHkuCi0KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTwhLS1QUFNEOiBTY2VuYXJpbyBEZWZhdWx0cyBQcmVmZXJlbmNlIHBhZ2UtLT4KLQotPCEtLVNjZW5hcmlvRGVmYXVsdHNQcmVmZXJlbmNlUGFnZS5qYXZhLS0+Ci08Y29udGV4dCBpZD0iUFBTRDAwMDEiPgotPCEtLVBQU0QwMDAxIGZvciB0aGUgU2NlbmFyaW8gRGVmYXVsdHMgUHJlZmVyZW5jZSBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VXNlIHRoaXMgcGFnZSB0byBzZWxlY3QgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci08Y29udGV4dCBpZD0iUFBTRDAwMDIiPgotPCEtLVBQU0QwMDAyIGZvciB0aGUgbGF1bmNoIHNhbXBsZSBjaGVjayBib3ggb24gdGhlIFNjZW5hcmlvIERlZmF1bHRzIFByZWZlcmVuY2UgUGFnZS0tPgotPGRlc2NyaXB0aW9uPlRoZSBTY2VuYXJpbyBEZWZhdWx0cyBwcmVmZXJlbmNlcyBlbmFibGUgeW91IHRvIGRldGVybWluZSB0aGUgZGVmYXVsdHMgdGhhdCB5b3Ugd2FudCB0byB1c2Ugd2hlbiBjcmVhdGluZyB5b3VyIFdlYiBzZXJ2aWNlLiAKLQotVGhlIHNhbXBsZSBXZWIgYXBwbGljYXRpb24gZGVtb25zdHJhdGVzIGhvdyB0byBjb2RlIHRoZSBwcm94eSBmaWxlLiBTZWxlY3QgdGhpcyBjaGVjayBib3ggdG8gbGF1bmNoIHNhbXBsZSBhcHBsaWNhdGlvbiBhZnRlciBpdCBpcyBjcmVhdGVkLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci08Y29udGV4dCBpZD0iUFBTRDAwMDQiPgotPCEtLVBQU0QwMDA0IGZvciB0aGUgc2FtcGxlIEpTUCB0eXBlIGNvbWJvIGJveCBvbiB0aGUgU2NlbmFyaW8gRGVmYXVsdHMgUHJlZmVyZW5jZSBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+U2VsZWN0IHRoZSB0eXBlIG9mIHNhbXBsZSBKU1AgdG8gYmUgY3JlYXRlZC48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotPGNvbnRleHQgaWQ9IlBQU0QwMDAzIj4KLTwhLS1QUFNEMDAwMyBmb3IgdGhlIHdlYiBleHBsb3JlciB0eXBlIGNvbWJvIGJveCBvbiB0aGUgU2NlbmFyaW8gRGVmYXVsdHMgUHJlZmVyZW5jZSBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+VGhlIFNjZW5hcmlvIERlZmF1bHRzIHByZWZlcmVuY2VzIGVuYWJsZSB5b3UgdG8gZGV0ZXJtaW5lIHRoZSBkZWZhdWx0cyB0aGF0IHlvdSB3YW50IHRvIHVzZSB3aGVuIGNyZWF0aW5nIHlvdXIgV2ViIHNlcnZpY2UuIFNlbGVjdCBmcm9tIHRoZSBhdmFpbGFibGUgV2ViIHNlcnZpY2VzIGV4cGxvcmVycy48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotPGNvbnRleHQgaWQ9IlBQU0QwMDA1Ij4KLTwhLS1QUFNEMDAwNSBmb3IgdGhlIFVzZXItZGVmaW5lZCBVRERJIENhdGVnb3J5IERhdGEgQ29sdW1uIERlbGltaXRlciB0ZXh0IGZpZWxkIG9uIHRoZSBTY2VuYXJpbyBEZWZhdWx0cyBQcmVmZXJlbmNlIFBhZ2UtLT4KLTxkZXNjcmlwdGlvbj5FbnRlciB0aGUgY2hhcmFjdGVyIHlvdSB3YW50IHRvIHVzZSBhcyBhIGNvbHVtbiBkZWxpbWl0ZXIgZm9yIHVzZXItZGVmaW5lZCBVRERJIENhdGVnb3J5IGRhdGEuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLTxjb250ZXh0IGlkPSJQUFNEMDAwNiI+Ci08IS0tUFBTRDAwMDYgZm9yIHRoZSBVc2VyLWRlZmluZWQgVURESSBDYXRlZ29yeSBEYXRhIFN0cmluZyBEZWxpbWl0ZXIgdGV4dCBmaWVsZCBvbiB0aGUgU2NlbmFyaW8gRGVmYXVsdHMgUHJlZmVyZW5jZSBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+RW50ZXIgdGhlIGNoYXJhY3RlciB5b3Ugd2FudCB0byB1c2UgYXMgYSBzdHJpbmcgZGVsaW1pdGVyIGZvciB1c2VyLWRlZmluZWQgVURESSBDYXRlZ29yeSBkYXRhLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLQotPGNvbnRleHQgaWQ9IlBQQUQwMDA0Ij4KLTwhLS0gIEhpZGUgZ2VuZXJhdGUgY2xpZW50IGNoZWNrIGJveC0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGlzIGNoZWNrIGJveCB0byBoaWRlIHRoZSBvcHRpb24gb2YgZ2VuZXJhdGluZyBhIFdlYiBzZXJ2aWNlIGNsaWVudCB3aGVuIHlvdSByaWdodC1jbGljayBhIGZpbGUgaW4gdGhlIFByb2plY3QgRXhwbG9yZXIgb3IgTmF2aWdhdG9yLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQUEFEMDAwNSI+Ci08IS0tICBIaWRlIGdlbmVyYXRlIHNhbXBsZSBjaGVjayBib3gtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhpcyBjaGVjayBib3ggdG8gaGlkZSB0aGUgb3B0aW9uIG9mIGdlbmVyYXRpbmcgc2FtcGxlIEpTUCBjb2RlIGZvciB0aGUgV2ViIHNlcnZpY2Ugd2hlbiB5b3UgcmlnaHQtY2xpY2sgYSBmaWxlIGluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIG9yIE5hdmlnYXRvci48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFBBRDAwMDYiPgotPCEtLSAgY3JlYXRlIHdlYiBzZXJ2aWNlIGNoZWNrIGJveC0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGlzIGNoZWNrIGJveCB0byBoaWRlIHRoZSBvcHRpb24gb2YgZ2VuZXJhdGluZyBhIFdlYiBzZXJ2aWNlIGNsaWVudCB3aGVuIHlvdSByaWdodC1jbGljayBhIGZpbGUgaW4gdGhlIFByb2plY3QgRXhwbG9yZXIgb3IgTmF2aWdhdG9yLjwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQUEFEMDAwOCI+Ci08IS0tICBnZW5lcmF0ZSBza2VsZXRvbiBjaGVjayBib3gtLT4KLTxkZXNjcmlwdGlvbj5TZWxlY3QgdGhpcyBjaGVjayBib3ggdG8gaGlkZSB0aGUgb3B0aW9uIG9mIGdlbmVyYXRpbmcgc2tlbGV0b24gSmF2YSBjbGFzc2VzIHdoZW4geW91IHJpZ2h0LWNsaWNrIGEgZmlsZSBpbiB0aGUgUHJvamVjdCBFeHBsb3JlciBvciBOYXZpZ2F0b3IuIFRoZSBza2VsZXRvbiBiZWFuIGNvbnRhaW5zIGEgc2V0IG9mIG1ldGhvZHMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBvcGVyYXRpb25zIGRlc2NyaWJlZCBpbiB0aGUgV1NETCBkb2N1bWVudC4gV2hlbiB0aGUgYmVhbiBpcyBjcmVhdGVkLCBlYWNoIG1ldGhvZCBoYXMgYSB0cml2aWFsIGltcGxlbWVudGF0aW9uIHRoYXQgeW91IHJlcGxhY2UgYnkgZWRpdGluZyB0aGUgYmVhbi48L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFBBRDAwMDkiPgotPCEtLSAgcHVibGlzaCBXU0RMIGNoZWNrIGJveC0tPgotPGRlc2NyaXB0aW9uPlNlbGVjdCB0aGlzIGNoZWNrIGJveCB0byBoaWRlIHRoZSBvcHRpb24gb2YgcHVibGlzaGluZyB0aGUgV2ViIHNlcnZpY2UncyBXU0RMIGZpbGUgdG8gYSBVRERJIHJlZ2lzdHJ5IHdoZW4geW91IHJpZ2h0LWNsaWNrIGEgZmlsZSBpbiB0aGUgUHJvamVjdCBFeHBsb3JlciBvciBOYXZpZ2F0b3IuPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotCi08L2NvbnRleHRzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyLy5jdnNpZ25vcmUgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODQ2NjhjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLW9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlcl8xLjAuMC5qYXIKLWJhawotdGVtcApkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvLnByb2plY3QgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYzOTUwYi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlcjwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL0RvY0J1aWxkLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL0RvY0J1aWxkLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBmMGI2Ni4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9Eb2NCdWlsZC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KLTwhLS0gCi0KLQlUaGlzIHNjcmlwdCBidWlsZCB0aGUgSGVscCBwbHVnLWluIGJ5IHRyYW5zZm9ybWluZyB0aGUgRElUQSBzb3VyY2UgZmlsZXMgaW50byBIVE1MLgotCQotCVRvIHVzZSB0aGlzIHNjcmlwdCwgeW91IG11c3QgaW5zdGFsbCBESVRBLU9UIG9uIHlvdXIgbWFjaGluZSBpbiB0aGUgZGlyZWN0b3J5Ci0JZGVmaW5lZCBieSB0aGUgZGl0YS5vdC5kaXIgcHJvcGVydHkuCi0JCi0JUnVuIHRoZSBkZWZhdWx0IHRhcmdldCBhZnRlciB5b3UgZWRpdCB0aGUgRElUQSBzb3VyY2UgZmlsZXMgdG8gcmVnZW5lcmF0ZSB0aGUgSFRNTC4KLQkKLQlUbyBjdXN0b21pemUgdGhpcyBzY3JpcHQgZm9yIG90aGVyIEhlbHAgcGx1Zy1pbnMsIG1vZGlmeSB0aGUgdmFsdWUgb2YgdGhlIGFyZ3MuaW5wdXQgcHJvcGVydHkKLQl0byBiZSB0aGUgRElUQSBtYXAgZmlsZSBmb3IgdGhlIHBsdWctaW4uCi0JCi0JTk9URTogVGhpcyBzY3JpcHQgYXNzdW1lcyB0aGF0IGxpbmtzIHRvIHNpYmxpbmcgSGVscCBwbHVnLWlucyBoYXZlIHNjb3BlPSJwZWVyIiwgb3RoZXJ3aXNlIHRoZQotCW91dHB1dCBkaXJlY3Rvcnkgc3RydWN0dXJlIHdpbGwgYmUgc2hpZnRlZCBpbmNvcnJlY3RseS4KLQkKLQlOT1RFOiBUaGlzIHNjcmlwdCBhc3N1bWVzIHRoYXQgeW91IGhhbmQgY29kZSB5b3VyIHBsdWdpbi54bWwgZmlsZSBpbiBteXBsdWdpbi54bWwuIFRoaXMgZmlsZQotCXdpbGwgYmUgY29waWVkIG92ZXIgdGhlIGdlbmVyYXRlZCBwbHVnaW4ueG1sIHdoaWNoIGlzIGN1cnJlbnRseSBub3QgYmVpbmcgZ2VuZXJhdGVkIGNvcnJlY3RseQotCWJ5IERJVEEtT1QuCi0JCi0JQ2hhbmdlTG9nOgotCTIwMDYtMDQtMDUgQXJ0aHVyIFJ5bWFuIDxyeW1hbkBjYS5pYm0uY29tPgotCS0gQ3JlYXRlZC4KLQkyMDA4LTAxLTA5IEthdGUgUHJpY2UgPGthdGVwQGNhLmlibS5jb20+Ci0JLSBtb2RpZmllZCBmb3IgbmV3IERJVEEtT1QgdmVyc2lvbgotCTIwMDgtMDUtMDUgS2F0ZSBQcmljZSA8a2F0ZXBAY2EuaWJtLmNvbT4KLQktIG1vZGlmaWVkIHRvIGFkZCBnZW5lcmF0aW9uIG9mIHByZS1idWlsdCBoZWxwIGluZGV4LiAKLQktIE11c3QgZGVsZXRlIC9pbmRleCBmb2xkZXIgYmVmb3JlIHJ1bm5pbmcgYnVpbGQKLS0tPgotPHByb2plY3QgbmFtZT0iZWNsaXBzZWhlbHAiIGRlZmF1bHQ9ImFsbCI+Ci0KLQk8cHJvcGVydHkgbmFtZT0iZGl0YS5vdC5kaXIiIGxvY2F0aW9uPSJDOi9ESVRBLU9UMS4yLjIiIC8+Ci0KLQk8cGF0aCBpZD0iZG9zdC5jbGFzcy5wYXRoIj4KLQkJPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2RpdGEub3QuZGlyfSR7ZmlsZS5zZXBhcmF0b3J9bGliJHtmaWxlLnNlcGFyYXRvcn1kb3N0LmphciIgLz4KLQk8L3BhdGg+Ci0KLQk8dGFza2RlZiBuYW1lPSJpbnRlZ3JhdGUiIGNsYXNzbmFtZT0ib3JnLmRpdGEuZG9zdC5wbGF0Zm9ybS5JbnRlZ3JhdG9yVGFzayI+Ci0JCTxjbGFzc3BhdGggcmVmaWQ9ImRvc3QuY2xhc3MucGF0aCIgLz4KLQk8L3Rhc2tkZWY+Ci0JPHRhcmdldCBuYW1lPSJhbGwiIGRlcGVuZHM9ImludGVncmF0ZSwgZWNsaXBzZWhlbHAiPgotCTwvdGFyZ2V0PgotCTx0YXJnZXQgbmFtZT0iaW50ZWdyYXRlIj4KLQkJPGludGVncmF0ZSBkaXRhZGlyPSIke2RpdGEub3QuZGlyfSIgLz4KLQk8L3RhcmdldD4KLQotCTwhLS0gcmV2aXNlIGJlbG93IGhlcmUgLS0+Ci0JPHRhcmdldCBuYW1lPSJlY2xpcHNlaGVscCI+Ci0JCTxhbnQgYW50ZmlsZT0iJHtkaXRhLm90LmRpcn0ke2ZpbGUuc2VwYXJhdG9yfWNvbmR1Y3Rvci54bWwiIHRhcmdldD0iaW5pdCIgZGlyPSIke2RpdGEub3QuZGlyfSI+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5jb3B5Y3NzIiB2YWx1ZT0ibm8iIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5jc3NwYXRoIiB2YWx1ZT0iLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9ImFyZ3MuZWNsaXBzZS5wcm92aWRlciIgdmFsdWU9IkVjbGlwc2Uub3JnIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9ImFyZ3MuZWNsaXBzZS52ZXJzaW9uIiB2YWx1ZT0iMy4zLjAiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5pbnB1dCIgbG9jYXRpb249IndzYXhpc2FudF90b2MuZGl0YW1hcCIgLz4gCi0JCQk8cHJvcGVydHkgbmFtZT0iY2xlYW4udGVtcCIgdmFsdWU9InRydWUiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iZGl0YS5leHRuYW1lIiB2YWx1ZT0iLmRpdGEiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iZGl0YS50ZW1wLmRpciIgbG9jYXRpb249InRlbXAiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0ib3V0cHV0LmRpciIgbG9jYXRpb249IiIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJ0cmFuc3R5cGUiIHZhbHVlPSJlY2xpcHNlaGVscCIgLz4KLQkJPC9hbnQ+Ci0JCTxjb3B5IGZpbGU9Im15cGx1Z2luLnhtbCIgdG9maWxlPSJwbHVnaW4ueG1sIiBvdmVyd3JpdGU9InllcyIgLz4KLQk8L3RhcmdldD4KLQk8dGFyZ2V0IG5hbWU9ImJ1aWxkLmluZGV4IiBkZXNjcmlwdGlvbj0iQnVpbGRzIHNlYXJjaCBpbmRleCBmb3IgdGhlIHBsdWctaW4iIGlmPSJlY2xpcHNlLnJ1bm5pbmciPgotCSAgICAgPGhlbHAuYnVpbGRIZWxwSW5kZXggbWFuaWZlc3Q9InBsdWdpbi54bWwiIGRlc3RpbmF0aW9uPSIuIi8+Ci0JPC90YXJnZXQ+CQotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFlYzY3NS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJXBsdWdpbk5hbWUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlcjtzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjUuMjAwLnF1YWxpZmllcgotQnVuZGxlLVZlbmRvcjogJXBsdWdpblByb3ZpZGVyCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9hYm91dC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ0MjRkNi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICB3c2F4aXNhbnRfdG9jLnhtbCxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIHRvcGljcy8qLmh0bSosXAotICAgICAgICAgICAgICAgaW5kZXgvLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXJpbmRleC54bWwKLXNyYy5pbmNsdWRlcyA9IGJ1aWxkLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgKi5tYXBsaXN0LFwKLSAgICAgICAgICAgICAgICouZGl0YW1hcCxcCi0gICAgICAgICAgICAgICB0b3BpY3MvKi5kaXRhLFwKLSAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlcmluZGV4LnhtbAotYmluLmV4Y2x1ZGVzID0gRG9jQnVpbGQueG1sLFwKLSAgICAgICAgICAgICAgIG15UGx1Z2luKi54bWwKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL2luZGV4L182LmNmcyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL2luZGV4L182LmNmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUzNGVkNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9pbmRleC9fNi5jZnMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9pbmRleC9kZWxldGFibGUgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9pbmRleC9kZWxldGFibGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5M2Y0NzAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvaW5kZXgvZGVsZXRhYmxlCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmI3MTNhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL2luZGV4L2luZGV4ZWRfY29udHJpYnV0aW9ucworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotI1RoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZTsgZG8gbm90IGVkaXQuDQotI1dlZCBNYXkgMTQgMjA6MzE6MjIgRURUIDIwMDgNCi1vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXI9b3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyXG4xLjUuMjAwLnF1YWxpZmllcg0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL2luZGV4L2luZGV4ZWRfZGVwZW5kZW5jaWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kZXBlbmRlbmNpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MDk0ZWYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kZXBlbmRlbmNpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSNUaGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGU7IGRvIG5vdCBlZGl0Lg0KLSNXZWQgTWF5IDE0IDIwOjMxOjIyIEVEVCAyMDA4DQotbHVjZW5lPTEuOS4xLnYyMDA4MDMwNjE4MTENCi1hbmFseXplcj1vcmcuZWNsaXBzZS5oZWxwLmJhc2VcIzMuMy4xMDAudjIwMDgwNDI1P2xvY2FsZVw9ZW4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9pbmRleC9pbmRleGVkX2RvY3MgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9pbmRleC9pbmRleGVkX2RvY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNGU0OTEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kb2NzCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0jVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlOyBkbyBub3QgZWRpdC4NCi0jV2VkIE1heSAxNCAyMDozMToyMiBFRFQgMjAwOA0KLS9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3JidXdzYS5odG1sPTANCi0vb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy90d2J3c2EuaHRtbD0wDQotL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvcnRkd3NhLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3J3c2NsaWVudGEuaHRtbD0wDQotL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvdHdid3NjbGllbnRhLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL2N3c2F4aXNhbnQuaHRtbD0wDQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvaW5kZXgvc2VnbWVudHMgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9pbmRleC9zZWdtZW50cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNlMzI3ZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9pbmRleC9zZWdtZW50cworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL215cGx1Z2luLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL215cGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTExMDRkMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9teXBsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC50b2MiPz4gCi0KLTwhLS0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNzggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gLS0+Ci0KLTxwbHVnaW4+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC50b2MiPgotICAgICAgICAgPHRvYyBmaWxlPSJ3c2F4aXNhbnRfdG9jLnhtbCIgLz4KLSAgICAgICA8aW5kZXggcGF0aD0iaW5kZXgvIi8+Ci0gICA8L2V4dGVuc2lvbj4KLSAgICAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuaW5kZXgiPgotICAgICAgPGluZGV4IGZpbGU9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlcmluZGV4LnhtbCIvPgotICAgICAgPC9leHRlbnNpb24+Ci0gICAgICAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UubHVjZW5lU2VhcmNoUGFydGljaXBhbnRzIj4KLSAgICAgIDxiaW5kaW5nIHBhcnRpY2lwYW50SWQ9Im9yZy5lY2xpcHNlLmhlbHAuYmFzZS54aHRtbCIvPgotICAgPC9leHRlbnNpb24+Ci08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci5tYXBsaXN0IGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyLm1hcGxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2NWYyNjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyLm1hcGxpc3QKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTxtYXBsaXN0IHZlcnNpb249IjMuNi4yIj4NCi0gIDxuYXY+DQotICAgIDxtYXAgZmlsZT0id3NheGlzYW50X3RvYy5kaXRhbWFwIi8+DQotICA8L25hdj4NCi0gIDxsaW5rPg0KLSAgICA8bWFwIGZpbGU9IndzYXhpc2FudF90b2MuZGl0YW1hcCIvPg0KLSAgPC9saW5rPg0KLTwvbWFwbGlzdD4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXJpbmRleC54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXJpbmRleC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZWM0MTQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyaW5kZXgueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxpbmRleD4KLSAgPGVudHJ5IGtleXdvcmQ9IkF4aXMgcnVudGltZSBlbnZpcm9ubWVudCI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9IldlYiBzZXJ2aWNlcyI+Ci0gICAgICA8ZW50cnkga2V5d29yZD0iY3JlYXRpbmcgd2l0aCBBbnQgdGFza3MiPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL2N3c2F4aXNhbnQuaHRtbCNjcmVhdGluZ2F3ZWJzZXJ2aWNlZnJvbWFqYXZhYmVhbiIgdGl0bGU9IkNyZWF0aW5nIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCBXZWIgc2VydmljZXMgYW5kIGNsaWVudHMgdXNpbmcgV2ViIHNlcnZpY2VzIEFudCB0YXNrcyIvPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL3R3YndzYS5odG1sI3R0ZHdzYSIgdGl0bGU9IkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgdXNpbmcgQW50IHRhc2tzIGluIHRoZSBXb3JrYmVuY2giLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0ic2tlbGV0b24gV2ViIHNlcnZpY2VzIj4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJBbnQgdGFzayByZWZlcmVuY2UiPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL3J0ZHdzYS5odG1sI3RvcC1kb3duYXhpc3dlYnNlcnZpY2Vjb21tYW5kbGluZXJlZmVyZW5jZSIgdGl0bGU9IlRvcC1kb3duIEF4aXMgV2ViIHNlcnZpY2UgQW50IHRhc2sgcHJvcGVydGllcyBmaWxlIHJlZmVyZW5jZSIvPgotICAgICAgPC9lbnRyeT4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJqYXZhIGJlYW4gV2ViIHNlcnZpY2VzIj4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJBbnQgdGFzayByZWZlcmVuY2UiPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL3JidXdzYS5odG1sI2JvdHRvbS11cGF4aXN3ZWJzZXJ2aWNlY29tbWFuZGxpbmVyZWZlcmVuY2UiIHRpdGxlPSJCb3R0b20tdXAgQXhpcyBXZWIgc2VydmljZSBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlIi8+Ci0gICAgICA8L2VudHJ5PgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9IldlYiBzZXJ2aWNlcyBjbGllbnQiPgotICAgICAgPGVudHJ5IGtleXdvcmQ9ImNyZWF0aW5nIHdpdGggQW50IHRhc2tzIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy90d2J3c2NsaWVudGEuaHRtbCN0d3NjbGllbnRhIiB0aXRsZT0iQ3JlYXRpbmcgYSBXZWIgc2VydmljZSBjbGllbnQgdXNpbmcgQW50IHRhc2tzIi8+Ci0gICAgICA8L2VudHJ5PgotICAgICAgPGVudHJ5IGtleXdvcmQ9IkFudCB0YXNrIHJlZmVyZW5jZSI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0b3BpY3MvcndzY2xpZW50YS5odG1sI2F4aXN3ZWJzZXJ2aWNlY2xpZW50Y29tbWFuZGxpbmVyZWZlcmVuY2UiIHRpdGxlPSJBeGlzIFdlYiBzZXJ2aWNlIGNsaWVudCBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlIi8+Ci0gICAgICA8L2VudHJ5PgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci0gIDxlbnRyeSBrZXl3b3JkPSJXZWIgc2VydmljZXMiPgotICAgIDxlbnRyeSBrZXl3b3JkPSJBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQiPgotICAgICAgPGVudHJ5IGtleXdvcmQ9ImNyZWF0aW5nIHdpdGggQW50IHRhc2tzIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy9jd3NheGlzYW50Lmh0bWwjY3JlYXRpbmdhd2Vic2VydmljZWZyb21hamF2YWJlYW4iIHRpdGxlPSJDcmVhdGluZyBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQgV2ViIHNlcnZpY2VzIGFuZCBjbGllbnRzIHVzaW5nIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3MiLz4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy90d2J3c2EuaHRtbCN0dGR3c2EiIHRpdGxlPSJDcmVhdGluZyBhIFdlYiBzZXJ2aWNlIHVzaW5nIEFudCB0YXNrcyBpbiB0aGUgV29ya2JlbmNoIi8+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0b3BpY3MvdHdid3NjbGllbnRhLmh0bWwjdHdzY2xpZW50YSIgdGl0bGU9IkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgY2xpZW50IHVzaW5nIEFudCB0YXNrcyIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJXZWIgc2VydmljZXMiPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL3R3YndzYS5odG1sI3R0ZHdzYSIgdGl0bGU9IkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgdXNpbmcgQW50IHRhc2tzIGluIHRoZSBXb3JrYmVuY2giLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgICA8ZW50cnkga2V5d29yZD0iQW50IHRhc2sgcmVmZXJlbmNlIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy9ydGR3c2EuaHRtbCN0b3AtZG93bmF4aXN3ZWJzZXJ2aWNlY29tbWFuZGxpbmVyZWZlcmVuY2UiIHRpdGxlPSJUb3AtZG93biBBeGlzIFdlYiBzZXJ2aWNlIEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2UiLz4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy9yYnV3c2EuaHRtbCNib3R0b20tdXBheGlzd2Vic2VydmljZWNvbW1hbmRsaW5lcmVmZXJlbmNlIiB0aXRsZT0iQm90dG9tLXVwIEF4aXMgV2ViIHNlcnZpY2UgQW50IHRhc2sgcHJvcGVydGllcyBmaWxlIHJlZmVyZW5jZSIvPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL3J3c2NsaWVudGEuaHRtbCNheGlzd2Vic2VydmljZWNsaWVudGNvbW1hbmRsaW5lcmVmZXJlbmNlIiB0aXRsZT0iQXhpcyBXZWIgc2VydmljZSBjbGllbnQgQW50IHRhc2sgcHJvcGVydGllcyBmaWxlIHJlZmVyZW5jZSIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJza2VsZXRvbiBXZWIgc2VydmljZXMiPgotICAgICAgICA8dG9waWMgaHJlZj0idG9waWNzL3J0ZHdzYS5odG1sI3RvcC1kb3duYXhpc3dlYnNlcnZpY2Vjb21tYW5kbGluZXJlZmVyZW5jZSIgdGl0bGU9IlRvcC1kb3duIEF4aXMgV2ViIHNlcnZpY2UgQW50IHRhc2sgcHJvcGVydGllcyBmaWxlIHJlZmVyZW5jZSIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJqYXZhIGJlYW4gV2ViIHNlcnZpY2VzIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy9yYnV3c2EuaHRtbCNib3R0b20tdXBheGlzd2Vic2VydmljZWNvbW1hbmRsaW5lcmVmZXJlbmNlIiB0aXRsZT0iQm90dG9tLXVwIEF4aXMgV2ViIHNlcnZpY2UgQW50IHRhc2sgcHJvcGVydGllcyBmaWxlIHJlZmVyZW5jZSIvPgotICAgICAgPC9lbnRyeT4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJXZWIgc2VydmljZXMgY2xpZW50Ij4KLSAgICAgICAgPHRvcGljIGhyZWY9InRvcGljcy90d2J3c2NsaWVudGEuaHRtbCN0d3NjbGllbnRhIiB0aXRsZT0iQ3JlYXRpbmcgYSBXZWIgc2VydmljZSBjbGllbnQgdXNpbmcgQW50IHRhc2tzIi8+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0b3BpY3MvcndzY2xpZW50YS5odG1sI2F4aXN3ZWJzZXJ2aWNlY2xpZW50Y29tbWFuZGxpbmVyZWZlcmVuY2UiIHRpdGxlPSJBeGlzIFdlYiBzZXJ2aWNlIGNsaWVudCBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlIi8+Ci0gICAgICA8L2VudHJ5PgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci08L2luZGV4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1YzJkYWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBOTFNfTUVTU0FHRUZPUk1BVF9WQVIgCi0jIE5MU19FTkNPRElORz1VVEYtOCAKLQotcGx1Z2luTmFtZSAgICAgPSBXZWIgc2VydmljZXMgQXhpcyBBbnQgdGFzayBkb2N1bWVudGF0aW9uCi1wbHVnaW5Qcm92aWRlciA9IEVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9wbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTExMDRkMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+IAotCi08IS0tIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDc4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgotCi08cGx1Z2luPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj4KLSAgICAgICAgIDx0b2MgZmlsZT0id3NheGlzYW50X3RvYy54bWwiIC8+Ci0gICAgICAgPGluZGV4IHBhdGg9ImluZGV4LyIvPgotICAgPC9leHRlbnNpb24+Ci0gICAgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLmluZGV4Ij4KLSAgICAgIDxpbmRleCBmaWxlPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXJpbmRleC54bWwiLz4KLSAgICAgIDwvZXh0ZW5zaW9uPgotICAgICAgICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5iYXNlLmx1Y2VuZVNlYXJjaFBhcnRpY2lwYW50cyI+Ci0gICAgICA8YmluZGluZyBwYXJ0aWNpcGFudElkPSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UueGh0bWwiLz4KLSAgIDwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvY3dzYXhpc2FudC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL2N3c2F4aXNhbnQuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIxNTQ3ZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvY3dzYXhpc2FudC5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSBjb25jZXB0IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIENvbmNlcHQvL0VOIg0KLSAiY29uY2VwdC5kdGQiPg0KLTxjb25jZXB0IGlkPSJjcmVhdGluZ2F3ZWJzZXJ2aWNlZnJvbWFqYXZhYmVhbiIgeG1sOmxhbmc9ImVuLXVzIj4NCi08dGl0bGU+Q3JlYXRpbmcgQXhpcyBydW50aW1lIGVudmlyb25tZW50IFdlYiBzZXJ2aWNlcyBhbmQgY2xpZW50cyB1c2luZyBXZWINCi1zZXJ2aWNlcyBBbnQgdGFza3M8L3RpdGxlPg0KLTx0aXRsZWFsdHM+DQotPHNlYXJjaHRpdGxlPkNyZWF0aW5nIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCBXZWIgc2VydmljZXMgYW5kIGNsaWVudHMgdXNpbmcNCi1BbnQgdGFza3M8L3NlYXJjaHRpdGxlPg0KLTwvdGl0bGVhbHRzPg0KLTxzaG9ydGRlc2M+SWYgeW91IHByZWZlciBub3QgdG8gdXNlIHRoZSBXZWIgc2VydmljZSB3aXphcmQsIHlvdSBjYW4gdXNlIEFudA0KLWZpbGVzIHRvIGNyZWF0ZSBXZWIgc2VydmljZXMgYW5kIGNsaWVudHMgdXNpbmcgdGhlIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudC4NCi1UaGUgV2ViIHNlcnZpY2VzIEFudCB0YXNrcyBjYW4gYmUgcnVuIGluIHR3byB3YXlzOiB0aHJvdWdoIHRoZSBFY2xpcHNlIHdvcmtzcGFjZQ0KLXVzaW5nIDxtZW51Y2FzY2FkZT48dWljb250cm9sPlJ1biBBczwvdWljb250cm9sPjx1aWNvbnRyb2w+QW50IEJ1aWxkLi4uPC91aWNvbnRyb2w+DQotPC9tZW51Y2FzY2FkZT4sIG9yIHRoZXkgY2FuIGJlIHJ1biBoZWFkbGVzcyB0aHJvdWdoIHRoZSBjb21tYW5kIGxpbmUuIE9uY2UNCi15b3UgaGF2ZSBjcmVhdGVkIHlvdXIgV2ViIHNlcnZpY2UsIHlvdSBjYW4gdGhlbiBkZXBsb3kgaXQgdG8gYSBzZXJ2ZXIsIHRlc3QNCi1pdCwgYW5kIHB1Ymxpc2ggaXQgYXMgYSBidXNpbmVzcyBlbnRpdHkgb3IgYnVzaW5lc3Mgc2VydmljZS48L3Nob3J0ZGVzYz4NCi08cHJvbG9nPjxtZXRhZGF0YT4NCi08a2V5d29yZHM+PGluZGV4dGVybT5BeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQ8aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+Y3JlYXRpbmcNCi13aXRoIEFudCB0YXNrczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5BeGlzDQotcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+Y3JlYXRpbmcgd2l0aCBBbnQgdGFza3M8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT4NCi08L2tleXdvcmRzPg0KLTwvbWV0YWRhdGE+PC9wcm9sb2c+DQotPGNvbmJvZHk+DQotPHNlY3Rpb24+PHRpdGxlPlByZXJlcXVpc2l0ZXM8L3RpdGxlPjxwPkJlZm9yZSB5b3UgY3JlYXRlIGEgV2ViIHNlcnZpY2Ugb3INCi1jbGllbnQgdXNpbmcgdGhlIEFudCB0YXNrcywgeW91IG5lZWQgdG8gY29tcGxldGUgYSBmZXcgcHJlcmVxdWlzaXRlcy48L3A+PHVsPg0KLTxsaT5JbnN0YWxsIEFwYWNoZSBUb21jYXQsIGNyZWF0ZSBhIHNlcnZlciwgYW5kIGNyZWF0ZSBhIGR5bmFtaWMgV2ViIHByb2plY3QNCi1hc3NvY2lhdGVkIHdpdGggdGhhdCBzZXJ2ZXIgYXMgZGVzY3JpYmVkIGluIDx4cmVmIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLnVpLmRvYy51c2VyL3RvcGljcy90dG9tY2F0c2Vydi5kaXRhIg0KLXNjb3BlPSJwZWVyIj5DcmVhdGluZyBhbiBBcGFjaGUgVG9tY2F0IHNlcnZlciBhbmQgV2ViIHByb2plY3Q8L3hyZWY+PC9saT4NCi08bGk+SW1wb3J0IHRoZSByZXF1aXJlZCBBbnQgZmlsZXMgaW50byB5b3VyIHdvcmtzcGFjZTo8b2w+DQotPGxpPkNyZWF0ZSBhIHByb2plY3QuPC9saT4NCi08bGk+SW1wb3J0IHRoZSByZXF1aXJlZCBBbnQgZmlsZXMuIFNlbGVjdCA8bWVudWNhc2NhZGU+PHVpY29udHJvbD5GaWxlPC91aWNvbnRyb2w+DQotPHVpY29udHJvbD5OZXc8L3VpY29udHJvbD48dWljb250cm9sPk90aGVyPC91aWNvbnRyb2w+PHVpY29udHJvbD5XZWIgU2VydmljZXM8L3VpY29udHJvbD4NCi08dWljb250cm9sPkFudCBGaWxlczwvdWljb250cm9sPjx1aWNvbnRyb2w+TmV4dDwvdWljb250cm9sPjwvbWVudWNhc2NhZGU+LjwvbGk+DQotPGxpPlNlbGVjdCB0aGUgZm9sbG93aW5nOjx1bD4NCi08bGk+V2ViIHNlcnZpY2UgcnVudGltZTwvbGk+DQotPGxpPldlYiBzZXJ2aWNlIG9yIGNsaWVudCB0eXBlPC9saT4NCi08bGk+TG9jYXRpb24gaW50byB3aGljaCB0aGUgYW50IGZpbGVzIHdpbGwgYmUgZ2VuZXJhdGVkPC9saT4NCi08L3VsPkNsaWNrIDx1aWNvbnRyb2w+RmluaXNoPC91aWNvbnRyb2w+LjwvbGk+DQotPC9vbD5EZXBlbmRpbmcgb24gdGhlIHNlbGVjdGlvbnMgbWFkZSBvbiB0aGUgcHJldmlvdXMgcGFuZWwsIHNldmVyYWwgZmlsZXMNCi1tYXkgYmUgaW1wb3J0ZWQgaW50byB0aGlzIHByb2plY3Q6PHVsPg0KLTxsaT48aT5ydW50aW1lX3NlcnZpY2V0eXBlPC9pPi54bWwgLSB0aGlzIGlzIHRoZSBBbnQgZmlsZS48L2xpPg0KLTxsaT48aT5ydW50aW1lX3NlcnZpY2V0eXBlPC9pPi5wcm9wZXJ0aWVzIC0gdGhpcyBpcyBhIHNhbXBsZSBBbnQgcHJvcGVydGllcw0KLWZpbGUgcmVmZXJlbmNlZCBieSB0aGUgQW50IGZpbGUuIFlvdSBjYW4gbW9kaWZ5IHRoZSBwcm9wZXJ0aWVzIGluIHRoaXMgZmlsZQ0KLXRvIGdlbmVyYXRlIGEgV2ViIHNlcnZpY2UuPC9saT4NCi08L3VsPjwvbGk+DQotPGxpPkNyZWF0ZSBhIGR5bmFtaWMgV2ViIHByb2plY3QgZm9yIHRoZSBXZWIgc2VydmljZSBvciBjbGllbnQuPC9saT4NCi08L3VsPjwvc2VjdGlvbj4NCi08c2VjdGlvbj48dGl0bGU+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSBvciBjbGllbnQ8L3RpdGxlPjxwPk9uY2UgeW91J3ZlIGNvbXBsZXRlZA0KLXRoZSBwcmVyZXF1aXNpdGVzIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZzo8L3A+PC9zZWN0aW9uPg0KLTwvY29uYm9keT4NCi08L2NvbmNlcHQ+DQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL2N3c2F4aXNhbnQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy9jd3NheGlzYW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZGFkNTQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL2N3c2F4aXNhbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJjb25jZXB0IiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkNyZWF0aW5nIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCBXZWIgc2VydmljZXMgYW5kIGNsaWVudHMgdXNpbmcgV2ViIHNlcnZpY2VzIEFudCB0YXNrcyIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJJZiB5b3UgcHJlZmVyIG5vdCB0byB1c2UgdGhlIFdlYiBzZXJ2aWNlIHdpemFyZCwgeW91IGNhbiB1c2UgQW50IGZpbGVzIHRvIGNyZWF0ZSBXZWIgc2VydmljZXMgYW5kIGNsaWVudHMgdXNpbmcgdGhlIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudC4gVGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3MgY2FuIGJlIHJ1biBpbiB0d28gd2F5czogdGhyb3VnaCB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UgdXNpbmcgUnVuIEFzICZndDsgQW50IEJ1aWxkLi4uLCBvciB0aGV5IGNhbiBiZSBydW4gaGVhZGxlc3MgdGhyb3VnaCB0aGUgY29tbWFuZCBsaW5lLiBPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgeW91ciBXZWIgc2VydmljZSwgeW91IGNhbiB0aGVuIGRlcGxveSBpdCB0byBhIHNlcnZlciwgdGVzdCBpdCwgYW5kIHB1Ymxpc2ggaXQgYXMgYSBidXNpbmVzcyBlbnRpdHkgb3IgYnVzaW5lc3Mgc2VydmljZS4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iSWYgeW91IHByZWZlciBub3QgdG8gdXNlIHRoZSBXZWIgc2VydmljZSB3aXphcmQsIHlvdSBjYW4gdXNlIEFudCBmaWxlcyB0byBjcmVhdGUgV2ViIHNlcnZpY2VzIGFuZCBjbGllbnRzIHVzaW5nIHRoZSBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFRoZSBXZWIgc2VydmljZXMgQW50IHRhc2tzIGNhbiBiZSBydW4gaW4gdHdvIHdheXM6IHRocm91Z2ggdGhlIEVjbGlwc2Ugd29ya3NwYWNlIHVzaW5nIFJ1biBBcyAmZ3Q7IEFudCBCdWlsZC4uLiwgb3IgdGhleSBjYW4gYmUgcnVuIGhlYWRsZXNzIHRocm91Z2ggdGhlIGNvbW1hbmQgbGluZS4gT25jZSB5b3UgaGF2ZSBjcmVhdGVkIHlvdXIgV2ViIHNlcnZpY2UsIHlvdSBjYW4gdGhlbiBkZXBsb3kgaXQgdG8gYSBzZXJ2ZXIsIHRlc3QgaXQsIGFuZCBwdWJsaXNoIGl0IGFzIGEgYnVzaW5lc3MgZW50aXR5IG9yIGJ1c2luZXNzIHNlcnZpY2UuIiAvPgotPG1ldGEgY29udGVudD0iQXhpcyBydW50aW1lIGVudmlyb25tZW50LCBXZWIgc2VydmljZXMsIGNyZWF0aW5nIHdpdGggQW50IHRhc2tzLCBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIGNyZWF0aW5nIHdpdGggQW50IHRhc2tzIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iQXhpcyBydW50aW1lIGVudmlyb25tZW50LCBXZWIgc2VydmljZXMsIGNyZWF0aW5nIHdpdGggQW50IHRhc2tzLCBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIGNyZWF0aW5nIHdpdGggQW50IHRhc2tzIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdG9waWNzL3R3YndzYS5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90b3BpY3MvdHdid3NjbGllbnRhLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0iY3JlYXRpbmdhd2Vic2VydmljZWZyb21hamF2YWJlYW4iIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5DcmVhdGluZyBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQgV2ViIHNlcnZpY2VzIGFuZCBjbGllbnRzIHVzaW5nCi1BbnQgdGFza3M8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9ImNyZWF0aW5nYXdlYnNlcnZpY2Vmcm9tYWphdmFiZWFuIj48YSBuYW1lPSJjcmVhdGluZ2F3ZWJzZXJ2aWNlZnJvbWFqYXZhYmVhbiI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+Q3JlYXRpbmcgQXhpcyBydW50aW1lIGVudmlyb25tZW50IFdlYiBzZXJ2aWNlcyBhbmQgY2xpZW50cyB1c2luZyBXZWIKLXNlcnZpY2VzIEFudCB0YXNrczwvaDE+Ci0KLQotCi0KLTxkaXY+PHA+SWYgeW91IHByZWZlciBub3QgdG8gdXNlIHRoZSBXZWIgc2VydmljZSB3aXphcmQsIHlvdSBjYW4gdXNlIEFudAotZmlsZXMgdG8gY3JlYXRlIFdlYiBzZXJ2aWNlcyBhbmQgY2xpZW50cyB1c2luZyB0aGUgQXhpcyBydW50aW1lIGVudmlyb25tZW50LgotVGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3MgY2FuIGJlIHJ1biBpbiB0d28gd2F5czogdGhyb3VnaCB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UKLXVzaW5nIDxzcGFuIGNsYXNzPSJtZW51Y2FzY2FkZSI+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+UnVuIEFzPC9zcGFuPiAmZ3Q7IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFudCBCdWlsZC4uLjwvc3Bhbj4KLTwvc3Bhbj4sIG9yIHRoZXkgY2FuIGJlIHJ1biBoZWFkbGVzcyB0aHJvdWdoIHRoZSBjb21tYW5kIGxpbmUuIE9uY2UKLXlvdSBoYXZlIGNyZWF0ZWQgeW91ciBXZWIgc2VydmljZSwgeW91IGNhbiB0aGVuIGRlcGxveSBpdCB0byBhIHNlcnZlciwgdGVzdAotaXQsIGFuZCBwdWJsaXNoIGl0IGFzIGEgYnVzaW5lc3MgZW50aXR5IG9yIGJ1c2luZXNzIHNlcnZpY2UuPC9wPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+UHJlcmVxdWlzaXRlczwvaDQ+PHA+QmVmb3JlIHlvdSBjcmVhdGUgYSBXZWIgc2VydmljZSBvcgotY2xpZW50IHVzaW5nIHRoZSBBbnQgdGFza3MsIHlvdSBuZWVkIHRvIGNvbXBsZXRlIGEgZmV3IHByZXJlcXVpc2l0ZXMuPC9wPgotPHVsPgotPGxpPkluc3RhbGwgQXBhY2hlIFRvbWNhdCwgY3JlYXRlIGEgc2VydmVyLCBhbmQgY3JlYXRlIGEgZHluYW1pYyBXZWIgcHJvamVjdAotYXNzb2NpYXRlZCB3aXRoIHRoYXQgc2VydmVyIGFzIGRlc2NyaWJlZCBpbiA8YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy51aS5kb2MudXNlci90b3BpY3MvdHRvbWNhdHNlcnYuaHRtbCI+Q3JlYXRpbmcgYW4gQXBhY2hlIFRvbWNhdCBzZXJ2ZXIgYW5kIFdlYiBwcm9qZWN0PC9hPjwvbGk+Ci0KLTxsaT5JbXBvcnQgdGhlIHJlcXVpcmVkIEFudCBmaWxlcyBpbnRvIHlvdXIgd29ya3NwYWNlOjxvbD4KLTxsaT5DcmVhdGUgYSBwcm9qZWN0LjwvbGk+Ci0KLTxsaT5JbXBvcnQgdGhlIHJlcXVpcmVkIEFudCBmaWxlcy4gU2VsZWN0IDxzcGFuIGNsYXNzPSJtZW51Y2FzY2FkZSI+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmlsZTwvc3Bhbj4KLSAmZ3Q7IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5ldzwvc3Bhbj4gJmd0OyA8c3BhbiBjbGFzcz0idWljb250cm9sIj5PdGhlcjwvc3Bhbj4gJmd0OyA8c3BhbiBjbGFzcz0idWljb250cm9sIj5XZWIgU2VydmljZXM8L3NwYW4+Ci0gJmd0OyA8c3BhbiBjbGFzcz0idWljb250cm9sIj5BbnQgRmlsZXM8L3NwYW4+ICZndDsgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV4dDwvc3Bhbj48L3NwYW4+LjwvbGk+Ci0KLTxsaT5TZWxlY3QgdGhlIGZvbGxvd2luZzo8dWw+Ci08bGk+V2ViIHNlcnZpY2UgcnVudGltZTwvbGk+Ci0KLTxsaT5XZWIgc2VydmljZSBvciBjbGllbnQgdHlwZTwvbGk+Ci0KLTxsaT5Mb2NhdGlvbiBpbnRvIHdoaWNoIHRoZSBhbnQgZmlsZXMgd2lsbCBiZSBnZW5lcmF0ZWQ8L2xpPgotCi08L3VsPgotQ2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluaXNoPC9zcGFuPi48L2xpPgotCi08L29sPgotRGVwZW5kaW5nIG9uIHRoZSBzZWxlY3Rpb25zIG1hZGUgb24gdGhlIHByZXZpb3VzIHBhbmVsLCBzZXZlcmFsIGZpbGVzCi1tYXkgYmUgaW1wb3J0ZWQgaW50byB0aGlzIHByb2plY3Q6PHVsPgotPGxpPjxlbT5ydW50aW1lX3NlcnZpY2V0eXBlPC9lbT4ueG1sIC0gdGhpcyBpcyB0aGUgQW50IGZpbGUuPC9saT4KLQotPGxpPjxlbT5ydW50aW1lX3NlcnZpY2V0eXBlPC9lbT4ucHJvcGVydGllcyAtIHRoaXMgaXMgYSBzYW1wbGUgQW50IHByb3BlcnRpZXMKLWZpbGUgcmVmZXJlbmNlZCBieSB0aGUgQW50IGZpbGUuIFlvdSBjYW4gbW9kaWZ5IHRoZSBwcm9wZXJ0aWVzIGluIHRoaXMgZmlsZQotdG8gZ2VuZXJhdGUgYSBXZWIgc2VydmljZS48L2xpPgotCi08L3VsPgotPC9saT4KLQotPGxpPkNyZWF0ZSBhIGR5bmFtaWMgV2ViIHByb2plY3QgZm9yIHRoZSBXZWIgc2VydmljZSBvciBjbGllbnQuPC9saT4KLQotPC91bD4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDQgY2xhc3M9InNlY3Rpb250aXRsZSI+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSBvciBjbGllbnQ8L2g0PjxwPk9uY2UgeW91J3ZlIGNvbXBsZXRlZAotdGhlIHByZXJlcXVpc2l0ZXMgeW91IGNhbiBkbyB0aGUgZm9sbG93aW5nOjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTx1bCBjbGFzcz0idWxsaW5rcyI+Ci08bGkgY2xhc3M9InVsY2hpbGRsaW5rIj48c3Ryb25nPjxhIGhyZWY9Ii4uL3RvcGljcy90d2J3c2EuaHRtbCI+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSB1c2luZyBBbnQgdGFza3MgaW4gdGhlIFdvcmtiZW5jaDwvYT48L3N0cm9uZz48YnIgLz4KLVlvdSBjYW4gdXNlIEFudCB0aHJvdWdoIHRoZSBFY2xpcHNlIHdvcmtzcGFjZSB0byBnZW5lcmF0ZSBhIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBBeGlzIHJ1bi10aW1lIGVudmlyb25tZW50LiBCb3RoIHRvcC1kb3duIGFuZCBib3R0b20tdXAgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGlzIHN1cHBvcnRlZCB3aXRoIHRoZSBBbnQgdGFza3MuPC9saT4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vdG9waWNzL3R3YndzY2xpZW50YS5odG1sIj5DcmVhdGluZyBhIFdlYiBzZXJ2aWNlIGNsaWVudCB1c2luZyBBbnQgdGFza3M8L2E+PC9zdHJvbmc+PGJyIC8+Ci1JZiB5b3UgaGF2ZSBhIFdTREwgZmlsZSB5b3UgY2FuIHVzZSBBbnQgdGhyb3VnaCB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UgdG8gZ2VuZXJhdGUgYSBXZWIgc2VydmljZSBjbGllbnQgdXNpbmcgdGhlIEF4aXMgcnVuLXRpbWUgZW52aXJvbm1lbnQuPC9saT4KLTwvdWw+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy9yYnV3c2EuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy9yYnV3c2EuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlhODUyZi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvcmJ1d3NhLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSByZWZlcmVuY2UgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgUmVmZXJlbmNlLy9FTiINCi0gInJlZmVyZW5jZS5kdGQiPg0KLTxyZWZlcmVuY2UgaWQ9ImJvdHRvbS11cGF4aXN3ZWJzZXJ2aWNlY29tbWFuZGxpbmVyZWZlcmVuY2UiIHhtbDpsYW5nPSJlbi11cyI+DQotPHRpdGxlPkJvdHRvbS11cCBBeGlzIFdlYiBzZXJ2aWNlIEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2U8L3RpdGxlPg0KLTxzaG9ydGRlc2M+VGhlIDx1c2VyaW5wdXQ+YXhpc19idWphdmEucHJvcGVydGllczwvdXNlcmlucHV0PiBmaWxlIGlzIHVzZWQNCi10byBwYXNzIGRhdGEgdG8gdGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3Mgd2hlbiBjcmVhdGluZyBhbiBBeGlzIFdlYiBzZXJ2aWNlDQotLiBUaGlzIGZpbGUgc2hvd3MgdGhlIGF2YWlsYWJsZSBvcHRpb25zLjwvc2hvcnRkZXNjPg0KLTxwcm9sb2c+PG1ldGFkYXRhPg0KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+amF2YSBiZWFuIFdlYiBzZXJ2aWNlczxpbmRleHRlcm0+QW50DQotdGFzayByZWZlcmVuY2U8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT48aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+QXhpcw0KLXJ1bnRpbWUgZW52aXJvbm1lbnQ8aW5kZXh0ZXJtPmphdmEgYmVhbiBXZWIgc2VydmljZXM8aW5kZXh0ZXJtPkFudCB0YXNrIHJlZmVyZW5jZTwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPg0KLTwva2V5d29yZHM+DQotPC9tZXRhZGF0YT48L3Byb2xvZz4NCi08cmVmYm9keT4NCi08c2VjdGlvbj48dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+PHBhcm1sPjxwbGVudHJ5Pg0KLTxwdD5TY2VuYXJpb1R5cGU8L3B0Pg0KLTxwZD48c3lucGg+IE9wdGlvbnM6IDxjb2RlcGg+c2VydmljZTwvY29kZXBoPiA8L3N5bnBoPjwvcGQ+DQotPHBkPlRoaXMgaXMgYSByZXF1aXJlZCBlbGVtZW50IHRoYXQgdGVsbHMgdGhlIEFudCB0YXNrIGlmIGl0IGlzIGNyZWF0aW5nIGENCi1XZWIgc2VydmljZSBvciBhIFdlYiBzZXJ2aWNlIGNsaWVudC48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+SW5pdGlhbFNlbGVjdGlvbjwvcHQ+DQotPHBkPkVudGVyIHRoZSB3b3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIHRoZSBXU0RMIGZpbGUgb3IgSmF2YSBiZWFuIHdpdGhpbg0KLXlvdXIgd29ya3NwYWNlLiBGb3IgZXhhbXBsZSA8dXNlcmlucHV0Pi9keW5hbWljV2ViUHJvamVjdE5hbWUvV2ViQ29udGVudC9teVNlcnZpY2Uud3NkbDwvdXNlcmlucHV0PiBvciA8dXNlcmlucHV0Pi9keW5hbWljV2ViUHJvamVjdE5hbWUvc3JjL215QmVhbi5qYXZhPC91c2VyaW5wdXQNCi0+PC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0Pkxpc3RSdW50aW1lczwvcHQ+DQotPHBkPjxzeW5waD4gT3B0aW9uczogPGNvZGVwaD50cnVlPC9jb2RlcGg+IDxjb2RlcGg+ZmFsc2U8L2NvZGVwaD48L3N5bnBoPjwvcGQ+DQotPHBkPklmIDxjb2RlcGg+dHJ1ZTwvY29kZXBoPiBpcyBzZWxlY3RlZCwgdGhlIGxpc3Qgb2YgdmFsaWQgcnVudGltZSBvcHRpb25zDQotd2lsbCBiZSBwcm92aWRlZCB3aGVuIHRoZSBBbnQgdGFzayBpcyBydW4uPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0Pkxpc3RTZXJ2ZXJzPC9wdD4NCi08cGQ+PHN5bnBoPiBPcHRpb25zOiA8Y29kZXBoPnRydWU8L2NvZGVwaD4gPGNvZGVwaD5mYWxzZTwvY29kZXBoPjwvc3lucGg+PC9wZD4NCi08cGQ+SWYgPGNvZGVwaD50cnVlPC9jb2RlcGg+IGlzIHNlbGVjdGVkLCB0aGUgbGlzdCBvZiB2YWxpZCBzZXJ2ZXIgb3B0aW9ucw0KLXdpbGwgYmUgcHJvdmlkZWQgd2hlbiB0aGUgQW50IHRhc2sgaXMgcnVuLjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5TZXJ2aWNlLlJ1bnRpbWVJZDwvcHQ+DQotPHBkPlRoaXMgaXMgdGhlIElEIG9mIHRoZSBXZWIgc2VydmljZSdzIHJ1bnRpbWUuIFRoaXMgcGFyYW1ldGVyIHNob3VsZCBub3QNCi1iZSBtb2RpZmllZC48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+U2VydmljZS5TZXJ2ZXJJZDwvcHQ+DQotPHBkPk9wdGlvbnM6PHNsPg0KLTxzbGk+PGNvZGVwaD5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC54PC9jb2RlcGg+ICh3aGVyZSA8Y29kZXBoPng8L2NvZGVwaD4gaXMgPGNvZGVwaD4zMiwNCi00MCwgNDEsIDUwLDwvY29kZXBoPiBvciA8Y29kZXBoPjU1PC9jb2RlcGg+KTwvc2xpPg0KLTxzbGk+PGNvZGVwaD5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMud2VibG9naWN4PC9jb2RlcGg+ICh3aGVyZSA8Y29kZXBoPng8L2NvZGVwaD4gaXMgPGNvZGVwaD44MTwvY29kZXBoPiBvciA8Y29kZXBoPjkwPC9jb2RlcGg+KSA8L3NsaT4NCi08c2xpPjxjb2RlcGg+b3JnLmVjbGlwc2UuanN0LnNlcnZlci5nZW5lcmljLmpib3NzeDwvY29kZXBoPiAod2hlcmUgPGNvZGVwaD54PC9jb2RlcGg+IGlzIDxjb2RlcGg+MzIzPC9jb2RlcGg+IG9yIDxjb2RlcGg+NDwvY29kZXBoPik8L3NsaT4NCi08c2xpPjxjb2RlcGg+b3JnLmVjbGlwc2UuanN0LnNlcnZlci5nZW5lcmljLmpvbmFzNDwvY29kZXBoPjwvc2xpPg0KLTxzbGk+PGNvZGVwaD5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMub3JhY2xlMTAxMzwvY29kZXBoPjwvc2xpPg0KLTxzbGk+PGNvZGVwaD5vcmcuZWNsaXBzZS5qc3Quc2VydmVycy53ZWJzcGhlcmUuNjwvY29kZXBoPjwvc2xpPg0KLTwvc2w+PC9wZD4NCi08cGQ+VGhpcyBpcyB0aGUgSUQgb2YgdGhlIHRhcmdldCBzZXJ2ZXIuIERlbGV0ZSBvciBjb21tZW50IG91dCB0aGlzIHBhcmFtZXRlcg0KLXRvIGhhdmUgdGhlIEFudCB0YXNrIHNlbGVjdCB0aGUgY29ycmVjdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2VydmVyIHNldHRpbmdzDQotb2YgdGhlIGR5bmFtaWMgV2ViIHByb2plY3QuPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0PlNlcnZpY2VQcm9qZWN0TmFtZTwvcHQ+DQotPHBkPkJ5IGRlZmF1bHQgdGhlIHNlcnZpY2UgcHJvamVjdCBpcyBnaXZlbiB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlIG9yIEphdmENCi1iZWFuIGZyb20gd2hpY2ggaXQgaXMgY3JlYXRlZC4gVXNlIHRoaXMgcGFyYW1ldGVyIHRvIGNyZWF0ZSB0aGUgc2VydmljZSBwcm9qZWN0DQotd2l0aCBhIGRpZmZlcmVudCBuYW1lLjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5TZXJ2aWNlRWFyUHJvamVjdE5hbWU8L3B0Pg0KLTxwZD5CeSBkZWZhdWx0IHRoZSBzZXJ2aWNlIEVBUiBwcm9qZWN0IGlzIGdpdmVuIHRoZSBuYW1lIG9mIHRoZSBXU0RMIGZpbGUNCi1vciBKYXZhIGJlYW4gZnJvbSB3aGljaCBpdCBpcyBjcmVhdGVkLiBVc2UgdGhpcyBwYXJhbWV0ZXIgdG8gY3JlYXRlIHRoZSBzZXJ2aWNlDQotRUFSIHByb2plY3Qgd2l0aCBhIGRpZmZlcmVudCBuYW1lLjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5NYXBwaW5nczwvcHQ+DQotPHBkPkVudGVyIHRoZSB3b3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIGEgcHJvcGVydHkgZmlsZSBjb250YWluaW5nIG1hcHBpbmdzLjwvcGQ+DQotPHBkPk1hcHBpbmdzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBuYW1lcyBpbiB0aGUgZ2VuZXJhdGVkDQotV1NETC4gVGhlIGNvbnRlbnQgb2YgdGhlIHByb3BlcnRpZXMgZmlsZSBtdXN0IGJlIG9mIHRoZSBmb3JtYXQgcGFja2FnZT1uYW1lc3BhY2UuDQotWW91IHdpbGwgbmVlZCB0byBlc2NhcGUgc29tZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIHByb3BlcnRpZXMgZmlsZXMuIA0KLUZvciBleGFtcGxlIDxjb2RlcGg+c29tZVBhY2thZ2U9aHR0cDovL3NvbWVOYW1lc3BhY2U8L2NvZGVwaD4gc2hvdWxkIGJlIDxjb2RlcGg+c29tZVBhY2thZ2U9aHR0cFw6Ly9zb21lTmFtZXNwYWNlPC9jb2RlcGg+Lg0KLSBPdGhlcndpc2UsIHRoZSBjb2xvbiAoOikgd291bGQgYmUgdHJlYXRlZCBhcyBkZWxpbWl0ZXIgcmVzdWx0aW5nIGluIHRyeWluZw0KLXRvIG1hcCA8Y29kZXBoPnNvbWVQYWNrYWdlPC9jb2RlcGg+IHRvIDxjb2RlcGg+aHR0cDwvY29kZXBoPi48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+SmF2YU91dHB1dDwvcHQ+DQotPHBkPkVudGVyIHRoZSB3b3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIGFuIGV4aXN0aW5nIEphdmEgc291cmNlIGZvbGRlciBmb3INCi10aGUgZ2VuZXJhdGVkIEphdmEgY29kZS48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+TWV0aG9kczwvcHQ+DQotPHBkPlVzZSB0aGlzIHBhcmFtZXRlciB0byBsaW1pdCB3aGljaCBtZXRob2RzIGFyZSBleHBvc2VkIGluIHRoZSBzZXJ2aWNlLg0KLUl0IG11c3QgYmUgaW4gdGhlIGZvcm0gb2YgYSBzcGFjZSBkZWxpbWl0ZWQgc3RyaW5nIG9mIG1ldGhvZCBzaWduYXR1cmVzLiBGb3INCi1leGFtcGxlLCA8dXNlcmlucHV0Pm1ldGhvZDEocGFybVR5cGUxKSBtZXRob2QyKHBhcm1UeXBlMik8L3VzZXJpbnB1dD4uIElmDQotbm8gbGlzdCBpcyBwcm92aWRlZCwgYWxsIG1ldGhvZHMgYXJlIGV4cG9zZWQuIDwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5TdHlsZTwvcHQ+DQotPHBkPjxzeW5waD4gT3B0aW9uczogPGNvZGVwaD5ET0NVTUVOVDwvY29kZXBoPiA8Y29kZXBoPlJQQzwvY29kZXBoPiA8Y29kZXBoPldSQVBQRUQ8L2NvZGVwaD48L3N5bnBoPjwvcGQ+DQotPHBkPlNlbGVjdCB0aGUgU09BUCBtZXNzYWdlIHN0eWxlLiBUaGUgZGVmYXVsdCBpcyA8Y29kZXBoPkRPQ1VNRU5UPC9jb2RlcGg+LjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5Vc2U8L3B0Pg0KLTxwZD48c3lucGg+IE9wdGlvbnM6IDxjb2RlcGg+TElURVJBTDwvY29kZXBoPiA8Y29kZXBoPkVOQ09ERUQ8L2NvZGVwaD48L3N5bnBoPjwvcGQ+DQotPHBkPlNlbGVjdCBpZiB0aGUgU09BUCBtZXNzYWdlIHdpbGwgYmUgbGl0ZXJhbCBvciBlbmNvZGVkLiBUaGUgZGVmYXVsdCBpcyA8Y29kZXBoPkxJVEVSQUw8L2NvZGVwaD4uPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0Pk92ZXJ3cml0ZUZpbGVzRW5hYmxlZDwvcHQ+DQotPHBkPjxzeW5waD4gT3B0aW9uczogPGNvZGVwaD50cnVlPC9jb2RlcGg+IDxjb2RlcGg+ZmFsc2U8L2NvZGVwaD48L3N5bnBoPjwvcGQ+DQotPHBkPlVzZSB0aGlzIHBhcmFtZXRlciB0byB0ZWxsIHRoZSBBbnQgdGFzayB0byBvdmVyd3JpdGUgYW55IGZpbGUgdGhhdCBpdA0KLWNyZWF0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFuIGV4aXN0aW5nIGZpbGUuIEJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gPGNvZGVwaD50cnVlPC9jb2RlcGg+LjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5DcmVhdGVGb2xkZXJzRW5hYmxlZDwvcHQ+DQotPHBkPjxzeW5waD4gT3B0aW9uczogPGNvZGVwaD50cnVlPC9jb2RlcGg+IDxjb2RlcGg+ZmFsc2U8L2NvZGVwaD48L3N5bnBoPjwvcGQ+DQotPHBkPlVzZSB0aGlzIHBhcmFtZXRlciB0byB0ZWxsIHRoZSBBbnQgdGFzayB0byBjcmVhdGUgYW55IG5lY2Nlc3NhcnkgZm9sZGVycy4NCi1CeSBkZWZhdWx0IHRoaXMgaXMgc2V0IHRvIDxjb2RlcGg+dHJ1ZTwvY29kZXBoPi48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+Q2hlY2tvdXRGaWxlc0VuYWJsZWQ8L3B0Pg0KLTxwZD48c3lucGg+IE9wdGlvbnM6IDxjb2RlcGg+dHJ1ZTwvY29kZXBoPiA8Y29kZXBoPmZhbHNlPC9jb2RlcGg+PC9zeW5waD48L3BkPg0KLTxwZD5Vc2UgdGhpcyBwYXJhbWV0ZXIgdG8gdGVsbCB0aGUgQW50IHRhc2sgdG8gY2hlY2tvdXQgZmlsZXMgZnJvbSBDVlMgd2l0aG91dA0KLXByb21wdGluZyB5b3UuIEJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gPGNvZGVwaD50cnVlPC9jb2RlcGg+LjwvcGQ+DQotPC9wbGVudHJ5PjwvcGFybWw+PC9zZWN0aW9uPg0KLTwvcmVmYm9keT4NCi08L3JlZmVyZW5jZT4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvcmJ1d3NhLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvcmJ1d3NhLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYjBkMTcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3JidXdzYS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJyZWZlcmVuY2UiIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iQm90dG9tLXVwIEF4aXMgV2ViIHNlcnZpY2UgQW50IHRhc2sgcHJvcGVydGllcyBmaWxlIHJlZmVyZW5jZSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgYXhpc19idWphdmEucHJvcGVydGllcyBmaWxlIGlzIHVzZWQgdG8gcGFzcyBkYXRhIHRvIHRoZSBXZWIgc2VydmljZXMgQW50IHRhc2tzIHdoZW4gY3JlYXRpbmcgYW4gQXhpcyBXZWIgc2VydmljZSAuIFRoaXMgZmlsZSBzaG93cyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlRoZSBheGlzX2J1amF2YS5wcm9wZXJ0aWVzIGZpbGUgaXMgdXNlZCB0byBwYXNzIGRhdGEgdG8gdGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3Mgd2hlbiBjcmVhdGluZyBhbiBBeGlzIFdlYiBzZXJ2aWNlIC4gVGhpcyBmaWxlIHNob3dzIHRoZSBhdmFpbGFibGUgb3B0aW9ucy4iIC8+Ci08bWV0YSBjb250ZW50PSJBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIGphdmEgYmVhbiBXZWIgc2VydmljZXMsIEFudCB0YXNrIHJlZmVyZW5jZSwgV2ViIHNlcnZpY2VzLCBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIEFudCB0YXNrIHJlZmVyZW5jZSIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IkF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgamF2YSBiZWFuIFdlYiBzZXJ2aWNlcywgQW50IHRhc2sgcmVmZXJlbmNlLCBXZWIgc2VydmljZXMsIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgQW50IHRhc2sgcmVmZXJlbmNlIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdG9waWNzL3R3YndzYS5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9ImJvdHRvbS11cGF4aXN3ZWJzZXJ2aWNlY29tbWFuZGxpbmVyZWZlcmVuY2UiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5Cb3R0b20tdXAgQXhpcyBXZWIgc2VydmljZSBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJib3R0b20tdXBheGlzd2Vic2VydmljZWNvbW1hbmRsaW5lcmVmZXJlbmNlIj48YSBuYW1lPSJib3R0b20tdXBheGlzd2Vic2VydmljZWNvbW1hbmRsaW5lcmVmZXJlbmNlIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5Cb3R0b20tdXAgQXhpcyBXZWIgc2VydmljZSBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlPC9oMT4KLQotCi0KLTxkaXY+PHA+VGhlIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+YXhpc19idWphdmEucHJvcGVydGllczwva2JkPiBmaWxlIGlzIHVzZWQKLXRvIHBhc3MgZGF0YSB0byB0aGUgV2ViIHNlcnZpY2VzIEFudCB0YXNrcyB3aGVuIGNyZWF0aW5nIGFuIEF4aXMgV2ViIHNlcnZpY2UKLS4gVGhpcyBmaWxlIHNob3dzIHRoZSBhdmFpbGFibGUgb3B0aW9ucy48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxoNCBjbGFzcz0ic2VjdGlvbnRpdGxlIj5QYXJhbWV0ZXJzPC9oND48ZGw+Ci08ZHQgY2xhc3M9ImRsdGVybSI+U2NlbmFyaW9UeXBlPC9kdD4KLQotPGRkPjxzcGFuIGNsYXNzPSJzeW5waCI+IE9wdGlvbnM6IDxzYW1wIGNsYXNzPSJjb2RlcGgiPnNlcnZpY2U8L3NhbXA+IDwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5UaGlzIGlzIGEgcmVxdWlyZWQgZWxlbWVudCB0aGF0IHRlbGxzIHRoZSBBbnQgdGFzayBpZiBpdCBpcyBjcmVhdGluZyBhCi1XZWIgc2VydmljZSBvciBhIFdlYiBzZXJ2aWNlIGNsaWVudC48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5Jbml0aWFsU2VsZWN0aW9uPC9kdD4KLQotPGRkPkVudGVyIHRoZSB3b3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIHRoZSBXU0RMIGZpbGUgb3IgSmF2YSBiZWFuIHdpdGhpbgoteW91ciB3b3Jrc3BhY2UuIEZvciBleGFtcGxlIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+L2R5bmFtaWNXZWJQcm9qZWN0TmFtZS9XZWJDb250ZW50L215U2VydmljZS53c2RsPC9rYmQ+IG9yIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+L2R5bmFtaWNXZWJQcm9qZWN0TmFtZS9zcmMvbXlCZWFuLmphdmE8L2tiZD48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5MaXN0UnVudGltZXM8L2R0PgotCi08ZGQ+PHNwYW4gY2xhc3M9InN5bnBoIj4gT3B0aW9uczogPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4gPHNhbXAgY2xhc3M9ImNvZGVwaCI+ZmFsc2U8L3NhbXA+PC9zcGFuPjwvZGQ+Ci0KLTxkZCBjbGFzcz0iZGRleHBhbmQiPklmIDxzYW1wIGNsYXNzPSJjb2RlcGgiPnRydWU8L3NhbXA+IGlzIHNlbGVjdGVkLCB0aGUgbGlzdCBvZiB2YWxpZCBydW50aW1lIG9wdGlvbnMKLXdpbGwgYmUgcHJvdmlkZWQgd2hlbiB0aGUgQW50IHRhc2sgaXMgcnVuLjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkxpc3RTZXJ2ZXJzPC9kdD4KLQotPGRkPjxzcGFuIGNsYXNzPSJzeW5waCI+IE9wdGlvbnM6IDxzYW1wIGNsYXNzPSJjb2RlcGgiPnRydWU8L3NhbXA+IDxzYW1wIGNsYXNzPSJjb2RlcGgiPmZhbHNlPC9zYW1wPjwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5JZiA8c2FtcCBjbGFzcz0iY29kZXBoIj50cnVlPC9zYW1wPiBpcyBzZWxlY3RlZCwgdGhlIGxpc3Qgb2YgdmFsaWQgc2VydmVyIG9wdGlvbnMKLXdpbGwgYmUgcHJvdmlkZWQgd2hlbiB0aGUgQW50IHRhc2sgaXMgcnVuLjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPlNlcnZpY2UuUnVudGltZUlkPC9kdD4KLQotPGRkPlRoaXMgaXMgdGhlIElEIG9mIHRoZSBXZWIgc2VydmljZSdzIHJ1bnRpbWUuIFRoaXMgcGFyYW1ldGVyIHNob3VsZCBub3QKLWJlIG1vZGlmaWVkLjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPlNlcnZpY2UuU2VydmVySWQ8L2R0PgotCi08ZGQ+T3B0aW9uczo8dWwgY2xhc3M9InNpbXBsZSI+Ci08bGk+PHNhbXAgY2xhc3M9ImNvZGVwaCI+b3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQueDwvc2FtcD4gKHdoZXJlIDxzYW1wIGNsYXNzPSJjb2RlcGgiPng8L3NhbXA+IGlzIDxzYW1wIGNsYXNzPSJjb2RlcGgiPjMyLAotNDAsIDQxLCA1MCw8L3NhbXA+IG9yIDxzYW1wIGNsYXNzPSJjb2RlcGgiPjU1PC9zYW1wPik8L2xpPgotCi08bGk+PHNhbXAgY2xhc3M9ImNvZGVwaCI+b3JnLmVjbGlwc2UuanN0LnNlcnZlci5nZW5lcmljLndlYmxvZ2ljeDwvc2FtcD4gKHdoZXJlIDxzYW1wIGNsYXNzPSJjb2RlcGgiPng8L3NhbXA+IGlzIDxzYW1wIGNsYXNzPSJjb2RlcGgiPjgxPC9zYW1wPiBvciA8c2FtcCBjbGFzcz0iY29kZXBoIj45MDwvc2FtcD4pIDwvbGk+Ci0KLTxsaT48c2FtcCBjbGFzcz0iY29kZXBoIj5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMuamJvc3N4PC9zYW1wPiAod2hlcmUgPHNhbXAgY2xhc3M9ImNvZGVwaCI+eDwvc2FtcD4gaXMgPHNhbXAgY2xhc3M9ImNvZGVwaCI+MzIzPC9zYW1wPiBvciA8c2FtcCBjbGFzcz0iY29kZXBoIj40PC9zYW1wPik8L2xpPgotCi08bGk+PHNhbXAgY2xhc3M9ImNvZGVwaCI+b3JnLmVjbGlwc2UuanN0LnNlcnZlci5nZW5lcmljLmpvbmFzNDwvc2FtcD48L2xpPgotCi08bGk+PHNhbXAgY2xhc3M9ImNvZGVwaCI+b3JnLmVjbGlwc2UuanN0LnNlcnZlci5nZW5lcmljLm9yYWNsZTEwMTM8L3NhbXA+PC9saT4KLQotPGxpPjxzYW1wIGNsYXNzPSJjb2RlcGgiPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXJzLndlYnNwaGVyZS42PC9zYW1wPjwvbGk+Ci0KLTwvdWw+Ci08L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5UaGlzIGlzIHRoZSBJRCBvZiB0aGUgdGFyZ2V0IHNlcnZlci4gRGVsZXRlIG9yIGNvbW1lbnQgb3V0IHRoaXMgcGFyYW1ldGVyCi10byBoYXZlIHRoZSBBbnQgdGFzayBzZWxlY3QgdGhlIGNvcnJlY3QgdmFsdWUgYmFzZWQgb24gdGhlIHNlcnZlciBzZXR0aW5ncwotb2YgdGhlIGR5bmFtaWMgV2ViIHByb2plY3QuPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+U2VydmljZVByb2plY3ROYW1lPC9kdD4KLQotPGRkPkJ5IGRlZmF1bHQgdGhlIHNlcnZpY2UgcHJvamVjdCBpcyBnaXZlbiB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlIG9yIEphdmEKLWJlYW4gZnJvbSB3aGljaCBpdCBpcyBjcmVhdGVkLiBVc2UgdGhpcyBwYXJhbWV0ZXIgdG8gY3JlYXRlIHRoZSBzZXJ2aWNlIHByb2plY3QKLXdpdGggYSBkaWZmZXJlbnQgbmFtZS48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5TZXJ2aWNlRWFyUHJvamVjdE5hbWU8L2R0PgotCi08ZGQ+QnkgZGVmYXVsdCB0aGUgc2VydmljZSBFQVIgcHJvamVjdCBpcyBnaXZlbiB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlCi1vciBKYXZhIGJlYW4gZnJvbSB3aGljaCBpdCBpcyBjcmVhdGVkLiBVc2UgdGhpcyBwYXJhbWV0ZXIgdG8gY3JlYXRlIHRoZSBzZXJ2aWNlCi1FQVIgcHJvamVjdCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+TWFwcGluZ3M8L2R0PgotCi08ZGQ+RW50ZXIgdGhlIHdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgdG8gYSBwcm9wZXJ0eSBmaWxlIGNvbnRhaW5pbmcgbWFwcGluZ3MuPC9kZD4KLQotPGRkIGNsYXNzPSJkZGV4cGFuZCI+TWFwcGluZ3MgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5hbWVzIGluIHRoZSBnZW5lcmF0ZWQKLVdTREwuIFRoZSBjb250ZW50IG9mIHRoZSBwcm9wZXJ0aWVzIGZpbGUgbXVzdCBiZSBvZiB0aGUgZm9ybWF0IHBhY2thZ2U9bmFtZXNwYWNlLgotWW91IHdpbGwgbmVlZCB0byBlc2NhcGUgc29tZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIHByb3BlcnRpZXMgZmlsZXMuIAotRm9yIGV4YW1wbGUgPHNhbXAgY2xhc3M9ImNvZGVwaCI+c29tZVBhY2thZ2U9aHR0cDovL3NvbWVOYW1lc3BhY2U8L3NhbXA+IHNob3VsZCBiZSA8c2FtcCBjbGFzcz0iY29kZXBoIj5zb21lUGFja2FnZT1odHRwXDovL3NvbWVOYW1lc3BhY2U8L3NhbXA+LgotIE90aGVyd2lzZSwgdGhlIGNvbG9uICg6KSB3b3VsZCBiZSB0cmVhdGVkIGFzIGRlbGltaXRlciByZXN1bHRpbmcgaW4gdHJ5aW5nCi10byBtYXAgPHNhbXAgY2xhc3M9ImNvZGVwaCI+c29tZVBhY2thZ2U8L3NhbXA+IHRvIDxzYW1wIGNsYXNzPSJjb2RlcGgiPmh0dHA8L3NhbXA+LjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkphdmFPdXRwdXQ8L2R0PgotCi08ZGQ+RW50ZXIgdGhlIHdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgdG8gYW4gZXhpc3RpbmcgSmF2YSBzb3VyY2UgZm9sZGVyIGZvcgotdGhlIGdlbmVyYXRlZCBKYXZhIGNvZGUuPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+TWV0aG9kczwvZHQ+Ci0KLTxkZD5Vc2UgdGhpcyBwYXJhbWV0ZXIgdG8gbGltaXQgd2hpY2ggbWV0aG9kcyBhcmUgZXhwb3NlZCBpbiB0aGUgc2VydmljZS4KLUl0IG11c3QgYmUgaW4gdGhlIGZvcm0gb2YgYSBzcGFjZSBkZWxpbWl0ZWQgc3RyaW5nIG9mIG1ldGhvZCBzaWduYXR1cmVzLiBGb3IKLWV4YW1wbGUsIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+bWV0aG9kMShwYXJtVHlwZTEpIG1ldGhvZDIocGFybVR5cGUyKTwva2JkPi4gSWYKLW5vIGxpc3QgaXMgcHJvdmlkZWQsIGFsbCBtZXRob2RzIGFyZSBleHBvc2VkLiA8L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5TdHlsZTwvZHQ+Ci0KLTxkZD48c3BhbiBjbGFzcz0ic3lucGgiPiBPcHRpb25zOiA8c2FtcCBjbGFzcz0iY29kZXBoIj5ET0NVTUVOVDwvc2FtcD4gPHNhbXAgY2xhc3M9ImNvZGVwaCI+UlBDPC9zYW1wPiA8c2FtcCBjbGFzcz0iY29kZXBoIj5XUkFQUEVEPC9zYW1wPjwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5TZWxlY3QgdGhlIFNPQVAgbWVzc2FnZSBzdHlsZS4gVGhlIGRlZmF1bHQgaXMgPHNhbXAgY2xhc3M9ImNvZGVwaCI+RE9DVU1FTlQ8L3NhbXA+LjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPlVzZTwvZHQ+Ci0KLTxkZD48c3BhbiBjbGFzcz0ic3lucGgiPiBPcHRpb25zOiA8c2FtcCBjbGFzcz0iY29kZXBoIj5MSVRFUkFMPC9zYW1wPiA8c2FtcCBjbGFzcz0iY29kZXBoIj5FTkNPREVEPC9zYW1wPjwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5TZWxlY3QgaWYgdGhlIFNPQVAgbWVzc2FnZSB3aWxsIGJlIGxpdGVyYWwgb3IgZW5jb2RlZC4gVGhlIGRlZmF1bHQgaXMgPHNhbXAgY2xhc3M9ImNvZGVwaCI+TElURVJBTDwvc2FtcD4uPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+T3ZlcndyaXRlRmlsZXNFbmFibGVkPC9kdD4KLQotPGRkPjxzcGFuIGNsYXNzPSJzeW5waCI+IE9wdGlvbnM6IDxzYW1wIGNsYXNzPSJjb2RlcGgiPnRydWU8L3NhbXA+IDxzYW1wIGNsYXNzPSJjb2RlcGgiPmZhbHNlPC9zYW1wPjwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5Vc2UgdGhpcyBwYXJhbWV0ZXIgdG8gdGVsbCB0aGUgQW50IHRhc2sgdG8gb3ZlcndyaXRlIGFueSBmaWxlIHRoYXQgaXQKLWNyZWF0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFuIGV4aXN0aW5nIGZpbGUuIEJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4uPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+Q3JlYXRlRm9sZGVyc0VuYWJsZWQ8L2R0PgotCi08ZGQ+PHNwYW4gY2xhc3M9InN5bnBoIj4gT3B0aW9uczogPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4gPHNhbXAgY2xhc3M9ImNvZGVwaCI+ZmFsc2U8L3NhbXA+PC9zcGFuPjwvZGQ+Ci0KLTxkZCBjbGFzcz0iZGRleHBhbmQiPlVzZSB0aGlzIHBhcmFtZXRlciB0byB0ZWxsIHRoZSBBbnQgdGFzayB0byBjcmVhdGUgYW55IG5lY2Nlc3NhcnkgZm9sZGVycy4KLUJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4uPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+Q2hlY2tvdXRGaWxlc0VuYWJsZWQ8L2R0PgotCi08ZGQ+PHNwYW4gY2xhc3M9InN5bnBoIj4gT3B0aW9uczogPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4gPHNhbXAgY2xhc3M9ImNvZGVwaCI+ZmFsc2U8L3NhbXA+PC9zcGFuPjwvZGQ+Ci0KLTxkZCBjbGFzcz0iZGRleHBhbmQiPlVzZSB0aGlzIHBhcmFtZXRlciB0byB0ZWxsIHRoZSBBbnQgdGFzayB0byBjaGVja291dCBmaWxlcyBmcm9tIENWUyB3aXRob3V0Ci1wcm9tcHRpbmcgeW91LiBCeSBkZWZhdWx0IHRoaXMgaXMgc2V0IHRvIDxzYW1wIGNsYXNzPSJjb2RlcGgiPnRydWU8L3NhbXA+LjwvZGQ+Ci0KLTwvZGw+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vdG9waWNzL3R3YndzYS5odG1sIiB0aXRsZT0iWW91IGNhbiB1c2UgQW50IHRocm91Z2ggdGhlIEVjbGlwc2Ugd29ya3NwYWNlIHRvIGdlbmVyYXRlIGEgV2ViIHNlcnZpY2UgdXNpbmcgdGhlIEF4aXMgcnVuLXRpbWUgZW52aXJvbm1lbnQuIEJvdGggdG9wLWRvd24gYW5kIGJvdHRvbS11cCBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaXMgc3VwcG9ydGVkIHdpdGggdGhlIEFudCB0YXNrcy4iPkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgdXNpbmcgQW50IHRhc2tzIGluIHRoZSBXb3JrYmVuY2g8L2E+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3J0ZHdzYS5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3J0ZHdzYS5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWFiMDAyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy9ydGR3c2EuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+DQotPCFET0NUWVBFIHJlZmVyZW5jZSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBSZWZlcmVuY2UvL0VOIg0KLSAicmVmZXJlbmNlLmR0ZCI+DQotPHJlZmVyZW5jZSBpZD0idG9wLWRvd25heGlzd2Vic2VydmljZWNvbW1hbmRsaW5lcmVmZXJlbmNlIiB4bWw6bGFuZz0iZW4tdXMiPg0KLTx0aXRsZT5Ub3AtZG93biBBeGlzIFdlYiBzZXJ2aWNlIEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2U8L3RpdGxlPg0KLTxzaG9ydGRlc2M+VGhlIDx1c2VyaW5wdXQ+YXhpc190ZGphdmEucHJvcGVydGllczwvdXNlcmlucHV0PiBmaWxlIGlzIHVzZWQNCi10byBwYXNzIGRhdGEgdG8gdGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3Mgd2hlbiBjcmVhdGluZyBhbiBBeGlzIFdlYiBzZXJ2aWNlDQotLiBUaGlzIGZpbGUgc2hvd3MgdGhlIGF2YWlsYWJsZSBvcHRpb25zLjwvc2hvcnRkZXNjPg0KLTxwcm9sb2c+PG1ldGFkYXRhPg0KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+c2tlbGV0b24gV2ViIHNlcnZpY2VzPGluZGV4dGVybT5BbnQNCi10YXNrIHJlZmVyZW5jZTwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5BeGlzDQotcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+c2tlbGV0b24gV2ViIHNlcnZpY2VzPGluZGV4dGVybT5BbnQgdGFzayByZWZlcmVuY2U8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT4NCi08L2tleXdvcmRzPg0KLTwvbWV0YWRhdGE+PC9wcm9sb2c+DQotPHJlZmJvZHk+DQotPHNlY3Rpb24+PHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPjxwYXJtbD48cGxlbnRyeT4NCi08cHQ+U2NlbmFyaW9UeXBlPC9wdD4NCi08cGQ+PHN5bnBoPiBPcHRpb25zOiA8Y29kZXBoPnNlcnZpY2U8L2NvZGVwaD4gPC9zeW5waD48L3BkPg0KLTxwZD5UaGlzIGlzIGEgcmVxdWlyZWQgZWxlbWVudCB0aGF0IHRlbGxzIHRoZSBBbnQgdGFzayBpZiBpdCBpcyBjcmVhdGluZyBhDQotV2ViIHNlcnZpY2Ugb3IgYSBXZWIgc2VydmljZSBjbGllbnQuPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0PkluaXRpYWxTZWxlY3Rpb248L3B0Pg0KLTxwZD5FbnRlciB0aGUgd29ya3NwYWNlIHJlbGF0aXZlIFVSSSB0byB0aGUgV1NETCBmaWxlIG9yIEphdmEgYmVhbiB3aXRoaW4NCi15b3VyIHdvcmtzcGFjZS4gRm9yIGV4YW1wbGUgPHVzZXJpbnB1dD4vZHluYW1pY1dlYlByb2plY3ROYW1lL1dlYkNvbnRlbnQvbXlTZXJ2aWNlLndzZGw8L3VzZXJpbnB1dD4gb3IgPHVzZXJpbnB1dD4vZHluYW1pY1dlYlByb2plY3ROYW1lL3NyYy9teUJlYW4uamF2YTwvdXNlcmlucHV0DQotPjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5MaXN0UnVudGltZXM8L3B0Pg0KLTxwZD48c3lucGg+IE9wdGlvbnM6IDxjb2RlcGg+dHJ1ZTwvY29kZXBoPiA8Y29kZXBoPmZhbHNlPC9jb2RlcGg+PC9zeW5waD48L3BkPg0KLTxwZD5JZiA8Y29kZXBoPnRydWU8L2NvZGVwaD4gaXMgc2VsZWN0ZWQsIHRoZSBsaXN0IG9mIHZhbGlkIHJ1bnRpbWUgb3B0aW9ucw0KLXdpbGwgYmUgcHJvdmlkZWQgd2hlbiB0aGUgQW50IHRhc2sgaXMgcnVuLjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5MaXN0U2VydmVyczwvcHQ+DQotPHBkPjxzeW5waD4gT3B0aW9uczogPGNvZGVwaD50cnVlPC9jb2RlcGg+IDxjb2RlcGg+ZmFsc2U8L2NvZGVwaD48L3N5bnBoPjwvcGQ+DQotPHBkPklmIDxjb2RlcGg+dHJ1ZTwvY29kZXBoPiBpcyBzZWxlY3RlZCwgdGhlIGxpc3Qgb2YgdmFsaWQgc2VydmVyIG9wdGlvbnMNCi13aWxsIGJlIHByb3ZpZGVkIHdoZW4gdGhlIEFudCB0YXNrIGlzIHJ1bi48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+U2VydmljZS5SdW50aW1lSWQ8L3B0Pg0KLTxwZD5UaGlzIGlzIHRoZSBJRCBvZiB0aGUgV2ViIHNlcnZpY2UncyBydW50aW1lLiBUaGlzIHBhcmFtZXRlciBzaG91bGQgbm90DQotYmUgbW9kaWZpZWQuPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0PlNlcnZpY2UuU2VydmVySWQ8L3B0Pg0KLTxwZD5PcHRpb25zOjxzbD4NCi08c2xpPjxjb2RlcGg+b3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQueDwvY29kZXBoPiAod2hlcmUgPGNvZGVwaD54PC9jb2RlcGg+IGlzIDxjb2RlcGg+MzIsDQotNDAsIDQxLCA1MCw8L2NvZGVwaD4gb3IgPGNvZGVwaD41NTwvY29kZXBoPik8L3NsaT4NCi08c2xpPjxjb2RlcGg+b3JnLmVjbGlwc2UuanN0LnNlcnZlci5nZW5lcmljLndlYmxvZ2ljeDwvY29kZXBoPiAod2hlcmUgPGNvZGVwaD54PC9jb2RlcGg+IGlzIDxjb2RlcGg+ODE8L2NvZGVwaD4gb3IgPGNvZGVwaD45MDwvY29kZXBoPikgPC9zbGk+DQotPHNsaT48Y29kZXBoPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuZ2VuZXJpYy5qYm9zc3g8L2NvZGVwaD4gKHdoZXJlIDxjb2RlcGg+eDwvY29kZXBoPiBpcyA8Y29kZXBoPjMyMzwvY29kZXBoPiBvciA8Y29kZXBoPjQ8L2NvZGVwaD4pPC9zbGk+DQotPHNsaT48Y29kZXBoPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuZ2VuZXJpYy5qb25hczQ8L2NvZGVwaD48L3NsaT4NCi08c2xpPjxjb2RlcGg+b3JnLmVjbGlwc2UuanN0LnNlcnZlci5nZW5lcmljLm9yYWNsZTEwMTM8L2NvZGVwaD48L3NsaT4NCi08c2xpPjxjb2RlcGg+b3JnLmVjbGlwc2UuanN0LnNlcnZlcnMud2Vic3BoZXJlLjY8L2NvZGVwaD48L3NsaT4NCi08L3NsPjwvcGQ+DQotPHBkPlRoaXMgaXMgdGhlIElEIG9mIHRoZSB0YXJnZXQgc2VydmVyLiBEZWxldGUgb3IgY29tbWVudCBvdXQgdGhpcyBwYXJhbWV0ZXINCi10byBoYXZlIHRoZSBBbnQgdGFzayBzZWxlY3QgdGhlIGNvcnJlY3QgdmFsdWUgYmFzZWQgb24gdGhlIHNlcnZlciBzZXR0aW5ncw0KLW9mIHRoZSBkeW5hbWljIFdlYiBwcm9qZWN0LjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5TZXJ2aWNlUHJvamVjdE5hbWU8L3B0Pg0KLTxwZD5CeSBkZWZhdWx0IHRoZSBzZXJ2aWNlIHByb2plY3QgaXMgZ2l2ZW4gdGhlIG5hbWUgb2YgdGhlIFdTREwgZmlsZSBvciBKYXZhDQotYmVhbiBmcm9tIHdoaWNoIGl0IGlzIGNyZWF0ZWQuIFVzZSB0aGlzIHBhcmFtZXRlciB0byBjcmVhdGUgdGhlIHNlcnZpY2UgcHJvamVjdA0KLXdpdGggYSBkaWZmZXJlbnQgbmFtZS48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+U2VydmljZUVhclByb2plY3ROYW1lPC9wdD4NCi08cGQ+QnkgZGVmYXVsdCB0aGUgc2VydmljZSBFQVIgcHJvamVjdCBpcyBnaXZlbiB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlDQotb3IgSmF2YSBiZWFuIGZyb20gd2hpY2ggaXQgaXMgY3JlYXRlZC4gVXNlIHRoaXMgcGFyYW1ldGVyIHRvIGNyZWF0ZSB0aGUgc2VydmljZQ0KLUVBUiBwcm9qZWN0IHdpdGggYSBkaWZmZXJlbnQgbmFtZS48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+TWFwcGluZ3M8L3B0Pg0KLTxwZD5FbnRlciB0aGUgd29ya3NwYWNlIHJlbGF0aXZlIFVSSSB0byBhIHByb3BlcnR5IGZpbGUgY29udGFpbmluZyBtYXBwaW5ncy48L3BkPg0KLTxwZD5NYXBwaW5ncyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYWNrYWdlIG5hbWVzIG9mIHRoZSBnZW5lcmF0ZWQNCi1KYXZhIHRlbXBsYXRlIGNsYXNzZXMuIFRoZSBjb250ZW50IG9mIHRoZSBwcm9wZXJ0aWVzIGZpbGUgbXVzdCBiZSBvZiB0aGUgZm9ybWF0DQotbmFtZXNwYWNlPXBhY2thZ2UuIFlvdSB3aWxsIG5lZWQgdG8gZXNjYXBlIHNvbWUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZQ0KLXByb3BlcnRpZXMgZmlsZXMuICBGb3IgZXhhbXBsZSA8Y29kZXBoPmh0dHA6Ly9zb21lTmFtZXNwYWNlPXNvbWVQYWNrYWdlPC9jb2RlcGg+IHNob3VsZA0KLWJlIDxjb2RlcGg+aHR0cFw6Ly9zb21lTmFtZXNwYWNlPXNvbWVQYWNrYWdlPC9jb2RlcGg+LiAgT3RoZXJ3aXNlLCB0aGUgY29sb24NCi0oOikgd291bGQgYmUgdHJlYXRlZCBhcyBkZWxpbWl0ZXIgcmVzdWx0aW5nIGluIHRyeWluZyB0byBtYXAgPGNvZGVwaD5odHRwPC9jb2RlcGg+IHRvIDxjb2RlcGg+Ly9zb21lTmFtZXNwYWNlPXNvbWVQYWNrYWdlPC9jb2RlcGg+LjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5KYXZhT3V0cHV0PC9wdD4NCi08cGQ+RW50ZXIgdGhlIHdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgdG8gYW4gZXhpc3RpbmcgSmF2YSBzb3VyY2UgZm9sZGVyIGZvcg0KLXRoZSBnZW5lcmF0ZWQgSmF2YSBjb2RlLjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5NZXRob2RzPC9wdD4NCi08cGQ+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIGxpbWl0IHdoaWNoIG1ldGhvZHMgYXJlIGV4cG9zZWQgaW4gdGhlIHNlcnZpY2UuDQotSXQgbXVzdCBiZSBpbiB0aGUgZm9ybSBvZiBhIHNwYWNlIGRlbGltaXRlZCBzdHJpbmcgb2YgbWV0aG9kIHNpZ25hdHVyZXMuIEZvcg0KLWV4YW1wbGUsIDx1c2VyaW5wdXQ+bWV0aG9kMShwYXJtVHlwZTEpIG1ldGhvZDIocGFybVR5cGUyKTwvdXNlcmlucHV0Pi4gSWYNCi1ubyBsaXN0IGlzIHByb3ZpZGVkLCBhbGwgbWV0aG9kcyBhcmUgZXhwb3NlZC4gPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0PlN0eWxlPC9wdD4NCi08cGQ+PHN5bnBoPiBPcHRpb25zOiA8Y29kZXBoPkRPQ1VNRU5UPC9jb2RlcGg+IDxjb2RlcGg+UlBDPC9jb2RlcGg+IDxjb2RlcGg+V1JBUFBFRDwvY29kZXBoPjwvc3lucGg+PC9wZD4NCi08cGQ+U2VsZWN0IHRoZSBTT0FQIG1lc3NhZ2Ugc3R5bGUuIFRoZSBkZWZhdWx0IGlzIDxjb2RlcGg+RE9DVU1FTlQ8L2NvZGVwaD4uPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0PlVzZTwvcHQ+DQotPHBkPjxzeW5waD4gT3B0aW9uczogPGNvZGVwaD5MSVRFUkFMPC9jb2RlcGg+IDxjb2RlcGg+RU5DT0RFRDwvY29kZXBoPjwvc3lucGg+PC9wZD4NCi08cGQ+U2VsZWN0IGlmIHRoZSBTT0FQIG1lc3NhZ2Ugd2lsbCBiZSBsaXRlcmFsIG9yIGVuY29kZWQuIFRoZSBkZWZhdWx0IGlzIDxjb2RlcGg+TElURVJBTDwvY29kZXBoPi48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+T3ZlcndyaXRlRmlsZXNFbmFibGVkPC9wdD4NCi08cGQ+PHN5bnBoPiBPcHRpb25zOiA8Y29kZXBoPnRydWU8L2NvZGVwaD4gPGNvZGVwaD5mYWxzZTwvY29kZXBoPjwvc3lucGg+PC9wZD4NCi08cGQ+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIHRlbGwgdGhlIEFudCB0YXNrIHRvIG92ZXJ3cml0ZSBhbnkgZmlsZSB0aGF0IGl0DQotY3JlYXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgZmlsZS4gQnkgZGVmYXVsdCB0aGlzIGlzIHNldCB0byA8Y29kZXBoPnRydWU8L2NvZGVwaD4uPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0PkNyZWF0ZUZvbGRlcnNFbmFibGVkPC9wdD4NCi08cGQ+PHN5bnBoPiBPcHRpb25zOiA8Y29kZXBoPnRydWU8L2NvZGVwaD4gPGNvZGVwaD5mYWxzZTwvY29kZXBoPjwvc3lucGg+PC9wZD4NCi08cGQ+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIHRlbGwgdGhlIEFudCB0YXNrIHRvIGNyZWF0ZSBhbnkgbmVjZXNzYXJ5IGZvbGRlcnMuDQotQnkgZGVmYXVsdCB0aGlzIGlzIHNldCB0byA8Y29kZXBoPnRydWU8L2NvZGVwaD4uPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0PkNoZWNrb3V0RmlsZXNFbmFibGVkPC9wdD4NCi08cGQ+PHN5bnBoPiBPcHRpb25zOiA8Y29kZXBoPnRydWU8L2NvZGVwaD4gPGNvZGVwaD5mYWxzZTwvY29kZXBoPjwvc3lucGg+PC9wZD4NCi08cGQ+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIHRlbGwgdGhlIEFudCB0YXNrIHRvIGNoZWNrb3V0IGZpbGVzIGZyb20gQ1ZTIHdpdGhvdXQNCi1wcm9tcHRpbmcgeW91LiBCeSBkZWZhdWx0IHRoaXMgaXMgc2V0IHRvIDxjb2RlcGg+dHJ1ZTwvY29kZXBoPi48L3BkPg0KLTwvcGxlbnRyeT48L3Bhcm1sPjwvc2VjdGlvbj4NCi08L3JlZmJvZHk+DQotPC9yZWZlcmVuY2U+DQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3J0ZHdzYS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3J0ZHdzYS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmJmMTA5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy9ydGR3c2EuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0icmVmZXJlbmNlIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IlRvcC1kb3duIEF4aXMgV2ViIHNlcnZpY2UgQW50IHRhc2sgcHJvcGVydGllcyBmaWxlIHJlZmVyZW5jZSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgYXhpc190ZGphdmEucHJvcGVydGllcyBmaWxlIGlzIHVzZWQgdG8gcGFzcyBkYXRhIHRvIHRoZSBXZWIgc2VydmljZXMgQW50IHRhc2tzIHdoZW4gY3JlYXRpbmcgYW4gQXhpcyBXZWIgc2VydmljZSAuIFRoaXMgZmlsZSBzaG93cyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlRoZSBheGlzX3RkamF2YS5wcm9wZXJ0aWVzIGZpbGUgaXMgdXNlZCB0byBwYXNzIGRhdGEgdG8gdGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3Mgd2hlbiBjcmVhdGluZyBhbiBBeGlzIFdlYiBzZXJ2aWNlIC4gVGhpcyBmaWxlIHNob3dzIHRoZSBhdmFpbGFibGUgb3B0aW9ucy4iIC8+Ci08bWV0YSBjb250ZW50PSJBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIHNrZWxldG9uIFdlYiBzZXJ2aWNlcywgQW50IHRhc2sgcmVmZXJlbmNlLCBXZWIgc2VydmljZXMsIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgQW50IHRhc2sgcmVmZXJlbmNlIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iQXhpcyBydW50aW1lIGVudmlyb25tZW50LCBza2VsZXRvbiBXZWIgc2VydmljZXMsIEFudCB0YXNrIHJlZmVyZW5jZSwgV2ViIHNlcnZpY2VzLCBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIEFudCB0YXNrIHJlZmVyZW5jZSIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3RvcGljcy90d2J3c2EuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0b3AtZG93bmF4aXN3ZWJzZXJ2aWNlY29tbWFuZGxpbmVyZWZlcmVuY2UiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5Ub3AtZG93biBBeGlzIFdlYiBzZXJ2aWNlIEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2U8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InRvcC1kb3duYXhpc3dlYnNlcnZpY2Vjb21tYW5kbGluZXJlZmVyZW5jZSI+PGEgbmFtZT0idG9wLWRvd25heGlzd2Vic2VydmljZWNvbW1hbmRsaW5lcmVmZXJlbmNlIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5Ub3AtZG93biBBeGlzIFdlYiBzZXJ2aWNlIEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2U8L2gxPgotCi0KLQotPGRpdj48cD5UaGUgPGtiZCBjbGFzcz0idXNlcmlucHV0Ij5heGlzX3RkamF2YS5wcm9wZXJ0aWVzPC9rYmQ+IGZpbGUgaXMgdXNlZAotdG8gcGFzcyBkYXRhIHRvIHRoZSBXZWIgc2VydmljZXMgQW50IHRhc2tzIHdoZW4gY3JlYXRpbmcgYW4gQXhpcyBXZWIgc2VydmljZQotLiBUaGlzIGZpbGUgc2hvd3MgdGhlIGF2YWlsYWJsZSBvcHRpb25zLjwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGg0IGNsYXNzPSJzZWN0aW9udGl0bGUiPlBhcmFtZXRlcnM8L2g0PjxkbD4KLTxkdCBjbGFzcz0iZGx0ZXJtIj5TY2VuYXJpb1R5cGU8L2R0PgotCi08ZGQ+PHNwYW4gY2xhc3M9InN5bnBoIj4gT3B0aW9uczogPHNhbXAgY2xhc3M9ImNvZGVwaCI+c2VydmljZTwvc2FtcD4gPC9zcGFuPjwvZGQ+Ci0KLTxkZCBjbGFzcz0iZGRleHBhbmQiPlRoaXMgaXMgYSByZXF1aXJlZCBlbGVtZW50IHRoYXQgdGVsbHMgdGhlIEFudCB0YXNrIGlmIGl0IGlzIGNyZWF0aW5nIGEKLVdlYiBzZXJ2aWNlIG9yIGEgV2ViIHNlcnZpY2UgY2xpZW50LjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkluaXRpYWxTZWxlY3Rpb248L2R0PgotCi08ZGQ+RW50ZXIgdGhlIHdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgdG8gdGhlIFdTREwgZmlsZSBvciBKYXZhIGJlYW4gd2l0aGluCi15b3VyIHdvcmtzcGFjZS4gRm9yIGV4YW1wbGUgPGtiZCBjbGFzcz0idXNlcmlucHV0Ij4vZHluYW1pY1dlYlByb2plY3ROYW1lL1dlYkNvbnRlbnQvbXlTZXJ2aWNlLndzZGw8L2tiZD4gb3IgPGtiZCBjbGFzcz0idXNlcmlucHV0Ij4vZHluYW1pY1dlYlByb2plY3ROYW1lL3NyYy9teUJlYW4uamF2YTwva2JkPjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkxpc3RSdW50aW1lczwvZHQ+Ci0KLTxkZD48c3BhbiBjbGFzcz0ic3lucGgiPiBPcHRpb25zOiA8c2FtcCBjbGFzcz0iY29kZXBoIj50cnVlPC9zYW1wPiA8c2FtcCBjbGFzcz0iY29kZXBoIj5mYWxzZTwvc2FtcD48L3NwYW4+PC9kZD4KLQotPGRkIGNsYXNzPSJkZGV4cGFuZCI+SWYgPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4gaXMgc2VsZWN0ZWQsIHRoZSBsaXN0IG9mIHZhbGlkIHJ1bnRpbWUgb3B0aW9ucwotd2lsbCBiZSBwcm92aWRlZCB3aGVuIHRoZSBBbnQgdGFzayBpcyBydW4uPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+TGlzdFNlcnZlcnM8L2R0PgotCi08ZGQ+PHNwYW4gY2xhc3M9InN5bnBoIj4gT3B0aW9uczogPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4gPHNhbXAgY2xhc3M9ImNvZGVwaCI+ZmFsc2U8L3NhbXA+PC9zcGFuPjwvZGQ+Ci0KLTxkZCBjbGFzcz0iZGRleHBhbmQiPklmIDxzYW1wIGNsYXNzPSJjb2RlcGgiPnRydWU8L3NhbXA+IGlzIHNlbGVjdGVkLCB0aGUgbGlzdCBvZiB2YWxpZCBzZXJ2ZXIgb3B0aW9ucwotd2lsbCBiZSBwcm92aWRlZCB3aGVuIHRoZSBBbnQgdGFzayBpcyBydW4uPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+U2VydmljZS5SdW50aW1lSWQ8L2R0PgotCi08ZGQ+VGhpcyBpcyB0aGUgSUQgb2YgdGhlIFdlYiBzZXJ2aWNlJ3MgcnVudGltZS4gVGhpcyBwYXJhbWV0ZXIgc2hvdWxkIG5vdAotYmUgbW9kaWZpZWQuPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+U2VydmljZS5TZXJ2ZXJJZDwvZHQ+Ci0KLTxkZD5PcHRpb25zOjx1bCBjbGFzcz0ic2ltcGxlIj4KLTxsaT48c2FtcCBjbGFzcz0iY29kZXBoIj5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC54PC9zYW1wPiAod2hlcmUgPHNhbXAgY2xhc3M9ImNvZGVwaCI+eDwvc2FtcD4gaXMgPHNhbXAgY2xhc3M9ImNvZGVwaCI+MzIsCi00MCwgNDEsIDUwLDwvc2FtcD4gb3IgPHNhbXAgY2xhc3M9ImNvZGVwaCI+NTU8L3NhbXA+KTwvbGk+Ci0KLTxsaT48c2FtcCBjbGFzcz0iY29kZXBoIj5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMud2VibG9naWN4PC9zYW1wPiAod2hlcmUgPHNhbXAgY2xhc3M9ImNvZGVwaCI+eDwvc2FtcD4gaXMgPHNhbXAgY2xhc3M9ImNvZGVwaCI+ODE8L3NhbXA+IG9yIDxzYW1wIGNsYXNzPSJjb2RlcGgiPjkwPC9zYW1wPikgPC9saT4KLQotPGxpPjxzYW1wIGNsYXNzPSJjb2RlcGgiPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuZ2VuZXJpYy5qYm9zc3g8L3NhbXA+ICh3aGVyZSA8c2FtcCBjbGFzcz0iY29kZXBoIj54PC9zYW1wPiBpcyA8c2FtcCBjbGFzcz0iY29kZXBoIj4zMjM8L3NhbXA+IG9yIDxzYW1wIGNsYXNzPSJjb2RlcGgiPjQ8L3NhbXA+KTwvbGk+Ci0KLTxsaT48c2FtcCBjbGFzcz0iY29kZXBoIj5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMuam9uYXM0PC9zYW1wPjwvbGk+Ci0KLTxsaT48c2FtcCBjbGFzcz0iY29kZXBoIj5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMub3JhY2xlMTAxMzwvc2FtcD48L2xpPgotCi08bGk+PHNhbXAgY2xhc3M9ImNvZGVwaCI+b3JnLmVjbGlwc2UuanN0LnNlcnZlcnMud2Vic3BoZXJlLjY8L3NhbXA+PC9saT4KLQotPC91bD4KLTwvZGQ+Ci0KLTxkZCBjbGFzcz0iZGRleHBhbmQiPlRoaXMgaXMgdGhlIElEIG9mIHRoZSB0YXJnZXQgc2VydmVyLiBEZWxldGUgb3IgY29tbWVudCBvdXQgdGhpcyBwYXJhbWV0ZXIKLXRvIGhhdmUgdGhlIEFudCB0YXNrIHNlbGVjdCB0aGUgY29ycmVjdCB2YWx1ZSBiYXNlZCBvbiB0aGUgc2VydmVyIHNldHRpbmdzCi1vZiB0aGUgZHluYW1pYyBXZWIgcHJvamVjdC48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5TZXJ2aWNlUHJvamVjdE5hbWU8L2R0PgotCi08ZGQ+QnkgZGVmYXVsdCB0aGUgc2VydmljZSBwcm9qZWN0IGlzIGdpdmVuIHRoZSBuYW1lIG9mIHRoZSBXU0RMIGZpbGUgb3IgSmF2YQotYmVhbiBmcm9tIHdoaWNoIGl0IGlzIGNyZWF0ZWQuIFVzZSB0aGlzIHBhcmFtZXRlciB0byBjcmVhdGUgdGhlIHNlcnZpY2UgcHJvamVjdAotd2l0aCBhIGRpZmZlcmVudCBuYW1lLjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPlNlcnZpY2VFYXJQcm9qZWN0TmFtZTwvZHQ+Ci0KLTxkZD5CeSBkZWZhdWx0IHRoZSBzZXJ2aWNlIEVBUiBwcm9qZWN0IGlzIGdpdmVuIHRoZSBuYW1lIG9mIHRoZSBXU0RMIGZpbGUKLW9yIEphdmEgYmVhbiBmcm9tIHdoaWNoIGl0IGlzIGNyZWF0ZWQuIFVzZSB0aGlzIHBhcmFtZXRlciB0byBjcmVhdGUgdGhlIHNlcnZpY2UKLUVBUiBwcm9qZWN0IHdpdGggYSBkaWZmZXJlbnQgbmFtZS48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5NYXBwaW5nczwvZHQ+Ci0KLTxkZD5FbnRlciB0aGUgd29ya3NwYWNlIHJlbGF0aXZlIFVSSSB0byBhIHByb3BlcnR5IGZpbGUgY29udGFpbmluZyBtYXBwaW5ncy48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5NYXBwaW5ncyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYWNrYWdlIG5hbWVzIG9mIHRoZSBnZW5lcmF0ZWQKLUphdmEgdGVtcGxhdGUgY2xhc3Nlcy4gVGhlIGNvbnRlbnQgb2YgdGhlIHByb3BlcnRpZXMgZmlsZSBtdXN0IGJlIG9mIHRoZSBmb3JtYXQKLW5hbWVzcGFjZT1wYWNrYWdlLiBZb3Ugd2lsbCBuZWVkIHRvIGVzY2FwZSBzb21lIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUKLXByb3BlcnRpZXMgZmlsZXMuICBGb3IgZXhhbXBsZSA8c2FtcCBjbGFzcz0iY29kZXBoIj5odHRwOi8vc29tZU5hbWVzcGFjZT1zb21lUGFja2FnZTwvc2FtcD4gc2hvdWxkCi1iZSA8c2FtcCBjbGFzcz0iY29kZXBoIj5odHRwXDovL3NvbWVOYW1lc3BhY2U9c29tZVBhY2thZ2U8L3NhbXA+LiAgT3RoZXJ3aXNlLCB0aGUgY29sb24KLSg6KSB3b3VsZCBiZSB0cmVhdGVkIGFzIGRlbGltaXRlciByZXN1bHRpbmcgaW4gdHJ5aW5nIHRvIG1hcCA8c2FtcCBjbGFzcz0iY29kZXBoIj5odHRwPC9zYW1wPiB0byA8c2FtcCBjbGFzcz0iY29kZXBoIj4vL3NvbWVOYW1lc3BhY2U9c29tZVBhY2thZ2U8L3NhbXA+LjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkphdmFPdXRwdXQ8L2R0PgotCi08ZGQ+RW50ZXIgdGhlIHdvcmtzcGFjZSByZWxhdGl2ZSBVUkkgdG8gYW4gZXhpc3RpbmcgSmF2YSBzb3VyY2UgZm9sZGVyIGZvcgotdGhlIGdlbmVyYXRlZCBKYXZhIGNvZGUuPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+TWV0aG9kczwvZHQ+Ci0KLTxkZD5Vc2UgdGhpcyBwYXJhbWV0ZXIgdG8gbGltaXQgd2hpY2ggbWV0aG9kcyBhcmUgZXhwb3NlZCBpbiB0aGUgc2VydmljZS4KLUl0IG11c3QgYmUgaW4gdGhlIGZvcm0gb2YgYSBzcGFjZSBkZWxpbWl0ZWQgc3RyaW5nIG9mIG1ldGhvZCBzaWduYXR1cmVzLiBGb3IKLWV4YW1wbGUsIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+bWV0aG9kMShwYXJtVHlwZTEpIG1ldGhvZDIocGFybVR5cGUyKTwva2JkPi4gSWYKLW5vIGxpc3QgaXMgcHJvdmlkZWQsIGFsbCBtZXRob2RzIGFyZSBleHBvc2VkLiA8L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5TdHlsZTwvZHQ+Ci0KLTxkZD48c3BhbiBjbGFzcz0ic3lucGgiPiBPcHRpb25zOiA8c2FtcCBjbGFzcz0iY29kZXBoIj5ET0NVTUVOVDwvc2FtcD4gPHNhbXAgY2xhc3M9ImNvZGVwaCI+UlBDPC9zYW1wPiA8c2FtcCBjbGFzcz0iY29kZXBoIj5XUkFQUEVEPC9zYW1wPjwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5TZWxlY3QgdGhlIFNPQVAgbWVzc2FnZSBzdHlsZS4gVGhlIGRlZmF1bHQgaXMgPHNhbXAgY2xhc3M9ImNvZGVwaCI+RE9DVU1FTlQ8L3NhbXA+LjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPlVzZTwvZHQ+Ci0KLTxkZD48c3BhbiBjbGFzcz0ic3lucGgiPiBPcHRpb25zOiA8c2FtcCBjbGFzcz0iY29kZXBoIj5MSVRFUkFMPC9zYW1wPiA8c2FtcCBjbGFzcz0iY29kZXBoIj5FTkNPREVEPC9zYW1wPjwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5TZWxlY3QgaWYgdGhlIFNPQVAgbWVzc2FnZSB3aWxsIGJlIGxpdGVyYWwgb3IgZW5jb2RlZC4gVGhlIGRlZmF1bHQgaXMgPHNhbXAgY2xhc3M9ImNvZGVwaCI+TElURVJBTDwvc2FtcD4uPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+T3ZlcndyaXRlRmlsZXNFbmFibGVkPC9kdD4KLQotPGRkPjxzcGFuIGNsYXNzPSJzeW5waCI+IE9wdGlvbnM6IDxzYW1wIGNsYXNzPSJjb2RlcGgiPnRydWU8L3NhbXA+IDxzYW1wIGNsYXNzPSJjb2RlcGgiPmZhbHNlPC9zYW1wPjwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5Vc2UgdGhpcyBwYXJhbWV0ZXIgdG8gdGVsbCB0aGUgQW50IHRhc2sgdG8gb3ZlcndyaXRlIGFueSBmaWxlIHRoYXQgaXQKLWNyZWF0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFuIGV4aXN0aW5nIGZpbGUuIEJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4uPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+Q3JlYXRlRm9sZGVyc0VuYWJsZWQ8L2R0PgotCi08ZGQ+PHNwYW4gY2xhc3M9InN5bnBoIj4gT3B0aW9uczogPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4gPHNhbXAgY2xhc3M9ImNvZGVwaCI+ZmFsc2U8L3NhbXA+PC9zcGFuPjwvZGQ+Ci0KLTxkZCBjbGFzcz0iZGRleHBhbmQiPlVzZSB0aGlzIHBhcmFtZXRlciB0byB0ZWxsIHRoZSBBbnQgdGFzayB0byBjcmVhdGUgYW55IG5lY2Vzc2FyeSBmb2xkZXJzLgotQnkgZGVmYXVsdCB0aGlzIGlzIHNldCB0byA8c2FtcCBjbGFzcz0iY29kZXBoIj50cnVlPC9zYW1wPi48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5DaGVja291dEZpbGVzRW5hYmxlZDwvZHQ+Ci0KLTxkZD48c3BhbiBjbGFzcz0ic3lucGgiPiBPcHRpb25zOiA8c2FtcCBjbGFzcz0iY29kZXBoIj50cnVlPC9zYW1wPiA8c2FtcCBjbGFzcz0iY29kZXBoIj5mYWxzZTwvc2FtcD48L3NwYW4+PC9kZD4KLQotPGRkIGNsYXNzPSJkZGV4cGFuZCI+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIHRlbGwgdGhlIEFudCB0YXNrIHRvIGNoZWNrb3V0IGZpbGVzIGZyb20gQ1ZTIHdpdGhvdXQKLXByb21wdGluZyB5b3UuIEJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4uPC9kZD4KLQotPC9kbD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90b3BpY3MvdHdid3NhLmh0bWwiIHRpdGxlPSJZb3UgY2FuIHVzZSBBbnQgdGhyb3VnaCB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UgdG8gZ2VuZXJhdGUgYSBXZWIgc2VydmljZSB1c2luZyB0aGUgQXhpcyBydW4tdGltZSBlbnZpcm9ubWVudC4gQm90aCB0b3AtZG93biBhbmQgYm90dG9tLXVwIFdlYiBzZXJ2aWNlcyBkZXZlbG9wbWVudCBpcyBzdXBwb3J0ZWQgd2l0aCB0aGUgQW50IHRhc2tzLiI+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSB1c2luZyBBbnQgdGFza3MgaW4gdGhlIFdvcmtiZW5jaDwvYT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvcndzY2xpZW50YS5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3J3c2NsaWVudGEuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA1YzIyYi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvcndzY2xpZW50YS5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPg0KLTwhRE9DVFlQRSByZWZlcmVuY2UgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgUmVmZXJlbmNlLy9FTiINCi0gInJlZmVyZW5jZS5kdGQiPg0KLTxyZWZlcmVuY2UgaWQ9ImF4aXN3ZWJzZXJ2aWNlY2xpZW50Y29tbWFuZGxpbmVyZWZlcmVuY2UiIHhtbDpsYW5nPSJlbi11cyI+DQotPHRpdGxlPkF4aXMgV2ViIHNlcnZpY2UgY2xpZW50IEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2U8L3RpdGxlPg0KLTxzaG9ydGRlc2M+VGhlIDx1c2VyaW5wdXQ+YXhpc19jbGllbnQucHJvcGVydGllczwvdXNlcmlucHV0PiBmaWxlIGlzIHVzZWQNCi10byBwYXNzIGRhdGEgdG8gdGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3Mgd2hlbiBjcmVhdGluZyBhbiBBeGlzIFdlYiBzZXJ2aWNlDQotY2xpZW50LiBUaGlzIGZpbGUgc2hvd3MgdGhlIGF2YWlsYWJsZSBvcHRpb25zLjwvc2hvcnRkZXNjPg0KLTxwcm9sb2c+PG1ldGFkYXRhPg0KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+V2ViIHNlcnZpY2VzIGNsaWVudDxpbmRleHRlcm0+QW50DQotdGFzayByZWZlcmVuY2U8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT48aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+QXhpcw0KLXJ1bnRpbWUgZW52aXJvbm1lbnQ8aW5kZXh0ZXJtPldlYiBzZXJ2aWNlcyBjbGllbnQ8aW5kZXh0ZXJtPkFudCB0YXNrIHJlZmVyZW5jZTwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPg0KLTwva2V5d29yZHM+DQotPC9tZXRhZGF0YT48L3Byb2xvZz4NCi08cmVmYm9keT4NCi08c2VjdGlvbj48dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+PHBhcm1sPjxwbGVudHJ5Pg0KLTxwdD5TY2VuYXJpb1R5cGU8L3B0Pg0KLTxwZD48c3lucGg+IE9wdGlvbnM6IDxjb2RlcGg+Y2xpZW50PC9jb2RlcGg+PC9zeW5waD48L3BkPg0KLTxwZD5UaGlzIGlzIGEgcmVxdWlyZWQgZWxlbWVudCB0aGF0IHRlbGxzIHRoZSBBbnQgdGFzayBpZiBpdCBpcyBjcmVhdGluZyBhDQotV2ViIHNlcnZpY2Ugb3IgYSBXZWIgc2VydmljZSBjbGllbnQuPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0PkluaXRpYWxTZWxlY3Rpb248L3B0Pg0KLTxwZD5FbnRlciB0aGUgd29ya3NwYWNlIHJlbGF0aXZlIFVSSSB0byB0aGUgV1NETCBmaWxlIG9yIEphdmEgYmVhbiB3aXRoaW4NCi15b3VyIHdvcmtzcGFjZS4gRm9yIGV4YW1wbGUgPHVzZXJpbnB1dD4vZHluYW1pY1dlYlByb2plY3ROYW1lL1dlYkNvbnRlbnQvbXlTZXJ2aWNlLndzZGw8L3VzZXJpbnB1dD4gb3IgPHVzZXJpbnB1dD4vZHluYW1pY1dlYlByb2plY3ROYW1lL3NyYy9teUJlYW4uamF2YTwvdXNlcmlucHV0DQotPjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5MaXN0UnVudGltZXM8L3B0Pg0KLTxwZD48c3lucGg+IE9wdGlvbnM6IDxjb2RlcGg+dHJ1ZTwvY29kZXBoPiA8Y29kZXBoPmZhbHNlPC9jb2RlcGg+PC9zeW5waD48L3BkPg0KLTxwZD5JZiA8Y29kZXBoPnRydWU8L2NvZGVwaD4gaXMgc2VsZWN0ZWQsIHRoZSBsaXN0IG9mIHZhbGlkIHJ1bnRpbWUgb3B0aW9ucw0KLXdpbGwgYmUgcHJvdmlkZWQgd2hlbiB0aGUgQW50IHRhc2sgaXMgcnVuLjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5MaXN0U2VydmVyczwvcHQ+DQotPHBkPjxzeW5waD4gT3B0aW9uczogPGNvZGVwaD50cnVlPC9jb2RlcGg+IDxjb2RlcGg+ZmFsc2U8L2NvZGVwaD48L3N5bnBoPjwvcGQ+DQotPHBkPklmIDxjb2RlcGg+dHJ1ZTwvY29kZXBoPiBpcyBzZWxlY3RlZCwgdGhlIGxpc3Qgb2YgdmFsaWQgc2VydmVyIG9wdGlvbnMNCi13aWxsIGJlIHByb3ZpZGVkIHdoZW4gdGhlIEFudCB0YXNrIGlzIHJ1bi48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+Q2xpZW50LlJ1bnRpbWVJZDwvcHQ+DQotPHBkPlRoaXMgaXMgdGhlIElEIG9mIHRoZSBXZWIgc2VydmljZSdzIHJ1bnRpbWUuIFRoaXMgcGFyYW1ldGVyIHNob3VsZCBub3QNCi1iZSBtb2RpZmllZC48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+Q2xpZW50LlNlcnZlcklkPC9wdD4NCi08cGQ+T3B0aW9uczo8c2w+DQotPHNsaT48Y29kZXBoPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0Lng8L2NvZGVwaD4gKHdoZXJlIDxjb2RlcGg+eDwvY29kZXBoPiBpcyA8Y29kZXBoPjMyLA0KLTQwLCA0MSwgNTAsPC9jb2RlcGg+IG9yIDxjb2RlcGg+NTU8L2NvZGVwaD4pPC9zbGk+DQotPHNsaT48Y29kZXBoPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuZ2VuZXJpYy53ZWJsb2dpY3g8L2NvZGVwaD4gKHdoZXJlIDxjb2RlcGg+eDwvY29kZXBoPiBpcyA8Y29kZXBoPjgxPC9jb2RlcGg+IG9yIDxjb2RlcGg+OTA8L2NvZGVwaD4pIDwvc2xpPg0KLTxzbGk+PGNvZGVwaD5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMuamJvc3N4PC9jb2RlcGg+ICh3aGVyZSA8Y29kZXBoPng8L2NvZGVwaD4gaXMgPGNvZGVwaD4zMjM8L2NvZGVwaD4gb3IgPGNvZGVwaD40PC9jb2RlcGg+KTwvc2xpPg0KLTxzbGk+PGNvZGVwaD5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMuam9uYXM0PC9jb2RlcGg+PC9zbGk+DQotPHNsaT48Y29kZXBoPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuZ2VuZXJpYy5vcmFjbGUxMDEzPC9jb2RlcGg+PC9zbGk+DQotPHNsaT48Y29kZXBoPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXJzLndlYnNwaGVyZS42PC9jb2RlcGg+PC9zbGk+DQotPC9zbD48L3BkPg0KLTxwZD5UaGlzIGlzIHRoZSBJRCBvZiB0aGUgdGFyZ2V0IHNlcnZlci4gRGVsZXRlIG9yIGNvbW1lbnQgb3V0IHRoaXMgcGFyYW1ldGVyDQotdG8gaGF2ZSB0aGUgQW50IHRhc2sgc2VsZWN0IHRoZSBjb3JyZWN0IHZhbHVlIGJhc2VkIG9uIHRoZSBzZXJ2ZXIgc2V0dGluZ3MNCi1vZiB0aGUgZHluYW1pYyBXZWIgcHJvamVjdC48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+Q2xpZW50UHJvamVjdE5hbWU8L3B0Pg0KLTxwZD5CeSBkZWZhdWx0IHRoZSBjbGllbnQgcHJvamVjdCBpcyBnaXZlbiB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlIG9yIEphdmENCi1iZWFuIGZyb20gd2hpY2ggaXQgaXMgY3JlYXRlZC4gVXNlIHRoaXMgcGFyYW1ldGVyIHRvIGNyZWF0ZSB0aGUgc2VydmljZSBwcm9qZWN0DQotd2l0aCBhIGRpZmZlcmVudCBuYW1lLjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5DbGllbnRFYXJQcm9qZWN0TmFtZTwvcHQ+DQotPHBkPkJ5IGRlZmF1bHQgdGhlIGNsaWVudCBFQVIgcHJvamVjdCBpcyBnaXZlbiB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlIG9yDQotSmF2YSBiZWFuIGZyb20gd2hpY2ggaXQgaXMgY3JlYXRlZC4gVXNlIHRoaXMgcGFyYW1ldGVyIHRvIGNyZWF0ZSB0aGUgc2VydmljZQ0KLUVBUiBwcm9qZWN0IHdpdGggYSBkaWZmZXJlbnQgbmFtZS48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+Q2xpZW50Q29tcG9uZW50VHlwZTwvcHQ+DQotPHBkPjxwPk9wdGlvbnM6IDx1c2VyaW5wdXQ+anN0LndlYjwvdXNlcmlucHV0PiA8dXNlcmlucHV0PmpzdC5qYXZhPC91c2VyaW5wdXQ+PC9wPjxwPlVzZQ0KLXRoaXMgcGFyYW1ldGVyIHRvIHNlbGVjdCB0aGUgdHlwZSBvZiBjbGllbnQgcHJvamVjdC4gVGhlIG9ubHkgdmFsaWQgY2xpZW50DQotcHJvamVjdCB0eXBlIGZvciBBeGlzIGNsaWVudHMgaXMgPHVzZXJpbnB1dD5qc3Qud2ViPC91c2VyaW5wdXQ+LjwvcD48L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+Q3VzdG9taXplQ2xpZW50TWFwcGluZ3M8L3B0Pg0KLTxwZD48cD5PcHRpb25zOiA8dXNlcmlucHV0PnRydWU8L3VzZXJpbnB1dD4gPHVzZXJpbnB1dD5mYWxzZTwvdXNlcmlucHV0PjwvcD48cD5NYXBwaW5ncw0KLWFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBuYW1lcyBpbiB0aGUgZ2VuZXJhdGVkIFdTREwuIFRoZQ0KLWNvbnRlbnQgb2YgdGhlIHByb3BlcnRpZXMgZmlsZSBtdXN0IGJlIG9mIHRoZSBmb3JtYXQgbmFtZXNwYWNlPXBhY2thZ2UuIFlvdQ0KLXdpbGwgbmVlZCB0byBlc2NhcGUgc29tZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIHByb3BlcnRpZXMgZmlsZXMuICBGb3INCi1leGFtcGxlIDxjb2RlcGg+aHR0cDovL3NvbWVOYW1lc3BhY2U9c29tZVBhY2thZ2U8L2NvZGVwaD4gc2hvdWxkIGJlIDxjb2RlcGg+aHR0cFw6Ly9zb21lTmFtZXNwYWNlPXNvbWVQYWNrYWdlPC9jb2RlcGg+Lg0KLSBPdGhlcndpc2UsIHRoZSBjb2xvbiAoOikgd291bGQgYmUgdHJlYXRlZCBhcyBkZWxpbWl0ZXIgcmVzdWx0aW5nIGluIHRyeWluZw0KLXRvIG1hcCA8Y29kZXBoPmh0dHA8L2NvZGVwaD4gdG8gPGNvZGVwaD4vL3NvbWVOYW1lc3BhY2U9c29tZVBhY2thZ2U8L2NvZGVwaD4uPC9wPjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5NYXBwaW5nczwvcHQ+DQotPHBkPkVudGVyIHRoZSB3b3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIGEgcHJvcGVydHkgZmlsZSBjb250YWluaW5nIG1hcHBpbmdzLiA8L3BkPg0KLTwvcGxlbnRyeT48cGxlbnRyeT4NCi08cHQ+T3ZlcndyaXRlRmlsZXNFbmFibGVkPC9wdD4NCi08cGQ+PHN5bnBoPiBPcHRpb25zOiA8Y29kZXBoPnRydWU8L2NvZGVwaD4gPGNvZGVwaD5mYWxzZTwvY29kZXBoPjwvc3lucGg+PC9wZD4NCi08cGQ+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIHRlbGwgdGhlIEFudCB0YXNrIHRvIG92ZXJ3cml0ZSBhbnkgZmlsZSB0aGF0IGl0DQotY3JlYXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgZmlsZS4gQnkgZGVmYXVsdCB0aGlzIGlzIHNldCB0byA8Y29kZXBoPnRydWU8L2NvZGVwaD4uPC9wZD4NCi08L3BsZW50cnk+PHBsZW50cnk+DQotPHB0PkNyZWF0ZUZvbGRlcnNFbmFibGVkPC9wdD4NCi08cGQ+PHN5bnBoPiBPcHRpb25zOiA8Y29kZXBoPnRydWU8L2NvZGVwaD4gPGNvZGVwaD5mYWxzZTwvY29kZXBoPjwvc3lucGg+PC9wZD4NCi08cGQ+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIHRlbGwgdGhlIEFudCB0YXNrIHRvIGNyZWF0ZSBhbnkgbmVjY2Vzc2FyeSBmb2xkZXJzLg0KLUJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gPGNvZGVwaD50cnVlPC9jb2RlcGg+LjwvcGQ+DQotPC9wbGVudHJ5PjxwbGVudHJ5Pg0KLTxwdD5DaGVja291dEZpbGVzRW5hYmxlZDwvcHQ+DQotPHBkPjxzeW5waD4gT3B0aW9uczogPGNvZGVwaD50cnVlPC9jb2RlcGg+IDxjb2RlcGg+ZmFsc2U8L2NvZGVwaD48L3N5bnBoPjwvcGQ+DQotPHBkPlVzZSB0aGlzIHBhcmFtZXRlciB0byB0ZWxsIHRoZSBBbnQgdGFzayB0byBjaGVja291dCBmaWxlcyBmcm9tIENWUyB3aXRob3V0DQotcHJvbXB0aW5nIHlvdS4gQnkgZGVmYXVsdCB0aGlzIGlzIHNldCB0byA8Y29kZXBoPnRydWU8L2NvZGVwaD4uPC9wZD4NCi08L3BsZW50cnk+PC9wYXJtbD48L3NlY3Rpb24+DQotPC9yZWZib2R5Pg0KLTwvcmVmZXJlbmNlPg0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy9yd3NjbGllbnRhLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvcndzY2xpZW50YS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzhlODljLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy9yd3NjbGllbnRhLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InJlZmVyZW5jZSIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJBeGlzIFdlYiBzZXJ2aWNlIGNsaWVudCBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IlRoZSBheGlzX2NsaWVudC5wcm9wZXJ0aWVzIGZpbGUgaXMgdXNlZCB0byBwYXNzIGRhdGEgdG8gdGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3Mgd2hlbiBjcmVhdGluZyBhbiBBeGlzIFdlYiBzZXJ2aWNlIGNsaWVudC4gVGhpcyBmaWxlIHNob3dzIHRoZSBhdmFpbGFibGUgb3B0aW9ucy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVGhlIGF4aXNfY2xpZW50LnByb3BlcnRpZXMgZmlsZSBpcyB1c2VkIHRvIHBhc3MgZGF0YSB0byB0aGUgV2ViIHNlcnZpY2VzIEFudCB0YXNrcyB3aGVuIGNyZWF0aW5nIGFuIEF4aXMgV2ViIHNlcnZpY2UgY2xpZW50LiBUaGlzIGZpbGUgc2hvd3MgdGhlIGF2YWlsYWJsZSBvcHRpb25zLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IkF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgV2ViIHNlcnZpY2VzIGNsaWVudCwgQW50IHRhc2sgcmVmZXJlbmNlLCBXZWIgc2VydmljZXMsIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgQW50IHRhc2sgcmVmZXJlbmNlIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iQXhpcyBydW50aW1lIGVudmlyb25tZW50LCBXZWIgc2VydmljZXMgY2xpZW50LCBBbnQgdGFzayByZWZlcmVuY2UsIFdlYiBzZXJ2aWNlcywgQXhpcyBydW50aW1lIGVudmlyb25tZW50LCBBbnQgdGFzayByZWZlcmVuY2UiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90b3BpY3MvdHdid3NjbGllbnRhLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0iYXhpc3dlYnNlcnZpY2VjbGllbnRjb21tYW5kbGluZXJlZmVyZW5jZSIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPkF4aXMgV2ViIHNlcnZpY2UgY2xpZW50IEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2U8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9ImF4aXN3ZWJzZXJ2aWNlY2xpZW50Y29tbWFuZGxpbmVyZWZlcmVuY2UiPjxhIG5hbWU9ImF4aXN3ZWJzZXJ2aWNlY2xpZW50Y29tbWFuZGxpbmVyZWZlcmVuY2UiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkF4aXMgV2ViIHNlcnZpY2UgY2xpZW50IEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2U8L2gxPgotCi0KLQotPGRpdj48cD5UaGUgPGtiZCBjbGFzcz0idXNlcmlucHV0Ij5heGlzX2NsaWVudC5wcm9wZXJ0aWVzPC9rYmQ+IGZpbGUgaXMgdXNlZAotdG8gcGFzcyBkYXRhIHRvIHRoZSBXZWIgc2VydmljZXMgQW50IHRhc2tzIHdoZW4gY3JlYXRpbmcgYW4gQXhpcyBXZWIgc2VydmljZQotY2xpZW50LiBUaGlzIGZpbGUgc2hvd3MgdGhlIGF2YWlsYWJsZSBvcHRpb25zLjwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGg0IGNsYXNzPSJzZWN0aW9udGl0bGUiPlBhcmFtZXRlcnM8L2g0PjxkbD4KLTxkdCBjbGFzcz0iZGx0ZXJtIj5TY2VuYXJpb1R5cGU8L2R0PgotCi08ZGQ+PHNwYW4gY2xhc3M9InN5bnBoIj4gT3B0aW9uczogPHNhbXAgY2xhc3M9ImNvZGVwaCI+Y2xpZW50PC9zYW1wPjwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5UaGlzIGlzIGEgcmVxdWlyZWQgZWxlbWVudCB0aGF0IHRlbGxzIHRoZSBBbnQgdGFzayBpZiBpdCBpcyBjcmVhdGluZyBhCi1XZWIgc2VydmljZSBvciBhIFdlYiBzZXJ2aWNlIGNsaWVudC48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5Jbml0aWFsU2VsZWN0aW9uPC9kdD4KLQotPGRkPkVudGVyIHRoZSB3b3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIHRoZSBXU0RMIGZpbGUgb3IgSmF2YSBiZWFuIHdpdGhpbgoteW91ciB3b3Jrc3BhY2UuIEZvciBleGFtcGxlIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+L2R5bmFtaWNXZWJQcm9qZWN0TmFtZS9XZWJDb250ZW50L215U2VydmljZS53c2RsPC9rYmQ+IG9yIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+L2R5bmFtaWNXZWJQcm9qZWN0TmFtZS9zcmMvbXlCZWFuLmphdmE8L2tiZD48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5MaXN0UnVudGltZXM8L2R0PgotCi08ZGQ+PHNwYW4gY2xhc3M9InN5bnBoIj4gT3B0aW9uczogPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4gPHNhbXAgY2xhc3M9ImNvZGVwaCI+ZmFsc2U8L3NhbXA+PC9zcGFuPjwvZGQ+Ci0KLTxkZCBjbGFzcz0iZGRleHBhbmQiPklmIDxzYW1wIGNsYXNzPSJjb2RlcGgiPnRydWU8L3NhbXA+IGlzIHNlbGVjdGVkLCB0aGUgbGlzdCBvZiB2YWxpZCBydW50aW1lIG9wdGlvbnMKLXdpbGwgYmUgcHJvdmlkZWQgd2hlbiB0aGUgQW50IHRhc2sgaXMgcnVuLjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkxpc3RTZXJ2ZXJzPC9kdD4KLQotPGRkPjxzcGFuIGNsYXNzPSJzeW5waCI+IE9wdGlvbnM6IDxzYW1wIGNsYXNzPSJjb2RlcGgiPnRydWU8L3NhbXA+IDxzYW1wIGNsYXNzPSJjb2RlcGgiPmZhbHNlPC9zYW1wPjwvc3Bhbj48L2RkPgotCi08ZGQgY2xhc3M9ImRkZXhwYW5kIj5JZiA8c2FtcCBjbGFzcz0iY29kZXBoIj50cnVlPC9zYW1wPiBpcyBzZWxlY3RlZCwgdGhlIGxpc3Qgb2YgdmFsaWQgc2VydmVyIG9wdGlvbnMKLXdpbGwgYmUgcHJvdmlkZWQgd2hlbiB0aGUgQW50IHRhc2sgaXMgcnVuLjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkNsaWVudC5SdW50aW1lSWQ8L2R0PgotCi08ZGQ+VGhpcyBpcyB0aGUgSUQgb2YgdGhlIFdlYiBzZXJ2aWNlJ3MgcnVudGltZS4gVGhpcyBwYXJhbWV0ZXIgc2hvdWxkIG5vdAotYmUgbW9kaWZpZWQuPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+Q2xpZW50LlNlcnZlcklkPC9kdD4KLQotPGRkPk9wdGlvbnM6PHVsIGNsYXNzPSJzaW1wbGUiPgotPGxpPjxzYW1wIGNsYXNzPSJjb2RlcGgiPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0Lng8L3NhbXA+ICh3aGVyZSA8c2FtcCBjbGFzcz0iY29kZXBoIj54PC9zYW1wPiBpcyA8c2FtcCBjbGFzcz0iY29kZXBoIj4zMiwKLTQwLCA0MSwgNTAsPC9zYW1wPiBvciA8c2FtcCBjbGFzcz0iY29kZXBoIj41NTwvc2FtcD4pPC9saT4KLQotPGxpPjxzYW1wIGNsYXNzPSJjb2RlcGgiPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuZ2VuZXJpYy53ZWJsb2dpY3g8L3NhbXA+ICh3aGVyZSA8c2FtcCBjbGFzcz0iY29kZXBoIj54PC9zYW1wPiBpcyA8c2FtcCBjbGFzcz0iY29kZXBoIj44MTwvc2FtcD4gb3IgPHNhbXAgY2xhc3M9ImNvZGVwaCI+OTA8L3NhbXA+KSA8L2xpPgotCi08bGk+PHNhbXAgY2xhc3M9ImNvZGVwaCI+b3JnLmVjbGlwc2UuanN0LnNlcnZlci5nZW5lcmljLmpib3NzeDwvc2FtcD4gKHdoZXJlIDxzYW1wIGNsYXNzPSJjb2RlcGgiPng8L3NhbXA+IGlzIDxzYW1wIGNsYXNzPSJjb2RlcGgiPjMyMzwvc2FtcD4gb3IgPHNhbXAgY2xhc3M9ImNvZGVwaCI+NDwvc2FtcD4pPC9saT4KLQotPGxpPjxzYW1wIGNsYXNzPSJjb2RlcGgiPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuZ2VuZXJpYy5qb25hczQ8L3NhbXA+PC9saT4KLQotPGxpPjxzYW1wIGNsYXNzPSJjb2RlcGgiPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuZ2VuZXJpYy5vcmFjbGUxMDEzPC9zYW1wPjwvbGk+Ci0KLTxsaT48c2FtcCBjbGFzcz0iY29kZXBoIj5vcmcuZWNsaXBzZS5qc3Quc2VydmVycy53ZWJzcGhlcmUuNjwvc2FtcD48L2xpPgotCi08L3VsPgotPC9kZD4KLQotPGRkIGNsYXNzPSJkZGV4cGFuZCI+VGhpcyBpcyB0aGUgSUQgb2YgdGhlIHRhcmdldCBzZXJ2ZXIuIERlbGV0ZSBvciBjb21tZW50IG91dCB0aGlzIHBhcmFtZXRlcgotdG8gaGF2ZSB0aGUgQW50IHRhc2sgc2VsZWN0IHRoZSBjb3JyZWN0IHZhbHVlIGJhc2VkIG9uIHRoZSBzZXJ2ZXIgc2V0dGluZ3MKLW9mIHRoZSBkeW5hbWljIFdlYiBwcm9qZWN0LjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkNsaWVudFByb2plY3ROYW1lPC9kdD4KLQotPGRkPkJ5IGRlZmF1bHQgdGhlIGNsaWVudCBwcm9qZWN0IGlzIGdpdmVuIHRoZSBuYW1lIG9mIHRoZSBXU0RMIGZpbGUgb3IgSmF2YQotYmVhbiBmcm9tIHdoaWNoIGl0IGlzIGNyZWF0ZWQuIFVzZSB0aGlzIHBhcmFtZXRlciB0byBjcmVhdGUgdGhlIHNlcnZpY2UgcHJvamVjdAotd2l0aCBhIGRpZmZlcmVudCBuYW1lLjwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPkNsaWVudEVhclByb2plY3ROYW1lPC9kdD4KLQotPGRkPkJ5IGRlZmF1bHQgdGhlIGNsaWVudCBFQVIgcHJvamVjdCBpcyBnaXZlbiB0aGUgbmFtZSBvZiB0aGUgV1NETCBmaWxlIG9yCi1KYXZhIGJlYW4gZnJvbSB3aGljaCBpdCBpcyBjcmVhdGVkLiBVc2UgdGhpcyBwYXJhbWV0ZXIgdG8gY3JlYXRlIHRoZSBzZXJ2aWNlCi1FQVIgcHJvamVjdCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuPC9kZD4KLQotCi08ZHQgY2xhc3M9ImRsdGVybSI+Q2xpZW50Q29tcG9uZW50VHlwZTwvZHQ+Ci0KLTxkZD48cD5PcHRpb25zOiA8a2JkIGNsYXNzPSJ1c2VyaW5wdXQiPmpzdC53ZWI8L2tiZD4gPGtiZCBjbGFzcz0idXNlcmlucHV0Ij5qc3QuamF2YTwva2JkPjwvcD4KLTxwPlVzZQotdGhpcyBwYXJhbWV0ZXIgdG8gc2VsZWN0IHRoZSB0eXBlIG9mIGNsaWVudCBwcm9qZWN0LiBUaGUgb25seSB2YWxpZCBjbGllbnQKLXByb2plY3QgdHlwZSBmb3IgQXhpcyBjbGllbnRzIGlzIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+anN0LndlYjwva2JkPi48L3A+Ci08L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5DdXN0b21pemVDbGllbnRNYXBwaW5nczwvZHQ+Ci0KLTxkZD48cD5PcHRpb25zOiA8a2JkIGNsYXNzPSJ1c2VyaW5wdXQiPnRydWU8L2tiZD4gPGtiZCBjbGFzcz0idXNlcmlucHV0Ij5mYWxzZTwva2JkPjwvcD4KLTxwPk1hcHBpbmdzCi1hcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgbmFtZXMgaW4gdGhlIGdlbmVyYXRlZCBXU0RMLiBUaGUKLWNvbnRlbnQgb2YgdGhlIHByb3BlcnRpZXMgZmlsZSBtdXN0IGJlIG9mIHRoZSBmb3JtYXQgbmFtZXNwYWNlPXBhY2thZ2UuIFlvdQotd2lsbCBuZWVkIHRvIGVzY2FwZSBzb21lIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgcHJvcGVydGllcyBmaWxlcy4gIEZvcgotZXhhbXBsZSA8c2FtcCBjbGFzcz0iY29kZXBoIj5odHRwOi8vc29tZU5hbWVzcGFjZT1zb21lUGFja2FnZTwvc2FtcD4gc2hvdWxkIGJlIDxzYW1wIGNsYXNzPSJjb2RlcGgiPmh0dHBcOi8vc29tZU5hbWVzcGFjZT1zb21lUGFja2FnZTwvc2FtcD4uCi0gT3RoZXJ3aXNlLCB0aGUgY29sb24gKDopIHdvdWxkIGJlIHRyZWF0ZWQgYXMgZGVsaW1pdGVyIHJlc3VsdGluZyBpbiB0cnlpbmcKLXRvIG1hcCA8c2FtcCBjbGFzcz0iY29kZXBoIj5odHRwPC9zYW1wPiB0byA8c2FtcCBjbGFzcz0iY29kZXBoIj4vL3NvbWVOYW1lc3BhY2U9c29tZVBhY2thZ2U8L3NhbXA+LjwvcD4KLTwvZGQ+Ci0KLQotPGR0IGNsYXNzPSJkbHRlcm0iPk1hcHBpbmdzPC9kdD4KLQotPGRkPkVudGVyIHRoZSB3b3Jrc3BhY2UgcmVsYXRpdmUgVVJJIHRvIGEgcHJvcGVydHkgZmlsZSBjb250YWluaW5nIG1hcHBpbmdzLiA8L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5PdmVyd3JpdGVGaWxlc0VuYWJsZWQ8L2R0PgotCi08ZGQ+PHNwYW4gY2xhc3M9InN5bnBoIj4gT3B0aW9uczogPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4gPHNhbXAgY2xhc3M9ImNvZGVwaCI+ZmFsc2U8L3NhbXA+PC9zcGFuPjwvZGQ+Ci0KLTxkZCBjbGFzcz0iZGRleHBhbmQiPlVzZSB0aGlzIHBhcmFtZXRlciB0byB0ZWxsIHRoZSBBbnQgdGFzayB0byBvdmVyd3JpdGUgYW55IGZpbGUgdGhhdCBpdAotY3JlYXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgZmlsZS4gQnkgZGVmYXVsdCB0aGlzIGlzIHNldCB0byA8c2FtcCBjbGFzcz0iY29kZXBoIj50cnVlPC9zYW1wPi48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5DcmVhdGVGb2xkZXJzRW5hYmxlZDwvZHQ+Ci0KLTxkZD48c3BhbiBjbGFzcz0ic3lucGgiPiBPcHRpb25zOiA8c2FtcCBjbGFzcz0iY29kZXBoIj50cnVlPC9zYW1wPiA8c2FtcCBjbGFzcz0iY29kZXBoIj5mYWxzZTwvc2FtcD48L3NwYW4+PC9kZD4KLQotPGRkIGNsYXNzPSJkZGV4cGFuZCI+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIHRlbGwgdGhlIEFudCB0YXNrIHRvIGNyZWF0ZSBhbnkgbmVjY2Vzc2FyeSBmb2xkZXJzLgotQnkgZGVmYXVsdCB0aGlzIGlzIHNldCB0byA8c2FtcCBjbGFzcz0iY29kZXBoIj50cnVlPC9zYW1wPi48L2RkPgotCi0KLTxkdCBjbGFzcz0iZGx0ZXJtIj5DaGVja291dEZpbGVzRW5hYmxlZDwvZHQ+Ci0KLTxkZD48c3BhbiBjbGFzcz0ic3lucGgiPiBPcHRpb25zOiA8c2FtcCBjbGFzcz0iY29kZXBoIj50cnVlPC9zYW1wPiA8c2FtcCBjbGFzcz0iY29kZXBoIj5mYWxzZTwvc2FtcD48L3NwYW4+PC9kZD4KLQotPGRkIGNsYXNzPSJkZGV4cGFuZCI+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIHRlbGwgdGhlIEFudCB0YXNrIHRvIGNoZWNrb3V0IGZpbGVzIGZyb20gQ1ZTIHdpdGhvdXQKLXByb21wdGluZyB5b3UuIEJ5IGRlZmF1bHQgdGhpcyBpcyBzZXQgdG8gPHNhbXAgY2xhc3M9ImNvZGVwaCI+dHJ1ZTwvc2FtcD4uPC9kZD4KLQotPC9kbD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImZhbWlseWxpbmtzIj4KLTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi90b3BpY3MvdHdid3NjbGllbnRhLmh0bWwiIHRpdGxlPSJJZiB5b3UgaGF2ZSBhIFdTREwgZmlsZSB5b3UgY2FuIHVzZSBBbnQgdGhyb3VnaCB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UgdG8gZ2VuZXJhdGUgYSBXZWIgc2VydmljZSBjbGllbnQgdXNpbmcgdGhlIEF4aXMgcnVuLXRpbWUgZW52aXJvbm1lbnQuIj5DcmVhdGluZyBhIFdlYiBzZXJ2aWNlIGNsaWVudCB1c2luZyBBbnQgdGFza3M8L2E+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3R3YndzYS5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3R3YndzYS5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjNlMWU3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy90d2J3c2EuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4NCi08IURPQ1RZUEUgdGFzayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBUYXNrLy9FTiINCi0gInRhc2suZHRkIj4NCi08dGFzayBpZD0idHRkd3NhIiB4bWw6bGFuZz0iZW4tdXMiPg0KLTx0aXRsZT5DcmVhdGluZyBhIFdlYiBzZXJ2aWNlIHVzaW5nIEFudCB0YXNrcyBpbiB0aGUgV29ya2JlbmNoPC90aXRsZT4NCi08dGl0bGVhbHRzPg0KLTxzZWFyY2h0aXRsZT5DcmVhdGluZyBhbiBBeGlzIHJ1bnRpbWUgV2ViIHNlcnZpY2UgdXNpbmcgQW50IHRhc2tzIGluIHRoZSBXb3JrYmVuY2g8L3NlYXJjaHRpdGxlPg0KLTwvdGl0bGVhbHRzPg0KLTxzaG9ydGRlc2M+WW91IGNhbiB1c2UgQW50IHRocm91Z2ggdGhlIEVjbGlwc2Ugd29ya3NwYWNlIHRvIGdlbmVyYXRlIGEgV2ViDQotc2VydmljZSB1c2luZyB0aGUgQXhpcyBydW4tdGltZSBlbnZpcm9ubWVudC4gQm90aCB0b3AtZG93biBhbmQgYm90dG9tLXVwIFdlYg0KLXNlcnZpY2VzIGRldmVsb3BtZW50IGlzIHN1cHBvcnRlZCB3aXRoIHRoZSBBbnQgdGFza3MuPC9zaG9ydGRlc2M+DQotPHByb2xvZz48bWV0YWRhdGE+DQotPGtleXdvcmRzPjxpbmRleHRlcm0+QXhpcyBydW50aW1lIGVudmlyb25tZW50PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmNyZWF0aW5nDQotd2l0aCBBbnQgdGFza3M8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT48aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+QXhpcw0KLXJ1bnRpbWUgZW52aXJvbm1lbnQ8aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+Y3JlYXRpbmcgd2l0aCBBbnQgdGFza3M8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybT4NCi08L2tleXdvcmRzPg0KLTwvbWV0YWRhdGE+PC9wcm9sb2c+DQotPHRhc2tib2R5Pg0KLTxwcmVyZXE+QmVmb3JlIGNyZWF0aW5nIHRoZSBXZWIgc2VydmljZSB5b3UgbXVzdDo8dWw+DQotPGxpPmNvbXBsZXRlIHRoZSBwcmVyZXF1aXNpdGVzIGxpc3RlZCBpbjogPHhyZWYgaHJlZj0iY3dzYXhpc2FudC5kaXRhIj48L3hyZWY+PC9saT4NCi08bGk+aWYgeW91IGFyZSBjcmVhdGluZyBhIHRvcC1kb3duIFdlYiBzZXJ2aWNlLCBjcmVhdGUgb3IgaW1wb3J0IGEgV1NETCBmaWxlDQotaW50byB0aGUgPHVzZXJpbnB1dD5XZWJDb250ZW50PC91c2VyaW5wdXQ+IGZvbGRlciBvZiB0aGUgZHluYW1pYyBXZWIgcHJvamVjdA0KLXlvdSBjcmVhdGVkLjwvbGk+DQotPGxpPklmIHlvdSBhcmUgY3JlYXRpbmcgYSBib3R0b20tdXAgV2ViIHNlcnZpY2UsIGNyZWF0ZSBvciBpbXBvcnQgYSBKYXZhIGJlYW4NCi1pbnRvIHRoZSA8dXNlcmlucHV0PnNyYzwvdXNlcmlucHV0PiBmb2xkZXIgb2YgdGhlIGR5bmFtaWMgV2ViIHByb2plY3QuPC9saT4NCi08L3VsPjwvcHJlcmVxPg0KLTxjb250ZXh0PkluIG9yZGVyIHRvIGNyZWF0ZSB0aGUgV2ViIHNlcnZpY2UgeW91IG5lZWQgdG8gbW9kaWZ5IHRoZSBBbnQgZmlsZQ0KLWFuZCB0aGUgc2VydmljZSBBbnQgcHJvcGVydGllcyBmaWxlLjwvY29udGV4dD4NCi08c3RlcHM+DQotPHN0ZXA+PGNtZD5FZGl0IHRoZSBBbnQgZmlsZSAoPHVzZXJpbnB1dD5heGlzX3RkamF2YS54bWw8L3VzZXJpbnB1dD4gb3IgPHVzZXJpbnB1dD5heGlzX2J1amF2YS54bWw8L3VzZXJpbnB1dD4pDQotdGhhdCB5b3UgaW1wb3J0ZWQgaW4gdGhlIHByZXJlcXVpc2l0ZSBzdGVwcy4gRW5zdXJlIHRoYXQgaXQgcG9pbnRzIHRvIHRoZQ0KLXNlcnZpY2UgQW50IHByb3BlcnRpZXMgZmlsZTogaXQgc2hvdWxkIGNvbnRhaW4gYSBsaW5lIHN0YXRpbmcgPHVzZXJpbnB1dD4mbHQ7cHJvcGVydHkNCi1maWxlPSJheGlzX3RkamF2YS5wcm9wZXJ0aWVzIi8+PC91c2VyaW5wdXQ+IG9yIDx1c2VyaW5wdXQ+Jmx0O3Byb3BlcnR5IGZpbGU9ImF4aXNfYnVqYXZhLnByb3BlcnRpZXMiLz48L3VzZXJpbnB1dD4uPC9jbWQ+DQotPGluZm8+U2F2ZSBhbnkgY2hhbmdlcyB0aGF0IHlvdSBoYXZlIG1hZGUuPC9pbmZvPjwvc3RlcD4NCi08c3RlcD48Y21kPkVkaXQgdGhlIHByb3BlcnRpZXMgZmlsZSB0aGF0IHlvdSBpbXBvcnRlZCBpbiB0aGUgcHJlcmVxdWlzaXRlDQotc3RlcHMuPC9jbWQ+DQotPHN1YnN0ZXBzPg0KLTxzdWJzdGVwPjxjbWQ+RW5zdXJlIHRoYXQgdGhlIHNjZW5hcmlvVHlwZSBwYXJhbWV0ZXIgaXMgc2V0IHRvIHNlcnZpY2UuPC9jbWQ+DQotPC9zdWJzdGVwPg0KLTxzdWJzdGVwPjxjbWQ+U2V0IHRoZSB3b3Jrc3BhY2UgcGFyYW1ldGVyIHNvIHRoYXQgaXQgcG9pbnRzIHRvIHRoZSBsb2NhdGlvbg0KLW9mIHlvdXIgV1NETCBmaWxlIG9yIEphdmEgYmVhbi48L2NtZD48L3N1YnN0ZXA+DQotPHN1YnN0ZXA+PGNtZD5BbGwgb3RoZXIgcGFyYW1ldGVycyBhcmUgb3B0aW9uYWwgYW5kIHNob3VsZCBiZSBkZWxldGVkIGlmIG5vdA0KLWV4cGxpY2l0bHkgc2V0LiBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSByZW1haW5pbmcgcGFyYW1ldGVycyB3aWxsIGJlIHJldHJpZXZlZA0KLWZyb20gdGhlIGR5bmFtaWMgcHJvamVjdCBzZXR0aW5ncyBhbmQgcHJlZmVyZW5jZXMuIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQotb24gaG93IHRvIHNldCB0aGVzZSBwYXJhbWV0ZXJzIHJlZmVyIHRvOiA8L2NtZD48aW5mbz48dWw+DQotPGxpPjx4cmVmIGhyZWY9InJ0ZHdzYS5kaXRhIj48L3hyZWY+PC9saT4NCi08bGk+PHhyZWYgaHJlZj0icmJ1d3NhLmRpdGEiPjwveHJlZj48L2xpPg0KLTwvdWw+PC9pbmZvPjwvc3Vic3RlcD4NCi08L3N1YnN0ZXBzPg0KLTxpbmZvPlNhdmUgdGhlIHByb3BlcnRpZXMgZmlsZS48L2luZm8+PC9zdGVwPg0KLTxzdGVwPjxjbWQ+UmlnaHQtY2xpY2sgPHVzZXJpbnB1dD5heGlzX3RkamF2YS54bWw8L3VzZXJpbnB1dD4gb3IgPHVzZXJpbnB1dD5heGlzX2J1amF2YS54bWw8L3VzZXJpbnB1dD4gYW5kDQotc2VsZWN0IDxtZW51Y2FzY2FkZT48dWljb250cm9sPlJ1biBBczwvdWljb250cm9sPjx1aWNvbnRyb2w+QW50IEJ1aWxkLi4uPC91aWNvbnRyb2w+DQotPC9tZW51Y2FzY2FkZT48L2NtZD48L3N0ZXA+DQotPHN0ZXA+PGNtZD5JbiB0aGUgZGlhbG9nIHRoYXQgb3BlbnMsIHNlbGVjdCB0aGUgPHVpY29udHJvbD5KUkU8L3VpY29udHJvbD4gdGFiDQotYW5kIHNlbGVjdCA8dWljb250cm9sPlJ1biBpbiB0aGUgc2FtZSBKUkUgYXMgdGhlIHdvcmtzcGFjZTwvdWljb250cm9sPi48L2NtZD4NCi08aW5mbz5DbGljayA8dWljb250cm9sPkFwcGx5PC91aWNvbnRyb2w+IGFuZCB0aGVuIGNsaWNrIDx1aWNvbnRyb2w+UnVuPC91aWNvbnRyb2w+LjwvaW5mbz4NCi08L3N0ZXA+DQotPHN0ZXA+PGNtZD5PbmNlIHlvdXIgV2ViIHNlcnZpY2UgaGFzIGJlZW4gZ2VuZXJhdGVkIHRoZSBjb25zb2xlIGRpc3BsYXlzIGEgPHVzZXJpbnB1dD5CdWlsZA0KLVN1Y2Nlc3NmdWw8L3VzZXJpbnB1dD4gbWVzc2FnZS48L2NtZD48L3N0ZXA+DQotPC9zdGVwcz4NCi08cmVzdWx0PlRoZSBXU0RMIGZpbGUgZm9yIHRoZSBzZXJ2aWNlIHdpbGwgaGF2ZSBiZWVuIGNyZWF0ZWQgYW5kIHBsYWNlZCBpbg0KLXRoZSBkeW5hbWljIFdlYiBwcm9qZWN0J3MgV2ViQ29udGVudFx3c2RsIGZvbGRlci4gVGhlIGZvbGxvd2luZyBmaWxlcyB3aWxsDQotaGF2ZSBiZWVuIGNyZWF0ZWQgYW5kIHBsYWNlZCBpbiBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgZHluYW1pYyBXZWIgcHJvamVjdCdzDQotV2ViQ29udGVudFxXRUItSU5GIGZvbGRlcjo8dWw+DQotPGxpPndlYi54bWw8L2xpPg0KLTxsaT51bmRlcGxveS53c2RkPC9saT4NCi08bGk+ZGVwbG95LndzZGQgPC9saT4NCi08L3VsPklmIHlvdSBhcmUgY3JlYXRpbmcgYSB0b3AtZG93biBXZWIgc2VydmljZSwgV2ViIHNlcnZpY2UgZmlsZXMgc2ltaWxhcg0KLXRvIHRoZSBmb2xsb3dpbmcgb25lcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHBsYWNlZCB1bmRlciB0aGUgZHluYW1pYyBXZWIgcHJvamVjdCdzDQotc3JjIGZvbGRlci4gRGVwZW5kaW5nIG9uIHRoZSBXU0RMIGZpbGUgb24gd2hpY2ggdGhlIFdlYiBzZXJ2aWNlIGlzIGJhc2VkLA0KLXRoZSBmaWxlcyBmb3IgeW91ciBXZWIgc2VydmljZSBtYXkgYmUgZGlmZmVyZW50Ojx1bD4NCi08bGk+PGk+U2VydmljZV9uYW1lPC9pPl9Qb3J0VHlwZS5qYXZhPC9saT4NCi08bGk+PGk+U2VydmljZV9uYW1lPC9pPl9TZXJ2aWNlLmphdmE8L2xpPg0KLTxsaT48aT5TZXJ2aWNlX25hbWU8L2k+X1NlcnZpY2VMb2NhdG9yLmphdmE8L2xpPg0KLTxsaT48aT5TZXJ2aWNlX25hbWU8L2k+U09BUEltcGwuamF2YTwvbGk+DQotPGxpPjxpPlNlcnZpY2VfbmFtZTwvaT5TT0FQU2tlbGV0b24uamF2YTwvbGk+DQotPGxpPjxpPlNlcnZpY2VfbmFtZTwvaT5TT0FQU3R1Yi5qYXZhPC9saT4NCi08L3VsPiA8L3Jlc3VsdD4NCi08L3Rhc2tib2R5Pg0KLTwvdGFzaz4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvdHdid3NhLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvdHdid3NhLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MzI0OTEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3R3YndzYS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJ0YXNrIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgdXNpbmcgQW50IHRhc2tzIGluIHRoZSBXb3JrYmVuY2giIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iWW91IGNhbiB1c2UgQW50IHRocm91Z2ggdGhlIEVjbGlwc2Ugd29ya3NwYWNlIHRvIGdlbmVyYXRlIGEgV2ViIHNlcnZpY2UgdXNpbmcgdGhlIEF4aXMgcnVuLXRpbWUgZW52aXJvbm1lbnQuIEJvdGggdG9wLWRvd24gYW5kIGJvdHRvbS11cCBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaXMgc3VwcG9ydGVkIHdpdGggdGhlIEFudCB0YXNrcy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iWW91IGNhbiB1c2UgQW50IHRocm91Z2ggdGhlIEVjbGlwc2Ugd29ya3NwYWNlIHRvIGdlbmVyYXRlIGEgV2ViIHNlcnZpY2UgdXNpbmcgdGhlIEF4aXMgcnVuLXRpbWUgZW52aXJvbm1lbnQuIEJvdGggdG9wLWRvd24gYW5kIGJvdHRvbS11cCBXZWIgc2VydmljZXMgZGV2ZWxvcG1lbnQgaXMgc3VwcG9ydGVkIHdpdGggdGhlIEFudCB0YXNrcy4iIC8+Ci08bWV0YSBjb250ZW50PSJBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIFdlYiBzZXJ2aWNlcywgY3JlYXRpbmcgd2l0aCBBbnQgdGFza3MsIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgY3JlYXRpbmcgd2l0aCBBbnQgdGFza3MiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIFdlYiBzZXJ2aWNlcywgY3JlYXRpbmcgd2l0aCBBbnQgdGFza3MsIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgY3JlYXRpbmcgd2l0aCBBbnQgdGFza3MiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90b3BpY3MvY3dzYXhpc2FudC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90b3BpY3MvcnRkd3NhLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL3RvcGljcy9yYnV3c2EuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0dGR3c2EiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5DcmVhdGluZyBhbiBBeGlzIHJ1bnRpbWUgV2ViIHNlcnZpY2UgdXNpbmcgQW50IHRhc2tzIGluIHRoZSBXb3JrYmVuY2g8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InR0ZHdzYSI+PGEgbmFtZT0idHRkd3NhIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5DcmVhdGluZyBhIFdlYiBzZXJ2aWNlIHVzaW5nIEFudCB0YXNrcyBpbiB0aGUgV29ya2JlbmNoPC9oMT4KLQotCi0KLQotPGRpdj48cD5Zb3UgY2FuIHVzZSBBbnQgdGhyb3VnaCB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UgdG8gZ2VuZXJhdGUgYSBXZWIKLXNlcnZpY2UgdXNpbmcgdGhlIEF4aXMgcnVuLXRpbWUgZW52aXJvbm1lbnQuIEJvdGggdG9wLWRvd24gYW5kIGJvdHRvbS11cCBXZWIKLXNlcnZpY2VzIGRldmVsb3BtZW50IGlzIHN1cHBvcnRlZCB3aXRoIHRoZSBBbnQgdGFza3MuPC9wPgotCi08ZGl2IGNsYXNzPSJwIj5CZWZvcmUgY3JlYXRpbmcgdGhlIFdlYiBzZXJ2aWNlIHlvdSBtdXN0Ojx1bD4KLTxsaT5jb21wbGV0ZSB0aGUgcHJlcmVxdWlzaXRlcyBsaXN0ZWQgaW46IDxhIGhyZWY9ImN3c2F4aXNhbnQuaHRtbCIgdGl0bGU9IklmIHlvdSBwcmVmZXIgbm90IHRvIHVzZSB0aGUgV2ViIHNlcnZpY2Ugd2l6YXJkLCB5b3UgY2FuIHVzZSBBbnQmIzEwO2ZpbGVzIHRvIGNyZWF0ZSBXZWIgc2VydmljZXMgYW5kIGNsaWVudHMgdXNpbmcgdGhlIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudC4mIzEwO1RoZSBXZWIgc2VydmljZXMgQW50IHRhc2tzIGNhbiBiZSBydW4gaW4gdHdvIHdheXM6IHRocm91Z2ggdGhlIEVjbGlwc2Ugd29ya3NwYWNlJiMxMDt1c2luZyBSdW4gQXMgJmd0OyBBbnQgQnVpbGQuLi4sIG9yIHRoZXkgY2FuIGJlIHJ1biBoZWFkbGVzcyB0aHJvdWdoIHRoZSBjb21tYW5kIGxpbmUuIE9uY2UmIzEwO3lvdSBoYXZlIGNyZWF0ZWQgeW91ciBXZWIgc2VydmljZSwgeW91IGNhbiB0aGVuIGRlcGxveSBpdCB0byBhIHNlcnZlciwgdGVzdCYjMTA7aXQsIGFuZCBwdWJsaXNoIGl0IGFzIGEgYnVzaW5lc3MgZW50aXR5IG9yIGJ1c2luZXNzIHNlcnZpY2UuIj5DcmVhdGluZyBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQgV2ViIHNlcnZpY2VzIGFuZCBjbGllbnRzIHVzaW5nIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3M8L2E+PC9saT4KLQotPGxpPmlmIHlvdSBhcmUgY3JlYXRpbmcgYSB0b3AtZG93biBXZWIgc2VydmljZSwgY3JlYXRlIG9yIGltcG9ydCBhIFdTREwgZmlsZQotaW50byB0aGUgPGtiZCBjbGFzcz0idXNlcmlucHV0Ij5XZWJDb250ZW50PC9rYmQ+IGZvbGRlciBvZiB0aGUgZHluYW1pYyBXZWIgcHJvamVjdAoteW91IGNyZWF0ZWQuPC9saT4KLQotPGxpPklmIHlvdSBhcmUgY3JlYXRpbmcgYSBib3R0b20tdXAgV2ViIHNlcnZpY2UsIGNyZWF0ZSBvciBpbXBvcnQgYSBKYXZhIGJlYW4KLWludG8gdGhlIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+c3JjPC9rYmQ+IGZvbGRlciBvZiB0aGUgZHluYW1pYyBXZWIgcHJvamVjdC48L2xpPgotCi08L3VsPgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPkluIG9yZGVyIHRvIGNyZWF0ZSB0aGUgV2ViIHNlcnZpY2UgeW91IG5lZWQgdG8gbW9kaWZ5IHRoZSBBbnQgZmlsZQotYW5kIHRoZSBzZXJ2aWNlIEFudCBwcm9wZXJ0aWVzIGZpbGUuPC9kaXY+Ci0KLTxvbD4KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+RWRpdCB0aGUgQW50IGZpbGUgKDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+YXhpc190ZGphdmEueG1sPC9rYmQ+IG9yIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+YXhpc19idWphdmEueG1sPC9rYmQ+KQotdGhhdCB5b3UgaW1wb3J0ZWQgaW4gdGhlIHByZXJlcXVpc2l0ZSBzdGVwcy4gRW5zdXJlIHRoYXQgaXQgcG9pbnRzIHRvIHRoZQotc2VydmljZSBBbnQgcHJvcGVydGllcyBmaWxlOiBpdCBzaG91bGQgY29udGFpbiBhIGxpbmUgc3RhdGluZyA8a2JkIGNsYXNzPSJ1c2VyaW5wdXQiPiZsdDtwcm9wZXJ0eQotZmlsZT0iYXhpc190ZGphdmEucHJvcGVydGllcyIvJmd0Ozwva2JkPiBvciA8a2JkIGNsYXNzPSJ1c2VyaW5wdXQiPiZsdDtwcm9wZXJ0eSBmaWxlPSJheGlzX2J1amF2YS5wcm9wZXJ0aWVzIi8mZ3Q7PC9rYmQ+Ljwvc3Bhbj4KLSBTYXZlIGFueSBjaGFuZ2VzIHRoYXQgeW91IGhhdmUgbWFkZS48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkVkaXQgdGhlIHByb3BlcnRpZXMgZmlsZSB0aGF0IHlvdSBpbXBvcnRlZCBpbiB0aGUgcHJlcmVxdWlzaXRlCi1zdGVwcy48L3NwYW4+Ci08b2wgdHlwZT0iYSI+Ci08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPkVuc3VyZSB0aGF0IHRoZSBzY2VuYXJpb1R5cGUgcGFyYW1ldGVyIGlzIHNldCB0byBzZXJ2aWNlLjwvc3Bhbj4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3Vic3RlcGV4cGFuZCI+PHNwYW4+U2V0IHRoZSB3b3Jrc3BhY2UgcGFyYW1ldGVyIHNvIHRoYXQgaXQgcG9pbnRzIHRvIHRoZSBsb2NhdGlvbgotb2YgeW91ciBXU0RMIGZpbGUgb3IgSmF2YSBiZWFuLjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPkFsbCBvdGhlciBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbCBhbmQgc2hvdWxkIGJlIGRlbGV0ZWQgaWYgbm90Ci1leHBsaWNpdGx5IHNldC4gVGhlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgcmVtYWluaW5nIHBhcmFtZXRlcnMgd2lsbCBiZSByZXRyaWV2ZWQKLWZyb20gdGhlIGR5bmFtaWMgcHJvamVjdCBzZXR0aW5ncyBhbmQgcHJlZmVyZW5jZXMuIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi1vbiBob3cgdG8gc2V0IHRoZXNlIHBhcmFtZXRlcnMgcmVmZXIgdG86IDwvc3Bhbj4gPHVsPgotPGxpPjxhIGhyZWY9InJ0ZHdzYS5odG1sIiB0aXRsZT0iVGhlIGF4aXNfdGRqYXZhLnByb3BlcnRpZXMgZmlsZSBpcyB1c2VkJiMxMDt0byBwYXNzIGRhdGEgdG8gdGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3Mgd2hlbiBjcmVhdGluZyBhbiBBeGlzIFdlYiBzZXJ2aWNlJiMxMDsuIFRoaXMgZmlsZSBzaG93cyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMuIj5Ub3AtZG93biBBeGlzIFdlYiBzZXJ2aWNlIEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2U8L2E+PC9saT4KLQotPGxpPjxhIGhyZWY9InJidXdzYS5odG1sIiB0aXRsZT0iVGhlIGF4aXNfYnVqYXZhLnByb3BlcnRpZXMgZmlsZSBpcyB1c2VkJiMxMDt0byBwYXNzIGRhdGEgdG8gdGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3Mgd2hlbiBjcmVhdGluZyBhbiBBeGlzIFdlYiBzZXJ2aWNlJiMxMDsuIFRoaXMgZmlsZSBzaG93cyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMuIj5Cb3R0b20tdXAgQXhpcyBXZWIgc2VydmljZSBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlPC9hPjwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08L29sPgotCi0gU2F2ZSB0aGUgcHJvcGVydGllcyBmaWxlLjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+UmlnaHQtY2xpY2sgPGtiZCBjbGFzcz0idXNlcmlucHV0Ij5heGlzX3RkamF2YS54bWw8L2tiZD4gb3IgPGtiZCBjbGFzcz0idXNlcmlucHV0Ij5heGlzX2J1amF2YS54bWw8L2tiZD4gYW5kCi1zZWxlY3QgPHNwYW4gY2xhc3M9Im1lbnVjYXNjYWRlIj48c3BhbiBjbGFzcz0idWljb250cm9sIj5SdW4gQXM8L3NwYW4+ICZndDsgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QW50IEJ1aWxkLi4uPC9zcGFuPgotPC9zcGFuPjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBkaWFsb2cgdGhhdCBvcGVucywgc2VsZWN0IHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5KUkU8L3NwYW4+IHRhYgotYW5kIHNlbGVjdCA8c3BhbiBjbGFzcz0idWljb250cm9sIj5SdW4gaW4gdGhlIHNhbWUgSlJFIGFzIHRoZSB3b3Jrc3BhY2U8L3NwYW4+Ljwvc3Bhbj4KLSBDbGljayA8c3BhbiBjbGFzcz0idWljb250cm9sIj5BcHBseTwvc3Bhbj4gYW5kIHRoZW4gY2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+UnVuPC9zcGFuPi4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+T25jZSB5b3VyIFdlYiBzZXJ2aWNlIGhhcyBiZWVuIGdlbmVyYXRlZCB0aGUgY29uc29sZSBkaXNwbGF5cyBhIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+QnVpbGQKLVN1Y2Nlc3NmdWw8L2tiZD4gbWVzc2FnZS48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+VGhlIFdTREwgZmlsZSBmb3IgdGhlIHNlcnZpY2Ugd2lsbCBoYXZlIGJlZW4gY3JlYXRlZCBhbmQgcGxhY2VkIGluCi10aGUgZHluYW1pYyBXZWIgcHJvamVjdCdzIFdlYkNvbnRlbnRcd3NkbCBmb2xkZXIuIFRoZSBmb2xsb3dpbmcgZmlsZXMgd2lsbAotaGF2ZSBiZWVuIGNyZWF0ZWQgYW5kIHBsYWNlZCBpbiBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgZHluYW1pYyBXZWIgcHJvamVjdCdzCi1XZWJDb250ZW50XFdFQi1JTkYgZm9sZGVyOjx1bD4KLTxsaT53ZWIueG1sPC9saT4KLQotPGxpPnVuZGVwbG95LndzZGQ8L2xpPgotCi08bGk+ZGVwbG95LndzZGQgPC9saT4KLQotPC91bD4KLUlmIHlvdSBhcmUgY3JlYXRpbmcgYSB0b3AtZG93biBXZWIgc2VydmljZSwgV2ViIHNlcnZpY2UgZmlsZXMgc2ltaWxhcgotdG8gdGhlIGZvbGxvd2luZyBvbmVzIHdpbGwgYmUgY3JlYXRlZCBhbmQgcGxhY2VkIHVuZGVyIHRoZSBkeW5hbWljIFdlYiBwcm9qZWN0J3MKLXNyYyBmb2xkZXIuIERlcGVuZGluZyBvbiB0aGUgV1NETCBmaWxlIG9uIHdoaWNoIHRoZSBXZWIgc2VydmljZSBpcyBiYXNlZCwKLXRoZSBmaWxlcyBmb3IgeW91ciBXZWIgc2VydmljZSBtYXkgYmUgZGlmZmVyZW50Ojx1bD4KLTxsaT48ZW0+U2VydmljZV9uYW1lPC9lbT5fUG9ydFR5cGUuamF2YTwvbGk+Ci0KLTxsaT48ZW0+U2VydmljZV9uYW1lPC9lbT5fU2VydmljZS5qYXZhPC9saT4KLQotPGxpPjxlbT5TZXJ2aWNlX25hbWU8L2VtPl9TZXJ2aWNlTG9jYXRvci5qYXZhPC9saT4KLQotPGxpPjxlbT5TZXJ2aWNlX25hbWU8L2VtPlNPQVBJbXBsLmphdmE8L2xpPgotCi08bGk+PGVtPlNlcnZpY2VfbmFtZTwvZW0+U09BUFNrZWxldG9uLmphdmE8L2xpPgotCi08bGk+PGVtPlNlcnZpY2VfbmFtZTwvZW0+U09BUFN0dWIuamF2YTwvbGk+Ci0KLTwvdWw+Ci0gPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPHVsIGNsYXNzPSJ1bGxpbmtzIj4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vdG9waWNzL3J0ZHdzYS5odG1sIj5Ub3AtZG93biBBeGlzIFdlYiBzZXJ2aWNlIEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2U8L2E+PC9zdHJvbmc+PGJyIC8+Ci1UaGUgYXhpc190ZGphdmEucHJvcGVydGllcyBmaWxlIGlzIHVzZWQgdG8gcGFzcyBkYXRhIHRvIHRoZSBXZWIgc2VydmljZXMgQW50IHRhc2tzIHdoZW4gY3JlYXRpbmcgYW4gQXhpcyBXZWIgc2VydmljZSAuIFRoaXMgZmlsZSBzaG93cyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMuPC9saT4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vdG9waWNzL3JidXdzYS5odG1sIj5Cb3R0b20tdXAgQXhpcyBXZWIgc2VydmljZSBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlPC9hPjwvc3Ryb25nPjxiciAvPgotVGhlIGF4aXNfYnVqYXZhLnByb3BlcnRpZXMgZmlsZSBpcyB1c2VkIHRvIHBhc3MgZGF0YSB0byB0aGUgV2ViIHNlcnZpY2VzIEFudCB0YXNrcyB3aGVuIGNyZWF0aW5nIGFuIEF4aXMgV2ViIHNlcnZpY2UgLiBUaGlzIGZpbGUgc2hvd3MgdGhlIGF2YWlsYWJsZSBvcHRpb25zLjwvbGk+Ci08L3VsPgotCi08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vdG9waWNzL2N3c2F4aXNhbnQuaHRtbCIgdGl0bGU9IklmIHlvdSBwcmVmZXIgbm90IHRvIHVzZSB0aGUgV2ViIHNlcnZpY2Ugd2l6YXJkLCB5b3UgY2FuIHVzZSBBbnQgZmlsZXMgdG8gY3JlYXRlIFdlYiBzZXJ2aWNlcyBhbmQgY2xpZW50cyB1c2luZyB0aGUgQXhpcyBydW50aW1lIGVudmlyb25tZW50LiBUaGUgV2ViIHNlcnZpY2VzIEFudCB0YXNrcyBjYW4gYmUgcnVuIGluIHR3byB3YXlzOiB0aHJvdWdoIHRoZSBFY2xpcHNlIHdvcmtzcGFjZSB1c2luZyBSdW4gQXMgJmd0OyBBbnQgQnVpbGQuLi4sIG9yIHRoZXkgY2FuIGJlIHJ1biBoZWFkbGVzcyB0aHJvdWdoIHRoZSBjb21tYW5kIGxpbmUuIE9uY2UgeW91IGhhdmUgY3JlYXRlZCB5b3VyIFdlYiBzZXJ2aWNlLCB5b3UgY2FuIHRoZW4gZGVwbG95IGl0IHRvIGEgc2VydmVyLCB0ZXN0IGl0LCBhbmQgcHVibGlzaCBpdCBhcyBhIGJ1c2luZXNzIGVudGl0eSBvciBidXNpbmVzcyBzZXJ2aWNlLiI+Q3JlYXRpbmcgQXhpcyBydW50aW1lIGVudmlyb25tZW50IFdlYiBzZXJ2aWNlcyBhbmQgY2xpZW50cyB1c2luZyBXZWIgc2VydmljZXMgQW50IHRhc2tzPC9hPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy90d2J3c2NsaWVudGEuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3RvcGljcy90d2J3c2NsaWVudGEuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFhNTRmNi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvdHdid3NjbGllbnRhLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+DQotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iDQotICJ0YXNrLmR0ZCI+DQotPHRhc2sgaWQ9InR3c2NsaWVudGEiIHhtbDpsYW5nPSJlbi11cyI+DQotPHRpdGxlPkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgY2xpZW50IHVzaW5nIEFudCB0YXNrczwvdGl0bGU+DQotPHRpdGxlYWx0cz4NCi08c2VhcmNodGl0bGU+Q3JlYXRpbmcgYW4gQXhpcyBydW50aW1lIFdlYiBzZXJ2aWNlIGNsaWVudCBmcm9tIGEgV1NETCBmaWxlDQotdXNpbmcgY29tbWFuZCBsaW5lIHRvb2xzPC9zZWFyY2h0aXRsZT4NCi08L3RpdGxlYWx0cz4NCi08c2hvcnRkZXNjPklmIHlvdSBoYXZlIGEgV1NETCBmaWxlIHlvdSBjYW4gdXNlIEFudCB0aHJvdWdoIHRoZSBFY2xpcHNlIHdvcmtzcGFjZQ0KLXRvIGdlbmVyYXRlIGEgV2ViIHNlcnZpY2UgY2xpZW50IHVzaW5nIHRoZSBBeGlzIHJ1bi10aW1lIGVudmlyb25tZW50Ljwvc2hvcnRkZXNjPg0KLTxwcm9sb2c+PG1ldGFkYXRhPg0KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPkF4aXMgcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+V2ViIHNlcnZpY2VzIGNsaWVudDxpbmRleHRlcm0+Y3JlYXRpbmcNCi13aXRoIEFudCB0YXNrczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5BeGlzDQotcnVudGltZSBlbnZpcm9ubWVudDxpbmRleHRlcm0+V2ViIHNlcnZpY2VzIGNsaWVudDxpbmRleHRlcm0+Y3JlYXRpbmcgd2l0aA0KLUFudCB0YXNrczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwva2V5d29yZHM+DQotPC9tZXRhZGF0YT48L3Byb2xvZz4NCi08dGFza2JvZHk+DQotPHByZXJlcT5CZWZvcmUgY3JlYXRpbmcgdGhlIFdlYiBzZXJ2aWNlIGNsaWVudCB5b3UgbXVzdDo8dWw+DQotPGxpPmNvbXBsZXRlIHRoZSBwcmVyZXF1aXNpdGVzIGxpc3RlZCBpbjogPHhyZWYgaHJlZj0iY3dzYXhpc2FudC5kaXRhIj48L3hyZWY+PC9saT4NCi08bGk+Y3JlYXRlIG9yIGltcG9ydCBhIFdTREwgZmlsZSBpbnRvIHRoZSBkeW5hbWljIFdlYiBwcm9qZWN0IHlvdSBjcmVhdGVkLjwvbGk+DQotPC91bD48L3ByZXJlcT4NCi08Y29udGV4dD5JbiBvcmRlciB0byBjcmVhdGUgdGhlIFdlYiBzZXJ2aWNlIGNsaWVudCB5b3UgbmVlZCB0byBtb2RpZnkgdGhlDQotQW50IGZpbGUgYW5kIHRoZSBBbnQgcHJvcGVydGllcyBmaWxlLjwvY29udGV4dD4NCi08c3RlcHM+DQotPHN0ZXA+PGNtZD5FZGl0IHRoZSBBbnQgZmlsZSAoPHVzZXJpbnB1dD5heGlzX2NsaWVudC54bWw8L3VzZXJpbnB1dD4pIHRoYXQNCi15b3UgaW1wb3J0ZWQgaW4gdGhlIHByZXJlcXVpc2l0ZSBzdGVwcy4gRW5zdXJlIHRoYXQgaXQgcG9pbnRzIHRvIHRoZSBjbGllbnQNCi1BbnQgcHJvcGVydGllcyBmaWxlOiBpdCBzaG91bGQgY29udGFpbiBhIGxpbmUgc3RhdGluZyA8dXNlcmlucHV0PiZsdDtwcm9wZXJ0eQ0KLWZpbGU9ImF4aXNfY2xpZW50LnByb3BlcnRpZXMiLz48L3VzZXJpbnB1dD4uPC9jbWQ+PGluZm8+U2F2ZSBhbnkgY2hhbmdlcyB0aGF0DQoteW91IGhhdmUgbWFkZS48L2luZm8+PC9zdGVwPg0KLTxzdGVwPjxjbWQ+RWRpdCB0aGUgPHVzZXJpbnB1dD5heGlzX2NsaWVudC5wcm9wZXJ0aWVzPC91c2VyaW5wdXQ+IGZpbGUgdGhhdA0KLXlvdSBpbXBvcnRlZCBpbiB0aGUgcHJlcmVxdWlzaXRlIHN0ZXBzLjwvY21kPg0KLTxzdWJzdGVwcz4NCi08c3Vic3RlcD48Y21kPkVuc3VyZSB0aGF0IHRoZSBzY2VuYXJpb1R5cGUgcGFyYW1ldGVyIGlzIHNldCB0byBjbGllbnQuPC9jbWQ+DQotPC9zdWJzdGVwPg0KLTxzdWJzdGVwPjxjbWQ+U2V0IHRoZSB3b3Jrc3BhY2UgcGFyYW1ldGVyIHNvIHRoYXQgaXQgcG9pbnRzIHRvIHRoZSBsb2NhdGlvbg0KLW9mIHlvdXIgV1NETCBmaWxlLjwvY21kPjwvc3Vic3RlcD4NCi08c3Vic3RlcD48Y21kPkFsbCBvdGhlciBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbCBhbmQgc2hvdWxkIGJlIGRlbGV0ZWQgaWYgbm90DQotZXhwbGljaXRseSBzZXQuIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIHJlbWFpbmluZyBwYXJhbWV0ZXJzIHdpbGwgYmUgcmV0cmlldmVkDQotZnJvbSB0aGUgZHluYW1pYyBwcm9qZWN0IHNldHRpbmdzLiBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0DQotdGhlc2UgcGFyYW1ldGVycyByZWZlciB0bzogPHhyZWYgaHJlZj0icndzY2xpZW50YS5kaXRhIj48L3hyZWY+PC9jbWQ+PC9zdWJzdGVwPg0KLTwvc3Vic3RlcHM+DQotPGluZm8+U2F2ZSB0aGUgPHVzZXJpbnB1dD5heGlzX2NsaWVudC5wcm9wZXJ0aWVzPC91c2VyaW5wdXQ+IGZpbGUuPC9pbmZvPg0KLTwvc3RlcD4NCi08c3RlcD48Y21kPlJpZ2h0LWNsaWNrIDx1c2VyaW5wdXQ+YXhpc19jbGllbnQueG1sPC91c2VyaW5wdXQ+IGFuZCBzZWxlY3QgPG1lbnVjYXNjYWRlPg0KLTx1aWNvbnRyb2w+UnVuIEFzPC91aWNvbnRyb2w+PHVpY29udHJvbD5BbnQgQnVpbGQuLi48L3VpY29udHJvbD48L21lbnVjYXNjYWRlPjwvY21kPg0KLTwvc3RlcD4NCi08c3RlcD48Y21kPkluIHRoZSBkaWFsb2cgdGhhdCBvcGVucywgc2VsZWN0IHRoZSA8dWljb250cm9sPkpSRTwvdWljb250cm9sPiB0YWINCi1hbmQgc2VsZWN0IDx1aWNvbnRyb2w+UnVuIGluIHRoZSBzYW1lIEpSRSBhcyB0aGUgd29ya3NwYWNlPC91aWNvbnRyb2w+LjwvY21kPg0KLTxpbmZvPkNsaWNrIDx1aWNvbnRyb2w+QXBwbHk8L3VpY29udHJvbD4gYW5kIHRoZW4gY2xpY2sgPHVpY29udHJvbD5SdW48L3VpY29udHJvbD4uPC9pbmZvPg0KLTwvc3RlcD4NCi08c3RlcD48Y21kPk9uY2UgeW91ciBXZWIgc2VydmljZSBoYXMgYmVlbiBnZW5lcmF0ZWQgdGhlIGNvbnNvbGUgZGlzcGxheXMgYSA8dXNlcmlucHV0PkJ1aWxkDQotU3VjY2Vzc2Z1bDwvdXNlcmlucHV0PiBtZXNzYWdlLjwvY21kPjwvc3RlcD4NCi08L3N0ZXBzPg0KLTxyZXN1bHQ+VGhlIGZvbGxvd2luZyBmaWxlcyB3aWxsIGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBwbGFjZWQgaW4gdGhlIGR5bmFtaWMNCi1XZWIgcHJvamVjdCdzIFdlYkNvbnRlbnRcd3NkbCBmb2xkZXI6PHVsPg0KLTxsaT48aT5TZXJ2aWNlX25hbWU8L2k+U09BUC53c2RsIDwvbGk+DQotPC91bD5UaGUgZm9sbG93aW5nIGZpbGVzIHdpbGwgaGF2ZSBiZWVuIGNyZWF0ZWQgYW5kIHBsYWNlZCBpbiB0aGUgZHluYW1pYw0KLVdlYiBwcm9qZWN0J3MgV2ViQ29udGVudFxXRUItSU5GIGZvbGRlcjo8dWw+DQotPGxpPnVuZGVwbG95LndzZGQ8L2xpPg0KLTxsaT5kZXBsb3kud3NkZCA8L2xpPg0KLTwvdWw+VGhlIGZvbGxvd2luZyBmaWxlcyB3aWxsIGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBwbGFjZWQgdW5kZXIgdGhlIGR5bmFtaWMNCi1XZWIgcHJvamVjdCdzIHNyYyBmb2xkZXIuIERlcGVuZGluZyBvbiB0aGUgV1NETCBmaWxlIG9uIHdoaWNoIHRoZSBXZWIgc2VydmljZQ0KLWNsaWVudCBpcyBiYXNlZCwgdGhlIGZpbGVzIGZvciB5b3VyIFdlYiBzZXJ2aWNlIGNsaWVudCBtYXkgYmUgZGlmZmVyZW50Ojx1bD4NCi08bGk+PGk+U2VydmljZV9uYW1lPC9pPlByb3h5LmphdmE8L2xpPg0KLTxsaT5nZXQ8aT5TZXJ2aWNlX25hbWU8L2k+LmphdmE8L2xpPg0KLTxsaT5nZXQ8aT5TZXJ2aWNlX25hbWU8L2k+TG9jYXRvci5qYXZhPC9saT4NCi08bGk+Z2V0PGk+U2VydmljZV9uYW1lPC9pPlNvYXAuamF2YTwvbGk+DQotPGxpPmdldDxpPlNlcnZpY2VfbmFtZTwvaT5Tb2FwUHJveHkuamF2YTwvbGk+DQotPGxpPmdldDxpPlNlcnZpY2VfbmFtZTwvaT5Tb2FwU3R1Yi5qYXZhPC9saT4NCi08L3VsPiA8L3Jlc3VsdD4NCi08L3Rhc2tib2R5Pg0KLTwvdGFzaz4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvdHdid3NjbGllbnRhLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci90b3BpY3MvdHdid3NjbGllbnRhLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZWJkYjAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuZG9jLnVzZXIvdG9waWNzL3R3YndzY2xpZW50YS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJ0YXNrIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgY2xpZW50IHVzaW5nIEFudCB0YXNrcyIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJJZiB5b3UgaGF2ZSBhIFdTREwgZmlsZSB5b3UgY2FuIHVzZSBBbnQgdGhyb3VnaCB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UgdG8gZ2VuZXJhdGUgYSBXZWIgc2VydmljZSBjbGllbnQgdXNpbmcgdGhlIEF4aXMgcnVuLXRpbWUgZW52aXJvbm1lbnQuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IklmIHlvdSBoYXZlIGEgV1NETCBmaWxlIHlvdSBjYW4gdXNlIEFudCB0aHJvdWdoIHRoZSBFY2xpcHNlIHdvcmtzcGFjZSB0byBnZW5lcmF0ZSBhIFdlYiBzZXJ2aWNlIGNsaWVudCB1c2luZyB0aGUgQXhpcyBydW4tdGltZSBlbnZpcm9ubWVudC4iIC8+Ci08bWV0YSBjb250ZW50PSJBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIFdlYiBzZXJ2aWNlcyBjbGllbnQsIGNyZWF0aW5nIHdpdGggQW50IHRhc2tzLCBXZWIgc2VydmljZXMsIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgY3JlYXRpbmcgd2l0aCBBbnQgdGFza3MiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQsIFdlYiBzZXJ2aWNlcyBjbGllbnQsIGNyZWF0aW5nIHdpdGggQW50IHRhc2tzLCBXZWIgc2VydmljZXMsIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCwgY3JlYXRpbmcgd2l0aCBBbnQgdGFza3MiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90b3BpY3MvY3dzYXhpc2FudC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90b3BpY3MvcndzY2xpZW50YS5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InR3c2NsaWVudGEiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5DcmVhdGluZyBhbiBBeGlzIHJ1bnRpbWUgV2ViIHNlcnZpY2UgY2xpZW50IGZyb20gYSBXU0RMIGZpbGUKLXVzaW5nIGNvbW1hbmQgbGluZSB0b29sczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0idHdzY2xpZW50YSI+PGEgbmFtZT0idHdzY2xpZW50YSI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSBjbGllbnQgdXNpbmcgQW50IHRhc2tzPC9oMT4KLQotCi0KLQotPGRpdj48cD5JZiB5b3UgaGF2ZSBhIFdTREwgZmlsZSB5b3UgY2FuIHVzZSBBbnQgdGhyb3VnaCB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UKLXRvIGdlbmVyYXRlIGEgV2ViIHNlcnZpY2UgY2xpZW50IHVzaW5nIHRoZSBBeGlzIHJ1bi10aW1lIGVudmlyb25tZW50LjwvcD4KLQotPGRpdiBjbGFzcz0icCI+QmVmb3JlIGNyZWF0aW5nIHRoZSBXZWIgc2VydmljZSBjbGllbnQgeW91IG11c3Q6PHVsPgotPGxpPmNvbXBsZXRlIHRoZSBwcmVyZXF1aXNpdGVzIGxpc3RlZCBpbjogPGEgaHJlZj0iY3dzYXhpc2FudC5odG1sIiB0aXRsZT0iSWYgeW91IHByZWZlciBub3QgdG8gdXNlIHRoZSBXZWIgc2VydmljZSB3aXphcmQsIHlvdSBjYW4gdXNlIEFudCYjMTA7ZmlsZXMgdG8gY3JlYXRlIFdlYiBzZXJ2aWNlcyBhbmQgY2xpZW50cyB1c2luZyB0aGUgQXhpcyBydW50aW1lIGVudmlyb25tZW50LiYjMTA7VGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3MgY2FuIGJlIHJ1biBpbiB0d28gd2F5czogdGhyb3VnaCB0aGUgRWNsaXBzZSB3b3Jrc3BhY2UmIzEwO3VzaW5nIFJ1biBBcyAmZ3Q7IEFudCBCdWlsZC4uLiwgb3IgdGhleSBjYW4gYmUgcnVuIGhlYWRsZXNzIHRocm91Z2ggdGhlIGNvbW1hbmQgbGluZS4gT25jZSYjMTA7eW91IGhhdmUgY3JlYXRlZCB5b3VyIFdlYiBzZXJ2aWNlLCB5b3UgY2FuIHRoZW4gZGVwbG95IGl0IHRvIGEgc2VydmVyLCB0ZXN0JiMxMDtpdCwgYW5kIHB1Ymxpc2ggaXQgYXMgYSBidXNpbmVzcyBlbnRpdHkgb3IgYnVzaW5lc3Mgc2VydmljZS4iPkNyZWF0aW5nIEF4aXMgcnVudGltZSBlbnZpcm9ubWVudCBXZWIgc2VydmljZXMgYW5kIGNsaWVudHMgdXNpbmcgV2ViIHNlcnZpY2VzIEFudCB0YXNrczwvYT48L2xpPgotCi08bGk+Y3JlYXRlIG9yIGltcG9ydCBhIFdTREwgZmlsZSBpbnRvIHRoZSBkeW5hbWljIFdlYiBwcm9qZWN0IHlvdSBjcmVhdGVkLjwvbGk+Ci0KLTwvdWw+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+SW4gb3JkZXIgdG8gY3JlYXRlIHRoZSBXZWIgc2VydmljZSBjbGllbnQgeW91IG5lZWQgdG8gbW9kaWZ5IHRoZQotQW50IGZpbGUgYW5kIHRoZSBBbnQgcHJvcGVydGllcyBmaWxlLjwvZGl2PgotCi08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkVkaXQgdGhlIEFudCBmaWxlICg8a2JkIGNsYXNzPSJ1c2VyaW5wdXQiPmF4aXNfY2xpZW50LnhtbDwva2JkPikgdGhhdAoteW91IGltcG9ydGVkIGluIHRoZSBwcmVyZXF1aXNpdGUgc3RlcHMuIEVuc3VyZSB0aGF0IGl0IHBvaW50cyB0byB0aGUgY2xpZW50Ci1BbnQgcHJvcGVydGllcyBmaWxlOiBpdCBzaG91bGQgY29udGFpbiBhIGxpbmUgc3RhdGluZyA8a2JkIGNsYXNzPSJ1c2VyaW5wdXQiPiZsdDtwcm9wZXJ0eQotZmlsZT0iYXhpc19jbGllbnQucHJvcGVydGllcyIvJmd0Ozwva2JkPi48L3NwYW4+IFNhdmUgYW55IGNoYW5nZXMgdGhhdAoteW91IGhhdmUgbWFkZS48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkVkaXQgdGhlIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+YXhpc19jbGllbnQucHJvcGVydGllczwva2JkPiBmaWxlIHRoYXQKLXlvdSBpbXBvcnRlZCBpbiB0aGUgcHJlcmVxdWlzaXRlIHN0ZXBzLjwvc3Bhbj4KLTxvbCB0eXBlPSJhIj4KLTxsaT48c3Bhbj5FbnN1cmUgdGhhdCB0aGUgc2NlbmFyaW9UeXBlIHBhcmFtZXRlciBpcyBzZXQgdG8gY2xpZW50Ljwvc3Bhbj4KLTwvbGk+Ci0KLTxsaT48c3Bhbj5TZXQgdGhlIHdvcmtzcGFjZSBwYXJhbWV0ZXIgc28gdGhhdCBpdCBwb2ludHMgdG8gdGhlIGxvY2F0aW9uCi1vZiB5b3VyIFdTREwgZmlsZS48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkFsbCBvdGhlciBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbCBhbmQgc2hvdWxkIGJlIGRlbGV0ZWQgaWYgbm90Ci1leHBsaWNpdGx5IHNldC4gVGhlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgcmVtYWluaW5nIHBhcmFtZXRlcnMgd2lsbCBiZSByZXRyaWV2ZWQKLWZyb20gdGhlIGR5bmFtaWMgcHJvamVjdCBzZXR0aW5ncy4gRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldAotdGhlc2UgcGFyYW1ldGVycyByZWZlciB0bzogPGEgaHJlZj0icndzY2xpZW50YS5odG1sIiB0aXRsZT0iVGhlIGF4aXNfY2xpZW50LnByb3BlcnRpZXMgZmlsZSBpcyB1c2VkJiMxMDt0byBwYXNzIGRhdGEgdG8gdGhlIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3Mgd2hlbiBjcmVhdGluZyBhbiBBeGlzIFdlYiBzZXJ2aWNlJiMxMDtjbGllbnQuIFRoaXMgZmlsZSBzaG93cyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMuIj5BeGlzIFdlYiBzZXJ2aWNlIGNsaWVudCBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlPC9hPjwvc3Bhbj48L2xpPgotCi08L29sPgotCi0gU2F2ZSB0aGUgPGtiZCBjbGFzcz0idXNlcmlucHV0Ij5heGlzX2NsaWVudC5wcm9wZXJ0aWVzPC9rYmQ+IGZpbGUuCi08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPlJpZ2h0LWNsaWNrIDxrYmQgY2xhc3M9InVzZXJpbnB1dCI+YXhpc19jbGllbnQueG1sPC9rYmQ+IGFuZCBzZWxlY3QgPHNwYW4gY2xhc3M9Im1lbnVjYXNjYWRlIj4KLTxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlJ1biBBczwvc3Bhbj4gJmd0OyA8c3BhbiBjbGFzcz0idWljb250cm9sIj5BbnQgQnVpbGQuLi48L3NwYW4+PC9zcGFuPjwvc3Bhbj4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+SW4gdGhlIGRpYWxvZyB0aGF0IG9wZW5zLCBzZWxlY3QgdGhlIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkpSRTwvc3Bhbj4gdGFiCi1hbmQgc2VsZWN0IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlJ1biBpbiB0aGUgc2FtZSBKUkUgYXMgdGhlIHdvcmtzcGFjZTwvc3Bhbj4uPC9zcGFuPgotIENsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFwcGx5PC9zcGFuPiBhbmQgdGhlbiBjbGljayA8c3BhbiBjbGFzcz0idWljb250cm9sIj5SdW48L3NwYW4+LgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5PbmNlIHlvdXIgV2ViIHNlcnZpY2UgaGFzIGJlZW4gZ2VuZXJhdGVkIHRoZSBjb25zb2xlIGRpc3BsYXlzIGEgPGtiZCBjbGFzcz0idXNlcmlucHV0Ij5CdWlsZAotU3VjY2Vzc2Z1bDwva2JkPiBtZXNzYWdlLjwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj5UaGUgZm9sbG93aW5nIGZpbGVzIHdpbGwgaGF2ZSBiZWVuIGNyZWF0ZWQgYW5kIHBsYWNlZCBpbiB0aGUgZHluYW1pYwotV2ViIHByb2plY3QncyBXZWJDb250ZW50XHdzZGwgZm9sZGVyOjx1bD4KLTxsaT48ZW0+U2VydmljZV9uYW1lPC9lbT5TT0FQLndzZGwgPC9saT4KLQotPC91bD4KLVRoZSBmb2xsb3dpbmcgZmlsZXMgd2lsbCBoYXZlIGJlZW4gY3JlYXRlZCBhbmQgcGxhY2VkIGluIHRoZSBkeW5hbWljCi1XZWIgcHJvamVjdCdzIFdlYkNvbnRlbnRcV0VCLUlORiBmb2xkZXI6PHVsPgotPGxpPnVuZGVwbG95LndzZGQ8L2xpPgotCi08bGk+ZGVwbG95LndzZGQgPC9saT4KLQotPC91bD4KLVRoZSBmb2xsb3dpbmcgZmlsZXMgd2lsbCBoYXZlIGJlZW4gY3JlYXRlZCBhbmQgcGxhY2VkIHVuZGVyIHRoZSBkeW5hbWljCi1XZWIgcHJvamVjdCdzIHNyYyBmb2xkZXIuIERlcGVuZGluZyBvbiB0aGUgV1NETCBmaWxlIG9uIHdoaWNoIHRoZSBXZWIgc2VydmljZQotY2xpZW50IGlzIGJhc2VkLCB0aGUgZmlsZXMgZm9yIHlvdXIgV2ViIHNlcnZpY2UgY2xpZW50IG1heSBiZSBkaWZmZXJlbnQ6PHVsPgotPGxpPjxlbT5TZXJ2aWNlX25hbWU8L2VtPlByb3h5LmphdmE8L2xpPgotCi08bGk+Z2V0PGVtPlNlcnZpY2VfbmFtZTwvZW0+LmphdmE8L2xpPgotCi08bGk+Z2V0PGVtPlNlcnZpY2VfbmFtZTwvZW0+TG9jYXRvci5qYXZhPC9saT4KLQotPGxpPmdldDxlbT5TZXJ2aWNlX25hbWU8L2VtPlNvYXAuamF2YTwvbGk+Ci0KLTxsaT5nZXQ8ZW0+U2VydmljZV9uYW1lPC9lbT5Tb2FwUHJveHkuamF2YTwvbGk+Ci0KLTxsaT5nZXQ8ZW0+U2VydmljZV9uYW1lPC9lbT5Tb2FwU3R1Yi5qYXZhPC9saT4KLQotPC91bD4KLSA8L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08dWwgY2xhc3M9InVsbGlua3MiPgotPGxpIGNsYXNzPSJ1bGNoaWxkbGluayI+PHN0cm9uZz48YSBocmVmPSIuLi90b3BpY3MvcndzY2xpZW50YS5odG1sIj5BeGlzIFdlYiBzZXJ2aWNlIGNsaWVudCBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlPC9hPjwvc3Ryb25nPjxiciAvPgotVGhlIGF4aXNfY2xpZW50LnByb3BlcnRpZXMgZmlsZSBpcyB1c2VkIHRvIHBhc3MgZGF0YSB0byB0aGUgV2ViIHNlcnZpY2VzIEFudCB0YXNrcyB3aGVuIGNyZWF0aW5nIGFuIEF4aXMgV2ViIHNlcnZpY2UgY2xpZW50LiBUaGlzIGZpbGUgc2hvd3MgdGhlIGF2YWlsYWJsZSBvcHRpb25zLjwvbGk+Ci08L3VsPgotCi08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vdG9waWNzL2N3c2F4aXNhbnQuaHRtbCIgdGl0bGU9IklmIHlvdSBwcmVmZXIgbm90IHRvIHVzZSB0aGUgV2ViIHNlcnZpY2Ugd2l6YXJkLCB5b3UgY2FuIHVzZSBBbnQgZmlsZXMgdG8gY3JlYXRlIFdlYiBzZXJ2aWNlcyBhbmQgY2xpZW50cyB1c2luZyB0aGUgQXhpcyBydW50aW1lIGVudmlyb25tZW50LiBUaGUgV2ViIHNlcnZpY2VzIEFudCB0YXNrcyBjYW4gYmUgcnVuIGluIHR3byB3YXlzOiB0aHJvdWdoIHRoZSBFY2xpcHNlIHdvcmtzcGFjZSB1c2luZyBSdW4gQXMgJmd0OyBBbnQgQnVpbGQuLi4sIG9yIHRoZXkgY2FuIGJlIHJ1biBoZWFkbGVzcyB0aHJvdWdoIHRoZSBjb21tYW5kIGxpbmUuIE9uY2UgeW91IGhhdmUgY3JlYXRlZCB5b3VyIFdlYiBzZXJ2aWNlLCB5b3UgY2FuIHRoZW4gZGVwbG95IGl0IHRvIGEgc2VydmVyLCB0ZXN0IGl0LCBhbmQgcHVibGlzaCBpdCBhcyBhIGJ1c2luZXNzIGVudGl0eSBvciBidXNpbmVzcyBzZXJ2aWNlLiI+Q3JlYXRpbmcgQXhpcyBydW50aW1lIGVudmlyb25tZW50IFdlYiBzZXJ2aWNlcyBhbmQgY2xpZW50cyB1c2luZyBXZWIgc2VydmljZXMgQW50IHRhc2tzPC9hPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3dzYXhpc2FudF90b2MuZGl0YW1hcCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3dzYXhpc2FudF90b2MuZGl0YW1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2YmZlZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci93c2F4aXNhbnRfdG9jLmRpdGFtYXAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNSwgdi40MDAyLS0+DQotPCFET0NUWVBFIG1hcCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBNYXAvL0VOIg0KLSAibWFwLmR0ZCI+DQotPG1hcCBhbmNob3JyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93ZWJzZXJ2aWNlX3RvYy5kaXRhbWFwI3dzYXhpc2FudCINCi1pZD0id3NheGlzYW50IiB0aXRsZT0id3NheGlzYW50Ij4NCi08dG9waWNyZWYgaHJlZj0idG9waWNzL2N3c2F4aXNhbnQuZGl0YSIgbmF2dGl0bGU9IkNyZWF0aW5nIEF4aXMgcnVudGltZSBXZWIgc2VydmljZXMgdXNpbmcgQW50IHRhc2tzIj4NCi08dG9waWNyZWYgaHJlZj0idG9waWNzL3R3YndzYS5kaXRhIiBuYXZ0aXRsZT0iQ3JlYXRpbmcgYSBXZWIgc2VydmljZSB1c2luZyBBbnQgdGFza3MgaW4gdGhlIFdvcmtiZW5jaCI+DQotPHRvcGljcmVmIGhyZWY9InRvcGljcy9ydGR3c2EuZGl0YSIgbmF2dGl0bGU9IlRvcC1kb3duIEF4aXMgV2ViIHNlcnZpY2UgQW50IGZpbGUgcmVmZXJlbmNlIj4NCi08L3RvcGljcmVmPg0KLTx0b3BpY3JlZiBocmVmPSJ0b3BpY3MvcmJ1d3NhLmRpdGEiIG5hdnRpdGxlPSJCb3R0b20tdXAgQXhpcyBXZWIgc2VydmljZSBBbnQgZmlsZSByZWZlcmVuY2UiPg0KLTwvdG9waWNyZWY+DQotPC90b3BpY3JlZj4NCi08dG9waWNyZWYgaHJlZj0idG9waWNzL3R3YndzY2xpZW50YS5kaXRhIiBuYXZ0aXRsZT0iQ3JlYXRpbmcgYSBXZWIgc2VydmljZSBjbGllbnQgdXNpbmcgQW50IHRhc2tzIGluIHRoZSBXb3JrYmVuY2giPg0KLTx0b3BpY3JlZiBocmVmPSJ0b3BpY3MvcndzY2xpZW50YS5kaXRhIiBuYXZ0aXRsZT0iQXhpcyBXZWIgc2VydmljZSBjbGllbnQgQW50IGZpbGUgcmVmZXJlbmNlIj4NCi08L3RvcGljcmVmPg0KLTwvdG9waWNyZWY+DQotPC90b3BpY3JlZj4NCi08L21hcD4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5kb2MudXNlci93c2F4aXNhbnRfdG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3dzYXhpc2FudF90b2MueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2Q4YWM2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyL3dzYXhpc2FudF90b2MueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC50b2MiPz4KLQotPHRvYyBsaW5rX3RvPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvd2Vic2VydmljZV90b2MueG1sI3dzYXhpc2FudCIgbGFiZWw9IndzYXhpc2FudCIgdG9waWM9InRvcGljcy9jd3NheGlzYW50Lmh0bWwiPgotPHRvcGljIGxhYmVsPSJDcmVhdGluZyBBeGlzIHJ1bnRpbWUgZW52aXJvbm1lbnQgV2ViIHNlcnZpY2VzIGFuZCBjbGllbnRzIHVzaW5nIFdlYiBzZXJ2aWNlcyBBbnQgdGFza3MiIGhyZWY9InRvcGljcy9jd3NheGlzYW50Lmh0bWwiPgotPHRvcGljIGxhYmVsPSJDcmVhdGluZyBhIFdlYiBzZXJ2aWNlIHVzaW5nIEFudCB0YXNrcyBpbiB0aGUgV29ya2JlbmNoIiBocmVmPSJ0b3BpY3MvdHdid3NhLmh0bWwiPgotPHRvcGljIGxhYmVsPSJUb3AtZG93biBBeGlzIFdlYiBzZXJ2aWNlIEFudCB0YXNrIHByb3BlcnRpZXMgZmlsZSByZWZlcmVuY2UiIGhyZWY9InRvcGljcy9ydGR3c2EuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJCb3R0b20tdXAgQXhpcyBXZWIgc2VydmljZSBBbnQgdGFzayBwcm9wZXJ0aWVzIGZpbGUgcmVmZXJlbmNlIiBocmVmPSJ0b3BpY3MvcmJ1d3NhLmh0bWwiLz4KLTwvdG9waWM+Ci08dG9waWMgbGFiZWw9IkNyZWF0aW5nIGEgV2ViIHNlcnZpY2UgY2xpZW50IHVzaW5nIEFudCB0YXNrcyIgaHJlZj0idG9waWNzL3R3YndzY2xpZW50YS5odG1sIj4KLTx0b3BpYyBsYWJlbD0iQXhpcyBXZWIgc2VydmljZSBjbGllbnQgQW50IHRhc2sgcHJvcGVydGllcyBmaWxlIHJlZmVyZW5jZSIgaHJlZj0idG9waWNzL3J3c2NsaWVudGEuaHRtbCIvPgotPC90b3BpYz4KLTwvdG9waWM+Ci08L3RvYz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvLmN2c2lnbm9yZSBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE0NDg3Yy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5pbmZvcG9wLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1idWlsZC54bWwKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvLnByb2plY3QgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5pbmZvcG9wLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWI4M2ZlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcDwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9kb2NzL29yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5pbmZvcG9wL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2I2MzcyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVwbHVnaW5OYW1lCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcDsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjEwMC5xdWFsaWZpZXIKLUJ1bmRsZS1WZW5kb3I6ICVwbHVnaW5Qcm92aWRlcgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC9hYm91dC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC9idWlsZC5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjE2Njc0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIHdzdC1jb21tYW5kLWYxLnhtbCxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMKLXNyYy5pbmNsdWRlcyA9IGJ1aWxkLnByb3BlcnRpZXMKLWdlbmVyYXRlU291cmNlQnVuZGxlPWZhbHNlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC9wbHVnaW4ucHJvcGVydGllcyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZWVmNjIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotISBwbHVnLWluIHByb3BlcnRpZXMKLXBsdWdpbk5hbWUgICAgID0gV2ViIHNlcnZpY2VzIFVJCi1wbHVnaW5Qcm92aWRlciA9IEVjbGlwc2Uub3JnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC9wbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODcwYzA1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3AvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+IAotPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgotPHBsdWdpbj4KLQk8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLmNvbnRleHRzIj4KLQkJPGNvbnRleHRzIGZpbGU9IndzdC1jb21tYW5kLWYxLnhtbCIgcGx1Z2luPSJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWkiLz4KLQk8L2V4dGVuc2lvbj4KLTwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmluZm9wb3Avd3N0LWNvbW1hbmQtZjEueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC93c3QtY29tbWFuZC1mMS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNjNjNjQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuaW5mb3BvcC93c3QtY29tbWFuZC1mMS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC5jb250ZXh0cyI/PgotPGNvbnRleHRzPgotCi08IS0tb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLS0+Ci08Y29udGV4dCBpZD0iUFBBRDAwMDEiPgotPCEtLUFjdGlvbiBEaWFsb2dzIFByZWZlcmVuY2UgUGFnZS0tPgotPGRlc2NyaXB0aW9uPllvdSBjYW4gdXNlIHRoaXMgcGFnZSB0byBjaG9vc2Ugd2hpY2ggV2ViIHNlcnZpY2VzIHBvcHVwIGFjdGlvbnMgYXJlIGRpc3BsYXllZCBvciBoaWRkZW4uIFdoZW4gdXNpbmcgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmRzIGxhdW5jZWQgZnJvbSBhIHBvcHVwIG1lbnUgeW91IG1heSBzZWUgYSBjaGVjayBib3ggdGhhdCBnaXZlcyB5b3UgdGhlIG9wdGlvbiBvZiBoaWRpbmcgdGhlIHBvcHVwIGFjdGlvbiB0aGF0IHlvdSBoYXZlIGp1c3QgcGVyZm9ybWVkLiBJZiB5b3Ugc2VsZWN0IHRoYXQgY2hlY2tib3ggaXQgd2lsbCBzZWxlY3QgdGhlIHJlc3BlY3RpdmUgY2hlY2tib3ggb24gdGhpcyBwcmVmZXJlbmNlIHBhZ2UuIElmIHlvdSBoYXZlIGNob3NlbiB0byBoaWRlIGEgcG9wdXAgYWN0aW9uIHRoYXQgeW91IHdhbnQgdG8gZGlzcGxheSB1c2UgdGhpcyBwYWdlIHRvIG1ha2UgdGhlIHBvcHVwIGFjdGlvbiB2aXNpYmxlLgotPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBQQUQwMDAyIj4KLTwhLS1zaG93IGFsbCBjaGVjayBib3ggb24gdGhlIEFjdGlvbiBEaWFsb2dzIFByZWZlcmVuY2UgUGFnZS0tPgotPGRlc2NyaXB0aW9uPkJ5IHNlbGVjdGluZyB0aGlzIGNoZWNrYm94LCBhbGwgdmFsaWQgV2ViIHNlcnZpY2VzIHBvcHVwIGFjdGlvbnMgd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiB5b3Ugc2VsZWN0IGEgZmlsZSBpbiB5b3VyIHdvcmtzcGFjZSBhbmQgcmlnaHQtY2xpY2sgaXQuIEFsdGVybmF0ZWx5IHlvdSBjYW4gc2VsZWN0IHRvIGRpc3BsYXkgb3IgaGlkZSBpbmRpdmlkdWFsIHBvcHVwIGFjdGlvbnMuCi08L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFBBRDAwMDMiPgotPCEtLWhpZGUgYWxsIGNoZWNrIGJveCBvbiB0aGUgQWN0aW9uIERpYWxvZ3MgUHJlZmVyZW5jZSBQYWdlLS0+Ci08ZGVzY3JpcHRpb24+Qnkgc2VsZWN0aW5nIHRoaXMgY2hlY2tib3gsIGFsbCBXZWIgc2VydmljZXMgcG9wdXAgYWN0aW9ucyB3aWxsIGJlIGhpZGRlbiB3aGVuIHlvdSBzZWxlY3QgYSBmaWxlIGluIHlvdXIgd29ya3NwYWNlIGFuZCByaWdodC1jbGljayBpdC4gQWx0ZXJuYXRlbHkgeW91IGNhbiBzZWxlY3QgdG8gZGlzcGxheSBvciBoaWRlIGluZGl2aWR1YWwgcG9wdXAgYWN0aW9ucy4KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJUV1AwMDAxIj4KLTwhLS1zaG93L2hpZGUgY2hlY2sgYm94LS0+Ci08ZGVzY3JpcHRpb24+V2hlbiB1c2luZyB0aGUgV2ViIHNlcnZpY2VzIHdpemFyZHMgbGF1bmNlZCBmcm9tIGEgcG9wdXAgbWVudSwgdGhpcyBjaGVjayBib3ggdGhhdCBnaXZlcyB5b3UgdGhlIG9wdGlvbiBvZiBoaWRpbmcgdGhlIHBvcHVwIGFjdGlvbiB0aGF0IHlvdSBoYXZlIGp1c3QgcGVyZm9ybWVkLiBJZiB5b3Ugc2VsZWN0IHRoZSBjaGVja2JveCBpdCB3aWxsIHNlbGVjdCB0aGUgcmVzcGVjdGl2ZSBjaGVja2JveCBvbiB0aGUgV2ViIHNlcnZpY2VzID4gUG9wdXAgRGlhbG9nIFNlbGVjdGlvbiBwcmVmZXJlbmNlIHBhZ2UuIElmIHlvdSBoYXZlIGNob3NlbiB0byBoaWRlIGEgcG9wdXAgYWN0aW9uIHRoYXQgeW91IHdhbnQgdG8gZGlzcGxheSwgZ28gdG8gV2luZG93ID4gUHJlZmVyZW5jZXMgPiBXZWIgc2VydmljZXMgPiBQb3B1cCBEaWFsb2cgU2VsZWN0aW9uLCBhbmQgdXNlIHRoaXMgcGFnZSB0byBtYWtlIHRoZSBwb3B1cCBhY3Rpb24gdmlzaWJsZS4KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTwvY29udGV4dHM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy8ucHJvamVjdCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzOGNjYTQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MDUyZTAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJXBsdWdpbk5hbWUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jOyBzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuMS5xdWFsaWZpZXIKLUJ1bmRsZS1WZW5kb3I6ICVwcm92aWRlck5hbWUgCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLUJ1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2Fib3V0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2Jvb2suY3NzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9ib29rLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRkODg4MC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2Jvb2suY3NzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQGltcG9ydCAiLi4vUFJPRFVDVF9QTFVHSU4vYm9vay5jc3MiOwpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9idWlsZC5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjAxMjZjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IC4sXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgamF2YWRvY3RvYy54bWwsXAotICAgICAgICAgICAgICAgcmVmZXJlbmNlLyxcCi0gICAgICAgICAgICAgICB0b3BpY3NfUmVmZXJlbmNlLnhtbCxcCi0gICAgICAgICAgICAgICB0b3BpY3NfRXh0UG9pbnRfUmVmZXJlbmNlLnhtbCxcCi0gICAgICAgICAgICAgICBub3RpY2VzLmh0bWwsXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICBib29rLmNzcyxcCi0gICAgICAgICAgICAgICBzY2hlbWEuY3NzCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2J1aWxkRXh0RG9jcy5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9idWlsZEV4dERvY3MucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg1OTJhYi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2J1aWxkRXh0RG9jcy5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBJbmZvcm1hdGlvbiBmb3IgZXh0ZW5zaW9uIHBvaW50IG92ZXJ2aWV3IGRvY3VtZW50Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIE92ZXJ2aWV3IGRvY3VtZW50IHRpdGxlCi10aXRsZSA9IFdlYlNlcnZpY2VzIEV4dGVuc2lvbiBQb2ludHMKLWhlYWRlciA9IFdlYlNlcnZpY2VzIEV4dGVuc2lvbiBQb2ludHMgCi0jIEludHJvZHVjdGlvbiBwYXJhZ3JhcGgKLW92ZXJ2aWV3ID0gVGhlIGZvbGxvd2luZyBleHRlbnNpb24gcG9pbnRzIGNhbiBiZSB1c2VkIHRvIGV4dGVuZCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBXU1QgV2ViIHNlcnZpY2VzIGluZnJhc3RydWN0dXJlOiAKLQotIyBBIGxpc3Qgb2YgdGhlIGV4dGVuc2lvbiBwb2ludHMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlCi0jIGV4dGVuc2lvbiBwb2ludCBkb2N1bWVudGF0aW9uLgotbGlzdGVkLWV4dC1wb2ludHM9b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnNlcnZpY2VQb2xpY3ksXAotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2VzLnBvbGljeS51aS5zZXJ2aWNlUG9saWN5dWkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2J1aWxkRXh0RG9jcy54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2J1aWxkRXh0RG9jcy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYjNlZGYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9idWlsZEV4dERvY3MueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0IG5hbWU9IkJ1aWxkIEV4dGVuc2lvbiBQb2ludCBEb2N1bWVudGF0aW9uIiBkZWZhdWx0PSJjcmVhdGVFeHREb2NzIiBiYXNlZGlyPSIuIj4KLQotCTxwcm9wZXJ0eSBmaWxlPSJidWlsZEV4dERvY3MucHJvcGVydGllcyIvPgotCTxwcm9wZXJ0eSBuYW1lPSJvdXRwdXREaXIiIHZhbHVlPSIke2Jhc2VkaXJ9Ii8+Ci0gICAgPHByb3BlcnR5IG5hbWU9ImFwaW91dHB1dERpciIgdmFsdWU9IiR7b3V0cHV0RGlyfSR7ZmlsZS5zZXBhcmF0b3J9cmVmZXJlbmNlJHtmaWxlLnNlcGFyYXRvcn1leHQiLz4KLQotCTx0YXJnZXQgbmFtZT0iY3JlYXRlRXh0RG9jcyIgZGVwZW5kcz0iYnVpbGRFeHREb2NzLCBjcmVhdGVEb2NMaXN0aW5ncyIvPgotCQotCTx0YXJnZXQgbmFtZT0iYnVpbGRFeHREb2NzIiBkZXBlbmRzPSJidWlsZEpTRkV4dERvY3MiLz4KLQkJCi0gCTx0YXJnZXQgbmFtZT0iYnVpbGRKU0ZFeHREb2NzIj4KLSAJCQotIAkJPCEtLSBjbGVhbnVwIG9sZCAtLT4KLSAJCTxkZWxldGU+Ci0gCSAJCTxmaWxlc2V0IGRpcj0iJHthcGlvdXRwdXREaXJ9IiBjYXNlc2Vuc2l0aXZlPSJ5ZXMiIGlkPSJleHQtZG9jcy1saXN0LWVudCI+Ci0gCSAJCQk8aW5jbHVkZSBuYW1lPSIqLmh0bWwiLz4KLSAJCQk8L2ZpbGVzZXQ+Ci0gCQk8L2RlbGV0ZT4KLSAJCQotIAkJPCEtLSBnZW5lcmF0ZSBuZXcgaHRtbCBmcm9tIGV4dC1wdCBzY2hlbWFzIC0tPgotIAkJPHBkZS5jb252ZXJ0U2NoZW1hVG9IVE1MIG1hbmlmZXN0PSIuLi9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kvcGx1Z2luLnhtbCIgZGVzdGluYXRpb249IiR7YXBpb3V0cHV0RGlyfSIgLz4KLSAJCTxwZGUuY29udmVydFNjaGVtYVRvSFRNTCBtYW5pZmVzdD0iLi4vb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpL3BsdWdpbi54bWwiIGRlc3RpbmF0aW9uPSIke2FwaW91dHB1dERpcn0iIC8+Ci0gCQkKLSAJCTwhLS0gR2V0IHRoZSBsaXN0IG9mIGV4dGVuc2lvbiBkb2MgZmlsZXMuIC0tPgotIAkJPGZpbGVzZXQgZGlyPSIke2FwaW91dHB1dERpcn0iIGNhc2VzZW5zaXRpdmU9InllcyIgaWQ9ImV4dC1kb2NzLWxpc3QtZW50IiA+Ci0gCQkJPGluY2x1ZGUgbmFtZT0iKi5odG1sIi8+Ci0JCTwvZmlsZXNldD4KLSAJCQotIAkJPCEtLSBDb252ZXJ0IHRoZSBsaXN0IHRvIGFuIFhNTCByZXByZXNlbnRhdGlvbi4gLS0+Ci0gCQk8cGF0aGNvbnZlcnQgcHJvcGVydHk9ImV4dC1kb2MtZW50IiByZWZpZD0iZXh0LWRvY3MtbGlzdC1lbnQiIHBhdGhzZXA9IiZsdDsvZmlsZSZndDsvbi9uJmx0O2ZpbGUmZ3Q7IiA+Ci0gCQkJPG1hcCBmcm9tPSIke2FwaW91dHB1dERpcn0ke2ZpbGUuc2VwYXJhdG9yfSIgdG89IiIvPgotIAkJPC9wYXRoY29udmVydD4KLSAJCTxlY2hvIGZpbGU9ImV4dGRvY3MueG1sIj4mbHQ7ZmlsZXMgY29tcG9uZW50PSJ3ZWJzZXJ2aWNlIiZndDsmbHQ7ZmlsZSZndDske2V4dC1kb2MtZW50fSZsdDsvZmlsZSZndDsmbHQ7L2ZpbGVzJmd0OzwvZWNobz4KLSAJCSAJCQkJCQkKLSAJPC90YXJnZXQ+Ci0JCi0JPHRhcmdldCBuYW1lPSJjcmVhdGVEb2NMaXN0aW5ncyI+Ci0JCTxkZWxldGUgZmlsZT0iJHthcGlvdXRwdXREaXJ9JHtmaWxlLnNlcGFyYXRvcn1pbmRleC5odG1sIi8+Ci0JCTwhLS0gQ3JlYXRlIHRoZSBvdmVydmlldyBkb2N1bWVudC4gLS0+Ci0JCTx4c2x0IGJhc2VkaXI9IiR7YmFzZWRpcn0iIGluPSJleHREb2NMaXN0aW5ncy54bWwiIG91dD0iJHthcGlvdXRwdXREaXJ9JHtmaWxlLnNlcGFyYXRvcn1pbmRleC5odG1sIiBzdHlsZT0iZXh0RG9jT3ZlcnZpZXcueHNsIj4KLQkgIAkJPHBhcmFtIG5hbWU9InRpdGxlIiBleHByZXNzaW9uPSIke3RpdGxlfSIvPgotCSAgCQk8cGFyYW0gbmFtZT0iaGVhZGVyIiBleHByZXNzaW9uPSIke2hlYWRlcn0iLz4KLQkgIAkJPHBhcmFtIG5hbWU9Im92ZXJ2aWV3IiBleHByZXNzaW9uPSIke292ZXJ2aWV3fSIvPgotCQkJPHBhcmFtIG5hbWU9Imxpc3RlZC1leHQtcG9pbnRzIiBleHByZXNzaW9uPSIke2xpc3RlZC1leHQtcG9pbnRzfSIvPgotCQk8L3hzbHQ+Ci0JCQkKLQkJPCEtLSBDcmVhdGUgdGhlIGV4dGVudGlvbiBwb2ludCB0b2MuIC0tPgotCQk8eHNsdCBiYXNlZGlyPSIke2Jhc2VkaXJ9IiBpbj0iZXh0RG9jTGlzdGluZ3MueG1sIiBvdXQ9InRvcGljc19FeHRQb2ludF9SZWZlcmVuY2UueG1sIiBzdHlsZT0iZXh0RG9jVG9jLnhzbCI+Ci0JCQk8cGFyYW0gbmFtZT0ibGlzdGVkLWV4dC1wb2ludHMiIGV4cHJlc3Npb249IiR7bGlzdGVkLWV4dC1wb2ludHN9Ii8+Ci0JCQk8b3V0cHV0cHJvcGVydHkgbmFtZT0ibWV0aG9kIiB2YWx1ZT0ieG1sIi8+Ci0JCQk8b3V0cHV0cHJvcGVydHkgbmFtZT0iaW5kZW50IiB2YWx1ZT0ieWVzIi8+Ci0JCTwveHNsdD4KLQkJCQotCTwvdGFyZ2V0PgotPC9wcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvYnVpbGRKYXZhZG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvYnVpbGRKYXZhZG9jLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NiZWU2My4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2J1aWxkSmF2YWRvYy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPHByb2plY3QKLSAgICBuYW1lPSJqYXZhZG9jIgotICAgIGRlZmF1bHQ9Im1haW4iCi0gICAgYmFzZWRpcj0iLiI+Ci0JCi0gICAgPHByb3BlcnR5Ci0gICAgICAgIG5hbWU9ImJ1aWxkRGlyZWN0b3J5IgotICAgICAgICB2YWx1ZT0iJHtiYXNlZGlyfS8uLi8uLiIgLz4KLQotICAgIDwhLS0gPSA9ID0gc3RhbmRhcmQgcHJvcGVydGllcyBwYXR0ZXJuID0gPSA9IC0tPgotICAgIDwhLS0gCi0gICAgICAgIEZpcnN0IGdldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAgICAgICAgTm90ZSB0byBiZSBjcm9zcy1wbGF0Zm9ybSwgImVudmlyb25tZW50IHZhcmlhYmxlcyIgYXJlIG9ubHkgYXBwcm9wcmlhdGUgZm9yIAotICAgICAgICBzb21lIHZhcmlhYmxlcywgZS5nLiBvbmVzIHdlIHNldCwgc2luY2UgcHJvcGVydGllcyBhcmUgY2FzZSBzZW5zaXRpdmUsIGV2ZW4gaWYgCi0gICAgICAgIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb24geW91ciBvcGVyYXRpbmcgc3lzdGVtIGFyZSBub3QsIGUuZy4gaXQgd2lsbCAKLSAgICAgICAgYmUgJHtlbnYuUGF0aH0gbm90ICR7ZW52LlBBVEh9IG9uIFdpbmRvd3MgLS0+Ci0gICAgPHByb3BlcnR5IGVudmlyb25tZW50PSJlbnYiIC8+Ci0KLSAgICA8IS0tIAotICAgICAgICBMZXQgdXNlcnMgb3ZlcnJpZGUgc3RhbmRhcmQgcHJvcGVydGllcywgaWYgZGVzaXJlZC4KLSAgICAgICAgSWYgdGhpcyBkaXJlY3RvcnkvZmlsZXMgZG9lcyBub3QgZXhpc3QsIHRoZW4gaXQgd2lsbCBiZSBpZ25vcmVkLCAKLSAgICAgICAgYW5kIGRlZmF1bHRzIHVzZWQuCi0gICAgLS0+Ci0gICAgPHByb3BlcnR5Ci0gICAgICAgIGZpbGU9IiR7ZW52LkxPQ0FMX0JVSUxEX1BST1BFUlRJRVNfRElSfS8ke2FudC5wcm9qZWN0Lm5hbWV9LnByb3BlcnRpZXMiIC8+Ci0KLQotCi0gICAgPHByb3BlcnR5IGZpbGU9ImphdmFkb2MucHJvcGVydGllcyIgLz4KLSAgICA8cHJvcGVydHkKLSAgICAgICAgbmFtZT0ib3V0cHV0RGlyIgotICAgICAgICB2YWx1ZT0iJHtiYXNlZGlyfSIgLz4KLQotICAgIDx0YXJnZXQKLSAgICAgICAgbmFtZT0ibWFpbiIKLSAgICAgICAgZGVwZW5kcz0iamF2YWRvYywgcGFja2FnZXRvYyIKLSAgICAgICAgZGVzY3JpcHRpb249IkJ1aWxkcyBQbHVnaW4gSmF2YWRvYyIgLz4KLQotICAgIDx0YXJnZXQKLSAgICAgICAgbmFtZT0iamF2YWRvYyIKLSAgICAgICAgZGVwZW5kcz0iZ2V0U2tpcEphdmFEb2NQYXJhbSIKLSAgICAgICAgdW5sZXNzPSJkb3NraXBKYXZhRG9jIj4KLSAgICAJPGVjaG8gbWVzc2FnZT0iYmFzZWRpcjogJHtiYXNlZGlyfSIgLz4KLSAgICAJPGVjaG8gbWVzc2FnZT0ib3V0cHV0ZGlyOiAke291dHB1dERpcn0iIC8+Ci0gICAgICAgIDxlY2hvIG1lc3NhZ2U9ImNsYXNzcGF0aDogJHtKMlNFLTEuNX0iIC8+Ci0gICAgICAgIDxlY2hvIG1lc3NhZ2U9ImJ1aWxkRGlyZWN0b3J5OiAke2J1aWxkRGlyZWN0b3J5fSIgLz4KLQotICAgICAgICA8amF2YWRvYwotICAgICAgICAgICAgYWNjZXNzPSJwdWJsaWMiCi0gICAgICAgICAgICBhdXRob3I9ImZhbHNlIgotICAgICAgICAgICAgZGVzdGRpcj0iJHtvdXRwdXREaXJ9L3JlZmVyZW5jZS9hcGkiCi0gICAgICAgICAgICBkb2N0aXRsZT0iJHthcGkudGl0bGV9IgotICAgICAgICAgICAgbm9kZXByZWNhdGVkPSJmYWxzZSIKLSAgICAgICAgICAgIG5vZGVwcmVjYXRlZGxpc3Q9ImZhbHNlIgotICAgICAgICAgICAgbm9pbmRleD0iZmFsc2UiCi0gICAgICAgICAgICBub25hdmJhcj0iZmFsc2UiCi0gICAgICAgICAgICBub3RyZWU9ImZhbHNlIgotICAgICAgICAgICAgRW5jb2Rpbmc9IklTTy04ODU5LTEiCi0gICAgICAgICAgICBwYWNrYWdlbmFtZXM9IiR7YXBpLnBhY2thZ2VzfSIKLSAgICAgICAgICAgIHNvdXJjZXBhdGg9IiR7cGx1Z2luLnNvdXJjZWZvbGRlcnN9IgotICAgICAgICAgICAgc3BsaXRpbmRleD0idHJ1ZSIKLSAgICAgICAgICAgIHVzZT0idHJ1ZSIKLSAgICAgICAgICAgIHZlcnNpb249InRydWUiCi0gICAgICAgICAgICBicmVha2l0ZXJhdG9yPSJ5ZXMiCi0gICAgICAgICAgICB2ZXJib3NlPSJmYWxzZSIKLSAgICAgICAgCWNsYXNzcGF0aD0iIgotICAgICAgICAgICAgZmFpbG9uZXJyb3I9ImZhbHNlIj4KLSAgICAgICAgCQotICAgICAgICAgICAgPGNsYXNzcGF0aD4KLSAgICAgICAgICAgICAgICA8ZmlsZXNldCBkaXI9IiR7YnVpbGREaXJlY3Rvcnl9L3BsdWdpbnMiPgotICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZSBuYW1lPSIqKi8qLmphciIgLz4KLSAgICAgICAgICAgICAgICA8L2ZpbGVzZXQ+Ci0gICAgICAgICAgICA8L2NsYXNzcGF0aD4KLSAgICAgICAgICAgIAotCi0gICAgICAgIDwvamF2YWRvYz4KLSAgICA8L3RhcmdldD4KLQotICAgIDx0YXJnZXQgbmFtZT0icGFja2FnZXRvYyI+Ci0gICAgICAgIDxsb2FkZmlsZQotICAgICAgICAgICAgZmFpbG9uZXJyb3I9ImZhbHNlIgotICAgICAgICAgICAgcHJvcGVydHk9Ind0cC5wYWNrYWdlcyIKLSAgICAgICAgICAgIHNyY0ZpbGU9IiR7b3V0cHV0RGlyfS9yZWZlcmVuY2UvYXBpL3BhY2thZ2UtbGlzdCI+Ci0gICAgICAgICAgICA8ZmlsdGVyY2hhaW4+Ci0gICAgICAgICAgICAgICAgPGZpbHRlcnJlYWRlcgotICAgICAgICAgICAgICAgICAgICBjbGFzc25hbWU9Im9yZy5hcGFjaGUudG9vbHMuYW50LmZpbHRlcnMuUHJlZml4TGluZXMiPgotICAgICAgICAgICAgICAgICAgICA8cGFyYW0KLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InByZWZpeCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSImbHQ7L3BhY2thZ2UmZ3Q7Jmx0O3BhY2thZ2UmZ3Q7IiAvPgotICAgICAgICAgICAgICAgIDwvZmlsdGVycmVhZGVyPgotICAgICAgICAgICAgICAgIDxzdHJpcGxpbmVicmVha3MgLz4KLSAgICAgICAgICAgIDwvZmlsdGVyY2hhaW4+Ci0gICAgICAgIDwvbG9hZGZpbGU+Ci0KLSAgICAgICAgPCEtLSBDcmVhdGUgcGFja2FnZXMueG1sIGZpbGUgLS0+Ci0gICAgICAgIDxlY2hvIGZpbGU9InBhY2thZ2VzLnhtbCI+Ci0gICAgICAgICAgICAmbHQ7cGFja2FnZXMmZ3Q7Jmx0O3BhY2thZ2UmZ3Q7JHt3dHAucGFja2FnZXN9Jmx0Oy9wYWNrYWdlJmd0OyZsdDsvcGFja2FnZXMmZ3Q7Ci0gICAgICAgIDwvZWNobz4KLQotICAgICAgICA8eHNsdAotICAgICAgICAgICAgYmFzZWRpcj0iJHtiYXNlZGlyfS9idWlsZCIKLSAgICAgICAgICAgIGluPSJwYWNrYWdlcy54bWwiCi0gICAgICAgICAgICBvdXQ9ImphdmFkb2N0b2MueG1sIgotICAgICAgICAgICAgc3R5bGU9ImphdmFkb2NUb2MueHNsIj4KLSAgICAgICAgICAgIDxvdXRwdXRwcm9wZXJ0eQotICAgICAgICAgICAgICAgIG5hbWU9Im1ldGhvZCIKLSAgICAgICAgICAgICAgICB2YWx1ZT0ieG1sIiAvPgotICAgICAgICAgICAgPG91dHB1dHByb3BlcnR5Ci0gICAgICAgICAgICAgICAgbmFtZT0iaW5kZW50IgotICAgICAgICAgICAgICAgIHZhbHVlPSJ5ZXMiIC8+Ci0gICAgICAgIDwveHNsdD4KLSAgICA8L3RhcmdldD4KLSAgICAKLSAgICA8dGFyZ2V0Ci0gICAgICAgIG5hbWU9ImdldFNraXBKYXZhRG9jUGFyYW0iCi0gICAgICAgIGlmPSJza2lwSmF2YURvYyI+Ci0gICAgICAgIDxlY2hvIG1lc3NhZ2U9InNraXBKYXZhRG9jOiAke3NraXBKYXZhRG9jfSIgLz4KLSAgICAgICAgPGNvbmRpdGlvbiBwcm9wZXJ0eT0iZG9za2lwSmF2YURvYyI+Ci0gICAgICAgICAgICA8ZXF1YWxzCi0gICAgICAgICAgICAgICAgYXJnMT0iJHtza2lwSmF2YURvY30iCi0gICAgICAgICAgICAgICAgYXJnMj0idHJ1ZSIKLSAgICAgICAgICAgICAgICB0cmltPSJ0cnVlIgotICAgICAgICAgICAgICAgIGNhc2VzZW5zaXRpdmU9ImZhbHNlIiAvPgotICAgICAgICA8L2NvbmRpdGlvbj4KLSAgICA8L3RhcmdldD4KLTwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2V4dERvY0xpc3RpbmdzLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvZXh0RG9jTGlzdGluZ3MueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGNkOWRkLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvZXh0RG9jTGlzdGluZ3MueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNvbXBvbmVudHM+Ci0JPGNvbXBvbmVudCBuYW1lPSJXZWIgc2VydmljZSBBUEkiIGlkPSJ3ZWJzZXJ2aWNlIiBmaWxlPSJleHRkb2NzLnhtbCIvPgotPC9jb21wb25lbnRzPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9leHREb2NPdmVydmlldy54c2wgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2V4dERvY092ZXJ2aWV3LnhzbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdhYjJjNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2V4dERvY092ZXJ2aWV3LnhzbAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCi0gICAgdmVyc2lvbj0iMS4wIgotICAgIHhtbG5zOnhhbGFuPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveHNsdCI+Ci0gICAgPHhzbDpwYXJhbSBuYW1lPSJ0aXRsZSIvPgotICAgIDx4c2w6cGFyYW0gbmFtZT0iaGVhZGVyIi8+Ci0gICAgPHhzbDpwYXJhbSBuYW1lPSJvdmVydmlldyIvPgotICAgIDx4c2w6cGFyYW0gbmFtZT0ibGlzdGVkLWV4dC1wb2ludHMiLz4KLSAgICAKLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb21wb25lbnRzIj4KLSAgICAJCi0gICAgCTx4c2w6dGV4dCBkaXNhYmxlLW91dHB1dC1lc2NhcGluZz0ieWVzIj4KLSAgICAJJmx0OyFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUUkFOU0lUSU9OQUwvL0VOIiZndDsKLQkJPC94c2w6dGV4dD4KLQkJPGh0bWw+Ci0JCTxoZWFkPgotCQk8eHNsOnRleHQgZGlzYWJsZS1vdXRwdXQtZXNjYXBpbmc9InllcyI+Ci0JCSZsdDttZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBUaGlzIHBhZ2UgaXMgbWFkZSBhdmFpbGFibGUgdW5kZXIgbGljZW5zZS4gRm9yIGZ1bGwgZGV0YWlscyBzZWUgdGhlIExFR0FMIGluIHRoZSBkb2N1bWVudGF0aW9uIGJvb2sgdGhhdCBjb250YWlucyB0aGlzIHBhZ2UuIiAmZ3Q7Ci0KLSAgIAkJJmx0O21ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSImZ3Q7Ci0gICAJCTwveHNsOnRleHQ+Ci0gICAJCTx0aXRsZT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iJHRpdGxlIi8+PC90aXRsZT4KLSAgIAkJPHhzbDp0ZXh0IGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMiPgotCQkmbHQ7TElOSyBSRUw9IlNUWUxFU0hFRVQiIEhSRUY9Ii4uLy4uL2Jvb2suY3NzIiBDSEFSU0VUPSJJU08tODg1OS0xIiBUWVBFPSJ0ZXh0L2NzcyImZ3Q7Ci0JCTwveHNsOnRleHQ+Ci0JCTwvaGVhZD4KLQkJPGJvZHkgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4MDAwODAiPgotCi0JCTxjZW50ZXI+Ci0JCTxoMT48eHNsOnZhbHVlLW9mIHNlbGVjdD0iJGhlYWRlciIvPjwvaDE+Ci0JCTwvY2VudGVyPgotCi0JCTx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkb3ZlcnZpZXciLz4KLSAgICAJPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImNvbXBvbmVudCI+Ci0gICAgCQk8eHNsOnNvcnQgc2VsZWN0PSJAaWQiLz4KLSAgICAJCTxoMz48YSBuYW1lPSJ7QGlkfSI+PC9hPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJAbmFtZSIvPjwvaDM+Ci0gICAgCQk8dWw+Ci0gICAgCQkJPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImRvY3VtZW50KEBmaWxlKS9maWxlcy9maWxlIj4KLSAgICAJCQkJPHhzbDpzb3J0IHNlbGVjdD0idGV4dCgpIi8+Ci0gICAgCQkJCTwhLS0gPHhzbDppZiB0ZXN0PSJjb250YWlucygkbGlzdGVkLWV4dC1wb2ludHMsIHRyYW5zbGF0ZShzdWJzdHJpbmcodGV4dCgpLCAwLCBzdHJpbmctbGVuZ3RoKHRleHQoKSkgLSA0KSwnXycsJy4nKSkiPiAtLT4gCi0gIAkJCQkJCTxsaT4KLSAgCQkJCQkJCTxhIGhyZWY9Int0ZXh0KCl9Ij48eHNsOnZhbHVlLW9mIHNlbGVjdD0idHJhbnNsYXRlKHN1YnN0cmluZyh0ZXh0KCksIDAsIHN0cmluZy1sZW5ndGgodGV4dCgpKSAtIDQpLCdfJywnLicpIi8+PC9hPiAKLSAgCQkJCQkJPC9saT4KLSAgCQkJCQk8IS0tIDwveHNsOmlmPiAtLT4KLSAgICAJCQk8L3hzbDpmb3ItZWFjaD4KLSAgICAJCTwvdWw+Ci0gICAgCTwveHNsOmZvci1lYWNoPgotICAgIAk8L2JvZHk+Ci0JCTwvaHRtbD4KLSAgICA8L3hzbDp0ZW1wbGF0ZT4KLTwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2V4dERvY1RvYy54c2wgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2V4dERvY1RvYy54c2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YjI3NDEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9leHREb2NUb2MueHNsCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIKLSAgICB2ZXJzaW9uPSIxLjAiCi0gICAgeG1sbnM6eGFsYW49Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94c2x0IgotICAgIGV4Y2x1ZGUtcmVzdWx0LXByZWZpeGVzPSJ4YWxhbiI+Ci0gICAgPHhzbDpwYXJhbSBuYW1lPSJsaXN0ZWQtZXh0LXBvaW50cyIvPgotICAgIAotICAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb21wb25lbnRzIj4KLSAgICAgCTx4c2w6dGV4dCBkaXNhYmxlLW91dHB1dC1lc2NhcGluZz0ieWVzIj4KLSZsdDs/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8mZ3Q7Ci0JIAk8L3hzbDp0ZXh0PgotCSAJPHRvYyBsYWJlbD0iRXh0ZW5zaW9uIFBvaW50cyBSZWZlcmVuY2UiPgotCSAJCTx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJkb2N1bWVudChjb21wb25lbnQvQGZpbGUpL2ZpbGVzL2ZpbGUiPgotCSAJCQk8eHNsOnNvcnQgc2VsZWN0PSJ0ZXh0KCkiLz4KLQkgCQkJPCEtLSA8eHNsOmlmIHRlc3Q9ImNvbnRhaW5zKCRsaXN0ZWQtZXh0LXBvaW50cywgdHJhbnNsYXRlKHN1YnN0cmluZyh0ZXh0KCksIDAsIHN0cmluZy1sZW5ndGgodGV4dCgpKSAtIDQpLCdfJywnLicpKSI+IC0tPgotCSAJCQkJPHRvcGljIGxhYmVsPSJ7dHJhbnNsYXRlKHN1YnN0cmluZyh0ZXh0KCksIDAsIHN0cmluZy1sZW5ndGgodGV4dCgpKSAtIDQpLCdfJywnLicpfSIgaHJlZj0icmVmZXJlbmNlL2V4dC97dGV4dCgpfSI+Ci0JIAkJCQk8L3RvcGljPgotCSAJCQk8IS0tIDwveHNsOmlmPiAtLT4KLQkgCQk8L3hzbDpmb3ItZWFjaD4KLQkgCTwvdG9jPiAKLQk8L3hzbDp0ZW1wbGF0ZT4KLTwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2V4dGRvY3MueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9leHRkb2NzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJjMjYxMi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2V4dGRvY3MueG1sCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotPGZpbGVzIGNvbXBvbmVudD0id2Vic2VydmljZSI+PGZpbGU+b3JnX2VjbGlwc2Vfd3N0X3dzX3NlcnZpY2VfcG9saWN5X3NlcnZpY2Vwb2xpY3kuaHRtbDwvZmlsZT4vbi9uPGZpbGU+b3JnX2VjbGlwc2Vfd3N0X3dzX3NlcnZpY2VfcG9saWN5X3VpX3NlcnZpY2Vwb2xpY3l1aS5odG1sPC9maWxlPjwvZmlsZXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9qYXZhZG9jLnByb3BlcnRpZXMgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2phdmFkb2MucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGMwMGM5MS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2phdmFkb2MucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLQotcGx1Z2luLnNvdXJjZWZvbGRlcnM9Li4vb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5L3NyYztcCi0uLi9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkvc3JjO1wKLQotYXBpLnBhY2thZ2VzPW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSxcCi1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLFwKLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscyxcCi1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWksXAotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzCi0KLQotCi1hcGkudGl0bGU9V2ViIFRvb2xzIFBsYXRmb3JtOiBXZWIgc2VydmljZXMgQVBJIGRvY3VtZW50YXRpb24KLQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9qYXZhZG9jLnhzbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvamF2YWRvYy54c2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViODI0ZTUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9qYXZhZG9jLnhzbAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHhzbDpzdHlsZXNoZWV0Ci0JeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCi0JdmVyc2lvbj0iMS4wIj4KLQotCTx4c2w6dmFyaWFibGUgbmFtZT0icm9vdCI+Ci0JCTx4c2w6Y2hvb3NlPgotCQkJPHhzbDp3aGVuIHRlc3Q9Ii9odG1sL2hlYWQvbWV0YVtAbmFtZT0ncm9vdCddL0Bjb250ZW50Ij4KLQkJCQk8eHNsOnZhbHVlLW9mIHNlbGVjdD0iL2h0bWwvaGVhZC9tZXRhW0BuYW1lPSdyb290J10vQGNvbnRlbnQiIC8+Ci0JCQk8L3hzbDp3aGVuPgotCQkJPHhzbDpvdGhlcndpc2U+Ci0JCQkJPHhzbDp0ZXh0Pi4uLy4uPC94c2w6dGV4dD4KLQkJCTwveHNsOm90aGVyd2lzZT4KLQkJPC94c2w6Y2hvb3NlPgotCTwveHNsOnZhcmlhYmxlPgotCi0JPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iLyI+Ci0JCTx4c2w6YXBwbHktdGVtcGxhdGVzIC8+Ci0JPC94c2w6dGVtcGxhdGU+Ci0KLQk8eHNsOnRlbXBsYXRlIG1hdGNoPSJodG1sIj4KLQkJPGh0bWw+Ci0JCQk8aGVhZD4KLQkJCQk8bWV0YQotCQkJCQljb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSIKLQkJCQkJaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotCQkJCTxsaW5rCi0JCQkJCXR5cGU9InRleHQvY3NzIgotCQkJCQlocmVmPSJ7JHJvb3R9L2FwaXN0eWxlcy5jc3MiCi0JCQkJCXJlbD0ic3R5bGVzaGVldCIgLz4KLQkJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImhlYWQvdGl0bGUiIC8+Ci0JCQk8L2hlYWQ+Ci0JCQk8Ym9keT4gCi0JCQkJPHhzbDphcHBseS10ZW1wbGF0ZXMKLQkJCQkJc2VsZWN0PSJib2R5LyoiCi0JCQkJCW1vZGU9ImJvZHkiIC8+Ci0JCQk8L2JvZHk+Ci0JCTwvaHRtbD4KLQk8L3hzbDp0ZW1wbGF0ZT4KLQotCTx4c2w6dGVtcGxhdGUKLQkJbWF0Y2g9ImgxIgotCQltb2RlPSJiYW5uZXIiPgotCQk8dGFibGUKLQkJCWJvcmRlcj0iMCIKLQkJCWNlbGxwYWRkaW5nPSIyIgotCQkJY2VsbHNwYWNpbmc9IjUiCi0JCQl3aWR0aD0iMTAwJSI+Ci0JCQk8dGJvZHk+Ci0JCQkJPHRyPgotCQkJCQk8dGQKLQkJCQkJCWFsaWduPSJsZWZ0IgotCQkJCQkJd2lkdGg9IjYwJSI+Ci0JCQkJCQk8Zm9udCBjbGFzcz0iaW5kZXh0b3AiPgotCQkJCQkJCTx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIiAvPgotCQkJCQkJPC9mb250PgotCQkJCQkJPGJyIC8+Ci0JCQkJCQk8Zm9udCBjbGFzcz0iaW5kZXhzdWIiPgotCQkJCQkJCTx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIvaHRtbC9oZWFkL3RpdGxlIiAvPgotCQkJCQkJPC9mb250PgotCQkJCQk8L3RkPgotCQkJCQk8dGQgd2lkdGg9IjQwJSI+Ci0JCQkJCQk8aW1nCi0JCQkJCQkJc3JjPSJ7JHJvb3R9L292ZXJ2aWV3L0lkZWEuanBnIgotCQkJCQkJCWFsaWduPSJtaWRkbGUiCi0JCQkJCQkJaGVpZ2h0PSI4NiIKLQkJCQkJCQloc3BhY2U9IjUwIgotCQkJCQkJCXdpZHRoPSIxMjAiIC8+Ci0JCQkJCTwvdGQ+Ci0JCQkJPC90cj4KLQkJCTwvdGJvZHk+Ci0JCTwvdGFibGU+Ci0JPC94c2w6dGVtcGxhdGU+Ci0KLQk8eHNsOnRlbXBsYXRlCi0JCW1hdGNoPSJoMSIKLQkJbW9kZT0iYm9keSIgLz4KLQotCTx4c2w6dGVtcGxhdGUKLQkJbWF0Y2g9ImgyIgotCQltb2RlPSJib2R5Ij4KLQotCQk8dGFibGUKLQkJCWJvcmRlcj0iMCIKLQkJCWNlbGxwYWRkaW5nPSIyIgotCQkJY2VsbHNwYWNpbmc9IjUiCi0JCQl3aWR0aD0iMTAwJSI+Ci0JCQk8dGJvZHk+Ci0JCQkJPHRyPgotCQkJCQk8dGQKLQkJCQkJCWNvbHNwYW49IjIiCi0JCQkJCQlhbGlnbj0ibGVmdCIKLQkJCQkJCWJnY29sb3I9IiMwMDgwYzAiCi0JCQkJCQl2YWxpZ249InRvcCI+Ci0JCQkJCQk8Yj4KLQkJCQkJCQk8Zm9udAotCQkJCQkJCQljb2xvcj0iI2ZmZmZmZiIKLQkJCQkJCQkJZmFjZT0iQXJpYWwsSGVsdmV0aWNhIj4KLQkJCQkJCQkJPHhzbDphcHBseS10ZW1wbGF0ZXMgLz4KLQkJCQkJCQk8L2ZvbnQ+Ci0JCQkJCQk8L2I+Ci0JCQkJCTwvdGQ+Ci0JCQkJPC90cj4KLQkJCTwvdGJvZHk+Ci0JCTwvdGFibGU+Ci0JPC94c2w6dGVtcGxhdGU+Ci0KLQk8eHNsOnRlbXBsYXRlCi0JCW1hdGNoPSJoMyIKLQkJbW9kZT0iYm9keSI+Ci0JCTxpbWcKLQkJCXNyYz0ieyRyb290fS9pbWFnZXMvQWRhcnJvdy5naWYiCi0JCQlib3JkZXI9IjAiCi0JCQloZWlnaHQ9IjE2IgotCQkJd2lkdGg9IjE2IiAvPgotCQk8eHNsOmFwcGx5LXRlbXBsYXRlcyAvPgotCTwveHNsOnRlbXBsYXRlPgotCi0JPHhzbDp0ZW1wbGF0ZQotCQltYXRjaD0iKiIKLQkJbW9kZT0iYm9keSI+Ci0KLQkJPHhzbDpjb3B5PgotCQkJPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIqfEAqfHRleHQoKSIgLz4KLQkJPC94c2w6Y29weT4KLQk8L3hzbDp0ZW1wbGF0ZT4KLQotCTx4c2w6dGVtcGxhdGUgbWF0Y2g9Iip8QCp8dGV4dCgpIj4KLQkJPHhzbDpjb3B5PgotCQkJPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIqfEAqfHRleHQoKSIgLz4KLQkJPC94c2w6Y29weT4KLQk8L3hzbDp0ZW1wbGF0ZT4KLQotPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvamF2YWRvY1RvYy54c2wgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2phdmFkb2NUb2MueHNsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDcxNzk1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvamF2YWRvY1RvYy54c2wKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgotICAgIHZlcnNpb249IjEuMCIKLSAgICB4bWxuczp4YWxhbj0iaHR0cDovL3htbC5hcGFjaGUub3JnL3hzbHQiCi0gICAgZXhjbHVkZS1yZXN1bHQtcHJlZml4ZXM9InhhbGFuIj4KLSAgICAKLSAgICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icGFja2FnZXMiPgotICAgICA8eHNsOnRleHQgZGlzYWJsZS1vdXRwdXQtZXNjYXBpbmc9InllcyI+Ci0mbHQ7P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/Jmd0OwotCSA8L3hzbDp0ZXh0PgotCSA8dG9jIGxhYmVsPSJKYXZhZG9jIFBhY2thZ2VzIFJlZmVyZW5jZSI+Ci0JIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJwYWNrYWdlIj4KLQkgPHhzbDpzb3J0IHNlbGVjdD0idGV4dCgpIi8+Ci0JIAk8eHNsOmlmIHRlc3Q9InRleHQoKSAhPSAnJyI+Ci0JIAkJPHRvcGljIGxhYmVsPSJ7dGV4dCgpfSIgaHJlZj0icmVmZXJlbmNlL2FwaS97dHJhbnNsYXRlKHRleHQoKSwnLicsJy8nKX0vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiLz4KLQkgCTwveHNsOmlmPgotCSA8L3hzbDpmb3ItZWFjaD4KLQkKLQkgPC90b2M+IAotCTwveHNsOnRlbXBsYXRlPgotPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvamF2YWRvY3RvYy54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL2phdmFkb2N0b2MueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmE3YmMyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvamF2YWRvY3RvYy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotCi08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PgotCSA8dG9jIGxhYmVsPSJKYXZhZG9jIFBhY2thZ2VzIFJlZmVyZW5jZSI+Ci08dG9waWMgaHJlZj0icmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIGxhYmVsPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiLz4KLTx0b3BpYyBocmVmPSJyZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIGxhYmVsPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIi8+Ci08dG9waWMgaHJlZj0icmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIGxhYmVsPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiLz4KLTx0b3BpYyBocmVmPSJyZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgbGFiZWw9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyIvPgotPHRvcGljIGhyZWY9InJlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIiBsYWJlbD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzIi8+Ci08L3RvYz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2Mvbm90aWNlcy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9ub3RpY2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwY2Y0ZDEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9ub3RpY2VzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08IWRvY3R5cGUgaHRtbCBwdWJsaWMgIi0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vZW4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPExJTksgUkVMPSJTVFlMRVNIRUVUIiBIUkVGPSJib29rLmNzcyIgQ0hBUlNFVD0iSVNPLTg4NTktMSIKLQlUWVBFPSJ0ZXh0L2NzcyI+Ci08dGl0bGU+TGVnYWwgTm90aWNlczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLQotPGgzPjxhIE5BTUU9Ik5vdGljZXMiPjwvYT5Ob3RpY2VzPC9oMz4KLTxwPlRoZSBtYXRlcmlhbCBpbiB0aGlzIGd1aWRlIGlzIENvcHlyaWdodCAoYykgSUJNIENvcnBvcmF0aW9uIGFuZAotb3RoZXJzIDIwMDAsIDIwMDUuPC9wPgotPHA+PGEgaHJlZj0iYWJvdXQuaHRtbCI+VGVybXMgYW5kIGNvbmRpdGlvbnMgcmVnYXJkaW5nIHRoZSB1c2Ugb2YgdGhpcwotZ3VpZGUuPC9hPjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcGFja2FnZXMueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9wYWNrYWdlcy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NGNmZTEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9wYWNrYWdlcy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotICAgICAgICAgICAgPHBhY2thZ2VzPjxwYWNrYWdlPjwvcGFja2FnZT48cGFja2FnZT5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L3BhY2thZ2U+PHBhY2thZ2U+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvcGFja2FnZT48cGFja2FnZT5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L3BhY2thZ2U+PHBhY2thZ2U+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzPC9wYWNrYWdlPjxwYWNrYWdlPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlsczwvcGFja2FnZT48L3BhY2thZ2VzPgotICAgICAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3BsdWdpbi5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVjZTJkYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXByb3ZpZGVyTmFtZT1FY2xpcHNlLm9yZwotcGx1Z2luTmFtZT1XZWIgU2VydmljZXMgQVBJIERvY3VtZW50YXRpb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3BsdWdpbi54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZGI1NDAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLTxwbHVnaW4+Ci0JCi08IS0tCi0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAotIERlZmluZSBTdWJzZWN0aW9uIFRhYmxlIG9mIENvbnRlbnRzCi0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi0tLT4gCi0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC50b2MiPgotCQk8dG9jIGZpbGU9InRvcGljc19SZWZlcmVuY2UueG1sIi8+Ci0JCTx0b2MgZmlsZT0iamF2YWRvY3RvYy54bWwiLz4KLQkJPHRvYyBmaWxlPSJ0b3BpY3NfRXh0UG9pbnRfUmVmZXJlbmNlLnhtbCIvPgotCTwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvYWxsY2xhc3Nlcy1mcmFtZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2FsbGNsYXNzZXMtZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNiOWJhZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvYWxsY2xhc3Nlcy1mcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotQWxsIENsYXNzZXMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiPgotPEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLTxCPkFsbCBDbGFzc2VzPC9CPjwvRk9OVD4KLTxCUj4KLQotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgTk9XUkFQPjxGT05UIENMQVNTPSJGcmFtZUl0ZW1Gb250Ij48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvQWN0aXZpdHlVdGlscy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPkFjdGl2aXR5VXRpbHM8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SURlc2NyaXB0b3I8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SUVuYWJsZU9wZXJhdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JRmlsdGVyPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JTGF1bmNoT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklMYXVuY2hPcGVyYXRpb248L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JUG9saWN5T3BlcmF0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXI8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklQb2xpY3lSZWxhdGlvbnNoaXA8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JUG9saWN5U3RhdGU8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SVBvbGljeVN0YXRlRW51bTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklRdWlja0ZpeEFjdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JUXVpY2tGaXhBY3Rpb25JbmZvPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JU2VydmljZVBvbGljeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lTdGF0dXNDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SVN0YXR1c0NoYW5nZUxpc3RlbmVyPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+UG9saWN5UmVsYXRpb25zaGlwSW1wbDwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMiIHRhcmdldD0iY2xhc3NGcmFtZSI+UmVnaXN0cnlVdGlsczwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiIHRhcmdldD0iY2xhc3NGcmFtZSI+U2VydmljZVBvbGljeVBsYXRmb3JtVUk8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiIHRhcmdldD0iY2xhc3NGcmFtZSI+U2VydmljZVV0aWxzPC9BPgotPEJSPgotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTcyYjEzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUFsbCBDbGFzc2VzCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSJzdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIj4KLTxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVIZWFkaW5nRm9udCI+Ci08Qj5BbGwgQ2xhc3NlczwvQj48L0ZPTlQ+Ci08QlI+Ci0KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIE5PV1JBUD48Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL0FjdGl2aXR5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI+QWN0aXZpdHlVdGlsczwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEk+SURlc2NyaXB0b3I8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxJPklFbmFibGVPcGVyYXRpb248L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lGaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxJPklGaWx0ZXI8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxJPklMYXVuY2hPcGVyYXRpb248L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxJPklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48ST5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48ST5JUG9saWN5T3BlcmF0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxJPklQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48ST5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48ST5JUG9saWN5UmVsYXRpb25zaGlwPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxJPklQb2xpY3lTdGF0ZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEk+SVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxJPklQb2xpY3lTdGF0ZUVudW08L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEk+SVF1aWNrRml4QWN0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48ST5JUXVpY2tGaXhBY3Rpb25JbmZvPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEk+SVNlcnZpY2VQb2xpY3k8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEk+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEk+SVN0YXR1c0NoYW5nZUxpc3RlbmVyPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlBvbGljeUVudW1lcmF0aW9uTGlzdEltcGw8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsPC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL1JlZ2lzdHJ5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscyI+UmVnaXN0cnlVdGlsczwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3I8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL1NlcnZpY2VVdGlscy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIj5TZXJ2aWNlVXRpbHM8L0E+Ci08QlI+Ci08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvY29uc3RhbnQtdmFsdWVzLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvY29uc3RhbnQtdmFsdWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NjRiMTAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2NvbnN0YW50LXZhbHVlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjMwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUNvbnN0YW50IEZpZWxkIFZhbHVlcwotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0ic3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkNvbnN0YW50IEZpZWxkIFZhbHVlcyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImhlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iaW5kZXguaHRtbD9jb25zdGFudC12YWx1ZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJjb25zdGFudC12YWx1ZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08Q0VOVEVSPgotPEgxPgotQ29uc3RhbnQgRmllbGQgVmFsdWVzPC9IMT4KLTwvQ0VOVEVSPgotPEhSIFNJWkU9IjQiIE5PU0hBREU+Ci08Qj5Db250ZW50czwvQj48VUw+Ci08TEk+PEEgSFJFRj0iI29yZy5lY2xpcHNlIj5vcmcuZWNsaXBzZS4qPC9BPgotPC9VTD4KLQotPEEgTkFNRT0ib3JnLmVjbGlwc2UiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Rk9OVCBTSVpFPSIrMiI+Ci1vcmcuZWNsaXBzZS4qPC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIzIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlPC9BPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlLkRlZmF1bHRWYWx1ZUtleSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwjRGVmYXVsdFZhbHVlS2V5Ij5EZWZhdWx0VmFsdWVLZXk8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iZGVmYXVsdC52YWx1ZS5rZXkiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotPFA+Ci0KLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMyI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGVFbnVtPC9BPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlRW51bS5GQUxTRV9FTlVNIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwjRkFMU0VfRU5VTSI+RkFMU0VfRU5VTTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJvcmcuZWNsaXBzZS53c3QuZmFsc2UiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlRW51bS5UUlVFX0VOVU0iPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCNUUlVFX0VOVU0iPlRSVUVfRU5VTTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJvcmcuZWNsaXBzZS53c3QudHJ1ZSI8L0NPREU+PC9URD4KLTwvVFI+Ci08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi08UD4KLQotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIzIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQT48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuUExVR0lOX0lEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjUExVR0lOX0lEIj5QTFVHSU5fSUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IjwvQ09ERT48L1REPgotPC9UUj4KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxQPgotCi08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjMiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQT48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5QTFVHSU5fSUQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sI1BMVUdJTl9JRCI+UExVR0lOX0lEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI8L0NPREU+PC9URD4KLTwvVFI+Ci08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi08UD4KLQotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJpbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSJpbmRleC5odG1sP2NvbnN0YW50LXZhbHVlcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImNvbnN0YW50LXZhbHVlcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2RlcHJlY2F0ZWQtbGlzdC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2RlcHJlY2F0ZWQtbGlzdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NThhMzA5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9kZXByZWNhdGVkLWxpc3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1EZXByZWNhdGVkIExpc3QKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJEZXByZWNhdGVkIExpc3QiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImluZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJoZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/ZGVwcmVjYXRlZC1saXN0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPkRlcHJlY2F0ZWQgQVBJPC9CPjwvSDI+Ci08L0NFTlRFUj4KLTxIUiBTSVpFPSI0IiBOT1NIQURFPgotPEI+Q29udGVudHM8L0I+PFVMPgotPC9VTD4KLQotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImhlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iaW5kZXguaHRtbD9kZXByZWNhdGVkLWxpc3QuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9oZWxwLWRvYy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2hlbHAtZG9jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYTg4OWIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2hlbHAtZG9jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotQVBJIEhlbHAKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJBUEkgSGVscCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/aGVscC1kb2MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJoZWxwLWRvYy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDE+Ci1Ib3cgVGhpcyBBUEkgRG9jdW1lbnQgSXMgT3JnYW5pemVkPC9IMT4KLTwvQ0VOVEVSPgotVGhpcyBBUEkgKEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZSkgZG9jdW1lbnQgaGFzIHBhZ2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGl0ZW1zIGluIHRoZSBuYXZpZ2F0aW9uIGJhciwgZGVzY3JpYmVkIGFzIGZvbGxvd3MuPEgzPgotT3ZlcnZpZXc8L0gzPgotPEJMT0NLUVVPVEU+Ci0KLTxQPgotVGhlIDxBIEhSRUY9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+T3ZlcnZpZXc8L0E+IHBhZ2UgaXMgdGhlIGZyb250IHBhZ2Ugb2YgdGhpcyBBUEkgZG9jdW1lbnQgYW5kIHByb3ZpZGVzIGEgbGlzdCBvZiBhbGwgcGFja2FnZXMgd2l0aCBhIHN1bW1hcnkgZm9yIGVhY2guICBUaGlzIHBhZ2UgY2FuIGFsc28gY29udGFpbiBhbiBvdmVyYWxsIGRlc2NyaXB0aW9uIG9mIHRoZSBzZXQgb2YgcGFja2FnZXMuPC9CTE9DS1FVT1RFPgotPEgzPgotUGFja2FnZTwvSDM+Ci08QkxPQ0tRVU9URT4KLQotPFA+Ci1FYWNoIHBhY2thZ2UgaGFzIGEgcGFnZSB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBpdHMgY2xhc3NlcyBhbmQgaW50ZXJmYWNlcywgd2l0aCBhIHN1bW1hcnkgZm9yIGVhY2guIFRoaXMgcGFnZSBjYW4gY29udGFpbiBmb3VyIGNhdGVnb3JpZXM6PFVMPgotPExJPkludGVyZmFjZXMgKGl0YWxpYyk8TEk+Q2xhc3NlczxMST5FbnVtczxMST5FeGNlcHRpb25zPExJPkVycm9yczxMST5Bbm5vdGF0aW9uIFR5cGVzPC9VTD4KLTwvQkxPQ0tRVU9URT4KLTxIMz4KLUNsYXNzL0ludGVyZmFjZTwvSDM+Ci08QkxPQ0tRVU9URT4KLQotPFA+Ci1FYWNoIGNsYXNzLCBpbnRlcmZhY2UsIG5lc3RlZCBjbGFzcyBhbmQgbmVzdGVkIGludGVyZmFjZSBoYXMgaXRzIG93biBzZXBhcmF0ZSBwYWdlLiBFYWNoIG9mIHRoZXNlIHBhZ2VzIGhhcyB0aHJlZSBzZWN0aW9ucyBjb25zaXN0aW5nIG9mIGEgY2xhc3MvaW50ZXJmYWNlIGRlc2NyaXB0aW9uLCBzdW1tYXJ5IHRhYmxlcywgYW5kIGRldGFpbGVkIG1lbWJlciBkZXNjcmlwdGlvbnM6PFVMPgotPExJPkNsYXNzIGluaGVyaXRhbmNlIGRpYWdyYW08TEk+RGlyZWN0IFN1YmNsYXNzZXM8TEk+QWxsIEtub3duIFN1YmludGVyZmFjZXM8TEk+QWxsIEtub3duIEltcGxlbWVudGluZyBDbGFzc2VzPExJPkNsYXNzL2ludGVyZmFjZSBkZWNsYXJhdGlvbjxMST5DbGFzcy9pbnRlcmZhY2UgZGVzY3JpcHRpb24KLTxQPgotPExJPk5lc3RlZCBDbGFzcyBTdW1tYXJ5PExJPkZpZWxkIFN1bW1hcnk8TEk+Q29uc3RydWN0b3IgU3VtbWFyeTxMST5NZXRob2QgU3VtbWFyeQotPFA+Ci08TEk+RmllbGQgRGV0YWlsPExJPkNvbnN0cnVjdG9yIERldGFpbDxMST5NZXRob2QgRGV0YWlsPC9VTD4KLUVhY2ggc3VtbWFyeSBlbnRyeSBjb250YWlucyB0aGUgZmlyc3Qgc2VudGVuY2UgZnJvbSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gZm9yIHRoYXQgaXRlbS4gVGhlIHN1bW1hcnkgZW50cmllcyBhcmUgYWxwaGFiZXRpY2FsLCB3aGlsZSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIGFyZSBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLiBUaGlzIHByZXNlcnZlcyB0aGUgbG9naWNhbCBncm91cGluZ3MgZXN0YWJsaXNoZWQgYnkgdGhlIHByb2dyYW1tZXIuPC9CTE9DS1FVT1RFPgotPC9CTE9DS1FVT1RFPgotPEgzPgotQW5ub3RhdGlvbiBUeXBlPC9IMz4KLTxCTE9DS1FVT1RFPgotCi08UD4KLUVhY2ggYW5ub3RhdGlvbiB0eXBlIGhhcyBpdHMgb3duIHNlcGFyYXRlIHBhZ2Ugd2l0aCB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOjxVTD4KLTxMST5Bbm5vdGF0aW9uIFR5cGUgZGVjbGFyYXRpb248TEk+QW5ub3RhdGlvbiBUeXBlIGRlc2NyaXB0aW9uPExJPlJlcXVpcmVkIEVsZW1lbnQgU3VtbWFyeTxMST5PcHRpb25hbCBFbGVtZW50IFN1bW1hcnk8TEk+RWxlbWVudCBEZXRhaWw8L1VMPgotPC9CTE9DS1FVT1RFPgotPC9CTE9DS1FVT1RFPgotPEgzPgotRW51bTwvSDM+Ci08QkxPQ0tRVU9URT4KLQotPFA+Ci1FYWNoIGVudW0gaGFzIGl0cyBvd24gc2VwYXJhdGUgcGFnZSB3aXRoIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6PFVMPgotPExJPkVudW0gZGVjbGFyYXRpb248TEk+RW51bSBkZXNjcmlwdGlvbjxMST5FbnVtIENvbnN0YW50IFN1bW1hcnk8TEk+RW51bSBDb25zdGFudCBEZXRhaWw8L1VMPgotPC9CTE9DS1FVT1RFPgotPEgzPgotVXNlPC9IMz4KLTxCTE9DS1FVT1RFPgotRWFjaCBkb2N1bWVudGVkIHBhY2thZ2UsIGNsYXNzIGFuZCBpbnRlcmZhY2UgaGFzIGl0cyBvd24gVXNlIHBhZ2UuICBUaGlzIHBhZ2UgZGVzY3JpYmVzIHdoYXQgcGFja2FnZXMsIGNsYXNzZXMsIG1ldGhvZHMsIGNvbnN0cnVjdG9ycyBhbmQgZmllbGRzIHVzZSBhbnkgcGFydCBvZiB0aGUgZ2l2ZW4gY2xhc3Mgb3IgcGFja2FnZS4gR2l2ZW4gYSBjbGFzcyBvciBpbnRlcmZhY2UgQSwgaXRzIFVzZSBwYWdlIGluY2x1ZGVzIHN1YmNsYXNzZXMgb2YgQSwgZmllbGRzIGRlY2xhcmVkIGFzIEEsIG1ldGhvZHMgdGhhdCByZXR1cm4gQSwgYW5kIG1ldGhvZHMgYW5kIGNvbnN0cnVjdG9ycyB3aXRoIHBhcmFtZXRlcnMgb2YgdHlwZSBBLiAgWW91IGNhbiBhY2Nlc3MgdGhpcyBwYWdlIGJ5IGZpcnN0IGdvaW5nIHRvIHRoZSBwYWNrYWdlLCBjbGFzcyBvciBpbnRlcmZhY2UsIHRoZW4gY2xpY2tpbmcgb24gdGhlICJVc2UiIGxpbmsgaW4gdGhlIG5hdmlnYXRpb24gYmFyLjwvQkxPQ0tRVU9URT4KLTxIMz4KLVRyZWUgKENsYXNzIEhpZXJhcmNoeSk8L0gzPgotPEJMT0NLUVVPVEU+Ci1UaGVyZSBpcyBhIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+Q2xhc3MgSGllcmFyY2h5PC9BPiBwYWdlIGZvciBhbGwgcGFja2FnZXMsIHBsdXMgYSBoaWVyYXJjaHkgZm9yIGVhY2ggcGFja2FnZS4gRWFjaCBoaWVyYXJjaHkgcGFnZSBjb250YWlucyBhIGxpc3Qgb2YgY2xhc3NlcyBhbmQgYSBsaXN0IG9mIGludGVyZmFjZXMuIFRoZSBjbGFzc2VzIGFyZSBvcmdhbml6ZWQgYnkgaW5oZXJpdGFuY2Ugc3RydWN0dXJlIHN0YXJ0aW5nIHdpdGggPGNvZGU+amF2YS5sYW5nLk9iamVjdDwvY29kZT4uIFRoZSBpbnRlcmZhY2VzIGRvIG5vdCBpbmhlcml0IGZyb20gPGNvZGU+amF2YS5sYW5nLk9iamVjdDwvY29kZT4uPFVMPgotPExJPldoZW4gdmlld2luZyB0aGUgT3ZlcnZpZXcgcGFnZSwgY2xpY2tpbmcgb24gIlRyZWUiIGRpc3BsYXlzIHRoZSBoaWVyYXJjaHkgZm9yIGFsbCBwYWNrYWdlcy48TEk+V2hlbiB2aWV3aW5nIGEgcGFydGljdWxhciBwYWNrYWdlLCBjbGFzcyBvciBpbnRlcmZhY2UgcGFnZSwgY2xpY2tpbmcgIlRyZWUiIGRpc3BsYXlzIHRoZSBoaWVyYXJjaHkgZm9yIG9ubHkgdGhhdCBwYWNrYWdlLjwvVUw+Ci08L0JMT0NLUVVPVEU+Ci08SDM+Ci1EZXByZWNhdGVkIEFQSTwvSDM+Ci08QkxPQ0tRVU9URT4KLVRoZSA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZCBBUEk8L0E+IHBhZ2UgbGlzdHMgYWxsIG9mIHRoZSBBUEkgdGhhdCBoYXZlIGJlZW4gZGVwcmVjYXRlZC4gQSBkZXByZWNhdGVkIEFQSSBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHVzZSwgZ2VuZXJhbGx5IGR1ZSB0byBpbXByb3ZlbWVudHMsIGFuZCBhIHJlcGxhY2VtZW50IEFQSSBpcyB1c3VhbGx5IGdpdmVuLiBEZXByZWNhdGVkIEFQSXMgbWF5IGJlIHJlbW92ZWQgaW4gZnV0dXJlIGltcGxlbWVudGF0aW9ucy48L0JMT0NLUVVPVEU+Ci08SDM+Ci1JbmRleDwvSDM+Ci08QkxPQ0tRVU9URT4KLVRoZSA8QSBIUkVGPSJpbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPkluZGV4PC9BPiBjb250YWlucyBhbiBhbHBoYWJldGljIGxpc3Qgb2YgYWxsIGNsYXNzZXMsIGludGVyZmFjZXMsIGNvbnN0cnVjdG9ycywgbWV0aG9kcywgYW5kIGZpZWxkcy48L0JMT0NLUVVPVEU+Ci08SDM+Ci1QcmV2L05leHQ8L0gzPgotVGhlc2UgbGlua3MgdGFrZSB5b3UgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgY2xhc3MsIGludGVyZmFjZSwgcGFja2FnZSwgb3IgcmVsYXRlZCBwYWdlLjxIMz4KLUZyYW1lcy9ObyBGcmFtZXM8L0gzPgotVGhlc2UgbGlua3Mgc2hvdyBhbmQgaGlkZSB0aGUgSFRNTCBmcmFtZXMuICBBbGwgcGFnZXMgYXJlIGF2YWlsYWJsZSB3aXRoIG9yIHdpdGhvdXQgZnJhbWVzLgotPFA+Ci08SDM+Ci1TZXJpYWxpemVkIEZvcm08L0gzPgotRWFjaCBzZXJpYWxpemFibGUgb3IgZXh0ZXJuYWxpemFibGUgY2xhc3MgaGFzIGEgZGVzY3JpcHRpb24gb2YgaXRzIHNlcmlhbGl6YXRpb24gZmllbGRzIGFuZCBtZXRob2RzLiBUaGlzIGluZm9ybWF0aW9uIGlzIG9mIGludGVyZXN0IHRvIHJlLWltcGxlbWVudG9ycywgbm90IHRvIGRldmVsb3BlcnMgdXNpbmcgdGhlIEFQSS4gV2hpbGUgdGhlcmUgaXMgbm8gbGluayBpbiB0aGUgbmF2aWdhdGlvbiBiYXIsIHlvdSBjYW4gZ2V0IHRvIHRoaXMgaW5mb3JtYXRpb24gYnkgZ29pbmcgdG8gYW55IHNlcmlhbGl6ZWQgY2xhc3MgYW5kIGNsaWNraW5nICJTZXJpYWxpemVkIEZvcm0iIGluIHRoZSAiU2VlIGFsc28iIHNlY3Rpb24gb2YgdGhlIGNsYXNzIGRlc2NyaXB0aW9uLgotPFA+Ci08SDM+Ci1Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0gzPgotVGhlIDxhIGhyZWY9ImNvbnN0YW50LXZhbHVlcy5odG1sIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+IHBhZ2UgbGlzdHMgdGhlIHN0YXRpYyBmaW5hbCBmaWVsZHMgYW5kIHRoZWlyIHZhbHVlcy4KLTxQPgotPEZPTlQgU0laRT0iLTEiPgotPEVNPgotVGhpcyBoZWxwIGZpbGUgYXBwbGllcyB0byBBUEkgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgdXNpbmcgdGhlIHN0YW5kYXJkIGRvY2xldC48L0VNPgotPC9GT05UPgotPEJSPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/aGVscC1kb2MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJoZWxwLWRvYy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1Y2FjZmMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1BLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iQS1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIExFVFRFUiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMi5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfQV8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkE8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sI2FjY2VwdChvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj48Qj5hY2NlcHQoSVNlcnZpY2VQb2xpY3kpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRmlsdGVyPC9BPgotPEREPkRldGVybWluZXMgaWYgYSBwb2xpY3kgc2hvdWxkIGJlIGFjY2VwdGVkIG9yIG5vdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmh0bWwjYWN0aW9uKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSkiPjxCPmFjdGlvbihJU2VydmljZVBvbGljeSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVF1aWNrRml4QWN0aW9uPC9BPgotPEREPlRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCB0aGlzIGFjdGlvbiB0byByZXNvbHZlCi0gYSBwYXJ0aWN1bGFyIHNlcnZpY2UgcG9saWN5IHByb2JsZW0uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL0FjdGl2aXR5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI+PEI+QWN0aXZpdHlVdGlsczwvQj48L0E+IC0gQ2xhc3MgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHM8L0E+PEREPlVzZWQgYnkgdGhlIEVjbGlwc2UgYWN0aXZpdGllcyBmcmFtZXdvcmsuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9BY3Rpdml0eVV0aWxzLmh0bWwjQWN0aXZpdHlVdGlscygpIj48Qj5BY3Rpdml0eVV0aWxzKCk8L0I+PC9BPiAtIAotQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscy48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvQWN0aXZpdHlVdGlscy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIj5BY3Rpdml0eVV0aWxzPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNhZGRDaGlsZENoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIsIGJvb2xlYW4pIj48Qj5hZGRDaGlsZENoYW5nZUxpc3RlbmVyKElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLCBib29sZWFuKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEREPlRoaXMgbWV0aG9kIGFsbG93cyBjYWxscyB0byBsaXN0ZW5lciB0byBhbnkgY2hpbGQgY2hhbmdlIHRoYXQgaXMKLSBtYWRlIGluIHRoZSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybSByZWdhcmRsZXNzIG9mIHdoZXJlIGl0IGlzIAotIGxvY2F0ZWQgaW4gdGhlIHRyZWUgb2Ygc2VydmljZSBwb2xpY2llcy4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNhZGRQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIpIj48Qj5hZGRQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyKElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPgotPEREPkFkZHMgYSBjaGlsZCBsaXN0ZW5lciB0byB0aGlzIHNlcnZpY2UgcG9saWN5LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCNhZGRQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIsIGJvb2xlYW4pIj48Qj5hZGRQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKElQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLCBib29sZWFuKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGU8L0E+Ci08REQ+QWRkcyBhIHBvbGljeSBzdGF0ZSBjaGFuZ2UgbGlzdGVuZXIgdG8gdGhpcyBzZXJ2aWNlIHBvbGljeS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjYWRkUHJvamVjdExvYWRMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIpIj48Qj5hZGRQcm9qZWN0TG9hZExpc3RlbmVyKElQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0E+Ci08REQ+QWRkIGEgcHJvamVjdCBwbGF0Zm9ybSBsaXN0ZW5lci4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNhZGRTdGF0dXNDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklTdGF0dXNDaGFuZ2VMaXN0ZW5lcikiPjxCPmFkZFN0YXR1c0NoYW5nZUxpc3RlbmVyKElTdGF0dXNDaGFuZ2VMaXN0ZW5lcik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4KLTxERD5BZGRzIGEgc3RhdHVzIGNoYW5nZSBsaXN0ZW5lciB0byB0aGlzIHNlcnZpY2UgcG9saWN5LgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBMRVRURVImbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTIuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTAuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjRiODVmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVAtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJQLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTkuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTEwLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTAuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfUF8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPlA8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sI1BMVUdJTl9JRCI+PEI+UExVR0lOX0lEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwjUExVR0lOX0lEIj48Qj5QTFVHSU5fSUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsPC9CPjwvQT4gLSBDbGFzcyBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48REQ+VGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVBvbGljeUVudW1lcmF0aW9uTGlzdCBpbnRlcmZhY2UuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwjUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbChqYXZhLnV0aWwuTGlzdCwgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5KSI+PEI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbChMaXN0Jmx0O0lTdGF0ZUVudW1lcmF0aW9uSXRlbSZndDssIElTZXJ2aWNlUG9saWN5KTwvQj48L0E+IC0gCi1Db25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlBvbGljeUVudW1lcmF0aW9uTGlzdEltcGw8L0E+Ci08REQ+QSBzaW1wbGUgY29uc3RydWN0b3IgZm9yIHRoaXMgY2xhc3MuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UG9saWN5UmVsYXRpb25zaGlwSW1wbDwvQj48L0E+IC0gQ2xhc3MgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PEREPlRoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIElQb2xpY3lSZWxhdGlvbnNoaXAKLSBpbnRlcmZhY2UuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwjUG9saWN5UmVsYXRpb25zaGlwSW1wbChvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeUVudW1lcmF0aW9uTGlzdCwgamF2YS51dGlsLkxpc3QpIj48Qj5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsKElQb2xpY3lFbnVtZXJhdGlvbkxpc3QsIExpc3QmbHQ7SVBvbGljeUVudW1lcmF0aW9uTGlzdCZndDspPC9CPjwvQT4gLSAKLUNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+UG9saWN5UmVsYXRpb25zaGlwSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwjcG9saWN5U3RhdGVDaGFuZ2Uob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cG9saWN5U3RhdGVDaGFuZ2UoSVNlcnZpY2VQb2xpY3ksIFN0cmluZywgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI8L0E+Ci08REQ+Q2FsbGVkIHdoZW4gYSBzdGF0ZSBjaGFuZ2UgZXZlbnQgb2NjdXJzIGZvciBhIHNlcnZpY2UgcG9saWN5LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCNwdXREZWZhdWx0VmFsdWUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikiPjxCPnB1dERlZmF1bHRWYWx1ZShTdHJpbmcsIFN0cmluZywgYm9vbGVhbik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlPC9BPgotPEREPlRoaXMgbWV0aG9kIHNldHMgdGhlIGRlZmF1bHQgZm9yIGEgcGFydGljdWxhciBrZXkuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sI3B1dFZhbHVlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5wdXRWYWx1ZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlPC9BPgotPEREPlRoaXMgbWV0aG9kIHNldHMgc29tZSBzdGF0ZSBmb3IgYSBzZXJ2aWNlIHBvbGljeS4KLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTkuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTEwLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTAuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xMS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTExLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMmI3N2IuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTExLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotUS1JbmRleAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlEtSW5kZXgiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTExLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfUV8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPlE8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjcXVldWVDaGlsZENoYW5nZUxpc3RlbmVycyhib29sZWFuKSI+PEI+cXVldWVDaGlsZENoYW5nZUxpc3RlbmVycyhib29sZWFuKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEREPkluZGljYXRlcyB3aGV0aGVyIGNoaWxkIGNoYW5nZSBsaXN0ZW5lcnMgc2hvdWxkIGJlIHF1ZXVlZCBvciBub3QuCi08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMC5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMi5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMTEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlY8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTEyLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI1MGE2YS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1SLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iUi1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMS5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMy5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMTIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlY8L0E+IDxIUj4KLTxBIE5BTUU9Il9SXyI+PCEtLSAtLT48L0E+PEgyPgotPEI+UjwvQj48L0gyPgotPERMPgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMiPjxCPlJlZ2lzdHJ5VXRpbHM8L0I+PC9BPiAtIENsYXNzIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzPC9BPjxERD5UaGlzIGNsYXNzIGlzIG9ubHkgaW50ZW5kZWQgZm9yIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSBwbHVnaW4gdG8gdXNlLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sI1JlZ2lzdHJ5VXRpbHMoKSI+PEI+UmVnaXN0cnlVdGlscygpPC9CPjwvQT4gLSAKLUNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL1JlZ2lzdHJ5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscyI+UmVnaXN0cnlVdGlsczwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNyZW1vdmVDaGlsZChvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj48Qj5yZW1vdmVDaGlsZChJU2VydmljZVBvbGljeSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4KLTxERD5SZW1vdmVzIGEgY2hpbGQgc2VydmljZSBwb2xpY3kgZnJvbSB0aGlzIHNlcnZpY2UgcG9saWN5LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNyZW1vdmVDaGlsZENoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIsIGJvb2xlYW4pIj48Qj5yZW1vdmVDaGlsZENoYW5nZUxpc3RlbmVyKElQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLCBib29sZWFuKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEREPlJlbW92ZXMgYSBjaGlsZCBjaGFuZ2UgbGlzdGVuZXIgZnJvbSB0aGUgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjcmVtb3ZlUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyKSI+PEI+cmVtb3ZlUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcihJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4KLTxERD5SZW1vdmVzIGEgY2hpbGQgbGlzdGVuZXIgZnJvbSB0aGlzIHNlcnZpY2UgcG9saWN5LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCNyZW1vdmVQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIpIj48Qj5yZW1vdmVQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKElQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGU8L0E+Ci08REQ+UmVtb3ZlcyBhIHBvbGljeSBzdGF0ZSBjaGFuZ2UgbGlzdGVuZXIgZnJvbSB0aGlzIHNlcnZpY2UgcG9saWN5LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNyZW1vdmVQcm9qZWN0TG9hZExpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcikiPjxCPnJlbW92ZVByb2plY3RMb2FkTGlzdGVuZXIoSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQT4KLTxERD5SZW1vdmVzIGEgcHJvamVjdCBwbGF0Zm9ybSBsaXN0ZW5lci4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjcmVtb3ZlU2VydmljZVBvbGljeShvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj48Qj5yZW1vdmVTZXJ2aWNlUG9saWN5KElTZXJ2aWNlUG9saWN5KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEREPlJlbW92ZXMgYSBzZXJ2aWNlIHBvbGljeSBmcm9tIHRoZSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNyZW1vdmVTdGF0dXNDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklTdGF0dXNDaGFuZ2VMaXN0ZW5lcikiPjxCPnJlbW92ZVN0YXR1c0NoYW5nZUxpc3RlbmVyKElTdGF0dXNDaGFuZ2VMaXN0ZW5lcik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4KLTxERD5SZW1vdmVzIGEgc3RhdHVzIGNoYW5nZSBsaXN0ZW5lciBmcm9tIHRoaXMgc2VydmljZSBwb2xpY3kuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjcmVzdG9yZURlZmF1bHRzKCkiPjxCPnJlc3RvcmVEZWZhdWx0cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Ci08REQ+UmVzdG9yZXMgdGhlIHBvbGljeSB0byBpdHMgb3JpZ2luYWwgc3RhdGUuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjcmVzdG9yZURlZmF1bHRzKG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0KSI+PEI+cmVzdG9yZURlZmF1bHRzKElQcm9qZWN0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPgotPEREPlJlc3RvcmVzIHRoZSBwb2xpY3kgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIGZvciBhIHBhcnRpY3VsYXIgcHJvamVjdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjcmVzdG9yZURlZmF1bHRzKCkiPjxCPnJlc3RvcmVEZWZhdWx0cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0E+Ci08REQ+UmVzdG9yZXMgdGhlIHdvcmtzcGFjZSBsZXZlbCBkZWZhdWx0cy4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjcmVzdG9yZURlZmF1bHRzKG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0KSI+PEI+cmVzdG9yZURlZmF1bHRzKElQcm9qZWN0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEREPlJlc3RvcmVzIHRoZSBwcm9qZWN0IGxldmVsIGRlZmF1bHRzLgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTEyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xMy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTEzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyYjdhNDEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTEzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotUy1JbmRleAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlMtSW5kZXgiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTEzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfU18iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPlM8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yPC9CPjwvQT4gLSBDbGFzcyBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48REQ+VGhlIGFjdGl2YXRvciBjbGFzcyBjb250cm9scyB0aGUgcGx1Zy1pbiBsaWZlIGN5Y2xlPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjU2VydmljZVBvbGljeUFjdGl2YXRvcigpIj48Qj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yKCk8L0I+PC9BPiAtIAotQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yPC9BPgotPEREPlRoZSBjb25zdHJ1Y3RvcgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+U2VydmljZVBvbGljeUFjdGl2YXRvclVJPC9CPjwvQT4gLSBDbGFzcyBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48REQ+VGhlIGFjdGl2YXRvciBjbGFzcyBjb250cm9scyB0aGUgcGx1Zy1pbiBsaWZlIGN5Y2xlPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCNTZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkoKSI+PEI+U2VydmljZVBvbGljeUFjdGl2YXRvclVJKCk8L0I+PC9BPiAtIAotQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQT4KLTxERD5UaGUgY29uc3RydWN0b3IKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQj48L0E+IC0gQ2xhc3MgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PEREPlRoaXMgY2xhc3MgaXMgdXNlZCB0byBhY2Nlc3MgYW5kIGFkZCBzZXJ2aWNlIHBvbGljaWVzIHRvIHRoZSBwbGF0Zm9ybS48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9CPjwvQT4gLSBDbGFzcyBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48REQ+VGhpcyBjbGFzcyBpcyB1c2VkIHRvIGdldCBTZXJ2aWNlIHBvbGljeSBVSSBpbmZvcm1hdGlvbi48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL1NlcnZpY2VVdGlscy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIj48Qj5TZXJ2aWNlVXRpbHM8L0I+PC9BPiAtIENsYXNzIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzPC9BPjxERD5UaGlzIGNsYXNzIGNvbnRhaW5zIHV0aWxpdHkgbWV0aG9kIGZvciBzZXJ2aWNlIHBvbGljaWVzLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwjU2VydmljZVV0aWxzKCkiPjxCPlNlcnZpY2VVdGlscygpPC9CPjwvQT4gLSAKLUNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL1NlcnZpY2VVdGlscy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIj5TZXJ2aWNlVXRpbHM8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwjc2V0Q29udGV4dEhlbHBJZChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Q29udGV4dEhlbHBJZChTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SURlc2NyaXB0b3I8L0E+Ci08REQ+U2V0cyB0aGUgY29udGV4dCBoZWxwIGlkIGZvciB0aGlzIGRlc2NyaXB0b3IuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCNzZXRDdXJyZW50SXRlbShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0Q3VycmVudEl0ZW0oU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlRW51bTwvQT4KLTxERD5TZXRzIHRoZSBjdXJyZW50IGVudW0gaXRlbS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNzZXREZXNjcmlwdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0RGVzY3JpcHRpb24oU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklEZXNjcmlwdG9yPC9BPgotPEREPlNldHMgdGhlIGRlc2NyaXB0aW9uIGZvciB0aGlzIGRlc2NyaXB0b3IuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwjc2V0SWNvbkJ1bmRsZUlkKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRJY29uQnVuZGxlSWQoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklEZXNjcmlwdG9yPC9BPgotPEREPlNldHMgdGhlIGljb24gYnVuZGxlIGlkIGZvciB0aGlzIGRlc2NyaXB0b3IuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwjc2V0SWNvblBhdGgoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEljb25QYXRoKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT4KLTxERD5TZXRzIHRoZSBpY29uIHBhdGNoIGZvciB0aGlzIGRlc2NyaXB0b3IuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwjc2V0TG9uZ05hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldExvbmdOYW1lKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT4KLTxERD5TZXRzIHRoZSBsb25nIG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCNzZXRNdXRhYmxlKGJvb2xlYW4pIj48Qj5zZXRNdXRhYmxlKGJvb2xlYW4pPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZTwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjc2V0UHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCwgYm9vbGVhbikiPjxCPnNldFByb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQoSVByb2plY3QsIGJvb2xlYW4pPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0E+Ci08REQ+U2V0cyB3aGV0aGVyIGEgcHJvamVjdCBzcGVjaWZpYyBzZXJ2aWNlIHBvbGljeSBwcmVmZXJlbmNlcyBpcyBlbmFibGVkIG9yIG5vdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNzZXRSZWxhdGlvbnNoaXBzKGphdmEudXRpbC5MaXN0KSI+PEI+c2V0UmVsYXRpb25zaGlwcyhMaXN0Jmx0O0lQb2xpY3lSZWxhdGlvbnNoaXAmZ3Q7KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPgotPEREPlNldHMgdGhlIHJlbGF0aW9uc2hpcHMgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwjc2V0U2hvcnROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRTaG9ydE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklEZXNjcmlwdG9yPC9BPgotPEREPlNldHMgdGhlIHNob3J0IG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwjc2V0U3RhdGVJdGVtKG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0U3RhdGVJdGVtKElQcm9qZWN0LCBTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPgotPEREPlNldHMgdGhlIGN1cnJlbnQgZW51bWVyYXRpb24gaXRlbSBmb3IgdGhpcyBvcGVyYXRpb24uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjc2V0U3RhdHVzKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzKSI+PEI+c2V0U3RhdHVzKElTdGF0dXMpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Ci08REQ+U2V0cyB0aGUgc3RhdHVzIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9TZXJ2aWNlVXRpbHMuaHRtbCNzb3J0TGlzdChqYXZhLnV0aWwuTGlzdCkiPjxCPnNvcnRMaXN0KExpc3QmbHQ7SVNlcnZpY2VQb2xpY3kmZ3Q7KTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscy48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPlNlcnZpY2VVdGlsczwvQT4KLTxERD5Tb3J0cyBhIGxpc3Qgb2Ygc2VydmljZSBwb2xpY2llcy4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KSI+PEI+c3RhcnQoQnVuZGxlQ29udGV4dCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCNzdGFydChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkiPjxCPnN0YXJ0KEJ1bmRsZUNvbnRleHQpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCNzdGF0dXNDaGFuZ2Uob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5LCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cywgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXMpIj48Qj5zdGF0dXNDaGFuZ2UoSVNlcnZpY2VQb2xpY3ksIElTdGF0dXMsIElTdGF0dXMpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lTdGF0dXNDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklTdGF0dXNDaGFuZ2VMaXN0ZW5lcjwvQT4KLTxERD5DYWxsZWQgd2hlbiBhIHN0YXR1cyBjaGFuZ2UgZXZlbnQgb2NjdXJzLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkiPjxCPnN0b3AoQnVuZGxlQ29udGV4dCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCNzdG9wKG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KSI+PEI+c3RvcChCdW5kbGVDb250ZXh0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+U2VydmljZVBvbGljeUFjdGl2YXRvclVJPC9BPgotPEREPiZuYnNwOwotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTEzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xNC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTE0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNGVkZDIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTE0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVC1JbmRleAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlQtSW5kZXgiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTE0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfVF8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPlQ8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sI1RSVUVfRU5VTSI+PEI+VFJVRV9FTlVNPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGVFbnVtPC9BPgotPEREPiZuYnNwOwotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTE0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xNS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTE1Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTNjOGIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTE1Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVi1JbmRleAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlYtSW5kZXgiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7TkVYVCBMRVRURVI8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xNS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotPEEgTkFNRT0iX1ZfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5WPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sI3ZhbHVlT2YoamF2YS5sYW5nLlN0cmluZykiPjxCPnZhbHVlT2YoU3RyaW5nKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGVudW0gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ8L0E+Ci08REQ+UmV0dXJucyB0aGUgZW51bSBjb25zdGFudCBvZiB0aGlzIHR5cGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sI3ZhbHVlcygpIj48Qj52YWx1ZXMoKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGVudW0gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ8L0E+Ci08REQ+UmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBjb25zdGFudHMgb2YgdGhpcyBlbnVtIHR5cGUsIGluCi10aGUgb3JkZXIgdGhleSdyZSBkZWNsYXJlZC4KLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwO05FWFQgTEVUVEVSPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMTUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xNS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlY8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjN2M1M2MuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1DLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iQy1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTMuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotPEEgTkFNRT0iX0NfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5DPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sI2NoaWxkQ2hhbmdlKGphdmEudXRpbC5MaXN0LCBqYXZhLnV0aWwuTGlzdCkiPjxCPmNoaWxkQ2hhbmdlKExpc3QmbHQ7SVNlcnZpY2VQb2xpY3kmZ3Q7LCBMaXN0Jmx0O0Jvb2xlYW4mZ3Q7KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9BPgotPEREPlRoZSBtZXRob2QgaXMgY2FsbGVkIHdpdGggYW4gYXJyYXkgb2YgY2hpbGQgY2hhbmdlcy4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjY29tbWl0Q2hhbmdlcygpIj48Qj5jb21taXRDaGFuZ2VzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQT4KLTxERD5DYWxsaW5nIHRoaXMgbWV0aG9kIHdpbGwgY29tbWl0IGFsbCB0aGUgc3RhdGUgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSB0byBhbGwKLSB0aGUgc2VydmljZSBwb2xpY2llcy4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjY29tbWl0Q2hhbmdlcyhvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPjxCPmNvbW1pdENoYW5nZXMoSVByb2plY3QpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0E+Ci08REQ+Q2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGNvbW1pdCBhbGwgdGhlIHN0YXRlIGNoYW5nZXMgdGhhdCB3ZXJlIG1hZGUgdG8gYWxsCi0gdGhlIHNlcnZpY2UgcG9saWNpZXMgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNjcmVhdGVTZXJ2aWNlUG9saWN5KG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmNyZWF0ZVNlcnZpY2VQb2xpY3koSVNlcnZpY2VQb2xpY3ksIFN0cmluZywgU3RyaW5nLCBTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0E+Ci08REQ+VGhpcyBtZXRob2QgY3JlYXRlcyBhbiBJU2VydmljZVBvbGljeSBvYmplY3QuCi08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTMuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE3YzQxZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUQtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJELUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTIuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNC5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfRF8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkQ8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwjRGVmYXVsdFZhbHVlS2V5Ij48Qj5EZWZhdWx0VmFsdWVLZXk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNkaXNjYXJkQ2hhbmdlcygpIj48Qj5kaXNjYXJkQ2hhbmdlcygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0E+Ci08REQ+Q2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGRpc2NhcmQgYWxsIHRoZSBzdGF0ZSBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlIHRvIGFsbAotIHRoZSBzZXJ2aWNlIHBvbGljaWVzLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNkaXNjYXJkQ2hhbmdlcyhvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPjxCPmRpc2NhcmRDaGFuZ2VzKElQcm9qZWN0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEREPkNhbGxpbmcgdGhpcyBtZXRob2Qgd2lsbCBkaXNjYXJkIGFsbCB0aGUgc3RhdGUgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSB0byBhbGwKLSB0aGUgc2VydmljZSBwb2xpY2llcyBmb3IgYSBwYXJ0aWN1bGFyIHByb2plY3QuCi08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTQuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0zLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYwMmIzNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUUtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJFLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTMuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNS5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtNC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfRV8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkU8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwjZWFybHlTdGFydHVwKCkiPjxCPmVhcmx5U3RhcnR1cCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0E+Ci08REQ+Q2FsbGVkIGJ5IEVjbGlwc2Ugd2hlbiBpdCBzdGFydHMgdXAuCi08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0zLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTUuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC00Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU5YTNkZi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUYtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJGLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTQuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNi5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtNS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfRl8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkY8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sI0ZBTFNFX0VOVU0iPjxCPkZBTFNFX0VOVU08L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZUVudW08L0E+Ci08REQ+Jm5ic3A7Ci08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC00Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTYuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC01Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE1NTU4Mi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzE5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUctSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJHLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTUuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNy5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtNi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTYuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfR18iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkc8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sI2dldEFjdGlvbigpIj48Qj5nZXRBY3Rpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVF1aWNrRml4QWN0aW9uSW5mbzwvQT4KLTxERD5SZXR1cm5zIHRoZSBhY3Rpb24gZm9yIHRoaXMgcXVpY2sgZml4LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI2dldEFsbE9wZXJhdGlvbnMoKSI+PEI+Z2V0QWxsT3BlcmF0aW9ucygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9BPgotPEREPlJldHVybnMgYWxsIHRoZSBvcGVyYXRpb25zIGZvciBhbGwga25vd24gcG9saWNpZXMuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2dldEFsbFBvbGljeUlkcygpIj48Qj5nZXRBbGxQb2xpY3lJZHMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEREPlJldHVybnMgYWxsIHNlcnZpY2UgcG9saWN5IElEcyB0aGF0IGFyZSBkZWZpbmVkLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmh0bWwjZ2V0QXR0cmlidXRlKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRBdHRyaWJ1dGUoSUNvbmZpZ3VyYXRpb25FbGVtZW50LCBTdHJpbmcpPC9CPjwvQT4gLSAKLVN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMiPlJlZ2lzdHJ5VXRpbHM8L0E+Ci08REQ+R2V0cyBhIGF0dHJpYnV0ZSB2YWx1ZSB3aGVyZSB0aGUgYXR0cmlidXRlIG5hbWUgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sI2dldEF0dHJpYnV0ZU5hbWUob3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudCwgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEF0dHJpYnV0ZU5hbWUoSUNvbmZpZ3VyYXRpb25FbGVtZW50LCBTdHJpbmcpPC9CPjwvQT4gLSAKLVN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMiPlJlZ2lzdHJ5VXRpbHM8L0E+Ci08REQ+VGhpcyBtZXRob2QgdGFrZXMgaW4gYSBsb3dlciBjYXNlIGF0dHJpYnV0ZSBuYW1lLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI2dldENoaWxkcmVuKCkiPjxCPmdldENoaWxkcmVuKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNnZXRDb250ZXh0SGVscElkKCkiPjxCPmdldENvbnRleHRIZWxwSWQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklEZXNjcmlwdG9yPC9BPgotPEREPlJldHVybnMgdGhlIGNvbnRleHQgaGVscCBpZC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvQWN0aXZpdHlVdGlscy5odG1sI2dldEN1cnJlbnRBY3Rpdml0aWVzRmlsdGVyKCkiPjxCPmdldEN1cnJlbnRBY3Rpdml0aWVzRmlsdGVyKCk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL0FjdGl2aXR5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI+QWN0aXZpdHlVdGlsczwvQT4KLTxERD5SZXR1cm5zIGEgc2VydmljZSBwb2xpY3kgZmlsdGVyIGJhc2VkIG9uIHRoZSBFY2xpcHNlIGFjdGl2aXRpZXMgc2V0dGluZ3MuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCNnZXRDdXJyZW50SXRlbSgpIj48Qj5nZXRDdXJyZW50SXRlbSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGVFbnVtPC9BPgotPEREPlJldHVybnMgdGhlIGN1cnJlbnQgZW51bSBpdGVtLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjZ2V0RGVmYXVsdCgpIj48Qj5nZXREZWZhdWx0KCk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQT4KLTxERD5SZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwjZ2V0RGVmYXVsdCgpIj48Qj5nZXREZWZhdWx0KCk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0E+Ci08REQ+UmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCNnZXREZWZhdWx0SWQoKSI+PEI+Z2V0RGVmYXVsdElkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZUVudW08L0E+Ci08REQ+UmV0dXJucyB0aGUgZGVmYXVsdCBlbnVtIGl0ZW0gZm9yIHRoaXMgZW51bWVyYXRpb24uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXREZWZhdWx0SXRlbSgpIj48Qj5nZXREZWZhdWx0SXRlbSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPgotPEREPlJldHVybnMgdGhlIGRlZmF1bHQgZW51bWVyYXRpb24gaXRlbSBmb3IgdGhpcyBvcGVyYXRpb24uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwjZ2V0RGVzY3JpcHRpb24oKSI+PEI+Z2V0RGVzY3JpcHRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklEZXNjcmlwdG9yPC9BPgotPEREPlJldHVybnMgdGhlIGRlc2NyaXB0aW9uIGZvciB0aGlzIGRlc2NyaXB0b3IuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0RGVzY3JpcHRvcigpIj48Qj5nZXREZXNjcmlwdG9yKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4KLTxERD5SZXR1cm5zIHRoZSBkZXNjcmlwdG9yIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwjZ2V0RGVzY3JpcHRvcigpIj48Qj5nZXREZXNjcmlwdG9yKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgZGVzY3JpcHRvciBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCNnZXREZXNjcmlwdG9yKCkiPjxCPmdldERlc2NyaXB0b3IoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVF1aWNrRml4QWN0aW9uSW5mbzwvQT4KLTxERD5SZXR1cm5zIGEgZGVzY3JpcHRvciBmb3IgdGhpcyBxdWljayBmaXguCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXRFbnVtZXJhdGlvbklkKCkiPjxCPmdldEVudW1lcmF0aW9uSWQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSBlbnVtIElEIGZvciB0aGlzIG9wZXJhdGlvbi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sI2dldEVudW1lcmF0aW9uTGlzdCgpIj48Qj5nZXRFbnVtZXJhdGlvbkxpc3QoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT4KLTxERD5SZXR1cm5zIHRoZSBzdGF0ZSBlbnVtZXJhdGlvbiBsaXN0IGl0ZW1zLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwjZ2V0RW51bWVyYXRpb25MaXN0KCkiPjxCPmdldEVudW1lcmF0aW9uTGlzdCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDwvQT4KLTxERD5SZXR1cm5zIGEgbGlzdCBvZiBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtcy4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sI2dldEVudW1JZCgpIj48Qj5nZXRFbnVtSWQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlRW51bTwvQT4KLTxERD5SZXR1cm5zIHRoZSBlbnVtZXJhdGlvbiBpZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXJ2aWNlIHBvbGljeS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNnZXRJY29uQnVuZGxlSWQoKSI+PEI+Z2V0SWNvbkJ1bmRsZUlkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT4KLTxERD5SZXR1cm5zIHRoZSBpY29uIGJ1bmRsZSBpZC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNnZXRJY29uUGF0aCgpIj48Qj5nZXRJY29uUGF0aCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SURlc2NyaXB0b3I8L0E+Ci08REQ+UmV0dXJucyB0aGUgaWNvbiBwYXRoIHJlbGF0aXZlIHRvIGFuIGljb24gYnVuZGxlLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4KLTxERD5SZXR1cm5zIHRoZSB1bmlxdWUgSUQgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPgotPEREPlJldHVybnMgdGhlIElEIG9mIHRoaXMgc3RhdGUgZW51bWVyYXRpb24gaXRlbS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sI2dldElkKCkiPjxCPmdldElkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgdW5pcXVlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwjZ2V0SW1hZ2VEZXNjcmlwdG9yKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRJbWFnZURlc2NyaXB0b3IoU3RyaW5nKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQT4KLTxERD5SZXR1cm5zIGFuIGltYWdlIGRlc2NyaXB0b3IgZm9yIHRoZSBuYW1lZCByZXNvdXJjZQotIGFzIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gaW5zdGFsbCBsb2NhdGlvbi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjZ2V0SW5zdGFuY2UoKSI+PEI+Z2V0SW5zdGFuY2UoKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQT4KLTxERD5SZXR1cm5zIGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwjZ2V0SW5zdGFuY2UoKSI+PEI+Z2V0SW5zdGFuY2UoKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+U2VydmljZVBvbGljeVBsYXRmb3JtVUk8L0E+Ci08REQ+UmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGlzIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtIFVJIG9iamVjdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNnZXRMb25nTmFtZSgpIj48Qj5nZXRMb25nTmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SURlc2NyaXB0b3I8L0E+Ci08REQ+UmV0dXJucyB0aGUgbG9uZyBuYW1lIGZvciB0aGUgZGVzY3JpcHRvci4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwjZ2V0TG9uZ05hbWUoKSI+PEI+Z2V0TG9uZ05hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0E+Ci08REQ+UmV0dXJucyB0aGUgbG9uZyBuYW1lIG9mIHRoaXMgc3RhdGUgZW51bWVyYXRpb24gaXRlbS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCNnZXRPcGVyYXRpb24ob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0T3BlcmF0aW9uKElTZXJ2aWNlUG9saWN5LCBTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9BPgotPEREPlJldHVybnMgYW4gb3BlcmF0aW9uIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBzZXJ2aWNlIHBvbGljeQotIGFuZCBoYXMgdGhlIHNwZWNpZmllZCBpZC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sI2dldE9wZXJhdGlvbktpbmQoKSI+PEI+Z2V0T3BlcmF0aW9uS2luZCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPgotPEREPlJldHVybnMgdGhlIGtpbmQgb2Ygc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI2dldE9wZXJhdGlvbnMob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5LCBib29sZWFuKSI+PEI+Z2V0T3BlcmF0aW9ucyhJU2VydmljZVBvbGljeSwgYm9vbGVhbik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+U2VydmljZVBvbGljeVBsYXRmb3JtVUk8L0E+Ci08REQ+UmV0dXJucyB0aGUgbGlzdCBvZiBvcGVyYXRpb25zIGZvciB0aGlzIHBvbGljeS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCNnZXRPcGVyYXRpb25zTGlzdChqYXZhLnV0aWwuTGlzdCwgYm9vbGVhbikiPjxCPmdldE9wZXJhdGlvbnNMaXN0KExpc3QmbHQ7SVNlcnZpY2VQb2xpY3kmZ3Q7LCBib29sZWFuKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSTwvQT4KLTxERD5SZXR1cm5zIGEgbGlzdCBvZiBsaXN0IHBvbGljeSBvcGVyYXRpb25zIHdoaWNoIGFyZSBhc3NvY2lhdGVkIHdpdGgKLSB0aGUgc3BlY2lmaWVkIHNlcnZpY2UgcG9saWNpZXMuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0UGFyZW50UG9saWN5KCkiPjxCPmdldFBhcmVudFBvbGljeSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Ci08REQ+UmV0dXJucyB0aGUgcGFyZW50IHNlcnZpY2UgcG9saWN5IG9iamVjdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sI2dldFBvbGljeSgpIj48Qj5nZXRQb2xpY3koKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT4KLTxERD5SZXR1cm5zIHRoZSBzZXJ2aWNlIHBvbGljeSBmb3IgdGhpcyBsaXN0LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwjZ2V0UG9saWN5KCkiPjxCPmdldFBvbGljeSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDwvQT4KLTxERD5SZXR1cm5zIGEgc2VydmljZSBwb2xpY3kuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCNnZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3QoKSI+PEI+Z2V0UG9saWN5RW51bWVyYXRpb25MaXN0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+Ci08REQ+UmV0dXJucyB0aGUgcG9saWN5IGVudW1lcmF0aW9uIGxpc3QgZm9yIHRoaXMgcmVsYXRpb25zaGlwLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwjZ2V0UG9saWN5RW51bWVyYXRpb25MaXN0KCkiPjxCPmdldFBvbGljeUVudW1lcmF0aW9uTGlzdCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+UG9saWN5UmVsYXRpb25zaGlwSW1wbDwvQT4KLTxERD5SZXR1cm5zIHRoZSBwb2xpY3kgZW51bWVyYXRpb24gbGlzdCBmb3IgdGhpcyByZWxhdGlvbnNoaXAuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXRQb2xpY3lJZFBhdHRlcm4oKSI+PEI+Z2V0UG9saWN5SWRQYXR0ZXJuKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgaWQgcGF0dGVybiBmb3IgdGhpcyBvcGVyYXRpb24uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0UG9saWN5U3RhdGUoKSI+PEI+Z2V0UG9saWN5U3RhdGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPgotPEREPlJldHVybnMgdGhlIHBvbGljeSBzdGF0ZSBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNnZXRQb2xpY3lTdGF0ZShvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPjxCPmdldFBvbGljeVN0YXRlKElQcm9qZWN0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPgotPEREPlJldHVybnMgdGhlIElQb2xpY3lTdGF0ZSBmb3IgYSBwYXJ0aWN1bGFyIHByb2plY3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0UG9saWN5U3RhdGVFbnVtKCkiPjxCPmdldFBvbGljeVN0YXRlRW51bSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Ci08REQ+UmV0dXJucyB0aGUgcG9saWN5IHN0YXRlIGVudW1lcmF0aW9uIG9iamVjdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNnZXRQb2xpY3lTdGF0ZUVudW0ob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj48Qj5nZXRQb2xpY3lTdGF0ZUVudW0oSVByb2plY3QpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Ci08REQ+UmV0dXJucyB0aGUgcG9saWN5IHN0YXRlIGVudW1lcmF0aW9uIG9iamVjdCBmb3IgYSBwYXJ0aWN1bGFyIHByb2plY3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwjZ2V0UXVpY2tGaXhlcyhvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cykiPjxCPmdldFF1aWNrRml4ZXMoSVN0YXR1cyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+U2VydmljZVBvbGljeVBsYXRmb3JtVUk8L0E+Ci08REQ+UmV0dXJucyBhIGxpc3Qgb2YgcXVpY2sgZml4IGluZm8gZm9yIHRoZSBzcGVjaWZpZWQgc3RhdHVzIG9iamVjdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sI2dldFJlbGF0ZWRQb2xpY2llcygpIj48Qj5nZXRSZWxhdGVkUG9saWNpZXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVJlbGF0aW9uc2hpcDwvQT4KLTxERD5SZXR1cm5zIHRoZSByZWxhdGVkIHBvbGljaWVzIGZvciB0aGlzIHJlbGF0aW9uc2hpcC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sI2dldFJlbGF0ZWRQb2xpY2llcygpIj48Qj5nZXRSZWxhdGVkUG9saWNpZXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlBvbGljeVJlbGF0aW9uc2hpcEltcGw8L0E+Ci08REQ+UmV0dXJucyB0aGUgcmVsYXRlZCBwb2xpY2llcyBmb3IgdGhpcyByZWxhdGlvbnNoaXAuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0UmVsYXRpb25zaGlwcygpIj48Qj5nZXRSZWxhdGlvbnNoaXBzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4KLTxERD5SZXR1cm5zIGEgbGlzdCBvZiByZWxhdGlvbnNoaXBzIHRvIG90aGVyIElTZXJ2aWNlUG9saWN5IG9iamVjdHMuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2dldFJvb3RTZXJ2aWNlUG9saWNpZXMob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklGaWx0ZXIpIj48Qj5nZXRSb290U2VydmljZVBvbGljaWVzKElGaWx0ZXIpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0E+Ci08REQ+UmV0dXJucyB0aGUgbGlzdCBvZiByb290IHBvbGljaWVzIGZvciB0aGUgcGxhdGZvcm0gZ2l2ZW4gYSBmaWx0ZXIuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2dldFNlcnZpY2VQb2xpY3koamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFNlcnZpY2VQb2xpY3koU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEREPlJldHVybnMgYSBzZXJ2aWNlIHBvbGljeSBnaXZlbiBpdCdzIHVuaXF1ZSBJRC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sI2dldFNlcnZpY2VQb2xpY3koKSI+PEI+Z2V0U2VydmljZVBvbGljeSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPgotPEREPlJldHVybnMgdGhlIHNlcnZpY2UgcG9saWN5IGZvciB0aGlzIG9wZXJhdGlvbi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNnZXRTaG9ydE5hbWUoKSI+PEI+Z2V0U2hvcnROYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT4KLTxERD5SZXR1cm5zIHRoZSBzaG9ydCBuYW1lIGZvciB0aGUgZGVzY3JpcHRvcgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCNnZXRTaG9ydE5hbWUoKSI+PEI+Z2V0U2hvcnROYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPgotPEREPlJldHVybnMgdGhlIHNob3J0IG5hbWUgb2YgdGhpcyBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNnZXRTdGF0ZUVudW1lcmF0aW9uKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRTdGF0ZUVudW1lcmF0aW9uKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sI2dldFN0YXRlSXRlbShvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPjxCPmdldFN0YXRlSXRlbShJUHJvamVjdCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgY3VycmVudCBlbnVtZXJhdGlvbiBpdGVtIGZvciB0aGlzIG9wZXJhdGlvbi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjZ2V0U3RhdGVJdGVtRW51bWVyYXRpb24oamF2YS5sYW5nLlN0cmluZykiPjxCPmdldFN0YXRlSXRlbUVudW1lcmF0aW9uKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNnZXRTdGF0dXMoKSI+PEI+Z2V0U3RhdHVzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4KLTxERD5SZXR1cm5zIHRoZSBzdGF0dXMgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sI2dldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRWYWx1ZShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZTwvQT4KLTxERD5UaGlzIG1ldGhvZCBnZXRzIHNvbWUgc3RhdGUgZm9yIGEgc2VydmljZSBwb2xpY3kuCi08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC01Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTcuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTYuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC02Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMwZmFjYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUktSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTYuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtOC5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtNy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5WPC9BPiA8SFI+Ci08QSBOQU1FPSJfSV8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkk8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklEZXNjcmlwdG9yPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PEREPlRoaXMgaW50ZXJmYWNlIGVuY2Fwc3VsYXRlcyB0aGUgaWRlYSBvZiBhIGRlc2NyaXB0aW9uIGZvciBhIHNlcnZpY2UgcG9saWN5LjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUVuYWJsZU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+SUVuYWJsZU9wZXJhdGlvbjwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPjxERD5UaGlzIGludGVyZmFjZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGVuYWJsZWRDbGFzcyBhdHRyaWJ1dGUgb2YgdGhlCi0gZW5hYmxlZCBlbGVtZW50LjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SUZpbHRlcjwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPjxERD5UaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGZpbHRlciBzZXJ2aWNlIHBvbGljaWVzLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUxhdW5jaE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+SUxhdW5jaE9wZXJhdGlvbjwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPjxERD5UaGlzIGludGVyZmFjZSBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGxhdW5jaENsYXNzIGF0dHJpYnV0ZSBvZgotIHRoZSBjb21wbGV4IGVsZW1lbnQuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Qj5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnM8L0E+PEREPiZuYnNwOzxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPjxERD5UaGlzIGludGVyZmFjZSBlbmNhcHN1bGF0ZXMgdGhlIGNvbWJpbmF0aW9uIG9mIGEgcG9saWN5IGFuZCBhIGxpc3QKLSBvZiBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtcy48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPklQb2xpY3lPcGVyYXRpb248L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48REQ+VGhpcyBpbnRlcmZhY2UgcmVwcmVzZW50cyBhIFNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbiB0aGF0IGhhcyBiZWVuIGRlZmluZWQKLSBpbiB0aGUgcGx1Z2luLnhtbCBtZXRhIGRhdGEuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ8L0I+PC9BPiAtIEVudW0gaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+PEREPkluZGljYXRlcyB0aGUga2luZCBvZiBTZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24gdGhhdCB0aGlzIG9iamVjdCByZXByZXNlbnRzLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxCPklQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcjwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnM8L0E+PEREPlRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gcmVnaXN0ZXIgY29kZSB0aGF0IG5lZWRzIHRvIGV4ZWN1dGUgd2hlbiB0aGUKLSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybSBpcyBsb2FkZWQuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxCPklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXI8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzPC9BPjxERD5UaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIHJlZ2lzdGVyIGNvZGUgdGhhdCBuZWVkcyB0byBsb2FkZWQgd2hlbiBhIHBhcnRpY3VsYXIKLSBwcm9qZWN0IGlzIGxvYWRlZCBpbnRvIHRoZSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybS48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklQb2xpY3lSZWxhdGlvbnNoaXA8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48REQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBkZXNjcmliZSB0aGUgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIGJldHdlZW4KLSBzZXJ2aWNlIHBvbGljaWVzLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JUG9saWN5U3RhdGU8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48REQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBzZXJ2aWNlIHBvbGljeSBleHRlbmRlcnMgdG8gc2F2ZSB0aGUgc3RhdGUgb2YKLSB0aGVyZSBwb2xpY2llcy48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxCPklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQT48REQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB3aGVuIHRoZSBkZXZlbG9wZXIgd2FudHMgdG8gbGlzdGVuZXIgdG8gc3RhdGUKLSBjaGFuZ2VzIGZvciBhIHBhcnRpY3VsYXIgc2VydmljZSBwb2xpY3kuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JUG9saWN5U3RhdGVFbnVtPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PEREPlRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBzdGF0ZSB3aGVuIGFuIGVudW1lcmF0aW9uIGlzIHVzZWQKLSB0byBwZXJzaXN0IHN0YXRlLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5JUXVpY2tGaXhBY3Rpb248L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48REQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBleHRlbmRlcnMgdG8gYWRkIHF1aWNrIGZpeGVzIHRvIHRoZSBzZXJ2aWNlIHBvbGljeSB1aQotIGZyYW1ld29yay48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPklRdWlja0ZpeEFjdGlvbkluZm88L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48REQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBzdG9yZSBxdWljayBmaXggYWN0aW9uIGluZm9ybWF0aW9uLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwjaXNEZWZhdWx0KCkiPjxCPmlzRGVmYXVsdCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT4KLTxERD5SZXR1cm5zIHdoZXRoZXIgdGhpcyBpcyB0aGUgZGVmYXVsdCBpdGVtIG9yIG5vdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjaXNFbmFibGVkKGphdmEubGFuZy5PYmplY3QpIj48Qj5pc0VuYWJsZWQoT2JqZWN0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPgotPEREPkluZGljYXRlcyBpZiB0aGUgcHJvcGVydHkgcGFnZSBmb3IgYSBwcm9qZWN0IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBwb3B1cAotIG1lbnUgb3Igbm90LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JRW5hYmxlT3BlcmF0aW9uLmh0bWwjaXNFbmFibGVkKGphdmEudXRpbC5MaXN0KSI+PEI+aXNFbmFibGVkKExpc3QmbHQ7SVNlcnZpY2VQb2xpY3kmZ3Q7KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUVuYWJsZU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SUVuYWJsZU9wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHdoZXRoZXIgdGhlIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbiBzaG91bGQgYmUgZW5hYmxlZCBvciBub3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNpc0VuYWJsZWQoamF2YS51dGlsLkxpc3QpIj48Qj5pc0VuYWJsZWQoTGlzdCZsdDtJU2VydmljZVBvbGljeSZndDspPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPgotPEREPlJldHVybnMgd2hldGhlciB0aGlzIG9wZXJhdGlvbiBzaG91bGQgYmUgZW5hYmxlZCBvciBub3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JU2VydmljZVBvbGljeTwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPjxERD5UaGlzIGludGVyZmFjZSBlbmNhcHN1bGF0ZXMgdGhlIGlkZWEgb2YgYSBzZXJ2aWNlIHBvbGljeTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwjaXNNdXRhYmxlKCkiPjxCPmlzTXV0YWJsZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZTwvQT4KLTxERD5SZXR1cm5zIHdoZXRoZXIgdGhlIHN0YXRlIG9mIHRoaXMgcG9saWN5IGlzIG11dGlibGUgb3Igbm90LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI2lzUHJlZGVmaW5lZCgpIj48Qj5pc1ByZWRlZmluZWQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPgotPEREPlJldHVybnMgaWYgdGhpcyBzZXJ2aWNlIHBvbGljeSBpcyBkZWZpbmVkIGJ5IGFuIGV4dGVuc2lvbiBvciBub3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2lzUHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPjxCPmlzUHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChJUHJvamVjdCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQT4KLTxERD5SZXR1cm5zIGlmIHRoZSBwYXJ0aWN1bGFyIHByb2plY3QgaGFzIGJlZW4gZW5hYmxlZCBvciBub3Qgb24gaXQncwotIHNlcnZpY2UgcG9saWN5IHByb3BlcnR5IHBhZ2UuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PEREPlRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZGVzY3JpYmUgYSBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtIHRoYXQgd2FzCi0gZGVmaW5lZCBieSBhbiBlbnVtZXJhdGlvbiBpbiBwbHVnaW4ueG1sIG1ldGEgZGF0YS48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Qj5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzPC9BPjxERD5UaGlzIGludGVyZmFjZSBpcyB1c2VkIGJ5IGNvZGUgdGhhdCBpcyBpbnRlcmVzdGVkIGluIGxpc3RlbmluZyB0byBzdGF0dXMKLSBjaGFuZ2UgZXZlbnRzIG9mIHNlcnZpY2UgcG9saWNpZXMuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwjaXNVc2VEZWZhdWx0RGF0YSgpIj48Qj5pc1VzZURlZmF1bHREYXRhKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB3aGV0aGVyIHRoaXMgb3BlcmF0aW9uIHVzZXMgZGVmYXVsdCBzdGF0ZSBvciBub3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNpc1dvcmtzcGFjZU9ubHkoKSI+PEI+aXNXb3Jrc3BhY2VPbmx5KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB3aGV0aGVyIHRoaXMgaXMgYSB3b3Jrc3BhY2Ugb25seSBvcGVyYXRpb24gb3Igbm90LgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNi5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC04Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC03Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlY8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTguaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC04Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhOGE3MDIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1MLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iTC1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC03Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTkuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTguaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC04Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotPEEgTkFNRT0iX0xfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5MPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uaHRtbCNsYXVuY2goamF2YS51dGlsLkxpc3QpIj48Qj5sYXVuY2goTGlzdCZsdDtJU2VydmljZVBvbGljeSZndDspPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JTGF1bmNoT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JTGF1bmNoT3BlcmF0aW9uPC9BPgotPEREPlRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCB0aGlzIGNvbXBsZXggb3BlcmF0aW9uLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwjbGF1bmNoT3BlcmF0aW9uKGphdmEudXRpbC5MaXN0KSI+PEI+bGF1bmNoT3BlcmF0aW9uKExpc3QmbHQ7SVNlcnZpY2VQb2xpY3kmZ3Q7KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbjwvQT4KLTxERD5MYXVuY2hlcyB0aGUgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIGlmIHRoaXMgaXMgYSBjb21wbGV4IG9wZXJhdGlvbi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sI2xvYWQoKSI+PEI+bG9hZCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcjwvQT4KLTxERD5DYWxsZWQgb25jZSB3aGVuIHRoZSBzZXJ2aWNlIHBsYXRmb3JtIGlzIGxvYWRlZCBpbiB0aGUgc3lzdGVtLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sI2xvYWQob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj48Qj5sb2FkKElQcm9qZWN0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcjwvQT4KLTxERD5UaGlzIG1ldGhvZCBpcyBjYWxsZWQgb25jZSB3aGVuIGEgcHJvamVjdCBsb2FkZWQgaW50byB0aGUgc2VydmljZSBwb2xpY3kKLSBwbGF0Zm9ybS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sI2xvYWREZXNjcmlwdG9yKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQpIj48Qj5sb2FkRGVzY3JpcHRvcihJQ29uZmlndXJhdGlvbkVsZW1lbnQpPC9CPjwvQT4gLSAKLVN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMiPlJlZ2lzdHJ5VXRpbHM8L0E+Ci08REQ+TG9hZHMgdGhlIGF0dHJpYnV0ZXMgZm9yIGEgZGVzY3JpcHRvciBlbGVtZW50LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjbG9nRXJyb3IoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlRocm93YWJsZSkiPjxCPmxvZ0Vycm9yKFN0cmluZywgVGhyb3dhYmxlKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yPC9BPgotPEREPkxvZ3MgYW4gZXJyb3Igd2l0aCB0aGlzIHBsdWdpbi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwjbG9nRXJyb3IoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlRocm93YWJsZSkiPjxCPmxvZ0Vycm9yKFN0cmluZywgVGhyb3dhYmxlKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQT4KLTxERD5Mb2dzIGVycm9yIG1lc3NhZ2UgZm9yIHRoaXMgcGx1Z2luLgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNy5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC05Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC04Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtOC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlY8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC05Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NTg4OTguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1PLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iTy1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC04Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC05Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtOS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlY8L0E+IDxIUj4KLTxBIE5BTUU9Il9PXyI+PCEtLSAtLT48L0E+PEgyPgotPEI+TzwvQj48L0gyPgotPERMPgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTxERD4mbmJzcDs8RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQj48L0E+IC0gcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzPEREPiZuYnNwOzxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQj48L0E+IC0gcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8REQ+Jm5ic3A7PERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczxERD4mbmJzcDs8RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHM8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzPEREPiZuYnNwOzwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTguaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC05Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+VjwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvaW5kZXguaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjRiYjQxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9pbmRleC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgRnJhbWVzZXQvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvZnJhbWVzZXQuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4LS0+Ci08VElUTEU+Ci1HZW5lcmF0ZWQgRG9jdW1lbnRhdGlvbiAoVW50aXRsZWQpCi08L1RJVExFPgotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIHRhcmdldFBhZ2UgPSAiIiArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7Ci0gICAgaWYgKHRhcmdldFBhZ2UgIT0gIiIgJiYgdGFyZ2V0UGFnZSAhPSAidW5kZWZpbmVkIikKLSAgICAgICB0YXJnZXRQYWdlID0gdGFyZ2V0UGFnZS5zdWJzdHJpbmcoMSk7Ci0gICAgZnVuY3Rpb24gbG9hZEZyYW1lcygpIHsKLSAgICAgICAgaWYgKHRhcmdldFBhZ2UgIT0gIiIgJiYgdGFyZ2V0UGFnZSAhPSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgICB0b3AuY2xhc3NGcmFtZS5sb2NhdGlvbiA9IHRvcC50YXJnZXRQYWdlOwotICAgIH0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLTwvSEVBRD4KLTxGUkFNRVNFVCBjb2xzPSIyMCUsODAlIiB0aXRsZT0iIiBvbkxvYWQ9InRvcC5sb2FkRnJhbWVzKCkiPgotPEZSQU1FU0VUIHJvd3M9IjMwJSw3MCUiIHRpdGxlPSIiIG9uTG9hZD0idG9wLmxvYWRGcmFtZXMoKSI+Ci08RlJBTUUgc3JjPSJvdmVydmlldy1mcmFtZS5odG1sIiBuYW1lPSJwYWNrYWdlTGlzdEZyYW1lIiB0aXRsZT0iQWxsIFBhY2thZ2VzIj4KLTxGUkFNRSBzcmM9ImFsbGNsYXNzZXMtZnJhbWUuaHRtbCIgbmFtZT0icGFja2FnZUZyYW1lIiB0aXRsZT0iQWxsIGNsYXNzZXMgYW5kIGludGVyZmFjZXMgKGV4Y2VwdCBub24tc3RhdGljIG5lc3RlZCB0eXBlcykiPgotPC9GUkFNRVNFVD4KLTxGUkFNRSBzcmM9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCIgbmFtZT0iY2xhc3NGcmFtZSIgdGl0bGU9IlBhY2thZ2UsIGNsYXNzIGFuZCBpbnRlcmZhY2UgZGVzY3JpcHRpb25zIiBzY3JvbGxpbmc9InllcyI+Ci08Tk9GUkFNRVM+Ci08SDI+Ci1GcmFtZSBBbGVydDwvSDI+Ci0KLTxQPgotVGhpcyBkb2N1bWVudCBpcyBkZXNpZ25lZCB0byBiZSB2aWV3ZWQgdXNpbmcgdGhlIGZyYW1lcyBmZWF0dXJlLiBJZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSwgeW91IGFyZSB1c2luZyBhIG5vbi1mcmFtZS1jYXBhYmxlIHdlYiBjbGllbnQuCi08QlI+Ci1MaW5rIHRvPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj5Ob24tZnJhbWUgdmVyc2lvbi48L0E+Ci08L05PRlJBTUVTPgotPC9GUkFNRVNFVD4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg2ZjVlMC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NTEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM3IEVEVCAyMDA4IC0tPgotPFRJVExFPgotSURlc2NyaXB0b3IKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSURlc2NyaXB0b3IgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJRGVzY3JpcHRvciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lEZXNjcmlwdG9yLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIENMQVNTJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklEZXNjcmlwdG9yLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSURlc2NyaXB0b3I8L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5JRGVzY3JpcHRvcjwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhpcyBpbnRlcmZhY2UgZW5jYXBzdWxhdGVzIHRoZSBpZGVhIG9mIGEgZGVzY3JpcHRpb24gZm9yIGEgc2VydmljZSBwb2xpY3kuCi08UD4KLQotPFA+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sI2dldENvbnRleHRIZWxwSWQoKSI+Z2V0Q29udGV4dEhlbHBJZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGNvbnRleHQgaGVscCBpZC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNnZXREZXNjcmlwdGlvbigpIj5nZXREZXNjcmlwdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGRlc2NyaXB0aW9uIGZvciB0aGlzIGRlc2NyaXB0b3IuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwjZ2V0SWNvbkJ1bmRsZUlkKCkiPmdldEljb25CdW5kbGVJZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGljb24gYnVuZGxlIGlkLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sI2dldEljb25QYXRoKCkiPmdldEljb25QYXRoPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgaWNvbiBwYXRoIHJlbGF0aXZlIHRvIGFuIGljb24gYnVuZGxlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sI2dldExvbmdOYW1lKCkiPmdldExvbmdOYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbG9uZyBuYW1lIGZvciB0aGUgZGVzY3JpcHRvci48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNnZXRTaG9ydE5hbWUoKSI+Z2V0U2hvcnROYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgc2hvcnQgbmFtZSBmb3IgdGhlIGRlc2NyaXB0b3I8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNzZXRDb250ZXh0SGVscElkKGphdmEubGFuZy5TdHJpbmcpIj5zZXRDb250ZXh0SGVscElkPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2NvbnRleHRIZWxwSWQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSBjb250ZXh0IGhlbHAgaWQgZm9yIHRoaXMgZGVzY3JpcHRvci48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCNzZXREZXNjcmlwdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+c2V0RGVzY3JpcHRpb248L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZGVzY3JpcHRpb24pPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBkZXNjcmlwdG9yLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sI3NldEljb25CdW5kbGVJZChqYXZhLmxhbmcuU3RyaW5nKSI+c2V0SWNvbkJ1bmRsZUlkPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2ljb25CdW5kbGVJZCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIGljb24gYnVuZGxlIGlkIGZvciB0aGlzIGRlc2NyaXB0b3IuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwjc2V0SWNvblBhdGgoamF2YS5sYW5nLlN0cmluZykiPnNldEljb25QYXRoPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2ljb25QYXRoKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgaWNvbiBwYXRjaCBmb3IgdGhpcyBkZXNjcmlwdG9yLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sI3NldExvbmdOYW1lKGphdmEubGFuZy5TdHJpbmcpIj5zZXRMb25nTmFtZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb25nTmFtZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIGxvbmcgbmFtZSBmb3IgdGhlIGRlc2NyaXB0b3IuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwjc2V0U2hvcnROYW1lKGphdmEubGFuZy5TdHJpbmcpIj5zZXRTaG9ydE5hbWU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHNob3J0IG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0U2hvcnROYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNob3J0TmFtZTwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRTaG9ydE5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBzaG9ydCBuYW1lIGZvciB0aGUgZGVzY3JpcHRvcgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIHNob3J0IG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRTaG9ydE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFNob3J0TmFtZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRTaG9ydE5hbWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHNob3J0IG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5uYW1lPC9DT0RFPiAtIDwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TG9uZ05hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TG9uZ05hbWU8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0TG9uZ05hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBsb25nIG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yLgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIGxvbmcgbmFtZSBmb3IgdGhlIGRlc2NyaXB0b3IuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRMb25nTmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0TG9uZ05hbWU8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0TG9uZ05hbWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb25nTmFtZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSBsb25nIG5hbWUgZm9yIHRoZSBkZXNjcmlwdG9yLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5sb25nTmFtZTwvQ09ERT4gLSA8L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldERlc2NyaXB0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERlc2NyaXB0aW9uPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldERlc2NyaXB0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgZGVzY3JpcHRpb24gZm9yIHRoaXMgZGVzY3JpcHRvci4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBkZXNjcmlwdG9yLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0RGVzY3JpcHRpb24oamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldERlc2NyaXB0aW9uPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldERlc2NyaXB0aW9uPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZGVzY3JpcHRpb24pPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgZGVzY3JpcHRpb24gZm9yIHRoaXMgZGVzY3JpcHRvci4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+ZGVzY3JpcHRpb248L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJY29uUGF0aCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJY29uUGF0aDwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRJY29uUGF0aDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGljb24gcGF0aCByZWxhdGl2ZSB0byBhbiBpY29uIGJ1bmRsZS4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSBpY29uIHBhdGggZm9yIHRoaXMgZGVzY3JpcHRvci4gIFRoaXMgcGF0aAotIGlzIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gc3BlY2lmaWVkIGJ5IHRoZSBpY29uIGJ1bmRsZSBpZC4gIFRoaXMKLSBtZXRob2QgbWF5IHJldHVybiBudWxsIGlmIHRoZXJlIGlzIG5vIGljb24gZm9yIHRoaXMgZGVzY3JpcHRvci48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEljb25QYXRoKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRJY29uUGF0aDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRJY29uUGF0aDwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2ljb25QYXRoKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIGljb24gcGF0Y2ggZm9yIHRoaXMgZGVzY3JpcHRvci4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aWNvblBhdGg8L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJY29uQnVuZGxlSWQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SWNvbkJ1bmRsZUlkPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldEljb25CdW5kbGVJZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGljb24gYnVuZGxlIGlkLgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIGJ1bmRsZSBJRCBvZiBhIHBsdWdpbiB0aGF0IGNvbnRhaW5zIGFuIGljb24uICBUaGlzCi0gbWV0aG9kIG1heSByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBpY29uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlc2NyaXB0b3IuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRJY29uQnVuZGxlSWQoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldEljb25CdW5kbGVJZDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRJY29uQnVuZGxlSWQ8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtpY29uQnVuZGxlSWQpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgaWNvbiBidW5kbGUgaWQgZm9yIHRoaXMgZGVzY3JpcHRvci4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aWNvbkJ1bmRsZUlkPC9DT0RFPiAtIDwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0Q29udGV4dEhlbHBJZCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRDb250ZXh0SGVscElkPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldENvbnRleHRIZWxwSWQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBjb250ZXh0IGhlbHAgaWQuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgY29udGV4dCBoZWxwIGlkIGZvciB0aGlzIGRlc2NyaXB0b3IuICBUaGlzIG1ldGhvZAotIG1heSByZXR1cm4gbnVsbCBpZiBubyBjb250ZXh0IGhhcyBiZWVuIHNwZWNpZmllZC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldENvbnRleHRIZWxwSWQoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldENvbnRleHRIZWxwSWQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0Q29udGV4dEhlbHBJZDwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2NvbnRleHRIZWxwSWQpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgY29udGV4dCBoZWxwIGlkIGZvciB0aGlzIGRlc2NyaXB0b3IuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmNvbnRleHRIZWxwSWQ8L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lEZXNjcmlwdG9yLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIENMQVNTJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklEZXNjcmlwdG9yLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2Zjc2N2MuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM4IEVEVCAyMDA4IC0tPgotPFRJVExFPgotSUZpbHRlcgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JRmlsdGVyIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSUZpbHRlciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lGaWx0ZXIuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSUZpbHRlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9GT05UPgotPEJSPgotSW50ZXJmYWNlIElGaWx0ZXI8L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5JRmlsdGVyPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGZpbHRlciBzZXJ2aWNlIHBvbGljaWVzLgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sI2FjY2VwdChvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj5hY2NlcHQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BvbGljeSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0RldGVybWluZXMgaWYgYSBwb2xpY3kgc2hvdWxkIGJlIGFjY2VwdGVkIG9yIG5vdC48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImFjY2VwdChvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj48IS0tIC0tPjwvQT48SDM+Ci1hY2NlcHQ8L0gzPgotPFBSRT4KLWJvb2xlYW4gPEI+YWNjZXB0PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BvbGljeSk8L1BSRT4KLTxETD4KLTxERD5EZXRlcm1pbmVzIGlmIGEgcG9saWN5IHNob3VsZCBiZSBhY2NlcHRlZCBvciBub3QuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnBvbGljeTwvQ09ERT4gLSB0aGUgc2VydmljZSBwb2xpY3kuCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdHJ1ZSBpZiB0aGlzIHBvbGljeSBpcyBhY2NlcHRlZCBieSB0aGUgZmlsdGVyLjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JRmlsdGVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklGaWx0ZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBkZGFiZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JUG9saWN5RW51bWVyYXRpb25MaXN0Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lFbnVtZXJhdGlvbkxpc3QgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJUG9saWN5RW51bWVyYXRpb25MaXN0IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lGaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBJUG9saWN5RW51bWVyYXRpb25MaXN0PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgS25vd24gSW1wbGVtZW50aW5nIENsYXNzZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhpcyBpbnRlcmZhY2UgZW5jYXBzdWxhdGVzIHRoZSBjb21iaW5hdGlvbiBvZiBhIHBvbGljeSBhbmQgYSBsaXN0Ci0gb2Ygc3RhdGUgZW51bWVyYXRpb24gaXRlbXMuICBUaGlzIGludGVyZmFjZSBpcyB1c2VkIHdpdGggdGhlIElQb2xpY3lSZWxhdGlvbnNoaXAKLSBpbnRlcmZhY2UuCi08UD4KLQotPFA+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0E+Jmd0OzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sI2dldEVudW1lcmF0aW9uTGlzdCgpIj5nZXRFbnVtZXJhdGlvbkxpc3Q8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzdGF0ZSBlbnVtZXJhdGlvbiBsaXN0IGl0ZW1zLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sI2dldFBvbGljeSgpIj5nZXRQb2xpY3k8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzZXJ2aWNlIHBvbGljeSBmb3IgdGhpcyBsaXN0LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0UG9saWN5KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFBvbGljeTwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4gPEI+Z2V0UG9saWN5PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgc2VydmljZSBwb2xpY3kgZm9yIHRoaXMgbGlzdC4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIGEgc2VydmljZSBwb2xpY3kuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFbnVtZXJhdGlvbkxpc3QoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RW51bWVyYXRpb25MaXN0PC9IMz4KLTxQUkU+Ci1qYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0E+Jmd0OyA8Qj5nZXRFbnVtZXJhdGlvbkxpc3Q8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBzdGF0ZSBlbnVtZXJhdGlvbiBsaXN0IGl0ZW1zLgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgYSBsaXN0IG9mIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW1zLjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGNhYWM2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUlQb2xpY3lSZWxhdGlvbnNoaXAKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVJlbGF0aW9uc2hpcCBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IklQb2xpY3lSZWxhdGlvbnNoaXAiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSVBvbGljeVJlbGF0aW9uc2hpcDwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIEtub3duIEltcGxlbWVudGluZyBDbGFzc2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlBvbGljeVJlbGF0aW9uc2hpcEltcGw8L0E+PC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPklQb2xpY3lSZWxhdGlvbnNoaXA8L0I+PC9ETD4KLTwvUFJFPgotCi08UD4KLVRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBiZXR3ZWVuCi0gc2VydmljZSBwb2xpY2llcy4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sI2dldFBvbGljeUVudW1lcmF0aW9uTGlzdCgpIj5nZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBwb2xpY3kgZW51bWVyYXRpb24gbGlzdCBmb3IgdGhpcyByZWxhdGlvbnNoaXAuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCNnZXRSZWxhdGVkUG9saWNpZXMoKSI+Z2V0UmVsYXRlZFBvbGljaWVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcmVsYXRlZCBwb2xpY2llcyBmb3IgdGhpcyByZWxhdGlvbnNoaXAuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3QoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UG9saWN5RW51bWVyYXRpb25MaXN0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT4gPEI+Z2V0UG9saWN5RW51bWVyYXRpb25MaXN0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgcG9saWN5IGVudW1lcmF0aW9uIGxpc3QgZm9yIHRoaXMgcmVsYXRpb25zaGlwLgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHNvdXJjZSBzZXJ2aWNlIHBvbGljeSBhbG9uZyB3aXRoIGEgbGlzdAotIG9mIHBvc3NpYmxlIHN0YXRlcyB0aGF0IHRoaXMgc291cmNlIHBvbGljeSBjb3VsZCBiZSBpbi48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFJlbGF0ZWRQb2xpY2llcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRSZWxhdGVkUG9saWNpZXM8L0gzPgotPFBSRT4KLWphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPiZndDsgPEI+Z2V0UmVsYXRlZFBvbGljaWVzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgcmVsYXRlZCBwb2xpY2llcyBmb3IgdGhpcyByZWxhdGlvbnNoaXAuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyBhIGxpc3Qgb2Ygb3RoZXIgdGFyZ2V0IHNlcnZpY2UgcG9saWNpZXMgYW5kIHRoZSBzdGF0ZXMgdGhhdAotIHRoZXNlIHBvbGljaWVzIG11c3QgYmUgaW4gdG8gc2F0aXNmeSB0aGUgcmVsYXRpb25zaGlwLjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2QyYmYwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM4IEVEVCAyMDA4IC0tPgotPFRJVExFPgotSVBvbGljeVN0YXRlCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lTdGF0ZSBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IklQb2xpY3lTdGF0ZSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lQb2xpY3lTdGF0ZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeVN0YXRlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSVBvbGljeVN0YXRlPC9IMj4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+SVBvbGljeVN0YXRlPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGludGVyZmFjZSBpcyB1c2VkIGJ5IHNlcnZpY2UgcG9saWN5IGV4dGVuZGVycyB0byBzYXZlIHRoZSBzdGF0ZSBvZgotIHRoZXJlIHBvbGljaWVzLiAgTm90ZTogZXh0ZW5kZXJzIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGlmIHRoZXNlIGNoYW5nZXMKLSBhcmUgY29tbWl0dGVkIG9yIGRpc2NhcmRlZC4gIFRoaXMgaXMgaGFuZGxlZCBieSB0aGUgZnJhbWV3b3JrLiAgRm9yIGV4YW1wbGUKLSBpZiBhbiBleHRlbmRlciBtYWtlcyBhIG51bWJlciBvZiBjYWxscyB0byB0aGUgcHV0VmFsdWUgbWV0aG9kIGFuZCBhdCBzb21lCi0gcG9pbnQgU2VydmljZVBvbGljeVBsYXRmb3JtLmRpc2NhcmQoKSBpcyBjYWxsZWQsIHRoZSBmcmFtZXdvcmsgd2lsbCBoYW5kbGUKLSB0aGUgZGlzY2FyZGluZyBvZiB0aGUgY2hhbmdlcyBtYWRlIGJ5IHRoZSBwdXRWYWx1ZSBtZXRob2QgY2FsbHMuCi0gCi0gTm90ZTogdGhpcyBkYXRhIHdpbGwgZXZlbnR1YWxseSBiZSBzdG9yZWQgaW4gRWNsaXBzZSB3aXRoIHRoZSBmb2xsb3dpbmcga2V5OgotIAotICAgICBzZXJ2aWNlUG9saWN5SWQgKyAiLiIgKyBrZXkKLSAgICAgCi0gICAgIHdoZXJlIHNlcnZpY2VQb2xpY3lJZCBpcyB0aGUgdW5pcXVlIGlkIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5IGFuZCB0aGUga2V5Ci0gICAgIGlzIHRoZSBrZXkgc3BlY2lmaWVkIGluIHRoZSBwdXRWYWx1ZSBtZXRob2QuCi08UD4KLQotPFA+Ci08SFI+Ci0KLTxQPgotPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sI0RlZmF1bHRWYWx1ZUtleSI+RGVmYXVsdFZhbHVlS2V5PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwjYWRkUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLCBib29sZWFuKSI+YWRkUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO25vdGlmeU9ubHlPbkNvbW1pdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FkZHMgYSBwb2xpY3kgc3RhdGUgY2hhbmdlIGxpc3RlbmVyIHRvIHRoaXMgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sI2dldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj5nZXRWYWx1ZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtrZXkpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBnZXRzIHNvbWUgc3RhdGUgZm9yIGEgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sI2lzTXV0YWJsZSgpIj5pc011dGFibGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHdoZXRoZXIgdGhlIHN0YXRlIG9mIHRoaXMgcG9saWN5IGlzIG11dGlibGUgb3Igbm90LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCNwdXREZWZhdWx0VmFsdWUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikiPnB1dERlZmF1bHRWYWx1ZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtrZXksCi0gICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2RlZmF1bHRWYWx1ZSwKLSAgICAgICAgICAgICAgICBib29sZWFuJm5ic3A7b3ZlcnJpZGVFeGlzdGluZyk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgbWV0aG9kIHNldHMgdGhlIGRlZmF1bHQgZm9yIGEgcGFydGljdWxhciBrZXkuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sI3B1dFZhbHVlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj5wdXRWYWx1ZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtrZXksCi0gICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBzZXRzIHNvbWUgc3RhdGUgZm9yIGEgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sI3JlbW92ZVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcikiPnJlbW92ZVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZW1vdmVzIGEgcG9saWN5IHN0YXRlIGNoYW5nZSBsaXN0ZW5lciBmcm9tIHRoaXMgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sI3NldE11dGFibGUoYm9vbGVhbikiPnNldE11dGFibGU8L0E+PC9CPihib29sZWFuJm5ic3A7bXV0YWJsZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9IkRlZmF1bHRWYWx1ZUtleSI+PCEtLSAtLT48L0E+PEgzPgotRGVmYXVsdFZhbHVlS2V5PC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5EZWZhdWx0VmFsdWVLZXk8L0I+PC9QUkU+Ci08REw+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlLkRlZmF1bHRWYWx1ZUtleSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImlzTXV0YWJsZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1pc011dGFibGU8L0gzPgotPFBSRT4KLWJvb2xlYW4gPEI+aXNNdXRhYmxlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB3aGV0aGVyIHRoZSBzdGF0ZSBvZiB0aGlzIHBvbGljeSBpcyBtdXRpYmxlIG9yIG5vdC4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRydWUgaWYgdGhlIHN0YXRlIG9mIHRoaXMgcG9saWN5IGlzIG11dGFibGUuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRNdXRhYmxlKGJvb2xlYW4pIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRNdXRhYmxlPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldE11dGFibGU8L0I+KGJvb2xlYW4mbmJzcDttdXRhYmxlKTwvUFJFPgotPERMPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bXV0YWJsZTwvQ09ERT4gLSBzZXRzIHdoZXRoZXIgdGhpcyBwb2xpY3kgaXMgbXV0YWJsZSBvciBub3QuICBOb3RlOgotIGlmIHRoZSBzZXJ2aWNlIHBvbGljeSBmb3IgdGhpcyBJUG9saWN5U3RhdGUgb2JqZWN0IGlzIHByZWRlZmluZWQgY2FsbGluZwotIHRoaXMgbWV0aG9kIHdpbGwgaGF2ZSBubyBlZmZlY3QuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJwdXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotcHV0VmFsdWU8L0gzPgotPFBSRT4KLXZvaWQgPEI+cHV0VmFsdWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtrZXksCi0gICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5UaGlzIG1ldGhvZCBzZXRzIHNvbWUgc3RhdGUgZm9yIGEgc2VydmljZSBwb2xpY3kuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmtleTwvQ09ERT4gLSBhIGtleSBmb3IgdGhpcyBwb2xpY3kgc3RhdGUuPEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSB2YWx1ZSBvZiB0aGUgcG9saWN5IHN0YXRlLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFZhbHVlPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldFZhbHVlPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7a2V5KTwvUFJFPgotPERMPgotPEREPlRoaXMgbWV0aG9kIGdldHMgc29tZSBzdGF0ZSBmb3IgYSBzZXJ2aWNlIHBvbGljeS4gIElmIHRoZXJlCi0gaXMgbm8gcGVyc2lzdGVkIHZhbHVlIGZvciB0aGlzIGtleSB0aGUgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlCi0gcmV0dXJuZWQuICBJZiB0aGVyZSBpcyBubyBkZWZhdWx0IHZhbHVlIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+a2V5PC9DT0RFPiAtIGEga2V5IGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGtleSBzcGVjaWZpZWQuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJwdXREZWZhdWx0VmFsdWUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4KLXB1dERlZmF1bHRWYWx1ZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5wdXREZWZhdWx0VmFsdWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtrZXksCi0gICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZGVmYXVsdFZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO292ZXJyaWRlRXhpc3RpbmcpPC9QUkU+Ci08REw+Ci08REQ+VGhpcyBtZXRob2Qgc2V0cyB0aGUgZGVmYXVsdCBmb3IgYSBwYXJ0aWN1bGFyIGtleS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+a2V5PC9DT0RFPiAtIHRoZSBrZXk8REQ+PENPREU+ZGVmYXVsdFZhbHVlPC9DT0RFPiAtIHRoZSBkZWZhdWx0IHZhbHVlLjxERD48Q09ERT5vdmVycmlkZUV4aXN0aW5nPC9DT0RFPiAtIGluZGljYXRlcyBpZiBhIGV4aXN0aW5nIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGJlIG92ZXJyaWRkZW4uPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJhZGRQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIsIGJvb2xlYW4pIj48IS0tIC0tPjwvQT48SDM+Ci1hZGRQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPC9IMz4KLTxQUkU+Ci12b2lkIDxCPmFkZFBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuJm5ic3A7bm90aWZ5T25seU9uQ29tbWl0KTwvUFJFPgotPERMPgotPEREPkFkZHMgYSBwb2xpY3kgc3RhdGUgY2hhbmdlIGxpc3RlbmVyIHRvIHRoaXMgc2VydmljZSBwb2xpY3kuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmxpc3RlbmVyPC9DT0RFPiAtIHRoZSBsaXN0ZW5lcjxERD48Q09ERT5ub3RpZnlPbmx5T25Db21taXQ8L0NPREU+IC0gaW5kaWNhdGVzIGlmIHRoaXMgbGlzdGVuZXIgc2hvdWxkIGJlCi0gY2FsbGVkIGZvciBhbGwgc3RhdGUgY2hhbmdlcyBvciBvbmx5IHdoZW4gdGhlIHN0YXRlIGRhdGEgaXMKLSBjb21taXR0ZWQuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJyZW1vdmVQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIpIj48IS0tIC0tPjwvQT48SDM+Ci1yZW1vdmVQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnJlbW92ZVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lcik8L1BSRT4KLTxETD4KLTxERD5SZW1vdmVzIGEgcG9saWN5IHN0YXRlIGNoYW5nZSBsaXN0ZW5lciBmcm9tIHRoaXMgc2VydmljZSBwb2xpY3kuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmxpc3RlbmVyPC9DT0RFPiAtIDwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUG9saWN5U3RhdGUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lTdGF0ZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2M5MTE0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzMyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUlQb2xpY3lTdGF0ZUVudW0KLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlRW51bSBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IklQb2xpY3lTdGF0ZUVudW0iOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeVN0YXRlRW51bS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9GT05UPgotPEJSPgotSW50ZXJmYWNlIElQb2xpY3lTdGF0ZUVudW08L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5JUG9saWN5U3RhdGVFbnVtPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGFjY2VzcyB0aGUgc3RhdGUgd2hlbiBhbiBlbnVtZXJhdGlvbiBpcyB1c2VkCi0gdG8gcGVyc2lzdCBzdGF0ZS4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci08IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sI0ZBTFNFX0VOVU0iPkZBTFNFX0VOVU08L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCNUUlVFX0VOVU0iPlRSVUVfRU5VTTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCNnZXRDdXJyZW50SXRlbSgpIj5nZXRDdXJyZW50SXRlbTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGN1cnJlbnQgZW51bSBpdGVtLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwjZ2V0RGVmYXVsdElkKCkiPmdldERlZmF1bHRJZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGRlZmF1bHQgZW51bSBpdGVtIGZvciB0aGlzIGVudW1lcmF0aW9uLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwjZ2V0RW51bUlkKCkiPmdldEVudW1JZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGVudW1lcmF0aW9uIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwjc2V0Q3VycmVudEl0ZW0oamF2YS5sYW5nLlN0cmluZykiPnNldEN1cnJlbnRJdGVtPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2l0ZW1JZCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIGN1cnJlbnQgZW51bSBpdGVtLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9IlRSVUVfRU5VTSI+PCEtLSAtLT48L0E+PEgzPgotVFJVRV9FTlVNPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5UUlVFX0VOVU08L0I+PC9QUkU+Ci08REw+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlRW51bS5UUlVFX0VOVU0iPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRkFMU0VfRU5VTSI+PCEtLSAtLT48L0E+PEgzPgotRkFMU0VfRU5VTTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+RkFMU0VfRU5VTTwvQj48L1BSRT4KLTxETD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5U3RhdGVFbnVtLkZBTFNFX0VOVU0iPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRFbnVtSWQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RW51bUlkPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldEVudW1JZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGVudW1lcmF0aW9uIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlcnZpY2UgcG9saWN5LgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIGVudW1lcmF0aW9uIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlcnZpY2UgcG9saWN5LjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RGVmYXVsdElkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERlZmF1bHRJZDwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXREZWZhdWx0SWQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBkZWZhdWx0IGVudW0gaXRlbSBmb3IgdGhpcyBlbnVtZXJhdGlvbi4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSBkZWZhdWx0IGVudW0gaXRlbSBmb3IgdGhpcyBlbnVtZXJhdGlvbi48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEN1cnJlbnRJdGVtKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRDdXJyZW50SXRlbTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRDdXJyZW50SXRlbTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2l0ZW1JZCk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSBjdXJyZW50IGVudW0gaXRlbS4gIFRoaXMgZW51bSBpdGVtIGlkIG5lZWRzIHRvIGJlIGFuZCBlbnVtIGl0ZW0KLSBpZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbnVtZXJhdGlvbi4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aXRlbUlkPC9DT0RFPiAtIDwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0Q3VycmVudEl0ZW0oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0Q3VycmVudEl0ZW08L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT4gPEI+Z2V0Q3VycmVudEl0ZW08L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBjdXJyZW50IGVudW0gaXRlbS4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSBjdXJyZW50IGVudW0gaXRlbS48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSVBvbGljeVN0YXRlRW51bS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTRkMmM2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY0MiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JU2VydmljZVBvbGljeQotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IklTZXJ2aWNlUG9saWN5IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSVNlcnZpY2VQb2xpY3kuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJU2VydmljZVBvbGljeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9GT05UPgotPEJSPgotSW50ZXJmYWNlIElTZXJ2aWNlUG9saWN5PC9IMj4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+SVNlcnZpY2VQb2xpY3k8L0I+PC9ETD4KLTwvUFJFPgotCi08UD4KLVRoaXMgaW50ZXJmYWNlIGVuY2Fwc3VsYXRlcyB0aGUgaWRlYSBvZiBhIHNlcnZpY2UgcG9saWN5Ci08UD4KLQotPFA+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI2FkZFBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcikiPmFkZFBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGRzIGEgY2hpbGQgbGlzdGVuZXIgdG8gdGhpcyBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNhZGRTdGF0dXNDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklTdGF0dXNDaGFuZ2VMaXN0ZW5lcikiPmFkZFN0YXR1c0NoYW5nZUxpc3RlbmVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGRzIGEgc3RhdHVzIGNoYW5nZSBsaXN0ZW5lciB0byB0aGlzIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0Q2hpbGRyZW4oKSI+Z2V0Q2hpbGRyZW48L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0RGVzY3JpcHRvcigpIj5nZXREZXNjcmlwdG9yPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgZGVzY3JpcHRvciBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNnZXRJZCgpIj5nZXRJZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHVuaXF1ZSBJRCBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0UGFyZW50UG9saWN5KCkiPmdldFBhcmVudFBvbGljeTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHBhcmVudCBzZXJ2aWNlIHBvbGljeSBvYmplY3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0UG9saWN5U3RhdGUoKSI+Z2V0UG9saWN5U3RhdGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBwb2xpY3kgc3RhdGUgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0UG9saWN5U3RhdGUob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj5nZXRQb2xpY3lTdGF0ZTwvQT48L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIElQb2xpY3lTdGF0ZSBmb3IgYSBwYXJ0aWN1bGFyIHByb2plY3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGVFbnVtPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNnZXRQb2xpY3lTdGF0ZUVudW0oKSI+Z2V0UG9saWN5U3RhdGVFbnVtPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcG9saWN5IHN0YXRlIGVudW1lcmF0aW9uIG9iamVjdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZUVudW08L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI2dldFBvbGljeVN0YXRlRW51bShvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPmdldFBvbGljeVN0YXRlRW51bTwvQT48L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHBvbGljeSBzdGF0ZSBlbnVtZXJhdGlvbiBvYmplY3QgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVJlbGF0aW9uc2hpcDwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI2dldFJlbGF0aW9uc2hpcHMoKSI+Z2V0UmVsYXRpb25zaGlwczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBsaXN0IG9mIHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgSVNlcnZpY2VQb2xpY3kgb2JqZWN0cy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7b3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0U3RhdHVzKCkiPmdldFN0YXR1czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHN0YXR1cyBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNpc1ByZWRlZmluZWQoKSI+aXNQcmVkZWZpbmVkPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBpZiB0aGlzIHNlcnZpY2UgcG9saWN5IGlzIGRlZmluZWQgYnkgYW4gZXh0ZW5zaW9uIG9yIG5vdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNyZW1vdmVDaGlsZChvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj5yZW1vdmVDaGlsZDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVtb3ZlcyBhIGNoaWxkIHNlcnZpY2UgcG9saWN5IGZyb20gdGhpcyBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNyZW1vdmVQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIpIj5yZW1vdmVQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9BPiZuYnNwO2xpc3RlbmVyKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVtb3ZlcyBhIGNoaWxkIGxpc3RlbmVyIGZyb20gdGhpcyBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNyZW1vdmVTdGF0dXNDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklTdGF0dXNDaGFuZ2VMaXN0ZW5lcikiPnJlbW92ZVN0YXR1c0NoYW5nZUxpc3RlbmVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZW1vdmVzIGEgc3RhdHVzIGNoYW5nZSBsaXN0ZW5lciBmcm9tIHRoaXMgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjcmVzdG9yZURlZmF1bHRzKCkiPnJlc3RvcmVEZWZhdWx0czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Jlc3RvcmVzIHRoZSBwb2xpY3kgdG8gaXRzIG9yaWdpbmFsIHN0YXRlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI3Jlc3RvcmVEZWZhdWx0cyhvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPnJlc3RvcmVEZWZhdWx0czwvQT48L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Jlc3RvcmVzIHRoZSBwb2xpY3kgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIGZvciBhIHBhcnRpY3VsYXIgcHJvamVjdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNzZXRSZWxhdGlvbnNoaXBzKGphdmEudXRpbC5MaXN0KSI+c2V0UmVsYXRpb25zaGlwczwvQT48L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5UmVsYXRpb25zaGlwPC9BPiZndDsmbmJzcDtyZWxhdGlvbnNoaXBzKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgcmVsYXRpb25zaGlwcyBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNzZXRTdGF0dXMob3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXMpIj5zZXRTdGF0dXM8L0E+PC9CPihvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cyZuYnNwO3N0YXR1cyk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHN0YXR1cyBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImlzUHJlZGVmaW5lZCgpIj48IS0tIC0tPjwvQT48SDM+Ci1pc1ByZWRlZmluZWQ8L0gzPgotPFBSRT4KLWJvb2xlYW4gPEI+aXNQcmVkZWZpbmVkPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBpZiB0aGlzIHNlcnZpY2UgcG9saWN5IGlzIGRlZmluZWQgYnkgYW4gZXh0ZW5zaW9uIG9yIG5vdC4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRydWUgaWYgdGhpcyBTZXJ2aWNlIHBvbGljeSBpcyBkZWZpbmVkIGluIHBsdWdpbi54bWwgCi0gbWV0YSBkYXRhLiAgT3RoZXJ3aXNlLCBmYWxzZSBpcyByZXR1cm5lZC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElkPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldElkPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdW5pcXVlIElEIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIHVuaXF1ZSBJRCBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldERlc2NyaXB0b3IoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RGVzY3JpcHRvcjwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT4gPEI+Z2V0RGVzY3JpcHRvcjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGRlc2NyaXB0b3IgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgZGVzY3JpcHRvciBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFJlbGF0aW9uc2hpcHMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UmVsYXRpb25zaGlwczwvSDM+Ci08UFJFPgotamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+Jmd0OyA8Qj5nZXRSZWxhdGlvbnNoaXBzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIGxpc3Qgb2YgcmVsYXRpb25zaGlwcyB0byBvdGhlciBJU2VydmljZVBvbGljeSBvYmplY3RzLgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgYSBsaXN0IG9mIHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgSVNlcnZpY2VQb2xpY3kgb2JqZWN0cy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFJlbGF0aW9uc2hpcHMoamF2YS51dGlsLkxpc3QpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRSZWxhdGlvbnNoaXBzPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFJlbGF0aW9uc2hpcHM8L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5UmVsYXRpb25zaGlwPC9BPiZndDsmbmJzcDtyZWxhdGlvbnNoaXBzKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHJlbGF0aW9uc2hpcHMgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnJlbGF0aW9uc2hpcHM8L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJyZXN0b3JlRGVmYXVsdHMoKSI+PCEtLSAtLT48L0E+PEgzPgotcmVzdG9yZURlZmF1bHRzPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnJlc3RvcmVEZWZhdWx0czwvQj4oKTwvUFJFPgotPERMPgotPEREPlJlc3RvcmVzIHRoZSBwb2xpY3kgdG8gaXRzIG9yaWdpbmFsIHN0YXRlLiAgQWxsIGxvY2FsbHkgYWRkZWQKLSBjaGlsZCBwb2xpY2llcyB3aWxsIGJlIHJlbW92ZWQuICBUaGUgc3RhdGUgb2YgZWFjaCBwb2xpY3kgd2lsbAotIGJlIHNldCB0byBpcyBkZWZhdWx0IHZhbHVlLiAgIE5vdGU6IHRoZSBjaGFuZ2VzIG1hZGUgY2FsbGluZwotIHRoaXMgbWV0aG9kIGNhbiBiZSB1bmRvbmUgaWYgdGhlIHBsYXRmb3JtIHBlcmZvcm1zIGEgZGlzY2FyZENoYW5nZXMKLSBvcGVyYXRpb24uICBBbHRlcm5hdGl2ZWx5LCBpZiB0aGUgcGxhZm9ybSBwZXJmb3JtcyBhIGNvbW1pdENoYW5nZXMKLSBvcGVyYXRpb24gdGhlc2UgY2hhbmdlcyB3aWxsIGJlIHNhdmVkLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJyZXN0b3JlRGVmYXVsdHMob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj48IS0tIC0tPjwvQT48SDM+Ci1yZXN0b3JlRGVmYXVsdHM8L0gzPgotPFBSRT4KLXZvaWQgPEI+cmVzdG9yZURlZmF1bHRzPC9CPihvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCZuYnNwO3Byb2plY3QpPC9QUkU+Ci08REw+Ci08REQ+UmVzdG9yZXMgdGhlIHBvbGljeSB0byBpdHMgb3JpZ2luYWwgc3RhdGUgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LiAgCi0gVGhlIHN0YXRlIG9mIGVhY2ggcG9saWN5IHdpbGwgYmUgc2V0IHRvIGlzIGRlZmF1bHQgdmFsdWUuICAgCi0gTm90ZTogdGhlIGNoYW5nZXMgbWFkZSBjYWxsaW5nCi0gdGhpcyBtZXRob2QgY2FuIGJlIHVuZG9uZSBpZiB0aGUgcGxhdGZvcm0gcGVyZm9ybXMgYSBkaXNjYXJkQ2hhbmdlcwotIG9wZXJhdGlvbi4gIEFsdGVybmF0aXZlbHksIGlmIHRoZSBwbGFmb3JtIHBlcmZvcm1zIGEgY29tbWl0Q2hhbmdlcwotIG9wZXJhdGlvbiB0aGVzZSBjaGFuZ2VzIHdpbGwgYmUgc2F2ZWQuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBvbGljeVN0YXRlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFBvbGljeVN0YXRlPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGU8L0E+IDxCPmdldFBvbGljeVN0YXRlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgcG9saWN5IHN0YXRlIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIHBvbGljeSBzdGF0ZSBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBvbGljeVN0YXRlKG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0KSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UG9saWN5U3RhdGU8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZTwvQT4gPEI+Z2V0UG9saWN5U3RhdGU8L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBJUG9saWN5U3RhdGUgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wcm9qZWN0PC9DT0RFPiAtIHRoZSBwcm9qZWN0LgotPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgSVBvbGljeVN0YXRlIGZvciBhIHBhcnRpY3VsYXIgcHJvamVjdC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBvbGljeVN0YXRlRW51bSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRQb2xpY3lTdGF0ZUVudW08L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGVFbnVtPC9BPiA8Qj5nZXRQb2xpY3lTdGF0ZUVudW08L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBwb2xpY3kgc3RhdGUgZW51bWVyYXRpb24gb2JqZWN0LiAgTm90ZTogdGhpcyBpcyBqdXN0Ci0gYSB3cmFwcGVyIGFyb3VuZCB0aGUgcG9saWN5IHN0YXRlIG9iamVjdC4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSBzdGF0ZSBlbnVtZXJhdGlvbiBvYmplY3QgZm9yIHRoaXMgc2VydmljZQotIHBvbGljeS4gIElmIHRoaXMgcG9saWN5IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW4gZW51bWVyYXRpb24KLSBudWxsIHdpbGwgYmUgcmV0dXJuZWQuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRQb2xpY3lTdGF0ZUVudW0ob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRQb2xpY3lTdGF0ZUVudW08L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGVFbnVtPC9BPiA8Qj5nZXRQb2xpY3lTdGF0ZUVudW08L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBwb2xpY3kgc3RhdGUgZW51bWVyYXRpb24gb2JqZWN0IGZvciBhIHBhcnRpY3VsYXIgcHJvamVjdC4gIAotIE5vdGU6IHRoaXMgaXMganVzdCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBwb2xpY3kgc3RhdGUgb2JqZWN0LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wcm9qZWN0PC9DT0RFPiAtIHRoZSBwcm9qZWN0Ci08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIHN0YXRlIGVudW1lcmF0aW9uIGZvciBhIHBhcnRpY3VsYXIgcHJvamVjdC4gIElmCi0gbm8gc3RhdGUgZW51bWVyYXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZXJ2aWNlIHBvbGljeQotIG51bGwgd2lsbCBiZSByZXR1cm5lZC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBhcmVudFBvbGljeSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRQYXJlbnRQb2xpY3k8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+IDxCPmdldFBhcmVudFBvbGljeTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHBhcmVudCBzZXJ2aWNlIHBvbGljeSBvYmplY3QuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgcGFyZW50IHBvbGljeSBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS4gIElmIHRoaXMKLSBzZXJ2aWNlIHBvbGljeSBoYXMgbm8gcGFyZW50IHRoZW4gbnVsbCBpcyByZXR1cm5lZC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldENoaWxkcmVuKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldENoaWxkcmVuPC9IMz4KLTxQUkU+Ci1qYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDsgPEI+Z2V0Q2hpbGRyZW48L0I+KCk8L1BSRT4KLTxETD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgY2hpbGQgc2VydmljZSBwb2xpY2llcyBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS4gIENoYW5nZXMKLSBtYWRlIHRvIHRoZSByZXR1cm5lZCBsaXN0IGRvIG5vdCBjaGFuZ2UgdGhlIHVuZGVybHlpbmcgbnVtYmVyIG9mIGNoaWxkcmVuCi0gZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJyZW1vdmVDaGlsZChvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj48IS0tIC0tPjwvQT48SDM+Ci1yZW1vdmVDaGlsZDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5yZW1vdmVDaGlsZDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwb2xpY3kpPC9QUkU+Ci08REw+Ci08REQ+UmVtb3ZlcyBhIGNoaWxkIHNlcnZpY2UgcG9saWN5IGZyb20gdGhpcyBzZXJ2aWNlIHBvbGljeS4gIElmIHRoZSBwb2xpY3kgc3BlY2lmaWVkCi0gaXMgbnVsbCBvciBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIHNlcnZpY2UgcG9saWN5IHRoaXMgbWV0aG9kIHdpbGwgaGF2ZSBubyBlZmZlY3QuCi0gQWxzbywgaWYgdGhpcyBzZXJ2aWNlIHBvbGljeSBpcyBwcmVkZWZpbmVkIGNhbGxpbmcgdGhpcyBtZXRob2Qgd2lsbCBoYXZlCi0gbm8gZWZmZWN0LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wb2xpY3k8L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJhZGRQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIpIj48IS0tIC0tPjwvQT48SDM+Ci1hZGRQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9IMz4KLTxQUkU+Ci12b2lkIDxCPmFkZFBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lcik8L1BSRT4KLTxETD4KLTxERD5BZGRzIGEgY2hpbGQgbGlzdGVuZXIgdG8gdGhpcyBzZXJ2aWNlIHBvbGljeS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bGlzdGVuZXI8L0NPREU+IC0gdGhlIGxpc3RlbmVyPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJyZW1vdmVQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIpIj48IS0tIC0tPjwvQT48SDM+Ci1yZW1vdmVQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnJlbW92ZVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lcik8L1BSRT4KLTxETD4KLTxERD5SZW1vdmVzIGEgY2hpbGQgbGlzdGVuZXIgZnJvbSB0aGlzIHNlcnZpY2UgcG9saWN5LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5saXN0ZW5lcjwvQ09ERT4gLSA8L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImFkZFN0YXR1c0NoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVN0YXR1c0NoYW5nZUxpc3RlbmVyKSI+PCEtLSAtLT48L0E+PEgzPgotYWRkU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0gzPgotPFBSRT4KLXZvaWQgPEI+YWRkU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVN0YXR1c0NoYW5nZUxpc3RlbmVyPC9BPiZuYnNwO2xpc3RlbmVyKTwvUFJFPgotPERMPgotPEREPkFkZHMgYSBzdGF0dXMgY2hhbmdlIGxpc3RlbmVyIHRvIHRoaXMgc2VydmljZSBwb2xpY3kuIFdoZW4gdGhlIHN0YXR1cyBjaGFuZ2VzCi0gdGhpcyBsaXN0ZW5lciB3aWxsIGJlIG5vdGlmaWVkLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5saXN0ZW5lcjwvQ09ERT4gLSA8L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InJlbW92ZVN0YXR1c0NoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVN0YXR1c0NoYW5nZUxpc3RlbmVyKSI+PCEtLSAtLT48L0E+PEgzPgotcmVtb3ZlU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0gzPgotPFBSRT4KLXZvaWQgPEI+cmVtb3ZlU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVN0YXR1c0NoYW5nZUxpc3RlbmVyPC9BPiZuYnNwO2xpc3RlbmVyKTwvUFJFPgotPERMPgotPEREPlJlbW92ZXMgYSBzdGF0dXMgY2hhbmdlIGxpc3RlbmVyIGZyb20gdGhpcyBzZXJ2aWNlIHBvbGljeS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bGlzdGVuZXI8L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTdGF0dXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U3RhdHVzPC9IMz4KLTxQUkU+Ci1vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cyA8Qj5nZXRTdGF0dXM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBzdGF0dXMgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgc3RhdHVzIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0U3RhdHVzKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0U3RhdHVzPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFN0YXR1czwvQj4ob3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXMmbmJzcDtzdGF0dXMpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgc3RhdHVzIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zdGF0dXM8L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lTZXJ2aWNlUG9saWN5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYWEwNDcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JU3RhdGVFbnVtZXJhdGlvbkl0ZW0KLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVN0YXRlRW51bWVyYXRpb25JdGVtIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSVN0YXRlRW51bWVyYXRpb25JdGVtIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBJU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0I+PC9ETD4KLTwvUFJFPgotCi08UD4KLVRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZGVzY3JpYmUgYSBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtIHRoYXQgd2FzCi0gZGVmaW5lZCBieSBhbiBlbnVtZXJhdGlvbiBpbiBwbHVnaW4ueG1sIG1ldGEgZGF0YS4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sI2dldElkKCkiPmdldElkPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgSUQgb2YgdGhpcyBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCNnZXRMb25nTmFtZSgpIj5nZXRMb25nTmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGxvbmcgbmFtZSBvZiB0aGlzIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW0uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sI2dldFNob3J0TmFtZSgpIj5nZXRTaG9ydE5hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzaG9ydCBuYW1lIG9mIHRoaXMgc3RhdGUgZW51bWVyYXRpb24gaXRlbS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwjaXNEZWZhdWx0KCkiPmlzRGVmYXVsdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgd2hldGhlciB0aGlzIGlzIHRoZSBkZWZhdWx0IGl0ZW0gb3Igbm90LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0SWQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SWQ8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0SWQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBJRCBvZiB0aGlzIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW0uCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgSUQgb2YgdGhpcyBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U2hvcnROYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNob3J0TmFtZTwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRTaG9ydE5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBzaG9ydCBuYW1lIG9mIHRoaXMgc3RhdGUgZW51bWVyYXRpb24gaXRlbS4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSBzaG9ydCBuYW1lIG9mIHRoaXMgc3RhdGUgZW51bWVyYXRpb24gaXRlbS48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldExvbmdOYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldExvbmdOYW1lPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldExvbmdOYW1lPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbG9uZyBuYW1lIG9mIHRoaXMgc3RhdGUgZW51bWVyYXRpb24gaXRlbS4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSBsb25nIG5hbWUgb2YgdGhpcyBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iaXNEZWZhdWx0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWlzRGVmYXVsdDwvSDM+Ci08UFJFPgotYm9vbGVhbiA8Qj5pc0RlZmF1bHQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHdoZXRoZXIgdGhpcyBpcyB0aGUgZGVmYXVsdCBpdGVtIG9yIG5vdC4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRydWUgaWYgdGhpcyBlbnVtZXJhdGlvbiBpdGVtIGlzIHRoZSBkZWZhdWx0IGZvciB0aGlzCi0gZW51bWVyYXRpb24uPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNzA5ZmIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOTQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM4IEVEVCAyMDA4IC0tPgotPFRJVExFPgotUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsIGNsYXNzIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsPC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDwvQj4KLTwvUFJFPgotPERMPgotPERUPjxCPkFsbCBJbXBsZW1lbnRlZCBJbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGNsYXNzIDxCPlBvbGljeUVudW1lcmF0aW9uTGlzdEltcGw8L0I+PERUPmV4dGVuZHMgamF2YS5sYW5nLk9iamVjdDxEVD5pbXBsZW1lbnRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPjwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBJUG9saWN5RW51bWVyYXRpb25MaXN0IGludGVyZmFjZS4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KLQotPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCNQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsKGphdmEudXRpbC5MaXN0LCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj5Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsPC9BPjwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPiZndDsmbmJzcDtlbnVtTGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwb2xpY3kpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHNpbXBsZSBjb25zdHJ1Y3RvciBmb3IgdGhpcyBjbGFzcy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwjZ2V0RW51bWVyYXRpb25MaXN0KCkiPmdldEVudW1lcmF0aW9uTGlzdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBsaXN0IG9mIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW1zLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC5odG1sI2dldFBvbGljeSgpIj5nZXRQb2xpY3k8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+ZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsKGphdmEudXRpbC5MaXN0LCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj48IS0tIC0tPjwvQT48SDM+Ci1Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsPC9IMz4KLTxQUkU+Ci1wdWJsaWMgPEI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPiZndDsmbmJzcDtlbnVtTGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5KTwvUFJFPgotPERMPgotPEREPkEgc2ltcGxlIGNvbnN0cnVjdG9yIGZvciB0aGlzIGNsYXNzLgotPFA+Ci08REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmVudW1MaXN0PC9DT0RFPiAtIDxERD48Q09ERT5wb2xpY3k8L0NPREU+IC0gPC9ETD4KLTwvREw+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0RW51bWVyYXRpb25MaXN0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVudW1lcmF0aW9uTGlzdDwvSDM+Ci08UFJFPgotcHVibGljIGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT4mZ3Q7IDxCPmdldEVudW1lcmF0aW9uTGlzdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBsaXN0IG9mIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW1zLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwjZ2V0RW51bWVyYXRpb25MaXN0KCkiPmdldEVudW1lcmF0aW9uTGlzdDwvQT48L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgYSBsaXN0IG9mIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW1zLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UG9saWN5KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFBvbGljeTwvSDM+Ci08UFJFPgotcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+IDxCPmdldFBvbGljeTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBzZXJ2aWNlIHBvbGljeS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sI2dldFBvbGljeSgpIj5nZXRQb2xpY3k8L0E+PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIGEgc2VydmljZSBwb2xpY3kuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjM5ODlhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVBvbGljeVJlbGF0aW9uc2hpcEltcGwKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuUG9saWN5UmVsYXRpb25zaGlwSW1wbCBjbGFzcyI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iUG9saWN5UmVsYXRpb25zaGlwSW1wbCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9GT05UPgotPEJSPgotQ2xhc3MgUG9saWN5UmVsYXRpb25zaGlwSW1wbDwvSDI+Ci08UFJFPgotamF2YS5sYW5nLk9iamVjdAotICA8SU1HIFNSQz0iLi4vLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2luaGVyaXQuZ2lmIiBBTFQ9ImV4dGVuZGVkIGJ5ICI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlBvbGljeVJlbGF0aW9uc2hpcEltcGw8L0I+Ci08L1BSRT4KLTxETD4KLTxEVD48Qj5BbGwgSW1wbGVtZW50ZWQgSW50ZXJmYWNlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVJlbGF0aW9uc2hpcDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBjbGFzcyA8Qj5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8RFQ+aW1wbGVtZW50cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVJlbGF0aW9uc2hpcDwvQT48L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVBvbGljeVJlbGF0aW9uc2hpcAotIGludGVyZmFjZS4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KLQotPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCNQb2xpY3lSZWxhdGlvbnNoaXBJbXBsKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5RW51bWVyYXRpb25MaXN0LCBqYXZhLnV0aWwuTGlzdCkiPlBvbGljeVJlbGF0aW9uc2hpcEltcGw8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT4mbmJzcDtwb2xpY3lFbnVtZXJhdGlvbkxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPiZndDsmbmJzcDtyZWxhdGVkUG9saWNpZXMpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sI2dldFBvbGljeUVudW1lcmF0aW9uTGlzdCgpIj5nZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBwb2xpY3kgZW51bWVyYXRpb24gbGlzdCBmb3IgdGhpcyByZWxhdGlvbnNoaXAuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCNnZXRSZWxhdGVkUG9saWNpZXMoKSI+Z2V0UmVsYXRlZFBvbGljaWVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcmVsYXRlZCBwb2xpY2llcyBmb3IgdGhpcyByZWxhdGlvbnNoaXAuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+ZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJQb2xpY3lSZWxhdGlvbnNoaXBJbXBsKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5RW51bWVyYXRpb25MaXN0LCBqYXZhLnV0aWwuTGlzdCkiPjwhLS0gLS0+PC9BPjxIMz4KLVBvbGljeVJlbGF0aW9uc2hpcEltcGw8L0gzPgotPFBSRT4KLXB1YmxpYyA8Qj5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT4mbmJzcDtwb2xpY3lFbnVtZXJhdGlvbkxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT4mZ3Q7Jm5ic3A7cmVsYXRlZFBvbGljaWVzKTwvUFJFPgotPERMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3QoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UG9saWN5RW51bWVyYXRpb25MaXN0PC9IMz4KLTxQUkU+Ci1wdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+IDxCPmdldFBvbGljeUVudW1lcmF0aW9uTGlzdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHBvbGljeSBlbnVtZXJhdGlvbiBsaXN0IGZvciB0aGlzIHJlbGF0aW9uc2hpcC4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sI2dldFBvbGljeUVudW1lcmF0aW9uTGlzdCgpIj5nZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzb3VyY2Ugc2VydmljZSBwb2xpY3kgYWxvbmcgd2l0aCBhIGxpc3QKLSBvZiBwb3NzaWJsZSBzdGF0ZXMgdGhhdCB0aGlzIHNvdXJjZSBwb2xpY3kgY291bGQgYmUgaW4uPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRSZWxhdGVkUG9saWNpZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UmVsYXRlZFBvbGljaWVzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+Jmd0OyA8Qj5nZXRSZWxhdGVkUG9saWNpZXM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSByZWxhdGVkIHBvbGljaWVzIGZvciB0aGlzIHJlbGF0aW9uc2hpcC4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sI2dldFJlbGF0ZWRQb2xpY2llcygpIj5nZXRSZWxhdGVkUG9saWNpZXM8L0E+PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIGEgbGlzdCBvZiBvdGhlciB0YXJnZXQgc2VydmljZSBwb2xpY2llcyBhbmQgdGhlIHN0YXRlcyB0aGF0Ci0gdGhlc2UgcG9saWNpZXMgbXVzdCBiZSBpbiB0byBzYXRpc2Z5IHRoZSByZWxhdGlvbnNoaXAuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjE4YTdlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzkwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVNlcnZpY2VQb2xpY3lBY3RpdmF0b3IKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeUFjdGl2YXRvciBjbGFzcyI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iU2VydmljZVBvbGljeUFjdGl2YXRvciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yPC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj5vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luCi0gICAgICA8SU1HIFNSQz0iLi4vLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2luaGVyaXQuZ2lmIiBBTFQ9ImV4dGVuZGVkIGJ5ICI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lBY3RpdmF0b3I8L0I+Ci08L1BSRT4KLTxETD4KLTxEVD48Qj5BbGwgSW1wbGVtZW50ZWQgSW50ZXJmYWNlczo8L0I+IDxERD5vcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQWN0aXZhdG9yPC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgY2xhc3MgPEI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQj48RFQ+ZXh0ZW5kcyBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luPC9ETD4KLTwvUFJFPgotCi08UD4KLVRoZSBhY3RpdmF0b3IgY2xhc3MgY29udHJvbHMgdGhlIHBsdWctaW4gbGlmZSBjeWNsZQotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLTwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjUExVR0lOX0lEIj5QTFVHSU5fSUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0iZmllbGRzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW4iPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5GaWVsZHMgaW5oZXJpdGVkIGZyb20gY2xhc3Mgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPlBMVUdJTl9QUkVGRVJFTkNFX1NDT1BFLCBQUkVGRVJFTkNFU19ERUZBVUxUX09WRVJSSURFX0JBU0VfTkFNRSwgUFJFRkVSRU5DRVNfREVGQVVMVF9PVkVSUklERV9GSUxFX05BTUU8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08IS0tID09PT09PT09IENPTlNUUlVDVE9SIFNVTU1BUlkgPT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImNvbnN0cnVjdG9yX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5Db25zdHJ1Y3RvciBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjU2VydmljZVBvbGljeUFjdGl2YXRvcigpIj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGNvbnN0cnVjdG9yPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sI2dldERlZmF1bHQoKSI+Z2V0RGVmYXVsdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjbG9nRXJyb3IoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlRocm93YWJsZSkiPmxvZ0Vycm9yPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO21lc3NhZ2UsCi0gICAgICAgICBqYXZhLmxhbmcuVGhyb3dhYmxlJm5ic3A7ZXhjKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TG9ncyBhbiBlcnJvciB3aXRoIHRoaXMgcGx1Z2luLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjc3RhcnQob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpIj5zdGFydDwvQT48L0I+KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0Jm5ic3A7Y29udGV4dCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkiPnN0b3A8L0E+PC9CPihvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCZuYnNwO2NvbnRleHQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW4iPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5maW5kLCBmaW5kLCBnZXRCdW5kbGUsIGdldERlc2NyaXB0b3IsIGdldExvZywgZ2V0UGx1Z2luUHJlZmVyZW5jZXMsIGdldFN0YXRlTG9jYXRpb24sIGludGVybmFsSW5pdGlhbGl6ZURlZmF1bHRQbHVnaW5QcmVmZXJlbmNlcywgaXNEZWJ1Z2dpbmcsIG9wZW5TdHJlYW0sIG9wZW5TdHJlYW0sIHNhdmVQbHVnaW5QcmVmZXJlbmNlcywgc2V0RGVidWdnaW5nLCBzaHV0ZG93biwgc3RhcnR1cCwgdG9TdHJpbmc8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+ZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB3YWl0LCB3YWl0LCB3YWl0PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9IlBMVUdJTl9JRCI+PCEtLSAtLT48L0E+PEgzPgotUExVR0lOX0lEPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+UExVR0lOX0lEPC9CPjwvUFJFPgotPERMPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuUExVR0lOX0lEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci0KLTwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4KLQotPEEgTkFNRT0iY29uc3RydWN0b3JfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q29uc3RydWN0b3IgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9IlNlcnZpY2VQb2xpY3lBY3RpdmF0b3IoKSI+PCEtLSAtLT48L0E+PEgzPgotU2VydmljZVBvbGljeUFjdGl2YXRvcjwvSDM+Ci08UFJFPgotcHVibGljIDxCPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3I8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5UaGUgY29uc3RydWN0b3IKLTxQPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJzdGFydChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkiPjwhLS0gLS0+PC9BPjxIMz4KLXN0YXJ0PC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5zdGFydDwvQj4ob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQmbmJzcDtjb250ZXh0KQotICAgICAgICAgICB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbjwvUFJFPgotPERMPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zdGFydDwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPm9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVBY3RpdmF0b3I8L0NPREU+PERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxDT0RFPnN0YXJ0PC9DT0RFPiBpbiBjbGFzcyA8Q09ERT5vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlRocm93czo8L0I+Ci08REQ+PENPREU+amF2YS5sYW5nLkV4Y2VwdGlvbjwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InN0b3Aob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpIj48IS0tIC0tPjwvQT48SDM+Ci1zdG9wPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5zdG9wPC9CPihvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCZuYnNwO2NvbnRleHQpCi0gICAgICAgICAgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb248L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c3RvcDwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPm9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVBY3RpdmF0b3I8L0NPREU+PERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxDT0RFPnN0b3A8L0NPREU+IGluIGNsYXNzIDxDT0RFPm9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+VGhyb3dzOjwvQj4KLTxERD48Q09ERT5qYXZhLmxhbmcuRXhjZXB0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RGVmYXVsdCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREZWZhdWx0PC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3I8L0E+IDxCPmdldERlZmF1bHQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UKLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgc2hhcmVkIGluc3RhbmNlPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJsb2dFcnJvcihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuVGhyb3dhYmxlKSI+PCEtLSAtLT48L0E+PEgzPgotbG9nRXJyb3I8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgdm9pZCA8Qj5sb2dFcnJvcjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlRocm93YWJsZSZuYnNwO2V4Yyk8L1BSRT4KLTxETD4KLTxERD5Mb2dzIGFuIGVycm9yIHdpdGggdGhpcyBwbHVnaW4uCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm1lc3NhZ2U8L0NPREU+IC0gPEREPjxDT0RFPmV4YzwvQ09ERT4gLSA8L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYTQ1YmUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcyNyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1TZXJ2aWNlUG9saWN5UGxhdGZvcm0KLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeVBsYXRmb3JtIGNsYXNzIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJTZXJ2aWNlUG9saWN5UGxhdGZvcm0iOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7TkVYVCBDTEFTUzwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBTZXJ2aWNlUG9saWN5UGxhdGZvcm08L0gyPgotPFBSRT4KLWphdmEubGFuZy5PYmplY3QKLSAgPElNRyBTUkM9Ii4uLy4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9pbmhlcml0LmdpZiIgQUxUPSJleHRlbmRlZCBieSAiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0I+Ci08L1BSRT4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBjbGFzcyA8Qj5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0I+PERUPmV4dGVuZHMgamF2YS5sYW5nLk9iamVjdDwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGNsYXNzIGlzIHVzZWQgdG8gYWNjZXNzIGFuZCBhZGQgc2VydmljZSBwb2xpY2llcyB0byB0aGUgcGxhdGZvcm0uCi08UD4KLQotPFA+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNhZGRDaGlsZENoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIsIGJvb2xlYW4pIj5hZGRDaGlsZENoYW5nZUxpc3RlbmVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9BPiZuYnNwO2xpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuJm5ic3A7b25Db21taXQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBhbGxvd3MgY2FsbHMgdG8gbGlzdGVuZXIgdG8gYW55IGNoaWxkIGNoYW5nZSB0aGF0IGlzCi0gbWFkZSBpbiB0aGUgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0gcmVnYXJkbGVzcyBvZiB3aGVyZSBpdCBpcyAKLSBsb2NhdGVkIGluIHRoZSB0cmVlIG9mIHNlcnZpY2UgcG9saWNpZXMuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2FkZFByb2plY3RMb2FkTGlzdGVuZXIob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyKSI+YWRkUHJvamVjdExvYWRMaXN0ZW5lcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgYSBwcm9qZWN0IHBsYXRmb3JtIGxpc3RlbmVyLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNjb21taXRDaGFuZ2VzKCkiPmNvbW1pdENoYW5nZXM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDYWxsaW5nIHRoaXMgbWV0aG9kIHdpbGwgY29tbWl0IGFsbCB0aGUgc3RhdGUgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSB0byBhbGwKLSB0aGUgc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjY29tbWl0Q2hhbmdlcyhvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPmNvbW1pdENoYW5nZXM8L0E+PC9CPihvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCZuYnNwO3Byb2plY3QpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDYWxsaW5nIHRoaXMgbWV0aG9kIHdpbGwgY29tbWl0IGFsbCB0aGUgc3RhdGUgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSB0byBhbGwKLSB0aGUgc2VydmljZSBwb2xpY2llcyBmb3IgYSBwYXJ0aWN1bGFyIHByb2plY3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNjcmVhdGVTZXJ2aWNlUG9saWN5KG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPmNyZWF0ZVNlcnZpY2VQb2xpY3k8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BhcmVudCwKLSAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2lkLAotICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZW51bUxpc3RJZCwKLSAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2RlZmF1bHRFbnVtSWQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIElTZXJ2aWNlUG9saWN5IG9iamVjdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjZGlzY2FyZENoYW5nZXMoKSI+ZGlzY2FyZENoYW5nZXM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDYWxsaW5nIHRoaXMgbWV0aG9kIHdpbGwgZGlzY2FyZCBhbGwgdGhlIHN0YXRlIGNoYW5nZXMgdGhhdCB3ZXJlIG1hZGUgdG8gYWxsCi0gdGhlIHNlcnZpY2UgcG9saWNpZXMuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2Rpc2NhcmRDaGFuZ2VzKG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0KSI+ZGlzY2FyZENoYW5nZXM8L0E+PC9CPihvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCZuYnNwO3Byb2plY3QpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDYWxsaW5nIHRoaXMgbWV0aG9kIHdpbGwgZGlzY2FyZCBhbGwgdGhlIHN0YXRlIGNoYW5nZXMgdGhhdCB3ZXJlIG1hZGUgdG8gYWxsCi0gdGhlIHNlcnZpY2UgcG9saWNpZXMgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNnZXRBbGxQb2xpY3lJZHMoKSI+Z2V0QWxsUG9saWN5SWRzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhbGwgc2VydmljZSBwb2xpY3kgSURzIHRoYXQgYXJlIGRlZmluZWQuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjZ2V0SW5zdGFuY2UoKSI+Z2V0SW5zdGFuY2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjZ2V0Um9vdFNlcnZpY2VQb2xpY2llcyhvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSUZpbHRlcikiPmdldFJvb3RTZXJ2aWNlUG9saWNpZXM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SUZpbHRlcjwvQT4mbmJzcDtmaWx0ZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBsaXN0IG9mIHJvb3QgcG9saWNpZXMgZm9yIHRoZSBwbGF0Zm9ybSBnaXZlbiBhIGZpbHRlci48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2dldFNlcnZpY2VQb2xpY3koamF2YS5sYW5nLlN0cmluZykiPmdldFNlcnZpY2VQb2xpY3k8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7aWQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgc2VydmljZSBwb2xpY3kgZ2l2ZW4gaXQncyB1bmlxdWUgSUQuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNnZXRTdGF0ZUVudW1lcmF0aW9uKGphdmEubGFuZy5TdHJpbmcpIj5nZXRTdGF0ZUVudW1lcmF0aW9uPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2VudW1JZCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNnZXRTdGF0ZUl0ZW1FbnVtZXJhdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0U3RhdGVJdGVtRW51bWVyYXRpb248L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7c3RhdGVJdGVtSWQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjaXNFbmFibGVkKGphdmEubGFuZy5PYmplY3QpIj5pc0VuYWJsZWQ8L0E+PC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7b2JqZWN0KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7SW5kaWNhdGVzIGlmIHRoZSBwcm9wZXJ0eSBwYWdlIGZvciBhIHByb2plY3Qgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBhIHBvcHVwCi0gbWVudSBvciBub3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2lzUHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPmlzUHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZDwvQT48L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgaWYgdGhlIHBhcnRpY3VsYXIgcHJvamVjdCBoYXMgYmVlbiBlbmFibGVkIG9yIG5vdCBvbiBpdCdzCi0gc2VydmljZSBwb2xpY3kgcHJvcGVydHkgcGFnZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjcXVldWVDaGlsZENoYW5nZUxpc3RlbmVycyhib29sZWFuKSI+cXVldWVDaGlsZENoYW5nZUxpc3RlbmVyczwvQT48L0I+KGJvb2xlYW4mbmJzcDtxdWV1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0luZGljYXRlcyB3aGV0aGVyIGNoaWxkIGNoYW5nZSBsaXN0ZW5lcnMgc2hvdWxkIGJlIHF1ZXVlZCBvciBub3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI3JlbW92ZUNoaWxkQ2hhbmdlTGlzdGVuZXIob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lciwgYm9vbGVhbikiPnJlbW92ZUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtvbkNvbW1pdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZXMgYSBjaGlsZCBjaGFuZ2UgbGlzdGVuZXIgZnJvbSB0aGUgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI3JlbW92ZVByb2plY3RMb2FkTGlzdGVuZXIob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyKSI+cmVtb3ZlUHJvamVjdExvYWRMaXN0ZW5lcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZW1vdmVzIGEgcHJvamVjdCBwbGF0Zm9ybSBsaXN0ZW5lci48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjcmVtb3ZlU2VydmljZVBvbGljeShvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj5yZW1vdmVTZXJ2aWNlUG9saWN5PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwb2xpY3kpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZW1vdmVzIGEgc2VydmljZSBwb2xpY3kgZnJvbSB0aGUgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI3Jlc3RvcmVEZWZhdWx0cygpIj5yZXN0b3JlRGVmYXVsdHM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXN0b3JlcyB0aGUgd29ya3NwYWNlIGxldmVsIGRlZmF1bHRzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNyZXN0b3JlRGVmYXVsdHMob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj5yZXN0b3JlRGVmYXVsdHM8L0E+PC9CPihvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCZuYnNwO3Byb2plY3QpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXN0b3JlcyB0aGUgcHJvamVjdCBsZXZlbCBkZWZhdWx0cy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjc2V0UHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCwgYm9vbGVhbikiPnNldFByb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQ8L0E+PC9CPihvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCZuYnNwO3Byb2plY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgd2hldGhlciBhIHByb2plY3Qgc3BlY2lmaWMgc2VydmljZSBwb2xpY3kgcHJlZmVyZW5jZXMgaXMgZW5hYmxlZCBvciBub3QuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+ZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldEluc3RhbmNlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEluc3RhbmNlPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPiA8Qj5nZXRJbnN0YW5jZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybS4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoaXMgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0uPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJpc0VuYWJsZWQoamF2YS5sYW5nLk9iamVjdCkiPjwhLS0gLS0+PC9BPjxIMz4KLWlzRW5hYmxlZDwvSDM+Ci08UFJFPgotcHVibGljIGJvb2xlYW4gPEI+aXNFbmFibGVkPC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7b2JqZWN0KTwvUFJFPgotPERMPgotPEREPkluZGljYXRlcyBpZiB0aGUgcHJvcGVydHkgcGFnZSBmb3IgYSBwcm9qZWN0IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBwb3B1cAotIG1lbnUgb3Igbm90LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5vYmplY3Q8L0NPREU+IC0gCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdHJ1ZSBpZiB0aGlzIHBsYXRmb3JtIGlzIGVuYWJsZWQgZm9yIHNwZWNpZmllZCBvYmplY3QuICBJbiBtb3N0Ci0gY2FzZXMgdGhlIHNwZWNpZmllZCBvYmplY3Qgd2lsbCBiZSBhbiBJUHJvamVjdC4gIFRoaXMgbWV0aG9kIGlzIHVzdWFsbHkgY2FsbGVkCi0gdG8gZGV0ZXJtaW5lIGlmIGEgdGhlIHNlcnZpY2UgcG9saWN5IGVudHJ5IHNob3VsZCBhcHBlYXIgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY29tbWl0Q2hhbmdlcygpIj48IS0tIC0tPjwvQT48SDM+Ci1jb21taXRDaGFuZ2VzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5jb21taXRDaGFuZ2VzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+Q2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGNvbW1pdCBhbGwgdGhlIHN0YXRlIGNoYW5nZXMgdGhhdCB3ZXJlIG1hZGUgdG8gYWxsCi0gdGhlIHNlcnZpY2UgcG9saWNpZXMuICBUaGUgbWV0aG9kIG9ubHkgYXBwbGllcyB0byBzdGF0ZSBjaGFuZ2VzIGF0IHRoZSB3b3Jrc3BhY2UKLSBsZXZlbC4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZGlzY2FyZENoYW5nZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZGlzY2FyZENoYW5nZXM8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPmRpc2NhcmRDaGFuZ2VzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+Q2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGRpc2NhcmQgYWxsIHRoZSBzdGF0ZSBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlIHRvIGFsbAotIHRoZSBzZXJ2aWNlIHBvbGljaWVzLiAgVGhlIG1ldGhvZCBvbmx5IGFwcGxpZXMgdG8gc3RhdGUgY2hhbmdlcyBhdCB0aGUgd29ya3NwYWNlCi0gbGV2ZWwuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImNvbW1pdENoYW5nZXMob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj48IS0tIC0tPjwvQT48SDM+Ci1jb21taXRDaGFuZ2VzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5jb21taXRDaGFuZ2VzPC9CPihvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCZuYnNwO3Byb2plY3QpPC9QUkU+Ci08REw+Ci08REQ+Q2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGNvbW1pdCBhbGwgdGhlIHN0YXRlIGNoYW5nZXMgdGhhdCB3ZXJlIG1hZGUgdG8gYWxsCi0gdGhlIHNlcnZpY2UgcG9saWNpZXMgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LiAgVGhlIG1ldGhvZCBvbmx5IGFwcGxpZXMgdG8gCi0gc3RhdGUgY2hhbmdlcyBhdCB0aGUgcHJvamVjdCBsZXZlbC4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZGlzY2FyZENoYW5nZXMob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj48IS0tIC0tPjwvQT48SDM+Ci1kaXNjYXJkQ2hhbmdlczwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+ZGlzY2FyZENoYW5nZXM8L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCk8L1BSRT4KLTxETD4KLTxERD5DYWxsaW5nIHRoaXMgbWV0aG9kIHdpbGwgZGlzY2FyZCBhbGwgdGhlIHN0YXRlIGNoYW5nZXMgdGhhdCB3ZXJlIG1hZGUgdG8gYWxsCi0gdGhlIHNlcnZpY2UgcG9saWNpZXMgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LiAgVGhlIG1ldGhvZCBvbmx5IGFwcGxpZXMgdG8gCi0gc3RhdGUgY2hhbmdlcyBhdCB0aGUgcHJvamVjdCBsZXZlbC4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QWxsUG9saWN5SWRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEFsbFBvbGljeUlkczwvSDM+Ci08UFJFPgotcHVibGljIGphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsgPEI+Z2V0QWxsUG9saWN5SWRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhbGwgc2VydmljZSBwb2xpY3kgSURzIHRoYXQgYXJlIGRlZmluZWQuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyBhbGwgc2VydmljZSBwb2xpY3kgSURzIHRoYXQgYXJlIGRlZmluZWQuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRSb290U2VydmljZVBvbGljaWVzKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JRmlsdGVyKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0Um9vdFNlcnZpY2VQb2xpY2llczwvSDM+Ci08UFJFPgotcHVibGljIGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyA8Qj5nZXRSb290U2VydmljZVBvbGljaWVzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SUZpbHRlcjwvQT4mbmJzcDtmaWx0ZXIpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbGlzdCBvZiByb290IHBvbGljaWVzIGZvciB0aGUgcGxhdGZvcm0gZ2l2ZW4gYSBmaWx0ZXIuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmZpbHRlcjwvQ09ERT4gLSBhIGZpbHRlciBhIHRoZSBzZXJ2aWNlIHBvbGljaWVzLiAgVGhpcyBtZXRob2QgbWF5IGJlIG51bGwgaWYKLSBubyBmaWx0ZXIgaXMgcmVxdWlyZWQuCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgYWxsIHJvb3QgbGV2ZWwgc2VydmljZSBwb2xpY2llcy4gIElmIGEgZmlsdGVyIGlzIHNwZWNpZmllZAotIHNvbWUgc2VydmljZSBwb2xpY2llcyBtYXkgYmUgcmVtb3ZlZCBmcm9tIHRoZSByZXR1cm5lZCBsaXN0LiAgQSByb290Ci0gbGV2ZWwgc2VydmljZSBwb2xpY3kgaXMgZGVmaW5lZCB0byBiZSBhIHNlcnZpY2UgcG9saWN5IHdpdGggbm8gcGFyZW50LjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U2VydmljZVBvbGljeShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U2VydmljZVBvbGljeTwvSDM+Ci08UFJFPgotcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+IDxCPmdldFNlcnZpY2VQb2xpY3k8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtpZCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgc2VydmljZSBwb2xpY3kgZ2l2ZW4gaXQncyB1bmlxdWUgSUQuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmlkPC9DT0RFPiAtIAotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIGEgc2VydmljZSBwb2xpY3kgZ2l2ZW4gaXQncyB1bmlxdWUgSUQuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJpc1Byb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj48IS0tIC0tPjwvQT48SDM+Ci1pc1Byb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQ8L0gzPgotPFBSRT4KLXB1YmxpYyBib29sZWFuIDxCPmlzUHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZDwvQj4ob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QmbmJzcDtwcm9qZWN0KTwvUFJFPgotPERMPgotPEREPlJldHVybnMgaWYgdGhlIHBhcnRpY3VsYXIgcHJvamVjdCBoYXMgYmVlbiBlbmFibGVkIG9yIG5vdCBvbiBpdCdzCi0gc2VydmljZSBwb2xpY3kgcHJvcGVydHkgcGFnZS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cHJvamVjdDwvQ09ERT4gLSAKLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgcHJvamVjdCBoYXMgYmVlbiBlbmFibGVkIGZvcgotIHByb2plY3Qgc3BlY2lmaWMgcG9saWN5IHByZWZlcmVuY2VzLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0UHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZChvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCwgYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFByb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQ8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnNldFByb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQ8L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgd2hldGhlciBhIHByb2plY3Qgc3BlY2lmaWMgc2VydmljZSBwb2xpY3kgcHJlZmVyZW5jZXMgaXMgZW5hYmxlZCBvciBub3QuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnByb2plY3Q8L0NPREU+IC0gPEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIDwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0icmVzdG9yZURlZmF1bHRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLXJlc3RvcmVEZWZhdWx0czwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+cmVzdG9yZURlZmF1bHRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmVzdG9yZXMgdGhlIHdvcmtzcGFjZSBsZXZlbCBkZWZhdWx0cy4gIE5vdGU6IHRoZSBzdGF0ZSBjaGFuZ2VzIG1hZGUgYnkgCi0gY2FsbGluZyB0aGlzIG1ldGhvZCBuZWVkIHRvIGJlIGNvbW1pdHRlZCBvciBkaXNjYXJkZWQgYnkgdGhlIHBsYXRmb3JtLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJyZXN0b3JlRGVmYXVsdHMob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj48IS0tIC0tPjwvQT48SDM+Ci1yZXN0b3JlRGVmYXVsdHM8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnJlc3RvcmVEZWZhdWx0czwvQj4ob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QmbmJzcDtwcm9qZWN0KTwvUFJFPgotPERMPgotPEREPlJlc3RvcmVzIHRoZSBwcm9qZWN0IGxldmVsIGRlZmF1bHRzLiAgTm90ZTogdGhlIHN0YXRlIGNoYW5nZXMgbWFkZSBieSAKLSBjYWxsaW5nIHRoaXMgbWV0aG9kIG5lZWQgdG8gYmUgY29tbWl0dGVkIG9yIGRpc2NhcmRlZCBieSB0aGUgcGxhdGZvcm0uCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnByb2plY3Q8L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVTZXJ2aWNlUG9saWN5KG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVNlcnZpY2VQb2xpY3k8L0gzPgotPFBSRT4KLXB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiA8Qj5jcmVhdGVTZXJ2aWNlUG9saWN5PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BhcmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtlbnVtTGlzdElkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2RlZmF1bHRFbnVtSWQpPC9QUkU+Ci08REw+Ci08REQ+VGhpcyBtZXRob2QgY3JlYXRlcyBhbiBJU2VydmljZVBvbGljeSBvYmplY3QuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnBhcmVudDwvQ09ERT4gLSB0aGUgcGFyZW50IHBvbGljeSBmb3IgdGhpcyBwb2xpY3kuICBJZiB0aGlzIHBvbGljeSBoYXMgbm8gCi0gcGFyZW50IG51bGwgbWF5IGJlIHNwZWNpZmllZC48REQ+PENPREU+aWQ8L0NPREU+IC0gVGhpcyBpcyBhIHVuaXF1ZSBpZCBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS4gIElmIHRoZSBpZCBzcGVjaWZpZWQKLSBpcyBub3QgdW5pcXVlIHRyYWlsaW5nIG51bWVyaWNhbCBkaWdpdHMgaW4gdGhlIGlkIHdpbGwgYmUgc3RyaXBwZWQgb2ZmLiAgCi0gTnVtZXJpY2FsIGRpZ2l0cyB3aWxsIHRoZW4gYmUgYWRkZWQgdG8gZW5kIG9mIHRoZSBpZCB0byBtYWtlIGl0IHVuaXF1ZS4KLSBJZiB0aGUgaWQgaXMgZW1wdHkgb3IgbnVsbCB0aGUgZnJhbWV3b3JrIHdpbGwgYXNzaWduIGEgdW5pcXVlIGlkLjxERD48Q09ERT5lbnVtTGlzdElkPC9DT0RFPiAtIElmIHRoaXMgcG9saWN5J3Mgc3RhdGUgaXMgZGVmaW5lZCBieSBhbiBlbnVtZXJhdGlvbgotIHRoZSBlbnVtZXJhdGlvbiBpZCBzaG91bGQgYmUgc3BlY2lmaWVkIGhlcmUuICBPdGhlcndpc2UgbnVsbCBzaG91bGQgYmUKLSBzcGVjaWZpZWQuPEREPjxDT0RFPmRlZmF1bHRFbnVtSWQ8L0NPREU+IC0gSWYgdGhpcyBwb2xpY3kncyBzdGF0ZSBpcyBkZWZpbmVkIGJ5IGFuIGVudW1lcmF0aW9uCi0gdGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBkZWZhdWx0IHZhbHVlLiAgVGhpcyB2YWx1ZSBtYXkgYmUgbnVsbCAKLSBpZiBub3QgdXNpbmcgYW4gZW51bWVyYXRpb24gb3IgaWYgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGVudW1lcmF0aW9uCi0gc2hvdWxkIGJlIHVzZWQuCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgYSBzZXJ2aWNlIHBvbGljeSBvYmplY3QuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJyZW1vdmVTZXJ2aWNlUG9saWN5KG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSkiPjwhLS0gLS0+PC9BPjxIMz4KLXJlbW92ZVNlcnZpY2VQb2xpY3k8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnJlbW92ZVNlcnZpY2VQb2xpY3k8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5KTwvUFJFPgotPERMPgotPEREPlJlbW92ZXMgYSBzZXJ2aWNlIHBvbGljeSBmcm9tIHRoZSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cG9saWN5PC9DT0RFPiAtIHRoZSBzZXJ2aWNlIHBvbGljeTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iYWRkQ2hpbGRDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLCBib29sZWFuKSI+PCEtLSAtLT48L0E+PEgzPgotYWRkQ2hpbGRDaGFuZ2VMaXN0ZW5lcjwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+YWRkQ2hpbGRDaGFuZ2VMaXN0ZW5lcjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9BPiZuYnNwO2xpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuJm5ic3A7b25Db21taXQpPC9QUkU+Ci08REw+Ci08REQ+VGhpcyBtZXRob2QgYWxsb3dzIGNhbGxzIHRvIGxpc3RlbmVyIHRvIGFueSBjaGlsZCBjaGFuZ2UgdGhhdCBpcwotIG1hZGUgaW4gdGhlIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUgaXQgaXMgCi0gbG9jYXRlZCBpbiB0aGUgdHJlZSBvZiBzZXJ2aWNlIHBvbGljaWVzLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5saXN0ZW5lcjwvQ09ERT4gLSA8REQ+PENPREU+b25Db21taXQ8L0NPREU+IC0gaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBsaXN0ZW5lciBzaG91bGQgYmUgaW52b2tlZCB3aGVuCi0gdGhlIHRoZSBwbGF0Zm9ybSBjaGFuZ2VzIGFyZSBjb21taXR0ZWQuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJxdWV1ZUNoaWxkQ2hhbmdlTGlzdGVuZXJzKGJvb2xlYW4pIj48IS0tIC0tPjwvQT48SDM+Ci1xdWV1ZUNoaWxkQ2hhbmdlTGlzdGVuZXJzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5xdWV1ZUNoaWxkQ2hhbmdlTGlzdGVuZXJzPC9CPihib29sZWFuJm5ic3A7cXVldWUpPC9QUkU+Ci08REw+Ci08REQ+SW5kaWNhdGVzIHdoZXRoZXIgY2hpbGQgY2hhbmdlIGxpc3RlbmVycyBzaG91bGQgYmUgcXVldWVkIG9yIG5vdC4gIElmCi0gdGhleSBhcmUgcXVldWVkIHRoZW4gY2hpbGQgY2hhbmdlIGV2ZW50cyB3aWxsIGJlIHF1ZXVlIHVwIHVudGlsIHRoaXMKLSBtZXRob2QgaXMgY2FsbGVkIHdpdGggYSBmYWxzZSBwYXJhbWV0ZXIuICBXaGVuIHRoaXMgaGFwcGVucyB0aGUgY2hpbGQKLSBjaGFuZ2UgZXZlbnQgbGlzdGVuZXJzIGFyZSBub3RpY2VkIG9mIGFkZCB0aGUgZXZlbnRzIHRoYXQgaGF2ZSBvY2N1cnJlZC4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cXVldWU8L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJyZW1vdmVDaGlsZENoYW5nZUxpc3RlbmVyKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIsIGJvb2xlYW4pIj48IS0tIC0tPjwvQT48SDM+Ci1yZW1vdmVDaGlsZENoYW5nZUxpc3RlbmVyPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5yZW1vdmVDaGlsZENoYW5nZUxpc3RlbmVyPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtvbkNvbW1pdCk8L1BSRT4KLTxETD4KLTxERD5SZW1vdmVzIGEgY2hpbGQgY2hhbmdlIGxpc3RlbmVyIGZyb20gdGhlIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5saXN0ZW5lcjwvQ09ERT4gLSA8REQ+PENPREU+b25Db21taXQ8L0NPREU+IC0gaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBjaGFuZ2UgbGlzdGVuZXIgc2hvdWxkIGJlIHJlbW92ZWQKLSBmcm9tIHRoZSBvbkNvbW1pdCBsaXN0LjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iYWRkUHJvamVjdExvYWRMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIpIj48IS0tIC0tPjwvQT48SDM+Ci1hZGRQcm9qZWN0TG9hZExpc3RlbmVyPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5hZGRQcm9qZWN0TG9hZExpc3RlbmVyPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyPC9BPiZuYnNwO2xpc3RlbmVyKTwvUFJFPgotPERMPgotPEREPkFkZCBhIHByb2plY3QgcGxhdGZvcm0gbGlzdGVuZXIuICBXaGVuIGEgcGFydGljdWxhciBwcm9qZWN0IGlzIHJlZmVyZW5jZWQKLSBieSBpbiB0aGUgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0gdGhpcyBsaXN0ZW5lciB3aWxsIGJlIGNhbGxlZCB0aGUgZmlyc3QKLSB0aW1lIHRoZSBwcm9qZWN0IGlzIGxvYWRlZCBpbnRvIHRoZSBzeXN0ZW0uCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmxpc3RlbmVyPC9DT0RFPiAtIHRoZSBsaXN0ZW5lcjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0icmVtb3ZlUHJvamVjdExvYWRMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIpIj48IS0tIC0tPjwvQT48SDM+Ci1yZW1vdmVQcm9qZWN0TG9hZExpc3RlbmVyPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5yZW1vdmVQcm9qZWN0TG9hZExpc3RlbmVyPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyPC9BPiZuYnNwO2xpc3RlbmVyKTwvUFJFPgotPERMPgotPEREPlJlbW92ZXMgYSBwcm9qZWN0IHBsYXRmb3JtIGxpc3RlbmVyLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5saXN0ZW5lcjwvQ09ERT4gLSB0aGUgbGlzdGVuZXI8L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFN0YXRlRW51bWVyYXRpb24oamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFN0YXRlRW51bWVyYXRpb248L0gzPgotPFBSRT4KLXB1YmxpYyBqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0E+Jmd0OyA8Qj5nZXRTdGF0ZUVudW1lcmF0aW9uPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZW51bUlkKTwvUFJFPgotPERMPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+ZW51bUlkPC9DT0RFPiAtIAotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIGEgbGlzdCBvZiBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtcyBnaXZlbiB0aGUgdW5pcXVlCi0gZW51bWVyYXRpb24gSUQgZm9yIHRoaXMgZW51bWVyYXRpb24uPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTdGF0ZUl0ZW1FbnVtZXJhdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U3RhdGVJdGVtRW51bWVyYXRpb248L0gzPgotPFBSRT4KLXB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0E+IDxCPmdldFN0YXRlSXRlbUVudW1lcmF0aW9uPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7c3RhdGVJdGVtSWQpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zdGF0ZUl0ZW1JZDwvQ09ERT4gLSAKLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyBhIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW0gZ2l2ZW4gdGhpcyBJRCBmb3IgdGhpcyBlbnVtZXJhdGlvbgotIGl0ZW0uPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSURlc2NyaXB0b3IuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lEZXNjcmlwdG9yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljOWRkNDQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSURlc2NyaXB0b3IuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSURlc2NyaXB0b3IKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSURlc2NyaXB0b3IiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1xjbGFzcy11c2VJRGVzY3JpcHRvci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklEZXNjcmlwdG9yLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JRGVzY3JpcHRvcjwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SURlc2NyaXB0b3I8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklTZXJ2aWNlUG9saWN5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNnZXREZXNjcmlwdG9yKCkiPmdldERlc2NyaXB0b3I8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBkZXNjcmlwdG9yIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SURlc2NyaXB0b3I8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SURlc2NyaXB0b3I8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklEZXNjcmlwdG9yPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JUXVpY2tGaXhBY3Rpb25JbmZvLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sI2dldERlc2NyaXB0b3IoKSI+Z2V0RGVzY3JpcHRvcjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBkZXNjcmlwdG9yIGZvciB0aGlzIHF1aWNrIGZpeC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVBvbGljeU9wZXJhdGlvbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXREZXNjcmlwdG9yKCkiPmdldERlc2NyaXB0b3I8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBkZXNjcmlwdG9yIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbi48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvXGNsYXNzLXVzZUlEZXNjcmlwdG9yLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSURlc2NyaXB0b3IuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lGaWx0ZXIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lGaWx0ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA5ZmRmOC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9JRmlsdGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklGaWx0ZXIKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSUZpbHRlciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lGaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlSUZpbHRlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklGaWx0ZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklGaWx0ZXI8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRmlsdGVyPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SUZpbHRlcjwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gd2l0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lGaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklGaWx0ZXI8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjZ2V0Um9vdFNlcnZpY2VQb2xpY2llcyhvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSUZpbHRlcikiPmdldFJvb3RTZXJ2aWNlUG9saWNpZXM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SUZpbHRlcjwvQT4mbmJzcDtmaWx0ZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBsaXN0IG9mIHJvb3QgcG9saWNpZXMgZm9yIHRoZSBwbGF0Zm9ybSBnaXZlbiBhIGZpbHRlci48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SUZpbHRlcjwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHM8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lGaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklGaWx0ZXI8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SUZpbHRlcjwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+QWN0aXZpdHlVdGlscy48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL0FjdGl2aXR5VXRpbHMuaHRtbCNnZXRDdXJyZW50QWN0aXZpdGllc0ZpbHRlcigpIj5nZXRDdXJyZW50QWN0aXZpdGllc0ZpbHRlcjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBzZXJ2aWNlIHBvbGljeSBmaWx0ZXIgYmFzZWQgb24gdGhlIEVjbGlwc2UgYWN0aXZpdGllcyBzZXR0aW5ncy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lGaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlSUZpbHRlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklGaWx0ZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IwY2NlMC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lFbnVtZXJhdGlvbkxpc3QKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeUVudW1lcmF0aW9uTGlzdCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+Q2xhc3NlcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdGhhdCBpbXBsZW1lbnQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtjbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIElQb2xpY3lFbnVtZXJhdGlvbkxpc3QgaW50ZXJmYWNlLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+UG9saWN5UmVsYXRpb25zaGlwSW1wbC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCNnZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3QoKSI+Z2V0UG9saWN5RW51bWVyYXRpb25MaXN0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcG9saWN5IGVudW1lcmF0aW9uIGxpc3QgZm9yIHRoaXMgcmVsYXRpb25zaGlwLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVBvbGljeVJlbGF0aW9uc2hpcC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCNnZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3QoKSI+Z2V0UG9saWN5RW51bWVyYXRpb25MaXN0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcG9saWN5IGVudW1lcmF0aW9uIGxpc3QgZm9yIHRoaXMgcmVsYXRpb25zaGlwLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdGhhdCByZXR1cm4gdHlwZXMgd2l0aCBhcmd1bWVudHMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+UG9saWN5UmVsYXRpb25zaGlwSW1wbC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCNnZXRSZWxhdGVkUG9saWNpZXMoKSI+Z2V0UmVsYXRlZFBvbGljaWVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcmVsYXRlZCBwb2xpY2llcyBmb3IgdGhpcyByZWxhdGlvbnNoaXAuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVBvbGljeVJlbGF0aW9uc2hpcC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCNnZXRSZWxhdGVkUG9saWNpZXMoKSI+Z2V0UmVsYXRlZFBvbGljaWVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcmVsYXRlZCBwb2xpY2llcyBmb3IgdGhpcyByZWxhdGlvbnNoaXAuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5Db25zdHJ1Y3RvcnMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwjUG9saWN5UmVsYXRpb25zaGlwSW1wbChvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeUVudW1lcmF0aW9uTGlzdCwgamF2YS51dGlsLkxpc3QpIj5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+Jm5ic3A7cG9saWN5RW51bWVyYXRpb25MaXN0LAotICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT4mZ3Q7Jm5ic3A7cmVsYXRlZFBvbGljaWVzKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5Db25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPiB3aXRoIHR5cGUgYXJndW1lbnRzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCNQb2xpY3lSZWxhdGlvbnNoaXBJbXBsKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5RW51bWVyYXRpb25MaXN0LCBqYXZhLnV0aWwuTGlzdCkiPlBvbGljeVJlbGF0aW9uc2hpcEltcGw8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQT4mbmJzcDtwb2xpY3lFbnVtZXJhdGlvbkxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPiZndDsmbmJzcDtyZWxhdGVkUG9saWNpZXMpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ0YjQyZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lSZWxhdGlvbnNoaXAKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVJlbGF0aW9uc2hpcCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lSZWxhdGlvbnNoaXA8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5UmVsYXRpb25zaGlwPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVJlbGF0aW9uc2hpcDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+Q2xhc3NlcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdGhhdCBpbXBsZW1lbnQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtjbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIElQb2xpY3lSZWxhdGlvbnNoaXAKLSBpbnRlcmZhY2UuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPiB0aGF0IHJldHVybiB0eXBlcyB3aXRoIGFyZ3VtZW50cyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5UmVsYXRpb25zaGlwPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+Jmd0OzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JU2VydmljZVBvbGljeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjZ2V0UmVsYXRpb25zaGlwcygpIj5nZXRSZWxhdGlvbnNoaXBzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIGxpc3Qgb2YgcmVsYXRpb25zaGlwcyB0byBvdGhlciBJU2VydmljZVBvbGljeSBvYmplY3RzLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kIHBhcmFtZXRlcnMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+IHdpdGggdHlwZSBhcmd1bWVudHMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVJlbGF0aW9uc2hpcDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVNlcnZpY2VQb2xpY3kuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI3NldFJlbGF0aW9uc2hpcHMoamF2YS51dGlsLkxpc3QpIj5zZXRSZWxhdGlvbnNoaXBzPC9BPjwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+Jmd0OyZuYnNwO3JlbGF0aW9uc2hpcHMpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSByZWxhdGlvbnNoaXBzIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1xjbGFzcy11c2VJUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVBvbGljeVN0YXRlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9JUG9saWN5U3RhdGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ5NzQ5OC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9JUG9saWN5U3RhdGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4NSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lTdGF0ZSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1xjbGFzcy11c2VJUG9saWN5U3RhdGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5U3RhdGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lTdGF0ZTwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGU8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVNlcnZpY2VQb2xpY3kuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI2dldFBvbGljeVN0YXRlKCkiPmdldFBvbGljeVN0YXRlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcG9saWN5IHN0YXRlIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGU8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklTZXJ2aWNlUG9saWN5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNnZXRQb2xpY3lTdGF0ZShvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPmdldFBvbGljeVN0YXRlPC9BPjwvQj4ob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QmbmJzcDtwcm9qZWN0KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgSVBvbGljeVN0YXRlIGZvciBhIHBhcnRpY3VsYXIgcHJvamVjdC48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1xjbGFzcy11c2VJUG9saWN5U3RhdGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5U3RhdGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lQb2xpY3lTdGF0ZUVudW0uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lQb2xpY3lTdGF0ZUVudW0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM5NzcxNi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9JUG9saWN5U3RhdGVFbnVtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lTdGF0ZUVudW0KLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVBvbGljeVN0YXRlRW51bSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlSVBvbGljeVN0YXRlRW51bS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklQb2xpY3lTdGF0ZUVudW08L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5U3RhdGVFbnVtPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlRW51bTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZUVudW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lTdGF0ZUVudW08L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlRW51bTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVNlcnZpY2VQb2xpY3kuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI2dldFBvbGljeVN0YXRlRW51bSgpIj5nZXRQb2xpY3lTdGF0ZUVudW08L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBwb2xpY3kgc3RhdGUgZW51bWVyYXRpb24gb2JqZWN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlRW51bTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVNlcnZpY2VQb2xpY3kuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI2dldFBvbGljeVN0YXRlRW51bShvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPmdldFBvbGljeVN0YXRlRW51bTwvQT48L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHBvbGljeSBzdGF0ZSBlbnVtZXJhdGlvbiBvYmplY3QgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1xjbGFzcy11c2VJUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeVN0YXRlRW51bS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVNlcnZpY2VQb2xpY3kuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lTZXJ2aWNlUG9saWN5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzOWU2YzAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVNlcnZpY2VQb2xpY3kuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUxMyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzkgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1xjbGFzcy11c2VJU2VydmljZVBvbGljeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklTZXJ2aWNlUG9saWN5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeTwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjY3JlYXRlU2VydmljZVBvbGljeShvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3ksIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj5jcmVhdGVTZXJ2aWNlUG9saWN5PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtpZCwKLSAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2VudW1MaXN0SWQsCi0gICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtkZWZhdWx0RW51bUlkKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBtZXRob2QgY3JlYXRlcyBhbiBJU2VydmljZVBvbGljeSBvYmplY3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklTZXJ2aWNlUG9saWN5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNnZXRQYXJlbnRQb2xpY3koKSI+Z2V0UGFyZW50UG9saWN5PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcGFyZW50IHNlcnZpY2UgcG9saWN5IG9iamVjdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCNnZXRQb2xpY3koKSI+Z2V0UG9saWN5PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JUG9saWN5RW51bWVyYXRpb25MaXN0LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sI2dldFBvbGljeSgpIj5nZXRQb2xpY3k8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzZXJ2aWNlIHBvbGljeSBmb3IgdGhpcyBsaXN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TZXJ2aWNlUG9saWN5UGxhdGZvcm0uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNnZXRTZXJ2aWNlUG9saWN5KGphdmEubGFuZy5TdHJpbmcpIj5nZXRTZXJ2aWNlUG9saWN5PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2lkKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIHNlcnZpY2UgcG9saWN5IGdpdmVuIGl0J3MgdW5pcXVlIElELjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdGhhdCByZXR1cm4gdHlwZXMgd2l0aCBhcmd1bWVudHMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklTZXJ2aWNlUG9saWN5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNnZXRDaGlsZHJlbigpIj5nZXRDaGlsZHJlbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjZ2V0Um9vdFNlcnZpY2VQb2xpY2llcyhvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSUZpbHRlcikiPmdldFJvb3RTZXJ2aWNlUG9saWNpZXM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SUZpbHRlcjwvQT4mbmJzcDtmaWx0ZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBsaXN0IG9mIHJvb3QgcG9saWNpZXMgZm9yIHRoZSBwbGF0Zm9ybSBnaXZlbiBhIGZpbHRlci48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklGaWx0ZXIuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmh0bWwjYWNjZXB0KG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSkiPmFjY2VwdDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RGV0ZXJtaW5lcyBpZiBhIHBvbGljeSBzaG91bGQgYmUgYWNjZXB0ZWQgb3Igbm90LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TZXJ2aWNlUG9saWN5UGxhdGZvcm0uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNjcmVhdGVTZXJ2aWNlUG9saWN5KG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPmNyZWF0ZVNlcnZpY2VQb2xpY3k8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BhcmVudCwKLSAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2lkLAotICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZW51bUxpc3RJZCwKLSAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2RlZmF1bHRFbnVtSWQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIElTZXJ2aWNlUG9saWN5IG9iamVjdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JU2VydmljZVBvbGljeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjcmVtb3ZlQ2hpbGQob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5KSI+cmVtb3ZlQ2hpbGQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BvbGljeSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZXMgYSBjaGlsZCBzZXJ2aWNlIHBvbGljeSBmcm9tIHRoaXMgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjcmVtb3ZlU2VydmljZVBvbGljeShvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj5yZW1vdmVTZXJ2aWNlUG9saWN5PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwb2xpY3kpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZW1vdmVzIGEgc2VydmljZSBwb2xpY3kgZnJvbSB0aGUgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0uPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5Db25zdHJ1Y3RvcnMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCNQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsKGphdmEudXRpbC5MaXN0LCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj5Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsPC9BPjwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPiZndDsmbmJzcDtlbnVtTGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwb2xpY3kpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHNpbXBsZSBjb25zdHJ1Y3RvciBmb3IgdGhpcyBjbGFzcy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnM8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwjcG9saWN5U3RhdGVDaGFuZ2Uob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+cG9saWN5U3RhdGVDaGFuZ2U8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BvbGljeSwKLSAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtrZXksCi0gICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7b2xkVmFsdWUsCi0gICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmV3VmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDYWxsZWQgd2hlbiBhIHN0YXRlIGNoYW5nZSBldmVudCBvY2N1cnMgZm9yIGEgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVN0YXR1c0NoYW5nZUxpc3RlbmVyLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lTdGF0dXNDaGFuZ2VMaXN0ZW5lci5odG1sI3N0YXR1c0NoYW5nZShvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3ksIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzLCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cykiPnN0YXR1c0NoYW5nZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5LAotICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzJm5ic3A7b2xkU3RhdHVzLAotICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzJm5ic3A7bmV3U3RhdHVzKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q2FsbGVkIHdoZW4gYSBzdGF0dXMgY2hhbmdlIGV2ZW50IG9jY3Vycy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZCBwYXJhbWV0ZXJzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnM8L0E+IHdpdGggdHlwZSBhcmd1bWVudHMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sI2NoaWxkQ2hhbmdlKGphdmEudXRpbC5MaXN0LCBqYXZhLnV0aWwuTGlzdCkiPmNoaWxkQ2hhbmdlPC9BPjwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7Jm5ic3A7Y2hpbGQsCi0gICAgICAgICAgICBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuQm9vbGVhbiZndDsmbmJzcDthZGRlZCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRob2QgaXMgY2FsbGVkIHdpdGggYW4gYXJyYXkgb2YgY2hpbGQgY2hhbmdlcy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVBvbGljeU9wZXJhdGlvbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXRTZXJ2aWNlUG9saWN5KCkiPmdldFNlcnZpY2VQb2xpY3k8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzZXJ2aWNlIHBvbGljeSBmb3IgdGhpcyBvcGVyYXRpb24uPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPiB3aXRoIHBhcmFtZXRlcnMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JUXVpY2tGaXhBY3Rpb24uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uaHRtbCNhY3Rpb24ob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5KSI+YWN0aW9uPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwb2xpY3kpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgdGhpcyBhY3Rpb24gdG8gcmVzb2x2ZQotIGEgcGFydGljdWxhciBzZXJ2aWNlIHBvbGljeSBwcm9ibGVtLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbjwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtVUkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI2dldE9wZXJhdGlvbihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3ksIGphdmEubGFuZy5TdHJpbmcpIj5nZXRPcGVyYXRpb248L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BvbGljeSwKLSAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7aWQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGFuIG9wZXJhdGlvbiB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgc2VydmljZSBwb2xpY3kKLSBhbmQgaGFzIHRoZSBzcGVjaWZpZWQgaWQuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtVUkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI2dldE9wZXJhdGlvbnMob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5LCBib29sZWFuKSI+Z2V0T3BlcmF0aW9uczwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5LAotICAgICAgICAgICAgICBib29sZWFuJm5ic3A7aXNXb3Jrc3BhY2UpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBsaXN0IG9mIG9wZXJhdGlvbnMgZm9yIHRoaXMgcG9saWN5LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kIHBhcmFtZXRlcnMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+IHdpdGggdHlwZSBhcmd1bWVudHMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLkxpc3QmbHQ7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Jmd0OyZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtVUkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI2dldE9wZXJhdGlvbnNMaXN0KGphdmEudXRpbC5MaXN0LCBib29sZWFuKSI+Z2V0T3BlcmF0aW9uc0xpc3Q8L0E+PC9CPihqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDsmbmJzcDtwb2xpY2llcywKLSAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtpc1dvcmtzcGFjZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBsaXN0IG9mIGxpc3QgcG9saWN5IG9wZXJhdGlvbnMgd2hpY2ggYXJlIGFzc29jaWF0ZWQgd2l0aAotIHRoZSBzcGVjaWZpZWQgc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JUG9saWN5T3BlcmF0aW9uLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sI2lzRW5hYmxlZChqYXZhLnV0aWwuTGlzdCkiPmlzRW5hYmxlZDwvQT48L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyZuYnNwO3NlbGVjdGVkUG9saWNpZXMpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHdoZXRoZXIgdGhpcyBvcGVyYXRpb24gc2hvdWxkIGJlIGVuYWJsZWQgb3Igbm90LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklFbmFibGVPcGVyYXRpb24uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JRW5hYmxlT3BlcmF0aW9uLmh0bWwjaXNFbmFibGVkKGphdmEudXRpbC5MaXN0KSI+aXNFbmFibGVkPC9BPjwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7Jm5ic3A7c2VsZWN0ZWRQb2xpY2llcyk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgd2hldGhlciB0aGUgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JTGF1bmNoT3BlcmF0aW9uLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUxhdW5jaE9wZXJhdGlvbi5odG1sI2xhdW5jaChqYXZhLnV0aWwuTGlzdCkiPmxhdW5jaDwvQT48L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyZuYnNwO3NlbGVjdGVkUG9saWNpZXMpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgdGhpcyBjb21wbGV4IG9wZXJhdGlvbi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JUG9saWN5T3BlcmF0aW9uLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sI2xhdW5jaE9wZXJhdGlvbihqYXZhLnV0aWwuTGlzdCkiPmxhdW5jaE9wZXJhdGlvbjwvQT48L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyZuYnNwO3NlbGVjdGVkUG9saWNpZXMpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMYXVuY2hlcyB0aGUgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIGlmIHRoaXMgaXMgYSBjb21wbGV4IG9wZXJhdGlvbi48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzPC9BPiB0aGF0IHJldHVybiB0eXBlcyB3aXRoIGFyZ3VtZW50cyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVV0aWxzLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwjc29ydExpc3QoamF2YS51dGlsLkxpc3QpIj5zb3J0TGlzdDwvQT48L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyZuYnNwO3Vuc29ydGVkTGlzdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NvcnRzIGEgbGlzdCBvZiBzZXJ2aWNlIHBvbGljaWVzLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kIHBhcmFtZXRlcnMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHM8L0E+IHdpdGggdHlwZSBhcmd1bWVudHMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNlcnZpY2VVdGlscy48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL1NlcnZpY2VVdGlscy5odG1sI3NvcnRMaXN0KGphdmEudXRpbC5MaXN0KSI+c29ydExpc3Q8L0E+PC9CPihqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDsmbmJzcDt1bnNvcnRlZExpc3QpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTb3J0cyBhIGxpc3Qgb2Ygc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvXGNsYXNzLXVzZUlTZXJ2aWNlUG9saWN5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZDQxZDguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTdGF0ZUVudW1lcmF0aW9uSXRlbQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU3RhdGVFbnVtZXJhdGlvbkl0ZW0iOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU3RhdGVFbnVtZXJhdGlvbkl0ZW08L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklQb2xpY3lTdGF0ZUVudW0uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwjZ2V0Q3VycmVudEl0ZW0oKSI+Z2V0Q3VycmVudEl0ZW08L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBjdXJyZW50IGVudW0gaXRlbS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TZXJ2aWNlUG9saWN5UGxhdGZvcm0uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNnZXRTdGF0ZUl0ZW1FbnVtZXJhdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0U3RhdGVJdGVtRW51bWVyYXRpb248L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7c3RhdGVJdGVtSWQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+IHRoYXQgcmV0dXJuIHR5cGVzIHdpdGggYXJndW1lbnRzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCNnZXRFbnVtZXJhdGlvbkxpc3QoKSI+Z2V0RW51bWVyYXRpb25MaXN0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIGxpc3Qgb2Ygc3RhdGUgZW51bWVyYXRpb24gaXRlbXMuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklQb2xpY3lFbnVtZXJhdGlvbkxpc3QuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwjZ2V0RW51bWVyYXRpb25MaXN0KCkiPmdldEVudW1lcmF0aW9uTGlzdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHN0YXRlIGVudW1lcmF0aW9uIGxpc3QgaXRlbXMuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2dldFN0YXRlRW51bWVyYXRpb24oamF2YS5sYW5nLlN0cmluZykiPmdldFN0YXRlRW51bWVyYXRpb248L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZW51bUlkKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5Db25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPiB3aXRoIHR5cGUgYXJndW1lbnRzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwjUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbChqYXZhLnV0aWwuTGlzdCwgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5KSI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDwvQT48L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT4mZ3Q7Jm5ic3A7ZW51bUxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSBzaW1wbGUgY29uc3RydWN0b3IgZm9yIHRoaXMgY2xhc3MuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OWFmNjguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlBvbGljeUVudW1lcmF0aW9uTGlzdEltcGwKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIENsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvXGNsYXNzLXVzZVBvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgQ2xhc3M8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlBvbGljeUVudW1lcmF0aW9uTGlzdEltcGw8L0I+PC9IMj4KLTwvQ0VOVEVSPgotTm8gdXNhZ2Ugb2Ygb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlBvbGljeUVudW1lcmF0aW9uTGlzdEltcGwKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1xjbGFzcy11c2VQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUG9saWN5RW51bWVyYXRpb25MaXN0SW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDg2MWVhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzkgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIENsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuUG9saWN5UmVsYXRpb25zaGlwSW1wbCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1xjbGFzcy11c2VQb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIENsYXNzPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsPC9CPjwvSDI+Ci08L0NFTlRFUj4KLU5vIHVzYWdlIG9mIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsCi08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlUG9saWN5UmVsYXRpb25zaGlwSW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlBvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVmMzc2Yi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeUFjdGl2YXRvcgotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lBY3RpdmF0b3IiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBDbGFzczxicj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeUFjdGl2YXRvcjwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3I8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwjZ2V0RGVmYXVsdCgpIj5nZXREZWZhdWx0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMjM2NDQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeVBsYXRmb3JtCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuU2VydmljZVBvbGljeVBsYXRmb3JtIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9cY2xhc3MtdXNlU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgQ2xhc3M8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TZXJ2aWNlUG9saWN5UGxhdGZvcm0uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCNnZXRJbnN0YW5jZSgpIj5nZXRJbnN0YW5jZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybS48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvXGNsYXNzLXVzZVNlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YzYwODUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIENMQVNTJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnM8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwjY2hpbGRDaGFuZ2UoamF2YS51dGlsLkxpc3QsIGphdmEudXRpbC5MaXN0KSI+Y2hpbGRDaGFuZ2U8L0E+PC9CPihqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDsmbmJzcDtjaGlsZCwKLSAgICAgICAgICAgIGphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5Cb29sZWFuJmd0OyZuYnNwO2FkZGVkKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGhvZCBpcyBjYWxsZWQgd2l0aCBhbiBhcnJheSBvZiBjaGlsZCBjaGFuZ2VzLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iY2hpbGRDaGFuZ2UoamF2YS51dGlsLkxpc3QsIGphdmEudXRpbC5MaXN0KSI+PCEtLSAtLT48L0E+PEgzPgotY2hpbGRDaGFuZ2U8L0gzPgotPFBSRT4KLXZvaWQgPEI+Y2hpbGRDaGFuZ2U8L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyZuYnNwO2NoaWxkLAotICAgICAgICAgICAgICAgICBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuQm9vbGVhbiZndDsmbmJzcDthZGRlZCk8L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0aG9kIGlzIGNhbGxlZCB3aXRoIGFuIGFycmF5IG9mIGNoaWxkIGNoYW5nZXMuICBFYWNoIGNoaWxkIGl0ZW0KLSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGFkZGVkIGl0ZW0gYXQgdGhlIHNhbWUgaW5kZXggdmFsdWUuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmNoaWxkPC9DT0RFPiAtIHNlcnZpY2UgcG9saWNpZXMgdGhhdCBoYXZlIGNoYW5nZWQuPEREPjxDT0RFPmFkZGVkPC9DT0RFPiAtIGluZGljYXRlcyBpZiB0aGUgYXNzb2NpYXRlIHBvbGljeSB3YXMgYWRkZWQgb3IgcmVtb3ZlZC48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYgQ0xBU1MmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDVjZDRhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUlQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnM8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyPC9IMj4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+SVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIHJlZ2lzdGVyIGNvZGUgdGhhdCBuZWVkcyB0byBleGVjdXRlIHdoZW4gdGhlCi0gc2VydmljZSBwb2xpY3kgcGxhdGZvcm0gaXMgbG9hZGVkLgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sI2xvYWQoKSI+bG9hZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NhbGxlZCBvbmNlIHdoZW4gdGhlIHNlcnZpY2UgcGxhdGZvcm0gaXMgbG9hZGVkIGluIHRoZSBzeXN0ZW0uPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJsb2FkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWxvYWQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+bG9hZDwvQj4oKTwvUFJFPgotPERMPgotPEREPkNhbGxlZCBvbmNlIHdoZW4gdGhlIHNlcnZpY2UgcGxhdGZvcm0gaXMgbG9hZGVkIGluIHRoZSBzeXN0ZW0uICBUaGlzCi0gbWF5IG5vdCBuZWNlc3NhcmlseSBoYXBwZW4gd2hlbiBFY2xpcHNlIGluaXRpYWxseSBzdGFydHMuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGZmZTY0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnM8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcjwvSDI+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXI8L0I+PC9ETD4KLTwvUFJFPgotCi08UD4KLVRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gcmVnaXN0ZXIgY29kZSB0aGF0IG5lZWRzIHRvIGxvYWRlZCB3aGVuIGEgcGFydGljdWxhcgotIHByb2plY3QgaXMgbG9hZGVkIGludG8gdGhlIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtLgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCNsb2FkKG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0KSI+bG9hZDwvQT48L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlIHdoZW4gYSBwcm9qZWN0IGxvYWRlZCBpbnRvIHRoZSBzZXJ2aWNlIHBvbGljeQotIHBsYXRmb3JtLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0ibG9hZChvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCkiPjwhLS0gLS0+PC9BPjxIMz4KLWxvYWQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+bG9hZDwvQj4ob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QmbmJzcDtwcm9qZWN0KTwvUFJFPgotPERMPgotPEREPlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlIHdoZW4gYSBwcm9qZWN0IGxvYWRlZCBpbnRvIHRoZSBzZXJ2aWNlIHBvbGljeQotIHBsYXRmb3JtLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wcm9qZWN0PC9DT0RFPiAtIHRoZSBwcm9qZWN0PC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZWMxNWUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxNyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBJUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvSDI+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGludGVyZmFjZSBpcyB1c2VkIHdoZW4gdGhlIGRldmVsb3BlciB3YW50cyB0byBsaXN0ZW5lciB0byBzdGF0ZQotIGNoYW5nZXMgZm9yIGEgcGFydGljdWxhciBzZXJ2aWNlIHBvbGljeS4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sI3BvbGljeVN0YXRlQ2hhbmdlKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPnBvbGljeVN0YXRlQ2hhbmdlPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwb2xpY3ksCi0gICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7a2V5LAotICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO29sZFZhbHVlLAotICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO25ld1ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q2FsbGVkIHdoZW4gYSBzdGF0ZSBjaGFuZ2UgZXZlbnQgb2NjdXJzIGZvciBhIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0icG9saWN5U3RhdGVDaGFuZ2Uob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotcG9saWN5U3RhdGVDaGFuZ2U8L0gzPgotPFBSRT4KLXZvaWQgPEI+cG9saWN5U3RhdGVDaGFuZ2U8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5LAotICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7a2V5LAotICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7b2xkVmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtuZXdWYWx1ZSk8L1BSRT4KLTxETD4KLTxERD5DYWxsZWQgd2hlbiBhIHN0YXRlIGNoYW5nZSBldmVudCBvY2N1cnMgZm9yIGEgc2VydmljZSBwb2xpY3kuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnBvbGljeTwvQ09ERT4gLSB0aGUgc2VydmljZSBwb2xpY3k8REQ+PENPREU+a2V5PC9DT0RFPiAtIHRoZSBrZXkgb2YgdGhlIHN0YXRlIHRoYXQgY2hhbmdlZC48REQ+PENPREU+b2xkVmFsdWU8L0NPREU+IC0gdGhlIG9sZCB2YWx1ZSBvZiB0aGUgc3RhdGUgdGhhdCBjaGFuZ2VkLjxERD48Q09ERT5uZXdWYWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSBzdGF0ZSB0aGF0IGNoYW5nZWQuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lTdGF0dXNDaGFuZ2VMaXN0ZW5lci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjFiNjZlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lTdGF0dXNDaGFuZ2VMaXN0ZW5lci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUlTdGF0dXNDaGFuZ2VMaXN0ZW5lcgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVN0YXR1c0NoYW5nZUxpc3RlbmVyIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSVN0YXR1c0NoYW5nZUxpc3RlbmVyIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIElTdGF0dXNDaGFuZ2VMaXN0ZW5lcjwvSDI+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPklTdGF0dXNDaGFuZ2VMaXN0ZW5lcjwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBjb2RlIHRoYXQgaXMgaW50ZXJlc3RlZCBpbiBsaXN0ZW5pbmcgdG8gc3RhdHVzCi0gY2hhbmdlIGV2ZW50cyBvZiBzZXJ2aWNlIHBvbGljaWVzLgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lTdGF0dXNDaGFuZ2VMaXN0ZW5lci5odG1sI3N0YXR1c0NoYW5nZShvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3ksIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzLCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cykiPnN0YXR1c0NoYW5nZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5LAotICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzJm5ic3A7b2xkU3RhdHVzLAotICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzJm5ic3A7bmV3U3RhdHVzKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q2FsbGVkIHdoZW4gYSBzdGF0dXMgY2hhbmdlIGV2ZW50IG9jY3Vycy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9InN0YXR1c0NoYW5nZShvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3ksIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzLCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cykiPjwhLS0gLS0+PC9BPjxIMz4KLXN0YXR1c0NoYW5nZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zdGF0dXNDaGFuZ2U8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5LAotICAgICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXMmbmJzcDtvbGRTdGF0dXMsCi0gICAgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1cyZuYnNwO25ld1N0YXR1cyk8L1BSRT4KLTxETD4KLTxERD5DYWxsZWQgd2hlbiBhIHN0YXR1cyBjaGFuZ2UgZXZlbnQgb2NjdXJzLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wb2xpY3k8L0NPREU+IC0gdGhlIHNlcnZpY2UgcG9saWN5LjxERD48Q09ERT5vbGRTdGF0dXM8L0NPREU+IC0gdGhlIG9sZCBzdGF0dXMuPEREPjxDT0RFPm5ld1N0YXR1czwvQ09ERT4gLSB0aGUgbmV3IHN0YXR1cy48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL2NsYXNzLXVzZS9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvY2xhc3MtdXNlL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZDUzOWEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvY2xhc3MtdXNlL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcgotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL1xjbGFzcy11c2VJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPiB3aXRoIHBhcmFtZXRlcnMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI2FkZENoaWxkQ2hhbmdlTGlzdGVuZXIob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lciwgYm9vbGVhbikiPmFkZENoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtvbkNvbW1pdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgbWV0aG9kIGFsbG93cyBjYWxscyB0byBsaXN0ZW5lciB0byBhbnkgY2hpbGQgY2hhbmdlIHRoYXQgaXMKLSBtYWRlIGluIHRoZSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybSByZWdhcmRsZXNzIG9mIHdoZXJlIGl0IGlzIAotIGxvY2F0ZWQgaW4gdGhlIHRyZWUgb2Ygc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5JU2VydmljZVBvbGljeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwjYWRkUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyKSI+YWRkUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lcik8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FkZHMgYSBjaGlsZCBsaXN0ZW5lciB0byB0aGlzIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lQbGF0Zm9ybS5odG1sI3JlbW92ZUNoaWxkQ2hhbmdlTGlzdGVuZXIob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lciwgYm9vbGVhbikiPnJlbW92ZUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtvbkNvbW1pdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZXMgYSBjaGlsZCBjaGFuZ2UgbGlzdGVuZXIgZnJvbSB0aGUgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVNlcnZpY2VQb2xpY3kuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sI3JlbW92ZVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcikiPnJlbW92ZVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZW1vdmVzIGEgY2hpbGQgbGlzdGVuZXIgZnJvbSB0aGlzIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9cY2xhc3MtdXNlSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvY2xhc3MtdXNlL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvY2xhc3MtdXNlL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjdkZTJlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL2NsYXNzLXVzZS9JUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcgotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvXGNsYXNzLXVzZUlQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcjwvQj48L0gyPgotPC9DRU5URVI+Ci1ObyB1c2FnZSBvZiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcgotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvXGNsYXNzLXVzZUlQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvY2xhc3MtdXNlL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL2NsYXNzLXVzZS9JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYzk1OWUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvY2xhc3MtdXNlL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4NSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvXGNsYXNzLXVzZUlQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcjwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcjwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gd2l0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjYWRkUHJvamVjdExvYWRMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIpIj5hZGRQcm9qZWN0TG9hZExpc3RlbmVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lcik8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FkZCBhIHByb2plY3QgcGxhdGZvcm0gbGlzdGVuZXIuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjcmVtb3ZlUHJvamVjdExvYWRMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIpIj5yZW1vdmVQcm9qZWN0TG9hZExpc3RlbmVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lcik8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZXMgYSBwcm9qZWN0IHBsYXRmb3JtIGxpc3RlbmVyLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL1xjbGFzcy11c2VJUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvY2xhc3MtdXNlL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9jbGFzcy11c2UvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZhMDZiMi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9jbGFzcy11c2UvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvXGNsYXNzLXVzZUlQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVBvbGljeVN0YXRlLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwjYWRkUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLCBib29sZWFuKSI+YWRkUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO25vdGlmeU9ubHlPbkNvbW1pdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FkZHMgYSBwb2xpY3kgc3RhdGUgY2hhbmdlIGxpc3RlbmVyIHRvIHRoaXMgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVBvbGljeVN0YXRlLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlLmh0bWwjcmVtb3ZlUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyKSI+cmVtb3ZlUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvQT4mbmJzcDtsaXN0ZW5lcik8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZXMgYSBwb2xpY3kgc3RhdGUgY2hhbmdlIGxpc3RlbmVyIGZyb20gdGhpcyBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvXGNsYXNzLXVzZUlQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL2NsYXNzLXVzZS9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL2NsYXNzLXVzZS9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NhMGM3YS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9jbGFzcy11c2UvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JU3RhdHVzQ2hhbmdlTGlzdGVuZXIKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklTdGF0dXNDaGFuZ2VMaXN0ZW5lciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL1xjbGFzcy11c2VJU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVN0YXR1c0NoYW5nZUxpc3RlbmVyPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lTdGF0dXNDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklTdGF0dXNDaGFuZ2VMaXN0ZW5lcjwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gd2l0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklTZXJ2aWNlUG9saWN5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNhZGRTdGF0dXNDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklTdGF0dXNDaGFuZ2VMaXN0ZW5lcikiPmFkZFN0YXR1c0NoYW5nZUxpc3RlbmVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGRzIGEgc3RhdHVzIGNoYW5nZSBsaXN0ZW5lciB0byB0aGlzIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklTZXJ2aWNlUG9saWN5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCNyZW1vdmVTdGF0dXNDaGFuZ2VMaXN0ZW5lcihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLklTdGF0dXNDaGFuZ2VMaXN0ZW5lcikiPnJlbW92ZVN0YXR1c0NoYW5nZUxpc3RlbmVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZW1vdmVzIGEgc3RhdHVzIGNoYW5nZSBsaXN0ZW5lciBmcm9tIHRoaXMgc2VydmljZSBwb2xpY3kuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9cY2xhc3MtdXNlSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLWZyYW1lLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLWZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExODYwMjkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1mcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycwotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMgcGFja2FnZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIj4KLTxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVUaXRsZUZvbnQiPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzPC9BPjwvRk9OVD4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIE5PV1JBUD48Rk9OVCBzaXplPSIrMSIgQ0xBU1M9IkZyYW1lSGVhZGluZ0ZvbnQiPgotSW50ZXJmYWNlczwvRk9OVD4mbmJzcDsKLTxGT05UIENMQVNTPSJGcmFtZUl0ZW1Gb250Ij4KLTxCUj4KLTxBIEhSRUY9IklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJJUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklQb2xpY3lQbGF0Zm9ybUxvYWRMaXN0ZW5lcjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJJUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lcjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJJU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklTdGF0dXNDaGFuZ2VMaXN0ZW5lcjwvST48L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXN1bW1hcnkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2Utc3VtbWFyeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjE2ZjQ1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2Utc3VtbWFyeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIHBhY2thZ2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPlBSRVYgUEFDS0FHRTwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPk5FWFQgUEFDS0FHRTwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEgyPgotUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzCi08L0gyPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkludGVyZmFjZSBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjwvQT48L0I+PC9URD4KLTxURD4mbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+SVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyPC9BPjwvQj48L1REPgotPFREPlRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gcmVnaXN0ZXIgY29kZSB0aGF0IG5lZWRzIHRvIGV4ZWN1dGUgd2hlbiB0aGUKLSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybSBpcyBsb2FkZWQuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyPC9BPjwvQj48L1REPgotPFREPlRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gcmVnaXN0ZXIgY29kZSB0aGF0IG5lZWRzIHRvIGxvYWRlZCB3aGVuIGEgcGFydGljdWxhcgotIHByb2plY3QgaXMgbG9hZGVkIGludG8gdGhlIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPC9BPjwvQj48L1REPgotPFREPlRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgd2hlbiB0aGUgZGV2ZWxvcGVyIHdhbnRzIHRvIGxpc3RlbmVyIHRvIHN0YXRlCi0gY2hhbmdlcyBmb3IgYSBwYXJ0aWN1bGFyIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JU3RhdHVzQ2hhbmdlTGlzdGVuZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBjb2RlIHRoYXQgaXMgaW50ZXJlc3RlZCBpbiBsaXN0ZW5pbmcgdG8gc3RhdHVzCi0gY2hhbmdlIGV2ZW50cyBvZiBzZXJ2aWNlIHBvbGljaWVzLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotCi08UD4KLTxETD4KLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5QUkVWIFBBQ0tBR0U8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5ORVhUIFBBQ0tBR0U8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS10cmVlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXRyZWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBhZTNhNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXRyZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzkgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIENsYXNzIEhpZXJhcmNoeQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMgQ2xhc3MgSGllcmFyY2h5IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+UFJFVjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS10cmVlLmh0bWwiPjxCPk5FWFQ8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci1IaWVyYXJjaHkgRm9yIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycwotPC9IMj4KLTwvQ0VOVEVSPgotPERMPgotPERUPjxCPlBhY2thZ2UgSGllcmFyY2hpZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy10cmVlLmh0bWwiPkFsbCBQYWNrYWdlczwvQT48L0RMPgotPEhSPgotPEgyPgotSW50ZXJmYWNlIEhpZXJhcmNoeQotPC9IMj4KLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxCPklQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+SVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxCPklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXI8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9JUG9saWN5U3RhdGVDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxCPklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+SVN0YXR1c0NoYW5nZUxpc3RlbmVyPC9CPjwvQT48L1VMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS10cmVlLmh0bWwiPjxCPlBSRVY8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2UtdHJlZS5odG1sIj48Qj5ORVhUPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2UtdXNlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXVzZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTYxMWNhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2UtdXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBQYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIFBhY2thZ2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLUNsYXNzZXMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQT4gdXNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL2NsYXNzLXVzZS9JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lci5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL2NsYXNzLXVzZS9JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JUG9saWN5UGxhdGZvcm1Qcm9qZWN0TG9hZExpc3RlbmVyPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gcmVnaXN0ZXIgY29kZSB0aGF0IG5lZWRzIHRvIGxvYWRlZCB3aGVuIGEgcGFydGljdWxhcgotIHByb2plY3QgaXMgbG9hZGVkIGludG8gdGhlIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9jbGFzcy11c2UvSVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXIuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaW50ZXJmYWNlIGlzIHVzZWQgd2hlbiB0aGUgZGV2ZWxvcGVyIHdhbnRzIHRvIGxpc3RlbmVyIHRvIHN0YXRlCi0gY2hhbmdlcyBmb3IgYSBwYXJ0aWN1bGFyIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9jbGFzcy11c2UvSVN0YXR1c0NoYW5nZUxpc3RlbmVyLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JU3RhdHVzQ2hhbmdlTGlzdGVuZXI8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBjb2RlIHRoYXQgaXMgaW50ZXJlc3RlZCBpbiBsaXN0ZW5pbmcgdG8gc3RhdHVzCi0gY2hhbmdlIGV2ZW50cyBvZiBzZXJ2aWNlIHBvbGljaWVzLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2UtZnJhbWUuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1mcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTVmOWY0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1mcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IHBhY2thZ2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSI+Ci08Rk9OVCBzaXplPSIrMSIgQ0xBU1M9IkZyYW1lVGl0bGVGb250Ij4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgTk9XUkFQPjxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVIZWFkaW5nRm9udCI+Ci1JbnRlcmZhY2VzPC9GT05UPiZuYnNwOwotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPgotPEJSPgotPEEgSFJFRj0iSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SURlc2NyaXB0b3I8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JRmlsdGVyPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IklQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJJUG9saWN5UmVsYXRpb25zaGlwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklQb2xpY3lSZWxhdGlvbnNoaXA8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iSVBvbGljeVN0YXRlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklQb2xpY3lTdGF0ZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJJUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklQb2xpY3lTdGF0ZUVudW08L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SVNlcnZpY2VQb2xpY3k8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iSVN0YXRlRW51bWVyYXRpb25JdGVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvST48L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotCi08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBOT1dSQVA+PEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLUNsYXNzZXM8L0ZPTlQ+Jm5ic3A7Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+Ci08QlI+Ci08QSBIUkVGPSJQb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiIHRhcmdldD0iY2xhc3NGcmFtZSI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDwvQT4KLTxCUj4KLTxBIEhSRUY9IlBvbGljeVJlbGF0aW9uc2hpcEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsPC9BPgotPEJSPgotPEEgSFJFRj0iU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IiB0YXJnZXQ9ImNsYXNzRnJhbWUiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3I8L0E+Ci08QlI+Ci08QSBIUkVGPSJTZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI0ODVjNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeQotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSBwYWNrYWdlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIFBBQ0tBR0UmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPk5FWFQgUEFDS0FHRTwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08SDI+Ci1QYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeQotPC9IMj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5JbnRlcmZhY2UgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklEZXNjcmlwdG9yPC9BPjwvQj48L1REPgotPFREPlRoaXMgaW50ZXJmYWNlIGVuY2Fwc3VsYXRlcyB0aGUgaWRlYSBvZiBhIGRlc2NyaXB0aW9uIGZvciBhIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lGaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklGaWx0ZXI8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBmaWx0ZXIgc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9BPjwvQj48L1REPgotPFREPlRoaXMgaW50ZXJmYWNlIGVuY2Fwc3VsYXRlcyB0aGUgY29tYmluYXRpb24gb2YgYSBwb2xpY3kgYW5kIGEgbGlzdAotIG9mIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW1zLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBkZXNjcmliZSB0aGUgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIGJldHdlZW4KLSBzZXJ2aWNlIHBvbGljaWVzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lTdGF0ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlPC9BPjwvQj48L1REPgotPFREPlRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgYnkgc2VydmljZSBwb2xpY3kgZXh0ZW5kZXJzIHRvIHNhdmUgdGhlIHN0YXRlIG9mCi0gdGhlcmUgcG9saWNpZXMuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVBvbGljeVN0YXRlRW51bTwvQT48L0I+PC9URD4KLTxURD5UaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGFjY2VzcyB0aGUgc3RhdGUgd2hlbiBhbiBlbnVtZXJhdGlvbiBpcyB1c2VkCi0gdG8gcGVyc2lzdCBzdGF0ZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhpcyBpbnRlcmZhY2UgZW5jYXBzdWxhdGVzIHRoZSBpZGVhIG9mIGEgc2VydmljZSBwb2xpY3k8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQT48L0I+PC9URD4KLTxURD5UaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGRlc2NyaWJlIGEgc3RhdGUgZW51bWVyYXRpb24gaXRlbSB0aGF0IHdhcwotIGRlZmluZWQgYnkgYW4gZW51bWVyYXRpb24gaW4gcGx1Z2luLnhtbCBtZXRhIGRhdGEuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci0KLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNsYXNzIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1BvbGljeUVudW1lcmF0aW9uTGlzdEltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+UG9saWN5RW51bWVyYXRpb25MaXN0SW1wbDwvQT48L0I+PC9URD4KLTxURD5UaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBJUG9saWN5RW51bWVyYXRpb25MaXN0IGludGVyZmFjZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlBvbGljeVJlbGF0aW9uc2hpcEltcGw8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVBvbGljeVJlbGF0aW9uc2hpcAotIGludGVyZmFjZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3I8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhlIGFjdGl2YXRvciBjbGFzcyBjb250cm9scyB0aGUgcGx1Zy1pbiBsaWZlIGN5Y2xlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQT48L0I+PC9URD4KLTxURD5UaGlzIGNsYXNzIGlzIHVzZWQgdG8gYWNjZXNzIGFuZCBhZGQgc2VydmljZSBwb2xpY2llcyB0byB0aGUgcGxhdGZvcm0uPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci0KLTxQPgotPERMPgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIFBBQ0tBR0UmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPk5FWFQgUEFDS0FHRTwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS10cmVlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2UtdHJlZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWQ3OGI2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS10cmVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IENsYXNzIEhpZXJhcmNoeQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSBDbGFzcyBIaWVyYXJjaHkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+TkVYVDwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotSGllcmFyY2h5IEZvciBQYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeQotPC9IMj4KLTwvQ0VOVEVSPgotPERMPgotPERUPjxCPlBhY2thZ2UgSGllcmFyY2hpZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy10cmVlLmh0bWwiPkFsbCBQYWNrYWdlczwvQT48L0RMPgotPEhSPgotPEgyPgotQ2xhc3MgSGllcmFyY2h5Ci08L0gyPgotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YS5sYW5nLk9iamVjdDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW4gKGltcGxlbWVudHMgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUFjdGl2YXRvcikKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yPC9CPjwvQT48L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBvbGljeUVudW1lcmF0aW9uTGlzdEltcGw8L0I+PC9BPiAoaW1wbGVtZW50cyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBvbGljeVJlbGF0aW9uc2hpcEltcGw8L0I+PC9BPiAoaW1wbGVtZW50cyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9TZXJ2aWNlUG9saWN5UGxhdGZvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtPC9CPjwvQT48L1VMPgotPC9VTD4KLTxIMj4KLUludGVyZmFjZSBIaWVyYXJjaHkKLTwvSDI+Ci08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JRGVzY3JpcHRvcjwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JRmlsdGVyPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SVBvbGljeVJlbGF0aW9uc2hpcDwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklQb2xpY3lTdGF0ZTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGVFbnVtLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JUG9saWN5U3RhdGVFbnVtPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JU2VydmljZVBvbGljeTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQj48L0E+PC9VTD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+TkVYVDwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS11c2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS11c2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI3YTVkMi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2UtdXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBQYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIFBhY2thZ2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotQ2xhc3NlcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdXNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lEZXNjcmlwdG9yLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JRGVzY3JpcHRvcjwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIGludGVyZmFjZSBlbmNhcHN1bGF0ZXMgdGhlIGlkZWEgb2YgYSBkZXNjcmlwdGlvbiBmb3IgYSBzZXJ2aWNlIHBvbGljeS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSUZpbHRlci5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SUZpbHRlcjwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGZpbHRlciBzZXJ2aWNlIHBvbGljaWVzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9JUG9saWN5RW51bWVyYXRpb25MaXN0Lmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JUG9saWN5RW51bWVyYXRpb25MaXN0PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaW50ZXJmYWNlIGVuY2Fwc3VsYXRlcyB0aGUgY29tYmluYXRpb24gb2YgYSBwb2xpY3kgYW5kIGEgbGlzdAotIG9mIHN0YXRlIGVudW1lcmF0aW9uIGl0ZW1zLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9JUG9saWN5UmVsYXRpb25zaGlwLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JUG9saWN5UmVsYXRpb25zaGlwPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBiZXR3ZWVuCi0gc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVBvbGljeVN0YXRlLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JUG9saWN5U3RhdGU8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBzZXJ2aWNlIHBvbGljeSBleHRlbmRlcnMgdG8gc2F2ZSB0aGUgc3RhdGUgb2YKLSB0aGVyZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVBvbGljeVN0YXRlRW51bS5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SVBvbGljeVN0YXRlRW51bTwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGFjY2VzcyB0aGUgc3RhdGUgd2hlbiBhbiBlbnVtZXJhdGlvbiBpcyB1c2VkCi0gdG8gcGVyc2lzdCBzdGF0ZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVNlcnZpY2VQb2xpY3kuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklTZXJ2aWNlUG9saWN5PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaW50ZXJmYWNlIGVuY2Fwc3VsYXRlcyB0aGUgaWRlYSBvZiBhIHNlcnZpY2UgcG9saWN5PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lTdGF0ZUVudW1lcmF0aW9uSXRlbS5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SVN0YXRlRW51bWVyYXRpb25JdGVtPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZGVzY3JpYmUgYSBzdGF0ZSBlbnVtZXJhdGlvbiBpdGVtIHRoYXQgd2FzCi0gZGVmaW5lZCBieSBhbiBlbnVtZXJhdGlvbiBpbiBwbHVnaW4ueG1sIG1ldGEgZGF0YS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvU2VydmljZVBvbGljeUFjdGl2YXRvci5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgYWN0aXZhdG9yIGNsYXNzIGNvbnRyb2xzIHRoZSBwbHVnLWluIGxpZmUgY3ljbGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5TZXJ2aWNlUG9saWN5UGxhdGZvcm08L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBjbGFzcyBpcyB1c2VkIHRvIGFjY2VzcyBhbmQgYWRkIHNlcnZpY2UgcG9saWNpZXMgdG8gdGhlIHBsYXRmb3JtLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotQ2xhc3NlcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdXNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVNlcnZpY2VQb2xpY3kuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzIj48Qj5JU2VydmljZVBvbGljeTwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIGludGVyZmFjZSBlbmNhcHN1bGF0ZXMgdGhlIGlkZWEgb2YgYSBzZXJ2aWNlIHBvbGljeTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1DbGFzc2VzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPiB1c2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSURlc2NyaXB0b3IuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPklEZXNjcmlwdG9yPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaW50ZXJmYWNlIGVuY2Fwc3VsYXRlcyB0aGUgaWRlYSBvZiBhIGRlc2NyaXB0aW9uIGZvciBhIHNlcnZpY2UgcG9saWN5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2NsYXNzLXVzZS9JU2VydmljZVBvbGljeS5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+SVNlcnZpY2VQb2xpY3k8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBpbnRlcmZhY2UgZW5jYXBzdWxhdGVzIHRoZSBpZGVhIG9mIGEgc2VydmljZSBwb2xpY3k8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotQ2xhc3NlcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeTwvQT4gdXNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvY2xhc3MtdXNlL0lGaWx0ZXIuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxCPklGaWx0ZXI8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBmaWx0ZXIgc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9jbGFzcy11c2UvSVNlcnZpY2VQb2xpY3kuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxCPklTZXJ2aWNlUG9saWN5PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaW50ZXJmYWNlIGVuY2Fwc3VsYXRlcyB0aGUgaWRlYSBvZiBhIHNlcnZpY2UgcG9saWN5PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvcGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JRW5hYmxlT3BlcmF0aW9uLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUzNDA5MC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JRW5hYmxlT3BlcmF0aW9uCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklFbmFibGVPcGVyYXRpb24gaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJRW5hYmxlT3BlcmF0aW9uIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSUVuYWJsZU9wZXJhdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBDTEFTUyZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUVuYWJsZU9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklFbmFibGVPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBJRW5hYmxlT3BlcmF0aW9uPC9IMj4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+SUVuYWJsZU9wZXJhdGlvbjwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhpcyBpbnRlcmZhY2UgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbmFibGVkQ2xhc3MgYXR0cmlidXRlIG9mIHRoZQotIGVuYWJsZWQgZWxlbWVudC4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbCNpc0VuYWJsZWQoamF2YS51dGlsLkxpc3QpIj5pc0VuYWJsZWQ8L0E+PC9CPihqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDsmbmJzcDtzZWxlY3RlZFBvbGljaWVzKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB3aGV0aGVyIHRoZSBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24gc2hvdWxkIGJlIGVuYWJsZWQgb3Igbm90LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iaXNFbmFibGVkKGphdmEudXRpbC5MaXN0KSI+PCEtLSAtLT48L0E+PEgzPgotaXNFbmFibGVkPC9IMz4KLTxQUkU+Ci1ib29sZWFuIDxCPmlzRW5hYmxlZDwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7Jm5ic3A7c2VsZWN0ZWRQb2xpY2llcyk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHdoZXRoZXIgdGhlIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbiBzaG91bGQgYmUgZW5hYmxlZCBvciBub3QuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnNlbGVjdGVkUG9saWNpZXM8L0NPREU+IC0gdGhlIHNlbGVjdGVkIHNlcnZpY2UgcG9saWNpZXMuCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgd2hldGhlciB0aGUgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdC48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSUVuYWJsZU9wZXJhdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBDTEFTUyZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUVuYWJsZU9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklFbmFibGVPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JTGF1bmNoT3BlcmF0aW9uLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM2MzA2Zi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxMSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JTGF1bmNoT3BlcmF0aW9uCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklMYXVuY2hPcGVyYXRpb24gaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJTGF1bmNoT3BlcmF0aW9uIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSUxhdW5jaE9wZXJhdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUxhdW5jaE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBJTGF1bmNoT3BlcmF0aW9uPC9IMj4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+SUxhdW5jaE9wZXJhdGlvbjwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBsYXVuY2hDbGFzcyBhdHRyaWJ1dGUgb2YKLSB0aGUgY29tcGxleCBlbGVtZW50LgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUxhdW5jaE9wZXJhdGlvbi5odG1sI2xhdW5jaChqYXZhLnV0aWwuTGlzdCkiPmxhdW5jaDwvQT48L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyZuYnNwO3NlbGVjdGVkUG9saWNpZXMpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgdGhpcyBjb21wbGV4IG9wZXJhdGlvbi48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImxhdW5jaChqYXZhLnV0aWwuTGlzdCkiPjwhLS0gLS0+PC9BPjxIMz4KLWxhdW5jaDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5sYXVuY2g8L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyZuYnNwO3NlbGVjdGVkUG9saWNpZXMpPC9QUkU+Ci08REw+Ci08REQ+VGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgaGFzIHNlbGVjdGVkIHRoaXMgY29tcGxleCBvcGVyYXRpb24uCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnNlbGVjdGVkUG9saWNpZXM8L0NPREU+IC0gYSBsaXN0IG9mIHRoZSBzZXJ2aWNlIHBvbGljaWVzIHRoYXQgd2VyZSBzZWxlY3RlZC48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSUxhdW5jaE9wZXJhdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUxhdW5jaE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNDM1ZDkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM2OSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzggRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kIGNsYXNzIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNlbnVtX2NvbnN0YW50X3N1bW1hcnkiPkVOVU0gQ09OU1RBTlRTPC9BPiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2VudW1fY29uc3RhbnRfZGV0YWlsIj5FTlVNIENPTlNUQU5UUzwvQT4mbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvRk9OVD4KLTxCUj4KLUVudW0gSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj5qYXZhLmxhbmcuRW51bSZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9BPiZndDsKLSAgICAgIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9CPgotPC9QUkU+Ci08REw+Ci08RFQ+PEI+QWxsIEltcGxlbWVudGVkIEludGVyZmFjZXM6PC9CPiA8REQ+amF2YS5pby5TZXJpYWxpemFibGUsIGphdmEubGFuZy5Db21wYXJhYmxlJmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ8L0E+Jmd0OzwvREQ+Ci08L0RMPgotPERMPgotPERUPjxCPkVuY2xvc2luZyBpbnRlcmZhY2U6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbjwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBzdGF0aWMgZW51bSA8Qj5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ8L0I+PERUPmV4dGVuZHMgamF2YS5sYW5nLkVudW0mbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT4mZ3Q7PC9ETD4KLTwvUFJFPgotCi08UD4KLUluZGljYXRlcyB0aGUga2luZCBvZiBTZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24gdGhhdCB0aGlzIG9iamVjdCByZXByZXNlbnRzLgotIDx1bD4KLSA8bGk+ZW51bWVyYXRpb246IGluZGljYXRlcyB0aGF0IGEgbGlzdCBvZiBlbnVtZXJhdGVkIHZhbHVlcyBpcyBhc3NvY2lhdGVkLjwvbGk+Ci0gPGxpPnNlbGVjdGlvbjogaW5kaWNhdGVzIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUKLSBib29sZWFuIG9wZXJhdGlvbjwvbGk+Ci0gPGxpPiBpY29uU2VsZWN0aW9uOiB0aGlzIG9wZXJhdGlvbiBpcyBzaW1pbGFyIHRvIHRoZSBzZWxlY3Rpb24gb3BlcmF0aW9uCi0gZXhjZXB0IHRoYXQgaXQgdmlzdWFsIHN0YXRlIGlzIHJlbmRlcmVkIHZpYSBhbiBpY29uLjwvbGk+Ci0gPGxpPmNvbXBsZXg6IGluZGljYXRlcyB0aGF0IHNvbWUgY29tcGxleCBvcGVyYXRpb24gaXMgcmVxdWlyZWQgdG8gcmVuZGVyCi0gYW5kIHBlcnNpc3Qgc29tZSBwb2xpY3kgZGF0YS4gIFRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgcmVuZGVyZWQgdmlhIGEgVUkKLSBidXR0b24uICBXaGVuIHRoaXMgYnV0dG9uIGlzIHNlbGVjdGVkIHRoZSBsYXVuY2ggY2xhc3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMKLSBvcGVyYXRpb24gaXMgY2FsbGVkLjwvbGk+ICAgCi0gPHVsLz4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci08IS0tID09PT09PT09PT09IEVOVU0gQ09OU1RBTlQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZW51bV9jb25zdGFudF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+RW51bSBDb25zdGFudCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCNjb21wbGV4Ij5jb21wbGV4PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sI2VudW1lcmF0aW9uIj5lbnVtZXJhdGlvbjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCNpY29uU2VsZWN0aW9uIj5pY29uU2VsZWN0aW9uPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sI3NlbGVjdGlvbiI+c2VsZWN0aW9uPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sI3ZhbHVlT2YoamF2YS5sYW5nLlN0cmluZykiPnZhbHVlT2Y8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGVudW0gY29uc3RhbnQgb2YgdGhpcyB0eXBlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9BPltdPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCN2YWx1ZXMoKSI+dmFsdWVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBjb25zdGFudHMgb2YgdGhpcyBlbnVtIHR5cGUsIGluCi10aGUgb3JkZXIgdGhleSdyZSBkZWNsYXJlZC48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5FbnVtIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuRW51bTwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmNvbXBhcmVUbywgZXF1YWxzLCBnZXREZWNsYXJpbmdDbGFzcywgaGFzaENvZGUsIG5hbWUsIG9yZGluYWwsIHRvU3RyaW5nLCB2YWx1ZU9mPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldENsYXNzLCBub3RpZnksIG5vdGlmeUFsbCwgd2FpdCwgd2FpdCwgd2FpdDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBFTlVNIENPTlNUQU5UIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZW51bV9jb25zdGFudF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5FbnVtIENvbnN0YW50IERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJlbnVtZXJhdGlvbiI+PCEtLSAtLT48L0E+PEgzPgotZW51bWVyYXRpb248L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT4gPEI+ZW51bWVyYXRpb248L0I+PC9QUkU+Ci08REw+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2VsZWN0aW9uIj48IS0tIC0tPjwvQT48SDM+Ci1zZWxlY3Rpb248L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT4gPEI+c2VsZWN0aW9uPC9CPjwvUFJFPgotPERMPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Imljb25TZWxlY3Rpb24iPjwhLS0gLS0+PC9BPjxIMz4KLWljb25TZWxlY3Rpb248L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT4gPEI+aWNvblNlbGVjdGlvbjwvQj48L1BSRT4KLTxETD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjb21wbGV4Ij48IS0tIC0tPjwvQT48SDM+Ci1jb21wbGV4PC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ8L0E+IDxCPmNvbXBsZXg8L0I+PC9QUkU+Ci08REw+Ci08REw+Ci08L0RMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJ2YWx1ZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotdmFsdWVzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ8L0E+W10gPEI+dmFsdWVzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBjb25zdGFudHMgb2YgdGhpcyBlbnVtIHR5cGUsIGluCi10aGUgb3JkZXIgdGhleSdyZSBkZWNsYXJlZC4gIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGl0ZXJhdGUKLW92ZXIgdGhlIGNvbnN0YW50cyBhcyBmb2xsb3dzOgotPHByZT4KLWZvcihJUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQgYyA6IElQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC52YWx1ZXMoKSkKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGMpOwotPC9wcmU+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YW4gYXJyYXkgY29udGFpbmluZyB0aGUgY29uc3RhbnRzIG9mIHRoaXMgZW51bSB0eXBlLCBpbgotdGhlIG9yZGVyIHRoZXkncmUgZGVjbGFyZWQ8L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InZhbHVlT2YoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXZhbHVlT2Y8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT4gPEI+dmFsdWVPZjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgZW51bSBjb25zdGFudCBvZiB0aGlzIHR5cGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuCi1UaGUgc3RyaW5nIG11c3QgbWF0Y2ggPEk+ZXhhY3RseTwvST4gYW4gaWRlbnRpZmllciB1c2VkIHRvIGRlY2xhcmUgYW4KLWVudW0gY29uc3RhbnQgaW4gdGhpcyB0eXBlLiAgKEV4dHJhbmVvdXMgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSAKLW5vdCBwZXJtaXR0ZWQuKQotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5uYW1lPC9DT0RFPiAtIHRoZSBuYW1lIG9mIHRoZSBlbnVtIGNvbnN0YW50IHRvIGJlIHJldHVybmVkLgotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgZW51bSBjb25zdGFudCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZQotPERUPjxCPlRocm93czo8L0I+Ci08REQ+PENPREU+amF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvQ09ERT4gLSBpZiB0aGlzIGVudW0gdHlwZSBoYXMgbm8gY29uc3RhbnQKLXdpdGggdGhlIHNwZWNpZmllZCBuYW1lPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2VudW1fY29uc3RhbnRfc3VtbWFyeSI+RU5VTSBDT05TVEFOVFM8L0E+Jm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZW51bV9jb25zdGFudF9kZXRhaWwiPkVOVU0gQ09OU1RBTlRTPC9BPiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmJlNjQ0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTAwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUlQb2xpY3lPcGVyYXRpb24KLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbiBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IklQb2xpY3lPcGVyYXRpb24iOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUxhdW5jaE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwOzxBIEhSRUY9IiNuZXN0ZWRfY2xhc3Nfc3VtbWFyeSI+TkVTVEVEPC9BPiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIElQb2xpY3lPcGVyYXRpb248L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5JUG9saWN5T3BlcmF0aW9uPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGludGVyZmFjZSByZXByZXNlbnRzIGEgU2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHRoYXQgaGFzIGJlZW4gZGVmaW5lZAotIGluIHRoZSBwbHVnaW4ueG1sIG1ldGEgZGF0YS4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci08IS0tID09PT09PT09IE5FU1RFRCBDTEFTUyBTVU1NQVJZID09PT09PT09IC0tPgotCi08QSBOQU1FPSJuZXN0ZWRfY2xhc3Nfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk5lc3RlZCBDbGFzcyBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7Y2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJbmRpY2F0ZXMgdGhlIGtpbmQgb2YgU2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHRoYXQgdGhpcyBvYmplY3QgcmVwcmVzZW50cy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXREZWZhdWx0SXRlbSgpIj5nZXREZWZhdWx0SXRlbTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGRlZmF1bHQgZW51bWVyYXRpb24gaXRlbSBmb3IgdGhpcyBvcGVyYXRpb24uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SURlc2NyaXB0b3I8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwjZ2V0RGVzY3JpcHRvcigpIj5nZXREZXNjcmlwdG9yPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgZGVzY3JpcHRvciBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXRFbnVtZXJhdGlvbklkKCkiPmdldEVudW1lcmF0aW9uSWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBlbnVtIElEIGZvciB0aGlzIG9wZXJhdGlvbi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sI2dldElkKCkiPmdldElkPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdW5pcXVlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXRPcGVyYXRpb25LaW5kKCkiPmdldE9wZXJhdGlvbktpbmQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBraW5kIG9mIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sI2dldFBvbGljeUlkUGF0dGVybigpIj5nZXRQb2xpY3lJZFBhdHRlcm48L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBpZCBwYXR0ZXJuIGZvciB0aGlzIG9wZXJhdGlvbi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXRTZXJ2aWNlUG9saWN5KCkiPmdldFNlcnZpY2VQb2xpY3k8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzZXJ2aWNlIHBvbGljeSBmb3IgdGhpcyBvcGVyYXRpb24uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXRTdGF0ZUl0ZW0ob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QpIj5nZXRTdGF0ZUl0ZW08L0E+PC9CPihvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCZuYnNwO3Byb2plY3QpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBjdXJyZW50IGVudW1lcmF0aW9uIGl0ZW0gZm9yIHRoaXMgb3BlcmF0aW9uLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwjaXNFbmFibGVkKGphdmEudXRpbC5MaXN0KSI+aXNFbmFibGVkPC9BPjwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7Jm5ic3A7c2VsZWN0ZWRQb2xpY2llcyk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgd2hldGhlciB0aGlzIG9wZXJhdGlvbiBzaG91bGQgYmUgZW5hYmxlZCBvciBub3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNpc1VzZURlZmF1bHREYXRhKCkiPmlzVXNlRGVmYXVsdERhdGE8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHdoZXRoZXIgdGhpcyBvcGVyYXRpb24gdXNlcyBkZWZhdWx0IHN0YXRlIG9yIG5vdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sI2lzV29ya3NwYWNlT25seSgpIj5pc1dvcmtzcGFjZU9ubHk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHdoZXRoZXIgdGhpcyBpcyBhIHdvcmtzcGFjZSBvbmx5IG9wZXJhdGlvbiBvciBub3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNsYXVuY2hPcGVyYXRpb24oamF2YS51dGlsLkxpc3QpIj5sYXVuY2hPcGVyYXRpb248L0E+PC9CPihqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDsmbmJzcDtzZWxlY3RlZFBvbGljaWVzKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGF1bmNoZXMgdGhlIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbiBpZiB0aGlzIGlzIGEgY29tcGxleCBvcGVyYXRpb24uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNzZXRTdGF0ZUl0ZW0ob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QsIGphdmEubGFuZy5TdHJpbmcpIj5zZXRTdGF0ZUl0ZW08L0E+PC9CPihvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCZuYnNwO3Byb2plY3QsCi0gICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO3N0YXRlSXRlbSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIGN1cnJlbnQgZW51bWVyYXRpb24gaXRlbSBmb3IgdGhpcyBvcGVyYXRpb24uPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRJZCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJZDwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRJZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHVuaXF1ZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24uCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgdW5pcXVlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbi48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldERlc2NyaXB0b3IoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RGVzY3JpcHRvcjwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRGVzY3JpcHRvcjwvQT4gPEI+Z2V0RGVzY3JpcHRvcjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGRlc2NyaXB0b3IgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uLgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIGRlc2NyaXB0b3IgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iaXNXb3Jrc3BhY2VPbmx5KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWlzV29ya3NwYWNlT25seTwvSDM+Ci08UFJFPgotYm9vbGVhbiA8Qj5pc1dvcmtzcGFjZU9ubHk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHdoZXRoZXIgdGhpcyBpcyBhIHdvcmtzcGFjZSBvbmx5IG9wZXJhdGlvbiBvciBub3QuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0cnVlIGlmIHRoaXMgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHNob3VsZCBvbmx5IGFwcGVhcgotIGluIHRoZSB3b3Jrc3BhY2Ugc2VydmljZSBwb2xpY3kgcHJlZmVyZW5jZSBwYWdlLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0T3BlcmF0aW9uS2luZCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRPcGVyYXRpb25LaW5kPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9BPiA8Qj5nZXRPcGVyYXRpb25LaW5kPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUga2luZCBvZiBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24uCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUga2luZCBvZiBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24uPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFbnVtZXJhdGlvbklkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVudW1lcmF0aW9uSWQ8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0RW51bWVyYXRpb25JZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGVudW0gSUQgZm9yIHRoaXMgb3BlcmF0aW9uLgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIGVudW1lcmF0aW9uIElEIGlmIHRoaXMgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIGlzCi0gYW4gZW51bWVyYXRpb24uPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXREZWZhdWx0SXRlbSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREZWZhdWx0SXRlbTwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXREZWZhdWx0SXRlbTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGRlZmF1bHQgZW51bWVyYXRpb24gaXRlbSBmb3IgdGhpcyBvcGVyYXRpb24uCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyBpZiB0aGlzIGlzIGFuIGVudW1lcmF0aW9uIGl0IHJldHVybnMgdGhlIGRlZmF1bHQgaXRlbSBmb3IgdGhpcwotIGVudW1lcmF0aW9uLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ibGF1bmNoT3BlcmF0aW9uKGphdmEudXRpbC5MaXN0KSI+PCEtLSAtLT48L0E+PEgzPgotbGF1bmNoT3BlcmF0aW9uPC9IMz4KLTxQUkU+Ci12b2lkIDxCPmxhdW5jaE9wZXJhdGlvbjwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7Jm5ic3A7c2VsZWN0ZWRQb2xpY2llcyk8L1BSRT4KLTxETD4KLTxERD5MYXVuY2hlcyB0aGUgc2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIGlmIHRoaXMgaXMgYSBjb21wbGV4IG9wZXJhdGlvbi4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+c2VsZWN0ZWRQb2xpY2llczwvQ09ERT4gLSB0aGUgc2VsZWN0ZWQgc2VydmljZSBwb2xpY2llcy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImlzRW5hYmxlZChqYXZhLnV0aWwuTGlzdCkiPjwhLS0gLS0+PC9BPjxIMz4KLWlzRW5hYmxlZDwvSDM+Ci08UFJFPgotYm9vbGVhbiA8Qj5pc0VuYWJsZWQ8L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyZuYnNwO3NlbGVjdGVkUG9saWNpZXMpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB3aGV0aGVyIHRoaXMgb3BlcmF0aW9uIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdC4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+c2VsZWN0ZWRQb2xpY2llczwvQ09ERT4gLSB0aGUgc2VsZWN0ZWQgc2VydmljZSBwb2xpY2llcy4KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB3aGV0aGVyIHRoaXMgb3BlcmF0aW9uIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBvbGljeUlkUGF0dGVybigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRQb2xpY3lJZFBhdHRlcm48L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0UG9saWN5SWRQYXR0ZXJuPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgaWQgcGF0dGVybiBmb3IgdGhpcyBvcGVyYXRpb24uCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3BlcmF0aW9uLgotIEFsbCBzZXJ2aWNlIHBvbGljeSBJRCB0aGF0IG1hdGNoIHRoaXMgcmVndWxhciBleHByZXNzaW9uIHdpbGwgYmUgYXNzb2NpYXRlZAotIHdpdGggdGhpcyBvcGVyYXRpb24uPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTZXJ2aWNlUG9saWN5KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNlcnZpY2VQb2xpY3k8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+IDxCPmdldFNlcnZpY2VQb2xpY3k8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBzZXJ2aWNlIHBvbGljeSBmb3IgdGhpcyBvcGVyYXRpb24uCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgc2VydmljZSBwb2xpY3kgZm9yIHRoaXMgb3BlcmF0aW9uLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U3RhdGVJdGVtKG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0KSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U3RhdGVJdGVtPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldFN0YXRlSXRlbTwvQj4ob3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3QmbmJzcDtwcm9qZWN0KTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGN1cnJlbnQgZW51bWVyYXRpb24gaXRlbSBmb3IgdGhpcyBvcGVyYXRpb24uCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnByb2plY3Q8L0NPREU+IC0gdGhlIHByb2plY3QgaWYgdGhpcyBpcyBwcm9qZWN0IHByb3BlcnR5IHBhZ2UgaXRlbS4KLSBGb3IgdGhlIHByZWZlcmVuY2UgcGFnZSBjb250ZXh0IG51bGwgc2hvdWxkIGJlIHNwZWNpZmllZC4KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgY3VycmVudCBlbnVtZXJhdGlvbiBpdGVtIGZvciB0aGlzIG9wZXJhdGlvbi48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFN0YXRlSXRlbShvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdCwgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFN0YXRlSXRlbTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRTdGF0ZUl0ZW08L0I+KG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Jm5ic3A7cHJvamVjdCwKLSAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtzdGF0ZUl0ZW0pPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgY3VycmVudCBlbnVtZXJhdGlvbiBpdGVtIGZvciB0aGlzIG9wZXJhdGlvbi4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cHJvamVjdDwvQ09ERT4gLSB0aGUgcHJvamVjdCBpZiB0aGlzIGlzIHByb2plY3QgcHJvcGVydHkgcGFnZSBpdGVtLgotIEZvciB0aGUgcHJlZmVyZW5jZSBwYWdlIGNvbnRleHQgbnVsbCBzaG91bGQgYmUgc3BlY2lmaWVkLjxERD48Q09ERT5zdGF0ZUl0ZW08L0NPREU+IC0gdGhlIGl0ZW0uPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJpc1VzZURlZmF1bHREYXRhKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWlzVXNlRGVmYXVsdERhdGE8L0gzPgotPFBSRT4KLWJvb2xlYW4gPEI+aXNVc2VEZWZhdWx0RGF0YTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgd2hldGhlciB0aGlzIG9wZXJhdGlvbiB1c2VzIGRlZmF1bHQgc3RhdGUgb3Igbm90LgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgd2hldGhlciB0aGlzIG9wZXJhdGlvbiB1c2VzIGRlZmF1bHQgc3RhdGUgb3Igbm90LjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUxhdW5jaE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwOzxBIEhSRUY9IiNuZXN0ZWRfY2xhc3Nfc3VtbWFyeSI+TkVTVEVEPC9BPiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc1YWUwOS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUlRdWlja0ZpeEFjdGlvbgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JUXVpY2tGaXhBY3Rpb24gaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJUXVpY2tGaXhBY3Rpb24iOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUXVpY2tGaXhBY3Rpb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklRdWlja0ZpeEFjdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIElRdWlja0ZpeEFjdGlvbjwvSDI+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPklRdWlja0ZpeEFjdGlvbjwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBleHRlbmRlcnMgdG8gYWRkIHF1aWNrIGZpeGVzIHRvIHRoZSBzZXJ2aWNlIHBvbGljeSB1aQotIGZyYW1ld29yay4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sI2FjdGlvbihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3kpIj5hY3Rpb248L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BvbGljeSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCB0aGlzIGFjdGlvbiB0byByZXNvbHZlCi0gYSBwYXJ0aWN1bGFyIHNlcnZpY2UgcG9saWN5IHByb2JsZW0uPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJhY3Rpb24ob3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5KSI+PCEtLSAtLT48L0E+PEgzPgotYWN0aW9uPC9IMz4KLTxQUkU+Ci12b2lkIDxCPmFjdGlvbjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwb2xpY3kpPC9QUkU+Ci08REw+Ci08REQ+VGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgaGFzIHNlbGVjdGVkIHRoaXMgYWN0aW9uIHRvIHJlc29sdmUKLSBhIHBhcnRpY3VsYXIgc2VydmljZSBwb2xpY3kgcHJvYmxlbS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cG9saWN5PC9DT0RFPiAtIFRoZSBwb2xpY3kgdGhhdCB0aGlzIHF1aWNrIGZpeCBhcHBsaWVzIHRvLjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUXVpY2tGaXhBY3Rpb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklRdWlja0ZpeEFjdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTRjNDE5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjMzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUlRdWlja0ZpeEFjdGlvbkluZm8KLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVF1aWNrRml4QWN0aW9uSW5mbyBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IklRdWlja0ZpeEFjdGlvbkluZm8iOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVF1aWNrRml4QWN0aW9uSW5mby5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIElRdWlja0ZpeEFjdGlvbkluZm88L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5JUXVpY2tGaXhBY3Rpb25JbmZvPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIHN0b3JlIHF1aWNrIGZpeCBhY3Rpb24gaW5mb3JtYXRpb24uCi08UD4KLQotPFA+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUXVpY2tGaXhBY3Rpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwjZ2V0QWN0aW9uKCkiPmdldEFjdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGFjdGlvbiBmb3IgdGhpcyBxdWljayBmaXguPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRGVzY3JpcHRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SURlc2NyaXB0b3I8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwjZ2V0RGVzY3JpcHRvcigpIj5nZXREZXNjcmlwdG9yPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIGRlc2NyaXB0b3IgZm9yIHRoaXMgcXVpY2sgZml4LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0RGVzY3JpcHRvcigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREZXNjcmlwdG9yPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSURlc2NyaXB0b3IuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklEZXNjcmlwdG9yPC9BPiA8Qj5nZXREZXNjcmlwdG9yPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIGRlc2NyaXB0b3IgZm9yIHRoaXMgcXVpY2sgZml4LgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgYSBkZXNjcmlwdG9yIGZvciB0aGlzIHF1aWNrIGZpeC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEFjdGlvbigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRBY3Rpb248L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklRdWlja0ZpeEFjdGlvbjwvQT4gPEI+Z2V0QWN0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgYWN0aW9uIGZvciB0aGlzIHF1aWNrIGZpeC4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSBhY3Rpb24gZm9yIHRoaXMgcXVpY2sgZml4LjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVF1aWNrRml4QWN0aW9uSW5mby5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA1MGM5Ny4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDQ3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSQotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkgY2xhc3MiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0gyPgotPFBSRT4KLWphdmEubGFuZy5PYmplY3QKLSAgPElNRyBTUkM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9pbmhlcml0LmdpZiIgQUxUPSJleHRlbmRlZCBieSAiPm9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW4KLSAgICAgIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuU2VydmljZVBvbGljeUFjdGl2YXRvclVJPC9CPgotPC9QUkU+Ci08REw+Ci08RFQ+PEI+QWxsIEltcGxlbWVudGVkIEludGVyZmFjZXM6PC9CPiA8REQ+b3JnLmVjbGlwc2UudWkuSVN0YXJ0dXAsIG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVBY3RpdmF0b3I8L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBjbGFzcyA8Qj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0I+PERUPmV4dGVuZHMgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjxEVD5pbXBsZW1lbnRzIG9yZy5lY2xpcHNlLnVpLklTdGFydHVwPC9ETD4KLTwvUFJFPgotCi08UD4KLVRoZSBhY3RpdmF0b3IgY2xhc3MgY29udHJvbHMgdGhlIHBsdWctaW4gbGlmZSBjeWNsZQotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLTwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCNQTFVHSU5fSUQiPlBMVUdJTl9JRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJmaWVsZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbiI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPkZpZWxkcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luPC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+UExVR0lOX1BSRUZFUkVOQ0VfU0NPUEUsIFBSRUZFUkVOQ0VTX0RFRkFVTFRfT1ZFUlJJREVfQkFTRV9OQU1FLCBQUkVGRVJFTkNFU19ERUZBVUxUX09WRVJSSURFX0ZJTEVfTkFNRTwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KLQotPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sI1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSSgpIj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgY29uc3RydWN0b3I8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sI2Vhcmx5U3RhcnR1cCgpIj5lYXJseVN0YXJ0dXA8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDYWxsZWQgYnkgRWNsaXBzZSB3aGVuIGl0IHN0YXJ0cyB1cC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCNnZXREZWZhdWx0KCkiPmdldERlZmF1bHQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7b3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCNnZXRJbWFnZURlc2NyaXB0b3IoamF2YS5sYW5nLlN0cmluZykiPmdldEltYWdlRGVzY3JpcHRvcjwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhbiBpbWFnZSBkZXNjcmlwdG9yIGZvciB0aGUgbmFtZWQgcmVzb3VyY2UKLSBhcyByZWxhdGl2ZSB0byB0aGUgcGx1Z2luIGluc3RhbGwgbG9jYXRpb24uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sI2xvZ0Vycm9yKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5UaHJvd2FibGUpIj5sb2dFcnJvcjwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDttZXNzYWdlLAotICAgICAgICAgamF2YS5sYW5nLlRocm93YWJsZSZuYnNwO2V4Yyk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0xvZ3MgZXJyb3IgbWVzc2FnZSBmb3IgdGhpcyBwbHVnaW4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KSI+c3RhcnQ8L0E+PC9CPihvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCZuYnNwO2NvbnRleHQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwjc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkiPnN0b3A8L0E+PC9CPihvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCZuYnNwO2NvbnRleHQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW4iPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5maW5kLCBmaW5kLCBnZXRCdW5kbGUsIGdldERlc2NyaXB0b3IsIGdldExvZywgZ2V0UGx1Z2luUHJlZmVyZW5jZXMsIGdldFN0YXRlTG9jYXRpb24sIGludGVybmFsSW5pdGlhbGl6ZURlZmF1bHRQbHVnaW5QcmVmZXJlbmNlcywgaXNEZWJ1Z2dpbmcsIG9wZW5TdHJlYW0sIG9wZW5TdHJlYW0sIHNhdmVQbHVnaW5QcmVmZXJlbmNlcywgc2V0RGVidWdnaW5nLCBzaHV0ZG93biwgc3RhcnR1cCwgdG9TdHJpbmc8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+ZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB3YWl0LCB3YWl0LCB3YWl0PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9IlBMVUdJTl9JRCI+PCEtLSAtLT48L0E+PEgzPgotUExVR0lOX0lEPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+UExVR0lOX0lEPC9CPjwvUFJFPgotPERMPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5QTFVHSU5fSUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5Db25zdHJ1Y3RvciBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iU2VydmljZVBvbGljeUFjdGl2YXRvclVJKCkiPjwhLS0gLS0+PC9BPjxIMz4KLVNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvSDM+Ci08UFJFPgotcHVibGljIDxCPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQj4oKTwvUFJFPgotPERMPgotPEREPlRoZSBjb25zdHJ1Y3RvcgotPFA+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9InN0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KSI+PCEtLSAtLT48L0E+PEgzPgotc3RhcnQ8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnN0YXJ0PC9CPihvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCZuYnNwO2NvbnRleHQpCi0gICAgICAgICAgIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnN0YXJ0PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+b3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUFjdGl2YXRvcjwvQ09ERT48RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PENPREU+c3RhcnQ8L0NPREU+IGluIGNsYXNzIDxDT0RFPm9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+VGhyb3dzOjwvQj4KLTxERD48Q09ERT5qYXZhLmxhbmcuRXhjZXB0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkiPjwhLS0gLS0+PC9BPjxIMz4KLXN0b3A8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnN0b3A8L0I+KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0Jm5ic3A7Y29udGV4dCkKLSAgICAgICAgICB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbjwvUFJFPgotPERMPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zdG9wPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+b3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUFjdGl2YXRvcjwvQ09ERT48RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PENPREU+c3RvcDwvQ09ERT4gaW4gY2xhc3MgPENPREU+b3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5UaHJvd3M6PC9CPgotPEREPjxDT0RFPmphdmEubGFuZy5FeGNlcHRpb248L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJbWFnZURlc2NyaXB0b3IoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEltYWdlRGVzY3JpcHRvcjwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3IgPEI+Z2V0SW1hZ2VEZXNjcmlwdG9yPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGFuIGltYWdlIGRlc2NyaXB0b3IgZm9yIHRoZSBuYW1lZCByZXNvdXJjZQotIGFzIHJlbGF0aXZlIHRvIHRoZSBwbHVnaW4gaW5zdGFsbCBsb2NhdGlvbi4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5BbiBpbWFnZSBkZXNjcmlwdG9yLCBwb3NzaWJseSBudWxsLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RGVmYXVsdCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREZWZhdWx0PC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+U2VydmljZVBvbGljeUFjdGl2YXRvclVJPC9BPiA8Qj5nZXREZWZhdWx0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHNoYXJlZCBpbnN0YW5jZTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ibG9nRXJyb3IoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlRocm93YWJsZSkiPjwhLS0gLS0+PC9BPjxIMz4KLWxvZ0Vycm9yPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIHZvaWQgPEI+bG9nRXJyb3I8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDttZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5UaHJvd2FibGUmbmJzcDtleGMpPC9QUkU+Ci08REw+Ci08REQ+TG9ncyBlcnJvciBtZXNzYWdlIGZvciB0aGlzIHBsdWdpbi4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bWVzc2FnZTwvQ09ERT4gLSA8REQ+PENPREU+ZXhjPC9DT0RFPiAtIDwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZWFybHlTdGFydHVwKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWVhcmx5U3RhcnR1cDwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+ZWFybHlTdGFydHVwPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+Q2FsbGVkIGJ5IEVjbGlwc2Ugd2hlbiBpdCBzdGFydHMgdXAuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+ZWFybHlTdGFydHVwPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+b3JnLmVjbGlwc2UudWkuSVN0YXJ0dXA8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ0MDI4OC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNDggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotU2VydmljZVBvbGljeVBsYXRmb3JtVUkKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuU2VydmljZVBvbGljeVBsYXRmb3JtVUkgY2xhc3MiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSTwvSDI+Ci08UFJFPgotamF2YS5sYW5nLk9iamVjdAotICA8SU1HIFNSQz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2luaGVyaXQuZ2lmIiBBTFQ9ImV4dGVuZGVkIGJ5ICI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9CPgotPC9QUkU+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgY2xhc3MgPEI+U2VydmljZVBvbGljeVBsYXRmb3JtVUk8L0I+PERUPmV4dGVuZHMgamF2YS5sYW5nLk9iamVjdDwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGNsYXNzIGlzIHVzZWQgdG8gZ2V0IFNlcnZpY2UgcG9saWN5IFVJIGluZm9ybWF0aW9uLgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Jmd0OzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCNnZXRBbGxPcGVyYXRpb25zKCkiPmdldEFsbE9wZXJhdGlvbnM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGFsbCB0aGUgb3BlcmF0aW9ucyBmb3IgYWxsIGtub3duIHBvbGljaWVzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+U2VydmljZVBvbGljeVBsYXRmb3JtVUk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI2dldEluc3RhbmNlKCkiPmdldEluc3RhbmNlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGlzIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtIFVJIG9iamVjdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI2dldE9wZXJhdGlvbihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3ksIGphdmEubGFuZy5TdHJpbmcpIj5nZXRPcGVyYXRpb248L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BvbGljeSwKLSAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7aWQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGFuIG9wZXJhdGlvbiB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgc2VydmljZSBwb2xpY3kKLSBhbmQgaGFzIHRoZSBzcGVjaWZpZWQgaWQuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPiZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwjZ2V0T3BlcmF0aW9ucyhvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3ksIGJvb2xlYW4pIj5nZXRPcGVyYXRpb25zPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mbmJzcDtwb2xpY3ksCi0gICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtpc1dvcmtzcGFjZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGxpc3Qgb2Ygb3BlcmF0aW9ucyBmb3IgdGhpcyBwb2xpY3kuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0Jmx0O2phdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPiZndDsmZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI2dldE9wZXJhdGlvbnNMaXN0KGphdmEudXRpbC5MaXN0LCBib29sZWFuKSI+Z2V0T3BlcmF0aW9uc0xpc3Q8L0E+PC9CPihqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDsmbmJzcDtwb2xpY2llcywKLSAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtpc1dvcmtzcGFjZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBsaXN0IG9mIGxpc3QgcG9saWN5IG9wZXJhdGlvbnMgd2hpY2ggYXJlIGFzc29jaWF0ZWQgd2l0aAotIHRoZSBzcGVjaWZpZWQgc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklRdWlja0ZpeEFjdGlvbkluZm88L0E+Jmd0OzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCNnZXRRdWlja0ZpeGVzKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzKSI+Z2V0UXVpY2tGaXhlczwvQT48L0I+KG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzJm5ic3A7c3RhdHVzKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIGxpc3Qgb2YgcXVpY2sgZml4IGluZm8gZm9yIHRoZSBzcGVjaWZpZWQgc3RhdHVzIG9iamVjdC48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzIGphdmEubGFuZy5PYmplY3Q8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5lcXVhbHMsIGdldENsYXNzLCBoYXNoQ29kZSwgbm90aWZ5LCBub3RpZnlBbGwsIHRvU3RyaW5nLCB3YWl0LCB3YWl0LCB3YWl0PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0SW5zdGFuY2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SW5zdGFuY2U8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9BPiA8Qj5nZXRJbnN0YW5jZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybSBVSSBvYmplY3QuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGlzIHNlcnZpY2UgcG9saWN5IHBsYXRmb3JtIFVJIG9iamVjdC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEFsbE9wZXJhdGlvbnMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0QWxsT3BlcmF0aW9uczwvSDM+Ci08UFJFPgotcHVibGljIGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPiZndDsgPEI+Z2V0QWxsT3BlcmF0aW9uczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYWxsIHRoZSBvcGVyYXRpb25zIGZvciBhbGwga25vd24gcG9saWNpZXMuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyBhbGwgdGhlIG9wZXJhdGlvbnMgZm9yIGFsbCBrbm93biBwb2xpY2llcy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE9wZXJhdGlvbihvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3ksIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRPcGVyYXRpb248L0gzPgotPFBSRT4KLXB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbjwvQT4gPEI+Z2V0T3BlcmF0aW9uPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BvbGljeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7aWQpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhbiBvcGVyYXRpb24gdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIHNlcnZpY2UgcG9saWN5Ci0gYW5kIGhhcyB0aGUgc3BlY2lmaWVkIGlkLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wb2xpY3k8L0NPREU+IC0gdGhlIHNlcnZpY2UgcG9saWN5PEREPjxDT0RFPmlkPC9DT0RFPiAtIHRoZSBvcGVyYXRpb24gaWQuCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIG9wZXJhdGlvbiBiZWluZyBzZWFyY2hlZCBmb3Igb3IgbnVsbCBpcyBub3QgZm91bmQuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRPcGVyYXRpb25zKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSwgYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE9wZXJhdGlvbnM8L0gzPgotPFBSRT4KLXB1YmxpYyBqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbjwvQT4mZ3Q7IDxCPmdldE9wZXJhdGlvbnM8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO2lzV29ya3NwYWNlKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGxpc3Qgb2Ygb3BlcmF0aW9ucyBmb3IgdGhpcyBwb2xpY3kuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnBvbGljeTwvQ09ERT4gLSB0aGUgcG9saWN5PEREPjxDT0RFPmlzV29ya3NwYWNlPC9DT0RFPiAtIHRydWUgaWYgdGhpcyBpcyBhIHByZWZlcmVuY2UgcGFnZSBjb250ZXh0Ci08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgdGhlIGxpc3Qgb2Ygb3BlcmF0aW9ucyBmb3IgdGhpcyBwb2xpY3kuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRPcGVyYXRpb25zTGlzdChqYXZhLnV0aWwuTGlzdCwgYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE9wZXJhdGlvbnNMaXN0PC9IMz4KLTxQUkU+Ci1wdWJsaWMgamF2YS51dGlsLkxpc3QmbHQ7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Jmd0OyZndDsgPEI+Z2V0T3BlcmF0aW9uc0xpc3Q8L0I+KGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jmd0OyZuYnNwO3BvbGljaWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuJm5ic3A7aXNXb3Jrc3BhY2UpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIGxpc3Qgb2YgbGlzdCBwb2xpY3kgb3BlcmF0aW9ucyB3aGljaCBhcmUgYXNzb2NpYXRlZCB3aXRoCi0gdGhlIHNwZWNpZmllZCBzZXJ2aWNlIHBvbGljaWVzLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wb2xpY2llczwvQ09ERT4gLSA8REQ+PENPREU+aXNXb3Jrc3BhY2U8L0NPREU+IC0gCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgYSBsaXN0IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIG9wZXJhdGlvbnMuICBFYWNoIGxpc3QKLSBhcyB0aGUgdG9wIGxldmVsIGNvbnRhaW5zIGxpc3Qgb2YgSVBvbGljeU9wZXJhdGlvbnMgdGhhdCByZWZlcmVuY2UgdGhlIAotIHNhbWUgYmFzZSBvcGVyYXRpb24uICBIb3dldmVyLCB0aGV5IHdpbGwgZWFjaCBoYXZlIGRpZmZlcmVudCBhc3NvY2lhdGVkCi0gcG9saWNpZXMuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRRdWlja0ZpeGVzKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UXVpY2tGaXhlczwvSDM+Ci08UFJFPgotcHVibGljIGphdmEudXRpbC5MaXN0Jmx0OzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUXVpY2tGaXhBY3Rpb25JbmZvPC9BPiZndDsgPEI+Z2V0UXVpY2tGaXhlczwvQj4ob3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXMmbmJzcDtzdGF0dXMpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIGxpc3Qgb2YgcXVpY2sgZml4IGluZm8gZm9yIHRoZSBzcGVjaWZpZWQgc3RhdHVzIG9iamVjdC4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+c3RhdHVzPC9DT0RFPiAtIAotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIGEgbGlzdCBvZiBxdWljayBmaXhlcyBmb3IgdGhpcyBzdGF0dXMgb2JqZWN0LiAgSWYKLSBubyBxdWljayBmaXhlcyBhcmUgYXZhaWxhYmxlIGFuIGVtcHR5IGxpc3Qgd2lsbCBiZSByZXR1cm5lZC48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL0lFbmFibGVPcGVyYXRpb24uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL0lFbmFibGVPcGVyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJhYWViMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL2NsYXNzLXVzZS9JRW5hYmxlT3BlcmF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklFbmFibGVPcGVyYXRpb24KLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSUVuYWJsZU9wZXJhdGlvbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9cY2xhc3MtdXNlSUVuYWJsZU9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklFbmFibGVPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklFbmFibGVPcGVyYXRpb248L0I+PC9IMj4KLTwvQ0VOVEVSPgotTm8gdXNhZ2Ugb2Ygb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklFbmFibGVPcGVyYXRpb24KLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9cY2xhc3MtdXNlSUVuYWJsZU9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklFbmFibGVPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL0lMYXVuY2hPcGVyYXRpb24uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL0lMYXVuY2hPcGVyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJiZThhZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL2NsYXNzLXVzZS9JTGF1bmNoT3BlcmF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklMYXVuY2hPcGVyYXRpb24KLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSUxhdW5jaE9wZXJhdGlvbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9cY2xhc3MtdXNlSUxhdW5jaE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklMYXVuY2hPcGVyYXRpb248L0I+PC9IMj4KLTwvQ0VOVEVSPgotTm8gdXNhZ2Ugb2Ygb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklMYXVuY2hPcGVyYXRpb24KLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9cY2xhc3MtdXNlSUxhdW5jaE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NmUzNjkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1xjbGFzcy11c2VJUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBDbGFzczxicj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVBvbGljeU9wZXJhdGlvbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCNnZXRPcGVyYXRpb25LaW5kKCkiPmdldE9wZXJhdGlvbktpbmQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBraW5kIG9mIHNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwjdmFsdWVPZihqYXZhLmxhbmcuU3RyaW5nKSI+dmFsdWVPZjwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgZW51bSBjb25zdGFudCBvZiB0aGlzIHR5cGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQ8L0E+W108L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwjdmFsdWVzKCkiPnZhbHVlczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgY29uc3RhbnRzIG9mIHRoaXMgZW51bSB0eXBlLCBpbgotdGhlIG9yZGVyIHRoZXkncmUgZGVjbGFyZWQuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvXGNsYXNzLXVzZUlQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvSVBvbGljeU9wZXJhdGlvbi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvSVBvbGljeU9wZXJhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjkxMzk2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL0lQb2xpY3lPcGVyYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbgotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JUG9saWN5T3BlcmF0aW9uIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1xjbGFzcy11c2VJUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbjwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUG9saWN5T3BlcmF0aW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwjZ2V0T3BlcmF0aW9uKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSwgamF2YS5sYW5nLlN0cmluZykiPmdldE9wZXJhdGlvbjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU2VydmljZVBvbGljeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SVNlcnZpY2VQb2xpY3k8L0E+Jm5ic3A7cG9saWN5LAotICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtpZCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYW4gb3BlcmF0aW9uIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBzZXJ2aWNlIHBvbGljeQotIGFuZCBoYXMgdGhlIHNwZWNpZmllZCBpZC48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+IHRoYXQgcmV0dXJuIHR5cGVzIHdpdGggYXJndW1lbnRzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbjwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCNnZXRBbGxPcGVyYXRpb25zKCkiPmdldEFsbE9wZXJhdGlvbnM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGFsbCB0aGUgb3BlcmF0aW9ucyBmb3IgYWxsIGtub3duIHBvbGljaWVzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVBvbGljeU9wZXJhdGlvbjwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCNnZXRPcGVyYXRpb25zKG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeSwgYm9vbGVhbikiPmdldE9wZXJhdGlvbnM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZuYnNwO3BvbGljeSwKLSAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO2lzV29ya3NwYWNlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbGlzdCBvZiBvcGVyYXRpb25zIGZvciB0aGlzIHBvbGljeS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLkxpc3QmbHQ7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+Jmd0OyZndDs8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtVUkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI2dldE9wZXJhdGlvbnNMaXN0KGphdmEudXRpbC5MaXN0LCBib29sZWFuKSI+Z2V0T3BlcmF0aW9uc0xpc3Q8L0E+PC9CPihqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDsmbmJzcDtwb2xpY2llcywKLSAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDtpc1dvcmtzcGFjZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBsaXN0IG9mIGxpc3QgcG9saWN5IG9wZXJhdGlvbnMgd2hpY2ggYXJlIGFzc29jaWF0ZWQgd2l0aAotIHRoZSBzcGVjaWZpZWQgc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9cY2xhc3MtdXNlSVBvbGljeU9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL0lRdWlja0ZpeEFjdGlvbi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvSVF1aWNrRml4QWN0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkNDQ0ZGQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvSVF1aWNrRml4QWN0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklRdWlja0ZpeEFjdGlvbgotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JUXVpY2tGaXhBY3Rpb24iOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9cY2xhc3MtdXNlSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JUXVpY2tGaXhBY3Rpb248L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklRdWlja0ZpeEFjdGlvbjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVF1aWNrRml4QWN0aW9uPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUXVpY2tGaXhBY3Rpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUXVpY2tGaXhBY3Rpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPklRdWlja0ZpeEFjdGlvbkluZm8uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwjZ2V0QWN0aW9uKCkiPmdldEFjdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGFjdGlvbiBmb3IgdGhpcyBxdWljayBmaXguPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9cY2xhc3MtdXNlSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL2NsYXNzLXVzZS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL2NsYXNzLXVzZS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NDk5NTguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JUXVpY2tGaXhBY3Rpb25JbmZvCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklRdWlja0ZpeEFjdGlvbkluZm8iOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvXGNsYXNzLXVzZUlRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JUXVpY2tGaXhBY3Rpb25JbmZvPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVF1aWNrRml4QWN0aW9uSW5mbzwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklRdWlja0ZpeEFjdGlvbkluZm88L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+IHRoYXQgcmV0dXJuIHR5cGVzIHdpdGggYXJndW1lbnRzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklRdWlja0ZpeEFjdGlvbkluZm88L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SVF1aWNrRml4QWN0aW9uSW5mbzwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCNnZXRRdWlja0ZpeGVzKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzKSI+Z2V0UXVpY2tGaXhlczwvQT48L0I+KG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzJm5ic3A7c3RhdHVzKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIGxpc3Qgb2YgcXVpY2sgZml4IGluZm8gZm9yIHRoZSBzcGVjaWZpZWQgc3RhdHVzIG9iamVjdC48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9cY2xhc3MtdXNlSVF1aWNrRml4QWN0aW9uSW5mby5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NzA5YTcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuU2VydmljZVBvbGljeUFjdGl2YXRvclVJCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuU2VydmljZVBvbGljeUFjdGl2YXRvclVJIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9cY2xhc3MtdXNlU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgQ2xhc3M8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+U2VydmljZVBvbGljeUFjdGl2YXRvclVJPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+U2VydmljZVBvbGljeUFjdGl2YXRvclVJPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCNnZXREZWZhdWx0KCkiPmdldERlZmF1bHQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvXGNsYXNzLXVzZVNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjN2NjYWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIENsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1xjbGFzcy11c2VTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgQ2xhc3M8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+U2VydmljZVBvbGljeVBsYXRmb3JtVUk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwjZ2V0SW5zdGFuY2UoKSI+Z2V0SW5zdGFuY2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoaXMgc2VydmljZSBwb2xpY3kgcGxhdGZvcm0gVUkgb2JqZWN0LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1xjbGFzcy11c2VTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2UtZnJhbWUuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1mcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTIwZWZiLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1mcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIHBhY2thZ2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSI+Ci08Rk9OVCBzaXplPSIrMSIgQ0xBU1M9IkZyYW1lVGl0bGVGb250Ij4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+PC9GT05UPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgTk9XUkFQPjxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVIZWFkaW5nRm9udCI+Ci1JbnRlcmZhY2VzPC9GT05UPiZuYnNwOwotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPgotPEJSPgotPEEgSFJFRj0iSUVuYWJsZU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JRW5hYmxlT3BlcmF0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IklMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SUxhdW5jaE9wZXJhdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJJUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklQb2xpY3lPcGVyYXRpb248L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklRdWlja0ZpeEFjdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJJUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklRdWlja0ZpeEFjdGlvbkluZm88L0k+PC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0KLQotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgTk9XUkFQPjxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVIZWFkaW5nRm9udCI+Ci1DbGFzc2VzPC9GT05UPiZuYnNwOwotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPgotPEJSPgotPEEgSFJFRj0iU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiIHRhcmdldD0iY2xhc3NGcmFtZSI+U2VydmljZVBvbGljeUFjdGl2YXRvclVJPC9BPgotPEJSPgotPEEgSFJFRj0iU2VydmljZVBvbGljeVBsYXRmb3JtVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSTwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi0KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIE5PV1JBUD48Rk9OVCBzaXplPSIrMSIgQ0xBU1M9IkZyYW1lSGVhZGluZ0ZvbnQiPgotRW51bXM8L0ZPTlQ+Jm5ic3A7Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+Ci08QlI+Ci08QSBIUkVGPSJJUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCIgdGl0bGU9ImVudW0gaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzFiMWI1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIHBhY2thZ2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPlBSRVYgUEFDS0FHRTwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPk5FWFQgUEFDS0FHRTwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08SDI+Ci1QYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aQotPC9IMj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5JbnRlcmZhY2UgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUVuYWJsZU9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+SUVuYWJsZU9wZXJhdGlvbjwvQT48L0I+PC9URD4KLTxURD5UaGlzIGludGVyZmFjZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGVuYWJsZWRDbGFzcyBhdHRyaWJ1dGUgb2YgdGhlCi0gZW5hYmxlZCBlbGVtZW50LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lMYXVuY2hPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklMYXVuY2hPcGVyYXRpb248L0E+PC9CPjwvVEQ+Ci08VEQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBsYXVuY2hDbGFzcyBhdHRyaWJ1dGUgb2YKLSB0aGUgY29tcGxleCBlbGVtZW50LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb248L0E+PC9CPjwvVEQ+Ci08VEQ+VGhpcyBpbnRlcmZhY2UgcmVwcmVzZW50cyBhIFNlcnZpY2UgcG9saWN5IG9wZXJhdGlvbiB0aGF0IGhhcyBiZWVuIGRlZmluZWQKLSBpbiB0aGUgcGx1Z2luLnhtbCBtZXRhIGRhdGEuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVF1aWNrRml4QWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUXVpY2tGaXhBY3Rpb248L0E+PC9CPjwvVEQ+Ci08VEQ+VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBleHRlbmRlcnMgdG8gYWRkIHF1aWNrIGZpeGVzIHRvIHRoZSBzZXJ2aWNlIHBvbGljeSB1aQotIGZyYW1ld29yay48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5JUXVpY2tGaXhBY3Rpb25JbmZvPC9BPjwvQj48L1REPgotPFREPlRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gc3RvcmUgcXVpY2sgZml4IGFjdGlvbiBpbmZvcm1hdGlvbi48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLQotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q2xhc3MgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvU2VydmljZVBvbGljeUFjdGl2YXRvclVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPlNlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSTwvQT48L0I+PC9URD4KLTxURD5UaGUgYWN0aXZhdG9yIGNsYXNzIGNvbnRyb2xzIHRoZSBwbHVnLWluIGxpZmUgY3ljbGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj5TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSTwvQT48L0I+PC9URD4KLTxURD5UaGlzIGNsYXNzIGlzIHVzZWQgdG8gZ2V0IFNlcnZpY2UgcG9saWN5IFVJIGluZm9ybWF0aW9uLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotCi08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5FbnVtIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQT48L0I+PC9URD4KLTxURD5JbmRpY2F0ZXMgdGhlIGtpbmQgb2YgU2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHRoYXQgdGhpcyBvYmplY3QgcmVwcmVzZW50cy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLQotPFA+Ci08REw+Ci08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPlBSRVYgUEFDS0FHRTwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPk5FWFQgUEFDS0FHRTwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS10cmVlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2UtdHJlZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGQyM2E2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS10cmVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIENsYXNzIEhpZXJhcmNoeQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSBDbGFzcyBIaWVyYXJjaHkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+UFJFVjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS10cmVlLmh0bWwiPjxCPk5FWFQ8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLUhpZXJhcmNoeSBGb3IgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkKLTwvSDI+Ci08L0NFTlRFUj4KLTxETD4KLTxEVD48Qj5QYWNrYWdlIEhpZXJhcmNoaWVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctdHJlZS5odG1sIj5BbGwgUGFja2FnZXM8L0E+PC9ETD4KLTxIUj4KLTxIMj4KLUNsYXNzIEhpZXJhcmNoeQotPC9IMj4KLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmEubGFuZy5PYmplY3Q8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luIChpbXBsZW1lbnRzIG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVBY3RpdmF0b3IpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUk8L0I+PC9BPiAoaW1wbGVtZW50cyBvcmcuZWNsaXBzZS51aS5JU3RhcnR1cCkKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL1NlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJPC9CPjwvQT48L1VMPgotPC9VTD4KLTxIMj4KLUludGVyZmFjZSBIaWVyYXJjaHkKLTwvSDI+Ci08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lFbmFibGVPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPklFbmFibGVPcGVyYXRpb248L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUxhdW5jaE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+SUxhdW5jaE9wZXJhdGlvbjwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5JUG9saWN5T3BlcmF0aW9uPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+SVF1aWNrRml4QWN0aW9uPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lRdWlja0ZpeEFjdGlvbkluZm8uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPklRdWlja0ZpeEFjdGlvbkluZm88L0I+PC9BPjwvVUw+Ci08SDI+Ci1FbnVtIEhpZXJhcmNoeQotPC9IMj4KLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmEubGFuZy5PYmplY3Q8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZhLmxhbmcuRW51bSZsdDtFJmd0OyAoaW1wbGVtZW50cyBqYXZhLmxhbmcuQ29tcGFyYWJsZSZsdDtUJmd0OywgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL0lQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZC5odG1sIiB0aXRsZT0iZW51bSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQj48L0E+PC9VTD4KLTwvVUw+Ci08L1VMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2UtdHJlZS5odG1sIj48Qj5QUkVWPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+TkVYVDwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS11c2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS11c2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZmMDk5OC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2UtdXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBQYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIFBhY2thZ2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLUNsYXNzZXMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+IHVzZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL2NsYXNzLXVzZS9JUG9saWN5T3BlcmF0aW9uLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5JUG9saWN5T3BlcmF0aW9uPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaW50ZXJmYWNlIHJlcHJlc2VudHMgYSBTZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24gdGhhdCBoYXMgYmVlbiBkZWZpbmVkCi0gaW4gdGhlIHBsdWdpbi54bWwgbWV0YSBkYXRhLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL2NsYXNzLXVzZS9JUG9saWN5T3BlcmF0aW9uLk9wZXJhdGlvbktpbmQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPklQb2xpY3lPcGVyYXRpb24uT3BlcmF0aW9uS2luZDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJbmRpY2F0ZXMgdGhlIGtpbmQgb2YgU2VydmljZSBwb2xpY3kgb3BlcmF0aW9uIHRoYXQgdGhpcyBvYmplY3QgcmVwcmVzZW50cy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvSVF1aWNrRml4QWN0aW9uLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5JUXVpY2tGaXhBY3Rpb248L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBleHRlbmRlcnMgdG8gYWRkIHF1aWNrIGZpeGVzIHRvIHRoZSBzZXJ2aWNlIHBvbGljeSB1aQotIGZyYW1ld29yay48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9jbGFzcy11c2UvSVF1aWNrRml4QWN0aW9uSW5mby5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+SVF1aWNrRml4QWN0aW9uSW5mbzwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIHN0b3JlIHF1aWNrIGZpeCBhY3Rpb24gaW5mb3JtYXRpb24uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvY2xhc3MtdXNlL1NlcnZpY2VQb2xpY3lBY3RpdmF0b3JVSS5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+U2VydmljZVBvbGljeUFjdGl2YXRvclVJPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBhY3RpdmF0b3IgY2xhc3MgY29udHJvbHMgdGhlIHBsdWctaW4gbGlmZSBjeWNsZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL2NsYXNzLXVzZS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sI29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+U2VydmljZVBvbGljeVBsYXRmb3JtVUk8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBjbGFzcyBpcyB1c2VkIHRvIGdldCBTZXJ2aWNlIHBvbGljeSBVSSBpbmZvcm1hdGlvbi48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL0FjdGl2aXR5VXRpbHMuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvQWN0aXZpdHlVdGlscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTM3NjY3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvQWN0aXZpdHlVdGlscy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjU3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUFjdGl2aXR5VXRpbHMKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuQWN0aXZpdHlVdGlscyBjbGFzcyI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iQWN0aXZpdHlVdGlscyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0FjdGl2aXR5VXRpbHMuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYgQ0xBU1MmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9TZXJ2aWNlVXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9BY3Rpdml0eVV0aWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iQWN0aXZpdHlVdGlscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzPC9GT05UPgotPEJSPgotQ2xhc3MgQWN0aXZpdHlVdGlsczwvSDI+Ci08UFJFPgotamF2YS5sYW5nLk9iamVjdAotICA8SU1HIFNSQz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2luaGVyaXQuZ2lmIiBBTFQ9ImV4dGVuZGVkIGJ5ICI+PEI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzLkFjdGl2aXR5VXRpbHM8L0I+Ci08L1BSRT4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBjbGFzcyA8Qj5BY3Rpdml0eVV0aWxzPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8L0RMPgotPC9QUkU+Ci0KLTxQPgotVXNlZCBieSB0aGUgRWNsaXBzZSBhY3Rpdml0aWVzIGZyYW1ld29yay4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KLQotPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL0FjdGl2aXR5VXRpbHMuaHRtbCNBY3Rpdml0eVV0aWxzKCkiPkFjdGl2aXR5VXRpbHM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JRmlsdGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JRmlsdGVyPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvQWN0aXZpdHlVdGlscy5odG1sI2dldEN1cnJlbnRBY3Rpdml0aWVzRmlsdGVyKCkiPmdldEN1cnJlbnRBY3Rpdml0aWVzRmlsdGVyPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIHNlcnZpY2UgcG9saWN5IGZpbHRlciBiYXNlZCBvbiB0aGUgRWNsaXBzZSBhY3Rpdml0aWVzIHNldHRpbmdzLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmVxdWFscywgZ2V0Q2xhc3MsIGhhc2hDb2RlLCBub3RpZnksIG5vdGlmeUFsbCwgdG9TdHJpbmcsIHdhaXQsIHdhaXQsIHdhaXQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5Db25zdHJ1Y3RvciBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iQWN0aXZpdHlVdGlscygpIj48IS0tIC0tPjwvQT48SDM+Ci1BY3Rpdml0eVV0aWxzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgPEI+QWN0aXZpdHlVdGlsczwvQj4oKTwvUFJFPgotPERMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRDdXJyZW50QWN0aXZpdGllc0ZpbHRlcigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRDdXJyZW50QWN0aXZpdGllc0ZpbHRlcjwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+SUZpbHRlcjwvQT4gPEI+Z2V0Q3VycmVudEFjdGl2aXRpZXNGaWx0ZXI8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgc2VydmljZSBwb2xpY3kgZmlsdGVyIGJhc2VkIG9uIHRoZSBFY2xpcHNlIGFjdGl2aXRpZXMgc2V0dGluZ3MuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyBhIHNlcnZpY2UgcG9saWN5IGZpbHRlciBiYXNlZCBvbiB0aGUgRWNsaXBzZSBhY3Rpdml0aWVzIHNldHRpbmdzLjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9BY3Rpdml0eVV0aWxzLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIENMQVNTJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvQWN0aXZpdHlVdGlscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkFjdGl2aXR5VXRpbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9TZXJ2aWNlVXRpbHMuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MzEwNWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9TZXJ2aWNlVXRpbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzkgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1TZXJ2aWNlVXRpbHMKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuU2VydmljZVV0aWxzIGNsYXNzIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJTZXJ2aWNlVXRpbHMiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TZXJ2aWNlVXRpbHMuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9BY3Rpdml0eVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7TkVYVCBDTEFTUzwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU2VydmljZVV0aWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHM8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBTZXJ2aWNlVXRpbHM8L0gyPgotPFBSRT4KLWphdmEubGFuZy5PYmplY3QKLSAgPElNRyBTUkM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9pbmhlcml0LmdpZiIgQUxUPSJleHRlbmRlZCBieSAiPjxCPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscy5TZXJ2aWNlVXRpbHM8L0I+Ci08L1BSRT4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBjbGFzcyA8Qj5TZXJ2aWNlVXRpbHM8L0I+PERUPmV4dGVuZHMgamF2YS5sYW5nLk9iamVjdDwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGNsYXNzIGNvbnRhaW5zIHV0aWxpdHkgbWV0aG9kIGZvciBzZXJ2aWNlIHBvbGljaWVzLgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwjU2VydmljZVV0aWxzKCkiPlNlcnZpY2VVdGlsczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9TZXJ2aWNlVXRpbHMuaHRtbCNzb3J0TGlzdChqYXZhLnV0aWwuTGlzdCkiPnNvcnRMaXN0PC9BPjwvQj4oamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7Jm5ic3A7dW5zb3J0ZWRMaXN0KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U29ydHMgYSBsaXN0IG9mIHNlcnZpY2UgcG9saWNpZXMuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+ZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJTZXJ2aWNlVXRpbHMoKSI+PCEtLSAtLT48L0E+PEgzPgotU2VydmljZVV0aWxzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgPEI+U2VydmljZVV0aWxzPC9CPigpPC9QUkU+Ci08REw+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9InNvcnRMaXN0KGphdmEudXRpbC5MaXN0KSI+PCEtLSAtLT48L0E+PEgzPgotc29ydExpc3Q8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgamF2YS51dGlsLkxpc3QmbHQ7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij5JU2VydmljZVBvbGljeTwvQT4mZ3Q7IDxCPnNvcnRMaXN0PC9CPihqYXZhLnV0aWwuTGlzdCZsdDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVNlcnZpY2VQb2xpY3kuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklTZXJ2aWNlUG9saWN5PC9BPiZndDsmbmJzcDt1bnNvcnRlZExpc3QpPC9QUkU+Ci08REw+Ci08REQ+U29ydHMgYSBsaXN0IG9mIHNlcnZpY2UgcG9saWNpZXMuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnVuc29ydGVkTGlzdDwvQ09ERT4gLSBhbiB1bnNvcnRlZCBsaXN0Ci08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnJldHVybnMgYSBsaXN0IG9mIHNvcnRlZCBzZXJ2aWNlIHBvbGljaWVzIGJhc2Ugbm90IHRoZWlyIGxvbmcgbmFtZXMuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NlcnZpY2VVdGlscy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL0FjdGl2aXR5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9TZXJ2aWNlVXRpbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTZXJ2aWNlVXRpbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9jbGFzcy11c2UvQWN0aXZpdHlVdGlscy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9jbGFzcy11c2UvQWN0aXZpdHlVdGlscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzM2MDM5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvY2xhc3MtdXNlL0FjdGl2aXR5VXRpbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIENsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscy5BY3Rpdml0eVV0aWxzCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuQWN0aXZpdHlVdGlscyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL0FjdGl2aXR5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL1xjbGFzcy11c2VBY3Rpdml0eVV0aWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iQWN0aXZpdHlVdGlscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIENsYXNzPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscy5BY3Rpdml0eVV0aWxzPC9CPjwvSDI+Ci08L0NFTlRFUj4KLU5vIHVzYWdlIG9mIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscy5BY3Rpdml0eVV0aWxzCi08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9BY3Rpdml0eVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9cY2xhc3MtdXNlQWN0aXZpdHlVdGlscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkFjdGl2aXR5VXRpbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvY2xhc3MtdXNlL1NlcnZpY2VVdGlscy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9jbGFzcy11c2UvU2VydmljZVV0aWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMGNkMjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9jbGFzcy11c2UvU2VydmljZVV0aWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuU2VydmljZVV0aWxzCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuU2VydmljZVV0aWxzIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9cY2xhc3MtdXNlU2VydmljZVV0aWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU2VydmljZVV0aWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgQ2xhc3M8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzLlNlcnZpY2VVdGlsczwvQj48L0gyPgotPC9DRU5URVI+Ci1ObyB1c2FnZSBvZiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuU2VydmljZVV0aWxzCi08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9TZXJ2aWNlVXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL1xjbGFzcy11c2VTZXJ2aWNlVXRpbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTZXJ2aWNlVXRpbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1mcmFtZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLWZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NDljNGQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzkgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMgcGFja2FnZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIj4KLTxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVUaXRsZUZvbnQiPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQT48L0ZPTlQ+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBOT1dSQVA+PEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLUNsYXNzZXM8L0ZPTlQ+Jm5ic3A7Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+Ci08QlI+Ci08QSBIUkVGPSJBY3Rpdml0eVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiIHRhcmdldD0iY2xhc3NGcmFtZSI+QWN0aXZpdHlVdGlsczwvQT4KLTxCUj4KLTxBIEhSRUY9IlNlcnZpY2VVdGlscy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPlNlcnZpY2VVdGlsczwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWFjOGYzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIHBhY2thZ2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+UFJFViBQQUNLQUdFPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+TkVYVCBQQUNLQUdFPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxIMj4KLVBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzCi08L0gyPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNsYXNzIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL0FjdGl2aXR5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI+QWN0aXZpdHlVdGlsczwvQT48L0I+PC9URD4KLTxURD5Vc2VkIGJ5IHRoZSBFY2xpcHNlIGFjdGl2aXRpZXMgZnJhbWV3b3JrLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL1NlcnZpY2VVdGlscy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIj5TZXJ2aWNlVXRpbHM8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhpcyBjbGFzcyBjb250YWlucyB1dGlsaXR5IG1ldGhvZCBmb3Igc2VydmljZSBwb2xpY2llcy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLQotPFA+Ci08REw+Ci08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+UFJFViBQQUNLQUdFPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+TkVYVCBQQUNLQUdFPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXRyZWUuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS10cmVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NWFjMjguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXRyZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzkgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMgQ2xhc3MgSGllcmFyY2h5Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIENsYXNzIEhpZXJhcmNoeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvcGFja2FnZS10cmVlLmh0bWwiPjxCPlBSRVY8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL3BhY2thZ2UtdHJlZS5odG1sIj48Qj5ORVhUPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci1IaWVyYXJjaHkgRm9yIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzCi08L0gyPgotPC9DRU5URVI+Ci08REw+Ci08RFQ+PEI+UGFja2FnZSBIaWVyYXJjaGllczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+QWxsIFBhY2thZ2VzPC9BPjwvREw+Ci08SFI+Ci08SDI+Ci1DbGFzcyBIaWVyYXJjaHkKLTwvSDI+Ci08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZhLmxhbmcuT2JqZWN0PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9BY3Rpdml0eVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxCPkFjdGl2aXR5VXRpbHM8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscy48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvU2VydmljZVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMiPjxCPlNlcnZpY2VVdGlsczwvQj48L0E+PC9VTD4KLTwvVUw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+UFJFVjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS10cmVlLmh0bWwiPjxCPk5FWFQ8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2UtdXNlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2UtdXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5Njc5NmYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXVzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBQYWNrYWdlPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQj48L0gyPgotPC9DRU5URVI+Ci1ObyB1c2FnZSBvZiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL1JlZ2lzdHJ5VXRpbHMuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmQ1ODAwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzozOCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVJlZ2lzdHJ5VXRpbHMKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMuUmVnaXN0cnlVdGlscyBjbGFzcyI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iUmVnaXN0cnlVdGlscyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1JlZ2lzdHJ5VXRpbHMuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYgQ0xBU1MmbmJzcDsKLSZuYnNwO05FWFQgQ0xBU1M8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL1JlZ2lzdHJ5VXRpbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJSZWdpc3RyeVV0aWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHM8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBSZWdpc3RyeVV0aWxzPC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj48Qj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMuUmVnaXN0cnlVdGlsczwvQj4KLTwvUFJFPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGNsYXNzIDxCPlJlZ2lzdHJ5VXRpbHM8L0I+PERUPmV4dGVuZHMgamF2YS5sYW5nLk9iamVjdDwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGNsYXNzIGlzIG9ubHkgaW50ZW5kZWQgZm9yIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSBwbHVnaW4gdG8gdXNlLgotIEl0IGNvbnRhaW5zIGNvbnZlbmllbmNlIG1ldGhvZCBmb3IgcGFyc2luZyB0aGUgc2VydmljZSBwb2xpY3kgZXh0ZW5zaW9uIHBvaW50LgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sI1JlZ2lzdHJ5VXRpbHMoKSI+UmVnaXN0cnlVdGlsczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sI2dldEF0dHJpYnV0ZShvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0QXR0cmlidXRlPC9BPjwvQj4ob3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudCZuYnNwO2VsZW1lbnQsCi0gICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2F0dHJpYnV0ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldHMgYSBhdHRyaWJ1dGUgdmFsdWUgd2hlcmUgdGhlIGF0dHJpYnV0ZSBuYW1lIGlzIGNhc2UgaW5zZW5zaXRpdmUuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL1JlZ2lzdHJ5VXRpbHMuaHRtbCNnZXRBdHRyaWJ1dGVOYW1lKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQsIGphdmEubGFuZy5TdHJpbmcpIj5nZXRBdHRyaWJ1dGVOYW1lPC9BPjwvQj4ob3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudCZuYnNwO2VsZW1lbnQsCi0gICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDthdHRyaWJ1dGUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCB0YWtlcyBpbiBhIGxvd2VyIGNhc2UgYXR0cmlidXRlIG5hbWUuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLmludGVybmFsLnBvbGljeS5EZXNjcmlwdG9ySW1wbDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sI2xvYWREZXNjcmlwdG9yKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQpIj5sb2FkRGVzY3JpcHRvcjwvQT48L0I+KG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQmbmJzcDtlbGVtZW50KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TG9hZHMgdGhlIGF0dHJpYnV0ZXMgZm9yIGEgZGVzY3JpcHRvciBlbGVtZW50LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmVxdWFscywgZ2V0Q2xhc3MsIGhhc2hDb2RlLCBub3RpZnksIG5vdGlmeUFsbCwgdG9TdHJpbmcsIHdhaXQsIHdhaXQsIHdhaXQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5Db25zdHJ1Y3RvciBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iUmVnaXN0cnlVdGlscygpIj48IS0tIC0tPjwvQT48SDM+Ci1SZWdpc3RyeVV0aWxzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgPEI+UmVnaXN0cnlVdGlsczwvQj4oKTwvUFJFPgotPERMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJsb2FkRGVzY3JpcHRvcihvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50KSI+PCEtLSAtLT48L0E+PEgzPgotbG9hZERlc2NyaXB0b3I8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UuaW50ZXJuYWwucG9saWN5LkRlc2NyaXB0b3JJbXBsIDxCPmxvYWREZXNjcmlwdG9yPC9CPihvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50Jm5ic3A7ZWxlbWVudCk8L1BSRT4KLTxETD4KLTxERD5Mb2FkcyB0aGUgYXR0cmlidXRlcyBmb3IgYSBkZXNjcmlwdG9yIGVsZW1lbnQuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmVsZW1lbnQ8L0NPREU+IC0gdGhlIGRlc2NyaXB0b3IgZWxlbWVudAotPERUPjxCPlJldHVybnM6PC9CPjxERD5yZXR1cm5zIHRoZSBkYXRhIGZvciB0aGlzIGVsZW1lbnQuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRBdHRyaWJ1dGVOYW1lKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRBdHRyaWJ1dGVOYW1lPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGphdmEubGFuZy5TdHJpbmcgPEI+Z2V0QXR0cmlidXRlTmFtZTwvQj4ob3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudCZuYnNwO2VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7YXR0cmlidXRlKTwvUFJFPgotPERMPgotPEREPlRoaXMgbWV0aG9kIHRha2VzIGluIGEgbG93ZXIgY2FzZSBhdHRyaWJ1dGUgbmFtZS4gIEl0IHdpbGwgdGhlbiByZXR1cm4KLSB0aGUgc2FtZSBhdHRyaWJ1dGUgbmFtZSB0aGF0IGluY2x1ZGVzIHBvdGVudGlhbGx5IHVwcGVyY2FzZSBjaGFyYWN0ZXJzLgotIFRoaXMgbWV0aG9kIGFsbG93cyBjbGllbnRzIHRvIHNwZWNpZnkgYXR0cmlidXRlIG5hbWVzIGluIGEgY2FzZSBpbnNlbnNpdGl2ZQotIGZhc2hpb24uCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmVsZW1lbnQ8L0NPREU+IC0gdGhlIGVsZW1lbnQ8REQ+PENPREU+YXR0cmlidXRlPC9DT0RFPiAtIHRoZSBhdHRyaWJ1dGUKLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+cmV0dXJucyB0aGUgbG93ZXJjYXNlIGF0dHJpYnV0ZSBuYW1lLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QXR0cmlidXRlKG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRBdHRyaWJ1dGU8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRBdHRyaWJ1dGU8L0I+KG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQ29uZmlndXJhdGlvbkVsZW1lbnQmbmJzcDtlbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7YXR0cmlidXRlKTwvUFJFPgotPERMPgotPEREPkdldHMgYSBhdHRyaWJ1dGUgdmFsdWUgd2hlcmUgdGhlIGF0dHJpYnV0ZSBuYW1lIGlzIGNhc2UgaW5zZW5zaXRpdmUuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmVsZW1lbnQ8L0NPREU+IC0gdGhlIGVsZW1lbnQuPEREPjxDT0RFPmF0dHJpYnV0ZTwvQ09ERT4gLSB0aGUgYXR0cmlidXRlIHRvIGdldC4KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIGZvciB0aGlzIGF0dHJpYnV0ZSBvciBudWxsIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvUmVnaXN0cnlVdGlscy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBDTEFTUyZuYnNwOwotJm5ic3A7TkVYVCBDTEFTUzwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlJlZ2lzdHJ5VXRpbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9jbGFzcy11c2UvUmVnaXN0cnlVdGlscy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9jbGFzcy11c2UvUmVnaXN0cnlVdGlscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzVkNTRkLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvY2xhc3MtdXNlL1JlZ2lzdHJ5VXRpbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6NDAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIENsYXNzIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscy5SZWdpc3RyeVV0aWxzCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMuUmVnaXN0cnlVdGlscyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL1JlZ2lzdHJ5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscyI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL1xjbGFzcy11c2VSZWdpc3RyeVV0aWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUmVnaXN0cnlVdGlscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIENsYXNzPGJyPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscy5SZWdpc3RyeVV0aWxzPC9CPjwvSDI+Ci08L0NFTlRFUj4KLU5vIHVzYWdlIG9mIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscy5SZWdpc3RyeVV0aWxzCi08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9cY2xhc3MtdXNlUmVnaXN0cnlVdGlscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlJlZ2lzdHJ5VXRpbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS1mcmFtZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9wYWNrYWdlLWZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNTZlN2MuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9wYWNrYWdlLWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzkgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMgcGFja2FnZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIj4KLTxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVUaXRsZUZvbnQiPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlsczwvQT48L0ZPTlQ+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBOT1dSQVA+PEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLUNsYXNzZXM8L0ZPTlQ+Jm5ic3A7Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+Ci08QlI+Ci08QSBIUkVGPSJSZWdpc3RyeVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMiIHRhcmdldD0iY2xhc3NGcmFtZSI+UmVnaXN0cnlVdGlsczwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTRhNmM3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjM5IEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzIHBhY2thZ2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+UFJFViBQQUNLQUdFPC9CPjwvQT4mbmJzcDsKLSZuYnNwO05FWFQgUEFDS0FHRTwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEgyPgotUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMKLTwvSDI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q2xhc3MgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvUmVnaXN0cnlVdGlscy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzIj5SZWdpc3RyeVV0aWxzPC9BPjwvQj48L1REPgotPFREPlRoaXMgY2xhc3MgaXMgb25seSBpbnRlbmRlZCBmb3Igb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIHBsdWdpbiB0byB1c2UuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci0KLTxQPgotPERMPgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPlBSRVYgUEFDS0FHRTwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIFBBQ0tBR0U8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9wYWNrYWdlLXRyZWUuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS10cmVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YWRkODcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9wYWNrYWdlLXRyZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzkgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMgQ2xhc3MgSGllcmFyY2h5Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzIENsYXNzIEhpZXJhcmNoeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS10cmVlLmh0bWwiPjxCPlBSRVY8L0I+PC9BPiZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLUhpZXJhcmNoeSBGb3IgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMKLTwvSDI+Ci08L0NFTlRFUj4KLTxETD4KLTxEVD48Qj5QYWNrYWdlIEhpZXJhcmNoaWVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctdHJlZS5odG1sIj5BbGwgUGFja2FnZXM8L0E+PC9ETD4KLTxIUj4KLTxIMj4KLUNsYXNzIEhpZXJhcmNoeQotPC9IMj4KLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmEubGFuZy5PYmplY3Q8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL1JlZ2lzdHJ5VXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscyI+PEI+UmVnaXN0cnlVdGlsczwvQj48L0E+PC9VTD4KLTwvVUw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+UFJFVjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9wYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS11c2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS11c2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY5MDczNi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL3BhY2thZ2UtdXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBQYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscwotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIFBhY2thZ2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzPC9CPjwvSDI+Ci08L0NFTlRFUj4KLU5vIHVzYWdlIG9mIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlscwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL3BhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vdmVydmlldy1mcmFtZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL292ZXJ2aWV3LWZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyM2RlMWUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL292ZXJ2aWV3LWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIEZyaSBNYXkgMTYgMTc6MDc6MzkgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1PdmVydmlldwotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Ik92ZXJ2aWV3LCBXZWIgVG9vbHMgUGxhdGZvcm06IFdlYiBzZXJ2aWNlcyBBUEkgZG9jdW1lbnRhdGlvbiI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSJzdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIj4KLQotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEggQUxJR049ImxlZnQiIE5PV1JBUD48Rk9OVCBzaXplPSIrMSIgQ0xBU1M9IkZyYW1lVGl0bGVGb250Ij4KLTxCPjwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBOT1dSQVA+PEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPjxBIEhSRUY9ImFsbGNsYXNzZXMtZnJhbWUuaHRtbCIgdGFyZ2V0PSJwYWNrYWdlRnJhbWUiPkFsbCBDbGFzc2VzPC9BPjwvRk9OVD4KLTxQPgotPEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLVBhY2thZ2VzPC9GT05UPgotPEJSPgotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLWZyYW1lLmh0bWwiIHRhcmdldD0icGFja2FnZUZyYW1lIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9GT05UPgotPEJSPgotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvcGFja2FnZS1mcmFtZS5odG1sIiB0YXJnZXQ9InBhY2thZ2VGcmFtZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQT48L0ZPTlQ+Ci08QlI+Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2UtZnJhbWUuaHRtbCIgdGFyZ2V0PSJwYWNrYWdlRnJhbWUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aTwvQT48L0ZPTlQ+Ci08QlI+Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2UtZnJhbWUuaHRtbCIgdGFyZ2V0PSJwYWNrYWdlRnJhbWUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQT48L0ZPTlQ+Ci08QlI+Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3V0aWxzL3BhY2thZ2UtZnJhbWUuaHRtbCIgdGFyZ2V0PSJwYWNrYWdlRnJhbWUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlsczwvQT48L0ZPTlQ+Ci08QlI+Ci08L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxQPgotJm5ic3A7Ci08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3ZlcnZpZXctc3VtbWFyeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL292ZXJ2aWV3LXN1bW1hcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTlmNGM5Yi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3ZlcnZpZXctc3VtbWFyeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gRnJpIE1heSAxNiAxNzowNzo0MCBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLU92ZXJ2aWV3Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iT3ZlcnZpZXcsIFdlYiBUb29scyBQbGF0Zm9ybTogV2ViIHNlcnZpY2VzIEFQSSBkb2N1bWVudGF0aW9uIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJPdmVydmlldyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJpbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSJpbmRleC5odG1sP292ZXJ2aWV3LXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJvdmVydmlldy1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMT4KLVdlYiBUb29scyBQbGF0Zm9ybTogV2ViIHNlcnZpY2VzIEFQSSBkb2N1bWVudGF0aW9uCi08L0gxPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+UGFja2FnZXM8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjIwJSI+PEI+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3k8L0E+PC9CPjwvVEQ+Ci08VEQ+Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMjAlIj48Qj48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzPC9BPjwvQj48L1REPgotPFREPiZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjIwJSI+PEI+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWk8L0E+PC9CPjwvVEQ+Ci08VEQ+Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMjAlIj48Qj48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlsczwvQT48L0I+PC9URD4KLTxURD4mbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIyMCUiPjxCPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzPC9BPjwvQj48L1REPgotPFREPiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotPFA+Ci0mbmJzcDs8SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImluZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJoZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/b3ZlcnZpZXctc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vdmVydmlldy10cmVlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvb3ZlcnZpZXctdHJlZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjIwMzFhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9vdmVydmlldy10cmVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBGcmkgTWF5IDE2IDE3OjA3OjQwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotQ2xhc3MgSGllcmFyY2h5Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSJzdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iQ2xhc3MgSGllcmFyY2h5IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImluZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJoZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/b3ZlcnZpZXctdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotSGllcmFyY2h5IEZvciBBbGwgUGFja2FnZXM8L0gyPgotPC9DRU5URVI+Ci08REw+Ci08RFQ+PEI+UGFja2FnZSBIaWVyYXJjaGllczo8L0I+PEREPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9wYWNrYWdlLXRyZWUuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5PC9BPiwgPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L2xpc3RlbmVycy9wYWNrYWdlLXRyZWUuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVyczwvQT4sIDxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9wYWNrYWdlLXRyZWUuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpPC9BPiwgPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3VpL3V0aWxzL3BhY2thZ2UtdHJlZS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHM8L0E+LCA8QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdXRpbHMvcGFja2FnZS10cmVlLmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51dGlsczwvQT48L0RMPgotPEhSPgotPEgyPgotQ2xhc3MgSGllcmFyY2h5Ci08L0gyPgotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YS5sYW5nLk9iamVjdDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscy48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvdXRpbHMvQWN0aXZpdHlVdGlscy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzIj48Qj5BY3Rpdml0eVV0aWxzPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luIChpbXBsZW1lbnRzIG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVBY3RpdmF0b3IpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L1NlcnZpY2VQb2xpY3lBY3RpdmF0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+U2VydmljZVBvbGljeUFjdGl2YXRvcjwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5QWN0aXZhdG9yVUkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+U2VydmljZVBvbGljeUFjdGl2YXRvclVJPC9CPjwvQT4gKGltcGxlbWVudHMgb3JnLmVjbGlwc2UudWkuSVN0YXJ0dXApCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lFbnVtZXJhdGlvbkxpc3RJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBvbGljeUVudW1lcmF0aW9uTGlzdEltcGw8L0I+PC9BPiAoaW1wbGVtZW50cyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lFbnVtZXJhdGlvbkxpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lFbnVtZXJhdGlvbkxpc3Q8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9Qb2xpY3lSZWxhdGlvbnNoaXBJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlBvbGljeVJlbGF0aW9uc2hpcEltcGw8L0I+PC9BPiAoaW1wbGVtZW50cyBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lQb2xpY3lSZWxhdGlvbnNoaXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPklQb2xpY3lSZWxhdGlvbnNoaXA8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnV0aWxzLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91dGlscy9SZWdpc3RyeVV0aWxzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMiPjxCPlJlZ2lzdHJ5VXRpbHM8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvU2VydmljZVBvbGljeVBsYXRmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnV0aWxzLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS91dGlscy9TZXJ2aWNlVXRpbHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS51dGlscyI+PEI+U2VydmljZVV0aWxzPC9CPjwvQT48L1VMPgotPC9VTD4KLTxIMj4KLUludGVyZmFjZSBIaWVyYXJjaHkKLTwvSDI+Ci08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lEZXNjcmlwdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JRGVzY3JpcHRvcjwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JRW5hYmxlT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5JRW5hYmxlT3BlcmF0aW9uPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lGaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklGaWx0ZXI8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSUxhdW5jaE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+SUxhdW5jaE9wZXJhdGlvbjwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lDaGlsZENoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+SVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXI8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeUVudW1lcmF0aW9uTGlzdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SVBvbGljeUVudW1lcmF0aW9uTGlzdDwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUG9saWN5T3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5JUG9saWN5T3BlcmF0aW9uPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+SVBvbGljeVBsYXRmb3JtTG9hZExpc3RlbmVyPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kubGlzdGVuZXJzLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9saXN0ZW5lcnMvSVBvbGljeVBsYXRmb3JtUHJvamVjdExvYWRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxCPklQb2xpY3lQbGF0Zm9ybVByb2plY3RMb2FkTGlzdGVuZXI8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVJlbGF0aW9uc2hpcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SVBvbGljeVJlbGF0aW9uc2hpcDwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JUG9saWN5U3RhdGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklQb2xpY3lTdGF0ZTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lQb2xpY3lTdGF0ZUNoYW5nZUxpc3RlbmVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycyI+PEI+SVBvbGljeVN0YXRlQ2hhbmdlTGlzdGVuZXI8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvSVBvbGljeVN0YXRlRW51bS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeSI+PEI+SVBvbGljeVN0YXRlRW51bTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiPjxCPklRdWlja0ZpeEFjdGlvbjwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS91aS9JUXVpY2tGaXhBY3Rpb25JbmZvLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpIj48Qj5JUXVpY2tGaXhBY3Rpb25JbmZvPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L0lTZXJ2aWNlUG9saWN5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Ij48Qj5JU2VydmljZVBvbGljeTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS9JU3RhdGVFbnVtZXJhdGlvbkl0ZW0uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kiPjxCPklTdGF0ZUVudW1lcmF0aW9uSXRlbTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvbGlzdGVuZXJzL0lTdGF0dXNDaGFuZ2VMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMiPjxCPklTdGF0dXNDaGFuZ2VMaXN0ZW5lcjwvQj48L0E+PC9VTD4KLTxIMj4KLUVudW0gSGllcmFyY2h5Ci08L0gyPgotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YS5sYW5nLk9iamVjdDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmEubGFuZy5FbnVtJmx0O0UmZ3Q7IChpbXBsZW1lbnRzIGphdmEubGFuZy5Db21wYXJhYmxlJmx0O1QmZ3Q7LCBqYXZhLmlvLlNlcmlhbGl6YWJsZSkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdWkvSVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kLmh0bWwiIHRpdGxlPSJlbnVtIGluIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSI+PEI+SVBvbGljeU9wZXJhdGlvbi5PcGVyYXRpb25LaW5kPC9CPjwvQT48L1VMPgotPC9VTD4KLTwvVUw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImluZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJoZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/b3ZlcnZpZXctdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9wYWNrYWdlLWxpc3QgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvcGFja2FnZS1saXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2Q0NDBhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9wYWNrYWdlLWxpc3QKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeQ0KLW9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5saXN0ZW5lcnMNCi1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkNCi1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMNCi1vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudXRpbHMNCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvcmVzb3VyY2VzL2luaGVyaXQuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL3Jlc291cmNlcy9pbmhlcml0LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxNDg2Ny4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3JlZmVyZW5jZS9hcGkvcmVzb3VyY2VzL2luaGVyaXQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL3N0eWxlc2hlZXQuY3NzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvYXBpL3N0eWxlc2hlZXQuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGMzNzM3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2FwaS9zdHlsZXNoZWV0LmNzcworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qIEphdmFkb2Mgc3R5bGUgc2hlZXQgKi8NCi0NCi0vKiBEZWZpbmUgY29sb3JzLCBmb250cyBhbmQgb3RoZXIgc3R5bGUgYXR0cmlidXRlcyBoZXJlIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0cyAqLw0KLQ0KLS8qIFBhZ2UgYmFja2dyb3VuZCBjb2xvciAqLw0KLWJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIH0NCi0NCi0vKiBIZWFkaW5ncyAqLw0KLWgxIHsgZm9udC1zaXplOiAxNDUlIH0NCi0NCi0vKiBUYWJsZSBjb2xvcnMgKi8NCi0uVGFibGVIZWFkaW5nQ29sb3IgICAgIHsgYmFja2dyb3VuZDogI0NDQ0NGRiB9IC8qIERhcmsgbWF1dmUgKi8NCi0uVGFibGVTdWJIZWFkaW5nQ29sb3IgIHsgYmFja2dyb3VuZDogI0VFRUVGRiB9IC8qIExpZ2h0IG1hdXZlICovDQotLlRhYmxlUm93Q29sb3IgICAgICAgICB7IGJhY2tncm91bmQ6ICNGRkZGRkYgfSAvKiBXaGl0ZSAqLw0KLQ0KLS8qIEZvbnQgdXNlZCBpbiBsZWZ0LWhhbmQgZnJhbWUgbGlzdHMgKi8NCi0uRnJhbWVUaXRsZUZvbnQgICB7IGZvbnQtc2l6ZTogMTAwJTsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYgfQ0KLS5GcmFtZUhlYWRpbmdGb250IHsgZm9udC1zaXplOiAgOTAlOyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiB9DQotLkZyYW1lSXRlbUZvbnQgICAgeyBmb250LXNpemU6ICA5MCU7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIH0NCi0NCi0vKiBOYXZpZ2F0aW9uIGJhciBmb250cyBhbmQgY29sb3JzICovDQotLk5hdkJhckNlbGwxICAgIHsgYmFja2dyb3VuZC1jb2xvcjojRUVFRUZGO30gLyogTGlnaHQgbWF1dmUgKi8NCi0uTmF2QmFyQ2VsbDFSZXYgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwOEI7fSAvKiBEYXJrIEJsdWUgKi8NCi0uTmF2QmFyRm9udDEgICAgeyBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6IzAwMDAwMDt9DQotLk5hdkJhckZvbnQxUmV2IHsgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGNvbG9yOiNGRkZGRkY7fQ0KLQ0KLS5OYXZCYXJDZWxsMiAgICB7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fQ0KLS5OYXZCYXJDZWxsMyAgICB7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fQ0KLQ0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2V4dC9pbmRleC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvZXh0L2luZGV4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1Njc1NjguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvZXh0L2luZGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotICAgIAk8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRSQU5TSVRJT05BTC8vRU4iPgotCQk8aHRtbCB4bWxuczp4YWxhbj0iaHR0cDovL3htbC5hcGFjaGUub3JnL3hzbHQiPgotPGhlYWQ+Ci08TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0JCTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBUaGlzIHBhZ2UgaXMgbWFkZSBhdmFpbGFibGUgdW5kZXIgbGljZW5zZS4gRm9yIGZ1bGwgZGV0YWlscyBzZWUgdGhlIExFR0FMIGluIHRoZSBkb2N1bWVudGF0aW9uIGJvb2sgdGhhdCBjb250YWlucyB0aGlzIHBhZ2UuIiA+Ci0KLSAgIAkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci0gICAJCTx0aXRsZT5XZWJTZXJ2aWNlcyBFeHRlbnNpb24gUG9pbnRzPC90aXRsZT4KLQkJPExJTksgUkVMPSJTVFlMRVNIRUVUIiBIUkVGPSIuLi8uLi9ib29rLmNzcyIgQ0hBUlNFVD0iSVNPLTg4NTktMSIgVFlQRT0idGV4dC9jc3MiPgotCQk8L2hlYWQ+Ci08Ym9keSBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzgwMDA4MCI+Ci08Y2VudGVyPgotPGgxPldlYlNlcnZpY2VzIEV4dGVuc2lvbiBQb2ludHMgPC9oMT4KLTwvY2VudGVyPlRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uIHBvaW50cyBjYW4gYmUgdXNlZCB0byBleHRlbmQgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgV1NUIFdlYiBzZXJ2aWNlcyBpbmZyYXN0cnVjdHVyZTogPGgzPgotPGEgbmFtZT0id2Vic2VydmljZSI+PC9hPldlYiBzZXJ2aWNlIEFQSTwvaDM+Ci08dWw+Ci08bGk+Ci08YSBocmVmPSJvcmdfZWNsaXBzZV93c3Rfd3Nfc2VydmljZV9wb2xpY3lfc2VydmljZXBvbGljeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuc2VydmljZXBvbGljeTwvYT4KLTwvbGk+Ci08bGk+Ci08YSBocmVmPSJvcmdfZWNsaXBzZV93c3Rfd3Nfc2VydmljZV9wb2xpY3lfdWlfc2VydmljZXBvbGljeXVpLmh0bWwiPm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5zZXJ2aWNlcG9saWN5dWk8L2E+Ci08L2xpPgotPC91bD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2V4dC9vcmdfZWNsaXBzZV93c3Rfd3Nfc2VydmljZV9wb2xpY3lfc2VydmljZXBvbGljeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvZXh0L29yZ19lY2xpcHNlX3dzdF93c19zZXJ2aWNlX3BvbGljeV9zZXJ2aWNlcG9saWN5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZGU1ODIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvZXh0L29yZ19lY2xpcHNlX3dzdF93c19zZXJ2aWNlX3BvbGljeV9zZXJ2aWNlcG9saWN5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMDUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPgotPEhFQUQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+U2VydmljZSBwb2xpY3k8L3RpdGxlPgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj5AaW1wb3J0IHVybCgiLi4vLi4vYm9vay5jc3MiKTs8L3N0eWxlPgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj5AaW1wb3J0IHVybCgiLi4vLi4vc2NoZW1hLmNzcyIpOzwvc3R5bGU+Ci08L0hFQUQ+Ci08Qk9EWT4KLTxIMSBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPlNlcnZpY2UgcG9saWN5PC9IMT4KLTxwPjwvcD4KLTxoNiBjbGFzcz0iQ2FwdGlvbkZpZ0NvbHVtbiBTY2hlbWFIZWFkZXIiPklkZW50aWZpZXI6IDwvaDY+b3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LnNlcnZpY2VQb2xpY3k8cD48L3A+Ci08aDYgY2xhc3M9IkNhcHRpb25GaWdDb2x1bW4gU2NoZW1hSGVhZGVyIj5TaW5jZTogPC9oNj4xLjAKLTxwPjwvcD4KLQotPGg2IGNsYXNzPSJDYXB0aW9uRmlnQ29sdW1uIFNjaGVtYUhlYWRlciI+RGVzY3JpcHRpb246IDwvaDY+VGhpcyBleHRlbnNpb24gYWxsb3dzIGV4dGVuZGVycyB0byBkZWZpbmUgc2VydmljZSBwb2xpY2llcy48cD4KLTxwPjwvcD4KLTxoNiBjbGFzcz0iQ2FwdGlvbkZpZ0NvbHVtbiBTY2hlbWFIZWFkZXIiPkNvbmZpZ3VyYXRpb24gTWFya3VwOjwvaDY+Ci08cD48L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLmV4dGVuc2lvbiI+ZXh0ZW5zaW9uPC9hPiAoPGEgaHJlZj0iI2Uuc2VydmljZVBvbGljeSI+c2VydmljZVBvbGljeTwvYT4rKSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBleHRlbnNpb248L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5wb2ludCZuYnNwO0NEQVRBICNSRVFVSVJFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmlkJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5uYW1lJm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUuc2VydmljZVBvbGljeSI+c2VydmljZVBvbGljeTwvYT4gKDxhIGhyZWY9IiNlLnBvbGljeSI+cG9saWN5PC9hPj8gLCA8YSBocmVmPSIjZS5lbnVtZXJhdGlvbiI+ZW51bWVyYXRpb248L2E+PyAsIDxhIGhyZWY9IiNlLmxvYWRMaXN0ZW5lciI+bG9hZExpc3RlbmVyPC9hPj8gLCA8YSBocmVmPSIjZS5lbmFibGVtZW50Ij5lbmFibGVtZW50PC9hPj8pKyZndDs8L3A+Ci08cD48L3A+Ci08YnI+PGJyPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5wb2xpY3kiPnBvbGljeTwvYT4gKDxhIGhyZWY9IiNlLmRlc2NyaXB0b3IiPmRlc2NyaXB0b3I8L2E+ICwgPGEgaHJlZj0iI2UucmVsYXRpb25zaGlwIj5yZWxhdGlvbnNoaXA8L2E+KiAsIDxhIGhyZWY9IiNlLnN0YXRlIj5zdGF0ZTwvYT4qKSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBwb2xpY3k8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5wYXJlbnRQb2xpY3lJZCZuYnNwO0NEQVRBICNJTVBMSUVEPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+aWQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjUkVRVUlSRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5lbnVtTGlzdElkJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5kZWZhdWx0RW51bUlkJm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5tdXRhYmxlJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KHRydWUgfCBmYWxzZSkgImZhbHNlIiZndDs8L3A+Ci08cD48L3A+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTxsaT48Yj5wYXJlbnRQb2xpY3lJZDwvYj4gLSBTcGVjaWZpZXMgdGhlIHBhcmVudCBwb2xpY3kgaWQgZm9yIHRoaXMgcG9saWN5LiAgSWYgdGhpcyBpcyBhIHJvb3QgcG9saWN5IHRoaXMgYXR0cmlidXRlIHNob3VsZCBub3QgYmUgc3BlY2lmaWVkLjwvbGk+Ci08bGk+PGI+aWQ8L2I+IC0gVGhlIHVuaXF1ZSBpZCBmb3IgdGhpcyBzZXJ2aWNlIHBvbGljeS48L2xpPgotPGxpPjxiPmVudW1MaXN0SWQ8L2I+IC0gSWYgdGhpcyBwb2xpY3kncyBzdGF0ZSBpcyBhc3NvY2lhdGVkIHdpdGggYW4gZW51bWVyYXRpb24gdGhlbiB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIGlkIG9mIHRoaXMgZW51bWVyYXRpb24uPC9saT4KLTxsaT48Yj5kZWZhdWx0RW51bUlkPC9iPiAtIFRoaXMgYXR0cmlidXRlIHNob3VsZCBvbmx5IGJlIHNwZWNpZmllZCBpZiB0aGUgZW51bUxpc3RJZCBpcyBhbHNvIHNwZWNpZmllZC4gIEl0IGlzIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgZW51bSB2YWx1ZSBkZWZpbmVkIGJ5IHRoZSBlbnVtZXJhdGlvbi48L2xpPgotPGxpPjxiPm11dGFibGU8L2I+IC0gSW5kaWNhdGVzIGlmIHRoaXMgcG9saWN5IGhhcyBtdXRhYmxlIGRhdGEgb3Igbm90LjwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUuZGVzY3JpcHRvciI+ZGVzY3JpcHRvcjwvYT4gRU1QVFkmZ3Q7PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUFUVExJU1QgZGVzY3JpcHRvcjwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmRlc2NyaXB0aW9uJm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5zaG9ydE5hbWUmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjSU1QTElFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmxvbmdOYW1lJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5jb250ZXh0SGVscElkJm5ic3A7Q0RBVEEgI0lNUExJRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5pY29uUGF0aCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NEQVRBICNJTVBMSUVEJmd0OzwvcD4KLTxwPjwvcD4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPmRlc2NyaXB0aW9uPC9iPiAtIEEgZGVzY3JpcHRpb24gb2YgdGhpcyBzZXJ2aWNlIHBvbGljeS48L2xpPgotPGxpPjxiPnNob3J0TmFtZTwvYj4gLSBUaGUgc2hvcnQgbmFtZSBvZiB0aGlzIHNlcnZpY2UgcG9saWN5LiAgTm90ZTogaWYgYSBzaG9ydCBuYW1lIGlzIG5vdCBzcGVjaWZpZWQgaXQgaXMgZGVmYXVsdGVkIHRvIHRoZSB2YWx1ZSBvZiB0aGUgbG9uZyBuYW1lLjwvbGk+Ci08bGk+PGI+bG9uZ05hbWU8L2I+IC0gVGhlIGxvbmcgbmFtZSBvZiB0aGlzIHNlcnZpY2UgcG9saWN5LiAgTm90ZTogaWYgYSBsb25nIG5hbWUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgaXQgaXMgZGVmYXVsdGVkIHRvIHRoZSBzaG9ydE5hbWUgdmFsdWUuPC9saT4KLTxsaT48Yj5jb250ZXh0SGVscElkPC9iPiAtIFRoZSBjb250ZXh0IGhlbHAgaWQgZm9yIHRoaXMgc2VydmljZSBwb2xpY3kgaWYgaXQgaXMgcmVxdWlyZWQuPC9saT4KLTxsaT48Yj5pY29uUGF0aDwvYj4gLSBBIHBsdWdpbiByZWxhdGl2ZSBwYXRoIHRvIHNvbWUgaWNvbiBmaWxlIGZvciB0aGlzIHNlcnZpY2UgcG9saWN5LjwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUucmVsYXRpb25zaGlwIj5yZWxhdGlvbnNoaXA8L2E+ICg8YSBocmVmPSIjZS50YXJnZXRQb2xpY3kiPnRhcmdldFBvbGljeTwvYT4rKSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCByZWxhdGlvbnNoaXA8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5lbnVtTGlzdCZuYnNwO0NEQVRBICNSRVFVSVJFRCZndDs8L3A+Ci08cD48L3A+Ci08cCBjbGFzcz0iQ29uZmlnTWFya3VwRWxlbWVudERlc2MiPgotU3BlY2lmaWVzIGEgc3RhdGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBzZXJ2aWNlIHBvbGljeSBhbmQgdGhlIHN0YXRlcyBvZiBvdGhlciBzZXJ2aWNlIHBvbGljaWVzLjwvcD4KLTxicj4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPmVudW1MaXN0PC9iPiAtIDwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUudGFyZ2V0UG9saWN5Ij50YXJnZXRQb2xpY3k8L2E+IEVNUFRZJmd0OzwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFBVFRMSVNUIHRhcmdldFBvbGljeTwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmlkJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI1JFUVVJUkVEPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+aXRlbUxpc3QmbmJzcDtDREFUQSAjUkVRVUlSRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08bGk+PGI+aWQ8L2I+IC0gPC9saT4KLTxsaT48Yj5pdGVtTGlzdDwvYj4gLSA8L2xpPgotPC91bD4KLTxicj48cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLmVudW1lcmF0aW9uIj5lbnVtZXJhdGlvbjwvYT4gKDxhIGhyZWY9IiNlLml0ZW0iPml0ZW08L2E+KykmZ3Q7PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUFUVExJU1QgZW51bWVyYXRpb248L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5kZWZhdWx0Jm5ic3A7Q0RBVEEgI0lNUExJRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5pZCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NEQVRBICNSRVFVSVJFRCZndDs8L3A+Ci08cD48L3A+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTxsaT48Yj5kZWZhdWx0PC9iPiAtIDwvbGk+Ci08bGk+PGI+aWQ8L2I+IC0gPC9saT4KLTwvdWw+Ci08YnI+PHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5pdGVtIj5pdGVtPC9hPiBFTVBUWSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBpdGVtPC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+aWQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjUkVRVUlSRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5zaG9ydE5hbWUmbmJzcDtDREFUQSAjSU1QTElFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmxvbmdOYW1lJm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08bGk+PGI+aWQ8L2I+IC0gPC9saT4KLTxsaT48Yj5zaG9ydE5hbWU8L2I+IC0gPC9saT4KLTxsaT48Yj5sb25nTmFtZTwvYj4gLSA8L2xpPgotPC91bD4KLTxicj48cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLmxvYWRMaXN0ZW5lciI+bG9hZExpc3RlbmVyPC9hPiBFTVBUWSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBsb2FkTGlzdGVuZXI8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5jbGFzcyZuYnNwO0NEQVRBICNJTVBMSUVEJmd0OzwvcD4KLTxwPjwvcD4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPmNsYXNzPC9iPiAtIEEgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBJUG9saWN5UGxhdGZvcm1Mb2FkTGlzdGVuZXIgaW50ZXJmYWNlLiAgVGhlIGxvYWQgbWV0aG9kIG9mIHRoaXMgY2xhc3Mgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgU2VydmljZVBvbGljeSBmcmFtZXdvcmsgaXMgZmlyc3QgbG9hZGVkLjwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUuc3RhdGUiPnN0YXRlPC9hPiBFTVBUWSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBzdGF0ZTwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmtleSZuYnNwOyZuYnNwOyZuYnNwO0NEQVRBICNSRVFVSVJFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPnZhbHVlJm5ic3A7Q0RBVEEgI1JFUVVJUkVEJmd0OzwvcD4KLTxwPjwvcD4KLTxwIGNsYXNzPSJDb25maWdNYXJrdXBFbGVtZW50RGVzYyI+Ci1UaGlzIGVsZW1lbnQgYWxsb3dzIHRoZSBleHRlbmRlciB0byBkZWZpbmUgc3RhdGUgZGF0YSBmb3IgdGhpcyBwb2xpY3kuPC9wPgotPGJyPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08bGk+PGI+a2V5PC9iPiAtIFRoZSBrZXkgZm9yIHRoaXMgc3RhdGUgZGF0YS48L2xpPgotPGxpPjxiPnZhbHVlPC9iPiAtIFRoZSB2YWx1ZSBvZiB0aGlzIHN0YXRlIGRhdGEuPC9saT4KLTwvdWw+Ci08YnI+PHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5lbmFibGVtZW50Ij5lbmFibGVtZW50PC9hPiAoPGEgaHJlZj0iI2Uubm90Ij5ub3Q8L2E+ICwgPGEgaHJlZj0iI2UuYW5kIj5hbmQ8L2E+ICwgPGEgaHJlZj0iI2Uub3IiPm9yPC9hPiAsIDxhIGhyZWY9IiNlLmluc3RhbmNlb2YiPmluc3RhbmNlb2Y8L2E+ICwgPGEgaHJlZj0iI2UudGVzdCI+dGVzdDwvYT4gLCA8YSBocmVmPSIjZS5zeXN0ZW1UZXN0Ij5zeXN0ZW1UZXN0PC9hPiAsIDxhIGhyZWY9IiNlLmVxdWFscyI+ZXF1YWxzPC9hPiAsIDxhIGhyZWY9IiNlLmNvdW50Ij5jb3VudDwvYT4gLCA8YSBocmVmPSIjZS53aXRoIj53aXRoPC9hPiAsIDxhIGhyZWY9IiNlLnJlc29sdmUiPnJlc29sdmU8L2E+ICwgPGEgaHJlZj0iI2UuYWRhcHQiPmFkYXB0PC9hPiAsIDxhIGhyZWY9IiNlLml0ZXJhdGUiPml0ZXJhdGU8L2E+ICwgPGEgaHJlZj0iI2UucmVmZXJlbmNlIj5yZWZlcmVuY2U8L2E+KSomZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLUEgZ2VuZXJpYyByb290IGVsZW1lbnQuIFRoZSBlbGVtZW50IGNhbiBiZSB1c2VkIGluc2lkZSBhbiBleHRlbnNpb24gcG9pbnQgdG8gZGVmaW5lIGl0cyBlbmFibGVtZW50IGV4cHJlc3Npb24uCi0gICAgICAgICAgICBUaGUgY2hpbGRyZW4gb2YgYW4gZW5hYmxlbWVudCBleHByZXNzaW9uIGFyZSBjb21iaW5lZCB1c2luZyB0aGUgYW5kIG9wZXJhdG9yLjwvcD4KLTxicj48YnI+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLm5vdCI+bm90PC9hPiAoPGEgaHJlZj0iI2Uubm90Ij5ub3Q8L2E+IHwgPGEgaHJlZj0iI2UuYW5kIj5hbmQ8L2E+IHwgPGEgaHJlZj0iI2Uub3IiPm9yPC9hPiB8IDxhIGhyZWY9IiNlLmluc3RhbmNlb2YiPmluc3RhbmNlb2Y8L2E+IHwgPGEgaHJlZj0iI2UudGVzdCI+dGVzdDwvYT4gfCA8YSBocmVmPSIjZS5zeXN0ZW1UZXN0Ij5zeXN0ZW1UZXN0PC9hPiB8IDxhIGhyZWY9IiNlLmVxdWFscyI+ZXF1YWxzPC9hPiB8IDxhIGhyZWY9IiNlLmNvdW50Ij5jb3VudDwvYT4gfCA8YSBocmVmPSIjZS53aXRoIj53aXRoPC9hPiB8IDxhIGhyZWY9IiNlLnJlc29sdmUiPnJlc29sdmU8L2E+IHwgPGEgaHJlZj0iI2UuYWRhcHQiPmFkYXB0PC9hPiB8IDxhIGhyZWY9IiNlLml0ZXJhdGUiPml0ZXJhdGU8L2E+IHwgPGEgaHJlZj0iI2UucmVmZXJlbmNlIj5yZWZlcmVuY2U8L2E+KSZndDs8L3A+Ci08cD48L3A+Ci08cCBjbGFzcz0iQ29uZmlnTWFya3VwRWxlbWVudERlc2MiPgotVGhpcyBlbGVtZW50IHJlcHJlc2VudCBhIE5PVCBvcGVyYXRpb24gb24gdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIGl0J3Mgc3ViLWVsZW1lbnQgZXhwcmVzc2lvbi48L3A+Ci08YnI+PGJyPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5hbmQiPmFuZDwvYT4gKDxhIGhyZWY9IiNlLm5vdCI+bm90PC9hPiAsIDxhIGhyZWY9IiNlLmFuZCI+YW5kPC9hPiAsIDxhIGhyZWY9IiNlLm9yIj5vcjwvYT4gLCA8YSBocmVmPSIjZS5pbnN0YW5jZW9mIj5pbnN0YW5jZW9mPC9hPiAsIDxhIGhyZWY9IiNlLnRlc3QiPnRlc3Q8L2E+ICwgPGEgaHJlZj0iI2Uuc3lzdGVtVGVzdCI+c3lzdGVtVGVzdDwvYT4gLCA8YSBocmVmPSIjZS5lcXVhbHMiPmVxdWFsczwvYT4gLCA8YSBocmVmPSIjZS5jb3VudCI+Y291bnQ8L2E+ICwgPGEgaHJlZj0iI2Uud2l0aCI+d2l0aDwvYT4gLCA8YSBocmVmPSIjZS5yZXNvbHZlIj5yZXNvbHZlPC9hPiAsIDxhIGhyZWY9IiNlLmFkYXB0Ij5hZGFwdDwvYT4gLCA8YSBocmVmPSIjZS5pdGVyYXRlIj5pdGVyYXRlPC9hPiAsIDxhIGhyZWY9IiNlLnJlZmVyZW5jZSI+cmVmZXJlbmNlPC9hPikqJmd0OzwvcD4KLTxwPjwvcD4KLTxwIGNsYXNzPSJDb25maWdNYXJrdXBFbGVtZW50RGVzYyI+Ci1UaGlzIGVsZW1lbnQgcmVwcmVzZW50IGFuIEFORCBvcGVyYXRpb24gb24gdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIGFsbCBpdCdzIHN1Yi1lbGVtZW50cyBleHByZXNzaW9ucy48L3A+Ci08YnI+PGJyPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5vciI+b3I8L2E+ICg8YSBocmVmPSIjZS5ub3QiPm5vdDwvYT4gLCA8YSBocmVmPSIjZS5hbmQiPmFuZDwvYT4gLCA8YSBocmVmPSIjZS5vciI+b3I8L2E+ICwgPGEgaHJlZj0iI2UuaW5zdGFuY2VvZiI+aW5zdGFuY2VvZjwvYT4gLCA8YSBocmVmPSIjZS50ZXN0Ij50ZXN0PC9hPiAsIDxhIGhyZWY9IiNlLnN5c3RlbVRlc3QiPnN5c3RlbVRlc3Q8L2E+ICwgPGEgaHJlZj0iI2UuZXF1YWxzIj5lcXVhbHM8L2E+ICwgPGEgaHJlZj0iI2UuY291bnQiPmNvdW50PC9hPiAsIDxhIGhyZWY9IiNlLndpdGgiPndpdGg8L2E+ICwgPGEgaHJlZj0iI2UucmVzb2x2ZSI+cmVzb2x2ZTwvYT4gLCA8YSBocmVmPSIjZS5hZGFwdCI+YWRhcHQ8L2E+ICwgPGEgaHJlZj0iI2UuaXRlcmF0ZSI+aXRlcmF0ZTwvYT4gLCA8YSBocmVmPSIjZS5yZWZlcmVuY2UiPnJlZmVyZW5jZTwvYT4pKiZndDs8L3A+Ci08cD48L3A+Ci08cCBjbGFzcz0iQ29uZmlnTWFya3VwRWxlbWVudERlc2MiPgotVGhpcyBlbGVtZW50IHJlcHJlc2VudCBhbiAgT1Igb3BlcmF0aW9uIG9uIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyBhbGwgaXQncyBzdWItZWxlbWVudCBleHByZXNzaW9ucy48L3A+Ci08YnI+PGJyPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5pbnN0YW5jZW9mIj5pbnN0YW5jZW9mPC9hPiBFTVBUWSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBpbnN0YW5jZW9mPC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+dmFsdWUmbmJzcDtDREFUQSAjUkVRVUlSRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLVRoaXMgZWxlbWVudCBpcyB1c2VkIHRvIHBlcmZvcm0gYW4gaW5zdGFuY2VvZiBjaGVjayBvZiB0aGUgb2JqZWN0IGluIGZvY3VzLiBUaGUgZXhwcmVzc2lvbiByZXR1cm5zCi0gICAgICAgICAgICBFdmFsdWF0aW9uUmVzdWx0LlRSVUUgaWYgdGhlIG9iamVjdCdzIHR5cGUgaXMgYSBzdWIgdHlwZSBvZiB0aGUgdHlwZSBzcGVjaWZpZWQgYnkgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4KLSAgICAgICAgICAgIE90aGVyd2lzZSBFdmFsdWF0aW9uUmVzdWx0LkZBTFNFIGlzIHJldHVybmVkLjwvcD4KLTxicj4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPnZhbHVlPC9iPiAtIGEgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgYSBjbGFzcyBvciBpbnRlcmZhY2UuPC9saT4KLTwvdWw+Ci08YnI+PHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS50ZXN0Ij50ZXN0PC9hPiBFTVBUWSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCB0ZXN0PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+cHJvcGVydHkmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjUkVRVUlSRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5hcmdzJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij52YWx1ZSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NEQVRBICNJTVBMSUVEPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+Zm9yY2VQbHVnaW5BY3RpdmF0aW9uJm5ic3A7KHRydWUgfCBmYWxzZSkgJmd0OzwvcD4KLTxwPjwvcD4KLTxwIGNsYXNzPSJDb25maWdNYXJrdXBFbGVtZW50RGVzYyI+Ci1UaGlzIGVsZW1lbnQgaXMgdXNlZCB0byBldmFsdWF0ZSB0aGUgcHJvcGVydHkgc3RhdGUgb2YgdGhlIG9iamVjdCBpbiBmb2N1cy4gVGhlIHNldCBvZgotICAgICAgICAgICAgdGVzdGFibGUgcHJvcGVydGllcyBjYW4gYmUgZXh0ZW5kZWQgdXNpbmcgdGhlIHByb3BlcnkgdGVzdGVyIGV4dGVuc2lvbiBwb2ludC4gVGhlIHRlc3QKLSAgICAgICAgICAgIGV4cHJlc3Npb24gcmV0dXJucyBFdmFsdWF0aW9uUmVzdWx0Lk5PVF9MT0FERUQgaWYgdGhlIHByb3BlcnR5IHRlc3RlciBkb2luZyB0aGUgYWN0dWFsCi0gICAgICAgICAgICB0ZXN0aW5nIGlzbid0IGxvYWRlZCB5ZXQgYW5kIHRoZSBhdHRyaWJ1dGUgZm9yY2VQbHVnaW5BY3RpdmF0aW9uIGlzIHNldCB0byBmYWxzZS4gCi0gICAgICAgICAgICBJZiBmb3JjZVBsdWdpbkFjdGl2YXRpb24gaXMgc2V0IHRvIHRydWUgYW5kIHRoZSBldmFsdWF0aW9uIGNvbnRleHQgdXNlZCB0byBldmFsdWF0ZQotICAgICAgICAgICAgdGhpcyBleHByZXNzaW9uIHN1cHBvcnQgcGx1Zy1pbiBhY3RpdmF0aW9uIHRoZW4gZXZhbHVhdGluZyB0aGUgcHJvcGVydHkgd2lsbCByZXN1bHQgaW4gCi0gICAgICAgICAgICBhY3RpdmF0aW5nIHRoZSBwbHVnLWluIGRlZmluaW5nIHRoZSB0ZXN0ZXIuPC9wPgotPGJyPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08bGk+PGI+cHJvcGVydHk8L2I+IC0gdGhlIG5hbWUgb2YgYW4gb2JqZWN0J3MgcHJvcGVydHkgdG8gdGVzdC48L2xpPgotPGxpPjxiPmFyZ3M8L2I+IC0gYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBwcm9wZXJ0eSB0ZXN0ZXIuIE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgc2VwZXJhdGVkCi0gICAgICAgICAgICAgICAgICBieSBjb21tYXMuIEVhY2ggaW5kaXZpZHVhbCBhcmd1bWVudCBpcyBjb252ZXJ0ZWQgaW50byBhIEphdmEgYmFzZSB0eXBlIHVzaW5nIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAgICBydWxlcyBhcyBkZWZpbmVkIGZvciB0aGUgdmFsdWUgYXR0cmlidXRlIG9mIHRoZSB0ZXN0IGV4cHJlc3Npb24uPC9saT4KLTxsaT48Yj52YWx1ZTwvYj4gLSB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIHByb3BlcnR5LiBDYW4gYmUgb21pdHRlZCBpZiB0aGUgcHJvcGVydHkgCi0gICAgICAgICAgICAgICAgICBpcyBhIGJvb2xlYW4gcHJvcGVydHkuIFRoZSB0ZXN0IGV4cHJlc3Npb24gaXMgc3VwcG9zZWQgdG8gcmV0dXJuIAotRXZhbHVhdGlvblJlc3VsdC5UUlVFIGlmIHRoZSBwcm9wZXJ0eSBtYXRjaGVzIHRoZSB2YWx1ZSBhbmQgRXZhbHVhdGlvblJlc3VsdC5GQUxTRQotb3RoZXJ3aXNlLiBUaGUgdmFsdWUgYXR0cmlidXRlIGlzIGNvbnZlcnRlZCBpbnRvIGEgSmF2YSBiYXNlIHR5cGUgdXNpbmcgdGhlIGZvbGxvd2luZwotcnVsZXM6Ci08dWw+Ci0gPGxpPnRoZSBzdHJpbmcgJnF1b3Q7dHJ1ZSZxdW90OyBpcyBjb252ZXJ0ZWQgaW50byBCb29sZWFuLlRSVUU8L2xpPgotIDxsaT50aGUgc3RyaW5nICZxdW90O2ZhbHNlJnF1b3Q7IGlzIGNvbnZlcnRlZCBpbnRvIEJvb2xlYW4uRkFMU0U8L2xpPgotIDxsaT5pZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGEgZG90IHRoZW4gdGhlIGludGVycHJldGVyIHRyaWVzIHRvIGNvbnZlcnQKLSB0aGUgdmFsdWUgaW50byBhIEZsb2F0IG9iamVjdC4gSWYgdGhpcyBmYWlscyB0aGUgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYQotIGphdmEubGFuZy5TdHJpbmc8L2xpPgotIDxsaT5pZiB0aGUgc3RyaW5nIG9ubHkgY29uc2lzdHMgb2YgbnVtYmVycyB0aGVuIHRoZSBpbnRlcnByZXRlcgotIGNvbnZlcnRzIHRoZSB2YWx1ZSBpbiBhbiBJbnRlZ2VyIG9iamVjdC48L2xpPgotIDxsaT5pbiBhbGwgb3RoZXIgY2FzZXMgdGhlIHN0cmluZyBpcyB0cmVhdGVkIGFzIGEgamF2YS5sYW5nLlN0cmluZzwvbGk+Ci0gPGxpPnRoZSBjb252ZXJzaW9uIG9mIHRoZSBzdHJpbmcgaW50byBhIEJvb2xlYW4sIEZsb2F0LCBvciBJbnRlZ2VyIGNhbgotIGJlIHN1cHByZXNzZWQgYnkgc3Vycm91bmRpbmcgdGhlIHN0cmluZyB3aXRoIHNpbmdsZSBxdW90ZXMuIEZvcgotIGV4YW1wbGUsIHRoZSBhdHRyaWJ1dGUgdmFsdWU9JnF1b3Q7J3RydWUnJnF1b3Q7IGlzIGNvbnZlcnRlZCBpbnRvIHRoZQotIHN0cmluZyAmcXVvdDt0cnVlJnF1b3Q7PC9saT4KLTwvdWw+PC9saT4KLTxsaT48Yj5mb3JjZVBsdWdpbkFjdGl2YXRpb248L2I+IC0gYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGx1Zy1pbiBjb250cmlidXRpbmcgdGhlIHByb3BlcnR5IHRlc3RlcgotICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGxvYWRlZCBpZiBuZWNlc3NhcnkuIEFzIHN1Y2gsIHRoaXMgZmxhZyBzaG91bGQgYmUgdXNlZCBqdWRpY2lvdXNseSwgCi0gICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBwbHVnLWluIGFjdGl2YXRpb25zLiBNb3N0IGNsaWVudHMgc2hvdWxkIGF2b2lkCi0gICAgICAgICAgICAgICAgICBzZXR0aW5nIHRoaXMgZmxhZyB0byB0cnVlLiBUaGlzIGZsYWcgaXMgb25seSBob25vcmVkIGlmIHRoZSBldmFsdWF0aW9uIGNvbnRleHQKLSAgICAgICAgICAgICAgICAgIHVzZWQgdG8gZXZhbHVhdGUgdGhpcyBleHByZXNzaW9uIGFsbG93cyBwbHVnLWluIGFjdGl2YXRpb24uIE90aGVyd2lzZSB0aGUgZmxhZwotICAgICAgICAgICAgICAgICAgaXMgaWdub3JlZCBhbmQgbm8gcGx1Zy1pbiBsb2FkaW5nIHRha2VzIHBsYWNlLjwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUuc3lzdGVtVGVzdCI+c3lzdGVtVGVzdDwvYT4gRU1QVFkmZ3Q7PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUFUVExJU1Qgc3lzdGVtVGVzdDwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPnByb3BlcnR5Jm5ic3A7Q0RBVEEgI1JFUVVJUkVEPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+dmFsdWUmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjUkVRVUlSRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLVRlc3RzIGEgc3lzdGVtIHByb3BlcnR5IGJ5IGNhbGxpbmcgdGhlIFN5c3RlbS5nZXRQcm9wZXJ0eSBtZXRob2QgYW5kIGNvbXBhcmVzIHRoZSByZXN1bHQKLSAgICAgICAgICAgIHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZCB0aHJvdWdoIHRoZSB2YWx1ZSBhdHRyaWJ1dGUuPC9wPgotPGJyPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08bGk+PGI+cHJvcGVydHk8L2I+IC0gdGhlIG5hbWUgb2YgYW4gc3lzdGVtIHByb3BlcnR5IHRvIHRlc3QuPC9saT4KLTxsaT48Yj52YWx1ZTwvYj4gLSB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIHByb3BlcnR5LiBUaGUgdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYXMgYSBzdHJpbmcgdmFsdWUuPC9saT4KLTwvdWw+Ci08YnI+PHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5lcXVhbHMiPmVxdWFsczwvYT4gRU1QVFkmZ3Q7PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUFUVExJU1QgZXF1YWxzPC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+dmFsdWUmbmJzcDtDREFUQSAjUkVRVUlSRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLVRoaXMgZWxlbWVudCBpcyB1c2VkIHRvIHBlcmZvcm0gYW4gZXF1YWxzIGNoZWNrIG9mIHRoZSBvYmplY3QgaW4gZm9jdXMuIFRoZSBleHByZXNzaW9uIHJldHVybnMKLSAgICAgICAgICAgIEV2YWx1YXRpb25SZXN1bHQuVFJVRSBpZiB0aGUgb2JqZWN0IGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGUgYXR0cmlidXRlIHZhbHVlLiBPdGhlcndpc2UKLSAgICAgICAgICAgIEV2YWx1YXRpb25SZXN1bHQuRkFMU0UgaXMgcmV0dXJuZWQuPC9wPgotPGJyPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08bGk+PGI+dmFsdWU8L2I+IC0gdGhlIGV4cGVjdGVkIHZhbHVlLiBUaGUgdmFsdWUgcHJvdmlkZWQgYXMgYSBzdHJpbmcgaXMgY29udmVydGVkIGludG8KLSAgICAgICAgICAgICAgICAgIGEgSmF2YSBiYXNlIHR5cGUgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMgZm9yIHRoZSB2YWx1ZSBhdHRyaWJ1dGUgb2YgdGhlIHRlc3QgZXhwcmVzc2lvbi48L2xpPgotPC91bD4KLTxicj48cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLmNvdW50Ij5jb3VudDwvYT4gRU1QVFkmZ3Q7PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUFUVExJU1QgY291bnQ8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij52YWx1ZSZuYnNwO0NEQVRBICNSRVFVSVJFRCZndDs8L3A+Ci08cD48L3A+Ci08cCBjbGFzcz0iQ29uZmlnTWFya3VwRWxlbWVudERlc2MiPgotVGhpcyBlbGVtZW50IGlzIHVzZWQgdG8gdGVzdCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY29sbGVjdGlvbi48L3A+Ci08YnI+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTxsaT48Yj52YWx1ZTwvYj4gLSBhbiBleHByZXNzaW9uIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIGxpc3QuIEZvbGxvd2luZyB3aWxkY2FyZAotICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBjYW4gYmUgdXNlZDoKLSAgICAgICAgICAgICAgICAgIDxkbD4KLSAgICAgICAgICAgICAgICAgICAgPGR0Pio8L2R0PiA8ZGQ+YW55IG51bWJlciBvZiBlbGVtZW50czwvZGQ+Ci0gICAgICAgICAgICAgICAgICAgIDxkdD4/PC9kdD4gPGRkPm5vIGVsZW1lbnRzIG9yIG9uZSBlbGVtZW50PC9kZD4KLSAgICAgICAgICAgICAgICAgICAgPGR0Pis8L2R0PiA8ZGQ+b25lIG9yIG1vcmUgZWxlbWVudHM8L2RkPgotICAgICAgICAgICAgICAgICAgICA8ZHQ+ITwvZHQ+IDxkZD5ubyBlbGVtZW50czwvZGQ+Ci0gICAgICAgICAgICAgICAgICAgIDxkdD5pbnRlZ2VyIHZhbHVlPC9kdD4gPGRkPnRoZSBsaXN0IG11c3QgY29udGFpbiB0aGUgZXhhY3QgbnVtYmVyIG9mIGVsZW1lbnRzPC9kZD4KLSAgICAgICAgICAgICAgICAgIDwvZGw+PC9saT4KLTwvdWw+Ci08YnI+PHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS53aXRoIj53aXRoPC9hPiAoPGEgaHJlZj0iI2Uubm90Ij5ub3Q8L2E+ICwgPGEgaHJlZj0iI2UuYW5kIj5hbmQ8L2E+ICwgPGEgaHJlZj0iI2Uub3IiPm9yPC9hPiAsIDxhIGhyZWY9IiNlLmluc3RhbmNlb2YiPmluc3RhbmNlb2Y8L2E+ICwgPGEgaHJlZj0iI2UudGVzdCI+dGVzdDwvYT4gLCA8YSBocmVmPSIjZS5zeXN0ZW1UZXN0Ij5zeXN0ZW1UZXN0PC9hPiAsIDxhIGhyZWY9IiNlLmVxdWFscyI+ZXF1YWxzPC9hPiAsIDxhIGhyZWY9IiNlLmNvdW50Ij5jb3VudDwvYT4gLCA8YSBocmVmPSIjZS53aXRoIj53aXRoPC9hPiAsIDxhIGhyZWY9IiNlLnJlc29sdmUiPnJlc29sdmU8L2E+ICwgPGEgaHJlZj0iI2UuYWRhcHQiPmFkYXB0PC9hPiAsIDxhIGhyZWY9IiNlLml0ZXJhdGUiPml0ZXJhdGU8L2E+ICwgPGEgaHJlZj0iI2UucmVmZXJlbmNlIj5yZWZlcmVuY2U8L2E+KSomZ3Q7PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUFUVExJU1Qgd2l0aDwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPnZhcmlhYmxlJm5ic3A7Q0RBVEEgI1JFUVVJUkVEJmd0OzwvcD4KLTxwPjwvcD4KLTxwIGNsYXNzPSJDb25maWdNYXJrdXBFbGVtZW50RGVzYyI+Ci1UaGlzIGVsZW1lbnQgY2hhbmdlcyB0aGUgb2JqZWN0IHRvIGJlIGluc3BlY3RlZCBmb3IgYWxsIGl0cyBjaGlsZCBlbGVtZW50IHRvIHRoZSBvYmplY3QKLSAgICAgICAgICAgIHJlZmVyZW5jZWQgYnkgdGhlIGdpdmVuIHZhcmlhYmxlLiBJZiB0aGUgdmFyaWFibGUgY2FuIG5vdCBiZSByZXNvbHZlZCB0aGVuIHRoZSBleHByZXNzaW9uCi0gICAgICAgICAgICB3aWxsIHRocm93IGEgRXhwcmVzc2lvbkV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgaXQuIFRoZSBjaGlsZHJlbiBvZiBhIHdpdGggZXhwcmVzc2lvbiAKLSAgICAgICAgICAgIGFyZSBjb21iaW5lZCB1c2luZyB0aGUgYW5kIG9wZXJhdG9yLjwvcD4KLTxicj4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPnZhcmlhYmxlPC9iPiAtIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB0byBiZSB1c2VkIGZvciBmdXJ0aGVyIGluc3BlY3Rpb24uIEl0IGlzIHVwIHRvIHRoZSBldmFsdWF0b3IKLSAgICAgICAgICAgICAgICAgIG9mIGFuIGV4dGVuc2lvbiBwb2ludCB0byBwcm92aWRlIHRoZSB2YXJpYWJsZSBpbiB0aGUgdmFyaWFibGUgcG9vbC48L2xpPgotPC91bD4KLTxicj48cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLnJlc29sdmUiPnJlc29sdmU8L2E+ICg8YSBocmVmPSIjZS5ub3QiPm5vdDwvYT4gLCA8YSBocmVmPSIjZS5hbmQiPmFuZDwvYT4gLCA8YSBocmVmPSIjZS5vciI+b3I8L2E+ICwgPGEgaHJlZj0iI2UuaW5zdGFuY2VvZiI+aW5zdGFuY2VvZjwvYT4gLCA8YSBocmVmPSIjZS50ZXN0Ij50ZXN0PC9hPiAsIDxhIGhyZWY9IiNlLnN5c3RlbVRlc3QiPnN5c3RlbVRlc3Q8L2E+ICwgPGEgaHJlZj0iI2UuZXF1YWxzIj5lcXVhbHM8L2E+ICwgPGEgaHJlZj0iI2UuY291bnQiPmNvdW50PC9hPiAsIDxhIGhyZWY9IiNlLndpdGgiPndpdGg8L2E+ICwgPGEgaHJlZj0iI2UucmVzb2x2ZSI+cmVzb2x2ZTwvYT4gLCA8YSBocmVmPSIjZS5hZGFwdCI+YWRhcHQ8L2E+ICwgPGEgaHJlZj0iI2UuaXRlcmF0ZSI+aXRlcmF0ZTwvYT4gLCA8YSBocmVmPSIjZS5yZWZlcmVuY2UiPnJlZmVyZW5jZTwvYT4pKiZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCByZXNvbHZlPC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+dmFyaWFibGUmbmJzcDtDREFUQSAjUkVRVUlSRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5hcmdzJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLVRoaXMgZWxlbWVudCBjaGFuZ2VzIHRoZSBvYmplY3QgdG8gYmUgaW5zcGVjdGVkIGZvciBhbGwgaXRzIGNoaWxkIGVsZW1lbnQgdG8gdGhlIG9iamVjdAotICAgICAgICAgICAgcmVmZXJlbmNlZCBieSB0aGUgZ2l2ZW4gdmFyaWFibGUuIElmIHRoZSB2YXJpYWJsZSBjYW4gbm90IGJlIHJlc29sdmVkIHRoZW4gdGhlIGV4cHJlc3Npb24KLSAgICAgICAgICAgIHdpbGwgdGhyb3cgYSBFeHByZXNzaW9uRXhjZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBpdC4gVGhlIGNoaWxkcmVuIG9mIGEgd2l0aCBleHByZXNzaW9uIAotICAgICAgICAgICAgYXJlIGNvbWJpbmVkIHVzaW5nIHRoZSBhbmQgb3BlcmF0b3IuPC9wPgotPGJyPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08bGk+PGI+dmFyaWFibGU8L2I+IC0gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIHJlc29sdmVkLiBUaGlzIHZhcmlhYmxlIGlzIHRoZW4gdXNlZCBhcyB0aGUgb2JqZWN0IGluIGZvY3VzCi0gICAgICAgICAgICAgICAgICBmb3IgY2hpbGQgZWxlbWVudCBldmFsdWF0aW9uLiBJdCBpcyB1cCB0byB0aGUgZXZhbHVhdG9yIG9mIGFuIGV4dGVuc2lvbiBwb2ludCB0byBwcm92aWRlIGEgCi0gICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIHZhcmlhYmxlIHJlc29sdmVyIChzZWUgSVZhcmlhYmxlUmVzb2x2ZXIpIHRocm91Z2ggdGhlIGV2YWx1YXRpb24gY29udGV4dCBwYXNzZWQKLSAgICAgICAgICAgICAgICAgIHRvIHRoZSByb290IGV4cHJlc3Npb24gZWxlbWVudCB3aGVuIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24uPC9saT4KLTxsaT48Yj5hcmdzPC9iPiAtIGFkZGl0aW9uYWwgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgdmFyaWFibGUgcmVzb2x2ZXIuIE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgc2VwZXJhdGVkCi0gICAgICAgICAgICAgICAgICBieSBjb21tYXMuIEVhY2ggaW5kaXZpZHVhbCBhcmd1bWVudCBpcyBjb252ZXJ0ZWQgaW50byBhIEphdmEgYmFzZSB0eXBlIHVzaW5nIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAgICBydWxlcyBhcyBkZWZpbmVkIGZvciB0aGUgdmFsdWUgYXR0cmlidXRlIG9mIHRoZSB0ZXN0IGV4cHJlc3Npb24uPC9saT4KLTwvdWw+Ci08YnI+PHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5hZGFwdCI+YWRhcHQ8L2E+ICg8YSBocmVmPSIjZS5ub3QiPm5vdDwvYT4gLCA8YSBocmVmPSIjZS5hbmQiPmFuZDwvYT4gLCA8YSBocmVmPSIjZS5vciI+b3I8L2E+ICwgPGEgaHJlZj0iI2UuaW5zdGFuY2VvZiI+aW5zdGFuY2VvZjwvYT4gLCA8YSBocmVmPSIjZS50ZXN0Ij50ZXN0PC9hPiAsIDxhIGhyZWY9IiNlLnN5c3RlbVRlc3QiPnN5c3RlbVRlc3Q8L2E+ICwgPGEgaHJlZj0iI2UuZXF1YWxzIj5lcXVhbHM8L2E+ICwgPGEgaHJlZj0iI2UuY291bnQiPmNvdW50PC9hPiAsIDxhIGhyZWY9IiNlLndpdGgiPndpdGg8L2E+ICwgPGEgaHJlZj0iI2UucmVzb2x2ZSI+cmVzb2x2ZTwvYT4gLCA8YSBocmVmPSIjZS5hZGFwdCI+YWRhcHQ8L2E+ICwgPGEgaHJlZj0iI2UuaXRlcmF0ZSI+aXRlcmF0ZTwvYT4gLCA8YSBocmVmPSIjZS5yZWZlcmVuY2UiPnJlZmVyZW5jZTwvYT4pKiZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBhZGFwdDwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPnR5cGUmbmJzcDtDREFUQSAjUkVRVUlSRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLVRoaXMgZWxlbWVudCBpcyB1c2VkIHRvIGFkYXB0IHRoZSBvYmplY3QgaW4gZm9jdXMgdG8gdGhlIHR5cGUgc3BlY2lmaWVkIGJ5IHRoZSBhdHRyaWJ1dGUKLSAgICAgICAgICAgIHR5cGUuIFRoZSBleHByZXNzaW9uIHJldHVybnMgbm90IGxvYWRlZCBpZiBlaXRoZXIgdGhlIGFkYXB0ZXIgb3IgdGhlIHR5cGUgcmVmZXJlbmNlZCBpc24ndAotICAgICAgICAgICAgbG9hZGVkIHlldC4gSXQgdGhyb3dzIGEgRXhwcmVzc2lvbkV4Y2VwdGlvbiBkdXJpbmcgZXZhbHVhdGlvbiBpZiB0aGUgdHlwZSBuYW1lIGRvZXNuJ3QgZXhpc3QgCi0gICAgICAgICAgICBhdCBhbGwuIFRoZSBjaGlsZHJlbiBvZiBhbiBhZGFwdCBleHByZXNzaW9uIGFyZSBjb21iaW5lZCB1c2luZyB0aGUgYW5kIG9wZXJhdG9yLjwvcD4KLTxicj4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPnR5cGU8L2I+IC0gdGhlIHR5cGUgdG8gd2hpY2ggdGhlIG9iamVjdCBpbiBmb2N1cyBpcyB0byBiZSBhZGFwdGVkLjwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUuaXRlcmF0ZSI+aXRlcmF0ZTwvYT4gKDxhIGhyZWY9IiNlLm5vdCI+bm90PC9hPiAsIDxhIGhyZWY9IiNlLmFuZCI+YW5kPC9hPiAsIDxhIGhyZWY9IiNlLm9yIj5vcjwvYT4gLCA8YSBocmVmPSIjZS5pbnN0YW5jZW9mIj5pbnN0YW5jZW9mPC9hPiAsIDxhIGhyZWY9IiNlLnRlc3QiPnRlc3Q8L2E+ICwgPGEgaHJlZj0iI2Uuc3lzdGVtVGVzdCI+c3lzdGVtVGVzdDwvYT4gLCA8YSBocmVmPSIjZS5lcXVhbHMiPmVxdWFsczwvYT4gLCA8YSBocmVmPSIjZS5jb3VudCI+Y291bnQ8L2E+ICwgPGEgaHJlZj0iI2Uud2l0aCI+d2l0aDwvYT4gLCA8YSBocmVmPSIjZS5yZXNvbHZlIj5yZXNvbHZlPC9hPiAsIDxhIGhyZWY9IiNlLmFkYXB0Ij5hZGFwdDwvYT4gLCA8YSBocmVmPSIjZS5pdGVyYXRlIj5pdGVyYXRlPC9hPiAsIDxhIGhyZWY9IiNlLnJlZmVyZW5jZSI+cmVmZXJlbmNlPC9hPikqJmd0OzwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFBVFRMSVNUIGl0ZXJhdGU8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5vcGVyYXRvciZuYnNwOyhvcnxhbmQpIDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmlmRW1wdHkmbmJzcDsmbmJzcDsodHJ1ZSB8IGZhbHNlKSAmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLVRoaXMgZWxlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciBhIHZhcmlhYmxlIHRoYXQgaXMgb2YgdHlwZSBqYXZhLnV0aWwuQ29sbGVjdGlvbi4gSWYKLSAgICAgICAgICAgIHRoZSBvYmplY3QgaW4gZm9jdXMgaXMgbm90IG9mIHR5cGUgamF2YS51dGlsLkNvbGxlY3Rpb24gdGhlbiBhbiBFeHByZXNzaW9uRXhjZXB0aW9uIHdpbGwKLSAgICAgICAgICAgIGJlIHRocm93biB3aGlsZSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uLjwvcD4KLTxicj4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPm9wZXJhdG9yPC9iPiAtIGVpdGhlciAiYW5kIiBvciAib3IiLiBUaGUgb3BlcmF0b3IgZGVmaW5lcyBob3cgdGhlIGNoaWxkCi0gICAgICAgICAgICAgICAgICBlbGVtZW50cyB3aWxsIGJlIGNvbWJpbmVkLiBJZiBub3Qgc3BlY2lmaWVkLCAiYW5kIiB3aWxsIGJlIHVzZWQuPC9saT4KLTxsaT48Yj5pZkVtcHR5PC9iPiAtIHRoZSB2YWx1ZSByZXR1cm4gZnJvbSB0aGUgaXRlcmF0ZSBleHByZXNzaW9uIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiBJZgotICAgICAgICAgICAgICAgICBub3Qgc3BlY2lmaWVkIHRoZW4gdHJ1ZSBpcyByZXR1cm5lZCB3aGVuIHRoZSBvcGVyYXRvciBlcXVhbHMgImFuZCIgCi0gICAgICAgICAgICAgICAgIGFuZCBmYWxzZSBpcyByZXR1cm4gaWYgdGhlIG9wZXJhdG9yIGVxdWFscyAib3IiLjwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUucmVmZXJlbmNlIj5yZWZlcmVuY2U8L2E+IEVNUFRZJmd0OzwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFBVFRMSVNUIHJlZmVyZW5jZTwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmRlZmluaXRpb25JZCZuYnNwO0NEQVRBICNSRVFVSVJFRCZndDs8L3A+Ci08cD48L3A+Ci08cCBjbGFzcz0iQ29uZmlnTWFya3VwRWxlbWVudERlc2MiPgotVGhpcyBlbGVtZW50IGlzIHVzZWQgdG8gcmVmZXJlbmNlIGFuIGV4cHJlc3Npb24gZnJvbSB0aGUgPGI+b3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9ucy5kZWZpbml0aW9uczwvYj4gZXh0ZW5zaW9uIHBvaW50LiAgVGhlIGV4cHJlc3Npb24gZGVmaW5pdGlvbiB3aWxsIGJlIGV2YWx1YXRlZCB3aXRoaW4gdGhlIGN1cnJlbnQgZXhwcmVzc2lvbiBlbGVtZW50IHVzaW5nIHRoZSBjdXJyZW50IGV2YWx1YXRpb24gY29udGV4dC48L3A+Ci08YnI+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTxsaT48Yj5kZWZpbml0aW9uSWQ8L2I+IC0gVGhlIHVuaXF1ZSBpZCBvZiBhbiBleHByZXNzaW9uIGZyb20gPGI+b3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9ucy5kZWZpbml0aW9uczwvYj4uPC9saT4KLTwvdWw+Ci08YnI+PGg2IGNsYXNzPSJDYXB0aW9uRmlnQ29sdW1uIFNjaGVtYUhlYWRlciI+RXhhbXBsZXM6IDwvaDY+W0VudGVyIGV4dGVuc2lvbiBwb2ludCB1c2FnZSBleGFtcGxlIGhlcmUuXQotPHA+PC9wPgotCi08aDYgY2xhc3M9IkNhcHRpb25GaWdDb2x1bW4gU2NoZW1hSGVhZGVyIj5TdXBwbGllZCBJbXBsZW1lbnRhdGlvbjogPC9oNj5bRW50ZXIgaW5mb3JtYXRpb24gYWJvdXQgc3VwcGxpZWQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBleHRlbnNpb24gcG9pbnQuXQotPHA+PC9wPgotCi08YnI+Ci08cCBjbGFzcz0ibm90ZSBTY2hlbWFDb3B5cmlnaHQiPgotPC9wPgotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvZXh0L29yZ19lY2xpcHNlX3dzdF93c19zZXJ2aWNlX3BvbGljeV91aV9zZXJ2aWNlcG9saWN5dWkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvcmVmZXJlbmNlL2V4dC9vcmdfZWNsaXBzZV93c3Rfd3Nfc2VydmljZV9wb2xpY3lfdWlfc2VydmljZXBvbGljeXVpLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNDhlMzguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9yZWZlcmVuY2UvZXh0L29yZ19lY2xpcHNlX3dzdF93c19zZXJ2aWNlX3BvbGljeV91aV9zZXJ2aWNlcG9saWN5dWkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgotPEhUTUw+Ci08SEVBRD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5TZXJ2aWNlIHBvbGljeSBVSTwvdGl0bGU+Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPkBpbXBvcnQgdXJsKCIuLi8uLi9ib29rLmNzcyIpOzwvc3R5bGU+Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPkBpbXBvcnQgdXJsKCIuLi8uLi9zY2hlbWEuY3NzIik7PC9zdHlsZT4KLTwvSEVBRD4KLTxCT0RZPgotPEgxIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+U2VydmljZSBwb2xpY3kgVUk8L0gxPgotPHA+PC9wPgotPGg2IGNsYXNzPSJDYXB0aW9uRmlnQ29sdW1uIFNjaGVtYUhlYWRlciI+SWRlbnRpZmllcjogPC9oNj5vcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kudWkuc2VydmljZVBvbGljeVVJPHA+PC9wPgotPGg2IGNsYXNzPSJDYXB0aW9uRmlnQ29sdW1uIFNjaGVtYUhlYWRlciI+U2luY2U6IDwvaDY+MS4wCi08cD48L3A+Ci0KLTxoNiBjbGFzcz0iQ2FwdGlvbkZpZ0NvbHVtbiBTY2hlbWFIZWFkZXIiPkRlc2NyaXB0aW9uOiA8L2g2PlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBleHRlbmRlcnMgdG8gYWRkIHNlcnZpY2UgcG9saWN5IFVJIG9wZXJhdGlvbnMgZm9yIHRoZQotICAgICAgICAgc2VydmljZSBwb2xpY2llcyB0aGF0IHRoZXkgaGF2ZSBhZGRlZC48cD48L3A+Ci08aDYgY2xhc3M9IkNhcHRpb25GaWdDb2x1bW4gU2NoZW1hSGVhZGVyIj5Db25maWd1cmF0aW9uIE1hcmt1cDo8L2g2PgotPHA+PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5leHRlbnNpb24iPmV4dGVuc2lvbjwvYT4gKDxhIGhyZWY9IiNlLnNlcnZpY2VQb2xpY3lVSSI+c2VydmljZVBvbGljeVVJPC9hPispJmd0OzwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFBVFRMSVNUIGV4dGVuc2lvbjwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPnBvaW50Jm5ic3A7Q0RBVEEgI1JFUVVJUkVEPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+aWQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjSU1QTElFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPm5hbWUmbmJzcDsmbmJzcDtDREFUQSAjSU1QTElFRCZndDs8L3A+Ci08cD48L3A+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTwvdWw+Ci08YnI+PHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5zZXJ2aWNlUG9saWN5VUkiPnNlcnZpY2VQb2xpY3lVSTwvYT4gKDxhIGhyZWY9IiNlLm9wZXJhdGlvbiI+b3BlcmF0aW9uPC9hPiogfCA8YSBocmVmPSIjZS5xdWlja0ZpeCI+cXVpY2tGaXg8L2E+KikmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLVRoaXMgZXh0ZW5zaW9uIGlzIGludGVuZGVkIGZvciBleHRlbmRlcnMgd2hvIHdhbnQgdG8gYWRkIFVJIG9wZXJhdGlvbnMgdG8gdGhlIFNlcnZpY2UgcG9saWNpZXMgdGhhdCB0aGV5IGhhdmUgZGVmaW5lZC48L3A+Ci08YnI+PGJyPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5kZXNjcmlwdG9yIj5kZXNjcmlwdG9yPC9hPiBFTVBUWSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBkZXNjcmlwdG9yPC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+ZGVzY3JpcHRpb24mbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjSU1QTElFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPnNob3J0TmFtZSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NEQVRBICNJTVBMSUVEPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+bG9uZ05hbWUmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjSU1QTElFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmNvbnRleHRIZWxwSWQmbmJzcDtDREFUQSAjSU1QTElFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmljb25wYXRoJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLUEgZGVzY3JpcHRvciBmb3IgdGhpcyBTZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24gb3IgYWN0aW9uLjwvcD4KLTxicj4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPmRlc2NyaXB0aW9uPC9iPiAtIEEgZGVzY3JpcHRpb24gb2YgdGhpcyBzZXJ2aWNlIG9wZXJhdGlvbi48L2xpPgotPGxpPjxiPnNob3J0TmFtZTwvYj4gLSBUaGUgc2hvcnQgbmFtZSBvZiB0aGlzIHNlcnZpY2Ugb3BlcmF0aW9uLiAgTm90ZTogaWYgYSBzaG9ydCBuYW1lIGlzIG5vdCBzcGVjaWZpZWQgaXQgaXMgZGVmYXVsdGVkIHRvIHRoZSB2YWx1ZSBvZiB0aGUgbG9uZyBuYW1lLjwvbGk+Ci08bGk+PGI+bG9uZ05hbWU8L2I+IC0gVGhlIGxvbmcgbmFtZSBvZiB0aGlzIHNlcnZpY2Ugb3BlcmF0aW9uLiAgTm90ZTogaWYgYSBsb25nIG5hbWUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgaXQgaXMgZGVmYXVsdGVkIHRvIHRoZSBzaG9ydE5hbWUgdmFsdWUuPC9saT4KLTxsaT48Yj5jb250ZXh0SGVscElkPC9iPiAtIFRoZSBjb250ZXh0IGhlbHAgaWQgZm9yIHRoaXMgc2VydmljZSBvcGVyYXRpb24gaWYgaXQgaXMgcmVxdWlyZWQuPC9saT4KLTxsaT48Yj5pY29ucGF0aDwvYj4gLSBBIHBsdWdpbiByZWxhdGl2ZSBwYXRoIHRvIHNvbWUgaWNvbiBmaWxlIGZvciB0aGlzIHNlcnZpY2Ugb3BlcmF0aW9uLjwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUub3BlcmF0aW9uIj5vcGVyYXRpb248L2E+ICg8YSBocmVmPSIjZS5kZXNjcmlwdG9yIj5kZXNjcmlwdG9yPC9hPiAsIDxhIGhyZWY9IiNlLmVuYWJsZWQiPmVuYWJsZWQ8L2E+PyAsICg8YSBocmVmPSIjZS5lbnVtZXJhdGlvbiI+ZW51bWVyYXRpb248L2E+IHwgPGEgaHJlZj0iI2Uuc2VsZWN0aW9uIj5zZWxlY3Rpb248L2E+IHwgPGEgaHJlZj0iI2UuY29tcGxleCI+Y29tcGxleDwvYT4pKSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBvcGVyYXRpb248L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5pZCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NEQVRBICNSRVFVSVJFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPnBvbGljeVBhdHRlcm4mbmJzcDtDREFUQSAjUkVRVUlSRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij53b3Jrc3BhY2VPbmx5Jm5ic3A7KHRydWUgfCBmYWxzZSkgPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+ZGVmYXVsdGRhdGEmbmJzcDsmbmJzcDsmbmJzcDsodHJ1ZSB8IGZhbHNlKSAidHJ1ZSImZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLURlZmluZXMgYSBTZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24uPC9wPgotPGJyPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08bGk+PGI+aWQ8L2I+IC0gVGhpcyB1bmlxdWUgaWQgb2YgdGhpcyBzZXJ2aWNlIG9wZXJhdGlvbi48L2xpPgotPGxpPjxiPnBvbGljeVBhdHRlcm48L2I+IC0gVGhlIGF0dHJpYnV0ZSBzcGVjaWZpZXMgd2hpY2ggc2VydmljZSBwb2xpY2VzIHRoaXMgb3BlcmF0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aC4gIEFueSBKYXZhIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXkgYmUgc3BlY2lmaWVkLiAgVGhpcyBleHByZXNzaW9uIHdpbGwgYmUgdXNlZCB0byBtYXRjaCB0aGUgaWRzIG9mIGFsbCBrbm93biBzZXJ2aWNlIHBvbGljeSBpZHMuPC9saT4KLTxsaT48Yj53b3Jrc3BhY2VPbmx5PC9iPiAtIFRoaXMgYXR0cmlidXRlIGluZGljYXRlcyBpZiB0aGlzIG9wZXJhdGlvbiBpcyBvbmx5IHRvIGJlIHVzZWQgaW4gdGhlIHdvcmtzcGFjZSBwcmVmZXJlbmNlIHBhZ2UuICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIGl0IGlzIGRlZmF1bHRlZCB0byBmYWxzZS48L2xpPgotPGxpPjxiPmRlZmF1bHRkYXRhPC9iPiAtIDwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUuZW51bWVyYXRpb24iPmVudW1lcmF0aW9uPC9hPiBFTVBUWSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBlbnVtZXJhdGlvbjwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmlkJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI1JFUVVJUkVEPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+ZGVmYXVsdEl0ZW0mbmJzcDtDREFUQSAjSU1QTElFRCZndDs8L3A+Ci08cD48L3A+Ci08cCBjbGFzcz0iQ29uZmlnTWFya3VwRWxlbWVudERlc2MiPgotVGhpcyBlbGVtZW50IGRlZmluZXMgdGhlIGVudW1lcmF0aW9uIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoLjwvcD4KLTxicj4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPmlkPC9iPiAtIFRoZSBpZCBvZiB0aGlzIGVudW1lcmF0aW9uLjwvbGk+Ci08bGk+PGI+ZGVmYXVsdEl0ZW08L2I+IC0gT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHNldCBieSB0aGUgZW51bWVyYXRpb24uPC9saT4KLTwvdWw+Ci08YnI+PHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5zZWxlY3Rpb24iPnNlbGVjdGlvbjwvYT4gRU1QVFkmZ3Q7PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUFUVExJU1Qgc2VsZWN0aW9uPC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+aWNvbiZuYnNwOyh0cnVlIHwgZmFsc2UpICZndDs8L3A+Ci08cD48L3A+Ci08cCBjbGFzcz0iQ29uZmlnTWFya3VwRWxlbWVudERlc2MiPgotVGhpcyBlbGVtZW50IGluZGljYXRlcyB0aGF0IHRoZSBzZXJ2aWNlIHBvbGljeSBvcGVyYXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoIGEgc29tZSBraW5kIG9mIFVJIGJvb2xlYW4gc2VsZWN0aW9uLiAgQWxsIHNlcnZpY2UgcG9saWNpZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3BlcmF0aW9uIHNob3VsZCB1c2UgdGhlIG9yZy5lY2xpcHNlLndzdC5zZXJ2aWNlLnBvbGljeS5ib29sZWFuRW51bSBlbnVtZXJhdGlvbi48L3A+Ci08YnI+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTxsaT48Yj5pY29uPC9iPiAtIFRoaXMgYm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGJvb2xlYW4gc2VsZWN0aW9uIHNob3VsZCBiZSByZW5kZXJlZCB2aWEgYW4gaWNvbi48L2xpPgotPC91bD4KLTxicj48cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLmNvbXBsZXgiPmNvbXBsZXg8L2E+IEVNUFRZJmd0OzwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFBVFRMSVNUIGNvbXBsZXg8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5sYXVuY2hDbGFzcyZuYnNwO0NEQVRBICNSRVFVSVJFRCZndDs8L3A+Ci08cD48L3A+Ci08cCBjbGFzcz0iQ29uZmlnTWFya3VwRWxlbWVudERlc2MiPgotVGhpcyBlbGVtZW50IGluZGljYXRlcyB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGNvbXBsZXggdG8gcmVuZGVyIGFuZCBwZXJzaXN0LiAgVGhlIGxhdW5jaENsYXNzIGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCB0byBsYXVuY2ggYSBkaWFsb2cgdG8gc2V0IG1vcmUgY29tcGxleCBkYXRhLiAgVGhlIGV4dGVuZGVyIHdpbGwgbmVlZCB0byBjYWxsIHRoZSBzZXJ2aWNlIHBvbGljeSBwbGF0Zm9ybSBBUEkgdG8gcGVyc2lzdCBkYXRhIG9uIGVhY2ggcG9saWN5IGFzIHJlcXVpcmVkLjwvcD4KLTxicj4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPmxhdW5jaENsYXNzPC9iPiAtIEEgY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCB0byBsYXVuY2ggYSBkaWFsb2cuICBUaGUgY2xhc3Mgc3BlY2lmaWVkIG11c3QgaW1wbGVtZW50IHRoZSBJTGF1bmNoT3BlcmF0aW9uIGludGVyZmFjZS48L2xpPgotPC91bD4KLTxicj48cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLmVuYWJsZWQiPmVuYWJsZWQ8L2E+IEVNUFRZJmd0OzwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFBVFRMSVNUIGVuYWJsZWQ8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5lbmFibGVkQ2xhc3MmbmJzcDtDREFUQSAjSU1QTElFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPm11bHRpc2VsZWN0Jm5ic3A7Jm5ic3A7Q0RBVEEgI0lNUExJRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLUluZGljYXRlcyBpZiB0aGlzIG9wZXJhdGlvbiBpcyBlbmFibGVkL2dyYXllZCBvdXQgb3Igbm90IGluIHRoZSBVSS48L3A+Ci08YnI+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTxsaT48Yj5lbmFibGVkQ2xhc3M8L2I+IC0gVGhlIGNsYXNzIHNwZWNpZmllZCBpbiB0aGUgYXR0cmlidXRlIG11Y2ggaW1wbGVtZW50IHRoZSBJRW5hYmxlT3BlcmF0aW9uIGludGVyZmFjZS4gIFRoaXMgY2xhc3MgYWxsb3dzIGV4dGVuZGVycyB0byBwcm92aWRlIGEgbW9yZSBjb21wbGV4IGxvZ2ljIGZvciB3aGVuIHRoZSBvcGVyYXRpb24gc2hvdWxkIGJlIGVuYWJsZWQgb3Igbm90LjwvbGk+Ci08bGk+PGI+bXVsdGlzZWxlY3Q8L2I+IC0gSW5kaWNhdGVzIGlmIHRoaXMgb3BlcmF0aW9uIGFsbG93cyBtdWx0aXBsZSBzZWxlY3Rpb24gb2YgcG9saWN5IG9iamVjdHMgb3Igbm90LjwvbGk+Ci08L3VsPgotPGJyPjxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFFTEVNRU5UIDxhIG5hbWU9ImUucXVpY2tGaXgiPnF1aWNrRml4PC9hPiAoPGEgaHJlZj0iI2UuYWN0aW9uIj5hY3Rpb248L2E+KykmZ3Q7PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUFUVExJU1QgcXVpY2tGaXg8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5wbHVnaW5JZCZuYnNwO0NEQVRBICNSRVFVSVJFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmNvZGUmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjUkVRVUlSRUQmZ3Q7PC9wPgotPHA+PC9wPgotPHAgY2xhc3M9IkNvbmZpZ01hcmt1cEVsZW1lbnREZXNjIj4KLVRoaXMgZWxlbWVudCBhbGxvd3MgZXh0ZW5kZXJzIHRvIGFkZCBxdWljayBmaXhlcyB0byB0aGUgU2VydmljZSBwb2xpY3kgVUkgZnJhbWV3b3Jrcy48L3A+Ci08YnI+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTxsaT48Yj5wbHVnaW5JZDwvYj4gLSBUaGUgcGx1Z2luIGlkIHRoYXQgdGhlIGVuY2xvc2VkIHF1aWNrIGZpeCBhY3Rpb25zIGFwcGx5IHRvLiAgVGhpcyBpcyB0aGUgaWQgdGhhdCB3aWxsIG1hdGNoIHRoZSBwbHVnaW4gaWQgZnJvbSB0aGUgSVN0YXR1cyBvZiBhIFNlcnZpY2VQb2xpY3kgb2JqZWN0LjwvbGk+Ci08bGk+PGI+Y29kZTwvYj4gLSBUaGUgY29kZSB0aGF0IHRoZSBlbmNsb3NlZCBxdWljayBmaXggYWN0aW9ucyBhcHBseSB0by4gIFRoaXMgaXMgdGhlIGNvZGUgdGhhdCB3aWxsIG1hdGNoIHRoZSBjb2RlIGZyb20gdGhlIElTdGF0dXMgb2YgYSBTZXJ2aWNlUG9saWN5IG9iamVjdC48L2xpPgotPC91bD4KLTxicj48cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLmFjdGlvbiI+YWN0aW9uPC9hPiAoPGEgaHJlZj0iI2UuZGVzY3JpcHRvciI+ZGVzY3JpcHRvcjwvYT4pJmd0OzwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFBVFRMSVNUIGFjdGlvbjwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmNsYXNzJm5ic3A7Q0RBVEEgI1JFUVVJUkVEJmd0OzwvcD4KLTxwPjwvcD4KLTxwIGNsYXNzPSJDb25maWdNYXJrdXBFbGVtZW50RGVzYyI+Ci1UaGUgZWxlbWVudCBpcyB1c2VkIHRvIGFkZCBhIHF1aWNrIGZpeCBhY3Rpb24uPC9wPgotPGJyPgotPHVsIGNsYXNzPSJDb25maWdNYXJrdXBBdHRsaXN0RGVzYyI+Ci08bGk+PGI+Y2xhc3M8L2I+IC0gVGhlIGNsYXNzIHRoYXQgdGhlIGZyYW1ld29yayB3aWxsIGNhbGwgZm9yIGEgcGFydGljdWxhciBxdWljayBmaXggYWN0aW9uLiAgVGhpcyBjbGFzcyBtdXN0IGltcGxlbWVudCB0aGUgSVF1aWNrRml4QWN0aW9uIGludGVyZmFjZS48L2xpPgotPC91bD4KLTxicj48aDYgY2xhc3M9IkNhcHRpb25GaWdDb2x1bW4gU2NoZW1hSGVhZGVyIj5FeGFtcGxlczogPC9oNj5bRW50ZXIgZXh0ZW5zaW9uIHBvaW50IHVzYWdlIGV4YW1wbGUgaGVyZS5dCi08cD48L3A+Ci0KLTxoNiBjbGFzcz0iQ2FwdGlvbkZpZ0NvbHVtbiBTY2hlbWFIZWFkZXIiPlN1cHBsaWVkIEltcGxlbWVudGF0aW9uOiA8L2g2PltFbnRlciBpbmZvcm1hdGlvbiBhYm91dCBzdXBwbGllZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGV4dGVuc2lvbiBwb2ludC5dCi08cD48L3A+Ci0KLTxicj4KLTxwIGNsYXNzPSJub3RlIFNjaGVtYUNvcHlyaWdodCI+Ci08L3A+Ci08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3NjaGVtYS5jc3MgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3NjaGVtYS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZmJmMjYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy9zY2hlbWEuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotSDYuQ2FwdGlvbkZpZ0NvbHVtbiNoZWFkZXIgew0KLQlmb250LXNpemU6MTZweDsgDQotCWRpc3BsYXk6aW5saW5lDQotfQ0KLQ0KLVAuTm90ZSNjb3B5cmlnaHQgew0KLQlmb250LXNpemU6IHNtYWxsZXI7IA0KLQlmb250LXN0eWxlOiBub3JtYWw7DQotCWNvbG9yOiAjMzM2Njk5OyANCi0JZGlzcGxheTppbmxpbmU7DQotCW1hcmdpbi10b3A6IDMuMDAwMDAwcHQ7DQotCW1hcmdpbi1ib3R0b206IDExLjAwMDAwMHB0Ow0KLQltYXJnaW4tcmlnaHQ6IDAuMDAwMDAwcHQ7DQotCW1hcmdpbi1sZWZ0OiAwLjAwMDAwMHB0Ow0KLX0NCi0NCi1QLkNvZGUjZHRkIHsNCi0JY29sb3I6ICM4MDAwMDA7IA0KLQltYXJnaW4tdG9wOiAwLjAwMDAwMHB0Ow0KLQltYXJnaW4tYm90dG9tOiAwLjAwMDAwMHB0Ow0KLQltYXJnaW4tcmlnaHQ6IDAuMDAwMDAwcHQ7DQotCW1hcmdpbi1sZWZ0OiAxMC4wMDAwMDBwdDsNCi19DQotDQotUC5Db2RlI2R0ZEF0dGxpc3Qgew0KLQljb2xvcjogIzgwMDAwMDsgDQotCW1hcmdpbi10b3A6IDAuMDAwMDAwcHQ7DQotCW1hcmdpbi1ib3R0b206IDAuMDAwMDAwcHQ7DQotCW1hcmdpbi1yaWdodDogMC4wMDAwMDBwdDsNCi0JbWFyZ2luLWxlZnQ6IDIwLjAwMDAwMHB0Ow0KLX0NCi0NCi1QLkNvZGUjdGFnIHsNCi0JY29sb3I6ICMwMDAwODA7IA0KLQlkaXNwbGF5OmlubGluZTsNCi0JbWFyZ2luLXRvcDogMC4wMDAwMDBwdDsNCi0JbWFyZ2luLWJvdHRvbTogMC4wMDAwMDBwdDsNCi0JbWFyZ2luLXJpZ2h0OiAwLjAwMDAwMHB0Ow0KLQltYXJnaW4tbGVmdDogMC4wMDAwMDBwdDsNCi19DQotDQotUC5Db2RlI2NzdHJpbmcgew0KLQljb2xvcjogIzAwODAwMDsgDQotCWRpc3BsYXk6aW5saW5lOw0KLQltYXJnaW4tdG9wOiAwLjAwMDAwMHB0Ow0KLQltYXJnaW4tYm90dG9tOiAwLjAwMDAwMHB0Ow0KLQltYXJnaW4tcmlnaHQ6IDAuMDAwMDAwcHQ7DQotCW1hcmdpbi1sZWZ0OiAwLjAwMDAwMHB0OwkNCi19DQotDQotLkNvbmZpZ01hcmt1cCNlbGVtZW50RGVzYyB7DQotCWNvbG9yOiBibGFjazsNCi0JbWFyZ2luLXRvcDogMC4wMDAwMDBwdDsNCi0JbWFyZ2luLWJvdHRvbTogMC4wMDAwMDBwdDsNCi0JbWFyZ2luLXJpZ2h0OiAwLjAwMDAwMHB0Ow0KLQltYXJnaW4tbGVmdDogMTAuMDAwMDAwcHQ7DQotfQ0KLQ0KLS5Db25maWdNYXJrdXAjYXR0bGlzdERlc2Mgew0KLQljb2xvcjogYmxhY2s7DQotCW1hcmdpbi10b3A6IDAuMDAwMDAwcHQ7DQotCW1hcmdpbi1ib3R0b206IDAuMDAwMDAwcHQ7DQotCW1hcmdpbi1yaWdodDogMC4wMDAwMDBwdDsNCi0JbWFyZ2luLWxlZnQ6IDMyLjAwMDAwMHB0Ow0KLX0NCi0NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3RvcGljc19FeHRQb2ludF9SZWZlcmVuY2UueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuYXBpLmRvYy90b3BpY3NfRXh0UG9pbnRfUmVmZXJlbmNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRhYzg4Yi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3RvcGljc19FeHRQb2ludF9SZWZlcmVuY2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotCi08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PgotCSAJPHRvYyBsYWJlbD0iRXh0ZW5zaW9uIFBvaW50cyBSZWZlcmVuY2UiPgotPHRvcGljIGxhYmVsPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuc2VydmljZXBvbGljeSIgaHJlZj0icmVmZXJlbmNlL2V4dC9vcmdfZWNsaXBzZV93c3Rfd3Nfc2VydmljZV9wb2xpY3lfc2VydmljZXBvbGljeS5odG1sIi8+Ci08dG9waWMgbGFiZWw9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5zZXJ2aWNlcG9saWN5dWkiIGhyZWY9InJlZmVyZW5jZS9leHQvb3JnX2VjbGlwc2Vfd3N0X3dzX3NlcnZpY2VfcG9saWN5X3VpX3NlcnZpY2Vwb2xpY3l1aS5odG1sIi8+Ci08L3RvYz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvdG9waWNzX1JlZmVyZW5jZS54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5hcGkuZG9jL3RvcGljc19SZWZlcmVuY2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjRmODdkLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MvdG9waWNzX1JlZmVyZW5jZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC50b2MiPz4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIERlZmluZSB0b3BpY3MgZm9yIHRoZSByZWZlcmVuY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0b2MgbGFiZWw9IldlYiBTZXJ2aWNlIHJlZmVyZW5jZSIgbGlua190bz0iLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL3JlZmVyZW5jZV90b2MueG1sI2phdmFkb2Nfd2Vic2VydmljZXMiPgotCTx0b3BpYyBsYWJlbD0iV2ViIHNlcnZpY2VzIEFQSSBSZWZlcmVuY2UiIGhyZWY9InJlZmVyZW5jZS9hcGkvaW5kZXguaHRtbCI+Ci0JCTwhLS0gVGhlIGphdmFkb2N0b2MueG1sIHRvYyBpcyBnZW5lcmF0ZWQgYnkgdGhlIGJ1aWxkLiAtLT4KLQkJPGxpbmsgdG9jPSJqYXZhZG9jdG9jLnhtbCIgLz4KLQk8L3RvcGljPgotCQotCQotCTx0b3BpYyBsYWJlbD0iV2ViIHNlcnZpY2VzIEV4dGVuc2lvbiBQb2ludHMgUmVmZXJlbmNlIiBocmVmPSJyZWZlcmVuY2UvZXh0L2luZGV4Lmh0bWwiPgotCQotCSAgICA8IS0tIFRoZSB0b3BpY3NfRXh0UG9pbnRzLVJlZmVyZW5jZS54bWwgdG9jIGlzIGdlbmVyYXRlZCBieSB0aGUgYnVpbGQuIC0tPgotCQk8bGluayB0b2M9InRvcGljc19FeHRQb2ludF9SZWZlcmVuY2UueG1sIiAvPgotCTwvdG9waWM+Ci0JCi08L3RvYz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wLy5jdnNpZ25vcmUgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxNDQ4N2MuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuaW5mb3BvcC8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotYnVpbGQueG1sCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wLy5wcm9qZWN0IGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuaW5mb3BvcC8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI3NTAxZi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzLmluZm9wb3A8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL01FVEEtSU5GL01BTklGRVNULk1GIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuaW5mb3BvcC9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNiMjM4MS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlcGx1Z2luTmFtZQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2Uud3N0LndzLmluZm9wb3A7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC4zMDAucXVhbGlmaWVyCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtVmVuZG9yOiAlcHJvdmlkZXJOYW1lCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL2Fib3V0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuaW5mb3BvcC9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL2J1aWxkLnByb3BlcnRpZXMgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MWMzMjcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuaW5mb3BvcC9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgd2Vic2VydmljZXVpLWYxQ29udGV4dHMueG1sLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcwotc3JjLmluY2x1ZGVzID0gYnVpbGQucHJvcGVydGllcwotZ2VuZXJhdGVTb3VyY2VCdW5kbGU9ZmFsc2UKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL3BsdWdpbi5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3MuaW5mb3BvcC9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYzYjU3Zi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotcGx1Z2luTmFtZSAgID0gV2ViIFNlcnZpY2VzIFVJCi1wcm92aWRlck5hbWUgPSBFY2xpcHNlLm9yZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmluZm9wb3AvcGx1Z2luLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmluZm9wb3AvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc3ZTcxZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiID8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PiAKLTwhLS0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAtLT4KLTxwbHVnaW4+Ci0JPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5jb250ZXh0cyI+Ci0JCTxjb250ZXh0cyBmaWxlPSJ3ZWJzZXJ2aWNldWktZjFDb250ZXh0cy54bWwiIHBsdWdpbj0ib3JnLmVjbGlwc2Uud3N0LndzLnVpIi8+Ci0JPC9leHRlbnNpb24+Ci08L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53cy5pbmZvcG9wL3dlYnNlcnZpY2V1aS1mMUNvbnRleHRzLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmluZm9wb3Avd2Vic2VydmljZXVpLWYxQ29udGV4dHMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDc3OGRiLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzLmluZm9wb3Avd2Vic2VydmljZXVpLWYxQ29udGV4dHMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLmNvbnRleHRzIj8+Ci08IS0tIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gLS0+Ci0KLTxjb250ZXh0cz4KLQotPCEtLVdTSVBhZ2UuamF2YS0tPgotPGNvbnRleHQgaWQ9IlBXU0kwMDAxIj4KLTwhLS1kZXNjLS0+Ci08ZGVzY3JpcHRpb24+VGhlIFdlYiBzZXJ2aWNlcyBXUy1JIHZhbGlkYXRpb24gdG9vbHMgc3VwcG9ydCB0aGUgbGV2ZWwgb2YgV1MtSSBjb21wbGlhbmNlIG91dGxpbmVkIGluIHRoZSBXUy1JIEJhc2ljIFByb2ZpbGUgMS4xLCB0aGUgV1MtSSBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGUgMS4wIChXUy1JIFNTQlApLCBhbmQgdGhlIFdTLUkgQXR0YWNobWVudHMgUHJvZmlsZSAxLjAgKFdTLUkgQVApLiBZb3UgY2FuIGNob29zZSB0byBtYWtlIHlvdXIgV2ViIHNlcnZpY2UgY29tcGxpYW50IG9yIG5vbi1jb21wbGlhbnQsIGRlcGVuZGluZyBvbiB5b3VyIG5lZWRzLiBGb3IgZXhhbXBsZSwgZW5jb2RlZCBzdHlsZSAoUlBDL2VuY29kZWQpLCBTT0FQIG92ZXIgSk1TIHByb3RvY29scywgYW5kIHNlY3VyZWQgV2ViIHNlcnZpY2VzLCBhcmUgbm90IFdTLUkgY29tcGxpYW50LgotCi1Zb3UgY2FuIHNldCB0aGUgbGV2ZWwgb2YgY29tcGxpYW5jZSBmb3IgZWl0aGVyIHRoZSBCYXNpYyBQcm9maWxlIGFuZCB0aGUgU2ltcGxlIFNPQVAgQmluZGluZyBQcm9maWxlLCBvciBmb3IgdGhlIEF0dGFjaG1lbnRzIFByb2ZpbGUuIFlvdSBjYW4gc2VsZWN0IGZyb20gdGhyZWUgbGV2ZWxzIG9mIGNvbXBsaWFuY2Ugd2l0aCBXUy1JIHNwZWNpZmljYXRpb25zOgotLSBSZXF1aXJlIFdTLUkgY29tcGxpYW5jZSAtIHRoaXMgbGV2ZWwgcHJldmVudHMgeW91IGZyb20gY3JlYXRpbmcgYSBub24tY29tcGxpYW50IFdlYiBzZXJ2aWNlLgotLSBTdWdnZXN0IFdTLUkgY29tcGxpYW5jZSAtIHRoaXMgbGV2ZWwgYWxsb3dzIHlvdSB0byBjcmVhdGUgYSBub24tY29tcGxpYW50IFdlYiBzZXJ2aWNlLCBidXQgcHJvdmlkZXMgYSB2aXNpYmxlIHdhcm5pbmcgc3RhdGluZyBob3cgdGhlIHNlcnZpY2UgaXMgbm9uLWNvbXBsaWFudC4KLS0gSWdub3JlIFdTLUkgY29tcGxpYW5jZSAtIHRoaXMgbGV2ZWwgYWxsb3dzIHlvdSB0byBjcmVhdGUgYSBub24tY29tcGxpYW50IFdlYiBzZXJ2aWNlIGFuZCBkb2VzIG5vdCBub3RpZnkgeW91IG9mIG5vbi1jb21wbGlhbmNlLgotCi1Zb3UgY2FuIGFsc28gc2VsZWN0IHdoaWNoIHR5cGVzIG9mIFdTREwgZmlsZXMgdG8gcnVuIHZhbGlkYXRpb24gb246Ci0tIEJ5IHNlbGVjdGluZyAiTm8gd2l6YXJkIFdTREwgdmFsaWRhdGlvbiIgdGhlIHdpemFyZHMgd2lsbCBub3QgcnVuIHZhbGlkYXRpb24gb24gdGhlIFdTREwgZmlsZS4KLS0gQnkgc2VsZWN0aW5nIHRvIHJ1biB2YWxpZGF0aW9uIG9uIHJlbW90ZSBmaWxlcywgdGhlIHdpemFyZHMgd2lsbCBvbmx5IHZhbGlkYXRlIFdTREwgZmlsZXMgdGhhdCBleGlzdCBvdXRzaWRlIG9mIHlvdXIgd29ya3NwYWNlLgotLSBCeSBzZWxlY3RpbmcgdG8gcnVuIHZhbGlkYXRpb24gb24gYWxsIFdTREwgZmlsZXMgdGhlIHdpemFyZCB3aWxsIHZhbGlkYXRlIGFsbCBXU0RMIGZpbGVzLCByZWdhcmRsZXNzIG9mIHdoZXJlIHRoZXkgcmVzaWRlLgotCi1JZiB5b3Ugc2VsZWN0IHRvIHdhaXQgZm9yIFdTREwgdmFsaWRhdGlvbiB0byBjb21wbGV0ZSwgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmRzIHdpbGwgcHJldmVudCB5b3UgZnJvbSBnb2luZyBmb3J3YXJkIGFuZCBjb21wbGV0aW5nIGFkZGl0aW9uYWwgd2l6YXJkIHBhZ2VzIG9uY2UgeW91IGhhdmUgc2VsZWN0ZWQgeW91ciBXU0RMIGZpbGUgdW50aWwgdGhhdCBXU0RMIGZpbGUgaGFzIGJlZW4gdmFsaWRhdGVkLiBJZiB0aGUgV1NETCBmaWxlIGlzIG5vdCB2YWxpZCwgeW91IHdpbGwgYmUgZ2l2ZW4gdGhlIG9wdGlvbiBvZiBleGl0aW5nIHRoZSB3aXphcmQgb3IgY29udGludWluZyB3aXRoIHRoZSBpbnZhbGlkIFdTREwgZmlsZS4KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1NJMDAwNCI+Ci08ZGVzY3JpcHRpb24+VGhlIFdlYiBzZXJ2aWNlcyBXUy1JIHZhbGlkYXRpb24gdG9vbHMgc3VwcG9ydCB0aGUgbGV2ZWwgb2YgV1MtSSBjb21wbGlhbmNlIG91dGxpbmVkIGluIHRoZSBXUy1JIEJhc2ljIFByb2ZpbGUgMS4xLCB0aGUgV1MtSSBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGUgMS4wIChXUy1JIFNTQlApLCBhbmQgdGhlIFdTLUkgQXR0YWNobWVudHMgUHJvZmlsZSAxLjAgKFdTLUkgQVApLiBZb3UgY2FuIGNob29zZSB0byBtYWtlIHlvdXIgV2ViIHNlcnZpY2UgY29tcGxpYW50IG9yIG5vbi1jb21wbGlhbnQsIGRlcGVuZGluZyBvbiB5b3VyIG5lZWRzLiBGb3IgZXhhbXBsZSwgZW5jb2RlZCBzdHlsZSAoUlBDL2VuY29kZWQpLCBTT0FQIG92ZXIgSk1TIHByb3RvY29scywgYW5kIHNlY3VyZWQgV2ViIHNlcnZpY2VzLCBhcmUgbm90IFdTLUkgY29tcGxpYW50LgotWW91IGNhbiBzZXQgdGhlIGxldmVsIG9mIGNvbXBsaWFuY2UgZm9yIGVpdGhlciB0aGUgQmFzaWMgUHJvZmlsZSBhbmQgdGhlIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSwgb3IgZm9yIHRoZSBBdHRhY2htZW50cyBQcm9maWxlLiBZb3UgY2FuIHNlbGVjdCBmcm9tIHRocmVlIGxldmVscyBvZiBjb21wbGlhbmNlIHdpdGggV1MtSSBzcGVjaWZpY2F0aW9uczoKLS0gUmVxdWlyZSBXUy1JIGNvbXBsaWFuY2UgLSB0aGlzIGxldmVsIHByZXZlbnRzIHlvdSBmcm9tIGNyZWF0aW5nIGEgbm9uLWNvbXBsaWFudCBXZWIgc2VydmljZS4KLS0gU3VnZ2VzdCBXUy1JIGNvbXBsaWFuY2UgLSB0aGlzIGxldmVsIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgbm9uLWNvbXBsaWFudCBXZWIgc2VydmljZSwgYnV0IHByb3ZpZGVzIGEgdmlzaWJsZSB3YXJuaW5nIHN0YXRpbmcgaG93IHRoZSBzZXJ2aWNlIGlzIG5vbi1jb21wbGlhbnQuCi0tIElnbm9yZSBXUy1JIGNvbXBsaWFuY2UgLSB0aGlzIGxldmVsIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgbm9uLWNvbXBsaWFudCBXZWIgc2VydmljZSBhbmQgZG9lcyBub3Qgbm90aWZ5IHlvdSBvZiBub24tY29tcGxpYW5jZS4KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1NJMDAwOCI+Ci08ZGVzY3JpcHRpb24+VGhlIFdlYiBzZXJ2aWNlcyBXUy1JIHZhbGlkYXRpb24gdG9vbHMgc3VwcG9ydCB0aGUgbGV2ZWwgb2YgV1MtSSBjb21wbGlhbmNlIG91dGxpbmVkIGluIHRoZSBXUy1JIEJhc2ljIFByb2ZpbGUgMS4xLCB0aGUgV1MtSSBTaW1wbGUgU09BUCBCaW5kaW5nIFByb2ZpbGUgMS4wIChXUy1JIFNTQlApLCBhbmQgdGhlIFdTLUkgQXR0YWNobWVudHMgUHJvZmlsZSAxLjAgKFdTLUkgQVApLiBZb3UgY2FuIGNob29zZSB0byBtYWtlIHlvdXIgV2ViIHNlcnZpY2UgY29tcGxpYW50IG9yIG5vbi1jb21wbGlhbnQsIGRlcGVuZGluZyBvbiB5b3VyIG5lZWRzLiBGb3IgZXhhbXBsZSwgZW5jb2RlZCBzdHlsZSAoUlBDL2VuY29kZWQpLCBTT0FQIG92ZXIgSk1TIHByb3RvY29scywgYW5kIHNlY3VyZWQgV2ViIHNlcnZpY2VzLCBhcmUgbm90IFdTLUkgY29tcGxpYW50LgotWW91IGNhbiBzZXQgdGhlIGxldmVsIG9mIGNvbXBsaWFuY2UgZm9yIGVpdGhlciB0aGUgQmFzaWMgUHJvZmlsZSBhbmQgdGhlIFNpbXBsZSBTT0FQIEJpbmRpbmcgUHJvZmlsZSwgb3IgZm9yIHRoZSBBdHRhY2htZW50cyBQcm9maWxlLiBZb3UgY2FuIHNlbGVjdCBmcm9tIHRocmVlIGxldmVscyBvZiBjb21wbGlhbmNlIHdpdGggV1MtSSBzcGVjaWZpY2F0aW9uczoKLS0gUmVxdWlyZSBXUy1JIGNvbXBsaWFuY2UgLSB0aGlzIGxldmVsIHByZXZlbnRzIHlvdSBmcm9tIGNyZWF0aW5nIGEgbm9uLWNvbXBsaWFudCBXZWIgc2VydmljZS4KLS0gU3VnZ2VzdCBXUy1JIGNvbXBsaWFuY2UgLSB0aGlzIGxldmVsIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgbm9uLWNvbXBsaWFudCBXZWIgc2VydmljZSwgYnV0IHByb3ZpZGVzIGEgdmlzaWJsZSB3YXJuaW5nIHN0YXRpbmcgaG93IHRoZSBzZXJ2aWNlIGlzIG5vbi1jb21wbGlhbnQuCi0tIElnbm9yZSBXUy1JIGNvbXBsaWFuY2UgLSB0aGlzIGxldmVsIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgbm9uLWNvbXBsaWFudCBXZWIgc2VydmljZSBhbmQgZG9lcyBub3Qgbm90aWZ5IHlvdSBvZiBub24tY29tcGxpYW5jZS4KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1NJMDAwOSI+Ci08IS0tZGVzYy0tPgotPGRlc2NyaXB0aW9uPgotWW91IGNhbiBzZWxlY3Qgd2hpY2ggdHlwZXMgb2YgV1NETCBmaWxlcyB0byBydW4gdmFsaWRhdGlvbiBvbjoKLS0gQnkgc2VsZWN0aW5nICJObyB3aXphcmQgV1NETCB2YWxpZGF0aW9uIiB0aGUgd2l6YXJkcyB3aWxsIG5vdCBydW4gdmFsaWRhdGlvbiBvbiB0aGUgV1NETCBmaWxlLgotLSBCeSBzZWxlY3RpbmcgdG8gcnVuIHZhbGlkYXRpb24gb24gcmVtb3RlIGZpbGVzLCB0aGUgd2l6YXJkcyB3aWxsIG9ubHkgdmFsaWRhdGUgV1NETCBmaWxlcyB0aGF0IGV4aXN0IG91dHNpZGUgb2YgeW91ciB3b3Jrc3BhY2UuCi0tIEJ5IHNlbGVjdGluZyB0byBydW4gdmFsaWRhdGlvbiBvbiBhbGwgV1NETCBmaWxlcyB0aGUgd2l6YXJkIHdpbGwgdmFsaWRhdGUgYWxsIFdTREwgZmlsZXMsIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUgdGhleSByZXNpZGUuCi08L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdTSTAwMDEwIj4KLTwhLS1kZXNjLS0+Ci08ZGVzY3JpcHRpb24+Ci1Zb3UgY2FuIHNlbGVjdCB3aGljaCB0eXBlcyBvZiBXU0RMIGZpbGVzIHRvIHJ1biB2YWxpZGF0aW9uIG9uOgotLSBCeSBzZWxlY3RpbmcgIk5vIHdpemFyZCBXU0RMIHZhbGlkYXRpb24iIHRoZSB3aXphcmRzIHdpbGwgbm90IHJ1biB2YWxpZGF0aW9uIG9uIHRoZSBXU0RMIGZpbGUuCi0tIEJ5IHNlbGVjdGluZyB0byBydW4gdmFsaWRhdGlvbiBvbiByZW1vdGUgZmlsZXMsIHRoZSB3aXphcmRzIHdpbGwgb25seSB2YWxpZGF0ZSBXU0RMIGZpbGVzIHRoYXQgZXhpc3Qgb3V0c2lkZSBvZiB5b3VyIHdvcmtzcGFjZS4KLS0gQnkgc2VsZWN0aW5nIHRvIHJ1biB2YWxpZGF0aW9uIG9uIGFsbCBXU0RMIGZpbGVzIHRoZSB3aXphcmQgd2lsbCB2YWxpZGF0ZSBhbGwgV1NETCBmaWxlcywgcmVnYXJkbGVzcyBvZiB3aGVyZSB0aGV5IHJlc2lkZS4KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLTxjb250ZXh0IGlkPSJQV1NJMDAwMTEiPgotPCEtLWRlc2MtLT4KLTxkZXNjcmlwdGlvbj4KLVlvdSBjYW4gc2VsZWN0IHdoaWNoIHR5cGVzIG9mIFdTREwgZmlsZXMgdG8gcnVuIHZhbGlkYXRpb24gb246Ci0tIEJ5IHNlbGVjdGluZyAiTm8gd2l6YXJkIFdTREwgdmFsaWRhdGlvbiIgdGhlIHdpemFyZHMgd2lsbCBub3QgcnVuIHZhbGlkYXRpb24gb24gdGhlIFdTREwgZmlsZS4KLS0gQnkgc2VsZWN0aW5nIHRvIHJ1biB2YWxpZGF0aW9uIG9uIHJlbW90ZSBmaWxlcywgdGhlIHdpemFyZHMgd2lsbCBvbmx5IHZhbGlkYXRlIFdTREwgZmlsZXMgdGhhdCBleGlzdCBvdXRzaWRlIG9mIHlvdXIgd29ya3NwYWNlLgotLSBCeSBzZWxlY3RpbmcgdG8gcnVuIHZhbGlkYXRpb24gb24gYWxsIFdTREwgZmlsZXMgdGhlIHdpemFyZCB3aWxsIHZhbGlkYXRlIGFsbCBXU0RMIGZpbGVzLCByZWdhcmRsZXNzIG9mIHdoZXJlIHRoZXkgcmVzaWRlLgotPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXU0kwMDAxMiI+Ci08IS0tZGVzYy0tPgotPGRlc2NyaXB0aW9uPgotSWYgeW91IHNlbGVjdCB0byB3YWl0IGZvciBXU0RMIHZhbGlkYXRpb24gdG8gY29tcGxldGUsIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkcyB3aWxsIHByZXZlbnQgeW91IGZyb20gZ29pbmcgZm9yd2FyZCBhbmQgY29tcGxldGluZyBhZGRpdGlvbmFsIHdpemFyZCBwYWdlcyBvbmNlIHlvdSBoYXZlIHNlbGVjdGVkIHlvdXIgV1NETCBmaWxlIHVudGlsIHRoYXQgV1NETCBmaWxlIGhhcyBiZWVuIHZhbGlkYXRlZC4gSWYgdGhlIFdTREwgZmlsZSBpcyBub3QgdmFsaWQsIHlvdSB3aWxsIGJlIGdpdmVuIHRoZSBvcHRpb24gb2YgZXhpdGluZyB0aGUgd2l6YXJkIG9yIGNvbnRpbnVpbmcgd2l0aCB0aGUgaW52YWxpZCBXU0RMIGZpbGUuCi08L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdSUzAwMDkiPgotPCEtLWRlc2MtLT4KLTxkZXNjcmlwdGlvbj4KLVlvdSBjYW4gc2VsZWN0IHdoaWNoIHR5cGVzIG9mIFdTREwgZmlsZXMgdG8gcnVuIHZhbGlkYXRpb24gb246Ci0tIEJ5IHNlbGVjdGluZyAiTm8gd2l6YXJkIFdTREwgdmFsaWRhdGlvbiIgdGhlIHdpemFyZHMgd2lsbCBub3QgcnVuIHZhbGlkYXRpb24gb24gdGhlIFdTREwgZmlsZS4KLS0gQnkgc2VsZWN0aW5nIHRvIHJ1biB2YWxpZGF0aW9uIG9uIHJlbW90ZSBmaWxlcywgdGhlIHdpemFyZHMgd2lsbCBvbmx5IHZhbGlkYXRlIFdTREwgZmlsZXMgdGhhdCBleGlzdCBvdXRzaWRlIG9mIHlvdXIgd29ya3NwYWNlLgotLSBCeSBzZWxlY3RpbmcgdG8gcnVuIHZhbGlkYXRpb24gb24gYWxsIFdTREwgZmlsZXMgdGhlIHdpemFyZCB3aWxsIHZhbGlkYXRlIGFsbCBXU0RMIGZpbGVzLCByZWdhcmRsZXNzIG9mIHdoZXJlIHRoZXkgcmVzaWRlLgotPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUlMwMDAxMCI+Ci08IS0tZGVzYy0tPgotPGRlc2NyaXB0aW9uPgotWW91IGNhbiBzZWxlY3Qgd2hpY2ggdHlwZXMgb2YgV1NETCBmaWxlcyB0byBydW4gdmFsaWRhdGlvbiBvbjoKLS0gQnkgc2VsZWN0aW5nICJObyB3aXphcmQgV1NETCB2YWxpZGF0aW9uIiB0aGUgd2l6YXJkcyB3aWxsIG5vdCBydW4gdmFsaWRhdGlvbiBvbiB0aGUgV1NETCBmaWxlLgotLSBCeSBzZWxlY3RpbmcgdG8gcnVuIHZhbGlkYXRpb24gb24gcmVtb3RlIGZpbGVzLCB0aGUgd2l6YXJkcyB3aWxsIG9ubHkgdmFsaWRhdGUgV1NETCBmaWxlcyB0aGF0IGV4aXN0IG91dHNpZGUgb2YgeW91ciB3b3Jrc3BhY2UuCi0tIEJ5IHNlbGVjdGluZyB0byBydW4gdmFsaWRhdGlvbiBvbiBhbGwgV1NETCBmaWxlcyB0aGUgd2l6YXJkIHdpbGwgdmFsaWRhdGUgYWxsIFdTREwgZmlsZXMsIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUgdGhleSByZXNpZGUuCi08L2Rlc2NyaXB0aW9uPgotPC9jb250ZXh0PgotCi08Y29udGV4dCBpZD0iUFdSUzAwMTEiPgotPCEtLWRlc2MtLT4KLTxkZXNjcmlwdGlvbj4KLVlvdSBjYW4gc2VsZWN0IHdoaWNoIHR5cGVzIG9mIFdTREwgZmlsZXMgdG8gcnVuIHZhbGlkYXRpb24gb246Ci0tIEJ5IHNlbGVjdGluZyAiTm8gd2l6YXJkIFdTREwgdmFsaWRhdGlvbiIgdGhlIHdpemFyZHMgd2lsbCBub3QgcnVuIHZhbGlkYXRpb24gb24gdGhlIFdTREwgZmlsZS4KLS0gQnkgc2VsZWN0aW5nIHRvIHJ1biB2YWxpZGF0aW9uIG9uIHJlbW90ZSBmaWxlcywgdGhlIHdpemFyZHMgd2lsbCBvbmx5IHZhbGlkYXRlIFdTREwgZmlsZXMgdGhhdCBleGlzdCBvdXRzaWRlIG9mIHlvdXIgd29ya3NwYWNlLgotLSBCeSBzZWxlY3RpbmcgdG8gcnVuIHZhbGlkYXRpb24gb24gYWxsIFdTREwgZmlsZXMgdGhlIHdpemFyZCB3aWxsIHZhbGlkYXRlIGFsbCBXU0RMIGZpbGVzLCByZWdhcmRsZXNzIG9mIHdoZXJlIHRoZXkgcmVzaWRlLgotPC9kZXNjcmlwdGlvbj4KLTwvY29udGV4dD4KLQotPGNvbnRleHQgaWQ9IlBXUlMwMDEyIj4KLTwhLS1kZXNjLS0+Ci08ZGVzY3JpcHRpb24+Ci1Zb3UgY2FuIHNlbGVjdCB3aGljaCB0eXBlcyBvZiBXU0RMIGZpbGVzIHRvIHJ1biB2YWxpZGF0aW9uIG9uOgotLSBCeSBzZWxlY3RpbmcgIk5vIHdpemFyZCBXU0RMIHZhbGlkYXRpb24iIHRoZSB3aXphcmRzIHdpbGwgbm90IHJ1biB2YWxpZGF0aW9uIG9uIHRoZSBXU0RMIGZpbGUuCi0tIEJ5IHNlbGVjdGluZyB0byBydW4gdmFsaWRhdGlvbiBvbiByZW1vdGUgZmlsZXMsIHRoZSB3aXphcmRzIHdpbGwgb25seSB2YWxpZGF0ZSBXU0RMIGZpbGVzIHRoYXQgZXhpc3Qgb3V0c2lkZSBvZiB5b3VyIHdvcmtzcGFjZS4KLS0gQnkgc2VsZWN0aW5nIHRvIHJ1biB2YWxpZGF0aW9uIG9uIGFsbCBXU0RMIGZpbGVzIHRoZSB3aXphcmQgd2lsbCB2YWxpZGF0ZSBhbGwgV1NETCBmaWxlcywgcmVnYXJkbGVzcyBvZiB3aGVyZSB0aGV5IHJlc2lkZS4KLTwvZGVzY3JpcHRpb24+Ci08L2NvbnRleHQ+Ci0KLQotPC9jb250ZXh0cz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvLnByb2plY3QgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZTM2MGUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2Ly5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdjwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZiNzUxYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVwbHVnaW5OYW1lCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2O3NpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC4xMDAucXVhbGlmaWVyCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLUJ1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5Ci1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UuaGVscDtidW5kbGUtdmVyc2lvbj0iWzMuMy4xMDAsNC4wLjApIgotQnVuZGxlLVZlbmRvcjogJXByb3ZpZGVyTmFtZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2Fib3V0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2Jvb2suY3NzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2Jvb2suY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGQ4ODgwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9ib29rLmNzcworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUBpbXBvcnQgIi4uL1BST0RVQ1RfUExVR0lOL2Jvb2suY3NzIjsKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9idWlsZC5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMDEyNmMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSAuLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIGphdmFkb2N0b2MueG1sLFwKLSAgICAgICAgICAgICAgIHJlZmVyZW5jZS8sXAotICAgICAgICAgICAgICAgdG9waWNzX1JlZmVyZW5jZS54bWwsXAotICAgICAgICAgICAgICAgdG9waWNzX0V4dFBvaW50X1JlZmVyZW5jZS54bWwsXAotICAgICAgICAgICAgICAgbm90aWNlcy5odG1sLFwKLSAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXAotICAgICAgICAgICAgICAgYm9vay5jc3MsXAotICAgICAgICAgICAgICAgc2NoZW1hLmNzcwpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2J1aWxkRG9jcy54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvYnVpbGREb2NzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQzZjhhMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvYnVpbGREb2NzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0IG5hbWU9InByb2plY3QiIGRlZmF1bHQ9ImRlZmF1bHQiPgotCTx0YXJnZXQgbmFtZT0iZGVmYXVsdCI+Ci0JCTxhbnQgYW50ZmlsZT0iYnVpbGRKYXZhZG9jLnhtbCIgZGlyPSIke2Jhc2VkaXJ9Ii8+Ci0JCTxhbnQgYW50ZmlsZT0iYnVpbGRFeHREb2NzLnhtbCIgZGlyPSIke2Jhc2VkaXJ9Ii8+Ci0JPC90YXJnZXQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvYnVpbGRFeHREb2NzLnByb3BlcnRpZXMgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvYnVpbGRFeHREb2NzLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMmEwYzIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2J1aWxkRXh0RG9jcy5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBJbmZvcm1hdGlvbiBmb3IgZXh0ZW5zaW9uIHBvaW50IG92ZXJ2aWV3IGRvY3VtZW50Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIE92ZXJ2aWV3IGRvY3VtZW50IHRpdGxlCi10aXRsZSA9IFdTREwgRU1GIE1vZGVsIEV4dGVuc2lvbiBQb2ludHMKLWhlYWRlciA9IFdTREwgRU1GIE1vZGVsIEV4dGVuc2lvbiBQb2ludHMgCi0jIEludHJvZHVjdGlvbiBwYXJhZ3JhcGgKLW92ZXJ2aWV3ID0gVGhlIGZvbGxvd2luZyBleHRlbnNpb24gcG9pbnRzIGNhbiBiZSB1c2VkIHRvIGV4dGVuZCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBXU0RMIEVNRiBNb2RlbDogCi0KLSMgQSBsaXN0IG9mIHRoZSBleHRlbnNpb24gcG9pbnRzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZQotIyBleHRlbnNpb24gcG9pbnQgZG9jdW1lbnRhdGlvbi4KLWxpc3RlZC1leHQtcG9pbnRzPW9yZy5lY2xpcHNlLndzdC53c2RsLmV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yaWVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2J1aWxkRXh0RG9jcy54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvYnVpbGRFeHREb2NzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQzN2YxNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvYnVpbGRFeHREb2NzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdCBuYW1lPSJCdWlsZCBFeHRlbnNpb24gUG9pbnQgRG9jdW1lbnRhdGlvbiIgZGVmYXVsdD0iY3JlYXRlRXh0RG9jcyIgYmFzZWRpcj0iLiI+Ci0KLQk8cHJvcGVydHkgZmlsZT0iYnVpbGRFeHREb2NzLnByb3BlcnRpZXMiLz4KLQk8cHJvcGVydHkgbmFtZT0ib3V0cHV0RGlyIiB2YWx1ZT0iJHtiYXNlZGlyfSIvPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJhcGlvdXRwdXREaXIiIHZhbHVlPSIke291dHB1dERpcn0ke2ZpbGUuc2VwYXJhdG9yfXJlZmVyZW5jZSR7ZmlsZS5zZXBhcmF0b3J9ZXh0ZW5zaW9uLXBvaW50cyIvPgotCi0JPHRhcmdldCBuYW1lPSJjcmVhdGVFeHREb2NzIiBkZXBlbmRzPSJidWlsZEV4dERvY3MsIGNyZWF0ZURvY0xpc3RpbmdzIi8+Ci0KLSAJPHRhcmdldCBuYW1lPSJidWlsZEV4dERvY3MiPgotIAkJCi0gCQk8IS0tIGNsZWFudXAgb2xkIC0tPgotIAkJPGRlbGV0ZT4KLSAJIAkJPGZpbGVzZXQgZGlyPSIke2FwaW91dHB1dERpcn0iIGNhc2VzZW5zaXRpdmU9InllcyIgaWQ9ImV4dC1kb2NzLWxpc3QtZW50Ij4KLSAJIAkJCTxpbmNsdWRlIG5hbWU9IioqLyouaHRtbCIvPgotIAkJCTwvZmlsZXNldD4KLSAJCTwvZGVsZXRlPgotIAkJCi0gCQk8IS0tIGdlbmVyYXRlIG5ldyBodG1sIGZyb20gZXh0LXB0IHNjaGVtYXMgLS0+Ci0gCQk8cGRlLmNvbnZlcnRTY2hlbWFUb0hUTUwgbWFuaWZlc3Q9Ii4uL29yZy5lY2xpcHNlLndzdC53c2RsL3BsdWdpbi54bWwiIGRlc3RpbmF0aW9uPSIke2FwaW91dHB1dERpcn0iIC8+Ci0gCQkKLSAJCTwhLS0gR2V0IHRoZSBsaXN0IG9mIGV4dGVuc2lvbiBkb2MgZmlsZXMuIC0tPgotIAkJPGZpbGVzZXQgZGlyPSIke2FwaW91dHB1dERpcn0iIGNhc2VzZW5zaXRpdmU9InllcyIgaWQ9ImV4dC1kb2NzLWxpc3QtZW50IiA+Ci0gCQkJPGluY2x1ZGUgbmFtZT0iKiovKi5odG1sIi8+Ci0JCTwvZmlsZXNldD4KLSAJCQotIAkJPCEtLSBDb252ZXJ0IHRoZSBsaXN0IHRvIGFuIFhNTCByZXByZXNlbnRhdGlvbi4gLS0+Ci0gCQk8cGF0aGNvbnZlcnQgcHJvcGVydHk9ImV4dC1kb2MtZW50IiByZWZpZD0iZXh0LWRvY3MtbGlzdC1lbnQiIHBhdGhzZXA9IiZsdDsvZmlsZSZndDske2xpbmUuc2VwYXJhdG9yfSZsdDtmaWxlJmd0OyIgPgotIAkJCTxtYXAgZnJvbT0iJHthcGlvdXRwdXREaXJ9JHtmaWxlLnNlcGFyYXRvcn0iIHRvPSIiLz4KLSAJCTwvcGF0aGNvbnZlcnQ+Ci0gCQk8ZWNobyBmaWxlPSJleHRkb2NzLnhtbCI+Jmx0O2ZpbGVzIGNvbXBvbmVudD0id3NkbCImZ3Q7Jmx0O2ZpbGUmZ3Q7JHtleHQtZG9jLWVudH0mbHQ7L2ZpbGUmZ3Q7Jmx0Oy9maWxlcyZndDs8L2VjaG8+Ci0gCQkgCQkJCQkJCi0gCTwvdGFyZ2V0PgotCQotCTx0YXJnZXQgbmFtZT0iY3JlYXRlRG9jTGlzdGluZ3MiPgotCQk8IS0tIENyZWF0ZSB0aGUgb3ZlcnZpZXcgZG9jdW1lbnQuIC0tPgotCQk8eHNsdCBiYXNlZGlyPSIke2Jhc2VkaXJ9IiBpbj0iZXh0RG9jTGlzdGluZ3MueG1sIiBvdXQ9IiR7YXBpb3V0cHV0RGlyfSR7ZmlsZS5zZXBhcmF0b3J9aW5kZXguaHRtbCIgc3R5bGU9ImV4dERvY092ZXJ2aWV3LnhzbCI+Ci0JICAJCTxwYXJhbSBuYW1lPSJ0aXRsZSIgZXhwcmVzc2lvbj0iJHt0aXRsZX0iLz4KLQkgIAkJPHBhcmFtIG5hbWU9ImhlYWRlciIgZXhwcmVzc2lvbj0iJHtoZWFkZXJ9Ii8+Ci0JICAJCTxwYXJhbSBuYW1lPSJvdmVydmlldyIgZXhwcmVzc2lvbj0iJHtvdmVydmlld30iLz4KLQkJCTxwYXJhbSBuYW1lPSJsaXN0ZWQtZXh0LXBvaW50cyIgZXhwcmVzc2lvbj0iJHtsaXN0ZWQtZXh0LXBvaW50c30iLz4KLQkJPC94c2x0PgotCQkJCi0JCTwhLS0gQ3JlYXRlIHRoZSBleHRlbnRpb24gcG9pbnQgdG9jLiAtLT4KLQkJPHhzbHQgYmFzZWRpcj0iJHtiYXNlZGlyfSIgaW49ImV4dERvY0xpc3RpbmdzLnhtbCIgb3V0PSJ0b3BpY3NfRXh0UG9pbnRfUmVmZXJlbmNlLnhtbCIgc3R5bGU9ImV4dERvY1RvYy54c2wiPgotCQkJPHBhcmFtIG5hbWU9Imxpc3RlZC1leHQtcG9pbnRzIiBleHByZXNzaW9uPSIke2xpc3RlZC1leHQtcG9pbnRzfSIvPgotCQkJPG91dHB1dHByb3BlcnR5IG5hbWU9Im1ldGhvZCIgdmFsdWU9InhtbCIvPgotCQkJPG91dHB1dHByb3BlcnR5IG5hbWU9ImluZGVudCIgdmFsdWU9InllcyIvPgotCQk8L3hzbHQ+Ci0JCQkKLQk8L3RhcmdldD4KLTwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvYnVpbGRKYXZhZG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9idWlsZEphdmFkb2MueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODIyNmM3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9idWlsZEphdmFkb2MueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTxwcm9qZWN0Ci0gICAgbmFtZT0iamF2YWRvYyIKLSAgICBkZWZhdWx0PSJtYWluIgotICAgIGJhc2VkaXI9Ii4iPgotCQotICAgIDxwcm9wZXJ0eQotICAgICAgICBuYW1lPSJidWlsZERpcmVjdG9yeSIKLSAgICAgICAgdmFsdWU9IiR7YmFzZWRpcn0vLi4vLi4iIC8+Ci0KLSAgICA8IS0tID0gPSA9IHN0YW5kYXJkIHByb3BlcnRpZXMgcGF0dGVybiA9ID0gPSAtLT4KLSAgICA8IS0tIAotICAgICAgICBGaXJzdCBnZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gICAgICAgIE5vdGUgdG8gYmUgY3Jvc3MtcGxhdGZvcm0sICJlbnZpcm9ubWVudCB2YXJpYWJsZXMiIGFyZSBvbmx5IGFwcHJvcHJpYXRlIGZvciAKLSAgICAgICAgc29tZSB2YXJpYWJsZXMsIGUuZy4gb25lcyB3ZSBzZXQsIHNpbmNlIHByb3BlcnRpZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlLCBldmVuIGlmIAotICAgICAgICB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9uIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBhcmUgbm90LCBlLmcuIGl0IHdpbGwgCi0gICAgICAgIGJlICR7ZW52LlBhdGh9IG5vdCAke2Vudi5QQVRIfSBvbiBXaW5kb3dzIC0tPgotICAgIDxwcm9wZXJ0eSBlbnZpcm9ubWVudD0iZW52IiAvPgotCi0gICAgPCEtLSAKLSAgICAgICAgTGV0IHVzZXJzIG92ZXJyaWRlIHN0YW5kYXJkIHByb3BlcnRpZXMsIGlmIGRlc2lyZWQuCi0gICAgICAgIElmIHRoaXMgZGlyZWN0b3J5L2ZpbGVzIGRvZXMgbm90IGV4aXN0LCB0aGVuIGl0IHdpbGwgYmUgaWdub3JlZCwgCi0gICAgICAgIGFuZCBkZWZhdWx0cyB1c2VkLgotICAgIC0tPgotICAgIDxwcm9wZXJ0eQotICAgICAgICBmaWxlPSIke2Vudi5MT0NBTF9CVUlMRF9QUk9QRVJUSUVTX0RJUn0vJHthbnQucHJvamVjdC5uYW1lfS5wcm9wZXJ0aWVzIiAvPgotCi0gICAgPHByb3BlcnR5IGZpbGU9ImphdmFkb2MucHJvcGVydGllcyIgLz4KLSAgICA8cHJvcGVydHkgbmFtZT0ib3V0cHV0RGlyIiB2YWx1ZT0iJHtiYXNlZGlyfSIgLz4KLQotCTx0YXJnZXQKLSAgICAgICAgbmFtZT0ibWFpbiIKLSAgICAgICAgZGVwZW5kcz0iamF2YWRvYywgcGFja2FnZXRvYyIKLSAgICAgICAgZGVzY3JpcHRpb249IkJ1aWxkcyBQbHVnaW4gSmF2YWRvYyIgLz4KLQotICAgIDx0YXJnZXQKLSAgICAgICAgbmFtZT0iamF2YWRvYyIKLSAgICAgICAgZGVwZW5kcz0iZ2V0U2tpcEphdmFEb2NQYXJhbSIKLSAgICAgICAgdW5sZXNzPSJkb3NraXBKYXZhRG9jIj4KLSAgICAJPGVjaG8gbWVzc2FnZT0iYmFzZWRpcjogJHtiYXNlZGlyfSIgLz4KLSAgICAJPGVjaG8gbWVzc2FnZT0ib3V0cHV0ZGlyOiAke291dHB1dERpcn0iIC8+Ci0gICAgICAgIDxlY2hvIG1lc3NhZ2U9ImNsYXNzcGF0aDogJHtKMlNFLTEuNX0iIC8+Ci0gICAgICAgIDxlY2hvIG1lc3NhZ2U9ImJ1aWxkRGlyZWN0b3J5OiAke2J1aWxkRGlyZWN0b3J5fSIgLz4KLQotICAgICAgICA8amF2YWRvYwotICAgICAgICAgICAgYWNjZXNzPSJwdWJsaWMiCi0gICAgICAgICAgICBhdXRob3I9ImZhbHNlIgotICAgICAgICAgICAgZGVzdGRpcj0iJHtvdXRwdXREaXJ9L3JlZmVyZW5jZS9hcGkiCi0gICAgICAgICAgICBkb2N0aXRsZT0iJHthcGkudGl0bGV9IgotICAgICAgICAgICAgbm9kZXByZWNhdGVkPSJmYWxzZSIKLSAgICAgICAgICAgIG5vZGVwcmVjYXRlZGxpc3Q9ImZhbHNlIgotICAgICAgICAgICAgbm9pbmRleD0iZmFsc2UiCi0gICAgICAgICAgICBub25hdmJhcj0iZmFsc2UiCi0gICAgICAgICAgICBub3RyZWU9ImZhbHNlIgotICAgICAgICAgICAgRW5jb2Rpbmc9IklTTy04ODU5LTEiCi0gICAgICAgICAgICBwYWNrYWdlbmFtZXM9IiR7YXBpLnBhY2thZ2VzfSIKLSAgICAgICAgICAgIHNvdXJjZXBhdGg9IiR7cGx1Z2luLnNvdXJjZWZvbGRlcnN9IgotICAgICAgICAgICAgc3BsaXRpbmRleD0idHJ1ZSIKLSAgICAgICAgICAgIHVzZT0idHJ1ZSIKLSAgICAgICAgICAgIHZlcnNpb249InRydWUiCi0gICAgICAgICAgICBicmVha2l0ZXJhdG9yPSJ5ZXMiCi0gICAgICAgICAgICB2ZXJib3NlPSJmYWxzZSIKLSAgICAgICAgICAgIGZhaWxvbmVycm9yPSJmYWxzZSIKLSAgICAgICAgCWNsYXNzcGF0aD0iIj4KLSAgICAgICAgCQotICAgICAgICAgICAgPGNsYXNzcGF0aD4KLSAgICAgICAgICAgIAk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vLi4vIj4KLSAgICAgICAgICAgIAkJPGluY2x1ZGUgbmFtZT0iamF2YXgud3NkbC8qLmphciIvPgotICAgICAgICAgICAgCQk8aW5jbHVkZSBuYW1lPSJvcmcuZWNsaXBzZS54c2QvKi5qYXIiLz4KLQkJCQk8L2ZpbGVzZXQ+Ci0gICAgICAgICAgICA8L2NsYXNzcGF0aD4KLSAgICAgICAgICAgIAotCQkJPHRhZyBuYW1lPSJpZ25vcmUiICAgICBkZXNjcmlwdGlvbj0iaWdub3JlIiBlbmFibGVkPSJmYWxzZSIvPgotCQkJPHRhZyBuYW1lPSJnZW5lcmF0ZWQiICBkZXNjcmlwdGlvbj0iaWdub3JlIiBlbmFibGVkPSJmYWxzZSIvPgotCQkJPHRhZyBuYW1lPSJtb2RlbCIgICAgICBkZXNjcmlwdGlvbj0iaWdub3JlIiBlbmFibGVkPSJmYWxzZSIvPgotCQkJPHRhZyBuYW1lPSJtb2RpZmlhYmxlIiBkZXNjcmlwdGlvbj0iaWdub3JlIiBlbmFibGVkPSJmYWxzZSIvPgotCQkJPHRhZyBuYW1lPSJleHRlbmRzIiAgICBkZXNjcmlwdGlvbj0iaWdub3JlIiBlbmFibGVkPSJmYWxzZSIvPgotCQkJPHRhZyBuYW1lPSJpbXBsZW1lbnRzIiBkZXNjcmlwdGlvbj0iaWdub3JlIiBlbmFibGVkPSJmYWxzZSIvPgotCQkJPHRhZyBuYW1lPSJvcmRlcmVkIiAgICBkZXNjcmlwdGlvbj0iaWdub3JlIiBlbmFibGVkPSJmYWxzZSIvPgotCi0gICAgICAgIDwvamF2YWRvYz4KLSAgICA8L3RhcmdldD4KLQotICAgIDx0YXJnZXQgbmFtZT0icGFja2FnZXRvYyI+Ci0gICAgICAgIDxsb2FkZmlsZQotICAgICAgICAgICAgZmFpbG9uZXJyb3I9ImZhbHNlIgotICAgICAgICAgICAgcHJvcGVydHk9Ind0cC5wYWNrYWdlcyIKLSAgICAgICAgICAgIHNyY0ZpbGU9IiR7b3V0cHV0RGlyfS9yZWZlcmVuY2UvYXBpL3BhY2thZ2UtbGlzdCI+Ci0gICAgICAgICAgICA8ZmlsdGVyY2hhaW4+Ci0gICAgICAgICAgICAgICAgPGZpbHRlcnJlYWRlcgotICAgICAgICAgICAgICAgICAgICBjbGFzc25hbWU9Im9yZy5hcGFjaGUudG9vbHMuYW50LmZpbHRlcnMuUHJlZml4TGluZXMiPgotICAgICAgICAgICAgICAgICAgICA8cGFyYW0KLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InByZWZpeCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSImbHQ7L3BhY2thZ2UmZ3Q7Jmx0O3BhY2thZ2UmZ3Q7IiAvPgotICAgICAgICAgICAgICAgIDwvZmlsdGVycmVhZGVyPgotICAgICAgICAgICAgICAgIDxzdHJpcGxpbmVicmVha3MgLz4KLSAgICAgICAgICAgIDwvZmlsdGVyY2hhaW4+Ci0gICAgICAgIDwvbG9hZGZpbGU+Ci0KLSAgICAgICAgPCEtLSBDcmVhdGUgcGFja2FnZXMueG1sIGZpbGUgLS0+Ci0gICAgICAgIDxlY2hvIGZpbGU9InBhY2thZ2VzLnhtbCI+Ci0gICAgICAgICAgICAmbHQ7cGFja2FnZXMmZ3Q7Jmx0O3BhY2thZ2UmZ3Q7JHt3dHAucGFja2FnZXN9Jmx0Oy9wYWNrYWdlJmd0OyZsdDsvcGFja2FnZXMmZ3Q7Ci0gICAgICAgIDwvZWNobz4KLQotICAgICAgICA8eHNsdAotICAgICAgICAgICAgYmFzZWRpcj0iJHtiYXNlZGlyfS9idWlsZCIKLSAgICAgICAgICAgIGluPSJwYWNrYWdlcy54bWwiCi0gICAgICAgICAgICBvdXQ9ImphdmFkb2N0b2MueG1sIgotICAgICAgICAgICAgc3R5bGU9ImphdmFkb2NUb2MueHNsIj4KLSAgICAgICAgICAgIDxvdXRwdXRwcm9wZXJ0eQotICAgICAgICAgICAgICAgIG5hbWU9Im1ldGhvZCIKLSAgICAgICAgICAgICAgICB2YWx1ZT0ieG1sIiAvPgotICAgICAgICAgICAgPG91dHB1dHByb3BlcnR5Ci0gICAgICAgICAgICAgICAgbmFtZT0iaW5kZW50IgotICAgICAgICAgICAgICAgIHZhbHVlPSJ5ZXMiIC8+Ci0gICAgICAgIDwveHNsdD4KLSAgICA8L3RhcmdldD4KLSAgICAKLSAgICA8dGFyZ2V0Ci0gICAgICAgIG5hbWU9ImdldFNraXBKYXZhRG9jUGFyYW0iCi0gICAgICAgIGlmPSJza2lwSmF2YURvYyI+Ci0gICAgICAgIDxlY2hvIG1lc3NhZ2U9InNraXBKYXZhRG9jOiAke3NraXBKYXZhRG9jfSIgLz4KLSAgICAgICAgPGNvbmRpdGlvbiBwcm9wZXJ0eT0iZG9za2lwSmF2YURvYyI+Ci0gICAgICAgICAgICA8ZXF1YWxzCi0gICAgICAgICAgICAgICAgYXJnMT0iJHtza2lwSmF2YURvY30iCi0gICAgICAgICAgICAgICAgYXJnMj0idHJ1ZSIKLSAgICAgICAgICAgICAgICB0cmltPSJ0cnVlIgotICAgICAgICAgICAgICAgIGNhc2VzZW5zaXRpdmU9ImZhbHNlIiAvPgotICAgICAgICA8L2NvbmRpdGlvbj4KLSAgICA8L3RhcmdldD4KLTwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvZXh0RG9jTGlzdGluZ3MueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2V4dERvY0xpc3RpbmdzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY3Y2YzZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvZXh0RG9jTGlzdGluZ3MueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNvbXBvbmVudHM+Ci0JPGNvbXBvbmVudCBuYW1lPSJXU0RMIEFQSSIgaWQ9IndzZGwiIGZpbGU9ImV4dGRvY3MueG1sIi8+Ci08L2NvbXBvbmVudHM+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvZXh0RG9jT3ZlcnZpZXcueHNsIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2V4dERvY092ZXJ2aWV3LnhzbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY3MGE0ZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvZXh0RG9jT3ZlcnZpZXcueHNsCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIKLSAgICB2ZXJzaW9uPSIxLjAiCi0gICAgeG1sbnM6eGFsYW49Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94c2x0Ij4KLSAgICA8eHNsOnBhcmFtIG5hbWU9InRpdGxlIi8+Ci0gICAgPHhzbDpwYXJhbSBuYW1lPSJoZWFkZXIiLz4KLSAgICA8eHNsOnBhcmFtIG5hbWU9Im92ZXJ2aWV3Ii8+Ci0gICAgPHhzbDpwYXJhbSBuYW1lPSJsaXN0ZWQtZXh0LXBvaW50cyIvPgotICAgIAotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvbXBvbmVudHMiPgotICAgIAkKLSAgICAJPHhzbDp0ZXh0IGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMiPgotICAgIAkmbHQ7IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRSQU5TSVRJT05BTC8vRU4iJmd0OwotCQk8L3hzbDp0ZXh0PgotCQk8aHRtbD4KLQkJPGhlYWQ+Ci0JCTx4c2w6dGV4dCBkaXNhYmxlLW91dHB1dC1lc2NhcGluZz0ieWVzIj4KLQkJJmx0O21ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIFRoaXMgcGFnZSBpcyBtYWRlIGF2YWlsYWJsZSB1bmRlciBsaWNlbnNlLiBGb3IgZnVsbCBkZXRhaWxzIHNlZSB0aGUgTEVHQUwgaW4gdGhlIGRvY3VtZW50YXRpb24gYm9vayB0aGF0IGNvbnRhaW5zIHRoaXMgcGFnZS4iICZndDsKLQotICAgCQkmbHQ7bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIiZndDsKLSAgIAkJPC94c2w6dGV4dD4KLSAgIAkJPHRpdGxlPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkdGl0bGUiLz48L3RpdGxlPgotICAgCQk8eHNsOnRleHQgZGlzYWJsZS1vdXRwdXQtZXNjYXBpbmc9InllcyI+Ci0JCSZsdDtMSU5LIFJFTD0iU1RZTEVTSEVFVCIgSFJFRj0iLi4vLi4vYm9vay5jc3MiIENIQVJTRVQ9IklTTy04ODU5LTEiIFRZUEU9InRleHQvY3NzIiZndDsKLQkJPC94c2w6dGV4dD4KLQkJPC9oZWFkPgotCQk8Ym9keSBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzgwMDA4MCI+Ci0KLQkJPGNlbnRlcj4KLQkJPGgxPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkaGVhZGVyIi8+PC9oMT4KLQkJPC9jZW50ZXI+Ci0KLQkJPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IiRvdmVydmlldyIvPgotICAgIAk8eHNsOmZvci1lYWNoIHNlbGVjdD0iY29tcG9uZW50Ij4KLSAgICAJCTx4c2w6c29ydCBzZWxlY3Q9IkBpZCIvPgotICAgIAkJPGgzPjxhIG5hbWU9IntAaWR9Ij48L2E+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IkBuYW1lIi8+PC9oMz4KLSAgICAJCTx1bD4KLSAgICAJCQk8eHNsOmZvci1lYWNoIHNlbGVjdD0iZG9jdW1lbnQoQGZpbGUpL2ZpbGVzL2ZpbGUiPgotICAgICAgIAkJCQk8eHNsOnNvcnQgc2VsZWN0PSJ0ZXh0KCkiLz4KLSAgICAJCQkJIDx4c2w6aWYgdGVzdD0iY29udGFpbnMoJGxpc3RlZC1leHQtcG9pbnRzLCB0cmFuc2xhdGUoc3Vic3RyaW5nKHRleHQoKSwgMCwgc3RyaW5nLWxlbmd0aCh0ZXh0KCkpIC0gNCksJ18nLCcuJykpIj4gCi0gIAkJCQkJCTxsaT4KLSAgCQkJCQkJCTxhIGhyZWY9Int0ZXh0KCl9Ij48eHNsOnZhbHVlLW9mIHNlbGVjdD0idHJhbnNsYXRlKHN1YnN0cmluZyh0ZXh0KCksIDAsIHN0cmluZy1sZW5ndGgodGV4dCgpKSAtIDQpLCdfJywnLicpIi8+PC9hPiAKLSAgCQkJCQkJPC9saT4KLSAgCQkJCQk8L3hzbDppZj4KLSAgICAJCQk8L3hzbDpmb3ItZWFjaD4KLSAgICAJCTwvdWw+Ci0gICAgCTwveHNsOmZvci1lYWNoPgotICAgIAk8L2JvZHk+Ci0JCTwvaHRtbD4KLSAgICA8L3hzbDp0ZW1wbGF0ZT4KLTwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvZXh0RG9jVG9jLnhzbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9leHREb2NUb2MueHNsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTQyNDljLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9leHREb2NUb2MueHNsCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIKLSAgICB2ZXJzaW9uPSIxLjAiCi0gICAgeG1sbnM6eGFsYW49Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94c2x0IgotICAgIGV4Y2x1ZGUtcmVzdWx0LXByZWZpeGVzPSJ4YWxhbiI+Ci0gICAgPHhzbDpwYXJhbSBuYW1lPSJsaXN0ZWQtZXh0LXBvaW50cyIvPgotICAgIAotICAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb21wb25lbnRzIj4KLSAgICAgCTx4c2w6dGV4dCBkaXNhYmxlLW91dHB1dC1lc2NhcGluZz0ieWVzIj4KLSZsdDs/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8mZ3Q7Ci0JIAk8L3hzbDp0ZXh0PgotCQk8dG9jIGxhYmVsPSJFeHRlbnNpb24gUG9pbnRzIFJlZmVyZW5jZSI+Ci0KLSAgICAJPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImNvbXBvbmVudCI+Ci0gICAgCQk8eHNsOnNvcnQgc2VsZWN0PSJAaWQiLz4KLSAgICAJCQk8eHNsOmZvci1lYWNoIHNlbGVjdD0iZG9jdW1lbnQoQGZpbGUpL2ZpbGVzL2ZpbGUiPgotICAgICAgIAkJCQk8eHNsOnNvcnQgc2VsZWN0PSJ0ZXh0KCkiLz4KLSAgICAJCQkJPHhzbDppZiB0ZXN0PSJjb250YWlucygkbGlzdGVkLWV4dC1wb2ludHMsIHRyYW5zbGF0ZShzdWJzdHJpbmcodGV4dCgpLCAwLCBzdHJpbmctbGVuZ3RoKHRleHQoKSkgLSA0KSwnXycsJy4nKSkiPiAKLQkgCQkJCQkKLQkgCQkJCQk8dG9waWMgbGFiZWw9Int0cmFuc2xhdGUoc3Vic3RyaW5nKHRleHQoKSwgMCwgc3RyaW5nLWxlbmd0aCh0ZXh0KCkpIC0gNCksJ18nLCcuJyl9IiBocmVmPSJyZWZlcmVuY2UvZXh0ZW5zaW9uLXBvaW50cy97dGV4dCgpfSIgLz4KLSAgCQkJCQkKLSAgCQkJCQk8L3hzbDppZj4KLSAgICAJCQk8L3hzbDpmb3ItZWFjaD4KLSAgICAJPC94c2w6Zm9yLWVhY2g+Ci0gICAgCQotCQk8L3RvYz4gCi0JPC94c2w6dGVtcGxhdGU+Ci08L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2V4dGRvY3MueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2V4dGRvY3MueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmQ2MDY5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9leHRkb2NzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotPGZpbGVzIGNvbXBvbmVudD0id3NkbCI+PGZpbGU+b3JnX2VjbGlwc2Vfd3N0X3dzZGxfY29udGVudEdlbmVyYXRvcnMuaHRtbDwvZmlsZT4KLTxmaWxlPm9yZ19lY2xpcHNlX3dzdF93c2RsX2V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yaWVzLmh0bWw8L2ZpbGU+PC9maWxlcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvamF2YWRvYy5wcm9wZXJ0aWVzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2phdmFkb2MucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZkNzY3Ny4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvamF2YWRvYy5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotCi1wbHVnaW4uc291cmNlZm9sZGVycz0uLi9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtd3NkbDtcCi0uLi9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtaHR0cDtcCi0uLi9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtbWltZTtcCi0uLi9vcmcuZWNsaXBzZS53c3Qud3NkbC9zcmMtc29hcDtcCi0KLQotYXBpLnBhY2thZ2VzPW9yZy5lY2xpcHNlLndzdC53c2RsLFwKLW9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwsXAotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLFwKLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSxcCi1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAKLQotCi1hcGkudGl0bGU9V2ViIFRvb2xzIFBsYXRmb3JtOiBXU0RMIEVNRiBNb2RlbCBBUEkgZG9jdW1lbnRhdGlvbgotCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvamF2YWRvYy54c2wgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvamF2YWRvYy54c2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViODI0ZTUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2phdmFkb2MueHNsCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08eHNsOnN0eWxlc2hlZXQKLQl4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIKLQl2ZXJzaW9uPSIxLjAiPgotCi0JPHhzbDp2YXJpYWJsZSBuYW1lPSJyb290Ij4KLQkJPHhzbDpjaG9vc2U+Ci0JCQk8eHNsOndoZW4gdGVzdD0iL2h0bWwvaGVhZC9tZXRhW0BuYW1lPSdyb290J10vQGNvbnRlbnQiPgotCQkJCTx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIvaHRtbC9oZWFkL21ldGFbQG5hbWU9J3Jvb3QnXS9AY29udGVudCIgLz4KLQkJCTwveHNsOndoZW4+Ci0JCQk8eHNsOm90aGVyd2lzZT4KLQkJCQk8eHNsOnRleHQ+Li4vLi48L3hzbDp0ZXh0PgotCQkJPC94c2w6b3RoZXJ3aXNlPgotCQk8L3hzbDpjaG9vc2U+Ci0JPC94c2w6dmFyaWFibGU+Ci0KLQk8eHNsOnRlbXBsYXRlIG1hdGNoPSIvIj4KLQkJPHhzbDphcHBseS10ZW1wbGF0ZXMgLz4KLQk8L3hzbDp0ZW1wbGF0ZT4KLQotCTx4c2w6dGVtcGxhdGUgbWF0Y2g9Imh0bWwiPgotCQk8aHRtbD4KLQkJCTxoZWFkPgotCQkJCTxtZXRhCi0JCQkJCWNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIgotCQkJCQlodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci0JCQkJPGxpbmsKLQkJCQkJdHlwZT0idGV4dC9jc3MiCi0JCQkJCWhyZWY9Inskcm9vdH0vYXBpc3R5bGVzLmNzcyIKLQkJCQkJcmVsPSJzdHlsZXNoZWV0IiAvPgotCQkJCTx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iaGVhZC90aXRsZSIgLz4KLQkJCTwvaGVhZD4KLQkJCTxib2R5PiAKLQkJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcwotCQkJCQlzZWxlY3Q9ImJvZHkvKiIKLQkJCQkJbW9kZT0iYm9keSIgLz4KLQkJCTwvYm9keT4KLQkJPC9odG1sPgotCTwveHNsOnRlbXBsYXRlPgotCi0JPHhzbDp0ZW1wbGF0ZQotCQltYXRjaD0iaDEiCi0JCW1vZGU9ImJhbm5lciI+Ci0JCTx0YWJsZQotCQkJYm9yZGVyPSIwIgotCQkJY2VsbHBhZGRpbmc9IjIiCi0JCQljZWxsc3BhY2luZz0iNSIKLQkJCXdpZHRoPSIxMDAlIj4KLQkJCTx0Ym9keT4KLQkJCQk8dHI+Ci0JCQkJCTx0ZAotCQkJCQkJYWxpZ249ImxlZnQiCi0JCQkJCQl3aWR0aD0iNjAlIj4KLQkJCQkJCTxmb250IGNsYXNzPSJpbmRleHRvcCI+Ci0JCQkJCQkJPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iIC8+Ci0JCQkJCQk8L2ZvbnQ+Ci0JCQkJCQk8YnIgLz4KLQkJCQkJCTxmb250IGNsYXNzPSJpbmRleHN1YiI+Ci0JCQkJCQkJPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii9odG1sL2hlYWQvdGl0bGUiIC8+Ci0JCQkJCQk8L2ZvbnQ+Ci0JCQkJCTwvdGQ+Ci0JCQkJCTx0ZCB3aWR0aD0iNDAlIj4KLQkJCQkJCTxpbWcKLQkJCQkJCQlzcmM9Inskcm9vdH0vb3ZlcnZpZXcvSWRlYS5qcGciCi0JCQkJCQkJYWxpZ249Im1pZGRsZSIKLQkJCQkJCQloZWlnaHQ9Ijg2IgotCQkJCQkJCWhzcGFjZT0iNTAiCi0JCQkJCQkJd2lkdGg9IjEyMCIgLz4KLQkJCQkJPC90ZD4KLQkJCQk8L3RyPgotCQkJPC90Ym9keT4KLQkJPC90YWJsZT4KLQk8L3hzbDp0ZW1wbGF0ZT4KLQotCTx4c2w6dGVtcGxhdGUKLQkJbWF0Y2g9ImgxIgotCQltb2RlPSJib2R5IiAvPgotCi0JPHhzbDp0ZW1wbGF0ZQotCQltYXRjaD0iaDIiCi0JCW1vZGU9ImJvZHkiPgotCi0JCTx0YWJsZQotCQkJYm9yZGVyPSIwIgotCQkJY2VsbHBhZGRpbmc9IjIiCi0JCQljZWxsc3BhY2luZz0iNSIKLQkJCXdpZHRoPSIxMDAlIj4KLQkJCTx0Ym9keT4KLQkJCQk8dHI+Ci0JCQkJCTx0ZAotCQkJCQkJY29sc3Bhbj0iMiIKLQkJCQkJCWFsaWduPSJsZWZ0IgotCQkJCQkJYmdjb2xvcj0iIzAwODBjMCIKLQkJCQkJCXZhbGlnbj0idG9wIj4KLQkJCQkJCTxiPgotCQkJCQkJCTxmb250Ci0JCQkJCQkJCWNvbG9yPSIjZmZmZmZmIgotCQkJCQkJCQlmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPgotCQkJCQkJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcyAvPgotCQkJCQkJCTwvZm9udD4KLQkJCQkJCTwvYj4KLQkJCQkJPC90ZD4KLQkJCQk8L3RyPgotCQkJPC90Ym9keT4KLQkJPC90YWJsZT4KLQk8L3hzbDp0ZW1wbGF0ZT4KLQotCTx4c2w6dGVtcGxhdGUKLQkJbWF0Y2g9ImgzIgotCQltb2RlPSJib2R5Ij4KLQkJPGltZwotCQkJc3JjPSJ7JHJvb3R9L2ltYWdlcy9BZGFycm93LmdpZiIKLQkJCWJvcmRlcj0iMCIKLQkJCWhlaWdodD0iMTYiCi0JCQl3aWR0aD0iMTYiIC8+Ci0JCTx4c2w6YXBwbHktdGVtcGxhdGVzIC8+Ci0JPC94c2w6dGVtcGxhdGU+Ci0KLQk8eHNsOnRlbXBsYXRlCi0JCW1hdGNoPSIqIgotCQltb2RlPSJib2R5Ij4KLQotCQk8eHNsOmNvcHk+Ci0JCQk8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Iip8QCp8dGV4dCgpIiAvPgotCQk8L3hzbDpjb3B5PgotCTwveHNsOnRlbXBsYXRlPgotCi0JPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iKnxAKnx0ZXh0KCkiPgotCQk8eHNsOmNvcHk+Ci0JCQk8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Iip8QCp8dGV4dCgpIiAvPgotCQk8L3hzbDpjb3B5PgotCTwveHNsOnRlbXBsYXRlPgotCi08L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2phdmFkb2NUb2MueHNsIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2phdmFkb2NUb2MueHNsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDcxNzk1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9qYXZhZG9jVG9jLnhzbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCi0gICAgdmVyc2lvbj0iMS4wIgotICAgIHhtbG5zOnhhbGFuPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveHNsdCIKLSAgICBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcz0ieGFsYW4iPgotICAgIAotICAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJwYWNrYWdlcyI+Ci0gICAgIDx4c2w6dGV4dCBkaXNhYmxlLW91dHB1dC1lc2NhcGluZz0ieWVzIj4KLSZsdDs/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8mZ3Q7Ci0JIDwveHNsOnRleHQ+Ci0JIDx0b2MgbGFiZWw9IkphdmFkb2MgUGFja2FnZXMgUmVmZXJlbmNlIj4KLQkgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9InBhY2thZ2UiPgotCSA8eHNsOnNvcnQgc2VsZWN0PSJ0ZXh0KCkiLz4KLQkgCTx4c2w6aWYgdGVzdD0idGV4dCgpICE9ICcnIj4KLQkgCQk8dG9waWMgbGFiZWw9Int0ZXh0KCl9IiBocmVmPSJyZWZlcmVuY2UvYXBpL3t0cmFuc2xhdGUodGV4dCgpLCcuJywnLycpfS9wYWNrYWdlLXN1bW1hcnkuaHRtbCIvPgotCSAJPC94c2w6aWY+Ci0JIDwveHNsOmZvci1lYWNoPgotCQotCSA8L3RvYz4gCi0JPC94c2w6dGVtcGxhdGU+Ci08L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2phdmFkb2N0b2MueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L2phdmFkb2N0b2MueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWI2NDdiLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9qYXZhZG9jdG9jLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+Ci0JIDx0b2MgbGFiZWw9IkphdmFkb2MgUGFja2FnZXMgUmVmZXJlbmNlIj4KLTx0b3BpYyBocmVmPSJyZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIiBsYWJlbD0ib3JnLmVjbGlwc2Uud3N0LndzZGwiLz4KLTx0b3BpYyBocmVmPSJyZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgbGFiZWw9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCIvPgotPHRvcGljIGhyZWY9InJlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIiBsYWJlbD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIi8+Ci08dG9waWMgaHJlZj0icmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIGxhYmVsPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiLz4KLTx0b3BpYyBocmVmPSJyZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIGxhYmVsPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIi8+Ci08L3RvYz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9ub3RpY2VzLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3Yvbm90aWNlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWQwZGY4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9ub3RpY2VzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08IWRvY3R5cGUgaHRtbCBwdWJsaWMgIi0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vZW4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPExJTksgUkVMPSJTVFlMRVNIRUVUIiBIUkVGPSJib29rLmNzcyIgQ0hBUlNFVD0iSVNPLTg4NTktMSIKLQlUWVBFPSJ0ZXh0L2NzcyI+Ci08dGl0bGU+TGVnYWwgTm90aWNlczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLQotPGgzPjxhIE5BTUU9Ik5vdGljZXMiPjwvYT5Ob3RpY2VzPC9oMz4KLTxwPlRoZSBtYXRlcmlhbCBpbiB0aGlzIGd1aWRlIGlzIENvcHlyaWdodCAoYykgSUJNIENvcnBvcmF0aW9uIGFuZAotb3RoZXJzIDIwMDAsIDIwMDguPC9wPgotPHA+PGEgaHJlZj0iYWJvdXQuaHRtbCI+VGVybXMgYW5kIGNvbmRpdGlvbnMgcmVnYXJkaW5nIHRoZSB1c2Ugb2YgdGhpcwotZ3VpZGUuPC9hPjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9wYWNrYWdlcy54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcGFja2FnZXMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmYzZjE5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9wYWNrYWdlcy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotICAgICAgICAgICAgPHBhY2thZ2VzPjxwYWNrYWdlPjwvcGFja2FnZT48cGFja2FnZT5vcmcuZWNsaXBzZS53c3Qud3NkbDwvcGFja2FnZT48cGFja2FnZT5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L3BhY2thZ2U+PHBhY2thZ2U+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9wYWNrYWdlPjxwYWNrYWdlPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvcGFja2FnZT48cGFja2FnZT5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9wYWNrYWdlPjwvcGFja2FnZXM+Ci0gICAgICAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9wbHVnaW4ucHJvcGVydGllcyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZiOTM2YS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBUbyBjb2RlIGRldmVsb3BlcjoKLSMgICBEbyBOT1QgY2hhbmdlIHRoZSBwcm9wZXJ0aWVzIGJldHdlZW4gdGhpcyBsaW5lIGFuZCB0aGUKLSMgICAiJSUlIEVORCBPRiBUUkFOU0xBVEVEIFBST1BFUlRJRVMgJSUlIiBsaW5lLgotIyAgIE1ha2UgYSBuZXcgcHJvcGVydHkgbmFtZSwgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgYW5kIGNoYW5nZQotIyAgIHRoZSBjb2RlIHRvIHVzZSB0aGUgbmV3IHByb3BlcnR5LgotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICUlJSBFTkQgT0YgVFJBTlNMQVRFRCBQUk9QRVJUSUVTICUlJQotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1wbHVnaW5OYW1lID0gV1NETCBFTUYgTW9kZWwgSmF2YWRvYyBEb2N1bWVudGF0aW9uCi1wcm92aWRlck5hbWUgPSBFY2xpcHNlLm9yZwpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3BsdWdpbi54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjYjIyMi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy40Ij8+Ci08cGx1Z2luPgotCi0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI+Ci0gICAgICA8dG9jIGZpbGU9InRvcGljc19SZWZlcmVuY2UueG1sIiAvPgotCSAgPHRvYyBmaWxlPSJqYXZhZG9jdG9jLnhtbCIvPgotCSAgPHRvYyBmaWxlPSJ0b3BpY3NfRXh0UG9pbnRfUmVmZXJlbmNlLnhtbCIvPiAgICAgIAotICAgPC9leHRlbnNpb24+Ci0KLTwvcGx1Z2luPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlYWRtZS50eHQgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVhZG1lLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEyNzI5YS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVhZG1lLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVRvIGdlbmVyYXRlIGphdmFkb2MgZm9sbG93IHRoZXNlIHN0ZXBzOgotCi0tIG1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGVzZSBwbHVnLWlucyBpbiB0aGUgd29ya3NwYWNlCi0Jb3JnLmVjbGlwc2Uud3N0LndzZGwKLQlqYXZheC53c2RsIChhcyBhIGJpbmFyeSBpbXBvcnQpCi0Jb3JnLmVjbGlwc2UueHNkIChhcyBhIGJpbmFyeSBpbXBvcnQpCi0JCi0tIHJ1biB0aGUgbWFpbiBidWlsZC54bWwgc2NyaXB0IHdpdGggdGhlIGFudFJ1bm5lciBhcHBsaWNhdGlvbgotCWNyZWF0ZSBhIG5ldyBwbGF0Zm9ybSBsYXVuY2ggY29uZmlndXJhdGlvbgotCXNlbGVjdCBydW4gYW4gYXBwbGljYXRpb24KLQlzZWxlY3Qgb3JnLmVjbGlwc2UuYW50LmNvcmUuYW50UnVubmVyIGFzIHRoZSBhcHBsaWNhdGlvbiB0byBydW4KLQlhZGQgdGhlIGZvbGxvd2luZyBhcyB0aGUgcHJvZ3JhbSBhcmd1bWVudHMgCi0JCS1idWlsZGZpbGUge3dvcmtzcGFjZV9sb2N9XG9yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3ZcYnVpbGREb2NzLnhtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2FsbGNsYXNzZXMtZnJhbWUuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2FsbGNsYXNzZXMtZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk1NWZkYi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9hbGxjbGFzc2VzLWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotQWxsIENsYXNzZXMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiPgotPEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLTxCPkFsbCBDbGFzc2VzPC9CPjwvRk9OVD4KLTxCUj4KLQotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgTk9XUkFQPjxGT05UIENMQVNTPSJGcmFtZUl0ZW1Gb250Ij48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+QmluZGluZzwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5CaW5kaW5nRmF1bHQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+QmluZGluZ0lucHV0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5CaW5kaW5nT3BlcmF0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5CaW5kaW5nT3V0cHV0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5EZWZpbml0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkV4dGVuc2libGVFbGVtZW50PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+RmF1bHQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkhUVFBBZGRyZXNzPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5IVFRQQmluZGluZzwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SFRUUEZhY3Rvcnk8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SFRUUE9wZXJhdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SFRUUFBhY2thZ2U8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5IVFRQVXJsRW5jb2RlZDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkhUVFBVcmxSZXBsYWNlbWVudDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JbXBvcnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5JbnB1dDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TWVzc2FnZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TWVzc2FnZVJlZmVyZW5jZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRUNvbnRlbnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPk1JTUVGYWN0b3J5PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5NSU1FTWltZVhtbDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPk1JTUVQYWNrYWdlPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5NSU1FUGFja2FnZS5MaXRlcmFsczwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRVBhcnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TmFtZXNwYWNlPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPk9wZXJhdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5PdXRwdXQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPlBhcnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPlBvcnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5Qb3J0VHlwZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U2VydmljZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUEFkZHJlc3M8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPlNPQVBCaW5kaW5nPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQQm9keTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUEZhY3Rvcnk8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQRmF1bHQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUEhlYWRlcjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUEhlYWRlckJhc2U8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQSGVhZGVyRmF1bHQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUE9wZXJhdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUFBhY2thZ2U8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+VHlwZXM8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5XU0RMQ29uc3RhbnRzPC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+V1NETERpYWdub3N0aWM8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiIHRhcmdldD0iY2xhc3NGcmFtZSI+V1NETERpYWdub3N0aWNJbXBsPC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPldTRExFbGVtZW50PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+V1NETEZhY3Rvcnk8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5XU0RMUGFja2FnZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPldTRExQYWNrYWdlLkxpdGVyYWxzPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5XU0RMUGFyc2VyPC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+V1NETFBsdWdpbjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+V1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiIHRhcmdldD0iY2xhc3NGcmFtZSI+V1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPldTRExSZXNvdXJjZUltcGw8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9JPjwvQT4KLTxCUj4KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MmRhMGIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotQWxsIENsYXNzZXMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiPgotPEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLTxCPkFsbCBDbGFzc2VzPC9CPjwvRk9OVD4KLTxCUj4KLQotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgTk9XUkFQPjxGT05UIENMQVNTPSJGcmFtZUl0ZW1Gb250Ij48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxJPkJpbmRpbmc8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxJPkJpbmRpbmdGYXVsdDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEk+QmluZGluZ0lucHV0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEk+QmluZGluZ09wZXJhdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxJPkJpbmRpbmdPdXRwdXQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5EZWZpbml0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxJPkV4dGVuc2liaWxpdHlFbGVtZW50PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEk+RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48ST5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5FeHRlbnNpYmxlRWxlbWVudDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5GYXVsdDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxJPkhUVFBBZGRyZXNzPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEk+SFRUUEJpbmRpbmc8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48ST5IVFRQRmFjdG9yeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEk+SFRUUE9wZXJhdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxJPkhUVFBQYWNrYWdlPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEk+SFRUUFBhY2thZ2UuTGl0ZXJhbHM8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48ST5IVFRQVXJsRW5jb2RlZDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48ST5IVFRQVXJsUmVwbGFjZW1lbnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxJPkltcG9ydDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5JbnB1dDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxJPk1lc3NhZ2U8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5NZXNzYWdlUmVmZXJlbmNlPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEk+TUlNRUNvbnRlbnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48ST5NSU1FRmFjdG9yeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxJPk1JTUVNaW1lWG1sPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEk+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48ST5NSU1FUGFja2FnZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxJPk1JTUVQYWNrYWdlLkxpdGVyYWxzPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEk+TUlNRVBhcnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxJPk5hbWVzcGFjZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEk+T3BlcmF0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5PdXRwdXQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5QYXJ0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEk+UG9ydDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5Qb3J0VHlwZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxJPlNlcnZpY2U8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48ST5TT0FQQWRkcmVzczwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxJPlNPQVBCaW5kaW5nPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEk+U09BUEJvZHk8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48ST5TT0FQRmFjdG9yeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48ST5TT0FQRmF1bHQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxJPlNPQVBIZWFkZXI8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48ST5TT0FQSGVhZGVyQmFzZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48ST5TT0FQSGVhZGVyRmF1bHQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxJPlNPQVBPcGVyYXRpb248L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48ST5TT0FQUGFja2FnZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxJPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxJPlR5cGVzPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEJSPgotPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxJPldTRExEaWFnbm9zdGljPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY0ltcGw8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5XU0RMRWxlbWVudDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5XU0RMRmFjdG9yeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5XU0RMUGFja2FnZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5XU0RMUGFja2FnZS5MaXRlcmFsczwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbjwvQT4KLTxCUj4KLTxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnk8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExSZXNvdXJjZUltcGw8L0E+Ci08QlI+Ci08QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48ST5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvST48L0E+Ci08QlI+Ci08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9jb25zdGFudC12YWx1ZXMuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2NvbnN0YW50LXZhbHVlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTI1MWM0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2NvbnN0YW50LXZhbHVlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzEyOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Db25zdGFudCBGaWVsZCBWYWx1ZXMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJDb25zdGFudCBGaWVsZCBWYWx1ZXMiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImluZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJoZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/Y29uc3RhbnQtdmFsdWVzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iY29uc3RhbnQtdmFsdWVzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPENFTlRFUj4KLTxIMT4KLUNvbnN0YW50IEZpZWxkIFZhbHVlczwvSDE+Ci08L0NFTlRFUj4KLTxIUiBTSVpFPSI0IiBOT1NIQURFPgotPEI+Q29udGVudHM8L0I+PFVMPgotPExJPjxBIEhSRUY9IiNvcmcuZWNsaXBzZSI+b3JnLmVjbGlwc2UuKjwvQT4KLTwvVUw+Ci0KLTxBIE5BTUU9Im9yZy5lY2xpcHNlIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEZPTlQgU0laRT0iKzIiPgotb3JnLmVjbGlwc2UuKjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMyI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkciPkJJTkRJTkc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+QklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUyI+QklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+QklORElOR19fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19FTEVNRU5UIj5CSU5ESU5HX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19fRVBPUlRfVFlQRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19fRVBPUlRfVFlQRSI+QklORElOR19fRVBPUlRfVFlQRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfX1FOQU1FIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19RTkFNRSI+QklORElOR19fUU5BTUU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX19VTkRFRklORUQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfX1VOREVGSU5FRCI+QklORElOR19fVU5ERUZJTkVEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19GQVVMVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19GQVVMVCI+QklORElOR19GQVVMVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE4PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+QklORElOR19GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19GQVVMVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfRkFVTFRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5CSU5ESU5HX0ZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfRkFVTFRfX0VGQVVMVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19GQVVMVF9fRUZBVUxUIj5CSU5ESU5HX0ZBVUxUX19FRkFVTFQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0ZBVUxUX19FTEVNRU5UIj5CSU5ESU5HX0ZBVUxUX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19GQVVMVF9fTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19GQVVMVF9fTkFNRSI+QklORElOR19GQVVMVF9fTkFNRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19GQVVMVF9GRUFUVVJFX0NPVU5UIj5CSU5ESU5HX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfRkVBVFVSRV9DT1VOVCI+QklORElOR19GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19JTlBVVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19JTlBVVCI+QklORElOR19JTlBVVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE2PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfSU5QVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+QklORElOR19JTlBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19JTlBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfSU5QVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5CSU5ESU5HX0lOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfSU5QVVRfX0VJTlBVVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19JTlBVVF9fRUlOUFVUIj5CSU5ESU5HX0lOUFVUX19FSU5QVVQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0lOUFVUX19FTEVNRU5UIj5CSU5ESU5HX0lOUFVUX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19JTlBVVF9fTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19JTlBVVF9fTkFNRSI+QklORElOR19JTlBVVF9fTkFNRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UIj5CSU5ESU5HX0lOUFVUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT04iPkJJTkRJTkdfT1BFUkFUSU9OPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+QklORElOR19PUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFMiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFMiPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT43PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVCI+QklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0lOUFVUPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX09VVFBVVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX09VVFBVVCI+QklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX09VVFBVVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5CSU5ESU5HX09QRVJBVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fX0VMRU1FTlQiPkJJTkRJTkdfT1BFUkFUSU9OX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VPUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19FT1BFUkFUSU9OIj5CSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19OQU1FIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fTkFNRSI+QklORElOR19PUEVSQVRJT05fX05BTUU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj5CSU5ESU5HX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+ODwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PVVRQVVQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1VUUFVUIj5CSU5ESU5HX09VVFBVVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE3PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09VVFBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09VVFBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5CSU5ESU5HX09VVFBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PVVRQVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09VVFBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPkJJTkRJTkdfT1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1VUUFVUX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09VVFBVVF9fRUxFTUVOVCI+QklORElOR19PVVRQVVRfX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09VVFBVVF9fRU9VVFBVVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PVVRQVVRfX0VPVVRQVVQiPkJJTkRJTkdfT1VUUFVUX19FT1VUUFVUPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PVVRQVVRfX05BTUUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1VUUFVUX19OQU1FIj5CSU5ESU5HX09VVFBVVF9fTkFNRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQiPkJJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OIj5ERUZJTklUSU9OPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5ERUZJTklUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19FQklORElOR1MiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX0VCSU5ESU5HUyI+REVGSU5JVElPTl9fRUJJTkRJTkdTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+REVGSU5JVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19FSU1QT1JUUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRUlNUE9SVFMiPkRFRklOSVRJT05fX0VJTVBPUlRTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRUxFTUVOVCI+REVGSU5JVElPTl9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0VNRVNTQUdFUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRU1FU1NBR0VTIj5ERUZJTklUSU9OX19FTUVTU0FHRVM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT45PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19FTkFNRVNQQUNFUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRU5BTUVTUEFDRVMiPkRFRklOSVRJT05fX0VOQU1FU1BBQ0VTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0VOQ09ESU5HIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FTkNPRElORyI+REVGSU5JVElPTl9fRU5DT0RJTkc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT42PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19FUE9SVF9UWVBFUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRVBPUlRfVFlQRVMiPkRFRklOSVRJT05fX0VQT1JUX1RZUEVTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0VTRVJWSUNFUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRVNFUlZJQ0VTIj5ERUZJTklUSU9OX19FU0VSVklDRVM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xMjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVRZUEVTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FVFlQRVMiPkRFRklOSVRJT05fX0VUWVBFUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjg8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0xPQ0FUSU9OIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19MT0NBVElPTiI+REVGSU5JVElPTl9fTE9DQVRJT048L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19RTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fUU5BTUUiPkRFRklOSVRJT05fX1FOQU1FPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRSI+REVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9GRUFUVVJFX0NPVU5UIj5ERUZJTklUSU9OX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xNDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRE9NX0RPQ1VNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNET01fRE9DVU1FTlQiPkRPTV9ET0NVTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjUxPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ET01fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRE9NX0VMRU1FTlQiPkRPTV9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDk8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLmVOQU1FIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZU5BTUUiPmVOQU1FPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+IndzZGwiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5lTlNfUFJFRklYIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZU5TX1BSRUZJWCI+ZU5TX1BSRUZJWDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJ3c2RsIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuZU5TX1VSSSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2VOU19VUkkiPmVOU19VUkk8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvV1NETCI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UIj5FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT45PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNFWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQiPkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNFWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRSI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNFWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEIj5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UIj5FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkVYVEVOU0lCTEVfRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJMRV9FTEVNRU5UIj5FWFRFTlNJQkxFX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xMjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5FWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPkVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5FWFRFTlNJQkxFX0VMRU1FTlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVCI+RVhURU5TSUJMRV9FTEVNRU5UX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UIj5FWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkZBVUxUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNGQVVMVCI+RkFVTFQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xNTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+RkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5GQVVMVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5GQVVMVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFRfX0VMRU1FTlQiPkZBVUxUX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRkFVTFRfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNGQVVMVF9fRU1FU1NBR0UiPkZBVUxUX19FTUVTU0FHRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkZBVUxUX19OQU1FIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNGQVVMVF9fTkFNRSI+RkFVTFRfX05BTUU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5GQVVMVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNGQVVMVF9GRUFUVVJFX0NPVU5UIj5GQVVMVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUJJTkRJTkciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lCSU5ESU5HIj5JQklORElORzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI5PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JQklORElOR19GQVVMVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUJJTkRJTkdfRkFVTFQiPklCSU5ESU5HX0ZBVUxUPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklCSU5ESU5HX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lCSU5ESU5HX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPklCSU5ESU5HX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JQklORElOR19GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19GRUFUVVJFX0NPVU5UIj5JQklORElOR19GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUJJTkRJTkdfSU5QVVQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lCSU5ESU5HX0lOUFVUIj5JQklORElOR19JTlBVVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjMxPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JQklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UIj5JQklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUJJTkRJTkdfT1BFUkFUSU9OIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19PUEVSQVRJT04iPklCSU5ESU5HX09QRVJBVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjMwPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JQklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUJJTkRJTkdfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPklCSU5ESU5HX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUJJTkRJTkdfT1VUUFVUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19PVVRQVVQiPklCSU5ESU5HX09VVFBVVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjMyPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JQklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUJJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQiPklCSU5ESU5HX09VVFBVVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSURFRklOSVRJT04iPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lERUZJTklUSU9OIj5JREVGSU5JVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM1PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JREVGSU5JVElPTl9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJREVGSU5JVElPTl9GRUFUVVJFX0NPVU5UIj5JREVGSU5JVElPTl9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUVYVEVOU0lCSUxJVFlfRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUVYVEVOU0lCSUxJVFlfRUxFTUVOVCI+SUVYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM0PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lFWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+SUVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUVYVEVOU0lPTl9SRUdJU1RSWSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUVYVEVOU0lPTl9SRUdJU1RSWSI+SUVYVEVOU0lPTl9SRUdJU1RSWTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQwPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JRVhURU5TSU9OX1JFR0lTVFJZX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lFWFRFTlNJT05fUkVHSVNUUllfRkVBVFVSRV9DT1VOVCI+SUVYVEVOU0lPTl9SRUdJU1RSWV9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUZBVUxUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJRkFVTFQiPklGQVVMVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI0PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUZBVUxUX0ZFQVRVUkVfQ09VTlQiPklGQVVMVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUlNUE9SVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUlNUE9SVCI+SUlNUE9SVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM2PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JSU1QT1JUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lJTVBPUlRfRkVBVFVSRV9DT1VOVCI+SUlNUE9SVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUlOUFVUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJSU5QVVQiPklJTlBVVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjIyPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JSU5QVVRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUlOUFVUX0ZFQVRVUkVfQ09VTlQiPklJTlBVVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUlURVJBVE9SIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJSVRFUkFUT1IiPklJVEVSQVRPUjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQyPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JSVRFUkFUT1JfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUlURVJBVE9SX0ZFQVRVUkVfQ09VTlQiPklJVEVSQVRPUl9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUxJU1QiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lMSVNUIj5JTElTVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM3PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTElTVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTElTVF9GRUFUVVJFX0NPVU5UIj5JTElTVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU1BUCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1BUCI+SU1BUDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM4PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTUFQX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNQVBfRkVBVFVSRV9DT1VOVCI+SU1BUF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU1FU1NBR0UiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNRVNTQUdFIj5JTUVTU0FHRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI1PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTUVTU0FHRV9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTUVTU0FHRV9GRUFUVVJFX0NPVU5UIj5JTUVTU0FHRV9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU1QT1JUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTVBPUlQiPklNUE9SVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjExPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTVBPUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPklNUE9SVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU1QT1JUX19FREVGSU5JVElPTiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19FREVGSU5JVElPTiI+SU1QT1JUX19FREVGSU5JVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklNUE9SVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNUE9SVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPklNUE9SVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTVBPUlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNUE9SVF9fRUxFTUVOVCI+SU1QT1JUX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU1QT1JUX19FU0NIRU1BIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTVBPUlRfX0VTQ0hFTUEiPklNUE9SVF9fRVNDSEVNQTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklNUE9SVF9fTE9DQVRJT05fVVJJIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTVBPUlRfX0xPQ0FUSU9OX1VSSSI+SU1QT1JUX19MT0NBVElPTl9VUkk8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTVBPUlRfX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNUE9SVF9fTkFNRVNQQUNFX1VSSSI+SU1QT1JUX19OQU1FU1BBQ0VfVVJJPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU1QT1JUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNUE9SVF9GRUFUVVJFX0NPVU5UIj5JTVBPUlRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjc8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklOUFVUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVCI+SU5QVVQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xMzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU5QVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU5QVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+SU5QVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU5QVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5JTlBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTlBVVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU5QVVRfX0VMRU1FTlQiPklOUFVUX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU5QVVRfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVF9fRU1FU1NBR0UiPklOUFVUX19FTUVTU0FHRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklOUFVUX19OQU1FIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVF9fTkFNRSI+SU5QVVRfX05BTUU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTlBVVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVF9GRUFUVVJFX0NPVU5UIj5JTlBVVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU9QRVJBVElPTiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU9QRVJBVElPTiI+SU9QRVJBVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjIxPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lPUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+SU9QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU9VVFBVVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU9VVFBVVCI+SU9VVFBVVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjIzPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JT1VUUFVUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lPVVRQVVRfRkVBVFVSRV9DT1VOVCI+SU9VVFBVVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVBBUlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lQQVJUIj5JUEFSVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI2PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JUEFSVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJUEFSVF9GRUFUVVJFX0NPVU5UIj5JUEFSVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVBPUlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lQT1JUIj5JUE9SVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI4PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JUE9SVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJUE9SVF9GRUFUVVJFX0NPVU5UIj5JUE9SVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVBPUlRfVFlQRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVBPUlRfVFlQRSI+SVBPUlRfVFlQRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjIwPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JUE9SVF9UWVBFX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lQT1JUX1RZUEVfRkVBVFVSRV9DT1VOVCI+SVBPUlRfVFlQRV9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVNFUlZJQ0UiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lTRVJWSUNFIj5JU0VSVklDRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI3PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JU0VSVklDRV9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJU0VSVklDRV9GRUFUVVJFX0NPVU5UIj5JU0VSVklDRV9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVRZUEVTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJVFlQRVMiPklUWVBFUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQzPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JVFlQRVNfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVRZUEVTX0ZFQVRVUkVfQ09VTlQiPklUWVBFU19GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVVSTCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVVSTCI+SVVSTDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM5PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JVVJMX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lVUkxfRkVBVFVSRV9DT1VOVCI+SVVSTF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRSI+TUVTU0FHRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5NRVNTQUdFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPk1FU1NBR0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRV9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fRUxFTUVOVCI+TUVTU0FHRV9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0VfX0VQQVJUUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fRVBBUlRTIj5NRVNTQUdFX19FUEFSVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX19RTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fUU5BTUUiPk1FU1NBR0VfX1FOQU1FPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRV9fVU5ERUZJTkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNNRVNTQUdFX19VTkRFRklORUQiPk1FU1NBR0VfX1VOREVGSU5FRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0VfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9GRUFUVVJFX0NPVU5UIj5NRVNTQUdFX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT42PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX1JFRkVSRU5DRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0UiPk1FU1NBR0VfUkVGRVJFTkNFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0VfUkVGRVJFTkNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0VfUkVGRVJFTkNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPk1FU1NBR0VfUkVGRVJFTkNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX1JFRkVSRU5DRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0VfUkVGRVJFTkNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+TUVTU0FHRV9SRUZFUkVOQ0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0VfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0VfUkVGRVJFTkNFX19FTEVNRU5UIj5NRVNTQUdFX1JFRkVSRU5DRV9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0VfUkVGRVJFTkNFX19FTUVTU0FHRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFIj5NRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0U8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX1JFRkVSRU5DRV9fTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUUiPk1FU1NBR0VfUkVGRVJFTkNFX19OQU1FPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0VfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfRkVBVFVSRV9DT1VOVCI+TUVTU0FHRV9SRUZFUkVOQ0VfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk5BTUVTUEFDRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTkFNRVNQQUNFIj5OQU1FU1BBQ0U8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xOTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTkFNRVNQQUNFX19QUkVGSVgiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI05BTUVTUEFDRV9fUFJFRklYIj5OQU1FU1BBQ0VfX1BSRUZJWDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk5BTUVTUEFDRV9fVVJJIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNOQU1FU1BBQ0VfX1VSSSI+TkFNRVNQQUNFX19VUkk8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5OQU1FU1BBQ0VfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTkFNRVNQQUNFX0ZFQVRVUkVfQ09VTlQiPk5BTUVTUEFDRV9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT04iPk9QRVJBVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+T1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FRkFVTFRTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX0VGQVVMVFMiPk9QRVJBVElPTl9fRUZBVUxUUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjg8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9QRVJBVElPTl9fRUlOUFVUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX0VJTlBVVCI+T1BFUkFUSU9OX19FSU5QVVQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT42PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PUEVSQVRJT05fX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09QRVJBVElPTl9fRUxFTUVOVCI+T1BFUkFUSU9OX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FT1VUUFVUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX0VPVVRQVVQiPk9QRVJBVElPTl9fRU9VVFBVVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjc8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9QRVJBVElPTl9fRVBBUkFNRVRFUl9PUkRFUklORyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HIj5PUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT45PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PUEVSQVRJT05fX05BTUUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09QRVJBVElPTl9fTkFNRSI+T1BFUkFUSU9OX19OQU1FPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OX19TVFlMRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX19TVFlMRSI+T1BFUkFUSU9OX19TVFlMRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9QRVJBVElPTl9fVU5ERUZJTkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX1VOREVGSU5FRCI+T1BFUkFUSU9OX19VTkRFRklORUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPk9QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9QRVJBVElPTl9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fVFlQRSI+T1BFUkFUSU9OX1RZUEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40ODwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1VUUFVUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPVVRQVVQiPk9VVFBVVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE0PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PVVRQVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPk9VVFBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+T1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9VVFBVVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1VUUFVUX19FTEVNRU5UIj5PVVRQVVRfX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PVVRQVVRfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPVVRQVVRfX0VNRVNTQUdFIj5PVVRQVVRfX0VNRVNTQUdFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1VUUFVUX19OQU1FIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPVVRQVVRfX05BTUUiPk9VVFBVVF9fTkFNRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9VVFBVVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPVVRQVVRfRkVBVFVSRV9DT1VOVCI+T1VUUFVUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QQVJUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUIj5QQVJUPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUEFSVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPlBBUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+UEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QQVJUX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX19FTEVNRU5UIj5QQVJUX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUEFSVF9fRUxFTUVOVF9ERUNMQVJBVElPTiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fRUxFTUVOVF9ERUNMQVJBVElPTiI+UEFSVF9fRUxFTUVOVF9ERUNMQVJBVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjc8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBBUlRfX0VMRU1FTlRfTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fRUxFTUVOVF9OQU1FIj5QQVJUX19FTEVNRU5UX05BTUU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QQVJUX19FTUVTU0FHRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fRU1FU1NBR0UiPlBBUlRfX0VNRVNTQUdFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+ODwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUEFSVF9fTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fTkFNRSI+UEFSVF9fTkFNRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBBUlRfX1RZUEVfREVGSU5JVElPTiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fVFlQRV9ERUZJTklUSU9OIj5QQVJUX19UWVBFX0RFRklOSVRJT048L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT42PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QQVJUX19UWVBFX05BTUUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BBUlRfX1RZUEVfTkFNRSI+UEFSVF9fVFlQRV9OQU1FPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUEFSVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX0ZFQVRVUkVfQ09VTlQiPlBBUlRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjk8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBPUlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlQiPlBPUlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT44PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+UE9SVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUE9SVF9fRUJJTkRJTkciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfX0VCSU5ESU5HIj5QT1JUX19FQklORElORzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBPUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+UE9SVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX19FTEVNRU5UIj5QT1JUX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUE9SVF9fTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9fTkFNRSI+UE9SVF9fTkFNRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBPUlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9GRUFUVVJFX0NPVU5UIj5QT1JUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX1RZUEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRSI+UE9SVF9UWVBFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUE9SVF9UWVBFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5QT1JUX1RZUEVfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBPUlRfVFlQRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPlBPUlRfVFlQRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX1RZUEVfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9fRUxFTUVOVCI+UE9SVF9UWVBFX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUE9SVF9UWVBFX19FT1BFUkFUSU9OUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9UWVBFX19FT1BFUkFUSU9OUyI+UE9SVF9UWVBFX19FT1BFUkFUSU9OUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBPUlRfVFlQRV9fUU5BTUUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9fUU5BTUUiPlBPUlRfVFlQRV9fUU5BTUU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX1RZUEVfX1VOREVGSU5FRCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9UWVBFX19VTkRFRklORUQiPlBPUlRfVFlQRV9fVU5ERUZJTkVEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUE9SVF9UWVBFX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9GRUFUVVJFX0NPVU5UIj5QT1JUX1RZUEVfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlFOQU1FIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNRTkFNRSI+UU5BTUU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40NzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuU0VSVklDRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRSI+U0VSVklDRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjc8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlNFUlZJQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5TRVJWSUNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5TRVJWSUNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPlNFUlZJQ0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuU0VSVklDRV9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRV9fRUxFTUVOVCI+U0VSVklDRV9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlNFUlZJQ0VfX0VQT1JUUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRV9fRVBPUlRTIj5TRVJWSUNFX19FUE9SVFM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5TRVJWSUNFX19RTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRV9fUU5BTUUiPlNFUlZJQ0VfX1FOQU1FPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuU0VSVklDRV9fVU5ERUZJTkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNTRVJWSUNFX19VTkRFRklORUQiPlNFUlZJQ0VfX1VOREVGSU5FRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlNFUlZJQ0VfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRV9GRUFUVVJFX0NPVU5UIj5TRVJWSUNFX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT42PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5UWVBFUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVFlQRVMiPlRZUEVTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlRZUEVTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1RZUEVTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPlRZUEVTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5UWVBFU19fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1RZUEVTX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+VFlQRVNfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuVFlQRVNfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1RZUEVTX19FTEVNRU5UIj5UWVBFU19fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlRZUEVTX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1RZUEVTX0ZFQVRVUkVfQ09VTlQiPlRZUEVTX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlQiPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19DSElMRFJFTiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOIj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fQ0hJTERSRU48L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1VOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UIj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1VOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEUiPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1VOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRCI+VU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+VU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLldTRExfRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjV1NETF9FTEVNRU5UIj5XU0RMX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5XU0RMX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjV1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPldTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuV1NETF9FTEVNRU5UX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNXU0RMX0VMRU1FTlRfX0VMRU1FTlQiPldTRExfRUxFTUVOVF9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLldTRExfRUxFTUVOVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNXU0RMX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+V1NETF9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5XU0RMX0VYQ0VQVElPTiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjV1NETF9FWENFUFRJT04iPldTRExfRVhDRVBUSU9OPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVCI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQiPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUEiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1hTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUEiPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUE8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UIj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxQPgotCi08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjMiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuZU5BTUUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZU5BTUUiPmVOQU1FPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+Imh0dHAiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuZU5TX1BSRUZJWCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNlTlNfUFJFRklYIj5lTlNfUFJFRklYPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+Imh0dHAiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuZU5TX1VSSSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNlTlNfVVJJIj5lTlNfVVJJPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd3NkbC8yMDAzL0hUVFAiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9BRERSRVNTIj5IVFRQX0FERFJFU1M8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0FERFJFU1NfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+SFRUUF9BRERSRVNTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9BRERSRVNTX19FTEVNRU5UIj5IVFRQX0FERFJFU1NfX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0FERFJFU1NfX0VMRU1FTlRfVFlQRSI+SFRUUF9BRERSRVNTX19FTEVNRU5UX1RZUEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkkiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSSI+SFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkk8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTU19fUkVRVUlSRUQiPkhUVFBfQUREUkVTU19fUkVRVUlSRUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0FERFJFU1NfRkVBVFVSRV9DT1VOVCI+SFRUUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HIj5IVFRQX0JJTkRJTkc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0JJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+SFRUUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HX19FTEVNRU5UIj5IVFRQX0JJTkRJTkdfX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0JJTkRJTkdfX0VMRU1FTlRfVFlQRSI+SFRUUF9CSU5ESU5HX19FTEVNRU5UX1RZUEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQklORElOR19fUkVRVUlSRUQiPkhUVFBfQklORElOR19fUkVRVUlSRUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HX19WRVJCIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HX19WRVJCIj5IVFRQX0JJTkRJTkdfX1ZFUkI8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVCI+SFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9PUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX09QRVJBVElPTiI+SFRUUF9PUEVSQVRJT048L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9PUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkhUVFBfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9PUEVSQVRJT05fX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX09QRVJBVElPTl9fRUxFTUVOVCI+SFRUUF9PUEVSQVRJT05fX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9PUEVSQVRJT05fX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEUiPkhUVFBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9PUEVSQVRJT05fX0xPQ0FUSU9OX1VSSSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkkiPkhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkk8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9PUEVSQVRJT05fX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9PUEVSQVRJT05fX1JFUVVJUkVEIj5IVFRQX09QRVJBVElPTl9fUkVRVUlSRUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPkhUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfRU5DT0RFRCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX0VOQ09ERUQiPkhUVFBfVVJMX0VOQ09ERUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfRU5DT0RFRF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfRU5DT0RFRF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5IVFRQX1VSTF9FTkNPREVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfRU5DT0RFRF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX0VOQ09ERURfX0VMRU1FTlQiPkhUVFBfVVJMX0VOQ09ERURfX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfRU5DT0RFRF9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfRU5DT0RFRF9fRUxFTUVOVF9UWVBFIj5IVFRQX1VSTF9FTkNPREVEX19FTEVNRU5UX1RZUEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfRU5DT0RFRF9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9FTkNPREVEX19SRVFVSVJFRCI+SFRUUF9VUkxfRU5DT0RFRF9fUkVRVUlSRUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfRU5DT0RFRF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfRU5DT0RFRF9GRUFUVVJFX0NPVU5UIj5IVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfUkVQTEFDRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9SRVBMQUNFTUVOVCI+SFRUUF9VUkxfUkVQTEFDRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfUkVQTEFDRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX1JFUExBQ0VNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkhUVFBfVVJMX1JFUExBQ0VNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfUkVQTEFDRU1FTlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9SRVBMQUNFTUVOVF9fRUxFTUVOVCI+SFRUUF9VUkxfUkVQTEFDRU1FTlRfX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfUkVQTEFDRU1FTlRfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX1JFUExBQ0VNRU5UX19FTEVNRU5UX1RZUEUiPkhUVFBfVVJMX1JFUExBQ0VNRU5UX19FTEVNRU5UX1RZUEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfUkVQTEFDRU1FTlRfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfUkVQTEFDRU1FTlRfX1JFUVVJUkVEIj5IVFRQX1VSTF9SRVBMQUNFTUVOVF9fUkVRVUlSRUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfUkVQTEFDRU1FTlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX1JFUExBQ0VNRU5UX0ZFQVRVUkVfQ09VTlQiPkhUVFBfVVJMX1JFUExBQ0VNRU5UX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfQUREUkVTUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX0FERFJFU1MiPklIVFRQX0FERFJFU1M8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfQUREUkVTU19GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfQUREUkVTU19GRUFUVVJFX0NPVU5UIj5JSFRUUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfQklORElORyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX0JJTkRJTkciPklIVFRQX0JJTkRJTkc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT42PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfQklORElOR19GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfQklORElOR19GRUFUVVJFX0NPVU5UIj5JSFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfT1BFUkFUSU9OIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfT1BFUkFUSU9OIj5JSFRUUF9PUEVSQVRJT048L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT43PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNJSFRUUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+SUhUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfVVJMX0VOQ09ERUQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNJSFRUUF9VUkxfRU5DT0RFRCI+SUhUVFBfVVJMX0VOQ09ERUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT44PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfVVJMX0VOQ09ERURfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQiPklIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfVVJMX1JFUExBQ0VNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfVVJMX1JFUExBQ0VNRU5UIj5JSFRUUF9VUkxfUkVQTEFDRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT45PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfVVJMX1JFUExBQ0VNRU5UX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNJSFRUUF9VUkxfUkVQTEFDRU1FTlRfRkVBVFVSRV9DT1VOVCI+SUhUVFBfVVJMX1JFUExBQ0VNRU5UX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotPFA+Ci0KLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMyI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5lTkFNRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNlTkFNRSI+ZU5BTUU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4ibWltZSI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5lTlNfUFJFRklYIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2VOU19QUkVGSVgiPmVOU19QUkVGSVg8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4ibWltZSI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5lTlNfVVJJIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2VOU19VUkkiPmVOU19VUkk8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93c2RsLzIwMDMvTUlNRSI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9DT05URU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfQ09OVEVOVCI+SU1JTUVfQ09OVEVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9DT05URU5UX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNJTUlNRV9DT05URU5UX0ZFQVRVUkVfQ09VTlQiPklNSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9NSU1FX1hNTCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI0lNSU1FX01JTUVfWE1MIj5JTUlNRV9NSU1FX1hNTDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjc8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9NSU1FX1hNTF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVCI+SU1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI0lNSU1FX01VTFRJUEFSVF9SRUxBVEVEIj5JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfTVVMVElQQVJUX1JFTEFURURfRkVBVFVSRV9DT1VOVCI+SU1JTUVfTVVMVElQQVJUX1JFTEFURURfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9QQVJUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfUEFSVCI+SU1JTUVfUEFSVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9QQVJUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNJTUlNRV9QQVJUX0ZFQVRVUkVfQ09VTlQiPklNSU1FX1BBUlRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5MSVNUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTElTVCI+TElTVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjg8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlQiPk1JTUVfQ09OVEVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfQ09OVEVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5NSU1FX0NPTlRFTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfX0VMRU1FTlQiPk1JTUVfQ09OVEVOVF9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfQ09OVEVOVF9fRUxFTUVOVF9UWVBFIj5NSU1FX0NPTlRFTlRfX0VMRU1FTlRfVFlQRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX0VQQVJUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9DT05URU5UX19FUEFSVCI+TUlNRV9DT05URU5UX19FUEFSVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9DT05URU5UX19SRVFVSVJFRCI+TUlNRV9DT05URU5UX19SRVFVSVJFRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX1RZUEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfX1RZUEUiPk1JTUVfQ09OVEVOVF9fVFlQRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfQ09OVEVOVF9GRUFUVVJFX0NPVU5UIj5NSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NSU1FX1hNTCI+TUlNRV9NSU1FX1hNTDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01JTUVfWE1MX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPk1JTUVfTUlNRV9YTUxfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NSU1FX1hNTF9fRUxFTUVOVCI+TUlNRV9NSU1FX1hNTF9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01JTUVfWE1MX19FTEVNRU5UX1RZUEUiPk1JTUVfTUlNRV9YTUxfX0VMRU1FTlRfVFlQRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19FUEFSVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTUlNRV9YTUxfX0VQQVJUIj5NSU1FX01JTUVfWE1MX19FUEFSVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTUlNRV9YTUxfX1JFUVVJUkVEIj5NSU1FX01JTUVfWE1MX19SRVFVSVJFRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQiPk1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01VTFRJUEFSVF9SRUxBVEVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NVUxUSVBBUlRfUkVMQVRFRCI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRUxFTUVOVCI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UX1RZUEUiPk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VMRU1FTlRfVFlQRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTUlNRV9QQVJUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVCI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURURfX1JFUVVJUkVEIj5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19SRVFVSVJFRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01VTFRJUEFSVF9SRUxBVEVEX0ZFQVRVUkVfQ09VTlQiPk1JTUVfTVVMVElQQVJUX1JFTEFURURfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX1BBUlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX1BBUlQiPk1JTUVfUEFSVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX1BBUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfUEFSVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5NSU1FX1BBUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX1BBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9QQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+TUlNRV9QQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX1BBUlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX1BBUlRfX0VMRU1FTlQiPk1JTUVfUEFSVF9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX1BBUlRfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfUEFSVF9fRUxFTUVOVF9UWVBFIj5NSU1FX1BBUlRfX0VMRU1FTlRfVFlQRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX1BBUlRfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9QQVJUX19SRVFVSVJFRCI+TUlNRV9QQVJUX19SRVFVSVJFRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX1BBUlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfUEFSVF9GRUFUVVJFX0NPVU5UIj5NSU1FX1BBUlRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi08UD4KLQotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIzIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLmVOQU1FIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2VOQU1FIj5lTkFNRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJzb2FwIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLmVOU19QUkVGSVgiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZU5TX1BSRUZJWCI+ZU5TX1BSRUZJWDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJzb2FwIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLmVOU19VUkkiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZU5TX1VSSSI+ZU5TX1VSSTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dzZGwvMjAwMy9TT0FQIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0FERFJFU1MiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9BRERSRVNTIj5JU09BUF9BRERSRVNTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+OTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0FERFJFU1NfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0FERFJFU1NfRkVBVFVSRV9DT1VOVCI+SVNPQVBfQUREUkVTU19GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0JJTkRJTkciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9CSU5ESU5HIj5JU09BUF9CSU5ESU5HPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+ODwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVCI+SVNPQVBfQklORElOR19GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0JPRFkiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9CT0RZIj5JU09BUF9CT0RZPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5JU09BUF9CT0RZX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9CT0RZX0ZFQVRVUkVfQ09VTlQiPklTT0FQX0JPRFlfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5JU09BUF9GQVVMVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0ZBVUxUIj5JU09BUF9GQVVMVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjExPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPklTT0FQX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfSEVBREVSIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfSEVBREVSIj5JU09BUF9IRUFERVI8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xNDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0hFQURFUl9GQVVMVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0hFQURFUl9GQVVMVCI+SVNPQVBfSEVBREVSX0ZBVUxUPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5JU09BUF9IRUFERVJfRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0hFQURFUl9GQVVMVF9GRUFUVVJFX0NPVU5UIj5JU09BUF9IRUFERVJfRkFVTFRfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5JU09BUF9IRUFERVJfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0hFQURFUl9GRUFUVVJFX0NPVU5UIj5JU09BUF9IRUFERVJfRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5JU09BUF9PUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9PUEVSQVRJT04iPklTT0FQX09QRVJBVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjEyPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+SVNPQVBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNUUklORyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTVFJJTkciPklTVFJJTkc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xNTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQUREUkVTUyI+U09BUF9BRERSRVNTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPlNPQVBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQUREUkVTU19fRUxFTUVOVCI+U09BUF9BRERSRVNTX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19FTEVNRU5UX1RZUEUiPlNPQVBfQUREUkVTU19fRUxFTUVOVF9UWVBFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19MT0NBVElPTl9VUkkiPlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0FERFJFU1NfX1JFUVVJUkVEIj5TT0FQX0FERFJFU1NfX1JFUVVJUkVEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQiPlNPQVBfQUREUkVTU19GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElORyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQklORElORyI+U09BUF9CSU5ESU5HPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPlNPQVBfQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQklORElOR19fRUxFTUVOVCI+U09BUF9CSU5ESU5HX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CSU5ESU5HX19FTEVNRU5UX1RZUEUiPlNPQVBfQklORElOR19fRUxFTUVOVF9UWVBFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfX1JFUVVJUkVEIj5TT0FQX0JJTkRJTkdfX1JFUVVJUkVEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fU1RZTEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfX1NUWUxFIj5TT0FQX0JJTkRJTkdfX1NUWUxFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSSI+U09BUF9CSU5ESU5HX19UUkFOU1BPUlRfVVJJPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElOR19GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPlNPQVBfQklORElOR19GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWSI+U09BUF9CT0RZPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPlNPQVBfQk9EWV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUyI+U09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWV9fRUxFTUVOVCI+U09BUF9CT0RZX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19FTEVNRU5UX1RZUEUiPlNPQVBfQk9EWV9fRUxFTUVOVF9UWVBFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fRVBBUlRTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19FUEFSVFMiPlNPQVBfQk9EWV9fRVBBUlRTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSSI+U09BUF9CT0RZX19OQU1FU1BBQ0VfVVJJPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JPRFlfX1JFUVVJUkVEIj5TT0FQX0JPRFlfX1JFUVVJUkVEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fVVNFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19VU0UiPlNPQVBfQk9EWV9fVVNFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX0ZFQVRVUkVfQ09VTlQiPlNPQVBfQk9EWV9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+ODwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUIj5TT0FQX0ZBVUxUPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+U09BUF9GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVMiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTIj5TT0FQX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUX19FTEVNRU5UIj5TT0FQX0ZBVUxUX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX0VMRU1FTlRfVFlQRSI+U09BUF9GQVVMVF9fRUxFTUVOVF9UWVBFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX05BTUUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUX19OQU1FIj5TT0FQX0ZBVUxUX19OQU1FPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJIj5TT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9GQVVMVF9fUkVRVUlSRUQiPlNPQVBfRkFVTFRfX1JFUVVJUkVEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX1VTRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX1VTRSI+U09BUF9GQVVMVF9fVVNFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVCI+U09BUF9GQVVMVF9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+ODwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVIiPlNPQVBfSEVBREVSPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5TT0FQX0hFQURFUl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19FRU5DT0RJTkdfU1RZTEVTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX0VFTkNPRElOR19TVFlMRVMiPlNPQVBfSEVBREVSX19FRU5DT0RJTkdfU1RZTEVTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX0VMRU1FTlQiPlNPQVBfSEVBREVSX19FTEVNRU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fRUxFTUVOVF9UWVBFIj5TT0FQX0hFQURFUl9fRUxFTUVOVF9UWVBFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19FTUVTU0FHRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19FTUVTU0FHRSI+U09BUF9IRUFERVJfX0VNRVNTQUdFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+OTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19FUEFSVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19FUEFSVCI+U09BUF9IRUFERVJfX0VQQVJUPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19IRUFERVJfRkFVTFRTIj5TT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjExPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX01FU1NBR0UiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fTUVTU0FHRSI+U09BUF9IRUFERVJfX01FU1NBR0U8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT43PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fTkFNRVNQQUNFX1VSSSI+U09BUF9IRUFERVJfX05BTUVTUEFDRV9VUkk8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX1BBUlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fUEFSVCI+U09BUF9IRUFERVJfX1BBUlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT44PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX1JFUVVJUkVEIj5TT0FQX0hFQURFUl9fUkVRVUlSRUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX1VTRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19VU0UiPlNPQVBfSEVBREVSX19VU0U8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0UiPlNPQVBfSEVBREVSX0JBU0U8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5TT0FQX0hFQURFUl9CQVNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4wPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVMiPlNPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVM8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT42PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlQiPlNPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fRUxFTUVOVF9UWVBFIj5TT0FQX0hFQURFUl9CQVNFX19FTEVNRU5UX1RZUEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0UiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19FTUVTU0FHRSI+U09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0U8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT45PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRVBBUlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19FUEFSVCI+U09BUF9IRUFERVJfQkFTRV9fRVBBUlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xMDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX01FU1NBR0UiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFIj5TT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJIj5TT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX1BBUlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19QQVJUIj5TT0FQX0hFQURFUl9CQVNFX19QQVJUPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+ODwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fUkVRVUlSRUQiPlNPQVBfSEVBREVSX0JBU0VfX1JFUVVJUkVEPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX1VTRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX1VTRSI+U09BUF9IRUFERVJfQkFTRV9fVVNFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfRkVBVFVSRV9DT1VOVCI+U09BUF9IRUFERVJfQkFTRV9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUIj5TT0FQX0hFQURFUl9GQVVMVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+U09BUF9IRUFERVJfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTIj5TT0FQX0hFQURFUl9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19FTEVNRU5UIj5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX0VMRU1FTlRfVFlQRSI+U09BUF9IRUFERVJfRkFVTFRfX0VMRU1FTlRfVFlQRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRU1FU1NBR0UiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fRU1FU1NBR0UiPlNPQVBfSEVBREVSX0ZBVUxUX19FTUVTU0FHRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjk8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRVBBUlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fRVBBUlQiPlNPQVBfSEVBREVSX0ZBVUxUX19FUEFSVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjEwPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfRkFVTFRfX01FU1NBR0UiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fTUVTU0FHRSI+U09BUF9IRUFERVJfRkFVTFRfX01FU1NBR0U8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT43PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfRkFVTFRfX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fTkFNRVNQQUNFX1VSSSI+U09BUF9IRUFERVJfRkFVTFRfX05BTUVTUEFDRV9VUkk8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfRkFVTFRfX1BBUlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fUEFSVCI+U09BUF9IRUFERVJfRkFVTFRfX1BBUlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT44PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfRkFVTFRfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX1JFUVVJUkVEIj5TT0FQX0hFQURFUl9GQVVMVF9fUkVRVUlSRUQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4yPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfRkFVTFRfX1VTRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19VU0UiPlNPQVBfSEVBREVSX0ZBVUxUX19VU0U8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT40PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPlNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xMTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GRUFUVVJFX0NPVU5UIj5TT0FQX0hFQURFUl9GRUFUVVJFX0NPVU5UPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfT1BFUkFUSU9OIj5TT0FQX09QRVJBVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9PUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+U09BUF9PUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjA8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfT1BFUkFUSU9OX19FTEVNRU5UIj5TT0FQX09QRVJBVElPTl9fRUxFTUVOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9PUEVSQVRJT05fX0VMRU1FTlRfVFlQRSI+U09BUF9PUEVSQVRJT05fX0VMRU1FTlRfVFlQRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX09QRVJBVElPTl9fUkVRVUlSRUQiPlNPQVBfT1BFUkFUSU9OX19SRVFVSVJFRDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSSI+U09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjQ8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9fU1RZTEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX09QRVJBVElPTl9fU1RZTEUiPlNPQVBfT1BFUkFUSU9OX19TVFlMRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjU8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+U09BUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi08UD4KLQotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIzIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkJJTkRJTkciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNCSU5ESU5HIj5CSU5ESU5HPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkJJTkRJTkdfQVRUUklCVVRFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0JJTkRJTkdfQVRUUklCVVRFIj5CSU5ESU5HX0FUVFJJQlVURTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJiaW5kaW5nIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkJJTkRJTkdfRUxFTUVOVF9UQUciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjQklORElOR19FTEVNRU5UX1RBRyI+QklORElOR19FTEVNRU5UX1RBRzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJiaW5kaW5nIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkRFRklOSVRJT04iPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNERUZJTklUSU9OIj5ERUZJTklUSU9OPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkRFRklOSVRJT05fRUxFTUVOVF9UQUciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjREVGSU5JVElPTl9FTEVNRU5UX1RBRyI+REVGSU5JVElPTl9FTEVNRU5UX1RBRzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJkZWZpbml0aW9ucyI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5ET0NVTUVOVEFUSU9OIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjRE9DVU1FTlRBVElPTiI+RE9DVU1FTlRBVElPTjwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5ET0NVTUVOVEFUSU9OX0VMRU1FTlRfVEFHIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0RPQ1VNRU5UQVRJT05fRUxFTUVOVF9UQUciPkRPQ1VNRU5UQVRJT05fRUxFTUVOVF9UQUc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iZG9jdW1lbnRhdGlvbiI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5FTEVNRU5UX0FUVFJJQlVURSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNFTEVNRU5UX0FUVFJJQlVURSI+RUxFTUVOVF9BVFRSSUJVVEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iZWxlbWVudCI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5FTkNPRElOR19BVFRSSUJVVEUiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjRU5DT0RJTkdfQVRUUklCVVRFIj5FTkNPRElOR19BVFRSSUJVVEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iZW5jb2RpbmciPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuRkFVTFQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNGQVVMVCI+RkFVTFQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4zPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuRkFVTFRfRUxFTUVOVF9UQUciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjRkFVTFRfRUxFTUVOVF9UQUciPkZBVUxUX0VMRU1FTlRfVEFHPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+ImZhdWx0IjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLklNUE9SVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0lNUE9SVCI+SU1QT1JUPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLklNUE9SVF9FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNJTVBPUlRfRUxFTUVOVF9UQUciPklNUE9SVF9FTEVNRU5UX1RBRzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJpbXBvcnQiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuSU5QVVQiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNJTlBVVCI+SU5QVVQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT41PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuSU5QVVRfRUxFTUVOVF9UQUciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjSU5QVVRfRUxFTUVOVF9UQUciPklOUFVUX0VMRU1FTlRfVEFHPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+ImlucHV0IjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkxPQ0FUSU9OX0FUVFJJQlVURSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNMT0NBVElPTl9BVFRSSUJVVEUiPkxPQ0FUSU9OX0FUVFJJQlVURTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJsb2NhdGlvbiI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5NRVNTQUdFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjTUVTU0FHRSI+TUVTU0FHRTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPjY8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5NRVNTQUdFX0FUVFJJQlVURSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNNRVNTQUdFX0FUVFJJQlVURSI+TUVTU0FHRV9BVFRSSUJVVEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4ibWVzc2FnZSI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5NRVNTQUdFX0VMRU1FTlRfVEFHIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI01FU1NBR0VfRUxFTUVOVF9UQUciPk1FU1NBR0VfRUxFTUVOVF9UQUc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4ibWVzc2FnZSI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5OQU1FX0FUVFJJQlVURSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNOQU1FX0FUVFJJQlVURSI+TkFNRV9BVFRSSUJVVEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4ibmFtZSI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5OQU1FU1BBQ0VfQVRUUklCVVRFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI05BTUVTUEFDRV9BVFRSSUJVVEUiPk5BTUVTUEFDRV9BVFRSSUJVVEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4ibmFtZXNwYWNlIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLk9QRVJBVElPTiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI09QRVJBVElPTiI+T1BFUkFUSU9OPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+NzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLk9QRVJBVElPTl9FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNPUEVSQVRJT05fRUxFTUVOVF9UQUciPk9QRVJBVElPTl9FTEVNRU5UX1RBRzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJvcGVyYXRpb24iPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuT1VUUFVUIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjT1VUUFVUIj5PVVRQVVQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT44PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuT1VUUFVUX0VMRU1FTlRfVEFHIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI09VVFBVVF9FTEVNRU5UX1RBRyI+T1VUUFVUX0VMRU1FTlRfVEFHPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+Im91dHB1dCI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5QQVJBTUVURVJfT1JERVJfQVRUUklCVVRFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1BBUkFNRVRFUl9PUkRFUl9BVFRSSUJVVEUiPlBBUkFNRVRFUl9PUkRFUl9BVFRSSUJVVEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4icGFyYW1ldGVyT3JkZXIiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuUEFSVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1BBUlQiPlBBUlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT45PC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuUEFSVF9FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNQQVJUX0VMRU1FTlRfVEFHIj5QQVJUX0VMRU1FTlRfVEFHPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+InBhcnQiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuUE9SVCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1BPUlQiPlBPUlQ8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4xMDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlBPUlRfRUxFTUVOVF9UQUciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjUE9SVF9FTEVNRU5UX1RBRyI+UE9SVF9FTEVNRU5UX1RBRzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJwb3J0IjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlBPUlRfVFlQRSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1BPUlRfVFlQRSI+UE9SVF9UWVBFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTE8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5QT1JUX1RZUEVfRUxFTUVOVF9UQUciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjUE9SVF9UWVBFX0VMRU1FTlRfVEFHIj5QT1JUX1RZUEVfRUxFTUVOVF9UQUc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4icG9ydFR5cGUiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuUkVTT1VSQ0VfVVJJX0FUVFJJQlVURSI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNSRVNPVVJDRV9VUklfQVRUUklCVVRFIj5SRVNPVVJDRV9VUklfQVRUUklCVVRFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+InJlc291cmNlVVJJIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8xOTk5Ij48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1NDSEVNQV9GT1JfU0NIRU1BX1VSSV8xOTk5Ij5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMTk5OTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hNTFNjaGVtYSI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMF8xMCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNTQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMF8xMCI+U0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDBfMTA8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iaHR0cDovL3d3dy53My5vcmcvMjAwMC8xMC9YTUxTY2hlbWEiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDEiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDEiPlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlNFUlZJQ0UiPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNTRVJWSUNFIj5TRVJWSUNFPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5TRVJWSUNFX0VMRU1FTlRfVEFHIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1NFUlZJQ0VfRUxFTUVOVF9UQUciPlNFUlZJQ0VfRUxFTUVOVF9UQUc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4ic2VydmljZSI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5UQVJHRVROQU1FU1BBQ0VfQVRUUklCVVRFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1RBUkdFVE5BTUVTUEFDRV9BVFRSSUJVVEUiPlRBUkdFVE5BTUVTUEFDRV9BVFRSSUJVVEU8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4idGFyZ2V0TmFtZXNwYWNlIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlRZUEVfQVRUUklCVVRFIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1RZUEVfQVRUUklCVVRFIj5UWVBFX0FUVFJJQlVURTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJ0eXBlIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlRZUEVTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjVFlQRVMiPlRZUEVTPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTM8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5UWVBFU19FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNUWVBFU19FTEVNRU5UX1RBRyI+VFlQRVNfRUxFTUVOVF9UQUc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4idHlwZXMiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuV1NETF9OQU1FU1BBQ0VfVVJJIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1dTRExfTkFNRVNQQUNFX1VSSSI+V1NETF9OQU1FU1BBQ0VfVVJJPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlhTRF9OQU1FU1BBQ0VfVVJJIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1hTRF9OQU1FU1BBQ0VfVVJJIj5YU0RfTkFNRVNQQUNFX1VSSTwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI8L0NPREU+PC9URD4KLTwvVFI+Ci08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi08UD4KLQotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIzIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5LkVSUk9SIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjRVJST1IiPkVSUk9SPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MTwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5LkZBVEFMIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjRkFUQUwiPkZBVEFMPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MDwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5LklORk9STUFUSU9OIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjSU5GT1JNQVRJT04iPklORk9STUFUSU9OPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MzwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5LldBUk5JTkciPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNXQVJOSU5HIj5XQVJOSU5HPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+MjwvQ09ERT48L1REPgotPC9UUj4KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxQPgotCi08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjMiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VJbXBsPC9BPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwuQ09OVElOVUVfT05fTE9BRF9FUlJPUiI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNDT05USU5VRV9PTl9MT0FEX0VSUk9SIj5DT05USU5VRV9PTl9MT0FEX0VSUk9SPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+IkNPTlRJTlVFX09OX0xPQURfRVJST1IiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwuVFJBQ0tfTE9DQVRJT04iPjwhLS0gLS0+PC9BPjxURCBBTElHTj0icmlnaHQiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURCBBTElHTj0ibGVmdCI+PENPREU+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjVFJBQ0tfTE9DQVRJT04iPlRSQUNLX0xPQ0FUSU9OPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+IlRSQUNLX0xPQ0FUSU9OIjwvQ09ERT48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsLlVTRV9FWFRFTlNJT05fRkFDVE9SSUVTIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI1VTRV9FWFRFTlNJT05fRkFDVE9SSUVTIj5VU0VfRVhURU5TSU9OX0ZBQ1RPUklFUzwvQT48L0NPREU+PC9URD4KLTxURCBBTElHTj0icmlnaHQiPjxDT0RFPiJVU0VfRVhURU5TSU9OX0ZBQ1RPUklFUyI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbC5XU0RMX0VOQ09ESU5HIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI1dTRExfRU5DT0RJTkciPldTRExfRU5DT0RJTkc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iV1NETF9FTkNPRElORyI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbC5XU0RMX0pBWFBfQ09ORklHIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI1dTRExfSkFYUF9DT05GSUciPldTRExfSkFYUF9DT05GSUc8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iV1NETF9KQVhQX0NPTkZJRyI8L0NPREU+PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbC5XU0RMX0pBWFBfUE9PTCI+PCEtLSAtLT48L0E+PFREIEFMSUdOPSJyaWdodCI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREIEFMSUdOPSJsZWZ0Ij48Q09ERT48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNXU0RMX0pBWFBfUE9PTCI+V1NETF9KQVhQX1BPT0w8L0E+PC9DT0RFPjwvVEQ+Ci08VEQgQUxJR049InJpZ2h0Ij48Q09ERT4iV1NETF9KQVhQX1BPT0wiPC9DT0RFPjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwuV1NETF9QUk9HUkVTU19NT05JVE9SIj48IS0tIC0tPjwvQT48VEQgQUxJR049InJpZ2h0Ij48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQgQUxJR049ImxlZnQiPjxDT0RFPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI1dTRExfUFJPR1JFU1NfTU9OSVRPUiI+V1NETF9QUk9HUkVTU19NT05JVE9SPC9BPjwvQ09ERT48L1REPgotPFREIEFMSUdOPSJyaWdodCI+PENPREU+IldTRExfUFJPR1JFU1NfTU9OSVRPUiI8L0NPREU+PC9URD4KLTwvVFI+Ci08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi08UD4KLQotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJpbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSJpbmRleC5odG1sP2NvbnN0YW50LXZhbHVlcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImNvbnN0YW50LXZhbHVlcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvZGVwcmVjYXRlZC1saXN0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9kZXByZWNhdGVkLWxpc3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEyYTZjYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9kZXByZWNhdGVkLWxpc3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1EZXByZWNhdGVkIExpc3QKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJEZXByZWNhdGVkIExpc3QiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImluZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJoZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/ZGVwcmVjYXRlZC1saXN0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPkRlcHJlY2F0ZWQgQVBJPC9CPjwvSDI+Ci08L0NFTlRFUj4KLTxIUiBTSVpFPSI0IiBOT1NIQURFPgotPEI+Q29udGVudHM8L0I+PFVMPgotPC9VTD4KLQotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImhlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iaW5kZXguaHRtbD9kZXByZWNhdGVkLWxpc3QuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2hlbHAtZG9jLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9oZWxwLWRvYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTE4MTU1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2hlbHAtZG9jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotQVBJIEhlbHAKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJBUEkgSGVscCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/aGVscC1kb2MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJoZWxwLWRvYy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDE+Ci1Ib3cgVGhpcyBBUEkgRG9jdW1lbnQgSXMgT3JnYW5pemVkPC9IMT4KLTwvQ0VOVEVSPgotVGhpcyBBUEkgKEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZSkgZG9jdW1lbnQgaGFzIHBhZ2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGl0ZW1zIGluIHRoZSBuYXZpZ2F0aW9uIGJhciwgZGVzY3JpYmVkIGFzIGZvbGxvd3MuPEgzPgotT3ZlcnZpZXc8L0gzPgotPEJMT0NLUVVPVEU+Ci0KLTxQPgotVGhlIDxBIEhSRUY9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+T3ZlcnZpZXc8L0E+IHBhZ2UgaXMgdGhlIGZyb250IHBhZ2Ugb2YgdGhpcyBBUEkgZG9jdW1lbnQgYW5kIHByb3ZpZGVzIGEgbGlzdCBvZiBhbGwgcGFja2FnZXMgd2l0aCBhIHN1bW1hcnkgZm9yIGVhY2guICBUaGlzIHBhZ2UgY2FuIGFsc28gY29udGFpbiBhbiBvdmVyYWxsIGRlc2NyaXB0aW9uIG9mIHRoZSBzZXQgb2YgcGFja2FnZXMuPC9CTE9DS1FVT1RFPgotPEgzPgotUGFja2FnZTwvSDM+Ci08QkxPQ0tRVU9URT4KLQotPFA+Ci1FYWNoIHBhY2thZ2UgaGFzIGEgcGFnZSB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBpdHMgY2xhc3NlcyBhbmQgaW50ZXJmYWNlcywgd2l0aCBhIHN1bW1hcnkgZm9yIGVhY2guIFRoaXMgcGFnZSBjYW4gY29udGFpbiBmb3VyIGNhdGVnb3JpZXM6PFVMPgotPExJPkludGVyZmFjZXMgKGl0YWxpYyk8TEk+Q2xhc3NlczxMST5FbnVtczxMST5FeGNlcHRpb25zPExJPkVycm9yczxMST5Bbm5vdGF0aW9uIFR5cGVzPC9VTD4KLTwvQkxPQ0tRVU9URT4KLTxIMz4KLUNsYXNzL0ludGVyZmFjZTwvSDM+Ci08QkxPQ0tRVU9URT4KLQotPFA+Ci1FYWNoIGNsYXNzLCBpbnRlcmZhY2UsIG5lc3RlZCBjbGFzcyBhbmQgbmVzdGVkIGludGVyZmFjZSBoYXMgaXRzIG93biBzZXBhcmF0ZSBwYWdlLiBFYWNoIG9mIHRoZXNlIHBhZ2VzIGhhcyB0aHJlZSBzZWN0aW9ucyBjb25zaXN0aW5nIG9mIGEgY2xhc3MvaW50ZXJmYWNlIGRlc2NyaXB0aW9uLCBzdW1tYXJ5IHRhYmxlcywgYW5kIGRldGFpbGVkIG1lbWJlciBkZXNjcmlwdGlvbnM6PFVMPgotPExJPkNsYXNzIGluaGVyaXRhbmNlIGRpYWdyYW08TEk+RGlyZWN0IFN1YmNsYXNzZXM8TEk+QWxsIEtub3duIFN1YmludGVyZmFjZXM8TEk+QWxsIEtub3duIEltcGxlbWVudGluZyBDbGFzc2VzPExJPkNsYXNzL2ludGVyZmFjZSBkZWNsYXJhdGlvbjxMST5DbGFzcy9pbnRlcmZhY2UgZGVzY3JpcHRpb24KLTxQPgotPExJPk5lc3RlZCBDbGFzcyBTdW1tYXJ5PExJPkZpZWxkIFN1bW1hcnk8TEk+Q29uc3RydWN0b3IgU3VtbWFyeTxMST5NZXRob2QgU3VtbWFyeQotPFA+Ci08TEk+RmllbGQgRGV0YWlsPExJPkNvbnN0cnVjdG9yIERldGFpbDxMST5NZXRob2QgRGV0YWlsPC9VTD4KLUVhY2ggc3VtbWFyeSBlbnRyeSBjb250YWlucyB0aGUgZmlyc3Qgc2VudGVuY2UgZnJvbSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gZm9yIHRoYXQgaXRlbS4gVGhlIHN1bW1hcnkgZW50cmllcyBhcmUgYWxwaGFiZXRpY2FsLCB3aGlsZSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIGFyZSBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLiBUaGlzIHByZXNlcnZlcyB0aGUgbG9naWNhbCBncm91cGluZ3MgZXN0YWJsaXNoZWQgYnkgdGhlIHByb2dyYW1tZXIuPC9CTE9DS1FVT1RFPgotPC9CTE9DS1FVT1RFPgotPEgzPgotQW5ub3RhdGlvbiBUeXBlPC9IMz4KLTxCTE9DS1FVT1RFPgotCi08UD4KLUVhY2ggYW5ub3RhdGlvbiB0eXBlIGhhcyBpdHMgb3duIHNlcGFyYXRlIHBhZ2Ugd2l0aCB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOjxVTD4KLTxMST5Bbm5vdGF0aW9uIFR5cGUgZGVjbGFyYXRpb248TEk+QW5ub3RhdGlvbiBUeXBlIGRlc2NyaXB0aW9uPExJPlJlcXVpcmVkIEVsZW1lbnQgU3VtbWFyeTxMST5PcHRpb25hbCBFbGVtZW50IFN1bW1hcnk8TEk+RWxlbWVudCBEZXRhaWw8L1VMPgotPC9CTE9DS1FVT1RFPgotPC9CTE9DS1FVT1RFPgotPEgzPgotRW51bTwvSDM+Ci08QkxPQ0tRVU9URT4KLQotPFA+Ci1FYWNoIGVudW0gaGFzIGl0cyBvd24gc2VwYXJhdGUgcGFnZSB3aXRoIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6PFVMPgotPExJPkVudW0gZGVjbGFyYXRpb248TEk+RW51bSBkZXNjcmlwdGlvbjxMST5FbnVtIENvbnN0YW50IFN1bW1hcnk8TEk+RW51bSBDb25zdGFudCBEZXRhaWw8L1VMPgotPC9CTE9DS1FVT1RFPgotPEgzPgotVXNlPC9IMz4KLTxCTE9DS1FVT1RFPgotRWFjaCBkb2N1bWVudGVkIHBhY2thZ2UsIGNsYXNzIGFuZCBpbnRlcmZhY2UgaGFzIGl0cyBvd24gVXNlIHBhZ2UuICBUaGlzIHBhZ2UgZGVzY3JpYmVzIHdoYXQgcGFja2FnZXMsIGNsYXNzZXMsIG1ldGhvZHMsIGNvbnN0cnVjdG9ycyBhbmQgZmllbGRzIHVzZSBhbnkgcGFydCBvZiB0aGUgZ2l2ZW4gY2xhc3Mgb3IgcGFja2FnZS4gR2l2ZW4gYSBjbGFzcyBvciBpbnRlcmZhY2UgQSwgaXRzIFVzZSBwYWdlIGluY2x1ZGVzIHN1YmNsYXNzZXMgb2YgQSwgZmllbGRzIGRlY2xhcmVkIGFzIEEsIG1ldGhvZHMgdGhhdCByZXR1cm4gQSwgYW5kIG1ldGhvZHMgYW5kIGNvbnN0cnVjdG9ycyB3aXRoIHBhcmFtZXRlcnMgb2YgdHlwZSBBLiAgWW91IGNhbiBhY2Nlc3MgdGhpcyBwYWdlIGJ5IGZpcnN0IGdvaW5nIHRvIHRoZSBwYWNrYWdlLCBjbGFzcyBvciBpbnRlcmZhY2UsIHRoZW4gY2xpY2tpbmcgb24gdGhlICJVc2UiIGxpbmsgaW4gdGhlIG5hdmlnYXRpb24gYmFyLjwvQkxPQ0tRVU9URT4KLTxIMz4KLVRyZWUgKENsYXNzIEhpZXJhcmNoeSk8L0gzPgotPEJMT0NLUVVPVEU+Ci1UaGVyZSBpcyBhIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+Q2xhc3MgSGllcmFyY2h5PC9BPiBwYWdlIGZvciBhbGwgcGFja2FnZXMsIHBsdXMgYSBoaWVyYXJjaHkgZm9yIGVhY2ggcGFja2FnZS4gRWFjaCBoaWVyYXJjaHkgcGFnZSBjb250YWlucyBhIGxpc3Qgb2YgY2xhc3NlcyBhbmQgYSBsaXN0IG9mIGludGVyZmFjZXMuIFRoZSBjbGFzc2VzIGFyZSBvcmdhbml6ZWQgYnkgaW5oZXJpdGFuY2Ugc3RydWN0dXJlIHN0YXJ0aW5nIHdpdGggPGNvZGU+amF2YS5sYW5nLk9iamVjdDwvY29kZT4uIFRoZSBpbnRlcmZhY2VzIGRvIG5vdCBpbmhlcml0IGZyb20gPGNvZGU+amF2YS5sYW5nLk9iamVjdDwvY29kZT4uPFVMPgotPExJPldoZW4gdmlld2luZyB0aGUgT3ZlcnZpZXcgcGFnZSwgY2xpY2tpbmcgb24gIlRyZWUiIGRpc3BsYXlzIHRoZSBoaWVyYXJjaHkgZm9yIGFsbCBwYWNrYWdlcy48TEk+V2hlbiB2aWV3aW5nIGEgcGFydGljdWxhciBwYWNrYWdlLCBjbGFzcyBvciBpbnRlcmZhY2UgcGFnZSwgY2xpY2tpbmcgIlRyZWUiIGRpc3BsYXlzIHRoZSBoaWVyYXJjaHkgZm9yIG9ubHkgdGhhdCBwYWNrYWdlLjwvVUw+Ci08L0JMT0NLUVVPVEU+Ci08SDM+Ci1EZXByZWNhdGVkIEFQSTwvSDM+Ci08QkxPQ0tRVU9URT4KLVRoZSA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZCBBUEk8L0E+IHBhZ2UgbGlzdHMgYWxsIG9mIHRoZSBBUEkgdGhhdCBoYXZlIGJlZW4gZGVwcmVjYXRlZC4gQSBkZXByZWNhdGVkIEFQSSBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHVzZSwgZ2VuZXJhbGx5IGR1ZSB0byBpbXByb3ZlbWVudHMsIGFuZCBhIHJlcGxhY2VtZW50IEFQSSBpcyB1c3VhbGx5IGdpdmVuLiBEZXByZWNhdGVkIEFQSXMgbWF5IGJlIHJlbW92ZWQgaW4gZnV0dXJlIGltcGxlbWVudGF0aW9ucy48L0JMT0NLUVVPVEU+Ci08SDM+Ci1JbmRleDwvSDM+Ci08QkxPQ0tRVU9URT4KLVRoZSA8QSBIUkVGPSJpbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPkluZGV4PC9BPiBjb250YWlucyBhbiBhbHBoYWJldGljIGxpc3Qgb2YgYWxsIGNsYXNzZXMsIGludGVyZmFjZXMsIGNvbnN0cnVjdG9ycywgbWV0aG9kcywgYW5kIGZpZWxkcy48L0JMT0NLUVVPVEU+Ci08SDM+Ci1QcmV2L05leHQ8L0gzPgotVGhlc2UgbGlua3MgdGFrZSB5b3UgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgY2xhc3MsIGludGVyZmFjZSwgcGFja2FnZSwgb3IgcmVsYXRlZCBwYWdlLjxIMz4KLUZyYW1lcy9ObyBGcmFtZXM8L0gzPgotVGhlc2UgbGlua3Mgc2hvdyBhbmQgaGlkZSB0aGUgSFRNTCBmcmFtZXMuICBBbGwgcGFnZXMgYXJlIGF2YWlsYWJsZSB3aXRoIG9yIHdpdGhvdXQgZnJhbWVzLgotPFA+Ci08SDM+Ci1TZXJpYWxpemVkIEZvcm08L0gzPgotRWFjaCBzZXJpYWxpemFibGUgb3IgZXh0ZXJuYWxpemFibGUgY2xhc3MgaGFzIGEgZGVzY3JpcHRpb24gb2YgaXRzIHNlcmlhbGl6YXRpb24gZmllbGRzIGFuZCBtZXRob2RzLiBUaGlzIGluZm9ybWF0aW9uIGlzIG9mIGludGVyZXN0IHRvIHJlLWltcGxlbWVudG9ycywgbm90IHRvIGRldmVsb3BlcnMgdXNpbmcgdGhlIEFQSS4gV2hpbGUgdGhlcmUgaXMgbm8gbGluayBpbiB0aGUgbmF2aWdhdGlvbiBiYXIsIHlvdSBjYW4gZ2V0IHRvIHRoaXMgaW5mb3JtYXRpb24gYnkgZ29pbmcgdG8gYW55IHNlcmlhbGl6ZWQgY2xhc3MgYW5kIGNsaWNraW5nICJTZXJpYWxpemVkIEZvcm0iIGluIHRoZSAiU2VlIGFsc28iIHNlY3Rpb24gb2YgdGhlIGNsYXNzIGRlc2NyaXB0aW9uLgotPFA+Ci08SDM+Ci1Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0gzPgotVGhlIDxhIGhyZWY9ImNvbnN0YW50LXZhbHVlcy5odG1sIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+IHBhZ2UgbGlzdHMgdGhlIHN0YXRpYyBmaW5hbCBmaWVsZHMgYW5kIHRoZWlyIHZhbHVlcy4KLTxQPgotPEZPTlQgU0laRT0iLTEiPgotPEVNPgotVGhpcyBoZWxwIGZpbGUgYXBwbGllcyB0byBBUEkgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgdXNpbmcgdGhlIHN0YW5kYXJkIGRvY2xldC48L0VNPgotPC9GT05UPgotPEJSPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/aGVscC1kb2MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJoZWxwLWRvYy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGU0Y2VhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1BLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iQS1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIExFVFRFUiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMi5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci08QSBOQU1FPSJfQV8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkE8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCNhZGRFeHRlbnNpYmlsaXR5RWxlbWVudChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIj48Qj5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChFeHRlbnNpYmlsaXR5RWxlbWVudCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFydDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2FkZEV4dGVuc2liaWxpdHlFbGVtZW50KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkiPjxCPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KEV4dGVuc2liaWxpdHlFbGVtZW50KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPgotPEREPkFkZHMgYW4gRXh0ZW5zaWJpbGl0eUVsZW1lbnQgdG8gdGhlICc8ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwjYWRkTUlNRVBhcnQoamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQpIj48Qj5hZGRNSU1FUGFydChNSU1FUGFydCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FTXVsdGlwYXJ0UmVsYXRlZDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNhdHRhY2hlZChFT2JqZWN0KSI+PEI+YXR0YWNoZWQoRU9iamVjdCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VJbXBsPC9BPgotPEREPiZuYnNwOwotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBMRVRURVImbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTIuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xMC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmM2IwZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUwtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJMLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTkuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTEwLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTAuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci08QSBOQU1FPSJfTF8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkw8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNMSVNUIj48Qj5MSVNUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5MaXN0PC9lbT4nIGRhdGEgdHlwZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI0xJU1QiPjxCPkxJU1Q8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+TGlzdDwvZW0+JyBkYXRhIHR5cGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNMT0NBVElPTl9BVFRSSUJVVEUiPjxCPkxPQ0FUSU9OX0FUVFJJQlVURTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4ibG9jYXRpb24iPC9jb2RlPi4KLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTkuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTEwLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTAuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTExLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWM3ZDEwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTExLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMzUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotTS1JbmRleAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Ik0tSW5kZXgiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTExLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci08QSBOQU1FPSJfTV8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPk08L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk1lc3NhZ2U8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNNRVNTQUdFIj48Qj5NRVNTQUdFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+Im1lc3NhZ2UiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI01FU1NBR0UiPjxCPk1FU1NBR0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+TWVzc2FnZTwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0UiPjxCPk1FU1NBR0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPk1lc3NhZ2U8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNNRVNTQUdFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPk1FU1NBR0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjxCPk1FU1NBR0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fRUxFTUVOVCI+PEI+TUVTU0FHRV9fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI01FU1NBR0VfX0VQQVJUUyI+PEI+TUVTU0FHRV9fRVBBUlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fRVBBUlRTIj48Qj5NRVNTQUdFX19FUEFSVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTUVTU0FHRV9fUU5BTUUiPjxCPk1FU1NBR0VfX1FOQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fUU5BTUUiPjxCPk1FU1NBR0VfX1FOQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI01FU1NBR0VfX1VOREVGSU5FRCI+PEI+TUVTU0FHRV9fVU5ERUZJTkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0VfX1VOREVGSU5FRCI+PEI+TUVTU0FHRV9fVU5ERUZJTkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjTUVTU0FHRV9BVFRSSUJVVEUiPjxCPk1FU1NBR0VfQVRUUklCVVRFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJtZXNzYWdlIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjTUVTU0FHRV9FTEVNRU5UX1RBRyI+PEI+TUVTU0FHRV9FTEVNRU5UX1RBRzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJtZXNzYWdlIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNNRVNTQUdFX0ZFQVRVUkVfQ09VTlQiPjxCPk1FU1NBR0VfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5NZXNzYWdlPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNNRVNTQUdFX1JFRkVSRU5DRSI+PEI+TUVTU0FHRV9SRUZFUkVOQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+TWVzc2FnZSBSZWZlcmVuY2U8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNNRVNTQUdFX1JFRkVSRU5DRSI+PEI+TUVTU0FHRV9SRUZFUkVOQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPk1lc3NhZ2UgUmVmZXJlbmNlPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+TUVTU0FHRV9SRUZFUkVOQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48Qj5NRVNTQUdFX1JFRkVSRU5DRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNNRVNTQUdFX1JFRkVSRU5DRV9fRUxFTUVOVCI+PEI+TUVTU0FHRV9SRUZFUkVOQ0VfX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNNRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0UiPjxCPk1FU1NBR0VfUkVGRVJFTkNFX19FTUVTU0FHRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0VfUkVGRVJFTkNFX19FTUVTU0FHRSI+PEI+TUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI01FU1NBR0VfUkVGRVJFTkNFX19OQU1FIj48Qj5NRVNTQUdFX1JFRkVSRU5DRV9fTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUUiPjxCPk1FU1NBR0VfUkVGRVJFTkNFX19OQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfRkVBVFVSRV9DT1VOVCI+PEI+TUVTU0FHRV9SRUZFUkVOQ0VfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5NZXNzYWdlIFJlZmVyZW5jZTwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TWVzc2FnZVJlZmVyZW5jZTwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZSBSZWZlcmVuY2U8L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNNSU1FX0NPTlRFTlQiPjxCPk1JTUVfQ09OVEVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5Db250ZW50PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfQ09OVEVOVCI+PEI+TUlNRV9DT05URU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5Db250ZW50PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfQ09OVEVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5NSU1FX0NPTlRFTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfQ09OVEVOVF9fRUxFTUVOVCI+PEI+TUlNRV9DT05URU5UX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfQ09OVEVOVF9fRUxFTUVOVF9UWVBFIj48Qj5NSU1FX0NPTlRFTlRfX0VMRU1FTlRfVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfQ09OVEVOVF9fRVBBUlQiPjxCPk1JTUVfQ09OVEVOVF9fRVBBUlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9DT05URU5UX19FUEFSVCI+PEI+TUlNRV9DT05URU5UX19FUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9DT05URU5UX19SRVFVSVJFRCI+PEI+TUlNRV9DT05URU5UX19SRVFVSVJFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTUlNRV9DT05URU5UX19UWVBFIj48Qj5NSU1FX0NPTlRFTlRfX1RZUEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHlwZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfX1RZUEUiPjxCPk1JTUVfQ09OVEVOVF9fVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVCI+PEI+TUlNRV9DT05URU5UX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+Q29udGVudDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfTUlNRV9YTUwiPjxCPk1JTUVfTUlNRV9YTUw8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+TWltZSBYbWw8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NSU1FX1hNTCI+PEI+TUlNRV9NSU1FX1hNTDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+TWltZSBYbWw8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NSU1FX1hNTF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5NSU1FX01JTUVfWE1MX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01JTUVfWE1MX19FTEVNRU5UIj48Qj5NSU1FX01JTUVfWE1MX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTUlNRV9YTUxfX0VMRU1FTlRfVFlQRSI+PEI+TUlNRV9NSU1FX1hNTF9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTUlNRV9NSU1FX1hNTF9fRVBBUlQiPjxCPk1JTUVfTUlNRV9YTUxfX0VQQVJUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTUlNRV9YTUxfX0VQQVJUIj48Qj5NSU1FX01JTUVfWE1MX19FUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NSU1FX1hNTF9fUkVRVUlSRUQiPjxCPk1JTUVfTUlNRV9YTUxfX1JFUVVJUkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQiPjxCPk1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5NaW1lIFhtbDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURUQiPjxCPk1JTUVfTVVMVElQQVJUX1JFTEFURUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+TXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NVUxUSVBBUlRfUkVMQVRFRCI+PEI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+TXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UIj48Qj5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURURfX0VMRU1FTlRfVFlQRSI+PEI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVCI+PEI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTUlNRSBQYXJ0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVCI+PEI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTUlNRSBQYXJ0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURURfX1JFUVVJUkVEIj48Qj5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19SRVFVSVJFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UIj48Qj5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+TXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNNSU1FX1BBUlQiPjxCPk1JTUVfUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfUEFSVCI+PEI+TUlNRV9QQVJUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfUEFSVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5NSU1FX1BBUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjxCPk1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX1BBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48Qj5NSU1FX1BBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfUEFSVF9fRUxFTUVOVCI+PEI+TUlNRV9QQVJUX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfUEFSVF9fRUxFTUVOVF9UWVBFIj48Qj5NSU1FX1BBUlRfX0VMRU1FTlRfVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfUEFSVF9fUkVRVUlSRUQiPjxCPk1JTUVfUEFSVF9fUkVRVUlSRUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfUEFSVF9GRUFUVVJFX0NPVU5UIj48Qj5NSU1FX1BBUlRfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5QYXJ0PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FQ29udGVudDwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjxERD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Db250ZW50PC9iPjwvZW0+JzxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVGYWN0b3J5PC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+PEREPlRoZSA8Yj5GYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNaW1lWG1sPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk1pbWUgWG1sPC9iPjwvZW0+JzxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk11bHRpcGFydCBSZWxhdGVkPC9iPjwvZW0+JzxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVQYWNrYWdlPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+PEREPlRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVQYWNrYWdlLkxpdGVyYWxzPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+PEREPkRlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQKLSAKLSAgIGVhY2ggY2xhc3MsCi0gICBlYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcywKLSAgIGVhY2ggZW51bSwKLSAgIGFuZCBlYWNoIGRhdGEgdHlwZQotIAotIDwhPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRVBhcnQ8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UGFydDwvYj48L2VtPic8L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMC5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMi5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMTEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTEyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NTU5NTAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1OLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iTi1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMS5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMy5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMTIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLTxBIE5BTUU9Il9OXyI+PCEtLSAtLT48L0E+PEgyPgotPEI+TjwvQj48L0gyPgotPERMPgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI05BTUVfQVRUUklCVVRFIj48Qj5OQU1FX0FUVFJJQlVURTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4ibmFtZSI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5OYW1lc3BhY2U8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk5hbWVzcGFjZTwvYj48L2VtPicuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTkFNRVNQQUNFIj48Qj5OQU1FU1BBQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+TmFtZXNwYWNlPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTkFNRVNQQUNFIj48Qj5OQU1FU1BBQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPk5hbWVzcGFjZTwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI05BTUVTUEFDRV9fUFJFRklYIj48Qj5OQU1FU1BBQ0VfX1BSRUZJWDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5QcmVmaXg8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNOQU1FU1BBQ0VfX1BSRUZJWCI+PEI+TkFNRVNQQUNFX19QUkVGSVg8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UHJlZml4PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI05BTUVTUEFDRV9fVVJJIj48Qj5OQU1FU1BBQ0VfX1VSSTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNOQU1FU1BBQ0VfX1VSSSI+PEI+TkFNRVNQQUNFX19VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNOQU1FU1BBQ0VfQVRUUklCVVRFIj48Qj5OQU1FU1BBQ0VfQVRUUklCVVRFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJuYW1lc3BhY2UiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI05BTUVTUEFDRV9GRUFUVVJFX0NPVU5UIj48Qj5OQU1FU1BBQ0VfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5OYW1lc3BhY2U8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNub2RlVHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+bm9kZVR5cGUoU3RyaW5nKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlJldHVybnMgYSBub2RlIHR5cGUgZ2l2ZW4gdGhlIFN0cmluZyBuYW1lIG9mIGVsZW1lbnQgdGFnLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI25vZGVUeXBlKG9yZy53M2MuZG9tLk5vZGUpIj48Qj5ub2RlVHlwZShOb2RlKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlJldHVybnMgYSBub2RlIHR5cGUgZGVmaW5lZCBpbiBXU0RMQ29uc3RhbnRzIGdpdmVuIHRoZSBET00gbm9kZS4KLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTExLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xMi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xMy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdiNThjYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xMy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLU8tSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJPLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xMy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX09fIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5PPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk9wZXJhdGlvbjwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+Jy48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjT1BFUkFUSU9OIj48Qj5PUEVSQVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ib3BlcmF0aW9uIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNPUEVSQVRJT04iPjxCPk9QRVJBVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5PcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT04iPjxCPk9QRVJBVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPk9QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48Qj5PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjT1BFUkFUSU9OX19FRkFVTFRTIj48Qj5PUEVSQVRJT05fX0VGQVVMVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX19FRkFVTFRTIj48Qj5PUEVSQVRJT05fX0VGQVVMVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09QRVJBVElPTl9fRUlOUFVUIj48Qj5PUEVSQVRJT05fX0VJTlBVVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX0VJTlBVVCI+PEI+T1BFUkFUSU9OX19FSU5QVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUlucHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09QRVJBVElPTl9fRUxFTUVOVCI+PEI+T1BFUkFUSU9OX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjT1BFUkFUSU9OX19FT1VUUFVUIj48Qj5PUEVSQVRJT05fX0VPVVRQVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09QRVJBVElPTl9fRU9VVFBVVCI+PEI+T1BFUkFUSU9OX19FT1VUUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjT1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HIj48Qj5PUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBhcmFtZXRlciBPcmRlcmluZzwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HIj48Qj5PUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcmFtZXRlciBPcmRlcmluZzwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09QRVJBVElPTl9fTkFNRSI+PEI+T1BFUkFUSU9OX19OQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX05BTUUiPjxCPk9QRVJBVElPTl9fTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09QRVJBVElPTl9fU1RZTEUiPjxCPk9QRVJBVElPTl9fU1RZTEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX1NUWUxFIj48Qj5PUEVSQVRJT05fX1NUWUxFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlN0eWxlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09QRVJBVElPTl9fVU5ERUZJTkVEIj48Qj5PUEVSQVRJT05fX1VOREVGSU5FRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX1VOREVGSU5FRCI+PEI+T1BFUkFUSU9OX19VTkRFRklORUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNPUEVSQVRJT05fRUxFTUVOVF9UQUciPjxCPk9QRVJBVElPTl9FTEVNRU5UX1RBRzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJvcGVyYXRpb24iPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj48Qj5PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5PcGVyYXRpb248L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09QRVJBVElPTl9UWVBFIj48Qj5PUEVSQVRJT05fVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT5PcGVyYXRpb24gVHlwZTwvZW0+JyBkYXRhIHR5cGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09QRVJBVElPTl9UWVBFIj48Qj5PUEVSQVRJT05fVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8ZW0+T3BlcmF0aW9uIFR5cGU8L2VtPicgZGF0YSB0eXBlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsPEREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9CPjwvQT4gLSBwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDxERD4mbmJzcDs8RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0I+PC9BPiAtIHBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPEREPiZuYnNwOzxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQj48L0E+IC0gcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8REQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQj48L0E+IC0gcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPEREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5PdXRwdXQ8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk91dHB1dDwvYj48L2VtPicuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI09VVFBVVCI+PEI+T1VUUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+Im91dHB1dCI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjT1VUUFVUIj48Qj5PVVRQVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+T3V0cHV0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1VUUFVUIj48Qj5PVVRQVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPk91dHB1dDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09VVFBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5PVVRQVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PEI+T1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09VVFBVVF9fRUxFTUVOVCI+PEI+T1VUUFVUX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1VUUFVUX19FTUVTU0FHRSI+PEI+T1VUUFVUX19FTUVTU0FHRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPVVRQVVRfX05BTUUiPjxCPk9VVFBVVF9fTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNPVVRQVVRfRUxFTUVOVF9UQUciPjxCPk9VVFBVVF9FTEVNRU5UX1RBRzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJvdXRwdXQiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09VVFBVVF9GRUFUVVJFX0NPVU5UIj48Qj5PVVRQVVRfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5PdXRwdXQ8L2VtPicgY2xhc3MKLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xMy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xNC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NjYzhmOS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xNC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjg5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVAtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJQLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xNC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX1BfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5QPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjUEFSQU1FVEVSX09SREVSX0FUVFJJQlVURSI+PEI+UEFSQU1FVEVSX09SREVSX0FUVFJJQlVURTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4icGFyYW1ldGVyT3JkZXIiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNwYXJzZShvcmcueG1sLnNheC5JbnB1dFNvdXJjZSkiPjxCPnBhcnNlKElucHV0U291cmNlKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjcGFyc2UoamF2YS5pby5JbnB1dFN0cmVhbSkiPjxCPnBhcnNlKElucHV0U3RyZWFtKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+UGFyc2VzIHRoZSBYTUwgY29udGVudCByZWFkIGZyb20gdGhlIGdpdmVuIGlucHV0IHN0cmVhbS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBhcnQ8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNQQVJUIj48Qj5QQVJUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InBhcnQiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BBUlQiPjxCPlBBUlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+UGFydDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BBUlQiPjxCPlBBUlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPlBBUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjxCPlBBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fRUxFTUVOVCI+PEI+UEFSVF9fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BBUlRfX0VMRU1FTlRfREVDTEFSQVRJT04iPjxCPlBBUlRfX0VMRU1FTlRfREVDTEFSQVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBEZWNsYXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BBUlRfX0VMRU1FTlRfREVDTEFSQVRJT04iPjxCPlBBUlRfX0VMRU1FTlRfREVDTEFSQVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBEZWNsYXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNQQVJUX19FTEVNRU5UX05BTUUiPjxCPlBBUlRfX0VMRU1FTlRfTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IE5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX19FTEVNRU5UX05BTUUiPjxCPlBBUlRfX0VMRU1FTlRfTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IE5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUEFSVF9fRU1FU1NBR0UiPjxCPlBBUlRfX0VNRVNTQUdFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fRU1FU1NBR0UiPjxCPlBBUlRfX0VNRVNTQUdFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BBUlRfX05BTUUiPjxCPlBBUlRfX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BBUlRfX05BTUUiPjxCPlBBUlRfX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNQQVJUX19UWVBFX0RFRklOSVRJT04iPjxCPlBBUlRfX1RZUEVfREVGSU5JVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UeXBlIERlZmluaXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX19UWVBFX0RFRklOSVRJT04iPjxCPlBBUlRfX1RZUEVfREVGSU5JVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UeXBlIERlZmluaXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUEFSVF9fVFlQRV9OQU1FIj48Qj5QQVJUX19UWVBFX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHlwZSBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fVFlQRV9OQU1FIj48Qj5QQVJUX19UWVBFX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VHlwZSBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNQQVJUX0VMRU1FTlRfVEFHIj48Qj5QQVJUX0VMRU1FTlRfVEFHPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InBhcnQiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BBUlRfRkVBVFVSRV9DT1VOVCI+PEI+UEFSVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBhcnQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBvcnQ8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBvcnQ8L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNQT1JUIj48Qj5QT1JUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InBvcnQiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BPUlQiPjxCPlBPUlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+UG9ydDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlQiPjxCPlBPUlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPlBvcnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPlBPUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUE9SVF9fRUJJTkRJTkciPjxCPlBPUlRfX0VCSU5ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9fRUJJTkRJTkciPjxCPlBPUlRfX0VCSU5ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48Qj5QT1JUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfX0VMRU1FTlQiPjxCPlBPUlRfX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNQT1JUX19OQU1FIj48Qj5QT1JUX19OQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX19OQU1FIj48Qj5QT1JUX19OQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1BPUlRfRUxFTUVOVF9UQUciPjxCPlBPUlRfRUxFTUVOVF9UQUc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icG9ydCI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9GRUFUVVJFX0NPVU5UIj48Qj5QT1JUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+UG9ydDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1BPUlRfVFlQRSI+PEI+UE9SVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InBvcnRUeXBlIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNQT1JUX1RZUEUiPjxCPlBPUlRfVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5Qb3J0IFR5cGU8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX1RZUEUiPjxCPlBPUlRfVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+UG9ydCBUeXBlPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9UWVBFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPlBPUlRfVFlQRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX1RZUEVfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48Qj5QT1JUX1RZUEVfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9UWVBFX19FTEVNRU5UIj48Qj5QT1JUX1RZUEVfX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNQT1JUX1RZUEVfX0VPUEVSQVRJT05TIj48Qj5QT1JUX1RZUEVfX0VPUEVSQVRJT05TPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX1RZUEVfX0VPUEVSQVRJT05TIj48Qj5QT1JUX1RZUEVfX0VPUEVSQVRJT05TPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUE9SVF9UWVBFX19RTkFNRSI+PEI+UE9SVF9UWVBFX19RTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9fUU5BTUUiPjxCPlBPUlRfVFlQRV9fUU5BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUE9SVF9UWVBFX19VTkRFRklORUQiPjxCPlBPUlRfVFlQRV9fVU5ERUZJTkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9fVU5ERUZJTkVEIj48Qj5QT1JUX1RZUEVfX1VOREVGSU5FRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1BPUlRfVFlQRV9FTEVNRU5UX1RBRyI+PEI+UE9SVF9UWVBFX0VMRU1FTlRfVEFHPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InBvcnRUeXBlIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX1RZUEVfRkVBVFVSRV9DT1VOVCI+PEI+UE9SVF9UWVBFX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+UG9ydCBUeXBlPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UG9ydFR5cGU8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBvcnQgVHlwZTwvYj48L2VtPicuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3Byb2Nlc3NpbmdJbnN0cnVjdGlvbihqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+cHJvY2Vzc2luZ0luc3RydWN0aW9uKFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xMy5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xNS5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMTQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xNC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTUuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTE1Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YWJhMWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1RLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iUS1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xNC5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xNi5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMTUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xNS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLTxBIE5BTUU9Il9RXyI+PCEtLSAtLT48L0E+PEgyPgotPEI+UTwvQj48L0gyPgotPERMPgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUU5BTUUiPjxCPlFOQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGRhdGEgdHlwZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUU5BTUUiPjxCPlFOQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5RTmFtZTwvZW0+JyBkYXRhIHR5cGUKLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xNS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xNi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk5NWM1Mi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xNi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVItSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJSLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xNi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX1JfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5SPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sI3JlZ2lzdGVyRmFjdG9yeShqYXZhLmxhbmcuU3RyaW5nLCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSkiPjxCPnJlZ2lzdGVyRmFjdG9yeShTdHJpbmcsIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNyZXNvbHZlRW50aXR5KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5yZXNvbHZlRW50aXR5KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjUkVTT1VSQ0VfVVJJX0FUVFJJQlVURSI+PEI+UkVTT1VSQ0VfVVJJX0FUVFJJQlVURTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4icmVzb3VyY2VVUkkiPC9jb2RlPi4KLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xNi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xNy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJmNWM0ZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xNy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODQyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVMtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJTLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xNy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX1NfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5TPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzE5OTkiPjxCPlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8xOTk5PC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgdmFsdWUgPGNvZGU+Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWE1MU2NoZW1hIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDBfMTAiPjxCPlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAwXzEwPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgdmFsdWUgPGNvZGU+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMTAvWE1MU2NoZW1hIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDEiPjxCPlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgdmFsdWUgPGNvZGU+Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjc2VyaWFsaXplKGphdmEuaW8uT3V0cHV0U3RyZWFtLCBvcmcudzNjLmRvbS5Eb2N1bWVudCkiPjxCPnNlcmlhbGl6ZShPdXRwdXRTdHJlYW0sIERvY3VtZW50KTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VJbXBsPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI3NlcmlhbGl6ZShqYXZhLmlvLk91dHB1dFN0cmVhbSwgb3JnLnczYy5kb20uRG9jdW1lbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXJpYWxpemUoT3V0cHV0U3RyZWFtLCBEb2N1bWVudCwgU3RyaW5nKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VJbXBsPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI3NlcmlhbGl6ZShqYXZhLmlvLk91dHB1dFN0cmVhbSwgb3JnLnczYy5kb20uRWxlbWVudCkiPjxCPnNlcmlhbGl6ZShPdXRwdXRTdHJlYW0sIEVsZW1lbnQpPC9CPjwvQT4gLSAKLVN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExSZXNvdXJjZUltcGw8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjc2VyaWFsaXplKGphdmEuaW8uT3V0cHV0U3RyZWFtLCBvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2VyaWFsaXplKE91dHB1dFN0cmVhbSwgRWxlbWVudCwgU3RyaW5nKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VJbXBsPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+U2VydmljZTwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+U2VydmljZTwvYj48L2VtPicuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1NFUlZJQ0UiPjxCPlNFUlZJQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ic2VydmljZSI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU0VSVklDRSI+PEI+U0VSVklDRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5TZXJ2aWNlPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRSI+PEI+U0VSVklDRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+U2VydmljZTwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1NFUlZJQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+U0VSVklDRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNTRVJWSUNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PEI+U0VSVklDRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNTRVJWSUNFX19FTEVNRU5UIj48Qj5TRVJWSUNFX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU0VSVklDRV9fRVBPUlRTIj48Qj5TRVJWSUNFX19FUE9SVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBvcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNTRVJWSUNFX19FUE9SVFMiPjxCPlNFUlZJQ0VfX0VQT1JUUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTRVJWSUNFX19RTkFNRSI+PEI+U0VSVklDRV9fUU5BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNTRVJWSUNFX19RTkFNRSI+PEI+U0VSVklDRV9fUU5BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU0VSVklDRV9fVU5ERUZJTkVEIj48Qj5TRVJWSUNFX19VTkRFRklORUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRV9fVU5ERUZJTkVEIj48Qj5TRVJWSUNFX19VTkRFRklORUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNTRVJWSUNFX0VMRU1FTlRfVEFHIj48Qj5TRVJWSUNFX0VMRU1FTlRfVEFHPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InNlcnZpY2UiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1NFUlZJQ0VfRkVBVFVSRV9DT1VOVCI+PEI+U0VSVklDRV9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlNlcnZpY2U8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI3NldENvbHVtbihpbnQpIj48Qj5zZXRDb2x1bW4oaW50KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNJbXBsPC9BPgotPEREPlNldHMgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgY29sdW1uIGF0dHJpYnV0ZS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjc2V0Q29udGFpbmVyKGphdmEubGFuZy5PYmplY3QpIj48Qj5zZXRDb250YWluZXIoT2JqZWN0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljPC9BPgotPEREPlNldHMgdGhlIENvbnRhaW5lciBvZiB0aGUgZXJyb3IKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI3NldENvbnRhaW5lcihqYXZhLmxhbmcuT2JqZWN0KSI+PEI+c2V0Q29udGFpbmVyKE9iamVjdCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjc2V0RG9jdW1lbnQob3JnLnczYy5kb20uRG9jdW1lbnQpIj48Qj5zZXREb2N1bWVudChEb2N1bWVudCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+Ci08REQ+U2V0cyBhIFczQyBET00gRG9jdW1lbnQgdG8gYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHVwIGEgRE9NIEVsZW1lbnQgdHJlZSBmb3IgdGhlIFdTREwgbW9kZWwuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+PEI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoRWxlbWVudCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+PENPREU+PGVtPkRvY3VtZW50YXRpb24gRWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3NldERvY3VtZW50TG9jYXRvcihvcmcueG1sLnNheC5Mb2NhdG9yKSI+PEI+c2V0RG9jdW1lbnRMb2NhdG9yKExvY2F0b3IpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFBhcnNlcjwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwjc2V0RUJpbmRpbmcob3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZykiPjxCPnNldEVCaW5kaW5nKEJpbmRpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldEVCaW5kaW5nKCkiPjxDT0RFPjxlbT5FQmluZGluZzwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNzZXRFQmluZGluZ0lucHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dCkiPjxCPnNldEVCaW5kaW5nSW5wdXQoQmluZGluZ0lucHV0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0lucHV0KCkiPjxDT0RFPjxlbT5FQmluZGluZyBJbnB1dDwvZW0+PC9DT0RFPjwvQT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNzZXRFQmluZGluZ091dHB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0KSI+PEI+c2V0RUJpbmRpbmdPdXRwdXQoQmluZGluZ091dHB1dCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPcGVyYXRpb248L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RUJpbmRpbmdPdXRwdXQoKSI+PENPREU+PGVtPkVCaW5kaW5nIE91dHB1dDwvZW0+PC9DT0RFPjwvQT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI3NldEVEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj48Qj5zZXRFRGVmaW5pdGlvbihEZWZpbml0aW9uKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbXBvcnQ8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFRGVmaW5pdGlvbigpIj48Q09ERT48ZW0+RURlZmluaXRpb248L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNzZXRFRmF1bHQob3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQpIj48Qj5zZXRFRmF1bHQoRmF1bHQpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdGYXVsdDwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI2dldEVGYXVsdCgpIj48Q09ERT48ZW0+RUZhdWx0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjc2V0RUlucHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0KSI+PEI+c2V0RUlucHV0KElucHV0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nSW5wdXQ8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCNnZXRFSW5wdXQoKSI+PENPREU+PGVtPkVJbnB1dDwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI3NldEVJbnB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dCkiPjxCPnNldEVJbnB1dChJbnB1dCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3BlcmF0aW9uPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUlucHV0KCkiPjxDT0RFPjxlbT5FSW5wdXQ8L2VtPjwvQ09ERT48L0E+JyBjb250YWlubWVudCByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPjxCPnNldEVsZW1lbnQoRWxlbWVudCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj48Q09ERT48ZW0+RWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRFbGVtZW50RGVjbGFyYXRpb24ob3JnLmVjbGlwc2UueHNkLlhTREVsZW1lbnREZWNsYXJhdGlvbikiPjxCPnNldEVsZW1lbnREZWNsYXJhdGlvbihYU0RFbGVtZW50RGVjbGFyYXRpb24pPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVsZW1lbnREZWNsYXJhdGlvbigpIj48Q09ERT48ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRFbGVtZW50TmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+PEI+c2V0RWxlbWVudE5hbWUoUU5hbWUpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVsZW1lbnROYW1lKCkiPjxDT0RFPjxlbT5FbGVtZW50IE5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldEVsZW1lbnRUeXBlKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48Qj5zZXRFbGVtZW50VHlwZShRTmFtZSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+PENPREU+PGVtPkVsZW1lbnQgVHlwZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldEVNZXNzYWdlKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpIj48Qj5zZXRFTWVzc2FnZShNZXNzYWdlKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RU1lc3NhZ2UoKSI+PENPREU+PGVtPkVNZXNzYWdlPC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI3NldEVNZXNzYWdlKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpIj48Qj5zZXRFTWVzc2FnZShNZXNzYWdlKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT48ZW0+RU1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjc2V0RU1lc3NhZ2Uob3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSkiPjxCPnNldEVNZXNzYWdlKE1lc3NhZ2UpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+PEI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbihEZWZpbml0aW9uKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPgotPEREPlNldHMgdGhlIGVuY2xvc2luZyBkZWZpbml0aW9uIG9mIHRoaXMgV1NETCBlbGVtZW50LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNzZXRFbmNvZGluZyhqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0RW5jb2RpbmcoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFbmNvZGluZygpIj48Q09ERT48ZW0+RW5jb2Rpbmc8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRFbmNvZGluZ1N0eWxlcyhqYXZhLnV0aWwuTGlzdCkiPjxCPnNldEVuY29kaW5nU3R5bGVzKExpc3QpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI3NldEVPcGVyYXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uKSI+PEI+c2V0RU9wZXJhdGlvbihPcGVyYXRpb24pPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3BlcmF0aW9uPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVPcGVyYXRpb24oKSI+PENPREU+PGVtPkVPcGVyYXRpb248L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwjc2V0RU91dHB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQpIj48Qj5zZXRFT3V0cHV0KE91dHB1dCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwjZ2V0RU91dHB1dCgpIj48Q09ERT48ZW0+RU91dHB1dDwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI3NldEVPdXRwdXQob3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0KSI+PEI+c2V0RU91dHB1dChPdXRwdXQpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVPdXRwdXQoKSI+PENPREU+PGVtPkVPdXRwdXQ8L2VtPjwvQ09ERT48L0E+JyBjb250YWlubWVudCByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNzZXRFUGFydChvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0KSI+PEI+c2V0RVBhcnQoUGFydCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FQ29udGVudDwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sI2dldEVQYXJ0KCkiPjxDT0RFPjxlbT5FUGFydDwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sI3NldEVQYXJ0KG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQpIj48Qj5zZXRFUGFydChQYXJ0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNaW1lWG1sPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0RVBhcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCkiPjxCPnNldEVQYXJ0KFBhcnQpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFUGFydCgpIj48Q09ERT48ZW0+RVBhcnQ8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjc2V0RVBvcnRUeXBlKG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlKSI+PEI+c2V0RVBvcnRUeXBlKFBvcnRUeXBlKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRFUG9ydFR5cGUoKSI+PENPREU+PGVtPkVQb3J0IFR5cGU8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNzZXRFU2NoZW1hKG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWEpIj48Qj5zZXRFU2NoZW1hKFhTRFNjaGVtYSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW1wb3J0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0RVNjaGVtYSgpIj48Q09ERT48ZW0+RVNjaGVtYTwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNzZXRFVHlwZXMob3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXMpIj48Qj5zZXRFVHlwZXMoVHlwZXMpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVUeXBlcygpIj48Q09ERT48ZW0+RVR5cGVzPC9lbT48L0NPREU+PC9BPicgY29udGFpbm1lbnQgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjc2V0RmF1bHQoamF2YXgud3NkbC5GYXVsdCkiPjxCPnNldEZhdWx0KEZhdWx0KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nRmF1bHQ8L0E+Ci08REQ+VGhpcyBtZXRob2QgaXMgc2FtZSBhcyBzZXRFRmF1bHQoRmF1bHQpIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIEpXU0RMIEFQSS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCNzZXRJbnB1dChqYXZheC53c2RsLklucHV0KSI+PEI+c2V0SW5wdXQoSW5wdXQpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdJbnB1dDwvQT4KLTxERD5UaGlzIG1ldGhvZCBpcyBzYW1lIGFzIHNldEVJbnB1dChJbnB1dCkgYW5kIGNvbXBhdGlibGUgd2l0aCB0aGUgSldTREwgQVBJLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNzZXRLZXkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEtleShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWM8L0E+Ci08REQ+U2V0cyB0aGUgb3JpZ2luYWwgbWVzc2FnZSBrZXkuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNzZXRLZXkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldEtleShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY0ltcGw8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNzZXRMaW5lKGludCkiPjxCPnNldExpbmUoaW50KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNJbXBsPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNzZXRMb2NhdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TG9jYXRpb24oU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRMb2NhdGlvbigpIj48Q09ERT48ZW0+TG9jYXRpb248L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI3NldExvY2F0aW9uKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRMb2NhdGlvbihTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY0ltcGw8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlIGxvYWN0aW9uIGF0dHJpYnV0ZS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCNzZXRMb2NhdGlvblVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TG9jYXRpb25VUkkoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBBZGRyZXNzPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+PGVtPkxvY2F0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwjc2V0TG9jYXRpb25VUkkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldExvY2F0aW9uVVJJKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBPcGVyYXRpb248L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCNzZXRMb2NhdGlvblVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TG9jYXRpb25VUkkoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBBZGRyZXNzPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+PGVtPkxvY2F0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI3NldExvY2F0aW9uVVJJKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRMb2NhdGlvblVSSShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRNZXNzYWdlKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48Qj5zZXRNZXNzYWdlKFFOYW1lKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TWVzc2FnZSgpIj48Q09ERT48ZW0+TWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjc2V0TWVzc2FnZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TWVzc2FnZShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY0ltcGw8L0E+Ci08REQ+U2V0cyBhIG5ldyB2YWx1ZSBmb3IgdGhlIG1lc3NhZ2UgYXR0cmlidXRlLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhdWx0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0ZhdWx0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nSW5wdXQ8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ091dHB1dDwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWUoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0TmFtZShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNzZXROYW1lc3BhY2VVUkkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldE5hbWVzcGFjZVVSSShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJvZHk8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjc2V0TmFtZXNwYWNlVVJJKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lc3BhY2VVUkkoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmF1bHQ8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPjxlbT5OYW1lc3BhY2UgVVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0TmFtZXNwYWNlVVJJKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lc3BhY2VVUkkoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPjxlbT5OYW1lc3BhY2UgVVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjc2V0TmFtZXNwYWNlVVJJKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXROYW1lc3BhY2VVUkkoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbXBvcnQ8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjc2V0Tm9kZShvcmcudzNjLmRvbS5Ob2RlKSI+PEI+c2V0Tm9kZShOb2RlKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljPC9BPgotPEREPlNldHMgdGhlIERPTSBOb2RlIHdoZXJlIHRoZSBlcnJvciBvY2N1cnMKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI3NldE5vZGUob3JnLnczYy5kb20uTm9kZSkiPjxCPnNldE5vZGUoTm9kZSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwjc2V0T3V0cHV0KGphdmF4LndzZGwuT3V0cHV0KSI+PEI+c2V0T3V0cHV0KE91dHB1dCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+Ci08REQ+VGhpcyBtZXRob2QgaXMgc2FtZSBhcyBzZXRFT3V0cHV0KE91dHB1dCkgYW5kIGNvbXBhdGlibGUgd2l0aCB0aGUgSldTREwgQVBJLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sI3NldFBhcnQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcnQoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVDb250ZW50PC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sI3NldFBhcnQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcnQoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNaW1lWG1sPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldFBhcnQoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFBhcnQoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0UGFydCgpIj48Q09ERT48ZW0+UGFydDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI3NldFByZWZpeChqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0UHJlZml4KFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TmFtZXNwYWNlPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwjZ2V0UHJlZml4KCkiPjxDT0RFPjxlbT5QcmVmaXg8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjc2V0UU5hbWUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPjxCPnNldFFOYW1lKFFOYW1lKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRRTmFtZSgpIj48Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjc2V0UU5hbWUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPjxCPnNldFFOYW1lKFFOYW1lKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRRTmFtZSgpIj48Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwjc2V0UU5hbWUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPjxCPnNldFFOYW1lKFFOYW1lKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNnZXRRTmFtZSgpIj48Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI3NldFFOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48Qj5zZXRRTmFtZShRTmFtZSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0VHlwZTwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sI3NldFFOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48Qj5zZXRRTmFtZShRTmFtZSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlNlcnZpY2U8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRSZXF1aXJlZChib29sZWFuKSI+PEI+c2V0UmVxdWlyZWQoYm9vbGVhbik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj48Q09ERT48ZW0+UmVxdWlyZWQ8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNzZXRTY2hlbWEob3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYSkiPjxCPnNldFNjaGVtYShYU0RTY2hlbWEpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT4KLTxERD5UaGlzIG1ldGhvZCBpcyBzYW1lIGFzIHNldEVTY2hlbWEoWFNEU2NoZW1hKS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFNjaGVtYShvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hKSI+PEI+c2V0U2NoZW1hKFhTRFNjaGVtYSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0U2NoZW1hKCkiPjxDT0RFPjxlbT5TY2hlbWE8L2VtPjwvQ09ERT48L0E+JyBjb250YWlubWVudCByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjc2V0U2V2ZXJpdHkob3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5KSI+PEI+c2V0U2V2ZXJpdHkoV1NETERpYWdub3N0aWNTZXZlcml0eSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT4KLTxERD5TZXRzIHRoaXMgZGlhZ25vc3RpYydzIHNldmVyaXR5LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjc2V0U2V2ZXJpdHkob3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5KSI+PEI+c2V0U2V2ZXJpdHkoV1NETERpYWdub3N0aWNTZXZlcml0eSk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sI3NldFNvYXBBY3Rpb25VUkkoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFNvYXBBY3Rpb25VUkkoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUE9wZXJhdGlvbjwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U29hcEFjdGlvblVSSSgpIj48Q09ERT48ZW0+U29hcCBBY3Rpb24gVVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwjc2V0U3R5bGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFN0eWxlKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQmluZGluZzwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI2dldFN0eWxlKCkiPjxDT0RFPjxlbT5TdHlsZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjc2V0U3R5bGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFN0eWxlKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBPcGVyYXRpb248L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sI2dldFN0eWxlKCkiPjxDT0RFPjxlbT5TdHlsZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI3NldFN0eWxlKGphdmF4LndzZGwuT3BlcmF0aW9uVHlwZSkiPjxCPnNldFN0eWxlKE9wZXJhdGlvblR5cGUpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldFN0eWxlKCkiPjxDT0RFPjxlbT5TdHlsZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNzZXRUYXJnZXROYW1lc3BhY2UoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFRhcmdldE5hbWVzcGFjZShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldFRhcmdldE5hbWVzcGFjZSgpIj48Q09ERT48ZW0+VGFyZ2V0IE5hbWVzcGFjZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI3NldFRyYW5zcG9ydFVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VHJhbnNwb3J0VVJJKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQmluZGluZzwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI2dldFRyYW5zcG9ydFVSSSgpIj48Q09ERT48ZW0+VHJhbnNwb3J0IFVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sI3NldFR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxCPnNldFR5cGUoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVDb250ZW50PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0VHlwZSgpIj48Q09ERT48ZW0+VHlwZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRUeXBlRGVmaW5pdGlvbihvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb24pIj48Qj5zZXRUeXBlRGVmaW5pdGlvbihYU0RUeXBlRGVmaW5pdGlvbik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0VHlwZURlZmluaXRpb24oKSI+PENPREU+PGVtPlR5cGUgRGVmaW5pdGlvbjwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRUeXBlTmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+PEI+c2V0VHlwZU5hbWUoUU5hbWUpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldFR5cGVOYW1lKCkiPjxDT0RFPjxlbT5UeXBlIE5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjc2V0VW5kZWZpbmVkKGJvb2xlYW4pIj48Qj5zZXRVbmRlZmluZWQoYm9vbGVhbik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNzZXRVbmRlZmluZWQoYm9vbGVhbikiPjxCPnNldFVuZGVmaW5lZChib29sZWFuKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjc2V0VW5kZWZpbmVkKGJvb2xlYW4pIj48Qj5zZXRVbmRlZmluZWQoYm9vbGVhbik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3BlcmF0aW9uPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwjc2V0VW5kZWZpbmVkKGJvb2xlYW4pIj48Qj5zZXRVbmRlZmluZWQoYm9vbGVhbik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0VHlwZTwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNzZXRVbmRlZmluZWQoYm9vbGVhbikiPjxCPnNldFVuZGVmaW5lZChib29sZWFuKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+U2VydmljZTwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwjc2V0VVJJKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRVUkkoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5OYW1lc3BhY2U8L0E+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNnZXRVUkkoKSI+PENPREU+PGVtPlVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI3NldFVzZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VXNlKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQm9keTwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldFVzZSgpIj48Q09ERT48ZW0+VXNlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI3NldFVzZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+c2V0VXNlKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhdWx0PC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI2dldFVzZSgpIj48Q09ERT48ZW0+VXNlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0VXNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRVc2UoU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0VXNlKCkiPjxDT0RFPjxlbT5Vc2U8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCNzZXRWZXJiKGphdmEubGFuZy5TdHJpbmcpIj48Qj5zZXRWZXJiKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQmluZGluZzwvQT4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI2dldFZlcmIoKSI+PENPREU+PGVtPlZlcmI8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0FERFJFU1MiPjxCPlNPQVBfQUREUkVTUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5BZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQUREUkVTUyI+PEI+U09BUF9BRERSRVNTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5BZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5TT0FQX0FERFJFU1NfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQUREUkVTU19fRUxFTUVOVCI+PEI+U09BUF9BRERSRVNTX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQUREUkVTU19fRUxFTUVOVF9UWVBFIj48Qj5TT0FQX0FERFJFU1NfX0VMRU1FTlRfVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJIj48Qj5TT0FQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19MT0NBVElPTl9VUkkiPjxCPlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19SRVFVSVJFRCI+PEI+U09BUF9BRERSRVNTX19SRVFVSVJFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQiPjxCPlNPQVBfQUREUkVTU19GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkFkZHJlc3M8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0JJTkRJTkciPjxCPlNPQVBfQklORElORzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQklORElORyI+PEI+U09BUF9CSU5ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5TT0FQX0JJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQklORElOR19fRUxFTUVOVCI+PEI+U09BUF9CSU5ESU5HX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQklORElOR19fRUxFTUVOVF9UWVBFIj48Qj5TT0FQX0JJTkRJTkdfX0VMRU1FTlRfVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQklORElOR19fUkVRVUlSRUQiPjxCPlNPQVBfQklORElOR19fUkVRVUlSRUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfQklORElOR19fU1RZTEUiPjxCPlNPQVBfQklORElOR19fU1RZTEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CSU5ESU5HX19TVFlMRSI+PEI+U09BUF9CSU5ESU5HX19TVFlMRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9CSU5ESU5HX19UUkFOU1BPUlRfVVJJIj48Qj5TT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHJhbnNwb3J0IFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkkiPjxCPlNPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UcmFuc3BvcnQgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVCI+PEI+U09BUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZzwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfQk9EWSI+PEI+U09BUF9CT0RZPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkJvZHk8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZIj48Qj5TT0FQX0JPRFk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkJvZHk8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPlNPQVBfQk9EWV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTIj48Qj5TT0FQX0JPRFlfX0VFTkNPRElOR19TVFlMRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUyI+PEI+U09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFbmNvZGluZyBTdHlsZXM8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19FTEVNRU5UIj48Qj5TT0FQX0JPRFlfX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19FTEVNRU5UX1RZUEUiPjxCPlNPQVBfQk9EWV9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9CT0RZX19FUEFSVFMiPjxCPlNPQVBfQk9EWV9fRVBBUlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0czwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWV9fRVBBUlRTIj48Qj5TT0FQX0JPRFlfX0VQQVJUUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydHM8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9CT0RZX19OQU1FU1BBQ0VfVVJJIj48Qj5TT0FQX0JPRFlfX05BTUVTUEFDRV9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JPRFlfX05BTUVTUEFDRV9VUkkiPjxCPlNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JPRFlfX1JFUVVJUkVEIj48Qj5TT0FQX0JPRFlfX1JFUVVJUkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0JPRFlfX1VTRSI+PEI+U09BUF9CT0RZX19VU0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWV9fVVNFIj48Qj5TT0FQX0JPRFlfX1VTRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWV9GRUFUVVJFX0NPVU5UIj48Qj5TT0FQX0JPRFlfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5Cb2R5PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9GQVVMVCI+PEI+U09BUF9GQVVMVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5GYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUIj48Qj5TT0FQX0ZBVUxUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5GYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPlNPQVBfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVMiPjxCPlNPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVMiPjxCPlNPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUX19FTEVNRU5UIj48Qj5TT0FQX0ZBVUxUX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX0VMRU1FTlRfVFlQRSI+PEI+U09BUF9GQVVMVF9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9GQVVMVF9fTkFNRSI+PEI+U09BUF9GQVVMVF9fTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX05BTUUiPjxCPlNPQVBfRkFVTFRfX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9GQVVMVF9fTkFNRVNQQUNFX1VSSSI+PEI+U09BUF9GQVVMVF9fTkFNRVNQQUNFX1VSSTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkkiPjxCPlNPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9GQVVMVF9fUkVRVUlSRUQiPjxCPlNPQVBfRkFVTFRfX1JFUVVJUkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0ZBVUxUX19VU0UiPjxCPlNPQVBfRkFVTFRfX1VTRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9GQVVMVF9fVVNFIj48Qj5TT0FQX0ZBVUxUX19VU0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPjxCPlNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5GYXVsdDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfSEVBREVSIj48Qj5TT0FQX0hFQURFUjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5IZWFkZXI8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVIiPjxCPlNPQVBfSEVBREVSPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5IZWFkZXI8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+U09BUF9IRUFERVJfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19FRU5DT0RJTkdfU1RZTEVTIj48Qj5TT0FQX0hFQURFUl9fRUVOQ09ESU5HX1NUWUxFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19FTEVNRU5UIj48Qj5TT0FQX0hFQURFUl9fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fRUxFTUVOVF9UWVBFIj48Qj5TT0FQX0hFQURFUl9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX0VNRVNTQUdFIj48Qj5TT0FQX0hFQURFUl9fRU1FU1NBR0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19FUEFSVCI+PEI+U09BUF9IRUFERVJfX0VQQVJUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUyI+PEI+U09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+SGVhZGVyIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19IRUFERVJfRkFVTFRTIj48Qj5TT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5IZWFkZXIgRmF1bHRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19NRVNTQUdFIj48Qj5TT0FQX0hFQURFUl9fTUVTU0FHRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5NZXNzYWdlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fTkFNRVNQQUNFX1VSSSI+PEI+U09BUF9IRUFERVJfX05BTUVTUEFDRV9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX1BBUlQiPjxCPlNPQVBfSEVBREVSX19QQVJUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19SRVFVSVJFRCI+PEI+U09BUF9IRUFERVJfX1JFUVVJUkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fVVNFIj48Qj5TT0FQX0hFQURFUl9fVVNFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRSI+PEI+U09BUF9IRUFERVJfQkFTRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5IZWFkZXIgQmFzZTwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFIj48Qj5TT0FQX0hFQURFUl9CQVNFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5IZWFkZXIgQmFzZTwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPlNPQVBfSEVBREVSX0JBU0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVMiPjxCPlNPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVMiPjxCPlNPQVBfSEVBREVSX0JBU0VfX0VFTkNPRElOR19TVFlMRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19FTEVNRU5UIj48Qj5TT0FQX0hFQURFUl9CQVNFX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlRfVFlQRSI+PEI+U09BUF9IRUFERVJfQkFTRV9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0UiPjxCPlNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFIj48Qj5TT0FQX0hFQURFUl9CQVNFX19FTUVTU0FHRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fRVBBUlQiPjxCPlNPQVBfSEVBREVSX0JBU0VfX0VQQVJUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VQQVJUIj48Qj5TT0FQX0hFQURFUl9CQVNFX19FUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRSI+PEI+U09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5NZXNzYWdlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX01FU1NBR0UiPjxCPlNPQVBfSEVBREVSX0JBU0VfX01FU1NBR0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fTkFNRVNQQUNFX1VSSSI+PEI+U09BUF9IRUFERVJfQkFTRV9fTkFNRVNQQUNFX1VSSTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkkiPjxCPlNPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fUEFSVCI+PEI+U09BUF9IRUFERVJfQkFTRV9fUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX1BBUlQiPjxCPlNPQVBfSEVBREVSX0JBU0VfX1BBUlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UGFydDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fUkVRVUlSRUQiPjxCPlNPQVBfSEVBREVSX0JBU0VfX1JFUVVJUkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19VU0UiPjxCPlNPQVBfSEVBREVSX0JBU0VfX1VTRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fVVNFIj48Qj5TT0FQX0hFQURFUl9CQVNFX19VU0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX0ZFQVRVUkVfQ09VTlQiPjxCPlNPQVBfSEVBREVSX0JBU0VfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5IZWFkZXIgQmFzZTwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfSEVBREVSX0ZBVUxUIj48Qj5TT0FQX0hFQURFUl9GQVVMVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5IZWFkZXIgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFQiPjxCPlNPQVBfSEVBREVSX0ZBVUxUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5IZWFkZXIgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+U09BUF9IRUFERVJfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTIj48Qj5TT0FQX0hFQURFUl9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19FTEVNRU5UIj48Qj5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVF9UWVBFIj48Qj5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX0VNRVNTQUdFIj48Qj5TT0FQX0hFQURFUl9GQVVMVF9fRU1FU1NBR0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19FUEFSVCI+PEI+U09BUF9IRUFERVJfRkFVTFRfX0VQQVJUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fTUVTU0FHRSI+PEI+U09BUF9IRUFERVJfRkFVTFRfX01FU1NBR0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX05BTUVTUEFDRV9VUkkiPjxCPlNPQVBfSEVBREVSX0ZBVUxUX19OQU1FU1BBQ0VfVVJJPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19QQVJUIj48Qj5TT0FQX0hFQURFUl9GQVVMVF9fUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fUkVRVUlSRUQiPjxCPlNPQVBfSEVBREVSX0ZBVUxUX19SRVFVSVJFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX1VTRSI+PEI+U09BUF9IRUFERVJfRkFVTFRfX1VTRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPjxCPlNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SGVhZGVyIEZhdWx0PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkVBVFVSRV9DT1VOVCI+PEI+U09BUF9IRUFERVJfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5IZWFkZXI8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX09QRVJBVElPTiI+PEI+U09BUF9PUEVSQVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfT1BFUkFUSU9OIj48Qj5TT0FQX09QRVJBVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPlNPQVBfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX09QRVJBVElPTl9fRUxFTUVOVCI+PEI+U09BUF9PUEVSQVRJT05fX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9PUEVSQVRJT05fX0VMRU1FTlRfVFlQRSI+PEI+U09BUF9PUEVSQVRJT05fX0VMRU1FTlRfVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfT1BFUkFUSU9OX19SRVFVSVJFRCI+PEI+U09BUF9PUEVSQVRJT05fX1JFUVVJUkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJIj48Qj5TT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlNvYXAgQWN0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJIj48Qj5TT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNvYXAgQWN0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9PUEVSQVRJT05fX1NUWUxFIj48Qj5TT0FQX09QRVJBVElPTl9fU1RZTEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9PUEVSQVRJT05fX1NUWUxFIj48Qj5TT0FQX09QRVJBVElPTl9fU1RZTEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPjxCPlNPQVBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+T3BlcmF0aW9uPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQWRkcmVzczwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjxERD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5BZGRyZXNzPC9iPjwvZW0+JzxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCaW5kaW5nPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmc8L2I+PC9lbT4nPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEJvZHk8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Qm9keTwvYj48L2VtPic8RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQRmFjdG9yeTwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjxERD5UaGUgPGI+RmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEZhdWx0PC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkZhdWx0PC9iPjwvZW0+JzxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlcjwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjxERD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXI8L2I+PC9lbT4nPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlckJhc2U8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SGVhZGVyIEJhc2U8L2I+PC9lbT4nPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjxERD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXIgRmF1bHQ8L2I+PC9lbT4nPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQT3BlcmF0aW9uPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk9wZXJhdGlvbjwvYj48L2VtPic8RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQUGFja2FnZTwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjxERD5UaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjxERD5EZWZpbmVzIGxpdGVyYWxzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRoYXQgcmVwcmVzZW50Ci0gCi0gICBlYWNoIGNsYXNzLAotICAgZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsCi0gICBlYWNoIGVudW0sCi0gICBhbmQgZWFjaCBkYXRhIHR5cGUKLSAKLSA8ITxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNzdGFydENEQVRBKCkiPjxCPnN0YXJ0Q0RBVEEoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjc3RhcnREb2N1bWVudCgpIj48Qj5zdGFydERvY3VtZW50KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3N0YXJ0RFREKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Qj5zdGFydERURChTdHJpbmcsIFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjc3RhcnRFbGVtZW50KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIG9yZy54bWwuc2F4LkF0dHJpYnV0ZXMpIj48Qj5zdGFydEVsZW1lbnQoU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgQXR0cmlidXRlcyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3N0YXJ0RW50aXR5KGphdmEubGFuZy5TdHJpbmcpIj48Qj5zdGFydEVudGl0eShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFBhcnNlcjwvQT4KLTxERD4mbmJzcDsKLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xNy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xOC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMTguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5OWYwZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xOC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVQtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJULUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xOC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX1RfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5UPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjVEFSR0VUTkFNRVNQQUNFX0FUVFJJQlVURSI+PEI+VEFSR0VUTkFNRVNQQUNFX0FUVFJJQlVURTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4idGFyZ2V0TmFtZXNwYWNlIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjVFJBQ0tfTE9DQVRJT04iPjxCPlRSQUNLX0xPQ0FUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFJlc291cmNlSW1wbDwvQT4KLTxERD5BZGQgdGhpcyBvcHRpb24gd2l0aCBhIHZhbHVlIG9mIEJvb2xlYW4uVFJVRSB0byB0aGUgb3B0aW9ucyBtYXAgd2hlbgotIGxvYWRpbmcgYSByZXNvdXJjZSB0byBpbnN0cnVjdCB0aGUgbG9hZGVyIHRvIHRyYWNrIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGZvcgotIGVhY2ggbm9kZSBpbiB0aGUgc291cmNlIGRvY3VtZW50LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1RZUEVfQVRUUklCVVRFIj48Qj5UWVBFX0FUVFJJQlVURTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4idHlwZSI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlR5cGVzPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjxERD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5UeXBlczwvYj48L2VtPicuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1RZUEVTIj48Qj5UWVBFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJ0eXBlcyI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjVFlQRVMiPjxCPlRZUEVTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlR5cGVzPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVFlQRVMiPjxCPlRZUEVTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5UeXBlczwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1RZUEVTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPlRZUEVTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1RZUEVTX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PEI+VFlQRVNfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVFlQRVNfX0VMRU1FTlQiPjxCPlRZUEVTX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1RZUEVTX0VMRU1FTlRfVEFHIj48Qj5UWVBFU19FTEVNRU5UX1RBRzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJ0eXBlcyI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVFlQRVNfRkVBVFVSRV9DT1VOVCI+PEI+VFlQRVNfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5UeXBlczwvZW0+JyBjbGFzcwotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTE4Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTguaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTE5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0xOS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzZlYmI0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTE5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVS1JbmRleAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlUtSW5kZXgiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTE5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci08QSBOQU1FPSJfVV8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPlU8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1VOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UIj48Qj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1VOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UIj48Qj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fQ0hJTERSRU4iPjxCPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19DSElMRFJFTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5DaGlsZHJlbjwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOIj48Qj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fQ0hJTERSRU48L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+Q2hpbGRyZW48L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVCI+PEI+VU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj48Qj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQiPjxCPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UIj48Qj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlVua25vd24gRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+PEI+dXBkYXRlRWxlbWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+Ci08REQ+RW5zdXJlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIERPTSA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+PENPREU+ZWxlbWVudDwvQ09ERT48L0E+IGJvdGggZXhpc3RzIGFuZCBpcyB1cC10by1kYXRlIHdpdGggcmVzcGVjdCB0byB0aGUgbW9kZWwsCi0gaS5lLiwgaXQgc2VyaWFsaXplcyB0aGUgY29tcG9uZW50IGFuZCBtYWludGFpbnMgYW4gYXNzb2NpYXRpb24gd2l0aCB0aGF0IHNlcmlhbGl6YXRpb24uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj48Qj51cGRhdGVFbGVtZW50KGJvb2xlYW4pPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+Ci08REQ+RW5zdXJlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIERPTSA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+PENPREU+ZWxlbWVudDwvQ09ERT48L0E+IGJvdGggZXhpc3RzIGFuZCBpcyB1cC10by1kYXRlIHdpdGggcmVzcGVjdCB0byB0aGUgbW9kZWwsCi0gaS5lLiwgaXQgc2VyaWFsaXplcyB0aGUgY29tcG9uZW50IGFuZCBtYWludGFpbnMgYW4gYXNzb2NpYXRpb24gd2l0aCB0aGF0IHNlcmlhbGl6YXRpb24uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjVVNFX0VYVEVOU0lPTl9GQUNUT1JJRVMiPjxCPlVTRV9FWFRFTlNJT05fRkFDVE9SSUVTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFJlc291cmNlSW1wbDwvQT4KLTxERD4mbmJzcDsKLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0xOS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0yLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2Y2ZhNzguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUItSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJCLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMy5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci08QSBOQU1FPSJfQl8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkI8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmc8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmc8L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNCSU5ESU5HIj48Qj5CSU5ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImJpbmRpbmciPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkciPjxCPkJJTkRJTkc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HIj48Qj5CSU5ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPkJJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUyI+PEI+QklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUyI+PEI+QklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PEI+QklORElOR19fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19FTEVNRU5UIj48Qj5CSU5ESU5HX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19fRVBPUlRfVFlQRSI+PEI+QklORElOR19fRVBPUlRfVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfX0VQT1JUX1RZUEUiPjxCPkJJTkRJTkdfX0VQT1JUX1RZUEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfX1FOQU1FIj48Qj5CSU5ESU5HX19RTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX19RTkFNRSI+PEI+QklORElOR19fUU5BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19VTkRFRklORUQiPjxCPkJJTkRJTkdfX1VOREVGSU5FRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjQklORElOR19fVU5ERUZJTkVEIj48Qj5CSU5ESU5HX19VTkRFRklORUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0JJTkRJTkdfQVRUUklCVVRFIj48Qj5CSU5ESU5HX0FUVFJJQlVURTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4iYmluZGluZyI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0JJTkRJTkdfRUxFTUVOVF9UQUciPjxCPkJJTkRJTkdfRUxFTUVOVF9UQUc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iYmluZGluZyI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19GQVVMVCI+PEI+QklORElOR19GQVVMVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfRkFVTFQiPjxCPkJJTkRJTkdfRkFVTFQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+QklORElOR19GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0ZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PEI+QklORElOR19GQVVMVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0ZBVUxUX19FRkFVTFQiPjxCPkJJTkRJTkdfRkFVTFRfX0VGQVVMVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRmF1bHQ8L2I+PC9lbT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjQklORElOR19GQVVMVF9fRUZBVUxUIj48Qj5CSU5ESU5HX0ZBVUxUX19FRkFVTFQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUZhdWx0PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19GQVVMVF9fRUxFTUVOVCI+PEI+QklORElOR19GQVVMVF9fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfRkFVTFRfX05BTUUiPjxCPkJJTkRJTkdfRkFVTFRfX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX0ZBVUxUX19OQU1FIj48Qj5CSU5ESU5HX0ZBVUxUX19OQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPjxCPkJJTkRJTkdfRkFVTFRfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5CaW5kaW5nIEZhdWx0PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPjxCPkJJTkRJTkdfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5CaW5kaW5nPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0lOUFVUIj48Qj5CSU5ESU5HX0lOUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nIElucHV0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjQklORElOR19JTlBVVCI+PEI+QklORElOR19JTlBVVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nIElucHV0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19JTlBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5CSU5ESU5HX0lOUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfSU5QVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48Qj5CSU5ESU5HX0lOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfSU5QVVRfX0VJTlBVVCI+PEI+QklORElOR19JTlBVVF9fRUlOUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVJbnB1dDwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX0lOUFVUX19FSU5QVVQiPjxCPkJJTkRJTkdfSU5QVVRfX0VJTlBVVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0lOUFVUX19FTEVNRU5UIj48Qj5CSU5ESU5HX0lOUFVUX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19JTlBVVF9fTkFNRSI+PEI+QklORElOR19JTlBVVF9fTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfSU5QVVRfX05BTUUiPjxCPkJJTkRJTkdfSU5QVVRfX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVCI+PEI+QklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OIj48Qj5CSU5ESU5HX09QRVJBVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09QRVJBVElPTiI+PEI+QklORElOR19PUEVSQVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5CSU5ESU5HX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTIj48Qj5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFMiPjxCPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgRmF1bHRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQiPjxCPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQiPjxCPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19PVVRQVVQiPjxCPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19PVVRQVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgT3V0cHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19PVVRQVVQiPjxCPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19PVVRQVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgT3V0cHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48Qj5CSU5ESU5HX09QRVJBVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRUxFTUVOVCI+PEI+QklORElOR19PUEVSQVRJT05fX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTiI+PEI+QklORElOR19PUEVSQVRJT05fX0VPUEVSQVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTiI+PEI+QklORElOR19PUEVSQVRJT05fX0VPUEVSQVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19OQU1FIj48Qj5CSU5ESU5HX09QRVJBVElPTl9fTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19OQU1FIj48Qj5CSU5ESU5HX09QRVJBVElPTl9fTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+PEI+QklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5CaW5kaW5nIE9wZXJhdGlvbjwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PVVRQVVQiPjxCPkJJTkRJTkdfT1VUUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nIE91dHB1dDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfT1VUUFVUIj48Qj5CSU5ESU5HX09VVFBVVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nIE91dHB1dDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPkJJTkRJTkdfT1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PEI+QklORElOR19PVVRQVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PVVRQVVRfX0VMRU1FTlQiPjxCPkJJTkRJTkdfT1VUUFVUX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PVVRQVVRfX0VPVVRQVVQiPjxCPkJJTkRJTkdfT1VUUFVUX19FT1VUUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjQklORElOR19PVVRQVVRfX0VPVVRQVVQiPjxCPkJJTkRJTkdfT1VUUFVUX19FT1VUUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09VVFBVVF9fTkFNRSI+PEI+QklORElOR19PVVRQVVRfX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09VVFBVVF9fTkFNRSI+PEI+QklORElOR19PVVRQVVRfX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQiPjxCPkJJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZyBPdXRwdXQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ0ZhdWx0PC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjxERD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIEZhdWx0PC9iPjwvZW0+Jy48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdJbnB1dDwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBJbnB1dDwvYj48L2VtPicuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ09wZXJhdGlvbjwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBPcGVyYXRpb248L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdPdXRwdXQ8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgT3V0cHV0PC9iPjwvZW0+Jy48L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0xLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTMuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0yMC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMjAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE0YTU0ZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0yMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVYtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJWLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC0yMC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTIwLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX1ZfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5WPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjVkFMVUVTIj48Qj5WQUxVRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPgotPEREPkEgcHVibGljIHJlYWQtb25seSBsaXN0IG9mIGFsbCB0aGUgJzxlbT48Yj5EaWFnbm9zdGljIFNldmVyaXR5PC9iPjwvZW0+JwotIGVudW1lcmF0b3JzLgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTIwLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMjAuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTIxLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC0yMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWMzMTIzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTIxLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMjUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVy1JbmRleAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlctSW5kZXgiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTIxLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMjEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci08QSBOQU1FPSJfV18iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPlc8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNXQVJOSU5HIj48Qj5XQVJOSU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4KLTxERD5UaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvYmxlbSBpcyBub3QgdG9vIGJhZCBhbmQgdGhhdCB0aGUKLSBkZWZpbml0aW9uIGlzIGxpa2VseSBzdWl0YWJsZSBmb3IgdXNlLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3dhcm5pbmcob3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24pIj48Qj53YXJuaW5nKFNBWFBhcnNlRXhjZXB0aW9uKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjV0FSTklOR19MSVRFUkFMIj48Qj5XQVJOSU5HX0xJVEVSQUw8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPgotPEREPlRoZSAnPGVtPjxiPldhcm5pbmc8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjV1NETF9FTEVNRU5UIj48Qj5XU0RMX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+RWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1dTRExfRUxFTUVOVCI+PEI+V1NETF9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5FbGVtZW50PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjV1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPldTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1dTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5XU0RMX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjV1NETF9FTEVNRU5UX19FTEVNRU5UIj48Qj5XU0RMX0VMRU1FTlRfX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1dTRExfRUxFTUVOVF9fRUxFTUVOVCI+PEI+V1NETF9FTEVNRU5UX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjV1NETF9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPjxCPldTRExfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkVsZW1lbnQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNXU0RMX0VOQ09ESU5HIj48Qj5XU0RMX0VOQ09ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFJlc291cmNlSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1dTRExfRVhDRVBUSU9OIj48Qj5XU0RMX0VYQ0VQVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT5FeGNlcHRpb248L2VtPicgZGF0YSB0eXBlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNXU0RMX0VYQ0VQVElPTiI+PEI+V1NETF9FWENFUFRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPkV4Y2VwdGlvbjwvZW0+JyBkYXRhIHR5cGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNXU0RMX0pBWFBfQ09ORklHIj48Qj5XU0RMX0pBWFBfQ09ORklHPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFJlc291cmNlSW1wbDwvQT4KLTxERD5UaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCBhcyBhbiBvcHRpb24gb24gUmVzb3VyY2UjbG9hZCBtZXRob2RzIHRvIHNwZWNpZnkgSkFYUCBjb25maWd1cmF0aW9uCi0gdGhhdCBjcmVhdGVzIGFuZCBjb25maWd1cmVzIFNBWCwgRE9NIHBhcnNlcnMgYW5kIFRyYW5zZm9ybWVyLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI1dTRExfSkFYUF9QT09MIj48Qj5XU0RMX0pBWFBfUE9PTDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExSZXNvdXJjZUltcGw8L0E+Ci08REQ+VGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgYXMgYW4gb3B0aW9uIG9uIFJlc291cmNlI2xvYWQgbWV0aG9kcyB0byBzcGVjaWZ5IEpBWFAgcG9vbCB0byBiZSB1c2VkCi0gZm9yIGxvYWRpbmcgYW5kIHNlcmlhbGl6aW5nIFhNTCBTY2hlbWFzLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1dTRExfTkFNRVNQQUNFX1VSSSI+PEI+V1NETF9OQU1FU1BBQ0VfVVJJPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgdmFsdWUgPGNvZGU+Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjV1NETF9QUk9HUkVTU19NT05JVE9SIj48Qj5XU0RMX1BST0dSRVNTX01PTklUT1I8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VJbXBsPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+V1NETENvbnN0YW50czwvQj48L0E+IC0gQ2xhc3MgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48REQ+VGhpcyBjbGFzcyBkZWZpbmVzIGNvbnN0YW50cyBmb3IgV1NETCBlbGVtZW50IHRhZ3MgYW5kIHJlbGV2YW50IG5hbWVzcGFjZXMuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1dTRExDb25zdGFudHMoKSI+PEI+V1NETENvbnN0YW50cygpPC9CPjwvQT4gLSAKLUNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+V1NETERpYWdub3N0aWM8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPjxERD5HZW5lcmF0ZWQgYnkgdGhlIFdTREwgbW9kZWwgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBtZWNoYW5pc21zLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+V1NETERpYWdub3N0aWNJbXBsPC9CPjwvQT4gLSBDbGFzcyBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPjxERD5EZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBXU0RMRGlhZ25vc3RpYyBpbnRlcmZhY2UuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjV1NETERpYWdub3N0aWNJbXBsKCkiPjxCPldTRExEaWFnbm9zdGljSW1wbCgpPC9CPjwvQT4gLSAKLUNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY0ltcGw8L0E+Ci08REQ+RGVmYXVsdCBjb25zdHJ1Y3Rvci4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI1dTRExEaWFnbm9zdGljSW1wbChvcmcuZWNsaXBzZS54c2QuWFNERGlhZ25vc3RpYykiPjxCPldTRExEaWFnbm9zdGljSW1wbChYU0REaWFnbm9zdGljKTwvQj48L0E+IC0gCi1Db25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNJbXBsPC9BPgotPEREPldyYXBzIGFuIFhTRCBkaWFnbm9zdGljIGludG8gYSBXU0RMIGRpYWdub3N0aWMuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9CPjwvQT4gLSBDbGFzcyBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPjxERD5XU0RMIGRpYWdub3N0aWMgc2V2ZXJpdHkgbGV2ZWxzIHR5cGUgc2FmZSBlbnVtZXJhdGlvbi48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETEVsZW1lbnQ8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5XU0RMRmFjdG9yeTwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+VGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPldTRExQYWNrYWdlPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjxERD5UaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkRlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQKLSAKLSAgIGVhY2ggY2xhc3MsCi0gICBlYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcywKLSAgIGVhY2ggZW51bSwKLSAgIGFuZCBlYWNoIGRhdGEgdHlwZQotIAotIDwhPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+V1NETFBhcnNlcjwvQj48L0E+IC0gQ2xhc3MgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48REQ+VGhlIDxiPlNBWCBQYXJzZXI8L2I+IGZvciB0aGUgV1NETCBtb2RlbC48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjV1NETFBhcnNlcigpIj48Qj5XU0RMUGFyc2VyKCk8L0I+PC9BPiAtIAotQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPkRlZmF1bHQgY29uc3RydWN0b3IuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjV1NETFBhcnNlcihqYXZhLnV0aWwuTWFwKSI+PEI+V1NETFBhcnNlcihNYXApPC9CPjwvQT4gLSAKLUNvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFBhcnNlcjwvQT4KLTxERD5Db25zdHJ1Y3RzIGEgV1NETCBwYXJzZXIgZ2l2ZW4gYSBzZXQgb2YgcGFyc2luZyBvcHRpb25zLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5XU0RMUGx1Z2luPC9CPjwvQT4gLSBDbGFzcyBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPlRoZSA8Yj5QbHVnaW48L2I+IGZvciB0aGUgbW9kZWwuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbjwvQj48L0E+IC0gQ2xhc3MgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjxERD5UaGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBFY2xpcHNlIDxiPlBsdWdpbjwvYj4uPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sI1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbigpIj48Qj5XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24oKTwvQj48L0E+IC0gCi1Db25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9BPgotPEREPkNyZWF0ZXMgYW4gaW5zdGFuY2UuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeTwvQj48L0E+IC0gQ2xhc3MgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48REQ+VGhpcyBjbGFzcyBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgbG9hZGluZyBvZiBXU0RMIG9yIFhTRCByZXNvdXJjZSBmcm9tCi0gVVJJJ3MgdGhhdCBkb24ndCBlbmQgd2l0aCAueHNkIG9yIC53c2RsIGV4dGVuc2lvbnMuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwjV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5KFJlc291cmNlLkZhY3RvcnkuUmVnaXN0cnkpIj48Qj5XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoUmVzb3VyY2UuRmFjdG9yeS5SZWdpc3RyeSk8L0I+PC9BPiAtIAotQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeTwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPldTRExSZXNvdXJjZUltcGw8L0I+PC9BPiAtIENsYXNzIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0E+PEREPlRoZSA8Yj5SZXNvdXJjZTwvYj4gaW1wbGVtZW50YXRpb24gZm9yIHRoZSBtb2RlbC48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjV1NETFJlc291cmNlSW1wbChVUkkpIj48Qj5XU0RMUmVzb3VyY2VJbXBsKFVSSSk8L0I+PC9BPiAtIAotQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VJbXBsPC9BPgotPEREPkNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHJlc291cmNlCi08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yMC5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yMi5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMjEuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yMS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMjIuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTIyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMDk3ZGYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMjIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1YLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iWC1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yMS5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIExFVFRFUjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTIyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMjIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci08QSBOQU1FPSJfWF8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPlg8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNYU0RfTkFNRVNQQUNFX1VSSSI+PEI+WFNEX05BTUVTUEFDRV9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlRoZSB2YWx1ZSA8Y29kZT4iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1hTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UIj48Qj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1hTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UIj48Qj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVCI+PEI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj48Qj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQiPjxCPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fU0NIRU1BIj48Qj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fU0NIRU1BPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlNjaGVtYTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1hTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUEiPjxCPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUE8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U2NoZW1hPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1hTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPjxCPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwO05FWFQgTEVUVEVSPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMjIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yMi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtMy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzA0MjNmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1DLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iQy1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0yLmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTQuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC0zLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX0NfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5DPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjY2hhcmFjdGVycyhjaGFyW10sIGludCwgaW50KSI+PEI+Y2hhcmFjdGVycyhjaGFyW10sIGludCwgaW50KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjY29tbWVudChjaGFyW10sIGludCwgaW50KSI+PEI+Y29tbWVudChjaGFyW10sIGludCwgaW50KTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjQ09OVElOVUVfT05fTE9BRF9FUlJPUiI+PEI+Q09OVElOVUVfT05fTE9BRF9FUlJPUjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExSZXNvdXJjZUltcGw8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVCaW5kaW5nKCkiPjxCPmNyZWF0ZUJpbmRpbmcoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZzwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlQmluZGluZ0ZhdWx0KCkiPjxCPmNyZWF0ZUJpbmRpbmdGYXVsdCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nIEZhdWx0PC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVCaW5kaW5nSW5wdXQoKSI+PEI+Y3JlYXRlQmluZGluZ0lucHV0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUJpbmRpbmdPcGVyYXRpb24oKSI+PEI+Y3JlYXRlQmluZGluZ09wZXJhdGlvbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nIE9wZXJhdGlvbjwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlQmluZGluZ091dHB1dCgpIj48Qj5jcmVhdGVCaW5kaW5nT3V0cHV0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgT3V0cHV0PC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVEZWZpbml0aW9uKCkiPjxCPmNyZWF0ZURlZmluaXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RGVmaW5pdGlvbjwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwjY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50KFN0cmluZywgU3RyaW5nKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudCgpIj48Qj5jcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUZhdWx0KCkiPjxCPmNyZWF0ZUZhdWx0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkZhdWx0PC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwjY3JlYXRlSFRUUEFkZHJlc3MoKSI+PEI+Y3JlYXRlSFRUUEFkZHJlc3MoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QWRkcmVzczwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sI2NyZWF0ZUhUVFBCaW5kaW5nKCkiPjxCPmNyZWF0ZUhUVFBCaW5kaW5nKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmc8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCNjcmVhdGVIVFRQT3BlcmF0aW9uKCkiPjxCPmNyZWF0ZUhUVFBPcGVyYXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwjY3JlYXRlSFRUUFVybEVuY29kZWQoKSI+PEI+Y3JlYXRlSFRUUFVybEVuY29kZWQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VXJsIEVuY29kZWQ8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCNjcmVhdGVIVFRQVXJsUmVwbGFjZW1lbnQoKSI+PEI+Y3JlYXRlSFRUUFVybFJlcGxhY2VtZW50KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlVybCBSZXBsYWNlbWVudDwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlSW1wb3J0KCkiPjxCPmNyZWF0ZUltcG9ydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5JbXBvcnQ8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUlucHV0KCkiPjxCPmNyZWF0ZUlucHV0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPklucHV0PC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVNZXNzYWdlKCkiPjxCPmNyZWF0ZU1lc3NhZ2UoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+TWVzc2FnZTwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sI2NyZWF0ZU1JTUVDb250ZW50KCkiPjxCPmNyZWF0ZU1JTUVDb250ZW50KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkNvbnRlbnQ8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCNjcmVhdGVNSU1FTWltZVhtbCgpIj48Qj5jcmVhdGVNSU1FTWltZVhtbCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5NaW1lIFhtbDwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sI2NyZWF0ZU1JTUVNdWx0aXBhcnRSZWxhdGVkKCkiPjxCPmNyZWF0ZU1JTUVNdWx0aXBhcnRSZWxhdGVkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk11bHRpcGFydCBSZWxhdGVkPC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwjY3JlYXRlTUlNRVBhcnQoKSI+PEI+Y3JlYXRlTUlNRVBhcnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UGFydDwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlTmFtZXNwYWNlKCkiPjxCPmNyZWF0ZU5hbWVzcGFjZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5OYW1lc3BhY2U8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZU9wZXJhdGlvbigpIj48Qj5jcmVhdGVPcGVyYXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVPdXRwdXQoKSI+PEI+Y3JlYXRlT3V0cHV0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk91dHB1dDwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlUGFydCgpIj48Qj5jcmVhdGVQYXJ0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBhcnQ8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZVBvcnQoKSI+PEI+Y3JlYXRlUG9ydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Qb3J0PC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVQb3J0VHlwZSgpIj48Qj5jcmVhdGVQb3J0VHlwZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Qb3J0IFR5cGU8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZVNlcnZpY2UoKSI+PEI+Y3JlYXRlU2VydmljZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5TZXJ2aWNlPC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjY3JlYXRlU09BUEFkZHJlc3MoKSI+PEI+Y3JlYXRlU09BUEFkZHJlc3MoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QWRkcmVzczwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBCaW5kaW5nKCkiPjxCPmNyZWF0ZVNPQVBCaW5kaW5nKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmc8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCNjcmVhdGVTT0FQQm9keSgpIj48Qj5jcmVhdGVTT0FQQm9keSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Cb2R5PC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjY3JlYXRlU09BUEZhdWx0KCkiPjxCPmNyZWF0ZVNPQVBGYXVsdCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5GYXVsdDwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBIZWFkZXIoKSI+PEI+Y3JlYXRlU09BUEhlYWRlcigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5IZWFkZXI8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCNjcmVhdGVTT0FQSGVhZGVyQmFzZSgpIj48Qj5jcmVhdGVTT0FQSGVhZGVyQmFzZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5IZWFkZXIgQmFzZTwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBIZWFkZXJGYXVsdCgpIj48Qj5jcmVhdGVTT0FQSGVhZGVyRmF1bHQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SGVhZGVyIEZhdWx0PC9lbT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjY3JlYXRlU09BUE9wZXJhdGlvbigpIj48Qj5jcmVhdGVTT0FQT3BlcmF0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlVHlwZXMoKSI+PEI+Y3JlYXRlVHlwZXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VHlwZXM8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpIj48Qj5jcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwjY3JlYXRlV1NETDRKRmFjdG9yeSgpIj48Qj5jcmVhdGVXU0RMNEpGYWN0b3J5KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGx1Z2luPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSI+PEI+Y3JlYXRlWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicKLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTIuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNC5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtMy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM4YWJhOS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC00Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotRC1JbmRleAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkQtSW5kZXgiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMy5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC01Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC00Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLTxBIE5BTUU9Il9EXyI+PCEtLSAtLT48L0E+PEgyPgotPEI+RDwvQj48L0gyPgotPERMPgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RGVmaW5pdGlvbjwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGVmaW5pdGlvbjwvYj48L2VtPicuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0RFRklOSVRJT04iPjxCPkRFRklOSVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iZGVmaW5pdGlvbnMiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT04iPjxCPkRFRklOSVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkRlZmluaXRpb248L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OIj48Qj5ERUZJTklUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkRlZmluaXRpb248L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPkRFRklOSVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRUJJTkRJTkdTIj48Qj5ERUZJTklUSU9OX19FQklORElOR1M8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmdzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjREVGSU5JVElPTl9fRUJJTkRJTkdTIj48Qj5ERUZJTklUSU9OX19FQklORElOR1M8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmdzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PEI+REVGSU5JVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FSU1QT1JUUyI+PEI+REVGSU5JVElPTl9fRUlNUE9SVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUltcG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OX19FSU1QT1JUUyI+PEI+REVGSU5JVElPTl9fRUlNUE9SVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUltcG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX0VMRU1FTlQiPjxCPkRFRklOSVRJT05fX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FTUVTU0FHRVMiPjxCPkRFRklOSVRJT05fX0VNRVNTQUdFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OX19FTUVTU0FHRVMiPjxCPkRFRklOSVRJT05fX0VNRVNTQUdFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX0VOQU1FU1BBQ0VTIj48Qj5ERUZJTklUSU9OX19FTkFNRVNQQUNFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTmFtZXNwYWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0RFRklOSVRJT05fX0VOQU1FU1BBQ0VTIj48Qj5ERUZJTklUSU9OX19FTkFNRVNQQUNFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTmFtZXNwYWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRU5DT0RJTkciPjxCPkRFRklOSVRJT05fX0VOQ09ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVuY29kaW5nPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0RFRklOSVRJT05fX0VOQ09ESU5HIj48Qj5ERUZJTklUSU9OX19FTkNPRElORzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FbmNvZGluZzwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX0VQT1JUX1RZUEVTIj48Qj5ERUZJTklUSU9OX19FUE9SVF9UWVBFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0RFRklOSVRJT05fX0VQT1JUX1RZUEVTIj48Qj5ERUZJTklUSU9OX19FUE9SVF9UWVBFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRVNFUlZJQ0VTIj48Qj5ERUZJTklUSU9OX19FU0VSVklDRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVNlcnZpY2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdAotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjREVGSU5JVElPTl9fRVNFUlZJQ0VTIj48Qj5ERUZJTklUSU9OX19FU0VSVklDRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVNlcnZpY2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FVFlQRVMiPjxCPkRFRklOSVRJT05fX0VUWVBFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjREVGSU5JVElPTl9fRVRZUEVTIj48Qj5ERUZJTklUSU9OX19FVFlQRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVR5cGVzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fTE9DQVRJT04iPjxCPkRFRklOSVRJT05fX0xPQ0FUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0RFRklOSVRJT05fX0xPQ0FUSU9OIj48Qj5ERUZJTklUSU9OX19MT0NBVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbjwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX1FOQU1FIj48Qj5ERUZJTklUSU9OX19RTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OX19RTkFNRSI+PEI+REVGSU5JVElPTl9fUU5BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFIj48Qj5ERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBOYW1lc3BhY2U8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRSI+PEI+REVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgTmFtZXNwYWNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0RFRklOSVRJT05fRUxFTUVOVF9UQUciPjxCPkRFRklOSVRJT05fRUxFTUVOVF9UQUc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iZGVmaW5pdGlvbnMiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fRkVBVFVSRV9DT1VOVCI+PEI+REVGSU5JVElPTl9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkRlZmluaXRpb248L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNET0NVTUVOVEFUSU9OIj48Qj5ET0NVTUVOVEFUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImRvY3VtZW50YXRpb24iPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNET0NVTUVOVEFUSU9OX0VMRU1FTlRfVEFHIj48Qj5ET0NVTUVOVEFUSU9OX0VMRU1FTlRfVEFHPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImRvY3VtZW50YXRpb24iPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RPTV9ET0NVTUVOVCI+PEI+RE9NX0RPQ1VNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5ET00gRG9jdW1lbnQ8L2VtPicgZGF0YSB0eXBlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNET01fRE9DVU1FTlQiPjxCPkRPTV9ET0NVTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT5ET00gRG9jdW1lbnQ8L2VtPicgZGF0YSB0eXBlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNET01fRUxFTUVOVCI+PEI+RE9NX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPkRPTSBFbGVtZW50PC9lbT4nIGRhdGEgdHlwZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjRE9NX0VMRU1FTlQiPjxCPkRPTV9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPkRPTSBFbGVtZW50PC9lbT4nIGRhdGEgdHlwZQotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMy5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC01Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC00Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjdiMjMzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI4NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1FLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iRS1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC00Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTYuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC01Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX0VfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5FPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwjZUlOU1RBTkNFIj48Qj5lSU5TVEFOQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQRmFjdG9yeTwvQT4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZUlOU1RBTkNFIj48Qj5lSU5TVEFOQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwjZUlOU1RBTkNFIj48Qj5lSU5TVEFOQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FRmFjdG9yeTwvQT4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZUlOU1RBTkNFIj48Qj5lSU5TVEFOQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjZUlOU1RBTkNFIj48Qj5lSU5TVEFOQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmFjdG9yeTwvQT4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZUlOU1RBTkNFIj48Qj5lSU5TVEFOQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNlSU5TVEFOQ0UiPjxCPmVJTlNUQU5DRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPgotPEREPlRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2VJTlNUQU5DRSI+PEI+ZUlOU1RBTkNFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGFja2FnZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0VMRU1FTlRfQVRUUklCVVRFIj48Qj5FTEVNRU5UX0FUVFJJQlVURTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4iZWxlbWVudCI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPjxCPmVsZW1lbnRDaGFuZ2VkKEVsZW1lbnQpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+Ci08REQ+Q2FsbGVkIHRvIGluZGljYXRlIHRoYXQgdGhlIGdpdmVuIGVsZW1lbnQgaGFzIGNoYW5nZWQ7Ci0gdGhlIGVsZW1lbnQgc2hvdWxkIHR5cGljYWxseSBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHJldHVybmVkIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj48Q09ERT5XU0RMRWxlbWVudC5nZXRFbGVtZW50KCk8L0NPREU+PC9BPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNlTkFNRSI+PEI+ZU5BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgcGFja2FnZSBuYW1lCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZU5BTUUiPjxCPmVOQU1FPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIHBhY2thZ2UgbmFtZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2VOQU1FIj48Qj5lTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBwYWNrYWdlIG5hbWUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2VOQU1FIj48Qj5lTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBwYWNrYWdlIG5hbWUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNFTkNPRElOR19BVFRSSUJVVEUiPjxCPkVOQ09ESU5HX0FUVFJJQlVURTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExDb25zdGFudHM8L0E+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4iZW5jb2RpbmciPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNlbmRDREFUQSgpIj48Qj5lbmRDREFUQSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFBhcnNlcjwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNlbmREb2N1bWVudCgpIj48Qj5lbmREb2N1bWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFBhcnNlcjwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNlbmREVEQoKSI+PEI+ZW5kRFREKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2VuZEVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxCPmVuZEVsZW1lbnQoU3RyaW5nLCBTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2VuZEVudGl0eShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+ZW5kRW50aXR5KFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2VOU19QUkVGSVgiPjxCPmVOU19QUkVGSVg8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2VOU19QUkVGSVgiPjxCPmVOU19QUkVGSVg8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2VOU19QUkVGSVgiPjxCPmVOU19QUkVGSVg8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZU5TX1BSRUZJWCI+PEI+ZU5TX1BSRUZJWDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBwYWNrYWdlIG5hbWVzcGFjZSBuYW1lCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZU5TX1VSSSI+PEI+ZU5TX1VSSTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkkKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNlTlNfVVJJIj48Qj5lTlNfVVJJPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIHBhY2thZ2UgbmFtZXNwYWNlIFVSSQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2VOU19VUkkiPjxCPmVOU19VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgcGFja2FnZSBuYW1lc3BhY2UgVVJJCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNlTlNfVVJJIj48Qj5lTlNfVVJJPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIHBhY2thZ2UgbmFtZXNwYWNlIFVSSQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0VSUk9SIj48Qj5FUlJPUjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+Ci08REQ+VGhpcyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIHByb2JsZW0gaXMgYmFkIGFuZCB0aGF0IHRoZSBzY2hlbWEgaXMKLSBsaWtlbHkgbm90IHN1aXRhYmxlIGZvciB1c2UuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZXJyb3Iob3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24pIj48Qj5lcnJvcihTQVhQYXJzZUV4Y2VwdGlvbik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0VSUk9SX0xJVEVSQUwiPjxCPkVSUk9SX0xJVEVSQUw8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPgotPEREPlRoZSAnPGVtPjxiPkVycm9yPC9iPjwvZW0+JyBsaXRlcmFsIG9iamVjdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCSUxJVFlfRUxFTUVOVCI+PEI+RVhURU5TSUJJTElUWV9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNFWFRFTlNJQklMSVRZX0VMRU1FTlQiPjxCPkVYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNFWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVCI+PEI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEUiPjxCPkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNFWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRSI+PEI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRCI+PEI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNFWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEIj48Qj5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPjxCPkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjxERD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0E+PEREPgotIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvCi0gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5PC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48REQ+Ci0gPGI+Tm90ZTo8L2I+IFRoaXMgY2xhc3MvaW50ZXJmYWNlIGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8KLSBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVCI+PEI+RVhURU5TSUJMRV9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5FeHRlbnNpYmxlIEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNFWFRFTlNJQkxFX0VMRU1FTlQiPjxCPkVYVEVOU0lCTEVfRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5FeHRlbnNpYmxlIEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNFWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+RVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjxCPkVYVEVOU0lCTEVfRUxFTUVOVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNFWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48Qj5FWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNFWFRFTlNJQkxFX0VMRU1FTlRfX0VMRU1FTlQiPjxCPkVYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UIj48Qj5FWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5FeHRlbnNpYmxlIEVsZW1lbnQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5FeHRlbnNpYmxlRWxlbWVudDwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RXh0ZW5zaWJsZSBFbGVtZW50PC9iPjwvZW0+Jy48L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC00Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTYuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC01Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC02Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC02Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNTYxN2EuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUYtSW5kZXgKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJGLUluZGV4IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTUuaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNy5odG1sIj48Qj5ORVhUIExFVFRFUjwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi9pbmRleC5odG1sP2luZGV4LWZpbGVzaW5kZXgtNi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTYuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtYWluIj48L0E+Ci08QSBIUkVGPSJpbmRleC0xLmh0bWwiPkE8L0E+IDxBIEhSRUY9ImluZGV4LTIuaHRtbCI+QjwvQT4gPEEgSFJFRj0iaW5kZXgtMy5odG1sIj5DPC9BPiA8QSBIUkVGPSJpbmRleC00Lmh0bWwiPkQ8L0E+IDxBIEhSRUY9ImluZGV4LTUuaHRtbCI+RTwvQT4gPEEgSFJFRj0iaW5kZXgtNi5odG1sIj5GPC9BPiA8QSBIUkVGPSJpbmRleC03Lmh0bWwiPkc8L0E+IDxBIEhSRUY9ImluZGV4LTguaHRtbCI+SDwvQT4gPEEgSFJFRj0iaW5kZXgtOS5odG1sIj5JPC9BPiA8QSBIUkVGPSJpbmRleC0xMC5odG1sIj5MPC9BPiA8QSBIUkVGPSJpbmRleC0xMS5odG1sIj5NPC9BPiA8QSBIUkVGPSJpbmRleC0xMi5odG1sIj5OPC9BPiA8QSBIUkVGPSJpbmRleC0xMy5odG1sIj5PPC9BPiA8QSBIUkVGPSJpbmRleC0xNC5odG1sIj5QPC9BPiA8QSBIUkVGPSJpbmRleC0xNS5odG1sIj5RPC9BPiA8QSBIUkVGPSJpbmRleC0xNi5odG1sIj5SPC9BPiA8QSBIUkVGPSJpbmRleC0xNy5odG1sIj5TPC9BPiA8QSBIUkVGPSJpbmRleC0xOC5odG1sIj5UPC9BPiA8QSBIUkVGPSJpbmRleC0xOS5odG1sIj5VPC9BPiA8QSBIUkVGPSJpbmRleC0yMC5odG1sIj5WPC9BPiA8QSBIUkVGPSJpbmRleC0yMS5odG1sIj5XPC9BPiA8QSBIUkVGPSJpbmRleC0yMi5odG1sIj5YPC9BPiA8SFI+Ci08QSBOQU1FPSJfRl8iPjwhLS0gLS0+PC9BPjxIMj4KLTxCPkY8L0I+PC9IMj4KLTxETD4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNGQVRBTCI+PEI+RkFUQUw8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPgotPEREPlRoaXMgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwcm9ibGVtIGlzIHJlYWxseSBiYWQgYW5kIHRoYXQgZnVydGhlcgotIHByb2Nlc3NpbmcgaXMgbGlrZWx5IG5vdCBwb3NzaWJsZS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNGQVRBTF9MSVRFUkFMIj48Qj5GQVRBTF9MSVRFUkFMPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4KLTxERD5UaGUgJzxlbT48Yj5GYXRhbDwvYj48L2VtPicgbGl0ZXJhbCBvYmplY3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZmF0YWxFcnJvcihvcmcueG1sLnNheC5TQVhFeGNlcHRpb24pIj48Qj5mYXRhbEVycm9yKFNBWEV4Y2VwdGlvbik8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2ZhdGFsRXJyb3Iob3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24pIj48Qj5mYXRhbEVycm9yKFNBWFBhcnNlRXhjZXB0aW9uKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RmF1bHQ8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkZhdWx0PC9iPjwvZW0+Jy48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjRkFVTFQiPjxCPkZBVUxUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImZhdWx0IjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNGQVVMVCI+PEI+RkFVTFQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkZhdWx0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjRkFVTFQiPjxCPkZBVUxUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkZhdWx0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+RkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48Qj5GQVVMVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNGQVVMVF9fRUxFTUVOVCI+PEI+RkFVTFRfX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNGQVVMVF9fRU1FU1NBR0UiPjxCPkZBVUxUX19FTUVTU0FHRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNGQVVMVF9fTkFNRSI+PEI+RkFVTFRfX05BTUU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjRkFVTFRfRUxFTUVOVF9UQUciPjxCPkZBVUxUX0VMRU1FTlRfVEFHPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImZhdWx0IjwvY29kZT4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNGQVVMVF9GRUFUVVJFX0NPVU5UIj48Qj5GQVVMVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkZhdWx0PC9lbT4nIGNsYXNzCi08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC01Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTcuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTYuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC02Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC03Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC1maWxlcy9pbmRleC03Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmOGY5OGUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtNy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEzMCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1HLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iRy1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC02Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTguaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC03Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX0dfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5HPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjZ2V0KGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXQoU3RyaW5nKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPgotPEREPlJldHVybnMgdGhlICc8ZW0+PGI+RGlhZ25vc3RpYyBTZXZlcml0eTwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZQotIHNwZWNpZmllZCBsaXRlcmFsIHZhbHVlLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI2dldChpbnQpIj48Qj5nZXQoaW50KTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPgotPEREPlJldHVybnMgdGhlICc8ZW0+PGI+RGlhZ25vc3RpYyBTZXZlcml0eTwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZQotIHNwZWNpZmllZCBpbnRlZ2VyIHZhbHVlLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI2dldEF0dHJpYnV0ZShvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0QXR0cmlidXRlKEVsZW1lbnQsIFN0cmluZyk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5SZXR1cm5zIGFuIGF0dHJpYnV0ZSB2YWx1ZSBnaXZlbiB0aGUgYXR0cmlidXRlTmFtZSBpbiB0aGUgZWxlbWVudC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmcoKSI+PEI+Z2V0QmluZGluZygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5CaW5kaW5nPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdfRUJpbmRpbmdPcGVyYXRpb25zKCkiPjxCPmdldEJpbmRpbmdfRUJpbmRpbmdPcGVyYXRpb25zKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCkiPjxDT0RFPjxlbT5FQmluZGluZyBPcGVyYXRpb25zPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdfRVBvcnRUeXBlKCkiPjxCPmdldEJpbmRpbmdfRVBvcnRUeXBlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldEVQb3J0VHlwZSgpIj48Q09ERT48ZW0+RVBvcnQgVHlwZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nX1FOYW1lKCkiPjxCPmdldEJpbmRpbmdfUU5hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdfVW5kZWZpbmVkKCkiPjxCPmdldEJpbmRpbmdfVW5kZWZpbmVkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPjxlbT5VbmRlZmluZWQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ0ZhdWx0KCkiPjxCPmdldEJpbmRpbmdGYXVsdCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPkJpbmRpbmcgRmF1bHQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ0ZhdWx0X0VGYXVsdCgpIj48Qj5nZXRCaW5kaW5nRmF1bHRfRUZhdWx0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjZ2V0RUZhdWx0KCkiPjxDT0RFPjxlbT5FRmF1bHQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ0ZhdWx0X05hbWUoKSI+PEI+Z2V0QmluZGluZ0ZhdWx0X05hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdJbnB1dCgpIj48Qj5nZXRCaW5kaW5nSW5wdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5CaW5kaW5nIElucHV0PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdJbnB1dF9FSW5wdXQoKSI+PEI+Z2V0QmluZGluZ0lucHV0X0VJbnB1dCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI2dldEVJbnB1dCgpIj48Q09ERT48ZW0+RUlucHV0PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdJbnB1dF9OYW1lKCkiPjxCPmdldEJpbmRpbmdJbnB1dF9OYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uKCkiPjxCPmdldEJpbmRpbmdPcGVyYXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0ZhdWx0cygpIj48Qj5nZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nRmF1bHRzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RUJpbmRpbmdGYXVsdHMoKSI+PENPREU+PGVtPkVCaW5kaW5nIEZhdWx0czwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nSW5wdXQoKSI+PEI+Z2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0lucHV0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nSW5wdXQoKSI+PENPREU+PGVtPkVCaW5kaW5nIElucHV0PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdPdXRwdXQoKSI+PEI+Z2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ091dHB1dCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ091dHB1dCgpIj48Q09ERT48ZW0+RUJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPcGVyYXRpb25fRU9wZXJhdGlvbigpIj48Qj5nZXRCaW5kaW5nT3BlcmF0aW9uX0VPcGVyYXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RU9wZXJhdGlvbigpIj48Q09ERT48ZW0+RU9wZXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uX05hbWUoKSI+PEI+Z2V0QmluZGluZ09wZXJhdGlvbl9OYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ091dHB1dCgpIj48Qj5nZXRCaW5kaW5nT3V0cHV0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPkJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPdXRwdXRfRU91dHB1dCgpIj48Qj5nZXRCaW5kaW5nT3V0cHV0X0VPdXRwdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwjZ2V0RU91dHB1dCgpIj48Q09ERT48ZW0+RU91dHB1dDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3V0cHV0X05hbWUoKSI+PEI+Z2V0QmluZGluZ091dHB1dF9OYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI2dldEJ5TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PEI+Z2V0QnlOYW1lKFN0cmluZyk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4KLTxERD5SZXR1cm5zIHRoZSAnPGVtPjxiPkRpYWdub3N0aWMgU2V2ZXJpdHk8L2I+PC9lbT4nIGxpdGVyYWwgd2l0aCB0aGUKLSBzcGVjaWZpZWQgbmFtZS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRDaGlsZHJlbigpIj48Qj5nZXRDaGlsZHJlbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5DaGlsZHJlbjwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNnZXRDb2x1bW4oKSI+PEI+Z2V0Q29sdW1uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjZ2V0Q29udGFpbmVyKCkiPjxCPmdldENvbnRhaW5lcigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWM8L0E+Ci08REQ+cmV0dXJucyB0aGUgRWxlbWVudCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNnZXRDb250YWluZXIoKSI+PEI+Z2V0Q29udGFpbmVyKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj48Qj5nZXRDb250YWluZXIoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkNvbnRhaW5lcjwvYj48L2VtPicgcmVmZXJlbmNlLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI2dldERlZmF1bHRTYXZlT3B0aW9ucygpIj48Qj5nZXREZWZhdWx0U2F2ZU9wdGlvbnMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExSZXNvdXJjZUltcGw8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjZ2V0RGVmaW5pdGlvbigpIj48Qj5nZXREZWZpbml0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VJbXBsPC9BPgotPEREPlJldHVybnMgdGhlIHJlc291cmNlJ3MgRGVmaW5pdGlvbi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb24oKSI+PEI+Z2V0RGVmaW5pdGlvbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5EZWZpbml0aW9uPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRUJpbmRpbmdzKCkiPjxCPmdldERlZmluaXRpb25fRUJpbmRpbmdzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RUJpbmRpbmdzKCkiPjxDT0RFPjxlbT5FQmluZGluZ3M8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbl9FSW1wb3J0cygpIj48Qj5nZXREZWZpbml0aW9uX0VJbXBvcnRzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RUltcG9ydHMoKSI+PENPREU+PGVtPkVJbXBvcnRzPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRU1lc3NhZ2VzKCkiPjxCPmdldERlZmluaXRpb25fRU1lc3NhZ2VzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RU1lc3NhZ2VzKCkiPjxDT0RFPjxlbT5FTWVzc2FnZXM8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbl9FTmFtZXNwYWNlcygpIj48Qj5nZXREZWZpbml0aW9uX0VOYW1lc3BhY2VzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RU5hbWVzcGFjZXMoKSI+PENPREU+PGVtPkVOYW1lc3BhY2VzPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRW5jb2RpbmcoKSI+PEI+Z2V0RGVmaW5pdGlvbl9FbmNvZGluZygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFbmNvZGluZygpIj48Q09ERT48ZW0+RW5jb2Rpbmc8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbl9FUG9ydFR5cGVzKCkiPjxCPmdldERlZmluaXRpb25fRVBvcnRUeXBlcygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVQb3J0VHlwZXMoKSI+PENPREU+PGVtPkVQb3J0IFR5cGVzPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRVNlcnZpY2VzKCkiPjxCPmdldERlZmluaXRpb25fRVNlcnZpY2VzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RVNlcnZpY2VzKCkiPjxDT0RFPjxlbT5FU2VydmljZXM8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbl9FVHlwZXMoKSI+PEI+Z2V0RGVmaW5pdGlvbl9FVHlwZXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RVR5cGVzKCkiPjxDT0RFPjxlbT5FVHlwZXM8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbl9Mb2NhdGlvbigpIj48Qj5nZXREZWZpbml0aW9uX0xvY2F0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldExvY2F0aW9uKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbjwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uX1FOYW1lKCkiPjxCPmdldERlZmluaXRpb25fUU5hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fVGFyZ2V0TmFtZXNwYWNlKCkiPjxCPmdldERlZmluaXRpb25fVGFyZ2V0TmFtZXNwYWNlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldFRhcmdldE5hbWVzcGFjZSgpIj48Q09ERT48ZW0+VGFyZ2V0IE5hbWVzcGFjZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0RGlhZ25vc3RpY3MoKSI+PEI+Z2V0RGlhZ25vc3RpY3MoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+UHJvdmlkZXMgYSBjb2xsZWN0aW9uIHdpdGggdGhlIGRpYWdub3N0aWNzIGdlbmVyYXRlZCBkdXJpbmcgcGFyc2luZy4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RG9jdW1lbnQoKSI+PEI+Z2V0RG9jdW1lbnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4KLTxERD5SZXR1cm5zIGEgVzNDIERPTSBEb2N1bWVudCBidWlsdCBmcm9tIHRoZSBpbnB1dCBXU0RMIGRvY3VtZW50LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2dldERvY3VtZW50KCkiPjxCPmdldERvY3VtZW50KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPlByb3ZpZGVzIHRoZSBET00gZG9jdW1lbnQgY3JlYXRlZCBieSBwYXJzaW5nIHRoZSBXU0RMIGRvY3VtZW50LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+PEI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRET01Eb2N1bWVudCgpIj48Qj5nZXRET01Eb2N1bWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAnPENPREU+PGVtPkRPTSBEb2N1bWVudDwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERPTUVsZW1lbnQoKSI+PEI+Z2V0RE9NRWxlbWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAnPENPREU+PGVtPkRPTSBFbGVtZW50PC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNnZXRFQmluZGluZygpIj48Qj5nZXRFQmluZGluZygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RUJpbmRpbmdGYXVsdHMoKSI+PEI+Z2V0RUJpbmRpbmdGYXVsdHMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZyBGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0lucHV0KCkiPjxCPmdldEVCaW5kaW5nSW5wdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZyBJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldEVCaW5kaW5nT3BlcmF0aW9ucygpIj48Qj5nZXRFQmluZGluZ09wZXJhdGlvbnMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZyBPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RUJpbmRpbmdPdXRwdXQoKSI+PEI+Z2V0RUJpbmRpbmdPdXRwdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZyBPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFQmluZGluZ3MoKSI+PEI+Z2V0RUJpbmRpbmdzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUJpbmRpbmdzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFRGVmaW5pdGlvbigpIj48Qj5nZXRFRGVmaW5pdGlvbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRGVmaW5pdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0RUVuY29kaW5nU3R5bGVzKCkiPjxCPmdldEVFbmNvZGluZ1N0eWxlcygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJvZHk8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RUVuY29kaW5nU3R5bGVzKCkiPjxCPmdldEVFbmNvZGluZ1N0eWxlcygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48Qj5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFydDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPjxCPmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXRFRmF1bHQoKSI+PEI+Z2V0RUZhdWx0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0ZhdWx0PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVGYXVsdDwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUZhdWx0cygpIj48Qj5nZXRFRmF1bHRzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3BlcmF0aW9uPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFSW1wb3J0cygpIj48Qj5nZXRFSW1wb3J0cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVJbXBvcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCNnZXRFSW5wdXQoKSI+PEI+Z2V0RUlucHV0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0lucHV0PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVJbnB1dDwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUlucHV0KCkiPjxCPmdldEVJbnB1dCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj48Qj5nZXRFbGVtZW50KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0RWxlbWVudERlY2xhcmF0aW9uKCkiPjxCPmdldEVsZW1lbnREZWNsYXJhdGlvbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVsZW1lbnQgRGVjbGFyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRFbGVtZW50TmFtZSgpIj48Qj5nZXRFbGVtZW50TmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVsZW1lbnQgTmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0RWxlbWVudFRhZyhpbnQpIj48Qj5nZXRFbGVtZW50VGFnKGludCk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5SZXR1cm5zIGEgU3RyaW5nIG5hbWUgb2YgZWxlbWVudCB0YWcgZ2l2ZW4gdGhlIG5vZGVUeXBlLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+PEI+Z2V0RWxlbWVudFR5cGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RU1lc3NhZ2UoKSI+PEI+Z2V0RU1lc3NhZ2UoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwjZ2V0RU1lc3NhZ2UoKSI+PEI+Z2V0RU1lc3NhZ2UoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVNZXNzYWdlKCkiPjxCPmdldEVNZXNzYWdlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFTWVzc2FnZXMoKSI+PEI+Z2V0RU1lc3NhZ2VzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1lc3NhZ2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCNnZXRFTUlNRVBhcnQoKSI+PEI+Z2V0RU1JTUVQYXJ0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FTXVsdGlwYXJ0UmVsYXRlZDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FTUlNRSBQYXJ0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RU5hbWVzcGFjZXMoKSI+PEI+Z2V0RU5hbWVzcGFjZXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FTmFtZXNwYWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPjxCPmdldEVuY2xvc2luZ0RlZmluaXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPgotPEREPlJldHVybnMgdGhlIERlZmluaXRpb24gdGhhdCBjb250YWlucyB0aGlzIFdTREwgZWxlbWVudC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RW5jb2RpbmcoKSI+PEI+Z2V0RW5jb2RpbmcoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FbmNvZGluZzwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0RW5jb2RpbmcoKSI+PEI+Z2V0RW5jb2RpbmcoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RW5jb2RpbmdTdHlsZXMoKSI+PEI+Z2V0RW5jb2RpbmdTdHlsZXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2dldEVuZENvbHVtbihvcmcudzNjLmRvbS5Ob2RlKSI+PEI+Z2V0RW5kQ29sdW1uKE5vZGUpPC9CPjwvQT4gLSAKLVN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExQYXJzZXI8L0E+Ci08REQ+UmV0dXJucyB0aGUgY29sdW1uIGF0IHdoaWNoIHRoZSBnaXZlbiBub2RlIGVuZHMuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0RW5kTGluZShvcmcudzNjLmRvbS5Ob2RlKSI+PEI+Z2V0RW5kTGluZShOb2RlKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPlJldHVybnMgdGhlIGxpbmUgYXQgd2hpY2ggdGhlIGdpdmVuIG5vZGUgZW5kcy4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RU9wZXJhdGlvbigpIj48Qj5nZXRFT3BlcmF0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNnZXRFT3BlcmF0aW9ucygpIj48Qj5nZXRFT3BlcmF0aW9ucygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydFR5cGU8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbnM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXRFT3V0cHV0KCkiPjxCPmdldEVPdXRwdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ091dHB1dDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FT3V0cHV0PC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFT3V0cHV0KCkiPjxCPmdldEVPdXRwdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCkiPjxCPmdldEVQYXJhbWV0ZXJPcmRlcmluZygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUGFyYW1ldGVyIE9yZGVyaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRFUGFydCgpIj48Qj5nZXRFUGFydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUNvbnRlbnQ8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sI2dldEVQYXJ0KCkiPjxCPmdldEVQYXJ0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FTWltZVhtbDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RVBhcnQoKSI+PEI+Z2V0RVBhcnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXRFUGFydHMoKSI+PEI+Z2V0RVBhcnRzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQm9keTwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUGFydHM8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNnZXRFUGFydHMoKSI+PEI+Z2V0RVBhcnRzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBhcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjZ2V0RVBvcnRzKCkiPjxCPmdldEVQb3J0cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5TZXJ2aWNlPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQb3J0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldEVQb3J0VHlwZSgpIj48Qj5nZXRFUG9ydFR5cGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RVBvcnRUeXBlcygpIj48Qj5nZXRFUG9ydFR5cGVzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldEVTY2hlbWEoKSI+PEI+Z2V0RVNjaGVtYSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FU2NoZW1hPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RVNlcnZpY2VzKCkiPjxCPmdldEVTZXJ2aWNlcygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVTZXJ2aWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVUeXBlcygpIj48Qj5nZXRFVHlwZXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSI+PEI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9FbGVtZW50VHlwZSgpIj48Qj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9FbGVtZW50VHlwZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+PENPREU+PGVtPkVsZW1lbnQgVHlwZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9SZXF1aXJlZCgpIj48Qj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9SZXF1aXJlZCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj48Q09ERT48ZW0+UmVxdWlyZWQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkoamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeShTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbjwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkoKSI+PEI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQbHVnaW48L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPjxCPmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhcnQ8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+PEI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4KLTxERD5UaGlzIG1ldGhvZCBpcyBzYW1lIGFzIGdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRFeHRlbnNpYmxlRWxlbWVudCgpIj48Qj5nZXRFeHRlbnNpYmxlRWxlbWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEV4dGVuc2libGVFbGVtZW50X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+PEI+Z2V0RXh0ZW5zaWJsZUVsZW1lbnRfRUV4dGVuc2liaWxpdHlFbGVtZW50cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPjxDT0RFPjxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCNnZXRFeHRlbnNpb25Ub0ZhY3RvcnlNYXAoKSI+PEI+Z2V0RXh0ZW5zaW9uVG9GYWN0b3J5TWFwKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeTwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sI2dldEZhY3RvcnkoVVJJKSI+PEI+Z2V0RmFjdG9yeShVUkkpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnk8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCNnZXRGYWN0b3J5KFVSSSwgamF2YS5sYW5nLlN0cmluZykiPjxCPmdldEZhY3RvcnkoVVJJLCBTdHJpbmcpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnk8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjZ2V0RmF1bHQoKSI+PEI+Z2V0RmF1bHQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nRmF1bHQ8L0E+Ci08REQ+VGhpcyBtZXRob2QgaXMgc2FtZSBhcyBnZXRFRmF1bHQoKSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRGYXVsdCgpIj48Qj5nZXRGYXVsdCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+RmF1bHQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwjZ2V0SGVhZGVyRmF1bHRzKCkiPjxCPmdldEhlYWRlckZhdWx0cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkhlYWRlciBGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldEhUVFBBZGRyZXNzKCkiPjxCPmdldEhUVFBBZGRyZXNzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PENPREU+PGVtPkFkZHJlc3M8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldEhUVFBBZGRyZXNzX0xvY2F0aW9uVVJJKCkiPjxCPmdldEhUVFBBZGRyZXNzX0xvY2F0aW9uVVJJKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+PGVtPkxvY2F0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUEJpbmRpbmcoKSI+PEI+Z2V0SFRUUEJpbmRpbmcoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT48ZW0+QmluZGluZzwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUEJpbmRpbmdfVmVyYigpIj48Qj5nZXRIVFRQQmluZGluZ19WZXJiKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwjZ2V0VmVyYigpIj48Q09ERT48ZW0+VmVyYjwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUEZhY3RvcnkoKSI+PEI+Z2V0SFRUUEZhY3RvcnkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUE9wZXJhdGlvbigpIj48Qj5nZXRIVFRQT3BlcmF0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRIVFRQT3BlcmF0aW9uX0xvY2F0aW9uVVJJKCkiPjxCPmdldEhUVFBPcGVyYXRpb25fTG9jYXRpb25VUkkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sI2dldEhUVFBQYWNrYWdlKCkiPjxCPmdldEhUVFBQYWNrYWdlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQRmFjdG9yeTwvQT4KLTxERD5SZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRIVFRQVXJsRW5jb2RlZCgpIj48Qj5nZXRIVFRQVXJsRW5jb2RlZCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxDT0RFPjxlbT5VcmwgRW5jb2RlZDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUFVybFJlcGxhY2VtZW50KCkiPjxCPmdldEhUVFBVcmxSZXBsYWNlbWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT48ZW0+VXJsIFJlcGxhY2VtZW50PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElCaW5kaW5nKCkiPjxCPmdldElCaW5kaW5nKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JQmluZGluZzwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElCaW5kaW5nRmF1bHQoKSI+PEI+Z2V0SUJpbmRpbmdGYXVsdCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUJpbmRpbmcgRmF1bHQ8L2VtPjwvQ09ERT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJQmluZGluZ0lucHV0KCkiPjxCPmdldElCaW5kaW5nSW5wdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklCaW5kaW5nIElucHV0PC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SUJpbmRpbmdPcGVyYXRpb24oKSI+PEI+Z2V0SUJpbmRpbmdPcGVyYXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklCaW5kaW5nIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElCaW5kaW5nT3V0cHV0KCkiPjxCPmdldElCaW5kaW5nT3V0cHV0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JQmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJRGVmaW5pdGlvbigpIj48Qj5nZXRJRGVmaW5pdGlvbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SURlZmluaXRpb248L2VtPjwvQ09ERT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSI+PEI+Z2V0SUV4dGVuc2liaWxpdHlFbGVtZW50KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SUV4dGVuc2lvblJlZ2lzdHJ5KCkiPjxCPmdldElFeHRlbnNpb25SZWdpc3RyeSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUV4dGVuc2lvbiBSZWdpc3RyeTwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElGYXVsdCgpIj48Qj5nZXRJRmF1bHQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklGYXVsdDwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRJSFRUUEFkZHJlc3MoKSI+PEI+Z2V0SUhUVFBBZGRyZXNzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JSFRUUCBBZGRyZXNzPC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldElIVFRQQmluZGluZygpIj48Qj5nZXRJSFRUUEJpbmRpbmcoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklIVFRQIEJpbmRpbmc8L2VtPjwvQ09ERT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SUhUVFBPcGVyYXRpb24oKSI+PEI+Z2V0SUhUVFBPcGVyYXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklIVFRQIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRJSFRUUFVybEVuY29kZWQoKSI+PEI+Z2V0SUhUVFBVcmxFbmNvZGVkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JSFRUUCBVcmwgRW5jb2RlZDwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRJSFRUUFVybFJlcGxhY2VtZW50KCkiPjxCPmdldElIVFRQVXJsUmVwbGFjZW1lbnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklIVFRQIFVybCBSZXBsYWNlbWVudDwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElJbXBvcnQoKSI+PEI+Z2V0SUltcG9ydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUltcG9ydDwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElJbnB1dCgpIj48Qj5nZXRJSW5wdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklJbnB1dDwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElJdGVyYXRvcigpIj48Qj5nZXRJSXRlcmF0b3IoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklJdGVyYXRvcjwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElMaXN0KCkiPjxCPmdldElMaXN0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JTGlzdDwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElNYXAoKSI+PEI+Z2V0SU1hcCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SU1hcDwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElNZXNzYWdlKCkiPjxCPmdldElNZXNzYWdlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JTWVzc2FnZTwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRJTUlNRUNvbnRlbnQoKSI+PEI+Z2V0SU1JTUVDb250ZW50KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JTUlNRSBDb250ZW50PC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldElNSU1FTWltZVhtbCgpIj48Qj5nZXRJTUlNRU1pbWVYbWwoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklNSU1FIE1pbWUgWG1sPC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldElNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpIj48Qj5nZXRJTUlNRU11bHRpcGFydFJlbGF0ZWQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklNSU1FIE11bHRpcGFydCBSZWxhdGVkPC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldElNSU1FUGFydCgpIj48Qj5nZXRJTUlNRVBhcnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklNSU1FIFBhcnQ8L2VtPjwvQ09ERT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJbXBvcnQoKSI+PEI+Z2V0SW1wb3J0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+SW1wb3J0PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEltcG9ydF9FRGVmaW5pdGlvbigpIj48Qj5nZXRJbXBvcnRfRURlZmluaXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFRGVmaW5pdGlvbigpIj48Q09ERT48ZW0+RURlZmluaXRpb248L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SW1wb3J0X0VTY2hlbWEoKSI+PEI+Z2V0SW1wb3J0X0VTY2hlbWEoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFU2NoZW1hKCkiPjxDT0RFPjxlbT5FU2NoZW1hPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEltcG9ydF9Mb2NhdGlvblVSSSgpIj48Qj5nZXRJbXBvcnRfTG9jYXRpb25VUkkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Q09ERT48ZW0+TG9jYXRpb24gVVJJPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEltcG9ydF9OYW1lc3BhY2VVUkkoKSI+PEI+Z2V0SW1wb3J0X05hbWVzcGFjZVVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT48ZW0+TmFtZXNwYWNlIFVSSTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0SW5wdXQoKSI+PEI+Z2V0SW5wdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nSW5wdXQ8L0E+Ci08REQ+VGhpcyBtZXRob2QgaXMgc2FtZSBhcyBnZXRFSW5wdXQoKSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJbnB1dCgpIj48Qj5nZXRJbnB1dCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+SW5wdXQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SU9wZXJhdGlvbigpIj48Qj5nZXRJT3BlcmF0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JT3BlcmF0aW9uPC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SU91dHB1dCgpIj48Qj5nZXRJT3V0cHV0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JT3V0cHV0PC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SVBhcnQoKSI+PEI+Z2V0SVBhcnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklQYXJ0PC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SVBvcnQoKSI+PEI+Z2V0SVBvcnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklQb3J0PC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SVBvcnRUeXBlKCkiPjxCPmdldElQb3J0VHlwZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVBvcnQgVHlwZTwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElTZXJ2aWNlKCkiPjxCPmdldElTZXJ2aWNlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU2VydmljZTwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRJU09BUEFkZHJlc3MoKSI+PEI+Z2V0SVNPQVBBZGRyZXNzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU09BUCBBZGRyZXNzPC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldElTT0FQQmluZGluZygpIj48Qj5nZXRJU09BUEJpbmRpbmcoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklTT0FQIEJpbmRpbmc8L2VtPjwvQ09ERT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0SVNPQVBCb2R5KCkiPjxCPmdldElTT0FQQm9keSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVNPQVAgQm9keTwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRJU09BUEZhdWx0KCkiPjxCPmdldElTT0FQRmF1bHQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklTT0FQIEZhdWx0PC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldElTT0FQSGVhZGVyKCkiPjxCPmdldElTT0FQSGVhZGVyKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU09BUCBIZWFkZXI8L2VtPjwvQ09ERT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0SVNPQVBIZWFkZXJGYXVsdCgpIj48Qj5nZXRJU09BUEhlYWRlckZhdWx0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU09BUCBIZWFkZXIgRmF1bHQ8L2VtPjwvQ09ERT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0SVNPQVBPcGVyYXRpb24oKSI+PEI+Z2V0SVNPQVBPcGVyYXRpb24oKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklTT0FQIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRJU3RyaW5nKCkiPjxCPmdldElTdHJpbmcoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxDT0RFPjxlbT5JU3RyaW5nPC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SVR5cGVzKCkiPjxCPmdldElUeXBlcygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVR5cGVzPC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SVVSTCgpIj48Qj5nZXRJVVJMKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JVVJMPC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRLZXkoKSI+PEI+Z2V0S2V5KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT4KLTxERD5HZXRzIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGtleS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI2dldEtleSgpIj48Qj5nZXRLZXkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNJbXBsPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjZ2V0TGluZSgpIj48Qj5nZXRMaW5lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRMaXN0KCkiPjxCPmdldExpc3QoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxDT0RFPjxlbT5MaXN0PC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRMb2NhdGlvbigpIj48Qj5nZXRMb2NhdGlvbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkxvY2F0aW9uPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI2dldExvY2F0aW9uKCkiPjxCPmdldExvY2F0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Qj5nZXRMb2NhdGlvblVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEFkZHJlc3M8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxCPmdldExvY2F0aW9uVVJJKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBPcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Qj5nZXRMb2NhdGlvblVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEFkZHJlc3M8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Qj5nZXRMb2NhdGlvblVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldE1lc3NhZ2UoKSI+PEI+Z2V0TWVzc2FnZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNnZXRNZXNzYWdlKCkiPjxCPmdldE1lc3NhZ2UoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNJbXBsPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZSgpIj48Qj5nZXRNZXNzYWdlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPk1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZV9FUGFydHMoKSI+PEI+Z2V0TWVzc2FnZV9FUGFydHMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNnZXRFUGFydHMoKSI+PENPREU+PGVtPkVQYXJ0czwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRNZXNzYWdlX1FOYW1lKCkiPjxCPmdldE1lc3NhZ2VfUU5hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE1lc3NhZ2VfVW5kZWZpbmVkKCkiPjxCPmdldE1lc3NhZ2VfVW5kZWZpbmVkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPjxlbT5VbmRlZmluZWQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZVJlZmVyZW5jZSgpIj48Qj5nZXRNZXNzYWdlUmVmZXJlbmNlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPk1lc3NhZ2UgUmVmZXJlbmNlPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE1lc3NhZ2VSZWZlcmVuY2VfRU1lc3NhZ2UoKSI+PEI+Z2V0TWVzc2FnZVJlZmVyZW5jZV9FTWVzc2FnZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT48ZW0+RU1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZVJlZmVyZW5jZV9OYW1lKCkiPjxCPmdldE1lc3NhZ2VSZWZlcmVuY2VfTmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FQ29udGVudCgpIj48Qj5nZXRNSU1FQ29udGVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxDT0RFPjxlbT5Db250ZW50PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FQ29udGVudF9FUGFydCgpIj48Qj5nZXRNSU1FQ29udGVudF9FUGFydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sI2dldEVQYXJ0KCkiPjxDT0RFPjxlbT5FUGFydDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRUNvbnRlbnRfVHlwZSgpIj48Qj5nZXRNSU1FQ29udGVudF9UeXBlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0VHlwZSgpIj48Q09ERT48ZW0+VHlwZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRUZhY3RvcnkoKSI+PEI+Z2V0TUlNRUZhY3RvcnkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRU1pbWVYbWwoKSI+PEI+Z2V0TUlNRU1pbWVYbWwoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Q09ERT48ZW0+TWltZSBYbWw8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldE1JTUVNaW1lWG1sX0VQYXJ0KCkiPjxCPmdldE1JTUVNaW1lWG1sX0VQYXJ0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpIj48Qj5nZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxDT0RFPjxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWRfRU1JTUVQYXJ0KCkiPjxCPmdldE1JTUVNdWx0aXBhcnRSZWxhdGVkX0VNSU1FUGFydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwjZ2V0RU1JTUVQYXJ0KCkiPjxDT0RFPjxlbT5FTUlNRSBQYXJ0PC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCNnZXRNSU1FUGFja2FnZSgpIj48Qj5nZXRNSU1FUGFja2FnZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRVBhcnQoKSI+PEI+Z2V0TUlNRVBhcnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Q09ERT48ZW0+UGFydDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRVBhcnRfRUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48Qj5nZXRNSU1FUGFydF9FRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPjxDT0RFPjxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwjZ2V0TUlNRVBhcnRzKCkiPjxCPmdldE1JTUVQYXJ0cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBGYXVsdDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nRmF1bHQ8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0lucHV0PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXROYW1lKCkiPjxCPmdldE5hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0TmFtZSgpIj48Qj5nZXROYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldE5hbWUoKSI+PEI+Z2V0TmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TmFtZXNwYWNlKCkiPjxCPmdldE5hbWVzcGFjZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPk5hbWVzcGFjZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXROYW1lc3BhY2VfUHJlZml4KCkiPjxCPmdldE5hbWVzcGFjZV9QcmVmaXgoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNnZXRQcmVmaXgoKSI+PENPREU+PGVtPlByZWZpeDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXROYW1lc3BhY2VfVVJJKCkiPjxCPmdldE5hbWVzcGFjZV9VUkkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNnZXRVUkkoKSI+PENPREU+PGVtPlVSSTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxCPmdldE5hbWVzcGFjZVVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJvZHk8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Qj5nZXROYW1lc3BhY2VVUkkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmF1bHQ8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxCPmdldE5hbWVzcGFjZVVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxCPmdldE5hbWVzcGFjZVVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjZ2V0Tm9kZSgpIj48Qj5nZXROb2RlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT4KLTxERD5HZXRzIHRoZSBET00gTm9kZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNnZXROb2RlKCkiPjxCPmdldE5vZGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNJbXBsPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uKCkiPjxCPmdldE9wZXJhdGlvbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPk9wZXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb25fRUZhdWx0cygpIj48Qj5nZXRPcGVyYXRpb25fRUZhdWx0cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUZhdWx0cygpIj48Q09ERT48ZW0+RUZhdWx0czwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb25fRUlucHV0KCkiPjxCPmdldE9wZXJhdGlvbl9FSW5wdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFSW5wdXQoKSI+PENPREU+PGVtPkVJbnB1dDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb25fRU91dHB1dCgpIj48Qj5nZXRPcGVyYXRpb25fRU91dHB1dCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVPdXRwdXQoKSI+PENPREU+PGVtPkVPdXRwdXQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uX0VQYXJhbWV0ZXJPcmRlcmluZygpIj48Qj5nZXRPcGVyYXRpb25fRVBhcmFtZXRlck9yZGVyaW5nKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFUGFyYW1ldGVyT3JkZXJpbmcoKSI+PENPREU+PGVtPkVQYXJhbWV0ZXIgT3JkZXJpbmc8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uX05hbWUoKSI+PEI+Z2V0T3BlcmF0aW9uX05hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbl9TdHlsZSgpIj48Qj5nZXRPcGVyYXRpb25fU3R5bGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRTdHlsZSgpIj48Q09ERT48ZW0+U3R5bGU8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uX1VuZGVmaW5lZCgpIj48Qj5nZXRPcGVyYXRpb25fVW5kZWZpbmVkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb25UeXBlKCkiPjxCPmdldE9wZXJhdGlvblR5cGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxDT0RFPjxlbT5PcGVyYXRpb24gVHlwZTwvZW0+PC9DT0RFPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwjZ2V0T3V0cHV0KCkiPjxCPmdldE91dHB1dCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3V0cHV0PC9BPgotPEREPlRoaXMgbWV0aG9kIGlzIHNhbWUgYXMgZ2V0RU91dHB1dCgpIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIEpXU0RMIEFQSS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE91dHB1dCgpIj48Qj5nZXRPdXRwdXQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5PdXRwdXQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sI2dldFBhcnQoKSI+PEI+Z2V0UGFydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUNvbnRlbnQ8L0E+Ci08REQ+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UGFydDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sI2dldFBhcnQoKSI+PEI+Z2V0UGFydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU1pbWVYbWw8L0E+Ci08REQ+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UGFydDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldFBhcnQoKSI+PEI+Z2V0UGFydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UGFydDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0KCkiPjxCPmdldFBhcnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+UGFydDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0X0VsZW1lbnREZWNsYXJhdGlvbigpIj48Qj5nZXRQYXJ0X0VsZW1lbnREZWNsYXJhdGlvbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRFbGVtZW50RGVjbGFyYXRpb24oKSI+PENPREU+PGVtPkVsZW1lbnQgRGVjbGFyYXRpb248L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UGFydF9FbGVtZW50TmFtZSgpIj48Qj5nZXRQYXJ0X0VsZW1lbnROYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVsZW1lbnROYW1lKCkiPjxDT0RFPjxlbT5FbGVtZW50IE5hbWU8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UGFydF9FTWVzc2FnZSgpIj48Qj5nZXRQYXJ0X0VNZXNzYWdlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0X05hbWUoKSI+PEI+Z2V0UGFydF9OYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UGFydF9UeXBlRGVmaW5pdGlvbigpIj48Qj5nZXRQYXJ0X1R5cGVEZWZpbml0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldFR5cGVEZWZpbml0aW9uKCkiPjxDT0RFPjxlbT5UeXBlIERlZmluaXRpb248L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UGFydF9UeXBlTmFtZSgpIj48Qj5nZXRQYXJ0X1R5cGVOYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldFR5cGVOYW1lKCkiPjxDT0RFPjxlbT5UeXBlIE5hbWU8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCNnZXRQbHVnaW4oKSI+PEI+Z2V0UGx1Z2luKCk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbjwvQT4KLTxERD5SZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIEVjbGlwc2UgcGx1Z2luLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCNnZXRQbHVnaW5SZXNvdXJjZUxvY2F0b3IoKSI+PEI+Z2V0UGx1Z2luUmVzb3VyY2VMb2NhdG9yKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGx1Z2luPC9BPgotPEREPiZuYnNwOwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydCgpIj48Qj5nZXRQb3J0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPlBvcnQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydF9FQmluZGluZygpIj48Qj5nZXRQb3J0X0VCaW5kaW5nKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldEVCaW5kaW5nKCkiPjxDT0RFPjxlbT5FQmluZGluZzwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQb3J0X05hbWUoKSI+PEI+Z2V0UG9ydF9OYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydFR5cGUoKSI+PEI+Z2V0UG9ydFR5cGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPlBvcnQgVHlwZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQb3J0VHlwZV9FT3BlcmF0aW9ucygpIj48Qj5nZXRQb3J0VHlwZV9FT3BlcmF0aW9ucygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNnZXRFT3BlcmF0aW9ucygpIj48Q09ERT48ZW0+RU9wZXJhdGlvbnM8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydFR5cGVfUU5hbWUoKSI+PEI+Z2V0UG9ydFR5cGVfUU5hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI2dldFFOYW1lKCkiPjxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQb3J0VHlwZV9VbmRlZmluZWQoKSI+PEI+Z2V0UG9ydFR5cGVfVW5kZWZpbmVkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNnZXRQcmVmaXgoKSI+PEI+Z2V0UHJlZml4KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TmFtZXNwYWNlPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlByZWZpeDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCNnZXRQcm90b2NvbFRvRmFjdG9yeU1hcCgpIj48Qj5nZXRQcm90b2NvbFRvRmFjdG9yeU1hcCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnk8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldFFOYW1lKCkiPjxCPmdldFFOYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRRTmFtZSgpIj48Qj5nZXRRTmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwjZ2V0UU5hbWUoKSI+PEI+Z2V0UU5hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNnZXRRTmFtZSgpIj48Qj5nZXRRTmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydFR5cGU8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNnZXRRTmFtZSgpIj48Qj5nZXRRTmFtZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5TZXJ2aWNlPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFFOYW1lKCkiPjxCPmdldFFOYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0U2NoZW1hKCkiPjxCPmdldFNjaGVtYSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT4KLTxERD5UaGlzIG1ldGhvZCBpcyBzYW1lIGFzIGdldEVTY2hlbWEoKS4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldFNjaGVtYSgpIj48Qj5nZXRTY2hlbWEoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlNjaGVtYTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCNnZXRTY2hlbWFzKCkiPjxCPmdldFNjaGVtYXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPgotPEREPlJldHVybnMgYSBMaXN0IG9mIGlubGluZSBYU0RTY2hlbWEgaW5zdGFuY2VzIGluIHRoaXMgVHlwZXMuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCNnZXRTY2hlbWFzKGphdmEubGFuZy5TdHJpbmcpIj48Qj5nZXRTY2hlbWFzKFN0cmluZyk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5UeXBlczwvQT4KLTxERD5SZXR1cm5zIGEgTGlzdCBvZiBpbmxpbmUgWFNEU2NoZW1hIGluc3RhbmNlcyBpbiB0aGlzIFR5cGVzLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0U2VydmljZSgpIj48Qj5nZXRTZXJ2aWNlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPlNlcnZpY2U8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0U2VydmljZV9FUG9ydHMoKSI+PEI+Z2V0U2VydmljZV9FUG9ydHMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNnZXRFUG9ydHMoKSI+PENPREU+PGVtPkVQb3J0czwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRTZXJ2aWNlX1FOYW1lKCkiPjxCPmdldFNlcnZpY2VfUU5hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFNlcnZpY2VfVW5kZWZpbmVkKCkiPjxCPmdldFNlcnZpY2VfVW5kZWZpbmVkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPjxlbT5VbmRlZmluZWQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRTZXZlcml0eSgpIj48Qj5nZXRTZXZlcml0eSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWM8L0E+Ci08REQ+UHJvdmlkZXMgdGhpcyBkaWFnbm9zdGljJ3Mgc2V2ZXJpdHkuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNnZXRTZXZlcml0eSgpIj48Qj5nZXRTZXZlcml0eSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY0ltcGw8L0E+Ci08REQ+Jm5ic3A7Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCNnZXRTb2FwQWN0aW9uVVJJKCkiPjxCPmdldFNvYXBBY3Rpb25VUkkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUE9wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Tb2FwIEFjdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBBZGRyZXNzKCkiPjxCPmdldFNPQVBBZGRyZXNzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPkFkZHJlc3M8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBBZGRyZXNzX0xvY2F0aW9uVVJJKCkiPjxCPmdldFNPQVBBZGRyZXNzX0xvY2F0aW9uVVJJKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+PGVtPkxvY2F0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEJpbmRpbmcoKSI+PEI+Z2V0U09BUEJpbmRpbmcoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT48ZW0+QmluZGluZzwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEJpbmRpbmdfU3R5bGUoKSI+PEI+Z2V0U09BUEJpbmRpbmdfU3R5bGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNnZXRTdHlsZSgpIj48Q09ERT48ZW0+U3R5bGU8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCaW5kaW5nX1RyYW5zcG9ydFVSSSgpIj48Qj5nZXRTT0FQQmluZGluZ19UcmFuc3BvcnRVUkkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNnZXRUcmFuc3BvcnRVUkkoKSI+PENPREU+PGVtPlRyYW5zcG9ydCBVUkk8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCb2R5KCkiPjxCPmdldFNPQVBCb2R5KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPkJvZHk8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCb2R5X0VFbmNvZGluZ1N0eWxlcygpIj48Qj5nZXRTT0FQQm9keV9FRW5jb2RpbmdTdHlsZXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldEVFbmNvZGluZ1N0eWxlcygpIj48Q09ERT48ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEJvZHlfRVBhcnRzKCkiPjxCPmdldFNPQVBCb2R5X0VQYXJ0cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0RVBhcnRzKCkiPjxDT0RFPjxlbT5FUGFydHM8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCb2R5X05hbWVzcGFjZVVSSSgpIj48Qj5nZXRTT0FQQm9keV9OYW1lc3BhY2VVUkkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCb2R5X1VzZSgpIj48Qj5nZXRTT0FQQm9keV9Vc2UoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXRVc2UoKSI+PENPREU+PGVtPlVzZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhY3RvcnkoKSI+PEI+Z2V0U09BUEZhY3RvcnkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhdWx0KCkiPjxCPmdldFNPQVBGYXVsdCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT48ZW0+RmF1bHQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBGYXVsdF9FRW5jb2RpbmdTdHlsZXMoKSI+PEI+Z2V0U09BUEZhdWx0X0VFbmNvZGluZ1N0eWxlcygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPkVFbmNvZGluZyBTdHlsZXM8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBGYXVsdF9OYW1lKCkiPjxCPmdldFNPQVBGYXVsdF9OYW1lKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBGYXVsdF9OYW1lc3BhY2VVUkkoKSI+PEI+Z2V0U09BUEZhdWx0X05hbWVzcGFjZVVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBGYXVsdF9Vc2UoKSI+PEI+Z2V0U09BUEZhdWx0X1VzZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXRVc2UoKSI+PENPREU+PGVtPlVzZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlcigpIj48Qj5nZXRTT0FQSGVhZGVyKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT48ZW0+SGVhZGVyPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyX0hlYWRlckZhdWx0cygpIj48Qj5nZXRTT0FQSGVhZGVyX0hlYWRlckZhdWx0cygpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCNnZXRIZWFkZXJGYXVsdHMoKSI+PENPREU+PGVtPkhlYWRlciBGYXVsdHM8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXJCYXNlKCkiPjxCPmdldFNPQVBIZWFkZXJCYXNlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPkhlYWRlciBCYXNlPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyQmFzZV9FRW5jb2RpbmdTdHlsZXMoKSI+PEI+Z2V0U09BUEhlYWRlckJhc2VfRUVuY29kaW5nU3R5bGVzKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFRW5jb2RpbmdTdHlsZXMoKSI+PENPREU+PGVtPkVFbmNvZGluZyBTdHlsZXM8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXJCYXNlX0VNZXNzYWdlKCkiPjxCPmdldFNPQVBIZWFkZXJCYXNlX0VNZXNzYWdlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RU1lc3NhZ2UoKSI+PENPREU+PGVtPkVNZXNzYWdlPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyQmFzZV9FUGFydCgpIj48Qj5nZXRTT0FQSGVhZGVyQmFzZV9FUGFydCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVQYXJ0KCkiPjxDT0RFPjxlbT5FUGFydDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfTWVzc2FnZSgpIj48Qj5nZXRTT0FQSGVhZGVyQmFzZV9NZXNzYWdlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TWVzc2FnZSgpIj48Q09ERT48ZW0+TWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfTmFtZXNwYWNlVVJJKCkiPjxCPmdldFNPQVBIZWFkZXJCYXNlX05hbWVzcGFjZVVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT48ZW0+TmFtZXNwYWNlIFVSSTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfUGFydCgpIj48Qj5nZXRTT0FQSGVhZGVyQmFzZV9QYXJ0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0UGFydCgpIj48Q09ERT48ZW0+UGFydDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfVXNlKCkiPjxCPmdldFNPQVBIZWFkZXJCYXNlX1VzZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldFVzZSgpIj48Q09ERT48ZW0+VXNlPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyRmF1bHQoKSI+PEI+Z2V0U09BUEhlYWRlckZhdWx0KCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5IZWFkZXIgRmF1bHQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBPcGVyYXRpb24oKSI+PEI+Z2V0U09BUE9wZXJhdGlvbigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPk9wZXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUE9wZXJhdGlvbl9Tb2FwQWN0aW9uVVJJKCkiPjxCPmdldFNPQVBPcGVyYXRpb25fU29hcEFjdGlvblVSSSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U29hcEFjdGlvblVSSSgpIj48Q09ERT48ZW0+U29hcCBBY3Rpb24gVVJJPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQT3BlcmF0aW9uX1N0eWxlKCkiPjxCPmdldFNPQVBPcGVyYXRpb25fU3R5bGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sI2dldFN0eWxlKCkiPjxDT0RFPjxlbT5TdHlsZTwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjZ2V0U09BUFBhY2thZ2UoKSI+PEI+Z2V0U09BUFBhY2thZ2UoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBGYWN0b3J5PC9BPgotPEREPlJldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2dldFN0YXJ0Q29sdW1uKG9yZy53M2MuZG9tLk5vZGUpIj48Qj5nZXRTdGFydENvbHVtbihOb2RlKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPgotPEREPlJldHVybnMgdGhlIGNvbHVtbiBhdCB3aGljaCB0aGUgZ2l2ZW4gbm9kZSBzdGFydHMuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0U3RhcnRMaW5lKG9yZy53M2MuZG9tLk5vZGUpIj48Qj5nZXRTdGFydExpbmUoTm9kZSk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFBhcnNlcjwvQT4KLTxERD5SZXR1cm5zIHRoZSBsaW5lIGF0IHdoaWNoIHRoZSBnaXZlbiBub2RlIHN0YXJ0cy4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNnZXRTdHlsZSgpIj48Qj5nZXRTdHlsZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJpbmRpbmc8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U3R5bGUoKSI+PEI+Z2V0U3R5bGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUE9wZXJhdGlvbjwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0U3R5bGUoKSI+PEI+Z2V0U3R5bGUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRTdWJzdGl0dXRpb25zKCkiPjxCPmdldFN1YnN0aXR1dGlvbnMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljPC9BPgotPEREPlJldHVybnMgYSBsaXN0IHdpdGggdGhlIG9yaWdpbmFsIG1lc3NhZ2UgcGFyYW1ldGVycyBhcyBTdHJpbmdzLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjZ2V0U3Vic3RpdHV0aW9ucygpIj48Qj5nZXRTdWJzdGl0dXRpb25zKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljSW1wbDwvQT4KLTxERD4mbmJzcDsKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0VGFyZ2V0TmFtZXNwYWNlKCkiPjxCPmdldFRhcmdldE5hbWVzcGFjZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlRhcmdldCBOYW1lc3BhY2U8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI2dldFRyYW5zcG9ydFVSSSgpIj48Qj5nZXRUcmFuc3BvcnRVUkkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCaW5kaW5nPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlRyYW5zcG9ydCBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sI2dldFR5cGUoKSI+PEI+Z2V0VHlwZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUNvbnRlbnQ8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VHlwZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldFR5cGVEZWZpbml0aW9uKCkiPjxCPmdldFR5cGVEZWZpbml0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VHlwZSBEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0VHlwZU5hbWUoKSI+PEI+Z2V0VHlwZU5hbWUoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5UeXBlIE5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0VHlwZXMoKSI+PEI+Z2V0VHlwZXMoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPlR5cGVzPC9lbT48L0NPREU+PC9BPicKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpIj48Qj5nZXRVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRfQ2hpbGRyZW4oKSI+PEI+Z2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50X0NoaWxkcmVuKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRDaGlsZHJlbigpIj48Q09ERT48ZW0+Q2hpbGRyZW48L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI2dldFVSSSgpIj48Qj5nZXRVUkkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5OYW1lc3BhY2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXRVc2UoKSI+PEI+Z2V0VXNlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQm9keTwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXRVc2UoKSI+PEI+Z2V0VXNlKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhdWx0PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0VXNlKCkiPjxCPmdldFVzZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNnZXRVc2VyRGF0YShvcmcudzNjLmRvbS5Ob2RlKSI+PEI+Z2V0VXNlckRhdGEoTm9kZSk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFBhcnNlcjwvQT4KLTxERD5SZXR1cm5zIHRoZSB1c2VyIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBub2RlLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI2dldFZlcmIoKSI+PEI+Z2V0VmVyYigpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEJpbmRpbmc8L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VmVyYjwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRXU0RMRWxlbWVudCgpIj48Qj5nZXRXU0RMRWxlbWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+RWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRXU0RMRWxlbWVudF9Eb2N1bWVudGF0aW9uRWxlbWVudCgpIj48Qj5nZXRXU0RMRWxlbWVudF9Eb2N1bWVudGF0aW9uRWxlbWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+PENPREU+PGVtPkRvY3VtZW50YXRpb24gRWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRXU0RMRWxlbWVudF9FbGVtZW50KCkiPjxCPmdldFdTRExFbGVtZW50X0VsZW1lbnQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+PENPREU+PGVtPkVsZW1lbnQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0V1NETEV4Y2VwdGlvbigpIj48Qj5nZXRXU0RMRXhjZXB0aW9uKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8Q09ERT48ZW0+RXhjZXB0aW9uPC9lbT48L0NPREU+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0V1NETEZhY3RvcnkoKSI+PEI+Z2V0V1NETEZhY3RvcnkoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNnZXRXU0RMUGFja2FnZSgpIj48Qj5nZXRXU0RMUGFja2FnZSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+Ci08REQ+UmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCgpIj48Qj5nZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT48L0E+JwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRfU2NoZW1hKCkiPjxCPmdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50X1NjaGVtYSgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0U2NoZW1hKCkiPjxDT0RFPjxlbT5TY2hlbWE8L2VtPjwvQ09ERT48L0E+JwotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNi5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC04Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC03Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtOC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtOC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjI5NjcyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2OSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1ILUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSC1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC03Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTkuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTguaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC04Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotPEEgTkFNRT0iX0hfIj48IS0tIC0tPjwvQT48SDI+Ci08Qj5IPC9CPjwvSDI+Ci08REw+Ci08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9BRERSRVNTIj48Qj5IVFRQX0FERFJFU1M8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkFkZHJlc3M8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSFRUUF9BRERSRVNTIj48Qj5IVFRQX0FERFJFU1M8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QWRkcmVzczwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0FERFJFU1NfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+SFRUUF9BRERSRVNTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0FERFJFU1NfX0VMRU1FTlQiPjxCPkhUVFBfQUREUkVTU19fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0FERFJFU1NfX0VMRU1FTlRfVFlQRSI+PEI+SFRUUF9BRERSRVNTX19FTEVNRU5UX1RZUEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSSI+PEI+SFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNIVFRQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSSI+PEI+SFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTU19fUkVRVUlSRUQiPjxCPkhUVFBfQUREUkVTU19fUkVRVUlSRUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTU19GRUFUVVJFX0NPVU5UIj48Qj5IVFRQX0FERFJFU1NfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5BZGRyZXNzPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HIj48Qj5IVFRQX0JJTkRJTkc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSFRUUF9CSU5ESU5HIj48Qj5IVFRQX0JJTkRJTkc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZzwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0JJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PEI+SFRUUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0JJTkRJTkdfX0VMRU1FTlQiPjxCPkhUVFBfQklORElOR19fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0JJTkRJTkdfX0VMRU1FTlRfVFlQRSI+PEI+SFRUUF9CSU5ESU5HX19FTEVNRU5UX1RZUEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0JJTkRJTkdfX1JFUVVJUkVEIj48Qj5IVFRQX0JJTkRJTkdfX1JFUVVJUkVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX0JJTkRJTkdfX1ZFUkIiPjxCPkhUVFBfQklORElOR19fVkVSQjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5WZXJiPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNIVFRQX0JJTkRJTkdfX1ZFUkIiPjxCPkhUVFBfQklORElOR19fVkVSQjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5WZXJiPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQklORElOR19GRUFUVVJFX0NPVU5UIj48Qj5IVFRQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5CaW5kaW5nPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9PUEVSQVRJT04iPjxCPkhUVFBfT1BFUkFUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5PcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSFRUUF9PUEVSQVRJT04iPjxCPkhUVFBfT1BFUkFUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPk9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5IVFRQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9PUEVSQVRJT05fX0VMRU1FTlQiPjxCPkhUVFBfT1BFUkFUSU9OX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEUiPjxCPkhUVFBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX09QRVJBVElPTl9fTE9DQVRJT05fVVJJIj48Qj5IVFRQX09QRVJBVElPTl9fTE9DQVRJT05fVVJJPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSFRUUF9PUEVSQVRJT05fX0xPQ0FUSU9OX1VSSSI+PEI+SFRUUF9PUEVSQVRJT05fX0xPQ0FUSU9OX1VSSTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9PUEVSQVRJT05fX1JFUVVJUkVEIj48Qj5IVFRQX09QRVJBVElPTl9fUkVRVUlSRUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPjxCPkhUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+T3BlcmF0aW9uPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfRU5DT0RFRCI+PEI+SFRUUF9VUkxfRU5DT0RFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+VXJsIEVuY29kZWQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSFRUUF9VUkxfRU5DT0RFRCI+PEI+SFRUUF9VUkxfRU5DT0RFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5VcmwgRW5jb2RlZDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9FTkNPREVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjxCPkhUVFBfVVJMX0VOQ09ERURfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX0VOQ09ERURfX0VMRU1FTlQiPjxCPkhUVFBfVVJMX0VOQ09ERURfX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfRU5DT0RFRF9fRUxFTUVOVF9UWVBFIj48Qj5IVFRQX1VSTF9FTkNPREVEX19FTEVNRU5UX1RZUEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9FTkNPREVEX19SRVFVSVJFRCI+PEI+SFRUUF9VUkxfRU5DT0RFRF9fUkVRVUlSRUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX0VOQ09ERURfRkVBVFVSRV9DT1VOVCI+PEI+SFRUUF9VUkxfRU5DT0RFRF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlVybCBFbmNvZGVkPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfUkVQTEFDRU1FTlQiPjxCPkhUVFBfVVJMX1JFUExBQ0VNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSFRUUF9VUkxfUkVQTEFDRU1FTlQiPjxCPkhUVFBfVVJMX1JFUExBQ0VNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlVybCBSZXBsYWNlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9SRVBMQUNFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5IVFRQX1VSTF9SRVBMQUNFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfUkVQTEFDRU1FTlRfX0VMRU1FTlQiPjxCPkhUVFBfVVJMX1JFUExBQ0VNRU5UX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX1JFUExBQ0VNRU5UX19FTEVNRU5UX1RZUEUiPjxCPkhUVFBfVVJMX1JFUExBQ0VNRU5UX19FTEVNRU5UX1RZUEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9SRVBMQUNFTUVOVF9fUkVRVUlSRUQiPjxCPkhUVFBfVVJMX1JFUExBQ0VNRU5UX19SRVFVSVJFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfUkVQTEFDRU1FTlRfRkVBVFVSRV9DT1VOVCI+PEI+SFRUUF9VUkxfUkVQTEFDRU1FTlRfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBBZGRyZXNzPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFkZHJlc3M8L2I+PC9lbT4nPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEJpbmRpbmc8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZzwvYj48L2VtPic8RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQRmFjdG9yeTwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9BPjxERD5UaGUgPGI+RmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC48RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBPcGVyYXRpb248L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+JzxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBQYWNrYWdlPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PEREPlRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9CPjwvQT4gLSBJbnRlcmZhY2UgaW4gPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PEREPkRlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQKLSAKLSAgIGVhY2ggY2xhc3MsCi0gICBlYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcywKLSAgIGVhY2ggZW51bSwKLSAgIGFuZCBlYWNoIGRhdGEgdHlwZQotIAotIDwhPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFVybEVuY29kZWQ8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VXJsIEVuY29kZWQ8L2I+PC9lbT4nPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBVcmxSZXBsYWNlbWVudDwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9BPjxERD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgUmVwbGFjZW1lbnQ8L2I+PC9lbT4nPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iaW5kZXgtNy5odG1sIj48Qj5QUkVWIExFVFRFUjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC05Lmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC04Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtOC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtOS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXgtZmlsZXMvaW5kZXgtOS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDI2ZGU2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL2luZGV4LWZpbGVzL2luZGV4LTkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JLUluZGV4Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSS1JbmRleCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC04Lmh0bWwiPjxCPlBSRVYgTEVUVEVSPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPjxCPk5FWFQgTEVUVEVSPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uL2luZGV4Lmh0bWw/aW5kZXgtZmlsZXNpbmRleC05Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtOS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxBIEhSRUY9ImluZGV4LTEuaHRtbCI+QTwvQT4gPEEgSFJFRj0iaW5kZXgtMi5odG1sIj5CPC9BPiA8QSBIUkVGPSJpbmRleC0zLmh0bWwiPkM8L0E+IDxBIEhSRUY9ImluZGV4LTQuaHRtbCI+RDwvQT4gPEEgSFJFRj0iaW5kZXgtNS5odG1sIj5FPC9BPiA8QSBIUkVGPSJpbmRleC02Lmh0bWwiPkY8L0E+IDxBIEhSRUY9ImluZGV4LTcuaHRtbCI+RzwvQT4gPEEgSFJFRj0iaW5kZXgtOC5odG1sIj5IPC9BPiA8QSBIUkVGPSJpbmRleC05Lmh0bWwiPkk8L0E+IDxBIEhSRUY9ImluZGV4LTEwLmh0bWwiPkw8L0E+IDxBIEhSRUY9ImluZGV4LTExLmh0bWwiPk08L0E+IDxBIEhSRUY9ImluZGV4LTEyLmh0bWwiPk48L0E+IDxBIEhSRUY9ImluZGV4LTEzLmh0bWwiPk88L0E+IDxBIEhSRUY9ImluZGV4LTE0Lmh0bWwiPlA8L0E+IDxBIEhSRUY9ImluZGV4LTE1Lmh0bWwiPlE8L0E+IDxBIEhSRUY9ImluZGV4LTE2Lmh0bWwiPlI8L0E+IDxBIEhSRUY9ImluZGV4LTE3Lmh0bWwiPlM8L0E+IDxBIEhSRUY9ImluZGV4LTE4Lmh0bWwiPlQ8L0E+IDxBIEhSRUY9ImluZGV4LTE5Lmh0bWwiPlU8L0E+IDxBIEhSRUY9ImluZGV4LTIwLmh0bWwiPlY8L0E+IDxBIEhSRUY9ImluZGV4LTIxLmh0bWwiPlc8L0E+IDxBIEhSRUY9ImluZGV4LTIyLmh0bWwiPlg8L0E+IDxIUj4KLTxBIE5BTUU9Il9JXyI+PCEtLSAtLT48L0E+PEgyPgotPEI+STwvQj48L0gyPgotPERMPgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUJJTkRJTkciPjxCPklCSU5ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JQmluZGluZzwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lCSU5ESU5HIj48Qj5JQklORElORzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JQmluZGluZzwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lCSU5ESU5HX0ZBVUxUIj48Qj5JQklORElOR19GQVVMVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUJpbmRpbmcgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJQklORElOR19GQVVMVCI+PEI+SUJJTkRJTkdfRkFVTFQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUJpbmRpbmcgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19GQVVMVF9GRUFUVVJFX0NPVU5UIj48Qj5JQklORElOR19GQVVMVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklCaW5kaW5nIEZhdWx0PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19GRUFUVVJFX0NPVU5UIj48Qj5JQklORElOR19GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklCaW5kaW5nPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19JTlBVVCI+PEI+SUJJTkRJTkdfSU5QVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIElucHV0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSUJJTkRJTkdfSU5QVVQiPjxCPklCSU5ESU5HX0lOUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIElucHV0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUJJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVCI+PEI+SUJJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JQmluZGluZyBJbnB1dDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUJJTkRJTkdfT1BFUkFUSU9OIj48Qj5JQklORElOR19PUEVSQVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lCSU5ESU5HX09QRVJBVElPTiI+PEI+SUJJTkRJTkdfT1BFUkFUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lCSU5ESU5HX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj48Qj5JQklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JQmluZGluZyBPcGVyYXRpb248L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lCSU5ESU5HX09VVFBVVCI+PEI+SUJJTkRJTkdfT1VUUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JQmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJQklORElOR19PVVRQVVQiPjxCPklCSU5ESU5HX09VVFBVVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JQmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVCI+PEI+SUJJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUJpbmRpbmcgT3V0cHV0PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJREVGSU5JVElPTiI+PEI+SURFRklOSVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklEZWZpbml0aW9uPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSURFRklOSVRJT04iPjxCPklERUZJTklUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklEZWZpbml0aW9uPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSURFRklOSVRJT05fRkVBVFVSRV9DT1VOVCI+PEI+SURFRklOSVRJT05fRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JRGVmaW5pdGlvbjwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUVYVEVOU0lCSUxJVFlfRUxFTUVOVCI+PEI+SUVYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lFWFRFTlNJQklMSVRZX0VMRU1FTlQiPjxCPklFWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lFWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+PEI+SUVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lFWFRFTlNJT05fUkVHSVNUUlkiPjxCPklFWFRFTlNJT05fUkVHSVNUUlk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklFeHRlbnNpb24gUmVnaXN0cnk8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJRVhURU5TSU9OX1JFR0lTVFJZIj48Qj5JRVhURU5TSU9OX1JFR0lTVFJZPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklFeHRlbnNpb24gUmVnaXN0cnk8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJRVhURU5TSU9OX1JFR0lTVFJZX0ZFQVRVUkVfQ09VTlQiPjxCPklFWFRFTlNJT05fUkVHSVNUUllfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JRXh0ZW5zaW9uIFJlZ2lzdHJ5PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJRkFVTFQiPjxCPklGQVVMVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUZhdWx0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSUZBVUxUIj48Qj5JRkFVTFQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUZhdWx0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUZBVUxUX0ZFQVRVUkVfQ09VTlQiPjxCPklGQVVMVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklGYXVsdDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX0FERFJFU1MiPjxCPklIVFRQX0FERFJFU1M8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklIVFRQIEFkZHJlc3M8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSUhUVFBfQUREUkVTUyI+PEI+SUhUVFBfQUREUkVTUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBBZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX0FERFJFU1NfRkVBVFVSRV9DT1VOVCI+PEI+SUhUVFBfQUREUkVTU19GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklIVFRQIEFkZHJlc3M8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNJSFRUUF9CSU5ESU5HIj48Qj5JSFRUUF9CSU5ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sI0lIVFRQX0JJTkRJTkciPjxCPklIVFRQX0JJTkRJTkc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUhUVFAgQmluZGluZzwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNJSFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPjxCPklIVFRQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JSFRUUCBCaW5kaW5nPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfT1BFUkFUSU9OIj48Qj5JSFRUUF9PUEVSQVRJT048L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklIVFRQIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJSFRUUF9PUEVSQVRJT04iPjxCPklIVFRQX09QRVJBVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPjxCPklIVFRQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklIVFRQIE9wZXJhdGlvbjwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX1VSTF9FTkNPREVEIj48Qj5JSFRUUF9VUkxfRU5DT0RFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUhUVFAgVXJsIEVuY29kZWQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSUhUVFBfVVJMX0VOQ09ERUQiPjxCPklIVFRQX1VSTF9FTkNPREVEPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklIVFRQIFVybCBFbmNvZGVkPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQiPjxCPklIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUhUVFAgVXJsIEVuY29kZWQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNJSFRUUF9VUkxfUkVQTEFDRU1FTlQiPjxCPklIVFRQX1VSTF9SRVBMQUNFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUhUVFAgVXJsIFJlcGxhY2VtZW50PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sI0lIVFRQX1VSTF9SRVBMQUNFTUVOVCI+PEI+SUhUVFBfVVJMX1JFUExBQ0VNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklIVFRQIFVybCBSZXBsYWNlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNJSFRUUF9VUkxfUkVQTEFDRU1FTlRfRkVBVFVSRV9DT1VOVCI+PEI+SUhUVFBfVVJMX1JFUExBQ0VNRU5UX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUhUVFAgVXJsIFJlcGxhY2VtZW50PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJSU1QT1JUIj48Qj5JSU1QT1JUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSW1wb3J0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSUlNUE9SVCI+PEI+SUlNUE9SVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSW1wb3J0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUlNUE9SVF9GRUFUVVJFX0NPVU5UIj48Qj5JSU1QT1JUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUltcG9ydDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUlOUFVUIj48Qj5JSU5QVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklJbnB1dDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lJTlBVVCI+PEI+SUlOUFVUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklJbnB1dDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lJTlBVVF9GRUFUVVJFX0NPVU5UIj48Qj5JSU5QVVRfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JSW5wdXQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lJVEVSQVRPUiI+PEI+SUlURVJBVE9SPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSXRlcmF0b3I8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJSVRFUkFUT1IiPjxCPklJVEVSQVRPUjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSXRlcmF0b3I8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJSVRFUkFUT1JfRkVBVFVSRV9DT1VOVCI+PEI+SUlURVJBVE9SX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUl0ZXJhdG9yPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTElTVCI+PEI+SUxJU1Q8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklMaXN0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSUxJU1QiPjxCPklMSVNUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklMaXN0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUxJU1RfRkVBVFVSRV9DT1VOVCI+PEI+SUxJU1RfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JTGlzdDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1BUCI+PEI+SU1BUDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1hcDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lNQVAiPjxCPklNQVA8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SU1hcDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNQVBfRkVBVFVSRV9DT1VOVCI+PEI+SU1BUF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklNYXA8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNRVNTQUdFIj48Qj5JTUVTU0FHRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1lc3NhZ2U8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTUVTU0FHRSI+PEI+SU1FU1NBR0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SU1lc3NhZ2U8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTUVTU0FHRV9GRUFUVVJFX0NPVU5UIj48Qj5JTUVTU0FHRV9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklNZXNzYWdlPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfQ09OVEVOVCI+PEI+SU1JTUVfQ09OVEVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1JTUUgQ29udGVudDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTUlNRV9DT05URU5UIj48Qj5JTUlNRV9DT05URU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklNSU1FIENvbnRlbnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfQ09OVEVOVF9GRUFUVVJFX0NPVU5UIj48Qj5JTUlNRV9DT05URU5UX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1JTUUgQ29udGVudDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI0lNSU1FX01JTUVfWE1MIj48Qj5JTUlNRV9NSU1FX1hNTDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1JTUUgTWltZSBYbWw8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSU1JTUVfTUlNRV9YTUwiPjxCPklNSU1FX01JTUVfWE1MPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklNSU1FIE1pbWUgWG1sPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI0lNSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQiPjxCPklNSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1JTUUgTWltZSBYbWw8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNJTUlNRV9NVUxUSVBBUlRfUkVMQVRFRCI+PEI+SU1JTUVfTVVMVElQQVJUX1JFTEFURUQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklNSU1FIE11bHRpcGFydCBSZWxhdGVkPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI0lNSU1FX01VTFRJUEFSVF9SRUxBVEVEIj48Qj5JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JTUlNRSBNdWx0aXBhcnQgUmVsYXRlZDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNJTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UIj48Qj5JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklNSU1FIE11bHRpcGFydCBSZWxhdGVkPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfUEFSVCI+PEI+SU1JTUVfUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1JTUUgUGFydDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTUlNRV9QQVJUIj48Qj5JTUlNRV9QQVJUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklNSU1FIFBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfUEFSVF9GRUFUVVJFX0NPVU5UIj48Qj5JTUlNRV9QQVJUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1JTUUgUGFydDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5JbXBvcnQ8L0I+PC9BPiAtIEludGVyZmFjZSBpbiA8QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PEREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkltcG9ydDwvYj48L2VtPicuPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0lNUE9SVCI+PEI+SU1QT1JUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImltcG9ydCI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUIj48Qj5JTVBPUlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkltcG9ydDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lNUE9SVCI+PEI+SU1QT1JUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkltcG9ydDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNUE9SVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5JTVBPUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19FREVGSU5JVElPTiI+PEI+SU1QT1JUX19FREVGSU5JVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRGVmaW5pdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTVBPUlRfX0VERUZJTklUSU9OIj48Qj5JTVBPUlRfX0VERUZJTklUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PEI+SU1QT1JUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNUE9SVF9fRUxFTUVOVCI+PEI+SU1QT1JUX19FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19FU0NIRU1BIj48Qj5JTVBPUlRfX0VTQ0hFTUE8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVNjaGVtYTwvYj48L2VtPicgcmVmZXJlbmNlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTVBPUlRfX0VTQ0hFTUEiPjxCPklNUE9SVF9fRVNDSEVNQTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FU2NoZW1hPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19MT0NBVElPTl9VUkkiPjxCPklNUE9SVF9fTE9DQVRJT05fVVJJPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTVBPUlRfX0xPQ0FUSU9OX1VSSSI+PEI+SU1QT1JUX19MT0NBVElPTl9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19OQU1FU1BBQ0VfVVJJIj48Qj5JTVBPUlRfX05BTUVTUEFDRV9VUkk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTVBPUlRfX05BTUVTUEFDRV9VUkkiPjxCPklNUE9SVF9fTkFNRVNQQUNFX1VSSTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0lNUE9SVF9FTEVNRU5UX1RBRyI+PEI+SU1QT1JUX0VMRU1FTlRfVEFHPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImltcG9ydCI8L2NvZGU+LgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX0ZFQVRVUkVfQ09VTlQiPjxCPklNUE9SVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkltcG9ydDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0lORk9STUFUSU9OIj48Qj5JTkZPUk1BVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+Ci08REQ+VGhpcyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIHByb2JsZW0gaXMgb25seSBwb3RlbnRpYWwgYW5kIHRoYXQgdGhlCi0gZGVmaW5pdGlvbiBpcyB2ZXJ5IGxpa2VseSBzdWl0YWJsZSBmb3IgdXNlLgotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0lORk9STUFUSU9OX0xJVEVSQUwiPjxCPklORk9STUFUSU9OX0xJVEVSQUw8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPgotPEREPlRoZSAnPGVtPjxiPkluZm9ybWF0aW9uPC9iPjwvZW0+JyBsaXRlcmFsIG9iamVjdC4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5JbnB1dDwvQj48L0E+IC0gSW50ZXJmYWNlIGluIDxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48REQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SW5wdXQ8L2I+PC9lbT4nLjxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNJTlBVVCI+PEI+SU5QVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iaW5wdXQiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lOUFVUIj48Qj5JTlBVVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SW5wdXQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTlBVVCI+PEI+SU5QVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SW5wdXQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48Qj5JTlBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjxCPklOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lOUFVUX19FTEVNRU5UIj48Qj5JTlBVVF9fRUxFTUVOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lOUFVUX19FTUVTU0FHRSI+PEI+SU5QVVRfX0VNRVNTQUdFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lOUFVUX19OQU1FIj48Qj5JTlBVVF9fTkFNRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNJTlBVVF9FTEVNRU5UX1RBRyI+PEI+SU5QVVRfRUxFTUVOVF9UQUc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iaW5wdXQiPC9jb2RlPi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lOUFVUX0ZFQVRVUkVfQ09VTlQiPjxCPklOUFVUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SW5wdXQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwjSU5TVEFOQ0UiPjxCPklOU1RBTkNFPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbjwvQT4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwbHVnaW4uCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJT1BFUkFUSU9OIj48Qj5JT1BFUkFUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSU9QRVJBVElPTiI+PEI+SU9QRVJBVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU9QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj48Qj5JT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU9wZXJhdGlvbjwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU9VVFBVVCI+PEI+SU9VVFBVVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU91dHB1dDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lPVVRQVVQiPjxCPklPVVRQVVQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SU91dHB1dDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lPVVRQVVRfRkVBVFVSRV9DT1VOVCI+PEI+SU9VVFBVVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklPdXRwdXQ8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lQQVJUIj48Qj5JUEFSVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJUEFSVCI+PEI+SVBBUlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJUEFSVF9GRUFUVVJFX0NPVU5UIj48Qj5JUEFSVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklQYXJ0PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJUE9SVCI+PEI+SVBPUlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklQb3J0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSVBPUlQiPjxCPklQT1JUPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklQb3J0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVBPUlRfRkVBVFVSRV9DT1VOVCI+PEI+SVBPUlRfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JUG9ydDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVBPUlRfVFlQRSI+PEI+SVBPUlRfVFlQRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVBvcnQgVHlwZTwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lQT1JUX1RZUEUiPjxCPklQT1JUX1RZUEU8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVBvcnQgVHlwZTwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lQT1JUX1RZUEVfRkVBVFVSRV9DT1VOVCI+PEI+SVBPUlRfVFlQRV9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklQb3J0IFR5cGU8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lTRVJWSUNFIj48Qj5JU0VSVklDRTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVNlcnZpY2U8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJU0VSVklDRSI+PEI+SVNFUlZJQ0U8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVNlcnZpY2U8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJU0VSVklDRV9GRUFUVVJFX0NPVU5UIj48Qj5JU0VSVklDRV9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTZXJ2aWNlPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjaXNNYXRjaGluZ05hbWVzcGFjZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PEI+aXNNYXRjaGluZ05hbWVzcGFjZShTdHJpbmcsIFN0cmluZyk8L0I+PC9BPiAtIAotU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT4KLTxERD5SZXR1cm5zIHRydWUgaWYgbmFtZXNwYWNlMSBlcXVhbHMgdG8gbmFtZXNwYWNlMi4KLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9BRERSRVNTIj48Qj5JU09BUF9BRERSRVNTPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBBZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI0lTT0FQX0FERFJFU1MiPjxCPklTT0FQX0FERFJFU1M8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgQWRkcmVzczwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQiPjxCPklTT0FQX0FERFJFU1NfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU09BUCBBZGRyZXNzPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfQklORElORyI+PEI+SVNPQVBfQklORElORzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgQmluZGluZzwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJU09BUF9CSU5ESU5HIj48Qj5JU09BUF9CSU5ESU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIEJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfQklORElOR19GRUFUVVJFX0NPVU5UIj48Qj5JU09BUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVNPQVAgQmluZGluZzwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0JPRFkiPjxCPklTT0FQX0JPRFk8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIEJvZHk8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSVNPQVBfQk9EWSI+PEI+SVNPQVBfQk9EWTwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBCb2R5PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0JPRFlfRkVBVFVSRV9DT1VOVCI+PEI+SVNPQVBfQk9EWV9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEJvZHk8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9GQVVMVCI+PEI+SVNPQVBfRkFVTFQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI0lTT0FQX0ZBVUxUIj48Qj5JU09BUF9GQVVMVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9GQVVMVF9GRUFUVVJFX0NPVU5UIj48Qj5JU09BUF9GQVVMVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEZhdWx0PC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfSEVBREVSIj48Qj5JU09BUF9IRUFERVI8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIEhlYWRlcjwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJU09BUF9IRUFERVIiPjxCPklTT0FQX0hFQURFUjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBIZWFkZXI8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfSEVBREVSX0ZBVUxUIj48Qj5JU09BUF9IRUFERVJfRkFVTFQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIEhlYWRlciBGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJU09BUF9IRUFERVJfRkFVTFQiPjxCPklTT0FQX0hFQURFUl9GQVVMVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBIZWFkZXIgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPjxCPklTT0FQX0hFQURFUl9GQVVMVF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEhlYWRlciBGYXVsdDwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0hFQURFUl9GRUFUVVJFX0NPVU5UIj48Qj5JU09BUF9IRUFERVJfRkVBVFVSRV9DT1VOVDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU09BUCBIZWFkZXI8L2VtPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9PUEVSQVRJT04iPjxCPklTT0FQX09QRVJBVElPTjwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI0lTT0FQX09QRVJBVElPTiI+PEI+SVNPQVBfT1BFUkFUSU9OPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2UuTGl0ZXJhbHM8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+PEI+SVNPQVBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVNPQVAgT3BlcmF0aW9uPC9lbT4nIGNsYXNzCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPjxCPmlzUmVxdWlyZWQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU1RSSU5HIj48Qj5JU1RSSU5HPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5JU3RyaW5nPC9lbT4nIGRhdGEgdHlwZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI0lTVFJJTkciPjxCPklTVFJJTkc8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+SVN0cmluZzwvZW0+JyBkYXRhIHR5cGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjaXNVbmRlZmluZWQoKSI+PEI+aXNVbmRlZmluZWQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNpc1VuZGVmaW5lZCgpIj48Qj5pc1VuZGVmaW5lZCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjaXNVbmRlZmluZWQoKSI+PEI+aXNVbmRlZmluZWQoKTwvQj48L0E+IC0gCi1NZXRob2QgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxCPmlzVW5kZWZpbmVkKCk8L0I+PC9BPiAtIAotTWV0aG9kIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0VHlwZTwvQT4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZQotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNpc1VuZGVmaW5lZCgpIj48Qj5pc1VuZGVmaW5lZCgpPC9CPjwvQT4gLSAKLU1ldGhvZCBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5TZXJ2aWNlPC9BPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjaXNXU0RMTmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj48Qj5pc1dTRExOYW1lc3BhY2UoU3RyaW5nKTwvQj48L0E+IC0gCi1TdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMQ29uc3RhbnRzPC9BPgotPEREPlJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGlzIHRoZSBXU0RMIG5hbWVzcGFjZSBvciBub3QuCi08RFQ+PEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJVFlQRVMiPjxCPklUWVBFUzwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVR5cGVzPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSVRZUEVTIj48Qj5JVFlQRVM8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVR5cGVzPC9lbT48L0NPREU+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVRZUEVTX0ZFQVRVUkVfQ09VTlQiPjxCPklUWVBFU19GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklUeXBlczwvZW0+JyBjbGFzcwotPERUPjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVVSTCI+PEI+SVVSTDwvQj48L0E+IC0gCi1TdGF0aWMgdmFyaWFibGUgaW4gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVVSTDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lVUkwiPjxCPklVUkw8L0I+PC9BPiAtIAotU3RhdGljIHZhcmlhYmxlIGluIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZS5MaXRlcmFsczwvQT4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVVSTDwvZW0+PC9DT0RFPicgY2xhc3MKLTxEVD48QSBIUkVGPSIuLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lVUkxfRkVBVFVSRV9DT1VOVCI+PEI+SVVSTF9GRUFUVVJFX0NPVU5UPC9CPjwvQT4gLSAKLVN0YXRpYyB2YXJpYWJsZSBpbiBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklVUkw8L2VtPicgY2xhc3MKLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vb3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9ImluZGV4LTguaHRtbCI+PEI+UFJFViBMRVRURVI8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+PEI+TkVYVCBMRVRURVI8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vaW5kZXguaHRtbD9pbmRleC1maWxlc2luZGV4LTkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJpbmRleC05Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEEgSFJFRj0iaW5kZXgtMS5odG1sIj5BPC9BPiA8QSBIUkVGPSJpbmRleC0yLmh0bWwiPkI8L0E+IDxBIEhSRUY9ImluZGV4LTMuaHRtbCI+QzwvQT4gPEEgSFJFRj0iaW5kZXgtNC5odG1sIj5EPC9BPiA8QSBIUkVGPSJpbmRleC01Lmh0bWwiPkU8L0E+IDxBIEhSRUY9ImluZGV4LTYuaHRtbCI+RjwvQT4gPEEgSFJFRj0iaW5kZXgtNy5odG1sIj5HPC9BPiA8QSBIUkVGPSJpbmRleC04Lmh0bWwiPkg8L0E+IDxBIEhSRUY9ImluZGV4LTkuaHRtbCI+STwvQT4gPEEgSFJFRj0iaW5kZXgtMTAuaHRtbCI+TDwvQT4gPEEgSFJFRj0iaW5kZXgtMTEuaHRtbCI+TTwvQT4gPEEgSFJFRj0iaW5kZXgtMTIuaHRtbCI+TjwvQT4gPEEgSFJFRj0iaW5kZXgtMTMuaHRtbCI+TzwvQT4gPEEgSFJFRj0iaW5kZXgtMTQuaHRtbCI+UDwvQT4gPEEgSFJFRj0iaW5kZXgtMTUuaHRtbCI+UTwvQT4gPEEgSFJFRj0iaW5kZXgtMTYuaHRtbCI+UjwvQT4gPEEgSFJFRj0iaW5kZXgtMTcuaHRtbCI+UzwvQT4gPEEgSFJFRj0iaW5kZXgtMTguaHRtbCI+VDwvQT4gPEEgSFJFRj0iaW5kZXgtMTkuaHRtbCI+VTwvQT4gPEEgSFJFRj0iaW5kZXgtMjAuaHRtbCI+VjwvQT4gPEEgSFJFRj0iaW5kZXgtMjEuaHRtbCI+VzwvQT4gPEEgSFJFRj0iaW5kZXgtMjIuaHRtbCI+WDwvQT4gPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvaW5kZXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEwYjU3OS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9pbmRleC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgRnJhbWVzZXQvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvZnJhbWVzZXQuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4LS0+Ci08VElUTEU+Ci1HZW5lcmF0ZWQgRG9jdW1lbnRhdGlvbiAoVW50aXRsZWQpCi08L1RJVExFPgotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIHRhcmdldFBhZ2UgPSAiIiArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7Ci0gICAgaWYgKHRhcmdldFBhZ2UgIT0gIiIgJiYgdGFyZ2V0UGFnZSAhPSAidW5kZWZpbmVkIikKLSAgICAgICB0YXJnZXRQYWdlID0gdGFyZ2V0UGFnZS5zdWJzdHJpbmcoMSk7Ci0gICAgaWYgKHRhcmdldFBhZ2UuaW5kZXhPZigiOiIpICE9IC0xKQotICAgICAgICB0YXJnZXRQYWdlID0gInVuZGVmaW5lZCI7Ci0gICAgZnVuY3Rpb24gbG9hZEZyYW1lcygpIHsKLSAgICAgICAgaWYgKHRhcmdldFBhZ2UgIT0gIiIgJiYgdGFyZ2V0UGFnZSAhPSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgICB0b3AuY2xhc3NGcmFtZS5sb2NhdGlvbiA9IHRvcC50YXJnZXRQYWdlOwotICAgIH0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLTwvSEVBRD4KLTxGUkFNRVNFVCBjb2xzPSIyMCUsODAlIiB0aXRsZT0iIiBvbkxvYWQ9InRvcC5sb2FkRnJhbWVzKCkiPgotPEZSQU1FU0VUIHJvd3M9IjMwJSw3MCUiIHRpdGxlPSIiIG9uTG9hZD0idG9wLmxvYWRGcmFtZXMoKSI+Ci08RlJBTUUgc3JjPSJvdmVydmlldy1mcmFtZS5odG1sIiBuYW1lPSJwYWNrYWdlTGlzdEZyYW1lIiB0aXRsZT0iQWxsIFBhY2thZ2VzIj4KLTxGUkFNRSBzcmM9ImFsbGNsYXNzZXMtZnJhbWUuaHRtbCIgbmFtZT0icGFja2FnZUZyYW1lIiB0aXRsZT0iQWxsIGNsYXNzZXMgYW5kIGludGVyZmFjZXMgKGV4Y2VwdCBub24tc3RhdGljIG5lc3RlZCB0eXBlcykiPgotPC9GUkFNRVNFVD4KLTxGUkFNRSBzcmM9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCIgbmFtZT0iY2xhc3NGcmFtZSIgdGl0bGU9IlBhY2thZ2UsIGNsYXNzIGFuZCBpbnRlcmZhY2UgZGVzY3JpcHRpb25zIiBzY3JvbGxpbmc9InllcyI+Ci08Tk9GUkFNRVM+Ci08SDI+Ci1GcmFtZSBBbGVydDwvSDI+Ci0KLTxQPgotVGhpcyBkb2N1bWVudCBpcyBkZXNpZ25lZCB0byBiZSB2aWV3ZWQgdXNpbmcgdGhlIGZyYW1lcyBmZWF0dXJlLiBJZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSwgeW91IGFyZSB1c2luZyBhIG5vbi1mcmFtZS1jYXBhYmxlIHdlYiBjbGllbnQuCi08QlI+Ci1MaW5rIHRvPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj5Ob24tZnJhbWUgdmVyc2lvbi48L0E+Ci08L05PRlJBTUVTPgotPC9GUkFNRVNFVD4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA0YThlMS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NDUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUwIEVEVCAyMDA4IC0tPgotPFRJVExFPgotQmluZGluZwotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmcgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJCaW5kaW5nIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvQmluZGluZy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBDTEFTUyZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgQmluZGluZzwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD5qYXZheC53c2RsLkJpbmRpbmcsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5CaW5kaW5nPC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5CaW5kaW5nPC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZzwvYj48L2VtPicuCi08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2luY2U6PC9CPjwvRFQ+Ci0gIDxERD4xLjAKLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQotIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgYmluZGluZyBlbGVtZW50LiBBIGJpbmRpbmcgZGVmaW5lcyBtZXNzYWdlIGZvcm1hdCBhbmQgcHJvdG9jb2wgZGV0YWlscyBmb3Igb3BlcmF0aW9ucyBhbmQgbWVzc2FnZXMgZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgcG9ydFR5cGUuIFRoZXJlIG1heSBiZSBhbnkgbnVtYmVyIG9mIGJpbmRpbmdzIGZvciBhIGdpdmVuIHBvcnRUeXBlLgotIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLQotIDxwPgotIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSA8dWw+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldFFOYW1lKCkiPjxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldEVQb3J0VHlwZSgpIj48Q09ERT48ZW0+RVBvcnQgVHlwZTwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRFQmluZGluZ09wZXJhdGlvbnMoKSI+PENPREU+PGVtPkVCaW5kaW5nIE9wZXJhdGlvbnM8L2VtPjwvQ09ERT48L0E+PC9saT4KLSA8L3VsPgotIDwvcD48L0REPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEJpbmRpbmcoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRFQmluZGluZ09wZXJhdGlvbnMoKSI+Z2V0RUJpbmRpbmdPcGVyYXRpb25zPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUJpbmRpbmcgT3BlcmF0aW9uczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBvcnRUeXBlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjZ2V0RVBvcnRUeXBlKCkiPmdldEVQb3J0VHlwZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQb3J0IFR5cGU8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRRTmFtZSgpIj5nZXRRTmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjaXNVbmRlZmluZWQoKSI+aXNVbmRlZmluZWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNzZXRFUG9ydFR5cGUob3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGUpIj5zZXRFUG9ydFR5cGU8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0VHlwZTwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldEVQb3J0VHlwZSgpIj48Q09ERT48ZW0+RVBvcnQgVHlwZTwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNzZXRRTmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0UU5hbWU8L0E+PC9CPihqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRRTmFtZSgpIj48Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjc2V0VW5kZWZpbmVkKGJvb2xlYW4pIj5zZXRVbmRlZmluZWQ8L0E+PC9CPihib29sZWFuJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuQmluZGluZyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuQmluZGluZzwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmFkZEJpbmRpbmdPcGVyYXRpb24sIGFkZEV4dGVuc2liaWxpdHlFbGVtZW50LCBnZXRCaW5kaW5nT3BlcmF0aW9uLCBnZXRCaW5kaW5nT3BlcmF0aW9ucywgZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQsIGdldEV4dGVuc2liaWxpdHlFbGVtZW50cywgZ2V0UG9ydFR5cGUsIHNldERvY3VtZW50YXRpb25FbGVtZW50LCBzZXRQb3J0VHlwZTwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldFFOYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFFOYW1lPC9IMz4KLTxQUkU+Ci1qYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIDxCPmdldFFOYW1lPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldFFOYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5CaW5kaW5nPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+UU5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNzZXRRTmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+PENPREU+c2V0UU5hbWUoUU5hbWUpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nX1FOYW1lKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEJpbmRpbmdfUU5hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRRTmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0UU5hbWU8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0UU5hbWU8L0I+KGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRRTmFtZSgpIj48Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXRRTmFtZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuQmluZGluZzwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+UU5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRRTmFtZSgpIj48Q09ERT5nZXRRTmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImlzVW5kZWZpbmVkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWlzVW5kZWZpbmVkPC9IMz4KLTxQUkU+Ci1ib29sZWFuIDxCPmlzVW5kZWZpbmVkPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+aXNVbmRlZmluZWQ8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLkJpbmRpbmc8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNzZXRVbmRlZmluZWQoYm9vbGVhbikiPjxDT0RFPnNldFVuZGVmaW5lZChib29sZWFuKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ19VbmRlZmluZWQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0QmluZGluZ19VbmRlZmluZWQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRVbmRlZmluZWQoYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFVuZGVmaW5lZDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRVbmRlZmluZWQ8L0I+KGJvb2xlYW4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0VW5kZWZpbmVkPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5CaW5kaW5nPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT5pc1VuZGVmaW5lZCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVQb3J0VHlwZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFUG9ydFR5cGU8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBvcnRUeXBlPC9BPiA8Qj5nZXRFUG9ydFR5cGU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FUG9ydCBUeXBlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FUG9ydCBUeXBlPC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjc2V0RVBvcnRUeXBlKG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlKSI+PENPREU+c2V0RVBvcnRUeXBlKFBvcnRUeXBlKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ19FUG9ydFR5cGUoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0QmluZGluZ19FUG9ydFR5cGUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFUG9ydFR5cGUob3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGUpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFUG9ydFR5cGU8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RVBvcnRUeXBlPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0VHlwZTwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRFUG9ydFR5cGUoKSI+PENPREU+PGVtPkVQb3J0IFR5cGU8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FUG9ydCBUeXBlPC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjZ2V0RVBvcnRUeXBlKCkiPjxDT0RFPmdldEVQb3J0VHlwZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVCaW5kaW5nT3BlcmF0aW9ucygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFQmluZGluZ09wZXJhdGlvbnM8L0gzPgotPFBSRT4KLUVMaXN0IDxCPmdldEVCaW5kaW5nT3BlcmF0aW9uczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nIE9wZXJhdGlvbnM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+QmluZGluZ09wZXJhdGlvbjwvQ09ERT48L0E+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUJpbmRpbmcgT3BlcmF0aW9uczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FQmluZGluZyBPcGVyYXRpb25zPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ19FQmluZGluZ09wZXJhdGlvbnMoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0QmluZGluZ19FQmluZGluZ09wZXJhdGlvbnMoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0JpbmRpbmcuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYgQ0xBU1MmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3NGFmZi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQwNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTAgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1CaW5kaW5nRmF1bHQKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJCaW5kaW5nRmF1bHQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9CaW5kaW5nRmF1bHQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgQmluZGluZ0ZhdWx0PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuQmluZGluZ0ZhdWx0LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+QmluZGluZ0ZhdWx0PC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQ8L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIEZhdWx0PC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMAotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCi0gPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+Ci0gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBmYXVsdCBlbGVtZW50IHdpdGhpbiBhIG9wZXJhdGlvbiB3aXRoaW4gYSBiaW5kaW5nLiBBIGZhdWx0IGVsZW1lbnQgd2l0aGluIGFuIG9wZXJhdGlvbiB3aXRoaW4gYSBiaW5kaW5nIHNwZWNpZmllcyBiaW5kaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgZmF1bHQgd2l0aCB0aGUgc2FtZSBuYW1lLiAKLSA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+Ci0KLSA8cD4KLSBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gPHVsPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+PC9saT4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXRFRmF1bHQoKSI+PENPREU+PGVtPkVGYXVsdDwvZW0+PC9DT0RFPjwvQT48L2xpPgotIDwvdWw+Ci0gPC9wPjwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdGYXVsdCgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRCaW5kaW5nRmF1bHQoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkZhdWx0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXRFRmF1bHQoKSI+Z2V0RUZhdWx0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUZhdWx0PC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YXgud3NkbC5GYXVsdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXRGYXVsdCgpIj5nZXRGYXVsdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgbWV0aG9kIGlzIHNhbWUgYXMgZ2V0RUZhdWx0KCkgYW5kIGNvbXBhdGlibGUgd2l0aCB0aGUgSldTREwgQVBJLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI2dldE5hbWUoKSI+Z2V0TmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI3NldEVGYXVsdChvcmcuZWNsaXBzZS53c3Qud3NkbC5GYXVsdCkiPnNldEVGYXVsdDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkZhdWx0PC9BPiZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXRFRmF1bHQoKSI+PENPREU+PGVtPkVGYXVsdDwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI3NldEZhdWx0KGphdmF4LndzZGwuRmF1bHQpIj5zZXRGYXVsdDwvQT48L0I+KGphdmF4LndzZGwuRmF1bHQmbmJzcDtmYXVsdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgbWV0aG9kIGlzIHNhbWUgYXMgc2V0RUZhdWx0KEZhdWx0KSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TmFtZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2FkZEV4dGVuc2liaWxpdHlFbGVtZW50KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkiPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLkJpbmRpbmdGYXVsdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuQmluZGluZ0ZhdWx0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGdldERvY3VtZW50YXRpb25FbGVtZW50LCBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMsIHNldERvY3VtZW50YXRpb25FbGVtZW50PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0TmFtZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXROYW1lPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldE5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldE5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLkJpbmRpbmdGYXVsdDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldE5hbWUoU3RyaW5nKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ0ZhdWx0X05hbWUoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0QmluZGluZ0ZhdWx0X05hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXROYW1lPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldE5hbWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXROYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5CaW5kaW5nRmF1bHQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI2dldE5hbWUoKSI+PENPREU+Z2V0TmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVGYXVsdCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFRmF1bHQ8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkZhdWx0PC9BPiA8Qj5nZXRFRmF1bHQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRmF1bHQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVGYXVsdDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RUZhdWx0PC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNzZXRFRmF1bHQob3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQpIj48Q09ERT5zZXRFRmF1bHQoRmF1bHQpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nRmF1bHRfRUZhdWx0KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEJpbmRpbmdGYXVsdF9FRmF1bHQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFRmF1bHQob3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFRmF1bHQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RUZhdWx0PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI2dldEVGYXVsdCgpIj48Q09ERT48ZW0+RUZhdWx0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RUZhdWx0PC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXRFRmF1bHQoKSI+PENPREU+Z2V0RUZhdWx0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RmF1bHQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RmF1bHQ8L0gzPgotPFBSRT4KLWphdmF4LndzZGwuRmF1bHQgPEI+Z2V0RmF1bHQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIFRoaXMgbWV0aG9kIGlzIHNhbWUgYXMgZ2V0RUZhdWx0KCkgYW5kIGNvbXBhdGlibGUgd2l0aCB0aGUgSldTREwgQVBJLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRmF1bHQ8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI2dldEVGYXVsdCgpIj48Q09ERT5nZXRFRmF1bHQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRGYXVsdChqYXZheC53c2RsLkZhdWx0KSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RmF1bHQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RmF1bHQ8L0I+KGphdmF4LndzZGwuRmF1bHQmbmJzcDtmYXVsdCk8L1BSRT4KLTxETD4KLTxERD48IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIFRoaXMgbWV0aG9kIGlzIHNhbWUgYXMgc2V0RUZhdWx0KEZhdWx0KSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmZhdWx0PC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RUZhdWx0PC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNzZXRFRmF1bHQob3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQpIj48Q09ERT5zZXRFRmF1bHQoRmF1bHQpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvQmluZGluZ0ZhdWx0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJCaW5kaW5nRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThjOTZjYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQwNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTEgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1CaW5kaW5nSW5wdXQKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJCaW5kaW5nSW5wdXQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9CaW5kaW5nSW5wdXQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdJbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgQmluZGluZ0lucHV0PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuQmluZGluZ0lucHV0LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+QmluZGluZ0lucHV0PC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ8L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIElucHV0PC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMAotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCi0gPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+Ci0gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgV1NETCBpbnB1dCBlbGVtZW50IHdpdGhpbiBhIG9wZXJhdGlvbiB3aXRoaW4gYSBiaW5kaW5nLiBBbiBpbnB1dCBlbGVtZW50IHdpdGhpbiBhbiBvcGVyYXRpb24gd2l0aGluIGEgYmluZGluZyBzcGVjaWZpZXMgYmluZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIGlucHV0IG9mIHRoZSBvcGVyYXRpb24uIAotIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLQotIDxwPgotIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSA8dWw+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI2dldEVJbnB1dCgpIj48Q09ERT48ZW0+RUlucHV0PC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gPC91bD4KLSA8L3A+PC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ0lucHV0KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEJpbmRpbmdJbnB1dCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW5wdXQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI2dldEVJbnB1dCgpIj5nZXRFSW5wdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZheC53c2RsLklucHV0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI2dldElucHV0KCkiPmdldElucHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBtZXRob2QgaXMgc2FtZSBhcyBnZXRFSW5wdXQoKSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0TmFtZSgpIj5nZXROYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjc2V0RUlucHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0KSI+c2V0RUlucHV0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW5wdXQ8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI2dldEVJbnB1dCgpIj48Q09ERT48ZW0+RUlucHV0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjc2V0SW5wdXQoamF2YXgud3NkbC5JbnB1dCkiPnNldElucHV0PC9BPjwvQj4oamF2YXgud3NkbC5JbnB1dCZuYnNwO2lucHV0KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBtZXRob2QgaXMgc2FtZSBhcyBzZXRFSW5wdXQoSW5wdXQpIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIEpXU0RMIEFQSS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj5zZXROYW1lPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuQmluZGluZ0lucHV0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudCwgZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQsIGdldEV4dGVuc2liaWxpdHlFbGVtZW50cywgc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXROYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE5hbWU8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0TmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0TmFtZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuQmluZGluZ0lucHV0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+c2V0TmFtZShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nSW5wdXRfTmFtZSgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRCaW5kaW5nSW5wdXRfTmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldE5hbWU8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0TmFtZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldE5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLkJpbmRpbmdJbnB1dDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT5nZXROYW1lKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RUlucHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVJbnB1dDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW5wdXQ8L0E+IDxCPmdldEVJbnB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVJbnB1dDwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUlucHV0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FSW5wdXQ8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI3NldEVJbnB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dCkiPjxDT0RFPnNldEVJbnB1dChJbnB1dCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdJbnB1dF9FSW5wdXQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0QmluZGluZ0lucHV0X0VJbnB1dCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEVJbnB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dCkiPjwhLS0gLS0+PC9BPjxIMz4KLXNldEVJbnB1dDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFSW5wdXQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPklucHV0PC9BPiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0RUlucHV0KCkiPjxDT0RFPjxlbT5FSW5wdXQ8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FSW5wdXQ8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI2dldEVJbnB1dCgpIj48Q09ERT5nZXRFSW5wdXQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJbnB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJbnB1dDwvSDM+Ci08UFJFPgotamF2YXgud3NkbC5JbnB1dCA8Qj5nZXRJbnB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPjwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gVGhpcyBtZXRob2QgaXMgc2FtZSBhcyBnZXRFSW5wdXQoKSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVJbnB1dDwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0RUlucHV0KCkiPjxDT0RFPmdldEVJbnB1dCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldElucHV0KGphdmF4LndzZGwuSW5wdXQpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRJbnB1dDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRJbnB1dDwvQj4oamF2YXgud3NkbC5JbnB1dCZuYnNwO2lucHV0KTwvUFJFPgotPERMPgotPEREPjwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gVGhpcyBtZXRob2QgaXMgc2FtZSBhcyBzZXRFSW5wdXQoSW5wdXQpIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIEpXU0RMIEFQSS4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aW5wdXQ8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FSW5wdXQ8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI3NldEVJbnB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dCkiPjxDT0RFPnNldEVJbnB1dChJbnB1dCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9CaW5kaW5nSW5wdXQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdJbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZjU2OGQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTA0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUJpbmRpbmdPcGVyYXRpb24KLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iQmluZGluZ09wZXJhdGlvbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0JpbmRpbmdPcGVyYXRpb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJCaW5kaW5nT3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBCaW5kaW5nT3BlcmF0aW9uPC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZhLmlvLlNlcmlhbGl6YWJsZSwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPkJpbmRpbmdPcGVyYXRpb248L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb248L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIE9wZXJhdGlvbjwvYj48L2VtPicuCi08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2luY2U6PC9CPjwvRFQ+Ci0gIDxERD4xLjAKLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQotIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPgotIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIFdTREwgb3BlcmF0aW9uIGVsZW1lbnQgd2l0aGluIGEgYmluZGluZy4gQW4gb3BlcmF0aW9uIGVsZW1lbnQgd2l0aGluIGEgYmluZGluZyBzcGVjaWZpZXMgYmluZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgd2l0aGluIHRoZSBiaW5kaW5nJ3MgcG9ydFR5cGUuIAotIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLQotIDxwPgotIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSA8dWw+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+PC9saT4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RU9wZXJhdGlvbigpIj48Q09ERT48ZW0+RU9wZXJhdGlvbjwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0lucHV0KCkiPjxDT0RFPjxlbT5FQmluZGluZyBJbnB1dDwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ091dHB1dCgpIj48Q09ERT48ZW0+RUJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nRmF1bHRzKCkiPjxDT0RFPjxlbT5FQmluZGluZyBGYXVsdHM8L2VtPjwvQ09ERT48L0E+PC9saT4KLSA8L3VsPgotIDwvcD48L0REPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEJpbmRpbmdPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0ZhdWx0cygpIj5nZXRFQmluZGluZ0ZhdWx0czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nSW5wdXQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0lucHV0KCkiPmdldEVCaW5kaW5nSW5wdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZyBJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ091dHB1dDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nT3V0cHV0KCkiPmdldEVCaW5kaW5nT3V0cHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUJpbmRpbmcgT3V0cHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVPcGVyYXRpb24oKSI+Z2V0RU9wZXJhdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVPcGVyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXROYW1lKCkiPmdldE5hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjc2V0RUJpbmRpbmdJbnB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQpIj5zZXRFQmluZGluZ0lucHV0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdJbnB1dDwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nSW5wdXQoKSI+PENPREU+PGVtPkVCaW5kaW5nIElucHV0PC9lbT48L0NPREU+PC9BPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI3NldEVCaW5kaW5nT3V0cHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQpIj5zZXRFQmluZGluZ091dHB1dDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ091dHB1dDwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nT3V0cHV0KCkiPjxDT0RFPjxlbT5FQmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT48L0E+JyBjb250YWlubWVudCByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjc2V0RU9wZXJhdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb24pIj5zZXRFT3BlcmF0aW9uPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVPcGVyYXRpb24oKSI+PENPREU+PGVtPkVPcGVyYXRpb248L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TmFtZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNhZGRFeHRlbnNpYmlsaXR5RWxlbWVudChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIj5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNlbGVtZW50Q2hhbmdlZChvcmcudzNjLmRvbS5FbGVtZW50KSI+ZWxlbWVudENoYW5nZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPmdldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPmdldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVuY2xvc2luZ0RlZmluaXRpb24oKSI+Z2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj5zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KCkiPnVwZGF0ZUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPnVwZGF0ZUVsZW1lbnQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uPC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+YWRkQmluZGluZ0ZhdWx0LCBhZGRFeHRlbnNpYmlsaXR5RWxlbWVudCwgZ2V0QmluZGluZ0ZhdWx0LCBnZXRCaW5kaW5nRmF1bHRzLCBnZXRCaW5kaW5nSW5wdXQsIGdldEJpbmRpbmdPdXRwdXQsIGdldERvY3VtZW50YXRpb25FbGVtZW50LCBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMsIGdldE9wZXJhdGlvbiwgc2V0QmluZGluZ0lucHV0LCBzZXRCaW5kaW5nT3V0cHV0LCBzZXREb2N1bWVudGF0aW9uRWxlbWVudCwgc2V0T3BlcmF0aW9uPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0TmFtZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXROYW1lPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldE5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldE5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb248L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjc2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+c2V0TmFtZShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uX05hbWUoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0QmluZGluZ09wZXJhdGlvbl9OYW1lKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0TmFtZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXROYW1lPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldE5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb248L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXROYW1lKCkiPjxDT0RFPmdldE5hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFT3BlcmF0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVPcGVyYXRpb248L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+IDxCPmdldEVPcGVyYXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FT3BlcmF0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FT3BlcmF0aW9uPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FT3BlcmF0aW9uPC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjc2V0RU9wZXJhdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb24pIj48Q09ERT5zZXRFT3BlcmF0aW9uKE9wZXJhdGlvbik8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPcGVyYXRpb25fRU9wZXJhdGlvbigpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRCaW5kaW5nT3BlcmF0aW9uX0VPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFT3BlcmF0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbikiPjwhLS0gLS0+PC9BPjxIMz4KLXNldEVPcGVyYXRpb248L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RU9wZXJhdGlvbjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFT3BlcmF0aW9uKCkiPjxDT0RFPjxlbT5FT3BlcmF0aW9uPC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RU9wZXJhdGlvbjwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVPcGVyYXRpb24oKSI+PENPREU+Z2V0RU9wZXJhdGlvbigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVCaW5kaW5nSW5wdXQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RUJpbmRpbmdJbnB1dDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdJbnB1dDwvQT4gPEI+Z2V0RUJpbmRpbmdJbnB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nIElucHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FQmluZGluZyBJbnB1dDwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RUJpbmRpbmcgSW5wdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNzZXRFQmluZGluZ0lucHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dCkiPjxDT0RFPnNldEVCaW5kaW5nSW5wdXQoQmluZGluZ0lucHV0KTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0lucHV0KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdJbnB1dCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEVCaW5kaW5nSW5wdXQob3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0KSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RUJpbmRpbmdJbnB1dDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFQmluZGluZ0lucHV0PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0lucHV0PC9BPiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nSW5wdXQoKSI+PENPREU+PGVtPkVCaW5kaW5nIElucHV0PC9lbT48L0NPREU+PC9BPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RUJpbmRpbmcgSW5wdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0lucHV0KCkiPjxDT0RFPmdldEVCaW5kaW5nSW5wdXQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFQmluZGluZ091dHB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFQmluZGluZ091dHB1dDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3V0cHV0PC9BPiA8Qj5nZXRFQmluZGluZ091dHB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nIE91dHB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUJpbmRpbmcgT3V0cHV0PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FQmluZGluZyBPdXRwdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNzZXRFQmluZGluZ091dHB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0KSI+PENPREU+c2V0RUJpbmRpbmdPdXRwdXQoQmluZGluZ091dHB1dCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdPdXRwdXQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ091dHB1dCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEVCaW5kaW5nT3V0cHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFQmluZGluZ091dHB1dDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFQmluZGluZ091dHB1dDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3V0cHV0PC9BPiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nT3V0cHV0KCkiPjxDT0RFPjxlbT5FQmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT48L0E+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FQmluZGluZyBPdXRwdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ091dHB1dCgpIj48Q09ERT5nZXRFQmluZGluZ091dHB1dCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVCaW5kaW5nRmF1bHRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVCaW5kaW5nRmF1bHRzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFQmluZGluZ0ZhdWx0czwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPkJpbmRpbmdGYXVsdDwvQ09ERT48L0E+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUJpbmRpbmcgRmF1bHRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVCaW5kaW5nIEZhdWx0czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdGYXVsdHMoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0ZhdWx0cygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvQmluZGluZ09wZXJhdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDU2MDEzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM5MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTEgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1CaW5kaW5nT3V0cHV0Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ091dHB1dCBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkJpbmRpbmdPdXRwdXQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9CaW5kaW5nT3V0cHV0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdPdXRwdXQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIEJpbmRpbmdPdXRwdXQ8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+amF2YXgud3NkbC5CaW5kaW5nT3V0cHV0LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+QmluZGluZ091dHB1dDwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuQmluZGluZ091dHB1dDwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgT3V0cHV0PC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPdXRwdXQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0QmluZGluZ091dHB1dCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk91dHB1dDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI2dldEVPdXRwdXQoKSI+Z2V0RU91dHB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXROYW1lKCkiPmdldE5hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YXgud3NkbC5PdXRwdXQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI2dldE91dHB1dCgpIj5nZXRPdXRwdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBpcyBzYW1lIGFzIGdldEVPdXRwdXQoKSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI3NldEVPdXRwdXQob3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0KSI+c2V0RU91dHB1dDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PdXRwdXQ8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXRFT3V0cHV0KCkiPjxDT0RFPjxlbT5FT3V0cHV0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPnNldE5hbWU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI3NldE91dHB1dChqYXZheC53c2RsLk91dHB1dCkiPnNldE91dHB1dDwvQT48L0I+KGphdmF4LndzZGwuT3V0cHV0Jm5ic3A7b3V0cHV0KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBtZXRob2QgaXMgc2FtZSBhcyBzZXRFT3V0cHV0KE91dHB1dCkgYW5kIGNvbXBhdGlibGUgd2l0aCB0aGUgSldTREwgQVBJLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2FkZEV4dGVuc2liaWxpdHlFbGVtZW50KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkiPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLkJpbmRpbmdPdXRwdXQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudCwgZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQsIGdldEV4dGVuc2liaWxpdHlFbGVtZW50cywgc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXROYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE5hbWU8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0TmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0TmFtZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuQmluZGluZ091dHB1dDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXROYW1lKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPdXRwdXRfTmFtZSgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRCaW5kaW5nT3V0cHV0X05hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXROYW1lPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldE5hbWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0TmFtZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuQmluZGluZ091dHB1dDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI2dldE5hbWUoKSI+PENPREU+Z2V0TmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVPdXRwdXQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RU91dHB1dDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk91dHB1dDwvQT4gPEI+Z2V0RU91dHB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVPdXRwdXQ8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVPdXRwdXQ8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNzZXRFT3V0cHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dCkiPjxDT0RFPnNldEVPdXRwdXQoT3V0cHV0KTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ091dHB1dF9FT3V0cHV0KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEJpbmRpbmdPdXRwdXRfRU91dHB1dCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEVPdXRwdXQob3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0KSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RU91dHB1dDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFT3V0cHV0PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3V0cHV0PC9BPiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI2dldEVPdXRwdXQoKSI+PENPREU+PGVtPkVPdXRwdXQ8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FT3V0cHV0PC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwjZ2V0RU91dHB1dCgpIj48Q09ERT5nZXRFT3V0cHV0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0T3V0cHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE91dHB1dDwvSDM+Ci08UFJFPgotamF2YXgud3NkbC5PdXRwdXQgPEI+Z2V0T3V0cHV0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBUaGlzIG1ldGhvZCBpcyBzYW1lIGFzIGdldEVPdXRwdXQoKSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBKV1NETCBBUEkuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVPdXRwdXQ8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXRFT3V0cHV0KCkiPjxDT0RFPmdldEVPdXRwdXQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRPdXRwdXQoamF2YXgud3NkbC5PdXRwdXQpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRPdXRwdXQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0T3V0cHV0PC9CPihqYXZheC53c2RsLk91dHB1dCZuYnNwO291dHB1dCk8L1BSRT4KLTxETD4KLTxERD48IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIFRoaXMgbWV0aG9kIGlzIHNhbWUgYXMgc2V0RU91dHB1dChPdXRwdXQpIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIEpXU0RMIEFQSS4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+b3V0cHV0PC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RU91dHB1dDwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI3NldEVPdXRwdXQob3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0KSI+PENPREU+c2V0RU91dHB1dChPdXRwdXQpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvQmluZGluZ091dHB1dC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJCaW5kaW5nT3V0cHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRlOTBmZi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NTcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUxIEVEVCAyMDA4IC0tPgotPFRJVExFPgotRGVmaW5pdGlvbgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24gaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJEZWZpbml0aW9uIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvRGVmaW5pdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRGVmaW5pdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgRGVmaW5pdGlvbjwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD5qYXZheC53c2RsLkRlZmluaXRpb24sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5EZWZpbml0aW9uPC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5EZWZpbml0aW9uPC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGVmaW5pdGlvbjwvYj48L2VtPicuCi08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2luY2U6PC9CPjwvRFQ+Ci0gIDxERD4xLjA8L0REPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldERlZmluaXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO29yZy53M2MuZG9tLkRvY3VtZW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXREb2N1bWVudCgpIj5nZXREb2N1bWVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBXM0MgRE9NIERvY3VtZW50IGJ1aWx0IGZyb20gdGhlIGlucHV0IFdTREwgZG9jdW1lbnQuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFQmluZGluZ3MoKSI+Z2V0RUJpbmRpbmdzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUJpbmRpbmdzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUxpc3Q8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVJbXBvcnRzKCkiPmdldEVJbXBvcnRzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUltcG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFTGlzdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RU1lc3NhZ2VzKCkiPmdldEVNZXNzYWdlczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVNZXNzYWdlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFTmFtZXNwYWNlcygpIj5nZXRFTmFtZXNwYWNlczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVOYW1lc3BhY2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RW5jb2RpbmcoKSI+Z2V0RW5jb2Rpbmc8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FbmNvZGluZzwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFUG9ydFR5cGVzKCkiPmdldEVQb3J0VHlwZXM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFU2VydmljZXMoKSI+Z2V0RVNlcnZpY2VzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVNlcnZpY2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+VHlwZXM8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFVHlwZXMoKSI+Z2V0RVR5cGVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVR5cGVzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0TG9jYXRpb24oKSI+Z2V0TG9jYXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Mb2NhdGlvbjwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldFFOYW1lKCkiPmdldFFOYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRUYXJnZXROYW1lc3BhY2UoKSI+Z2V0VGFyZ2V0TmFtZXNwYWNlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VGFyZ2V0IE5hbWVzcGFjZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI3NldERvY3VtZW50KG9yZy53M2MuZG9tLkRvY3VtZW50KSI+c2V0RG9jdW1lbnQ8L0E+PC9CPihvcmcudzNjLmRvbS5Eb2N1bWVudCZuYnNwO2RvY3VtZW50KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyBhIFczQyBET00gRG9jdW1lbnQgdG8gYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHVwIGEgRE9NIEVsZW1lbnQgdHJlZSBmb3IgdGhlIFdTREwgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI3NldEVuY29kaW5nKGphdmEubGFuZy5TdHJpbmcpIj5zZXRFbmNvZGluZzwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVuY29kaW5nKCkiPjxDT0RFPjxlbT5FbmNvZGluZzwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNzZXRFVHlwZXMob3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXMpIj5zZXRFVHlwZXM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5UeXBlczwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVUeXBlcygpIj48Q09ERT48ZW0+RVR5cGVzPC9lbT48L0NPREU+PC9BPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI3NldExvY2F0aW9uKGphdmEubGFuZy5TdHJpbmcpIj5zZXRMb2NhdGlvbjwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldExvY2F0aW9uKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbjwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNzZXRRTmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0UU5hbWU8L0E+PC9CPihqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRRTmFtZSgpIj48Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjc2V0VGFyZ2V0TmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj5zZXRUYXJnZXROYW1lc3BhY2U8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRUYXJnZXROYW1lc3BhY2UoKSI+PENPREU+PGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNhZGRFeHRlbnNpYmlsaXR5RWxlbWVudChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIj5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNlbGVtZW50Q2hhbmdlZChvcmcudzNjLmRvbS5FbGVtZW50KSI+ZWxlbWVudENoYW5nZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPmdldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPmdldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVuY2xvc2luZ0RlZmluaXRpb24oKSI+Z2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj5zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KCkiPnVwZGF0ZUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPnVwZGF0ZUVsZW1lbnQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5EZWZpbml0aW9uIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5EZWZpbml0aW9uPC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+YWRkQmluZGluZywgYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGFkZEltcG9ydCwgYWRkTWVzc2FnZSwgYWRkTmFtZXNwYWNlLCBhZGRQb3J0VHlwZSwgYWRkU2VydmljZSwgY3JlYXRlQmluZGluZywgY3JlYXRlQmluZGluZ0ZhdWx0LCBjcmVhdGVCaW5kaW5nSW5wdXQsIGNyZWF0ZUJpbmRpbmdPcGVyYXRpb24sIGNyZWF0ZUJpbmRpbmdPdXRwdXQsIGNyZWF0ZUZhdWx0LCBjcmVhdGVJbXBvcnQsIGNyZWF0ZUlucHV0LCBjcmVhdGVNZXNzYWdlLCBjcmVhdGVPcGVyYXRpb24sIGNyZWF0ZU91dHB1dCwgY3JlYXRlUGFydCwgY3JlYXRlUG9ydCwgY3JlYXRlUG9ydFR5cGUsIGNyZWF0ZVNlcnZpY2UsIGNyZWF0ZVR5cGVzLCBnZXRCaW5kaW5nLCBnZXRCaW5kaW5ncywgZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQsIGdldERvY3VtZW50QmFzZVVSSSwgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzLCBnZXRFeHRlbnNpb25SZWdpc3RyeSwgZ2V0SW1wb3J0cywgZ2V0SW1wb3J0cywgZ2V0TWVzc2FnZSwgZ2V0TWVzc2FnZXMsIGdldE5hbWVzcGFjZSwgZ2V0TmFtZXNwYWNlcywgZ2V0UG9ydFR5cGUsIGdldFBvcnRUeXBlcywgZ2V0UHJlZml4LCBnZXRTZXJ2aWNlLCBnZXRTZXJ2aWNlcywgZ2V0VHlwZXMsIHJlbW92ZUJpbmRpbmcsIHJlbW92ZU1lc3NhZ2UsIHJlbW92ZVBvcnRUeXBlLCByZW1vdmVTZXJ2aWNlLCBzZXREb2N1bWVudGF0aW9uRWxlbWVudCwgc2V0RG9jdW1lbnRCYXNlVVJJLCBzZXRFeHRlbnNpb25SZWdpc3RyeSwgc2V0VHlwZXM8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRUYXJnZXROYW1lc3BhY2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0VGFyZ2V0TmFtZXNwYWNlPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldFRhcmdldE5hbWVzcGFjZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlRhcmdldCBOYW1lc3BhY2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0VGFyZ2V0TmFtZXNwYWNlPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5EZWZpbml0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+VGFyZ2V0IE5hbWVzcGFjZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI3NldFRhcmdldE5hbWVzcGFjZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+c2V0VGFyZ2V0TmFtZXNwYWNlKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fVGFyZ2V0TmFtZXNwYWNlKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldERlZmluaXRpb25fVGFyZ2V0TmFtZXNwYWNlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0VGFyZ2V0TmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRUYXJnZXROYW1lc3BhY2U8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0VGFyZ2V0TmFtZXNwYWNlPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0VGFyZ2V0TmFtZXNwYWNlKCkiPjxDT0RFPjxlbT5UYXJnZXQgTmFtZXNwYWNlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0VGFyZ2V0TmFtZXNwYWNlPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5EZWZpbml0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5UYXJnZXQgTmFtZXNwYWNlPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0VGFyZ2V0TmFtZXNwYWNlKCkiPjxDT0RFPmdldFRhcmdldE5hbWVzcGFjZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldExvY2F0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldExvY2F0aW9uPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldExvY2F0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TG9jYXRpb248L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkxvY2F0aW9uPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbjwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI3NldExvY2F0aW9uKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXRMb2NhdGlvbihTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uX0xvY2F0aW9uKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldERlZmluaXRpb25fTG9jYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRMb2NhdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0TG9jYXRpb248L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0TG9jYXRpb248L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRMb2NhdGlvbigpIj48Q09ERT48ZW0+TG9jYXRpb248L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbjwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldExvY2F0aW9uKCkiPjxDT0RFPmdldExvY2F0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UU5hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UU5hbWU8L0gzPgotPFBSRT4KLWphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUgPEI+Z2V0UU5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UU5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0UU5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLkRlZmluaXRpb248L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI3NldFFOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48Q09ERT5zZXRRTmFtZShRTmFtZSk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fUU5hbWUoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0RGVmaW5pdGlvbl9RTmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFFOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRRTmFtZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRRTmFtZTwvQj4oamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldFFOYW1lKCkiPjxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldFFOYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5EZWZpbml0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldFFOYW1lKCkiPjxDT0RFPmdldFFOYW1lKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RW5jb2RpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RW5jb2Rpbmc8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0RW5jb2Rpbmc8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FbmNvZGluZzwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RW5jb2Rpbmc8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVuY29kaW5nPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjc2V0RW5jb2RpbmcoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldEVuY29kaW5nKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRW5jb2RpbmcoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0RGVmaW5pdGlvbl9FbmNvZGluZygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEVuY29kaW5nKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFbmNvZGluZzwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFbmNvZGluZzwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVuY29kaW5nKCkiPjxDT0RFPjxlbT5FbmNvZGluZzwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVuY29kaW5nPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RW5jb2RpbmcoKSI+PENPREU+Z2V0RW5jb2RpbmcoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFTWVzc2FnZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RU1lc3NhZ2VzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFTWVzc2FnZXM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FTWVzc2FnZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+TWVzc2FnZTwvQ09ERT48L0E+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RU1lc3NhZ2VzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVNZXNzYWdlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRU1lc3NhZ2VzKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldERlZmluaXRpb25fRU1lc3NhZ2VzKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RVBvcnRUeXBlcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFUG9ydFR5cGVzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFUG9ydFR5cGVzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPlBvcnRUeXBlPC9DT0RFPjwvQT4uCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FUG9ydCBUeXBlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FUG9ydCBUeXBlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRVBvcnRUeXBlcygpIj48Q09ERT5XU0RMUGFja2FnZS5nZXREZWZpbml0aW9uX0VQb3J0VHlwZXMoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFQmluZGluZ3MoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RUJpbmRpbmdzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFQmluZGluZ3M8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZ3M8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+QmluZGluZzwvQ09ERT48L0E+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUJpbmRpbmdzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVCaW5kaW5nczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRUJpbmRpbmdzKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldERlZmluaXRpb25fRUJpbmRpbmdzKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RVNlcnZpY2VzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVTZXJ2aWNlczwvSDM+Ci08UFJFPgotRUxpc3QgPEI+Z2V0RVNlcnZpY2VzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVNlcnZpY2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPlNlcnZpY2U8L0NPREU+PC9BPi4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVTZXJ2aWNlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FU2VydmljZXM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uX0VTZXJ2aWNlcygpIj48Q09ERT5XU0RMUGFja2FnZS5nZXREZWZpbml0aW9uX0VTZXJ2aWNlcygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVOYW1lc3BhY2VzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVOYW1lc3BhY2VzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFTmFtZXNwYWNlczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVOYW1lc3BhY2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+TmFtZXNwYWNlPC9DT0RFPjwvQT4uCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FTmFtZXNwYWNlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FTmFtZXNwYWNlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRU5hbWVzcGFjZXMoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0RGVmaW5pdGlvbl9FTmFtZXNwYWNlcygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVUeXBlcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFVHlwZXM8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPiA8Qj5nZXRFVHlwZXM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVUeXBlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RVR5cGVzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjc2V0RVR5cGVzKG9yZy5lY2xpcHNlLndzdC53c2RsLlR5cGVzKSI+PENPREU+c2V0RVR5cGVzKFR5cGVzKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbl9FVHlwZXMoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0RGVmaW5pdGlvbl9FVHlwZXMoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFVHlwZXMob3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXMpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFVHlwZXM8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RVR5cGVzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5UeXBlczwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFVHlwZXMoKSI+PENPREU+PGVtPkVUeXBlczwvZW0+PC9DT0RFPjwvQT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVUeXBlczwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVUeXBlcygpIj48Q09ERT5nZXRFVHlwZXMoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFSW1wb3J0cygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFSW1wb3J0czwvSDM+Ci08UFJFPgotRUxpc3QgPEI+Z2V0RUltcG9ydHM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FSW1wb3J0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPkltcG9ydDwvQ09ERT48L0E+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUltcG9ydHM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RUltcG9ydHM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uX0VJbXBvcnRzKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldERlZmluaXRpb25fRUltcG9ydHMoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXREb2N1bWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREb2N1bWVudDwvSDM+Ci08UFJFPgotb3JnLnczYy5kb20uRG9jdW1lbnQgPEI+Z2V0RG9jdW1lbnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIFJldHVybnMgYSBXM0MgRE9NIERvY3VtZW50IGJ1aWx0IGZyb20gdGhlIGlucHV0IFdTREwgZG9jdW1lbnQuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VzNDIERPTSBEb2N1bWVudC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldERvY3VtZW50KG9yZy53M2MuZG9tLkRvY3VtZW50KSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RG9jdW1lbnQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RG9jdW1lbnQ8L0I+KG9yZy53M2MuZG9tLkRvY3VtZW50Jm5ic3A7ZG9jdW1lbnQpPC9QUkU+Ci08REw+Ci08REQ+PCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBTZXRzIGEgVzNDIERPTSBEb2N1bWVudCB0byBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgdXAgYSBET00gRWxlbWVudCB0cmVlIGZvciB0aGUgV1NETCBtb2RlbC4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+ZG9jdW1lbnQ8L0NPREU+IC0gVzNDIERPTSBEb2N1bWVudC48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvRGVmaW5pdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRGVmaW5pdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFhYTRmNC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUV4dGVuc2liaWxpdHlFbGVtZW50Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJFeHRlbnNpYmlsaXR5RWxlbWVudCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIEV4dGVuc2liaWxpdHlFbGVtZW50PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9ERD4KLTwvREw+Ci08REw+Ci08RFQ+PEI+QWxsIEtub3duIFN1YmludGVyZmFjZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQWRkcmVzczwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEJpbmRpbmc8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUE9wZXJhdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFVybEVuY29kZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsUmVwbGFjZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVDb250ZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FTWltZVhtbDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYXJ0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQWRkcmVzczwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJpbmRpbmc8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCb2R5PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhdWx0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckZhdWx0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBPcGVyYXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEV4dGVuc2liaWxpdHlFbGVtZW50KCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+Z2V0RWxlbWVudFR5cGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0RWxlbWVudFR5cGUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPnNldEVsZW1lbnRUeXBlPC9BPjwvQj4oamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldEVsZW1lbnRUeXBlKCkiPjxDT0RFPjxlbT5FbGVtZW50IFR5cGU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0I+KGJvb2xlYW4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPjxDT0RFPjxlbT5SZXF1aXJlZDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXRSZXF1aXJlZCwgc2V0UmVxdWlyZWQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJpc1JlcXVpcmVkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWlzUmVxdWlyZWQ8L0gzPgotPFBSRT4KLWJvb2xlYW4gPEI+aXNSZXF1aXJlZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5SZXF1aXJlZDwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+UmVxdWlyZWQ8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0UmVxdWlyZWQoYm9vbGVhbikiPjxDT0RFPnNldFJlcXVpcmVkKGJvb2xlYW4pPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9SZXF1aXJlZCgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9SZXF1aXJlZCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFJlcXVpcmVkKGJvb2xlYW4pIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRSZXF1aXJlZDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRSZXF1aXJlZDwvQj4oYm9vbGVhbiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPjxDT0RFPjxlbT5SZXF1aXJlZDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlJlcXVpcmVkPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2lzUmVxdWlyZWQoKSI+PENPREU+aXNSZXF1aXJlZCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVsZW1lbnRUeXBlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVsZW1lbnRUeXBlPC9IMz4KLTxQUkU+Ci1qYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIDxCPmdldEVsZW1lbnRUeXBlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FbGVtZW50IFR5cGU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0RWxlbWVudFR5cGU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FbGVtZW50IFR5cGU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0RWxlbWVudFR5cGUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPjxDT0RFPnNldEVsZW1lbnRUeXBlKFFOYW1lKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfRWxlbWVudFR5cGUoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfRWxlbWVudFR5cGUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RWxlbWVudFR5cGU8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RWxlbWVudFR5cGU8L0I+KGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+PENPREU+PGVtPkVsZW1lbnQgVHlwZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldEVsZW1lbnRUeXBlPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FbGVtZW50IFR5cGU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+PENPREU+Z2V0RWxlbWVudFR5cGUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNzhmNmEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTEgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1FeHRlbnNpYmxlRWxlbWVudAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50IGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iRXh0ZW5zaWJsZUVsZW1lbnQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9FeHRlbnNpYmxlRWxlbWVudC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJFeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgRXh0ZW5zaWJsZUVsZW1lbnQ8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9ERD4KLTwvREw+Ci08REw+Ci08RFQ+PEI+QWxsIEtub3duIFN1YmludGVyZmFjZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdGYXVsdDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nSW5wdXQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPcGVyYXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbXBvcnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3V0cHV0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlNlcnZpY2U8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5UeXBlczwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RXh0ZW5zaWJsZSBFbGVtZW50PC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEV4dGVuc2libGVFbGVtZW50KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEV4dGVuc2libGVFbGVtZW50KCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPihqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQmbmJzcDtleHRFbGVtZW50KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QWRkcyBhbiBFeHRlbnNpYmlsaXR5RWxlbWVudCB0byB0aGUgJzxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUxpc3Q8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgbWV0aG9kIGlzIHNhbWUgYXMgZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIEpXU0RMIEFQSS48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNlbGVtZW50Q2hhbmdlZChvcmcudzNjLmRvbS5FbGVtZW50KSI+ZWxlbWVudENoYW5nZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPmdldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPmdldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVuY2xvc2luZ0RlZmluaXRpb24oKSI+Z2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj5zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KCkiPnVwZGF0ZUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPnVwZGF0ZUVsZW1lbnQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPkV4dGVuc2liaWxpdHlFbGVtZW50PC9DT0RFPjwvQT4uCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEV4dGVuc2libGVFbGVtZW50X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0RXh0ZW5zaWJsZUVsZW1lbnRfRUV4dGVuc2liaWxpdHlFbGVtZW50cygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0gzPgotPFBSRT4KLWphdmEudXRpbC5MaXN0IDxCPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQj4oKTwvUFJFPgotPERMPgotPEREPjwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gVGhpcyBtZXRob2QgaXMgc2FtZSBhcyBnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkgYW5kIGNvbXBhdGlibGUgd2l0aCB0aGUgSldTREwgQVBJLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRmF1bHQ8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48Q09ERT5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+PCEtLSAtLT48L0E+PEgzPgotYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCZuYnNwO2V4dEVsZW1lbnQpPC9QUkU+Ci08REw+Ci08REQ+PCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBZGRzIGFuIEV4dGVuc2liaWxpdHlFbGVtZW50IHRvIHRoZSAnPGVtPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5leHRFbGVtZW50PC9DT0RFPiAtIEFuIEV4dGVuc2liaWxpdHlFbGVtZW50IHRvIGJlIGFkZGVkLjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9FeHRlbnNpYmxlRWxlbWVudC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJFeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE0N2VmNi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUZhdWx0Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJGYXVsdCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0ZhdWx0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIEZhdWx0PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5GYXVsdCwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPiwgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5GYXVsdDwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+LCBqYXZheC53c2RsLkZhdWx0PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RmF1bHQ8L2I+PC9lbT4nLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RmF1bHQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0RmF1bHQoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj5nZXRFTWVzc2FnZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXROYW1lKCkiPmdldE5hbWU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwjc2V0RU1lc3NhZ2Uob3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSkiPnNldEVNZXNzYWdlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPnNldE5hbWU8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2FkZEV4dGVuc2liaWxpdHlFbGVtZW50KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkiPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLkZhdWx0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5GYXVsdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldERvY3VtZW50YXRpb25FbGVtZW50LCBnZXRNZXNzYWdlLCBnZXROYW1lLCBzZXREb2N1bWVudGF0aW9uRWxlbWVudCwgc2V0TWVzc2FnZSwgc2V0TmFtZTwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0ZhdWx0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUwMTQxYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUwNyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTEgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JbXBvcnQKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJbXBvcnQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JbXBvcnQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkltcG9ydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSW1wb3J0PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5JbXBvcnQsIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+SW1wb3J0PC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5JbXBvcnQ8L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5JbXBvcnQ8L2I+PC9lbT4nLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SW1wb3J0KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEltcG9ydCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFRGVmaW5pdGlvbigpIj5nZXRFRGVmaW5pdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7b3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFU2NoZW1hKCkiPmdldEVTY2hlbWE8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FU2NoZW1hPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj5nZXRMb2NhdGlvblVSSTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPmdldE5hbWVzcGFjZVVSSTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldFNjaGVtYSgpIj5nZXRTY2hlbWE8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIG1ldGhvZCBpcyBzYW1lIGFzIGdldEVTY2hlbWEoKS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNzZXRFRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RURlZmluaXRpb248L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldEVEZWZpbml0aW9uKCkiPjxDT0RFPjxlbT5FRGVmaW5pdGlvbjwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI3NldEVTY2hlbWEob3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYSkiPnNldEVTY2hlbWE8L0E+PC9CPihvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldEVTY2hlbWEoKSI+PENPREU+PGVtPkVTY2hlbWE8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNzZXRMb2NhdGlvblVSSShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TG9jYXRpb25VUkk8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNzZXROYW1lc3BhY2VVUkkoamF2YS5sYW5nLlN0cmluZykiPnNldE5hbWVzcGFjZVVSSTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPjxlbT5OYW1lc3BhY2UgVVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjc2V0U2NoZW1hKG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWEpIj5zZXRTY2hlbWE8L0E+PC9CPihvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hJm5ic3A7c2NoZW1hKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBtZXRob2QgaXMgc2FtZSBhcyBzZXRFU2NoZW1hKFhTRFNjaGVtYSkuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuSW1wb3J0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5JbXBvcnQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXREZWZpbml0aW9uLCBnZXREb2N1bWVudGF0aW9uRWxlbWVudCwgc2V0RGVmaW5pdGlvbiwgc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXROYW1lc3BhY2VVUkkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TmFtZXNwYWNlVVJJPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldE5hbWVzcGFjZVVSSTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0TmFtZXNwYWNlVVJJPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5JbXBvcnQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lc3BhY2UgVVJJPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNzZXROYW1lc3BhY2VVUkkoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldE5hbWVzcGFjZVVSSShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJbXBvcnRfTmFtZXNwYWNlVVJJKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEltcG9ydF9OYW1lc3BhY2VVUkkoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXROYW1lc3BhY2VVUkkoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldE5hbWVzcGFjZVVSSTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXROYW1lc3BhY2VVUkk8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT48ZW0+TmFtZXNwYWNlIFVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldE5hbWVzcGFjZVVSSTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuSW1wb3J0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lc3BhY2UgVVJJPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+Z2V0TmFtZXNwYWNlVVJJKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TG9jYXRpb25VUkkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TG9jYXRpb25VUkk8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0TG9jYXRpb25VUkk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXRMb2NhdGlvblVSSTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuSW1wb3J0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+TG9jYXRpb24gVVJJPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNzZXRMb2NhdGlvblVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+c2V0TG9jYXRpb25VUkkoU3RyaW5nKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SW1wb3J0X0xvY2F0aW9uVVJJKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEltcG9ydF9Mb2NhdGlvblVSSSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldExvY2F0aW9uVVJJKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRMb2NhdGlvblVSSTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRMb2NhdGlvblVSSTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+PGVtPkxvY2F0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldExvY2F0aW9uVVJJPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5JbXBvcnQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+Z2V0TG9jYXRpb25VUkkoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFRGVmaW5pdGlvbigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFRGVmaW5pdGlvbjwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPiA8Qj5nZXRFRGVmaW5pdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FRGVmaW5pdGlvbjwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RURlZmluaXRpb248L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI3NldEVEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj48Q09ERT5zZXRFRGVmaW5pdGlvbihEZWZpbml0aW9uKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SW1wb3J0X0VEZWZpbml0aW9uKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEltcG9ydF9FRGVmaW5pdGlvbigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEVEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFRGVmaW5pdGlvbjwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFRGVmaW5pdGlvbjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0RURlZmluaXRpb24oKSI+PENPREU+PGVtPkVEZWZpbml0aW9uPC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RURlZmluaXRpb248L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldEVEZWZpbml0aW9uKCkiPjxDT0RFPmdldEVEZWZpbml0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RVNjaGVtYSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFU2NoZW1hPC9IMz4KLTxQUkU+Ci1vcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hIDxCPmdldEVTY2hlbWE8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FU2NoZW1hPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FU2NoZW1hPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FU2NoZW1hPC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNzZXRFU2NoZW1hKG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWEpIj48Q09ERT5zZXRFU2NoZW1hKFhTRFNjaGVtYSk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEltcG9ydF9FU2NoZW1hKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldEltcG9ydF9FU2NoZW1hKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0RVNjaGVtYShvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RVNjaGVtYTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFU2NoZW1hPC9CPihvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFU2NoZW1hKCkiPjxDT0RFPjxlbT5FU2NoZW1hPC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RVNjaGVtYTwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0RVNjaGVtYSgpIj48Q09ERT5nZXRFU2NoZW1hKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U2NoZW1hKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNjaGVtYTwvSDM+Ci08UFJFPgotb3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYSA8Qj5nZXRTY2hlbWE8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIFRoaXMgbWV0aG9kIGlzIHNhbWUgYXMgZ2V0RVNjaGVtYSgpLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FU2NoZW1hPC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFU2NoZW1hKCkiPjxDT0RFPmdldEVTY2hlbWEoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRTY2hlbWEob3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYSkiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFNjaGVtYTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRTY2hlbWE8L0I+KG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWEmbmJzcDtzY2hlbWEpPC9QUkU+Ci08REw+Ci08REQ+PCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBUaGlzIG1ldGhvZCBpcyBzYW1lIGFzIHNldEVTY2hlbWEoWFNEU2NoZW1hKS4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+c2NoZW1hPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RVNjaGVtYTwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjc2V0RVNjaGVtYShvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hKSI+PENPREU+c2V0RVNjaGVtYShYU0RTY2hlbWEpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSW1wb3J0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJbXBvcnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZjJiYjguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTEgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1JbnB1dAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0IGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSW5wdXQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9JbnB1dC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJJbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIElucHV0PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5JbnB1dCwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPiwgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5JbnB1dDwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+LCBqYXZheC53c2RsLklucHV0PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SW5wdXQ8L2I+PC9lbT4nLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SW5wdXQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0SW5wdXQoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj5nZXRFTWVzc2FnZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXROYW1lKCkiPmdldE5hbWU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwjc2V0RU1lc3NhZ2Uob3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSkiPnNldEVNZXNzYWdlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPnNldE5hbWU8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2FkZEV4dGVuc2liaWxpdHlFbGVtZW50KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkiPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLklucHV0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5JbnB1dDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldERvY3VtZW50YXRpb25FbGVtZW50LCBnZXRNZXNzYWdlLCBnZXROYW1lLCBzZXREb2N1bWVudGF0aW9uRWxlbWVudCwgc2V0TWVzc2FnZSwgc2V0TmFtZTwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0lucHV0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklucHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOWI0MjQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLU1lc3NhZ2UKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iTWVzc2FnZSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL01lc3NhZ2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1lc3NhZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIE1lc3NhZ2U8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLk1lc3NhZ2UsIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+TWVzc2FnZTwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuTWVzc2FnZTwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZSgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRNZXNzYWdlKCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFTGlzdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwjZ2V0RVBhcnRzKCkiPmdldEVQYXJ0czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2dldFFOYW1lKCkiPmdldFFOYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNpc1VuZGVmaW5lZCgpIj5pc1VuZGVmaW5lZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI3NldFFOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj5zZXRRTmFtZTwvQT48L0I+KGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2dldFFOYW1lKCkiPjxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNzZXRVbmRlZmluZWQoYm9vbGVhbikiPnNldFVuZGVmaW5lZDwvQT48L0I+KGJvb2xlYW4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPjxlbT5VbmRlZmluZWQ8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNhZGRFeHRlbnNpYmlsaXR5RWxlbWVudChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIj5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNlbGVtZW50Q2hhbmdlZChvcmcudzNjLmRvbS5FbGVtZW50KSI+ZWxlbWVudENoYW5nZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPmdldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPmdldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVuY2xvc2luZ0RlZmluaXRpb24oKSI+Z2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj5zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KCkiPnVwZGF0ZUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPnVwZGF0ZUVsZW1lbnQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5NZXNzYWdlIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5NZXNzYWdlPC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+YWRkUGFydCwgZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQsIGdldE9yZGVyZWRQYXJ0cywgZ2V0UGFydCwgZ2V0UGFydHMsIHNldERvY3VtZW50YXRpb25FbGVtZW50PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0UU5hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UU5hbWU8L0gzPgotPFBSRT4KLWphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUgPEI+Z2V0UU5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UU5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0UU5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLk1lc3NhZ2U8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI3NldFFOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48Q09ERT5zZXRRTmFtZShRTmFtZSk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE1lc3NhZ2VfUU5hbWUoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0TWVzc2FnZV9RTmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFFOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRRTmFtZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRRTmFtZTwvQj4oamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2dldFFOYW1lKCkiPjxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldFFOYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5NZXNzYWdlPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2dldFFOYW1lKCkiPjxDT0RFPmdldFFOYW1lKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iaXNVbmRlZmluZWQoKSI+PCEtLSAtLT48L0E+PEgzPgotaXNVbmRlZmluZWQ8L0gzPgotPFBSRT4KLWJvb2xlYW4gPEI+aXNVbmRlZmluZWQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlVuZGVmaW5lZDwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5pc1VuZGVmaW5lZDwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuTWVzc2FnZTwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVuZGVmaW5lZDwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI3NldFVuZGVmaW5lZChib29sZWFuKSI+PENPREU+c2V0VW5kZWZpbmVkKGJvb2xlYW4pPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRNZXNzYWdlX1VuZGVmaW5lZCgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRNZXNzYWdlX1VuZGVmaW5lZCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFVuZGVmaW5lZChib29sZWFuKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0VW5kZWZpbmVkPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFVuZGVmaW5lZDwvQj4oYm9vbGVhbiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPjxlbT5VbmRlZmluZWQ8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXRVbmRlZmluZWQ8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLk1lc3NhZ2U8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlVuZGVmaW5lZDwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPmlzVW5kZWZpbmVkKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RVBhcnRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVQYXJ0czwvSDM+Ci08UFJFPgotRUxpc3QgPEI+Z2V0RVBhcnRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBhcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPlBhcnQ8L0NPREU+PC9BPi4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVQYXJ0czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FUGFydHM8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRNZXNzYWdlX0VQYXJ0cygpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRNZXNzYWdlX0VQYXJ0cygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTWVzc2FnZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTWVzc2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNTViODIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLU1lc3NhZ2VSZWZlcmVuY2UKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iTWVzc2FnZVJlZmVyZW5jZSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBNZXNzYWdlUmVmZXJlbmNlPC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9ERD4KLTwvREw+Ci08REw+Ci08RFQ+PEI+QWxsIEtub3duIFN1YmludGVyZmFjZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RmF1bHQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PdXRwdXQ8L0E+PC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPk1lc3NhZ2VSZWZlcmVuY2U8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZSBSZWZlcmVuY2U8L2I+PC9lbT4nLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZVJlZmVyZW5jZSgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRNZXNzYWdlUmVmZXJlbmNlKCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj5nZXRFTWVzc2FnZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwjZ2V0TmFtZSgpIj5nZXROYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI3NldEVNZXNzYWdlKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpIj5zZXRFTWVzc2FnZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj5zZXROYW1lPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2FkZEV4dGVuc2liaWxpdHlFbGVtZW50KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkiPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXROYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE5hbWU8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0TmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXROYW1lKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE1lc3NhZ2VSZWZlcmVuY2VfTmFtZSgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRNZXNzYWdlUmVmZXJlbmNlX05hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXROYW1lPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldE5hbWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI2dldE5hbWUoKSI+PENPREU+Z2V0TmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVNZXNzYWdlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVNZXNzYWdlPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+IDxCPmdldEVNZXNzYWdlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVNZXNzYWdlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FTWVzc2FnZTwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI3NldEVNZXNzYWdlKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpIj48Q09ERT5zZXRFTWVzc2FnZShNZXNzYWdlKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZVJlZmVyZW5jZV9FTWVzc2FnZSgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRNZXNzYWdlUmVmZXJlbmNlX0VNZXNzYWdlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0RU1lc3NhZ2Uob3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSkiPjwhLS0gLS0+PC9BPjxIMz4KLXNldEVNZXNzYWdlPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldEVNZXNzYWdlPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+Jm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwjZ2V0RU1lc3NhZ2UoKSI+PENPREU+PGVtPkVNZXNzYWdlPC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RU1lc3NhZ2U8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT5nZXRFTWVzc2FnZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTWVzc2FnZVJlZmVyZW5jZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg5NmJmMC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTEgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1OYW1lc3BhY2UKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5OYW1lc3BhY2UgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJOYW1lc3BhY2UiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9OYW1lc3BhY2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik5hbWVzcGFjZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgTmFtZXNwYWNlPC9IMj4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+TmFtZXNwYWNlPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk5hbWVzcGFjZTwvYj48L2VtPicuCi08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2luY2U6PC9CPjwvRFQ+Ci0gIDxERD4xLjA8L0REPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXROYW1lc3BhY2UoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0TmFtZXNwYWNlKCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI2dldFByZWZpeCgpIj5nZXRQcmVmaXg8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5QcmVmaXg8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI2dldFVSSSgpIj5nZXRVUkk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5VUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI3NldFByZWZpeChqYXZhLmxhbmcuU3RyaW5nKSI+c2V0UHJlZml4PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNnZXRQcmVmaXgoKSI+PENPREU+PGVtPlByZWZpeDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI3NldFVSSShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0VVJJPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNnZXRVUkkoKSI+PENPREU+PGVtPlVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0VVJJKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFVSSTwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRVUkk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5VUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlVSSTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+VVJJPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNzZXRVUkkoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldFVSSShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXROYW1lc3BhY2VfVVJJKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldE5hbWVzcGFjZV9VUkkoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRVUkkoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFVSSTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRVUkk8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI2dldFVSSSgpIj48Q09ERT48ZW0+VVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VVJJPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNnZXRVUkkoKSI+PENPREU+Z2V0VVJJKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UHJlZml4KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFByZWZpeDwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRQcmVmaXg8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5QcmVmaXg8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlByZWZpeDwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+UHJlZml4PC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNzZXRQcmVmaXgoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldFByZWZpeChTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXROYW1lc3BhY2VfUHJlZml4KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldE5hbWVzcGFjZV9QcmVmaXgoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRQcmVmaXgoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFByZWZpeDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRQcmVmaXg8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI2dldFByZWZpeCgpIj48Q09ERT48ZW0+UHJlZml4PC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+UHJlZml4PC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNnZXRQcmVmaXgoKSI+PENPREU+Z2V0UHJlZml4KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9OYW1lc3BhY2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik5hbWVzcGFjZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTA5ZjFlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTc4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLU9wZXJhdGlvbgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Ik9wZXJhdGlvbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL09wZXJhdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIE9wZXJhdGlvbjwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuT3BlcmF0aW9uLCBqYXZhLmlvLlNlcmlhbGl6YWJsZSwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPk9wZXJhdGlvbjwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuT3BlcmF0aW9uPC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbigpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVGYXVsdHMoKSI+Z2V0RUZhdWx0czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUlucHV0KCkiPmdldEVJbnB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PdXRwdXQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVPdXRwdXQoKSI+Z2V0RU91dHB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFTGlzdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFUGFyYW1ldGVyT3JkZXJpbmcoKSI+Z2V0RVBhcmFtZXRlck9yZGVyaW5nPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBhcmFtZXRlciBPcmRlcmluZzwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0TmFtZSgpIj5nZXROYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmF4LndzZGwuT3BlcmF0aW9uVHlwZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRTdHlsZSgpIj5nZXRTdHlsZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlN0eWxlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNpc1VuZGVmaW5lZCgpIj5pc1VuZGVmaW5lZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjc2V0RUlucHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0KSI+c2V0RUlucHV0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW5wdXQ8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVJbnB1dCgpIj48Q09ERT48ZW0+RUlucHV0PC9lbT48L0NPREU+PC9BPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjc2V0RU91dHB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQpIj5zZXRFT3V0cHV0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk91dHB1dDwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RU91dHB1dCgpIj48Q09ERT48ZW0+RU91dHB1dDwvZW0+PC9DT0RFPjwvQT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPnNldE5hbWU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNzZXRTdHlsZShqYXZheC53c2RsLk9wZXJhdGlvblR5cGUpIj5zZXRTdHlsZTwvQT48L0I+KGphdmF4LndzZGwuT3BlcmF0aW9uVHlwZSZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRTdHlsZSgpIj48Q09ERT48ZW0+U3R5bGU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNzZXRVbmRlZmluZWQoYm9vbGVhbikiPnNldFVuZGVmaW5lZDwvQT48L0I+KGJvb2xlYW4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2FkZEV4dGVuc2liaWxpdHlFbGVtZW50KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkiPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLk9wZXJhdGlvbiI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuT3BlcmF0aW9uPC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+YWRkRmF1bHQsIGdldERvY3VtZW50YXRpb25FbGVtZW50LCBnZXRGYXVsdCwgZ2V0RmF1bHRzLCBnZXRJbnB1dCwgZ2V0T3V0cHV0LCBnZXRQYXJhbWV0ZXJPcmRlcmluZywgc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQsIHNldElucHV0LCBzZXRPdXRwdXQsIHNldFBhcmFtZXRlck9yZGVyaW5nPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0U3R5bGUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U3R5bGU8L0gzPgotPFBSRT4KLWphdmF4LndzZGwuT3BlcmF0aW9uVHlwZSA8Qj5nZXRTdHlsZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlN0eWxlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5TdHlsZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXRTdHlsZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuT3BlcmF0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+U3R5bGU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI3NldFN0eWxlKGphdmF4LndzZGwuT3BlcmF0aW9uVHlwZSkiPjxDT0RFPnNldFN0eWxlKE9wZXJhdGlvblR5cGUpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb25fU3R5bGUoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0T3BlcmF0aW9uX1N0eWxlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0U3R5bGUoamF2YXgud3NkbC5PcGVyYXRpb25UeXBlKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0U3R5bGU8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0U3R5bGU8L0I+KGphdmF4LndzZGwuT3BlcmF0aW9uVHlwZSZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0U3R5bGUoKSI+PENPREU+PGVtPlN0eWxlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0U3R5bGU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLk9wZXJhdGlvbjwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+U3R5bGU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldFN0eWxlKCkiPjxDT0RFPmdldFN0eWxlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TmFtZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXROYW1lPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldE5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldE5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLk9wZXJhdGlvbjwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldE5hbWUoU3RyaW5nKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uX05hbWUoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0T3BlcmF0aW9uX05hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXROYW1lPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldE5hbWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXROYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5PcGVyYXRpb248L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldE5hbWUoKSI+PENPREU+Z2V0TmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImlzVW5kZWZpbmVkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWlzVW5kZWZpbmVkPC9IMz4KLTxQUkU+Ci1ib29sZWFuIDxCPmlzVW5kZWZpbmVkPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+aXNVbmRlZmluZWQ8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLk9wZXJhdGlvbjwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVuZGVmaW5lZDwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjc2V0VW5kZWZpbmVkKGJvb2xlYW4pIj48Q09ERT5zZXRVbmRlZmluZWQoYm9vbGVhbik8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbl9VbmRlZmluZWQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0T3BlcmF0aW9uX1VuZGVmaW5lZCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFVuZGVmaW5lZChib29sZWFuKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0VW5kZWZpbmVkPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFVuZGVmaW5lZDwvQj4oYm9vbGVhbiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldFVuZGVmaW5lZDwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuT3BlcmF0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPmlzVW5kZWZpbmVkKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RUlucHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVJbnB1dDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW5wdXQ8L0E+IDxCPmdldEVJbnB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUlucHV0PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FSW5wdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI3NldEVJbnB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dCkiPjxDT0RFPnNldEVJbnB1dChJbnB1dCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbl9FSW5wdXQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0T3BlcmF0aW9uX0VJbnB1dCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEVJbnB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dCkiPjwhLS0gLS0+PC9BPjxIMz4KLXNldEVJbnB1dDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFSW5wdXQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPklucHV0PC9BPiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUlucHV0KCkiPjxDT0RFPjxlbT5FSW5wdXQ8L2VtPjwvQ09ERT48L0E+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FSW5wdXQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVJbnB1dCgpIj48Q09ERT5nZXRFSW5wdXQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFT3V0cHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVPdXRwdXQ8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PdXRwdXQ8L0E+IDxCPmdldEVPdXRwdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FT3V0cHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FT3V0cHV0PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FT3V0cHV0PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNzZXRFT3V0cHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dCkiPjxDT0RFPnNldEVPdXRwdXQoT3V0cHV0KTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uX0VPdXRwdXQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0T3BlcmF0aW9uX0VPdXRwdXQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFT3V0cHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dCkiPjwhLS0gLS0+PC9BPjxIMz4KLXNldEVPdXRwdXQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RU91dHB1dDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk91dHB1dDwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVPdXRwdXQoKSI+PENPREU+PGVtPkVPdXRwdXQ8L2VtPjwvQ09ERT48L0E+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FT3V0cHV0PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFT3V0cHV0KCkiPjxDT0RFPmdldEVPdXRwdXQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFRmF1bHRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVGYXVsdHM8L0gzPgotPFBSRT4KLUVMaXN0IDxCPmdldEVGYXVsdHM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRmF1bHRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5GYXVsdDwvQ09ERT48L0E+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUZhdWx0czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRmF1bHRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uX0VGYXVsdHMoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0T3BlcmF0aW9uX0VGYXVsdHMoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFUGFyYW1ldGVyT3JkZXJpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RVBhcmFtZXRlck9yZGVyaW5nPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFUGFyYW1ldGVyT3JkZXJpbmc8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUGFyYW1ldGVyIE9yZGVyaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KLSBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPlBhcnQ8L0NPREU+PC9BPi4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVQYXJhbWV0ZXIgT3JkZXJpbmc8L2VtPicgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RVBhcmFtZXRlciBPcmRlcmluZzwvZW0+JyByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbl9FUGFyYW1ldGVyT3JkZXJpbmcoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0T3BlcmF0aW9uX0VQYXJhbWV0ZXJPcmRlcmluZygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvT3BlcmF0aW9uLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTVhYTY4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLU91dHB1dAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dCBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Ik91dHB1dCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL091dHB1dC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iT3V0cHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgT3V0cHV0PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPiwgamF2YXgud3NkbC5PdXRwdXQsIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+T3V0cHV0PC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4sIGphdmF4LndzZGwuT3V0cHV0PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3V0cHV0PC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE91dHB1dCgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRPdXRwdXQoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlUmVmZXJlbmNlIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj5nZXRFTWVzc2FnZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXROYW1lKCkiPmdldE5hbWU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwjc2V0RU1lc3NhZ2Uob3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSkiPnNldEVNZXNzYWdlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPnNldE5hbWU8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2FkZEV4dGVuc2liaWxpdHlFbGVtZW50KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkiPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLk91dHB1dCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuT3V0cHV0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQsIGdldE1lc3NhZ2UsIGdldE5hbWUsIHNldERvY3VtZW50YXRpb25FbGVtZW50LCBzZXRNZXNzYWdlLCBzZXROYW1lPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvT3V0cHV0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJPdXRwdXQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk5MDUyYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NzIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUxIEVEVCAyMDA4IC0tPgotPFRJVExFPgotUGFydAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJQYXJ0IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvUGFydC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlBhcnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIFBhcnQ8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlBhcnQsIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+UGFydDwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuUGFydDwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UGFydCgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRQYXJ0KCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRFbGVtZW50RGVjbGFyYXRpb24oKSI+Z2V0RWxlbWVudERlY2xhcmF0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RWxlbWVudCBEZWNsYXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVsZW1lbnROYW1lKCkiPmdldEVsZW1lbnROYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RWxlbWVudCBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0RU1lc3NhZ2UoKSI+Z2V0RU1lc3NhZ2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldE5hbWUoKSI+Z2V0TmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb248L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldFR5cGVEZWZpbml0aW9uKCkiPmdldFR5cGVEZWZpbml0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VHlwZSBEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0VHlwZU5hbWUoKSI+Z2V0VHlwZU5hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5UeXBlIE5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRFbGVtZW50RGVjbGFyYXRpb24ob3JnLmVjbGlwc2UueHNkLlhTREVsZW1lbnREZWNsYXJhdGlvbikiPnNldEVsZW1lbnREZWNsYXJhdGlvbjwvQT48L0I+KG9yZy5lY2xpcHNlLnhzZC5YU0RFbGVtZW50RGVjbGFyYXRpb24mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVsZW1lbnREZWNsYXJhdGlvbigpIj48Q09ERT48ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRFbGVtZW50TmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudE5hbWU8L0E+PC9CPihqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRFbGVtZW50TmFtZSgpIj48Q09ERT48ZW0+RWxlbWVudCBOYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI3NldEVNZXNzYWdlKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpIj5zZXRFTWVzc2FnZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj5zZXROYW1lPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRUeXBlRGVmaW5pdGlvbihvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb24pIj5zZXRUeXBlRGVmaW5pdGlvbjwvQT48L0I+KG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbiZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0VHlwZURlZmluaXRpb24oKSI+PENPREU+PGVtPlR5cGUgRGVmaW5pdGlvbjwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRUeXBlTmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0VHlwZU5hbWU8L0E+PC9CPihqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRUeXBlTmFtZSgpIj48Q09ERT48ZW0+VHlwZSBOYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuUGFydCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuUGFydDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldERvY3VtZW50YXRpb25FbGVtZW50LCBnZXRFeHRlbnNpb25BdHRyaWJ1dGUsIGdldEV4dGVuc2lvbkF0dHJpYnV0ZXMsIHNldERvY3VtZW50YXRpb25FbGVtZW50LCBzZXRFeHRlbnNpb25BdHRyaWJ1dGU8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXROYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE5hbWU8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0TmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0TmFtZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuUGFydDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXROYW1lKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBhcnRfTmFtZSgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRQYXJ0X05hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXROYW1lKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXROYW1lPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldE5hbWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0TmFtZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuUGFydDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldE5hbWUoKSI+PENPREU+Z2V0TmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVsZW1lbnROYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVsZW1lbnROYW1lPC9IMz4KLTxQUkU+Ci1qYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIDxCPmdldEVsZW1lbnROYW1lPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RWxlbWVudCBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FbGVtZW50IE5hbWU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0RWxlbWVudE5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLlBhcnQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FbGVtZW50IE5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRFbGVtZW50TmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+PENPREU+c2V0RWxlbWVudE5hbWUoUU5hbWUpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0X0VsZW1lbnROYW1lKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFBhcnRfRWxlbWVudE5hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFbGVtZW50TmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RWxlbWVudE5hbWU8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RWxlbWVudE5hbWU8L0I+KGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRFbGVtZW50TmFtZSgpIj48Q09ERT48ZW0+RWxlbWVudCBOYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0RWxlbWVudE5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLlBhcnQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVsZW1lbnQgTmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVsZW1lbnROYW1lKCkiPjxDT0RFPmdldEVsZW1lbnROYW1lKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0VHlwZU5hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0VHlwZU5hbWU8L0gzPgotPFBSRT4KLWphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUgPEI+Z2V0VHlwZU5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5UeXBlIE5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlR5cGUgTmFtZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXRUeXBlTmFtZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuUGFydDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlR5cGUgTmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI3NldFR5cGVOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48Q09ERT5zZXRUeXBlTmFtZShRTmFtZSk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBhcnRfVHlwZU5hbWUoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0UGFydF9UeXBlTmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFR5cGVOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRUeXBlTmFtZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRUeXBlTmFtZTwvQj4oamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldFR5cGVOYW1lKCkiPjxDT0RFPjxlbT5UeXBlIE5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXRUeXBlTmFtZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuUGFydDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VHlwZSBOYW1lPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0VHlwZU5hbWUoKSI+PENPREU+Z2V0VHlwZU5hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRUeXBlRGVmaW5pdGlvbigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRUeXBlRGVmaW5pdGlvbjwvSDM+Ci08UFJFPgotb3JnLmVjbGlwc2UueHNkLlhTRFR5cGVEZWZpbml0aW9uIDxCPmdldFR5cGVEZWZpbml0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VHlwZSBEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5UeXBlIERlZmluaXRpb248L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlR5cGUgRGVmaW5pdGlvbjwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI3NldFR5cGVEZWZpbml0aW9uKG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbikiPjxDT0RFPnNldFR5cGVEZWZpbml0aW9uKFhTRFR5cGVEZWZpbml0aW9uKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UGFydF9UeXBlRGVmaW5pdGlvbigpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRQYXJ0X1R5cGVEZWZpbml0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0VHlwZURlZmluaXRpb24ob3JnLmVjbGlwc2UueHNkLlhTRFR5cGVEZWZpbml0aW9uKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0VHlwZURlZmluaXRpb248L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0VHlwZURlZmluaXRpb248L0I+KG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldFR5cGVEZWZpbml0aW9uKCkiPjxDT0RFPjxlbT5UeXBlIERlZmluaXRpb248L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5UeXBlIERlZmluaXRpb248L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRUeXBlRGVmaW5pdGlvbigpIj48Q09ERT5nZXRUeXBlRGVmaW5pdGlvbigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVsZW1lbnREZWNsYXJhdGlvbigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFbGVtZW50RGVjbGFyYXRpb248L0gzPgotPFBSRT4KLW9yZy5lY2xpcHNlLnhzZC5YU0RFbGVtZW50RGVjbGFyYXRpb24gPEI+Z2V0RWxlbWVudERlY2xhcmF0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RWxlbWVudCBEZWNsYXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI3NldEVsZW1lbnREZWNsYXJhdGlvbihvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uKSI+PENPREU+c2V0RWxlbWVudERlY2xhcmF0aW9uKFhTREVsZW1lbnREZWNsYXJhdGlvbik8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBhcnRfRWxlbWVudERlY2xhcmF0aW9uKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFBhcnRfRWxlbWVudERlY2xhcmF0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0RWxlbWVudERlY2xhcmF0aW9uKG9yZy5lY2xpcHNlLnhzZC5YU0RFbGVtZW50RGVjbGFyYXRpb24pIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFbGVtZW50RGVjbGFyYXRpb248L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RWxlbWVudERlY2xhcmF0aW9uPC9CPihvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0RWxlbWVudERlY2xhcmF0aW9uKCkiPjxDT0RFPjxlbT5FbGVtZW50IERlY2xhcmF0aW9uPC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVsZW1lbnREZWNsYXJhdGlvbigpIj48Q09ERT5nZXRFbGVtZW50RGVjbGFyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFTWVzc2FnZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFTWVzc2FnZTwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPiA8Qj5nZXRFTWVzc2FnZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FTWVzc2FnZTwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RU1lc3NhZ2U8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNzZXRFTWVzc2FnZShvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlKSI+PENPREU+c2V0RU1lc3NhZ2UoTWVzc2FnZSk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBhcnRfRU1lc3NhZ2UoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0UGFydF9FTWVzc2FnZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEVNZXNzYWdlKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFTWVzc2FnZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFTWVzc2FnZTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVNZXNzYWdlPC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0RU1lc3NhZ2UoKSI+PENPREU+Z2V0RU1lc3NhZ2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1BhcnQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJQYXJ0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdmOTYzYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNDAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUxIEVEVCAyMDA4IC0tPgotPFRJVExFPgotUG9ydAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJQb3J0IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvUG9ydC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUG9ydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgUG9ydDwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuUG9ydCwgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5Qb3J0PC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5Qb3J0PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UG9ydDwvYj48L2VtPicuCi08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2luY2U6PC9CPjwvRFQ+Ci0gIDxERD4xLjA8L0REPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQb3J0KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFBvcnQoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldEVCaW5kaW5nKCkiPmdldEVCaW5kaW5nPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUJpbmRpbmc8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNnZXROYW1lKCkiPmdldE5hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwjc2V0RUJpbmRpbmcob3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZykiPnNldEVCaW5kaW5nPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nPC9BPiZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwjZ2V0RUJpbmRpbmcoKSI+PENPREU+PGVtPkVCaW5kaW5nPC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPnNldE5hbWU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuUG9ydCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuUG9ydDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50LCBnZXRCaW5kaW5nLCBnZXREb2N1bWVudGF0aW9uRWxlbWVudCwgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzLCBzZXRCaW5kaW5nLCBzZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldE5hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TmFtZTwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXROYW1lPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXROYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5Qb3J0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldE5hbWUoU3RyaW5nKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydF9OYW1lKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFBvcnRfTmFtZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldE5hbWU8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0TmFtZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXROYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5Qb3J0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT5nZXROYW1lKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RUJpbmRpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RUJpbmRpbmc8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT4gPEI+Z2V0RUJpbmRpbmc8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZzwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUJpbmRpbmc8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVCaW5kaW5nPC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwjc2V0RUJpbmRpbmcob3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZykiPjxDT0RFPnNldEVCaW5kaW5nKEJpbmRpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQb3J0X0VCaW5kaW5nKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFBvcnRfRUJpbmRpbmcoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFQmluZGluZyhvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RUJpbmRpbmc8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RUJpbmRpbmc8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNnZXRFQmluZGluZygpIj48Q09ERT48ZW0+RUJpbmRpbmc8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FQmluZGluZzwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldEVCaW5kaW5nKCkiPjxDT0RFPmdldEVCaW5kaW5nKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9Qb3J0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJQb3J0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzQ5YzY3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNzIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUxIEVEVCAyMDA4IC0tPgotPFRJVExFPgotUG9ydFR5cGUKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZSBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlBvcnRUeXBlIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvUG9ydFR5cGUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlBvcnRUeXBlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBQb3J0VHlwZTwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuUG9ydFR5cGUsIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+UG9ydFR5cGU8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlBvcnRUeXBlPC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UG9ydCBUeXBlPC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBvcnRUeXBlKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFBvcnRUeXBlKCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFTGlzdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI2dldEVPcGVyYXRpb25zKCkiPmdldEVPcGVyYXRpb25zPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbnM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwjZ2V0UU5hbWUoKSI+Z2V0UU5hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNpc1VuZGVmaW5lZCgpIj5pc1VuZGVmaW5lZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNzZXRRTmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0UU5hbWU8L0E+PC9CPihqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNzZXRVbmRlZmluZWQoYm9vbGVhbikiPnNldFVuZGVmaW5lZDwvQT48L0I+KGJvb2xlYW4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuUG9ydFR5cGUiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLlBvcnRUeXBlPC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+YWRkT3BlcmF0aW9uLCBnZXREb2N1bWVudGF0aW9uRWxlbWVudCwgZ2V0T3BlcmF0aW9uLCBnZXRPcGVyYXRpb25zLCBzZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldFFOYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFFOYW1lPC9IMz4KLTxQUkU+Ci1qYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIDxCPmdldFFOYW1lPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldFFOYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5Qb3J0VHlwZTwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI3NldFFOYW1lKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj48Q09ERT5zZXRRTmFtZShRTmFtZSk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBvcnRUeXBlX1FOYW1lKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFBvcnRUeXBlX1FOYW1lKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0UU5hbWUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFFOYW1lPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFFOYW1lPC9CPihqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI2dldFFOYW1lKCkiPjxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldFFOYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5Qb3J0VHlwZTwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+UU5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+Z2V0UU5hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJpc1VuZGVmaW5lZCgpIj48IS0tIC0tPjwvQT48SDM+Ci1pc1VuZGVmaW5lZDwvSDM+Ci08UFJFPgotYm9vbGVhbiA8Qj5pc1VuZGVmaW5lZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VW5kZWZpbmVkPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmlzVW5kZWZpbmVkPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5Qb3J0VHlwZTwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVuZGVmaW5lZDwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNzZXRVbmRlZmluZWQoYm9vbGVhbikiPjxDT0RFPnNldFVuZGVmaW5lZChib29sZWFuKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydFR5cGVfVW5kZWZpbmVkKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFBvcnRUeXBlX1VuZGVmaW5lZCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFVuZGVmaW5lZChib29sZWFuKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0VW5kZWZpbmVkPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFVuZGVmaW5lZDwvQj4oYm9vbGVhbiZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0VW5kZWZpbmVkPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5Qb3J0VHlwZTwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VW5kZWZpbmVkPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPmlzVW5kZWZpbmVkKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RU9wZXJhdGlvbnMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RU9wZXJhdGlvbnM8L0gzPgotPFBSRT4KLUVMaXN0IDxCPmdldEVPcGVyYXRpb25zPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbnM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5PcGVyYXRpb248L0NPREU+PC9BPi4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVPcGVyYXRpb25zPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVPcGVyYXRpb25zPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydFR5cGVfRU9wZXJhdGlvbnMoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0UG9ydFR5cGVfRU9wZXJhdGlvbnMoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1BvcnRUeXBlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJQb3J0VHlwZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMjUzYTMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVNlcnZpY2UKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iU2VydmljZSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NlcnZpY2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTZXJ2aWNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBTZXJ2aWNlPC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YS5pby5TZXJpYWxpemFibGUsIGphdmF4LndzZGwuU2VydmljZSwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPlNlcnZpY2U8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlNlcnZpY2U8L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5TZXJ2aWNlPC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFNlcnZpY2UoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0U2VydmljZSgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUxpc3Q8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sI2dldEVQb3J0cygpIj5nZXRFUG9ydHM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNnZXRRTmFtZSgpIj5nZXRRTmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjaXNVbmRlZmluZWQoKSI+aXNVbmRlZmluZWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNzZXRRTmFtZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0UU5hbWU8L0E+PC9CPihqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNnZXRRTmFtZSgpIj48Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjc2V0VW5kZWZpbmVkKGJvb2xlYW4pIj5zZXRVbmRlZmluZWQ8L0E+PC9CPihib29sZWFuJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuU2VydmljZSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuU2VydmljZTwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmFkZEV4dGVuc2liaWxpdHlFbGVtZW50LCBhZGRQb3J0LCBnZXREb2N1bWVudGF0aW9uRWxlbWVudCwgZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzLCBnZXRQb3J0LCBnZXRQb3J0cywgc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRRTmFtZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRRTmFtZTwvSDM+Ci08UFJFPgotamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSA8Qj5nZXRRTmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5RTmFtZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXRRTmFtZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuU2VydmljZTwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjc2V0UU5hbWUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPjxDT0RFPnNldFFOYW1lKFFOYW1lKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0U2VydmljZV9RTmFtZSgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRTZXJ2aWNlX1FOYW1lKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0UU5hbWUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFFOYW1lPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFFOYW1lPC9CPihqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0UU5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLlNlcnZpY2U8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+Z2V0UU5hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJpc1VuZGVmaW5lZCgpIj48IS0tIC0tPjwvQT48SDM+Ci1pc1VuZGVmaW5lZDwvSDM+Ci08UFJFPgotYm9vbGVhbiA8Qj5pc1VuZGVmaW5lZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VW5kZWZpbmVkPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5VbmRlZmluZWQ8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNzZXRVbmRlZmluZWQoYm9vbGVhbikiPjxDT0RFPnNldFVuZGVmaW5lZChib29sZWFuKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0U2VydmljZV9VbmRlZmluZWQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0U2VydmljZV9VbmRlZmluZWQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRVbmRlZmluZWQoYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFVuZGVmaW5lZDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRVbmRlZmluZWQ8L0I+KGJvb2xlYW4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VW5kZWZpbmVkPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+aXNVbmRlZmluZWQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFUG9ydHMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RVBvcnRzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFUG9ydHM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+UG9ydDwvQ09ERT48L0E+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RVBvcnRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVQb3J0czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFNlcnZpY2VfRVBvcnRzKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFNlcnZpY2VfRVBvcnRzKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TZXJ2aWNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU2VydmljZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdlNDQ5Zi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVR5cGVzCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXMgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJUeXBlcyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1R5cGVzLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlR5cGVzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBUeXBlczwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmEuaW8uU2VyaWFsaXphYmxlLCBqYXZheC53c2RsLlR5cGVzLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+VHlwZXM8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlR5cGVzPC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VHlwZXM8L2I+PC9lbT4nLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0VHlwZXMoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0VHlwZXMoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwjZ2V0U2NoZW1hcygpIj5nZXRTY2hlbWFzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIExpc3Qgb2YgaW5saW5lIFhTRFNjaGVtYSBpbnN0YW5jZXMgaW4gdGhpcyBUeXBlcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLkxpc3Q8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCNnZXRTY2hlbWFzKGphdmEubGFuZy5TdHJpbmcpIj5nZXRTY2hlbWFzPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWVzcGFjZVVSSSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBMaXN0IG9mIGlubGluZSBYU0RTY2hlbWEgaW5zdGFuY2VzIGluIHRoaXMgVHlwZXMuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KSI+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuVHlwZXMiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLlR5cGVzPC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+YWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGdldERvY3VtZW50YXRpb25FbGVtZW50LCBnZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMsIHNldERvY3VtZW50YXRpb25FbGVtZW50PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0U2NoZW1hcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTY2hlbWFzPC9IMz4KLTxQUkU+Ci1qYXZhLnV0aWwuTGlzdCA8Qj5nZXRTY2hlbWFzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBSZXR1cm5zIGEgTGlzdCBvZiBpbmxpbmUgWFNEU2NoZW1hIGluc3RhbmNlcyBpbiB0aGlzIFR5cGVzLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPkxpc3Qgb2YgWFNEU2NoZW1hIGluc3RhbmNlcy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5YU0RTY2hlbWE8L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTY2hlbWFzKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTY2hlbWFzPC9IMz4KLTxQUkU+Ci1qYXZhLnV0aWwuTGlzdCA8Qj5nZXRTY2hlbWFzPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZXNwYWNlVVJJKTwvUFJFPgotPERMPgotPEREPjwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gUmV0dXJucyBhIExpc3Qgb2YgaW5saW5lIFhTRFNjaGVtYSBpbnN0YW5jZXMgaW4gdGhpcyBUeXBlcy4gVGhlIHRhcmdldE5hbWVzcGFjZSBvZgotIHRoZSBzY2hlbWFzIGFyZSB0aGUgc2FtZSBhcyBuYW1lc3BhY2VVUkkgYXJndW1lbnQgdmFsdWUuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5hbWVzcGFjZVVSSTwvQ09ERT4gLSB0YXJnZXROYW1lc3BhY2Ugb2YgdGhlIHNjaGVtYXMgdG8gYmUgc2VhcmNoZWQgZm9yLgotPERUPjxCPlJldHVybnM6PC9CPjxERD5MaXN0IG9mIFhTRFNjaGVtYSBpbnN0YW5jZXMuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+WFNEU2NoZW1hPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9UeXBlcy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJUeXBlcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzQ5MTk5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjU2ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlVua25vd24gRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldENoaWxkcmVuKCkiPmdldENoaWxkcmVuPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+Q2hpbGRyZW48L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldEVsZW1lbnRUeXBlKCkiPmdldEVsZW1lbnRUeXBlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPmlzUmVxdWlyZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldEVsZW1lbnRUeXBlKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj5zZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0UmVxdWlyZWQoYm9vbGVhbikiPnNldFJlcXVpcmVkPC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNlbGVtZW50Q2hhbmdlZChvcmcudzNjLmRvbS5FbGVtZW50KSI+ZWxlbWVudENoYW5nZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPmdldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPmdldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVuY2xvc2luZ0RlZmluaXRpb24oKSI+Z2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj5zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KCkiPnVwZGF0ZUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPnVwZGF0ZUVsZW1lbnQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+Z2V0UmVxdWlyZWQsIHNldFJlcXVpcmVkPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0Q2hpbGRyZW4oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0Q2hpbGRyZW48L0gzPgotPFBSRT4KLUVMaXN0IDxCPmdldENoaWxkcmVuPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+Q2hpbGRyZW48L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0NPREU+PC9BPi4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkNoaWxkcmVuPC9lbT4nIHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkNoaWxkcmVuPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50X0NoaWxkcmVuKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudF9DaGlsZHJlbigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNjhlY2MuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0OSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTEgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1XU0RMRWxlbWVudAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50IGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iV1NETEVsZW1lbnQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMRWxlbWVudC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETEVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIFdTRExFbGVtZW50PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgS25vd24gU3ViaW50ZXJmYWNlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0ZhdWx0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdJbnB1dDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ091dHB1dDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEFkZHJlc3M8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBCaW5kaW5nPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBPcGVyYXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBVcmxFbmNvZGVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFVybFJlcGxhY2VtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPklucHV0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FQ29udGVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU1pbWVYbWw8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFydDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3V0cHV0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlNlcnZpY2U8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBBZGRyZXNzPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQmluZGluZzwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJvZHk8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmF1bHQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyRmF1bHQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUE9wZXJhdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5XU0RMRWxlbWVudDwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+Jy4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFdTRExFbGVtZW50KCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFdTRExFbGVtZW50KCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPjwvQj4ob3JnLnczYy5kb20uRWxlbWVudCZuYnNwO2NoYW5nZWRFbGVtZW50KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q2FsbGVkIHRvIGluZGljYXRlIHRoYXQgdGhlIGdpdmVuIGVsZW1lbnQgaGFzIGNoYW5nZWQ7Ci0gdGhlIGVsZW1lbnQgc2hvdWxkIHR5cGljYWxseSBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHJldHVybmVkIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj48Q09ERT5nZXRFbGVtZW50KCk8L0NPREU+PC9BPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkNvbnRhaW5lcjwvYj48L2VtPicgcmVmZXJlbmNlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtvcmcudzNjLmRvbS5FbGVtZW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtvcmcudzNjLmRvbS5FbGVtZW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBEZWZpbml0aW9uIHRoYXQgY29udGFpbnMgdGhpcyBXU0RMIGVsZW1lbnQuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+PC9CPihvcmcudzNjLmRvbS5FbGVtZW50Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+PENPREU+PGVtPkRvY3VtZW50YXRpb24gRWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT48L0I+KG9yZy53M2MuZG9tLkVsZW1lbnQmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPjxDT0RFPjxlbT5FbGVtZW50PC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj5zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPiZuYnNwO2RlZmluaXRpb24pPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSBlbmNsb3NpbmcgZGVmaW5pdGlvbiBvZiB0aGlzIFdTREwgZWxlbWVudC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Vuc3VyZXMgdGhhdCB0aGUgdW5kZXJseWluZyBET00gPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPjxDT0RFPmVsZW1lbnQ8L0NPREU+PC9BPiBib3RoIGV4aXN0cyBhbmQgaXMgdXAtdG8tZGF0ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1vZGVsLAotIGkuZS4sIGl0IHNlcmlhbGl6ZXMgdGhlIGNvbXBvbmVudCBhbmQgbWFpbnRhaW5zIGFuIGFzc29jaWF0aW9uIHdpdGggdGhhdCBzZXJpYWxpemF0aW9uLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0I+KGJvb2xlYW4mbmJzcDtkZWVwKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RW5zdXJlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIERPTSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+PENPREU+ZWxlbWVudDwvQ09ERT48L0E+IGJvdGggZXhpc3RzIGFuZCBpcyB1cC10by1kYXRlIHdpdGggcmVzcGVjdCB0byB0aGUgbW9kZWwsCi0gaS5lLiwgaXQgc2VyaWFsaXplcyB0aGUgY29tcG9uZW50IGFuZCBtYWludGFpbnMgYW4gYXNzb2NpYXRpb24gd2l0aCB0aGF0IHNlcmlhbGl6YXRpb24uPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvSDM+Ci08UFJFPgotb3JnLnczYy5kb20uRWxlbWVudCA8Qj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPjxDT0RFPnNldERvY3VtZW50YXRpb25FbGVtZW50KEVsZW1lbnQpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRXU0RMRWxlbWVudF9Eb2N1bWVudGF0aW9uRWxlbWVudCgpIj48Q09ERT5XU0RMUGFja2FnZS5nZXRXU0RMRWxlbWVudF9Eb2N1bWVudGF0aW9uRWxlbWVudCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQj4ob3JnLnczYy5kb20uRWxlbWVudCZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj48Q09ERT48ZW0+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPjxDT0RFPmdldERvY3VtZW50YXRpb25FbGVtZW50KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RWxlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFbGVtZW50PC9IMz4KLTxQUkU+Ci1vcmcudzNjLmRvbS5FbGVtZW50IDxCPmdldEVsZW1lbnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBUaGlzIGlzIHRoZSB1bmRlcmx5aW5nIERPTSBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXBvbmVudCwgCi0gaS5lLiwgdGhlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj48Q09ERT5zZXJpYWxpemF0aW9uPC9DT0RFPjwvQT4gb2YgdGhpcyBjb21wb25lbnQuCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FbGVtZW50PC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPjxDT0RFPnNldEVsZW1lbnQoRWxlbWVudCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFdTRExFbGVtZW50X0VsZW1lbnQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0V1NETEVsZW1lbnRfRWxlbWVudCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPjwhLS0gLS0+PC9BPjxIMz4KLXNldEVsZW1lbnQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RWxlbWVudDwvQj4ob3JnLnczYy5kb20uRWxlbWVudCZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPjxDT0RFPjxlbT5FbGVtZW50PC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RWxlbWVudDwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPjxDT0RFPmdldEVsZW1lbnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVuY2xvc2luZ0RlZmluaXRpb248L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4gPEI+Z2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPjwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gUmV0dXJucyB0aGUgRGVmaW5pdGlvbiB0aGF0IGNvbnRhaW5zIHRoaXMgV1NETCBlbGVtZW50LgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBEZWZpbml0aW9uIHRoYXQgY29udGFpbnMgdGhpcyBXU0RMIGVsZW1lbnQuCi0gPCEtLSBlbmQtdXNlci1kb2MgLS0+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4mbmJzcDtkZWZpbml0aW9uKTwvUFJFPgotPERMPgotPEREPjwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gU2V0cyB0aGUgZW5jbG9zaW5nIGRlZmluaXRpb24gb2YgdGhpcyBXU0RMIGVsZW1lbnQuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmRlZmluaXRpb248L0NPREU+IC0gdGhlIERlZmluaXRpb24gdGhhdCBjb250YWlucyB0aGlzIFdTREwgZWxlbWVudC4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InVwZGF0ZUVsZW1lbnQoKSI+PCEtLSAtLT48L0E+PEgzPgotdXBkYXRlRWxlbWVudDwvSDM+Ci08UFJFPgotdm9pZCA8Qj51cGRhdGVFbGVtZW50PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+RW5zdXJlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIERPTSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+PENPREU+ZWxlbWVudDwvQ09ERT48L0E+IGJvdGggZXhpc3RzIGFuZCBpcyB1cC10by1kYXRlIHdpdGggcmVzcGVjdCB0byB0aGUgbW9kZWwsCi0gaS5lLiwgaXQgc2VyaWFsaXplcyB0aGUgY29tcG9uZW50IGFuZCBtYWludGFpbnMgYW4gYXNzb2NpYXRpb24gd2l0aCB0aGF0IHNlcmlhbGl6YXRpb24uCi08UD4KLTxERD48REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPjxDT0RFPnVwZGF0ZUVsZW1lbnQoYm9vbGVhbik8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+PENPREU+Z2V0RWxlbWVudCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InVwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4KLXVwZGF0ZUVsZW1lbnQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+dXBkYXRlRWxlbWVudDwvQj4oYm9vbGVhbiZuYnNwO2RlZXApPC9QUkU+Ci08REw+Ci08REQ+RW5zdXJlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIERPTSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+PENPREU+ZWxlbWVudDwvQ09ERT48L0E+IGJvdGggZXhpc3RzIGFuZCBpcyB1cC10by1kYXRlIHdpdGggcmVzcGVjdCB0byB0aGUgbW9kZWwsCi0gaS5lLiwgaXQgc2VyaWFsaXplcyB0aGUgY29tcG9uZW50IGFuZCBtYWludGFpbnMgYW4gYXNzb2NpYXRpb24gd2l0aCB0aGF0IHNlcmlhbGl6YXRpb24uCi0gRm9yIDxjb2RlPmRlZXAgPT0gdHJ1ZTwvY29kZT4sIAotIG9yIHdoZW4gPGNvZGU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPjxDT0RFPmdldEVsZW1lbnQoKTwvQ09ERT48L0E+ID09IG51bGw8L2NvZGU+LCAKLSB0aGlzIGRvZXMgdGhlIHNhbWUgdGhpbmcgYXMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KCkiPjxDT0RFPnVwZGF0ZUVsZW1lbnQoKTwvQ09ERT48L0E+OwotIG90aGVyd2lzZSwgaXQgdXBkYXRlcyBqdXN0IHRoZSBET00gZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wb25lbnQgdG8gcmVmbGVjdCB0aGUgY3VycmVudCBzdGF0ZS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj48Q09ERT51cGRhdGVFbGVtZW50KCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+PENPREU+Z2V0RWxlbWVudCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldENvbnRhaW5lcigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRDb250YWluZXI8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPiA8Qj5nZXRDb250YWluZXI8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Db250YWluZXI8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSBUaGlzIHJlcHJlc2VudHMgdGhlIGNvbmNyZXRlIGNvbnRhaW5lciBvZiB0aGlzIGNvbXBvbmVudCwgCi0gaS5lLiwgdGhlIGludmVyc2Ugb2YgdGhlIGJsYWNrIGRpYW1vbmQgcmVsYXRpb25zIGluIHRoZSBVTUwgbW9kZWwuCi08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkNvbnRhaW5lcjwvZW0+JyByZWZlcmVuY2UuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJlbGVtZW50Q2hhbmdlZChvcmcudzNjLmRvbS5FbGVtZW50KSI+PCEtLSAtLT48L0E+PEgzPgotZWxlbWVudENoYW5nZWQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+ZWxlbWVudENoYW5nZWQ8L0I+KG9yZy53M2MuZG9tLkVsZW1lbnQmbmJzcDtjaGFuZ2VkRWxlbWVudCk8L1BSRT4KLTxETD4KLTxERD5DYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZ2l2ZW4gZWxlbWVudCBoYXMgY2hhbmdlZDsKLSB0aGUgZWxlbWVudCBzaG91bGQgdHlwaWNhbGx5IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgcmV0dXJuZWQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPjxDT0RFPmdldEVsZW1lbnQoKTwvQ09ERT48L0E+LgotIEl0IGlzIGV4cGVjdGVkIHRoYXQgY2xpZW50cyB3aWxsIG5vdCBjYWxsIHRoaXMgdGhlbXNlbHZlcyAKLSBzaW5jZSB0aGUgRE9NIGV2ZW50IGxpc3RlbmVycyBhdHRhY2hlZCB0byB0aGUgdW5kZXJseWluZyBET00gd2lsbCBpbnZva2UgdGhlc2UgYXV0b21hdGljYWxseS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y2hhbmdlZEVsZW1lbnQ8L0NPREU+IC0gdGhlIERPTSBlbGVtZW50IGNoYW5nZWQgZm9yIHRoaXMgaW5zdGFuY2UuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1dTRExFbGVtZW50Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMRWxlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUxMGQzNi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzYzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MSBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVdTRExGYWN0b3J5Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3RvcnkgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJXU0RMRmFjdG9yeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1dTRExGYWN0b3J5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBXU0RMRmFjdG9yeTwvSDI+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPldTRExGYWN0b3J5PC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIFRoZSA8Yj5GYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLgotIEl0IHByb3ZpZGVzIGEgY3JlYXRlIG1ldGhvZCBmb3IgZWFjaCBub24tYWJzdHJhY3QgY2xhc3Mgb2YgdGhlIG1vZGVsLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPldTRExQYWNrYWdlPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLTwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRmFjdG9yeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNlSU5TVEFOQ0UiPmVJTlNUQU5DRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlQmluZGluZygpIj5jcmVhdGVCaW5kaW5nPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nRmF1bHQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlQmluZGluZ0ZhdWx0KCkiPmNyZWF0ZUJpbmRpbmdGYXVsdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBGYXVsdDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0lucHV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUJpbmRpbmdJbnB1dCgpIj5jcmVhdGVCaW5kaW5nSW5wdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3BlcmF0aW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUJpbmRpbmdPcGVyYXRpb24oKSI+Y3JlYXRlQmluZGluZ09wZXJhdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3V0cHV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUJpbmRpbmdPdXRwdXQoKSI+Y3JlYXRlQmluZGluZ091dHB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBPdXRwdXQ8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZURlZmluaXRpb24oKSI+Y3JlYXRlRGVmaW5pdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RGVmaW5pdGlvbjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudCgpIj5jcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkZhdWx0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUZhdWx0KCkiPmNyZWF0ZUZhdWx0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5GYXVsdDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW1wb3J0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUltcG9ydCgpIj5jcmVhdGVJbXBvcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkltcG9ydDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVJbnB1dCgpIj5jcmVhdGVJbnB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SW5wdXQ8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZU1lc3NhZ2UoKSI+Y3JlYXRlTWVzc2FnZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+TWVzc2FnZTwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TmFtZXNwYWNlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZU5hbWVzcGFjZSgpIj5jcmVhdGVOYW1lc3BhY2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk5hbWVzcGFjZTwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3BlcmF0aW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZU9wZXJhdGlvbigpIj5jcmVhdGVPcGVyYXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3V0cHV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZU91dHB1dCgpIj5jcmVhdGVPdXRwdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk91dHB1dDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlUGFydCgpIj5jcmVhdGVQYXJ0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVQb3J0KCkiPmNyZWF0ZVBvcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBvcnQ8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydFR5cGU8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlUG9ydFR5cGUoKSI+Y3JlYXRlUG9ydFR5cGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBvcnQgVHlwZTwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlNlcnZpY2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlU2VydmljZSgpIj5jcmVhdGVTZXJ2aWNlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5TZXJ2aWNlPC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZVR5cGVzKCkiPmNyZWF0ZVR5cGVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5UeXBlczwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpIj5jcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlVua25vd24gRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KCkiPmNyZWF0ZVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNnZXRXU0RMUGFja2FnZSgpIj5nZXRXU0RMUGFja2FnZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImVJTlNUQU5DRSI+PCEtLSAtLT48L0E+PEgzPgotZUlOU1RBTkNFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+IDxCPmVJTlNUQU5DRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImNyZWF0ZVBvcnRUeXBlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVBvcnRUeXBlPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0VHlwZTwvQT4gPEI+Y3JlYXRlUG9ydFR5cGU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBvcnQgVHlwZTwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBvcnQgVHlwZTwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImNyZWF0ZU9wZXJhdGlvbigpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVPcGVyYXRpb248L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+IDxCPmNyZWF0ZU9wZXJhdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlTWVzc2FnZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVNZXNzYWdlPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+IDxCPmNyZWF0ZU1lc3NhZ2U8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk1lc3NhZ2U8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5NZXNzYWdlPC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlUGFydCgpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVQYXJ0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+IDxCPmNyZWF0ZVBhcnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBhcnQ8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlQmluZGluZygpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVCaW5kaW5nPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+IDxCPmNyZWF0ZUJpbmRpbmc8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmc8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlQmluZGluZ09wZXJhdGlvbigpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVCaW5kaW5nT3BlcmF0aW9uPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPcGVyYXRpb248L0E+IDxCPmNyZWF0ZUJpbmRpbmdPcGVyYXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgT3BlcmF0aW9uPC9lbT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVTZXJ2aWNlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVNlcnZpY2U8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+U2VydmljZTwvQT4gPEI+Y3JlYXRlU2VydmljZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+U2VydmljZTwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlNlcnZpY2U8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVQb3J0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVBvcnQ8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydDwvQT4gPEI+Y3JlYXRlUG9ydDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UG9ydDwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBvcnQ8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+IDxCPmNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVEZWZpbml0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZURlZmluaXRpb248L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4gPEI+Y3JlYXRlRGVmaW5pdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RGVmaW5pdGlvbjwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRlZmluaXRpb248L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVJbXBvcnQoKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlSW1wb3J0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW1wb3J0PC9BPiA8Qj5jcmVhdGVJbXBvcnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkltcG9ydDwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkltcG9ydDwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImNyZWF0ZUlucHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZUlucHV0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT4gPEI+Y3JlYXRlSW5wdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPklucHV0PC9lbT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SW5wdXQ8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVPdXRwdXQoKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlT3V0cHV0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3V0cHV0PC9BPiA8Qj5jcmVhdGVPdXRwdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk91dHB1dDwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk91dHB1dDwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImNyZWF0ZUZhdWx0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZUZhdWx0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT4gPEI+Y3JlYXRlRmF1bHQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkZhdWx0PC9lbT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RmF1bHQ8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVCaW5kaW5nSW5wdXQoKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlQmluZGluZ0lucHV0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0lucHV0PC9BPiA8Qj5jcmVhdGVCaW5kaW5nSW5wdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgSW5wdXQ8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nIElucHV0PC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlQmluZGluZ091dHB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVCaW5kaW5nT3V0cHV0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+IDxCPmNyZWF0ZUJpbmRpbmdPdXRwdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgT3V0cHV0PC9lbT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBPdXRwdXQ8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVCaW5kaW5nRmF1bHQoKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlQmluZGluZ0ZhdWx0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0ZhdWx0PC9BPiA8Qj5jcmVhdGVCaW5kaW5nRmF1bHQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgRmF1bHQ8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nIEZhdWx0PC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlTmFtZXNwYWNlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZU5hbWVzcGFjZTwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk5hbWVzcGFjZTwvQT4gPEI+Y3JlYXRlTmFtZXNwYWNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5OYW1lc3BhY2U8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5OYW1lc3BhY2U8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVUeXBlcygpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVUeXBlczwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+VHlwZXM8L0E+IDxCPmNyZWF0ZVR5cGVzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5UeXBlczwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlR5cGVzPC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4gPEI+Y3JlYXRlVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlVua25vd24gRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiA8Qj5jcmVhdGVYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFdTRExQYWNrYWdlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFdTRExQYWNrYWdlPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4gPEI+Z2V0V1NETFBhY2thZ2U8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5LjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMRmFjdG9yeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY0ODc1Mi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjgyNSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1XU0RMUGFja2FnZS5MaXRlcmFscwotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkxpdGVyYWxzIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iV1NETFBhY2thZ2UuTGl0ZXJhbHMiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBXU0RMUGFja2FnZS5MaXRlcmFsczwvSDI+Ci08REw+Ci08RFQ+PEI+RW5jbG9zaW5nIGludGVyZmFjZTo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIHN0YXRpYyBpbnRlcmZhY2UgPEI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0I+PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gRGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudAotIDx1bD4KLSAgIDxsaT5lYWNoIGNsYXNzLDwvbGk+Ci0gICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4KLSAgIDxsaT5lYWNoIGVudW0sPC9saT4KLSAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPgotIDwvdWw+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLQotPFA+Ci08SFI+Ci0KLTxQPgotPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkciPkJJTkRJTkc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TIj5CSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX19FUE9SVF9UWVBFIj5CSU5ESU5HX19FUE9SVF9UWVBFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjQklORElOR19fUU5BTUUiPkJJTkRJTkdfX1FOQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfX1VOREVGSU5FRCI+QklORElOR19fVU5ERUZJTkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfRkFVTFQiPkJJTkRJTkdfRkFVTFQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmcgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX0ZBVUxUX19FRkFVTFQiPkJJTkRJTkdfRkFVTFRfX0VGQVVMVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUZhdWx0PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjQklORElOR19GQVVMVF9fTkFNRSI+QklORElOR19GQVVMVF9fTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjQklORElOR19JTlBVVCI+QklORElOR19JTlBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBJbnB1dDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfSU5QVVRfX0VJTlBVVCI+QklORElOR19JTlBVVF9fRUlOUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX0lOUFVUX19OQU1FIj5CSU5ESU5HX0lOUFVUX19OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09QRVJBVElPTiI+QklORElOR19PUEVSQVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmcgT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0ZBVUxUUyI+QklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0ZBVUxUUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgRmF1bHRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQiPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgSW5wdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUIj5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTiI+QklORElOR19PUEVSQVRJT05fX0VPUEVSQVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVPcGVyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fTkFNRSI+QklORElOR19PUEVSQVRJT05fX05BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0JJTkRJTkdfT1VUUFVUIj5CSU5ESU5HX09VVFBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09VVFBVVF9fRU9VVFBVVCI+QklORElOR19PVVRQVVRfX0VPVVRQVVQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNCSU5ESU5HX09VVFBVVF9fTkFNRSI+QklORElOR19PVVRQVVRfX05BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0RFRklOSVRJT04iPkRFRklOSVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkRlZmluaXRpb248L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OX19FQklORElOR1MiPkRFRklOSVRJT05fX0VCSU5ESU5HUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmdzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OX19FSU1QT1JUUyI+REVGSU5JVElPTl9fRUlNUE9SVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVJbXBvcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OX19FTUVTU0FHRVMiPkRFRklOSVRJT05fX0VNRVNTQUdFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OX19FTkFNRVNQQUNFUyI+REVGSU5JVElPTl9fRU5BTUVTUEFDRVM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVOYW1lc3BhY2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OX19FTkNPRElORyI+REVGSU5JVElPTl9fRU5DT0RJTkc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVuY29kaW5nPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjREVGSU5JVElPTl9fRVBPUlRfVFlQRVMiPkRFRklOSVRJT05fX0VQT1JUX1RZUEVTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjREVGSU5JVElPTl9fRVNFUlZJQ0VTIj5ERUZJTklUSU9OX19FU0VSVklDRVM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVTZXJ2aWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjREVGSU5JVElPTl9fRVRZUEVTIj5ERUZJTklUSU9OX19FVFlQRVM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVUeXBlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0RFRklOSVRJT05fX0xPQ0FUSU9OIj5ERUZJTklUSU9OX19MT0NBVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb248L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNERUZJTklUSU9OX19RTkFNRSI+REVGSU5JVElPTl9fUU5BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjREVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRSI+REVGSU5JVElPTl9fVEFSR0VUX05BTUVTUEFDRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VGFyZ2V0IE5hbWVzcGFjZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RURhdGFUeXBlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjRE9NX0RPQ1VNRU5UIj5ET01fRE9DVU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPkRPTSBEb2N1bWVudDwvZW0+JyBkYXRhIHR5cGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RURhdGFUeXBlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjRE9NX0VMRU1FTlQiPkRPTV9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT5ET00gRWxlbWVudDwvZW0+JyBkYXRhIHR5cGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UIj5FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRCI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVCI+RVhURU5TSUJMRV9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5FeHRlbnNpYmxlIEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNFWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5FWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNGQVVMVCI+RkFVTFQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkZhdWx0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJQklORElORyI+SUJJTkRJTkc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJQklORElOR19GQVVMVCI+SUJJTkRJTkdfRkFVTFQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJQklORElOR19JTlBVVCI+SUJJTkRJTkdfSU5QVVQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIElucHV0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJQklORElOR19PUEVSQVRJT04iPklCSU5ESU5HX09QRVJBVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUJpbmRpbmcgT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJQklORElOR19PVVRQVVQiPklCSU5ESU5HX09VVFBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJREVGSU5JVElPTiI+SURFRklOSVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklEZWZpbml0aW9uPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJRVhURU5TSUJJTElUWV9FTEVNRU5UIj5JRVhURU5TSUJJTElUWV9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJRVhURU5TSU9OX1JFR0lTVFJZIj5JRVhURU5TSU9OX1JFR0lTVFJZPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JRXh0ZW5zaW9uIFJlZ2lzdHJ5PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJRkFVTFQiPklGQVVMVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUZhdWx0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJSU1QT1JUIj5JSU1QT1JUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSW1wb3J0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJSU5QVVQiPklJTlBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUlucHV0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJSVRFUkFUT1IiPklJVEVSQVRPUjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUl0ZXJhdG9yPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTElTVCI+SUxJU1Q8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklMaXN0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTUFQIj5JTUFQPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JTWFwPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTUVTU0FHRSI+SU1FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklNZXNzYWdlPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTVBPUlQiPklNUE9SVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SW1wb3J0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSU1QT1JUX19FREVGSU5JVElPTiI+SU1QT1JUX19FREVGSU5JVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RURlZmluaXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTVBPUlRfX0VTQ0hFTUEiPklNUE9SVF9fRVNDSEVNQTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVNjaGVtYTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lNUE9SVF9fTE9DQVRJT05fVVJJIj5JTVBPUlRfX0xPQ0FUSU9OX1VSSTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSU1QT1JUX19OQU1FU1BBQ0VfVVJJIj5JTVBPUlRfX05BTUVTUEFDRV9VUkk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lOUFVUIj5JTlBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SW5wdXQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lPUEVSQVRJT04iPklPUEVSQVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lPVVRQVVQiPklPVVRQVVQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklPdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lQQVJUIj5JUEFSVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lQT1JUIj5JUE9SVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVBvcnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lQT1JUX1RZUEUiPklQT1JUX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklQb3J0IFR5cGU8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lTRVJWSUNFIj5JU0VSVklDRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVNlcnZpY2U8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lUWVBFUyI+SVRZUEVTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JVHlwZXM8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI0lVUkwiPklVUkw8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklVUkw8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI01FU1NBR0UiPk1FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPk1lc3NhZ2U8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNNRVNTQUdFX19FUEFSVFMiPk1FU1NBR0VfX0VQQVJUUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBhcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNNRVNTQUdFX19RTkFNRSI+TUVTU0FHRV9fUU5BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTUVTU0FHRV9fVU5ERUZJTkVEIj5NRVNTQUdFX19VTkRFRklORUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0UiPk1FU1NBR0VfUkVGRVJFTkNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5NZXNzYWdlIFJlZmVyZW5jZTwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI01FU1NBR0VfUkVGRVJFTkNFX19FTUVTU0FHRSI+TUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI01FU1NBR0VfUkVGRVJFTkNFX19OQU1FIj5NRVNTQUdFX1JFRkVSRU5DRV9fTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTkFNRVNQQUNFIj5OQU1FU1BBQ0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPk5hbWVzcGFjZTwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI05BTUVTUEFDRV9fUFJFRklYIj5OQU1FU1BBQ0VfX1BSRUZJWDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UHJlZml4PC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTkFNRVNQQUNFX19VUkkiPk5BTUVTUEFDRV9fVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09QRVJBVElPTiI+T1BFUkFUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5PcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNPUEVSQVRJT05fX0VGQVVMVFMiPk9QRVJBVElPTl9fRUZBVUxUUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjT1BFUkFUSU9OX19FSU5QVVQiPk9QRVJBVElPTl9fRUlOUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNPUEVSQVRJT05fX0VPVVRQVVQiPk9QRVJBVElPTl9fRU9VVFBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09QRVJBVElPTl9fRVBBUkFNRVRFUl9PUkRFUklORyI+T1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUGFyYW1ldGVyIE9yZGVyaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNPUEVSQVRJT05fX05BTUUiPk9QRVJBVElPTl9fTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09QRVJBVElPTl9fU1RZTEUiPk9QRVJBVElPTl9fU1RZTEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlN0eWxlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjT1BFUkFUSU9OX19VTkRFRklORUQiPk9QRVJBVElPTl9fVU5ERUZJTkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VEYXRhVHlwZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09QRVJBVElPTl9UWVBFIj5PUEVSQVRJT05fVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+T3BlcmF0aW9uIFR5cGU8L2VtPicgZGF0YSB0eXBlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI09VVFBVVCI+T1VUUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5PdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BBUlQiPlBBUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNQQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OIj5QQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IERlY2xhcmF0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUEFSVF9fRUxFTUVOVF9OQU1FIj5QQVJUX19FTEVNRU5UX05BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgTmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BBUlRfX0VNRVNTQUdFIj5QQVJUX19FTUVTU0FHRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNQQVJUX19OQU1FIj5QQVJUX19OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUEFSVF9fVFlQRV9ERUZJTklUSU9OIj5QQVJUX19UWVBFX0RFRklOSVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlR5cGUgRGVmaW5pdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BBUlRfX1RZUEVfTkFNRSI+UEFSVF9fVFlQRV9OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UeXBlIE5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BPUlQiPlBPUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlBvcnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNQT1JUX19FQklORElORyI+UE9SVF9fRUJJTkRJTkc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUE9SVF9fTkFNRSI+UE9SVF9fTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjUE9SVF9UWVBFIj5QT1JUX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlBvcnQgVHlwZTwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BPUlRfVFlQRV9fRU9QRVJBVElPTlMiPlBPUlRfVFlQRV9fRU9QRVJBVElPTlM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNQT1JUX1RZUEVfX1FOQU1FIj5QT1JUX1RZUEVfX1FOQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1BPUlRfVFlQRV9fVU5ERUZJTkVEIj5QT1JUX1RZUEVfX1VOREVGSU5FRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFRGF0YVR5cGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNRTkFNRSI+UU5BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGRhdGEgdHlwZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTRVJWSUNFIj5TRVJWSUNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5TZXJ2aWNlPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU0VSVklDRV9fRVBPUlRTIj5TRVJWSUNFX19FUE9SVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQb3J0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU0VSVklDRV9fUU5BTUUiPlNFUlZJQ0VfX1FOQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1NFUlZJQ0VfX1VOREVGSU5FRCI+U0VSVklDRV9fVU5ERUZJTkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1RZUEVTIj5UWVBFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+VHlwZXM8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1VOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UIj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fQ0hJTERSRU4iPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19DSElMRFJFTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+Q2hpbGRyZW48L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjV1NETF9FTEVNRU5UIj5XU0RMX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNXU0RMX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+V1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1dTRExfRUxFTUVOVF9fRUxFTUVOVCI+V1NETF9FTEVNRU5UX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFRGF0YVR5cGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNXU0RMX0VYQ0VQVElPTiI+V1NETF9FWENFUFRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPkV4Y2VwdGlvbjwvZW0+JyBkYXRhIHR5cGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwjWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlQiPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sI1hTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUEiPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUE8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlNjaGVtYTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJXU0RMX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVdTRExfRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5XU0RMX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPldTRExFbGVtZW50SW1wbDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldFdTRExFbGVtZW50KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IldTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1XU0RMX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+V1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IldTRExfRUxFTUVOVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotV1NETF9FTEVNRU5UX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5XU0RMX0VMRU1FTlRfX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLVBPUlRfVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5QT1JUX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlBvcnQgVHlwZTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+UG9ydFR5cGVJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0UG9ydFR5cGUoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUE9SVF9UWVBFX19RTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotUE9SVF9UWVBFX19RTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+UE9SVF9UWVBFX19RTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX1RZUEVfX1VOREVGSU5FRCI+PCEtLSAtLT48L0E+PEgzPgotUE9SVF9UWVBFX19VTkRFRklORUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlBPUlRfVFlQRV9fVU5ERUZJTkVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX1RZUEVfX0VPUEVSQVRJT05TIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUX1RZUEVfX0VPUEVSQVRJT05TPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5QT1JUX1RZUEVfX0VPUEVSQVRJT05TPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FT3BlcmF0aW9uczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT048L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+T1BFUkFUSU9OPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5PcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk9wZXJhdGlvbkltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRPcGVyYXRpb24oKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19TVFlMRSI+PCEtLSAtLT48L0E+PEgzPgotT1BFUkFUSU9OX19TVFlMRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+T1BFUkFUSU9OX19TVFlMRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJPUEVSQVRJT05fX05BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLU9QRVJBVElPTl9fTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+T1BFUkFUSU9OX19OQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19VTkRFRklORUQiPjwhLS0gLS0+PC9BPjxIMz4KLU9QRVJBVElPTl9fVU5ERUZJTkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5PUEVSQVRJT05fX1VOREVGSU5FRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19FSU5QVVQiPjwhLS0gLS0+PC9BPjxIMz4KLU9QRVJBVElPTl9fRUlOUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5PUEVSQVRJT05fX0VJTlBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUlucHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19FT1VUUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT05fX0VPVVRQVVQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPk9QRVJBVElPTl9fRU9VVFBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik9QRVJBVElPTl9fRUZBVUxUUyI+PCEtLSAtLT48L0E+PEgzPgotT1BFUkFUSU9OX19FRkFVTFRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5PUEVSQVRJT05fX0VGQVVMVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik9QRVJBVElPTl9fRVBBUkFNRVRFUl9PUkRFUklORyI+PCEtLSAtLT48L0E+PEgzPgotT1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5PUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQYXJhbWV0ZXIgT3JkZXJpbmc8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1FU1NBR0UiPjwhLS0gLS0+PC9BPjxIMz4KLU1FU1NBR0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+TUVTU0FHRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+TWVzc2FnZTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TWVzc2FnZUltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRNZXNzYWdlKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1FU1NBR0VfX1FOQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX19RTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+TUVTU0FHRV9fUU5BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRV9fVU5ERUZJTkVEIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX19VTkRFRklORUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPk1FU1NBR0VfX1VOREVGSU5FRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRV9fRVBBUlRTIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX19FUEFSVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPk1FU1NBR0VfX0VQQVJUUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBhcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQQVJUIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPlBBUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlBhcnRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0UGFydCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQQVJUX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJUX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5QQVJUX19OQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUEFSVF9fRUxFTUVOVF9OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJUX19FTEVNRU5UX05BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlBBUlRfX0VMRU1FTlRfTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUEFSVF9fVFlQRV9OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJUX19UWVBFX05BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlBBUlRfX1RZUEVfTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHlwZSBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUEFSVF9fVFlQRV9ERUZJTklUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJUX19UWVBFX0RFRklOSVRJT048L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPlBBUlRfX1RZUEVfREVGSU5JVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHlwZSBEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUEFSVF9fRUxFTUVOVF9ERUNMQVJBVElPTiI+PCEtLSAtLT48L0E+PEgzPgotUEFSVF9fRUxFTUVOVF9ERUNMQVJBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVSZWZlcmVuY2UgPEI+UEFSVF9fRUxFTUVOVF9ERUNMQVJBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBEZWNsYXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBBUlRfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJUX19FTUVTU0FHRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVSZWZlcmVuY2UgPEI+UEFSVF9fRU1FU1NBR0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElORyI+PCEtLSAtLT48L0E+PEgzPgotQklORElORzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5CSU5ESU5HPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nSW1wbDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldEJpbmRpbmcoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19fUU5BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfX1FOQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5CSU5ESU5HX19RTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX19VTkRFRklORUQiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfX1VOREVGSU5FRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+QklORElOR19fVU5ERUZJTkVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX19FUE9SVF9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX19FUE9SVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5CSU5ESU5HX19FUE9SVF9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUyI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVSZWZlcmVuY2UgPEI+QklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgT3BlcmF0aW9uczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfT1BFUkFUSU9OPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPkJJTkRJTkdfT1BFUkFUSU9OPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+QmluZGluZ09wZXJhdGlvbkltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRCaW5kaW5nT3BlcmF0aW9uKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1BFUkFUSU9OX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09QRVJBVElPTl9fTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+QklORElOR19PUEVSQVRJT05fX05BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTiI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19PUEVSQVRJT05fX0VPUEVSQVRJT048L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPkJJTkRJTkdfT1BFUkFUSU9OX19FT1BFUkFUSU9OPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FT3BlcmF0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0lOUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgSW5wdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNFUlZJQ0UiPjwhLS0gLS0+PC9BPjxIMz4KLVNFUlZJQ0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+U0VSVklDRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+U2VydmljZTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U2VydmljZUltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRTZXJ2aWNlKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNFUlZJQ0VfX1FOQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1TRVJWSUNFX19RTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U0VSVklDRV9fUU5BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU0VSVklDRV9fVU5ERUZJTkVEIj48IS0tIC0tPjwvQT48SDM+Ci1TRVJWSUNFX19VTkRFRklORUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlNFUlZJQ0VfX1VOREVGSU5FRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU0VSVklDRV9fRVBPUlRTIj48IS0tIC0tPjwvQT48SDM+Ci1TRVJWSUNFX19FUE9SVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPlNFUlZJQ0VfX0VQT1JUUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBvcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPlBPUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlBvcnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlBvcnRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0UG9ydCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5QT1JUX19OQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUE9SVF9fRUJJTkRJTkciPjwhLS0gLS0+PC9BPjxIMz4KLVBPUlRfX0VCSU5ESU5HPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5QT1JUX19FQklORElORzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmc8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJFWFRFTlNJQklMSVRZX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUVYVEVOU0lCSUxJVFlfRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PEgzPgotRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJFWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PEgzPgotRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJERUZJTklUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPkRFRklOSVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkRlZmluaXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkRlZmluaXRpb25JbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0RGVmaW5pdGlvbigpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5ERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgTmFtZXNwYWNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9fTE9DQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLURFRklOSVRJT05fX0xPQ0FUSU9OPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5ERUZJTklUSU9OX19MT0NBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb248L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJERUZJTklUSU9OX19RTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fUU5BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPkRFRklOSVRJT05fX1FOQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fX0VOQ09ESU5HIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OX19FTkNPRElORzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+REVGSU5JVElPTl9fRU5DT0RJTkc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVuY29kaW5nPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9fRUlNUE9SVFMiPjwhLS0gLS0+PC9BPjxIMz4KLURFRklOSVRJT05fX0VJTVBPUlRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5ERUZJTklUSU9OX19FSU1QT1JUUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUltcG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fX0VUWVBFUyI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fRVRZUEVTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5ERUZJTklUSU9OX19FVFlQRVM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVUeXBlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fX0VNRVNTQUdFUyI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fRU1FU1NBR0VTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5ERUZJTklUSU9OX19FTUVTU0FHRVM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9fRVBPUlRfVFlQRVMiPjwhLS0gLS0+PC9BPjxIMz4KLURFRklOSVRJT05fX0VQT1JUX1RZUEVTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5ERUZJTklUSU9OX19FUE9SVF9UWVBFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fX0VCSU5ESU5HUyI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fRUJJTkRJTkdTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5ERUZJTklUSU9OX19FQklORElOR1M8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9fRVNFUlZJQ0VTIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OX19FU0VSVklDRVM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPkRFRklOSVRJT05fX0VTRVJWSUNFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVNlcnZpY2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJERUZJTklUSU9OX19FTkFNRVNQQUNFUyI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fRU5BTUVTUEFDRVM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPkRFRklOSVRJT05fX0VOQU1FU1BBQ0VTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTmFtZXNwYWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1QT1JUIj48IS0tIC0tPjwvQT48SDM+Ci1JTVBPUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SU1QT1JUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JbXBvcnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkltcG9ydEltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJbXBvcnQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1QT1JUX19OQU1FU1BBQ0VfVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1JTVBPUlRfX05BTUVTUEFDRV9VUkk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPklNUE9SVF9fTkFNRVNQQUNFX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNUE9SVF9fTE9DQVRJT05fVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1JTVBPUlRfX0xPQ0FUSU9OX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+SU1QT1JUX19MT0NBVElPTl9VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNUE9SVF9fRURFRklOSVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUlNUE9SVF9fRURFRklOSVRJT048L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPklNUE9SVF9fRURFRklOSVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1QT1JUX19FU0NIRU1BIj48IS0tIC0tPjwvQT48SDM+Ci1JTVBPUlRfX0VTQ0hFTUE8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPklNUE9SVF9fRVNDSEVNQTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVNjaGVtYTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkVYVEVOU0lCTEVfRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotRVhURU5TSUJMRV9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPkVYVEVOU0lCTEVfRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5FeHRlbnNpYmxlRWxlbWVudEltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRFeHRlbnNpYmxlRWxlbWVudCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJFWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48SDM+Ci1FWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5FWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU5QVVQiPjwhLS0gLS0+PC9BPjxIMz4KLUlOUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklOUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JbnB1dDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+SW5wdXRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SW5wdXQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1VUUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1PVVRQVVQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+T1VUUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5PdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk91dHB1dEltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRPdXRwdXQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRkFVTFQiPjwhLS0gLS0+PC9BPjxIMz4KLUZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPkZBVUxUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5GYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RmF1bHRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0RmF1bHQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19JTlBVVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19JTlBVVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5CSU5ESU5HX0lOUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nIElucHV0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nSW5wdXRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0QmluZGluZ0lucHV0KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfSU5QVVRfX05BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfSU5QVVRfX05BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPkJJTkRJTkdfSU5QVVRfX05BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX0lOUFVUX19FSU5QVVQiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfSU5QVVRfX0VJTlBVVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVSZWZlcmVuY2UgPEI+QklORElOR19JTlBVVF9fRUlOUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX09VVFBVVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19PVVRQVVQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+QklORElOR19PVVRQVVQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nT3V0cHV0SW1wbDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldEJpbmRpbmdPdXRwdXQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PVVRQVVRfX05BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfT1VUUFVUX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5CSU5ESU5HX09VVFBVVF9fTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1VUUFVUX19FT1VUUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09VVFBVVF9fRU9VVFBVVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVSZWZlcmVuY2UgPEI+QklORElOR19PVVRQVVRfX0VPVVRQVVQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX0ZBVUxUIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX0ZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPkJJTkRJTkdfRkFVTFQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmcgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkJpbmRpbmdGYXVsdEltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRCaW5kaW5nRmF1bHQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19GQVVMVF9fTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19GQVVMVF9fTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+QklORElOR19GQVVMVF9fTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfRkFVTFRfX0VGQVVMVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19GQVVMVF9fRUZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5CSU5ESU5HX0ZBVUxUX19FRkFVTFQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVGYXVsdDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik5BTUVTUEFDRSI+PCEtLSAtLT48L0E+PEgzPgotTkFNRVNQQUNFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPk5BTUVTUEFDRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+TmFtZXNwYWNlPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5OYW1lc3BhY2VJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0TmFtZXNwYWNlKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik5BTUVTUEFDRV9fVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1OQU1FU1BBQ0VfX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+TkFNRVNQQUNFX19VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik5BTUVTUEFDRV9fUFJFRklYIj48IS0tIC0tPjwvQT48SDM+Ci1OQU1FU1BBQ0VfX1BSRUZJWDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+TkFNRVNQQUNFX19QUkVGSVg8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlByZWZpeDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklQT1JUX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLUlQT1JUX1RZUEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SVBPUlRfVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVBvcnQgVHlwZTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+UG9ydFR5cGU8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJUG9ydFR5cGUoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU9QRVJBVElPTiI+PCEtLSAtLT48L0E+PEgzPgotSU9QRVJBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JT1BFUkFUSU9OPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5PcGVyYXRpb248L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJT3BlcmF0aW9uKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklJTlBVVCI+PCEtLSAtLT48L0E+PEgzPgotSUlOUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklJTlBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUlucHV0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5JbnB1dDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElJbnB1dCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJT1VUUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1JT1VUUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklPVVRQVVQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklPdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk91dHB1dDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElPdXRwdXQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUZBVUxUIj48IS0tIC0tPjwvQT48SDM+Ci1JRkFVTFQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SUZBVUxUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkZhdWx0PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUZhdWx0KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1JTUVTU0FHRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JTUVTU0FHRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SU1lc3NhZ2U8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk1lc3NhZ2U8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJTWVzc2FnZSgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJUEFSVCI+PCEtLSAtLT48L0E+PEgzPgotSVBBUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SVBBUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklQYXJ0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5QYXJ0PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SVBhcnQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVNFUlZJQ0UiPjwhLS0gLS0+PC9BPjxIMz4KLUlTRVJWSUNFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklTRVJWSUNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JU2VydmljZTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U2VydmljZTwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElTZXJ2aWNlKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklQT1JUIj48IS0tIC0tPjwvQT48SDM+Ci1JUE9SVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JUE9SVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVBvcnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlBvcnQ8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJUG9ydCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJQklORElORyI+PCEtLSAtLT48L0E+PEgzPgotSUJJTkRJTkc8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SUJJTkRJTkc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUJpbmRpbmcoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUJJTkRJTkdfT1BFUkFUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1JQklORElOR19PUEVSQVRJT048L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SUJJTkRJTkdfT1BFUkFUSU9OPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JQmluZGluZyBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkJpbmRpbmdPcGVyYXRpb248L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJQmluZGluZ09wZXJhdGlvbigpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJQklORElOR19JTlBVVCI+PCEtLSAtLT48L0E+PEgzPgotSUJJTkRJTkdfSU5QVVQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SUJJTkRJTkdfSU5QVVQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIElucHV0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nSW5wdXQ8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJQmluZGluZ0lucHV0KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklCSU5ESU5HX09VVFBVVCI+PCEtLSAtLT48L0E+PEgzPgotSUJJTkRJTkdfT1VUUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklCSU5ESU5HX09VVFBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nT3V0cHV0PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUJpbmRpbmdPdXRwdXQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUJJTkRJTkdfRkFVTFQiPjwhLS0gLS0+PC9BPjxIMz4KLUlCSU5ESU5HX0ZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklCSU5ESU5HX0ZBVUxUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JQmluZGluZyBGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+QmluZGluZ0ZhdWx0PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUJpbmRpbmdGYXVsdCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJRVhURU5TSUJJTElUWV9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JRVhURU5TSUJJTElUWV9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklFWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkV4dGVuc2liaWxpdHlFbGVtZW50PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUV4dGVuc2liaWxpdHlFbGVtZW50KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklERUZJTklUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1JREVGSU5JVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JREVGSU5JVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SURlZmluaXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkRlZmluaXRpb248L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJRGVmaW5pdGlvbigpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSU1QT1JUIj48IS0tIC0tPjwvQT48SDM+Ci1JSU1QT1JUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklJTVBPUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklJbXBvcnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkltcG9ydDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElJbXBvcnQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUxJU1QiPjwhLS0gLS0+PC9BPjxIMz4KLUlMSVNUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklMSVNUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JTGlzdDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TGlzdDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElMaXN0KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNQVAiPjwhLS0gLS0+PC9BPjxIMz4KLUlNQVA8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SU1BUDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SU1hcDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TWFwPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SU1hcCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJVVJMIj48IS0tIC0tPjwvQT48SDM+Ci1JVVJMPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklVUkw8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklVUkw8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlVSTDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElVUkwoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUVYVEVOU0lPTl9SRUdJU1RSWSI+PCEtLSAtLT48L0E+PEgzPgotSUVYVEVOU0lPTl9SRUdJU1RSWTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JRVhURU5TSU9OX1JFR0lTVFJZPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JRXh0ZW5zaW9uIFJlZ2lzdHJ5PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5FeHRlbnNpb25SZWdpc3RyeTwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElFeHRlbnNpb25SZWdpc3RyeSgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJUWVBFUyI+PCEtLSAtLT48L0E+PEgzPgotVFlQRVM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+VFlQRVM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlR5cGVzPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5UeXBlc0ltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRUeXBlcygpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSVRFUkFUT1IiPjwhLS0gLS0+PC9BPjxIMz4KLUlJVEVSQVRPUjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JSVRFUkFUT1I8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklJdGVyYXRvcjwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+SXRlcmF0b3I8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJSXRlcmF0b3IoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVRZUEVTIj48IS0tIC0tPjwvQT48SDM+Ci1JVFlQRVM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SVRZUEVTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JVHlwZXM8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlR5cGVzPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SVR5cGVzKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudEltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOIj48IS0tIC0tPjwvQT48SDM+Ci1VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fQ0hJTERSRU48L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19DSElMRFJFTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+Q2hpbGRyZW48L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50SW1wbDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUEiPjwhLS0gLS0+PC9BPjxIMz4KLVhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUE8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUE8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlNjaGVtYTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1FU1NBR0VfUkVGRVJFTkNFIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX1JFRkVSRU5DRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5NRVNTQUdFX1JFRkVSRU5DRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+TWVzc2FnZSBSZWZlcmVuY2U8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk1lc3NhZ2VSZWZlcmVuY2VJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0TWVzc2FnZVJlZmVyZW5jZSgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNRVNTQUdFX1JFRkVSRU5DRV9fTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPk1FU1NBR0VfUkVGRVJFTkNFX19OQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPk1FU1NBR0VfUkVGRVJFTkNFX19FTUVTU0FHRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJRTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotUU5BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFRGF0YVR5cGUgPEI+UU5BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPlFOYW1lPC9lbT4nIGRhdGEgdHlwZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5RTmFtZTwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldFFOYW1lKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik9QRVJBVElPTl9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT05fVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVEYXRhVHlwZSA8Qj5PUEVSQVRJT05fVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+T3BlcmF0aW9uIFR5cGU8L2VtPicgZGF0YSB0eXBlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk9wZXJhdGlvblR5cGU8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRPcGVyYXRpb25UeXBlKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRPTV9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1ET01fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVEYXRhVHlwZSA8Qj5ET01fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+RE9NIEVsZW1lbnQ8L2VtPicgZGF0YSB0eXBlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkVsZW1lbnQ8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRET01FbGVtZW50KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IldTRExfRVhDRVBUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1XU0RMX0VYQ0VQVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVEYXRhVHlwZSA8Qj5XU0RMX0VYQ0VQVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+RXhjZXB0aW9uPC9lbT4nIGRhdGEgdHlwZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5XU0RMRXhjZXB0aW9uPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0V1NETEV4Y2VwdGlvbigpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJET01fRE9DVU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLURPTV9ET0NVTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVEYXRhVHlwZSA8Qj5ET01fRE9DVU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPkRPTSBEb2N1bWVudDwvZW0+JyBkYXRhIHR5cGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RG9jdW1lbnQ8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRET01Eb2N1bWVudCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhOGVmZjEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg1MzkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUxIEVEVCAyMDA4IC0tPgotPFRJVExFPgotV1NETFBhY2thZ2UKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IldTRExQYWNrYWdlIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvV1NETFBhY2thZ2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDs8QSBIUkVGPSIjbmVzdGVkX2NsYXNzX3N1bW1hcnkiPk5FU1RFRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIFdTRExQYWNrYWdlPC9IMj4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+V1NETFBhY2thZ2U8L0I+PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gVGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGUgbW9kZWwuCi0gSXQgY29udGFpbnMgYWNjZXNzb3JzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRvIHJlcHJlc2VudAotIDx1bD4KLSAgIDxsaT5lYWNoIGNsYXNzLDwvbGk+Ci0gICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4KLSAgIDxsaT5lYWNoIGVudW0sPC9saT4KLSAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPgotIDwvdWw+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0gPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+Ci0gVGhlIFdTREwgbW9kZWwgY29udGFpbnMgY2xhc3NlcyBmb3IgdGhlIFdlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkuCi0gCi0gV1NETCBkZXNjcmliZXMgbmV0d29yayBzZXJ2aWNlcyBhcyBzZXRzIG9mIGVuZHBvaW50cyBvcGVyYXRpbmcgb24gbWVzc2FnZXMuIFRoZSBvcGVyYXRpb25zIGFuZCBtZXNzYWdlcyBhcmUgZGVzY3JpYmVkIGFic3RyYWN0bHksIGFuZCB0aGVuIGJvdW5kIHRvIGEgY29uY3JldGUgbmV0d29yayBwcm90b2NvbCBhbmQgbWVzc2FnZSBmb3JtYXQgdG8gZGVmaW5lIGFuIGVuZHBvaW50LgotIAotIFdTREwgZGVzY3JpYmVzIHRoZSBmb3JtYXRzIG9mIHRoZSBtZXNzYWdlcyBleGNoYW5nZWQgYnkgdGhlIHNlcnZpY2VzLCBhbmQgc3VwcG9ydHMgdGhlIFhNTCBTY2hlbWFzIHNwZWNpZmljYXRpb24gYXMgaXRzIGNhbm9uaWNhbCB0eXBlIHN5c3RlbS4gVGhpcyBwYWNrYWdlIHVzZXMgYW4gWE1MIFNjaGVtYSBJbmZvc2V0IG1vZGVsIHBhY2thZ2UgKHNlZSB0aGUgWFNEIHBhY2thZ2UpIHRvIGRlc2NyaWJlIHRoZSBhYnN0cmFjdCBtZXNzYWdlIGZvcm1hdHMuCi0gCi0gVGhlIG1vZGVsIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZGlhZ3JhbXMsIG5hbWVkIGFmdGVyIHRoZSBjb3JyZXNwb25kaW5nIGNoYXB0ZXJzIGluIHRoZSBXU0RMIDEuMSBzcGVjaWZpY2F0aW9uIChodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL05PVEUtd3NkbC0yMDAxMDMxNSkKLSAtIDIuMSBEZWZpbml0aW9uLCBzaG93cyB0aGUgV1NETCBkZWZpbml0aW9uIGVsZW1lbnQgYW5kIHRoZSBXU0RMIGRvY3VtZW50IHN0cnVjdHVyZQotIC0gMi4xLjEgTmFtaW5nIGFuZCBMaW5raW5nLCBzaG93cyB0aGUgbmFtZXNwYWNlIGFuZCBpbXBvcnQgbWVjaGFuaXNtCi0gLSAyLjEuMyBFeHRlbnNpYmlsaXR5LCBzaG93cyB0aGUgV1NETCBleHRlbnNpYmlsaXR5IG1lY2hhbmlzbQotIC0gMi4yIFR5cGVzLCBzaG93cyB0aGUgdXNlIG9mIFhNTCBTY2hlbWEgdHlwZXMgaW4gV1NETAotIC0gMi4zIE1lc3NhZ2VzLCAyLjQgUG9ydFR5cGVzLCAyLjUgQmluZGluZ3MgYW5kIDIuNyBTZXJ2aWNlcywgc2hvdyB0aGUgbWFqb3IgV1NETCBlbGVtZW50cyBhbmQgdGhlaXIgcmVsYXRpb25zLgotIAotIFRoZSBXU0RMIGNsYXNzZXMgZXh0ZW5kIHRoZSBqYXZheC53c2RsIGludGVyZmFjZXMgZGVmaW5lZCBieSBKU1IgMTEwLiBDbGFzc2VzIHdpdGggaW50ZXJmYWNlIGFuZCBkYXRhdHlwZSBzdGVyZW90eXBlcyBhcmUgdXNlZCB0byByZXByZXNlbnQgdGhlc2Ugbm9uLU1PRiBpbnRlcmZhY2VzLgotIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPldTRExGYWN0b3J5PC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLTwhLS0gPT09PT09PT0gTkVTVEVEIENMQVNTIFNVTU1BUlkgPT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im5lc3RlZF9jbGFzc19zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TmVzdGVkIENsYXNzIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudAotIAotICAgZWFjaCBjbGFzcywKLSAgIGVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLAotICAgZWFjaCBlbnVtLAotICAgYW5kIGVhY2ggZGF0YSB0eXBlCi0gCi0gPCE8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElORyI+QklORElORzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+QklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TIj5CSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+QklORElOR19fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19FTEVNRU5UIj5CSU5ESU5HX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19fRVBPUlRfVFlQRSI+QklORElOR19fRVBPUlRfVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZTwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfX1FOQU1FIj5CSU5ESU5HX19RTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX19VTkRFRklORUQiPkJJTkRJTkdfX1VOREVGSU5FRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19GQVVMVCI+QklORElOR19GQVVMVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmcgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+QklORElOR19GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0ZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+QklORElOR19GQVVMVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0ZBVUxUX19FRkFVTFQiPkJJTkRJTkdfRkFVTFRfX0VGQVVMVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUZhdWx0PC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19GQVVMVF9fRUxFTUVOVCI+QklORElOR19GQVVMVF9fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfRkFVTFRfX05BTUUiPkJJTkRJTkdfRkFVTFRfX05BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPkJJTkRJTkdfRkFVTFRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZyBGYXVsdDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPkJJTkRJTkdfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZzwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0lOUFVUIj5CSU5ESU5HX0lOUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBJbnB1dDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19JTlBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5CSU5ESU5HX0lOUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfSU5QVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5CSU5ESU5HX0lOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfSU5QVVRfX0VJTlBVVCI+QklORElOR19JTlBVVF9fRUlOUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX0lOUFVUX19FTEVNRU5UIj5CSU5ESU5HX0lOUFVUX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19JTlBVVF9fTkFNRSI+QklORElOR19JTlBVVF9fTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVCI+QklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5CaW5kaW5nIElucHV0PC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OIj5CSU5ESU5HX09QRVJBVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmcgT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5CSU5ESU5HX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNCSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTIj5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVCI+QklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0lOUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19PVVRQVVQiPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19PVVRQVVQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVCaW5kaW5nIE91dHB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1BFUkFUSU9OX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+QklORElOR19PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fX0VMRU1FTlQiPkJJTkRJTkdfT1BFUkFUSU9OX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fX0VPUEVSQVRJT04iPkJJTkRJTkdfT1BFUkFUSU9OX19FT1BFUkFUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FT3BlcmF0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fX05BTUUiPkJJTkRJTkdfT1BFUkFUSU9OX19OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+QklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PVVRQVVQiPkJJTkRJTkdfT1VUUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkJJTkRJTkdfT1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0JJTkRJTkdfT1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+QklORElOR19PVVRQVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PVVRQVVRfX0VMRU1FTlQiPkJJTkRJTkdfT1VUUFVUX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PVVRQVVRfX0VPVVRQVVQiPkJJTkRJTkdfT1VUUFVUX19FT1VUUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FT3V0cHV0PC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PVVRQVVRfX05BTUUiPkJJTkRJTkdfT1VUUFVUX19OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjQklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVCI+QklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZyBPdXRwdXQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTiI+REVGSU5JVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkRlZmluaXRpb248L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+REVGSU5JVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FQklORElOR1MiPkRFRklOSVRJT05fX0VCSU5ESU5HUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmdzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+REVGSU5JVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FSU1QT1JUUyI+REVGSU5JVElPTl9fRUlNUE9SVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVJbXBvcnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19FTEVNRU5UIj5ERUZJTklUSU9OX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRU1FU1NBR0VTIj5ERUZJTklUSU9OX19FTUVTU0FHRVM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRU5BTUVTUEFDRVMiPkRFRklOSVRJT05fX0VOQU1FU1BBQ0VTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTmFtZXNwYWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fRU5DT0RJTkciPkRFRklOSVRJT05fX0VOQ09ESU5HPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbmNvZGluZzwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX0VQT1JUX1RZUEVTIj5ERUZJTklUSU9OX19FUE9SVF9UWVBFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX0VTRVJWSUNFUyI+REVGSU5JVElPTl9fRVNFUlZJQ0VTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FU2VydmljZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX0VUWVBFUyI+REVGSU5JVElPTl9fRVRZUEVTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX19MT0NBVElPTiI+REVGSU5JVElPTl9fTE9DQVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjREVGSU5JVElPTl9fUU5BTUUiPkRFRklOSVRJT05fX1FOQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0RFRklOSVRJT05fX1RBUkdFVF9OQU1FU1BBQ0UiPkRFRklOSVRJT05fX1RBUkdFVF9OQU1FU1BBQ0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBOYW1lc3BhY2U8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNERUZJTklUSU9OX0ZFQVRVUkVfQ09VTlQiPkRFRklOSVRJT05fRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RGVmaW5pdGlvbjwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNET01fRE9DVU1FTlQiPkRPTV9ET0NVTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPkRPTSBEb2N1bWVudDwvZW0+JyBkYXRhIHR5cGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRE9NX0VMRU1FTlQiPkRPTV9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8ZW0+RE9NIEVsZW1lbnQ8L2VtPicgZGF0YSB0eXBlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2VJTlNUQU5DRSI+ZUlOU1RBTkNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2VOQU1FIj5lTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgcGFja2FnZSBuYW1lPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNlTlNfUFJFRklYIj5lTlNfUFJFRklYPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBwYWNrYWdlIG5hbWVzcGFjZSBuYW1lPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNlTlNfVVJJIj5lTlNfVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkk8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UIj5FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UIj5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNFWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRSI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQiPkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJMRV9FTEVNRU5UIj5FWFRFTlNJQkxFX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5FeHRlbnNpYmxlIEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5FWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+RVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0VYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVCI+RVhURU5TSUJMRV9FTEVNRU5UX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPkVYVEVOU0lCTEVfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5FeHRlbnNpYmxlIEVsZW1lbnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFQiPkZBVUxUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+RmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0ZBVUxUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkZBVUxUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0ZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+RkFVTFRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFRfX0VMRU1FTlQiPkZBVUxUX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFRfX0VNRVNTQUdFIj5GQVVMVF9fRU1FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFRfX05BTUUiPkZBVUxUX19OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjRkFVTFRfRkVBVFVSRV9DT1VOVCI+RkFVTFRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RmF1bHQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUJJTkRJTkciPklCSU5ESU5HPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lCSU5ESU5HX0ZBVUxUIj5JQklORElOR19GQVVMVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19GQVVMVF9GRUFUVVJFX0NPVU5UIj5JQklORElOR19GQVVMVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JQmluZGluZyBGYXVsdDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19GRUFUVVJFX0NPVU5UIj5JQklORElOR19GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JQmluZGluZzwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19JTlBVVCI+SUJJTkRJTkdfSU5QVVQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JQmluZGluZyBJbnB1dDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUJJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVCI+SUJJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUJpbmRpbmcgSW5wdXQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUJJTkRJTkdfT1BFUkFUSU9OIj5JQklORElOR19PUEVSQVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JQmluZGluZyBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lCSU5ESU5HX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj5JQklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUJpbmRpbmcgT3BlcmF0aW9uPC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lCSU5ESU5HX09VVFBVVCI+SUJJTkRJTkdfT1VUUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJQklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVCI+SUJJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklCaW5kaW5nIE91dHB1dDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJREVGSU5JVElPTiI+SURFRklOSVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JRGVmaW5pdGlvbjwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSURFRklOSVRJT05fRkVBVFVSRV9DT1VOVCI+SURFRklOSVRJT05fRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SURlZmluaXRpb248L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUVYVEVOU0lCSUxJVFlfRUxFTUVOVCI+SUVYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lFWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+SUVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lFWFRFTlNJT05fUkVHSVNUUlkiPklFWFRFTlNJT05fUkVHSVNUUlk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JRXh0ZW5zaW9uIFJlZ2lzdHJ5PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJRVhURU5TSU9OX1JFR0lTVFJZX0ZFQVRVUkVfQ09VTlQiPklFWFRFTlNJT05fUkVHSVNUUllfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUV4dGVuc2lvbiBSZWdpc3RyeTwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJRkFVTFQiPklGQVVMVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUZBVUxUX0ZFQVRVUkVfQ09VTlQiPklGQVVMVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JRmF1bHQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUlNUE9SVCI+SUlNUE9SVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklJbXBvcnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lJTVBPUlRfRkVBVFVSRV9DT1VOVCI+SUlNUE9SVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JSW1wb3J0PC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lJTlBVVCI+SUlOUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUlucHV0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJSU5QVVRfRkVBVFVSRV9DT1VOVCI+SUlOUFVUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklJbnB1dDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJSVRFUkFUT1IiPklJVEVSQVRPUjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklJdGVyYXRvcjwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUlURVJBVE9SX0ZFQVRVUkVfQ09VTlQiPklJVEVSQVRPUl9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JSXRlcmF0b3I8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSUxJU1QiPklMSVNUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUxpc3Q8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lMSVNUX0ZFQVRVUkVfQ09VTlQiPklMSVNUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklMaXN0PC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNQVAiPklNQVA8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JTWFwPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTUFQX0ZFQVRVUkVfQ09VTlQiPklNQVBfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1hcDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTUVTU0FHRSI+SU1FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JTWVzc2FnZTwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1FU1NBR0VfRkVBVFVSRV9DT1VOVCI+SU1FU1NBR0VfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1lc3NhZ2U8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUIj5JTVBPUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JbXBvcnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNUE9SVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5JTVBPUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19FREVGSU5JVElPTiI+SU1QT1JUX19FREVGSU5JVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RURlZmluaXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTVBPUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5JTVBPUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19FTEVNRU5UIj5JTVBPUlRfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTVBPUlRfX0VTQ0hFTUEiPklNUE9SVF9fRVNDSEVNQTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVNjaGVtYTwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lNUE9SVF9fTE9DQVRJT05fVVJJIj5JTVBPUlRfX0xPQ0FUSU9OX1VSSTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU1QT1JUX19OQU1FU1BBQ0VfVVJJIj5JTVBPUlRfX05BTUVTUEFDRV9VUkk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTVBPUlRfRkVBVFVSRV9DT1VOVCI+SU1QT1JUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkltcG9ydDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVCI+SU5QVVQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JbnB1dDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU5QVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+SU5QVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU5QVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5JTlBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVF9fRUxFTUVOVCI+SU5QVVRfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVF9fRU1FU1NBR0UiPklOUFVUX19FTUVTU0FHRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVF9fTkFNRSI+SU5QVVRfX05BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJTlBVVF9GRUFUVVJFX0NPVU5UIj5JTlBVVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JbnB1dDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJT1BFUkFUSU9OIj5JT1BFUkFUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU9QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj5JT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklPcGVyYXRpb248L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSU9VVFBVVCI+SU9VVFBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklPdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lPVVRQVVRfRkVBVFVSRV9DT1VOVCI+SU9VVFBVVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JT3V0cHV0PC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lQQVJUIj5JUEFSVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklQYXJ0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJUEFSVF9GRUFUVVJFX0NPVU5UIj5JUEFSVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JUGFydDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJUE9SVCI+SVBPUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JUG9ydDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVBPUlRfRkVBVFVSRV9DT1VOVCI+SVBPUlRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVBvcnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVBPUlRfVFlQRSI+SVBPUlRfVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklQb3J0IFR5cGU8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lQT1JUX1RZUEVfRkVBVFVSRV9DT1VOVCI+SVBPUlRfVFlQRV9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JUG9ydCBUeXBlPC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lTRVJWSUNFIj5JU0VSVklDRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklTZXJ2aWNlPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJU0VSVklDRV9GRUFUVVJFX0NPVU5UIj5JU0VSVklDRV9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU2VydmljZTwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNJVFlQRVMiPklUWVBFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklUeXBlczwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVRZUEVTX0ZFQVRVUkVfQ09VTlQiPklUWVBFU19GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JVHlwZXM8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjSVVSTCI+SVVSTDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklVUkw8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI0lVUkxfRkVBVFVSRV9DT1VOVCI+SVVSTF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JVVJMPC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0UiPk1FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5NZXNzYWdlPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNNRVNTQUdFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPk1FU1NBR0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPk1FU1NBR0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9fRUxFTUVOVCI+TUVTU0FHRV9fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0VfX0VQQVJUUyI+TUVTU0FHRV9fRVBBUlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0VfX1FOQU1FIj5NRVNTQUdFX19RTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNNRVNTQUdFX19VTkRFRklORUQiPk1FU1NBR0VfX1VOREVGSU5FRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9GRUFUVVJFX0NPVU5UIj5NRVNTQUdFX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk1lc3NhZ2U8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0UiPk1FU1NBR0VfUkVGRVJFTkNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+TWVzc2FnZSBSZWZlcmVuY2U8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0VfUkVGRVJFTkNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPk1FU1NBR0VfUkVGRVJFTkNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI01FU1NBR0VfUkVGRVJFTkNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+TUVTU0FHRV9SRUZFUkVOQ0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfX0VMRU1FTlQiPk1FU1NBR0VfUkVGRVJFTkNFX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFIj5NRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUUiPk1FU1NBR0VfUkVGRVJFTkNFX19OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTUVTU0FHRV9SRUZFUkVOQ0VfRkVBVFVSRV9DT1VOVCI+TUVTU0FHRV9SRUZFUkVOQ0VfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+TWVzc2FnZSBSZWZlcmVuY2U8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTkFNRVNQQUNFIj5OQU1FU1BBQ0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5OYW1lc3BhY2U8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI05BTUVTUEFDRV9fUFJFRklYIj5OQU1FU1BBQ0VfX1BSRUZJWDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UHJlZml4PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjTkFNRVNQQUNFX19VUkkiPk5BTUVTUEFDRV9fVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5VUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNOQU1FU1BBQ0VfRkVBVFVSRV9DT1VOVCI+TkFNRVNQQUNFX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk5hbWVzcGFjZTwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT04iPk9QRVJBVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPk9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPk9QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX19FRkFVTFRTIj5PUEVSQVRJT05fX0VGQVVMVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09QRVJBVElPTl9fRUlOUFVUIj5PUEVSQVRJT05fX0VJTlBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUlucHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX19FTEVNRU5UIj5PUEVSQVRJT05fX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX0VPVVRQVVQiPk9QRVJBVElPTl9fRU9VVFBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09QRVJBVElPTl9fRVBBUkFNRVRFUl9PUkRFUklORyI+T1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFyYW1ldGVyIE9yZGVyaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fX05BTUUiPk9QRVJBVElPTl9fTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09QRVJBVElPTl9fU1RZTEUiPk9QRVJBVElPTl9fU1RZTEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlN0eWxlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1BFUkFUSU9OX19VTkRFRklORUQiPk9QRVJBVElPTl9fVU5ERUZJTkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+T1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk9wZXJhdGlvbjwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPUEVSQVRJT05fVFlQRSI+T1BFUkFUSU9OX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5PcGVyYXRpb24gVHlwZTwvZW0+JyBkYXRhIHR5cGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1VUUFVUIj5PVVRQVVQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5PdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09VVFBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5PVVRQVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+T1VUUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09VVFBVVF9fRUxFTUVOVCI+T1VUUFVUX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjT1VUUFVUX19FTUVTU0FHRSI+T1VUUFVUX19FTUVTU0FHRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNPVVRQVVRfX05BTUUiPk9VVFBVVF9fTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI09VVFBVVF9GRUFUVVJFX0NPVU5UIj5PVVRQVVRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+T3V0cHV0PC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BBUlQiPlBBUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPlBBUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPlBBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fRUxFTUVOVCI+UEFSVF9fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BBUlRfX0VMRU1FTlRfREVDTEFSQVRJT04iPlBBUlRfX0VMRU1FTlRfREVDTEFSQVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgRGVjbGFyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX19FTEVNRU5UX05BTUUiPlBBUlRfX0VMRU1FTlRfTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fRU1FU1NBR0UiPlBBUlRfX0VNRVNTQUdFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BBUlRfX05BTUUiPlBBUlRfX05BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQQVJUX19UWVBFX0RFRklOSVRJT04iPlBBUlRfX1RZUEVfREVGSU5JVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VHlwZSBEZWZpbml0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUEFSVF9fVFlQRV9OQU1FIj5QQVJUX19UWVBFX05BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlR5cGUgTmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BBUlRfRkVBVFVSRV9DT1VOVCI+UEFSVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5QYXJ0PC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlQiPlBPUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5Qb3J0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPlBPUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9fRUJJTkRJTkciPlBPUlRfX0VCSU5ESU5HPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZzwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5QT1JUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfX0VMRU1FTlQiPlBPUlRfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX19OQU1FIj5QT1JUX19OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9GRUFUVVJFX0NPVU5UIj5QT1JUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBvcnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9UWVBFIj5QT1JUX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5Qb3J0IFR5cGU8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5QT1JUX1RZUEVfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9UWVBFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+UE9SVF9UWVBFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9fRUxFTUVOVCI+UE9SVF9UWVBFX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9UWVBFX19FT1BFUkFUSU9OUyI+UE9SVF9UWVBFX19FT1BFUkFUSU9OUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbnM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1BPUlRfVFlQRV9fUU5BTUUiPlBPUlRfVFlQRV9fUU5BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjUE9SVF9UWVBFX19VTkRFRklORUQiPlBPUlRfVFlQRV9fVU5ERUZJTkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNQT1JUX1RZUEVfRkVBVFVSRV9DT1VOVCI+UE9SVF9UWVBFX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBvcnQgVHlwZTwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNRTkFNRSI+UU5BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5RTmFtZTwvZW0+JyBkYXRhIHR5cGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRSI+U0VSVklDRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPlNlcnZpY2U8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1NFUlZJQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+U0VSVklDRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNTRVJWSUNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+U0VSVklDRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNTRVJWSUNFX19FTEVNRU5UIj5TRVJWSUNFX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRV9fRVBPUlRTIj5TRVJWSUNFX19FUE9SVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVQb3J0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjU0VSVklDRV9fUU5BTUUiPlNFUlZJQ0VfX1FOQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1NFUlZJQ0VfX1VOREVGSU5FRCI+U0VSVklDRV9fVU5ERUZJTkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNTRVJWSUNFX0ZFQVRVUkVfQ09VTlQiPlNFUlZJQ0VfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+U2VydmljZTwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNUWVBFUyI+VFlQRVM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5UeXBlczwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVFlQRVNfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+VFlQRVNfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVFlQRVNfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5UWVBFU19fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNUWVBFU19fRUxFTUVOVCI+VFlQRVNfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNUWVBFU19GRUFUVVJFX0NPVU5UIj5UWVBFU19GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5UeXBlczwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCI+VU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOIj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fQ0hJTERSRU48L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkNoaWxkcmVuPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVCI+VU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQiPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UIj5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNXU0RMX0VMRU1FTlQiPldTRExfRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI1dTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5XU0RMX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjV1NETF9FTEVNRU5UX19FTEVNRU5UIj5XU0RMX0VMRU1FTlRfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNXU0RMX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+V1NETF9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkVsZW1lbnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjV1NETF9FWENFUFRJT04iPldTRExfRVhDRVBUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8ZW0+RXhjZXB0aW9uPC9lbT4nIGRhdGEgdHlwZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQiPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRSI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEIj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQSI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U2NoZW1hPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nX0VCaW5kaW5nT3BlcmF0aW9ucygpIj5nZXRCaW5kaW5nX0VCaW5kaW5nT3BlcmF0aW9uczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRFQmluZGluZ09wZXJhdGlvbnMoKSI+PENPREU+PGVtPkVCaW5kaW5nIE9wZXJhdGlvbnM8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ19FUG9ydFR5cGUoKSI+Z2V0QmluZGluZ19FUG9ydFR5cGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldEVQb3J0VHlwZSgpIj48Q09ERT48ZW0+RVBvcnQgVHlwZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nX1FOYW1lKCkiPmdldEJpbmRpbmdfUU5hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldFFOYW1lKCkiPjxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nX1VuZGVmaW5lZCgpIj5nZXRCaW5kaW5nX1VuZGVmaW5lZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmcoKSI+Z2V0QmluZGluZzwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+QmluZGluZzwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nRmF1bHRfRUZhdWx0KCkiPmdldEJpbmRpbmdGYXVsdF9FRmF1bHQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjZ2V0RUZhdWx0KCkiPjxDT0RFPjxlbT5FRmF1bHQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ0ZhdWx0X05hbWUoKSI+Z2V0QmluZGluZ0ZhdWx0X05hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdGYXVsdCgpIj5nZXRCaW5kaW5nRmF1bHQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+QmluZGluZyBGYXVsdDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nSW5wdXRfRUlucHV0KCkiPmdldEJpbmRpbmdJbnB1dF9FSW5wdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0RUlucHV0KCkiPjxDT0RFPjxlbT5FSW5wdXQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ0lucHV0X05hbWUoKSI+Z2V0QmluZGluZ0lucHV0X05hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdJbnB1dCgpIj5nZXRCaW5kaW5nSW5wdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+QmluZGluZyBJbnB1dDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nRmF1bHRzKCkiPmdldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdGYXVsdHM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RUJpbmRpbmdGYXVsdHMoKSI+PENPREU+PGVtPkVCaW5kaW5nIEZhdWx0czwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nSW5wdXQoKSI+Z2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0lucHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0lucHV0KCkiPjxDT0RFPjxlbT5FQmluZGluZyBJbnB1dDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nT3V0cHV0KCkiPmdldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdPdXRwdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nT3V0cHV0KCkiPjxDT0RFPjxlbT5FQmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ09wZXJhdGlvbl9FT3BlcmF0aW9uKCkiPmdldEJpbmRpbmdPcGVyYXRpb25fRU9wZXJhdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RU9wZXJhdGlvbigpIj48Q09ERT48ZW0+RU9wZXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uX05hbWUoKSI+Z2V0QmluZGluZ09wZXJhdGlvbl9OYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ09wZXJhdGlvbigpIj5nZXRCaW5kaW5nT3BlcmF0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5CaW5kaW5nIE9wZXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3V0cHV0X0VPdXRwdXQoKSI+Z2V0QmluZGluZ091dHB1dF9FT3V0cHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXRFT3V0cHV0KCkiPjxDT0RFPjxlbT5FT3V0cHV0PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPdXRwdXRfTmFtZSgpIj5nZXRCaW5kaW5nT3V0cHV0X05hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3V0cHV0KCkiPmdldEJpbmRpbmdPdXRwdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPkJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRUJpbmRpbmdzKCkiPmdldERlZmluaXRpb25fRUJpbmRpbmdzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVCaW5kaW5ncygpIj48Q09ERT48ZW0+RUJpbmRpbmdzPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRUltcG9ydHMoKSI+Z2V0RGVmaW5pdGlvbl9FSW1wb3J0czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFSW1wb3J0cygpIj48Q09ERT48ZW0+RUltcG9ydHM8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbl9FTWVzc2FnZXMoKSI+Z2V0RGVmaW5pdGlvbl9FTWVzc2FnZXM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RU1lc3NhZ2VzKCkiPjxDT0RFPjxlbT5FTWVzc2FnZXM8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbl9FTmFtZXNwYWNlcygpIj5nZXREZWZpbml0aW9uX0VOYW1lc3BhY2VzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVOYW1lc3BhY2VzKCkiPjxDT0RFPjxlbT5FTmFtZXNwYWNlczwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uX0VuY29kaW5nKCkiPmdldERlZmluaXRpb25fRW5jb2Rpbmc8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVuY29kaW5nKCkiPjxDT0RFPjxlbT5FbmNvZGluZzwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uX0VQb3J0VHlwZXMoKSI+Z2V0RGVmaW5pdGlvbl9FUG9ydFR5cGVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVQb3J0VHlwZXMoKSI+PENPREU+PGVtPkVQb3J0IFR5cGVzPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRVNlcnZpY2VzKCkiPmdldERlZmluaXRpb25fRVNlcnZpY2VzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVTZXJ2aWNlcygpIj48Q09ERT48ZW0+RVNlcnZpY2VzPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb25fRVR5cGVzKCkiPmdldERlZmluaXRpb25fRVR5cGVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFVHlwZXMoKSI+PENPREU+PGVtPkVUeXBlczwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uX0xvY2F0aW9uKCkiPmdldERlZmluaXRpb25fTG9jYXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldExvY2F0aW9uKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbjwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uX1FOYW1lKCkiPmdldERlZmluaXRpb25fUU5hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldFFOYW1lKCkiPjxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uX1RhcmdldE5hbWVzcGFjZSgpIj5nZXREZWZpbml0aW9uX1RhcmdldE5hbWVzcGFjZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0VGFyZ2V0TmFtZXNwYWNlKCkiPjxDT0RFPjxlbT5UYXJnZXQgTmFtZXNwYWNlPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbigpIj5nZXREZWZpbml0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5EZWZpbml0aW9uPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RURhdGFUeXBlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RE9NRG9jdW1lbnQoKSI+Z2V0RE9NRG9jdW1lbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8Q09ERT48ZW0+RE9NIERvY3VtZW50PC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFRGF0YVR5cGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRET01FbGVtZW50KCkiPmdldERPTUVsZW1lbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8Q09ERT48ZW0+RE9NIEVsZW1lbnQ8L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9FbGVtZW50VHlwZSgpIj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9FbGVtZW50VHlwZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldEVsZW1lbnRUeXBlKCkiPjxDT0RFPjxlbT5FbGVtZW50IFR5cGU8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfUmVxdWlyZWQoKSI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfUmVxdWlyZWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPjxDT0RFPjxlbT5SZXF1aXJlZDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50KCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEV4dGVuc2libGVFbGVtZW50X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RXh0ZW5zaWJsZUVsZW1lbnRfRUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48Q09ERT48ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRFeHRlbnNpYmxlRWxlbWVudCgpIj5nZXRFeHRlbnNpYmxlRWxlbWVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPkV4dGVuc2libGUgRWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEZhdWx0KCkiPmdldEZhdWx0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+RmF1bHQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJQmluZGluZygpIj5nZXRJQmluZGluZzwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklCaW5kaW5nPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJQmluZGluZ0ZhdWx0KCkiPmdldElCaW5kaW5nRmF1bHQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JQmluZGluZyBGYXVsdDwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SUJpbmRpbmdJbnB1dCgpIj5nZXRJQmluZGluZ0lucHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUJpbmRpbmcgSW5wdXQ8L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElCaW5kaW5nT3BlcmF0aW9uKCkiPmdldElCaW5kaW5nT3BlcmF0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUJpbmRpbmcgT3BlcmF0aW9uPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJQmluZGluZ091dHB1dCgpIj5nZXRJQmluZGluZ091dHB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklCaW5kaW5nIE91dHB1dDwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SURlZmluaXRpb24oKSI+Z2V0SURlZmluaXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JRGVmaW5pdGlvbjwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SUV4dGVuc2liaWxpdHlFbGVtZW50KCkiPmdldElFeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElFeHRlbnNpb25SZWdpc3RyeSgpIj5nZXRJRXh0ZW5zaW9uUmVnaXN0cnk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JRXh0ZW5zaW9uIFJlZ2lzdHJ5PC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJRmF1bHQoKSI+Z2V0SUZhdWx0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUZhdWx0PC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJSW1wb3J0KCkiPmdldElJbXBvcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JSW1wb3J0PC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJSW5wdXQoKSI+Z2V0SUlucHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUlucHV0PC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJSXRlcmF0b3IoKSI+Z2V0SUl0ZXJhdG9yPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUl0ZXJhdG9yPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJTGlzdCgpIj5nZXRJTGlzdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklMaXN0PC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJTWFwKCkiPmdldElNYXA8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JTWFwPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJTWVzc2FnZSgpIj5nZXRJTWVzc2FnZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklNZXNzYWdlPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SW1wb3J0X0VEZWZpbml0aW9uKCkiPmdldEltcG9ydF9FRGVmaW5pdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFRGVmaW5pdGlvbigpIj48Q09ERT48ZW0+RURlZmluaXRpb248L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SW1wb3J0X0VTY2hlbWEoKSI+Z2V0SW1wb3J0X0VTY2hlbWE8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0RVNjaGVtYSgpIj48Q09ERT48ZW0+RVNjaGVtYTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJbXBvcnRfTG9jYXRpb25VUkkoKSI+Z2V0SW1wb3J0X0xvY2F0aW9uVVJJPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SW1wb3J0X05hbWVzcGFjZVVSSSgpIj5nZXRJbXBvcnRfTmFtZXNwYWNlVVJJPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT48ZW0+TmFtZXNwYWNlIFVSSTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEltcG9ydCgpIj5nZXRJbXBvcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+SW1wb3J0PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0SW5wdXQoKSI+Z2V0SW5wdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5JbnB1dDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElPcGVyYXRpb24oKSI+Z2V0SU9wZXJhdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklPcGVyYXRpb248L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElPdXRwdXQoKSI+Z2V0SU91dHB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklPdXRwdXQ8L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElQYXJ0KCkiPmdldElQYXJ0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVBhcnQ8L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElQb3J0KCkiPmdldElQb3J0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVBvcnQ8L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldElQb3J0VHlwZSgpIj5nZXRJUG9ydFR5cGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JUG9ydCBUeXBlPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJU2VydmljZSgpIj5nZXRJU2VydmljZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklTZXJ2aWNlPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJVHlwZXMoKSI+Z2V0SVR5cGVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVR5cGVzPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJVVJMKCkiPmdldElVUkw8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JVVJMPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZV9FUGFydHMoKSI+Z2V0TWVzc2FnZV9FUGFydHM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwjZ2V0RVBhcnRzKCkiPjxDT0RFPjxlbT5FUGFydHM8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZV9RTmFtZSgpIj5nZXRNZXNzYWdlX1FOYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNnZXRRTmFtZSgpIj48Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZV9VbmRlZmluZWQoKSI+Z2V0TWVzc2FnZV9VbmRlZmluZWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPjxlbT5VbmRlZmluZWQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRNZXNzYWdlKCkiPmdldE1lc3NhZ2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPk1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZVJlZmVyZW5jZV9FTWVzc2FnZSgpIj5nZXRNZXNzYWdlUmVmZXJlbmNlX0VNZXNzYWdlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT48ZW0+RU1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TWVzc2FnZVJlZmVyZW5jZV9OYW1lKCkiPmdldE1lc3NhZ2VSZWZlcmVuY2VfTmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE1lc3NhZ2VSZWZlcmVuY2UoKSI+Z2V0TWVzc2FnZVJlZmVyZW5jZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+TWVzc2FnZSBSZWZlcmVuY2U8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TmFtZXNwYWNlX1ByZWZpeCgpIj5nZXROYW1lc3BhY2VfUHJlZml4PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI2dldFByZWZpeCgpIj48Q09ERT48ZW0+UHJlZml4PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE5hbWVzcGFjZV9VUkkoKSI+Z2V0TmFtZXNwYWNlX1VSSTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCNnZXRVUkkoKSI+PENPREU+PGVtPlVSSTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE5hbWVzcGFjZSgpIj5nZXROYW1lc3BhY2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+TmFtZXNwYWNlPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbl9FRmF1bHRzKCkiPmdldE9wZXJhdGlvbl9FRmF1bHRzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUZhdWx0cygpIj48Q09ERT48ZW0+RUZhdWx0czwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb25fRUlucHV0KCkiPmdldE9wZXJhdGlvbl9FSW5wdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUlucHV0KCkiPjxDT0RFPjxlbT5FSW5wdXQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uX0VPdXRwdXQoKSI+Z2V0T3BlcmF0aW9uX0VPdXRwdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RU91dHB1dCgpIj48Q09ERT48ZW0+RU91dHB1dDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb25fRVBhcmFtZXRlck9yZGVyaW5nKCkiPmdldE9wZXJhdGlvbl9FUGFyYW1ldGVyT3JkZXJpbmc8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFUGFyYW1ldGVyT3JkZXJpbmcoKSI+PENPREU+PGVtPkVQYXJhbWV0ZXIgT3JkZXJpbmc8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uX05hbWUoKSI+Z2V0T3BlcmF0aW9uX05hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb25fU3R5bGUoKSI+Z2V0T3BlcmF0aW9uX1N0eWxlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldFN0eWxlKCkiPjxDT0RFPjxlbT5TdHlsZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb25fVW5kZWZpbmVkKCkiPmdldE9wZXJhdGlvbl9VbmRlZmluZWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbigpIj5nZXRPcGVyYXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RURhdGFUeXBlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uVHlwZSgpIj5nZXRPcGVyYXRpb25UeXBlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAnPENPREU+PGVtPk9wZXJhdGlvbiBUeXBlPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPdXRwdXQoKSI+Z2V0T3V0cHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPk91dHB1dDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0X0VsZW1lbnREZWNsYXJhdGlvbigpIj5nZXRQYXJ0X0VsZW1lbnREZWNsYXJhdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0RWxlbWVudERlY2xhcmF0aW9uKCkiPjxDT0RFPjxlbT5FbGVtZW50IERlY2xhcmF0aW9uPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBhcnRfRWxlbWVudE5hbWUoKSI+Z2V0UGFydF9FbGVtZW50TmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0RWxlbWVudE5hbWUoKSI+PENPREU+PGVtPkVsZW1lbnQgTmFtZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0X0VNZXNzYWdlKCkiPmdldFBhcnRfRU1lc3NhZ2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0X05hbWUoKSI+Z2V0UGFydF9OYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBhcnRfVHlwZURlZmluaXRpb24oKSI+Z2V0UGFydF9UeXBlRGVmaW5pdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0VHlwZURlZmluaXRpb24oKSI+PENPREU+PGVtPlR5cGUgRGVmaW5pdGlvbjwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0X1R5cGVOYW1lKCkiPmdldFBhcnRfVHlwZU5hbWU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldFR5cGVOYW1lKCkiPjxDT0RFPjxlbT5UeXBlIE5hbWU8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0KCkiPmdldFBhcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydF9FQmluZGluZygpIj5nZXRQb3J0X0VCaW5kaW5nPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNnZXRFQmluZGluZygpIj48Q09ERT48ZW0+RUJpbmRpbmc8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydF9OYW1lKCkiPmdldFBvcnRfTmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBvcnQoKSI+Z2V0UG9ydDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+UG9ydDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQb3J0VHlwZV9FT3BlcmF0aW9ucygpIj5nZXRQb3J0VHlwZV9FT3BlcmF0aW9uczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwjZ2V0RU9wZXJhdGlvbnMoKSI+PENPREU+PGVtPkVPcGVyYXRpb25zPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBvcnRUeXBlX1FOYW1lKCkiPmdldFBvcnRUeXBlX1FOYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBvcnRUeXBlX1VuZGVmaW5lZCgpIj5nZXRQb3J0VHlwZV9VbmRlZmluZWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydFR5cGUoKSI+Z2V0UG9ydFR5cGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5Qb3J0IFR5cGU8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFRGF0YVR5cGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRRTmFtZSgpIj5nZXRRTmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFNlcnZpY2VfRVBvcnRzKCkiPmdldFNlcnZpY2VfRVBvcnRzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sI2dldEVQb3J0cygpIj48Q09ERT48ZW0+RVBvcnRzPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFNlcnZpY2VfUU5hbWUoKSI+Z2V0U2VydmljZV9RTmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFNlcnZpY2VfVW5kZWZpbmVkKCkiPmdldFNlcnZpY2VfVW5kZWZpbmVkPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0U2VydmljZSgpIj5nZXRTZXJ2aWNlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5TZXJ2aWNlPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0VHlwZXMoKSI+Z2V0VHlwZXM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5UeXBlczwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRfQ2hpbGRyZW4oKSI+Z2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50X0NoaWxkcmVuPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0Q2hpbGRyZW4oKSI+PENPREU+PGVtPkNoaWxkcmVuPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KCkiPmdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRXU0RMRWxlbWVudF9Eb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXRXU0RMRWxlbWVudF9Eb2N1bWVudGF0aW9uRWxlbWVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPjxDT0RFPjxlbT5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0V1NETEVsZW1lbnRfRWxlbWVudCgpIj5nZXRXU0RMRWxlbWVudF9FbGVtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj48Q09ERT48ZW0+RWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFdTRExFbGVtZW50KCkiPmdldFdTRExFbGVtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+RWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VEYXRhVHlwZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFdTRExFeGNlcHRpb24oKSI+Z2V0V1NETEV4Y2VwdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxDT0RFPjxlbT5FeGNlcHRpb248L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFdTRExGYWN0b3J5KCkiPmdldFdTRExGYWN0b3J5PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWw8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50X1NjaGVtYSgpIj5nZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudF9TY2hlbWE8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRTY2hlbWEoKSI+PENPREU+PGVtPlNjaGVtYTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KCkiPmdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImVOQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1lTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+ZU5BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHBhY2thZ2UgbmFtZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5lTkFNRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJlTlNfVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1lTlNfVVJJPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5lTlNfVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkkuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuZU5TX1VSSSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJlTlNfUFJFRklYIj48IS0tIC0tPjwvQT48SDM+Ci1lTlNfUFJFRklYPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5lTlNfUFJFRklYPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBwYWNrYWdlIG5hbWVzcGFjZSBuYW1lLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLmVOU19QUkVGSVgiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZUlOU1RBTkNFIj48IS0tIC0tPjwvQT48SDM+Ci1lSU5TVEFOQ0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT4gPEI+ZUlOU1RBTkNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IldTRExfRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotV1NETF9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPldTRExfRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkVsZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPldTRExFbGVtZW50SW1wbDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldFdTRExFbGVtZW50KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLldTRExfRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJXU0RMX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotV1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+V1NETF9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLldTRExfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IldTRExfRUxFTUVOVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotV1NETF9FTEVNRU5UX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPldTRExfRUxFTUVOVF9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLldTRExfRUxFTUVOVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJXU0RMX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotV1NETF9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+V1NETF9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkVsZW1lbnQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuV1NETF9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRVhURU5TSUJMRV9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1FWFRFTlNJQkxFX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+RVhURU5TSUJMRV9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5FeHRlbnNpYmxlRWxlbWVudEltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRFeHRlbnNpYmxlRWxlbWVudCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5FWFRFTlNJQkxFX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRVhURU5TSUJMRV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUVYVEVOU0lCTEVfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkVYVEVOU0lCTEVfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5FWFRFTlNJQkxFX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJFWFRFTlNJQkxFX0VMRU1FTlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUVYVEVOU0lCTEVfRUxFTUVOVF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5FWFRFTlNJQkxFX0VMRU1FTlRfX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5FWFRFTlNJQkxFX0VMRU1FTlRfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PEgzPgotRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5FWFRFTlNJQkxFX0VMRU1FTlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJMRV9FTEVNRU5UX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJFWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotRVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+RVhURU5TSUJMRV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkV4dGVuc2libGUgRWxlbWVudDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5FWFRFTlNJQkxFX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLVBPUlRfVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QT1JUX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5Qb3J0IFR5cGU8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlBvcnRUeXBlSW1wbDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldFBvcnRUeXBlKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBPUlRfVFlQRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX1RZUEVfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotUE9SVF9UWVBFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+UE9SVF9UWVBFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBPUlRfVFlQRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBPUlRfVFlQRV9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotUE9SVF9UWVBFX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlBPUlRfVFlQRV9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBPUlRfVFlQRV9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX1RZUEVfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUX1RZUEVfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlBPUlRfVFlQRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX1RZUEVfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBPUlRfVFlQRV9fUU5BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLVBPUlRfVFlQRV9fUU5BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+UE9SVF9UWVBFX19RTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX1RZUEVfX1FOQU1FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBPUlRfVFlQRV9fVU5ERUZJTkVEIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUX1RZUEVfX1VOREVGSU5FRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QT1JUX1RZUEVfX1VOREVGSU5FRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUE9SVF9UWVBFX19VTkRFRklORUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUE9SVF9UWVBFX19FT1BFUkFUSU9OUyI+PCEtLSAtLT48L0E+PEgzPgotUE9SVF9UWVBFX19FT1BFUkFUSU9OUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QT1JUX1RZUEVfX0VPUEVSQVRJT05TPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FT3BlcmF0aW9uczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUE9SVF9UWVBFX19FT1BFUkFUSU9OUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX1RZUEVfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotUE9SVF9UWVBFX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+UE9SVF9UWVBFX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBvcnQgVHlwZTwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX1RZUEVfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJPUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLU9QRVJBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5PUEVSQVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5PcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk9wZXJhdGlvbkltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRPcGVyYXRpb24oKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik9QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5PUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT05fX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+T1BFUkFUSU9OX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik9QRVJBVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxIMz4KLU9QRVJBVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+T1BFUkFUSU9OX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9QRVJBVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19TVFlMRSI+PCEtLSAtLT48L0E+PEgzPgotT1BFUkFUSU9OX19TVFlMRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5PUEVSQVRJT05fX1NUWUxFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9QRVJBVElPTl9fU1RZTEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT05fX05BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+T1BFUkFUSU9OX19OQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OX19OQU1FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik9QRVJBVElPTl9fVU5ERUZJTkVEIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT05fX1VOREVGSU5FRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5PUEVSQVRJT05fX1VOREVGSU5FRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OX19VTkRFRklORUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19FSU5QVVQiPjwhLS0gLS0+PC9BPjxIMz4KLU9QRVJBVElPTl9fRUlOUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk9QRVJBVElPTl9fRUlOUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PUEVSQVRJT05fX0VJTlBVVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJPUEVSQVRJT05fX0VPVVRQVVQiPjwhLS0gLS0+PC9BPjxIMz4KLU9QRVJBVElPTl9fRU9VVFBVVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5PUEVSQVRJT05fX0VPVVRQVVQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PUEVSQVRJT05fX0VPVVRQVVQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19FRkFVTFRTIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT05fX0VGQVVMVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+T1BFUkFUSU9OX19FRkFVTFRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRmF1bHRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PUEVSQVRJT05fX0VGQVVMVFMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkc8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+T1BFUkFUSU9OX19FUEFSQU1FVEVSX09SREVSSU5HPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFyYW1ldGVyIE9yZGVyaW5nPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PUEVSQVRJT05fX0VQQVJBTUVURVJfT1JERVJJTkciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU9QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk9QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5PcGVyYXRpb248L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRSI+PCEtLSAtLT48L0E+PEgzPgotTUVTU0FHRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NRVNTQUdFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+TWVzc2FnZTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TWVzc2FnZUltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRNZXNzYWdlKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0UiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRV9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotTUVTU0FHRV9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NRVNTQUdFX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRV9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNRVNTQUdFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PEgzPgotTUVTU0FHRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNRVNTQUdFX19RTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotTUVTU0FHRV9fUU5BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRV9fUU5BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRV9fUU5BTUUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRV9fVU5ERUZJTkVEIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX19VTkRFRklORUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRV9fVU5ERUZJTkVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5VbmRlZmluZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX19VTkRFRklORUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRV9fRVBBUlRTIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX19FUEFSVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRV9fRVBBUlRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0VfX0VQQVJUUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNRVNTQUdFX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1FU1NBR0VfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NRVNTQUdFX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk1lc3NhZ2U8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRV9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBBUlQiPjwhLS0gLS0+PC9BPjxIMz4KLVBBUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+UEFSVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlBhcnRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0UGFydCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QQVJUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBBUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotUEFSVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlBBUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUEFSVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBBUlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVBBUlRfX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+UEFSVF9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBBUlRfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxIMz4KLVBBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlBBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUEFSVF9fTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotUEFSVF9fTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QQVJUX19OQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUEFSVF9fTkFNRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQQVJUX19FTEVNRU5UX05BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLVBBUlRfX0VMRU1FTlRfTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QQVJUX19FTEVNRU5UX05BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBBUlRfX0VMRU1FTlRfTkFNRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQQVJUX19UWVBFX05BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLVBBUlRfX1RZUEVfTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QQVJUX19UWVBFX05BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlR5cGUgTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBBUlRfX1RZUEVfTkFNRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQQVJUX19UWVBFX0RFRklOSVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLVBBUlRfX1RZUEVfREVGSU5JVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QQVJUX19UWVBFX0RFRklOSVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlR5cGUgRGVmaW5pdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBBUlRfX1RZUEVfREVGSU5JVElPTiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlBBUlRfX0VMRU1FTlRfREVDTEFSQVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgRGVjbGFyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QQVJUX19FTEVNRU5UX0RFQ0xBUkFUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBBUlRfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJUX19FTUVTU0FHRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QQVJUX19FTUVTU0FHRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QQVJUX19FTUVTU0FHRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQQVJUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVBBUlRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QQVJUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBhcnQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUEFSVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkciPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkc8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElORzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkJpbmRpbmdJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0QmluZGluZygpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19fUU5BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfX1FOQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfX1FOQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5RTmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfX1FOQU1FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfX1VOREVGSU5FRCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19fVU5ERUZJTkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfX1VOREVGSU5FRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VW5kZWZpbmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19fVU5ERUZJTkVEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfX0VQT1JUX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfX0VQT1JUX1RZUEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19fRVBPUlRfVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBvcnQgVHlwZTwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfX0VQT1JUX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUyI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19fRUJJTkRJTkdfT1BFUkFUSU9OUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5CSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBPcGVyYXRpb25zPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX19FQklORElOR19PUEVSQVRJT05TIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZzwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfT1BFUkFUSU9OPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfT1BFUkFUSU9OPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkJpbmRpbmdPcGVyYXRpb25JbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0QmluZGluZ09wZXJhdGlvbigpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PUEVSQVRJT05fX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfT1BFUkFUSU9OX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfT1BFUkFUSU9OX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09QRVJBVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1BFUkFUSU9OX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09QRVJBVElPTl9fTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5CSU5ESU5HX09QRVJBVElPTl9fTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19OQU1FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1BFUkFUSU9OX19FT1BFUkFUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5CSU5ESU5HX09QRVJBVElPTl9fRU9QRVJBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1BFUkFUSU9OX19FT1BFUkFUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0lOUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19JTlBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgSW5wdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfSU5QVVQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX09VVFBVVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX09VVFBVVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZyBPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfT1VUUFVUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFMiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfT1BFUkFUSU9OX19FQklORElOR19GQVVMVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19PUEVSQVRJT05fX0VCSU5ESU5HX0ZBVUxUUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmcgRmF1bHRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09QRVJBVElPTl9fRUJJTkRJTkdfRkFVTFRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTRVJWSUNFIj48IS0tIC0tPjwvQT48SDM+Ci1TRVJWSUNFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNFUlZJQ0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5TZXJ2aWNlPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TZXJ2aWNlSW1wbDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldFNlcnZpY2UoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuU0VSVklDRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTRVJWSUNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVNFUlZJQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TRVJWSUNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlNFUlZJQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTRVJWSUNFX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TRVJWSUNFX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNFUlZJQ0VfX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5TRVJWSUNFX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNFUlZJQ0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48SDM+Ci1TRVJWSUNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TRVJWSUNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlNFUlZJQ0VfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNFUlZJQ0VfX1FOQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1TRVJWSUNFX19RTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TRVJWSUNFX19RTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UU5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5TRVJWSUNFX19RTkFNRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTRVJWSUNFX19VTkRFRklORUQiPjwhLS0gLS0+PC9BPjxIMz4KLVNFUlZJQ0VfX1VOREVGSU5FRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TRVJWSUNFX19VTkRFRklORUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVuZGVmaW5lZDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlNFUlZJQ0VfX1VOREVGSU5FRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTRVJWSUNFX19FUE9SVFMiPjwhLS0gLS0+PC9BPjxIMz4KLVNFUlZJQ0VfX0VQT1JUUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TRVJWSUNFX19FUE9SVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVQb3J0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuU0VSVklDRV9fRVBPUlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNFUlZJQ0VfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotU0VSVklDRV9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNFUlZJQ0VfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+U2VydmljZTwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5TRVJWSUNFX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUE9SVCI+PCEtLSAtLT48L0E+PEgzPgotUE9SVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QT1JUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+UG9ydDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+UG9ydEltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRQb3J0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlBPUlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUE9SVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+UE9SVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUE9SVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotUE9SVF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QT1JUX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUE9SVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PEgzPgotUE9SVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+UE9SVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlBPUlRfX05BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX19OQU1FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBPUlRfX0VCSU5ESU5HIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUX19FQklORElORzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QT1JUX19FQklORElORzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUJpbmRpbmc8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5QT1JUX19FQklORElORyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVBPUlRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5QT1JUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBvcnQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUE9SVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkVYVEVOU0lCSUxJVFlfRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotRVhURU5TSUJJTElUWV9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkVYVEVOU0lCSUxJVFlfRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxIMz4KLUVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+RVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTiI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5ERUZJTklUSU9OPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+RGVmaW5pdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RGVmaW5pdGlvbkltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXREZWZpbml0aW9uKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT04iPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+REVGSU5JVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5ERUZJTklUSU9OX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJERUZJTklUSU9OX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+REVGSU5JVElPTl9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkRFRklOSVRJT05fX1RBUkdFVF9OQU1FU1BBQ0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBOYW1lc3BhY2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19UQVJHRVRfTkFNRVNQQUNFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fX0xPQ0FUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OX19MT0NBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5ERUZJTklUSU9OX19MT0NBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb248L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19MT0NBVElPTiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJERUZJTklUSU9OX19RTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fUU5BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+REVGSU5JVElPTl9fUU5BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlFOYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuREVGSU5JVElPTl9fUU5BTUUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9fRU5DT0RJTkciPjwhLS0gLS0+PC9BPjxIMz4KLURFRklOSVRJT05fX0VOQ09ESU5HPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkRFRklOSVRJT05fX0VOQ09ESU5HPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbmNvZGluZzwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0VOQ09ESU5HIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fX0VJTVBPUlRTIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OX19FSU1QT1JUUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5ERUZJTklUSU9OX19FSU1QT1JUUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUltcG9ydHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0VJTVBPUlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fX0VUWVBFUyI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fRVRZUEVTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkRFRklOSVRJT05fX0VUWVBFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVR5cGVzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVRZUEVTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fX0VNRVNTQUdFUyI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9fRU1FU1NBR0VTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkRFRklOSVRJT05fX0VNRVNTQUdFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2VzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX19FTUVTU0FHRVMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9fRVBPUlRfVFlQRVMiPjwhLS0gLS0+PC9BPjxIMz4KLURFRklOSVRJT05fX0VQT1JUX1RZUEVTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkRFRklOSVRJT05fX0VQT1JUX1RZUEVTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUG9ydCBUeXBlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVBPUlRfVFlQRVMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9fRUJJTkRJTkdTIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OX19FQklORElOR1M8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+REVGSU5JVElPTl9fRUJJTkRJTkdTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FQmluZGluZ3M8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0VCSU5ESU5HUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJERUZJTklUSU9OX19FU0VSVklDRVMiPjwhLS0gLS0+PC9BPjxIMz4KLURFRklOSVRJT05fX0VTRVJWSUNFUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5ERUZJTklUSU9OX19FU0VSVklDRVM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVTZXJ2aWNlczwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuREVGSU5JVElPTl9fRVNFUlZJQ0VTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fX0VOQU1FU1BBQ0VTIj48IS0tIC0tPjwvQT48SDM+Ci1ERUZJTklUSU9OX19FTkFNRVNQQUNFUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5ERUZJTklUSU9OX19FTkFNRVNQQUNFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU5hbWVzcGFjZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkRFRklOSVRJT05fX0VOQU1FU1BBQ0VTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRFRklOSVRJT05fRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkRFRklOSVRJT05fRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RGVmaW5pdGlvbjwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ERUZJTklUSU9OX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1QT1JUIj48IS0tIC0tPjwvQT48SDM+Ci1JTVBPUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU1QT1JUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SW1wb3J0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5JbXBvcnRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SW1wb3J0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklNUE9SVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTVBPUlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotSU1QT1JUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU1QT1JUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklNUE9SVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNUE9SVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotSU1QT1JUX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklNUE9SVF9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklNUE9SVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTVBPUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48SDM+Ci1JTVBPUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklNUE9SVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTVBPUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNUE9SVF9fTkFNRVNQQUNFX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotSU1QT1JUX19OQU1FU1BBQ0VfVVJJPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklNUE9SVF9fTkFNRVNQQUNFX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklNUE9SVF9fTkFNRVNQQUNFX1VSSSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTVBPUlRfX0xPQ0FUSU9OX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotSU1QT1JUX19MT0NBVElPTl9VUkk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU1QT1JUX19MT0NBVElPTl9VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklNUE9SVF9fTE9DQVRJT05fVVJJIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNUE9SVF9fRURFRklOSVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUlNUE9SVF9fRURFRklOSVRJT048L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU1QT1JUX19FREVGSU5JVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RURlZmluaXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTVBPUlRfX0VERUZJTklUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNUE9SVF9fRVNDSEVNQSI+PCEtLSAtLT48L0E+PEgzPgotSU1QT1JUX19FU0NIRU1BPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklNUE9SVF9fRVNDSEVNQTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVNjaGVtYTwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklNUE9SVF9fRVNDSEVNQSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTVBPUlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSU1QT1JUX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU1QT1JUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkltcG9ydDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTVBPUlRfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNRVNTQUdFX1JFRkVSRU5DRSI+PCEtLSAtLT48L0E+PEgzPgotTUVTU0FHRV9SRUZFUkVOQ0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRV9SRUZFUkVOQ0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5NZXNzYWdlIFJlZmVyZW5jZTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TWVzc2FnZVJlZmVyZW5jZUltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRNZXNzYWdlUmVmZXJlbmNlKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0VfUkVGRVJFTkNFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1FU1NBR0VfUkVGRVJFTkNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1FU1NBR0VfUkVGRVJFTkNFX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRV9SRUZFUkVOQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNRVNTQUdFX1JFRkVSRU5DRV9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotTUVTU0FHRV9SRUZFUkVOQ0VfX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRV9SRUZFUkVOQ0VfX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX1JFRkVSRU5DRV9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNRVNTQUdFX1JFRkVSRU5DRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxIMz4KLU1FU1NBR0VfUkVGRVJFTkNFX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NRVNTQUdFX1JFRkVSRU5DRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5NRVNTQUdFX1JFRkVSRU5DRV9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLU1FU1NBR0VfUkVGRVJFTkNFX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1FU1NBR0VfUkVGRVJFTkNFX19OQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTUVTU0FHRV9SRUZFUkVOQ0VfX05BTUUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX1JFRkVSRU5DRV9fRU1FU1NBR0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRV9SRUZFUkVOQ0VfX0VNRVNTQUdFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0VfUkVGRVJFTkNFX19FTUVTU0FHRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNRVNTQUdFX1JFRkVSRU5DRV9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX1JFRkVSRU5DRV9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1FU1NBR0VfUkVGRVJFTkNFX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk1lc3NhZ2UgUmVmZXJlbmNlPC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk1FU1NBR0VfUkVGRVJFTkNFX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU5QVVQiPjwhLS0gLS0+PC9BPjxIMz4KLUlOUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklOUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SW5wdXQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPklucHV0SW1wbDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElucHV0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklOUFVUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklOUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlOUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU5QVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU5QVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTlBVVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotSU5QVVRfX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU5QVVRfX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTlBVVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTlBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxIMz4KLUlOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JTlBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTlBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU5QVVRfX05BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLUlOUFVUX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklOUFVUX19OQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU5QVVRfX05BTUUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU5QVVRfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1JTlBVVF9fRU1FU1NBR0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU5QVVRfX0VNRVNTQUdFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklOUFVUX19FTUVTU0FHRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTlBVVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JTlBVVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklOUFVUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklucHV0PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklOUFVUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1VUUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1PVVRQVVQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+T1VUUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+T3V0cHV0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5PdXRwdXRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0T3V0cHV0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9VVFBVVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJPVVRQVVRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotT1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+T1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9VVFBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik9VVFBVVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotT1VUUFVUX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk9VVFBVVF9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9VVFBVVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJPVVRQVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48SDM+Ci1PVVRQVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk9VVFBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PVVRQVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik9VVFBVVF9fTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotT1VUUFVUX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk9VVFBVVF9fTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9VVFBVVF9fTkFNRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJPVVRQVVRfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1PVVRQVVRfX0VNRVNTQUdFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk9VVFBVVF9fRU1FU1NBR0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuT1VUUFVUX19FTUVTU0FHRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJPVVRQVVRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotT1VUUFVUX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+T1VUUFVUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk91dHB1dDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5PVVRQVVRfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJGQVVMVCI+PCEtLSAtLT48L0E+PEgzPgotRkFVTFQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+RkFVTFQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5GYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RmF1bHRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0RmF1bHQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRkFVTFQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkZBVUxUX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1GQVVMVF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5GQVVMVF9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkZBVUxUX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PEgzPgotRkFVTFRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJGQVVMVF9fTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotRkFVTFRfX05BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+RkFVTFRfX05BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5GQVVMVF9fTkFNRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJGQVVMVF9fRU1FU1NBR0UiPjwhLS0gLS0+PC9BPjxIMz4KLUZBVUxUX19FTUVTU0FHRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5GQVVMVF9fRU1FU1NBR0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRkFVTFRfX0VNRVNTQUdFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkZBVUxUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+RkFVTFRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RmF1bHQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuRkFVTFRfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX0lOUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX0lOUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfSU5QVVQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nIElucHV0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nSW5wdXRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0QmluZGluZ0lucHV0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfSU5QVVQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19JTlBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX0lOUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19JTlBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19JTlBVVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19JTlBVVF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5CSU5ESU5HX0lOUFVUX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19JTlBVVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX0lOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19JTlBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19JTlBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX0lOUFVUX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX0lOUFVUX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfSU5QVVRfX05BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX19OQU1FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfSU5QVVRfX0VJTlBVVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19JTlBVVF9fRUlOUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfSU5QVVRfX0VJTlBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUlucHV0PC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19JTlBVVF9fRUlOUFVUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfSU5QVVRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZyBJbnB1dDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0lOUFVUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PVVRQVVQiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfT1VUUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfT1VUUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkJpbmRpbmdPdXRwdXRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0QmluZGluZ091dHB1dCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX09VVFBVVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX09VVFBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09VVFBVVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfT1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1VUUFVUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PVVRQVVRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfT1VUUFVUX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfT1VUUFVUX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PVVRQVVRfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19PVVRQVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09VVFBVVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19PVVRQVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PVVRQVVRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1VUUFVUX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09VVFBVVF9fTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5CSU5ESU5HX09VVFBVVF9fTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1VUUFVUX19OQU1FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1VUUFVUX19FT1VUUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX09VVFBVVF9fRU9VVFBVVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5CSU5ESU5HX09VVFBVVF9fRU9VVFBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfT1VUUFVUX19FT1VUUFVUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfT1VUUFVUX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZyBPdXRwdXQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX0ZBVUxUIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX0ZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfRkFVTFQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nRmF1bHRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0QmluZGluZ0ZhdWx0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLkJJTkRJTkdfRkFVTFQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX0ZBVUxUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQklORElOR19GQVVMVF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19GQVVMVF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5CSU5ESU5HX0ZBVUxUX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19GQVVMVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX0ZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19GQVVMVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElOR19GQVVMVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX0ZBVUxUX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1CSU5ESU5HX0ZBVUxUX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfRkFVTFRfX05BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX19OQU1FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfRkFVTFRfX0VGQVVMVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19GQVVMVF9fRUZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfRkFVTFRfX0VGQVVMVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUZhdWx0PC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuQklORElOR19GQVVMVF9fRUZBVUxUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19GQVVMVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkJJTkRJTkdfRkFVTFRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZyBGYXVsdDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5CSU5ESU5HX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTkFNRVNQQUNFIj48IS0tIC0tPjwvQT48SDM+Ci1OQU1FU1BBQ0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TkFNRVNQQUNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+TmFtZXNwYWNlPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5OYW1lc3BhY2VJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0TmFtZXNwYWNlKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk5BTUVTUEFDRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJOQU1FU1BBQ0VfX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotTkFNRVNQQUNFX19VUkk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TkFNRVNQQUNFX19VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk5BTUVTUEFDRV9fVVJJIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik5BTUVTUEFDRV9fUFJFRklYIj48IS0tIC0tPjwvQT48SDM+Ci1OQU1FU1BBQ0VfX1BSRUZJWDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5OQU1FU1BBQ0VfX1BSRUZJWDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UHJlZml4PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTkFNRVNQQUNFX19QUkVGSVgiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTkFNRVNQQUNFX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU5BTUVTUEFDRV9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk5BTUVTUEFDRV9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5OYW1lc3BhY2U8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTkFNRVNQQUNFX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVBPUlRfVFlQRSI+PCEtLSAtLT48L0E+PEgzPgotSVBPUlRfVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JUE9SVF9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVBvcnQgVHlwZTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+UG9ydFR5cGU8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJUG9ydFR5cGUoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVBPUlRfVFlQRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJUE9SVF9UWVBFX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlQT1JUX1RZUEVfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JUE9SVF9UWVBFX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklQb3J0IFR5cGU8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVBPUlRfVFlQRV9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklPUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUlPUEVSQVRJT048L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU9QRVJBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk9wZXJhdGlvbjwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElPcGVyYXRpb24oKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU9QRVJBVElPTiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlPUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklPcGVyYXRpb248L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU9QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklJTlBVVCI+PCEtLSAtLT48L0E+PEgzPgotSUlOUFVUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklJTlBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklJbnB1dDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+SW5wdXQ8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJSW5wdXQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUlOUFVUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklJTlBVVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JSU5QVVRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JSU5QVVRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUlucHV0PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklJTlBVVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklPVVRQVVQiPjwhLS0gLS0+PC9BPjxIMz4KLUlPVVRQVVQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU9VVFBVVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklPdXRwdXQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk91dHB1dDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElPdXRwdXQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU9VVFBVVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJT1VUUFVUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlPVVRQVVRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JT1VUUFVUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklPdXRwdXQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU9VVFBVVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklGQVVMVCI+PCEtLSAtLT48L0E+PEgzPgotSUZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklGQVVMVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RmF1bHQ8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJRmF1bHQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUZBVUxUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklGQVVMVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JRkFVTFRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JRkFVTFRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUZhdWx0PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklGQVVMVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1JTUVTU0FHRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JTUVTU0FHRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklNZXNzYWdlPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5NZXNzYWdlPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SU1lc3NhZ2UoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSU1FU1NBR0UiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1FU1NBR0VfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSU1FU1NBR0VfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JTUVTU0FHRV9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JTWVzc2FnZTwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTUVTU0FHRV9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklQQVJUIj48IS0tIC0tPjwvQT48SDM+Ci1JUEFSVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JUEFSVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklQYXJ0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5QYXJ0PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SVBhcnQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVBBUlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVBBUlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSVBBUlRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JUEFSVF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JUGFydDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JUEFSVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklTRVJWSUNFIj48IS0tIC0tPjwvQT48SDM+Ci1JU0VSVklDRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU0VSVklDRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklTZXJ2aWNlPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TZXJ2aWNlPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SVNlcnZpY2UoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVNFUlZJQ0UiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVNFUlZJQ0VfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSVNFUlZJQ0VfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU0VSVklDRV9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU2VydmljZTwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JU0VSVklDRV9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklQT1JUIj48IS0tIC0tPjwvQT48SDM+Ci1JUE9SVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JUE9SVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklQb3J0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5Qb3J0PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SVBvcnQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSVBPUlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVBPUlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSVBPUlRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JUE9SVF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JUG9ydDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JUE9SVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklCSU5ESU5HIj48IS0tIC0tPjwvQT48SDM+Ci1JQklORElORzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JQklORElORzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUJpbmRpbmcoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUJJTkRJTkciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUJJTkRJTkdfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSUJJTkRJTkdfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JQklORElOR19GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JQmluZGluZzwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JQklORElOR19GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklCSU5ESU5HX09QRVJBVElPTiI+PCEtLSAtLT48L0E+PEgzPgotSUJJTkRJTkdfT1BFUkFUSU9OPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklCSU5ESU5HX09QRVJBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+QmluZGluZ09wZXJhdGlvbjwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElCaW5kaW5nT3BlcmF0aW9uKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklCSU5ESU5HX09QRVJBVElPTiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJQklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSUJJTkRJTkdfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SUJJTkRJTkdfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklCaW5kaW5nIE9wZXJhdGlvbjwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JQklORElOR19PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJQklORElOR19JTlBVVCI+PCEtLSAtLT48L0E+PEgzPgotSUJJTkRJTkdfSU5QVVQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SUJJTkRJTkdfSU5QVVQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JQmluZGluZyBJbnB1dDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+QmluZGluZ0lucHV0PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUJpbmRpbmdJbnB1dCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JQklORElOR19JTlBVVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJQklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JQklORElOR19JTlBVVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklCSU5ESU5HX0lOUFVUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklCaW5kaW5nIElucHV0PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklCSU5ESU5HX0lOUFVUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUJJTkRJTkdfT1VUUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1JQklORElOR19PVVRQVVQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SUJJTkRJTkdfT1VUUFVUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nT3V0cHV0PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUJpbmRpbmdPdXRwdXQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUJJTkRJTkdfT1VUUFVUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklCSU5ESU5HX09VVFBVVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JQklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JQklORElOR19PVVRQVVRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUJpbmRpbmcgT3V0cHV0PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklCSU5ESU5HX09VVFBVVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklCSU5ESU5HX0ZBVUxUIj48IS0tIC0tPjwvQT48SDM+Ci1JQklORElOR19GQVVMVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JQklORElOR19GQVVMVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklCaW5kaW5nIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nRmF1bHQ8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJQmluZGluZ0ZhdWx0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklCSU5ESU5HX0ZBVUxUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklCSU5ESU5HX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlCSU5ESU5HX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SUJJTkRJTkdfRkFVTFRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUJpbmRpbmcgRmF1bHQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUJJTkRJTkdfRkFVTFRfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJRVhURU5TSUJJTElUWV9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JRVhURU5TSUJJTElUWV9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklFWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldElFeHRlbnNpYmlsaXR5RWxlbWVudCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JRVhURU5TSUJJTElUWV9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklFWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSUVYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklFWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSURFRklOSVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUlERUZJTklUSU9OPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklERUZJTklUSU9OPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SURlZmluaXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkRlZmluaXRpb248L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJRGVmaW5pdGlvbigpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JREVGSU5JVElPTiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJREVGSU5JVElPTl9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JREVGSU5JVElPTl9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklERUZJTklUSU9OX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklEZWZpbml0aW9uPC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklERUZJTklUSU9OX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUlNUE9SVCI+PCEtLSAtLT48L0E+PEgzPgotSUlNUE9SVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JSU1QT1JUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUltcG9ydDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+SW1wb3J0PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUltcG9ydCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JSU1QT1JUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklJTVBPUlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSUlNUE9SVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklJTVBPUlRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUltcG9ydDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JSU1QT1JUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUxJU1QiPjwhLS0gLS0+PC9BPjxIMz4KLUlMSVNUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklMSVNUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUxpc3Q8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkxpc3Q8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJTGlzdCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTElTVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTElTVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JTElTVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklMSVNUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklMaXN0PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklMSVNUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1BUCI+PCEtLSAtLT48L0E+PEgzPgotSU1BUDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JTUFQPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1hcDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TWFwPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SU1hcCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTUFQIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNQVBfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSU1BUF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklNQVBfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1hcDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JTUFQX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVVSTCI+PCEtLSAtLT48L0E+PEgzPgotSVVSTDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JVVJMPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVVSTDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+VVJMPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SVVSTCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JVVJMIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklVUkxfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSVVSTF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklVUkxfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVVSTDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JVVJMX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUVYVEVOU0lPTl9SRUdJU1RSWSI+PCEtLSAtLT48L0E+PEgzPgotSUVYVEVOU0lPTl9SRUdJU1RSWTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JRVhURU5TSU9OX1JFR0lTVFJZPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUV4dGVuc2lvbiBSZWdpc3RyeTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RXh0ZW5zaW9uUmVnaXN0cnk8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRJRXh0ZW5zaW9uUmVnaXN0cnkoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUVYVEVOU0lPTl9SRUdJU1RSWSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJRVhURU5TSU9OX1JFR0lTVFJZX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlFWFRFTlNJT05fUkVHSVNUUllfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JRVhURU5TSU9OX1JFR0lTVFJZX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklFeHRlbnNpb24gUmVnaXN0cnk8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuSUVYVEVOU0lPTl9SRUdJU1RSWV9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlRZUEVTIj48IS0tIC0tPjwvQT48SDM+Ci1UWVBFUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5UWVBFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPlR5cGVzPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5UeXBlc0ltcGw8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRUeXBlcygpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5UWVBFUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJUWVBFU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1UWVBFU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlRZUEVTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlRZUEVTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iVFlQRVNfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVRZUEVTX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlRZUEVTX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuVFlQRVNfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iVFlQRVNfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj48IS0tIC0tPjwvQT48SDM+Ci1UWVBFU19fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+VFlQRVNfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuVFlQRVNfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlRZUEVTX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVRZUEVTX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+VFlQRVNfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+VHlwZXM8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuVFlQRVNfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSVRFUkFUT1IiPjwhLS0gLS0+PC9BPjxIMz4KLUlJVEVSQVRPUjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JSVRFUkFUT1I8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSXRlcmF0b3I8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkl0ZXJhdG9yPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SUl0ZXJhdG9yKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklJVEVSQVRPUiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSVRFUkFUT1JfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSUlURVJBVE9SX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SUlURVJBVE9SX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklJdGVyYXRvcjwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JSVRFUkFUT1JfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJVFlQRVMiPjwhLS0gLS0+PC9BPjxIMz4KLUlUWVBFUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JVFlQRVM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JVHlwZXM8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlR5cGVzPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0SVR5cGVzKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLklUWVBFUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJVFlQRVNfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSVRZUEVTX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SVRZUEVTX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklUeXBlczwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5JVFlQRVNfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+VU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50SW1wbDwvQ09ERT4sIAotPENPREU+V1NETFBhY2thZ2VJbXBsLmdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48SDM+Ci1VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+VU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJVTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOIj48IS0tIC0tPjwvQT48SDM+Ci1VTktOT1dOX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fQ0hJTERSRU48L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+VU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5DaGlsZHJlbjwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0NISUxEUkVOIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVVOS05PV05fRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+VU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuVU5LTk9XTl9FWFRFTlNJQklMSVRZX0VMRU1FTlRfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRJbXBsPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PEgzPgotWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1JFUVVJUkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19SRVFVSVJFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fUkVRVUlSRUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PEgzPgotWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX0VMRU1FTlRfVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9fRUxFTUVOVF9UWVBFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUEiPjwhLS0gLS0+PC9BPjxIMz4KLVhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX19TQ0hFTUE8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+WFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U2NoZW1hPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuWFNEX1NDSEVNQV9FWFRFTlNJQklMSVRZX0VMRU1FTlRfX1NDSEVNQSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJYU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1YU0RfU0NIRU1BX0VYVEVOU0lCSUxJVFlfRUxFTUVOVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlhTRCBTY2hlbWEgRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLlhTRF9TQ0hFTUFfRVhURU5TSUJJTElUWV9FTEVNRU5UX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUU5BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLVFOQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlFOQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8ZW0+UU5hbWU8L2VtPicgZGF0YSB0eXBlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlFOYW1lPC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0UU5hbWUoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuUU5BTUUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLU9QRVJBVElPTl9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk9QRVJBVElPTl9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8ZW0+T3BlcmF0aW9uIFR5cGU8L2VtPicgZGF0YSB0eXBlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk9wZXJhdGlvblR5cGU8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRPcGVyYXRpb25UeXBlKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLk9QRVJBVElPTl9UWVBFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRPTV9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1ET01fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5ET01fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPkRPTSBFbGVtZW50PC9lbT4nIGRhdGEgdHlwZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5FbGVtZW50PC9DT0RFPiwgCi08Q09ERT5XU0RMUGFja2FnZUltcGwuZ2V0RE9NRWxlbWVudCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ET01fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJXU0RMX0VYQ0VQVElPTiI+PCEtLSAtLT48L0E+PEgzPgotV1NETF9FWENFUFRJT048L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+V1NETF9FWENFUFRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5FeGNlcHRpb248L2VtPicgZGF0YSB0eXBlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPldTRExFeGNlcHRpb248L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRXU0RMRXhjZXB0aW9uKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlLldTRExfRVhDRVBUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRPTV9ET0NVTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotRE9NX0RPQ1VNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkRPTV9ET0NVTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPkRPTSBEb2N1bWVudDwvZW0+JyBkYXRhIHR5cGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RG9jdW1lbnQ8L0NPREU+LCAKLTxDT0RFPldTRExQYWNrYWdlSW1wbC5nZXRET01Eb2N1bWVudCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5ET01fRE9DVU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRXU0RMRWxlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRXU0RMRWxlbWVudDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldFdTRExFbGVtZW50PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+RWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkVsZW1lbnQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+V1NETEVsZW1lbnQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0V1NETEVsZW1lbnRfRG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0V1NETEVsZW1lbnRfRG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0V1NETEVsZW1lbnRfRG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj48Q09ERT48ZW0+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj48Q09ERT5XU0RMRWxlbWVudC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRXU0RMRWxlbWVudCgpIj48Q09ERT5nZXRXU0RMRWxlbWVudCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFdTRExFbGVtZW50X0VsZW1lbnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0V1NETEVsZW1lbnRfRWxlbWVudDwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRXU0RMRWxlbWVudF9FbGVtZW50PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj48Q09ERT48ZW0+RWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+RWxlbWVudDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+PENPREU+V1NETEVsZW1lbnQuZ2V0RWxlbWVudCgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRXU0RMRWxlbWVudCgpIj48Q09ERT5nZXRXU0RMRWxlbWVudCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBvcnRUeXBlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFBvcnRUeXBlPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0UG9ydFR5cGU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5Qb3J0IFR5cGU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5Qb3J0IFR5cGU8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+UG9ydFR5cGU8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UG9ydFR5cGVfUU5hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UG9ydFR5cGVfUU5hbWU8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0UG9ydFR5cGVfUU5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCNnZXRRTmFtZSgpIj48Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlFOYW1lPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+UG9ydFR5cGUuZ2V0UU5hbWUoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UG9ydFR5cGUoKSI+PENPREU+Z2V0UG9ydFR5cGUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRQb3J0VHlwZV9VbmRlZmluZWQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UG9ydFR5cGVfVW5kZWZpbmVkPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldFBvcnRUeXBlX1VuZGVmaW5lZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPjxlbT5VbmRlZmluZWQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlVuZGVmaW5lZDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPlBvcnRUeXBlLmlzVW5kZWZpbmVkKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBvcnRUeXBlKCkiPjxDT0RFPmdldFBvcnRUeXBlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UG9ydFR5cGVfRU9wZXJhdGlvbnMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UG9ydFR5cGVfRU9wZXJhdGlvbnM8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0UG9ydFR5cGVfRU9wZXJhdGlvbnM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI2dldEVPcGVyYXRpb25zKCkiPjxDT0RFPjxlbT5FT3BlcmF0aW9uczwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FT3BlcmF0aW9uczwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sI2dldEVPcGVyYXRpb25zKCkiPjxDT0RFPlBvcnRUeXBlLmdldEVPcGVyYXRpb25zKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBvcnRUeXBlKCkiPjxDT0RFPmdldFBvcnRUeXBlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0T3BlcmF0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE9wZXJhdGlvbjwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldE9wZXJhdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5PcGVyYXRpb248L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5PcGVyYXRpb248L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPk9wZXJhdGlvbjwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRPcGVyYXRpb25fU3R5bGUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0T3BlcmF0aW9uX1N0eWxlPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldE9wZXJhdGlvbl9TdHlsZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRTdHlsZSgpIj48Q09ERT48ZW0+U3R5bGU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlN0eWxlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldFN0eWxlKCkiPjxDT0RFPk9wZXJhdGlvbi5nZXRTdHlsZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRPcGVyYXRpb24oKSI+PENPREU+Z2V0T3BlcmF0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0T3BlcmF0aW9uX05hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0T3BlcmF0aW9uX05hbWU8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0T3BlcmF0aW9uX05hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXROYW1lKCkiPjxDT0RFPk9wZXJhdGlvbi5nZXROYW1lKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbigpIj48Q09ERT5nZXRPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRPcGVyYXRpb25fVW5kZWZpbmVkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE9wZXJhdGlvbl9VbmRlZmluZWQ8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0T3BlcmF0aW9uX1VuZGVmaW5lZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT48ZW0+VW5kZWZpbmVkPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5VbmRlZmluZWQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+T3BlcmF0aW9uLmlzVW5kZWZpbmVkKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbigpIj48Q09ERT5nZXRPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRPcGVyYXRpb25fRUlucHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE9wZXJhdGlvbl9FSW5wdXQ8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0T3BlcmF0aW9uX0VJbnB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFSW5wdXQoKSI+PENPREU+PGVtPkVJbnB1dDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8ZW0+RUlucHV0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVJbnB1dCgpIj48Q09ERT5PcGVyYXRpb24uZ2V0RUlucHV0KCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE9wZXJhdGlvbigpIj48Q09ERT5nZXRPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRPcGVyYXRpb25fRU91dHB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRPcGVyYXRpb25fRU91dHB1dDwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRPcGVyYXRpb25fRU91dHB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFT3V0cHV0KCkiPjxDT0RFPjxlbT5FT3V0cHV0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5FT3V0cHV0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVPdXRwdXQoKSI+PENPREU+T3BlcmF0aW9uLmdldEVPdXRwdXQoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uKCkiPjxDT0RFPmdldE9wZXJhdGlvbigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE9wZXJhdGlvbl9FRmF1bHRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE9wZXJhdGlvbl9FRmF1bHRzPC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldE9wZXJhdGlvbl9FRmF1bHRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUZhdWx0cygpIj48Q09ERT48ZW0+RUZhdWx0czwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FRmF1bHRzPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVGYXVsdHMoKSI+PENPREU+T3BlcmF0aW9uLmdldEVGYXVsdHMoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uKCkiPjxDT0RFPmdldE9wZXJhdGlvbigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE9wZXJhdGlvbl9FUGFyYW1ldGVyT3JkZXJpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0T3BlcmF0aW9uX0VQYXJhbWV0ZXJPcmRlcmluZzwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRPcGVyYXRpb25fRVBhcmFtZXRlck9yZGVyaW5nPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCkiPjxDT0RFPjxlbT5FUGFyYW1ldGVyIE9yZGVyaW5nPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPGVtPkVQYXJhbWV0ZXIgT3JkZXJpbmc8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCkiPjxDT0RFPk9wZXJhdGlvbi5nZXRFUGFyYW1ldGVyT3JkZXJpbmcoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0T3BlcmF0aW9uKCkiPjxDT0RFPmdldE9wZXJhdGlvbigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE1lc3NhZ2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TWVzc2FnZTwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldE1lc3NhZ2U8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPk1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5NZXNzYWdlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+TWVzc2FnZTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRNZXNzYWdlX1FOYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE1lc3NhZ2VfUU5hbWU8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0TWVzc2FnZV9RTmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5RTmFtZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+TWVzc2FnZS5nZXRRTmFtZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRNZXNzYWdlKCkiPjxDT0RFPmdldE1lc3NhZ2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRNZXNzYWdlX1VuZGVmaW5lZCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRNZXNzYWdlX1VuZGVmaW5lZDwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRNZXNzYWdlX1VuZGVmaW5lZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VW5kZWZpbmVkPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT5NZXNzYWdlLmlzVW5kZWZpbmVkKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE1lc3NhZ2UoKSI+PENPREU+Z2V0TWVzc2FnZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE1lc3NhZ2VfRVBhcnRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE1lc3NhZ2VfRVBhcnRzPC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldE1lc3NhZ2VfRVBhcnRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sI2dldEVQYXJ0cygpIj48Q09ERT48ZW0+RVBhcnRzPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkVQYXJ0czwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwjZ2V0RVBhcnRzKCkiPjxDT0RFPk1lc3NhZ2UuZ2V0RVBhcnRzKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE1lc3NhZ2UoKSI+PENPREU+Z2V0TWVzc2FnZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBhcnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UGFydDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldFBhcnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+UGFydDwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRQYXJ0X05hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UGFydF9OYW1lPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldFBhcnRfTmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT5QYXJ0LmdldE5hbWUoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UGFydCgpIj48Q09ERT5nZXRQYXJ0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UGFydF9FbGVtZW50TmFtZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRQYXJ0X0VsZW1lbnROYW1lPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldFBhcnRfRWxlbWVudE5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVsZW1lbnROYW1lKCkiPjxDT0RFPjxlbT5FbGVtZW50IE5hbWU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkVsZW1lbnQgTmFtZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0RWxlbWVudE5hbWUoKSI+PENPREU+UGFydC5nZXRFbGVtZW50TmFtZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRQYXJ0KCkiPjxDT0RFPmdldFBhcnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRQYXJ0X1R5cGVOYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFBhcnRfVHlwZU5hbWU8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0UGFydF9UeXBlTmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0VHlwZU5hbWUoKSI+PENPREU+PGVtPlR5cGUgTmFtZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VHlwZSBOYW1lPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRUeXBlTmFtZSgpIj48Q09ERT5QYXJ0LmdldFR5cGVOYW1lKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBhcnQoKSI+PENPREU+Z2V0UGFydCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBhcnRfVHlwZURlZmluaXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UGFydF9UeXBlRGVmaW5pdGlvbjwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRQYXJ0X1R5cGVEZWZpbml0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRUeXBlRGVmaW5pdGlvbigpIj48Q09ERT48ZW0+VHlwZSBEZWZpbml0aW9uPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5UeXBlIERlZmluaXRpb248L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldFR5cGVEZWZpbml0aW9uKCkiPjxDT0RFPlBhcnQuZ2V0VHlwZURlZmluaXRpb24oKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0UGFydCgpIj48Q09ERT5nZXRQYXJ0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UGFydF9FbGVtZW50RGVjbGFyYXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UGFydF9FbGVtZW50RGVjbGFyYXRpb248L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0UGFydF9FbGVtZW50RGVjbGFyYXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVsZW1lbnREZWNsYXJhdGlvbigpIj48Q09ERT48ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+RWxlbWVudCBEZWNsYXJhdGlvbjwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0RWxlbWVudERlY2xhcmF0aW9uKCkiPjxDT0RFPlBhcnQuZ2V0RWxlbWVudERlY2xhcmF0aW9uKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBhcnQoKSI+PENPREU+Z2V0UGFydCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBhcnRfRU1lc3NhZ2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UGFydF9FTWVzc2FnZTwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRQYXJ0X0VNZXNzYWdlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT48ZW0+RU1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVNZXNzYWdlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT5QYXJ0LmdldEVNZXNzYWdlKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBhcnQoKSI+PENPREU+Z2V0UGFydCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEJpbmRpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0QmluZGluZzwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldEJpbmRpbmc8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+QmluZGluZzwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRCaW5kaW5nX1FOYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEJpbmRpbmdfUU5hbWU8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0QmluZGluZ19RTmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5RTmFtZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+QmluZGluZy5nZXRRTmFtZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nKCkiPjxDT0RFPmdldEJpbmRpbmcoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRCaW5kaW5nX1VuZGVmaW5lZCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRCaW5kaW5nX1VuZGVmaW5lZDwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRCaW5kaW5nX1VuZGVmaW5lZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+PGVtPlVuZGVmaW5lZDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VW5kZWZpbmVkPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNpc1VuZGVmaW5lZCgpIj48Q09ERT5CaW5kaW5nLmlzVW5kZWZpbmVkKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmcoKSI+PENPREU+Z2V0QmluZGluZygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEJpbmRpbmdfRVBvcnRUeXBlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEJpbmRpbmdfRVBvcnRUeXBlPC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldEJpbmRpbmdfRVBvcnRUeXBlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRFUG9ydFR5cGUoKSI+PENPREU+PGVtPkVQb3J0IFR5cGU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVQb3J0IFR5cGU8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sI2dldEVQb3J0VHlwZSgpIj48Q09ERT5CaW5kaW5nLmdldEVQb3J0VHlwZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nKCkiPjxDT0RFPmdldEJpbmRpbmcoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRCaW5kaW5nX0VCaW5kaW5nT3BlcmF0aW9ucygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRCaW5kaW5nX0VCaW5kaW5nT3BlcmF0aW9uczwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRCaW5kaW5nX0VCaW5kaW5nT3BlcmF0aW9uczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRFQmluZGluZ09wZXJhdGlvbnMoKSI+PENPREU+PGVtPkVCaW5kaW5nIE9wZXJhdGlvbnM8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RUJpbmRpbmcgT3BlcmF0aW9uczwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCkiPjxDT0RFPkJpbmRpbmcuZ2V0RUJpbmRpbmdPcGVyYXRpb25zKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmcoKSI+PENPREU+Z2V0QmluZGluZygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEJpbmRpbmdPcGVyYXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0QmluZGluZ09wZXJhdGlvbjwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldEJpbmRpbmdPcGVyYXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPkJpbmRpbmcgT3BlcmF0aW9uPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5CaW5kaW5nT3BlcmF0aW9uPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEJpbmRpbmdPcGVyYXRpb25fTmFtZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRCaW5kaW5nT3BlcmF0aW9uX05hbWU8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0QmluZGluZ09wZXJhdGlvbl9OYW1lPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5OYW1lPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXROYW1lKCkiPjxDT0RFPkJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uKCkiPjxDT0RFPmdldEJpbmRpbmdPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRCaW5kaW5nT3BlcmF0aW9uX0VPcGVyYXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0QmluZGluZ09wZXJhdGlvbl9FT3BlcmF0aW9uPC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldEJpbmRpbmdPcGVyYXRpb25fRU9wZXJhdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RU9wZXJhdGlvbigpIj48Q09ERT48ZW0+RU9wZXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+RU9wZXJhdGlvbjwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RU9wZXJhdGlvbigpIj48Q09ERT5CaW5kaW5nT3BlcmF0aW9uLmdldEVPcGVyYXRpb24oKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ09wZXJhdGlvbigpIj48Q09ERT5nZXRCaW5kaW5nT3BlcmF0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0lucHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdJbnB1dDwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nSW5wdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nSW5wdXQoKSI+PENPREU+PGVtPkVCaW5kaW5nIElucHV0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5FQmluZGluZyBJbnB1dDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RUJpbmRpbmdJbnB1dCgpIj48Q09ERT5CaW5kaW5nT3BlcmF0aW9uLmdldEVCaW5kaW5nSW5wdXQoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0QmluZGluZ09wZXJhdGlvbigpIj48Q09ERT5nZXRCaW5kaW5nT3BlcmF0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ091dHB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nT3V0cHV0PC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdPdXRwdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nT3V0cHV0KCkiPjxDT0RFPjxlbT5FQmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPGVtPkVCaW5kaW5nIE91dHB1dDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RUJpbmRpbmdPdXRwdXQoKSI+PENPREU+QmluZGluZ09wZXJhdGlvbi5nZXRFQmluZGluZ091dHB1dCgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uKCkiPjxDT0RFPmdldEJpbmRpbmdPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRCaW5kaW5nT3BlcmF0aW9uX0VCaW5kaW5nRmF1bHRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEJpbmRpbmdPcGVyYXRpb25fRUJpbmRpbmdGYXVsdHM8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0QmluZGluZ09wZXJhdGlvbl9FQmluZGluZ0ZhdWx0czwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0ZhdWx0cygpIj48Q09ERT48ZW0+RUJpbmRpbmcgRmF1bHRzPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkVCaW5kaW5nIEZhdWx0czwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RUJpbmRpbmdGYXVsdHMoKSI+PENPREU+QmluZGluZ09wZXJhdGlvbi5nZXRFQmluZGluZ0ZhdWx0cygpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3BlcmF0aW9uKCkiPjxDT0RFPmdldEJpbmRpbmdPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTZXJ2aWNlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNlcnZpY2U8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRTZXJ2aWNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5TZXJ2aWNlPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+U2VydmljZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPlNlcnZpY2U8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U2VydmljZV9RTmFtZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTZXJ2aWNlX1FOYW1lPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldFNlcnZpY2VfUU5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sI2dldFFOYW1lKCkiPjxDT0RFPjxlbT5RTmFtZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+UU5hbWU8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sI2dldFFOYW1lKCkiPjxDT0RFPlNlcnZpY2UuZ2V0UU5hbWUoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0U2VydmljZSgpIj48Q09ERT5nZXRTZXJ2aWNlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U2VydmljZV9VbmRlZmluZWQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U2VydmljZV9VbmRlZmluZWQ8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0U2VydmljZV9VbmRlZmluZWQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sI2lzVW5kZWZpbmVkKCkiPjxDT0RFPjxlbT5VbmRlZmluZWQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlVuZGVmaW5lZDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwjaXNVbmRlZmluZWQoKSI+PENPREU+U2VydmljZS5pc1VuZGVmaW5lZCgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRTZXJ2aWNlKCkiPjxDT0RFPmdldFNlcnZpY2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTZXJ2aWNlX0VQb3J0cygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTZXJ2aWNlX0VQb3J0czwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRTZXJ2aWNlX0VQb3J0czwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCNnZXRFUG9ydHMoKSI+PENPREU+PGVtPkVQb3J0czwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FUG9ydHM8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sI2dldEVQb3J0cygpIj48Q09ERT5TZXJ2aWNlLmdldEVQb3J0cygpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRTZXJ2aWNlKCkiPjxDT0RFPmdldFNlcnZpY2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRQb3J0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFBvcnQ8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRQb3J0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5Qb3J0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+UG9ydDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPlBvcnQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UG9ydF9OYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFBvcnRfTmFtZTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRQb3J0X05hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sI2dldE5hbWUoKSI+PENPREU+UG9ydC5nZXROYW1lKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBvcnQoKSI+PENPREU+Z2V0UG9ydCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFBvcnRfRUJpbmRpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UG9ydF9FQmluZGluZzwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRQb3J0X0VCaW5kaW5nPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNnZXRFQmluZGluZygpIj48Q09ERT48ZW0+RUJpbmRpbmc8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVCaW5kaW5nPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNnZXRFQmluZGluZygpIj48Q09ERT5Qb3J0LmdldEVCaW5kaW5nKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFBvcnQoKSI+PENPREU+Z2V0UG9ydCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEV4dGVuc2liaWxpdHlFbGVtZW50KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEV4dGVuc2liaWxpdHlFbGVtZW50PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfUmVxdWlyZWQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfUmVxdWlyZWQ8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRfUmVxdWlyZWQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPjxDT0RFPjxlbT5SZXF1aXJlZDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+UmVxdWlyZWQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPjxDT0RFPkV4dGVuc2liaWxpdHlFbGVtZW50LmlzUmVxdWlyZWQoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSI+PENPREU+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9FbGVtZW50VHlwZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9FbGVtZW50VHlwZTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudF9FbGVtZW50VHlwZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldEVsZW1lbnRUeXBlKCkiPjxDT0RFPjxlbT5FbGVtZW50IFR5cGU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkVsZW1lbnQgVHlwZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldEVsZW1lbnRUeXBlKCkiPjxDT0RFPkV4dGVuc2liaWxpdHlFbGVtZW50LmdldEVsZW1lbnRUeXBlKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50KCkiPjxDT0RFPmdldEV4dGVuc2liaWxpdHlFbGVtZW50KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RGVmaW5pdGlvbigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREZWZpbml0aW9uPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0RGVmaW5pdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+RGVmaW5pdGlvbjwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkRlZmluaXRpb248L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5EZWZpbml0aW9uPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldERlZmluaXRpb25fVGFyZ2V0TmFtZXNwYWNlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERlZmluaXRpb25fVGFyZ2V0TmFtZXNwYWNlPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldERlZmluaXRpb25fVGFyZ2V0TmFtZXNwYWNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRUYXJnZXROYW1lc3BhY2UoKSI+PENPREU+PGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlRhcmdldCBOYW1lc3BhY2U8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldFRhcmdldE5hbWVzcGFjZSgpIj48Q09ERT5EZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uKCkiPjxDT0RFPmdldERlZmluaXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXREZWZpbml0aW9uX0xvY2F0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERlZmluaXRpb25fTG9jYXRpb248L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0RGVmaW5pdGlvbl9Mb2NhdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0TG9jYXRpb24oKSI+PENPREU+PGVtPkxvY2F0aW9uPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Mb2NhdGlvbjwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0TG9jYXRpb24oKSI+PENPREU+RGVmaW5pdGlvbi5nZXRMb2NhdGlvbigpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uKCkiPjxDT0RFPmdldERlZmluaXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXREZWZpbml0aW9uX1FOYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERlZmluaXRpb25fUU5hbWU8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0RGVmaW5pdGlvbl9RTmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+PGVtPlFOYW1lPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5RTmFtZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0UU5hbWUoKSI+PENPREU+RGVmaW5pdGlvbi5nZXRRTmFtZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uKCkiPjxDT0RFPmdldERlZmluaXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXREZWZpbml0aW9uX0VuY29kaW5nKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERlZmluaXRpb25fRW5jb2Rpbmc8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0RGVmaW5pdGlvbl9FbmNvZGluZzwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RW5jb2RpbmcoKSI+PENPREU+PGVtPkVuY29kaW5nPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5FbmNvZGluZzwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RW5jb2RpbmcoKSI+PENPREU+RGVmaW5pdGlvbi5nZXRFbmNvZGluZygpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uKCkiPjxDT0RFPmdldERlZmluaXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXREZWZpbml0aW9uX0VJbXBvcnRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERlZmluaXRpb25fRUltcG9ydHM8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0RGVmaW5pdGlvbl9FSW1wb3J0czwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFSW1wb3J0cygpIj48Q09ERT48ZW0+RUltcG9ydHM8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RUltcG9ydHM8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVJbXBvcnRzKCkiPjxDT0RFPkRlZmluaXRpb24uZ2V0RUltcG9ydHMoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbigpIj48Q09ERT5nZXREZWZpbml0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RGVmaW5pdGlvbl9FVHlwZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RGVmaW5pdGlvbl9FVHlwZXM8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0RGVmaW5pdGlvbl9FVHlwZXM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVUeXBlcygpIj48Q09ERT48ZW0+RVR5cGVzPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5FVHlwZXM8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVUeXBlcygpIj48Q09ERT5EZWZpbml0aW9uLmdldEVUeXBlcygpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uKCkiPjxDT0RFPmdldERlZmluaXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXREZWZpbml0aW9uX0VNZXNzYWdlcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREZWZpbml0aW9uX0VNZXNzYWdlczwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXREZWZpbml0aW9uX0VNZXNzYWdlczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFTWVzc2FnZXMoKSI+PENPREU+PGVtPkVNZXNzYWdlczwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FTWVzc2FnZXM8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVNZXNzYWdlcygpIj48Q09ERT5EZWZpbml0aW9uLmdldEVNZXNzYWdlcygpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXREZWZpbml0aW9uKCkiPjxDT0RFPmdldERlZmluaXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXREZWZpbml0aW9uX0VQb3J0VHlwZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RGVmaW5pdGlvbl9FUG9ydFR5cGVzPC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldERlZmluaXRpb25fRVBvcnRUeXBlczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFUG9ydFR5cGVzKCkiPjxDT0RFPjxlbT5FUG9ydCBUeXBlczwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FUG9ydCBUeXBlczwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RVBvcnRUeXBlcygpIj48Q09ERT5EZWZpbml0aW9uLmdldEVQb3J0VHlwZXMoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbigpIj48Q09ERT5nZXREZWZpbml0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RGVmaW5pdGlvbl9FQmluZGluZ3MoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RGVmaW5pdGlvbl9FQmluZGluZ3M8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0RGVmaW5pdGlvbl9FQmluZGluZ3M8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RUJpbmRpbmdzKCkiPjxDT0RFPjxlbT5FQmluZGluZ3M8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RUJpbmRpbmdzPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFQmluZGluZ3MoKSI+PENPREU+RGVmaW5pdGlvbi5nZXRFQmluZGluZ3MoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbigpIj48Q09ERT5nZXREZWZpbml0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RGVmaW5pdGlvbl9FU2VydmljZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RGVmaW5pdGlvbl9FU2VydmljZXM8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0RGVmaW5pdGlvbl9FU2VydmljZXM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RVNlcnZpY2VzKCkiPjxDT0RFPjxlbT5FU2VydmljZXM8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RVNlcnZpY2VzPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFU2VydmljZXMoKSI+PENPREU+RGVmaW5pdGlvbi5nZXRFU2VydmljZXMoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0RGVmaW5pdGlvbigpIj48Q09ERT5nZXREZWZpbml0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RGVmaW5pdGlvbl9FTmFtZXNwYWNlcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREZWZpbml0aW9uX0VOYW1lc3BhY2VzPC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldERlZmluaXRpb25fRU5hbWVzcGFjZXM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjZ2V0RU5hbWVzcGFjZXMoKSI+PENPREU+PGVtPkVOYW1lc3BhY2VzPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPGVtPkVOYW1lc3BhY2VzPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFTmFtZXNwYWNlcygpIj48Q09ERT5EZWZpbml0aW9uLmdldEVOYW1lc3BhY2VzKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldERlZmluaXRpb24oKSI+PENPREU+Z2V0RGVmaW5pdGlvbigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEltcG9ydCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJbXBvcnQ8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJbXBvcnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+SW1wb3J0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SW1wb3J0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5JbXBvcnQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SW1wb3J0X05hbWVzcGFjZVVSSSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJbXBvcnRfTmFtZXNwYWNlVVJJPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldEltcG9ydF9OYW1lc3BhY2VVUkk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPjxlbT5OYW1lc3BhY2UgVVJJPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5OYW1lc3BhY2UgVVJJPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT5JbXBvcnQuZ2V0TmFtZXNwYWNlVVJJKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEltcG9ydCgpIj48Q09ERT5nZXRJbXBvcnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJbXBvcnRfTG9jYXRpb25VUkkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SW1wb3J0X0xvY2F0aW9uVVJJPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldEltcG9ydF9Mb2NhdGlvblVSSTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Q09ERT48ZW0+TG9jYXRpb24gVVJJPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+SW1wb3J0LmdldExvY2F0aW9uVVJJKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEltcG9ydCgpIj48Q09ERT5nZXRJbXBvcnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJbXBvcnRfRURlZmluaXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SW1wb3J0X0VEZWZpbml0aW9uPC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldEltcG9ydF9FRGVmaW5pdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFRGVmaW5pdGlvbigpIj48Q09ERT48ZW0+RURlZmluaXRpb248L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVEZWZpbml0aW9uPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldEVEZWZpbml0aW9uKCkiPjxDT0RFPkltcG9ydC5nZXRFRGVmaW5pdGlvbigpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRJbXBvcnQoKSI+PENPREU+Z2V0SW1wb3J0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SW1wb3J0X0VTY2hlbWEoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SW1wb3J0X0VTY2hlbWE8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0SW1wb3J0X0VTY2hlbWE8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0RVNjaGVtYSgpIj48Q09ERT48ZW0+RVNjaGVtYTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+RVNjaGVtYTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNnZXRFU2NoZW1hKCkiPjxDT0RFPkltcG9ydC5nZXRFU2NoZW1hKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEltcG9ydCgpIj48Q09ERT5nZXRJbXBvcnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFeHRlbnNpYmxlRWxlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFeHRlbnNpYmxlRWxlbWVudDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldEV4dGVuc2libGVFbGVtZW50PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RXh0ZW5zaWJsZSBFbGVtZW50PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPkV4dGVuc2libGVFbGVtZW50PC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEV4dGVuc2libGVFbGVtZW50X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RXh0ZW5zaWJsZUVsZW1lbnRfRUV4dGVuc2liaWxpdHlFbGVtZW50czwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRFeHRlbnNpYmxlRWxlbWVudF9FRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCNnZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPjxDT0RFPjxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+PENPREU+RXh0ZW5zaWJsZUVsZW1lbnQuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRFeHRlbnNpYmxlRWxlbWVudCgpIj48Q09ERT5nZXRFeHRlbnNpYmxlRWxlbWVudCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElucHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElucHV0PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SW5wdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5JbnB1dDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklucHV0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPklucHV0PC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE91dHB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRPdXRwdXQ8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRPdXRwdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+T3V0cHV0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+T3V0cHV0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5PdXRwdXQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RmF1bHQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RmF1bHQ8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRGYXVsdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPkZhdWx0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RmF1bHQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+RmF1bHQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QmluZGluZ0lucHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEJpbmRpbmdJbnB1dDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldEJpbmRpbmdJbnB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5CaW5kaW5nIElucHV0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QmluZGluZyBJbnB1dDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+QmluZGluZ0lucHV0PC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEJpbmRpbmdJbnB1dF9OYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEJpbmRpbmdJbnB1dF9OYW1lPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldEJpbmRpbmdJbnB1dF9OYW1lPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT5CaW5kaW5nSW5wdXQuZ2V0TmFtZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nSW5wdXQoKSI+PENPREU+Z2V0QmluZGluZ0lucHV0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QmluZGluZ0lucHV0X0VJbnB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRCaW5kaW5nSW5wdXRfRUlucHV0PC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldEJpbmRpbmdJbnB1dF9FSW5wdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjZ2V0RUlucHV0KCkiPjxDT0RFPjxlbT5FSW5wdXQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVJbnB1dDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCNnZXRFSW5wdXQoKSI+PENPREU+QmluZGluZ0lucHV0LmdldEVJbnB1dCgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nSW5wdXQoKSI+PENPREU+Z2V0QmluZGluZ0lucHV0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QmluZGluZ091dHB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRCaW5kaW5nT3V0cHV0PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0QmluZGluZ091dHB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+QmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5CaW5kaW5nIE91dHB1dDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPkJpbmRpbmdPdXRwdXQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QmluZGluZ091dHB1dF9OYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEJpbmRpbmdPdXRwdXRfTmFtZTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRCaW5kaW5nT3V0cHV0X05hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI2dldE5hbWUoKSI+PENPREU+QmluZGluZ091dHB1dC5nZXROYW1lKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdPdXRwdXQoKSI+PENPREU+Z2V0QmluZGluZ091dHB1dCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEJpbmRpbmdPdXRwdXRfRU91dHB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRCaW5kaW5nT3V0cHV0X0VPdXRwdXQ8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0QmluZGluZ091dHB1dF9FT3V0cHV0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXRFT3V0cHV0KCkiPjxDT0RFPjxlbT5FT3V0cHV0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FT3V0cHV0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXRFT3V0cHV0KCkiPjxDT0RFPkJpbmRpbmdPdXRwdXQuZ2V0RU91dHB1dCgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCNnZXRCaW5kaW5nT3V0cHV0KCkiPjxDT0RFPmdldEJpbmRpbmdPdXRwdXQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRCaW5kaW5nRmF1bHQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0QmluZGluZ0ZhdWx0PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0QmluZGluZ0ZhdWx0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPkJpbmRpbmcgRmF1bHQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5CaW5kaW5nIEZhdWx0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5CaW5kaW5nRmF1bHQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QmluZGluZ0ZhdWx0X05hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0QmluZGluZ0ZhdWx0X05hbWU8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0QmluZGluZ0ZhdWx0X05hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPkJpbmRpbmdGYXVsdC5nZXROYW1lKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdGYXVsdCgpIj48Q09ERT5nZXRCaW5kaW5nRmF1bHQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRCaW5kaW5nRmF1bHRfRUZhdWx0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEJpbmRpbmdGYXVsdF9FRmF1bHQ8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0QmluZGluZ0ZhdWx0X0VGYXVsdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXRFRmF1bHQoKSI+PENPREU+PGVtPkVGYXVsdDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+RUZhdWx0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sI2dldEVGYXVsdCgpIj48Q09ERT5CaW5kaW5nRmF1bHQuZ2V0RUZhdWx0KCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldEJpbmRpbmdGYXVsdCgpIj48Q09ERT5nZXRCaW5kaW5nRmF1bHQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXROYW1lc3BhY2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TmFtZXNwYWNlPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0TmFtZXNwYWNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPk5hbWVzcGFjZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPk5hbWVzcGFjZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+TmFtZXNwYWNlPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE5hbWVzcGFjZV9VUkkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TmFtZXNwYWNlX1VSSTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXROYW1lc3BhY2VfVVJJPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI2dldFVSSSgpIj48Q09ERT48ZW0+VVJJPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5VUkk8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwjZ2V0VVJJKCkiPjxDT0RFPk5hbWVzcGFjZS5nZXRVUkkoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TmFtZXNwYWNlKCkiPjxDT0RFPmdldE5hbWVzcGFjZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE5hbWVzcGFjZV9QcmVmaXgoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TmFtZXNwYWNlX1ByZWZpeDwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXROYW1lc3BhY2VfUHJlZml4PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sI2dldFByZWZpeCgpIj48Q09ERT48ZW0+UHJlZml4PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5QcmVmaXg8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwjZ2V0UHJlZml4KCkiPjxDT0RFPk5hbWVzcGFjZS5nZXRQcmVmaXgoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0TmFtZXNwYWNlKCkiPjxDT0RFPmdldE5hbWVzcGFjZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElQb3J0VHlwZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJUG9ydFR5cGU8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJUG9ydFR5cGU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JUG9ydCBUeXBlPC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JUG9ydCBUeXBlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlBvcnRUeXBlPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SU9wZXJhdGlvbigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJT3BlcmF0aW9uPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SU9wZXJhdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklPcGVyYXRpb248L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklPcGVyYXRpb248L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+T3BlcmF0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SUlucHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElJbnB1dDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElJbnB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklJbnB1dDwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUlucHV0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPklucHV0PC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SU91dHB1dCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJT3V0cHV0PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SU91dHB1dDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklPdXRwdXQ8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklPdXRwdXQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+T3V0cHV0PC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SUZhdWx0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElGYXVsdDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElGYXVsdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklGYXVsdDwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUZhdWx0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkZhdWx0PC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SU1lc3NhZ2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SU1lc3NhZ2U8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJTWVzc2FnZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklNZXNzYWdlPC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JTWVzc2FnZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5NZXNzYWdlPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SVBhcnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SVBhcnQ8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJUGFydDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklQYXJ0PC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JUGFydDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5QYXJ0PC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SVNlcnZpY2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SVNlcnZpY2U8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJU2VydmljZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklTZXJ2aWNlPC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JU2VydmljZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TZXJ2aWNlPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SVBvcnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SVBvcnQ8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJUG9ydDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklQb3J0PC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JUG9ydDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5Qb3J0PC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SUJpbmRpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SUJpbmRpbmc8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJQmluZGluZzwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklCaW5kaW5nPC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JQmluZGluZzwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SUJpbmRpbmdPcGVyYXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SUJpbmRpbmdPcGVyYXRpb248L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJQmluZGluZ09wZXJhdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklCaW5kaW5nIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUJpbmRpbmcgT3BlcmF0aW9uPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkJpbmRpbmdPcGVyYXRpb248L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJQmluZGluZ0lucHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElCaW5kaW5nSW5wdXQ8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJQmluZGluZ0lucHV0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUJpbmRpbmcgSW5wdXQ8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklCaW5kaW5nIElucHV0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkJpbmRpbmdJbnB1dDwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElCaW5kaW5nT3V0cHV0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElCaW5kaW5nT3V0cHV0PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SUJpbmRpbmdPdXRwdXQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JQmluZGluZyBPdXRwdXQ8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklCaW5kaW5nIE91dHB1dDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nT3V0cHV0PC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SUJpbmRpbmdGYXVsdCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJQmluZGluZ0ZhdWx0PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SUJpbmRpbmdGYXVsdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklCaW5kaW5nIEZhdWx0PC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JQmluZGluZyBGYXVsdDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5CaW5kaW5nRmF1bHQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SUV4dGVuc2liaWxpdHlFbGVtZW50PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SUV4dGVuc2liaWxpdHlFbGVtZW50PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElEZWZpbml0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElEZWZpbml0aW9uPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SURlZmluaXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JRGVmaW5pdGlvbjwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SURlZmluaXRpb248L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RGVmaW5pdGlvbjwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElJbXBvcnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SUltcG9ydDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElJbXBvcnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JSW1wb3J0PC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JSW1wb3J0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkltcG9ydDwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElMaXN0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElMaXN0PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SUxpc3Q8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JTGlzdDwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUxpc3Q8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TGlzdDwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElNYXAoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SU1hcDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElNYXA8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JTWFwPC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JTWFwPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk1hcDwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElVUkwoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SVVSTDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElVUkw8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JVVJMPC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JVVJMPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlVSTDwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElFeHRlbnNpb25SZWdpc3RyeSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJRXh0ZW5zaW9uUmVnaXN0cnk8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJRXh0ZW5zaW9uUmVnaXN0cnk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JRXh0ZW5zaW9uIFJlZ2lzdHJ5PC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JRXh0ZW5zaW9uIFJlZ2lzdHJ5PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkV4dGVuc2lvblJlZ2lzdHJ5PC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0VHlwZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0VHlwZXM8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRUeXBlczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+PGVtPlR5cGVzPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+VHlwZXM8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+VHlwZXM8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SUl0ZXJhdG9yKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElJdGVyYXRvcjwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElJdGVyYXRvcjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklJdGVyYXRvcjwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUl0ZXJhdG9yPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkl0ZXJhdG9yPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SVR5cGVzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElUeXBlczwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElUeXBlczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklUeXBlczwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SVR5cGVzPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlR5cGVzPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPjxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlVua25vd24gRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50X0NoaWxkcmVuKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudF9DaGlsZHJlbjwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnRfQ2hpbGRyZW48L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRDaGlsZHJlbigpIj48Q09ERT48ZW0+Q2hpbGRyZW48L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+Q2hpbGRyZW48L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0Q2hpbGRyZW4oKSI+PENPREU+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50LmdldENoaWxkcmVuKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpIj48Q09ERT5nZXRVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5YU0QgU2NoZW1hIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudF9TY2hlbWEoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRfU2NoZW1hPC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50X1NjaGVtYTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldFNjaGVtYSgpIj48Q09ERT48ZW0+U2NoZW1hPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgJzxlbT5TY2hlbWE8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRTY2hlbWEoKSI+PENPREU+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuZ2V0U2NoZW1hKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KCkiPjxDT0RFPmdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TWVzc2FnZVJlZmVyZW5jZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRNZXNzYWdlUmVmZXJlbmNlPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0TWVzc2FnZVJlZmVyZW5jZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Q09ERT48ZW0+TWVzc2FnZSBSZWZlcmVuY2U8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5NZXNzYWdlIFJlZmVyZW5jZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPk1lc3NhZ2VSZWZlcmVuY2U8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TWVzc2FnZVJlZmVyZW5jZV9OYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE1lc3NhZ2VSZWZlcmVuY2VfTmFtZTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRNZXNzYWdlUmVmZXJlbmNlX05hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI2dldE5hbWUoKSI+PENPREU+PGVtPk5hbWU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI2dldE5hbWUoKSI+PENPREU+TWVzc2FnZVJlZmVyZW5jZS5nZXROYW1lKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE1lc3NhZ2VSZWZlcmVuY2UoKSI+PENPREU+Z2V0TWVzc2FnZVJlZmVyZW5jZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE1lc3NhZ2VSZWZlcmVuY2VfRU1lc3NhZ2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TWVzc2FnZVJlZmVyZW5jZV9FTWVzc2FnZTwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRNZXNzYWdlUmVmZXJlbmNlX0VNZXNzYWdlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT48ZW0+RU1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVNZXNzYWdlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT5NZXNzYWdlUmVmZXJlbmNlLmdldEVNZXNzYWdlKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldE1lc3NhZ2VSZWZlcmVuY2UoKSI+PENPREU+Z2V0TWVzc2FnZVJlZmVyZW5jZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFFOYW1lKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFFOYW1lPC9IMz4KLTxQUkU+Ci1FRGF0YVR5cGUgPEI+Z2V0UU5hbWU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8Q09ERT48ZW0+UU5hbWU8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxlbT5RTmFtZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5RTmFtZTwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE9wZXJhdGlvblR5cGUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0T3BlcmF0aW9uVHlwZTwvSDM+Ci08UFJFPgotRURhdGFUeXBlIDxCPmdldE9wZXJhdGlvblR5cGU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8Q09ERT48ZW0+T3BlcmF0aW9uIFR5cGU8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxlbT5PcGVyYXRpb24gVHlwZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5PcGVyYXRpb25UeXBlPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RE9NRWxlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRET01FbGVtZW50PC9IMz4KLTxQUkU+Ci1FRGF0YVR5cGUgPEI+Z2V0RE9NRWxlbWVudDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxDT0RFPjxlbT5ET00gRWxlbWVudDwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAnPGVtPkRPTSBFbGVtZW50PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkVsZW1lbnQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRXU0RMRXhjZXB0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFdTRExFeGNlcHRpb248L0gzPgotPFBSRT4KLUVEYXRhVHlwZSA8Qj5nZXRXU0RMRXhjZXB0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAnPENPREU+PGVtPkV4Y2VwdGlvbjwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAnPGVtPkV4Y2VwdGlvbjwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5XU0RMRXhjZXB0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RE9NRG9jdW1lbnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RE9NRG9jdW1lbnQ8L0gzPgotPFBSRT4KLUVEYXRhVHlwZSA8Qj5nZXRET01Eb2N1bWVudDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxDT0RFPjxlbT5ET00gRG9jdW1lbnQ8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxlbT5ET00gRG9jdW1lbnQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+RG9jdW1lbnQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRXU0RMRmFjdG9yeSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRXU0RMRmFjdG9yeTwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+IDxCPmdldFdTRExGYWN0b3J5PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1dTRExQYWNrYWdlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7PEEgSFJFRj0iI25lc3RlZF9jbGFzc19zdW1tYXJ5Ij5ORVNURUQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUwMWI4NC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotV1NETFBsdWdpbgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQbHVnaW4gY2xhc3MiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IldTRExQbHVnaW4iOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMUGx1Z2luLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFBsdWdpbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBXU0RMUGx1Z2luPC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj5FTUZQbHVnaW4KLSAgICAgIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGx1Z2luPC9CPgotPC9QUkU+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgZmluYWwgY2xhc3MgPEI+V1NETFBsdWdpbjwvQj48RFQ+ZXh0ZW5kcyBFTUZQbHVnaW48L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhlIDxiPlBsdWdpbjwvYj4gZm9yIHRoZSBtb2RlbC4KLSBUaGUgV1NETCBtb2RlbCBuZWVkcyB0byBiZSBhYmxlIHRvIHJ1biB3aXRoaW4gYW4gRWNsaXBzZSB3b3JrYmVuY2gsCi0gd2l0aGluIGEgaGVhZGxlc3MgRWNsaXBzZSB3b3Jrc3BhY2UsIG9yIGp1c3Qgc3RhbmQtYWxvbmUgYXMgcGFydCAKLSBvZiBzb21lIG90aGVyIGFwcGxpY2F0aW9uLgotIFRvIHN1cHBvcnQgdGhpcywgYWxsIGFjY2VzcyBpcyBkaXJlY3RlZCB0byB0aGUgc3RhdGljIG1ldGhvZHMsCi0gd2hpY2ggY2FuIHJlZGlyZWN0IHRoZSBzZXJ2aWNlIGFzIGFwcG9wcmlhdGUgdG8gdGhlIHJ1bnRpbWUuCi0gRHVyaW5nIHN0YW5kLWFsb25lIGludm9jYXRpb24gbm8gcGx1Z2luIGluaXRpYWxpemF0aW9uIHRha2VzIHBsYWNlLgotIEluIHRoaXMgY2FzZSB5b3Ugd2lsbCBuZWVkIHRoZSByZXNvdXJjZXMgamFyIG9uIHRoZSBjbGFzcyBwYXRoLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPjxwPgotIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvCi0gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrCi0gZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4KLSAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLgotIDwvcD48L0NPREU+PC9ETD4KLTxIUj4KLQotPFA+Ci08IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQbHVnaW48L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCNJTlNUQU5DRSI+SU5TVEFOQ0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGx1Z2luLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YXgud3NkbC5mYWN0b3J5LldTRExGYWN0b3J5PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCNjcmVhdGVXU0RMNEpGYWN0b3J5KCkiPmNyZWF0ZVdTREw0SkZhY3Rvcnk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkoamF2YS5sYW5nLlN0cmluZykiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lc3BhY2UpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkoKSI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwjZ2V0UGx1Z2luKCkiPmdldFBsdWdpbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgRWNsaXBzZSBwbHVnaW4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO1Jlc291cmNlTG9jYXRvcjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwjZ2V0UGx1Z2luUmVzb3VyY2VMb2NhdG9yKCkiPmdldFBsdWdpblJlc291cmNlTG9jYXRvcjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmVxdWFscywgZ2V0Q2xhc3MsIGhhc2hDb2RlLCBub3RpZnksIG5vdGlmeUFsbCwgdG9TdHJpbmcsIHdhaXQsIHdhaXQsIHdhaXQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iSU5TVEFOQ0UiPjwhLS0gLS0+PC9BPjxIMz4KLUlOU1RBTkNFPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGx1Z2luPC9BPiA8Qj5JTlNUQU5DRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwbHVnaW4uCi08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldFBsdWdpblJlc291cmNlTG9jYXRvcigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRQbHVnaW5SZXNvdXJjZUxvY2F0b3I8L0gzPgotPFBSRT4KLXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgPEI+Z2V0UGx1Z2luUmVzb3VyY2VMb2NhdG9yPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRQbHVnaW4oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0UGx1Z2luPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbjwvQT4gPEI+Z2V0UGx1Z2luPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBFY2xpcHNlIHBsdWdpbi4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgc2luZ2xldG9uIGluc3RhbmNlLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5KGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0gzPgotPFBSRT4KLXB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTwvQT4gPEI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZXNwYWNlKTwvUFJFPgotPERMPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnk8L0gzPgotPFBSRT4KLXB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnk8L0E+IDxCPmdldEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVXU0RMNEpGYWN0b3J5KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVdTREw0SkZhY3Rvcnk8L0gzPgotPFBSRT4KLXB1YmxpYyBqYXZheC53c2RsLmZhY3RvcnkuV1NETEZhY3RvcnkgPEI+Y3JlYXRlV1NETDRKRmFjdG9yeTwvQj4oKTwvUFJFPgotPERMPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMUGx1Z2luLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFBsdWdpbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmJhMjIzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVdTRExQbHVnaW5JbXBsZW1lbnRhdGlvbgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbiBjbGFzcyI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iV1NETFBsdWdpbkltcGxlbWVudGF0aW9uIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsPC9GT05UPgotPEJSPgotQ2xhc3MgV1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj5FY2xpcHNlUGx1Z2luCi0gICAgICA8SU1HIFNSQz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2luaGVyaXQuZ2lmIiBBTFQ9ImV4dGVuZGVkIGJ5ICI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9CPgotPC9QUkU+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgY2xhc3MgPEI+V1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9CPjxEVD5leHRlbmRzIEVjbGlwc2VQbHVnaW48L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRWNsaXBzZSA8Yj5QbHVnaW48L2I+LgotIDxwPgotIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvCi0gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrCi0gZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4KLSAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLgotIDwvcD4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCNXU0RMUGx1Z2luSW1wbGVtZW50YXRpb24oKSI+V1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q3JlYXRlcyBhbiBpbnN0YW5jZS48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+ZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJXU0RMUGx1Z2luSW1wbGVtZW50YXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotV1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9IMz4KLTxQUkU+Ci1wdWJsaWMgPEI+V1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+Q3JlYXRlcyBhbiBpbnN0YW5jZS4KLTxQPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVjOWExOC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjgyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwO05FWFQgQ0xBU1M8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGw8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNpbmNlOjwvQj48L0RUPgotICA8REQ+MS4wPC9ERD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSI+PENPREU+V1NETFBhY2thZ2UuZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO29yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWE8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRTY2hlbWEoKSI+Z2V0U2NoZW1hPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U2NoZW1hPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFNjaGVtYShvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hKSI+c2V0U2NoZW1hPC9BPjwvQj4ob3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYSZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldFNjaGVtYSgpIj48Q09ERT48ZW0+U2NoZW1hPC9lbT48L0NPREU+PC9BPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+Z2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2lzUmVxdWlyZWQoKSI+aXNSZXF1aXJlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0RWxlbWVudFR5cGUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPnNldEVsZW1lbnRUeXBlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRSZXF1aXJlZChib29sZWFuKSI+c2V0UmVxdWlyZWQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXRSZXF1aXJlZCwgc2V0UmVxdWlyZWQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRTY2hlbWEoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U2NoZW1hPC9IMz4KLTxQUkU+Ci1vcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hIDxCPmdldFNjaGVtYTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlNjaGVtYTwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U2NoZW1hPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5TY2hlbWE8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0U2NoZW1hKG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWEpIj48Q09ERT5zZXRTY2hlbWEoWFNEU2NoZW1hKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZ2V0WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnRfU2NoZW1hKCkiPjxDT0RFPldTRExQYWNrYWdlLmdldFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50X1NjaGVtYSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFNjaGVtYShvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0U2NoZW1hPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFNjaGVtYTwvQj4ob3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYSZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRTY2hlbWEoKSI+PENPREU+PGVtPlNjaGVtYTwvZW0+PC9DT0RFPjwvQT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlNjaGVtYTwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRTY2hlbWEoKSI+PENPREU+Z2V0U2NoZW1hKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYyNDBlZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1IVFRQQWRkcmVzcwotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQQWRkcmVzcyBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkhUVFBBZGRyZXNzIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSFRUUEFkZHJlc3MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYgQ0xBU1MmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBBZGRyZXNzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSFRUUEFkZHJlc3M8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQWRkcmVzcywgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5IVFRQQWRkcmVzczwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzPC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QWRkcmVzczwvYj48L2VtPicuCi0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0KLSA8cD4KLSBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gPHVsPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+PC9saT4KLSA8L3VsPgotIDwvcD4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldEhUVFBBZGRyZXNzKCkiPjxDT0RFPkhUVFBQYWNrYWdlLmdldEhUVFBBZGRyZXNzKCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sI2dldExvY2F0aW9uVVJJKCkiPmdldExvY2F0aW9uVVJJPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCNzZXRMb2NhdGlvblVSSShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TG9jYXRpb25VUkk8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldExvY2F0aW9uVVJJKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldExvY2F0aW9uVVJJPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldExvY2F0aW9uVVJJPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0TG9jYXRpb25VUkk8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQWRkcmVzczwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwjc2V0TG9jYXRpb25VUkkoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldExvY2F0aW9uVVJJKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRIVFRQQWRkcmVzc19Mb2NhdGlvblVSSSgpIj48Q09ERT5IVFRQUGFja2FnZS5nZXRIVFRQQWRkcmVzc19Mb2NhdGlvblVSSSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldExvY2F0aW9uVVJJKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRMb2NhdGlvblVSSTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRMb2NhdGlvblVSSTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+PGVtPkxvY2F0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldExvY2F0aW9uVVJJPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3M8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+Z2V0TG9jYXRpb25VUkkoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0hUVFBBZGRyZXNzLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIENMQVNTJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJIVFRQQWRkcmVzcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2Y3OTZmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjk3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUhUVFBCaW5kaW5nCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBCaW5kaW5nIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSFRUUEJpbmRpbmciOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9IVFRQQmluZGluZy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBCaW5kaW5nLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSFRUUEJpbmRpbmc8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQmluZGluZywgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5IVFRQQmluZGluZzwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nPC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZzwvYj48L2VtPicuCi0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0KLSA8cD4KLSBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gPHVsPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI2dldFZlcmIoKSI+PENPREU+PGVtPlZlcmI8L2VtPjwvQ09ERT48L0E+PC9saT4KLSA8L3VsPgotIDwvcD4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldEhUVFBCaW5kaW5nKCkiPjxDT0RFPkhUVFBQYWNrYWdlLmdldEhUVFBCaW5kaW5nKCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI2dldFZlcmIoKSI+Z2V0VmVyYjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlZlcmI8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI3NldFZlcmIoamF2YS5sYW5nLlN0cmluZykiPnNldFZlcmI8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI2dldFZlcmIoKSI+PENPREU+PGVtPlZlcmI8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldFZlcmIoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0VmVyYjwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRWZXJiPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VmVyYjwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VmVyYjwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXRWZXJiPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmc8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5WZXJiPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCNzZXRWZXJiKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXRWZXJiKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRIVFRQQmluZGluZ19WZXJiKCkiPjxDT0RFPkhUVFBQYWNrYWdlLmdldEhUVFBCaW5kaW5nX1ZlcmIoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRWZXJiKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRWZXJiPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFZlcmI8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI2dldFZlcmIoKSI+PENPREU+PGVtPlZlcmI8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXRWZXJiPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmc8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlZlcmI8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI2dldFZlcmIoKSI+PENPREU+Z2V0VmVyYigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSFRUUEJpbmRpbmcuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJIVFRQQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTdhZmFjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzc4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUhUVFBGYWN0b3J5Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBGYWN0b3J5IGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSFRUUEZhY3RvcnkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9IVFRQRmFjdG9yeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSFRUUEZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBIVFRQRmFjdG9yeTwvSDI+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPkhUVFBGYWN0b3J5PC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIFRoZSA8Yj5GYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLgotIEl0IHByb3ZpZGVzIGEgY3JlYXRlIG1ldGhvZCBmb3IgZWFjaCBub24tYWJzdHJhY3QgY2xhc3Mgb2YgdGhlIG1vZGVsLgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT5IVFRQUGFja2FnZTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci08IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQRmFjdG9yeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwjZUlOU1RBTkNFIj5lSU5TVEFOQ0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQWRkcmVzczwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwjY3JlYXRlSFRUUEFkZHJlc3MoKSI+Y3JlYXRlSFRUUEFkZHJlc3M8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkFkZHJlc3M8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQmluZGluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwjY3JlYXRlSFRUUEJpbmRpbmcoKSI+Y3JlYXRlSFRUUEJpbmRpbmc8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmc8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBPcGVyYXRpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sI2NyZWF0ZUhUVFBPcGVyYXRpb24oKSI+Y3JlYXRlSFRUUE9wZXJhdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFVybEVuY29kZWQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sI2NyZWF0ZUhUVFBVcmxFbmNvZGVkKCkiPmNyZWF0ZUhUVFBVcmxFbmNvZGVkPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5VcmwgRW5jb2RlZDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsUmVwbGFjZW1lbnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sI2NyZWF0ZUhUVFBVcmxSZXBsYWNlbWVudCgpIj5jcmVhdGVIVFRQVXJsUmVwbGFjZW1lbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlVybCBSZXBsYWNlbWVudDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCNnZXRIVFRQUGFja2FnZSgpIj5nZXRIVFRQUGFja2FnZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImVJTlNUQU5DRSI+PCEtLSAtLT48L0E+PEgzPgotZUlOU1RBTkNFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQRmFjdG9yeTwvQT4gPEI+ZUlOU1RBTkNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iY3JlYXRlSFRUUEJpbmRpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlSFRUUEJpbmRpbmc8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEJpbmRpbmc8L0E+IDxCPmNyZWF0ZUhUVFBCaW5kaW5nPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZzwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImNyZWF0ZUhUVFBPcGVyYXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlSFRUUE9wZXJhdGlvbjwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBPcGVyYXRpb248L0E+IDxCPmNyZWF0ZUhUVFBPcGVyYXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImNyZWF0ZUhUVFBVcmxSZXBsYWNlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVIVFRQVXJsUmVwbGFjZW1lbnQ8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBVcmxSZXBsYWNlbWVudDwvQT4gPEI+Y3JlYXRlSFRUUFVybFJlcGxhY2VtZW50PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVIVFRQVXJsRW5jb2RlZCgpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVIVFRQVXJsRW5jb2RlZDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsRW5jb2RlZDwvQT4gPEI+Y3JlYXRlSFRUUFVybEVuY29kZWQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlVybCBFbmNvZGVkPC9lbT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VXJsIEVuY29kZWQ8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVIVFRQQWRkcmVzcygpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVIVFRQQWRkcmVzczwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQWRkcmVzczwvQT4gPEI+Y3JlYXRlSFRUUEFkZHJlc3M8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkFkZHJlc3M8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5BZGRyZXNzPC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SFRUUFBhY2thZ2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SFRUUFBhY2thZ2U8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+IDxCPmdldEhUVFBQYWNrYWdlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSFRUUEZhY3RvcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjE4ZWVjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOTcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotSFRUUE9wZXJhdGlvbgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQT3BlcmF0aW9uIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSFRUUE9wZXJhdGlvbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0hUVFBPcGVyYXRpb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBIVFRQT3BlcmF0aW9uPC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbiwgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5IVFRQT3BlcmF0aW9uPC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbjwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk9wZXJhdGlvbjwvYj48L2VtPicuCi0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0KLSA8cD4KLSBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gPHVsPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+PGVtPkxvY2F0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT48L2xpPgotIDwvdWw+Ci0gPC9wPgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUE9wZXJhdGlvbigpIj48Q09ERT5IVFRQUGFja2FnZS5nZXRIVFRQT3BlcmF0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+Z2V0TG9jYXRpb25VUkk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwjc2V0TG9jYXRpb25VUkkoamF2YS5sYW5nLlN0cmluZykiPnNldExvY2F0aW9uVVJJPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldExvY2F0aW9uVVJJKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldExvY2F0aW9uVVJJPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldExvY2F0aW9uVVJJPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0TG9jYXRpb25VUkk8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQT3BlcmF0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+TG9jYXRpb24gVVJJPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sI3NldExvY2F0aW9uVVJJKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXRMb2NhdGlvblVSSShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUE9wZXJhdGlvbl9Mb2NhdGlvblVSSSgpIj48Q09ERT5IVFRQUGFja2FnZS5nZXRIVFRQT3BlcmF0aW9uX0xvY2F0aW9uVVJJKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0TG9jYXRpb25VUkkoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldExvY2F0aW9uVVJJPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldExvY2F0aW9uVVJJPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXRMb2NhdGlvblVSSTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb248L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Q09ERT5nZXRMb2NhdGlvblVSSSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSFRUUE9wZXJhdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSFRUUE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDdlMGM4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDk1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLUhUVFBQYWNrYWdlLkxpdGVyYWxzCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkxpdGVyYWxzIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSFRUUFBhY2thZ2UuTGl0ZXJhbHMiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIEhUVFBQYWNrYWdlLkxpdGVyYWxzPC9IMj4KLTxETD4KLTxEVD48Qj5FbmNsb3NpbmcgaW50ZXJmYWNlOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIDxCPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIERlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQKLSA8dWw+Ci0gICA8bGk+ZWFjaCBjbGFzcyw8L2xpPgotICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+Ci0gICA8bGk+ZWFjaCBlbnVtLDwvbGk+Ci0gICA8bGk+YW5kIGVhY2ggZGF0YSB0eXBlPC9saT4KLSA8L3VsPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLTwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSFRUUF9BRERSRVNTIj5IVFRQX0FERFJFU1M8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkFkZHJlc3M8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkkiPkhUVFBfQUREUkVTU19fTE9DQVRJT05fVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNIVFRQX0JJTkRJTkciPkhUVFBfQklORElORzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZzwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNIVFRQX0JJTkRJTkdfX1ZFUkIiPkhUVFBfQklORElOR19fVkVSQjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VmVyYjwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sI0hUVFBfT1BFUkFUSU9OIj5IVFRQX09QRVJBVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sI0hUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkkiPkhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sI0hUVFBfVVJMX0VOQ09ERUQiPkhUVFBfVVJMX0VOQ09ERUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlVybCBFbmNvZGVkPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSFRUUF9VUkxfUkVQTEFDRU1FTlQiPkhUVFBfVVJMX1JFUExBQ0VNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJSFRUUF9BRERSRVNTIj5JSFRUUF9BRERSRVNTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBBZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSUhUVFBfQklORElORyI+SUhUVFBfQklORElORzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUhUVFAgQmluZGluZzwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sI0lIVFRQX09QRVJBVElPTiI+SUhUVFBfT1BFUkFUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJSFRUUF9VUkxfRU5DT0RFRCI+SUhUVFBfVVJMX0VOQ09ERUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklIVFRQIFVybCBFbmNvZGVkPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSUhUVFBfVVJMX1JFUExBQ0VNRU5UIj5JSFRUUF9VUkxfUkVQTEFDRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklIVFRQIFVybCBSZXBsYWNlbWVudDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJIVFRQX0JJTkRJTkciPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfQklORElORzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5IVFRQX0JJTkRJTkc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBCaW5kaW5nSW1wbDwvQ09ERT4sIAotPENPREU+SFRUUFBhY2thZ2VJbXBsLmdldEhUVFBCaW5kaW5nKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfQklORElOR19fVkVSQiI+PCEtLSAtLT48L0E+PEgzPgotSFRUUF9CSU5ESU5HX19WRVJCPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5IVFRQX0JJTkRJTkdfX1ZFUkI8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlZlcmI8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX09QRVJBVElPTiI+PCEtLSAtLT48L0E+PEgzPgotSFRUUF9PUEVSQVRJT048L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SFRUUF9PUEVSQVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPk9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+SFRUUE9wZXJhdGlvbkltcGw8L0NPREU+LCAKLTxDT0RFPkhUVFBQYWNrYWdlSW1wbC5nZXRIVFRQT3BlcmF0aW9uKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPkhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfVVJMX1JFUExBQ0VNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX1VSTF9SRVBMQUNFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5IVFRQX1VSTF9SRVBMQUNFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+VXJsIFJlcGxhY2VtZW50PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5IVFRQVXJsUmVwbGFjZW1lbnRJbXBsPC9DT0RFPiwgCi08Q09ERT5IVFRQUGFja2FnZUltcGwuZ2V0SFRUUFVybFJlcGxhY2VtZW50KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfVVJMX0VOQ09ERUQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfVVJMX0VOQ09ERUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SFRUUF9VUkxfRU5DT0RFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+VXJsIEVuY29kZWQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBVcmxFbmNvZGVkSW1wbDwvQ09ERT4sIAotPENPREU+SFRUUFBhY2thZ2VJbXBsLmdldEhUVFBVcmxFbmNvZGVkKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfQUREUkVTUyI+PCEtLSAtLT48L0E+PEgzPgotSFRUUF9BRERSRVNTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPkhUVFBfQUREUkVTUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QWRkcmVzczwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+SFRUUEFkZHJlc3NJbXBsPC9DT0RFPiwgCi08Q09ERT5IVFRQUGFja2FnZUltcGwuZ2V0SFRUUEFkZHJlc3MoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfQUREUkVTU19fTE9DQVRJT05fVVJJPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5IVFRQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUhUVFBfQUREUkVTUyI+PCEtLSAtLT48L0E+PEgzPgotSUhUVFBfQUREUkVTUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JSFRUUF9BRERSRVNTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBBZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5IVFRQQWRkcmVzczwvQ09ERT4sIAotPENPREU+SFRUUFBhY2thZ2VJbXBsLmdldElIVFRQQWRkcmVzcygpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSFRUUF9CSU5ESU5HIj48IS0tIC0tPjwvQT48SDM+Ci1JSFRUUF9CSU5ESU5HPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklIVFRQX0JJTkRJTkc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklIVFRQIEJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBCaW5kaW5nPC9DT0RFPiwgCi08Q09ERT5IVFRQUGFja2FnZUltcGwuZ2V0SUhUVFBCaW5kaW5nKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklIVFRQX09QRVJBVElPTiI+PCEtLSAtLT48L0E+PEgzPgotSUhUVFBfT1BFUkFUSU9OPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklIVFRQX09QRVJBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SUhUVFAgT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5IVFRQT3BlcmF0aW9uPC9DT0RFPiwgCi08Q09ERT5IVFRQUGFja2FnZUltcGwuZ2V0SUhUVFBPcGVyYXRpb24oKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUhUVFBfVVJMX0VOQ09ERUQiPjwhLS0gLS0+PC9BPjxIMz4KLUlIVFRQX1VSTF9FTkNPREVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklIVFRQX1VSTF9FTkNPREVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBVcmwgRW5jb2RlZDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+SFRUUFVybEVuY29kZWQ8L0NPREU+LCAKLTxDT0RFPkhUVFBQYWNrYWdlSW1wbC5nZXRJSFRUUFVybEVuY29kZWQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUhUVFBfVVJMX1JFUExBQ0VNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JSFRUUF9VUkxfUkVQTEFDRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SUhUVFBfVVJMX1JFUExBQ0VNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBVcmwgUmVwbGFjZW1lbnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBVcmxSZXBsYWNlbWVudDwvQ09ERT4sIAotPENPREU+SFRUUFBhY2thZ2VJbXBsLmdldElIVFRQVXJsUmVwbGFjZW1lbnQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGU3MWJjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYzNSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1IVFRQUGFja2FnZQotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZSBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkhUVFBQYWNrYWdlIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSFRUUFBhY2thZ2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7PEEgSFJFRj0iI25lc3RlZF9jbGFzc19zdW1tYXJ5Ij5ORVNURUQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSFRUUFBhY2thZ2U8L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5IVFRQUGFja2FnZTwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4KLSBJdCBjb250YWlucyBhY2Nlc3NvcnMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdG8gcmVwcmVzZW50Ci0gPHVsPgotICAgPGxpPmVhY2ggY2xhc3MsPC9saT4KLSAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPgotICAgPGxpPmVhY2ggZW51bSw8L2xpPgotICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+Ci0gPC91bD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PENPREU+SFRUUEZhY3Rvcnk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotPCEtLSA9PT09PT09PSBORVNURUQgQ0xBU1MgU1VNTUFSWSA9PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibmVzdGVkX2NsYXNzX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5OZXN0ZWQgQ2xhc3MgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0RlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQKLSAKLSAgIGVhY2ggY2xhc3MsCi0gICBlYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcywKLSAgIGVhY2ggZW51bSwKLSAgIGFuZCBlYWNoIGRhdGEgdHlwZQotIAotIDwhPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2VJTlNUQU5DRSI+ZUlOU1RBTkNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNlTkFNRSI+ZU5BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHBhY2thZ2UgbmFtZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2VOU19QUkVGSVgiPmVOU19QUkVGSVg8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHBhY2thZ2UgbmFtZXNwYWNlIG5hbWU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNlTlNfVVJJIj5lTlNfVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkk8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTUyI+SFRUUF9BRERSRVNTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+QWRkcmVzczwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5IVFRQX0FERFJFU1NfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTU19fRUxFTUVOVCI+SFRUUF9BRERSRVNTX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTU19fRUxFTUVOVF9UWVBFIj5IVFRQX0FERFJFU1NfX0VMRU1FTlRfVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTU19fTE9DQVRJT05fVVJJIj5IVFRQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTU19fUkVRVUlSRUQiPkhUVFBfQUREUkVTU19fUkVRVUlSRUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfQUREUkVTU19GRUFUVVJFX0NPVU5UIj5IVFRQX0FERFJFU1NfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QWRkcmVzczwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HIj5IVFRQX0JJTkRJTkc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkhUVFBfQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HX19FTEVNRU5UIj5IVFRQX0JJTkRJTkdfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HX19FTEVNRU5UX1RZUEUiPkhUVFBfQklORElOR19fRUxFTUVOVF9UWVBFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HX19SRVFVSVJFRCI+SFRUUF9CSU5ESU5HX19SRVFVSVJFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HX19WRVJCIj5IVFRQX0JJTkRJTkdfX1ZFUkI8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlZlcmI8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPkhUVFBfQklORElOR19GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5CaW5kaW5nPC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX09QRVJBVElPTiI+SFRUUF9PUEVSQVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5PcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5IVFRQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9PUEVSQVRJT05fX0VMRU1FTlQiPkhUVFBfT1BFUkFUSU9OX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEUiPkhUVFBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX09QRVJBVElPTl9fTE9DQVRJT05fVVJJIj5IVFRQX09QRVJBVElPTl9fTE9DQVRJT05fVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9PUEVSQVRJT05fX1JFUVVJUkVEIj5IVFRQX09QRVJBVElPTl9fUkVRVUlSRUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPkhUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk9wZXJhdGlvbjwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfRU5DT0RFRCI+SFRUUF9VUkxfRU5DT0RFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPlVybCBFbmNvZGVkPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfRU5DT0RFRF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5IVFRQX1VSTF9FTkNPREVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9FTkNPREVEX19FTEVNRU5UIj5IVFRQX1VSTF9FTkNPREVEX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX0VOQ09ERURfX0VMRU1FTlRfVFlQRSI+SFRUUF9VUkxfRU5DT0RFRF9fRUxFTUVOVF9UWVBFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfRU5DT0RFRF9fUkVRVUlSRUQiPkhUVFBfVVJMX0VOQ09ERURfX1JFUVVJUkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQiPkhUVFBfVVJMX0VOQ09ERURfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+VXJsIEVuY29kZWQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX1JFUExBQ0VNRU5UIj5IVFRQX1VSTF9SRVBMQUNFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPlVybCBSZXBsYWNlbWVudDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX1JFUExBQ0VNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkhUVFBfVVJMX1JFUExBQ0VNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9SRVBMQUNFTUVOVF9fRUxFTUVOVCI+SFRUUF9VUkxfUkVQTEFDRU1FTlRfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSFRUUF9VUkxfUkVQTEFDRU1FTlRfX0VMRU1FTlRfVFlQRSI+SFRUUF9VUkxfUkVQTEFDRU1FTlRfX0VMRU1FTlRfVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0hUVFBfVVJMX1JFUExBQ0VNRU5UX19SRVFVSVJFRCI+SFRUUF9VUkxfUkVQTEFDRU1FTlRfX1JFUVVJUkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNIVFRQX1VSTF9SRVBMQUNFTUVOVF9GRUFUVVJFX0NPVU5UIj5IVFRQX1VSTF9SRVBMQUNFTUVOVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX0FERFJFU1MiPklIVFRQX0FERFJFU1M8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBBZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfQUREUkVTU19GRUFUVVJFX0NPVU5UIj5JSFRUUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklIVFRQIEFkZHJlc3M8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX0JJTkRJTkciPklIVFRQX0JJTkRJTkc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfQklORElOR19GRUFUVVJFX0NPVU5UIj5JSFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklIVFRQIEJpbmRpbmc8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX09QRVJBVElPTiI+SUhUVFBfT1BFUkFUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUhUVFAgT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPklIVFRQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JSFRUUCBPcGVyYXRpb248L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX1VSTF9FTkNPREVEIj5JSFRUUF9VUkxfRU5DT0RFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklIVFRQIFVybCBFbmNvZGVkPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfVVJMX0VOQ09ERURfRkVBVFVSRV9DT1VOVCI+SUhUVFBfVVJMX0VOQ09ERURfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUhUVFAgVXJsIEVuY29kZWQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI0lIVFRQX1VSTF9SRVBMQUNFTUVOVCI+SUhUVFBfVVJMX1JFUExBQ0VNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUhUVFAgVXJsIFJlcGxhY2VtZW50PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjSUhUVFBfVVJMX1JFUExBQ0VNRU5UX0ZFQVRVUkVfQ09VTlQiPklIVFRQX1VSTF9SRVBMQUNFTUVOVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JSFRUUCBVcmwgUmVwbGFjZW1lbnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUEFkZHJlc3NfTG9jYXRpb25VUkkoKSI+Z2V0SFRUUEFkZHJlc3NfTG9jYXRpb25VUkk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+PGVtPkxvY2F0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRIVFRQQWRkcmVzcygpIj5nZXRIVFRQQWRkcmVzczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT48ZW0+QWRkcmVzczwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUEJpbmRpbmdfVmVyYigpIj5nZXRIVFRQQmluZGluZ19WZXJiPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI2dldFZlcmIoKSI+PENPREU+PGVtPlZlcmI8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUEJpbmRpbmcoKSI+Z2V0SFRUUEJpbmRpbmc8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBGYWN0b3J5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRIVFRQRmFjdG9yeSgpIj5nZXRIVFRQRmFjdG9yeTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUE9wZXJhdGlvbl9Mb2NhdGlvblVSSSgpIj5nZXRIVFRQT3BlcmF0aW9uX0xvY2F0aW9uVVJJPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+PGVtPkxvY2F0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRIVFRQT3BlcmF0aW9uKCkiPmdldEhUVFBPcGVyYXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldEhUVFBVcmxFbmNvZGVkKCkiPmdldEhUVFBVcmxFbmNvZGVkPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxDT0RFPjxlbT5VcmwgRW5jb2RlZDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRIVFRQVXJsUmVwbGFjZW1lbnQoKSI+Z2V0SFRUUFVybFJlcGxhY2VtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT48ZW0+VXJsIFJlcGxhY2VtZW50PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldElIVFRQQWRkcmVzcygpIj5nZXRJSFRUUEFkZHJlc3M8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JSFRUUCBBZGRyZXNzPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SUhUVFBCaW5kaW5nKCkiPmdldElIVFRQQmluZGluZzwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklIVFRQIEJpbmRpbmc8L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCNnZXRJSFRUUE9wZXJhdGlvbigpIj5nZXRJSFRUUE9wZXJhdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklIVFRQIE9wZXJhdGlvbjwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldElIVFRQVXJsRW5jb2RlZCgpIj5nZXRJSFRUUFVybEVuY29kZWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JSFRUUCBVcmwgRW5jb2RlZDwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldElIVFRQVXJsUmVwbGFjZW1lbnQoKSI+Z2V0SUhUVFBVcmxSZXBsYWNlbWVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklIVFRQIFVybCBSZXBsYWNlbWVudDwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJlTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotZU5BTUU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPmVOQU1FPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBwYWNrYWdlIG5hbWUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLmVOQU1FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImVOU19VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLWVOU19VUkk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPmVOU19VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHBhY2thZ2UgbmFtZXNwYWNlIFVSSS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuZU5TX1VSSSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJlTlNfUFJFRklYIj48IS0tIC0tPjwvQT48SDM+Ci1lTlNfUFJFRklYPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5lTlNfUFJFRklYPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBwYWNrYWdlIG5hbWVzcGFjZSBuYW1lLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5lTlNfUFJFRklYIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImVJTlNUQU5DRSI+PCEtLSAtLT48L0E+PEgzPgotZUlOU1RBTkNFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT4gPEI+ZUlOU1RBTkNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfQklORElORyI+PCEtLSAtLT48L0E+PEgzPgotSFRUUF9CSU5ESU5HPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQklORElORzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBCaW5kaW5nSW1wbDwvQ09ERT4sIAotPENPREU+SFRUUFBhY2thZ2VJbXBsLmdldEhUVFBCaW5kaW5nKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX0JJTkRJTkciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9CSU5ESU5HX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX0JJTkRJTkdfX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SFRUUF9CSU5ESU5HX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfQklORElOR19fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX0JJTkRJTkdfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX0JJTkRJTkdfX1JFUVVJUkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQklORElOR19fUkVRVUlSRUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfQklORElOR19fUkVRVUlSRUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9CSU5ESU5HX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfQklORElOR19fRUxFTUVOVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQklORElOR19fRUxFTUVOVF9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9CSU5ESU5HX19FTEVNRU5UX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9CSU5ESU5HX19WRVJCIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX0JJTkRJTkdfX1ZFUkI8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SFRUUF9CSU5ESU5HX19WRVJCPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5WZXJiPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfQklORElOR19fVkVSQiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkJpbmRpbmc8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfQklORElOR19GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfT1BFUkFUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX09QRVJBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5IVFRQX09QRVJBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPk9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+SFRUUE9wZXJhdGlvbkltcGw8L0NPREU+LCAKLTxDT0RFPkhUVFBQYWNrYWdlSW1wbC5nZXRIVFRQT3BlcmF0aW9uKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX09QRVJBVElPTiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfT1BFUkFUSU9OX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX09QRVJBVElPTl9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5IVFRQX09QRVJBVElPTl9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX09QRVJBVElPTl9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX09QRVJBVElPTl9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfT1BFUkFUSU9OX19SRVFVSVJFRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5IVFRQX09QRVJBVElPTl9fUkVRVUlSRUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfT1BFUkFUSU9OX19SRVFVSVJFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX09QRVJBVElPTl9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX09QRVJBVElPTl9fRUxFTUVOVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX09QRVJBVElPTl9fRUxFTUVOVF9UWVBFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SFRUUF9PUEVSQVRJT05fX0xPQ0FUSU9OX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfT1BFUkFUSU9OX19MT0NBVElPTl9VUkkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSFRUUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5IVFRQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5PcGVyYXRpb248L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9VUkxfUkVQTEFDRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfVVJMX1JFUExBQ0VNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfVVJMX1JFUExBQ0VNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+VXJsIFJlcGxhY2VtZW50PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5IVFRQVXJsUmVwbGFjZW1lbnRJbXBsPC9DT0RFPiwgCi08Q09ERT5IVFRQUGFja2FnZUltcGwuZ2V0SFRUUFVybFJlcGxhY2VtZW50KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX1VSTF9SRVBMQUNFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX1VSTF9SRVBMQUNFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX1VSTF9SRVBMQUNFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfVVJMX1JFUExBQ0VNRU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX1VSTF9SRVBMQUNFTUVOVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfVVJMX1JFUExBQ0VNRU5UX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX1VSTF9SRVBMQUNFTUVOVF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5IVFRQX1VSTF9SRVBMQUNFTUVOVF9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX1VSTF9SRVBMQUNFTUVOVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX1VSTF9SRVBMQUNFTUVOVF9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfVVJMX1JFUExBQ0VNRU5UX19SRVFVSVJFRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5IVFRQX1VSTF9SRVBMQUNFTUVOVF9fUkVRVUlSRUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfVVJMX1JFUExBQ0VNRU5UX19SRVFVSVJFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX1VSTF9SRVBMQUNFTUVOVF9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX1VSTF9SRVBMQUNFTUVOVF9fRUxFTUVOVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfVVJMX1JFUExBQ0VNRU5UX19FTEVNRU5UX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX1VSTF9SRVBMQUNFTUVOVF9fRUxFTUVOVF9UWVBFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfVVJMX1JFUExBQ0VNRU5UX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfVVJMX1JFUExBQ0VNRU5UX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SFRUUF9VUkxfUkVQTEFDRU1FTlRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+VXJsIFJlcGxhY2VtZW50PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX1VSTF9SRVBMQUNFTUVOVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfVVJMX0VOQ09ERUQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfVVJMX0VOQ09ERUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SFRUUF9VUkxfRU5DT0RFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPlVybCBFbmNvZGVkPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5IVFRQVXJsRW5jb2RlZEltcGw8L0NPREU+LCAKLTxDT0RFPkhUVFBQYWNrYWdlSW1wbC5nZXRIVFRQVXJsRW5jb2RlZCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfRU5DT0RFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX1VSTF9FTkNPREVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfVVJMX0VOQ09ERURfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5IVFRQX1VSTF9FTkNPREVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX1VSTF9FTkNPREVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9VUkxfRU5DT0RFRF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotSFRUUF9VUkxfRU5DT0RFRF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5IVFRQX1VSTF9FTkNPREVEX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfVVJMX0VOQ09ERURfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9VUkxfRU5DT0RFRF9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfVVJMX0VOQ09ERURfX1JFUVVJUkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfVVJMX0VOQ09ERURfX1JFUVVJUkVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX1VSTF9FTkNPREVEX19SRVFVSVJFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX1VSTF9FTkNPREVEX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfVVJMX0VOQ09ERURfX0VMRU1FTlRfVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5IVFRQX1VSTF9FTkNPREVEX19FTEVNRU5UX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX1VSTF9FTkNPREVEX19FTEVNRU5UX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9VUkxfRU5DT0RFRF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SFRUUF9VUkxfRU5DT0RFRF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5VcmwgRW5jb2RlZDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9VUkxfRU5DT0RFRF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkhUVFBfQUREUkVTUyI+PCEtLSAtLT48L0E+PEgzPgotSFRUUF9BRERSRVNTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQUREUkVTUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkFkZHJlc3M8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBBZGRyZXNzSW1wbDwvQ09ERT4sIAotPENPREU+SFRUUFBhY2thZ2VJbXBsLmdldEhUVFBBZGRyZXNzKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX0FERFJFU1MiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9BRERSRVNTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9BRERSRVNTX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX0FERFJFU1NfX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SFRUUF9BRERSRVNTX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfQUREUkVTU19fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJIVFRQX0FERFJFU1NfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48SDM+Ci1IVFRQX0FERFJFU1NfX1JFUVVJUkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQUREUkVTU19fUkVRVUlSRUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkhUVFBfQUREUkVTU19fUkVRVUlSRUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9BRERSRVNTX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfQUREUkVTU19fRUxFTUVOVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQUREUkVTU19fRUxFTUVOVF9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19FTEVNRU5UX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfQUREUkVTU19fTE9DQVRJT05fVVJJPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQUREUkVTU19fTE9DQVRJT05fVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSFRUUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUhUVFBfQUREUkVTU19GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkhUVFBfQUREUkVTU19GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5BZGRyZXNzPC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5IVFRQX0FERFJFU1NfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSFRUUF9BRERSRVNTIj48IS0tIC0tPjwvQT48SDM+Ci1JSFRUUF9BRERSRVNTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklIVFRQX0FERFJFU1M8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBBZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5IVFRQQWRkcmVzczwvQ09ERT4sIAotPENPREU+SFRUUFBhY2thZ2VJbXBsLmdldElIVFRQQWRkcmVzcygpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfQUREUkVTUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSFRUUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlIVFRQX0FERFJFU1NfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JSFRUUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklIVFRQIEFkZHJlc3M8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLklIVFRQX0FERFJFU1NfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSFRUUF9CSU5ESU5HIj48IS0tIC0tPjwvQT48SDM+Ci1JSFRUUF9CSU5ESU5HPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklIVFRQX0JJTkRJTkc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5IVFRQQmluZGluZzwvQ09ERT4sIAotPENPREU+SFRUUFBhY2thZ2VJbXBsLmdldElIVFRQQmluZGluZygpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfQklORElORyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlIVFRQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JSFRUUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklIVFRQIEJpbmRpbmc8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLklIVFRQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSFRUUF9PUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUlIVFRQX09QRVJBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JSFRUUF9PUEVSQVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBPcGVyYXRpb248L0NPREU+LCAKLTxDT0RFPkhUVFBQYWNrYWdlSW1wbC5nZXRJSFRUUE9wZXJhdGlvbigpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuSUhUVFBfT1BFUkFUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklIVFRQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JSFRUUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JSFRUUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUhUVFAgT3BlcmF0aW9uPC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5JSFRUUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJSFRUUF9VUkxfRU5DT0RFRCI+PCEtLSAtLT48L0E+PEgzPgotSUhUVFBfVVJMX0VOQ09ERUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SUhUVFBfVVJMX0VOQ09ERUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JSFRUUCBVcmwgRW5jb2RlZDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+SFRUUFVybEVuY29kZWQ8L0NPREU+LCAKLTxDT0RFPkhUVFBQYWNrYWdlSW1wbC5nZXRJSFRUUFVybEVuY29kZWQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLklIVFRQX1VSTF9FTkNPREVEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SUhUVFBfVVJMX0VOQ09ERURfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SUhUVFAgVXJsIEVuY29kZWQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLklIVFRQX1VSTF9FTkNPREVEX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUhUVFBfVVJMX1JFUExBQ0VNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JSFRUUF9VUkxfUkVQTEFDRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SUhUVFBfVVJMX1JFUExBQ0VNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SUhUVFAgVXJsIFJlcGxhY2VtZW50PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5IVFRQVXJsUmVwbGFjZW1lbnQ8L0NPREU+LCAKLTxDT0RFPkhUVFBQYWNrYWdlSW1wbC5nZXRJSFRUUFVybFJlcGxhY2VtZW50KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZS5JSFRUUF9VUkxfUkVQTEFDRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSUhUVFBfVVJMX1JFUExBQ0VNRU5UX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlIVFRQX1VSTF9SRVBMQUNFTUVOVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklIVFRQX1VSTF9SRVBMQUNFTUVOVF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JSFRUUCBVcmwgUmVwbGFjZW1lbnQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLklIVFRQX1VSTF9SRVBMQUNFTUVOVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0SFRUUEJpbmRpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SFRUUEJpbmRpbmc8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRIVFRQQmluZGluZzwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT48ZW0+QmluZGluZzwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkJpbmRpbmc8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT5IVFRQQmluZGluZzwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRIVFRQQmluZGluZ19WZXJiKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEhUVFBCaW5kaW5nX1ZlcmI8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0SFRUUEJpbmRpbmdfVmVyYjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCNnZXRWZXJiKCkiPjxDT0RFPjxlbT5WZXJiPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5WZXJiPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sI2dldFZlcmIoKSI+PENPREU+SFRUUEJpbmRpbmcuZ2V0VmVyYigpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUEJpbmRpbmcoKSI+PENPREU+Z2V0SFRUUEJpbmRpbmcoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRIVFRQT3BlcmF0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEhUVFBPcGVyYXRpb248L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRIVFRQT3BlcmF0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PENPREU+PGVtPk9wZXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PENPREU+SFRUUE9wZXJhdGlvbjwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRIVFRQT3BlcmF0aW9uX0xvY2F0aW9uVVJJKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEhUVFBPcGVyYXRpb25fTG9jYXRpb25VUkk8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0SFRUUE9wZXJhdGlvbl9Mb2NhdGlvblVSSTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPkhUVFBPcGVyYXRpb24uZ2V0TG9jYXRpb25VUkkoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sI2dldEhUVFBPcGVyYXRpb24oKSI+PENPREU+Z2V0SFRUUE9wZXJhdGlvbigpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEhUVFBVcmxSZXBsYWNlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRIVFRQVXJsUmVwbGFjZW1lbnQ8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRIVFRQVXJsUmVwbGFjZW1lbnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxDT0RFPjxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PENPREU+SFRUUFVybFJlcGxhY2VtZW50PC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEhUVFBVcmxFbmNvZGVkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEhUVFBVcmxFbmNvZGVkPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SFRUUFVybEVuY29kZWQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PENPREU+PGVtPlVybCBFbmNvZGVkPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+VXJsIEVuY29kZWQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Q09ERT5IVFRQVXJsRW5jb2RlZDwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRIVFRQQWRkcmVzcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRIVFRQQWRkcmVzczwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldEhUVFBBZGRyZXNzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxDT0RFPjxlbT5BZGRyZXNzPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QWRkcmVzczwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxDT0RFPkhUVFBBZGRyZXNzPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEhUVFBBZGRyZXNzX0xvY2F0aW9uVVJJKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEhUVFBBZGRyZXNzX0xvY2F0aW9uVVJJPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldEhUVFBBZGRyZXNzX0xvY2F0aW9uVVJJPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkxvY2F0aW9uIFVSSTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Q09ERT5IVFRQQWRkcmVzcy5nZXRMb2NhdGlvblVSSSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUEFkZHJlc3MoKSI+PENPREU+Z2V0SFRUUEFkZHJlc3MoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJSFRUUEFkZHJlc3MoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SUhUVFBBZGRyZXNzPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SUhUVFBBZGRyZXNzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUhUVFAgQWRkcmVzczwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUhUVFAgQWRkcmVzczwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5IVFRQQWRkcmVzczwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElIVFRQQmluZGluZygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJSFRUUEJpbmRpbmc8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJSFRUUEJpbmRpbmc8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JSFRUUCBCaW5kaW5nPC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JSFRUUCBCaW5kaW5nPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBCaW5kaW5nPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SUhUVFBPcGVyYXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SUhUVFBPcGVyYXRpb248L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJSFRUUE9wZXJhdGlvbjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklIVFRQIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUhUVFAgT3BlcmF0aW9uPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBPcGVyYXRpb248L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJSFRUUFVybEVuY29kZWQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SUhUVFBVcmxFbmNvZGVkPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SUhUVFBVcmxFbmNvZGVkPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SUhUVFAgVXJsIEVuY29kZWQ8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklIVFRQIFVybCBFbmNvZGVkPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBVcmxFbmNvZGVkPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SUhUVFBVcmxSZXBsYWNlbWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJSFRUUFVybFJlcGxhY2VtZW50PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SUhUVFBVcmxSZXBsYWNlbWVudDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklIVFRQIFVybCBSZXBsYWNlbWVudDwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SUhUVFAgVXJsIFJlcGxhY2VtZW50PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkhUVFBVcmxSZXBsYWNlbWVudDwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEhUVFBGYWN0b3J5KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEhUVFBGYWN0b3J5PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBGYWN0b3J5PC9BPiA8Qj5nZXRIVFRQRmFjdG9yeTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9IVFRQUGFja2FnZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSFRUUFBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDs8QSBIUkVGPSIjbmVzdGVkX2NsYXNzX3N1bW1hcnkiPk5FU1RFRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYwOTNlNC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyMyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1IVFRQVXJsRW5jb2RlZAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsRW5jb2RlZCBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkhUVFBVcmxFbmNvZGVkIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSFRUUFVybEVuY29kZWQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSFRUUFVybEVuY29kZWQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgSFRUUFVybEVuY29kZWQ8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsRW5jb2RlZCwgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5IVFRQVXJsRW5jb2RlZDwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkPC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VXJsIEVuY29kZWQ8L2I+PC9lbT4nLgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUFVybEVuY29kZWQoKSI+PENPREU+SFRUUFBhY2thZ2UuZ2V0SFRUUFVybEVuY29kZWQoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+Z2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2lzUmVxdWlyZWQoKSI+aXNSZXF1aXJlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0RWxlbWVudFR5cGUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPnNldEVsZW1lbnRUeXBlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRSZXF1aXJlZChib29sZWFuKSI+c2V0UmVxdWlyZWQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXRSZXF1aXJlZCwgc2V0UmVxdWlyZWQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXRSZXF1aXJlZCwgc2V0UmVxdWlyZWQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9IVFRQVXJsRW5jb2RlZC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJIVFRQVXJsRW5jb2RlZC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjBkNjZlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyMyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1IVFRQVXJsUmVwbGFjZW1lbnQKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50IGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iSFRUUFVybFJlcGxhY2VtZW50IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7TkVYVCBDTEFTUzwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIEhUVFBVcmxSZXBsYWNlbWVudDwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD5qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudCwgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5IVFRQVXJsUmVwbGFjZW1lbnQ8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQ8L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgUmVwbGFjZW1lbnQ8L2I+PC9lbT4nLgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUFVybFJlcGxhY2VtZW50KCkiPjxDT0RFPkhUVFBQYWNrYWdlLmdldEhUVFBVcmxSZXBsYWNlbWVudCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwO05FWFQgQ0xBU1M8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQQWRkcmVzcy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQQWRkcmVzcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWExMmNmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUEFkZHJlc3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEFkZHJlc3MKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEFkZHJlc3MiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL1xjbGFzcy11c2VIVFRQQWRkcmVzcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBBZGRyZXNzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQQWRkcmVzczwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQWRkcmVzczwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQWRkcmVzczwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQWRkcmVzczwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEFkZHJlc3M8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPkhUVFBGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCNjcmVhdGVIVFRQQWRkcmVzcygpIj5jcmVhdGVIVFRQQWRkcmVzczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QWRkcmVzczwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9cY2xhc3MtdXNlSFRUUEFkZHJlc3MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJIVFRQQWRkcmVzcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQQmluZGluZy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQQmluZGluZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODdlOWRhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUEJpbmRpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEJpbmRpbmcKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEJpbmRpbmciOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL1xjbGFzcy11c2VIVFRQQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBCaW5kaW5nLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQQmluZGluZzwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQmluZGluZzwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQmluZGluZzwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQmluZGluZzwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEJpbmRpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPkhUVFBGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCNjcmVhdGVIVFRQQmluZGluZygpIj5jcmVhdGVIVFRQQmluZGluZzwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZzwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9cY2xhc3MtdXNlSFRUUEJpbmRpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJIVFRQQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQRmFjdG9yeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQRmFjdG9yeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjRlYmE3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUEZhY3RvcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEZhY3RvcnkKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEZhY3RvcnkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL1xjbGFzcy11c2VIVFRQRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQRmFjdG9yeTwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQRmFjdG9yeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQRmFjdG9yeTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+RmllbGRzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9BPiBkZWNsYXJlZCBhcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBGYWN0b3J5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQRmFjdG9yeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SFRUUEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sI2VJTlNUQU5DRSI+ZUlOU1RBTkNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3Rvcnk8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEZhY3Rvcnk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBGYWN0b3J5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5IVFRQUGFja2FnZS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZ2V0SFRUUEZhY3RvcnkoKSI+Z2V0SFRUUEZhY3Rvcnk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbDwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9cY2xhc3MtdXNlSFRUUEZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJIVFRQRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQT3BlcmF0aW9uLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvY2xhc3MtdXNlL0hUVFBPcGVyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU5ZWIxZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvY2xhc3MtdXNlL0hUVFBPcGVyYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUE9wZXJhdGlvbgotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQT3BlcmF0aW9uIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL1xjbGFzcy11c2VIVFRQT3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSFRUUE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUE9wZXJhdGlvbjwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBPcGVyYXRpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQT3BlcmF0aW9uPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUE9wZXJhdGlvbjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQT3BlcmF0aW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5IVFRQRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwjY3JlYXRlSFRUUE9wZXJhdGlvbigpIj5jcmVhdGVIVFRQT3BlcmF0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5PcGVyYXRpb248L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9cY2xhc3MtdXNlSFRUUE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY5OGRlOC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvY2xhc3MtdXNlL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkxpdGVyYWxzCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkxpdGVyYWxzIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9cY2xhc3MtdXNlSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJIVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2UuTGl0ZXJhbHM8L0I+PC9IMj4KLTwvQ0VOVEVSPgotTm8gdXNhZ2Ugb2Ygb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlLkxpdGVyYWxzCi08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL1xjbGFzcy11c2VIVFRQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvY2xhc3MtdXNlL0hUVFBQYWNrYWdlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvY2xhc3MtdXNlL0hUVFBQYWNrYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMTNiYTAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQUGFja2FnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQUGFja2FnZSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvXGNsYXNzLXVzZUhUVFBQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSFRUUFBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBQYWNrYWdlPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5GaWVsZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+IGRlY2xhcmVkIGFzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5IVFRQUGFja2FnZS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwjZUlOU1RBTkNFIj5lSU5TVEFOQ0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGFja2FnZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFBhY2thZ2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPkhUVFBGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCNnZXRIVFRQUGFja2FnZSgpIj5nZXRIVFRQUGFja2FnZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9cY2xhc3MtdXNlSFRUUFBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJIVFRQUGFja2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQVXJsRW5jb2RlZC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQVXJsRW5jb2RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmVkMzdmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUFVybEVuY29kZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFVybEVuY29kZWQKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFVybEVuY29kZWQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL1xjbGFzcy11c2VIVFRQVXJsRW5jb2RlZC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkhUVFBVcmxFbmNvZGVkLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsRW5jb2RlZDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsRW5jb2RlZDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsRW5jb2RlZDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsRW5jb2RlZDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFVybEVuY29kZWQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPkhUVFBGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCNjcmVhdGVIVFRQVXJsRW5jb2RlZCgpIj5jcmVhdGVIVFRQVXJsRW5jb2RlZDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VXJsIEVuY29kZWQ8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvXGNsYXNzLXVzZUhUVFBVcmxFbmNvZGVkLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSFRUUFVybEVuY29kZWQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvY2xhc3MtdXNlL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWQ2MWQyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9cY2xhc3MtdXNlSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQ8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBVcmxSZXBsYWNlbWVudDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0I+PC9BPjwvVEQ+Ci08VEQ+Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUFVybFJlcGxhY2VtZW50PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsUmVwbGFjZW1lbnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsUmVwbGFjZW1lbnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPkhUVFBGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEZhY3RvcnkuaHRtbCNjcmVhdGVIVFRQVXJsUmVwbGFjZW1lbnQoKSI+Y3JlYXRlSFRUUFVybFJlcGxhY2VtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5VcmwgUmVwbGFjZW1lbnQ8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL1xjbGFzcy11c2VIVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJIVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLWZyYW1lLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1mcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjc3Y2I5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAgcGFja2FnZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIj4KLTxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVUaXRsZUZvbnQiPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT48L0ZPTlQ+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBOT1dSQVA+PEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLUludGVyZmFjZXM8L0ZPTlQ+Jm5ic3A7Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+Ci08QlI+Ci08QSBIUkVGPSJIVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5IVFRQQWRkcmVzczwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJIVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5IVFRQQmluZGluZzwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJIVFRQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5IVFRQRmFjdG9yeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJIVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkhUVFBPcGVyYXRpb248L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SFRUUFBhY2thZ2U8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SFRUUFBhY2thZ2UuTGl0ZXJhbHM8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iSFRUUFVybEVuY29kZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+SFRUUFVybEVuY29kZWQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkhUVFBVcmxSZXBsYWNlbWVudDwvST48L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNzViNzguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCBwYWNrYWdlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+UFJFViBQQUNLQUdFPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+TkVYVCBQQUNLQUdFPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxIMj4KLVBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwCi08L0gyPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkludGVyZmFjZSBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEFkZHJlc3M8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QWRkcmVzczwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEJpbmRpbmc8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZzwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUEZhY3Rvcnk8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+SFRUUE9wZXJhdGlvbjwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5PcGVyYXRpb248L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBQYWNrYWdlPC9BPjwvQj48L1REPgotPFREPlRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQUGFja2FnZS5MaXRlcmFsczwvQT48L0I+PC9URD4KLTxURD5EZWZpbmVzIGxpdGVyYWxzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRoYXQgcmVwcmVzZW50Ci0gCi0gICBlYWNoIGNsYXNzLAotICAgZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsCi0gICBlYWNoIGVudW0sCi0gICBhbmQgZWFjaCBkYXRhIHR5cGUKLSAKLSA8ITwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsRW5jb2RlZDwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgRW5jb2RlZDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBVcmxSZXBsYWNlbWVudDwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgUmVwbGFjZW1lbnQ8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci0KLTxQPgotPERMPgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+UFJFViBQQUNLQUdFPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+TkVYVCBQQUNLQUdFPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2UtdHJlZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2UtdHJlZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDFlYmM4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXRyZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAgQ2xhc3MgSGllcmFyY2h5Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIENsYXNzIEhpZXJhcmNoeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+UFJFVjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS10cmVlLmh0bWwiPjxCPk5FWFQ8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLUhpZXJhcmNoeSBGb3IgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAKLTwvSDI+Ci08L0NFTlRFUj4KLTxETD4KLTxEVD48Qj5QYWNrYWdlIEhpZXJhcmNoaWVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctdHJlZS5odG1sIj5BbGwgUGFja2FnZXM8L0E+PC9ETD4KLTxIUj4KLTxIMj4KLUludGVyZmFjZSBIaWVyYXJjaHkKLTwvSDI+Ci08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEFkZHJlc3M8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEJpbmRpbmc8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQT3BlcmF0aW9uKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFVybEVuY29kZWQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBVcmxSZXBsYWNlbWVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQQWRkcmVzczwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQQmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb24gKGFsc28gZXh0ZW5kcyBqYXZhLmlvLlNlcmlhbGl6YWJsZSkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUE9wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsRW5jb2RlZDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBVcmxSZXBsYWNlbWVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQRmFjdG9yeTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFBhY2thZ2U8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5qYXZhLmlvLlNlcmlhbGl6YWJsZTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEFkZHJlc3M8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQmluZGluZyAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBCaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUE9wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFVybEVuY29kZWQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQgKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFVybFJlcGxhY2VtZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPldTRExFbGVtZW50PC9CPjwvQT48VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEFkZHJlc3M8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEJpbmRpbmc8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQT3BlcmF0aW9uKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFVybEVuY29kZWQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBVcmxSZXBsYWNlbWVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50KQotPC9VTD4KLTwvVUw+Ci08L1VMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+UFJFVjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS10cmVlLmh0bWwiPjxCPk5FWFQ8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS11c2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXVzZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjdkZDc3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXVzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBQYWNrYWdlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1DbGFzc2VzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9BPiB1c2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUEFkZHJlc3MuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBBZGRyZXNzPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFkZHJlc3M8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvY2xhc3MtdXNlL0hUVFBCaW5kaW5nLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQQmluZGluZzwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQRmFjdG9yeS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEZhY3Rvcnk8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvY2xhc3MtdXNlL0hUVFBPcGVyYXRpb24uaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBPcGVyYXRpb248L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL2NsYXNzLXVzZS9IVFRQUGFja2FnZS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFBhY2thZ2U8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvY2xhc3MtdXNlL0hUVFBVcmxFbmNvZGVkLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsRW5jb2RlZDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgRW5jb2RlZDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9jbGFzcy11c2UvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsUmVwbGFjZW1lbnQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VXJsIFJlcGxhY2VtZW50PC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMzYwOWEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotTUlNRUNvbnRlbnQKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRUNvbnRlbnQgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJNSU1FQ29udGVudCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL01JTUVDb250ZW50Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIENMQVNTJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FQ29udGVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIE1JTUVDb250ZW50PC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQsIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+TUlNRUNvbnRlbnQ8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudDwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkNvbnRlbnQ8L2I+PC9lbT4nLgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCi0gPHA+Ci0gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotIDx1bD4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRUeXBlKCkiPjxDT0RFPjxlbT5UeXBlPC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gPC91bD4KLSA8L3A+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FQ29udGVudCgpIj48Q09ERT5NSU1FUGFja2FnZS5nZXRNSU1FQ29udGVudCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRFUGFydCgpIj5nZXRFUGFydDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRQYXJ0KCkiPmdldFBhcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5QYXJ0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0VHlwZSgpIj5nZXRUeXBlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjc2V0RVBhcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCkiPnNldEVQYXJ0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPiZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRFUGFydCgpIj48Q09ERT48ZW0+RVBhcnQ8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNzZXRQYXJ0KGphdmEubGFuZy5TdHJpbmcpIj5zZXRQYXJ0PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3BhcnQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNzZXRUeXBlKGphdmEubGFuZy5TdHJpbmcpIj5zZXRUeXBlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRUeXBlKCkiPjxDT0RFPjxlbT5UeXBlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+Z2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2lzUmVxdWlyZWQoKSI+aXNSZXF1aXJlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0RWxlbWVudFR5cGUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPnNldEVsZW1lbnRUeXBlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRSZXF1aXJlZChib29sZWFuKSI+c2V0UmVxdWlyZWQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXRSZXF1aXJlZCwgc2V0UmVxdWlyZWQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXRSZXF1aXJlZCwgc2V0UmVxdWlyZWQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRUeXBlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFR5cGU8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0VHlwZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlR5cGU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0VHlwZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+VHlwZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjc2V0VHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+c2V0VHlwZShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRUNvbnRlbnRfVHlwZSgpIj48Q09ERT5NSU1FUGFja2FnZS5nZXRNSU1FQ29udGVudF9UeXBlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0VHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0VHlwZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRUeXBlPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRUeXBlKCkiPjxDT0RFPjxlbT5UeXBlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0VHlwZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5UeXBlPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRUeXBlKCkiPjxDT0RFPmdldFR5cGUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFUGFydCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFUGFydDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPiA8Qj5nZXRFUGFydDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FUGFydDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RVBhcnQ8L2VtPicgcmVmZXJlbmNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sI3NldEVQYXJ0KG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQpIj48Q09ERT5zZXRFUGFydChQYXJ0KTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldE1JTUVDb250ZW50X0VQYXJ0KCkiPjxDT0RFPk1JTUVQYWNrYWdlLmdldE1JTUVDb250ZW50X0VQYXJ0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0RVBhcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCkiPjwhLS0gLS0+PC9BPjxIMz4KLXNldEVQYXJ0PC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldEVQYXJ0PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+Jm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRFUGFydCgpIj48Q09ERT48ZW0+RVBhcnQ8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5FUGFydDwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+Z2V0RVBhcnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRQYXJ0KGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRQYXJ0PC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFBhcnQ8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtwYXJ0KTwvUFJFPgotPERMPgotPEREPjwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0UGFydDwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UGFydCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRQYXJ0PC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldFBhcnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlBhcnQ8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0UGFydDwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9NSU1FQ29udGVudC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBDTEFTUyZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRUNvbnRlbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM3OGIwNy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1NCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1NSU1FRmFjdG9yeQotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FRmFjdG9yeSBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Ik1JTUVGYWN0b3J5IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTUlNRUZhY3RvcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIE1JTUVGYWN0b3J5PC9IMj4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+TUlNRUZhY3Rvcnk8L0I+PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gVGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuCi0gSXQgcHJvdmlkZXMgYSBjcmVhdGUgbWV0aG9kIGZvciBlYWNoIG5vbi1hYnN0cmFjdCBjbGFzcyBvZiB0aGUgbW9kZWwuCi0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxDT0RFPk1JTUVQYWNrYWdlPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLTwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVGYWN0b3J5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCNlSU5TVEFOQ0UiPmVJTlNUQU5DRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVDb250ZW50PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCNjcmVhdGVNSU1FQ29udGVudCgpIj5jcmVhdGVNSU1FQ29udGVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29udGVudDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNaW1lWG1sPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCNjcmVhdGVNSU1FTWltZVhtbCgpIj5jcmVhdGVNSU1FTWltZVhtbDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+TWltZSBYbWw8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FTXVsdGlwYXJ0UmVsYXRlZDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwjY3JlYXRlTUlNRU11bHRpcGFydFJlbGF0ZWQoKSI+Y3JlYXRlTUlNRU11bHRpcGFydFJlbGF0ZWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk11bHRpcGFydCBSZWxhdGVkPC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhcnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sI2NyZWF0ZU1JTUVQYXJ0KCkiPmNyZWF0ZU1JTUVQYXJ0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sI2dldE1JTUVQYWNrYWdlKCkiPmdldE1JTUVQYWNrYWdlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZUlOU1RBTkNFIj48IS0tIC0tPjwvQT48SDM+Ci1lSU5TVEFOQ0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVGYWN0b3J5PC9BPiA8Qj5lSU5TVEFOQ0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJjcmVhdGVNSU1FQ29udGVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVNSU1FQ29udGVudDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FQ29udGVudDwvQT4gPEI+Y3JlYXRlTUlNRUNvbnRlbnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkNvbnRlbnQ8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Db250ZW50PC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlTUlNRVBhcnQoKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlTUlNRVBhcnQ8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhcnQ8L0E+IDxCPmNyZWF0ZU1JTUVQYXJ0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UGFydDwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImNyZWF0ZU1JTUVNdWx0aXBhcnRSZWxhdGVkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZU1JTUVNdWx0aXBhcnRSZWxhdGVkPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPiA8Qj5jcmVhdGVNSU1FTXVsdGlwYXJ0UmVsYXRlZDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+TXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImNyZWF0ZU1JTUVNaW1lWG1sKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZU1JTUVNaW1lWG1sPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNaW1lWG1sPC9BPiA8Qj5jcmVhdGVNSU1FTWltZVhtbDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+TWltZSBYbWw8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5NaW1lIFhtbDwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE1JTUVQYWNrYWdlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE1JTUVQYWNrYWdlPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPiA8Qj5nZXRNSU1FUGFja2FnZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL01JTUVGYWN0b3J5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRUZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMwN2RlOS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1MyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1NSU1FTWltZVhtbAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTWltZVhtbCBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Ik1JTUVNaW1lWG1sIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTUlNRU1pbWVYbWwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FTWltZVhtbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIE1JTUVNaW1lWG1sPC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwsIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+TUlNRU1pbWVYbWw8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTWltZVhtbDwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk1pbWUgWG1sPC9iPjwvZW0+Jy4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQotIDxwPgotIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSA8dWw+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gPC91bD4KLSA8L3A+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FTWltZVhtbCgpIj48Q09ERT5NSU1FUGFja2FnZS5nZXRNSU1FTWltZVhtbCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCNnZXRFUGFydCgpIj5nZXRFUGFydDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCNnZXRQYXJ0KCkiPmdldFBhcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5QYXJ0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwjc2V0RVBhcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCkiPnNldEVQYXJ0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPiZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCNnZXRFUGFydCgpIj48Q09ERT48ZW0+RVBhcnQ8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCNzZXRQYXJ0KGphdmEubGFuZy5TdHJpbmcpIj5zZXRQYXJ0PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3BhcnQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldEVQYXJ0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVQYXJ0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+IDxCPmdldEVQYXJ0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVQYXJ0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FUGFydDwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwjc2V0RVBhcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCkiPjxDT0RFPnNldEVQYXJ0KFBhcnQpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRU1pbWVYbWxfRVBhcnQoKSI+PENPREU+TUlNRVBhY2thZ2UuZ2V0TUlNRU1pbWVYbWxfRVBhcnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFUGFydChvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0KSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RVBhcnQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RVBhcnQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sI2dldEVQYXJ0KCkiPjxDT0RFPjxlbT5FUGFydDwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVQYXJ0PC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCNnZXRFUGFydCgpIj48Q09ERT5nZXRFUGFydCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFBhcnQoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFBhcnQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0UGFydDwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3BhcnQpPC9QUkU+Ci08REw+Ci08REQ+PCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXRQYXJ0PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWw8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRQYXJ0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFBhcnQ8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0UGFydDwvQj4oKTwvUFJFPgotPERMPgotPEREPjwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UGFydDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXRQYXJ0PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWw8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL01JTUVNaW1lWG1sLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRU1pbWVYbWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJlNzFlZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyMSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1NSU1FTXVsdGlwYXJ0UmVsYXRlZAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Ik1JTUVNdWx0aXBhcnRSZWxhdGVkIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIE1JTUVNdWx0aXBhcnRSZWxhdGVkPC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQsIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZDwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk11bHRpcGFydCBSZWxhdGVkPC9iPjwvZW0+Jy4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQotIDxwPgotIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSA8dWw+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwjZ2V0RU1JTUVQYXJ0KCkiPjxDT0RFPjxlbT5FTUlNRSBQYXJ0PC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gPC91bD4KLSA8L3A+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpIj48Q09ERT5NSU1FUGFja2FnZS5nZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCNhZGRNSU1FUGFydChqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCkiPmFkZE1JTUVQYXJ0PC9BPjwvQj4oamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQmbmJzcDttaW1lUGFydCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFTGlzdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCNnZXRFTUlNRVBhcnQoKSI+Z2V0RU1JTUVQYXJ0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1JTUUgUGFydDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5MaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sI2dldE1JTUVQYXJ0cygpIj5nZXRNSU1FUGFydHM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldEVNSU1FUGFydCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFTUlNRVBhcnQ8L0gzPgotPFBSRT4KLUVMaXN0IDxCPmdldEVNSU1FUGFydDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVNSU1FIFBhcnQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PENPREU+TUlNRVBhcnQ8L0NPREU+PC9BPi4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVNSU1FIFBhcnQ8L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+RU1JTUUgUGFydDwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZF9FTUlNRVBhcnQoKSI+PENPREU+TUlNRVBhY2thZ2UuZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWRfRU1JTUVQYXJ0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iYWRkTUlNRVBhcnQoamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQpIj48IS0tIC0tPjwvQT48SDM+Ci1hZGRNSU1FUGFydDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5hZGRNSU1FUGFydDwvQj4oamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQmbmJzcDttaW1lUGFydCk8L1BSRT4KLTxETD4KLTxERD48IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmFkZE1JTUVQYXJ0PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRNSU1FUGFydHMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TUlNRVBhcnRzPC9IMz4KLTxQUkU+Ci1qYXZhLnV0aWwuTGlzdCA8Qj5nZXRNSU1FUGFydHM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldE1JTUVQYXJ0czwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMzYzMjUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MTYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotTUlNRVBhY2thZ2UuTGl0ZXJhbHMKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTGl0ZXJhbHMgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJNSU1FUGFja2FnZS5MaXRlcmFscyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgTUlNRVBhY2thZ2UuTGl0ZXJhbHM8L0gyPgotPERMPgotPERUPjxCPkVuY2xvc2luZyBpbnRlcmZhY2U6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIHN0YXRpYyBpbnRlcmZhY2UgPEI+TUlNRVBhY2thZ2UuTGl0ZXJhbHM8L0I+PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gRGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudAotIDx1bD4KLSAgIDxsaT5lYWNoIGNsYXNzLDwvbGk+Ci0gICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4KLSAgIDxsaT5lYWNoIGVudW0sPC9saT4KLSAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPgotIDwvdWw+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLQotPFA+Ci08SFI+Ci0KLTxQPgotPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTUlNRV9DT05URU5UIj5JTUlNRV9DT05URU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JTUlNRSBDb250ZW50PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSU1JTUVfTUlNRV9YTUwiPklNSU1FX01JTUVfWE1MPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JTUlNRSBNaW1lIFhtbDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI0lNSU1FX01VTFRJUEFSVF9SRUxBVEVEIj5JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SU1JTUUgTXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJTUlNRV9QQVJUIj5JTUlNRV9QQVJUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JTUlNRSBQYXJ0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFRGF0YVR5cGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTElTVCI+TElTVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+TGlzdDwvZW0+JyBkYXRhIHR5cGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfQ09OVEVOVCI+TUlNRV9DT05URU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5Db250ZW50PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfQ09OVEVOVF9fRVBBUlQiPk1JTUVfQ09OVEVOVF9fRVBBUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfQ09OVEVOVF9fVFlQRSI+TUlNRV9DT05URU5UX19UWVBFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTUlNRV9NSU1FX1hNTCI+TUlNRV9NSU1FX1hNTDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+TWltZSBYbWw8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwjTUlNRV9NSU1FX1hNTF9fRVBBUlQiPk1JTUVfTUlNRV9YTUxfX0VQQVJUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURUQiPk1JTUVfTVVMVElQQVJUX1JFTEFURUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPk11bHRpcGFydCBSZWxhdGVkPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQiPk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVNSU1FIFBhcnQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0IGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfUEFSVCI+TUlNRV9QQVJUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sI01JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPk1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iTUlNRV9DT05URU5UIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX0NPTlRFTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+TUlNRV9DT05URU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5Db250ZW50PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5NSU1FQ29udGVudEltcGw8L0NPREU+LCAKLTxDT0RFPk1JTUVQYWNrYWdlSW1wbC5nZXRNSU1FQ29udGVudCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX0NPTlRFTlRfX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfQ09OVEVOVF9fVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+TUlNRV9DT05URU5UX19UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9DT05URU5UX19FUEFSVCI+PCEtLSAtLT48L0E+PEgzPgotTUlNRV9DT05URU5UX19FUEFSVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVSZWZlcmVuY2UgPEI+TUlNRV9DT05URU5UX19FUEFSVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX1BBUlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfUEFSVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5NSU1FX1BBUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk1JTUVQYXJ0SW1wbDwvQ09ERT4sIAotPENPREU+TUlNRVBhY2thZ2VJbXBsLmdldE1JTUVQYXJ0KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPk1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX01VTFRJUEFSVF9SRUxBVEVEIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX01VTFRJUEFSVF9SRUxBVEVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPk1JTUVfTVVMVElQQVJUX1JFTEFURUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPk11bHRpcGFydCBSZWxhdGVkPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5NSU1FTXVsdGlwYXJ0UmVsYXRlZEltcGw8L0NPREU+LCAKLTxDT0RFPk1JTUVQYWNrYWdlSW1wbC5nZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTUlNRV9QQVJUIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTUlNRV9QQVJUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTUlNRV9QQVJUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTUlNRSBQYXJ0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX01JTUVfWE1MIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX01JTUVfWE1MPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPk1JTUVfTUlNRV9YTUw8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPk1pbWUgWG1sPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5NSU1FTWltZVhtbEltcGw8L0NPREU+LCAKLTxDT0RFPk1JTUVQYWNrYWdlSW1wbC5nZXRNSU1FTWltZVhtbCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX01JTUVfWE1MX19FUEFSVCI+PCEtLSAtLT48L0E+PEgzPgotTUlNRV9NSU1FX1hNTF9fRVBBUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPk1JTUVfTUlNRV9YTUxfX0VQQVJUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNSU1FX1BBUlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlNSU1FX1BBUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SU1JTUVfUEFSVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SU1JTUUgUGFydDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TUlNRVBhcnQ8L0NPREU+LCAKLTxDT0RFPk1JTUVQYWNrYWdlSW1wbC5nZXRJTUlNRVBhcnQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1JTUVfTVVMVElQQVJUX1JFTEFURUQiPjwhLS0gLS0+PC9BPjxIMz4KLUlNSU1FX01VTFRJUEFSVF9SRUxBVEVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklNSU1FX01VTFRJUEFSVF9SRUxBVEVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JTUlNRSBNdWx0aXBhcnQgUmVsYXRlZDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0NPREU+LCAKLTxDT0RFPk1JTUVQYWNrYWdlSW1wbC5nZXRJTUlNRU11bHRpcGFydFJlbGF0ZWQoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1JTUVfQ09OVEVOVCI+PCEtLSAtLT48L0E+PEgzPgotSU1JTUVfQ09OVEVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JTUlNRV9DT05URU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JTUlNRSBDb250ZW50PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5NSU1FQ29udGVudDwvQ09ERT4sIAotPENPREU+TUlNRVBhY2thZ2VJbXBsLmdldElNSU1FQ29udGVudCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTUlNRV9NSU1FX1hNTCI+PCEtLSAtLT48L0E+PEgzPgotSU1JTUVfTUlNRV9YTUw8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SU1JTUVfTUlNRV9YTUw8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklNSU1FIE1pbWUgWG1sPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5NSU1FTWltZVhtbDwvQ09ERT4sIAotPENPREU+TUlNRVBhY2thZ2VJbXBsLmdldElNSU1FTWltZVhtbCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJMSVNUIj48IS0tIC0tPjwvQT48SDM+Ci1MSVNUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRURhdGFUeXBlIDxCPkxJU1Q8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPkxpc3Q8L2VtPicgZGF0YSB0eXBlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPkxpc3Q8L0NPREU+LCAKLTxDT0RFPk1JTUVQYWNrYWdlSW1wbC5nZXRMaXN0KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1ZmYyYy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NDkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotTUlNRVBhY2thZ2UKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJNSU1FUGFja2FnZSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL01JTUVQYWNrYWdlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRVBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDs8QSBIUkVGPSIjbmVzdGVkX2NsYXNzX3N1bW1hcnkiPk5FU1RFRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBNSU1FUGFja2FnZTwvSDI+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPk1JTUVQYWNrYWdlPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIFRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLgotIEl0IGNvbnRhaW5zIGFjY2Vzc29ycyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0byByZXByZXNlbnQKLSA8dWw+Ci0gICA8bGk+ZWFjaCBjbGFzcyw8L2xpPgotICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+Ci0gICA8bGk+ZWFjaCBlbnVtLDwvbGk+Ci0gICA8bGk+YW5kIGVhY2ggZGF0YSB0eXBlPC9saT4KLSA8L3VsPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Q09ERT5NSU1FRmFjdG9yeTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci08IS0tID09PT09PT09IE5FU1RFRCBDTEFTUyBTVU1NQVJZID09PT09PT09IC0tPgotCi08QSBOQU1FPSJuZXN0ZWRfY2xhc3Nfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk5lc3RlZCBDbGFzcyBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2UuTGl0ZXJhbHM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudAotIAotICAgZWFjaCBjbGFzcywKLSAgIGVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLAotICAgZWFjaCBlbnVtLAotICAgYW5kIGVhY2ggZGF0YSB0eXBlCi0gCi0gPCE8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZUlOU1RBTkNFIj5lSU5TVEFOQ0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGFja2FnZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2VOQU1FIj5lTkFNRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgcGFja2FnZSBuYW1lPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZU5TX1BSRUZJWCI+ZU5TX1BSRUZJWDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2VOU19VUkkiPmVOU19VUkk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHBhY2thZ2UgbmFtZXNwYWNlIFVSSTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfQ09OVEVOVCI+SU1JTUVfQ09OVEVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklNSU1FIENvbnRlbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNJTUlNRV9DT05URU5UX0ZFQVRVUkVfQ09VTlQiPklNSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1JTUUgQ29udGVudDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfTUlNRV9YTUwiPklNSU1FX01JTUVfWE1MPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1JTUUgTWltZSBYbWw8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNJTUlNRV9NSU1FX1hNTF9GRUFUVVJFX0NPVU5UIj5JTUlNRV9NSU1FX1hNTF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JTUlNRSBNaW1lIFhtbDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfTVVMVElQQVJUX1JFTEFURUQiPklNSU1FX01VTFRJUEFSVF9SRUxBVEVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1JTUUgTXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNJTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UIj5JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JTUlNRSBNdWx0aXBhcnQgUmVsYXRlZDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjSU1JTUVfUEFSVCI+SU1JTUVfUEFSVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklNSU1FIFBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNJTUlNRV9QQVJUX0ZFQVRVUkVfQ09VTlQiPklNSU1FX1BBUlRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1JTUUgUGFydDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTElTVCI+TElTVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPGVtPkxpc3Q8L2VtPicgZGF0YSB0eXBlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlQiPk1JTUVfQ09OVEVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkNvbnRlbnQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+TUlNRV9DT05URU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfX0VMRU1FTlQiPk1JTUVfQ09OVEVOVF9fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfX0VMRU1FTlRfVFlQRSI+TUlNRV9DT05URU5UX19FTEVNRU5UX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfX0VQQVJUIj5NSU1FX0NPTlRFTlRfX0VQQVJUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfX1JFUVVJUkVEIj5NSU1FX0NPTlRFTlRfX1JFUVVJUkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfX1RZUEUiPk1JTUVfQ09OVEVOVF9fVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVCI+TUlNRV9DT05URU5UX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkNvbnRlbnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTUlNRV9YTUwiPk1JTUVfTUlNRV9YTUw8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5NaW1lIFhtbDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTUlNRV9YTUxfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+TUlNRV9NSU1FX1hNTF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NSU1FX1hNTF9fRUxFTUVOVCI+TUlNRV9NSU1FX1hNTF9fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01JTUVfWE1MX19FTEVNRU5UX1RZUEUiPk1JTUVfTUlNRV9YTUxfX0VMRU1FTlRfVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTUlNRV9YTUxfX0VQQVJUIj5NSU1FX01JTUVfWE1MX19FUEFSVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NSU1FX1hNTF9fUkVRVUlSRUQiPk1JTUVfTUlNRV9YTUxfX1JFUVVJUkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQiPk1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+TWltZSBYbWw8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURUQiPk1JTUVfTVVMVElQQVJUX1JFTEFURUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURURfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRUxFTUVOVCI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UX1RZUEUiPk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VMRU1FTlRfVFlQRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQiPk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNSU1FIFBhcnQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX01VTFRJUEFSVF9SRUxBVEVEX19SRVFVSVJFRCI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fUkVRVUlSRUQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI01JTUVfTVVMVElQQVJUX1JFTEFURURfRkVBVFVSRV9DT1VOVCI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9QQVJUIj5NSU1FX1BBUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9QQVJUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPk1JTUVfUEFSVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjTUlNRV9QQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+TUlNRV9QQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX1BBUlRfX0VMRU1FTlQiPk1JTUVfUEFSVF9fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX1BBUlRfX0VMRU1FTlRfVFlQRSI+TUlNRV9QQVJUX19FTEVNRU5UX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX1BBUlRfX1JFUVVJUkVEIj5NSU1FX1BBUlRfX1JFUVVJUkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNNSU1FX1BBUlRfRkVBVFVSRV9DT1VOVCI+TUlNRV9QQVJUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBhcnQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRJTUlNRUNvbnRlbnQoKSI+Z2V0SU1JTUVDb250ZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SU1JTUUgQ29udGVudDwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldElNSU1FTWltZVhtbCgpIj5nZXRJTUlNRU1pbWVYbWw8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JTUlNRSBNaW1lIFhtbDwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldElNSU1FTXVsdGlwYXJ0UmVsYXRlZCgpIj5nZXRJTUlNRU11bHRpcGFydFJlbGF0ZWQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JTUlNRSBNdWx0aXBhcnQgUmVsYXRlZDwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldElNSU1FUGFydCgpIj5nZXRJTUlNRVBhcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JTUlNRSBQYXJ0PC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFRGF0YVR5cGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TGlzdCgpIj5nZXRMaXN0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGRhdGEgdHlwZSAnPENPREU+PGVtPkxpc3Q8L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRUNvbnRlbnRfRVBhcnQoKSI+Z2V0TUlNRUNvbnRlbnRfRVBhcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FQ29udGVudF9UeXBlKCkiPmdldE1JTUVDb250ZW50X1R5cGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0VHlwZSgpIj48Q09ERT48ZW0+VHlwZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FQ29udGVudCgpIj5nZXRNSU1FQ29udGVudDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Q09ERT48ZW0+Q29udGVudDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUZhY3Rvcnk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldE1JTUVGYWN0b3J5KCkiPmdldE1JTUVGYWN0b3J5PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWw8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FTWltZVhtbF9FUGFydCgpIj5nZXRNSU1FTWltZVhtbF9FUGFydDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCNnZXRFUGFydCgpIj48Q09ERT48ZW0+RVBhcnQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRU1pbWVYbWwoKSI+Z2V0TUlNRU1pbWVYbWw8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PENPREU+PGVtPk1pbWUgWG1sPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZF9FTUlNRVBhcnQoKSI+Z2V0TUlNRU11bHRpcGFydFJlbGF0ZWRfRU1JTUVQYXJ0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwjZ2V0RU1JTUVQYXJ0KCkiPjxDT0RFPjxlbT5FTUlNRSBQYXJ0PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldE1JTUVNdWx0aXBhcnRSZWxhdGVkKCkiPmdldE1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxDT0RFPjxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRVBhcnRfRUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj5nZXRNSU1FUGFydF9FRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48Q09ERT48ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRVBhcnQoKSI+Z2V0TUlNRVBhcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImVOQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1lTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+ZU5BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHBhY2thZ2UgbmFtZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuZU5BTUUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZU5TX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotZU5TX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+ZU5TX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgcGFja2FnZSBuYW1lc3BhY2UgVVJJLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5lTlNfVVJJIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImVOU19QUkVGSVgiPjwhLS0gLS0+PC9BPjxIMz4KLWVOU19QUkVGSVg8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPmVOU19QUkVGSVg8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHBhY2thZ2UgbmFtZXNwYWNlIG5hbWUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLmVOU19QUkVGSVgiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZUlOU1RBTkNFIj48IS0tIC0tPjwvQT48SDM+Ci1lSU5TVEFOQ0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPiA8Qj5lSU5TVEFOQ0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGFja2FnZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9DT05URU5UIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX0NPTlRFTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9DT05URU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+Q29udGVudDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TUlNRUNvbnRlbnRJbXBsPC9DT0RFPiwgCi08Q09ERT5NSU1FUGFja2FnZUltcGwuZ2V0TUlNRUNvbnRlbnQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLk1JTUVfQ09OVEVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX0NPTlRFTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotTUlNRV9DT05URU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9DT05URU5UX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX0NPTlRFTlRfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfQ09OVEVOVF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NSU1FX0NPTlRFTlRfX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9DT05URU5UX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1JTUVfQ09OVEVOVF9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfQ09OVEVOVF9fUkVRVUlSRUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9DT05URU5UX19SRVFVSVJFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9DT05URU5UX19SRVFVSVJFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX0NPTlRFTlRfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PEgzPgotTUlNRV9DT05URU5UX19FTEVNRU5UX1RZUEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9DT05URU5UX19FTEVNRU5UX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX0NPTlRFTlRfX0VMRU1FTlRfVFlQRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX0NPTlRFTlRfX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfQ09OVEVOVF9fVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NSU1FX0NPTlRFTlRfX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9DT05URU5UX19UWVBFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1JTUVfQ09OVEVOVF9fRVBBUlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfQ09OVEVOVF9fRVBBUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9DT05URU5UX19FUEFSVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9DT05URU5UX19FUEFSVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotTUlNRV9DT05URU5UX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9DT05URU5UX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkNvbnRlbnQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLk1JTUVfQ09OVEVOVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1JTUVfUEFSVCI+PCEtLSAtLT48L0E+PEgzPgotTUlNRV9QQVJUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1JTUVfUEFSVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk1JTUVQYXJ0SW1wbDwvQ09ERT4sIAotPENPREU+TUlNRVBhY2thZ2VJbXBsLmdldE1JTUVQYXJ0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX1BBUlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9QQVJUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfUEFSVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1JTUVfUEFSVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9QQVJUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9QQVJUX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX1BBUlRfX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9QQVJUX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLk1JTUVfUEFSVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX1BBUlRfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX1BBUlRfX1JFUVVJUkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1JTUVfUEFSVF9fUkVRVUlSRUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLk1JTUVfUEFSVF9fUkVRVUlSRUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9QQVJUX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfUEFSVF9fRUxFTUVOVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1JTUVfUEFSVF9fRUxFTUVOVF9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9QQVJUX19FTEVNRU5UX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9QQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUyI+PCEtLSAtLT48L0E+PEgzPgotTUlNRV9QQVJUX19FRVhURU5TSUJJTElUWV9FTEVNRU5UUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NSU1FX1BBUlRfX0VFWFRFTlNJQklMSVRZX0VMRU1FTlRTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLk1JTUVfUEFSVF9fRUVYVEVOU0lCSUxJVFlfRUxFTUVOVFMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9QQVJUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfUEFSVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1JTUVfUEFSVF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5QYXJ0PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX1BBUlRfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX01VTFRJUEFSVF9SRUxBVEVEIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX01VTFRJUEFSVF9SRUxBVEVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1JTUVfTVVMVElQQVJUX1JFTEFURUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TUlNRU11bHRpcGFydFJlbGF0ZWRJbXBsPC9DT0RFPiwgCi08Q09ERT5NSU1FUGFja2FnZUltcGwuZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLk1JTUVfTVVMVElQQVJUX1JFTEFURUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1JTUVfTVVMVElQQVJUX1JFTEFURURfX1JFUVVJUkVEIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19SRVFVSVJFRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19SRVFVSVJFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fUkVRVUlSRUQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX01VTFRJUEFSVF9SRUxBVEVEX19FTEVNRU5UX1RZUEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRUxFTUVOVF9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRUxFTUVOVF9UWVBFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9fRU1JTUVfUEFSVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RU1JTUUgUGFydDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLk1JTUVfTVVMVElQQVJUX1JFTEFURURfX0VNSU1FX1BBUlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1NSU1FX01VTFRJUEFSVF9SRUxBVEVEX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1JTUVfTUlNRV9YTUwiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfTUlNRV9YTUw8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+TUlNRV9NSU1FX1hNTDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPk1pbWUgWG1sPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5NSU1FTWltZVhtbEltcGw8L0NPREU+LCAKLTxDT0RFPk1JTUVQYWNrYWdlSW1wbC5nZXRNSU1FTWltZVhtbCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTUlNRV9NSU1FX1hNTCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX01JTUVfWE1MX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfTUlNRV9YTUxfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NSU1FX01JTUVfWE1MX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9NSU1FX1hNTF9fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotTUlNRV9NSU1FX1hNTF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NSU1FX01JTUVfWE1MX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLk1JTUVfTUlNRV9YTUxfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9NSU1FX1hNTF9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfTUlNRV9YTUxfX1JFUVVJUkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1JTUVfTUlNRV9YTUxfX1JFUVVJUkVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19SRVFVSVJFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX01JTUVfWE1MX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfTUlNRV9YTUxfX0VMRU1FTlRfVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NSU1FX01JTUVfWE1MX19FTEVNRU5UX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19FTEVNRU5UX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUlNRV9NSU1FX1hNTF9fRVBBUlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfTUlNRV9YTUxfX0VQQVJUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPk1JTUVfTUlNRV9YTUxfX0VQQVJUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX19FUEFSVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJNSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLU1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5NSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk1pbWUgWG1sPC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5NSU1FX01JTUVfWE1MX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1JTUVfUEFSVCI+PCEtLSAtLT48L0E+PEgzPgotSU1JTUVfUEFSVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JTUlNRV9QQVJUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1JTUUgUGFydDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TUlNRVBhcnQ8L0NPREU+LCAKLTxDT0RFPk1JTUVQYWNrYWdlSW1wbC5nZXRJTUlNRVBhcnQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlLklNSU1FX1BBUlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1JTUVfUEFSVF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JTUlNRV9QQVJUX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU1JTUVfUEFSVF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JTUlNRSBQYXJ0PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9QQVJUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1JTUVfTVVMVElQQVJUX1JFTEFURUQiPjwhLS0gLS0+PC9BPjxIMz4KLUlNSU1FX01VTFRJUEFSVF9SRUxBVEVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklNSU1FX01VTFRJUEFSVF9SRUxBVEVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SU1JTUUgTXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9DT0RFPiwgCi08Q09ERT5NSU1FUGFja2FnZUltcGwuZ2V0SU1JTUVNdWx0aXBhcnRSZWxhdGVkKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklNSU1FX01VTFRJUEFSVF9SRUxBVEVEX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklNSU1FIE11bHRpcGFydCBSZWxhdGVkPC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9NVUxUSVBBUlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNSU1FX0NPTlRFTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlNSU1FX0NPTlRFTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SU1JTUVfQ09OVEVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklNSU1FIENvbnRlbnQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk1JTUVDb250ZW50PC9DT0RFPiwgCi08Q09ERT5NSU1FUGFja2FnZUltcGwuZ2V0SU1JTUVDb250ZW50KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5JTUlNRV9DT05URU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSU1JTUVfQ09OVEVOVF9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklNSU1FX0NPTlRFTlRfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SU1JTUUgQ29udGVudDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuSU1JTUVfQ09OVEVOVF9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklNSU1FX01JTUVfWE1MIj48IS0tIC0tPjwvQT48SDM+Ci1JTUlNRV9NSU1FX1hNTDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JTUlNRV9NSU1FX1hNTDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklNSU1FIE1pbWUgWG1sPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5NSU1FTWltZVhtbDwvQ09ERT4sIAotPENPREU+TUlNRVBhY2thZ2VJbXBsLmdldElNSU1FTWltZVhtbCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuSU1JTUVfTUlNRV9YTUwiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSU1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JTUlNRV9NSU1FX1hNTF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JTUlNRSBNaW1lIFhtbDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuSU1JTUVfTUlNRV9YTUxfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJMSVNUIj48IS0tIC0tPjwvQT48SDM+Ci1MSVNUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPkxJU1Q8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5MaXN0PC9lbT4nIGRhdGEgdHlwZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5MaXN0PC9DT0RFPiwgCi08Q09ERT5NSU1FUGFja2FnZUltcGwuZ2V0TGlzdCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTElTVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldE1JTUVDb250ZW50KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE1JTUVDb250ZW50PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0TUlNRUNvbnRlbnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PENPREU+PGVtPkNvbnRlbnQ8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5Db250ZW50PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PENPREU+TUlNRUNvbnRlbnQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TUlNRUNvbnRlbnRfVHlwZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRNSU1FQ29udGVudF9UeXBlPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldE1JTUVDb250ZW50X1R5cGU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0VHlwZSgpIj48Q09ERT48ZW0+VHlwZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VHlwZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRUeXBlKCkiPjxDT0RFPk1JTUVDb250ZW50LmdldFR5cGUoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldE1JTUVDb250ZW50KCkiPjxDT0RFPmdldE1JTUVDb250ZW50KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TUlNRUNvbnRlbnRfRVBhcnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TUlNRUNvbnRlbnRfRVBhcnQ8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0TUlNRUNvbnRlbnRfRVBhcnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FUGFydDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRFUGFydCgpIj48Q09ERT5NSU1FQ29udGVudC5nZXRFUGFydCgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwjZ2V0TUlNRUNvbnRlbnQoKSI+PENPREU+Z2V0TUlNRUNvbnRlbnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRNSU1FUGFydCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRNSU1FUGFydDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldE1JTUVQYXJ0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+UGFydDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxDT0RFPk1JTUVQYXJ0PC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE1JTUVQYXJ0X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TUlNRVBhcnRfRUV4dGVuc2liaWxpdHlFbGVtZW50czwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRNSU1FUGFydF9FRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48Q09ERT48ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8ZW0+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwjZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48Q09ERT5NSU1FUGFydC5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FUGFydCgpIj48Q09ERT5nZXRNSU1FUGFydCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE1JTUVNdWx0aXBhcnRSZWxhdGVkKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE1JTUVNdWx0aXBhcnRSZWxhdGVkPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PENPREU+PGVtPk11bHRpcGFydCBSZWxhdGVkPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+TXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Q09ERT5NSU1FTXVsdGlwYXJ0UmVsYXRlZDwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRNSU1FTXVsdGlwYXJ0UmVsYXRlZF9FTUlNRVBhcnQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TUlNRU11bHRpcGFydFJlbGF0ZWRfRU1JTUVQYXJ0PC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldE1JTUVNdWx0aXBhcnRSZWxhdGVkX0VNSU1FUGFydDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sI2dldEVNSU1FUGFydCgpIj48Q09ERT48ZW0+RU1JTUUgUGFydDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5FTUlNRSBQYXJ0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sI2dldEVNSU1FUGFydCgpIj48Q09ERT5NSU1FTXVsdGlwYXJ0UmVsYXRlZC5nZXRFTUlNRVBhcnQoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldE1JTUVNdWx0aXBhcnRSZWxhdGVkKCkiPjxDT0RFPmdldE1JTUVNdWx0aXBhcnRSZWxhdGVkKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TUlNRU1pbWVYbWwoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TUlNRU1pbWVYbWw8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRNSU1FTWltZVhtbDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Q09ERT48ZW0+TWltZSBYbWw8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5NaW1lIFhtbDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxDT0RFPk1JTUVNaW1lWG1sPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE1JTUVNaW1lWG1sX0VQYXJ0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE1JTUVNaW1lWG1sX0VQYXJ0PC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldE1JTUVNaW1lWG1sX0VQYXJ0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sI2dldEVQYXJ0KCkiPjxDT0RFPjxlbT5FUGFydDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+RVBhcnQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+TUlNRU1pbWVYbWwuZ2V0RVBhcnQoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldE1JTUVNaW1lWG1sKCkiPjxDT0RFPmdldE1JTUVNaW1lWG1sKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SU1JTUVQYXJ0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElNSU1FUGFydDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElNSU1FUGFydDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklNSU1FIFBhcnQ8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklNSU1FIFBhcnQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TUlNRVBhcnQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJTUlNRU11bHRpcGFydFJlbGF0ZWQoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SU1JTUVNdWx0aXBhcnRSZWxhdGVkPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SU1JTUVNdWx0aXBhcnRSZWxhdGVkPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SU1JTUUgTXVsdGlwYXJ0IFJlbGF0ZWQ8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklNSU1FIE11bHRpcGFydCBSZWxhdGVkPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SU1JTUVDb250ZW50KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElNSU1FQ29udGVudDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElNSU1FQ29udGVudDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklNSU1FIENvbnRlbnQ8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklNSU1FIENvbnRlbnQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+TUlNRUNvbnRlbnQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJTUlNRU1pbWVYbWwoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SU1JTUVNaW1lWG1sPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SU1JTUVNaW1lWG1sPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SU1JTUUgTWltZSBYbWw8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklNSU1FIE1pbWUgWG1sPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPk1JTUVNaW1lWG1sPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TGlzdCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRMaXN0PC9IMz4KLTxQUkU+Ci1FRGF0YVR5cGUgPEI+Z2V0TGlzdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxDT0RFPjxlbT5MaXN0PC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8ZW0+TGlzdDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5MaXN0PC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TUlNRUZhY3RvcnkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TUlNRUZhY3Rvcnk8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUZhY3Rvcnk8L0E+IDxCPmdldE1JTUVGYWN0b3J5PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL01JTUVQYWNrYWdlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRVBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDs8QSBIUkVGPSIjbmVzdGVkX2NsYXNzX3N1bW1hcnkiPk5FU1RFRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBhZDA3ZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyMSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1NSU1FUGFydAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFydCBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Ik1JTUVQYXJ0IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTUlNRVBhcnQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1JTUVQYXJ0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgTUlNRVBhcnQ8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCwgamF2YS5pby5TZXJpYWxpemFibGUsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5NSU1FUGFydDwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UGFydDwvYj48L2VtPicuCi0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0KLSA8cD4KLSBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gPHVsPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+PENPREU+PGVtPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gPC91bD4KLSA8L3A+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FUGFydCgpIj48Q09ERT5NSU1FUGFja2FnZS5nZXRNSU1FUGFydCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCNhZGRFeHRlbnNpYmlsaXR5RWxlbWVudChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIj5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0I+KGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCZuYnNwO2V4dGVuc2liaWxpdHlFbGVtZW50KTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sI2dldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKSI+Z2V0RUV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVFeHRlbnNpYmlsaXR5IEVsZW1lbnRzPC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLkxpc3Q8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwjZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPmdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldEVsZW1lbnRUeXBlKCkiPmdldEVsZW1lbnRUeXBlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPmlzUmVxdWlyZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldEVsZW1lbnRUeXBlKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj5zZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0UmVxdWlyZWQoYm9vbGVhbikiPnNldFJlcXVpcmVkPC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNlbGVtZW50Q2hhbmdlZChvcmcudzNjLmRvbS5FbGVtZW50KSI+ZWxlbWVudENoYW5nZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPmdldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPmdldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVuY2xvc2luZ0RlZmluaXRpb24oKSI+Z2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj5zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KCkiPnVwZGF0ZUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPnVwZGF0ZUVsZW1lbnQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+Z2V0UmVxdWlyZWQsIHNldFJlcXVpcmVkPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+Z2V0UmVxdWlyZWQsIHNldFJlcXVpcmVkPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUV4dGVuc2liaWxpdHkgRWxlbWVudHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxDT0RFPkV4dGVuc2liaWxpdHlFbGVtZW50PC9DT0RFPjwvQT4uCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRXh0ZW5zaWJpbGl0eSBFbGVtZW50czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNnZXRNSU1FUGFydF9FRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPjxDT0RFPk1JTUVQYWNrYWdlLmdldE1JTUVQYXJ0X0VFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJhZGRFeHRlbnNpYmlsaXR5RWxlbWVudChqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIj48IS0tIC0tPjwvQT48SDM+Ci1hZGRFeHRlbnNpYmlsaXR5RWxlbWVudDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudDwvQj4oamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Jm5ic3A7ZXh0ZW5zaWJpbGl0eUVsZW1lbnQpPC9QUkU+Ci08REw+Ci08REQ+PCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudDwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEV4dGVuc2liaWxpdHlFbGVtZW50czwvSDM+Ci08UFJFPgotamF2YS51dGlsLkxpc3QgPEI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHM8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTUlNRVBhcnQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1JTUVQYXJ0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRUNvbnRlbnQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRUNvbnRlbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE5Y2ZlYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVDb250ZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVDb250ZW50Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVDb250ZW50IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9cY2xhc3MtdXNlTUlNRUNvbnRlbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FQ29udGVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRUNvbnRlbnQ8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUNvbnRlbnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUNvbnRlbnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUNvbnRlbnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVDb250ZW50PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5NSU1FRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwjY3JlYXRlTUlNRUNvbnRlbnQoKSI+Y3JlYXRlTUlNRUNvbnRlbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkNvbnRlbnQ8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvXGNsYXNzLXVzZU1JTUVDb250ZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRUNvbnRlbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRUZhY3RvcnkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRUZhY3RvcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIwNWM0MS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVGYWN0b3J5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVGYWN0b3J5Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVGYWN0b3J5IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9cY2xhc3MtdXNlTUlNRUZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRUZhY3Rvcnk8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUZhY3Rvcnk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUZhY3Rvcnk8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPkZpZWxkcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT4gZGVjbGFyZWQgYXMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FRmFjdG9yeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUZhY3Rvcnk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPk1JTUVGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCNlSU5TVEFOQ0UiPmVJTlNUQU5DRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVGYWN0b3J5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FRmFjdG9yeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+TUlNRVBhY2thZ2UuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sI2dldE1JTUVGYWN0b3J5KCkiPmdldE1JTUVGYWN0b3J5PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWw8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvXGNsYXNzLXVzZU1JTUVGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRUZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRU1pbWVYbWwuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRU1pbWVYbWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjllZjA3MS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVNaW1lWG1sLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNaW1lWG1sCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNaW1lWG1sIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9cY2xhc3MtdXNlTUlNRU1pbWVYbWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FTWltZVhtbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRU1pbWVYbWw8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU1pbWVYbWw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU1pbWVYbWw8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU1pbWVYbWw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNaW1lWG1sPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5NSU1FRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwjY3JlYXRlTUlNRU1pbWVYbWwoKSI+Y3JlYXRlTUlNRU1pbWVYbWw8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk1pbWUgWG1sPC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL1xjbGFzcy11c2VNSU1FTWltZVhtbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1JTUVNaW1lWG1sLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OWI5NGUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2NsYXNzLXVzZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvXGNsYXNzLXVzZU1JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FTXVsdGlwYXJ0UmVsYXRlZDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+TUlNRUZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sI2NyZWF0ZU1JTUVNdWx0aXBhcnRSZWxhdGVkKCkiPmNyZWF0ZU1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5NdWx0aXBhcnQgUmVsYXRlZDwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9cY2xhc3MtdXNlTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2NsYXNzLXVzZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2NsYXNzLXVzZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODZhMDNlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTGl0ZXJhbHMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTGl0ZXJhbHMiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL1xjbGFzcy11c2VNSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZS5MaXRlcmFsczwvQj48L0gyPgotPC9DRU5URVI+Ci1ObyB1c2FnZSBvZiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2UuTGl0ZXJhbHMKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvXGNsYXNzLXVzZU1JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRVBhY2thZ2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRVBhY2thZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUzZWFhNi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVQYWNrYWdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYWNrYWdlIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9cY2xhc3MtdXNlTUlNRVBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNSU1FUGFja2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhY2thZ2U8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPkZpZWxkcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT4gZGVjbGFyZWQgYXMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPk1JTUVQYWNrYWdlLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCNlSU5TVEFOQ0UiPmVJTlNUQU5DRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYWNrYWdlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+TUlNRUZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sI2dldE1JTUVQYWNrYWdlKCkiPmdldE1JTUVQYWNrYWdlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL1xjbGFzcy11c2VNSU1FUGFja2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1JTUVQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVQYXJ0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVQYXJ0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3MDVlNmEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2NsYXNzLXVzZS9NSU1FUGFydC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFydAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFydCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvXGNsYXNzLXVzZU1JTUVQYXJ0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTUlNRVBhcnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYXJ0PC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYXJ0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYXJ0PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVQYXJ0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFydDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+TUlNRUZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sI2NyZWF0ZU1JTUVQYXJ0KCkiPmNyZWF0ZU1JTUVQYXJ0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0PC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL1xjbGFzcy11c2VNSU1FUGFydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1JTUVQYXJ0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1mcmFtZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2UtZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTViYWFmMC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1mcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIHBhY2thZ2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSI+Ci08Rk9OVCBzaXplPSIrMSIgQ0xBU1M9IkZyYW1lVGl0bGVGb250Ij4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+PC9GT05UPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgTk9XUkFQPjxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVIZWFkaW5nRm9udCI+Ci1JbnRlcmZhY2VzPC9GT05UPiZuYnNwOwotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPgotPEJSPgotPEEgSFJFRj0iTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRUNvbnRlbnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iTUlNRUZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRUZhY3Rvcnk8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRU1pbWVYbWw8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRVBhY2thZ2U8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRVBhY2thZ2UuTGl0ZXJhbHM8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+TUlNRVBhcnQ8L0k+PC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTA1ZDJjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUgcGFja2FnZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5QUkVWIFBBQ0tBR0U8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5ORVhUIFBBQ0tBR0U8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEgyPgotUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUKLTwvSDI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+SW50ZXJmYWNlIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FQ29udGVudDwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Db250ZW50PC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FRmFjdG9yeTwvQT48L0I+PC9URD4KLTxURD5UaGUgPGI+RmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU1pbWVYbWw8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWltZSBYbWw8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk11bHRpcGFydCBSZWxhdGVkPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFja2FnZTwvQT48L0I+PC9URD4KLTxURD5UaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhY2thZ2UuTGl0ZXJhbHM8L0E+PC9CPjwvVEQ+Ci08VEQ+RGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudAotIAotICAgZWFjaCBjbGFzcywKLSAgIGVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLAotICAgZWFjaCBlbnVtLAotICAgYW5kIGVhY2ggZGF0YSB0eXBlCi0gCi0gPCE8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRVBhcnQ8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UGFydDwvYj48L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLQotPFA+Ci08REw+Ci08L0RMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+UFJFViBQQUNLQUdFPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+TkVYVCBQQUNLQUdFPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2UtdHJlZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2UtdHJlZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTA4NjFmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXRyZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUgQ2xhc3MgSGllcmFyY2h5Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIENsYXNzIEhpZXJhcmNoeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS10cmVlLmh0bWwiPjxCPlBSRVY8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2UtdHJlZS5odG1sIj48Qj5ORVhUPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci1IaWVyYXJjaHkgRm9yIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lCi08L0gyPgotPC9DRU5URVI+Ci08REw+Ci08RFQ+PEI+UGFja2FnZSBIaWVyYXJjaGllczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+QWxsIFBhY2thZ2VzPC9BPjwvREw+Ci08SFI+Ci08SDI+Ci1JbnRlcmZhY2UgSGllcmFyY2h5Ci08L0gyPgotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPikKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVDb250ZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNaW1lWG1sPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTWltZVhtbCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVQYXJ0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCkKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRUNvbnRlbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTWltZVhtbCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRU1pbWVYbWw8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRVBhcnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRUZhY3Rvcnk8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVQYWNrYWdlPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FUGFja2FnZS5MaXRlcmFsczwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+amF2YS5pby5TZXJpYWxpemFibGU8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudCAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVDb250ZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwgKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FTWltZVhtbDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVQYXJ0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPldTRExFbGVtZW50PC9CPjwvQT48VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRUNvbnRlbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRU1pbWVYbWw8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNaW1lWG1sKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRVBhcnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0KQotPC9VTD4KLTwvVUw+Ci08L1VMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS10cmVlLmh0bWwiPjxCPlBSRVY8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2UtdHJlZS5odG1sIj48Qj5ORVhUPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2UtdXNlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS11c2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwMmZjMi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS11c2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBQYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgUGFja2FnZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotQ2xhc3NlcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT4gdXNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVDb250ZW50Lmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FQ29udGVudDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Db250ZW50PC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2NsYXNzLXVzZS9NSU1FRmFjdG9yeS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRUZhY3Rvcnk8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVNaW1lWG1sLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FTWltZVhtbDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5NaW1lIFhtbDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9jbGFzcy11c2UvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk11bHRpcGFydCBSZWxhdGVkPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL2NsYXNzLXVzZS9NSU1FUGFja2FnZS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRVBhY2thZ2U8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvY2xhc3MtdXNlL01JTUVQYXJ0Lmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FUGFydDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwYTM3OGUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOTcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotU09BUEFkZHJlc3MKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEFkZHJlc3MgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJTT0FQQWRkcmVzcyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NPQVBBZGRyZXNzLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIENMQVNTJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQQWRkcmVzcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIFNPQVBBZGRyZXNzPC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YS5pby5TZXJpYWxpemFibGUsIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+U09BUEFkZHJlc3M8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzczwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFkZHJlc3M8L2I+PC9lbT4nLgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCi0gPHA+Ci0gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotIDx1bD4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Q09ERT48ZW0+TG9jYXRpb24gVVJJPC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gPC91bD4KLSA8L3A+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQWRkcmVzcygpIj48Q09ERT5TT0FQUGFja2FnZS5nZXRTT0FQQWRkcmVzcygpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj5nZXRMb2NhdGlvblVSSTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwjc2V0TG9jYXRpb25VUkkoamF2YS5sYW5nLlN0cmluZykiPnNldExvY2F0aW9uVVJJPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Q09ERT48ZW0+TG9jYXRpb24gVVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudFR5cGUoKSI+Z2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2lzUmVxdWlyZWQoKSI+aXNSZXF1aXJlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0RWxlbWVudFR5cGUoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPnNldEVsZW1lbnRUeXBlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRSZXF1aXJlZChib29sZWFuKSI+c2V0UmVxdWlyZWQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2VsZW1lbnRDaGFuZ2VkKG9yZy53M2MuZG9tLkVsZW1lbnQpIj5lbGVtZW50Q2hhbmdlZDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0Q29udGFpbmVyKCkiPmdldENvbnRhaW5lcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSI+Z2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVsZW1lbnQoKSI+Z2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXREb2N1bWVudGF0aW9uRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoKSI+dXBkYXRlRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudChib29sZWFuKSI+dXBkYXRlRWxlbWVudDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXRSZXF1aXJlZCwgc2V0UmVxdWlyZWQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXRSZXF1aXJlZCwgc2V0UmVxdWlyZWQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRMb2NhdGlvblVSSSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRMb2NhdGlvblVSSTwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRMb2NhdGlvblVSSTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TG9jYXRpb24gVVJJPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldExvY2F0aW9uVVJJPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3M8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sI3NldExvY2F0aW9uVVJJKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXRMb2NhdGlvblVSSShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEFkZHJlc3NfTG9jYXRpb25VUkkoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUEFkZHJlc3NfTG9jYXRpb25VUkkoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRMb2NhdGlvblVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0TG9jYXRpb25VUkk8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0TG9jYXRpb25VUkk8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPjxlbT5Mb2NhdGlvbiBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXRMb2NhdGlvblVSSTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sI2dldExvY2F0aW9uVVJJKCkiPjxDT0RFPmdldExvY2F0aW9uVVJJKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TT0FQQWRkcmVzcy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBDTEFTUyZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEFkZHJlc3MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE3YmRmMC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1TT0FQQmluZGluZwotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQmluZGluZyBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlNPQVBCaW5kaW5nIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU09BUEJpbmRpbmcuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIFNPQVBCaW5kaW5nPC9IMj4KLTxETD4KLTxEVD48Qj5BbGwgU3VwZXJpbnRlcmZhY2VzOjwvQj4gPEREPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCwgamF2YS5pby5TZXJpYWxpemFibGUsIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+U09BUEJpbmRpbmc8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzwvREw+Ci08L1BSRT4KLQotPFA+Ci08IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmc8L2I+PC9lbT4nLgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCi0gPHA+Ci0gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotIDx1bD4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNnZXRUcmFuc3BvcnRVUkkoKSI+PENPREU+PGVtPlRyYW5zcG9ydCBVUkk8L2VtPjwvQ09ERT48L0E+PC9saT4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNnZXRTdHlsZSgpIj48Q09ERT48ZW0+U3R5bGU8L2VtPjwvQ09ERT48L0E+PC9saT4KLSA8L3VsPgotIDwvcD4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCaW5kaW5nKCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBCaW5kaW5nKCk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI2dldFN0eWxlKCkiPmdldFN0eWxlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI2dldFRyYW5zcG9ydFVSSSgpIj5nZXRUcmFuc3BvcnRVUkk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5UcmFuc3BvcnQgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNzZXRTdHlsZShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0U3R5bGU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI2dldFN0eWxlKCkiPjxDT0RFPjxlbT5TdHlsZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI3NldFRyYW5zcG9ydFVSSShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0VHJhbnNwb3J0VVJJPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNnZXRUcmFuc3BvcnRVUkkoKSI+PENPREU+PGVtPlRyYW5zcG9ydCBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldFRyYW5zcG9ydFVSSSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRUcmFuc3BvcnRVUkk8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0VHJhbnNwb3J0VVJJPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VHJhbnNwb3J0IFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VHJhbnNwb3J0IFVSSTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXRUcmFuc3BvcnRVUkk8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlRyYW5zcG9ydCBVUkk8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI3NldFRyYW5zcG9ydFVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+c2V0VHJhbnNwb3J0VVJJKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQmluZGluZ19UcmFuc3BvcnRVUkkoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUEJpbmRpbmdfVHJhbnNwb3J0VVJJKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0VHJhbnNwb3J0VVJJKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRUcmFuc3BvcnRVUkk8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0VHJhbnNwb3J0VVJJPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNnZXRUcmFuc3BvcnRVUkkoKSI+PENPREU+PGVtPlRyYW5zcG9ydCBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zZXRUcmFuc3BvcnRVUkk8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VHJhbnNwb3J0IFVSSTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwjZ2V0VHJhbnNwb3J0VVJJKCkiPjxDT0RFPmdldFRyYW5zcG9ydFVSSSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFN0eWxlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFN0eWxlPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldFN0eWxlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlN0eWxlPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldFN0eWxlPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmc8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5TdHlsZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwjc2V0U3R5bGUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldFN0eWxlKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQmluZGluZ19TdHlsZSgpIj48Q09ERT5TT0FQUGFja2FnZS5nZXRTT0FQQmluZGluZ19TdHlsZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFN0eWxlKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRTdHlsZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRTdHlsZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwjZ2V0U3R5bGUoKSI+PENPREU+PGVtPlN0eWxlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0U3R5bGU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZzwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+U3R5bGU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI2dldFN0eWxlKCkiPjxDT0RFPmdldFN0eWxlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TT0FQQmluZGluZy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBCaW5kaW5nLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNGI3MDYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MzEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotU09BUEJvZHkKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJvZHkgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJTT0FQQm9keSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NPQVBCb2R5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEJvZHkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBTT0FQQm9keTwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD5qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmEuaW8uU2VyaWFsaXphYmxlLCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPlNPQVBCb2R5PC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk8L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Cb2R5PC9iPjwvZW0+Jy4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQotIDxwPgotIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSA8dWw+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0VXNlKCkiPjxDT0RFPjxlbT5Vc2U8L2VtPjwvQ09ERT48L0E+PC9saT4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+PC9saT4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXRFRW5jb2RpbmdTdHlsZXMoKSI+PENPREU+PGVtPkVFbmNvZGluZyBTdHlsZXM8L2VtPjwvQ09ERT48L0E+PC9saT4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXRFUGFydHMoKSI+PENPREU+PGVtPkVQYXJ0czwvZW0+PC9DT0RFPjwvQT48L2xpPgotIDwvdWw+Ci0gPC9wPgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEJvZHkoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUEJvZHkoKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VMaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldEVFbmNvZGluZ1N0eWxlcygpIj5nZXRFRW5jb2RpbmdTdHlsZXM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUxpc3Q8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0RVBhcnRzKCkiPmdldEVQYXJ0czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0czwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPmdldE5hbWVzcGFjZVVSSTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldFVzZSgpIj5nZXRVc2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI3NldE5hbWVzcGFjZVVSSShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TmFtZXNwYWNlVVJJPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNzZXRVc2UoamF2YS5sYW5nLlN0cmluZykiPnNldFVzZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0VXNlKCkiPjxDT0RFPjxlbT5Vc2U8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk8L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT5nZXRFbmNvZGluZ1N0eWxlcywgZ2V0UGFydHMsIHNldEVuY29kaW5nU3R5bGVzLCBzZXRQYXJ0czwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldFVzZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRVc2U8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0VXNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Vc2U8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0VXNlPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Vc2U8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI3NldFVzZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+c2V0VXNlKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQm9keV9Vc2UoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUEJvZHlfVXNlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0VXNlKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRVc2U8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0VXNlPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXRVc2UoKSI+PENPREU+PGVtPlVzZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldFVzZTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Vc2U8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldFVzZSgpIj48Q09ERT5nZXRVc2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXROYW1lc3BhY2VVUkkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TmFtZXNwYWNlVVJJPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldE5hbWVzcGFjZVVSSTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0TmFtZXNwYWNlVVJJPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lc3BhY2UgVVJJPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNzZXROYW1lc3BhY2VVUkkoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldE5hbWVzcGFjZVVSSShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEJvZHlfTmFtZXNwYWNlVVJJKCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBCb2R5X05hbWVzcGFjZVVSSSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldE5hbWVzcGFjZVVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0TmFtZXNwYWNlVVJJPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldE5hbWVzcGFjZVVSSTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPjxlbT5OYW1lc3BhY2UgVVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0TmFtZXNwYWNlVVJJPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHk8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT5nZXROYW1lc3BhY2VVUkkoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFRW5jb2RpbmdTdHlsZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RUVuY29kaW5nU3R5bGVzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFRW5jb2RpbmdTdHlsZXM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLSBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSA8Q09ERT5TdHJpbmc8L0NPREU+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+JyBhdHRyaWJ1dGUgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT4nIGF0dHJpYnV0ZSBsaXN0LjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCb2R5X0VFbmNvZGluZ1N0eWxlcygpIj48Q09ERT5TT0FQUGFja2FnZS5nZXRTT0FQQm9keV9FRW5jb2RpbmdTdHlsZXMoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFUGFydHMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RVBhcnRzPC9IMz4KLTxQUkU+Ci1FTGlzdCA8Qj5nZXRFUGFydHM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FUGFydHM8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PENPREU+UGFydDwvQ09ERT48L0E+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+RVBhcnRzPC9lbT4nIHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVQYXJ0czwvZW0+JyByZWZlcmVuY2UgbGlzdC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQm9keV9FUGFydHMoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUEJvZHlfRVBhcnRzKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TT0FQQm9keS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBCb2R5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNzdiMzMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NTAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotU09BUEZhY3RvcnkKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhY3RvcnkgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJTT0FQRmFjdG9yeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NPQVBGYWN0b3J5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgU09BUEZhY3Rvcnk8L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5TT0FQRmFjdG9yeTwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBUaGUgPGI+RmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4KLSBJdCBwcm92aWRlcyBhIGNyZWF0ZSBtZXRob2QgZm9yIGVhY2ggbm9uLWFic3RyYWN0IGNsYXNzIG9mIHRoZSBtb2RlbC4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+U09BUFBhY2thZ2U8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhY3Rvcnk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2VJTlNUQU5DRSI+ZUlOU1RBTkNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3Rvcnk8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEFkZHJlc3M8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBBZGRyZXNzKCkiPmNyZWF0ZVNPQVBBZGRyZXNzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5BZGRyZXNzPC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJpbmRpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBCaW5kaW5nKCkiPmNyZWF0ZVNPQVBCaW5kaW5nPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJvZHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBCb2R5KCkiPmNyZWF0ZVNPQVBCb2R5PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Cb2R5PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBGYXVsdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjY3JlYXRlU09BUEZhdWx0KCkiPmNyZWF0ZVNPQVBGYXVsdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RmF1bHQ8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXI8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBIZWFkZXIoKSI+Y3JlYXRlU09BUEhlYWRlcjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SGVhZGVyPC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBIZWFkZXJCYXNlKCkiPmNyZWF0ZVNPQVBIZWFkZXJCYXNlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5IZWFkZXIgQmFzZTwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyRmF1bHQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBIZWFkZXJGYXVsdCgpIj5jcmVhdGVTT0FQSGVhZGVyRmF1bHQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkhlYWRlciBGYXVsdDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUE9wZXJhdGlvbjwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjY3JlYXRlU09BUE9wZXJhdGlvbigpIj5jcmVhdGVTT0FQT3BlcmF0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5PcGVyYXRpb248L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjZ2V0U09BUFBhY2thZ2UoKSI+Z2V0U09BUFBhY2thZ2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3Rvcnk8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJlSU5TVEFOQ0UiPjwhLS0gLS0+PC9BPjxIMz4KLWVJTlNUQU5DRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhY3Rvcnk8L0E+IDxCPmVJTlNUQU5DRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImNyZWF0ZVNPQVBCaW5kaW5nKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVNPQVBCaW5kaW5nPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCaW5kaW5nPC9BPiA8Qj5jcmVhdGVTT0FQQmluZGluZzwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZzwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmc8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVTT0FQQm9keSgpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVTT0FQQm9keTwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQm9keTwvQT4gPEI+Y3JlYXRlU09BUEJvZHk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJvZHk8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Cb2R5PC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlU09BUEhlYWRlckJhc2UoKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlU09BUEhlYWRlckJhc2U8L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+IDxCPmNyZWF0ZVNPQVBIZWFkZXJCYXNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5IZWFkZXIgQmFzZTwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkhlYWRlciBCYXNlPC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlU09BUEZhdWx0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVNPQVBGYXVsdDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhdWx0PC9BPiA8Qj5jcmVhdGVTT0FQRmF1bHQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkZhdWx0PC9lbT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RmF1bHQ8L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVTT0FQT3BlcmF0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVNPQVBPcGVyYXRpb248L0gzPgotPFBSRT4KLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQT3BlcmF0aW9uPC9BPiA8Qj5jcmVhdGVTT0FQT3BlcmF0aW9uPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5PcGVyYXRpb248L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5PcGVyYXRpb248L2VtPicuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjcmVhdGVTT0FQQWRkcmVzcygpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVTT0FQQWRkcmVzczwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQWRkcmVzczwvQT4gPEI+Y3JlYXRlU09BUEFkZHJlc3M8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkFkZHJlc3M8L2VtPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5BZGRyZXNzPC9lbT4nLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY3JlYXRlU09BUEhlYWRlckZhdWx0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWNyZWF0ZVNPQVBIZWFkZXJGYXVsdDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckZhdWx0PC9BPiA8Qj5jcmVhdGVTT0FQSGVhZGVyRmF1bHQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkhlYWRlciBGYXVsdDwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkhlYWRlciBGYXVsdDwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImNyZWF0ZVNPQVBIZWFkZXIoKSI+PCEtLSAtLT48L0E+PEgzPgotY3JlYXRlU09BUEhlYWRlcjwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXI8L0E+IDxCPmNyZWF0ZVNPQVBIZWFkZXI8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkhlYWRlcjwvZW0+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkhlYWRlcjwvZW0+Jy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFNPQVBQYWNrYWdlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBQYWNrYWdlPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPiA8Qj5nZXRTT0FQUGFja2FnZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NPQVBGYWN0b3J5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjM2I2NC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MjQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotU09BUEZhdWx0Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlNPQVBGYXVsdCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NPQVBGYXVsdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIFNPQVBGYXVsdDwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD5qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmEuaW8uU2VyaWFsaXphYmxlLCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5TT0FQRmF1bHQ8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ8L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GYXVsdDwvYj48L2VtPicuCi0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0KLSA8cD4KLSBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6Ci0gPHVsPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXRVc2UoKSI+PENPREU+PGVtPlVzZTwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+PC9saT4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT48L2xpPgotIDwvdWw+Ci0gPC9wPgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhdWx0KCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBGYXVsdCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj5nZXROYW1lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj5nZXROYW1lc3BhY2VVUkk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0VXNlKCkiPmdldFVzZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPnNldE5hbWU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPjxlbT5OYW1lPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI3NldE5hbWVzcGFjZVVSSShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TmFtZXNwYWNlVVJJPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPjxlbT5OYW1lc3BhY2UgVVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI3NldFVzZShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0VXNlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0VXNlKCkiPjxDT0RFPjxlbT5Vc2U8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldEVuY29kaW5nU3R5bGVzLCBzZXRFbmNvZGluZ1N0eWxlczwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldFVzZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRVc2U8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0VXNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Vc2U8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0VXNlPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+VXNlPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjc2V0VXNlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXRVc2UoU3RyaW5nKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBGYXVsdF9Vc2UoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUEZhdWx0X1VzZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldFVzZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0VXNlPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldFVzZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI2dldFVzZSgpIj48Q09ERT48ZW0+VXNlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0VXNlPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Vc2U8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXRVc2UoKSI+PENPREU+Z2V0VXNlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TmFtZXNwYWNlVVJJKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE5hbWVzcGFjZVVSSTwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXROYW1lc3BhY2VVUkk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lc3BhY2UgVVJJPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmdldE5hbWVzcGFjZVVSSTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdDwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNzZXROYW1lc3BhY2VVUkkoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldE5hbWVzcGFjZVVSSShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhdWx0X05hbWVzcGFjZVVSSSgpIj48Q09ERT5TT0FQUGFja2FnZS5nZXRTT0FQRmF1bHRfTmFtZXNwYWNlVVJJKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0TmFtZXNwYWNlVVJJKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXROYW1lc3BhY2VVUkk8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0TmFtZXNwYWNlVVJJPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPjxlbT5OYW1lc3BhY2UgVVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0TmFtZXNwYWNlVVJJPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lc3BhY2UgVVJJPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPmdldE5hbWVzcGFjZVVSSSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE5hbWUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TmFtZTwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXROYW1lPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXROYW1lPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI3NldE5hbWUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldE5hbWUoU3RyaW5nKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBGYXVsdF9OYW1lKCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBGYXVsdF9OYW1lKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0TmFtZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0TmFtZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXROYW1lPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldE5hbWU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQ8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk5hbWU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXROYW1lKCkiPjxDT0RFPmdldE5hbWUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NPQVBGYXVsdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRkZGY2MS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjgwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVNPQVBIZWFkZXIKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlciBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlNPQVBIZWFkZXIiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TT0FQSGVhZGVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEhlYWRlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIFNPQVBIZWFkZXI8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LCBqYXZhLmlvLlNlcmlhbGl6YWJsZSwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlciwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5TT0FQSGVhZGVyPC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyPC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SGVhZGVyPC9iPjwvZW0+Jy4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQotIDxwPgotIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSA8dWw+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCNnZXRIZWFkZXJGYXVsdHMoKSI+PENPREU+PGVtPkhlYWRlciBGYXVsdHM8L2VtPjwvQ09ERT48L0E+PC9saT4KLSA8L3VsPgotIDwvcD4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXIoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUEhlYWRlcigpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUxpc3Q8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCNnZXRIZWFkZXJGYXVsdHMoKSI+Z2V0SGVhZGVyRmF1bHRzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+SGVhZGVyIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2UiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFRW5jb2RpbmdTdHlsZXMoKSI+Z2V0RUVuY29kaW5nU3R5bGVzPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RU1lc3NhZ2UoKSI+Z2V0RU1lc3NhZ2U8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFbmNvZGluZ1N0eWxlcygpIj5nZXRFbmNvZGluZ1N0eWxlczwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVQYXJ0KCkiPmdldEVQYXJ0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TWVzc2FnZSgpIj5nZXRNZXNzYWdlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPmdldE5hbWVzcGFjZVVSSTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldFBhcnQoKSI+Z2V0UGFydDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldFVzZSgpIj5nZXRVc2U8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRFTWVzc2FnZShvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlKSI+c2V0RU1lc3NhZ2U8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRFbmNvZGluZ1N0eWxlcyhqYXZhLnV0aWwuTGlzdCkiPnNldEVuY29kaW5nU3R5bGVzPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0RVBhcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCkiPnNldEVQYXJ0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0TWVzc2FnZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0TWVzc2FnZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldE5hbWVzcGFjZVVSSShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TmFtZXNwYWNlVVJJPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0UGFydChqYXZhLmxhbmcuU3RyaW5nKSI+c2V0UGFydDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldFVzZShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0VXNlPC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyPC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+YWRkU09BUEhlYWRlckZhdWx0LCBnZXRFbmNvZGluZ1N0eWxlcywgZ2V0TWVzc2FnZSwgZ2V0TmFtZXNwYWNlVVJJLCBnZXRQYXJ0LCBnZXRTT0FQSGVhZGVyRmF1bHRzLCBnZXRVc2UsIHNldEVuY29kaW5nU3R5bGVzLCBzZXRNZXNzYWdlLCBzZXROYW1lc3BhY2VVUkksIHNldFBhcnQsIHNldFVzZTwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldEhlYWRlckZhdWx0cygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRIZWFkZXJGYXVsdHM8L0gzPgotPFBSRT4KLUVMaXN0IDxCPmdldEhlYWRlckZhdWx0czwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkhlYWRlciBGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPlNPQVBIZWFkZXJGYXVsdDwvQ09ERT48L0E+LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+SGVhZGVyIEZhdWx0czwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5IZWFkZXIgRmF1bHRzPC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXJfSGVhZGVyRmF1bHRzKCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBIZWFkZXJfSGVhZGVyRmF1bHRzKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TT0FQSGVhZGVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEhlYWRlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODM4MmNmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjYxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVNPQVBIZWFkZXJCYXNlCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iU09BUEhlYWRlckJhc2UiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TT0FQSGVhZGVyQmFzZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBIZWFkZXJCYXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgU09BUEhlYWRlckJhc2U8L0gyPgotPERMPgotPERUPjxCPkFsbCBTdXBlcmludGVyZmFjZXM6PC9CPiA8REQ+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxETD4KLTxEVD48Qj5BbGwgS25vd24gU3ViaW50ZXJmYWNlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlcjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJGYXVsdDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+U09BUEhlYWRlckJhc2U8L0I+PERUPmV4dGVuZHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9ETD4KLTwvUFJFPgotCi08UD4KLTwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SGVhZGVyIEJhc2U8L2I+PC9lbT4nLgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCi0gPHA+Ci0gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotIDx1bD4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRVc2UoKSI+PENPREU+PGVtPlVzZTwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT48ZW0+TmFtZXNwYWNlIFVSSTwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVFbmNvZGluZ1N0eWxlcygpIj48Q09ERT48ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldE1lc3NhZ2UoKSI+PENPREU+PGVtPk1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+PC9saT4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRQYXJ0KCkiPjxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RU1lc3NhZ2UoKSI+PENPREU+PGVtPkVNZXNzYWdlPC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gICA8bGk+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gPC91bD4KLSA8L3A+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyQmFzZSgpIj48Q09ERT5TT0FQUGFja2FnZS5nZXRTT0FQSGVhZGVyQmFzZSgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUxpc3Q8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RUVuY29kaW5nU3R5bGVzKCkiPmdldEVFbmNvZGluZ1N0eWxlczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVFbmNvZGluZyBTdHlsZXM8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVNZXNzYWdlKCkiPmdldEVNZXNzYWdlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTGlzdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFbmNvZGluZ1N0eWxlcygpIj5nZXRFbmNvZGluZ1N0eWxlczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVQYXJ0KCkiPmdldEVQYXJ0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldE1lc3NhZ2UoKSI+Z2V0TWVzc2FnZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj5nZXROYW1lc3BhY2VVUkk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRQYXJ0KCkiPmdldFBhcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRVc2UoKSI+Z2V0VXNlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRFTWVzc2FnZShvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlKSI+c2V0RU1lc3NhZ2U8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldEVuY29kaW5nU3R5bGVzKGphdmEudXRpbC5MaXN0KSI+c2V0RW5jb2RpbmdTdHlsZXM8L0E+PC9CPihqYXZhLnV0aWwuTGlzdCZuYnNwO2VuY29kaW5nU3R5bGVzKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0RVBhcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCkiPnNldEVQYXJ0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPiZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFUGFydCgpIj48Q09ERT48ZW0+RVBhcnQ8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRNZXNzYWdlKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj5zZXRNZXNzYWdlPC9BPjwvQj4oamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRNZXNzYWdlKCkiPjxDT0RFPjxlbT5NZXNzYWdlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0TmFtZXNwYWNlVVJJKGphdmEubGFuZy5TdHJpbmcpIj5zZXROYW1lc3BhY2VVUkk8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT48ZW0+TmFtZXNwYWNlIFVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldFBhcnQoamF2YS5sYW5nLlN0cmluZykiPnNldFBhcnQ8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldFBhcnQoKSI+PENPREU+PGVtPlBhcnQ8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRVc2UoamF2YS5sYW5nLlN0cmluZykiPnNldFVzZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0VXNlKCkiPjxDT0RFPjxlbT5Vc2U8L2VtPjwvQ09ERT48L0E+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNnZXRFbGVtZW50VHlwZSgpIj5nZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjaXNSZXF1aXJlZCgpIj5pc1JlcXVpcmVkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNzZXRFbGVtZW50VHlwZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+c2V0RWxlbWVudFR5cGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldFJlcXVpcmVkKGJvb2xlYW4pIj5zZXRSZXF1aXJlZDwvQT48L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZWxlbWVudENoYW5nZWQob3JnLnczYy5kb20uRWxlbWVudCkiPmVsZW1lbnRDaGFuZ2VkPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXREb2N1bWVudGF0aW9uRWxlbWVudCgpIj5nZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RWxlbWVudCgpIj5nZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbmNsb3NpbmdEZWZpbml0aW9uKCkiPmdldEVuY2xvc2luZ0RlZmluaXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldERvY3VtZW50YXRpb25FbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXREb2N1bWVudGF0aW9uRWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50KSI+c2V0RWxlbWVudDwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjdXBkYXRlRWxlbWVudCgpIj51cGRhdGVFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KGJvb2xlYW4pIj51cGRhdGVFbGVtZW50PC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmdldFJlcXVpcmVkLCBzZXRSZXF1aXJlZDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldFVzZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRVc2U8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0VXNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Vc2U8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVzZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0VXNlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXRVc2UoU3RyaW5nKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXJCYXNlX1VzZSgpIj48Q09ERT5TT0FQUGFja2FnZS5nZXRTT0FQSGVhZGVyQmFzZV9Vc2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRVc2UoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldFVzZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRVc2U8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldFVzZSgpIj48Q09ERT48ZW0+VXNlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VXNlPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRVc2UoKSI+PENPREU+Z2V0VXNlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0TmFtZXNwYWNlVVJJKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE5hbWVzcGFjZVVSSTwvSDM+Ci08UFJFPgotamF2YS5sYW5nLlN0cmluZyA8Qj5nZXROYW1lc3BhY2VVUkk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lc3BhY2UgVVJJPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lc3BhY2UgVVJJPC9lbT4nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXROYW1lc3BhY2VVUkkoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldE5hbWVzcGFjZVVSSShTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfTmFtZXNwYWNlVVJJKCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBIZWFkZXJCYXNlX05hbWVzcGFjZVVSSSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldE5hbWVzcGFjZVVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0TmFtZXNwYWNlVVJJPC9IMz4KLTxQUkU+Ci12b2lkIDxCPnNldE5hbWVzcGFjZVVSSTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPjxlbT5OYW1lc3BhY2UgVVJJPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPmdldE5hbWVzcGFjZVVSSSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVFbmNvZGluZ1N0eWxlcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFRW5jb2RpbmdTdHlsZXM8L0gzPgotPFBSRT4KLUVMaXN0IDxCPmdldEVFbmNvZGluZ1N0eWxlczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVFbmNvZGluZyBTdHlsZXM8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0LgotIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIDxDT0RFPlN0cmluZzwvQ09ERT4uCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8cD4KLSBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT4nIGF0dHJpYnV0ZSBsaXN0IGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPkVFbmNvZGluZyBTdHlsZXM8L2VtPicgYXR0cmlidXRlIGxpc3QuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfRUVuY29kaW5nU3R5bGVzKCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBIZWFkZXJCYXNlX0VFbmNvZGluZ1N0eWxlcygpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVNZXNzYWdlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVNZXNzYWdlPC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+IDxCPmdldEVNZXNzYWdlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVNZXNzYWdlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FTWVzc2FnZTwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0RU1lc3NhZ2Uob3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSkiPjxDT0RFPnNldEVNZXNzYWdlKE1lc3NhZ2UpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfRU1lc3NhZ2UoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUEhlYWRlckJhc2VfRU1lc3NhZ2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFTWVzc2FnZShvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RU1lc3NhZ2U8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RU1lc3NhZ2U8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVNZXNzYWdlPC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT5nZXRFTWVzc2FnZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEVQYXJ0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVQYXJ0PC9IMz4KLTxQUkU+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+IDxCPmdldEVQYXJ0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkVQYXJ0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKLSB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0gPC9wPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FUGFydDwvZW0+JyByZWZlcmVuY2UuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0RVBhcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCkiPjxDT0RFPnNldEVQYXJ0KFBhcnQpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfRVBhcnQoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUEhlYWRlckJhc2VfRVBhcnQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRFUGFydChvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0KSI+PCEtLSAtLT48L0E+PEgzPgotc2V0RVBhcnQ8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0RVBhcnQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT4mbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVQYXJ0KCkiPjxDT0RFPjxlbT5FUGFydDwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVQYXJ0PC9lbT4nIHJlZmVyZW5jZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFUGFydCgpIj48Q09ERT5nZXRFUGFydCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE1lc3NhZ2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TWVzc2FnZTwvSDM+Ci08UFJFPgotamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSA8Qj5nZXRNZXNzYWdlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPk1lc3NhZ2U8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldE1lc3NhZ2UoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkiPjxDT0RFPnNldE1lc3NhZ2UoUU5hbWUpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfTWVzc2FnZSgpIj48Q09ERT5TT0FQUGFja2FnZS5nZXRTT0FQSGVhZGVyQmFzZV9NZXNzYWdlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0TWVzc2FnZShqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0TWVzc2FnZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRNZXNzYWdlPC9CPihqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRNZXNzYWdlKCkiPjxDT0RFPjxlbT5NZXNzYWdlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TWVzc2FnZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TWVzc2FnZSgpIj48Q09ERT5nZXRNZXNzYWdlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0UGFydCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRQYXJ0PC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldFBhcnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+UGFydDwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0UGFydChqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+c2V0UGFydChTdHJpbmcpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfUGFydCgpIj48Q09ERT5TT0FQUGFja2FnZS5nZXRTT0FQSGVhZGVyQmFzZV9QYXJ0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0UGFydChqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0UGFydDwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRQYXJ0PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRQYXJ0KCkiPjxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+UGFydDwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0UGFydCgpIj48Q09ERT5nZXRQYXJ0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RW5jb2RpbmdTdHlsZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RW5jb2RpbmdTdHlsZXM8L0gzPgotPFBSRT4KLWphdmEudXRpbC5MaXN0IDxCPmdldEVuY29kaW5nU3R5bGVzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0RW5jb2RpbmdTdHlsZXMoamF2YS51dGlsLkxpc3QpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRFbmNvZGluZ1N0eWxlczwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRFbmNvZGluZ1N0eWxlczwvQj4oamF2YS51dGlsLkxpc3QmbmJzcDtlbmNvZGluZ1N0eWxlcyk8L1BSRT4KLTxETD4KLTxERD48IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NPQVBIZWFkZXJCYXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEhlYWRlckJhc2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmMyMTYyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1TT0FQSGVhZGVyRmF1bHQKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckZhdWx0IGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iU09BUEhlYWRlckZhdWx0IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU09BUEhlYWRlckZhdWx0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9GT05UPgotPEJSPgotSW50ZXJmYWNlIFNPQVBIZWFkZXJGYXVsdDwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD5qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmEuaW8uU2VyaWFsaXphYmxlLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+U09BUEhlYWRlckZhdWx0PC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQ8L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXIgRmF1bHQ8L2I+PC9lbT4nLgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci0KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckZhdWx0KCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBIZWFkZXJGYXVsdCgpPC9DT0RFPjwvQT48L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyQmFzZSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVFbmNvZGluZ1N0eWxlcygpIj5nZXRFRW5jb2RpbmdTdHlsZXM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFTWVzc2FnZSgpIj5nZXRFTWVzc2FnZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVuY29kaW5nU3R5bGVzKCkiPmdldEVuY29kaW5nU3R5bGVzPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RVBhcnQoKSI+Z2V0RVBhcnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRNZXNzYWdlKCkiPmdldE1lc3NhZ2U8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+Z2V0TmFtZXNwYWNlVVJJPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0UGFydCgpIj5nZXRQYXJ0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0VXNlKCkiPmdldFVzZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldEVNZXNzYWdlKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpIj5zZXRFTWVzc2FnZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldEVuY29kaW5nU3R5bGVzKGphdmEudXRpbC5MaXN0KSI+c2V0RW5jb2RpbmdTdHlsZXM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRFUGFydChvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0KSI+c2V0RVBhcnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRNZXNzYWdlKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj5zZXRNZXNzYWdlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0TmFtZXNwYWNlVVJJKGphdmEubGFuZy5TdHJpbmcpIj5zZXROYW1lc3BhY2VVUkk8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNzZXRQYXJ0KGphdmEubGFuZy5TdHJpbmcpIj5zZXRQYXJ0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0VXNlKGphdmEubGFuZy5TdHJpbmcpIj5zZXRVc2U8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldEVsZW1lbnRUeXBlKCkiPmdldEVsZW1lbnRUeXBlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPmlzUmVxdWlyZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldEVsZW1lbnRUeXBlKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj5zZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0UmVxdWlyZWQoYm9vbGVhbikiPnNldFJlcXVpcmVkPC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNlbGVtZW50Q2hhbmdlZChvcmcudzNjLmRvbS5FbGVtZW50KSI+ZWxlbWVudENoYW5nZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPmdldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPmdldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVuY2xvc2luZ0RlZmluaXRpb24oKSI+Z2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj5zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KCkiPnVwZGF0ZUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPnVwZGF0ZUVsZW1lbnQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+Z2V0UmVxdWlyZWQsIHNldFJlcXVpcmVkPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+Z2V0RW5jb2RpbmdTdHlsZXMsIGdldE1lc3NhZ2UsIGdldE5hbWVzcGFjZVVSSSwgZ2V0UGFydCwgZ2V0VXNlLCBzZXRFbmNvZGluZ1N0eWxlcywgc2V0TWVzc2FnZSwgc2V0TmFtZXNwYWNlVVJJLCBzZXRQYXJ0LCBzZXRVc2U8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TT0FQSGVhZGVyRmF1bHQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7TUVUSE9EPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTUwYzI2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNTYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotU09BUE9wZXJhdGlvbgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQT3BlcmF0aW9uIGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iU09BUE9wZXJhdGlvbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NPQVBPcGVyYXRpb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQT3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgU09BUE9wZXJhdGlvbjwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIFN1cGVyaW50ZXJmYWNlczo8L0I+IDxERD5qYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQsIGphdmEuaW8uU2VyaWFsaXphYmxlLCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uLCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT48L0REPgotPC9ETD4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBpbnRlcmZhY2UgPEI+U09BUE9wZXJhdGlvbjwvQj48RFQ+ZXh0ZW5kcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb248L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5PcGVyYXRpb248L2I+PC9lbT4nLgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCi0gPHA+Ci0gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgotIDx1bD4KLSAgIDxsaT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sI2dldFNvYXBBY3Rpb25VUkkoKSI+PENPREU+PGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT48L2xpPgotICAgPGxpPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U3R5bGUoKSI+PENPREU+PGVtPlN0eWxlPC9lbT48L0NPREU+PC9BPjwvbGk+Ci0gPC91bD4KLSA8L3A+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQT3BlcmF0aW9uKCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBPcGVyYXRpb24oKTwvQ09ERT48L0E+PC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCNnZXRTb2FwQWN0aW9uVVJJKCkiPmdldFNvYXBBY3Rpb25VUkk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Tb2FwIEFjdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U3R5bGUoKSI+Z2V0U3R5bGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCNzZXRTb2FwQWN0aW9uVVJJKGphdmEubGFuZy5TdHJpbmcpIj5zZXRTb2FwQWN0aW9uVVJJPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sI2dldFNvYXBBY3Rpb25VUkkoKSI+PENPREU+PGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjc2V0U3R5bGUoamF2YS5sYW5nLlN0cmluZykiPnNldFN0eWxlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sI2dldFN0eWxlKCkiPjxDT0RFPjxlbT5TdHlsZTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0Ij48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0I+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI2dldEVsZW1lbnRUeXBlKCkiPmdldEVsZW1lbnRUeXBlPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNpc1JlcXVpcmVkKCkiPmlzUmVxdWlyZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI3NldEVsZW1lbnRUeXBlKGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUpIj5zZXRFbGVtZW50VHlwZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjc2V0UmVxdWlyZWQoYm9vbGVhbikiPnNldFJlcXVpcmVkPC9BPjwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNlbGVtZW50Q2hhbmdlZChvcmcudzNjLmRvbS5FbGVtZW50KSI+ZWxlbWVudENoYW5nZWQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldERvY3VtZW50YXRpb25FbGVtZW50KCkiPmdldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNnZXRFbGVtZW50KCkiPmdldEVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldEVuY2xvc2luZ0RlZmluaXRpb24oKSI+Z2V0RW5jbG9zaW5nRGVmaW5pdGlvbjwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3JnLnczYy5kb20uRWxlbWVudCkiPnNldERvY3VtZW50YXRpb25FbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbGVtZW50KG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXRFbGVtZW50PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCNzZXRFbmNsb3NpbmdEZWZpbml0aW9uKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pIj5zZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCN1cGRhdGVFbGVtZW50KCkiPnVwZGF0ZUVsZW1lbnQ8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3VwZGF0ZUVsZW1lbnQoYm9vbGVhbikiPnVwZGF0ZUVsZW1lbnQ8L0E+PC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+Z2V0UmVxdWlyZWQsIHNldFJlcXVpcmVkPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+Z2V0UmVxdWlyZWQsIHNldFJlcXVpcmVkPC9DT0RFPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0U29hcEFjdGlvblVSSSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTb2FwQWN0aW9uVVJJPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldFNvYXBBY3Rpb25VUkk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Tb2FwIEFjdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDxwPgotIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUgaXNuJ3QgY2xlYXIsCi0gdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotIDwvcD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5nZXRTb2FwQWN0aW9uVVJJPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbjwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIG9mIHRoZSAnPGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCNzZXRTb2FwQWN0aW9uVVJJKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5zZXRTb2FwQWN0aW9uVVJJKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQT3BlcmF0aW9uX1NvYXBBY3Rpb25VUkkoKSI+PENPREU+U09BUFBhY2thZ2UuZ2V0U09BUE9wZXJhdGlvbl9Tb2FwQWN0aW9uVVJJKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0U29hcEFjdGlvblVSSShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0U29hcEFjdGlvblVSSTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXRTb2FwQWN0aW9uVVJJPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sI2dldFNvYXBBY3Rpb25VUkkoKSI+PENPREU+PGVtPlNvYXAgQWN0aW9uIFVSSTwvZW0+PC9DT0RFPjwvQT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldFNvYXBBY3Rpb25VUkk8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Tb2FwIEFjdGlvbiBVUkk8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U29hcEFjdGlvblVSSSgpIj48Q09ERT5nZXRTb2FwQWN0aW9uVVJJKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U3R5bGUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U3R5bGU8L0gzPgotPFBSRT4KLWphdmEubGFuZy5TdHJpbmcgPEI+Z2V0U3R5bGU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPHA+Ci0gSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U3R5bGU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLAotIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4KLSA8L3A+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Z2V0U3R5bGU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgb2YgdGhlICc8ZW0+U3R5bGU8L2VtPicgYXR0cmlidXRlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjc2V0U3R5bGUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPnNldFN0eWxlKFN0cmluZyk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQT3BlcmF0aW9uX1N0eWxlKCkiPjxDT0RFPlNPQVBQYWNrYWdlLmdldFNPQVBPcGVyYXRpb25fU3R5bGUoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXRTdHlsZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0U3R5bGU8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0U3R5bGU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U3R5bGUoKSI+PENPREU+PGVtPlN0eWxlPC9lbT48L0NPREU+PC9BPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c2V0U3R5bGU8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5TdHlsZTwvZW0+JyBhdHRyaWJ1dGUuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCNnZXRTdHlsZSgpIj48Q09ERT5nZXRTdHlsZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU09BUE9wZXJhdGlvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZiMGU2My4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMjkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotU09BUFBhY2thZ2UuTGl0ZXJhbHMKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuTGl0ZXJhbHMgaW50ZXJmYWNlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJTT0FQUGFja2FnZS5MaXRlcmFscyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7TkVYVCBDTEFTUzwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDtNRVRIT0Q8L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBTT0FQUGFja2FnZS5MaXRlcmFsczwvSDI+Ci08REw+Ci08RFQ+PEI+RW5jbG9zaW5nIGludGVyZmFjZTo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+PC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgc3RhdGljIGludGVyZmFjZSA8Qj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBEZWZpbmVzIGxpdGVyYWxzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRoYXQgcmVwcmVzZW50Ci0gPHVsPgotICAgPGxpPmVhY2ggY2xhc3MsPC9saT4KLSAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPgotICAgPGxpPmVhY2ggZW51bSw8L2xpPgotICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+Ci0gPC91bD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci08IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI0lTT0FQX0FERFJFU1MiPklTT0FQX0FERFJFU1M8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIEFkZHJlc3M8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJU09BUF9CSU5ESU5HIj5JU09BUF9CSU5ESU5HPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSVNPQVBfQk9EWSI+SVNPQVBfQk9EWTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgQm9keTwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI0lTT0FQX0ZBVUxUIj5JU09BUF9GQVVMVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJU09BUF9IRUFERVIiPklTT0FQX0hFQURFUjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgSGVhZGVyPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjSVNPQVBfSEVBREVSX0ZBVUxUIj5JU09BUF9IRUFERVJfRkFVTFQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIEhlYWRlciBGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI0lTT0FQX09QRVJBVElPTiI+SVNPQVBfT1BFUkFUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VEYXRhVHlwZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNJU1RSSU5HIj5JU1RSSU5HPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT5JU3RyaW5nPC9lbT4nIGRhdGEgdHlwZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9BRERSRVNTIj5TT0FQX0FERFJFU1M8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkFkZHJlc3M8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9BRERSRVNTX19MT0NBVElPTl9VUkkiPlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0JJTkRJTkciPlNPQVBfQklORElORzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZzwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0JJTkRJTkdfX1NUWUxFIj5TT0FQX0JJTkRJTkdfX1NUWUxFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkkiPlNPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHJhbnNwb3J0IFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfQk9EWSI+U09BUF9CT0RZPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5Cb2R5PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUyI+U09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdCBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9CT0RZX19FUEFSVFMiPlNPQVBfQk9EWV9fRVBBUlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUGFydHM8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0JPRFlfX05BTUVTUEFDRV9VUkkiPlNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0JPRFlfX1VTRSI+U09BUF9CT0RZX19VU0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfRkFVTFQiPlNPQVBfRkFVTFQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkZhdWx0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVMiPlNPQVBfRkFVTFRfX0VFTkNPRElOR19TVFlMRVM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVFbmNvZGluZyBTdHlsZXM8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0IGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0ZBVUxUX19OQU1FIj5TT0FQX0ZBVUxUX19OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkkiPlNPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9GQVVMVF9fVVNFIj5TT0FQX0ZBVUxUX19VU0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfSEVBREVSIj5TT0FQX0hFQURFUjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SGVhZGVyPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfSEVBREVSX19IRUFERVJfRkFVTFRTIj5TT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+SGVhZGVyIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRSI+U09BUF9IRUFERVJfQkFTRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SGVhZGVyIEJhc2U8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUyI+U09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFIj5TT0FQX0hFQURFUl9CQVNFX19FTUVTU0FHRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fRVBBUlQiPlNPQVBfSEVBREVSX0JBU0VfX0VQQVJUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFIj5TT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5NZXNzYWdlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sI1NPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkkiPlNPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fUEFSVCI+U09BUF9IRUFERVJfQkFTRV9fUEFSVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UGFydDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19VU0UiPlNPQVBfSEVBREVSX0JBU0VfX1VTRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9IRUFERVJfRkFVTFQiPlNPQVBfSEVBREVSX0ZBVUxUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5IZWFkZXIgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX09QRVJBVElPTiI+U09BUF9PUEVSQVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPk9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCNTT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJIj5TT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Tb2FwIEFjdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwjU09BUF9PUEVSQVRJT05fX1NUWUxFIj5TT0FQX09QRVJBVElPTl9fU1RZTEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlN0eWxlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9IlNPQVBfQklORElORyI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CSU5ESU5HPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPlNPQVBfQklORElORzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+QmluZGluZzwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U09BUEJpbmRpbmdJbXBsPC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0U09BUEJpbmRpbmcoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9CSU5ESU5HX19UUkFOU1BPUlRfVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlNPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VHJhbnNwb3J0IFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQklORElOR19fU1RZTEUiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfQklORElOR19fU1RZTEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlNPQVBfQklORElOR19fU1RZTEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlN0eWxlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9CT0RZIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0JPRFk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+U09BUF9CT0RZPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5Cb2R5PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQQm9keUltcGw8L0NPREU+LCAKLTxDT0RFPlNPQVBQYWNrYWdlSW1wbC5nZXRTT0FQQm9keSgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0JPRFlfX1VTRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CT0RZX19VU0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlNPQVBfQk9EWV9fVVNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0JPRFlfX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U09BUF9CT0RZX19OQU1FU1BBQ0VfVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0JPRFlfX0VFTkNPRElOR19TVFlMRVM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlNPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9CT0RZX19FUEFSVFMiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfQk9EWV9fRVBBUlRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5TT0FQX0JPRFlfX0VQQVJUUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RVBhcnRzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9CQVNFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPlNPQVBfSEVBREVSX0JBU0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkhlYWRlciBCYXNlPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQSGVhZGVyQmFzZUltcGw8L0NPREU+LCAKLTxDT0RFPlNPQVBQYWNrYWdlSW1wbC5nZXRTT0FQSGVhZGVyQmFzZSgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFX19VU0UiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX0JBU0VfX1VTRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U09BUF9IRUFERVJfQkFTRV9fVVNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5TT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUyI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0JBU0VfX1BBUlQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX0JBU0VfX1BBUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlNPQVBfSEVBREVSX0JBU0VfX1BBUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFX19FTUVTU0FHRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFUmVmZXJlbmNlIDxCPlNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0JBU0VfX0VQQVJUIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9CQVNFX19FUEFSVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVSZWZlcmVuY2UgPEI+U09BUF9IRUFERVJfQkFTRV9fRVBBUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9GQVVMVCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9GQVVMVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5TT0FQX0ZBVUxUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5GYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U09BUEZhdWx0SW1wbDwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldFNPQVBGYXVsdCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0ZBVUxUX19VU0UiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfRkFVTFRfX1VTRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U09BUF9GQVVMVF9fVVNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUF0dHJpYnV0ZSA8Qj5TT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUyI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U09BUF9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9GQVVMVF9fTkFNRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9GQVVMVF9fTkFNRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U09BUF9GQVVMVF9fTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfT1BFUkFUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX09QRVJBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5TT0FQX09QRVJBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQT3BlcmF0aW9uSW1wbDwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldFNPQVBPcGVyYXRpb24oKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U29hcCBBY3Rpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9PUEVSQVRJT05fX1NUWUxFIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX09QRVJBVElPTl9fU1RZTEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQXR0cmlidXRlIDxCPlNPQVBfT1BFUkFUSU9OX19TVFlMRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U3R5bGU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0FERFJFU1MiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfQUREUkVTUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5TT0FQX0FERFJFU1M8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPkFkZHJlc3M8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlNPQVBBZGRyZXNzSW1wbDwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldFNPQVBBZGRyZXNzKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVBdHRyaWJ1dGUgPEI+U09BUF9BRERSRVNTX19MT0NBVElPTl9VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkxvY2F0aW9uIFVSSTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0ZBVUxUIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9GQVVMVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5TT0FQX0hFQURFUl9GQVVMVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SGVhZGVyIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQSGVhZGVyRmF1bHRJbXBsPC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0U09BUEhlYWRlckZhdWx0KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5TT0FQX0hFQURFUjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SGVhZGVyPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQSGVhZGVySW1wbDwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldFNPQVBIZWFkZXIoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFMiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX19IRUFERVJfRkFVTFRTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRVJlZmVyZW5jZSA8Qj5TT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+SGVhZGVyIEZhdWx0czwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVNPQVBfQklORElORyI+PCEtLSAtLT48L0E+PEgzPgotSVNPQVBfQklORElORzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JU09BUF9CSU5ESU5HPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQQmluZGluZzwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldElTT0FQQmluZGluZygpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9BRERSRVNTIj48IS0tIC0tPjwvQT48SDM+Ci1JU09BUF9BRERSRVNTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklTT0FQX0FERFJFU1M8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIEFkZHJlc3M8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlNPQVBBZGRyZXNzPC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0SVNPQVBBZGRyZXNzKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklTT0FQX0JPRFkiPjwhLS0gLS0+PC9BPjxIMz4KLUlTT0FQX0JPRFk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBFQ2xhc3MgPEI+SVNPQVBfQk9EWTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgQm9keTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U09BUEJvZHk8L0NPREU+LCAKLTxDT0RFPlNPQVBQYWNrYWdlSW1wbC5nZXRJU09BUEJvZHkoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVNPQVBfRkFVTFQiPjwhLS0gLS0+PC9BPjxIMz4KLUlTT0FQX0ZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklTT0FQX0ZBVUxUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U09BUEZhdWx0PC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0SVNPQVBGYXVsdCgpPC9DT0RFPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9PUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUlTT0FQX09QRVJBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVDbGFzcyA8Qj5JU09BUF9PUEVSQVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIE9wZXJhdGlvbjwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U09BUE9wZXJhdGlvbjwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldElTT0FQT3BlcmF0aW9uKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklTT0FQX0hFQURFUl9GQVVMVCI+PCEtLSAtLT48L0E+PEgzPgotSVNPQVBfSEVBREVSX0ZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklTT0FQX0hFQURFUl9GQVVMVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgSGVhZGVyIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQSGVhZGVyRmF1bHQ8L0NPREU+LCAKLTxDT0RFPlNPQVBQYWNrYWdlSW1wbC5nZXRJU09BUEhlYWRlckZhdWx0KCk8L0NPREU+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklTT0FQX0hFQURFUiI+PCEtLSAtLT48L0E+PEgzPgotSVNPQVBfSEVBREVSPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgRUNsYXNzIDxCPklTT0FQX0hFQURFUjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgSGVhZGVyPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQSGVhZGVyPC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0SVNPQVBIZWFkZXIoKTwvQ09ERT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVNUUklORyI+PCEtLSAtLT48L0E+PEgzPgotSVNUUklORzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIEVEYXRhVHlwZSA8Qj5JU1RSSU5HPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT5JU3RyaW5nPC9lbT4nIGRhdGEgdHlwZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TdHJpbmc8L0NPREU+LCAKLTxDT0RFPlNPQVBQYWNrYWdlSW1wbC5nZXRJU3RyaW5nKCk8L0NPREU+PC9ETD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIENMQVNTPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwO01FVEhPRDwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjM4Y2Q0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQ1MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1TT0FQUGFja2FnZQotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZSBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlNPQVBQYWNrYWdlIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU09BUFBhY2thZ2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7PEEgSFJFRj0iI25lc3RlZF9jbGFzc19zdW1tYXJ5Ij5ORVNURUQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0ZPTlQ+Ci08QlI+Ci1JbnRlcmZhY2UgU09BUFBhY2thZ2U8L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5TT0FQUGFja2FnZTwvQj48L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4KLSBJdCBjb250YWlucyBhY2Nlc3NvcnMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdG8gcmVwcmVzZW50Ci0gPHVsPgotICAgPGxpPmVhY2ggY2xhc3MsPC9saT4KLSAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPgotICAgPGxpPmVhY2ggZW51bSw8L2xpPgotICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+Ci0gPC91bD4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+U09BUEZhY3Rvcnk8L0NPREU+PC9BPjwvREw+Ci08SFI+Ci0KLTxQPgotPCEtLSA9PT09PT09PSBORVNURUQgQ0xBU1MgU1VNTUFSWSA9PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibmVzdGVkX2NsYXNzX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5OZXN0ZWQgQ2xhc3MgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0RlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQKLSAKLSAgIGVhY2ggY2xhc3MsCi0gICBlYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcywKLSAgIGVhY2ggZW51bSwKLSAgIGFuZCBlYWNoIGRhdGEgdHlwZQotIAotIDwhPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2VJTlNUQU5DRSI+ZUlOU1RBTkNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNlTkFNRSI+ZU5BTUU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHBhY2thZ2UgbmFtZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2VOU19QUkVGSVgiPmVOU19QUkVGSVg8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHBhY2thZ2UgbmFtZXNwYWNlIG5hbWU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNlTlNfVVJJIj5lTlNfVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkk8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0FERFJFU1MiPklTT0FQX0FERFJFU1M8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBBZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfQUREUkVTU19GRUFUVVJFX0NPVU5UIj5JU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEFkZHJlc3M8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0JJTkRJTkciPklTT0FQX0JJTkRJTkc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfQklORElOR19GRUFUVVJFX0NPVU5UIj5JU09BUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEJpbmRpbmc8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0JPRFkiPklTT0FQX0JPRFk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBCb2R5PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfQk9EWV9GRUFUVVJFX0NPVU5UIj5JU09BUF9CT0RZX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEJvZHk8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0ZBVUxUIj5JU09BUF9GQVVMVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPklTT0FQIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVCI+SVNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVNPQVAgRmF1bHQ8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX0hFQURFUiI+SVNPQVBfSEVBREVSPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgSGVhZGVyPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfSEVBREVSX0ZBVUxUIj5JU09BUF9IRUFERVJfRkFVTFQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBIZWFkZXIgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNJU09BUF9IRUFERVJfRkFVTFRfRkVBVFVSRV9DT1VOVCI+SVNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEhlYWRlciBGYXVsdDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfSEVBREVSX0ZFQVRVUkVfQ09VTlQiPklTT0FQX0hFQURFUl9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU09BUCBIZWFkZXI8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTT0FQX09QRVJBVElPTiI+SVNPQVBfT1BFUkFUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgT3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjSVNPQVBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQiPklTT0FQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU09BUCBPcGVyYXRpb248L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI0lTVFJJTkciPklTVFJJTkc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxlbT5JU3RyaW5nPC9lbT4nIGRhdGEgdHlwZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTIj5TT0FQX0FERFJFU1M8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5BZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPlNPQVBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19FTEVNRU5UIj5TT0FQX0FERFJFU1NfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19FTEVNRU5UX1RZUEUiPlNPQVBfQUREUkVTU19fRUxFTUVOVF9UWVBFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19MT0NBVElPTl9VUkkiPlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Mb2NhdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX19SRVFVSVJFRCI+U09BUF9BRERSRVNTX19SRVFVSVJFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQiPlNPQVBfQUREUkVTU19GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5BZGRyZXNzPC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkciPlNPQVBfQklORElORzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+U09BUF9CSU5ESU5HX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfX0VMRU1FTlQiPlNPQVBfQklORElOR19fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfX0VMRU1FTlRfVFlQRSI+U09BUF9CSU5ESU5HX19FTEVNRU5UX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfX1JFUVVJUkVEIj5TT0FQX0JJTkRJTkdfX1JFUVVJUkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfX1NUWUxFIj5TT0FQX0JJTkRJTkdfX1NUWUxFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkkiPlNPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VHJhbnNwb3J0IFVSSTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVCI+U09BUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkJpbmRpbmc8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWSI+U09BUF9CT0RZPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+Qm9keTwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5TT0FQX0JPRFlfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUyI+U09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19FTEVNRU5UIj5TT0FQX0JPRFlfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19FTEVNRU5UX1RZUEUiPlNPQVBfQk9EWV9fRUxFTUVOVF9UWVBFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9CT0RZX19FUEFSVFMiPlNPQVBfQk9EWV9fRVBBUlRTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydHM8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JPRFlfX05BTUVTUEFDRV9VUkkiPlNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TmFtZXNwYWNlIFVSSTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JPRFlfX1JFUVVJUkVEIj5TT0FQX0JPRFlfX1JFUVVJUkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JPRFlfX1VTRSI+U09BUF9CT0RZX19VU0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0JPRFlfRkVBVFVSRV9DT1VOVCI+U09BUF9CT0RZX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkJvZHk8L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFQiPlNPQVBfRkFVTFQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5GYXVsdDwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+U09BUF9GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUyI+U09BUF9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX0VMRU1FTlQiPlNPQVBfRkFVTFRfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9GQVVMVF9fRUxFTUVOVF9UWVBFIj5TT0FQX0ZBVUxUX19FTEVNRU5UX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUX19OQU1FIj5TT0FQX0ZBVUxUX19OQU1FPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkkiPlNPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9GQVVMVF9fUkVRVUlSRUQiPlNPQVBfRkFVTFRfX1JFUVVJUkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0ZBVUxUX19VU0UiPlNPQVBfRkFVTFRfX1VTRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVCI+U09BUF9GQVVMVF9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5GYXVsdDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVIiPlNPQVBfSEVBREVSPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SGVhZGVyPC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+U09BUF9IRUFERVJfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19FRU5DT0RJTkdfU1RZTEVTIj5TT0FQX0hFQURFUl9fRUVOQ09ESU5HX1NUWUxFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19FTEVNRU5UIj5TT0FQX0hFQURFUl9fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fRUxFTUVOVF9UWVBFIj5TT0FQX0hFQURFUl9fRUxFTUVOVF9UWVBFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX0VNRVNTQUdFIj5TT0FQX0hFQURFUl9fRU1FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19FUEFSVCI+U09BUF9IRUFERVJfX0VQQVJUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUyI+U09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFM8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkhlYWRlciBGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fTUVTU0FHRSI+U09BUF9IRUFERVJfX01FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX05BTUVTUEFDRV9VUkkiPlNPQVBfSEVBREVSX19OQU1FU1BBQ0VfVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX19QQVJUIj5TT0FQX0hFQURFUl9fUEFSVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UGFydDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9fUkVRVUlSRUQiPlNPQVBfSEVBREVSX19SRVFVSVJFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfX1VTRSI+U09BUF9IRUFERVJfX1VTRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0UiPlNPQVBfSEVBREVSX0JBU0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5IZWFkZXIgQmFzZTwvZW0+PC9DT0RFPicgY2xhc3M8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+U09BUF9IRUFERVJfQkFTRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUyI+U09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlQiPlNPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fRUxFTUVOVF9UWVBFIj5TT0FQX0hFQURFUl9CQVNFX19FTEVNRU5UX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19FTUVTU0FHRSI+U09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX0VQQVJUIj5TT0FQX0hFQURFUl9CQVNFX19FUEFSVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRSI+U09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJIj5TT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfX1BBUlQiPlNPQVBfSEVBREVSX0JBU0VfX1BBUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfQkFTRV9fUkVRVUlSRUQiPlNPQVBfSEVBREVSX0JBU0VfX1JFUVVJUkVEPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9CQVNFX19VU0UiPlNPQVBfSEVBREVSX0JBU0VfX1VTRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0JBU0VfRkVBVFVSRV9DT1VOVCI+U09BUF9IRUFERVJfQkFTRV9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5IZWFkZXIgQmFzZTwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFQiPlNPQVBfSEVBREVSX0ZBVUxUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SGVhZGVyIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+U09BUF9IRUFERVJfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTIj5TT0FQX0hFQURFUl9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3Q8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19FTEVNRU5UIj5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVF9UWVBFIj5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVF9UWVBFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50IFR5cGU8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX0VNRVNTQUdFIj5TT0FQX0hFQURFUl9GQVVMVF9fRU1FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19FUEFSVCI+U09BUF9IRUFERVJfRkFVTFRfX0VQQVJUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fTUVTU0FHRSI+U09BUF9IRUFERVJfRkFVTFRfX01FU1NBR0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX05BTUVTUEFDRV9VUkkiPlNPQVBfSEVBREVSX0ZBVUxUX19OQU1FU1BBQ0VfVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX19QQVJUIj5TT0FQX0hFQURFUl9GQVVMVF9fUEFSVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UGFydDwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX0hFQURFUl9GQVVMVF9fUkVRVUlSRUQiPlNPQVBfSEVBREVSX0ZBVUxUX19SRVFVSVJFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkFVTFRfX1VTRSI+U09BUF9IRUFERVJfRkFVTFRfX1VTRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPlNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkhlYWRlciBGYXVsdDwvZW0+JyBjbGFzczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9IRUFERVJfRkVBVFVSRV9DT1VOVCI+U09BUF9IRUFERVJfRkVBVFVSRV9DT1VOVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SGVhZGVyPC9lbT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX09QRVJBVElPTiI+U09BUF9PUEVSQVRJT048L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5PcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5TT0FQX09QRVJBVElPTl9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Eb2N1bWVudGF0aW9uIEVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9PUEVSQVRJT05fX0VMRU1FTlQiPlNPQVBfT1BFUkFUSU9OX19FTEVNRU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEUiPlNPQVBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX09QRVJBVElPTl9fUkVRVUlSRUQiPlNPQVBfT1BFUkFUSU9OX19SRVFVSVJFRDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjU09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSSI+U09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U29hcCBBY3Rpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGU8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI1NPQVBfT1BFUkFUSU9OX19TVFlMRSI+U09BUF9PUEVSQVRJT05fX1NUWUxFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNTT0FQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj5TT0FQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5PcGVyYXRpb248L2VtPicgY2xhc3M8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRJU09BUEFkZHJlc3MoKSI+Z2V0SVNPQVBBZGRyZXNzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVNPQVAgQWRkcmVzczwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldElTT0FQQmluZGluZygpIj5nZXRJU09BUEJpbmRpbmc8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU09BUCBCaW5kaW5nPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0SVNPQVBCb2R5KCkiPmdldElTT0FQQm9keTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklTT0FQIEJvZHk8L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRJU09BUEZhdWx0KCkiPmdldElTT0FQRmF1bHQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU09BUCBGYXVsdDwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldElTT0FQSGVhZGVyKCkiPmdldElTT0FQSGVhZGVyPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVNPQVAgSGVhZGVyPC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0SVNPQVBIZWFkZXJGYXVsdCgpIj5nZXRJU09BUEhlYWRlckZhdWx0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVNPQVAgSGVhZGVyIEZhdWx0PC9lbT48L0NPREU+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0SVNPQVBPcGVyYXRpb24oKSI+Z2V0SVNPQVBPcGVyYXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU09BUCBPcGVyYXRpb248L2VtPjwvQ09ERT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VEYXRhVHlwZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRJU3RyaW5nKCkiPmdldElTdHJpbmc8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8Q09ERT48ZW0+SVN0cmluZzwvZW0+PC9DT0RFPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQWRkcmVzc19Mb2NhdGlvblVSSSgpIj5nZXRTT0FQQWRkcmVzc19Mb2NhdGlvblVSSTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Q09ERT48ZW0+TG9jYXRpb24gVVJJPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBBZGRyZXNzKCkiPmdldFNPQVBBZGRyZXNzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5BZGRyZXNzPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQmluZGluZ19TdHlsZSgpIj5nZXRTT0FQQmluZGluZ19TdHlsZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNnZXRTdHlsZSgpIj48Q09ERT48ZW0+U3R5bGU8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCaW5kaW5nX1RyYW5zcG9ydFVSSSgpIj5nZXRTT0FQQmluZGluZ19UcmFuc3BvcnRVUkk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwjZ2V0VHJhbnNwb3J0VVJJKCkiPjxDT0RFPjxlbT5UcmFuc3BvcnQgVVJJPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCaW5kaW5nKCkiPmdldFNPQVBCaW5kaW5nPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5CaW5kaW5nPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQm9keV9FRW5jb2RpbmdTdHlsZXMoKSI+Z2V0U09BUEJvZHlfRUVuY29kaW5nU3R5bGVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0RUVuY29kaW5nU3R5bGVzKCkiPjxDT0RFPjxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQm9keV9FUGFydHMoKSI+Z2V0U09BUEJvZHlfRVBhcnRzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0RVBhcnRzKCkiPjxDT0RFPjxlbT5FUGFydHM8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCb2R5X05hbWVzcGFjZVVSSSgpIj5nZXRTT0FQQm9keV9OYW1lc3BhY2VVUkk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPjxlbT5OYW1lc3BhY2UgVVJJPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQQm9keV9Vc2UoKSI+Z2V0U09BUEJvZHlfVXNlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldFVzZSgpIj48Q09ERT48ZW0+VXNlPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCb2R5KCkiPmdldFNPQVBCb2R5PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5Cb2R5PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmFjdG9yeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhY3RvcnkoKSI+Z2V0U09BUEZhY3Rvcnk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbDwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBGYXVsdF9FRW5jb2RpbmdTdHlsZXMoKSI+Z2V0U09BUEZhdWx0X0VFbmNvZGluZ1N0eWxlczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQRmF1bHRfTmFtZSgpIj5nZXRTT0FQRmF1bHRfTmFtZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhdWx0X05hbWVzcGFjZVVSSSgpIj5nZXRTT0FQRmF1bHRfTmFtZXNwYWNlVVJJPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBGYXVsdF9Vc2UoKSI+Z2V0U09BUEZhdWx0X1VzZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0VXNlKCkiPjxDT0RFPjxlbT5Vc2U8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhdWx0KCkiPmdldFNPQVBGYXVsdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPkZhdWx0PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RVJlZmVyZW5jZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyX0hlYWRlckZhdWx0cygpIj5nZXRTT0FQSGVhZGVyX0hlYWRlckZhdWx0czwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwjZ2V0SGVhZGVyRmF1bHRzKCkiPjxDT0RFPjxlbT5IZWFkZXIgRmF1bHRzPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXIoKSI+Z2V0U09BUEhlYWRlcjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5IZWFkZXI8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXJCYXNlX0VFbmNvZGluZ1N0eWxlcygpIj5nZXRTT0FQSGVhZGVyQmFzZV9FRW5jb2RpbmdTdHlsZXM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFRW5jb2RpbmdTdHlsZXMoKSI+PENPREU+PGVtPkVFbmNvZGluZyBTdHlsZXM8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFUmVmZXJlbmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXJCYXNlX0VNZXNzYWdlKCkiPmdldFNPQVBIZWFkZXJCYXNlX0VNZXNzYWdlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VSZWZlcmVuY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfRVBhcnQoKSI+Z2V0U09BUEhlYWRlckJhc2VfRVBhcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyQmFzZV9NZXNzYWdlKCkiPmdldFNPQVBIZWFkZXJCYXNlX01lc3NhZ2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0TWVzc2FnZSgpIj48Q09ERT48ZW0+TWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VBdHRyaWJ1dGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2VfTmFtZXNwYWNlVVJJKCkiPmdldFNPQVBIZWFkZXJCYXNlX05hbWVzcGFjZVVSSTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQXR0cmlidXRlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXJCYXNlX1BhcnQoKSI+Z2V0U09BUEhlYWRlckJhc2VfUGFydDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRQYXJ0KCkiPjxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyQmFzZV9Vc2UoKSI+Z2V0U09BUEhlYWRlckJhc2VfVXNlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldFVzZSgpIj48Q09ERT48ZW0+VXNlPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUNsYXNzPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXJCYXNlKCkiPmdldFNPQVBIZWFkZXJCYXNlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5IZWFkZXIgQmFzZTwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO0VDbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyRmF1bHQoKSI+Z2V0U09BUEhlYWRlckZhdWx0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT48ZW0+SGVhZGVyIEZhdWx0PC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQT3BlcmF0aW9uX1NvYXBBY3Rpb25VUkkoKSI+Z2V0U09BUE9wZXJhdGlvbl9Tb2FwQWN0aW9uVVJJPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U29hcEFjdGlvblVSSSgpIj48Q09ERT48ZW0+U29hcCBBY3Rpb24gVVJJPC9lbT48L0NPREU+PC9BPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RUF0dHJpYnV0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQT3BlcmF0aW9uX1N0eWxlKCkiPmdldFNPQVBPcGVyYXRpb25fU3R5bGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCNnZXRTdHlsZSgpIj48Q09ERT48ZW0+U3R5bGU8L2VtPjwvQ09ERT48L0E+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFQ2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUE9wZXJhdGlvbigpIj5nZXRTT0FQT3BlcmF0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPk9wZXJhdGlvbjwvZW0+PC9DT0RFPjwvQT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZU5BTUUiPjwhLS0gLS0+PC9BPjxIMz4KLWVOQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5lTkFNRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgcGFja2FnZSBuYW1lLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5lTkFNRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJlTlNfVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1lTlNfVVJJPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5lTlNfVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkkuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLmVOU19VUkkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZU5TX1BSRUZJWCI+PCEtLSAtLT48L0E+PEgzPgotZU5TX1BSRUZJWDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+ZU5TX1BSRUZJWDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuZU5TX1BSRUZJWCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJlSU5TVEFOQ0UiPjwhLS0gLS0+PC9BPjxIMz4KLWVJTlNUQU5DRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+IDxCPmVJTlNUQU5DRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0JJTkRJTkciPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfQklORElORzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0JJTkRJTkc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5CaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQQmluZGluZ0ltcGw8L0NPREU+LCAKLTxDT0RFPlNPQVBQYWNrYWdlSW1wbC5nZXRTT0FQQmluZGluZygpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9CSU5ESU5HIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0JJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0JJTkRJTkdfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQklORElOR19fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CSU5ESU5HX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfQklORElOR19fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0JJTkRJTkdfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9CSU5ESU5HX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CSU5ESU5HX19SRVFVSVJFRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0JJTkRJTkdfX1JFUVVJUkVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0JJTkRJTkdfX1JFUVVJUkVEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQklORElOR19fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0JJTkRJTkdfX0VMRU1FTlRfVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0JJTkRJTkdfX0VMRU1FTlRfVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQklORElOR19fRUxFTUVOVF9UWVBFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CSU5ESU5HX19UUkFOU1BPUlRfVVJJPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VHJhbnNwb3J0IFVSSTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0JJTkRJTkdfX1RSQU5TUE9SVF9VUkkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9CSU5ESU5HX19TVFlMRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CSU5ESU5HX19TVFlMRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0JJTkRJTkdfX1NUWUxFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TdHlsZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0JJTkRJTkdfX1NUWUxFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQklORElOR19GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QmluZGluZzwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9CT0RZIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0JPRFk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9CT0RZPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+Qm9keTwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U09BUEJvZHlJbXBsPC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0U09BUEJvZHkoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0JPRFlfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CT0RZX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9CT0RZX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0JPRFlfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0JPRFlfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfQk9EWV9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0JPRFlfX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9CT0RZX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQk9EWV9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfQk9EWV9fUkVRVUlSRUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9CT0RZX19SRVFVSVJFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9CT0RZX19SRVFVSVJFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0JPRFlfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CT0RZX19FTEVNRU5UX1RZUEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9CT0RZX19FTEVNRU5UX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0JPRFlfX0VMRU1FTlRfVFlQRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0JPRFlfX1VTRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CT0RZX19VU0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9CT0RZX19VU0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0JPRFlfX1VTRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0JPRFlfX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfQk9EWV9fTkFNRVNQQUNFX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0JPRFlfX05BTUVTUEFDRV9VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9CT0RZX19OQU1FU1BBQ0VfVVJJIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUyI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CT0RZX19FRU5DT0RJTkdfU1RZTEVTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fRUVOQ09ESU5HX1NUWUxFUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0JPRFlfX0VQQVJUUyI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9CT0RZX19FUEFSVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9CT0RZX19FUEFSVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0czwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQk9EWV9fRVBBUlRTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQk9EWV9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0JPRFlfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0JPRFlfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+Qm9keTwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9CT0RZX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfQkFTRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9CQVNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SGVhZGVyIEJhc2U8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlNPQVBIZWFkZXJCYXNlSW1wbDwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldFNPQVBIZWFkZXJCYXNlKCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0JBU0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRV9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0JBU0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9CQVNFX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRV9fUkVRVUlSRUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfQkFTRV9fUkVRVUlSRUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX1JFUVVJUkVEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRV9fRUxFTUVOVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlRfVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX0VMRU1FTlRfVFlQRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFX19VU0UiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX0JBU0VfX1VTRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9CQVNFX19VU0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9CQVNFX19VU0UiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfQkFTRV9fTkFNRVNQQUNFX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRV9fTkFNRVNQQUNFX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9CQVNFX19OQU1FU1BBQ0VfVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX05BTUVTUEFDRV9VUkkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUyI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9CQVNFX19FRU5DT0RJTkdfU1RZTEVTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRUVOQ09ESU5HX1NUWUxFUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9CQVNFX19NRVNTQUdFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0JBU0VfX01FU1NBR0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fTUVTU0FHRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFX19QQVJUIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9CQVNFX19QQVJUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0JBU0VfX1BBUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fUEFSVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9CQVNFX19FTUVTU0FHRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfQkFTRV9fRU1FU1NBR0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0JBU0VfX0VNRVNTQUdFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0JBU0VfX0VQQVJUIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9CQVNFX19FUEFSVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9CQVNFX19FUEFSVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9fRVBBUlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfQkFTRV9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9CQVNFX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfQkFTRV9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5IZWFkZXIgQmFzZTwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfQkFTRV9GRUFUVVJFX0NPVU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfRkFVTFQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfRkFVTFQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9GQVVMVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAnPENPREU+PGVtPkZhdWx0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQRmF1bHRJbXBsPC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0U09BUEZhdWx0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0ZBVUxUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0ZBVUxUX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0ZBVUxUX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfRkFVTFRfX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9GQVVMVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0ZBVUxUX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9GQVVMVF9fUkVRVUlSRUQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9GQVVMVF9fUkVRVUlSRUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX1JFUVVJUkVEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfRkFVTFRfX0VMRU1FTlRfVFlQRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9GQVVMVF9fRUxFTUVOVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfRkFVTFRfX0VMRU1FTlRfVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX0VMRU1FTlRfVFlQRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0ZBVUxUX19VU0UiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfRkFVTFRfX1VTRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0ZBVUxUX19VU0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVzZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0ZBVUxUX19VU0UiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9GQVVMVF9fTkFNRVNQQUNFX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9GQVVMVF9fTkFNRVNQQUNFX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfRkFVTFRfX05BTUVTUEFDRV9VUkkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUyI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0ZBVUxUX19OQU1FIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0ZBVUxUX19OQU1FPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfRkFVTFRfX05BTUU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9GQVVMVF9fTkFNRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkZhdWx0PC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9PUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfT1BFUkFUSU9OPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfT1BFUkFUSU9OPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQT3BlcmF0aW9uSW1wbDwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldFNPQVBPcGVyYXRpb24oKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfT1BFUkFUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9PUEVSQVRJT05fX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfT1BFUkFUSU9OX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9PUEVSQVRJT05fX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfT1BFUkFUSU9OX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfT1BFUkFUSU9OX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfT1BFUkFUSU9OX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfT1BFUkFUSU9OX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9PUEVSQVRJT05fX1JFUVVJUkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfT1BFUkFUSU9OX19SRVFVSVJFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9PUEVSQVRJT05fX1JFUVVJUkVEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9PUEVSQVRJT05fX0VMRU1FTlRfVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfT1BFUkFUSU9OX19FTEVNRU5UX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX09QRVJBVElPTl9fU09BUF9BQ1RJT05fVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Tb2FwIEFjdGlvbiBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9PUEVSQVRJT05fX1NPQVBfQUNUSU9OX1VSSSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX09QRVJBVElPTl9fU1RZTEUiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfT1BFUkFUSU9OX19TVFlMRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX09QRVJBVElPTl9fU1RZTEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlN0eWxlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfT1BFUkFUSU9OX19TVFlMRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfT1BFUkFUSU9OX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk9wZXJhdGlvbjwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0FERFJFU1MiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfQUREUkVTUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0FERFJFU1M8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5BZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQQWRkcmVzc0ltcGw8L0NPREU+LCAKLTxDT0RFPlNPQVBQYWNrYWdlSW1wbC5nZXRTT0FQQWRkcmVzcygpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9BRERSRVNTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0FERFJFU1NfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0FERFJFU1NfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQUREUkVTU19fRUxFTUVOVCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9BRERSRVNTX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfQUREUkVTU19fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0FERFJFU1NfX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9BRERSRVNTX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9BRERSRVNTX19SRVFVSVJFRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0FERFJFU1NfX1JFUVVJUkVEPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZXF1aXJlZDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0FERFJFU1NfX1JFUVVJUkVEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQUREUkVTU19fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0FERFJFU1NfX0VMRU1FTlRfVFlQRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0FERFJFU1NfX0VMRU1FTlRfVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19fRUxFTUVOVF9UWVBFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0FERFJFU1NfX0xPQ0FUSU9OX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TG9jYXRpb24gVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfQUREUkVTU19GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0FERFJFU1NfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0FERFJFU1NfRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QWRkcmVzczwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfRkFVTFQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX0ZBVUxUPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0ZBVUxUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SGVhZGVyIEZhdWx0PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQSGVhZGVyRmF1bHRJbXBsPC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0U09BUEhlYWRlckZhdWx0KCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0ZBVUxUX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRvY3VtZW50YXRpb24gRWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRE9DVU1FTlRBVElPTl9FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0ZBVUxUX19FTEVNRU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9GQVVMVF9fUkVRVUlSRUQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX0ZBVUxUX19SRVFVSVJFRDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9GQVVMVF9fUkVRVUlSRUQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0ZBVUxUX19SRVFVSVJFRCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVF9UWVBFIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVF9UWVBFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0ZBVUxUX19FTEVNRU5UX1RZUEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVsZW1lbnQgVHlwZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRUxFTUVOVF9UWVBFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0ZBVUxUX19VU0UiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX0ZBVUxUX19VU0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfRkFVTFRfX1VTRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VXNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0ZBVUxUX19VU0UiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfRkFVTFRfX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX0ZBVUxUX19OQU1FU1BBQ0VfVVJJPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0ZBVUxUX19OQU1FU1BBQ0VfVVJJPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5OYW1lc3BhY2UgVVJJPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0ZBVUxUX19OQU1FU1BBQ0VfVVJJIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9GQVVMVF9fRUVOQ09ESU5HX1NUWUxFUzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RUVuY29kaW5nIFN0eWxlczwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0ZBVUxUX19FRU5DT0RJTkdfU1RZTEVTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX0ZBVUxUX19NRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9GQVVMVF9fTUVTU0FHRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9GQVVMVF9fTUVTU0FHRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fTUVTU0FHRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9GQVVMVF9fUEFSVCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfRkFVTFRfX1BBUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfRkFVTFRfX1BBUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfRkFVTFRfX1BBUlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfRkFVTFRfX0VNRVNTQUdFIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9GQVVMVF9fRU1FU1NBR0U8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfRkFVTFRfX0VNRVNTQUdFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRU1FU1NBR0UiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfRkFVTFRfX0VQQVJUIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9GQVVMVF9fRVBBUlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfRkFVTFRfX0VQQVJUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FUGFydDwvYj48L2VtPicgcmVmZXJlbmNlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9GQVVMVF9fRVBBUlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfRkFVTFRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9GQVVMVF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5IZWFkZXIgRmF1bHQ8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVIiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SGVhZGVyPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQSGVhZGVySW1wbDwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldFNPQVBIZWFkZXIoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfX0RPQ1VNRU5UQVRJT05fRUxFTUVOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RG9jdW1lbnRhdGlvbiBFbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19ET0NVTUVOVEFUSU9OX0VMRU1FTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfX0VMRU1FTlQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX19FTEVNRU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX19FTEVNRU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FbGVtZW50PC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19FTEVNRU5UIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX19SRVFVSVJFRCI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfX1JFUVVJUkVEPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX19SRVFVSVJFRDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX1JFUVVJUkVEIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX19FTEVNRU5UX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX19FTEVNRU5UX1RZUEU8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfX0VMRU1FTlRfVFlQRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RWxlbWVudCBUeXBlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19FTEVNRU5UX1RZUEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfX1VTRSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfX1VTRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9fVVNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Vc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX1VTRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9fTkFNRVNQQUNFX1VSSSI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfX05BTUVTUEFDRV9VUkk8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfX05BTUVTUEFDRV9VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWVzcGFjZSBVUkk8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX05BTUVTUEFDRV9VUkkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfX0VFTkNPRElOR19TVFlMRVMiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX19FRU5DT0RJTkdfU1RZTEVTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX19FRU5DT0RJTkdfU1RZTEVTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5FRW5jb2RpbmcgU3R5bGVzPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfX0VFTkNPRElOR19TVFlMRVMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU09BUF9IRUFERVJfX01FU1NBR0UiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX19NRVNTQUdFPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX19NRVNTQUdFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5NZXNzYWdlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19NRVNTQUdFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlNPQVBfSEVBREVSX19QQVJUIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9fUEFSVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9fUEFSVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UGFydDwvYj48L2VtPicgYXR0cmlidXRlLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9fUEFSVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9fRU1FU1NBR0UiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX19FTUVTU0FHRTwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9fRU1FU1NBR0U8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVNZXNzYWdlPC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19FTUVTU0FHRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9fRVBBUlQiPjwhLS0gLS0+PC9BPjxIMz4KLVNPQVBfSEVBREVSX19FUEFSVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5TT0FQX0hFQURFUl9fRVBBUlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2UuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLlNPQVBfSEVBREVSX19FUEFSVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUyI+PCEtLSAtLT48L0E+PEgzPgotU09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFM8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+U09BUF9IRUFERVJfX0hFQURFUl9GQVVMVFM8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkhlYWRlciBGYXVsdHM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0LgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5TT0FQX0hFQURFUl9fSEVBREVSX0ZBVUxUUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTT0FQX0hFQURFUl9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1TT0FQX0hFQURFUl9GRUFUVVJFX0NPVU5UPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPlNPQVBfSEVBREVSX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkhlYWRlcjwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuU09BUF9IRUFERVJfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9CSU5ESU5HIj48IS0tIC0tPjwvQT48SDM+Ci1JU09BUF9CSU5ESU5HPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklTT0FQX0JJTkRJTkc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBCaW5kaW5nPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQQmluZGluZzwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldElTT0FQQmluZGluZygpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfQklORElORyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlTT0FQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU09BUF9CSU5ESU5HX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEJpbmRpbmc8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0JJTkRJTkdfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9BRERSRVNTIj48IS0tIC0tPjwvQT48SDM+Ci1JU09BUF9BRERSRVNTPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklTT0FQX0FERFJFU1M8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBBZGRyZXNzPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQQWRkcmVzczwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldElTT0FQQWRkcmVzcygpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfQUREUkVTUyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlTT0FQX0FERFJFU1NfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU09BUF9BRERSRVNTX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEFkZHJlc3M8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0FERFJFU1NfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9CT0RZIj48IS0tIC0tPjwvQT48SDM+Ci1JU09BUF9CT0RZPC9IMz4KLTxQUkU+Ci1zdGF0aWMgZmluYWwgaW50IDxCPklTT0FQX0JPRFk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBCb2R5PC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQQm9keTwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldElTT0FQQm9keSgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfQk9EWSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9CT0RZX0ZFQVRVUkVfQ09VTlQiPjwhLS0gLS0+PC9BPjxIMz4KLUlTT0FQX0JPRFlfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU09BUF9CT0RZX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEJvZHk8L2VtPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0JPRFlfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9GQVVMVCI+PCEtLSAtLT48L0E+PEgzPgotSVNPQVBfRkFVTFQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SVNPQVBfRkFVTFQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBGYXVsdDwvZW0+PC9DT0RFPicgY2xhc3MuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U09BUEZhdWx0PC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0SVNPQVBGYXVsdCgpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfRkFVTFQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSVNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU09BUF9GQVVMVF9GRUFUVVJFX0NPVU5UPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JU09BUCBGYXVsdDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfRkFVTFRfRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9PUEVSQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUlTT0FQX09QRVJBVElPTjwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU09BUF9PUEVSQVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBPcGVyYXRpb248L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlNPQVBPcGVyYXRpb248L0NPREU+LCAKLTxDT0RFPlNPQVBQYWNrYWdlSW1wbC5nZXRJU09BUE9wZXJhdGlvbigpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfT1BFUkFUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklTT0FQX09QRVJBVElPTl9GRUFUVVJFX0NPVU5UIj48IS0tIC0tPjwvQT48SDM+Ci1JU09BUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU09BUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SVNPQVAgT3BlcmF0aW9uPC9lbT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5JU09BUF9PUEVSQVRJT05fRkVBVFVSRV9DT1VOVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9IRUFERVJfRkFVTFQiPjwhLS0gLS0+PC9BPjxIMz4KLUlTT0FQX0hFQURFUl9GQVVMVDwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU09BUF9IRUFERVJfRkFVTFQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJzxDT0RFPjxlbT5JU09BUCBIZWFkZXIgRmF1bHQ8L2VtPjwvQ09ERT4nIGNsYXNzLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlNPQVBIZWFkZXJGYXVsdDwvQ09ERT4sIAotPENPREU+U09BUFBhY2thZ2VJbXBsLmdldElTT0FQSGVhZGVyRmF1bHQoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0hFQURFUl9GQVVMVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9IRUFERVJfRkFVTFRfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSVNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SVNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEhlYWRlciBGYXVsdDwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfSEVBREVSX0ZBVUxUX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVNPQVBfSEVBREVSIj48IS0tIC0tPjwvQT48SDM+Ci1JU09BUF9IRUFERVI8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SVNPQVBfSEVBREVSPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8Q09ERT48ZW0+SVNPQVAgSGVhZGVyPC9lbT48L0NPREU+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQSGVhZGVyPC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0SVNPQVBIZWFkZXIoKTwvQ09ERT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlLklTT0FQX0hFQURFUiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJJU09BUF9IRUFERVJfRkVBVFVSRV9DT1VOVCI+PCEtLSAtLT48L0E+PEgzPgotSVNPQVBfSEVBREVSX0ZFQVRVUkVfQ09VTlQ8L0gzPgotPFBSRT4KLXN0YXRpYyBmaW5hbCBpbnQgPEI+SVNPQVBfSEVBREVSX0ZFQVRVUkVfQ09VTlQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPklTT0FQIEhlYWRlcjwvZW0+JyBjbGFzcy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNPQVBfSEVBREVSX0ZFQVRVUkVfQ09VTlQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSVNUUklORyI+PCEtLSAtLT48L0E+PEgzPgotSVNUUklORzwvSDM+Ci08UFJFPgotc3RhdGljIGZpbmFsIGludCA8Qj5JU1RSSU5HPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICc8ZW0+SVN0cmluZzwvZW0+JyBkYXRhIHR5cGUuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U3RyaW5nPC9DT0RFPiwgCi08Q09ERT5TT0FQUGFja2FnZUltcGwuZ2V0SVN0cmluZygpPC9DT0RFPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuSVNUUklORyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldFNPQVBCaW5kaW5nKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBCaW5kaW5nPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0U09BUEJpbmRpbmc8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPkJpbmRpbmc8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+U09BUEJpbmRpbmc8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEJpbmRpbmdfVHJhbnNwb3J0VVJJKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBCaW5kaW5nX1RyYW5zcG9ydFVSSTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRTT0FQQmluZGluZ19UcmFuc3BvcnRVUkk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwjZ2V0VHJhbnNwb3J0VVJJKCkiPjxDT0RFPjxlbT5UcmFuc3BvcnQgVVJJPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5UcmFuc3BvcnQgVVJJPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sI2dldFRyYW5zcG9ydFVSSSgpIj48Q09ERT5TT0FQQmluZGluZy5nZXRUcmFuc3BvcnRVUkkoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCaW5kaW5nKCkiPjxDT0RFPmdldFNPQVBCaW5kaW5nKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEJpbmRpbmdfU3R5bGUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U09BUEJpbmRpbmdfU3R5bGU8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0U09BUEJpbmRpbmdfU3R5bGU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwjZ2V0U3R5bGUoKSI+PENPREU+PGVtPlN0eWxlPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5TdHlsZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCNnZXRTdHlsZSgpIj48Q09ERT5TT0FQQmluZGluZy5nZXRTdHlsZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEJpbmRpbmcoKSI+PENPREU+Z2V0U09BUEJpbmRpbmcoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQQm9keSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQQm9keTwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldFNPQVBCb2R5PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5Cb2R5PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+Qm9keTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPlNPQVBCb2R5PC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFNPQVBCb2R5X1VzZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQQm9keV9Vc2U8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0U09BUEJvZHlfVXNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldFVzZSgpIj48Q09ERT48ZW0+VXNlPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Vc2U8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0VXNlKCkiPjxDT0RFPlNPQVBCb2R5LmdldFVzZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEJvZHkoKSI+PENPREU+Z2V0U09BUEJvZHkoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQQm9keV9OYW1lc3BhY2VVUkkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U09BUEJvZHlfTmFtZXNwYWNlVVJJPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldFNPQVBCb2R5X05hbWVzcGFjZVVSSTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0TmFtZXNwYWNlVVJJKCkiPjxDT0RFPlNPQVBCb2R5LmdldE5hbWVzcGFjZVVSSSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEJvZHkoKSI+PENPREU+Z2V0U09BUEJvZHkoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQQm9keV9FRW5jb2RpbmdTdHlsZXMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U09BUEJvZHlfRUVuY29kaW5nU3R5bGVzPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldFNPQVBCb2R5X0VFbmNvZGluZ1N0eWxlczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldEVFbmNvZGluZ1N0eWxlcygpIj48Q09ERT48ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJzxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sI2dldEVFbmNvZGluZ1N0eWxlcygpIj48Q09ERT5TT0FQQm9keS5nZXRFRW5jb2RpbmdTdHlsZXMoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBCb2R5KCkiPjxDT0RFPmdldFNPQVBCb2R5KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEJvZHlfRVBhcnRzKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBCb2R5X0VQYXJ0czwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRTT0FQQm9keV9FUGFydHM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCNnZXRFUGFydHMoKSI+PENPREU+PGVtPkVQYXJ0czwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5FUGFydHM8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwjZ2V0RVBhcnRzKCkiPjxDT0RFPlNPQVBCb2R5LmdldEVQYXJ0cygpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEJvZHkoKSI+PENPREU+Z2V0U09BUEJvZHkoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQSGVhZGVyQmFzZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQSGVhZGVyQmFzZTwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldFNPQVBIZWFkZXJCYXNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5IZWFkZXIgQmFzZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkhlYWRlciBCYXNlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+U09BUEhlYWRlckJhc2U8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEhlYWRlckJhc2VfVXNlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBIZWFkZXJCYXNlX1VzZTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRTT0FQSGVhZGVyQmFzZV9Vc2U8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0VXNlKCkiPjxDT0RFPjxlbT5Vc2U8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlVzZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRVc2UoKSI+PENPREU+U09BUEhlYWRlckJhc2UuZ2V0VXNlKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyQmFzZSgpIj48Q09ERT5nZXRTT0FQSGVhZGVyQmFzZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFNPQVBIZWFkZXJCYXNlX05hbWVzcGFjZVVSSSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQSGVhZGVyQmFzZV9OYW1lc3BhY2VVUkk8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0U09BUEhlYWRlckJhc2VfTmFtZXNwYWNlVVJJPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT48ZW0+TmFtZXNwYWNlIFVSSTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZXNwYWNlIFVSSTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+U09BUEhlYWRlckJhc2UuZ2V0TmFtZXNwYWNlVVJJKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyQmFzZSgpIj48Q09ERT5nZXRTT0FQSGVhZGVyQmFzZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFNPQVBIZWFkZXJCYXNlX0VFbmNvZGluZ1N0eWxlcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQSGVhZGVyQmFzZV9FRW5jb2RpbmdTdHlsZXM8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0U09BUEhlYWRlckJhc2VfRUVuY29kaW5nU3R5bGVzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RUVuY29kaW5nU3R5bGVzKCkiPjxDT0RFPjxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAnPGVtPkVFbmNvZGluZyBTdHlsZXM8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RUVuY29kaW5nU3R5bGVzKCkiPjxDT0RFPlNPQVBIZWFkZXJCYXNlLmdldEVFbmNvZGluZ1N0eWxlcygpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2UoKSI+PENPREU+Z2V0U09BUEhlYWRlckJhc2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQSGVhZGVyQmFzZV9NZXNzYWdlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBIZWFkZXJCYXNlX01lc3NhZ2U8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0U09BUEhlYWRlckJhc2VfTWVzc2FnZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRNZXNzYWdlKCkiPjxDT0RFPjxlbT5NZXNzYWdlPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5NZXNzYWdlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldE1lc3NhZ2UoKSI+PENPREU+U09BUEhlYWRlckJhc2UuZ2V0TWVzc2FnZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2UoKSI+PENPREU+Z2V0U09BUEhlYWRlckJhc2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQSGVhZGVyQmFzZV9QYXJ0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBIZWFkZXJCYXNlX1BhcnQ8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0U09BUEhlYWRlckJhc2VfUGFydDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRQYXJ0KCkiPjxDT0RFPjxlbT5QYXJ0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5QYXJ0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldFBhcnQoKSI+PENPREU+U09BUEhlYWRlckJhc2UuZ2V0UGFydCgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEhlYWRlckJhc2UoKSI+PENPREU+Z2V0U09BUEhlYWRlckJhc2UoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQSGVhZGVyQmFzZV9FTWVzc2FnZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQSGVhZGVyQmFzZV9FTWVzc2FnZTwvSDM+Ci08UFJFPgotRVJlZmVyZW5jZSA8Qj5nZXRTT0FQSGVhZGVyQmFzZV9FTWVzc2FnZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT48ZW0+RU1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkVNZXNzYWdlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPlNPQVBIZWFkZXJCYXNlLmdldEVNZXNzYWdlKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyQmFzZSgpIj48Q09ERT5nZXRTT0FQSGVhZGVyQmFzZSgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFNPQVBIZWFkZXJCYXNlX0VQYXJ0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBIZWFkZXJCYXNlX0VQYXJ0PC9IMz4KLTxQUkU+Ci1FUmVmZXJlbmNlIDxCPmdldFNPQVBIZWFkZXJCYXNlX0VQYXJ0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVQYXJ0KCkiPjxDT0RFPjxlbT5FUGFydDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+RVBhcnQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+U09BUEhlYWRlckJhc2UuZ2V0RVBhcnQoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBIZWFkZXJCYXNlKCkiPjxDT0RFPmdldFNPQVBIZWFkZXJCYXNlKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEZhdWx0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBGYXVsdDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldFNPQVBGYXVsdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPkZhdWx0PC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RmF1bHQ8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+U09BUEZhdWx0PC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFNPQVBGYXVsdF9Vc2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U09BUEZhdWx0X1VzZTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRTT0FQRmF1bHRfVXNlPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXRVc2UoKSI+PENPREU+PGVtPlVzZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+VXNlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXRVc2UoKSI+PENPREU+U09BUEZhdWx0LmdldFVzZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhdWx0KCkiPjxDT0RFPmdldFNPQVBGYXVsdCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFNPQVBGYXVsdF9OYW1lc3BhY2VVUkkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U09BUEZhdWx0X05hbWVzcGFjZVVSSTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRTT0FQRmF1bHRfTmFtZXNwYWNlVVJJPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCNnZXROYW1lc3BhY2VVUkkoKSI+PENPREU+PGVtPk5hbWVzcGFjZSBVUkk8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWVzcGFjZSBVUkk8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sI2dldE5hbWVzcGFjZVVSSSgpIj48Q09ERT5TT0FQRmF1bHQuZ2V0TmFtZXNwYWNlVVJJKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQRmF1bHQoKSI+PENPREU+Z2V0U09BUEZhdWx0KCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEZhdWx0X0VFbmNvZGluZ1N0eWxlcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQRmF1bHRfRUVuY29kaW5nU3R5bGVzPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldFNPQVBGYXVsdF9FRW5jb2RpbmdTdHlsZXM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT48ZW0+RUVuY29kaW5nIFN0eWxlczwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJzxlbT5FRW5jb2RpbmcgU3R5bGVzPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPlNPQVBGYXVsdDwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBGYXVsdCgpIj48Q09ERT5nZXRTT0FQRmF1bHQoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQRmF1bHRfTmFtZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQRmF1bHRfTmFtZTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRTT0FQRmF1bHRfTmFtZTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT48ZW0+TmFtZTwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+TmFtZTwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwjZ2V0TmFtZSgpIj48Q09ERT5TT0FQRmF1bHQuZ2V0TmFtZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhdWx0KCkiPjxDT0RFPmdldFNPQVBGYXVsdCgpPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFNPQVBPcGVyYXRpb24oKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U09BUE9wZXJhdGlvbjwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldFNPQVBPcGVyYXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT48ZW0+T3BlcmF0aW9uPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+T3BlcmF0aW9uPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT5TT0FQT3BlcmF0aW9uPC9DT0RFPjwvQT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFNPQVBPcGVyYXRpb25fU29hcEFjdGlvblVSSSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQT3BlcmF0aW9uX1NvYXBBY3Rpb25VUkk8L0gzPgotPFBSRT4KLUVBdHRyaWJ1dGUgPEI+Z2V0U09BUE9wZXJhdGlvbl9Tb2FwQWN0aW9uVVJJPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U29hcEFjdGlvblVSSSgpIj48Q09ERT48ZW0+U29hcCBBY3Rpb24gVVJJPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Tb2FwIEFjdGlvbiBVUkk8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCNnZXRTb2FwQWN0aW9uVVJJKCkiPjxDT0RFPlNPQVBPcGVyYXRpb24uZ2V0U29hcEFjdGlvblVSSSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUE9wZXJhdGlvbigpIj48Q09ERT5nZXRTT0FQT3BlcmF0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUE9wZXJhdGlvbl9TdHlsZSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQT3BlcmF0aW9uX1N0eWxlPC9IMz4KLTxQUkU+Ci1FQXR0cmlidXRlIDxCPmdldFNPQVBPcGVyYXRpb25fU3R5bGU8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCNnZXRTdHlsZSgpIj48Q09ERT48ZW0+U3R5bGU8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPlN0eWxlPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwjZ2V0U3R5bGUoKSI+PENPREU+U09BUE9wZXJhdGlvbi5nZXRTdHlsZSgpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUE9wZXJhdGlvbigpIj48Q09ERT5nZXRTT0FQT3BlcmF0aW9uKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEFkZHJlc3MoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U09BUEFkZHJlc3M8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRTT0FQQWRkcmVzczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT48ZW0+QWRkcmVzczwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkFkZHJlc3M8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT5TT0FQQWRkcmVzczwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQQWRkcmVzc19Mb2NhdGlvblVSSSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQQWRkcmVzc19Mb2NhdGlvblVSSTwvSDM+Ci08UFJFPgotRUF0dHJpYnV0ZSA8Qj5nZXRTT0FQQWRkcmVzc19Mb2NhdGlvblVSSTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCNnZXRMb2NhdGlvblVSSSgpIj48Q09ERT48ZW0+TG9jYXRpb24gVVJJPC9lbT48L0NPREU+PC9BPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Mb2NhdGlvbiBVUkk8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwjZ2V0TG9jYXRpb25VUkkoKSI+PENPREU+U09BUEFkZHJlc3MuZ2V0TG9jYXRpb25VUkkoKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2dldFNPQVBBZGRyZXNzKCkiPjxDT0RFPmdldFNPQVBBZGRyZXNzKCk8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEhlYWRlckZhdWx0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldFNPQVBIZWFkZXJGYXVsdDwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldFNPQVBIZWFkZXJGYXVsdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PENPREU+PGVtPkhlYWRlciBGYXVsdDwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkhlYWRlciBGYXVsdDwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Q09ERT5TT0FQSGVhZGVyRmF1bHQ8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEhlYWRlcigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQSGVhZGVyPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0U09BUEhlYWRlcjwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPjxlbT5IZWFkZXI8L2VtPjwvQ09ERT48L0E+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5IZWFkZXI8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxDT0RFPlNPQVBIZWFkZXI8L0NPREU+PC9BPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U09BUEhlYWRlcl9IZWFkZXJGYXVsdHMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U09BUEhlYWRlcl9IZWFkZXJGYXVsdHM8L0gzPgotPFBSRT4KLUVSZWZlcmVuY2UgPEI+Z2V0U09BUEhlYWRlcl9IZWFkZXJGYXVsdHM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGNvbnRhaW5tZW50IHJlZmVyZW5jZSBsaXN0ICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sI2dldEhlYWRlckZhdWx0cygpIj48Q09ERT48ZW0+SGVhZGVyIEZhdWx0czwvZW0+PC9DT0RFPjwvQT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgY29udGFpbm1lbnQgcmVmZXJlbmNlIGxpc3QgJzxlbT5IZWFkZXIgRmF1bHRzPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwjZ2V0SGVhZGVyRmF1bHRzKCkiPjxDT0RFPlNPQVBIZWFkZXIuZ2V0SGVhZGVyRmF1bHRzKCk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCNnZXRTT0FQSGVhZGVyKCkiPjxDT0RFPmdldFNPQVBIZWFkZXIoKTwvQ09ERT48L0E+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJU09BUEJpbmRpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0SVNPQVBCaW5kaW5nPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SVNPQVBCaW5kaW5nPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVNPQVAgQmluZGluZzwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SVNPQVAgQmluZGluZzwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQQmluZGluZzwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElTT0FQQWRkcmVzcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJU09BUEFkZHJlc3M8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJU09BUEFkZHJlc3M8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU09BUCBBZGRyZXNzPC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JU09BUCBBZGRyZXNzPC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlNPQVBBZGRyZXNzPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SVNPQVBCb2R5KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElTT0FQQm9keTwvSDM+Ci08UFJFPgotRUNsYXNzIDxCPmdldElTT0FQQm9keTwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklTT0FQIEJvZHk8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklTT0FQIEJvZHk8L2VtPicuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+U09BUEJvZHk8L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRJU09BUEZhdWx0KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElTT0FQRmF1bHQ8L0gzPgotPFBSRT4KLUVDbGFzcyA8Qj5nZXRJU09BUEZhdWx0PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8Q09ERT48ZW0+SVNPQVAgRmF1bHQ8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklTT0FQIEZhdWx0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlNPQVBGYXVsdDwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElTT0FQT3BlcmF0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElTT0FQT3BlcmF0aW9uPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SVNPQVBPcGVyYXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU09BUCBPcGVyYXRpb248L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklTT0FQIE9wZXJhdGlvbjwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQT3BlcmF0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SVNPQVBIZWFkZXJGYXVsdCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJU09BUEhlYWRlckZhdWx0PC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SVNPQVBIZWFkZXJGYXVsdDwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPENPREU+PGVtPklTT0FQIEhlYWRlciBGYXVsdDwvZW0+PC9DT0RFPicuCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+SVNPQVAgSGVhZGVyIEZhdWx0PC9lbT4nLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxDT0RFPlNPQVBIZWFkZXJGYXVsdDwvQ09ERT48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldElTT0FQSGVhZGVyKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldElTT0FQSGVhZGVyPC9IMz4KLTxQUkU+Ci1FQ2xhc3MgPEI+Z2V0SVNPQVBIZWFkZXI8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxDT0RFPjxlbT5JU09BUCBIZWFkZXI8L2VtPjwvQ09ERT4nLgotIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxERD48REw+Ci0KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPklTT0FQIEhlYWRlcjwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TT0FQSGVhZGVyPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0SVN0cmluZygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRJU3RyaW5nPC9IMz4KLTxQUkU+Ci1FRGF0YVR5cGUgPEI+Z2V0SVN0cmluZzwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBkYXRhIHR5cGUgJzxDT0RFPjxlbT5JU3RyaW5nPC9lbT48L0NPREU+Jy4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBtZXRhIG9iamVjdCBmb3IgZGF0YSB0eXBlICc8ZW0+SVN0cmluZzwvZW0+Jy48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5TdHJpbmc8L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTT0FQRmFjdG9yeSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTT0FQRmFjdG9yeTwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmFjdG9yeTwvQT4gPEI+Z2V0U09BUEZhY3Rvcnk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4KLSA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU09BUFBhY2thZ2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7PEEgSFJFRj0iI25lc3RlZF9jbGFzc19zdW1tYXJ5Ij5ORVNURUQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEFkZHJlc3MuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEFkZHJlc3MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk1YjQ1OC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBBZGRyZXNzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBBZGRyZXNzCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBBZGRyZXNzIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9cY2xhc3MtdXNlU09BUEFkZHJlc3MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQQWRkcmVzcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEFkZHJlc3M8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEFkZHJlc3M8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQWRkcmVzczwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQWRkcmVzczwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEFkZHJlc3M8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNPQVBGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCNjcmVhdGVTT0FQQWRkcmVzcygpIj5jcmVhdGVTT0FQQWRkcmVzczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QWRkcmVzczwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9cY2xhc3MtdXNlU09BUEFkZHJlc3MuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQQWRkcmVzcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQQmluZGluZy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQQmluZGluZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTEwZTk3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEJpbmRpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJpbmRpbmcKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJpbmRpbmciOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1xjbGFzcy11c2VTT0FQQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBCaW5kaW5nLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQmluZGluZzwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQmluZGluZzwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCaW5kaW5nPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCaW5kaW5nPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQQmluZGluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U09BUEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBCaW5kaW5nKCkiPmNyZWF0ZVNPQVBCaW5kaW5nPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nPC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1xjbGFzcy11c2VTT0FQQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBCaW5kaW5nLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBCb2R5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBCb2R5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MzYwMDAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQQm9keS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvXGNsYXNzLXVzZVNPQVBCb2R5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEJvZHkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5PC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCb2R5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJvZHk8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJvZHk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCb2R5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TT0FQRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjY3JlYXRlU09BUEJvZHkoKSI+Y3JlYXRlU09BUEJvZHk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJvZHk8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvXGNsYXNzLXVzZVNPQVBCb2R5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEJvZHkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEZhY3RvcnkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEZhY3RvcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdkZmI1Ni4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBGYWN0b3J5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYWN0b3J5Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYWN0b3J5IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9cY2xhc3MtdXNlU09BUEZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhY3Rvcnk8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhY3Rvcnk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmFjdG9yeTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+RmllbGRzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPiBkZWNsYXJlZCBhcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBGYWN0b3J5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmFjdG9yeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U09BUEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2VJTlNUQU5DRSI+ZUlOU1RBTkNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3Rvcnk8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhY3Rvcnk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBGYWN0b3J5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TT0FQUGFja2FnZS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwjZ2V0U09BUEZhY3RvcnkoKSI+Z2V0U09BUEZhY3Rvcnk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbDwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9cY2xhc3MtdXNlU09BUEZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQRmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQRmF1bHQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEZhdWx0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZTI1ZmQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQRmF1bHQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhdWx0Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1xjbGFzcy11c2VTT0FQRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhdWx0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBGYXVsdDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhdWx0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhdWx0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TT0FQRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjY3JlYXRlU09BUEZhdWx0KCkiPmNyZWF0ZVNPQVBGYXVsdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RmF1bHQ8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1xjbGFzcy11c2VTT0FQRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEhlYWRlci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQSGVhZGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1OWJhYzkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQSGVhZGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXIKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9cY2xhc3MtdXNlU09BUEhlYWRlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBIZWFkZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXI8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlcjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TT0FQRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjY3JlYXRlU09BUEhlYWRlcigpIj5jcmVhdGVTT0FQSGVhZGVyPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5IZWFkZXI8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9cY2xhc3MtdXNlU09BUEhlYWRlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBIZWFkZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEhlYWRlckJhc2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEhlYWRlckJhc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZjN2I3ZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBIZWFkZXJCYXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJCYXNlIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9cY2xhc3MtdXNlU09BUEhlYWRlckJhc2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQSGVhZGVyQmFzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2U8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+U3ViaW50ZXJmYWNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlcjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXI8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyRmF1bHQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SGVhZGVyIEZhdWx0PC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNPQVBGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCNjcmVhdGVTT0FQSGVhZGVyQmFzZSgpIj5jcmVhdGVTT0FQSGVhZGVyQmFzZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SGVhZGVyIEJhc2U8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvXGNsYXNzLXVzZVNPQVBIZWFkZXJCYXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEhlYWRlckJhc2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEhlYWRlckZhdWx0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBIZWFkZXJGYXVsdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjdjMDVmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEhlYWRlckZhdWx0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJGYXVsdAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyRmF1bHQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9cY2xhc3MtdXNlU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyRmF1bHQ8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJGYXVsdDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyRmF1bHQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJGYXVsdDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJGYXVsdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U09BUEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sI2NyZWF0ZVNPQVBIZWFkZXJGYXVsdCgpIj5jcmVhdGVTT0FQSGVhZGVyRmF1bHQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkhlYWRlciBGYXVsdDwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvXGNsYXNzLXVzZVNPQVBIZWFkZXJGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBIZWFkZXJGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQT3BlcmF0aW9uLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBPcGVyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1ODNiNi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBPcGVyYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbgotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQT3BlcmF0aW9uIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1xjbGFzcy11c2VTT0FQT3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbjwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBPcGVyYXRpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBPcGVyYXRpb248L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQT3BlcmF0aW9uPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBPcGVyYXRpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNPQVBGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCNjcmVhdGVTT0FQT3BlcmF0aW9uKCkiPmNyZWF0ZVNPQVBPcGVyYXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1xjbGFzcy11c2VTT0FQT3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUE9wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDgxZWEzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuTGl0ZXJhbHMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuTGl0ZXJhbHMiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1xjbGFzcy11c2VTT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZS5MaXRlcmFsczwvQj48L0gyPgotPC9DRU5URVI+Ci1ObyB1c2FnZSBvZiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2UuTGl0ZXJhbHMKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvXGNsYXNzLXVzZVNPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUFBhY2thZ2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUFBhY2thZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNjYzZmNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBQYWNrYWdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBQYWNrYWdlIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9cY2xhc3MtdXNlU09BUFBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTT0FQUGFja2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2U8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+RmllbGRzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPiBkZWNsYXJlZCBhcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQUGFja2FnZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U09BUFBhY2thZ2UuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sI2VJTlNUQU5DRSI+ZUlOU1RBTkNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TT0FQRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYWN0b3J5Lmh0bWwjZ2V0U09BUFBhY2thZ2UoKSI+Z2V0U09BUFBhY2thZ2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3Rvcnk8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvXGNsYXNzLXVzZVNPQVBQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iU09BUFBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLWZyYW1lLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1mcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTBhYjNiLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAgcGFja2FnZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIj4KLTxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVUaXRsZUZvbnQiPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48L0ZPTlQ+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBOT1dSQVA+PEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLUludGVyZmFjZXM8L0ZPTlQ+Jm5ic3A7Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+Ci08QlI+Ci08QSBIUkVGPSJTT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQQWRkcmVzczwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJTT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQQmluZGluZzwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJTT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQQm9keTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJTT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQRmFjdG9yeTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJTT0FQRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUEZhdWx0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IlNPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUEhlYWRlcjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJTT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQSGVhZGVyQmFzZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJTT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUEhlYWRlckZhdWx0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IlNPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+U09BUE9wZXJhdGlvbjwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJTT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQUGFja2FnZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJTT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5TT0FQUGFja2FnZS5MaXRlcmFsczwvST48L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NjM3M2MuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCBwYWNrYWdlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPlBSRVYgUEFDS0FHRTwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5ORVhUIFBBQ0tBR0U8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPEgyPgotUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAKLTwvSDI+Ci0KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLgotPFA+Ci08Qj5TZWU6PC9CPgotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEEgSFJFRj0iI3BhY2thZ2VfZGVzY3JpcHRpb24iPjxCPkRlc2NyaXB0aW9uPC9CPjwvQT4KLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkludGVyZmFjZSBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEFkZHJlc3M8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QWRkcmVzczwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJpbmRpbmc8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZzwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEJvZHk8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Qm9keTwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEZhY3Rvcnk8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmF1bHQ8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RmF1bHQ8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlcjwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXI8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlciBCYXNlPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckZhdWx0PC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlciBGYXVsdDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQT3BlcmF0aW9uPC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk9wZXJhdGlvbjwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUFBhY2thZ2U8L0E+PC9CPjwvVEQ+Ci08VEQ+VGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBQYWNrYWdlLkxpdGVyYWxzPC9BPjwvQj48L1REPgotPFREPkRlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQKLSAKLSAgIGVhY2ggY2xhc3MsCi0gICBlYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcywKLSAgIGVhY2ggZW51bSwKLSAgIGFuZCBlYWNoIGRhdGEgdHlwZQotIAotIDwhPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci0KLTxQPgotPEEgTkFNRT0icGFja2FnZV9kZXNjcmlwdGlvbiI+PCEtLSAtLT48L0E+PEgyPgotUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAgRGVzY3JpcHRpb24KLTwvSDI+Ci0KLTxQPgotPHA+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4KLSAgICAgICAgICAgICAgICA8L3A+Ci08dGFibGUgd2lkdGg9IjUwMCI+Ci08dHI+Ci08dGQ+Ci08cD5UaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gbG9hZCwgbW9kaWZ5LCBhbmQgc2F2ZSBXU0RMIDEuMSBkb2N1bWVudHMuCi0gICAgICAgICAgICAgICAgPC9wPgotPC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPFA+Ci0KLTxQPgotPERMPgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPlBSRVYgUEFDS0FHRTwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5ORVhUIFBBQ0tBR0U8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS10cmVlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS10cmVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ZjliMjAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2UtdHJlZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCBDbGFzcyBIaWVyYXJjaHkKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAgQ2xhc3MgSGllcmFyY2h5IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+UFJFVjwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2UtdHJlZS5odG1sIj48Qj5ORVhUPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci1IaWVyYXJjaHkgRm9yIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwCi08L0gyPgotPC9DRU5URVI+Ci08REw+Ci08RFQ+PEI+UGFja2FnZSBIaWVyYXJjaGllczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXRyZWUuaHRtbCI+QWxsIFBhY2thZ2VzPC9BPjwvREw+Ci08SFI+Ci08SDI+Ci1JbnRlcmZhY2UgSGllcmFyY2h5Ci08L0gyPgotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPikKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBBZGRyZXNzPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzcykKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZykKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCb2R5PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJCYXNlPC9CPjwvQT48VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXI8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlckZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQpCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uKQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQWRkcmVzczwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5IChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQm9keTwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIgKGFsc28gZXh0ZW5kcyBqYXZhLmlvLlNlcmlhbGl6YWJsZSkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlcjwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24gKGFsc28gZXh0ZW5kcyBqYXZhLmlvLlNlcmlhbGl6YWJsZSkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUE9wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZhLmlvLlNlcmlhbGl6YWJsZTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEFkZHJlc3M8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZyAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHkgKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQm9keTwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdCAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBPcGVyYXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEZhY3Rvcnk8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBQYWNrYWdlPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQUGFja2FnZS5MaXRlcmFsczwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETEVsZW1lbnQ8L0I+PC9BPjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQWRkcmVzczwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3MpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQm9keTwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHkpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyQmFzZTwvQj48L0E+PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUE9wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbikKLTwvVUw+Ci08L1VMPgotPC9VTD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2UtdHJlZS5odG1sIj48Qj5QUkVWPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS10cmVlLmh0bWwiPjxCPk5FWFQ8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS11c2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXVzZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGY1ZmEzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXVzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBQYWNrYWdlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLUNsYXNzZXMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+IHVzZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQQWRkcmVzcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEFkZHJlc3M8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QWRkcmVzczwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEJpbmRpbmcuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCaW5kaW5nPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmc8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBCb2R5Lmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQm9keTwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Cb2R5PC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQRmFjdG9yeS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEZhY3Rvcnk8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBGYXVsdC5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEZhdWx0PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkZhdWx0PC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQSGVhZGVyLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlcjwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9jbGFzcy11c2UvU09BUEhlYWRlckJhc2UuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJCYXNlPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlciBCYXNlPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQSGVhZGVyRmF1bHQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXIgRmF1bHQ8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvY2xhc3MtdXNlL1NPQVBPcGVyYXRpb24uaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBPcGVyYXRpb248L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL2NsYXNzLXVzZS9TT0FQUGFja2FnZS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUFBhY2thZ2U8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0JpbmRpbmcuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9CaW5kaW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNmU3YjUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0JpbmRpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZzwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUJpbmRpbmcoKSI+Y3JlYXRlQmluZGluZzwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZzwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlBvcnQuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNnZXRFQmluZGluZygpIj5nZXRFQmluZGluZzwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVCaW5kaW5nPC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB3aXRoIHBhcmFtZXRlcnMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlBvcnQuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNzZXRFQmluZGluZyhvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nKSI+c2V0RUJpbmRpbmc8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCNnZXRFQmluZGluZygpIj48Q09ERT48ZW0+RUJpbmRpbmc8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlQmluZGluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9CaW5kaW5nRmF1bHQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9CaW5kaW5nRmF1bHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA5ZTNiOC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvQmluZGluZ0ZhdWx0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUJpbmRpbmdGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQ8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nRmF1bHQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdGYXVsdDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0ZhdWx0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdGYXVsdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlQmluZGluZ0ZhdWx0KCkiPmNyZWF0ZUJpbmRpbmdGYXVsdDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBGYXVsdDwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUJpbmRpbmdGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdGYXVsdC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0JpbmRpbmdJbnB1dC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0JpbmRpbmdJbnB1dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGU4YTg4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9CaW5kaW5nSW5wdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlQmluZGluZ0lucHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iQmluZGluZ0lucHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdJbnB1dDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0lucHV0PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nSW5wdXQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0lucHV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5XU0RMRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVCaW5kaW5nSW5wdXQoKSI+Y3JlYXRlQmluZGluZ0lucHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nIElucHV0PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nSW5wdXQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPkJpbmRpbmdPcGVyYXRpb24uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0lucHV0KCkiPmdldEVCaW5kaW5nSW5wdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FQmluZGluZyBJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gd2l0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdJbnB1dDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+QmluZGluZ09wZXJhdGlvbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI3NldEVCaW5kaW5nSW5wdXQob3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0KSI+c2V0RUJpbmRpbmdJbnB1dDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nSW5wdXQ8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ0lucHV0KCkiPjxDT0RFPjxlbT5FQmluZGluZyBJbnB1dDwvZW0+PC9DT0RFPjwvQT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUJpbmRpbmdJbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdJbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0JpbmRpbmdPcGVyYXRpb24uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9CaW5kaW5nT3BlcmF0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MzM3ZWYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0JpbmRpbmdPcGVyYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlQmluZGluZ09wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbjwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3BlcmF0aW9uPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPcGVyYXRpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPcGVyYXRpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUJpbmRpbmdPcGVyYXRpb24oKSI+Y3JlYXRlQmluZGluZ09wZXJhdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBPcGVyYXRpb248L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlQmluZGluZ09wZXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkJpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9CaW5kaW5nT3V0cHV0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvQmluZGluZ091dHB1dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWZlODA0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9CaW5kaW5nT3V0cHV0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ091dHB1dAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUJpbmRpbmdPdXRwdXQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJCaW5kaW5nT3V0cHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQ8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ091dHB1dDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3V0cHV0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3V0cHV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5XU0RMRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVCaW5kaW5nT3V0cHV0KCkiPmNyZWF0ZUJpbmRpbmdPdXRwdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJpbmRpbmcgT3V0cHV0PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ091dHB1dDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+QmluZGluZ09wZXJhdGlvbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI2dldEVCaW5kaW5nT3V0cHV0KCkiPmdldEVCaW5kaW5nT3V0cHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUJpbmRpbmcgT3V0cHV0PC9iPjwvZW0+JyBjb250YWlubWVudCByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB3aXRoIHBhcmFtZXRlcnMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPkJpbmRpbmdPcGVyYXRpb24uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNzZXRFQmluZGluZ091dHB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0KSI+c2V0RUJpbmRpbmdPdXRwdXQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFQmluZGluZ091dHB1dCgpIj48Q09ERT48ZW0+RUJpbmRpbmcgT3V0cHV0PC9lbT48L0NPREU+PC9BPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUJpbmRpbmdPdXRwdXQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJCaW5kaW5nT3V0cHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvRGVmaW5pdGlvbi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0RlZmluaXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYyYThmMi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvRGVmaW5pdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQ4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24KLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VEZWZpbml0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRGVmaW5pdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZURlZmluaXRpb24oKSI+Y3JlYXRlRGVmaW5pdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RGVmaW5pdGlvbjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPkltcG9ydC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwjZ2V0RURlZmluaXRpb24oKSI+Z2V0RURlZmluaXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FRGVmaW5pdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETEVsZW1lbnQuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwjZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpIj5nZXRFbmNsb3NpbmdEZWZpbml0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgRGVmaW5pdGlvbiB0aGF0IGNvbnRhaW5zIHRoaXMgV1NETCBlbGVtZW50LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RGVmaW5pdGlvbjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+SW1wb3J0LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCNzZXRFRGVmaW5pdGlvbihvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uKSI+c2V0RURlZmluaXRpb248L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sI2dldEVEZWZpbml0aW9uKCkiPjxDT0RFPjxlbT5FRGVmaW5pdGlvbjwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExFbGVtZW50LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI3NldEVuY2xvc2luZ0RlZmluaXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbikiPnNldEVuY2xvc2luZ0RlZmluaXRpb248L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+Jm5ic3A7ZGVmaW5pdGlvbik8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIGVuY2xvc2luZyBkZWZpbml0aW9uIG9mIHRoaXMgV1NETCBlbGVtZW50LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExSZXNvdXJjZUltcGwuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI2dldERlZmluaXRpb24oKSI+Z2V0RGVmaW5pdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHJlc291cmNlJ3MgRGVmaW5pdGlvbi48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlRGVmaW5pdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkRlZmluaXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNWNiMjUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MzMgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+U3ViaW50ZXJmYWNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50KCkiPmNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+U3ViaW50ZXJmYWNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQWRkcmVzczwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5BZGRyZXNzPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQmluZGluZzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBPcGVyYXRpb248L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsRW5jb2RlZDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgRW5jb2RlZDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBVcmxSZXBsYWNlbWVudDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgUmVwbGFjZW1lbnQ8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPlN1YmludGVyZmFjZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUNvbnRlbnQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Q29udGVudDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU1pbWVYbWw8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWltZSBYbWw8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk11bHRpcGFydCBSZWxhdGVkPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFydDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5TdWJpbnRlcmZhY2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBBZGRyZXNzPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFkZHJlc3M8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCaW5kaW5nPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmc8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCb2R5PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJvZHk8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmF1bHQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RmF1bHQ8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlcjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXI8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlciBCYXNlPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckZhdWx0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlciBGYXVsdDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQT3BlcmF0aW9uPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk9wZXJhdGlvbjwvYj48L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwjY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPmNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWVzcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb2NhbE5hbWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9FeHRlbnNpYmxlRWxlbWVudC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0V4dGVuc2libGVFbGVtZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NmI3NzguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0V4dGVuc2libGVFbGVtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMTQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUV4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQ8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+U3ViaW50ZXJmYWNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nRmF1bHQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBGYXVsdDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0lucHV0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgSW5wdXQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5CaW5kaW5nT3BlcmF0aW9uPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgT3BlcmF0aW9uPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ091dHB1dDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIE91dHB1dDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGVmaW5pdGlvbjwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GYXVsdDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW1wb3J0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkltcG9ydDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5JbnB1dDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZSBSZWZlcmVuY2U8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5PcGVyYXRpb248L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk91dHB1dDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5PdXRwdXQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBvcnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydFR5cGU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UG9ydCBUeXBlPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+U2VydmljZTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5TZXJ2aWNlPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlR5cGVzPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUV4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9GYXVsdC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0ZhdWx0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhMmE3ODEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0ZhdWx0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5GYXVsdCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUZhdWx0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQ8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkZhdWx0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkZhdWx0PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkZhdWx0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RmF1bHQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZUZhdWx0KCkiPmNyZWF0ZUZhdWx0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5GYXVsdDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+QmluZGluZ0ZhdWx0LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNnZXRFRmF1bHQoKSI+Z2V0RUZhdWx0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RUZhdWx0PC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB3aXRoIHBhcmFtZXRlcnMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+QmluZGluZ0ZhdWx0LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCNzZXRFRmF1bHQob3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQpIj5zZXRFRmF1bHQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwjZ2V0RUZhdWx0KCkiPjxDT0RFPjxlbT5FRmF1bHQ8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUZhdWx0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRmF1bHQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9JbXBvcnQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9JbXBvcnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk0MDNkZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvSW1wb3J0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZUltcG9ydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkltcG9ydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQ8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbXBvcnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW1wb3J0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkltcG9ydDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlSW1wb3J0KCkiPmNyZWF0ZUltcG9ydDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SW1wb3J0PC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlSW1wb3J0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iSW1wb3J0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvSW5wdXQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9JbnB1dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDIwNTMxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9JbnB1dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuSW5wdXQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VJbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklucHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0PC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPklucHV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5XU0RMRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVJbnB1dCgpIj5jcmVhdGVJbnB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SW5wdXQ8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW5wdXQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPk9wZXJhdGlvbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwjZ2V0RUlucHV0KCkiPmdldEVJbnB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVJbnB1dDwvYj48L2VtPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPklucHV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5CaW5kaW5nSW5wdXQuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI2dldEVJbnB1dCgpIj5nZXRFSW5wdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FSW5wdXQ8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPklucHV0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5PcGVyYXRpb24uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI3NldEVJbnB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dCkiPnNldEVJbnB1dDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPklucHV0PC9BPiZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFSW5wdXQoKSI+PENPREU+PGVtPkVJbnB1dDwvZW0+PC9DT0RFPjwvQT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPkJpbmRpbmdJbnB1dC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwjc2V0RUlucHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0KSI+c2V0RUlucHV0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW5wdXQ8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdJbnB1dC5odG1sI2dldEVJbnB1dCgpIj48Q09ERT48ZW0+RUlucHV0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VJbnB1dC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IklucHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvTWVzc2FnZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL01lc3NhZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU5Mzg4ZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvTWVzc2FnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjY0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VNZXNzYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTWVzc2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5XU0RMRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVNZXNzYWdlKCkiPmNyZWF0ZU1lc3NhZ2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk1lc3NhZ2U8L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5QYXJ0LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwjZ2V0RU1lc3NhZ2UoKSI+Z2V0RU1lc3NhZ2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FTWVzc2FnZTwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+TWVzc2FnZVJlZmVyZW5jZS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sI2dldEVNZXNzYWdlKCkiPmdldEVNZXNzYWdlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+UGFydC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI3NldEVNZXNzYWdlKG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2UpIj5zZXRFTWVzc2FnZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sI2dldEVNZXNzYWdlKCkiPjxDT0RFPjxlbT5FTWVzc2FnZTwvZW0+PC9DT0RFPjwvQT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPk1lc3NhZ2VSZWZlcmVuY2UuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNzZXRFTWVzc2FnZShvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlKSI+c2V0RU1lc3NhZ2U8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT48ZW0+RU1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U09BUEhlYWRlckJhc2UuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI2dldEVNZXNzYWdlKCkiPmdldEVNZXNzYWdlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU1lc3NhZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT4gd2l0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5TT0FQSGVhZGVyQmFzZS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjc2V0RU1lc3NhZ2Uob3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZSkiPnNldEVNZXNzYWdlPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlPC9BPiZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFTWVzc2FnZSgpIj48Q09ERT48ZW0+RU1lc3NhZ2U8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlTWVzc2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1lc3NhZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9NZXNzYWdlUmVmZXJlbmNlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvTWVzc2FnZVJlZmVyZW5jZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODBjODM2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9NZXNzYWdlUmVmZXJlbmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZVJlZmVyZW5jZQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2UiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZU1lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJNZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2U8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5TdWJpbnRlcmZhY2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkZhdWx0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkZhdWx0PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPklucHV0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPklucHV0PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PdXRwdXQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3V0cHV0PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik1lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9OYW1lc3BhY2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9OYW1lc3BhY2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI4Njk1ZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvTmFtZXNwYWNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuTmFtZXNwYWNlIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZU5hbWVzcGFjZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ik5hbWVzcGFjZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5OYW1lc3BhY2U8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5OYW1lc3BhY2U8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk5hbWVzcGFjZTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TmFtZXNwYWNlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk5hbWVzcGFjZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlTmFtZXNwYWNlKCkiPmNyZWF0ZU5hbWVzcGFjZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+TmFtZXNwYWNlPC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL05hbWVzcGFjZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlTmFtZXNwYWNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iTmFtZXNwYWNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvT3BlcmF0aW9uLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvT3BlcmF0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkOWE0NDUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL09wZXJhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbgotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJPcGVyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3BlcmF0aW9uPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZU9wZXJhdGlvbigpIj5jcmVhdGVPcGVyYXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk9wZXJhdGlvbjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3BlcmF0aW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5CaW5kaW5nT3BlcmF0aW9uLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3BlcmF0aW9uLmh0bWwjZ2V0RU9wZXJhdGlvbigpIj5nZXRFT3BlcmF0aW9uPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU9wZXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gd2l0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+QmluZGluZ09wZXJhdGlvbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sI3NldEVPcGVyYXRpb24ob3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uKSI+c2V0RU9wZXJhdGlvbjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PcGVyYXRpb248L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCNnZXRFT3BlcmF0aW9uKCkiPjxDT0RFPjxlbT5FT3BlcmF0aW9uPC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlT3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iT3BlcmF0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvT3V0cHV0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvT3V0cHV0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNzAxZjAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL091dHB1dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VPdXRwdXQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJPdXRwdXQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0PC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3V0cHV0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PdXRwdXQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk91dHB1dDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PdXRwdXQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZU91dHB1dCgpIj5jcmVhdGVPdXRwdXQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk91dHB1dDwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3V0cHV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5PcGVyYXRpb24uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL09wZXJhdGlvbi5odG1sI2dldEVPdXRwdXQoKSI+Z2V0RU91dHB1dDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVPdXRwdXQ8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3V0cHV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5CaW5kaW5nT3V0cHV0LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwjZ2V0RU91dHB1dCgpIj5nZXRFT3V0cHV0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RU91dHB1dDwvYj48L2VtPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gd2l0aCBwYXJhbWV0ZXJzIG9mIHR5cGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk91dHB1dDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+T3BlcmF0aW9uLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNzZXRFT3V0cHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dCkiPnNldEVPdXRwdXQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+T3V0cHV0PC9BPiZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgdmFsdWUgb2YgdGhlICc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCNnZXRFT3V0cHV0KCkiPjxDT0RFPjxlbT5FT3V0cHV0PC9lbT48L0NPREU+PC9BPicgY29udGFpbm1lbnQgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+QmluZGluZ091dHB1dC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sI3NldEVPdXRwdXQob3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0KSI+c2V0RU91dHB1dDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5PdXRwdXQ8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCNnZXRFT3V0cHV0KCkiPjxDT0RFPjxlbT5FT3V0cHV0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlT3V0cHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iT3V0cHV0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvUGFydC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1BhcnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIyOGRkYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvUGFydC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjg1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VQYXJ0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUGFydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0PC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5XU0RMRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVQYXJ0KCkiPmNyZWF0ZVBhcnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlBhcnQ8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+TUlNRU1pbWVYbWwuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sI2dldEVQYXJ0KCkiPmdldEVQYXJ0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RVBhcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPk1JTUVDb250ZW50LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCNnZXRFUGFydCgpIj5nZXRFUGFydDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+TUlNRU1pbWVYbWwuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sI3NldEVQYXJ0KG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQpIj5zZXRFUGFydDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+TUlNRUNvbnRlbnQuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sI3NldEVQYXJ0KG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQpIj5zZXRFUGFydDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9QYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBhcnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPlNPQVBIZWFkZXJCYXNlLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCNnZXRFUGFydCgpIj5nZXRFUGFydDwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQYXJ0PC9iPjwvZW0+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+U09BUEhlYWRlckJhc2UuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sI3NldEVQYXJ0KG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQpIj5zZXRFUGFydDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UGFydDwvQT4mbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIHZhbHVlIG9mIHRoZSAnPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwjZ2V0RVBhcnQoKSI+PENPREU+PGVtPkVQYXJ0PC9lbT48L0NPREU+PC9BPicgcmVmZXJlbmNlPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVBhcnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJQYXJ0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvUG9ydC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1BvcnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY3NDE0MC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvUG9ydC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VQb3J0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUG9ydC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0PC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBvcnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlUG9ydCgpIj5jcmVhdGVQb3J0PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Qb3J0PC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVBvcnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJQb3J0Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvUG9ydFR5cGUuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9Qb3J0VHlwZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGE4NTNlLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9Qb3J0VHlwZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGUiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VQb3J0VHlwZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlBvcnRUeXBlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0VHlwZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0VHlwZTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0VHlwZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBvcnRUeXBlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5XU0RMRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVQb3J0VHlwZSgpIj5jcmVhdGVQb3J0VHlwZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UG9ydCBUeXBlPC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBvcnRUeXBlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5CaW5kaW5nLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjZ2V0RVBvcnRUeXBlKCkiPmdldEVQb3J0VHlwZTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkVQb3J0IFR5cGU8L2I+PC9lbT4nIHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlBvcnRUeXBlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5CaW5kaW5nLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwjc2V0RVBvcnRUeXBlKG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlKSI+c2V0RVBvcnRUeXBlPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydFR5cGU8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCNnZXRFUG9ydFR5cGUoKSI+PENPREU+PGVtPkVQb3J0IFR5cGU8L2VtPjwvQ09ERT48L0E+JyByZWZlcmVuY2U8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVBvcnRUeXBlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iUG9ydFR5cGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9TZXJ2aWNlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvU2VydmljZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWJjMDE1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9TZXJ2aWNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2UiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVNlcnZpY2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJTZXJ2aWNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2U8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+U2VydmljZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9TZXJ2aWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlNlcnZpY2U8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5TZXJ2aWNlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5TZXJ2aWNlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5XU0RMRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVTZXJ2aWNlKCkiPmNyZWF0ZVNlcnZpY2U8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlNlcnZpY2U8L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlU2VydmljZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlNlcnZpY2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9UeXBlcy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1R5cGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYTYwZjUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1R5cGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlcyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVR5cGVzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iVHlwZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXM8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+VHlwZXM8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2NyZWF0ZVR5cGVzKCkiPmNyZWF0ZVR5cGVzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5UeXBlczwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5UeXBlczwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+RGVmaW5pdGlvbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sI2dldEVUeXBlcygpIj5nZXRFVHlwZXM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FVHlwZXM8L2I+PC9lbT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5EZWZpbml0aW9uLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwjc2V0RVR5cGVzKG9yZy5lY2xpcHNlLndzdC53c2RsLlR5cGVzKSI+c2V0RVR5cGVzPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+VHlwZXM8L0E+Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCNnZXRFVHlwZXMoKSI+PENPREU+PGVtPkVUeXBlczwvZW0+PC9DT0RFPjwvQT4nIGNvbnRhaW5tZW50IHJlZmVyZW5jZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlVHlwZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJUeXBlcy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2NkOGEwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5XU0RMRmFjdG9yeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCNjcmVhdGVVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSI+Y3JlYXRlVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1dTRExFbGVtZW50Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETEVsZW1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFhZmQ0NC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETEVsZW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU2MiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExFbGVtZW50IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlV1NETEVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMRWxlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9CPjwvQT48L1REPgotPFREPiZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPlN1YmludGVyZmFjZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZzwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0ZhdWx0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgRmF1bHQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdJbnB1dDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIElucHV0PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIE9wZXJhdGlvbjwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBPdXRwdXQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRlZmluaXRpb248L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4dGVuc2libGUgRWxlbWVudDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GYXVsdDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW1wb3J0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkltcG9ydDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5JbnB1dDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZSBSZWZlcmVuY2U8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5PcGVyYXRpb248L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk91dHB1dDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5PdXRwdXQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBvcnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydFR5cGU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UG9ydCBUeXBlPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+U2VydmljZTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5TZXJ2aWNlPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlR5cGVzPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExFbGVtZW50LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Db250YWluZXI8L2I+PC9lbT4nIHJlZmVyZW5jZS48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+U3ViaW50ZXJmYWNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQWRkcmVzczwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5BZGRyZXNzPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQQmluZGluZzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBPcGVyYXRpb248L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj5IVFRQVXJsRW5jb2RlZDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgRW5jb2RlZDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPkhUVFBVcmxSZXBsYWNlbWVudDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5VcmwgUmVwbGFjZW1lbnQ8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPlN1YmludGVyZmFjZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRUNvbnRlbnQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Q29udGVudDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+TUlNRU1pbWVYbWw8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWltZSBYbWw8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk11bHRpcGFydCBSZWxhdGVkPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj5NSU1FUGFydDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5TdWJpbnRlcmZhY2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExFbGVtZW50PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBBZGRyZXNzPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFkZHJlc3M8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCaW5kaW5nPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmc8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBCb2R5PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJvZHk8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQRmF1bHQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RmF1bHQ8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlcjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5IZWFkZXI8L2I+PC9lbT4nPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludGVyZmFjZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlciBCYXNlPC9iPjwvZW0+JzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtpbnRlcmZhY2U8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckZhdWx0PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkhlYWRlciBGYXVsdDwvYj48L2VtPic8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50ZXJmYWNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQT3BlcmF0aW9uPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk9wZXJhdGlvbjwvYj48L2VtPic8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVdTRExFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETEVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9XU0RMRmFjdG9yeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1dTRExGYWN0b3J5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZDBiZDYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1dTRExGYWN0b3J5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3RvcnkKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRmFjdG9yeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVdTRExGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETEZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3Rvcnk8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+RmllbGRzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gZGVjbGFyZWQgYXMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRmFjdG9yeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjZUlOU1RBTkNFIj5lSU5TVEFOQ0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExGYWN0b3J5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEZhY3Rvcnk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExQYWNrYWdlLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sI2dldFdTRExGYWN0b3J5KCkiPmdldFdTRExGYWN0b3J5PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWw8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVdTRExGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETEZhY3RvcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9XU0RMUGFja2FnZS5MaXRlcmFscy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwMjVkNmYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTGl0ZXJhbHMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZS5MaXRlcmFscyI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVdTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTGl0ZXJhbHM8L0I+PC9IMj4KLTwvQ0VOVEVSPgotTm8gdXNhZ2Ugb2Ygb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UuTGl0ZXJhbHMKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVdTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9XU0RMUGFja2FnZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1dTRExQYWNrYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMWIxOWYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1dTRExQYWNrYWdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2UKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGFja2FnZSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVdTRExQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFBhY2thZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBhY2thZ2U8L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+RmllbGRzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gZGVjbGFyZWQgYXMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGFja2FnZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETFBhY2thZ2UuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwjZUlOU1RBTkNFIj5lSU5TVEFOQ0U8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGFja2FnZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHRoYXQgcmV0dXJuIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2U8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExGYWN0b3J5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sI2dldFdTRExQYWNrYWdlKCkiPmdldFdTRExQYWNrYWdlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VXU0RMUGFja2FnZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExQYWNrYWdlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETFBsdWdpbi5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1dTRExQbHVnaW4uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI3NTJmMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETFBsdWdpbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBsdWdpbgotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBsdWdpbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VXU0RMUGx1Z2luLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFBsdWdpbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIENsYXNzPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQbHVnaW48L0I+PC9IMj4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVBhY2thZ2VzIHRoYXQgdXNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGx1Z2luPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGx1Z2luPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+RmllbGRzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gZGVjbGFyZWQgYXMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQbHVnaW48L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbjwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETFBsdWdpbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbi5odG1sI0lOU1RBTkNFIj5JTlNUQU5DRTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwbHVnaW4uPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlV1NETFBsdWdpbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExQbHVnaW4uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE5MDQyZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24KLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIENsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbiI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVdTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIENsYXNzPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbjwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbjwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGx1Z2luSW1wbGVtZW50YXRpb248L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMUGx1Z2luSW1wbGVtZW50YXRpb248L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExQbHVnaW4uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCNnZXRQbHVnaW4oKSI+Z2V0UGx1Z2luPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBFY2xpcHNlIHBsdWdpbi48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvXGNsYXNzLXVzZVdTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTMyNmQ3My4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudAotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9cY2xhc3MtdXNlWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETEZhY3RvcnkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwjY3JlYXRlWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKSI+Y3JlYXRlWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlhTRCBTY2hlbWEgRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9lbT4nPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL1xjbGFzcy11c2VYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLWZyYW1lLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLWZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YjZkNzUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1mcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzZGwKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbCBwYWNrYWdlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiPgotPEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZVRpdGxlRm9udCI+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBOT1dSQVA+PEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLUludGVyZmFjZXM8L0ZPTlQ+Jm5ic3A7Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+Ci08QlI+Ci08QSBIUkVGPSJCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+QmluZGluZzwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJCaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5CaW5kaW5nRmF1bHQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+QmluZGluZ0lucHV0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IkJpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5CaW5kaW5nT3BlcmF0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IkJpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5CaW5kaW5nT3V0cHV0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IkRlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5EZWZpbml0aW9uPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5FeHRlbnNpYmxlRWxlbWVudDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkZhdWx0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IkltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkltcG9ydDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJJbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPklucHV0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Ik1lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5NZXNzYWdlPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Ik1lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5NZXNzYWdlUmVmZXJlbmNlPC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9Ik5hbWVzcGFjZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPk5hbWVzcGFjZTwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5PcGVyYXRpb248L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+T3V0cHV0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IlBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5QYXJ0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IlBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5Qb3J0PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IlBvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+UG9ydFR5cGU8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPlNlcnZpY2U8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5UeXBlczwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJVbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5XU0RMRWxlbWVudDwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJXU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPldTRExGYWN0b3J5PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IldTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiIHRhcmdldD0iY2xhc3NGcmFtZSI+PEk+V1NETFBhY2thZ2U8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5XU0RMUGFja2FnZS5MaXRlcmFsczwvST48L0E+Ci08QlI+Ci08QSBIUkVGPSJYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9JPjwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi0KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIE5PV1JBUD48Rk9OVCBzaXplPSIrMSIgQ0xBU1M9IkZyYW1lSGVhZGluZ0ZvbnQiPgotQ2xhc3NlczwvRk9OVD4mbmJzcDsKLTxGT05UIENMQVNTPSJGcmFtZUl0ZW1Gb250Ij4KLTxCUj4KLTxBIEhSRUY9IldTRExQbHVnaW4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPldTRExQbHVnaW48L0E+Ci08QlI+Ci08QSBIUkVGPSJXU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbjwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMjhjOWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMTAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzZGwKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbCBwYWNrYWdlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJvcmcuZWNsaXBzZS53c3Qud3NkbCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYgUEFDS0FHRSZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Qj5ORVhUIFBBQ0tBR0U8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08SDI+Ci1QYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsCi08L0gyPgotCi0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4KLTxQPgotPEI+U2VlOjwvQj4KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxBIEhSRUY9IiNwYWNrYWdlX2Rlc2NyaXB0aW9uIj48Qj5EZXNjcmlwdGlvbjwvQj48L0E+Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5JbnRlcmZhY2UgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmc8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZzwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ0ZhdWx0PC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgRmF1bHQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdJbnB1dDwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIElucHV0PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+QmluZGluZ09wZXJhdGlvbjwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nIE9wZXJhdGlvbjwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkJpbmRpbmdPdXRwdXQ8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBPdXRwdXQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRlZmluaXRpb248L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4dGVuc2libGUgRWxlbWVudDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5GYXVsdDwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GYXVsdDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbXBvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+SW1wb3J0PC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkltcG9ydDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5JbnB1dDwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5JbnB1dDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2U8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZTwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+TWVzc2FnZSBSZWZlcmVuY2U8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTmFtZXNwYWNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk5hbWVzcGFjZTwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5OYW1lc3BhY2U8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk9wZXJhdGlvbjwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5PcGVyYXRpb248L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk91dHB1dDwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5PdXRwdXQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5QYXJ0PC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Qb3J0PC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBvcnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+UG9ydFR5cGU8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UG9ydCBUeXBlPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+U2VydmljZTwvQT48L0I+PC9URD4KLTxURD5BIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5TZXJ2aWNlPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1R5cGVzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlR5cGVzPC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlR5cGVzPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VW5rbm93biBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETEVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETEVsZW1lbnQ8L0E+PC9CPjwvVEQ+Ci08VEQ+QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRmFjdG9yeTwvQT48L0I+PC9URD4KLTxURD5UaGUgPGI+RmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPldTRExQYWNrYWdlPC9BPjwvQj48L1REPgotPFREPlRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0E+PC9CPjwvVEQ+Ci08VEQ+RGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudAotIAotICAgZWFjaCBjbGFzcywKLSAgIGVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLAotICAgZWFjaCBlbnVtLAotICAgYW5kIGVhY2ggZGF0YSB0eXBlCi0gCi0gPCE8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj48L1REPgotPFREPkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlhTRCBTY2hlbWEgRXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLQotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q2xhc3MgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbjwvQT48L0I+PC9URD4KLTxURD5UaGUgPGI+UGx1Z2luPC9iPiBmb3IgdGhlIG1vZGVsLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+V1NETFBsdWdpbkltcGxlbWVudGF0aW9uPC9BPjwvQj48L1REPgotPFREPlRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIEVjbGlwc2UgPGI+UGx1Z2luPC9iPi48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLQotPFA+Ci08QSBOQU1FPSJwYWNrYWdlX2Rlc2NyaXB0aW9uIj48IS0tIC0tPjwvQT48SDI+Ci1QYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsIERlc2NyaXB0aW9uCi08L0gyPgotCi08UD4KLTxwPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuCi0gICAgICAgICAgICAgICAgPC9wPgotPHRhYmxlIHdpZHRoPSI1MDAiPgotPHRyPgotPHRkPgotPHA+VGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIGxvYWQsIG1vZGlmeSwgYW5kIHNhdmUgV1NETCAxLjEgZG9jdW1lbnRzLgotICAgICAgICAgICAgICAgIDwvcD4KLTwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTxQPgotCi08UD4KLTxETD4KLTwvREw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBQQUNLQUdFJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPk5FWFQgUEFDS0FHRTwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS10cmVlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXRyZWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk0Njk5NC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXRyZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0MyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbCBDbGFzcyBIaWVyYXJjaHkKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJvcmcuZWNsaXBzZS53c3Qud3NkbCBDbGFzcyBIaWVyYXJjaHkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2UtdHJlZS5odG1sIj48Qj5ORVhUPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLUhpZXJhcmNoeSBGb3IgUGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbAotPC9IMj4KLTwvQ0VOVEVSPgotPERMPgotPERUPjxCPlBhY2thZ2UgSGllcmFyY2hpZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy10cmVlLmh0bWwiPkFsbCBQYWNrYWdlczwvQT48L0RMPgotPEhSPgotPEgyPgotQ2xhc3MgSGllcmFyY2h5Ci08L0gyPgotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YS5sYW5nLk9iamVjdDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPkVjbGlwc2VQbHVnaW48VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5XU0RMUGx1Z2luSW1wbGVtZW50YXRpb248L0I+PC9BPjwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5FTUZQbHVnaW48VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETFBsdWdpbjwvQj48L0E+PC9VTD4KLTwvVUw+Ci08L1VMPgotPEgyPgotSW50ZXJmYWNlIEhpZXJhcmNoeQotPC9IMj4KLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT4pCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+PC9VTD4KLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TmFtZXNwYWNlPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5qYXZhLmlvLlNlcmlhbGl6YWJsZTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuQmluZGluZzxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuQmluZGluZ0ZhdWx0PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuQmluZGluZ0lucHV0PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdJbnB1dDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ09wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuQmluZGluZ091dHB1dDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ091dHB1dDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuRGVmaW5pdGlvbjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0RlZmluaXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RGVmaW5pdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuRmF1bHQ8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5GYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLkltcG9ydDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5JbXBvcnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLklucHV0PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+SW5wdXQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5NZXNzYWdlPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5NZXNzYWdlPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5PcGVyYXRpb248VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+T3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5PdXRwdXQ8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+T3V0cHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuUGFydDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UGFydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuUG9ydDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UG9ydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuUG9ydFR5cGU8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5Qb3J0VHlwZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuU2VydmljZTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+U2VydmljZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuVHlwZXM8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5UeXBlczwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5XU0RMRWxlbWVudDwvQj48L0E+PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT48L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0I+PC9BPjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ0lucHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkJpbmRpbmdJbnB1dCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ09wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5CaW5kaW5nT3V0cHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkRlZmluaXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuRGVmaW5pdGlvbikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5JbXBvcnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuSW1wb3J0KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5NZXNzYWdlPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLk1lc3NhZ2UpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk1lc3NhZ2VSZWZlcmVuY2U8L0I+PC9BPjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkZhdWx0KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+SW5wdXQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuSW5wdXQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+T3V0cHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLk91dHB1dCkKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+T3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLk9wZXJhdGlvbikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UGFydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5QYXJ0KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5Qb3J0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLlBvcnQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5Qb3J0VHlwZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5Qb3J0VHlwZSkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+U2VydmljZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5TZXJ2aWNlKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+VHlwZXM8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuVHlwZXMpCi08L1VMPgotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPldTRExGYWN0b3J5PC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5XU0RMUGFja2FnZTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETFBhY2thZ2UuTGl0ZXJhbHM8L0I+PC9BPjwvVUw+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLXRyZWUuaHRtbCI+PEI+TkVYVDwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS11c2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2UtdXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZDQ3M2YuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS11c2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1MCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgUGFja2FnZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQj48L0E+PC9URD4KLTxURD4mbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1DbGFzc2VzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdXNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0JpbmRpbmcuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZzwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CaW5kaW5nPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9CaW5kaW5nRmF1bHQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ0ZhdWx0PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgRmF1bHQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0JpbmRpbmdJbnB1dC5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5CaW5kaW5nSW5wdXQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBJbnB1dDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvQmluZGluZ09wZXJhdGlvbi5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5CaW5kaW5nT3BlcmF0aW9uPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgT3BlcmF0aW9uPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9CaW5kaW5nT3V0cHV0Lmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdPdXRwdXQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBPdXRwdXQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0RlZmluaXRpb24uaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RGVmaW5pdGlvbjwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5EZWZpbml0aW9uPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0V4dGVuc2libGVFbGVtZW50Lmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkV4dGVuc2libGVFbGVtZW50PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4dGVuc2libGUgRWxlbWVudDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvRmF1bHQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RmF1bHQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RmF1bHQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL0ltcG9ydC5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5JbXBvcnQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SW1wb3J0PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9JbnB1dC5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5JbnB1dDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5JbnB1dDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvTWVzc2FnZS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5NZXNzYWdlPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TWVzc2FnZVJlZmVyZW5jZTwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5NZXNzYWdlIFJlZmVyZW5jZTwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvTmFtZXNwYWNlLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk5hbWVzcGFjZTwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5OYW1lc3BhY2U8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL09wZXJhdGlvbi5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5PcGVyYXRpb248L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3BlcmF0aW9uPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9PdXRwdXQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+T3V0cHV0PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk91dHB1dDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvUGFydC5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QYXJ0PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBhcnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1BvcnQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UG9ydDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Qb3J0PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9Qb3J0VHlwZS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5Qb3J0VHlwZTwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Qb3J0IFR5cGU8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1NlcnZpY2UuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+U2VydmljZTwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5TZXJ2aWNlPC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9UeXBlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5UeXBlczwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5UeXBlczwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Vbmtub3duIEV4dGVuc2liaWxpdHkgRWxlbWVudDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETEVsZW1lbnQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETEVsZW1lbnQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETEZhY3RvcnkuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETEZhY3Rvcnk8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETFBhY2thZ2UuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETFBhY2thZ2U8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETFBsdWdpbi5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5XU0RMUGx1Z2luPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSA8Yj5QbHVnaW48L2I+IGZvciB0aGUgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETFBsdWdpbkltcGxlbWVudGF0aW9uLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPldTRExQbHVnaW5JbXBsZW1lbnRhdGlvbjwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBFY2xpcHNlIDxiPlBsdWdpbjwvYj4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+WFNEIFNjaGVtYSBFeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1DbGFzc2VzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdXNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETEVsZW1lbnQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPldTRExFbGVtZW50PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1DbGFzc2VzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdXNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4dGVuc2liaWxpdHkgRWxlbWVudDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvUGFydC5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+UGFydDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5QYXJ0PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9XU0RMRWxlbWVudC5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+V1NETEVsZW1lbnQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RWxlbWVudDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLUNsYXNzZXMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB1c2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RXh0ZW5zaWJpbGl0eSBFbGVtZW50PC9iPjwvZW0+Jy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2NsYXNzLXVzZS9NZXNzYWdlLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5NZXNzYWdlPC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk1lc3NhZ2U8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvY2xhc3MtdXNlL1BhcnQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlBhcnQ8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UGFydDwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvV1NETEVsZW1lbnQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPldTRExFbGVtZW50PC9CPjwvQT48L0I+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotQ2xhc3NlcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+IHVzZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvRGVmaW5pdGlvbi5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPkRlZmluaXRpb248L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGVmaW5pdGlvbjwvYj48L2VtPicuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9jbGFzcy11c2UvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5FeHRlbnNpYmlsaXR5IEVsZW1lbnQ8L2I+PC9lbT4nLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYzE0YmIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxOSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViBDTEFTUyZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0gyPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGludGVyZmFjZSA8Qj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0I+PC9ETD4KLTwvUFJFPgotCi08UD4KLTxwPgotIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvCi0gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrCi0gZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4KLSAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLgotIDwvcD4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwjY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPmNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWVzcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb2NhbE5hbWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1jcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudDwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+IDxCPmNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZXNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2xvY2FsTmFtZSk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWIENMQVNTJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUyYTllNC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMTkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5IGludGVyZmFjZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTwvSDI+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5PC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci08cD4KLSA8Yj5Ob3RlOjwvYj4gVGhpcyBjbGFzcy9pbnRlcmZhY2UgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBleHBlY3RlZCB0bwotIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjawotIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuCi0gKHJlcGVhdGVkbHkpIGFzIHRoZSBBUEkgZXZvbHZlcy4KLSA8L3A+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2luY2U6PC9CPjwvRFQ+Ci0gIDxERD4xLjA8L0REPgotPC9ETD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sI3JlZ2lzdGVyRmFjdG9yeShqYXZhLmxhbmcuU3RyaW5nLCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSkiPnJlZ2lzdGVyRmFjdG9yeTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lc3BhY2UsCi0gICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0E+Jm5ic3A7ZmFjdG9yeSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0icmVnaXN0ZXJGYWN0b3J5KGphdmEubGFuZy5TdHJpbmcsIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5KSI+PCEtLSAtLT48L0E+PEgzPgotcmVnaXN0ZXJGYWN0b3J5PC9IMz4KLTxQUkU+Ci12b2lkIDxCPnJlZ2lzdGVyRmFjdG9yeTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWVzcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5PC9BPiZuYnNwO2ZhY3RvcnkpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4Y2Y5OTcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVdTRExDb25zdGFudHMKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMgY2xhc3MiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IldTRExDb25zdGFudHMiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMQ29uc3RhbnRzLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExDb25zdGFudHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci1ERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBXU0RMQ29uc3RhbnRzPC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM8L0I+Ci08L1BSRT4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBjbGFzcyA8Qj5XU0RMQ29uc3RhbnRzPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8L0RMPgotPC9QUkU+Ci0KLTxQPgotVGhpcyBjbGFzcyBkZWZpbmVzIGNvbnN0YW50cyBmb3IgV1NETCBlbGVtZW50IHRhZ3MgYW5kIHJlbGV2YW50IG5hbWVzcGFjZXMuCi08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2luY2U6PC9CPjwvRFQ+Ci0gIDxERD4xLjA8L0REPgotPC9ETD4KLTxIUj4KLQotPFA+Ci08IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0JJTkRJTkciPkJJTkRJTkc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJiaW5kaW5nIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjQklORElOR19BVFRSSUJVVEUiPkJJTkRJTkdfQVRUUklCVVRFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBhdHRyaWJ1dGUgaXMgPGNvZGU+ImJpbmRpbmciPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNCSU5ESU5HX0VMRU1FTlRfVEFHIj5CSU5ESU5HX0VMRU1FTlRfVEFHPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iYmluZGluZyI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjREVGSU5JVElPTiI+REVGSU5JVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImRlZmluaXRpb25zIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjREVGSU5JVElPTl9FTEVNRU5UX1RBRyI+REVGSU5JVElPTl9FTEVNRU5UX1RBRzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImRlZmluaXRpb25zIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNET0NVTUVOVEFUSU9OIj5ET0NVTUVOVEFUSU9OPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iZG9jdW1lbnRhdGlvbiI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0RPQ1VNRU5UQVRJT05fRUxFTUVOVF9UQUciPkRPQ1VNRU5UQVRJT05fRUxFTUVOVF9UQUc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJkb2N1bWVudGF0aW9uIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjRUxFTUVOVF9BVFRSSUJVVEUiPkVMRU1FTlRfQVRUUklCVVRFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBhdHRyaWJ1dGUgaXMgPGNvZGU+ImVsZW1lbnQiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNFTkNPRElOR19BVFRSSUJVVEUiPkVOQ09ESU5HX0FUVFJJQlVURTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJlbmNvZGluZyI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjRkFVTFQiPkZBVUxUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iZmF1bHQiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNGQVVMVF9FTEVNRU5UX1RBRyI+RkFVTFRfRUxFTUVOVF9UQUc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJmYXVsdCI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjSU1QT1JUIj5JTVBPUlQ8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJpbXBvcnQiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNJTVBPUlRfRUxFTUVOVF9UQUciPklNUE9SVF9FTEVNRU5UX1RBRzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImltcG9ydCI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjSU5QVVQiPklOUFVUPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iaW5wdXQiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNJTlBVVF9FTEVNRU5UX1RBRyI+SU5QVVRfRUxFTUVOVF9UQUc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJpbnB1dCI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI0xPQ0FUSU9OX0FUVFJJQlVURSI+TE9DQVRJT05fQVRUUklCVVRFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBhdHRyaWJ1dGUgaXMgPGNvZGU+ImxvY2F0aW9uIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNNRVNTQUdFIj5NRVNTQUdFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ibWVzc2FnZSI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI01FU1NBR0VfQVRUUklCVVRFIj5NRVNTQUdFX0FUVFJJQlVURTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJtZXNzYWdlIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjTUVTU0FHRV9FTEVNRU5UX1RBRyI+TUVTU0FHRV9FTEVNRU5UX1RBRzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+Im1lc3NhZ2UiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNOQU1FX0FUVFJJQlVURSI+TkFNRV9BVFRSSUJVVEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4ibmFtZSI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI05BTUVTUEFDRV9BVFRSSUJVVEUiPk5BTUVTUEFDRV9BVFRSSUJVVEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4ibmFtZXNwYWNlIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNPUEVSQVRJT04iPk9QRVJBVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+Im9wZXJhdGlvbiI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI09QRVJBVElPTl9FTEVNRU5UX1RBRyI+T1BFUkFUSU9OX0VMRU1FTlRfVEFHPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ib3BlcmF0aW9uIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNPVVRQVVQiPk9VVFBVVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+Im91dHB1dCI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI09VVFBVVF9FTEVNRU5UX1RBRyI+T1VUUFVUX0VMRU1FTlRfVEFHPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ib3V0cHV0IjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjUEFSQU1FVEVSX09SREVSX0FUVFJJQlVURSI+UEFSQU1FVEVSX09SREVSX0FUVFJJQlVURTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJwYXJhbWV0ZXJPcmRlciI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjUEFSVCI+UEFSVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InBhcnQiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNQQVJUX0VMRU1FTlRfVEFHIj5QQVJUX0VMRU1FTlRfVEFHPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icGFydCI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjUE9SVCI+UE9SVDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InBvcnQiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNQT1JUX0VMRU1FTlRfVEFHIj5QT1JUX0VMRU1FTlRfVEFHPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icG9ydCI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjUE9SVF9UWVBFIj5QT1JUX1RZUEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJwb3J0VHlwZSI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1BPUlRfVFlQRV9FTEVNRU5UX1RBRyI+UE9SVF9UWVBFX0VMRU1FTlRfVEFHPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icG9ydFR5cGUiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNSRVNPVVJDRV9VUklfQVRUUklCVVRFIj5SRVNPVVJDRV9VUklfQVRUUklCVVRFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBhdHRyaWJ1dGUgaXMgPGNvZGU+InJlc291cmNlVVJJIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzE5OTkiPlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8xOTk5PC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSB2YWx1ZSA8Y29kZT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YTUxTY2hlbWEiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNTQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMF8xMCI+U0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDBfMTA8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHZhbHVlIDxjb2RlPiJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzEwL1hNTFNjaGVtYSI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1NDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxIj5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgdmFsdWUgPGNvZGU+Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNTRVJWSUNFIj5TRVJWSUNFPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ic2VydmljZSI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1NFUlZJQ0VfRUxFTUVOVF9UQUciPlNFUlZJQ0VfRUxFTUVOVF9UQUc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJzZXJ2aWNlIjwvY29kZT4uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjVEFSR0VUTkFNRVNQQUNFX0FUVFJJQlVURSI+VEFSR0VUTkFNRVNQQUNFX0FUVFJJQlVURTwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJ0YXJnZXROYW1lc3BhY2UiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNUWVBFX0FUVFJJQlVURSI+VFlQRV9BVFRSSUJVVEU8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4idHlwZSI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjVFlQRVMiPlRZUEVTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4idHlwZXMiPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNUWVBFU19FTEVNRU5UX1RBRyI+VFlQRVNfRUxFTUVOVF9UQUc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJ0eXBlcyI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI1dTRExfTkFNRVNQQUNFX1VSSSI+V1NETF9OQU1FU1BBQ0VfVVJJPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSB2YWx1ZSA8Y29kZT4iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPC9jb2RlPi48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNYU0RfTkFNRVNQQUNFX1VSSSI+WFNEX05BTUVTUEFDRV9VUkk8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHZhbHVlIDxjb2RlPiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI8L2NvZGU+LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNXU0RMQ29uc3RhbnRzKCkiPldTRExDb25zdGFudHM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0QXR0cmlidXRlKG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmEubGFuZy5TdHJpbmcpIj5nZXRBdHRyaWJ1dGU8L0E+PC9CPihvcmcudzNjLmRvbS5FbGVtZW50Jm5ic3A7ZWxlbWVudCwKLSAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7YXR0cmlidXRlTmFtZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYW4gYXR0cmlidXRlIHZhbHVlIGdpdmVuIHRoZSBhdHRyaWJ1dGVOYW1lIGluIHRoZSBlbGVtZW50LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI2dldEVsZW1lbnRUYWcoaW50KSI+Z2V0RWxlbWVudFRhZzwvQT48L0I+KGludCZuYnNwO25vZGVUeXBlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIFN0cmluZyBuYW1lIG9mIGVsZW1lbnQgdGFnIGdpdmVuIHRoZSBub2RlVHlwZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNpc01hdGNoaW5nTmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj5pc01hdGNoaW5nTmFtZXNwYWNlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWVzcGFjZTEsCi0gICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lc3BhY2UyKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0cnVlIGlmIG5hbWVzcGFjZTEgZXF1YWxzIHRvIG5hbWVzcGFjZTIuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjaXNXU0RMTmFtZXNwYWNlKGphdmEubGFuZy5TdHJpbmcpIj5pc1dTRExOYW1lc3BhY2U8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZXNwYWNlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBuYW1lc3BhY2UgaXMgdGhlIFdTREwgbmFtZXNwYWNlIG9yIG5vdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI25vZGVUeXBlKG9yZy53M2MuZG9tLk5vZGUpIj5ub2RlVHlwZTwvQT48L0I+KG9yZy53M2MuZG9tLk5vZGUmbmJzcDtub2RlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5vZGUgdHlwZSBkZWZpbmVkIGluIFdTRExDb25zdGFudHMgZ2l2ZW4gdGhlIERPTSBub2RlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjbm9kZVR5cGUoamF2YS5sYW5nLlN0cmluZykiPm5vZGVUeXBlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2xvY2FsTmFtZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBub2RlIHR5cGUgZ2l2ZW4gdGhlIFN0cmluZyBuYW1lIG9mIGVsZW1lbnQgdGFnLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmVxdWFscywgZ2V0Q2xhc3MsIGhhc2hDb2RlLCBub3RpZnksIG5vdGlmeUFsbCwgdG9TdHJpbmcsIHdhaXQsIHdhaXQsIHdhaXQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iQklORElORyI+PCEtLSAtLT48L0E+PEgzPgotQklORElORzwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPEI+QklORElORzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImJpbmRpbmciPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0RWxlbWVudFRhZyhpbnQpIj48Q09ERT5nZXRFbGVtZW50VGFnKGludCkuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkJJTkRJTkciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTiI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTjwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPEI+REVGSU5JVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImRlZmluaXRpb25zIjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI2dldEVsZW1lbnRUYWcoaW50KSI+PENPREU+Z2V0RWxlbWVudFRhZyhpbnQpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5ERUZJTklUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkRPQ1VNRU5UQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLURPQ1VNRU5UQVRJT048L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IDxCPkRPQ1VNRU5UQVRJT048L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJkb2N1bWVudGF0aW9uIjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI2dldEVsZW1lbnRUYWcoaW50KSI+PENPREU+Z2V0RWxlbWVudFRhZyhpbnQpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5ET0NVTUVOVEFUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkZBVUxUIj48IS0tIC0tPjwvQT48SDM+Ci1GQVVMVDwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPEI+RkFVTFQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJmYXVsdCI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRFbGVtZW50VGFnKGludCkiPjxDT0RFPmdldEVsZW1lbnRUYWcoaW50KS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuRkFVTFQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1QT1JUIj48IS0tIC0tPjwvQT48SDM+Ci1JTVBPUlQ8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IDxCPklNUE9SVDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImltcG9ydCI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRFbGVtZW50VGFnKGludCkiPjxDT0RFPmdldEVsZW1lbnRUYWcoaW50KS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuSU1QT1JUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IklOUFVUIj48IS0tIC0tPjwvQT48SDM+Ci1JTlBVVDwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPEI+SU5QVVQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJpbnB1dCI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRFbGVtZW50VGFnKGludCkiPjxDT0RFPmdldEVsZW1lbnRUYWcoaW50KS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuSU5QVVQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTUVTU0FHRSI+PCEtLSAtLT48L0E+PEgzPgotTUVTU0FHRTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPEI+TUVTU0FHRTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+Im1lc3NhZ2UiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0RWxlbWVudFRhZyhpbnQpIj48Q09ERT5nZXRFbGVtZW50VGFnKGludCkuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLk1FU1NBR0UiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT048L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IDxCPk9QRVJBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+Im9wZXJhdGlvbiI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRFbGVtZW50VGFnKGludCkiPjxDT0RFPmdldEVsZW1lbnRUYWcoaW50KS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuT1BFUkFUSU9OIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik9VVFBVVCI+PCEtLSAtLT48L0E+PEgzPgotT1VUUFVUPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Qj5PVVRQVVQ8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJvdXRwdXQiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0RWxlbWVudFRhZyhpbnQpIj48Q09ERT5nZXRFbGVtZW50VGFnKGludCkuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLk9VVFBVVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQQVJUIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJUPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Qj5QQVJUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icGFydCI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRFbGVtZW50VGFnKGludCkiPjxDT0RFPmdldEVsZW1lbnRUYWcoaW50KS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuUEFSVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Qj5QT1JUPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icG9ydCI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRFbGVtZW50VGFnKGludCkiPjxDT0RFPmdldEVsZW1lbnRUYWcoaW50KS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuUE9SVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX1RZUEUiPjwhLS0gLS0+PC9BPjxIMz4KLVBPUlRfVFlQRTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPEI+UE9SVF9UWVBFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icG9ydFR5cGUiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0RWxlbWVudFRhZyhpbnQpIj48Q09ERT5nZXRFbGVtZW50VGFnKGludCkuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlBPUlRfVFlQRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJTRVJWSUNFIj48IS0tIC0tPjwvQT48SDM+Ci1TRVJWSUNFPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Qj5TRVJWSUNFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ic2VydmljZSI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRFbGVtZW50VGFnKGludCkiPjxDT0RFPmdldEVsZW1lbnRUYWcoaW50KS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuU0VSVklDRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJUWVBFUyI+PCEtLSAtLT48L0E+PEgzPgotVFlQRVM8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IDxCPlRZUEVTPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4idHlwZXMiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0RWxlbWVudFRhZyhpbnQpIj48Q09ERT5nZXRFbGVtZW50VGFnKGludCkuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlRZUEVTIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkJJTkRJTkdfRUxFTUVOVF9UQUciPjwhLS0gLS0+PC9BPjxIMz4KLUJJTkRJTkdfRUxFTUVOVF9UQUc8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5CSU5ESU5HX0VMRU1FTlRfVEFHPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4iYmluZGluZyI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNub2RlVHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+bm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkJJTkRJTkdfRUxFTUVOVF9UQUciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iREVGSU5JVElPTl9FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PEgzPgotREVGSU5JVElPTl9FTEVNRU5UX1RBRzwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPkRFRklOSVRJT05fRUxFTUVOVF9UQUc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJkZWZpbml0aW9ucyI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNub2RlVHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+bm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkRFRklOSVRJT05fRUxFTUVOVF9UQUciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRE9DVU1FTlRBVElPTl9FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PEgzPgotRE9DVU1FTlRBVElPTl9FTEVNRU5UX1RBRzwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPkRPQ1VNRU5UQVRJT05fRUxFTUVOVF9UQUc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJkb2N1bWVudGF0aW9uIjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI25vZGVUeXBlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5ub2RlVHlwZShTdHJpbmcgbG9jYWxOYW1lKS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuRE9DVU1FTlRBVElPTl9FTEVNRU5UX1RBRyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJGQVVMVF9FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PEgzPgotRkFVTFRfRUxFTUVOVF9UQUc8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5GQVVMVF9FTEVNRU5UX1RBRzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+ImZhdWx0IjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI25vZGVUeXBlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5ub2RlVHlwZShTdHJpbmcgbG9jYWxOYW1lKS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuRkFVTFRfRUxFTUVOVF9UQUciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU1QT1JUX0VMRU1FTlRfVEFHIj48IS0tIC0tPjwvQT48SDM+Ci1JTVBPUlRfRUxFTUVOVF9UQUc8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5JTVBPUlRfRUxFTUVOVF9UQUc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJpbXBvcnQiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjbm9kZVR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPm5vZGVUeXBlKFN0cmluZyBsb2NhbE5hbWUpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5JTVBPUlRfRUxFTUVOVF9UQUciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU5QVVRfRUxFTUVOVF9UQUciPjwhLS0gLS0+PC9BPjxIMz4KLUlOUFVUX0VMRU1FTlRfVEFHPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+SU5QVVRfRUxFTUVOVF9UQUc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJpbnB1dCI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNub2RlVHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+bm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLklOUFVUX0VMRU1FTlRfVEFHIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1FU1NBR0VfRUxFTUVOVF9UQUciPjwhLS0gLS0+PC9BPjxIMz4KLU1FU1NBR0VfRUxFTUVOVF9UQUc8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5NRVNTQUdFX0VMRU1FTlRfVEFHPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4ibWVzc2FnZSI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNub2RlVHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+bm9kZVR5cGUoU3RyaW5nIGxvY2FsTmFtZSkuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLk1FU1NBR0VfRUxFTUVOVF9UQUciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1BFUkFUSU9OX0VMRU1FTlRfVEFHIj48IS0tIC0tPjwvQT48SDM+Ci1PUEVSQVRJT05fRUxFTUVOVF9UQUc8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5PUEVSQVRJT05fRUxFTUVOVF9UQUc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJvcGVyYXRpb24iPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjbm9kZVR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPm5vZGVUeXBlKFN0cmluZyBsb2NhbE5hbWUpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5PUEVSQVRJT05fRUxFTUVOVF9UQUciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iT1VUUFVUX0VMRU1FTlRfVEFHIj48IS0tIC0tPjwvQT48SDM+Ci1PVVRQVVRfRUxFTUVOVF9UQUc8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5PVVRQVVRfRUxFTUVOVF9UQUc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJvdXRwdXQiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjbm9kZVR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPm5vZGVUeXBlKFN0cmluZyBsb2NhbE5hbWUpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5PVVRQVVRfRUxFTUVOVF9UQUciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUEFSVF9FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PEgzPgotUEFSVF9FTEVNRU5UX1RBRzwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPlBBUlRfRUxFTUVOVF9UQUc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJwYXJ0IjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI25vZGVUeXBlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5ub2RlVHlwZShTdHJpbmcgbG9jYWxOYW1lKS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuUEFSVF9FTEVNRU5UX1RBRyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQT1JUX0VMRU1FTlRfVEFHIj48IS0tIC0tPjwvQT48SDM+Ci1QT1JUX0VMRU1FTlRfVEFHPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+UE9SVF9FTEVNRU5UX1RBRzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InBvcnQiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjbm9kZVR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPm5vZGVUeXBlKFN0cmluZyBsb2NhbE5hbWUpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5QT1JUX0VMRU1FTlRfVEFHIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlBPUlRfVFlQRV9FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PEgzPgotUE9SVF9UWVBFX0VMRU1FTlRfVEFHPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+UE9SVF9UWVBFX0VMRU1FTlRfVEFHPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBlbGVtZW50IHRhZyBpcyA8Y29kZT4icG9ydFR5cGUiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjbm9kZVR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPm5vZGVUeXBlKFN0cmluZyBsb2NhbE5hbWUpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5QT1JUX1RZUEVfRUxFTUVOVF9UQUciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU0VSVklDRV9FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PEgzPgotU0VSVklDRV9FTEVNRU5UX1RBRzwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPlNFUlZJQ0VfRUxFTUVOVF9UQUc8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGVsZW1lbnQgdGFnIGlzIDxjb2RlPiJzZXJ2aWNlIjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI25vZGVUeXBlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5ub2RlVHlwZShTdHJpbmcgbG9jYWxOYW1lKS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuU0VSVklDRV9FTEVNRU5UX1RBRyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJUWVBFU19FTEVNRU5UX1RBRyI+PCEtLSAtLT48L0E+PEgzPgotVFlQRVNfRUxFTUVOVF9UQUc8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5UWVBFU19FTEVNRU5UX1RBRzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgZWxlbWVudCB0YWcgaXMgPGNvZGU+InR5cGVzIjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI25vZGVUeXBlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5ub2RlVHlwZShTdHJpbmcgbG9jYWxOYW1lKS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuVFlQRVNfRUxFTUVOVF9UQUciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTkFNRV9BVFRSSUJVVEUiPjwhLS0gLS0+PC9BPjxIMz4KLU5BTUVfQVRUUklCVVRFPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+TkFNRV9BVFRSSUJVVEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4ibmFtZSI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRBdHRyaWJ1dGUob3JnLnczYy5kb20uRWxlbWVudCwgamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPmdldEF0dHJpYnV0ZShFbGVtZW50LFN0cmluZykuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLk5BTUVfQVRUUklCVVRFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Ik1FU1NBR0VfQVRUUklCVVRFIj48IS0tIC0tPjwvQT48SDM+Ci1NRVNTQUdFX0FUVFJJQlVURTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPk1FU1NBR0VfQVRUUklCVVRFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBhdHRyaWJ1dGUgaXMgPGNvZGU+Im1lc3NhZ2UiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0QXR0cmlidXRlKG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5nZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5NRVNTQUdFX0FUVFJJQlVURSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJCSU5ESU5HX0FUVFJJQlVURSI+PCEtLSAtLT48L0E+PEgzPgotQklORElOR19BVFRSSUJVVEU8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5CSU5ESU5HX0FUVFJJQlVURTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJiaW5kaW5nIjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI2dldEF0dHJpYnV0ZShvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+Z2V0QXR0cmlidXRlKEVsZW1lbnQsU3RyaW5nKS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuQklORElOR19BVFRSSUJVVEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iVFlQRV9BVFRSSUJVVEUiPjwhLS0gLS0+PC9BPjxIMz4KLVRZUEVfQVRUUklCVVRFPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+VFlQRV9BVFRSSUJVVEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4idHlwZSI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRBdHRyaWJ1dGUob3JnLnczYy5kb20uRWxlbWVudCwgamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPmdldEF0dHJpYnV0ZShFbGVtZW50LFN0cmluZykuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlRZUEVfQVRUUklCVVRFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkVOQ09ESU5HX0FUVFJJQlVURSI+PCEtLSAtLT48L0E+PEgzPgotRU5DT0RJTkdfQVRUUklCVVRFPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+RU5DT0RJTkdfQVRUUklCVVRFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBhdHRyaWJ1dGUgaXMgPGNvZGU+ImVuY29kaW5nIjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI2dldEF0dHJpYnV0ZShvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+Z2V0QXR0cmlidXRlKEVsZW1lbnQsU3RyaW5nKS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuRU5DT0RJTkdfQVRUUklCVVRFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IlRBUkdFVE5BTUVTUEFDRV9BVFRSSUJVVEUiPjwhLS0gLS0+PC9BPjxIMz4KLVRBUkdFVE5BTUVTUEFDRV9BVFRSSUJVVEU8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5UQVJHRVROQU1FU1BBQ0VfQVRUUklCVVRFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBhdHRyaWJ1dGUgaXMgPGNvZGU+InRhcmdldE5hbWVzcGFjZSI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRBdHRyaWJ1dGUob3JnLnczYy5kb20uRWxlbWVudCwgamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPmdldEF0dHJpYnV0ZShFbGVtZW50LFN0cmluZykuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlRBUkdFVE5BTUVTUEFDRV9BVFRSSUJVVEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iUkVTT1VSQ0VfVVJJX0FUVFJJQlVURSI+PCEtLSAtLT48L0E+PEgzPgotUkVTT1VSQ0VfVVJJX0FUVFJJQlVURTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPlJFU09VUkNFX1VSSV9BVFRSSUJVVEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4icmVzb3VyY2VVUkkiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0QXR0cmlidXRlKG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5nZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5SRVNPVVJDRV9VUklfQVRUUklCVVRFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IkVMRU1FTlRfQVRUUklCVVRFIj48IS0tIC0tPjwvQT48SDM+Ci1FTEVNRU5UX0FUVFJJQlVURTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPkVMRU1FTlRfQVRUUklCVVRFPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSBhdHRyaWJ1dGUgaXMgPGNvZGU+ImVsZW1lbnQiPC9jb2RlPi4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwjZ2V0QXR0cmlidXRlKG9yZy53M2MuZG9tLkVsZW1lbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5nZXRBdHRyaWJ1dGUoRWxlbWVudCxTdHJpbmcpLjwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5FTEVNRU5UX0FUVFJJQlVURSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJMT0NBVElPTl9BVFRSSUJVVEUiPjwhLS0gLS0+PC9BPjxIMz4KLUxPQ0FUSU9OX0FUVFJJQlVURTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPkxPQ0FUSU9OX0FUVFJJQlVURTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJsb2NhdGlvbiI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRBdHRyaWJ1dGUob3JnLnczYy5kb20uRWxlbWVudCwgamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPmdldEF0dHJpYnV0ZShFbGVtZW50LFN0cmluZykuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLkxPQ0FUSU9OX0FUVFJJQlVURSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJQQVJBTUVURVJfT1JERVJfQVRUUklCVVRFIj48IS0tIC0tPjwvQT48SDM+Ci1QQVJBTUVURVJfT1JERVJfQVRUUklCVVRFPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+UEFSQU1FVEVSX09SREVSX0FUVFJJQlVURTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgYXR0cmlidXRlIGlzIDxjb2RlPiJwYXJhbWV0ZXJPcmRlciI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCNnZXRBdHRyaWJ1dGUob3JnLnczYy5kb20uRWxlbWVudCwgamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPmdldEF0dHJpYnV0ZShFbGVtZW50LFN0cmluZykuPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzLlBBUkFNRVRFUl9PUkRFUl9BVFRSSUJVVEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iTkFNRVNQQUNFX0FUVFJJQlVURSI+PCEtLSAtLT48L0E+PEgzPgotTkFNRVNQQUNFX0FUVFJJQlVURTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPk5BTUVTUEFDRV9BVFRSSUJVVEU8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIGF0dHJpYnV0ZSBpcyA8Y29kZT4ibmFtZXNwYWNlIjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sI2dldEF0dHJpYnV0ZShvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+Z2V0QXR0cmlidXRlKEVsZW1lbnQsU3RyaW5nKS48L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuTkFNRVNQQUNFX0FUVFJJQlVURSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJXU0RMX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLVdTRExfTkFNRVNQQUNFX1VSSTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPldTRExfTkFNRVNQQUNFX1VSSTwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgdmFsdWUgPGNvZGU+Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIjwvY29kZT4uCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iWFNEX05BTUVTUEFDRV9VUkkiPjwhLS0gLS0+PC9BPjxIMz4KLVhTRF9OQU1FU1BBQ0VfVVJJPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+WFNEX05BTUVTUEFDRV9VUkk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHZhbHVlIDxjb2RlPiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuWFNEX05BTUVTUEFDRV9VUkkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzE5OTkiPjwhLS0gLS0+PC9BPjxIMz4KLVNDSEVNQV9GT1JfU0NIRU1BX1VSSV8xOTk5PC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+U0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzE5OTk8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHZhbHVlIDxjb2RlPiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hNTFNjaGVtYSI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzE5OTkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDBfMTAiPjwhLS0gLS0+PC9BPjxIMz4KLVNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAwXzEwPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+U0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDBfMTA8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHZhbHVlIDxjb2RlPiJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzEwL1hNTFNjaGVtYSI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDBfMTAiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDEiPjwhLS0gLS0+PC9BPjxIMz4KLVNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+U0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDE8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlIHZhbHVlIDxjb2RlPiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI8L2NvZGU+LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHMuU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDEiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5Db25zdHJ1Y3RvciBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iV1NETENvbnN0YW50cygpIj48IS0tIC0tPjwvQT48SDM+Ci1XU0RMQ29uc3RhbnRzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgPEI+V1NETENvbnN0YW50czwvQj4oKTwvUFJFPgotPERMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRFbGVtZW50VGFnKGludCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEVsZW1lbnRUYWc8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRFbGVtZW50VGFnPC9CPihpbnQmbmJzcDtub2RlVHlwZSk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIGEgU3RyaW5nIG5hbWUgb2YgZWxlbWVudCB0YWcgZ2l2ZW4gdGhlIG5vZGVUeXBlLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ub2RlVHlwZTwvQ09ERT4gLSBhIGNvbnN0YW50IGRlZmluZWQgaW4gV1NETENvbnN0YW50cy4KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+ZWxlbWVudCB0YWcuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJub2RlVHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotbm9kZVR5cGU8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IDxCPm5vZGVUeXBlPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bG9jYWxOYW1lKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBub2RlIHR5cGUgZ2l2ZW4gdGhlIFN0cmluZyBuYW1lIG9mIGVsZW1lbnQgdGFnLgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5sb2NhbE5hbWU8L0NPREU+IC0gdGhlIGxvY2FsIG5hbWUgb2YgZWxlbWVudCB0YWcuCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbm9kZSB0eXBlIGRlZmluZWQgaW4gV1NETENvbnN0YW50cy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9Im5vZGVUeXBlKG9yZy53M2MuZG9tLk5vZGUpIj48IS0tIC0tPjwvQT48SDM+Ci1ub2RlVHlwZTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPEI+bm9kZVR5cGU8L0I+KG9yZy53M2MuZG9tLk5vZGUmbmJzcDtub2RlKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBub2RlIHR5cGUgZGVmaW5lZCBpbiBXU0RMQ29uc3RhbnRzIGdpdmVuIHRoZSBET00gbm9kZS4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bm9kZTwvQ09ERT4gLSBhIERPTSBub2RlLgotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5vZGUgdHlwZSBkZWZpbmVkIGluIFdTRExDb25zdGFudHMuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJpc1dTRExOYW1lc3BhY2UoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLWlzV1NETE5hbWVzcGFjZTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBib29sZWFuIDxCPmlzV1NETE5hbWVzcGFjZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWVzcGFjZSk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIG5hbWVzcGFjZSBpcyB0aGUgV1NETCBuYW1lc3BhY2Ugb3Igbm90LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5uYW1lc3BhY2U8L0NPREU+IC0gYSBuYW1lc3BhY2UuCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPndoZXRoZXIgdGhlIGdpdmVuIG5hbWVzcGFjZSBpcyB0aGUgV1NETCBuYW1lc3BhY2Ugb3Igbm90LjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iaXNNYXRjaGluZ05hbWVzcGFjZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotaXNNYXRjaGluZ05hbWVzcGFjZTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBib29sZWFuIDxCPmlzTWF0Y2hpbmdOYW1lc3BhY2U8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lc3BhY2UxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWVzcGFjZTIpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0cnVlIGlmIG5hbWVzcGFjZTEgZXF1YWxzIHRvIG5hbWVzcGFjZTIuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5hbWVzcGFjZTE8L0NPREU+IC0gYSBuYW1lc3BhY2UuPEREPjxDT0RFPm5hbWVzcGFjZTI8L0NPREU+IC0gYSBuYW1lc3BhY2UuCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRydWUgaWYgbmFtZXNwYWNlMSBlcXVhbHMgdG8gbmFtZXNwYWNlMi48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEF0dHJpYnV0ZShvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0QXR0cmlidXRlPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGphdmEubGFuZy5TdHJpbmcgPEI+Z2V0QXR0cmlidXRlPC9CPihvcmcudzNjLmRvbS5FbGVtZW50Jm5ic3A7ZWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2F0dHJpYnV0ZU5hbWUpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyBhbiBhdHRyaWJ1dGUgdmFsdWUgZ2l2ZW4gdGhlIGF0dHJpYnV0ZU5hbWUgaW4gdGhlIGVsZW1lbnQuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmVsZW1lbnQ8L0NPREU+IC0gYSBET00gZWxlbWVudCB0byBzZWFyY2ggZm9yIHRoZSBhdHRyaWJ1dGUgZnJvbS48REQ+PENPREU+YXR0cmlidXRlTmFtZTwvQ09ERT4gLSBhbiBhdHRyaWJ1dGUgdG8gZmluZCBmcm9tIHRoZSBlbGVtZW50LgotPERUPjxCPlJldHVybnM6PC9CPjxERD5hbiBhdHRyaWJ1dGUgdmFsdWUuPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1dTRExDb25zdGFudHMuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMQ29uc3RhbnRzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETENvbnN0YW50cy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYjE4ZTIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzk5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVdTRExEaWFnbm9zdGljCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpYyBpbnRlcmZhY2UiPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IldTRExEaWFnbm9zdGljIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvV1NETERpYWdub3N0aWMuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMRGlhZ25vc3RpYy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPEgyPgotPEZPTlQgU0laRT0iLTEiPgotb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvRk9OVD4KLTxCUj4KLUludGVyZmFjZSBXU0RMRGlhZ25vc3RpYzwvSDI+Ci08REw+Ci08RFQ+PEI+QWxsIEtub3duIEltcGxlbWVudGluZyBDbGFzc2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY0ltcGw8L0E+PC9ERD4KLTwvREw+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgaW50ZXJmYWNlIDxCPldTRExEaWFnbm9zdGljPC9CPjwvREw+Ci08L1BSRT4KLQotPFA+Ci1HZW5lcmF0ZWQgYnkgdGhlIFdTREwgbW9kZWwgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBtZWNoYW5pc21zLgotIAotIDxwPgotIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwKLSB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nCi0gc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sKLSBmcm9tIHBpb25lZXJpbmcgYWRvcHRlcnMgb24gdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBhbnkgY29kZSB0aGF0IHVzZXMgdGhpcwotIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuCi0gPC9wPgotIAotIFRoaXMgaW50ZXJmYWNlIGlzIGEgY2FuZGlkYXRlIHRvIGJlY29taW5nIGEgZmlyc3QgY2xhc3MgV1NETCBtb2RlbCBvYmplY3QuCi08UD4KLQotPFA+Ci08SFI+Ci0KLTxQPgotCi08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuT2JqZWN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJucyB0aGUgRWxlbWVudCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sI2dldEtleSgpIj5nZXRLZXk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXRzIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGtleS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7b3JnLnczYy5kb20uTm9kZTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjZ2V0Tm9kZSgpIj5nZXROb2RlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2V0cyB0aGUgRE9NIE5vZGUgd2hlcmUgdGhlIGVycm9yIG9jY3VyczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRTZXZlcml0eSgpIj5nZXRTZXZlcml0eTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Byb3ZpZGVzIHRoaXMgZGlhZ25vc3RpYydzIHNldmVyaXR5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFTGlzdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjZ2V0U3Vic3RpdHV0aW9ucygpIj5nZXRTdWJzdGl0dXRpb25zPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIGxpc3Qgd2l0aCB0aGUgb3JpZ2luYWwgbWVzc2FnZSBwYXJhbWV0ZXJzIGFzIFN0cmluZ3MuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sI3NldENvbnRhaW5lcihqYXZhLmxhbmcuT2JqZWN0KSI+c2V0Q29udGFpbmVyPC9BPjwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2NvbnRhaW5lcik8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIENvbnRhaW5lciBvZiB0aGUgZXJyb3I8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjc2V0S2V5KGphdmEubGFuZy5TdHJpbmcpIj5zZXRLZXk8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGtleS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjc2V0Tm9kZShvcmcudzNjLmRvbS5Ob2RlKSI+c2V0Tm9kZTwvQT48L0I+KG9yZy53M2MuZG9tLk5vZGUmbmJzcDtub2RlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgRE9NIE5vZGUgd2hlcmUgdGhlIGVycm9yIG9jY3VyczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNzZXRTZXZlcml0eShvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljU2V2ZXJpdHkpIj5zZXRTZXZlcml0eTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4mbmJzcDtzZXZlcml0eSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhpcyBkaWFnbm9zdGljJ3Mgc2V2ZXJpdHkuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXRTZXZlcml0eSgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRTZXZlcml0eTwvSDM+Ci08UFJFPgotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPiA8Qj5nZXRTZXZlcml0eTwvQj4oKTwvUFJFPgotPERMPgotPEREPlByb3ZpZGVzIHRoaXMgZGlhZ25vc3RpYydzIHNldmVyaXR5LgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmFuIFhTRERpYWdub3N0aWNTZXZlcml0eTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0U2V2ZXJpdHkob3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5KSI+PCEtLSAtLT48L0E+PEgzPgotc2V0U2V2ZXJpdHk8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0U2V2ZXJpdHk8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4mbmJzcDtzZXZlcml0eSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoaXMgZGlhZ25vc3RpYydzIHNldmVyaXR5LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zZXZlcml0eTwvQ09ERT4gLSB0aGUgbmV3IGRpYWdub3N0aWMgc2V2ZXJpdHkuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRLZXkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0S2V5PC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuU3RyaW5nIDxCPmdldEtleTwvQj4oKTwvUFJFPgotPERMPgotPEREPkdldHMgdGhlIG9yaWdpbmFsIG1lc3NhZ2Uga2V5LgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgU3RyaW5nIHdpdGggdGhlIG9yaWdpbmFsIG1lc3NhZ2Uga2V5LjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0S2V5KGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRLZXk8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0S2V5PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyB0aGUgb3JpZ2luYWwgbWVzc2FnZSBrZXkuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIHRoZSBuZXcgbWVzc2FnZSBrZXkgdmFsdWUuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXROb2RlKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldE5vZGU8L0gzPgotPFBSRT4KLW9yZy53M2MuZG9tLk5vZGUgPEI+Z2V0Tm9kZTwvQj4oKTwvUFJFPgotPERMPgotPEREPkdldHMgdGhlIERPTSBOb2RlIHdoZXJlIHRoZSBlcnJvciBvY2N1cnMKLTxQPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgRE9NIG5vZGUgd2hlcmUgdGhlIGVycm9yIG9jY3VyczwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0Tm9kZShvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0Tm9kZTwvSDM+Ci08UFJFPgotdm9pZCA8Qj5zZXROb2RlPC9CPihvcmcudzNjLmRvbS5Ob2RlJm5ic3A7bm9kZSk8L1BSRT4KLTxETD4KLTxERD5TZXRzIHRoZSBET00gTm9kZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzCi08UD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5vZGU8L0NPREU+IC0gPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRDb250YWluZXIoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0Q29udGFpbmVyPC9IMz4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0IDxCPmdldENvbnRhaW5lcjwvQj4oKTwvUFJFPgotPERMPgotPEREPnJldHVybnMgdGhlIEVsZW1lbnQgd2hlcmUgdGhlIGVycm9yIG9jY3VycwotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPi0gT2JqZWN0IG9mIHR5cGUgWFNEQ29uY3JldGVDb21wb25lbnQgaWYgdGhlIGVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21lcyBmcm9tIHRoZSBpbmxpbmUgc2NoZW1hIG9mIGEgd3NkbCBmaWxlCi0gICAgICAgICAgICAgICAgIC0gb2JqZWN0IG9mIHR5cGUgV1NETEVsZW1lbnQgaWYgdGhlIGVycm9yIGNvbWVzIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIHBhcnQgb2YgdGhlIHdzZGwgZmlsZTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0Q29udGFpbmVyKGphdmEubGFuZy5PYmplY3QpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRDb250YWluZXI8L0gzPgotPFBSRT4KLXZvaWQgPEI+c2V0Q29udGFpbmVyPC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7Y29udGFpbmVyKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIENvbnRhaW5lciBvZiB0aGUgZXJyb3IKLTxQPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y29udGFpbmVyPC9DT0RFPiAtIGFuIE9iamVjdCBvZiBlaXRoZXIgWFNEQ29uY3JldGVDb21wb25lbnQgb3IgV1NETEVsZW1lbnQ8L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFN1YnN0aXR1dGlvbnMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U3Vic3RpdHV0aW9uczwvSDM+Ci08UFJFPgotRUxpc3QgPEI+Z2V0U3Vic3RpdHV0aW9uczwvQj4oKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgYSBsaXN0IHdpdGggdGhlIG9yaWdpbmFsIG1lc3NhZ2UgcGFyYW1ldGVycyBhcyBTdHJpbmdzLgotPFA+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbGlzdCB3aXRoIHRoZSBvcmlnaW5hbCBtZXNzYWdlIHBhcmFtZXRlcnMgYXMgU3RyaW5ncy48L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvV1NETERpYWdub3N0aWMuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMRGlhZ25vc3RpYy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVmNWZjYi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjgzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MiBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVdTRExEaWFnbm9zdGljSW1wbAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWNJbXBsIGNsYXNzIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJXU0RMRGlhZ25vc3RpY0ltcGwiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9GT05UPgotPEJSPgotQ2xhc3MgV1NETERpYWdub3N0aWNJbXBsPC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj5FT2JqZWN0SW1wbAotICAgICAgPElNRyBTUkM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9pbmhlcml0LmdpZiIgQUxUPSJleHRlbmRlZCBieSAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWNJbXBsPC9CPgotPC9QUkU+Ci08REw+Ci08RFQ+PEI+QWxsIEltcGxlbWVudGVkIEludGVyZmFjZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljPC9BPjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGNsYXNzIDxCPldTRExEaWFnbm9zdGljSW1wbDwvQj48RFQ+ZXh0ZW5kcyBFT2JqZWN0SW1wbDxEVD5pbXBsZW1lbnRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT48L0RMPgotPC9QUkU+Ci0KLTxQPgotRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV1NETERpYWdub3N0aWMgaW50ZXJmYWNlLiBUaGlzIGNsYXNzIGlzIGJhc2VkCi0gb24gWFNERGlhZ25vc3RpY0ltcGwKLSA8cD4KLSA8Yj5Ob3RlOjwvYj4gVGhpcyBjbGFzcy9pbnRlcmZhY2UgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsCi0gdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZwotIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrCi0gZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMKLSBBUEkgd2lsbCBhbG1vc3QgY2VydGFpbmx5IGJlIGJyb2tlbiAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLgotIDwvcD4KLTxQPgotCi08UD4KLTxIUj4KLQotPFA+Ci0KLTwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KLQotPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNXU0RMRGlhZ25vc3RpY0ltcGwoKSI+V1NETERpYWdub3N0aWNJbXBsPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RGVmYXVsdCBjb25zdHJ1Y3Rvci48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjV1NETERpYWdub3N0aWNJbXBsKG9yZy5lY2xpcHNlLnhzZC5YU0REaWFnbm9zdGljKSI+V1NETERpYWdub3N0aWNJbXBsPC9BPjwvQj4ob3JnLmVjbGlwc2UueHNkLlhTRERpYWdub3N0aWMmbmJzcDt4c2REaWFnbm9zdGljKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7V3JhcHMgYW4gWFNEIGRpYWdub3N0aWMgaW50byBhIFdTREwgZGlhZ25vc3RpYy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI2dldENvbHVtbigpIj5nZXRDb2x1bW48L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLk9iamVjdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI2dldENvbnRhaW5lcigpIj5nZXRDb250YWluZXI8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZXR1cm5zIHRoZSBFbGVtZW50IHdoZXJlIHRoZSBlcnJvciBvY2N1cnM8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI2dldEtleSgpIj5nZXRLZXk8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXRzIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGtleS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjZ2V0TGluZSgpIj5nZXRMaW5lPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNnZXRMb2NhdGlvbigpIj5nZXRMb2NhdGlvbjwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjZ2V0TWVzc2FnZSgpIj5nZXRNZXNzYWdlPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO29yZy53M2MuZG9tLk5vZGU8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNnZXROb2RlKCkiPmdldE5vZGU8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZXRzIHRoZSBET00gTm9kZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNnZXRTZXZlcml0eSgpIj5nZXRTZXZlcml0eTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Byb3ZpZGVzIHRoaXMgZGlhZ25vc3RpYydzIHNldmVyaXR5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtFTGlzdDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI2dldFN1YnN0aXR1dGlvbnMoKSI+Z2V0U3Vic3RpdHV0aW9uczwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBsaXN0IHdpdGggdGhlIG9yaWdpbmFsIG1lc3NhZ2UgcGFyYW1ldGVycyBhcyBTdHJpbmdzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjc2V0Q29sdW1uKGludCkiPnNldENvbHVtbjwvQT48L0I+KGludCZuYnNwO25ld0NvbHVtbik8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgY29sdW1uIGF0dHJpYnV0ZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI3NldENvbnRhaW5lcihqYXZhLmxhbmcuT2JqZWN0KSI+c2V0Q29udGFpbmVyPC9BPjwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2NvbnRhaW5lcik8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldHMgdGhlIENvbnRhaW5lciBvZiB0aGUgZXJyb3I8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI3NldEtleShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0S2V5PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgb3JpZ2luYWwgbWVzc2FnZSBrZXkuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNzZXRMaW5lKGludCkiPnNldExpbmU8L0E+PC9CPihpbnQmbmJzcDtuZXdMaW5lKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNzZXRMb2NhdGlvbihqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TG9jYXRpb248L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bG9jYXRpb24pPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgbG9hY3Rpb24gYXR0cmlidXRlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjc2V0TWVzc2FnZShqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TWVzc2FnZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuZXdNZXNzYWdlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyBhIG5ldyB2YWx1ZSBmb3IgdGhlIG1lc3NhZ2UgYXR0cmlidXRlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjc2V0Tm9kZShvcmcudzNjLmRvbS5Ob2RlKSI+c2V0Tm9kZTwvQT48L0I+KG9yZy53M2MuZG9tLk5vZGUmbmJzcDtub2RlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0cyB0aGUgRE9NIE5vZGUgd2hlcmUgdGhlIGVycm9yIG9jY3VyczwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwjc2V0U2V2ZXJpdHkob3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5KSI+c2V0U2V2ZXJpdHk8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+Jm5ic3A7bmV3U2V2ZXJpdHkpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoaXMgZGlhZ25vc3RpYydzIHNldmVyaXR5LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmVxdWFscywgZ2V0Q2xhc3MsIGhhc2hDb2RlLCBub3RpZnksIG5vdGlmeUFsbCwgdG9TdHJpbmcsIHdhaXQsIHdhaXQsIHdhaXQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5Db25zdHJ1Y3RvciBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iV1NETERpYWdub3N0aWNJbXBsKCkiPjwhLS0gLS0+PC9BPjxIMz4KLVdTRExEaWFnbm9zdGljSW1wbDwvSDM+Ci08UFJFPgotcHVibGljIDxCPldTRExEaWFnbm9zdGljSW1wbDwvQj4oKTwvUFJFPgotPERMPgotPEREPkRlZmF1bHQgY29uc3RydWN0b3IuCi08UD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IldTRExEaWFnbm9zdGljSW1wbChvcmcuZWNsaXBzZS54c2QuWFNERGlhZ25vc3RpYykiPjwhLS0gLS0+PC9BPjxIMz4KLVdTRExEaWFnbm9zdGljSW1wbDwvSDM+Ci08UFJFPgotcHVibGljIDxCPldTRExEaWFnbm9zdGljSW1wbDwvQj4ob3JnLmVjbGlwc2UueHNkLlhTRERpYWdub3N0aWMmbmJzcDt4c2REaWFnbm9zdGljKTwvUFJFPgotPERMPgotPEREPldyYXBzIGFuIFhTRCBkaWFnbm9zdGljIGludG8gYSBXU0RMIGRpYWdub3N0aWMuIFVzZWQgdG8gcmVwb3J0IHByb2JsZW1zIGluCi0gaW5saW5lIHNjaGVtYXMuCi08UD4KLTxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+eHNkRGlhZ25vc3RpYzwvQ09ERT4gLSB0aGUgWFNEIGRpYWdub3N0aWMgb2JqZWN0IHRvIHdyYXAuIE11c3Qgbm90IGJlIG51bGwuPC9ETD4KLTwvREw+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0Q29sdW1uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldENvbHVtbjwvSDM+Ci08UFJFPgotcHVibGljIGludCA8Qj5nZXRDb2x1bW48L0I+KCk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldExpbmUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TGluZTwvSDM+Ci08UFJFPgotcHVibGljIGludCA8Qj5nZXRMaW5lPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRMb2NhdGlvbigpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRMb2NhdGlvbjwvSDM+Ci08UFJFPgotcHVibGljIGphdmEubGFuZy5TdHJpbmcgPEI+Z2V0TG9jYXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE1lc3NhZ2UoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0TWVzc2FnZTwvSDM+Ci08UFJFPgotcHVibGljIGphdmEubGFuZy5TdHJpbmcgPEI+Z2V0TWVzc2FnZTwvQj4oKTwvUFJFPgotPERMPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0U2V2ZXJpdHkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U2V2ZXJpdHk8L0gzPgotPFBSRT4KLXB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+IDxCPmdldFNldmVyaXR5PC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PEI+RGVzY3JpcHRpb24gY29waWVkIGZyb20gaW50ZXJmYWNlOiA8Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjZ2V0U2V2ZXJpdHkoKSI+V1NETERpYWdub3N0aWM8L0E+PC9DT0RFPjwvQj48L0REPgotPEREPlByb3ZpZGVzIHRoaXMgZGlhZ25vc3RpYydzIHNldmVyaXR5LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRTZXZlcml0eSgpIj5nZXRTZXZlcml0eTwvQT48L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWM8L0E+PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hbiBYU0REaWFnbm9zdGljU2V2ZXJpdHk8L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNldENvbHVtbihpbnQpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRDb2x1bW48L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnNldENvbHVtbjwvQj4oaW50Jm5ic3A7bmV3Q29sdW1uKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgY29sdW1uIGF0dHJpYnV0ZS4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bmV3Q29sdW1uPC9DT0RFPiAtIHRoZSBuZXcgY29sdW1uIHZhbHVlLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0TGluZShpbnQpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRMaW5lPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5zZXRMaW5lPC9CPihpbnQmbmJzcDtuZXdMaW5lKTwvUFJFPgotPERMPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0TG9jYXRpb24oamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNldExvY2F0aW9uPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5zZXRMb2NhdGlvbjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2xvY2F0aW9uKTwvUFJFPgotPERMPgotPEREPlNldHMgdGhlIHZhbHVlIG9mIHRoZSBsb2FjdGlvbiBhdHRyaWJ1dGUuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmxvY2F0aW9uPC9DT0RFPiAtIGEgU3RyaW5nIHdpdGggdGhlIG5ldyB2YWx1ZSBmb3IgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0TWVzc2FnZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2V0TWVzc2FnZTwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+c2V0TWVzc2FnZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25ld01lc3NhZ2UpPC9QUkU+Ci08REw+Ci08REQ+U2V0cyBhIG5ldyB2YWx1ZSBmb3IgdGhlIG1lc3NhZ2UgYXR0cmlidXRlLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5uZXdNZXNzYWdlPC9DT0RFPiAtIGEgU3RyaW5nIHdpdGggdGhlIG5ldyBtZXNzYWdlLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0U2V2ZXJpdHkob3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5KSI+PCEtLSAtLT48L0E+PEgzPgotc2V0U2V2ZXJpdHk8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnNldFNldmVyaXR5PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+Jm5ic3A7bmV3U2V2ZXJpdHkpPC9QUkU+Ci08REw+Ci08REQ+PEI+RGVzY3JpcHRpb24gY29waWVkIGZyb20gaW50ZXJmYWNlOiA8Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjc2V0U2V2ZXJpdHkob3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5KSI+V1NETERpYWdub3N0aWM8L0E+PC9DT0RFPjwvQj48L0REPgotPEREPlNldHMgdGhpcyBkaWFnbm9zdGljJ3Mgc2V2ZXJpdHkuCi08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sI3NldFNldmVyaXR5KG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWNTZXZlcml0eSkiPnNldFNldmVyaXR5PC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5uZXdTZXZlcml0eTwvQ09ERT4gLSB0aGUgbmV3IGRpYWdub3N0aWMgc2V2ZXJpdHkuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRLZXkoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0S2V5PC9IMz4KLTxQUkU+Ci1wdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRLZXk8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48Qj5EZXNjcmlwdGlvbiBjb3BpZWQgZnJvbSBpbnRlcmZhY2U6IDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRLZXkoKSI+V1NETERpYWdub3N0aWM8L0E+PC9DT0RFPjwvQj48L0REPgotPEREPkdldHMgdGhlIG9yaWdpbmFsIG1lc3NhZ2Uga2V5LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRLZXkoKSI+Z2V0S2V5PC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgU3RyaW5nIHdpdGggdGhlIG9yaWdpbmFsIG1lc3NhZ2Uga2V5LjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0S2V5KGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRLZXk8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnNldEtleTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPgotPERMPgotPEREPjxCPkRlc2NyaXB0aW9uIGNvcGllZCBmcm9tIGludGVyZmFjZTogPENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sI3NldEtleShqYXZhLmxhbmcuU3RyaW5nKSI+V1NETERpYWdub3N0aWM8L0E+PC9DT0RFPjwvQj48L0REPgotPEREPlNldHMgdGhlIG9yaWdpbmFsIG1lc3NhZ2Uga2V5LgotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNzZXRLZXkoamF2YS5sYW5nLlN0cmluZykiPnNldEtleTwvQT48L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWM8L0E+PC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gdGhlIG5ldyBtZXNzYWdlIGtleSB2YWx1ZS48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFN1YnN0aXR1dGlvbnMoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U3Vic3RpdHV0aW9uczwvSDM+Ci08UFJFPgotcHVibGljIEVMaXN0IDxCPmdldFN1YnN0aXR1dGlvbnM8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48Qj5EZXNjcmlwdGlvbiBjb3BpZWQgZnJvbSBpbnRlcmZhY2U6IDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRTdWJzdGl0dXRpb25zKCkiPldTRExEaWFnbm9zdGljPC9BPjwvQ09ERT48L0I+PC9ERD4KLTxERD5SZXR1cm5zIGEgbGlzdCB3aXRoIHRoZSBvcmlnaW5hbCBtZXNzYWdlIHBhcmFtZXRlcnMgYXMgU3RyaW5ncy4KLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjZ2V0U3Vic3RpdHV0aW9ucygpIj5nZXRTdWJzdGl0dXRpb25zPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgbGlzdCB3aXRoIHRoZSBvcmlnaW5hbCBtZXNzYWdlIHBhcmFtZXRlcnMgYXMgU3RyaW5ncy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldE5vZGUoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0Tm9kZTwvSDM+Ci08UFJFPgotcHVibGljIG9yZy53M2MuZG9tLk5vZGUgPEI+Z2V0Tm9kZTwvQj4oKTwvUFJFPgotPERMPgotPEREPjxCPkRlc2NyaXB0aW9uIGNvcGllZCBmcm9tIGludGVyZmFjZTogPENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sI2dldE5vZGUoKSI+V1NETERpYWdub3N0aWM8L0E+PC9DT0RFPjwvQj48L0REPgotPEREPkdldHMgdGhlIERPTSBOb2RlIHdoZXJlIHRoZSBlcnJvciBvY2N1cnMKLTxQPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjZ2V0Tm9kZSgpIj5nZXROb2RlPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBET00gbm9kZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzZXROb2RlKG9yZy53M2MuZG9tLk5vZGUpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXROb2RlPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5zZXROb2RlPC9CPihvcmcudzNjLmRvbS5Ob2RlJm5ic3A7bm9kZSk8L1BSRT4KLTxETD4KLTxERD48Qj5EZXNjcmlwdGlvbiBjb3BpZWQgZnJvbSBpbnRlcmZhY2U6IDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNzZXROb2RlKG9yZy53M2MuZG9tLk5vZGUpIj5XU0RMRGlhZ25vc3RpYzwvQT48L0NPREU+PC9CPjwvREQ+Ci08REQ+U2V0cyB0aGUgRE9NIE5vZGUgd2hlcmUgdGhlIGVycm9yIG9jY3VycwotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNzZXROb2RlKG9yZy53M2MuZG9tLk5vZGUpIj5zZXROb2RlPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRDb250YWluZXIoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0Q29udGFpbmVyPC9IMz4KLTxQUkU+Ci1wdWJsaWMgamF2YS5sYW5nLk9iamVjdCA8Qj5nZXRDb250YWluZXI8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48Qj5EZXNjcmlwdGlvbiBjb3BpZWQgZnJvbSBpbnRlcmZhY2U6IDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRDb250YWluZXIoKSI+V1NETERpYWdub3N0aWM8L0E+PC9DT0RFPjwvQj48L0REPgotPEREPnJldHVybnMgdGhlIEVsZW1lbnQgd2hlcmUgdGhlIGVycm9yIG9jY3VycwotPFA+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRDb250YWluZXIoKSI+Z2V0Q29udGFpbmVyPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPi0gT2JqZWN0IG9mIHR5cGUgWFNEQ29uY3JldGVDb21wb25lbnQgaWYgdGhlIGVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21lcyBmcm9tIHRoZSBpbmxpbmUgc2NoZW1hIG9mIGEgd3NkbCBmaWxlCi0gICAgICAgICAgICAgICAgIC0gb2JqZWN0IG9mIHR5cGUgV1NETEVsZW1lbnQgaWYgdGhlIGVycm9yIGNvbWVzIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIHBhcnQgb2YgdGhlIHdzZGwgZmlsZTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0Q29udGFpbmVyKGphdmEubGFuZy5PYmplY3QpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXRDb250YWluZXI8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnNldENvbnRhaW5lcjwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2NvbnRhaW5lcik8L1BSRT4KLTxETD4KLTxERD48Qj5EZXNjcmlwdGlvbiBjb3BpZWQgZnJvbSBpbnRlcmZhY2U6IDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNzZXRDb250YWluZXIoamF2YS5sYW5nLk9iamVjdCkiPldTRExEaWFnbm9zdGljPC9BPjwvQ09ERT48L0I+PC9ERD4KLTxERD5TZXRzIHRoZSBDb250YWluZXIgb2YgdGhlIGVycm9yCi08UD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sI3NldENvbnRhaW5lcihqYXZhLmxhbmcuT2JqZWN0KSI+c2V0Q29udGFpbmVyPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT48L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb250YWluZXI8L0NPREU+IC0gYW4gT2JqZWN0IG9mIGVpdGhlciBYU0RDb25jcmV0ZUNvbXBvbmVudCBvciBXU0RMRWxlbWVudDwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0N2JkZjQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotV1NETERpYWdub3N0aWNTZXZlcml0eQotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWNTZXZlcml0eSBjbGFzcyI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iV1NETERpYWdub3N0aWNTZXZlcml0eSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBXU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj5BYnN0cmFjdEVudW1lcmF0b3IKLSAgICAgIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj48Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0I+Ci08L1BSRT4KLTxIUj4KLTxETD4KLTxEVD48UFJFPnB1YmxpYyBmaW5hbCBjbGFzcyA8Qj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9CPjxEVD5leHRlbmRzIEFic3RyYWN0RW51bWVyYXRvcjwvREw+Ci08L1BSRT4KLQotPFA+Ci1XU0RMIGRpYWdub3N0aWMgc2V2ZXJpdHkgbGV2ZWxzIHR5cGUgc2FmZSBlbnVtZXJhdGlvbi4gVGhpcyBjbGFzcyBpcyBzaW1pbGFyCi0gdG8gWFNERGlhZ25vc3RpY1NldmVyaXR5LgotIDxwPgotIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwKLSB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nCi0gc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sKLSBmcm9tIHBpb25lZXJpbmcgYWRvcHRlcnMgb24gdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBhbnkgY29kZSB0aGF0IHVzZXMgdGhpcwotIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuCi0gPC9wPgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLTwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0iZmllbGRfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPkZpZWxkIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjRVJST1IiPkVSUk9SPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwcm9ibGVtIGlzIGJhZCBhbmQgdGhhdCB0aGUgc2NoZW1hIGlzCi0gbGlrZWx5IG5vdCBzdWl0YWJsZSBmb3IgdXNlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0VSUk9SX0xJVEVSQUwiPkVSUk9SX0xJVEVSQUw8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlICc8ZW0+PGI+RXJyb3I8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjRkFUQUwiPkZBVEFMPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwcm9ibGVtIGlzIHJlYWxseSBiYWQgYW5kIHRoYXQgZnVydGhlcgotIHByb2Nlc3NpbmcgaXMgbGlrZWx5IG5vdCBwb3NzaWJsZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNGQVRBTF9MSVRFUkFMIj5GQVRBTF9MSVRFUkFMPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSAnPGVtPjxiPkZhdGFsPC9iPjwvZW0+JyBsaXRlcmFsIG9iamVjdC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0lORk9STUFUSU9OIj5JTkZPUk1BVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvYmxlbSBpcyBvbmx5IHBvdGVudGlhbCBhbmQgdGhhdCB0aGUKLSBkZWZpbml0aW9uIGlzIHZlcnkgbGlrZWx5IHN1aXRhYmxlIGZvciB1c2UuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjSU5GT1JNQVRJT05fTElURVJBTCI+SU5GT1JNQVRJT05fTElURVJBTDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgJzxlbT48Yj5JbmZvcm1hdGlvbjwvYj48L2VtPicgbGl0ZXJhbCBvYmplY3QuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO2phdmEudXRpbC5MaXN0PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI1ZBTFVFUyI+VkFMVUVTPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgcHVibGljIHJlYWQtb25seSBsaXN0IG9mIGFsbCB0aGUgJzxlbT48Yj5EaWFnbm9zdGljIFNldmVyaXR5PC9iPjwvZW0+JwotIGVudW1lcmF0b3JzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjV0FSTklORyI+V0FSTklORzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvYmxlbSBpcyBub3QgdG9vIGJhZCBhbmQgdGhhdCB0aGUKLSBkZWZpbml0aW9uIGlzIGxpa2VseSBzdWl0YWJsZSBmb3IgdXNlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI1dBUk5JTkdfTElURVJBTCI+V0FSTklOR19MSVRFUkFMPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSAnPGVtPjxiPldhcm5pbmc8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNnZXQoaW50KSI+Z2V0PC9BPjwvQj4oaW50Jm5ic3A7dmFsdWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSAnPGVtPjxiPkRpYWdub3N0aWMgU2V2ZXJpdHk8L2I+PC9lbT4nIGxpdGVyYWwgd2l0aCB0aGUKLSBzcGVjaWZpZWQgaW50ZWdlciB2YWx1ZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNnZXQoamF2YS5sYW5nLlN0cmluZykiPmdldDwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtsaXRlcmFsKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgJzxlbT48Yj5EaWFnbm9zdGljIFNldmVyaXR5PC9iPjwvZW0+JyBsaXRlcmFsIHdpdGggdGhlCi0gc3BlY2lmaWVkIGxpdGVyYWwgdmFsdWUuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjZ2V0QnlOYW1lKGphdmEubGFuZy5TdHJpbmcpIj5nZXRCeU5hbWU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlICc8ZW0+PGI+RGlhZ25vc3RpYyBTZXZlcml0eTwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZQotIHNwZWNpZmllZCBuYW1lLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmVxdWFscywgZ2V0Q2xhc3MsIGhhc2hDb2RlLCBub3RpZnksIG5vdGlmeUFsbCwgdG9TdHJpbmcsIHdhaXQsIHdhaXQsIHdhaXQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iRkFUQUwiPjwhLS0gLS0+PC9BPjxIMz4KLUZBVEFMPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Qj5GQVRBTDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvYmxlbSBpcyByZWFsbHkgYmFkIGFuZCB0aGF0IGZ1cnRoZXIKLSBwcm9jZXNzaW5nIGlzIGxpa2VseSBub3QgcG9zc2libGUuCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0ZBVEFMX0xJVEVSQUwiPjxDT0RFPkZBVEFMX0xJVEVSQUw8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljU2V2ZXJpdHkuRkFUQUwiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRVJST1IiPjwhLS0gLS0+PC9BPjxIMz4KLUVSUk9SPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Qj5FUlJPUjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvYmxlbSBpcyBiYWQgYW5kIHRoYXQgdGhlIHNjaGVtYSBpcwotIGxpa2VseSBub3Qgc3VpdGFibGUgZm9yIHVzZS4KLTxQPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwjRVJST1JfTElURVJBTCI+PENPREU+RVJST1JfTElURVJBTDwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWNTZXZlcml0eS5FUlJPUiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJXQVJOSU5HIj48IS0tIC0tPjwvQT48SDM+Ci1XQVJOSU5HPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Qj5XQVJOSU5HPC9CPjwvUFJFPgotPERMPgotPEREPlRoaXMgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwcm9ibGVtIGlzIG5vdCB0b28gYmFkIGFuZCB0aGF0IHRoZQotIGRlZmluaXRpb24gaXMgbGlrZWx5IHN1aXRhYmxlIGZvciB1c2UuCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI1dBUk5JTkdfTElURVJBTCI+PENPREU+V0FSTklOR19MSVRFUkFMPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5LldBUk5JTkciPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU5GT1JNQVRJT04iPjwhLS0gLS0+PC9BPjxIMz4KLUlORk9STUFUSU9OPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Qj5JTkZPUk1BVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5UaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvYmxlbSBpcyBvbmx5IHBvdGVudGlhbCBhbmQgdGhhdCB0aGUKLSBkZWZpbml0aW9uIGlzIHZlcnkgbGlrZWx5IHN1aXRhYmxlIGZvciB1c2UuCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0lORk9STUFUSU9OX0xJVEVSQUwiPjxDT0RFPklORk9STUFUSU9OX0xJVEVSQUw8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljU2V2ZXJpdHkuSU5GT1JNQVRJT04iPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iRkFUQUxfTElURVJBTCI+PCEtLSAtLT48L0E+PEgzPgotRkFUQUxfTElURVJBTDwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+IDxCPkZBVEFMX0xJVEVSQUw8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlICc8ZW0+PGI+RmF0YWw8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNGQVRBTCI+PENPREU+RkFUQUw8L0NPREU+PC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJFUlJPUl9MSVRFUkFMIj48IS0tIC0tPjwvQT48SDM+Ci1FUlJPUl9MSVRFUkFMPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4gPEI+RVJST1JfTElURVJBTDwvQj48L1BSRT4KLTxETD4KLTxERD5UaGUgJzxlbT48Yj5FcnJvcjwvYj48L2VtPicgbGl0ZXJhbCBvYmplY3QuCi08UD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0VSUk9SIj48Q09ERT5FUlJPUjwvQ09ERT48L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IldBUk5JTkdfTElURVJBTCI+PCEtLSAtLT48L0E+PEgzPgotV0FSTklOR19MSVRFUkFMPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4gPEI+V0FSTklOR19MSVRFUkFMPC9CPjwvUFJFPgotPERMPgotPEREPlRoZSAnPGVtPjxiPldhcm5pbmc8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNXQVJOSU5HIj48Q09ERT5XQVJOSU5HPC9DT0RFPjwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iSU5GT1JNQVRJT05fTElURVJBTCI+PCEtLSAtLT48L0E+PEgzPgotSU5GT1JNQVRJT05fTElURVJBTDwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+IDxCPklORk9STUFUSU9OX0xJVEVSQUw8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhlICc8ZW0+PGI+SW5mb3JtYXRpb248L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNJTkZPUk1BVElPTiI+PENPREU+SU5GT1JNQVRJT048L0NPREU+PC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJWQUxVRVMiPjwhLS0gLS0+PC9BPjxIMz4KLVZBTFVFUzwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLnV0aWwuTGlzdCA8Qj5WQUxVRVM8L0I+PC9QUkU+Ci08REw+Ci08REQ+QSBwdWJsaWMgcmVhZC1vbmx5IGxpc3Qgb2YgYWxsIHRoZSAnPGVtPjxiPkRpYWdub3N0aWMgU2V2ZXJpdHk8L2I+PC9lbT4nCi0gZW51bWVyYXRvcnMuCi08UD4KLTxETD4KLTwvREw+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldChqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0PC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4gPEI+Z2V0PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bGl0ZXJhbCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSAnPGVtPjxiPkRpYWdub3N0aWMgU2V2ZXJpdHk8L2I+PC9lbT4nIGxpdGVyYWwgd2l0aCB0aGUKLSBzcGVjaWZpZWQgbGl0ZXJhbCB2YWx1ZS4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0QnlOYW1lKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRCeU5hbWU8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPiA8Qj5nZXRCeU5hbWU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlICc8ZW0+PGI+RGlhZ25vc3RpYyBTZXZlcml0eTwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZQotIHNwZWNpZmllZCBuYW1lLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXQoaW50KSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0PC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4gPEI+Z2V0PC9CPihpbnQmbmJzcDt2YWx1ZSk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSAnPGVtPjxiPkRpYWdub3N0aWMgU2V2ZXJpdHk8L2I+PC9lbT4nIGxpdGVyYWwgd2l0aCB0aGUKLSBzcGVjaWZpZWQgaW50ZWdlciB2YWx1ZS4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7Q09OU1RSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MWY1ZDcuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5ODQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUyIEVEVCAyMDA4IC0tPgotPFRJVExFPgotV1NETFBhcnNlcgotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFBhcnNlciBjbGFzcyI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iV1NETFBhcnNlciI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1dTRExQYXJzZXIuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExQYXJzZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBXU0RMUGFyc2VyPC9IMj4KLTxQUkU+Ci1qYXZhLmxhbmcuT2JqZWN0Ci0gIDxJTUcgU1JDPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj5vcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyCi0gICAgICA8SU1HIFNSQz0iLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2luaGVyaXQuZ2lmIiBBTFQ9ImV4dGVuZGVkIGJ5ICI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUGFyc2VyPC9CPgotPC9QUkU+Ci08REw+Ci08RFQ+PEI+QWxsIEltcGxlbWVudGVkIEludGVyZmFjZXM6PC9CPiA8REQ+b3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIsIG9yZy54bWwuc2F4LkRUREhhbmRsZXIsIG9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyLCBvcmcueG1sLnNheC5FcnJvckhhbmRsZXIsIG9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlcjwvREQ+Ci08L0RMPgotPEhSPgotPERMPgotPERUPjxQUkU+cHVibGljIGNsYXNzIDxCPldTRExQYXJzZXI8L0I+PERUPmV4dGVuZHMgb3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlcjxEVD5pbXBsZW1lbnRzIG9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlcjwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGUgPGI+U0FYIFBhcnNlcjwvYj4gZm9yIHRoZSBXU0RMIG1vZGVsLiBUaGlzIGNsYXNzJyBtYWluIHJlc3BvbnNpYmlsaXR5IGlzCi0gdG8gY29tcHV0ZSBsaW5lL2NvbHVtbiBpbmZvcm1hdGlvbiBmb3IgYWxsIGVsZW1lbnRzIGluIHRoZSBzb3VyY2UgWE1MCi0gZG9jdW1lbnQuIFRoaXMgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIGEgbWFwIG9mIGVhY2ggbm9kZSB0byBpdHMgdXNlciBkYXRhLgotIDxwPgotIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwKLSB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nCi0gc3RhYmlsaXR5LiBJdCBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBhdCB0aGlzIGVhcmx5IHN0YWdlIHRvIHNvbGljaXQgZmVlZGJhY2sKLSBmcm9tIHBpb25lZXJpbmcgYWRvcHRlcnMgb24gdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBhbnkgY29kZSB0aGF0IHVzZXMgdGhpcwotIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuIChyZXBlYXRlZGx5KSBhcyB0aGUgQVBJIGV2b2x2ZXMuCi0gPC9wPgotIAotIFtJU1NVRV0gTW9zdCBvZiB0aGlzIGNsYXNzJyBpbXBsZW1lbnRhdGlvbiBpcyBhIGNsb25lIG9mIFhTRFBhcnNlci4gVGhlcmUgYXJlCi0gcGxhbnMgdG8gd29yayBvbiBjbG9zZWx5IGludGVncmF0aW5nIHRoaXMgY2xhc3MgYW5kIFhTRFBhcnNlciB0byBwcm92aWRlIGZvcgotIHRoZSBtb3N0IGVmZmljaWVudCBwcm9jZXNzaW5nIG9mIGlubGluZSBzY2hlbWFzLgotPFA+Ci0KLTxQPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNXU0RMUGFyc2VyKCkiPldTRExQYXJzZXI8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtEZWZhdWx0IGNvbnN0cnVjdG9yLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjV1NETFBhcnNlcihqYXZhLnV0aWwuTWFwKSI+V1NETFBhcnNlcjwvQT48L0I+KGphdmEudXRpbC5NYXAmbmJzcDtvcHRpb25zKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29uc3RydWN0cyBhIFdTREwgcGFyc2VyIGdpdmVuIGEgc2V0IG9mIHBhcnNpbmcgb3B0aW9ucy48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjY2hhcmFjdGVycyhjaGFyW10sIGludCwgaW50KSI+Y2hhcmFjdGVyczwvQT48L0I+KGNoYXJbXSZuYnNwO2NoYXJhY3RlcnMsCi0gICAgICAgICAgIGludCZuYnNwO3N0YXJ0LAotICAgICAgICAgICBpbnQmbmJzcDtsZW5ndGgpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNjb21tZW50KGNoYXJbXSwgaW50LCBpbnQpIj5jb21tZW50PC9BPjwvQj4oY2hhcltdJm5ic3A7Y2hhcmFjdGVycywKLSAgICAgICAgaW50Jm5ic3A7c3RhcnQsCi0gICAgICAgIGludCZuYnNwO2xlbmd0aCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2VuZENEQVRBKCkiPmVuZENEQVRBPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZW5kRG9jdW1lbnQoKSI+ZW5kRG9jdW1lbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNlbmREVEQoKSI+ZW5kRFREPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZW5kRWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+ZW5kRWxlbWVudDwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt1cmksCi0gICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb2NhbE5hbWUsCi0gICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtxTmFtZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2VuZEVudGl0eShqYXZhLmxhbmcuU3RyaW5nKSI+ZW5kRW50aXR5PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNlcnJvcihvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbikiPmVycm9yPC9BPjwvQj4ob3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24mbmJzcDtleGNlcHRpb24pPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNmYXRhbEVycm9yKG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbikiPmZhdGFsRXJyb3I8L0E+PC9CPihvcmcueG1sLnNheC5TQVhFeGNlcHRpb24mbmJzcDtleGNlcHRpb24pPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNmYXRhbEVycm9yKG9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uKSI+ZmF0YWxFcnJvcjwvQT48L0I+KG9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uJm5ic3A7ZXhjZXB0aW9uKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO2phdmEudXRpbC5Db2xsZWN0aW9uPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2dldERpYWdub3N0aWNzKCkiPmdldERpYWdub3N0aWNzPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UHJvdmlkZXMgYSBjb2xsZWN0aW9uIHdpdGggdGhlIGRpYWdub3N0aWNzIGdlbmVyYXRlZCBkdXJpbmcgcGFyc2luZy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7b3JnLnczYy5kb20uRG9jdW1lbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0RG9jdW1lbnQoKSI+Z2V0RG9jdW1lbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtQcm92aWRlcyB0aGUgRE9NIGRvY3VtZW50IGNyZWF0ZWQgYnkgcGFyc2luZyB0aGUgV1NETCBkb2N1bWVudC48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNnZXRFbmNvZGluZygpIj5nZXRFbmNvZGluZzwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0RW5kQ29sdW1uKG9yZy53M2MuZG9tLk5vZGUpIj5nZXRFbmRDb2x1bW48L0E+PC9CPihvcmcudzNjLmRvbS5Ob2RlJm5ic3A7bm9kZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGNvbHVtbiBhdCB3aGljaCB0aGUgZ2l2ZW4gbm9kZSBlbmRzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0RW5kTGluZShvcmcudzNjLmRvbS5Ob2RlKSI+Z2V0RW5kTGluZTwvQT48L0I+KG9yZy53M2MuZG9tLk5vZGUmbmJzcDtub2RlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbGluZSBhdCB3aGljaCB0aGUgZ2l2ZW4gbm9kZSBlbmRzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0U3RhcnRDb2x1bW4ob3JnLnczYy5kb20uTm9kZSkiPmdldFN0YXJ0Q29sdW1uPC9BPjwvQj4ob3JnLnczYy5kb20uTm9kZSZuYnNwO25vZGUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBjb2x1bW4gYXQgd2hpY2ggdGhlIGdpdmVuIG5vZGUgc3RhcnRzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0U3RhcnRMaW5lKG9yZy53M2MuZG9tLk5vZGUpIj5nZXRTdGFydExpbmU8L0E+PC9CPihvcmcudzNjLmRvbS5Ob2RlJm5ic3A7bm9kZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGxpbmUgYXQgd2hpY2ggdGhlIGdpdmVuIG5vZGUgc3RhcnRzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLnV0aWwuTWFwPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2dldFVzZXJEYXRhKG9yZy53M2MuZG9tLk5vZGUpIj5nZXRVc2VyRGF0YTwvQT48L0I+KG9yZy53M2MuZG9tLk5vZGUmbmJzcDtub2RlKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgdXNlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNwYXJzZShvcmcueG1sLnNheC5JbnB1dFNvdXJjZSkiPnBhcnNlPC9BPjwvQj4ob3JnLnhtbC5zYXguSW5wdXRTb3VyY2UmbmJzcDtpbnB1dFNvdXJjZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3BhcnNlKGphdmEuaW8uSW5wdXRTdHJlYW0pIj5wYXJzZTwvQT48L0I+KGphdmEuaW8uSW5wdXRTdHJlYW0mbmJzcDtpbnB1dFN0cmVhbSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1BhcnNlcyB0aGUgWE1MIGNvbnRlbnQgcmVhZCBmcm9tIHRoZSBnaXZlbiBpbnB1dCBzdHJlYW0uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjcHJvY2Vzc2luZ0luc3RydWN0aW9uKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb248L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtkYXRhKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO29yZy54bWwuc2F4LklucHV0U291cmNlPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3Jlc29sdmVFbnRpdHkoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPnJlc29sdmVFbnRpdHk8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cHVibGljSWQsCi0gICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtzeXN0ZW1JZCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3NldERvY3VtZW50TG9jYXRvcihvcmcueG1sLnNheC5Mb2NhdG9yKSI+c2V0RG9jdW1lbnRMb2NhdG9yPC9BPjwvQj4ob3JnLnhtbC5zYXguTG9jYXRvciZuYnNwO2xvY2F0b3IpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNzdGFydENEQVRBKCkiPnN0YXJ0Q0RBVEE8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNzdGFydERvY3VtZW50KCkiPnN0YXJ0RG9jdW1lbnQ8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNzdGFydERURChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+c3RhcnREVEQ8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSwKLSAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtwdWJsaWNJZCwKLSAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtzeXN0ZW1JZCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3N0YXJ0RWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBvcmcueG1sLnNheC5BdHRyaWJ1dGVzKSI+c3RhcnRFbGVtZW50PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3VyaSwKLSAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bG9jYWxOYW1lLAotICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtxTmFtZSwKLSAgICAgICAgICAgICBvcmcueG1sLnNheC5BdHRyaWJ1dGVzJm5ic3A7YXR0cmlidXRlcyk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI3N0YXJ0RW50aXR5KGphdmEubGFuZy5TdHJpbmcpIj5zdGFydEVudGl0eTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjd2FybmluZyhvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbikiPndhcm5pbmc8L0E+PC9CPihvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiZuYnNwO2V4Y2VwdGlvbik8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3Mgb3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlcjwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmVuZFByZWZpeE1hcHBpbmcsIGlnbm9yYWJsZVdoaXRlc3BhY2UsIG5vdGF0aW9uRGVjbCwgc2tpcHBlZEVudGl0eSwgc3RhcnRQcmVmaXhNYXBwaW5nLCB1bnBhcnNlZEVudGl0eURlY2w8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+ZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJXU0RMUGFyc2VyKCkiPjwhLS0gLS0+PC9BPjxIMz4KLVdTRExQYXJzZXI8L0gzPgotPFBSRT4KLXB1YmxpYyA8Qj5XU0RMUGFyc2VyPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+RGVmYXVsdCBjb25zdHJ1Y3Rvci4KLTxQPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iV1NETFBhcnNlcihqYXZhLnV0aWwuTWFwKSI+PCEtLSAtLT48L0E+PEgzPgotV1NETFBhcnNlcjwvSDM+Ci08UFJFPgotcHVibGljIDxCPldTRExQYXJzZXI8L0I+KGphdmEudXRpbC5NYXAmbmJzcDtvcHRpb25zKTwvUFJFPgotPERMPgotPEREPkNvbnN0cnVjdHMgYSBXU0RMIHBhcnNlciBnaXZlbiBhIHNldCBvZiBwYXJzaW5nIG9wdGlvbnMuCi08UD4KLTxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+b3B0aW9uczwvQ09ERT4gLSBhIE1hcCBvZiBTdHJpbmcgdG8gT2JqZWN0LCBwYXNzZWQgYWxvbmcgdGhyb3VnaCB0aGUgUmVzb3VyY2VTZXQgYW5kIFJlc291cmNlLjwvREw+Ci08L0RMPgotCi08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9ImdldEVuZENvbHVtbihvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RW5kQ29sdW1uPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGludCA8Qj5nZXRFbmRDb2x1bW48L0I+KG9yZy53M2MuZG9tLk5vZGUmbmJzcDtub2RlKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGNvbHVtbiBhdCB3aGljaCB0aGUgZ2l2ZW4gbm9kZSBlbmRzLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ub2RlPC9DT0RFPiAtIHRoZSBub2RlIHRvIHF1ZXJ5LgotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgY29sdW1uIGF0IHdoaWNoIHRoZSBnaXZlbiBub2RlIGVuZHMuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRFbmRMaW5lKG9yZy53M2MuZG9tLk5vZGUpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRFbmRMaW5lPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGludCA8Qj5nZXRFbmRMaW5lPC9CPihvcmcudzNjLmRvbS5Ob2RlJm5ic3A7bm9kZSk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBsaW5lIGF0IHdoaWNoIHRoZSBnaXZlbiBub2RlIGVuZHMuCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm5vZGU8L0NPREU+IC0gdGhlIG5vZGUgdG8gcXVlcnkuCi08RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBsaW5lIGF0IHdoaWNoIHRoZSBnaXZlbiBub2RlIGVuZHMuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRTdGFydENvbHVtbihvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U3RhcnRDb2x1bW48L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgaW50IDxCPmdldFN0YXJ0Q29sdW1uPC9CPihvcmcudzNjLmRvbS5Ob2RlJm5ic3A7bm9kZSk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSBjb2x1bW4gYXQgd2hpY2ggdGhlIGdpdmVuIG5vZGUgc3RhcnRzLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ub2RlPC9DT0RFPiAtIHRoZSBub2RlIHRvIHF1ZXJ5LgotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgY29sdW1uIGF0IHdoaWNoIHRoZSBnaXZlbiBub2RlIHN0YXJ0cy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldFN0YXJ0TGluZShvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0U3RhcnRMaW5lPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGludCA8Qj5nZXRTdGFydExpbmU8L0I+KG9yZy53M2MuZG9tLk5vZGUmbmJzcDtub2RlKTwvUFJFPgotPERMPgotPEREPlJldHVybnMgdGhlIGxpbmUgYXQgd2hpY2ggdGhlIGdpdmVuIG5vZGUgc3RhcnRzLgotPFA+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ub2RlPC9DT0RFPiAtIHRoZSBub2RlIHRvIHF1ZXJ5LgotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbGluZSBhdCB3aGljaCB0aGUgZ2l2ZW4gbm9kZSBzdGFydHMuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRVc2VyRGF0YShvcmcudzNjLmRvbS5Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0VXNlckRhdGE8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgamF2YS51dGlsLk1hcCA8Qj5nZXRVc2VyRGF0YTwvQj4ob3JnLnczYy5kb20uTm9kZSZuYnNwO25vZGUpPC9QUkU+Ci08REw+Ci08REQ+UmV0dXJucyB0aGUgdXNlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZS4gSWYgdGhlIG5vZGUgaGFzIG5vIHVzZXIKLSBkYXRhLCBhIG5ldyBlbXB0eSBtYXAgaXMgY3JlYXRlZC4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bm9kZTwvQ09ERT4gLSB0aGUgbm9kZSB0byBxdWVyeS4KLTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHVzZXIgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGUuPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJjaGFyYWN0ZXJzKGNoYXJbXSwgaW50LCBpbnQpIj48IS0tIC0tPjwvQT48SDM+Ci1jaGFyYWN0ZXJzPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5jaGFyYWN0ZXJzPC9CPihjaGFyW10mbmJzcDtjaGFyYWN0ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7bGVuZ3RoKQotICAgICAgICAgICAgICAgIHRocm93cyBvcmcueG1sLnNheC5TQVhFeGNlcHRpb248L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+Y2hhcmFjdGVyczwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPm9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyPC9DT0RFPjxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48Q09ERT5jaGFyYWN0ZXJzPC9DT0RFPiBpbiBjbGFzcyA8Q09ERT5vcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlRocm93czo8L0I+Ci08REQ+PENPREU+b3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iY29tbWVudChjaGFyW10sIGludCwgaW50KSI+PCEtLSAtLT48L0E+PEgzPgotY29tbWVudDwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+Y29tbWVudDwvQj4oY2hhcltdJm5ic3A7Y2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7c3RhcnQsCi0gICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2xlbmd0aCkKLSAgICAgICAgICAgICB0aHJvd3Mgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmNvbW1lbnQ8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcueG1sLnNheC5leHQuTGV4aWNhbEhhbmRsZXI8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotCi08RFQ+PEI+VGhyb3dzOjwvQj4KLTxERD48Q09ERT5vcmcueG1sLnNheC5TQVhFeGNlcHRpb248L0NPREU+PC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJlbmRDREFUQSgpIj48IS0tIC0tPjwvQT48SDM+Ci1lbmRDREFUQTwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+ZW5kQ0RBVEE8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+ZW5kQ0RBVEE8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcueG1sLnNheC5leHQuTGV4aWNhbEhhbmRsZXI8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJlbmREb2N1bWVudCgpIj48IS0tIC0tPjwvQT48SDM+Ci1lbmREb2N1bWVudDwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+ZW5kRG9jdW1lbnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+ZW5kRG9jdW1lbnQ8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcueG1sLnNheC5Db250ZW50SGFuZGxlcjwvQ09ERT48RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PENPREU+ZW5kRG9jdW1lbnQ8L0NPREU+IGluIGNsYXNzIDxDT0RFPm9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXI8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJlbmREVEQoKSI+PCEtLSAtLT48L0E+PEgzPgotZW5kRFREPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5lbmREVEQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+ZW5kRFREPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+b3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZW5kRWxlbWVudChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotZW5kRWxlbWVudDwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+ZW5kRWxlbWVudDwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2xvY2FsTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO3FOYW1lKQotICAgICAgICAgICAgICAgIHRocm93cyBvcmcueG1sLnNheC5TQVhFeGNlcHRpb248L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+ZW5kRWxlbWVudDwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPm9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyPC9DT0RFPjxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48Q09ERT5lbmRFbGVtZW50PC9DT0RFPiBpbiBjbGFzcyA8Q09ERT5vcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlRocm93czo8L0I+Ci08REQ+PENPREU+b3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZW5kRW50aXR5KGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1lbmRFbnRpdHk8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPmVuZEVudGl0eTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmVuZEVudGl0eTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPm9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlcjwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImVycm9yKG9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uKSI+PCEtLSAtLT48L0E+PEgzPgotZXJyb3I8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPmVycm9yPC9CPihvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiZuYnNwO2V4Y2VwdGlvbik8L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+ZXJyb3I8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcueG1sLnNheC5FcnJvckhhbmRsZXI8L0NPREU+PERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxDT0RFPmVycm9yPC9DT0RFPiBpbiBjbGFzcyA8Q09ERT5vcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZmF0YWxFcnJvcihvcmcueG1sLnNheC5TQVhFeGNlcHRpb24pIj48IS0tIC0tPjwvQT48SDM+Ci1mYXRhbEVycm9yPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5mYXRhbEVycm9yPC9CPihvcmcueG1sLnNheC5TQVhFeGNlcHRpb24mbmJzcDtleGNlcHRpb24pPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJmYXRhbEVycm9yKG9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uKSI+PCEtLSAtLT48L0E+PEgzPgotZmF0YWxFcnJvcjwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+ZmF0YWxFcnJvcjwvQj4ob3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24mbmJzcDtleGNlcHRpb24pPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPmZhdGFsRXJyb3I8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcueG1sLnNheC5FcnJvckhhbmRsZXI8L0NPREU+PERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxDT0RFPmZhdGFsRXJyb3I8L0NPREU+IGluIGNsYXNzIDxDT0RFPm9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXI8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXREaWFnbm9zdGljcygpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXREaWFnbm9zdGljczwvSDM+Ci08UFJFPgotcHVibGljIGphdmEudXRpbC5Db2xsZWN0aW9uIDxCPmdldERpYWdub3N0aWNzPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+UHJvdmlkZXMgYSBjb2xsZWN0aW9uIHdpdGggdGhlIGRpYWdub3N0aWNzIGdlbmVyYXRlZCBkdXJpbmcgcGFyc2luZy4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD5hIENvbGxlY3Rpb24gb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxDT0RFPldTRExEaWFnbm9zdGljPC9DT0RFPjwvQT4gb2JqZWN0cy48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldERvY3VtZW50KCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERvY3VtZW50PC9IMz4KLTxQUkU+Ci1wdWJsaWMgb3JnLnczYy5kb20uRG9jdW1lbnQgPEI+Z2V0RG9jdW1lbnQ8L0I+KCk8L1BSRT4KLTxETD4KLTxERD5Qcm92aWRlcyB0aGUgRE9NIGRvY3VtZW50IGNyZWF0ZWQgYnkgcGFyc2luZyB0aGUgV1NETCBkb2N1bWVudC4KLTxQPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgcmVzdWx0aW5nIERPTSBkb2N1bWVudC48L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InBhcnNlKG9yZy54bWwuc2F4LklucHV0U291cmNlKSI+PCEtLSAtLT48L0E+PEgzPgotcGFyc2U8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnBhcnNlPC9CPihvcmcueG1sLnNheC5JbnB1dFNvdXJjZSZuYnNwO2lucHV0U291cmNlKTwvUFJFPgotPERMPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0icGFyc2UoamF2YS5pby5JbnB1dFN0cmVhbSkiPjwhLS0gLS0+PC9BPjxIMz4KLXBhcnNlPC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5wYXJzZTwvQj4oamF2YS5pby5JbnB1dFN0cmVhbSZuYnNwO2lucHV0U3RyZWFtKTwvUFJFPgotPERMPgotPEREPlBhcnNlcyB0aGUgWE1MIGNvbnRlbnQgcmVhZCBmcm9tIHRoZSBnaXZlbiBpbnB1dCBzdHJlYW0uCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTxERD48REw+Ci08RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmlucHV0U3RyZWFtPC9DT0RFPiAtIHRoZSBzb3VyY2UgaW5wdXQgc3RyZWFtLiBNdXN0IG5vdCBiZSBudWxsLjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0icHJvY2Vzc2luZ0luc3RydWN0aW9uKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1wcm9jZXNzaW5nSW5zdHJ1Y3Rpb248L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnByb2Nlc3NpbmdJbnN0cnVjdGlvbjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3RhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZGF0YSk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+cHJvY2Vzc2luZ0luc3RydWN0aW9uPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+b3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXI8L0NPREU+PERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxDT0RFPnByb2Nlc3NpbmdJbnN0cnVjdGlvbjwvQ09ERT4gaW4gY2xhc3MgPENPREU+b3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlcjwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InJlc29sdmVFbnRpdHkoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXJlc29sdmVFbnRpdHk8L0gzPgotPFBSRT4KLXB1YmxpYyBvcmcueG1sLnNheC5JbnB1dFNvdXJjZSA8Qj5yZXNvbHZlRW50aXR5PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cHVibGljSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7c3lzdGVtSWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBvcmcueG1sLnNheC5TQVhFeGNlcHRpb248L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+cmVzb2x2ZUVudGl0eTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPm9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyPC9DT0RFPjxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48Q09ERT5yZXNvbHZlRW50aXR5PC9DT0RFPiBpbiBjbGFzcyA8Q09ERT5vcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlRocm93czo8L0I+Ci08REQ+PENPREU+b3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2V0RG9jdW1lbnRMb2NhdG9yKG9yZy54bWwuc2F4LkxvY2F0b3IpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXREb2N1bWVudExvY2F0b3I8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnNldERvY3VtZW50TG9jYXRvcjwvQj4ob3JnLnhtbC5zYXguTG9jYXRvciZuYnNwO2xvY2F0b3IpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnNldERvY3VtZW50TG9jYXRvcjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPm9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyPC9DT0RFPjxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48Q09ERT5zZXREb2N1bWVudExvY2F0b3I8L0NPREU+IGluIGNsYXNzIDxDT0RFPm9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXI8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzdGFydENEQVRBKCkiPjwhLS0gLS0+PC9BPjxIMz4KLXN0YXJ0Q0RBVEE8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnN0YXJ0Q0RBVEE8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c3RhcnRDREFUQTwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPm9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlcjwvQ09ERT48L0RMPgotPC9ERD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InN0YXJ0RG9jdW1lbnQoKSI+PCEtLSAtLT48L0E+PEgzPgotc3RhcnREb2N1bWVudDwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+c3RhcnREb2N1bWVudDwvQj4oKTwvUFJFPgotPERMPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zdGFydERvY3VtZW50PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+b3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXI8L0NPREU+PERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxDT0RFPnN0YXJ0RG9jdW1lbnQ8L0NPREU+IGluIGNsYXNzIDxDT0RFPm9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXI8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzdGFydERURChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc3RhcnREVEQ8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPnN0YXJ0RFREPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtwdWJsaWNJZCwKLSAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtzeXN0ZW1JZCk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+c3RhcnREVEQ8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcueG1sLnNheC5leHQuTGV4aWNhbEhhbmRsZXI8L0NPREU+PC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJzdGFydEVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLnhtbC5zYXguQXR0cmlidXRlcykiPjwhLS0gLS0+PC9BPjxIMz4KLXN0YXJ0RWxlbWVudDwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+c3RhcnRFbGVtZW50PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb2NhbE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO3FOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy54bWwuc2F4LkF0dHJpYnV0ZXMmbmJzcDthdHRyaWJ1dGVzKQotICAgICAgICAgICAgICAgICAgdGhyb3dzIG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjwvUFJFPgotPERMPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT5zdGFydEVsZW1lbnQ8L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT5vcmcueG1sLnNheC5Db250ZW50SGFuZGxlcjwvQ09ERT48RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PENPREU+c3RhcnRFbGVtZW50PC9DT0RFPiBpbiBjbGFzcyA8Q09ERT5vcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLQotPERUPjxCPlRocm93czo8L0I+Ci08REQ+PENPREU+b3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uPC9DT0RFPjwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic3RhcnRFbnRpdHkoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXN0YXJ0RW50aXR5PC9IMz4KLTxQUkU+Ci1wdWJsaWMgdm9pZCA8Qj5zdGFydEVudGl0eTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPERUPjxCPlNwZWNpZmllZCBieTo8L0I+PEREPjxDT0RFPnN0YXJ0RW50aXR5PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+b3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0id2FybmluZyhvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbikiPjwhLS0gLS0+PC9BPjxIMz4KLXdhcm5pbmc8L0gzPgotPFBSRT4KLXB1YmxpYyB2b2lkIDxCPndhcm5pbmc8L0I+KG9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uJm5ic3A7ZXhjZXB0aW9uKTwvUFJFPgotPERMPgotPEREPjxETD4KLTxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT53YXJuaW5nPC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+b3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyPC9DT0RFPjxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48Q09ERT53YXJuaW5nPC9DT0RFPiBpbiBjbGFzcyA8Q09ERT5vcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyPC9DT0RFPjwvREw+Ci08L0REPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RW5jb2RpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RW5jb2Rpbmc8L0gzPgotPFBSRT4KLXB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldEVuY29kaW5nPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1dTRExQYXJzZXIuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExQYXJzZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4MmRjOTIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMzMyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkKLTwvVElUTEU+Ci0KLTxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeSBjbGFzcyI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxIMj4KLTxGT05UIFNJWkU9Ii0xIj4KLW9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0ZPTlQ+Ci08QlI+Ci1DbGFzcyBXU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnk8L0gyPgotPFBSRT4KLWphdmEubGFuZy5PYmplY3QKLSAgPElNRyBTUkM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9pbmhlcml0LmdpZiIgQUxUPSJleHRlbmRlZCBieSAiPlJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5SW1wbAotICAgICAgPElNRyBTUkM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy9pbmhlcml0LmdpZiIgQUxUPSJleHRlbmRlZCBieSAiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5PC9CPgotPC9QUkU+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgY2xhc3MgPEI+V1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5PC9CPjxEVD5leHRlbmRzIFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5SW1wbDwvREw+Ci08L1BSRT4KLQotPFA+Ci1UaGlzIGNsYXNzIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBsb2FkaW5nIG9mIFdTREwgb3IgWFNEIHJlc291cmNlIGZyb20KLSBVUkkncyB0aGF0IGRvbid0IGVuZCB3aXRoIC54c2Qgb3IgLndzZGwgZXh0ZW5zaW9ucy4KLSAKLSBUaGVzZSBVUkkncyBmb2lsIEVNRidzIHN0YW5kYXJkIHJlc291cmNlIGxvYWRpbmcgbWVjaGFuaXNtIHdpY2ggYXNzdW1lcyB0aGF0Ci0gYSByZXNvdXJjZSB0eXBlIGNhbiBhbHdheXMgYmUgZGVkdWNlZCBmcm9tIHRoZSBmaWxlIGV4dGVuc2lvbi4KLSAKLSAgQ29kZSBFeGFtcGxlOgotICAgIFJlc291cmNlU2V0IHJlc291cmNlU2V0ID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOwotICAgIFdTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeSByZWdpc3RyeSA9IG5ldyBXU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoUmVzb3VyY2UuRmFjdG9yeS5SZWdpc3RyeS5JTlNUQU5DRSk7Ci0gICAgcmVzb3VyY2VTZXQuc2V0UmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkocmVnaXN0cnkpOwotIDxwPgotIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvCi0gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS4gSXQgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgYXQgdGhpcyBlYXJseSBzdGFnZSB0byBzb2xpY2l0IGZlZWRiYWNrCi0gZnJvbSBwaW9uZWVyaW5nIGFkb3B0ZXJzIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoaXMgQVBJIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBicm9rZW4KLSAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLgotIDwvcD4KLTxQPgotCi08UD4KLTxETD4KLTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KLSAgPEREPjEuMDwvREQ+Ci08L0RMPgotPEhSPgotCi08UD4KLQotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sI1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeShSZXNvdXJjZS5GYWN0b3J5LlJlZ2lzdHJ5KSI+V1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5PC9BPjwvQj4oUmVzb3VyY2UuRmFjdG9yeS5SZWdpc3RyeSZuYnNwO3BhcmVudCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLk1hcDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sI2dldEV4dGVuc2lvblRvRmFjdG9yeU1hcCgpIj5nZXRFeHRlbnNpb25Ub0ZhY3RvcnlNYXA8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7RmFjdG9yeTwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sI2dldEZhY3RvcnkoVVJJKSI+Z2V0RmFjdG9yeTwvQT48L0I+KFVSSSZuYnNwO3VyaSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtSZXNvdXJjZS5GYWN0b3J5PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwjZ2V0RmFjdG9yeShVUkksIGphdmEubGFuZy5TdHJpbmcpIj5nZXRGYWN0b3J5PC9BPjwvQj4oVVJJJm5ic3A7dXJpLAotICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7Y29udGVudFR5cGUpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7amF2YS51dGlsLk1hcDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sI2dldFByb3RvY29sVG9GYWN0b3J5TWFwKCkiPmdldFByb3RvY29sVG9GYWN0b3J5TWFwPC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCI+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PENPREU+ZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvQ09ERT48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJXU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoUmVzb3VyY2UuRmFjdG9yeS5SZWdpc3RyeSkiPjwhLS0gLS0+PC9BPjxIMz4KLVdTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeTwvSDM+Ci08UFJFPgotcHVibGljIDxCPldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeTwvQj4oUmVzb3VyY2UuRmFjdG9yeS5SZWdpc3RyeSZuYnNwO3BhcmVudCk8L1BSRT4KLTxETD4KLTwvREw+Ci0KLTwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KLQotPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjEiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iZ2V0RXh0ZW5zaW9uVG9GYWN0b3J5TWFwKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldEV4dGVuc2lvblRvRmFjdG9yeU1hcDwvSDM+Ci08UFJFPgotcHVibGljIGphdmEudXRpbC5NYXAgPEI+Z2V0RXh0ZW5zaW9uVG9GYWN0b3J5TWFwPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJnZXRQcm90b2NvbFRvRmFjdG9yeU1hcCgpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRQcm90b2NvbFRvRmFjdG9yeU1hcDwvSDM+Ci08UFJFPgotcHVibGljIGphdmEudXRpbC5NYXAgPEI+Z2V0UHJvdG9jb2xUb0ZhY3RvcnlNYXA8L0I+KCk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImdldEZhY3RvcnkoVVJJKSI+PCEtLSAtLT48L0E+PEgzPgotZ2V0RmFjdG9yeTwvSDM+Ci08UFJFPgotcHVibGljIEZhY3RvcnkgPEI+Z2V0RmFjdG9yeTwvQj4oVVJJJm5ic3A7dXJpKTwvUFJFPgotPERMPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RmFjdG9yeShVUkksIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+Ci1nZXRGYWN0b3J5PC9IMz4KLTxQUkU+Ci1wdWJsaWMgUmVzb3VyY2UuRmFjdG9yeSA8Qj5nZXRGYWN0b3J5PC9CPihVUkkmbmJzcDt1cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtjb250ZW50VHlwZSk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPFRSPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLSAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM1MDY1NC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU3MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1XU0RMUmVzb3VyY2VJbXBsCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsIGNsYXNzIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJXU0RMUmVzb3VyY2VJbXBsIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvV1NETFJlc291cmNlSW1wbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwotJm5ic3A7TkVYVCBDTEFTUzwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTxUUj4KLTxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+Ci0gIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08SDI+Ci08Rk9OVCBTSVpFPSItMSI+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9GT05UPgotPEJSPgotQ2xhc3MgV1NETFJlc291cmNlSW1wbDwvSDI+Ci08UFJFPgotamF2YS5sYW5nLk9iamVjdAotICA8SU1HIFNSQz0iLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2luaGVyaXQuZ2lmIiBBTFQ9ImV4dGVuZGVkIGJ5ICI+UmVzb3VyY2VJbXBsCi0gICAgICA8SU1HIFNSQz0iLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2luaGVyaXQuZ2lmIiBBTFQ9ImV4dGVuZGVkIGJ5ICI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsPC9CPgotPC9QUkU+Ci08SFI+Ci08REw+Ci08RFQ+PFBSRT5wdWJsaWMgY2xhc3MgPEI+V1NETFJlc291cmNlSW1wbDwvQj48RFQ+ZXh0ZW5kcyBSZXNvdXJjZUltcGw8L0RMPgotPC9QUkU+Ci0KLTxQPgotPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLSBUaGUgPGI+UmVzb3VyY2U8L2I+IGltcGxlbWVudGF0aW9uIGZvciB0aGUgbW9kZWwuCi0gVGhpcyBzcGVjaWFsaXplZCByZXNvdXJjZSBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBpdCdzIG93biB3YXkgb2YgbWFraW5nIGtleXMgYW5kIAotIGhyZWZzLCBhbmQgaXQncyBvd24gc2VyaWFsaXphdGlvbi4gVGhpcyBjbGFzcyBpcyBub3QgaW50ZW5kZWQgZm9yIHN1YmNsYXNzaW5nIAotIG91dHNpZGUgb2YgdGhlIG1vZGVsIGltcGxlbWVudGF0aW9uOyBpdCBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGlzIHdpdGggdGhlIAotIFJlc291cmNlIGZyYW1ld29yay4KLSA8cD4KLSA8Yj5Ob3RlOjwvYj4gVGhpcyBjbGFzcy9pbnRlcmZhY2UgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBleHBlY3RlZCB0bwotIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjawotIGZyb20gcGlvbmVlcmluZyBhZG9wdGVycyBvbiB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGlzIEFQSSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYnJva2VuCi0gKHJlcGVhdGVkbHkpIGFzIHRoZSBBUEkgZXZvbHZlcy4KLSA8L3A+Ci08UD4KLQotPFA+Ci08REw+Ci08RFQ+PEI+U2luY2U6PC9CPjwvRFQ+Ci0gIDxERD4xLjA8L0REPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PENPREU+V1NETFJlc291cmNlRmFjdG9yeUltcGw8L0NPREU+PC9ETD4KLTxIUj4KLQotPFA+Ci08IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci0KLTxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNDT05USU5VRV9PTl9MT0FEX0VSUk9SIj5DT05USU5VRV9PTl9MT0FEX0VSUk9SPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI1RSQUNLX0xPQ0FUSU9OIj5UUkFDS19MT0NBVElPTjwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgdGhpcyBvcHRpb24gd2l0aCBhIHZhbHVlIG9mIEJvb2xlYW4uVFJVRSB0byB0aGUgb3B0aW9ucyBtYXAgd2hlbgotIGxvYWRpbmcgYSByZXNvdXJjZSB0byBpbnN0cnVjdCB0aGUgbG9hZGVyIHRvIHRyYWNrIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGZvcgotIGVhY2ggbm9kZSBpbiB0aGUgc291cmNlIGRvY3VtZW50LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI1VTRV9FWFRFTlNJT05fRkFDVE9SSUVTIj5VU0VfRVhURU5TSU9OX0ZBQ1RPUklFUzwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNXU0RMX0VOQ09ESU5HIj5XU0RMX0VOQ09ESU5HPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI1dTRExfSkFYUF9DT05GSUciPldTRExfSkFYUF9DT05GSUc8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgYXMgYW4gb3B0aW9uIG9uIFJlc291cmNlI2xvYWQgbWV0aG9kcyB0byBzcGVjaWZ5IEpBWFAgY29uZmlndXJhdGlvbgotIHRoYXQgY3JlYXRlcyBhbmQgY29uZmlndXJlcyBTQVgsIERPTSBwYXJzZXJzIGFuZCBUcmFuc2Zvcm1lci48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNXU0RMX0pBWFBfUE9PTCI+V1NETF9KQVhQX1BPT0w8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgYXMgYW4gb3B0aW9uIG9uIFJlc291cmNlI2xvYWQgbWV0aG9kcyB0byBzcGVjaWZ5IEpBWFAgcG9vbCB0byBiZSB1c2VkCi0gZm9yIGxvYWRpbmcgYW5kIHNlcmlhbGl6aW5nIFhNTCBTY2hlbWFzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI1dTRExfUFJPR1JFU1NfTU9OSVRPUiI+V1NETF9QUk9HUkVTU19NT05JVE9SPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotCi08QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNXU0RMUmVzb3VyY2VJbXBsKFVSSSkiPldTRExSZXNvdXJjZUltcGw8L0E+PC9CPihVUkkmbmJzcDt1cmkpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZTwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNhdHRhY2hlZChFT2JqZWN0KSI+YXR0YWNoZWQ8L0E+PC9CPihFT2JqZWN0Jm5ic3A7ZU9iamVjdCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDtqYXZhLnV0aWwuTWFwPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI2dldERlZmF1bHRTYXZlT3B0aW9ucygpIj5nZXREZWZhdWx0U2F2ZU9wdGlvbnM8L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5EZWZpbml0aW9uPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNnZXREZWZpbml0aW9uKCkiPmdldERlZmluaXRpb248L0E+PC9CPigpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSByZXNvdXJjZSdzIERlZmluaXRpb24uPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPnN0YXRpYyZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwjc2VyaWFsaXplKGphdmEuaW8uT3V0cHV0U3RyZWFtLCBvcmcudzNjLmRvbS5Eb2N1bWVudCkiPnNlcmlhbGl6ZTwvQT48L0I+KGphdmEuaW8uT3V0cHV0U3RyZWFtJm5ic3A7b3V0cHV0U3RyZWFtLAotICAgICAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50Jm5ic3A7ZG9jdW1lbnQpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNzZXJpYWxpemUoamF2YS5pby5PdXRwdXRTdHJlYW0sIG9yZy53M2MuZG9tLkRvY3VtZW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+c2VyaWFsaXplPC9BPjwvQj4oamF2YS5pby5PdXRwdXRTdHJlYW0mbmJzcDtvdXRwdXRTdHJlYW0sCi0gICAgICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQmbmJzcDtkb2N1bWVudCwKLSAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7ZW5jb2RpbmcpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUltcGwuaHRtbCNzZXJpYWxpemUoamF2YS5pby5PdXRwdXRTdHJlYW0sIG9yZy53M2MuZG9tLkVsZW1lbnQpIj5zZXJpYWxpemU8L0E+PC9CPihqYXZhLmlvLk91dHB1dFN0cmVhbSZuYnNwO291dHB1dFN0cmVhbSwKLSAgICAgICAgICBvcmcudzNjLmRvbS5FbGVtZW50Jm5ic3A7ZWxlbWVudCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sI3NlcmlhbGl6ZShqYXZhLmlvLk91dHB1dFN0cmVhbSwgb3JnLnczYy5kb20uRWxlbWVudCwgamF2YS5sYW5nLlN0cmluZykiPnNlcmlhbGl6ZTwvQT48L0I+KGphdmEuaW8uT3V0cHV0U3RyZWFtJm5ic3A7b3V0cHV0U3RyZWFtLAotICAgICAgICAgIG9yZy53M2MuZG9tLkVsZW1lbnQmbmJzcDtlbGVtZW50LAotICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtlbmNvZGluZyk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxDT0RFPmVxdWFscywgZ2V0Q2xhc3MsIGhhc2hDb2RlLCBub3RpZnksIG5vdGlmeUFsbCwgdG9TdHJpbmcsIHdhaXQsIHdhaXQsIHdhaXQ8L0NPREU+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJmaWVsZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5GaWVsZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLQotPEEgTkFNRT0iVVNFX0VYVEVOU0lPTl9GQUNUT1JJRVMiPjwhLS0gLS0+PC9BPjxIMz4KLVVTRV9FWFRFTlNJT05fRkFDVE9SSUVTPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+VVNFX0VYVEVOU0lPTl9GQUNUT1JJRVM8L0I+PC9QUkU+Ci08REw+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwuVVNFX0VYVEVOU0lPTl9GQUNUT1JJRVMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iQ09OVElOVUVfT05fTE9BRF9FUlJPUiI+PCEtLSAtLT48L0E+PEgzPgotQ09OVElOVUVfT05fTE9BRF9FUlJPUjwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIDxCPkNPTlRJTlVFX09OX0xPQURfRVJST1I8L0I+PC9QUkU+Ci08REw+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwuQ09OVElOVUVfT05fTE9BRF9FUlJPUiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJXU0RMX0VOQ09ESU5HIj48IS0tIC0tPjwvQT48SDM+Ci1XU0RMX0VOQ09ESU5HPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+V1NETF9FTkNPRElORzwvQj48L1BSRT4KLTxETD4KLTxETD4KLTxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbC5XU0RMX0VOQ09ESU5HIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9IldTRExfUFJPR1JFU1NfTU9OSVRPUiI+PCEtLSAtLT48L0E+PEgzPgotV1NETF9QUk9HUkVTU19NT05JVE9SPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+V1NETF9QUk9HUkVTU19NT05JVE9SPC9CPjwvUFJFPgotPERMPgotPERMPgotPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsLldTRExfUFJPR1JFU1NfTU9OSVRPUiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJUUkFDS19MT0NBVElPTiI+PCEtLSAtLT48L0E+PEgzPgotVFJBQ0tfTE9DQVRJT048L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5UUkFDS19MT0NBVElPTjwvQj48L1BSRT4KLTxETD4KLTxERD5BZGQgdGhpcyBvcHRpb24gd2l0aCBhIHZhbHVlIG9mIEJvb2xlYW4uVFJVRSB0byB0aGUgb3B0aW9ucyBtYXAgd2hlbgotIGxvYWRpbmcgYSByZXNvdXJjZSB0byBpbnN0cnVjdCB0aGUgbG9hZGVyIHRvIHRyYWNrIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGZvcgotIGVhY2ggbm9kZSBpbiB0aGUgc291cmNlIGRvY3VtZW50LgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNnZXRVc2VyRGF0YShvcmcudzNjLmRvbS5Ob2RlKSI+PENPREU+V1NETFBhcnNlci5nZXRVc2VyRGF0YShvcmcudzNjLmRvbS5Ob2RlKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2dldFN0YXJ0Q29sdW1uKG9yZy53M2MuZG9tLk5vZGUpIj48Q09ERT5XU0RMUGFyc2VyLmdldFN0YXJ0Q29sdW1uKG9yZy53M2MuZG9tLk5vZGUpPC9DT0RFPjwvQT4sIAotPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwjZ2V0RW5kQ29sdW1uKG9yZy53M2MuZG9tLk5vZGUpIj48Q09ERT5XU0RMUGFyc2VyLmdldEVuZENvbHVtbihvcmcudzNjLmRvbS5Ob2RlKTwvQ09ERT48L0E+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sI2dldFN0YXJ0TGluZShvcmcudzNjLmRvbS5Ob2RlKSI+PENPREU+V1NETFBhcnNlci5nZXRTdGFydExpbmUob3JnLnczYy5kb20uTm9kZSk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExQYXJzZXIuaHRtbCNnZXRFbmRMaW5lKG9yZy53M2MuZG9tLk5vZGUpIj48Q09ERT5XU0RMUGFyc2VyLmdldEVuZExpbmUob3JnLnczYy5kb20uTm9kZSk8L0NPREU+PC9BPiwgCi08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwuVFJBQ0tfTE9DQVRJT04iPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iV1NETF9KQVhQX1BPT0wiPjwhLS0gLS0+PC9BPjxIMz4KLVdTRExfSkFYUF9QT09MPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+V1NETF9KQVhQX1BPT0w8L0I+PC9QUkU+Ci08REw+Ci08REQ+VGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgYXMgYW4gb3B0aW9uIG9uIFJlc291cmNlI2xvYWQgbWV0aG9kcyB0byBzcGVjaWZ5IEpBWFAgcG9vbCB0byBiZSB1c2VkCi0gZm9yIGxvYWRpbmcgYW5kIHNlcmlhbGl6aW5nIFhNTCBTY2hlbWFzLgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5SZXNvdXJjZSNsb2FkKElucHV0U3RyZWFtLCBNYXApPC9DT0RFPiwgCi08Q09ERT5SZXNvdXJjZSNsb2FkKE1hcCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbC5XU0RMX0pBWFBfUE9PTCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+Ci08L0RMPgotPEhSPgotCi08QSBOQU1FPSJXU0RMX0pBWFBfQ09ORklHIj48IS0tIC0tPjwvQT48SDM+Ci1XU0RMX0pBWFBfQ09ORklHPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+V1NETF9KQVhQX0NPTkZJRzwvQj48L1BSRT4KLTxETD4KLTxERD5UaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCBhcyBhbiBvcHRpb24gb24gUmVzb3VyY2UjbG9hZCBtZXRob2RzIHRvIHNwZWNpZnkgSkFYUCBjb25maWd1cmF0aW9uCi0gdGhhdCBjcmVhdGVzIGFuZCBjb25maWd1cmVzIFNBWCwgRE9NIHBhcnNlcnMgYW5kIFRyYW5zZm9ybWVyLgotPFA+Ci08REw+Ci08RFQ+PEI+U2VlIEFsc286PC9CPjxERD48Q09ERT5SZXNvdXJjZSNsb2FkKElucHV0U3RyZWFtLCBNYXApPC9DT0RFPiwgCi08Q09ERT5SZXNvdXJjZSNsb2FkKE1hcCk8L0NPREU+LCAKLTxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbC5XU0RMX0pBWFBfQ09ORklHIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L0E+PC9ETD4KLTwvREw+Ci0KLTwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4KLQotPEEgTkFNRT0iY29uc3RydWN0b3JfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+Q29uc3RydWN0b3IgRGV0YWlsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxBIE5BTUU9IldTRExSZXNvdXJjZUltcGwoVVJJKSI+PCEtLSAtLT48L0E+PEgzPgotV1NETFJlc291cmNlSW1wbDwvSDM+Ci08UFJFPgotcHVibGljIDxCPldTRExSZXNvdXJjZUltcGw8L0I+KFVSSSZuYnNwO3VyaSk8L1BSRT4KLTxETD4KLTxERD5DcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZS4gCi0gPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4gCi0gPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci08UD4KLTxETD4KLTxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dXJpPC9DT0RFPiAtIHRoZSBVUkkgb2YgdGhlIG5ldyByZXNvdXJjZS48L0RMPgotPC9ETD4KLQotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotCi08QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgotPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotCi08QSBOQU1FPSJnZXREZWZpbml0aW9uKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERlZmluaXRpb248L0gzPgotPFBSRT4KLXB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkRlZmluaXRpb248L0E+IDxCPmdldERlZmluaXRpb248L0I+KCk8L1BSRT4KLTxETD4KLTxERD5SZXR1cm5zIHRoZSByZXNvdXJjZSdzIERlZmluaXRpb24uCi08UD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNlcmlhbGl6ZShqYXZhLmlvLk91dHB1dFN0cmVhbSwgb3JnLnczYy5kb20uRG9jdW1lbnQpIj48IS0tIC0tPjwvQT48SDM+Ci1zZXJpYWxpemU8L0gzPgotPFBSRT4KLXB1YmxpYyBzdGF0aWMgdm9pZCA8Qj5zZXJpYWxpemU8L0I+KGphdmEuaW8uT3V0cHV0U3RyZWFtJm5ic3A7b3V0cHV0U3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCZuYnNwO2RvY3VtZW50KTwvUFJFPgotPERMPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2VyaWFsaXplKGphdmEuaW8uT3V0cHV0U3RyZWFtLCBvcmcudzNjLmRvbS5Eb2N1bWVudCwgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KLXNlcmlhbGl6ZTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyB2b2lkIDxCPnNlcmlhbGl6ZTwvQj4oamF2YS5pby5PdXRwdXRTdHJlYW0mbmJzcDtvdXRwdXRTdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50Jm5ic3A7ZG9jdW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtlbmNvZGluZyk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9InNlcmlhbGl6ZShqYXZhLmlvLk91dHB1dFN0cmVhbSwgb3JnLnczYy5kb20uRWxlbWVudCkiPjwhLS0gLS0+PC9BPjxIMz4KLXNlcmlhbGl6ZTwvSDM+Ci08UFJFPgotcHVibGljIHN0YXRpYyB2b2lkIDxCPnNlcmlhbGl6ZTwvQj4oamF2YS5pby5PdXRwdXRTdHJlYW0mbmJzcDtvdXRwdXRTdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy53M2MuZG9tLkVsZW1lbnQmbmJzcDtlbGVtZW50KTwvUFJFPgotPERMPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0ic2VyaWFsaXplKGphdmEuaW8uT3V0cHV0U3RyZWFtLCBvcmcudzNjLmRvbS5FbGVtZW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgotc2VyaWFsaXplPC9IMz4KLTxQUkU+Ci1wdWJsaWMgc3RhdGljIHZvaWQgPEI+c2VyaWFsaXplPC9CPihqYXZhLmlvLk91dHB1dFN0cmVhbSZuYnNwO291dHB1dFN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLnczYy5kb20uRWxlbWVudCZuYnNwO2VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtlbmNvZGluZyk8L1BSRT4KLTxETD4KLTxERD48REw+Ci08L0RMPgotPC9ERD4KLTwvREw+Ci08SFI+Ci0KLTxBIE5BTUU9ImF0dGFjaGVkKEVPYmplY3QpIj48IS0tIC0tPjwvQT48SDM+Ci1hdHRhY2hlZDwvSDM+Ci08UFJFPgotcHVibGljIHZvaWQgPEI+YXR0YWNoZWQ8L0I+KEVPYmplY3QmbmJzcDtlT2JqZWN0KTwvUFJFPgotPERMPgotPEREPjxETD4KLTwvREw+Ci08L0REPgotPC9ETD4KLTxIUj4KLQotPEEgTkFNRT0iZ2V0RGVmYXVsdFNhdmVPcHRpb25zKCkiPjwhLS0gLS0+PC9BPjxIMz4KLWdldERlZmF1bHRTYXZlT3B0aW9uczwvSDM+Ci08UFJFPgotcHVibGljIGphdmEudXRpbC5NYXAgPEI+Z2V0RGVmYXVsdFNhdmVPcHRpb25zPC9CPigpPC9QUkU+Ci08REw+Ci08REQ+PERMPgotPC9ETD4KLTwvREQ+Ci08L0RMPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1dTRExSZXNvdXJjZUltcGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKLSZuYnNwO05FWFQgQ0xBU1M8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFJlc291cmNlSW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08VFI+Ci08VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgotICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KLURFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvY2xhc3MtdXNlL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWQ3NjBmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvY2xhc3MtdXNlL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjA5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9cY2xhc3MtdXNlRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgSW50ZXJmYWNlPGJyPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5PC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0E+IGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT4gdGhhdCByZXR1cm4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETFBsdWdpbi48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBsdWdpbi5odG1sI2dldEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeShqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWVzcGFjZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotVXNlcyBvZiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj5NZXRob2RzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0E+IHdpdGggcGFyYW1ldGVycyBvZiB0eXBlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sI3JlZ2lzdGVyRmFjdG9yeShqYXZhLmxhbmcuU3RyaW5nLCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSkiPnJlZ2lzdGVyRmFjdG9yeTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lc3BhY2UsCi0gICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0E+Jm5ic3A7ZmFjdG9yeSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvXGNsYXNzLXVzZUV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvY2xhc3MtdXNlL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZWRlMWQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Ci08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBJbnRlcmZhY2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvXGNsYXNzLXVzZUV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBJbnRlcmZhY2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5PC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREPjxBIEhSRUY9IiNvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1Vc2VzIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTwvQT4gaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPk1ldGhvZHMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExQbHVnaW4uPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQbHVnaW4uaHRtbCNnZXRFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeSgpIj5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL0V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9cY2xhc3MtdXNlRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETENvbnN0YW50cy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETENvbnN0YW50cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTFjZGYwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvY2xhc3MtdXNlL1dTRExDb25zdGFudHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIENsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cwotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvXGNsYXNzLXVzZVdTRExDb25zdGFudHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMQ29uc3RhbnRzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgQ2xhc3M8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzPC9CPjwvSDI+Ci08L0NFTlRFUj4KLU5vIHVzYWdlIG9mIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50cwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvXGNsYXNzLXVzZVdTRExDb25zdGFudHMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMQ29uc3RhbnRzLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9XU0RMRGlhZ25vc3RpYy5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETERpYWdub3N0aWMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIzMWQ4My4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9XU0RMRGlhZ25vc3RpYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgSW50ZXJmYWNlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWMKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIEludGVyZmFjZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9cY2xhc3MtdXNlV1NETERpYWdub3N0aWMuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMRGlhZ25vc3RpYy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIEludGVyZmFjZTxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljPC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWM8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljPC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPkNsYXNzZXMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT4gdGhhdCBpbXBsZW1lbnQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+Jm5ic3A7Y2xhc3M8L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljSW1wbDwvQT48L0I+PC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBXU0RMRGlhZ25vc3RpYyBpbnRlcmZhY2UuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1xjbGFzcy11c2VXU0RMRGlhZ25vc3RpYy5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExEaWFnbm9zdGljLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvY2xhc3MtdXNlL1dTRExEaWFnbm9zdGljSW1wbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDE3ODU0Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvY2xhc3MtdXNlL1dTRExEaWFnbm9zdGljSW1wbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY0ltcGwKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIENsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWNJbXBsIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9cY2xhc3MtdXNlV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgQ2xhc3M8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY0ltcGw8L0I+PC9IMj4KLTwvQ0VOVEVSPgotTm8gdXNhZ2Ugb2Ygb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY0ltcGwKLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvXGNsYXNzLXVzZVdTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTVjNzYzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvY2xhc3MtdXNlL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1Vc2VzIG9mIENsYXNzIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETERpYWdub3N0aWNTZXZlcml0eQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvXGNsYXNzLXVzZVdTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl90b3AiPjwvQT4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLQotPEhSPgotPEEgTkFNRT0ibWFpbiI+PC9BPgotPENFTlRFUj4KLTxIMj4KLTxCPlVzZXMgb2YgQ2xhc3M8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9CPjwvSDI+Ci08L0NFTlRFUj4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1QYWNrYWdlcyB0aGF0IHVzZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEEgSFJFRj0iI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0I+PC9BPjwvVEQ+Ci08VEQ+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4mbmJzcDs8L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotPEEgTkFNRT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLVVzZXMgb2YgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPiBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLTxQPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPkZpZWxkcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPiBkZWNsYXJlZCBhcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExEaWFnbm9zdGljU2V2ZXJpdHkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0VSUk9SX0xJVEVSQUwiPkVSUk9SX0xJVEVSQUw8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlICc8ZW0+PGI+RXJyb3I8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExEaWFnbm9zdGljU2V2ZXJpdHkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0ZBVEFMX0xJVEVSQUwiPkZBVEFMX0xJVEVSQUw8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlICc8ZW0+PGI+RmF0YWw8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExEaWFnbm9zdGljU2V2ZXJpdHkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI0lORk9STUFUSU9OX0xJVEVSQUwiPklORk9STUFUSU9OX0xJVEVSQUw8L0E+PC9CPjwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlICc8ZW0+PGI+SW5mb3JtYXRpb248L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExEaWFnbm9zdGljU2V2ZXJpdHkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI1dBUk5JTkdfTElURVJBTCI+V0FSTklOR19MSVRFUkFMPC9BPjwvQj48L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSAnPGVtPjxiPldhcm5pbmc8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPiB0aGF0IHJldHVybiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExEaWFnbm9zdGljU2V2ZXJpdHkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI2dldChpbnQpIj5nZXQ8L0E+PC9CPihpbnQmbmJzcDt2YWx1ZSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlICc8ZW0+PGI+RGlhZ25vc3RpYyBTZXZlcml0eTwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZQotIHNwZWNpZmllZCBpbnRlZ2VyIHZhbHVlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExEaWFnbm9zdGljU2V2ZXJpdHkuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI2dldChqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2xpdGVyYWwpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSAnPGVtPjxiPkRpYWdub3N0aWMgU2V2ZXJpdHk8L2I+PC9lbT4nIGxpdGVyYWwgd2l0aCB0aGUKLSBzcGVjaWZpZWQgbGl0ZXJhbCB2YWx1ZS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgotPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KLTxURD48Q09ERT48Qj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5LjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCNnZXRCeU5hbWUoamF2YS5sYW5nLlN0cmluZykiPmdldEJ5TmFtZTwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgJzxlbT48Yj5EaWFnbm9zdGljIFNldmVyaXR5PC9iPjwvZW0+JyBsaXRlcmFsIHdpdGggdGhlCi0gc3BlY2lmaWVkIG5hbWUuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETERpYWdub3N0aWNJbXBsLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sI2dldFNldmVyaXR5KCkiPmdldFNldmVyaXR5PC9BPjwvQj4oKTwvQ09ERT4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KLTxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT48L0NPREU+PC9GT05UPjwvVEQ+Ci08VEQ+PENPREU+PEI+V1NETERpYWdub3N0aWMuPC9CPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCNnZXRTZXZlcml0eSgpIj5nZXRTZXZlcml0eTwvQT48L0I+KCk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Byb3ZpZGVzIHRoaXMgZGlhZ25vc3RpYydzIHNldmVyaXR5LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+TWV0aG9kcyBpbiA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPiB3aXRoIHBhcmFtZXRlcnMgb2YgdHlwZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExEaWFnbm9zdGljSW1wbC48L0I+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCNzZXRTZXZlcml0eShvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExEaWFnbm9zdGljU2V2ZXJpdHkpIj5zZXRTZXZlcml0eTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWNTZXZlcml0eTwvQT4mbmJzcDtuZXdTZXZlcml0eSk8L0NPREU+Ci0KLTxCUj4KLSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+Ci08Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgotPFREPjxDT0RFPjxCPldTRExEaWFnbm9zdGljLjwvQj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwjc2V0U2V2ZXJpdHkob3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMRGlhZ25vc3RpY1NldmVyaXR5KSI+c2V0U2V2ZXJpdHk8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0E+Jm5ic3A7c2V2ZXJpdHkpPC9DT0RFPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXRzIHRoaXMgZGlhZ25vc3RpYydzIHNldmVyaXR5LjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+Q2xhc3M8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uL3BhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvXGNsYXNzLXVzZVdTRExEaWFnbm9zdGljU2V2ZXJpdHkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9XU0RMUGFyc2VyLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9XU0RMUGFyc2VyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMDM5NzIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETFBhcnNlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUGFyc2VyCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExQYXJzZXIiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9cY2xhc3MtdXNlV1NETFBhcnNlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExQYXJzZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBDbGFzczxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExQYXJzZXI8L0I+PC9IMj4KLTwvQ0VOVEVSPgotTm8gdXNhZ2Ugb2Ygb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUGFyc2VyCi08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9cY2xhc3MtdXNlV1NETFBhcnNlci5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExQYXJzZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvY2xhc3MtdXNlL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYWU1MDkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeQotPC9USVRMRT4KLQotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkNsYXNzPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1xjbGFzcy11c2VXU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJXU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBDbGFzczxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeTwvQj48L0gyPgotPC9DRU5URVI+Ci1ObyB1c2FnZSBvZiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeQotPFA+Ci08SFI+Ci0KLQotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9cY2xhc3MtdXNlV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0iV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9XU0RMUmVzb3VyY2VJbXBsLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9XU0RMUmVzb3VyY2VJbXBsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YmU1OWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETFJlc291cmNlSW1wbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLVVzZXMgb2YgQ2xhc3Mgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVXNlcyBvZiBDbGFzcyBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGwiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9cY2xhc3MtdXNlV1NETFJlc291cmNlSW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExSZXNvdXJjZUltcGwuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgyPgotPEI+VXNlcyBvZiBDbGFzczxicj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExSZXNvdXJjZUltcGw8L0I+PC9IMj4KLTwvQ0VOVEVSPgotTm8gdXNhZ2Ugb2Ygb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsCi08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETFJlc291cmNlSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5DbGFzczwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vcGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9cY2xhc3MtdXNlV1NETFJlc291cmNlSW1wbC5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9IldTRExSZXNvdXJjZUltcGwuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1mcmFtZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLWZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NmY5ZmQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsCi08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCBwYWNrYWdlIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiPgotPEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZVRpdGxlRm9udCI+Ci08QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0E+PC9GT05UPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgTk9XUkFQPjxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVIZWFkaW5nRm9udCI+Ci1JbnRlcmZhY2VzPC9GT05UPiZuYnNwOwotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPgotPEJSPgotPEEgSFJFRj0iRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0k+PC9BPgotPEJSPgotPEEgSFJFRj0iRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPjxJPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5PC9JPjwvQT4KLTxCUj4KLTxBIEhSRUY9IldTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48ST5XU0RMRGlhZ25vc3RpYzwvST48L0E+PC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLQotCi08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBOT1dSQVA+PEZPTlQgc2l6ZT0iKzEiIENMQVNTPSJGcmFtZUhlYWRpbmdGb250Ij4KLUNsYXNzZXM8L0ZPTlQ+Jm5ic3A7Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+Ci08QlI+Ci08QSBIUkVGPSJXU0RMQ29uc3RhbnRzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPldTRExDb25zdGFudHM8L0E+Ci08QlI+Ci08QSBIUkVGPSJXU0RMRGlhZ25vc3RpY0ltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiIHRhcmdldD0iY2xhc3NGcmFtZSI+V1NETERpYWdub3N0aWNJbXBsPC9BPgotPEJSPgotPEEgSFJFRj0iV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPgotPEJSPgotPEEgSFJFRj0iV1NETFBhcnNlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5XU0RMUGFyc2VyPC9BPgotPEJSPgotPEEgSFJFRj0iV1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeTwvQT4KLTxCUj4KLTxBIEhSRUY9IldTRExSZXNvdXJjZUltcGwuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiIHRhcmdldD0iY2xhc3NGcmFtZSI+V1NETFJlc291cmNlSW1wbDwvQT48L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDJlZDJhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbAotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwgcGFja2FnZSI+Ci0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEI+UFJFViBQQUNLQUdFPC9CPjwvQT4mbmJzcDsKLSZuYnNwO05FWFQgUEFDS0FHRTwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxIMj4KLVBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbAotPC9IMj4KLQotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuCi08UD4KLTxCPlNlZTo8L0I+Ci08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8QSBIUkVGPSIjcGFja2FnZV9kZXNjcmlwdGlvbiI+PEI+RGVzY3JpcHRpb248L0I+PC9BPgotPFA+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotPEI+SW50ZXJmYWNlIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0E+PC9CPjwvVEQ+Ci08VEQ+Ci0gPGI+Tm90ZTo8L2I+IFRoaXMgY2xhc3MvaW50ZXJmYWNlIGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8KLSBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5PC9BPjwvQj48L1REPgotPFREPgotIDxiPk5vdGU6PC9iPiBUaGlzIGNsYXNzL2ludGVyZmFjZSBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvCi0gY2hhbmdlIHNpZ25pZmljYW50bHkgYmVmb3JlIHJlYWNoaW5nIHN0YWJpbGl0eS48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpYzwvQT48L0I+PC9URD4KLTxURD5HZW5lcmF0ZWQgYnkgdGhlIFdTREwgbW9kZWwgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBtZWNoYW5pc21zLjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotCi08UD4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5DbGFzcyBTdW1tYXJ5PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETENvbnN0YW50cy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETENvbnN0YW50czwvQT48L0I+PC9URD4KLTxURD5UaGlzIGNsYXNzIGRlZmluZXMgY29uc3RhbnRzIGZvciBXU0RMIGVsZW1lbnQgdGFncyBhbmQgcmVsZXZhbnQgbmFtZXNwYWNlcy48L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIxNSUiPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWNJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY0ltcGw8L0E+PC9CPjwvVEQ+Ci08VEQ+RGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV1NETERpYWdub3N0aWMgaW50ZXJmYWNlLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9BPjwvQj48L1REPgotPFREPldTREwgZGlhZ25vc3RpYyBzZXZlcml0eSBsZXZlbHMgdHlwZSBzYWZlIGVudW1lcmF0aW9uLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUGFyc2VyPC9BPjwvQj48L1REPgotPFREPlRoZSA8Yj5TQVggUGFyc2VyPC9iPiBmb3IgdGhlIFdTREwgbW9kZWwuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMTUlIj48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5PC9BPjwvQj48L1REPgotPFREPlRoaXMgY2xhc3MgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIGxvYWRpbmcgb2YgV1NETCBvciBYU0QgcmVzb3VyY2UgZnJvbQotIFVSSSdzIHRoYXQgZG9uJ3QgZW5kIHdpdGggLnhzZCBvciAud3NkbCBleHRlbnNpb25zLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjE1JSI+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj5XU0RMUmVzb3VyY2VJbXBsPC9BPjwvQj48L1REPgotPFREPlRoZSA8Yj5SZXNvdXJjZTwvYj4gaW1wbGVtZW50YXRpb24gZm9yIHRoZSBtb2RlbC48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0mbmJzcDsKLQotPFA+Ci08QSBOQU1FPSJwYWNrYWdlX2Rlc2NyaXB0aW9uIj48IS0tIC0tPjwvQT48SDI+Ci1QYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwgRGVzY3JpcHRpb24KLTwvSDI+Ci0KLTxQPgotPHA+Ci0gICAgICAgIFRoZSBXU0RMIG1vZGVsIEFQSSBhbGxvd3MgY2xpZW50cyB0byB3b3JrIHdpdGggdGhlIFdTREwgMS4xIGRvY3VtZW50cy4KLSAgICAgICAgICAgICAgICA8L3A+Ci08dGFibGUgd2lkdGg9IjUwMCI+Ci08dHI+Ci08dGQ+Ci08cD4KLSAgICAgICAgICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gbG9hZCwgbW9kaWZ5LCBhbmQgc2F2ZSBXU0RMIDEuMSBkb2N1bWVudHMuCi0gICAgICAgICAgICAgICAgPC9wPgotPC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPFA+Ci0KLTxQPgotPERMPgotPC9ETD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdXNlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxCPlBSRVYgUEFDS0FHRTwvQj48L0E+Jm5ic3A7Ci0mbmJzcDtORVhUIFBBQ0tBR0U8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS10cmVlLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2UtdHJlZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjgwOTBhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS10cmVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCBDbGFzcyBIaWVyYXJjaHkKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIENsYXNzIEhpZXJhcmNoeSI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvcGFja2FnZS10cmVlLmh0bWwiPjxCPlBSRVY8L0I+PC9BPiZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci1IaWVyYXJjaHkgRm9yIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbAotPC9IMj4KLTwvQ0VOVEVSPgotPERMPgotPERUPjxCPlBhY2thZ2UgSGllcmFyY2hpZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy10cmVlLmh0bWwiPkFsbCBQYWNrYWdlczwvQT48L0RMPgotPEhSPgotPEgyPgotQ2xhc3MgSGllcmFyY2h5Ci08L0gyPgotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YS5sYW5nLk9iamVjdDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPkFic3RyYWN0RW51bWVyYXRvcjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9CPjwvQT48L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciAoaW1wbGVtZW50cyBvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciwgb3JnLnhtbC5zYXguRFRESGFuZGxlciwgb3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIsIG9yZy54bWwuc2F4LkVycm9ySGFuZGxlcikKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5XU0RMUGFyc2VyPC9CPjwvQT4gKGltcGxlbWVudHMgb3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyKQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPkVPYmplY3RJbXBsPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+V1NETERpYWdub3N0aWNJbXBsPC9CPjwvQT4gKGltcGxlbWVudHMgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWM8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPlJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5SW1wbDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeTwvQj48L0E+PC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPlJlc291cmNlSW1wbDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5XU0RMUmVzb3VyY2VJbXBsPC9CPjwvQT48L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPldTRExDb25zdGFudHM8L0I+PC9BPjwvVUw+Ci08L1VMPgotPEgyPgotSW50ZXJmYWNlIEhpZXJhcmNoeQotPC9IMj4KLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5PC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvV1NETERpYWdub3N0aWMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5XU0RMRGlhZ25vc3RpYzwvQj48L0E+PC9VTD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL3BhY2thZ2UtdHJlZS5odG1sIj48Qj5QUkVWPC9CPjwvQT4mbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS11c2UuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS11c2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYxNWQzYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2UtdXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotVXNlcyBvZiBQYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJVc2VzIG9mIFBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI7Ci19Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLTwvTk9TQ1JJUFQ+Ci0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0id2luZG93VGl0bGUoKTsiPgotCi0KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEEgSFJFRj0iI21haW4iPjxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sP29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJwYWNrYWdlLXVzZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci08Qj5Vc2VzIG9mIFBhY2thZ2U8YnI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQj48L0gyPgotPC9DRU5URVI+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgotUGFja2FnZXMgdGhhdCB1c2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvQT48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuJm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48QSBIUkVGPSIjb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQj48L0E+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLiZuYnNwOzwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLSZuYnNwOwotPFA+Ci08QSBOQU1FPSJvcmcuZWNsaXBzZS53c3Qud3NkbCI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLUNsYXNzZXMgaW4gPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT4gdXNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPjwvVEg+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Lmh0bWwjb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKLSA8Yj5Ob3RlOjwvYj4gVGhpcyBjbGFzcy9pbnRlcmZhY2UgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBleHBlY3RlZCB0bwotIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKLSA8Yj5Ob3RlOjwvYj4gVGhpcyBjbGFzcy9pbnRlcmZhY2UgaXMgcGFydCBvZiBhbiBpbnRlcmltIEFQSSB0aGF0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBleHBlY3RlZCB0bwotIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxBIE5BTUU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIyIj48Rk9OVCBTSVpFPSIrMiI+Ci1DbGFzc2VzIGluIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWw8L0E+IHVzZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURD48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL2NsYXNzLXVzZS9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ci0gPGI+Tm90ZTo8L2I+IFRoaXMgY2xhc3MvaW50ZXJmYWNlIGlzIHBhcnQgb2YgYW4gaW50ZXJpbSBBUEkgdGhhdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgZXhwZWN0ZWQgdG8KLSBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBiZWZvcmUgcmVhY2hpbmcgc3RhYmlsaXR5LjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETERpYWdub3N0aWMuaHRtbCNvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5XU0RMRGlhZ25vc3RpYzwvQj48L0E+PC9CPgotCi08QlI+Ci0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHZW5lcmF0ZWQgYnkgdGhlIFdTREwgbW9kZWwgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBtZWNoYW5pc21zLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQ+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9jbGFzcy11c2UvV1NETERpYWdub3N0aWNTZXZlcml0eS5odG1sI29yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPldTRExEaWFnbm9zdGljU2V2ZXJpdHk8L0I+PC9BPjwvQj4KLQotPEJSPgotJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7V1NETCBkaWFnbm9zdGljIHNldmVyaXR5IGxldmVscyB0eXBlIHNhZmUgZW51bWVyYXRpb24uPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotJm5ic3A7Ci08UD4KLTxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2UtdXNlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0icGFja2FnZS11c2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL292ZXJ2aWV3LWZyYW1lLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vdmVydmlldy1mcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzQyMGJhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL292ZXJ2aWV3LWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTIgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1PdmVydmlldwotPC9USVRMRT4KLQotPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Ik92ZXJ2aWV3LCBXZWIgVG9vbHMgUGxhdGZvcm06IFdTREwgRU1GIE1vZGVsIEFQSSBkb2N1bWVudGF0aW9uIj4KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi0KLTwvSEVBRD4KLQotPEJPRFkgQkdDT0xPUj0id2hpdGUiPgotCi08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgU1VNTUFSWT0iIj4KLTxUUj4KLTxUSCBBTElHTj0ibGVmdCIgTk9XUkFQPjxGT05UIHNpemU9IisxIiBDTEFTUz0iRnJhbWVUaXRsZUZvbnQiPgotPEI+PC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIE5PV1JBUD48Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+PEEgSFJFRj0iYWxsY2xhc3Nlcy1mcmFtZS5odG1sIiB0YXJnZXQ9InBhY2thZ2VGcmFtZSI+QWxsIENsYXNzZXM8L0E+PC9GT05UPgotPFA+Ci08Rk9OVCBzaXplPSIrMSIgQ0xBU1M9IkZyYW1lSGVhZGluZ0ZvbnQiPgotUGFja2FnZXM8L0ZPTlQ+Ci08QlI+Ci08Rk9OVCBDTEFTUz0iRnJhbWVJdGVtRm9udCI+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS1mcmFtZS5odG1sIiB0YXJnZXQ9InBhY2thZ2VGcmFtZSI+b3JnLmVjbGlwc2Uud3N0LndzZGw8L0E+PC9GT05UPgotPEJSPgotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9wYWNrYWdlLWZyYW1lLmh0bWwiIHRhcmdldD0icGFja2FnZUZyYW1lIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9GT05UPgotPEJSPgotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9wYWNrYWdlLWZyYW1lLmh0bWwiIHRhcmdldD0icGFja2FnZUZyYW1lIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0E+PC9GT05UPgotPEJSPgotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLWZyYW1lLmh0bWwiIHRhcmdldD0icGFja2FnZUZyYW1lIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXA8L0E+PC9GT05UPgotPEJSPgotPEZPTlQgQ0xBU1M9IkZyYW1lSXRlbUZvbnQiPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3V0aWwvcGFja2FnZS1mcmFtZS5odG1sIiB0YXJnZXQ9InBhY2thZ2VGcmFtZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48L0ZPTlQ+Ci08QlI+Ci08L1REPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxQPgotJm5ic3A7Ci08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vdmVydmlldy1zdW1tYXJ5Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vdmVydmlldy1zdW1tYXJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiOWQwMmIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3ZlcnZpZXctc3VtbWFyeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLU5ld1BhZ2UtLT4KLTxIVE1MPgotPEhFQUQ+Ci08IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIChidWlsZCAxLjUuMCkgb24gV2VkIE1heSAyMSAxMzowNjo1MyBFRFQgMjAwOCAtLT4KLTxUSVRMRT4KLU92ZXJ2aWV3Ci08L1RJVExFPgotCi08TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iT3ZlcnZpZXcsIFdlYiBUb29scyBQbGF0Zm9ybTogV1NETCBFTUYgTW9kZWwgQVBJIGRvY3VtZW50YXRpb24iPgotCi08TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0ic3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+Ci0KLTxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWZ1bmN0aW9uIHdpbmRvd1RpdGxlKCkKLXsKLSAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Ik92ZXJ2aWV3IjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImluZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJoZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8L1RSPgotPC9UQUJMRT4KLTwvVEQ+Ci08VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KLTwvRU0+Ci08L1REPgotPC9UUj4KLQotPFRSPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSZuYnNwO1BSRVYmbmJzcDsKLSZuYnNwO05FWFQ8L0ZPTlQ+PC9URD4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0gIDxBIEhSRUY9ImluZGV4Lmh0bWw/b3ZlcnZpZXctc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX3RvcCI+PC9BPgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotCi08SFI+Ci08QSBOQU1FPSJtYWluIj48L0E+Ci08Q0VOVEVSPgotPEgxPgotV2ViIFRvb2xzIFBsYXRmb3JtOiBXU0RMIEVNRiBNb2RlbCBBUEkgZG9jdW1lbnRhdGlvbgotPC9IMT4KLTwvQ0VOVEVSPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KLTxCPlBhY2thZ2VzPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIyMCUiPjxCPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbDwvQT48L0I+PC9URD4KLTxURD4KLSAgICAgICAgVGhlIFdTREwgbW9kZWwgQVBJIGFsbG93cyBjbGllbnRzIHRvIHdvcmsgd2l0aCB0aGUgV1NETCAxLjEgZG9jdW1lbnRzLjwvVEQ+Ci08L1RSPgotPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+Ci08VEQgV0lEVEg9IjIwJSI+PEI+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+PC9CPjwvVEQ+Ci08VEQ+Jm5ic3A7PC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMjAlIj48Qj48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT48L0I+PC9URD4KLTxURD4mbmJzcDs8L1REPgotPC9UUj4KLTxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgotPFREIFdJRFRIPSIyMCUiPjxCPjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPjwvQj48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuPC9URD4KLTwvVFI+Ci08VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KLTxURCBXSURUSD0iMjAlIj48Qj48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsPC9BPjwvQj48L1REPgotPFREPgotICAgICAgICBUaGUgV1NETCBtb2RlbCBBUEkgYWxsb3dzIGNsaWVudHMgdG8gd29yayB3aXRoIHRoZSBXU0RMIDEuMSBkb2N1bWVudHMuPC9URD4KLTwvVFI+Ci08L1RBQkxFPgotCi08UD4KLSZuYnNwOzxIUj4KLQotCi08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImhlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iaW5kZXguaHRtbD9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci0KLTxIUj4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3ZlcnZpZXctdHJlZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3ZlcnZpZXctdHJlZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODYxM2Y3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL292ZXJ2aWV3LXRyZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS1OZXdQYWdlLS0+Ci08SFRNTD4KLTxIRUFEPgotPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAoYnVpbGQgMS41LjApIG9uIFdlZCBNYXkgMjEgMTM6MDY6NTMgRURUIDIwMDggLS0+Ci08VElUTEU+Ci1DbGFzcyBIaWVyYXJjaHkKLTwvVElUTEU+Ci0KLQotPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9InN0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgotCi08U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1mdW5jdGlvbiB3aW5kb3dUaXRsZSgpCi17Ci0gICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJDbGFzcyBIaWVyYXJjaHkiOwotfQotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci08L05PU0NSSVBUPgotCi08L0hFQUQ+Ci0KLTxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KLQotCi08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KLTxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFI+Ci08VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+Ci08QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KLTxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KLSAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlBhY2thZ2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+Q2xhc3M8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+VXNlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8QSBIUkVGPSIjbWFpbiI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImhlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iaW5kZXguaHRtbD9vdmVydmlldy10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PEEgSFJFRj0ib3ZlcnZpZXctdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxBIE5BTUU9Im1haW4iPjwvQT4KLTxDRU5URVI+Ci08SDI+Ci1IaWVyYXJjaHkgRm9yIEFsbCBQYWNrYWdlczwvSDI+Ci08L0NFTlRFUj4KLTxETD4KLTxEVD48Qj5QYWNrYWdlIEhpZXJhcmNoaWVzOjwvQj48REQ+PEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvcGFja2FnZS10cmVlLmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsPC9BPiwgPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL3BhY2thZ2UtdHJlZS5odG1sIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHA8L0E+LCA8QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvcGFja2FnZS10cmVlLmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZTwvQT4sIDxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9wYWNrYWdlLXRyZWUuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9BPiwgPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9wYWNrYWdlLXRyZWUuaHRtbCI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbDwvQT48L0RMPgotPEhSPgotPEgyPgotQ2xhc3MgSGllcmFyY2h5Ci08L0gyPgotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+amF2YS5sYW5nLk9iamVjdDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPkFic3RyYWN0RW51bWVyYXRvcjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpY1NldmVyaXR5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5XU0RMRGlhZ25vc3RpY1NldmVyaXR5PC9CPjwvQT48L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciAoaW1wbGVtZW50cyBvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciwgb3JnLnhtbC5zYXguRFRESGFuZGxlciwgb3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIsIG9yZy54bWwuc2F4LkVycm9ySGFuZGxlcikKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUGFyc2VyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5XU0RMUGFyc2VyPC9CPjwvQT4gKGltcGxlbWVudHMgb3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyKQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPkVjbGlwc2VQbHVnaW48VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luSW1wbGVtZW50YXRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5XU0RMUGx1Z2luSW1wbGVtZW50YXRpb248L0I+PC9BPjwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5FTUZQbHVnaW48VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMUGx1Z2luLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETFBsdWdpbjwvQj48L0E+PC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPkVPYmplY3RJbXBsPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljSW1wbC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+PEI+V1NETERpYWdub3N0aWNJbXBsPC9CPjwvQT4gKGltcGxlbWVudHMgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExEaWFnbm9zdGljLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbCI+V1NETERpYWdub3N0aWM8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPlJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5SW1wbDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPldTRExSZXNvdXJjZUZhY3RvcnlSZWdpc3RyeTwvQj48L0E+PC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPlJlc291cmNlSW1wbDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMUmVzb3VyY2VJbXBsLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5XU0RMUmVzb3VyY2VJbXBsPC9CPjwvQT48L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC91dGlsL1dTRExDb25zdGFudHMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPldTRExDb25zdGFudHM8L0I+PC9BPjwvVUw+Ci08L1VMPgotPEgyPgotSW50ZXJmYWNlIEhpZXJhcmNoeQotPC9IMj4KLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5XU0RMRWxlbWVudDwvQT4pCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQQWRkcmVzczwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEFkZHJlc3MpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQQmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmcpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBPcGVyYXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb24pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsRW5jb2RlZDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybEVuY29kZWQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFVybFJlcGxhY2VtZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FQ29udGVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FTWltZVhtbDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FTXVsdGlwYXJ0UmVsYXRlZDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FUGFydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQWRkcmVzczwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3MpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQm9keTwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHkpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXI8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIsIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJCYXNlPC9CPjwvQT48VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXI8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXIpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlckZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQpCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBPcGVyYXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+PC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQQWRkcmVzczwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBBZGRyZXNzPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzKQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmcgKGFsc28gZXh0ZW5kcyBqYXZhLmlvLlNlcmlhbGl6YWJsZSkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBCaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEJpbmRpbmc8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUEJpbmRpbmcpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQT3BlcmF0aW9uIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBPcGVyYXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBPcGVyYXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbikKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsRW5jb2RlZDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBVcmxFbmNvZGVkPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkKQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50IChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFVybFJlcGxhY2VtZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsUmVwbGFjZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBVcmxSZXBsYWNlbWVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FQ29udGVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRUNvbnRlbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FQ29udGVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudCkKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNaW1lWG1sIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FTWltZVhtbDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNaW1lWG1sPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNaW1lWG1sKQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQgKGFsc28gZXh0ZW5kcyBqYXZhLmlvLlNlcmlhbGl6YWJsZSkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTXVsdGlwYXJ0UmVsYXRlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRU11bHRpcGFydFJlbGF0ZWQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRVBhcnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FUGFydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCkKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzIChhbHNvIGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGUpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQWRkcmVzczwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBBZGRyZXNzPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzKQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcgKGFsc28gZXh0ZW5kcyBqYXZhLmlvLlNlcmlhbGl6YWJsZSkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEJpbmRpbmc8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEJvZHk8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQm9keTwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSkKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0KQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlciAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyLCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyQmFzZTwvQj48L0E+PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdCAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0KQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbiAoYWxzbyBleHRlbmRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+VW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+PC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsIj48Qj5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5PC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQRmFjdG9yeTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFBhY2thZ2U8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBQYWNrYWdlLkxpdGVyYWxzPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVGYWN0b3J5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FRmFjdG9yeTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FUGFja2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRVBhY2thZ2U8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhY2thZ2UuTGl0ZXJhbHMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVQYWNrYWdlLkxpdGVyYWxzPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9OYW1lc3BhY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TmFtZXNwYWNlPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5qYXZhLmlvLlNlcmlhbGl6YWJsZTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuQmluZGluZzxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nLCBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLkJpbmRpbmdGYXVsdDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5CaW5kaW5nRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ0ZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkJpbmRpbmdGYXVsdCwgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5CaW5kaW5nSW5wdXQ8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ0lucHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdJbnB1dDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQsIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ09wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ09wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uLCBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdPdXRwdXQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdPdXRwdXQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuQmluZGluZ091dHB1dCwgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5EZWZpbml0aW9uPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5EZWZpbml0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRGVmaW5pdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5EZWZpbml0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkRlZmluaXRpb24sIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuRmF1bHQ8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5GYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5GYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5GYXVsdCwgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPikKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBBZGRyZXNzIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEFkZHJlc3M8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQQWRkcmVzczwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQWRkcmVzcykKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUEJpbmRpbmc8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBCaW5kaW5nLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQQmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQmluZGluZykKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb24gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBPcGVyYXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBPcGVyYXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbikKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxFbmNvZGVkIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQVXJsRW5jb2RlZC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFVybEVuY29kZWQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsRW5jb2RlZDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsRW5jb2RlZCkKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudCAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsUmVwbGFjZW1lbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxSZXBsYWNlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUFVybFJlcGxhY2VtZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudCkKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuSW1wb3J0PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkltcG9ydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0ltcG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5JbXBvcnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5JbXBvcnQpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLklucHV0PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+SW5wdXQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+SW5wdXQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuSW5wdXQsIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4pCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLk1lc3NhZ2U8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk1lc3NhZ2U8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk1lc3NhZ2U8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5NZXNzYWdlKQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRUNvbnRlbnQgKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVDb250ZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FQ29udGVudDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVDb250ZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50KQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwgKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNaW1lWG1sLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FTWltZVhtbDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNaW1lWG1sPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNaW1lWG1sKQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQgKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FTXVsdGlwYXJ0UmVsYXRlZDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkKQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRVBhcnQgKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVQYXJ0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FUGFydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVQYXJ0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0KQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5PcGVyYXRpb248VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9PcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+T3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk9wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLk9wZXJhdGlvbikKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuT3V0cHV0PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk91dHB1dDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+T3V0cHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+LCBqYXZheC53c2RsLk91dHB1dCkKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuUGFydDxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UGFydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UGFydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlBhcnQpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLlBvcnQ8VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBvcnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBvcnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5Qb3J0KQotPExJIFRZUEU9ImNpcmNsZSI+amF2YXgud3NkbC5Qb3J0VHlwZTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnRUeXBlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlBvcnRUeXBlPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydFR5cGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UG9ydFR5cGU8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPiwgamF2YXgud3NkbC5Qb3J0VHlwZSkKLTxMSSBUWVBFPSJjaXJjbGUiPmphdmF4LndzZGwuU2VydmljZTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+U2VydmljZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+U2VydmljZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlNlcnZpY2UpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzcyAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBBZGRyZXNzPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQWRkcmVzcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEFkZHJlc3M8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEFkZHJlc3MpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZyAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEJpbmRpbmc8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCb2R5PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQm9keS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEJvZHk8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJvZHkpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQgKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQRmF1bHQpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyLCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4pCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQgKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi08VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlckZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyRmF1bHQpCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQT3BlcmF0aW9uIChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50KQotPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4pCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24pCi08TEkgVFlQRT0iY2lyY2xlIj5qYXZheC53c2RsLlR5cGVzPFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+VHlwZXM8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5UeXBlczwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlR5cGVzKQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhY3RvcnkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBGYWN0b3J5PC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBQYWNrYWdlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQUGFja2FnZTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQUGFja2FnZS5MaXRlcmFscy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUFBhY2thZ2UuTGl0ZXJhbHM8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvdXRpbC9XU0RMRGlhZ25vc3RpYy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwiPjxCPldTRExEaWFnbm9zdGljPC9CPjwvQT48TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5XU0RMRWxlbWVudDwvQj48L0E+PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5CaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkJpbmRpbmcsIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5CaW5kaW5nRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuQmluZGluZ0ZhdWx0LCBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ0lucHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkJpbmRpbmdJbnB1dCwgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ09wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5CaW5kaW5nT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkJpbmRpbmdPcGVyYXRpb24sIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2libGVFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2libGVFbGVtZW50PC9BPikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ091dHB1dDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nT3V0cHV0LCBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkRlZmluaXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuRGVmaW5pdGlvbiwgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLTxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBBZGRyZXNzPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQWRkcmVzcykKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBCaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQmluZGluZykKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cCI+PEI+SFRUUE9wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUE9wZXJhdGlvbikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybEVuY29kZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBVcmxFbmNvZGVkPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsRW5jb2RlZCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsUmVwbGFjZW1lbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBVcmxSZXBsYWNlbWVudCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVDb250ZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FQ29udGVudCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU1pbWVYbWwuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNaW1lWG1sPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTWltZVhtbCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRU11bHRpcGFydFJlbGF0ZWQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVNdWx0aXBhcnRSZWxhdGVkPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVQYXJ0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FUGFydCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBBZGRyZXNzPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzcykKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQmluZGluZykKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEJvZHkuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBCb2R5PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBGYXVsdCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlcjwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlciwgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+U09BUEhlYWRlckJhc2U8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyQmFzZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlckJhc2U8L0I+PC9BPjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlcjwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlcikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdCkKLTwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJGYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEhlYWRlckZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBIZWFkZXJGYXVsdCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUE9wZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUE9wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUE9wZXJhdGlvbikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1Vua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1hTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50PC9CPjwvQT48L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0I+PC9BPjxVTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZzwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkJpbmRpbmdGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9CaW5kaW5nSW5wdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ0lucHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkJpbmRpbmdJbnB1dCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0JpbmRpbmdPcGVyYXRpb24uaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+QmluZGluZ09wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvQmluZGluZ091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5CaW5kaW5nT3V0cHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9EZWZpbml0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkRlZmluaXRpb248L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuRGVmaW5pdGlvbikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0ZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkZhdWx0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLkZhdWx0LCBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkltcG9ydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5JbXBvcnQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5JbnB1dDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5JbnB1dCwgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5NZXNzYWdlUmVmZXJlbmNlPC9BPikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TWVzc2FnZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5NZXNzYWdlKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZVJlZmVyZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5NZXNzYWdlUmVmZXJlbmNlPC9CPjwvQT48VUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9GYXVsdC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5GYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5GYXVsdCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPklucHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLklucHV0KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3V0cHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk91dHB1dDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5PdXRwdXQpCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk9wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5PcGVyYXRpb24pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9PdXRwdXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+T3V0cHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+LCBqYXZheC53c2RsLk91dHB1dCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1BhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UGFydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5QYXJ0KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvUG9ydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5Qb3J0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLlBvcnQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5Qb3J0VHlwZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5Qb3J0VHlwZSkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1NlcnZpY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+U2VydmljZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5TZXJ2aWNlKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvVHlwZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+VHlwZXM8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuVHlwZXMpCi08L1VMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuRmF1bHQsIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBBZGRyZXNzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQQWRkcmVzczwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQQWRkcmVzcykKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUEJpbmRpbmcuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAiPjxCPkhUVFBCaW5kaW5nPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBCaW5kaW5nKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvaHR0cC9IVFRQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5odHRwLkhUVFBPcGVyYXRpb24pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9odHRwL0hUVFBVcmxFbmNvZGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsRW5jb2RlZDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuaHR0cC5IVFRQVXJsRW5jb2RlZCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL2h0dHAvSFRUUFVybFJlcGxhY2VtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwIj48Qj5IVFRQVXJsUmVwbGFjZW1lbnQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLmh0dHAuSFRUUFVybFJlcGxhY2VtZW50KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvSW1wb3J0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPkltcG9ydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLkltcG9ydCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0lucHV0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPklucHV0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLklucHV0LCBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9NZXNzYWdlUmVmZXJlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPk1lc3NhZ2VSZWZlcmVuY2U8L0E+KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvTWVzc2FnZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5NZXNzYWdlPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuTWVzc2FnZSkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+TWVzc2FnZVJlZmVyZW5jZTwvQj48L0E+PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+RmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuRmF1bHQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9JbnB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5JbnB1dDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5JbnB1dCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5PdXRwdXQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIGphdmF4LndzZGwuT3V0cHV0KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRUNvbnRlbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVDb250ZW50PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVDb250ZW50KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvbWltZS9NSU1FTWltZVhtbC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZSI+PEI+TUlNRU1pbWVYbWw8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLm1pbWUuTUlNRU1pbWVYbWwpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9taW1lL01JTUVNdWx0aXBhcnRSZWxhdGVkLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lIj48Qj5NSU1FTXVsdGlwYXJ0UmVsYXRlZDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMubWltZS5NSU1FTXVsdGlwYXJ0UmVsYXRlZCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL21pbWUvTUlNRVBhcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUiPjxCPk1JTUVQYXJ0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5taW1lLk1JTUVQYXJ0KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPk9wZXJhdGlvbjwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLk9wZXJhdGlvbikKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL091dHB1dC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5PdXRwdXQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL01lc3NhZ2VSZWZlcmVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+TWVzc2FnZVJlZmVyZW5jZTwvQT4sIGphdmF4LndzZGwuT3V0cHV0KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvUGFydC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5QYXJ0PC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuUGFydCkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1BvcnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+UG9ydDwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlBvcnQpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9Qb3J0VHlwZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5Qb3J0VHlwZTwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlBvcnRUeXBlKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvU2VydmljZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5TZXJ2aWNlPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmxlRWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmxlRWxlbWVudDwvQT4sIGphdmF4LndzZGwuU2VydmljZSkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEFkZHJlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBBZGRyZXNzPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQQmluZGluZy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcCI+PEI+U09BUEJpbmRpbmc8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcpCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBCb2R5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQQm9keTwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQm9keSkKLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL0V4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPkV4dGVuc2liaWxpdHlFbGVtZW50PC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEZhdWx0KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyLCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj5TT0FQSGVhZGVyQmFzZTwvQT4pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvYmluZGluZy9zb2FwL1NPQVBIZWFkZXJCYXNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyQmFzZTwvQj48L0E+PFVMPgotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQSGVhZGVyKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQSGVhZGVyRmF1bHQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPjxCPlNPQVBIZWFkZXJGYXVsdDwvQj48L0E+IChhbHNvIGV4dGVuZHMgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0KQotPC9VTD4KLTxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckZhdWx0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQSGVhZGVyRmF1bHQ8L0I+PC9BPiAoYWxzbyBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9iaW5kaW5nL3NvYXAvU09BUEhlYWRlckJhc2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAiPlNPQVBIZWFkZXJCYXNlPC9BPiwgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEhlYWRlckZhdWx0KQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL2JpbmRpbmcvc29hcC9TT0FQT3BlcmF0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwIj48Qj5TT0FQT3BlcmF0aW9uPC9CPjwvQT4gKGFsc28gZXh0ZW5kcyBvcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9FeHRlbnNpYmlsaXR5RWxlbWVudC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj5FeHRlbnNpYmlsaXR5RWxlbWVudDwvQT4sIGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb24pCi08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9UeXBlcy5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5UeXBlczwvQj48L0E+IChhbHNvIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvRXh0ZW5zaWJsZUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+RXh0ZW5zaWJsZUVsZW1lbnQ8L0E+LCBqYXZheC53c2RsLlR5cGVzKQotPExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPlVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudDwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+WFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ8L0I+PC9BPjwvVUw+Ci08TEkgVFlQRT0iY2lyY2xlIj5vcmcuZWNsaXBzZS53c3Qud3NkbC48QSBIUkVGPSJvcmcvZWNsaXBzZS93c3Qvd3NkbC9XU0RMRmFjdG9yeS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5lY2xpcHNlLndzdC53c2RsIj48Qj5XU0RMRmFjdG9yeTwvQj48L0E+PExJIFRZUEU9ImNpcmNsZSI+b3JnLmVjbGlwc2Uud3N0LndzZGwuPEEgSFJFRj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvV1NETFBhY2thZ2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuZWNsaXBzZS53c3Qud3NkbCI+PEI+V1NETFBhY2thZ2U8L0I+PC9BPjxMSSBUWVBFPSJjaXJjbGUiPm9yZy5lY2xpcHNlLndzdC53c2RsLjxBIEhSRUY9Im9yZy9lY2xpcHNlL3dzdC93c2RsL1dTRExQYWNrYWdlLkxpdGVyYWxzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmVjbGlwc2Uud3N0LndzZGwiPjxCPldTRExQYWNrYWdlLkxpdGVyYWxzPC9CPjwvQT48L1VMPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxBIEhSRUY9IiNtYWluIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJpbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSJpbmRleC5odG1sP292ZXJ2aWV3LXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJvdmVydmlldy10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwotJm5ic3A7PFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICA8IS0tCi0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKLSAgfQotICAvLy0tPgotPC9TQ1JJUFQ+Ci08Tk9TQ1JJUFQ+Ci0gIDxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Ci08L05PU0NSSVBUPgotCi0KLTwvRk9OVD48L1REPgotPC9UUj4KLTwvVEFCTEU+Ci08QSBOQU1FPSJza2lwLW5hdmJhcl9ib3R0b20iPjwvQT4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLQotPEhSPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9wYWNrYWdlLWxpc3QgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9wYWNrYWdlLWxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZjhlNTkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvcGFja2FnZS1saXN0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1vcmcuZWNsaXBzZS53c3Qud3NkbAotb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwCi1vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUKLW9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcAotb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbApkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvcmVzb3VyY2VzL2luaGVyaXQuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvcmVzb3VyY2VzL2luaGVyaXQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODE0ODY3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL3Jlc291cmNlcy9pbmhlcml0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL3NlcmlhbGl6ZWQtZm9ybS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvc2VyaWFsaXplZC1mb3JtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMjgzMmUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvc2VyaWFsaXplZC1mb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tTmV3UGFnZS0tPgotPEhUTUw+Ci08SEVBRD4KLTwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNS4wKSBvbiBXZWQgTWF5IDIxIDEzOjA2OjUzIEVEVCAyMDA4IC0tPgotPFRJVExFPgotU2VyaWFsaXplZCBGb3JtCi08L1RJVExFPgotCi0KLTxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSJzdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KLQotPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZnVuY3Rpb24gd2luZG93VGl0bGUoKQotewotICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iU2VyaWFsaXplZCBGb3JtIjsKLX0KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotPC9OT1NDUklQVD4KLQotPC9IRUFEPgotCi08Qk9EWSBCR0NPTE9SPSJ3aGl0ZSIgb25sb2FkPSJ3aW5kb3dUaXRsZSgpOyI+Ci0KLQotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+Ci08QSBIUkVGPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSPgotPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgotPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+Ci08VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiIFNVTU1BUlk9IiI+Ci0gIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJvdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5QYWNrYWdlPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPkNsYXNzPC9GT05UPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPlVzZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJpbmRleC1maWxlcy9pbmRleC0xLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPC9UUj4KLTwvVEFCTEU+Ci08L1REPgotPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+Ci08L0VNPgotPC9URD4KLTwvVFI+Ci0KLTxUUj4KLTxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+Ci0mbmJzcDtQUkVWJm5ic3A7Ci0mbmJzcDtORVhUPC9GT05UPjwvVEQ+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotICA8QSBIUkVGPSJpbmRleC5odG1sP3NlcmlhbGl6ZWQtZm9ybS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxBIEhSRUY9InNlcmlhbGl6ZWQtZm9ybS5odG1sIiB0YXJnZXQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKLSZuYnNwOzxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgPCEtLQotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7Ci0gIH0KLSAgLy8tLT4KLTwvU0NSSVBUPgotPE5PU0NSSVBUPgotICA8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgotPC9OT1NDUklQVD4KLQotCi08L0ZPTlQ+PC9URD4KLTwvVFI+Ci08L1RBQkxFPgotPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci0KLTxIUj4KLTxDRU5URVI+Ci08SDE+Ci1TZXJpYWxpemVkIEZvcm08L0gxPgotPC9DRU5URVI+Ci08SFIgU0laRT0iNCIgTk9TSEFERT4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJjZW50ZXIiPjxGT05UIFNJWkU9IisyIj4KLTxCPlBhY2thZ2U8L0I+IDxCPm9yZy5lY2xpcHNlLndzdC53c2RsPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci08SFIgU0laRT0iNCIgTk9TSEFERT4KLQotPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgotPFRIIEFMSUdOPSJjZW50ZXIiPjxGT05UIFNJWkU9IisyIj4KLTxCPlBhY2thZ2U8L0I+IDxCPm9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cDwvQj48L0ZPTlQ+PC9USD4KLTwvVFI+Ci08L1RBQkxFPgotPEhSIFNJWkU9IjQiIE5PU0hBREU+Ci0KLTxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+Ci08VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4KLTxUSCBBTElHTj0iY2VudGVyIj48Rk9OVCBTSVpFPSIrMiI+Ci08Qj5QYWNrYWdlPC9CPiA8Qj5vcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWU8L0I+PC9GT05UPjwvVEg+Ci08L1RSPgotPC9UQUJMRT4KLTxIUiBTSVpFPSI0IiBOT1NIQURFPgotCi08VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgotPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+Ci08VEggQUxJR049ImNlbnRlciI+PEZPTlQgU0laRT0iKzIiPgotPEI+UGFja2FnZTwvQj4gPEI+b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwPC9CPjwvRk9OVD48L1RIPgotPC9UUj4KLTwvVEFCTEU+Ci0KLTxQPgotPEhSPgotCi0KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgotPEEgSFJFRj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KLTxUUj4KLTxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KLTxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgotPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIiBTVU1NQVJZPSIiPgotICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0ib3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+UGFja2FnZTwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5DbGFzczwvRk9OVD4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj5Vc2U8L0ZPTlQ+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Im92ZXJ2aWV3LXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgotICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KLSAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImhlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+Ci0gIDwvVFI+Ci08L1RBQkxFPgotPC9URD4KLTxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgotPC9FTT4KLTwvVEQ+Ci08L1RSPgotCi08VFI+Ci08VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgotJm5ic3A7UFJFViZuYnNwOwotJm5ic3A7TkVYVDwvRk9OVD48L1REPgotPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KLSAgPEEgSFJFRj0iaW5kZXguaHRtbD9zZXJpYWxpemVkLWZvcm0uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8QSBIUkVGPSJzZXJpYWxpemVkLWZvcm0uaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7Ci0mbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIDwhLS0KLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwotICB9Ci0gIC8vLS0+Ci08L1NDUklQVD4KLTxOT1NDUklQVD4KLSAgPEEgSFJFRj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KLTwvTk9TQ1JJUFQ+Ci0KLQotPC9GT05UPjwvVEQ+Ci08L1RSPgotPC9UQUJMRT4KLTxBIE5BTUU9InNraXAtbmF2YmFyX2JvdHRvbSI+PC9BPgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotCi08SFI+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvYXBpL3N0eWxlc2hlZXQuY3NzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvc3R5bGVzaGVldC5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMzFmZGIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvc3R5bGVzaGVldC5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKiBKYXZhZG9jIHN0eWxlIHNoZWV0ICovCi0KLS8qIERlZmluZSBjb2xvcnMsIGZvbnRzIGFuZCBvdGhlciBzdHlsZSBhdHRyaWJ1dGVzIGhlcmUgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHRzICovCi0KLS8qIFBhZ2UgYmFja2dyb3VuZCBjb2xvciAqLwotYm9keSB7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYgfQotCi0vKiBIZWFkaW5ncyAqLwotaDEgeyBmb250LXNpemU6IDE0NSUgfQotCi0vKiBUYWJsZSBjb2xvcnMgKi8KLS5UYWJsZUhlYWRpbmdDb2xvciAgICAgeyBiYWNrZ3JvdW5kOiAjQ0NDQ0ZGIH0gLyogRGFyayBtYXV2ZSAqLwotLlRhYmxlU3ViSGVhZGluZ0NvbG9yICB7IGJhY2tncm91bmQ6ICNFRUVFRkYgfSAvKiBMaWdodCBtYXV2ZSAqLwotLlRhYmxlUm93Q29sb3IgICAgICAgICB7IGJhY2tncm91bmQ6ICNGRkZGRkYgfSAvKiBXaGl0ZSAqLwotCi0vKiBGb250IHVzZWQgaW4gbGVmdC1oYW5kIGZyYW1lIGxpc3RzICovCi0uRnJhbWVUaXRsZUZvbnQgICB7IGZvbnQtc2l6ZTogMTAwJTsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYgfQotLkZyYW1lSGVhZGluZ0ZvbnQgeyBmb250LXNpemU6ICA5MCU7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIH0KLS5GcmFtZUl0ZW1Gb250ICAgIHsgZm9udC1zaXplOiAgOTAlOyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiB9Ci0KLS8qIE5hdmlnYXRpb24gYmFyIGZvbnRzIGFuZCBjb2xvcnMgKi8KLS5OYXZCYXJDZWxsMSAgICB7IGJhY2tncm91bmQtY29sb3I6I0VFRUVGRjt9IC8qIExpZ2h0IG1hdXZlICovCi0uTmF2QmFyQ2VsbDFSZXYgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwOEI7fSAvKiBEYXJrIEJsdWUgKi8KLS5OYXZCYXJGb250MSAgICB7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjojMDAwMDAwO30KLS5OYXZCYXJGb250MVJldiB7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjojRkZGRkZGO30KLQotLk5hdkJhckNlbGwyICAgIHsgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGJhY2tncm91bmQtY29sb3I6I0ZGRkZGRjt9Ci0uTmF2QmFyQ2VsbDMgICAgeyBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGO30KLQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9leHRlbnNpb24tcG9pbnRzL2luZGV4Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2V4dGVuc2lvbi1wb2ludHMvaW5kZXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg5ZTg4Mi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2V4dGVuc2lvbi1wb2ludHMvaW5kZXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0gICAgCTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVFJBTlNJVElPTkFMLy9FTiI+Ci0JCTxodG1sIHhtbG5zOnhhbGFuPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveHNsdCI+Ci08aGVhZD4KLTxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLQkJPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIFRoaXMgcGFnZSBpcyBtYWRlIGF2YWlsYWJsZSB1bmRlciBsaWNlbnNlLiBGb3IgZnVsbCBkZXRhaWxzIHNlZSB0aGUgTEVHQUwgaW4gdGhlIGRvY3VtZW50YXRpb24gYm9vayB0aGF0IGNvbnRhaW5zIHRoaXMgcGFnZS4iID4KLQotICAgCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLSAgIAkJPHRpdGxlPldTREwgRU1GIE1vZGVsIEV4dGVuc2lvbiBQb2ludHM8L3RpdGxlPgotCQk8TElOSyBSRUw9IlNUWUxFU0hFRVQiIEhSRUY9Ii4uLy4uL2Jvb2suY3NzIiBDSEFSU0VUPSJJU08tODg1OS0xIiBUWVBFPSJ0ZXh0L2NzcyI+Ci0JCTwvaGVhZD4KLTxib2R5IHZsaW5rPSIjODAwMDgwIiBsaW5rPSIjMDAwMEZGIj4KLTxjZW50ZXI+Ci08aDE+V1NETCBFTUYgTW9kZWwgRXh0ZW5zaW9uIFBvaW50cyA8L2gxPgotPC9jZW50ZXI+VGhlIGZvbGxvd2luZyBleHRlbnNpb24gcG9pbnRzIGNhbiBiZSB1c2VkIHRvIGV4dGVuZCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBXU0RMIEVNRiBNb2RlbDogPGgzPgotPGEgbmFtZT0id3NkbCI+PC9hPldTREwgQVBJPC9oMz4KLTx1bD4KLTxsaT4KLTxhIGhyZWY9Im9yZ19lY2xpcHNlX3dzdF93c2RsX2V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yaWVzLmh0bWwiPm9yZy5lY2xpcHNlLndzdC53c2RsLmV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yaWVzPC9hPgotPC9saT4KLTwvdWw+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2V4dGVuc2lvbi1wb2ludHMvb3JnX2VjbGlwc2Vfd3N0X3dzZGxfY29udGVudEdlbmVyYXRvcnMuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvZXh0ZW5zaW9uLXBvaW50cy9vcmdfZWNsaXBzZV93c3Rfd3NkbF9jb250ZW50R2VuZXJhdG9ycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWU4ZDkwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9yZWZlcmVuY2UvZXh0ZW5zaW9uLXBvaW50cy9vcmdfZWNsaXBzZV93c3Rfd3NkbF9jb250ZW50R2VuZXJhdG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KLTxIVE1MPgotPEhFQUQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+UG9ydCBhbmQgQmluZGluZyBDb250ZW50IEdlbmVyYXRvcnM8L3RpdGxlPgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj5AaW1wb3J0IHVybCgiLi4vLi4vYm9vay5jc3MiKTs8L3N0eWxlPgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj5AaW1wb3J0IHVybCgiLi4vLi4vc2NoZW1hLmNzcyIpOzwvc3R5bGU+Ci08L0hFQUQ+Ci08Qk9EWT4KLTxIMSBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPlBvcnQgYW5kIEJpbmRpbmcgQ29udGVudCBHZW5lcmF0b3JzPC9IMT4KLTxwPjwvcD4KLTxoNiBjbGFzcz0iQ2FwdGlvbkZpZ0NvbHVtbiBTY2hlbWFIZWFkZXIiPklkZW50aWZpZXI6IDwvaDY+b3JnLmVjbGlwc2Uud3N0LndzZGwuY29udGVudEdlbmVyYXRvcnM8cD48L3A+Ci08aDYgY2xhc3M9IkNhcHRpb25GaWdDb2x1bW4gU2NoZW1hSGVhZGVyIj5TaW5jZTogPC9oNj48Yj5UaGlzIGV4dGVuc2lvbiBwb2ludCBpcyBpbnRlcm5hbCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IGFueSBvdGhlciBwbHVnaW5zLjwvYj4KLTxwPjwvcD4KLQotPGg2IGNsYXNzPSJDYXB0aW9uRmlnQ29sdW1uIFNjaGVtYUhlYWRlciI+RGVzY3JpcHRpb246IDwvaDY+VGhlIFBvcnQgYW5kIEJpbmRpbmcgQ29udGVudCBHZW5lcmF0b3JzIGV4dGVuc2lvbiBwb2ludCBhbGxvd3MgY2xpZW50cyB0byByZWdpc3RlciBjdXN0b20gZ2VuZXJhdG9ycyBmb3IgUG9ydHMgYW5kIEJpbmRpbmdzLjxwPjwvcD4KLTxoNiBjbGFzcz0iQ2FwdGlvbkZpZ0NvbHVtbiBTY2hlbWFIZWFkZXIiPkNvbmZpZ3VyYXRpb24gTWFya3VwOjwvaDY+Ci08cD48L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLmV4dGVuc2lvbiI+ZXh0ZW5zaW9uPC9hPiAoPGEgaHJlZj0iI2UuY29udGVudEdlbmVyYXRvciI+Y29udGVudEdlbmVyYXRvcjwvYT4pJmd0OzwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZCI+Jmx0OyFBVFRMSVNUIGV4dGVuc2lvbjwvcD4KLTxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPnBvaW50Jm5ic3A7Q0RBVEEgI1JFUVVJUkVEPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+aWQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDREFUQSAjSU1QTElFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPm5hbWUmbmJzcDsmbmJzcDtDREFUQSAjSU1QTElFRCZndDs8L3A+Ci08cD48L3A+Ci08cCBjbGFzcz0iQ29uZmlnTWFya3VwRWxlbWVudERlc2MiPgotVGhlIFBvcnQgYW5kIEJpbmRpbmcgQ29udGVudCBHZW5lcmF0b3JzIGV4dGVuc2lvbiBwb2ludCBhbGxvd3MgY2xpZW50cyB0byByZWdpc3RlciBjdXN0b20gY29udGVudCBnZW5lcmF0b3JzIGZvciBXU0RMIFBvcnRzIGFuZCBCaW5kaW5ncy48L3A+Ci08YnI+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTxsaT48Yj5wb2ludDwvYj4gLSBhIGZ1bGx5IHF1YWxpZmllZCBpZGVudGlmaWVyIG9mIHRoZSB0YXJnZXQgZXh0ZW5zaW9uIHBvaW50PC9saT4KLTxsaT48Yj5pZDwvYj4gLSBhbiBvcHRpb25hbCBpZGVudGlmaWVyIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2U8L2xpPgotPGxpPjxiPm5hbWU8L2I+IC0gYW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlPC9saT4KLTwvdWw+Ci08YnI+PHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5jb250ZW50R2VuZXJhdG9yIj5jb250ZW50R2VuZXJhdG9yPC9hPiBFTVBUWSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBjb250ZW50R2VuZXJhdG9yPC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+bmFtZSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NEQVRBICNSRVFVSVJFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPm5hbWVzcGFjZSZuYnNwO0NEQVRBICNSRVFVSVJFRDxwIGNsYXNzPSJjb2RlIFNjaGVtYUR0ZEF0dGxpc3QiPmNsYXNzJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q0RBVEEgI1JFUVVJUkVEJmd0OzwvcD4KLTxwPjwvcD4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPm5hbWU8L2I+IC0gTmFtZSB1c2VkIGZvciB0aGlzIHBhcnRpY3VsYXIgZXh0ZW5zaW9uIHBvaW50IGluc3RhbmNlLjwvbGk+Ci08bGk+PGI+bmFtZXNwYWNlPC9iPiAtIFRoZSBuYW1lc3BhY2UgdGhpcyBleHRlbnNpb24gcG9pbnQgaW5zdGFuY2UgYXBwbGllcyB0by48L2xpPgotPGxpPjxiPmNsYXNzPC9iPiAtIFRoZSBjbGFzcyB0aGF0IGltcGxlbWVudHMgPGNvZGU+b3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuZ2VuZXJhdG9yLkNvbnRlbnRHZW5lcmF0b3I8L2NvZGU+LjwvbGk+Ci08L3VsPgotPGJyPjxoNiBjbGFzcz0iQ2FwdGlvbkZpZ0NvbHVtbiBTY2hlbWFIZWFkZXIiPkV4YW1wbGVzOiA8L2g2PlRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIGNvbnRlbnQgZ2VuZXJhdG9yIGNvbnRyaWJ1dGlvbjoKLTxwcmUgY2xhc3M9IkV4YW1wbGUiPjxzcGFuIGNsYXNzPSJjb2RlIFNjaGVtYVRhZyI+Ci0gICAmbHQ7ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD08L3NwYW4+PHNwYW4gY2xhc3M9ImNvZGUgU2NoZW1hQ3N0cmluZyI+JnF1b3Q7b3JnLmVjbGlwc2Uud3N0LndzZGwuY29udGVudEdlbmVyYXRvcnMmcXVvdDs8L3NwYW4+PHNwYW4gY2xhc3M9ImNvZGUgU2NoZW1hVGFnIj4mZ3Q7Ci0gICAgICAmbHQ7Y29udGVudEdlbmVyYXRvcgotICAgICAgICAgICAgbmFtZT08L3NwYW4+PHNwYW4gY2xhc3M9ImNvZGUgU2NoZW1hQ3N0cmluZyI+JnF1b3Q7U09BUCZxdW90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iY29kZSBTY2hlbWFUYWciPgotICAgICAgICAgICAgbmFtZXNwYWNlPTwvc3Bhbj48c3BhbiBjbGFzcz0iY29kZSBTY2hlbWFDc3RyaW5nIj4mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvJnF1b3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJjb2RlIFNjaGVtYVRhZyI+Ci0gICAgICAgICAgICBjbGFzcz08L3NwYW4+PHNwYW4gY2xhc3M9ImNvZGUgU2NoZW1hQ3N0cmluZyI+JnF1b3Q7b3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmdlbmVyYXRvci5TT0FQQ29udGVudEdlbmVyYXRvciZxdW90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iY29kZSBTY2hlbWFUYWciPi8mZ3Q7Ci0gICAmbHQ7L2V4dGVuc2lvbiZndDsKLTwvc3Bhbj48L3ByZT4KLTxwPjwvcD4KLQotPGJyPgotPHAgY2xhc3M9Im5vdGUgU2NoZW1hQ29weXJpZ2h0Ij4KLUNvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy48YnI+Ci1BbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIAotYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIAotdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgPGEKLWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4KLQotPC9wPgotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3JlZmVyZW5jZS9leHRlbnNpb24tcG9pbnRzL29yZ19lY2xpcHNlX3dzdF93c2RsX2V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yaWVzLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2V4dGVuc2lvbi1wb2ludHMvb3JnX2VjbGlwc2Vfd3N0X3dzZGxfZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc1MDA4MC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvcmVmZXJlbmNlL2V4dGVuc2lvbi1wb2ludHMvb3JnX2VjbGlwc2Vfd3N0X3dzZGxfZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci08SFRNTD4KLTxIRUFEPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPldTREwgRXh0ZW5zaWJpbGl0eSBFbGVtZW50IEZhY3RvcmllczwvdGl0bGU+Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPkBpbXBvcnQgdXJsKCIuLi8uLi9ib29rLmNzcyIpOzwvc3R5bGU+Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPkBpbXBvcnQgdXJsKCIuLi8uLi9zY2hlbWEuY3NzIik7PC9zdHlsZT4KLTwvSEVBRD4KLTxCT0RZPgotPEgxIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+V1NETCBFeHRlbnNpYmlsaXR5IEVsZW1lbnQgRmFjdG9yaWVzPC9IMT4KLTxwPjwvcD4KLTxoNiBjbGFzcz0iQ2FwdGlvbkZpZ0NvbHVtbiBTY2hlbWFIZWFkZXIiPklkZW50aWZpZXI6IDwvaDY+b3JnLmVjbGlwc2Uud3N0LndzZGwuZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXM8cD48L3A+Ci08aDYgY2xhc3M9IkNhcHRpb25GaWdDb2x1bW4gU2NoZW1hSGVhZGVyIj5TaW5jZTogPC9oNj48Yj5UaGlzIGV4dGVuc2lvbiBwb2ludCBpcyBwYXJ0IG9mIGFuIGludGVyaW0gQVBJIHRoYXQgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGV4cGVjdGVkIHRvIGNoYW5nZSBzaWduaWZpY2FudGx5IGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuIEl0IGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGF0IHRoaXMgZWFybHkgc3RhZ2UgdG8gc29saWNpdCBmZWVkYmFjayBmcm9tIHBpb25lZXJpbmcgYWRvcHRlcnMgb24gdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBhbnkgY29kZSB0aGF0IHVzZXMgdGhpcyBBUEkgd2lsbCBhbG1vc3QgY2VydGFpbmx5IGJlIGJyb2tlbiAocmVwZWF0ZWRseSkgYXMgdGhlIEFQSSBldm9sdmVzLjwvYj4KLTxwPjwvcD4KLQotPGg2IGNsYXNzPSJDYXB0aW9uRmlnQ29sdW1uIFNjaGVtYUhlYWRlciI+RGVzY3JpcHRpb246IDwvaDY+VGhlIFdTREwgRXh0ZW5zaWJpbGl0eSBFbGVtZW50IEZhY3RvcmllcyBleHRlbnNpb24gcG9pbnQgYWxsb3dzIGNsaWVudHMgdG8gcmVnaXN0ZXIgZmFjdG9yaWVzIGZvciBjcmVhdGluZyBjdXN0b20gZXh0ZW5zaWJpbGl0eSBlbGVtZW50cy48cD48L3A+Ci08aDYgY2xhc3M9IkNhcHRpb25GaWdDb2x1bW4gU2NoZW1hSGVhZGVyIj5Db25maWd1cmF0aW9uIE1hcmt1cDo8L2g2PgotPHA+PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUVMRU1FTlQgPGEgbmFtZT0iZS5leHRlbnNpb24iPmV4dGVuc2lvbjwvYT4gKDxhIGhyZWY9IiNlLmV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSI+ZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5PC9hPikmZ3Q7PC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkIj4mbHQ7IUFUVExJU1QgZXh0ZW5zaW9uPC9wPgotPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+cG9pbnQmbmJzcDtDREFUQSAjUkVRVUlSRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5pZCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NEQVRBICNJTVBMSUVEPHAgY2xhc3M9ImNvZGUgU2NoZW1hRHRkQXR0bGlzdCI+bmFtZSZuYnNwOyZuYnNwO0NEQVRBICNJTVBMSUVEJmd0OzwvcD4KLTxwPjwvcD4KLTx1bCBjbGFzcz0iQ29uZmlnTWFya3VwQXR0bGlzdERlc2MiPgotPGxpPjxiPnBvaW50PC9iPiAtIGEgZnVsbHkgcXVhbGlmaWVkIGlkZW50aWZpZXIgb2YgdGhlIHRhcmdldCBleHRlbnNpb24gcG9pbnQ8L2xpPgotPGxpPjxiPmlkPC9iPiAtIGFuIG9wdGlvbmFsIGlkZW50aWZpZXIgb2YgdGhlIGV4dGVuc2lvbiBpbnN0YW5jZTwvbGk+Ci08bGk+PGI+bmFtZTwvYj4gLSBhbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBleHRlbnNpb24gaW5zdGFuY2U8L2xpPgotPC91bD4KLTxicj48cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshRUxFTUVOVCA8YSBuYW1lPSJlLmV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSI+ZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5PC9hPiBFTVBUWSZndDs8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGQiPiZsdDshQVRUTElTVCBleHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk8L3A+Ci08cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5uYW1lc3BhY2UmbmJzcDtDREFUQSAjUkVRVUlSRUQ8cCBjbGFzcz0iY29kZSBTY2hlbWFEdGRBdHRsaXN0Ij5jbGFzcyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NEQVRBICNSRVFVSVJFRCZndDs8L3A+Ci08cD48L3A+Ci08dWwgY2xhc3M9IkNvbmZpZ01hcmt1cEF0dGxpc3REZXNjIj4KLTxsaT48Yj5uYW1lc3BhY2U8L2I+IC0gVGhlIG5hbWVzcGFjZSB0aGlzIGV4dGVuc2lvbiBwb2ludCBpbnN0YW5jZSBhcHBsaWVzIHRvLjwvbGk+Ci08bGk+PGI+Y2xhc3M8L2I+IC0gVGhlIGNsYXNzIHRoYXQgaW1wbGVtZW50cyA8Y29kZT5vcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeTwvY29kZT4uPC9saT4KLTwvdWw+Ci08YnI+PGg2IGNsYXNzPSJDYXB0aW9uRmlnQ29sdW1uIFNjaGVtYUhlYWRlciI+RXhhbXBsZXM6IDwvaDY+VGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGFuIGV4dGVuc2liaWxpdHkgZWxlbWVudCBmYWN0b3J5IGNvbnRyaWJ1dGlvbjoKLTxwcmUgY2xhc3M9IkV4YW1wbGUiPjxzcGFuIGNsYXNzPSJjb2RlIFNjaGVtYVRhZyI+Ci0gICAmbHQ7ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD08L3NwYW4+PHNwYW4gY2xhc3M9ImNvZGUgU2NoZW1hQ3N0cmluZyI+JnF1b3Q7b3JnLmVjbGlwc2Uud3N0LndzZGwuZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3JpZXMmcXVvdDs8L3NwYW4+PHNwYW4gY2xhc3M9ImNvZGUgU2NoZW1hVGFnIj4mZ3Q7Ci0gICAgICAmbHQ7ZXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5Ci0gICAgICAgICAgICBuYW1lc3BhY2U9PC9zcGFuPjxzcGFuIGNsYXNzPSJjb2RlIFNjaGVtYUNzdHJpbmciPiZxdW90O2h0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8mcXVvdDs8L3NwYW4+PHNwYW4gY2xhc3M9ImNvZGUgU2NoZW1hVGFnIj4KLSAgICAgICAgICAgIGNsYXNzPTwvc3Bhbj48c3BhbiBjbGFzcz0iY29kZSBTY2hlbWFDc3RyaW5nIj4mcXVvdDtvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwudXRpbC5TT0FQRXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5JnF1b3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJjb2RlIFNjaGVtYVRhZyI+LyZndDsKLSAgICZsdDsvZXh0ZW5zaW9uJmd0OwotPC9zcGFuPjwvcHJlPgotPHA+PC9wPgotCi08YnI+Ci08cCBjbGFzcz0ibm90ZSBTY2hlbWFDb3B5cmlnaHQiPgotQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLjxicj4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgCi1hdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgCi10aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCA8YQotaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPgotCi08L3A+Ci08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3Yvc2NoZW1hLmNzcyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9zY2hlbWEuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGY5ZDAxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwuZG9jLmlzdi9zY2hlbWEuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotSDYuQ2FwdGlvbkZpZ0NvbHVtbiNoZWFkZXIgewotCWZvbnQtc2l6ZToxNnB4OyAKLQlkaXNwbGF5OmlubGluZQotfQotCi1QLk5vdGUjY29weXJpZ2h0IHsKLQlmb250LXNpemU6IHNtYWxsZXI7IAotCWZvbnQtc3R5bGU6IG5vcm1hbDsKLQljb2xvcjogIzMzNjY5OTsgCi0JZGlzcGxheTppbmxpbmU7Ci0JbWFyZ2luLXRvcDogMy4wMDAwMDBwdDsKLQltYXJnaW4tYm90dG9tOiAxMS4wMDAwMDBwdDsKLQltYXJnaW4tcmlnaHQ6IDAuMDAwMDAwcHQ7Ci0JbWFyZ2luLWxlZnQ6IDAuMDAwMDAwcHQ7Ci19Ci0KLVAuQ29kZSNkdGQgewotCWNvbG9yOiAjODAwMDAwOyAKLQltYXJnaW4tdG9wOiAwLjAwMDAwMHB0OwotCW1hcmdpbi1ib3R0b206IDAuMDAwMDAwcHQ7Ci0JbWFyZ2luLXJpZ2h0OiAwLjAwMDAwMHB0OwotCW1hcmdpbi1sZWZ0OiAxMC4wMDAwMDBwdDsKLX0KLQotUC5Db2RlI2R0ZEF0dGxpc3QgewotCWNvbG9yOiAjODAwMDAwOyAKLQltYXJnaW4tdG9wOiAwLjAwMDAwMHB0OwotCW1hcmdpbi1ib3R0b206IDAuMDAwMDAwcHQ7Ci0JbWFyZ2luLXJpZ2h0OiAwLjAwMDAwMHB0OwotCW1hcmdpbi1sZWZ0OiAyMC4wMDAwMDBwdDsKLX0KLQotUC5Db2RlI3RhZyB7Ci0JY29sb3I6ICMwMDAwODA7IAotCWRpc3BsYXk6aW5saW5lOwotCW1hcmdpbi10b3A6IDAuMDAwMDAwcHQ7Ci0JbWFyZ2luLWJvdHRvbTogMC4wMDAwMDBwdDsKLQltYXJnaW4tcmlnaHQ6IDAuMDAwMDAwcHQ7Ci0JbWFyZ2luLWxlZnQ6IDAuMDAwMDAwcHQ7Ci19Ci0KLVAuQ29kZSNjc3RyaW5nIHsKLQljb2xvcjogIzAwODAwMDsgCi0JZGlzcGxheTppbmxpbmU7Ci0JbWFyZ2luLXRvcDogMC4wMDAwMDBwdDsKLQltYXJnaW4tYm90dG9tOiAwLjAwMDAwMHB0OwotCW1hcmdpbi1yaWdodDogMC4wMDAwMDBwdDsKLQltYXJnaW4tbGVmdDogMC4wMDAwMDBwdDsJCi19Ci0KLS5Db25maWdNYXJrdXAjZWxlbWVudERlc2MgewotCWNvbG9yOiBibGFjazsKLQltYXJnaW4tdG9wOiAwLjAwMDAwMHB0OwotCW1hcmdpbi1ib3R0b206IDAuMDAwMDAwcHQ7Ci0JbWFyZ2luLXJpZ2h0OiAwLjAwMDAwMHB0OwotCW1hcmdpbi1sZWZ0OiAxMC4wMDAwMDBwdDsKLX0KLQotLkNvbmZpZ01hcmt1cCNhdHRsaXN0RGVzYyB7Ci0JY29sb3I6IGJsYWNrOwotCW1hcmdpbi10b3A6IDAuMDAwMDAwcHQ7Ci0JbWFyZ2luLWJvdHRvbTogMC4wMDAwMDBwdDsKLQltYXJnaW4tcmlnaHQ6IDAuMDAwMDAwcHQ7Ci0JbWFyZ2luLWxlZnQ6IDMyLjAwMDAwMHB0OwotfQotCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvdG9waWNzX0V4dFBvaW50X1JlZmVyZW5jZS54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvdG9waWNzX0V4dFBvaW50X1JlZmVyZW5jZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NTc5ZWIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3RvcGljc19FeHRQb2ludF9SZWZlcmVuY2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotCi08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PgotCSAJPHRvYyBsYWJlbD0iRXh0ZW5zaW9uIFBvaW50cyBSZWZlcmVuY2UiPgotPHRvcGljIGhyZWY9InJlZmVyZW5jZS9leHRlbnNpb24tcG9pbnRzL29yZ19lY2xpcHNlX3dzdF93c2RsX2V4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yaWVzLmh0bWwiIGxhYmVsPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5leHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcmllcyIvPgotPC90b2M+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvdG9waWNzX1JlZmVyZW5jZS54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLmRvYy5pc3YvdG9waWNzX1JlZmVyZW5jZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1YWNmMzUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2L3RvcGljc19SZWZlcmVuY2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBEZWZpbmUgdG9waWNzIGZvciB0aGUgcmVmZXJlbmNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08dG9jIGxhYmVsPSJXU0RMIEVNRiBtb2RlbCByZWZlcmVuY2UiIGxpbmtfdG89Ii4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9yZWZlcmVuY2VfdG9jLnhtbCNqYXZhZG9jX3dlYnNlcnZpY2VzIj4KLQkKLQk8dG9waWMgbGFiZWw9IldTREwgRU1GIE1vZGVsIEFQSSBSZWZlcmVuY2UiIGhyZWY9InJlZmVyZW5jZS9hcGkvb3ZlcnZpZXctc3VtbWFyeS5odG1sIj4KLQkKLQkJPCEtLSBUaGUgamF2YWRvY3RvYy54bWwgdG9jIGlzIGdlbmVyYXRlZCBieSB0aGUgYnVpbGQuIC0tPgotCQk8bGluayB0b2M9ImphdmFkb2N0b2MueG1sIiAvPgotCQkKLQk8L3RvcGljPgotCQotCQotCTx0b3BpYyBsYWJlbD0iV1NETCBFTUYgTW9kZWwgRXh0ZW5zaW9uIFBvaW50cyBSZWZlcmVuY2UiIGhyZWY9InJlZmVyZW5jZS9leHRlbnNpb24tcG9pbnRzL2luZGV4Lmh0bWwiPgotCQotCSAgICA8IS0tIFRoZSB0b3BpY3NfRXh0UG9pbnRzLVJlZmVyZW5jZS54bWwgdG9jIGlzIGdlbmVyYXRlZCBieSB0aGUgYnVpbGQuIC0tPgotCQk8bGluayB0b2M9InRvcGljc19FeHRQb2ludF9SZWZlcmVuY2UueG1sIiAvPgotCQkKLQk8L3RvcGljPgotPC90b2M+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci8uY3ZzaWdub3JlIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2FkZjk3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXJfMS4wLjAuamFyCi1idWlsZC54bWwKLWJhawotdGVtcApkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci8ucHJvamVjdCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ODUxMDAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzljMjY0Ny4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotI1N1biBBcHIgMTYgMTg6MDE6MjUgRURUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1lbmNvZGluZy88cHJvamVjdD49SVNPLTg4NTktMQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGVjNWQ4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLSNTdW4gQXByIDE2IDE4OjAxOjMyIEVEVCAyMDA2Ci1jb21waWxlcnMucC5idWlsZD0wCi1jb21waWxlcnMucC5kZXByZWNhdGVkPTAKLWNvbXBpbGVycy5wLm5vLXJlcXVpcmVkLWF0dD0wCi1jb21waWxlcnMucC5ub3QtZXh0ZXJuYWxpemVkLWF0dD0wCi1jb21waWxlcnMucC51bmtub3duLWF0dHJpYnV0ZT0wCi1jb21waWxlcnMucC51bmtub3duLWNsYXNzPTAKLWNvbXBpbGVycy5wLnVua25vd24tZWxlbWVudD0wCi1jb21waWxlcnMucC51bmtub3duLXJlc291cmNlPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtZXgtcG9pbnRzPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtaW1wb3J0PTAKLWNvbXBpbGVycy51c2UtcHJvamVjdD10cnVlCi1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9Eb2NCdWlsZC54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL0RvY0J1aWxkLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlkMDhiYy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL0RvY0J1aWxkLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgotPCEtLSAKLQotCVRoaXMgc2NyaXB0IGJ1aWxkIHRoZSBIZWxwIHBsdWctaW4gYnkgdHJhbnNmb3JtaW5nIHRoZSBESVRBIHNvdXJjZSBmaWxlcyBpbnRvIEhUTUwuCi0JCi0JVG8gdXNlIHRoaXMgc2NyaXB0LCB5b3UgbXVzdCBpbnN0YWxsIERJVEEtT1Qgb24geW91ciBtYWNoaW5lIGluIHRoZSBkaXJlY3RvcnkKLQlkZWZpbmVkIGJ5IHRoZSBkaXRhLm90LmRpciBwcm9wZXJ0eS4KLQkKLQlSdW4gdGhlIGRlZmF1bHQgdGFyZ2V0IGFmdGVyIHlvdSBlZGl0IHRoZSBESVRBIHNvdXJjZSBmaWxlcyB0byByZWdlbmVyYXRlIHRoZSBIVE1MLgotCQotCVRvIGN1c3RvbWl6ZSB0aGlzIHNjcmlwdCBmb3Igb3RoZXIgSGVscCBwbHVnLWlucywgbW9kaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgYXJncy5pbnB1dCBwcm9wZXJ0eQotCXRvIGJlIHRoZSBESVRBIG1hcCBmaWxlIGZvciB0aGUgcGx1Zy1pbi4KLQkKLQlOT1RFOiBUaGlzIHNjcmlwdCBhc3N1bWVzIHRoYXQgbGlua3MgdG8gc2libGluZyBIZWxwIHBsdWctaW5zIGhhdmUgc2NvcGU9InBlZXIiLCBvdGhlcndpc2UgdGhlCi0Jb3V0cHV0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgd2lsbCBiZSBzaGlmdGVkIGluY29ycmVjdGx5LgotCQotCU5PVEU6IFRoaXMgc2NyaXB0IGFzc3VtZXMgdGhhdCB5b3UgaGFuZCBjb2RlIHlvdXIgcGx1Z2luLnhtbCBmaWxlIGluIG15cGx1Z2luLnhtbC4gVGhpcyBmaWxlCi0Jd2lsbCBiZSBjb3BpZWQgb3ZlciB0aGUgZ2VuZXJhdGVkIHBsdWdpbi54bWwgd2hpY2ggaXMgY3VycmVudGx5IG5vdCBiZWluZyBnZW5lcmF0ZWQgY29ycmVjdGx5Ci0JYnkgRElUQS1PVC4KLQkKLQlDaGFuZ2VMb2c6Ci0JMjAwNi0wNC0wNSBBcnRodXIgUnltYW4gPHJ5bWFuQGNhLmlibS5jb20+Ci0JLSBDcmVhdGVkLgotCTIwMDgtMDEtMDkgS2F0ZSBQcmljZSA8a2F0ZXBAY2EuaWJtLmNvbT4KLQktIG1vZGlmaWVkIGZvciBuZXcgRElUQS1PVCB2ZXJzaW9uCi0JMjAwOC0wNS0wNSBLYXRlIFByaWNlIDxrYXRlcEBjYS5pYm0uY29tPgotCS0gbW9kaWZpZWQgdG8gYWRkIGdlbmVyYXRpb24gb2YgcHJlLWJ1aWx0IGhlbHAgaW5kZXguIAotCS0gTXVzdCBkZWxldGUgL2luZGV4IGZvbGRlciBiZWZvcmUgcnVubmluZyBidWlsZAotCQotLS0+Ci08cHJvamVjdCBuYW1lPSJlY2xpcHNlaGVscCIgZGVmYXVsdD0iYWxsIj4KLQotCTxwcm9wZXJ0eSBuYW1lPSJkaXRhLm90LmRpciIgbG9jYXRpb249IkM6L0RJVEEtT1QxLjIuMiIgLz4KLQotCTxwYXRoIGlkPSJkb3N0LmNsYXNzLnBhdGgiPgotCQk8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7ZGl0YS5vdC5kaXJ9JHtmaWxlLnNlcGFyYXRvcn1saWIke2ZpbGUuc2VwYXJhdG9yfWRvc3QuamFyIiAvPgotCTwvcGF0aD4KLQotCTx0YXNrZGVmIG5hbWU9ImludGVncmF0ZSIgY2xhc3NuYW1lPSJvcmcuZGl0YS5kb3N0LnBsYXRmb3JtLkludGVncmF0b3JUYXNrIj4KLQkJPGNsYXNzcGF0aCByZWZpZD0iZG9zdC5jbGFzcy5wYXRoIiAvPgotCTwvdGFza2RlZj4KLQk8dGFyZ2V0IG5hbWU9ImFsbCIgZGVwZW5kcz0iaW50ZWdyYXRlLCBlY2xpcHNlaGVscCI+Ci0JPC90YXJnZXQ+Ci0JPHRhcmdldCBuYW1lPSJpbnRlZ3JhdGUiPgotCQk8aW50ZWdyYXRlIGRpdGFkaXI9IiR7ZGl0YS5vdC5kaXJ9IiAvPgotCTwvdGFyZ2V0PgotCi0JPCEtLSByZXZpc2UgYmVsb3cgaGVyZSAtLT4KLQk8dGFyZ2V0IG5hbWU9ImVjbGlwc2VoZWxwIj4KLQkJPGFudCBhbnRmaWxlPSIke2RpdGEub3QuZGlyfSR7ZmlsZS5zZXBhcmF0b3J9Y29uZHVjdG9yLnhtbCIgdGFyZ2V0PSJpbml0IiBkaXI9IiR7ZGl0YS5vdC5kaXJ9Ij4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmNvcHljc3MiIHZhbHVlPSJubyIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmNzc3BhdGgiIHZhbHVlPSIuLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5lY2xpcHNlLnByb3ZpZGVyIiB2YWx1ZT0iRWNsaXBzZS5vcmciIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5lY2xpcHNlLnZlcnNpb24iIHZhbHVlPSIzLjMuMCIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJhcmdzLmlucHV0IiBsb2NhdGlvbj0id3NkbF9idWlsZF90b2MuZGl0YW1hcCIgLz4gICAgCQkKLQkJCTxwcm9wZXJ0eSBuYW1lPSJjbGVhbi50ZW1wIiB2YWx1ZT0idHJ1ZSIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJkaXRhLmV4dG5hbWUiIHZhbHVlPSIuZGl0YSIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJkaXRhLnRlbXAuZGlyIiBsb2NhdGlvbj0idGVtcCIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJvdXRwdXQuZGlyIiBsb2NhdGlvbj0iIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9InRyYW5zdHlwZSIgdmFsdWU9ImVjbGlwc2VoZWxwIiAvPgotCQk8L2FudD4KLQkJPGNvcHkgZmlsZT0ibXlwbHVnaW4ueG1sIiB0b2ZpbGU9InBsdWdpbi54bWwiIG92ZXJ3cml0ZT0ieWVzIiAvPgotCTwvdGFyZ2V0PgotCTx0YXJnZXQgbmFtZT0iYnVpbGQuaW5kZXgiIGRlc2NyaXB0aW9uPSJCdWlsZHMgc2VhcmNoIGluZGV4IGZvciB0aGUgcGx1Zy1pbiIgaWY9ImVjbGlwc2UucnVubmluZyI+Ci0JICAgICA8aGVscC5idWlsZEhlbHBJbmRleCBtYW5pZmVzdD0icGx1Z2luLnhtbCIgZGVzdGluYXRpb249Ii4iLz4KLQk8L3RhcmdldD4JCi08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL01FVEEtSU5GL01BTklGRVNULk1GIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRmMDIyMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlcGx1Z2luTmFtZQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXI7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC41NTAucXVhbGlmaWVyCi1CdW5kbGUtVmVuZG9yOiAlcGx1Z2luUHJvdmlkZXIKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotRWNsaXBzZS1MYXp5U3RhcnQ6IHRydWUKLUJ1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2Fib3V0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2J1aWxkLnByb3BlcnRpZXMgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MDE2ODIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotYmluLmluY2x1ZGVzID0gd3N3c2RsZWRpdG9yY190b2MueG1sLFwKLSAgICAgICAgICAgICAgIHdzd3NkbGVkaXRvcnRfdG9jLnhtbCxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyaW5kZXgueG1sLFwKLSAgICAgICAgICAgICAgIGltYWdlcy8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0JCQkgICBjb25jZXB0cy8qLmh0bSosXAotICAgICAgICAgICAgICAgdGFza3MvKi5odG0qLFwKLSAgICAgICAgICAgICAgIGluZGV4LyxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8KLXNyYy5pbmNsdWRlcyA9IGJ1aWxkLnByb3BlcnRpZXMsXAotCQkgICAgICAgKi5tYXBsaXN0LFwKLSAgICAgICAgICAgICAgICouZGl0YW1hcCxcCi0JCSAgICAgICBjb25jZXB0cy8qLmRpdGEsXAotICAgICAgICAgICAgICAgdGFza3MvKi5kaXRhCi1iaW4uZXhjbHVkZXMgPSBEb2NCdWlsZC54bWwsXAotICAgICAgICAgICAgICAgbXlQbHVnaW4qLnhtbApkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9jb25jZXB0cy9jd3NkbGVkLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsZWQuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRhMWJlNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsZWQuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIGNvbmNlcHQgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgQ29uY2VwdC8vRU4iCi0gImNvbmNlcHQuZHRkIj4KLTxjb25jZXB0IGlkPSJjd3NkbGVkIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPkVkaXRpbmcgV1NETCBmaWxlcyB3aXRoIHRoZSBXU0RMIEVkaXRvcjwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPkVkaXRpbmcgV1NETCBmaWxlcyB3aXRoIHRoZSBXU0RMIGVkaXRvcjwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+VGhlIFdTREwgZWRpdG9yIGFsbG93cyB5b3UgdG8gZWFzaWx5IGFuZCBncmFwaGljYWxseSBjcmVhdGUsIG1vZGlmeSwKLXZpZXcsIGFuZCB2YWxpZGF0ZSBXU0RMIGZpbGVzLjwvc2hvcnRkZXNjPgotPGNvbmJvZHk+Ci08cD5Vc2luZyB0aGUgV1NETCBlZGl0b3IsIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZzo8L3A+Ci08dWw+Ci08bGk+Q3JlYXRlIG5ldyBXU0RMIGZpbGVzPC9saT4KLTxsaT5WYWxpZGF0ZSBhbmQgZWRpdCBXU0RMIGZpbGVzPC9saT4KLTxsaT5DcmVhdGUgYW5kIGRlbGV0ZTogIDx1bD4KLTxsaT5TZXJ2aWNlczogdXNlZCB0byBhZ2dyZWdhdGUgYSBzZXQgb2YgcmVsYXRlZCBwb3J0cy4gVGhlc2UgYXJlIHRoZSByb290Ci1lbGVtZW50cyBvZiBhbGwgV1NETCBmaWxlcy48L2xpPgotPGxpPlBvcnRzOiBzcGVjaWZ5IGFuIGFkZHJlc3MgZm9yIGEgYmluZGluZywgdGh1cyBkZWZpbmluZyBhIHNpbmdsZSBjb21tdW5pY2F0aW9uCi1lbmRwb2ludC48L2xpPgotPGxpPkJpbmRpbmdzOiBzcGVjaWZ5IGNvbmNyZXRlIHByb3RvY29sIGFuZCBkYXRhIGZvcm1hdCBzcGVjaWZpY2F0aW9ucyBmb3IKLXRoZSBvcGVyYXRpb25zIGFuZCBtZXNzYWdlcyBkZWZpbmVkIGJ5IGEgcGFydGljdWxhciBwb3J0IHR5cGUuPC9saT4KLTxsaT5Qb3J0IHR5cGVzOiBhIHNldCBvZiBhYnN0cmFjdCBvcGVyYXRpb25zIHRoYXQgZWFjaCByZWZlciB0byBhbiBpbnB1dCBtZXNzYWdlCi1hbmQgb3V0cHV0IG1lc3NhZ2VzLjwvbGk+Ci08bGk+T3BlcmF0aW9uczogaW5wdXQgYW5kIG91dHB1dCBtZXNzYWdlcy48L2xpPgotPGxpPk1lc3NhZ2VzOiByZXByZXNlbnQgYW4gYWJzdHJhY3QgZGVmaW5pdGlvbiBvZiB0aGUgZGF0YSBiZWluZyB0cmFuc21pdHRlZC4KLUEgbWVzc2FnZSBjb25zaXN0cyBvZiBsb2dpY2FsIHBhcnRzLCBlYWNoIG9mIHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGRlZmluaXRpb24KLXdpdGhpbiBzb21lIHR5cGUgc3lzdGVtLjwvbGk+Ci08bGk+UGFydHM6IGEgZmxleGlibGUgbWVjaGFuaXNtIGZvciBkZXNjcmliaW5nIHRoZSBsb2dpY2FsIGFic3RyYWN0IGNvbnRlbnQKLW9mIGEgbWVzc2FnZS48P1B1YiBDYXJldD8+PC9saT4KLTxsaT5UeXBlczogZGVzY3JpYmUgYWxsIHRoZSBkYXRhIHR5cGVzIHVzZWQgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuCi1XU0RMIGlzIG5vdCB0aWVkIGV4Y2x1c2l2ZWx5IHRvIGEgc3BlY2lmaWMgdHlwaW5nIHN5c3RlbSwgYnV0IGl0IHVzZXMgdGhlCi1XM0MgWE1MIFNjaGVtYSBzcGVjaWZpY2F0aW9uIGFzIGl0cyBkZWZhdWx0IGNob2ljZS48L2xpPgotPGxpPkltcG9ydCBzdGF0ZW1lbnRzOiB1c2VkIHRvIGFzc29jaWF0ZSBhIG5hbWVzcGFjZSB3aXRoIGEgZG9jdW1lbnQgbG9jYXRpb24uIDwvbGk+Ci08L3VsPjwvbGk+Ci08bGk+SW1wb3J0IGV4aXN0aW5nIFdTREwgZmlsZXMgZm9yIHN0cnVjdHVyZWQgdmlld2luZzwvbGk+Ci08bGk+R2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmcm9tIGEgV1NETCBkb2N1bWVudC48L2xpPgotPC91bD4KLTxwPlRoZSBXU0RMIHN1cHBvcnQgaW4gdGhlIFdTREwgZWRpdG9yIGlzIGJhc2VkIG9uIHRoZSBXM0MgPHhyZWYgZm9ybWF0PSJodG1sIgotaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvd3NkbCIgc2NvcGU9ImV4dGVybmFsIj5XZWIgU2VydmljZXMgRGVzY3JpcHRpb24KLUxhbmd1YWdlIChXU0RMKSAxLjE8L3hyZWY+LiBUaGUgV1NETCBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIFczQyBXZWIgc2l0ZSBpcwotYWxzbyB1c2VkIGZvciB2YWxpZGF0aW9uLiZuYnNwOyA8L3A+Ci08L2NvbmJvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBjb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGwuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldTREw8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgdGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vdGFza3MvdGNydHdzZGwuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08bGluayBocmVmPSIuLi90YXNrcy90ZWR0d3NkbC5kaXRhIiBzY29wZT0ibG9jYWwiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L2NvbmNlcHQ+Ci08P1B1YiAqMDAwMDAwMjUzND8+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGxlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTkxNTc3Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGxlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJjb25jZXB0IiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkVkaXRpbmcgV1NETCBmaWxlcyB3aXRoIHRoZSBXU0RMIEVkaXRvciIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJUaGUgV1NETCBlZGl0b3IgYWxsb3dzIHlvdSB0byBlYXNpbHkgYW5kIGdyYXBoaWNhbGx5IGNyZWF0ZSwgbW9kaWZ5LCB2aWV3LCBhbmQgdmFsaWRhdGUgV1NETCBmaWxlcy4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVGhlIFdTREwgZWRpdG9yIGFsbG93cyB5b3UgdG8gZWFzaWx5IGFuZCBncmFwaGljYWxseSBjcmVhdGUsIG1vZGlmeSwgdmlldywgYW5kIHZhbGlkYXRlIFdTREwgZmlsZXMuIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi90YXNrcy90ZWR0d3NkbC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGwuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdGNydHdzZGwuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vdGFza3MvdGVkdHdzZGwuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJjd3NkbGVkIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+RWRpdGluZyBXU0RMIGZpbGVzIHdpdGggdGhlIFdTREwgZWRpdG9yPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJjd3NkbGVkIj48YSBuYW1lPSJjd3NkbGVkIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5FZGl0aW5nIFdTREwgZmlsZXMgd2l0aCB0aGUgV1NETCBFZGl0b3I8L2gxPgotCi0KLQotPGRpdj48cD5UaGUgV1NETCBlZGl0b3IgYWxsb3dzIHlvdSB0byBlYXNpbHkgYW5kIGdyYXBoaWNhbGx5IGNyZWF0ZSwgbW9kaWZ5LAotdmlldywgYW5kIHZhbGlkYXRlIFdTREwgZmlsZXMuPC9wPgotCi08cD5Vc2luZyB0aGUgV1NETCBlZGl0b3IsIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZzo8L3A+Ci0KLTx1bD4KLTxsaT5DcmVhdGUgbmV3IFdTREwgZmlsZXM8L2xpPgotCi08bGk+VmFsaWRhdGUgYW5kIGVkaXQgV1NETCBmaWxlczwvbGk+Ci0KLTxsaT5DcmVhdGUgYW5kIGRlbGV0ZTogIDx1bD4KLTxsaT5TZXJ2aWNlczogdXNlZCB0byBhZ2dyZWdhdGUgYSBzZXQgb2YgcmVsYXRlZCBwb3J0cy4gVGhlc2UgYXJlIHRoZSByb290Ci1lbGVtZW50cyBvZiBhbGwgV1NETCBmaWxlcy48L2xpPgotCi08bGk+UG9ydHM6IHNwZWNpZnkgYW4gYWRkcmVzcyBmb3IgYSBiaW5kaW5nLCB0aHVzIGRlZmluaW5nIGEgc2luZ2xlIGNvbW11bmljYXRpb24KLWVuZHBvaW50LjwvbGk+Ci0KLTxsaT5CaW5kaW5nczogc3BlY2lmeSBjb25jcmV0ZSBwcm90b2NvbCBhbmQgZGF0YSBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgZm9yCi10aGUgb3BlcmF0aW9ucyBhbmQgbWVzc2FnZXMgZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgcG9ydCB0eXBlLjwvbGk+Ci0KLTxsaT5Qb3J0IHR5cGVzOiBhIHNldCBvZiBhYnN0cmFjdCBvcGVyYXRpb25zIHRoYXQgZWFjaCByZWZlciB0byBhbiBpbnB1dCBtZXNzYWdlCi1hbmQgb3V0cHV0IG1lc3NhZ2VzLjwvbGk+Ci0KLTxsaT5PcGVyYXRpb25zOiBpbnB1dCBhbmQgb3V0cHV0IG1lc3NhZ2VzLjwvbGk+Ci0KLTxsaT5NZXNzYWdlczogcmVwcmVzZW50IGFuIGFic3RyYWN0IGRlZmluaXRpb24gb2YgdGhlIGRhdGEgYmVpbmcgdHJhbnNtaXR0ZWQuCi1BIG1lc3NhZ2UgY29uc2lzdHMgb2YgbG9naWNhbCBwYXJ0cywgZWFjaCBvZiB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggYSBkZWZpbml0aW9uCi13aXRoaW4gc29tZSB0eXBlIHN5c3RlbS48L2xpPgotCi08bGk+UGFydHM6IGEgZmxleGlibGUgbWVjaGFuaXNtIGZvciBkZXNjcmliaW5nIHRoZSBsb2dpY2FsIGFic3RyYWN0IGNvbnRlbnQKLW9mIGEgbWVzc2FnZS48L2xpPgotCi08bGk+VHlwZXM6IGRlc2NyaWJlIGFsbCB0aGUgZGF0YSB0eXBlcyB1c2VkIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLgotV1NETCBpcyBub3QgdGllZCBleGNsdXNpdmVseSB0byBhIHNwZWNpZmljIHR5cGluZyBzeXN0ZW0sIGJ1dCBpdCB1c2VzIHRoZQotVzNDIFhNTCBTY2hlbWEgc3BlY2lmaWNhdGlvbiBhcyBpdHMgZGVmYXVsdCBjaG9pY2UuPC9saT4KLQotPGxpPkltcG9ydCBzdGF0ZW1lbnRzOiB1c2VkIHRvIGFzc29jaWF0ZSBhIG5hbWVzcGFjZSB3aXRoIGEgZG9jdW1lbnQgbG9jYXRpb24uIDwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGk+SW1wb3J0IGV4aXN0aW5nIFdTREwgZmlsZXMgZm9yIHN0cnVjdHVyZWQgdmlld2luZzwvbGk+Ci0KLTxsaT5HZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZyb20gYSBXU0RMIGRvY3VtZW50LjwvbGk+Ci0KLTwvdWw+Ci0KLTxwPlRoZSBXU0RMIHN1cHBvcnQgaW4gdGhlIFdTREwgZWRpdG9yIGlzIGJhc2VkIG9uIHRoZSBXM0MgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvd3NkbCIgdGFyZ2V0PSJfYmxhbmsiPldlYiBTZXJ2aWNlcyBEZXNjcmlwdGlvbiBMYW5ndWFnZSAoV1NETCkgMS4xPC9hPi4gVGhlIFdTREwgc3BlY2lmaWNhdGlvbiBmcm9tIHRoZSBXM0MgV2ViIHNpdGUgaXMKLWFsc28gdXNlZCBmb3IgdmFsaWRhdGlvbi7CoCA8L3A+Ci0KLTwvZGl2PgotCi08ZGl2PgotPHVsIGNsYXNzPSJ1bGxpbmtzIj4KLTxsaSBjbGFzcz0idWxjaGlsZGxpbmsiPjxzdHJvbmc+PGEgaHJlZj0iLi4vdGFza3MvdGVkdHdzZGwuaHRtbCI+RWRpdGluZyBXU0RMIGZpbGVzPC9hPjwvc3Ryb25nPjxiciAvPgotT25jZSB5b3UgaGF2ZSBjcmVhdGVkIGEgV1NETCBmaWxlLCB5b3UgY2FuIGVkaXQgaXQgaW4gdGhlIFdTREwgZWRpdG9yLiBZb3UgY2FuIGFsc28gaW1wb3J0IFdTREwgZmlsZXMgeW91IGhhdmUgY3JlYXRlZCBpbnRvIHRoZSB3b3JrYmVuY2ggYW5kIGVkaXQgdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IuPC9saT4KLTwvdWw+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgY29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGwuaHRtbCI+V1NETDwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCB0YXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL3Rhc2tzL3RjcnR3c2RsLmh0bWwiIHRpdGxlPSJZb3UgY2FuIGNyZWF0ZSBhIG5ldywgZW1wdHkgV1NETCBmaWxlLCB0aGVuIGVkaXQgaXQgdXNpbmcgdGhlIFdTREwgZWRpdG9yLiI+Q3JlYXRpbmcgYSBuZXcgV1NETCBmaWxlPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi90YXNrcy90ZWR0d3NkbC5odG1sIiB0aXRsZT0iT25jZSB5b3UgaGF2ZSBjcmVhdGVkIGEgV1NETCBmaWxlLCB5b3UgY2FuIGVkaXQgaXQgaW4gdGhlIFdTREwgZWRpdG9yLiBZb3UgY2FuIGFsc28gaW1wb3J0IFdTREwgZmlsZXMgeW91IGhhdmUgY3JlYXRlZCBpbnRvIHRoZSB3b3JrYmVuY2ggYW5kIGVkaXQgdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IuIj5FZGl0aW5nIFdTREwgZmlsZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW1hZ2VzL2h0dHBza2VsLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW1hZ2VzL2h0dHBza2VsLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJlNjY4Ni4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2ltYWdlcy9odHRwc2tlbC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2ltYWdlcy9zaG93LWhpZGUtYmluZGluZy5naWYgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2ltYWdlcy9zaG93LWhpZGUtYmluZGluZy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkYTliNTguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbWFnZXMvc2hvdy1oaWRlLWJpbmRpbmcuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbWFnZXMvc29hcHNrZWwuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbWFnZXMvc29hcHNrZWwuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDQyNzM1Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW1hZ2VzL3NvYXBza2VsLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW1hZ2VzL3dzZGxlZGl0b3IuZ2lmIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbWFnZXMvd3NkbGVkaXRvci5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYmUzYjkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbWFnZXMvd3NkbGVkaXRvci5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2luZGV4L19mLmNmcyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW5kZXgvX2YuY2ZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzFlNTMxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW5kZXgvX2YuY2ZzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbmRleC9kZWxldGFibGUgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2luZGV4L2RlbGV0YWJsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkzZjQ3MC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL2luZGV4L2RlbGV0YWJsZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2NvbnRyaWJ1dGlvbnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExYTE2MWUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2NvbnRyaWJ1dGlvbnMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSNUaGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGU7IGRvIG5vdCBlZGl0Lg0KLSNXZWQgTWF5IDE0IDE3OjI3OjA4IEVEVCAyMDA4DQotb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXI9b3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXJcbjEuMC40MDAucXVhbGlmaWVyDQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RlcGVuZGVuY2llcyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kZXBlbmRlbmNpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YzM2ZjUuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RlcGVuZGVuY2llcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotI1RoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZTsgZG8gbm90IGVkaXQuDQotI1dlZCBNYXkgMTQgMTc6Mjc6MDggRURUIDIwMDgNCi1sdWNlbmU9MS45LjEudjIwMDgwMzA2MTgxMQ0KLWFuYWx5emVyPW9yZy5lY2xpcHNlLmhlbHAuYmFzZVwjMy4zLjEwMC52MjAwODA0MjU/bG9jYWxlXD1lbg0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kb2NzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RvY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwOTk5YzEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RvY3MKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlOyBkbyBub3QgZWRpdC4NCi0jV2VkIE1heSAxNCAxNzoyNzowOCBFRFQgMjAwOA0KLS9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90c2V0YmluZC5odG1sPTANCi0vb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGxlZC5odG1sPTANCi0vb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGVkdHdzZGwuaHRtbD0wDQotL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRwYXJ0Lmh0bWw9MA0KLS9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkc3J2Yy5odG1sPTANCi0vb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZG9wZXIuaHRtbD0wDQotL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RzZXRwcnR0Lmh0bWw9MA0KLS9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkbWVzcy5odG1sPTANCi0vb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R3c2RsZXhwLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90Y3J0d3NkbC5odG1sPTANCi0vb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydGltcHQuaHRtbD0wDQotL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RpbXB3c2RsLmh0bWw9MA0KLS9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkcG9ydC5odG1sPTANCi0vb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydHR5cGUuaHRtbD0wDQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbmRleC9zZWdtZW50cyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvaW5kZXgvc2VnbWVudHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZTg4MzIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9pbmRleC9zZWdtZW50cworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvbXlwbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9teXBsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNjgzODAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9teXBsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC50b2MiPz4KLTwhLS0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gVGhpcyBpcyB0aGUgcGx1Z2luIGZvciBkZWNsYXJpbmcgdGhlIGhlbHAgICAgICAgICAtLT4KLTwhLS0gY29udHJpYnV0aW9ucyBmb3IgdXNpbmcgdGhlIHRvb2wuICAgICAgICAgICAgICAgICAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQotPHBsdWdpbj4KLQotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC50b2MiPgotICAgIDx0b2MgZmlsZT0id3N3c2RsZWRpdG9ydF90b2MueG1sIi8+ICAgCi0gICAgPHRvYyBmaWxlPSJ3c3dzZGxlZGl0b3JjX3RvYy54bWwiLz4KLSAgICAgICA8aW5kZXggcGF0aD0iaW5kZXgvIi8+Ci0gICAgICAKLTwvZXh0ZW5zaW9uPgotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5pbmRleCI+Ci0gICAgICA8aW5kZXggZmlsZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXJpbmRleC54bWwiLz4KLTwvZXh0ZW5zaW9uPgotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5iYXNlLmx1Y2VuZVNlYXJjaFBhcnRpY2lwYW50cyI+Ci0gICAgICA8YmluZGluZyBwYXJ0aWNpcGFudElkPSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UueGh0bWwiLz4KLSAgIDwvZXh0ZW5zaW9uPgotCi08L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyLm1hcGxpc3QgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyLm1hcGxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZWI5OWYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci5tYXBsaXN0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPG1hcGxpc3QgdmVyc2lvbj0iMy42LjIiPgotICA8bmF2PgotICAgIDxtYXAgZmlsZT0id3N3c2RsZWRpdG9ydF90b2MuZGl0YW1hcCIvPgotICAgIDxtYXAgZmlsZT0id3N3c2RsZWRpdG9yY190b2MuZGl0YW1hcCIvPgotICA8L25hdj4KLSAgPGxpbms+Ci0gICAgPG1hcCBmaWxlPSJ3c3dzZGxlZGl0b3J0X3RvYy5kaXRhbWFwIi8+Ci0gICAgPG1hcCBmaWxlPSJ3c3dzZGxlZGl0b3JjX3RvYy5kaXRhbWFwIi8+Ci0gIDwvbGluaz4KLTwvbWFwbGlzdD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXJpbmRleC54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyaW5kZXgueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDFlNjIyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXJpbmRleC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPGluZGV4PgotICA8ZW50cnkga2V5d29yZD0iV1NETCBmaWxlcyI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImltcG9ydGluZyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGltcHdzZGwuaHRtbCN0aW1wd3NkbCIgdGl0bGU9IkltcG9ydGluZyBhIFdTREwgZmlsZSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImNyZWF0aW5nIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90Y3J0d3NkbC5odG1sI3RjcnR3c2RsIiB0aXRsZT0iQ3JlYXRpbmcgYSBuZXcgV1NETCBmaWxlIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iZWRpdGluZyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGVkdHdzZGwuaHRtbCN0ZWR0d3NkbCIgdGl0bGU9IkVkaXRpbmcgV1NETCBmaWxlcyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InNlcnZpY2VzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90YWRkc3J2Yy5odG1sI3RhZGRzcnZjIiB0aXRsZT0iQWRkaW5nIGEgc2VydmljZSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InBvcnRzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90YWRkcG9ydC5odG1sI3RhZGRwb3J0IiB0aXRsZT0iQWRkaW5nIGEgcG9ydCB0byBhIHNlcnZpY2UiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJzZXR0aW5nIHBvcnQgdHlwZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RzZXRwcnR0Lmh0bWwjdHNldHBydHQiIHRpdGxlPSJTZXR0aW5nIGEgcG9ydCB0eXBlIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iYmluZGluZ3MiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RzZXRiaW5kLmh0bWwjdHNldGJpbmQiIHRpdGxlPSJTZXR0aW5nIGEgYmluZGluZyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9Im9wZXJhdGlvbnMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RhZGRvcGVyLmh0bWwjdGFkZG9wZXIiIHRpdGxlPSJBZGRpbmcgYW4gb3BlcmF0aW9uIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0ibWVzc2FnZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RhZGRtZXNzLmh0bWwjYWRkaW5nYW1lc3NhZ2UiIHRpdGxlPSJBZGRpbmcgYSBtZXNzYWdlIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0ibWVzc2FnZSBwYXJ0cyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGFkZHBhcnQuaHRtbCN0YWRkcGFydCIgdGl0bGU9IkFkZGluZyBhIHBhcnQgdG8gYSBtZXNzYWdlIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0iaW1wb3J0IHN0YXRlbWVudHMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RjcnRpbXB0Lmh0bWwjdGNydGltcHQiIHRpdGxlPSJDcmVhdGluZyBhbiBpbXBvcnQgc3RhdGVtZW50Ii8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0idHlwZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RjcnR0eXBlLmh0bWwjdGNydHR5cGUiIHRpdGxlPSJDcmVhdGluZyBhIG5ldyB0eXBlIGZvciB5b3VyIFdTREwgZmlsZSIvPgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci0gIDxlbnRyeSBrZXl3b3JkPSJXZWIgc2VydmljZXMiPgotICAgIDxlbnRyeSBrZXl3b3JkPSJpbXBvcnRpbmcgV1NETCBmaWxlcyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGltcHdzZGwuaHRtbCN0aW1wd3NkbCIgdGl0bGU9IkltcG9ydGluZyBhIFdTREwgZmlsZSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImNyZWF0aW5nIFdTREwgZmlsZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RjcnR3c2RsLmh0bWwjdGNydHdzZGwiIHRpdGxlPSJDcmVhdGluZyBhIG5ldyBXU0RMIGZpbGUiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJlZGl0aW5nIFdTREwgZmlsZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RlZHR3c2RsLmh0bWwjdGVkdHdzZGwiIHRpdGxlPSJFZGl0aW5nIFdTREwgZmlsZXMiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJhZGRpbmcgc2VydmljZXMgdG8gV1NETCI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGFkZHNydmMuaHRtbCN0YWRkc3J2YyIgdGl0bGU9IkFkZGluZyBhIHNlcnZpY2UiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJhZGRpbmcgV1NETCBwb3J0cyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdGFkZHBvcnQuaHRtbCN0YWRkcG9ydCIgdGl0bGU9IkFkZGluZyBhIHBvcnQgdG8gYSBzZXJ2aWNlIi8+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0ic2V0dGluZyBwb3J0IHR5cGVzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90c2V0cHJ0dC5odG1sI3RzZXRwcnR0IiB0aXRsZT0iU2V0dGluZyBhIHBvcnQgdHlwZSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImJpbmRpbmdzIj4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJjcmVhdGluZyI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90c2V0YmluZC5odG1sI3RzZXRiaW5kIiB0aXRsZT0iU2V0dGluZyBhIGJpbmRpbmciLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgPC9lbnRyeT4KLSAgICA8ZW50cnkga2V5d29yZD0ic2V0dGluZyBXU0RMIGJpbmRpbmdzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90c2V0YmluZC5odG1sI3RzZXRiaW5kIiB0aXRsZT0iU2V0dGluZyBhIGJpbmRpbmciLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJhZGRpbmcgV1NETCBvcGVyYXRpb25zIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90YWRkb3Blci5odG1sI3RhZGRvcGVyIiB0aXRsZT0iQWRkaW5nIGFuIG9wZXJhdGlvbiIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImFkZGluZyBXU0RMIG1lc3NhZ2VzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90YWRkbWVzcy5odG1sI2FkZGluZ2FtZXNzYWdlIiB0aXRsZT0iQWRkaW5nIGEgbWVzc2FnZSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImFkZGluZyBXU0RMIG1lc3NhZ2UgcGFydHMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RhZGRwYXJ0Lmh0bWwjdGFkZHBhcnQiIHRpdGxlPSJBZGRpbmcgYSBwYXJ0IHRvIGEgbWVzc2FnZSIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImFkZGluZyBXU0RMIGltcG9ydCBzdGF0ZW1lbnRzIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90Y3J0aW1wdC5odG1sI3RjcnRpbXB0IiB0aXRsZT0iQ3JlYXRpbmcgYW4gaW1wb3J0IHN0YXRlbWVudCIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9ImNyZWF0aW5nIFdTREwgdHlwZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3RjcnR0eXBlLmh0bWwjdGNydHR5cGUiIHRpdGxlPSJDcmVhdGluZyBhIG5ldyB0eXBlIGZvciB5b3VyIFdTREwgZmlsZSIvPgotICAgIDwvZW50cnk+Ci0gIDwvZW50cnk+Ci08L2luZGV4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvcGx1Z2luLnByb3BlcnRpZXMgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjE2NDIxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBOTFNfTUVTU0FHRUZPUk1BVF9WQVIgCi0jIE5MU19FTkNPRElORz1VVEYtOCAKLQotcGx1Z2luTmFtZSAgICAgPSBXU0RMIEVkaXRvciBEb2N1bWVudGF0aW9uCi1wbHVnaW5Qcm92aWRlciA9IEVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3BsdWdpbi54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNjgzODAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+Ci08IS0tIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFRoaXMgaXMgdGhlIHBsdWdpbiBmb3IgZGVjbGFyaW5nIHRoZSBoZWxwICAgICAgICAgLS0+Ci08IS0tIGNvbnRyaWJ1dGlvbnMgZm9yIHVzaW5nIHRoZSB0b29sLiAgICAgICAgICAgICAgICAgLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci0KLTxwbHVnaW4+Ci0KLTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj4KLSAgICA8dG9jIGZpbGU9Indzd3NkbGVkaXRvcnRfdG9jLnhtbCIvPiAgIAotICAgIDx0b2MgZmlsZT0id3N3c2RsZWRpdG9yY190b2MueG1sIi8+Ci0gICAgICAgPGluZGV4IHBhdGg9ImluZGV4LyIvPgotICAgICAgCi08L2V4dGVuc2lvbj4KLTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuaW5kZXgiPgotICAgICAgPGluZGV4IGZpbGU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyaW5kZXgueG1sIi8+Ci08L2V4dGVuc2lvbj4KLTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuYmFzZS5sdWNlbmVTZWFyY2hQYXJ0aWNpcGFudHMiPgotICAgICAgPGJpbmRpbmcgcGFydGljaXBhbnRJZD0ib3JnLmVjbGlwc2UuaGVscC5iYXNlLnhodG1sIi8+Ci0gICA8L2V4dGVuc2lvbj4KLQotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkbWVzcy5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkbWVzcy5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjJlNTljLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZG1lc3MuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0iYWRkaW5nYW1lc3NhZ2UiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+QWRkaW5nIGEgbWVzc2FnZTwvdGl0bGU+Ci08c2hvcnRkZXNjPk1lc3NhZ2VzIHJlcHJlc2VudCBhbiBhYnN0cmFjdCBkZWZpbml0aW9uIG9mIHRoZSBkYXRhIGJlaW5nIHRyYW5zbWl0dGVkLgotQSBtZXNzYWdlIGNvbnNpc3RzIG9mIGxvZ2ljYWwgcGFydHMsIGVhY2ggb2Ygd2hpY2ggaXMgYXNzb2NpYXRlZCB3aXRoIGEgZGVmaW5pdGlvbgotd2l0aGluIHNvbWUgdHlwZSBzeXN0ZW0uIFdTREwgbWVzc2FnZXMgYXJlIHRvcCBsZXZlbCBvYmplY3RzIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQKLWJ5IGFuIG9wZXJhdGlvbidzIGlucHV0LCBvdXRwdXQgYW5kIGZhdWx0IGVsZW1lbnRzICh3aXRoaW4gYSBwb3J0IHR5cGUpLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybSBrZXlyZWY9InRhZGRtZXNzfDF8V2Vic2VydmljZXNhZGRpbmdXU0RMbWVzc2FnZXMiIHN0YXR1cz0idW5jaGFuZ2VkIj5XZWIKLXNlcnZpY2VzPGluZGV4dGVybT5hZGRpbmcgV1NETCBtZXNzYWdlczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0KLWtleXJlZj0idGFkZG1lc3N8MnxXU0RMbWVzc2FnZXMiIHN0YXR1cz0idW5jaGFuZ2VkIj5XU0RMIGZpbGVzPGluZGV4dGVybT5tZXNzYWdlczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08dGFza2JvZHk+Ci08cHJlcmVxPjwvcHJlcmVxPgotPGNvbnRleHQ+PHA+WW91IGNhbiBjcmVhdGUgYSBtZXNzYWdlIHVzaW5nIHRoZSBPdXRsaW5lIHZpZXcgYnkgcmlnaHQtY2xpY2tpbmcKLXRoZSA8Yj5NZXNzYWdlczwvYj4gZm9sZGVyIGFuZCBjbGlja2luZyA8Yj5BZGQgTWVzc2FnZTwvYj4uPC9wPjxwPlRvIGNyZWF0ZQotYSBuZXcgbWVzc2FnZSBmb3IgeW91ciBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCBlbGVtZW50LCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nCi1zdGVwczo8L3A+PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5JbiB0aGUgRGVzaWduIHZpZXcsIHJpZ2h0LWNsaWNrIHlvdXIgaW5wdXQsIG91dHB1dCwgb3IgZmF1bHQgZWxlbWVudAotYW5kIGNsaWNrIDxiPlNldCBNZXNzYWdlID4gTmV3IE1lc3NhZ2UuPC9iPjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+VHlwZSB0aGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBpbiB0aGUgPHVpY29udHJvbD5HZW5lcmFsPC91aWNvbnRyb2w+IHBhbmUKLW9mIHRoZSBQcm9wZXJ0aWVzIHZpZXcuPC9jbWQ+PGluZm8+VGhpcyBuYW1lIHNob3VsZCBiZSBhIHVuaXF1ZSBhbW9uZ3N0IGFsbAotbWVzc2FnZXMgZGVmaW5lZCB3aXRoaW4gdGhlIGVuY2xvc2luZyBXU0RMIGRvY3VtZW50LjwvaW5mbz48L3N0ZXA+Ci08c3RlcD48Y21kPlRoZSBuZXcgbWVzc2FnZSB3aWxsIGFwcGVhciBpbiB0aGUgRGVzaWduIHZpZXcgd2l0aGluIHRoZSBwb3J0Ci10eXBlLjwvY21kPjwvc3RlcD4KLTwvc3RlcHM+Ci08cG9zdHJlcT48cD4gPGI+Tm90ZTwvYj46IE1lc3NhZ2VzIGFyZSByZWZlcmVuY2VkIHdpdGhpbiBhIHBvcnQgdHlwZSAoc3BlY2lmaWNhbGx5Ci1ieSBhbiBvcGVyYXRpb24ncyBpbnB1dCwgb3V0cHV0IGFuZCBmYXVsdCBvYmplY3RzKS4gVGhlIGlucHV0LCBvdXRwdXQgYW5kCi1mYXVsdCBvYmplY3RzIHdpdGhpbiBhIGJpbmRpbmcgZG8gbm90IHJlZmVyZW5jZSBtZXNzYWdlcy4gSGVuY2UgeW91IGNhbm5vdAotY3JlYXRlIGEgbmV3IG1lc3NhZ2UgYnkgcmlnaHQgY2xpY2tpbmcgb24gYSBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCB3aXRoaW4KLWEgYmluZGluZyAodGhlc2UgYXJlIGFsc28ga25vd24gYXMgYmluZGluZyBpbnB1dCwgYmluZGluZyBvdXRwdXQgYW5kIGJpbmRpbmcKLWZhdWx0cykuPC9wPjxub3RlIHR5cGU9InRpcCI+WW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIGZvciB5b3VyIGlucHV0LAotb3V0cHV0LCBvciBmYXVsdCBlbGVtZW50IHVzaW5nIHRoZSBPdXRsaW5lIHZpZXcuIFVuZGVyIHRoZSAgPGI+UG9ydCBUeXBlczwvYj4gZm9sZGVyLAotcmlnaHQtY2xpY2sgeW91ciBlbGVtZW50IGFuZCBjbGljayA8Yj5TZXQgTWVzc2FnZSA+IEFkZCBNZXNzYWdlPC9iPi4gWW91cgotbWVzc2FnZSB3aWxsIGFwcGVhciBpbiB0aGUgT3V0bGluZSB2aWV3IHVuZGVyIHRoZSA8Yj5NZXNzYWdlczwvYj4gZm9sZGVyLjwvbm90ZT48L3Bvc3RyZXE+Ci08L3Rhc2tib2R5PgotPHRhc2sgaWQ9InJldXNpbmdhbWVzc2FnZSIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5SZXVzaW5nIGEgbWVzc2FnZTwvdGl0bGU+Ci08dGFza2JvZHk+Ci08cHJlcmVxPlRvIHJldXNlIGEgbWVzc2FnZSBmb3IgeW91ciBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCBlbGVtZW50LCBjb21wbGV0ZQotdGhlIGZvbGxvd2luZyBzdGVwczo8L3ByZXJlcT4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+SW4gdGhlIERlc2lnbiB2aWV3LCByaWdodC1jbGljayB5b3VyIGlucHV0LCBvdXRwdXQsIG9yIGZhdWx0IGVsZW1lbnQKLWFuZCBjbGljayAgPGI+U2V0IE1lc3NhZ2UgPiBFeGlzdGluZyBNZXNzYWdlLjwvYj48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkluIHRoZSA8Yj5OYW1lPC9iPiBmaWVsZCwgdHlwZSBhIHNlYXJjaCBzdHJpbmcgdG8gZmlsdGVyIHRoZSBsaXN0Ci1vciBsZWF2ZSB0aGUgZmllbGQgYmxhbmsgdG8gdmlldyBhbGw8L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPllvdSBjYW4gY2hhbmdlIHRoZSBzY29wZSBvZiB0aGUgbGlzdCBieSBzZWxlY3Rpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcKLW9wdGlvbnM6PC9jbWQ+PGluZm8+PHVsPgotPGxpPjxiPldvcmtzcGFjZTwvYj46IGxpc3RzIHRoZSBtZXNzYWdlcyBhdmFpbGFibGUgaW4geW91ciB3b3Jrc3BhY2UuPC9saT4KLTxsaT48Yj5FbmNsb3NpbmcgUHJvamVjdDwvYj46IGxpc3RzIHRoZSBtZXNzYWdlcyBhdmFpbGFibGUgaW4gdGhlIHByb2plY3QKLXRoYXQgY29udGFpbnMgeW91ciBmaWxlLjwvbGk+Ci08bGk+PGI+Q3VycmVudCBSZXNvdXJjZTwvYj46IGxpc3RzIHRoZSBtZXNzYWdlcyBhdmFpbGFibGUgaW4geW91ciBjdXJyZW50Ci1maWxlLjwvbGk+Ci08bGk+PGI+V29ya2luZyBTZXRzPC9iPjogbGlzdHMgdGhlIG1lc3NhZ2VzIGF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBzZXQgb2YKLWZpbGVzLiBUbyBzcGVjaWZ5IGEgd29ya2luZyBzZXQsIGNsaWNrIDxiPkNob29zZTwvYj4uIFlvdSBjYW4gc2VsZWN0IGZpbGVzCi1mcm9tIGFuIGV4aXN0aW5nIHdvcmtpbmcgc2V0IG9yIGNyZWF0ZSBhIG5ldyB3b3JraW5nIHNldC4gT25jZSB5b3UgaGF2ZSBzZWxlY3RlZAotdGhlIGZpbGVzLCBjbGljayA8Yj5PSzwvYj4uPC9saT4KLTwvdWw+PC9pbmZvPjwvc3RlcD4KLTxzdGVwPjxjbWQ+VGhlIGV4aXN0aW5nIG1lc3NhZ2VzIHdpbGwgYmUgbGlzdGVkLiBTZWxlY3Qgb25lIGFuZCBjbGljayAgPGI+T0s8L2I+LjwvY21kPgotPC9zdGVwPgotPC9zdGVwcz4KLTxwb3N0cmVxPjwvcG9zdHJlcT4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iaW1wb3J0aW5nYW1lc3NhZ2UiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+SW1wb3J0aW5nIGEgbWVzc2FnZTwvdGl0bGU+Ci08dGFza2JvZHk+Ci08cHJlcmVxPklmIHlvdSB3YW50IHRvIGltcG9ydCBhbiBleGlzdGluZyBtZXNzYWdlIGZvciB5b3VyIGlucHV0LCBvdXRwdXQsCi1vciBmYXVsdCBlbGVtZW50LCBmb2xsb3cgdGhlc2Ugc3RlcHM6PC9wcmVyZXE+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIHRoZSBEZXNpZ24gdmlldywgcmlnaHQtY2xpY2sgeW91ciBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCBlbGVtZW50Ci1hbmQgY2xpY2sgIDxiPlNldCBNZXNzYWdlID4gRXhpc3RpbmcgTWVzc2FnZS48L2I+PC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgPGI+TmFtZTwvYj4gZmllbGQsIHR5cGUgYSBzZWFyY2ggc3RyaW5nIHRvIGZpbHRlciB0aGUgbGlzdAotb3IgbGVhdmUgdGhlIGZpZWxkIGJsYW5rIHRvIHZpZXcgYWxsLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+WW91IGNhbiBpbXBvcnQgYSBtZXNzYWdlIGJ5IHNlbGVjdGluZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBvcHRpb25zOjwvY21kPgotPGluZm8+PHVsPgotPGxpPjxiPldvcmtzcGFjZTwvYj46IGxpc3RzIHRoZSBtZXNzYWdlcyBhdmFpbGFibGUgaW4geW91ciB3b3Jrc3BhY2UuPC9saT4KLTxsaT48Yj5FbmNsb3NpbmcgUHJvamVjdDwvYj46IGxpc3RzIHRoZSBtZXNzYWdlcyBhdmFpbGFibGUgaW4gdGhlIHByb2plY3QKLXRoYXQgY29udGFpbnMgeW91ciBmaWxlLjwvbGk+Ci08bGk+PGI+V29ya2luZyBTZXRzPC9iPjogbGlzdHMgdGhlIG1lc3NhZ2VzIGF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBzZXQgb2YKLWZpbGVzLiBUbyBzcGVjaWZ5IGEgd29ya2luZyBzZXQsIGNsaWNrIDxiPkNob29zZTwvYj4uIFlvdSBjYW4gc2VsZWN0IGZpbGVzCi1mcm9tIGFuIGV4aXN0aW5nIHdvcmtpbmcgc2V0IG9yIGNyZWF0ZSBhIG5ldyB3b3JraW5nIHNldC4gT25jZSB5b3UgaGF2ZSBzZWxlY3RlZAotdGhlIGZpbGVzLCBjbGljayA8Yj5PSzwvYj4uPC9saT4KLTwvdWw+PC9pbmZvPjwvc3RlcD4KLTxzdGVwPjxjbWQ+VGhlIG1lc3NhZ2VzIHdpbGwgYmUgbGlzdGVkLiBTZWxlY3Qgb25lIGFuZCBjbGljayA8Yj5PSzwvYj4uPC9jbWQ+Ci08L3N0ZXA+Ci08L3N0ZXBzPgotPHBvc3RyZXE+WW91IGNhbiBub3cgYWRkIHBhcnRzIHRvIHlvdXIgbWVzc2FnZS4gUGFydHMgYXJlIGEgZmxleGlibGUgbWVjaGFuaXNtCi1mb3IgZGVzY3JpYmluZyB0aGUgbG9naWNhbCBhYnN0cmFjdCBjb250ZW50IG9mIGEgbWVzc2FnZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sCi1zZWUgPHhyZWYgZm9ybWF0PSJodG1sIiBocmVmPSIuLi90YXNrcy90YWRkcGFydC5kaXRhIiBzY29wZT0icGVlciI+QWRkaW5nCi1hIHBhcnQgdG8gYSBtZXNzYWdlPC94cmVmPi48L3Bvc3RyZXE+Ci08L3Rhc2tib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgY29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vY29uY2VwdHMvY3dzZGxlZC5kaXRhIiBzY29wZT0ibG9jYWwiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgdGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0idGNydHdzZGwuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08bGluayBocmVmPSJ0ZWR0d3NkbC5kaXRhIiBzY29wZT0ibG9jYWwiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L3Rhc2s+Ci08L3Rhc2s+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRtZXNzLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRtZXNzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiZTQ5YWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkbWVzcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJ0YXNrIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkFkZGluZyBhIG1lc3NhZ2UiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iTWVzc2FnZXMgcmVwcmVzZW50IGFuIGFic3RyYWN0IGRlZmluaXRpb24gb2YgdGhlIGRhdGEgYmVpbmcgdHJhbnNtaXR0ZWQuIEEgbWVzc2FnZSBjb25zaXN0cyBvZiBsb2dpY2FsIHBhcnRzLCBlYWNoIG9mIHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGRlZmluaXRpb24gd2l0aGluIHNvbWUgdHlwZSBzeXN0ZW0uIFdTREwgbWVzc2FnZXMgYXJlIHRvcCBsZXZlbCBvYmplY3RzIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgYW4gb3BlcmF0aW9uJ3MgaW5wdXQsIG91dHB1dCBhbmQgZmF1bHQgZWxlbWVudHMgKHdpdGhpbiBhIHBvcnQgdHlwZSkuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik1lc3NhZ2VzIHJlcHJlc2VudCBhbiBhYnN0cmFjdCBkZWZpbml0aW9uIG9mIHRoZSBkYXRhIGJlaW5nIHRyYW5zbWl0dGVkLiBBIG1lc3NhZ2UgY29uc2lzdHMgb2YgbG9naWNhbCBwYXJ0cywgZWFjaCBvZiB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggYSBkZWZpbml0aW9uIHdpdGhpbiBzb21lIHR5cGUgc3lzdGVtLiBXU0RMIG1lc3NhZ2VzIGFyZSB0b3AgbGV2ZWwgb2JqZWN0cyB0aGF0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IGFuIG9wZXJhdGlvbidzIGlucHV0LCBvdXRwdXQgYW5kIGZhdWx0IGVsZW1lbnRzICh3aXRoaW4gYSBwb3J0IHR5cGUpLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgYWRkaW5nIFdTREwgbWVzc2FnZXMsIFdTREwgZmlsZXMsIG1lc3NhZ2VzIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBhZGRpbmcgV1NETCBtZXNzYWdlcywgV1NETCBmaWxlcywgbWVzc2FnZXMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9ImFkZGluZ2FtZXNzYWdlIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+QWRkaW5nIGEgbWVzc2FnZTwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0iYWRkaW5nYW1lc3NhZ2UiPjxhIG5hbWU9ImFkZGluZ2FtZXNzYWdlIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5BZGRpbmcgYSBtZXNzYWdlPC9oMT4KLQotCi0KLTxkaXY+PHA+TWVzc2FnZXMgcmVwcmVzZW50IGFuIGFic3RyYWN0IGRlZmluaXRpb24gb2YgdGhlIGRhdGEgYmVpbmcgdHJhbnNtaXR0ZWQuCi1BIG1lc3NhZ2UgY29uc2lzdHMgb2YgbG9naWNhbCBwYXJ0cywgZWFjaCBvZiB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggYSBkZWZpbml0aW9uCi13aXRoaW4gc29tZSB0eXBlIHN5c3RlbS4gV1NETCBtZXNzYWdlcyBhcmUgdG9wIGxldmVsIG9iamVjdHMgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZAotYnkgYW4gb3BlcmF0aW9uJ3MgaW5wdXQsIG91dHB1dCBhbmQgZmF1bHQgZWxlbWVudHMgKHdpdGhpbiBhIHBvcnQgdHlwZSkuPC9wPgotCi08ZGl2IGNsYXNzPSJwIiAvPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5Zb3UgY2FuIGNyZWF0ZSBhIG1lc3NhZ2UgdXNpbmcgdGhlIE91dGxpbmUgdmlldyBieSByaWdodC1jbGlja2luZwotdGhlIDxzdHJvbmc+TWVzc2FnZXM8L3N0cm9uZz4gZm9sZGVyIGFuZCBjbGlja2luZyA8c3Ryb25nPkFkZCBNZXNzYWdlPC9zdHJvbmc+LjwvcD4KLTxwPlRvIGNyZWF0ZQotYSBuZXcgbWVzc2FnZSBmb3IgeW91ciBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCBlbGVtZW50LCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nCi1zdGVwczo8L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgRGVzaWduIHZpZXcsIHJpZ2h0LWNsaWNrIHlvdXIgaW5wdXQsIG91dHB1dCwgb3IgZmF1bHQgZWxlbWVudAotYW5kIGNsaWNrIDxzdHJvbmc+U2V0IE1lc3NhZ2UgJmd0OyBOZXcgTWVzc2FnZS48L3N0cm9uZz48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5UeXBlIHRoZSBuYW1lIG9mIHRoZSBtZXNzYWdlIGluIHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5HZW5lcmFsPC9zcGFuPiBwYW5lCi1vZiB0aGUgUHJvcGVydGllcyB2aWV3Ljwvc3Bhbj4gVGhpcyBuYW1lIHNob3VsZCBiZSBhIHVuaXF1ZSBhbW9uZ3N0IGFsbAotbWVzc2FnZXMgZGVmaW5lZCB3aXRoaW4gdGhlIGVuY2xvc2luZyBXU0RMIGRvY3VtZW50LjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+VGhlIG5ldyBtZXNzYWdlIHdpbGwgYXBwZWFyIGluIHRoZSBEZXNpZ24gdmlldyB3aXRoaW4gdGhlIHBvcnQKLXR5cGUuPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPiA8c3Ryb25nPk5vdGU8L3N0cm9uZz46IE1lc3NhZ2VzIGFyZSByZWZlcmVuY2VkIHdpdGhpbiBhIHBvcnQgdHlwZSAoc3BlY2lmaWNhbGx5Ci1ieSBhbiBvcGVyYXRpb24ncyBpbnB1dCwgb3V0cHV0IGFuZCBmYXVsdCBvYmplY3RzKS4gVGhlIGlucHV0LCBvdXRwdXQgYW5kCi1mYXVsdCBvYmplY3RzIHdpdGhpbiBhIGJpbmRpbmcgZG8gbm90IHJlZmVyZW5jZSBtZXNzYWdlcy4gSGVuY2UgeW91IGNhbm5vdAotY3JlYXRlIGEgbmV3IG1lc3NhZ2UgYnkgcmlnaHQgY2xpY2tpbmcgb24gYSBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCB3aXRoaW4KLWEgYmluZGluZyAodGhlc2UgYXJlIGFsc28ga25vd24gYXMgYmluZGluZyBpbnB1dCwgYmluZGluZyBvdXRwdXQgYW5kIGJpbmRpbmcKLWZhdWx0cykuPC9wPgotPGRpdiBjbGFzcz0idGlwIj48c3BhbiBjbGFzcz0idGlwdGl0bGUiPlRpcDo8L3NwYW4+IFlvdSBjYW4gYWxzbyBjcmVhdGUgYSBuZXcgbWVzc2FnZSBmb3IgeW91ciBpbnB1dCwKLW91dHB1dCwgb3IgZmF1bHQgZWxlbWVudCB1c2luZyB0aGUgT3V0bGluZSB2aWV3LiBVbmRlciB0aGUgIDxzdHJvbmc+UG9ydCBUeXBlczwvc3Ryb25nPiBmb2xkZXIsCi1yaWdodC1jbGljayB5b3VyIGVsZW1lbnQgYW5kIGNsaWNrIDxzdHJvbmc+U2V0IE1lc3NhZ2UgJmd0OyBBZGQgTWVzc2FnZTwvc3Ryb25nPi4gWW91cgotbWVzc2FnZSB3aWxsIGFwcGVhciBpbiB0aGUgT3V0bGluZSB2aWV3IHVuZGVyIHRoZSA8c3Ryb25nPk1lc3NhZ2VzPC9zdHJvbmc+IGZvbGRlci48L2Rpdj4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgeG1sOmxhbmc9ImVuLXVzIiBpZD0icmV1c2luZ2FtZXNzYWdlIj48YSBuYW1lPSJyZXVzaW5nYW1lc3NhZ2UiPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+UmV1c2luZyBhIG1lc3NhZ2U8L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0icCI+VG8gcmV1c2UgYSBtZXNzYWdlIGZvciB5b3VyIGlucHV0LCBvdXRwdXQsIG9yIGZhdWx0IGVsZW1lbnQsIGNvbXBsZXRlCi10aGUgZm9sbG93aW5nIHN0ZXBzOjwvZGl2PgotCi08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBEZXNpZ24gdmlldywgcmlnaHQtY2xpY2sgeW91ciBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCBlbGVtZW50Ci1hbmQgY2xpY2sgIDxzdHJvbmc+U2V0IE1lc3NhZ2UgJmd0OyBFeGlzdGluZyBNZXNzYWdlLjwvc3Ryb25nPjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSA8c3Ryb25nPk5hbWU8L3N0cm9uZz4gZmllbGQsIHR5cGUgYSBzZWFyY2ggc3RyaW5nIHRvIGZpbHRlciB0aGUgbGlzdAotb3IgbGVhdmUgdGhlIGZpZWxkIGJsYW5rIHRvIHZpZXcgYWxsPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+WW91IGNhbiBjaGFuZ2UgdGhlIHNjb3BlIG9mIHRoZSBsaXN0IGJ5IHNlbGVjdGluZyBvbmUgb2YgdGhlIGZvbGxvd2luZwotb3B0aW9uczo8L3NwYW4+IDx1bD4KLTxsaT48c3Ryb25nPldvcmtzcGFjZTwvc3Ryb25nPjogbGlzdHMgdGhlIG1lc3NhZ2VzIGF2YWlsYWJsZSBpbiB5b3VyIHdvcmtzcGFjZS48L2xpPgotCi08bGk+PHN0cm9uZz5FbmNsb3NpbmcgUHJvamVjdDwvc3Ryb25nPjogbGlzdHMgdGhlIG1lc3NhZ2VzIGF2YWlsYWJsZSBpbiB0aGUgcHJvamVjdAotdGhhdCBjb250YWlucyB5b3VyIGZpbGUuPC9saT4KLQotPGxpPjxzdHJvbmc+Q3VycmVudCBSZXNvdXJjZTwvc3Ryb25nPjogbGlzdHMgdGhlIG1lc3NhZ2VzIGF2YWlsYWJsZSBpbiB5b3VyIGN1cnJlbnQKLWZpbGUuPC9saT4KLQotPGxpPjxzdHJvbmc+V29ya2luZyBTZXRzPC9zdHJvbmc+OiBsaXN0cyB0aGUgbWVzc2FnZXMgYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIHNldCBvZgotZmlsZXMuIFRvIHNwZWNpZnkgYSB3b3JraW5nIHNldCwgY2xpY2sgPHN0cm9uZz5DaG9vc2U8L3N0cm9uZz4uIFlvdSBjYW4gc2VsZWN0IGZpbGVzCi1mcm9tIGFuIGV4aXN0aW5nIHdvcmtpbmcgc2V0IG9yIGNyZWF0ZSBhIG5ldyB3b3JraW5nIHNldC4gT25jZSB5b3UgaGF2ZSBzZWxlY3RlZAotdGhlIGZpbGVzLCBjbGljayA8c3Ryb25nPk9LPC9zdHJvbmc+LjwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPlRoZSBleGlzdGluZyBtZXNzYWdlcyB3aWxsIGJlIGxpc3RlZC4gU2VsZWN0IG9uZSBhbmQgY2xpY2sgIDxzdHJvbmc+T0s8L3N0cm9uZz4uPC9zcGFuPgotPC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiIgLz4KLQotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiB4bWw6bGFuZz0iZW4tdXMiIGlkPSJpbXBvcnRpbmdhbWVzc2FnZSI+PGEgbmFtZT0iaW1wb3J0aW5nYW1lc3NhZ2UiPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+SW1wb3J0aW5nIGEgbWVzc2FnZTwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJwIj5JZiB5b3Ugd2FudCB0byBpbXBvcnQgYW4gZXhpc3RpbmcgbWVzc2FnZSBmb3IgeW91ciBpbnB1dCwgb3V0cHV0LAotb3IgZmF1bHQgZWxlbWVudCwgZm9sbG93IHRoZXNlIHN0ZXBzOjwvZGl2PgotCi08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBEZXNpZ24gdmlldywgcmlnaHQtY2xpY2sgeW91ciBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCBlbGVtZW50Ci1hbmQgY2xpY2sgIDxzdHJvbmc+U2V0IE1lc3NhZ2UgJmd0OyBFeGlzdGluZyBNZXNzYWdlLjwvc3Ryb25nPjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSA8c3Ryb25nPk5hbWU8L3N0cm9uZz4gZmllbGQsIHR5cGUgYSBzZWFyY2ggc3RyaW5nIHRvIGZpbHRlciB0aGUgbGlzdAotb3IgbGVhdmUgdGhlIGZpZWxkIGJsYW5rIHRvIHZpZXcgYWxsLjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPllvdSBjYW4gaW1wb3J0IGEgbWVzc2FnZSBieSBzZWxlY3Rpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9uczo8L3NwYW4+Ci0gPHVsPgotPGxpPjxzdHJvbmc+V29ya3NwYWNlPC9zdHJvbmc+OiBsaXN0cyB0aGUgbWVzc2FnZXMgYXZhaWxhYmxlIGluIHlvdXIgd29ya3NwYWNlLjwvbGk+Ci0KLTxsaT48c3Ryb25nPkVuY2xvc2luZyBQcm9qZWN0PC9zdHJvbmc+OiBsaXN0cyB0aGUgbWVzc2FnZXMgYXZhaWxhYmxlIGluIHRoZSBwcm9qZWN0Ci10aGF0IGNvbnRhaW5zIHlvdXIgZmlsZS48L2xpPgotCi08bGk+PHN0cm9uZz5Xb3JraW5nIFNldHM8L3N0cm9uZz46IGxpc3RzIHRoZSBtZXNzYWdlcyBhdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgc2V0IG9mCi1maWxlcy4gVG8gc3BlY2lmeSBhIHdvcmtpbmcgc2V0LCBjbGljayA8c3Ryb25nPkNob29zZTwvc3Ryb25nPi4gWW91IGNhbiBzZWxlY3QgZmlsZXMKLWZyb20gYW4gZXhpc3Rpbmcgd29ya2luZyBzZXQgb3IgY3JlYXRlIGEgbmV3IHdvcmtpbmcgc2V0LiBPbmNlIHlvdSBoYXZlIHNlbGVjdGVkCi10aGUgZmlsZXMsIGNsaWNrIDxzdHJvbmc+T0s8L3N0cm9uZz4uPC9saT4KLQotPC91bD4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+VGhlIG1lc3NhZ2VzIHdpbGwgYmUgbGlzdGVkLiBTZWxlY3Qgb25lIGFuZCBjbGljayA8c3Ryb25nPk9LPC9zdHJvbmc+Ljwvc3Bhbj4KLTwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPllvdSBjYW4gbm93IGFkZCBwYXJ0cyB0byB5b3VyIG1lc3NhZ2UuIFBhcnRzIGFyZSBhIGZsZXhpYmxlIG1lY2hhbmlzbQotZm9yIGRlc2NyaWJpbmcgdGhlIGxvZ2ljYWwgYWJzdHJhY3QgY29udGVudCBvZiBhIG1lc3NhZ2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLAotc2VlIDxhIGhyZWY9InRhZGRwYXJ0Lmh0bWwiPkFkZGluZyBhIHBhcnQgdG8gYSBtZXNzYWdlPC9hPi48L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIGNvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzZGxlZC5odG1sIiB0aXRsZT0iVGhlIFdTREwgZWRpdG9yIGFsbG93cyB5b3UgdG8gZWFzaWx5IGFuZCBncmFwaGljYWxseSBjcmVhdGUsIG1vZGlmeSwgdmlldywgYW5kIHZhbGlkYXRlIFdTREwgZmlsZXMuIj5FZGl0aW5nIFdTREwgZmlsZXMgd2l0aCB0aGUgV1NETCBFZGl0b3I8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgdGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJ0Y3J0d3NkbC5odG1sIiB0aXRsZT0iWW91IGNhbiBjcmVhdGUgYSBuZXcsIGVtcHR5IFdTREwgZmlsZSwgdGhlbiBlZGl0IGl0IHVzaW5nIHRoZSBXU0RMIGVkaXRvci4iPkNyZWF0aW5nIGEgbmV3IFdTREwgZmlsZTwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idGVkdHdzZGwuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgY3JlYXRlZCBhIFdTREwgZmlsZSwgeW91IGNhbiBlZGl0IGl0IGluIHRoZSBXU0RMIGVkaXRvci4gWW91IGNhbiBhbHNvIGltcG9ydCBXU0RMIGZpbGVzIHlvdSBoYXZlIGNyZWF0ZWQgaW50byB0aGUgd29ya2JlbmNoIGFuZCBlZGl0IHRoZW0gaW4gdGhlIFdTREwgZWRpdG9yLiI+RWRpdGluZyBXU0RMIGZpbGVzPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLQotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkb3Blci5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkb3Blci5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzFjMzgzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZG9wZXIuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0YWRkb3BlciIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5BZGRpbmcgYW4gb3BlcmF0aW9uPC90aXRsZT4KLTxzaG9ydGRlc2M+QW4gb3BlcmF0aW9uIG5hbWVzIHRoZSBvcGVyYXRpb24gYW5kIGxpc3RzIHRoZSBleHBlY3RlZCBpbnB1dHMKLWFuZCBvdXRwdXRzLiBUaGUgb3BlcmF0aW9uIGVsZW1lbnQgbWF5IGFsc28gY29udGFpbiBhIGZhdWx0IHN1Yi1lbGVtZW50IHRoYXQKLWRlc2NyaWJlcyBhbnkgZXJyb3IgZGF0YSB0aGUgb3BlcmF0aW9uIG1heSByZXR1cm4uPC9zaG9ydGRlc2M+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+YWRkaW5nIFdTREwgb3BlcmF0aW9uczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5XU0RMIGZpbGVzPGluZGV4dGVybT5vcGVyYXRpb25zPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+PC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08dGFza2JvZHk+Ci08Y29udGV4dD5Vc2luZyB0aGVzZSwgeW91IGNhbiBkZWNsYXJlIGZvdXIgdHJhbnNtaXNzaW9uIHByaW1pdGl2ZXMgdGhhdCBhbgotZW5kcG9pbnQgY2FuIHN1cHBvcnQ6PHVsPgotPGxpPiA8Yj5PbmUtd2F5PC9iPjogdGhlIGVuZHBvaW50IHJlY2VpdmVzIGEgbWVzc2FnZS48L2xpPgotPGxpPiA8Yj5SZXF1ZXN0LXJlc3BvbnNlPC9iPjogdGhlIGVuZHBvaW50IHJlY2VpdmVzIGEgbWVzc2FnZSwgYW5kIHNlbmRzIGEKLWNvcnJlbGF0ZWQgbWVzc2FnZS48L2xpPgotPGxpPiA8Yj5Tb2xpY2l0LXJlc3BvbnNlPC9iPjogdGhlIGVuZHBvaW50IHNlbmRzIGEgbWVzc2FnZSwgYW5kIHJlY2VpdmVzIGEKLWNvcnJlbGF0ZWQgbWVzc2FnZS48L2xpPgotPGxpPiA8Yj5Ob3RpZmljYXRpb248L2I+OiB0aGUgZW5kcG9pbnQgc2VuZHMgYSBtZXNzYWdlLjwvbGk+Ci08L3VsPjxwPllvdSBjYW4gYWRkIGFuIG9wZXJhdGlvbiB0byBhIHBvcnQgdHlwZSBvciBhIHBvcnQgYmluZGluZy48L3A+PHA+VG8KLWFkZCBhbiBvcGVyYXRpb24gdG8gYSBwb3J0IHR5cGUsIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+SW4gdGhlIERlc2lnbiB2aWV3LCByaWdodC1jbGljayB5b3VyIHBvcnQgdHlwZS48L2NtZD48aW5mbz5DbGljayA8Yj5BZGQKLU9wZXJhdGlvbjwvYj4uIFRvIHNlbGVjdCB0aGUgbmV3IG9wZXJhdGlvbiwgY2xpY2sgdGhlIG9wZXJhdGlvbiBpbiB0aGUgcG9ydAotdHlwZSBvYmplY3QuPC9pbmZvPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIFByb3BlcnRpZXMgdmlldywgY2xpY2sgdGhlIDxiPkdlbmVyYWw8L2I+IHBhbmUuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgPGI+TmFtZTwvYj4gZmllbGQsIHR5cGUgdGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi48L2NtZD4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+UmlnaHQgY2xpY2sgb24gdGhlIG9wZXJhdGlvbiB0byBhZGQgaW5wdXQsIG91dHB1dCBvciBmYXVsdCBvYmplY3RzLjwvY21kPgotPGluZm8+RGVwZW5kaW5nIG9uIGFuIG9wZXJhdGlvbidzIGlucHV0cyBhbmQgb3V0cHV0cyBpdCBjYW4gYmUgY2xhc3NpZmllZAotYXMgZm9sbG93czo8dWw+Ci08bGk+PGI+T25lIHdheSBvcGVyYXRpb248L2I+OiBpbnB1dCA8L2xpPgotPGxpPjxiPlJlcXVlc3QgcmVzcG9uc2Ugb3BlcmF0aW9uPC9iPjogaW5wdXQsIG91dHB1dCA8L2xpPgotPGxpPjxiPiBTb2xpY2l0IHJlc3BvbnNlIG9wZXJhdGlvbjwvYj46IG91dHB1dCwgaW5wdXQgPC9saT4KLTxsaT48Yj5Ob3RpZmljYXRpb24gb3BlcmF0aW9uPC9iPjogb3V0cHV0PC9saT4KLTwvdWw+PC9pbmZvPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIFByb3BlcnRpZXMgdmlldywgdHlwZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9wZXJhdGlvbgoteW91IHdpc2ggdGhlIHVzZXIgdG8gcmVhZCBpbiB0aGUgIDxiPkRvY3VtZW50YXRpb248L2I+IHBhbmUuPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+PHA+IDxiPlRpcDwvYj46IFlvdSBjYW4gYWxzbyBjcmVhdGUgYSBuZXcgb3BlcmF0aW9uIGZvciB5b3VyIHBvcnQKLXR5cGUgdXNpbmcgdGhlIE91dGxpbmUgdmlldy4gUmlnaHQgY2xpY2sgb24gYSBwb3J0IHR5cGUgaW4gdGhlIDx1aWNvbnRyb2w+UG9ydAotVHlwZTwvdWljb250cm9sPiBmb2xkZXIgYW5kIHNlbGVjdCA8dWljb250cm9sPkFkZCBPcGVyYXRpb248L3VpY29udHJvbD4uPC9wPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIGNvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIHRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InRjcnR3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPGxpbmsgaHJlZj0idGVkdHdzZGwuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkb3Blci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkb3Blci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzkxNGIzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZG9wZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJBZGRpbmcgYW4gb3BlcmF0aW9uIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IkFuIG9wZXJhdGlvbiBuYW1lcyB0aGUgb3BlcmF0aW9uIGFuZCBsaXN0cyB0aGUgZXhwZWN0ZWQgaW5wdXRzIGFuZCBvdXRwdXRzLiBUaGUgb3BlcmF0aW9uIGVsZW1lbnQgbWF5IGFsc28gY29udGFpbiBhIGZhdWx0IHN1Yi1lbGVtZW50IHRoYXQgZGVzY3JpYmVzIGFueSBlcnJvciBkYXRhIHRoZSBvcGVyYXRpb24gbWF5IHJldHVybi4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQW4gb3BlcmF0aW9uIG5hbWVzIHRoZSBvcGVyYXRpb24gYW5kIGxpc3RzIHRoZSBleHBlY3RlZCBpbnB1dHMgYW5kIG91dHB1dHMuIFRoZSBvcGVyYXRpb24gZWxlbWVudCBtYXkgYWxzbyBjb250YWluIGEgZmF1bHQgc3ViLWVsZW1lbnQgdGhhdCBkZXNjcmliZXMgYW55IGVycm9yIGRhdGEgdGhlIG9wZXJhdGlvbiBtYXkgcmV0dXJuLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgYWRkaW5nIFdTREwgb3BlcmF0aW9ucywgV1NETCBmaWxlcywgb3BlcmF0aW9ucyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgYWRkaW5nIFdTREwgb3BlcmF0aW9ucywgV1NETCBmaWxlcywgb3BlcmF0aW9ucyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idGNydHdzZGwuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idGVkdHdzZGwuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0YWRkb3BlciIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPkFkZGluZyBhbiBvcGVyYXRpb248L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InRhZGRvcGVyIj48YSBuYW1lPSJ0YWRkb3BlciI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+QWRkaW5nIGFuIG9wZXJhdGlvbjwvaDE+Ci0KLQotCi08ZGl2PjxwPkFuIG9wZXJhdGlvbiBuYW1lcyB0aGUgb3BlcmF0aW9uIGFuZCBsaXN0cyB0aGUgZXhwZWN0ZWQgaW5wdXRzCi1hbmQgb3V0cHV0cy4gVGhlIG9wZXJhdGlvbiBlbGVtZW50IG1heSBhbHNvIGNvbnRhaW4gYSBmYXVsdCBzdWItZWxlbWVudCB0aGF0Ci1kZXNjcmliZXMgYW55IGVycm9yIGRhdGEgdGhlIG9wZXJhdGlvbiBtYXkgcmV0dXJuLjwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+VXNpbmcgdGhlc2UsIHlvdSBjYW4gZGVjbGFyZSBmb3VyIHRyYW5zbWlzc2lvbiBwcmltaXRpdmVzIHRoYXQgYW4KLWVuZHBvaW50IGNhbiBzdXBwb3J0Ojx1bD4KLTxsaT4gPHN0cm9uZz5PbmUtd2F5PC9zdHJvbmc+OiB0aGUgZW5kcG9pbnQgcmVjZWl2ZXMgYSBtZXNzYWdlLjwvbGk+Ci0KLTxsaT4gPHN0cm9uZz5SZXF1ZXN0LXJlc3BvbnNlPC9zdHJvbmc+OiB0aGUgZW5kcG9pbnQgcmVjZWl2ZXMgYSBtZXNzYWdlLCBhbmQgc2VuZHMgYQotY29ycmVsYXRlZCBtZXNzYWdlLjwvbGk+Ci0KLTxsaT4gPHN0cm9uZz5Tb2xpY2l0LXJlc3BvbnNlPC9zdHJvbmc+OiB0aGUgZW5kcG9pbnQgc2VuZHMgYSBtZXNzYWdlLCBhbmQgcmVjZWl2ZXMgYQotY29ycmVsYXRlZCBtZXNzYWdlLjwvbGk+Ci0KLTxsaT4gPHN0cm9uZz5Ob3RpZmljYXRpb248L3N0cm9uZz46IHRoZSBlbmRwb2ludCBzZW5kcyBhIG1lc3NhZ2UuPC9saT4KLQotPC91bD4KLTxwPllvdSBjYW4gYWRkIGFuIG9wZXJhdGlvbiB0byBhIHBvcnQgdHlwZSBvciBhIHBvcnQgYmluZGluZy48L3A+Ci08cD5UbwotYWRkIGFuIG9wZXJhdGlvbiB0byBhIHBvcnQgdHlwZSwgY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgRGVzaWduIHZpZXcsIHJpZ2h0LWNsaWNrIHlvdXIgcG9ydCB0eXBlLjwvc3Bhbj4gQ2xpY2sgPHN0cm9uZz5BZGQKLU9wZXJhdGlvbjwvc3Ryb25nPi4gVG8gc2VsZWN0IHRoZSBuZXcgb3BlcmF0aW9uLCBjbGljayB0aGUgb3BlcmF0aW9uIGluIHRoZSBwb3J0Ci10eXBlIG9iamVjdC48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBQcm9wZXJ0aWVzIHZpZXcsIGNsaWNrIHRoZSA8c3Ryb25nPkdlbmVyYWw8L3N0cm9uZz4gcGFuZS48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgPHN0cm9uZz5OYW1lPC9zdHJvbmc+IGZpZWxkLCB0eXBlIHRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uPC9zcGFuPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5SaWdodCBjbGljayBvbiB0aGUgb3BlcmF0aW9uIHRvIGFkZCBpbnB1dCwgb3V0cHV0IG9yIGZhdWx0IG9iamVjdHMuPC9zcGFuPgotIERlcGVuZGluZyBvbiBhbiBvcGVyYXRpb24ncyBpbnB1dHMgYW5kIG91dHB1dHMgaXQgY2FuIGJlIGNsYXNzaWZpZWQKLWFzIGZvbGxvd3M6PHVsPgotPGxpPjxzdHJvbmc+T25lIHdheSBvcGVyYXRpb248L3N0cm9uZz46IGlucHV0IDwvbGk+Ci0KLTxsaT48c3Ryb25nPlJlcXVlc3QgcmVzcG9uc2Ugb3BlcmF0aW9uPC9zdHJvbmc+OiBpbnB1dCwgb3V0cHV0IDwvbGk+Ci0KLTxsaT48c3Ryb25nPiBTb2xpY2l0IHJlc3BvbnNlIG9wZXJhdGlvbjwvc3Ryb25nPjogb3V0cHV0LCBpbnB1dCA8L2xpPgotCi08bGk+PHN0cm9uZz5Ob3RpZmljYXRpb24gb3BlcmF0aW9uPC9zdHJvbmc+OiBvdXRwdXQ8L2xpPgotCi08L3VsPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgUHJvcGVydGllcyB2aWV3LCB0eXBlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3BlcmF0aW9uCi15b3Ugd2lzaCB0aGUgdXNlciB0byByZWFkIGluIHRoZSAgPHN0cm9uZz5Eb2N1bWVudGF0aW9uPC9zdHJvbmc+IHBhbmUuPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPiA8c3Ryb25nPlRpcDwvc3Ryb25nPjogWW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBvcGVyYXRpb24gZm9yIHlvdXIgcG9ydAotdHlwZSB1c2luZyB0aGUgT3V0bGluZSB2aWV3LiBSaWdodCBjbGljayBvbiBhIHBvcnQgdHlwZSBpbiB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+UG9ydAotVHlwZTwvc3Bhbj4gZm9sZGVyIGFuZCBzZWxlY3QgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWRkIE9wZXJhdGlvbjwvc3Bhbj4uPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBjb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCIgdGl0bGU9IlRoZSBXU0RMIGVkaXRvciBhbGxvd3MgeW91IHRvIGVhc2lseSBhbmQgZ3JhcGhpY2FsbHkgY3JlYXRlLCBtb2RpZnksIHZpZXcsIGFuZCB2YWxpZGF0ZSBXU0RMIGZpbGVzLiI+RWRpdGluZyBXU0RMIGZpbGVzIHdpdGggdGhlIFdTREwgRWRpdG9yPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIHRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0idGNydHdzZGwuaHRtbCIgdGl0bGU9IllvdSBjYW4gY3JlYXRlIGEgbmV3LCBlbXB0eSBXU0RMIGZpbGUsIHRoZW4gZWRpdCBpdCB1c2luZyB0aGUgV1NETCBlZGl0b3IuIj5DcmVhdGluZyBhIG5ldyBXU0RMIGZpbGU8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRlZHR3c2RsLmh0bWwiIHRpdGxlPSJPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgYSBXU0RMIGZpbGUsIHlvdSBjYW4gZWRpdCBpdCBpbiB0aGUgV1NETCBlZGl0b3IuIFlvdSBjYW4gYWxzbyBpbXBvcnQgV1NETCBmaWxlcyB5b3UgaGF2ZSBjcmVhdGVkIGludG8gdGhlIHdvcmtiZW5jaCBhbmQgZWRpdCB0aGVtIGluIHRoZSBXU0RMIGVkaXRvci4iPkVkaXRpbmcgV1NETCBmaWxlczwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkcGFydC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkcGFydC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzI4N2JjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZHBhcnQuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0YWRkcGFydCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5BZGRpbmcgYSBwYXJ0IHRvIGEgbWVzc2FnZTwvdGl0bGU+Ci08c2hvcnRkZXNjPkFsbCBtZXNzYWdlcyBjb250YWluIG9uZSBvciBtb3JlIHBhcnRzLiBQYXJ0cyBhcmUgYSBmbGV4aWJsZSBtZWNoYW5pc20KLWZvciBkZXNjcmliaW5nIHRoZSBsb2dpY2FsIGFic3RyYWN0IGNvbnRlbnQgb2YgYSBtZXNzYWdlLiBUaGUgbWVzc2FnZSBkZWZpbml0aW9uCi1hc3NvY2lhdGVzIGVhY2ggcGFydCB3aXRoIGEgdHlwZSB1c2luZyBhIG1lc3NhZ2UtdHlwaW5nIGF0dHJpYnV0ZS48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5hZGRpbmcgV1NETCBtZXNzYWdlIHBhcnRzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08aW5kZXh0ZXJtPldTREwgZmlsZXM8aW5kZXh0ZXJtPm1lc3NhZ2UgcGFydHM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRvIGFkZCBhIHBhcnQgdG8gYSBtZXNzYWdlLCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIERlc2lnbiB2aWV3LCByaWdodC1jbGljayBhbiBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCBvYmplY3QgYW5kCi1jbGljayA8Yj5BZGQgUGFydDwvYj4uPC9jbWQ+PHN0ZXByZXN1bHQ+VGhlIHBhcnQgaXMgYWRkZWQgdG8gdGhlIGlucHV0LCBvdXRwdXQsCi1vciBmYXVsdCdzIG1lc3NhZ2UgcmVmZXJlbmNlLiBUbyBzZWxlY3QgdGhlIHBhcnQsIGNsaWNrIHRoZSBwYXJ0IGluIHRoZSBwb3J0Ci10eXBlIG9iamVjdC48L3N0ZXByZXN1bHQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgUHJvcGVydGllcyB2aWV3LCBjbGljayB0aGUgPGI+R2VuZXJhbDwvYj4gcGFuZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkluIHRoZSA8Yj5OYW1lPC9iPiBmaWVsZCwgdHlwZSB0aGUgbmFtZSBvZiB0aGUgcGFydC48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPllvdXIgcGFydCBjYW4gcmVmZXIgdG8gZWl0aGVyIGEgPGI+VHlwZTwvYj4gb3IgYW4gPGI+RWxlbWVudDwvYj4uPC9jbWQ+Ci08aW5mbz5TZWxlY3QgdGhlIGFwcHJvcHJpYXRlIG9wdGlvbiBhcyB0aGUgPGI+UmVmZXJlbmNlIEtpbmQ8L2I+IC48L2luZm8+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPklmIHlvdSBzZWxlY3RlZCA8Yj5UeXBlPC9iPiwgeW91IG5vdyBoYXZlIHRoZSBvcHRpb24gb2Ygc2VsZWN0aW5nCi1hbiBYTUwgc2NoZW1hIGRhdGEgdHlwZSBmcm9tIHRoZSA8Yj5UeXBlPC9iPiBkcm9wIGRvd24gbGlzdC48L2NtZD48aW5mbz5UaGUKLWxpc3Qgb2YgdHlwZXMgY29tZXMgZnJvbSBhbnkgYXZhaWxhYmxlIHJlZmVyZW5jZWQgWE1MIHNjaGVtYXMuPC9pbmZvPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SWYgeW91IHNlbGVjdGVkIDxiPkVsZW1lbnQ8L2I+ICwgeW91IG5vdyBoYXZlIHRoZSBvcHRpb24gb2Ygc2VsZWN0aW5nCi1hbiBYTUwgc2NoZW1hIGVsZW1lbnQgZnJvbSB0aGUgIDxiPkVsZW1lbnQ8L2I+IGRyb3AgZG93biBsaXN0LjwvY21kPjxpbmZvPlRoZQotbGlzdCBvZiBlbGVtZW50cyBjb21lcyBmcm9tIGFueSBhdmFpbGFibGUgcmVmZXJlbmNlZCBYTUwgc2NoZW1hcy48L2luZm8+PC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+PG5vdGUgdHlwZT0idGlwIj4gWW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBwYXJ0IGZvciB5b3VyIG1lc3NhZ2UKLXVzaW5nIHRoZSBPdXRsaW5lIHZpZXcuIFVuZGVyIHRoZSAgPGI+TWVzc2FnZXM8L2I+IGZvbGRlciwgcmlnaHQtY2xpY2sgeW91cgotZWxlbWVudCBhbmQgY2xpY2sgPGI+QWRkIFBhcnQ8L2I+LiBZb3VyIHBhcnQgd2lsbCBhdXRvbWF0aWNhbGx5IGFwcGVhciBpbgotdGhlIE91dGxpbmUgdmlldyAodW5kZXIgdGhlIDxiPk1lc3NhZ2VzPC9iPiBmb2xkZXIpLCBidXQgaXQgd2lsbCBvbmx5IGFwcGVhcgotaW4gdGhlIERlc2lnbiB2aWV3IGlmIHRoZSBtZXNzYWdlIHlvdSBhZGRlZCBpdCB0byBjdXJyZW50bHkgZG9lcy48L25vdGU+PC9yZXN1bHQ+Ci08L3Rhc2tib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgY29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vY29uY2VwdHMvY3dzZGxlZC5kaXRhIiBzY29wZT0ibG9jYWwiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgdGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0idGNydHdzZGwuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08bGluayBocmVmPSJ0ZWR0d3NkbC5kaXRhIiBzY29wZT0ibG9jYWwiPjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08L3JlbGF0ZWQtbGlua3M+Ci08L3Rhc2s+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRwYXJ0Lmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRwYXJ0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczNzE2MDYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkcGFydC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iQWRkaW5nIGEgcGFydCB0byBhIG1lc3NhZ2UiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iQWxsIG1lc3NhZ2VzIGNvbnRhaW4gb25lIG9yIG1vcmUgcGFydHMuIFBhcnRzIGFyZSBhIGZsZXhpYmxlIG1lY2hhbmlzbSBmb3IgZGVzY3JpYmluZyB0aGUgbG9naWNhbCBhYnN0cmFjdCBjb250ZW50IG9mIGEgbWVzc2FnZS4gVGhlIG1lc3NhZ2UgZGVmaW5pdGlvbiBhc3NvY2lhdGVzIGVhY2ggcGFydCB3aXRoIGEgdHlwZSB1c2luZyBhIG1lc3NhZ2UtdHlwaW5nIGF0dHJpYnV0ZS4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQWxsIG1lc3NhZ2VzIGNvbnRhaW4gb25lIG9yIG1vcmUgcGFydHMuIFBhcnRzIGFyZSBhIGZsZXhpYmxlIG1lY2hhbmlzbSBmb3IgZGVzY3JpYmluZyB0aGUgbG9naWNhbCBhYnN0cmFjdCBjb250ZW50IG9mIGEgbWVzc2FnZS4gVGhlIG1lc3NhZ2UgZGVmaW5pdGlvbiBhc3NvY2lhdGVzIGVhY2ggcGFydCB3aXRoIGEgdHlwZSB1c2luZyBhIG1lc3NhZ2UtdHlwaW5nIGF0dHJpYnV0ZS4iIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgc2VydmljZXMsIGFkZGluZyBXU0RMIG1lc3NhZ2UgcGFydHMsIFdTREwgZmlsZXMsIG1lc3NhZ2UgcGFydHMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgc2VydmljZXMsIGFkZGluZyBXU0RMIG1lc3NhZ2UgcGFydHMsIFdTREwgZmlsZXMsIG1lc3NhZ2UgcGFydHMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3NkbGVkLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRjcnR3c2RsLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRlZHR3c2RsLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idGFkZHBhcnQiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5BZGRpbmcgYSBwYXJ0IHRvIGEgbWVzc2FnZTwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0idGFkZHBhcnQiPjxhIG5hbWU9InRhZGRwYXJ0Ij48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5BZGRpbmcgYSBwYXJ0IHRvIGEgbWVzc2FnZTwvaDE+Ci0KLQotCi08ZGl2PjxwPkFsbCBtZXNzYWdlcyBjb250YWluIG9uZSBvciBtb3JlIHBhcnRzLiBQYXJ0cyBhcmUgYSBmbGV4aWJsZSBtZWNoYW5pc20KLWZvciBkZXNjcmliaW5nIHRoZSBsb2dpY2FsIGFic3RyYWN0IGNvbnRlbnQgb2YgYSBtZXNzYWdlLiBUaGUgbWVzc2FnZSBkZWZpbml0aW9uCi1hc3NvY2lhdGVzIGVhY2ggcGFydCB3aXRoIGEgdHlwZSB1c2luZyBhIG1lc3NhZ2UtdHlwaW5nIGF0dHJpYnV0ZS48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRvIGFkZCBhIHBhcnQgdG8gYSBtZXNzYWdlLCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIERlc2lnbiB2aWV3LCByaWdodC1jbGljayBhbiBpbnB1dCwgb3V0cHV0LCBvciBmYXVsdCBvYmplY3QgYW5kCi1jbGljayA8c3Ryb25nPkFkZCBQYXJ0PC9zdHJvbmc+Ljwvc3Bhbj4gVGhlIHBhcnQgaXMgYWRkZWQgdG8gdGhlIGlucHV0LCBvdXRwdXQsCi1vciBmYXVsdCdzIG1lc3NhZ2UgcmVmZXJlbmNlLiBUbyBzZWxlY3QgdGhlIHBhcnQsIGNsaWNrIHRoZSBwYXJ0IGluIHRoZSBwb3J0Ci10eXBlIG9iamVjdC48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBQcm9wZXJ0aWVzIHZpZXcsIGNsaWNrIHRoZSA8c3Ryb25nPkdlbmVyYWw8L3N0cm9uZz4gcGFuZS48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgPHN0cm9uZz5OYW1lPC9zdHJvbmc+IGZpZWxkLCB0eXBlIHRoZSBuYW1lIG9mIHRoZSBwYXJ0Ljwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPllvdXIgcGFydCBjYW4gcmVmZXIgdG8gZWl0aGVyIGEgPHN0cm9uZz5UeXBlPC9zdHJvbmc+IG9yIGFuIDxzdHJvbmc+RWxlbWVudDwvc3Ryb25nPi48L3NwYW4+Ci0gU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBvcHRpb24gYXMgdGhlIDxzdHJvbmc+UmVmZXJlbmNlIEtpbmQ8L3N0cm9uZz4gLgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JZiB5b3Ugc2VsZWN0ZWQgPHN0cm9uZz5UeXBlPC9zdHJvbmc+LCB5b3Ugbm93IGhhdmUgdGhlIG9wdGlvbiBvZiBzZWxlY3RpbmcKLWFuIFhNTCBzY2hlbWEgZGF0YSB0eXBlIGZyb20gdGhlIDxzdHJvbmc+VHlwZTwvc3Ryb25nPiBkcm9wIGRvd24gbGlzdC48L3NwYW4+IFRoZQotbGlzdCBvZiB0eXBlcyBjb21lcyBmcm9tIGFueSBhdmFpbGFibGUgcmVmZXJlbmNlZCBYTUwgc2NoZW1hcy48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPklmIHlvdSBzZWxlY3RlZCA8c3Ryb25nPkVsZW1lbnQ8L3N0cm9uZz4gLCB5b3Ugbm93IGhhdmUgdGhlIG9wdGlvbiBvZiBzZWxlY3RpbmcKLWFuIFhNTCBzY2hlbWEgZWxlbWVudCBmcm9tIHRoZSAgPHN0cm9uZz5FbGVtZW50PC9zdHJvbmc+IGRyb3AgZG93biBsaXN0Ljwvc3Bhbj4gVGhlCi1saXN0IG9mIGVsZW1lbnRzIGNvbWVzIGZyb20gYW55IGF2YWlsYWJsZSByZWZlcmVuY2VkIFhNTCBzY2hlbWFzLjwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxkaXYgY2xhc3M9InRpcCI+PHNwYW4gY2xhc3M9InRpcHRpdGxlIj5UaXA6PC9zcGFuPiAgWW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBwYXJ0IGZvciB5b3VyIG1lc3NhZ2UKLXVzaW5nIHRoZSBPdXRsaW5lIHZpZXcuIFVuZGVyIHRoZSAgPHN0cm9uZz5NZXNzYWdlczwvc3Ryb25nPiBmb2xkZXIsIHJpZ2h0LWNsaWNrIHlvdXIKLWVsZW1lbnQgYW5kIGNsaWNrIDxzdHJvbmc+QWRkIFBhcnQ8L3N0cm9uZz4uIFlvdXIgcGFydCB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwZWFyIGluCi10aGUgT3V0bGluZSB2aWV3ICh1bmRlciB0aGUgPHN0cm9uZz5NZXNzYWdlczwvc3Ryb25nPiBmb2xkZXIpLCBidXQgaXQgd2lsbCBvbmx5IGFwcGVhcgotaW4gdGhlIERlc2lnbiB2aWV3IGlmIHRoZSBtZXNzYWdlIHlvdSBhZGRlZCBpdCB0byBjdXJyZW50bHkgZG9lcy48L2Rpdj4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgY29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9jb25jZXB0cy9jd3NkbGVkLmh0bWwiIHRpdGxlPSJUaGUgV1NETCBlZGl0b3IgYWxsb3dzIHlvdSB0byBlYXNpbHkgYW5kIGdyYXBoaWNhbGx5IGNyZWF0ZSwgbW9kaWZ5LCB2aWV3LCBhbmQgdmFsaWRhdGUgV1NETCBmaWxlcy4iPkVkaXRpbmcgV1NETCBmaWxlcyB3aXRoIHRoZSBXU0RMIEVkaXRvcjwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCB0YXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InRjcnR3c2RsLmh0bWwiIHRpdGxlPSJZb3UgY2FuIGNyZWF0ZSBhIG5ldywgZW1wdHkgV1NETCBmaWxlLCB0aGVuIGVkaXQgaXQgdXNpbmcgdGhlIFdTREwgZWRpdG9yLiI+Q3JlYXRpbmcgYSBuZXcgV1NETCBmaWxlPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0ZWR0d3NkbC5odG1sIiB0aXRsZT0iT25jZSB5b3UgaGF2ZSBjcmVhdGVkIGEgV1NETCBmaWxlLCB5b3UgY2FuIGVkaXQgaXQgaW4gdGhlIFdTREwgZWRpdG9yLiBZb3UgY2FuIGFsc28gaW1wb3J0IFdTREwgZmlsZXMgeW91IGhhdmUgY3JlYXRlZCBpbnRvIHRoZSB3b3JrYmVuY2ggYW5kIGVkaXQgdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IuIj5FZGl0aW5nIFdTREwgZmlsZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZHBvcnQuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZHBvcnQuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFlMDFkYy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRwb3J0LmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idGFkZHBvcnQiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+QWRkaW5nIGEgcG9ydCB0byBhIHNlcnZpY2U8L3RpdGxlPgotPHNob3J0ZGVzYz5BIHBvcnQgZGVmaW5lcyBhbiBpbmRpdmlkdWFsIGVuZHBvaW50IGJ5IHNwZWNpZnlpbmcgYSBzaW5nbGUgYWRkcmVzcwotZm9yIGEgYmluZGluZy4gVGhlIHBvcnQgY29udGFpbnMgYSAnYmluZGluZycgYXR0cmlidXRlIHRoYXQgcmVmZXJlbmNlcyBhIGJpbmRpbmcKLWFuZCBhbiBhZGRyZXNzIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhIHNwZWNpZmljYXRpb24gZm9yIHRoZSBlbmRwb2ludC48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5hZGRpbmcgV1NETCBwb3J0czwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5XU0RMIGZpbGVzPGluZGV4dGVybT5wb3J0czwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+U2VydmljZXMgYXJlIHVzZWQgdG8gZ3JvdXAgc2V0cyBvZiByZWxhdGVkIHBvcnRzIHRvZ2V0aGVyLiBQb3J0cwotd2l0aGluIGEgc2VydmljZSBoYXZlIHRoZSBmb2xsb3dpbmcgcmVsYXRpb25zaGlwOjwvcD48dWw+Ci08bGk+Tm9uZSBvZiB0aGUgcG9ydHMgY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyIChmb3IgZXhhbXBsZSwgdGhlIG91dHB1dAotb2Ygb25lIHBvcnQgaXMgbm90IHRoZSBpbnB1dCBvZiBhbm90aGVyKS48L2xpPgotPGxpPklmIGEgc2VydmljZSBoYXMgc2V2ZXJhbCBwb3J0cyB0aGF0IHNoYXJlIGEgcG9ydCB0eXBlLCBidXQgZW1wbG95IGRpZmZlcmVudAotYmluZGluZ3Mgb3IgYWRkcmVzc2VzLCB0aGUgcG9ydHMgYXJlIGFsdGVybmF0aXZlcy4gRWFjaCBwb3J0IHByb3ZpZGVzIHNlbWFudGljYWxseQotZXF1aXZhbGVudCBiZWhhdmlvciAod2l0aGluIHRoZSB0cmFuc3BvcnQgYW5kIG1lc3NhZ2UgZm9ybWF0IGxpbWl0YXRpb25zIGltcG9zZWQKLWJ5IGVhY2ggYmluZGluZykuPC9saT4KLTxsaT5Zb3UgY2FuIGRldGVybWluZSBhIHNlcnZpY2UncyBwb3J0IHR5cGVzIGJ5IGV4YW1pbmluZyBpdHMgcG9ydHMuIFVzaW5nCi10aGlzIGluZm9ybWF0aW9uLCBhIHVzZXIgY2FuIGRldGVybWluZSBpZiBhIGdpdmVuIG1hY2hpbmUgc3VwcG9ydHMgYWxsIHRoZQotb3BlcmF0aW9ucyBuZWVkZWQgdG8gY29tcGxldGUgYSBnaXZlbiB0YXNrLjwvbGk+Ci08L3VsPjxwPlRvIGFkZCBhIHBvcnQgdG8gYSBzZXJ2aWNlLCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIHRoZSBEZXNpZ24gdmlldywgcmlnaHQtY2xpY2sgdGhlIHNlcnZpY2UgeW91IHdhbnQgdG8gYWRkIGEgcG9ydAotdG8sIHRoZW4gY2xpY2sgPGI+QWRkIFBvcnQuPC9iPiA8L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkZpbGwgaW4gdGhlIDxiPk5hbWU8L2I+IGZvciB0aGUgcG9ydC48L2NtZD48aW5mbz5UaGUgbmFtZSBvZiB0aGUKLXBvcnQgc2hvdWxkIHByb3ZpZGUgaXQgd2l0aCBhIHVuaXF1ZSBuYW1lIGFtb25nc3QgYWxsIHRoZSBwb3J0cyBkZWZpbmVkIHdpdGhpbgotdGhlIHNlcnZpY2UuPC9pbmZvPjwvc3RlcD4KLTxzdGVwPjxjbWQ+U2VsZWN0IGEgPGI+QmluZGluZzwvYj4gYW5kIDx1aWNvbnRyb2w+UHJvdG9jb2w8L3VpY29udHJvbD4gZm9yCi10aGUgcG9ydCwgYW5kIGVudGVyIHRoZSBhZGRyZXNzIG9mIHRoZSBwb3J0IGludG8gdGhlIDx1aWNvbnRyb2w+QWRkcmVzczwvdWljb250cm9sPiBmaWVsZC4KLUNsaWNrIDx1aWNvbnRyb2w+RmluaXNoPC91aWNvbnRyb2w+LjwvY21kPjxpbmZvPlRvIHNlbGVjdCB0aGUgbmV3IHBvcnQsIGNsaWNrCi10aGUgcG9ydCBpbiB0aGUgc2VydmljZSBvYmplY3QuIFlvdSBjYW4gY2hhbmdlIHRoZSBpbmZvcm1hdGlvbiB5b3UgZW50ZXJlZAotYWJvdXQgdGhpcyBwb3J0IGFueSB0aW1lIGluIHRoZSA8dWljb250cm9sPkdlbmVyYWw8L3VpY29udHJvbD4gcGFuZS48L2luZm8+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPlR5cGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBwb3J0IHlvdSB3YW50IHRoZSB1c2VyIHRvIHJlYWQgaW4KLXRoZSA8Yj5Eb2N1bWVudGF0aW9uPC9iPiBwYW5lIG9mIHRoZSBQcm9wZXJ0aWVzIHZpZXcuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5UbyBtYW5hZ2UgZXh0ZW5zaW9ucywgY2xpY2sgdGhlIDxiPkV4dGVuc2lvbnM8L2I+IHBhbmUuIFlvdSBjYW4KLWVpdGhlciBhZGQsIHNvcnQsIG9yIHJlbW92ZSBleHRlbnNpb25zLiA8L2NtZD48L3N0ZXA+Ci08L3N0ZXBzPgotPHJlc3VsdD48cD5Zb3UgY2FuIGNyZWF0ZSBhIG5ldyBiaW5kaW5nIGZvciB5b3VyIHBvcnQsIHJlLXVzZSBhbiBleGlzdGluZwotb25lLCBvciBpbXBvcnQgb25lLiBBIDxiPkJpbmRpbmc8L2I+IGRlZmluZXMgdGhlIG1lc3NhZ2UgZm9ybWF0IGFuZCBwcm90b2NvbAotZGV0YWlscyBmb3Igb3BlcmF0aW9ucyBhbmQgbWVzc2FnZXMgZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgcG9ydCB0eXBlLiBGb3IKLW1vcmUgaW5mb3JtYXRpb24sIHNlZSA8eHJlZiBmb3JtYXQ9Imh0bWwiIGhyZWY9Ii4uL3Rhc2tzL3RzZXRiaW5kLmRpdGEiIHNjb3BlPSJwZWVyIj5TZXR0aW5nCi1hIGJpbmRpbmc8L3hyZWY+IC48L3A+PHA+WW91IGNhbiBhbHNvIGNyZWF0ZSBhIHBvcnQgdXNpbmcgdGhlIE91dGxpbmUgdmlldwotYnkgcmlnaHQtY2xpY2tpbmcgeW91ciBzZXJ2aWNlIHVuZGVyIHRoZSA8Yj5TZXJ2aWNlczwvYj4gZm9sZGVyIGFuZCBjbGlja2luZyA8Yj5BZGQKLVBvcnQ8L2I+LiBZb3VyIHBvcnQgKHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggdmlldyB5b3UgY3JlYXRlIGl0IGluKSB3aWxsIGFwcGVhcgotaW4gYm90aCB0aGUgRGVzaWduIHZpZXcgYW5kIHRoZSBPdXRsaW5lIHZpZXcuPC9wPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIGNvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIHRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InRjcnR3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPGxpbmsgaHJlZj0idGVkdHdzZGwuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkcG9ydC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkcG9ydC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzUyZjk4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZHBvcnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJBZGRpbmcgYSBwb3J0IHRvIGEgc2VydmljZSIgLz4KLTxtZXRhIG5hbWU9ImFic3RyYWN0IiBjb250ZW50PSJBIHBvcnQgZGVmaW5lcyBhbiBpbmRpdmlkdWFsIGVuZHBvaW50IGJ5IHNwZWNpZnlpbmcgYSBzaW5nbGUgYWRkcmVzcyBmb3IgYSBiaW5kaW5nLiBUaGUgcG9ydCBjb250YWlucyBhICdiaW5kaW5nJyBhdHRyaWJ1dGUgdGhhdCByZWZlcmVuY2VzIGEgYmluZGluZyBhbmQgYW4gYWRkcmVzcyBlbGVtZW50IHRoYXQgcHJvdmlkZXMgYSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZW5kcG9pbnQuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkEgcG9ydCBkZWZpbmVzIGFuIGluZGl2aWR1YWwgZW5kcG9pbnQgYnkgc3BlY2lmeWluZyBhIHNpbmdsZSBhZGRyZXNzIGZvciBhIGJpbmRpbmcuIFRoZSBwb3J0IGNvbnRhaW5zIGEgJ2JpbmRpbmcnIGF0dHJpYnV0ZSB0aGF0IHJlZmVyZW5jZXMgYSBiaW5kaW5nIGFuZCBhbiBhZGRyZXNzIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhIHNwZWNpZmljYXRpb24gZm9yIHRoZSBlbmRwb2ludC4iIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgc2VydmljZXMsIGFkZGluZyBXU0RMIHBvcnRzLCBXU0RMIGZpbGVzLCBwb3J0cyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgYWRkaW5nIFdTREwgcG9ydHMsIFdTREwgZmlsZXMsIHBvcnRzIiBuYW1lPSJrZXl3b3JkcyIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vY29uY2VwdHMvY3dzZGxlZC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0Y3J0d3NkbC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSJ0ZWR0d3NkbC5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InRhZGRwb3J0IiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+QWRkaW5nIGEgcG9ydCB0byBhIHNlcnZpY2U8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InRhZGRwb3J0Ij48YSBuYW1lPSJ0YWRkcG9ydCI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+QWRkaW5nIGEgcG9ydCB0byBhIHNlcnZpY2U8L2gxPgotCi0KLQotPGRpdj48cD5BIHBvcnQgZGVmaW5lcyBhbiBpbmRpdmlkdWFsIGVuZHBvaW50IGJ5IHNwZWNpZnlpbmcgYSBzaW5nbGUgYWRkcmVzcwotZm9yIGEgYmluZGluZy4gVGhlIHBvcnQgY29udGFpbnMgYSAnYmluZGluZycgYXR0cmlidXRlIHRoYXQgcmVmZXJlbmNlcyBhIGJpbmRpbmcKLWFuZCBhbiBhZGRyZXNzIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhIHNwZWNpZmljYXRpb24gZm9yIHRoZSBlbmRwb2ludC48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlNlcnZpY2VzIGFyZSB1c2VkIHRvIGdyb3VwIHNldHMgb2YgcmVsYXRlZCBwb3J0cyB0b2dldGhlci4gUG9ydHMKLXdpdGhpbiBhIHNlcnZpY2UgaGF2ZSB0aGUgZm9sbG93aW5nIHJlbGF0aW9uc2hpcDo8L3A+Ci08dWw+Ci08bGk+Tm9uZSBvZiB0aGUgcG9ydHMgY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyIChmb3IgZXhhbXBsZSwgdGhlIG91dHB1dAotb2Ygb25lIHBvcnQgaXMgbm90IHRoZSBpbnB1dCBvZiBhbm90aGVyKS48L2xpPgotCi08bGk+SWYgYSBzZXJ2aWNlIGhhcyBzZXZlcmFsIHBvcnRzIHRoYXQgc2hhcmUgYSBwb3J0IHR5cGUsIGJ1dCBlbXBsb3kgZGlmZmVyZW50Ci1iaW5kaW5ncyBvciBhZGRyZXNzZXMsIHRoZSBwb3J0cyBhcmUgYWx0ZXJuYXRpdmVzLiBFYWNoIHBvcnQgcHJvdmlkZXMgc2VtYW50aWNhbGx5Ci1lcXVpdmFsZW50IGJlaGF2aW9yICh3aXRoaW4gdGhlIHRyYW5zcG9ydCBhbmQgbWVzc2FnZSBmb3JtYXQgbGltaXRhdGlvbnMgaW1wb3NlZAotYnkgZWFjaCBiaW5kaW5nKS48L2xpPgotCi08bGk+WW91IGNhbiBkZXRlcm1pbmUgYSBzZXJ2aWNlJ3MgcG9ydCB0eXBlcyBieSBleGFtaW5pbmcgaXRzIHBvcnRzLiBVc2luZwotdGhpcyBpbmZvcm1hdGlvbiwgYSB1c2VyIGNhbiBkZXRlcm1pbmUgaWYgYSBnaXZlbiBtYWNoaW5lIHN1cHBvcnRzIGFsbCB0aGUKLW9wZXJhdGlvbnMgbmVlZGVkIHRvIGNvbXBsZXRlIGEgZ2l2ZW4gdGFzay48L2xpPgotCi08L3VsPgotPHA+VG8gYWRkIGEgcG9ydCB0byBhIHNlcnZpY2UsIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+SW4gdGhlIERlc2lnbiB2aWV3LCByaWdodC1jbGljayB0aGUgc2VydmljZSB5b3Ugd2FudCB0byBhZGQgYSBwb3J0Ci10bywgdGhlbiBjbGljayA8c3Ryb25nPkFkZCBQb3J0Ljwvc3Ryb25nPiA8L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5GaWxsIGluIHRoZSA8c3Ryb25nPk5hbWU8L3N0cm9uZz4gZm9yIHRoZSBwb3J0Ljwvc3Bhbj4gVGhlIG5hbWUgb2YgdGhlCi1wb3J0IHNob3VsZCBwcm92aWRlIGl0IHdpdGggYSB1bmlxdWUgbmFtZSBhbW9uZ3N0IGFsbCB0aGUgcG9ydHMgZGVmaW5lZCB3aXRoaW4KLXRoZSBzZXJ2aWNlLjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+U2VsZWN0IGEgPHN0cm9uZz5CaW5kaW5nPC9zdHJvbmc+IGFuZCA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Qcm90b2NvbDwvc3Bhbj4gZm9yCi10aGUgcG9ydCwgYW5kIGVudGVyIHRoZSBhZGRyZXNzIG9mIHRoZSBwb3J0IGludG8gdGhlIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFkZHJlc3M8L3NwYW4+IGZpZWxkLgotQ2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluaXNoPC9zcGFuPi48L3NwYW4+IFRvIHNlbGVjdCB0aGUgbmV3IHBvcnQsIGNsaWNrCi10aGUgcG9ydCBpbiB0aGUgc2VydmljZSBvYmplY3QuIFlvdSBjYW4gY2hhbmdlIHRoZSBpbmZvcm1hdGlvbiB5b3UgZW50ZXJlZAotYWJvdXQgdGhpcyBwb3J0IGFueSB0aW1lIGluIHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5HZW5lcmFsPC9zcGFuPiBwYW5lLgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5UeXBlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcG9ydCB5b3Ugd2FudCB0aGUgdXNlciB0byByZWFkIGluCi10aGUgPHN0cm9uZz5Eb2N1bWVudGF0aW9uPC9zdHJvbmc+IHBhbmUgb2YgdGhlIFByb3BlcnRpZXMgdmlldy48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5UbyBtYW5hZ2UgZXh0ZW5zaW9ucywgY2xpY2sgdGhlIDxzdHJvbmc+RXh0ZW5zaW9uczwvc3Ryb25nPiBwYW5lLiBZb3UgY2FuCi1laXRoZXIgYWRkLCBzb3J0LCBvciByZW1vdmUgZXh0ZW5zaW9ucy4gPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPllvdSBjYW4gY3JlYXRlIGEgbmV3IGJpbmRpbmcgZm9yIHlvdXIgcG9ydCwgcmUtdXNlIGFuIGV4aXN0aW5nCi1vbmUsIG9yIGltcG9ydCBvbmUuIEEgPHN0cm9uZz5CaW5kaW5nPC9zdHJvbmc+IGRlZmluZXMgdGhlIG1lc3NhZ2UgZm9ybWF0IGFuZCBwcm90b2NvbAotZGV0YWlscyBmb3Igb3BlcmF0aW9ucyBhbmQgbWVzc2FnZXMgZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgcG9ydCB0eXBlLiBGb3IKLW1vcmUgaW5mb3JtYXRpb24sIHNlZSA8YSBocmVmPSJ0c2V0YmluZC5odG1sIj5TZXRodG1sIGEgYmluZGluZzwvYT4gLjwvcD4KLTxwPllvdSBjYW4gYWxzbyBjcmVhdGUgYSBwb3J0IHVzaW5nIHRoZSBPdXRsaW5lIHZpZXcKLWJ5IHJpZ2h0LWNsaWNraW5nIHlvdXIgc2VydmljZSB1bmRlciB0aGUgPHN0cm9uZz5TZXJ2aWNlczwvc3Ryb25nPiBmb2xkZXIgYW5kIGNsaWNraW5nIDxzdHJvbmc+QWRkCi1Qb3J0PC9zdHJvbmc+LiBZb3VyIHBvcnQgKHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggdmlldyB5b3UgY3JlYXRlIGl0IGluKSB3aWxsIGFwcGVhcgotaW4gYm90aCB0aGUgRGVzaWduIHZpZXcgYW5kIHRoZSBPdXRsaW5lIHZpZXcuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBjb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCIgdGl0bGU9IlRoZSBXU0RMIGVkaXRvciBhbGxvd3MgeW91IHRvIGVhc2lseSBhbmQgZ3JhcGhpY2FsbHkgY3JlYXRlLCBtb2RpZnksIHZpZXcsIGFuZCB2YWxpZGF0ZSBXU0RMIGZpbGVzLiI+RWRpdGluZyBXU0RMIGZpbGVzIHdpdGggdGhlIFdTREwgRWRpdG9yPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIHRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0idGNydHdzZGwuaHRtbCIgdGl0bGU9IllvdSBjYW4gY3JlYXRlIGEgbmV3LCBlbXB0eSBXU0RMIGZpbGUsIHRoZW4gZWRpdCBpdCB1c2luZyB0aGUgV1NETCBlZGl0b3IuIj5DcmVhdGluZyBhIG5ldyBXU0RMIGZpbGU8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRlZHR3c2RsLmh0bWwiIHRpdGxlPSJPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgYSBXU0RMIGZpbGUsIHlvdSBjYW4gZWRpdCBpdCBpbiB0aGUgV1NETCBlZGl0b3IuIFlvdSBjYW4gYWxzbyBpbXBvcnQgV1NETCBmaWxlcyB5b3UgaGF2ZSBjcmVhdGVkIGludG8gdGhlIHdvcmtiZW5jaCBhbmQgZWRpdCB0aGVtIGluIHRoZSBXU0RMIGVkaXRvci4iPkVkaXRpbmcgV1NETCBmaWxlczwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkc3J2Yy5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90YWRkc3J2Yy5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTNmMjI2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZHNydmMuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0YWRkc3J2YyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5BZGRpbmcgYSBzZXJ2aWNlPC90aXRsZT4KLTxzaG9ydGRlc2M+VGhlICA8c3lzdGVtb3V0cHV0PnNlcnZpY2U8L3N5c3RlbW91dHB1dD4gZWxlbWVudCBpcyBhIGNvbGxlY3Rpb24KLW9mIHJlbGF0ZWQgcG9ydHMgYW5kIHNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIHNlcnZpY2UuPC9zaG9ydGRlc2M+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+YWRkaW5nIHNlcnZpY2VzIHRvIFdTREw8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V1NETCBmaWxlczxpbmRleHRlcm0+c2VydmljZXM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRvIGNyZWF0ZSBhIG5ldyBzZXJ2aWNlLCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIHRoZSBEZXNpZ24gdmlldywgcmlnaHQtY2xpY2sgaW4gYW55IGJsYW5rIHNwYWNlIGFuZCBjbGljayA8Yj5BZGQKLVNlcnZpY2U8L2I+LiBUbyBzZWxlY3QgdGhlIG5ldyBzZXJ2aWNlLCBjbGljayB0aGUgc2VydmljZSBvYmplY3QuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgUHJvcGVydGllcyB2aWV3LCBjbGljayB0aGUgPGI+R2VuZXJhbDwvYj4gcGFuZS4gSW4gdGhlIDxiPk5hbWU8L2I+IGZpZWxkLAotdHlwZSB0aGUgbmFtZSBvZiB0aGUgc2VydmljZS48L2NtZD48aW5mbz5UaGUgbmFtZSBvZiB0aGUgc2VydmljZSBwcm92aWRlcwotaXQgd2l0aCBhIHVuaXF1ZSBuYW1lIGFtb25nc3QgYWxsIHRoZSBzZXJ2aWNlcyBkZWZpbmVkIHdpdGhpbiBpbiB0aGUgZW5jbG9zaW5nCi1XU0RMIGRvY3VtZW50LjwvaW5mbz48L3N0ZXA+Ci08c3RlcD48Y21kPlR5cGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZXJ2aWNlIHlvdSB3YW50IHRoZSB1c2VyIHRvIHJlYWQKLWluIHRoZSA8Yj5Eb2N1bWVudGF0aW9uPC9iPiBwYW5lLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+VG8gbWFuYWdlIGV4dGVuc2lvbnMsIGNsaWNrIHRoZSA8Yj5FeHRlbnNpb25zPC9iPiBwYW5lLiBZb3UgY2FuCi1laXRoZXIgYWRkLCBzb3J0LCBvciByZW1vdmUgZXh0ZW5zaW9ucy48ZHJhZnQtY29tbWVudD4gUmVmZXIgdG8gdGhlIHJlbGF0ZWQKLXRhc2tzIGZvciBtb3JlIGRldGFpbHMuIEFkZCBsaW5rIHRvIHRoZSBYU0QgRWRpdG9yIHBsdWdpbiB0b3BpYyBmb3IgIkFkZGluZwotZXh0ZW5zaW9uIGNvbXBvbmVudHMiPC9kcmFmdC1jb21tZW50PjwvY21kPjwvc3RlcD4KLTwvc3RlcHM+Ci08cmVzdWx0PjxwPiA8Yj5UaXA8L2I+OiBZb3UgY2FuIGFsc28gY3JlYXRlIGEgc2VydmljZSB1c2luZyB0aGUgT3V0bGluZSB2aWV3Ci1ieSByaWdodC1jbGlja2luZyB0aGUgPGI+U2VydmljZXM8L2I+IGZvbGRlciBhbmQgY2xpY2tpbmcgPGI+QWRkIFNlcnZpY2U8L2I+LjwvcD48cD5Zb3UKLWNhbiBub3cgYWRkIGEgcG9ydCB0byB5b3VyIHNlcnZpY2UuIEEgcG9ydCBkZWZpbmVzIGFuIGluZGl2aWR1YWwgZW5kcG9pbnQKLWJ5IHNwZWNpZnlpbmcgYSBzaW5nbGUgYWRkcmVzcyBmb3IgYSBiaW5kaW5nLjwvcD48L3Jlc3VsdD4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBjb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jd3NkbGVkLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCB0YXNrczwvdGl0bGU+Ci08bGluayBocmVmPSJ0Y3J0d3NkbC5kaXRhIiBzY29wZT0ibG9jYWwiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRlZHR3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZHNydmMuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGFkZHNydmMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ5MzEwNi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RhZGRzcnZjLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJBZGRpbmcgYSBzZXJ2aWNlIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IlRoZSBzZXJ2aWNlIGVsZW1lbnQgaXMgYSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcG9ydHMgYW5kIHNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIHNlcnZpY2UuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlRoZSBzZXJ2aWNlIGVsZW1lbnQgaXMgYSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcG9ydHMgYW5kIHNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIHNlcnZpY2UuIiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBhZGRpbmcgc2VydmljZXMgdG8gV1NETCwgV1NETCBmaWxlcywgc2VydmljZXMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgc2VydmljZXMsIGFkZGluZyBzZXJ2aWNlcyB0byBXU0RMLCBXU0RMIGZpbGVzLCBzZXJ2aWNlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idGNydHdzZGwuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idGVkdHdzZGwuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0YWRkc3J2YyIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPkFkZGluZyBhIHNlcnZpY2U8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InRhZGRzcnZjIj48YSBuYW1lPSJ0YWRkc3J2YyI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+QWRkaW5nIGEgc2VydmljZTwvaDE+Ci0KLQotCi08ZGl2PjxwPlRoZSAgPHR0IGNsYXNzPSJzeXNvdXQiPnNlcnZpY2U8L3R0PiBlbGVtZW50IGlzIGEgY29sbGVjdGlvbgotb2YgcmVsYXRlZCBwb3J0cyBhbmQgc3BlY2lmaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgc2VydmljZS48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRvIGNyZWF0ZSBhIG5ldyBzZXJ2aWNlLCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBEZXNpZ24gdmlldywgcmlnaHQtY2xpY2sgaW4gYW55IGJsYW5rIHNwYWNlIGFuZCBjbGljayA8c3Ryb25nPkFkZAotU2VydmljZTwvc3Ryb25nPi4gVG8gc2VsZWN0IHRoZSBuZXcgc2VydmljZSwgY2xpY2sgdGhlIHNlcnZpY2Ugb2JqZWN0Ljwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBQcm9wZXJ0aWVzIHZpZXcsIGNsaWNrIHRoZSA8c3Ryb25nPkdlbmVyYWw8L3N0cm9uZz4gcGFuZS4gSW4gdGhlIDxzdHJvbmc+TmFtZTwvc3Ryb25nPiBmaWVsZCwKLXR5cGUgdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UuPC9zcGFuPiBUaGUgbmFtZSBvZiB0aGUgc2VydmljZSBwcm92aWRlcwotaXQgd2l0aCBhIHVuaXF1ZSBuYW1lIGFtb25nc3QgYWxsIHRoZSBzZXJ2aWNlcyBkZWZpbmVkIHdpdGhpbiBpbiB0aGUgZW5jbG9zaW5nCi1XU0RMIGRvY3VtZW50LjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+VHlwZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlcnZpY2UgeW91IHdhbnQgdGhlIHVzZXIgdG8gcmVhZAotaW4gdGhlIDxzdHJvbmc+RG9jdW1lbnRhdGlvbjwvc3Ryb25nPiBwYW5lLjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPlRvIG1hbmFnZSBleHRlbnNpb25zLCBjbGljayB0aGUgPHN0cm9uZz5FeHRlbnNpb25zPC9zdHJvbmc+IHBhbmUuIFlvdSBjYW4KLWVpdGhlciBhZGQsIHNvcnQsIG9yIHJlbW92ZSBleHRlbnNpb25zLjwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD4gPHN0cm9uZz5UaXA8L3N0cm9uZz46IFlvdSBjYW4gYWxzbyBjcmVhdGUgYSBzZXJ2aWNlIHVzaW5nIHRoZSBPdXRsaW5lIHZpZXcKLWJ5IHJpZ2h0LWNsaWNraW5nIHRoZSA8c3Ryb25nPlNlcnZpY2VzPC9zdHJvbmc+IGZvbGRlciBhbmQgY2xpY2tpbmcgPHN0cm9uZz5BZGQgU2VydmljZTwvc3Ryb25nPi48L3A+Ci08cD5Zb3UKLWNhbiBub3cgYWRkIGEgcG9ydCB0byB5b3VyIHNlcnZpY2UuIEEgcG9ydCBkZWZpbmVzIGFuIGluZGl2aWR1YWwgZW5kcG9pbnQKLWJ5IHNwZWNpZnlpbmcgYSBzaW5nbGUgYWRkcmVzcyBmb3IgYSBiaW5kaW5nLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgY29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9jb25jZXB0cy9jd3NkbGVkLmh0bWwiIHRpdGxlPSJUaGUgV1NETCBlZGl0b3IgYWxsb3dzIHlvdSB0byBlYXNpbHkgYW5kIGdyYXBoaWNhbGx5IGNyZWF0ZSwgbW9kaWZ5LCB2aWV3LCBhbmQgdmFsaWRhdGUgV1NETCBmaWxlcy4iPkVkaXRpbmcgV1NETCBmaWxlcyB3aXRoIHRoZSBXU0RMIEVkaXRvcjwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCB0YXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InRjcnR3c2RsLmh0bWwiIHRpdGxlPSJZb3UgY2FuIGNyZWF0ZSBhIG5ldywgZW1wdHkgV1NETCBmaWxlLCB0aGVuIGVkaXQgaXQgdXNpbmcgdGhlIFdTREwgZWRpdG9yLiI+Q3JlYXRpbmcgYSBuZXcgV1NETCBmaWxlPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0ZWR0d3NkbC5odG1sIiB0aXRsZT0iT25jZSB5b3UgaGF2ZSBjcmVhdGVkIGEgV1NETCBmaWxlLCB5b3UgY2FuIGVkaXQgaXQgaW4gdGhlIFdTREwgZWRpdG9yLiBZb3UgY2FuIGFsc28gaW1wb3J0IFdTREwgZmlsZXMgeW91IGhhdmUgY3JlYXRlZCBpbnRvIHRoZSB3b3JrYmVuY2ggYW5kIGVkaXQgdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IuIj5FZGl0aW5nIFdTREwgZmlsZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydGltcHQuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydGltcHQuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJkYWZmNS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RjcnRpbXB0LmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idGNydGltcHQiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+Q3JlYXRpbmcgYW4gaW1wb3J0IHN0YXRlbWVudDwvdGl0bGU+Ci08c2hvcnRkZXNjPlRoZSBpbXBvcnQgc3RhdGVtZW50IGlzIHVzZWQgdG8gaW1wb3J0IG90aGVyIFdTREwgZG9jdW1lbnRzIG9yCi1YTUwgc2NoZW1hcyBpbnRvIHlvdXIgV1NETCBkb2N1bWVudC4gVGhpcyBlbmFibGVzIHlvdSB0byBoYXZlIG1vcmUgbW9kdWxhcgotV1NETCBkb2N1bWVudHMuIFRoZSB1c2Ugb2YgdGhlIDxiPmltcG9ydDwvYj4gc3RhdGVtZW50IGFsbG93cyB0aGUgc2VwYXJhdGlvbgotb2YgdGhlIGRpZmZlcmVudCBlbGVtZW50cyBvZiBhIHNlcnZpY2UgZGVmaW5pdGlvbiBpbnRvIGluZGVwZW5kZW50IGRvY3VtZW50cywKLXdoaWNoIGNhbiB0aGVuIGJlIGltcG9ydGVkIGFzIG5lZWRlZC4gVGhpcyB0ZWNobmlxdWUgaGVscHMgaW4gd3JpdGluZyBjbGVhcmVyCi1zZXJ2aWNlIGRlZmluaXRpb25zLCBieSBzZXBhcmF0aW5nIHRoZSBkZWZpbml0aW9ucyBhY2NvcmRpbmcgdG8gdGhlaXIgbGV2ZWwKLW9mIGFic3RyYWN0aW9uLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmFkZGluZyBXU0RMIGltcG9ydCBzdGF0ZW1lbnRzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08aW5kZXh0ZXJtPldTREwgZmlsZXM8aW5kZXh0ZXJtPmltcG9ydCBzdGF0ZW1lbnRzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRvIGNyZWF0ZSBhbiBpbXBvcnQgc3RhdGVtZW50LCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIHRoZSBPdXRsaW5lIHZpZXcsIHJpZ2h0LWNsaWNrIHRoZSA8Yj5JbXBvcnRzPC9iPiBmb2xkZXIgYW5kCi1jbGljayA8Yj5BZGQgSW1wb3J0LjwvYj4gU2VsZWN0IHlvdXIgbmV3IGltcG9ydCBzdGF0ZW1lbnQuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgUHJvcGVydGllcyB2aWV3LCBjbGljayB0aGUgPGI+R2VuZXJhbDwvYj4gcGFuZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrIHRoZSBpY29uIHRvIHRoZSByaWdodCBvZiB0aGUgPGI+TG9jYXRpb248L2I+IGZpZWxkIHRvIG9wZW4KLXRoZSBTZWxlY3QgRmlsZSB3aW5kb3cuPHVpY29udHJvbD48L3VpY29udHJvbD4uPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5TZWxlY3QgYSBXU0RMIGZpbGUgb3IgWE1MIFNjaGVtYSB0byBpbXBvcnQgYnkgZG9pbmcgb25lIG9mIHRoZQotZm9sbG93aW5nOjwvY21kPjxpbmZvPjx1bD4KLTxsaT5TZWxlY3QgYSBmaWxlIGZyb20gYW5vdGhlciBwcm9qZWN0IGluIHRoZSB3b3Jrc3BhY2UgaW4gdGhlIDx1aWNvbnRyb2w+V29ya3NwYWNlCi1GaWxlczwvdWljb250cm9sPiBzZWN0aW9uLjwvbGk+Ci08bGk+Q2xpY2sgPHVpY29udHJvbD5JbXBvcnQgRmlsZXM8L3VpY29udHJvbD4gYW5kIHRoZW4gPHVpY29udHJvbD5Ccm93c2U8L3VpY29udHJvbD4gdG8KLWZpbmQgYW5kIHNlbGVjdCBmaWxlcyBvdXRzaWRlIHRoZSB3b3Jrc3BhY2UuIENsaWNrIDx1aWNvbnRyb2w+RmluaXNoPC91aWNvbnRyb2w+IGFmdGVyCi1jb21wbGV0aW5nIHRoaXMgSW1wb3J0IHdpemFyZC48L2xpPgotPC91bD5DbGljayA8dWljb250cm9sPk9LPC91aWNvbnRyb2w+LjwvaW5mbz48L3N0ZXA+Ci08c3RlcD48Y21kPlR5cGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbXBvcnQgc3RhdGVtZW50IHlvdSB3YW50IHRoZSB1c2VyCi10byByZWFkIGluIHRoZSA8Yj5Eb2N1bWVudGF0aW9uPC9iPiBwYW5lLjwvY21kPjwvc3RlcD4KLTwvc3RlcHM+Ci08cmVzdWx0Pk9uY2UgeW91IHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIHRoZSBkb2N1bWVudCB5b3Ugd2lzaCB0byBpbXBvcnQsCi10aGUgaW1wb3J0IG9iamVjdCdzIGxhYmVsIGNoYW5nZXMgdG8gcmVmbGVjdCB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLiBJbXBvcnRlZAotV1NETCBjb21wb25lbnRzIG1heSBub3cgYmUgdmlzaWJsZSB3aXRoaW4gdGhlIGVkaXRvci48L3Jlc3VsdD4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBjb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jd3NkbGVkLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCB0YXNrczwvdGl0bGU+Ci08bGluayBocmVmPSJ0Y3J0d3NkbC5kaXRhIiBzY29wZT0ibG9jYWwiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRlZHR3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydGltcHQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydGltcHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E3ZjljMi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RjcnRpbXB0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJDcmVhdGluZyBhbiBpbXBvcnQgc3RhdGVtZW50IiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IlRoZSBpbXBvcnQgc3RhdGVtZW50IGlzIHVzZWQgdG8gaW1wb3J0IG90aGVyIFdTREwgZG9jdW1lbnRzIG9yIFhNTCBzY2hlbWFzIGludG8geW91ciBXU0RMIGRvY3VtZW50LiBUaGlzIGVuYWJsZXMgeW91IHRvIGhhdmUgbW9yZSBtb2R1bGFyIFdTREwgZG9jdW1lbnRzLiBUaGUgdXNlIG9mIHRoZSBpbXBvcnQgc3RhdGVtZW50IGFsbG93cyB0aGUgc2VwYXJhdGlvbiBvZiB0aGUgZGlmZmVyZW50IGVsZW1lbnRzIG9mIGEgc2VydmljZSBkZWZpbml0aW9uIGludG8gaW5kZXBlbmRlbnQgZG9jdW1lbnRzLCB3aGljaCBjYW4gdGhlbiBiZSBpbXBvcnRlZCBhcyBuZWVkZWQuIFRoaXMgdGVjaG5pcXVlIGhlbHBzIGluIHdyaXRpbmcgY2xlYXJlciBzZXJ2aWNlIGRlZmluaXRpb25zLCBieSBzZXBhcmF0aW5nIHRoZSBkZWZpbml0aW9ucyBhY2NvcmRpbmcgdG8gdGhlaXIgbGV2ZWwgb2YgYWJzdHJhY3Rpb24uIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlRoZSBpbXBvcnQgc3RhdGVtZW50IGlzIHVzZWQgdG8gaW1wb3J0IG90aGVyIFdTREwgZG9jdW1lbnRzIG9yIFhNTCBzY2hlbWFzIGludG8geW91ciBXU0RMIGRvY3VtZW50LiBUaGlzIGVuYWJsZXMgeW91IHRvIGhhdmUgbW9yZSBtb2R1bGFyIFdTREwgZG9jdW1lbnRzLiBUaGUgdXNlIG9mIHRoZSBpbXBvcnQgc3RhdGVtZW50IGFsbG93cyB0aGUgc2VwYXJhdGlvbiBvZiB0aGUgZGlmZmVyZW50IGVsZW1lbnRzIG9mIGEgc2VydmljZSBkZWZpbml0aW9uIGludG8gaW5kZXBlbmRlbnQgZG9jdW1lbnRzLCB3aGljaCBjYW4gdGhlbiBiZSBpbXBvcnRlZCBhcyBuZWVkZWQuIFRoaXMgdGVjaG5pcXVlIGhlbHBzIGluIHdyaXRpbmcgY2xlYXJlciBzZXJ2aWNlIGRlZmluaXRpb25zLCBieSBzZXBhcmF0aW5nIHRoZSBkZWZpbml0aW9ucyBhY2NvcmRpbmcgdG8gdGhlaXIgbGV2ZWwgb2YgYWJzdHJhY3Rpb24uIiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBhZGRpbmcgV1NETCBpbXBvcnQgc3RhdGVtZW50cywgV1NETCBmaWxlcywgaW1wb3J0IHN0YXRlbWVudHMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgc2VydmljZXMsIGFkZGluZyBXU0RMIGltcG9ydCBzdGF0ZW1lbnRzLCBXU0RMIGZpbGVzLCBpbXBvcnQgc3RhdGVtZW50cyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idGNydHdzZGwuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idGVkdHdzZGwuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0Y3J0aW1wdCIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPkNyZWF0aW5nIGFuIGltcG9ydCBzdGF0ZW1lbnQ8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InRjcnRpbXB0Ij48YSBuYW1lPSJ0Y3J0aW1wdCI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+Q3JlYXRpbmcgYW4gaW1wb3J0IHN0YXRlbWVudDwvaDE+Ci0KLQotCi08ZGl2PjxwPlRoZSBpbXBvcnQgc3RhdGVtZW50IGlzIHVzZWQgdG8gaW1wb3J0IG90aGVyIFdTREwgZG9jdW1lbnRzIG9yCi1YTUwgc2NoZW1hcyBpbnRvIHlvdXIgV1NETCBkb2N1bWVudC4gVGhpcyBlbmFibGVzIHlvdSB0byBoYXZlIG1vcmUgbW9kdWxhcgotV1NETCBkb2N1bWVudHMuIFRoZSB1c2Ugb2YgdGhlIDxzdHJvbmc+aW1wb3J0PC9zdHJvbmc+IHN0YXRlbWVudCBhbGxvd3MgdGhlIHNlcGFyYXRpb24KLW9mIHRoZSBkaWZmZXJlbnQgZWxlbWVudHMgb2YgYSBzZXJ2aWNlIGRlZmluaXRpb24gaW50byBpbmRlcGVuZGVudCBkb2N1bWVudHMsCi13aGljaCBjYW4gdGhlbiBiZSBpbXBvcnRlZCBhcyBuZWVkZWQuIFRoaXMgdGVjaG5pcXVlIGhlbHBzIGluIHdyaXRpbmcgY2xlYXJlcgotc2VydmljZSBkZWZpbml0aW9ucywgYnkgc2VwYXJhdGluZyB0aGUgZGVmaW5pdGlvbnMgYWNjb3JkaW5nIHRvIHRoZWlyIGxldmVsCi1vZiBhYnN0cmFjdGlvbi48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRvIGNyZWF0ZSBhbiBpbXBvcnQgc3RhdGVtZW50LCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBPdXRsaW5lIHZpZXcsIHJpZ2h0LWNsaWNrIHRoZSA8c3Ryb25nPkltcG9ydHM8L3N0cm9uZz4gZm9sZGVyIGFuZAotY2xpY2sgPHN0cm9uZz5BZGQgSW1wb3J0Ljwvc3Ryb25nPiBTZWxlY3QgeW91ciBuZXcgaW1wb3J0IHN0YXRlbWVudC48L3NwYW4+PC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgUHJvcGVydGllcyB2aWV3LCBjbGljayB0aGUgPHN0cm9uZz5HZW5lcmFsPC9zdHJvbmc+IHBhbmUuPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+Q2xpY2sgdGhlIGljb24gdG8gdGhlIHJpZ2h0IG9mIHRoZSA8c3Ryb25nPkxvY2F0aW9uPC9zdHJvbmc+IGZpZWxkIHRvIG9wZW4KLXRoZSBTZWxlY3QgRmlsZSB3aW5kb3cuPHNwYW4gY2xhc3M9InVpY29udHJvbCIgLz4uPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+U2VsZWN0IGEgV1NETCBmaWxlIG9yIFhNTCBTY2hlbWEgdG8gaW1wb3J0IGJ5IGRvaW5nIG9uZSBvZiB0aGUKLWZvbGxvd2luZzo8L3NwYW4+IDx1bD4KLTxsaT5TZWxlY3QgYSBmaWxlIGZyb20gYW5vdGhlciBwcm9qZWN0IGluIHRoZSB3b3Jrc3BhY2UgaW4gdGhlIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPldvcmtzcGFjZQotRmlsZXM8L3NwYW4+IHNlY3Rpb24uPC9saT4KLQotPGxpPkNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkltcG9ydCBGaWxlczwvc3Bhbj4gYW5kIHRoZW4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QnJvd3NlPC9zcGFuPiB0bwotZmluZCBhbmQgc2VsZWN0IGZpbGVzIG91dHNpZGUgdGhlIHdvcmtzcGFjZS4gQ2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluaXNoPC9zcGFuPiBhZnRlcgotY29tcGxldGluZyB0aGlzIEltcG9ydCB3aXphcmQuPC9saT4KLQotPC91bD4KLUNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk9LPC9zcGFuPi48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPlR5cGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbXBvcnQgc3RhdGVtZW50IHlvdSB3YW50IHRoZSB1c2VyCi10byByZWFkIGluIHRoZSA8c3Ryb25nPkRvY3VtZW50YXRpb248L3N0cm9uZz4gcGFuZS48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+T25jZSB5b3Ugc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIGRvY3VtZW50IHlvdSB3aXNoIHRvIGltcG9ydCwKLXRoZSBpbXBvcnQgb2JqZWN0J3MgbGFiZWwgY2hhbmdlcyB0byByZWZsZWN0IHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uIEltcG9ydGVkCi1XU0RMIGNvbXBvbmVudHMgbWF5IG5vdyBiZSB2aXNpYmxlIHdpdGhpbiB0aGUgZWRpdG9yLjwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgY29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi9jb25jZXB0cy9jd3NkbGVkLmh0bWwiIHRpdGxlPSJUaGUgV1NETCBlZGl0b3IgYWxsb3dzIHlvdSB0byBlYXNpbHkgYW5kIGdyYXBoaWNhbGx5IGNyZWF0ZSwgbW9kaWZ5LCB2aWV3LCBhbmQgdmFsaWRhdGUgV1NETCBmaWxlcy4iPkVkaXRpbmcgV1NETCBmaWxlcyB3aXRoIHRoZSBXU0RMIEVkaXRvcjwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCB0YXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InRjcnR3c2RsLmh0bWwiIHRpdGxlPSJZb3UgY2FuIGNyZWF0ZSBhIG5ldywgZW1wdHkgV1NETCBmaWxlLCB0aGVuIGVkaXQgaXQgdXNpbmcgdGhlIFdTREwgZWRpdG9yLiI+Q3JlYXRpbmcgYSBuZXcgV1NETCBmaWxlPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0ZWR0d3NkbC5odG1sIiB0aXRsZT0iT25jZSB5b3UgaGF2ZSBjcmVhdGVkIGEgV1NETCBmaWxlLCB5b3UgY2FuIGVkaXQgaXQgaW4gdGhlIFdTREwgZWRpdG9yLiBZb3UgY2FuIGFsc28gaW1wb3J0IFdTREwgZmlsZXMgeW91IGhhdmUgY3JlYXRlZCBpbnRvIHRoZSB3b3JrYmVuY2ggYW5kIGVkaXQgdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IuIj5FZGl0aW5nIFdTREwgZmlsZXM8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydHR5cGUuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydHR5cGUuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNjZmRlYy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RjcnR0eXBlLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idGNydHR5cGUiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+Q3JlYXRpbmcgYSBuZXcgdHlwZSBmb3IgeW91ciBXU0RMIGZpbGU8L3RpdGxlPgotPHNob3J0ZGVzYz5UeXBlcyBkZXNjcmliZSBhbGwgdGhlIGRhdGEgdHlwZXMgdXNlZCBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci4KLVdTREwgaXMgbm90IHRpZWQgZXhjbHVzaXZlbHkgdG8gYSBzcGVjaWZpYyB0eXBpbmcgc3lzdGVtLCBidXQgaXQgdXNlcyB0aGUKLVczQyBYTUwgU2NoZW1hIHNwZWNpZmljYXRpb24gYXMgaXRzIGRlZmF1bHQgY2hvaWNlLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmNyZWF0aW5nIFdTREwgdHlwZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V1NETCBmaWxlczxpbmRleHRlcm0+dHlwZXM8L2luZGV4dGVybT48L2luZGV4dGVybT48L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPldTREwgYWxsb3dzIHR5cGUgc3lzdGVtcyB0byBiZSBhZGRlZCB2aWEgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cy4KLUFuIGV4dGVuc2liaWxpdHkgZWxlbWVudCBtYXkgYXBwZWFyIHVuZGVyIHRoZSAgPGI+dHlwZXM8L2I+IGVsZW1lbnQgdG8gaWRlbnRpZnkKLXRoZSB0eXBlIGRlZmluaXRpb24gc3lzdGVtIGJlaW5nIHVzZWQgYW5kIHRvIHByb3ZpZGUgYW4gWE1MIGNvbnRhaW5lciBlbGVtZW50Ci1mb3IgdGhlIHR5cGUgZGVmaW5pdGlvbnMuPC9wPjxwPlRvIGFkZCBhbiBYU0QgdHlwZSBvciBlbGVtZW50IHRvIHlvdXIgV1NETAotZmlsZTogPC9wPjwvY29udGV4dD4KLTxzdGVwcy11bm9yZGVyZWQ+Ci08c3RlcD48Y21kPkluIHRoZSBEZXNpZ24gdmlldywgY2xpY2sgdGhlIGFycm93IGljb24gdG8gdGhlIHJpZ2h0IG9mIHRoZSBwb3J0Ci10eXBlIG9iamVjdCB0byBvcGVuIHRoYXQgb3BlcmF0aW9uIGluIHRoZSBYTUwgc2NoZW1hIGVkaXRvci48L2NtZD48L3N0ZXA+Ci08L3N0ZXBzLXVub3JkZXJlZD4KLTxyZXN1bHQ+PHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgWE1MIHNjaGVtYXMsIHNlZSB0aGUgPHhyZWYgZm9ybWF0PSJodG1sIgotaHJlZj0iLy4uLy4uL29yZy5lY2xpcHNlLndzdC54c2RlZGl0b3IuZG9jLnVzZXIvdG9waWNzL2N4bWxzY2VkLmRpdGEiIHNjb3BlPSJwZWVyIj5YTUwKLXNjaGVtYSBlZGl0b3IgZG9jdW1lbnRhdGlvbjwveHJlZj4gZm9yIGxpbmtzIHRvIG9ubGluZSByZXNvdXJjZXMuPC9wPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIGNvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIHRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InRjcnR3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPGxpbmsgaHJlZj0idGVkdHdzZGwuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90Y3J0dHlwZS5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90Y3J0dHlwZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTBkODlhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydHR5cGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgbGFuZz0iZW4tdXMiIHhtbDpsYW5nPSJlbi11cyI+Ci08aGVhZD4KLTxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgotPG1ldGEgbmFtZT0iY29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLiBDb250cmlidXRvcnM6IElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiIgLz4KLTxtZXRhIG5hbWU9IkRDLnJpZ2h0cy5vd25lciIgY29udGVudD0iKEMpIENvcHlyaWdodCAyMDAwLCAyMDA4IiAvPgotPG1ldGEgY29udGVudD0icHVibGljIiBuYW1lPSJzZWN1cml0eSIgLz4KLTxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyIgbmFtZT0iUm9ib3RzIiAvPgotPG1ldGEgaHR0cC1lcXVpdj0iUElDUy1MYWJlbCIgY29udGVudD0nKFBJQ1MtMS4xICJodHRwOi8vd3d3LmljcmEub3JnL3JhdGluZ3N2MDIuaHRtbCIgbCBnZW4gdHJ1ZSByIChjeiAxIGx6IDEgbnogMSBveiAxIHZ6IDEpICJodHRwOi8vd3d3LnJzYWMub3JnL3JhdGluZ3N2MDEuaHRtbCIgbCBnZW4gdHJ1ZSByIChuIDAgcyAwIHYgMCBsIDApICJodHRwOi8vd3d3LmNsYXNzaWZ5Lm9yZy9zYWZlc3VyZi8iIGwgZ2VuIHRydWUgciAoU1N+fjAwMCAxKSknIC8+Ci08bWV0YSBjb250ZW50PSJ0YXNrIiBuYW1lPSJEQy5UeXBlIiAvPgotPG1ldGEgbmFtZT0iREMuVGl0bGUiIGNvbnRlbnQ9IkNyZWF0aW5nIGEgbmV3IHR5cGUgZm9yIHlvdXIgV1NETCBmaWxlIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IlR5cGVzIGRlc2NyaWJlIGFsbCB0aGUgZGF0YSB0eXBlcyB1c2VkIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLiBXU0RMIGlzIG5vdCB0aWVkIGV4Y2x1c2l2ZWx5IHRvIGEgc3BlY2lmaWMgdHlwaW5nIHN5c3RlbSwgYnV0IGl0IHVzZXMgdGhlIFczQyBYTUwgU2NoZW1hIHNwZWNpZmljYXRpb24gYXMgaXRzIGRlZmF1bHQgY2hvaWNlLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUeXBlcyBkZXNjcmliZSBhbGwgdGhlIGRhdGEgdHlwZXMgdXNlZCBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci4gV1NETCBpcyBub3QgdGllZCBleGNsdXNpdmVseSB0byBhIHNwZWNpZmljIHR5cGluZyBzeXN0ZW0sIGJ1dCBpdCB1c2VzIHRoZSBXM0MgWE1MIFNjaGVtYSBzcGVjaWZpY2F0aW9uIGFzIGl0cyBkZWZhdWx0IGNob2ljZS4iIC8+Ci08bWV0YSBjb250ZW50PSJXZWIgc2VydmljZXMsIGNyZWF0aW5nIFdTREwgdHlwZXMsIFdTREwgZmlsZXMsIHR5cGVzIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBjcmVhdGluZyBXU0RMIHR5cGVzLCBXU0RMIGZpbGVzLCB0eXBlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idGNydHdzZGwuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0idGVkdHdzZGwuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0Y3J0dHlwZSIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPkNyZWF0aW5nIGEgbmV3IHR5cGUgZm9yIHlvdXIgV1NETCBmaWxlPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0Y3J0dHlwZSI+PGEgbmFtZT0idGNydHR5cGUiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkNyZWF0aW5nIGEgbmV3IHR5cGUgZm9yIHlvdXIgV1NETCBmaWxlPC9oMT4KLQotCi0KLTxkaXY+PHA+VHlwZXMgZGVzY3JpYmUgYWxsIHRoZSBkYXRhIHR5cGVzIHVzZWQgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuCi1XU0RMIGlzIG5vdCB0aWVkIGV4Y2x1c2l2ZWx5IHRvIGEgc3BlY2lmaWMgdHlwaW5nIHN5c3RlbSwgYnV0IGl0IHVzZXMgdGhlCi1XM0MgWE1MIFNjaGVtYSBzcGVjaWZpY2F0aW9uIGFzIGl0cyBkZWZhdWx0IGNob2ljZS48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPldTREwgYWxsb3dzIHR5cGUgc3lzdGVtcyB0byBiZSBhZGRlZCB2aWEgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cy4KLUFuIGV4dGVuc2liaWxpdHkgZWxlbWVudCBtYXkgYXBwZWFyIHVuZGVyIHRoZSAgPHN0cm9uZz50eXBlczwvc3Ryb25nPiBlbGVtZW50IHRvIGlkZW50aWZ5Ci10aGUgdHlwZSBkZWZpbml0aW9uIHN5c3RlbSBiZWluZyB1c2VkIGFuZCB0byBwcm92aWRlIGFuIFhNTCBjb250YWluZXIgZWxlbWVudAotZm9yIHRoZSB0eXBlIGRlZmluaXRpb25zLjwvcD4KLTxwPlRvIGFkZCBhbiBYU0QgdHlwZSBvciBlbGVtZW50IHRvIHlvdXIgV1NETAotZmlsZTogPC9wPgotPC9kaXY+Ci0KLQotPGRpdiBjbGFzcz0icCI+PHNwYW4+SW4gdGhlIERlc2lnbiB2aWV3LCBjbGljayB0aGUgYXJyb3cgaWNvbiB0byB0aGUgcmlnaHQgb2YgdGhlIHBvcnQKLXR5cGUgb2JqZWN0IHRvIG9wZW4gdGhhdCBvcGVyYXRpb24gaW4gdGhlIFhNTCBzY2hlbWEgZWRpdG9yLjwvc3Bhbj48L2Rpdj4KLQotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBYTUwgc2NoZW1hcywgc2VlIHRoZSA8YSBocmVmPSIvLi4vLi4vb3JnLmVjbGlwc2Uud3N0LnhzZGVkaXRvci5kb2MudXNlci90b3BpY3MvY3htbHNjZWQuZGl0YSI+WE1MIHNjaGVtYSBlZGl0b3IgZG9jdW1lbnRhdGlvbjwvYT4gZm9yIGxpbmtzIHRvIG9ubGluZSByZXNvdXJjZXMuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBjb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCIgdGl0bGU9IlRoZSBXU0RMIGVkaXRvciBhbGxvd3MgeW91IHRvIGVhc2lseSBhbmQgZ3JhcGhpY2FsbHkgY3JlYXRlLCBtb2RpZnksIHZpZXcsIGFuZCB2YWxpZGF0ZSBXU0RMIGZpbGVzLiI+RWRpdGluZyBXU0RMIGZpbGVzIHdpdGggdGhlIFdTREwgRWRpdG9yPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIHRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0idGNydHdzZGwuaHRtbCIgdGl0bGU9IllvdSBjYW4gY3JlYXRlIGEgbmV3LCBlbXB0eSBXU0RMIGZpbGUsIHRoZW4gZWRpdCBpdCB1c2luZyB0aGUgV1NETCBlZGl0b3IuIj5DcmVhdGluZyBhIG5ldyBXU0RMIGZpbGU8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRlZHR3c2RsLmh0bWwiIHRpdGxlPSJPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgYSBXU0RMIGZpbGUsIHlvdSBjYW4gZWRpdCBpdCBpbiB0aGUgV1NETCBlZGl0b3IuIFlvdSBjYW4gYWxzbyBpbXBvcnQgV1NETCBmaWxlcyB5b3UgaGF2ZSBjcmVhdGVkIGludG8gdGhlIHdvcmtiZW5jaCBhbmQgZWRpdCB0aGVtIGluIHRoZSBXU0RMIGVkaXRvci4iPkVkaXRpbmcgV1NETCBmaWxlczwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90Y3J0d3NkbC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90Y3J0d3NkbC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjkyYTcwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydHdzZGwuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0Y3J0d3NkbCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5DcmVhdGluZyBhIG5ldyBXU0RMIGZpbGU8L3RpdGxlPgotPHNob3J0ZGVzYz5Zb3UgY2FuIGNyZWF0ZSBhIG5ldywgZW1wdHkgV1NETCBmaWxlLCB0aGVuIGVkaXQgaXQgdXNpbmcgdGhlIFdTREwKLWVkaXRvci48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V1NETCBmaWxlczxpbmRleHRlcm0+Y3JlYXRpbmc8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5jcmVhdGluZyBXU0RMIGZpbGVzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRvIGNyZWF0ZSBhIFdTREwgZmlsZSwgY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L3A+PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5DcmVhdGUgYSBwcm9qZWN0IHRvIGNvbnRhaW4gdGhlIFdTREwgZG9jdW1lbnQuPC9jbWQ+PGluZm8+SXQgZG9lcwotbm90IG1hdHRlciB3aGF0IGtpbmQgb2YgcHJvamVjdCB5b3UgY3JlYXRlLjwvaW5mbz48L3N0ZXA+Ci08c3RlcD48Y21kPkluIHRoZSB3b3JrYmVuY2gsIGNsaWNrIDxtZW51Y2FzY2FkZT48dWljb250cm9sPkZpbGU8L3VpY29udHJvbD4KLTx1aWNvbnRyb2w+TmV3PC91aWNvbnRyb2w+PHVpY29udHJvbD5PdGhlcjwvdWljb250cm9sPjwvbWVudWNhc2NhZGU+IGFuZCBzZWxlY3QgPG1lbnVjYXNjYWRlPgotPHVpY29udHJvbD5XZWIgU2VydmljZXM8L3VpY29udHJvbD48dWljb250cm9sPldTREw8L3VpY29udHJvbD48L21lbnVjYXNjYWRlPi48L2NtZD4KLTxpbmZvPkNsaWNrIDx1aWNvbnRyb2w+TmV4dDwvdWljb250cm9sPi48L2luZm8+PC9zdGVwPgotPHN0ZXA+PGNtZD5TZWxlY3QgdGhlIHByb2plY3Qgb3IgZm9sZGVyIHRoYXQgd2lsbCBjb250YWluIHRoZSBXU0RMIGZpbGUuPC9jbWQ+Ci08aW5mbz5JbiB0aGUgIDx1aWNvbnRyb2w+RmlsZSBuYW1lPC91aWNvbnRyb2w+IGZpZWxkLCB0eXBlIHRoZSBuYW1lIG9mIHRoZQotV1NETCBmaWxlLiBUaGUgbmFtZSBvZiB5b3VyIFhNTCBmaWxlIG11c3QgZW5kIGluICA8c3lzdGVtb3V0cHV0Pi53c2RsPC9zeXN0ZW1vdXRwdXQ+PC9pbmZvPgotPC9zdGVwPgotPHN0ZXA+PGNtZD5DbGljayAgPHVpY29udHJvbD5OZXh0PC91aWNvbnRyb2w+IGFuZCBlbnRlciB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uCi1vbiB0aGUgbmV4dCBwYWdlIG9mIHRoZSB3aXphcmQ6PC9jbWQ+Ci08c3Vic3RlcHM+Ci08c3Vic3RlcD48Y21kPkEgPHVpY29udHJvbD5UYXJnZXQgbmFtZXNwYWNlPC91aWNvbnRyb2w+IGZvciB0aGUgV1NETCBmaWxlCi1vciBhY2NlcHQgdGhlIGRlZmF1bHQgKDxjb2RlcGg+aHR0cDovL3d3dy5leGFtcGxlLm9yZy88aT5NeVdTRExGaWxlPC9pPi88L2NvZGVwaD4pLjwvY21kPgotPGluZm8+VGhlIHRhcmdldCBuYW1lc3BhY2UgaXMgdXNlZCBmb3IgdGhlIG5hbWVzIG9mIG1lc3NhZ2VzIGFuZCB0aGUgcG9ydAotdHlwZSwgYmluZGluZyBhbmQgc2VydmljZSBkZWZpbmVkIGluIHRoZSBXU0RMIGZpbGUuIFRoZSB2YWx1ZSBtdXN0IHRha2UgdGhlCi1mb3JtIG9mIGEgdmFsaWQgVVJJIChmb3IgZXhhbXBsZSwgPGNvZGVwaD5odHRwOi8vd3d3Lm15Y29tcGFueS5jb20vbXlzZXJ2aWNlLzwvY29kZXBoPik8L2luZm8+Ci08L3N1YnN0ZXA+Ci08c3Vic3RlcD48Y21kPlRoZSA8dWljb250cm9sPlByZWZpeDwvdWljb250cm9sPiBhc3NvY2lhdGVkIHdpdGggdGhlIHRhcmdldAotbmFtZXNwYWNlLjwvY21kPjwvc3Vic3RlcD4KLTxzdWJzdGVwPjxjbWQ+U2VsZWN0IDx1aWNvbnRyb2w+Q3JlYXRlIFdTREwgU2tlbGV0b248L3VpY29udHJvbD4gaWYgeW91IHdhbnQKLXRoZSB3aXphcmQgdG8gY3JlYXRlIHRoZSBza2VsZXRvbiBvZiB0aGUgV1NETCBmaWxlLjwvY21kPjxpbmZvPlRoaXMgd2lsbCBnZW5lcmF0ZQotdGhlIFdTREwgZWxlbWVudHMgcmVxdWlyZWQgZm9yIHlvdXIgc2VydmljZSwgaW5jbHVkaW5nIGJpbmRpbmdzLCBwb3J0cyBhbmQKLW1lc3NhZ2VzLiBZb3UgY2FuIHRoZW4gbW9kaWZ5IHRoZXNlIHRvIG1lZXQgdGhlIHJlcXVpcmVtZW50cyBvZiB5b3VyIFdlYiBzZXJ2aWNlCi0uPC9pbmZvPjwvc3Vic3RlcD4KLTxzdWJzdGVwPjxjbWQ+SWYgeW91IGhhdmUgY2hvc2VuIHRvIGNyZWF0ZSBhIFdTREwgc2tlbGV0b24sIHNlbGVjdCB0aGUgYmluZGluZwotb3B0aW9ucyB5b3Ugd2FudCB0byB1c2UgaW4gdGhlIDx1aWNvbnRyb2w+UHJvdG9jb2w8L3VpY29udHJvbD4gZHJvcCBkb3duLgotVGhlIG9wdGlvbnMgYXJlIFNPQVAgYW5kIEhUVFAuIFVzZSB0aGUgU09BUCBwcm90b2NvbCB3aGVuIHlvdSB3YW50IHRvIGV4Y2hhbmdlCi1zdHJ1Y3R1cmVkIGFuZCB0eXBlZCBpbmZvcm1hdGlvbi4gVXNlIHRoZSBIVFRQIHByb3RvY29sIHdoZW4geW91IHdhbnQgeW91cgotYXBwbGljYXRpb24gY2xpZW50IHRvIGp1c3QgcmVxdWVzdCBvciB1cGRhdGUgaW5mb3JtYXRpb24uPC9jbWQ+PC9zdWJzdGVwPgotPHN1YnN0ZXA+PGNtZD48L2NtZD48aW5mbz5JZiB5b3Ugc2VsZWN0IFNPQVAgeW91IGNhbiB0aGVuIHNlbGVjdCB0aGUgZW5jb2RpbmcKLXN0eWxlIHlvdSB3YW50IHRvIHVzZTo8dWw+Ci08bGk+PHVpY29udHJvbD5kb2N1bWVudCBsaXRlcmFsPC91aWNvbnRyb2w+LiBEb2N1bWVudCBzdHlsZSBtZXNzYWdlcywgbGl0ZXJhbAotZW5jb2RpbmcuIFVzZSB0aGlzIHN0eWxlIG9mIGJpbmRpbmcgd2hlbiB5b3Ugd2FudCB0byBzZW5kIFNPQVAgbWVzc2FnZXMgdGhhdAotY2FuIGJlIHZhbGlkYXRlZCBieSBhbiBYTUwgdmFsaWRhdG9yLiAgQWxsIHRoZSBkYXRhIHR5cGVzIGluIHRoZSBTT0FQIG1lc3NhZ2UKLWJvZHkgYXJlIGRlZmluZWQgaW4gYSBzY2hlbWEsIHNvIHRoZSBXU0RMIHBhcnRzIG11c3QgcG9pbnQgdG8gc2NoZW1hIGVsZW1lbnRzLiA8L2xpPgotPGxpPjx1aWNvbnRyb2w+cnBjIGxpdGVyYWw8L3VpY29udHJvbD4uIFJQQyBzdHlsZSBtZXNzYWdlcywgbGl0ZXJhbCBlbmNvZGluZy4KLVVzZSB0aGlzIHN0eWxlIG9mIGJpbmRpbmcgd2hlbiB5b3Ugd2FudCB0byBzcGVjaWZ5IHRoZSBvcGVyYXRpb24gbWV0aG9kIG5hbWVzCi1pbiB5b3VyIFNPQVAgbWVzc2FnZXMgc28gYSBzZXJ2ZXIgY2FuIGRpc3BhdGNoIHRoZSBzcGVjaWZpZWQgbWV0aG9kcy4gIERhdGEKLXR5cGVzIG11c3QgYmUgZGVmaW5lZCwgc28gdGhlIFdTREwgcGFydHMgbXVzdCBwb2ludCB0byBYU0QgdHlwZXMuPC9saT4KLTxsaT48dWljb250cm9sPnJwYyBlbmNvZGVkPC91aWNvbnRyb2w+LiBSUEMgc3R5bGUgbWVzc2FnZXMgYW5kIFNPQVAgZW5jb2RpbmcuCi1Vc2UgdGhpcyBzdHlsZSBvZiBiaW5kaW5nIHdoZW4geW91IHdhbnQgdG8gZW5jb2RlIGRhdGEgZ3JhcGhzIGluIHlvdXIgU09BUAotbWVzc2FnZXMgc28gYSBzZXJ2ZXIgY2FuIGRlc2VyaWFsaXplIHRoZSBvYmplY3QgZGF0YS4gIERhdGEgdHlwZXMgbXVzdCBiZQotZGVmaW5lZCwgc28gdGhlIFdTREwgcGFydHMgbXVzdCBwb2ludCB0byBYU0QgdHlwZXMuPC9saT4KLTwvdWw+PC9pbmZvPjwvc3Vic3RlcD4KLTxzdWJzdGVwPjxjbWQ+PC9jbWQ+PGluZm8+SWYgeW91IHNlbGVjdCBIVFRQIHlvdSBjYW4gc2VsZWN0IHdoZXRoZXIgdG8gY3JlYXRlCi1hbiBIVFRQIGdldHRlciBvciBzZXR0ZXIuPHVsPgotPGxpPjx1aWNvbnRyb2w+SFRUUCBHRVQ8L3VpY29udHJvbD4uIEEgR0VUIHJlcXVlc3QgZmV0Y2hlcyBkYXRhIGZyb20gYSBXZWIKLXNlcnZlciBiYXNlZCBvbiBhbiBVUkwgdmFsdWUgYW5kIGEgc2V0IG9mIEhUVFAgaGVhZGVycy4gVXNlIHRoaXMgbWV0aG9kIHdoZW4KLXlvdSB3YW50IHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC4gPC9saT4KLTxsaT48dWljb250cm9sPkhUVFAgUE9TVDwvdWljb250cm9sPi4gQSBQT1NUIHJlcXVlc3Qgc2VuZHMgYWRkaXRpb25hbCBkYXRhCi10byB0aGUgc2VydmVyLCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIFVSTCBhbmQgdGhlIGhlYWRlcnMuIFVzZSB0aGlzIG1ldGhvZCB3aGVuCi15b3Ugd2FudCB0byBzZW5kIGRhdGEgZW5jbG9zZWQgaW4gdGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QuPC9saT4KLTwvdWw+PC9pbmZvPjwvc3Vic3RlcD4KLTwvc3Vic3RlcHM+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrICA8dWljb250cm9sPkZpbmlzaDwvdWljb250cm9sPi48L2NtZD48aW5mbz5UaGUgV1NETCBmaWxlCi1vcGVucyBpbiB0aGUgV1NETCBlZGl0b3IuPC9pbmZvPjwvc3RlcD4KLTwvc3RlcHM+Ci08cmVzdWx0PjxwPklmIHlvdSBjcmVhdGVkIGEgV1NETCBmaWxlIHdpdGggYSBza2VsZXRvbiB1c2luZyBTT0FQIGJpbmRpbmdzLAotaXQgc2hvdWxkIGxvb2sgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOjwvcD48cD48aW1hZ2UgYWx0PSJJbWFnZSBvZiBhIFdTREwgc2tlbGV0b24gdXNpbmcgU09BUCBiaW5kaW5ncyIKLWhyZWY9Ii4uL2ltYWdlcy9zb2Fwc2tlbC5naWYiIHBsYWNlbWVudD0iYnJlYWsiPjwvaW1hZ2U+PC9wPjxwPklmIHlvdSBjcmVhdGVkCi1hIFdTREwgZmlsZSB3aXRoIGEgc2tlbGV0b24gdXNpbmcgSFRUUCBiaW5kaW5ncywgaXQgc2hvdWxkIGxvb2sgc2ltaWxhciB0bwotdGhlIGZvbGxvd2luZzo8L3A+PHA+PGltYWdlIGFsdD0iSW1hZ2Ugb2YgYSBXU0RMIHNrZWxldG9uIHVzaW5nIEhUVFAgYmluZGluZ3MiCi1ocmVmPSIuLi9pbWFnZXMvaHR0cHNrZWwuZ2lmIiBwbGFjZW1lbnQ9ImJyZWFrIj48L2ltYWdlPjwvcD48L3Jlc3VsdD4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBjb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGwuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldTREw8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIHRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InRpbXB3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPGxpbmsgaHJlZj0idGVkdHdzZGwuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90Y3J0d3NkbC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90Y3J0d3NkbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmU5MDhiLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGNydHdzZGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJDcmVhdGluZyBhIG5ldyBXU0RMIGZpbGUiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iWW91IGNhbiBjcmVhdGUgYSBuZXcsIGVtcHR5IFdTREwgZmlsZSwgdGhlbiBlZGl0IGl0IHVzaW5nIHRoZSBXU0RMIGVkaXRvci4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iWW91IGNhbiBjcmVhdGUgYSBuZXcsIGVtcHR5IFdTREwgZmlsZSwgdGhlbiBlZGl0IGl0IHVzaW5nIHRoZSBXU0RMIGVkaXRvci4iIC8+Ci08bWV0YSBjb250ZW50PSJXU0RMIGZpbGVzLCBjcmVhdGluZywgV2ViIHNlcnZpY2VzLCBjcmVhdGluZyBXU0RMIGZpbGVzIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iV1NETCBmaWxlcywgY3JlYXRpbmcsIFdlYiBzZXJ2aWNlcywgY3JlYXRpbmcgV1NETCBmaWxlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NkbC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3NkbGVkLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRpbXB3c2RsLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRlZHR3c2RsLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idGNydHdzZGwiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5DcmVhdGluZyBhIG5ldyBXU0RMIGZpbGU8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InRjcnR3c2RsIj48YSBuYW1lPSJ0Y3J0d3NkbCI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+Q3JlYXRpbmcgYSBuZXcgV1NETCBmaWxlPC9oMT4KLQotCi0KLTxkaXY+PHA+WW91IGNhbiBjcmVhdGUgYSBuZXcsIGVtcHR5IFdTREwgZmlsZSwgdGhlbiBlZGl0IGl0IHVzaW5nIHRoZSBXU0RMCi1lZGl0b3IuPC9wPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBjcmVhdGUgYSBXU0RMIGZpbGUsIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+Q3JlYXRlIGEgcHJvamVjdCB0byBjb250YWluIHRoZSBXU0RMIGRvY3VtZW50Ljwvc3Bhbj4gSXQgZG9lcwotbm90IG1hdHRlciB3aGF0IGtpbmQgb2YgcHJvamVjdCB5b3UgY3JlYXRlLjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+SW4gdGhlIHdvcmtiZW5jaCwgY2xpY2sgPHNwYW4gY2xhc3M9Im1lbnVjYXNjYWRlIj48c3BhbiBjbGFzcz0idWljb250cm9sIj5GaWxlPC9zcGFuPgotICZndDsgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV3PC9zcGFuPiAmZ3Q7IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk90aGVyPC9zcGFuPjwvc3Bhbj4gYW5kIHNlbGVjdCA8c3BhbiBjbGFzcz0ibWVudWNhc2NhZGUiPgotPHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViIFNlcnZpY2VzPC9zcGFuPiAmZ3Q7IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPldTREw8L3NwYW4+PC9zcGFuPi48L3NwYW4+Ci0gQ2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV4dDwvc3Bhbj4uPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5TZWxlY3QgdGhlIHByb2plY3Qgb3IgZm9sZGVyIHRoYXQgd2lsbCBjb250YWluIHRoZSBXU0RMIGZpbGUuPC9zcGFuPgotIEluIHRoZSAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmlsZSBuYW1lPC9zcGFuPiBmaWVsZCwgdHlwZSB0aGUgbmFtZSBvZiB0aGUKLVdTREwgZmlsZS4gVGhlIG5hbWUgb2YgeW91ciBYTUwgZmlsZSBtdXN0IGVuZCBpbiAgPHR0IGNsYXNzPSJzeXNvdXQiPi53c2RsPC90dD4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+Q2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+IGFuZCBlbnRlciB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uCi1vbiB0aGUgbmV4dCBwYWdlIG9mIHRoZSB3aXphcmQ6PC9zcGFuPgotPG9sIHR5cGU9ImEiPgotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj5BIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlRhcmdldCBuYW1lc3BhY2U8L3NwYW4+IGZvciB0aGUgV1NETCBmaWxlCi1vciBhY2NlcHQgdGhlIGRlZmF1bHQgKDxzYW1wIGNsYXNzPSJjb2RlcGgiPmh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvPGVtPk15V1NETEZpbGU8L2VtPi88L3NhbXA+KS48L3NwYW4+Ci0gVGhlIHRhcmdldCBuYW1lc3BhY2UgaXMgdXNlZCBmb3IgdGhlIG5hbWVzIG9mIG1lc3NhZ2VzIGFuZCB0aGUgcG9ydAotdHlwZSwgYmluZGluZyBhbmQgc2VydmljZSBkZWZpbmVkIGluIHRoZSBXU0RMIGZpbGUuIFRoZSB2YWx1ZSBtdXN0IHRha2UgdGhlCi1mb3JtIG9mIGEgdmFsaWQgVVJJIChmb3IgZXhhbXBsZSwgPHNhbXAgY2xhc3M9ImNvZGVwaCI+aHR0cDovL3d3dy5teWNvbXBhbnkuY29tL215c2VydmljZS88L3NhbXA+KQotPC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3Bhbj5UaGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+UHJlZml4PC9zcGFuPiBhc3NvY2lhdGVkIHdpdGggdGhlIHRhcmdldAotbmFtZXNwYWNlLjwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCA8c3BhbiBjbGFzcz0idWljb250cm9sIj5DcmVhdGUgV1NETCBTa2VsZXRvbjwvc3Bhbj4gaWYgeW91IHdhbnQKLXRoZSB3aXphcmQgdG8gY3JlYXRlIHRoZSBza2VsZXRvbiBvZiB0aGUgV1NETCBmaWxlLjwvc3Bhbj4gVGhpcyB3aWxsIGdlbmVyYXRlCi10aGUgV1NETCBlbGVtZW50cyByZXF1aXJlZCBmb3IgeW91ciBzZXJ2aWNlLCBpbmNsdWRpbmcgYmluZGluZ3MsIHBvcnRzIGFuZAotbWVzc2FnZXMuIFlvdSBjYW4gdGhlbiBtb2RpZnkgdGhlc2UgdG8gbWVldCB0aGUgcmVxdWlyZW1lbnRzIG9mIHlvdXIgV2ViIHNlcnZpY2UKLS48L2xpPgotCi08bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPklmIHlvdSBoYXZlIGNob3NlbiB0byBjcmVhdGUgYSBXU0RMIHNrZWxldG9uLCBzZWxlY3QgdGhlIGJpbmRpbmcKLW9wdGlvbnMgeW91IHdhbnQgdG8gdXNlIGluIHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Qcm90b2NvbDwvc3Bhbj4gZHJvcCBkb3duLgotVGhlIG9wdGlvbnMgYXJlIFNPQVAgYW5kIEhUVFAuIFVzZSB0aGUgU09BUCBwcm90b2NvbCB3aGVuIHlvdSB3YW50IHRvIGV4Y2hhbmdlCi1zdHJ1Y3R1cmVkIGFuZCB0eXBlZCBpbmZvcm1hdGlvbi4gVXNlIHRoZSBIVFRQIHByb3RvY29sIHdoZW4geW91IHdhbnQgeW91cgotYXBwbGljYXRpb24gY2xpZW50IHRvIGp1c3QgcmVxdWVzdCBvciB1cGRhdGUgaW5mb3JtYXRpb24uPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3Vic3RlcGV4cGFuZCI+PHNwYW4gLz4gSWYgeW91IHNlbGVjdCBTT0FQIHlvdSBjYW4gdGhlbiBzZWxlY3QgdGhlIGVuY29kaW5nCi1zdHlsZSB5b3Ugd2FudCB0byB1c2U6PHVsPgotPGxpPjxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPmRvY3VtZW50IGxpdGVyYWw8L3NwYW4+LiBEb2N1bWVudCBzdHlsZSBtZXNzYWdlcywgbGl0ZXJhbAotZW5jb2RpbmcuIFVzZSB0aGlzIHN0eWxlIG9mIGJpbmRpbmcgd2hlbiB5b3Ugd2FudCB0byBzZW5kIFNPQVAgbWVzc2FnZXMgdGhhdAotY2FuIGJlIHZhbGlkYXRlZCBieSBhbiBYTUwgdmFsaWRhdG9yLiAgQWxsIHRoZSBkYXRhIHR5cGVzIGluIHRoZSBTT0FQIG1lc3NhZ2UKLWJvZHkgYXJlIGRlZmluZWQgaW4gYSBzY2hlbWEsIHNvIHRoZSBXU0RMIHBhcnRzIG11c3QgcG9pbnQgdG8gc2NoZW1hIGVsZW1lbnRzLiA8L2xpPgotCi08bGk+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+cnBjIGxpdGVyYWw8L3NwYW4+LiBSUEMgc3R5bGUgbWVzc2FnZXMsIGxpdGVyYWwgZW5jb2RpbmcuCi1Vc2UgdGhpcyBzdHlsZSBvZiBiaW5kaW5nIHdoZW4geW91IHdhbnQgdG8gc3BlY2lmeSB0aGUgb3BlcmF0aW9uIG1ldGhvZCBuYW1lcwotaW4geW91ciBTT0FQIG1lc3NhZ2VzIHNvIGEgc2VydmVyIGNhbiBkaXNwYXRjaCB0aGUgc3BlY2lmaWVkIG1ldGhvZHMuICBEYXRhCi10eXBlcyBtdXN0IGJlIGRlZmluZWQsIHNvIHRoZSBXU0RMIHBhcnRzIG11c3QgcG9pbnQgdG8gWFNEIHR5cGVzLjwvbGk+Ci0KLTxsaT48c3BhbiBjbGFzcz0idWljb250cm9sIj5ycGMgZW5jb2RlZDwvc3Bhbj4uIFJQQyBzdHlsZSBtZXNzYWdlcyBhbmQgU09BUCBlbmNvZGluZy4KLVVzZSB0aGlzIHN0eWxlIG9mIGJpbmRpbmcgd2hlbiB5b3Ugd2FudCB0byBlbmNvZGUgZGF0YSBncmFwaHMgaW4geW91ciBTT0FQCi1tZXNzYWdlcyBzbyBhIHNlcnZlciBjYW4gZGVzZXJpYWxpemUgdGhlIG9iamVjdCBkYXRhLiAgRGF0YSB0eXBlcyBtdXN0IGJlCi1kZWZpbmVkLCBzbyB0aGUgV1NETCBwYXJ0cyBtdXN0IHBvaW50IHRvIFhTRCB0eXBlcy48L2xpPgotCi08L3VsPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdWJzdGVwZXhwYW5kIj48c3BhbiAvPiBJZiB5b3Ugc2VsZWN0IEhUVFAgeW91IGNhbiBzZWxlY3Qgd2hldGhlciB0byBjcmVhdGUKLWFuIEhUVFAgZ2V0dGVyIG9yIHNldHRlci48dWw+Ci08bGk+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+SFRUUCBHRVQ8L3NwYW4+LiBBIEdFVCByZXF1ZXN0IGZldGNoZXMgZGF0YSBmcm9tIGEgV2ViCi1zZXJ2ZXIgYmFzZWQgb24gYW4gVVJMIHZhbHVlIGFuZCBhIHNldCBvZiBIVFRQIGhlYWRlcnMuIFVzZSB0aGlzIG1ldGhvZCB3aGVuCi15b3Ugd2FudCB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QuIDwvbGk+Ci0KLTxsaT48c3BhbiBjbGFzcz0idWljb250cm9sIj5IVFRQIFBPU1Q8L3NwYW4+LiBBIFBPU1QgcmVxdWVzdCBzZW5kcyBhZGRpdGlvbmFsIGRhdGEKLXRvIHRoZSBzZXJ2ZXIsIHNwZWNpZmllZCBhZnRlciB0aGUgVVJMIGFuZCB0aGUgaGVhZGVycy4gVXNlIHRoaXMgbWV0aG9kIHdoZW4KLXlvdSB3YW50IHRvIHNlbmQgZGF0YSBlbmNsb3NlZCBpbiB0aGUgYm9keSBvZiB0aGUgcmVxdWVzdC48L2xpPgotCi08L3VsPgotPC9saT4KLQotPC9vbD4KLQotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5DbGljayAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluaXNoPC9zcGFuPi48L3NwYW4+IFRoZSBXU0RMIGZpbGUKLW9wZW5zIGluIHRoZSBXU0RMIGVkaXRvci48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5JZiB5b3UgY3JlYXRlZCBhIFdTREwgZmlsZSB3aXRoIGEgc2tlbGV0b24gdXNpbmcgU09BUCBiaW5kaW5ncywKLWl0IHNob3VsZCBsb29rIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzo8L3A+Ci08cD48YnIgLz48aW1nIHNyYz0iLi4vaW1hZ2VzL3NvYXBza2VsLmdpZiIgYWx0PSJJbWFnZSBvZiBhIFdTREwgc2tlbGV0b24gdXNpbmcgU09BUCBiaW5kaW5ncyIgLz48YnIgLz48L3A+Ci08cD5JZiB5b3UgY3JlYXRlZAotYSBXU0RMIGZpbGUgd2l0aCBhIHNrZWxldG9uIHVzaW5nIEhUVFAgYmluZGluZ3MsIGl0IHNob3VsZCBsb29rIHNpbWlsYXIgdG8KLXRoZSBmb2xsb3dpbmc6PC9wPgotPHA+PGJyIC8+PGltZyBzcmM9Ii4uL2ltYWdlcy9odHRwc2tlbC5naWYiIGFsdD0iSW1hZ2Ugb2YgYSBXU0RMIHNrZWxldG9uIHVzaW5nIEhUVFAgYmluZGluZ3MiIC8+PGJyIC8+PC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBjb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NkbC5odG1sIj5XU0RMPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi9jb25jZXB0cy9jd3NkbGVkLmh0bWwiIHRpdGxlPSJUaGUgV1NETCBlZGl0b3IgYWxsb3dzIHlvdSB0byBlYXNpbHkgYW5kIGdyYXBoaWNhbGx5IGNyZWF0ZSwgbW9kaWZ5LCB2aWV3LCBhbmQgdmFsaWRhdGUgV1NETCBmaWxlcy4iPkVkaXRpbmcgV1NETCBmaWxlcyB3aXRoIHRoZSBXU0RMIEVkaXRvcjwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCB0YXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InRpbXB3c2RsLmh0bWwiIHRpdGxlPSJZb3UgY2FuIGltcG9ydCBXU0RMIGZpbGVzIGludG8gdGhlIHdvcmtiZW5jaCBhbmQgb3BlbiB0aGVtIGluIHRoZSBXU0RMIGVkaXRvci4gT3BlbmluZyB0aGVtIGluIHRoZSBXU0RMIGVkaXRvciBwcm92aWRlcyB5b3Ugd2l0aCBhbiBvcHBvcnR1bml0eSB0byBoYXZlIGEgc3RydWN0dXJlZCB2aWV3aW5nIG9mIHRoZSBXU0RMIGZpbGUuIj5JbXBvcnRpbmcgYSBXU0RMIGZpbGU8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRlZHR3c2RsLmh0bWwiIHRpdGxlPSJPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgYSBXU0RMIGZpbGUsIHlvdSBjYW4gZWRpdCBpdCBpbiB0aGUgV1NETCBlZGl0b3IuIFlvdSBjYW4gYWxzbyBpbXBvcnQgV1NETCBmaWxlcyB5b3UgaGF2ZSBjcmVhdGVkIGludG8gdGhlIHdvcmtiZW5jaCBhbmQgZWRpdCB0aGVtIGluIHRoZSBXU0RMIGVkaXRvci4iPkVkaXRpbmcgV1NETCBmaWxlczwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90ZWR0d3NkbC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90ZWR0d3NkbC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODgwOWQwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGVkdHdzZGwuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idGVkdHdzZGwiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+RWRpdGluZyBXU0RMIGZpbGVzPC90aXRsZT4KLTxzaG9ydGRlc2M+T25jZSB5b3UgaGF2ZSBjcmVhdGVkIGEgV1NETCBmaWxlLCB5b3UgY2FuIGVkaXQgaXQgaW4gdGhlIFdTREwKLWVkaXRvci4gWW91IGNhbiBhbHNvIGltcG9ydCBXU0RMIGZpbGVzIHlvdSBoYXZlIGNyZWF0ZWQgaW50byB0aGUgd29ya2JlbmNoCi1hbmQgZWRpdCB0aGVtIGluIHRoZSBXU0RMIGVkaXRvci48L3Nob3J0ZGVzYz4KLTxwcm9sb2c+PG1ldGFkYXRhPgotPGtleXdvcmRzPjxpbmRleHRlcm0+V1NETCBmaWxlczxpbmRleHRlcm0+ZWRpdGluZzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmVkaXRpbmcgV1NETCBmaWxlczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPC9rZXl3b3Jkcz4KLTwvbWV0YWRhdGE+PC9wcm9sb2c+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UbyBvcGVuIGEgV1NETCBmaWxlIGluIHRoZSBXU0RMIGVkaXRvciwgZG91YmxlLWNsaWNrIGl0IGluIHRoZQotTmF2aWdhdG9yIHZpZXcgb3IgcmlnaHQtY2xpY2sgaXQgYW5kIGNsaWNrICA8Yj5PcGVuIFdpdGggPiBXU0RMIEVkaXRvci48L2I+PC9wPjwvY29udGV4dD4KLTwvdGFza2JvZHk+Ci08dGFzayBpZD0iZWRpdGlzb3VyY2V2aWV3Ij4KLTx0aXRsZT5FZGl0aW5nIGluIHRoZSBTb3VyY2UgdmlldzwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD5UbyBlZGl0IGEgV1NETCBmaWxlIGluIHRoZSBTb3VyY2UgdmlldywgY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPk9wZW4geW91ciBXU0RMIGZpbGUgaW4gdGhlIFdTREwgZWRpdG9yLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+Q2xpY2sgdGhlICA8dWljb250cm9sPlNvdXJjZTwvdWljb250cm9sPiB0YWIuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5TZWxlY3QgdGhlIHNvdXJjZSBjb2RlIHlvdSB3YW50IHRvIGVkaXQuPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+PHA+QXQgYW55IHRpbWUsIHlvdSBjYW4gc3dpdGNoIHRvIHRoZSBTb3VyY2UgdmlldyB0byByZXZpZXcgdGhlIHNvdXJjZQotY29kZSBvZiB0aGUgV1NETCBmaWxlLiBZb3UgY2FuIGFsc28gZWRpdCB5b3VyIFdTREwgZmlsZSBkaXJlY3RseSBpbiB0aGUgU291cmNlCi12aWV3LjwvcD48L3Jlc3VsdD4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iZWRpdGVkaXR2aWV3Ij4KLTx0aXRsZT5FZGl0aW5nIGluIHRoZSBEZXNpZ24gdmlldzwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UaGUgRGVzaWduIHZpZXcgcHJvdmlkZXMgYSBncmFwaGljYWwgd2F5IHRvIGJyb3dzZSBhbmQgZWRpdCB5b3VyCi1XU0RMIGZpbGUuIEVhY2ggdHlwZSBvZiB0b3AgbGV2ZWwgV1NETCBvYmplY3QgaXMgc2hvd24gd2l0aGluIGEgdGFidWxhciB2aWV3Ci0oZm9yIGV4YW1wbGUsIHNlcnZpY2UsIGJpbmRpbmcsIHBvcnQgdHlwZSkuIEVhY2ggdGFidWxhciB2aWV3IGNvbnRhaW5zIG9uZQotb3IgbW9yZSByb3dzIHRoYXQgcmVwcmVzZW50IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdC4gVGhlIHNlcnZpY2UsIGJpbmRpbmcsCi1hbmQgcG9ydCB0eXBlIG9iamVjdHMgYXJlICdsaW5rZWQnLiBBIGxpbmUgZGlzcGxheXMgdG8gZGVub3RlIGEgcmVmZXJlbmNlCi0ob3IgYXNzb2NpYXRpb24pIGJldHdlZW4gdGhlc2Ugb2JqZWN0cy48L3A+PHA+IDxpbWFnZSBhbHQ9IkltYWdlIG9mIGEgV1NETCBmaWxlIG9wZW4gaW4gdGhlIFdTREwgZWRpdG9yIgotaHJlZj0iLi4vaW1hZ2VzL3dzZGxlZGl0b3IuZ2lmIiBwbGFjZW1lbnQ9ImJyZWFrIj48L2ltYWdlPjwvcD48L2NvbnRleHQ+Ci08L3Rhc2tib2R5PgotPC90YXNrPgotPHRhc2sgaWQ9ImVkaXRwcm9wZXJ0aWVzdmlldyI+Ci08dGl0bGU+RWRpdGluZyBpbiB0aGUgUHJvcGVydGllcyB2aWV3PC90aXRsZT4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRoZSBQcm9wZXJ0aWVzIHZpZXcgZGlzcGxheXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgYW5kIGVkaXRhYmxlCi1hdHRyaWJ1dGUgdmFsdWVzIG9mIGEgc2VsZWN0ZWQgV1NETCBvYmplY3QgYW5kIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgcGFuZXMKLXRvIGVkaXQ6PC9wPjx1bD4KLTxsaT4gPHVpY29udHJvbD5HZW5lcmFsPC91aWNvbnRyb2w+IHBhbmUsIHdoaWNoIGRpc3BsYXlzIGEgbGlzdCBvZiBvYmplY3QKLWF0dHJpYnV0ZXMuPC9saT4KLTxsaT4gPHVpY29udHJvbD5Eb2N1bWVudGF0aW9uPC91aWNvbnRyb2w+IHBhbmUsIHdoaWNoIHNwZWNpZmllcyB0aGUgaW5mb3JtYXRpb24KLXlvdSB3YW50IHRoZSB1c2VyIHRvIHJlYWQuPC9saT4KLTxsaT4gPHVpY29udHJvbD5FeHRlbnNpb25zPC91aWNvbnRyb2w+IHBhbmUsIHdoaWNoIGlzIHVzZWQgdG8gYWRkIGV4dGVuc2lvbgotY29tcG9uZW50cy48L2xpPgotPC91bD48ZHJhZnQtY29tbWVudD4gW0xlZ2FjeSBUaXRsZV0gU2hvd2luZyBCaW5kaW5ncyBpbiB0aGUgRGVzaWduIFtMZWdhY3kKLUNvbnRleHRdQnkgZGVmYXVsdCBiaW5kaW5ncyBhcmUgc2hvd24gaW4gdGhlIERlc2lnbiBWaWV3LiBTZWxlY3QgdGhlIHNob3cvaGlkZQotYmluZGluZyBidXR0b24gYXQgdGhlIHRvcCBsZWZ0IG9mIHRoZSBEZXNpZ24gVmlldyB0byBoaWRlIHRoZSBiaW5kaW5ncy4gV2l0aAotdGhlIGJpbmRpbmdzIGhpZGRlbiBhIHNlcnZpY2UgY2FuIGJlIGJyb3dzZWQgZnJvbSBhIHB1cmVseSBhYnN0cmFjdCBsZXZlbAotd2l0aG91dCBzaG93aW5nIGJpbmRpbmcgaW5mb3JtYXRpb24uIFdoZW4gdGhlIG5lZWQgYXJpc2VzIHRvIHVuZGVyc3RhbmQgdGhlCi1jb25jcmV0ZSBkZXRhaWxzIHJlcHJlc2VudGVkIGJ5IHRoZSBiaW5kaW5nLCBzZWxlY3QgdGhlIHNob3cvaGlkZSBiaW5kaW5nCi1idXR0b24gYWdhaW4gdG8gbWFrZSB0aGVtIHZpc2libGUuIHZpZXcgW1dyaXRlciBjb21tZW50c10gUmVtb3ZlIHRvcGljICJTaG93aW5nCi1iaW5kaW5ncy4uLiIgYmVjYXVzZSB0aGVyZSBpcyBubyBzaG93L2hpZGUgYmluZGluZyBmdW5jdGlvbiBpbiB0aGUgbmV3IEdVSTwvZHJhZnQtY29tbWVudD48L2NvbnRleHQ+Ci08L3Rhc2tib2R5PgotPC90YXNrPgotPHRhc2sgaWQ9ImVkaXRvdXRsaW5ldmlldyIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5FZGl0aW5nIGluIHRoZSBPdXRsaW5lIHZpZXc8L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+VGhlIE91dGxpbmUgdmlldyB3aWxsIHNob3cgeW91IGFsbCB0aGUgaXRlbXMgaW4geW91ciBXU0RMIGZpbGUKLWFzIHlvdSBhZGQgdGhlbS4gSW4gdGhpcyB2aWV3LCB5b3UgY2FuIGJvdGggY3JlYXRlIGFuZCBkZWxldGUgV1NETCBjb21wb25lbnRzLjwvcD48cD5UaGUKLU91dGxpbmUgdmlldyBjb250YWlucyB0aGUgZm9sbG93aW5nIGZvbGRlcnMgeW91IGNhbiB1c2UgKGJ5IHJpZ2h0LWNsaWNraW5nCi1hbmQgc2VsZWN0aW5nIHRoZSBhcHByb3ByaWF0ZSBvcHRpb24pIHRvIGVkaXQgeW91ciBXU0RMIGZpbGU6PC9wPjx1bD4KLTxsaT4gPGI+SW1wb3J0czwvYj4mbmJzcDtzdGF0ZW1lbnRzLCB3aGljaCBhcmUgdXNlZCB0byBhc3NvY2lhdGUgYSBuYW1lc3BhY2UKLXdpdGggYSBkb2N1bWVudCBsb2NhdGlvbi48L2xpPgotPGxpPiA8Yj5UeXBlczwvYj4sIHdoaWNoIHByb3ZpZGUgZGF0YSB0eXBlIGRlZmluaXRpb25zIHVzZWQgdG8gZGVzY3JpYmUgdGhlCi1tZXNzYWdlcyBleGNoYW5nZWQuIFlvdSBjYW5ub3QgZWRpdCBhbnkgdHlwZXMgZGlyZWN0bHkgdXNpbmcgdGhpcyBmb2xkZXIuPC9saT4KLTxsaT4gPGI+U2VydmljZXM8L2I+LCB3aGljaCBhcmUgdXNlZCB0byBhZ2dyZWdhdGUgYSBzZXQgb2YgcmVsYXRlZCBwb3J0cy48L2xpPgotPGxpPiA8Yj5CaW5kaW5nczwvYj4sIHdoaWNoIHNwZWNpZnkgY29uY3JldGUgcHJvdG9jb2wgYW5kIGRhdGEgZm9ybWF0IHNwZWNpZmljYXRpb25zCi1mb3IgdGhlIG9wZXJhdGlvbnMgYW5kIG1lc3NhZ2VzIGRlZmluZWQgYnkgYSBwYXJ0aWN1bGFyIHBvcnQgdHlwZS48L2xpPgotPGxpPiA8Yj5Qb3J0IFR5cGU8L2I+LCB3aGljaCBpcyBhIHNldCBvZiBhYnN0cmFjdCBvcGVyYXRpb25zLiBFYWNoIG9wZXJhdGlvbgotcmVmZXJzIHRvIGFuIGlucHV0IG1lc3NhZ2UgYW5kIG91dHB1dCBtZXNzYWdlcy4gPC9saT4KLTxsaT4gPGI+TWVzc2FnZXM8L2I+LCB3aGljaCByZXByZXNlbnQgYW4gYWJzdHJhY3QgZGVmaW5pdGlvbiBvZiB0aGUgZGF0YSBiZWluZwotdHJhbnNtaXR0ZWQuIEEgbWVzc2FnZSBjb25zaXN0cyBvZiBsb2dpY2FsIHBhcnRzLCBlYWNoIG9mIHdoaWNoIGlzIGFzc29jaWF0ZWQKLXdpdGggYSBkZWZpbml0aW9uIHdpdGhpbiBzb21lIHR5cGUgc3lzdGVtLjwvbGk+Ci08L3VsPjwvY29udGV4dD4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBjb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGwuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldTREw8L2xpbmt0ZXh0PjwvbGluaz4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIHRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InRjcnR3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPGxpbmsgaHJlZj0idGltcHdzZGwuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90ZWR0d3NkbC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90ZWR0d3NkbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWUxNmM4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGVkdHdzZGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJFZGl0aW5nIFdTREwgZmlsZXMiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iT25jZSB5b3UgaGF2ZSBjcmVhdGVkIGEgV1NETCBmaWxlLCB5b3UgY2FuIGVkaXQgaXQgaW4gdGhlIFdTREwgZWRpdG9yLiBZb3UgY2FuIGFsc28gaW1wb3J0IFdTREwgZmlsZXMgeW91IGhhdmUgY3JlYXRlZCBpbnRvIHRoZSB3b3JrYmVuY2ggYW5kIGVkaXQgdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik9uY2UgeW91IGhhdmUgY3JlYXRlZCBhIFdTREwgZmlsZSwgeW91IGNhbiBlZGl0IGl0IGluIHRoZSBXU0RMIGVkaXRvci4gWW91IGNhbiBhbHNvIGltcG9ydCBXU0RMIGZpbGVzIHlvdSBoYXZlIGNyZWF0ZWQgaW50byB0aGUgd29ya2JlbmNoIGFuZCBlZGl0IHRoZW0gaW4gdGhlIFdTREwgZWRpdG9yLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldTREwgZmlsZXMsIGVkaXRpbmcsIFdlYiBzZXJ2aWNlcywgZWRpdGluZyBXU0RMIGZpbGVzIiBuYW1lPSJEQy5zdWJqZWN0IiAvPgotPG1ldGEgY29udGVudD0iV1NETCBmaWxlcywgZWRpdGluZywgV2ViIHNlcnZpY2VzLCBlZGl0aW5nIFdTREwgZmlsZXMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InRlZHR3c2RsIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+RWRpdGluZyBXU0RMIGZpbGVzPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0ZWR0d3NkbCI+PGEgbmFtZT0idGVkdHdzZGwiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPkVkaXRpbmcgV1NETCBmaWxlczwvaDE+Ci0KLQotCi08ZGl2PjxwPk9uY2UgeW91IGhhdmUgY3JlYXRlZCBhIFdTREwgZmlsZSwgeW91IGNhbiBlZGl0IGl0IGluIHRoZSBXU0RMCi1lZGl0b3IuIFlvdSBjYW4gYWxzbyBpbXBvcnQgV1NETCBmaWxlcyB5b3UgaGF2ZSBjcmVhdGVkIGludG8gdGhlIHdvcmtiZW5jaAotYW5kIGVkaXQgdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IuPC9wPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UbyBvcGVuIGEgV1NETCBmaWxlIGluIHRoZSBXU0RMIGVkaXRvciwgZG91YmxlLWNsaWNrIGl0IGluIHRoZQotTmF2aWdhdG9yIHZpZXcgb3IgcmlnaHQtY2xpY2sgaXQgYW5kIGNsaWNrICA8c3Ryb25nPk9wZW4gV2l0aCAmZ3Q7IFdTREwgRWRpdG9yLjwvc3Ryb25nPjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgaWQ9ImVkaXRpc291cmNldmlldyI+PGEgbmFtZT0iZWRpdGlzb3VyY2V2aWV3Ij48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPkVkaXRpbmcgaW4gdGhlIFNvdXJjZSB2aWV3PC9oMj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9InNlY3Rpb24iPlRvIGVkaXQgYSBXU0RMIGZpbGUgaW4gdGhlIFNvdXJjZSB2aWV3LCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+T3BlbiB5b3VyIFdTREwgZmlsZSBpbiB0aGUgV1NETCBlZGl0b3IuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5DbGljayB0aGUgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlNvdXJjZTwvc3Bhbj4gdGFiLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+U2VsZWN0IHRoZSBzb3VyY2UgY29kZSB5b3Ugd2FudCB0byBlZGl0Ljwvc3Bhbj48L2xpPgotCi08L29sPgotCi08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5BdCBhbnkgdGltZSwgeW91IGNhbiBzd2l0Y2ggdG8gdGhlIFNvdXJjZSB2aWV3IHRvIHJldmlldyB0aGUgc291cmNlCi1jb2RlIG9mIHRoZSBXU0RMIGZpbGUuIFlvdSBjYW4gYWxzbyBlZGl0IHlvdXIgV1NETCBmaWxlIGRpcmVjdGx5IGluIHRoZSBTb3VyY2UKLXZpZXcuPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0iZmFtaWx5bGlua3MiPgotPGRpdiBjbGFzcz0icGFyZW50bGluayI+PHN0cm9uZz5QYXJlbnQgdG9waWM6PC9zdHJvbmc+IDxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCIgdGl0bGU9IlRoZSBXU0RMIGVkaXRvciBhbGxvd3MgeW91IHRvIGVhc2lseSBhbmQgZ3JhcGhpY2FsbHkgY3JlYXRlLCBtb2RpZnksIHZpZXcsIGFuZCB2YWxpZGF0ZSBXU0RMIGZpbGVzLiI+RWRpdGluZyBXU0RMIGZpbGVzIHdpdGggdGhlIFdTREwgRWRpdG9yPC9hPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiBpZD0iZWRpdGVkaXR2aWV3Ij48YSBuYW1lPSJlZGl0ZWRpdHZpZXciPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+RWRpdGluZyBpbiB0aGUgRGVzaWduIHZpZXc8L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VGhlIERlc2lnbiB2aWV3IHByb3ZpZGVzIGEgZ3JhcGhpY2FsIHdheSB0byBicm93c2UgYW5kIGVkaXQgeW91cgotV1NETCBmaWxlLiBFYWNoIHR5cGUgb2YgdG9wIGxldmVsIFdTREwgb2JqZWN0IGlzIHNob3duIHdpdGhpbiBhIHRhYnVsYXIgdmlldwotKGZvciBleGFtcGxlLCBzZXJ2aWNlLCBiaW5kaW5nLCBwb3J0IHR5cGUpLiBFYWNoIHRhYnVsYXIgdmlldyBjb250YWlucyBvbmUKLW9yIG1vcmUgcm93cyB0aGF0IHJlcHJlc2VudCB0aGUgc3RydWN0dXJlIG9mIHRoZSBvYmplY3QuIFRoZSBzZXJ2aWNlLCBiaW5kaW5nLAotYW5kIHBvcnQgdHlwZSBvYmplY3RzIGFyZSAnbGlua2VkJy4gQSBsaW5lIGRpc3BsYXlzIHRvIGRlbm90ZSBhIHJlZmVyZW5jZQotKG9yIGFzc29jaWF0aW9uKSBiZXR3ZWVuIHRoZXNlIG9iamVjdHMuPC9wPgotPHA+IDxiciAvPjxpbWcgc3JjPSIuLi9pbWFnZXMvd3NkbGVkaXRvci5naWYiIGFsdD0iSW1hZ2Ugb2YgYSBXU0RMIGZpbGUgb3BlbiBpbiB0aGUgV1NETCBlZGl0b3IiIC8+PGJyIC8+PC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgaWQ9ImVkaXRwcm9wZXJ0aWVzdmlldyI+PGEgbmFtZT0iZWRpdHByb3BlcnRpZXN2aWV3Ij48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPkVkaXRpbmcgaW4gdGhlIFByb3BlcnRpZXMgdmlldzwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UaGUgUHJvcGVydGllcyB2aWV3IGRpc3BsYXlzIGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGFuZCBlZGl0YWJsZQotYXR0cmlidXRlIHZhbHVlcyBvZiBhIHNlbGVjdGVkIFdTREwgb2JqZWN0IGFuZCBjb250YWlucyB0aGUgZm9sbG93aW5nIHBhbmVzCi10byBlZGl0OjwvcD4KLTx1bD4KLTxsaT4gPHNwYW4gY2xhc3M9InVpY29udHJvbCI+R2VuZXJhbDwvc3Bhbj4gcGFuZSwgd2hpY2ggZGlzcGxheXMgYSBsaXN0IG9mIG9iamVjdAotYXR0cmlidXRlcy48L2xpPgotCi08bGk+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRvY3VtZW50YXRpb248L3NwYW4+IHBhbmUsIHdoaWNoIHNwZWNpZmllcyB0aGUgaW5mb3JtYXRpb24KLXlvdSB3YW50IHRoZSB1c2VyIHRvIHJlYWQuPC9saT4KLQotPGxpPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5FeHRlbnNpb25zPC9zcGFuPiBwYW5lLCB3aGljaCBpcyB1c2VkIHRvIGFkZCBleHRlbnNpb24KLWNvbXBvbmVudHMuPC9saT4KLQotPC91bD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIHhtbDpsYW5nPSJlbi11cyIgaWQ9ImVkaXRvdXRsaW5ldmlldyI+PGEgbmFtZT0iZWRpdG91dGxpbmV2aWV3Ij48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPkVkaXRpbmcgaW4gdGhlIE91dGxpbmUgdmlldzwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj48cD5UaGUgT3V0bGluZSB2aWV3IHdpbGwgc2hvdyB5b3UgYWxsIHRoZSBpdGVtcyBpbiB5b3VyIFdTREwgZmlsZQotYXMgeW91IGFkZCB0aGVtLiBJbiB0aGlzIHZpZXcsIHlvdSBjYW4gYm90aCBjcmVhdGUgYW5kIGRlbGV0ZSBXU0RMIGNvbXBvbmVudHMuPC9wPgotPHA+VGhlCi1PdXRsaW5lIHZpZXcgY29udGFpbnMgdGhlIGZvbGxvd2luZyBmb2xkZXJzIHlvdSBjYW4gdXNlIChieSByaWdodC1jbGlja2luZwotYW5kIHNlbGVjdGluZyB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uKSB0byBlZGl0IHlvdXIgV1NETCBmaWxlOjwvcD4KLTx1bD4KLTxsaT4gPHN0cm9uZz5JbXBvcnRzPC9zdHJvbmc+wqBzdGF0ZW1lbnRzLCB3aGljaCBhcmUgdXNlZCB0byBhc3NvY2lhdGUgYSBuYW1lc3BhY2UKLXdpdGggYSBkb2N1bWVudCBsb2NhdGlvbi48L2xpPgotCi08bGk+IDxzdHJvbmc+VHlwZXM8L3N0cm9uZz4sIHdoaWNoIHByb3ZpZGUgZGF0YSB0eXBlIGRlZmluaXRpb25zIHVzZWQgdG8gZGVzY3JpYmUgdGhlCi1tZXNzYWdlcyBleGNoYW5nZWQuIFlvdSBjYW5ub3QgZWRpdCBhbnkgdHlwZXMgZGlyZWN0bHkgdXNpbmcgdGhpcyBmb2xkZXIuPC9saT4KLQotPGxpPiA8c3Ryb25nPlNlcnZpY2VzPC9zdHJvbmc+LCB3aGljaCBhcmUgdXNlZCB0byBhZ2dyZWdhdGUgYSBzZXQgb2YgcmVsYXRlZCBwb3J0cy48L2xpPgotCi08bGk+IDxzdHJvbmc+QmluZGluZ3M8L3N0cm9uZz4sIHdoaWNoIHNwZWNpZnkgY29uY3JldGUgcHJvdG9jb2wgYW5kIGRhdGEgZm9ybWF0IHNwZWNpZmljYXRpb25zCi1mb3IgdGhlIG9wZXJhdGlvbnMgYW5kIG1lc3NhZ2VzIGRlZmluZWQgYnkgYSBwYXJ0aWN1bGFyIHBvcnQgdHlwZS48L2xpPgotCi08bGk+IDxzdHJvbmc+UG9ydCBUeXBlPC9zdHJvbmc+LCB3aGljaCBpcyBhIHNldCBvZiBhYnN0cmFjdCBvcGVyYXRpb25zLiBFYWNoIG9wZXJhdGlvbgotcmVmZXJzIHRvIGFuIGlucHV0IG1lc3NhZ2UgYW5kIG91dHB1dCBtZXNzYWdlcy4gPC9saT4KLQotPGxpPiA8c3Ryb25nPk1lc3NhZ2VzPC9zdHJvbmc+LCB3aGljaCByZXByZXNlbnQgYW4gYWJzdHJhY3QgZGVmaW5pdGlvbiBvZiB0aGUgZGF0YSBiZWluZwotdHJhbnNtaXR0ZWQuIEEgbWVzc2FnZSBjb25zaXN0cyBvZiBsb2dpY2FsIHBhcnRzLCBlYWNoIG9mIHdoaWNoIGlzIGFzc29jaWF0ZWQKLXdpdGggYSBkZWZpbml0aW9uIHdpdGhpbiBzb21lIHR5cGUgc3lzdGVtLjwvbGk+Ci0KLTwvdWw+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+Ci08ZGl2IGNsYXNzPSJwYXJlbnRsaW5rIj48c3Ryb25nPlBhcmVudCB0b3BpYzo8L3N0cm9uZz4gPGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzZGxlZC5odG1sIiB0aXRsZT0iVGhlIFdTREwgZWRpdG9yIGFsbG93cyB5b3UgdG8gZWFzaWx5IGFuZCBncmFwaGljYWxseSBjcmVhdGUsIG1vZGlmeSwgdmlldywgYW5kIHZhbGlkYXRlIFdTREwgZmlsZXMuIj5FZGl0aW5nIFdTREwgZmlsZXMgd2l0aCB0aGUgV1NETCBFZGl0b3I8L2E+PC9kaXY+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBjb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NkbC5odG1sIj5XU0RMPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSIuLi9jb25jZXB0cy9jd3NkbGVkLmh0bWwiIHRpdGxlPSJUaGUgV1NETCBlZGl0b3IgYWxsb3dzIHlvdSB0byBlYXNpbHkgYW5kIGdyYXBoaWNhbGx5IGNyZWF0ZSwgbW9kaWZ5LCB2aWV3LCBhbmQgdmFsaWRhdGUgV1NETCBmaWxlcy4iPkVkaXRpbmcgV1NETCBmaWxlcyB3aXRoIHRoZSBXU0RMIEVkaXRvcjwvYT48L2Rpdj48L2Rpdj4KLQotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCB0YXNrczwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9InRjcnR3c2RsLmh0bWwiIHRpdGxlPSJZb3UgY2FuIGNyZWF0ZSBhIG5ldywgZW1wdHkgV1NETCBmaWxlLCB0aGVuIGVkaXQgaXQgdXNpbmcgdGhlIFdTREwgZWRpdG9yLiI+Q3JlYXRpbmcgYSBuZXcgV1NETCBmaWxlPC9hPjwvZGl2PgotPGRpdj48YSBocmVmPSJ0aW1wd3NkbC5odG1sIiB0aXRsZT0iWW91IGNhbiBpbXBvcnQgV1NETCBmaWxlcyBpbnRvIHRoZSB3b3JrYmVuY2ggYW5kIG9wZW4gdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IuIE9wZW5pbmcgdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IgcHJvdmlkZXMgeW91IHdpdGggYW4gb3Bwb3J0dW5pdHkgdG8gaGF2ZSBhIHN0cnVjdHVyZWQgdmlld2luZyBvZiB0aGUgV1NETCBmaWxlLiI+SW1wb3J0aW5nIGEgV1NETCBmaWxlPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLQotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90aW1wd3NkbC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90aW1wd3NkbC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDJlYjU4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGltcHdzZGwuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0aW1wd3NkbCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5JbXBvcnRpbmcgYSBXU0RMIGZpbGU8L3RpdGxlPgotPHRpdGxlYWx0cz4KLTxzZWFyY2h0aXRsZT5JbXBvcnRpbmcgV1NETCBmaWxlczwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+WW91IGNhbiBpbXBvcnQgV1NETCBmaWxlcyBpbnRvIHRoZSB3b3JrYmVuY2ggYW5kIG9wZW4gdGhlbSBpbiB0aGUKLVdTREwgZWRpdG9yLiBPcGVuaW5nIHRoZW0gaW4gdGhlIFdTREwgZWRpdG9yIHByb3ZpZGVzIHlvdSB3aXRoIGFuIG9wcG9ydHVuaXR5Ci10byBoYXZlIGEgc3RydWN0dXJlZCB2aWV3aW5nIG9mIHRoZSBXU0RMIGZpbGUuPC9zaG9ydGRlc2M+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtPldTREwgZmlsZXM8aW5kZXh0ZXJtPmltcG9ydGluZzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmltcG9ydGluZyBXU0RMIGZpbGVzPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08L2tleXdvcmRzPgotPC9tZXRhZGF0YT48L3Byb2xvZz4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPlRoZSBXZWIgU2VydmljZSB3aXphcmQgYXNzaXN0cyB5b3UgaW4gY3JlYXRpbmcgYSBuZXcgV2ViIHNlcnZpY2UKLWZyb20gYSBXU0RMIGZpbGUuIFlvdSBtdXN0IGZpcnN0IGNyZWF0ZSBvciBpbXBvcnQgYSBXU0RMIGZpbGUuIEEgV1NETCBmaWxlCi1jYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUgV1NETCBlZGl0b3IuIFRoaXMgaXMgZGVzY3JpYmVkIGluOiAgPHhyZWYgaHJlZj0iLi4vdGFza3MvdGNydHdzZGwuZGl0YSIKLXNjb3BlPSJwZWVyIj5DcmVhdGluZyBhIG5ldyBXU0RMIGZpbGU8L3hyZWY+LiBUbyBpbXBvcnQgYSBXU0RMIGZpbGUgZm9sbG93Ci10aGUgaW5zdHJ1Y3Rpb25zIGJlbG93LjwvcD48cD4gPHVpY29udHJvbD5QcmVyZXF1aXNpdGU6PC91aWNvbnRyb2w+IENyZWF0ZQotYSBwcm9qZWN0LiBJdCBpcyByZWNvbW1lbmQgdGhhdCB5b3UgY3JlYXRlIGEgV2ViIHByb2plY3Qgc28gdGhhdCB0aGUgV1NETAotY2FuIGJlIGVhc2lseSB1c2VkIHRvIGdlbmVyYXRlIGFkZGl0aW9uYWwgYXJ0aWZhY3RzIGFuZCBkZXBsb3llZC48L3A+PHA+Rm9yCi1tb3JlIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGEgV2ViIHByb2plY3QsIHJlZmVyIHRvIHRoZSBXZWIgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQKLWRvY3VtZW50YXRpb24uPC9wPjxwPlRvIGltcG9ydCBhIFdTREwgZmlsZSB0byB5b3VyIFdlYiBwcm9qZWN0LCBjb21wbGV0ZSB0aGUKLWZvbGxvd2luZyBzdGVwczo8L3A+PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5TZWxlY3QgeW91ciBwcm9qZWN0IGluIHRoZSBKYXZhIEVFIE5hdmlnYXRvciBwYW5lLCBhbmQgZnJvbSB0aGUgPHVpY29udHJvbD5GaWxlPC91aWNvbnRyb2w+IG1lbnUsCi1zZWxlY3QgPHVpY29udHJvbD5JbXBvcnQ8L3VpY29udHJvbD4uPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5TZWxlY3QgPG1lbnVjYXNjYWRlPjx1aWNvbnRyb2w+R2VuZXJhbDwvdWljb250cm9sPjx1aWNvbnRyb2w+RmlsZQotU3lzdGVtPC91aWNvbnRyb2w+PC9tZW51Y2FzY2FkZT4gYW5kIGNsaWNrICA8dWljb250cm9sPk5leHQ8L3VpY29udHJvbD4uPC9jbWQ+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPkNsaWNrIDx1aWNvbnRyb2w+QnJvd3NlPC91aWNvbnRyb2w+IG9uIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHdpemFyZAotdG8gc2VsZWN0IHRoZSBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHlvdSB3b3VsZCBsaWtlIHRvIGFkZCB0aGUgV1NETC48L2NtZD4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIGltcG9ydCBzZWxlY3Rpb24gcGFuZXMsIHVzZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgdG8gc2VsZWN0Ci1leGFjdGx5IHRoZSByZXNvdXJjZXMgeW91IHdhbnQgdG8gYWRkOiAgPC9jbWQ+PGluZm8+PHVsPgotPGxpPkV4cGFuZCB0aGUgaGllcmFyY2hpZXMgaW4gdGhlIGxlZnQgcGFuZSBhbmQgc2VsZWN0IG9yIGNsZWFyIHRoZSBjaGVja2JveGVzCi10aGF0IHJlcHJlc2VudCB0aGUgZm9sZGVycyBpbiB0aGUgc2VsZWN0ZWQgZGlyZWN0b3J5LiBUaGVuIGluIHRoZSByaWdodCBwYW5lLAotc2VsZWN0IG9yIGNsZWFyIGNoZWNrIGJveGVzIGZvciBpbmRpdmlkdWFsIGZpbGVzLjwvbGk+Ci08bGk+Q2xpY2sgPHVpY29udHJvbD5GaWx0ZXIgVHlwZXM8L3VpY29udHJvbD4gdG8gZmlsdGVyIHRoZSBjdXJyZW50IHNlbGVjdGlvbgotZm9yIGZpbGVzIG9mIGEgc3BlY2lmaWMgdHlwZS48L2xpPgotPGxpPkNsaWNrIDx1aWNvbnRyb2w+U2VsZWN0IEFsbDwvdWljb250cm9sPiB0byBzZWxlY3QgYWxsIHJlc291cmNlcyBpbiB0aGUKLWRpcmVjdG9yeSwgdGhlbiBnbyB0aHJvdWdoIGFuZCBkZXNlbGVjdCB0aGUgb25lcyB0aGF0IHlvdSBkbyBub3Qgd2FudCB0byBhZGQuPC9saT4KLTxsaT5DbGljayA8dWljb250cm9sPkRlc2VsZWN0IEFsbDwvdWljb250cm9sPiB0byBkZXNlbGVjdCBhbGwgcmVzb3VyY2VzIGluCi10aGUgZGlyZWN0b3J5LCB0aGVuIGdvIHRocm91Z2ggYW5kIGNob29zZSBpbmRpdmlkdWFsIHJlc291cmNlcyB0byBhZGQuPC9saT4KLTwvdWw+PC9pbmZvPjwvc3RlcD4KLTxzdGVwPjxjbWQ+U3BlY2lmeSB0aGUgV29ya2JlbmNoIHByb2plY3Qgb3IgZm9sZGVyIHRoYXQgd2lsbCBiZSB0aGUgaW1wb3J0Ci1kZXN0aW5hdGlvbi48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPldoZW4geW91IGhhdmUgZmluaXNoZWQgc3BlY2lmeWluZyB5b3VyIGltcG9ydCBvcHRpb25zLCBjbGljayA8dWljb250cm9sPkZpbmlzaC48L3VpY29udHJvbD48L2NtZD4KLTwvc3RlcD4KLTwvc3RlcHM+Ci08cmVzdWx0PjxwPkFsdGVybmF0ZWx5LCB5b3UgY2FuIGltcG9ydCBhIFdTREwgZmlsZSB1c2luZyB0aGUgV1NETCBFeHBsb3Jlci4KLUZvciBtb3JlIGluZm9ybWF0aW9uLCByZWZlciB0bzogIDx4cmVmIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90d3NkbGV4cC5kaXRhIgotc2NvcGU9InBlZXIiPiBVc2luZyB0aGUgV1NETCBFeHBsb3JlcjwveHJlZj4uICA8L3A+PC9yZXN1bHQ+Ci08L3Rhc2tib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgY29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XU0RMPC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jd3NkbGVkLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCB0YXNrczwvdGl0bGU+Ci08bGluayBocmVmPSJ0Y3J0d3NkbC5kaXRhIiBzY29wZT0ibG9jYWwiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRlZHR3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGltcHdzZGwuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdGltcHdzZGwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI4YjczYS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RpbXB3c2RsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iSW1wb3J0aW5nIGEgV1NETCBmaWxlIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IllvdSBjYW4gaW1wb3J0IFdTREwgZmlsZXMgaW50byB0aGUgd29ya2JlbmNoIGFuZCBvcGVuIHRoZW0gaW4gdGhlIFdTREwgZWRpdG9yLiBPcGVuaW5nIHRoZW0gaW4gdGhlIFdTREwgZWRpdG9yIHByb3ZpZGVzIHlvdSB3aXRoIGFuIG9wcG9ydHVuaXR5IHRvIGhhdmUgYSBzdHJ1Y3R1cmVkIHZpZXdpbmcgb2YgdGhlIFdTREwgZmlsZS4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iWW91IGNhbiBpbXBvcnQgV1NETCBmaWxlcyBpbnRvIHRoZSB3b3JrYmVuY2ggYW5kIG9wZW4gdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IuIE9wZW5pbmcgdGhlbSBpbiB0aGUgV1NETCBlZGl0b3IgcHJvdmlkZXMgeW91IHdpdGggYW4gb3Bwb3J0dW5pdHkgdG8gaGF2ZSBhIHN0cnVjdHVyZWQgdmlld2luZyBvZiB0aGUgV1NETCBmaWxlLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldTREwgZmlsZXMsIGltcG9ydGluZywgV2ViIHNlcnZpY2VzLCBpbXBvcnRpbmcgV1NETCBmaWxlcyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldTREwgZmlsZXMsIGltcG9ydGluZywgV2ViIHNlcnZpY2VzLCBpbXBvcnRpbmcgV1NETCBmaWxlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NkbC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi9jb25jZXB0cy9jd3NkbGVkLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRjcnR3c2RsLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9InRlZHR3c2RsLmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idGltcHdzZGwiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5JbXBvcnRpbmcgV1NETCBmaWxlczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0idGltcHdzZGwiPjxhIG5hbWU9InRpbXB3c2RsIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5JbXBvcnRpbmcgYSBXU0RMIGZpbGU8L2gxPgotCi0KLQotCi08ZGl2PjxwPllvdSBjYW4gaW1wb3J0IFdTREwgZmlsZXMgaW50byB0aGUgd29ya2JlbmNoIGFuZCBvcGVuIHRoZW0gaW4gdGhlCi1XU0RMIGVkaXRvci4gT3BlbmluZyB0aGVtIGluIHRoZSBXU0RMIGVkaXRvciBwcm92aWRlcyB5b3Ugd2l0aCBhbiBvcHBvcnR1bml0eQotdG8gaGF2ZSBhIHN0cnVjdHVyZWQgdmlld2luZyBvZiB0aGUgV1NETCBmaWxlLjwvcD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VGhlIFdlYiBTZXJ2aWNlIHdpemFyZCBhc3Npc3RzIHlvdSBpbiBjcmVhdGluZyBhIG5ldyBXZWIgc2VydmljZQotZnJvbSBhIFdTREwgZmlsZS4gWW91IG11c3QgZmlyc3QgY3JlYXRlIG9yIGltcG9ydCBhIFdTREwgZmlsZS4gQSBXU0RMIGZpbGUKLWNhbiBiZSBjcmVhdGVkIHVzaW5nIHRoZSBXU0RMIGVkaXRvci4gVGhpcyBpcyBkZXNjcmliZWQgaW46ICA8YSBocmVmPSIuLi90YXNrcy90Y3J0d3NkbC5odG1sIj5DcmVhdGluZyBhIG5ldyBXU0RMIGZpbGU8L2E+LiBUbyBpbXBvcnQgYSBXU0RMIGZpbGUgZm9sbG93Ci10aGUgaW5zdHJ1Y3Rpb25zIGJlbG93LjwvcD4KLTxwPiA8c3BhbiBjbGFzcz0idWljb250cm9sIj5QcmVyZXF1aXNpdGU6PC9zcGFuPiBDcmVhdGUKLWEgcHJvamVjdC4gSXQgaXMgcmVjb21tZW5kIHRoYXQgeW91IGNyZWF0ZSBhIFdlYiBwcm9qZWN0IHNvIHRoYXQgdGhlIFdTREwKLWNhbiBiZSBlYXNpbHkgdXNlZCB0byBnZW5lcmF0ZSBhZGRpdGlvbmFsIGFydGlmYWN0cyBhbmQgZGVwbG95ZWQuPC9wPgotPHA+Rm9yCi1tb3JlIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGEgV2ViIHByb2plY3QsIHJlZmVyIHRvIHRoZSBXZWIgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQKLWRvY3VtZW50YXRpb24uPC9wPgotPHA+VG8gaW1wb3J0IGEgV1NETCBmaWxlIHRvIHlvdXIgV2ViIHByb2plY3QsIGNvbXBsZXRlIHRoZQotZm9sbG93aW5nIHN0ZXBzOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB5b3VyIHByb2plY3QgaW4gdGhlIEphdmEgRUUgTmF2aWdhdG9yIHBhbmUsIGFuZCBmcm9tIHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5GaWxlPC9zcGFuPiBtZW51LAotc2VsZWN0IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkltcG9ydDwvc3Bhbj4uPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+U2VsZWN0IDxzcGFuIGNsYXNzPSJtZW51Y2FzY2FkZSI+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+R2VuZXJhbDwvc3Bhbj4gJmd0OyA8c3BhbiBjbGFzcz0idWljb250cm9sIj5GaWxlCi1TeXN0ZW08L3NwYW4+PC9zcGFuPiBhbmQgY2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+Ljwvc3Bhbj4KLTwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+Q2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QnJvd3NlPC9zcGFuPiBvbiB0aGUgbmV4dCBwYWdlIG9mIHRoZSB3aXphcmQKLXRvIHNlbGVjdCB0aGUgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB5b3Ugd291bGQgbGlrZSB0byBhZGQgdGhlIFdTREwuPC9zcGFuPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5JbiB0aGUgaW1wb3J0IHNlbGVjdGlvbiBwYW5lcywgdXNlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyB0byBzZWxlY3QKLWV4YWN0bHkgdGhlIHJlc291cmNlcyB5b3Ugd2FudCB0byBhZGQ6ICA8L3NwYW4+IDx1bD4KLTxsaT5FeHBhbmQgdGhlIGhpZXJhcmNoaWVzIGluIHRoZSBsZWZ0IHBhbmUgYW5kIHNlbGVjdCBvciBjbGVhciB0aGUgY2hlY2tib3hlcwotdGhhdCByZXByZXNlbnQgdGhlIGZvbGRlcnMgaW4gdGhlIHNlbGVjdGVkIGRpcmVjdG9yeS4gVGhlbiBpbiB0aGUgcmlnaHQgcGFuZSwKLXNlbGVjdCBvciBjbGVhciBjaGVjayBib3hlcyBmb3IgaW5kaXZpZHVhbCBmaWxlcy48L2xpPgotCi08bGk+Q2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmlsdGVyIFR5cGVzPC9zcGFuPiB0byBmaWx0ZXIgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCi1mb3IgZmlsZXMgb2YgYSBzcGVjaWZpYyB0eXBlLjwvbGk+Ci0KLTxsaT5DbGljayA8c3BhbiBjbGFzcz0idWljb250cm9sIj5TZWxlY3QgQWxsPC9zcGFuPiB0byBzZWxlY3QgYWxsIHJlc291cmNlcyBpbiB0aGUKLWRpcmVjdG9yeSwgdGhlbiBnbyB0aHJvdWdoIGFuZCBkZXNlbGVjdCB0aGUgb25lcyB0aGF0IHlvdSBkbyBub3Qgd2FudCB0byBhZGQuPC9saT4KLQotPGxpPkNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRlc2VsZWN0IEFsbDwvc3Bhbj4gdG8gZGVzZWxlY3QgYWxsIHJlc291cmNlcyBpbgotdGhlIGRpcmVjdG9yeSwgdGhlbiBnbyB0aHJvdWdoIGFuZCBjaG9vc2UgaW5kaXZpZHVhbCByZXNvdXJjZXMgdG8gYWRkLjwvbGk+Ci0KLTwvdWw+Ci08L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPlNwZWNpZnkgdGhlIFdvcmtiZW5jaCBwcm9qZWN0IG9yIGZvbGRlciB0aGF0IHdpbGwgYmUgdGhlIGltcG9ydAotZGVzdGluYXRpb24uPC9zcGFuPjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+V2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBzcGVjaWZ5aW5nIHlvdXIgaW1wb3J0IG9wdGlvbnMsIGNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZpbmlzaC48L3NwYW4+PC9zcGFuPgotPC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+QWx0ZXJuYXRlbHksIHlvdSBjYW4gaW1wb3J0IGEgV1NETCBmaWxlIHVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyLgotRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlZmVyIHRvOiAgPGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R3c2RsZXhwLmh0bWwiPlVzaW5nIHRoZSBXU0RMIEV4cGxvcmVyPC9hPi4gIDwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgY29uY2VwdHM8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzZGwuaHRtbCI+V1NETDwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzZGxlZC5odG1sIiB0aXRsZT0iVGhlIFdTREwgZWRpdG9yIGFsbG93cyB5b3UgdG8gZWFzaWx5IGFuZCBncmFwaGljYWxseSBjcmVhdGUsIG1vZGlmeSwgdmlldywgYW5kIHZhbGlkYXRlIFdTREwgZmlsZXMuIj5FZGl0aW5nIFdTREwgZmlsZXMgd2l0aCB0aGUgV1NETCBFZGl0b3I8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgdGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJ0Y3J0d3NkbC5odG1sIiB0aXRsZT0iWW91IGNhbiBjcmVhdGUgYSBuZXcsIGVtcHR5IFdTREwgZmlsZSwgdGhlbiBlZGl0IGl0IHVzaW5nIHRoZSBXU0RMIGVkaXRvci4iPkNyZWF0aW5nIGEgbmV3IFdTREwgZmlsZTwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idGVkdHdzZGwuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgY3JlYXRlZCBhIFdTREwgZmlsZSwgeW91IGNhbiBlZGl0IGl0IGluIHRoZSBXU0RMIGVkaXRvci4gWW91IGNhbiBhbHNvIGltcG9ydCBXU0RMIGZpbGVzIHlvdSBoYXZlIGNyZWF0ZWQgaW50byB0aGUgd29ya2JlbmNoIGFuZCBlZGl0IHRoZW0gaW4gdGhlIFdTREwgZWRpdG9yLiI+RWRpdGluZyBXU0RMIGZpbGVzPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RzZXRiaW5kLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RzZXRiaW5kLmRpdGEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZDA1ODkuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90c2V0YmluZC5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0c2V0YmluZCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5TZXR0aW5nIGEgYmluZGluZzwvdGl0bGU+Ci08c2hvcnRkZXNjPkEgYmluZGluZyBpcyBhIHRvcCBsZXZlbCBXU0RMIG9iamVjdCB0aGF0IHByb3ZpZGVzIGEgY29uY3JldGUgc3BlY2lmaWNhdGlvbgotcmVnYXJkaW5nIHRoZSB0cmFuc21pc3Npb24gb2YgbWVzc2FnZXMgdG8gYW5kIGZyb20gYSB3ZWIgc2VydmljZS4gQSBiaW5kaW5nCi1yZWZlcmVuY2VzIGV4YWN0bHkgb25lIHBvcnQgdHlwZS4gVGhlIHN0cnVjdHVyZSBvZiBhIGJpbmRpbmcgY29ycmVzcG9uZHMgdmVyeQotY2xvc2VseSB0byB0aGF0IG9mIHRoZSBwb3J0IHR5cGUuIFRoZSBiaW5kaW5nIGNvbnRhaW5zIGV4dGVuc2liaWxpdHkgZWxlbWVudHMKLShmb3IgZXhhbXBsZSwgU09BUCwgaHR0cCwgYW5kIG1pbWUpIHRoYXQgc3BlY2lmeSBwcm90b2NvbCBzcGVjaWZpYyBkZXRhaWxzLgotRWFjaCBwb3J0IHdpdGhpbiBhIHNlcnZpY2UgcmVmZXJlbmNlcyBleGFjdGx5IG9uZSBiaW5kaW5nLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XZWIgc2VydmljZXM8aW5kZXh0ZXJtPmJpbmRpbmdzPGluZGV4dGVybT5jcmVhdGluZzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0+c2V0dGluZwotV1NETCBiaW5kaW5nczwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0+V1NETCBmaWxlczxpbmRleHRlcm0+YmluZGluZ3M8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+WW91IGNhbiBjcmVhdGUgYSBiaW5kaW5nIGJ5IHJpZ2h0IGNsaWNraW5nIGluIGFueSBibGFuayBzcGFjZQotaW4gdGhlIERlc2lnbiB2aWV3IGFuZCBzZWxlY3RpbmcgPHVpY29udHJvbD5BZGQgQmluZGluZzwvdWljb250cm9sPi4gWW91IGNhbgotY3JlYXRlIGEgbmV3IGJpbmRpbmcsIHJldXNlIGFuIGV4aXN0aW5nIG9uZSwgb3IgaW1wb3J0IG9uZS4gPC9wPjwvY29udGV4dD4KLTwvdGFza2JvZHk+Ci08dGFzayBpZD0iY3JlYXRlbmV3YmluZCI+Ci08dGl0bGU+Q3JlYXRpbmcgYSBuZXcgYmluZGluZzwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UbyBjcmVhdGUgYSBuZXcgYmluZGluZyBmb3IgeW91ciBwb3J0LCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nCi1zdGVwczo8L3A+PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5JbiB0aGUgRGVzaWduIHZpZXcsIHJpZ2h0LWNsaWNrIHlvdXIgcG9ydCBhbmQgY2xpY2sgPGI+U2V0IEJpbmRpbmcKLT4gTmV3IEJpbmRpbmc8L2I+LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIDxiPk5hbWU8L2I+IGZpZWxkLCB0eXBlIHRoZSBuYW1lIG9mIHRoZSBiaW5kaW5nLjwvY21kPjxpbmZvPlRoZQotbmFtZSBzaG91bGQgYmUgdW5pcXVlIGFtb25nIGFsbCBiaW5kaW5ncyBkZWZpbmVkIHdpdGhpbiB0aGUgZW5jbG9zaW5nIFdTREwKLWRvY3VtZW50LiBDbGljayA8Yj5PSy48L2I+IFRvIHNlbGVjdCB0aGUgbmV3IGJpbmRpbmcsIGNsaWNrIHRoZSBiaW5kaW5nIG9iamVjdC48L2luZm8+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPlR5cGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nIHlvdSB3YW50IHRoZSB1c2VyIHRvIHJlYWQKLWluIHRoZSA8Yj5Eb2N1bWVudGF0aW9uPC9iPiBwYW5lLjwvY21kPjwvc3RlcD4KLTwvc3RlcHM+Ci08cmVzdWx0Pjxub3RlPkEgPGI+UG9ydFR5cGU8L2I+IGlzIGEgbmFtZWQgc2V0IG9mIGFic3RyYWN0IG9wZXJhdGlvbnMgYW5kCi10aGUgYWJzdHJhY3QgbWVzc2FnZXMgaW52b2x2ZWQuIFlvdSBjYW4gZWl0aGVyIGNyZWF0ZSBhIG5ldyBwb3J0IHR5cGUgZm9yCi15b3VyIGJpbmRpbmcsIHJldXNlIGFuIGV4aXN0aW5nIG9uZSwgb3IgaW1wb3J0IG9uZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sCi1zZWUgPHhyZWYgZm9ybWF0PSJodG1sIiBocmVmPSIuLi90YXNrcy90c2V0cHJ0dC5kaXRhIiBzY29wZT0icGVlciI+U2V0dGluZwotYSBQb3J0IFR5cGU8L3hyZWY+Ljwvbm90ZT48bm90ZSB0eXBlPSJ0aXAiPllvdSBjYW4gYWxzbyBjcmVhdGUgYSBuZXcgYmluZGluZwotZm9yIHlvdXIgcG9ydCB1c2luZyB0aGUgT3V0bGluZSB2aWV3LiBSaWdodCBjbGljayBvbiB0aGUgPHVpY29udHJvbD5CaW5kaW5nczwvdWljb250cm9sPiBmb2xkZXIKLWFuZCBzZWxlY3QgPHVpY29udHJvbD5BZGQgQmluZGluZzwvdWljb250cm9sPi48L25vdGU+PC9yZXN1bHQ+Ci08L3Rhc2tib2R5PgotPC90YXNrPgotPHRhc2sgaWQ9InJldXNlYmluZGluZyI+Ci08dGl0bGU+UmV1c2luZyBhIGJpbmRpbmcgZm9yIGEgcG9ydDwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD48cD5UbyByZXVzZSBhIGJpbmRpbmcgZm9yIHlvdXIgcG9ydCwgY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L3A+PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5JbiB0aGUgRGVzaWduIHZpZXcsIHNlbGVjdCB5b3VyIHBvcnQuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5JbiB0aGUgUHJvcGVydGllcyB2aWV3LCBjbGljayB0aGUgPGI+R2VuZXJhbDwvYj4gcGFuZS48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkZyb20gdGhlIDxiPkJpbmRpbmc8L2I+IGRyb3AgZG93biBsaXN0LCBzZWxlY3QgdGhlIGJpbmRpbmcgeW91Ci13YW50IHRvIHVzZS48L2NtZD48L3N0ZXA+Ci08L3N0ZXBzPgotPC90YXNrYm9keT4KLTwvdGFzaz4KLTx0YXNrIGlkPSJyZWdlbmVyYXRpbmdhYmluZGluZyI+Ci08dGl0bGU+UmVnZW5lcmF0aW5nIGEgYmluZGluZzwvdGl0bGU+Ci08dGFza2JvZHk+Ci08Y29udGV4dD5UbyByZWdlbmVyYXRlIGEgYmluZGluZywgY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPlJpZ2h0LWNsaWNrIHRoZSBiaW5kaW5nIHlvdSB3YW50IHRvIHJlZ2VuZXJhdGUuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5TZWxlY3QgPHVpY29udHJvbD5HZW5lcmF0ZSBCaW5kaW5nIENvbnRlbnQ8L3VpY29udHJvbD4uPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5TcGVjaWZ5IHRoZSByZXF1aXJlZCBiaW5kaW5nIGluZm9ybWF0aW9uLiBJZiB5b3UgYXJlIG1vZGlmeWluZwotYW4gZXhpc3RpbmcgYmluZGluZywgc2VsZWN0IHRoZSA8dWljb250cm9sPk92ZXJ3cml0ZSBleGlzdGluZyBiaW5kaW5nIGluZm9ybWF0aW9uPC91aWNvbnRyb2w+IGNoZWNrCi1ib3guPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iaW1wYmluZGluZyI+Ci08dGl0bGU+SW1wb3J0IGFuIGV4aXN0aW5nIGJpbmRpbmc8L3RpdGxlPgotPHRhc2tib2R5PgotPGNvbnRleHQ+VG8gaW1wb3J0IGFuIGV4aXN0aW5nIGJpbmRpbmcgZm9yIHlvdXIgcG9ydCwgY29tcGxldGUgdGhlIGZvbGxvd2luZwotc3RlcHM6PC9jb250ZXh0PgotPHN0ZXBzPgotPHN0ZXA+PGNtZD5JbiB0aGUgRGVzaWduIHZpZXcsIHJpZ2h0LWNsaWNrIHlvdXIgcG9ydCBhbmQgY2xpY2sgIDxiPlNldCBCaW5kaW5nCi0+IEV4aXN0aW5nIEJpbmRpbmcuPC9iPjwvY21kPjwvc3RlcD4KLTxzdGVwIGltcG9ydGFuY2U9Im9wdGlvbmFsIj48Y21kPkluIHRoZSA8Yj5OYW1lPC9iPiBmaWVsZCwgdHlwZSBhIHNlYXJjaCBzdHJpbmcKLXRvIGZpbHRlciB0aGUgbGlzdCBvciBsZWF2ZSB0aGUgZmllbGQgYmxhbmsgdG8gdmlldyBhbGwuPC9jbWQ+PC9zdGVwPgotPHN0ZXA+PGNtZD5Zb3UgY2FuIGltcG9ydCBhIGJpbmRpbmcgYnkgc2VsZWN0aW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnM6PC9jbWQ+Ci08Y2hvaWNlcz4KLTxjaG9pY2U+PGI+V29ya3NwYWNlPC9iPjogbGlzdHMgdGhlIGJpbmRpbmdzIGF2YWlsYWJsZSBpbiB5b3VyIHdvcmtzcGFjZS48L2Nob2ljZT4KLTxjaG9pY2U+PGI+RW5jbG9zaW5nIFByb2plY3Q8L2I+OiBsaXN0cyB0aGUgYmluZGluZ3MgYXZhaWxhYmxlIGluIHRoZSBwcm9qZWN0Ci10aGF0IGNvbnRhaW5zIHlvdXIgZmlsZS48L2Nob2ljZT4KLTxjaG9pY2U+PGI+Q3VycmVudCBSZXNvdXJjZTwvYj46IGxpc3RzIHRoZSBiaW5kaW5nIHR5cGVzIGF2YWlsYWJsZSBpbiB5b3VyCi1jdXJyZW50IGZpbGUuPC9jaG9pY2U+Ci08Y2hvaWNlPjxiPldvcmtpbmcgU2V0czwvYj46IGxpc3RzIHRoZSBiaW5kaW5ncyBhdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgc2V0Ci1vZiBmaWxlcy4gVG8gc3BlY2lmeSBhIHdvcmtpbmcgc2V0LCBjbGljayA8Yj5DaG9vc2U8L2I+LiBZb3UgY2FuIHNlbGVjdCBmaWxlcwotZnJvbSBhbiBleGlzdGluZyB3b3JraW5nIHNldCBvciBjcmVhdGUgYSBuZXcgd29ya2luZyBzZXQuIE9uY2UgeW91IGhhdmUgc2VsZWN0ZWQKLXRoZSBmaWxlcywgY2xpY2sgPGI+T0s8L2I+LjwvY2hvaWNlPgotPC9jaG9pY2VzPgotPC9zdGVwPgotPHN0ZXA+PGNtZD5UaGUgYmluZGluZ3Mgd2lsbCBiZSBsaXN0ZWQuIFNlbGVjdCBvbmUgYW5kIGNsaWNrIDxiPk9LPC9iPi4gSW4KLXRoZSBEZXNpZ24gdmlldywgY2xpY2sgdGhlIGJpbmRpbmcgb2JqZWN0LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIFByb3BlcnRpZXMgdmlldywgdHlwZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJpbmRpbmcKLXlvdSB3aXNoIHRoZSB1c2VyIHRvIHJlYWQgaW4gdGhlIDxiPkRvY3VtZW50YXRpb248L2I+IHBhbmUuPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBjb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi9jb25jZXB0cy9jd3NkbGVkLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPC9saW5rbGlzdD4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCB0YXNrczwvdGl0bGU+Ci08bGluayBocmVmPSJ0Y3J0d3NkbC5kaXRhIiBzY29wZT0ibG9jYWwiPjwvbGluaz4KLTxsaW5rIGhyZWY9InRlZHR3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdHNldGJpbmQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdHNldGJpbmQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNhNjQ2MS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3Rhc2tzL3RzZXRiaW5kLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iU2V0dGluZyBhIGJpbmRpbmciIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iQSBiaW5kaW5nIGlzIGEgdG9wIGxldmVsIFdTREwgb2JqZWN0IHRoYXQgcHJvdmlkZXMgYSBjb25jcmV0ZSBzcGVjaWZpY2F0aW9uIHJlZ2FyZGluZyB0aGUgdHJhbnNtaXNzaW9uIG9mIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIGEgd2ViIHNlcnZpY2UuIEEgYmluZGluZyByZWZlcmVuY2VzIGV4YWN0bHkgb25lIHBvcnQgdHlwZS4gVGhlIHN0cnVjdHVyZSBvZiBhIGJpbmRpbmcgY29ycmVzcG9uZHMgdmVyeSBjbG9zZWx5IHRvIHRoYXQgb2YgdGhlIHBvcnQgdHlwZS4gVGhlIGJpbmRpbmcgY29udGFpbnMgZXh0ZW5zaWJpbGl0eSBlbGVtZW50cyAoZm9yIGV4YW1wbGUsIFNPQVAsIGh0dHAsIGFuZCBtaW1lKSB0aGF0IHNwZWNpZnkgcHJvdG9jb2wgc3BlY2lmaWMgZGV0YWlscy4gRWFjaCBwb3J0IHdpdGhpbiBhIHNlcnZpY2UgcmVmZXJlbmNlcyBleGFjdGx5IG9uZSBiaW5kaW5nLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJBIGJpbmRpbmcgaXMgYSB0b3AgbGV2ZWwgV1NETCBvYmplY3QgdGhhdCBwcm92aWRlcyBhIGNvbmNyZXRlIHNwZWNpZmljYXRpb24gcmVnYXJkaW5nIHRoZSB0cmFuc21pc3Npb24gb2YgbWVzc2FnZXMgdG8gYW5kIGZyb20gYSB3ZWIgc2VydmljZS4gQSBiaW5kaW5nIHJlZmVyZW5jZXMgZXhhY3RseSBvbmUgcG9ydCB0eXBlLiBUaGUgc3RydWN0dXJlIG9mIGEgYmluZGluZyBjb3JyZXNwb25kcyB2ZXJ5IGNsb3NlbHkgdG8gdGhhdCBvZiB0aGUgcG9ydCB0eXBlLiBUaGUgYmluZGluZyBjb250YWlucyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzIChmb3IgZXhhbXBsZSwgU09BUCwgaHR0cCwgYW5kIG1pbWUpIHRoYXQgc3BlY2lmeSBwcm90b2NvbCBzcGVjaWZpYyBkZXRhaWxzLiBFYWNoIHBvcnQgd2l0aGluIGEgc2VydmljZSByZWZlcmVuY2VzIGV4YWN0bHkgb25lIGJpbmRpbmcuIiAvPgotPG1ldGEgY29udGVudD0iV2ViIHNlcnZpY2VzLCBiaW5kaW5ncywgY3JlYXRpbmcsIHNldHRpbmcgV1NETCBiaW5kaW5ncywgV1NETCBmaWxlcyIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgYmluZGluZ3MsIGNyZWF0aW5nLCBzZXR0aW5nIFdTREwgYmluZGluZ3MsIFdTREwgZmlsZXMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InRzZXRiaW5kIiBuYW1lPSJEQy5JZGVudGlmaWVyIiAvPgotPG1ldGEgY29udGVudD0iZW4tdXMiIG5hbWU9IkRDLkxhbmd1YWdlIiAvPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+Ci08dGl0bGU+U2V0dGluZyBhIGJpbmRpbmc8L3RpdGxlPgotPC9oZWFkPgotPGJvZHkgaWQ9InRzZXRiaW5kIj48YSBuYW1lPSJ0c2V0YmluZCI+PCEtLSAtLT48L2E+Ci0KLQotPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+U2V0dGluZyBhIGJpbmRpbmc8L2gxPgotCi0KLQotPGRpdj48cD5BIGJpbmRpbmcgaXMgYSB0b3AgbGV2ZWwgV1NETCBvYmplY3QgdGhhdCBwcm92aWRlcyBhIGNvbmNyZXRlIHNwZWNpZmljYXRpb24KLXJlZ2FyZGluZyB0aGUgdHJhbnNtaXNzaW9uIG9mIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIGEgd2ViIHNlcnZpY2UuIEEgYmluZGluZwotcmVmZXJlbmNlcyBleGFjdGx5IG9uZSBwb3J0IHR5cGUuIFRoZSBzdHJ1Y3R1cmUgb2YgYSBiaW5kaW5nIGNvcnJlc3BvbmRzIHZlcnkKLWNsb3NlbHkgdG8gdGhhdCBvZiB0aGUgcG9ydCB0eXBlLiBUaGUgYmluZGluZyBjb250YWlucyBleHRlbnNpYmlsaXR5IGVsZW1lbnRzCi0oZm9yIGV4YW1wbGUsIFNPQVAsIGh0dHAsIGFuZCBtaW1lKSB0aGF0IHNwZWNpZnkgcHJvdG9jb2wgc3BlY2lmaWMgZGV0YWlscy4KLUVhY2ggcG9ydCB3aXRoaW4gYSBzZXJ2aWNlIHJlZmVyZW5jZXMgZXhhY3RseSBvbmUgYmluZGluZy48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPllvdSBjYW4gY3JlYXRlIGEgYmluZGluZyBieSByaWdodCBjbGlja2luZyBpbiBhbnkgYmxhbmsgc3BhY2UKLWluIHRoZSBEZXNpZ24gdmlldyBhbmQgc2VsZWN0aW5nIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFkZCBCaW5kaW5nPC9zcGFuPi4gWW91IGNhbgotY3JlYXRlIGEgbmV3IGJpbmRpbmcsIHJldXNlIGFuIGV4aXN0aW5nIG9uZSwgb3IgaW1wb3J0IG9uZS4gPC9wPgotPC9kaXY+Ci0KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJuZXN0ZWQxIiBpZD0iY3JlYXRlbmV3YmluZCI+PGEgbmFtZT0iY3JlYXRlbmV3YmluZCI+PCEtLSAtLT48L2E+Ci08aDIgY2xhc3M9InRvcGljdGl0bGUyIj5DcmVhdGluZyBhIG5ldyBiaW5kaW5nPC9oMj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPlRvIGNyZWF0ZSBhIG5ldyBiaW5kaW5nIGZvciB5b3VyIHBvcnQsIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcKLXN0ZXBzOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSBEZXNpZ24gdmlldywgcmlnaHQtY2xpY2sgeW91ciBwb3J0IGFuZCBjbGljayA8c3Ryb25nPlNldCBCaW5kaW5nCi0mZ3Q7IE5ldyBCaW5kaW5nPC9zdHJvbmc+Ljwvc3Bhbj48L2xpPgotCi08bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkluIHRoZSA8c3Ryb25nPk5hbWU8L3N0cm9uZz4gZmllbGQsIHR5cGUgdGhlIG5hbWUgb2YgdGhlIGJpbmRpbmcuPC9zcGFuPiBUaGUKLW5hbWUgc2hvdWxkIGJlIHVuaXF1ZSBhbW9uZyBhbGwgYmluZGluZ3MgZGVmaW5lZCB3aXRoaW4gdGhlIGVuY2xvc2luZyBXU0RMCi1kb2N1bWVudC4gQ2xpY2sgPHN0cm9uZz5PSy48L3N0cm9uZz4gVG8gc2VsZWN0IHRoZSBuZXcgYmluZGluZywgY2xpY2sgdGhlIGJpbmRpbmcgb2JqZWN0LgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5UeXBlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYmluZGluZyB5b3Ugd2FudCB0aGUgdXNlciB0byByZWFkCi1pbiB0aGUgPHN0cm9uZz5Eb2N1bWVudGF0aW9uPC9zdHJvbmc+IHBhbmUuPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxkaXYgY2xhc3M9Im5vdGUiPjxzcGFuIGNsYXNzPSJub3RldGl0bGUiPk5vdGU6PC9zcGFuPiBBIDxzdHJvbmc+UG9ydFR5cGU8L3N0cm9uZz4gaXMgYSBuYW1lZCBzZXQgb2YgYWJzdHJhY3Qgb3BlcmF0aW9ucyBhbmQKLXRoZSBhYnN0cmFjdCBtZXNzYWdlcyBpbnZvbHZlZC4gWW91IGNhbiBlaXRoZXIgY3JlYXRlIGEgbmV3IHBvcnQgdHlwZSBmb3IKLXlvdXIgYmluZGluZywgcmV1c2UgYW4gZXhpc3Rpbmcgb25lLCBvciBpbXBvcnQgb25lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwKLXNlZSA8YSBocmVmPSJ0c2V0cHJ0dC5odG1sIj5TZXR0aW5nIGEgUG9ydCBUeXBlPC9hPi48L2Rpdj4KLTxkaXYgY2xhc3M9InRpcCI+PHNwYW4gY2xhc3M9InRpcHRpdGxlIj5UaXA6PC9zcGFuPiBZb3UgY2FuIGFsc28gY3JlYXRlIGEgbmV3IGJpbmRpbmcKLWZvciB5b3VyIHBvcnQgdXNpbmcgdGhlIE91dGxpbmUgdmlldy4gUmlnaHQgY2xpY2sgb24gdGhlIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkJpbmRpbmdzPC9zcGFuPiBmb2xkZXIKLWFuZCBzZWxlY3QgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWRkIEJpbmRpbmc8L3NwYW4+LjwvZGl2PgotPC9kaXY+Ci0KLTwvZGl2PgotCi08L2Rpdj4KLQotPGRpdiBjbGFzcz0ibmVzdGVkMSIgaWQ9InJldXNlYmluZGluZyI+PGEgbmFtZT0icmV1c2ViaW5kaW5nIj48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPlJldXNpbmcgYSBiaW5kaW5nIGZvciBhIHBvcnQ8L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VG8gcmV1c2UgYSBiaW5kaW5nIGZvciB5b3VyIHBvcnQsIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaT48c3Bhbj5JbiB0aGUgRGVzaWduIHZpZXcsIHNlbGVjdCB5b3VyIHBvcnQuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5JbiB0aGUgUHJvcGVydGllcyB2aWV3LCBjbGljayB0aGUgPHN0cm9uZz5HZW5lcmFsPC9zdHJvbmc+IHBhbmUuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5Gcm9tIHRoZSA8c3Ryb25nPkJpbmRpbmc8L3N0cm9uZz4gZHJvcCBkb3duIGxpc3QsIHNlbGVjdCB0aGUgYmluZGluZyB5b3UKLXdhbnQgdG8gdXNlLjwvc3Bhbj48L2xpPgotCi08L29sPgotCi08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIGlkPSJyZWdlbmVyYXRpbmdhYmluZGluZyI+PGEgbmFtZT0icmVnZW5lcmF0aW5nYWJpbmRpbmciPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+UmVnZW5lcmF0aW5nIGEgYmluZGluZzwvaDI+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj5UbyByZWdlbmVyYXRlIGEgYmluZGluZywgY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L2Rpdj4KLQotPG9sPgotPGxpPjxzcGFuPlJpZ2h0LWNsaWNrIHRoZSBiaW5kaW5nIHlvdSB3YW50IHRvIHJlZ2VuZXJhdGUuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5TZWxlY3QgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+R2VuZXJhdGUgQmluZGluZyBDb250ZW50PC9zcGFuPi48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPlNwZWNpZnkgdGhlIHJlcXVpcmVkIGJpbmRpbmcgaW5mb3JtYXRpb24uIElmIHlvdSBhcmUgbW9kaWZ5aW5nCi1hbiBleGlzdGluZyBiaW5kaW5nLCBzZWxlY3QgdGhlIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk92ZXJ3cml0ZSBleGlzdGluZyBiaW5kaW5nIGluZm9ybWF0aW9uPC9zcGFuPiBjaGVjawotYm94Ljwvc3Bhbj48L2xpPgotCi08L29sPgotCi08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIGlkPSJpbXBiaW5kaW5nIj48YSBuYW1lPSJpbXBiaW5kaW5nIj48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPkltcG9ydCBhbiBleGlzdGluZyBiaW5kaW5nPC9oMj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9InNlY3Rpb24iPlRvIGltcG9ydCBhbiBleGlzdGluZyBiaW5kaW5nIGZvciB5b3VyIHBvcnQsIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcKLXN0ZXBzOjwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+SW4gdGhlIERlc2lnbiB2aWV3LCByaWdodC1jbGljayB5b3VyIHBvcnQgYW5kIGNsaWNrICA8c3Ryb25nPlNldCBCaW5kaW5nCi0mZ3Q7IEV4aXN0aW5nIEJpbmRpbmcuPC9zdHJvbmc+PC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Ryb25nPk9wdGlvbmFsOiA8L3N0cm9uZz48c3Bhbj5JbiB0aGUgPHN0cm9uZz5OYW1lPC9zdHJvbmc+IGZpZWxkLCB0eXBlIGEgc2VhcmNoIHN0cmluZwotdG8gZmlsdGVyIHRoZSBsaXN0IG9yIGxlYXZlIHRoZSBmaWVsZCBibGFuayB0byB2aWV3IGFsbC48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPllvdSBjYW4gaW1wb3J0IGEgYmluZGluZyBieSBzZWxlY3Rpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9uczo8L3NwYW4+Ci08dWw+Ci08bGk+PHN0cm9uZz5Xb3Jrc3BhY2U8L3N0cm9uZz46IGxpc3RzIHRoZSBiaW5kaW5ncyBhdmFpbGFibGUgaW4geW91ciB3b3Jrc3BhY2UuPC9saT4KLQotPGxpPjxzdHJvbmc+RW5jbG9zaW5nIFByb2plY3Q8L3N0cm9uZz46IGxpc3RzIHRoZSBiaW5kaW5ncyBhdmFpbGFibGUgaW4gdGhlIHByb2plY3QKLXRoYXQgY29udGFpbnMgeW91ciBmaWxlLjwvbGk+Ci0KLTxsaT48c3Ryb25nPkN1cnJlbnQgUmVzb3VyY2U8L3N0cm9uZz46IGxpc3RzIHRoZSBiaW5kaW5nIHR5cGVzIGF2YWlsYWJsZSBpbiB5b3VyCi1jdXJyZW50IGZpbGUuPC9saT4KLQotPGxpPjxzdHJvbmc+V29ya2luZyBTZXRzPC9zdHJvbmc+OiBsaXN0cyB0aGUgYmluZGluZ3MgYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIHNldAotb2YgZmlsZXMuIFRvIHNwZWNpZnkgYSB3b3JraW5nIHNldCwgY2xpY2sgPHN0cm9uZz5DaG9vc2U8L3N0cm9uZz4uIFlvdSBjYW4gc2VsZWN0IGZpbGVzCi1mcm9tIGFuIGV4aXN0aW5nIHdvcmtpbmcgc2V0IG9yIGNyZWF0ZSBhIG5ldyB3b3JraW5nIHNldC4gT25jZSB5b3UgaGF2ZSBzZWxlY3RlZAotdGhlIGZpbGVzLCBjbGljayA8c3Ryb25nPk9LPC9zdHJvbmc+LjwvbGk+Ci0KLTwvdWw+Ci0KLTwvbGk+Ci0KLTxsaT48c3Bhbj5UaGUgYmluZGluZ3Mgd2lsbCBiZSBsaXN0ZWQuIFNlbGVjdCBvbmUgYW5kIGNsaWNrIDxzdHJvbmc+T0s8L3N0cm9uZz4uIEluCi10aGUgRGVzaWduIHZpZXcsIGNsaWNrIHRoZSBiaW5kaW5nIG9iamVjdC48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPkluIHRoZSBQcm9wZXJ0aWVzIHZpZXcsIHR5cGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nCi15b3Ugd2lzaCB0aGUgdXNlciB0byByZWFkIGluIHRoZSA8c3Ryb25nPkRvY3VtZW50YXRpb248L3N0cm9uZz4gcGFuZS48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIGNvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vY29uY2VwdHMvY3dzZGxlZC5odG1sIiB0aXRsZT0iVGhlIFdTREwgZWRpdG9yIGFsbG93cyB5b3UgdG8gZWFzaWx5IGFuZCBncmFwaGljYWxseSBjcmVhdGUsIG1vZGlmeSwgdmlldywgYW5kIHZhbGlkYXRlIFdTREwgZmlsZXMuIj5FZGl0aW5nIFdTREwgZmlsZXMgd2l0aCB0aGUgV1NETCBFZGl0b3I8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgdGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSJ0Y3J0d3NkbC5odG1sIiB0aXRsZT0iWW91IGNhbiBjcmVhdGUgYSBuZXcsIGVtcHR5IFdTREwgZmlsZSwgdGhlbiBlZGl0IGl0IHVzaW5nIHRoZSBXU0RMIGVkaXRvci4iPkNyZWF0aW5nIGEgbmV3IFdTREwgZmlsZTwvYT48L2Rpdj4KLTxkaXY+PGEgaHJlZj0idGVkdHdzZGwuaHRtbCIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgY3JlYXRlZCBhIFdTREwgZmlsZSwgeW91IGNhbiBlZGl0IGl0IGluIHRoZSBXU0RMIGVkaXRvci4gWW91IGNhbiBhbHNvIGltcG9ydCBXU0RMIGZpbGVzIHlvdSBoYXZlIGNyZWF0ZWQgaW50byB0aGUgd29ya2JlbmNoIGFuZCBlZGl0IHRoZW0gaW4gdGhlIFdTREwgZWRpdG9yLiI+RWRpdGluZyBXU0RMIGZpbGVzPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLQotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90c2V0cHJ0dC5kaXRhIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90c2V0cHJ0dC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODk3M2ZhLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdHNldHBydHQuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idHNldHBydHQiIHhtbDpsYW5nPSJlbi11cyI+Ci08dGl0bGU+U2V0dGluZyBhIHBvcnQgdHlwZTwvdGl0bGU+Ci08c2hvcnRkZXNjPkEgcG9ydCB0eXBlIGlzIGEgbmFtZWQgc2V0IG9mIGFic3RyYWN0IG9wZXJhdGlvbnMgYW5kIHRoZSBhYnN0cmFjdAotbWVzc2FnZXMgaW52b2x2ZWQuIEVhY2ggb3BlcmF0aW9uIHJlZmVycyB0byBhbiBpbnB1dCBtZXNzYWdlIGFuZCBvdXRwdXQgbWVzc2FnZXMuCi1BIHBvcnQgdHlwZSBpcyByZWZlcmVuY2VkIGJ5IGEgYmluZGluZyBvYmplY3QuIEVhY2ggYmluZGluZyByZWZlcmVuY2VzIGV4YWN0bHkKLW9uZSBwb3J0IHR5cGUuIFNpbmNlIGVhY2ggcG9ydCByZWZlcnMgdG8gZXhhY3RseSBvbmUgYmluZGluZywgZWFjaCBwb3J0IGhhcwotZXhhY3RseSBvbmUgcG9ydCB0eXBlLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybT5XU0RMIGZpbGVzPGluZGV4dGVybT5zZXR0aW5nIHBvcnQgdHlwZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTxpbmRleHRlcm0+V2ViIHNlcnZpY2VzPGluZGV4dGVybT5zZXR0aW5nIHBvcnQgdHlwZXM8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+WW91IGNhbiBjcmVhdGUgYSBwb3J0IHR5cGUgYnkgcmlnaHQgY2xpY2tpbmcgaW4gYW55IGJsYW5rIHNwYWNlCi1pbiB0aGUgRGVzaWduIHZpZXcgYW5kIHNlbGVjdGluZyA8dWljb250cm9sPkFkZCBQb3J0VHlwZTwvdWljb250cm9sPi4gQXMgYQotY29udmVuaWVuY2UgeW91IGNhbiBhbHNvIGFkZCBhIHBvcnQgdHlwZSB2aWEgYSBiaW5kaW5nLiBUaGlzIGFsbG93cyB5b3UgdG8KLWNyZWF0ZSBhIHBvcnQgdHlwZSBhbmQgbW9kaWZ5IHRoZSBiaW5kaW5nIHRvIHJlZmVyZW5jZSB0aGUgbmV3IHBvcnQgdHlwZSBpbgotb25lIGFjdGlvbi4gWW91IGNhbiBlaXRoZXIgY3JlYXRlIGEgbmV3IHBvcnQgdHlwZSBmb3IgeW91ciBiaW5kaW5nLCByZS11c2UKLWFuIGV4aXN0aW5nIG9uZSwgb3IgaW1wb3J0IG9uZS48L3A+PC9jb250ZXh0PgotPC90YXNrYm9keT4KLTx0YXNrIGlkPSJjcmVhdGVwb3J0dHlwZSI+Ci08dGl0bGU+Q3JlYXRlIGEgbmV3IHBvcnQgdHlwZSBmb3IgYSBiaW5kaW5nPC90aXRsZT4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPklmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIG5ldyBwb3J0IHR5cGUgZm9yIHlvdXIgYmluZGluZywgY29tcGxldGUKLXRoZSBmb2xsb3dpbmcgc3RlcHM6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+SW4gdGhlIERlc2lnbiB2aWV3LCByaWdodC1jbGljayBvbiBhIGJpbmRpbmcgb2JqZWN0IChub3RlIHRoYXQKLXBvcnQgbXVzdCByZWZlcmVuY2UgYSBiaW5kaW5nKSBhbmQgY2xpY2sgPGI+U2V0IFBvcnRUeXBlID4gTmV3IFBvcnRUeXBlPC9iPi48L2NtZD4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+VHlwZSB0aGUgbmFtZSBvZiB0aGUgcG9ydCB0eXBlIGluIHRoZSA8Yj5OYW1lPC9iPiBmaWVsZCBhbmQgY2xpY2sgPGI+T0s8L2I+LjwvY21kPgotPGluZm8+VGhlIG5hbWUgc2hvdWxkIGJlIHVuaXF1ZSBuYW1lIGFtb25nIGFsbCBwb3J0IHR5cGVzIGRlZmluZWQgd2l0aGluIGluCi10aGUgZW5jbG9zaW5nIFdTREwgZG9jdW1lbnQuIFRvIHNlbGVjdCB0aGUgbmV3IHBvcnQgdHlwZSwgY2xpY2sgdGhlIHBvcnQgdHlwZQotb2JqZWN0LjwvaW5mbz48L3N0ZXA+Ci08c3RlcD48Y21kPkluIHRoZSBQcm9wZXJ0aWVzIHZpZXcsIHR5cGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBwb3J0IHR5cGUKLXlvdSB3aXNoIHRoZSB1c2VyIHRvIHJlYWQgaW4gdGhlIDxiPkRvY3VtZW50YXRpb248L2I+IHBhbmUuPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+IDxub3RlIHR5cGU9InRpcCI+WW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBwb3J0IHR5cGUgZm9yIHlvdXIgYmluZGluZwotdXNpbmcgdGhlIE91dGxpbmUgdmlldy48L25vdGU+PHA+T25jZSB5b3UgaGF2ZSBjcmVhdGVkIGEgcG9ydCB0eXBlLCB5b3UgY2FuCi1hZGQgb3BlcmF0aW9ucyB0byBpdCwgd2hpY2ggY2FuIHNlbmQgYW5kIHJlY2VpdmUgbWVzc2FnZXMuPC9wPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTwvdGFzaz4KLTx0YXNrIGlkPSJyZXVzZXBvcnR0eXBlIj4KLTx0aXRsZT5SZXVzZSBhIHBvcnQgdHlwZSBmb3IgYSBiaW5kaW5nPC90aXRsZT4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPklmIHlvdSB3YW50IHRvIHJldXNlIGEgcG9ydCB0eXBlIGZvciB5b3VyIGJpbmRpbmcsIGNvbXBsZXRlIHRoZQotZm9sbG93aW5nIHN0ZXBzOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIHRoZSBEZXNpZ24gdmlldywgcmlnaHQtY2xpY2sgb24gYSBiaW5kaW5nIG9iamVjdCAobm90ZSB0aGF0Ci1wb3J0IG11c3QgcmVmZXJlbmNlIGEgYmluZGluZykgYW5kIGNsaWNrICA8Yj5TZXQgUG9ydCBUeXBlID4gRXhpc3RpbmcgUG9ydFR5cGU8L2I+LjwvY21kPgotPC9zdGVwPgotPHN0ZXAgaW1wb3J0YW5jZT0ib3B0aW9uYWwiPjxjbWQ+SW4gdGhlIDxiPk5hbWU8L2I+IGZpZWxkLCB0eXBlIGEgc2VhcmNoIHN0cmluZwotdG8gZmlsdGVyIHRoZSBsaXN0IG9yIGxlYXZlIHRoZSBmaWVsZCBibGFuayB0byB2aWV3IGFsbC48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPllvdSBjYW4gY2hhbmdlIHRoZSBzY29wZSBvZiB0aGUgbGlzdCBieSBzZWxlY3Rpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcKLW9wdGlvbnM6PC9jbWQ+Ci08Y2hvaWNlcz4KLTxjaG9pY2U+PGI+V29ya3NwYWNlPC9iPjogbGlzdHMgdGhlIHBvcnQgdHlwZXMgYXZhaWxhYmxlIGluIHlvdXIgd29ya3NwYWNlLjwvY2hvaWNlPgotPGNob2ljZT48Yj5FbmNsb3NpbmcgUHJvamVjdDwvYj46IGxpc3RzIHRoZSBwb3J0IHR5cGVzIGF2YWlsYWJsZSBpbiB0aGUgcHJvamVjdAotdGhhdCBjb250YWlucyB5b3VyIGZpbGUuPC9jaG9pY2U+Ci08Y2hvaWNlPjxiPkN1cnJlbnQgUmVzb3VyY2U8L2I+OiBsaXN0cyB0aGUgcG9ydCB0eXBlcyBhdmFpbGFibGUgaW4geW91ciBjdXJyZW50Ci1maWxlLjwvY2hvaWNlPgotPGNob2ljZT48Yj5Xb3JraW5nIFNldHM8L2I+OiBsaXN0cyB0aGUgcG9ydCB0eXBlcyBhdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQKLXNldCBvZiBmaWxlcy4gVG8gc3BlY2lmeSBhIHdvcmtpbmcgc2V0LCBjbGljayA8Yj5DaG9vc2U8L2I+LiBZb3UgY2FuIHNlbGVjdAotZmlsZXMgZnJvbSBhbiBleGlzdGluZyB3b3JraW5nIHNldCBvciBjcmVhdGUgYSBuZXcgd29ya2luZyBzZXQuIE9uY2UgeW91IGhhdmUKLXNlbGVjdGVkIHRoZSBmaWxlcywgY2xpY2sgPGI+T0s8L2I+LjwvY2hvaWNlPgotPC9jaG9pY2VzPgotPC9zdGVwPgotPHN0ZXA+PGNtZD5UaGUgZXhpc3RpbmcgcG9ydCB0eXBlcyB3aWxsIGJlIGxpc3RlZC4gU2VsZWN0IG9uZSBhbmQgY2xpY2sgPGI+T0s8L2I+LjwvY21kPgotPC9zdGVwPgotPC9zdGVwcz4KLTwvdGFza2JvZHk+Ci08L3Rhc2s+Ci08dGFzayBpZD0iaW1wb3J0cG9ydHR5cGUiPgotPHRpdGxlPkltcG9ydCBhIHBvcnQgdHlwZSBmb3IgYSBiaW5kaW5nPC90aXRsZT4KLTx0YXNrYm9keT4KLTxjb250ZXh0PjxwPklmIHlvdSB3YW50IHRvIGltcG9ydCBhbiBleGlzdGluZyBwb3J0IHR5cGUgZm9yIHlvdXIgYmluZGluZywKLWNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+SW4gdGhlIERlc2lnbiB2aWV3LCByaWdodC1jbGljayBvbiBhIGJpbmRpbmcgb2JqZWN0IChub3RlIHRoYXQKLXBvcnQgbXVzdCByZWZlcmVuY2UgYSBiaW5kaW5nKSBhbmQgY2xpY2sgIDxiPlNldCBQb3J0IFR5cGUgPiBFeGlzdGluZyBQb3J0VHlwZS48L2I+PC9jbWQ+Ci08L3N0ZXA+Ci08c3RlcCBpbXBvcnRhbmNlPSJvcHRpb25hbCI+PGNtZD5JbiB0aGUgPGI+TmFtZTwvYj4gZmllbGQsIHR5cGUgYSBzZWFyY2ggc3RyaW5nCi10byBmaWx0ZXIgdGhlIGxpc3Qgb3IgbGVhdmUgdGhlIGZpZWxkIGJsYW5rIHRvIHZpZXcgYWxsLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+WW91IGNhbiBpbXBvcnQgYSBwb3J0IHR5cGUgYnkgc2VsZWN0aW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnM6PC9jbWQ+Ci08Y2hvaWNlcz4KLTxjaG9pY2U+PGI+V29ya3NwYWNlPC9iPjogbGlzdHMgdGhlIHBvcnQgdHlwZXMgYXZhaWxhYmxlIGluIHlvdXIgd29ya3NwYWNlLjwvY2hvaWNlPgotPGNob2ljZT48Yj5FbmNsb3NpbmcgUHJvamVjdDwvYj46IGxpc3RzIHRoZSBwb3J0IHR5cGVzIGF2YWlsYWJsZSBpbiB0aGUgcHJvamVjdAotdGhhdCBjb250YWlucyB5b3VyIGZpbGUuPC9jaG9pY2U+Ci08Y2hvaWNlPjxiPldvcmtpbmcgU2V0czwvYj46IGxpc3RzIHRoZSBwb3J0IHR5cGVzIGF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZAotc2V0IG9mIGZpbGVzLiBUbyBzcGVjaWZ5IGEgd29ya2luZyBzZXQsIGNsaWNrIDxiPkNob29zZTwvYj4uIFlvdSBjYW4gc2VsZWN0Ci1maWxlcyBmcm9tIGFuIGV4aXN0aW5nIHdvcmtpbmcgc2V0IG9yIGNyZWF0ZSBhIG5ldyB3b3JraW5nIHNldC4gT25jZSB5b3UgaGF2ZQotc2VsZWN0ZWQgdGhlIGZpbGVzLCBjbGljayA8Yj5PSzwvYj4uPC9jaG9pY2U+Ci08L2Nob2ljZXM+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPlRoZSBwb3J0IHR5cGVzIHdpbGwgYmUgbGlzdGVkLiBTZWxlY3Qgb25lIGFuZCBjbGljayA8Yj5PSzwvYj4uCi1JbiB0aGUgRGVzaWduIHZpZXcsIGNsaWNrIHRoZSBwb3J0IHR5cGUgb2JqZWN0LjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIFByb3BlcnRpZXMgdmlldywgdHlwZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvcnQgdHlwZQoteW91IHdpc2ggdGhlIHVzZXIgdG8gcmVhZCBpbiB0aGUgPGI+RG9jdW1lbnRhdGlvbjwvYj4gcGFuZS48L2NtZD48L3N0ZXA+Ci08L3N0ZXBzPgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIGNvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIHRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9InRjcnR3c2RsLmRpdGEiIHNjb3BlPSJsb2NhbCI+PC9saW5rPgotPGxpbmsgaHJlZj0idGVkdHdzZGwuZGl0YSIgc2NvcGU9ImxvY2FsIj48L2xpbms+Ci08L2xpbmtsaXN0PgotPC9yZWxhdGVkLWxpbmtzPgotPC90YXNrPgotPC90YXNrPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90c2V0cHJ0dC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci90YXNrcy90c2V0cHJ0dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTI5YmIzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvdGFza3MvdHNldHBydHQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJTZXR0aW5nIGEgcG9ydCB0eXBlIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IkEgcG9ydCB0eXBlIGlzIGEgbmFtZWQgc2V0IG9mIGFic3RyYWN0IG9wZXJhdGlvbnMgYW5kIHRoZSBhYnN0cmFjdCBtZXNzYWdlcyBpbnZvbHZlZC4gRWFjaCBvcGVyYXRpb24gcmVmZXJzIHRvIGFuIGlucHV0IG1lc3NhZ2UgYW5kIG91dHB1dCBtZXNzYWdlcy4gQSBwb3J0IHR5cGUgaXMgcmVmZXJlbmNlZCBieSBhIGJpbmRpbmcgb2JqZWN0LiBFYWNoIGJpbmRpbmcgcmVmZXJlbmNlcyBleGFjdGx5IG9uZSBwb3J0IHR5cGUuIFNpbmNlIGVhY2ggcG9ydCByZWZlcnMgdG8gZXhhY3RseSBvbmUgYmluZGluZywgZWFjaCBwb3J0IGhhcyBleGFjdGx5IG9uZSBwb3J0IHR5cGUuIiAvPgotPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkEgcG9ydCB0eXBlIGlzIGEgbmFtZWQgc2V0IG9mIGFic3RyYWN0IG9wZXJhdGlvbnMgYW5kIHRoZSBhYnN0cmFjdCBtZXNzYWdlcyBpbnZvbHZlZC4gRWFjaCBvcGVyYXRpb24gcmVmZXJzIHRvIGFuIGlucHV0IG1lc3NhZ2UgYW5kIG91dHB1dCBtZXNzYWdlcy4gQSBwb3J0IHR5cGUgaXMgcmVmZXJlbmNlZCBieSBhIGJpbmRpbmcgb2JqZWN0LiBFYWNoIGJpbmRpbmcgcmVmZXJlbmNlcyBleGFjdGx5IG9uZSBwb3J0IHR5cGUuIFNpbmNlIGVhY2ggcG9ydCByZWZlcnMgdG8gZXhhY3RseSBvbmUgYmluZGluZywgZWFjaCBwb3J0IGhhcyBleGFjdGx5IG9uZSBwb3J0IHR5cGUuIiAvPgotPG1ldGEgY29udGVudD0iV1NETCBmaWxlcywgc2V0dGluZyBwb3J0IHR5cGVzLCBXZWIgc2VydmljZXMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXU0RMIGZpbGVzLCBzZXR0aW5nIHBvcnQgdHlwZXMsIFdlYiBzZXJ2aWNlcyIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idHNldHBydHQiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5TZXR0aW5nIGEgcG9ydCB0eXBlPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0c2V0cHJ0dCI+PGEgbmFtZT0idHNldHBydHQiPjwhLS0gLS0+PC9hPgotCi0KLTxoMSBjbGFzcz0idG9waWN0aXRsZTEiPlNldHRpbmcgYSBwb3J0IHR5cGU8L2gxPgotCi0KLQotPGRpdj48cD5BIHBvcnQgdHlwZSBpcyBhIG5hbWVkIHNldCBvZiBhYnN0cmFjdCBvcGVyYXRpb25zIGFuZCB0aGUgYWJzdHJhY3QKLW1lc3NhZ2VzIGludm9sdmVkLiBFYWNoIG9wZXJhdGlvbiByZWZlcnMgdG8gYW4gaW5wdXQgbWVzc2FnZSBhbmQgb3V0cHV0IG1lc3NhZ2VzLgotQSBwb3J0IHR5cGUgaXMgcmVmZXJlbmNlZCBieSBhIGJpbmRpbmcgb2JqZWN0LiBFYWNoIGJpbmRpbmcgcmVmZXJlbmNlcyBleGFjdGx5Ci1vbmUgcG9ydCB0eXBlLiBTaW5jZSBlYWNoIHBvcnQgcmVmZXJzIHRvIGV4YWN0bHkgb25lIGJpbmRpbmcsIGVhY2ggcG9ydCBoYXMKLWV4YWN0bHkgb25lIHBvcnQgdHlwZS48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPllvdSBjYW4gY3JlYXRlIGEgcG9ydCB0eXBlIGJ5IHJpZ2h0IGNsaWNraW5nIGluIGFueSBibGFuayBzcGFjZQotaW4gdGhlIERlc2lnbiB2aWV3IGFuZCBzZWxlY3RpbmcgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWRkIFBvcnRUeXBlPC9zcGFuPi4gQXMgYQotY29udmVuaWVuY2UgeW91IGNhbiBhbHNvIGFkZCBhIHBvcnQgdHlwZSB2aWEgYSBiaW5kaW5nLiBUaGlzIGFsbG93cyB5b3UgdG8KLWNyZWF0ZSBhIHBvcnQgdHlwZSBhbmQgbW9kaWZ5IHRoZSBiaW5kaW5nIHRvIHJlZmVyZW5jZSB0aGUgbmV3IHBvcnQgdHlwZSBpbgotb25lIGFjdGlvbi4gWW91IGNhbiBlaXRoZXIgY3JlYXRlIGEgbmV3IHBvcnQgdHlwZSBmb3IgeW91ciBiaW5kaW5nLCByZS11c2UKLWFuIGV4aXN0aW5nIG9uZSwgb3IgaW1wb3J0IG9uZS48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIGlkPSJjcmVhdGVwb3J0dHlwZSI+PGEgbmFtZT0iY3JlYXRlcG9ydHR5cGUiPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+Q3JlYXRlIGEgbmV3IHBvcnQgdHlwZSBmb3IgYSBiaW5kaW5nPC9oMj4KLQotPGRpdj4KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPklmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIG5ldyBwb3J0IHR5cGUgZm9yIHlvdXIgYmluZGluZywgY29tcGxldGUKLXRoZSBmb2xsb3dpbmcgc3RlcHM6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+SW4gdGhlIERlc2lnbiB2aWV3LCByaWdodC1jbGljayBvbiBhIGJpbmRpbmcgb2JqZWN0IChub3RlIHRoYXQKLXBvcnQgbXVzdCByZWZlcmVuY2UgYSBiaW5kaW5nKSBhbmQgY2xpY2sgPHN0cm9uZz5TZXQgUG9ydFR5cGUgJmd0OyBOZXcgUG9ydFR5cGU8L3N0cm9uZz4uPC9zcGFuPgotPC9saT4KLQotPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5UeXBlIHRoZSBuYW1lIG9mIHRoZSBwb3J0IHR5cGUgaW4gdGhlIDxzdHJvbmc+TmFtZTwvc3Ryb25nPiBmaWVsZCBhbmQgY2xpY2sgPHN0cm9uZz5PSzwvc3Ryb25nPi48L3NwYW4+Ci0gVGhlIG5hbWUgc2hvdWxkIGJlIHVuaXF1ZSBuYW1lIGFtb25nIGFsbCBwb3J0IHR5cGVzIGRlZmluZWQgd2l0aGluIGluCi10aGUgZW5jbG9zaW5nIFdTREwgZG9jdW1lbnQuIFRvIHNlbGVjdCB0aGUgbmV3IHBvcnQgdHlwZSwgY2xpY2sgdGhlIHBvcnQgdHlwZQotb2JqZWN0LjwvbGk+Ci0KLTxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+SW4gdGhlIFByb3BlcnRpZXMgdmlldywgdHlwZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvcnQgdHlwZQoteW91IHdpc2ggdGhlIHVzZXIgdG8gcmVhZCBpbiB0aGUgPHN0cm9uZz5Eb2N1bWVudGF0aW9uPC9zdHJvbmc+IHBhbmUuPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPiA8ZGl2IGNsYXNzPSJ0aXAiPjxzcGFuIGNsYXNzPSJ0aXB0aXRsZSI+VGlwOjwvc3Bhbj4gWW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBwb3J0IHR5cGUgZm9yIHlvdXIgYmluZGluZwotdXNpbmcgdGhlIE91dGxpbmUgdmlldy48L2Rpdj4KLTxwPk9uY2UgeW91IGhhdmUgY3JlYXRlZCBhIHBvcnQgdHlwZSwgeW91IGNhbgotYWRkIG9wZXJhdGlvbnMgdG8gaXQsIHdoaWNoIGNhbiBzZW5kIGFuZCByZWNlaXZlIG1lc3NhZ2VzLjwvcD4KLTwvZGl2PgotCi08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIGlkPSJyZXVzZXBvcnR0eXBlIj48YSBuYW1lPSJyZXVzZXBvcnR0eXBlIj48IS0tIC0tPjwvYT4KLTxoMiBjbGFzcz0idG9waWN0aXRsZTIiPlJldXNlIGEgcG9ydCB0eXBlIGZvciBhIGJpbmRpbmc8L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+SWYgeW91IHdhbnQgdG8gcmV1c2UgYSBwb3J0IHR5cGUgZm9yIHlvdXIgYmluZGluZywgY29tcGxldGUgdGhlCi1mb2xsb3dpbmcgc3RlcHM6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaT48c3Bhbj5JbiB0aGUgRGVzaWduIHZpZXcsIHJpZ2h0LWNsaWNrIG9uIGEgYmluZGluZyBvYmplY3QgKG5vdGUgdGhhdAotcG9ydCBtdXN0IHJlZmVyZW5jZSBhIGJpbmRpbmcpIGFuZCBjbGljayAgPHN0cm9uZz5TZXQgUG9ydCBUeXBlICZndDsgRXhpc3RpbmcgUG9ydFR5cGU8L3N0cm9uZz4uPC9zcGFuPgotPC9saT4KLQotPGxpPjxzdHJvbmc+T3B0aW9uYWw6IDwvc3Ryb25nPjxzcGFuPkluIHRoZSA8c3Ryb25nPk5hbWU8L3N0cm9uZz4gZmllbGQsIHR5cGUgYSBzZWFyY2ggc3RyaW5nCi10byBmaWx0ZXIgdGhlIGxpc3Qgb3IgbGVhdmUgdGhlIGZpZWxkIGJsYW5rIHRvIHZpZXcgYWxsLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+WW91IGNhbiBjaGFuZ2UgdGhlIHNjb3BlIG9mIHRoZSBsaXN0IGJ5IHNlbGVjdGluZyBvbmUgb2YgdGhlIGZvbGxvd2luZwotb3B0aW9uczo8L3NwYW4+Ci08dWw+Ci08bGk+PHN0cm9uZz5Xb3Jrc3BhY2U8L3N0cm9uZz46IGxpc3RzIHRoZSBwb3J0IHR5cGVzIGF2YWlsYWJsZSBpbiB5b3VyIHdvcmtzcGFjZS48L2xpPgotCi08bGk+PHN0cm9uZz5FbmNsb3NpbmcgUHJvamVjdDwvc3Ryb25nPjogbGlzdHMgdGhlIHBvcnQgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBwcm9qZWN0Ci10aGF0IGNvbnRhaW5zIHlvdXIgZmlsZS48L2xpPgotCi08bGk+PHN0cm9uZz5DdXJyZW50IFJlc291cmNlPC9zdHJvbmc+OiBsaXN0cyB0aGUgcG9ydCB0eXBlcyBhdmFpbGFibGUgaW4geW91ciBjdXJyZW50Ci1maWxlLjwvbGk+Ci0KLTxsaT48c3Ryb25nPldvcmtpbmcgU2V0czwvc3Ryb25nPjogbGlzdHMgdGhlIHBvcnQgdHlwZXMgYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkCi1zZXQgb2YgZmlsZXMuIFRvIHNwZWNpZnkgYSB3b3JraW5nIHNldCwgY2xpY2sgPHN0cm9uZz5DaG9vc2U8L3N0cm9uZz4uIFlvdSBjYW4gc2VsZWN0Ci1maWxlcyBmcm9tIGFuIGV4aXN0aW5nIHdvcmtpbmcgc2V0IG9yIGNyZWF0ZSBhIG5ldyB3b3JraW5nIHNldC4gT25jZSB5b3UgaGF2ZQotc2VsZWN0ZWQgdGhlIGZpbGVzLCBjbGljayA8c3Ryb25nPk9LPC9zdHJvbmc+LjwvbGk+Ci0KLTwvdWw+Ci0KLTwvbGk+Ci0KLTxsaT48c3Bhbj5UaGUgZXhpc3RpbmcgcG9ydCB0eXBlcyB3aWxsIGJlIGxpc3RlZC4gU2VsZWN0IG9uZSBhbmQgY2xpY2sgPHN0cm9uZz5PSzwvc3Ryb25nPi48L3NwYW4+Ci08L2xpPgotCi08L29sPgotCi08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9Im5lc3RlZDEiIGlkPSJpbXBvcnRwb3J0dHlwZSI+PGEgbmFtZT0iaW1wb3J0cG9ydHR5cGUiPjwhLS0gLS0+PC9hPgotPGgyIGNsYXNzPSJ0b3BpY3RpdGxlMiI+SW1wb3J0IGEgcG9ydCB0eXBlIGZvciBhIGJpbmRpbmc8L2gyPgotCi08ZGl2PgotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+SWYgeW91IHdhbnQgdG8gaW1wb3J0IGFuIGV4aXN0aW5nIHBvcnQgdHlwZSBmb3IgeW91ciBiaW5kaW5nLAotY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpPjxzcGFuPkluIHRoZSBEZXNpZ24gdmlldywgcmlnaHQtY2xpY2sgb24gYSBiaW5kaW5nIG9iamVjdCAobm90ZSB0aGF0Ci1wb3J0IG11c3QgcmVmZXJlbmNlIGEgYmluZGluZykgYW5kIGNsaWNrICA8c3Ryb25nPlNldCBQb3J0IFR5cGUgJmd0OyBFeGlzdGluZyBQb3J0VHlwZS48L3N0cm9uZz48L3NwYW4+Ci08L2xpPgotCi08bGk+PHN0cm9uZz5PcHRpb25hbDogPC9zdHJvbmc+PHNwYW4+SW4gdGhlIDxzdHJvbmc+TmFtZTwvc3Ryb25nPiBmaWVsZCwgdHlwZSBhIHNlYXJjaCBzdHJpbmcKLXRvIGZpbHRlciB0aGUgbGlzdCBvciBsZWF2ZSB0aGUgZmllbGQgYmxhbmsgdG8gdmlldyBhbGwuPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5Zb3UgY2FuIGltcG9ydCBhIHBvcnQgdHlwZSBieSBzZWxlY3Rpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9uczo8L3NwYW4+Ci08dWw+Ci08bGk+PHN0cm9uZz5Xb3Jrc3BhY2U8L3N0cm9uZz46IGxpc3RzIHRoZSBwb3J0IHR5cGVzIGF2YWlsYWJsZSBpbiB5b3VyIHdvcmtzcGFjZS48L2xpPgotCi08bGk+PHN0cm9uZz5FbmNsb3NpbmcgUHJvamVjdDwvc3Ryb25nPjogbGlzdHMgdGhlIHBvcnQgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBwcm9qZWN0Ci10aGF0IGNvbnRhaW5zIHlvdXIgZmlsZS48L2xpPgotCi08bGk+PHN0cm9uZz5Xb3JraW5nIFNldHM8L3N0cm9uZz46IGxpc3RzIHRoZSBwb3J0IHR5cGVzIGF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZAotc2V0IG9mIGZpbGVzLiBUbyBzcGVjaWZ5IGEgd29ya2luZyBzZXQsIGNsaWNrIDxzdHJvbmc+Q2hvb3NlPC9zdHJvbmc+LiBZb3UgY2FuIHNlbGVjdAotZmlsZXMgZnJvbSBhbiBleGlzdGluZyB3b3JraW5nIHNldCBvciBjcmVhdGUgYSBuZXcgd29ya2luZyBzZXQuIE9uY2UgeW91IGhhdmUKLXNlbGVjdGVkIHRoZSBmaWxlcywgY2xpY2sgPHN0cm9uZz5PSzwvc3Ryb25nPi48L2xpPgotCi08L3VsPgotCi08L2xpPgotCi08bGk+PHNwYW4+VGhlIHBvcnQgdHlwZXMgd2lsbCBiZSBsaXN0ZWQuIFNlbGVjdCBvbmUgYW5kIGNsaWNrIDxzdHJvbmc+T0s8L3N0cm9uZz4uCi1JbiB0aGUgRGVzaWduIHZpZXcsIGNsaWNrIHRoZSBwb3J0IHR5cGUgb2JqZWN0Ljwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+SW4gdGhlIFByb3BlcnRpZXMgdmlldywgdHlwZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvcnQgdHlwZQoteW91IHdpc2ggdGhlIHVzZXIgdG8gcmVhZCBpbiB0aGUgPHN0cm9uZz5Eb2N1bWVudGF0aW9uPC9zdHJvbmc+IHBhbmUuPC9zcGFuPjwvbGk+Ci0KLTwvb2w+Ci0KLTwvZGl2PgotCi08ZGl2PgotPGRpdiBjbGFzcz0ibGlua2xpc3QiPjxzdHJvbmc+UmVsYXRlZCBjb25jZXB0czwvc3Ryb25nPjxiciAvPgotCi08ZGl2PjxhIGhyZWY9Ii4uL2NvbmNlcHRzL2N3c2RsZWQuaHRtbCIgdGl0bGU9IlRoZSBXU0RMIGVkaXRvciBhbGxvd3MgeW91IHRvIGVhc2lseSBhbmQgZ3JhcGhpY2FsbHkgY3JlYXRlLCBtb2RpZnksIHZpZXcsIGFuZCB2YWxpZGF0ZSBXU0RMIGZpbGVzLiI+RWRpdGluZyBXU0RMIGZpbGVzIHdpdGggdGhlIFdTREwgRWRpdG9yPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIHRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0idGNydHdzZGwuaHRtbCIgdGl0bGU9IllvdSBjYW4gY3JlYXRlIGEgbmV3LCBlbXB0eSBXU0RMIGZpbGUsIHRoZW4gZWRpdCBpdCB1c2luZyB0aGUgV1NETCBlZGl0b3IuIj5DcmVhdGluZyBhIG5ldyBXU0RMIGZpbGU8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9InRlZHR3c2RsLmh0bWwiIHRpdGxlPSJPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgYSBXU0RMIGZpbGUsIHlvdSBjYW4gZWRpdCBpdCBpbiB0aGUgV1NETCBlZGl0b3IuIFlvdSBjYW4gYWxzbyBpbXBvcnQgV1NETCBmaWxlcyB5b3UgaGF2ZSBjcmVhdGVkIGludG8gdGhlIHdvcmtiZW5jaCBhbmQgZWRpdCB0aGVtIGluIHRoZSBXU0RMIGVkaXRvci4iPkVkaXRpbmcgV1NETCBmaWxlczwvYT48L2Rpdj48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci0KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvd3NkbF9idWlsZF90b2MuZGl0YW1hcCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvd3NkbF9idWlsZF90b2MuZGl0YW1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQyMTcyMS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3dzZGxfYnVpbGRfdG9jLmRpdGFtYXAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+DQotPCFET0NUWVBFIG1hcCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBNYXAvL0VOIg0KLSAibWFwLmR0ZCI+DQotPG1hcCBpZD0id3NkbGJ1aWxkbWFwIiB0aXRsZT0iVXNlZCBvbmx5IHRvIGJ1aWxkIHBsdWdpbiAtIG5vdCB1c2VkIGluIHByb2R1Y3QiPg0KLTx0b3BpY3JlZiBocmVmPSJjb25jZXB0cy9jd3NkbGVkLmRpdGEiIG5hdnRpdGxlPSJXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIGVkaXRvciI+DQotPC90b3BpY3JlZj4NCi08dG9waWNyZWYgaHJlZj0idGFza3MvdGltcHdzZGwuZGl0YSIgbmF2dGl0bGU9IkltcG9ydGluZyBXU0RMIGZpbGVzIj48L3RvcGljcmVmPg0KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90Y3J0d3NkbC5kaXRhIiBuYXZ0aXRsZT0iQ3JlYXRpbmcgV1NETCBmaWxlcyI+PC90b3BpY3JlZj4NCi08dG9waWNyZWYgaHJlZj0iY29uY2VwdHMvY3dzZGxlZC5kaXRhIiBuYXZ0aXRsZT0iV2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSBlZGl0b3IiPg0KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90ZWR0d3NkbC5kaXRhIiBuYXZ0aXRsZT0iRWRpdGluZyBXU0RMIGZpbGVzIj4NCi08dG9waWNyZWYgaHJlZj0idGFza3MvdGFkZHNydmMuZGl0YSIgbGlua2luZz0ibm9uZSIgbmF2dGl0bGU9IkFkZGluZyBhIHNlcnZpY2UiPg0KLTwvdG9waWNyZWY+DQotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RhZGRwb3J0LmRpdGEiIGxpbmtpbmc9Im5vbmUiIG5hdnRpdGxlPSJBZGRpbmcgYSBwb3J0IHRvIGEgc2VydmljZSI+DQotPC90b3BpY3JlZj4NCi08dG9waWNyZWYgaHJlZj0idGFza3MvdHNldHBydHQuZGl0YSIgbGlua2luZz0ibm9uZSIgbmF2dGl0bGU9IlNldHRpbmcgYSBwb3J0IHR5cGUiPg0KLTwvdG9waWNyZWY+DQotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RzZXRiaW5kLmRpdGEiIGxpbmtpbmc9Im5vbmUiIG5hdnRpdGxlPSJTZXR0aW5nIGEgYmluZGluZyI+DQotPC90b3BpY3JlZj4NCi08dG9waWNyZWYgaHJlZj0idGFza3MvdGFkZG9wZXIuZGl0YSIgbGlua2luZz0ibm9uZSIgbmF2dGl0bGU9IkFkZGluZyBhbiBvcGVyYXRpb24iPg0KLTwvdG9waWNyZWY+DQotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RhZGRtZXNzLmRpdGEiIGxpbmtpbmc9Im5vbmUiIG5hdnRpdGxlPSJBZGRpbmcgYSBtZXNzYWdlIj4NCi08L3RvcGljcmVmPg0KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90YWRkcGFydC5kaXRhIiBsaW5raW5nPSJub25lIiBuYXZ0aXRsZT0iQWRkaW5nIGEgcGFydCB0byBhIG1lc3NhZ2UiPg0KLTwvdG9waWNyZWY+DQotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RjcnRpbXB0LmRpdGEiIGxpbmtpbmc9Im5vbmUiIG5hdnRpdGxlPSJDcmVhdGluZyBhbiBpbXBvcnQgc3RhdGVtZW50Ij4NCi08L3RvcGljcmVmPg0KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90Y3J0dHlwZS5kaXRhIiBsaW5raW5nPSJub25lIiBuYXZ0aXRsZT0iQ3JlYXRpbmcgYSBuZXcgdHlwZSBmb3IgeW91ciBXU0RMIGZpbGUiPg0KLTwvdG9waWNyZWY+DQotPC90b3BpY3JlZj4NCi08L3RvcGljcmVmPg0KLTx0b3BpY3JlZiBocmVmPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWkuZG9jLnVzZXIvdGFza3MvdHdzZGxleHAuZGl0YSINCi1uYXZ0aXRsZT0iRXhwbG9yaW5nIFdTREwgdXNpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciIgc2NvcGU9InBlZXIiPjwvdG9waWNyZWY+DQotPC9tYXA+DQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci93c2RsX2J1aWxkX3RvYy54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3dzZGxfYnVpbGRfdG9jLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ5ZmU2ZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3dzZGxfYnVpbGRfdG9jLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+Ci0KLTx0b2MgbGFiZWw9IlVzZWQgb25seSB0byBidWlsZCBwbHVnaW4gLSBub3QgdXNlZCBpbiBwcm9kdWN0IiB0b3BpYz0iY29uY2VwdHMvY3dzZGxlZC5odG1sIj4KLTx0b3BpYyBsYWJlbD0iRWRpdGluZyBXU0RMIGZpbGVzIHdpdGggdGhlIFdTREwgRWRpdG9yIiBocmVmPSJjb25jZXB0cy9jd3NkbGVkLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iSW1wb3J0aW5nIGEgV1NETCBmaWxlIiBocmVmPSJ0YXNrcy90aW1wd3NkbC5odG1sIi8+Ci08dG9waWMgbGFiZWw9IkNyZWF0aW5nIGEgbmV3IFdTREwgZmlsZSIgaHJlZj0idGFza3MvdGNydHdzZGwuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJFZGl0aW5nIFdTREwgZmlsZXMgd2l0aCB0aGUgV1NETCBFZGl0b3IiIGhyZWY9ImNvbmNlcHRzL2N3c2RsZWQuaHRtbCI+Ci08dG9waWMgbGFiZWw9IkVkaXRpbmcgV1NETCBmaWxlcyIgaHJlZj0idGFza3MvdGVkdHdzZGwuaHRtbCI+Ci08dG9waWMgbGFiZWw9IkFkZGluZyBhIHNlcnZpY2UiIGhyZWY9InRhc2tzL3RhZGRzcnZjLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iQWRkaW5nIGEgcG9ydCB0byBhIHNlcnZpY2UiIGhyZWY9InRhc2tzL3RhZGRwb3J0Lmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iU2V0dGluZyBhIHBvcnQgdHlwZSIgaHJlZj0idGFza3MvdHNldHBydHQuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJTZXR0aW5nIGEgYmluZGluZyIgaHJlZj0idGFza3MvdHNldGJpbmQuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJBZGRpbmcgYW4gb3BlcmF0aW9uIiBocmVmPSJ0YXNrcy90YWRkb3Blci5odG1sIi8+Ci08dG9waWMgbGFiZWw9IkFkZGluZyBhIG1lc3NhZ2UiIGhyZWY9InRhc2tzL3RhZGRtZXNzLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iQWRkaW5nIGEgcGFydCB0byBhIG1lc3NhZ2UiIGhyZWY9InRhc2tzL3RhZGRwYXJ0Lmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iQ3JlYXRpbmcgYW4gaW1wb3J0IHN0YXRlbWVudCIgaHJlZj0idGFza3MvdGNydGltcHQuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJDcmVhdGluZyBhIG5ldyB0eXBlIGZvciB5b3VyIFdTREwgZmlsZSIgaHJlZj0idGFza3MvdGNydHR5cGUuaHRtbCIvPgotPC90b3BpYz4KLTwvdG9waWM+Ci08dG9waWMgbGFiZWw9IkV4cGxvcmluZyBXU0RMIHVzaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiIGhyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90d3NkbGV4cC5odG1sIi8+Ci08L3RvYz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvd3N3c2RsZWRpdG9yY190b2MuZGl0YW1hcCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvd3N3c2RsZWRpdG9yY190b2MuZGl0YW1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhiZjFmMi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3dzd3NkbGVkaXRvcmNfdG9jLmRpdGFtYXAKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIG1hcCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBNYXAvL0VOIgotICJtYXAuZHRkIj4KLTxtYXAgYW5jaG9ycmVmPSIuLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvd2Vic2VydmljZV90b2MuZGl0YW1hcCN3c3dzZGxlZGl0b3JjIgotaWQ9Indzd3NkbGVkaXRvcmMiIHRpdGxlPSJ3c3dzZGxlZGl0b3JjIj4KLTx0b3BpY3JlZiBocmVmPSJjb25jZXB0cy9jd3NkbGVkLmRpdGEiIG5hdnRpdGxlPSJXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIGVkaXRvciI+Ci08L3RvcGljcmVmPgotPC9tYXA+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3dzd3NkbGVkaXRvcmNfdG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvd3N3c2RsZWRpdG9yY190b2MueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTgyNmIxLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvd3N3c2RsZWRpdG9yY190b2MueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotCi08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PgotCi08dG9jIGxpbmtfdG89Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93ZWJzZXJ2aWNlX3RvYy54bWwjd3N3c2RsZWRpdG9yYyIgbGFiZWw9Indzd3NkbGVkaXRvcmMiIHRvcGljPSJjb25jZXB0cy9jd3NkbGVkLmh0bWwiPgotPHRvcGljIGxhYmVsPSJFZGl0aW5nIFdTREwgZmlsZXMgd2l0aCB0aGUgV1NETCBFZGl0b3IiIGhyZWY9ImNvbmNlcHRzL2N3c2RsZWQuaHRtbCIvPgotPC90b2M+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3dzd3NkbGVkaXRvcnRfdG9jLmRpdGFtYXAgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLmRvYy51c2VyL3dzd3NkbGVkaXRvcnRfdG9jLmRpdGFtYXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NzBhNTIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci93c3dzZGxlZGl0b3J0X3RvYy5kaXRhbWFwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNSwgdi40MDAyLS0+Ci08IURPQ1RZUEUgbWFwIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIE1hcC8vRU4iCi0gIm1hcC5kdGQiPgotPG1hcCBhbmNob3JyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93ZWJzZXJ2aWNlX3RvYy5kaXRhbWFwI3dzd3NkbGVkaXRvcnQiCi1pZD0id3N3c2RsZWRpdG9ydCIgdGl0bGU9Indzd3NkbGVkaXRvcnQiPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RpbXB3c2RsLmRpdGEiIG5hdnRpdGxlPSJJbXBvcnRpbmcgV1NETCBmaWxlcyI+PC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90Y3J0d3NkbC5kaXRhIiBuYXZ0aXRsZT0iQ3JlYXRpbmcgV1NETCBmaWxlcyI+PC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJjb25jZXB0cy9jd3NkbGVkLmRpdGEiIG5hdnRpdGxlPSJXZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIGVkaXRvciI+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdGVkdHdzZGwuZGl0YSIgbmF2dGl0bGU9IkVkaXRpbmcgV1NETCBmaWxlcyI+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdGFkZHNydmMuZGl0YSIgbGlua2luZz0ibm9uZSIgbmF2dGl0bGU9IkFkZGluZyBhIHNlcnZpY2UiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90YWRkcG9ydC5kaXRhIiBsaW5raW5nPSJub25lIiBuYXZ0aXRsZT0iQWRkaW5nIGEgcG9ydCB0byBhIHNlcnZpY2UiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90c2V0cHJ0dC5kaXRhIiBsaW5raW5nPSJub25lIiBuYXZ0aXRsZT0iU2V0dGluZyBhIHBvcnQgdHlwZSI+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RzZXRiaW5kLmRpdGEiIGxpbmtpbmc9Im5vbmUiIG5hdnRpdGxlPSJTZXR0aW5nIGEgYmluZGluZyI+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RhZGRvcGVyLmRpdGEiIGxpbmtpbmc9Im5vbmUiIG5hdnRpdGxlPSJBZGRpbmcgYW4gb3BlcmF0aW9uIj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdGFkZG1lc3MuZGl0YSIgbGlua2luZz0ibm9uZSIgbmF2dGl0bGU9IkFkZGluZyBhIG1lc3NhZ2UiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90YWRkcGFydC5kaXRhIiBsaW5raW5nPSJub25lIiBuYXZ0aXRsZT0iQWRkaW5nIGEgcGFydCB0byBhIG1lc3NhZ2UiPgotPC90b3BpY3JlZj4KLTx0b3BpY3JlZiBocmVmPSJ0YXNrcy90Y3J0aW1wdC5kaXRhIiBsaW5raW5nPSJub25lIiBuYXZ0aXRsZT0iQ3JlYXRpbmcgYW4gaW1wb3J0IHN0YXRlbWVudCI+Ci08L3RvcGljcmVmPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3RjcnR0eXBlLmRpdGEiIGxpbmtpbmc9Im5vbmUiIG5hdnRpdGxlPSJDcmVhdGluZyBhIG5ldyB0eXBlIGZvciB5b3VyIFdTREwgZmlsZSI+Ci08L3RvcGljcmVmPgotPC90b3BpY3JlZj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLnVpLmRvYy51c2VyL3Rhc2tzL3R3c2RsZXhwLmRpdGEiCi1uYXZ0aXRsZT0iRXhwbG9yaW5nIFdTREwgdXNpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlciIgc2NvcGU9InBlZXIiPjwvdG9waWNyZWY+Ci08L21hcD4KLTw/UHViICowMDAwMDAxNzEzPz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIvd3N3c2RsZWRpdG9ydF90b2MueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci93c3dzZGxlZGl0b3J0X3RvYy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5ODRlMDguLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS5kb2MudXNlci93c3dzZGxlZGl0b3J0X3RvYy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotCi08P05MUyBUWVBFPSJvcmcuZWNsaXBzZS5oZWxwLnRvYyI/PgotCi08dG9jIGxpbmtfdG89Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93ZWJzZXJ2aWNlX3RvYy54bWwjd3N3c2RsZWRpdG9ydCIgbGFiZWw9Indzd3NkbGVkaXRvcnQiIHRvcGljPSJ0YXNrcy90aW1wd3NkbC5odG1sIj4KLTx0b3BpYyBsYWJlbD0iSW1wb3J0aW5nIGEgV1NETCBmaWxlIiBocmVmPSJ0YXNrcy90aW1wd3NkbC5odG1sIi8+Ci08dG9waWMgbGFiZWw9IkNyZWF0aW5nIGEgbmV3IFdTREwgZmlsZSIgaHJlZj0idGFza3MvdGNydHdzZGwuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJFZGl0aW5nIFdTREwgZmlsZXMgd2l0aCB0aGUgV1NETCBFZGl0b3IiIGhyZWY9ImNvbmNlcHRzL2N3c2RsZWQuaHRtbCI+Ci08dG9waWMgbGFiZWw9IkVkaXRpbmcgV1NETCBmaWxlcyIgaHJlZj0idGFza3MvdGVkdHdzZGwuaHRtbCI+Ci08dG9waWMgbGFiZWw9IkFkZGluZyBhIHNlcnZpY2UiIGhyZWY9InRhc2tzL3RhZGRzcnZjLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iQWRkaW5nIGEgcG9ydCB0byBhIHNlcnZpY2UiIGhyZWY9InRhc2tzL3RhZGRwb3J0Lmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iU2V0dGluZyBhIHBvcnQgdHlwZSIgaHJlZj0idGFza3MvdHNldHBydHQuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJTZXR0aW5nIGEgYmluZGluZyIgaHJlZj0idGFza3MvdHNldGJpbmQuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJBZGRpbmcgYW4gb3BlcmF0aW9uIiBocmVmPSJ0YXNrcy90YWRkb3Blci5odG1sIi8+Ci08dG9waWMgbGFiZWw9IkFkZGluZyBhIG1lc3NhZ2UiIGhyZWY9InRhc2tzL3RhZGRtZXNzLmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iQWRkaW5nIGEgcGFydCB0byBhIG1lc3NhZ2UiIGhyZWY9InRhc2tzL3RhZGRwYXJ0Lmh0bWwiLz4KLTx0b3BpYyBsYWJlbD0iQ3JlYXRpbmcgYW4gaW1wb3J0IHN0YXRlbWVudCIgaHJlZj0idGFza3MvdGNydGltcHQuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJDcmVhdGluZyBhIG5ldyB0eXBlIGZvciB5b3VyIFdTREwgZmlsZSIgaHJlZj0idGFza3MvdGNydHR5cGUuaHRtbCIvPgotPC90b3BpYz4KLTwvdG9waWM+Ci08dG9waWMgbGFiZWw9IkV4cGxvcmluZyBXU0RMIHVzaW5nIHRoZSBXZWIgU2VydmljZXMgRXhwbG9yZXIiIGhyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90d3NkbGV4cC5odG1sIi8+Ci08L3RvYz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci8uY3ZzaWdub3JlIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NWE2OWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLW9yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXJfMS4wLjAuamFyCi1iYWsKLXRlbXAKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci8ucHJvamVjdCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ3YzQ2ZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MzdjOWEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotI1N1biBNYXkgMDcgMjM6MDk6MTAgRURUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1lbmNvZGluZy88cHJvamVjdD49SVNPLTg4NTktMQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL0RvY0J1aWxkLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9Eb2NCdWlsZC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NjgwMDIuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL0RvY0J1aWxkLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgotPCEtLSAKLQotCVRoaXMgc2NyaXB0IGJ1aWxkIHRoZSBIZWxwIHBsdWctaW4gYnkgdHJhbnNmb3JtaW5nIHRoZSBESVRBIHNvdXJjZSBmaWxlcyBpbnRvIEhUTUwuCi0JCi0JVG8gdXNlIHRoaXMgc2NyaXB0LCB5b3UgbXVzdCBpbnN0YWxsIERJVEEtT1Qgb24geW91ciBtYWNoaW5lIGluIHRoZSBkaXJlY3RvcnkKLQlkZWZpbmVkIGJ5IHRoZSBkaXRhLm90LmRpciBwcm9wZXJ0eS4KLQkKLQlSdW4gdGhlIGRlZmF1bHQgdGFyZ2V0IGFmdGVyIHlvdSBlZGl0IHRoZSBESVRBIHNvdXJjZSBmaWxlcyB0byByZWdlbmVyYXRlIHRoZSBIVE1MLgotCQotCVRvIGN1c3RvbWl6ZSB0aGlzIHNjcmlwdCBmb3Igb3RoZXIgSGVscCBwbHVnLWlucywgbW9kaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgYXJncy5pbnB1dCBwcm9wZXJ0eQotCXRvIGJlIHRoZSBESVRBIG1hcCBmaWxlIGZvciB0aGUgcGx1Zy1pbi4KLQkKLQlOT1RFOiBUaGlzIHNjcmlwdCBhc3N1bWVzIHRoYXQgbGlua3MgdG8gc2libGluZyBIZWxwIHBsdWctaW5zIGhhdmUgc2NvcGU9InBlZXIiLCBvdGhlcndpc2UgdGhlCi0Jb3V0cHV0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgd2lsbCBiZSBzaGlmdGVkIGluY29ycmVjdGx5LgotCQotCU5PVEU6IFRoaXMgc2NyaXB0IGFzc3VtZXMgdGhhdCB5b3UgaGFuZCBjb2RlIHlvdXIgcGx1Z2luLnhtbCBmaWxlIGluIG15cGx1Z2luLnhtbC4gVGhpcyBmaWxlCi0Jd2lsbCBiZSBjb3BpZWQgb3ZlciB0aGUgZ2VuZXJhdGVkIHBsdWdpbi54bWwgd2hpY2ggaXMgY3VycmVudGx5IG5vdCBiZWluZyBnZW5lcmF0ZWQgY29ycmVjdGx5Ci0JYnkgRElUQS1PVC4KLQkKLQlDaGFuZ2VMb2c6Ci0JMjAwNi0wNC0wNSBBcnRodXIgUnltYW4gPHJ5bWFuQGNhLmlibS5jb20+Ci0JLSBDcmVhdGVkLgotCTIwMDgtMDUtMDUgS2F0ZSBQcmljZSA8a2F0ZXBAY2EuaWJtLmNvbT4KLQktIG1vZGlmaWVkIHRvIGFkZCBnZW5lcmF0aW9uIG9mIHByZS1idWlsdCBoZWxwIGluZGV4LiAKLQktIE11c3QgZGVsZXRlIC9pbmRleCBmb2xkZXIgYmVmb3JlIHJ1bm5pbmcgYnVpbGQKLS0tPgotPHByb2plY3QgbmFtZT0iZWNsaXBzZWhlbHAiIGRlZmF1bHQ9ImFsbCI+Ci0KLQk8cHJvcGVydHkgbmFtZT0iZGl0YS5vdC5kaXIiIGxvY2F0aW9uPSJDOi9ESVRBLU9UMS4yLjIiIC8+Ci0KLQk8cGF0aCBpZD0iZG9zdC5jbGFzcy5wYXRoIj4KLQkJPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2RpdGEub3QuZGlyfSR7ZmlsZS5zZXBhcmF0b3J9bGliJHtmaWxlLnNlcGFyYXRvcn1kb3N0LmphciIgLz4KLQk8L3BhdGg+Ci0KLQk8dGFza2RlZiBuYW1lPSJpbnRlZ3JhdGUiIGNsYXNzbmFtZT0ib3JnLmRpdGEuZG9zdC5wbGF0Zm9ybS5JbnRlZ3JhdG9yVGFzayI+Ci0JCTxjbGFzc3BhdGggcmVmaWQ9ImRvc3QuY2xhc3MucGF0aCIgLz4KLQk8L3Rhc2tkZWY+Ci0JPHRhcmdldCBuYW1lPSJhbGwiIGRlcGVuZHM9ImludGVncmF0ZSwgZWNsaXBzZWhlbHAiPgotCTwvdGFyZ2V0PgotCTx0YXJnZXQgbmFtZT0iaW50ZWdyYXRlIj4KLQkJPGludGVncmF0ZSBkaXRhZGlyPSIke2RpdGEub3QuZGlyfSIgLz4KLQk8L3RhcmdldD4KLQotCTwhLS0gcmV2aXNlIGJlbG93IGhlcmUgLS0+Ci0JPHRhcmdldCBuYW1lPSJlY2xpcHNlaGVscCI+Ci0JCTxhbnQgYW50ZmlsZT0iJHtkaXRhLm90LmRpcn0ke2ZpbGUuc2VwYXJhdG9yfWNvbmR1Y3Rvci54bWwiIHRhcmdldD0iaW5pdCIgZGlyPSIke2RpdGEub3QuZGlyfSI+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5jb3B5Y3NzIiB2YWx1ZT0ibm8iIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5jc3NwYXRoIiB2YWx1ZT0iLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9ImFyZ3MuZWNsaXBzZS5wcm92aWRlciIgdmFsdWU9IkVjbGlwc2Uub3JnIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9ImFyZ3MuZWNsaXBzZS52ZXJzaW9uIiB2YWx1ZT0iMS41LjAiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYXJncy5pbnB1dCIgbG9jYXRpb249Indzd3NpdGVzdF90b2MuZGl0YW1hcCIgLz4gICAgCQkKLQkJCTxwcm9wZXJ0eSBuYW1lPSJjbGVhbi50ZW1wIiB2YWx1ZT0idHJ1ZSIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJkaXRhLmV4dG5hbWUiIHZhbHVlPSIuZGl0YSIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJkaXRhLnRlbXAuZGlyIiBsb2NhdGlvbj0idGVtcCIgLz4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJvdXRwdXQuZGlyIiBsb2NhdGlvbj0iIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9InRyYW5zdHlwZSIgdmFsdWU9ImVjbGlwc2VoZWxwIiAvPgotCQk8L2FudD4KLQkJPGNvcHkgZmlsZT0ibXlwbHVnaW4ueG1sIiB0b2ZpbGU9InBsdWdpbi54bWwiIG92ZXJ3cml0ZT0ieWVzIiAvPgotCTwvdGFyZ2V0PgotCTx0YXJnZXQgbmFtZT0iYnVpbGQuaW5kZXgiIGRlc2NyaXB0aW9uPSJCdWlsZHMgc2VhcmNoIGluZGV4IGZvciB0aGUgcGx1Zy1pbiIgaWY9ImVjbGlwc2UucnVubmluZyI+Ci0JICAgICA8aGVscC5idWlsZEhlbHBJbmRleCBtYW5pZmVzdD0icGx1Z2luLnhtbCIgZGVzdGluYXRpb249Ii4iLz4KLQk8L3RhcmdldD4JCi08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMWZkNmQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlcGx1Z2luTmFtZQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlcjsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjQwMS5xdWFsaWZpZXIKLUJ1bmRsZS1WZW5kb3I6ICVwbHVnaW5Qcm92aWRlcgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvYWJvdXQuaHRtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvYnVpbGQucHJvcGVydGllcyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmViMTdjLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICBpbWFnZXMvLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgdGFza3MvKi5odG0qLFwKLSAgICAgICAgICAgICAgIHdzd3NpdGVzdF90b2MueG1sLFwKLSAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXJpbmRleC54bWwsXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIGluZGV4LyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcwotc3JjLmluY2x1ZGVzID0gYnVpbGQucHJvcGVydGllcyxcCi0JCSAgICAgICAqLm1hcGxpc3QsXAotICAgICAgICAgICAgICAgKi5kaXRhbWFwLFwKLQkJICAgICAgdGFza3MvKi5kaXRhCi1iaW4uZXhjbHVkZXMgPSBEb2NCdWlsZC54bWwsXAotICAgICAgICAgICAgICAgbXlQbHVnaW4qLnhtbApkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL2ltYWdlcy90cmFmZmljLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9pbWFnZXMvdHJhZmZpYy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMWVhNGEuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL2ltYWdlcy90cmFmZmljLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9pbWFnZXMvd3NpdmFsaWNvLmdpZiBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9pbWFnZXMvd3NpdmFsaWNvLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjYWQ4NC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvaW1hZ2VzL3dzaXZhbGljby5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvaW5kZXgvXzMuY2ZzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL2luZGV4L18zLmNmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIwOTdkMy4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvaW5kZXgvXzMuY2ZzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL2luZGV4L2RlbGV0YWJsZSBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9pbmRleC9kZWxldGFibGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5M2Y0NzAuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL2luZGV4L2RlbGV0YWJsZQorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2NvbnRyaWJ1dGlvbnMgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9jb250cmlidXRpb25zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzAzMjMzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2NvbnRyaWJ1dGlvbnMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSNUaGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGU7IGRvIG5vdCBlZGl0Lg0KLSNXZWQgTWF5IDE0IDE3OjM0OjIzIEVEVCAyMDA4DQotb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlcj1vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyXG4xLjAuMjAzLnF1YWxpZmllcg0KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RlcGVuZGVuY2llcyBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9pbmRleC9pbmRleGVkX2RlcGVuZGVuY2llcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlmYTA5ZC4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kZXBlbmRlbmNpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSNUaGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGU7IGRvIG5vdCBlZGl0Lg0KLSNXZWQgTWF5IDE0IDE3OjM0OjIzIEVEVCAyMDA4DQotbHVjZW5lPTEuOS4xLnYyMDA4MDMwNjE4MTENCi1hbmFseXplcj1vcmcuZWNsaXBzZS5oZWxwLmJhc2VcIzMuMy4xMDAudjIwMDgwNDI1P2xvY2FsZVw9ZW4NCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kb2NzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL2luZGV4L2luZGV4ZWRfZG9jcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMwOGRkZi4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvaW5kZXgvaW5kZXhlZF9kb2NzCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlOyBkbyBub3QgZWRpdC4NCi0jV2VkIE1heSAxNCAxNzozNDoyMyBFRFQgMjAwOA0KLS9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3R3c2l2YWwuaHRtbD0wDQotL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvdGFza3MvdHdzZGx2YWwuaHRtbD0wDQotL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvdGFza3MvdG1vbml0b3IuaHRtbD0wDQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL2luZGV4L3NlZ21lbnRzIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL2luZGV4L3NlZ21lbnRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGI1Nzk2Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9pbmRleC9zZWdtZW50cworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9teXBsdWdpbi54bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvbXlwbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzk2YWNmLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9teXBsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLTwhLS0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gVGhpcyBpcyB0aGUgcGx1Z2luIGZvciBkZWNsYXJpbmcgdGhlIGhlbHAgICAgICAgICAtLT4KLTwhLS0gY29udHJpYnV0aW9ucyBmb3IgdXNpbmcgdGhlIHRvb2wuICAgICAgICAgICAgICAgICAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQotPHBsdWdpbj4KLQotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC50b2MiPgotICAgIDx0b2MgZmlsZT0id3N3c2l0ZXN0X3RvYy54bWwiLz4gCi0gICAgICAgPGluZGV4IHBhdGg9ImluZGV4LyIvPiAgCi08L2V4dGVuc2lvbj4KLQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuaW5kZXgiPgotICAgICAgPGluZGV4IGZpbGU9Im9yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXJpbmRleC54bWwiLz4KLTwvZXh0ZW5zaW9uPgotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5iYXNlLmx1Y2VuZVNlYXJjaFBhcnRpY2lwYW50cyI+Ci0gICAgICA8YmluZGluZyBwYXJ0aWNpcGFudElkPSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UueGh0bWwiLz4KLSAgIDwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIubWFwbGlzdCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyLm1hcGxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNThhMjYuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIubWFwbGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPG1hcGxpc3QgdmVyc2lvbj0iMy42LjIiPgotICA8bmF2PgotICAgIDxtYXAgZmlsZT0id3N3c2l0ZXN0X3RvYy5kaXRhbWFwIi8+Ci0gIDwvbmF2PgotICA8bGluaz4KLSAgICA8bWFwIGZpbGU9Indzd3NpdGVzdF90b2MuZGl0YW1hcCIvPgotICA8L2xpbms+Ci08L21hcGxpc3Q+CmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlcmluZGV4LnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyaW5kZXgueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzJkNGIzLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyaW5kZXgueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxpbmRleD4KLSAgPGVudHJ5IGtleXdvcmQ9IldTREwgZmlsZXMiPgotICAgIDxlbnRyeSBrZXl3b3JkPSJ2YWxpZGF0aW5nIj4KLSAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90d3NkbHZhbC5odG1sI3R3c2RsdmFsIiB0aXRsZT0iVmFsaWRhdGluZyBXU0RMIGZpbGVzIi8+Ci0gICAgPC9lbnRyeT4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9IldlYiBzZXJ2aWNlcyI+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InZhbGlkYXRpbmcgV1NETCI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdHdzZGx2YWwuaHRtbCN0d3NkbHZhbCIgdGl0bGU9IlZhbGlkYXRpbmcgV1NETCBmaWxlcyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9InRlc3RpbmcgdHJhZmZpYyI+Ci0gICAgICA8dG9waWMgaHJlZj0idGFza3MvdG1vbml0b3IuaHRtbCN0bW9uaXRvciIgdGl0bGU9IlVzaW5nIHRoZSBUQ1AvSVAgTW9uaXRvciB0byB0ZXN0IFdlYiBzZXJ2aWNlcyIvPgotICAgIDwvZW50cnk+Ci0gICAgPGVudHJ5IGtleXdvcmQ9Im1vbml0b3JpbmcgVENQL0lQIHRyYWZmaWMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3Rtb25pdG9yLmh0bWwjdG1vbml0b3IiIHRpdGxlPSJVc2luZyB0aGUgVENQL0lQIE1vbml0b3IgdG8gdGVzdCBXZWIgc2VydmljZXMiLz4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJpbnRlcm9wZXJhYmlsaXR5Ij4KLSAgICAgIDxlbnRyeSBrZXl3b3JkPSJ2YWxpZGF0aW5nIj4KLSAgICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3R3c2l2YWwuaHRtbCN0d3NpdmFsIiB0aXRsZT0iVmFsaWRhdGluZyBXUy1JIFdlYiBzZXJ2aWNlIHRyYWZmaWMgY29tcGxpYW5jZSIvPgotICAgICAgPC9lbnRyeT4KLSAgICA8L2VudHJ5PgotICAgIDxlbnRyeSBrZXl3b3JkPSJ2YWxpZGF0aW5nIFdTLUkgY29tcGxpYW5jZSI+Ci0gICAgICA8ZW50cnkga2V5d29yZD0idmFsaWRhdGluZyI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90d3NpdmFsLmh0bWwjdHdzaXZhbCIgdGl0bGU9IlZhbGlkYXRpbmcgV1MtSSBXZWIgc2VydmljZSB0cmFmZmljIGNvbXBsaWFuY2UiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgICA8ZW50cnkga2V5d29yZD0iaW50ZXJvcGVyYWJpbGl0eSI+Ci0gICAgICAgIDx0b3BpYyBocmVmPSJ0YXNrcy90d3NpdmFsLmh0bWwjdHdzaXZhbCIgdGl0bGU9IlZhbGlkYXRpbmcgV1MtSSBXZWIgc2VydmljZSB0cmFmZmljIGNvbXBsaWFuY2UiLz4KLSAgICAgIDwvZW50cnk+Ci0gICAgPC9lbnRyeT4KLSAgPC9lbnRyeT4KLSAgPGVudHJ5IGtleXdvcmQ9IlRDUC9JUCBNb25pdG9yIj4KLSAgICA8ZW50cnkga2V5d29yZD0idGVzdGluZyBXZWIgc2VydmljZXMiPgotICAgICAgPHRvcGljIGhyZWY9InRhc2tzL3Rtb25pdG9yLmh0bWwjdG1vbml0b3IiIHRpdGxlPSJVc2luZyB0aGUgVENQL0lQIE1vbml0b3IgdG8gdGVzdCBXZWIgc2VydmljZXMiLz4KLSAgICA8L2VudHJ5PgotICA8L2VudHJ5PgotPC9pbmRleD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvcGx1Z2luLnByb3BlcnRpZXMgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MzZmZWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgTkxTX01FU1NBR0VGT1JNQVRfVkFSIAotIyBOTFNfRU5DT0RJTkc9VVRGLTggCi0KLXBsdWdpbk5hbWUgICAgID0gV1MtSSBWYWxpZGF0aW9uIERvY3VtZW50YXRpb24KLXBsdWdpblByb3ZpZGVyID0gRWNsaXBzZS5vcmcKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci9wbHVnaW4ueG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3OTZhY2YuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLTwhLS0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gVGhpcyBpcyB0aGUgcGx1Z2luIGZvciBkZWNsYXJpbmcgdGhlIGhlbHAgICAgICAgICAtLT4KLTwhLS0gY29udHJpYnV0aW9ucyBmb3IgdXNpbmcgdGhlIHRvb2wuICAgICAgICAgICAgICAgICAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLQotPHBsdWdpbj4KLQotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC50b2MiPgotICAgIDx0b2MgZmlsZT0id3N3c2l0ZXN0X3RvYy54bWwiLz4gCi0gICAgICAgPGluZGV4IHBhdGg9ImluZGV4LyIvPiAgCi08L2V4dGVuc2lvbj4KLQotCTxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAuaW5kZXgiPgotICAgICAgPGluZGV4IGZpbGU9Im9yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXJpbmRleC54bWwiLz4KLTwvZXh0ZW5zaW9uPgotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC5iYXNlLmx1Y2VuZVNlYXJjaFBhcnRpY2lwYW50cyI+Ci0gICAgICA8YmluZGluZyBwYXJ0aWNpcGFudElkPSJvcmcuZWNsaXBzZS5oZWxwLmJhc2UueGh0bWwiLz4KLSAgIDwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3Rtb25pdG9yLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvdGFza3MvdG1vbml0b3IuZGl0YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q2ZjZlOS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvdGFza3MvdG1vbml0b3IuZGl0YQorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tQXJib3J0ZXh0LCBJbmMuLCAxOTg4LTIwMDYsIHYuNDAwMi0tPgotPCFET0NUWVBFIHRhc2sgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgVGFzay8vRU4iCi0gInRhc2suZHRkIj4KLTx0YXNrIGlkPSJ0bW9uaXRvciIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5Vc2luZyB0aGUgVENQL0lQIE1vbml0b3IgdG8gdGVzdCBXZWIgc2VydmljZXM8L3RpdGxlPgotPHRpdGxlYWx0cz4KLTxzZWFyY2h0aXRsZT5Vc2luZyB0aGUgVENQL0lQIG9yIFNPQVAgbW9uaXRvciB0byB0ZXN0IFdlYiBzZXJ2aWNlczwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+T25jZSB5b3UgaGF2ZSBjcmVhdGVkIHlvdXIgV2ViIHNlcnZpY2UgYW5kIFdlYiBzZXJ2aWNlIGNsaWVudCwKLXlvdSBjYW4gbW9uaXRvciB0aGUgV2ViIHNlcnZpY2UncyBTT0FQIHRyYWZmaWMgdXNpbmcgdGhlIFRDUC9JUCBNb25pdG9yLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybSBrZXlyZWY9InRtb25pdG9yfDF8VENQL0lQTW9uaXRvcnRlc3RpbmdXZWJzZXJ2aWNlcyIgc3RhdHVzPSJ1bmNoYW5nZWQiPlRDUC9JUAotTW9uaXRvcjxpbmRleHRlcm0+dGVzdGluZyBXZWIgc2VydmljZXM8L2luZGV4dGVybT48L2luZGV4dGVybT48aW5kZXh0ZXJtIGtleXJlZj0idG1vbml0b3J8MnxXZWJzZXJ2aWNlc3Rlc3Rpbmd0cmFmZmljIgotc3RhdHVzPSJ1bmNoYW5nZWQiPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+dGVzdGluZyB0cmFmZmljPC9pbmRleHRlcm0+PC9pbmRleHRlcm0+Ci08aW5kZXh0ZXJtIGtleXJlZj0idG1vbml0b3J8M3xXZWJzZXJ2aWNlc21vbml0b3JpbmdUQ1AvSVB0cmFmZmljIiBzdGF0dXM9InVuY2hhbmdlZCI+V2ViCi1zZXJ2aWNlczxpbmRleHRlcm0+bW9uaXRvcmluZyBUQ1AvSVAgdHJhZmZpYzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPHByZXJlcT48cD4gUHJlcmVxdWlzaXRlczogPC9wPjx1bD4KLTxsaT5HZW5lcmF0ZSBhIFdlYiBzZXJ2aWNlPC9saT4KLTxsaT5HZW5lcmF0ZSBhIFByb3h5IGFuZCBhIHNhbXBsZSBhcHBsaWNhdGlvbjwvbGk+Ci08L3VsPjwvcHJlcmVxPgotPGNvbnRleHQ+PHA+V2hlbiBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBXZWIgc2VydmljZSBvciBXZWIgc2VydmljZQotY2xpZW50IHdpemFyZHMsIHlvdSBjYW4gc2VsZWN0IHRvIHNldCB1cCBhbmQgcnVuIHRoZSBUQ1AvSVAgTW9uaXRvciBhdXRvbWF0aWNhbGx5LgotQWx0ZXJuYXRlbHksIHlvdSBjYW4gc2V0IHVwIHRoZSBUQ1AvSVAgTW9uaXRvciBtYW51YWxseSBieSBjb21wbGV0aW5nIHRoZQotZm9sbG93aW5nIHN0ZXBzOjwvcD48L2NvbnRleHQ+Ci08c3RlcHM+Ci08c3RlcD48Y21kPkluIHRoZSBzYW1wbGUgYXBwbGljYXRpb24sIGludm9rZSB0aGUgZ2V0RW5kUG9pbnQgbWV0aG9kLiBSZWNvcmQKLXRoaXMgZW5kcG9pbnQuIFRoZSBkZWZhdWx0IGVuZHBvaW50IGZvciBhIFdlYiBzZXJ2aWNlIGlzOiBodHRwOi8vbG9jYWxob3N0OiZsdDtwb3J0Pi8mbHQ7d2ViCi1tb2R1bGUgY29udGV4dCByb290Pi9zZXJ2aWNlcy8mbHQ7cG9ydD48L2NtZD48L3N0ZXA+Ci08c3RlcD48Y21kPkNyZWF0ZSBhIHNlcnZlciB0byBhY3QgYXMgdGhlIFRDUC9JUCBNb25pdG9yOjwvY21kPgotPHN1YnN0ZXBzPgotPHN1YnN0ZXA+PGNtZD5Gcm9tIHRoZSBXaW5kb3cgbWVudSwgc2VsZWN0IDx1aWNvbnRyb2w+UHJlZmVyZW5jZXM8L3VpY29udHJvbD4uIDwvY21kPgotPC9zdWJzdGVwPgotPHN1YnN0ZXA+PGNtZD5JbiB0aGUgUHJlZmVyZW5jZXMgd2luZG93LCBleHBhbmQgPHVpY29udHJvbD5SdW4vRGVidWc8L3VpY29udHJvbD4sCi1hbmQgdGhlbiBzZWxlY3QgPHVpY29udHJvbD5UQ1AvSVAgTW9uaXRvcjwvdWljb250cm9sPi4gPC9jbWQ+PC9zdWJzdGVwPgotPHN1YnN0ZXA+PGNtZD5TZWxlY3QgdGhlIDx1aWNvbnRyb2w+U2hvdyBUQ1AvSVAgTW9uaXRvciBWaWV3IHdoZW4gdGhlcmUgaXMKLWFjdGl2aXR5PC91aWNvbnRyb2w+IGNoZWNrIGJveC4gPC9jbWQ+PC9zdWJzdGVwPgotPHN1YnN0ZXA+PGNtZD5VbmRlciB0aGUgVENQL0lQIE1vbml0b3JzIGxpc3RzLCBjbGljayA8dWljb250cm9sPkFkZDwvdWljb250cm9sPi4KLUEgTmV3IE1vbml0b3IgZGlhbG9nIG9wZW5zLjwvY21kPjwvc3Vic3RlcD4KLTxzdWJzdGVwPjxjbWQ+U3BlY2lmeSB0aGUgZm9sbG93aW5nIHNldHRpbmdzOiA8L2NtZD48L3N1YnN0ZXA+Ci08L3N1YnN0ZXBzPgotPGNob2ljZXRhYmxlPgotPGNoaGVhZD48Y2hvcHRpb25oZD5PcHRpb248L2Nob3B0aW9uaGQ+PGNoZGVzY2hkPkRlc2NyaXB0aW9uPC9jaGRlc2NoZD48L2NoaGVhZD4KLTxjaHJvdz48Y2hvcHRpb24+TG9jYWwgbW9uaXRvcmluZyBwb3J0PC9jaG9wdGlvbj48Y2hkZXNjPlNwZWNpZnkgYSB1bmlxdWUKLXBvcnQgbnVtYmVyIG9uIHlvdXIgbG9jYWwgbWFjaGluZS48L2NoZGVzYz48L2Nocm93PgotPGNocm93PjxjaG9wdGlvbj5Ib3N0IG5hbWU8L2Nob3B0aW9uPjxjaGRlc2M+U3BlY2lmeSB0aGUgaG9zdCBuYW1lIG9yIElQIGFkZHJlc3MKLW9mIHRoZSBtYWNoaW5lIHdoZXJlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy48L2NoZGVzYz48L2Nocm93PgotPGNocm93PjxjaG9wdGlvbj5Qb3J0PC9jaG9wdGlvbj48Y2hkZXNjPlNwZWNpZnkgdGhlIHBvcnQgbnVtYmVyIG9mIHRoZSByZW1vdGUKLXNlcnZlci48L2NoZGVzYz48L2Nocm93PgotPGNocm93PjxjaG9wdGlvbj5UeXBlPC9jaG9wdGlvbj48Y2hkZXNjPlNwZWNpZnkgd2hldGhlciB0aGUgcmVxdWVzdCB0eXBlIGZyb20KLXRoZSBXZWIgYnJvd3NlciBhcmUgc2VudCBieSBIVFRQIG9yIFRDUC9JUC4gSWYgdGhlIEhUVFAgb3B0aW9uIGlzIHNlbGVjdGVkCi10aGUgcmVxdWVzdHMgZnJvbSB0aGUgV2ViIGJyb3dzZXIgYXJlIG1vZGlmaWVkIHNvIHRoYXQgdGhlIEhUVFAgaGVhZGVyIHBvaW50cwotdG8gdGhlIHJlbW90ZSBtYWNoaW5lIGFuZCBzZXBhcmF0ZWQgaWYgbXVsdGlwbGUgSFRUUCByZXF1ZXN0cyBhcmUgcmVjZWl2ZWQKLWluIHRoZSBzYW1lIGNvbm5lY3Rpb24uIElmIHRoZSBUQ1AvSVAgb3B0aW9uIGlzIHNlbGVjdGVkLCBhbGwgdGhlIHJlcXVlc3RzCi1hcmUgc2VudCBieXRlIGZvciBieXRlLiA8L2NoZGVzYz48L2Nocm93PgotPGNocm93PjxjaG9wdGlvbj5UaW1lb3V0PC9jaG9wdGlvbj48Y2hkZXNjPlNwZWNpZnkgaG93IGxvbmcgeW91IHdvdWxkIGxpa2UKLXRoZSBtb25pdG9yIHRvIHdhaXQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gY29ubmVjdCBhZ2Fpbi48L2NoZGVzYz48L2Nocm93PgotPC9jaG9pY2V0YWJsZT4KLTwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gb3JkZXIgdG8gcm91dGUgdGhlIFdlYiBzZXJ2aWNlIHRocm91Z2ggdGhlIG1vbml0b3IsIHRoZSBlbmRwb2ludAotb2YgdGhlIFdlYiBzZXJ2aWNlIGNsaWVudCBtdXN0IGJlIGNoYW5nZWQuIFRoZSBUQ1AvSVAgTW9uaXRvciBsaXN0ZW5zIG9uIHBvcnQKLTkwODEuIEluIHRoZSBXZWIgYnJvd3NlciB3aW5kb3cgdXNlZCBpbiBzdGVwIDEsIGludm9rZSB0aGUgc2V0RW5kUG9pbnQgbWV0aG9kLAotYW5kIGNoYW5nZSB0aGUgZW5kcG9pbnQgc28gdGhhdCBpdCBkaXJlY3RzIHRvIHBvcnQgOTA4MS4gRm9yIGV4YW1wbGUsIHRoZQotZGVmYXVsdCB3b3VsZCBiZTogPGNvZGVwaD5odHRwOi8vbG9jYWxob3N0OjkwODEvd2ViX21vZHVsZV9jb250ZXh0X3Jvb3Qvc2VydmxldC9ycGNyb3V0ZXI8L2NvZGVwaD4gSW52b2tlCi10aGUgZ2V0RW5kUG9pbnQgbWV0aG9kIGFnYWluIHRvIGVuc3VyZSB0aGF0IHlvdXIgY2hhbmdlIGhhcyBiZWVuIGltcGxlbWVudGVkLjwvY21kPgotPC9zdGVwPgotPHN0ZXA+PGNtZD5TZWxlY3QgYSBXZWIgc2VydmljZSBtZXRob2QgaW4gdGhlIE1ldGhvZHMgcGFuZS4gSW52b2tlIHRoaXMgbWV0aG9kLjwvY21kPgotPC9zdGVwPgotPHN0ZXA+PGNtZD5DaGFuZ2UgdG8gdGhlIFRDUC9JUCBNb25pdG9yIHZpZXcgYnkgc2VsZWN0aW5nIHRoZSBUQ1AvSVAgTW9uaXRvcgotdGFiIGluIHRoZSBTZXJ2ZXJzIHZpZXcuIFRoaXMgd2lsbCBkaXNwbGF5IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBhaXJzIHRoYXQKLWFyZSBiZWluZyByb3V0ZWQgdGhyb3VnaCB0aGUgVENQL0lQIE1vbml0b3IuIEl0IHdpbGwgbG9vayBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmcKLXBpY3R1cmU6ICA8aW1hZ2UgYWx0PSJTY3JlZW4gY2FwdHVyZSBvZiByZXF1ZXN0IGFuZCByZXNwb25zZSB0cmFmZmljIiBocmVmPSIuLi9pbWFnZXMvdHJhZmZpYy5naWYiCi1wbGFjZW1lbnQ9ImJyZWFrIj48L2ltYWdlPjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+VG8gZW5zdXJlIHRoYXQgeW91ciBXZWIgc2VydmljZSBTT0FQIHRyYWZmaWMgaXMgV1MtSSBjb21wbGlhbnQsCi15b3UgY2FuIGdlbmVyYXRlIGEgbG9nIGZpbGUgYnkgY2xpY2tpbmcgdGhlICA8aW1hZ2UgYWx0PSJXUy1JIHZhbGlkYXRpb24gaWNvbiIKLWhyZWY9Ii4uL2ltYWdlcy93c2l2YWxpY28uZ2lmIj48L2ltYWdlPiBpY29uLiBJbiB0aGUgZGlhbG9nIGJveCB0aGF0IG9wZW5zLAotc2VsZWN0IGEgbmFtZSBmb3IgdGhlIGxvZyBmaWxlIGFuZCBzcGVjaWZ5IHdoZXJlIHlvdSB3YW50IGl0IHRvIGJlIHN0b3JlZC4gPC9jbWQ+Ci08L3N0ZXA+Ci08L3N0ZXBzPgotPHJlc3VsdD5UaGlzIGxvZyBmaWxlIHdpbGwgYmUgdmFsaWRhdGVkIGZvciBXUy1JIGNvbXBsaWFuY2UuIFlvdSBjYW4gb3BlbgotdGhlIGxvZyBmaWxlIGluIGFuIFhNTCBlZGl0b3IgdG8gZXhhbWluZSBpdHMgY29udGVudHMuPC9yZXN1bHQ+Ci08L3Rhc2tib2R5PgotPHJlbGF0ZWQtbGlua3M+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgQ29uY2VwdHM8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2Nzb2FwLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5TT0FQPC9saW5rdGV4dD48L2xpbms+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW92ZXIuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldTLUk8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yc2VydnBvbHByZWYuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PlNldHRpbmcgdGhlIGxldmVsIG9mIFdTLUkgY29tcGxpYW5jZTwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90bW9uaXRvci5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3Rtb25pdG9yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYTAzNTQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3Rtb25pdG9yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCBsYW5nPSJlbi11cyIgeG1sOmxhbmc9ImVuLXVzIj4KLTxoZWFkPgotPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+Ci08bWV0YSBuYW1lPSJjb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMCwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuIENvbnRyaWJ1dG9yczogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIiAvPgotPG1ldGEgbmFtZT0iREMucmlnaHRzLm93bmVyIiBjb250ZW50PSIoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDgiIC8+Ci08bWV0YSBjb250ZW50PSJwdWJsaWMiIG5hbWU9InNlY3VyaXR5IiAvPgotPG1ldGEgY29udGVudD0iaW5kZXgsZm9sbG93IiBuYW1lPSJSb2JvdHMiIC8+Ci08bWV0YSBodHRwLWVxdWl2PSJQSUNTLUxhYmVsIiBjb250ZW50PScoUElDUy0xLjEgImh0dHA6Ly93d3cuaWNyYS5vcmcvcmF0aW5nc3YwMi5odG1sIiBsIGdlbiB0cnVlIHIgKGN6IDEgbHogMSBueiAxIG96IDEgdnogMSkgImh0dHA6Ly93d3cucnNhYy5vcmcvcmF0aW5nc3YwMS5odG1sIiBsIGdlbiB0cnVlIHIgKG4gMCBzIDAgdiAwIGwgMCkgImh0dHA6Ly93d3cuY2xhc3NpZnkub3JnL3NhZmVzdXJmLyIgbCBnZW4gdHJ1ZSByIChTU35+MDAwIDEpKScgLz4KLTxtZXRhIGNvbnRlbnQ9InRhc2siIG5hbWU9IkRDLlR5cGUiIC8+Ci08bWV0YSBuYW1lPSJEQy5UaXRsZSIgY29udGVudD0iVXNpbmcgdGhlIFRDUC9JUCBNb25pdG9yIHRvIHRlc3QgV2ViIHNlcnZpY2VzIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9Ik9uY2UgeW91IGhhdmUgY3JlYXRlZCB5b3VyIFdlYiBzZXJ2aWNlIGFuZCBXZWIgc2VydmljZSBjbGllbnQsIHlvdSBjYW4gbW9uaXRvciB0aGUgV2ViIHNlcnZpY2UncyBTT0FQIHRyYWZmaWMgdXNpbmcgdGhlIFRDUC9JUCBNb25pdG9yLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgeW91ciBXZWIgc2VydmljZSBhbmQgV2ViIHNlcnZpY2UgY2xpZW50LCB5b3UgY2FuIG1vbml0b3IgdGhlIFdlYiBzZXJ2aWNlJ3MgU09BUCB0cmFmZmljIHVzaW5nIHRoZSBUQ1AvSVAgTW9uaXRvci4iIC8+Ci08bWV0YSBjb250ZW50PSJUQ1AvSVAgTW9uaXRvciwgdGVzdGluZyBXZWIgc2VydmljZXMsIFdlYiBzZXJ2aWNlcywgdGVzdGluZyB0cmFmZmljLCBXZWIgc2VydmljZXMsIG1vbml0b3JpbmcgVENQL0lQIHRyYWZmaWMiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJUQ1AvSVAgTW9uaXRvciwgdGVzdGluZyBXZWIgc2VydmljZXMsIFdlYiBzZXJ2aWNlcywgdGVzdGluZyB0cmFmZmljLCBXZWIgc2VydmljZXMsIG1vbml0b3JpbmcgVENQL0lQIHRyYWZmaWMiIG5hbWU9ImtleXdvcmRzIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3NvYXAuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lvdmVyLmh0bWwiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci90YXNrcy90d3NpY29tcGx5Lmh0bWwiIC8+Ci08bWV0YSBjb250ZW50PSJYSFRNTCIgbmFtZT0iREMuRm9ybWF0IiAvPgotPG1ldGEgY29udGVudD0idG1vbml0b3IiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5Vc2luZyB0aGUgVENQL0lQIG9yIFNPQVAgbW9uaXRvciB0byB0ZXN0IFdlYiBzZXJ2aWNlczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0idG1vbml0b3IiPjxhIG5hbWU9InRtb25pdG9yIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5Vc2luZyB0aGUgVENQL0lQIE1vbml0b3IgdG8gdGVzdCBXZWIgc2VydmljZXM8L2gxPgotCi0KLQotCi08ZGl2PjxwPk9uY2UgeW91IGhhdmUgY3JlYXRlZCB5b3VyIFdlYiBzZXJ2aWNlIGFuZCBXZWIgc2VydmljZSBjbGllbnQsCi15b3UgY2FuIG1vbml0b3IgdGhlIFdlYiBzZXJ2aWNlJ3MgU09BUCB0cmFmZmljIHVzaW5nIHRoZSBUQ1AvSVAgTW9uaXRvci48L3A+Ci0KLTxkaXYgY2xhc3M9InAiPjxwPiBQcmVyZXF1aXNpdGVzOiA8L3A+Ci08dWw+Ci08bGk+R2VuZXJhdGUgYSBXZWIgc2VydmljZTwvbGk+Ci0KLTxsaT5HZW5lcmF0ZSBhIFByb3h5IGFuZCBhIHNhbXBsZSBhcHBsaWNhdGlvbjwvbGk+Ci0KLTwvdWw+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+V2hlbiBjcmVhdGluZyBhIFdlYiBzZXJ2aWNlIHVzaW5nIHRoZSBXZWIgc2VydmljZSBvciBXZWIgc2VydmljZQotY2xpZW50IHdpemFyZHMsIHlvdSBjYW4gc2VsZWN0IHRvIHNldCB1cCBhbmQgcnVuIHRoZSBUQ1AvSVAgTW9uaXRvciBhdXRvbWF0aWNhbGx5LgotQWx0ZXJuYXRlbHksIHlvdSBjYW4gc2V0IHVwIHRoZSBUQ1AvSVAgTW9uaXRvciBtYW51YWxseSBieSBjb21wbGV0aW5nIHRoZQotZm9sbG93aW5nIHN0ZXBzOjwvcD4KLTwvZGl2PgotCi08b2w+Ci08bGk+PHNwYW4+SW4gdGhlIHNhbXBsZSBhcHBsaWNhdGlvbiwgaW52b2tlIHRoZSBnZXRFbmRQb2ludCBtZXRob2QuIFJlY29yZAotdGhpcyBlbmRwb2ludC4gVGhlIGRlZmF1bHQgZW5kcG9pbnQgZm9yIGEgV2ViIHNlcnZpY2UgaXM6IGh0dHA6Ly9sb2NhbGhvc3Q6Jmx0O3BvcnQmZ3Q7LyZsdDt3ZWIKLW1vZHVsZSBjb250ZXh0IHJvb3QmZ3Q7L3NlcnZpY2VzLyZsdDtwb3J0Jmd0Ozwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+Q3JlYXRlIGEgc2VydmVyIHRvIGFjdCBhcyB0aGUgVENQL0lQIE1vbml0b3I6PC9zcGFuPgotPG9sIHR5cGU9ImEiPgotPGxpPjxzcGFuPkZyb20gdGhlIFdpbmRvdyBtZW51LCBzZWxlY3QgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+UHJlZmVyZW5jZXM8L3NwYW4+LiA8L3NwYW4+Ci08L2xpPgotCi08bGk+PHNwYW4+SW4gdGhlIFByZWZlcmVuY2VzIHdpbmRvdywgZXhwYW5kIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlJ1bi9EZWJ1Zzwvc3Bhbj4sCi1hbmQgdGhlbiBzZWxlY3QgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+VENQL0lQIE1vbml0b3I8L3NwYW4+LiA8L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPlNlbGVjdCB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+U2hvdyBUQ1AvSVAgTW9uaXRvciBWaWV3IHdoZW4gdGhlcmUgaXMKLWFjdGl2aXR5PC9zcGFuPiBjaGVjayBib3guIDwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+VW5kZXIgdGhlIFRDUC9JUCBNb25pdG9ycyBsaXN0cywgY2xpY2sgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWRkPC9zcGFuPi4KLUEgTmV3IE1vbml0b3IgZGlhbG9nIG9wZW5zLjwvc3Bhbj48L2xpPgotCi08bGk+PHNwYW4+U3BlY2lmeSB0aGUgZm9sbG93aW5nIHNldHRpbmdzOiA8L3NwYW4+PC9saT4KLQotPC9vbD4KLQotCi08dGFibGUgY2xhc3M9ImNob2ljZXRhYmxlYm9yZGVyIiBzdW1tYXJ5PSIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNCIgcnVsZXM9InJvd3MiIGZyYW1lPSJoc2lkZXMiIGJvcmRlcj0iMSI+Ci08dGhlYWQ+PHRyPjx0aCB2YWxpZ249ImJvdHRvbSIgaWQ9Ik4xMDBGNC1vcHRpb24iPk9wdGlvbjwvdGg+Ci08dGggdmFsaWduPSJib3R0b20iIGlkPSJOMTAwRjQtZGVzYyI+RGVzY3JpcHRpb248L3RoPjwvdHI+PC90aGVhZD4KLTx0Ym9keT4KLQotPHRyPjx0ZCB2YWxpZ249InRvcCIgaGVhZGVycz0iTjEwMEY0LW9wdGlvbiIgaWQ9Ik4xMDEwRCI+PHN0cm9uZz5Mb2NhbCBtb25pdG9yaW5nIHBvcnQ8L3N0cm9uZz48L3RkPgotPHRkIHZhbGlnbj0idG9wIiBoZWFkZXJzPSJOMTAwRjQtZGVzYyBOMTAxMEQiPlNwZWNpZnkgYSB1bmlxdWUKLXBvcnQgbnVtYmVyIG9uIHlvdXIgbG9jYWwgbWFjaGluZS48L3RkPgotPC90cj4KLQotPHRyPjx0ZCB2YWxpZ249InRvcCIgaGVhZGVycz0iTjEwMEY0LW9wdGlvbiIgaWQ9Ik4xMDExQyI+PHN0cm9uZz5Ib3N0IG5hbWU8L3N0cm9uZz48L3RkPgotPHRkIHZhbGlnbj0idG9wIiBoZWFkZXJzPSJOMTAwRjQtZGVzYyBOMTAxMUMiPlNwZWNpZnkgdGhlIGhvc3QgbmFtZSBvciBJUCBhZGRyZXNzCi1vZiB0aGUgbWFjaGluZSB3aGVyZSB0aGUgc2VydmVyIGlzIHJ1bm5pbmcuPC90ZD4KLTwvdHI+Ci0KLTx0cj48dGQgdmFsaWduPSJ0b3AiIGhlYWRlcnM9Ik4xMDBGNC1vcHRpb24iIGlkPSJOMTAxMkIiPjxzdHJvbmc+UG9ydDwvc3Ryb25nPjwvdGQ+Ci08dGQgdmFsaWduPSJ0b3AiIGhlYWRlcnM9Ik4xMDBGNC1kZXNjIE4xMDEyQiI+U3BlY2lmeSB0aGUgcG9ydCBudW1iZXIgb2YgdGhlIHJlbW90ZQotc2VydmVyLjwvdGQ+Ci08L3RyPgotCi08dHI+PHRkIHZhbGlnbj0idG9wIiBoZWFkZXJzPSJOMTAwRjQtb3B0aW9uIiBpZD0iTjEwMTNBIj48c3Ryb25nPlR5cGU8L3N0cm9uZz48L3RkPgotPHRkIHZhbGlnbj0idG9wIiBoZWFkZXJzPSJOMTAwRjQtZGVzYyBOMTAxM0EiPlNwZWNpZnkgd2hldGhlciB0aGUgcmVxdWVzdCB0eXBlIGZyb20KLXRoZSBXZWIgYnJvd3NlciBhcmUgc2VudCBieSBIVFRQIG9yIFRDUC9JUC4gSWYgdGhlIEhUVFAgb3B0aW9uIGlzIHNlbGVjdGVkCi10aGUgcmVxdWVzdHMgZnJvbSB0aGUgV2ViIGJyb3dzZXIgYXJlIG1vZGlmaWVkIHNvIHRoYXQgdGhlIEhUVFAgaGVhZGVyIHBvaW50cwotdG8gdGhlIHJlbW90ZSBtYWNoaW5lIGFuZCBzZXBhcmF0ZWQgaWYgbXVsdGlwbGUgSFRUUCByZXF1ZXN0cyBhcmUgcmVjZWl2ZWQKLWluIHRoZSBzYW1lIGNvbm5lY3Rpb24uIElmIHRoZSBUQ1AvSVAgb3B0aW9uIGlzIHNlbGVjdGVkLCBhbGwgdGhlIHJlcXVlc3RzCi1hcmUgc2VudCBieXRlIGZvciBieXRlLiA8L3RkPgotPC90cj4KLQotPHRyPjx0ZCB2YWxpZ249InRvcCIgaGVhZGVycz0iTjEwMEY0LW9wdGlvbiIgaWQ9Ik4xMDE0OSI+PHN0cm9uZz5UaW1lb3V0PC9zdHJvbmc+PC90ZD4KLTx0ZCB2YWxpZ249InRvcCIgaGVhZGVycz0iTjEwMEY0LWRlc2MgTjEwMTQ5Ij5TcGVjaWZ5IGhvdyBsb25nIHlvdSB3b3VsZCBsaWtlCi10aGUgbW9uaXRvciB0byB3YWl0IGJlZm9yZSBhdHRlbXB0aW5nIHRvIGNvbm5lY3QgYWdhaW4uPC90ZD4KLTwvdHI+Ci0KLTwvdGJvZHk+PC90YWJsZT4KLQotPC9saT4KLQotPGxpPjxzcGFuPkluIG9yZGVyIHRvIHJvdXRlIHRoZSBXZWIgc2VydmljZSB0aHJvdWdoIHRoZSBtb25pdG9yLCB0aGUgZW5kcG9pbnQKLW9mIHRoZSBXZWIgc2VydmljZSBjbGllbnQgbXVzdCBiZSBjaGFuZ2VkLiBUaGUgVENQL0lQIE1vbml0b3IgbGlzdGVucyBvbiBwb3J0Ci05MDgxLiBJbiB0aGUgV2ViIGJyb3dzZXIgd2luZG93IHVzZWQgaW4gc3RlcCAxLCBpbnZva2UgdGhlIHNldEVuZFBvaW50IG1ldGhvZCwKLWFuZCBjaGFuZ2UgdGhlIGVuZHBvaW50IHNvIHRoYXQgaXQgZGlyZWN0cyB0byBwb3J0IDkwODEuIEZvciBleGFtcGxlLCB0aGUKLWRlZmF1bHQgd291bGQgYmU6IDxzYW1wIGNsYXNzPSJjb2RlcGgiPmh0dHA6Ly9sb2NhbGhvc3Q6OTA4MS93ZWJfbW9kdWxlX2NvbnRleHRfcm9vdC9zZXJ2bGV0L3JwY3JvdXRlcjwvc2FtcD4gSW52b2tlCi10aGUgZ2V0RW5kUG9pbnQgbWV0aG9kIGFnYWluIHRvIGVuc3VyZSB0aGF0IHlvdXIgY2hhbmdlIGhhcyBiZWVuIGltcGxlbWVudGVkLjwvc3Bhbj4KLTwvbGk+Ci0KLTxsaT48c3Bhbj5TZWxlY3QgYSBXZWIgc2VydmljZSBtZXRob2QgaW4gdGhlIE1ldGhvZHMgcGFuZS4gSW52b2tlIHRoaXMgbWV0aG9kLjwvc3Bhbj4KLTwvbGk+Ci0KLTxsaT48c3Bhbj5DaGFuZ2UgdG8gdGhlIFRDUC9JUCBNb25pdG9yIHZpZXcgYnkgc2VsZWN0aW5nIHRoZSBUQ1AvSVAgTW9uaXRvcgotdGFiIGluIHRoZSBTZXJ2ZXJzIHZpZXcuIFRoaXMgd2lsbCBkaXNwbGF5IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBhaXJzIHRoYXQKLWFyZSBiZWluZyByb3V0ZWQgdGhyb3VnaCB0aGUgVENQL0lQIE1vbml0b3IuIEl0IHdpbGwgbG9vayBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmcKLXBpY3R1cmU6ICA8YnIgLz48aW1nIHNyYz0iLi4vaW1hZ2VzL3RyYWZmaWMuZ2lmIiBhbHQ9IlNjcmVlbiBjYXB0dXJlIG9mIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHRyYWZmaWMiIC8+PGJyIC8+PC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5UbyBlbnN1cmUgdGhhdCB5b3VyIFdlYiBzZXJ2aWNlIFNPQVAgdHJhZmZpYyBpcyBXUy1JIGNvbXBsaWFudCwKLXlvdSBjYW4gZ2VuZXJhdGUgYSBsb2cgZmlsZSBieSBjbGlja2luZyB0aGUgIDxpbWcgc3JjPSIuLi9pbWFnZXMvd3NpdmFsaWNvLmdpZiIgYWx0PSJXUy1JIHZhbGlkYXRpb24gaWNvbiIgLz4gaWNvbi4gSW4gdGhlIGRpYWxvZyBib3ggdGhhdCBvcGVucywKLXNlbGVjdCBhIG5hbWUgZm9yIHRoZSBsb2cgZmlsZSBhbmQgc3BlY2lmeSB3aGVyZSB5b3Ugd2FudCBpdCB0byBiZSBzdG9yZWQuIDwvc3Bhbj4KLTwvbGk+Ci0KLTwvb2w+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPlRoaXMgbG9nIGZpbGUgd2lsbCBiZSB2YWxpZGF0ZWQgZm9yIFdTLUkgY29tcGxpYW5jZS4gWW91IGNhbiBvcGVuCi10aGUgbG9nIGZpbGUgaW4gYW4gWE1MIGVkaXRvciB0byBleGFtaW5lIGl0cyBjb250ZW50cy48L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2Nzb2FwLmh0bWwiPlNPQVA8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3Npb3Zlci5odG1sIj5XUy1JPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yc2VydnBvbHByZWYuZGl0YSI+U2V0dGluZyB0aGUgbGV2ZWwgb2YgV1MtSSBjb21wbGlhbmNlPC9hPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvdGFza3MvdHdzZGx2YWwuZGl0YSBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NkbHZhbC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjIyYjMwLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NkbHZhbC5kaXRhCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS1BcmJvcnRleHQsIEluYy4sIDE5ODgtMjAwNiwgdi40MDAyLS0+Ci08IURPQ1RZUEUgdGFzayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRElUQSBUYXNrLy9FTiIKLSAidGFzay5kdGQiPgotPHRhc2sgaWQ9InR3c2RsdmFsIiB4bWw6bGFuZz0iZW4tdXMiPgotPHRpdGxlPlZhbGlkYXRpbmcgV1NETCBmaWxlczwvdGl0bGU+Ci08dGl0bGVhbHRzPgotPHNlYXJjaHRpdGxlPlZhbGlkYXRpbmcgV1NETCBmaWxlczwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+SWYgeW91IGhhdmUgY3JlYXRlZCBhIFdTREwgZmlsZSB0aHJvdWdoIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkCi10aGUgV1NETCB0aGF0IGlzIGdlbmVyYXRlZCBzaG91bGQgYmUgdmFsaWQuIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIGltcG9ydGVkCi1hIFdTREwgZmlsZSwgb3IgaWYgeW91IGFyZSBjcmVhdGluZyBhIFdTREwgZmlsZSwgeW91IHNob3VsZCB2YWxpZGF0ZSB0aGUgV1NETAotdG8gZW5zdXJlIGl0IGlzIHZhbGlkLjwvc2hvcnRkZXNjPgotPHByb2xvZz48bWV0YWRhdGE+Ci08a2V5d29yZHM+PGluZGV4dGVybSBrZXlyZWY9InR3c2RsdmFsfDF8V1NETHZhbGlkYXRpbmciIHN0YXR1cz0idW5jaGFuZ2VkIj5XU0RMCi1maWxlczxpbmRleHRlcm0+dmFsaWRhdGluZzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjxpbmRleHRlcm0ga2V5cmVmPSJ0d3NkbHZhbHwyfFdlYnNlcnZpY2VzdmFsaWRhdGluZ1dTREwiCi1zdGF0dXM9InVuY2hhbmdlZCI+V2ViIHNlcnZpY2VzPGluZGV4dGVybT52YWxpZGF0aW5nIFdTREw8L2luZGV4dGVybT48L2luZGV4dGVybT4KLTwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPGNvbnRleHQ+PHA+SWYgeW91IGhhdmUgc2VsZWN0ZWQgUmVxdWlyZSBvciBTdWdnZXN0IFdTLUkgQ29tcGxpYW5jZSBvbiB0aGUKLVdTLUkgQ29tcGxpYW5jZSBwcmVmZXJlbmNlIHBhZ2UsIHRoZSB2YWxpZGF0aW9uIGFsc28gY2hlY2tzIFdTLUkgY29tcGxpYW5jZS4KLUlmIHlvdSBoYXZlIHNlbGVjdGVkIElnbm9yZSBXUy1JIENvbXBsaWFuY2UgdGhlIHZhbGlkYXRvciB3aWxsIG9ubHkgY2hlY2sKLXRoZSB2YWxpZGl0eSBvZiB0aGUgV1NETC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc2V0dGluZyBXUy1JIGNvbXBsaWFuY2UKLWxldmVscywgcmVmZXIgdG86ICA8eHJlZiBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3JzZXJ2cG9scHJlZi5kaXRhIgotc2NvcGU9InBlZXIiPiBTZXR0aW5nIHRoZSBsZXZlbCBvZiBXUy1JIGNvbXBsaWFuY2U8L3hyZWY+LjwvcD48cD5UaGUgV1NETAotVmFsaWRhdG9yIGNvbXBhcmVzIHRoZSBXU0RMIGZpbGUgaW4geW91ciBwcm9qZWN0IHRvIHRoZSBXM0MgIDx4cmVmIGZvcm1hdD0iaHRtbCIKLWhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3dzZGwiIHNjb3BlPSJleHRlcm5hbCI+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uCi1MYW5ndWFnZSAoV1NETCkgMS4xPC94cmVmPiBzcGVjaWZpY2F0aW9ucywgYW5kIHRoZSBXUy1JIGNvbXBsaWFuY2Ugc2V0dGluZ3MKLXRoYXQgeW91IGhhdmUgc2VsZWN0ZWQuPC9wPjxwPlRvIHZhbGlkYXRlIHlvdXIgV1NETCwgY29tcGxldGUgdGhlIGZvbGxvd2luZwotc3RlcHM6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+U2VsZWN0IGEgV1NETCBmaWxlIGluIHRoZSAgPGI+UHJvamVjdCBOYXZpZ2F0b3I8L2I+IHZpZXcuPC9jbWQ+Ci08L3N0ZXA+Ci08c3RlcD48Y21kPlJpZ2h0LWNsaWNrIHRoZSBXU0RMIGZpbGUsIGFuZCBzZWxlY3QgIDxiPlZhbGlkYXRlPC9iPjwvY21kPjwvc3RlcD4KLTwvc3RlcHM+Ci08cmVzdWx0PkFueSBwcm9ibGVtcyBlbmNvdW50ZXJlZCB3aGlsZSB2YWxpZGF0aW5nIHRoZSBmaWxlIHdpbGwgYmUgc2hvd24gaW4KLXRoZSAgPGI+VGFza3M8L2I+IHZpZXcuPHA+V2hlbiB5b3UgcmVidWlsZCBhIHByb2plY3Qgb3Igc2F2ZSBhIHJlc291cmNlLCB0aGUKLVdTREwgVmFsaWRhdG9yIGNhbiBiZSBzZXQgdG8gcnVuIGF1dG9tYXRpY2FsbHkuIFRvIGRvIHRoaXMsIGZyb20gdGhlIFdpbmRvdwotbWVudSwgc2VsZWN0ICA8Yj5QcmVmZXJlbmNlczwvYj4gPiAgPGI+VmFsaWRhdGlvbjwvYj4uIEVuc3VyZSB0aGF0IHRoZSBXU0RMCi1WYWxpZGF0b3IgY2hlY2sgYm94IGluIHRoZSBCdWlsZCBjb2x1bW4gaXMgc2VsZWN0ZWQuPC9wPjwvcmVzdWx0PgotPC90YXNrYm9keT4KLTxyZWxhdGVkLWxpbmtzPgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIENvbmNlcHRzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NkbC5kaXRhIiBzY29wZT0icGVlciI+Ci08bGlua3RleHQ+V1NETDwvbGlua3RleHQ+PC9saW5rPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lvdmVyLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5XUy1JPC9saW5rdGV4dD48L2xpbms+Ci08L2xpbmtsaXN0PgotPGxpbmtsaXN0Pjx0aXRsZT5SZWxhdGVkIFRhc2tzPC90aXRsZT4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcnNlcnZwb2xwcmVmLmRpdGEiIHNjb3BlPSJwZWVyIj4KLTxsaW5rdGV4dD5TZXR0aW5nIFdTLUkgY29tcGxpYW5jZTwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NkbHZhbC5odG1sIGIvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3R3c2RsdmFsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YjM1ZDQuLjAwMDAwMDAKLS0tIGEvZG9jcy9vcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyL3Rhc2tzL3R3c2RsdmFsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJWYWxpZGF0aW5nIFdTREwgZmlsZXMiIC8+Ci08bWV0YSBuYW1lPSJhYnN0cmFjdCIgY29udGVudD0iSWYgeW91IGhhdmUgY3JlYXRlZCBhIFdTREwgZmlsZSB0aHJvdWdoIHRoZSBXZWIgc2VydmljZXMgd2l6YXJkIHRoZSBXU0RMIHRoYXQgaXMgZ2VuZXJhdGVkIHNob3VsZCBiZSB2YWxpZC4gSG93ZXZlciwgaWYgeW91IGhhdmUgaW1wb3J0ZWQgYSBXU0RMIGZpbGUsIG9yIGlmIHlvdSBhcmUgY3JlYXRpbmcgYSBXU0RMIGZpbGUsIHlvdSBzaG91bGQgdmFsaWRhdGUgdGhlIFdTREwgdG8gZW5zdXJlIGl0IGlzIHZhbGlkLiIgLz4KLTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJJZiB5b3UgaGF2ZSBjcmVhdGVkIGEgV1NETCBmaWxlIHRocm91Z2ggdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmQgdGhlIFdTREwgdGhhdCBpcyBnZW5lcmF0ZWQgc2hvdWxkIGJlIHZhbGlkLiBIb3dldmVyLCBpZiB5b3UgaGF2ZSBpbXBvcnRlZCBhIFdTREwgZmlsZSwgb3IgaWYgeW91IGFyZSBjcmVhdGluZyBhIFdTREwgZmlsZSwgeW91IHNob3VsZCB2YWxpZGF0ZSB0aGUgV1NETCB0byBlbnN1cmUgaXQgaXMgdmFsaWQuIiAvPgotPG1ldGEgY29udGVudD0iV1NETCBmaWxlcywgdmFsaWRhdGluZywgV2ViIHNlcnZpY2VzLCB2YWxpZGF0aW5nIFdTREwiIG5hbWU9IkRDLnN1YmplY3QiIC8+Ci08bWV0YSBjb250ZW50PSJXU0RMIGZpbGVzLCB2YWxpZGF0aW5nLCBXZWIgc2VydmljZXMsIHZhbGlkYXRpbmcgV1NETCIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3NkbC5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW92ZXIuaHRtbCIgLz4KLTxtZXRhIHNjaGVtZT0iVVJJIiBuYW1lPSJEQy5SZWxhdGlvbiIgY29udGVudD0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3R3c2ljb21wbHkuaHRtbCIgLz4KLTxtZXRhIGNvbnRlbnQ9IlhIVE1MIiBuYW1lPSJEQy5Gb3JtYXQiIC8+Ci08bWV0YSBjb250ZW50PSJ0d3NkbHZhbCIgbmFtZT0iREMuSWRlbnRpZmllciIgLz4KLTxtZXRhIGNvbnRlbnQ9ImVuLXVzIiBuYW1lPSJEQy5MYW5ndWFnZSIgLz4KLTxsaW5rIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC5kb2MudXNlci9jb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgotPHRpdGxlPlZhbGlkYXRpbmcgV1NETCBmaWxlczwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keSBpZD0idHdzZGx2YWwiPjxhIG5hbWU9InR3c2RsdmFsIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5WYWxpZGF0aW5nIFdTREwgZmlsZXM8L2gxPgotCi0KLQotCi08ZGl2PjxwPklmIHlvdSBoYXZlIGNyZWF0ZWQgYSBXU0RMIGZpbGUgdGhyb3VnaCB0aGUgV2ViIHNlcnZpY2VzIHdpemFyZAotdGhlIFdTREwgdGhhdCBpcyBnZW5lcmF0ZWQgc2hvdWxkIGJlIHZhbGlkLiBIb3dldmVyLCBpZiB5b3UgaGF2ZSBpbXBvcnRlZAotYSBXU0RMIGZpbGUsIG9yIGlmIHlvdSBhcmUgY3JlYXRpbmcgYSBXU0RMIGZpbGUsIHlvdSBzaG91bGQgdmFsaWRhdGUgdGhlIFdTREwKLXRvIGVuc3VyZSBpdCBpcyB2YWxpZC48L3A+Ci0KLTxkaXYgY2xhc3M9InNlY3Rpb24iPjxwPklmIHlvdSBoYXZlIHNlbGVjdGVkIFJlcXVpcmUgb3IgU3VnZ2VzdCBXUy1JIENvbXBsaWFuY2Ugb24gdGhlCi1XUy1JIENvbXBsaWFuY2UgcHJlZmVyZW5jZSBwYWdlLCB0aGUgdmFsaWRhdGlvbiBhbHNvIGNoZWNrcyBXUy1JIGNvbXBsaWFuY2UuCi1JZiB5b3UgaGF2ZSBzZWxlY3RlZCBJZ25vcmUgV1MtSSBDb21wbGlhbmNlIHRoZSB2YWxpZGF0b3Igd2lsbCBvbmx5IGNoZWNrCi10aGUgdmFsaWRpdHkgb2YgdGhlIFdTREwuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNldHRpbmcgV1MtSSBjb21wbGlhbmNlCi1sZXZlbHMsIHJlZmVyIHRvOiAgPGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3R3c2ljb21wbHkuaHRtbCI+U2V0dGluZyB0aGUgbGV2ZWwgb2YgV1MtSSBjb21wbGlhbmNlPC9hPi48L3A+Ci08cD5UaGUgV1NETAotVmFsaWRhdG9yIGNvbXBhcmVzIHRoZSBXU0RMIGZpbGUgaW4geW91ciBwcm9qZWN0IHRvIHRoZSBXM0MgIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3dzZGwiIHRhcmdldD0iX2JsYW5rIj5XZWIgU2VydmljZXMgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIDEuMTwvYT4gc3BlY2lmaWNhdGlvbnMsIGFuZCB0aGUgV1MtSSBjb21wbGlhbmNlIHNldHRpbmdzCi10aGF0IHlvdSBoYXZlIHNlbGVjdGVkLjwvcD4KLTxwPlRvIHZhbGlkYXRlIHlvdXIgV1NETCwgY29tcGxldGUgdGhlIGZvbGxvd2luZwotc3RlcHM6PC9wPgotPC9kaXY+Ci0KLTxvbD4KLTxsaT48c3Bhbj5TZWxlY3QgYSBXU0RMIGZpbGUgaW4gdGhlICA8c3Ryb25nPlByb2plY3QgTmF2aWdhdG9yPC9zdHJvbmc+IHZpZXcuPC9zcGFuPgotPC9saT4KLQotPGxpPjxzcGFuPlJpZ2h0LWNsaWNrIHRoZSBXU0RMIGZpbGUsIGFuZCBzZWxlY3QgIDxzdHJvbmc+VmFsaWRhdGU8L3N0cm9uZz48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+QW55IHByb2JsZW1zIGVuY291bnRlcmVkIHdoaWxlIHZhbGlkYXRpbmcgdGhlIGZpbGUgd2lsbCBiZSBzaG93biBpbgotdGhlICA8c3Ryb25nPlRhc2tzPC9zdHJvbmc+IHZpZXcuPHA+V2hlbiB5b3UgcmVidWlsZCBhIHByb2plY3Qgb3Igc2F2ZSBhIHJlc291cmNlLCB0aGUKLVdTREwgVmFsaWRhdG9yIGNhbiBiZSBzZXQgdG8gcnVuIGF1dG9tYXRpY2FsbHkuIFRvIGRvIHRoaXMsIGZyb20gdGhlIFdpbmRvdwotbWVudSwgc2VsZWN0ICA8c3Ryb25nPlByZWZlcmVuY2VzPC9zdHJvbmc+ICZndDsgIDxzdHJvbmc+VmFsaWRhdGlvbjwvc3Ryb25nPi4gRW5zdXJlIHRoYXQgdGhlIFdTREwKLVZhbGlkYXRvciBjaGVjayBib3ggaW4gdGhlIEJ1aWxkIGNvbHVtbiBpcyBzZWxlY3RlZC48L3A+Ci08L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2RsLmh0bWwiPldTREw8L2E+PC9kaXY+Ci08ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3Npb3Zlci5odG1sIj5XUy1JPC9hPjwvZGl2PjwvZGl2PgotCi08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIFRhc2tzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yc2VydnBvbHByZWYuZGl0YSI+U2V0dGluZyBXUy1JIGNvbXBsaWFuY2U8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NpdmFsLmRpdGEgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvdGFza3MvdHdzaXZhbC5kaXRhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODZjOGEyLi4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NpdmFsLmRpdGEKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA2LCB2LjQwMDItLT4KLTwhRE9DVFlQRSB0YXNrIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBESVRBIFRhc2svL0VOIgotICJ0YXNrLmR0ZCI+Ci08dGFzayBpZD0idHdzaXZhbCIgeG1sOmxhbmc9ImVuLXVzIj4KLTx0aXRsZT5WYWxpZGF0aW5nIFdTLUkgV2ViIHNlcnZpY2UgdHJhZmZpYyBjb21wbGlhbmNlPC90aXRsZT4KLTx0aXRsZWFsdHM+Ci08c2VhcmNodGl0bGU+VmFsaWRhdGluZyBXUy1JIFdlYiBzZXJ2aWNlIHRyYWZmaWMgY29tcGxpYW5jZTwvc2VhcmNodGl0bGU+Ci08L3RpdGxlYWx0cz4KLTxzaG9ydGRlc2M+QXMgd2VsbCBhcyBzZXR0aW5nIHRoZSBsZXZlbCBvZiBXUy1JIGNvbXBsaWFuY2UgZHVyaW5nIFdlYiBzZXJ2aWNlcwotY3JlYXRpb24sIHlvdSBjYW4gdmFsaWRhdGUgV1MtSSBjb21wbGlhbmNlIG9mIHRoZSBTT0FQIHRyYWZmaWMgYSBXZWIgc2VydmljZQotcHJvZHVjZXMgdGhyb3VnaCB0aGUgVENQL0lQIE1vbml0b3IuPC9zaG9ydGRlc2M+Ci08cHJvbG9nPjxtZXRhZGF0YT4KLTxrZXl3b3Jkcz48aW5kZXh0ZXJtIGtleXJlZj0idHdzaXZhbHwxfFdTLUl2YWxpZGF0aW5nIiBzdGF0dXM9InVuY2hhbmdlZCI+V2ViCi1zZXJ2aWNlczxpbmRleHRlcm0+aW50ZXJvcGVyYWJpbGl0eTxpbmRleHRlcm0+dmFsaWRhdGluZzwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPjwvaW5kZXh0ZXJtPgotPGluZGV4dGVybSBrZXlyZWY9InR3c2l2YWx8MnxXZWJzZXJ2aWNlc3ZhbGlkYXRpbmdXUy1JY29tcGxpYW5jZWludGVyb3BlcmFiaWxpdHl2YWxpZGF0aW5nIgotc3RhdHVzPSJ1bmNoYW5nZWQiPldlYiBzZXJ2aWNlczxpbmRleHRlcm0+dmFsaWRhdGluZyBXUy1JIGNvbXBsaWFuY2U8aW5kZXh0ZXJtPmludGVyb3BlcmFiaWxpdHk8aW5kZXh0ZXJtPnZhbGlkYXRpbmc8L2luZGV4dGVybT48L2luZGV4dGVybT48L2luZGV4dGVybQotPjwvaW5kZXh0ZXJtPjwva2V5d29yZHM+Ci08L21ldGFkYXRhPjwvcHJvbG9nPgotPHRhc2tib2R5PgotPHByZXJlcT4gUHJlcmVxdWlzaXRlczogQmVmb3JlIHlvdSBjYW4gdXNlIHRoZSB2YWxpZGF0aW9uIHRvb2wgdG8gZW5zdXJlIHRoYXQKLXlvdXIgV2ViIHNlcnZpY2UgU09BUCB0cmFmZmljIGlzIFdTLUkgY29tcGxpYW50LCB5b3UgbXVzdCBoYXZlIGNvbXBsZXRlZCB0aGUKLWZvbGxvd2luZyBzdGVwczo8dWw+Ci08bGk+R2VuZXJhdGUgYSBXZWIgc2VydmljZS48L2xpPgotPGxpPiA8eHJlZiBocmVmPSJ0d3NkbHZhbC5kaXRhIj5WYWxpZGF0ZSB0aGUgV1NETCB0aGF0IGlzIHByb2R1Y2VkLjwveHJlZj4gPC9saT4KLTxsaT5HZW5lcmF0ZSBhIFByb3h5IGFuZCBhIHNhbXBsZSBhcHBsaWNhdGlvbi4gPC9saT4KLTxsaT4gPHhyZWYgaHJlZj0idG1vbml0b3IuZGl0YSI+U2V0IHVwIHRoZSBUQ1AvSVAgTW9uaXRvci48L3hyZWY+IEVuc3VyZSB0aGF0Ci15b3VyIFdlYiBzZXJ2aWNlIHNhbXBsZSBhcHBsaWNhdGlvbiB0cmFmZmljIGlzIGRpcmVjdGVkIHRocm91Z2ggdGhlIFRDUC9JUAotTW9uaXRvci48L2xpPgotPC91bD48L3ByZXJlcT4KLTxjb250ZXh0PjxwPlRvIHZhbGlkYXRlIHlvdXIgV2ViIHNlcnZpY2UsIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6PC9wPjwvY29udGV4dD4KLTxzdGVwcz4KLTxzdGVwPjxjbWQ+SW52b2tlIGEgbWV0aG9kIGluIHlvdXIgV2ViIHNlcnZpY2Ugc2FtcGxlIGFwcGxpY2F0aW9uIHRvIGdlbmVyYXRlCi10cmFmZmljIHRocm91Z2ggdGhlIFRDUC9JUCBNb25pdG9yLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+VG8gZW5zdXJlIHRoYXQgeW91ciBXZWIgc2VydmljZSBTT0FQIHRyYWZmaWMgaXMgV1MtSSBjb21wbGlhbnQsCi15b3UgY2FuIGdlbmVyYXRlIGEgbG9nIGZpbGUgYnkgY2xpY2tpbmcgdGhlICA8aW1hZ2UgYWx0PSJWYWxpZGF0ZSBpY29uIiBocmVmPSIuLi9pbWFnZXMvd3NpdmFsaWNvLmdpZiI+Ci08L2ltYWdlPiBpY29uLjwvY21kPjwvc3RlcD4KLTxzdGVwPjxjbWQ+SW4gdGhlIGRpYWxvZyBib3ggdGhhdCBvcGVucywgc2VsZWN0IGEgbmFtZSBmb3IgdGhlIGxvZyBmaWxlIGFuZAotc3BlY2lmeSB3aGVyZSB5b3Ugd2FudCBpdCB0byBiZSBzdG9yZWQuPC9jbWQ+PC9zdGVwPgotPC9zdGVwcz4KLTxyZXN1bHQ+IFRoaXMgbG9nIGZpbGUgd2lsbCBzaG93IHdoZXRoZXIgb3Igbm90IG1lc3NhZ2VzIHNlbnQgdG8gYW5kIGZyb20KLXlvdXIgV2ViIHNlcnZpY2UgYXJlIFdTLUkgY29tcGxpYW50LCBhbmQgbGlzdCBhbnkgbm9uLWNvbXBsaWFudCBlbGVtZW50cy4KLVlvdSBjYW4gb3BlbiB0aGUgbG9nIGZpbGUgaW4gYW4gWE1MIGVkaXRvciB0byBleGFtaW5lIGl0cyBjb250ZW50cy48L3Jlc3VsdD4KLTwvdGFza2JvZHk+Ci08cmVsYXRlZC1saW5rcz4KLTxsaW5rbGlzdD48dGl0bGU+UmVsYXRlZCBDb25jZXB0czwvdGl0bGU+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvY29uY2VwdHMvY3dzaW92ZXIuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PldTLUk8L2xpbmt0ZXh0PjwvbGluaz4KLTwvbGlua2xpc3Q+Ci08bGlua2xpc3Q+PHRpdGxlPlJlbGF0ZWQgVGFza3M8L3RpdGxlPgotPGxpbmsgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3JlZi9yc2VydnBvbHByZWYuZGl0YSIgc2NvcGU9InBlZXIiPgotPGxpbmt0ZXh0PlNldHRpbmcgdGhlIGxldmVsIG9mIFdTLUkgY29tcGxpYW5jZTwvbGlua3RleHQ+PC9saW5rPgotPC9saW5rbGlzdD4KLTwvcmVsYXRlZC1saW5rcz4KLTwvdGFzaz4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NpdmFsLmh0bWwgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvdGFza3MvdHdzaXZhbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzJhMGM4Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci90YXNrcy90d3NpdmFsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgotPGhlYWQ+Ci08bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KLTxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4gQ29udHJpYnV0b3JzOiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24iIC8+Ci08bWV0YSBuYW1lPSJEQy5yaWdodHMub3duZXIiIGNvbnRlbnQ9IihDKSBDb3B5cmlnaHQgMjAwMCwgMjAwOCIgLz4KLTxtZXRhIGNvbnRlbnQ9InB1YmxpYyIgbmFtZT0ic2VjdXJpdHkiIC8+Ci08bWV0YSBjb250ZW50PSJpbmRleCxmb2xsb3ciIG5hbWU9IlJvYm90cyIgLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlBJQ1MtTGFiZWwiIGNvbnRlbnQ9JyhQSUNTLTEuMSAiaHR0cDovL3d3dy5pY3JhLm9yZy9yYXRpbmdzdjAyLmh0bWwiIGwgZ2VuIHRydWUgciAoY3ogMSBseiAxIG56IDEgb3ogMSB2eiAxKSAiaHR0cDovL3d3dy5yc2FjLm9yZy9yYXRpbmdzdjAxLmh0bWwiIGwgZ2VuIHRydWUgciAobiAwIHMgMCB2IDAgbCAwKSAiaHR0cDovL3d3dy5jbGFzc2lmeS5vcmcvc2FmZXN1cmYvIiBsIGdlbiB0cnVlIHIgKFNTfn4wMDAgMSkpJyAvPgotPG1ldGEgY29udGVudD0idGFzayIgbmFtZT0iREMuVHlwZSIgLz4KLTxtZXRhIG5hbWU9IkRDLlRpdGxlIiBjb250ZW50PSJWYWxpZGF0aW5nIFdTLUkgV2ViIHNlcnZpY2UgdHJhZmZpYyBjb21wbGlhbmNlIiAvPgotPG1ldGEgbmFtZT0iYWJzdHJhY3QiIGNvbnRlbnQ9IkFzIHdlbGwgYXMgc2V0dGluZyB0aGUgbGV2ZWwgb2YgV1MtSSBjb21wbGlhbmNlIGR1cmluZyBXZWIgc2VydmljZXMgY3JlYXRpb24sIHlvdSBjYW4gdmFsaWRhdGUgV1MtSSBjb21wbGlhbmNlIG9mIHRoZSBTT0FQIHRyYWZmaWMgYSBXZWIgc2VydmljZSBwcm9kdWNlcyB0aHJvdWdoIHRoZSBUQ1AvSVAgTW9uaXRvci4iIC8+Ci08bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQXMgd2VsbCBhcyBzZXR0aW5nIHRoZSBsZXZlbCBvZiBXUy1JIGNvbXBsaWFuY2UgZHVyaW5nIFdlYiBzZXJ2aWNlcyBjcmVhdGlvbiwgeW91IGNhbiB2YWxpZGF0ZSBXUy1JIGNvbXBsaWFuY2Ugb2YgdGhlIFNPQVAgdHJhZmZpYyBhIFdlYiBzZXJ2aWNlIHByb2R1Y2VzIHRocm91Z2ggdGhlIFRDUC9JUCBNb25pdG9yLiIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgaW50ZXJvcGVyYWJpbGl0eSwgdmFsaWRhdGluZywgV2ViIHNlcnZpY2VzLCB2YWxpZGF0aW5nIFdTLUkgY29tcGxpYW5jZSIgbmFtZT0iREMuc3ViamVjdCIgLz4KLTxtZXRhIGNvbnRlbnQ9IldlYiBzZXJ2aWNlcywgaW50ZXJvcGVyYWJpbGl0eSwgdmFsaWRhdGluZywgV2ViIHNlcnZpY2VzLCB2YWxpZGF0aW5nIFdTLUkgY29tcGxpYW5jZSIgbmFtZT0ia2V5d29yZHMiIC8+Ci08bWV0YSBzY2hlbWU9IlVSSSIgbmFtZT0iREMuUmVsYXRpb24iIGNvbnRlbnQ9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3Npb3Zlci5odG1sIiAvPgotPG1ldGEgc2NoZW1lPSJVUkkiIG5hbWU9IkRDLlJlbGF0aW9uIiBjb250ZW50PSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvdGFza3MvdHdzaWNvbXBseS5odG1sIiAvPgotPG1ldGEgY29udGVudD0iWEhUTUwiIG5hbWU9IkRDLkZvcm1hdCIgLz4KLTxtZXRhIGNvbnRlbnQ9InR3c2l2YWwiIG5hbWU9IkRDLklkZW50aWZpZXIiIC8+Ci08bWV0YSBjb250ZW50PSJlbi11cyIgbmFtZT0iREMuTGFuZ3VhZ2UiIC8+Ci08bGluayBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4KLTx0aXRsZT5WYWxpZGF0aW5nIFdTLUkgV2ViIHNlcnZpY2UgdHJhZmZpYyBjb21wbGlhbmNlPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5IGlkPSJ0d3NpdmFsIj48YSBuYW1lPSJ0d3NpdmFsIj48IS0tIC0tPjwvYT4KLQotCi08aDEgY2xhc3M9InRvcGljdGl0bGUxIj5WYWxpZGF0aW5nIFdTLUkgV2ViIHNlcnZpY2UgdHJhZmZpYyBjb21wbGlhbmNlPC9oMT4KLQotCi0KLQotPGRpdj48cD5BcyB3ZWxsIGFzIHNldHRpbmcgdGhlIGxldmVsIG9mIFdTLUkgY29tcGxpYW5jZSBkdXJpbmcgV2ViIHNlcnZpY2VzCi1jcmVhdGlvbiwgeW91IGNhbiB2YWxpZGF0ZSBXUy1JIGNvbXBsaWFuY2Ugb2YgdGhlIFNPQVAgdHJhZmZpYyBhIFdlYiBzZXJ2aWNlCi1wcm9kdWNlcyB0aHJvdWdoIHRoZSBUQ1AvSVAgTW9uaXRvci48L3A+Ci0KLTxkaXYgY2xhc3M9InAiPiBQcmVyZXF1aXNpdGVzOiBCZWZvcmUgeW91IGNhbiB1c2UgdGhlIHZhbGlkYXRpb24gdG9vbCB0byBlbnN1cmUgdGhhdAoteW91ciBXZWIgc2VydmljZSBTT0FQIHRyYWZmaWMgaXMgV1MtSSBjb21wbGlhbnQsIHlvdSBtdXN0IGhhdmUgY29tcGxldGVkIHRoZQotZm9sbG93aW5nIHN0ZXBzOjx1bD4KLTxsaT5HZW5lcmF0ZSBhIFdlYiBzZXJ2aWNlLjwvbGk+Ci0KLTxsaT4gPGEgaHJlZj0idHdzZGx2YWwuaHRtbCI+VmFsaWRhdGUgdGhlIFdTREwgdGhhdCBpcyBwcm9kdWNlZC48L2E+IDwvbGk+Ci0KLTxsaT5HZW5lcmF0ZSBhIFByb3h5IGFuZCBhIHNhbXBsZSBhcHBsaWNhdGlvbi4gPC9saT4KLQotPGxpPiA8YSBocmVmPSJ0bW9uaXRvci5odG1sIj5TZXQgdXAgdGhlIFRDUC9JUCBNb25pdG9yLjwvYT4gRW5zdXJlIHRoYXQKLXlvdXIgV2ViIHNlcnZpY2Ugc2FtcGxlIGFwcGxpY2F0aW9uIHRyYWZmaWMgaXMgZGlyZWN0ZWQgdGhyb3VnaCB0aGUgVENQL0lQCi1Nb25pdG9yLjwvbGk+Ci0KLTwvdWw+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+PHA+VG8gdmFsaWRhdGUgeW91ciBXZWIgc2VydmljZSwgY29tcGxldGUgdGhlIGZvbGxvd2luZyBzdGVwczo8L3A+Ci08L2Rpdj4KLQotPG9sPgotPGxpPjxzcGFuPkludm9rZSBhIG1ldGhvZCBpbiB5b3VyIFdlYiBzZXJ2aWNlIHNhbXBsZSBhcHBsaWNhdGlvbiB0byBnZW5lcmF0ZQotdHJhZmZpYyB0aHJvdWdoIHRoZSBUQ1AvSVAgTW9uaXRvci48L3NwYW4+PC9saT4KLQotPGxpPjxzcGFuPlRvIGVuc3VyZSB0aGF0IHlvdXIgV2ViIHNlcnZpY2UgU09BUCB0cmFmZmljIGlzIFdTLUkgY29tcGxpYW50LAoteW91IGNhbiBnZW5lcmF0ZSBhIGxvZyBmaWxlIGJ5IGNsaWNraW5nIHRoZSAgPGltZyBzcmM9Ii4uL2ltYWdlcy93c2l2YWxpY28uZ2lmIiBhbHQ9IlZhbGlkYXRlIGljb24iIC8+IGljb24uPC9zcGFuPjwvbGk+Ci0KLTxsaT48c3Bhbj5JbiB0aGUgZGlhbG9nIGJveCB0aGF0IG9wZW5zLCBzZWxlY3QgYSBuYW1lIGZvciB0aGUgbG9nIGZpbGUgYW5kCi1zcGVjaWZ5IHdoZXJlIHlvdSB3YW50IGl0IHRvIGJlIHN0b3JlZC48L3NwYW4+PC9saT4KLQotPC9vbD4KLQotPGRpdiBjbGFzcz0ic2VjdGlvbiI+IFRoaXMgbG9nIGZpbGUgd2lsbCBzaG93IHdoZXRoZXIgb3Igbm90IG1lc3NhZ2VzIHNlbnQgdG8gYW5kIGZyb20KLXlvdXIgV2ViIHNlcnZpY2UgYXJlIFdTLUkgY29tcGxpYW50LCBhbmQgbGlzdCBhbnkgbm9uLWNvbXBsaWFudCBlbGVtZW50cy4KLVlvdSBjYW4gb3BlbiB0aGUgbG9nIGZpbGUgaW4gYW4gWE1MIGVkaXRvciB0byBleGFtaW5lIGl0cyBjb250ZW50cy48L2Rpdj4KLQotPC9kaXY+Ci0KLTxkaXY+Ci08ZGl2IGNsYXNzPSJsaW5rbGlzdCI+PHN0cm9uZz5SZWxhdGVkIENvbmNlcHRzPC9zdHJvbmc+PGJyIC8+Ci0KLTxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lvdmVyLmh0bWwiPldTLUk8L2E+PC9kaXY+PC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KLQotPGRpdj48YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS5qc3Qud3MuZG9jLnVzZXIvcmVmL3JzZXJ2cG9scHJlZi5kaXRhIj5TZXR0aW5nIHRoZSBsZXZlbCBvZiBXUy1JIGNvbXBsaWFuY2U8L2E+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci93c3dzaXRlc3RfdG9jLmRpdGFtYXAgYi9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvd3N3c2l0ZXN0X3RvYy5kaXRhbWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDk4MmM5Li4wMDAwMDAwCi0tLSBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci93c3dzaXRlc3RfdG9jLmRpdGFtYXAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLUFyYm9ydGV4dCwgSW5jLiwgMTk4OC0yMDA1LCB2LjQwMDItLT4KLTwhRE9DVFlQRSBtYXAgUFVCTElDICItLy9PQVNJUy8vRFREIERJVEEgTWFwLy9FTiIgIm1hcC5kdGQiPgotPG1hcCBhbmNob3JyZWY9Ii4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci93ZWJzZXJ2aWNlX3RvYy5kaXRhbWFwI3dzd3NpdGVzdCIKLWlkPSJ3c3dzaXRlc3QiIHRpdGxlPSJ3c3dzaXRlc3QiPgotPHRvcGljcmVmIGhyZWY9InRhc2tzL3R3c2RsdmFsLmRpdGEiIG5hdnRpdGxlPSJWYWxpZGF0aW5nIFdTREwiPjwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdG1vbml0b3IuZGl0YSIgbmF2dGl0bGU9IlRlc3RpbmcgV2ViIHNlcnZpY2VzIHdpdGggdGhlIFRDUC9JUCBNb25pdG9yIj4KLTwvdG9waWNyZWY+Ci08dG9waWNyZWYgaHJlZj0idGFza3MvdHdzaXZhbC5kaXRhIiBuYXZ0aXRsZT0iVmFsaWRhdGluZyBXUy1JIGNvbXBsaWFuY2Ugb2YgV2ViIHNlcnZpY2UgU09BUCB0cmFmZmljIj4KLTwvdG9waWNyZWY+Ci08L21hcD4KZGlmZiAtLWdpdCBhL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci93c3dzaXRlc3RfdG9jLnhtbCBiL2RvY3Mvb3JnLmVjbGlwc2Uud3N0LndzaS51aS5kb2MudXNlci93c3dzaXRlc3RfdG9jLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEwMjBhZS4uMDAwMDAwMAotLS0gYS9kb2NzL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvd3N3c2l0ZXN0X3RvYy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+Ci0KLTx0b2MgbGlua190bz0iLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3dlYnNlcnZpY2VfdG9jLnhtbCN3c3dzaXRlc3QiIGxhYmVsPSJ3c3dzaXRlc3QiIHRvcGljPSJ0YXNrcy90d3NkbHZhbC5odG1sIj4KLTx0b3BpYyBsYWJlbD0iVmFsaWRhdGluZyBXU0RMIGZpbGVzIiBocmVmPSJ0YXNrcy90d3NkbHZhbC5odG1sIi8+Ci08dG9waWMgbGFiZWw9IlVzaW5nIHRoZSBUQ1AvSVAgTW9uaXRvciB0byB0ZXN0IFdlYiBzZXJ2aWNlcyIgaHJlZj0idGFza3MvdG1vbml0b3IuaHRtbCIvPgotPHRvcGljIGxhYmVsPSJWYWxpZGF0aW5nIFdTLUkgV2ViIHNlcnZpY2UgdHJhZmZpYyBjb21wbGlhbmNlIiBocmVmPSJ0YXNrcy90d3NpdmFsLmh0bWwiLz4KLTwvdG9jPgpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS8uY3ZzaWdub3JlIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTQ0ODdjLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWJ1aWxkLnhtbApkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS8ucHJvamVjdCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZmZhNzguLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmU8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NDQ4MGIuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBmZWF0dXJlLnhtbCxcCi0gICAgICAgICAgICAgICBlY2xpcHNlX3VwZGF0ZV8xMjAuanBnLFwKLSAgICAgICAgICAgICAgIGVwbC12MTAuaHRtbCxcCi0gICAgICAgICAgICAgICBsaWNlbnNlLmh0bWwsXAotICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzCi0KZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZkZjcwOC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL2VwbC12MTAuaHRtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvZXBsLXYxMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDRiMTk2Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvZXBsLXYxMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLTxodG1sIHhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIKLXhtbG5zOnc9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmQiCi14bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+Ci0KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+Ci08bWV0YSBuYW1lPVByb2dJZCBjb250ZW50PVdvcmQuRG9jdW1lbnQ+Ci08bWV0YSBuYW1lPUdlbmVyYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxtZXRhIG5hbWU9T3JpZ2luYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxsaW5rIHJlbD1GaWxlLUxpc3QKLWhyZWY9Ii4vRWNsaXBzZSUyMEVQTCUyMDIwMDNfMTFfMTAlMjBGaW5hbF9maWxlcy9maWxlbGlzdC54bWwiPgotPHRpdGxlPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSBWZXJzaW9uIDEuMDwvdGl0bGU+Ci08IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8bzpEb2N1bWVudFByb3BlcnRpZXM+Ci0gIDxvOlJldmlzaW9uPjI8L286UmV2aXNpb24+Ci0gIDxvOlRvdGFsVGltZT4zPC9vOlRvdGFsVGltZT4KLSAgPG86Q3JlYXRlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpDcmVhdGVkPgotICA8bzpMYXN0U2F2ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286TGFzdFNhdmVkPgotICA8bzpQYWdlcz40PC9vOlBhZ2VzPgotICA8bzpXb3Jkcz4xNjI2PC9vOldvcmRzPgotICA8bzpDaGFyYWN0ZXJzPjkyNzA8L286Q2hhcmFjdGVycz4KLSAgIDxvOkxpbmVzPjc3PC9vOkxpbmVzPgotICA8bzpQYXJhZ3JhcGhzPjE4PC9vOlBhcmFncmFwaHM+Ci0gIDxvOkNoYXJhY3RlcnNXaXRoU3BhY2VzPjExMzg0PC9vOkNoYXJhY3RlcnNXaXRoU3BhY2VzPgotICA8bzpWZXJzaW9uPjkuNDQwMjwvbzpWZXJzaW9uPgotIDwvbzpEb2N1bWVudFByb3BlcnRpZXM+Ci08L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8dzpXb3JkRG9jdW1lbnQ+Ci0gIDx3OlRyYWNrUmV2aXNpb25zLz4KLSA8L3c6V29yZERvY3VtZW50PgotPC94bWw+PCFbZW5kaWZdLS0+Ci08c3R5bGU+Ci08IS0tCi0gLyogRm9udCBEZWZpbml0aW9ucyAqLwotQGZvbnQtZmFjZQotCXtmb250LWZhbWlseTpUYWhvbWE7Ci0JcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7Ci0JbXNvLWZvbnQtY2hhcnNldDowOwotCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOwotCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOwotCW1zby1mb250LXNpZ25hdHVyZTo1NTM2Nzk0OTUgLTIxNDc0ODM2NDggOCAwIDY2MDQ3IDA7fQotIC8qIFN0eWxlIERlZmluaXRpb25zICovCi1wLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCi0Je21zby1zdHlsZS1wYXJlbnQ6IiI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcAotCXttYXJnaW4tcmlnaHQ6MGluOwotCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOwotCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOwotCW1hcmdpbi1sZWZ0OjBpbjsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wLkJhbGxvb25UZXh0LCBsaS5CYWxsb29uVGV4dCwgZGl2LkJhbGxvb25UZXh0Ci0Je21zby1zdHlsZS1uYW1lOiJCYWxsb29uIFRleHQiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6OC4wcHQ7Ci0JZm9udC1mYW1pbHk6VGFob21hOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLUBwYWdlIFNlY3Rpb24xCi0Je3NpemU6OC41aW4gMTEuMGluOwotCW1hcmdpbjoxLjBpbiAxLjI1aW4gMS4waW4gMS4yNWluOwotCW1zby1oZWFkZXItbWFyZ2luOi41aW47Ci0JbXNvLWZvb3Rlci1tYXJnaW46LjVpbjsKLQltc28tcGFwZXItc291cmNlOjA7fQotZGl2LlNlY3Rpb24xCi0Je3BhZ2U6U2VjdGlvbjE7fQotLS0+Ci08L3N0eWxlPgotPC9oZWFkPgotCi08Ym9keSBsYW5nPUVOLVVTIHN0eWxlPSd0YWItaW50ZXJ2YWw6LjVpbic+Ci0KLTxkaXYgY2xhc3M9U2VjdGlvbjE+Ci0KLTxwIGFsaWduPWNlbnRlciBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXInPjxiPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSB2IDEuMDwvYj4KLTwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRIRSBBQ0NPTVBBTllJTkcgUFJPR1JBTSBJUyBQUk9WSURFRCBVTkRFUgotVEhFIFRFUk1TIE9GIFRISVMgRUNMSVBTRSBQVUJMSUMgTElDRU5TRSAoJnF1b3Q7QUdSRUVNRU5UJnF1b3Q7KS4gQU5ZIFVTRSwKLVJFUFJPRFVDVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gQ09OU1RJVFVURVMgUkVDSVBJRU5UJ1MgQUNDRVBUQU5DRQotT0YgVEhJUyBBR1JFRU1FTlQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4xLiBERUZJTklUSU9OUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dGlvbiZxdW90OyBtZWFuczo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWluIHRoZSBjYXNlIG9mIHRoZSBpbml0aWFsIENvbnRyaWJ1dG9yLCB0aGUgaW5pdGlhbCBjb2RlIGFuZCBkb2N1bWVudGF0aW9uCi1kaXN0cmlidXRlZCB1bmRlciB0aGlzIEFncmVlbWVudCwgYW5kPGJyIGNsZWFyPWxlZnQ+Ci1iKSBpbiB0aGUgY2FzZSBvZiBlYWNoIHN1YnNlcXVlbnQgQ29udHJpYnV0b3I6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOzwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPndoZXJlCi1zdWNoIGNoYW5nZXMgYW5kL29yIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSBvcmlnaW5hdGUgZnJvbSBhbmQgYXJlIGRpc3RyaWJ1dGVkCi1ieSB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IuIEEgQ29udHJpYnV0aW9uICdvcmlnaW5hdGVzJyBmcm9tIGEgQ29udHJpYnV0b3IKLWlmIGl0IHdhcyBhZGRlZCB0byB0aGUgUHJvZ3JhbSBieSBzdWNoIENvbnRyaWJ1dG9yIGl0c2VsZiBvciBhbnlvbmUgYWN0aW5nIG9uCi1zdWNoIENvbnRyaWJ1dG9yJ3MgYmVoYWxmLiBDb250cmlidXRpb25zIGRvIG5vdCBpbmNsdWRlIGFkZGl0aW9ucyB0byB0aGUKLVByb2dyYW0gd2hpY2g6IChpKSBhcmUgc2VwYXJhdGUgbW9kdWxlcyBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZCBpbiBjb25qdW5jdGlvbgotd2l0aCB0aGUgUHJvZ3JhbSB1bmRlciB0aGVpciBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIGFuZCAoaWkpIGFyZSBub3QgZGVyaXZhdGl2ZQotd29ya3Mgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRvciZxdW90OyBtZWFucyBhbnkgcGVyc29uIG9yCi1lbnRpdHkgdGhhdCBkaXN0cmlidXRlcyB0aGUgUHJvZ3JhbS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0xpY2Vuc2VkIFBhdGVudHMgJnF1b3Q7IG1lYW4gcGF0ZW50Ci1jbGFpbXMgbGljZW5zYWJsZSBieSBhIENvbnRyaWJ1dG9yIHdoaWNoIGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIHVzZQotb3Igc2FsZSBvZiBpdHMgQ29udHJpYnV0aW9uIGFsb25lIG9yIHdoZW4gY29tYmluZWQgd2l0aCB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1Byb2dyYW0mcXVvdDsgbWVhbnMgdGhlIENvbnRyaWJ1dGlvbnMKLWRpc3RyaWJ1dGVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzIEFncmVlbWVudC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1JlY2lwaWVudCZxdW90OyBtZWFucyBhbnlvbmUgd2hvCi1yZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIEFncmVlbWVudCwgaW5jbHVkaW5nIGFsbCBDb250cmlidXRvcnMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4yLiBHUkFOVCBPRiBSSUdIVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIFJlY2lwaWVudAotYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0bzxzcGFuCi1zdHlsZT0nY29sb3I6cmVkJz4gPC9zcGFuPnJlcHJvZHVjZSwgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mLCBwdWJsaWNseQotZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgZGlzdHJpYnV0ZSBhbmQgc3VibGljZW5zZSB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2gKLUNvbnRyaWJ1dG9yLCBpZiBhbnksIGFuZCBzdWNoIGRlcml2YXRpdmUgd29ya3MsIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZQotZm9ybS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cwotUmVjaXBpZW50IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+IDwvc3Bhbj5yb3lhbHR5LWZyZWUKLXBhdGVudCBsaWNlbnNlIHVuZGVyIExpY2Vuc2VkIFBhdGVudHMgdG8gbWFrZSwgdXNlLCBzZWxsLCBvZmZlciB0byBzZWxsLCBpbXBvcnQKLWFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGluIHNvdXJjZQotY29kZSBhbmQgb2JqZWN0IGNvZGUgZm9ybS4gVGhpcyBwYXRlbnQgbGljZW5zZSBzaGFsbCBhcHBseSB0byB0aGUgY29tYmluYXRpb24KLW9mIHRoZSBDb250cmlidXRpb24gYW5kIHRoZSBQcm9ncmFtIGlmLCBhdCB0aGUgdGltZSB0aGUgQ29udHJpYnV0aW9uIGlzIGFkZGVkCi1ieSB0aGUgQ29udHJpYnV0b3IsIHN1Y2ggYWRkaXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBjYXVzZXMgc3VjaCBjb21iaW5hdGlvbgotdG8gYmUgY292ZXJlZCBieSB0aGUgTGljZW5zZWQgUGF0ZW50cy4gVGhlIHBhdGVudCBsaWNlbnNlIHNoYWxsIG5vdCBhcHBseSB0bwotYW55IG90aGVyIGNvbWJpbmF0aW9ucyB3aGljaCBpbmNsdWRlIHRoZSBDb250cmlidXRpb24uIE5vIGhhcmR3YXJlIHBlciBzZSBpcwotbGljZW5zZWQgaGVyZXVuZGVyLiA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5jKQotUmVjaXBpZW50IHVuZGVyc3RhbmRzIHRoYXQgYWx0aG91Z2ggZWFjaCBDb250cmlidXRvciBncmFudHMgdGhlIGxpY2Vuc2VzIHRvIGl0cwotQ29udHJpYnV0aW9ucyBzZXQgZm9ydGggaGVyZWluLCBubyBhc3N1cmFuY2VzIGFyZSBwcm92aWRlZCBieSBhbnkgQ29udHJpYnV0b3IKLXRoYXQgdGhlIFByb2dyYW0gZG9lcyBub3QgaW5mcmluZ2UgdGhlIHBhdGVudCBvciBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkKLXJpZ2h0cyBvZiBhbnkgb3RoZXIgZW50aXR5LiBFYWNoIENvbnRyaWJ1dG9yIGRpc2NsYWltcyBhbnkgbGlhYmlsaXR5IHRvIFJlY2lwaWVudAotZm9yIGNsYWltcyBicm91Z2h0IGJ5IGFueSBvdGhlciBlbnRpdHkgYmFzZWQgb24gaW5mcmluZ2VtZW50IG9mIGludGVsbGVjdHVhbAotcHJvcGVydHkgcmlnaHRzIG9yIG90aGVyd2lzZS4gQXMgYSBjb25kaXRpb24gdG8gZXhlcmNpc2luZyB0aGUgcmlnaHRzIGFuZAotbGljZW5zZXMgZ3JhbnRlZCBoZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieSBhc3N1bWVzIHNvbGUgcmVzcG9uc2liaWxpdHkKLXRvIHNlY3VyZSBhbnkgb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBuZWVkZWQsIGlmIGFueS4gRm9yIGV4YW1wbGUsCi1pZiBhIHRoaXJkIHBhcnR5IHBhdGVudCBsaWNlbnNlIGlzIHJlcXVpcmVkIHRvIGFsbG93IFJlY2lwaWVudCB0byBkaXN0cmlidXRlCi10aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gYWNxdWlyZSB0aGF0IGxpY2Vuc2UgYmVmb3JlCi1kaXN0cmlidXRpbmcgdGhlIFByb2dyYW0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+ZCkKLUVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQgaGFzIHN1ZmZpY2llbnQgY29weXJpZ2h0Ci1yaWdodHMgaW4gaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCB0byBncmFudCB0aGUgY29weXJpZ2h0IGxpY2Vuc2Ugc2V0IGZvcnRoIGluCi10aGlzIEFncmVlbWVudC4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjMuIFJFUVVJUkVNRU5UUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkEgQ29udHJpYnV0b3IgbWF5IGNob29zZSB0byBkaXN0cmlidXRlIHRoZQotUHJvZ3JhbSBpbiBvYmplY3QgY29kZSBmb3JtIHVuZGVyIGl0cyBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIHByb3ZpZGVkIHRoYXQ6PC9zcGFuPgotPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgY29tcGxpZXMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQ7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1pdHMgbGljZW5zZSBhZ3JlZW1lbnQ6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgd2FycmFudGllcyBhbmQKLWNvbmRpdGlvbnMsIGV4cHJlc3MgYW5kIGltcGxpZWQsIGluY2x1ZGluZyB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgdGl0bGUKLWFuZCBub24taW5mcmluZ2VtZW50LCBhbmQgaW1wbGllZCB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgbWVyY2hhbnRhYmlsaXR5Ci1hbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2U7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotZWZmZWN0aXZlbHkgZXhjbHVkZXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIGxpYWJpbGl0eSBmb3IgZGFtYWdlcywKLWluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLCBpbmNpZGVudGFsIGFuZCBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIHN1Y2gKLWFzIGxvc3QgcHJvZml0czsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWlpKQotc3RhdGVzIHRoYXQgYW55IHByb3Zpc2lvbnMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyBBZ3JlZW1lbnQgYXJlIG9mZmVyZWQgYnkgdGhhdAotQ29udHJpYnV0b3IgYWxvbmUgYW5kIG5vdCBieSBhbnkgb3RoZXIgcGFydHk7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPml2KQotc3RhdGVzIHRoYXQgc291cmNlIGNvZGUgZm9yIHRoZSBQcm9ncmFtIGlzIGF2YWlsYWJsZSBmcm9tIHN1Y2ggQ29udHJpYnV0b3IsIGFuZAotaW5mb3JtcyBsaWNlbnNlZXMgaG93IHRvIG9idGFpbiBpdCBpbiBhIHJlYXNvbmFibGUgbWFubmVyIG9uIG9yIHRocm91Z2ggYQotbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGV4Y2hhbmdlLjxzcGFuIHN0eWxlPSdjb2xvcjpibHVlJz4gPC9zcGFuPjwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5XaGVuIHRoZSBQcm9ncmFtIGlzIG1hZGUgYXZhaWxhYmxlIGluIHNvdXJjZQotY29kZSBmb3JtOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGlzIEFncmVlbWVudDsgYW5kIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpIGEKLWNvcHkgb2YgdGhpcyBBZ3JlZW1lbnQgbXVzdCBiZSBpbmNsdWRlZCB3aXRoIGVhY2ggY29weSBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbnRyaWJ1dG9ycyBtYXkgbm90IHJlbW92ZSBvciBhbHRlciBhbnkKLWNvcHlyaWdodCBub3RpY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FYWNoIENvbnRyaWJ1dG9yIG11c3QgaWRlbnRpZnkgaXRzZWxmIGFzIHRoZQotb3JpZ2luYXRvciBvZiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIGluIGEgbWFubmVyIHRoYXQgcmVhc29uYWJseSBhbGxvd3MKLXN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeSB0aGUgb3JpZ2luYXRvciBvZiB0aGUgQ29udHJpYnV0aW9uLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT048L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db21tZXJjaWFsIGRpc3RyaWJ1dG9ycyBvZiBzb2Z0d2FyZSBtYXkKLWFjY2VwdCBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgd2l0aCByZXNwZWN0IHRvIGVuZCB1c2VycywgYnVzaW5lc3MgcGFydG5lcnMKLWFuZCB0aGUgbGlrZS4gV2hpbGUgdGhpcyBsaWNlbnNlIGlzIGludGVuZGVkIHRvIGZhY2lsaXRhdGUgdGhlIGNvbW1lcmNpYWwgdXNlCi1vZiB0aGUgUHJvZ3JhbSwgdGhlIENvbnRyaWJ1dG9yIHdobyBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwKLXByb2R1Y3Qgb2ZmZXJpbmcgc2hvdWxkIGRvIHNvIGluIGEgbWFubmVyIHdoaWNoIGRvZXMgbm90IGNyZWF0ZSBwb3RlbnRpYWwKLWxpYWJpbGl0eSBmb3Igb3RoZXIgQ29udHJpYnV0b3JzLiBUaGVyZWZvcmUsIGlmIGEgQ29udHJpYnV0b3IgaW5jbHVkZXMgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBzdWNoIENvbnRyaWJ1dG9yICgmcXVvdDtDb21tZXJjaWFsCi1Db250cmlidXRvciZxdW90OykgaGVyZWJ5IGFncmVlcyB0byBkZWZlbmQgYW5kIGluZGVtbmlmeSBldmVyeSBvdGhlcgotQ29udHJpYnV0b3IgKCZxdW90O0luZGVtbmlmaWVkIENvbnRyaWJ1dG9yJnF1b3Q7KSBhZ2FpbnN0IGFueSBsb3NzZXMsIGRhbWFnZXMgYW5kCi1jb3N0cyAoY29sbGVjdGl2ZWx5ICZxdW90O0xvc3NlcyZxdW90OykgYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kIG90aGVyCi1sZWdhbCBhY3Rpb25zIGJyb3VnaHQgYnkgYSB0aGlyZCBwYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciB0bwotdGhlIGV4dGVudCBjYXVzZWQgYnkgdGhlIGFjdHMgb3Igb21pc3Npb25zIG9mIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvciBpbgotY29ubmVjdGlvbiB3aXRoIGl0cyBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3QKLW9mZmVyaW5nLiBUaGUgb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zIG9yIExvc3NlcwotcmVsYXRpbmcgdG8gYW55IGFjdHVhbCBvciBhbGxlZ2VkIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBpbmZyaW5nZW1lbnQuIEluIG9yZGVyCi10byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciBtdXN0OiBhKSBwcm9tcHRseSBub3RpZnkgdGhlIENvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCBjbGFpbSwgYW5kIGIpIGFsbG93IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yCi10byBjb250cm9sLCBhbmQgY29vcGVyYXRlIHdpdGggdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4sIHRoZSBkZWZlbnNlIGFuZAotYW55IHJlbGF0ZWQgc2V0dGxlbWVudCBuZWdvdGlhdGlvbnMuIFRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciBtYXkgcGFydGljaXBhdGUKLWluIGFueSBzdWNoIGNsYWltIGF0IGl0cyBvd24gZXhwZW5zZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkZvciBleGFtcGxlLCBhIENvbnRyaWJ1dG9yIG1pZ2h0IGluY2x1ZGUgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yLiBJZiB0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbiBtYWtlcyBwZXJmb3JtYW5jZQotY2xhaW1zLCBvciBvZmZlcnMgd2FycmFudGllcyByZWxhdGVkIHRvIFByb2R1Y3QgWCwgdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZAotd2FycmFudGllcyBhcmUgc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yJ3MgcmVzcG9uc2liaWxpdHkgYWxvbmUuIFVuZGVyIHRoaXMKLXNlY3Rpb24sIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHdvdWxkIGhhdmUgdG8gZGVmZW5kIGNsYWltcyBhZ2FpbnN0IHRoZQotb3RoZXIgQ29udHJpYnV0b3JzIHJlbGF0ZWQgdG8gdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzLCBhbmQgaWYgYQotY291cnQgcmVxdWlyZXMgYW55IG90aGVyIENvbnRyaWJ1dG9yIHRvIHBheSBhbnkgZGFtYWdlcyBhcyBhIHJlc3VsdCwgdGhlCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yIG11c3QgcGF5IHRob3NlIGRhbWFnZXMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz41LiBOTyBXQVJSQU5UWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgVEhFIFBST0dSQU0gSVMgUFJPVklERUQgT04gQU4gJnF1b3Q7QVMgSVMmcXVvdDsgQkFTSVMsIFdJVEhPVVQKLVdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCBJTkNMVURJTkcsCi1XSVRIT1VUIExJTUlUQVRJT04sIEFOWSBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsCi1NRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIEVhY2ggUmVjaXBpZW50IGlzIHNvbGVseQotcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgYW5kIGRpc3RyaWJ1dGluZyB0aGUKLVByb2dyYW0gYW5kIGFzc3VtZXMgYWxsIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBpdHMgZXhlcmNpc2Ugb2YgcmlnaHRzIHVuZGVyIHRoaXMKLUFncmVlbWVudCAsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIHJpc2tzIGFuZCBjb3N0cyBvZiBwcm9ncmFtIGVycm9ycywKLWNvbXBsaWFuY2Ugd2l0aCBhcHBsaWNhYmxlIGxhd3MsIGRhbWFnZSB0byBvciBsb3NzIG9mIGRhdGEsIHByb2dyYW1zIG9yCi1lcXVpcG1lbnQsIGFuZCB1bmF2YWlsYWJpbGl0eSBvciBpbnRlcnJ1cHRpb24gb2Ygb3BlcmF0aW9ucy4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjYuIERJU0NMQUlNRVIgT0YgTElBQklMSVRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBORUlUSEVSIFJFQ0lQSUVOVCBOT1IgQU5ZIENPTlRSSUJVVE9SUyBTSEFMTCBIQVZFIEFOWSBMSUFCSUxJVFkgRk9SCi1BTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLShJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIExPU1QgUFJPRklUUyksIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi1PRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwotTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPUiBESVNUUklCVVRJT04gT0YKLVRIRSBQUk9HUkFNIE9SIFRIRSBFWEVSQ0lTRSBPRiBBTlkgUklHSFRTIEdSQU5URUQgSEVSRVVOREVSLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz43LiBHRU5FUkFMPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBpbnZhbGlkCi1vciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFwcGxpY2FibGUgbGF3LCBpdCBzaGFsbCBub3QgYWZmZWN0IHRoZSB2YWxpZGl0eSBvcgotZW5mb3JjZWFiaWxpdHkgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGFuZCB3aXRob3V0Ci1mdXJ0aGVyIGFjdGlvbiBieSB0aGUgcGFydGllcyBoZXJldG8sIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZQotbWluaW11bSBleHRlbnQgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VjaCBwcm92aXNpb24gdmFsaWQgYW5kIGVuZm9yY2VhYmxlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgUmVjaXBpZW50IGluc3RpdHV0ZXMgcGF0ZW50IGxpdGlnYXRpb24KLWFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkKLWFsbGVnaW5nIHRoYXQgdGhlIFByb2dyYW0gaXRzZWxmIChleGNsdWRpbmcgY29tYmluYXRpb25zIG9mIHRoZSBQcm9ncmFtIHdpdGgKLW90aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlKSBpbmZyaW5nZXMgc3VjaCBSZWNpcGllbnQncyBwYXRlbnQocyksIHRoZW4gc3VjaAotUmVjaXBpZW50J3MgcmlnaHRzIGdyYW50ZWQgdW5kZXIgU2VjdGlvbiAyKGIpIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZQotc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QWxsIFJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudAotc2hhbGwgdGVybWluYXRlIGlmIGl0IGZhaWxzIHRvIGNvbXBseSB3aXRoIGFueSBvZiB0aGUgbWF0ZXJpYWwgdGVybXMgb3IKLWNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQgYW5kIGRvZXMgbm90IGN1cmUgc3VjaCBmYWlsdXJlIGluIGEgcmVhc29uYWJsZQotcGVyaW9kIG9mIHRpbWUgYWZ0ZXIgYmVjb21pbmcgYXdhcmUgb2Ygc3VjaCBub25jb21wbGlhbmNlLiBJZiBhbGwgUmVjaXBpZW50J3MKLXJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCB0ZXJtaW5hdGUsIFJlY2lwaWVudCBhZ3JlZXMgdG8gY2Vhc2UgdXNlIGFuZAotZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGFzIHNvb24gYXMgcmVhc29uYWJseSBwcmFjdGljYWJsZS4gSG93ZXZlciwKLVJlY2lwaWVudCdzIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFuZCBhbnkgbGljZW5zZXMgZ3JhbnRlZCBieQotUmVjaXBpZW50IHJlbGF0aW5nIHRvIHRoZSBQcm9ncmFtIHNoYWxsIGNvbnRpbnVlIGFuZCBzdXJ2aXZlLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUKLWNvcGllcyBvZiB0aGlzIEFncmVlbWVudCwgYnV0IGluIG9yZGVyIHRvIGF2b2lkIGluY29uc2lzdGVuY3kgdGhlIEFncmVlbWVudCBpcwotY29weXJpZ2h0ZWQgYW5kIG1heSBvbmx5IGJlIG1vZGlmaWVkIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyLiBUaGUgQWdyZWVtZW50Ci1TdGV3YXJkIHJlc2VydmVzIHRoZSByaWdodCB0byBwdWJsaXNoIG5ldyB2ZXJzaW9ucyAoaW5jbHVkaW5nIHJldmlzaW9ucykgb2YKLXRoaXMgQWdyZWVtZW50IGZyb20gdGltZSB0byB0aW1lLiBObyBvbmUgb3RoZXIgdGhhbiB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgaGFzCi10aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMgQWdyZWVtZW50LiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHRoZSBpbml0aWFsCi1BZ3JlZW1lbnQgU3Rld2FyZC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYXkgYXNzaWduIHRoZSByZXNwb25zaWJpbGl0eSB0bwotc2VydmUgYXMgdGhlIEFncmVlbWVudCBTdGV3YXJkIHRvIGEgc3VpdGFibGUgc2VwYXJhdGUgZW50aXR5LiBFYWNoIG5ldyB2ZXJzaW9uCi1vZiB0aGUgQWdyZWVtZW50IHdpbGwgYmUgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gVGhlIFByb2dyYW0KLShpbmNsdWRpbmcgQ29udHJpYnV0aW9ucykgbWF5IGFsd2F5cyBiZSBkaXN0cmlidXRlZCBzdWJqZWN0IHRvIHRoZSB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IHVuZGVyIHdoaWNoIGl0IHdhcyByZWNlaXZlZC4gSW4gYWRkaXRpb24sIGFmdGVyIGEgbmV3IHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgaXMgcHVibGlzaGVkLCBDb250cmlidXRvciBtYXkgZWxlY3QgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQotKGluY2x1ZGluZyBpdHMgQ29udHJpYnV0aW9ucykgdW5kZXIgdGhlIG5ldyB2ZXJzaW9uLiBFeGNlcHQgYXMgZXhwcmVzc2x5IHN0YXRlZAotaW4gU2VjdGlvbnMgMihhKSBhbmQgMihiKSBhYm92ZSwgUmVjaXBpZW50IHJlY2VpdmVzIG5vIHJpZ2h0cyBvciBsaWNlbnNlcyB0bwotdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBhbnkgQ29udHJpYnV0b3IgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIHdoZXRoZXIKLWV4cHJlc3NseSwgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yIG90aGVyd2lzZS4gQWxsIHJpZ2h0cyBpbiB0aGUgUHJvZ3JhbSBub3QKLWV4cHJlc3NseSBncmFudGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFyZSByZXNlcnZlZC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRoaXMgQWdyZWVtZW50IGlzIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZQotU3RhdGUgb2YgTmV3IFlvcmsgYW5kIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZgotQW1lcmljYS4gTm8gcGFydHkgdG8gdGhpcyBBZ3JlZW1lbnQgd2lsbCBicmluZyBhIGxlZ2FsIGFjdGlvbiB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgbW9yZSB0aGFuIG9uZSB5ZWFyIGFmdGVyIHRoZSBjYXVzZSBvZiBhY3Rpb24gYXJvc2UuIEVhY2ggcGFydHkgd2FpdmVzCi1pdHMgcmlnaHRzIHRvIGEganVyeSB0cmlhbCBpbiBhbnkgcmVzdWx0aW5nIGxpdGlnYXRpb24uPC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbD48IVtpZiAhc3VwcG9ydEVtcHR5UGFyYXNdPiZuYnNwOzwhW2VuZGlmXT48bzpwPjwvbzpwPjwvcD4KLQotPC9kaXY+Ci0KLTwvYm9keT4KLQotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3OWJlMzAuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgZmVhdHVyZS5wcm9wZXJ0aWVzCi0jIGNvbnRhaW5zIGV4dGVybmFsaXplZCBzdHJpbmdzIGZvciBmZWF0dXJlLnhtbAotIyAiJWZvbyIgaW4gZmVhdHVyZS54bWwgY29ycmVzcG9uZHMgdG8gdGhlIGtleSAiZm9vIiBpbiB0aGlzIGZpbGUKLSMgamF2YS5pby5Qcm9wZXJ0aWVzIGZpbGUgKElTTyA4ODU5LTEgd2l0aCAiXCIgZXNjYXBlcykKLSMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgotCi0jICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCi1mZWF0dXJlTmFtZT1XU1QgV2ViIFNlcnZpY2VzIENvcmUKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPVRoZSBFY2xpcHNlIFdlYiBUb29scyBQbGF0Zm9ybSAoV1RQKSBQcm9qZWN0IHVwZGF0ZSBzaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1XU1QgV2ViIFNlcnZpY2VzIGNvcmUuCi0KLSMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgotY29weXJpZ2h0PVwKLUNvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy5cblwKLUFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKLWFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAotd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCi1cblwKLUNvbnRyaWJ1dG9yczpcblwKLSAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb25cbgotIyMjIyMjIyMjIyMjIyMjIyBlbmQgb2YgY29weXJpZ2h0IHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jICJsaWNlbnNlVVJMIiBwcm9wZXJ0eSAtIFVSTCBvZiB0aGUgIkZlYXR1cmUgTGljZW5zZSIKLSMgZG8gbm90IHRyYW5zbGF0ZSB2YWx1ZSAtIGp1c3QgY2hhbmdlIHRvIHBvaW50IHRvIGEgbG9jYWxlLXNwZWNpZmljIEhUTUwgcGFnZQotbGljZW5zZVVSTD1saWNlbnNlLmh0bWwKLQotIyAibGljZW5zZSIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgTGljZW5zZSIKLSMgc2hvdWxkIGJlIHBsYWluIHRleHQgdmVyc2lvbiBvZiBsaWNlbnNlIGFncmVlbWVudCBwb2ludGVkIHRvIGJlICJsaWNlbnNlVVJMIgotbGljZW5zZT1cCi1FQ0xJUFNFIEZPVU5EQVRJT04gU09GVFdBUkUgVVNFUiBBR1JFRU1FTlRcblwKLUp1bmUgMDYsIDIwMDdcblwKLVxuXAotVXNhZ2UgT2YgQ29udGVudFxuXAotXG5cCi1USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCi1PVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKLVVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAotQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCi1OT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCi1BR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCi1BTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAotT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKLU9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCi1CRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCi1cblwKLUFwcGxpY2FibGUgTGljZW5zZXNcblwKLVxuXAotVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb25cblwKLWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljXG5cCi1MaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpc1xuXAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKLVxuXAotQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCi1kb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlNcblwKLXJlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCi1hcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKLVxuXAotICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAotICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCi0gICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCi0gICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YT8gQVJjaGl2ZSlcblwKLSAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAotICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKLSAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKLSAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCi0gICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKLSAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCi0gICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWRcblwKLSJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mXG5cCi1JbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAotY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAotaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAotTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCi1cblwKLSAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCi0gICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCi0gICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKLSAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAotICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCi1cblwKLU5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKLUVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlXG5cCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKLUluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCi13aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoteW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAotdGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsXG5cCi1GZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91clxuXAotdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCi1cblwKLVRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAotVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCi1TT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCi1cblwKLSAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAotICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCi0gICAgLSBJQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwpXG5cCi0gICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKLSAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCi0gICAgLSBDb21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIChDRERMKSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvZmVhdHVyZS54bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL2ZlYXR1cmUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjU3ZjM3Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxmZWF0dXJlCi0gICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZSIKLSAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCi0gICAgICB2ZXJzaW9uPSIzLjEuMC5xdWFsaWZpZXIiCi0gICAgICBwcm92aWRlci1uYW1lPSIlcHJvdmlkZXJOYW1lIj4KLQotICAgPGRlc2NyaXB0aW9uPgotICAgICAgJWRlc2NyaXB0aW9uCi0gICA8L2Rlc2NyaXB0aW9uPgotCi0gICA8Y29weXJpZ2h0PgotICAgICAgJWNvcHlyaWdodAotICAgPC9jb3B5cmlnaHQ+Ci0KLSAgIDxsaWNlbnNlIHVybD0iJWxpY2Vuc2VVUkwiPgotICAgICAgJWxpY2Vuc2UKLSAgIDwvbGljZW5zZT4KLQotICAgPHVybD4KLSAgICAgIDx1cGRhdGUgbGFiZWw9IiV1cGRhdGVTaXRlTmFtZSIgdXJsPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvd2VidG9vbHMvdXBkYXRlcy8iLz4KLSAgIDwvdXJsPgotCi0gICA8aW5jbHVkZXMKLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52IgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuYXBhY2hlLmNvbW1vbnMuY29kZWMiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MucGFyc2VyIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzZGwiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzaSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjEuMC40LnF1YWxpZmllciIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5hcGFjaGUubG9nNGoiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMS4yLjEzLnF1YWxpZmllciIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5hcGFjaGUud3NpbDRqIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLnVkZGk0aiIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5hcGFjaGUuY29tbW9ucy5kaXNjb3ZlcnkiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9ImphdmF4LnhtbC5ycGMiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9ImphdmF4LnhtbC5zb2FwIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuYXBhY2hlLmF4aXMiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9ImphdmF4Lm1haWwiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJqYXZheC5hY3RpdmF0aW9uIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5IgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi08L2ZlYXR1cmU+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL2xpY2Vuc2UuaHRtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvbGljZW5zZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmFiZmI0Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvbGljZW5zZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzNjLm9yZy9UUi8xOTk5L1JFQy1odG1sNDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+Ci08IS0tIHNhdmVkIGZyb20gdXJsPSgwMDQ0KWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsL25vdGljZS5odG1sIC0tPgotPEhUTUw+PEhFQUQ+PFRJVExFPkVjbGlwc2Uub3JnIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9USVRMRT4KLTxNRVRBIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTxNRVRBIGNvbnRlbnQ9Ik1TSFRNTCA2LjAwLjI4MDAuMTQ3OSIgbmFtZT1HRU5FUkFUT1I+PC9IRUFEPgotPEJPRFkgbGFuZz1FTi1VUyB2TGluaz1wdXJwbGUgbGluaz1ibHVlPgotPEgyPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvSDI+Ci08UD5KdW5lIDA2LCAyMDA3PC9QPgotPEgzPlVzYWdlIE9mIENvbnRlbnQ8L0gzPgotPFA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIAotQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLiBVU0UgT0YgCi1USEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSAKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIAotQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCAKLUJZIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSAKLUFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEUgCi1URVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSAKLUFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1csIFRIRU4gWU9VIAotTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9QPgotPEgzPkFwcGxpY2FibGUgTGljZW5zZXM8L0gzPgotPFA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIAotRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIAotUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPEEgCi1ocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLTxQPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCAKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWUyByZXBvc2l0b3J5IAotKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSAKLWFyY2hpdmVzICgiRG93bmxvYWRzIikuPC9QPgotPFA+Q29udGVudCBtYXkgYmUgYXBwb3J0aW9uZWQgaW50byBwbHVnLWlucyAoIlBsdWctaW5zIiksIHBsdWctaW4gZnJhZ21lbnRzIAotKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS4gQSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIAotUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC4gRmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgCi1jb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyAKLWFzc29jaWF0ZWQgd2l0aCBhIEZlYXR1cmUuIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgYXJlIGxvY2F0ZWQgaW4gZGlyZWN0b3JpZXMgCi1uYW1lZCAicGx1Z2lucyIgYW5kIEZlYXR1cmVzIGFyZSBsb2NhdGVkIGluIGRpcmVjdG9yaWVzIG5hbWVkICJmZWF0dXJlcyIuPC9QPgotPFA+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIEZpbGVzIG5hbWVkIAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgCi1GZWF0dXJlcy48L1A+Ci08UD5UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlIGNvbnRhaW5lZCAKLWluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIAotRmVhdHVyZXMgYW5kIEluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgCi0oIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlIExpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSAKLWRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZSBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIAotbG9jYXRpb25zOjwvUD4KLTxVTD4KLSAgPExJPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeSAKLSAgPExJPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzIAotICA8TEk+U3ViZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zIAotICA8TEk+RmVhdHVyZSBkaXJlY3RvcmllcyA8L0xJPjwvVUw+Ci08UD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgCi11c2luZyB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGUgCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnMgSW5jbHVkZWQgCi1GZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdSB3aXRoIHRoZSB0ZXJtcyAKLWFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtIHlvdSB3aGVyZSB5b3UgY2FuIAotbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIAotZmlsZXMgbmFtZWQgImZlYXR1cmUucHJvcGVydGllcyIuIFN1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIAotVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgCi1hbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IAotZGlyZWN0b3J5LjwvUD4KLTxQPlRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUiBUTyBUSEUgRVBMIAotT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiBTT01FIE9GIFRIRVNFIAotT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L1A+Ci08VUw+Ci0gIDxMST5Db21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9BPikgCi0KLSAgPExJPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L0E+KSAKLQotICA8TEk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9BPikgCi0KLSAgPExJPklCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sPC9BPikgCi0KLSAgPExJPk1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbCI+aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWw8L0E+KSAKLQotICA8TEk+TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwiPmh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbDwvQT4pIAotICA8L0xJPgotICAgCi0gIDxMST5Db21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIChDRERMKSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3LnN1bi5jb20vY2RkbC9jZGRsLmh0bWwiPmh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbCk8L0E+Ci0gIDwvTEk+Ci08L1VMPgotPFA+SVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUiAKLVRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIGlzIAotcHJvdmlkZWQsIHBsZWFzZSBjb250YWN0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG8gZGV0ZXJtaW5lIHdoYXQgdGVybXMgYW5kIAotY29uZGl0aW9ucyBnb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuPC9QPgotPEgzPkNyeXB0b2dyYXBoeTwvSDM+Ci08UD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgCi1jdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsIGFuZC9vciAKLXJlLWV4cG9ydCB0byBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgCi1lbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLCByZWd1bGF0aW9ucyBhbmQgcG9saWNpZXMgCi1jb25jZXJuaW5nIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCAKLXRvIHNlZSBpZiB0aGlzIGlzIHBlcm1pdHRlZC48L1A+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYWJvdXQuaHRtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU4MWQ0Ni4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLTxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotCi08UD5KdW5lLCAyMDA4PC9QPgkKLTxoMz5MaWNlbnNlPC9oMz4KLQotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KLQotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudC48L3A+Ci0KLTxoMz5Tb3VyY2UgQ29kZTwvaDM+Ci08cD5UaGlzIHBsdWctaW4gY29udGFpbnMgc291cmNlIGNvZGUgemlwIGZpbGVzICgmcXVvdDtTb3VyY2UgWmlwcyZxdW90OykgdGhhdCBjb3JyZXNwb25kIHRvIGJpbmFyeSBjb250ZW50IGluIG90aGVyIHBsdWctaW5zLiBUaGVzZSBTb3VyY2UgWmlwcyBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgZGlmZmVyZW50IGxpY2Vuc2UKLWFncmVlbWVudHMgYW5kL29yIG5vdGljZXMuIERldGFpbHMgYWJvdXQgdGhlc2UgbGljZW5zZSBhZ3JlZW1lbnRzIGFuZCBub3RpY2VzIGFyZSBjb250YWluZWQgaW4gJnF1b3Q7YWJvdXQuaHRtbCZxdW90OyBmaWxlcyAoJnF1b3Q7QWJvdXRzJnF1b3Q7KSBsb2NhdGVkIGluIHN1Yi1kaXJlY3RvcmllcyBpbiB0aGUKLXNyYy8gZGlyZWN0b3J5IG9mIHRoaXMgcGx1Zy1pbi4gU3VjaCBBYm91dHMgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBTb3VyY2UgWmlwcyBpbiB0aGF0IGRpcmVjdG9yeSwgbm90IHRoZSBFUEwuPC9wPgotCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2Fib3V0LmluaSBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYWJvdXQuaW5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGE1YTQwLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYWJvdXQuaW5pCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyBhYm91dC5pbmkKLSMgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBmZWF0dXJlCi0jIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCi0jICIla2V5IiBhcmUgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZGVmaW5lZCBpbiBhYm91dC5wcm9wZXJ0aWVzCi0jIFRoaXMgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQuCi0KLSMgUHJvcGVydHkgImFib3V0VGV4dCIgY29udGFpbnMgYmx1cmIgZm9yICJBYm91dCIgZGlhbG9nICh0cmFuc2xhdGVkKQotYWJvdXRUZXh0PSVibHVyYgotCi0jIFByb3BlcnR5ICJ3aW5kb3dJbWFnZSIgY29udGFpbnMgcGF0aCB0byB3aW5kb3cgaWNvbiAoMTZ4MTYpCi0jIG5lZWRlZCBmb3IgcHJpbWFyeSBmZWF0dXJlcyBvbmx5Ci0KLSMgUHJvcGVydHkgImZlYXR1cmVJbWFnZSIgY29udGFpbnMgcGF0aCB0byBmZWF0dXJlIGltYWdlICgzMngzMikKLWZlYXR1cmVJbWFnZT13dHBfcHJvZDMyLnBuZwotCi0jIFByb3BlcnR5ICJhYm91dEltYWdlIiBjb250YWlucyBwYXRoIHRvIHByb2R1Y3QgaW1hZ2UgKDUwMHgzMzAgb3IgMTE1eDE2NCkKLSMgbmVlZGVkIGZvciBwcmltYXJ5IGZlYXR1cmVzIG9ubHkKLQotIyBQcm9wZXJ0eSAiYXBwTmFtZSIgY29udGFpbnMgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gKG5vdCB0cmFuc2xhdGVkKQotIyBuZWVkZWQgZm9yIHByaW1hcnkgZmVhdHVyZXMgb25seQotCi0jIFByb3BlcnR5ICJ3ZWxjb21lUGFnZSIgY29udGFpbnMgcGF0aCB0byB3ZWxjb21lIHBhZ2UgKHNwZWNpYWwgWE1MLWJhc2VkIGZvcm1hdCkKLSMgb3B0aW9uYWwKLQotIyBQcm9wZXJ0eSAid2VsY29tZVBlcnNwZWN0aXZlIiBjb250YWlucyB0aGUgaWQgb2YgdGhlIHBlcnNwZWN0aXZlIGluIHdoaWNoIHRoZQotIyB3ZWxjb21lIHBhZ2UgaXMgdG8gYmUgb3BlbmVkLgotIyBvcHRpb25hbAotCi0KLQotCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2Fib3V0Lm1hcHBpbmdzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9hYm91dC5tYXBwaW5ncwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI4MzkwYS4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2Fib3V0Lm1hcHBpbmdzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0jIGFib3V0Lm1hcHBpbmdzCi0jIGNvbnRhaW5zIGZpbGwtaW5zIGZvciBhYm91dC5wcm9wZXJ0aWVzCi0jIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCi0jIFRoaXMgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQuCi0KLTA9QGJ1aWxkQApkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9hYm91dC5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9hYm91dC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTBkYTg1Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYWJvdXQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIGFib3V0LnByb3BlcnRpZXMKLSMgY29udGFpbnMgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZm9yIGFib3V0LmluaQotIyBqYXZhLmlvLlByb3BlcnRpZXMgZmlsZSAoSVNPIDg4NTktMSB3aXRoICJcIiBlc2NhcGVzKQotIyBmaWxsLWlucyBhcmUgc3VwcGxpZWQgYnkgYWJvdXQubWFwcGluZ3MKLSMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgotIwotIyBEbyBub3QgdHJhbnNsYXRlIGFueSB2YWx1ZXMgc3Vycm91bmRlZCBieSB7fQotCi1ibHVyYj1XZWIgU3RhbmRhcmQgVG9vbHMgLSBXZWIgU2VydmljZSBDb3JlXG5cCi1cblwKLVZlcnNpb246IHtmZWF0dXJlVmVyc2lvbn1cblwKLUJ1aWxkIGlkOiB7MH1cblwKLVxuXAotKGMpIENvcHlyaWdodCBFY2xpcHNlIGNvbnRyaWJ1dG9ycyBhbmQgb3RoZXJzIDIwMDUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXAotVmlzaXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scwotCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2J1aWxkLnByb3BlcnRpZXMgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZDUxMmQuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBhYm91dC5odG1sLCBhYm91dC5pbmksIGFib3V0Lm1hcHBpbmdzLCBhYm91dC5wcm9wZXJ0aWVzLCB3dHBfcHJvZDMyLnBuZywgcGx1Z2luLnByb3BlcnRpZXMsIHBsdWdpbi54bWwsIHNyYy8qKiwgTUVUQS1JTkYvCi1zb3VyY2VQbHVnaW4gPSB0cnVlCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL3BsdWdpbi5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEzOWQwZi4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXBsdWdpbk5hbWU9V2ViIFN0YW5kYXJkIFRvb2xzIC0gV2ViIFNlcnZpY2UgQ29yZSBTb3VyY2UKLXByb3ZpZGVyTmFtZT1FY2xpcHNlLm9yZwpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS93dHBfcHJvZDMyLmdpZiBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvd3RwX3Byb2QzMi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZmI0NGEuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS93dHBfcHJvZDMyLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvd3RwX3Byb2QzMi5wbmcgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL3d0cF9wcm9kMzIucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmNlYWIzLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvd3RwX3Byb2QzMi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI0OWU5Zi4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWJpbi5pbmNsdWRlcyA9XAotZXBsLXYxMC5odG1sLFwKLWVjbGlwc2VfdXBkYXRlXzEyMC5qcGcsXAotZmVhdHVyZS54bWwsXAotZmVhdHVyZS5wcm9wZXJ0aWVzLFwKLWxpY2Vuc2UuaHRtbApkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVGZWF0dXJlL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZGY3MDguLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVGZWF0dXJlL2VwbC12MTAuaHRtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVGZWF0dXJlL2VwbC12MTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIyYWQyOS4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9lcGwtdjEwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotPGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIgoteG1sbnM6dz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIKLXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4KLQotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KLTxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9V29yZC5Eb2N1bWVudD4KLTxtZXRhIG5hbWU9R2VuZXJhdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPG1ldGEgbmFtZT1PcmlnaW5hdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPGxpbmsgcmVsPUZpbGUtTGlzdAotaHJlZj0iLi9FY2xpcHNlJTIwRVBMJTIwMjAwM18xMV8xMCUyMEZpbmFsX2ZpbGVzL2ZpbGVsaXN0LnhtbCI+Ci08dGl0bGU+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIFZlcnNpb24gMS4wPC90aXRsZT4KLTwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDxvOkRvY3VtZW50UHJvcGVydGllcz4KLSAgPG86UmV2aXNpb24+MjwvbzpSZXZpc2lvbj4KLSAgPG86VG90YWxUaW1lPjM8L286VG90YWxUaW1lPgotICA8bzpDcmVhdGVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkNyZWF0ZWQ+Ci0gIDxvOkxhc3RTYXZlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpMYXN0U2F2ZWQ+Ci0gIDxvOlBhZ2VzPjQ8L286UGFnZXM+Ci0gIDxvOldvcmRzPjE2MjY8L286V29yZHM+Ci0gIDxvOkNoYXJhY3RlcnM+OTI3MDwvbzpDaGFyYWN0ZXJzPgotICAgPG86TGluZXM+Nzc8L286TGluZXM+Ci0gIDxvOlBhcmFncmFwaHM+MTg8L286UGFyYWdyYXBocz4KLSAgPG86Q2hhcmFjdGVyc1dpdGhTcGFjZXM+MTEzODQ8L286Q2hhcmFjdGVyc1dpdGhTcGFjZXM+Ci0gIDxvOlZlcnNpb24+OS40NDAyPC9vOlZlcnNpb24+Ci0gPC9vOkRvY3VtZW50UHJvcGVydGllcz4KLTwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDx3OldvcmREb2N1bWVudD4KLSAgPHc6VHJhY2tSZXZpc2lvbnMvPgotIDwvdzpXb3JkRG9jdW1lbnQ+Ci08L3htbD48IVtlbmRpZl0tLT4KLTxzdHlsZT4KLTwhLS0KLSAvKiBGb250IERlZmluaXRpb25zICovCi1AZm9udC1mYWNlCi0Je2ZvbnQtZmFtaWx5OlRhaG9tYTsKLQlwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDsKLQltc28tZm9udC1jaGFyc2V0OjA7Ci0JbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7Ci0JbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7Ci0JbXNvLWZvbnQtc2lnbmF0dXJlOjU1MzY3OTQ5NSAtMjE0NzQ4MzY0OCA4IDAgNjYwNDcgMDt9Ci0gLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KLXAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwKLQl7bXNvLXN0eWxlLXBhcmVudDoiIjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wCi0Je21hcmdpbi1yaWdodDowaW47Ci0JbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87Ci0JbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87Ci0JbWFyZ2luLWxlZnQ6MGluOwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAuQmFsbG9vblRleHQsIGxpLkJhbGxvb25UZXh0LCBkaXYuQmFsbG9vblRleHQKLQl7bXNvLXN0eWxlLW5hbWU6IkJhbGxvb24gVGV4dCI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZTo4LjBwdDsKLQlmb250LWZhbWlseTpUYWhvbWE7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotQHBhZ2UgU2VjdGlvbjEKLQl7c2l6ZTo4LjVpbiAxMS4waW47Ci0JbWFyZ2luOjEuMGluIDEuMjVpbiAxLjBpbiAxLjI1aW47Ci0JbXNvLWhlYWRlci1tYXJnaW46LjVpbjsKLQltc28tZm9vdGVyLW1hcmdpbjouNWluOwotCW1zby1wYXBlci1zb3VyY2U6MDt9Ci1kaXYuU2VjdGlvbjEKLQl7cGFnZTpTZWN0aW9uMTt9Ci0tLT4KLTwvc3R5bGU+Ci08L2hlYWQ+Ci0KLTxib2R5IGxhbmc9RU4tVVMgc3R5bGU9J3RhYi1pbnRlcnZhbDouNWluJz4KLQotPGRpdiBjbGFzcz1TZWN0aW9uMT4KLQotPHAgYWxpZ249Y2VudGVyIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcic+PGI+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIHYgMS4wPC9iPgotPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VEhFIEFDQ09NUEFOWUlORyBQUk9HUkFNIElTIFBST1ZJREVEIFVOREVSCi1USEUgVEVSTVMgT0YgVEhJUyBFQ0xJUFNFIFBVQkxJQyBMSUNFTlNFICgmcXVvdDtBR1JFRU1FTlQmcXVvdDspLiBBTlkgVVNFLAotUkVQUk9EVUNUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBDT05TVElUVVRFUyBSRUNJUElFTlQnUyBBQ0NFUFRBTkNFCi1PRiBUSElTIEFHUkVFTUVOVC48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjEuIERFRklOSVRJT05TPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0aW9uJnF1b3Q7IG1lYW5zOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaW4gdGhlIGNhc2Ugb2YgdGhlIGluaXRpYWwgQ29udHJpYnV0b3IsIHRoZSBpbml0aWFsIGNvZGUgYW5kIGRvY3VtZW50YXRpb24KLWRpc3RyaWJ1dGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBhbmQ8YnIgY2xlYXI9bGVmdD4KLWIpIGluIHRoZSBjYXNlIG9mIGVhY2ggc3Vic2VxdWVudCBDb250cmlidXRvcjo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotY2hhbmdlcyB0byB0aGUgUHJvZ3JhbSwgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1hZGRpdGlvbnMgdG8gdGhlIFByb2dyYW07PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+d2hlcmUKLXN1Y2ggY2hhbmdlcyBhbmQvb3IgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtIG9yaWdpbmF0ZSBmcm9tIGFuZCBhcmUgZGlzdHJpYnV0ZWQKLWJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4gQSBDb250cmlidXRpb24gJ29yaWdpbmF0ZXMnIGZyb20gYSBDb250cmlidXRvcgotaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24KLXN1Y2ggQ29udHJpYnV0b3IncyBiZWhhbGYuIENvbnRyaWJ1dGlvbnMgZG8gbm90IGluY2x1ZGUgYWRkaXRpb25zIHRvIHRoZQotUHJvZ3JhbSB3aGljaDogKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGluIGNvbmp1bmN0aW9uCi13aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93biBsaWNlbnNlIGFncmVlbWVudCwgYW5kIChpaSkgYXJlIG5vdCBkZXJpdmF0aXZlCi13b3JrcyBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dG9yJnF1b3Q7IG1lYW5zIGFueSBwZXJzb24gb3IKLWVudGl0eSB0aGF0IGRpc3RyaWJ1dGVzIHRoZSBQcm9ncmFtLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7TGljZW5zZWQgUGF0ZW50cyAmcXVvdDsgbWVhbiBwYXRlbnQKLWNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3Igd2hpY2ggYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlCi1vciBzYWxlIG9mIGl0cyBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UHJvZ3JhbSZxdW90OyBtZWFucyB0aGUgQ29udHJpYnV0aW9ucwotZGlzdHJpYnV0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoaXMgQWdyZWVtZW50Ljwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UmVjaXBpZW50JnF1b3Q7IG1lYW5zIGFueW9uZSB3aG8KLXJlY2VpdmVzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYWxsIENvbnRyaWJ1dG9ycy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjIuIEdSQU5UIE9GIFJJR0hUUzwvc3Bhbj48L2I+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgUmVjaXBpZW50Ci1hIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvPHNwYW4KLXN0eWxlPSdjb2xvcjpyZWQnPiA8L3NwYW4+cmVwcm9kdWNlLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YsIHB1YmxpY2x5Ci1kaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlIGFuZCBzdWJsaWNlbnNlIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaAotQ29udHJpYnV0b3IsIGlmIGFueSwgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlCi1mb3JtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzCi1SZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz4gPC9zcGFuPnJveWFsdHktZnJlZQotcGF0ZW50IGxpY2Vuc2UgdW5kZXIgTGljZW5zZWQgUGF0ZW50cyB0byBtYWtlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNlbGwsIGltcG9ydAotYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2ggQ29udHJpYnV0b3IsIGlmIGFueSwgaW4gc291cmNlCi1jb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIHBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbgotb2YgdGhlIENvbnRyaWJ1dGlvbiBhbmQgdGhlIFByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMgYWRkZWQKLWJ5IHRoZSBDb250cmlidXRvciwgc3VjaCBhZGRpdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGNhdXNlcyBzdWNoIGNvbWJpbmF0aW9uCi10byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvCi1hbnkgb3RoZXIgY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUgdGhlIENvbnRyaWJ1dGlvbi4gTm8gaGFyZHdhcmUgcGVyIHNlIGlzCi1saWNlbnNlZCBoZXJldW5kZXIuIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmMpCi1SZWNpcGllbnQgdW5kZXJzdGFuZHMgdGhhdCBhbHRob3VnaCBlYWNoIENvbnRyaWJ1dG9yIGdyYW50cyB0aGUgbGljZW5zZXMgdG8gaXRzCi1Db250cmlidXRpb25zIHNldCBmb3J0aCBoZXJlaW4sIG5vIGFzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvcgotdGhhdCB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBpbmZyaW5nZSB0aGUgcGF0ZW50IG9yIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eQotcmlnaHRzIG9mIGFueSBvdGhlciBlbnRpdHkuIEVhY2ggQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8gUmVjaXBpZW50Ci1mb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsCi1wcm9wZXJ0eSByaWdodHMgb3Igb3RoZXJ3aXNlLiBBcyBhIGNvbmRpdGlvbiB0byBleGVyY2lzaW5nIHRoZSByaWdodHMgYW5kCi1saWNlbnNlcyBncmFudGVkIGhlcmV1bmRlciwgZWFjaCBSZWNpcGllbnQgaGVyZWJ5IGFzc3VtZXMgc29sZSByZXNwb25zaWJpbGl0eQotdG8gc2VjdXJlIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwKLWlmIGEgdGhpcmQgcGFydHkgcGF0ZW50IGxpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgUmVjaXBpZW50IHRvIGRpc3RyaWJ1dGUKLXRoZSBQcm9ncmFtLCBpdCBpcyBSZWNpcGllbnQncyByZXNwb25zaWJpbGl0eSB0byBhY3F1aXJlIHRoYXQgbGljZW5zZSBiZWZvcmUKLWRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5kKQotRWFjaCBDb250cmlidXRvciByZXByZXNlbnRzIHRoYXQgdG8gaXRzIGtub3dsZWRnZSBpdCBoYXMgc3VmZmljaWVudCBjb3B5cmlnaHQKLXJpZ2h0cyBpbiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIHRvIGdyYW50IHRoZSBjb3B5cmlnaHQgbGljZW5zZSBzZXQgZm9ydGggaW4KLXRoaXMgQWdyZWVtZW50LiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+My4gUkVRVUlSRU1FTlRTPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QSBDb250cmlidXRvciBtYXkgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgdGhlCi1Qcm9ncmFtIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDo8L3NwYW4+Ci08L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBjb21wbGllcyB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudDsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLWl0cyBsaWNlbnNlIGFncmVlbWVudDo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotZWZmZWN0aXZlbHkgZGlzY2xhaW1zIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCB3YXJyYW50aWVzIGFuZAotY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiB0aXRsZQotYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZCBpbXBsaWVkIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiBtZXJjaGFudGFiaWxpdHkKLWFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZTsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1lZmZlY3RpdmVseSBleGNsdWRlcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgbGlhYmlsaXR5IGZvciBkYW1hZ2VzLAotaW5jbHVkaW5nIGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsIGluY2lkZW50YWwgYW5kIGNvbnNlcXVlbnRpYWwgZGFtYWdlcywgc3VjaAotYXMgbG9zdCBwcm9maXRzOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paWkpCi1zdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIEFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0Ci1Db250cmlidXRvciBhbG9uZSBhbmQgbm90IGJ5IGFueSBvdGhlciBwYXJ0eTsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aXYpCi1zdGF0ZXMgdGhhdCBzb3VyY2UgY29kZSBmb3IgdGhlIFByb2dyYW0gaXMgYXZhaWxhYmxlIGZyb20gc3VjaCBDb250cmlidXRvciwgYW5kCi1pbmZvcm1zIGxpY2Vuc2VlcyBob3cgdG8gb2J0YWluIGl0IGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhCi1tZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgZXhjaGFuZ2UuPHNwYW4gc3R5bGU9J2NvbG9yOmJsdWUnPiA8L3NwYW4+PC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPldoZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlCi1jb2RlIGZvcm06PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMgQWdyZWVtZW50OyBhbmQgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikgYQotY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29udHJpYnV0b3JzIG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIGFueQotY29weXJpZ2h0IG5vdGljZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVhY2ggQ29udHJpYnV0b3IgbXVzdCBpZGVudGlmeSBpdHNlbGYgYXMgdGhlCi1vcmlnaW5hdG9yIG9mIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgaW4gYSBtYW5uZXIgdGhhdCByZWFzb25hYmx5IGFsbG93cwotc3Vic2VxdWVudCBSZWNpcGllbnRzIHRvIGlkZW50aWZ5IHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBDb250cmlidXRpb24uIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz40LiBDT01NRVJDSUFMIERJU1RSSUJVVElPTjwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbW1lcmNpYWwgZGlzdHJpYnV0b3JzIG9mIHNvZnR3YXJlIG1heQotYWNjZXB0IGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyB3aXRoIHJlc3BlY3QgdG8gZW5kIHVzZXJzLCBidXNpbmVzcyBwYXJ0bmVycwotYW5kIHRoZSBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2UKLW9mIHRoZSBQcm9ncmFtLCB0aGUgQ29udHJpYnV0b3Igd2hvIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbAotcHJvZHVjdCBvZmZlcmluZyBzaG91bGQgZG8gc28gaW4gYSBtYW5uZXIgd2hpY2ggZG9lcyBub3QgY3JlYXRlIHBvdGVudGlhbAotbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIHN1Y2ggQ29udHJpYnV0b3IgKCZxdW90O0NvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yJnF1b3Q7KSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyCi1Db250cmlidXRvciAoJnF1b3Q7SW5kZW1uaWZpZWQgQ29udHJpYnV0b3ImcXVvdDspIGFnYWluc3QgYW55IGxvc3NlcywgZGFtYWdlcyBhbmQKLWNvc3RzIChjb2xsZWN0aXZlbHkgJnF1b3Q7TG9zc2VzJnF1b3Q7KSBhcmlzaW5nIGZyb20gY2xhaW1zLCBsYXdzdWl0cyBhbmQgb3RoZXIKLWxlZ2FsIGFjdGlvbnMgYnJvdWdodCBieSBhIHRoaXJkIHBhcnR5IGFnYWluc3QgdGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIHRvCi10aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvciBvbWlzc2lvbnMgb2Ygc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluCi1jb25uZWN0aW9uIHdpdGggaXRzIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdAotb2ZmZXJpbmcuIFRoZSBvYmxpZ2F0aW9ucyBpbiB0aGlzIHNlY3Rpb24gZG8gbm90IGFwcGx5IHRvIGFueSBjbGFpbXMgb3IgTG9zc2VzCi1yZWxhdGluZyB0byBhbnkgYWN0dWFsIG9yIGFsbGVnZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGluZnJpbmdlbWVudC4gSW4gb3JkZXIKLXRvIHF1YWxpZnksIGFuIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG11c3Q6IGEpIHByb21wdGx5IG5vdGlmeSB0aGUgQ29tbWVyY2lhbAotQ29udHJpYnV0b3IgaW4gd3JpdGluZyBvZiBzdWNoIGNsYWltLCBhbmQgYikgYWxsb3cgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IKLXRvIGNvbnRyb2wsIGFuZCBjb29wZXJhdGUgd2l0aCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiwgdGhlIGRlZmVuc2UgYW5kCi1hbnkgcmVsYXRlZCBzZXR0bGVtZW50IG5lZ290aWF0aW9ucy4gVGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG1heSBwYXJ0aWNpcGF0ZQotaW4gYW55IHN1Y2ggY2xhaW0gYXQgaXRzIG93biBleHBlbnNlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Rm9yIGV4YW1wbGUsIGEgQ29udHJpYnV0b3IgbWlnaHQgaW5jbHVkZSB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIFByb2R1Y3QgWC4gVGhhdCBDb250cmlidXRvciBpcyB0aGVuIGEKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmIHRoYXQgQ29tbWVyY2lhbCBDb250cmlidXRvciB0aGVuIG1ha2VzIHBlcmZvcm1hbmNlCi1jbGFpbXMsIG9yIG9mZmVycyB3YXJyYW50aWVzIHJlbGF0ZWQgdG8gUHJvZHVjdCBYLCB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kCi13YXJyYW50aWVzIGFyZSBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IncyByZXNwb25zaWJpbGl0eSBhbG9uZS4gVW5kZXIgdGhpcwotc2VjdGlvbiwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3Igd291bGQgaGF2ZSB0byBkZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlCi1vdGhlciBDb250cmlidXRvcnMgcmVsYXRlZCB0byB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kIHdhcnJhbnRpZXMsIGFuZCBpZiBhCi1jb3VydCByZXF1aXJlcyBhbnkgb3RoZXIgQ29udHJpYnV0b3IgdG8gcGF5IGFueSBkYW1hZ2VzIGFzIGEgcmVzdWx0LCB0aGUKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IgbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjUuIE5PIFdBUlJBTlRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBUSEUgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTiAmcXVvdDtBUyBJUyZxdW90OyBCQVNJUywgV0lUSE9VVAotV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVEIElOQ0xVRElORywKLVdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwKLU1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gRWFjaCBSZWNpcGllbnQgaXMgc29sZWx5Ci1yZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBhbmQgZGlzdHJpYnV0aW5nIHRoZQotUHJvZ3JhbSBhbmQgYXNzdW1lcyBhbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcwotQWdyZWVtZW50ICwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgcmlza3MgYW5kIGNvc3RzIG9mIHByb2dyYW0gZXJyb3JzLAotY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IKLWVxdWlwbWVudCwgYW5kIHVuYXZhaWxhYmlsaXR5IG9yIGludGVycnVwdGlvbiBvZiBvcGVyYXRpb25zLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ni4gRElTQ0xBSU1FUiBPRiBMSUFCSUxJVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIE5FSVRIRVIgUkVDSVBJRU5UIE5PUiBBTlkgQ09OVFJJQlVUT1JTIFNIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSBGT1IKLUFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotKElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLU9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi1ORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIERJU1RSSUJVVElPTiBPRgotVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCBIRVJFVU5ERVIsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjcuIEdFTkVSQUw8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIGludmFsaWQKLW9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yCi1lbmZvcmNlYWJpbGl0eSBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgYW5kIHdpdGhvdXQKLWZ1cnRoZXIgYWN0aW9uIGJ5IHRoZSBwYXJ0aWVzIGhlcmV0bywgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlCi1taW5pbXVtIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBSZWNpcGllbnQgaW5zdGl0dXRlcyBwYXRlbnQgbGl0aWdhdGlvbgotYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KQotYWxsZWdpbmcgdGhhdCB0aGUgUHJvZ3JhbSBpdHNlbGYgKGV4Y2x1ZGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIFByb2dyYW0gd2l0aAotb3RoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUpIGluZnJpbmdlcyBzdWNoIFJlY2lwaWVudCdzIHBhdGVudChzKSwgdGhlbiBzdWNoCi1SZWNpcGllbnQncyByaWdodHMgZ3JhbnRlZCB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlCi1zdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BbGwgUmVjaXBpZW50J3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50Ci1zaGFsbCB0ZXJtaW5hdGUgaWYgaXQgZmFpbHMgdG8gY29tcGx5IHdpdGggYW55IG9mIHRoZSBtYXRlcmlhbCB0ZXJtcyBvcgotY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlCi1wZXJpb2Qgb2YgdGltZSBhZnRlciBiZWNvbWluZyBhd2FyZSBvZiBzdWNoIG5vbmNvbXBsaWFuY2UuIElmIGFsbCBSZWNpcGllbnQncwotcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHRlcm1pbmF0ZSwgUmVjaXBpZW50IGFncmVlcyB0byBjZWFzZSB1c2UgYW5kCi1kaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLAotUmVjaXBpZW50J3Mgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYW5kIGFueSBsaWNlbnNlcyBncmFudGVkIGJ5Ci1SZWNpcGllbnQgcmVsYXRpbmcgdG8gdGhlIFByb2dyYW0gc2hhbGwgY29udGludWUgYW5kIHN1cnZpdmUuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZQotY29waWVzIG9mIHRoaXMgQWdyZWVtZW50LCBidXQgaW4gb3JkZXIgdG8gYXZvaWQgaW5jb25zaXN0ZW5jeSB0aGUgQWdyZWVtZW50IGlzCi1jb3B5cmlnaHRlZCBhbmQgbWF5IG9ubHkgYmUgbW9kaWZpZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXIuIFRoZSBBZ3JlZW1lbnQKLVN0ZXdhcmQgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIHB1Ymxpc2ggbmV3IHZlcnNpb25zIChpbmNsdWRpbmcgcmV2aXNpb25zKSBvZgotdGhpcyBBZ3JlZW1lbnQgZnJvbSB0aW1lIHRvIHRpbWUuIE5vIG9uZSBvdGhlciB0aGFuIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCBoYXMKLXRoZSByaWdodCB0byBtb2RpZnkgdGhpcyBBZ3JlZW1lbnQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgdGhlIGluaXRpYWwKLUFncmVlbWVudCBTdGV3YXJkLiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1heSBhc3NpZ24gdGhlIHJlc3BvbnNpYmlsaXR5IHRvCi1zZXJ2ZSBhcyB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgdG8gYSBzdWl0YWJsZSBzZXBhcmF0ZSBlbnRpdHkuIEVhY2ggbmV3IHZlcnNpb24KLW9mIHRoZSBBZ3JlZW1lbnQgd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBUaGUgUHJvZ3JhbQotKGluY2x1ZGluZyBDb250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gdGhlIHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgdW5kZXIgd2hpY2ggaXQgd2FzIHJlY2VpdmVkLiBJbiBhZGRpdGlvbiwgYWZ0ZXIgYSBuZXcgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCBpcyBwdWJsaXNoZWQsIENvbnRyaWJ1dG9yIG1heSBlbGVjdCB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKSB1bmRlciB0aGUgbmV3IHZlcnNpb24uIEV4Y2VwdCBhcyBleHByZXNzbHkgc3RhdGVkCi1pbiBTZWN0aW9ucyAyKGEpIGFuZCAyKGIpIGFib3ZlLCBSZWNpcGllbnQgcmVjZWl2ZXMgbm8gcmlnaHRzIG9yIGxpY2Vuc2VzIHRvCi10aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGFueSBDb250cmlidXRvciB1bmRlciB0aGlzIEFncmVlbWVudCwgd2hldGhlcgotZXhwcmVzc2x5LCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLiBBbGwgcmlnaHRzIGluIHRoZSBQcm9ncmFtIG5vdAotZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYXJlIHJlc2VydmVkLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhpcyBBZ3JlZW1lbnQgaXMgZ292ZXJuZWQgYnkgdGhlIGxhd3Mgb2YgdGhlCi1TdGF0ZSBvZiBOZXcgWW9yayBhbmQgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIG9mCi1BbWVyaWNhLiBObyBwYXJ0eSB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJyaW5nIGEgbGVnYWwgYWN0aW9uIHVuZGVyIHRoaXMKLUFncmVlbWVudCBtb3JlIHRoYW4gb25lIHllYXIgYWZ0ZXIgdGhlIGNhdXNlIG9mIGFjdGlvbiBhcm9zZS4gRWFjaCBwYXJ0eSB3YWl2ZXMKLWl0cyByaWdodHMgdG8gYSBqdXJ5IHRyaWFsIGluIGFueSByZXN1bHRpbmcgbGl0aWdhdGlvbi48L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsPjwhW2lmICFzdXBwb3J0RW1wdHlQYXJhc10+Jm5ic3A7PCFbZW5kaWZdPjxvOnA+PC9vOnA+PC9wPgotCi08L2Rpdj4KLQotPC9ib2R5PgotCi08L2h0bWw+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyYTk0ZDUuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIGZlYXR1cmUucHJvcGVydGllcwotIyBjb250YWlucyBleHRlcm5hbGl6ZWQgc3RyaW5ncyBmb3IgZmVhdHVyZS54bWwKLSMgIiVmb28iIGluIGZlYXR1cmUueG1sIGNvcnJlc3BvbmRzIHRvIHRoZSBrZXkgImZvbyIgaW4gdGhpcyBmaWxlCi0jIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCi0jIFRoaXMgZmlsZSBzaG91bGQgYmUgdHJhbnNsYXRlZC4KLQotIyAiZmVhdHVyZU5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgZmVhdHVyZQotZmVhdHVyZU5hbWU9V1NUIFdTIENvcmUgRGV2ZWxvcGVyIFJlc291cmNlcwotCi0jICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKLQotIyAidXBkYXRlU2l0ZU5hbWUiIHByb3BlcnR5IC0gbGFiZWwgZm9yIHRoZSB1cGRhdGUgc2l0ZQotdXBkYXRlU2l0ZU5hbWU9VGhlIEVjbGlwc2UgV2ViIFRvb2xzIFBsYXRmb3JtIChXVFApIFByb2plY3QgdXBkYXRlIHNpdGUKLQotIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKLWRlc2NyaXB0aW9uPVNvdXJjZSBjb2RlIHppcHMgZm9yIFdTVCBXUyBjb3JlLgotCi0jICJjb3B5cmlnaHQiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIENvcHlyaWdodCIKLWNvcHlyaWdodD1cCi1Db3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuXG5cCi1BbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzXG5cCi1hcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjBcblwKLXdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0XG5cCi1odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbFxuXAotXG5cCi1Db250cmlidXRvcnM6XG5cCi0gICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uXG4KLSMjIyMjIyMjIyMjIyMjIyMgZW5kIG9mIGNvcHlyaWdodCBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCi0jIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKLWxpY2Vuc2VVUkw9bGljZW5zZS5odG1sCi0KLSMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCi0jIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKLWxpY2Vuc2U9XAotRUNMSVBTRSBGT1VOREFUSU9OIFNPRlRXQVJFIFVTRVIgQUdSRUVNRU5UXG5cCi1KdW5lIDA2LCAyMDA3XG5cCi1cblwKLVVzYWdlIE9mIENvbnRlbnRcblwKLVxuXAotVEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIEFORC9PUlxuXAotT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUyAoQ09MTEVDVElWRUxZICJDT05URU5UIikuXG5cCi1VU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVNcblwKLUFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUlxuXAotTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVVxuXAotQUdSRUUgVEhBVCBZT1VSIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVFxuXAotQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFNcblwKLU9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFXG5cCi1URVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TXG5cCi1PRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRFxuXAotQkVMT1csIFRIRU4gWU9VIE1BWSBOT1QgVVNFIFRIRSBDT05URU5ULlxuXAotXG5cCi1BcHBsaWNhYmxlIExpY2Vuc2VzXG5cCi1cblwKLVVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uXG5cCi1pcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpY1xuXAotTGljZW5zZSBWZXJzaW9uIDEuMCAoIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXNcblwKLUNvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLlxuXAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuXG5cCi1cblwKLUNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLFxuXAotZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZS5vcmcgQ1ZTXG5cCi1yZXBvc2l0b3J5ICgiUmVwb3NpdG9yeSIpIGluIENWUyBtb2R1bGVzICgiTW9kdWxlcyIpIGFuZCBtYWRlIGF2YWlsYWJsZVxuXAotYXMgZG93bmxvYWRhYmxlIGFyY2hpdmVzICgiRG93bmxvYWRzIikuXG5cCi1cblwKLSAgIC0gQ29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZyxcblwKLSAgICAgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiBUeXBpY2FsIG1vZHVsZXMgbWF5IGluY2x1ZGUgcGx1Zy1pbnMgKCJQbHVnLWlucyIpLFxuXAotICAgICBwbHVnLWluIGZyYWdtZW50cyAoIkZyYWdtZW50cyIpLCBhbmQgZmVhdHVyZXMgKCJGZWF0dXJlcyIpLlxuXAotICAgLSBFYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmE/IEFSY2hpdmUpXG5cCi0gICAgIGluIGEgZGlyZWN0b3J5IG5hbWVkICJwbHVnaW5zIi5cblwKLSAgIC0gQSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWQgbWF0ZXJpYWwuXG5cCi0gICAgIEVhY2ggRmVhdHVyZSBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IGluIGEgZGlyZWN0b3J5IG5hbWVkICJmZWF0dXJlcyIuXG5cCi0gICAgIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvblxuXAotICAgICBudW1iZXJzIG9mIHRoZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuXG5cCi0gICAtIEZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlc1xuXAotICAgICBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIEZpbGVzIG5hbWVkXG5cCi0iZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZlxuXAotSW5jbHVkZWQgRmVhdHVyZXMuXG5cCi1cblwKLVRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmVcblwKLWNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAiYWJvdXQuaHRtbCIgKCJBYm91dHMiKS4gVGhlIHRlcm1zIGFuZFxuXAotY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kIEluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWRcblwKLWluIGZpbGVzIG5hbWVkICJsaWNlbnNlLmh0bWwiICgiRmVhdHVyZSBMaWNlbnNlcyIpLiBBYm91dHMgYW5kIEZlYXR1cmVcblwKLUxpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSBkaXJlY3Rvcnkgb2YgYSBEb3dubG9hZCBvciBNb2R1bGVcblwKLWluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOlxuXAotXG5cCi0gICAtIFRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeVxuXAotICAgLSBQbHVnLWluIGFuZCBGcmFnbWVudCBkaXJlY3Rvcmllc1xuXAotICAgLSBJbnNpZGUgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBwYWNrYWdlZCBhcyBKQVJzXG5cCi0gICAtIFN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICJzcmMiIG9mIGNlcnRhaW4gUGx1Zy1pbnNcblwKLSAgIC0gRmVhdHVyZSBkaXJlY3Rvcmllc1xuXAotXG5cCi1Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlXG5cCi1FY2xpcHNlIFVwZGF0ZSBNYW5hZ2VyLCB5b3UgbXVzdCBhZ3JlZSB0byBhIGxpY2Vuc2UgKCJGZWF0dXJlIFVwZGF0ZVxuXAotTGljZW5zZSIpIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MuIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zXG5cCi1JbmNsdWRlZCBGZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdVxuXAotd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIHRoZSBJbmNsdWRlZCBGZWF0dXJlcyBvciBpbmZvcm1cblwKLXlvdSB3aGVyZSB5b3UgY2FuIGxvY2F0ZSB0aGVtLiBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBtYXkgYmUgZm91bmQgaW5cblwKLXRoZSAibGljZW5zZSIgcHJvcGVydHkgb2YgZmlsZXMgbmFtZWQgImZlYXR1cmUucHJvcGVydGllcyIuIFN1Y2ggQWJvdXRzLFxuXAotRmVhdHVyZSBMaWNlbnNlcyBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgYW5kIGNvbmRpdGlvbnMpIHRoYXQgZ292ZXJuIHlvdXJcblwKLXVzZSBvZiB0aGUgYXNzb2NpYXRlZCBDb250ZW50IGluIHRoYXQgZGlyZWN0b3J5LlxuXAotXG5cCi1USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTIEFORCBGRUFUVVJFIFVQREFURSBMSUNFTlNFUyBNQVkgUkVGRVJcblwKLVRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLlxuXAotU09NRSBPRiBUSEVTRSBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOlxuXAotXG5cCi0gICAgLSBDb21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbClcblwKLSAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFKVxuXAotICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKVxuXAotICAgIC0gSUJNIFB1YmxpYyBMaWNlbnNlIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sKVxuXAotICAgIC0gTWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwpXG5cCi0gICAgLSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sKVxuXAotICAgIC0gQ29tbW9uIERldmVsb3BtZW50IGFuZCBEaXN0cmlidXRpb24gTGljZW5zZSAoQ0RETCkgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnN1bi5jb20vY2RkbC9jZGRsLmh0bWwpXG5cCi1cblwKLUlUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1JcblwKLVRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlXG5cCi1pcyBwcm92aWRlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9uc1xuXAotZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LlxuXAotXG5cCi1DcnlwdG9ncmFwaHlcblwKLVxuXAotQ29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlXG5cCi1jdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsXG5cCi1hbmQvb3IgcmUtZXhwb3J0IHRvIGFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFXG5cCi11c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cyxcblwKLXJlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIG9yIHVzZSxcblwKLWFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLlxuXAotXG5cCi1KYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC5cbgotIyMjIyMjIyMjIyMgZW5kIG9mIGxpY2Vuc2UgcHJvcGVydHkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9saWNlbnNlLmh0bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9saWNlbnNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlYzRhNDguLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvbGljZW5zZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5FY2xpcHNlLm9yZyBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvdGl0bGU+Ci08L2hlYWQ+Ci0KLTxib2R5IGxhbmc9IkVOLVVTIiBsaW5rPWJsdWUgdmxpbms9cHVycGxlPgotPGgyPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvaDI+Ci08cD5KdW5lIDA2LCAyMDA3PC9wPgotCi08aDM+VXNhZ2UgT2YgQ29udGVudDwvaDM+Ci0KLTxwPlRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1IgT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUwotICAgKENPTExFQ1RJVkVMWSAmcXVvdDtDT05URU5UJnF1b3Q7KS4gIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQKLSAgIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VIEFHUkVFIFRIQVQgWU9VUiBVU0UKLSAgIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SCi0gICBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQKLSAgIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1csIFRIRU4gWU9VIE1BWSBOT1QgVVNFIFRIRSBDT05URU5ULjwvcD4KLSAgIAotPGgzPkFwcGxpY2FibGUgTGljZW5zZXM8L2gzPiAgIAotICAgCi08cD5Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wCi0gICAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpcyBDb250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotICAgRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KLQotPHA+Q29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWUyByZXBvc2l0b3J5ICgmcXVvdDtSZXBvc2l0b3J5JnF1b3Q7KSBpbiBDVlMKLSAgIG1vZHVsZXMgKCZxdW90O01vZHVsZXMmcXVvdDspIGFuZCBtYWRlIGF2YWlsYWJsZSBhcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCZxdW90O0Rvd25sb2FkcyZxdW90OykuPC9wPgotICAgCi08dWw+Ci0JPGxpPkNvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoJnF1b3Q7UGx1Zy1pbnMmcXVvdDspLCBwbHVnLWluIGZyYWdtZW50cyAoJnF1b3Q7RnJhZ21lbnRzJnF1b3Q7KSwgYW5kIGZlYXR1cmVzICgmcXVvdDtGZWF0dXJlcyZxdW90OykuPC9saT4KLQk8bGk+RWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhJnRyYWRlOyBBUmNoaXZlKSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtwbHVnaW5zJnF1b3Q7LjwvbGk+Ci0JPGxpPkEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7ZmVhdHVyZXMmcXVvdDsuICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zCi0gICAgICBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuPC9saT4KLQk8bGk+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoJnF1b3Q7SW5jbHVkZWQgRmVhdHVyZXMmcXVvdDspLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuPC9saT4KLTwvdWw+ICAgCi0gCi08cD5UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAmcXVvdDthYm91dC5odG1sJnF1b3Q7ICgmcXVvdDtBYm91dHMmcXVvdDspLiBUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZAotSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAmcXVvdDtsaWNlbnNlLmh0bWwmcXVvdDsgKCZxdW90O0ZlYXR1cmUgTGljZW5zZXMmcXVvdDspLiAgQWJvdXRzIGFuZCBGZWF0dXJlIExpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSBkaXJlY3Rvcnkgb2YgYSBEb3dubG9hZCBvciBNb2R1bGUKLWluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOjwvcD4KLQotPHVsPgotCTxsaT5UaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3Rvcnk8L2xpPgotCTxsaT5QbHVnLWluIGFuZCBGcmFnbWVudCBkaXJlY3RvcmllczwvbGk+Ci0JPGxpPkluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnM8L2xpPgotCTxsaT5TdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtzcmMmcXVvdDsgb2YgY2VydGFpbiBQbHVnLWluczwvbGk+Ci0JPGxpPkZlYXR1cmUgZGlyZWN0b3JpZXM8L2xpPgotPC91bD4KLQkJCi08cD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlIEVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoJnF1b3Q7RmVhdHVyZSBVcGRhdGUgTGljZW5zZSZxdW90OykgZHVyaW5nIHRoZQotaW5zdGFsbGF0aW9uIHByb2Nlc3MuICBJZiB0aGUgRmVhdHVyZSBjb250YWlucyBJbmNsdWRlZCBGZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdSB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yCi1pbmZvcm0geW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uICBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBtYXkgYmUgZm91bmQgaW4gdGhlICZxdW90O2xpY2Vuc2UmcXVvdDsgcHJvcGVydHkgb2YgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS5wcm9wZXJ0aWVzJnF1b3Q7IGZvdW5kIHdpdGhpbiBhIEZlYXR1cmUuCi1TdWNoIEFib3V0cywgRmVhdHVyZSBMaWNlbnNlcywgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgYW5kIGNvbmRpdGlvbnMpIHRoYXQgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4KLXRoYXQgZGlyZWN0b3J5LjwvcD4KLQotPHA+VEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUywgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUiBUTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy4gIFNPTUUgT0YgVEhFU0UKLU9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6PC9wPgotCi08dWw+Ci0JPGxpPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbDwvYT4pPC9saT4KLQk8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFPC9hPik8L2xpPgotCTxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMDwvYT4pPC9saT4KLQk8bGk+SUJNIFB1YmxpYyBMaWNlbnNlIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sIj5odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbDwvYT4pPC9saT4JCi0JPGxpPk1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sIj5odHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbDwvYT4pPC9saT4KLQk8bGk+TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbCI+aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sPC9hPik8L2xpPgotICA8TEk+Q29tbW9uIERldmVsb3BtZW50IGFuZCBEaXN0cmlidXRpb24gTGljZW5zZSAoQ0RETCkgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5zdW4uY29tL2NkZGwvY2RkbC5odG1sIj5odHRwOi8vd3d3LnN1bi5jb20vY2RkbC9jZGRsLmh0bWwpPC9BPgotICA8L0xJPgotPC9VTD4KLQotPHA+SVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUiBUTyBVU0UgT0YgVEhFIENPTlRFTlQuICBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlLCBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIGlzIHByb3ZpZGVkLCBwbGVhc2UKLWNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuPC9wPgotCi08aDM+Q3J5cHRvZ3JhcGh5PC9oMz4KLQotPHA+Q29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSwgYW5kL29yIHJlLWV4cG9ydCB0bwotICAgYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkUgdXNpbmcgYW55IGVuY3J5cHRpb24gc29mdHdhcmUsIHBsZWFzZSBjaGVjayB0aGUgY291bnRyeSdzIGxhd3MsIHJlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsCi0gICBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLjwvcD4KLSAgIAotPHNtYWxsPkphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLjwvc21hbGw+ICAgCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0Lmh0bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlODFkNDYuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci08Ym9keSBsYW5nPSJFTi1VUyI+Ci08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KLQotPFA+SnVuZSwgMjAwODwvUD4JCi08aDM+TGljZW5zZTwvaDM+Ci0KLTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+Ci0KLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQotaW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQuPC9wPgotCi08aDM+U291cmNlIENvZGU8L2gzPgotPHA+VGhpcyBwbHVnLWluIGNvbnRhaW5zIHNvdXJjZSBjb2RlIHppcCBmaWxlcyAoJnF1b3Q7U291cmNlIFppcHMmcXVvdDspIHRoYXQgY29ycmVzcG9uZCB0byBiaW5hcnkgY29udGVudCBpbiBvdGhlciBwbHVnLWlucy4gVGhlc2UgU291cmNlIFppcHMgbWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIGRpZmZlcmVudCBsaWNlbnNlCi1hZ3JlZW1lbnRzIGFuZC9vciBub3RpY2VzLiBEZXRhaWxzIGFib3V0IHRoZXNlIGxpY2Vuc2UgYWdyZWVtZW50cyBhbmQgbm90aWNlcyBhcmUgY29udGFpbmVkIGluICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgZmlsZXMgKCZxdW90O0Fib3V0cyZxdW90OykgbG9jYXRlZCBpbiBzdWItZGlyZWN0b3JpZXMgaW4gdGhlCi1zcmMvIGRpcmVjdG9yeSBvZiB0aGlzIHBsdWctaW4uIFN1Y2ggQWJvdXRzIGdvdmVybiB5b3VyIHVzZSBvZiB0aGUgU291cmNlIFppcHMgaW4gdGhhdCBkaXJlY3RvcnksIG5vdCB0aGUgRVBMLjwvcD4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9hYm91dC5pbmkgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0LmluaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRhNWE0MC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0LmluaQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSMgYWJvdXQuaW5pCi0jIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGEgZmVhdHVyZQotIyBqYXZhLmlvLlByb3BlcnRpZXMgZmlsZSAoSVNPIDg4NTktMSB3aXRoICJcIiBlc2NhcGVzKQotIyAiJWtleSIgYXJlIGV4dGVybmFsaXplZCBzdHJpbmdzIGRlZmluZWQgaW4gYWJvdXQucHJvcGVydGllcwotIyBUaGlzIGZpbGUgZG9lcyBub3QgbmVlZCB0byBiZSB0cmFuc2xhdGVkLgotCi0jIFByb3BlcnR5ICJhYm91dFRleHQiIGNvbnRhaW5zIGJsdXJiIGZvciAiQWJvdXQiIGRpYWxvZyAodHJhbnNsYXRlZCkKLWFib3V0VGV4dD0lYmx1cmIKLQotIyBQcm9wZXJ0eSAid2luZG93SW1hZ2UiIGNvbnRhaW5zIHBhdGggdG8gd2luZG93IGljb24gKDE2eDE2KQotIyBuZWVkZWQgZm9yIHByaW1hcnkgZmVhdHVyZXMgb25seQotCi0jIFByb3BlcnR5ICJmZWF0dXJlSW1hZ2UiIGNvbnRhaW5zIHBhdGggdG8gZmVhdHVyZSBpbWFnZSAoMzJ4MzIpCi1mZWF0dXJlSW1hZ2U9d3RwX3Byb2QzMi5wbmcKLQotIyBQcm9wZXJ0eSAiYWJvdXRJbWFnZSIgY29udGFpbnMgcGF0aCB0byBwcm9kdWN0IGltYWdlICg1MDB4MzMwIG9yIDExNXgxNjQpCi0jIG5lZWRlZCBmb3IgcHJpbWFyeSBmZWF0dXJlcyBvbmx5Ci0KLSMgUHJvcGVydHkgImFwcE5hbWUiIGNvbnRhaW5zIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uIChub3QgdHJhbnNsYXRlZCkKLSMgbmVlZGVkIGZvciBwcmltYXJ5IGZlYXR1cmVzIG9ubHkKLQotIyBQcm9wZXJ0eSAid2VsY29tZVBhZ2UiIGNvbnRhaW5zIHBhdGggdG8gd2VsY29tZSBwYWdlIChzcGVjaWFsIFhNTC1iYXNlZCBmb3JtYXQpCi0jIG9wdGlvbmFsCi0KLSMgUHJvcGVydHkgIndlbGNvbWVQZXJzcGVjdGl2ZSIgY29udGFpbnMgdGhlIGlkIG9mIHRoZSBwZXJzcGVjdGl2ZSBpbiB3aGljaCB0aGUKLSMgd2VsY29tZSBwYWdlIGlzIHRvIGJlIG9wZW5lZC4KLSMgb3B0aW9uYWwKLQotCi0KLQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9hYm91dC5tYXBwaW5ncyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vYWJvdXQubWFwcGluZ3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZmI3MzUuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9hYm91dC5tYXBwaW5ncworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyBhYm91dC5tYXBwaW5ncw0KLSMgY29udGFpbnMgZmlsbC1pbnMgZm9yIGFib3V0LnByb3BlcnRpZXMNCi0jIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpDQotIyBUaGlzIGZpbGUgZG9lcyBub3QgbmVlZCB0byBiZSB0cmFuc2xhdGVkLg0KLQ0KLTA9QGJ1aWxkQA0KZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vYWJvdXQucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vYWJvdXQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkwZGE4NS4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0LnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBhYm91dC5wcm9wZXJ0aWVzCi0jIGNvbnRhaW5zIGV4dGVybmFsaXplZCBzdHJpbmdzIGZvciBhYm91dC5pbmkKLSMgamF2YS5pby5Qcm9wZXJ0aWVzIGZpbGUgKElTTyA4ODU5LTEgd2l0aCAiXCIgZXNjYXBlcykKLSMgZmlsbC1pbnMgYXJlIHN1cHBsaWVkIGJ5IGFib3V0Lm1hcHBpbmdzCi0jIFRoaXMgZmlsZSBzaG91bGQgYmUgdHJhbnNsYXRlZC4KLSMKLSMgRG8gbm90IHRyYW5zbGF0ZSBhbnkgdmFsdWVzIHN1cnJvdW5kZWQgYnkge30KLQotYmx1cmI9V2ViIFN0YW5kYXJkIFRvb2xzIC0gV2ViIFNlcnZpY2UgQ29yZVxuXAotXG5cCi1WZXJzaW9uOiB7ZmVhdHVyZVZlcnNpb259XG5cCi1CdWlsZCBpZDogezB9XG5cCi1cblwKLShjKSBDb3B5cmlnaHQgRWNsaXBzZSBjb250cmlidXRvcnMgYW5kIG90aGVycyAyMDA1LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblwKLVZpc2l0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMKLQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9idWlsZC5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWQ1MTJkLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gYWJvdXQuaHRtbCwgYWJvdXQuaW5pLCBhYm91dC5tYXBwaW5ncywgYWJvdXQucHJvcGVydGllcywgd3RwX3Byb2QzMi5wbmcsIHBsdWdpbi5wcm9wZXJ0aWVzLCBwbHVnaW4ueG1sLCBzcmMvKiosIE1FVEEtSU5GLwotc291cmNlUGx1Z2luID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9wbHVnaW4ucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMzlkMGYuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1wbHVnaW5OYW1lPVdlYiBTdGFuZGFyZCBUb29scyAtIFdlYiBTZXJ2aWNlIENvcmUgU291cmNlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vd3RwX3Byb2QzMi5naWYgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL3d0cF9wcm9kMzIuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWZiNDRhLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vd3RwX3Byb2QzMi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL3d0cF9wcm9kMzIucG5nIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi93dHBfcHJvZDMyLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjZWFiMy4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL3d0cF9wcm9kMzIucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlLy5jdnNpZ25vcmUgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfc2RrLmZlYXR1cmUvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg2NjcxZC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfc2RrLmZlYXR1cmUvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotYnVpbGQueG1sCi1mZWF0dXJlcwotcGx1Z2lucwotb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlXzEuMC4wLmJpbi5kaXN0LnppcApkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlLy5wcm9qZWN0IGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2ViZWU3Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19zZGsuZmVhdHVyZS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53c19zZGsuZmVhdHVyZTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLkZlYXR1cmVOYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19zZGsuZmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNmY4MGYuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IGZlYXR1cmUueG1sLFwKLSAgICAgICAgICAgICAgIGxpY2Vuc2UuaHRtbCxcCi0gICAgICAgICAgICAgICBlcGwtdjEwLmh0bWwsXAotICAgICAgICAgICAgICAgZWNsaXBzZV91cGRhdGVfMTIwLmpwZyxcCi0gICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMKLQotZ2VuZXJhdGUuZmVhdHVyZUBvcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS5zb3VyY2U9b3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUsIGZlYXR1cmVAb3JnLmVjbGlwc2Uud3N0LndzX2NvcmUuZmVhdHVyZS5zb3VyY2UKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19zZGsuZmVhdHVyZS9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZGY3MDguLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfc2RrLmZlYXR1cmUvZXBsLXYxMC5odG1sIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlL2VwbC12MTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0YjE5Ni4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfc2RrLmZlYXR1cmUvZXBsLXYxMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLTxodG1sIHhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIKLXhtbG5zOnc9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmQiCi14bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+Ci0KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+Ci08bWV0YSBuYW1lPVByb2dJZCBjb250ZW50PVdvcmQuRG9jdW1lbnQ+Ci08bWV0YSBuYW1lPUdlbmVyYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxtZXRhIG5hbWU9T3JpZ2luYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxsaW5rIHJlbD1GaWxlLUxpc3QKLWhyZWY9Ii4vRWNsaXBzZSUyMEVQTCUyMDIwMDNfMTFfMTAlMjBGaW5hbF9maWxlcy9maWxlbGlzdC54bWwiPgotPHRpdGxlPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSBWZXJzaW9uIDEuMDwvdGl0bGU+Ci08IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8bzpEb2N1bWVudFByb3BlcnRpZXM+Ci0gIDxvOlJldmlzaW9uPjI8L286UmV2aXNpb24+Ci0gIDxvOlRvdGFsVGltZT4zPC9vOlRvdGFsVGltZT4KLSAgPG86Q3JlYXRlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpDcmVhdGVkPgotICA8bzpMYXN0U2F2ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286TGFzdFNhdmVkPgotICA8bzpQYWdlcz40PC9vOlBhZ2VzPgotICA8bzpXb3Jkcz4xNjI2PC9vOldvcmRzPgotICA8bzpDaGFyYWN0ZXJzPjkyNzA8L286Q2hhcmFjdGVycz4KLSAgIDxvOkxpbmVzPjc3PC9vOkxpbmVzPgotICA8bzpQYXJhZ3JhcGhzPjE4PC9vOlBhcmFncmFwaHM+Ci0gIDxvOkNoYXJhY3RlcnNXaXRoU3BhY2VzPjExMzg0PC9vOkNoYXJhY3RlcnNXaXRoU3BhY2VzPgotICA8bzpWZXJzaW9uPjkuNDQwMjwvbzpWZXJzaW9uPgotIDwvbzpEb2N1bWVudFByb3BlcnRpZXM+Ci08L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8dzpXb3JkRG9jdW1lbnQ+Ci0gIDx3OlRyYWNrUmV2aXNpb25zLz4KLSA8L3c6V29yZERvY3VtZW50PgotPC94bWw+PCFbZW5kaWZdLS0+Ci08c3R5bGU+Ci08IS0tCi0gLyogRm9udCBEZWZpbml0aW9ucyAqLwotQGZvbnQtZmFjZQotCXtmb250LWZhbWlseTpUYWhvbWE7Ci0JcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7Ci0JbXNvLWZvbnQtY2hhcnNldDowOwotCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOwotCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOwotCW1zby1mb250LXNpZ25hdHVyZTo1NTM2Nzk0OTUgLTIxNDc0ODM2NDggOCAwIDY2MDQ3IDA7fQotIC8qIFN0eWxlIERlZmluaXRpb25zICovCi1wLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCi0Je21zby1zdHlsZS1wYXJlbnQ6IiI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcAotCXttYXJnaW4tcmlnaHQ6MGluOwotCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOwotCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOwotCW1hcmdpbi1sZWZ0OjBpbjsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wLkJhbGxvb25UZXh0LCBsaS5CYWxsb29uVGV4dCwgZGl2LkJhbGxvb25UZXh0Ci0Je21zby1zdHlsZS1uYW1lOiJCYWxsb29uIFRleHQiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6OC4wcHQ7Ci0JZm9udC1mYW1pbHk6VGFob21hOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLUBwYWdlIFNlY3Rpb24xCi0Je3NpemU6OC41aW4gMTEuMGluOwotCW1hcmdpbjoxLjBpbiAxLjI1aW4gMS4waW4gMS4yNWluOwotCW1zby1oZWFkZXItbWFyZ2luOi41aW47Ci0JbXNvLWZvb3Rlci1tYXJnaW46LjVpbjsKLQltc28tcGFwZXItc291cmNlOjA7fQotZGl2LlNlY3Rpb24xCi0Je3BhZ2U6U2VjdGlvbjE7fQotLS0+Ci08L3N0eWxlPgotPC9oZWFkPgotCi08Ym9keSBsYW5nPUVOLVVTIHN0eWxlPSd0YWItaW50ZXJ2YWw6LjVpbic+Ci0KLTxkaXYgY2xhc3M9U2VjdGlvbjE+Ci0KLTxwIGFsaWduPWNlbnRlciBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXInPjxiPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSB2IDEuMDwvYj4KLTwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRIRSBBQ0NPTVBBTllJTkcgUFJPR1JBTSBJUyBQUk9WSURFRCBVTkRFUgotVEhFIFRFUk1TIE9GIFRISVMgRUNMSVBTRSBQVUJMSUMgTElDRU5TRSAoJnF1b3Q7QUdSRUVNRU5UJnF1b3Q7KS4gQU5ZIFVTRSwKLVJFUFJPRFVDVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gQ09OU1RJVFVURVMgUkVDSVBJRU5UJ1MgQUNDRVBUQU5DRQotT0YgVEhJUyBBR1JFRU1FTlQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4xLiBERUZJTklUSU9OUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dGlvbiZxdW90OyBtZWFuczo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWluIHRoZSBjYXNlIG9mIHRoZSBpbml0aWFsIENvbnRyaWJ1dG9yLCB0aGUgaW5pdGlhbCBjb2RlIGFuZCBkb2N1bWVudGF0aW9uCi1kaXN0cmlidXRlZCB1bmRlciB0aGlzIEFncmVlbWVudCwgYW5kPGJyIGNsZWFyPWxlZnQ+Ci1iKSBpbiB0aGUgY2FzZSBvZiBlYWNoIHN1YnNlcXVlbnQgQ29udHJpYnV0b3I6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOzwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPndoZXJlCi1zdWNoIGNoYW5nZXMgYW5kL29yIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSBvcmlnaW5hdGUgZnJvbSBhbmQgYXJlIGRpc3RyaWJ1dGVkCi1ieSB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IuIEEgQ29udHJpYnV0aW9uICdvcmlnaW5hdGVzJyBmcm9tIGEgQ29udHJpYnV0b3IKLWlmIGl0IHdhcyBhZGRlZCB0byB0aGUgUHJvZ3JhbSBieSBzdWNoIENvbnRyaWJ1dG9yIGl0c2VsZiBvciBhbnlvbmUgYWN0aW5nIG9uCi1zdWNoIENvbnRyaWJ1dG9yJ3MgYmVoYWxmLiBDb250cmlidXRpb25zIGRvIG5vdCBpbmNsdWRlIGFkZGl0aW9ucyB0byB0aGUKLVByb2dyYW0gd2hpY2g6IChpKSBhcmUgc2VwYXJhdGUgbW9kdWxlcyBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZCBpbiBjb25qdW5jdGlvbgotd2l0aCB0aGUgUHJvZ3JhbSB1bmRlciB0aGVpciBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIGFuZCAoaWkpIGFyZSBub3QgZGVyaXZhdGl2ZQotd29ya3Mgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRvciZxdW90OyBtZWFucyBhbnkgcGVyc29uIG9yCi1lbnRpdHkgdGhhdCBkaXN0cmlidXRlcyB0aGUgUHJvZ3JhbS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0xpY2Vuc2VkIFBhdGVudHMgJnF1b3Q7IG1lYW4gcGF0ZW50Ci1jbGFpbXMgbGljZW5zYWJsZSBieSBhIENvbnRyaWJ1dG9yIHdoaWNoIGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIHVzZQotb3Igc2FsZSBvZiBpdHMgQ29udHJpYnV0aW9uIGFsb25lIG9yIHdoZW4gY29tYmluZWQgd2l0aCB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1Byb2dyYW0mcXVvdDsgbWVhbnMgdGhlIENvbnRyaWJ1dGlvbnMKLWRpc3RyaWJ1dGVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzIEFncmVlbWVudC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1JlY2lwaWVudCZxdW90OyBtZWFucyBhbnlvbmUgd2hvCi1yZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIEFncmVlbWVudCwgaW5jbHVkaW5nIGFsbCBDb250cmlidXRvcnMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4yLiBHUkFOVCBPRiBSSUdIVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIFJlY2lwaWVudAotYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0bzxzcGFuCi1zdHlsZT0nY29sb3I6cmVkJz4gPC9zcGFuPnJlcHJvZHVjZSwgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mLCBwdWJsaWNseQotZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgZGlzdHJpYnV0ZSBhbmQgc3VibGljZW5zZSB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2gKLUNvbnRyaWJ1dG9yLCBpZiBhbnksIGFuZCBzdWNoIGRlcml2YXRpdmUgd29ya3MsIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZQotZm9ybS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cwotUmVjaXBpZW50IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+IDwvc3Bhbj5yb3lhbHR5LWZyZWUKLXBhdGVudCBsaWNlbnNlIHVuZGVyIExpY2Vuc2VkIFBhdGVudHMgdG8gbWFrZSwgdXNlLCBzZWxsLCBvZmZlciB0byBzZWxsLCBpbXBvcnQKLWFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGluIHNvdXJjZQotY29kZSBhbmQgb2JqZWN0IGNvZGUgZm9ybS4gVGhpcyBwYXRlbnQgbGljZW5zZSBzaGFsbCBhcHBseSB0byB0aGUgY29tYmluYXRpb24KLW9mIHRoZSBDb250cmlidXRpb24gYW5kIHRoZSBQcm9ncmFtIGlmLCBhdCB0aGUgdGltZSB0aGUgQ29udHJpYnV0aW9uIGlzIGFkZGVkCi1ieSB0aGUgQ29udHJpYnV0b3IsIHN1Y2ggYWRkaXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBjYXVzZXMgc3VjaCBjb21iaW5hdGlvbgotdG8gYmUgY292ZXJlZCBieSB0aGUgTGljZW5zZWQgUGF0ZW50cy4gVGhlIHBhdGVudCBsaWNlbnNlIHNoYWxsIG5vdCBhcHBseSB0bwotYW55IG90aGVyIGNvbWJpbmF0aW9ucyB3aGljaCBpbmNsdWRlIHRoZSBDb250cmlidXRpb24uIE5vIGhhcmR3YXJlIHBlciBzZSBpcwotbGljZW5zZWQgaGVyZXVuZGVyLiA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5jKQotUmVjaXBpZW50IHVuZGVyc3RhbmRzIHRoYXQgYWx0aG91Z2ggZWFjaCBDb250cmlidXRvciBncmFudHMgdGhlIGxpY2Vuc2VzIHRvIGl0cwotQ29udHJpYnV0aW9ucyBzZXQgZm9ydGggaGVyZWluLCBubyBhc3N1cmFuY2VzIGFyZSBwcm92aWRlZCBieSBhbnkgQ29udHJpYnV0b3IKLXRoYXQgdGhlIFByb2dyYW0gZG9lcyBub3QgaW5mcmluZ2UgdGhlIHBhdGVudCBvciBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkKLXJpZ2h0cyBvZiBhbnkgb3RoZXIgZW50aXR5LiBFYWNoIENvbnRyaWJ1dG9yIGRpc2NsYWltcyBhbnkgbGlhYmlsaXR5IHRvIFJlY2lwaWVudAotZm9yIGNsYWltcyBicm91Z2h0IGJ5IGFueSBvdGhlciBlbnRpdHkgYmFzZWQgb24gaW5mcmluZ2VtZW50IG9mIGludGVsbGVjdHVhbAotcHJvcGVydHkgcmlnaHRzIG9yIG90aGVyd2lzZS4gQXMgYSBjb25kaXRpb24gdG8gZXhlcmNpc2luZyB0aGUgcmlnaHRzIGFuZAotbGljZW5zZXMgZ3JhbnRlZCBoZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieSBhc3N1bWVzIHNvbGUgcmVzcG9uc2liaWxpdHkKLXRvIHNlY3VyZSBhbnkgb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBuZWVkZWQsIGlmIGFueS4gRm9yIGV4YW1wbGUsCi1pZiBhIHRoaXJkIHBhcnR5IHBhdGVudCBsaWNlbnNlIGlzIHJlcXVpcmVkIHRvIGFsbG93IFJlY2lwaWVudCB0byBkaXN0cmlidXRlCi10aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gYWNxdWlyZSB0aGF0IGxpY2Vuc2UgYmVmb3JlCi1kaXN0cmlidXRpbmcgdGhlIFByb2dyYW0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+ZCkKLUVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQgaGFzIHN1ZmZpY2llbnQgY29weXJpZ2h0Ci1yaWdodHMgaW4gaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCB0byBncmFudCB0aGUgY29weXJpZ2h0IGxpY2Vuc2Ugc2V0IGZvcnRoIGluCi10aGlzIEFncmVlbWVudC4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjMuIFJFUVVJUkVNRU5UUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkEgQ29udHJpYnV0b3IgbWF5IGNob29zZSB0byBkaXN0cmlidXRlIHRoZQotUHJvZ3JhbSBpbiBvYmplY3QgY29kZSBmb3JtIHVuZGVyIGl0cyBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIHByb3ZpZGVkIHRoYXQ6PC9zcGFuPgotPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgY29tcGxpZXMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQ7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1pdHMgbGljZW5zZSBhZ3JlZW1lbnQ6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgd2FycmFudGllcyBhbmQKLWNvbmRpdGlvbnMsIGV4cHJlc3MgYW5kIGltcGxpZWQsIGluY2x1ZGluZyB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgdGl0bGUKLWFuZCBub24taW5mcmluZ2VtZW50LCBhbmQgaW1wbGllZCB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgbWVyY2hhbnRhYmlsaXR5Ci1hbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2U7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotZWZmZWN0aXZlbHkgZXhjbHVkZXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIGxpYWJpbGl0eSBmb3IgZGFtYWdlcywKLWluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLCBpbmNpZGVudGFsIGFuZCBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIHN1Y2gKLWFzIGxvc3QgcHJvZml0czsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWlpKQotc3RhdGVzIHRoYXQgYW55IHByb3Zpc2lvbnMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyBBZ3JlZW1lbnQgYXJlIG9mZmVyZWQgYnkgdGhhdAotQ29udHJpYnV0b3IgYWxvbmUgYW5kIG5vdCBieSBhbnkgb3RoZXIgcGFydHk7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPml2KQotc3RhdGVzIHRoYXQgc291cmNlIGNvZGUgZm9yIHRoZSBQcm9ncmFtIGlzIGF2YWlsYWJsZSBmcm9tIHN1Y2ggQ29udHJpYnV0b3IsIGFuZAotaW5mb3JtcyBsaWNlbnNlZXMgaG93IHRvIG9idGFpbiBpdCBpbiBhIHJlYXNvbmFibGUgbWFubmVyIG9uIG9yIHRocm91Z2ggYQotbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGV4Y2hhbmdlLjxzcGFuIHN0eWxlPSdjb2xvcjpibHVlJz4gPC9zcGFuPjwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5XaGVuIHRoZSBQcm9ncmFtIGlzIG1hZGUgYXZhaWxhYmxlIGluIHNvdXJjZQotY29kZSBmb3JtOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGlzIEFncmVlbWVudDsgYW5kIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpIGEKLWNvcHkgb2YgdGhpcyBBZ3JlZW1lbnQgbXVzdCBiZSBpbmNsdWRlZCB3aXRoIGVhY2ggY29weSBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbnRyaWJ1dG9ycyBtYXkgbm90IHJlbW92ZSBvciBhbHRlciBhbnkKLWNvcHlyaWdodCBub3RpY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FYWNoIENvbnRyaWJ1dG9yIG11c3QgaWRlbnRpZnkgaXRzZWxmIGFzIHRoZQotb3JpZ2luYXRvciBvZiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIGluIGEgbWFubmVyIHRoYXQgcmVhc29uYWJseSBhbGxvd3MKLXN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeSB0aGUgb3JpZ2luYXRvciBvZiB0aGUgQ29udHJpYnV0aW9uLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT048L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db21tZXJjaWFsIGRpc3RyaWJ1dG9ycyBvZiBzb2Z0d2FyZSBtYXkKLWFjY2VwdCBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgd2l0aCByZXNwZWN0IHRvIGVuZCB1c2VycywgYnVzaW5lc3MgcGFydG5lcnMKLWFuZCB0aGUgbGlrZS4gV2hpbGUgdGhpcyBsaWNlbnNlIGlzIGludGVuZGVkIHRvIGZhY2lsaXRhdGUgdGhlIGNvbW1lcmNpYWwgdXNlCi1vZiB0aGUgUHJvZ3JhbSwgdGhlIENvbnRyaWJ1dG9yIHdobyBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwKLXByb2R1Y3Qgb2ZmZXJpbmcgc2hvdWxkIGRvIHNvIGluIGEgbWFubmVyIHdoaWNoIGRvZXMgbm90IGNyZWF0ZSBwb3RlbnRpYWwKLWxpYWJpbGl0eSBmb3Igb3RoZXIgQ29udHJpYnV0b3JzLiBUaGVyZWZvcmUsIGlmIGEgQ29udHJpYnV0b3IgaW5jbHVkZXMgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBzdWNoIENvbnRyaWJ1dG9yICgmcXVvdDtDb21tZXJjaWFsCi1Db250cmlidXRvciZxdW90OykgaGVyZWJ5IGFncmVlcyB0byBkZWZlbmQgYW5kIGluZGVtbmlmeSBldmVyeSBvdGhlcgotQ29udHJpYnV0b3IgKCZxdW90O0luZGVtbmlmaWVkIENvbnRyaWJ1dG9yJnF1b3Q7KSBhZ2FpbnN0IGFueSBsb3NzZXMsIGRhbWFnZXMgYW5kCi1jb3N0cyAoY29sbGVjdGl2ZWx5ICZxdW90O0xvc3NlcyZxdW90OykgYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kIG90aGVyCi1sZWdhbCBhY3Rpb25zIGJyb3VnaHQgYnkgYSB0aGlyZCBwYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciB0bwotdGhlIGV4dGVudCBjYXVzZWQgYnkgdGhlIGFjdHMgb3Igb21pc3Npb25zIG9mIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvciBpbgotY29ubmVjdGlvbiB3aXRoIGl0cyBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3QKLW9mZmVyaW5nLiBUaGUgb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zIG9yIExvc3NlcwotcmVsYXRpbmcgdG8gYW55IGFjdHVhbCBvciBhbGxlZ2VkIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBpbmZyaW5nZW1lbnQuIEluIG9yZGVyCi10byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciBtdXN0OiBhKSBwcm9tcHRseSBub3RpZnkgdGhlIENvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCBjbGFpbSwgYW5kIGIpIGFsbG93IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yCi10byBjb250cm9sLCBhbmQgY29vcGVyYXRlIHdpdGggdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4sIHRoZSBkZWZlbnNlIGFuZAotYW55IHJlbGF0ZWQgc2V0dGxlbWVudCBuZWdvdGlhdGlvbnMuIFRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciBtYXkgcGFydGljaXBhdGUKLWluIGFueSBzdWNoIGNsYWltIGF0IGl0cyBvd24gZXhwZW5zZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkZvciBleGFtcGxlLCBhIENvbnRyaWJ1dG9yIG1pZ2h0IGluY2x1ZGUgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yLiBJZiB0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbiBtYWtlcyBwZXJmb3JtYW5jZQotY2xhaW1zLCBvciBvZmZlcnMgd2FycmFudGllcyByZWxhdGVkIHRvIFByb2R1Y3QgWCwgdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZAotd2FycmFudGllcyBhcmUgc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yJ3MgcmVzcG9uc2liaWxpdHkgYWxvbmUuIFVuZGVyIHRoaXMKLXNlY3Rpb24sIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHdvdWxkIGhhdmUgdG8gZGVmZW5kIGNsYWltcyBhZ2FpbnN0IHRoZQotb3RoZXIgQ29udHJpYnV0b3JzIHJlbGF0ZWQgdG8gdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzLCBhbmQgaWYgYQotY291cnQgcmVxdWlyZXMgYW55IG90aGVyIENvbnRyaWJ1dG9yIHRvIHBheSBhbnkgZGFtYWdlcyBhcyBhIHJlc3VsdCwgdGhlCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yIG11c3QgcGF5IHRob3NlIGRhbWFnZXMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz41LiBOTyBXQVJSQU5UWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgVEhFIFBST0dSQU0gSVMgUFJPVklERUQgT04gQU4gJnF1b3Q7QVMgSVMmcXVvdDsgQkFTSVMsIFdJVEhPVVQKLVdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCBJTkNMVURJTkcsCi1XSVRIT1VUIExJTUlUQVRJT04sIEFOWSBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsCi1NRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIEVhY2ggUmVjaXBpZW50IGlzIHNvbGVseQotcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgYW5kIGRpc3RyaWJ1dGluZyB0aGUKLVByb2dyYW0gYW5kIGFzc3VtZXMgYWxsIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBpdHMgZXhlcmNpc2Ugb2YgcmlnaHRzIHVuZGVyIHRoaXMKLUFncmVlbWVudCAsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIHJpc2tzIGFuZCBjb3N0cyBvZiBwcm9ncmFtIGVycm9ycywKLWNvbXBsaWFuY2Ugd2l0aCBhcHBsaWNhYmxlIGxhd3MsIGRhbWFnZSB0byBvciBsb3NzIG9mIGRhdGEsIHByb2dyYW1zIG9yCi1lcXVpcG1lbnQsIGFuZCB1bmF2YWlsYWJpbGl0eSBvciBpbnRlcnJ1cHRpb24gb2Ygb3BlcmF0aW9ucy4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjYuIERJU0NMQUlNRVIgT0YgTElBQklMSVRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBORUlUSEVSIFJFQ0lQSUVOVCBOT1IgQU5ZIENPTlRSSUJVVE9SUyBTSEFMTCBIQVZFIEFOWSBMSUFCSUxJVFkgRk9SCi1BTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLShJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIExPU1QgUFJPRklUUyksIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi1PRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwotTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPUiBESVNUUklCVVRJT04gT0YKLVRIRSBQUk9HUkFNIE9SIFRIRSBFWEVSQ0lTRSBPRiBBTlkgUklHSFRTIEdSQU5URUQgSEVSRVVOREVSLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz43LiBHRU5FUkFMPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBpbnZhbGlkCi1vciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFwcGxpY2FibGUgbGF3LCBpdCBzaGFsbCBub3QgYWZmZWN0IHRoZSB2YWxpZGl0eSBvcgotZW5mb3JjZWFiaWxpdHkgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGFuZCB3aXRob3V0Ci1mdXJ0aGVyIGFjdGlvbiBieSB0aGUgcGFydGllcyBoZXJldG8sIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZQotbWluaW11bSBleHRlbnQgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VjaCBwcm92aXNpb24gdmFsaWQgYW5kIGVuZm9yY2VhYmxlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgUmVjaXBpZW50IGluc3RpdHV0ZXMgcGF0ZW50IGxpdGlnYXRpb24KLWFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkKLWFsbGVnaW5nIHRoYXQgdGhlIFByb2dyYW0gaXRzZWxmIChleGNsdWRpbmcgY29tYmluYXRpb25zIG9mIHRoZSBQcm9ncmFtIHdpdGgKLW90aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlKSBpbmZyaW5nZXMgc3VjaCBSZWNpcGllbnQncyBwYXRlbnQocyksIHRoZW4gc3VjaAotUmVjaXBpZW50J3MgcmlnaHRzIGdyYW50ZWQgdW5kZXIgU2VjdGlvbiAyKGIpIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZQotc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QWxsIFJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudAotc2hhbGwgdGVybWluYXRlIGlmIGl0IGZhaWxzIHRvIGNvbXBseSB3aXRoIGFueSBvZiB0aGUgbWF0ZXJpYWwgdGVybXMgb3IKLWNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQgYW5kIGRvZXMgbm90IGN1cmUgc3VjaCBmYWlsdXJlIGluIGEgcmVhc29uYWJsZQotcGVyaW9kIG9mIHRpbWUgYWZ0ZXIgYmVjb21pbmcgYXdhcmUgb2Ygc3VjaCBub25jb21wbGlhbmNlLiBJZiBhbGwgUmVjaXBpZW50J3MKLXJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCB0ZXJtaW5hdGUsIFJlY2lwaWVudCBhZ3JlZXMgdG8gY2Vhc2UgdXNlIGFuZAotZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGFzIHNvb24gYXMgcmVhc29uYWJseSBwcmFjdGljYWJsZS4gSG93ZXZlciwKLVJlY2lwaWVudCdzIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFuZCBhbnkgbGljZW5zZXMgZ3JhbnRlZCBieQotUmVjaXBpZW50IHJlbGF0aW5nIHRvIHRoZSBQcm9ncmFtIHNoYWxsIGNvbnRpbnVlIGFuZCBzdXJ2aXZlLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUKLWNvcGllcyBvZiB0aGlzIEFncmVlbWVudCwgYnV0IGluIG9yZGVyIHRvIGF2b2lkIGluY29uc2lzdGVuY3kgdGhlIEFncmVlbWVudCBpcwotY29weXJpZ2h0ZWQgYW5kIG1heSBvbmx5IGJlIG1vZGlmaWVkIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyLiBUaGUgQWdyZWVtZW50Ci1TdGV3YXJkIHJlc2VydmVzIHRoZSByaWdodCB0byBwdWJsaXNoIG5ldyB2ZXJzaW9ucyAoaW5jbHVkaW5nIHJldmlzaW9ucykgb2YKLXRoaXMgQWdyZWVtZW50IGZyb20gdGltZSB0byB0aW1lLiBObyBvbmUgb3RoZXIgdGhhbiB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgaGFzCi10aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMgQWdyZWVtZW50LiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHRoZSBpbml0aWFsCi1BZ3JlZW1lbnQgU3Rld2FyZC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYXkgYXNzaWduIHRoZSByZXNwb25zaWJpbGl0eSB0bwotc2VydmUgYXMgdGhlIEFncmVlbWVudCBTdGV3YXJkIHRvIGEgc3VpdGFibGUgc2VwYXJhdGUgZW50aXR5LiBFYWNoIG5ldyB2ZXJzaW9uCi1vZiB0aGUgQWdyZWVtZW50IHdpbGwgYmUgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gVGhlIFByb2dyYW0KLShpbmNsdWRpbmcgQ29udHJpYnV0aW9ucykgbWF5IGFsd2F5cyBiZSBkaXN0cmlidXRlZCBzdWJqZWN0IHRvIHRoZSB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IHVuZGVyIHdoaWNoIGl0IHdhcyByZWNlaXZlZC4gSW4gYWRkaXRpb24sIGFmdGVyIGEgbmV3IHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgaXMgcHVibGlzaGVkLCBDb250cmlidXRvciBtYXkgZWxlY3QgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQotKGluY2x1ZGluZyBpdHMgQ29udHJpYnV0aW9ucykgdW5kZXIgdGhlIG5ldyB2ZXJzaW9uLiBFeGNlcHQgYXMgZXhwcmVzc2x5IHN0YXRlZAotaW4gU2VjdGlvbnMgMihhKSBhbmQgMihiKSBhYm92ZSwgUmVjaXBpZW50IHJlY2VpdmVzIG5vIHJpZ2h0cyBvciBsaWNlbnNlcyB0bwotdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBhbnkgQ29udHJpYnV0b3IgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIHdoZXRoZXIKLWV4cHJlc3NseSwgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yIG90aGVyd2lzZS4gQWxsIHJpZ2h0cyBpbiB0aGUgUHJvZ3JhbSBub3QKLWV4cHJlc3NseSBncmFudGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFyZSByZXNlcnZlZC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRoaXMgQWdyZWVtZW50IGlzIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZQotU3RhdGUgb2YgTmV3IFlvcmsgYW5kIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZgotQW1lcmljYS4gTm8gcGFydHkgdG8gdGhpcyBBZ3JlZW1lbnQgd2lsbCBicmluZyBhIGxlZ2FsIGFjdGlvbiB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgbW9yZSB0aGFuIG9uZSB5ZWFyIGFmdGVyIHRoZSBjYXVzZSBvZiBhY3Rpb24gYXJvc2UuIEVhY2ggcGFydHkgd2FpdmVzCi1pdHMgcmlnaHRzIHRvIGEganVyeSB0cmlhbCBpbiBhbnkgcmVzdWx0aW5nIGxpdGlnYXRpb24uPC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbD48IVtpZiAhc3VwcG9ydEVtcHR5UGFyYXNdPiZuYnNwOzwhW2VuZGlmXT48bzpwPjwvbzpwPjwvcD4KLQotPC9kaXY+Ci0KLTwvYm9keT4KLQotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19zZGsuZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfc2RrLmZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzA1YzI2Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19zZGsuZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgZmVhdHVyZS5wcm9wZXJ0aWVzCi0jIGNvbnRhaW5zIGV4dGVybmFsaXplZCBzdHJpbmdzIGZvciBmZWF0dXJlLnhtbAotIyAiJWZvbyIgaW4gZmVhdHVyZS54bWwgY29ycmVzcG9uZHMgdG8gdGhlIGtleSAiZm9vIiBpbiB0aGlzIGZpbGUKLSMgamF2YS5pby5Qcm9wZXJ0aWVzIGZpbGUgKElTTyA4ODU5LTEgd2l0aCAiXCIgZXNjYXBlcykKLSMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgotCi0jICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCi1mZWF0dXJlTmFtZT1XU1QgV2ViIFNlcnZpY2VzIFBsdWctaW4gRGV2ZWxvcGVyIFJlc291cmNlcwotCi0jICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKLQotIyAidXBkYXRlU2l0ZU5hbWUiIHByb3BlcnR5IC0gbGFiZWwgZm9yIHRoZSB1cGRhdGUgc2l0ZQotdXBkYXRlU2l0ZU5hbWU9VGhlIEVjbGlwc2UgV2ViIFRvb2xzIFBsYXRmb3JtIChXVFApIFByb2plY3QgdXBkYXRlIHNpdGUKLQotIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKLWRlc2NyaXB0aW9uPVNvdXJjZSBjb2RlIHppcHMgZm9yIHRoZSBXU1QgV2ViIHNlcnZpY2VzIHRvb2xzCi0KLSMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgotY29weXJpZ2h0PVwKLUNvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy5cblwKLUFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKLWFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAotd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCi1cblwKLUNvbnRyaWJ1dG9yczpcblwKLSAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb25cbgotIyMjIyMjIyMjIyMjIyMjIyBlbmQgb2YgY29weXJpZ2h0IHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jICJsaWNlbnNlVVJMIiBwcm9wZXJ0eSAtIFVSTCBvZiB0aGUgIkZlYXR1cmUgTGljZW5zZSIKLSMgZG8gbm90IHRyYW5zbGF0ZSB2YWx1ZSAtIGp1c3QgY2hhbmdlIHRvIHBvaW50IHRvIGEgbG9jYWxlLXNwZWNpZmljIEhUTUwgcGFnZQotbGljZW5zZVVSTD1saWNlbnNlLmh0bWwKLQotIyAibGljZW5zZSIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgTGljZW5zZSIKLSMgc2hvdWxkIGJlIHBsYWluIHRleHQgdmVyc2lvbiBvZiBsaWNlbnNlIGFncmVlbWVudCBwb2ludGVkIHRvIGJlICJsaWNlbnNlVVJMIgotbGljZW5zZT1cCi1FQ0xJUFNFIEZPVU5EQVRJT04gU09GVFdBUkUgVVNFUiBBR1JFRU1FTlRcblwKLUp1bmUgMDYsIDIwMDdcblwKLVxuXAotVXNhZ2UgT2YgQ29udGVudFxuXAotXG5cCi1USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCi1PVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKLVVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAotQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCi1OT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCi1BR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCi1BTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAotT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKLU9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCi1CRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCi1cblwKLUFwcGxpY2FibGUgTGljZW5zZXNcblwKLVxuXAotVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb25cblwKLWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljXG5cCi1MaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpc1xuXAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKLVxuXAotQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCi1kb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlNcblwKLXJlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCi1hcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKLVxuXAotICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAotICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCi0gICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCi0gICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YT8gQVJjaGl2ZSlcblwKLSAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAotICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKLSAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKLSAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCi0gICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKLSAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCi0gICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWRcblwKLSJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mXG5cCi1JbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAotY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAotaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAotTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCi1cblwKLSAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCi0gICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCi0gICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKLSAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAotICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCi1cblwKLU5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKLUVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlXG5cCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKLUluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCi13aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoteW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAotdGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsXG5cCi1GZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91clxuXAotdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCi1cblwKLVRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAotVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCi1TT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCi1cblwKLSAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAotICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCi0gICAgLSBJQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwpXG5cCi0gICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKLSAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCi0gICAgLSBDb21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIChDRERMKSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19zZGsuZmVhdHVyZS9mZWF0dXJlLnhtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c19zZGsuZmVhdHVyZS9mZWF0dXJlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5NGM0Zi4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfc2RrLmZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3Nfc2RrLmZlYXR1cmUiCi0gICAgICBsYWJlbD0iJWZlYXR1cmVOYW1lIgotICAgICAgdmVyc2lvbj0iMy4xLjAucXVhbGlmaWVyIgotICAgICAgcHJvdmlkZXItbmFtZT0iJXByb3ZpZGVyTmFtZSI+Ci0KLSAgIDxkZXNjcmlwdGlvbj4KLSAgICAgICVkZXNjcmlwdGlvbgotICAgPC9kZXNjcmlwdGlvbj4KLQotICAgPGNvcHlyaWdodD4KLSAgICAgICVjb3B5cmlnaHQKLSAgIDwvY29weXJpZ2h0PgotCi0gICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KLSAgICAgICVsaWNlbnNlCi0gICA8L2xpY2Vuc2U+Ci0KLSAgIDx1cmw+Ci0gICAgICA8dXBkYXRlIGxhYmVsPSIldXBkYXRlU2l0ZU5hbWUiIHVybD0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3dlYnRvb2xzL3VwZGF0ZXMvIi8+Ci0gICA8L3VybD4KLQotICAgPGluY2x1ZGVzCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi0gICA8aW5jbHVkZXMKLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS5zb3VyY2UiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmFwaS5kb2MiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NkbC5kb2MuaXN2IgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi08L2ZlYXR1cmU+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfc2RrLmZlYXR1cmUvbGljZW5zZS5odG1sIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Nkay5mZWF0dXJlL2xpY2Vuc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY0NDU5OC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfc2RrLmZlYXR1cmUvbGljZW5zZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzNjLm9yZy9UUi8xOTk5L1JFQy1odG1sNDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+Ci08IS0tIHNhdmVkIGZyb20gdXJsPSgwMDQ0KWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsL25vdGljZS5odG1sIC0tPgotPEhUTUw+PEhFQUQ+PFRJVExFPkVjbGlwc2Uub3JnIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9USVRMRT4KLTxNRVRBIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTxNRVRBIGNvbnRlbnQ9Ik1TSFRNTCA2LjAwLjI4MDAuMTQ3OSIgbmFtZT1HRU5FUkFUT1I+PC9IRUFEPgotPEJPRFkgbGFuZz1FTi1VUyB2TGluaz1wdXJwbGUgbGluaz1ibHVlPgotPEgyPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvSDI+Ci08UD5KdW5lIDA2LCAyMDA3PC9QPgotPEgzPlVzYWdlIE9mIENvbnRlbnQ8L0gzPgotPFA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIAotQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLiBVU0UgT0YgCi1USEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSAKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIAotQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCAKLUJZIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSAKLUFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEUgCi1URVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSAKLUFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1csIFRIRU4gWU9VIAotTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9QPgotPEgzPkFwcGxpY2FibGUgTGljZW5zZXM8L0gzPgotPFA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIAotRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIAotUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPEEgCi1ocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLTxQPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCAKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWUyByZXBvc2l0b3J5IAotKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSAKLWFyY2hpdmVzICgiRG93bmxvYWRzIikuPC9QPgotPFA+Q29udGVudCBtYXkgYmUgYXBwb3J0aW9uZWQgaW50byBwbHVnLWlucyAoIlBsdWctaW5zIiksIHBsdWctaW4gZnJhZ21lbnRzIAotKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS4gQSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIAotUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC4gRmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgCi1jb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyAKLWFzc29jaWF0ZWQgd2l0aCBhIEZlYXR1cmUuIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgYXJlIGxvY2F0ZWQgaW4gZGlyZWN0b3JpZXMgCi1uYW1lZCAicGx1Z2lucyIgYW5kIEZlYXR1cmVzIGFyZSBsb2NhdGVkIGluIGRpcmVjdG9yaWVzIG5hbWVkICJmZWF0dXJlcyIuPC9QPgotPFA+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIEZpbGVzIG5hbWVkIAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgCi1GZWF0dXJlcy48L1A+Ci08UD5UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlIGNvbnRhaW5lZCAKLWluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIAotRmVhdHVyZXMgYW5kIEluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgCi0oIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlIExpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSAKLWRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZSBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIAotbG9jYXRpb25zOjwvUD4KLTxVTD4KLSAgPExJPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeSAKLSAgPExJPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzIAotICA8TEk+U3ViZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zIAotICA8TEk+RmVhdHVyZSBkaXJlY3RvcmllcyA8L0xJPjwvVUw+Ci08UD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgCi11c2luZyB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGUgCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnMgSW5jbHVkZWQgCi1GZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdSB3aXRoIHRoZSB0ZXJtcyAKLWFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtIHlvdSB3aGVyZSB5b3UgY2FuIAotbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIAotZmlsZXMgbmFtZWQgImZlYXR1cmUucHJvcGVydGllcyIuIFN1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIAotVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgCi1hbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IAotZGlyZWN0b3J5LjwvUD4KLTxQPlRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUiBUTyBUSEUgRVBMIAotT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiBTT01FIE9GIFRIRVNFIAotT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L1A+Ci08VUw+Ci0gIDxMST5Db21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9BPikgCi0KLSAgPExJPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L0E+KSAKLQotICA8TEk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9BPikgCi0KLSAgPExJPklCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sPC9BPikgCi0KLSAgPExJPk1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbCI+aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWw8L0E+KSAKLQotICA8TEk+TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwiPmh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbDwvQT4pIAotICA8L0xJPgotICAgIAotICA8TEk+Q29tbW9uIERldmVsb3BtZW50IGFuZCBEaXN0cmlidXRpb24gTGljZW5zZSAoQ0RETCkgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5zdW4uY29tL2NkZGwvY2RkbC5odG1sIj5odHRwOi8vd3d3LnN1bi5jb20vY2RkbC9jZGRsLmh0bWwpPC9BPgotICA8L0xJPgotPC9VTD4KLTxQPklUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1IgCi1UTyBVU0UgT0YgVEhFIENPTlRFTlQuIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2Ugb3IgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBpcyAKLXByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCAKLWNvbmRpdGlvbnMgZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LjwvUD4KLTxIMz5DcnlwdG9ncmFwaHk8L0gzPgotPFA+Q29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlIAotY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgCi1yZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkUgdXNpbmcgYW55IAotZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIAotY29uY2VybmluZyB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgCi10byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9QPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdGVzdHMuZmVhdHVyZS8uY3ZzaWdub3JlIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJkNTZlNC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdGVzdHMuZmVhdHVyZS8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1idWlsZC54bWwKLW9yZy5lY2xpcHNlLndzdC53c190ZXN0cy5mZWF0dXJlXzEuMC4wLmJpbi5kaXN0LnppcApkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvLnByb2plY3QgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdGVzdHMuZmVhdHVyZS8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlMjM1NC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdGVzdHMuZmVhdHVyZS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53c190ZXN0cy5mZWF0dXJlPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLkZlYXR1cmVCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZU5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvYnVpbGQucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c190ZXN0cy5mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYjMzYWQuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gZmVhdHVyZS54bWwsXAotICAgICAgICAgICAgICAgbGljZW5zZS5odG1sLFwKLSAgICAgICAgICAgICAgIGVwbC12MTAuaHRtbCxcCi0gICAgICAgICAgICAgICBlY2xpcHNlX3VwZGF0ZV8xMjAuanBnLFwKLSAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c190ZXN0cy5mZWF0dXJlL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZGY3MDguLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c190ZXN0cy5mZWF0dXJlL2VwbC12MTAuaHRtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c190ZXN0cy5mZWF0dXJlL2VwbC12MTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0YjE5Ni4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdGVzdHMuZmVhdHVyZS9lcGwtdjEwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotPGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIgoteG1sbnM6dz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIKLXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4KLQotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KLTxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9V29yZC5Eb2N1bWVudD4KLTxtZXRhIG5hbWU9R2VuZXJhdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPG1ldGEgbmFtZT1PcmlnaW5hdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPGxpbmsgcmVsPUZpbGUtTGlzdAotaHJlZj0iLi9FY2xpcHNlJTIwRVBMJTIwMjAwM18xMV8xMCUyMEZpbmFsX2ZpbGVzL2ZpbGVsaXN0LnhtbCI+Ci08dGl0bGU+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIFZlcnNpb24gMS4wPC90aXRsZT4KLTwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDxvOkRvY3VtZW50UHJvcGVydGllcz4KLSAgPG86UmV2aXNpb24+MjwvbzpSZXZpc2lvbj4KLSAgPG86VG90YWxUaW1lPjM8L286VG90YWxUaW1lPgotICA8bzpDcmVhdGVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkNyZWF0ZWQ+Ci0gIDxvOkxhc3RTYXZlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpMYXN0U2F2ZWQ+Ci0gIDxvOlBhZ2VzPjQ8L286UGFnZXM+Ci0gIDxvOldvcmRzPjE2MjY8L286V29yZHM+Ci0gIDxvOkNoYXJhY3RlcnM+OTI3MDwvbzpDaGFyYWN0ZXJzPgotICAgPG86TGluZXM+Nzc8L286TGluZXM+Ci0gIDxvOlBhcmFncmFwaHM+MTg8L286UGFyYWdyYXBocz4KLSAgPG86Q2hhcmFjdGVyc1dpdGhTcGFjZXM+MTEzODQ8L286Q2hhcmFjdGVyc1dpdGhTcGFjZXM+Ci0gIDxvOlZlcnNpb24+OS40NDAyPC9vOlZlcnNpb24+Ci0gPC9vOkRvY3VtZW50UHJvcGVydGllcz4KLTwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDx3OldvcmREb2N1bWVudD4KLSAgPHc6VHJhY2tSZXZpc2lvbnMvPgotIDwvdzpXb3JkRG9jdW1lbnQ+Ci08L3htbD48IVtlbmRpZl0tLT4KLTxzdHlsZT4KLTwhLS0KLSAvKiBGb250IERlZmluaXRpb25zICovCi1AZm9udC1mYWNlCi0Je2ZvbnQtZmFtaWx5OlRhaG9tYTsKLQlwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDsKLQltc28tZm9udC1jaGFyc2V0OjA7Ci0JbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7Ci0JbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7Ci0JbXNvLWZvbnQtc2lnbmF0dXJlOjU1MzY3OTQ5NSAtMjE0NzQ4MzY0OCA4IDAgNjYwNDcgMDt9Ci0gLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KLXAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwKLQl7bXNvLXN0eWxlLXBhcmVudDoiIjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wCi0Je21hcmdpbi1yaWdodDowaW47Ci0JbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87Ci0JbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87Ci0JbWFyZ2luLWxlZnQ6MGluOwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAuQmFsbG9vblRleHQsIGxpLkJhbGxvb25UZXh0LCBkaXYuQmFsbG9vblRleHQKLQl7bXNvLXN0eWxlLW5hbWU6IkJhbGxvb24gVGV4dCI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZTo4LjBwdDsKLQlmb250LWZhbWlseTpUYWhvbWE7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotQHBhZ2UgU2VjdGlvbjEKLQl7c2l6ZTo4LjVpbiAxMS4waW47Ci0JbWFyZ2luOjEuMGluIDEuMjVpbiAxLjBpbiAxLjI1aW47Ci0JbXNvLWhlYWRlci1tYXJnaW46LjVpbjsKLQltc28tZm9vdGVyLW1hcmdpbjouNWluOwotCW1zby1wYXBlci1zb3VyY2U6MDt9Ci1kaXYuU2VjdGlvbjEKLQl7cGFnZTpTZWN0aW9uMTt9Ci0tLT4KLTwvc3R5bGU+Ci08L2hlYWQ+Ci0KLTxib2R5IGxhbmc9RU4tVVMgc3R5bGU9J3RhYi1pbnRlcnZhbDouNWluJz4KLQotPGRpdiBjbGFzcz1TZWN0aW9uMT4KLQotPHAgYWxpZ249Y2VudGVyIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcic+PGI+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIHYgMS4wPC9iPgotPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VEhFIEFDQ09NUEFOWUlORyBQUk9HUkFNIElTIFBST1ZJREVEIFVOREVSCi1USEUgVEVSTVMgT0YgVEhJUyBFQ0xJUFNFIFBVQkxJQyBMSUNFTlNFICgmcXVvdDtBR1JFRU1FTlQmcXVvdDspLiBBTlkgVVNFLAotUkVQUk9EVUNUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBDT05TVElUVVRFUyBSRUNJUElFTlQnUyBBQ0NFUFRBTkNFCi1PRiBUSElTIEFHUkVFTUVOVC48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjEuIERFRklOSVRJT05TPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0aW9uJnF1b3Q7IG1lYW5zOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaW4gdGhlIGNhc2Ugb2YgdGhlIGluaXRpYWwgQ29udHJpYnV0b3IsIHRoZSBpbml0aWFsIGNvZGUgYW5kIGRvY3VtZW50YXRpb24KLWRpc3RyaWJ1dGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBhbmQ8YnIgY2xlYXI9bGVmdD4KLWIpIGluIHRoZSBjYXNlIG9mIGVhY2ggc3Vic2VxdWVudCBDb250cmlidXRvcjo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotY2hhbmdlcyB0byB0aGUgUHJvZ3JhbSwgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1hZGRpdGlvbnMgdG8gdGhlIFByb2dyYW07PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+d2hlcmUKLXN1Y2ggY2hhbmdlcyBhbmQvb3IgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtIG9yaWdpbmF0ZSBmcm9tIGFuZCBhcmUgZGlzdHJpYnV0ZWQKLWJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4gQSBDb250cmlidXRpb24gJ29yaWdpbmF0ZXMnIGZyb20gYSBDb250cmlidXRvcgotaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24KLXN1Y2ggQ29udHJpYnV0b3IncyBiZWhhbGYuIENvbnRyaWJ1dGlvbnMgZG8gbm90IGluY2x1ZGUgYWRkaXRpb25zIHRvIHRoZQotUHJvZ3JhbSB3aGljaDogKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGluIGNvbmp1bmN0aW9uCi13aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93biBsaWNlbnNlIGFncmVlbWVudCwgYW5kIChpaSkgYXJlIG5vdCBkZXJpdmF0aXZlCi13b3JrcyBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dG9yJnF1b3Q7IG1lYW5zIGFueSBwZXJzb24gb3IKLWVudGl0eSB0aGF0IGRpc3RyaWJ1dGVzIHRoZSBQcm9ncmFtLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7TGljZW5zZWQgUGF0ZW50cyAmcXVvdDsgbWVhbiBwYXRlbnQKLWNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3Igd2hpY2ggYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlCi1vciBzYWxlIG9mIGl0cyBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UHJvZ3JhbSZxdW90OyBtZWFucyB0aGUgQ29udHJpYnV0aW9ucwotZGlzdHJpYnV0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoaXMgQWdyZWVtZW50Ljwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UmVjaXBpZW50JnF1b3Q7IG1lYW5zIGFueW9uZSB3aG8KLXJlY2VpdmVzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYWxsIENvbnRyaWJ1dG9ycy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjIuIEdSQU5UIE9GIFJJR0hUUzwvc3Bhbj48L2I+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgUmVjaXBpZW50Ci1hIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvPHNwYW4KLXN0eWxlPSdjb2xvcjpyZWQnPiA8L3NwYW4+cmVwcm9kdWNlLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YsIHB1YmxpY2x5Ci1kaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlIGFuZCBzdWJsaWNlbnNlIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaAotQ29udHJpYnV0b3IsIGlmIGFueSwgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlCi1mb3JtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzCi1SZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz4gPC9zcGFuPnJveWFsdHktZnJlZQotcGF0ZW50IGxpY2Vuc2UgdW5kZXIgTGljZW5zZWQgUGF0ZW50cyB0byBtYWtlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNlbGwsIGltcG9ydAotYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2ggQ29udHJpYnV0b3IsIGlmIGFueSwgaW4gc291cmNlCi1jb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIHBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbgotb2YgdGhlIENvbnRyaWJ1dGlvbiBhbmQgdGhlIFByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMgYWRkZWQKLWJ5IHRoZSBDb250cmlidXRvciwgc3VjaCBhZGRpdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGNhdXNlcyBzdWNoIGNvbWJpbmF0aW9uCi10byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvCi1hbnkgb3RoZXIgY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUgdGhlIENvbnRyaWJ1dGlvbi4gTm8gaGFyZHdhcmUgcGVyIHNlIGlzCi1saWNlbnNlZCBoZXJldW5kZXIuIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmMpCi1SZWNpcGllbnQgdW5kZXJzdGFuZHMgdGhhdCBhbHRob3VnaCBlYWNoIENvbnRyaWJ1dG9yIGdyYW50cyB0aGUgbGljZW5zZXMgdG8gaXRzCi1Db250cmlidXRpb25zIHNldCBmb3J0aCBoZXJlaW4sIG5vIGFzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvcgotdGhhdCB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBpbmZyaW5nZSB0aGUgcGF0ZW50IG9yIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eQotcmlnaHRzIG9mIGFueSBvdGhlciBlbnRpdHkuIEVhY2ggQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8gUmVjaXBpZW50Ci1mb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsCi1wcm9wZXJ0eSByaWdodHMgb3Igb3RoZXJ3aXNlLiBBcyBhIGNvbmRpdGlvbiB0byBleGVyY2lzaW5nIHRoZSByaWdodHMgYW5kCi1saWNlbnNlcyBncmFudGVkIGhlcmV1bmRlciwgZWFjaCBSZWNpcGllbnQgaGVyZWJ5IGFzc3VtZXMgc29sZSByZXNwb25zaWJpbGl0eQotdG8gc2VjdXJlIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwKLWlmIGEgdGhpcmQgcGFydHkgcGF0ZW50IGxpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgUmVjaXBpZW50IHRvIGRpc3RyaWJ1dGUKLXRoZSBQcm9ncmFtLCBpdCBpcyBSZWNpcGllbnQncyByZXNwb25zaWJpbGl0eSB0byBhY3F1aXJlIHRoYXQgbGljZW5zZSBiZWZvcmUKLWRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5kKQotRWFjaCBDb250cmlidXRvciByZXByZXNlbnRzIHRoYXQgdG8gaXRzIGtub3dsZWRnZSBpdCBoYXMgc3VmZmljaWVudCBjb3B5cmlnaHQKLXJpZ2h0cyBpbiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIHRvIGdyYW50IHRoZSBjb3B5cmlnaHQgbGljZW5zZSBzZXQgZm9ydGggaW4KLXRoaXMgQWdyZWVtZW50LiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+My4gUkVRVUlSRU1FTlRTPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QSBDb250cmlidXRvciBtYXkgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgdGhlCi1Qcm9ncmFtIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDo8L3NwYW4+Ci08L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBjb21wbGllcyB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudDsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLWl0cyBsaWNlbnNlIGFncmVlbWVudDo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotZWZmZWN0aXZlbHkgZGlzY2xhaW1zIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCB3YXJyYW50aWVzIGFuZAotY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiB0aXRsZQotYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZCBpbXBsaWVkIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiBtZXJjaGFudGFiaWxpdHkKLWFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZTsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1lZmZlY3RpdmVseSBleGNsdWRlcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgbGlhYmlsaXR5IGZvciBkYW1hZ2VzLAotaW5jbHVkaW5nIGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsIGluY2lkZW50YWwgYW5kIGNvbnNlcXVlbnRpYWwgZGFtYWdlcywgc3VjaAotYXMgbG9zdCBwcm9maXRzOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paWkpCi1zdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIEFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0Ci1Db250cmlidXRvciBhbG9uZSBhbmQgbm90IGJ5IGFueSBvdGhlciBwYXJ0eTsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aXYpCi1zdGF0ZXMgdGhhdCBzb3VyY2UgY29kZSBmb3IgdGhlIFByb2dyYW0gaXMgYXZhaWxhYmxlIGZyb20gc3VjaCBDb250cmlidXRvciwgYW5kCi1pbmZvcm1zIGxpY2Vuc2VlcyBob3cgdG8gb2J0YWluIGl0IGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhCi1tZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgZXhjaGFuZ2UuPHNwYW4gc3R5bGU9J2NvbG9yOmJsdWUnPiA8L3NwYW4+PC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPldoZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlCi1jb2RlIGZvcm06PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMgQWdyZWVtZW50OyBhbmQgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikgYQotY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29udHJpYnV0b3JzIG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIGFueQotY29weXJpZ2h0IG5vdGljZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVhY2ggQ29udHJpYnV0b3IgbXVzdCBpZGVudGlmeSBpdHNlbGYgYXMgdGhlCi1vcmlnaW5hdG9yIG9mIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgaW4gYSBtYW5uZXIgdGhhdCByZWFzb25hYmx5IGFsbG93cwotc3Vic2VxdWVudCBSZWNpcGllbnRzIHRvIGlkZW50aWZ5IHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBDb250cmlidXRpb24uIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz40LiBDT01NRVJDSUFMIERJU1RSSUJVVElPTjwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbW1lcmNpYWwgZGlzdHJpYnV0b3JzIG9mIHNvZnR3YXJlIG1heQotYWNjZXB0IGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyB3aXRoIHJlc3BlY3QgdG8gZW5kIHVzZXJzLCBidXNpbmVzcyBwYXJ0bmVycwotYW5kIHRoZSBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2UKLW9mIHRoZSBQcm9ncmFtLCB0aGUgQ29udHJpYnV0b3Igd2hvIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbAotcHJvZHVjdCBvZmZlcmluZyBzaG91bGQgZG8gc28gaW4gYSBtYW5uZXIgd2hpY2ggZG9lcyBub3QgY3JlYXRlIHBvdGVudGlhbAotbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIHN1Y2ggQ29udHJpYnV0b3IgKCZxdW90O0NvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yJnF1b3Q7KSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyCi1Db250cmlidXRvciAoJnF1b3Q7SW5kZW1uaWZpZWQgQ29udHJpYnV0b3ImcXVvdDspIGFnYWluc3QgYW55IGxvc3NlcywgZGFtYWdlcyBhbmQKLWNvc3RzIChjb2xsZWN0aXZlbHkgJnF1b3Q7TG9zc2VzJnF1b3Q7KSBhcmlzaW5nIGZyb20gY2xhaW1zLCBsYXdzdWl0cyBhbmQgb3RoZXIKLWxlZ2FsIGFjdGlvbnMgYnJvdWdodCBieSBhIHRoaXJkIHBhcnR5IGFnYWluc3QgdGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIHRvCi10aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvciBvbWlzc2lvbnMgb2Ygc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluCi1jb25uZWN0aW9uIHdpdGggaXRzIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdAotb2ZmZXJpbmcuIFRoZSBvYmxpZ2F0aW9ucyBpbiB0aGlzIHNlY3Rpb24gZG8gbm90IGFwcGx5IHRvIGFueSBjbGFpbXMgb3IgTG9zc2VzCi1yZWxhdGluZyB0byBhbnkgYWN0dWFsIG9yIGFsbGVnZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGluZnJpbmdlbWVudC4gSW4gb3JkZXIKLXRvIHF1YWxpZnksIGFuIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG11c3Q6IGEpIHByb21wdGx5IG5vdGlmeSB0aGUgQ29tbWVyY2lhbAotQ29udHJpYnV0b3IgaW4gd3JpdGluZyBvZiBzdWNoIGNsYWltLCBhbmQgYikgYWxsb3cgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IKLXRvIGNvbnRyb2wsIGFuZCBjb29wZXJhdGUgd2l0aCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiwgdGhlIGRlZmVuc2UgYW5kCi1hbnkgcmVsYXRlZCBzZXR0bGVtZW50IG5lZ290aWF0aW9ucy4gVGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG1heSBwYXJ0aWNpcGF0ZQotaW4gYW55IHN1Y2ggY2xhaW0gYXQgaXRzIG93biBleHBlbnNlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Rm9yIGV4YW1wbGUsIGEgQ29udHJpYnV0b3IgbWlnaHQgaW5jbHVkZSB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIFByb2R1Y3QgWC4gVGhhdCBDb250cmlidXRvciBpcyB0aGVuIGEKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmIHRoYXQgQ29tbWVyY2lhbCBDb250cmlidXRvciB0aGVuIG1ha2VzIHBlcmZvcm1hbmNlCi1jbGFpbXMsIG9yIG9mZmVycyB3YXJyYW50aWVzIHJlbGF0ZWQgdG8gUHJvZHVjdCBYLCB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kCi13YXJyYW50aWVzIGFyZSBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IncyByZXNwb25zaWJpbGl0eSBhbG9uZS4gVW5kZXIgdGhpcwotc2VjdGlvbiwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3Igd291bGQgaGF2ZSB0byBkZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlCi1vdGhlciBDb250cmlidXRvcnMgcmVsYXRlZCB0byB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kIHdhcnJhbnRpZXMsIGFuZCBpZiBhCi1jb3VydCByZXF1aXJlcyBhbnkgb3RoZXIgQ29udHJpYnV0b3IgdG8gcGF5IGFueSBkYW1hZ2VzIGFzIGEgcmVzdWx0LCB0aGUKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IgbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjUuIE5PIFdBUlJBTlRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBUSEUgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTiAmcXVvdDtBUyBJUyZxdW90OyBCQVNJUywgV0lUSE9VVAotV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVEIElOQ0xVRElORywKLVdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwKLU1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gRWFjaCBSZWNpcGllbnQgaXMgc29sZWx5Ci1yZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBhbmQgZGlzdHJpYnV0aW5nIHRoZQotUHJvZ3JhbSBhbmQgYXNzdW1lcyBhbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcwotQWdyZWVtZW50ICwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgcmlza3MgYW5kIGNvc3RzIG9mIHByb2dyYW0gZXJyb3JzLAotY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IKLWVxdWlwbWVudCwgYW5kIHVuYXZhaWxhYmlsaXR5IG9yIGludGVycnVwdGlvbiBvZiBvcGVyYXRpb25zLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ni4gRElTQ0xBSU1FUiBPRiBMSUFCSUxJVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIE5FSVRIRVIgUkVDSVBJRU5UIE5PUiBBTlkgQ09OVFJJQlVUT1JTIFNIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSBGT1IKLUFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotKElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLU9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi1ORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIERJU1RSSUJVVElPTiBPRgotVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCBIRVJFVU5ERVIsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjcuIEdFTkVSQUw8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIGludmFsaWQKLW9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yCi1lbmZvcmNlYWJpbGl0eSBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgYW5kIHdpdGhvdXQKLWZ1cnRoZXIgYWN0aW9uIGJ5IHRoZSBwYXJ0aWVzIGhlcmV0bywgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlCi1taW5pbXVtIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBSZWNpcGllbnQgaW5zdGl0dXRlcyBwYXRlbnQgbGl0aWdhdGlvbgotYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KQotYWxsZWdpbmcgdGhhdCB0aGUgUHJvZ3JhbSBpdHNlbGYgKGV4Y2x1ZGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIFByb2dyYW0gd2l0aAotb3RoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUpIGluZnJpbmdlcyBzdWNoIFJlY2lwaWVudCdzIHBhdGVudChzKSwgdGhlbiBzdWNoCi1SZWNpcGllbnQncyByaWdodHMgZ3JhbnRlZCB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlCi1zdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BbGwgUmVjaXBpZW50J3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50Ci1zaGFsbCB0ZXJtaW5hdGUgaWYgaXQgZmFpbHMgdG8gY29tcGx5IHdpdGggYW55IG9mIHRoZSBtYXRlcmlhbCB0ZXJtcyBvcgotY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlCi1wZXJpb2Qgb2YgdGltZSBhZnRlciBiZWNvbWluZyBhd2FyZSBvZiBzdWNoIG5vbmNvbXBsaWFuY2UuIElmIGFsbCBSZWNpcGllbnQncwotcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHRlcm1pbmF0ZSwgUmVjaXBpZW50IGFncmVlcyB0byBjZWFzZSB1c2UgYW5kCi1kaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLAotUmVjaXBpZW50J3Mgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYW5kIGFueSBsaWNlbnNlcyBncmFudGVkIGJ5Ci1SZWNpcGllbnQgcmVsYXRpbmcgdG8gdGhlIFByb2dyYW0gc2hhbGwgY29udGludWUgYW5kIHN1cnZpdmUuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZQotY29waWVzIG9mIHRoaXMgQWdyZWVtZW50LCBidXQgaW4gb3JkZXIgdG8gYXZvaWQgaW5jb25zaXN0ZW5jeSB0aGUgQWdyZWVtZW50IGlzCi1jb3B5cmlnaHRlZCBhbmQgbWF5IG9ubHkgYmUgbW9kaWZpZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXIuIFRoZSBBZ3JlZW1lbnQKLVN0ZXdhcmQgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIHB1Ymxpc2ggbmV3IHZlcnNpb25zIChpbmNsdWRpbmcgcmV2aXNpb25zKSBvZgotdGhpcyBBZ3JlZW1lbnQgZnJvbSB0aW1lIHRvIHRpbWUuIE5vIG9uZSBvdGhlciB0aGFuIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCBoYXMKLXRoZSByaWdodCB0byBtb2RpZnkgdGhpcyBBZ3JlZW1lbnQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgdGhlIGluaXRpYWwKLUFncmVlbWVudCBTdGV3YXJkLiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1heSBhc3NpZ24gdGhlIHJlc3BvbnNpYmlsaXR5IHRvCi1zZXJ2ZSBhcyB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgdG8gYSBzdWl0YWJsZSBzZXBhcmF0ZSBlbnRpdHkuIEVhY2ggbmV3IHZlcnNpb24KLW9mIHRoZSBBZ3JlZW1lbnQgd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBUaGUgUHJvZ3JhbQotKGluY2x1ZGluZyBDb250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gdGhlIHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgdW5kZXIgd2hpY2ggaXQgd2FzIHJlY2VpdmVkLiBJbiBhZGRpdGlvbiwgYWZ0ZXIgYSBuZXcgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCBpcyBwdWJsaXNoZWQsIENvbnRyaWJ1dG9yIG1heSBlbGVjdCB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKSB1bmRlciB0aGUgbmV3IHZlcnNpb24uIEV4Y2VwdCBhcyBleHByZXNzbHkgc3RhdGVkCi1pbiBTZWN0aW9ucyAyKGEpIGFuZCAyKGIpIGFib3ZlLCBSZWNpcGllbnQgcmVjZWl2ZXMgbm8gcmlnaHRzIG9yIGxpY2Vuc2VzIHRvCi10aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGFueSBDb250cmlidXRvciB1bmRlciB0aGlzIEFncmVlbWVudCwgd2hldGhlcgotZXhwcmVzc2x5LCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLiBBbGwgcmlnaHRzIGluIHRoZSBQcm9ncmFtIG5vdAotZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYXJlIHJlc2VydmVkLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhpcyBBZ3JlZW1lbnQgaXMgZ292ZXJuZWQgYnkgdGhlIGxhd3Mgb2YgdGhlCi1TdGF0ZSBvZiBOZXcgWW9yayBhbmQgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIG9mCi1BbWVyaWNhLiBObyBwYXJ0eSB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJyaW5nIGEgbGVnYWwgYWN0aW9uIHVuZGVyIHRoaXMKLUFncmVlbWVudCBtb3JlIHRoYW4gb25lIHllYXIgYWZ0ZXIgdGhlIGNhdXNlIG9mIGFjdGlvbiBhcm9zZS4gRWFjaCBwYXJ0eSB3YWl2ZXMKLWl0cyByaWdodHMgdG8gYSBqdXJ5IHRyaWFsIGluIGFueSByZXN1bHRpbmcgbGl0aWdhdGlvbi48L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsPjwhW2lmICFzdXBwb3J0RW1wdHlQYXJhc10+Jm5ic3A7PCFbZW5kaWZdPjxvOnA+PC9vOnA+PC9wPgotCi08L2Rpdj4KLQotPC9ib2R5PgotCi08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MThlNjhhLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c190ZXN0cy5mZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBmZWF0dXJlLnByb3BlcnRpZXMKLSMgY29udGFpbnMgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZm9yIGZlYXR1cmUueG1sCi0jICIlZm9vIiBpbiBmZWF0dXJlLnhtbCBjb3JyZXNwb25kcyB0byB0aGUga2V5ICJmb28iIGluIHRoaXMgZmlsZQotIyBqYXZhLmlvLlByb3BlcnRpZXMgZmlsZSAoSVNPIDg4NTktMSB3aXRoICJcIiBlc2NhcGVzKQotIyBUaGlzIGZpbGUgc2hvdWxkIGJlIHRyYW5zbGF0ZWQuCi0KLSMgImZlYXR1cmVOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGZlYXR1cmUKLWZlYXR1cmVOYW1lPVdTVCBXZWIgU2VydmljZXMgVGVzdHMKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPVRoZSBFY2xpcHNlIFdlYiBUb29scyBQbGF0Zm9ybSAoV1RQKSBQcm9qZWN0IHVwZGF0ZSBzaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1XU1QgV2ViIHNlcnZpY2VzIHRlc3RzCi0KLSMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgotY29weXJpZ2h0PVwKLUNvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy5cblwKLUFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKLWFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAotd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCi1cblwKLUNvbnRyaWJ1dG9yczpcblwKLSAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb25cbgotIyMjIyMjIyMjIyMjIyMjIyBlbmQgb2YgY29weXJpZ2h0IHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jICJsaWNlbnNlVVJMIiBwcm9wZXJ0eSAtIFVSTCBvZiB0aGUgIkZlYXR1cmUgTGljZW5zZSIKLSMgZG8gbm90IHRyYW5zbGF0ZSB2YWx1ZSAtIGp1c3QgY2hhbmdlIHRvIHBvaW50IHRvIGEgbG9jYWxlLXNwZWNpZmljIEhUTUwgcGFnZQotbGljZW5zZVVSTD1saWNlbnNlLmh0bWwKLQotIyAibGljZW5zZSIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgTGljZW5zZSIKLSMgc2hvdWxkIGJlIHBsYWluIHRleHQgdmVyc2lvbiBvZiBsaWNlbnNlIGFncmVlbWVudCBwb2ludGVkIHRvIGJlICJsaWNlbnNlVVJMIgotbGljZW5zZT1cCi1FQ0xJUFNFIEZPVU5EQVRJT04gU09GVFdBUkUgVVNFUiBBR1JFRU1FTlRcblwKLUp1bmUgMDYsIDIwMDdcblwKLVxuXAotVXNhZ2UgT2YgQ29udGVudFxuXAotXG5cCi1USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCi1PVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKLVVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAotQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCi1OT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCi1BR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCi1BTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAotT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKLU9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCi1CRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCi1cblwKLUFwcGxpY2FibGUgTGljZW5zZXNcblwKLVxuXAotVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb25cblwKLWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljXG5cCi1MaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpc1xuXAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKLVxuXAotQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCi1kb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlNcblwKLXJlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCi1hcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKLVxuXAotICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAotICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCi0gICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCi0gICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YT8gQVJjaGl2ZSlcblwKLSAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAotICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKLSAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKLSAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCi0gICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKLSAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCi0gICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWRcblwKLSJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mXG5cCi1JbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAotY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAotaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAotTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCi1cblwKLSAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCi0gICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCi0gICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKLSAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAotICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCi1cblwKLU5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKLUVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlXG5cCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKLUluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCi13aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoteW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAotdGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsXG5cCi1GZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91clxuXAotdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCi1cblwKLVRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAotVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCi1TT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCi1cblwKLSAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAotICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCi0gICAgLSBJQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwpXG5cCi0gICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKLSAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCi0gICAgLSBDb21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIChDRERMKSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c190ZXN0cy5mZWF0dXJlL2ZlYXR1cmUueG1sIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvZmVhdHVyZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZWM3NjYuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NfdGVzdHMuZmVhdHVyZSIKLSAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCi0gICAgICB2ZXJzaW9uPSIzLjAuMjAxLnF1YWxpZmllciIKLSAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiPgotCi0gICA8ZGVzY3JpcHRpb24+Ci0gICAgICAlZGVzY3JpcHRpb24KLSAgIDwvZGVzY3JpcHRpb24+Ci0KLSAgIDxjb3B5cmlnaHQ+Ci0gICAgICAlY29weXJpZ2h0Ci0gICA8L2NvcHlyaWdodD4KLQotICAgPGxpY2Vuc2UgdXJsPSJsaWNlbnNlLmh0bWwiPgotICAgICAgJWxpY2Vuc2UKLSAgIDwvbGljZW5zZT4KLQotICAgPHVybD4KLSAgICAgIDx1cGRhdGUgbGFiZWw9IiV1cGRhdGVTaXRlTmFtZSIgdXJsPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvd2VidG9vbHMvdXBkYXRlcy8iLz4KLSAgIDwvdXJsPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cyIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cyIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi08L2ZlYXR1cmU+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdGVzdHMuZmVhdHVyZS9saWNlbnNlLmh0bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdGVzdHMuZmVhdHVyZS9saWNlbnNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NDQ1OTguLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3Rlc3RzLmZlYXR1cmUvbGljZW5zZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzNjLm9yZy9UUi8xOTk5L1JFQy1odG1sNDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+Ci08IS0tIHNhdmVkIGZyb20gdXJsPSgwMDQ0KWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsL25vdGljZS5odG1sIC0tPgotPEhUTUw+PEhFQUQ+PFRJVExFPkVjbGlwc2Uub3JnIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9USVRMRT4KLTxNRVRBIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTxNRVRBIGNvbnRlbnQ9Ik1TSFRNTCA2LjAwLjI4MDAuMTQ3OSIgbmFtZT1HRU5FUkFUT1I+PC9IRUFEPgotPEJPRFkgbGFuZz1FTi1VUyB2TGluaz1wdXJwbGUgbGluaz1ibHVlPgotPEgyPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvSDI+Ci08UD5KdW5lIDA2LCAyMDA3PC9QPgotPEgzPlVzYWdlIE9mIENvbnRlbnQ8L0gzPgotPFA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIAotQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLiBVU0UgT0YgCi1USEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSAKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIAotQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCAKLUJZIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSAKLUFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEUgCi1URVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSAKLUFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1csIFRIRU4gWU9VIAotTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9QPgotPEgzPkFwcGxpY2FibGUgTGljZW5zZXM8L0gzPgotPFA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIAotRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIAotUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPEEgCi1ocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLTxQPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCAKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWUyByZXBvc2l0b3J5IAotKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSAKLWFyY2hpdmVzICgiRG93bmxvYWRzIikuPC9QPgotPFA+Q29udGVudCBtYXkgYmUgYXBwb3J0aW9uZWQgaW50byBwbHVnLWlucyAoIlBsdWctaW5zIiksIHBsdWctaW4gZnJhZ21lbnRzIAotKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS4gQSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIAotUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC4gRmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgCi1jb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyAKLWFzc29jaWF0ZWQgd2l0aCBhIEZlYXR1cmUuIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgYXJlIGxvY2F0ZWQgaW4gZGlyZWN0b3JpZXMgCi1uYW1lZCAicGx1Z2lucyIgYW5kIEZlYXR1cmVzIGFyZSBsb2NhdGVkIGluIGRpcmVjdG9yaWVzIG5hbWVkICJmZWF0dXJlcyIuPC9QPgotPFA+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIEZpbGVzIG5hbWVkIAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgCi1GZWF0dXJlcy48L1A+Ci08UD5UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlIGNvbnRhaW5lZCAKLWluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIAotRmVhdHVyZXMgYW5kIEluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgCi0oIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlIExpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSAKLWRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZSBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIAotbG9jYXRpb25zOjwvUD4KLTxVTD4KLSAgPExJPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeSAKLSAgPExJPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzIAotICA8TEk+U3ViZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zIAotICA8TEk+RmVhdHVyZSBkaXJlY3RvcmllcyA8L0xJPjwvVUw+Ci08UD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgCi11c2luZyB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGUgCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnMgSW5jbHVkZWQgCi1GZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdSB3aXRoIHRoZSB0ZXJtcyAKLWFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtIHlvdSB3aGVyZSB5b3UgY2FuIAotbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIAotZmlsZXMgbmFtZWQgImZlYXR1cmUucHJvcGVydGllcyIuIFN1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIAotVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgCi1hbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IAotZGlyZWN0b3J5LjwvUD4KLTxQPlRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUiBUTyBUSEUgRVBMIAotT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiBTT01FIE9GIFRIRVNFIAotT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L1A+Ci08VUw+Ci0gIDxMST5Db21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9BPikgCi0KLSAgPExJPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L0E+KSAKLQotICA8TEk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9BPikgCi0KLSAgPExJPklCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sPC9BPikgCi0KLSAgPExJPk1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbCI+aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWw8L0E+KSAKLQotICA8TEk+TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwiPmh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbDwvQT4pIAotICA8L0xJPgotICAgIAotICA8TEk+Q29tbW9uIERldmVsb3BtZW50IGFuZCBEaXN0cmlidXRpb24gTGljZW5zZSAoQ0RETCkgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5zdW4uY29tL2NkZGwvY2RkbC5odG1sIj5odHRwOi8vd3d3LnN1bi5jb20vY2RkbC9jZGRsLmh0bWwpPC9BPgotICA8L0xJPgotPC9VTD4KLTxQPklUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1IgCi1UTyBVU0UgT0YgVEhFIENPTlRFTlQuIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2Ugb3IgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBpcyAKLXByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCAKLWNvbmRpdGlvbnMgZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LjwvUD4KLTxIMz5DcnlwdG9ncmFwaHk8L0gzPgotPFA+Q29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlIAotY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgCi1yZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkUgdXNpbmcgYW55IAotZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIAotY29uY2VybmluZyB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgCi10byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9QPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS8uY3ZzaWdub3JlIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE0NDg3Yy4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotYnVpbGQueG1sCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS8ucHJvamVjdCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDNhOGIwLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmU8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y0NzY5NC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBmZWF0dXJlLnhtbCxcCi0gICAgICAgICAgICAgICBlY2xpcHNlX3VwZGF0ZV8xMjAuanBnLFwKLSAgICAgICAgICAgICAgIGVwbC12MTAuaHRtbCxcCi0gICAgICAgICAgICAgICBsaWNlbnNlLmh0bWwsXAotICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZkZjcwOC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvZXBsLXYxMC5odG1sIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvZXBsLXYxMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDRiMTk2Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL2VwbC12MTAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi08aHRtbCB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiCi14bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIgoteG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPgotCi08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgotPG1ldGEgbmFtZT1Qcm9nSWQgY29udGVudD1Xb3JkLkRvY3VtZW50PgotPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bWV0YSBuYW1lPU9yaWdpbmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bGluayByZWw9RmlsZS1MaXN0Ci1ocmVmPSIuL0VjbGlwc2UlMjBFUEwlMjAyMDAzXzExXzEwJTIwRmluYWxfZmlsZXMvZmlsZWxpc3QueG1sIj4KLTx0aXRsZT5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gVmVyc2lvbiAxLjA8L3RpdGxlPgotPCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPG86RG9jdW1lbnRQcm9wZXJ0aWVzPgotICA8bzpSZXZpc2lvbj4yPC9vOlJldmlzaW9uPgotICA8bzpUb3RhbFRpbWU+MzwvbzpUb3RhbFRpbWU+Ci0gIDxvOkNyZWF0ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286Q3JlYXRlZD4KLSAgPG86TGFzdFNhdmVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkxhc3RTYXZlZD4KLSAgPG86UGFnZXM+NDwvbzpQYWdlcz4KLSAgPG86V29yZHM+MTYyNjwvbzpXb3Jkcz4KLSAgPG86Q2hhcmFjdGVycz45MjcwPC9vOkNoYXJhY3RlcnM+Ci0gICA8bzpMaW5lcz43NzwvbzpMaW5lcz4KLSAgPG86UGFyYWdyYXBocz4xODwvbzpQYXJhZ3JhcGhzPgotICA8bzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4xMTM4NDwvbzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4KLSAgPG86VmVyc2lvbj45LjQ0MDI8L286VmVyc2lvbj4KLSA8L286RG9jdW1lbnRQcm9wZXJ0aWVzPgotPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPHc6V29yZERvY3VtZW50PgotICA8dzpUcmFja1JldmlzaW9ucy8+Ci0gPC93OldvcmREb2N1bWVudD4KLTwveG1sPjwhW2VuZGlmXS0tPgotPHN0eWxlPgotPCEtLQotIC8qIEZvbnQgRGVmaW5pdGlvbnMgKi8KLUBmb250LWZhY2UKLQl7Zm9udC1mYW1pbHk6VGFob21hOwotCXBhbm9zZS0xOjIgMTEgNiA0IDMgNSA0IDQgMiA0OwotCW1zby1mb250LWNoYXJzZXQ6MDsKLQltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKLQltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKLQltc28tZm9udC1zaWduYXR1cmU6NTUzNjc5NDk1IC0yMTQ3NDgzNjQ4IDggMCA2NjA0NyAwO30KLSAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLwotcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAotCXttc28tc3R5bGUtcGFyZW50OiIiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAKLQl7bWFyZ2luLXJpZ2h0OjBpbjsKLQltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsKLQltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsKLQltYXJnaW4tbGVmdDowaW47Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcC5CYWxsb29uVGV4dCwgbGkuQmFsbG9vblRleHQsIGRpdi5CYWxsb29uVGV4dAotCXttc28tc3R5bGUtbmFtZToiQmFsbG9vbiBUZXh0IjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjguMHB0OwotCWZvbnQtZmFtaWx5OlRhaG9tYTsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1AcGFnZSBTZWN0aW9uMQotCXtzaXplOjguNWluIDExLjBpbjsKLQltYXJnaW46MS4waW4gMS4yNWluIDEuMGluIDEuMjVpbjsKLQltc28taGVhZGVyLW1hcmdpbjouNWluOwotCW1zby1mb290ZXItbWFyZ2luOi41aW47Ci0JbXNvLXBhcGVyLXNvdXJjZTowO30KLWRpdi5TZWN0aW9uMQotCXtwYWdlOlNlY3Rpb24xO30KLS0tPgotPC9zdHlsZT4KLTwvaGVhZD4KLQotPGJvZHkgbGFuZz1FTi1VUyBzdHlsZT0ndGFiLWludGVydmFsOi41aW4nPgotCi08ZGl2IGNsYXNzPVNlY3Rpb24xPgotCi08cCBhbGlnbj1jZW50ZXIgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz48Yj5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gdiAxLjA8L2I+Ci08L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5USEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIKLVRIRSBURVJNUyBPRiBUSElTIEVDTElQU0UgUFVCTElDIExJQ0VOU0UgKCZxdW90O0FHUkVFTUVOVCZxdW90OykuIEFOWSBVU0UsCi1SRVBST0RVQ1RJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNIENPTlNUSVRVVEVTIFJFQ0lQSUVOVCdTIEFDQ0VQVEFOQ0UKLU9GIFRISVMgQUdSRUVNRU5ULjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+MS4gREVGSU5JVElPTlM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRpb24mcXVvdDsgbWVhbnM6PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pbiB0aGUgY2FzZSBvZiB0aGUgaW5pdGlhbCBDb250cmlidXRvciwgdGhlIGluaXRpYWwgY29kZSBhbmQgZG9jdW1lbnRhdGlvbgotZGlzdHJpYnV0ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGFuZDxiciBjbGVhcj1sZWZ0PgotYikgaW4gdGhlIGNhc2Ugb2YgZWFjaCBzdWJzZXF1ZW50IENvbnRyaWJ1dG9yOjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1jaGFuZ2VzIHRvIHRoZSBQcm9ncmFtLCBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbTs8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz53aGVyZQotc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gb3JpZ2luYXRlIGZyb20gYW5kIGFyZSBkaXN0cmlidXRlZAotYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLiBBIENvbnRyaWJ1dGlvbiAnb3JpZ2luYXRlcycgZnJvbSBhIENvbnRyaWJ1dG9yCi1pZiBpdCB3YXMgYWRkZWQgdG8gdGhlIFByb2dyYW0gYnkgc3VjaCBDb250cmlidXRvciBpdHNlbGYgb3IgYW55b25lIGFjdGluZyBvbgotc3VjaCBDb250cmlidXRvcidzIGJlaGFsZi4gQ29udHJpYnV0aW9ucyBkbyBub3QgaW5jbHVkZSBhZGRpdGlvbnMgdG8gdGhlCi1Qcm9ncmFtIHdoaWNoOiAoaSkgYXJlIHNlcGFyYXRlIG1vZHVsZXMgb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQgaW4gY29uanVuY3Rpb24KLXdpdGggdGhlIFByb2dyYW0gdW5kZXIgdGhlaXIgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBhbmQgKGlpKSBhcmUgbm90IGRlcml2YXRpdmUKLXdvcmtzIG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0b3ImcXVvdDsgbWVhbnMgYW55IHBlcnNvbiBvcgotZW50aXR5IHRoYXQgZGlzdHJpYnV0ZXMgdGhlIFByb2dyYW0uPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtMaWNlbnNlZCBQYXRlbnRzICZxdW90OyBtZWFuIHBhdGVudAotY2xhaW1zIGxpY2Vuc2FibGUgYnkgYSBDb250cmlidXRvciB3aGljaCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZSB1c2UKLW9yIHNhbGUgb2YgaXRzIENvbnRyaWJ1dGlvbiBhbG9uZSBvciB3aGVuIGNvbWJpbmVkIHdpdGggdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtQcm9ncmFtJnF1b3Q7IG1lYW5zIHRoZSBDb250cmlidXRpb25zCi1kaXN0cmlidXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBBZ3JlZW1lbnQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtSZWNpcGllbnQmcXVvdDsgbWVhbnMgYW55b25lIHdobwotcmVjZWl2ZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGluY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Mi4gR1JBTlQgT0YgUklHSFRTPC9zcGFuPjwvYj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQKLWEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgY29weXJpZ2h0IGxpY2Vuc2UgdG88c3Bhbgotc3R5bGU9J2NvbG9yOnJlZCc+IDwvc3Bhbj5yZXByb2R1Y2UsIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiwgcHVibGljbHkKLWRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIGRpc3RyaWJ1dGUgYW5kIHN1YmxpY2Vuc2UgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoCi1Db250cmlidXRvciwgaWYgYW55LCBhbmQgc3VjaCBkZXJpdmF0aXZlIHdvcmtzLCBpbiBzb3VyY2UgY29kZSBhbmQgb2JqZWN0IGNvZGUKLWZvcm0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMKLVJlY2lwaWVudCBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSw8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPiA8L3NwYW4+cm95YWx0eS1mcmVlCi1wYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0Ci1hbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBpbiBzb3VyY2UKLWNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uIFRoaXMgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgYXBwbHkgdG8gdGhlIGNvbWJpbmF0aW9uCi1vZiB0aGUgQ29udHJpYnV0aW9uIGFuZCB0aGUgUHJvZ3JhbSBpZiwgYXQgdGhlIHRpbWUgdGhlIENvbnRyaWJ1dGlvbiBpcyBhZGRlZAotYnkgdGhlIENvbnRyaWJ1dG9yLCBzdWNoIGFkZGl0aW9uIG9mIHRoZSBDb250cmlidXRpb24gY2F1c2VzIHN1Y2ggY29tYmluYXRpb24KLXRvIGJlIGNvdmVyZWQgYnkgdGhlIExpY2Vuc2VkIFBhdGVudHMuIFRoZSBwYXRlbnQgbGljZW5zZSBzaGFsbCBub3QgYXBwbHkgdG8KLWFueSBvdGhlciBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgQ29udHJpYnV0aW9uLiBObyBoYXJkd2FyZSBwZXIgc2UgaXMKLWxpY2Vuc2VkIGhlcmV1bmRlci4gPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YykKLVJlY2lwaWVudCB1bmRlcnN0YW5kcyB0aGF0IGFsdGhvdWdoIGVhY2ggQ29udHJpYnV0b3IgZ3JhbnRzIHRoZSBsaWNlbnNlcyB0byBpdHMKLUNvbnRyaWJ1dGlvbnMgc2V0IGZvcnRoIGhlcmVpbiwgbm8gYXNzdXJhbmNlcyBhcmUgcHJvdmlkZWQgYnkgYW55IENvbnRyaWJ1dG9yCi10aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5Ci1yaWdodHMgb2YgYW55IG90aGVyIGVudGl0eS4gRWFjaCBDb250cmlidXRvciBkaXNjbGFpbXMgYW55IGxpYWJpbGl0eSB0byBSZWNpcGllbnQKLWZvciBjbGFpbXMgYnJvdWdodCBieSBhbnkgb3RoZXIgZW50aXR5IGJhc2VkIG9uIGluZnJpbmdlbWVudCBvZiBpbnRlbGxlY3R1YWwKLXByb3BlcnR5IHJpZ2h0cyBvciBvdGhlcndpc2UuIEFzIGEgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQKLWxpY2Vuc2VzIGdyYW50ZWQgaGVyZXVuZGVyLCBlYWNoIFJlY2lwaWVudCBoZXJlYnkgYXNzdW1lcyBzb2xlIHJlc3BvbnNpYmlsaXR5Ci10byBzZWN1cmUgYW55IG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbmVlZGVkLCBpZiBhbnkuIEZvciBleGFtcGxlLAotaWYgYSB0aGlyZCBwYXJ0eSBwYXRlbnQgbGljZW5zZSBpcyByZXF1aXJlZCB0byBhbGxvdyBSZWNpcGllbnQgdG8gZGlzdHJpYnV0ZQotdGhlIFByb2dyYW0sIGl0IGlzIFJlY2lwaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIGFjcXVpcmUgdGhhdCBsaWNlbnNlIGJlZm9yZQotZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmQpCi1FYWNoIENvbnRyaWJ1dG9yIHJlcHJlc2VudHMgdGhhdCB0byBpdHMga25vd2xlZGdlIGl0IGhhcyBzdWZmaWNpZW50IGNvcHlyaWdodAotcmlnaHRzIGluIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgdG8gZ3JhbnQgdGhlIGNvcHlyaWdodCBsaWNlbnNlIHNldCBmb3J0aCBpbgotdGhpcyBBZ3JlZW1lbnQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4zLiBSRVFVSVJFTUVOVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BIENvbnRyaWJ1dG9yIG1heSBjaG9vc2UgdG8gZGlzdHJpYnV0ZSB0aGUKLVByb2dyYW0gaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciBpdHMgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBwcm92aWRlZCB0aGF0Ojwvc3Bhbj4KLTwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IGNvbXBsaWVzIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotaXRzIGxpY2Vuc2UgYWdyZWVtZW50Ojwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1lZmZlY3RpdmVseSBkaXNjbGFpbXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIHdhcnJhbnRpZXMgYW5kCi1jb25kaXRpb25zLCBleHByZXNzIGFuZCBpbXBsaWVkLCBpbmNsdWRpbmcgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIHRpdGxlCi1hbmQgbm9uLWluZnJpbmdlbWVudCwgYW5kIGltcGxpZWQgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIG1lcmNoYW50YWJpbGl0eQotYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWVmZmVjdGl2ZWx5IGV4Y2x1ZGVzIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsCi1pbmNsdWRpbmcgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoCi1hcyBsb3N0IHByb2ZpdHM7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpaSkKLXN0YXRlcyB0aGF0IGFueSBwcm92aXNpb25zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMgQWdyZWVtZW50IGFyZSBvZmZlcmVkIGJ5IHRoYXQKLUNvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyIHBhcnR5OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pdikKLXN0YXRlcyB0aGF0IHNvdXJjZSBjb2RlIGZvciB0aGUgUHJvZ3JhbSBpcyBhdmFpbGFibGUgZnJvbSBzdWNoIENvbnRyaWJ1dG9yLCBhbmQKLWluZm9ybXMgbGljZW5zZWVzIGhvdyB0byBvYnRhaW4gaXQgaW4gYSByZWFzb25hYmxlIG1hbm5lciBvbiBvciB0aHJvdWdoIGEKLW1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBleGNoYW5nZS48c3BhbiBzdHlsZT0nY29sb3I6Ymx1ZSc+IDwvc3Bhbj48L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+V2hlbiB0aGUgUHJvZ3JhbSBpcyBtYWRlIGF2YWlsYWJsZSBpbiBzb3VyY2UKLWNvZGUgZm9ybTo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBBZ3JlZW1lbnQ7IGFuZCA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKSBhCi1jb3B5IG9mIHRoaXMgQWdyZWVtZW50IG11c3QgYmUgaW5jbHVkZWQgd2l0aCBlYWNoIGNvcHkgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db250cmlidXRvcnMgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55Ci1jb3B5cmlnaHQgbm90aWNlcyBjb250YWluZWQgd2l0aGluIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RWFjaCBDb250cmlidXRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyB0aGUKLW9yaWdpbmF0b3Igb2YgaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCBpbiBhIG1hbm5lciB0aGF0IHJlYXNvbmFibHkgYWxsb3dzCi1zdWJzZXF1ZW50IFJlY2lwaWVudHMgdG8gaWRlbnRpZnkgdGhlIG9yaWdpbmF0b3Igb2YgdGhlIENvbnRyaWJ1dGlvbi4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjQuIENPTU1FUkNJQUwgRElTVFJJQlVUSU9OPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29tbWVyY2lhbCBkaXN0cmlidXRvcnMgb2Ygc29mdHdhcmUgbWF5Ci1hY2NlcHQgY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIHdpdGggcmVzcGVjdCB0byBlbmQgdXNlcnMsIGJ1c2luZXNzIHBhcnRuZXJzCi1hbmQgdGhlIGxpa2UuIFdoaWxlIHRoaXMgbGljZW5zZSBpcyBpbnRlbmRlZCB0byBmYWNpbGl0YXRlIHRoZSBjb21tZXJjaWFsIHVzZQotb2YgdGhlIFByb2dyYW0sIHRoZSBDb250cmlidXRvciB3aG8gaW5jbHVkZXMgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsCi1wcm9kdWN0IG9mZmVyaW5nIHNob3VsZCBkbyBzbyBpbiBhIG1hbm5lciB3aGljaCBkb2VzIG5vdCBjcmVhdGUgcG90ZW50aWFsCi1saWFiaWxpdHkgZm9yIG90aGVyIENvbnRyaWJ1dG9ycy4gVGhlcmVmb3JlLCBpZiBhIENvbnRyaWJ1dG9yIGluY2x1ZGVzIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgc3VjaCBDb250cmlidXRvciAoJnF1b3Q7Q29tbWVyY2lhbAotQ29udHJpYnV0b3ImcXVvdDspIGhlcmVieSBhZ3JlZXMgdG8gZGVmZW5kIGFuZCBpbmRlbW5pZnkgZXZlcnkgb3RoZXIKLUNvbnRyaWJ1dG9yICgmcXVvdDtJbmRlbW5pZmllZCBDb250cmlidXRvciZxdW90OykgYWdhaW5zdCBhbnkgbG9zc2VzLCBkYW1hZ2VzIGFuZAotY29zdHMgKGNvbGxlY3RpdmVseSAmcXVvdDtMb3NzZXMmcXVvdDspIGFyaXNpbmcgZnJvbSBjbGFpbXMsIGxhd3N1aXRzIGFuZCBvdGhlcgotbGVnYWwgYWN0aW9ucyBicm91Z2h0IGJ5IGEgdGhpcmQgcGFydHkgYWdhaW5zdCB0aGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgdG8KLXRoZSBleHRlbnQgY2F1c2VkIGJ5IHRoZSBhY3RzIG9yIG9taXNzaW9ucyBvZiBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4KLWNvbm5lY3Rpb24gd2l0aCBpdHMgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0Ci1vZmZlcmluZy4gVGhlIG9ibGlnYXRpb25zIGluIHRoaXMgc2VjdGlvbiBkbyBub3QgYXBwbHkgdG8gYW55IGNsYWltcyBvciBMb3NzZXMKLXJlbGF0aW5nIHRvIGFueSBhY3R1YWwgb3IgYWxsZWdlZCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgaW5mcmluZ2VtZW50LiBJbiBvcmRlcgotdG8gcXVhbGlmeSwgYW4gSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsCi1Db250cmlidXRvciBpbiB3cml0aW5nIG9mIHN1Y2ggY2xhaW0sIGFuZCBiKSBhbGxvdyB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvcgotdG8gY29udHJvbCwgYW5kIGNvb3BlcmF0ZSB3aXRoIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQKLWFueSByZWxhdGVkIHNldHRsZW1lbnQgbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlCi1pbiBhbnkgc3VjaCBjbGFpbSBhdCBpdHMgb3duIGV4cGVuc2UuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Gb3IgZXhhbXBsZSwgYSBDb250cmlidXRvciBtaWdodCBpbmNsdWRlIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgUHJvZHVjdCBYLiBUaGF0IENvbnRyaWJ1dG9yIGlzIHRoZW4gYQotQ29tbWVyY2lhbCBDb250cmlidXRvci4gSWYgdGhhdCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHRoZW4gbWFrZXMgcGVyZm9ybWFuY2UKLWNsYWltcywgb3Igb2ZmZXJzIHdhcnJhbnRpZXMgcmVsYXRlZCB0byBQcm9kdWN0IFgsIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQKLXdhcnJhbnRpZXMgYXJlIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvcidzIHJlc3BvbnNpYmlsaXR5IGFsb25lLiBVbmRlciB0aGlzCi1zZWN0aW9uLCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB3b3VsZCBoYXZlIHRvIGRlZmVuZCBjbGFpbXMgYWdhaW5zdCB0aGUKLW90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcywgYW5kIGlmIGEKLWNvdXJ0IHJlcXVpcmVzIGFueSBvdGhlciBDb250cmlidXRvciB0byBwYXkgYW55IGRhbWFnZXMgYXMgYSByZXN1bHQsIHRoZQotQ29tbWVyY2lhbCBDb250cmlidXRvciBtdXN0IHBheSB0aG9zZSBkYW1hZ2VzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NS4gTk8gV0FSUkFOVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIFRIRSBQUk9HUkFNIElTIFBST1ZJREVEIE9OIEFOICZxdW90O0FTIElTJnF1b3Q7IEJBU0lTLCBXSVRIT1VUCi1XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQgSU5DTFVESU5HLAotV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULAotTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpcyBzb2xlbHkKLXJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIGFuZCBkaXN0cmlidXRpbmcgdGhlCi1Qcm9ncmFtIGFuZCBhc3N1bWVzIGFsbCByaXNrcyBhc3NvY2lhdGVkIHdpdGggaXRzIGV4ZXJjaXNlIG9mIHJpZ2h0cyB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSByaXNrcyBhbmQgY29zdHMgb2YgcHJvZ3JhbSBlcnJvcnMsCi1jb21wbGlhbmNlIHdpdGggYXBwbGljYWJsZSBsYXdzLCBkYW1hZ2UgdG8gb3IgbG9zcyBvZiBkYXRhLCBwcm9ncmFtcyBvcgotZXF1aXBtZW50LCBhbmQgdW5hdmFpbGFiaWxpdHkgb3IgaW50ZXJydXB0aW9uIG9mIG9wZXJhdGlvbnMuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz42LiBESVNDTEFJTUVSIE9GIExJQUJJTElUWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgTkVJVEhFUiBSRUNJUElFTlQgTk9SIEFOWSBDT05UUklCVVRPUlMgU0hBTEwgSEFWRSBBTlkgTElBQklMSVRZIEZPUgotQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0oSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBMT1NUIFBST0ZJVFMpLCBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GCi1USEUgUFJPR1JBTSBPUiBUSEUgRVhFUkNJU0UgT0YgQU5ZIFJJR0hUUyBHUkFOVEVEIEhFUkVVTkRFUiwgRVZFTiBJRiBBRFZJU0VEIE9GCi1USEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ny4gR0VORVJBTDwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIGFueSBwcm92aXNpb24gb2YgdGhpcyBBZ3JlZW1lbnQgaXMgaW52YWxpZAotb3IgdW5lbmZvcmNlYWJsZSB1bmRlciBhcHBsaWNhYmxlIGxhdywgaXQgc2hhbGwgbm90IGFmZmVjdCB0aGUgdmFsaWRpdHkgb3IKLWVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBhbmQgd2l0aG91dAotZnVydGhlciBhY3Rpb24gYnkgdGhlIHBhcnRpZXMgaGVyZXRvLCBzdWNoIHByb3Zpc2lvbiBzaGFsbCBiZSByZWZvcm1lZCB0byB0aGUKLW1pbmltdW0gZXh0ZW50IG5lY2Vzc2FyeSB0byBtYWtlIHN1Y2ggcHJvdmlzaW9uIHZhbGlkIGFuZCBlbmZvcmNlYWJsZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uCi1hZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpCi1hbGxlZ2luZyB0aGF0IHRoZSBQcm9ncmFtIGl0c2VsZiAoZXhjbHVkaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgUHJvZ3JhbSB3aXRoCi1vdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSkgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MgcGF0ZW50KHMpLCB0aGVuIHN1Y2gKLVJlY2lwaWVudCdzIHJpZ2h0cyBncmFudGVkIHVuZGVyIFNlY3Rpb24gMihiKSBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgdGhlIGRhdGUKLXN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQKLXNoYWxsIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIG1hdGVyaWFsIHRlcm1zIG9yCi1jb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50IGFuZCBkb2VzIG5vdCBjdXJlIHN1Y2ggZmFpbHVyZSBpbiBhIHJlYXNvbmFibGUKLXBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mIHN1Y2ggbm9uY29tcGxpYW5jZS4gSWYgYWxsIFJlY2lwaWVudCdzCi1yaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgdGVybWluYXRlLCBSZWNpcGllbnQgYWdyZWVzIHRvIGNlYXNlIHVzZSBhbmQKLWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBhcyBzb29uIGFzIHJlYXNvbmFibHkgcHJhY3RpY2FibGUuIEhvd2V2ZXIsCi1SZWNpcGllbnQncyBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIEFncmVlbWVudCBhbmQgYW55IGxpY2Vuc2VzIGdyYW50ZWQgYnkKLVJlY2lwaWVudCByZWxhdGluZyB0byB0aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZSBhbmQgc3Vydml2ZS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlCi1jb3BpZXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGJ1dCBpbiBvcmRlciB0byBhdm9pZCBpbmNvbnNpc3RlbmN5IHRoZSBBZ3JlZW1lbnQgaXMKLWNvcHlyaWdodGVkIGFuZCBtYXkgb25seSBiZSBtb2RpZmllZCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lci4gVGhlIEFncmVlbWVudAotU3Rld2FyZCByZXNlcnZlcyB0aGUgcmlnaHQgdG8gcHVibGlzaCBuZXcgdmVyc2lvbnMgKGluY2x1ZGluZyByZXZpc2lvbnMpIG9mCi10aGlzIEFncmVlbWVudCBmcm9tIHRpbWUgdG8gdGltZS4gTm8gb25lIG90aGVyIHRoYW4gdGhlIEFncmVlbWVudCBTdGV3YXJkIGhhcwotdGhlIHJpZ2h0IHRvIG1vZGlmeSB0aGlzIEFncmVlbWVudC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyB0aGUgaW5pdGlhbAotQWdyZWVtZW50IFN0ZXdhcmQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWF5IGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgdG8KLXNlcnZlIGFzIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCB0byBhIHN1aXRhYmxlIHNlcGFyYXRlIGVudGl0eS4gRWFjaCBuZXcgdmVyc2lvbgotb2YgdGhlIEFncmVlbWVudCB3aWxsIGJlIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIFRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIENvbnRyaWJ1dGlvbnMpIG1heSBhbHdheXMgYmUgZGlzdHJpYnV0ZWQgc3ViamVjdCB0byB0aGUgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCB1bmRlciB3aGljaCBpdCB3YXMgcmVjZWl2ZWQuIEluIGFkZGl0aW9uLCBhZnRlciBhIG5ldyB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IGlzIHB1Ymxpc2hlZCwgQ29udHJpYnV0b3IgbWF5IGVsZWN0IHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KLShpbmNsdWRpbmcgaXRzIENvbnRyaWJ1dGlvbnMpIHVuZGVyIHRoZSBuZXcgdmVyc2lvbi4gRXhjZXB0IGFzIGV4cHJlc3NseSBzdGF0ZWQKLWluIFNlY3Rpb25zIDIoYSkgYW5kIDIoYikgYWJvdmUsIFJlY2lwaWVudCByZWNlaXZlcyBubyByaWdodHMgb3IgbGljZW5zZXMgdG8KLXRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgYW55IENvbnRyaWJ1dG9yIHVuZGVyIHRoaXMgQWdyZWVtZW50LCB3aGV0aGVyCi1leHByZXNzbHksIGJ5IGltcGxpY2F0aW9uLCBlc3RvcHBlbCBvciBvdGhlcndpc2UuIEFsbCByaWdodHMgaW4gdGhlIFByb2dyYW0gbm90Ci1leHByZXNzbHkgZ3JhbnRlZCB1bmRlciB0aGlzIEFncmVlbWVudCBhcmUgcmVzZXJ2ZWQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5UaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUKLVN0YXRlIG9mIE5ldyBZb3JrIGFuZCB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGxhd3Mgb2YgdGhlIFVuaXRlZCBTdGF0ZXMgb2YKLUFtZXJpY2EuIE5vIHBhcnR5IHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYnJpbmcgYSBsZWdhbCBhY3Rpb24gdW5kZXIgdGhpcwotQWdyZWVtZW50IG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLiBFYWNoIHBhcnR5IHdhaXZlcwotaXRzIHJpZ2h0cyB0byBhIGp1cnkgdHJpYWwgaW4gYW55IHJlc3VsdGluZyBsaXRpZ2F0aW9uLjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWw+PCFbaWYgIXN1cHBvcnRFbXB0eVBhcmFzXT4mbmJzcDs8IVtlbmRpZl0+PG86cD48L286cD48L3A+Ci0KLTwvZGl2PgotCi08L2JvZHk+Ci0KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NjAwZTAuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIGZlYXR1cmUucHJvcGVydGllcwotIyBjb250YWlucyBleHRlcm5hbGl6ZWQgc3RyaW5ncyBmb3IgZmVhdHVyZS54bWwKLSMgIiVmb28iIGluIGZlYXR1cmUueG1sIGNvcnJlc3BvbmRzIHRvIHRoZSBrZXkgImZvbyIgaW4gdGhpcyBmaWxlCi0jIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCi0jIFRoaXMgZmlsZSBzaG91bGQgYmUgdHJhbnNsYXRlZC4KLQotIyAiZmVhdHVyZU5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgZmVhdHVyZQotZmVhdHVyZU5hbWU9V1NUIFdlYiBTZXJ2aWNlcyBVSQotCi0jICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKLQotIyAidXBkYXRlU2l0ZU5hbWUiIHByb3BlcnR5IC0gbGFiZWwgZm9yIHRoZSB1cGRhdGUgc2l0ZQotdXBkYXRlU2l0ZU5hbWU9VGhlIEVjbGlwc2UgV2ViIFRvb2xzIFBsYXRmb3JtIChXVFApIFByb2plY3QgdXBkYXRlIHNpdGUKLQotIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKLWRlc2NyaXB0aW9uPVdlYiBTZXJ2aWNlcyBVSSB0b29scy4KLQotIyAiY29weXJpZ2h0IiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBDb3B5cmlnaHQiCi1jb3B5cmlnaHQ9XAotQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLlxuXAotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAotYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCi13aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKLVxuXAotQ29udHJpYnV0b3JzOlxuXAotICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvblxuCi0jIyMjIyMjIyMjIyMjIyMjIGVuZCBvZiBjb3B5cmlnaHQgcHJvcGVydHkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgImxpY2Vuc2VVUkwiIHByb3BlcnR5IC0gVVJMIG9mIHRoZSAiRmVhdHVyZSBMaWNlbnNlIgotIyBkbyBub3QgdHJhbnNsYXRlIHZhbHVlIC0ganVzdCBjaGFuZ2UgdG8gcG9pbnQgdG8gYSBsb2NhbGUtc3BlY2lmaWMgSFRNTCBwYWdlCi1saWNlbnNlVVJMPWxpY2Vuc2UuaHRtbAotCi0jICJsaWNlbnNlIiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIgotIyBzaG91bGQgYmUgcGxhaW4gdGV4dCB2ZXJzaW9uIG9mIGxpY2Vuc2UgYWdyZWVtZW50IHBvaW50ZWQgdG8gYmUgImxpY2Vuc2VVUkwiCi1saWNlbnNlPVwKLUVDTElQU0UgRk9VTkRBVElPTiBTT0ZUV0FSRSBVU0VSIEFHUkVFTUVOVFxuXAotSnVuZSAwNiwgMjAwN1xuXAotXG5cCi1Vc2FnZSBPZiBDb250ZW50XG5cCi1cblwKLVRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKLU9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAotVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCi1BR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKLU5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1VcblwKLUFHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlRcblwKLUFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTXG5cCi1PUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRVxuXAotVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OU1xuXAotT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRURcblwKLUJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC5cblwKLVxuXAotQXBwbGljYWJsZSBMaWNlbnNlc1xuXAotXG5cCi1Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvblxuXAotaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWNcblwKLUxpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzXG5cCi1Db250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC5cblwKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LlxuXAotXG5cCi1Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSxcblwKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWU1xuXAotcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBDVlMgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKLWFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAotXG5cCi0gICAtIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCi0gICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKLSAgICAgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS5cblwKLSAgIC0gRWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhPyBBUmNoaXZlKVxuXAotICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCi0gICAtIEEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuXAotICAgICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAiZmVhdHVyZXMiLlxuXAotICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKLSAgICAgbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLlxuXAotICAgLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXNcblwKLSAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCi1cblwKLUZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBGaWxlcyBuYW1lZFxuXAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2ZcblwKLUluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlXG5cCi1jb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZCBJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkXG5cCi1pbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlXG5cCi1MaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlXG5cCi1pbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczpcblwKLVxuXAotICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKLSAgIC0gUGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXNcblwKLSAgIC0gSW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSc1xuXAotICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCi0gICAtIEZlYXR1cmUgZGlyZWN0b3JpZXNcblwKLVxuXAotTm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZVxuXAotRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGVcblwKLUxpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWluc1xuXAotSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3VcblwKLXdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtXG5cCi15b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluXG5cCi10aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiLiBTdWNoIEFib3V0cyxcblwKLUZlYXR1cmUgTGljZW5zZXMgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZFxuXAotY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyXG5cCi11c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IGRpcmVjdG9yeS5cblwKLVxuXAotVEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUyBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSXG5cCi1UTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy5cblwKLVNPTUUgT0YgVEhFU0UgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTpcblwKLVxuXAotICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKLSAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKLSAgICAtIElCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbClcblwKLSAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAotICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKLSAgICAtIENvbW1vbiBEZXZlbG9wbWVudCBhbmQgRGlzdHJpYnV0aW9uIExpY2Vuc2UgKENEREwpIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5zdW4uY29tL2NkZGwvY2RkbC5odG1sKVxuXAotXG5cCi1JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SXG5cCi1UTyBVU0UgT0YgVEhFIENPTlRFTlQuIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2Ugb3IgRmVhdHVyZSBVcGRhdGUgTGljZW5zZVxuXAotaXMgcHJvdmlkZWQsIHBsZWFzZSBjb250YWN0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG8gZGV0ZXJtaW5lIHdoYXQgdGVybXMgYW5kIGNvbmRpdGlvbnNcblwKLWdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC5cblwKLVxuXAotQ3J5cHRvZ3JhcGh5XG5cCi1cblwKLUNvbnRlbnQgbWF5IGNvbnRhaW4gZW5jcnlwdGlvbiBzb2Z0d2FyZS4gVGhlIGNvdW50cnkgaW4gd2hpY2ggeW91IGFyZVxuXAotY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLFxuXAotYW5kL29yIHJlLWV4cG9ydCB0byBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRVxuXAotdXNpbmcgYW55IGVuY3J5cHRpb24gc29mdHdhcmUsIHBsZWFzZSBjaGVjayB0aGUgY291bnRyeSdzIGxhd3MsXG5cCi1yZWd1bGF0aW9ucyBhbmQgcG9saWNpZXMgY29uY2VybmluZyB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBvciB1c2UsXG5cCi1hbmQgcmUtZXhwb3J0IG9mIGVuY3J5cHRpb24gc29mdHdhcmUsIHRvIHNlZSBpZiB0aGlzIGlzIHBlcm1pdHRlZC5cblwKLVxuXAotSmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguXG4KLSMjIyMjIyMjIyMjIGVuZCBvZiBsaWNlbnNlIHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvZmVhdHVyZS54bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9mZWF0dXJlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM1MDdkZC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9mZWF0dXJlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08ZmVhdHVyZQotICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlIgotICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKLSAgICAgIHZlcnNpb249IjMuMS4wLnF1YWxpZmllciIKLSAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiPgotCi0gICA8ZGVzY3JpcHRpb24+Ci0gICAgICAlZGVzY3JpcHRpb24KLSAgIDwvZGVzY3JpcHRpb24+Ci0KLSAgIDxjb3B5cmlnaHQ+Ci0gICAgICAlY29weXJpZ2h0Ci0gICA8L2NvcHlyaWdodD4KLQotICAgPGxpY2Vuc2UgdXJsPSIlbGljZW5zZVVSTCI+Ci0gICAgICAlbGljZW5zZQotICAgPC9saWNlbnNlPgotCi0gICA8dXJsPgotICAgICAgPHVwZGF0ZSBsYWJlbD0iJXVwZGF0ZVNpdGVOYW1lIiB1cmw9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy93ZWJ0b29scy91cGRhdGVzLyIvPgotICAgPC91cmw+Ci0KLSAgIDxpbmNsdWRlcwotICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi0gICA8aW5jbHVkZXMKLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiLz4KLQotICAgPGluY2x1ZGVzCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LnhtbF91aS5mZWF0dXJlIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5pbmZvcG9wIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzLmluZm9wb3AiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MudWkiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NkbC51aSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53c2kudWkiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLTwvZmVhdHVyZT4KZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL2xpY2Vuc2UuaHRtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL2xpY2Vuc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY0NDU5OC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9saWNlbnNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53M2Mub3JnL1RSLzE5OTkvUkVDLWh0bWw0MDEtMTk5OTEyMjQvbG9vc2UuZHRkIj4KLTwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwNDQpaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwvbm90aWNlLmh0bWwgLS0+Ci08SFRNTD48SEVBRD48VElUTEU+RWNsaXBzZS5vcmcgU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L1RJVExFPgotPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPE1FVEEgY29udGVudD0iTVNIVE1MIDYuMDAuMjgwMC4xNDc5IiBuYW1lPUdFTkVSQVRPUj48L0hFQUQ+Ci08Qk9EWSBsYW5nPUVOLVVTIHZMaW5rPXB1cnBsZSBsaW5rPWJsdWU+Ci08SDI+RWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9IMj4KLTxQPkp1bmUgMDYsIDIwMDc8L1A+Ci08SDM+VXNhZ2UgT2YgQ29udGVudDwvSDM+Ci08UD5USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gCi1BTkQvT1IgT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUyAoQ09MTEVDVElWRUxZICJDT05URU5UIikuIFVTRSBPRiAKLVRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIAotVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgCi1CRUxPVy4gQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVSBBR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIAotQlkgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIAotQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSAKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIAotQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVywgVEhFTiBZT1UgCi1NQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC48L1A+Ci08SDM+QXBwbGljYWJsZSBMaWNlbnNlczwvSDM+Ci08UD5Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgCi1Gb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgCi1QdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgCi1Db250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCA8QSAKLWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotPFA+Q29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsIAotZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZS5vcmcgQ1ZTIHJlcG9zaXRvcnkgCi0oIlJlcG9zaXRvcnkiKSBpbiBDVlMgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGUgYXMgZG93bmxvYWRhYmxlIAotYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS48L1A+Ci08UD5Db250ZW50IG1heSBiZSBhcHBvcnRpb25lZCBpbnRvIHBsdWctaW5zICgiUGx1Zy1pbnMiKSwgcGx1Zy1pbiBmcmFnbWVudHMgCi0oIkZyYWdtZW50cyIpLCBhbmQgZmVhdHVyZXMgKCJGZWF0dXJlcyIpLiBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgCi1QbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiBGaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSAKLWNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIHRoZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIAotYXNzb2NpYXRlZCB3aXRoIGEgRmVhdHVyZS4gUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBhcmUgbG9jYXRlZCBpbiBkaXJlY3RvcmllcyAKLW5hbWVkICJwbHVnaW5zIiBhbmQgRmVhdHVyZXMgYXJlIGxvY2F0ZWQgaW4gZGlyZWN0b3JpZXMgbmFtZWQgImZlYXR1cmVzIi48L1A+Ci08UD5GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWQgCi0iZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCAKLUZlYXR1cmVzLjwvUD4KLTxQPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIAotaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgCi1GZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAKLSgiRmVhdHVyZSBMaWNlbnNlcyIpLiBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IAotZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlIGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgCi1sb2NhdGlvbnM6PC9QPgotPFVMPgotICA8TEk+VGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5IAotICA8TEk+UGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXMgCi0gIDxMST5TdWJkaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICJzcmMiIG9mIGNlcnRhaW4gUGx1Zy1pbnMgCi0gIDxMST5GZWF0dXJlIGRpcmVjdG9yaWVzIDwvTEk+PC9VTD4KLTxQPk5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCAKLXVzaW5nIHRoZSBFY2xpcHNlIFVwZGF0ZSBNYW5hZ2VyLCB5b3UgbXVzdCBhZ3JlZSB0byBhIGxpY2Vuc2UgKCJGZWF0dXJlIFVwZGF0ZSAKLUxpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWlucyBJbmNsdWRlZCAKLUZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIAotYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIHRoZSBJbmNsdWRlZCBGZWF0dXJlcyBvciBpbmZvcm0geW91IHdoZXJlIHlvdSBjYW4gCi1sb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluIHRoZSAibGljZW5zZSIgcHJvcGVydHkgb2YgCi1maWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsIEZlYXR1cmUgTGljZW5zZXMgYW5kIEZlYXR1cmUgCi1VcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyAKLWFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyIHVzZSBvZiB0aGUgYXNzb2NpYXRlZCBDb250ZW50IGluIHRoYXQgCi1kaXJlY3RvcnkuPC9QPgotPFA+VEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUyBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgCi1PUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuIFNPTUUgT0YgVEhFU0UgCi1PVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOjwvUD4KLTxVTD4KLSAgPExJPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWw8L0E+KSAKLQotICA8TEk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRTwvQT4pIAotCi0gIDxMST5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjA8L0E+KSAKLQotICA8TEk+SUJNIFB1YmxpYyBMaWNlbnNlIDEuMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbCI+aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWw8L0E+KSAKLQotICA8TEk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sIj5odHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbDwvQT4pIAotCi0gIDxMST5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbCI+aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sPC9BPikgCi0gIDwvTEk+Ci0gICAgCi0gIDxMST5Db21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIChDRERMKSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3LnN1bi5jb20vY2RkbC9jZGRsLmh0bWwiPmh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbCk8L0E+Ci0gIDwvTEk+Ci08L1VMPgotPFA+SVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUiAKLVRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIGlzIAotcHJvdmlkZWQsIHBsZWFzZSBjb250YWN0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG8gZGV0ZXJtaW5lIHdoYXQgdGVybXMgYW5kIAotY29uZGl0aW9ucyBnb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuPC9QPgotPEgzPkNyeXB0b2dyYXBoeTwvSDM+Ci08UD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgCi1jdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsIGFuZC9vciAKLXJlLWV4cG9ydCB0byBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgCi1lbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLCByZWd1bGF0aW9ucyBhbmQgcG9saWNpZXMgCi1jb25jZXJuaW5nIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCAKLXRvIHNlZSBpZiB0aGlzIGlzIHBlcm1pdHRlZC48L1A+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2Fib3V0Lmh0bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTgxZDQ2Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLTxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotCi08UD5KdW5lLCAyMDA4PC9QPgkKLTxoMz5MaWNlbnNlPC9oMz4KLQotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KLQotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudC48L3A+Ci0KLTxoMz5Tb3VyY2UgQ29kZTwvaDM+Ci08cD5UaGlzIHBsdWctaW4gY29udGFpbnMgc291cmNlIGNvZGUgemlwIGZpbGVzICgmcXVvdDtTb3VyY2UgWmlwcyZxdW90OykgdGhhdCBjb3JyZXNwb25kIHRvIGJpbmFyeSBjb250ZW50IGluIG90aGVyIHBsdWctaW5zLiBUaGVzZSBTb3VyY2UgWmlwcyBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgZGlmZmVyZW50IGxpY2Vuc2UKLWFncmVlbWVudHMgYW5kL29yIG5vdGljZXMuIERldGFpbHMgYWJvdXQgdGhlc2UgbGljZW5zZSBhZ3JlZW1lbnRzIGFuZCBub3RpY2VzIGFyZSBjb250YWluZWQgaW4gJnF1b3Q7YWJvdXQuaHRtbCZxdW90OyBmaWxlcyAoJnF1b3Q7QWJvdXRzJnF1b3Q7KSBsb2NhdGVkIGluIHN1Yi1kaXJlY3RvcmllcyBpbiB0aGUKLXNyYy8gZGlyZWN0b3J5IG9mIHRoaXMgcGx1Zy1pbi4gU3VjaCBBYm91dHMgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBTb3VyY2UgWmlwcyBpbiB0aGF0IGRpcmVjdG9yeSwgbm90IHRoZSBFUEwuPC9wPgotCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9hYm91dC5pbmkgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9hYm91dC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkYTVhNDAuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYWJvdXQuaW5pCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyBhYm91dC5pbmkKLSMgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBmZWF0dXJlCi0jIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCi0jICIla2V5IiBhcmUgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZGVmaW5lZCBpbiBhYm91dC5wcm9wZXJ0aWVzCi0jIFRoaXMgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQuCi0KLSMgUHJvcGVydHkgImFib3V0VGV4dCIgY29udGFpbnMgYmx1cmIgZm9yICJBYm91dCIgZGlhbG9nICh0cmFuc2xhdGVkKQotYWJvdXRUZXh0PSVibHVyYgotCi0jIFByb3BlcnR5ICJ3aW5kb3dJbWFnZSIgY29udGFpbnMgcGF0aCB0byB3aW5kb3cgaWNvbiAoMTZ4MTYpCi0jIG5lZWRlZCBmb3IgcHJpbWFyeSBmZWF0dXJlcyBvbmx5Ci0KLSMgUHJvcGVydHkgImZlYXR1cmVJbWFnZSIgY29udGFpbnMgcGF0aCB0byBmZWF0dXJlIGltYWdlICgzMngzMikKLWZlYXR1cmVJbWFnZT13dHBfcHJvZDMyLnBuZwotCi0jIFByb3BlcnR5ICJhYm91dEltYWdlIiBjb250YWlucyBwYXRoIHRvIHByb2R1Y3QgaW1hZ2UgKDUwMHgzMzAgb3IgMTE1eDE2NCkKLSMgbmVlZGVkIGZvciBwcmltYXJ5IGZlYXR1cmVzIG9ubHkKLQotIyBQcm9wZXJ0eSAiYXBwTmFtZSIgY29udGFpbnMgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gKG5vdCB0cmFuc2xhdGVkKQotIyBuZWVkZWQgZm9yIHByaW1hcnkgZmVhdHVyZXMgb25seQotCi0jIFByb3BlcnR5ICJ3ZWxjb21lUGFnZSIgY29udGFpbnMgcGF0aCB0byB3ZWxjb21lIHBhZ2UgKHNwZWNpYWwgWE1MLWJhc2VkIGZvcm1hdCkKLSMgb3B0aW9uYWwKLQotIyBQcm9wZXJ0eSAid2VsY29tZVBlcnNwZWN0aXZlIiBjb250YWlucyB0aGUgaWQgb2YgdGhlIHBlcnNwZWN0aXZlIGluIHdoaWNoIHRoZQotIyB3ZWxjb21lIHBhZ2UgaXMgdG8gYmUgb3BlbmVkLgotIyBvcHRpb25hbAotCi0KLQotCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9hYm91dC5tYXBwaW5ncyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2Fib3V0Lm1hcHBpbmdzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjgzOTBhLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2Fib3V0Lm1hcHBpbmdzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0jIGFib3V0Lm1hcHBpbmdzCi0jIGNvbnRhaW5zIGZpbGwtaW5zIGZvciBhYm91dC5wcm9wZXJ0aWVzCi0jIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCi0jIFRoaXMgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQuCi0KLTA9QGJ1aWxkQApkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYWJvdXQucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2Fib3V0LnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzOTc4N2EuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYWJvdXQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIGFib3V0LnByb3BlcnRpZXMKLSMgY29udGFpbnMgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZm9yIGFib3V0LmluaQotIyBqYXZhLmlvLlByb3BlcnRpZXMgZmlsZSAoSVNPIDg4NTktMSB3aXRoICJcIiBlc2NhcGVzKQotIyBmaWxsLWlucyBhcmUgc3VwcGxpZWQgYnkgYWJvdXQubWFwcGluZ3MKLSMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgotIwotIyBEbyBub3QgdHJhbnNsYXRlIGFueSB2YWx1ZXMgc3Vycm91bmRlZCBieSB7fQotCi1ibHVyYj1XZWIgU3RhbmRhcmQgVG9vbHMgLSBXZWIgU2VydmljZSBVSVxuXAotXG5cCi1WZXJzaW9uOiB7ZmVhdHVyZVZlcnNpb259XG5cCi1CdWlsZCBpZDogezB9XG5cCi1cblwKLShjKSBDb3B5cmlnaHQgRWNsaXBzZSBjb250cmlidXRvcnMgYW5kIG90aGVycyAyMDA1LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblwKLVZpc2l0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMKLQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYnVpbGQucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwYTU3NWMuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1iaW4uaW5jbHVkZXMgPSBhYm91dC5odG1sLCBhYm91dC5pbmksIGFib3V0Lm1hcHBpbmdzLCBhYm91dC5wcm9wZXJ0aWVzLCB3dHBfcHJvZDMyLnBuZywgcGx1Z2luLnByb3BlcnRpZXMsIHBsdWdpbi54bWwsIHNyYy8qKiwgTUVUQS1JTkYvCi1zb3VyY2VQbHVnaW4gPSB0cnVlCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS9wbHVnaW4ucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2E2NTQ1Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXBsdWdpbk5hbWU9V2ViIFN0YW5kYXJkIFRvb2xzIC0gV2ViIFNlcnZpY2UgVUkgU291cmNlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL3d0cF9wcm9kMzIuZ2lmIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvd3RwX3Byb2QzMi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZmI0NGEuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVCdW5kbGUvd3RwX3Byb2QzMi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUJ1bmRsZS93dHBfcHJvZDMyLnBuZyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL3d0cF9wcm9kMzIucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmNlYWIzLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlQnVuZGxlL3d0cF9wcm9kMzIucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVGZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NjMjI5Mi4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1iaW4uaW5jbHVkZXMgPVwKLWVwbC12MTAuaHRtbCxcCi1lY2xpcHNlX3VwZGF0ZV8xMjAuanBnLFwKLWZlYXR1cmUueG1sLFwKLWZlYXR1cmUucHJvcGVydGllcyxcCi1saWNlbnNlLmh0bWwKLQotZ2VuZXJhdGUuZmVhdHVyZUBvcmcuZWNsaXBzZS53c3Qud3NfY29yZS5mZWF0dXJlLnNvdXJjZSA9IG9yZy5lY2xpcHNlLndzdC53c19jb3JlLmZlYXR1cmUKLQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVGZWF0dXJlL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZkZjcwOC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9lcGwtdjEwLmh0bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvZXBsLXYxMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjJhZDI5Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9lcGwtdjEwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotPGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIgoteG1sbnM6dz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIKLXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4KLQotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KLTxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9V29yZC5Eb2N1bWVudD4KLTxtZXRhIG5hbWU9R2VuZXJhdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPG1ldGEgbmFtZT1PcmlnaW5hdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPGxpbmsgcmVsPUZpbGUtTGlzdAotaHJlZj0iLi9FY2xpcHNlJTIwRVBMJTIwMjAwM18xMV8xMCUyMEZpbmFsX2ZpbGVzL2ZpbGVsaXN0LnhtbCI+Ci08dGl0bGU+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIFZlcnNpb24gMS4wPC90aXRsZT4KLTwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDxvOkRvY3VtZW50UHJvcGVydGllcz4KLSAgPG86UmV2aXNpb24+MjwvbzpSZXZpc2lvbj4KLSAgPG86VG90YWxUaW1lPjM8L286VG90YWxUaW1lPgotICA8bzpDcmVhdGVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkNyZWF0ZWQ+Ci0gIDxvOkxhc3RTYXZlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpMYXN0U2F2ZWQ+Ci0gIDxvOlBhZ2VzPjQ8L286UGFnZXM+Ci0gIDxvOldvcmRzPjE2MjY8L286V29yZHM+Ci0gIDxvOkNoYXJhY3RlcnM+OTI3MDwvbzpDaGFyYWN0ZXJzPgotICAgPG86TGluZXM+Nzc8L286TGluZXM+Ci0gIDxvOlBhcmFncmFwaHM+MTg8L286UGFyYWdyYXBocz4KLSAgPG86Q2hhcmFjdGVyc1dpdGhTcGFjZXM+MTEzODQ8L286Q2hhcmFjdGVyc1dpdGhTcGFjZXM+Ci0gIDxvOlZlcnNpb24+OS40NDAyPC9vOlZlcnNpb24+Ci0gPC9vOkRvY3VtZW50UHJvcGVydGllcz4KLTwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDx3OldvcmREb2N1bWVudD4KLSAgPHc6VHJhY2tSZXZpc2lvbnMvPgotIDwvdzpXb3JkRG9jdW1lbnQ+Ci08L3htbD48IVtlbmRpZl0tLT4KLTxzdHlsZT4KLTwhLS0KLSAvKiBGb250IERlZmluaXRpb25zICovCi1AZm9udC1mYWNlCi0Je2ZvbnQtZmFtaWx5OlRhaG9tYTsKLQlwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDsKLQltc28tZm9udC1jaGFyc2V0OjA7Ci0JbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7Ci0JbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7Ci0JbXNvLWZvbnQtc2lnbmF0dXJlOjU1MzY3OTQ5NSAtMjE0NzQ4MzY0OCA4IDAgNjYwNDcgMDt9Ci0gLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KLXAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwKLQl7bXNvLXN0eWxlLXBhcmVudDoiIjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wCi0Je21hcmdpbi1yaWdodDowaW47Ci0JbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87Ci0JbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87Ci0JbWFyZ2luLWxlZnQ6MGluOwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAuQmFsbG9vblRleHQsIGxpLkJhbGxvb25UZXh0LCBkaXYuQmFsbG9vblRleHQKLQl7bXNvLXN0eWxlLW5hbWU6IkJhbGxvb24gVGV4dCI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZTo4LjBwdDsKLQlmb250LWZhbWlseTpUYWhvbWE7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotQHBhZ2UgU2VjdGlvbjEKLQl7c2l6ZTo4LjVpbiAxMS4waW47Ci0JbWFyZ2luOjEuMGluIDEuMjVpbiAxLjBpbiAxLjI1aW47Ci0JbXNvLWhlYWRlci1tYXJnaW46LjVpbjsKLQltc28tZm9vdGVyLW1hcmdpbjouNWluOwotCW1zby1wYXBlci1zb3VyY2U6MDt9Ci1kaXYuU2VjdGlvbjEKLQl7cGFnZTpTZWN0aW9uMTt9Ci0tLT4KLTwvc3R5bGU+Ci08L2hlYWQ+Ci0KLTxib2R5IGxhbmc9RU4tVVMgc3R5bGU9J3RhYi1pbnRlcnZhbDouNWluJz4KLQotPGRpdiBjbGFzcz1TZWN0aW9uMT4KLQotPHAgYWxpZ249Y2VudGVyIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcic+PGI+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIHYgMS4wPC9iPgotPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VEhFIEFDQ09NUEFOWUlORyBQUk9HUkFNIElTIFBST1ZJREVEIFVOREVSCi1USEUgVEVSTVMgT0YgVEhJUyBFQ0xJUFNFIFBVQkxJQyBMSUNFTlNFICgmcXVvdDtBR1JFRU1FTlQmcXVvdDspLiBBTlkgVVNFLAotUkVQUk9EVUNUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBDT05TVElUVVRFUyBSRUNJUElFTlQnUyBBQ0NFUFRBTkNFCi1PRiBUSElTIEFHUkVFTUVOVC48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjEuIERFRklOSVRJT05TPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0aW9uJnF1b3Q7IG1lYW5zOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaW4gdGhlIGNhc2Ugb2YgdGhlIGluaXRpYWwgQ29udHJpYnV0b3IsIHRoZSBpbml0aWFsIGNvZGUgYW5kIGRvY3VtZW50YXRpb24KLWRpc3RyaWJ1dGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBhbmQ8YnIgY2xlYXI9bGVmdD4KLWIpIGluIHRoZSBjYXNlIG9mIGVhY2ggc3Vic2VxdWVudCBDb250cmlidXRvcjo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotY2hhbmdlcyB0byB0aGUgUHJvZ3JhbSwgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1hZGRpdGlvbnMgdG8gdGhlIFByb2dyYW07PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+d2hlcmUKLXN1Y2ggY2hhbmdlcyBhbmQvb3IgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtIG9yaWdpbmF0ZSBmcm9tIGFuZCBhcmUgZGlzdHJpYnV0ZWQKLWJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4gQSBDb250cmlidXRpb24gJ29yaWdpbmF0ZXMnIGZyb20gYSBDb250cmlidXRvcgotaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24KLXN1Y2ggQ29udHJpYnV0b3IncyBiZWhhbGYuIENvbnRyaWJ1dGlvbnMgZG8gbm90IGluY2x1ZGUgYWRkaXRpb25zIHRvIHRoZQotUHJvZ3JhbSB3aGljaDogKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGluIGNvbmp1bmN0aW9uCi13aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93biBsaWNlbnNlIGFncmVlbWVudCwgYW5kIChpaSkgYXJlIG5vdCBkZXJpdmF0aXZlCi13b3JrcyBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dG9yJnF1b3Q7IG1lYW5zIGFueSBwZXJzb24gb3IKLWVudGl0eSB0aGF0IGRpc3RyaWJ1dGVzIHRoZSBQcm9ncmFtLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7TGljZW5zZWQgUGF0ZW50cyAmcXVvdDsgbWVhbiBwYXRlbnQKLWNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3Igd2hpY2ggYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlCi1vciBzYWxlIG9mIGl0cyBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UHJvZ3JhbSZxdW90OyBtZWFucyB0aGUgQ29udHJpYnV0aW9ucwotZGlzdHJpYnV0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoaXMgQWdyZWVtZW50Ljwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UmVjaXBpZW50JnF1b3Q7IG1lYW5zIGFueW9uZSB3aG8KLXJlY2VpdmVzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYWxsIENvbnRyaWJ1dG9ycy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjIuIEdSQU5UIE9GIFJJR0hUUzwvc3Bhbj48L2I+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgUmVjaXBpZW50Ci1hIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvPHNwYW4KLXN0eWxlPSdjb2xvcjpyZWQnPiA8L3NwYW4+cmVwcm9kdWNlLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YsIHB1YmxpY2x5Ci1kaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlIGFuZCBzdWJsaWNlbnNlIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaAotQ29udHJpYnV0b3IsIGlmIGFueSwgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlCi1mb3JtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzCi1SZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz4gPC9zcGFuPnJveWFsdHktZnJlZQotcGF0ZW50IGxpY2Vuc2UgdW5kZXIgTGljZW5zZWQgUGF0ZW50cyB0byBtYWtlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNlbGwsIGltcG9ydAotYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2ggQ29udHJpYnV0b3IsIGlmIGFueSwgaW4gc291cmNlCi1jb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIHBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbgotb2YgdGhlIENvbnRyaWJ1dGlvbiBhbmQgdGhlIFByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMgYWRkZWQKLWJ5IHRoZSBDb250cmlidXRvciwgc3VjaCBhZGRpdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGNhdXNlcyBzdWNoIGNvbWJpbmF0aW9uCi10byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvCi1hbnkgb3RoZXIgY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUgdGhlIENvbnRyaWJ1dGlvbi4gTm8gaGFyZHdhcmUgcGVyIHNlIGlzCi1saWNlbnNlZCBoZXJldW5kZXIuIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmMpCi1SZWNpcGllbnQgdW5kZXJzdGFuZHMgdGhhdCBhbHRob3VnaCBlYWNoIENvbnRyaWJ1dG9yIGdyYW50cyB0aGUgbGljZW5zZXMgdG8gaXRzCi1Db250cmlidXRpb25zIHNldCBmb3J0aCBoZXJlaW4sIG5vIGFzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvcgotdGhhdCB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBpbmZyaW5nZSB0aGUgcGF0ZW50IG9yIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eQotcmlnaHRzIG9mIGFueSBvdGhlciBlbnRpdHkuIEVhY2ggQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8gUmVjaXBpZW50Ci1mb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsCi1wcm9wZXJ0eSByaWdodHMgb3Igb3RoZXJ3aXNlLiBBcyBhIGNvbmRpdGlvbiB0byBleGVyY2lzaW5nIHRoZSByaWdodHMgYW5kCi1saWNlbnNlcyBncmFudGVkIGhlcmV1bmRlciwgZWFjaCBSZWNpcGllbnQgaGVyZWJ5IGFzc3VtZXMgc29sZSByZXNwb25zaWJpbGl0eQotdG8gc2VjdXJlIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwKLWlmIGEgdGhpcmQgcGFydHkgcGF0ZW50IGxpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgUmVjaXBpZW50IHRvIGRpc3RyaWJ1dGUKLXRoZSBQcm9ncmFtLCBpdCBpcyBSZWNpcGllbnQncyByZXNwb25zaWJpbGl0eSB0byBhY3F1aXJlIHRoYXQgbGljZW5zZSBiZWZvcmUKLWRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5kKQotRWFjaCBDb250cmlidXRvciByZXByZXNlbnRzIHRoYXQgdG8gaXRzIGtub3dsZWRnZSBpdCBoYXMgc3VmZmljaWVudCBjb3B5cmlnaHQKLXJpZ2h0cyBpbiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIHRvIGdyYW50IHRoZSBjb3B5cmlnaHQgbGljZW5zZSBzZXQgZm9ydGggaW4KLXRoaXMgQWdyZWVtZW50LiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+My4gUkVRVUlSRU1FTlRTPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QSBDb250cmlidXRvciBtYXkgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgdGhlCi1Qcm9ncmFtIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDo8L3NwYW4+Ci08L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBjb21wbGllcyB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudDsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLWl0cyBsaWNlbnNlIGFncmVlbWVudDo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotZWZmZWN0aXZlbHkgZGlzY2xhaW1zIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCB3YXJyYW50aWVzIGFuZAotY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiB0aXRsZQotYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZCBpbXBsaWVkIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiBtZXJjaGFudGFiaWxpdHkKLWFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZTsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1lZmZlY3RpdmVseSBleGNsdWRlcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgbGlhYmlsaXR5IGZvciBkYW1hZ2VzLAotaW5jbHVkaW5nIGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsIGluY2lkZW50YWwgYW5kIGNvbnNlcXVlbnRpYWwgZGFtYWdlcywgc3VjaAotYXMgbG9zdCBwcm9maXRzOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paWkpCi1zdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIEFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0Ci1Db250cmlidXRvciBhbG9uZSBhbmQgbm90IGJ5IGFueSBvdGhlciBwYXJ0eTsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aXYpCi1zdGF0ZXMgdGhhdCBzb3VyY2UgY29kZSBmb3IgdGhlIFByb2dyYW0gaXMgYXZhaWxhYmxlIGZyb20gc3VjaCBDb250cmlidXRvciwgYW5kCi1pbmZvcm1zIGxpY2Vuc2VlcyBob3cgdG8gb2J0YWluIGl0IGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhCi1tZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgZXhjaGFuZ2UuPHNwYW4gc3R5bGU9J2NvbG9yOmJsdWUnPiA8L3NwYW4+PC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPldoZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlCi1jb2RlIGZvcm06PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMgQWdyZWVtZW50OyBhbmQgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikgYQotY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29udHJpYnV0b3JzIG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIGFueQotY29weXJpZ2h0IG5vdGljZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVhY2ggQ29udHJpYnV0b3IgbXVzdCBpZGVudGlmeSBpdHNlbGYgYXMgdGhlCi1vcmlnaW5hdG9yIG9mIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgaW4gYSBtYW5uZXIgdGhhdCByZWFzb25hYmx5IGFsbG93cwotc3Vic2VxdWVudCBSZWNpcGllbnRzIHRvIGlkZW50aWZ5IHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBDb250cmlidXRpb24uIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz40LiBDT01NRVJDSUFMIERJU1RSSUJVVElPTjwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbW1lcmNpYWwgZGlzdHJpYnV0b3JzIG9mIHNvZnR3YXJlIG1heQotYWNjZXB0IGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyB3aXRoIHJlc3BlY3QgdG8gZW5kIHVzZXJzLCBidXNpbmVzcyBwYXJ0bmVycwotYW5kIHRoZSBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2UKLW9mIHRoZSBQcm9ncmFtLCB0aGUgQ29udHJpYnV0b3Igd2hvIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbAotcHJvZHVjdCBvZmZlcmluZyBzaG91bGQgZG8gc28gaW4gYSBtYW5uZXIgd2hpY2ggZG9lcyBub3QgY3JlYXRlIHBvdGVudGlhbAotbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIHN1Y2ggQ29udHJpYnV0b3IgKCZxdW90O0NvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yJnF1b3Q7KSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyCi1Db250cmlidXRvciAoJnF1b3Q7SW5kZW1uaWZpZWQgQ29udHJpYnV0b3ImcXVvdDspIGFnYWluc3QgYW55IGxvc3NlcywgZGFtYWdlcyBhbmQKLWNvc3RzIChjb2xsZWN0aXZlbHkgJnF1b3Q7TG9zc2VzJnF1b3Q7KSBhcmlzaW5nIGZyb20gY2xhaW1zLCBsYXdzdWl0cyBhbmQgb3RoZXIKLWxlZ2FsIGFjdGlvbnMgYnJvdWdodCBieSBhIHRoaXJkIHBhcnR5IGFnYWluc3QgdGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIHRvCi10aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvciBvbWlzc2lvbnMgb2Ygc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluCi1jb25uZWN0aW9uIHdpdGggaXRzIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdAotb2ZmZXJpbmcuIFRoZSBvYmxpZ2F0aW9ucyBpbiB0aGlzIHNlY3Rpb24gZG8gbm90IGFwcGx5IHRvIGFueSBjbGFpbXMgb3IgTG9zc2VzCi1yZWxhdGluZyB0byBhbnkgYWN0dWFsIG9yIGFsbGVnZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGluZnJpbmdlbWVudC4gSW4gb3JkZXIKLXRvIHF1YWxpZnksIGFuIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG11c3Q6IGEpIHByb21wdGx5IG5vdGlmeSB0aGUgQ29tbWVyY2lhbAotQ29udHJpYnV0b3IgaW4gd3JpdGluZyBvZiBzdWNoIGNsYWltLCBhbmQgYikgYWxsb3cgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IKLXRvIGNvbnRyb2wsIGFuZCBjb29wZXJhdGUgd2l0aCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiwgdGhlIGRlZmVuc2UgYW5kCi1hbnkgcmVsYXRlZCBzZXR0bGVtZW50IG5lZ290aWF0aW9ucy4gVGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG1heSBwYXJ0aWNpcGF0ZQotaW4gYW55IHN1Y2ggY2xhaW0gYXQgaXRzIG93biBleHBlbnNlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Rm9yIGV4YW1wbGUsIGEgQ29udHJpYnV0b3IgbWlnaHQgaW5jbHVkZSB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIFByb2R1Y3QgWC4gVGhhdCBDb250cmlidXRvciBpcyB0aGVuIGEKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmIHRoYXQgQ29tbWVyY2lhbCBDb250cmlidXRvciB0aGVuIG1ha2VzIHBlcmZvcm1hbmNlCi1jbGFpbXMsIG9yIG9mZmVycyB3YXJyYW50aWVzIHJlbGF0ZWQgdG8gUHJvZHVjdCBYLCB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kCi13YXJyYW50aWVzIGFyZSBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IncyByZXNwb25zaWJpbGl0eSBhbG9uZS4gVW5kZXIgdGhpcwotc2VjdGlvbiwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3Igd291bGQgaGF2ZSB0byBkZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlCi1vdGhlciBDb250cmlidXRvcnMgcmVsYXRlZCB0byB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kIHdhcnJhbnRpZXMsIGFuZCBpZiBhCi1jb3VydCByZXF1aXJlcyBhbnkgb3RoZXIgQ29udHJpYnV0b3IgdG8gcGF5IGFueSBkYW1hZ2VzIGFzIGEgcmVzdWx0LCB0aGUKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IgbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjUuIE5PIFdBUlJBTlRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBUSEUgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTiAmcXVvdDtBUyBJUyZxdW90OyBCQVNJUywgV0lUSE9VVAotV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVEIElOQ0xVRElORywKLVdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwKLU1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gRWFjaCBSZWNpcGllbnQgaXMgc29sZWx5Ci1yZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBhbmQgZGlzdHJpYnV0aW5nIHRoZQotUHJvZ3JhbSBhbmQgYXNzdW1lcyBhbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcwotQWdyZWVtZW50ICwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgcmlza3MgYW5kIGNvc3RzIG9mIHByb2dyYW0gZXJyb3JzLAotY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IKLWVxdWlwbWVudCwgYW5kIHVuYXZhaWxhYmlsaXR5IG9yIGludGVycnVwdGlvbiBvZiBvcGVyYXRpb25zLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ni4gRElTQ0xBSU1FUiBPRiBMSUFCSUxJVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIE5FSVRIRVIgUkVDSVBJRU5UIE5PUiBBTlkgQ09OVFJJQlVUT1JTIFNIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSBGT1IKLUFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotKElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLU9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi1ORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIERJU1RSSUJVVElPTiBPRgotVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCBIRVJFVU5ERVIsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjcuIEdFTkVSQUw8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIGludmFsaWQKLW9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yCi1lbmZvcmNlYWJpbGl0eSBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgYW5kIHdpdGhvdXQKLWZ1cnRoZXIgYWN0aW9uIGJ5IHRoZSBwYXJ0aWVzIGhlcmV0bywgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlCi1taW5pbXVtIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBSZWNpcGllbnQgaW5zdGl0dXRlcyBwYXRlbnQgbGl0aWdhdGlvbgotYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KQotYWxsZWdpbmcgdGhhdCB0aGUgUHJvZ3JhbSBpdHNlbGYgKGV4Y2x1ZGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIFByb2dyYW0gd2l0aAotb3RoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUpIGluZnJpbmdlcyBzdWNoIFJlY2lwaWVudCdzIHBhdGVudChzKSwgdGhlbiBzdWNoCi1SZWNpcGllbnQncyByaWdodHMgZ3JhbnRlZCB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlCi1zdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BbGwgUmVjaXBpZW50J3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50Ci1zaGFsbCB0ZXJtaW5hdGUgaWYgaXQgZmFpbHMgdG8gY29tcGx5IHdpdGggYW55IG9mIHRoZSBtYXRlcmlhbCB0ZXJtcyBvcgotY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlCi1wZXJpb2Qgb2YgdGltZSBhZnRlciBiZWNvbWluZyBhd2FyZSBvZiBzdWNoIG5vbmNvbXBsaWFuY2UuIElmIGFsbCBSZWNpcGllbnQncwotcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHRlcm1pbmF0ZSwgUmVjaXBpZW50IGFncmVlcyB0byBjZWFzZSB1c2UgYW5kCi1kaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLAotUmVjaXBpZW50J3Mgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYW5kIGFueSBsaWNlbnNlcyBncmFudGVkIGJ5Ci1SZWNpcGllbnQgcmVsYXRpbmcgdG8gdGhlIFByb2dyYW0gc2hhbGwgY29udGludWUgYW5kIHN1cnZpdmUuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZQotY29waWVzIG9mIHRoaXMgQWdyZWVtZW50LCBidXQgaW4gb3JkZXIgdG8gYXZvaWQgaW5jb25zaXN0ZW5jeSB0aGUgQWdyZWVtZW50IGlzCi1jb3B5cmlnaHRlZCBhbmQgbWF5IG9ubHkgYmUgbW9kaWZpZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXIuIFRoZSBBZ3JlZW1lbnQKLVN0ZXdhcmQgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIHB1Ymxpc2ggbmV3IHZlcnNpb25zIChpbmNsdWRpbmcgcmV2aXNpb25zKSBvZgotdGhpcyBBZ3JlZW1lbnQgZnJvbSB0aW1lIHRvIHRpbWUuIE5vIG9uZSBvdGhlciB0aGFuIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCBoYXMKLXRoZSByaWdodCB0byBtb2RpZnkgdGhpcyBBZ3JlZW1lbnQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgdGhlIGluaXRpYWwKLUFncmVlbWVudCBTdGV3YXJkLiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1heSBhc3NpZ24gdGhlIHJlc3BvbnNpYmlsaXR5IHRvCi1zZXJ2ZSBhcyB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgdG8gYSBzdWl0YWJsZSBzZXBhcmF0ZSBlbnRpdHkuIEVhY2ggbmV3IHZlcnNpb24KLW9mIHRoZSBBZ3JlZW1lbnQgd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBUaGUgUHJvZ3JhbQotKGluY2x1ZGluZyBDb250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gdGhlIHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgdW5kZXIgd2hpY2ggaXQgd2FzIHJlY2VpdmVkLiBJbiBhZGRpdGlvbiwgYWZ0ZXIgYSBuZXcgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCBpcyBwdWJsaXNoZWQsIENvbnRyaWJ1dG9yIG1heSBlbGVjdCB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKSB1bmRlciB0aGUgbmV3IHZlcnNpb24uIEV4Y2VwdCBhcyBleHByZXNzbHkgc3RhdGVkCi1pbiBTZWN0aW9ucyAyKGEpIGFuZCAyKGIpIGFib3ZlLCBSZWNpcGllbnQgcmVjZWl2ZXMgbm8gcmlnaHRzIG9yIGxpY2Vuc2VzIHRvCi10aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGFueSBDb250cmlidXRvciB1bmRlciB0aGlzIEFncmVlbWVudCwgd2hldGhlcgotZXhwcmVzc2x5LCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLiBBbGwgcmlnaHRzIGluIHRoZSBQcm9ncmFtIG5vdAotZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYXJlIHJlc2VydmVkLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhpcyBBZ3JlZW1lbnQgaXMgZ292ZXJuZWQgYnkgdGhlIGxhd3Mgb2YgdGhlCi1TdGF0ZSBvZiBOZXcgWW9yayBhbmQgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIG9mCi1BbWVyaWNhLiBObyBwYXJ0eSB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJyaW5nIGEgbGVnYWwgYWN0aW9uIHVuZGVyIHRoaXMKLUFncmVlbWVudCBtb3JlIHRoYW4gb25lIHllYXIgYWZ0ZXIgdGhlIGNhdXNlIG9mIGFjdGlvbiBhcm9zZS4gRWFjaCBwYXJ0eSB3YWl2ZXMKLWl0cyByaWdodHMgdG8gYSBqdXJ5IHRyaWFsIGluIGFueSByZXN1bHRpbmcgbGl0aWdhdGlvbi48L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsPjwhW2lmICFzdXBwb3J0RW1wdHlQYXJhc10+Jm5ic3A7PCFbZW5kaWZdPjxvOnA+PC9vOnA+PC9wPgotCi08L2Rpdj4KLQotPC9ib2R5PgotCi08L2h0bWw+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVGZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE1MzIyMy4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIGZlYXR1cmUucHJvcGVydGllcwotIyBjb250YWlucyBleHRlcm5hbGl6ZWQgc3RyaW5ncyBmb3IgZmVhdHVyZS54bWwKLSMgIiVmb28iIGluIGZlYXR1cmUueG1sIGNvcnJlc3BvbmRzIHRvIHRoZSBrZXkgImZvbyIgaW4gdGhpcyBmaWxlCi0jIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCi0jIFRoaXMgZmlsZSBzaG91bGQgYmUgdHJhbnNsYXRlZC4KLQotIyAiZmVhdHVyZU5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgZmVhdHVyZQotZmVhdHVyZU5hbWU9V1NUIFdTIFVJIERldmVsb3BlciBSZXNvdXJjZXMKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPVRoZSBFY2xpcHNlIFdlYiBUb29scyBQbGF0Zm9ybSAoV1RQKSBQcm9qZWN0IHVwZGF0ZSBzaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1Tb3VyY2UgY29kZSB6aXBzIGZvciBXU1QgV1MgVUkuCi0KLSMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgotY29weXJpZ2h0PVwKLUNvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy5cblwKLUFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKLWFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAotd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCi1cblwKLUNvbnRyaWJ1dG9yczpcblwKLSAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb25cbgotIyMjIyMjIyMjIyMjIyMjIyBlbmQgb2YgY29weXJpZ2h0IHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jICJsaWNlbnNlVVJMIiBwcm9wZXJ0eSAtIFVSTCBvZiB0aGUgIkZlYXR1cmUgTGljZW5zZSIKLSMgZG8gbm90IHRyYW5zbGF0ZSB2YWx1ZSAtIGp1c3QgY2hhbmdlIHRvIHBvaW50IHRvIGEgbG9jYWxlLXNwZWNpZmljIEhUTUwgcGFnZQotbGljZW5zZVVSTD1saWNlbnNlLmh0bWwKLQotIyAibGljZW5zZSIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgTGljZW5zZSIKLSMgc2hvdWxkIGJlIHBsYWluIHRleHQgdmVyc2lvbiBvZiBsaWNlbnNlIGFncmVlbWVudCBwb2ludGVkIHRvIGJlICJsaWNlbnNlVVJMIgotbGljZW5zZT1cCi1FQ0xJUFNFIEZPVU5EQVRJT04gU09GVFdBUkUgVVNFUiBBR1JFRU1FTlRcblwKLUp1bmUgMDYsIDIwMDdcblwKLVxuXAotVXNhZ2UgT2YgQ29udGVudFxuXAotXG5cCi1USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCi1PVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKLVVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAotQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCi1OT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCi1BR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCi1BTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAotT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKLU9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCi1CRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCi1cblwKLUFwcGxpY2FibGUgTGljZW5zZXNcblwKLVxuXAotVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb25cblwKLWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljXG5cCi1MaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpc1xuXAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKLVxuXAotQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCi1kb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlNcblwKLXJlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCi1hcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKLVxuXAotICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAotICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCi0gICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCi0gICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YT8gQVJjaGl2ZSlcblwKLSAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAotICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKLSAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKLSAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCi0gICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKLSAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCi0gICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWRcblwKLSJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mXG5cCi1JbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAotY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAotaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAotTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCi1cblwKLSAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCi0gICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCi0gICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKLSAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAotICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCi1cblwKLU5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKLUVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlXG5cCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKLUluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCi13aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoteW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAotdGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsXG5cCi1GZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91clxuXAotdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCi1cblwKLVRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAotVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCi1TT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCi1cblwKLSAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAotICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCi0gICAgLSBJQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwpXG5cCi0gICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKLSAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCi0gICAgLSBDb21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIChDRERMKSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9saWNlbnNlLmh0bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZUZlYXR1cmUvbGljZW5zZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWM0YTQ4Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlRmVhdHVyZS9saWNlbnNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPkVjbGlwc2Uub3JnIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC90aXRsZT4KLTwvaGVhZD4KLQotPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9Ymx1ZSB2bGluaz1wdXJwbGU+Ci08aDI+RWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9oMj4KLTxwPkp1bmUgMDYsIDIwMDc8L3A+Ci0KLTxoMz5Vc2FnZSBPZiBDb250ZW50PC9oMz4KLQotPHA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIEFORC9PUiBPVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTCi0gICAoQ09MTEVDVElWRUxZICZxdW90O0NPTlRFTlQmcXVvdDspLiAgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRQotICAgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IKLSAgIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9wPgotICAgCi08aDM+QXBwbGljYWJsZSBMaWNlbnNlczwvaDM+ICAgCi0gICAKLTxwPlVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAKLSAgICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIENvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi0gICBGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgotCi08cD5Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSwgZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZS5vcmcgQ1ZTIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIENWUwotICAgbW9kdWxlcyAoJnF1b3Q7TW9kdWxlcyZxdW90OykgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoJnF1b3Q7RG93bmxvYWRzJnF1b3Q7KS48L3A+Ci0gICAKLTx1bD4KLQk8bGk+Q29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZywgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiAgVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgmcXVvdDtQbHVnLWlucyZxdW90OyksIHBsdWctaW4gZnJhZ21lbnRzICgmcXVvdDtGcmFnbWVudHMmcXVvdDspLCBhbmQgZmVhdHVyZXMgKCZxdW90O0ZlYXR1cmVzJnF1b3Q7KS48L2xpPgotCTxsaT5FYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmEmdHJhZGU7IEFSY2hpdmUpIGluIGEgZGlyZWN0b3J5IG5hbWVkICZxdW90O3BsdWdpbnMmcXVvdDsuPC9saT4KLQk8bGk+QSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWQgbWF0ZXJpYWwuICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtmZWF0dXJlcyZxdW90Oy4gIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMKLSAgICAgIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS48L2xpPgotCTxsaT5GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgmcXVvdDtJbmNsdWRlZCBGZWF0dXJlcyZxdW90OykuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy48L2xpPgotPC91bD4gICAKLSAKLTxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCi1JbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgotCi08dWw+Ci0JPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+Ci0JPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KLQk8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+Ci0JPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KLQk8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Ci08L3VsPgotCQkKLTxwPk5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCi1pbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKLWluZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KLVN1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgotdGhhdCBkaXJlY3RvcnkuPC9wPgotCi08cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQotT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+Ci0KLTx1bD4KLQk8bGk+Q29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9hPik8L2xpPgotCTxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L2E+KTwvbGk+Ci0JPGxpPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9hPik8L2xpPgotCTxsaT5JQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sPC9hPik8L2xpPgkKLQk8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgotCTxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Ci0gIDxMST5Db21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIChDRERMKSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3LnN1bi5jb20vY2RkbC9jZGRsLmh0bWwiPmh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbCk8L0E+Ci0gIDwvTEk+Ci08L1VMPgotCi08cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQotY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+Ci0KLTxoMz5DcnlwdG9ncmFwaHk8L2gzPgotCi08cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCi0gICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKLSAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgotICAgCi08c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguPC9zbWFsbD4gICAKLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0Lmh0bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTgxZDQ2Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLTxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotCi08UD5KdW5lLCAyMDA4PC9QPgkKLTxoMz5MaWNlbnNlPC9oMz4KLQotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KLQotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudC48L3A+Ci0KLTxoMz5Tb3VyY2UgQ29kZTwvaDM+Ci08cD5UaGlzIHBsdWctaW4gY29udGFpbnMgc291cmNlIGNvZGUgemlwIGZpbGVzICgmcXVvdDtTb3VyY2UgWmlwcyZxdW90OykgdGhhdCBjb3JyZXNwb25kIHRvIGJpbmFyeSBjb250ZW50IGluIG90aGVyIHBsdWctaW5zLiBUaGVzZSBTb3VyY2UgWmlwcyBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgZGlmZmVyZW50IGxpY2Vuc2UKLWFncmVlbWVudHMgYW5kL29yIG5vdGljZXMuIERldGFpbHMgYWJvdXQgdGhlc2UgbGljZW5zZSBhZ3JlZW1lbnRzIGFuZCBub3RpY2VzIGFyZSBjb250YWluZWQgaW4gJnF1b3Q7YWJvdXQuaHRtbCZxdW90OyBmaWxlcyAoJnF1b3Q7QWJvdXRzJnF1b3Q7KSBsb2NhdGVkIGluIHN1Yi1kaXJlY3RvcmllcyBpbiB0aGUKLXNyYy8gZGlyZWN0b3J5IG9mIHRoaXMgcGx1Zy1pbi4gU3VjaCBBYm91dHMgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBTb3VyY2UgWmlwcyBpbiB0aGF0IGRpcmVjdG9yeSwgbm90IHRoZSBFUEwuPC9wPgotCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9hYm91dC5pbmkgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9hYm91dC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkYTVhNDAuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vYWJvdXQuaW5pCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyBhYm91dC5pbmkKLSMgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBmZWF0dXJlCi0jIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCi0jICIla2V5IiBhcmUgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZGVmaW5lZCBpbiBhYm91dC5wcm9wZXJ0aWVzCi0jIFRoaXMgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQuCi0KLSMgUHJvcGVydHkgImFib3V0VGV4dCIgY29udGFpbnMgYmx1cmIgZm9yICJBYm91dCIgZGlhbG9nICh0cmFuc2xhdGVkKQotYWJvdXRUZXh0PSVibHVyYgotCi0jIFByb3BlcnR5ICJ3aW5kb3dJbWFnZSIgY29udGFpbnMgcGF0aCB0byB3aW5kb3cgaWNvbiAoMTZ4MTYpCi0jIG5lZWRlZCBmb3IgcHJpbWFyeSBmZWF0dXJlcyBvbmx5Ci0KLSMgUHJvcGVydHkgImZlYXR1cmVJbWFnZSIgY29udGFpbnMgcGF0aCB0byBmZWF0dXJlIGltYWdlICgzMngzMikKLWZlYXR1cmVJbWFnZT13dHBfcHJvZDMyLnBuZwotCi0jIFByb3BlcnR5ICJhYm91dEltYWdlIiBjb250YWlucyBwYXRoIHRvIHByb2R1Y3QgaW1hZ2UgKDUwMHgzMzAgb3IgMTE1eDE2NCkKLSMgbmVlZGVkIGZvciBwcmltYXJ5IGZlYXR1cmVzIG9ubHkKLQotIyBQcm9wZXJ0eSAiYXBwTmFtZSIgY29udGFpbnMgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gKG5vdCB0cmFuc2xhdGVkKQotIyBuZWVkZWQgZm9yIHByaW1hcnkgZmVhdHVyZXMgb25seQotCi0jIFByb3BlcnR5ICJ3ZWxjb21lUGFnZSIgY29udGFpbnMgcGF0aCB0byB3ZWxjb21lIHBhZ2UgKHNwZWNpYWwgWE1MLWJhc2VkIGZvcm1hdCkKLSMgb3B0aW9uYWwKLQotIyBQcm9wZXJ0eSAid2VsY29tZVBlcnNwZWN0aXZlIiBjb250YWlucyB0aGUgaWQgb2YgdGhlIHBlcnNwZWN0aXZlIGluIHdoaWNoIHRoZQotIyB3ZWxjb21lIHBhZ2UgaXMgdG8gYmUgb3BlbmVkLgotIyBvcHRpb25hbAotCi0KLQotCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9hYm91dC5tYXBwaW5ncyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0Lm1hcHBpbmdzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGZiNzM1Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0Lm1hcHBpbmdzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0jIGFib3V0Lm1hcHBpbmdzDQotIyBjb250YWlucyBmaWxsLWlucyBmb3IgYWJvdXQucHJvcGVydGllcw0KLSMgamF2YS5pby5Qcm9wZXJ0aWVzIGZpbGUgKElTTyA4ODU5LTEgd2l0aCAiXCIgZXNjYXBlcykNCi0jIFRoaXMgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQuDQotDQotMD1AYnVpbGRADQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vYWJvdXQucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2Fib3V0LnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzOTc4N2EuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vYWJvdXQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIGFib3V0LnByb3BlcnRpZXMKLSMgY29udGFpbnMgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZm9yIGFib3V0LmluaQotIyBqYXZhLmlvLlByb3BlcnRpZXMgZmlsZSAoSVNPIDg4NTktMSB3aXRoICJcIiBlc2NhcGVzKQotIyBmaWxsLWlucyBhcmUgc3VwcGxpZWQgYnkgYWJvdXQubWFwcGluZ3MKLSMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgotIwotIyBEbyBub3QgdHJhbnNsYXRlIGFueSB2YWx1ZXMgc3Vycm91bmRlZCBieSB7fQotCi1ibHVyYj1XZWIgU3RhbmRhcmQgVG9vbHMgLSBXZWIgU2VydmljZSBVSVxuXAotXG5cCi1WZXJzaW9uOiB7ZmVhdHVyZVZlcnNpb259XG5cCi1CdWlsZCBpZDogezB9XG5cCi1cblwKLShjKSBDb3B5cmlnaHQgRWNsaXBzZSBjb250cmlidXRvcnMgYW5kIG90aGVycyAyMDA1LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblwKLVZpc2l0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMKLQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vYnVpbGQucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwYTU3NWMuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1iaW4uaW5jbHVkZXMgPSBhYm91dC5odG1sLCBhYm91dC5pbmksIGFib3V0Lm1hcHBpbmdzLCBhYm91dC5wcm9wZXJ0aWVzLCB3dHBfcHJvZDMyLnBuZywgcGx1Z2luLnByb3BlcnRpZXMsIHBsdWdpbi54bWwsIHNyYy8qKiwgTUVUQS1JTkYvCi1zb3VyY2VQbHVnaW4gPSB0cnVlCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi9wbHVnaW4ucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2E2NTQ1Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXBsdWdpbk5hbWU9V2ViIFN0YW5kYXJkIFRvb2xzIC0gV2ViIFNlcnZpY2UgVUkgU291cmNlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL3d0cF9wcm9kMzIuZ2lmIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vd3RwX3Byb2QzMi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZmI0NGEuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VpLmZlYXR1cmUvc291cmNlVGVtcGxhdGVQbHVnaW4vd3RwX3Byb2QzMi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdWkuZmVhdHVyZS9zb3VyY2VUZW1wbGF0ZVBsdWdpbi93dHBfcHJvZDMyLnBuZyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL3d0cF9wcm9kMzIucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmNlYWIzLi4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191aS5mZWF0dXJlL3NvdXJjZVRlbXBsYXRlUGx1Z2luL3d0cF9wcm9kMzIucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VzZXJkb2MuZmVhdHVyZS8uY3ZzaWdub3JlIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VzZXJkb2MuZmVhdHVyZS8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWVmZjU2Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotYnVpbGQueG1sCi1vcmcuZWNsaXBzZS53c3Qud3NfdXNlcmRvYy5mZWF0dXJlXzEuMC4wLmphcgotb3JnLmVjbGlwc2Uud3N0LnhtbF91c2VyZG9jLmZlYXR1cmVfMS4wLjAuamFyCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdXNlcmRvYy5mZWF0dXJlLy5wcm9qZWN0IGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VzZXJkb2MuZmVhdHVyZS8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ1Njc1ZS4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdXNlcmRvYy5mZWF0dXJlLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzX3VzZXJkb2MuZmVhdHVyZTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLkZlYXR1cmVOYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvYnVpbGQucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y0NzY5NC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdXNlcmRvYy5mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IGZlYXR1cmUueG1sLFwKLSAgICAgICAgICAgICAgIGVjbGlwc2VfdXBkYXRlXzEyMC5qcGcsXAotICAgICAgICAgICAgICAgZXBsLXYxMC5odG1sLFwKLSAgICAgICAgICAgICAgIGxpY2Vuc2UuaHRtbCxcCi0gICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZkZjcwOC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdXNlcmRvYy5mZWF0dXJlL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdXNlcmRvYy5mZWF0dXJlL2VwbC12MTAuaHRtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvZXBsLXYxMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDRiMTk2Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvZXBsLXYxMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLTxodG1sIHhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIKLXhtbG5zOnc9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmQiCi14bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+Ci0KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+Ci08bWV0YSBuYW1lPVByb2dJZCBjb250ZW50PVdvcmQuRG9jdW1lbnQ+Ci08bWV0YSBuYW1lPUdlbmVyYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxtZXRhIG5hbWU9T3JpZ2luYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxsaW5rIHJlbD1GaWxlLUxpc3QKLWhyZWY9Ii4vRWNsaXBzZSUyMEVQTCUyMDIwMDNfMTFfMTAlMjBGaW5hbF9maWxlcy9maWxlbGlzdC54bWwiPgotPHRpdGxlPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSBWZXJzaW9uIDEuMDwvdGl0bGU+Ci08IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8bzpEb2N1bWVudFByb3BlcnRpZXM+Ci0gIDxvOlJldmlzaW9uPjI8L286UmV2aXNpb24+Ci0gIDxvOlRvdGFsVGltZT4zPC9vOlRvdGFsVGltZT4KLSAgPG86Q3JlYXRlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpDcmVhdGVkPgotICA8bzpMYXN0U2F2ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286TGFzdFNhdmVkPgotICA8bzpQYWdlcz40PC9vOlBhZ2VzPgotICA8bzpXb3Jkcz4xNjI2PC9vOldvcmRzPgotICA8bzpDaGFyYWN0ZXJzPjkyNzA8L286Q2hhcmFjdGVycz4KLSAgIDxvOkxpbmVzPjc3PC9vOkxpbmVzPgotICA8bzpQYXJhZ3JhcGhzPjE4PC9vOlBhcmFncmFwaHM+Ci0gIDxvOkNoYXJhY3RlcnNXaXRoU3BhY2VzPjExMzg0PC9vOkNoYXJhY3RlcnNXaXRoU3BhY2VzPgotICA8bzpWZXJzaW9uPjkuNDQwMjwvbzpWZXJzaW9uPgotIDwvbzpEb2N1bWVudFByb3BlcnRpZXM+Ci08L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8dzpXb3JkRG9jdW1lbnQ+Ci0gIDx3OlRyYWNrUmV2aXNpb25zLz4KLSA8L3c6V29yZERvY3VtZW50PgotPC94bWw+PCFbZW5kaWZdLS0+Ci08c3R5bGU+Ci08IS0tCi0gLyogRm9udCBEZWZpbml0aW9ucyAqLwotQGZvbnQtZmFjZQotCXtmb250LWZhbWlseTpUYWhvbWE7Ci0JcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7Ci0JbXNvLWZvbnQtY2hhcnNldDowOwotCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOwotCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOwotCW1zby1mb250LXNpZ25hdHVyZTo1NTM2Nzk0OTUgLTIxNDc0ODM2NDggOCAwIDY2MDQ3IDA7fQotIC8qIFN0eWxlIERlZmluaXRpb25zICovCi1wLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCi0Je21zby1zdHlsZS1wYXJlbnQ6IiI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcAotCXttYXJnaW4tcmlnaHQ6MGluOwotCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOwotCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOwotCW1hcmdpbi1sZWZ0OjBpbjsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wLkJhbGxvb25UZXh0LCBsaS5CYWxsb29uVGV4dCwgZGl2LkJhbGxvb25UZXh0Ci0Je21zby1zdHlsZS1uYW1lOiJCYWxsb29uIFRleHQiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6OC4wcHQ7Ci0JZm9udC1mYW1pbHk6VGFob21hOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLUBwYWdlIFNlY3Rpb24xCi0Je3NpemU6OC41aW4gMTEuMGluOwotCW1hcmdpbjoxLjBpbiAxLjI1aW4gMS4waW4gMS4yNWluOwotCW1zby1oZWFkZXItbWFyZ2luOi41aW47Ci0JbXNvLWZvb3Rlci1tYXJnaW46LjVpbjsKLQltc28tcGFwZXItc291cmNlOjA7fQotZGl2LlNlY3Rpb24xCi0Je3BhZ2U6U2VjdGlvbjE7fQotLS0+Ci08L3N0eWxlPgotPC9oZWFkPgotCi08Ym9keSBsYW5nPUVOLVVTIHN0eWxlPSd0YWItaW50ZXJ2YWw6LjVpbic+Ci0KLTxkaXYgY2xhc3M9U2VjdGlvbjE+Ci0KLTxwIGFsaWduPWNlbnRlciBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXInPjxiPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSB2IDEuMDwvYj4KLTwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRIRSBBQ0NPTVBBTllJTkcgUFJPR1JBTSBJUyBQUk9WSURFRCBVTkRFUgotVEhFIFRFUk1TIE9GIFRISVMgRUNMSVBTRSBQVUJMSUMgTElDRU5TRSAoJnF1b3Q7QUdSRUVNRU5UJnF1b3Q7KS4gQU5ZIFVTRSwKLVJFUFJPRFVDVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gQ09OU1RJVFVURVMgUkVDSVBJRU5UJ1MgQUNDRVBUQU5DRQotT0YgVEhJUyBBR1JFRU1FTlQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4xLiBERUZJTklUSU9OUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dGlvbiZxdW90OyBtZWFuczo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWluIHRoZSBjYXNlIG9mIHRoZSBpbml0aWFsIENvbnRyaWJ1dG9yLCB0aGUgaW5pdGlhbCBjb2RlIGFuZCBkb2N1bWVudGF0aW9uCi1kaXN0cmlidXRlZCB1bmRlciB0aGlzIEFncmVlbWVudCwgYW5kPGJyIGNsZWFyPWxlZnQ+Ci1iKSBpbiB0aGUgY2FzZSBvZiBlYWNoIHN1YnNlcXVlbnQgQ29udHJpYnV0b3I6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOzwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPndoZXJlCi1zdWNoIGNoYW5nZXMgYW5kL29yIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSBvcmlnaW5hdGUgZnJvbSBhbmQgYXJlIGRpc3RyaWJ1dGVkCi1ieSB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IuIEEgQ29udHJpYnV0aW9uICdvcmlnaW5hdGVzJyBmcm9tIGEgQ29udHJpYnV0b3IKLWlmIGl0IHdhcyBhZGRlZCB0byB0aGUgUHJvZ3JhbSBieSBzdWNoIENvbnRyaWJ1dG9yIGl0c2VsZiBvciBhbnlvbmUgYWN0aW5nIG9uCi1zdWNoIENvbnRyaWJ1dG9yJ3MgYmVoYWxmLiBDb250cmlidXRpb25zIGRvIG5vdCBpbmNsdWRlIGFkZGl0aW9ucyB0byB0aGUKLVByb2dyYW0gd2hpY2g6IChpKSBhcmUgc2VwYXJhdGUgbW9kdWxlcyBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZCBpbiBjb25qdW5jdGlvbgotd2l0aCB0aGUgUHJvZ3JhbSB1bmRlciB0aGVpciBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIGFuZCAoaWkpIGFyZSBub3QgZGVyaXZhdGl2ZQotd29ya3Mgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRvciZxdW90OyBtZWFucyBhbnkgcGVyc29uIG9yCi1lbnRpdHkgdGhhdCBkaXN0cmlidXRlcyB0aGUgUHJvZ3JhbS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0xpY2Vuc2VkIFBhdGVudHMgJnF1b3Q7IG1lYW4gcGF0ZW50Ci1jbGFpbXMgbGljZW5zYWJsZSBieSBhIENvbnRyaWJ1dG9yIHdoaWNoIGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIHVzZQotb3Igc2FsZSBvZiBpdHMgQ29udHJpYnV0aW9uIGFsb25lIG9yIHdoZW4gY29tYmluZWQgd2l0aCB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1Byb2dyYW0mcXVvdDsgbWVhbnMgdGhlIENvbnRyaWJ1dGlvbnMKLWRpc3RyaWJ1dGVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzIEFncmVlbWVudC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1JlY2lwaWVudCZxdW90OyBtZWFucyBhbnlvbmUgd2hvCi1yZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIEFncmVlbWVudCwgaW5jbHVkaW5nIGFsbCBDb250cmlidXRvcnMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4yLiBHUkFOVCBPRiBSSUdIVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIFJlY2lwaWVudAotYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0bzxzcGFuCi1zdHlsZT0nY29sb3I6cmVkJz4gPC9zcGFuPnJlcHJvZHVjZSwgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mLCBwdWJsaWNseQotZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgZGlzdHJpYnV0ZSBhbmQgc3VibGljZW5zZSB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2gKLUNvbnRyaWJ1dG9yLCBpZiBhbnksIGFuZCBzdWNoIGRlcml2YXRpdmUgd29ya3MsIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZQotZm9ybS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cwotUmVjaXBpZW50IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+IDwvc3Bhbj5yb3lhbHR5LWZyZWUKLXBhdGVudCBsaWNlbnNlIHVuZGVyIExpY2Vuc2VkIFBhdGVudHMgdG8gbWFrZSwgdXNlLCBzZWxsLCBvZmZlciB0byBzZWxsLCBpbXBvcnQKLWFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGluIHNvdXJjZQotY29kZSBhbmQgb2JqZWN0IGNvZGUgZm9ybS4gVGhpcyBwYXRlbnQgbGljZW5zZSBzaGFsbCBhcHBseSB0byB0aGUgY29tYmluYXRpb24KLW9mIHRoZSBDb250cmlidXRpb24gYW5kIHRoZSBQcm9ncmFtIGlmLCBhdCB0aGUgdGltZSB0aGUgQ29udHJpYnV0aW9uIGlzIGFkZGVkCi1ieSB0aGUgQ29udHJpYnV0b3IsIHN1Y2ggYWRkaXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBjYXVzZXMgc3VjaCBjb21iaW5hdGlvbgotdG8gYmUgY292ZXJlZCBieSB0aGUgTGljZW5zZWQgUGF0ZW50cy4gVGhlIHBhdGVudCBsaWNlbnNlIHNoYWxsIG5vdCBhcHBseSB0bwotYW55IG90aGVyIGNvbWJpbmF0aW9ucyB3aGljaCBpbmNsdWRlIHRoZSBDb250cmlidXRpb24uIE5vIGhhcmR3YXJlIHBlciBzZSBpcwotbGljZW5zZWQgaGVyZXVuZGVyLiA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5jKQotUmVjaXBpZW50IHVuZGVyc3RhbmRzIHRoYXQgYWx0aG91Z2ggZWFjaCBDb250cmlidXRvciBncmFudHMgdGhlIGxpY2Vuc2VzIHRvIGl0cwotQ29udHJpYnV0aW9ucyBzZXQgZm9ydGggaGVyZWluLCBubyBhc3N1cmFuY2VzIGFyZSBwcm92aWRlZCBieSBhbnkgQ29udHJpYnV0b3IKLXRoYXQgdGhlIFByb2dyYW0gZG9lcyBub3QgaW5mcmluZ2UgdGhlIHBhdGVudCBvciBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkKLXJpZ2h0cyBvZiBhbnkgb3RoZXIgZW50aXR5LiBFYWNoIENvbnRyaWJ1dG9yIGRpc2NsYWltcyBhbnkgbGlhYmlsaXR5IHRvIFJlY2lwaWVudAotZm9yIGNsYWltcyBicm91Z2h0IGJ5IGFueSBvdGhlciBlbnRpdHkgYmFzZWQgb24gaW5mcmluZ2VtZW50IG9mIGludGVsbGVjdHVhbAotcHJvcGVydHkgcmlnaHRzIG9yIG90aGVyd2lzZS4gQXMgYSBjb25kaXRpb24gdG8gZXhlcmNpc2luZyB0aGUgcmlnaHRzIGFuZAotbGljZW5zZXMgZ3JhbnRlZCBoZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieSBhc3N1bWVzIHNvbGUgcmVzcG9uc2liaWxpdHkKLXRvIHNlY3VyZSBhbnkgb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBuZWVkZWQsIGlmIGFueS4gRm9yIGV4YW1wbGUsCi1pZiBhIHRoaXJkIHBhcnR5IHBhdGVudCBsaWNlbnNlIGlzIHJlcXVpcmVkIHRvIGFsbG93IFJlY2lwaWVudCB0byBkaXN0cmlidXRlCi10aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gYWNxdWlyZSB0aGF0IGxpY2Vuc2UgYmVmb3JlCi1kaXN0cmlidXRpbmcgdGhlIFByb2dyYW0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+ZCkKLUVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQgaGFzIHN1ZmZpY2llbnQgY29weXJpZ2h0Ci1yaWdodHMgaW4gaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCB0byBncmFudCB0aGUgY29weXJpZ2h0IGxpY2Vuc2Ugc2V0IGZvcnRoIGluCi10aGlzIEFncmVlbWVudC4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjMuIFJFUVVJUkVNRU5UUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkEgQ29udHJpYnV0b3IgbWF5IGNob29zZSB0byBkaXN0cmlidXRlIHRoZQotUHJvZ3JhbSBpbiBvYmplY3QgY29kZSBmb3JtIHVuZGVyIGl0cyBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIHByb3ZpZGVkIHRoYXQ6PC9zcGFuPgotPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgY29tcGxpZXMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQ7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1pdHMgbGljZW5zZSBhZ3JlZW1lbnQ6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgd2FycmFudGllcyBhbmQKLWNvbmRpdGlvbnMsIGV4cHJlc3MgYW5kIGltcGxpZWQsIGluY2x1ZGluZyB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgdGl0bGUKLWFuZCBub24taW5mcmluZ2VtZW50LCBhbmQgaW1wbGllZCB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgbWVyY2hhbnRhYmlsaXR5Ci1hbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2U7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotZWZmZWN0aXZlbHkgZXhjbHVkZXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIGxpYWJpbGl0eSBmb3IgZGFtYWdlcywKLWluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLCBpbmNpZGVudGFsIGFuZCBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIHN1Y2gKLWFzIGxvc3QgcHJvZml0czsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWlpKQotc3RhdGVzIHRoYXQgYW55IHByb3Zpc2lvbnMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyBBZ3JlZW1lbnQgYXJlIG9mZmVyZWQgYnkgdGhhdAotQ29udHJpYnV0b3IgYWxvbmUgYW5kIG5vdCBieSBhbnkgb3RoZXIgcGFydHk7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPml2KQotc3RhdGVzIHRoYXQgc291cmNlIGNvZGUgZm9yIHRoZSBQcm9ncmFtIGlzIGF2YWlsYWJsZSBmcm9tIHN1Y2ggQ29udHJpYnV0b3IsIGFuZAotaW5mb3JtcyBsaWNlbnNlZXMgaG93IHRvIG9idGFpbiBpdCBpbiBhIHJlYXNvbmFibGUgbWFubmVyIG9uIG9yIHRocm91Z2ggYQotbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGV4Y2hhbmdlLjxzcGFuIHN0eWxlPSdjb2xvcjpibHVlJz4gPC9zcGFuPjwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5XaGVuIHRoZSBQcm9ncmFtIGlzIG1hZGUgYXZhaWxhYmxlIGluIHNvdXJjZQotY29kZSBmb3JtOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGlzIEFncmVlbWVudDsgYW5kIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpIGEKLWNvcHkgb2YgdGhpcyBBZ3JlZW1lbnQgbXVzdCBiZSBpbmNsdWRlZCB3aXRoIGVhY2ggY29weSBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbnRyaWJ1dG9ycyBtYXkgbm90IHJlbW92ZSBvciBhbHRlciBhbnkKLWNvcHlyaWdodCBub3RpY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FYWNoIENvbnRyaWJ1dG9yIG11c3QgaWRlbnRpZnkgaXRzZWxmIGFzIHRoZQotb3JpZ2luYXRvciBvZiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIGluIGEgbWFubmVyIHRoYXQgcmVhc29uYWJseSBhbGxvd3MKLXN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeSB0aGUgb3JpZ2luYXRvciBvZiB0aGUgQ29udHJpYnV0aW9uLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT048L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db21tZXJjaWFsIGRpc3RyaWJ1dG9ycyBvZiBzb2Z0d2FyZSBtYXkKLWFjY2VwdCBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgd2l0aCByZXNwZWN0IHRvIGVuZCB1c2VycywgYnVzaW5lc3MgcGFydG5lcnMKLWFuZCB0aGUgbGlrZS4gV2hpbGUgdGhpcyBsaWNlbnNlIGlzIGludGVuZGVkIHRvIGZhY2lsaXRhdGUgdGhlIGNvbW1lcmNpYWwgdXNlCi1vZiB0aGUgUHJvZ3JhbSwgdGhlIENvbnRyaWJ1dG9yIHdobyBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwKLXByb2R1Y3Qgb2ZmZXJpbmcgc2hvdWxkIGRvIHNvIGluIGEgbWFubmVyIHdoaWNoIGRvZXMgbm90IGNyZWF0ZSBwb3RlbnRpYWwKLWxpYWJpbGl0eSBmb3Igb3RoZXIgQ29udHJpYnV0b3JzLiBUaGVyZWZvcmUsIGlmIGEgQ29udHJpYnV0b3IgaW5jbHVkZXMgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBzdWNoIENvbnRyaWJ1dG9yICgmcXVvdDtDb21tZXJjaWFsCi1Db250cmlidXRvciZxdW90OykgaGVyZWJ5IGFncmVlcyB0byBkZWZlbmQgYW5kIGluZGVtbmlmeSBldmVyeSBvdGhlcgotQ29udHJpYnV0b3IgKCZxdW90O0luZGVtbmlmaWVkIENvbnRyaWJ1dG9yJnF1b3Q7KSBhZ2FpbnN0IGFueSBsb3NzZXMsIGRhbWFnZXMgYW5kCi1jb3N0cyAoY29sbGVjdGl2ZWx5ICZxdW90O0xvc3NlcyZxdW90OykgYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kIG90aGVyCi1sZWdhbCBhY3Rpb25zIGJyb3VnaHQgYnkgYSB0aGlyZCBwYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciB0bwotdGhlIGV4dGVudCBjYXVzZWQgYnkgdGhlIGFjdHMgb3Igb21pc3Npb25zIG9mIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvciBpbgotY29ubmVjdGlvbiB3aXRoIGl0cyBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3QKLW9mZmVyaW5nLiBUaGUgb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zIG9yIExvc3NlcwotcmVsYXRpbmcgdG8gYW55IGFjdHVhbCBvciBhbGxlZ2VkIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBpbmZyaW5nZW1lbnQuIEluIG9yZGVyCi10byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciBtdXN0OiBhKSBwcm9tcHRseSBub3RpZnkgdGhlIENvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCBjbGFpbSwgYW5kIGIpIGFsbG93IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yCi10byBjb250cm9sLCBhbmQgY29vcGVyYXRlIHdpdGggdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4sIHRoZSBkZWZlbnNlIGFuZAotYW55IHJlbGF0ZWQgc2V0dGxlbWVudCBuZWdvdGlhdGlvbnMuIFRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciBtYXkgcGFydGljaXBhdGUKLWluIGFueSBzdWNoIGNsYWltIGF0IGl0cyBvd24gZXhwZW5zZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkZvciBleGFtcGxlLCBhIENvbnRyaWJ1dG9yIG1pZ2h0IGluY2x1ZGUgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yLiBJZiB0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbiBtYWtlcyBwZXJmb3JtYW5jZQotY2xhaW1zLCBvciBvZmZlcnMgd2FycmFudGllcyByZWxhdGVkIHRvIFByb2R1Y3QgWCwgdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZAotd2FycmFudGllcyBhcmUgc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yJ3MgcmVzcG9uc2liaWxpdHkgYWxvbmUuIFVuZGVyIHRoaXMKLXNlY3Rpb24sIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHdvdWxkIGhhdmUgdG8gZGVmZW5kIGNsYWltcyBhZ2FpbnN0IHRoZQotb3RoZXIgQ29udHJpYnV0b3JzIHJlbGF0ZWQgdG8gdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzLCBhbmQgaWYgYQotY291cnQgcmVxdWlyZXMgYW55IG90aGVyIENvbnRyaWJ1dG9yIHRvIHBheSBhbnkgZGFtYWdlcyBhcyBhIHJlc3VsdCwgdGhlCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yIG11c3QgcGF5IHRob3NlIGRhbWFnZXMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz41LiBOTyBXQVJSQU5UWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgVEhFIFBST0dSQU0gSVMgUFJPVklERUQgT04gQU4gJnF1b3Q7QVMgSVMmcXVvdDsgQkFTSVMsIFdJVEhPVVQKLVdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCBJTkNMVURJTkcsCi1XSVRIT1VUIExJTUlUQVRJT04sIEFOWSBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsCi1NRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIEVhY2ggUmVjaXBpZW50IGlzIHNvbGVseQotcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgYW5kIGRpc3RyaWJ1dGluZyB0aGUKLVByb2dyYW0gYW5kIGFzc3VtZXMgYWxsIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBpdHMgZXhlcmNpc2Ugb2YgcmlnaHRzIHVuZGVyIHRoaXMKLUFncmVlbWVudCAsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIHJpc2tzIGFuZCBjb3N0cyBvZiBwcm9ncmFtIGVycm9ycywKLWNvbXBsaWFuY2Ugd2l0aCBhcHBsaWNhYmxlIGxhd3MsIGRhbWFnZSB0byBvciBsb3NzIG9mIGRhdGEsIHByb2dyYW1zIG9yCi1lcXVpcG1lbnQsIGFuZCB1bmF2YWlsYWJpbGl0eSBvciBpbnRlcnJ1cHRpb24gb2Ygb3BlcmF0aW9ucy4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjYuIERJU0NMQUlNRVIgT0YgTElBQklMSVRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBORUlUSEVSIFJFQ0lQSUVOVCBOT1IgQU5ZIENPTlRSSUJVVE9SUyBTSEFMTCBIQVZFIEFOWSBMSUFCSUxJVFkgRk9SCi1BTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLShJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIExPU1QgUFJPRklUUyksIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi1PRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwotTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPUiBESVNUUklCVVRJT04gT0YKLVRIRSBQUk9HUkFNIE9SIFRIRSBFWEVSQ0lTRSBPRiBBTlkgUklHSFRTIEdSQU5URUQgSEVSRVVOREVSLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz43LiBHRU5FUkFMPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBpbnZhbGlkCi1vciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFwcGxpY2FibGUgbGF3LCBpdCBzaGFsbCBub3QgYWZmZWN0IHRoZSB2YWxpZGl0eSBvcgotZW5mb3JjZWFiaWxpdHkgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGFuZCB3aXRob3V0Ci1mdXJ0aGVyIGFjdGlvbiBieSB0aGUgcGFydGllcyBoZXJldG8sIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZQotbWluaW11bSBleHRlbnQgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VjaCBwcm92aXNpb24gdmFsaWQgYW5kIGVuZm9yY2VhYmxlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgUmVjaXBpZW50IGluc3RpdHV0ZXMgcGF0ZW50IGxpdGlnYXRpb24KLWFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkKLWFsbGVnaW5nIHRoYXQgdGhlIFByb2dyYW0gaXRzZWxmIChleGNsdWRpbmcgY29tYmluYXRpb25zIG9mIHRoZSBQcm9ncmFtIHdpdGgKLW90aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlKSBpbmZyaW5nZXMgc3VjaCBSZWNpcGllbnQncyBwYXRlbnQocyksIHRoZW4gc3VjaAotUmVjaXBpZW50J3MgcmlnaHRzIGdyYW50ZWQgdW5kZXIgU2VjdGlvbiAyKGIpIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZQotc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QWxsIFJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudAotc2hhbGwgdGVybWluYXRlIGlmIGl0IGZhaWxzIHRvIGNvbXBseSB3aXRoIGFueSBvZiB0aGUgbWF0ZXJpYWwgdGVybXMgb3IKLWNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQgYW5kIGRvZXMgbm90IGN1cmUgc3VjaCBmYWlsdXJlIGluIGEgcmVhc29uYWJsZQotcGVyaW9kIG9mIHRpbWUgYWZ0ZXIgYmVjb21pbmcgYXdhcmUgb2Ygc3VjaCBub25jb21wbGlhbmNlLiBJZiBhbGwgUmVjaXBpZW50J3MKLXJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCB0ZXJtaW5hdGUsIFJlY2lwaWVudCBhZ3JlZXMgdG8gY2Vhc2UgdXNlIGFuZAotZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGFzIHNvb24gYXMgcmVhc29uYWJseSBwcmFjdGljYWJsZS4gSG93ZXZlciwKLVJlY2lwaWVudCdzIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFuZCBhbnkgbGljZW5zZXMgZ3JhbnRlZCBieQotUmVjaXBpZW50IHJlbGF0aW5nIHRvIHRoZSBQcm9ncmFtIHNoYWxsIGNvbnRpbnVlIGFuZCBzdXJ2aXZlLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUKLWNvcGllcyBvZiB0aGlzIEFncmVlbWVudCwgYnV0IGluIG9yZGVyIHRvIGF2b2lkIGluY29uc2lzdGVuY3kgdGhlIEFncmVlbWVudCBpcwotY29weXJpZ2h0ZWQgYW5kIG1heSBvbmx5IGJlIG1vZGlmaWVkIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyLiBUaGUgQWdyZWVtZW50Ci1TdGV3YXJkIHJlc2VydmVzIHRoZSByaWdodCB0byBwdWJsaXNoIG5ldyB2ZXJzaW9ucyAoaW5jbHVkaW5nIHJldmlzaW9ucykgb2YKLXRoaXMgQWdyZWVtZW50IGZyb20gdGltZSB0byB0aW1lLiBObyBvbmUgb3RoZXIgdGhhbiB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgaGFzCi10aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMgQWdyZWVtZW50LiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHRoZSBpbml0aWFsCi1BZ3JlZW1lbnQgU3Rld2FyZC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYXkgYXNzaWduIHRoZSByZXNwb25zaWJpbGl0eSB0bwotc2VydmUgYXMgdGhlIEFncmVlbWVudCBTdGV3YXJkIHRvIGEgc3VpdGFibGUgc2VwYXJhdGUgZW50aXR5LiBFYWNoIG5ldyB2ZXJzaW9uCi1vZiB0aGUgQWdyZWVtZW50IHdpbGwgYmUgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gVGhlIFByb2dyYW0KLShpbmNsdWRpbmcgQ29udHJpYnV0aW9ucykgbWF5IGFsd2F5cyBiZSBkaXN0cmlidXRlZCBzdWJqZWN0IHRvIHRoZSB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IHVuZGVyIHdoaWNoIGl0IHdhcyByZWNlaXZlZC4gSW4gYWRkaXRpb24sIGFmdGVyIGEgbmV3IHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgaXMgcHVibGlzaGVkLCBDb250cmlidXRvciBtYXkgZWxlY3QgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQotKGluY2x1ZGluZyBpdHMgQ29udHJpYnV0aW9ucykgdW5kZXIgdGhlIG5ldyB2ZXJzaW9uLiBFeGNlcHQgYXMgZXhwcmVzc2x5IHN0YXRlZAotaW4gU2VjdGlvbnMgMihhKSBhbmQgMihiKSBhYm92ZSwgUmVjaXBpZW50IHJlY2VpdmVzIG5vIHJpZ2h0cyBvciBsaWNlbnNlcyB0bwotdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBhbnkgQ29udHJpYnV0b3IgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIHdoZXRoZXIKLWV4cHJlc3NseSwgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yIG90aGVyd2lzZS4gQWxsIHJpZ2h0cyBpbiB0aGUgUHJvZ3JhbSBub3QKLWV4cHJlc3NseSBncmFudGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFyZSByZXNlcnZlZC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRoaXMgQWdyZWVtZW50IGlzIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZQotU3RhdGUgb2YgTmV3IFlvcmsgYW5kIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZgotQW1lcmljYS4gTm8gcGFydHkgdG8gdGhpcyBBZ3JlZW1lbnQgd2lsbCBicmluZyBhIGxlZ2FsIGFjdGlvbiB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgbW9yZSB0aGFuIG9uZSB5ZWFyIGFmdGVyIHRoZSBjYXVzZSBvZiBhY3Rpb24gYXJvc2UuIEVhY2ggcGFydHkgd2FpdmVzCi1pdHMgcmlnaHRzIHRvIGEganVyeSB0cmlhbCBpbiBhbnkgcmVzdWx0aW5nIGxpdGlnYXRpb24uPC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbD48IVtpZiAhc3VwcG9ydEVtcHR5UGFyYXNdPiZuYnNwOzwhW2VuZGlmXT48bzpwPjwvbzpwPjwvcD4KLQotPC9kaXY+Ci0KLTwvYm9keT4KLQotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VzZXJkb2MuZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYTU4NWMuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3VzZXJkb2MuZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgZmVhdHVyZS5wcm9wZXJ0aWVzCi0jIGNvbnRhaW5zIGV4dGVybmFsaXplZCBzdHJpbmdzIGZvciBmZWF0dXJlLnhtbAotIyAiJWZvbyIgaW4gZmVhdHVyZS54bWwgY29ycmVzcG9uZHMgdG8gdGhlIGtleSAiZm9vIiBpbiB0aGlzIGZpbGUKLSMgamF2YS5pby5Qcm9wZXJ0aWVzIGZpbGUgKElTTyA4ODU5LTEgd2l0aCAiXCIgZXNjYXBlcykKLSMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgotCi0jICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCi1mZWF0dXJlTmFtZT1XU1QgV2ViIFNlcnZpY2VzIFVzZXIgRG9jdW1lbnRhdGlvbgotCi0jICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKLQotIyAidXBkYXRlU2l0ZU5hbWUiIHByb3BlcnR5IC0gbGFiZWwgZm9yIHRoZSB1cGRhdGUgc2l0ZQotdXBkYXRlU2l0ZU5hbWU9VGhlIEVjbGlwc2UgV2ViIFRvb2xzIFBsYXRmb3JtIChXVFApIFByb2plY3QgdXBkYXRlIHNpdGUKLQotIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKLWRlc2NyaXB0aW9uPVdTVCBXZWIgc2VydmljZXMgdXNlciBkb2N1bWVudGF0aW9uCi0KLSMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgotY29weXJpZ2h0PVwKLUNvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy5cblwKLUFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKLWFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAotd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCi1cblwKLUNvbnRyaWJ1dG9yczpcblwKLSAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb25cbgotIyMjIyMjIyMjIyMjIyMjIyBlbmQgb2YgY29weXJpZ2h0IHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jICJsaWNlbnNlVVJMIiBwcm9wZXJ0eSAtIFVSTCBvZiB0aGUgIkZlYXR1cmUgTGljZW5zZSIKLSMgZG8gbm90IHRyYW5zbGF0ZSB2YWx1ZSAtIGp1c3QgY2hhbmdlIHRvIHBvaW50IHRvIGEgbG9jYWxlLXNwZWNpZmljIEhUTUwgcGFnZQotbGljZW5zZVVSTD1saWNlbnNlLmh0bWwKLQotIyAibGljZW5zZSIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgTGljZW5zZSIKLSMgc2hvdWxkIGJlIHBsYWluIHRleHQgdmVyc2lvbiBvZiBsaWNlbnNlIGFncmVlbWVudCBwb2ludGVkIHRvIGJlICJsaWNlbnNlVVJMIgotbGljZW5zZT1cCi1FQ0xJUFNFIEZPVU5EQVRJT04gU09GVFdBUkUgVVNFUiBBR1JFRU1FTlRcblwKLUp1bmUgMDYsIDIwMDdcblwKLVxuXAotVXNhZ2UgT2YgQ29udGVudFxuXAotXG5cCi1USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCi1PVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKLVVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAotQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCi1OT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCi1BR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCi1BTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAotT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKLU9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCi1CRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCi1cblwKLUFwcGxpY2FibGUgTGljZW5zZXNcblwKLVxuXAotVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb25cblwKLWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljXG5cCi1MaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpc1xuXAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKLVxuXAotQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCi1kb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlNcblwKLXJlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCi1hcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKLVxuXAotICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAotICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCi0gICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCi0gICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YT8gQVJjaGl2ZSlcblwKLSAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAotICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKLSAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKLSAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCi0gICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKLSAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCi0gICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWRcblwKLSJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mXG5cCi1JbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAotY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAotaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAotTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCi1cblwKLSAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCi0gICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCi0gICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKLSAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAotICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCi1cblwKLU5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKLUVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlXG5cCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKLUluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCi13aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoteW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAotdGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsXG5cCi1GZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91clxuXAotdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCi1cblwKLVRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAotVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCi1TT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCi1cblwKLSAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAotICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCi0gICAgLSBJQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwpXG5cCi0gICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKLSAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCi0gICAgLSBDb21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIChDRERMKSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvZmVhdHVyZS54bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdXNlcmRvYy5mZWF0dXJlL2ZlYXR1cmUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjFiNWM3Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NfdXNlcmRvYy5mZWF0dXJlIgotICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKLSAgICAgIHZlcnNpb249IjMuMS4wLnF1YWxpZmllciIKLSAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiPgotCi0gICA8ZGVzY3JpcHRpb24+Ci0gICAgICAlZGVzY3JpcHRpb24KLSAgIDwvZGVzY3JpcHRpb24+Ci0KLSAgIDxjb3B5cmlnaHQ+Ci0gICAgICAlY29weXJpZ2h0Ci0gICA8L2NvcHlyaWdodD4KLQotICAgPGxpY2Vuc2UgdXJsPSJsaWNlbnNlLmh0bWwiPgotICAgICAgJWxpY2Vuc2UKLSAgIDwvbGljZW5zZT4KLQotICAgPHVybD4KLSAgICAgIDx1cGRhdGUgbGFiZWw9IiV1cGRhdGVTaXRlTmFtZSIgdXJsPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvd2VidG9vbHMvdXBkYXRlcy8iLz4KLSAgIDwvdXJsPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzZGwudWkuZG9jLnVzZXIiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmRvYy51c2VyIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmRvYy51c2VyIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi08L2ZlYXR1cmU+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3NfdXNlcmRvYy5mZWF0dXJlL2xpY2Vuc2UuaHRtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvbGljZW5zZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjQ0NTk4Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c191c2VyZG9jLmZlYXR1cmUvbGljZW5zZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzNjLm9yZy9UUi8xOTk5L1JFQy1odG1sNDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+Ci08IS0tIHNhdmVkIGZyb20gdXJsPSgwMDQ0KWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsL25vdGljZS5odG1sIC0tPgotPEhUTUw+PEhFQUQ+PFRJVExFPkVjbGlwc2Uub3JnIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9USVRMRT4KLTxNRVRBIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTxNRVRBIGNvbnRlbnQ9Ik1TSFRNTCA2LjAwLjI4MDAuMTQ3OSIgbmFtZT1HRU5FUkFUT1I+PC9IRUFEPgotPEJPRFkgbGFuZz1FTi1VUyB2TGluaz1wdXJwbGUgbGluaz1ibHVlPgotPEgyPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvSDI+Ci08UD5KdW5lIDA2LCAyMDA3PC9QPgotPEgzPlVzYWdlIE9mIENvbnRlbnQ8L0gzPgotPFA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIAotQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLiBVU0UgT0YgCi1USEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSAKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIAotQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCAKLUJZIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSAKLUFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEUgCi1URVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSAKLUFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1csIFRIRU4gWU9VIAotTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9QPgotPEgzPkFwcGxpY2FibGUgTGljZW5zZXM8L0gzPgotPFA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIAotRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIAotUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPEEgCi1ocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLTxQPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCAKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWUyByZXBvc2l0b3J5IAotKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSAKLWFyY2hpdmVzICgiRG93bmxvYWRzIikuPC9QPgotPFA+Q29udGVudCBtYXkgYmUgYXBwb3J0aW9uZWQgaW50byBwbHVnLWlucyAoIlBsdWctaW5zIiksIHBsdWctaW4gZnJhZ21lbnRzIAotKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS4gQSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIAotUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC4gRmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgCi1jb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyAKLWFzc29jaWF0ZWQgd2l0aCBhIEZlYXR1cmUuIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgYXJlIGxvY2F0ZWQgaW4gZGlyZWN0b3JpZXMgCi1uYW1lZCAicGx1Z2lucyIgYW5kIEZlYXR1cmVzIGFyZSBsb2NhdGVkIGluIGRpcmVjdG9yaWVzIG5hbWVkICJmZWF0dXJlcyIuPC9QPgotPFA+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIEZpbGVzIG5hbWVkIAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgCi1GZWF0dXJlcy48L1A+Ci08UD5UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlIGNvbnRhaW5lZCAKLWluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIAotRmVhdHVyZXMgYW5kIEluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgCi0oIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlIExpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSAKLWRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZSBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIAotbG9jYXRpb25zOjwvUD4KLTxVTD4KLSAgPExJPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeSAKLSAgPExJPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzIAotICA8TEk+U3ViZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zIAotICA8TEk+RmVhdHVyZSBkaXJlY3RvcmllcyA8L0xJPjwvVUw+Ci08UD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgCi11c2luZyB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGUgCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnMgSW5jbHVkZWQgCi1GZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdSB3aXRoIHRoZSB0ZXJtcyAKLWFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtIHlvdSB3aGVyZSB5b3UgY2FuIAotbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIAotZmlsZXMgbmFtZWQgImZlYXR1cmUucHJvcGVydGllcyIuIFN1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIAotVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgCi1hbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IAotZGlyZWN0b3J5LjwvUD4KLTxQPlRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUiBUTyBUSEUgRVBMIAotT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiBTT01FIE9GIFRIRVNFIAotT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L1A+Ci08VUw+Ci0gIDxMST5Db21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9BPikgCi0KLSAgPExJPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L0E+KSAKLQotICA8TEk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9BPikgCi0KLSAgPExJPklCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sPC9BPikgCi0KLSAgPExJPk1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbCI+aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWw8L0E+KSAKLQotICA8TEk+TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwiPmh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbDwvQT4pIAotICA8L0xJPgotICAgIAotICA8TEk+Q29tbW9uIERldmVsb3BtZW50IGFuZCBEaXN0cmlidXRpb24gTGljZW5zZSAoQ0RETCkgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5zdW4uY29tL2NkZGwvY2RkbC5odG1sIj5odHRwOi8vd3d3LnN1bi5jb20vY2RkbC9jZGRsLmh0bWwpPC9BPgotICA8L0xJPgotPC9VTD4KLTxQPklUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1IgCi1UTyBVU0UgT0YgVEhFIENPTlRFTlQuIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2Ugb3IgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBpcyAKLXByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCAKLWNvbmRpdGlvbnMgZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LjwvUD4KLTxIMz5DcnlwdG9ncmFwaHk8L0gzPgotPFA+Q29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlIAotY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgCi1yZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkUgdXNpbmcgYW55IAotZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIAotY29uY2VybmluZyB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgCi10byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9QPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUvLnByb2plY3QgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMDUwYzguLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3dzZGwxNS5mZWF0dXJlLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzX3dzZGwxNS5mZWF0dXJlPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLkZlYXR1cmVCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZU5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3dzZGwxNS5mZWF0dXJlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c193c2RsMTUuZmVhdHVyZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMzg2ZjcuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3dzZGwxNS5mZWF0dXJlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotI01vbiBEZWMgMTcgMTc6MzY6NTkgRVNUIDIwMDcKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1lbmNvZGluZy88cHJvamVjdD49SVNPLTg4NTktMQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3dzZGwxNS5mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I1MDI2MC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gZmVhdHVyZS54bWwsXAotICAgICAgICAgICAgICAgbGljZW5zZS5odG1sLFwKLSAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBlcGwtdjEwLmh0bWwsXAotICAgICAgICAgICAgICAgZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3dzZGwxNS5mZWF0dXJlL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZkZjcwOC4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c193c2RsMTUuZmVhdHVyZS9lcGwtdjEwLmh0bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUvZXBsLXYxMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDRiMTk2Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c193c2RsMTUuZmVhdHVyZS9lcGwtdjEwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotPGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIgoteG1sbnM6dz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIKLXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4KLQotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KLTxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9V29yZC5Eb2N1bWVudD4KLTxtZXRhIG5hbWU9R2VuZXJhdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPG1ldGEgbmFtZT1PcmlnaW5hdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPGxpbmsgcmVsPUZpbGUtTGlzdAotaHJlZj0iLi9FY2xpcHNlJTIwRVBMJTIwMjAwM18xMV8xMCUyMEZpbmFsX2ZpbGVzL2ZpbGVsaXN0LnhtbCI+Ci08dGl0bGU+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIFZlcnNpb24gMS4wPC90aXRsZT4KLTwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDxvOkRvY3VtZW50UHJvcGVydGllcz4KLSAgPG86UmV2aXNpb24+MjwvbzpSZXZpc2lvbj4KLSAgPG86VG90YWxUaW1lPjM8L286VG90YWxUaW1lPgotICA8bzpDcmVhdGVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkNyZWF0ZWQ+Ci0gIDxvOkxhc3RTYXZlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpMYXN0U2F2ZWQ+Ci0gIDxvOlBhZ2VzPjQ8L286UGFnZXM+Ci0gIDxvOldvcmRzPjE2MjY8L286V29yZHM+Ci0gIDxvOkNoYXJhY3RlcnM+OTI3MDwvbzpDaGFyYWN0ZXJzPgotICAgPG86TGluZXM+Nzc8L286TGluZXM+Ci0gIDxvOlBhcmFncmFwaHM+MTg8L286UGFyYWdyYXBocz4KLSAgPG86Q2hhcmFjdGVyc1dpdGhTcGFjZXM+MTEzODQ8L286Q2hhcmFjdGVyc1dpdGhTcGFjZXM+Ci0gIDxvOlZlcnNpb24+OS40NDAyPC9vOlZlcnNpb24+Ci0gPC9vOkRvY3VtZW50UHJvcGVydGllcz4KLTwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDx3OldvcmREb2N1bWVudD4KLSAgPHc6VHJhY2tSZXZpc2lvbnMvPgotIDwvdzpXb3JkRG9jdW1lbnQ+Ci08L3htbD48IVtlbmRpZl0tLT4KLTxzdHlsZT4KLTwhLS0KLSAvKiBGb250IERlZmluaXRpb25zICovCi1AZm9udC1mYWNlCi0Je2ZvbnQtZmFtaWx5OlRhaG9tYTsKLQlwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDsKLQltc28tZm9udC1jaGFyc2V0OjA7Ci0JbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7Ci0JbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7Ci0JbXNvLWZvbnQtc2lnbmF0dXJlOjU1MzY3OTQ5NSAtMjE0NzQ4MzY0OCA4IDAgNjYwNDcgMDt9Ci0gLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KLXAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwKLQl7bXNvLXN0eWxlLXBhcmVudDoiIjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wCi0Je21hcmdpbi1yaWdodDowaW47Ci0JbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87Ci0JbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87Ci0JbWFyZ2luLWxlZnQ6MGluOwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAuQmFsbG9vblRleHQsIGxpLkJhbGxvb25UZXh0LCBkaXYuQmFsbG9vblRleHQKLQl7bXNvLXN0eWxlLW5hbWU6IkJhbGxvb24gVGV4dCI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZTo4LjBwdDsKLQlmb250LWZhbWlseTpUYWhvbWE7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotQHBhZ2UgU2VjdGlvbjEKLQl7c2l6ZTo4LjVpbiAxMS4waW47Ci0JbWFyZ2luOjEuMGluIDEuMjVpbiAxLjBpbiAxLjI1aW47Ci0JbXNvLWhlYWRlci1tYXJnaW46LjVpbjsKLQltc28tZm9vdGVyLW1hcmdpbjouNWluOwotCW1zby1wYXBlci1zb3VyY2U6MDt9Ci1kaXYuU2VjdGlvbjEKLQl7cGFnZTpTZWN0aW9uMTt9Ci0tLT4KLTwvc3R5bGU+Ci08L2hlYWQ+Ci0KLTxib2R5IGxhbmc9RU4tVVMgc3R5bGU9J3RhYi1pbnRlcnZhbDouNWluJz4KLQotPGRpdiBjbGFzcz1TZWN0aW9uMT4KLQotPHAgYWxpZ249Y2VudGVyIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcic+PGI+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIHYgMS4wPC9iPgotPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VEhFIEFDQ09NUEFOWUlORyBQUk9HUkFNIElTIFBST1ZJREVEIFVOREVSCi1USEUgVEVSTVMgT0YgVEhJUyBFQ0xJUFNFIFBVQkxJQyBMSUNFTlNFICgmcXVvdDtBR1JFRU1FTlQmcXVvdDspLiBBTlkgVVNFLAotUkVQUk9EVUNUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBDT05TVElUVVRFUyBSRUNJUElFTlQnUyBBQ0NFUFRBTkNFCi1PRiBUSElTIEFHUkVFTUVOVC48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjEuIERFRklOSVRJT05TPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0aW9uJnF1b3Q7IG1lYW5zOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaW4gdGhlIGNhc2Ugb2YgdGhlIGluaXRpYWwgQ29udHJpYnV0b3IsIHRoZSBpbml0aWFsIGNvZGUgYW5kIGRvY3VtZW50YXRpb24KLWRpc3RyaWJ1dGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBhbmQ8YnIgY2xlYXI9bGVmdD4KLWIpIGluIHRoZSBjYXNlIG9mIGVhY2ggc3Vic2VxdWVudCBDb250cmlidXRvcjo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotY2hhbmdlcyB0byB0aGUgUHJvZ3JhbSwgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1hZGRpdGlvbnMgdG8gdGhlIFByb2dyYW07PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+d2hlcmUKLXN1Y2ggY2hhbmdlcyBhbmQvb3IgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtIG9yaWdpbmF0ZSBmcm9tIGFuZCBhcmUgZGlzdHJpYnV0ZWQKLWJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4gQSBDb250cmlidXRpb24gJ29yaWdpbmF0ZXMnIGZyb20gYSBDb250cmlidXRvcgotaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24KLXN1Y2ggQ29udHJpYnV0b3IncyBiZWhhbGYuIENvbnRyaWJ1dGlvbnMgZG8gbm90IGluY2x1ZGUgYWRkaXRpb25zIHRvIHRoZQotUHJvZ3JhbSB3aGljaDogKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGluIGNvbmp1bmN0aW9uCi13aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93biBsaWNlbnNlIGFncmVlbWVudCwgYW5kIChpaSkgYXJlIG5vdCBkZXJpdmF0aXZlCi13b3JrcyBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dG9yJnF1b3Q7IG1lYW5zIGFueSBwZXJzb24gb3IKLWVudGl0eSB0aGF0IGRpc3RyaWJ1dGVzIHRoZSBQcm9ncmFtLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7TGljZW5zZWQgUGF0ZW50cyAmcXVvdDsgbWVhbiBwYXRlbnQKLWNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3Igd2hpY2ggYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlCi1vciBzYWxlIG9mIGl0cyBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UHJvZ3JhbSZxdW90OyBtZWFucyB0aGUgQ29udHJpYnV0aW9ucwotZGlzdHJpYnV0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoaXMgQWdyZWVtZW50Ljwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UmVjaXBpZW50JnF1b3Q7IG1lYW5zIGFueW9uZSB3aG8KLXJlY2VpdmVzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYWxsIENvbnRyaWJ1dG9ycy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjIuIEdSQU5UIE9GIFJJR0hUUzwvc3Bhbj48L2I+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgUmVjaXBpZW50Ci1hIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvPHNwYW4KLXN0eWxlPSdjb2xvcjpyZWQnPiA8L3NwYW4+cmVwcm9kdWNlLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YsIHB1YmxpY2x5Ci1kaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlIGFuZCBzdWJsaWNlbnNlIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaAotQ29udHJpYnV0b3IsIGlmIGFueSwgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlCi1mb3JtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzCi1SZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz4gPC9zcGFuPnJveWFsdHktZnJlZQotcGF0ZW50IGxpY2Vuc2UgdW5kZXIgTGljZW5zZWQgUGF0ZW50cyB0byBtYWtlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNlbGwsIGltcG9ydAotYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2ggQ29udHJpYnV0b3IsIGlmIGFueSwgaW4gc291cmNlCi1jb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIHBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbgotb2YgdGhlIENvbnRyaWJ1dGlvbiBhbmQgdGhlIFByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMgYWRkZWQKLWJ5IHRoZSBDb250cmlidXRvciwgc3VjaCBhZGRpdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGNhdXNlcyBzdWNoIGNvbWJpbmF0aW9uCi10byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvCi1hbnkgb3RoZXIgY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUgdGhlIENvbnRyaWJ1dGlvbi4gTm8gaGFyZHdhcmUgcGVyIHNlIGlzCi1saWNlbnNlZCBoZXJldW5kZXIuIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmMpCi1SZWNpcGllbnQgdW5kZXJzdGFuZHMgdGhhdCBhbHRob3VnaCBlYWNoIENvbnRyaWJ1dG9yIGdyYW50cyB0aGUgbGljZW5zZXMgdG8gaXRzCi1Db250cmlidXRpb25zIHNldCBmb3J0aCBoZXJlaW4sIG5vIGFzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvcgotdGhhdCB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBpbmZyaW5nZSB0aGUgcGF0ZW50IG9yIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eQotcmlnaHRzIG9mIGFueSBvdGhlciBlbnRpdHkuIEVhY2ggQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8gUmVjaXBpZW50Ci1mb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsCi1wcm9wZXJ0eSByaWdodHMgb3Igb3RoZXJ3aXNlLiBBcyBhIGNvbmRpdGlvbiB0byBleGVyY2lzaW5nIHRoZSByaWdodHMgYW5kCi1saWNlbnNlcyBncmFudGVkIGhlcmV1bmRlciwgZWFjaCBSZWNpcGllbnQgaGVyZWJ5IGFzc3VtZXMgc29sZSByZXNwb25zaWJpbGl0eQotdG8gc2VjdXJlIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwKLWlmIGEgdGhpcmQgcGFydHkgcGF0ZW50IGxpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgUmVjaXBpZW50IHRvIGRpc3RyaWJ1dGUKLXRoZSBQcm9ncmFtLCBpdCBpcyBSZWNpcGllbnQncyByZXNwb25zaWJpbGl0eSB0byBhY3F1aXJlIHRoYXQgbGljZW5zZSBiZWZvcmUKLWRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5kKQotRWFjaCBDb250cmlidXRvciByZXByZXNlbnRzIHRoYXQgdG8gaXRzIGtub3dsZWRnZSBpdCBoYXMgc3VmZmljaWVudCBjb3B5cmlnaHQKLXJpZ2h0cyBpbiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIHRvIGdyYW50IHRoZSBjb3B5cmlnaHQgbGljZW5zZSBzZXQgZm9ydGggaW4KLXRoaXMgQWdyZWVtZW50LiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+My4gUkVRVUlSRU1FTlRTPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QSBDb250cmlidXRvciBtYXkgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgdGhlCi1Qcm9ncmFtIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDo8L3NwYW4+Ci08L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBjb21wbGllcyB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudDsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLWl0cyBsaWNlbnNlIGFncmVlbWVudDo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotZWZmZWN0aXZlbHkgZGlzY2xhaW1zIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCB3YXJyYW50aWVzIGFuZAotY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiB0aXRsZQotYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZCBpbXBsaWVkIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiBtZXJjaGFudGFiaWxpdHkKLWFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZTsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1lZmZlY3RpdmVseSBleGNsdWRlcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgbGlhYmlsaXR5IGZvciBkYW1hZ2VzLAotaW5jbHVkaW5nIGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsIGluY2lkZW50YWwgYW5kIGNvbnNlcXVlbnRpYWwgZGFtYWdlcywgc3VjaAotYXMgbG9zdCBwcm9maXRzOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paWkpCi1zdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIEFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0Ci1Db250cmlidXRvciBhbG9uZSBhbmQgbm90IGJ5IGFueSBvdGhlciBwYXJ0eTsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aXYpCi1zdGF0ZXMgdGhhdCBzb3VyY2UgY29kZSBmb3IgdGhlIFByb2dyYW0gaXMgYXZhaWxhYmxlIGZyb20gc3VjaCBDb250cmlidXRvciwgYW5kCi1pbmZvcm1zIGxpY2Vuc2VlcyBob3cgdG8gb2J0YWluIGl0IGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhCi1tZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgZXhjaGFuZ2UuPHNwYW4gc3R5bGU9J2NvbG9yOmJsdWUnPiA8L3NwYW4+PC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPldoZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlCi1jb2RlIGZvcm06PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMgQWdyZWVtZW50OyBhbmQgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikgYQotY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29udHJpYnV0b3JzIG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIGFueQotY29weXJpZ2h0IG5vdGljZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVhY2ggQ29udHJpYnV0b3IgbXVzdCBpZGVudGlmeSBpdHNlbGYgYXMgdGhlCi1vcmlnaW5hdG9yIG9mIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgaW4gYSBtYW5uZXIgdGhhdCByZWFzb25hYmx5IGFsbG93cwotc3Vic2VxdWVudCBSZWNpcGllbnRzIHRvIGlkZW50aWZ5IHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBDb250cmlidXRpb24uIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz40LiBDT01NRVJDSUFMIERJU1RSSUJVVElPTjwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbW1lcmNpYWwgZGlzdHJpYnV0b3JzIG9mIHNvZnR3YXJlIG1heQotYWNjZXB0IGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyB3aXRoIHJlc3BlY3QgdG8gZW5kIHVzZXJzLCBidXNpbmVzcyBwYXJ0bmVycwotYW5kIHRoZSBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2UKLW9mIHRoZSBQcm9ncmFtLCB0aGUgQ29udHJpYnV0b3Igd2hvIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbAotcHJvZHVjdCBvZmZlcmluZyBzaG91bGQgZG8gc28gaW4gYSBtYW5uZXIgd2hpY2ggZG9lcyBub3QgY3JlYXRlIHBvdGVudGlhbAotbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIHN1Y2ggQ29udHJpYnV0b3IgKCZxdW90O0NvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yJnF1b3Q7KSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyCi1Db250cmlidXRvciAoJnF1b3Q7SW5kZW1uaWZpZWQgQ29udHJpYnV0b3ImcXVvdDspIGFnYWluc3QgYW55IGxvc3NlcywgZGFtYWdlcyBhbmQKLWNvc3RzIChjb2xsZWN0aXZlbHkgJnF1b3Q7TG9zc2VzJnF1b3Q7KSBhcmlzaW5nIGZyb20gY2xhaW1zLCBsYXdzdWl0cyBhbmQgb3RoZXIKLWxlZ2FsIGFjdGlvbnMgYnJvdWdodCBieSBhIHRoaXJkIHBhcnR5IGFnYWluc3QgdGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIHRvCi10aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvciBvbWlzc2lvbnMgb2Ygc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluCi1jb25uZWN0aW9uIHdpdGggaXRzIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdAotb2ZmZXJpbmcuIFRoZSBvYmxpZ2F0aW9ucyBpbiB0aGlzIHNlY3Rpb24gZG8gbm90IGFwcGx5IHRvIGFueSBjbGFpbXMgb3IgTG9zc2VzCi1yZWxhdGluZyB0byBhbnkgYWN0dWFsIG9yIGFsbGVnZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGluZnJpbmdlbWVudC4gSW4gb3JkZXIKLXRvIHF1YWxpZnksIGFuIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG11c3Q6IGEpIHByb21wdGx5IG5vdGlmeSB0aGUgQ29tbWVyY2lhbAotQ29udHJpYnV0b3IgaW4gd3JpdGluZyBvZiBzdWNoIGNsYWltLCBhbmQgYikgYWxsb3cgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IKLXRvIGNvbnRyb2wsIGFuZCBjb29wZXJhdGUgd2l0aCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiwgdGhlIGRlZmVuc2UgYW5kCi1hbnkgcmVsYXRlZCBzZXR0bGVtZW50IG5lZ290aWF0aW9ucy4gVGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG1heSBwYXJ0aWNpcGF0ZQotaW4gYW55IHN1Y2ggY2xhaW0gYXQgaXRzIG93biBleHBlbnNlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Rm9yIGV4YW1wbGUsIGEgQ29udHJpYnV0b3IgbWlnaHQgaW5jbHVkZSB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIFByb2R1Y3QgWC4gVGhhdCBDb250cmlidXRvciBpcyB0aGVuIGEKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmIHRoYXQgQ29tbWVyY2lhbCBDb250cmlidXRvciB0aGVuIG1ha2VzIHBlcmZvcm1hbmNlCi1jbGFpbXMsIG9yIG9mZmVycyB3YXJyYW50aWVzIHJlbGF0ZWQgdG8gUHJvZHVjdCBYLCB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kCi13YXJyYW50aWVzIGFyZSBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IncyByZXNwb25zaWJpbGl0eSBhbG9uZS4gVW5kZXIgdGhpcwotc2VjdGlvbiwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3Igd291bGQgaGF2ZSB0byBkZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlCi1vdGhlciBDb250cmlidXRvcnMgcmVsYXRlZCB0byB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kIHdhcnJhbnRpZXMsIGFuZCBpZiBhCi1jb3VydCByZXF1aXJlcyBhbnkgb3RoZXIgQ29udHJpYnV0b3IgdG8gcGF5IGFueSBkYW1hZ2VzIGFzIGEgcmVzdWx0LCB0aGUKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IgbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjUuIE5PIFdBUlJBTlRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBUSEUgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTiAmcXVvdDtBUyBJUyZxdW90OyBCQVNJUywgV0lUSE9VVAotV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVEIElOQ0xVRElORywKLVdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwKLU1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gRWFjaCBSZWNpcGllbnQgaXMgc29sZWx5Ci1yZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBhbmQgZGlzdHJpYnV0aW5nIHRoZQotUHJvZ3JhbSBhbmQgYXNzdW1lcyBhbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcwotQWdyZWVtZW50ICwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgcmlza3MgYW5kIGNvc3RzIG9mIHByb2dyYW0gZXJyb3JzLAotY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IKLWVxdWlwbWVudCwgYW5kIHVuYXZhaWxhYmlsaXR5IG9yIGludGVycnVwdGlvbiBvZiBvcGVyYXRpb25zLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ni4gRElTQ0xBSU1FUiBPRiBMSUFCSUxJVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIE5FSVRIRVIgUkVDSVBJRU5UIE5PUiBBTlkgQ09OVFJJQlVUT1JTIFNIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSBGT1IKLUFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotKElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLU9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi1ORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIERJU1RSSUJVVElPTiBPRgotVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCBIRVJFVU5ERVIsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjcuIEdFTkVSQUw8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIGludmFsaWQKLW9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yCi1lbmZvcmNlYWJpbGl0eSBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgYW5kIHdpdGhvdXQKLWZ1cnRoZXIgYWN0aW9uIGJ5IHRoZSBwYXJ0aWVzIGhlcmV0bywgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlCi1taW5pbXVtIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBSZWNpcGllbnQgaW5zdGl0dXRlcyBwYXRlbnQgbGl0aWdhdGlvbgotYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KQotYWxsZWdpbmcgdGhhdCB0aGUgUHJvZ3JhbSBpdHNlbGYgKGV4Y2x1ZGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIFByb2dyYW0gd2l0aAotb3RoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUpIGluZnJpbmdlcyBzdWNoIFJlY2lwaWVudCdzIHBhdGVudChzKSwgdGhlbiBzdWNoCi1SZWNpcGllbnQncyByaWdodHMgZ3JhbnRlZCB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlCi1zdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BbGwgUmVjaXBpZW50J3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50Ci1zaGFsbCB0ZXJtaW5hdGUgaWYgaXQgZmFpbHMgdG8gY29tcGx5IHdpdGggYW55IG9mIHRoZSBtYXRlcmlhbCB0ZXJtcyBvcgotY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlCi1wZXJpb2Qgb2YgdGltZSBhZnRlciBiZWNvbWluZyBhd2FyZSBvZiBzdWNoIG5vbmNvbXBsaWFuY2UuIElmIGFsbCBSZWNpcGllbnQncwotcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHRlcm1pbmF0ZSwgUmVjaXBpZW50IGFncmVlcyB0byBjZWFzZSB1c2UgYW5kCi1kaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLAotUmVjaXBpZW50J3Mgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYW5kIGFueSBsaWNlbnNlcyBncmFudGVkIGJ5Ci1SZWNpcGllbnQgcmVsYXRpbmcgdG8gdGhlIFByb2dyYW0gc2hhbGwgY29udGludWUgYW5kIHN1cnZpdmUuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZQotY29waWVzIG9mIHRoaXMgQWdyZWVtZW50LCBidXQgaW4gb3JkZXIgdG8gYXZvaWQgaW5jb25zaXN0ZW5jeSB0aGUgQWdyZWVtZW50IGlzCi1jb3B5cmlnaHRlZCBhbmQgbWF5IG9ubHkgYmUgbW9kaWZpZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXIuIFRoZSBBZ3JlZW1lbnQKLVN0ZXdhcmQgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIHB1Ymxpc2ggbmV3IHZlcnNpb25zIChpbmNsdWRpbmcgcmV2aXNpb25zKSBvZgotdGhpcyBBZ3JlZW1lbnQgZnJvbSB0aW1lIHRvIHRpbWUuIE5vIG9uZSBvdGhlciB0aGFuIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCBoYXMKLXRoZSByaWdodCB0byBtb2RpZnkgdGhpcyBBZ3JlZW1lbnQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgdGhlIGluaXRpYWwKLUFncmVlbWVudCBTdGV3YXJkLiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1heSBhc3NpZ24gdGhlIHJlc3BvbnNpYmlsaXR5IHRvCi1zZXJ2ZSBhcyB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgdG8gYSBzdWl0YWJsZSBzZXBhcmF0ZSBlbnRpdHkuIEVhY2ggbmV3IHZlcnNpb24KLW9mIHRoZSBBZ3JlZW1lbnQgd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBUaGUgUHJvZ3JhbQotKGluY2x1ZGluZyBDb250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gdGhlIHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgdW5kZXIgd2hpY2ggaXQgd2FzIHJlY2VpdmVkLiBJbiBhZGRpdGlvbiwgYWZ0ZXIgYSBuZXcgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCBpcyBwdWJsaXNoZWQsIENvbnRyaWJ1dG9yIG1heSBlbGVjdCB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKSB1bmRlciB0aGUgbmV3IHZlcnNpb24uIEV4Y2VwdCBhcyBleHByZXNzbHkgc3RhdGVkCi1pbiBTZWN0aW9ucyAyKGEpIGFuZCAyKGIpIGFib3ZlLCBSZWNpcGllbnQgcmVjZWl2ZXMgbm8gcmlnaHRzIG9yIGxpY2Vuc2VzIHRvCi10aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGFueSBDb250cmlidXRvciB1bmRlciB0aGlzIEFncmVlbWVudCwgd2hldGhlcgotZXhwcmVzc2x5LCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLiBBbGwgcmlnaHRzIGluIHRoZSBQcm9ncmFtIG5vdAotZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYXJlIHJlc2VydmVkLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhpcyBBZ3JlZW1lbnQgaXMgZ292ZXJuZWQgYnkgdGhlIGxhd3Mgb2YgdGhlCi1TdGF0ZSBvZiBOZXcgWW9yayBhbmQgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIG9mCi1BbWVyaWNhLiBObyBwYXJ0eSB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJyaW5nIGEgbGVnYWwgYWN0aW9uIHVuZGVyIHRoaXMKLUFncmVlbWVudCBtb3JlIHRoYW4gb25lIHllYXIgYWZ0ZXIgdGhlIGNhdXNlIG9mIGFjdGlvbiBhcm9zZS4gRWFjaCBwYXJ0eSB3YWl2ZXMKLWl0cyByaWdodHMgdG8gYSBqdXJ5IHRyaWFsIGluIGFueSByZXN1bHRpbmcgbGl0aWdhdGlvbi48L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsPjwhW2lmICFzdXBwb3J0RW1wdHlQYXJhc10+Jm5ic3A7PCFbZW5kaWZdPjxvOnA+PC9vOnA+PC9wPgotCi08L2Rpdj4KLQotPC9ib2R5PgotCi08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3dzZGwxNS5mZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcyBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c193c2RsMTUuZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YWMyZWIuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZXMvb3JnLmVjbGlwc2Uud3N0LndzX3dzZGwxNS5mZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBmZWF0dXJlLnByb3BlcnRpZXMKLSMgY29udGFpbnMgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZm9yIGZlYXR1cmUueG1sCi0jICIlZm9vIiBpbiBmZWF0dXJlLnhtbCBjb3JyZXNwb25kcyB0byB0aGUga2V5ICJmb28iIGluIHRoaXMgZmlsZQotIyBqYXZhLmlvLlByb3BlcnRpZXMgZmlsZSAoSVNPIDg4NTktMSB3aXRoICJcIiBlc2NhcGVzKQotIyBUaGlzIGZpbGUgc2hvdWxkIGJlIHRyYW5zbGF0ZWQuCi0KLSMgImZlYXR1cmVOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGZlYXR1cmUKLWZlYXR1cmVOYW1lPVdTREwgMS41IEZlYXR1cmUKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPVRoZSBFY2xpcHNlIFdlYiBUb29scyBQbGF0Zm9ybSAoV1RQKSBQcm9qZWN0IHVwZGF0ZSBzaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1XU0RMIDEuNSBGZWF0dXJlCi0KLSMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgotY29weXJpZ2h0PVwKLUNvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy5cblwKLUFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKLWFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAotd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCi1cblwKLUNvbnRyaWJ1dG9yczpcblwKLSAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb25cbgotIyMjIyMjIyMjIyMjIyMjIyBlbmQgb2YgY29weXJpZ2h0IHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jICJsaWNlbnNlVVJMIiBwcm9wZXJ0eSAtIFVSTCBvZiB0aGUgIkZlYXR1cmUgTGljZW5zZSIKLSMgZG8gbm90IHRyYW5zbGF0ZSB2YWx1ZSAtIGp1c3QgY2hhbmdlIHRvIHBvaW50IHRvIGEgbG9jYWxlLXNwZWNpZmljIEhUTUwgcGFnZQotbGljZW5zZVVSTD1saWNlbnNlLmh0bWwKLQotIyAibGljZW5zZSIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgTGljZW5zZSIKLSMgc2hvdWxkIGJlIHBsYWluIHRleHQgdmVyc2lvbiBvZiBsaWNlbnNlIGFncmVlbWVudCBwb2ludGVkIHRvIGJlICJsaWNlbnNlVVJMIgotbGljZW5zZT1cCi1FQ0xJUFNFIEZPVU5EQVRJT04gU09GVFdBUkUgVVNFUiBBR1JFRU1FTlRcblwKLUp1bmUsIDIwMDhcblwKLVxuXAotVXNhZ2UgT2YgQ29udGVudFxuXAotXG5cCi1USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCi1PVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKLVVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAotQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCi1OT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCi1BR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCi1BTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAotT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKLU9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCi1CRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCi1cblwKLUFwcGxpY2FibGUgTGljZW5zZXNcblwKLVxuXAotVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb25cblwKLWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljXG5cCi1MaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpc1xuXAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKLVxuXAotQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCi1kb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlNcblwKLXJlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCi1hcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKLVxuXAotICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAotICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCi0gICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCi0gICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YT8gQVJjaGl2ZSlcblwKLSAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAotICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKLSAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKLSAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCi0gICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKLSAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCi0gICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWRcblwKLSJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mXG5cCi1JbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAotY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAotaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAotTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCi1cblwKLSAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCi0gICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCi0gICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKLSAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAotICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCi1cblwKLU5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKLUVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlXG5cCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKLUluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCi13aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoteW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAotdGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsXG5cCi1GZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91clxuXAotdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCi1cblwKLVRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAotVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCi1TT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCi1cblwKLSAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAotICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCi0gICAgLSBJQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwpXG5cCi0gICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKLSAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCi0gICAgLSBDb21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIChDRERMKSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c193c2RsMTUuZmVhdHVyZS9mZWF0dXJlLnhtbCBiL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c193c2RsMTUuZmVhdHVyZS9mZWF0dXJlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc4YWRjNy4uMDAwMDAwMAotLS0gYS9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUiCi0gICAgICBsYWJlbD0iJWZlYXR1cmVOYW1lIgotICAgICAgdmVyc2lvbj0iMS41LjMucXVhbGlmaWVyIgotICAgICAgcHJvdmlkZXItbmFtZT0iJXByb3ZpZGVyTmFtZSIKLSAgICAgIGltYWdlPSJlY2xpcHNlX3VwZGF0ZV8xMjAuanBnIj4KLQotICAgPGRlc2NyaXB0aW9uPgotICAgICAgJWRlc2NyaXB0aW9uCi0gICA8L2Rlc2NyaXB0aW9uPgotCi0gICA8Y29weXJpZ2h0PgotICAgICAgJWNvcHlyaWdodAotICAgPC9jb3B5cmlnaHQ+Ci0KLSAgIDxsaWNlbnNlIHVybD0iJWxpY2Vuc2VVUkwiPgotICAgICAgJWxpY2Vuc2UKLSAgIDwvbGljZW5zZT4KLQotICAgPHVybD4KLSAgICAgIDx1cGRhdGUgbGFiZWw9IiV1cGRhdGVTaXRlTmFtZSIgdXJsPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvd2VidG9vbHMvdXBkYXRlcy8iLz4KLSAgIDwvdXJsPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0iamF2YXgud3NkbCIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIxLjUuMS5xdWFsaWZpZXIiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLTwvZmVhdHVyZT4KZGlmZiAtLWdpdCBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c193c2RsMTUuZmVhdHVyZS9saWNlbnNlLmh0bWwgYi9mZWF0dXJlcy9vcmcuZWNsaXBzZS53c3Qud3Nfd3NkbDE1LmZlYXR1cmUvbGljZW5zZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmFiZmI0Li4wMDAwMDAwCi0tLSBhL2ZlYXR1cmVzL29yZy5lY2xpcHNlLndzdC53c193c2RsMTUuZmVhdHVyZS9saWNlbnNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53M2Mub3JnL1RSLzE5OTkvUkVDLWh0bWw0MDEtMTk5OTEyMjQvbG9vc2UuZHRkIj4KLTwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwNDQpaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwvbm90aWNlLmh0bWwgLS0+Ci08SFRNTD48SEVBRD48VElUTEU+RWNsaXBzZS5vcmcgU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L1RJVExFPgotPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPE1FVEEgY29udGVudD0iTVNIVE1MIDYuMDAuMjgwMC4xNDc5IiBuYW1lPUdFTkVSQVRPUj48L0hFQUQ+Ci08Qk9EWSBsYW5nPUVOLVVTIHZMaW5rPXB1cnBsZSBsaW5rPWJsdWU+Ci08SDI+RWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9IMj4KLTxQPkp1bmUgMDYsIDIwMDc8L1A+Ci08SDM+VXNhZ2UgT2YgQ29udGVudDwvSDM+Ci08UD5USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gCi1BTkQvT1IgT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUyAoQ09MTEVDVElWRUxZICJDT05URU5UIikuIFVTRSBPRiAKLVRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIAotVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgCi1CRUxPVy4gQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVSBBR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIAotQlkgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIAotQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSAKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIAotQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVywgVEhFTiBZT1UgCi1NQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC48L1A+Ci08SDM+QXBwbGljYWJsZSBMaWNlbnNlczwvSDM+Ci08UD5Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgCi1Gb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgCi1QdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgCi1Db250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCA8QSAKLWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotPFA+Q29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsIAotZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZS5vcmcgQ1ZTIHJlcG9zaXRvcnkgCi0oIlJlcG9zaXRvcnkiKSBpbiBDVlMgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGUgYXMgZG93bmxvYWRhYmxlIAotYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS48L1A+Ci08UD5Db250ZW50IG1heSBiZSBhcHBvcnRpb25lZCBpbnRvIHBsdWctaW5zICgiUGx1Zy1pbnMiKSwgcGx1Zy1pbiBmcmFnbWVudHMgCi0oIkZyYWdtZW50cyIpLCBhbmQgZmVhdHVyZXMgKCJGZWF0dXJlcyIpLiBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgCi1QbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiBGaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSAKLWNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIHRoZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIAotYXNzb2NpYXRlZCB3aXRoIGEgRmVhdHVyZS4gUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBhcmUgbG9jYXRlZCBpbiBkaXJlY3RvcmllcyAKLW5hbWVkICJwbHVnaW5zIiBhbmQgRmVhdHVyZXMgYXJlIGxvY2F0ZWQgaW4gZGlyZWN0b3JpZXMgbmFtZWQgImZlYXR1cmVzIi48L1A+Ci08UD5GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWQgCi0iZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCAKLUZlYXR1cmVzLjwvUD4KLTxQPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIAotaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgCi1GZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAKLSgiRmVhdHVyZSBMaWNlbnNlcyIpLiBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IAotZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlIGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgCi1sb2NhdGlvbnM6PC9QPgotPFVMPgotICA8TEk+VGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5IAotICA8TEk+UGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXMgCi0gIDxMST5TdWJkaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICJzcmMiIG9mIGNlcnRhaW4gUGx1Zy1pbnMgCi0gIDxMST5GZWF0dXJlIGRpcmVjdG9yaWVzIDwvTEk+PC9VTD4KLTxQPk5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCAKLXVzaW5nIHRoZSBFY2xpcHNlIFVwZGF0ZSBNYW5hZ2VyLCB5b3UgbXVzdCBhZ3JlZSB0byBhIGxpY2Vuc2UgKCJGZWF0dXJlIFVwZGF0ZSAKLUxpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWlucyBJbmNsdWRlZCAKLUZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIAotYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIHRoZSBJbmNsdWRlZCBGZWF0dXJlcyBvciBpbmZvcm0geW91IHdoZXJlIHlvdSBjYW4gCi1sb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluIHRoZSAibGljZW5zZSIgcHJvcGVydHkgb2YgCi1maWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsIEZlYXR1cmUgTGljZW5zZXMgYW5kIEZlYXR1cmUgCi1VcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyAKLWFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyIHVzZSBvZiB0aGUgYXNzb2NpYXRlZCBDb250ZW50IGluIHRoYXQgCi1kaXJlY3RvcnkuPC9QPgotPFA+VEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUyBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgCi1PUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuIFNPTUUgT0YgVEhFU0UgCi1PVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOjwvUD4KLTxVTD4KLSAgPExJPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWw8L0E+KSAKLQotICA8TEk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRTwvQT4pIAotCi0gIDxMST5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8QSAKLSAgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjA8L0E+KSAKLQotICA8TEk+SUJNIFB1YmxpYyBMaWNlbnNlIDEuMCAoYXZhaWxhYmxlIGF0IDxBIAotICBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbCI+aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWw8L0E+KSAKLQotICA8TEk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sIj5odHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbDwvQT4pIAotCi0gIDxMST5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbCI+aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sPC9BPikgCi0gIDwvTEk+Ci0gICAKLSAgPExJPkNvbW1vbiBEZXZlbG9wbWVudCBhbmQgRGlzdHJpYnV0aW9uIExpY2Vuc2UgKENEREwpIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgPEEgCi0gIGhyZWY9Imh0dHA6Ly93d3cuc3VuLmNvbS9jZGRsL2NkZGwuaHRtbCI+aHR0cDovL3d3dy5zdW4uY29tL2NkZGwvY2RkbC5odG1sKTwvQT4KLSAgPC9MST4KLTwvVUw+Ci08UD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgCi1wcm92aWRlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgCi1jb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L1A+Ci08SDM+Q3J5cHRvZ3JhcGh5PC9IMz4KLTxQPkNvbnRlbnQgbWF5IGNvbnRhaW4gZW5jcnlwdGlvbiBzb2Z0d2FyZS4gVGhlIGNvdW50cnkgaW4gd2hpY2ggeW91IGFyZSAKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSwgYW5kL29yIAotcmUtZXhwb3J0IHRvIGFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFIHVzaW5nIGFueSAKLWVuY3J5cHRpb24gc29mdHdhcmUsIHBsZWFzZSBjaGVjayB0aGUgY291bnRyeSdzIGxhd3MsIHJlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyAKLWNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLCBhbmQgcmUtZXhwb3J0IG9mIGVuY3J5cHRpb24gc29mdHdhcmUsIAotdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLjwvUD48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy8uY2xhc3NwYXRoIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjg5OGNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0idGVzdHMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvLmN2c2lnbm9yZSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3NjNlYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi10ZW1wLmZvbGRlcgotdGVzdHMuamFyCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzLy5wcm9qZWN0IGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAyZTdjZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0czwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2RiMTA4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotI1RodSBNYXkgMzEgMTQ6Mjg6MzMgRURUIDIwMDcKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1pbnN0YW5jZS9vcmcuZWNsaXBzZS5jb3JlLm5ldC9vcmcuZWNsaXBzZS5jb3JlLm5ldC5oYXNNaWdyYXRlZD10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbkluRGVwcmVjYXRlZENvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25XaGVuT3ZlcnJpZGluZ0RlcHJlY2F0ZWRNZXRob2Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGlzY291cmFnZWRSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVtcHR5U3RhdGVtZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxseUJsb2NrTm90Q29tcGxldGluZ05vcm1hbGx5PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmhpZGRlbkNhdGNoQmxvY2s9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBhdGlibGVOb25Jbmhlcml0ZWRJbnRlcmZhY2VNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmNvbXBsZXRlRW51bVN3aXRjaD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5kaXJlY3RTdGF0aWNBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmxvY2FsVmFyaWFibGVIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nRGVwcmVjYXRlZEFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdTZXJpYWxWZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9FZmZlY3RBc3NpZ25tZW50PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9JbXBsaWNpdFN0cmluZ0NvbnZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub25FeHRlcm5hbGl6ZWRTdHJpbmdMaXRlcmFsPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3BlY2lhbFBhcmFtZXRlckhpZGluZ0ZpZWxkPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN0YXRpY0FjY2Vzc1JlY2VpdmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN5bnRoZXRpY0FjY2Vzc0VtdWxhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udHlwZVBhcmFtZXRlckhpZGluZz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuY2hlY2tlZFR5cGVPcGVyYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmRvY3VtZW50ZWRFbXB0eUJsb2NrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeUVsc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5VHlwZUNoZWNrPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnF1YWxpZmllZEZpZWxkQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb25XaGVuT3ZlcnJpZGluZz1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRJbXBvcnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5PdmVycmlkaW5nQ29uY3JldGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUHJpdmF0ZU1lbWJlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3MDQwMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jTW9uIEphbiAzMCAxMDo0MTozOSBFU1QgMjAwNgotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0xCi1jb21waWxlcnMucC5uby1yZXF1aXJlZC1hdHQ9MAotY29tcGlsZXJzLnAubm90LWV4dGVybmFsaXplZC1hdHQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1hdHRyaWJ1dGU9MAotY29tcGlsZXJzLnAudW5rbm93bi1jbGFzcz0wCi1jb21waWxlcnMucC51bmtub3duLWVsZW1lbnQ9MQotY29tcGlsZXJzLnAudW5rbm93bi1yZXNvdXJjZT0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWV4LXBvaW50cz0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWltcG9ydD0wCi1jb21waWxlcnMudXNlLXByb2plY3Q9dHJ1ZQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTA3MzM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlUExVR0lOX05BTUUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuMTAyLnF1YWxpZmllcgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmp1bml0LAotIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZSwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcywKLSBvcmcuZWNsaXBzZS5qZHQuY29yZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MsCi0gb3JnLmVjbGlwc2UuanN0LndzLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24udXJpcmVzb2x2ZXIKLUJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNAotQnVuZGxlLUNsYXNzUGF0aDogdGVzdC5qYXIKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvYWJvdXQuaHRtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvYnVpbGQucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJlYWMzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIGRhdGEvLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIHRlc3QuamFyCi1qYXJzLmNvbXBpbGUub3JkZXIgPSB0ZXN0Lmphcgotb3V0cHV0LnRlc3QuamFyID0gYmluLwotc291cmNlLnRlc3QuamFyID0gdGVzdHMvCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2RhdGEvYXhpc1NvdXJjZTEvb3JnL3RlbXB1cmkvQXJlYVNlcnZpY2UvQXJlYVNlcnZpY2VQcm94eS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UxL29yZy90ZW1wdXJpL0FyZWFTZXJ2aWNlL0FyZWFTZXJ2aWNlUHJveHkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI3YTQ4Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2RhdGEvYXhpc1NvdXJjZTEvb3JnL3RlbXB1cmkvQXJlYVNlcnZpY2UvQXJlYVNlcnZpY2VQcm94eS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy50ZW1wdXJpLkFyZWFTZXJ2aWNlOwotCi1wdWJsaWMgY2xhc3MgQXJlYVNlcnZpY2VQcm94eSBpbXBsZW1lbnRzIG9yZy50ZW1wdXJpLkFyZWFTZXJ2aWNlLkFyZWFTZXJ2aWNlX1BvcnRUeXBlIHsKLSAgcHJpdmF0ZSBTdHJpbmcgX2VuZHBvaW50ID0gbnVsbDsKLSAgcHJpdmF0ZSBvcmcudGVtcHVyaS5BcmVhU2VydmljZS5BcmVhU2VydmljZV9Qb3J0VHlwZSBhcmVhU2VydmljZV9Qb3J0VHlwZSA9IG51bGw7Ci0gIAotICBwdWJsaWMgQXJlYVNlcnZpY2VQcm94eSgpIHsKLSAgICBfaW5pdEFyZWFTZXJ2aWNlUHJveHkoKTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIF9pbml0QXJlYVNlcnZpY2VQcm94eSgpIHsKLSAgICB0cnkgewotICAgICAgYXJlYVNlcnZpY2VfUG9ydFR5cGUgPSAobmV3IG9yZy50ZW1wdXJpLkFyZWFTZXJ2aWNlLkFyZWFTZXJ2aWNlX1NlcnZpY2VMb2NhdG9yKCkpLmdldEFyZWFTZXJ2aWNlU09BUCgpOwotICAgICAgaWYgKGFyZWFTZXJ2aWNlX1BvcnRUeXBlICE9IG51bGwpIHsKLSAgICAgICAgaWYgKF9lbmRwb2ludCAhPSBudWxsKQotICAgICAgICAgICgoamF2YXgueG1sLnJwYy5TdHViKWFyZWFTZXJ2aWNlX1BvcnRUeXBlKS5fc2V0UHJvcGVydHkoImphdmF4LnhtbC5ycGMuc2VydmljZS5lbmRwb2ludC5hZGRyZXNzIiwgX2VuZHBvaW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIF9lbmRwb2ludCA9IChTdHJpbmcpKChqYXZheC54bWwucnBjLlN0dWIpYXJlYVNlcnZpY2VfUG9ydFR5cGUpLl9nZXRQcm9wZXJ0eSgiamF2YXgueG1sLnJwYy5zZXJ2aWNlLmVuZHBvaW50LmFkZHJlc3MiKTsKLSAgICAgIH0KLSAgICAgIAotICAgIH0KLSAgICBjYXRjaCAoamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uIHNlcnZpY2VFeGNlcHRpb24pIHt9Ci0gIH0KLSAgCi0gIHB1YmxpYyBTdHJpbmcgZ2V0RW5kcG9pbnQoKSB7Ci0gICAgcmV0dXJuIF9lbmRwb2ludDsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgc2V0RW5kcG9pbnQoU3RyaW5nIGVuZHBvaW50KSB7Ci0gICAgX2VuZHBvaW50ID0gZW5kcG9pbnQ7Ci0gICAgaWYgKGFyZWFTZXJ2aWNlX1BvcnRUeXBlICE9IG51bGwpCi0gICAgICAoKGphdmF4LnhtbC5ycGMuU3R1YilhcmVhU2VydmljZV9Qb3J0VHlwZSkuX3NldFByb3BlcnR5KCJqYXZheC54bWwucnBjLnNlcnZpY2UuZW5kcG9pbnQuYWRkcmVzcyIsIF9lbmRwb2ludCk7Ci0gICAgCi0gIH0KLSAgCi0gIHB1YmxpYyBvcmcudGVtcHVyaS5BcmVhU2VydmljZS5BcmVhU2VydmljZV9Qb3J0VHlwZSBnZXRBcmVhU2VydmljZV9Qb3J0VHlwZSgpIHsKLSAgICBpZiAoYXJlYVNlcnZpY2VfUG9ydFR5cGUgPT0gbnVsbCkKLSAgICAgIF9pbml0QXJlYVNlcnZpY2VQcm94eSgpOwotICAgIHJldHVybiBhcmVhU2VydmljZV9Qb3J0VHlwZTsKLSAgfQotICAKLSAgcHVibGljIGZsb2F0IGNhbGN1bGF0ZVJlY3RBcmVhKG9yZy50ZW1wdXJpLkFyZWFTZXJ2aWNlLkRpbWVuc2lvbnMgcGFyYW1ldGVycykgdGhyb3dzIGphdmEucm1pLlJlbW90ZUV4Y2VwdGlvbnsKLSAgICBpZiAoYXJlYVNlcnZpY2VfUG9ydFR5cGUgPT0gbnVsbCkKLSAgICAgIF9pbml0QXJlYVNlcnZpY2VQcm94eSgpOwotICAgIHJldHVybiBhcmVhU2VydmljZV9Qb3J0VHlwZS5jYWxjdWxhdGVSZWN0QXJlYShwYXJhbWV0ZXJzKTsKLSAgfQotICAKLSAgCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UxL29yZy90ZW1wdXJpL0FyZWFTZXJ2aWNlL0FyZWFTZXJ2aWNlU09BUFN0dWIuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMS9vcmcvdGVtcHVyaS9BcmVhU2VydmljZS9BcmVhU2VydmljZVNPQVBTdHViLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZWI5MjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UxL29yZy90ZW1wdXJpL0FyZWFTZXJ2aWNlL0FyZWFTZXJ2aWNlU09BUFN0dWIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotICogQXJlYVNlcnZpY2VTT0FQU3R1Yi5qYXZhCi0gKgotICogVGhpcyBmaWxlIHdhcyBhdXRvLWdlbmVyYXRlZCBmcm9tIFdTREwKLSAqIGJ5IHRoZSBBcGFjaGUgQXhpcyAxLjIuMSBKdW4gMTQsIDIwMDUgKDA5OjE1OjU3IEVEVCkgV1NETDJKYXZhIGVtaXR0ZXIuCi0gKi8KLQotcGFja2FnZSBvcmcudGVtcHVyaS5BcmVhU2VydmljZTsKLQotcHVibGljIGNsYXNzIEFyZWFTZXJ2aWNlU09BUFN0dWIgZXh0ZW5kcyBvcmcuYXBhY2hlLmF4aXMuY2xpZW50LlN0dWIgaW1wbGVtZW50cyBvcmcudGVtcHVyaS5BcmVhU2VydmljZS5BcmVhU2VydmljZV9Qb3J0VHlwZSB7Ci0gICAgcHJpdmF0ZSBqYXZhLnV0aWwuVmVjdG9yIGNhY2hlZFNlckNsYXNzZXMgPSBuZXcgamF2YS51dGlsLlZlY3RvcigpOwotICAgIHByaXZhdGUgamF2YS51dGlsLlZlY3RvciBjYWNoZWRTZXJRTmFtZXMgPSBuZXcgamF2YS51dGlsLlZlY3RvcigpOwotICAgIHByaXZhdGUgamF2YS51dGlsLlZlY3RvciBjYWNoZWRTZXJGYWN0b3JpZXMgPSBuZXcgamF2YS51dGlsLlZlY3RvcigpOwotICAgIHByaXZhdGUgamF2YS51dGlsLlZlY3RvciBjYWNoZWREZXNlckZhY3RvcmllcyA9IG5ldyBqYXZhLnV0aWwuVmVjdG9yKCk7Ci0KLSAgICBzdGF0aWMgb3JnLmFwYWNoZS5heGlzLmRlc2NyaXB0aW9uLk9wZXJhdGlvbkRlc2MgW10gX29wZXJhdGlvbnM7Ci0KLSAgICBzdGF0aWMgewotICAgICAgICBfb3BlcmF0aW9ucyA9IG5ldyBvcmcuYXBhY2hlLmF4aXMuZGVzY3JpcHRpb24uT3BlcmF0aW9uRGVzY1sxXTsKLSAgICAgICAgX2luaXRPcGVyYXRpb25EZXNjMSgpOwotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIHZvaWQgX2luaXRPcGVyYXRpb25EZXNjMSgpewotICAgICAgICBvcmcuYXBhY2hlLmF4aXMuZGVzY3JpcHRpb24uT3BlcmF0aW9uRGVzYyBvcGVyOwotICAgICAgICBvcmcuYXBhY2hlLmF4aXMuZGVzY3JpcHRpb24uUGFyYW1ldGVyRGVzYyBwYXJhbTsKLSAgICAgICAgb3BlciA9IG5ldyBvcmcuYXBhY2hlLmF4aXMuZGVzY3JpcHRpb24uT3BlcmF0aW9uRGVzYygpOwotICAgICAgICBvcGVyLnNldE5hbWUoIkNhbGN1bGF0ZVJlY3RBcmVhIik7Ci0gICAgICAgIHBhcmFtID0gbmV3IG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5QYXJhbWV0ZXJEZXNjKG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCJodHRwOi8vdGVtcHVyaS5vcmcvQXJlYVNlcnZpY2UvIiwgInBhcmFtZXRlcnMiKSwgb3JnLmFwYWNoZS5heGlzLmRlc2NyaXB0aW9uLlBhcmFtZXRlckRlc2MuSU4sIG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCJodHRwOi8vdGVtcHVyaS5vcmcvQXJlYVNlcnZpY2UvIiwgImRpbWVuc2lvbnMiKSwgb3JnLnRlbXB1cmkuQXJlYVNlcnZpY2UuRGltZW5zaW9ucy5jbGFzcywgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgb3Blci5hZGRQYXJhbWV0ZXIocGFyYW0pOwotICAgICAgICBvcGVyLnNldFJldHVyblR5cGUobmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiwgImZsb2F0IikpOwotICAgICAgICBvcGVyLnNldFJldHVybkNsYXNzKGZsb2F0LmNsYXNzKTsKLSAgICAgICAgb3Blci5zZXRSZXR1cm5RTmFtZShuZXcgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSgiaHR0cDovL3RlbXB1cmkub3JnL0FyZWFTZXJ2aWNlLyIsICJhcmVhIikpOwotICAgICAgICBvcGVyLnNldFN0eWxlKG9yZy5hcGFjaGUuYXhpcy5jb25zdGFudHMuU3R5bGUuRE9DVU1FTlQpOwotICAgICAgICBvcGVyLnNldFVzZShvcmcuYXBhY2hlLmF4aXMuY29uc3RhbnRzLlVzZS5MSVRFUkFMKTsKLSAgICAgICAgX29wZXJhdGlvbnNbMF0gPSBvcGVyOwotCi0gICAgfQotCi0gICAgcHVibGljIEFyZWFTZXJ2aWNlU09BUFN0dWIoKSB0aHJvd3Mgb3JnLmFwYWNoZS5heGlzLkF4aXNGYXVsdCB7Ci0gICAgICAgICB0aGlzKG51bGwpOwotICAgIH0KLQotICAgIHB1YmxpYyBBcmVhU2VydmljZVNPQVBTdHViKGphdmEubmV0LlVSTCBlbmRwb2ludFVSTCwgamF2YXgueG1sLnJwYy5TZXJ2aWNlIHNlcnZpY2UpIHRocm93cyBvcmcuYXBhY2hlLmF4aXMuQXhpc0ZhdWx0IHsKLSAgICAgICAgIHRoaXMoc2VydmljZSk7Ci0gICAgICAgICBzdXBlci5jYWNoZWRFbmRwb2ludCA9IGVuZHBvaW50VVJMOwotICAgIH0KLQotICAgIHB1YmxpYyBBcmVhU2VydmljZVNPQVBTdHViKGphdmF4LnhtbC5ycGMuU2VydmljZSBzZXJ2aWNlKSB0aHJvd3Mgb3JnLmFwYWNoZS5heGlzLkF4aXNGYXVsdCB7Ci0gICAgICAgIGlmIChzZXJ2aWNlID09IG51bGwpIHsKLSAgICAgICAgICAgIHN1cGVyLnNlcnZpY2UgPSBuZXcgb3JnLmFwYWNoZS5heGlzLmNsaWVudC5TZXJ2aWNlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdXBlci5zZXJ2aWNlID0gc2VydmljZTsKLSAgICAgICAgfQotICAgICAgICAoKG9yZy5hcGFjaGUuYXhpcy5jbGllbnQuU2VydmljZSlzdXBlci5zZXJ2aWNlKS5zZXRUeXBlTWFwcGluZ1ZlcnNpb24oIjEuMiIpOwotICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzIGNsczsKLSAgICAgICAgICAgIGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUgcU5hbWU7Ci0gICAgICAgICAgICBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIHFOYW1lMjsKLSAgICAgICAgICAgIGphdmEubGFuZy5DbGFzcyBiZWFuc2YgPSBvcmcuYXBhY2hlLmF4aXMuZW5jb2Rpbmcuc2VyLkJlYW5TZXJpYWxpemVyRmFjdG9yeS5jbGFzczsKLSAgICAgICAgICAgIGphdmEubGFuZy5DbGFzcyBiZWFuZGYgPSBvcmcuYXBhY2hlLmF4aXMuZW5jb2Rpbmcuc2VyLkJlYW5EZXNlcmlhbGl6ZXJGYWN0b3J5LmNsYXNzOwotICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzIGVudW1zZiA9IG9yZy5hcGFjaGUuYXhpcy5lbmNvZGluZy5zZXIuRW51bVNlcmlhbGl6ZXJGYWN0b3J5LmNsYXNzOwotICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzIGVudW1kZiA9IG9yZy5hcGFjaGUuYXhpcy5lbmNvZGluZy5zZXIuRW51bURlc2VyaWFsaXplckZhY3RvcnkuY2xhc3M7Ci0gICAgICAgICAgICBqYXZhLmxhbmcuQ2xhc3MgYXJyYXlzZiA9IG9yZy5hcGFjaGUuYXhpcy5lbmNvZGluZy5zZXIuQXJyYXlTZXJpYWxpemVyRmFjdG9yeS5jbGFzczsKLSAgICAgICAgICAgIGphdmEubGFuZy5DbGFzcyBhcnJheWRmID0gb3JnLmFwYWNoZS5heGlzLmVuY29kaW5nLnNlci5BcnJheURlc2VyaWFsaXplckZhY3RvcnkuY2xhc3M7Ci0gICAgICAgICAgICBqYXZhLmxhbmcuQ2xhc3Mgc2ltcGxlc2YgPSBvcmcuYXBhY2hlLmF4aXMuZW5jb2Rpbmcuc2VyLlNpbXBsZVNlcmlhbGl6ZXJGYWN0b3J5LmNsYXNzOwotICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzIHNpbXBsZWRmID0gb3JnLmFwYWNoZS5heGlzLmVuY29kaW5nLnNlci5TaW1wbGVEZXNlcmlhbGl6ZXJGYWN0b3J5LmNsYXNzOwotICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzIHNpbXBsZWxpc3RzZiA9IG9yZy5hcGFjaGUuYXhpcy5lbmNvZGluZy5zZXIuU2ltcGxlTGlzdFNlcmlhbGl6ZXJGYWN0b3J5LmNsYXNzOwotICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzIHNpbXBsZWxpc3RkZiA9IG9yZy5hcGFjaGUuYXhpcy5lbmNvZGluZy5zZXIuU2ltcGxlTGlzdERlc2VyaWFsaXplckZhY3RvcnkuY2xhc3M7Ci0gICAgICAgICAgICBxTmFtZSA9IG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCJodHRwOi8vdGVtcHVyaS5vcmcvQXJlYVNlcnZpY2UvIiwgImRpbWVuc2lvbnMiKTsKLSAgICAgICAgICAgIGNhY2hlZFNlclFOYW1lcy5hZGQocU5hbWUpOwotICAgICAgICAgICAgY2xzID0gb3JnLnRlbXB1cmkuQXJlYVNlcnZpY2UuRGltZW5zaW9ucy5jbGFzczsKLSAgICAgICAgICAgIGNhY2hlZFNlckNsYXNzZXMuYWRkKGNscyk7Ci0gICAgICAgICAgICBjYWNoZWRTZXJGYWN0b3JpZXMuYWRkKGJlYW5zZik7Ci0gICAgICAgICAgICBjYWNoZWREZXNlckZhY3Rvcmllcy5hZGQoYmVhbmRmKTsKLQotICAgIH0KLQotICAgIHByb3RlY3RlZCBvcmcuYXBhY2hlLmF4aXMuY2xpZW50LkNhbGwgY3JlYXRlQ2FsbCgpIHRocm93cyBqYXZhLnJtaS5SZW1vdGVFeGNlcHRpb24gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgb3JnLmFwYWNoZS5heGlzLmNsaWVudC5DYWxsIF9jYWxsID0gc3VwZXIuX2NyZWF0ZUNhbGwoKTsKLSAgICAgICAgICAgIGlmIChzdXBlci5tYWludGFpblNlc3Npb25TZXQpIHsKLSAgICAgICAgICAgICAgICBfY2FsbC5zZXRNYWludGFpblNlc3Npb24oc3VwZXIubWFpbnRhaW5TZXNzaW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdXBlci5jYWNoZWRVc2VybmFtZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgX2NhbGwuc2V0VXNlcm5hbWUoc3VwZXIuY2FjaGVkVXNlcm5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN1cGVyLmNhY2hlZFBhc3N3b3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBfY2FsbC5zZXRQYXNzd29yZChzdXBlci5jYWNoZWRQYXNzd29yZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3VwZXIuY2FjaGVkRW5kcG9pbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIF9jYWxsLnNldFRhcmdldEVuZHBvaW50QWRkcmVzcyhzdXBlci5jYWNoZWRFbmRwb2ludCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3VwZXIuY2FjaGVkVGltZW91dCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgX2NhbGwuc2V0VGltZW91dChzdXBlci5jYWNoZWRUaW1lb3V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdXBlci5jYWNoZWRQb3J0TmFtZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgX2NhbGwuc2V0UG9ydE5hbWUoc3VwZXIuY2FjaGVkUG9ydE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgamF2YS51dGlsLkVudW1lcmF0aW9uIGtleXMgPSBzdXBlci5jYWNoZWRQcm9wZXJ0aWVzLmtleXMoKTsKLSAgICAgICAgICAgIHdoaWxlIChrZXlzLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyBrZXkgPSAoamF2YS5sYW5nLlN0cmluZykga2V5cy5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgICAgIF9jYWxsLnNldFByb3BlcnR5KGtleSwgc3VwZXIuY2FjaGVkUHJvcGVydGllcy5nZXQoa2V5KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBBbGwgdGhlIHR5cGUgbWFwcGluZyBpbmZvcm1hdGlvbiBpcyByZWdpc3RlcmVkCi0gICAgICAgICAgICAvLyB3aGVuIHRoZSBmaXJzdCBjYWxsIGlzIG1hZGUuCi0gICAgICAgICAgICAvLyBUaGUgdHlwZSBtYXBwaW5nIGluZm9ybWF0aW9uIGlzIGFjdHVhbGx5IHJlZ2lzdGVyZWQgaW4KLSAgICAgICAgICAgIC8vIHRoZSBUeXBlTWFwcGluZ1JlZ2lzdHJ5IG9mIHRoZSBzZXJ2aWNlLCB3aGljaAotICAgICAgICAgICAgLy8gaXMgdGhlIHJlYXNvbiB3aHkgcmVnaXN0cmF0aW9uIGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgZmlyc3QgY2FsbC4KLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIGlmIChmaXJzdENhbGwoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBtdXN0IHNldCBlbmNvZGluZyBzdHlsZSBiZWZvcmUgcmVnaXN0ZXJpbmcgc2VyaWFsaXplcnMKLSAgICAgICAgICAgICAgICAgICAgX2NhbGwuc2V0RW5jb2RpbmdTdHlsZShudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYWNoZWRTZXJGYWN0b3JpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5DbGFzcyBjbHMgPSAoamF2YS5sYW5nLkNsYXNzKSBjYWNoZWRTZXJDbGFzc2VzLmdldChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUgcU5hbWUgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSkgY2FjaGVkU2VyUU5hbWVzLmdldChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5PYmplY3QgeCA9IGNhY2hlZFNlckZhY3Rvcmllcy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIENsYXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzIHNmID0gKGphdmEubGFuZy5DbGFzcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZFNlckZhY3Rvcmllcy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzIGRmID0gKGphdmEubGFuZy5DbGFzcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZERlc2VyRmFjdG9yaWVzLmdldChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2FsbC5yZWdpc3RlclR5cGVNYXBwaW5nKGNscywgcU5hbWUsIHNmLCBkZiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeCBpbnN0YW5jZW9mIGphdmF4LnhtbC5ycGMuZW5jb2RpbmcuU2VyaWFsaXplckZhY3RvcnkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmF4aXMuZW5jb2RpbmcuU2VyaWFsaXplckZhY3Rvcnkgc2YgPSAob3JnLmFwYWNoZS5heGlzLmVuY29kaW5nLlNlcmlhbGl6ZXJGYWN0b3J5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkU2VyRmFjdG9yaWVzLmdldChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmF4aXMuZW5jb2RpbmcuRGVzZXJpYWxpemVyRmFjdG9yeSBkZiA9IChvcmcuYXBhY2hlLmF4aXMuZW5jb2RpbmcuRGVzZXJpYWxpemVyRmFjdG9yeSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZERlc2VyRmFjdG9yaWVzLmdldChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2FsbC5yZWdpc3RlclR5cGVNYXBwaW5nKGNscywgcU5hbWUsIHNmLCBkZiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIF9jYWxsOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChqYXZhLmxhbmcuVGhyb3dhYmxlIF90KSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgb3JnLmFwYWNoZS5heGlzLkF4aXNGYXVsdCgiRmFpbHVyZSB0cnlpbmcgdG8gZ2V0IHRoZSBDYWxsIG9iamVjdCIsIF90KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBmbG9hdCBjYWxjdWxhdGVSZWN0QXJlYShvcmcudGVtcHVyaS5BcmVhU2VydmljZS5EaW1lbnNpb25zIHBhcmFtZXRlcnMpIHRocm93cyBqYXZhLnJtaS5SZW1vdGVFeGNlcHRpb24gewotICAgICAgICBpZiAoc3VwZXIuY2FjaGVkRW5kcG9pbnQgPT0gbnVsbCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IG9yZy5hcGFjaGUuYXhpcy5Ob0VuZFBvaW50RXhjZXB0aW9uKCk7Ci0gICAgICAgIH0KLSAgICAgICAgb3JnLmFwYWNoZS5heGlzLmNsaWVudC5DYWxsIF9jYWxsID0gY3JlYXRlQ2FsbCgpOwotICAgICAgICBfY2FsbC5zZXRPcGVyYXRpb24oX29wZXJhdGlvbnNbMF0pOwotICAgICAgICBfY2FsbC5zZXRVc2VTT0FQQWN0aW9uKHRydWUpOwotICAgICAgICBfY2FsbC5zZXRTT0FQQWN0aW9uVVJJKCJodHRwOi8vdGVtcHVyaS5vcmcvQXJlYVNlcnZpY2UvTmV3T3BlcmF0aW9uIik7Ci0gICAgICAgIF9jYWxsLnNldEVuY29kaW5nU3R5bGUobnVsbCk7Ci0gICAgICAgIF9jYWxsLnNldFByb3BlcnR5KG9yZy5hcGFjaGUuYXhpcy5jbGllbnQuQ2FsbC5TRU5EX1RZUEVfQVRUUiwgQm9vbGVhbi5GQUxTRSk7Ci0gICAgICAgIF9jYWxsLnNldFByb3BlcnR5KG9yZy5hcGFjaGUuYXhpcy5BeGlzRW5naW5lLlBST1BfRE9NVUxUSVJFRlMsIEJvb2xlYW4uRkFMU0UpOwotICAgICAgICBfY2FsbC5zZXRTT0FQVmVyc2lvbihvcmcuYXBhY2hlLmF4aXMuc29hcC5TT0FQQ29uc3RhbnRzLlNPQVAxMV9DT05TVEFOVFMpOwotICAgICAgICBfY2FsbC5zZXRPcGVyYXRpb25OYW1lKG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCIiLCAiQ2FsY3VsYXRlUmVjdEFyZWEiKSk7Ci0KLSAgICAgICAgc2V0UmVxdWVzdEhlYWRlcnMoX2NhbGwpOwotICAgICAgICBzZXRBdHRhY2htZW50cyhfY2FsbCk7Ci0gdHJ5IHsgICAgICAgIGphdmEubGFuZy5PYmplY3QgX3Jlc3AgPSBfY2FsbC5pbnZva2UobmV3IGphdmEubGFuZy5PYmplY3RbXSB7cGFyYW1ldGVyc30pOwotCi0gICAgICAgIGlmIChfcmVzcCBpbnN0YW5jZW9mIGphdmEucm1pLlJlbW90ZUV4Y2VwdGlvbikgewotICAgICAgICAgICAgdGhyb3cgKGphdmEucm1pLlJlbW90ZUV4Y2VwdGlvbilfcmVzcDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGV4dHJhY3RBdHRhY2htZW50cyhfY2FsbCk7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJldHVybiAoKGphdmEubGFuZy5GbG9hdCkgX3Jlc3ApLmZsb2F0VmFsdWUoKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGphdmEubGFuZy5FeGNlcHRpb24gX2V4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIHJldHVybiAoKGphdmEubGFuZy5GbG9hdCkgb3JnLmFwYWNoZS5heGlzLnV0aWxzLkphdmFVdGlscy5jb252ZXJ0KF9yZXNwLCBmbG9hdC5jbGFzcykpLmZsb2F0VmFsdWUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICB9IGNhdGNoIChvcmcuYXBhY2hlLmF4aXMuQXhpc0ZhdWx0IGF4aXNGYXVsdEV4Y2VwdGlvbikgewotICB0aHJvdyBheGlzRmF1bHRFeGNlcHRpb247Ci19Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2RhdGEvYXhpc1NvdXJjZTEvb3JnL3RlbXB1cmkvQXJlYVNlcnZpY2UvQXJlYVNlcnZpY2VfUG9ydFR5cGUuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMS9vcmcvdGVtcHVyaS9BcmVhU2VydmljZS9BcmVhU2VydmljZV9Qb3J0VHlwZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTY1ZjY2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMS9vcmcvdGVtcHVyaS9BcmVhU2VydmljZS9BcmVhU2VydmljZV9Qb3J0VHlwZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqIEFyZWFTZXJ2aWNlX1BvcnRUeXBlLmphdmEKLSAqCi0gKiBUaGlzIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIGZyb20gV1NETAotICogYnkgdGhlIEFwYWNoZSBBeGlzIDEuMi4xIEp1biAxNCwgMjAwNSAoMDk6MTU6NTcgRURUKSBXU0RMMkphdmEgZW1pdHRlci4KLSAqLwotCi1wYWNrYWdlIG9yZy50ZW1wdXJpLkFyZWFTZXJ2aWNlOwotCi1wdWJsaWMgaW50ZXJmYWNlIEFyZWFTZXJ2aWNlX1BvcnRUeXBlIGV4dGVuZHMgamF2YS5ybWkuUmVtb3RlIHsKLSAgICBwdWJsaWMgZmxvYXQgY2FsY3VsYXRlUmVjdEFyZWEob3JnLnRlbXB1cmkuQXJlYVNlcnZpY2UuRGltZW5zaW9ucyBwYXJhbWV0ZXJzKSB0aHJvd3MgamF2YS5ybWkuUmVtb3RlRXhjZXB0aW9uOwotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UxL29yZy90ZW1wdXJpL0FyZWFTZXJ2aWNlL0FyZWFTZXJ2aWNlX1NlcnZpY2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMS9vcmcvdGVtcHVyaS9BcmVhU2VydmljZS9BcmVhU2VydmljZV9TZXJ2aWNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MDkzMjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UxL29yZy90ZW1wdXJpL0FyZWFTZXJ2aWNlL0FyZWFTZXJ2aWNlX1NlcnZpY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKiBBcmVhU2VydmljZV9TZXJ2aWNlLmphdmEKLSAqCi0gKiBUaGlzIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIGZyb20gV1NETAotICogYnkgdGhlIEFwYWNoZSBBeGlzIDEuMi4xIEp1biAxNCwgMjAwNSAoMDk6MTU6NTcgRURUKSBXU0RMMkphdmEgZW1pdHRlci4KLSAqLwotCi1wYWNrYWdlIG9yZy50ZW1wdXJpLkFyZWFTZXJ2aWNlOwotCi1wdWJsaWMgaW50ZXJmYWNlIEFyZWFTZXJ2aWNlX1NlcnZpY2UgZXh0ZW5kcyBqYXZheC54bWwucnBjLlNlcnZpY2UgewotICAgIHB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIGdldEFyZWFTZXJ2aWNlU09BUEFkZHJlc3MoKTsKLQotICAgIHB1YmxpYyBvcmcudGVtcHVyaS5BcmVhU2VydmljZS5BcmVhU2VydmljZV9Qb3J0VHlwZSBnZXRBcmVhU2VydmljZVNPQVAoKSB0aHJvd3MgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uOwotCi0gICAgcHVibGljIG9yZy50ZW1wdXJpLkFyZWFTZXJ2aWNlLkFyZWFTZXJ2aWNlX1BvcnRUeXBlIGdldEFyZWFTZXJ2aWNlU09BUChqYXZhLm5ldC5VUkwgcG9ydEFkZHJlc3MpIHRocm93cyBqYXZheC54bWwucnBjLlNlcnZpY2VFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2RhdGEvYXhpc1NvdXJjZTEvb3JnL3RlbXB1cmkvQXJlYVNlcnZpY2UvQXJlYVNlcnZpY2VfU2VydmljZUxvY2F0b3IuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMS9vcmcvdGVtcHVyaS9BcmVhU2VydmljZS9BcmVhU2VydmljZV9TZXJ2aWNlTG9jYXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2RmYzBmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMS9vcmcvdGVtcHVyaS9BcmVhU2VydmljZS9BcmVhU2VydmljZV9TZXJ2aWNlTG9jYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKiBBcmVhU2VydmljZV9TZXJ2aWNlTG9jYXRvci5qYXZhCi0gKgotICogVGhpcyBmaWxlIHdhcyBhdXRvLWdlbmVyYXRlZCBmcm9tIFdTREwKLSAqIGJ5IHRoZSBBcGFjaGUgQXhpcyAxLjIuMSBKdW4gMTQsIDIwMDUgKDA5OjE1OjU3IEVEVCkgV1NETDJKYXZhIGVtaXR0ZXIuCi0gKi8KLQotcGFja2FnZSBvcmcudGVtcHVyaS5BcmVhU2VydmljZTsKLQotcHVibGljIGNsYXNzIEFyZWFTZXJ2aWNlX1NlcnZpY2VMb2NhdG9yIGV4dGVuZHMgb3JnLmFwYWNoZS5heGlzLmNsaWVudC5TZXJ2aWNlIGltcGxlbWVudHMgb3JnLnRlbXB1cmkuQXJlYVNlcnZpY2UuQXJlYVNlcnZpY2VfU2VydmljZSB7Ci0KLSAgICBwdWJsaWMgQXJlYVNlcnZpY2VfU2VydmljZUxvY2F0b3IoKSB7Ci0gICAgfQotCi0KLSAgICBwdWJsaWMgQXJlYVNlcnZpY2VfU2VydmljZUxvY2F0b3Iob3JnLmFwYWNoZS5heGlzLkVuZ2luZUNvbmZpZ3VyYXRpb24gY29uZmlnKSB7Ci0gICAgICAgIHN1cGVyKGNvbmZpZyk7Ci0gICAgfQotCi0gICAgcHVibGljIEFyZWFTZXJ2aWNlX1NlcnZpY2VMb2NhdG9yKGphdmEubGFuZy5TdHJpbmcgd3NkbExvYywgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSBzTmFtZSkgdGhyb3dzIGphdmF4LnhtbC5ycGMuU2VydmljZUV4Y2VwdGlvbiB7Ci0gICAgICAgIHN1cGVyKHdzZGxMb2MsIHNOYW1lKTsKLSAgICB9Ci0KLSAgICAvLyBVc2UgdG8gZ2V0IGEgcHJveHkgY2xhc3MgZm9yIEFyZWFTZXJ2aWNlU09BUAotICAgIHByaXZhdGUgamF2YS5sYW5nLlN0cmluZyBBcmVhU2VydmljZVNPQVBfYWRkcmVzcyA9ICJodHRwOi8vbG9jYWxob3N0OjgwODAvQXJlYVByb2ovc2VydmljZXMvQXJlYVNlcnZpY2VTT0FQIjsKLQotICAgIHB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIGdldEFyZWFTZXJ2aWNlU09BUEFkZHJlc3MoKSB7Ci0gICAgICAgIHJldHVybiBBcmVhU2VydmljZVNPQVBfYWRkcmVzczsKLSAgICB9Ci0KLSAgICAvLyBUaGUgV1NERCBzZXJ2aWNlIG5hbWUgZGVmYXVsdHMgdG8gdGhlIHBvcnQgbmFtZS4KLSAgICBwcml2YXRlIGphdmEubGFuZy5TdHJpbmcgQXJlYVNlcnZpY2VTT0FQV1NERFNlcnZpY2VOYW1lID0gIkFyZWFTZXJ2aWNlU09BUCI7Ci0KLSAgICBwdWJsaWMgamF2YS5sYW5nLlN0cmluZyBnZXRBcmVhU2VydmljZVNPQVBXU0REU2VydmljZU5hbWUoKSB7Ci0gICAgICAgIHJldHVybiBBcmVhU2VydmljZVNPQVBXU0REU2VydmljZU5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QXJlYVNlcnZpY2VTT0FQV1NERFNlcnZpY2VOYW1lKGphdmEubGFuZy5TdHJpbmcgbmFtZSkgewotICAgICAgICBBcmVhU2VydmljZVNPQVBXU0REU2VydmljZU5hbWUgPSBuYW1lOwotICAgIH0KLQotICAgIHB1YmxpYyBvcmcudGVtcHVyaS5BcmVhU2VydmljZS5BcmVhU2VydmljZV9Qb3J0VHlwZSBnZXRBcmVhU2VydmljZVNPQVAoKSB0aHJvd3MgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uIHsKLSAgICAgICBqYXZhLm5ldC5VUkwgZW5kcG9pbnQ7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBlbmRwb2ludCA9IG5ldyBqYXZhLm5ldC5VUkwoQXJlYVNlcnZpY2VTT0FQX2FkZHJlc3MpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IGphdmF4LnhtbC5ycGMuU2VydmljZUV4Y2VwdGlvbihlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZ2V0QXJlYVNlcnZpY2VTT0FQKGVuZHBvaW50KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgb3JnLnRlbXB1cmkuQXJlYVNlcnZpY2UuQXJlYVNlcnZpY2VfUG9ydFR5cGUgZ2V0QXJlYVNlcnZpY2VTT0FQKGphdmEubmV0LlVSTCBwb3J0QWRkcmVzcykgdGhyb3dzIGphdmF4LnhtbC5ycGMuU2VydmljZUV4Y2VwdGlvbiB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBvcmcudGVtcHVyaS5BcmVhU2VydmljZS5BcmVhU2VydmljZVNPQVBTdHViIF9zdHViID0gbmV3IG9yZy50ZW1wdXJpLkFyZWFTZXJ2aWNlLkFyZWFTZXJ2aWNlU09BUFN0dWIocG9ydEFkZHJlc3MsIHRoaXMpOwotICAgICAgICAgICAgX3N0dWIuc2V0UG9ydE5hbWUoZ2V0QXJlYVNlcnZpY2VTT0FQV1NERFNlcnZpY2VOYW1lKCkpOwotICAgICAgICAgICAgcmV0dXJuIF9zdHViOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChvcmcuYXBhY2hlLmF4aXMuQXhpc0ZhdWx0IGUpIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QXJlYVNlcnZpY2VTT0FQRW5kcG9pbnRBZGRyZXNzKGphdmEubGFuZy5TdHJpbmcgYWRkcmVzcykgewotICAgICAgICBBcmVhU2VydmljZVNPQVBfYWRkcmVzcyA9IGFkZHJlc3M7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRm9yIHRoZSBnaXZlbiBpbnRlcmZhY2UsIGdldCB0aGUgc3R1YiBpbXBsZW1lbnRhdGlvbi4KLSAgICAgKiBJZiB0aGlzIHNlcnZpY2UgaGFzIG5vIHBvcnQgZm9yIHRoZSBnaXZlbiBpbnRlcmZhY2UsCi0gICAgICogdGhlbiBTZXJ2aWNlRXhjZXB0aW9uIGlzIHRocm93bi4KLSAgICAgKi8KLSAgICBwdWJsaWMgamF2YS5ybWkuUmVtb3RlIGdldFBvcnQoQ2xhc3Mgc2VydmljZUVuZHBvaW50SW50ZXJmYWNlKSB0aHJvd3MgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmIChvcmcudGVtcHVyaS5BcmVhU2VydmljZS5BcmVhU2VydmljZV9Qb3J0VHlwZS5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKHNlcnZpY2VFbmRwb2ludEludGVyZmFjZSkpIHsKLSAgICAgICAgICAgICAgICBvcmcudGVtcHVyaS5BcmVhU2VydmljZS5BcmVhU2VydmljZVNPQVBTdHViIF9zdHViID0gbmV3IG9yZy50ZW1wdXJpLkFyZWFTZXJ2aWNlLkFyZWFTZXJ2aWNlU09BUFN0dWIobmV3IGphdmEubmV0LlVSTChBcmVhU2VydmljZVNPQVBfYWRkcmVzcyksIHRoaXMpOwotICAgICAgICAgICAgICAgIF9zdHViLnNldFBvcnROYW1lKGdldEFyZWFTZXJ2aWNlU09BUFdTRERTZXJ2aWNlTmFtZSgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gX3N0dWI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKGphdmEubGFuZy5UaHJvd2FibGUgdCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IGphdmF4LnhtbC5ycGMuU2VydmljZUV4Y2VwdGlvbih0KTsKLSAgICAgICAgfQotICAgICAgICB0aHJvdyBuZXcgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uKCJUaGVyZSBpcyBubyBzdHViIGltcGxlbWVudGF0aW9uIGZvciB0aGUgaW50ZXJmYWNlOiAgIiArIChzZXJ2aWNlRW5kcG9pbnRJbnRlcmZhY2UgPT0gbnVsbCA/ICJudWxsIiA6IHNlcnZpY2VFbmRwb2ludEludGVyZmFjZS5nZXROYW1lKCkpKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBGb3IgdGhlIGdpdmVuIGludGVyZmFjZSwgZ2V0IHRoZSBzdHViIGltcGxlbWVudGF0aW9uLgotICAgICAqIElmIHRoaXMgc2VydmljZSBoYXMgbm8gcG9ydCBmb3IgdGhlIGdpdmVuIGludGVyZmFjZSwKLSAgICAgKiB0aGVuIFNlcnZpY2VFeGNlcHRpb24gaXMgdGhyb3duLgotICAgICAqLwotICAgIHB1YmxpYyBqYXZhLnJtaS5SZW1vdGUgZ2V0UG9ydChqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIHBvcnROYW1lLCBDbGFzcyBzZXJ2aWNlRW5kcG9pbnRJbnRlcmZhY2UpIHRocm93cyBqYXZheC54bWwucnBjLlNlcnZpY2VFeGNlcHRpb24gewotICAgICAgICBpZiAocG9ydE5hbWUgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIGdldFBvcnQoc2VydmljZUVuZHBvaW50SW50ZXJmYWNlKTsKLSAgICAgICAgfQotICAgICAgICBqYXZhLmxhbmcuU3RyaW5nIGlucHV0UG9ydE5hbWUgPSBwb3J0TmFtZS5nZXRMb2NhbFBhcnQoKTsKLSAgICAgICAgaWYgKCJBcmVhU2VydmljZVNPQVAiLmVxdWFscyhpbnB1dFBvcnROYW1lKSkgewotICAgICAgICAgICAgcmV0dXJuIGdldEFyZWFTZXJ2aWNlU09BUCgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgIHsKLSAgICAgICAgICAgIGphdmEucm1pLlJlbW90ZSBfc3R1YiA9IGdldFBvcnQoc2VydmljZUVuZHBvaW50SW50ZXJmYWNlKTsKLSAgICAgICAgICAgICgob3JnLmFwYWNoZS5heGlzLmNsaWVudC5TdHViKSBfc3R1Yikuc2V0UG9ydE5hbWUocG9ydE5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIF9zdHViOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUgZ2V0U2VydmljZU5hbWUoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSgiaHR0cDovL3RlbXB1cmkub3JnL0FyZWFTZXJ2aWNlLyIsICJBcmVhU2VydmljZSIpOwotICAgIH0KLQotICAgIHByaXZhdGUgamF2YS51dGlsLkhhc2hTZXQgcG9ydHMgPSBudWxsOwotCi0gICAgcHVibGljIGphdmEudXRpbC5JdGVyYXRvciBnZXRQb3J0cygpIHsKLSAgICAgICAgaWYgKHBvcnRzID09IG51bGwpIHsKLSAgICAgICAgICAgIHBvcnRzID0gbmV3IGphdmEudXRpbC5IYXNoU2V0KCk7Ci0gICAgICAgICAgICBwb3J0cy5hZGQobmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoImh0dHA6Ly90ZW1wdXJpLm9yZy9BcmVhU2VydmljZS8iLCAiQXJlYVNlcnZpY2VTT0FQIikpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwb3J0cy5pdGVyYXRvcigpOwotICAgIH0KLQotICAgIC8qKgotICAgICogU2V0IHRoZSBlbmRwb2ludCBhZGRyZXNzIGZvciB0aGUgc3BlY2lmaWVkIHBvcnQgbmFtZS4KLSAgICAqLwotICAgIHB1YmxpYyB2b2lkIHNldEVuZHBvaW50QWRkcmVzcyhqYXZhLmxhbmcuU3RyaW5nIHBvcnROYW1lLCBqYXZhLmxhbmcuU3RyaW5nIGFkZHJlc3MpIHRocm93cyBqYXZheC54bWwucnBjLlNlcnZpY2VFeGNlcHRpb24gewotICAgICAgICAKLWlmICgiQXJlYVNlcnZpY2VTT0FQIi5lcXVhbHMocG9ydE5hbWUpKSB7Ci0gICAgICAgICAgICBzZXRBcmVhU2VydmljZVNPQVBFbmRwb2ludEFkZHJlc3MoYWRkcmVzcyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAKLXsgLy8gVW5rbm93biBQb3J0IE5hbWUKLSAgICAgICAgICAgIHRocm93IG5ldyBqYXZheC54bWwucnBjLlNlcnZpY2VFeGNlcHRpb24oIiBDYW5ub3Qgc2V0IEVuZHBvaW50IEFkZHJlc3MgZm9yIFVua25vd24gUG9ydCIgKyBwb3J0TmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAqIFNldCB0aGUgZW5kcG9pbnQgYWRkcmVzcyBmb3IgdGhlIHNwZWNpZmllZCBwb3J0IG5hbWUuCi0gICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzZXRFbmRwb2ludEFkZHJlc3MoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSBwb3J0TmFtZSwgamF2YS5sYW5nLlN0cmluZyBhZGRyZXNzKSB0aHJvd3MgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uIHsKLSAgICAgICAgc2V0RW5kcG9pbnRBZGRyZXNzKHBvcnROYW1lLmdldExvY2FsUGFydCgpLCBhZGRyZXNzKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMS9vcmcvdGVtcHVyaS9BcmVhU2VydmljZS9EaW1lbnNpb25zLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2RhdGEvYXhpc1NvdXJjZTEvb3JnL3RlbXB1cmkvQXJlYVNlcnZpY2UvRGltZW5zaW9ucy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzEwZjk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMS9vcmcvdGVtcHVyaS9BcmVhU2VydmljZS9EaW1lbnNpb25zLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqIERpbWVuc2lvbnMuamF2YQotICoKLSAqIFRoaXMgZmlsZSB3YXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBXU0RMCi0gKiBieSB0aGUgQXBhY2hlIEF4aXMgMS4yLjEgSnVuIDE0LCAyMDA1ICgwOToxNTo1NyBFRFQpIFdTREwySmF2YSBlbWl0dGVyLgotICovCi0KLXBhY2thZ2Ugb3JnLnRlbXB1cmkuQXJlYVNlcnZpY2U7Ci0KLXB1YmxpYyBjbGFzcyBEaW1lbnNpb25zICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLSAgICBwcml2YXRlIGZsb2F0IHdpZHRoOwotICAgIHByaXZhdGUgZmxvYXQgaGVpZ2h0OwotCi0gICAgcHVibGljIERpbWVuc2lvbnMoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIERpbWVuc2lvbnMoCi0gICAgICAgICAgIGZsb2F0IHdpZHRoLAotICAgICAgICAgICBmbG9hdCBoZWlnaHQpIHsKLSAgICAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoOwotICAgICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKLSAgICB9Ci0KLQotICAgIC8qKgotICAgICAqIEdldHMgdGhlIHdpZHRoIHZhbHVlIGZvciB0aGlzIERpbWVuc2lvbnMuCi0gICAgICogCi0gICAgICogQHJldHVybiB3aWR0aAotICAgICAqLwotICAgIHB1YmxpYyBmbG9hdCBnZXRXaWR0aCgpIHsKLSAgICAgICAgcmV0dXJuIHdpZHRoOwotICAgIH0KLQotCi0gICAgLyoqCi0gICAgICogU2V0cyB0aGUgd2lkdGggdmFsdWUgZm9yIHRoaXMgRGltZW5zaW9ucy4KLSAgICAgKiAKLSAgICAgKiBAcGFyYW0gd2lkdGgKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0aCkgewotICAgICAgICB0aGlzLndpZHRoID0gd2lkdGg7Ci0gICAgfQotCi0KLSAgICAvKioKLSAgICAgKiBHZXRzIHRoZSBoZWlnaHQgdmFsdWUgZm9yIHRoaXMgRGltZW5zaW9ucy4KLSAgICAgKiAKLSAgICAgKiBAcmV0dXJuIGhlaWdodAotICAgICAqLwotICAgIHB1YmxpYyBmbG9hdCBnZXRIZWlnaHQoKSB7Ci0gICAgICAgIHJldHVybiBoZWlnaHQ7Ci0gICAgfQotCi0KLSAgICAvKioKLSAgICAgKiBTZXRzIHRoZSBoZWlnaHQgdmFsdWUgZm9yIHRoaXMgRGltZW5zaW9ucy4KLSAgICAgKiAKLSAgICAgKiBAcGFyYW0gaGVpZ2h0Ci0gICAgICovCi0gICAgcHVibGljIHZvaWQgc2V0SGVpZ2h0KGZsb2F0IGhlaWdodCkgewotICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGphdmEubGFuZy5PYmplY3QgX19lcXVhbHNDYWxjID0gbnVsbDsKLSAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gZXF1YWxzKGphdmEubGFuZy5PYmplY3Qgb2JqKSB7Ci0gICAgICAgIGlmICghKG9iaiBpbnN0YW5jZW9mIERpbWVuc2lvbnMpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgIERpbWVuc2lvbnMgb3RoZXIgPSAoRGltZW5zaW9ucykgb2JqOwotICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHRoaXMgPT0gb2JqKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKF9fZXF1YWxzQ2FsYyAhPSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gKF9fZXF1YWxzQ2FsYyA9PSBvYmopOwotICAgICAgICB9Ci0gICAgICAgIF9fZXF1YWxzQ2FsYyA9IG9iajsKLSAgICAgICAgYm9vbGVhbiBfZXF1YWxzOwotICAgICAgICBfZXF1YWxzID0gdHJ1ZSAmJiAKLSAgICAgICAgICAgIHRoaXMud2lkdGggPT0gb3RoZXIuZ2V0V2lkdGgoKSAmJgotICAgICAgICAgICAgdGhpcy5oZWlnaHQgPT0gb3RoZXIuZ2V0SGVpZ2h0KCk7Ci0gICAgICAgIF9fZXF1YWxzQ2FsYyA9IG51bGw7Ci0gICAgICAgIHJldHVybiBfZXF1YWxzOwotICAgIH0KLQotICAgIHByaXZhdGUgYm9vbGVhbiBfX2hhc2hDb2RlQ2FsYyA9IGZhbHNlOwotICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGhhc2hDb2RlKCkgewotICAgICAgICBpZiAoX19oYXNoQ29kZUNhbGMpIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIF9faGFzaENvZGVDYWxjID0gdHJ1ZTsKLSAgICAgICAgaW50IF9oYXNoQ29kZSA9IDE7Ci0gICAgICAgIF9oYXNoQ29kZSArPSBuZXcgRmxvYXQoZ2V0V2lkdGgoKSkuaGFzaENvZGUoKTsKLSAgICAgICAgX2hhc2hDb2RlICs9IG5ldyBGbG9hdChnZXRIZWlnaHQoKSkuaGFzaENvZGUoKTsKLSAgICAgICAgX19oYXNoQ29kZUNhbGMgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIF9oYXNoQ29kZTsKLSAgICB9Ci0KLSAgICAvLyBUeXBlIG1ldGFkYXRhCi0gICAgcHJpdmF0ZSBzdGF0aWMgb3JnLmFwYWNoZS5heGlzLmRlc2NyaXB0aW9uLlR5cGVEZXNjIHR5cGVEZXNjID0KLSAgICAgICAgbmV3IG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5UeXBlRGVzYyhEaW1lbnNpb25zLmNsYXNzLCB0cnVlKTsKLQotICAgIHN0YXRpYyB7Ci0gICAgICAgIHR5cGVEZXNjLnNldFhtbFR5cGUobmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoImh0dHA6Ly90ZW1wdXJpLm9yZy9BcmVhU2VydmljZS8iLCAiZGltZW5zaW9ucyIpKTsKLSAgICAgICAgb3JnLmFwYWNoZS5heGlzLmRlc2NyaXB0aW9uLkVsZW1lbnREZXNjIGVsZW1GaWVsZCA9IG5ldyBvcmcuYXBhY2hlLmF4aXMuZGVzY3JpcHRpb24uRWxlbWVudERlc2MoKTsKLSAgICAgICAgZWxlbUZpZWxkLnNldEZpZWxkTmFtZSgid2lkdGgiKTsKLSAgICAgICAgZWxlbUZpZWxkLnNldFhtbE5hbWUobmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoIiIsICJ3aWR0aCIpKTsKLSAgICAgICAgZWxlbUZpZWxkLnNldFhtbFR5cGUobmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiwgImZsb2F0IikpOwotICAgICAgICBlbGVtRmllbGQuc2V0TmlsbGFibGUoZmFsc2UpOwotICAgICAgICB0eXBlRGVzYy5hZGRGaWVsZERlc2MoZWxlbUZpZWxkKTsKLSAgICAgICAgZWxlbUZpZWxkID0gbmV3IG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5FbGVtZW50RGVzYygpOwotICAgICAgICBlbGVtRmllbGQuc2V0RmllbGROYW1lKCJoZWlnaHQiKTsKLSAgICAgICAgZWxlbUZpZWxkLnNldFhtbE5hbWUobmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoIiIsICJoZWlnaHQiKSk7Ci0gICAgICAgIGVsZW1GaWVsZC5zZXRYbWxUeXBlKG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIsICJmbG9hdCIpKTsKLSAgICAgICAgZWxlbUZpZWxkLnNldE5pbGxhYmxlKGZhbHNlKTsKLSAgICAgICAgdHlwZURlc2MuYWRkRmllbGREZXNjKGVsZW1GaWVsZCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJuIHR5cGUgbWV0YWRhdGEgb2JqZWN0Ci0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBvcmcuYXBhY2hlLmF4aXMuZGVzY3JpcHRpb24uVHlwZURlc2MgZ2V0VHlwZURlc2MoKSB7Ci0gICAgICAgIHJldHVybiB0eXBlRGVzYzsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgQ3VzdG9tIFNlcmlhbGl6ZXIKLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIG9yZy5hcGFjaGUuYXhpcy5lbmNvZGluZy5TZXJpYWxpemVyIGdldFNlcmlhbGl6ZXIoCi0gICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcgbWVjaFR5cGUsIAotICAgICAgICAgICBqYXZhLmxhbmcuQ2xhc3MgX2phdmFUeXBlLCAgCi0gICAgICAgICAgIGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUgX3htbFR5cGUpIHsKLSAgICAgICAgcmV0dXJuIAotICAgICAgICAgIG5ldyAgb3JnLmFwYWNoZS5heGlzLmVuY29kaW5nLnNlci5CZWFuU2VyaWFsaXplcigKLSAgICAgICAgICAgIF9qYXZhVHlwZSwgX3htbFR5cGUsIHR5cGVEZXNjKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgQ3VzdG9tIERlc2VyaWFsaXplcgotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgb3JnLmFwYWNoZS5heGlzLmVuY29kaW5nLkRlc2VyaWFsaXplciBnZXREZXNlcmlhbGl6ZXIoCi0gICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcgbWVjaFR5cGUsIAotICAgICAgICAgICBqYXZhLmxhbmcuQ2xhc3MgX2phdmFUeXBlLCAgCi0gICAgICAgICAgIGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUgX3htbFR5cGUpIHsKLSAgICAgICAgcmV0dXJuIAotICAgICAgICAgIG5ldyAgb3JnLmFwYWNoZS5heGlzLmVuY29kaW5nLnNlci5CZWFuRGVzZXJpYWxpemVyKAotICAgICAgICAgICAgX2phdmFUeXBlLCBfeG1sVHlwZSwgdHlwZURlc2MpOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UyL3d0cC9Db252ZXJ0ZXIuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMi93dHAvQ29udmVydGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYTdkNDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UyL3d0cC9Db252ZXJ0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKiBDb252ZXJ0ZXIuamF2YQotICoKLSAqIFRoaXMgZmlsZSB3YXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBXU0RMCi0gKiBieSB0aGUgQXBhY2hlIEF4aXMgMS4yLjEgSnVuIDE0LCAyMDA1ICgwOToxNTo1NyBFRFQpIFdTREwySmF2YSBlbWl0dGVyLgotICovCi0KLXBhY2thZ2Ugd3RwOwotCi1wdWJsaWMgaW50ZXJmYWNlIENvbnZlcnRlciBleHRlbmRzIGphdmEucm1pLlJlbW90ZSB7Ci0gICAgcHVibGljIGZsb2F0IGNlbHNpdXNUb0ZhcmVuaGVpdChmbG9hdCBjZWxzaXVzKSB0aHJvd3MgamF2YS5ybWkuUmVtb3RlRXhjZXB0aW9uOwotICAgIHB1YmxpYyBmbG9hdCBmYXJlbmhlaXRUb0NlbHNpdXMoZmxvYXQgZmFyZW5oZWl0KSB0aHJvd3MgamF2YS5ybWkuUmVtb3RlRXhjZXB0aW9uOwotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UyL3d0cC9Db252ZXJ0ZXJQcm94eS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UyL3d0cC9Db252ZXJ0ZXJQcm94eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWE3YzQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMi93dHAvQ29udmVydGVyUHJveHkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSB3dHA7Ci0KLXB1YmxpYyBjbGFzcyBDb252ZXJ0ZXJQcm94eSBpbXBsZW1lbnRzIHd0cC5Db252ZXJ0ZXIgewotICBwcml2YXRlIFN0cmluZyBfZW5kcG9pbnQgPSBudWxsOwotICBwcml2YXRlIHd0cC5Db252ZXJ0ZXIgY29udmVydGVyID0gbnVsbDsKLSAgCi0gIHB1YmxpYyBDb252ZXJ0ZXJQcm94eSgpIHsKLSAgICBfaW5pdENvbnZlcnRlclByb3h5KCk7Ci0gIH0KLSAgCi0gIHByaXZhdGUgdm9pZCBfaW5pdENvbnZlcnRlclByb3h5KCkgewotICAgIHRyeSB7Ci0gICAgICBjb252ZXJ0ZXIgPSAobmV3IHd0cC5Db252ZXJ0ZXJTZXJ2aWNlTG9jYXRvcigpKS5nZXRDb252ZXJ0ZXIoKTsKLSAgICAgIGlmIChjb252ZXJ0ZXIgIT0gbnVsbCkgewotICAgICAgICBpZiAoX2VuZHBvaW50ICE9IG51bGwpCi0gICAgICAgICAgKChqYXZheC54bWwucnBjLlN0dWIpY29udmVydGVyKS5fc2V0UHJvcGVydHkoImphdmF4LnhtbC5ycGMuc2VydmljZS5lbmRwb2ludC5hZGRyZXNzIiwgX2VuZHBvaW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIF9lbmRwb2ludCA9IChTdHJpbmcpKChqYXZheC54bWwucnBjLlN0dWIpY29udmVydGVyKS5fZ2V0UHJvcGVydHkoImphdmF4LnhtbC5ycGMuc2VydmljZS5lbmRwb2ludC5hZGRyZXNzIik7Ci0gICAgICB9Ci0gICAgICAKLSAgICB9Ci0gICAgY2F0Y2ggKGphdmF4LnhtbC5ycGMuU2VydmljZUV4Y2VwdGlvbiBzZXJ2aWNlRXhjZXB0aW9uKSB7fQotICB9Ci0gIAotICBwdWJsaWMgU3RyaW5nIGdldEVuZHBvaW50KCkgewotICAgIHJldHVybiBfZW5kcG9pbnQ7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHNldEVuZHBvaW50KFN0cmluZyBlbmRwb2ludCkgewotICAgIF9lbmRwb2ludCA9IGVuZHBvaW50OwotICAgIGlmIChjb252ZXJ0ZXIgIT0gbnVsbCkKLSAgICAgICgoamF2YXgueG1sLnJwYy5TdHViKWNvbnZlcnRlcikuX3NldFByb3BlcnR5KCJqYXZheC54bWwucnBjLnNlcnZpY2UuZW5kcG9pbnQuYWRkcmVzcyIsIF9lbmRwb2ludCk7Ci0gICAgCi0gIH0KLSAgCi0gIHB1YmxpYyB3dHAuQ29udmVydGVyIGdldENvbnZlcnRlcigpIHsKLSAgICBpZiAoY29udmVydGVyID09IG51bGwpCi0gICAgICBfaW5pdENvbnZlcnRlclByb3h5KCk7Ci0gICAgcmV0dXJuIGNvbnZlcnRlcjsKLSAgfQotICAKLSAgcHVibGljIGZsb2F0IGNlbHNpdXNUb0ZhcmVuaGVpdChmbG9hdCBjZWxzaXVzKSB0aHJvd3MgamF2YS5ybWkuUmVtb3RlRXhjZXB0aW9uewotICAgIGlmIChjb252ZXJ0ZXIgPT0gbnVsbCkKLSAgICAgIF9pbml0Q29udmVydGVyUHJveHkoKTsKLSAgICByZXR1cm4gY29udmVydGVyLmNlbHNpdXNUb0ZhcmVuaGVpdChjZWxzaXVzKTsKLSAgfQotICAKLSAgcHVibGljIGZsb2F0IGZhcmVuaGVpdFRvQ2Vsc2l1cyhmbG9hdCBmYXJlbmhlaXQpIHRocm93cyBqYXZhLnJtaS5SZW1vdGVFeGNlcHRpb257Ci0gICAgaWYgKGNvbnZlcnRlciA9PSBudWxsKQotICAgICAgX2luaXRDb252ZXJ0ZXJQcm94eSgpOwotICAgIHJldHVybiBjb252ZXJ0ZXIuZmFyZW5oZWl0VG9DZWxzaXVzKGZhcmVuaGVpdCk7Ci0gIH0KLSAgCi0gIAotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMi93dHAvQ29udmVydGVyU2VydmljZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UyL3d0cC9Db252ZXJ0ZXJTZXJ2aWNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYWFmZTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UyL3d0cC9Db252ZXJ0ZXJTZXJ2aWNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKgotICogQ29udmVydGVyU2VydmljZS5qYXZhCi0gKgotICogVGhpcyBmaWxlIHdhcyBhdXRvLWdlbmVyYXRlZCBmcm9tIFdTREwKLSAqIGJ5IHRoZSBBcGFjaGUgQXhpcyAxLjIuMSBKdW4gMTQsIDIwMDUgKDA5OjE1OjU3IEVEVCkgV1NETDJKYXZhIGVtaXR0ZXIuCi0gKi8KLQotcGFja2FnZSB3dHA7Ci0KLXB1YmxpYyBpbnRlcmZhY2UgQ29udmVydGVyU2VydmljZSBleHRlbmRzIGphdmF4LnhtbC5ycGMuU2VydmljZSB7Ci0gICAgcHVibGljIGphdmEubGFuZy5TdHJpbmcgZ2V0Q29udmVydGVyQWRkcmVzcygpOwotCi0gICAgcHVibGljIHd0cC5Db252ZXJ0ZXIgZ2V0Q29udmVydGVyKCkgdGhyb3dzIGphdmF4LnhtbC5ycGMuU2VydmljZUV4Y2VwdGlvbjsKLQotICAgIHB1YmxpYyB3dHAuQ29udmVydGVyIGdldENvbnZlcnRlcihqYXZhLm5ldC5VUkwgcG9ydEFkZHJlc3MpIHRocm93cyBqYXZheC54bWwucnBjLlNlcnZpY2VFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2RhdGEvYXhpc1NvdXJjZTIvd3RwL0NvbnZlcnRlclNlcnZpY2VMb2NhdG9yLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2RhdGEvYXhpc1NvdXJjZTIvd3RwL0NvbnZlcnRlclNlcnZpY2VMb2NhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZjVjZDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy9kYXRhL2F4aXNTb3VyY2UyL3d0cC9Db252ZXJ0ZXJTZXJ2aWNlTG9jYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqCi0gKiBDb252ZXJ0ZXJTZXJ2aWNlTG9jYXRvci5qYXZhCi0gKgotICogVGhpcyBmaWxlIHdhcyBhdXRvLWdlbmVyYXRlZCBmcm9tIFdTREwKLSAqIGJ5IHRoZSBBcGFjaGUgQXhpcyAxLjIuMSBKdW4gMTQsIDIwMDUgKDA5OjE1OjU3IEVEVCkgV1NETDJKYXZhIGVtaXR0ZXIuCi0gKi8KLQotcGFja2FnZSB3dHA7Ci0KLXB1YmxpYyBjbGFzcyBDb252ZXJ0ZXJTZXJ2aWNlTG9jYXRvciBleHRlbmRzIG9yZy5hcGFjaGUuYXhpcy5jbGllbnQuU2VydmljZSBpbXBsZW1lbnRzIHd0cC5Db252ZXJ0ZXJTZXJ2aWNlIHsKLQotICAgIHB1YmxpYyBDb252ZXJ0ZXJTZXJ2aWNlTG9jYXRvcigpIHsKLSAgICB9Ci0KLQotICAgIHB1YmxpYyBDb252ZXJ0ZXJTZXJ2aWNlTG9jYXRvcihvcmcuYXBhY2hlLmF4aXMuRW5naW5lQ29uZmlndXJhdGlvbiBjb25maWcpIHsKLSAgICAgICAgc3VwZXIoY29uZmlnKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgQ29udmVydGVyU2VydmljZUxvY2F0b3IoamF2YS5sYW5nLlN0cmluZyB3c2RsTG9jLCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIHNOYW1lKSB0aHJvd3MgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uIHsKLSAgICAgICAgc3VwZXIod3NkbExvYywgc05hbWUpOwotICAgIH0KLQotICAgIC8vIFVzZSB0byBnZXQgYSBwcm94eSBjbGFzcyBmb3IgQ29udmVydGVyCi0gICAgcHJpdmF0ZSBqYXZhLmxhbmcuU3RyaW5nIENvbnZlcnRlcl9hZGRyZXNzID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9Db252ZXJ0ZXJQcm9qL3NlcnZpY2VzL0NvbnZlcnRlciI7Ci0KLSAgICBwdWJsaWMgamF2YS5sYW5nLlN0cmluZyBnZXRDb252ZXJ0ZXJBZGRyZXNzKCkgewotICAgICAgICByZXR1cm4gQ29udmVydGVyX2FkZHJlc3M7Ci0gICAgfQotCi0gICAgLy8gVGhlIFdTREQgc2VydmljZSBuYW1lIGRlZmF1bHRzIHRvIHRoZSBwb3J0IG5hbWUuCi0gICAgcHJpdmF0ZSBqYXZhLmxhbmcuU3RyaW5nIENvbnZlcnRlcldTRERTZXJ2aWNlTmFtZSA9ICJDb252ZXJ0ZXIiOwotCi0gICAgcHVibGljIGphdmEubGFuZy5TdHJpbmcgZ2V0Q29udmVydGVyV1NERFNlcnZpY2VOYW1lKCkgewotICAgICAgICByZXR1cm4gQ29udmVydGVyV1NERFNlcnZpY2VOYW1lOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldENvbnZlcnRlcldTRERTZXJ2aWNlTmFtZShqYXZhLmxhbmcuU3RyaW5nIG5hbWUpIHsKLSAgICAgICAgQ29udmVydGVyV1NERFNlcnZpY2VOYW1lID0gbmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgd3RwLkNvbnZlcnRlciBnZXRDb252ZXJ0ZXIoKSB0aHJvd3MgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uIHsKLSAgICAgICBqYXZhLm5ldC5VUkwgZW5kcG9pbnQ7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBlbmRwb2ludCA9IG5ldyBqYXZhLm5ldC5VUkwoQ29udmVydGVyX2FkZHJlc3MpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IGphdmF4LnhtbC5ycGMuU2VydmljZUV4Y2VwdGlvbihlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZ2V0Q29udmVydGVyKGVuZHBvaW50KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgd3RwLkNvbnZlcnRlciBnZXRDb252ZXJ0ZXIoamF2YS5uZXQuVVJMIHBvcnRBZGRyZXNzKSB0aHJvd3MgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHd0cC5Db252ZXJ0ZXJTb2FwQmluZGluZ1N0dWIgX3N0dWIgPSBuZXcgd3RwLkNvbnZlcnRlclNvYXBCaW5kaW5nU3R1Yihwb3J0QWRkcmVzcywgdGhpcyk7Ci0gICAgICAgICAgICBfc3R1Yi5zZXRQb3J0TmFtZShnZXRDb252ZXJ0ZXJXU0REU2VydmljZU5hbWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gX3N0dWI7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKG9yZy5hcGFjaGUuYXhpcy5BeGlzRmF1bHQgZSkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRDb252ZXJ0ZXJFbmRwb2ludEFkZHJlc3MoamF2YS5sYW5nLlN0cmluZyBhZGRyZXNzKSB7Ci0gICAgICAgIENvbnZlcnRlcl9hZGRyZXNzID0gYWRkcmVzczsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBGb3IgdGhlIGdpdmVuIGludGVyZmFjZSwgZ2V0IHRoZSBzdHViIGltcGxlbWVudGF0aW9uLgotICAgICAqIElmIHRoaXMgc2VydmljZSBoYXMgbm8gcG9ydCBmb3IgdGhlIGdpdmVuIGludGVyZmFjZSwKLSAgICAgKiB0aGVuIFNlcnZpY2VFeGNlcHRpb24gaXMgdGhyb3duLgotICAgICAqLwotICAgIHB1YmxpYyBqYXZhLnJtaS5SZW1vdGUgZ2V0UG9ydChDbGFzcyBzZXJ2aWNlRW5kcG9pbnRJbnRlcmZhY2UpIHRocm93cyBqYXZheC54bWwucnBjLlNlcnZpY2VFeGNlcHRpb24gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKHd0cC5Db252ZXJ0ZXIuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShzZXJ2aWNlRW5kcG9pbnRJbnRlcmZhY2UpKSB7Ci0gICAgICAgICAgICAgICAgd3RwLkNvbnZlcnRlclNvYXBCaW5kaW5nU3R1YiBfc3R1YiA9IG5ldyB3dHAuQ29udmVydGVyU29hcEJpbmRpbmdTdHViKG5ldyBqYXZhLm5ldC5VUkwoQ29udmVydGVyX2FkZHJlc3MpLCB0aGlzKTsKLSAgICAgICAgICAgICAgICBfc3R1Yi5zZXRQb3J0TmFtZShnZXRDb252ZXJ0ZXJXU0REU2VydmljZU5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9zdHViOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChqYXZhLmxhbmcuVGhyb3dhYmxlIHQpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBqYXZheC54bWwucnBjLlNlcnZpY2VFeGNlcHRpb24odCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhyb3cgbmV3IGphdmF4LnhtbC5ycGMuU2VydmljZUV4Y2VwdGlvbigiVGhlcmUgaXMgbm8gc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGludGVyZmFjZTogICIgKyAoc2VydmljZUVuZHBvaW50SW50ZXJmYWNlID09IG51bGwgPyAibnVsbCIgOiBzZXJ2aWNlRW5kcG9pbnRJbnRlcmZhY2UuZ2V0TmFtZSgpKSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRm9yIHRoZSBnaXZlbiBpbnRlcmZhY2UsIGdldCB0aGUgc3R1YiBpbXBsZW1lbnRhdGlvbi4KLSAgICAgKiBJZiB0aGlzIHNlcnZpY2UgaGFzIG5vIHBvcnQgZm9yIHRoZSBnaXZlbiBpbnRlcmZhY2UsCi0gICAgICogdGhlbiBTZXJ2aWNlRXhjZXB0aW9uIGlzIHRocm93bi4KLSAgICAgKi8KLSAgICBwdWJsaWMgamF2YS5ybWkuUmVtb3RlIGdldFBvcnQoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSBwb3J0TmFtZSwgQ2xhc3Mgc2VydmljZUVuZHBvaW50SW50ZXJmYWNlKSB0aHJvd3MgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uIHsKLSAgICAgICAgaWYgKHBvcnROYW1lID09IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBnZXRQb3J0KHNlcnZpY2VFbmRwb2ludEludGVyZmFjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgamF2YS5sYW5nLlN0cmluZyBpbnB1dFBvcnROYW1lID0gcG9ydE5hbWUuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgIGlmICgiQ29udmVydGVyIi5lcXVhbHMoaW5wdXRQb3J0TmFtZSkpIHsKLSAgICAgICAgICAgIHJldHVybiBnZXRDb252ZXJ0ZXIoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlICB7Ci0gICAgICAgICAgICBqYXZhLnJtaS5SZW1vdGUgX3N0dWIgPSBnZXRQb3J0KHNlcnZpY2VFbmRwb2ludEludGVyZmFjZSk7Ci0gICAgICAgICAgICAoKG9yZy5hcGFjaGUuYXhpcy5jbGllbnQuU3R1YikgX3N0dWIpLnNldFBvcnROYW1lKHBvcnROYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBfc3R1YjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIGdldFNlcnZpY2VOYW1lKCkgewotICAgICAgICByZXR1cm4gbmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoImh0dHA6Ly93dHAiLCAiQ29udmVydGVyU2VydmljZSIpOwotICAgIH0KLQotICAgIHByaXZhdGUgamF2YS51dGlsLkhhc2hTZXQgcG9ydHMgPSBudWxsOwotCi0gICAgcHVibGljIGphdmEudXRpbC5JdGVyYXRvciBnZXRQb3J0cygpIHsKLSAgICAgICAgaWYgKHBvcnRzID09IG51bGwpIHsKLSAgICAgICAgICAgIHBvcnRzID0gbmV3IGphdmEudXRpbC5IYXNoU2V0KCk7Ci0gICAgICAgICAgICBwb3J0cy5hZGQobmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoImh0dHA6Ly93dHAiLCAiQ29udmVydGVyIikpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwb3J0cy5pdGVyYXRvcigpOwotICAgIH0KLQotICAgIC8qKgotICAgICogU2V0IHRoZSBlbmRwb2ludCBhZGRyZXNzIGZvciB0aGUgc3BlY2lmaWVkIHBvcnQgbmFtZS4KLSAgICAqLwotICAgIHB1YmxpYyB2b2lkIHNldEVuZHBvaW50QWRkcmVzcyhqYXZhLmxhbmcuU3RyaW5nIHBvcnROYW1lLCBqYXZhLmxhbmcuU3RyaW5nIGFkZHJlc3MpIHRocm93cyBqYXZheC54bWwucnBjLlNlcnZpY2VFeGNlcHRpb24gewotICAgICAgICAKLWlmICgiQ29udmVydGVyIi5lcXVhbHMocG9ydE5hbWUpKSB7Ci0gICAgICAgICAgICBzZXRDb252ZXJ0ZXJFbmRwb2ludEFkZHJlc3MoYWRkcmVzcyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAKLXsgLy8gVW5rbm93biBQb3J0IE5hbWUKLSAgICAgICAgICAgIHRocm93IG5ldyBqYXZheC54bWwucnBjLlNlcnZpY2VFeGNlcHRpb24oIiBDYW5ub3Qgc2V0IEVuZHBvaW50IEFkZHJlc3MgZm9yIFVua25vd24gUG9ydCIgKyBwb3J0TmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAqIFNldCB0aGUgZW5kcG9pbnQgYWRkcmVzcyBmb3IgdGhlIHNwZWNpZmllZCBwb3J0IG5hbWUuCi0gICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzZXRFbmRwb2ludEFkZHJlc3MoamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSBwb3J0TmFtZSwgamF2YS5sYW5nLlN0cmluZyBhZGRyZXNzKSB0aHJvd3MgamF2YXgueG1sLnJwYy5TZXJ2aWNlRXhjZXB0aW9uIHsKLSAgICAgICAgc2V0RW5kcG9pbnRBZGRyZXNzKHBvcnROYW1lLmdldExvY2FsUGFydCgpLCBhZGRyZXNzKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMi93dHAvQ29udmVydGVyU29hcEJpbmRpbmdTdHViLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL2RhdGEvYXhpc1NvdXJjZTIvd3RwL0NvbnZlcnRlclNvYXBCaW5kaW5nU3R1Yi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mzk3YWFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvZGF0YS9heGlzU291cmNlMi93dHAvQ29udmVydGVyU29hcEJpbmRpbmdTdHViLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioKLSAqIENvbnZlcnRlclNvYXBCaW5kaW5nU3R1Yi5qYXZhCi0gKgotICogVGhpcyBmaWxlIHdhcyBhdXRvLWdlbmVyYXRlZCBmcm9tIFdTREwKLSAqIGJ5IHRoZSBBcGFjaGUgQXhpcyAxLjIuMSBKdW4gMTQsIDIwMDUgKDA5OjE1OjU3IEVEVCkgV1NETDJKYXZhIGVtaXR0ZXIuCi0gKi8KLQotcGFja2FnZSB3dHA7Ci0KLXB1YmxpYyBjbGFzcyBDb252ZXJ0ZXJTb2FwQmluZGluZ1N0dWIgZXh0ZW5kcyBvcmcuYXBhY2hlLmF4aXMuY2xpZW50LlN0dWIgaW1wbGVtZW50cyB3dHAuQ29udmVydGVyIHsKLSAgICBwcml2YXRlIGphdmEudXRpbC5WZWN0b3IgY2FjaGVkU2VyQ2xhc3NlcyA9IG5ldyBqYXZhLnV0aWwuVmVjdG9yKCk7Ci0gICAgcHJpdmF0ZSBqYXZhLnV0aWwuVmVjdG9yIGNhY2hlZFNlclFOYW1lcyA9IG5ldyBqYXZhLnV0aWwuVmVjdG9yKCk7Ci0gICAgcHJpdmF0ZSBqYXZhLnV0aWwuVmVjdG9yIGNhY2hlZFNlckZhY3RvcmllcyA9IG5ldyBqYXZhLnV0aWwuVmVjdG9yKCk7Ci0gICAgcHJpdmF0ZSBqYXZhLnV0aWwuVmVjdG9yIGNhY2hlZERlc2VyRmFjdG9yaWVzID0gbmV3IGphdmEudXRpbC5WZWN0b3IoKTsKLQotICAgIHN0YXRpYyBvcmcuYXBhY2hlLmF4aXMuZGVzY3JpcHRpb24uT3BlcmF0aW9uRGVzYyBbXSBfb3BlcmF0aW9uczsKLQotICAgIHN0YXRpYyB7Ci0gICAgICAgIF9vcGVyYXRpb25zID0gbmV3IG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5PcGVyYXRpb25EZXNjWzJdOwotICAgICAgICBfaW5pdE9wZXJhdGlvbkRlc2MxKCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBfaW5pdE9wZXJhdGlvbkRlc2MxKCl7Ci0gICAgICAgIG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5PcGVyYXRpb25EZXNjIG9wZXI7Ci0gICAgICAgIG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5QYXJhbWV0ZXJEZXNjIHBhcmFtOwotICAgICAgICBvcGVyID0gbmV3IG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5PcGVyYXRpb25EZXNjKCk7Ci0gICAgICAgIG9wZXIuc2V0TmFtZSgiY2Vsc2l1c1RvRmFyZW5oZWl0Iik7Ci0gICAgICAgIHBhcmFtID0gbmV3IG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5QYXJhbWV0ZXJEZXNjKG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCJodHRwOi8vd3RwIiwgImNlbHNpdXMiKSwgb3JnLmFwYWNoZS5heGlzLmRlc2NyaXB0aW9uLlBhcmFtZXRlckRlc2MuSU4sIG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIsICJmbG9hdCIpLCBmbG9hdC5jbGFzcywgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgb3Blci5hZGRQYXJhbWV0ZXIocGFyYW0pOwotICAgICAgICBvcGVyLnNldFJldHVyblR5cGUobmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiwgImZsb2F0IikpOwotICAgICAgICBvcGVyLnNldFJldHVybkNsYXNzKGZsb2F0LmNsYXNzKTsKLSAgICAgICAgb3Blci5zZXRSZXR1cm5RTmFtZShuZXcgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSgiaHR0cDovL3d0cCIsICJjZWxzaXVzVG9GYXJlbmhlaXRSZXR1cm4iKSk7Ci0gICAgICAgIG9wZXIuc2V0U3R5bGUob3JnLmFwYWNoZS5heGlzLmNvbnN0YW50cy5TdHlsZS5XUkFQUEVEKTsKLSAgICAgICAgb3Blci5zZXRVc2Uob3JnLmFwYWNoZS5heGlzLmNvbnN0YW50cy5Vc2UuTElURVJBTCk7Ci0gICAgICAgIF9vcGVyYXRpb25zWzBdID0gb3BlcjsKLQotICAgICAgICBvcGVyID0gbmV3IG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5PcGVyYXRpb25EZXNjKCk7Ci0gICAgICAgIG9wZXIuc2V0TmFtZSgiZmFyZW5oZWl0VG9DZWxzaXVzIik7Ci0gICAgICAgIHBhcmFtID0gbmV3IG9yZy5hcGFjaGUuYXhpcy5kZXNjcmlwdGlvbi5QYXJhbWV0ZXJEZXNjKG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCJodHRwOi8vd3RwIiwgImZhcmVuaGVpdCIpLCBvcmcuYXBhY2hlLmF4aXMuZGVzY3JpcHRpb24uUGFyYW1ldGVyRGVzYy5JTiwgbmV3IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUoImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiwgImZsb2F0IiksIGZsb2F0LmNsYXNzLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICBvcGVyLmFkZFBhcmFtZXRlcihwYXJhbSk7Ci0gICAgICAgIG9wZXIuc2V0UmV0dXJuVHlwZShuZXcgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSgiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiLCAiZmxvYXQiKSk7Ci0gICAgICAgIG9wZXIuc2V0UmV0dXJuQ2xhc3MoZmxvYXQuY2xhc3MpOwotICAgICAgICBvcGVyLnNldFJldHVyblFOYW1lKG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCJodHRwOi8vd3RwIiwgImZhcmVuaGVpdFRvQ2Vsc2l1c1JldHVybiIpKTsKLSAgICAgICAgb3Blci5zZXRTdHlsZShvcmcuYXBhY2hlLmF4aXMuY29uc3RhbnRzLlN0eWxlLldSQVBQRUQpOwotICAgICAgICBvcGVyLnNldFVzZShvcmcuYXBhY2hlLmF4aXMuY29uc3RhbnRzLlVzZS5MSVRFUkFMKTsKLSAgICAgICAgX29wZXJhdGlvbnNbMV0gPSBvcGVyOwotCi0gICAgfQotCi0gICAgcHVibGljIENvbnZlcnRlclNvYXBCaW5kaW5nU3R1YigpIHRocm93cyBvcmcuYXBhY2hlLmF4aXMuQXhpc0ZhdWx0IHsKLSAgICAgICAgIHRoaXMobnVsbCk7Ci0gICAgfQotCi0gICAgcHVibGljIENvbnZlcnRlclNvYXBCaW5kaW5nU3R1YihqYXZhLm5ldC5VUkwgZW5kcG9pbnRVUkwsIGphdmF4LnhtbC5ycGMuU2VydmljZSBzZXJ2aWNlKSB0aHJvd3Mgb3JnLmFwYWNoZS5heGlzLkF4aXNGYXVsdCB7Ci0gICAgICAgICB0aGlzKHNlcnZpY2UpOwotICAgICAgICAgc3VwZXIuY2FjaGVkRW5kcG9pbnQgPSBlbmRwb2ludFVSTDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgQ29udmVydGVyU29hcEJpbmRpbmdTdHViKGphdmF4LnhtbC5ycGMuU2VydmljZSBzZXJ2aWNlKSB0aHJvd3Mgb3JnLmFwYWNoZS5heGlzLkF4aXNGYXVsdCB7Ci0gICAgICAgIGlmIChzZXJ2aWNlID09IG51bGwpIHsKLSAgICAgICAgICAgIHN1cGVyLnNlcnZpY2UgPSBuZXcgb3JnLmFwYWNoZS5heGlzLmNsaWVudC5TZXJ2aWNlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdXBlci5zZXJ2aWNlID0gc2VydmljZTsKLSAgICAgICAgfQotICAgICAgICAoKG9yZy5hcGFjaGUuYXhpcy5jbGllbnQuU2VydmljZSlzdXBlci5zZXJ2aWNlKS5zZXRUeXBlTWFwcGluZ1ZlcnNpb24oIjEuMiIpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCBvcmcuYXBhY2hlLmF4aXMuY2xpZW50LkNhbGwgY3JlYXRlQ2FsbCgpIHRocm93cyBqYXZhLnJtaS5SZW1vdGVFeGNlcHRpb24gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgb3JnLmFwYWNoZS5heGlzLmNsaWVudC5DYWxsIF9jYWxsID0gc3VwZXIuX2NyZWF0ZUNhbGwoKTsKLSAgICAgICAgICAgIGlmIChzdXBlci5tYWludGFpblNlc3Npb25TZXQpIHsKLSAgICAgICAgICAgICAgICBfY2FsbC5zZXRNYWludGFpblNlc3Npb24oc3VwZXIubWFpbnRhaW5TZXNzaW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdXBlci5jYWNoZWRVc2VybmFtZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgX2NhbGwuc2V0VXNlcm5hbWUoc3VwZXIuY2FjaGVkVXNlcm5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN1cGVyLmNhY2hlZFBhc3N3b3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBfY2FsbC5zZXRQYXNzd29yZChzdXBlci5jYWNoZWRQYXNzd29yZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3VwZXIuY2FjaGVkRW5kcG9pbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIF9jYWxsLnNldFRhcmdldEVuZHBvaW50QWRkcmVzcyhzdXBlci5jYWNoZWRFbmRwb2ludCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3VwZXIuY2FjaGVkVGltZW91dCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgX2NhbGwuc2V0VGltZW91dChzdXBlci5jYWNoZWRUaW1lb3V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdXBlci5jYWNoZWRQb3J0TmFtZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgX2NhbGwuc2V0UG9ydE5hbWUoc3VwZXIuY2FjaGVkUG9ydE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgamF2YS51dGlsLkVudW1lcmF0aW9uIGtleXMgPSBzdXBlci5jYWNoZWRQcm9wZXJ0aWVzLmtleXMoKTsKLSAgICAgICAgICAgIHdoaWxlIChrZXlzLmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyBrZXkgPSAoamF2YS5sYW5nLlN0cmluZykga2V5cy5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgICAgIF9jYWxsLnNldFByb3BlcnR5KGtleSwgc3VwZXIuY2FjaGVkUHJvcGVydGllcy5nZXQoa2V5KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gX2NhbGw7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKGphdmEubGFuZy5UaHJvd2FibGUgX3QpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBvcmcuYXBhY2hlLmF4aXMuQXhpc0ZhdWx0KCJGYWlsdXJlIHRyeWluZyB0byBnZXQgdGhlIENhbGwgb2JqZWN0IiwgX3QpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGZsb2F0IGNlbHNpdXNUb0ZhcmVuaGVpdChmbG9hdCBjZWxzaXVzKSB0aHJvd3MgamF2YS5ybWkuUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgaWYgKHN1cGVyLmNhY2hlZEVuZHBvaW50ID09IG51bGwpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBvcmcuYXBhY2hlLmF4aXMuTm9FbmRQb2ludEV4Y2VwdGlvbigpOwotICAgICAgICB9Ci0gICAgICAgIG9yZy5hcGFjaGUuYXhpcy5jbGllbnQuQ2FsbCBfY2FsbCA9IGNyZWF0ZUNhbGwoKTsKLSAgICAgICAgX2NhbGwuc2V0T3BlcmF0aW9uKF9vcGVyYXRpb25zWzBdKTsKLSAgICAgICAgX2NhbGwuc2V0VXNlU09BUEFjdGlvbih0cnVlKTsKLSAgICAgICAgX2NhbGwuc2V0U09BUEFjdGlvblVSSSgiIik7Ci0gICAgICAgIF9jYWxsLnNldEVuY29kaW5nU3R5bGUobnVsbCk7Ci0gICAgICAgIF9jYWxsLnNldFByb3BlcnR5KG9yZy5hcGFjaGUuYXhpcy5jbGllbnQuQ2FsbC5TRU5EX1RZUEVfQVRUUiwgQm9vbGVhbi5GQUxTRSk7Ci0gICAgICAgIF9jYWxsLnNldFByb3BlcnR5KG9yZy5hcGFjaGUuYXhpcy5BeGlzRW5naW5lLlBST1BfRE9NVUxUSVJFRlMsIEJvb2xlYW4uRkFMU0UpOwotICAgICAgICBfY2FsbC5zZXRTT0FQVmVyc2lvbihvcmcuYXBhY2hlLmF4aXMuc29hcC5TT0FQQ29uc3RhbnRzLlNPQVAxMV9DT05TVEFOVFMpOwotICAgICAgICBfY2FsbC5zZXRPcGVyYXRpb25OYW1lKG5ldyBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lKCJodHRwOi8vd3RwIiwgImNlbHNpdXNUb0ZhcmVuaGVpdCIpKTsKLQotICAgICAgICBzZXRSZXF1ZXN0SGVhZGVycyhfY2FsbCk7Ci0gICAgICAgIHNldEF0dGFjaG1lbnRzKF9jYWxsKTsKLSB0cnkgeyAgICAgICAgamF2YS5sYW5nLk9iamVjdCBfcmVzcCA9IF9jYWxsLmludm9rZShuZXcgamF2YS5sYW5nLk9iamVjdFtdIHtuZXcgamF2YS5sYW5nLkZsb2F0KGNlbHNpdXMpfSk7Ci0KLSAgICAgICAgaWYgKF9yZXNwIGluc3RhbmNlb2YgamF2YS5ybWkuUmVtb3RlRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICB0aHJvdyAoamF2YS5ybWkuUmVtb3RlRXhjZXB0aW9uKV9yZXNwOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXh0cmFjdEF0dGFjaG1lbnRzKF9jYWxsKTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgoamF2YS5sYW5nLkZsb2F0KSBfcmVzcCkuZmxvYXRWYWx1ZSgpOwotICAgICAgICAgICAgfSBjYXRjaCAoamF2YS5sYW5nLkV4Y2VwdGlvbiBfZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgoamF2YS5sYW5nLkZsb2F0KSBvcmcuYXBhY2hlLmF4aXMudXRpbHMuSmF2YVV0aWxzLmNvbnZlcnQoX3Jlc3AsIGZsb2F0LmNsYXNzKSkuZmxvYXRWYWx1ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gIH0gY2F0Y2ggKG9yZy5hcGFjaGUuYXhpcy5BeGlzRmF1bHQgYXhpc0ZhdWx0RXhjZXB0aW9uKSB7Ci0gIHRocm93IGF4aXNGYXVsdEV4Y2VwdGlvbjsKLX0KLSAgICB9Ci0KLSAgICBwdWJsaWMgZmxvYXQgZmFyZW5oZWl0VG9DZWxzaXVzKGZsb2F0IGZhcmVuaGVpdCkgdGhyb3dzIGphdmEucm1pLlJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgIGlmIChzdXBlci5jYWNoZWRFbmRwb2ludCA9PSBudWxsKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgb3JnLmFwYWNoZS5heGlzLk5vRW5kUG9pbnRFeGNlcHRpb24oKTsKLSAgICAgICAgfQotICAgICAgICBvcmcuYXBhY2hlLmF4aXMuY2xpZW50LkNhbGwgX2NhbGwgPSBjcmVhdGVDYWxsKCk7Ci0gICAgICAgIF9jYWxsLnNldE9wZXJhdGlvbihfb3BlcmF0aW9uc1sxXSk7Ci0gICAgICAgIF9jYWxsLnNldFVzZVNPQVBBY3Rpb24odHJ1ZSk7Ci0gICAgICAgIF9jYWxsLnNldFNPQVBBY3Rpb25VUkkoIiIpOwotICAgICAgICBfY2FsbC5zZXRFbmNvZGluZ1N0eWxlKG51bGwpOwotICAgICAgICBfY2FsbC5zZXRQcm9wZXJ0eShvcmcuYXBhY2hlLmF4aXMuY2xpZW50LkNhbGwuU0VORF9UWVBFX0FUVFIsIEJvb2xlYW4uRkFMU0UpOwotICAgICAgICBfY2FsbC5zZXRQcm9wZXJ0eShvcmcuYXBhY2hlLmF4aXMuQXhpc0VuZ2luZS5QUk9QX0RPTVVMVElSRUZTLCBCb29sZWFuLkZBTFNFKTsKLSAgICAgICAgX2NhbGwuc2V0U09BUFZlcnNpb24ob3JnLmFwYWNoZS5heGlzLnNvYXAuU09BUENvbnN0YW50cy5TT0FQMTFfQ09OU1RBTlRTKTsKLSAgICAgICAgX2NhbGwuc2V0T3BlcmF0aW9uTmFtZShuZXcgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSgiaHR0cDovL3d0cCIsICJmYXJlbmhlaXRUb0NlbHNpdXMiKSk7Ci0KLSAgICAgICAgc2V0UmVxdWVzdEhlYWRlcnMoX2NhbGwpOwotICAgICAgICBzZXRBdHRhY2htZW50cyhfY2FsbCk7Ci0gdHJ5IHsgICAgICAgIGphdmEubGFuZy5PYmplY3QgX3Jlc3AgPSBfY2FsbC5pbnZva2UobmV3IGphdmEubGFuZy5PYmplY3RbXSB7bmV3IGphdmEubGFuZy5GbG9hdChmYXJlbmhlaXQpfSk7Ci0KLSAgICAgICAgaWYgKF9yZXNwIGluc3RhbmNlb2YgamF2YS5ybWkuUmVtb3RlRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICB0aHJvdyAoamF2YS5ybWkuUmVtb3RlRXhjZXB0aW9uKV9yZXNwOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXh0cmFjdEF0dGFjaG1lbnRzKF9jYWxsKTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgoamF2YS5sYW5nLkZsb2F0KSBfcmVzcCkuZmxvYXRWYWx1ZSgpOwotICAgICAgICAgICAgfSBjYXRjaCAoamF2YS5sYW5nLkV4Y2VwdGlvbiBfZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgoamF2YS5sYW5nLkZsb2F0KSBvcmcuYXBhY2hlLmF4aXMudXRpbHMuSmF2YVV0aWxzLmNvbnZlcnQoX3Jlc3AsIGZsb2F0LmNsYXNzKSkuZmxvYXRWYWx1ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gIH0gY2F0Y2ggKG9yZy5hcGFjaGUuYXhpcy5BeGlzRmF1bHQgYXhpc0ZhdWx0RXhjZXB0aW9uKSB7Ci0gIHRocm93IGF4aXNGYXVsdEV4Y2VwdGlvbjsKLX0KLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvcGx1Z2luLnByb3BlcnRpZXMgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmVmNmM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNjA0MjQgICAxMzgwNjAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBNZXNzYWdlcyBpbiBwbHVnaW4ueG1sLgotIwotUExVR0lOX05BTUU9SlNUIFdlYiBTZXJ2aWNlcyBBeGlzIENvbnN1bXB0aW9uIENvcmUgVGVzdAotUExVR0lOX1BST1ZJREVSPUVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy9heGlzL2NvbnN1bXB0aW9uL2NvcmUvdGVzdHMvdW5pdHRlc3QvTG9jYXRvclRlc3RzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy9heGlzL2NvbnN1bXB0aW9uL2NvcmUvdGVzdHMvdW5pdHRlc3QvTG9jYXRvclRlc3RzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjN2E2MGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvYXhpcy9jb25zdW1wdGlvbi9jb3JlL3Rlc3RzL3VuaXR0ZXN0L0xvY2F0b3JUZXN0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNjAzMTcgICAxMjc0NTYgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqIDIwMDYwNzExICAgMTQ3ODYyIGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5Ci0gKiAyMDA2MDcxMSAgIDE0Nzg2NCBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy51bml0dGVzdDsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLklKYXZhUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzLnV0aWwuSmF2YUZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzLnV0aWwuU3Rkb3V0UHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMudXRpbC5VdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC53c3J0LldlYlNlcnZpY2VKYXZhQ2xpZW50SW5mbzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NmaW5kZXIuV2ViU2VydmljZUZpbmRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlQ2xpZW50SW5mbzsKLQotcHVibGljIGNsYXNzIExvY2F0b3JUZXN0cyBleHRlbmRzIFRlc3RDYXNlCi17Ci0JcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlICgpCi0JewotCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShMb2NhdG9yVGVzdHMuY2xhc3MpOwotCX0KLQotCXB1YmxpYyB2b2lkIHRlc3RfQXhpc0NsaWVudExvY2F0b3IgKCkKLQl7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiQkVHSU4gdGVzdF9BeGlzQ2xpZW50TG9jYXRvciIpOwotCQl0cnkKLQkJewotCQkJU3RyaW5nW10gcHJvamVjdE5hbWVzID0gbmV3IFN0cmluZ1tdIHsiSmF2YTEiLCJKYXZhMiIsIkphdmEzIn07Ci0JCQlJUHJvamVjdFtdIHByb2plY3RzID0gbmV3IElQcm9qZWN0W3Byb2plY3ROYW1lcy5sZW5ndGhdOwotCQkJZm9yIChpbnQgeD0wOyB4PHByb2plY3ROYW1lcy5sZW5ndGg7IHgrKykKLQkJCXsKLQkJCQlwcm9qZWN0c1t4XSA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdChwcm9qZWN0TmFtZXNbeF0pOwotCQkJfQotCQkJVXRpbC5pbml0KCk7Ci0JCQl0cnkKLQkJCXsKLQkJCQlmb3IgKGludCBpPTA7IGk8cHJvamVjdHMubGVuZ3RoOyBpKyspCi0JCQkJewotCQkJCQlJSmF2YVByb2plY3QgamF2YVByb2plY3QgPSBVdGlsLmNyZWF0ZUphdmFQcm9qZWN0KHByb2plY3ROYW1lc1tpXSk7Ci0JCQkJCVV0aWwuYWRkUmVxdWlyZWRKYXJzVG9KYXZhUHJvamVjdChqYXZhUHJvamVjdCk7Ci0JCQkJCVV0aWwuY29weUV4YW1wbGVzVG9KYXZhUHJvamVjdChqYXZhUHJvamVjdCxuZXcgSmF2YUZpbHRlcigpKTsKLQkJCQl9Ci0JCQl9Ci0JCQljYXRjaCAoVGhyb3dhYmxlIHQpCi0JCQl7Ci0JCQkJdC5wcmludFN0YWNrVHJhY2UoKTsKLQkJCQlmYWlsKCJGYWlsZWQgdG8gYWNjZXNzIG9yIGNyZWF0ZSBwcmVyZXF1aXNpdGUgcHJvamVjdHMiKTsKLQkJCX0KLQkJCVdlYlNlcnZpY2VGaW5kZXIgZmluZGVyID0gV2ViU2VydmljZUZpbmRlci5pbnN0YW5jZSgpOwotCQkJU3RyaW5nW10gY2F0ZWdvcnlJZHMgPSBmaW5kZXIuZ2V0V2ViU2VydmljZUNhdGVnb3J5SWRzKCk7Ci0JCQlpbnQgbiA9IC0xOwotCQkJSVByb2dyZXNzTW9uaXRvciBtb25pdG9yID0gbmV3IFN0ZG91dFByb2dyZXNzTW9uaXRvcigpOwotCQkJZm9yIChpbnQgaT0wOyBpPGNhdGVnb3J5SWRzLmxlbmd0aDsgaSsrKQotCQkJewotCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQ2F0ZWdvcnkgSUQgPSBbIitjYXRlZ29yeUlkc1tpXSsiXSIpOwotCQkJCWlmIChjYXRlZ29yeUlkc1tpXS5lcXVhbHMoIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5heGlzLmNvbnN1bXB0aW9uLmNvcmUubG9jYXRvci5jYXRlZ29yeS5heGlzIikpCi0JCQkJewotCQkJCQluID0gaTsKLQkJCQkJSXRlcmF0b3IgaXRlciA9IGZpbmRlci5nZXRXZWJTZXJ2aWNlQ2xpZW50c0J5Q2F0ZWdvcnlJZChjYXRlZ29yeUlkc1tpXSxtb25pdG9yKTsKLQkJCQkJYXNzZXJ0Rm91bmRDbGllbnRzKGl0ZXIsNik7Ci0JCQkJCWl0ZXIgPSBmaW5kZXIuZ2V0V2ViU2VydmljZUNsaWVudHNCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZHNbaV0scHJvamVjdHMsbW9uaXRvcik7Ci0JCQkJCWFzc2VydEZvdW5kQ2xpZW50cyhpdGVyLDYpOwotCQkJCQlpdGVyID0gZmluZGVyLmdldFdlYlNlcnZpY2VDbGllbnRzQnlDYXRlZ29yeUlkKGNhdGVnb3J5SWRzW2ldLG5ldyBJUHJvamVjdFtdIHtwcm9qZWN0c1swXX0sbW9uaXRvcik7Ci0JCQkJCWFzc2VydEZvdW5kQ2xpZW50cyhpdGVyLDIpOwotCQkJCQlpdGVyID0gZmluZGVyLmdldFdlYlNlcnZpY2VDbGllbnRzQnlDYXRlZ29yeUlkKGNhdGVnb3J5SWRzW2ldLG5ldyBJUHJvamVjdFtdIHtwcm9qZWN0c1sxXSxwcm9qZWN0c1syXX0sbW9uaXRvcik7Ci0JCQkJCWFzc2VydEZvdW5kQ2xpZW50cyhpdGVyLDQpOwotCQkJCQlJUHJvamVjdCBub1N1Y2hQcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KCJub1N1Y2hQcm9qZWN0Iik7Ci0JCQkJCWl0ZXIgPSBmaW5kZXIuZ2V0V2ViU2VydmljZUNsaWVudHNCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZHNbaV0sbmV3IElQcm9qZWN0W10ge25vU3VjaFByb2plY3R9LG1vbml0b3IpOwotCQkJCQlhc3NlcnRGb3VuZENsaWVudHMoaXRlciwwKTsKLQkJCQl9Ci0JCQl9Ci0JCQlhc3NlcnRUcnVlKCJBeGlzIGxvY2F0b3IgZXh0ZW5zaW9uIG1pc3NpbmcuIixuID49IDApOwotCQl9Ci0JCWZpbmFsbHkKLQkJewotCQkJU3lzdGVtLm91dC5wcmludGxuKCJFTkRFRCB0ZXN0X0F4aXNDbGllbnRMb2NhdG9yIik7Ci0JCX0KLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIGFzc2VydEZvdW5kQ2xpZW50cyAoIEl0ZXJhdG9yIGl0ZXIsIGludCB4ICkKLQl7Ci0JCWludCBwID0gMDsKLQkJd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKQotCQl7Ci0JCQlPYmplY3Qgb2JqID0gaXRlci5uZXh0KCk7Ci0JCQlhc3NlcnRUcnVlKCJGaW5kZXIgcmV0dXJuZWQgYSAiK29iai5nZXRDbGFzcygpLmdldE5hbWUoKSsiIGluc3RlYWQgb2YgYSBXZWJTZXJ2aWNlQ2xpZW50SW5mby4iLG9iaiBpbnN0YW5jZW9mIFdlYlNlcnZpY2VDbGllbnRJbmZvKTsKLQkJCXArKzsKLQkJCVdlYlNlcnZpY2VDbGllbnRJbmZvIHdzY0luZm8gPSAoV2ViU2VydmljZUNsaWVudEluZm8pb2JqOwotCQkJU3RyaW5nIHByb3h5Q2xhc3NVUkwgPSB3c2NJbmZvLmdldEltcGxVUkwoKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQXhpcyBjbGllbnQgcHJveHkgY2xhc3MgPSBbIitwcm94eUNsYXNzVVJMKyJdIik7Ci0JCQlpZiAod3NjSW5mbyBpbnN0YW5jZW9mIFdlYlNlcnZpY2VKYXZhQ2xpZW50SW5mbykKLQkJCXsKLQkJCQlXZWJTZXJ2aWNlSmF2YUNsaWVudEluZm8gd3NjSkluZm8gPSAoV2ViU2VydmljZUphdmFDbGllbnRJbmZvKXdzY0luZm87Ci0JCQkJYXNzZXJ0Tm90TnVsbCgiRm91bmQgYW4gdW5leHBlY3RlZCBudWxsIElUeXBlIix3c2NKSW5mby5nZXRUeXBlKCkpOwotCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQXhpcyBjbGllbnQgcHJveHkgSVR5cGUgPSBbIit3c2NKSW5mby5nZXRUeXBlKCkrIl0iKTsKLQkJCX0KLQkJfQotCQlhc3NlcnRUcnVlKCJGb3VuZCAiK3ArIiBwcm94aWVzIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIreCsiLiIscCA9PSB4KTsKLQl9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy9heGlzL2NvbnN1bXB0aW9uL2NvcmUvdGVzdHMvdXRpbC9GaWx0ZXIuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL2F4aXMvY29uc3VtcHRpb24vY29yZS90ZXN0cy91dGlsL0ZpbHRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTZjMDQ0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL2F4aXMvY29uc3VtcHRpb24vY29yZS90ZXN0cy91dGlsL0ZpbHRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDcxMSAgIDE0Nzg2MiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA3MTEgICAxNDc4NjQgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMudXRpbDsKLQotcHVibGljIGludGVyZmFjZSBGaWx0ZXIKLXsKLQlwdWJsaWMgYm9vbGVhbiBhY2NlcHQgKCBPYmplY3Qgb2JqZWN0ICk7Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy9heGlzL2NvbnN1bXB0aW9uL2NvcmUvdGVzdHMvdXRpbC9KYXZhRmlsdGVyLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy9heGlzL2NvbnN1bXB0aW9uL2NvcmUvdGVzdHMvdXRpbC9KYXZhRmlsdGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NjIwNmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvYXhpcy9jb25zdW1wdGlvbi9jb3JlL3Rlc3RzL3V0aWwvSmF2YUZpbHRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDcxMSAgIDE0Nzg2MiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA3MTEgICAxNDc4NjQgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMudXRpbDsKLQotcHVibGljIGNsYXNzIEphdmFGaWx0ZXIgaW1wbGVtZW50cyBGaWx0ZXIgewotCi0JcHVibGljIGJvb2xlYW4gYWNjZXB0ICggT2JqZWN0IG9iamVjdCApCi0JewotCQlyZXR1cm4gb2JqZWN0LnRvU3RyaW5nKCkuZW5kc1dpdGgoIi5qYXZhIik7Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy9heGlzL2NvbnN1bXB0aW9uL2NvcmUvdGVzdHMvdXRpbC9TdGRvdXRQcm9ncmVzc01vbml0b3IuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL2F4aXMvY29uc3VtcHRpb24vY29yZS90ZXN0cy91dGlsL1N0ZG91dFByb2dyZXNzTW9uaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTg4YjE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL2F4aXMvY29uc3VtcHRpb24vY29yZS90ZXN0cy91dGlsL1N0ZG91dFByb2dyZXNzTW9uaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxNyAgIDEyNzQ1NiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy51dGlsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci0KLXB1YmxpYyBjbGFzcyBTdGRvdXRQcm9ncmVzc01vbml0b3IgZXh0ZW5kcyBOdWxsUHJvZ3Jlc3NNb25pdG9yCi17Ci0KLQlwdWJsaWMgdm9pZCBiZWdpblRhc2soU3RyaW5nIG5hbWUsIGludCB0b3RhbFdvcmspCi0JewotCQlTeXN0ZW0ub3V0LnByaW50bG4oIltQcm9ncmVzc10gIituYW1lKyIsICIrdG90YWxXb3JrKyIgdW5pdChzKSByZW1haW5pbmcpLiIpOwotCX0KLQotCXB1YmxpYyB2b2lkIGRvbmUoKQotCXsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJbUHJvZ3Jlc3NdIERvbmUuIik7Ci0JfQotCi0JcHVibGljIHZvaWQgc2V0VGFza05hbWUoU3RyaW5nIG5hbWUpCi0JewotCQlTeXN0ZW0ub3V0LnByaW50bG4oIltQcm9ncmVzc10gIituYW1lKTsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzdWJUYXNrKFN0cmluZyBuYW1lKQotCXsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJbUHJvZ3Jlc3NdICIrbmFtZSk7Ci0JfQotCi0JcHVibGljIHZvaWQgd29ya2VkKGludCB3b3JrKQotCXsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJbUHJvZ3Jlc3NdICIrd29yaysiIHVuaXQocykgY29tcGxldGVkLiIpOwotCX0KLQkKLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL2F4aXMvY29uc3VtcHRpb24vY29yZS90ZXN0cy91dGlsL1V0aWwuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL2F4aXMvY29uc3VtcHRpb24vY29yZS90ZXN0cy91dGlsL1V0aWwuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc5MDI2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy9heGlzL2NvbnN1bXB0aW9uL2NvcmUvdGVzdHMvdXRpbC9VdGlsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxNyAgIDEyNzQ1NiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICogMjAwNjA3MTEgICAxNDc4NjIgY2JyZWFsZXlAY2EuaWJtLmNvbSAtIENocmlzIEJyZWFsZXkKLSAqIDIwMDYwNzExICAgMTQ3ODY0IGNicmVhbGV5QGNhLmlibS5jb20gLSBDaHJpcyBCcmVhbGV5Ci0gKiAyMDA2MTIxMSAgIDE2MjI4OCBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgd29ya3NwYWNlIHBhdGhzIHdpdGggc3BhY2VzIGJyZWFrIEphdmEgRWRpdG9yIExhdW5jaAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24uY29yZS50ZXN0cy51dGlsOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJJOwotaW1wb3J0IGphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdERlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVdvcmtzcGFjZVJvb3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSW5jcmVtZW50YWxQcm9qZWN0QnVpbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkZpbGVMb2NhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQuY29yZS5JQ2xhc3NwYXRoRW50cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmNvcmUuSUphdmFQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFDb3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5jb3JlLkphdmFNb2RlbEV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnVyaXJlc29sdmVyLmludGVybmFsLnV0aWwuVVJJRW5jb2RlcjsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotCi1wdWJsaWMgY2xhc3MgVXRpbAotewotCS8qKgotCSAqIEluaXRpYWxpemVzIHRoaXMgdGVzdHN1aXRlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgdm9pZCBpbml0ICgpCi0JewotCQlTdHJpbmcgd29ya3NwYWNlT1NQYXRoID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiV29ya3NwYWNlID0gWyIrd29ya3NwYWNlT1NQYXRoKyJdIik7Ci0JfQotCQotCS8qKgotCSAqIENyZWF0ZSBhIEphdmEgcHJvamVjdCBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCi0JICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb2plY3QgdG8gY3JlYXRlLgotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBJZiB0aGUgcHJvamVjdCBjb3VsZCBub3QgYmUgY3JlYXRlZC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIElKYXZhUHJvamVjdCBjcmVhdGVKYXZhUHJvamVjdCAoIFN0cmluZyBuYW1lICkKLQl0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJSVdvcmtzcGFjZSB3b3Jrc3BhY2UgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCk7Ci0JCUlXb3Jrc3BhY2VSb290IHJvb3QgPSB3b3Jrc3BhY2UuZ2V0Um9vdCgpOwotCQlJUHJvamVjdCBwcm9qZWN0ID0gcm9vdC5nZXRQcm9qZWN0KG5hbWUpOwotCQlpZiAoIXByb2plY3QuZXhpc3RzKCkpCi0JCXsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQ3JlYXRpbmcgcHJvamVjdCBbIituYW1lKyJdIik7Ci0JCQlwcm9qZWN0LmNyZWF0ZShudWxsKTsKLQkJCXByb2plY3Qub3BlbihudWxsKTsKLQkgICAgICAgIElQcm9qZWN0RGVzY3JpcHRpb24gZGVzYyA9IHByb2plY3QuZ2V0RGVzY3JpcHRpb24oKTsKLQkgICAgICAgIGRlc2Muc2V0TmF0dXJlSWRzKG5ldyBTdHJpbmdbXSB7SmF2YUNvcmUuTkFUVVJFX0lEfSk7Ci0JICAgICAgICBJQ29tbWFuZCBjbWQgPSBkZXNjLm5ld0NvbW1hbmQoKTsKLQkgICAgICAgIGNtZC5zZXRCdWlsZGVyTmFtZShKYXZhQ29yZS5CVUlMREVSX0lEKTsKLQkgICAgICAgIGRlc2Muc2V0QnVpbGRTcGVjKG5ldyBJQ29tbWFuZFtdIHtjbWR9KTsKLQkgICAgICAgIHByb2plY3Quc2V0RGVzY3JpcHRpb24oZGVzYyxudWxsKTsKLQkJfQotCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNyZWF0aW5nIEphdmEgcHJvamVjdCBbIituYW1lKyJdIik7Ci0JCUlKYXZhUHJvamVjdCBqYXZhUHJvamVjdCA9IEphdmFDb3JlLmNyZWF0ZShwcm9qZWN0KTsKLQkJamF2YVByb2plY3Qub3BlbihudWxsKTsKLQkJcmV0dXJuIGphdmFQcm9qZWN0OwotCX0KLQkKLQkvKioKLQkgKiBBZGRzIEF4aXMgamFycyBhbmQgdGhlIEpSRSB0byB0aGUgY2xhc3NwYXRoIG9mIHRoZSBnaXZlbiBwcm9qZWN0LgotCSAqIEBwYXJhbSBqYXZhUHJvamVjdCBUaGUgcHJvamVjdCB0byBhZGQgYXhpcy5qYXIgdG8uCi0JICogQHRocm93cyBKYXZhTW9kZWxFeGNlcHRpb24gSWYgdGhlIGphciBjb3VsZCBub3QgYmUgYWRkZWQuCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIGFkZFJlcXVpcmVkSmFyc1RvSmF2YVByb2plY3QgKCBJSmF2YVByb2plY3QgamF2YVByb2plY3QgKQotCXRocm93cyBDb3JlRXhjZXB0aW9uCi0JewotCQkvLyBHZXQgdGhlIGN1cnJlbnQgY2xhc3NwYXRoIGFzIGEgbGlzdC4KLQkJSUNsYXNzcGF0aEVudHJ5W10gY2xhc3NwYXRoID0gamF2YVByb2plY3QuZ2V0UmF3Q2xhc3NwYXRoKCk7Ci0JCUxpc3QgbGlzdCA9IG5ldyBMaW5rZWRMaXN0KGphdmEudXRpbC5BcnJheXMuYXNMaXN0KGNsYXNzcGF0aCkpOwotCQkKLQkJLy8gQWRkIHRoZSBKUkUgdG8gdGhlIGxpc3QuCi0JCUlDbGFzc3BhdGhFbnRyeSBjb24gPSBKYXZhQ29yZS5uZXdDb250YWluZXJFbnRyeShuZXcgUGF0aCgib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSIikpOwotCQlsaXN0LmFkZChjb24pOwotCQkKLQkJLy8gQWRkIHRoZSBBeGlzIGphcnMgdG8gdGhlIGxpc3QuCi0JCVN0cmluZ1tdIGphcnMgPSBuZXcgU3RyaW5nW10gewotCQkJCSJvcmcuYXBhY2hlLmF4aXMiLCJheGlzLmphciIsCi0JCQkJIm9yZy5hcGFjaGUuYXhpcyIsImNvbW1vbnMtZGlzY292ZXJ5LTAuMi5qYXIiLAotCQkJCSJvcmcuYXBhY2hlLmNvbW1vbnNfbG9nZ2luZyIsImNvbW1vbnMtbG9nZ2luZy0xLjAuNC5qYXIiLAotCQkJCSJvcmcuYXBhY2hlLmF4aXMiLCJqYXhycGMuamFyIiwKLQkJCQkib3JnLmFwYWNoZS5qYWthcnRhX2xvZzRqIiwibG9nNGotMS4yLjguamFyIiwKLQkJCQkib3JnLmFwYWNoZS5heGlzIiwic2Fhai5qYXIiLAotCQkJCSJvcmcuYXBhY2hlLmF4aXMiLCJ3c2RsNGotMS41LjEuamFyIgotCQl9OwotCQkKLQkJZm9yIChpbnQgaT0wOyBpPGphcnMubGVuZ3RoOyBpKz0yKQotCQl7Ci0JCQlJUGF0aCBqYXIgPSBnZXRBeGlzUGx1Z2luSmFyUGF0aChqYXJzW2ldLGphcnNbaSsxXSk7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkFkZGluZyBqYXIgWyIramFyLnRvU3RyaW5nKCkrIl0iKTsKLQkJCUlDbGFzc3BhdGhFbnRyeSBqYXJFbnRyeSA9IEphdmFDb3JlLm5ld0xpYnJhcnlFbnRyeShqYXIsbnVsbCxudWxsKTsKLQkJCWxpc3QuYWRkKGphckVudHJ5KTsKLQkJfQotCQkKLQkJLy8gVXBkYXRlIHRoZSBjdXJyZW50IGNsYXNzcGF0aCBmcm9tIHRoZSBsaXN0LgotCQlJQ2xhc3NwYXRoRW50cnlbXSBuZXdDbGFzc3BhdGggPSAoSUNsYXNzcGF0aEVudHJ5W10pbGlzdC50b0FycmF5KG5ldyBJQ2xhc3NwYXRoRW50cnlbMF0pOwotCQlqYXZhUHJvamVjdC5zZXRSYXdDbGFzc3BhdGgobmV3Q2xhc3NwYXRoLG51bGwpOwotCX0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBmaWxlc3lzdGVtIHBhdGggdG8gdGhlIG5hbWVkIGphciBpbiB0aGUgQXhpcyBwbHVnaW4uCi0JICogQHJldHVybiBUaGUgZmlsZXN5c3RlbSBwYXRoIHRvIHRoZSBuYW1lZCBqYXIgaW4gdGhlIEF4aXMgcGx1Z2luLgotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiBJZiB0aGUgcGF0aCBjb3VsZCBub3QgYmUgY29tcHV0ZWQuCi0JICovCi0JcHVibGljIHN0YXRpYyBJUGF0aCBnZXRBeGlzUGx1Z2luSmFyUGF0aCAoIFN0cmluZyBwbHVnaW5OYW1lLCBTdHJpbmcgamFyTmFtZSApCi0JdGhyb3dzIENvcmVFeGNlcHRpb24KLQl7Ci0JCUJ1bmRsZSBidW5kbGUgPSBQbGF0Zm9ybS5nZXRCdW5kbGUocGx1Z2luTmFtZSk7Ci0JCWlmIChidW5kbGUgPT0gbnVsbCkKLQkJewotCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24obmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLCIiLDAsIlVuYWJsZSB0byBsb2NhdGUgcGx1Z2luIG9yZy5hcGFjaGUuYXhpcyIsbnVsbCkpOwotCQl9Ci0JCVVSTCBheGlzVVJMID0gRmlsZUxvY2F0b3IuZmluZChidW5kbGUsbmV3IFBhdGgoImxpYi8iK2phck5hbWUpLG51bGwpOwotCQl0cnkKLQkJewotCQkJVVJMIGxvY2FsQXhpc1VSTCA9IEZpbGVMb2NhdG9yLnRvRmlsZVVSTChheGlzVVJMKTsKLQkJCUZpbGUgZmlsZSA9IG5ldyBGaWxlKG5ldyBVUkkoVVJJRW5jb2Rlci5lbmNvZGUobG9jYWxBeGlzVVJMLnRvU3RyaW5nKCksICJVVEYtOCIpKSk7Ci0JCQlyZXR1cm4gbmV3IFBhdGgoZmlsZS50b1N0cmluZygpKTsKLQkJfQotCQljYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiB1ZWUpIHsKLQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUiwiIiwwLCJVbmFibGUgdG8gZW5jb2RlIGphciBwYXRoIGZvciBwbHVnaW4gb3JnLmFwYWNoZS5heGlzIix1ZWUpKTsJCQkKLQkJfQotCQljYXRjaCAoSU9FeGNlcHRpb24gaW9lKQotCQl7Ci0JCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIiIsMCwiVW5hYmxlIHRvIGxvY2F0ZSBwbHVnaW4gb3JnLmFwYWNoZS5heGlzIixpb2UpKTsKLQkJfQotCQljYXRjaCAoVVJJU3ludGF4RXhjZXB0aW9uIHVzZSkKLQkJewotCQkJdGhyb3cgbmV3IENvcmVFeGNlcHRpb24obmV3IFN0YXR1cyhJU3RhdHVzLkVSUk9SLCIiLDAsIlVuYWJsZSB0byBsb2NhdGUgcGx1Z2luIG9yZy5hcGFjaGUuYXhpcyIsdXNlKSk7Ci0JCX0KLQl9Ci0JCi0JLyoqCi0JICogQ29waWVzIGV4YW1wbGVzIHRvIHRoZSBnaXZlbiBKYXZhIHByb2plY3QuCi0JICogQHBhcmFtIGphdmFQcm9qZWN0IFRoZSBwcm9qZWN0IHRvIGNvcHkgdGhlIGV4YW1wbGVzIHRvLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgdm9pZCBjb3B5RXhhbXBsZXNUb0phdmFQcm9qZWN0ICggSUphdmFQcm9qZWN0IGphdmFQcm9qZWN0LCBGaWx0ZXIgZmlsdGVyICkKLQl0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJSVByb2plY3QgcHJvamVjdCA9IGphdmFQcm9qZWN0LmdldFByb2plY3QoKTsKLQkJU3RyaW5nIHNvdXJjZVBhdGggPSBwcm9qZWN0LmdldE5hbWUoKTsKLQkJY29weUV4YW1wbGUoIm9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmNvcmUudGVzdHMiLCJkYXRhL2F4aXNTb3VyY2UxIixzb3VyY2VQYXRoLGZpbHRlcik7Ci0JCWNvcHlFeGFtcGxlKCJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpcy5jb25zdW1wdGlvbi5jb3JlLnRlc3RzIiwiZGF0YS9heGlzU291cmNlMiIsc291cmNlUGF0aCxmaWx0ZXIpOwotCQlwcm9qZWN0LmJ1aWxkKEluY3JlbWVudGFsUHJvamVjdEJ1aWxkZXIuRlVMTF9CVUlMRCxudWxsKTsKLQkJdHJ5Ci0JCXsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiV2FpdGluZyBmb3IgYnVpbGQgdG8gY29tcGxldGUiKTsKLQkJCVBsYXRmb3JtLmdldEpvYk1hbmFnZXIoKS5qb2luKFJlc291cmNlc1BsdWdpbi5GQU1JTFlfQVVUT19CVUlMRCxudWxsKTsKLQkJfQotCQljYXRjaCAoVGhyb3dhYmxlIHQpCi0JCXsKLQkJCS8vRG8gbm90aGluZy4KLQkJfQotCX0KLQkKLQkvKioKLQkgKiBSZWN1cnNpdmVseSBjb3BpZXMgZmlsZXMgZnJvbSBhIHBsdWdpbiB0byB0aGUgd29ya3NwYWNlLgotCSAqIEBwYXJhbSBzb3VyY2VQbHVnaW4gVGhlIHBsdWdpbiB0byBjb3B5IGZyb20uCi0JICogQHBhcmFtIHNvdXJjZVJvb3QgVGhlIHBsdWdpbi1yZWxhdGVkIHBhdGggdG8gY29weSBmcm9tLgotCSAqIEBwYXJhbSB0YXJnZXRXb3Jrc3BhY2VQYXRoIFRoZSB3b3Jrc3BhY2UgcGF0aCB0byBjb3B5IHRvLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgdm9pZCBjb3B5RXhhbXBsZSAoIFN0cmluZyBzb3VyY2VQbHVnaW4sIFN0cmluZyBzb3VyY2VSb290LCBTdHJpbmcgdGFyZ2V0V29ya3NwYWNlUGF0aCwgRmlsdGVyIGZpbHRlciApCi0JdGhyb3dzIENvcmVFeGNlcHRpb24KLQl7Ci0JCUJ1bmRsZSBidW5kbGUgPSBQbGF0Zm9ybS5nZXRCdW5kbGUoc291cmNlUGx1Z2luKTsKLQkJaWYgKGJ1bmRsZSA9PSBudWxsKQotCQl7Ci0JCQl0aHJvdyBuZXcgQ29yZUV4Y2VwdGlvbihuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIiIsMCwiVW5hYmxlIHRvIGxvY2F0ZSBwbHVnaW4gIitzb3VyY2VQbHVnaW4sbnVsbCkpOwotCQl9Ci0JCUVudW1lcmF0aW9uIGUgPSBidW5kbGUuZ2V0RW50cnlQYXRocyhzb3VyY2VSb290KTsKLQkJd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0JCXsKLQkJCVN0cmluZyBwYXRoID0gZS5uZXh0RWxlbWVudCgpLnRvU3RyaW5nKCk7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkJ1bmRsZSBwYXRoID0gWyIrcGF0aCsiXSIpOwotCQkJY29weUV4YW1wbGVGaWxlKGJ1bmRsZSxwYXRoLG5ldyBQYXRoKHNvdXJjZVJvb3QpLnNlZ21lbnRDb3VudCgpLHRhcmdldFdvcmtzcGFjZVBhdGgsZmlsdGVyKTsKLQkJfQotCX0KLQkKLQlwdWJsaWMgc3RhdGljIHZvaWQgY29weUV4YW1wbGVGaWxlICggQnVuZGxlIGJ1bmRsZSwgU3RyaW5nIHBhdGgsIGludCBvZmZzZXQsIFN0cmluZyB0YXJnZXRXb3Jrc3BhY2VQYXRoLCBGaWx0ZXIgZmlsdGVyICkKLQl0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCXsKLQkJSVBhdGggcmVkdWNlZFBhdGggPSBuZXcgUGF0aChwYXRoKS5yZW1vdmVGaXJzdFNlZ21lbnRzKG9mZnNldCk7Ci0JCUlQYXRoIHRhcmdldFBhdGggPSBuZXcgUGF0aCh0YXJnZXRXb3Jrc3BhY2VQYXRoKS5hcHBlbmQocmVkdWNlZFBhdGgpOwotCQlpZiAocGF0aC5lbmRzV2l0aCgiLyIpKQotCQl7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkZvbGRlciA9IFsiK3BhdGgrIl0gVGFyZ2V0ID0gWyIrdGFyZ2V0UGF0aCsiXSIpOwotCQkJSUZvbGRlciBmb2xkZXIgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldEZvbGRlcih0YXJnZXRQYXRoKTsKLQkJCWlmICghZm9sZGVyLmV4aXN0cygpKQotCQkJewotCQkJCWZvbGRlci5jcmVhdGUodHJ1ZSx0cnVlLG51bGwpOwotCQkJfQotCQkJRW51bWVyYXRpb24gZSA9IGJ1bmRsZS5nZXRFbnRyeVBhdGhzKHBhdGgpOwotCQkJd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpCi0JCQl7Ci0JCQkJU3RyaW5nIHN1YnBhdGggPSBlLm5leHRFbGVtZW50KCkudG9TdHJpbmcoKTsKLQkJCQljb3B5RXhhbXBsZUZpbGUoYnVuZGxlLHN1YnBhdGgsb2Zmc2V0LHRhcmdldFdvcmtzcGFjZVBhdGgsZmlsdGVyKTsKLQkJCX0KLQkJfQotCQllbHNlCi0JCXsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiRmlsZSA9IFsiK3BhdGgrIl0gVGFyZ2V0ID0gWyIrdGFyZ2V0UGF0aCsiXSIpOwotCQkJaWYgKGZpbHRlci5hY2NlcHQocGF0aCkpCi0JCQl7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJDb3BpZWQgWyIrcGF0aCsiXSIpOwotCQkJCVVSTCB1cmwgPSBidW5kbGUuZ2V0RW50cnkocGF0aCk7Ci0JCQkJY29weUZpbGUodXJsLHRhcmdldFBhdGgpOwotCQkJfQotCQl9Ci0JfQotCQotCXB1YmxpYyBzdGF0aWMgdm9pZCBjb3B5RmlsZSAoIFVSTCB1cmwsIElQYXRoIHRhcmdldFBhdGggKQotCXRocm93cyBDb3JlRXhjZXB0aW9uCi0JewotCQlJRmlsZSBmaWxlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRGaWxlKHRhcmdldFBhdGgpOwotCQl0cnkKLQkJewotCQkJSW5wdXRTdHJlYW0gc3RyZWFtID0gdXJsLm9wZW5TdHJlYW0oKTsKLQkJCWZpbGUuY3JlYXRlKHN0cmVhbSx0cnVlLG51bGwpOwotCQl9Ci0JCWNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpCi0JCXsKLQkJCXRocm93IG5ldyBDb3JlRXhjZXB0aW9uKG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUiwiIiwwLCJJT0V4Y2VwdGlvbiBjb3B5aW5nIGZpbGUiLGlvZSkpOwotCQl9Ci0JfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLy5jbGFzc3BhdGggYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA0ZTg2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSL29yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZS9KMlNFLTEuNSIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPgotPC9jbGFzc3BhdGg+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvLmN2c2lnbm9yZSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzQ4MTA5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1iaW4KLWJ1aWxkLnhtbAotdGVtcC5mb2xkZXIKLWF4aXNQZXJmbXNyLmphcgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLy5wcm9qZWN0IGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODhlMWE4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI2ZThlOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotI1RodSBNYXkgMzEgMTQ6Mjg6MDUgRURUIDIwMDcKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1pbnN0YW5jZS9vcmcuZWNsaXBzZS5jb3JlLm5ldC9vcmcuZWNsaXBzZS5jb3JlLm5ldC5oYXNNaWdyYXRlZD10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuNQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hdXRvYm94aW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbXB0eVN0YXRlbWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmllbGRIaWRpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsUGFyYW1ldGVyQm91bmQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbGx5QmxvY2tOb3RDb21wbGV0aW5nTm9ybWFsbHk9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5mb3JiaWRkZW5SZWZlcmVuY2U9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaGlkZGVuQ2F0Y2hCbG9jaz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGF0aWJsZU5vbkluaGVyaXRlZEludGVyZmFjZU1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGxldGVFbnVtU3dpdGNoPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5pbmRpcmVjdFN0YXRpY0FjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubG9jYWxWYXJpYWJsZUhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWV0aG9kV2l0aENvbnN0cnVjdG9yTmFtZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdEZXByZWNhdGVkQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ092ZXJyaWRlQW5ub3RhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ1NlcmlhbFZlcnNpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0VmZmVjdEFzc2lnbm1lbnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0ltcGxpY2l0U3RyaW5nQ29udmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vbkV4dGVybmFsaXplZFN0cmluZ0xpdGVyYWw9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm92ZXJyaWRpbmdQYWNrYWdlRGVmYXVsdE1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnBvc3NpYmxlQWNjaWRlbnRhbEJvb2xlYW5Bc3NpZ25tZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zcGVjaWFsUGFyYW1ldGVySGlkaW5nRmllbGQ9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3RhdGljQWNjZXNzUmVjZWl2ZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdXBwcmVzc1dhcm5pbmdzPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3ludGhldGljQWNjZXNzRW11bGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS50eXBlUGFyYW1ldGVySGlkaW5nPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5jaGVja2VkVHlwZU9wZXJhdGlvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuZG9jdW1lbnRlZEVtcHR5QmxvY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVuaGFuZGxlZFdhcm5pbmdUb2tlbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVubmVjZXNzYXJ5RWxzZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlUeXBlQ2hlY2s9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVucXVhbGlmaWVkRmllbGRBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbldoZW5PdmVycmlkaW5nPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZEltcG9ydD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZExvY2FsPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuSW1wbGVtZW50aW5nQWJzdHJhY3Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbk92ZXJyaWRpbmdDb25jcmV0ZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQcml2YXRlTWVtYmVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udmFyYXJnc0FyZ3VtZW50TmVlZENhc3Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ2M2NkOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSNNb24gSmFuIDMwIDEwOjQwOjU0IEVTVCAyMDA2Ci1jb21waWxlcnMucC5kZXByZWNhdGVkPTEKLWNvbXBpbGVycy5wLm5vLXJlcXVpcmVkLWF0dD0wCi1jb21waWxlcnMucC5ub3QtZXh0ZXJuYWxpemVkLWF0dD0xCi1jb21waWxlcnMucC51bmtub3duLWF0dHJpYnV0ZT0wCi1jb21waWxlcnMucC51bmtub3duLWNsYXNzPTAKLWNvbXBpbGVycy5wLnVua25vd24tZWxlbWVudD0xCi1jb21waWxlcnMucC51bmtub3duLXJlc291cmNlPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtZXgtcG9pbnRzPTAKLWNvbXBpbGVycy5wLnVucmVzb2x2ZWQtaW1wb3J0PTAKLWNvbXBpbGVycy51c2UtcHJvamVjdD10cnVlCi1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL01FVEEtSU5GL01BTklGRVNULk1GIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzZjZTNiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVQTFVHSU5fTkFNRQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlOyBzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuMjAzLnF1YWxpZmllcgotQnVuZGxlLUNsYXNzUGF0aDogcGVyZnRlc3RzLmphcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLnBsdWdpbi5QZXJmb3JtYW5jZVBsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MC5wZXJmbXNyLAotIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZSwKLSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UucGx1Z2luLAotIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS51dGlsCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UuanN0LndzLAotIG9yZy5lY2xpcHNlLmpzdC5qMmVlLmNvcmUsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLAotIG9yZy5lY2xpcHNlLnVpLAotIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZSwKLSBvcmcuanVuaXQ7YnVuZGxlLXZlcnNpb249IlszLjguMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cywKLSBvcmcuZWNsaXBzZS5qZW0udXRpbCwKLSBvcmcuZWNsaXBzZS50ZXN0LnBlcmZvcm1hbmNlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi51aSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24ubW9kdWxlY29yZSwKLSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUsCi0gb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZnJhbWV3b3JrcywKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9hYm91dC5odG1sIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9idWlsZC5wcm9wZXJ0aWVzIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NDg0ZGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1iaW4uaW5jbHVkZXMgPSBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICB0ZXN0LnhtbCxcCi0gICAgICAgICAgICAgICBwZXJmdGVzdHMuamFyLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIGJpbi8KLWphcnMuY29tcGlsZS5vcmRlciA9IHBlcmZ0ZXN0cy5qYXIKLXNvdXJjZS5wZXJmdGVzdHMuamFyID0gc3JjLwotb3V0cHV0LnBlcmZ0ZXN0cy5qYXIgPSBiaW4vCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvcGx1Z2luLnByb3BlcnRpZXMgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5ZDg5YmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDYwNDI0ICAgMTM4MDYwIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPUpTVCBXZWIgU2VydmljZXMgUGVyZm9ybWFuY2UgUGx1Zy1pbgotUExVR0lOX1BST1ZJREVSPUVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2Uvc3JjL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy9heGlzL3RvbWNhdC92NTAvcGVyZm1zci9QZXJmbXNyQlVKYXZhQXhpc1RDNTAuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL2F4aXMvdG9tY2F0L3Y1MC9wZXJmbXNyL1BlcmZtc3JCVUphdmFBeGlzVEM1MC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjRjMWJmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL2F4aXMvdG9tY2F0L3Y1MC9wZXJmbXNyL1BlcmZtc3JCVUphdmFBeGlzVEM1MC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDUwMiAgMTg1MjA4IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSAKLSAqIDIwMDcwNTA5ICAxODA1Njcgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA3MDcwNSAgMTk1NTUzIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwODAzMTMgIDEyNjc3NCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMuYXhpcy50b21jYXQudjUwLnBlcmZtc3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMuYXhpcy50b21jYXQudjUwLldTV2l6YXJkVG9tY2F0NTBUZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS51dGlsLlBlcmZvcm1hbmNlSlVuaXRVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudW5pdHRlc3QuV1NKVW5pdENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudXRpbC5KVW5pdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsLlNjZW5hcmlvQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnRlc3QucGVyZm9ybWFuY2UuUGVyZm9ybWFuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZU1ldGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyOwotCi0vKioKLSAqIEJvdHRvbSB1cCBwZXJmb3JtYW5jZSBzY2VuYXJpbyB3aXRoIEF4aXMgYW5kIFRvbWNhdCB2NS4wCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBQZXJmbXNyQlVKYXZhQXhpc1RDNTAgZXh0ZW5kcyBXU1dpemFyZFRvbWNhdDUwVGVzdCB7Ci0JLy8gQ29uc3RhbnRzCi0gICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgV1NfUlVOVElNRUlEX0FYSVMgPSAgV1NKVW5pdENvbnN0YW50cy5XU19SVU5USU1FSURfQVhJUzsgCi0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgUFJPSkVDVF9OQU1FID0gV1NKVW5pdENvbnN0YW50cy5CVV9QUk9KRUNUX05BTUU7Ci0gICAgCi0JcHJpdmF0ZSBJRmlsZSBzb3VyY2VGaWxlXzsKLQkKLSAgLyoqCi0gICAqIFNldHMgdXAgdGhlIGlucHV0IGRhdGE7Ci0gICAqIC0gY3JlYXRlIHByb2plY3QocyksCi0gICAqIC0gY29weSByZXNvdXJjZXMgdG8gd29yayBzcGFjZSAKLSAgICovCi0JcHJvdGVjdGVkIHZvaWQgaW5zdGFsbElucHV0RGF0YSgpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JICAgIAotCQlJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KFBST0pFQ1RfTkFNRSk7Ci0gICAgICAgIElQYXRoIGRlc3RQYXRoID0gUmVzb3VyY2VVdGlscy5nZXRKYXZhU291cmNlTG9jYXRpb24od2ViUHJvamVjdCk7Ci0gICAgICAgIElGb2xkZXIgZm9sZGVyID0gKElGb2xkZXIpUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UoZGVzdFBhdGgpOwkJCi0JCUpVbml0VXRpbHMuY29weVRlc3REYXRhKCJCVUphdmEvc3JjIixmb2xkZXIsZW52XywgbnVsbCk7Ci0JCXNvdXJjZUZpbGVfID0gZm9sZGVyLmdldEZpbGUobmV3IFBhdGgoImZvby9FY2hvLmphdmEiKSk7Ci0JCS8vIEVuc3VyZSB0aGF0IEVjaG8uY2xhc3MgaXMgYnVpbHQgaW46Ci0JCS8vIDxXZWIgUHJvamVjdD4vV2ViQ29udGVudC9XRUItSU5GL2NsYXNzZXMvZm9vL0VjaG8uY2xhc3MKLQkJSlVuaXRVdGlscy5kaXNhYmxlVmFsaWRhdGlvbih3ZWJQcm9qZWN0KTsKLQkJSlVuaXRVdGlscy5zeW5jQnVpbGRQcm9qZWN0KHdlYlByb2plY3QsZW52XywgbnVsbCk7Ci0JCQotCX0KLQkKLSAgICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGVQcm9qZWN0cygpIHRocm93cyBFeGNlcHRpb257Ci0gICAgICAgIElQcm9qZWN0IHdlYlByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoUFJPSkVDVF9OQU1FKTsKLSAgICAgICAgaWYgKHdlYlByb2plY3Q9PW51bGwgfHwgIXdlYlByb2plY3QuZXhpc3RzKCkpewotICAgICAgICAgIEpVbml0VXRpbHMuY3JlYXRlV2ViTW9kdWxlKFBST0pFQ1RfTkFNRSwgUFJPSkVDVF9OQU1FLCBzZXJ2ZXJfLmdldElkKCksIFNFUlZFUlRZUEVJRF9UQzUwLCAiMTQiLCBlbnZfLCBuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gIC8qKgotICAgKiBTZXQgdGhlIHBlcnNpc3RlbnQgc2VydmVyIHJ1bnRpbWUgY29udGV4dCBwcmVmZXJlbmNlcwotICAgKi8gIAotCXByb3RlY3RlZCB2b2lkIGluaXRKMkVFV1NSdW50aW1lU2VydmVyRGVmYXVsdHMoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQkvLyBTZXQgZGVmYXVsdCBwcmVmZXJlbmNlcyBmb3IgQXhpcyBhbmQgVG9tY2F0IDUuMAotCQlKVW5pdFV0aWxzLnNldFdTUnVudGltZVNlcnZlcihXU19SVU5USU1FSURfQVhJUywgU0VSVkVSVFlQRUlEX1RDNTApOwkKLQkJSlVuaXRVdGlscy5zZXRTZXJ2aWNlU2NlbmFyaW9EZWZhdWx0KCk7Ci0JfQotCQotICAvKioKLSAgICogU2V0IHRoZSBpbml0aWFsIHNlbGVjdGlvbgotICAgKi8KLQlwcm90ZWN0ZWQgdm9pZCBpbml0SW5pdGlhbFNlbGVjdGlvbigpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCWluaXRpYWxTZWxlY3Rpb25fID0gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oc291cmNlRmlsZV8pOwotCX0KLQkKLSAgLyoqCi0gICAqIExhdW5jaGVzIHRoZSBwb3AtdXAgY29tbWFuZCB0byBpbml0aWF0ZSB0aGUgc2NlbmFyaW8KLSAgICogQHRocm93cyBFeGNlcHRpb24KLSAgICovICAKLQlwdWJsaWMgdm9pZCB0ZXN0QlVKYXZhQXhpc1RDNTAoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCSAgCUlTdGF0dXNbXSBzdGF0dXM7Ci0JICAgIElQcm9qZWN0IHdlYlByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoUFJPSkVDVF9OQU1FKTsKLQkgICAgSlVuaXRVdGlscy5kaXNhYmxlV1NJRGlhbG9nKHdlYlByb2plY3QpOwotCQlKVW5pdFV0aWxzLmVuYWJsZU92ZXJ3cml0ZSh0cnVlKTsKLQkgICAgSlVuaXRVdGlscy5zZXRSdW50aW1lUHJlZmVyZW5jZSgib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24uYXhpc1dlYlNlcnZpY2VSVCIpOwotCi0JICAgIAotCSAgICBQZXJmb3JtYW5jZSBwZXJmPSBQZXJmb3JtYW5jZS5nZXREZWZhdWx0KCk7Ci0JICAgIFBlcmZvcm1hbmNlTWV0ZXIgcGVyZm9ybWFuY2VNZXRlcj0gcGVyZi5jcmVhdGVQZXJmb3JtYW5jZU1ldGVyKHBlcmYuZ2V0RGVmYXVsdFNjZW5hcmlvSWQodGhpcykpOwkgICAgCi0JICAgIHRyeSB7Ci0gICAgCi0JICAgICAgcGVyZm9ybWFuY2VNZXRlci5zdGFydCgpOwotCSAgICAgIHN0YXR1cyA9IFBlcmZvcm1hbmNlSlVuaXRVdGlscy5sYXVuY2hDcmVhdGlvbldpemFyZChTY2VuYXJpb0NvbnN0YW50cy5XSVpBUkRJRF9CT1RUT01fVVAsU2NlbmFyaW9Db25zdGFudHMuT0JKRUNUX0NMQVNTX0lEX0lGSUxFLGluaXRpYWxTZWxlY3Rpb25fKTsKLQkgICAgICBwZXJmb3JtYW5jZU1ldGVyLnN0b3AoKTsKLQotCSAgICAgIHBlcmZvcm1hbmNlTWV0ZXIuY29tbWl0KCk7Ci0JICAgICAgcGVyZi5hc3NlcnRQZXJmb3JtYW5jZShwZXJmb3JtYW5jZU1ldGVyKTsKLQkgICAgfQotCSAgICBmaW5hbGx5IHsKLQkgICAgCWlmIChwZXJmb3JtYW5jZU1ldGVyPT1udWxsKQotCSAgICAJCXBlcmZvcm1hbmNlTWV0ZXIuZGlzcG9zZSgpOwotCSAJfQotCQkKLQkgICAgdmVyaWZ5T3V0cHV0KHN0YXR1cyk7Ci0JCQotCX0KLQkKLSAgLyoqCi0gICAqIFZlcmlmeSB0aGUgc2NlbmFyaW8gY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgotICAgKi8KLQlwcml2YXRlIGZpbmFsIHZvaWQgdmVyaWZ5T3V0cHV0KElTdGF0dXNbXSBzdGF0dXMpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0gICAgICAgIElQcm9qZWN0IHdlYlByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoUFJPSkVDVF9OQU1FKTsgICAgCi0JCUlGb2xkZXIgd2ViQ29udGVudEZvbGRlciA9IChJRm9sZGVyKUoyRUVVdGlscy5nZXRXZWJDb250ZW50Q29udGFpbmVyKHdlYlByb2plY3QpOwotICAgIAotICAgICAgICBJRm9sZGVyIHdzZGxGb2xkZXIgPSB3ZWJDb250ZW50Rm9sZGVyLmdldEZvbGRlcigid3NkbCIpOwotCQlhc3NlcnRUcnVlKHdzZGxGb2xkZXIuZXhpc3RzKCkpOwotCQlhc3NlcnRUcnVlKHdzZGxGb2xkZXIubWVtYmVycygpLmxlbmd0aCA+IDApOwotCQlhc3NlcnRUcnVlKHdlYkNvbnRlbnRGb2xkZXIuZ2V0Rm9sZGVyKCJ3c2RsIikubWVtYmVycygpLmxlbmd0aCA+IDApOwotICAgIAotCQlBY2N1bXVsYXRlU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyID0gbmV3IEFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyKHN0YXR1cyk7Ci0JCUlTdGF0dXNbXSBzID0gc3RhdHVzSGFuZGxlci5nZXRFcnJvclJlcG9ydHMoKTsKLQkJLy9zaG93IGVycm9ycwotCQlpZiAocy5sZW5ndGggPiAwKXsKLQkJCWZvciAoaW50IGk9MDtpPHMubGVuZ3RoO2krKyl7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJCVUphdmEgRXJyb3IgbWVzc2FnZSBmb3IgcmVwb3J0ICMiK2krIjogIitzW2ldLmdldE1lc3NhZ2UoKSk7Ci0JCQl9Ci0JCX0KLQkJYXNzZXJ0VHJ1ZShzLmxlbmd0aCA9PSAwKTsKLQl9Ci0JCi0gIC8qKgotICAgKiBDbGVhciB3b3Jrc3BhY2UgaWYgbmVjZXNzYXJ5Ci0gICAqLwotCXByb3RlY3RlZCB2b2lkIGRlbGV0ZUlucHV0RGF0YSgpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCS8vIFJlbW92ZSB0aGUgRUFSIGZyb20gdGhlIHNlcnZlci4KLQkJSVByb2plY3Qgd2ViUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChQUk9KRUNUX05BTUUpOwotCQkvL0pVbml0VXRpbHMucmVtb3ZlTW9kdWxlRnJvbVNlcnZlcihzZXJ2ZXJfLHdlYlByb2plY3QsZW52Xyk7Ci0JCQotCQkvLyBEZWxldGUgdGhlIFdlYiBwcm9qZWN0LgotCQl3ZWJQcm9qZWN0LmRlbGV0ZSh0cnVlLHRydWUsIG51bGwpOwotICAgICAgICBhc3NlcnRGYWxzZSh3ZWJQcm9qZWN0LmV4aXN0cygpKTsKLQkJCi0JfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL2F4aXMvdG9tY2F0L3Y1MC9wZXJmbXNyL1BlcmZtc3JDbGllbnRBeGlzVEM1MC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvYXhpcy90b21jYXQvdjUwL3BlcmZtc3IvUGVyZm1zckNsaWVudEF4aXNUQzUwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NDQ1ZWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvYXhpcy90b21jYXQvdjUwL3BlcmZtc3IvUGVyZm1zckNsaWVudEF4aXNUQzUwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDUwMiAgMTg1MjA4IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSAgICAgIAotICogMjAwNzA1MDkgIDE4MDU2NyBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDcwNzA1ICAxOTU1NTMgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA4MDMxMyAgMTI2Nzc0IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAucGVyZm1zcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5OdWxsUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAuV1NXaXphcmRUb21jYXQ1MFRlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLnV0aWwuUGVyZm9ybWFuY2VKVW5pdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51bml0dGVzdC5XU0pVbml0Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsLkpVbml0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnV0aWwuU2NlbmFyaW9Db25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS50ZXN0LnBlcmZvcm1hbmNlLlBlcmZvcm1hbmNlTWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXI7Ci0KLS8qKgotICogQ2xpZW50IHBlcmZvcm1hbmNlIHNjZW5hcmlvIHdpdGggQXhpcyBhbmQgVG9tY2F0IHY1LjAKLSAqLwotcHVibGljIGNsYXNzIFBlcmZtc3JDbGllbnRBeGlzVEM1MCBleHRlbmRzIFdTV2l6YXJkVG9tY2F0NTBUZXN0IHsKLQotCXByaXZhdGUgZmluYWwgU3RyaW5nIFdTX1JVTlRJTUVJRF9BWElTID0gV1NKVW5pdENvbnN0YW50cy5XU19SVU5USU1FSURfQVhJUzsKLSAgCi0JcHJpdmF0ZSBmaW5hbCBTdHJpbmcgQ0xJRU5UX1BST0pFQ1RfTkFNRSA9IFdTSlVuaXRDb25zdGFudHMuQ0xJRU5UX1BST0pFQ1RfTkFNRTsKLQkKLQlwcml2YXRlIElGaWxlIHNvdXJjZUZpbGVfOwotCi0gICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlUHJvamVjdHMoKSB0aHJvd3MgRXhjZXB0aW9uewotICAgICAgICBJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KENMSUVOVF9QUk9KRUNUX05BTUUpOwotICAgICAgICBpZiAoIXdlYlByb2plY3QuZXhpc3RzKCkpewotICAgICAgICAgIEpVbml0VXRpbHMuY3JlYXRlV2ViTW9kdWxlKENMSUVOVF9QUk9KRUNUX05BTUUsIENMSUVOVF9QUk9KRUNUX05BTUUsIHNlcnZlcl8uZ2V0SWQoKSxTRVJWRVJUWVBFSURfVEM1MCwgIjE0IiwgZW52XywgbmV3IE51bGxQcm9ncmVzc01vbml0b3IoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgIAotCS8qKgotICAgKiBTZXRzIHVwIHRoZSBpbnB1dCBkYXRhOwotICAgKiAtIGNyZWF0ZSBwcm9qZWN0KHMpLAotICAgKiAtIGNvcHkgcmVzb3VyY2VzIHRvIHdvcmtzcGFjZSAKLQkgKi8KLQlwcm90ZWN0ZWQgdm9pZCBpbnN0YWxsSW5wdXREYXRhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCQotCQotCQlJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KENMSUVOVF9QUk9KRUNUX05BTUUpOwotICAgICAgICBJRm9sZGVyIGRlc3RGb2xkZXIgPSAoSUZvbGRlcilKMkVFVXRpbHMuZ2V0V2ViQ29udGVudENvbnRhaW5lcih3ZWJQcm9qZWN0KTsKLSAgICAgICAgSlVuaXRVdGlscy5jb3B5VGVzdERhdGEoIlRESmF2YSIsZGVzdEZvbGRlcixlbnZfLCBudWxsKTsKLQkJc291cmNlRmlsZV8gPSBkZXN0Rm9sZGVyLmdldEZpbGUobmV3IFBhdGgoIkVjaG8ud3NkbCIpKTsJCQotCi0JCUpVbml0VXRpbHMuZGlzYWJsZVZhbGlkYXRpb24od2ViUHJvamVjdCk7Ci0JCUpVbml0VXRpbHMuc3luY0J1aWxkUHJvamVjdCh3ZWJQcm9qZWN0LGVudl8sIG51bGwpOwotCQkKLQl9Ci0KLSAgLyoqCi0gICAqIFNldCB0aGUgcGVyc2lzdGVudCBzZXJ2ZXIgcnVudGltZSBjb250ZXh0IHByZWZlcmVuY2VzCi0gICAqLwotCXByb3RlY3RlZCB2b2lkIGluaXRKMkVFV1NSdW50aW1lU2VydmVyRGVmYXVsdHMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgLy8gU2V0IGRlZmF1bHQgcHJlZmVyZW5jZXMgZm9yIEF4aXMgYW5kIFRvbWNhdCA1LjAgICAgCi0JCUpVbml0VXRpbHMuc2V0V1NSdW50aW1lU2VydmVyKFdTX1JVTlRJTUVJRF9BWElTLCBTRVJWRVJUWVBFSURfVEM1MCk7Ci0JCUpVbml0VXRpbHMuc2V0Q2xpZW50U2NlbmFyaW9EZWZhdWx0KCk7Ci0JfQotCi0gIC8qKgotICAgKiBTZXQgdGhlIGluaXRpYWwgc2VsZWN0aW9uCi0gICAqLwotCXByb3RlY3RlZCB2b2lkIGluaXRJbml0aWFsU2VsZWN0aW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCWluaXRpYWxTZWxlY3Rpb25fID0gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oc291cmNlRmlsZV8pOwotCX0KLQotICAvKioKLSAgICogTGF1bmNoZXMgdGhlIHBvcC11cCBjb21tYW5kIHRvIGluaXRpYXRlIHRoZSBzY2VuYXJpbwotICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgotICAgKi8KLQlwdWJsaWMgdm9pZCB0ZXN0Q2xpZW50QXhpc1RDNTAoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewkKLQkgIAlJU3RhdHVzW10gc3RhdHVzOwotCSAgCQotCQlKVW5pdFV0aWxzLmVuYWJsZVByb3h5R2VuZXJhdGlvbih0cnVlKTsKLQkJSlVuaXRVdGlscy5lbmFibGVPdmVyd3JpdGUodHJ1ZSk7Ci0JCUpVbml0VXRpbHMuc2V0UnVudGltZVByZWZlcmVuY2UoIm9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLmF4aXNXZWJTZXJ2aWNlUlQiKTsKLQkKLQkJUGVyZm9ybWFuY2UgcGVyZj0gUGVyZm9ybWFuY2UuZ2V0RGVmYXVsdCgpOwotCQlQZXJmb3JtYW5jZU1ldGVyIHBlcmZvcm1hbmNlTWV0ZXI9IHBlcmYuY3JlYXRlUGVyZm9ybWFuY2VNZXRlcihwZXJmLmdldERlZmF1bHRTY2VuYXJpb0lkKHRoaXMpKTsJICAgIAotCSAgICB0cnkgewotICAgIAotCSAgICAgIHBlcmZvcm1hbmNlTWV0ZXIuc3RhcnQoKTsKLQkgICAgICBzdGF0dXMgPSBQZXJmb3JtYW5jZUpVbml0VXRpbHMubGF1bmNoQ3JlYXRpb25XaXphcmQoU2NlbmFyaW9Db25zdGFudHMuV0laQVJESURfQ0xJRU5ULFNjZW5hcmlvQ29uc3RhbnRzLk9CSkVDVF9DTEFTU19JRF9JRklMRSxpbml0aWFsU2VsZWN0aW9uXyk7Ci0JICAgICAgcGVyZm9ybWFuY2VNZXRlci5zdG9wKCk7Ci0JICAgICAgcGVyZm9ybWFuY2VNZXRlci5jb21taXQoKTsKLQkgICAgICBwZXJmLmFzc2VydFBlcmZvcm1hbmNlKHBlcmZvcm1hbmNlTWV0ZXIpOwotCSAgICB9Ci0JICAgIGZpbmFsbHkgewotCSAgICAJaWYgKHBlcmZvcm1hbmNlTWV0ZXI9PW51bGwpCi0JICAgIAkJcGVyZm9ybWFuY2VNZXRlci5kaXNwb3NlKCk7Ci0JIAl9Ci0JICAgIAotCSAgICB2ZXJpZnlPdXRwdXQoc3RhdHVzKTsKLQotCi0JfQotCQotICAvKioKLSAgICogVmVyaWZ5IHRoZSBzY2VuYXJpbyBjb21wbGV0ZWQgc3VjY2VzZnVsbHkKLSAgICogQHRocm93cyBFeGNlcHRpb24KLSAgICovCi0JcHJpdmF0ZSBmaW5hbCB2b2lkIHZlcmlmeU91dHB1dChJU3RhdHVzW10gc3RhdHVzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgSVByb2plY3Qgd2ViUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChDTElFTlRfUFJPSkVDVF9OQU1FKTsKLSAgICAKLSAgICAgICAgSVBhdGggZGVzdFBhdGggPSBSZXNvdXJjZVV0aWxzLmdldEphdmFTb3VyY2VMb2NhdGlvbih3ZWJQcm9qZWN0KTsKLSAgICAgICAgSUZvbGRlciBzcmNGb2xkZXIgPSAoSUZvbGRlcilSZXNvdXJjZVV0aWxzLmZpbmRSZXNvdXJjZShkZXN0UGF0aCk7Ci0gICAgCi0JCS8vSUZvbGRlciBzcmNGb2xkZXIgPSBKVW5pdFV0aWxzLmdldFNvdXJjZUZvbGRlckZvcldlYlByb2plY3QoQ0xJRU5UX1BST0pFQ1RfTkFNRSk7Ci0JCUlGb2xkZXIgZm9sZGVyID0gc3JjRm9sZGVyLmdldEZvbGRlcigiZm9vIik7Ci0JCWFzc2VydFRydWUoZm9sZGVyLmV4aXN0cygpKTsKLQkJYXNzZXJ0VHJ1ZShmb2xkZXIubWVtYmVycygpLmxlbmd0aCA+IDApOwotCQkKLQkJQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXIgc3RhdHVzSGFuZGxlciA9IG5ldyBBY2N1bXVsYXRlU3RhdHVzSGFuZGxlcihzdGF0dXMpOwotCQlJU3RhdHVzW10gcyA9IHN0YXR1c0hhbmRsZXIuZ2V0RXJyb3JSZXBvcnRzKCk7Ci0JCS8vCi0JCWlmIChzLmxlbmd0aCA+IDApewotCQkJZm9yIChpbnQgaT0wO2k8cy5sZW5ndGg7aSsrKXsKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9yIG1lc3NhZ2UgZm9yIHJlcG9ydCAjIitpKyI6ICIrc1tpXS5nZXRNZXNzYWdlKCkpOwotCQkJfQotCQl9Ci0JCWFzc2VydFRydWUocy5sZW5ndGggPT0gMCk7ICAgICAgIAotCi0JfQotCQotICAvKioKLSAgICogUmVtb3ZlIHdvcmtzcGFjZSBpZiBuZWNlc3NhcnkKLSAgICovCi0JcHJvdGVjdGVkIHZvaWQgZGVsZXRlSW5wdXREYXRhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0KLQkJLy8gRGVsZXRlIHRoZSBXZWIgcHJvamVjdC4KLQkJSVByb2plY3Qgd2ViUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChDTElFTlRfUFJPSkVDVF9OQU1FKTsKLQkJd2ViUHJvamVjdC5kZWxldGUodHJ1ZSx0cnVlLCBudWxsKTsKLQkJCi0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2Uvc3JjL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy9heGlzL3RvbWNhdC92NTAvcGVyZm1zci9QZXJmbXNyVERKYXZhQXhpc1RDNTAuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL2F4aXMvdG9tY2F0L3Y1MC9wZXJmbXNyL1BlcmZtc3JUREphdmFBeGlzVEM1MC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDM4MzIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL2F4aXMvdG9tY2F0L3Y1MC9wZXJmbXNyL1BlcmZtc3JUREphdmFBeGlzVEM1MC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDUwMiAgMTg1MjA4IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdSAgICAgCi0gKiAyMDA3MDUwOSAgMTgwNTY3IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNzA3MDUgIDE5NTU1MyBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDgwMzEzICAxMjY3NzQgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MC5wZXJmbXNyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAuV1NXaXphcmRUb21jYXQ1MFRlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLnV0aWwuUGVyZm9ybWFuY2VKVW5pdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51bml0dGVzdC5XU0pVbml0Q29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsLkpVbml0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnV0aWwuU2NlbmFyaW9Db25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS50ZXN0LnBlcmZvcm1hbmNlLlBlcmZvcm1hbmNlTWV0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXI7Ci0KLS8qKgotICogVG9wIGRvd24gcGVyZm9ybWFuY2Ugc2NlbmFyaW8gd2l0aCBBeGlzIGFuZCBUb21jYXQgdjUuMAotICovCi1wdWJsaWMgY2xhc3MgUGVyZm1zclRESmF2YUF4aXNUQzUwIGV4dGVuZHMgV1NXaXphcmRUb21jYXQ1MFRlc3QgewotCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFdTX1JVTlRJTUVJRF9BWElTID0gV1NKVW5pdENvbnN0YW50cy5XU19SVU5USU1FSURfQVhJUzsKLSAgCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFBST0pFQ1RfTkFNRSA9IFdTSlVuaXRDb25zdGFudHMuVERfUFJPSkVDVF9OQU1FOwotICAKLSAgcHJpdmF0ZSBJRmlsZSBzb3VyY2VGaWxlXzsKLQkKLSAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlUHJvamVjdHMoKSB0aHJvd3MgRXhjZXB0aW9uewotCSAgICBJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KFBST0pFQ1RfTkFNRSk7Ci0JICAgIGlmICghd2ViUHJvamVjdC5leGlzdHMoKSl7Ci0JICAgICAgSlVuaXRVdGlscy5jcmVhdGVXZWJNb2R1bGUoUFJPSkVDVF9OQU1FLCBQUk9KRUNUX05BTUUsIHNlcnZlcl8uZ2V0SWQoKSwgU0VSVkVSVFlQRUlEX1RDNTAsICIxNCIsIGVudl8sIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotCSAgICB9Ci0JICB9Ci0JICAKLQotICAvKioKLSAgICogU2V0cyB1cCB0aGUgaW5wdXQgZGF0YTsKLSAgICogLSBjcmVhdGUgcHJvamVjdChzKSwKLSAgICogLSBjb3B5IHJlc291cmNlcyB0byB3b3Jrc3BhY2UgCi0gICAqLyAgCi0JcHJvdGVjdGVkIHZvaWQgaW5zdGFsbElucHV0RGF0YSgpIHRocm93cyBFeGNlcHRpb24gewotCi0JCUlQcm9qZWN0IHdlYlByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoUFJPSkVDVF9OQU1FKTsJCQotCQlJRm9sZGVyIGRlc3RGb2xkZXIgPSAoSUZvbGRlcilKMkVFVXRpbHMuZ2V0V2ViQ29udGVudENvbnRhaW5lcih3ZWJQcm9qZWN0KTsKLQkJSlVuaXRVdGlscy5jb3B5VGVzdERhdGEoIlRESmF2YSIsZGVzdEZvbGRlcixlbnZfLCBudWxsKTsKLQkJc291cmNlRmlsZV8gPSBkZXN0Rm9sZGVyLmdldEZpbGUobmV3IFBhdGgoIkVjaG8ud3NkbCIpKTsKLQkJCi0JCUpVbml0VXRpbHMuZGlzYWJsZVZhbGlkYXRpb24od2ViUHJvamVjdCk7Ci0JCUpVbml0VXRpbHMuc3luY0J1aWxkUHJvamVjdCh3ZWJQcm9qZWN0LGVudl8sIG51bGwpOwotCX0KLQotICAvKioKLSAgICogU2V0IHRoZSBwZXJzaXN0ZW50IHNlcnZlciBydW50aW1lIGNvbnRleHQgcHJlZmVyZW5jZXMKLSAgICovICAKLQlwcm90ZWN0ZWQgdm9pZCBpbml0SjJFRVdTUnVudGltZVNlcnZlckRlZmF1bHRzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCS8vIFNldCBkZWZhdWx0IHByZWZlcmVuY2VzIGZvciBBeGlzIGFuZCBUb21jYXQgdjUuMCBzZXJ2ZXIKLQkJSlVuaXRVdGlscy5zZXRXU1J1bnRpbWVTZXJ2ZXIoV1NfUlVOVElNRUlEX0FYSVMsIFNFUlZFUlRZUEVJRF9UQzUwKTsJCi0JCUpVbml0VXRpbHMuc2V0U2VydmljZVNjZW5hcmlvRGVmYXVsdCgpOwotCX0KLQotICAvKioKLSAgICogU2V0IHRoZSBpbml0aWFsIHNlbGVjdGlvbgotICAgKi8gIAotCXByb3RlY3RlZCB2b2lkIGluaXRJbml0aWFsU2VsZWN0aW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCWluaXRpYWxTZWxlY3Rpb25fID0gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oc291cmNlRmlsZV8pOwotCi0JfQotCi0gIC8qKgotICAgKiBMYXVuY2hlcyB0aGUgcG9wLXVwIGNvbW1hbmQgdG8gaW5pdGlhdGUgdGhlIHNjZW5hcmlvCi0gICAqIEB0aHJvd3MgRXhjZXB0aW9uCi0gICAqLyAgCi0JcHVibGljIHZvaWQgdGVzdFRESmF2YUF4aXNUQzUwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JICAKLQkgICAgSVN0YXR1c1tdIHN0YXR1czsKLQkJSlVuaXRVdGlscy5lbmFibGVPdmVyd3JpdGUodHJ1ZSk7Ci0JCUpVbml0VXRpbHMuc2V0UnVudGltZVByZWZlcmVuY2UoIm9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLmF4aXNXZWJTZXJ2aWNlUlQiKTsKLQkJCi0JCVBlcmZvcm1hbmNlIHBlcmY9IFBlcmZvcm1hbmNlLmdldERlZmF1bHQoKTsKLQkJUGVyZm9ybWFuY2VNZXRlciBwZXJmb3JtYW5jZU1ldGVyPSBwZXJmLmNyZWF0ZVBlcmZvcm1hbmNlTWV0ZXIocGVyZi5nZXREZWZhdWx0U2NlbmFyaW9JZCh0aGlzKSk7CSAgICAKLQkgICAgdHJ5IHsKLSAgICAKLQkgICAgICBwZXJmb3JtYW5jZU1ldGVyLnN0YXJ0KCk7Ci0JICAgICAgc3RhdHVzID0gUGVyZm9ybWFuY2VKVW5pdFV0aWxzLmxhdW5jaENyZWF0aW9uV2l6YXJkKFNjZW5hcmlvQ29uc3RhbnRzLldJWkFSRElEX1RPUF9ET1dOLFNjZW5hcmlvQ29uc3RhbnRzLk9CSkVDVF9DTEFTU19JRF9JRklMRSxpbml0aWFsU2VsZWN0aW9uXyk7Ci0JICAgICAgcGVyZm9ybWFuY2VNZXRlci5zdG9wKCk7Ci0JICAgICAgcGVyZm9ybWFuY2VNZXRlci5jb21taXQoKTsKLQkgICAgICBwZXJmLmFzc2VydFBlcmZvcm1hbmNlKHBlcmZvcm1hbmNlTWV0ZXIpOwotCSAgICB9Ci0JICAgIGZpbmFsbHkgewotCSAgICAJaWYgKHBlcmZvcm1hbmNlTWV0ZXI9PW51bGwpCi0JICAgIAkJcGVyZm9ybWFuY2VNZXRlci5kaXNwb3NlKCk7Ci0JIAl9Ci0JICAgIAotCSAgICB2ZXJpZnlPdXRwdXQoc3RhdHVzKTsKLQotCi0JfQotCi0gIC8qKgotICAgKiBWZXJpZnkgdGhlIHNjZW5hcmlvIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLSAgICogQHRocm93cyBFeGNlcHRpb24KLSAgICovCi0JcHJpdmF0ZSBmaW5hbCB2b2lkIHZlcmlmeU91dHB1dChJU3RhdHVzW10gc3RhdHVzKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotICAgICAgICBJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KFBST0pFQ1RfTkFNRSk7ICAgIAotICAgICAgICBJRm9sZGVyIHdlYkNvbnRlbnRGb2xkZXIgPSAoSUZvbGRlcilKMkVFVXRpbHMuZ2V0V2ViQ29udGVudENvbnRhaW5lcih3ZWJQcm9qZWN0KTsgICAgCi0gICAgCi0JCQotCQlJRm9sZGVyIHdzZGxGb2xkZXIgPSB3ZWJDb250ZW50Rm9sZGVyLmdldEZvbGRlcigid3NkbCIpOwotCQlhc3NlcnRUcnVlKHdzZGxGb2xkZXIuZXhpc3RzKCkpOwotCQlhc3NlcnRUcnVlKHdzZGxGb2xkZXIubWVtYmVycygpLmxlbmd0aCA+IDApOwotCi0JCUFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyIHN0YXR1c0hhbmRsZXIgPSBuZXcgQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXIoc3RhdHVzKTsKLQkJSVN0YXR1c1tdIHMgPSBzdGF0dXNIYW5kbGVyLmdldEVycm9yUmVwb3J0cygpOwotCQkvLwotCQlpZiAocy5sZW5ndGggPiAwKXsKLQkJCWZvciAoaW50IGk9MDtpPHMubGVuZ3RoO2krKyl7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJUREphdmEgRXJyb3IgbWVzc2FnZSBmb3IgcmVwb3J0ICMiK2krIjogIitzW2ldLmdldE1lc3NhZ2UoKSk7Ci0JCQl9Ci0JCX0KLQkJYXNzZXJ0VHJ1ZShzLmxlbmd0aCA9PSAwKTsKLQl9Ci0JCi0gIC8qKgotICAgKiBDbGVhciB3b3Jrc3BhY2UgaWYgcmVxdWlyZWQKLSAgICovCi0JcHJvdGVjdGVkIHZvaWQgZGVsZXRlSW5wdXREYXRhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCS8vIERlbGV0ZSB0aGUgV2ViIHByb2plY3QuCi0JCUlQcm9qZWN0IHdlYlByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoUFJPSkVDVF9OQU1FKTsKLQkJd2ViUHJvamVjdC5kZWxldGUodHJ1ZSx0cnVlLG51bGwpOwotCQkKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3BlcmZvcm1hbmNlL0FsbFBlcmZvcm1hbmNlVGVzdHMuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3BlcmZvcm1hbmNlL0FsbFBlcmZvcm1hbmNlVGVzdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIwYmIxOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2Uvc3JjL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy9wZXJmb3JtYW5jZS9BbGxQZXJmb3JtYW5jZVRlc3RzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzA1MDIgIDE4NTIwOCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDgwMzEzICAxMjY3NzQgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA5MDQwMiAgMjYzODczIG1haHV0Y2hAY2EuaWJtLmNvbSAtIE1hcmsgSHV0Y2hpbnNvbiwgTW92ZSBBeGlzMiBwZWZvcm1hbmNlIHRlc3RzIHRvIG5ldyBwbHVnaW4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2U7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MC5wZXJmbXNyLlBlcmZtc3JCVUphdmFBeGlzVEM1MDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMuYXhpcy50b21jYXQudjUwLnBlcmZtc3IuUGVyZm1zckNsaWVudEF4aXNUQzUwOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAucGVyZm1zci5QZXJmbXNyVERKYXZhQXhpc1RDNTA7Ci0KLXB1YmxpYyBjbGFzcyBBbGxQZXJmb3JtYW5jZVRlc3RzIHsKLQkKLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgewotICAgIAotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoIlRlc3QgZm9yIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZSIpOwotICAgIC8vJEpVbml0LUJFR0lOJAotICAgIAotICAgIC8vIENoZWNrIGZvciBUb21jYXQgNS4wIHNlcnZlcgotCVN0cmluZyBzID0gU3lzdGVtLmdldFByb3BlcnR5KCJvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC41MCIpOwotCWlmIChzPT1udWxsKXsKLQkJcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgidG9tY2F0NTBEaXIiKTsKLQl9Ci0KLQlpZiAocyAhPSBudWxsICYmIHMubGVuZ3RoKCkgPiAwKSB7Ci0JICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShQZXJmbXNyQlVKYXZhQXhpc1RDNTAuY2xhc3MpOwotCSAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoUGVyZm1zclRESmF2YUF4aXNUQzUwLmNsYXNzKTsKLQkgICAgc3VpdGUuYWRkVGVzdFN1aXRlKFBlcmZtc3JDbGllbnRBeGlzVEM1MC5jbGFzcyk7Ci0JfSBlbHNlIHsKLQkJU3lzdGVtLmVyci5wcmludGxuKCJXYXJuaW5nOiBUb21jYXQgNS4wIG5vdCBmb3VuZCAtIHBlcmZvcm1hbmNlIHRlc3RzIHNraXBwZWQiKTsKLQl9Ci0KLQkKLQkKLSAgICAvLyRKVW5pdC1FTkQkCi0gICAgcmV0dXJuIHN1aXRlOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2Uvc3JjL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy9wZXJmb3JtYW5jZS9wbHVnaW4vUGVyZm9ybWFuY2VQbHVnaW4uamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3BlcmZvcm1hbmNlL3BsdWdpbi9QZXJmb3JtYW5jZVBsdWdpbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODI2MmI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3BlcmZvcm1hbmNlL3BsdWdpbi9QZXJmb3JtYW5jZVBsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNTAyICAxODUyMDggc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1ICAgICAgCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLnBsdWdpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOwotCi0vKioKLSAqIFRoZSBtYWluIHBsdWdpbiBjbGFzcyB0byBiZSB1c2VkIGluIHRoZSBkZXNrdG9wLgotICovCi1wdWJsaWMgY2xhc3MgUGVyZm9ybWFuY2VQbHVnaW4gZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luIHsKLQkvL1RoZSBzaGFyZWQgaW5zdGFuY2UuCi0JcHJpdmF0ZSBzdGF0aWMgUGVyZm9ybWFuY2VQbHVnaW4gcGx1Z2luOwotCi0JCi0JLyoqCi0JICogVGhlIGNvbnN0cnVjdG9yLgotCSAqLwotCXB1YmxpYyBQZXJmb3JtYW5jZVBsdWdpbigpIHsKLQkJc3VwZXIoKTsKLQkJcGx1Z2luID0gdGhpczsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UuCi0JICovCi0JcHVibGljIHN0YXRpYyBQZXJmb3JtYW5jZVBsdWdpbiBnZXREZWZhdWx0KCkgewotCQlyZXR1cm4gcGx1Z2luOwotCX0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvcGVyZm9ybWFuY2UvdXRpbC9FY2xpcHNlUGVyZm9ybWFuY2VMb2cuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3BlcmZvcm1hbmNlL3V0aWwvRWNsaXBzZVBlcmZvcm1hbmNlTG9nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0OGYxYTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvcGVyZm9ybWFuY2UvdXRpbC9FY2xpcHNlUGVyZm9ybWFuY2VMb2cuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS50ZXN0LnBlcmZvcm1hbmNlLlBlcmZvcm1hbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnRlc3QucGVyZm9ybWFuY2UuUGVyZm9ybWFuY2VNZXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklMb2c7Ci0KLQotcHVibGljIGNsYXNzIEVjbGlwc2VQZXJmb3JtYW5jZUxvZyBpbXBsZW1lbnRzIElMb2cgewotCi0gIHByaXZhdGUgYm9vbGVhbiBydW5TdGF0ZSA9IGZhbHNlOwotICBQZXJmb3JtYW5jZSBwZXJmID0gbnVsbDsgICAgICAKLSAgUGVyZm9ybWFuY2VNZXRlciBwZXJmb3JtYW5jZU1ldGVyPSBudWxsOyAgCi0gIAotICBwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoKSB7Ci0gICAgLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZChTdHJpbmcgb3B0aW9uKSB7Ci0gICAgLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgbG9nKGludCBzZXZlcml0eSwgaW50IG1lc3NhZ2VOdW0sIE9iamVjdCBjYWxsZXIsIFN0cmluZyBtZXRob2QsIFRocm93YWJsZSB0aHJvd2FibGUpIHsKLSAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGxvZyhpbnQgc2V2ZXJpdHksIFN0cmluZyBvcHRpb24sIGludCBtZXNzYWdlTnVtLCBPYmplY3QgY2FsbGVyLCBTdHJpbmcgbWV0aG9kLCBUaHJvd2FibGUgdGhyb3dhYmxlKSB7Ci0gICAgLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotCi0gIH0KLQotICBwdWJsaWMgdm9pZCBsb2coaW50IHNldmVyaXR5LCBpbnQgbWVzc2FnZU51bSwgT2JqZWN0IGNhbGxlciwgU3RyaW5nIG1ldGhvZCwgSVN0YXR1cyBzdGF0dXMpIHsKLSAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGxvZyhpbnQgc2V2ZXJpdHksIFN0cmluZyBvcHRpb24sIGludCBtZXNzYWdlTnVtLCBPYmplY3QgY2FsbGVyLCBTdHJpbmcgbWV0aG9kLCBJU3RhdHVzIHN0YXR1cykgewotICAgIC8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKLQotICB9Ci0KLSAgcHVibGljIHZvaWQgbG9nKGludCBzZXZlcml0eSwgaW50IG1lc3NhZ2VOdW0sIE9iamVjdCBjYWxsZXIsIFN0cmluZyBtZXRob2QsIE9iamVjdCBvYmplY3QpIHsKLSAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGxvZyhpbnQgc2V2ZXJpdHksIFN0cmluZyBvcHRpb24sIGludCBtZXNzYWdlTnVtLCBPYmplY3QgY2FsbGVyLCBTdHJpbmcgbWV0aG9kLCBPYmplY3Qgb2JqZWN0KSB7Ci0gICAgCi0gICAgaWYgKG1ldGhvZC5lcXVhbHMoInJ1bkNvbW1hbmQiKSkgewotCi0gICAgICB0cnkgewotICAgICAgICBpZiAoIXJ1blN0YXRlKSB7Ci0gICAgICAgICAgLy8gYmVnaW4gcGVyZm9ybWFuY2UgcmVjb3JkaW5nCi0gICAgICAgICAgcGVyZiA9IFBlcmZvcm1hbmNlLmdldERlZmF1bHQoKTsgICAgICAKLSAgICAgICAgICBwZXJmb3JtYW5jZU1ldGVyID0gcGVyZi5jcmVhdGVQZXJmb3JtYW5jZU1ldGVyKCgoU3RyaW5nKW9iamVjdCkudG9TdHJpbmcoKSk7ICAgICAgICAgIAotICAgICAgICAgIHBlcmZvcm1hbmNlTWV0ZXIuc3RhcnQoKTsKLSAgICAgICAgICBydW5TdGF0ZSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgLy8gZW5kIHBlcmZvcm1hbmNlIHJlY29yZGluZwotICAgICAgICAgIHBlcmZvcm1hbmNlTWV0ZXIuc3RvcCgpOwotICAgICAgICAgIHBlcmZvcm1hbmNlTWV0ZXIuY29tbWl0KCk7Ci0gICAgICAgICAgcGVyZi5hc3NlcnRQZXJmb3JtYW5jZShwZXJmb3JtYW5jZU1ldGVyKTsKLSAgICAgICAgICBwZXJmb3JtYW5jZU1ldGVyLmRpc3Bvc2UoKTsKLSAgICAgICAgICBydW5TdGF0ZSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaChFeGNlcHRpb24gZSkgewotICAgICAgICAvLyBoYW5kbGUgZXhjZXB0aW9uCi0gICAgICB9ICAgICAgICAKLSAgICB9Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvcGVyZm9ybWFuY2UvdXRpbC9QZXJmb3JtYW5jZUpVbml0VXRpbHMuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS9zcmMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3BlcmZvcm1hbmNlL3V0aWwvUGVyZm9ybWFuY2VKVW5pdFV0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZDM4MWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlL3NyYy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvcGVyZm9ybWFuY2UvdXRpbC9QZXJmb3JtYW5jZUpVbml0VXRpbHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDMyMSAgMTc2ODg2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDcwNTA5ICAxODA1Njcgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBlcmZvcm1hbmNlLnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLlByb2dyZXNzTW9uaXRvckRpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsLkR5bmFtaWNQb3B1cEpVbml0V2l6YXJkOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXI7Ci0KLQotcHVibGljIGNsYXNzIFBlcmZvcm1hbmNlSlVuaXRVdGlscyB7Ci0gIAotCXByaXZhdGUgc3RhdGljIElTdGF0dXNbXSBsYXVuY2hXaXphcmQoU3RyaW5nIHBsdWdpbk5TLFN0cmluZyB3aXphcmRJZCxTdHJpbmcgb2JqZWN0Q2xhc3NJZCxJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlBY2N1bXVsYXRlU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyID0gbmV3IEFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyKCk7Ci0KLSAgICAgICAgRHluYW1pY1BvcHVwSlVuaXRXaXphcmQgd2l6YXJkID0gbmV3IER5bmFtaWNQb3B1cEpVbml0V2l6YXJkKHN0YXR1c0hhbmRsZXIpOwotICAgICAgICB3aXphcmQuc2V0SW5pdGlhbERhdGEod2l6YXJkSWQpOwotICAgICAgICBQcm9ncmVzc01vbml0b3JEaWFsb2cgbW9uaXRvciA9IG5ldyBQcm9ncmVzc01vbml0b3JEaWFsb2coUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKS5nZXRTaGVsbCgpKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgCXdpemFyZC5ydW5IZWFkTGVzcyhpbml0aWFsU2VsZWN0aW9uLCBtb25pdG9yKTsKLSAgICAgICAgfSAKLSAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLSAgICAgICAgCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGF0dXNIYW5kbGVyLmdldEFsbFJlcG9ydHMoKTsKLQotCX0KLQkKLQlwdWJsaWMgc3RhdGljIElTdGF0dXNbXSBsYXVuY2hDcmVhdGlvbldpemFyZChTdHJpbmcgd2l6YXJkSWQsU3RyaW5nIG9iamVjdENsYXNzSWQsSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5pdGlhbFNlbGVjdGlvbikgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJcmV0dXJuIGxhdW5jaFdpemFyZCgib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpIix3aXphcmRJZCxvYmplY3RDbGFzc0lkLGluaXRpYWxTZWxlY3Rpb24pOwotCX0KLQkKLQlwdWJsaWMgc3RhdGljIElTdGF0dXNbXSBsYXVuY2hDb25zdW1wdGlvbldpemFyZChTdHJpbmcgd2l6YXJkSWQsU3RyaW5nIG9iamVjdENsYXNzSWQsSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5pdGlhbFNlbGVjdGlvbikgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJcmV0dXJuIGxhdW5jaFdpemFyZCgib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpIix3aXphcmRJZCxvYmplY3RDbGFzc0lkLGluaXRpYWxTZWxlY3Rpb24pOwotCX0KLQkKLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS90ZXN0LnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wZXJmb3JtYW5jZS90ZXN0LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQwYmFhNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UvdGVzdC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci0KLTxwcm9qZWN0IG5hbWU9InRlc3RzdWl0ZSIgZGVmYXVsdD0icGVyZm9ybWFuY2UiIGJhc2VkaXI9Ii4iPgotICA8IS0tIFRoZSBwcm9wZXJ0eSAke2VjbGlwc2UtaG9tZX0gc2hvdWxkIGJlIHBhc3NlZCBpbnRvIHRoaXMgc2NyaXB0IC0tPgotICA8IS0tIFNldCBhIG1lYW5pbmdmdWwgZGVmYXVsdCB2YWx1ZSBmb3Igd2hlbiBpdCBpcyBub3QuIC0tPgotICA8IS0tIDxwcm9wZXJ0eSBuYW1lPSJlY2xpcHNlLWhvbWUiIHZhbHVlPSIke2Jhc2VkaXJ9XC4uXC4uIi8+IC0tPgotCTxlY2hvIG1lc3NhZ2U9ImJhc2VkaXIgJHtiYXNlZGlyfSIgLz4KLQk8ZWNobyBtZXNzYWdlPSJlY2xpcHNlIHBsYWNlICR7ZWNsaXBzZS1ob21lfSIgLz4KLQkKLSAgPCEtLSBzZXRzIHRoZSBwcm9wZXJ0aWVzIHBsdWdpbi1uYW1lLCBhbmQgbGlicmFyeS1maWxlIC0tPgotICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGVyZm9ybWFuY2UiLz4KLSAgPHByb3BlcnR5IG5hbWU9ImxpYnJhcnktZmlsZSIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRlc3RfMy4xLjAvbGlicmFyeS54bWwiLz4KLSAgPHByb3BlcnR5IG5hbWU9InBlcmYtdGVzdHMtZmlsZSIgdmFsdWU9IiR7dGVzdERpcn0vcGVyZm9ybWFuY2UtdGVzdHMueG1sIi8+Ci0gIDxwcm9wZXJ0eSBuYW1lPSJ3b3Jrc3BhY2UiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vd29ya3NwYWNlX3dzX3BlcmZvcm1hbmNlIi8+Ci0gIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9Ii1Eb3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuNTA9JHt0ZXN0RGlyfS8ke3RvbWNhdDUwRGlyfSIvPgotICAgICAgCi0gIDwhLS0gVGhpcyB0YXJnZXQgaG9sZHMgYWxsIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBuZWVkcyB0byBiZSBkb25lIGZvciAtLT4KLSAgPCEtLSBhbGwgdGVzdHMgdGhhdCBhcmUgdG8gYmUgcnVuLiBJbml0aWFsaXphdGlvbiBmb3IgaW5kaXZpZHVhbCB0ZXN0cyAtLT4KLSAgPCEtLSBzaG91bGQgYmUgZG9uZSB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIHN1aXRlIHRhcmdldC4gLS0+Ci0gIDx0YXJnZXQgbmFtZT0iaW5pdCI+Ci0gICAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotICA8L3RhcmdldD4KLQotICA8IS0tIFRoaXMgdGFyZ2V0IGRlZmluZXMgdGhlIHRlc3RzIHRoYXQgbmVlZCB0byBiZSBydW4uIC0tPgotICA8dGFyZ2V0IG5hbWU9InBlcmZvcm1hbmNlX3N1aXRlIj4KLSAgCQotICAJPCEtLSBJdGVyYXRpb24gMSAtLT4KLSAgCQotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+ICAgIAkKLSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MC5wZXJmbXNyLlBlcmZtc3JCVUphdmFBeGlzVEM1MCIgLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tcGF0aCIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zLyR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPiAgICAgIAotICAgIDwvYW50PgotICAJCi0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4gICAgCQotICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMuYXhpcy50b21jYXQudjUwLnBlcmZtc3IuUGVyZm1zckNsaWVudEF4aXNUQzUwIiAvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1wYXRoIiB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3BsdWdpbnMvJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+ICAgICAgCi0gICAgPC9hbnQ+Ci0gIAkKLSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPiAgICAJCi0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAucGVyZm1zci5QZXJmbXNyVERKYXZhQXhpc1RDNTAiIC8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLXBhdGgiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vcGx1Z2lucy8ke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4gICAgICAKLSAgICA8L2FudD4gIAkKLSAgCQotICAJPCEtLSBJdGVyYXRpb24gMiAtLT4KLSAgCQotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+ICAgIAkKLSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MC5wZXJmbXNyLlBlcmZtc3JCVUphdmFBeGlzVEM1MCIgLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tcGF0aCIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zLyR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPiAgICAgIAotICAgIDwvYW50PgotICAJCi0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4gICAgCQotICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMuYXhpcy50b21jYXQudjUwLnBlcmZtc3IuUGVyZm1zckNsaWVudEF4aXNUQzUwIiAvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1wYXRoIiB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3BsdWdpbnMvJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+ICAgICAgCi0gICAgPC9hbnQ+Ci0gIAkKLSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPiAgICAJCi0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAucGVyZm1zci5QZXJmbXNyVERKYXZhQXhpc1RDNTAiIC8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLXBhdGgiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vcGx1Z2lucy8ke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4gICAgICAKLSAgICA8L2FudD4gIAkKLQotICAJPCEtLSBJdGVyYXRpb24gMyAtLT4KLSAgCQotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+ICAgIAkKLSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MC5wZXJmbXNyLlBlcmZtc3JCVUphdmFBeGlzVEM1MCIgLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tcGF0aCIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zLyR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPiAgICAgIAotICAgIDwvYW50PgotICAJCi0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4gICAgCQotICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMuYXhpcy50b21jYXQudjUwLnBlcmZtc3IuUGVyZm1zckNsaWVudEF4aXNUQzUwIiAvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1wYXRoIiB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3BsdWdpbnMvJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+ICAgICAgCi0gICAgPC9hbnQ+Ci0gIAkKLSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPiAgICAJCi0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAucGVyZm1zci5QZXJmbXNyVERKYXZhQXhpc1RDNTAiIC8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLXBhdGgiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vcGx1Z2lucy8ke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4gICAgICAKLSAgICA8L2FudD4gIAkKLQotICAJPCEtLSBJdGVyYXRpb24gNCAtLT4KLSAgCQotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+ICAgIAkKLSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MC5wZXJmbXNyLlBlcmZtc3JCVUphdmFBeGlzVEM1MCIgLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tcGF0aCIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zLyR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPiAgICAgIAotICAgIDwvYW50PgotICAJCi0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4gICAgCQotICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMuYXhpcy50b21jYXQudjUwLnBlcmZtc3IuUGVyZm1zckNsaWVudEF4aXNUQzUwIiAvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1wYXRoIiB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3BsdWdpbnMvJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+ICAgICAgCi0gICAgPC9hbnQ+Ci0gIAkKLSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPiAgICAJCi0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAucGVyZm1zci5QZXJmbXNyVERKYXZhQXhpc1RDNTAiIC8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLXBhdGgiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vcGx1Z2lucy8ke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4gICAgICAKLSAgICA8L2FudD4gIAkKLQotICAJPCEtLSBJdGVyYXRpb24gNSAtLT4KLSAgCQotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+ICAgIAkKLSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MC5wZXJmbXNyLlBlcmZtc3JCVUphdmFBeGlzVEM1MCIgLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tcGF0aCIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zLyR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPiAgICAgIAotICAgIDwvYW50PgotICAJCi0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4gICAgCQotICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMuYXhpcy50b21jYXQudjUwLnBlcmZtc3IuUGVyZm1zckNsaWVudEF4aXNUQzUwIiAvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1wYXRoIiB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3BsdWdpbnMvJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+ICAgICAgCi0gICAgPC9hbnQ+Ci0gIAkKLSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPiAgICAJCi0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAucGVyZm1zci5QZXJmbXNyVERKYXZhQXhpc1RDNTAiIC8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLXBhdGgiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vcGx1Z2lucy8ke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4gICAgICAKLSAgICA8L2FudD4gIAkKLSAgCQotICA8L3RhcmdldD4KLQotICA8IS0tIFRoaXMgdGFyZ2V0IGhvbGRzIGNvZGUgdG8gY2xlYW51cCB0aGUgdGVzdGluZyBlbnZpcm9ubWVudCBhZnRlciAtLT4KLSAgPCEtLSBhbGwgb2YgdGhlIHRlc3RzIGhhdmUgYmVlbiBydW4uIFlvdSBjYW4gdXNlIHRoaXMgdGFyZ2V0IHRvIC0tPgotICA8IS0tIGRlbGV0ZSB0ZW1wb3JhcnkgZmlsZXMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZC4gLS0+Ci0gIDx0YXJnZXQgbmFtZT0iY2xlYW51cCI+Ci0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4gIAotICA8L3RhcmdldD4KLQotICA8IS0tIFRoaXMgdGFyZ2V0IHJ1bnMgdGhlIHRlc3Qgc3VpdGUuIEFueSBhY3Rpb25zIHRoYXQgbmVlZCB0byBoYXBwZW4gLS0+Ci0gIDwhLS0gYWZ0ZXIgYWxsIHRoZSB0ZXN0cyBoYXZlIGJlZW4gcnVuIHNob3VsZCBnbyBoZXJlLiAtLT4KLSAgPHRhcmdldCBuYW1lPSJwZXJmb3JtYW5jZSIgZGVwZW5kcz0iaW5pdCxwZXJmb3JtYW5jZV9zdWl0ZSxjbGVhbnVwIj4KLSAgICA8YW50IHRhcmdldD0iY29sbGVjdCIgYW50ZmlsZT0iJHtsaWJyYXJ5LWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iaW5jbHVkZXMiIHZhbHVlPSJvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMqLnhtbCIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9Im91dHB1dC1maWxlIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0ueG1sIi8+Ci0gICAgPC9hbnQ+Ci0gIDwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLy5jbGFzc3BhdGggYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIzZmJhYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0idGVzdHMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS41Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy8uY3ZzaWdub3JlIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NzYzZWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi10ZW1wLmZvbGRlcgotdGVzdHMuamFyCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvLnByb2plY3QgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlODBkNTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2UuanN0LndzLnRlc3RzPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjk0MGFiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0jVGh1IE1heSAzMSAxNDoyNzozOSBFRFQgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWluc3RhbmNlL29yZy5lY2xpcHNlLmNvcmUubmV0L29yZy5lY2xpcHNlLmNvcmUubmV0Lmhhc01pZ3JhdGVkPXRydWUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4uaW5saW5lSnNyQnl0ZWNvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS41Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnVudXNlZExvY2FsPXByZXNlcnZlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcubGluZU51bWJlcj1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcubG9jYWxWYXJpYWJsZT1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcuc291cmNlRmlsZT1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hbm5vdGF0aW9uU3VwZXJJbnRlcmZhY2U9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hc3NlcnRJZGVudGlmaWVyPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbkluRGVwcmVjYXRlZENvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25XaGVuT3ZlcnJpZGluZ0RlcHJlY2F0ZWRNZXRob2Q9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGlzY291cmFnZWRSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVtcHR5U3RhdGVtZW50PWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maWVsZEhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxQYXJhbWV0ZXJCb3VuZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsbHlCbG9ja05vdENvbXBsZXRpbmdOb3JtYWxseT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZvcmJpZGRlblJlZmVyZW5jZT1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5oaWRkZW5DYXRjaEJsb2NrPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wYXRpYmxlTm9uSW5oZXJpdGVkSW50ZXJmYWNlTWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wbGV0ZUVudW1Td2l0Y2g9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluZGlyZWN0U3RhdGljQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5sb2NhbFZhcmlhYmxlSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5tZXRob2RXaXRoQ29uc3RydWN0b3JOYW1lPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ0RlcHJlY2F0ZWRBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nT3ZlcnJpZGVBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nU2VyaWFsVmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vRWZmZWN0QXNzaWdubWVudD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vSW1wbGljaXRTdHJpbmdDb252ZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9uRXh0ZXJuYWxpemVkU3RyaW5nTGl0ZXJhbD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ub3ZlcnJpZGluZ1BhY2thZ2VEZWZhdWx0TWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucG9zc2libGVBY2NpZGVudGFsQm9vbGVhbkFzc2lnbm1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnNwZWNpYWxQYXJhbWV0ZXJIaWRpbmdGaWVsZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdGF0aWNBY2Nlc3NSZWNlaXZlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN1cHByZXNzV2FybmluZ3M9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zeW50aGV0aWNBY2Nlc3NFbXVsYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnR5cGVQYXJhbWV0ZXJIaWRpbmc9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmNoZWNrZWRUeXBlT3BlcmF0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5kb2N1bWVudGVkRW1wdHlCbG9jaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5oYW5kbGVkV2FybmluZ1Rva2VuPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlFbHNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeVR5cGVDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5xdWFsaWZpZWRGaWVsZEFjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uV2hlbk92ZXJyaWRpbmc9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkSW1wb3J0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkTG9jYWw9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXI9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5JbXBsZW1lbnRpbmdBYnN0cmFjdD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuT3ZlcnJpZGluZ0NvbmNyZXRlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFByaXZhdGVNZW1iZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS52YXJhcmdzQXJndW1lbnROZWVkQ2FzdD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS41CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWEyYTFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI01vbiBKYW4gMzAgMTA6NDA6NTggRVNUIDIwMDYKLWNvbXBpbGVycy5wLmRlcHJlY2F0ZWQ9MQotY29tcGlsZXJzLnAubm8tcmVxdWlyZWQtYXR0PTAKLWNvbXBpbGVycy5wLm5vdC1leHRlcm5hbGl6ZWQtYXR0PTEKLWNvbXBpbGVycy5wLnVua25vd24tYXR0cmlidXRlPTAKLWNvbXBpbGVycy5wLnVua25vd24tY2xhc3M9MAotY29tcGlsZXJzLnAudW5rbm93bi1lbGVtZW50PTEKLWNvbXBpbGVycy5wLnVua25vd24tcmVzb3VyY2U9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1leC1wb2ludHM9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1pbXBvcnQ9MAotY29tcGlsZXJzLnVzZS1wcm9qZWN0PXRydWUKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkZTIyYWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJVBMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHM7c2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjMwMi5xdWFsaWZpZXIKLUJ1bmRsZS1DbGFzc1BhdGg6IHRlc3RzLmphcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBsdWdpbi5UZXN0c1BsdWdpbgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLAotIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAsCi0gb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBsdWdpbiwKLSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudW5pdHRlc3QsCi0gb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnV0aWwKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS5qc3Qud3MuY29uc3VtcHRpb24udWksCi0gb3JnLmVjbGlwc2UuanN0LndzLmNvbnN1bXB0aW9uLAotIG9yZy5lY2xpcHNlLmpzdC53cywKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYudWksCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LAotIG9yZy5lY2xpcHNlLmpzdC5qMmVlLmNvcmUsCi0gb3JnLmVjbGlwc2UuanN0LmoyZWUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLAotIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZSwKLSBvcmcuanVuaXQ7YnVuZGxlLXZlcnNpb249IlszLjguMCw0LjAuMCkiLAotIG9yZy5lY2xpcHNlLnVpLAotIG9yZy5lY2xpcHNlLmRlYnVnLmNvcmUsCi0gb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLAotIG9yZy5lY2xpcHNlLmplbS51dGlsLAotIG9yZy5lY2xpcHNlLndzdC53cywKLSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUsCi0gb3JnLmVjbGlwc2UuanN0LnNlcnZlci5jb3JlLAotIG9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcsCi0gb3JnLmVjbGlwc2UuamR0LmRlYnVnLnVpLAotIG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LmNvcmUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi50ZXN0cywKLSBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbiwKLSBvcmcuZWNsaXBzZS53c3Qud3MuZXhwbG9yZXIKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9hYm91dC5odG1sIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9idWlsZC5wcm9wZXJ0aWVzIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NTc2ZWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1iaW4uaW5jbHVkZXMgPSBkYXRhLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIHJlYWRtZS50eHQsXAotICAgICAgICAgICAgICAgdGVzdHMuamFyLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICB0ZXN0LnhtbCxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIGJpbi8KLWphcnMuY29tcGlsZS5vcmRlciA9IHRlc3RzLmphcgotc291cmNlLnRlc3RzLmphciA9IHRlc3RzLwotb3V0cHV0LnRlc3RzLmphciA9IGJpbi8KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL0JVSmF2YS9jbGllbnQvRWNob1Byb3h5VGVzdC5qc3AgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvZGF0YS9CVUphdmEvY2xpZW50L0VjaG9Qcm94eVRlc3QuanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjBlM2IzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL0JVSmF2YS9jbGllbnQvRWNob1Byb3h5VGVzdC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiBpbXBvcnQ9ImphdmEuaW8uKiIgJT4KLTxqc3A6dXNlQmVhbiBpZD0iZWNob1Byb3h5IiBjbGFzcz0iZm9vLkVjaG9Qcm94eSIgc2NvcGU9InJlcXVlc3QiLz4KLTxodG1sPgotPCVAIGluY2x1ZGUgZmlsZSA9ICIvb3V0cHV0RmlsZVBhdGguanNwZiIgJT4KLTwlCi0gICAvLyBIVFRQL1BPU1QgcGFyYW1ldGVyOgotICAgLy8gdGVzdElucHV0IC0gdGhlIFN0cmluZyBhcmd1bWVudCB0byBjYWxsIHRoZSBwcm94eSB3aXRoLgotICAgU3RyaW5nIHRlc3RJbnB1dCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJ0ZXN0SW5wdXQiKTsKLSAgIAotICAgLy8gRXhlY3V0ZSB0aGUgV2ViIHNlcnZpY2UuCi0gICBTdHJpbmcgcmVzdWx0ID0gZWNob1Byb3h5LmVjaG9TdHJpbmcodGVzdElucHV0KTsKLSAgIAotICAgLy8gV3JpdGUgdGhlIHJlc3VsdCB0byB0aGUgb3V0cHV0RmlsZVBhdGguCi0gICBQcmludFdyaXRlciBwdyA9IG51bGw7Ci0gICB0cnkKLSAgIHsKLSAgICAgcHcgPSBuZXcgUHJpbnRXcml0ZXIobmV3IEZpbGVPdXRwdXRTdHJlYW0ob3V0cHV0RmlsZVBhdGgpKTsKLSAgICAgcHcucHJpbnQocmVzdWx0KTsKLSAgICAgcHcuZmx1c2goKTsKLSAgIH0gICAKLSAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgIHsKLSAgIH0KLSAgIGZpbmFsbHkKLSAgIHsKLSAgICAgaWYgKHB3ICE9IG51bGwpCi0gICAgICAgcHcuY2xvc2UoKTsKLSAgIH0KLSU+Ci08L2JvZHk+Ci08cD4KLXRlc3RJbnB1dDogPCU9dGVzdElucHV0JT4KLTxwPgotb3V0cHV0RmlsZVBhdGg6IDwlPW91dHB1dEZpbGVQYXRoJT4KLTxwPgotVGhlIHJlc3VsdCBpcyA8JT1yZXN1bHQlPgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL0JVSmF2YS9zcmMvZm9vL0VjaG8uamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL0JVSmF2YS9zcmMvZm9vL0VjaG8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU4OTNkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvZGF0YS9CVUphdmEvc3JjL2Zvby9FY2hvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXBhY2thZ2UgZm9vOwotCi1wdWJsaWMgY2xhc3MgRWNobwotewotCXB1YmxpYyBTdHJpbmcgZWNob1N0cmluZyhTdHJpbmcgaW5wdXQpCi0JewotCQlyZXR1cm4gaW5wdXQ7Ci0JfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL1RESmF2YS9FY2hvLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvZGF0YS9UREphdmEvRWNoby53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmRmMzJmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL1RESmF2YS9FY2hvLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vZm9vIiB4bWxuczppbXBsPSJodHRwOi8vZm9vIiB4bWxuczppbnRmPSJodHRwOi8vZm9vIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOndzaT0iaHR0cDovL3dzLWkub3JnL3Byb2ZpbGVzL2Jhc2ljLzEuMS94c2QiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotIDx3c2RsOnR5cGVzPgotICA8c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2ZvbyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczppbXBsPSJodHRwOi8vZm9vIiB4bWxuczppbnRmPSJodHRwOi8vZm9vIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICA8ZWxlbWVudCBuYW1lPSJlY2hvU3RyaW5nUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0iZWNob1N0cmluZ1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0iZWNob1N0cmluZyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJpbnB1dCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICA8L3NjaGVtYT4KLSA8L3dzZGw6dHlwZXM+Ci0KLSAgIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZWNob1N0cmluZ1Jlc3BvbnNlIj4KLQotICAgICAgPHdzZGw6cGFydCBlbGVtZW50PSJpbXBsOmVjaG9TdHJpbmdSZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIvPgotCi0gICA8L3dzZGw6bWVzc2FnZT4KLQotICAgPHdzZGw6bWVzc2FnZSBuYW1lPSJlY2hvU3RyaW5nUmVxdWVzdCI+Ci0KLSAgICAgIDx3c2RsOnBhcnQgZWxlbWVudD0iaW1wbDplY2hvU3RyaW5nIiBuYW1lPSJwYXJhbWV0ZXJzIi8+Ci0KLSAgIDwvd3NkbDptZXNzYWdlPgotCi0gICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJFY2hvIj4KLQotICAgICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImVjaG9TdHJpbmciPgotCi0gICAgICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJpbXBsOmVjaG9TdHJpbmdSZXF1ZXN0IiBuYW1lPSJlY2hvU3RyaW5nUmVxdWVzdCIvPgotCi0gICAgICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0iaW1wbDplY2hvU3RyaW5nUmVzcG9uc2UiIG5hbWU9ImVjaG9TdHJpbmdSZXNwb25zZSIvPgotCi0gICAgICA8L3dzZGw6b3BlcmF0aW9uPgotCi0gICA8L3dzZGw6cG9ydFR5cGU+Ci0KLSAgIDx3c2RsOmJpbmRpbmcgbmFtZT0iRWNob1NvYXBCaW5kaW5nIiB0eXBlPSJpbXBsOkVjaG8iPgotCi0gICAgICA8d3NkbHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0KLSAgICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIj4KLQotICAgICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLQotICAgICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZWNob1N0cmluZ1JlcXVlc3QiPgotCi0gICAgICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLQotICAgICAgICAgPC93c2RsOmlucHV0PgotCi0gICAgICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZWNob1N0cmluZ1Jlc3BvbnNlIj4KLQotICAgICAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0KLSAgICAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0KLSAgICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0KLSAgIDwvd3NkbDpiaW5kaW5nPgotCi0gICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkVjaG9TZXJ2aWNlIj4KLQotICAgICAgPHdzZGw6cG9ydCBiaW5kaW5nPSJpbXBsOkVjaG9Tb2FwQmluZGluZyIgbmFtZT0iRWNobyI+Ci0KLSAgICAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0OjkwODAvVGVzdFdlYi9zZXJ2aWNlcy9FY2hvIi8+Ci0KLSAgICAgIDwvd3NkbDpwb3J0PgotCi0gICA8L3dzZGw6c2VydmljZT4KLQotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL2RhdGEvV1NQZXJmUHJvamVjdHMuemlwIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL2RhdGEvV1NQZXJmUHJvamVjdHMuemlwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWQ4MWY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL1dTUGVyZlByb2plY3RzLnppcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL1dTVGVzdFByb2plY3RzLnppcCBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL1dTVGVzdFByb2plY3RzLnppcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYyZTllYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvZGF0YS9XU1Rlc3RQcm9qZWN0cy56aXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvZGF0YS93ZWJjbGllbnQvb3V0cHV0RmlsZVBhdGguanNwZiBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL3dlYmNsaWVudC9vdXRwdXRGaWxlUGF0aC5qc3BmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGE3YWVjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9kYXRhL3dlYmNsaWVudC9vdXRwdXRGaWxlUGF0aC5qc3BmCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPC9oZWFkPiAgCi08JQotICAgU3RyaW5nIG91dHB1dEZpbGVQYXRoID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoIm91dHB1dEZpbGVQYXRoIik7Ci0lPiAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9wbHVnaW4ucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UzOTQ3MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMgeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSMgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgMjAwNjA0MjQgICAxMzgwNjAga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMgMjAwNzAzMjcgICAxNzIzMzkga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBNZXNzYWdlcyBpbiBwbHVnaW4ueG1sLgotIwotUExVR0lOX05BTUU9SmF2YSBXZWIgU2VydmljZXMgVG9vbHMgVGVzdHMKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwotCi1QT1BVUF9URVNUX1dTREw9VGVzdCB3aXRoIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcgotQUNUSU9OX0dFTkVSQVRFX0pBVkFfU0tFTEVUT049R2VuZXJhdGUgSmF2YSBiZWFuIHNrZWxldG9uCi1BQ1RJT05fR0VORVJBVEVfSkFWQV9QUk9YWT1HZW5lcmF0ZSBDbGllbnQKLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3BsdWdpbi54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY0NTU5Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+Ci08cGx1Z2luPgotCi0JICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkucG9wdXBNZW51cyI+Ci0gICAgICAgIAotICAgICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5TZXJ2bGV0TGluayIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9IioiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQuamF2YSI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iJUFDVElPTl9HRU5FUkFURV9KQVZBX1NLRUxFVE9OIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS53aWRnZXRzLnBvcHVwLkR5bmFtaWNQb3B1cFdpemFyZCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJhZGRpdGlvbnMiCi0gICAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLSAgICAgICAgIAotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5TZXJ2bGV0TGluayIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9IioiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLndpemFyZC5jbGllbnQuY2xpZW50d2l6YXJkIj4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSIlQUNUSU9OX0dFTkVSQVRFX0pBVkFfUFJPWFkiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMucG9wdXAuRHluYW1pY1BvcHVwV2l6YXJkIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9ImFkZGl0aW9ucyIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud2l6YXJkLmNsaWVudC5jbGllbnR3aXphcmQiPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLQotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgICAgb2JqZWN0Q2xhc3M9Im9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5TZXJ2bGV0TGluayIKLSAgICAgICAgICAgIG5hbWVGaWx0ZXI9IioiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLnVpLmFjdGlvbi5XU0RMRmlsZU1lbnUiPgotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgICAgbGFiZWw9IiVQT1BVUF9URVNUX1dTREwiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLmV4cGxvcmVyLnBvcHVwLlBvcHVwVGVzdFdTREwiCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5leHBsb3Jlci5wb3B1cC5Qb3B1cFRlc3RXU0RMIj4KLSAgICAgICAgIDwvYWN0aW9uPgotICAgICAgPC9vYmplY3RDb250cmlidXRpb24+Ci0gICAgCi0gICAgICA8L2V4dGVuc2lvbj4KLQotPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLmFkYXB0ZXJzIj4KLSAgICAgICAgIDxmYWN0b3J5IAotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsLldTQ3VzdG9tQWRhcHRlckZhY3RvcnkiIAotICAgICAgICAgICAgYWRhcHRhYmxlVHlwZT0ib3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLlNlcnZsZXRMaW5rIj4KLSAgICAgICAgICAgIDxhZGFwdGVyIHR5cGU9Im9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlIi8+Ci0gICAgICAgICA8L2ZhY3Rvcnk+Ci0gICAgICA8L2V4dGVuc2lvbj4KLQotICAgICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLmFkYXB0ZXJzIj4KLSAgICAgICAgIDxmYWN0b3J5IAotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsLldTQ3VzdG9tQWRhcHRlckZhY3RvcnkiIAotICAgICAgICAgICAgYWRhcHRhYmxlVHlwZT0ib3JnLmVjbGlwc2UuanN0LmoyZWUud2Vic2VydmljZS53c2RkLlNlcnZsZXRMaW5rIj4KLSAgICAgICAgICAgIDxhZGFwdGVyIHR5cGU9ImphdmEubGFuZy5TdHJpbmciLz4KLSAgICAgICAgIDwvZmFjdG9yeT4KLSAgICAgIDwvZXh0ZW5zaW9uPiAgCi0gICAgCi08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy9yZWFkbWUudHh0IGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3JlYWRtZS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMjk1NDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3JlYWRtZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVRoZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIGluIGFyZTogCi0KLS1Eb3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuNTA9RTpcXFRvbWNhdFxcVG9tY2F0NS4wCi0KLSwgd2hlcmUgIm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwIiBpcyB0aGUgaW5zdGFsbCBkaXJlY3Rvcnkgb2YgeW91ciBUb21jYXQgdjUuMCBzZXJ2ZXIuCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdC54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZTRjNTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3QueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci0KLTxwcm9qZWN0IG5hbWU9InRlc3RzdWl0ZSIgZGVmYXVsdD0icnVuIiBiYXNlZGlyPSIuIj4KLSAgPCEtLSBUaGUgcHJvcGVydHkgJHtlY2xpcHNlLWhvbWV9IHNob3VsZCBiZSBwYXNzZWQgaW50byB0aGlzIHNjcmlwdCAtLT4KLSAgPCEtLSBTZXQgYSBtZWFuaW5nZnVsIGRlZmF1bHQgdmFsdWUgZm9yIHdoZW4gaXQgaXMgbm90LiAtLT4KLSA8IS0tIDxwcm9wZXJ0eSBuYW1lPSJlY2xpcHNlLWhvbWUiIHZhbHVlPSIke2Jhc2VkaXJ9XC4uXC4uIi8+IC0tPgotCTxlY2hvIG1lc3NhZ2U9ImJhc2VkaXIgJHtiYXNlZGlyfSIgLz4KLQk8ZWNobyBtZXNzYWdlPSJlY2xpcHNlIHBsYWNlICR7ZWNsaXBzZS1ob21lfSIgLz4KLSAgPCEtLSBzZXRzIHRoZSBwcm9wZXJ0aWVzIHBsdWdpbi1uYW1lLCBhbmQgbGlicmFyeS1maWxlIC0tPgotICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMiLz4KLSAgPHByb3BlcnR5IG5hbWU9ImxpYnJhcnktZmlsZSIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRlc3RfMy4xLjAvbGlicmFyeS54bWwiLz4KLSAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iLURvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC41MD0ke3Rlc3REaXJ9LyR7dG9tY2F0NTBEaXJ9Ii8+Ci0JCi0gIDwhLS0gVGhpcyB0YXJnZXQgaG9sZHMgYWxsIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBuZWVkcyB0byBiZSBkb25lIGZvciAtLT4KLSAgPCEtLSBhbGwgdGVzdHMgdGhhdCBhcmUgdG8gYmUgcnVuLiBJbml0aWFsaXphdGlvbiBmb3IgaW5kaXZpZHVhbCB0ZXN0cyAtLT4KLSAgPCEtLSBzaG91bGQgYmUgZG9uZSB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIHN1aXRlIHRhcmdldC4gLS0+Ci0gIDx0YXJnZXQgbmFtZT0iaW5pdCI+Ci0gICAgPHRzdGFtcC8+Ci0gICAgPGRlbGV0ZT4KLSAgICAgIDxmaWxlc2V0IGRpcj0iJHtlY2xpcHNlLWhvbWV9IiBpbmNsdWRlcz0ib3JnKi54bWwiLz4KLSAgICA8L2RlbGV0ZT4KLSAgPC90YXJnZXQ+Ci0KLSAgPCEtLSBUaGlzIHRhcmdldCBkZWZpbmVzIHRoZSB0ZXN0cyB0aGF0IG5lZWQgdG8gYmUgcnVuLiAtLT4KLSAgPHRhcmdldCBuYW1lPSJzdWl0ZSI+Ci0gICAgPHByb3BlcnR5IG5hbWU9ImpzdC13cy1mb2xkZXIiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vanN0X3dzX2ZvbGRlciIvPgotICAgIDxkZWxldGUgZGlyPSIke2pzdC1mb2xkZXJ9IiBxdWlldD0idHJ1ZSIvPgotICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke2xpYnJhcnktZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7anN0LXdzLWZvbGRlcn0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnVuaXR0ZXN0LkFsbFdTSlVuaXRUZXN0cyIgLz4KLSAgIAkgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tcGF0aCIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zLyR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAJICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPiAgICAJCi0gICAgPC9hbnQ+Ci0gIDwvdGFyZ2V0PgotCi0gIDwhLS0gVGhpcyB0YXJnZXQgaG9sZHMgY29kZSB0byBjbGVhbnVwIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50IGFmdGVyIC0tPgotICA8IS0tIGFmdGVyIGFsbCBvZiB0aGUgdGVzdHMgaGF2ZSBiZWVuIHJ1bi4gWW91IGNhbiB1c2UgdGhpcyB0YXJnZXQgdG8gLS0+Ci0gIDwhLS0gZGVsZXRlIHRlbXBvcmFyeSBmaWxlcyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkLiAtLT4KLSAgPHRhcmdldCBuYW1lPSJjbGVhbnVwIj4KLSAgPC90YXJnZXQ+Ci0KLSAgPCEtLSBUaGlzIHRhcmdldCBydW5zIHRoZSB0ZXN0IHN1aXRlLiBBbnkgYWN0aW9ucyB0aGF0IG5lZWQgdG8gaGFwcGVuIC0tPgotICA8IS0tIGFmdGVyIGFsbCB0aGUgdGVzdHMgaGF2ZSBiZWVuIHJ1biBzaG91bGQgZ28gaGVyZS4gLS0+Ci0gIDx0YXJnZXQgbmFtZT0icnVuIiBkZXBlbmRzPSJpbml0LHN1aXRlLGNsZWFudXAiPgotICAgIDxhbnQgdGFyZ2V0PSJjb2xsZWN0IiBhbnRmaWxlPSIke2xpYnJhcnktZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJpbmNsdWRlcyIgdmFsdWU9Im9yZyoueG1sIi8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0ib3V0cHV0LWZpbGUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfS54bWwiLz4KLSAgICA8L2FudD4KLSAgPC90YXJnZXQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL1dTV2l6YXJkVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy9XU1dpemFyZFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRiOGUxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL1dTV2l6YXJkVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTA0ICAgMTE0ODM1IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNzEyMTcgIDE4NzI4MCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDgwMjA3ICAyMTczNDYgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA4MDMxMyAgMTI2Nzc0IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0czsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnBsdWdpbi5UZXN0c1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudW5pdHRlc3QuV1NKVW5pdENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudXRpbC5KVW5pdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbnRleHQuUGVyc2lzdGVudFJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb21tb24uU3RhdHVzVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuRWNsaXBzZUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi51aS5lY2xpcHNlLkVjbGlwc2VTdGF0dXNIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQuSUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFdTV2l6YXJkVGVzdCBleHRlbmRzIFRlc3RDYXNlIGltcGxlbWVudHMgV1NKVW5pdENvbnN0YW50cwotewotCXByb3RlY3RlZCBJRW52aXJvbm1lbnQgZW52XzsKLQlwcm90ZWN0ZWQgSVJ1bnRpbWUgc2VydmVyUnVudGltZV87Ci0JcHJvdGVjdGVkIElTZXJ2ZXIgc2VydmVyXzsKLQlwcm90ZWN0ZWQgSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5pdGlhbFNlbGVjdGlvbl87Ci0gIAotICBwdWJsaWMgU3RyaW5nIGRlZmF1bHRVUkxfID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC8iOwotCQotCS8qKgotCSAqIFNldCB1cCB0aGUgd29ya3NwYWNlIGZvciB0aGUgV2ViIFNlcnZpY2UgV2l6YXJkIEpVbml0IHRlc3QuIFNldHVwIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0JICogMSkgT2J0YWluIGFuIGluc3RhbmNlIG9mIHRoZSBlbnZpcm9ubWVudC4KLQkgKiAyKSBJbnN0YWxsIHRoZSBzZXJ2ZXIgcnVudGltZS4KLQkgKiAzKSBJbnN0YWxsIHRoZSBpbnB1dCBkYXRhLiBUaGlzIG1heSBpbmNsdWRlIHByb2plY3RzLCBzb3VyY2UgZmlsZXMgZXRjLgotCSAqIDQpIEluc3RhbGwgYW4gaW5zdGFuY2Ugb2YgdGhlIHNlcnZlciBpZiByZXF1aXJlZC4gVGhpcyBtYXkgYWxzbyBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGlucHV0IGRhdGEgb24gdGhlIHNlcnZlci4KLQkgKiA1KSBJbml0aWFsaXplIHRoZSBKMkVFLCBXZWIgU2VydmljZSBSdW50aW1lIGFuZCBTZXJ2ZXIgdHlwZSBkZWZhdWx0cyBmb3IgdGhlIFdlYiBTZXJ2aWNlIHdpemFyZCB0byB1c2UuCi0JICogNikgSW5pdGlhbGl6ZSB0aGUgaW5pdGlhbCBzZWxlY3Rpb24gb2JqZWN0IHRvIHNldCB0aGUgY29udGV4dCBmb3IgdGhlIFdlYiBTZXJ2aWNlIHdpemFyZC4KLQkgKiBAdGhyb3dzIEV4Y2VwdGlvbgotCSAqLwotCXByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJLy8gR2V0IGFuIGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IHdpdGggdGhlIEFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyIHRvIG1pbmltaXplIFVJIGRpYWxvZyBibG9ja3MuCi0JICAJUGVyc2lzdGVudFJlc291cmNlQ29udGV4dCAgcmVzb3VyY2VDb250ZXh0ID0gUGVyc2lzdGVudFJlc291cmNlQ29udGV4dC5nZXRJbnN0YW5jZSgpOwotCQlFY2xpcHNlU3RhdHVzSGFuZGxlciAgICAgICBoYW5kbGVyICAgICAgICAgPSBuZXcgRWNsaXBzZVN0YXR1c0hhbmRsZXIoKTsKLQkJRWNsaXBzZUVudmlyb25tZW50ICAgICAgICAgZW52aXJvbm1lbnQgICAgID0gbmV3IEVjbGlwc2VFbnZpcm9ubWVudCggbnVsbCwgcmVzb3VyY2VDb250ZXh0LCBoYW5kbGVyICk7Ci0JICAKLQkJZW52XyA9IGVudmlyb25tZW50OyAKLQkJYXNzZXJ0VHJ1ZShlbnZfICE9IG51bGwpOwotCQkKLQkJc2VydmVyXyA9IG51bGw7Ci0JCUpVbml0VXRpbHMuaGlkZUFjdGlvbkRpYWxvZ3MoKTsKLQkJaW5zdGFsbFNlcnZlclJ1bnRpbWUoKTsKLQkJaW5zdGFsbFNlcnZlcigpOwotCQkKLQkJLy8gdW56aXAgcHJlLWNvbmZpZ3VyZWQgd29ya3NwYWNlIHByb2plY3RzCi0JCS8vaWYgKCFQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoV1NKVW5pdENvbnN0YW50cy5CVV9QUk9KRUNUX05BTUUpLmV4aXN0cygpKQotCQkJY3JlYXRlUHJvamVjdHMoKTsJCQotCQkKLQkJaW5zdGFsbElucHV0RGF0YSgpOwotCQlpbml0SjJFRVdTUnVudGltZVNlcnZlckRlZmF1bHRzKCk7Ci0JCWluaXRJbml0aWFsU2VsZWN0aW9uKCk7Ci0JfQotCQotCS8qKgotCSAqIEluc3RhbGwgdGhlIHNlcnZlciBydW50aW1lLgotCSAqIEB0aHJvd3MgRXhjZXB0aW9uCi0JICovCi0JcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgaW5zdGFsbFNlcnZlclJ1bnRpbWUoKSB0aHJvd3MgRXhjZXB0aW9uOwotCQotCS8qKgotCSAqIEluc3RhbGxzIHRoZSBpbnB1dCBkYXRhIGZyb20gYW4gYWdncmVnYXRvci4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGVudmlyb25tZW50LCBydW50aW1lCi0JICogYW5kIHNlcnZlciBhcmUgY29ycmVjdGx5IHNldCBvbiB0aGUgYWdncmVnYXRlIHNpbmNlIGl0cyBsaWZlY3ljbGUgbWV0aG9kcyBhcmUgbm90IG5lY2Vzc2FyaWx5Ci0JICogY2FsbGVkLgotCSAqIEBwYXJhbSBlbnYKLQkgKiBAcGFyYW0gc2VydmVyUnVudGltZQotCSAqIEBwYXJhbSBzZXJ2ZXIKLQkgKiBAdGhyb3dzIEV4Y2VwdGlvbgotCSAqLwotCXB1YmxpYyB2b2lkIGluc3RhbGxJbnB1dERhdGEoSUVudmlyb25tZW50IGVudixJUnVudGltZSBzZXJ2ZXJSdW50aW1lLElTZXJ2ZXIgc2VydmVyKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQllbnZfID0gZW52OwotCQlzZXJ2ZXJSdW50aW1lXyA9IHNlcnZlclJ1bnRpbWU7Ci0JCXNlcnZlcl8gPSBzZXJ2ZXI7Ci0JCS8vaW5zdGFsbElucHV0RGF0YSgpOwotCX0KLQkKLQkvLyBDcmVhdGVzIHByb2plY3RzIGZyb20gdGhlIHByb3ZpZGVkIFpJUCBmaWxlLgotLy8JcHVibGljIHN0YXRpYyBib29sZWFuIGNyZWF0ZVByb2plY3RzKCkgewotLy8JCUlQYXRoIGxvY2FsWmlwUGF0aCA9IGdldExvY2FsUGF0aCgpOwotLy8JCVByb2plY3RVbnppcFV0aWwgdXRpbCA9IG5ldyBQcm9qZWN0VW56aXBVdGlsKGxvY2FsWmlwUGF0aCwgcGVyZl9wcm9qZWN0TmFtZXMpOwotLy8JCXJldHVybiB1dGlsLmNyZWF0ZVByb2plY3RzKCk7Ci0vLwl9Ci0JCi0vLwlwcml2YXRlIHN0YXRpYyBJUGF0aCBnZXRMb2NhbFBhdGgoKSB7Ci0vLwkJVVJMIHVybCA9IFRlc3RzUGx1Z2luLmdldERlZmF1bHQoKS5maW5kKHBlcmZfemlwRmlsZVBhdGgpOwotLy8JCXRyeSB7Ci0vLwkJCXVybCA9IFBsYXRmb3JtLmFzTG9jYWxVUkwodXJsKTsKLS8vCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0vLwkJCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0vLwkJfQotLy8JCXJldHVybiBuZXcgUGF0aCh1cmwuZ2V0UGF0aCgpKTsKLS8vCX0JCi0JCi0gICAgLyoqCi0gICAgICogQ3JlYXRlIHRoZSBuZWNlc3NhcnkgcHJvamVjdHMgZm9yIHRoZSB0ZXN0cy4gIFRoaXMgY291bGQgYmUgV2ViLCBKYXZhLCBvciBvdGhlciBKMkVFIHByb2plY3RzLgotICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCi0gICAgICovCi0gICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgY3JlYXRlUHJvamVjdHMoKSB0aHJvd3MgRXhjZXB0aW9uOwotCQotCS8qKgotCSAqIEluc3RhbGwgdGhlIGlucHV0IGRhdGEgZm9yIHRoZSB0ZXN0LiBUaGlzIG1heSBpbmNsdWRlIHByb2plY3RzLCBzb3VyY2UgZmlsZXMgZXRjLgotCSAqIEB0aHJvd3MgRXhjZXB0aW9uCi0JICovCi0JcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgaW5zdGFsbElucHV0RGF0YSgpIHRocm93cyBFeGNlcHRpb247Ci0JCi0JLyoqCi0JICogSW5zdGFsbCBhbiBpbnN0YW5jZSBvZiB0aGUgc2VydmVyLiBUaGlzIG1heSBhbHNvIGNvbmZpZ3VyZSBpbnB1dCBkYXRhIG9uIHRoZSBzZXJ2ZXIuCi0JICogQHRocm93cyBFeGNlcHRpb24KLQkgKi8KLQlwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBpbnN0YWxsU2VydmVyKCkgdGhyb3dzIEV4Y2VwdGlvbjsKLQkKLQkvKioKLQkgKiBJbml0aWFsaXplIHRoZSBKMkVFIGxldmVsLCBXZWIgU2VydmljZSBydW50aW1lIHR5cGUgYW5kIFNlcnZlciBkZWZhdWx0cyBmb3IgdGhlIHRlc3QgY2FzZS4KLQkgKiBAdGhyb3dzIEV4Y2VwdGlvbgotCSAqLwotCXByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIGluaXRKMkVFV1NSdW50aW1lU2VydmVyRGVmYXVsdHMoKSB0aHJvd3MgRXhjZXB0aW9uOwotCQotCS8qKgotCSAqIEluaXRpYWxpemUgdGhlIGluaXRpYWwgc2VsZWN0aW9uIHdoaWNoIGRyaXZlcyB0aGUgV2ViIFNlcnZpY2Ugd2l6YXJkLiBUaGlzIGNvdWxkIGluY2x1ZGUgc291cmNlIEphdmEgZmlsZXMsCi0JICogV1NETCBVUkxzIGFuZCBldmVuIEVKQnMuCi0JICogQHRocm93cyBFeGNlcHRpb24KLQkgKi8KLQlwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBpbml0SW5pdGlhbFNlbGVjdGlvbigpIHRocm93cyBFeGNlcHRpb247Ci0JCi0JLyoqCi0JICogQ2xlYW4gdXAgdGhlIHdvcmtzcGFjZS4gQ2xlYW51cCBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIHN0ZXBzOgotCSAqIDEpIERlbGV0ZSB0aGUgaW5wdXQgZGF0YS4gVGhpcyBzaG91bGQgaW5jbHVkZSByZW1vdmFsIG9mIGNvbmZpZ3VyYXRpb24gZGF0YSBvbiB0aGUgc2VydmVyIGlmIG5lY2Vzc2FyeS4KLQkgKiAyKSBTdG9wIHRoZSBzZXJ2ZXIuCi0JICogMykgRGVsZXRlIHRoZSBzZXJ2ZXIuCi0JICogNCkgRGVsZXRlIHRoZSBzZXJ2ZXIgcnVudGltZS4KLQkgKi8KLQlwcm90ZWN0ZWQgdm9pZCB0ZWFyRG93bigpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCXN0b3BTZXJ2ZXIoKTsKLS8vCQlkZWxldGVTZXJ2ZXIoKTsKLS8vICAgICAgZGVsZXRlSW5wdXREYXRhKCk7Ci0vLwkJZGVsZXRlU2VydmVyUnVudGltZSgpOwotCX0KLQkKLQkvKioKLQkgKiBEZWxldGUgdGhlIGlucHV0IGRhdGEuIFRoaXMgc2hvdWxkIGluY2x1ZGUgcmVtb3ZhbCBvZiBwcm9qZWN0cywgc3JjIGZpbGVzIGV0Yy4gYXMgd2VsbCBhcyByZW1vdmFsIG9mIGFueSBzZXJ2ZXIgY29uZmlndXJlZCBkYXRhLgotCSAqIEB0aHJvd3MgRXhjZXB0aW9uCi0JICovCi0JcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgZGVsZXRlSW5wdXREYXRhKCkgdGhyb3dzIEV4Y2VwdGlvbjsKLQkKLQkvKioKLQkgKiBTdG9wIHRoZSBzZXJ2ZXIgaWYgaXQgaXMgcnVubmluZy4KLQkgKiBAdGhyb3dzIEV4Y2VwdGlvbgotCSAqLwotCXByb3RlY3RlZCB2b2lkIHN0b3BTZXJ2ZXIoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlpZiAoc2VydmVyXyAhPSBudWxsICYmIHNlcnZlcl8uZ2V0U2VydmVyU3RhdGUoKSA9PSBJU2VydmVyLlNUQVRFX1NUQVJURUQpCi0JCQlzZXJ2ZXJfLnN0b3AodHJ1ZSk7Ci0JCWFzc2VydFRydWUoc2VydmVyXy5nZXRTZXJ2ZXJTdGF0ZSgpID09IElTZXJ2ZXIuU1RBVEVfU1RPUFBFRCk7Ci0JfQotCQotCS8qKgotCSAqIERlbGV0ZSB0aGUgc2VydmVyLgotCSAqIEB0aHJvd3MgRXhjZXB0aW9uCi0JICovCi0JcHJvdGVjdGVkIHZvaWQgZGVsZXRlU2VydmVyKCkgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJaWYgKHNlcnZlcl8gIT0gbnVsbCkKLQkJCXNlcnZlcl8uZGVsZXRlKCk7Ci0JfQotCQotCS8qKgotCSAqIERlbGV0ZSB0aGUgc2VydmVyIHJ1bnRpbWUuCi0JICogQHRocm93cyBFeGNlcHRpb24KLQkgKi8KLQlwcm90ZWN0ZWQgdm9pZCBkZWxldGVTZXJ2ZXJSdW50aW1lKCkgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJaWYgKHNlcnZlclJ1bnRpbWVfICE9IG51bGwpCi0JCQlzZXJ2ZXJSdW50aW1lXy5kZWxldGUoKTsKLQl9Ci0JCi0JLyoqCi0JICogR2V0IHRoZSBkZWZhdWx0IFVSTCBpbiB0aGUgZm9ybSBvZjogaHR0cDovL2xvY2FsaG9zdDo5MDgwLzxjb250ZXh0Um9vdD4vPHBhdGg+Ci0JICogQHBhcmFtIHBhdGggLSBhIGZpbGUgb3IgVVJMIHJlbGF0aXZlIHBhdGguCi0JICogQHBhcmFtIGNvbnRleHRSb290IC0gdGhlIGNvbnRleHQgcm9vdCBvZiB0aGUgV2ViIG1vZHVsZSBmb3IgdGhpcyBVUkwuCi0JICogQHJldHVybgotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgZ2V0RGVmYXVsdFVSTChTdHJpbmcgcGF0aCxTdHJpbmcgY29udGV4dFJvb3QpCi0JewotCQlTdHJpbmdCdWZmZXIgdXJsID0gbmV3IFN0cmluZ0J1ZmZlcihkZWZhdWx0VVJMXyk7Ci0JCXVybC5hcHBlbmQoY29udGV4dFJvb3QpOwotCQl1cmwuYXBwZW5kKCcvJyk7Ci0JCXVybC5hcHBlbmQocGF0aCk7Ci0JCXJldHVybiB1cmwudG9TdHJpbmcoKTsKLQl9CQotCQotCXByb3RlY3RlZCB2b2lkIGxvZ0JhZFN0YXR1cyhJU3RhdHVzIHN0YXR1cykKLQl7Ci0JCVRlc3RzUGx1Z2luLmdldERlZmF1bHQoKS5nZXRMb2coKS5sb2coU3RhdHVzVXRpbHMuaW5mb1N0YXR1cygiKioqIEpTVC5XUyBKVU5JVCBFUlJPUiAoU1RBUlQpICoqKiIpKTsKLQkJVGVzdHNQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldExvZygpLmxvZyhzdGF0dXMpOwotCQlUZXN0c1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0TG9nKCkubG9nKFN0YXR1c1V0aWxzLmluZm9TdGF0dXMoIioqKiBKU1QuV1MgSlVOSVQgRVJST1IgKEVORCkgKioqIikpOwotCX0KLQkKLQkvKioKLQkgKiBTcGluIHRoZSBldmVudCBsb29wIGZvciBhd2hpbGUgdG8gZ2l2ZSBiYWNrZ3JvdW5kIGFjdGl2aXR5IGEgY2hhbmNlIHRvCi0JICogZGllIGRvd24uIFRoaXMgZGVjcmVhc2VzIHRoZSBjaGFuY2UgdGhhdCB1bnJlbGF0ZWQgYmFja2dyb3VuZCB3b3JrIHdpbGwKLQkgKiBhZmZlY3QgcmVzdWx0cyBmb3IgdGhlIHNjZW5hcmlvIGJlaW5nIHRlc3RlZC4KLQkgKiAKLQkgKiBAcGFyYW0gZHVyYXRpb24KLQkgKiAgICAgICAgICAgIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBzcGluIHRoZSBldmVudCBsb29wLgotCSAqLwotCXByb3RlY3RlZCB2b2lkIHJ1bkV2ZW50TG9vcChmaW5hbCBpbnQgZHVyYXRpb24pIHsKLQkJZmluYWwgRGlzcGxheSBkaXNwbGF5ID0gRGlzcGxheS5nZXREZWZhdWx0KCk7Ci0JCVJ1bm5hYmxlIHVwZGF0ZSA9IG5ldyBSdW5uYWJsZSgpIHsKLQkJCXB1YmxpYyB2b2lkIHJ1bigpIHsKLQkJCQlsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7Ci0JCQkJd2hpbGUgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnQgPCBkdXJhdGlvbikgewotCQkJCQlpZiAoIWRpc3BsYXkucmVhZEFuZERpc3BhdGNoKCkpCi0JCQkJCQlkaXNwbGF5LnNsZWVwKCk7Ci0JCQkJfQotCQkJfQotCQl9OwotCQlpZiAoRGlzcGxheS5nZXRDdXJyZW50KCkgPT0gbnVsbCkKLQkJCWRpc3BsYXkuc3luY0V4ZWModXBkYXRlKTsKLQkJZWxzZQotCQkJdXBkYXRlLnJ1bigpOwotCX0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvYXhpcy90b21jYXQvdjUwL1dTV2l6YXJkVG9tY2F0NTBUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL2F4aXMvdG9tY2F0L3Y1MC9XU1dpemFyZFRvbWNhdDUwVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjYyNmIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvYXhpcy90b21jYXQvdjUwL1dTV2l6YXJkVG9tY2F0NTBUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5XU1dpemFyZFRlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnV0aWwuSlVuaXRVdGlsczsKLQotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgV1NXaXphcmRUb21jYXQ1MFRlc3QgZXh0ZW5kcyBXU1dpemFyZFRlc3QgewotICAKLQlwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIFNFUlZFUl9JTlNUQUxMX1BBVEggPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwIik7Ci0JcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBSVU5USU1FVFlQRUlEX1RDNTAgPSAib3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQucnVudGltZS41MCI7Ci0JcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBTRVJWRVJUWVBFSURfVEM1MCA9ICJvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC41MCI7Ci0JICAKLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgY29tLmlibS5ldG9vbHMud2Vic2VydmljZS53YXMudGVzdHMuV1NXaXphcmRUZXN0I2luc3RhbGxTZXJ2ZXJSdW50aW1lKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIGluc3RhbGxTZXJ2ZXJSdW50aW1lKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0KLSAgICBzZXJ2ZXJSdW50aW1lXyA9IEpVbml0VXRpbHMuY3JlYXRlU2VydmVyUnVudGltZShSVU5USU1FVFlQRUlEX1RDNTAsIFNFUlZFUl9JTlNUQUxMX1BBVEgpOwotICB9Ci0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgY29tLmlibS5ldG9vbHMud2Vic2VydmljZS53YXMudGVzdHMuV1NXaXphcmRUZXN0I2luc3RhbGxTZXJ2ZXIoKQotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgaW5zdGFsbFNlcnZlcigpIHRocm93cyBFeGNlcHRpb24gewotCi0gICAgc2VydmVyXyA9IEpVbml0VXRpbHMuY3JlYXRlU2VydmVyKCJBcGFjaGUgVG9tY2F0IHY1MCIsIFNFUlZFUlRZUEVJRF9UQzUwLCBzZXJ2ZXJSdW50aW1lXywgZW52XywgbnVsbCApOwotICB9Ci0gIAotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy9wbHVnaW4vVGVzdHNQbHVnaW4uamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvcGx1Z2luL1Rlc3RzUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMmM3Y2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy9wbHVnaW4vVGVzdHNQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGx1Z2luOwotCi1pbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwotCi0vKioKLSAqIFRoZSBtYWluIHBsdWdpbiBjbGFzcyB0byBiZSB1c2VkIGluIHRoZSBkZXNrdG9wLgotICovCi1wdWJsaWMgY2xhc3MgVGVzdHNQbHVnaW4gZXh0ZW5kcyBQbHVnaW4gewotCS8vVGhlIHNoYXJlZCBpbnN0YW5jZS4KLQlwcml2YXRlIHN0YXRpYyBUZXN0c1BsdWdpbiBwbHVnaW47Ci0JLy9SZXNvdXJjZSBidW5kbGUuCi0JcHJpdmF0ZSBSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZUJ1bmRsZTsKLQkKLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IuCi0JICovCi0JcHVibGljIFRlc3RzUGx1Z2luKCkgewotCQlzdXBlcigpOwotCQlwbHVnaW4gPSB0aGlzOwotCQl0cnkgewotCQkJcmVzb3VyY2VCdW5kbGUgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoIm9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wbHVnaW4uVGVzdHNQbHVnaW4iKTsKLQkJfSBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIHgpIHsKLQkJCXJlc291cmNlQnVuZGxlID0gbnVsbDsKLQkJfQotCX0KLQotCS8qKgotCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB1cG9uIHBsdWctaW4gYWN0aXZhdGlvbgotCSAqLwotCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0YXJ0KGNvbnRleHQpOwotCX0KLQotCS8qKgotCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBwbHVnLWluIGlzIHN0b3BwZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0b3AoY29udGV4dCk7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgVGVzdHNQbHVnaW4gZ2V0RGVmYXVsdCgpIHsKLQkJcmV0dXJuIHBsdWdpbjsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzdHJpbmcgZnJvbSB0aGUgcGx1Z2luJ3MgcmVzb3VyY2UgYnVuZGxlLAotCSAqIG9yICdrZXknIGlmIG5vdCBmb3VuZC4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRSZXNvdXJjZVN0cmluZyhTdHJpbmcga2V5KSB7Ci0JCVJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IFRlc3RzUGx1Z2luLmdldERlZmF1bHQoKS5nZXRSZXNvdXJjZUJ1bmRsZSgpOwotCQl0cnkgewotCQkJcmV0dXJuIChidW5kbGUgIT0gbnVsbCkgPyBidW5kbGUuZ2V0U3RyaW5nKGtleSkgOiBrZXk7Ci0JCX0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7Ci0JCQlyZXR1cm4ga2V5OwotCQl9Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgcGx1Z2luJ3MgcmVzb3VyY2UgYnVuZGxlLAotCSAqLwotCXB1YmxpYyBSZXNvdXJjZUJ1bmRsZSBnZXRSZXNvdXJjZUJ1bmRsZSgpIHsKLQkJcmV0dXJuIHJlc291cmNlQnVuZGxlOwotCX0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvQWxsV1NKVW5pdFRlc3RzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L0FsbFdTSlVuaXRUZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjA5ZTVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvQWxsV1NKVW5pdFRlc3RzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDQgICAxMTQ4MzUgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA3MDMxNCAgMTc2ODg2IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqIDIwMDcxMDMwICAyMDgxMjQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcxMDMxICAyMDgxMjQga2F0aHlAY2EuaWJtLmNvbSAtIEthdGh5IENoYW4KLSAqIDIwMDcxMTE2ICAyMDgxMjQgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnVuaXR0ZXN0OwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci1pbXBvcnQganVuaXQudGV4dHVpLlRlc3RSdW5uZXI7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudXRpbC5KVW5pdFV0aWxzOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgdG8gcnVuIGFsbCB0aGUgdW5pdHRlc3QgdGVzdHMuCi0gKi8KLXB1YmxpYyBjbGFzcyBBbGxXU0pVbml0VGVzdHMgZXh0ZW5kcyBUZXN0Q2FzZSBpbXBsZW1lbnRzIFdTSlVuaXRDb25zdGFudHMKLXsKLSAgLyoqCi0gICAqIE1ldGhvZCBwYXJzZUFyZ3MuCi0gICAqIAotICAgKiBAcGFyYW0gYXJncwotICAgKi8KLSAgcHJpdmF0ZSB2b2lkIHBhcnNlQXJncyhPYmplY3QgYXJncykKLSAgewotICAgIC8vIHR5cGljaWFsbHkgYXJncyBpcyBhbiBhcnJheSBvZiBzdHJpbmdzLAotICAgIC8vIG5vdCBzdXJlIHdoZW4gaXQgd291bGRuJ3QgYmUuCi0gIH0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQotICB7Ci0gICAgbmV3IEFsbFdTSlVuaXRUZXN0cygpLnJ1bk1haW4oYXJncyk7Ci0gIH0KLQotICAKLSAgcHVibGljIE9iamVjdCBydW5NYWluKE9iamVjdCBhcmdzKQotICB7Ci0gICAgT2JqZWN0IHJlc3VsdCA9IG51bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgVGVzdFJ1bm5lciB0ZXN0UnVubmVyID0gbnVsbDsKLQotICAgICAgcGFyc2VBcmdzKGFyZ3MpOwotCi0gICAgICB0ZXN0UnVubmVyID0gbmV3IFRlc3RSdW5uZXIoU3lzdGVtLm91dCk7Ci0KLSAgICAgIFRlc3Qgc3VpdGUgPSBzdWl0ZSgpOwotICAgICAgVGVzdFJlc3VsdCB0ZXN0UmVzdWx0ID0gdGVzdFJ1bm5lci5kb1J1bihzdWl0ZSwgZmFsc2UpOwotICAgICAgcHJpbnRIZWFkZXIodGVzdFJlc3VsdCk7ICAgICAgCi0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBlOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgSlVuaXRVdGlscy5lbmFibGVPdmVyd3JpdGUodHJ1ZSk7Ci0gICAgCi0gICAgVGVzdFN1aXRlIHRlc3RTdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLSAgICB0ZXN0U3VpdGUuYWRkVGVzdCggQ29tcG9uZW50Q3JlYXRpb25UZXN0cy5zdWl0ZSgpICk7Ci0gICAgdGVzdFN1aXRlLmFkZFRlc3QoIEoyRUVVdGlsc1Rlc3RzLnN1aXRlKCkgKTsKLSAgIAotICAgIC8vIFRlc3RzIHdoaWNoIHJlcXVpcmUgYSBUb21jYXQgc2VydmVyCi0gICAgU3RyaW5nIHMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwIik7Ci0gICAgaWYgKHMgIT0gbnVsbCAmJiBzLmxlbmd0aCgpID4gMCkgewotLy8gICAgICB0ZXN0U3VpdGUuYWRkVGVzdCggQlVKYXZhQXhpc1RDNTAuc3VpdGUoKSApOwotICAgICAgdGVzdFN1aXRlLmFkZFRlc3QoIFRESmF2YUF4aXNUQzUwLnN1aXRlKCkgKTsKLSAgICAgIHRlc3RTdWl0ZS5hZGRUZXN0KCBDbGllbnRBeGlzVEM1MC5zdWl0ZSgpICk7Ci0gICAgICB0ZXN0U3VpdGUuYWRkVGVzdCggU2VydmVyQ3JlYXRpb25UZXN0cy5zdWl0ZSgpKTsKLQotICAgIH0KLSAgICB0ZXN0U3VpdGUuYWRkVGVzdCggUmVzb3VyY2VVdGlsc1Rlc3RzLnN1aXRlKCkgKTsKLQotICAgIHJldHVybiB0ZXN0U3VpdGU7Ci0gIH0KLQotICAvKioKLSAgICogUHJpbnRzIHRoZSBoZWFkZXIgb2YgdGhlIHJlcG9ydAotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgcHJpbnRIZWFkZXIoVGVzdFJlc3VsdCByZXN1bHQpCi0gIHsKLSAgICBpZiAocmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSkKLSAgICB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnQoIk9LIik7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAoIiArIHJlc3VsdC5ydW5Db3VudCgpICsgIiB0ZXN0cykiKTsKLQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZBSUxVUkVTISEhIik7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCi0gICAgICAgICJUZXN0cyBydW46ICIKLSAgICAgICAgICArIHJlc3VsdC5ydW5Db3VudCgpCi0gICAgICAgICAgKyAiLCAgRmFpbHVyZXM6ICIKLSAgICAgICAgICArIHJlc3VsdC5mYWlsdXJlQ291bnQoKQotICAgICAgICAgICsgIiwgIEVycm9yczogIgotICAgICAgICAgICsgcmVzdWx0LmVycm9yQ291bnQoKSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L0JVSmF2YUF4aXNUQzUwLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L0JVSmF2YUF4aXNUQzUwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMzNiMDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91bml0dGVzdC9CVUphdmFBeGlzVEM1MC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDEwNCAgIDExNDgzNSBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDcwNTA5ICAgMTgwNTY3IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNzExMTYgICAyMDgxMjQgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA3MTIxNyAgIDE4NzI4MCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDgwMjA3ICAgMjE3MzQ2IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwODAzMTMgICAxMjY3NzQgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA4MDQyOSAgIDIyODk0NSBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudW5pdHRlc3Q7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLmF4aXMudG9tY2F0LnY1MC5XU1dpemFyZFRvbWNhdDUwVGVzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudXRpbC5KVW5pdFV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsLlNjZW5hcmlvQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLkFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyOwotCi0vKioKLSAqIEJvdHRvbSB1cCBwZXJmb3JtYW5jZSBzY2VuYXJpbyB3aXRoIEF4aXMgYW5kIFRvbWNhdCB2NS4wCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBCVUphdmFBeGlzVEM1MCBleHRlbmRzIFdTV2l6YXJkVG9tY2F0NTBUZXN0IHsKLQkvLyBDb25zdGFudHMKLSAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBXU19SVU5USU1FSURfQVhJUyA9ICBXU0pVbml0Q29uc3RhbnRzLldTX1JVTlRJTUVJRF9BWElTOyAKLQlwcml2YXRlIFN0cmluZyBQUk9KRUNUX05BTUUgPSBXU0pVbml0Q29uc3RhbnRzLkJVX1BST0pFQ1RfTkFNRTsKLSAgICAKLQlwcml2YXRlIElGaWxlIHNvdXJjZUZpbGVfOwotCQotCQotCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpewotCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShCVUphdmFBeGlzVEM1MC5jbGFzcyk7Ci0JfQotCQotICAvKioKLSAgICogU2V0cyB1cCB0aGUgaW5wdXQgZGF0YTsKLSAgICogLSBjcmVhdGUgcHJvamVjdChzKSwKLSAgICogLSBjb3B5IHJlc291cmNlcyB0byB3b3Jrc3BhY2UgCi0gICAqLwotCXByb3RlY3RlZCB2b2lkIGluc3RhbGxJbnB1dERhdGEoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQkKLQkJSVByb2plY3Qgd2ViUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChQUk9KRUNUX05BTUUpOwotICAgICAgICBJUGF0aCBkZXN0UGF0aCA9IFJlc291cmNlVXRpbHMuZ2V0SmF2YVNvdXJjZUxvY2F0aW9uKHdlYlByb2plY3QpOwotICAgICAgICBJRm9sZGVyIGZvbGRlciA9IChJRm9sZGVyKVJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKGRlc3RQYXRoKTsJCQotCQlKVW5pdFV0aWxzLmNvcHlUZXN0RGF0YSgiQlVKYXZhL3NyYyIsZm9sZGVyLGVudl8sIG51bGwpOwotCQlzb3VyY2VGaWxlXyA9IGZvbGRlci5nZXRGaWxlKG5ldyBQYXRoKCJmb28vRWNoby5qYXZhIikpOwotCQkvLyBFbnN1cmUgdGhhdCBFY2hvLmNsYXNzIGlzIGJ1aWx0IGluOgotCQkvLyA8V2ViIFByb2plY3Q+L1dlYkNvbnRlbnQvV0VCLUlORi9jbGFzc2VzL2Zvby9FY2hvLmNsYXNzCi0JCUpVbml0VXRpbHMuc3luY0J1aWxkUHJvamVjdCh3ZWJQcm9qZWN0LGVudl8sIG51bGwpOwotCQkvL2Fzc2VydFRydWUoSlVuaXRVdGlscy5nZXRDbGFzc2VzRm9sZGVyRm9yV2ViUHJvamVjdChXRUJfUFJPSkVDVF9OQU1FKS5nZXRGaWxlKG5ldyBQYXRoKCJmb28vRWNoby5jbGFzcyIpKS5leGlzdHMoKSk7Ci0JCQotCQkKLQl9Ci0JCi0gICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlUHJvamVjdHMoKSB0aHJvd3MgRXhjZXB0aW9uewotICAgICAgICBJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KFBST0pFQ1RfTkFNRSk7Ci0gICAgICAgIGlmICh3ZWJQcm9qZWN0PT1udWxsIHx8ICF3ZWJQcm9qZWN0LmV4aXN0cygpKXsKLSAgICAgICAgICAgIEpVbml0VXRpbHMuY3JlYXRlV2ViTW9kdWxlKFBST0pFQ1RfTkFNRSwgUFJPSkVDVF9OQU1FLCBzZXJ2ZXJfLmdldElkKCksIFNFUlZFUlRZUEVJRF9UQzUwLCAiMTQiLCBlbnZfLCBuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLSAgICAgICAgfQotICAgICAgfQotCQotICAvKioKLSAgICogU2V0IHRoZSBwZXJzaXN0ZW50IHNlcnZlciBydW50aW1lIGNvbnRleHQgcHJlZmVyZW5jZXMKLSAgICovICAKLQlwcm90ZWN0ZWQgdm9pZCBpbml0SjJFRVdTUnVudGltZVNlcnZlckRlZmF1bHRzKCkgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJLy8gU2V0IGRlZmF1bHQgcHJlZmVyZW5jZXMgZm9yIEF4aXMgYW5kIFRvbWNhdCA1LjAKLQkJSlVuaXRVdGlscy5zZXRXU1J1bnRpbWVTZXJ2ZXIoV1NfUlVOVElNRUlEX0FYSVMsIFNFUlZFUlRZUEVJRF9UQzUwKTsKLQkJSlVuaXRVdGlscy5zZXRTZXJ2aWNlU2NlbmFyaW9EZWZhdWx0KCk7Ci0JfQotCQotICAvKioKLSAgICogU2V0IHRoZSBpbml0aWFsIHNlbGVjdGlvbgotICAgKi8KLQlwcm90ZWN0ZWQgdm9pZCBpbml0SW5pdGlhbFNlbGVjdGlvbigpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCWluaXRpYWxTZWxlY3Rpb25fID0gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oc291cmNlRmlsZV8pOwotCX0KLQkKLSAgLyoqCi0gICAqIExhdW5jaGVzIHRoZSBwb3AtdXAgY29tbWFuZCB0byBpbml0aWF0ZSB0aGUgc2NlbmFyaW8KLSAgICogQHRocm93cyBFeGNlcHRpb24KLSAgICovICAKLQlwdWJsaWMgdm9pZCB0ZXN0QlVKYXZhQXhpc1RDNTAoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJCRUdJTjogQlVKYXZhQXhpc1RDNTAiKTsKLQkJCi0JICAgIElQcm9qZWN0IHdlYlByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoUFJPSkVDVF9OQU1FKTsKLQkgICAgCi0JICAgIEpVbml0VXRpbHMuc3luY0J1aWxkUHJvamVjdCh3ZWJQcm9qZWN0LCBlbnZfLCBudWxsKTsKLQkgICAgSlVuaXRVdGlscy5kaXNhYmxlV1NJRGlhbG9nKHdlYlByb2plY3QpOwotCi0JICAgIElTdGF0dXNbXSBzdGF0dXMgPSBKVW5pdFV0aWxzLmxhdW5jaENyZWF0aW9uV2l6YXJkKFNjZW5hcmlvQ29uc3RhbnRzLldJWkFSRElEX0JPVFRPTV9VUCxTY2VuYXJpb0NvbnN0YW50cy5PQkpFQ1RfQ0xBU1NfSURfSUZJTEUsaW5pdGlhbFNlbGVjdGlvbl8pOwotCi0gICAgICAgIHZlcmlmeU91dHB1dChzdGF0dXMpOwotCi0JCQotCX0KLQkKLSAgLyoqCi0gICAqIFZlcmlmeSB0aGUgc2NlbmFyaW8gY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgotICAgKi8KLQlwcml2YXRlIGZpbmFsIHZvaWQgdmVyaWZ5T3V0cHV0KElTdGF0dXNbXSBzdGF0dXMpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCXRyeSB7Ci0JICAgICAgICBJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KFBST0pFQ1RfTkFNRSk7ICAgIAotCQkJSUZvbGRlciB3ZWJDb250ZW50Rm9sZGVyID0gKElGb2xkZXIpSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRDb250YWluZXIod2ViUHJvamVjdCk7Ci0JICAgIAotCSAgICAgICAgSUZvbGRlciB3c2RsRm9sZGVyID0gd2ViQ29udGVudEZvbGRlci5nZXRGb2xkZXIoIndzZGwiKTsKLQkgICAgICAgIGlmICghd3NkbEZvbGRlci5leGlzdHMoKSl7Ci0JICAgICAgICAJcnVuRXZlbnRMb29wKDYwMDApOyAgLy8gNiBzZWNvbmRzCi0JICAgICAgICAJU3lzdGVtLm91dC5wcmludGxuKCJSdW5uaW5nIGV2ZW50IGxvb3Agd2hpbGUgd3NkbCBmb2xkZXIgaXMgY3JlYXRlZC4uLiIpOwotCSAgICAgICAgfQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJBc3NlcnQgQlUgd3NkbCBmb2xkZXIgZXhpc3RzPyA9ICIrd3NkbEZvbGRlci5leGlzdHMoKSk7Ci0JICAgICAgICBhc3NlcnRUcnVlKHdzZGxGb2xkZXIuZXhpc3RzKCkpOwotCQkJCi0JCQlpZiAoISh3c2RsRm9sZGVyLm1lbWJlcnMoKS5sZW5ndGggPiAwKSl7Ci0JCQkJcnVuRXZlbnRMb29wKDYwMDApOwotCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiUnVubmluZyBldmVudCBsb29wIHdoaWxlIGNvbnRlbnRzIG9mIHdzZGwgZm9sZXIgYXJlIGNyZWF0ZWQuLi4iKTsKLQkJCX0KLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQXNzZXJ0IEJVIHdzZGwgZmlsZSBleGlzdHMuICMgb2YgZmlsZXMgPSAiICsgKHdzZGxGb2xkZXIubWVtYmVycygpLmxlbmd0aCA+IDApKTsKLQkJCWFzc2VydFRydWUod3NkbEZvbGRlci5tZW1iZXJzKCkubGVuZ3RoID4gMCk7Ci0JICAgIAotCQkJQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXIgc3RhdHVzSGFuZGxlciA9IG5ldyBBY2N1bXVsYXRlU3RhdHVzSGFuZGxlcihzdGF0dXMpOwotCQkJSVN0YXR1c1tdIHMgPSBzdGF0dXNIYW5kbGVyLmdldEVycm9yUmVwb3J0cygpOwotCQkJYXNzZXJ0RXF1YWxzKCJBc3NlcnQgbnVtYmVyIG9mIGVycm9yIHJlcG9ydHMgaXMgemVybyIsIDAsIHMubGVuZ3RoKTsKLQkKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiRU5EOiBCVUphdmFBeGlzVEM1MCIpOwotCQl9Ci0JCWZpbmFsbHl7Ci0JCQlBY2N1bXVsYXRlU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyID0gbmV3IEFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyKHN0YXR1cyk7Ci0JCQlJU3RhdHVzW10gcyA9IHN0YXR1c0hhbmRsZXIuZ2V0RXJyb3JSZXBvcnRzKCk7Ci0JCQkvLwotCQkJaWYgKHMubGVuZ3RoID4gMCl7Ci0JCQkJZm9yIChpbnQgaT0wO2k8cy5sZW5ndGg7aSsrKXsKLQkJCQkJbG9nQmFkU3RhdHVzKHNbaV0pOwotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9yIG1lc3NhZ2UgZm9yIHJlcG9ydCAjIitpKyI6ICIrc1tpXS5nZXRNZXNzYWdlKCkpOwotCQkJCX0KLQkJCX0KLQkJfQotCQkKLQl9Ci0JCi0gIC8qKgotICAgKiBDbGVhciB3b3Jrc3BhY2UgaWYgbmVjZXNzYXJ5Ci0gICAqLwotCXByb3RlY3RlZCB2b2lkIGRlbGV0ZUlucHV0RGF0YSgpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCS8vIFJlbW92ZSB0aGUgRUFSIGZyb20gdGhlIHNlcnZlci4KLQkJSVByb2plY3Qgd2ViUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChQUk9KRUNUX05BTUUpOwotCQkvL0pVbml0VXRpbHMucmVtb3ZlTW9kdWxlRnJvbVNlcnZlcihzZXJ2ZXJfLHdlYlByb2plY3QsZW52Xyk7Ci0JCQotCQkvLyBEZWxldGUgdGhlIFdlYiBwcm9qZWN0LgotCQl3ZWJQcm9qZWN0LmRlbGV0ZSh0cnVlLHRydWUsIG51bGwpOwotICAgICAgICBhc3NlcnRGYWxzZSh3ZWJQcm9qZWN0LmV4aXN0cygpKTsKLQkJCi0JfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91bml0dGVzdC9DbGllbnRBeGlzVEM1MC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91bml0dGVzdC9DbGllbnRBeGlzVEM1MC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDdjZGExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvQ2xpZW50QXhpc1RDNTAuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAxMDQgICAxMTQ4MzUgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA3MDUwOSAgIDE4MDU2NyBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDcxMTE2ICAgMjA4MTI0IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNzEyMTcgICAxODcyODAgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA4MDIwNyAgIDIxNzM0NiBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDgwMzEzICAgMTI2Nzc0IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwODA0MjkgICAyMjg5NDUgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnVuaXR0ZXN0OwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5OdWxsUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAuV1NXaXphcmRUb21jYXQ1MFRlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnV0aWwuSlVuaXRVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudXRpbC5TY2VuYXJpb0NvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5BY2N1bXVsYXRlU3RhdHVzSGFuZGxlcjsKLQotLyoqCi0gKiBDbGllbnQgcGVyZm9ybWFuY2Ugc2NlbmFyaW8gd2l0aCBBeGlzIGFuZCBUb21jYXQgdjUuMAotICovCi1wdWJsaWMgY2xhc3MgQ2xpZW50QXhpc1RDNTAgZXh0ZW5kcyBXU1dpemFyZFRvbWNhdDUwVGVzdCB7Ci0KLQlwcml2YXRlIGZpbmFsIFN0cmluZyBXU19SVU5USU1FSURfQVhJUyA9IFdTSlVuaXRDb25zdGFudHMuV1NfUlVOVElNRUlEX0FYSVM7Ci0gIAotCXByaXZhdGUgU3RyaW5nIENMSUVOVF9QUk9KRUNUX05BTUUgPSBXU0pVbml0Q29uc3RhbnRzLkNMSUVOVF9QUk9KRUNUX05BTUU7Ci0JCi0JcHJpdmF0ZSBJRmlsZSBzb3VyY2VGaWxlXzsKLQotCQotCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpewotCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShDbGllbnRBeGlzVEM1MC5jbGFzcyk7Ci0JfQotCQotICAgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZVByb2plY3RzKCkgdGhyb3dzIEV4Y2VwdGlvbnsKLSAgICAgICAgSVByb2plY3Qgd2ViUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChDTElFTlRfUFJPSkVDVF9OQU1FKTsKLSAgICAgICAgaWYgKCF3ZWJQcm9qZWN0LmV4aXN0cygpKXsKLSAgICAgICAgICBKVW5pdFV0aWxzLmNyZWF0ZVdlYk1vZHVsZShDTElFTlRfUFJPSkVDVF9OQU1FLCBDTElFTlRfUFJPSkVDVF9OQU1FLCBzZXJ2ZXJfLmdldElkKCksU0VSVkVSVFlQRUlEX1RDNTAsICIxNCIsIGVudl8sIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLQkvKioKLSAgICogU2V0cyB1cCB0aGUgaW5wdXQgZGF0YTsKLSAgICogLSBjcmVhdGUgcHJvamVjdChzKSwKLSAgICogLSBjb3B5IHJlc291cmNlcyB0byB3b3Jrc3BhY2UgCi0JICovCi0JcHJvdGVjdGVkIHZvaWQgaW5zdGFsbElucHV0RGF0YSgpIHRocm93cyBFeGNlcHRpb24gewotCQkKLQkJSVByb2plY3Qgd2ViUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChDTElFTlRfUFJPSkVDVF9OQU1FKTsKLSAgICAgICAgSUZvbGRlciBkZXN0Rm9sZGVyID0gKElGb2xkZXIpSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRDb250YWluZXIod2ViUHJvamVjdCk7Ci0gICAgICAgIEpVbml0VXRpbHMuY29weVRlc3REYXRhKCJUREphdmEiLGRlc3RGb2xkZXIsZW52XywgbnVsbCk7Ci0JCXNvdXJjZUZpbGVfID0gZGVzdEZvbGRlci5nZXRGaWxlKG5ldyBQYXRoKCJFY2hvLndzZGwiKSk7CQkKLQkJSlVuaXRVdGlscy5zeW5jQnVpbGRQcm9qZWN0KHdlYlByb2plY3QsZW52XywgbnVsbCk7Ci0JCQotCX0KLQotICAvKioKLSAgICogU2V0IHRoZSBwZXJzaXN0ZW50IHNlcnZlciBydW50aW1lIGNvbnRleHQgcHJlZmVyZW5jZXMKLSAgICovCi0JcHJvdGVjdGVkIHZvaWQgaW5pdEoyRUVXU1J1bnRpbWVTZXJ2ZXJEZWZhdWx0cygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICAvLyBTZXQgZGVmYXVsdCBwcmVmZXJlbmNlcyBmb3IgQXhpcyBhbmQgVG9tY2F0IDUuMCAgICAKLQkJSlVuaXRVdGlscy5zZXRXU1J1bnRpbWVTZXJ2ZXIoV1NfUlVOVElNRUlEX0FYSVMsIFNFUlZFUlRZUEVJRF9UQzUwKTsKLQkJSlVuaXRVdGlscy5zZXRDbGllbnRTY2VuYXJpb0RlZmF1bHQoKTsKLQl9Ci0KLSAgLyoqCi0gICAqIFNldCB0aGUgaW5pdGlhbCBzZWxlY3Rpb24KLSAgICovCi0JcHJvdGVjdGVkIHZvaWQgaW5pdEluaXRpYWxTZWxlY3Rpb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJaW5pdGlhbFNlbGVjdGlvbl8gPSBuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihzb3VyY2VGaWxlXyk7Ci0JfQotCi0gIC8qKgotICAgKiBMYXVuY2hlcyB0aGUgcG9wLXVwIGNvbW1hbmQgdG8gaW5pdGlhdGUgdGhlIHNjZW5hcmlvCi0gICAqIEB0aHJvd3MgRXhjZXB0aW9uCi0gICAqLwotCXB1YmxpYyB2b2lkIHRlc3RDbGllbnRBeGlzVEM1MCgpIHRocm93cyBFeGNlcHRpb24KLQl7CQotCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJCRUdJTjogQ2xpZW50QXhpc1RDNTAiKTsKLQkJCi0JCUpVbml0VXRpbHMuZW5hYmxlUHJveHlHZW5lcmF0aW9uKHRydWUpOwotCQlKVW5pdFV0aWxzLmVuYWJsZU92ZXJ3cml0ZSh0cnVlKTsKLSAgICAgICAgCi0JCUlTdGF0dXNbXSBzdGF0dXMgPSBKVW5pdFV0aWxzLmxhdW5jaENyZWF0aW9uV2l6YXJkKFNjZW5hcmlvQ29uc3RhbnRzLldJWkFSRElEX0NMSUVOVCxTY2VuYXJpb0NvbnN0YW50cy5PQkpFQ1RfQ0xBU1NfSURfSUZJTEUsaW5pdGlhbFNlbGVjdGlvbl8pOwotCi0JICAgIHZlcmlmeU91dHB1dChzdGF0dXMpOwotCi0KLQl9Ci0JCi0gIC8qKgotICAgKiBWZXJpZnkgdGhlIHNjZW5hcmlvIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLSAgICogQHRocm93cyBFeGNlcHRpb24KLSAgICovCi0JcHJpdmF0ZSBmaW5hbCB2b2lkIHZlcmlmeU91dHB1dChJU3RhdHVzW10gc3RhdHVzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJCi0JCXRyeSB7Ci0JICAgICAgICBJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KENMSUVOVF9QUk9KRUNUX05BTUUpOwotCSAgICAKLQkgICAgICAgIElQYXRoIGRlc3RQYXRoID0gUmVzb3VyY2VVdGlscy5nZXRKYXZhU291cmNlTG9jYXRpb24od2ViUHJvamVjdCk7Ci0JICAgICAgICBJRm9sZGVyIHNyY0ZvbGRlciA9IChJRm9sZGVyKVJlc291cmNlVXRpbHMuZmluZFJlc291cmNlKGRlc3RQYXRoKTsKLQkgICAgCi0JCQkvL0lGb2xkZXIgc3JjRm9sZGVyID0gSlVuaXRVdGlscy5nZXRTb3VyY2VGb2xkZXJGb3JXZWJQcm9qZWN0KENMSUVOVF9QUk9KRUNUX05BTUUpOwotCQkJSUZvbGRlciBmb2xkZXIgPSBzcmNGb2xkZXIuZ2V0Rm9sZGVyKCJmb28iKTsKLQkJCWlmICghZm9sZGVyLmV4aXN0cygpKXsKLQkJCQlydW5FdmVudExvb3AoNjAwMCk7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJSdW5uaW5nIGV2ZW50IGxvb3Agd2hpbGUgc291cmNlIHBhY2thZ2UgaXMgY3JlYXRlZC4uLiIpOwotCQkJfQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJBc3NlcnQgY2xpZW50IGphdmEgcGFja2FnZSBleGlzdHM/ID0gIitmb2xkZXIuZXhpc3RzKCkpOwotCQkJYXNzZXJ0VHJ1ZShmb2xkZXIuZXhpc3RzKCkpOwotCQotCQkJCi0JCQlpZiAoIShmb2xkZXIubWVtYmVycygpLmxlbmd0aCA+IDApKXsKLQkJCQlydW5FdmVudExvb3AoNjAwMCk7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJSdW5uaW5nIGV2ZW50IGxvb3Agd2hpbGUgY29udGVudHMgb2Ygd3NkbCBmb2xlciBhcmUgY3JlYXRlZC4uLiIpOwotCQkJfQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJDbGllbnQgSmF2YSBmaWxlcyBleGlzdHM/ID0gIisoZm9sZGVyLm1lbWJlcnMoKS5sZW5ndGggPiAwKSk7Ci0JCQlhc3NlcnRUcnVlKGZvbGRlci5tZW1iZXJzKCkubGVuZ3RoID4gMCk7Ci0JCQkKLQkJCS8vIENoZWNrIHN0YXR1cyBoYW5kbGVyIGZvciBlcnJvcnMKLQkJCUFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyIHN0YXR1c0hhbmRsZXIgPSBuZXcgQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXIoc3RhdHVzKTsKLQkJCUlTdGF0dXNbXSBzID0gc3RhdHVzSGFuZGxlci5nZXRFcnJvclJlcG9ydHMoKTsKLQkJCWFzc2VydEVxdWFscygiQXNzZXJ0IG51bWJlciBvZiBjbGllbnQgZXJyb3IgcmVwb3J0cyBpcyB6ZXJvIiwgMCwgcy5sZW5ndGgpOwotCQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJFTkQ6IENsaWVudEF4aXNUQzUwIik7Ci0JCX0KLQkJZmluYWxseSB7Ci0JCQlBY2N1bXVsYXRlU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyID0gbmV3IEFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyKHN0YXR1cyk7Ci0JCQlJU3RhdHVzW10gcyA9IHN0YXR1c0hhbmRsZXIuZ2V0RXJyb3JSZXBvcnRzKCk7Ci0JCQlpZiAocy5sZW5ndGggPiAwKXsKLQkJCQlmb3IgKGludCBpPTA7aTxzLmxlbmd0aDtpKyspewotCQkJCQlsb2dCYWRTdGF0dXMoc1tpXSk7Ci0JCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiRXJyb3IgbWVzc2FnZSBmb3IgcmVwb3J0ICMiK2krIjogIitzW2ldLmdldE1lc3NhZ2UoKSk7Ci0JCQkJfQotCQkJfSAgIAkJCQotCQl9Ci0JfQotCQotICAvKioKLSAgICogUmVtb3ZlIHdvcmtzcGFjZSBpZiBuZWNlc3NhcnkKLSAgICovCi0JcHJvdGVjdGVkIHZvaWQgZGVsZXRlSW5wdXREYXRhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0KLQkJLy8gRGVsZXRlIHRoZSBXZWIgcHJvamVjdC4KLQkJSVByb2plY3Qgd2ViUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChDTElFTlRfUFJPSkVDVF9OQU1FKTsKLQkJd2ViUHJvamVjdC5kZWxldGUodHJ1ZSx0cnVlLCBudWxsKTsKLQkJCi0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L0NvbXBvbmVudENyZWF0aW9uVGVzdHMuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvQ29tcG9uZW50Q3JlYXRpb25UZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjJiNzRlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvQ29tcG9uZW50Q3JlYXRpb25UZXN0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDQgICAxMTQ4MzUgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA4MDMxMyAgMTI2Nzc0IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51bml0dGVzdDsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmV0b29scy5jb21tb24udGVzdC5hcGl0b29scy5Qcm9qZWN0VW56aXBVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uUmVzb3VyY2VVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMucGx1Z2luLlRlc3RzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsLkpVbml0VXRpbHM7Ci0KLS8qKgotICogVGVzdHMgdGhlIHZhcmlvdXMgQ29tcG9uZW50IGNyZWF0aW9uIGNvbW1hbmRzCi0gKi8KLXB1YmxpYyBjbGFzcyBDb21wb25lbnRDcmVhdGlvblRlc3RzIGV4dGVuZHMgVGVzdENhc2UgaW1wbGVtZW50cyBXU0pVbml0Q29uc3RhbnRzIHsKLQotCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpewotCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShDb21wb25lbnRDcmVhdGlvblRlc3RzLmNsYXNzKTsKLQl9Ci0JCi0JcHVibGljIHZvaWQgdGVzdFdlYkNvbXBvbmVudENyZWF0aW9uKCl7Ci0KLSAgICAgICAgY3JlYXRlU2VydmVyUnVudGltZSgpOwotICAgICAgICBjcmVhdGVEeW5hbWljV2ViTW9kdWxlKHByb2plY3ROYW1lcyk7Ci0gICAgICAgIC8vY3JlYXRlUHJvamVjdHMoKTsKLSAgICAgICAgLy9jcmVhdGVXZWJNb2R1bGUocHJvamVjdE5hbWUsIHByb2plY3ROYW1lLCBKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfNF9JRCk7Ci0gICAgICAgIC8vY3JlYXRlV2ViTW9kdWxlKHByb2plY3QyTmFtZSwgcHJvamVjdDJOYW1lLCBKMkVFVmVyc2lvbkNvbnN0YW50cy5KMkVFXzFfM19JRCk7Ci0KLQl9Ci0gIAotCS8vIENyZWF0ZXMgcHJvamVjdHMgZnJvbSB0aGUgcHJvdmlkZWQgWklQIGZpbGUuCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGNyZWF0ZVByb2plY3RzKCkgewotCQlJUGF0aCBsb2NhbFppcFBhdGggPSBnZXRMb2NhbFBhdGgoKTsKLQkJUHJvamVjdFVuemlwVXRpbCB1dGlsID0gbmV3IFByb2plY3RVbnppcFV0aWwobG9jYWxaaXBQYXRoLCBwcm9qZWN0TmFtZXMpOwotCQlyZXR1cm4gdXRpbC5jcmVhdGVQcm9qZWN0cygpOwotCX0KLQkKLQotCXByaXZhdGUgc3RhdGljIElQYXRoIGdldExvY2FsUGF0aCgpIHsKLQkJVVJMIHVybCA9IFRlc3RzUGx1Z2luLmdldERlZmF1bHQoKS5maW5kKHppcEZpbGVQYXRoKTsKLQkJdHJ5IHsKLQkJCXVybCA9IFBsYXRmb3JtLmFzTG9jYWxVUkwodXJsKTsKLQkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewotCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJfQotCQlyZXR1cm4gbmV3IFBhdGgodXJsLmdldFBhdGgoKSk7Ci0JfQkKLSAgCi0gICAgcHVibGljIHZvaWQgY3JlYXRlU2VydmVyUnVudGltZSgpewotICAgICAgCi0gICAgICB0cnkgewotICAgICAgICBKVW5pdFV0aWxzLmNyZWF0ZVNlcnZlclJ1bnRpbWUoUlVOVElNRVRZUEVJRF9UQzUwLCBTRVJWRVJfSU5TVEFMTF9QQVRIKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKXsKLSAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIH0gICAgICAKLSAgICAgIAotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgdm9pZCBjcmVhdGVEeW5hbWljV2ViTW9kdWxlKFN0cmluZ1tdIHByb2plY3ROYW1lcyl7Ci0gICAgCQotICAgICAgZm9yIChpbnQgaT0wO2k8cHJvamVjdE5hbWVzLmxlbmd0aDtpKyspIHsKLSAgICAgICAgICBKVW5pdFV0aWxzLmNyZWF0ZVdlYk1vZHVsZShwcm9qZWN0TmFtZXNbaV0sIHByb2plY3ROYW1lc1tpXSwgbnVsbCwgU0VSVkVSVFlQRUlEX1RDNTAsICIxNCIsIG51bGwsIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotCi0JICAgICAgSVByb2plY3QgcCA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWVzW2ldKTsKLQkgICAgICBhc3NlcnRUcnVlKHAuZXhpc3RzKCkpOwotICAgICAgfQotICAgIH0KLSAgCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L0oyRUVVdGlsc1Rlc3RzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L0oyRUVVdGlsc1Rlc3RzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhODkxNmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91bml0dGVzdC9KMkVFVXRpbHNUZXN0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTA0ICAgMTE0ODM1IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51bml0dGVzdDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUNvbnRhaW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5KMkVFVmVyc2lvbkNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLkoyRUVVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlJlc291cmNlVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkFzc29jaWF0ZU1vZHVsZVdpdGhFQVJDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50Y29yZS5yZXNvdXJjZXMuSVZpcnR1YWxDb21wb25lbnQ7Ci0KLS8qKgotICogQGF1dGhvciBzZW5ncGwKLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBKMkVFVXRpbHNUZXN0cyBleHRlbmRzIFRlc3RDYXNlIGltcGxlbWVudHMgV1NKVW5pdENvbnN0YW50c3sKLQotICAgIHByaXZhdGUgSVByb2plY3QgcHJvamVjdDEgPSBudWxsOwotICAgIHByaXZhdGUgSVByb2plY3QgcHJvamVjdDIgPSBudWxsOwotICAgIHByaXZhdGUgSVByb2plY3QgZWpiUHJvamVjdCA9IG51bGw7Ci0gICAgCi0gICAgcHJpdmF0ZSBTdHJpbmcgY29tcDEgPSB3ZWJDb21wb25lbnROYW1lOwotCQotCXByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnNldFVwKCk7Ci0JCQotCQkvLyBQcm9qZWN0IGFuZCBjb21wb25lbnQgbmFtZXMgaW5pdGlhbGl6ZWQgaGVyZSEKLQkJcHJvamVjdDEgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotCQlhc3NlcnROb3ROdWxsKHByb2plY3QxKTsKLQkJCi0JCXByb2plY3QyID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3QyTmFtZSk7Ci0JCWFzc2VydE5vdE51bGwocHJvamVjdDIpOwotICAgIAotICAgICAgICBlamJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KGVqYlByb2plY3ROYW1lKTsKLSAgICAgICAgYXNzZXJ0Tm90TnVsbChlamJQcm9qZWN0KTsKLQkJCi0JfQotCi0JcHJvdGVjdGVkIHZvaWQgdGVhckRvd24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJc3VwZXIudGVhckRvd24oKTsKLQkJLy8gVE9ETyBDbGVhciB0aGUgd29ya3NwYWNlCi0JCQotCX0KLQotCSBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotCSAgewotCSAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShKMkVFVXRpbHNUZXN0cy5jbGFzcyk7Ci0JICB9Ci0JIAotCSAgcHVibGljIHZvaWQgdGVzdENvbXBvbmVudHNFeGlzdCgpewotCQkgIFN5c3RlbS5vdXQucHJpbnRsbigiPCBCRUdJTjogdGVzdENvbXBvbmVudEV4aXN0cyAuLi4iKTsKLQkJICBJVmlydHVhbENvbXBvbmVudCB2YzEgPSBKMkVFVXRpbHMuZ2V0VmlydHVhbENvbXBvbmVudChwcm9qZWN0MSk7Ci0JCSAgSVZpcnR1YWxDb21wb25lbnQgdmMyID0gSjJFRVV0aWxzLmdldFZpcnR1YWxDb21wb25lbnQocHJvamVjdDIuZ2V0TmFtZSgpKTsKLQkJICAKLQkJICBhc3NlcnRUcnVlKHZjMS5leGlzdHMoKSk7Ci0JCSAgYXNzZXJ0VHJ1ZShKMkVFVXRpbHMuZXhpc3RzKHByb2plY3QxKSk7Ci0JCSAgYXNzZXJ0VHJ1ZSh2YzIuZXhpc3RzKCkpOwotCQkgIGFzc2VydFRydWUoSjJFRVV0aWxzLmV4aXN0cyhwcm9qZWN0Mi5nZXROYW1lKCksIHByb2plY3QyTmFtZSkpOwotCQkgIFN5c3RlbS5vdXQucHJpbnRsbigiPCBFTkQ6IHRlc3RDb21wb25lbnRFeGlzdHMgLi4uIik7Ci0JICB9Ci0JICAKLQkgIHB1YmxpYyB2b2lkIHRlc3RMb2NhdGlvbkdldHRlck1ldGhvZHMoKXsKLQkJICAKLQkJICBTeXN0ZW0ub3V0LnByaW50bG4oIjwgQkVHSU46IHRlc3RMb2NhdGlvbkdldHRlck1ldGhvZHMgLi4uIik7Ci0JCSAgSVBhdGggbG9jMSA9IEoyRUVVdGlscy5nZXRXZWJDb250ZW50UGF0aChwcm9qZWN0MSk7Ci0JCSAgU3lzdGVtLm91dC5wcmludGxuKCJXZWJDb250ZW50UGF0aCBvZiBwcm9qZWN0MSA9ICIrbG9jMSk7Ci0JCSAgSVJlc291cmNlIHJlcyA9IFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmZpbmRNZW1iZXIobG9jMSk7Ci0JCSAgYXNzZXJ0VHJ1ZShyZXMuZXhpc3RzKCkpOwotCQkgIGFzc2VydFRydWUocmVzLnRvU3RyaW5nKCkuZW5kc1dpdGgoIldlYkNvbnRlbnQiKSk7Ci0JCSAgCi0JCSAgSVBhdGggbG9jMiA9IEoyRUVVdGlscy5nZXRXZWJDb250ZW50UGF0aChwcm9qZWN0Mik7Ci0JCSAgU3lzdGVtLm91dC5wcmludGxuKCJXZWJDb250ZW50UGF0aCBvZiBwcm9qZWN0MiA9ICIrbG9jMik7Ci0JCSAgSVJlc291cmNlIHJlczIgPSBSZXNvdXJjZVV0aWxzLmdldFdvcmtzcGFjZVJvb3QoKS5maW5kTWVtYmVyKGxvYzIpOwotCQkgIGFzc2VydFRydWUocmVzMi5leGlzdHMoKSk7Ci0JCSAgYXNzZXJ0VHJ1ZShyZXMyLnRvU3RyaW5nKCkuZW5kc1dpdGgoIldlYkNvbnRlbnQiKSk7CQkgIAotCQkgIAotCQkgIElQYXRoIGxvYzMgPSBKMkVFVXRpbHMuZ2V0V2ViSW5mUGF0aChwcm9qZWN0MSk7Ci0JCSAgU3lzdGVtLm91dC5wcmludGxuKCJXZWItSU5GIHBhdGggPSAiK2xvYzMpOwotCQkgIElSZXNvdXJjZSByZXMzID0gUmVzb3VyY2VVdGlscy5nZXRXb3Jrc3BhY2VSb290KCkuZmluZE1lbWJlcihsb2MzKTsKLQkJICBhc3NlcnRUcnVlKHJlczMuZXhpc3RzKCkpOwotCQkgIGFzc2VydFRydWUocmVzMy50b1N0cmluZygpLmVuZHNXaXRoKCJXRUItSU5GIikpOwotCQkgIAotCQkgIElDb250YWluZXIgY29udGFpbmVyID0gSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRDb250YWluZXIocHJvamVjdDIpOwotCQkgIElSZXNvdXJjZSByZXM0ID0gUmVzb3VyY2VVdGlscy5nZXRXb3Jrc3BhY2VSb290KCkuZmluZE1lbWJlcihjb250YWluZXIuZ2V0RnVsbFBhdGgoKSk7Ci0JCSAgYXNzZXJ0RXF1YWxzKHJlczIsIHJlczQpOwotCQkgIAotCQkgIFN5c3RlbS5vdXQucHJpbnRsbigiPCBFTkQ6IHRlc3RMb2NhdGlvbkdldHRlck1ldGhvZHMgLi4uIik7Ci0JCSAgCi0JICB9Ci0JICAKLQkgIHB1YmxpYyB2b2lkIHRlc3RKMkVFVmVyc2lvbk1ldGhvZHMoKXsKLQkJICAKLQkJICBTeXN0ZW0ub3V0LnByaW50bG4oIjwgQkVHSU46IHRlc3RKMkVFVmVyc2lvbk1ldGhvZHMgLi4uIik7Ci0JICAJCSAgCi0JCSAgU3RyaW5nIGozID0gSjJFRVV0aWxzLmdldEoyRUVWZXJzaW9uQXNTdHJpbmcocHJvamVjdDEpOwotCQkgIFN5c3RlbS5vdXQucHJpbnRsbigiSjJFRVZlcnNpb24gcDEgYXMgU3RyaW5nOiAiK2ozKTsKLQkJICBhc3NlcnRFcXVhbHMoSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8yXzRfVEVYVCwgajMpOwotCQkgIAotCQkgIElWaXJ0dWFsQ29tcG9uZW50IHZjMiA9IEoyRUVVdGlscy5nZXRWaXJ0dWFsQ29tcG9uZW50KHByb2plY3QyKTsKLQkJICBpbnQgajIgPSBKMkVFVXRpbHMuZ2V0SjJFRVZlcnNpb24odmMyKTsKLQkJICBTeXN0ZW0ub3V0LnByaW50bG4oIkoyRUVWZXJzaW9ucyBwMTogIitqMik7CQkgIAotCQkgIGFzc2VydEVxdWFscyhKMkVFVmVyc2lvbkNvbnN0YW50cy5TRVJWTEVUXzJfNCwgajIpOwotCQkgIAotCQkgIFN5c3RlbS5vdXQucHJpbnRsbigiPCBFTkQ6IHRlc3RKMkVFVmVyc2lvbk1ldGhvZHMgLi4uIik7Ci0JICB9Ci0KLQkgIHB1YmxpYyB2b2lkIHRlc3RDb21wb25lbnRHZXR0ZXJNZXRob2RzKCl7Ci0JCSAgCi0JCSAgU3lzdGVtLm91dC5wcmludGxuKCI8IEJFR0lOOiB0ZXN0Q29tcG9uZW50R2V0dGVyTWV0aG9kcyAuLi4iKTsKLQkJICAKLQkJICBJVmlydHVhbENvbXBvbmVudFtdIHZjcyA9IEoyRUVVdGlscy5nZXRBbGxDb21wb25lbnRzKCk7Ci0JCSAgY2hlY2tWaXJ0dWFsQ29tcG9uZW50c0V4aXN0cyh2Y3MpOwotCQkgIAotCQkgIElWaXJ0dWFsQ29tcG9uZW50W10gdmNzMiA9IEoyRUVVdGlscy5nZXRBbGxFQVJDb21wb25lbnRzKCk7Ci0JCSAgY2hlY2tWaXJ0dWFsQ29tcG9uZW50c0V4aXN0cyh2Y3MyKTsKLQkJICAKLQkJICBJVmlydHVhbENvbXBvbmVudFtdIHZjczMgPSBKMkVFVXRpbHMuZ2V0QWxsV2ViQ29tcG9uZW50cygpOwotCQkgIGNoZWNrVmlydHVhbENvbXBvbmVudHNFeGlzdHModmNzMyk7Ci0JCSAgCi0JCSAgSVZpcnR1YWxDb21wb25lbnRbXSB2Y3M0ID0gSjJFRVV0aWxzLmdldFdlYkNvbXBvbmVudHMocHJvamVjdDEpOwotCQkgIGNoZWNrVmlydHVhbENvbXBvbmVudHNFeGlzdHModmNzNCk7Ci0JCSAgCi0JCSAgU3RyaW5nW10gbmFtZXMgPSBKMkVFVXRpbHMuZ2V0V2ViQ29tcG9uZW50TmFtZXMocHJvamVjdDIpOwotCQkgIHByaW50TmFtZVN0cmluZ3MobmFtZXMpOwotCQkgIAotCQkgIFN0cmluZ1tdIG5hbWVzMiA9IEoyRUVVdGlscy50b0NvbXBvbmVudE5hbWVzQXJyYXkoSjJFRVV0aWxzLmdldENvbXBvbmVudHNCeVR5cGUocHJvamVjdDEsIEoyRUVVdGlscy5XRUIgfCBKMkVFVXRpbHMuRUpCKSk7Ci0JCSAgcHJpbnROYW1lU3RyaW5ncyhuYW1lczIpOwotCQkgIAotCQkgIElQcm9qZWN0W10gcHJvamVjdHMgPSBKMkVFVXRpbHMuZ2V0QWxsRmxleGlibGVQcm9qZWN0cygpOwotCQkgIGZvciAoaW50IGk9MDtpPHByb2plY3RzLmxlbmd0aDtpKyspewotCQkJICBTeXN0ZW0ub3V0LnByaW50bG4oIkZsZXggcHJvamVjdCAiK2krIiA9ICIrcHJvamVjdHNbaV0pOwotCQkgIH0KLQkJICAKLQkJICBTeXN0ZW0ub3V0LnByaW50bG4oIjwgRU5EOiB0ZXN0Q29tcG9uZW50R2V0dGVyTWV0aG9kcyAuLi4iKTsKLQkgIH0KLQkgIAotCSAgcHJpdmF0ZSB2b2lkIGNoZWNrVmlydHVhbENvbXBvbmVudHNFeGlzdHMoSVZpcnR1YWxDb21wb25lbnRbXSB2Y3MpewotCQkgIGZvciAoaW50IGk9MDsgaTx2Y3MubGVuZ3RoO2krKyl7Ci0JCQkgIElWaXJ0dWFsQ29tcG9uZW50IHZjID0gdmNzW2ldOwotCQkJICBTeXN0ZW0ub3V0LnByaW50bG4oIlZDOiBQcm9qZWN0ID0gIit2Yy5nZXRQcm9qZWN0KCkrIiBOYW1lID0gIit2Yy5nZXROYW1lKCkpOwotCQkJICBhc3NlcnRUcnVlKHZjLmV4aXN0cygpKTsKLQkJCSAgCi0JCSAgfQotCSAgfQotCSAgCi0JICBwcml2YXRlIHZvaWQgcHJpbnROYW1lU3RyaW5ncyhTdHJpbmdbXSBuYW1lcyl7Ci0JCSAgZm9yIChpbnQgaT0wO2k8bmFtZXMubGVuZ3RoO2krKyl7Ci0JCQkgIFN5c3RlbS5vdXQucHJpbnRsbigiTmFtZSIraSsiID0gIituYW1lc1tpXSk7Ci0JCSAgfQotCSAgfQotCSAgCi0gICAgICBwdWJsaWMgdm9pZCBkdGVzdEFzc29jaWF0ZUNvbXBvbmVudENvbW1hbmQoKXsKLSAgICAgICAgCi0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPCBCRUdJTjogdGVzdEFzc29jaWF0ZUNvbXBvbmVudENvbW1hbmQgLi4uIik7Ci0gICAgICAgIAotICAgICAgICBBc3NvY2lhdGVNb2R1bGVXaXRoRUFSQ29tbWFuZCBhbXdlID0gbmV3IEFzc29jaWF0ZU1vZHVsZVdpdGhFQVJDb21tYW5kKCk7Ci0gICAgICAgIGFtd2Uuc2V0RWFyKGVhckNvbXBOYW1lKTsKLSAgICAgICAgYW13ZS5zZXRFQVJQcm9qZWN0KHByb2plY3ROYW1lKTsKLSAgICAgICAgYW13ZS5zZXRNb2R1bGUoY29tcDEpOwotICAgICAgICBhbXdlLnNldFByb2plY3QocHJvamVjdE5hbWUpOwotICAgICAgICBhbXdlLmV4ZWN1dGUobnVsbCwgbnVsbCk7Ci0gICAgICAgIAotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjwgRU5EOiB0ZXN0QXNzb2NpYXRlQ29tcG9uZW50Q29tbWFuZCAuLi4iKTsgICAgIAotICAgICAgfQotICAgIAotCSAgcHVibGljIHZvaWQgZHRlc3RSZWZlcmVuY2luZ0dldHRlck1ldGhvZHMoKXsKLQkJICAKLQkJICBTeXN0ZW0ub3V0LnByaW50bG4oIjwgQkVHSU46IHRlc3RSZWZlcmVuY2luZ0dldHRlck1ldGhvZHMgLi4uIik7Ci0JCSAgCi0JCSAgU3lzdGVtLm91dC5wcmludGxuKCJpc0NvbXBvbmVudEFzc29jaWF0ZWQgLi4iKTsKLQkJICBKMkVFVXRpbHMuaXNDb21wb25lbnRBc3NvY2lhdGVkKHByb2plY3QxLCBwcm9qZWN0MSk7Ci0JCQotCQkgIFN0cmluZ1tdIG5hbWVzID0gSjJFRVV0aWxzLnRvQ29tcG9uZW50TmFtZXNBcnJheShKMkVFVXRpbHMuZ2V0UmVmZXJlbmNpbmdFQVJDb21wb25lbnRzKHByb2plY3QxKSk7Ci0JCSAgcHJpbnROYW1lU3RyaW5ncyhuYW1lcyk7Ci0JCSAgU3RyaW5nW10gbmFtZXMyID0gSjJFRVV0aWxzLnRvQ29tcG9uZW50TmFtZXNBcnJheShKMkVFVXRpbHMuZ2V0UmVmZXJlbmNpbmdFQVJDb21wb25lbnRzKHByb2plY3QyKSk7Ci0JCSAgcHJpbnROYW1lU3RyaW5ncyhuYW1lczIpOwotCQkgIAotCQkgIFN0cmluZ1tdIG5hbWVzMyA9IEoyRUVVdGlscy50b0NvbXBvbmVudE5hbWVzQXJyYXkoSjJFRVV0aWxzLmdldFJlZmVyZW5jaW5nV2ViQ29tcG9uZW50c0Zyb21FQVIocHJvamVjdDEpKTsKLQkJICBwcmludE5hbWVTdHJpbmdzKG5hbWVzMyk7Ci0JCSAgCi0JCSAgU3lzdGVtLm91dC5wcmludGxuKCI8IEVORDogdGVzdFJlZmVyZW5jaW5nR2V0dGVyTWV0aG9kcyAuLi4iKTsKLQkgIH0KLQkgIAotCSAgcHVibGljIHZvaWQgZHRlc3RJc0NvbXBvbmVudE1ldGhvZHMoKXsKLQkJCi0JCSAgU3lzdGVtLm91dC5wcmludGxuKCI8IEJFR0lOOiB0ZXN0SXNDb21wb25lbnRNZXRob2RzIC4uLiIpOwotCQkgIAotCQkgIC8vYXNzZXJ0RmFsc2UoSjJFRVV0aWxzLmlzRUpCMjBDb21wb25lbnQoZWpiUHJvamVjdCwgZWpiQ29tcG9uZW50TmFtZSkpOwotCQkgIGFzc2VydFRydWUoSjJFRVV0aWxzLmlzRUpCMjBDb21wb25lbnQoZWpiUHJvamVjdCkpOwotCQkgIAotCQkgIFN5c3RlbS5vdXQucHJpbnRsbigiPCBFTkQ6IHRlc3RJc0NvbXBvbmVudE1ldGhvZHMgLi4uIik7Ci0JICB9Ci0JICAKLQotCSAgCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L0xhdW5jaFRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvTGF1bmNoVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzJmNmFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvTGF1bmNoVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudW5pdHRlc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBsYXRmb3JtUnVubmFibGU7Ci0KLS8qKgotICogTWluaW1hbCBhcHAgdG8gcnVuIGFzIEVjbGlwc2UgImFwcGxpY2F0aW9uIgotICovCi1wdWJsaWMgY2xhc3MgTGF1bmNoVGVzdCBpbXBsZW1lbnRzIElQbGF0Zm9ybVJ1bm5hYmxlCi17Ci0gIC8qKgotICAgKiBAc2VlIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGxhdGZvcm1SdW5uYWJsZSNydW4oT2JqZWN0KQotICAgKi8KLSAgcHVibGljIE9iamVjdCBydW4oT2JqZWN0IGFyZ3MpIHRocm93cyBFeGNlcHRpb24KLSAgewotCi0gICAgT2JqZWN0IHJlc3VsdCA9IG5ldyBBbGxXU0pVbml0VGVzdHMoKS5ydW5NYWluKGFyZ3MpOwotCi0gICAgaWYgKHJlc3VsdCAhPSBudWxsKQotICAgIHsKLSAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBUaHJvd2FibGUpCi0gICAgICB7Ci0gICAgICAgICgoVGhyb3dhYmxlKSByZXN1bHQpLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRlc3RzIGRpZG4ndCByZXR1cm4gJ29rJyIpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIElQbGF0Zm9ybVJ1bm5hYmxlLkVYSVRfT0s7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvUmVzb3VyY2VVdGlsc1Rlc3RzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L1Jlc291cmNlVXRpbHNUZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWI4ZWYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvUmVzb3VyY2VVdGlsc1Rlc3RzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudW5pdHRlc3Q7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsLkpVbml0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbnRleHQuUGVyc2lzdGVudFJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5FY2xpcHNlRW52aXJvbm1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmVjbGlwc2UuRWNsaXBzZVN0YXR1c0hhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLkNvbXBvbmVudENvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5jb21wb25lbnRjb3JlLmludGVybmFsLnV0aWwuSU1vZHVsZUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudGNvcmUucmVzb3VyY2VzLklWaXJ0dWFsQ29tcG9uZW50OwotCi0vKioKLSAqIEpVbml0IHRlc3RzIGZvciBzZWxlY3RpdmUgUmVzb3VyY2VVdGlscyBtZXRob2RzLiAgQ2FsbHMgd2hpY2ggcmV0dXJuIGEgc2ltcGxlIFN0cmluZyBvciByZWx5IG9uIGEgSVJlc291cmNlCi0gKiBBUEkgbmVlZCBub3QgYmUgdGVzdGVkLiAgVGhlIGZvY3VzIGlzIG1haW5seSB0byBleGVyY2lzZSBDb21wb25lbnQgYW5kIEZsZXhpYmxlIHByb2plY3QgQVBJcy4gCi0gKiAKLSAqLwotcHVibGljIGNsYXNzIFJlc291cmNlVXRpbHNUZXN0cyBleHRlbmRzIFRlc3RDYXNlIGltcGxlbWVudHMgV1NKVW5pdENvbnN0YW50c3sKLQotCi0JcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCl7Ci0JCXJldHVybiBuZXcgVGVzdFN1aXRlKFJlc291cmNlVXRpbHNUZXN0cy5jbGFzcyk7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHRlc3RDb21wb25lbnRUeXBlKCl7Ci0JCUlQcm9qZWN0IHByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotCQlTdHJpbmcgY29tcG9uZW50VHlwZSA9IFJlc291cmNlVXRpbHMuZ2V0Q29tcG9uZW50VHlwZShwcm9qZWN0KTsKLQkJYXNzZXJ0RXF1YWxzKElNb2R1bGVDb25zdGFudHMuSlNUX1dFQl9NT0RVTEUsIGNvbXBvbmVudFR5cGUpOwotCX0KLQkKLQlwdWJsaWMgdm9pZCB0ZXN0Q29tcG9uZW50T2YoKXsKLQkJSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChwcm9qZWN0TmFtZSk7Ci0gICAgICAgIElQYXRoIGRlc3RQYXRoID0gUmVzb3VyY2VVdGlscy5nZXRKYXZhU291cmNlTG9jYXRpb24ocHJvamVjdCk7Ci0gICAgICAgIElGb2xkZXIgZm9sZGVyID0gKElGb2xkZXIpUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UoZGVzdFBhdGgpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgUGVyc2lzdGVudFJlc291cmNlQ29udGV4dCAgcmVzb3VyY2VDb250ZXh0ID0gUGVyc2lzdGVudFJlc291cmNlQ29udGV4dC5nZXRJbnN0YW5jZSgpOwotICAgICAgICAgICAgRWNsaXBzZVN0YXR1c0hhbmRsZXIgICAgICAgaGFuZGxlciAgICAgICAgID0gbmV3IEVjbGlwc2VTdGF0dXNIYW5kbGVyKCk7Ci0gICAgICAgICAgICBFY2xpcHNlRW52aXJvbm1lbnQgICAgICAgICBlbnYgICAgID0gbmV3IEVjbGlwc2VFbnZpcm9ubWVudCggbnVsbCwgcmVzb3VyY2VDb250ZXh0LCBoYW5kbGVyICk7Ci0KLSAgICAgICAgICAgIElGaWxlIGZpbGUgPSBmb2xkZXIuZ2V0RmlsZShuZXcgUGF0aCgiZm9vL0VjaG8uamF2YSIpKTsKLSAgICAgICAgICAgIGlmICghZmlsZS5leGlzdHMoKSkgewotICAgICAgICAgICAgICBKVW5pdFV0aWxzLmNvcHlUZXN0RGF0YSgiQlVKYXZhL3NyYyIsIGZvbGRlciwgZW52LCBudWxsICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCl7Ci0gICAgICAgIAlleC5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIElQYXRoIGphdmFGaWxlUGF0aCA9IGZvbGRlci5nZXRGaWxlKG5ldyBQYXRoKCJmb28vRWNoby5qYXZhIikpLmdldEZ1bGxQYXRoKCk7Ci0gICAgICAgIElWaXJ0dWFsQ29tcG9uZW50IHZjID0gUmVzb3VyY2VVdGlscy5nZXRDb21wb25lbnRPZihqYXZhRmlsZVBhdGgpOwotICAgICAgICBhc3NlcnRUcnVlKHZjLmV4aXN0cygpKTsKLSAgICAgICAgCi0JCQotCX0KLQkKLQlwdWJsaWMgdm9pZCB0ZXN0SmF2YVNvdXJjZUxvY2F0aW9uKCl7Ci0JCUlQcm9qZWN0IHByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotCQlTdHJpbmcgamF2YVNvdXJjZUxvYyA9IFJlc291cmNlVXRpbHMuZ2V0SmF2YVNvdXJjZUxvY2F0aW9uKHByb2plY3QpLnRvU3RyaW5nKCk7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiSmF2YSBzb3VyY2UgbG9jYXRpb24gPSAiK2phdmFTb3VyY2VMb2MpOwotCQlhc3NlcnRUcnVlKGphdmFTb3VyY2VMb2MuZW5kc1dpdGgoInNyYyIpKTsKLQkJCi0JCS8vIGdldCBhbGwgdGhlIEphdmFTb3VyY2VMb2NhdGlvbnMgdmlhIHRoZSBWaXJ0dWFsQ29tcG9uZW50Ci0JCUlWaXJ0dWFsQ29tcG9uZW50IHZjMSA9IENvbXBvbmVudENvcmUuY3JlYXRlQ29tcG9uZW50KHByb2plY3QpOwotCQlJVmlydHVhbENvbXBvbmVudCB2YzIgPSBDb21wb25lbnRDb3JlLmNyZWF0ZUNvbXBvbmVudChwcm9qZWN0KTsKLQkJSVZpcnR1YWxDb21wb25lbnRbXSB2Y3MgPSBuZXcgSVZpcnR1YWxDb21wb25lbnRbXXt2YzEsIHZjMn07Ci0JCUlQYXRoW10gcGF0aHMgPSBSZXNvdXJjZVV0aWxzLmdldEFsbEphdmFTb3VyY2VMb2NhdGlvbnModmNzKTsKLQkJCi0JCS8vIHZlcmlmeSBmaXJzdCBmb2xkZXIgZXhpc3RzCi0JCUlQYXRoIHBhdGgxID0gKElQYXRoKXBhdGhzWzBdOwotCQlJUmVzb3VyY2UgcmVzb3VyY2UgID0gUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UocGF0aDEpOwotCQlpZiAocmVzb3VyY2UuZXhpc3RzKCkpewotCQkJYXNzZXJ0RXF1YWxzKElSZXNvdXJjZS5GT0xERVIsIHJlc291cmNlLmdldFR5cGUoKSk7Ci0JCX0KLQotCQkvLyB2ZXJpZnkgc2Vjb25kIGZvbGRlciBleGlzdHMKLQkJSVBhdGggcGF0aDIgPSAoSVBhdGgpcGF0aHNbMV07Ci0JCUlSZXNvdXJjZSByZXNvdXJjZTIgID0gUmVzb3VyY2VVdGlscy5maW5kUmVzb3VyY2UocGF0aDIpOwotCQlpZiAocmVzb3VyY2UyLmV4aXN0cygpKXsKLQkJCWFzc2VydEVxdWFscyhJUmVzb3VyY2UuRk9MREVSLCByZXNvdXJjZTIuZ2V0VHlwZSgpKTsKLQkJfQkJCi0JfQotCQotCXB1YmxpYyB2b2lkIHRlc3RXZWJDb21wb25lbnRTZXJ2ZXJSb290KCkgewotCQlJUHJvamVjdCBwcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQkJSUZvbGRlciBmb2xkZXIgPSBSZXNvdXJjZVV0aWxzLmdldFdlYkNvbXBvbmVudFNlcnZlclJvb3QocHJvamVjdCk7Ci0JCWFzc2VydFRydWUoZm9sZGVyLmV4aXN0cygpKTsKLQkKLQl9Ci0JCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L1NlcnZlckNyZWF0aW9uVGVzdHMuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvU2VydmVyQ3JlYXRpb25UZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTNkMDRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvU2VydmVyQ3JlYXRpb25UZXN0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDQgICAxMTQ4MzUgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnVuaXR0ZXN0OwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydGlvbkZhaWxlZEVycm9yOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkNyZWF0ZVNlcnZlckNvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnV0aWwuSlVuaXRVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZTsKLQotcHVibGljIGNsYXNzIFNlcnZlckNyZWF0aW9uVGVzdHMgZXh0ZW5kcyBUZXN0Q2FzZSBpbXBsZW1lbnRzIFdTSlVuaXRDb25zdGFudHN7Ci0KLQotCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpewotCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShTZXJ2ZXJDcmVhdGlvblRlc3RzLmNsYXNzKTsKLQl9Ci0JCi0JcHVibGljIHZvaWQgaW5pdCgpewotCSAgICB0cnkgewotICAgICAgICAgIGFzc2VydE5vdE51bGwoU0VSVkVSX0lOU1RBTExfUEFUSCk7ICAgICAgICAgIAotCSAgICAgIEpVbml0VXRpbHMuY3JlYXRlU2VydmVyUnVudGltZShSVU5USU1FVFlQRUlEX1RDNTAsIFNFUlZFUl9JTlNUQUxMX1BBVEgpOwotCSAgICB9Ci0JICAgIGNhdGNoKEV4Y2VwdGlvbiBlKXsKLQkgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotCSAgICB9IAotCX0KLQkKLQlwdWJsaWMgdm9pZCB0ZXN0Q3JlYXRlVG9tY2F0djVTZXJ2ZXIoKXsKLQkJaW5pdCgpOwotCQkKLQkJU3lzdGVtLm91dC5wcmludGxuKCJDcmVhdGluZyBUb21jYXQgdjUgc2VydmVyLiIpOwotCQlDcmVhdGVTZXJ2ZXJDb21tYW5kIGNzYyA9IG5ldyBDcmVhdGVTZXJ2ZXJDb21tYW5kKCk7Ci0JCWNzYy5zZXRTZXJ2ZXJGYWN0b3J5aWQoU0VSVkVSVFlQRUlEX1RDNTApOwotCQljc2MuZXhlY3V0ZShudWxsLCBudWxsICk7Ci0JCQotCQlJU2VydmVyIHNlcnZlciA9IG51bGw7Ci0JCVN0cmluZyBpbnN0SWQgPSBjc2MuZ2V0U2VydmVySW5zdGFuY2VJZCgpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNlcnZlciBpbnN0YW5jZSBJZCA9ICIraW5zdElkKTsKLQkJaWYgKGluc3RJZCE9bnVsbCl7Ci0JCSAgc2VydmVyID0gU2VydmVyQ29yZS5maW5kU2VydmVyKGluc3RJZCk7Ci0JCX0KLQkJYXNzZXJ0Tm90TnVsbChzZXJ2ZXIpOwotCQkKLQkJdHJ5IHsKLQkJCXNlcnZlci5kZWxldGUoKTsKLQkJfQotCQljYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSl7Ci0JCQluZXcgQXNzZXJ0aW9uRmFpbGVkRXJyb3IoKTsKLQkJfQotCQkKLQkJU3lzdGVtLm91dC5wcmludGxuKCJEb25lIGNyZWF0aW5nIFRvbWNhdCB2NSBzZXJ2ZXIuIik7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHRlc3RSZWF0dGVtcHRDcmVhdGVUb21jYXR2NVNlcnZlcigpewotCQlTeXN0ZW0ub3V0LnByaW50bG4oIkF0dGVtcHRpbmcgdG8gY3JlYXRlIDJuZCBUb21jYXQgdjUgc2VydmVyLiIpOwotCQlDcmVhdGVTZXJ2ZXJDb21tYW5kIGNzYyA9IG5ldyBDcmVhdGVTZXJ2ZXJDb21tYW5kKCk7Ci0JCWNzYy5zZXRTZXJ2ZXJGYWN0b3J5aWQoU0VSVkVSVFlQRUlEX1RDNTApOwotCQljc2MuZXhlY3V0ZShudWxsLCBudWxsICk7Ci0JCQotCQlJU2VydmVyIHNlcnZlciA9IG51bGw7Ci0JCVN0cmluZyBpbnN0SWQgPSBjc2MuZ2V0U2VydmVySW5zdGFuY2VJZCgpOwotCQlpZiAoaW5zdElkIT1udWxsKSB7Ci0JCSAgc2VydmVyID0gU2VydmVyQ29yZS5maW5kU2VydmVyKGluc3RJZCk7Ci0JCX0KLQkJYXNzZXJ0Tm90TnVsbChzZXJ2ZXIpOwotCQkKLQkJdHJ5IHsKLQkJCXNlcnZlci5kZWxldGUoKTsKLQkJfQotCQljYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSl7Ci0JCQluZXcgQXNzZXJ0aW9uRmFpbGVkRXJyb3IoKTsKLQkJfQotCQkKLQkJU3lzdGVtLm91dC5wcmludGxuKCJEb25lIGF0dGVtcHRpbmcgMm5kIFRvbWNhdCB2NSBzZXJ2ZXIgY3JlYXRpb24uIik7CQkKLQl9Ci0JCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L1RESmF2YUF4aXNUQzUwLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L1RESmF2YUF4aXNUQzUwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZGM1MzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91bml0dGVzdC9UREphdmFBeGlzVEM1MC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDEwNCAgIDExNDgzNSBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDcwNTA5ICAgMTgwNTY3IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNzExMTYgICAyMDgxMjQgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA3MTIxNyAgIDE4NzI4MCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDgwMjA3ICAgMjE3MzQ2IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwODAzMTMgICAxMjY3NzQgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKiAyMDA4MDQyOSAgIDIyODk0NSBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudW5pdHRlc3Q7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZW0udXRpbC5lbWYud29ya2JlbmNoLlByb2plY3RVdGlsaXRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb21tb24uSjJFRVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5heGlzLnRvbWNhdC52NTAuV1NXaXphcmRUb21jYXQ1MFRlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnV0aWwuSlVuaXRVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudXRpbC5TY2VuYXJpb0NvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5BY2N1bXVsYXRlU3RhdHVzSGFuZGxlcjsKLQotLyoqCi0gKiBUb3AgZG93biBwZXJmb3JtYW5jZSBzY2VuYXJpbyB3aXRoIEF4aXMgYW5kIFRvbWNhdCB2NS4wCi0gKi8KLXB1YmxpYyBjbGFzcyBUREphdmFBeGlzVEM1MCBleHRlbmRzIFdTV2l6YXJkVG9tY2F0NTBUZXN0IHsKLQotICBwcml2YXRlIGZpbmFsIFN0cmluZyBXU19SVU5USU1FSURfQVhJUyA9IFdTSlVuaXRDb25zdGFudHMuV1NfUlVOVElNRUlEX0FYSVM7Ci0gIAotICBwcml2YXRlIFN0cmluZyBQUk9KRUNUX05BTUUgPSBXU0pVbml0Q29uc3RhbnRzLlREX1BST0pFQ1RfTkFNRTsKLSAgCi0gIHByaXZhdGUgSUZpbGUgc291cmNlRmlsZV87Ci0JCi0JCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpewotCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShUREphdmFBeGlzVEM1MC5jbGFzcyk7Ci0gIH0KLSAgCi0gIHByb3RlY3RlZCB2b2lkIGNyZWF0ZVByb2plY3RzKCkgdGhyb3dzIEV4Y2VwdGlvbnsKLQkgICAgSVByb2plY3Qgd2ViUHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChQUk9KRUNUX05BTUUpOwotCSAgICBpZiAoIXdlYlByb2plY3QuZXhpc3RzKCkpewotCSAgICAJSlVuaXRVdGlscy5jcmVhdGVXZWJNb2R1bGUoUFJPSkVDVF9OQU1FLCBQUk9KRUNUX05BTUUsIHNlcnZlcl8uZ2V0SWQoKSwgU0VSVkVSVFlQRUlEX1RDNTAsICIxNCIsIGVudl8sIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwkgICAgCQotCSAgICB9Ci0JICB9Ci0JICAKLSAgLyoqCi0gICAqIFNldHMgdXAgdGhlIGlucHV0IGRhdGE7Ci0gICAqIC0gY3JlYXRlIHByb2plY3QocyksCi0gICAqIC0gY29weSByZXNvdXJjZXMgdG8gd29ya3NwYWNlIAotICAgKi8gIAotCXByb3RlY3RlZCB2b2lkIGluc3RhbGxJbnB1dERhdGEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLQotCQlJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KFBST0pFQ1RfTkFNRSk7CQkKLQkJSUZvbGRlciBkZXN0Rm9sZGVyID0gKElGb2xkZXIpSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRDb250YWluZXIod2ViUHJvamVjdCk7Ci0JCUpVbml0VXRpbHMuY29weVRlc3REYXRhKCJUREphdmEiLGRlc3RGb2xkZXIsZW52XywgbnVsbCk7Ci0JCXNvdXJjZUZpbGVfID0gZGVzdEZvbGRlci5nZXRGaWxlKG5ldyBQYXRoKCJFY2hvLndzZGwiKSk7Ci0JCUpVbml0VXRpbHMuc3luY0J1aWxkUHJvamVjdCh3ZWJQcm9qZWN0LGVudl8sIG51bGwpOwotCX0KLQotICAvKioKLSAgICogU2V0IHRoZSBwZXJzaXN0ZW50IHNlcnZlciBydW50aW1lIGNvbnRleHQgcHJlZmVyZW5jZXMKLSAgICovICAKLQlwcm90ZWN0ZWQgdm9pZCBpbml0SjJFRVdTUnVudGltZVNlcnZlckRlZmF1bHRzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCS8vIFNldCBkZWZhdWx0IHByZWZlcmVuY2VzIGZvciBBeGlzIGFuZCBUb21jYXQgdjUuMCBzZXJ2ZXIKLQkJSlVuaXRVdGlscy5zZXRXU1J1bnRpbWVTZXJ2ZXIoV1NfUlVOVElNRUlEX0FYSVMsIFNFUlZFUlRZUEVJRF9UQzUwKTsJCi0JCUpVbml0VXRpbHMuc2V0U2VydmljZVNjZW5hcmlvRGVmYXVsdCgpOwotCX0KLQotICAvKioKLSAgICogU2V0IHRoZSBpbml0aWFsIHNlbGVjdGlvbgotICAgKi8gIAotCXByb3RlY3RlZCB2b2lkIGluaXRJbml0aWFsU2VsZWN0aW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCWluaXRpYWxTZWxlY3Rpb25fID0gbmV3IFN0cnVjdHVyZWRTZWxlY3Rpb24oc291cmNlRmlsZV8pOwotCi0JfQotCi0gIC8qKgotICAgKiBMYXVuY2hlcyB0aGUgcG9wLXVwIGNvbW1hbmQgdG8gaW5pdGlhdGUgdGhlIHNjZW5hcmlvCi0gICAqIEB0aHJvd3MgRXhjZXB0aW9uCi0gICAqLyAgCi0JcHVibGljIHZvaWQgdGVzdFRESmF2YUF4aXNUQzUwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JICAKLQkgIFN5c3RlbS5vdXQucHJpbnRsbigpOwotCSAgU3lzdGVtLm91dC5wcmludGxuKCJCRUdJTjogVERKYXZhQXhpc1RDNTAiKTsKLQkJCi0JICBJU3RhdHVzW10gc3RhdHVzID0gSlVuaXRVdGlscy5sYXVuY2hDcmVhdGlvbldpemFyZChTY2VuYXJpb0NvbnN0YW50cy5XSVpBUkRJRF9UT1BfRE9XTixTY2VuYXJpb0NvbnN0YW50cy5PQkpFQ1RfQ0xBU1NfSURfSUZJTEUsaW5pdGlhbFNlbGVjdGlvbl8pOwotCSAgdmVyaWZ5T3V0cHV0KHN0YXR1cyk7Ci0KLQl9Ci0KLSAgLyoqCi0gICAqIFZlcmlmeSB0aGUgc2NlbmFyaW8gY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgotICAgKi8KLQlwcml2YXRlIGZpbmFsIHZvaWQgdmVyaWZ5T3V0cHV0KElTdGF0dXNbXSBzdGF0dXMpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCXRyeSB7Ci0JICAgICAgICBJUHJvamVjdCB3ZWJQcm9qZWN0ID0gUHJvamVjdFV0aWxpdGllcy5nZXRQcm9qZWN0KFBST0pFQ1RfTkFNRSk7ICAgIAotCSAgICAgICAgSUZvbGRlciB3ZWJDb250ZW50Rm9sZGVyID0gKElGb2xkZXIpSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRDb250YWluZXIod2ViUHJvamVjdCk7ICAgIAotCSAgICAKLQkJCQotCQkJSUZvbGRlciB3c2RsRm9sZGVyID0gd2ViQ29udGVudEZvbGRlci5nZXRGb2xkZXIoIndzZGwiKTsKLQkgICAgICAgIGlmICghd3NkbEZvbGRlci5leGlzdHMoKSl7Ci0JICAgICAgICAJcnVuRXZlbnRMb29wKDYwMDApOwotCSAgICAgICAgCVN5c3RlbS5vdXQucHJpbnRsbigiUnVubmluZyBldmVudCBsb29wIHdoaWxlIHdzZGwgZm9sZGVyIGlzIGNyZWF0ZWQuLi4iKTsKLQkgICAgICAgIH0KLQkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQXNzZXJ0IFREIHdzZGwgZm9sZGVyIGV4aXN0cyA9ICIrd3NkbEZvbGRlci5leGlzdHMoKSk7Ci0JCQlhc3NlcnRUcnVlKHdzZGxGb2xkZXIuZXhpc3RzKCkpOwotCQkJCQkKLQkJCWlmICghKHdzZGxGb2xkZXIubWVtYmVycygpLmxlbmd0aCA+IDApKXsKLQkJCQlydW5FdmVudExvb3AoNjAwMCk7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJSdW5uaW5nIGV2ZW50IGxvb3Agd2hpbGUgY29udGVudHMgb2Ygd3NkbCBmb2xlciBhcmUgY3JlYXRlZC4uLiIpOwotCQkJfQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJBc3NlcnQgVEQgd3NkbCBmaWxlIGV4aXN0cy4gICMgb2YgZmlsZXMgPSAiICsgKHdzZGxGb2xkZXIubWVtYmVycygpLmxlbmd0aCA+IDApKTsKLQkJCWFzc2VydFRydWUod3NkbEZvbGRlci5tZW1iZXJzKCkubGVuZ3RoID4gMCk7Ci0JCQkKLQkKLQkJCS8vIENoZWNrIHN0YXR1cyBoYW5kbGVyIGZvciBlcnJvcnMKLQkJCUFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyIHN0YXR1c0hhbmRsZXIgPSBuZXcgQWNjdW11bGF0ZVN0YXR1c0hhbmRsZXIoc3RhdHVzKTsKLQkJCUlTdGF0dXNbXSBzID0gc3RhdHVzSGFuZGxlci5nZXRFcnJvclJlcG9ydHMoKTsKLQkJCWFzc2VydEVxdWFscygiQXNzZXJ0IG51bWJlciBvZiBlcnJvciByZXBvcnRzIGlzIHplcm8iLCAwLCBzLmxlbmd0aCk7Ci0JCQkKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiRU5EOiBUREphdmFBeGlzVEM1MCIpOwotCQl9Ci0JCWZpbmFsbHl7Ci0JCQlBY2N1bXVsYXRlU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyID0gbmV3IEFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyKHN0YXR1cyk7Ci0JCQlJU3RhdHVzW10gcyA9IHN0YXR1c0hhbmRsZXIuZ2V0RXJyb3JSZXBvcnRzKCk7Ci0JCQkvLwotCQkJaWYgKHMubGVuZ3RoID4gMCl7Ci0JCQkJZm9yIChpbnQgaT0wO2k8cy5sZW5ndGg7aSsrKXsKLQkJCQkJbG9nQmFkU3RhdHVzKHNbaV0pOwotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9yIG1lc3NhZ2UgZm9yIHJlcG9ydCAjIitpKyI6ICIrc1tpXS5nZXRNZXNzYWdlKCkpOwotCQkJCX0KLQkJCX0gCi0JCX0KLQl9Ci0JCi0gIC8qKgotICAgKiBDbGVhciB3b3Jrc3BhY2UgaWYgcmVxdWlyZWQKLSAgICovCi0JcHJvdGVjdGVkIHZvaWQgZGVsZXRlSW5wdXREYXRhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCS8vIERlbGV0ZSB0aGUgV2ViIHByb2plY3QuCi0JCUlQcm9qZWN0IHdlYlByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3QoUFJPSkVDVF9OQU1FKTsKLQkJd2ViUHJvamVjdC5kZWxldGUodHJ1ZSx0cnVlLG51bGwpOwotCQkKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvV1NKVW5pdENvbnN0YW50cy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91bml0dGVzdC9XU0pVbml0Q29uc3RhbnRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NjI0YmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91bml0dGVzdC9XU0pVbml0Q29uc3RhbnRzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcwNzA1ICAxOTU1NTMgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1ICAgICAgCi0gKiAyMDA3MTExNiAgMjA4MTI0IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51bml0dGVzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotCi0KLXB1YmxpYyBpbnRlcmZhY2UgV1NKVW5pdENvbnN0YW50cyB7Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIFNFUlZFUl9JTlNUQUxMX1BBVEggPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwIik7Ci0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgUlVOVElNRVRZUEVJRF9UQzUwID0gIm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LnJ1bnRpbWUuNTAiOwotCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgV1NfUlVOVElNRUlEX0FYSVMgPSAib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24uYXhpc1dlYlNlcnZpY2VSVCI7Ci0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgV1NfUlVOVElNRUlEX0FYSVMyID0gIm9yZy5lY2xpcHNlLmpzdC53cy5ydW50aW1lLmF4aXMyIjsKLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgV1NfQVhJUzJfUlVOVElNRSA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuYXhpczIuY3JlYXRpb24uYXhpczJXZWJTZXJ2aWNlUlQiOwotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBTRVJWRVJUWVBFSURfVEM1MCA9ICJvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC41MCI7Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIHdlYlByb2plY3ROYW1lID0gIldlYlByb2plY3QiOwotICAKLSAgLy8gZmxleGlibGUgcHJvamVjdCBzdHJ1Y3R1cmUgMQotICBwdWJsaWMgZmluYWwgU3RyaW5nIHByb2plY3ROYW1lID0gIkZsZXhQcm9qZWN0IjsKLSAgcHVibGljIGZpbmFsIFN0cmluZyB3ZWJDb21wb25lbnROYW1lID0gIndlYkNvbXBvbmVudCI7Ci0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgd2ViQ29tcG9uZW50Mk5hbWUgPSAid2ViQ29tcDIiOwotCi0gIC8vIGZsZXhpYmxlIHByb2plY3Qgc3RydWN0dXJlIDIKLSAgcHVibGljIGZpbmFsIFN0cmluZyBwcm9qZWN0Mk5hbWUgPSAiRmxleFByb2plY3QyIjsKLSAgcHVibGljIGZpbmFsIFN0cmluZyB3ZWJDb21wM05hbWUgPSAid2ViQ29tcDMiOwotICBwdWJsaWMgZmluYWwgU3RyaW5nIHdlYkNvbXA0TmFtZSA9ICJ3ZWJDb21wNCI7Ci0gICAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZWpiUHJvamVjdE5hbWUgPSAiRmxleEVKQlByb2plY3QiOwotICBwdWJsaWMgZmluYWwgU3RyaW5nIGVqYkNvbXBvbmVudE5hbWUgPSAiZWpiQ29tcG9uZW50IjsKLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGFwcENsaWVudFByb2plY3ROYW1lID0gIkZsZXhBcHBDbGllbnRQcm9qZWN0IjsKLSAgcHVibGljIGZpbmFsIFN0cmluZyBhcHBDbGllbnRDb21wTmFtZSA9ICJhcHBDbGllbnRDb21wb25lbnQiOyAgCi0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGVhckNvbXBOYW1lID0gIkVBUkNvbXBvbmVudCI7Ci0gIAotICBwdWJsaWMgZmluYWwgUGF0aCB6aXBGaWxlUGF0aCA9IG5ldyBQYXRoKCIvZGF0YS9XU1Rlc3RQcm9qZWN0cy56aXAiKTsKLSAgcHVibGljIGZpbmFsIFN0cmluZ1tdIHByb2plY3ROYW1lcyA9IG5ldyBTdHJpbmdbXXtwcm9qZWN0TmFtZSwgcHJvamVjdDJOYW1lfTsKLSAgCi0gIC8vIHBlcmZvcm1hbmNlIGNvbnN0YW50cwotICBwdWJsaWMgZmluYWwgU3RyaW5nIEJVX1BST0pFQ1RfTkFNRSA9ICJUZXN0V2ViIjsKLSAgcHVibGljIGZpbmFsIFN0cmluZyBURF9QUk9KRUNUX05BTUUgPSAiVGVzdFREUHJvamVjdCI7Ci0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgQ0xJRU5UX1BST0pFQ1RfTkFNRSA9ICJUZXN0V2ViQ2xpZW50IjsKLSAgCi0gIHB1YmxpYyBmaW5hbCBQYXRoIHBlcmZfemlwRmlsZVBhdGggPSBuZXcgUGF0aCgiL2RhdGEvV1NQZXJmUHJvamVjdHMuemlwIik7Ci0gIHB1YmxpYyBmaW5hbCBTdHJpbmdbXSBwZXJmX3Byb2plY3ROYW1lcyA9IG5ldyBTdHJpbmdbXXtCVV9QUk9KRUNUX05BTUUsIFREX1BST0pFQ1RfTkFNRSwgQ0xJRU5UX1BST0pFQ1RfTkFNRX07Ci0gCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3VuaXR0ZXN0L1dlYlNlcnZpY2VSdW50aW1lVGVzdHMuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvV2ViU2VydmljZVJ1bnRpbWVUZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2FjMDRmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdW5pdHRlc3QvV2ViU2VydmljZVJ1bnRpbWVUZXN0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTI5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDUxOCAgIDEyNzE4OSByc2luaGFAY2EuaWJtLmNvbSAtIFJ1cGFtIEt1ZWhuZXIKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudW5pdHRlc3Q7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5OdWxsUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmpyZXMuSlJFc1VwZGF0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5JVk1JbnN0YWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSVZNSW5zdGFsbDI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5JVk1JbnN0YWxsVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkphdmFSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuVk1TdGFuZGluOwotaW1wb3J0IG9yZy5lY2xpcHNlLmplbS51dGlsLmVtZi53b3JrYmVuY2guUHJvamVjdFV0aWxpdGllczsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5KMkVFVmVyc2lvbkNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS5pbnRlcm5hbC5wbHVnaW4uSUoyRUVNb2R1bGVDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LnNlcnZlci5jb3JlLkZhY2V0VXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC5jb3JlLmludGVybmFsLklUb21jYXRSdW50aW1lV29ya2luZ0NvcHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1hbmQuY29tbW9uLkNyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uY29tbW9uLkZhY2V0VXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5SZXF1aXJlZEZhY2V0VmVyc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24uZGF0YW1vZGVsLnZhbGlkYXRlLlZhbGlkYXRpb25NYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53c3J0LkZhY2V0TWF0Y2hDYWNoZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkud3NydC5XZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5JRmFjZXRlZFByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuSVByb2plY3RGYWNldFZlcnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUuUHJvamVjdEZhY2V0c01hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklSdW50aW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JUnVudGltZVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklSdW50aW1lV29ya2luZ0NvcHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLndzcnQuV2ViU2VydmljZVNjZW5hcmlvOwotCi0vKioKLSAqIFdlYlNlcnZpY2VSdW50aW1lVGVzdHMgY29udGFpbnMgdGhlIEpVbml0IHRlc3RzIHdoaWNoIGNvdmVyIHByb2plY3QKLSAqIGNyZWF0aW9uLCBwcm9qZWN0IGZpbHRlcmluZywgYW5kIHByb2plY3QgdHlwZSBmaWx0ZXJpbmcgZm9yIHRoZSBBeGlzCi0gKiBXZWIgc2VydmljZSBydW50aW1lLiBJbiBvcmRlciBmb3IgdGhlIHRlc3QgdG8gcnVuIHN1Y2Nlc3NmdWxseToKLSAqIDxvbD4KLSAqIDxsaT5UaGUgRWNsaXBzZSB0ZXN0IGVudmlyb25tZW50IG11c3QgYmUgbGF1bmNoZWQgd2l0aCBKREsxLjQuMjwvbGk+Ci0gKiA8bGk+VGhlIGZvbGxvd2luZyBWTSBhcmd1bWVudHMgbXVzdCBiZSBzcGVjaWZpZWQ6Ci0gKiA8dWw+Ci0gKiAgIDxsaT5vcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC41NTogdGhlIGluc3RhbGwgbG9jYXRpb24gb2YgYSBUb21jYXQgNS41IHNlcnZlciw8YnI+IAotICogICBmb3IgZXhhbXBsZSwgdXNlIC1Eb3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuNTU9ZDpcamFrYXJ0YS10b21jYXQtNS41LjkKLSAqICAgPGxpPm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwOiB0aGUgaW5zdGFsbCBsb2NhdGlvbiBvZiBhIFRvbWNhdCA1LjAgc2VydmVyLDxicj4KLSAqICAgZm9yIGV4YW1wbGUsIHVzZSAtRG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwPWQ6XGpha2FydGEtdG9tY2F0LTUuMC4yOCAgIAotICogICA8bGk+b3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuNDE6IHRoZSBpbnN0YWxsIGxvY2F0aW9uIG9mIGEgVG9tY2F0IDQuMSBzZXJ2ZXIsPGJyPgotICogICBmb3IgZXhhbXBsZSwgdXNlIC1Eb3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuNDE9ZDpcamFrYXJ0YS10b21jYXQtNC4xLjI5Ci0gKiAgIDxsaT5qYXZhLjE1Lmluc3RhbGwucGF0aDogdGhlIGluc3RhbGwgbG9jYXRpb24gb2YgYSBKYXZhIDEuNSBKREssPGJyPgotICogICBmb3IgZXhhbXBsZSwgdXNlIC1EamF2YS4xNS5pbnN0YWxsLnBhdGg9ZDpcamRrMS41LjBfMDIKLSAqIDwvdWw+PC9saT4KLSAqIDwvb2w+Ci0gKiAKLSAqIAotICovCi1wdWJsaWMgY2xhc3MgV2ViU2VydmljZVJ1bnRpbWVUZXN0cyBleHRlbmRzIFRlc3RDYXNlCi17Ci0gIAotICAvL1NlcnZlciBpbnN0YWxsIHBhdGhzCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFNFUlZFUl9JTlNUQUxMX1BBVEhfVEM1NSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgib3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuNTUiKTsgIAotICBwcml2YXRlIGZpbmFsIFN0cmluZyBTRVJWRVJfSU5TVEFMTF9QQVRIX1RDNTAgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwIik7ICAKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU0VSVkVSX0lOU1RBTExfUEFUSF9UQzQxID0gU3lzdGVtLmdldFByb3BlcnR5KCJvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC40MSIpOwotICAKLSAgLy9KREsgMS41IGluc3RhbGwgaW5mbwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBKQVZBMTVfVk1fSU5TVEFMTF9QQVRIID0gU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLjE1Lmluc3RhbGwucGF0aCIpOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBKQVZBMTVfVk1fSU5TVEFMTF9UWVBFID0gIm9yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEpBVkExNV9WTV9JTlNUQUxMX05BTUUgPSAiSmF2YTE1IjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgSkFWQTE1X1ZNX0lOU1RBTExfSkFWQURPQyA9ICJodHRwOi8vamF2YS5zdW4uY29tL2oyc2UvMS41LjAvZG9jcy9hcGkvIjsKLSAgCi0gIC8vUnVudGltZSB0eXBlIGlkcyBhbnMgc2VydmVyIHR5cGUgaWRzCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFJVTlRJTUVUWVBFSURfVEM1NSA9ICJvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC5ydW50aW1lLjU1IjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU0VSVkVSVFlQRUlEX1RDNTUgPSAib3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuNTUiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBSVU5USU1FVFlQRUlEX1RDNTAgPSAib3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQucnVudGltZS41MCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFNFUlZFUlRZUEVJRF9UQzUwID0gIm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgUlVOVElNRVRZUEVJRF9UQzQxID0gIm9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LnJ1bnRpbWUuNDEiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBTRVJWRVJUWVBFSURfVEM0MSA9ICJvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC40MSI7ICAKLSAgCi0gIC8vUnVudGltZSBpZHMgZm9yIHJ1bnRpbWVzIHRoYXQgd2lsbCBiZSBjcmVhdGVkCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFJVTlRJTUVJRF9UQzU1ID0gIlRvbWNhdDU1UnVudGltZSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFJVTlRJTUVJRF9UQzUwID0gIlRvbWNhdDUwUnVudGltZSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFJVTlRJTUVJRF9UQzQxID0gIlRvbWNhdDQxUnVudGltZSI7Ci0gIAotICAvL1dlYiBzZXJ2aWNlIHJ1bnRpbWUgZXh0ZW5zaW9uIGlkcyBmb3IgQXhpcwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBBWElTX1JVTlRJTUUgPSAib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY3JlYXRpb24uYXhpc1dlYlNlcnZpY2VSVCI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFNFUlZJQ0VfSU1QTF9KQVZBID0gIm9yZy5lY2xpcHNlLmpzdC53cy53c0ltcGwuamF2YSI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIEFYSVNfU0VSVklDRV9SVU5USU1FID0gIm9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNyZWF0aW9uLmphdmEiOwotICBwcml2YXRlIGZpbmFsIFN0cmluZyBDTElFTlRfSU1QTF9KQVZBID0gIm9yZy5lY2xpcHNlLmpzdC53cy5jbGllbnQudHlwZS5qYXZhIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgQVhJU19DTElFTlRfUlVOVElNRV9XRUIgPSAib3JnLmVjbGlwc2UuanN0LndzLmF4aXMuY29uc3VtcHRpb24ud2ViIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgQVhJU19DTElFTlRfUlVOVElNRV9KQVZBID0gIm9yZy5lY2xpcHNlLmpzdC53cy5heGlzLmNvbnN1bXB0aW9uLmphdmEiOwotICAKLSAgLy9WYXJpb3VzIGNvbnN0YW50cyB1c2VkIGJ5IHRoZSB0ZXN0IGNhc2UgZm9yIGlkZW50aWZ5aW5nIHNlcnZpY2UvY2xpZW50IHNpZGUgYW5kIAotICAvL2ZvciBzZXR0aW5nIG5hbWVzIG9uIGNyZWF0ZWQgcHJvamVjdHMuCi0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFNFUlZJQ0VfU0lERSA9ICJzIjsKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgQ0xJRU5UX1NJREUgPSAiYyI7ICAKLSAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgUFJPSkVDVF9OQU1FX1BSRUZJWCA9ICJ0YyI7Ci0gIHByaXZhdGUgZmluYWwgU3RyaW5nIFBST0pFQ1RfTkFNRV9TVUZGSVggPSAicHJvamVjdCI7Ci0gIAotICAvL0lQcm9qZWN0RmFjZXRWZXJzaW9ucyB1c2VkIGluIHRoZSBleHBlY3RlZCByZXN1bHRzCi0gIHByaXZhdGUgZmluYWwgSVByb2plY3RGYWNldFZlcnNpb24gV0VCMjMgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRQcm9qZWN0RmFjZXQoSUoyRUVNb2R1bGVDb25zdGFudHMuSlNUX1dFQl9NT0RVTEUpLmdldFZlcnNpb24oSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8yXzNfVEVYVCk7Ci0gIHByaXZhdGUgZmluYWwgSVByb2plY3RGYWNldFZlcnNpb24gV0VCMjQgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRQcm9qZWN0RmFjZXQoSUoyRUVNb2R1bGVDb25zdGFudHMuSlNUX1dFQl9NT0RVTEUpLmdldFZlcnNpb24oSjJFRVZlcnNpb25Db25zdGFudHMuVkVSU0lPTl8yXzRfVEVYVCk7Ci0gIHByaXZhdGUgZmluYWwgSVByb2plY3RGYWNldFZlcnNpb24gSkFWQTE0ID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0UHJvamVjdEZhY2V0KElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9KQVZBKS5nZXRWZXJzaW9uKEoyRUVWZXJzaW9uQ29uc3RhbnRzLlZFUlNJT05fMV80X1RFWFQpOwotICBwcml2YXRlIGZpbmFsIElQcm9qZWN0RmFjZXRWZXJzaW9uIEpBVkE1MCA9IFByb2plY3RGYWNldHNNYW5hZ2VyLmdldFByb2plY3RGYWNldChJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfSkFWQSkuZ2V0VmVyc2lvbigiNS4wIik7Ci0gIHByaXZhdGUgZmluYWwgSVByb2plY3RGYWNldFZlcnNpb24gVVRJTElUWTEwID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0UHJvamVjdEZhY2V0KElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9VVElMSVRZX01PRFVMRSkuZ2V0VmVyc2lvbihKMkVFVmVyc2lvbkNvbnN0YW50cy5WRVJTSU9OXzFfMF9URVhUKTsgIAotICAKLSAgcHJpdmF0ZSBmaW5hbCBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSBURU1QTEFURV9XRUIgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5nZXRUZW1wbGF0ZShJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfV0VCX1RFTVBMQVRFKTsKLSAgcHJpdmF0ZSBmaW5hbCBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZSBURU1QTEFURV9VVElMSVRZID0gUHJvamVjdEZhY2V0c01hbmFnZXIuZ2V0VGVtcGxhdGUoSUoyRUVNb2R1bGVDb25zdGFudHMuSlNUX1VUSUxJVFlfVEVNUExBVEUpOwotICAKLSAgcHJpdmF0ZSBpbnQgbXVsdGlwbGVzRm9yUHJvamVjdENyZWF0aW9uOwotICAKLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKFdlYlNlcnZpY2VSdW50aW1lVGVzdHMuY2xhc3MpOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgaW5pdCgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBhc3NlcnROb3ROdWxsKFNFUlZFUl9JTlNUQUxMX1BBVEhfVEM1NSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKFNFUlZFUl9JTlNUQUxMX1BBVEhfVEM1MCk7Ci0gICAgICBhc3NlcnROb3ROdWxsKFNFUlZFUl9JTlNUQUxMX1BBVEhfVEM0MSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKEpBVkExNV9WTV9JTlNUQUxMX1BBVEgpOwotICAgICAgCi0gICAgICAvL0NyZWF0ZSBhIHNlcnZlciBydW50aW1lOiBUb21jYXQgNC4xIHdpdGggSkRLIDEuNC4yCi0gICAgICBjcmVhdGVUb21jYXRTZXJ2ZXJSdW50aW1lKFJVTlRJTUVJRF9UQzQxLCBSVU5USU1FVFlQRUlEX1RDNDEsIFNFUlZFUl9JTlNUQUxMX1BBVEhfVEM0MSk7Ci0gICAgICAKLSAgICAgIC8vQ3JlYXRlIGEgc2VydmVyIHJ1bnRpbWU6IFRvbWNhdCA1LjAgd2l0aCBKREsgMS40LjIKLSAgICAgIGNyZWF0ZVRvbWNhdFNlcnZlclJ1bnRpbWUoUlVOVElNRUlEX1RDNTAsIFJVTlRJTUVUWVBFSURfVEM1MCwgU0VSVkVSX0lOU1RBTExfUEFUSF9UQzUwKTsKLSAgICAgIAotICAgICAgLy9DcmVhdGUgYSBzZXJ2ZXIgcnVudGltZTogVG9tY2F0IDUuNSB3aXRoIEpESyAxLjUKLSAgICAgIGNyZWF0ZVRvbWNhdFNlcnZlclJ1bnRpbWUoUlVOVElNRUlEX1RDNTUsIFJVTlRJTUVUWVBFSURfVEM1NSwgU0VSVkVSX0lOU1RBTExfUEFUSF9UQzU1KTsKLSAgICAgIAotICAgICAgCi0gICAgICAKLSAgICAgIFN0cmluZyBtdWx0aXBsZXMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIm11bHRpcGxlcyIpOyAvL3RoaXMgaXMgYW4gb3B0aW9uYWwgcHJvcGVyeSAtIGRlZmF1bHRlZCB0byAxCi0gICAgICBpZiAobXVsdGlwbGVzICE9IG51bGwgJiYgKEludGVnZXIucGFyc2VJbnQobXVsdGlwbGVzKSA+IDApKQotICAgICAgewotICAgICAgICBtdWx0aXBsZXNGb3JQcm9qZWN0Q3JlYXRpb24gPSBJbnRlZ2VyLnBhcnNlSW50KG11bHRpcGxlcyk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIG11bHRpcGxlc0ZvclByb2plY3RDcmVhdGlvbiA9IDE7Ci0gICAgICB9Ci0gICAgICAKLSAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgZmFpbCgpOwotICAgIH0KLSAgfSAgCi0gIAotICBwcml2YXRlIElSdW50aW1lIGNyZWF0ZVRvbWNhdFNlcnZlclJ1bnRpbWUoU3RyaW5nIHJ1bnRpbWVJZCwgU3RyaW5nIHJ1bnRpbWVUeXBlSWQsIFN0cmluZyBzZXJ2ZXJJbnN0YWxsUGF0aCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgSVJ1bnRpbWVUeXBlIHJ0ID0gU2VydmVyQ29yZS5maW5kUnVudGltZVR5cGUocnVudGltZVR5cGVJZCk7Ci0gICAgSVJ1bnRpbWVXb3JraW5nQ29weSB3YyA9IHJ0LmNyZWF0ZVJ1bnRpbWUocnVudGltZUlkLCBudWxsKTsKLSAgICB3Yy5zZXRMb2NhdGlvbihuZXcgUGF0aChzZXJ2ZXJJbnN0YWxsUGF0aCkpOwotICAgIElSdW50aW1lIHJ1bnRpbWUgPSB3Yy5zYXZlKHRydWUsIG51bGwpOwotICAgIAotICAgIGlmIChydW50aW1lVHlwZUlkLmVxdWFscyhSVU5USU1FVFlQRUlEX1RDNTUpKQotICAgIHsKLSAgICAgIC8vQ3JlYXRlIGEgbmV3IElWTUluc3RhbGwKLSAgICAgIElWTUluc3RhbGxUeXBlIHR5cGUgPSBKYXZhUnVudGltZS5nZXRWTUluc3RhbGxUeXBlKEpBVkExNV9WTV9JTlNUQUxMX1RZUEUpOwotICAgICAgSVZNSW5zdGFsbCBuZXdWTSA9IG5ldyBWTVN0YW5kaW4odHlwZSwgY3JlYXRlVW5pcXVlSWQodHlwZSkpOyAKLSAgICAgIG5ld1ZNLnNldEluc3RhbGxMb2NhdGlvbihuZXcgRmlsZShKQVZBMTVfVk1fSU5TVEFMTF9QQVRIKS5nZXRBYnNvbHV0ZUZpbGUoKSk7Ci0gICAgICBuZXdWTS5zZXROYW1lKEpBVkExNV9WTV9JTlNUQUxMX05BTUUpOwotICAgICAgbmV3Vk0uc2V0SmF2YWRvY0xvY2F0aW9uKG5ldyBVUkwoSkFWQTE1X1ZNX0lOU1RBTExfSkFWQURPQykpOwotICAgICAgaWYgKG5ld1ZNIGluc3RhbmNlb2YgSVZNSW5zdGFsbDIpCi0gICAgICB7Ci0gICAgICAgIElWTUluc3RhbGwyIG5ld1ZNMiA9IChJVk1JbnN0YWxsMikgbmV3Vk07Ci0gICAgICAgIG5ld1ZNMi5zZXRWTUFyZ3MobnVsbCk7Ci0gICAgICB9Ci0gICAgICBuZXdWTS5zZXRMaWJyYXJ5TG9jYXRpb25zKG51bGwpOyAgICAgIAotCi0gICAgICAvL0FkZCB0aGUgbmV3IElWTUluc3RhbGwgdG8gdGhlIG1hc3RlciBsaXN0LgotICAgICAgSVZNSW5zdGFsbFtdIHZtcyA9IG5ldyBJVk1JbnN0YWxsW117bmV3Vk19OwotICAgICAgLy9UT0RPIFJlcGxhY2UgdXNlIG9mIHRoZSBpbnRlcm5hbCBjbGFzcyBvcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkuanJlcy5KUkVzVXBkYXRlcgotICAgICAgLy93aXRoIHNvbWV0aGluZyBwdWJsaWMuIE5vdCBzdXJlIGlmIHNvbWV0aGluZyBwdWJsaWMgaXMgYXZhaWxhYmxlIGF0IHRoaXMgdGltZS4gTmVlZCB0byBjaGVjay4KLSAgICAgIEpSRXNVcGRhdGVyIHVwZGF0ZXIgPSBuZXcgSlJFc1VwZGF0ZXIoKTsKLSAgICAgIElWTUluc3RhbGwgZGVmYXVsdFZNID0gSmF2YVJ1bnRpbWUuZ2V0RGVmYXVsdFZNSW5zdGFsbCgpOwotICAgICAgdXBkYXRlci51cGRhdGVKUkVTZXR0aW5ncyh2bXMsIGRlZmF1bHRWTSk7Ci0gICAgICAKLSAgICAgIC8vR2V0IHRoZSBuZXcgSVZNSW5zdGFsbAotICAgICAgSVZNSW5zdGFsbFR5cGUgdm1UeXBlID0gSmF2YVJ1bnRpbWUuZ2V0Vk1JbnN0YWxsVHlwZShKQVZBMTVfVk1fSU5TVEFMTF9UWVBFKTsKLSAgICAgIElWTUluc3RhbGwgamF2YTE1Vk0gPSB2bVR5cGUuZmluZFZNSW5zdGFsbEJ5TmFtZShKQVZBMTVfVk1fSU5TVEFMTF9OQU1FKTsKLSAgICAKLSAgICAgIC8vU2V0IHRoZSB0b21jYXQgcnVudGltZSB0byB1c2UgdGhlIG5ldyBKYXZhIDE1IEpESy4KLSAgICAgIElSdW50aW1lV29ya2luZ0NvcHkgd2MyID0gcnVudGltZS5jcmVhdGVXb3JraW5nQ29weSgpOwotICAgICAgLy9UT0RPIFJlcGxhY2UgdXNlIG9mIHRoZSBpbnRlcm5hbCBjbGFzcyAKLSAgICAgIC8vb3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuY29yZS5pbnRlcm5hbC5JVG9tY2F0UnVudGltZVdvcmtpbmdDb3B5Ci0gICAgICAvL3dpdGggc29tZXRoaW5nIHB1YmxpYy4gRW5oYW5jZW1lbnQgMTI3ODg0IGhhcyBiZWVuIG9wZW5lZCB0byByZXF1ZXN0IEFQSQotICAgICAgLy9mb3IgdGhpcy4KLSAgICAgIElUb21jYXRSdW50aW1lV29ya2luZ0NvcHkgdGN3YyA9IChJVG9tY2F0UnVudGltZVdvcmtpbmdDb3B5KXdjMi5sb2FkQWRhcHRlcihJVG9tY2F0UnVudGltZVdvcmtpbmdDb3B5LmNsYXNzLCBuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLSAgICAgIHRjd2Muc2V0Vk1JbnN0YWxsKGphdmExNVZNKTsKLSAgICAgIHdjMi5zYXZlKHRydWUsIG51bGwpOyAgICAgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gU2VydmVyQ29yZS5maW5kUnVudGltZShydW50aW1lSWQpOwotICB9ICAKLSAgCi0gIHByaXZhdGUgU3RyaW5nIGNyZWF0ZVVuaXF1ZUlkKElWTUluc3RhbGxUeXBlIHZtVHlwZSkKLSAgewotICAgIFN0cmluZyBpZCA9IG51bGw7Ci0gICAgZG8KLSAgICB7Ci0gICAgICBpZCA9IFN0cmluZy52YWx1ZU9mKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKLSAgICB9IHdoaWxlICh2bVR5cGUuZmluZFZNSW5zdGFsbChpZCkgIT0gbnVsbCk7Ci0gICAgcmV0dXJuIGlkOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdHMgcHJvamVjdCBjcmVhdGlvbiBhbmQgZmlsdGVyaW5nIGZvciB0aGUgQXhpcyBXZWIgc2VydmljZQotICAgKiBydW50aW1lLiBUZXN0cyBjb3ZlciBhbGwgdmFsaWQgY29tYmluYXRpb25zIG9mIFNlcnZpY2VSdW50aW1lcywgCi0gICAqIFRvbWNhdCBzZXJ2ZXJzLCBhbmQgSjJFRSBwcm9qZWN0IHR5cGVzIGFuZCB3ZWxsIGFzIGFsbCB2YWxpZCAgCi0gICAqIGNvbWJpbmF0aW9ucyBvZiBDbGllbnRSdW50aW1lcywgVG9tY2F0IHNlcnZlcnMsIGFuZCBKMkVFIHByb2plY3QgdHlwZXMuCi0gICAqLyAgCi0gIHB1YmxpYyB2b2lkIHRlc3RQcm9qZWN0Q3JlYXRpb25BbmRGaWx0ZXJpbmcoKQotICB7Ci0gICAgaW5pdCgpOwotICAgIAotICAgIFN0cmluZ1tdIHRlbXBsYXRlSWRzID0gbmV3IFN0cmluZ1tde0lKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfVEVNUExBVEUsCi0gICAgICAgIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfVEVNUExBVEUsCi0gICAgICAgIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfVEVNUExBVEUsCi0gICAgICAgIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfVEVNUExBVEUsCi0gICAgICAgIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfVEVNUExBVEUsCi0gICAgICAgIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9XRUJfVEVNUExBVEUsCi0gICAgICAgIElKMkVFTW9kdWxlQ29uc3RhbnRzLkpTVF9VVElMSVRZX1RFTVBMQVRFLAotICAgICAgICBJSjJFRU1vZHVsZUNvbnN0YW50cy5KU1RfVVRJTElUWV9URU1QTEFURSwKLSAgICAgICAgSUoyRUVNb2R1bGVDb25zdGFudHMuSlNUX1VUSUxJVFlfVEVNUExBVEV9OwotICAgIFN0cmluZ1tdIHNjZW5hcmlvcyA9IG5ldyBTdHJpbmdbXXtTRVJWSUNFX1NJREUsCi0gICAgICAgIFNFUlZJQ0VfU0lERSwKLSAgICAgICAgU0VSVklDRV9TSURFLAotICAgICAgICBDTElFTlRfU0lERSwKLSAgICAgICAgQ0xJRU5UX1NJREUsCi0gICAgICAgIENMSUVOVF9TSURFLAotICAgICAgICBDTElFTlRfU0lERSwKLSAgICAgICAgQ0xJRU5UX1NJREUsCi0gICAgICAgIENMSUVOVF9TSURFfTsKLSAgICBTdHJpbmdbXSBzZXJ2aWNlQ2xpZW50UnVudGltZUlkcyA9IG5ldyBTdHJpbmdbXXtBWElTX1NFUlZJQ0VfUlVOVElNRSwKLSAgICAgICAgQVhJU19TRVJWSUNFX1JVTlRJTUUsCi0gICAgICAgIEFYSVNfU0VSVklDRV9SVU5USU1FLAotICAgICAgICBBWElTX0NMSUVOVF9SVU5USU1FX1dFQiwKLSAgICAgICAgQVhJU19DTElFTlRfUlVOVElNRV9XRUIsCi0gICAgICAgIEFYSVNfQ0xJRU5UX1JVTlRJTUVfV0VCLAotICAgICAgICBBWElTX0NMSUVOVF9SVU5USU1FX0pBVkEsCi0gICAgICAgIEFYSVNfQ0xJRU5UX1JVTlRJTUVfSkFWQSwKLSAgICAgICAgQVhJU19DTElFTlRfUlVOVElNRV9KQVZBfTsKLSAgICBTdHJpbmdbXSBzZXJ2ZXJUeXBlcyA9IG5ldyBTdHJpbmdbXXtTRVJWRVJUWVBFSURfVEM0MSwKLSAgICAgICAgU0VSVkVSVFlQRUlEX1RDNTAsCi0gICAgICAgIFNFUlZFUlRZUEVJRF9UQzU1LAotICAgICAgICBTRVJWRVJUWVBFSURfVEM0MSwKLSAgICAgICAgU0VSVkVSVFlQRUlEX1RDNTAsCi0gICAgICAgIFNFUlZFUlRZUEVJRF9UQzU1LAotICAgICAgICBTRVJWRVJUWVBFSURfVEM0MSwKLSAgICAgICAgU0VSVkVSVFlQRUlEX1RDNTAsCi0gICAgICAgIFNFUlZFUlRZUEVJRF9UQzU1fTsKLSAgICAKLSAgICAKLSAgICAvL0V4cGVjdGVkIFJlc3VsdHM6Ci0gICAgCi0gICAgSVByb2plY3RGYWNldFZlcnNpb25bXVtdIGV4cGVjdGVkRmFjZXRzID0gbmV3IElQcm9qZWN0RmFjZXRWZXJzaW9uW11bXXsgbmV3IElQcm9qZWN0RmFjZXRWZXJzaW9uW117V0VCMjMsIEpBVkExNH0sCi0gICAgICAgIG5ldyBJUHJvamVjdEZhY2V0VmVyc2lvbltde1dFQjI0LCBKQVZBMTR9LAotICAgICAgICBuZXcgSVByb2plY3RGYWNldFZlcnNpb25bXXtXRUIyNCwgSkFWQTUwfSwKLSAgICAgICAgbmV3IElQcm9qZWN0RmFjZXRWZXJzaW9uW117V0VCMjMsIEpBVkExNH0sCi0gICAgICAgIG5ldyBJUHJvamVjdEZhY2V0VmVyc2lvbltde1dFQjI0LCBKQVZBMTR9LAotICAgICAgICBuZXcgSVByb2plY3RGYWNldFZlcnNpb25bXXtXRUIyNCwgSkFWQTUwfSwKLSAgICAgICAgbmV3IElQcm9qZWN0RmFjZXRWZXJzaW9uW117VVRJTElUWTEwLCBKQVZBMTR9LAotICAgICAgICBuZXcgSVByb2plY3RGYWNldFZlcnNpb25bXXtVVElMSVRZMTAsIEpBVkExNH0sCi0gICAgICAgIG5ldyBJUHJvamVjdEZhY2V0VmVyc2lvbltde1VUSUxJVFkxMCwgSkFWQTUwfSwKLSAgICB9OwotICAgIAotICAgIFN0cmluZ1tdIGV4cGVjdGVkUnVudGltZXMgPSBuZXcgU3RyaW5nW10ge1JVTlRJTUVJRF9UQzQxLAotICAgICAgICBSVU5USU1FSURfVEM1MCwKLSAgICAgICAgUlVOVElNRUlEX1RDNTUsCi0gICAgICAgIFJVTlRJTUVJRF9UQzQxLAotICAgICAgICBSVU5USU1FSURfVEM1MCwKLSAgICAgICAgUlVOVElNRUlEX1RDNTUsCi0gICAgICAgIFJVTlRJTUVJRF9UQzQxLAotICAgICAgICBSVU5USU1FSURfVEM1MCwKLSAgICAgICAgUlVOVElNRUlEX1RDNTUgICAgICAgIAotICAgIH07Ci0gICAgCi0gICAgU3RyaW5nIGJpZ1ByZWZpeCA9IFBST0pFQ1RfTkFNRV9QUkVGSVgrIjAiK1BST0pFQ1RfTkFNRV9TVUZGSVg7Ci0gICAgU3RyaW5nW10gZXhwZWN0ZWRQcm9qZWN0c0ZvckF4aXNTZXJ2aWNlID0gbmV3IFN0cmluZ1tdIHsgYmlnUHJlZml4KyIwIiwgCi0gICAgICAgIGJpZ1ByZWZpeCsiMSIsCi0gICAgICAgIGJpZ1ByZWZpeCsiMiIsCi0gICAgICAgIGJpZ1ByZWZpeCsiMyIsCi0gICAgICAgIGJpZ1ByZWZpeCsiNCIsCi0gICAgICAgIGJpZ1ByZWZpeCsiNSIgICAgICAgIAotICAgIH07Ci0gICAgCi0gICAgU3RyaW5nW10gZXhwZWN0ZWRQcm9qZWN0c0ZvckF4aXNDbGllbnQgPSBuZXcgU3RyaW5nW10geyBiaWdQcmVmaXgrIjAiLCAKLSAgICAgICAgYmlnUHJlZml4KyIxIiwKLSAgICAgICAgYmlnUHJlZml4KyIyIiwKLSAgICAgICAgYmlnUHJlZml4KyIzIiwKLSAgICAgICAgYmlnUHJlZml4KyI0IiwKLSAgICAgICAgYmlnUHJlZml4KyI1IiwKLSAgICAgICAgYmlnUHJlZml4KyI2IiwKLSAgICAgICAgYmlnUHJlZml4KyI3IiwKLSAgICAgICAgYmlnUHJlZml4KyI4IiwKLSAgICB9OwotICAgIAotICAgIGJvb2xlYW5bXSBleHBlY3RlZEJvb2xlYW5zRm9yQXhpc1NlcnZpY2UgPSBuZXcgYm9vbGVhbltdIHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKLSAgICBib29sZWFuW10gZXhwZWN0ZWRCb29sZWFuc0ZvckF4aXNDbGllbnRXZWIgPSBuZXcgYm9vbGVhbltdIHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKLSAgICBib29sZWFuW10gZXhwZWN0ZWRCb29sZWFuc0ZvckF4aXNDbGllbnRKYXZhID0gbmV3IGJvb2xlYW5bXSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX07Ci0gICAgCi0gICAgCi0gICAgLy9UdXJuIGF1dG8tYnVpbGQgb2ZmCi0gICAgVmFsaWRhdGlvbk1hbmFnZXIgbWFuYWdlciA9IG5ldyBWYWxpZGF0aW9uTWFuYWdlcigpOwotICAgIG1hbmFnZXIuZGlzYWJsZUF1dG9CdWlsZCgpOwotICAgIAotICAgIC8vQ3JlYXRlIHRoZSBwcm9qZWN0cwotICAgIGZvciAoaW50IGk9MDsgaTxtdWx0aXBsZXNGb3JQcm9qZWN0Q3JlYXRpb247IGkrKykKLSAgICB7Ci0gICAgICBjcmVhdGVQcm9qZWN0cyh0ZW1wbGF0ZUlkcywgc2NlbmFyaW9zLCBzZXJ2aWNlQ2xpZW50UnVudGltZUlkcywgc2VydmVyVHlwZXMsIFBST0pFQ1RfTkFNRV9QUkVGSVgraSk7Ci0gICAgfSAgCi0gICAgCi0gICAgLy9SZXN0b3JlIGF1dG8tYnVpbGQKLSAgICBtYW5hZ2VyLnJlc3RvcmVBdXRvQnVpbGQoKTsKLSAgICAKLSAgICAvL0NoZWNrIEV4cGVjdGVkIFJlc3VsdHM6Ci0gICAgCi0gICAgLy9DaGVjayBmYWNldHMgYW5kIHJ1bnRpbWUgb24gdGhlIGZpcnN0ICIwInRoIHNldCBvZiBjcmVhdGVkIHByb2plY3RzLiBJZ25vcmUgaGlnaGVyIG11bHRpcGxlcyBzaW5jZSB0aGV5Ci0gICAgLy9hcmUgZHVwbGljYXRlcy4gICAgCi0gICAgZm9yIChpbnQgaj0wOyBqPGV4cGVjdGVkRmFjZXRzLmxlbmd0aDsgaisrKQotICAgIHsKLSAgICAgIFN0cmluZyBwcm9qZWN0TmFtZSA9IGJpZ1ByZWZpeCtqOwotICAgICAgSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChwcm9qZWN0TmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKHByb2plY3QpOwotICAgICAgYXNzZXJ0VHJ1ZShwcm9qZWN0LmV4aXN0cygpKTsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBJRmFjZXRlZFByb2plY3QgZlByb2plY3QgPSBQcm9qZWN0RmFjZXRzTWFuYWdlci5jcmVhdGUocHJvamVjdCk7Ci0gICAgICAgIGFzc2VydE5vdE51bGwoZlByb2plY3QpOwotCi0gICAgICAgIC8vQ2hlY2sgZmFjZXRzCi0gICAgICAgIC8vYmVnaW4gZGVidWcKLSAgICAgICAgSXRlcmF0b3IgcGZhY2V0cyA9IGZQcm9qZWN0LmdldFByb2plY3RGYWNldHMoKS5pdGVyYXRvcigpOwotICAgICAgICB3aGlsZSAocGZhY2V0cy5oYXNOZXh0KCkpCi0gICAgICAgIHsKLSAgICAgICAgCUlQcm9qZWN0RmFjZXRWZXJzaW9uIHBmdiA9IChJUHJvamVjdEZhY2V0VmVyc2lvbilwZmFjZXRzLm5leHQoKTsKLSAgICAgICAgCVN5c3RlbS5vdXQucHJpbnRsbigiZmFjZXQ9IitwZnYuZ2V0UHJvamVjdEZhY2V0KCkuZ2V0SWQoKSsiLCB2ZXJzaW9uPSIrcGZ2LmdldFZlcnNpb25TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoaW50IGs9MDsgazxleHBlY3RlZEZhY2V0c1tqXS5sZW5ndGg7IGsrKykKLSAgICAgICAgewotICAgICAgICAgIGFzc2VydFRydWUoZlByb2plY3QuaGFzUHJvamVjdEZhY2V0KGV4cGVjdGVkRmFjZXRzW2pdW2tdKSk7Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vQ2hlY2sgcnVudGltZQotICAgICAgICBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5ydW50aW1lLklSdW50aW1lIGZSdW50aW1lID0gZlByb2plY3QuZ2V0UnVudGltZSgpOwotICAgICAgICBhc3NlcnROb3ROdWxsKGZSdW50aW1lKTsKLSAgICAgICAgSVJ1bnRpbWUgc1J1bnRpbWUgPSBGYWNldFV0aWwuZ2V0UnVudGltZShmUnVudGltZSk7Ci0gICAgICAgIGFzc2VydE5vdE51bGwoc1J1bnRpbWUpOwotICAgICAgICBhc3NlcnRUcnVlKHNSdW50aW1lLmdldElkKCkuZXF1YWxzKGV4cGVjdGVkUnVudGltZXNbal0pKTsKLSAgICAgICAgCi0gICAgICB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKQotICAgICAgewotICAgICAgICBmYWlsKCk7Ci0gICAgICB9Ci0gICAgICAKLSAgICB9Ci0gICAgCi0gICAgLy9DaGVjayB0aGF0IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFByb2plY3RzRm9yU2VydmljZVR5cGVBbmRSdW50aW1lKC4uKSByZXR1cm5zCi0gICAgLy90aGUgcmlnaHQgc2V0IG9mIHByb2plY3RzCi0gICAgU3RyaW5nIHNlcnZpY2VUeXBlID0gU3RyaW5nLnZhbHVlT2YoV2ViU2VydmljZVNjZW5hcmlvLkJPVFRPTVVQKSArICIvIiArIFNFUlZJQ0VfSU1QTF9KQVZBOwotICAgIFN0cmluZ1tdIHByb2plY3RzRm9yQXhpc1NlcnZpY2UgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRQcm9qZWN0c0ZvclNlcnZpY2VUeXBlQW5kUnVudGltZShzZXJ2aWNlVHlwZSwgQVhJU19SVU5USU1FKTsKLSAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRQcm9qZWN0c0ZvckF4aXNTZXJ2aWNlLmxlbmd0aCwgcHJvamVjdHNGb3JBeGlzU2VydmljZS5sZW5ndGgpOwotICAgIExpc3QgcHJvamVjdHNGb3JBeGlzU2VydmljZUxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgZm9yIChpbnQgaT0wOyBpPHByb2plY3RzRm9yQXhpc1NlcnZpY2UubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgcHJvamVjdHNGb3JBeGlzU2VydmljZUxpc3QuYWRkKHByb2plY3RzRm9yQXhpc1NlcnZpY2VbaV0pOyAgICAgIAotICAgIH0KLSAgICBmb3IgKGludCBpPTA7IGk8ZXhwZWN0ZWRQcm9qZWN0c0ZvckF4aXNTZXJ2aWNlLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGFzc2VydFRydWUocHJvamVjdHNGb3JBeGlzU2VydmljZUxpc3QuY29udGFpbnMoZXhwZWN0ZWRQcm9qZWN0c0ZvckF4aXNTZXJ2aWNlW2ldKSk7Ci0gICAgfQotICAgIAotICAgIC8vQ2hlY2sgdGhhdCBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRQcm9qZWN0c0ZvckNsaWVudFR5cGVBbmRSdW50aW1lKC4uKSByZXR1cm5zCi0gICAgLy90aGUgcmlnaHQgc2V0IG9mIHByb2plY3RzICAgIAotICAgIFN0cmluZ1tdIHByb2plY3RzRm9yQXhpc0NsaWVudCA9IFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmdldFByb2plY3RzRm9yQ2xpZW50VHlwZUFuZFJ1bnRpbWUoQ0xJRU5UX0lNUExfSkFWQSwgQVhJU19SVU5USU1FKTsKLSAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRQcm9qZWN0c0ZvckF4aXNDbGllbnQubGVuZ3RoLCBwcm9qZWN0c0ZvckF4aXNDbGllbnQubGVuZ3RoKTsKLSAgICBMaXN0IHByb2plY3RzRm9yQXhpc0NsaWVudExpc3QgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgZm9yIChpbnQgaT0wOyBpPHByb2plY3RzRm9yQXhpc0NsaWVudC5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBwcm9qZWN0c0ZvckF4aXNDbGllbnRMaXN0LmFkZChwcm9qZWN0c0ZvckF4aXNDbGllbnRbaV0pOyAgICAgIAotICAgIH0KLSAgICBmb3IgKGludCBpPTA7IGk8ZXhwZWN0ZWRQcm9qZWN0c0ZvckF4aXNDbGllbnQubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgYXNzZXJ0VHJ1ZShwcm9qZWN0c0ZvckF4aXNDbGllbnRMaXN0LmNvbnRhaW5zKGV4cGVjdGVkUHJvamVjdHNGb3JBeGlzQ2xpZW50W2ldKSk7Ci0gICAgfSAgICAKLSAgICAKLSAgICAvL0NoZWNrIHRoYXQgdGhlIEF4aXMgc2VydmljZSBhbmQgY2xpZW50IHJ1bnRpbWVzJyBwcm9qZWN0IGNvbXBhdGliaWxpdHkgY2hlY2tpbmcgaXMgd29ya2luZwotICAgIGZvciAoaW50IGk9MDsgaTxleHBlY3RlZEJvb2xlYW5zRm9yQXhpc1NlcnZpY2UubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgU3RyaW5nIHByb2plY3ROYW1lID0gYmlnUHJlZml4K2k7ICAgICAgCi0gICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRCb29sZWFuc0ZvckF4aXNTZXJ2aWNlW2ldLCBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5kb2VzU2VydmljZVJ1bnRpbWVTdXBwb3J0UHJvamVjdChBWElTX1NFUlZJQ0VfUlVOVElNRSwgcHJvamVjdE5hbWUpKTsgICAgCi0gICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRCb29sZWFuc0ZvckF4aXNDbGllbnRXZWJbaV0sIFdlYlNlcnZpY2VSdW50aW1lRXh0ZW5zaW9uVXRpbHMyLmRvZXNDbGllbnRSdW50aW1lU3VwcG9ydFByb2plY3QoQVhJU19DTElFTlRfUlVOVElNRV9XRUIsIHByb2plY3ROYW1lKSk7Ci0gICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRCb29sZWFuc0ZvckF4aXNDbGllbnRKYXZhW2ldLCBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5kb2VzQ2xpZW50UnVudGltZVN1cHBvcnRQcm9qZWN0KEFYSVNfQ0xJRU5UX1JVTlRJTUVfSkFWQSwgcHJvamVjdE5hbWUpKTsKLSAgICB9IAotICAgIAotICAgIC8vVHVybiBhdXRvLWJ1aWxkIG9mZgotICAgIG1hbmFnZXIuZGlzYWJsZUF1dG9CdWlsZCgpOwotICAgICAgICAKLSAgICAvL0RlbGV0ZSB0aGUgcHJvamVjdHMKLSAgICBmb3IgKGludCBpPTA7IGk8bXVsdGlwbGVzRm9yUHJvamVjdENyZWF0aW9uOyBpKyspCi0gICAgewotICAgICAgZGVsZXRlUHJvamVjdHModGVtcGxhdGVJZHMubGVuZ3RoLCBQUk9KRUNUX05BTUVfUFJFRklYK2kpOwotICAgIH0gICAgICAKLQotICAgIC8vUmVzdG9yZSBhdXRvLWJ1aWxkCi0gICAgbWFuYWdlci5yZXN0b3JlQXV0b0J1aWxkKCk7ICAgIAotICB9ICAKLSAgCi0gIHByaXZhdGUgdm9pZCBkZWxldGVQcm9qZWN0cyhpbnQgbiwgU3RyaW5nIG5hbWVQcmVmaXgpCi0gIHsKLSAgICBmb3IgKGludCBpPTA7IGk8bjsgaSsrKQotICAgIHsKLSAgICAgIFN0cmluZyBuYW1lID0gbmFtZVByZWZpeCArIFBST0pFQ1RfTkFNRV9TVUZGSVggKyBpOwotICAgICAgSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChuYW1lKTsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBwcm9qZWN0LmRlbGV0ZSh0cnVlLCBudWxsKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKQotICAgICAgewotICAgICAgICAvL0Rvbid0IGZhaWwgdGhlIHRlc3QgY2FzZSBpZiBwcm9qZWN0IGRlbGV0aW9uIGZhaWxzLgotICAgICAgfQotICAgIH0KLSAgfSAgCi0gIAotICBwcml2YXRlIHZvaWQgY3JlYXRlUHJvamVjdHMoU3RyaW5nW10gdGVtcGxhdGVJZHMsIFN0cmluZ1tdIHNjZW5hcmlvcywgU3RyaW5nW10gc2VydmljZUNsaWVudFJ1bnRpbWVJZHMsIFN0cmluZ1tdIHNlcnZlclR5cGVzLCBTdHJpbmcgbmFtZVByZWZpeCApCi0gIHsKLSAgICBpbnQgbiA9IHRlbXBsYXRlSWRzLmxlbmd0aDsKLSAgICBmb3IgKGludCBpPTA7IGk8bjsgaSsrKQotICAgIHsKLSAgICAgIFN0cmluZyBuYW1lID0gbmFtZVByZWZpeCArIFBST0pFQ1RfTkFNRV9TVUZGSVggKyBpOwotICAgICAgUmVxdWlyZWRGYWNldFZlcnNpb25bXSByZnZzID0gbnVsbDsKLSAgICAgIGlmIChzY2VuYXJpb3NbaV0uZXF1YWxzKENMSUVOVF9TSURFKSkKLSAgICAgIHsKLQotICAgICAgICAgIHJmdnMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRDbGllbnRSdW50aW1lRGVzY3JpcHRvckJ5SWQoc2VydmljZUNsaWVudFJ1bnRpbWVJZHNbaV0pLmdldFJlcXVpcmVkRmFjZXRWZXJzaW9ucygpOwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaWYgKHNjZW5hcmlvc1tpXS5lcXVhbHMoU0VSVklDRV9TSURFKSkKLSAgICAgICAgewotICAgICAgICAgIHJmdnMgPSBXZWJTZXJ2aWNlUnVudGltZUV4dGVuc2lvblV0aWxzMi5nZXRTZXJ2aWNlUnVudGltZURlc2NyaXB0b3JCeUlkKHNlcnZpY2VDbGllbnRSdW50aW1lSWRzW2ldKS5nZXRSZXF1aXJlZEZhY2V0VmVyc2lvbnMoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICByZnZzID0gbmV3IFJlcXVpcmVkRmFjZXRWZXJzaW9uWzBdOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIENyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZCBjb21tYW5kID0gbmV3IENyZWF0ZUZhY2V0ZWRQcm9qZWN0Q29tbWFuZCgpOwotICAgICAgY29tbWFuZC5zZXRQcm9qZWN0TmFtZShuYW1lKTsKLSAgICAgIGNvbW1hbmQuc2V0VGVtcGxhdGVJZCh0ZW1wbGF0ZUlkc1tpXSk7ICAgICAgICAgICAgICAgICAgICAKLSAgICAgIGNvbW1hbmQuc2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKHJmdnMpOyAgICAgICAgICAgCi0gICAgICBjb21tYW5kLnNldFNlcnZlckZhY3RvcnlJZChzZXJ2ZXJUeXBlc1tpXSk7Ci0gICAgICBJU3RhdHVzIHN0YXR1cyA9IGNvbW1hbmQuZXhlY3V0ZSggbmV3IE51bGxQcm9ncmVzc01vbml0b3IoKSwgbnVsbCApOyAgICAKLSAgICAgIGlmIChzdGF0dXMuZ2V0U2V2ZXJpdHkoKSA9PSBTdGF0dXMuRVJST1IpCi0gICAgICB7Ci0gICAgICAgIGZhaWwoKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgSVByb2plY3QgcHJvamVjdCA9IFByb2plY3RVdGlsaXRpZXMuZ2V0UHJvamVjdChuYW1lKTsKLSAgICAgIEZhY2V0VXRpbHMuYWRkUmVxdWlyZWRGYWNldHNUb1Byb2plY3QocHJvamVjdCwgcmZ2cywgbmV3IE51bGxQcm9ncmVzc01vbml0b3IoKSk7Ci0gICAgfSAgICAKLSAgfSAgCi0gIAotICAvKioKLSAgICogVGVzdHMgcHJvamVjdCB0eXBlIGZpbHRlcmluZyBmb3IgdGhlIEF4aXMgV2ViIHNlcnZpY2UgcnVudGltZS4KLSAgICogVGVzdHMgY292ZXIgYWxsIFNlcnZpY2VSdW50aW1lcyBhbmQgQ2xpZW50UnVudGltZXMuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UHJvamVjdFR5cGVGaWx0ZXJpbmcoKQotICB7ICAKLSAgICBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZVtdIGV4cGVjdGVkVGVtcGxhdGVzRm9yQXhpc1NlcnZpY2UgPSBuZXcgSUZhY2V0ZWRQcm9qZWN0VGVtcGxhdGVbXSB7VEVNUExBVEVfV0VCfTsKLSAgICBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZVtdIGV4cGVjdGVkVGVtcGxhdGVzRm9yQXhpc0NsaWVudFdlYiA9IG5ldyBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZVtdIHtURU1QTEFURV9XRUJ9OwotICAgIElGYWNldGVkUHJvamVjdFRlbXBsYXRlW10gZXhwZWN0ZWRUZW1wbGF0ZXNGb3JBeGlzQ2xpZW50SmF2YSA9IG5ldyBJRmFjZXRlZFByb2plY3RUZW1wbGF0ZVtdIHtURU1QTEFURV9VVElMSVRZfTsKLSAgICAKLSAgICBTZXQgdGVtcGxhdGVzRm9yQXhpc1NlcnZpY2UgPSBGYWNldE1hdGNoQ2FjaGUuZ2V0SW5zdGFuY2UoKS5nZXRUZW1wbGF0ZXNGb3JTZXJ2aWNlUnVudGltZShBWElTX1NFUlZJQ0VfUlVOVElNRSk7Ci0gICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkVGVtcGxhdGVzRm9yQXhpc1NlcnZpY2UubGVuZ3RoLHRlbXBsYXRlc0ZvckF4aXNTZXJ2aWNlLnNpemUoKSk7Ci0gICAgZm9yIChpbnQgaT0wOyBpPGV4cGVjdGVkVGVtcGxhdGVzRm9yQXhpc1NlcnZpY2UubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgYXNzZXJ0VHJ1ZSh0ZW1wbGF0ZXNGb3JBeGlzU2VydmljZS5jb250YWlucyhleHBlY3RlZFRlbXBsYXRlc0ZvckF4aXNTZXJ2aWNlW2ldKSk7Ci0gICAgfQotICAgIFNldCB0ZW1wbGF0ZXNGb3JBeGlzQ2xpZW50V2ViID0gRmFjZXRNYXRjaENhY2hlLmdldEluc3RhbmNlKCkuZ2V0VGVtcGxhdGVzRm9yQ2xpZW50UnVudGltZShBWElTX0NMSUVOVF9SVU5USU1FX1dFQik7Ci0gICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkVGVtcGxhdGVzRm9yQXhpc0NsaWVudFdlYi5sZW5ndGgsIHRlbXBsYXRlc0ZvckF4aXNDbGllbnRXZWIuc2l6ZSgpKTsKLSAgICBmb3IgKGludCBpPTA7IGk8ZXhwZWN0ZWRUZW1wbGF0ZXNGb3JBeGlzQ2xpZW50V2ViLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGFzc2VydFRydWUodGVtcGxhdGVzRm9yQXhpc0NsaWVudFdlYi5jb250YWlucyhleHBlY3RlZFRlbXBsYXRlc0ZvckF4aXNDbGllbnRXZWJbaV0pKTsKLSAgICB9ICAgIAotICAgIFNldCB0ZW1wbGF0ZXNGb3JBeGlzQ2xpZW50SmF2YSA9IEZhY2V0TWF0Y2hDYWNoZS5nZXRJbnN0YW5jZSgpLmdldFRlbXBsYXRlc0ZvckNsaWVudFJ1bnRpbWUoQVhJU19DTElFTlRfUlVOVElNRV9KQVZBKTsKLSAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRUZW1wbGF0ZXNGb3JBeGlzQ2xpZW50SmF2YS5sZW5ndGgsIHRlbXBsYXRlc0ZvckF4aXNDbGllbnRKYXZhLnNpemUoKSk7Ci0gICAgZm9yIChpbnQgaT0wOyBpPGV4cGVjdGVkVGVtcGxhdGVzRm9yQXhpc0NsaWVudEphdmEubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgYXNzZXJ0VHJ1ZSh0ZW1wbGF0ZXNGb3JBeGlzQ2xpZW50SmF2YS5jb250YWlucyhleHBlY3RlZFRlbXBsYXRlc0ZvckF4aXNDbGllbnRKYXZhW2ldKSk7Ci0gICAgfQotICAgIAotICAgIAotICB9ICAKLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS9qc3Qvd3MvdGVzdHMvdXRpbC9EeW5hbWljUG9wdXBKVW5pdFdpemFyZC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91dGlsL0R5bmFtaWNQb3B1cEpVbml0V2l6YXJkLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNzJmNzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91dGlsL0R5bmFtaWNQb3B1cEpVbml0V2l6YXJkLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzAzMTQgICAxNzY4ODYgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICogMjAwNzA1MDkgICAxODA1Njcgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnV0aWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5vcGVyYXRpb24uSVJ1bm5hYmxlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb250ZXh0LlBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhRmxvd01hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvcmUuZGF0YS5EYXRhTWFwcGluZ1JlZ2lzdHJ5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5mcmFnbWVudC5Db21tYW5kRnJhZ21lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmVjbGlwc2UuRWNsaXBzZUVudmlyb25tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5lY2xpcHNlLklFY2xpcHNlU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5Db21tYW5kV2lkZ2V0QmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5TaW1wbGVDb21tYW5kRW5naW5lTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYudWkud2lkZ2V0cy5wb3B1cC5EeW5hbWljUG9wdXBXaXphcmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5lbnZpcm9ubWVudC5JTG9nOwotCi1wdWJsaWMgY2xhc3MgRHluYW1pY1BvcHVwSlVuaXRXaXphcmQgZXh0ZW5kcyBEeW5hbWljUG9wdXBXaXphcmQgewotCXByaXZhdGUgSUVjbGlwc2VTdGF0dXNIYW5kbGVyIGhhbmRsZXJfOwotICAgIHByaXZhdGUgSUxvZyBsb2dfOwotCXB1YmxpYyBEeW5hbWljUG9wdXBKVW5pdFdpemFyZChJRWNsaXBzZVN0YXR1c0hhbmRsZXIgaGFuZGxlcikKLQl7Ci0JCWhhbmRsZXJfID0gaGFuZGxlcjsKLQl9Ci0gIAotICAgIHB1YmxpYyBEeW5hbWljUG9wdXBKVW5pdFdpemFyZChJRWNsaXBzZVN0YXR1c0hhbmRsZXIgaGFuZGxlciwgSUxvZyBsb2cpCi0gICAgewotICAgICAgICBoYW5kbGVyXyA9IGhhbmRsZXI7Ci0gICAgICAgIGxvZ18gPSBsb2c7Ci0gICAgfQotICAgIAotCXB1YmxpYyB2b2lkIHJ1bkhlYWRMZXNzKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbixJUnVubmFibGVDb250ZXh0IGNvbnRleHQpIHsKLQkJCi0JCVBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQgIHJlc291cmNlQ29udGV4dCA9IFBlcnNpc3RlbnRSZXNvdXJjZUNvbnRleHQuZ2V0SW5zdGFuY2UoKTsKLQkJRWNsaXBzZUVudmlyb25tZW50ICAgICAgICAgZW52aXJvbm1lbnQgICAgID0gbmV3IEVjbGlwc2VFbnZpcm9ubWVudCggbnVsbCwgcmVzb3VyY2VDb250ZXh0LCBoYW5kbGVyXyApOwotCQlpZiAobG9nXyE9bnVsbCkKLSAgICAgICAgICBlbnZpcm9ubWVudC5zZXRMb2cobG9nXyk7Ci0gICAgCi0JCURhdGFNYXBwaW5nUmVnaXN0cnlJbXBsICAgIGRhdGFSZWdpc3RyeV8gICA9IG5ldyBEYXRhTWFwcGluZ1JlZ2lzdHJ5SW1wbCgpOwkgICAgCi0JCURhdGFGbG93TWFuYWdlciAgICAgICAgICAgIGRhdGFNYW5hZ2VyICAgICA9IG5ldyBEYXRhRmxvd01hbmFnZXIoIGRhdGFSZWdpc3RyeV8sIGVudmlyb25tZW50ICk7Ci0JCVNpbXBsZUNvbW1hbmRFbmdpbmVNYW5hZ2VyIG1hbmFnZXIgICAgICAgICA9IG5ldyBTaW1wbGVDb21tYW5kRW5naW5lTWFuYWdlcihlbnZpcm9ubWVudCwgZGF0YU1hbmFnZXIpOwotCQkgIAotCSAgICB0cnkKLQkgICAgewotCSAgICAgIGNvbW1hbmRXaWRnZXRCaW5kaW5nXyA9IChDb21tYW5kV2lkZ2V0QmluZGluZyl3aXphcmRFbGVtZW50Xy5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCAiY2xhc3MiICk7Ci0JICAgIH0KLQkgICAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkKLQkgICAgewotCSAgICAgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLQkgICAgfQotCSAgICAKLQkJY29tbWFuZFdpZGdldEJpbmRpbmdfLnJlZ2lzdGVyRGF0YU1hcHBpbmdzKCBkYXRhUmVnaXN0cnlfICk7Ci0JCQotCQlDb21tYW5kRnJhZ21lbnQgICAgICAgICAgICByb290RnJhZ21lbnQgICAgPSBnZXRSb290RnJhZ21lbnQoIHNlbGVjdGlvbiwgbnVsbCApOwotCQltYW5hZ2VyLnNldFJvb3RGcmFnbWVudCggcm9vdEZyYWdtZW50ICk7Ci0JCW1hbmFnZXIucnVuRm9yd2FyZFRvTmV4dFN0b3AoIGNvbnRleHQgKTsKLQl9Ci0JCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3V0aWwvSlVuaXRVdGlscy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91dGlsL0pVbml0VXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJmNDA0Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3V0aWwvSlVuaXRVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTA0ICAgMTE0ODM1IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNzAzMTQgIDE3Njg4NiBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKiAyMDA3MDUwMiAgMTg1MjA4IHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNzA1MDkgIDE4MDU2NyBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUgCi0gKiAyMDA3MDcwNSAgMTk1NTUzIHNlbmdwbEBjYS5pYm0uY29tIC0gU2VuZyBQaHVuZy1MdQotICogMjAwNzExMTYgIDIwODEyNCBzZW5ncGxAY2EuaWJtLmNvbSAtIFNlbmcgUGh1bmctTHUKLSAqIDIwMDgwMzEzICAxMjY3NzQgc2VuZ3BsQGNhLmlibS5jb20gLSBTZW5nIFBodW5nLUx1Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzLnV0aWw7Ci0KLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSW5jcmVtZW50YWxQcm9qZWN0QnVpbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlLklMYXVuY2hNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuUHJvZ3Jlc3NNb25pdG9yRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLm9wZXJhdGlvbi5JUnVubmFibGVXaXRoUHJvZ3Jlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29tbW9uLlNlcnZlclV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi5jb21tYW5kLmNvbW1vbi5DcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnN1bXB0aW9uLmNvbW1vbi5SZXF1aXJlZEZhY2V0VmVyc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkucGx1Z2luLldlYlNlcnZpY2VDb25zdW1wdGlvblVJUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS5wcmVmZXJlbmNlcy5QZXJzaXN0ZW50U2VydmVyUnVudGltZUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbnRleHQuUGVyc2lzdGVudFNjZW5hcmlvQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29udGV4dC5TY2VuYXJpb0NvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLnBsdWdpbi5XZWJTZXJ2aWNlUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy5wbHVnaW4uVGVzdHNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29tbW9uLkZpbGVSZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb21tb24uV2FpdEZvckF1dG9CdWlsZENvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LmNvbnRleHQuUGVyc2lzdGVudEFjdGlvbkRpYWxvZ3NDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmludGVybmFsLmVudi5jb3JlLmNvbW1vbi5TdGF0dXNVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuY29yZS5jb250ZXh0LlJlc291cmNlQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYuZWNsaXBzZS5BY2N1bXVsYXRlU3RhdHVzSGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5pbnRlcm5hbC5lbnYucHJlZmVyZW5jZXMuQWN0aW9uRGlhbG9nUHJlZmVyZW5jZVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLmVjbGlwc2UuRW52aXJvbm1lbnRVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmVudmlyb25tZW50LklFbnZpcm9ubWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSU1vZHVsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVJ1bnRpbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklSdW50aW1lVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVJ1bnRpbWVXb3JraW5nQ29weTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlclR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXJXb3JraW5nQ29weTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbi5pbnRlcm5hbC5vcGVyYXRpb25zLlZhbGlkYXRvck1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUNvbnRleHQ7Ci0KLQotcHVibGljIGNsYXNzIEpVbml0VXRpbHMgewotCS8vIEJlZ2luIFNlcnZlciBVdGlsaXRpZXMKLQlwdWJsaWMgc3RhdGljIElSdW50aW1lIGNyZWF0ZVNlcnZlclJ1bnRpbWUoU3RyaW5nIHJ1bnRpbWVUeXBlSWQsU3RyaW5nIHNlcnZlckluc3RhbGxQYXRoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlJUnVudGltZVR5cGUgcnQgPSBTZXJ2ZXJDb3JlLmZpbmRSdW50aW1lVHlwZShydW50aW1lVHlwZUlkKTsKLQkJU3RyaW5nIHRjdmVyc2lvbiA9IHJ1bnRpbWVUeXBlSWQuc3Vic3RyaW5nKHJ1bnRpbWVUeXBlSWQubGFzdEluZGV4T2YoIi4iKSsxKTsKLQkJSVJ1bnRpbWVXb3JraW5nQ29weSB3YyA9IHJ0LmNyZWF0ZVJ1bnRpbWUodGN2ZXJzaW9uKyJSdW50aW1lIiwgbnVsbCk7Ci0JCXdjLnNldExvY2F0aW9uKG5ldyBQYXRoKHNlcnZlckluc3RhbGxQYXRoKSk7Ci0JCQotCQlyZXR1cm4gd2Muc2F2ZSh0cnVlLCBudWxsKTsKLQl9Ci0KLQlwdWJsaWMgc3RhdGljIElTZXJ2ZXIgY3JlYXRlU2VydmVyKFN0cmluZyBuYW1lLFN0cmluZyBzZXJ2ZXJUeXBlSWQsSVJ1bnRpbWUgcnVudGltZSxJRW52aXJvbm1lbnQgZW52LCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCSAgSVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IFNlcnZlckNvcmUuZmluZFNlcnZlclR5cGUoc2VydmVyVHlwZUlkKTsKLSAgICAgIElTZXJ2ZXJbXSBzZXJ2ZXJzID0gU2VydmVyQ29yZS5nZXRTZXJ2ZXJzKCk7IAotICAgICAgZm9yIChpbnQgaT0wO2k8c2VydmVycy5sZW5ndGg7aSsrKXsKLSAgICAgICAgaWYoc2VydmVyc1tpXS5nZXRTZXJ2ZXJUeXBlKCkuZ2V0SWQoKS5lcXVhbHMoc2VydmVyVHlwZS5nZXRJZCgpKSl7Ci0gICAgICAgICAgcmV0dXJuIHNlcnZlcnNbaV07ICAKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBJU2VydmVyV29ya2luZ0NvcHkgc2VydmVyV2MgPSBzZXJ2ZXJUeXBlLmNyZWF0ZVNlcnZlcihzZXJ2ZXJUeXBlSWQsbnVsbCwgbW9uaXRvciApOwotCSAgc2VydmVyV2Muc2V0TmFtZShuYW1lKTsKLQkgIHNlcnZlcldjLnNldFJ1bnRpbWUocnVudGltZSk7Ci0gICAgICBJU2VydmVyIHNlcnZlciA9IHNlcnZlcldjLnNhdmVBbGwodHJ1ZSwgbW9uaXRvciApOwotICAgICAgcmV0dXJuIHNlcnZlcjsKLQl9CQotCQotCS8qKgotCSAqIGNyZWF0ZVNlcnZlciBhbmQgaW5zdGFsbCBKUkUgZm9yIFNlcnZlcnMgcmVxdWlyaW5nIGEgc3BlY2lmaWMgSlJFCi0JICogQHBhcmFtIGphdmFSdW50aW1lUGF0aCBKUkUgaW5zdGFsbCBsb2NhdGlvbjsgaS5lLiBFOlxcSmF2YTE0MQotCSAqIEBwYXJhbSBqcmVJRCBKUkUgaWQ7IGkuZS4gamF2YTE0MQotCSAqIEBwYXJhbSBuYW1lIHNlcnZlciBuYW1lCi0JICogQHBhcmFtIHNlcnZlclR5cGVJZCBzZXJ2ZXIgdHlwZSBpZAotCSAqIEBwYXJhbSBydW50aW1lIElSdW50aW1lCi0JICogQHBhcmFtIGVudiBJRW52aXJvbm1lbnQKLQkgKiBAcmV0dXJuICBzZXJ2ZXIgSVNlcnZlcgotCSAqIEB0aHJvd3MgRXhjZXB0aW9uCi0JICogCi0JICogQGRlcHJlY2F0ZWQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIElTZXJ2ZXIgY3JlYXRlU2VydmVyKFN0cmluZyBqYXZhUnVudGltZVBhdGgsIFN0cmluZyBqcmVJRCwgU3RyaW5nIG5hbWUsU3RyaW5nIHNlcnZlclR5cGVJZCxJUnVudGltZSBydW50aW1lLElFbnZpcm9ubWVudCBlbnYsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCUlTZXJ2ZXJUeXBlIHNlcnZlclR5cGUgPSBTZXJ2ZXJDb3JlLmZpbmRTZXJ2ZXJUeXBlKHNlcnZlclR5cGVJZCk7Ci0gICAgSVNlcnZlcltdIHNlcnZlcnMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlcnMoKTsgCi0gICAgZm9yIChpbnQgaT0wO2k8c2VydmVycy5sZW5ndGg7aSsrKXsKLSAgICAgIGlmKHNlcnZlcnNbaV0uZ2V0U2VydmVyVHlwZSgpLmdldElkKCkuZXF1YWxzKHNlcnZlclR5cGUuZ2V0SWQoKSkpewotICAgICAgICByZXR1cm4gc2VydmVyc1tpXTsgIAotICAgICAgfQotICAgIH0KLQotCQlJU2VydmVyV29ya2luZ0NvcHkgc2VydmVyV2MgPSBzZXJ2ZXJUeXBlLmNyZWF0ZVNlcnZlcihzZXJ2ZXJUeXBlSWQsbnVsbCwgbW9uaXRvciApOwotCQlzZXJ2ZXJXYy5zZXROYW1lKG5hbWUpOwotCQlzZXJ2ZXJXYy5zZXRSdW50aW1lKHJ1bnRpbWUpOwotCQkKLQkJSVNlcnZlciBzZXJ2ZXIgPSBzZXJ2ZXJXYy5zYXZlQWxsKHRydWUsIG1vbml0b3IgKTsKLQkJCi0JCXJldHVybiBzZXJ2ZXI7Ci0JfQotCQotCXB1YmxpYyBzdGF0aWMgdm9pZCBzdGFydFNlcnZlcihJU2VydmVyIHNlcnZlcixJRW52aXJvbm1lbnQgZW52KSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlmaW5hbCBJU2VydmVyIGN1cnJlbnRTZXJ2ZXIgPSBzZXJ2ZXI7Ci0JCUlSdW5uYWJsZVdpdGhQcm9ncmVzcyBydW5uYWJsZSA9IG5ldyBJUnVubmFibGVXaXRoUHJvZ3Jlc3MoKQotCQl7Ci0JCQlwdWJsaWMgdm9pZCBydW4oSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKSB0aHJvd3MgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24KLQkJCXsKLQkJCQl0cnkKLQkJCQl7Ci0JCQkJICBjdXJyZW50U2VydmVyLnN0YXJ0KElMYXVuY2hNYW5hZ2VyLlJVTl9NT0RFLCBtb25pdG9yICk7Ci0JCQkJfQotCQkJCWNhdGNoIChDb3JlRXhjZXB0aW9uIGUpCi0JCQkJewotCQkJCQlJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB3cmFwcGVyID0gbmV3IEludGVycnVwdGVkRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKLQkJCQkJd3JhcHBlci5zZXRTdGFja1RyYWNlKGUuZ2V0U3RhY2tUcmFjZSgpKTsKLQkJCQkJdGhyb3cgd3JhcHBlcjsKLQkJCQl9Ci0JCQl9Ci0JCX07Ci0JCVBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0UHJvZ3Jlc3NTZXJ2aWNlKCkucnVuKHRydWUsZmFsc2UscnVubmFibGUpOwotCX0KLQkKLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVtb3ZlRUFSRnJvbVNlcnZlcihJU2VydmVyIHNlcnZlcixJUHJvamVjdCBlYXJQcm9qZWN0LElFbnZpcm9ubWVudCBlbnYsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCWludCBudW1iZXJPZk1vZHVsZXMgPSBzZXJ2ZXIuZ2V0TW9kdWxlcygpLmxlbmd0aDsKLQkJaWYgKHNlcnZlciAhPSBudWxsKQotCQl7Ci0gICAgICBmaW5hbCBJTW9kdWxlIGVhclByb2plY3RNb2R1bGUgPSBTZXJ2ZXJVdGlsLmdldE1vZHVsZShlYXJQcm9qZWN0KTsKLSAgICAgIGZpbmFsIElNb2R1bGVbXSBtb2R1bGVzID0ge2VhclByb2plY3RNb2R1bGV9OwotCQkJbmV3IFNlcnZlclV0aWxzKCkubW9kaWZ5TW9kdWxlcyhlbnYsIHNlcnZlcixlYXJQcm9qZWN0TW9kdWxlLGZhbHNlLCBtb25pdG9yICk7Ci0JCSAgCWZpbmFsIElTZXJ2ZXIgY3VycmVudFNlcnZlciA9IHNlcnZlcjsKLQkJICAJSVJ1bm5hYmxlV2l0aFByb2dyZXNzIHJ1bm5hYmxlID0gbmV3IElSdW5uYWJsZVdpdGhQcm9ncmVzcygpCi0JCQl7Ci0JCSAgCQlwdWJsaWMgdm9pZCBydW4oSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKSB0aHJvd3MgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24KLQkJCQl7Ci0JCSAgCQkgIAlmb3IgKGludCBpPTA7aTwxMDAwO2krKykKLQkJICAJCSAgCXsKLQkJICAJCSAgCQlpbnQgbW9kdWxlU3RhdGUgPSBjdXJyZW50U2VydmVyLmdldE1vZHVsZVN0YXRlKG1vZHVsZXMpOwotCQkgIAkJICAJCWlmIChtb2R1bGVTdGF0ZSA9PSBJU2VydmVyLlNUQVRFX1NUQVJURUQgfHwgbW9kdWxlU3RhdGUgPT0gSVNlcnZlci5TVEFURV9TVE9QUElORykKLQkJICAJCSAgCQl7Ci0JCSAgCQkgIAkJICB0cnkKLQkJICAJCQkJICB7Ci0JCSAgCQkgIAkJICAgIFRocmVhZC5zbGVlcCgzMDApOwotCQkgIAkJCQkgIH0KLQkJICAJCSAgCQkgIGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKQotCQkgIAkJCQkgIHsKLQkJICAJCSAgCQkgICAgICBlLnByaW50U3RhY2tUcmFjZShTeXN0ZW0uZXJyKTsKLQkJICAJCQkJICB9Ci0JCSAgCQkgIAkJfQotCQkgIAkJICAJCWVsc2UKLQkJICAJCSAgCQkJYnJlYWs7Ci0JCSAgCQkgIAl9ICAJCQkgIAkJCQotCQkJCX0gIAkJCi0JCQl9OwotCQkJUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRQcm9ncmVzc1NlcnZpY2UoKS5ydW4odHJ1ZSxmYWxzZSxydW5uYWJsZSk7Ci0JCQlyZXR1cm4gKHNlcnZlci5nZXRNb2R1bGVzKCkubGVuZ3RoID09IChudW1iZXJPZk1vZHVsZXMtMSkpOwotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0JCi0JcHVibGljIHN0YXRpYyBib29sZWFuIHJlbW92ZU1vZHVsZUZyb21TZXJ2ZXIoSVNlcnZlciBzZXJ2ZXIsIElQcm9qZWN0IHdlYlByb2plY3QsIElFbnZpcm9ubWVudCBlbnYsIElQcm9ncmVzc01vbml0b3IgbW9uaXRvciApIHRocm93cyBFeGNlcHRpb24gewotCSAgCi0JICBpbnQgbnVtYmVyT2ZNb2R1bGVzID0gc2VydmVyLmdldE1vZHVsZXMoKS5sZW5ndGg7Ci0JCWlmIChzZXJ2ZXIgIT0gbnVsbCkKLQkJewotICAgICAgZmluYWwgSU1vZHVsZSB3ZWJQcm9qZWN0TW9kdWxlID0gU2VydmVyVXRpbC5nZXRNb2R1bGUod2ViUHJvamVjdCk7Ci0gICAgICBmaW5hbCBJTW9kdWxlW10gbW9kdWxlcyA9IHt3ZWJQcm9qZWN0TW9kdWxlfTsKLQotCQkJbmV3IFNlcnZlclV0aWxzKCkubW9kaWZ5TW9kdWxlcyhlbnYsIHNlcnZlcix3ZWJQcm9qZWN0TW9kdWxlLGZhbHNlLCBtb25pdG9yICk7Ci0JCSAgCWZpbmFsIElTZXJ2ZXIgY3VycmVudFNlcnZlciA9IHNlcnZlcjsKLQkJICAJSVJ1bm5hYmxlV2l0aFByb2dyZXNzIHJ1bm5hYmxlID0gbmV3IElSdW5uYWJsZVdpdGhQcm9ncmVzcygpCi0JCQl7Ci0JCSAgCQlwdWJsaWMgdm9pZCBydW4oSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKSB0aHJvd3MgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24KLQkJCQl7Ci0JCSAgCQkgIAlmb3IgKGludCBpPTA7aTwxMDAwO2krKykKLQkJICAJCSAgCXsKLQkJICAJCSAgCQlpbnQgbW9kdWxlU3RhdGUgPSBjdXJyZW50U2VydmVyLmdldE1vZHVsZVN0YXRlKG1vZHVsZXMpOwotCQkgIAkJICAJCWlmIChtb2R1bGVTdGF0ZSA9PSBJU2VydmVyLlNUQVRFX1NUQVJURUQgfHwgbW9kdWxlU3RhdGUgPT0gSVNlcnZlci5TVEFURV9TVE9QUElORykKLQkJICAJCSAgCQl7Ci0JCSAgCQkgIAkJICB0cnkKLQkJICAJCQkJICB7Ci0JCSAgCQkgIAkJICAgIFRocmVhZC5zbGVlcCgzMDApOwotCQkgIAkJCQkgIH0KLQkJICAJCSAgCQkgIGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKQotCQkgIAkJCQkgIHsKLQkJICAJCSAgCQkgICAgICBlLnByaW50U3RhY2tUcmFjZShTeXN0ZW0uZXJyKTsKLQkJICAJCQkJICB9Ci0JCSAgCQkgIAkJfQotCQkgIAkJICAJCWVsc2UKLQkJICAJCSAgCQkJYnJlYWs7Ci0JCSAgCQkgIAl9ICAJCQkgIAkJCQotCQkJCX0gIAkJCi0JCQl9OwotCQkJUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRQcm9ncmVzc1NlcnZpY2UoKS5ydW4odHJ1ZSxmYWxzZSxydW5uYWJsZSk7Ci0JCQkvL1RocmVhZC5zbGVlcCg2MDAwKTsKLQkJCXJldHVybiAoc2VydmVyLmdldE1vZHVsZXMoKS5sZW5ndGggPT0gKG51bWJlck9mTW9kdWxlcy0xKSk7Ci0JCX0KLQkJcmV0dXJuIGZhbHNlOwotCX0KLQkKLQkvLyBCZWdpbjogR2VuZXJhbCBFY2xpcHNlIFV0aWxpdGllcwotCQotCXB1YmxpYyBzdGF0aWMgdm9pZCBzeW5jQnVpbGRQcm9qZWN0KElQcm9qZWN0IHByb2plY3QsSUVudmlyb25tZW50IGVudiwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJcHJvamVjdC5idWlsZChJbmNyZW1lbnRhbFByb2plY3RCdWlsZGVyLkZVTExfQlVJTEQsIG1vbml0b3IgKTsKLQkJV2FpdEZvckF1dG9CdWlsZENvbW1hbmQgY21kID0gbmV3IFdhaXRGb3JBdXRvQnVpbGRDb21tYW5kKCk7Ci0gICAgY21kLnNldEVudmlyb25tZW50KCBlbnYgKTsKLQkJY21kLmV4ZWN1dGUoIG1vbml0b3IsIG51bGwgKTsKLQl9Ci0JCi0JcHJpdmF0ZSBzdGF0aWMgdm9pZCBjb3B5VGVzdEZpbGVzKFN0cmluZyBwYXRoU3RyaW5nLGludCByb290U2VnbWVudExlbmd0aCxJRm9sZGVyIGRlc3RGb2xkZXIsSUVudmlyb25tZW50IGVudiwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICkgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJRW51bWVyYXRpb24gZSA9IFRlc3RzUGx1Z2luLmdldERlZmF1bHQoKS5nZXRCdW5kbGUoKS5nZXRFbnRyeVBhdGhzKHBhdGhTdHJpbmcpOwotCQl3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkKLQkJewotCQkJU3RyaW5nIGZpbGVQYXRoID0gKFN0cmluZyllLm5leHRFbGVtZW50KCk7Ci0JCQlpZiAoZmlsZVBhdGguZW5kc1dpdGgoIi8iKSkKLQkJCQljb3B5VGVzdEZpbGVzKGZpbGVQYXRoLHJvb3RTZWdtZW50TGVuZ3RoLGRlc3RGb2xkZXIsZW52LCBtb25pdG9yICk7Ci0JCQllbHNlCi0JCQl7Ci0JCQkJSVBhdGggZmlsZUlQYXRoID0gbmV3IFBhdGgoZmlsZVBhdGgpOwotCQkJCUZpbGVSZXNvdXJjZVV0aWxzLmNvcHlGaWxlKEVudmlyb25tZW50VXRpbHMuZ2V0UmVzb3VyY2VDb250ZXh0KGVudiksCi0JCQkJCQkgICAgICAgICAgICAgICAgICAgVGVzdHNQbHVnaW4uZ2V0RGVmYXVsdCgpLAotCQkJCQkJCQkJCSAgIGZpbGVJUGF0aC5yZW1vdmVMYXN0U2VnbWVudHMoZmlsZUlQYXRoLnNlZ21lbnRDb3VudCgpLXJvb3RTZWdtZW50TGVuZ3RoKSwgLy8gL2RhdGEvPHN1YmRpcj4KLQkJCQkJCQkJCQkgICAobmV3IFBhdGgoZmlsZVBhdGgpKS5yZW1vdmVGaXJzdFNlZ21lbnRzKHJvb3RTZWdtZW50TGVuZ3RoKSwgLy8gZmlsZXMgYWZ0ZXIgL2RhdGEvPHN1YmRpcj4KLQkJCQkJCQkJCQkgICBkZXN0Rm9sZGVyLmdldEZ1bGxQYXRoKCksCi0JCQkJCQkJCQkJICAgbW9uaXRvciwKLQkJCQkJCQkJCQkgICBlbnYuZ2V0U3RhdHVzSGFuZGxlcigpKTsKLQkJCX0KLQkJfQotCX0KLQkKLQlwdWJsaWMgc3RhdGljIHZvaWQgY29weVRlc3REYXRhKFN0cmluZyBkYXRhU3ViZGlyZWN0b3J5LElGb2xkZXIgZGVzdEZvbGRlcixJRW52aXJvbm1lbnQgZW52LCBJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IgKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlTdHJpbmcgcGF0aFN0cmluZyA9ICIvZGF0YS8iK2RhdGFTdWJkaXJlY3Rvcnk7Ci0JCWNvcHlUZXN0RmlsZXMocGF0aFN0cmluZyxuZXcgUGF0aChwYXRoU3RyaW5nKS5zZWdtZW50Q291bnQoKSxkZXN0Rm9sZGVyLGVudiwgbW9uaXRvcik7Ci0JCQotCX0KLQkKLQkvLyBCZWdpbjogV2ViIFNlcnZpY2VzIFV0aWxpdGllcwotCXB1YmxpYyBzdGF0aWMgdm9pZCBoaWRlQWN0aW9uRGlhbG9ncygpCi0JewotCQlQZXJzaXN0ZW50QWN0aW9uRGlhbG9nc0NvbnRleHQgYWN0aW9uRGlhbG9nc0N0eCA9IFBlcnNpc3RlbnRBY3Rpb25EaWFsb2dzQ29udGV4dC5nZXRJbnN0YW5jZSgpOwotCQlBY3Rpb25EaWFsb2dQcmVmZXJlbmNlVHlwZVtdIGFjdGlvbkRpYWxvZ1ByZWZzICA9IGFjdGlvbkRpYWxvZ3NDdHguZ2V0RGlhbG9ncygpOwotCQlmb3IgKGludCBpPTA7aTxhY3Rpb25EaWFsb2dQcmVmcy5sZW5ndGg7aSsrKQotCQkJYWN0aW9uRGlhbG9nc0N0eC5zZXRBY3Rpb25EaWFsb2dFbmFibGVkKGFjdGlvbkRpYWxvZ1ByZWZzW2ldLmdldElkKCksdHJ1ZSk7CQkKLQl9Ci0JCi0KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gZW5hYmxlUHJveHlHZW5lcmF0aW9uKGJvb2xlYW4gZW5hYmxlKQotCXsKLQkJU2NlbmFyaW9Db250ZXh0IGN0eCA9IFdlYlNlcnZpY2VQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRTY2VuYXJpb0NvbnRleHQoKTsKLQkJYm9vbGVhbiBwcmV2aW91c1NldHRpbmcgPSBjdHguZ2V0R2VuZXJhdGVQcm94eSgpOwotCQljdHguc2V0R2VuZXJhdGVQcm94eShlbmFibGUpOwotCQlyZXR1cm4gcHJldmlvdXNTZXR0aW5nOwotCX0KLQkKLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gZW5hYmxlT3ZlcndyaXRlKGJvb2xlYW4gZW5hYmxlKQotCXsKLQkJUmVzb3VyY2VDb250ZXh0IGN0eCA9IFdlYlNlcnZpY2VQbHVnaW4uZ2V0SW5zdGFuY2UoKS5nZXRSZXNvdXJjZUNvbnRleHQoKTsKLQkJYm9vbGVhbiBwcmV2aW91c1NldHRpbmcgPSBjdHguaXNPdmVyd3JpdGVGaWxlc0VuYWJsZWQoKTsKLQkJY3R4LnNldE92ZXJ3cml0ZUZpbGVzRW5hYmxlZChlbmFibGUpOwotCQlyZXR1cm4gcHJldmlvdXNTZXR0aW5nOwotCX0KLQkKLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0UnVudGltZVByZWZlcmVuY2UoU3RyaW5nIHJ0KXsKLQkJUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0IGNvbnRleHQgPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNlcnZlclJ1bnRpbWVDb250ZXh0KCk7Ci0JCWNvbnRleHQuc2V0UnVudGltZUlkKHJ0KTsKLQl9Ci0JCi0JcHVibGljIHN0YXRpYyB2b2lkIGRpc2FibGVXU0lEaWFsb2coSVByb2plY3QgcHJvamVjdCl7Ci0JICAKLQkgIFBlcnNpc3RlbnRXU0lDb250ZXh0IGN0eCA9IFdTUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0V1NJQVBDb250ZXh0KCk7Ci0JICBjdHgudXBkYXRlUHJvamVjdFdTSUNvbXBsaWFuY2VzKHByb2plY3QsIFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLQkgIAotCSAgUGVyc2lzdGVudFdTSUNvbnRleHQgY3R4MiA9IFdTUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0V1NJU1NCUENvbnRleHQoKTsKLQkgIGN0eDIudXBkYXRlUHJvamVjdFdTSUNvbXBsaWFuY2VzKHByb2plY3QsIFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLQkgIAotCX0KLQkKLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0V1NSdW50aW1lU2VydmVyKFN0cmluZyB3c1J1bnRpbWVJZCxTdHJpbmcgc2VydmVyVHlwZUlkKQotCXsKLQkJUGVyc2lzdGVudFNlcnZlclJ1bnRpbWVDb250ZXh0IHNlcnZlclJ1bnRpbWVDdHggPSBXZWJTZXJ2aWNlQ29uc3VtcHRpb25VSVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNlcnZlclJ1bnRpbWVDb250ZXh0KCk7Ci0JCXNlcnZlclJ1bnRpbWVDdHguc2V0UnVudGltZUlkKHdzUnVudGltZUlkKTsKLQkJc2VydmVyUnVudGltZUN0eC5zZXRTZXJ2ZXJGYWN0b3J5SWQoc2VydmVyVHlwZUlkKTsJCQotCX0KLQkKLQotCXByaXZhdGUgc3RhdGljIElTdGF0dXNbXSBsYXVuY2hXaXphcmQoU3RyaW5nIHBsdWdpbk5TLFN0cmluZyB3aXphcmRJZCxTdHJpbmcgb2JqZWN0Q2xhc3NJZCxJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlBY2N1bXVsYXRlU3RhdHVzSGFuZGxlciBzdGF0dXNIYW5kbGVyID0gbmV3IEFjY3VtdWxhdGVTdGF0dXNIYW5kbGVyKCk7Ci0KLSAgICAgICAgRHluYW1pY1BvcHVwSlVuaXRXaXphcmQgd2l6YXJkID0gbmV3IER5bmFtaWNQb3B1cEpVbml0V2l6YXJkKHN0YXR1c0hhbmRsZXIpOwotICAgICAgICB3aXphcmQuc2V0SW5pdGlhbERhdGEod2l6YXJkSWQpOwotICAgICAgICBQcm9ncmVzc01vbml0b3JEaWFsb2cgbW9uaXRvciA9IG5ldyBQcm9ncmVzc01vbml0b3JEaWFsb2coUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKS5nZXRTaGVsbCgpKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgCXdpemFyZC5ydW5IZWFkTGVzcyhpbml0aWFsU2VsZWN0aW9uLCBtb25pdG9yKTsKLSAgICAgICAgfSAKLSAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLSAgICAgICAgCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICAgIAlyZXR1cm4gbmV3IElTdGF0dXNbXXtTdGF0dXNVdGlscy5lcnJvclN0YXR1cyhlKX07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0YXR1c0hhbmRsZXIuZ2V0QWxsUmVwb3J0cygpOwotCi0JfQotCQotCXB1YmxpYyBzdGF0aWMgSVN0YXR1c1tdIGxhdW5jaENyZWF0aW9uV2l6YXJkKFN0cmluZyB3aXphcmRJZCxTdHJpbmcgb2JqZWN0Q2xhc3NJZCxJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlyZXR1cm4gbGF1bmNoV2l6YXJkKCJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkiLHdpemFyZElkLG9iamVjdENsYXNzSWQsaW5pdGlhbFNlbGVjdGlvbik7Ci0JfQotCQotCXB1YmxpYyBzdGF0aWMgSVN0YXR1c1tdIGxhdW5jaENvbnN1bXB0aW9uV2l6YXJkKFN0cmluZyB3aXphcmRJZCxTdHJpbmcgb2JqZWN0Q2xhc3NJZCxJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlyZXR1cm4gbGF1bmNoV2l6YXJkKCJvcmcuZWNsaXBzZS5qc3Qud3MuaW50ZXJuYWwuY29uc3VtcHRpb24udWkiLHdpemFyZElkLG9iamVjdENsYXNzSWQsaW5pdGlhbFNlbGVjdGlvbik7Ci0JfQotCQotCXB1YmxpYyBzdGF0aWMgSVN0YXR1cyBjcmVhdGVXZWJNb2R1bGUoU3RyaW5nIHdlYlByb2plY3ROYW1lLCBTdHJpbmcgbW9kdWxlTmFtZSwgU3RyaW5nIHNlcnZlckluc3RhbmNlSUQsIFN0cmluZyBzZXJ2ZXJGYWN0b3J5SWQsIFN0cmluZyBqMmVlVmVyc2lvbiwgSUVudmlyb25tZW50IGVudiwgSVByb2dyZXNzTW9uaXRvciBtb25pdG9yICl7Ci0KLQkgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsKLQkgIHRyeXsKLQkgICAgQ3JlYXRlRmFjZXRlZFByb2plY3RDb21tYW5kIGNyZWF0ZVdlYiA9IG5ldyBDcmVhdGVGYWNldGVkUHJvamVjdENvbW1hbmQoKTsKLQkgICAgY3JlYXRlV2ViLnNldFByb2plY3ROYW1lKHdlYlByb2plY3ROYW1lKTsKLSAgICAgICAgY3JlYXRlV2ViLnNldFByb2plY3ROYW1lKG1vZHVsZU5hbWUpOwotICAgICAgICBjcmVhdGVXZWIuc2V0VGVtcGxhdGVJZCgidGVtcGxhdGUuanN0LndlYiIpOwotCSAgICBjcmVhdGVXZWIuc2V0U2VydmVyRmFjdG9yeUlkKHNlcnZlckZhY3RvcnlJZCk7Ci0JICAgIGNyZWF0ZVdlYi5zZXRTZXJ2ZXJJbnN0YW5jZUlkKHNlcnZlckluc3RhbmNlSUQpOwotCSAgICBjcmVhdGVXZWIuc2V0UmVxdWlyZWRGYWNldFZlcnNpb25zKG5ldyBSZXF1aXJlZEZhY2V0VmVyc2lvblswXSk7Ci0gICAgICAgIGNyZWF0ZVdlYi5zZXRFbnZpcm9ubWVudCggZW52ICk7Ci0JICAgIHJldHVybiBjcmVhdGVXZWIuZXhlY3V0ZSggbW9uaXRvciwgbnVsbCApOwotCSAgfQotCSAgY2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLQkgICAgc3RhdHVzID0gU3RhdHVzVXRpbHMuZXJyb3JTdGF0dXMoIGUgKTsKLQkgIH0KLQkgIHJldHVybiBzdGF0dXM7Ci0JICAKLQl9Ci0JCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGRpc2FibGVWYWxpZGF0aW9uKElQcm9qZWN0IHByb2plY3QpewotCQkKLSAgICAJLy8gZGlzYWJsZSB2YWxpZGF0b3JzIGZvciBwcm9qZWN0Ci0JCXRyeQotCQl7Ci0JCQlWYWxpZGF0b3JNYW5hZ2VyIHZtID0gVmFsaWRhdG9yTWFuYWdlci5nZXRNYW5hZ2VyKCk7Ci0JCQl2bS5kaXNhYmxlQWxsVmFsaWRhdG9ycyhwcm9qZWN0LCBudWxsKTsJCQkKLQkJCQotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSkKLQkJewotCQkJU3lzdGVtLm91dC5wcmludGxuKCJGYWlsZWQgdG8gc2V0IFZhbGlkYXRvcnMuLi4iKTsKLQkJfQotCQkKLQkJcmV0dXJuIHRydWU7Ci0JfQotCQotCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRTZXJ2aWNlU2NlbmFyaW9EZWZhdWx0KCkgewotCQlQZXJzaXN0ZW50U2NlbmFyaW9Db250ZXh0IGNvbnRleHQgPSAoUGVyc2lzdGVudFNjZW5hcmlvQ29udGV4dClXZWJTZXJ2aWNlUGx1Z2luLmdldEluc3RhbmNlKCkuZ2V0U2NlbmFyaW9Db250ZXh0KCk7Ci0JICAgICAgY29udGV4dC5zZXRHZW5lcmF0ZVByb3h5KCBmYWxzZSApOwotCSAgICAgIGNvbnRleHQuc2V0TGF1bmNoV2ViU2VydmljZUV4cGxvcmVyKCBmYWxzZSApOwotCSAgICAgIGNvbnRleHQuc2V0SW5zdGFsbFdlYlNlcnZpY2UoIGZhbHNlICk7Ci0JICAgICAgY29udGV4dC5zZXRJbnN0YWxsQ2xpZW50KCBmYWxzZSApOwotCSAgICAgIGNvbnRleHQuc2V0U3RhcnRXZWJTZXJ2aWNlKCBmYWxzZSApOwotCSAgICAgIGNvbnRleHQuc2V0VGVzdFdlYlNlcnZpY2UoIGZhbHNlICk7Ci0JICAgICAgY29udGV4dC5zZXRNb25pdG9yV2ViU2VydmljZShmYWxzZSk7Ci0JICAgICAgY29udGV4dC5zZXRHZW5lcmF0ZVdlYlNlcnZpY2UoU2NlbmFyaW9Db250ZXh0LldTX0RFVkVMT1ApOyAgICAKLQl9Ci0JCi0JcHVibGljIHN0YXRpYyB2b2lkIHNldENsaWVudFNjZW5hcmlvRGVmYXVsdCgpIHsKLQkJUGVyc2lzdGVudFNjZW5hcmlvQ29udGV4dCBjb250ZXh0ID0gKFBlcnNpc3RlbnRTY2VuYXJpb0NvbnRleHQpV2ViU2VydmljZVBsdWdpbi5nZXRJbnN0YW5jZSgpLmdldFNjZW5hcmlvQ29udGV4dCgpOwotCSAgICAgIGNvbnRleHQuc2V0R2VuZXJhdGVQcm94eSggdHJ1ZSApOwotCSAgICAgIGNvbnRleHQuc2V0TGF1bmNoV2ViU2VydmljZUV4cGxvcmVyKCBmYWxzZSApOwotCSAgICAgIGNvbnRleHQuc2V0SW5zdGFsbFdlYlNlcnZpY2UoIGZhbHNlICk7Ci0JICAgICAgY29udGV4dC5zZXRJbnN0YWxsQ2xpZW50KCBmYWxzZSApOwotCSAgICAgIGNvbnRleHQuc2V0U3RhcnRXZWJTZXJ2aWNlKCBmYWxzZSApOwotCSAgICAgIGNvbnRleHQuc2V0VGVzdFdlYlNlcnZpY2UoIGZhbHNlICk7Ci0JICAgICAgY29udGV4dC5zZXRNb25pdG9yV2ViU2VydmljZShmYWxzZSk7Ci0JICAgICAgY29udGV4dC5zZXRHZW5lcmF0ZUNsaWVudChTY2VuYXJpb0NvbnRleHQuV1NfREVWRUxPUCk7Ci0JfQotCQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91dGlsL1NjZW5hcmlvQ29uc3RhbnRzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3V0aWwvU2NlbmFyaW9Db25zdGFudHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE5ZTViZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3V0aWwvU2NlbmFyaW9Db25zdGFudHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMudXRpbDsKLQotcHVibGljIGNsYXNzIFNjZW5hcmlvQ29uc3RhbnRzIHsKLQkvLyBCb3R0b20gdXAgSmF2YSBvciBFSkIgdG8gV2ViIFNlcnZpY2Ugd2l6YXJkIElELgotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdJWkFSRElEX0JPVFRPTV9VUCA9ICJvcmcuZWNsaXBzZS5qc3Qud3MuY3JlYXRpb24udWkud2l6YXJkLnNlcnZlcndpemFyZCI7Ci0JCi0JLy8gVG9wIGRvd24gV1NETCB0byBTa2VsZXRvbiBXZWIgU2VydmljZSB3aXphcmQgSUQuCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgV0laQVJESURfVE9QX0RPV04gPSAib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQiOwotCQotCS8vIFdlYiBTZXJ2aWNlIGNsaWVudCB3aXphcmQgSUQuCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgV0laQVJESURfQ0xJRU5UID0gIm9yZy5lY2xpcHNlLmpzdC53cy5pbnRlcm5hbC5jb25zdW1wdGlvbi51aS53aXphcmQuY2xpZW50LmNsaWVudHdpemFyZCI7CQotCQotCS8vIE9iamVjdCBjbGFzcyBmb3I6Ci0JLy8gMSkgSmF2YSBzb3VyY2UgKGJvdHRvbS11cCkKLQkvLyAyKSBXU0RMIG9yIFdTSUwgKHRvcC1kb3duIG9yIGNsaWVudCkuCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT0JKRUNUX0NMQVNTX0lEX0lGSUxFID0gIm9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlIjsKLQkKLQkvLyBPYmplY3QgY2xhc3MgZm9yIEphdmEgY29tcGlsYXRpb24gdW5pdHMgKGkuZS4gSmF2YSBjbGFzc2VzIHNlbGVjdGVkIGluIHRoZSBKYXZhIHBlcnNwZWN0aXZlKS4KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPQkpFQ1RfQ0xBU1NfSURfQ09NUElMQVRJT05VTklUID0gIm9yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5jb3JlLkNvbXBpbGF0aW9uVW5pdCI7Ci0JCi0JLy8gT2JqZWN0IGNsYXNzIGZvciBhIHNlcnZpY2Ugc2VsZWN0ZWQgaW4gdGhlIEoyRUUgcGVyc3BlY3RpdmUgKHRvcC1kb3duIG9yIGNsaWVudCkuCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT0JKRUNUX0NMQVNTX0lEX1NFUlZJQ0VJTVBMID0gIm9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2UiOwotCQotCS8vIE9iamVjdCBjbGFzcyBmb3IgYSBXU0RMUmVzb3VyY2VJbXBsICh0b3AtZG93biBvciBjbGllbnQpLgotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9CSkVDVF9DTEFTU19JRF9XU0RMU0VSVklDRUlNUEwgPSAib3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbC5XU0RMUmVzb3VyY2VJbXBsIjsKLQkKLQkvLyBPYmplY3QgY2xhc3MgZm9yIGEgU2VydmljZVJlZiAodG9wLWRvd24gb3IgY2xpZW50KS4KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPQkpFQ1RfQ0xBU1NfSURfU0VSVklDRVJFRiA9ICJvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzY2xpZW50LlNlcnZpY2VSZWYiOwotCQotCS8vIE9iamVjdCBjbGFzcyBmb3IgYSBTZXJ2aWNlSW1wbEJlYW4gKGJvdHRvbS11cCkuCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT0JKRUNUX0NMQVNTX0lEX1NFUlZJQ0VJTVBMQkVBTiA9ICJvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuU2VydmljZUltcGxCZWFuIjsKLQkKLQkvLyBPYmplY3QgY2xhc3MgZm9yIGEgQmVhbkxpbmsgKGJvdHRvbS11cCkuCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT0JKRUNUX0NMQVNTX0lEX0JFQU5MSU5LID0gIm9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5CZWFuTGluayI7Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3V0aWwvV1NDdXN0b21BZGFwdGVyRmFjdG9yeS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuanN0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL2pzdC93cy90ZXN0cy91dGlsL1dTQ3VzdG9tQWRhcHRlckZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFiODRlYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2UvanN0L3dzL3Rlc3RzL3V0aWwvV1NDdXN0b21BZGFwdGVyRmFjdG9yeS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDMyNyAgIDE3MjMzOSBrYXRoeUBjYS5pYm0uY29tIC0gS2F0aHkgQ2hhbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC53cy50ZXN0cy51dGlsOwotCi1pbXBvcnQgamF2YS5uZXQuVVJJOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGVyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamVtLnV0aWwuZW1mLndvcmtiZW5jaC5Qcm9qZWN0VXRpbGl0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5TZXJ2bGV0TGluazsKLWltcG9ydCBvcmcuZWNsaXBzZS5qc3QuajJlZS53ZWJzZXJ2aWNlLndzZGQuU2VydmljZUltcGxCZWFuOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpzdC5qMmVlLndlYnNlcnZpY2Uud3NkZC5XZWJTZXJ2aWNlRGVzY3JpcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5KMkVFVXRpbHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuanN0LndzLmludGVybmFsLmNvbW1vbi5SZXNvdXJjZVV0aWxzOwotCi0vKioKLSAqIFRoZSBXU0N1c3RvbUFkYXB0ZXJGYWN0b3J5IGlzIGFuIEFkYXB0ZXJGYWN0b3J5IHNpbWlsYXIgdG8gb25lIGFuIGFkb3B0ZXIgd291bGQgcHJvdmlkZSB0byBhZGFwdCBhIGN1c3RvbSBvYmplY3QgCi0gKiB0byBhIFdTREwgdXJpIHRoYXQgdGhlIFdlYiBzZXJ2aWNlcyB3aXphcmRzIGFuZCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHdvdWxkIHRha2UgYXMgaW5wdXQuICBUaGUgU2VydmxldCBMaW5rLCAKLSAqIHJlcHJlc2VudGluZyB0aGUgc2VydmljZSBpbXBsZW1lbnRhdGlvbiB1bmRlciB0aGUgSlNSLTEwOSBXZWIgc2VydmljZXMgYnJhbmNoIG9mIHRoZSBKMkVFIFByb2plY3QgRXhwbG9yZXIsIGlzIAotICogdXNlZCBhcyB0aGUgImN1c3RvbSBvYmplY3QiIGluIHRoaXMgdGVzdC4KLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0N1c3RvbUFkYXB0ZXJGYWN0b3J5IGltcGxlbWVudHMgSUFkYXB0ZXJGYWN0b3J5IHsKLQotCXByaXZhdGUgc3RhdGljIGZpbmFsIENsYXNzW10gdHlwZXMgPSB7Ci0JCUlGaWxlLmNsYXNzLCBTdHJpbmcuY2xhc3MKLQl9OwotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRlckZhY3RvcnkjZ2V0QWRhcHRlcihqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuQ2xhc3MpCi0JICovCi0JcHVibGljIE9iamVjdCBnZXRBZGFwdGVyKE9iamVjdCBhZGFwdGFibGVPYmplY3QsIENsYXNzIGFkYXB0ZXJUeXBlKSB7Ci0JCWlmIChhZGFwdGFibGVPYmplY3QgaW5zdGFuY2VvZiBTZXJ2bGV0TGluayAmJiAoKGFkYXB0ZXJUeXBlID09IElGaWxlLmNsYXNzICkgfHwgKGFkYXB0ZXJUeXBlID09IFN0cmluZy5jbGFzcykpKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oImdldEFkYXB0ZXIgb24gIithZGFwdGFibGVPYmplY3QudG9TdHJpbmcoKSk7Ci0JCQlTZXJ2bGV0TGluayBiZWFuTGluayA9IChTZXJ2bGV0TGluaykgYWRhcHRhYmxlT2JqZWN0OwotCi0JCQlJRmlsZSB3c2RsRmlsZSA9IGdldFdTRExGaWxlKGJlYW5MaW5rKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigid3NkbEZpbGUgPSAiK3dzZGxGaWxlKTsKLQkJCWlmIChhZGFwdGVyVHlwZSA9PSBJRmlsZS5jbGFzcykgewotCQkJCXJldHVybiB3c2RsRmlsZTsKLQkJCX0gZWxzZSAKLQkJCQlpZiAoYWRhcHRlclR5cGUgPT0gU3RyaW5nLmNsYXNzKSB7Ci0JCQkJCVVSSSB3c2RsVXJpID0gd3NkbEZpbGUuZ2V0TG9jYXRpb25VUkkoKTsKLQkJCQkJU3RyaW5nIHdzZGxGaWxlU3RyaW5nID0gbnVsbDsKLQkJCQkJaWYgKHdzZGxVcmkgIT0gbnVsbCkgewotCQkJCQkJd3NkbEZpbGVTdHJpbmcgPSB3c2RsVXJpLnRvU3RyaW5nKCk7Ci0JCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIndzZGxGaWxlU3RyaW5nID0gIit3c2RsRmlsZVN0cmluZyk7Ci0JCQkJCX0KLQkJCQkJcmV0dXJuIHdzZGxGaWxlU3RyaW5nOwotCQkJCX0gZWxzZSB7Ci0JCQkJCXJldHVybiBudWxsOwotCQkJCX0KLQkJfQotCQllbHNlIHsKLQkJCXJldHVybiBudWxsOwotCQl9Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGVyRmFjdG9yeSNnZXRBZGFwdGVyTGlzdCgpCi0JICovCi0JcHVibGljIENsYXNzW10gZ2V0QWRhcHRlckxpc3QoKSB7Ci0JCXJldHVybiB0eXBlczsKLQl9Ci0JCi0JLyoqCi0JICogQHBhcmFtIGJlYW4gVGhlIFNlcnZpY2VJbXBsQmVhbgotCSAqIEByZXR1cm4gVGhlIElGaWxlIHJlcHJlc2VudGluZyB0aGUgV1NETCBmaWxlIGZvciB0aGlzIFNlcnZpY2VJbXBsQmVhbi4KLQkgKi8KLQlwcml2YXRlIElGaWxlIGdldFdTRExGaWxlKFNlcnZpY2VJbXBsQmVhbiBiZWFuKSB7Ci0JCSAgRU9iamVjdCBlT2JqZWN0ID0gYmVhbi5lQ29udGFpbmVyKCk7Ci0JCSAgaWYgKGVPYmplY3QgPT0gbnVsbCkKLQkJCSAgcmV0dXJuIG51bGw7Ci0JICAgICAgICAgIAotCQkgIGVPYmplY3QgPSBlT2JqZWN0LmVDb250YWluZXIoKTsKLQkgICAgICAKLQkJICBpZiAoZU9iamVjdCBpbnN0YW5jZW9mIFdlYlNlcnZpY2VEZXNjcmlwdGlvbikgewotCQkJICBXZWJTZXJ2aWNlRGVzY3JpcHRpb24gd3NkID0gKFdlYlNlcnZpY2VEZXNjcmlwdGlvbikgZU9iamVjdDsKLQkJCSAgCi0JCQkgIElQcm9qZWN0IHByb2plY3QgPSBQcm9qZWN0VXRpbGl0aWVzLmdldFByb2plY3Qod3NkKTsgICAgCSAgCi0JICAgIAkgIAotCQkJICBJUGF0aCBwYXRoID0gSjJFRVV0aWxzLmdldFdlYkNvbnRlbnRQYXRoKHByb2plY3QpOyAgICAJIAotCQkJICBwYXRoID0gcGF0aC5hcHBlbmQod3NkLmdldFdzZGxGaWxlKCkpOyAKLQkJCSAgcmV0dXJuIFJlc291cmNlVXRpbHMuZ2V0V29ya3NwYWNlUm9vdCgpLmdldEZpbGUocGF0aCk7IAkgIAotCQkJICAgICAgCSAgICAKLQkJICB9Ci0JCSAgcmV0dXJuIG51bGw7Ci0JICB9Ci0JICAKLQkgIC8qKgotCSAqIEBwYXJhbSBsaW5rIFRoZSBTZXJ2bGV0TGluawotCSAqIEByZXR1cm4gVGhlIElGaWxlIHJlcHJlc2VudGluZyB0aGUgV1NETCBmaWxlIGZvciB0aGlzIFNlcnZsZXRMaW5rCi0JICovCi0JcHJpdmF0ZSBJRmlsZSBnZXRXU0RMRmlsZShTZXJ2bGV0TGluayBsaW5rKSB7Ci0JCSAgRU9iamVjdCBlT2JqZWN0ID0gbGluay5lQ29udGFpbmVyKCk7Ci0JCSAgaWYgKGVPYmplY3QgaW5zdGFuY2VvZiBTZXJ2aWNlSW1wbEJlYW4pCi0JCQkgIHJldHVybiBnZXRXU0RMRmlsZSgoU2VydmljZUltcGxCZWFuKSBlT2JqZWN0KTsKLQkJICByZXR1cm4gbnVsbDsKLQkgIH0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3QvLmNsYXNzcGF0aCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0Ly5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MmVlMjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3QvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSL29yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZS9KMlNFLTEuNSIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPgotPC9jbGFzc3BhdGg+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC8ucHJvamVjdCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0Ly5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjNlMWE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0Ly5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Q8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3QvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE1NmEzYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVQTFVHSU5fTkFNRQotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Q7c2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjAKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0LlNlcnZpY2VQb2xpY3l0VGVzdEFjdGl2YXRvcgotQnVuZGxlLVZlbmRvcjogJVBMVUdJTl9QUk9WSURFUgotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLAotIG9yZy5qdW5pdDQsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LAotIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aSwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcywKLSBvcmcuZWNsaXBzZS53c3Qud3MsCi0gb3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9ucywKLSBvcmcuZWNsaXBzZS51aQotRWNsaXBzZS1MYXp5U3RhcnQ6IHRydWUKLUJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3QvYWJvdXQuaHRtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlYWZiNjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3QvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPk1heSAyLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L2J1aWxkLnByb3BlcnRpZXMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGY0M2M3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1zb3VyY2UuLiA9IHNyYy8KLW91dHB1dC4uID0gYmluLwotYmluLmluY2x1ZGVzID0gTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIC4sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sCi1zcmMuaW5jbHVkZXMgPSBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBzcmMvCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9wbHVnaW4ucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmYyOTBlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyBNZXNzYWdlcyBpbiBwbHVnaW4ueG1sLgotIwotUExVR0lOX05BTUU9U2VydmljZSBwb2xpY3kKLVBMVUdJTl9QUk9WSURFUj1FY2xpcHNlLm9yZwpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3QvcGx1Z2luLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1MjE4M2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3QvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotCi08cGx1Z2luPgotICAKLSAgPCEtLSBXZSBuZWVkIHRoaXMgcGx1Z2luIHRvIGJlIGxvYWRlZCBhdCBzdGFydHVwIHRpbWUgc28gdGhhdCB0aGUKLSAgICAgICBTZXJ2aWNlUG9saWN5UHJvcGVydHlUZXN0ZXIgY2xhc3Mgd2lsbCBhbHdheXMgYmUgbG9hZGVkLiAgSWYgdGhpcyBpcwotICAgICAgIG5vdCBkb25lIHRoZW4gdGhlIFNlcnZpY2UgUG9saWN5IHByb2plY3QgcHJvcGVydHkgcGFnZSB3aWxsIGFwcGVhcgotICAgICAgIG9uIGFsbCBwcm9qZWN0IHByb3BlcnR5IHBhZ2VzIHVudGlsIHRoZSBwbHVnaW4gaGFzIGJlZW4gbG9hZGVkLiAKLSAgICAgICAtLT4KLSAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UudWkuc3RhcnR1cCIvPgotICAKLSAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmNvcmUuZXhwcmVzc2lvbnMucHJvcGVydHlUZXN0ZXJzIj4KLSAgICA8cHJvcGVydHlUZXN0ZXIKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC5zZXJ2aWNlLndzLnNlcnZpY2UucG9saWN5LmZvbyIKLSAgICAgIHR5cGU9Im9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0IgotICAgICAgbmFtZXNwYWNlPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC5zZXJ2aWNlLndzLnNlcnZpY2UucG9saWN5LmZvbyIKLSAgICAgIHByb3BlcnRpZXM9InByb2plY3RIYXNGT09maWxlcyIKLSAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC5pbnRlcm5hbC5wcm9wZXJ0aWVzLkZPT0ZpbGVQcm9wZXJ0eVRlc3RlciI+Ci0gICAgPC9wcm9wZXJ0eVRlc3Rlcj4KLSAJPC9leHRlbnNpb24+Ci0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuc2VydmljZXBvbGljeSI+Ci0gICAgIDxzZXJ2aWNlUG9saWN5PgotICAgICAgPGVuYWJsZW1lbnQ+Ci0gICAgICAgICA8dGVzdCBwcm9wZXJ0eT0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Quc2VydmljZS53cy5zZXJ2aWNlLnBvbGljeS5mb28ucHJvamVjdEhhc0ZPT2ZpbGVzIi8+Ci0gICAgICAgPC9lbmFibGVtZW50PiAKLSAgICAgICA8cG9saWN5IHBhcmVudFBvbGljeUlkPSJzb21lcGFyZW50IiBpZD0iaWQxIiBlbnVtTGlzdElkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bSIgbXV0YWJsZT0idHJ1ZSI+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9ImlkMSBzaG9ydE5hbWUiIGRlc2NyaXB0aW9uPSJpZDEgZGVzY3JpcHRpb24iLz4KLSAgICAgICAgIDxyZWxhdGlvbnNoaXAgZW51bUxpc3Q9Im9yZy5lY2xpcHNlLndzdC53YXJuIG9yZy5lY2xpcHNlLndzdC5lcnJvciI+Ci0gICAgICAgICAgIDx0YXJnZXRQb2xpY3kgaWQ9ImlkMiIKLSAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD0ib3JnLmVjbGlwc2Uud3N0Lndhcm4gb3JnLmVjbGlwc2Uud3N0LmVycm9yIi8+Ci0gICAgICAgICAgIDx0YXJnZXRQb2xpY3kgaWQ9ImlkMyIKLSAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD0ib3JnLmVjbGlwc2Uud3N0Lndhcm4iLz4KLSAgICAgICAgICAgPHRhcmdldFBvbGljeSBpZD0iaWQ0IgotICAgICAgICAgICAgICAgICAgIGl0ZW1MaXN0PSJvcmcuZWNsaXBzZS53c3QuZXJyb3IiLz4KLSAgICAgICAgICAgPHRhcmdldFBvbGljeSBpZD0iaWQyMiIKLSAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD0ib3JnLmVjbGlwc2Uud3N0Lndhcm4yIG9yZy5lY2xpcHNlLndzdC5lcnJvcjIiLz4KLSAgCQkJPHRhcmdldFBvbGljeSBpZD0iaWRfYm9vbGVhbjIiCi0gICAgICAgICAgICAgICAgICAgaXRlbUxpc3Q9Im9yZy5lY2xpcHNlLndzdC5mYWxzZSIvPiAgCi0gICAgICAgICA8L3JlbGF0aW9uc2hpcD4KLSAgICAgICAgIAotICAgICAgICAgPHJlbGF0aW9uc2hpcCBlbnVtTGlzdD0ib3JnLmVjbGlwc2Uud3N0Lmlnbm9yZSI+Ci0gICAgICAgICAgIDx0YXJnZXRQb2xpY3kgaWQ9ImlkMyIKLSAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD0ib3JnLmVjbGlwc2Uud3N0Lndhcm4gb3JnLmVjbGlwc2Uud3N0LmVycm9yIi8+Ci0gICAgICAgICA8L3JlbGF0aW9uc2hpcD4KLSAgICAgICA8L3BvbGljeT4KLSAgICAgICAKLSAgICAgICA8cG9saWN5IGlkPSJzb21lcGFyZW50Ij4KLSAgICAgICAgIDxkZXNjcmlwdG9yIGxvbmdOYW1lPSJwYXJlbnQgbG9uZ25hbWUiIC8+Ci0gICAgICAgPC9wb2xpY3k+Ci0gICAgICAgCi0gICAgICAgPHBvbGljeSBpZD0iaWQyIiBwYXJlbnRQb2xpY3lJZD0ic29tZXBhcmVudCIgCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnVtTGlzdElkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bSIKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRFbnVtSWQ9Im9yZy5lY2xpcHNlLndzdC53YXJuIgotICAgICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZT0idHJ1ZSI+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9ImlkMiBzaG9ydG5hbWUiIGNvbnRleHRIZWxwSWQ9InNvbWVjb250ZXh0aWQuQTAwMSIvPgotICAgICAgICAgPHN0YXRlIGtleT0iaWQyX2tleSIgdmFsdWU9ImlkMl92YWx1ZSIgLz4KLSAgICAgICA8L3BvbGljeT4KLSAgICAgICAKLSAgICAgICA8cG9saWN5IGlkPSJpZDMiIHBhcmVudFBvbGljeUlkPSJpZDIiIAotICAgICAgIAkJCQkJZW51bUxpc3RJZD0ib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmVycm9yV2FybkVudW0iCi0gICAgICAgCQkJCQlkZWZhdWx0RW51bUlkPSJvcmcuZWNsaXBzZS53c3QuZXJyb3IiPgotICAgICAgICAgPGRlc2NyaXB0b3Igc2hvcnROYW1lPSJpZDMgc2hvcnQgbmFtZSIvPgotICAgICAgIDwvcG9saWN5PgotICAgICAgIDxwb2xpY3kgaWQ9ImlkNSIgcGFyZW50UG9saWN5SWQ9ImlkMyIgCi0gICAgICAgCQkJCQllbnVtTGlzdElkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bSIKLSAgICAgICAJCQkJCWRlZmF1bHRFbnVtSWQ9Im9yZy5lY2xpcHNlLndzdC5lcnJvciI+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9ImlkNSBzaG9ydCBuYW1lIi8+Ci0gICAgICAgICA8cmVsYXRpb25zaGlwIGVudW1MaXN0PSJvcmcuZWNsaXBzZS53c3Qud2FybiI+Ci0gICAgICAgICAgIDx0YXJnZXRQb2xpY3kgaWQ9ImlkMiIgCi0gICAgICAgICAgICAgICAgICAgaXRlbUxpc3Q9Im9yZy5lY2xpcHNlLndzdC5pZ25vcmUiLz4KLSAgICAgICAgIDwvcmVsYXRpb25zaGlwPiAgCi0gICAgICAgPC9wb2xpY3k+Ci0gICAgICAgPHBvbGljeSBpZD0iaWQ2IiBwYXJlbnRQb2xpY3lJZD0iaWQ1IiAKLSAgICAgICAJCQkJCWVudW1MaXN0SWQ9Im9yZy5lY2xpcHNlLndzdC5zZXJ2aWNlLnBvbGljeS5lcnJvcldhcm5FbnVtIgotICAgICAgIAkJCQkJZGVmYXVsdEVudW1JZD0ib3JnLmVjbGlwc2Uud3N0LmVycm9yIj4KLSAgICAgICAgIDxkZXNjcmlwdG9yIHNob3J0TmFtZT0iaWQ2IHNob3J0IG5hbWUiLz4KLSAgICAgICA8L3BvbGljeT4KLQotICAgICAgIDxwb2xpY3kgaWQ9ImlkMTAiIHBhcmVudFBvbGljeUlkPSJpZDIyIiAKLSAgICAgICAJCQkJCWVudW1MaXN0SWQ9Im9yZy5lY2xpcHNlLndzdC5zZXJ2aWNlLnBvbGljeS5lcnJvcldhcm5FbnVtIgotICAgICAgIAkJCQkJZGVmYXVsdEVudW1JZD0ib3JnLmVjbGlwc2Uud3N0LmVycm9yIj4KLSAgICAgICAgIDxkZXNjcmlwdG9yIHNob3J0TmFtZT0iaWQxMCBzaG9ydCBuYW1lIi8+Ci0gICAgICAgPC9wb2xpY3k+Ci0gICAgICAgPHBvbGljeSBpZD0iaWQxMSIgcGFyZW50UG9saWN5SWQ9ImlkMTAiIAotICAgICAgIAkJCQkJZW51bUxpc3RJZD0ib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmVycm9yV2FybkVudW0iCi0gICAgICAgCQkJCQlkZWZhdWx0RW51bUlkPSJvcmcuZWNsaXBzZS53c3QuZXJyb3IiPgotICAgICAgICAgPGRlc2NyaXB0b3Igc2hvcnROYW1lPSJpZDExIHNob3J0IG5hbWUiLz4KLSAgICAgICAgIDxyZWxhdGlvbnNoaXAgZW51bUxpc3Q9Im9yZy5lY2xpcHNlLndzdC53YXJuIj4KLSAgICAgICAgICAgPHRhcmdldFBvbGljeSBpZD0iaWQyIiAKLSAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD0ib3JnLmVjbGlwc2Uud3N0Lmlnbm9yZSIvPgotICAgICAgICAgPC9yZWxhdGlvbnNoaXA+ICAKLSAgICAgICA8L3BvbGljeT4KLSAgICAgICA8cG9saWN5IGlkPSJpZDEyIiBwYXJlbnRQb2xpY3lJZD0iaWQxMSIgCi0gICAgICAgCQkJCQllbnVtTGlzdElkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bSIKLSAgICAgICAJCQkJCWRlZmF1bHRFbnVtSWQ9Im9yZy5lY2xpcHNlLndzdC5lcnJvciI+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9ImlkMTIgc2hvcnQgbmFtZSIvPgotICAgICAgIDwvcG9saWN5PgotICAgICAgIAotICAgICAgIDxwb2xpY3kgaWQ9ImlkNyIgcGFyZW50UG9saWN5SWQ9ImlkMiIgCi0gICAgICAgCQkJCQllbnVtTGlzdElkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bSIKLSAgICAgICAJCQkJCWRlZmF1bHRFbnVtSWQ9Im9yZy5lY2xpcHNlLndzdC5lcnJvciI+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9ImlkNyBzaG9ydCBuYW1lIi8+Ci0gICAgICAgPC9wb2xpY3k+Ci0gICAgICAgPHBvbGljeSBpZD0iaWQ4IiBwYXJlbnRQb2xpY3lJZD0iaWQ3IiAKLSAgICAgICAJCQkJCWVudW1MaXN0SWQ9Im9yZy5lY2xpcHNlLndzdC5zZXJ2aWNlLnBvbGljeS5lcnJvcldhcm5FbnVtIgotICAgICAgIAkJCQkJZGVmYXVsdEVudW1JZD0ib3JnLmVjbGlwc2Uud3N0LmVycm9yIj4KLSAgICAgICAgIDxkZXNjcmlwdG9yIHNob3J0TmFtZT0iaWQ4IHNob3J0IG5hbWUiLz4KLSAgICAgICA8L3BvbGljeT4KLSAgICAgICA8cG9saWN5IGlkPSJpZDkiIHBhcmVudFBvbGljeUlkPSJpZDgiIAotICAgICAgIAkJCQkJZW51bUxpc3RJZD0ib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmVycm9yV2FybkVudW0iCi0gICAgICAgCQkJCQlkZWZhdWx0RW51bUlkPSJvcmcuZWNsaXBzZS53c3QuZXJyb3IiPgotICAgICAgICAgPGRlc2NyaXB0b3Igc2hvcnROYW1lPSJpZDkgc2hvcnQgbmFtZSIvPgotICAgICAgICAgPHJlbGF0aW9uc2hpcCBlbnVtTGlzdD0ib3JnLmVjbGlwc2Uud3N0Lndhcm4iPgotICAgICAgICAgICA8dGFyZ2V0UG9saWN5IGlkPSJpZDIiIAotICAgICAgICAgICAgICAgICAgIGl0ZW1MaXN0PSJvcmcuZWNsaXBzZS53c3QuaWdub3JlIi8+Ci0gICAgICAgICA8L3JlbGF0aW9uc2hpcD4gIAotICAgICAgIDwvcG9saWN5PgotICAgICAgIAotICAgICAgIDxwb2xpY3kgaWQ9ImlkNCIgZW51bUxpc3RJZD0ib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmVycm9yV2FybkVudW0iPgotICAgICAgICAgPGRlc2NyaXB0b3Igc2hvcnROYW1lPSJpZDQgc2hvcnQgbmFtZSIgbG9uZ05hbWU9ImlkNCBsb25nIG5hbWUiIC8+Ci0gICAgICAgPC9wb2xpY3k+Ci0gICAgICAgCi0gICAgICAgPHBvbGljeSBpZD0iaWQyMiIgcGFyZW50UG9saWN5SWQ9InNvbWVwYXJlbnQiIAotICAgICAgICAgICAgICAgICAgICAgICAgZW51bUxpc3RJZD0ib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmVycm9yV2FybkVudW0yIgotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEVudW1JZD0ib3JnLmVjbGlwc2Uud3N0Lndhcm4yIj4KLSAgICAgICAgIDxkZXNjcmlwdG9yIHNob3J0TmFtZT0iaWQyMiBzaG9ydG5hbWUiIGNvbnRleHRIZWxwSWQ9InNvbWVjb250ZXh0aWQuQTAwMSIvPgotICAgICAgIDwvcG9saWN5PgotICAgICAgIAotICAgICAgIDxwb2xpY3kgaWQ9ImlkX2Jvb2xlYW4xIiBlbnVtTGlzdElkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuYm9vbGVhbkVudW0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRFbnVtSWQ9Im9yZy5lY2xpcHNlLndzdC50cnVlIj4KLSAgICAgICAgIDxkZXNjcmlwdG9yIHNob3J0TmFtZT0iYm9vbGVhbjEgc2hvcnQgbmFtZSIgbG9uZ05hbWU9ImJvb2xlYW4xIGxvbmcgbmFtZSIgLz4KLSAgICAgICA8L3BvbGljeT4KLSAgICAgICAKLSAgICAgICA8cG9saWN5IGlkPSJpZF9ib29sZWFuMiIgZW51bUxpc3RJZD0ib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmJvb2xlYW5FbnVtIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RW51bUlkPSJvcmcuZWNsaXBzZS53c3QudHJ1ZSI+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9ImJvb2xlYW4yIHNob3J0IG5hbWUiIGxvbmdOYW1lPSJib29sZWFuMiBsb25nIG5hbWUiIC8+Ci0gICAgICAgPC9wb2xpY3k+Ci0gICAgICAgPGVudW1lcmF0aW9uIGlkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bTIiIAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJvcmcuZWNsaXBzZS53c3QuaWdub3JlMiI+Ci0gICAgICAgICA8aXRlbSBpZD0ib3JnLmVjbGlwc2Uud3N0Lmlnbm9yZTIiCi0gICAgICAgICAgICAgICBzaG9ydE5hbWU9IklHTk9SRSBTSE9SVE5BTUUyIiBsb25nTmFtZT0iSUdOT1JFIExPTkdOQU1FMiIgLz4KLSAgICAgICAgIDxpdGVtIGlkPSJvcmcuZWNsaXBzZS53c3Qud2FybjIiCi0gICAgICAgICAgICAgICBzaG9ydE5hbWU9IldBUk4gU0hPUlROQU1FMiIgbG9uZ05hbWU9IldBUk4gTE9OR05BTUUyIiAvPgotICAgICAgICAgPGl0ZW0gaWQ9Im9yZy5lY2xpcHNlLndzdC5lcnJvcjIiCi0gICAgICAgICAgICAgICBzaG9ydE5hbWU9IkVSUk9SIFNIT1JUTkFNRTIiIGxvbmdOYW1lPSJFUlJPUiBMT05HTkFNRTIiIC8+Ci0gICAgICAgPC9lbnVtZXJhdGlvbj4gCi0gICAgICAgCi0gICAgIDwvc2VydmljZVBvbGljeT4gICAgICAKLSAgIDwvZXh0ZW5zaW9uPgotICAgCi0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbGljeXVpIj4KLSAgICAgPHNlcnZpY2VQb2xpY3lVST4gCi0gICAgICAgPG9wZXJhdGlvbiBpZD0ic2VydmljZS51aS5vcGVyYXRpb24xIiBkZWZhdWx0ZGF0YT0idHJ1ZSIKLSAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lQYXR0ZXJuPSJpZDN8aWQyIiA+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9IlVJIHBvbGljeTEgc2hvcnQgbmFtZSIgbG9uZ05hbWU9IlVJIHBvbGljeTEgbG9uZyBuYW1lIiAvPgotICAgICAgICAgPGVudW1lcmF0aW9uIGlkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bSIvPgotICAgICAgICAgPGVuYWJsZWQgbXVsdGlzZWxlY3Q9InRydWUiLz4KLSAgICAgICA8L29wZXJhdGlvbj4KLSAgICAgICAKLSAgICAgICA8b3BlcmF0aW9uIGlkPSJzZXJ2aWNlLnVpLm9wZXJhdGlvbjIiIGRlZmF1bHRkYXRhPSJ0cnVlIgotICAgICAgICAgICAgICAgICAgICAgIHBvbGljeVBhdHRlcm49ImlkXGQuKiIgPgotICAgICAgICAgPGRlc2NyaXB0b3Igc2hvcnROYW1lPSJVSSBwb2xpY3kyIHNob3J0IG5hbWUiIGxvbmdOYW1lPSJVSSBwb2xpY3kyIGxvbmcgbmFtZSIgLz4KLSAgICAgICAgIDxlbnVtZXJhdGlvbiBpZD0ib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmVycm9yV2FybkVudW0iLz4KLSAgICAgICAgIDxlbmFibGVkIG11bHRpc2VsZWN0PSJmYWxzZSIvPgotICAgICAgIDwvb3BlcmF0aW9uPiAKLSAgICAgICAKLSAgICAgICA8b3BlcmF0aW9uIGlkPSJzZXJ2aWNlLnVpLm9wZXJhdGlvbjMiIGRlZmF1bHRkYXRhPSJmYWxzZSIKLSAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lQYXR0ZXJuPSJpZDQiID4KLSAgICAgICAgIDxkZXNjcmlwdG9yIHNob3J0TmFtZT0iVUkgcG9saWN5MyBzaG9ydCBuYW1lIiBsb25nTmFtZT0iVUkgcG9saWN5MyBsb25nIG5hbWUiIC8+Ci0gICAgICAgICA8ZW51bWVyYXRpb24gaWQ9Im9yZy5lY2xpcHNlLndzdC5zZXJ2aWNlLnBvbGljeS5lcnJvcldhcm5FbnVtIi8+Ci0gICAgICAgPC9vcGVyYXRpb24+Ci0gICAgICAgCi0gICAgICAgPG9wZXJhdGlvbiBpZD0ic2VydmljZS51aS5vcGVyYXRpb240IiBkZWZhdWx0ZGF0YT0idHJ1ZSIKLSAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lQYXR0ZXJuPSJpZDF8aWQyfGlkMyIgPgotICAgICAgICAgPGRlc2NyaXB0b3Igc2hvcnROYW1lPSJVSSBwb2xpY3k0IHNob3J0IG5hbWUiIGxvbmdOYW1lPSJVSSBwb2xpY3k0IGxvbmcgbmFtZSIgLz4KLSAgICAgICAgIDxlbnVtZXJhdGlvbiBpZD0ib3JnLmVjbGlwc2Uud3N0LnNlcnZpY2UucG9saWN5LmVycm9yV2FybkVudW0iLz4KLSAgICAgICA8L29wZXJhdGlvbj4KLSAgICAgCi0gICAgICAgPG9wZXJhdGlvbiBpZD0ic2VydmljZS51aS5vcGVyYXRpb241IiBkZWZhdWx0ZGF0YT0iZmFsc2UiCi0gICAgICAgICAgICAgICAgICAgICAgcG9saWN5UGF0dGVybj0iaWQyMiIgd29ya3NwYWNlT25seT0idHJ1ZSI+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9IlVJIHBvbGljeTUgc2hvcnQgbmFtZSIgbG9uZ05hbWU9IlVJIHBvbGljeTUgbG9uZyBuYW1lIiAvPgotICAgICAgICAgPGVudW1lcmF0aW9uIGlkPSJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bTIiLz4KLSAgICAgICA8L29wZXJhdGlvbj4gICAgICAKLSAgICAgICA8b3BlcmF0aW9uIGlkPSJzZXJ2aWNlLnVpLmJvb2xlYW4ub3BlcmF0aW9uMSIgZGVmYXVsdGRhdGE9ImZhbHNlIgotICAgICAgICAgICAgICAgICAgICAgIHBvbGljeVBhdHRlcm49ImlkX2Jvb2wuKiIgd29ya3NwYWNlT25seT0idHJ1ZSI+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9IlVJIHBvbGljeTJiIGJvb2wgc2hvcnQgbmFtZSIgbG9uZ05hbWU9IlVJIHBvbGljeTJiIGJvb2wgbG9uZyBuYW1lIiAvPgotICAgICAgICAgPHNlbGVjdGlvbi8+Ci0gICAgICAgPC9vcGVyYXRpb24+Ci0gICAgICAgCi0gICAgICAgPG9wZXJhdGlvbiBpZD0ic2VydmljZS51aS5ib29sZWFuLm9wZXJhdGlvbjIiIGRlZmF1bHRkYXRhPSJ0cnVlIgotICAgICAgICAgICAgICAgICAgICAgIHBvbGljeVBhdHRlcm49ImlkX2Jvb2xlYW4yIiA+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9IlVJIHBvbGljeTMgYm9vbCBzaG9ydCBuYW1lIiBsb25nTmFtZT0iVUkgcG9saWN5MyBib29sIGxvbmcgbmFtZSIgLz4KLSAgICAgICAgIDxzZWxlY3Rpb24gaWNvbj0idHJ1ZSIvPgotICAgICAgIDwvb3BlcmF0aW9uPgotICAgICAgIAotICAgICAgIDxvcGVyYXRpb24gaWQ9InNlcnZpY2UudWkuY29tcGxleC5vcGVyYXRpb24xIiBkZWZhdWx0ZGF0YT0iZmFsc2UiCi0gICAgICAgICAgICAgICAgICAgICAgcG9saWN5UGF0dGVybj0ic29tZXBhcmVudHwgaWQ0IiA+Ci0gICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9IlVJIHBvbGljeTQgc2hvcnQgbmFtZSIgbG9uZ05hbWU9IlVJIHBvbGljeTQgbG9uZyBuYW1lIiAvPgotICAgICAgICAgPGNvbXBsZXggbGF1bmNoQ2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0LlRlc3RMYXVuY2hDbGFzcyIvPgotICAgICAgICAgPGVuYWJsZWQgbXVsdGlzZWxlY3Q9InRydWUiCi0gICAgICAgICAgICAgICAgICBlbmFibGVkQ2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0LlRlc3RFbmFibGVkQ2xhc3MiLz4KLSAgICAgICA8L29wZXJhdGlvbj4KLSAgICAgICAKLSAgICAgICA8cXVpY2tGaXggcGx1Z2luSWQ9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0IgotICAgICAgICAgICAgICAgICBjb2RlPSIxIj4KLSAgICAgICAgICA8YWN0aW9uIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC5hY3Rpb24xIj4KLSAgICAgICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9InF1aWNrIGZpeCAxIGZvciBjb2RlIDEiLz4KLSAgICAgICAgICA8L2FjdGlvbj4KLSAgICAgICAgICA8YWN0aW9uIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC5hY3Rpb24yIj4KLSAgICAgICAgICAgICA8ZGVzY3JpcHRvciBzaG9ydE5hbWU9InF1aWNrIGZpeCAyIGZvciBjb2RlIDEiLz4KLSAgICAgICAgICA8L2FjdGlvbj4KLSAgICAgICA8L3F1aWNrRml4PgotICAgICAgIAotICAgICAgIDxxdWlja0ZpeCBwbHVnaW5JZD0ib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3QiCi0gICAgICAgICAgICAgICAgIGNvZGU9IjIiPgotICAgICAgICAgIDxhY3Rpb24gY2xhc3M9Im9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0LmFjdGlvbjMiPgotICAgICAgICAgICAgIDxkZXNjcmlwdG9yIHNob3J0TmFtZT0icXVpY2sgZml4IDEgZm9yIGNvZGUgMiIvPgotICAgICAgICAgIDwvYWN0aW9uPgotICAgICAgIDwvcXVpY2tGaXg+Ci0gICAgIDwvc2VydmljZVBvbGljeVVJPgotICAgPC9leHRlbnNpb24+Ci0KLTwvcGx1Z2luPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Qvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS90ZXN0L01haW5UZXN0ZXIuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdGVzdC9NYWluVGVzdGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYjkwM2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Qvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS90ZXN0L01haW5UZXN0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQwMSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0OwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JV29ya3NwYWNlUm9vdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLnByZWZlcmVuY2VzLklFY2xpcHNlUHJlZmVyZW5jZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLnByZWZlcmVuY2VzLkluc3RhbmNlU2NvcGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lBUENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlcy5QZXJzaXN0ZW50V1NJU1NCUENvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5RW51bWVyYXRpb25MaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5UmVsYXRpb25zaGlwOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JUG9saWN5U3RhdGVFbnVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JU2VydmljZVBvbGljeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVN0YXRlRW51bWVyYXRpb25JdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5TZXJ2aWNlUG9saWN5QWN0aXZhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5TZXJ2aWNlUG9saWN5UGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5Lmxpc3RlbmVycy5JUG9saWN5Q2hpbGRDaGFuZ2VMaXN0ZW5lcjsKLQotQFN1cHByZXNzV2FybmluZ3MoInJlc3RyaWN0aW9uIikgLy8kTk9OLU5MUy0xJAotcHVibGljIGNsYXNzIE1haW5UZXN0ZXIgZXh0ZW5kcyBUZXN0Q2FzZQoteyAgCi0gICAKLSAgIHB1YmxpYyB2b2lkIHRlc3RFeHRlbnNpb25zKCkKLSAgIHsKLSAgICAgU2VydmljZVBvbGljeVBsYXRmb3JtIHBsYXRmb3JtICAgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKTsKLSAgICAgTGlzdDxJU2VydmljZVBvbGljeT4gIHBvbGljeUxpc3QgPSBwbGF0Zm9ybS5nZXRSb290U2VydmljZVBvbGljaWVzKCBudWxsICk7Ci0gICAgIAotICAgICBmb3IoIElTZXJ2aWNlUG9saWN5IHBvbGljeSA6IHBvbGljeUxpc3QgKQotICAgICB7Ci0gICAgICAgZGlzcGxheVBvbGljeU5vZGUoIHBvbGljeSApOwotICAgICB9ICAgCi0gICAgIAotICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCI9PT09PT09PT09PSBFbnVtZXJhdGlvbnM6IiApOyAvLyROT04tTkxTLTEkCi0gICAgIAotICAgICBMaXN0PElTdGF0ZUVudW1lcmF0aW9uSXRlbT4gZXJyb3JXYXJuRW51bSA9IHBsYXRmb3JtLmdldFN0YXRlRW51bWVyYXRpb24oICJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bSIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiRW51bSBpZDogIiArICJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kuZXJyb3JXYXJuRW51bSIgKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgIAotICAgICBmb3IoIElTdGF0ZUVudW1lcmF0aW9uSXRlbSBpdGVtIDogZXJyb3JXYXJuRW51bSApCi0gICAgIHsKLSAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIgIGlkOiAiICsgaXRlbS5nZXRJZCgpICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIgIHNob3J0bmFtZTogIiArIGl0ZW0uZ2V0U2hvcnROYW1lKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgbG9uZ25hbWU6ICIgKyBpdGVtLmdldExvbmdOYW1lKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgaXNEZWZhdWx0OiAiICsgaXRlbS5pc0RlZmF1bHQoKSApOyAvLyROT04tTkxTLTEkCi0gICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiIiApOyAvLyROT04tTkxTLTEkCi0gICAgIH0KLSAgIH0KLSAgIAotICAgcHJpdmF0ZSB2b2lkIGRpc3BsYXlQb2xpY3lOb2RlKCBJU2VydmljZVBvbGljeSBwb2xpY3kgKQotICAgewotICAgICBJU2VydmljZVBvbGljeSBwYXJlbnRQb2xpY3kgPSBwb2xpY3kuZ2V0UGFyZW50UG9saWN5KCk7Ci0gICAgIElEZXNjcmlwdG9yICAgICBkZXNjcmlwdG9yICAgPSBwb2xpY3kuZ2V0RGVzY3JpcHRvcigpOwotICAgICAKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiRm91bmQgcG9saWN5OiAiICsgcG9saWN5LmdldElkKCkgKyAiIHBhcmVudGlkOiIgKyAocGFyZW50UG9saWN5ID09IG51bGwgPyAibnVsbCIgOiBwYXJlbnRQb2xpY3kuZ2V0SWQoKSkgKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQKLSAgICAgCi0gICAgIGZvciggSVNlcnZpY2VQb2xpY3kgY2hpbGQgOiBwb2xpY3kuZ2V0Q2hpbGRyZW4oKSApCi0gICAgIHsKLSAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIgIGNoaWxkIGlkOiAiICsgY2hpbGQuZ2V0SWQoKSApOyAvLyROT04tTkxTLTEkCi0gICAgIH0KLSAgICAgCi0gICAgIExpc3Q8SVBvbGljeVJlbGF0aW9uc2hpcD4gcmVsYXRpb25zaGlwcyA9IHBvbGljeS5nZXRSZWxhdGlvbnNoaXBzKCk7Ci0gICAgIAotICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICAiICByZWxhdGlvbnNoaXBzOiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgICAgZm9yKCBJUG9saWN5UmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcCA6IHJlbGF0aW9uc2hpcHMgKQotICAgICB7Ci0gICAgICAgSVBvbGljeUVudW1lcmF0aW9uTGlzdCAgICAgICBzb3VyY2VMaXN0ICAgICA9IHJlbGF0aW9uc2hpcC5nZXRQb2xpY3lFbnVtZXJhdGlvbkxpc3QoKTsKLSAgICAgICBMaXN0PElQb2xpY3lFbnVtZXJhdGlvbkxpc3Q+IHRhcmdldExpc3QgICAgID0gcmVsYXRpb25zaGlwLmdldFJlbGF0ZWRQb2xpY2llcygpOwotICAgICAgIExpc3Q8SVN0YXRlRW51bWVyYXRpb25JdGVtPiAgc291cmNlRW51bUxpc3QgPSBzb3VyY2VMaXN0LmdldEVudW1lcmF0aW9uTGlzdCgpOwotICAgICAgIAotICAgICAgIGZvciggSVN0YXRlRW51bWVyYXRpb25JdGVtIGl0ZW0gOiBzb3VyY2VFbnVtTGlzdCApCi0gICAgICAgewotICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiICAgICIgKyBpdGVtLmdldElkKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgIH0KLSAgICAgICAKLSAgICAgICBmb3IoIElQb2xpY3lFbnVtZXJhdGlvbkxpc3QgcG9saWN5RW51bUxpc3QgOiB0YXJnZXRMaXN0ICkKLSAgICAgICB7Ci0gICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgcG9saWN5SWQgICAgICAgPSBwb2xpY3lFbnVtTGlzdC5nZXRQb2xpY3koKS5nZXRJZCgpOwotICAgICAgICAgTGlzdDxJU3RhdGVFbnVtZXJhdGlvbkl0ZW0+IHRhcmdldEVudW1MaXN0ID0gcG9saWN5RW51bUxpc3QuZ2V0RW51bWVyYXRpb25MaXN0KCk7Ci0gICAgICAgICAKLSAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgICBwb2xpY3kgaWQ6ICIgKyBwb2xpY3lJZCApOyAvLyROT04tTkxTLTEkCi0gICAgICAgICAKLSAgICAgICAgIGZvciggSVN0YXRlRW51bWVyYXRpb25JdGVtIHRhcmdldEl0ZW0gOiB0YXJnZXRFbnVtTGlzdCApCi0gICAgICAgICB7Ci0gICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgICAgIHRhcmdldCBlbnVtIGlkOiAiICsgdGFyZ2V0SXRlbS5nZXRJZCgpICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgICAgIH0KLSAgICAgICB9Ci0gICAgIH0KLSAgICAgICAgIAotICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJEZXNjcmlwdG9yOiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIgIHNob3J0IG5hbWU6ICIgKyBkZXNjcmlwdG9yLmdldFNob3J0TmFtZSgpICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiICBsb25nIG5hbWU6ICIgKyBkZXNjcmlwdG9yLmdldExvbmdOYW1lKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIgIGRlc2NyaXB0aW9uOiAiICsgZGVzY3JpcHRvci5nZXREZXNjcmlwdGlvbigpICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiICBjb250ZXh0IGhlbHA6ICIgKyBkZXNjcmlwdG9yLmdldENvbnRleHRIZWxwSWQoKSApOyAvLyROT04tTkxTLTEkCi0gICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgaWNvbiBwYXRoOiAiICsgZGVzY3JpcHRvci5nZXRJY29uUGF0aCgpICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiICBpY29uIHBhdGggYnVuZGxlIGlkOiAiICsgZGVzY3JpcHRvci5nZXRJY29uQnVuZGxlSWQoKSApOyAvLyROT04tTkxTLTEkCi0gICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIj09PSIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIGZvciggSVNlcnZpY2VQb2xpY3kgY2hpbGQgOiBwb2xpY3kuZ2V0Q2hpbGRyZW4oKSApCi0gICAgIHsKLSAgICAgICBkaXNwbGF5UG9saWN5Tm9kZSggY2hpbGQgKTsKLSAgICAgfSAgIAotICAgfQotICAgCi0gICBwdWJsaWMgdm9pZCB0ZXN0RW51bWVyYXRpb25zKCkKLSAgIHsKLSAgICAgU2VydmljZVBvbGljeVBsYXRmb3JtIHBsYXRmb3JtICA9IFNlcnZpY2VQb2xpY3lQbGF0Zm9ybS5nZXRJbnN0YW5jZSgpOwotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgaWQxICAgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggImlkMSIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgaWQyICAgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggImlkMiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgaWQzICAgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggImlkMyIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5U3RhdGVFbnVtICAgICAgc3RhdGUxICAgID0gaWQxLmdldFBvbGljeVN0YXRlRW51bSgpOwotICAgICBJUG9saWN5U3RhdGVFbnVtICAgICAgc3RhdGUyICAgID0gaWQyLmdldFBvbGljeVN0YXRlRW51bSgpOwotICAgICBJUG9saWN5U3RhdGVFbnVtICAgICAgc3RhdGUzICAgID0gaWQzLmdldFBvbGljeVN0YXRlRW51bSgpOwotICAgICBJU3RhdGVFbnVtZXJhdGlvbkl0ZW0gaXRlbTEgICAgID0gc3RhdGUxLmdldEN1cnJlbnRJdGVtKCk7Ci0gICAgIElTdGF0ZUVudW1lcmF0aW9uSXRlbSBpdGVtMiAgICAgPSBzdGF0ZTIuZ2V0Q3VycmVudEl0ZW0oKTsKLSAgICAgSVN0YXRlRW51bWVyYXRpb25JdGVtIGl0ZW0zICAgICA9IHN0YXRlMy5nZXRDdXJyZW50SXRlbSgpOwotICAgICAKLSAgICAgYXNzZXJ0VHJ1ZSggIlVuZXhwZWN0ZWQgc2hvcnRuYW1lOiIgKyBpdGVtMS5nZXRTaG9ydE5hbWUoKSwgaXRlbTEuZ2V0U2hvcnROYW1lKCkuZXF1YWxzKCAiaWdub3JlIikgKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgIGFzc2VydFRydWUoICJVbmV4cGVjdGVkIHNob3J0bmFtZToiICsgaXRlbTIuZ2V0U2hvcnROYW1lKCksIGl0ZW0yLmdldFNob3J0TmFtZSgpLmVxdWFscyggIndhcm4iKSApOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQKLSAgICAgYXNzZXJ0VHJ1ZSggIlVuZXhwZWN0ZWQgc2hvcnRuYW1lOiIgKyBpdGVtMy5nZXRTaG9ydE5hbWUoKSwgaXRlbTMuZ2V0U2hvcnROYW1lKCkuZXF1YWxzKCAiZXJyb3IiKSApOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiaWQxIHZhbHVlOiIgKyBpdGVtMS5nZXRTaG9ydE5hbWUoKSApOyAvLyROT04tTkxTLTEkCi0gICAgIFN5c3RlbS5vdXQucHJpbnRsbiggImlkMiB2YWx1ZToiICsgaXRlbTIuZ2V0U2hvcnROYW1lKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgfQotICAgCi0gICBwdWJsaWMgdm9pZCB0ZXN0UG9saWN5U3RhdGUoKQotICAgewotICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gcGxhdGZvcm0gID0gU2VydmljZVBvbGljeVBsYXRmb3JtLmdldEluc3RhbmNlKCk7Ci0gICAgIElTZXJ2aWNlUG9saWN5ICAgICAgICBpZDEgICAgICAgPSBwbGF0Zm9ybS5nZXRTZXJ2aWNlUG9saWN5KCAiaWQxIiApOyAvLyROT04tTkxTLTEkCi0gICAgIElQb2xpY3lTdGF0ZUVudW0gICAgICBlbnVtU3RhdGUgPSBpZDEuZ2V0UG9saWN5U3RhdGVFbnVtKCk7Ci0gICAgIElTdGF0ZUVudW1lcmF0aW9uSXRlbSBlbnVtSXRlbSAgPSBlbnVtU3RhdGUuZ2V0Q3VycmVudEl0ZW0oKTsKLSAgICAgU3RyaW5nICAgICAgICAgICAgICAgIGlnbm9yZUlkICA9ICJvcmcuZWNsaXBzZS53c3QuaWdub3JlIjsgLy8kTk9OLU5MUy0xJAotICAgICBTdHJpbmcgICAgICAgICAgICAgICAgd2FybklkICAgID0gIm9yZy5lY2xpcHNlLndzdC53YXJuIjsgLy8kTk9OLU5MUy0xJAotICAgICBTdHJpbmcgICAgICAgICAgICAgICAgZXJyb3JJZCAgID0gIm9yZy5lY2xpcHNlLndzdC5lcnJvciI7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIGFzc2VydFRydWUoICJEZWZhdWx0IGVudW0gbm90OiIgKyBpZ25vcmVJZCwgZW51bUl0ZW0uZ2V0SWQoKS5lcXVhbHMoIGlnbm9yZUlkICkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgICAgZW51bVN0YXRlLnNldEN1cnJlbnRJdGVtKCB3YXJuSWQgKTsKLSAgICAgZW51bUl0ZW0gPSBlbnVtU3RhdGUuZ2V0Q3VycmVudEl0ZW0oKTsKLSAgICAgCi0gICAgIGFzc2VydFRydWUoICJVcGRhdGVkIGVudW0gbm90OiIgKyB3YXJuSWQsIGVudW1JdGVtLmdldElkKCkuZXF1YWxzKCB3YXJuSWQgKSApOyAvLyROT04tTkxTLTEkCi0gICAgIAotICAgICBwbGF0Zm9ybS5kaXNjYXJkQ2hhbmdlcygpOwotICAgICBlbnVtSXRlbSA9IGVudW1TdGF0ZS5nZXRDdXJyZW50SXRlbSgpOwotICAgICAKLSAgICAgYXNzZXJ0VHJ1ZSggIkRpc2NhcmQgZW51bSBub3Q6IiArIGlnbm9yZUlkLCBlbnVtSXRlbS5nZXRJZCgpLmVxdWFscyggaWdub3JlSWQgKSApOyAvLyROT04tTkxTLTEkCi0gICAgIAotICAgICBlbnVtU3RhdGUuc2V0Q3VycmVudEl0ZW0oIGVycm9ySWQgKTsKLSAgICAgZW51bUl0ZW0gPSBlbnVtU3RhdGUuZ2V0Q3VycmVudEl0ZW0oKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkVycm9yIGVudW0gbm90OiIgKyBlcnJvcklkLCBlbnVtSXRlbS5nZXRJZCgpLmVxdWFscyggZXJyb3JJZCApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIHBsYXRmb3JtLmNvbW1pdENoYW5nZXMoKTsKLSAgICAgZW51bUl0ZW0gPSBlbnVtU3RhdGUuZ2V0Q3VycmVudEl0ZW0oKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkVycm9yIGVudW0gbm90OiIgKyBlcnJvcklkLCBlbnVtSXRlbS5nZXRJZCgpLmVxdWFscyggZXJyb3JJZCApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIElFY2xpcHNlUHJlZmVyZW5jZXMgcHJvamVjdFByZWZlcmVuY2VzID0gbmV3IEluc3RhbmNlU2NvcGUoKS5nZXROb2RlKCBTZXJ2aWNlUG9saWN5QWN0aXZhdG9yLlBMVUdJTl9JRCApOwotICAgICAKLSAgICAgdHJ5Ci0gICAgIHsKLSAgICAgICBTdHJpbmdbXSAgICAgICAgICAgIGtleXMgICAgICAgICAgICAgICA9IHByb2plY3RQcmVmZXJlbmNlcy5rZXlzKCk7Ci0gICAgIAotICAgICAgIGZvciggU3RyaW5nIGtleSA6IGtleXMgKQotICAgICAgIHsKLSAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIktleT0iICsga2V5ICsgIiB2YWx1ZT0iICsgcHJvamVjdFByZWZlcmVuY2VzLmdldCgga2V5LCAiIiApKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQKLSAgICAgICB9Ci0gICAgIH0KLSAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgICB7Ci0gICAgICAgYXNzZXJ0VHJ1ZSggIkV4Y2VwdGlvbiB0aHJvd24iICsgZXhjLmdldE1lc3NhZ2UoKSwgZmFsc2UgKTsgLy8kTk9OLU5MUy0xJAotICAgICB9Ci0gICB9Ci0gICAKLSAgIHB1YmxpYyB2b2lkIHRlc3RVbmlxdWVJZHMoKQotICAgewotICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gcGxhdGZvcm0gID0gU2VydmljZVBvbGljeVBsYXRmb3JtLmdldEluc3RhbmNlKCk7Ci0gICAgIElTZXJ2aWNlUG9saWN5ICAgICAgICBwb2xpY3kgICAgPSBwbGF0Zm9ybS5jcmVhdGVTZXJ2aWNlUG9saWN5KCBudWxsLCAic29tZWlkIiwgbnVsbCwgbnVsbCApOyAvLyROT04tTkxTLTEkCi0gICAgIAotICAgICBhc3NlcnRUcnVlKCBwb2xpY3kuZ2V0SWQoKS5lcXVhbHMoICJzb21laWQiICkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgICAgcG9saWN5ID0gcGxhdGZvcm0uY3JlYXRlU2VydmljZVBvbGljeSggbnVsbCwgInNvbWVpZCIsIG51bGwsIG51bGwgKTsgLy8kTk9OLU5MUy0xJAotICAgICBhc3NlcnRUcnVlKCBwb2xpY3kuZ2V0SWQoKS5lcXVhbHMoICJzb21laWQxIiApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIHBvbGljeSA9IHBsYXRmb3JtLmNyZWF0ZVNlcnZpY2VQb2xpY3koIG51bGwsICJzb21laWQiLCBudWxsLCBudWxsICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgYXNzZXJ0VHJ1ZSggcG9saWN5LmdldElkKCkuZXF1YWxzKCAic29tZWlkMiIgKSApOyAvLyROT04tTkxTLTEkCi0gICAgIAotICAgICBwb2xpY3kgPSBwbGF0Zm9ybS5jcmVhdGVTZXJ2aWNlUG9saWN5KCBudWxsLCAic29tZWlkMSIsIG51bGwsIG51bGwgKTsgLy8kTk9OLU5MUy0xJAotICAgICBhc3NlcnRUcnVlKCBwb2xpY3kuZ2V0SWQoKS5lcXVhbHMoICJzb21laWQzIiApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIHBvbGljeSA9IHBsYXRmb3JtLmNyZWF0ZVNlcnZpY2VQb2xpY3koIG51bGwsICJzb21lNTVpZDUiLCBudWxsLCBudWxsICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgYXNzZXJ0VHJ1ZSggcG9saWN5LmdldElkKCkuZXF1YWxzKCAic29tZTU1aWQ1IiApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIHBvbGljeSA9IHBsYXRmb3JtLmNyZWF0ZVNlcnZpY2VQb2xpY3koIG51bGwsICJzb21lNTVpZDUiLCBudWxsLCBudWxsICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgYXNzZXJ0VHJ1ZSggcG9saWN5LmdldElkKCkuZXF1YWxzKCAic29tZTU1aWQxIiApICk7IC8vJE5PTi1OTFMtMSQKLSAgIH0KLSAKLSAgIAotICBAU3VwcHJlc3NXYXJuaW5ncygicmVzdHJpY3Rpb24iKSAvLyROT04tTkxTLTEkCi0gIHB1YmxpYyB2b2lkIHRlc3RPbGRXU0lDb250ZXh0KCkKLSAgIHsKLSAgICAgU2VydmljZVBvbGljeVBsYXRmb3JtICAgIHBsYXRmb3JtICAgID0gU2VydmljZVBvbGljeVBsYXRmb3JtLmdldEluc3RhbmNlKCk7Ci0gICAgIElTZXJ2aWNlUG9saWN5ICAgICAgICAgICBhcFBvbGljeSAgICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koICJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbHMud3NpcHJvZmlsZWNvbXAud3NpYXAiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeVN0YXRlRW51bSAgICAgICAgIGFwU3RhdGUgICAgID0gYXBQb2xpY3kuZ2V0UG9saWN5U3RhdGVFbnVtKCk7Ci0gICAgIElTZXJ2aWNlUG9saWN5ICAgICAgICAgICBzc2JwUG9saWN5ICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koICJvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuc2VydmljZXBvbHMud3NpcHJvZmlsZWNvbXAud3Npc3NicCIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBQZXJzaXN0ZW50V1NJQVBDb250ZXh0ICAgYXBDb250ZXh0ICAgPSBuZXcgUGVyc2lzdGVudFdTSUFQQ29udGV4dCgpOwotICAgICBQZXJzaXN0ZW50V1NJU1NCUENvbnRleHQgc3NicENvbnRleHQgPSBuZXcgUGVyc2lzdGVudFdTSVNTQlBDb250ZXh0KCk7Ci0gICAgIElXb3Jrc3BhY2VSb290ICAgICAgICAgICByb290ICAgICAgICA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCk7Ci0gICAgIElQcm9qZWN0ICAgICAgICAgICAgICAgICBwcm9qZWN0ICAgICA9IHJvb3QuZ2V0UHJvamVjdCgiVGVzdFByb2plY3QiKTsgLy8kTk9OLU5MUy0xJAotICAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgaXRlbSAgICAgICAgPSBudWxsOwotICAgICAKLSAgICAgdHJ5Ci0gICAgIHsKLSAgICAgICBwcm9qZWN0LmNyZWF0ZShuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLSAgICAgfQotICAgICBjYXRjaCggQ29yZUV4Y2VwdGlvbiBleGMgKQotICAgICB7Ci0gICAgICAgYXNzZXJ0VHJ1ZSggIkNvcmUgZXhjZXB0aW9uOiIgKyBleGMuZ2V0TWVzc2FnZSgpLCBmYWxzZSApOyAgIC8vJE5PTi1OTFMtMSQKLSAgICAgfQotICAgICAKLSAgICAgSVBvbGljeVN0YXRlRW51bSAgYXBQcm9qU3RhdGUgICA9IGFwUG9saWN5LmdldFBvbGljeVN0YXRlRW51bSggcHJvamVjdCApOwotICAgICBJUG9saWN5U3RhdGVFbnVtICBzc2JwUHJvalN0YXRlID0gc3NicFBvbGljeS5nZXRQb2xpY3lTdGF0ZUVudW0oIHByb2plY3QgKTsKLSAgICAgCi0gICAgIC8vIEVuc3VyZSB0aGF0IHByb2plY3QgcHJlZmVyZW5jZXMgYXJlIGdvdHRlbiBmcm9tIHRoZSB3b3Jrc3BhY2UKLSAgICAgYXBTdGF0ZS5zZXRDdXJyZW50SXRlbSggIm9yZy5lY2xpcHNlLndzdC5zdWcuaWdub3JlIiApOyAvLyROT04tTkxTLTEkCi0gICAgIHBsYXRmb3JtLmNvbW1pdENoYW5nZXMoKTsKLSAgICAgYXBQcm9qU3RhdGUuc2V0Q3VycmVudEl0ZW0oICJvcmcuZWNsaXBzZS53c3Quc3VnLnN1Z2dlc3QiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgaXRlbSA9IGFwUHJvalN0YXRlLmdldEN1cnJlbnRJdGVtKCkuZ2V0SWQoKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkFwIHZhbHVlIG5vdCBpZ25vcmUsIGJ1dCBnb3QgIiArIGl0ZW0sIGl0ZW0uZXF1YWxzKCJvcmcuZWNsaXBzZS53c3Quc3VnLmlnbm9yZSIpKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgIAotICAgICBhcFN0YXRlLnNldEN1cnJlbnRJdGVtKCAib3JnLmVjbGlwc2Uud3N0LnN1Zy5yZXF1aXJlIiApOyAvLyROT04tTkxTLTEkCi0gICAgIHBsYXRmb3JtLmNvbW1pdENoYW5nZXMoKTsKLSAgICAgYXBQcm9qU3RhdGUuc2V0Q3VycmVudEl0ZW0oICJvcmcuZWNsaXBzZS53c3Quc3VnLmlnbm9yZSIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBpdGVtID0gYXBQcm9qU3RhdGUuZ2V0Q3VycmVudEl0ZW0oKS5nZXRJZCgpOwotICAgICBhc3NlcnRUcnVlKCAiQXAgdmFsdWUgbm90IHJlcXVpcmUsIGJ1dCBnb3QgIiArIGl0ZW0sIGl0ZW0uZXF1YWxzKCJvcmcuZWNsaXBzZS53c3Quc3VnLnJlcXVpcmUiKSk7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICAKLSAgICAgcGxhdGZvcm0uc2V0UHJvamVjdFByZWZlcmVuY2VzRW5hYmxlZCggcHJvamVjdCAsIHRydWUgKTsKLSAgICAgaXRlbSA9IGFwUHJvalN0YXRlLmdldEN1cnJlbnRJdGVtKCkuZ2V0SWQoKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkFwIHZhbHVlIG5vdCBpbmdvcmUsIGJ1dCBnb3QgIiArIGl0ZW0sIGl0ZW0uZXF1YWxzKCJvcmcuZWNsaXBzZS53c3Quc3VnLmlnbm9yZSIpKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgIAotICAgICBwbGF0Zm9ybS5jb21taXRDaGFuZ2VzKCBwcm9qZWN0ICk7Ci0gICAgIGl0ZW0gPSBhcFByb2pTdGF0ZS5nZXRDdXJyZW50SXRlbSgpLmdldElkKCk7Ci0gICAgIGFzc2VydFRydWUoICJBcCB2YWx1ZSBub3QgaW5nb3JlLCBidXQgZ290ICIgKyBpdGVtLCBpdGVtLmVxdWFscygib3JnLmVjbGlwc2Uud3N0LnN1Zy5pZ25vcmUiKSk7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICAKLSAgICAgU3RyaW5nIGFwQ29udGV4dFZhbHVlID0gYXBDb250ZXh0LmdldFByb2plY3RXU0lDb21wbGlhbmNlKCBwcm9qZWN0ICk7Ci0gICAgIGFzc2VydFRydWUoICJBcCBjb250ZXh0IG5vdCBpZ25vcmUsIGJ1dCAiICsgYXBDb250ZXh0VmFsdWUsIGFwQ29udGV4dFZhbHVlLmVxdWFscyggUGVyc2lzdGVudFdTSUNvbnRleHQuSUdOT1JFX05PTl9XU0kgKSApOyAvLyROT04tTkxTLTEkCi0gICAgIAotICAgICBhcFN0YXRlLnNldEN1cnJlbnRJdGVtKCAib3JnLmVjbGlwc2Uud3N0LnN1Zy5zdWdnZXN0IiApOyAvLyROT04tTkxTLTEkCi0gICAgIHBsYXRmb3JtLmNvbW1pdENoYW5nZXMoKTsKLSAgICAgYXBDb250ZXh0VmFsdWUgPSBhcENvbnRleHQuZ2V0UHJvamVjdFdTSUNvbXBsaWFuY2UoIHByb2plY3QgKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkFwIGNvbnRleHQgbm90IGlnbm9yZSwgYnV0ICIgKyBhcENvbnRleHRWYWx1ZSwgYXBDb250ZXh0VmFsdWUuZXF1YWxzKCBQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIHBsYXRmb3JtLnNldFByb2plY3RQcmVmZXJlbmNlc0VuYWJsZWQoIHByb2plY3QsIGZhbHNlICk7Ci0gICAgIGFwQ29udGV4dFZhbHVlID0gYXBDb250ZXh0LmdldFByb2plY3RXU0lDb21wbGlhbmNlKCBwcm9qZWN0ICk7Ci0gICAgIGFzc2VydFRydWUoICJBcCBjb250ZXh0IG5vdCBpZ25vcmUsIGJ1dCAiICsgYXBDb250ZXh0VmFsdWUsIGFwQ29udGV4dFZhbHVlLmVxdWFscyggUGVyc2lzdGVudFdTSUNvbnRleHQuV0FSTl9OT05fV1NJICkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgICAgYXBQcm9qU3RhdGUuc2V0Q3VycmVudEl0ZW0oICJvcmcuZWNsaXBzZS53c3Quc3VnLnJlcXVpcmUiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgcGxhdGZvcm0uY29tbWl0Q2hhbmdlcyggcHJvamVjdCApOwotICAgICBhcENvbnRleHRWYWx1ZSA9IGFwQ29udGV4dC5nZXRQcm9qZWN0V1NJQ29tcGxpYW5jZSggcHJvamVjdCApOwotICAgICBhc3NlcnRUcnVlKCAiQXAgY29udGV4dCBub3Qgc3VnZ2VzdCwgYnV0ICIgKyBhcENvbnRleHRWYWx1ZSwgYXBDb250ZXh0VmFsdWUuZXF1YWxzKCBQZXJzaXN0ZW50V1NJQ29udGV4dC5XQVJOX05PTl9XU0kgKSApOyAvLyROT04tTkxTLTEkCi0gICAgIAotICAgICBwbGF0Zm9ybS5zZXRQcm9qZWN0UHJlZmVyZW5jZXNFbmFibGVkKCBwcm9qZWN0LCB0cnVlICk7Ci0gICAgIGFwQ29udGV4dFZhbHVlID0gYXBDb250ZXh0LmdldFByb2plY3RXU0lDb21wbGlhbmNlKCBwcm9qZWN0ICk7Ci0gICAgIGFzc2VydFRydWUoICJBcCBjb250ZXh0IG5vdCByZXF1aXJlLCBidXQgIiArIGFwQ29udGV4dFZhbHVlLCBhcENvbnRleHRWYWx1ZS5lcXVhbHMoIFBlcnNpc3RlbnRXU0lDb250ZXh0LlNUT1BfTk9OX1dTSSApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIHNzYnBQcm9qU3RhdGUuc2V0Q3VycmVudEl0ZW0oICJvcmcuZWNsaXBzZS53c3Quc3VnLnN1Z2dlc3QiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIFN0cmluZyBzc2JwQ29udGV4dFZhbHVlID0gc3NicENvbnRleHQuZ2V0UHJvamVjdFdTSUNvbXBsaWFuY2UoIHByb2plY3QgKTsKLSAgICAgCi0gICAgIGFzc2VydFRydWUoICJBcCBjb250ZXh0IG5vdCByZXF1aXJlLCBidXQgIiArIGFwQ29udGV4dFZhbHVlLCBhcENvbnRleHRWYWx1ZS5lcXVhbHMoIFBlcnNpc3RlbnRXU0lDb250ZXh0LlNUT1BfTk9OX1dTSSApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgYXNzZXJ0VHJ1ZSggIlNTQlAgY29udGV4dCBub3Qgc3VnZ2VzdCwgYnV0ICIgKyBzc2JwQ29udGV4dFZhbHVlLCBzc2JwQ29udGV4dFZhbHVlLmVxdWFscyggUGVyc2lzdGVudFdTSUNvbnRleHQuV0FSTl9OT05fV1NJICkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgICAgc3NicFByb2pTdGF0ZS5zZXRDdXJyZW50SXRlbSggIm9yZy5lY2xpcHNlLndzdC5zdWcucmVxdWlyZSIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgICAgc3NicENvbnRleHRWYWx1ZSA9IHNzYnBDb250ZXh0LmdldFByb2plY3RXU0lDb21wbGlhbmNlKCBwcm9qZWN0ICk7Ci0gICAgIGFzc2VydFRydWUoICJBcCBjb250ZXh0IG5vdCByZXF1aXJlLCBidXQgIiArIGFwQ29udGV4dFZhbHVlLCBhcENvbnRleHRWYWx1ZS5lcXVhbHMoIFBlcnNpc3RlbnRXU0lDb250ZXh0LlNUT1BfTk9OX1dTSSApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgYXNzZXJ0VHJ1ZSggIlNTQlAgY29udGV4dCBub3QgcmVxdWlyZSwgYnV0ICIgKyBzc2JwQ29udGV4dFZhbHVlLCBzc2JwQ29udGV4dFZhbHVlLmVxdWFscyggUGVyc2lzdGVudFdTSUNvbnRleHQuU1RPUF9OT05fV1NJICkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgIH0KLSAgIAotICAgcHVibGljIHZvaWQgdGVzdE11dGFibGUoKQotICAgewotICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gICAgcGxhdGZvcm0gICAgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKTsKLSAgICAgSVNlcnZpY2VQb2xpY3kgICAgICAgICAgIGFwUG9saWN5ICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggIm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5zZXJ2aWNlcG9scy53c2lwcm9maWxlY29tcC53c2lhcCIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgICAgc3NicFBvbGljeSAgPSBwbGF0Zm9ybS5nZXRTZXJ2aWNlUG9saWN5KCAib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLnNlcnZpY2Vwb2xzLndzaXByb2ZpbGVjb21wLndzaXNzYnAiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVNlcnZpY2VQb2xpY3kgICAgICAgICAgIHdzaVBvbGljeSAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggIm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5zZXJ2aWNlcG9scy53c2lwcm9maWxlY29tcCIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgICAgYXNzZXJ0VHJ1ZSggIlJvb3Qgd3NpIHBvbGljeSBpcyBtdXRhYmxlIiwgIXdzaVBvbGljeS5nZXRQb2xpY3lTdGF0ZSgpLmlzTXV0YWJsZSgpICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgYXNzZXJ0VHJ1ZSggIkFwIHBvbGljeSBpcyBub3QgbXV0YWJsZSIsIGFwUG9saWN5LmdldFBvbGljeVN0YXRlKCkuaXNNdXRhYmxlKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgICBhc3NlcnRUcnVlKCAiU1NCUCBwb2xpY3kgaXMgbm90IG11dGFibGUiLCBzc2JwUG9saWN5LmdldFBvbGljeVN0YXRlKCkuaXNNdXRhYmxlKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgfQotICAgCi0gICBwdWJsaWMgdm9pZCB0ZXN0Q2hpbGRDaGFuZ2VMaXN0ZW5lcnMoKQotICAgewotICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gcGxhdGZvcm0gPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKTsKLSAgICAgQ2hpbGRDaGFuZ2VMaXN0ZW5lciAgIGxpc3RlbmVyID0gbmV3IENoaWxkQ2hhbmdlTGlzdGVuZXIoKTsKLSAgICAgCi0gICAgIHBsYXRmb3JtLmFkZENoaWxkQ2hhbmdlTGlzdGVuZXIobGlzdGVuZXIsIGZhbHNlICk7Ci0gICAgIGxpc3RlbmVyLmNoaWxkRXZlbnRPY2N1cmVkID0gZmFsc2U7Ci0gICAgIGxpc3RlbmVyLmlzQWRkZWQgPSBmYWxzZTsKLSAgICAgCi0gICAgIElTZXJ2aWNlUG9saWN5IHBhcmVudCA9IHBsYXRmb3JtLmNyZWF0ZVNlcnZpY2VQb2xpY3koIG51bGwsICJwYXJlbnRfaWQxIiwgbnVsbCwgbnVsbCApOwotICAgICAKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIG5vdCBjYWxsZWQiLCBsaXN0ZW5lci5jaGlsZEV2ZW50T2NjdXJlZCApOwotICAgICBhc3NlcnRUcnVlKCAiTGlzdGVuZXIgbm90IGFkZGVkIiwgbGlzdGVuZXIuaXNBZGRlZCApOwotICAgICAKLSAgICAgbGlzdGVuZXIuY2hpbGRFdmVudE9jY3VyZWQgPSBmYWxzZTsgICAKLSAgICAgbGlzdGVuZXIuaXNBZGRlZCA9IGZhbHNlOwotICAgICBJU2VydmljZVBvbGljeSBjaGlsZDEgPSBwbGF0Zm9ybS5jcmVhdGVTZXJ2aWNlUG9saWN5KCBwYXJlbnQsICJwYXJlbnRfaWQxIiwgbnVsbCwgbnVsbCApOwotICAgICAKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIG5vdCBjYWxsZWQiLCBsaXN0ZW5lci5jaGlsZEV2ZW50T2NjdXJlZCApOwotICAgICBhc3NlcnRUcnVlKCAiTGlzdGVuZXIgbm90IGFkZGVkIiwgbGlzdGVuZXIuaXNBZGRlZCApOwotICAgICAKLSAgICAgbGlzdGVuZXIuY2hpbGRFdmVudE9jY3VyZWQgPSBmYWxzZTsgICAKLSAgICAgbGlzdGVuZXIuaXNBZGRlZCA9IGZhbHNlOwotICAgICBsaXN0ZW5lci5jb3VudCAgID0gMDsKLSAgICAgSVNlcnZpY2VQb2xpY3kgY2hpbGQyID0gcGxhdGZvcm0uY3JlYXRlU2VydmljZVBvbGljeSggY2hpbGQxLCAicGFyZW50X2lkMSIsIG51bGwsIG51bGwgKTsKLSAgICAgSVNlcnZpY2VQb2xpY3kgY2hpbGQzID0gcGxhdGZvcm0uY3JlYXRlU2VydmljZVBvbGljeSggY2hpbGQyLCAicGFyZW50X2lkMSIsIG51bGwsIG51bGwgKTsKLSAgICAgCi0gICAgIGFzc2VydFRydWUoICJMaXN0ZW5lciBub3QgY2FsbGVkIiwgbGlzdGVuZXIuY2hpbGRFdmVudE9jY3VyZWQgKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIG5vdCBhZGRlZCIsIGxpc3RlbmVyLmlzQWRkZWQgKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIGNvdW50IG5vdCAyIiwgbGlzdGVuZXIuY291bnQgPT0gMiApOwotICAgICAKLSAgICAgbGlzdGVuZXIuY2hpbGRFdmVudE9jY3VyZWQgPSBmYWxzZTsgICAKLSAgICAgbGlzdGVuZXIuaXNBZGRlZCA9IHRydWU7Ci0gICAgIGxpc3RlbmVyLmNvdW50ICAgPSAwOwotICAgICAKLSAgICAgY2hpbGQyLnJlbW92ZUNoaWxkKCBjaGlsZDMgKTsKLSAgICAgCi0gICAgIGFzc2VydFRydWUoICJMaXN0ZW5lciBub3QgY2FsbGVkIiwgbGlzdGVuZXIuY2hpbGRFdmVudE9jY3VyZWQgKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIG5vdCByZW1vdmVkIiwgIWxpc3RlbmVyLmlzQWRkZWQgKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIGNvdW50IG5vdCAxIiwgbGlzdGVuZXIuY291bnQgPT0gMSApOwotICAgICAKLSAgICAgbGlzdGVuZXIuY2hpbGRFdmVudE9jY3VyZWQgPSBmYWxzZTsgICAKLSAgICAgbGlzdGVuZXIuaXNBZGRlZCA9IHRydWU7Ci0gICAgIGxpc3RlbmVyLmNvdW50ICAgPSAwOwotICAgICAKLSAgICAgLy8gU2hvdWxkIHJlbW92ZSBwYXJlbnQsIGNoaWxkMSwgYW5kIGNoaWxkMgotICAgICBwbGF0Zm9ybS5yZW1vdmVTZXJ2aWNlUG9saWN5KCBwYXJlbnQgKTsKLSAgICAgCi0gICAgIGFzc2VydFRydWUoICJMaXN0ZW5lciBub3QgY2FsbGVkIiwgbGlzdGVuZXIuY2hpbGRFdmVudE9jY3VyZWQgKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIG5vdCByZW1vdmVkIiwgIWxpc3RlbmVyLmlzQWRkZWQgKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIGNvdW50IG5vdCAzIiwgbGlzdGVuZXIuY291bnQgPT0gMyApOwotICAgICAKLSAgICAgcGxhdGZvcm0ucmVtb3ZlQ2hpbGRDaGFuZ2VMaXN0ZW5lciggbGlzdGVuZXIsIGZhbHNlICk7Ci0gICAgIAotICAgICBsaXN0ZW5lci5jaGlsZEV2ZW50T2NjdXJlZCA9IGZhbHNlOyAgIAotICAgICBsaXN0ZW5lci5pc0FkZGVkID0gdHJ1ZTsKLSAgICAgbGlzdGVuZXIuY291bnQgICA9IDA7Ci0gICAgIAotICAgICBwYXJlbnQgPSBwbGF0Zm9ybS5jcmVhdGVTZXJ2aWNlUG9saWN5KCBudWxsLCAicGFyZW50X2lkMSIsIG51bGwsIG51bGwgKTsKLSAgICAgY2hpbGQxID0gcGxhdGZvcm0uY3JlYXRlU2VydmljZVBvbGljeSggcGFyZW50LCAicGFyZW50X2lkMSIsIG51bGwsIG51bGwgKTsKLSAgICAgCi0gICAgIGFzc2VydFRydWUoICJMaXN0ZW5lciBjYWxsZWQiLCAhbGlzdGVuZXIuY2hpbGRFdmVudE9jY3VyZWQgKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIGlzYWRkZWQgY2hhbmdlZCIsIGxpc3RlbmVyLmlzQWRkZWQgKTsKLSAgICAgYXNzZXJ0VHJ1ZSggIkxpc3RlbmVyIGNvdW50IG5vdCAwIiwgbGlzdGVuZXIuY291bnQgPT0gMCApOwotICAgfQotICAgCi0gICBwdWJsaWMgdm9pZCB0ZXN0U3RhdGUoKQotICAgewotICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gcGxhdGZvcm0gPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKTsKLSAgICAgSVNlcnZpY2VQb2xpY3kgICAgICAgIGlkMiAgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggImlkMiIgKTsKLSAgICAgU3RyaW5nICAgICAgICAgICAgICAgIHZhbHVlICAgID0gaWQyLmdldFBvbGljeVN0YXRlKCkuZ2V0VmFsdWUoICJpZDJfa2V5IiApOwotICAgICAKLSAgICAgYXNzZXJ0VHJ1ZSggIkV4cGVjdGVkIHN0YXRlIHZhbHVlIHRvIGJlIGlkMl92YWx1ZS4iLCB2YWx1ZS5lcXVhbHMoICJpZDJfdmFsdWUiICkgKTsKLSAgIH0KLSAgIAotICAgcHJpdmF0ZSBjbGFzcyBDaGlsZENoYW5nZUxpc3RlbmVyIGltcGxlbWVudHMgSVBvbGljeUNoaWxkQ2hhbmdlTGlzdGVuZXIKLSAgIHsKLSAgICAgcHVibGljIGJvb2xlYW4gY2hpbGRFdmVudE9jY3VyZWQgPSBmYWxzZTsKLSAgICAgcHVibGljIGJvb2xlYW4gaXNBZGRlZCA9IGZhbHNlOwotICAgICBwdWJsaWMgaW50ICAgICBjb3VudCA9IDA7OwotICAgICAKLSAgICAgcHVibGljIHZvaWQgY2hpbGRDaGFuZ2UoTGlzdDxJU2VydmljZVBvbGljeT4gY2hpbGRMaXN0LCBMaXN0PEJvb2xlYW4+IGFkZGVkTGlzdCkKLSAgICAgewotICAgICAgIGNoaWxkRXZlbnRPY2N1cmVkID0gdHJ1ZTsKLSAgICAgICBpc0FkZGVkID0gYWRkZWRMaXN0LmdldCgwKTsKLSAgICAgICBjb3VudCsrOwotICAgICB9Ci0gICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvTWFpblVJVGVzdGVyLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvTWFpblVJVGVzdGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYWU1NTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Qvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS90ZXN0L01haW5VSVRlc3Rlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Q7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS5JRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSUZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LlNlcnZpY2VQb2xpY3lQbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVBvbGljeU9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkuSVF1aWNrRml4QWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JUXVpY2tGaXhBY3Rpb25JbmZvOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5TZXJ2aWNlUG9saWN5UGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudWkudXRpbHMuQWN0aXZpdHlVdGlsczsKLQotcHVibGljIGNsYXNzIE1haW5VSVRlc3RlciBleHRlbmRzIFRlc3RDYXNlCi17ICAKLSAgIAotICAgcHVibGljIHZvaWQgdGVzdEV4dGVuc2lvbnMoKQotICAgewotICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSSBwbGF0Zm9ybVVJICAgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5nZXRJbnN0YW5jZSgpOwotICAgICBMaXN0PElQb2xpY3lPcGVyYXRpb24+ICBvcGVyYXRpb25zICAgPSBwbGF0Zm9ybVVJLmdldEFsbE9wZXJhdGlvbnMoKTsKLSAgICAgCi0gICAgIGZvciggSVBvbGljeU9wZXJhdGlvbiBvcGVyYXRpb24gOiBvcGVyYXRpb25zICkKLSAgICAgewotICAgICAgIGRpc3BsYXlPcGVyYXRpb24oIG9wZXJhdGlvbiApOwotICAgICB9ICAKLSAgIH0KLSAgIAotICAgcHVibGljIHZvaWQgdGVzdE9wZXJhdGlvbkNhY2hlKCkKLSAgIHsKLSAgICAgU2VydmljZVBvbGljeVBsYXRmb3JtICAgcGxhdGZvcm0gICA9IFNlcnZpY2VQb2xpY3lQbGF0Zm9ybS5nZXRJbnN0YW5jZSgpOwotICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSSBwbGF0Zm9ybVVJID0gU2VydmljZVBvbGljeVBsYXRmb3JtVUkuZ2V0SW5zdGFuY2UoKTsKLSAgICAgSVNlcnZpY2VQb2xpY3kgICAgICAgICAgaWQxICAgICAgICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koICJpZDEiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVNlcnZpY2VQb2xpY3kgICAgICAgICAgaWQyICAgICAgICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koICJpZDIiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVNlcnZpY2VQb2xpY3kgICAgICAgICAgaWQzICAgICAgICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koICJpZDMiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVNlcnZpY2VQb2xpY3kgICAgICAgICAgaWQ0ICAgICAgICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koICJpZDQiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3AxX2lkMiAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDIsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjEiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3AxX2lkMyAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDMsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjEiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3AyX2lkMSAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDEsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjIiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3AyX2lkMiAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDIsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjIiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3AyX2lkMyAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDMsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjIiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3AyX2lkNCAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDQsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjIiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3AzX2lkNCAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDQsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjMiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3A0X2lkMSAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDEsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjQiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3A0X2lkMiAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDIsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjQiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVBvbGljeU9wZXJhdGlvbiAgICAgICAgb3A0X2lkMyAgICA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uKCBpZDMsICJzZXJ2aWNlLnVpLm9wZXJhdGlvbjQiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gbGlzdDEgPSBwbGF0Zm9ybVVJLmdldE9wZXJhdGlvbnMoIGlkMSwgdHJ1ZSApOwotICAgICBMaXN0PElQb2xpY3lPcGVyYXRpb24+IGxpc3QyID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb25zKCBpZDIsIHRydWUgKTsKLSAgICAgTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBsaXN0MyA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9ucyggaWQzLCB0cnVlICk7Ci0gICAgIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gbGlzdDQgPSBwbGF0Zm9ybVVJLmdldE9wZXJhdGlvbnMoIGlkNCwgdHJ1ZSApOwotICAgICAKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiXG5EaXNwbGF5IGxpc3RzIiApOyAvLyROT04tTkxTLTEkCi0gICAgIGRpc3BsYXlMaXN0KCAiTGlzdDEiLCBsaXN0MSApOyAvLyROT04tTkxTLTEkCi0gICAgIGRpc3BsYXlMaXN0KCAiTGlzdDIiLCBsaXN0MiApOyAvLyROT04tTkxTLTEkCi0gICAgIGRpc3BsYXlMaXN0KCAiTGlzdDMiLCBsaXN0MyApOyAvLyROT04tTkxTLTEkCi0gICAgIGRpc3BsYXlMaXN0KCAiTGlzdDQiLCBsaXN0NCApOyAvLyROT04tTkxTLTEkCi0gICAgIAotICAgICBjaGVja0NvbnRlbnRzKCAiTGlzdDEiLCBsaXN0MSwgbmV3IElQb2xpY3lPcGVyYXRpb25bXXsgb3AyX2lkMSwgb3A0X2lkMSB9ICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgY2hlY2tDb250ZW50cyggIkxpc3QyIiwgbGlzdDIsIG5ldyBJUG9saWN5T3BlcmF0aW9uW117IG9wMV9pZDIsIG9wMl9pZDIsIG9wNF9pZDIgfSApOyAvLyROT04tTkxTLTEkCi0gICAgIGNoZWNrQ29udGVudHMoICJMaXN0MyIsIGxpc3QzLCBuZXcgSVBvbGljeU9wZXJhdGlvbltdeyBvcDFfaWQzLCBvcDJfaWQzLCBvcDRfaWQzIH0gKTsgLy8kTk9OLU5MUy0xJAotICAgICBjaGVja0NvbnRlbnRzKCAiTGlzdDQiLCBsaXN0NCwgbmV3IElQb2xpY3lPcGVyYXRpb25bXXsgb3AyX2lkNCwgb3AzX2lkNCB9ICk7IC8vJE5PTi1OTFMtMSQKLSAgIH0KLSAgIAotICAgcHVibGljIHZvaWQgdGVzdEVuYWJsZWRPcGVyYXRpb25zKCkKLSAgIHsKLSAgICAgU2VydmljZVBvbGljeVBsYXRmb3JtICAgcGxhdGZvcm0gICAgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKTsKLSAgICAgU2VydmljZVBvbGljeVBsYXRmb3JtVUkgcGxhdGZvcm1VSSAgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5nZXRJbnN0YW5jZSgpOwotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgICBpZDEgICAgICAgICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koICJpZDEiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVNlcnZpY2VQb2xpY3kgICAgICAgICAgaWQyICAgICAgICAgPSBwbGF0Zm9ybS5nZXRTZXJ2aWNlUG9saWN5KCAiaWQyIiApOyAvLyROT04tTkxTLTEkCi0gICAgIElTZXJ2aWNlUG9saWN5ICAgICAgICAgIGlkMyAgICAgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggImlkMyIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgICBpZDQgICAgICAgICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koICJpZDQiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgTGlzdDxJU2VydmljZVBvbGljeT4gICAgcG9saWN5TGlzdDEgPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PigpOwotICAgICBMaXN0PElTZXJ2aWNlUG9saWN5PiAgICBwb2xpY3lMaXN0MiA9IG5ldyBWZWN0b3I8SVNlcnZpY2VQb2xpY3k+KCk7Ci0gICAgIElQb2xpY3lPcGVyYXRpb24gICAgICAgIG9wMSAgICAgICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkNCwgInNlcnZpY2UudWkub3BlcmF0aW9uMyIgKTsgLy8kTk9OLU5MUy0xJAotICAgICAKLSAgICAgcG9saWN5TGlzdDEuYWRkKCBpZDEgKTsKLSAgICAgcG9saWN5TGlzdDEuYWRkKCBpZDIgKTsKLSAgICAgcG9saWN5TGlzdDEuYWRkKCBpZDMgKTsKLSAgICAgcG9saWN5TGlzdDEuYWRkKCBpZDQgKTsKLSAgICAgcG9saWN5TGlzdDIuYWRkKCBpZDQgKTsKLSAgICAgCi0gICAgIGFzc2VydFRydWUoICJFeHBlY3RlZCBvcGVyYXRpb24gdG8gbm90IGJlIGVuYWJsZWQiLCAhb3AxLmlzRW5hYmxlZCggcG9saWN5TGlzdDEgKSApOyAvLyROT04tTkxTLTEkCi0gICAgIGFzc2VydFRydWUoICJFeHBlY3RlZCBvcGVyYXRpb24gdG8gYmUgZW5hYmxlZCIsIG9wMS5pc0VuYWJsZWQoIHBvbGljeUxpc3QyICkgKTsgLy8kTk9OLU5MUy0xJAotICAgfQotICAgCi0gICBwdWJsaWMgdm9pZCB0ZXN0UXVpY2tGaXhBY3Rpb25zKCkKLSAgIHsKLSAgICAgU2VydmljZVBvbGljeVBsYXRmb3JtICAgICAgcGxhdGZvcm0gICAgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKTsKLSAgICAgU2VydmljZVBvbGljeVBsYXRmb3JtVUkgICAgcGxhdGZvcm1VSSAgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5nZXRJbnN0YW5jZSgpOwotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgICAgICBpZDEgICAgICAgICA9IHBsYXRmb3JtLmdldFNlcnZpY2VQb2xpY3koICJpZDEiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgSVN0YXR1cyAgICAgICAgICAgICAgICAgICAgc3RhdHVzMSAgICAgPSBuZXcgU3RhdHVzKCBJU3RhdHVzLkVSUk9SLCAib3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3QiLCAxLCAic29tZSBlcnJvciIsIG51bGwgKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0gICAgIElTdGF0dXMgICAgICAgICAgICAgICAgICAgIHN0YXR1czIgICAgID0gbmV3IFN0YXR1cyggSVN0YXR1cy5FUlJPUiwgIm9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0IiwgMiwgInNvbWUgZXJyb3IiLCBudWxsICk7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICBMaXN0PElRdWlja0ZpeEFjdGlvbkluZm8+ICBmaXhMaXN0MSAgICA9IHBsYXRmb3JtVUkuZ2V0UXVpY2tGaXhlcyggc3RhdHVzMSApOwotICAgICBMaXN0PElRdWlja0ZpeEFjdGlvbkluZm8+ICBmaXhMaXN0MiAgICA9IHBsYXRmb3JtVUkuZ2V0UXVpY2tGaXhlcyggc3RhdHVzMiApOwotICAgICAKLSAgICAgYXNzZXJ0VHJ1ZSggIkV4cGVjdGluZyB0d28gcXVpY2sgZml4ZXMiLCBmaXhMaXN0MS5zaXplKCkgPT0gMiApOyAvLyROT04tTkxTLTEkCi0gICAgIGFzc2VydFRydWUoICJFeHBlY3Rpb24gb25lIHF1aWNrIGZpeCIsIGZpeExpc3QyLnNpemUoKSA9PSAxICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIGZvciggSVF1aWNrRml4QWN0aW9uSW5mbyBhY3Rpb25JbmZvIDogZml4TGlzdDEgKQotICAgICB7Ci0gICAgICAgSVF1aWNrRml4QWN0aW9uIGFjdGlvbiA9IGFjdGlvbkluZm8uZ2V0QWN0aW9uKCk7Ci0gICAgICAgaWQxLnNldFN0YXR1cyggc3RhdHVzMSApOwotICAgICAgIAotICAgICAgIGFzc2VydFRydWUoICJTdGF0dXMgaXMgbm90IE9LIiwgIWlkMS5nZXRTdGF0dXMoKS5pc09LKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgIGFjdGlvbi5hY3Rpb24oIGlkMSApOwotICAgICAgIGFzc2VydFRydWUoICJTdGF0dXMgaXMgT2sgIiwgaWQxLmdldFN0YXR1cygpLmlzT0soKSApOyAvLyROT04tTkxTLTEkCi0gICAgIH0KLSAgICAgCi0gICAgIGZvciggSVF1aWNrRml4QWN0aW9uSW5mbyBhY3Rpb25JbmZvIDogZml4TGlzdDIgKQotICAgICB7Ci0gICAgICAgSVF1aWNrRml4QWN0aW9uIGFjdGlvbiA9IGFjdGlvbkluZm8uZ2V0QWN0aW9uKCk7Ci0gICAgICAgaWQxLnNldFN0YXR1cyggc3RhdHVzMiApOwotICAgICAgIAotICAgICAgIGFzc2VydFRydWUoICJTdGF0dXMgaXMgbm90IE9LIiwgIWlkMS5nZXRTdGF0dXMoKS5pc09LKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgIGFjdGlvbi5hY3Rpb24oIGlkMSApOwotICAgICAgIGFzc2VydFRydWUoICJTdGF0dXMgaXMgT2sgIiwgaWQxLmdldFN0YXR1cygpLmlzT0soKSApOyAvLyROT04tTkxTLTEkCi0gICAgIH0KLSAgIH0KLSAgIAotICAgcHVibGljIHZvaWQgdGVzdEFjdGl2aXRpZXNGaWx0ZXIoKQotICAgewotICAgICBJRmlsdGVyICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzRmlsdGVyID0gQWN0aXZpdHlVdGlscy5nZXRDdXJyZW50QWN0aXZpdGllc0ZpbHRlcigpOwotICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gICAgICBwbGF0Zm9ybSAgICAgICAgID0gU2VydmljZVBvbGljeVBsYXRmb3JtLmdldEluc3RhbmNlKCk7Ci0gICAgIExpc3Q8SVNlcnZpY2VQb2xpY3k+ICAgICAgIHBvbGljeUxpc3QgICAgICAgPSBwbGF0Zm9ybS5nZXRSb290U2VydmljZVBvbGljaWVzKCBhY3Rpdml0aWVzRmlsdGVyICk7Ci0gICAgICAgICAKLSAgICAgZGlzcGxheVBvbGljaWVzKCBwb2xpY3lMaXN0ICk7Ci0gICB9Ci0gICAKLSAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQotICBwdWJsaWMgdm9pZCB0ZXN0R2V0T3BlcmF0aW9uc0xpc3QoKQotICAgewotICAgICBTZXJ2aWNlUG9saWN5UGxhdGZvcm0gICBwbGF0Zm9ybSAgID0gU2VydmljZVBvbGljeVBsYXRmb3JtLmdldEluc3RhbmNlKCk7Ci0gICAgIFNlcnZpY2VQb2xpY3lQbGF0Zm9ybVVJIHBsYXRmb3JtVUkgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm1VSS5nZXRJbnN0YW5jZSgpOwotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgICBpZDEgICAgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggImlkMSIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgICBpZDIgICAgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggImlkMiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgICBpZDMgICAgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggImlkMyIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJU2VydmljZVBvbGljeSAgICAgICAgICBpZDQgICAgICAgID0gcGxhdGZvcm0uZ2V0U2VydmljZVBvbGljeSggImlkNCIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDFfaWQyICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkMiwgInNlcnZpY2UudWkub3BlcmF0aW9uMSIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDFfaWQzICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkMywgInNlcnZpY2UudWkub3BlcmF0aW9uMSIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDJfaWQxICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkMSwgInNlcnZpY2UudWkub3BlcmF0aW9uMiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDJfaWQyICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkMiwgInNlcnZpY2UudWkub3BlcmF0aW9uMiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDJfaWQzICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkMywgInNlcnZpY2UudWkub3BlcmF0aW9uMiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDJfaWQ0ICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkNCwgInNlcnZpY2UudWkub3BlcmF0aW9uMiIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDNfaWQ0ICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkNCwgInNlcnZpY2UudWkub3BlcmF0aW9uMyIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDRfaWQxICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkMSwgInNlcnZpY2UudWkub3BlcmF0aW9uNCIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDRfaWQyICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkMiwgInNlcnZpY2UudWkub3BlcmF0aW9uNCIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBJUG9saWN5T3BlcmF0aW9uICAgICAgICBvcDRfaWQzICAgID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb24oIGlkMywgInNlcnZpY2UudWkub3BlcmF0aW9uNCIgKTsgLy8kTk9OLU5MUy0xJAotICAgICBMaXN0PElTZXJ2aWNlUG9saWN5PiAgICBpZExpc3QxICAgID0gbnVsbDsKLSAgICAgTGlzdDxJU2VydmljZVBvbGljeT4gICAgaWRMaXN0MiAgICA9IG51bGw7Ci0gICAgIExpc3Q8SVNlcnZpY2VQb2xpY3k+ICAgIGlkTGlzdDMgICAgPSBudWxsOwotICAgICBMaXN0PElTZXJ2aWNlUG9saWN5PiAgICBpZExpc3Q0ICAgID0gbnVsbDsKLSAgICAgCi0gICAgIExpc3Q8TGlzdDxJUG9saWN5T3BlcmF0aW9uPj4gY2hlY2tMaXN0MSA9IG51bGw7Ci0gICAgIExpc3Q8TGlzdDxJUG9saWN5T3BlcmF0aW9uPj4gY2hlY2tMaXN0MiA9IG51bGw7Ci0gICAgIExpc3Q8TGlzdDxJUG9saWN5T3BlcmF0aW9uPj4gY2hlY2tMaXN0MyA9IG51bGw7Ci0gICAgIExpc3Q8TGlzdDxJUG9saWN5T3BlcmF0aW9uPj4gY2hlY2tMaXN0NCA9IG51bGw7Ci0gICAgIAotICAgICBjaGVja0xpc3QxID0gbGwoIGwob3AyX2lkMSksIGwob3A0X2lkMSkgKTsKLSAgICAgY2hlY2tMaXN0MiA9IGxsKCBsKG9wMV9pZDIpLCBsKG9wMl9pZDEsIG9wMl9pZDIpLCBsKG9wNF9pZDEsIG9wNF9pZDIpICk7Ci0gICAgIGNoZWNrTGlzdDMgPSBsbCggbChvcDFfaWQyLCBvcDFfaWQzKSwgbChvcDJfaWQxLCBvcDJfaWQyLCBvcDJfaWQzKSwgbChvcDRfaWQxLCBvcDRfaWQyLCBvcDRfaWQzKSApOwotICAgICBjaGVja0xpc3Q0ID0gbGwoIGwob3AxX2lkMiwgb3AxX2lkMyksIGwob3AyX2lkMSwgb3AyX2lkMiwgb3AyX2lkMywgb3AyX2lkNCksIGwob3AzX2lkNCksIGwob3A0X2lkMSwgb3A0X2lkMiwgb3A0X2lkMykgKTsKLSAgICAgCi0gICAgIGlkTGlzdDEgPSBBcnJheXMuYXNMaXN0KCBuZXcgSVNlcnZpY2VQb2xpY3lbXXsgaWQxIH0gKTsKLSAgICAgaWRMaXN0MiA9IEFycmF5cy5hc0xpc3QoIG5ldyBJU2VydmljZVBvbGljeVtdeyBpZDEsIGlkMiB9ICk7Ci0gICAgIGlkTGlzdDMgPSBBcnJheXMuYXNMaXN0KCBuZXcgSVNlcnZpY2VQb2xpY3lbXXsgaWQxLCBpZDIsIGlkMyB9ICk7Ci0gICAgIGlkTGlzdDQgPSBBcnJheXMuYXNMaXN0KCBuZXcgSVNlcnZpY2VQb2xpY3lbXXsgaWQxLCBpZDIsIGlkMywgaWQ0IH0gKTsKLSAgICAgCi0gICAgIExpc3Q8TGlzdDxJUG9saWN5T3BlcmF0aW9uPj4gb3BMaXN0MSA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uc0xpc3QoIGlkTGlzdDEsIHRydWUgKTsKLSAgICAgTGlzdDxMaXN0PElQb2xpY3lPcGVyYXRpb24+PiBvcExpc3QyID0gcGxhdGZvcm1VSS5nZXRPcGVyYXRpb25zTGlzdCggaWRMaXN0MiwgdHJ1ZSApOwotICAgICBMaXN0PExpc3Q8SVBvbGljeU9wZXJhdGlvbj4+IG9wTGlzdDMgPSBwbGF0Zm9ybVVJLmdldE9wZXJhdGlvbnNMaXN0KCBpZExpc3QzLCB0cnVlICk7Ci0gICAgIExpc3Q8TGlzdDxJUG9saWN5T3BlcmF0aW9uPj4gb3BMaXN0NCA9IHBsYXRmb3JtVUkuZ2V0T3BlcmF0aW9uc0xpc3QoIGlkTGlzdDQsIHRydWUgKTsKLSAgICAgCi0gICAgIHZlcmlmeUxpc3RzKCAiTGlzdDEiLCBvcExpc3QxLCBjaGVja0xpc3QxICk7Ci0gICAgIHZlcmlmeUxpc3RzKCAiTGlzdDIiLCBvcExpc3QyLCBjaGVja0xpc3QyICk7Ci0gICAgIHZlcmlmeUxpc3RzKCAiTGlzdDMiLCBvcExpc3QzLCBjaGVja0xpc3QzICk7Ci0gICAgIHZlcmlmeUxpc3RzKCAiTGlzdDQiLCBvcExpc3Q0LCBjaGVja0xpc3Q0ICk7Ci0gICB9Ci0gICAKLSAgIHByaXZhdGUgTGlzdDxMaXN0PElQb2xpY3lPcGVyYXRpb24+PiBsbCggTGlzdDxJUG9saWN5T3BlcmF0aW9uPi4uLiBvcExpc3QgKQotICAgewotICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdCggb3BMaXN0ICk7Ci0gICB9Ci0gICAKLSAgIHByaXZhdGUgTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBsKCBJUG9saWN5T3BlcmF0aW9uLi4uIG9wTGlzdCApCi0gICB7Ci0gICAgIHJldHVybiBBcnJheXMuYXNMaXN0KCBvcExpc3QgKTsKLSAgIH0KLSAgIAotICAgcHJpdmF0ZSB2b2lkIHZlcmlmeUxpc3RzKCBTdHJpbmcgbGlzdE5hbWUsIExpc3Q8TGlzdDxJUG9saWN5T3BlcmF0aW9uPj4gbGlzdDEsIExpc3Q8TGlzdDxJUG9saWN5T3BlcmF0aW9uPj4gbGlzdDIgKQotICAgewotICAgICBhc3NlcnRUcnVlKCBsaXN0TmFtZSArICIgZG9lcyBub3QgaGF2ZSB0aGUgc2FtZSBzaXplLiIsIGxpc3QxLnNpemUoKSA9PSBsaXN0Mi5zaXplKCkgKTsKLSAgICAgICAgICAgICAKLSAgICAgZm9yKCBpbnQgbGlzdEluZGV4ID0gMCA7IGxpc3RJbmRleCA8IGxpc3QxLnNpemUoKTsgbGlzdEluZGV4KysgKQotICAgICB7Ci0gICAgICAgTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBwb2xpY3lMaXN0MSA9IGxpc3QxLmdldCggbGlzdEluZGV4ICk7Ci0gICAgICAgTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBwb2xpY3lMaXN0MiA9IGZpbmRMaXN0KCBwb2xpY3lMaXN0MS5nZXQoMCkuZ2V0SWQoKSwgbGlzdDIgKTsKLSAgICAgICAKLSAgICAgICBhc3NlcnRUcnVlKCBsaXN0TmFtZSArICIgbmVzdGVkIGxpc3QgYXQgaW5kZXggIiArIGxpc3RJbmRleCArICIgaXMgbm90IHRoZSBzYW1lIHNpemUuIiwgcG9saWN5TGlzdDEuc2l6ZSgpID09IHBvbGljeUxpc3QyLnNpemUoKSApOwotICAgICAgIAotICAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBwb2xpY3lMaXN0MS5zaXplKCk7IGluZGV4KysgKQotICAgICAgIHsKLSAgICAgICAgIElQb2xpY3lPcGVyYXRpb24gb3AxID0gcG9saWN5TGlzdDEuZ2V0KCBpbmRleCApOwotICAgICAgICAgCi0gICAgICAgICBhc3NlcnRUcnVlKCBsaXN0TmFtZSArICIgb3BlcmF0aW9uIG5vdCBmb3VuZCIsIGZpbmRPcCggb3AxLCBwb2xpY3lMaXN0MiApICk7Ci0gICAgICAgfQotICAgICB9ICAKLSAgIH0KLSAgCi0gICBwcml2YXRlIGJvb2xlYW4gZmluZE9wKCBJUG9saWN5T3BlcmF0aW9uIG9wLCBMaXN0PElQb2xpY3lPcGVyYXRpb24+IGxpc3QgKQotICAgewotICAgICBib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotICAgICAKLSAgICAgZm9yKCBJUG9saWN5T3BlcmF0aW9uIGZvdW5kT3AgOiBsaXN0ICkKLSAgICAgewotICAgICAgIGlmKCBvcCA9PSBmb3VuZE9wICkKLSAgICAgICB7Ci0gICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAgYnJlYWs7Ci0gICAgICAgfQotICAgICB9Ci0gICAgIAotICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgCi0gICBwcml2YXRlIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gZmluZExpc3QoIFN0cmluZyBpZCwgTGlzdDxMaXN0PElQb2xpY3lPcGVyYXRpb24+PiBzZWFyY2hMaXN0ICkKLSAgIHsKLSAgICAgZm9yKCBMaXN0PElQb2xpY3lPcGVyYXRpb24+IHBvbGljeUxpc3QgOiBzZWFyY2hMaXN0ICkKLSAgICAgewotICAgICAgIGlmKCBwb2xpY3lMaXN0LmdldCgwKS5nZXRJZCgpLmVxdWFscyggaWQgKSApCi0gICAgICAgewotICAgICAgICAgcmV0dXJuIHBvbGljeUxpc3Q7Ci0gICAgICAgfQotICAgICB9Ci0gICAgIAotICAgICBhc3NlcnRUcnVlKCAiTGlzdCBub3QgZm91bmQgZm9yIGlkIiArIGlkLCBmYWxzZSApOwotICAgICByZXR1cm4gbnVsbDsKLSAgIH0KLSAgIAotICAgcHJpdmF0ZSB2b2lkIGRpc3BsYXlQb2xpY2llcyggTGlzdDxJU2VydmljZVBvbGljeT4gcG9saWN5TGlzdCApCi0gICB7Ci0gICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIkxpc3Rpbmcgc2VydmljZSBwb2xpY2llczoiICk7Ci0gICAgIGZvciggSVNlcnZpY2VQb2xpY3kgcG9saWN5IDogcG9saWN5TGlzdCApCi0gICAgIHsKLSAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIgICIgKyBwb2xpY3kuZ2V0SWQoKSApOwotICAgICB9Ci0gICB9Ci0gICAKLSAgIHByaXZhdGUgdm9pZCBkaXNwbGF5TGlzdCggU3RyaW5nIHNldE5hbWUsIExpc3Q8SVBvbGljeU9wZXJhdGlvbj4gb3BlcmF0aW9uTGlzdCApCi0gICB7Ci0gICAgIFN5c3RlbS5vdXQucHJpbnQoIHNldE5hbWUgKyAiOiAiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIGZvciggSVBvbGljeU9wZXJhdGlvbiBvcGVyYXRpb24gOiBvcGVyYXRpb25MaXN0ICkKLSAgICAgewotICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIG9wZXJhdGlvbi5nZXRJZCgpICsgIiwiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgfQotICAgICAKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiIiApOyAvLyROT04tTkxTLTEkCi0gICB9Ci0gICAKLSAgIHByaXZhdGUgdm9pZCBjaGVja0NvbnRlbnRzKCBTdHJpbmcgc2V0TmFtZSwgTGlzdDxJUG9saWN5T3BlcmF0aW9uPiBvcGVyYXRpb25TZXQsIElQb2xpY3lPcGVyYXRpb25bXSBvcGVyYXRpb25BcnJheSApCi0gICB7Ci0gICAgIGFzc2VydFRydWUoICJTZXQgYW5kIGFycmF5IHNpemVzIGRvbid0IG1hdGNoIGZvciAiICsgc2V0TmFtZSArICIuIiwgb3BlcmF0aW9uU2V0LnNpemUoKSA9PSBvcGVyYXRpb25BcnJheS5sZW5ndGggKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkCi0KLSAgICAgZm9yKCBJUG9saWN5T3BlcmF0aW9uIG9wZXJhdGlvbiA6IG9wZXJhdGlvbkFycmF5ICkKLSAgICAgewotICAgICAgIGFzc2VydFRydWUoIHNldE5hbWUgKyAiIGRvZXMgbm90IGNvbnRhaW4gb3BlcmF0aW9uICIgKyBvcGVyYXRpb24uZ2V0SWQoKSArICIuIiwgb3BlcmF0aW9uU2V0LmNvbnRhaW5zKCBvcGVyYXRpb24gKSApOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQKLSAgICAgfQotICAgfQotICAgCi0gICBwcml2YXRlIHZvaWQgZGlzcGxheU9wZXJhdGlvbiggSVBvbGljeU9wZXJhdGlvbiBvcGVyYXRpb24gKQotICAgewotICAgICBMaXN0PElTZXJ2aWNlUG9saWN5PiB6ZXJvUG9saWNpZXMgPSBuZXcgVmVjdG9yPElTZXJ2aWNlUG9saWN5PigpOwotICAgICBMaXN0PElTZXJ2aWNlUG9saWN5PiBtYW55UG9saWNpZXMgPSBTZXJ2aWNlUG9saWN5UGxhdGZvcm0uZ2V0SW5zdGFuY2UoKS5nZXRSb290U2VydmljZVBvbGljaWVzKCBudWxsICk7Ci0gICAgIElEZXNjcmlwdG9yICAgICAgICAgICBkZXNjcmlwdG9yICAgPSBvcGVyYXRpb24uZ2V0RGVzY3JpcHRvcigpOwotICAgICBTdHJpbmcgICAgICAgICAgICAgICBzaG9ydE5hbWUgICAgPSBkZXNjcmlwdG9yLmdldFNob3J0TmFtZSgpOwotICAgICBTdHJpbmcgICAgICAgICAgICAgICBsb25nTmFtZSAgICAgPSBkZXNjcmlwdG9yLmdldExvbmdOYW1lKCk7Ci0gICAgIAotICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJPcGVyYXRpb24gaWQ6ICIgKyBvcGVyYXRpb24uZ2V0SWQoKSApOyAvLyROT04tTkxTLTEkCi0gICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgICAgICAgICBzaG9ydCBuYW1lOiAiICsgc2hvcnROYW1lICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiICAgICAgICAgIGxvbmcgbmFtZTogIiArIGxvbmdOYW1lICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiICAgICAgICAgIHBhdHRlcm46ICIgKyBvcGVyYXRpb24uZ2V0UG9saWN5SWRQYXR0ZXJuKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIgICAgICAgICAgaXNFbmFibGVkIHplcm86ICIgKyBvcGVyYXRpb24uaXNFbmFibGVkKCB6ZXJvUG9saWNpZXMgKSApOyAvLyROT04tTkxTLTEkCi0gICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgICAgICAgICBpc0VuYWJsZWQgbWFueTogIiArIG9wZXJhdGlvbi5pc0VuYWJsZWQoIG1hbnlQb2xpY2llcyApICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgCi0gICAgIHN3aXRjaCggb3BlcmF0aW9uLmdldE9wZXJhdGlvbktpbmQoKSApCi0gICAgIHsKLSAgICAgICBjYXNlIHNlbGVjdGlvbjoKLSAgICAgICB7Ci0gICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIgICAgICAgICAgc2VsZWN0aW9uOiB0cnVlIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgICBicmVhazsgIAotICAgICAgIH0KLSAgICAgICAKLSAgICAgICBjYXNlIGljb25TZWxlY3Rpb246Ci0gICAgICAgewotICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiICAgICAgICAgIHNlbGVjdGlvbiBpY29uOiB0cnVlIiApOyAvLyROT04tTkxTLTEkCi0gICAgICAgICBicmVhazsgIAotICAgICAgIH0KLSAgICAgICAKLSAgICAgICBjYXNlIGVudW1lcmF0aW9uOgotICAgICAgIHsgICAgICAKLSAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgICAgICAgICBlbnVtZXJhdGlvbiBpZDogIiArIG9wZXJhdGlvbi5nZXRFbnVtZXJhdGlvbklkKCkgKTsgLy8kTk9OLU5MUy0xJAotICAgICAgICAgYnJlYWs7ICAKLSAgICAgICB9Ci0gICAgICAgCi0gICAgICAgY2FzZSBjb21wbGV4OgotICAgICAgIHsKLSAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgICAgICAgICBjb21wbGV4OiB0cnVlIiApOyAgLy8kTk9OLU5MUy0xJAotICAgICAgICAgb3BlcmF0aW9uLmxhdW5jaE9wZXJhdGlvbiggemVyb1BvbGljaWVzICk7Ci0gICAgICAgICBicmVhazsgIAotICAgICAgIH0KLSAgICAgfQotICAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Qvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS90ZXN0L1NlcnZpY2VQb2xpY3l0VGVzdEFjdGl2YXRvci5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Qvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS90ZXN0L1NlcnZpY2VQb2xpY3l0VGVzdEFjdGl2YXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmFmY2QwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdGVzdC9TZXJ2aWNlUG9saWN5dFRlc3RBY3RpdmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MTAyNCAgIDE5Njk5NyBwbW9vZ2tAY2EuaWJtLmNvbSAtIFBldGVyIE1vb2drCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVN0YXJ0dXA7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci0KLS8qKgotICogVGhlIGFjdGl2YXRvciBjbGFzcyBjb250cm9scyB0aGUgcGx1Zy1pbiBsaWZlIGN5Y2xlCi0gKi8KLXB1YmxpYyBjbGFzcyBTZXJ2aWNlUG9saWN5dFRlc3RBY3RpdmF0b3IgZXh0ZW5kcyBQbHVnaW4gaW1wbGVtZW50cyBJU3RhcnR1cCB7Ci0KLQkvLyBUaGUgcGx1Zy1pbiBJRAotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9JRCA9ICJvcmcuZWNsaXBzZS53c3Quc2VydmljZS5wb2xpY3kudGVzdCI7IC8vJE5PTi1OTFMtMSQKLQotCS8vIFRoZSBzaGFyZWQgaW5zdGFuY2UKLQlwcml2YXRlIHN0YXRpYyBTZXJ2aWNlUG9saWN5dFRlc3RBY3RpdmF0b3IgcGx1Z2luOwotCQotCS8qKgotCSAqIFRoZSBjb25zdHJ1Y3RvcgotCSAqLwotCXB1YmxpYyBTZXJ2aWNlUG9saWN5dFRlc3RBY3RpdmF0b3IoKSB7Ci0JfQotCi0JLyoKLQkgKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2lucyNzdGFydChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gewotCQlzdXBlci5zdGFydChjb250ZXh0KTsKLQkJcGx1Z2luID0gdGhpczsKLQl9Ci0KLQkvKgotCSAqIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW4jc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXBsdWdpbiA9IG51bGw7Ci0JCXN1cGVyLnN0b3AoY29udGV4dCk7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlCi0JICoKLQkgKiBAcmV0dXJuIHRoZSBzaGFyZWQgaW5zdGFuY2UKLQkgKi8KLQlwdWJsaWMgc3RhdGljIFNlcnZpY2VQb2xpY3l0VGVzdEFjdGl2YXRvciBnZXREZWZhdWx0KCkgewotCQlyZXR1cm4gcGx1Z2luOwotCX0KLQkKLSAgcHVibGljIHN0YXRpYyB2b2lkIGxvZ0Vycm9yKCBTdHJpbmcgbWVzc2FnZSwgVGhyb3dhYmxlIGV4YyApCi0gIHsKLSAgICBJU3RhdHVzIHN0YXR1cyA9IG5ldyBTdGF0dXMoIElTdGF0dXMuRVJST1IsIFBMVUdJTl9JRCwgMCwgbWVzc2FnZSwgZXhjICk7Ci0gICAgCi0gICAgZ2V0RGVmYXVsdCgpLmdldExvZygpLmxvZyhzdGF0dXMpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBlYXJseVN0YXJ0dXAoKQotICB7Ci0gICAgLy8gRE8gbm90aGluZy4gIEFsbCB3ZSB3YW50IHRvIGRvIGlzIGdldCB0aGUgcGx1Z2luIGxvYWRlZCBhdCBVSSBzdGFydCB0aW1lLgotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvVGVzdEVuYWJsZWRDbGFzcy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Qvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS90ZXN0L1Rlc3RFbmFibGVkQ2xhc3MuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJiOGQzMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvVGVzdEVuYWJsZWRDbGFzcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMDI0ICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2sKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LklTZXJ2aWNlUG9saWN5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS51aS5JRW5hYmxlT3BlcmF0aW9uOwotCi1wdWJsaWMgY2xhc3MgVGVzdEVuYWJsZWRDbGFzcyBpbXBsZW1lbnRzIElFbmFibGVPcGVyYXRpb24KLXsKLQotICBwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoTGlzdDxJU2VydmljZVBvbGljeT4gc2VsZWN0ZWRQb2xpY2llcykKLSAgewotICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIiAgICAgICAgICBJcyBlbmFibGVkIG9wZXJhdGlvbiBjYWxsZWQuIiApOyAvLyROT04tTkxTLTEkCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdGVzdC9UZXN0TGF1bmNoQ2xhc3MuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdGVzdC9UZXN0TGF1bmNoQ2xhc3MuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc5NDViMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvVGVzdExhdW5jaENsYXNzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0gKiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogMjAwNzEwMjQgICAxOTY5OTcgcG1vb2drQGNhLmlibS5jb20gLSBQZXRlciBNb29nawotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0OwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklMYXVuY2hPcGVyYXRpb247Ci0KLXB1YmxpYyBjbGFzcyBUZXN0TGF1bmNoQ2xhc3MgaW1wbGVtZW50cyBJTGF1bmNoT3BlcmF0aW9uCi17Ci0KLSAgcHVibGljIHZvaWQgbGF1bmNoKExpc3Q8SVNlcnZpY2VQb2xpY3k+IHNlbGVjdGVkUG9saWNpZXMpCi0gIHsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oICIgICAgICAgICAgTGF1bmNoIGNsYXNzIGNhbGxlZC4iICk7IC8vJE5PTi1OTFMtMSQKLSAgfSAgCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvYWN0aW9uMS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Qvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS90ZXN0L2FjdGlvbjEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRjMzRhZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvYWN0aW9uMS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMTIwICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEluaXRpYWwgY29kaW5nLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklRdWlja0ZpeEFjdGlvbjsKLQotcHVibGljIGNsYXNzIGFjdGlvbjEgaW1wbGVtZW50cyBJUXVpY2tGaXhBY3Rpb24KLXsKLQotICBwdWJsaWMgdm9pZCBhY3Rpb24oSVNlcnZpY2VQb2xpY3kgcG9saWN5KQotICB7Ci0gICAgcG9saWN5LnNldFN0YXR1cyggU3RhdHVzLk9LX1NUQVRVUyApOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvYWN0aW9uMi5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Qvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS90ZXN0L2FjdGlvbjIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkzZTg1OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvYWN0aW9uMi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMTIwICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEluaXRpYWwgY29kaW5nLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklRdWlja0ZpeEFjdGlvbjsKLQotcHVibGljIGNsYXNzIGFjdGlvbjIgaW1wbGVtZW50cyBJUXVpY2tGaXhBY3Rpb24KLXsKLQotICBwdWJsaWMgdm9pZCBhY3Rpb24oSVNlcnZpY2VQb2xpY3kgcG9saWN5KQotICB7Ci0gICAgcG9saWN5LnNldFN0YXR1cyggU3RhdHVzLk9LX1NUQVRVUyApOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvYWN0aW9uMy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnRlc3Qvc3JjL29yZy9lY2xpcHNlL3dzdC93cy9zZXJ2aWNlL3BvbGljeS90ZXN0L2FjdGlvbjMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRkOTc3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvYWN0aW9uMy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKiB5eXl5bW1kZCBidWcgICAgICBFbWFpbCBhbmQgb3RoZXIgY29udGFjdCBpbmZvcm1hdGlvbgotICogLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIDIwMDcxMTIwICAgMTk2OTk3IHBtb29na0BjYS5pYm0uY29tIC0gUGV0ZXIgTW9vZ2ssIEluaXRpYWwgY29kaW5nLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kuSVNlcnZpY2VQb2xpY3k7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnNlcnZpY2UucG9saWN5LnVpLklRdWlja0ZpeEFjdGlvbjsKLQotcHVibGljIGNsYXNzIGFjdGlvbjMgaW1wbGVtZW50cyBJUXVpY2tGaXhBY3Rpb24KLXsKLQotICBwdWJsaWMgdm9pZCBhY3Rpb24oSVNlcnZpY2VQb2xpY3kgcG9saWN5KQotICB7Ci0gICAgcG9saWN5LnNldFN0YXR1cyggU3RhdHVzLk9LX1NUQVRVUyApOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzL3NlcnZpY2UvcG9saWN5L3Rlc3QvaW50ZXJuYWwvcHJvcGVydGllcy9GT09GaWxlUHJvcGVydHlUZXN0ZXIuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdGVzdC9pbnRlcm5hbC9wcm9wZXJ0aWVzL0ZPT0ZpbGVQcm9wZXJ0eVRlc3Rlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTgzZWE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy5zZXJ2aWNlLnBvbGljeS50ZXN0L3NyYy9vcmcvZWNsaXBzZS93c3Qvd3Mvc2VydmljZS9wb2xpY3kvdGVzdC9pbnRlcm5hbC9wcm9wZXJ0aWVzL0ZPT0ZpbGVQcm9wZXJ0eVRlc3Rlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3Muc2VydmljZS5wb2xpY3kudGVzdC5pbnRlcm5hbC5wcm9wZXJ0aWVzOwotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zLlByb3BlcnR5VGVzdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklDb250YWluZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgRk9PRmlsZVByb3BlcnR5VGVzdGVyIGV4dGVuZHMgUHJvcGVydHlUZXN0ZXIKLXsKLSAgcHVibGljIGJvb2xlYW4gdGVzdChPYmplY3QgcmVjZWl2ZXIsIFN0cmluZyBwcm9wZXJ0eSwgT2JqZWN0W10gYXJncywgT2JqZWN0IGV4cGVjdGVkVmFsdWUpCi0gIHsKLSAgICBib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotICAgIAotICAgIGlmKCByZWNlaXZlciBpbnN0YW5jZW9mIElDb250YWluZXIpCi0gICAgewotICAgICAgcmVzdWx0ID0gaGFzRk9PZmlsZSggKElDb250YWluZXIpIHJlY2VpdmVyICk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgCi0gIHByaXZhdGUgYm9vbGVhbiBoYXNGT09maWxlKCBJQ29udGFpbmVyIGNvbnRhaW5lciApCi0gIHsKLSAgICBib29sZWFuIHJlc3VsdCAgID0gZmFsc2U7Ci0gICAgCi0gICAgdHJ5Ci0gICAgewotICAgICAgSVJlc291cmNlW10gY2hpbGRyZW4gPSBjb250YWluZXIubWVtYmVycygpOwotICAgICAgCi0gICAgICBmb3IoIElSZXNvdXJjZSBjaGlsZCA6IGNoaWxkcmVuICkKLSAgICAgIHsKLSAgICAgICAgaWYoIGNoaWxkIGluc3RhbmNlb2YgSUNvbnRhaW5lciApCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQgPSBoYXNGT09maWxlKCAoSUNvbnRhaW5lcikgY2hpbGQgKTsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCBjaGlsZCBpbnN0YW5jZW9mIElGaWxlICkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdCA9IGNoaWxkLmdldEZpbGVFeHRlbnNpb24oKS5lcXVhbHNJZ25vcmVDYXNlKCAiZm9vIiApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIHNpbmdsZSBmb28gZmlsZSB3ZSB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KLSAgICAgICAgaWYoIHJlc3VsdCApIGJyZWFrOwotICAgICAgfSAgICAKLSAgICB9Ci0gICAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICAvLyBJZ25vcmUgZXhjZXB0aW9uIGFuZCByZXR1cm4gZmFsc2UuICAKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLy5jbGFzc3BhdGggYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI4OThjYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0idGVzdHMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy8uY3ZzaWdub3JlIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OTY4YmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi10ZW1wLmZvbGRlcgotdGVzdHMuamFyCi1qYXZhQ29tcGlsZXIudGVzdHMuamFyLmFyZ3MKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy8ucHJvamVjdCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVmMmJjZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS53c3Qud3MudGVzdHM8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZDEwNDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLSNNb24gSmFuIDMwIDEwOjI5OjE0IEVTVCAyMDA2Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS40Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFubm90YXRpb25TdXBlckludGVyZmFjZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hdXRvYm94aW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbXB0eVN0YXRlbWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maWVsZEhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxQYXJhbWV0ZXJCb3VuZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsbHlCbG9ja05vdENvbXBsZXRpbmdOb3JtYWxseT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZvcmJpZGRlblJlZmVyZW5jZT1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5oaWRkZW5DYXRjaEJsb2NrPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wYXRpYmxlTm9uSW5oZXJpdGVkSW50ZXJmYWNlTWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wbGV0ZUVudW1Td2l0Y2g9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluZGlyZWN0U3RhdGljQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5sb2NhbFZhcmlhYmxlSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5tZXRob2RXaXRoQ29uc3RydWN0b3JOYW1lPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ0RlcHJlY2F0ZWRBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nT3ZlcnJpZGVBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nU2VyaWFsVmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vRWZmZWN0QXNzaWdubWVudD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vSW1wbGljaXRTdHJpbmdDb252ZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9uRXh0ZXJuYWxpemVkU3RyaW5nTGl0ZXJhbD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ub3ZlcnJpZGluZ1BhY2thZ2VEZWZhdWx0TWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucG9zc2libGVBY2NpZGVudGFsQm9vbGVhbkFzc2lnbm1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnNwZWNpYWxQYXJhbWV0ZXJIaWRpbmdGaWVsZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdGF0aWNBY2Nlc3NSZWNlaXZlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN1cHByZXNzV2FybmluZ3M9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zeW50aGV0aWNBY2Nlc3NFbXVsYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnR5cGVQYXJhbWV0ZXJIaWRpbmc9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmNoZWNrZWRUeXBlT3BlcmF0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5kb2N1bWVudGVkRW1wdHlCbG9jaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5oYW5kbGVkV2FybmluZ1Rva2VuPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlFbHNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeVR5cGVDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5xdWFsaWZpZWRGaWVsZEFjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uV2hlbk92ZXJyaWRpbmc9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkSW1wb3J0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkTG9jYWw9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXI9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5JbXBsZW1lbnRpbmdBYnN0cmFjdD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXJXaGVuT3ZlcnJpZGluZ0NvbmNyZXRlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFByaXZhdGVNZW1iZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS52YXJhcmdzQXJndW1lbnROZWVkQ2FzdD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS4zCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTg3YThhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotI01vbiBBcHIgMjQgMTA6Mjc6NTQgRURUIDIwMDYKLWNvbXBpbGVycy5wLmJ1aWxkPTEKLWNvbXBpbGVycy5wLmRlcHJlY2F0ZWQ9MQotY29tcGlsZXJzLnAubm8tcmVxdWlyZWQtYXR0PTAKLWNvbXBpbGVycy5wLm5vdC1leHRlcm5hbGl6ZWQtYXR0PTEKLWNvbXBpbGVycy5wLnVua25vd24tYXR0cmlidXRlPTAKLWNvbXBpbGVycy5wLnVua25vd24tY2xhc3M9MAotY29tcGlsZXJzLnAudW5rbm93bi1lbGVtZW50PTEKLWNvbXBpbGVycy5wLnVua25vd24tcmVzb3VyY2U9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1leC1wb2ludHM9MAotY29tcGlsZXJzLnAudW5yZXNvbHZlZC1pbXBvcnQ9MAotY29tcGlsZXJzLnVzZS1wcm9qZWN0PXRydWUKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMWRkN2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJVBMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3MudGVzdHM7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC4zMDEucXVhbGlmaWVyCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS53c3Qud3MudGVzdHMucGx1Z2luLlRlc3RzUGx1Z2luCi1CdW5kbGUtVmVuZG9yOiAlUExVR0lOX1BST1ZJREVSCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS53c3Qud3MsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLAotIG9yZy5qdW5pdDtidW5kbGUtdmVyc2lvbj0iWzMuOC4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMsCi0gb3JnLmVjbGlwc2UuZGVidWcuY29yZSwKLSBvcmcuZWNsaXBzZS5qZW0udXRpbCwKLSBvcmcuZWNsaXBzZS5qZmFjZSwKLSBvcmcuZWNsaXBzZS51aSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LmNvcmUsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5mcmFtZXdvcmtzLAotIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZSwKLSBvcmcuZWNsaXBzZS53c3Qud3MudWksCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LnVpLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24uZW52aXJvbm1lbnQsCi0gb3JnLmVjbGlwc2UuZW1mLmVjb3JlLAotIG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWkKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2Uud3N0LndzLnRlc3QucG9wdXAsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLmRhdGEsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnBsdWdpbiwKLSBvcmcuZWNsaXBzZS53c3Qud3MudGVzdHMudW5pdHRlc3QsCi0gb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnV0aWxzCi1CdW5kbGUtQ2xhc3NQYXRoOiB0ZXN0cy5qYXIKLUJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNAotCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvYWJvdXQuaHRtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvYnVpbGQucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzFiOTI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotYmluLmluY2x1ZGVzID0gZGF0YS8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICByZWFkbWUudHh0LFwKLSAgICAgICAgICAgICAgIHRlc3RzLmphcixcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgdGVzdC54bWwsXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcwotamFycy5jb21waWxlLm9yZGVyID0gdGVzdHMuamFyCi1zb3VyY2UudGVzdHMuamFyID0gdGVzdHMvCi1vdXRwdXQudGVzdHMuamFyID0gYmluLwpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL2RhdGEvbG9jYXRvci90ZXN0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvZGF0YS9sb2NhdG9yL3Rlc3Qud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJkMzFjYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvZGF0YS9sb2NhdG9yL3Rlc3Qud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9BcmVhU2VydmljZS8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJBcmVhU2VydmljZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvQXJlYVNlcnZpY2UvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvQXJlYVNlcnZpY2UvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJhcmVhIiB0eXBlPSJ4c2Q6ZmxvYXQiLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ0bnM6ZGltZW5zaW9ucyIvPgotICAgICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJkaW1lbnNpb25zIj4KLSAgICAgIAk8eHNkOnNlcXVlbmNlPgotICAgICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0id2lkdGgiIHR5cGU9InhzZDpmbG9hdCI+PC94c2Q6ZWxlbWVudD4KLSAgICAgIAkJPHhzZDplbGVtZW50IG5hbWU9ImhlaWdodCIgdHlwZT0ieHNkOmZsb2F0Ij48L3hzZDplbGVtZW50PgotICAgICAgCTwveHNkOnNlcXVlbmNlPgotICAgICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJDYWxjdWxhdGVSZWN0QXJlYVJlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczphcmVhIiBuYW1lPSJhcmVhIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IkNhbGN1bGF0ZVJlY3RBcmVhUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6cGFyYW1ldGVycyIgbmFtZT0icGFyYW1ldGVycyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQXJlYVNlcnZpY2UiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJDYWxjdWxhdGVSZWN0QXJlYSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6Q2FsY3VsYXRlUmVjdEFyZWFSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOkNhbGN1bGF0ZVJlY3RBcmVhUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQXJlYVNlcnZpY2VTT0FQIiB0eXBlPSJ0bnM6QXJlYVNlcnZpY2UiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJDYWxjdWxhdGVSZWN0QXJlYSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FyZWFTZXJ2aWNlL05ld09wZXJhdGlvbiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkFyZWFTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpBcmVhU2VydmljZVNPQVAiIG5hbWU9IkFyZWFTZXJ2aWNlU09BUCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmciLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvZGF0YS93c2RsY29waWVyLzEvMi8zL3Rlc3Qud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9kYXRhL3dzZGxjb3BpZXIvMS8yLzMvdGVzdC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGQ2MmI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9kYXRhL3dzZGxjb3BpZXIvMS8yLzMvdGVzdC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIAotCXhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnRlc3Q9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvdGVzdC8iCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3Rlc3QvIgotCXhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JeG1sbnM6dHhzZD0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy90ZXN0eHNkIgotCXhtbG5zOnR4c2QyPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3Rlc3R4c2QyIj4KLQotCTx3c2RsOnR5cGVzPgotCQk8c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gCQkgICAgPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvdGVzdHhzZDIiCi0JCQkJc2NoZW1hTG9jYXRpb249Ii4uLy4uLzJhL3Rlc3QueHNkIiAvPgotCQkJPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvdGVzdHhzZCIKLQkJCQlzY2hlbWFMb2NhdGlvbj0iLi4vLi4vLi4vdGVzdC54c2QiIC8+Ci0JCTwvc2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IG5hbWU9ImlucHV0IiBlbGVtZW50PSJ0eHNkOlRlc3RTdHJpbmciPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IG5hbWU9Im91dHB1dCIgZWxlbWVudD0idHhzZDI6VGVzdFN0cmluZzIiPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9IlRlc3RQb3J0VHlwZSI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idGVzdDpOZXdPcGVyYXRpb25SZXF1ZXN0Ij48L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idGVzdDpOZXdPcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci0JPHdzZGw6YmluZGluZyBuYW1lPSJOZXdCaW5kaW5nIiB0eXBlPSJ0ZXN0OlRlc3RQb3J0VHlwZSI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IgotCQkJdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIC8+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHNvYXA6b3BlcmF0aW9uCi0JCQkJc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy90ZXN0L05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6YmluZGluZz4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9kYXRhL3dzZGxjb3BpZXIvMS8yYS9zdGFydC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL2RhdGEvd3NkbGNvcGllci8xLzJhL3N0YXJ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNjI3YmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL2RhdGEvd3NkbGNvcGllci8xLzJhL3N0YXJ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc3RhcnQvIgkJCi0JeG1sbnM6dGVzdD0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy90ZXN0LyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgkgCi0JeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotCi0JPHdzZGw6aW1wb3J0IGxvY2F0aW9uPSIuLi8yLzMvdGVzdC53c2RsIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvdGVzdC8iLz4KLQkKLQk8d3NkbDp0eXBlcz4KLQkJPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQkJPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvdGVzdHhzZCIKLQkJCQlzY2hlbWFMb2NhdGlvbj0iLi4vLi4vdGVzdC54c2QiIC8+Ci0JCTwvc2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQkKLQk8d3NkbDpzZXJ2aWNlIG5hbWU9IlN0YXJ0Ij4KLQkJPHdzZGw6cG9ydCBuYW1lPSJOZXdQb3J0IiBiaW5kaW5nPSJ0ZXN0Ok5ld0JpbmRpbmciPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iPjwvc29hcDphZGRyZXNzPgotCQk8L3dzZGw6cG9ydD4KLQk8L3dzZGw6c2VydmljZT4KLQkKLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9kYXRhL3dzZGxjb3BpZXIvMS8yYS90ZXN0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9kYXRhL3dzZGxjb3BpZXIvMS8yYS90ZXN0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI2ZmZlMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvZGF0YS93c2RsY29waWVyLzEvMmEvdGVzdC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIAotCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvdGVzdHhzZDIiCi0JZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgotICAgIDxlbGVtZW50IG5hbWU9IlRlc3RTdHJpbmcyIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD4KLTwvc2NoZW1hPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL2RhdGEvd3NkbGNvcGllci90ZXN0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9kYXRhL3dzZGxjb3BpZXIvdGVzdC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZTY0NmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL2RhdGEvd3NkbGNvcGllci90ZXN0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgCi0JeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy90ZXN0eHNkIiAKLQllbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+Ci0gICAgPGVsZW1lbnQgbmFtZT0iVGVzdFN0cmluZyIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+Ci08L3NjaGVtYT4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9pY29ucy9mdWxsL3dpemJhbi93ZWJzZXJ2aWNlc193aXoucG5nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL2ljb25zL2Z1bGwvd2l6YmFuL3dlYnNlcnZpY2VzX3dpei5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MjBmYjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL2ljb25zL2Z1bGwvd2l6YmFuL3dlYnNlcnZpY2VzX3dpei5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvcGx1Z2luLnByb3BlcnRpZXMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MzNlYzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIHl5eXltbWRkIGJ1ZyAgICAgIEVtYWlsIGFuZCBvdGhlciBjb250YWN0IGluZm9ybWF0aW9uCi0jIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDIwMDYwNDI0ICAgMTM4MDYwIGthdGh5QGNhLmlibS5jb20gLSBLYXRoeSBDaGFuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgTWVzc2FnZXMgaW4gcGx1Z2luLnhtbC4KLSMKLVBMVUdJTl9OQU1FPVdTVCBXZWIgU2VydmljZXMgVGVzdAotUExVR0lOX1BST1ZJREVSPUVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvcGx1Z2luLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDUyOWE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLQotPHBsdWdpbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5wb3B1cE1lbnVzIj4KLSAgICAgIDxvYmplY3RDb250cmlidXRpb24KLSAgICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MudGVzdC5wb3B1cC5jb250cmlidXRpb24xIj4KLSAgICAgICAgIDxtZW51Ci0gICAgICAgICAgICAgICBsYWJlbD0iUG9wdXAgdGVzdCBtZW51IgotICAgICAgICAgICAgICAgcGF0aD0iYWRkaXRpb25zIgotICAgICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53cy50ZXN0LnBvcHVwLm1lbnUxIj4KLSAgICAgICAgICAgIDxzZXBhcmF0b3IKLSAgICAgICAgICAgICAgICAgIG5hbWU9Imdyb3VwMSI+Ci0gICAgICAgICAgICA8L3NlcGFyYXRvcj4KLSAgICAgICAgIDwvbWVudT4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSJQb3B1cCB0ZXN0IGFjdGlvbiIKLSAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS53c3Qud3MudGVzdC5wb3B1cC5OZXdBY3Rpb24iCi0gICAgICAgICAgICAgICBtZW51YmFyUGF0aD0ib3JnLmVjbGlwc2Uud3N0LndzLnRlc3QucG9wdXAubWVudTEvZ3JvdXAxIgotICAgICAgICAgICAgICAgZW5hYmxlc0Zvcj0iMSIKLSAgICAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS53c3Qud3MudGVzdC5wb3B1cC5uZXdBY3Rpb24iPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L29iamVjdENvbnRyaWJ1dGlvbj4KLSAgIDwvZXh0ZW5zaW9uPgotICAgIAotPC9wbHVnaW4+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvcmVhZG1lLnR4dCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9yZWFkbWUudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWRlMDM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy9yZWFkbWUudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1DdXJyZW50bHkgbm8gYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbi4gIFNlZSBvcmcuZWNsaXBzZS5qc3Qud3MudGVzdHMgZm9yIGFkZGluZwotYXJndW1lbnRzIHdoZW4gcnVubmluZyB0ZXN0IHN1aXRlIChpLmUuIHNlcnZlciBpbnN0YWxsIGxvY2F0aW9uLi4uKQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3QueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3QueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjkxYWNlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/PgotCi08cHJvamVjdCBuYW1lPSJ0ZXN0c3VpdGUiIGRlZmF1bHQ9InJ1biIgYmFzZWRpcj0iLiI+Ci0gIDwhLS0gVGhlIHByb3BlcnR5ICR7ZWNsaXBzZS1ob21lfSBzaG91bGQgYmUgcGFzc2VkIGludG8gdGhpcyBzY3JpcHQgLS0+Ci0gIDwhLS0gU2V0IGEgbWVhbmluZ2Z1bCBkZWZhdWx0IHZhbHVlIGZvciB3aGVuIGl0IGlzIG5vdC4gLS0+Ci0gPCEtLSA8cHJvcGVydHkgbmFtZT0iZWNsaXBzZS1ob21lIiB2YWx1ZT0iJHtiYXNlZGlyfVwuLlwuLiIvPiAtLT4KLQk8ZWNobyBtZXNzYWdlPSJiYXNlZGlyICR7YmFzZWRpcn0iIC8+Ci0JPGVjaG8gbWVzc2FnZT0iZWNsaXBzZSBwbGFjZSAke2VjbGlwc2UtaG9tZX0iIC8+Ci0gIDwhLS0gc2V0cyB0aGUgcHJvcGVydGllcyBwbHVnaW4tbmFtZSwgYW5kIGxpYnJhcnktZmlsZSAtLT4KLSAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzIi8+Ci0gIDxwcm9wZXJ0eSBuYW1lPSJsaWJyYXJ5LWZpbGUiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vcGx1Z2lucy9vcmcuZWNsaXBzZS50ZXN0XzMuMS4wL2xpYnJhcnkueG1sIi8+Ci0gIDwhLS0gY29tbWVudGVkIGZvciBub3cgdW50aWwgc3VjaCBhIHRpbWUgYXMgd2UgbmVlZCB0byBjYWxsIGEgc2VydmVyIGZvciB3c3QgdGVzdHMgLS0+Ci0gIDwhLS08cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSItRG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIudG9tY2F0LjUwPSR7dGVzdERpcn0vJHt0b21jYXQ1MERpcn0iLz4gLS0+Ci0JCi0gIDwhLS0gVGhpcyB0YXJnZXQgaG9sZHMgYWxsIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBuZWVkcyB0byBiZSBkb25lIGZvciAtLT4KLSAgPCEtLSBhbGwgdGVzdHMgdGhhdCBhcmUgdG8gYmUgcnVuLiBJbml0aWFsaXphdGlvbiBmb3IgaW5kaXZpZHVhbCB0ZXN0cyAtLT4KLSAgPCEtLSBzaG91bGQgYmUgZG9uZSB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIHN1aXRlIHRhcmdldC4gLS0+Ci0gIDx0YXJnZXQgbmFtZT0iaW5pdCI+Ci0gICAgPHRzdGFtcC8+Ci0gICAgPGRlbGV0ZT4KLSAgICAgIDxmaWxlc2V0IGRpcj0iJHtlY2xpcHNlLWhvbWV9IiBpbmNsdWRlcz0ib3JnKi54bWwiLz4KLSAgICA8L2RlbGV0ZT4KLSAgPC90YXJnZXQ+Ci0KLSAgPCEtLSBUaGlzIHRhcmdldCBkZWZpbmVzIHRoZSB0ZXN0cyB0aGF0IG5lZWQgdG8gYmUgcnVuLiAtLT4KLSAgPHRhcmdldCBuYW1lPSJzdWl0ZSI+Ci0gICAgPHByb3BlcnR5IG5hbWU9IndzdC13cy1mb2xkZXIiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vd3N0X3dzX2ZvbGRlciIvPgotICAgIDxkZWxldGUgZGlyPSIke3dzdC1mb2xkZXJ9IiBxdWlldD0idHJ1ZSIvPgotICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke2xpYnJhcnktZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d3N0LXdzLWZvbGRlcn0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnVuaXR0ZXN0LkFsbFdTSlVuaXRUZXN0cyIgLz4KLSAgIAkgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tcGF0aCIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zLyR7cGx1Z2luLW5hbWV9Ii8+Ci08IS0tICAgCSAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4gICAgCS0tPgotICAgIDwvYW50PgotICA8L3RhcmdldD4KLQotICA8IS0tIFRoaXMgdGFyZ2V0IGhvbGRzIGNvZGUgdG8gY2xlYW51cCB0aGUgdGVzdGluZyBlbnZpcm9ubWVudCBhZnRlciAtLT4KLSAgPCEtLSBhZnRlciBhbGwgb2YgdGhlIHRlc3RzIGhhdmUgYmVlbiBydW4uIFlvdSBjYW4gdXNlIHRoaXMgdGFyZ2V0IHRvIC0tPgotICA8IS0tIGRlbGV0ZSB0ZW1wb3JhcnkgZmlsZXMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZC4gLS0+Ci0gIDx0YXJnZXQgbmFtZT0iY2xlYW51cCI+Ci0gIDwvdGFyZ2V0PgotCi0gIDwhLS0gVGhpcyB0YXJnZXQgcnVucyB0aGUgdGVzdCBzdWl0ZS4gQW55IGFjdGlvbnMgdGhhdCBuZWVkIHRvIGhhcHBlbiAtLT4KLSAgPCEtLSBhZnRlciBhbGwgdGhlIHRlc3RzIGhhdmUgYmVlbiBydW4gc2hvdWxkIGdvIGhlcmUuIC0tPgotICA8dGFyZ2V0IG5hbWU9InJ1biIgZGVwZW5kcz0iaW5pdCxzdWl0ZSxjbGVhbnVwIj4KLSAgICA8YW50IHRhcmdldD0iY29sbGVjdCIgYW50ZmlsZT0iJHtsaWJyYXJ5LWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iaW5jbHVkZXMiIHZhbHVlPSJvcmcqLnhtbCIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9Im91dHB1dC1maWxlIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0ueG1sIi8+Ci0gICAgPC9hbnQ+Ci0gIDwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0L3BvcHVwL05ld0FjdGlvbi5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0L3BvcHVwL05ld0FjdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmExYmUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdC9wb3B1cC9OZXdBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3QucG9wdXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuYWN0aW9uLklBY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLldpemFyZERpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JQWN0aW9uRGVsZWdhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSU9iamVjdEFjdGlvbkRlbGVnYXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuaW50ZXJuYWwuZW52LnVpLndpZGdldHMuRHluYW1pY1dpemFyZDsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotCi1wdWJsaWMgY2xhc3MgTmV3QWN0aW9uIGltcGxlbWVudHMgSU9iamVjdEFjdGlvbkRlbGVnYXRlIHsKLQotICBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb247Ci0gIAotCS8qKgotCSAqIENvbnN0cnVjdG9yIGZvciBBY3Rpb24xLgotCSAqLwotCXB1YmxpYyBOZXdBY3Rpb24oKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JLyoqCi0JICogQHNlZSBJT2JqZWN0QWN0aW9uRGVsZWdhdGUjc2V0QWN0aXZlUGFydChJQWN0aW9uLCBJV29ya2JlbmNoUGFydCkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRBY3RpdmVQYXJ0KElBY3Rpb24gYWN0aW9uLCBJV29ya2JlbmNoUGFydCB0YXJnZXRQYXJ0KSB7Ci0JfQotCi0JLyoqCi0JICogQHNlZSBJQWN0aW9uRGVsZWdhdGUjcnVuKElBY3Rpb24pCi0JICovCi0JcHVibGljIHZvaWQgcnVuKElBY3Rpb24gYWN0aW9uKSAKLQl7Ci0JICBEeW5hbWljV2l6YXJkIHdpemFyZCA9IG5ldyBEeW5hbWljV2l6YXJkKCk7Ci0JICBXaXphcmREaWFsb2cgIGRpYWxvZyA9IG5ldyBXaXphcmREaWFsb2coIG51bGwsIHdpemFyZCApOwotCSAgCi0JICB0cnkKLQkgIHsKLQkgICAgQnVuZGxlIGJ1bmRsZSA9IFBsYXRmb3JtLmdldEJ1bmRsZSggIm9yZy5lY2xpcHNlLndzdC53cy50ZXN0cyIgKTsKLQkgICAgd2l6YXJkLnNldEluaXRpYWxEYXRhKCAib3JnLmVjbGlwc2UuanN0LndzLmNyZWF0aW9uLnVpLndpemFyZC5zZXJ2ZXJ3aXphcmQiLCBidW5kbGUsICJpY29ucy9mdWxsL3dpemJhbi93ZWJzZXJ2aWNlc193aXoucG5nIiwgIlBldGVyIHRpdGxlIiApOwotCSAgICB3aXphcmQuaW5pdCggUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKSwgc2VsZWN0aW9uICk7Ci0JICAgIAotCSAgICBkaWFsb2cub3BlbigpOwotCSAgfQotCSAgY2F0Y2goIENvcmVFeGNlcHRpb24gZXhjICkKLQkgIHsKLQkgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotCSAgfQotCX0KLQotCS8qKgotCSAqIEBzZWUgSUFjdGlvbkRlbGVnYXRlI3NlbGVjdGlvbkNoYW5nZWQoSUFjdGlvbiwgSVNlbGVjdGlvbikKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKElBY3Rpb24gYWN0aW9uLCBJU2VsZWN0aW9uIHNlbGVjdGlvbikgCi0JewotCSAgaWYoIHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uICkKLSAgICB7Ci0gICAgICB0aGlzLnNlbGVjdGlvbiA9IChJU3RydWN0dXJlZFNlbGVjdGlvbiApIHNlbGVjdGlvbjsKLSAgICB9Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL2RhdGEvTG9jYXRvcldvcmtzcGFjZVNldHVwLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL2RhdGEvTG9jYXRvcldvcmtzcGFjZVNldHVwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NTVmYTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy9kYXRhL0xvY2F0b3JXb3Jrc3BhY2VTZXR1cC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTc2ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLmRhdGE7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklDb250YWluZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JV29ya3NwYWNlUm9vdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuaW50cm8uSUludHJvTWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5pbnRyby5JSW50cm9QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy50ZXN0cy5wbHVnaW4uVGVzdHNQbHVnaW47Ci0KLS8qKgotICogQGF1dGhvciBqb2FuCi0gKiAgU2V0cyB1cCBsb2NhdG9yIHRlc3QgZGF0YSAtIHVzZXMgc2FtZSBkYXRhIGZpbGUgYnV0IHJlbmFtZXMgaXQgZm9yIGVhY2ggdXNlCi0gKiAgV29ya3NwYWNlIHN0cnVjdHVyZSBjcmVhdGVkIGxvb2tzIGxpa2UgdGhpczoKLSAqICAKLSAqICByb290Ci0gKiAgLS1wcm9qZWN0MQotICogICAgfC0tLS1mb2xkZXIxCi0gKiAgICAgICAgIHwtLS0tLWZvbGRlcjIKLSAqICAgICAgICAgICAgICAgfC0tLS0tLW9uZS53c2RsCi0gKiAgICAgICAgIHwtLS0tLXR3by53c2RsCi0gKiAgICB8LS0tLWZvbGRlcjMKLSAqICAgICAgICAgfC0tLS0tdGhyZWUud3NkbAotICogICAgICAgICB8LS0tLS1mb3VyLndzZGwgCi0gKiAgLS1wcm9qZWN0MgotICogICAgfC0tLS1maXZlLndzZGwKLSAqICAgIHwtLS0tZm9sZGVyNAotICogICAgfC0tLS1mb2xkZXI1Ci0gKiAgICAgICAgIHwtLS0tLXNpeC53c2RsCi0gKiAgLS1wcm9qZWN0MwotICogICAgfC0tLS1vbmUueG1sCi0gKi8KLQotcHVibGljIGNsYXNzIExvY2F0b3JXb3Jrc3BhY2VTZXR1cCBleHRlbmRzIFRlc3RDYXNlIHsKLQotCSAgcHVibGljIHN0YXRpYyBTdHJpbmcgUFJPSkVDVDFfTkFNRSA9ICJQcm9qZWN0MSI7Ci0JICBwdWJsaWMgc3RhdGljIFN0cmluZyBGT0xERVIxX05BTUUgPSAiRm9sZGVyMSI7ICAvL2NvbnRhaW5zIFdTREwgZmlsZSBhbmQgb25lIGZvbGRlciAKLQkgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEZPTERFUjJfTkFNRSA9ICJGb2xkZXIyIjsgIC8vbmVzdGVkIGluIGZvbGRlciAxIGFuZCBjb250YWlucyBXU0RMIGZpbGUKLQkgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEZPTERFUjNfTkFNRSA9ICJGb2xkZXIzIjsgIC8vY29udGFpbnMgdHdvIFdTREwgZmlsZXMKLQkgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFBST0pFQ1QyX05BTUUgPSAiUHJvamVjdDIiOyAvL2NvbnRhaW5zIFdTREwgZmlsZSBhbmQgdHdvIGZvbGRlcnMKLQkgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEZPTERFUjRfTkFNRSA9ICJGb2xkZXI0IjsgIC8vY29udGFpbnMgbm8gV1NETAotCSAgcHVibGljIHN0YXRpYyBTdHJpbmcgRk9MREVSNV9OQU1FID0gIkZvbGRlcjUiOyAgLy9jb250YWlucyBvbmUgV1NETCBmaWxlCi0JICBwdWJsaWMgc3RhdGljIFN0cmluZyBQUk9KRUNUM19OQU1FID0gIlByb2plY3QzIjsgIC8vY29udGFpbnMgbm8gV1NETCBmaWxlcyBidXQgb25lIFhNTCBmaWxlCi0JICAKLQkgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExGSUxFX09ORSA9ICJvbmUud3NkbCI7Ci0JICBwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMRklMRV9UV08gPSAidHdvLndzZGwiOwotCSAgcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETEZJTEVfVEhSRUUgPSAidGhyZWUud3NkbCI7Ci0JICBwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMRklMRV9GT1VSID0gImZvdXIud3NkbCI7Ci0JICBwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMRklMRV9GSVZFID0gImZpdmUud3NkbCI7Ci0JICBwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMRklMRV9TSVggPSAic2l4LndzZGwiOwotCSAgcHVibGljIHN0YXRpYyBTdHJpbmcgWE1MRklMRV9PTkUgPSAib25lLlhNTCI7Ci0JICAKLQkgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEFDVFVBTF9URVNURklMRVBBVEggPSAiZGF0YS9sb2NhdG9yL3Rlc3Qud3NkbCI7Ci0JICAJICAKLQkgIHByaXZhdGUgSVdvcmtzcGFjZVJvb3Qgcm9vdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCk7Ci0JICAKLQkgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0JICB7Ci0JICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKExvY2F0b3JXb3Jrc3BhY2VTZXR1cC5jbGFzcywgIkxvY2F0b3JXb3Jrc3BhY2VTZXR1cCIpOwotCSAgfQotCi0JICBwcm90ZWN0ZWQgdm9pZCBjbG9zZUludHJvKCkKLQkgIHsKLQkgICAgSUludHJvTWFuYWdlciBpbnRyb01hbmFnZXIgPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEludHJvTWFuYWdlcigpOwotCSAgICBJSW50cm9QYXJ0IGludHJvUGFydCA9IGludHJvTWFuYWdlci5nZXRJbnRybygpOwotCSAgICBpZiAoaW50cm9QYXJ0ICE9IG51bGwpCi0JICAgICAgaW50cm9NYW5hZ2VyLmNsb3NlSW50cm8oaW50cm9QYXJ0KTsKLQkgIH0KLQotCSAgcHJvdGVjdGVkIElQcm9qZWN0IGNyZWF0ZVNpbXBsZVByb2plY3QoU3RyaW5nIG5hbWUpIHRocm93cyBDb3JlRXhjZXB0aW9uCi0JICB7Ci0JICAgIElQcm9qZWN0IHNpbXBsZVByb2plY3QgPSByb290LmdldFByb2plY3QobmFtZSk7Ci0JICAgIHNpbXBsZVByb2plY3QuY3JlYXRlKG51bGwpOwotCSAgICBzaW1wbGVQcm9qZWN0Lm9wZW4obnVsbCk7Ci0JICAgIHJldHVybiBzaW1wbGVQcm9qZWN0OwotCSAgfQotCi0JICBwcm90ZWN0ZWQgSUZvbGRlciBjcmVhdGVGb2xkZXIoSUNvbnRhaW5lciBwYXJlbnQsIFN0cmluZyBmb2xkZXJOYW1lKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCSAgewotCQlJRm9sZGVyIGZvbGRlcjEgPSBwYXJlbnQuZ2V0Rm9sZGVyKG5ldyBQYXRoKGZvbGRlck5hbWUpKTsKLSAgICAgICAgZm9sZGVyMS5jcmVhdGUoZmFsc2UsIHRydWUsIG51bGwpOwotCSAgICByZXR1cm4gZm9sZGVyMTsKLQkgIH0KLQotCSAgCi0JICBwcm90ZWN0ZWQgdm9pZCBjb3B5RmlsZShJQ29udGFpbmVyIHByb2plY3QsIFN0cmluZyBzb3VyY2UsIFN0cmluZyBkZXN0KSB0aHJvd3MgSU9FeGNlcHRpb24sIENvcmVFeGNlcHRpb24KLQkgIHsKLQkJICAKLQkgICAgSUZpbGUgZmlsZSA9IHByb2plY3QuZ2V0RmlsZShuZXcgUGF0aChkZXN0KSk7Ci0JICAgIGZpbGUuY3JlYXRlKFRlc3RzUGx1Z2luLmdldERlZmF1bHQoKS5nZXRCdW5kbGUoKS5nZXRFbnRyeShzb3VyY2UpLm9wZW5TdHJlYW0oKSwgdHJ1ZSwgbnVsbCk7Ci0JICAgIEFzc2VydC5hc3NlcnRUcnVlKGZpbGUuZXhpc3RzKCkpOwotCSAgfQotCi0JICBwcm90ZWN0ZWQgdm9pZCBqb2luQXV0b0J1aWxkKCkgdGhyb3dzIENvcmVFeGNlcHRpb24KLQkgIHsKLQkgICAgYm9vbGVhbiBpbnRlcnJ1cHRlZCA9IHRydWU7Ci0JICAgIHdoaWxlIChpbnRlcnJ1cHRlZCkKLQkgICAgewotCSAgICAgIHRyeQotCSAgICAgIHsKLQkgICAgICAgIFBsYXRmb3JtLmdldEpvYk1hbmFnZXIoKS5qb2luKFJlc291cmNlc1BsdWdpbi5GQU1JTFlfQVVUT19CVUlMRCwgbnVsbCk7Ci0JICAgICAgICBpbnRlcnJ1cHRlZCA9IGZhbHNlOwotCSAgICAgIH0KLQkgICAgICBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkKLQkgICAgICB7Ci0JICAgICAgICBpbnRlcnJ1cHRlZCA9IHRydWU7Ci0JICAgICAgfQotCSAgICB9Ci0JICB9Ci0KLQkgIHB1YmxpYyB2b2lkIHRlc3RTZXR1cCgpIHRocm93cyBFeGNlcHRpb24KLQkgIHsKLQkJICB0cnl7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tIGxvY2F0b3IgZGF0YSBzZXR1cCBzdGFydGluZyIpOwotCSAgICBjbG9zZUludHJvKCk7Ci0KLQkgICAgSVByb2plY3QgcHJvamVjdDEgPSBjcmVhdGVTaW1wbGVQcm9qZWN0KFBST0pFQ1QxX05BTUUpOwotCSAgICBJRm9sZGVyIGZvbGRlcjEgPSBjcmVhdGVGb2xkZXIocHJvamVjdDEsIEZPTERFUjFfTkFNRSk7Ci0JICAgIGNvcHlGaWxlKGZvbGRlcjEsIEFDVFVBTF9URVNURklMRVBBVEgsIFdTRExGSUxFX1RXTyk7Ci0JICAgIElGb2xkZXIgZm9sZGVyMiA9IGNyZWF0ZUZvbGRlcihmb2xkZXIxLCBGT0xERVIyX05BTUUpOwotCSAgICBjb3B5RmlsZShmb2xkZXIyLCBBQ1RVQUxfVEVTVEZJTEVQQVRILCBXU0RMRklMRV9PTkUpOwotCSAgICBJRm9sZGVyIGZvbGRlcjMgPSBjcmVhdGVGb2xkZXIocHJvamVjdDEsIEZPTERFUjNfTkFNRSk7Ci0JICAgIGNvcHlGaWxlKGZvbGRlcjMsIEFDVFVBTF9URVNURklMRVBBVEgsIFdTRExGSUxFX1RIUkVFKTsKLQkgICAgY29weUZpbGUoZm9sZGVyMywgQUNUVUFMX1RFU1RGSUxFUEFUSCwgV1NETEZJTEVfRk9VUik7Ci0JICAgIAotCSAgICBJUHJvamVjdCBwcm9qZWN0MiA9IGNyZWF0ZVNpbXBsZVByb2plY3QoUFJPSkVDVDJfTkFNRSk7Ci0JICAgIGNvcHlGaWxlKHByb2plY3QyLCBBQ1RVQUxfVEVTVEZJTEVQQVRILCBXU0RMRklMRV9GSVZFKTsKLQkgICAgY3JlYXRlRm9sZGVyKHByb2plY3QyLCBGT0xERVI0X05BTUUpOyAgLy9mb2xkZXIgd2l0aCBubyBjb250ZW50Ci0JICAgIElGb2xkZXIgZm9sZGVyNSA9IGNyZWF0ZUZvbGRlcihwcm9qZWN0MiwgRk9MREVSNV9OQU1FKTsKLQkgICAgY29weUZpbGUoZm9sZGVyNSwgQUNUVUFMX1RFU1RGSUxFUEFUSCwgV1NETEZJTEVfU0lYKTsKLQkgICAgSVByb2plY3QgcHJvamVjdDMgPSBjcmVhdGVTaW1wbGVQcm9qZWN0KFBST0pFQ1QzX05BTUUpOwotCSAgICBjb3B5RmlsZShwcm9qZWN0MywgQUNUVUFMX1RFU1RGSUxFUEFUSCwgWE1MRklMRV9PTkUpOwotCQkgIH0KLQkJICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0JCSAgewotCQkJICBlLnByaW50U3RhY2tUcmFjZSgpOwotCQkgIH0KLQkgCi0JCS8vY29kZSB0byBjaGVjayB3b3Jrc3BhY2Ugc2V0IHVwIC0gZGVidWcKLQkJLypEYXRhUmVzb3VyY2VWaXNpdG9yIHZpc2l0b3IgPSBuZXcgRGF0YVJlc291cmNlVmlzaXRvcigpOwotCSAgICByb290LmFjY2VwdCh2aXNpdG9yKTsKLQkgICAgdmlzaXRvci52aXNpdChyb290KTsqLwotCSAgICAKLQkgICAgU3lzdGVtLm91dC5wcmludGxuKCItLS0tLS0gbG9jYXRvciBkYXRhIHNldHVwIGNvbXBsZXRlIik7Ci0JICB9Ci0JCi0JcHJvdGVjdGVkIGNsYXNzIERhdGFSZXNvdXJjZVZpc2l0b3IgaW1wbGVtZW50cyBJUmVzb3VyY2VWaXNpdG9yCi0JewotICAgIAlwdWJsaWMgYm9vbGVhbiB2aXNpdChJUmVzb3VyY2UgcmVzb3VyY2UpIHRocm93cyBDb3JlRXhjZXB0aW9uIHsKLSAgICAJCWlmICgocmVzb3VyY2UgaW5zdGFuY2VvZiBJUHJvamVjdCkgfHwgKHJlc291cmNlIGluc3RhbmNlb2YgSUZvbGRlcikpCi0gICAgCQl7Ci0gICAgCQkgIFN5c3RlbS5vdXQucHJpbnRsbigidmlzaXRpbmcgIiArIHJlc291cmNlLmdldE5hbWUoKSk7ICAgIAkJICAKLSAgICAJCX0KLSAgICAJCWVsc2UgaWYgKHJlc291cmNlIGluc3RhbmNlb2YgSUZpbGUpCi0gICAgCQl7Ci0gICAgCQkJU3lzdGVtLm91dC5wcmludGxuKCJmb3VuZCBmaWxlICIgKyByZXNvdXJjZS5nZXROYW1lKCkpOyAgICAJCQkKLSAgICAJCX0KLSAgICAJCXJldHVybiB0cnVlOwotICAgIAl9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy9wbHVnaW4vVGVzdHNQbHVnaW4uamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvcGx1Z2luL1Rlc3RzUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNTZiNjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy9wbHVnaW4vVGVzdHNQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnBsdWdpbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci0KLS8qKgotICogVGhlIG1haW4gcGx1Z2luIGNsYXNzIHRvIGJlIHVzZWQgaW4gdGhlIGRlc2t0b3AuCi0gKi8KLXB1YmxpYyBjbGFzcyBUZXN0c1BsdWdpbiBleHRlbmRzIFBsdWdpbiB7Ci0JLy9UaGUgc2hhcmVkIGluc3RhbmNlLgotCXByaXZhdGUgc3RhdGljIFRlc3RzUGx1Z2luIHBsdWdpbjsKLQkKLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IuCi0JICovCi0JcHVibGljIFRlc3RzUGx1Z2luKCkgewotCQlzdXBlcigpOwotCQlwbHVnaW4gPSB0aGlzOwotCX0KLQotCS8qKgotCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB1cG9uIHBsdWctaW4gYWN0aXZhdGlvbgotCSAqLwotCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0YXJ0KGNvbnRleHQpOwotCX0KLQotCS8qKgotCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBwbHVnLWluIGlzIHN0b3BwZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0b3AoY29udGV4dCk7Ci0JCXBsdWdpbiA9IG51bGw7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgVGVzdHNQbHVnaW4gZ2V0RGVmYXVsdCgpIHsKLQkJcmV0dXJuIHBsdWdpbjsKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdW5pdHRlc3QvQWxsV1NKVW5pdFRlc3RzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L0FsbFdTSlVuaXRUZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGNjZGE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdW5pdHRlc3QvQWxsV1NKVW5pdFRlc3RzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy50ZXN0cy51bml0dGVzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy50ZXN0cy5kYXRhLkxvY2F0b3JXb3Jrc3BhY2VTZXR1cDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFJlc3VsdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotaW1wb3J0IGp1bml0LnRleHR1aS5UZXN0UnVubmVyOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgdG8gcnVuIGFsbCB0aGUgdW5pdHRlc3QgdGVzdHMuCi0gKi8KLXB1YmxpYyBjbGFzcyBBbGxXU0pVbml0VGVzdHMgZXh0ZW5kcyBUZXN0Q2FzZQotewotICAvKioKLSAgICogTWV0aG9kIHBhcnNlQXJncy4KLSAgICogCi0gICAqIEBwYXJhbSBhcmdzCi0gICAqLwotICBwcml2YXRlIHZvaWQgcGFyc2VBcmdzKE9iamVjdCBhcmdzKQotICB7Ci0gICAgLy8gdHlwaWNpYWxseSBhcmdzIGlzIGFuIGFycmF5IG9mIHN0cmluZ3MsCi0gICAgLy8gbm90IHN1cmUgd2hlbiBpdCB3b3VsZG4ndCBiZS4KLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCi0gIHsKLSAgICBuZXcgQWxsV1NKVW5pdFRlc3RzKCkucnVuTWFpbihhcmdzKTsKLSAgfQotCi0gIHB1YmxpYyBPYmplY3QgcnVuTWFpbihPYmplY3QgYXJncykKLSAgewotICAgIE9iamVjdCByZXN1bHQgPSBudWxsOwotICAgIHRyeQotICAgIHsKLSAgICAgIFRlc3RSdW5uZXIgdGVzdFJ1bm5lciA9IG51bGw7Ci0KLSAgICAgIHBhcnNlQXJncyhhcmdzKTsKLQotICAgICAgdGVzdFJ1bm5lciA9IG5ldyBUZXN0UnVubmVyKFN5c3RlbS5vdXQpOwotIAotCi0gICAgICBUZXN0IHN1aXRlID0gc3VpdGUoKTsKLSAgICAgIFRlc3RSZXN1bHQgdGVzdFJlc3VsdCA9IHRlc3RSdW5uZXIuZG9SdW4oc3VpdGUsIGZhbHNlKTsKLSAgICAgIHByaW50SGVhZGVyKHRlc3RSZXN1bHQpOyAgICAgIAotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmVzdWx0ID0gZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSB0ZXN0U3VpdGUgPSBuZXcgVGVzdFN1aXRlKCk7Ci0gLy9hZGQgdW5pdCB0ZXN0cyB0byBzdWl0ZSBoZXJlLi4uCi0gICAgdGVzdFN1aXRlLmFkZFRlc3QoIExvY2F0b3JXb3Jrc3BhY2VTZXR1cC5zdWl0ZSgpKTsKLSAgICB0ZXN0U3VpdGUuYWRkVGVzdCggV2ViU2VydmljZUZpbmRlclRlc3RzLnN1aXRlKCkpOwotICAgIHRlc3RTdWl0ZS5hZGRUZXN0KCBXU0RMQ29waWVyVGVzdHMuc3VpdGUoKSk7Ci0gICAgcmV0dXJuIHRlc3RTdWl0ZTsKLSAgfQotCi0gIC8qKgotICAgKiBQcmludHMgdGhlIGhlYWRlciBvZiB0aGUgcmVwb3J0Ci0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBwcmludEhlYWRlcihUZXN0UmVzdWx0IHJlc3VsdCkKLSAgewotICAgIGlmIChyZXN1bHQud2FzU3VjY2Vzc2Z1bCgpKQotICAgIHsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOwotICAgICAgU3lzdGVtLm91dC5wcmludCgiT0siKTsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICgiICsgcmVzdWx0LnJ1bkNvdW50KCkgKyAiIHRlc3RzKSIpOwotCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRkFJTFVSRVMhISEiKTsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKLSAgICAgICAgIlRlc3RzIHJ1bjogIgotICAgICAgICAgICsgcmVzdWx0LnJ1bkNvdW50KCkKLSAgICAgICAgICArICIsICBGYWlsdXJlczogIgotICAgICAgICAgICsgcmVzdWx0LmZhaWx1cmVDb3VudCgpCi0gICAgICAgICAgKyAiLCAgRXJyb3JzOiAiCi0gICAgICAgICAgKyByZXN1bHQuZXJyb3JDb3VudCgpKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdW5pdHRlc3QvTGF1bmNoVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91bml0dGVzdC9MYXVuY2hUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNmVmZTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91bml0dGVzdC9MYXVuY2hUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy50ZXN0cy51bml0dGVzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGxhdGZvcm1SdW5uYWJsZTsKLQotLyoqCi0gKiBNaW5pbWFsIGFwcCB0byBydW4gYXMgRWNsaXBzZSAiYXBwbGljYXRpb24iCi0gKi8KLXB1YmxpYyBjbGFzcyBMYXVuY2hUZXN0IGltcGxlbWVudHMgSVBsYXRmb3JtUnVubmFibGUKLXsKLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQbGF0Zm9ybVJ1bm5hYmxlI3J1bihPYmplY3QpCi0gICAqLwotICBwdWJsaWMgT2JqZWN0IHJ1bihPYmplY3QgYXJncykgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0KLSAgICBPYmplY3QgcmVzdWx0ID0gbmV3IEFsbFdTSlVuaXRUZXN0cygpLnJ1bk1haW4oYXJncyk7Ci0KLSAgICBpZiAocmVzdWx0ICE9IG51bGwpCi0gICAgewotICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFRocm93YWJsZSkKLSAgICAgIHsKLSAgICAgICAgKChUaHJvd2FibGUpIHJlc3VsdCkucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidGVzdHMgZGlkbid0IHJldHVybiAnb2snIik7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBlbHNlCi0gICAgICByZXR1cm4gSVBsYXRmb3JtUnVubmFibGUuRVhJVF9PSzsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91bml0dGVzdC9SZWdpc3RyeVRlc3RzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L1JlZ2lzdHJ5VGVzdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVhMzZlNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L1JlZ2lzdHJ5VGVzdHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnVuaXR0ZXN0OwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5Lk5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC5yZWdpc3RyeS5SZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnJlZ2lzdHJ5LlJlZ2lzdHJ5RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnRheG9ub215LkNhdGVnb3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5tb2RlbC52MTAudGF4b25vbXkuVGF4b25vbXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC50YXhvbm9teS5UYXhvbm9teUZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVGF4b25vbWllczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwubW9kZWwudjEwLnVkZGlyZWdpc3RyeS5VRERJUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLm1vZGVsLnYxMC51ZGRpcmVnaXN0cnkuVURESVJlZ2lzdHJ5RmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuSVJlZ2lzdHJ5TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucmVnaXN0cnkuUmVnaXN0cnlTZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5yZWdpc3RyeS5VRERJUmVnaXN0cnlTZXJ2aWNlOwotCi1wdWJsaWMgY2xhc3MgUmVnaXN0cnlUZXN0cyBleHRlbmRzIFRlc3RDYXNlCi17Ci0JcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlICgpCi0JewotCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShSZWdpc3RyeVRlc3RzLmNsYXNzKTsKLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGVzIGEgbmV3IFRheG9ub215IG1vZGVsIGFuZCBwYXNzZXMgaXQgdG8KLQkgKiA8Y29kZT5SZWdpc3RyeVNlcnZpY2Uuc2F2ZVRheG9ub215KCk8L2NvZGU+Ci0JICogd2hlcmUgdGhlIG1vZGVsIGlzIHBlcnNpc3RlZCB0byBhIHBsYXRmb3JtCi0JICogc3BlY2lmaWVkIHRlbXBvcmFyeSBmaWxlc3lzdGVtIGxvY2F0aW9uLgotCSAqLwotCXB1YmxpYyB2b2lkIHRlc3RfUmVnaXN0cnlTZXJ2aWNlX3NhdmVUYXhvbm9teSAoKQotCXsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJTVEFSVElORyB0ZXN0X1JlZ2lzdHJ5U2VydmljZV9zYXZlVGF4b25vbXkiKTsKLQkJdHJ5Ci0JCXsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQ3JlYXRpbmcgUmVnaXN0cnlTZXJ2aWNlIGFuZCBUYXhvbm9teSIpOwotCQkJUmVnaXN0cnlTZXJ2aWNlIHJlZ2lzdHJ5U2VydmljZSA9IFJlZ2lzdHJ5U2VydmljZS5pbnN0YW5jZSgpOwkJCQotCQkJVGF4b25vbXkgdGF4b25vbXkgPSByZWdpc3RyeVNlcnZpY2UubmV3VGF4b25vbXkoKTsKLQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJCdWlsZGluZyBhIHNpbXBsZSBUYXhvbm9teSBtb2RlbCIpOwotCQkJdGF4b25vbXkuc2V0SWQoIm15LnRheG9ub215Iik7Ci0JCQl0YXhvbm9teS5zZXROYW1lKCJNeSBUYXhvbm9teSIpOwotCQkJRUxpc3QgbGlzdCA9IHRheG9ub215LmdldENhdGVnb3J5KCk7Ci0JCQlDYXRlZ29yeSBjYXRlZ29yeTEgPSBUYXhvbm9teUZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUNhdGVnb3J5KCk7Ci0JCQljYXRlZ29yeTEuc2V0TmFtZSgiTXkgZmlyc3QgY2F0ZWdvcnkiKTsKLQkJCWNhdGVnb3J5MS5zZXRDb2RlKCIxIik7Ci0JCQlDYXRlZ29yeSBjYXRlZ29yeTIgPSBUYXhvbm9teUZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUNhdGVnb3J5KCk7Ci0JCQljYXRlZ29yeTIuc2V0TmFtZSgiTXkgc2Vjb25kIGNhdGVnb3J5Iik7Ci0JCQljYXRlZ29yeTIuc2V0Q29kZSgiMiIpOwotCQkJQ2F0ZWdvcnkgY2F0ZWdvcnkzID0gVGF4b25vbXlGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVDYXRlZ29yeSgpOwotCQkJY2F0ZWdvcnkzLnNldE5hbWUoIk15IHRoaXJkIGNhdGVnb3J5Iik7Ci0JCQljYXRlZ29yeTMuc2V0Q29kZSgiMi4xIik7Ci0JCQljYXRlZ29yeTIuZ2V0Q2F0ZWdvcnkoKS5hZGQoY2F0ZWdvcnkzKTsKLQkJCWxpc3QuYWRkKGNhdGVnb3J5MSk7Ci0JCQlsaXN0LmFkZChjYXRlZ29yeTIpOwotCi0JCQlGaWxlIGZpbGUgPSBGaWxlLmNyZWF0ZVRlbXBGaWxlKCJ0YXhvbm9teS4iLCIueG1sIik7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNhdmluZyB0aGUgVGF4b25vbXkgbW9kZWwgdG8gIitmaWxlLmdldENhbm9uaWNhbFBhdGgoKSk7Ci0JCQlyZWdpc3RyeVNlcnZpY2Uuc2F2ZVRheG9ub215KGZpbGUudG9VUkwoKSx0YXhvbm9teSk7Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBleGMpCi0JCXsKLQkJCWV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLQkJCWZhaWwoIlVuZXhwZWN0ZWQgVGhyb3dhYmxlIFsiK2V4Yy5nZXRNZXNzYWdlKCkrIl0iKTsKLQkJfQotCQlmaW5hbGx5Ci0JCXsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiRklOSVNIRUQgdGVzdF9SZWdpc3RyeVNlcnZpY2Vfc2F2ZVRheG9ub215XG4iKTsKLQkJfQotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgVURESSBSZWdpc3RyeSBtb2RlbCBhbmQgcGFzc2VzIGl0IHRvCi0JICogPGNvZGU+UmVnaXN0cnlTZXJ2aWNlLnNhdmVSZWdpc3RyeSgpPC9jb2RlPgotCSAqIHdoZXJlIHRoZSBtb2RlbCBpcyBwZXJzaXN0ZWQgdG8gYSBwbGF0Zm9ybQotCSAqIHNwZWNpZmllZCB0ZW1wb3JhcnkgZmlsZXN5c3RlbSBsb2NhdGlvbi4KLQkgKi8KLQlwdWJsaWMgdm9pZCB0ZXN0X1JlZ2lzdHJ5U2VydmljZV9zYXZlUmVnaXN0cnkgKCkKLQl7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiU1RBUlRJTkcgdGVzdF9SZWdpc3RyeVNlcnZpY2Vfc2F2ZVJlZ2lzdHJ5Iik7Ci0JCXRyeQotCQl7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNyZWF0aW5nIFJlZ2lzdHJ5U2VydmljZSwgVURESVJlZ2lzdHJ5U2VydmljZSBhbmQgUmVnaXN0cnkiKTsKLQkJCVJlZ2lzdHJ5U2VydmljZSByZWdpc3RyeVNlcnZpY2UgPSBSZWdpc3RyeVNlcnZpY2UuaW5zdGFuY2UoKTsKLQkJCVVERElSZWdpc3RyeVNlcnZpY2UgdWRkaVJlZ2lzdHJ5U2VydmljZSA9IFVERElSZWdpc3RyeVNlcnZpY2UuaW5zdGFuY2UoKTsJCQkKLQkJCVVERElSZWdpc3RyeSB1ZGRpUmVnaXN0cnkgPSB1ZGRpUmVnaXN0cnlTZXJ2aWNlLm5ld1VERElSZWdpc3RyeSgpOwotCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkJ1aWxkaW5nIGEgc2ltcGxlIFJlZ2lzdHJ5IG1vZGVsIik7Ci0JCQl1ZGRpUmVnaXN0cnkuc2V0SWQoIm15LnJlZ2lzdHJ5Iik7Ci0JCQl1ZGRpUmVnaXN0cnkuc2V0VmVyc2lvbigiMi4wIik7Ci0JCQl1ZGRpUmVnaXN0cnkuc2V0RGlzY292ZXJ5VVJMKCJodHRwOi8vc29tZS5kaXNjb3ZlcnkudXJsIik7Ci0JCQl1ZGRpUmVnaXN0cnkuc2V0UHVibGljYXRpb25VUkwoImh0dHA6Ly9zb21lLnB1YmxpY2F0aW9uLnVybCIpOwotCQkJdWRkaVJlZ2lzdHJ5LnNldERlZmF1bHRMb2dpbigiaG9ja2V5ZmFuYXRpYyIpOwotCQkJTmFtZSBuYW1lID0gUmVnaXN0cnlGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVOYW1lKCk7Ci0JCQluYW1lLnNldFZhbHVlKCJNeSBSZWdpc3RyeSIpOwotCQkJdWRkaVJlZ2lzdHJ5LmdldE5hbWUoKS5hZGQobmFtZSk7Ci0JCQlUYXhvbm9teSB0YXhvbm9teVJlZiA9IHJlZ2lzdHJ5U2VydmljZS5uZXdUYXhvbm9teSgpOwotCQkJdGF4b25vbXlSZWYuc2V0UmVmKCJteS50YXhvbm9teSIpOwotCQkJVGF4b25vbWllcyB0ID0gdWRkaVJlZ2lzdHJ5LmdldFRheG9ub21pZXMoKTsKLQkJCWlmICh0ID09IG51bGwpCi0JCQl7Ci0JCQkJdCA9IFVERElSZWdpc3RyeUZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVRheG9ub21pZXMoKTsKLQkJCQl1ZGRpUmVnaXN0cnkuc2V0VGF4b25vbWllcyh0KTsKLQkJCX0KLQkJCUVMaXN0IGUgPSB0LmdldFRheG9ub215KCk7Ci0JCQllLmFkZCh0YXhvbm9teVJlZik7Ci0KLQkJCUZpbGUgZmlsZSA9IEZpbGUuY3JlYXRlVGVtcEZpbGUoInJlZ2lzdHJ5LiIsIi54bWwiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiU2F2aW5nIHRoZSBSZWdpc3RyeSBtb2RlbCB0byAiK2ZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKLQkJCXJlZ2lzdHJ5U2VydmljZS5zYXZlUmVnaXN0cnkoZmlsZS50b1VSTCgpLHVkZGlSZWdpc3RyeSk7Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBleGMpCi0JCXsKLQkJCWV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLQkJCWZhaWwoIlVuZXhwZWN0ZWQgVGhyb3dhYmxlIFsiK2V4Yy5nZXRNZXNzYWdlKCkrIl0iKTsKLQkJfQotCQlmaW5hbGx5Ci0JCXsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiRklOSVNIRUQgdGVzdF9SZWdpc3RyeVNlcnZpY2Vfc2F2ZVJlZ2lzdHJ5XG4iKTsKLQkJfQotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgYSBuZXcgVURESSBSZWdpc3RyeSBtb2RlbCBhbmQgYSBuZXcgVGF4b25vbXkKLQkgKiBtb2RlbCwgYXNzb2NpYXRlcyB0aGUgbGF0dGVyIHdpdGggdGhlIGZvcm1lciwgYW5kCi0JICogZHJpdmVzIDxjb2RlPklSZWdpc3RyeU1hbmFnZXIuc2F2ZVJlZ2lzdHJ5KCk8L2NvZGU+Ci0JICogdG8gc2F2ZSB0aGUgbW9kZWxzIGFuZCB0aGUgaW5kZXggZG9jdW1lbnQgdG8gdGhlCi0JICogcHJlZmVycmVkIGxvY2F0aW9uIG9mIHRoZSBkZWZhdWx0IHJlZ2lzdHJ5IG1hbmFnZXIuCi0JICovCi0JcHVibGljIHZvaWQgdGVzdF9SZWdpc3RyeU1hbmFnZXJfc2F2ZVJlZ2lzdHJ5KCkKLQl7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiU1RBUlRJTkcgdGVzdF9SZWdpc3RyeU1hbmFnZXJfc2F2ZVJlZ2lzdHJ5Iik7Ci0JCXRyeSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNyZWF0aW5nIFJlZ2lzdHJ5U2VydmljZSBhbmQgR2V0dGluZyBSZWdpc3RyeU1hbmFnZXIiKTsJCi0JCQlSZWdpc3RyeVNlcnZpY2UgcmVnaXN0cnlTZXJ2aWNlID0gUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk7CQotCQkJSVJlZ2lzdHJ5TWFuYWdlciByZWdNYW5hZ2VyID0gcmVnaXN0cnlTZXJ2aWNlLmdldERlZmF1bHRSZWdpc3RyeU1hbmFnZXIoKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiVGhlIGxvY2F0aW9uIG9mIHRoZSBkZWZhdWx0IGluZGV4IGlzICIgKyByZWdNYW5hZ2VyLmdldFVSTCgpKTsKLQotCQkJLy9idWlsZCB0aGUgaG9ja2V5IHRheG9ub215Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkJ1aWxkaW5nIHRoZSBob2NrZXkgVGF4b25vbXkgbW9kZWwiKTsKLQkJCVRheG9ub215IGhvY2tleVRheG9ub215ID0gcmVnaXN0cnlTZXJ2aWNlLm5ld1RheG9ub215KCk7Ci0JCQlob2NrZXlUYXhvbm9teS5zZXRJZCgiaG9ja2V5LnRheG9ub215Iik7Ci0JCQlob2NrZXlUYXhvbm9teS5zZXROYW1lKCJob2NrZXkgVGF4b25vbXkiKTsKLQkJCUVMaXN0IGxpc3QgPSBob2NrZXlUYXhvbm9teS5nZXRDYXRlZ29yeSgpOwotCQkJQ2F0ZWdvcnkgY2F0ZWdvcnkxID0gVGF4b25vbXlGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVDYXRlZ29yeSgpOwotCQkJQ2F0ZWdvcnkgY2F0ZWdvcnk0ID0gVGF4b25vbXlGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVDYXRlZ29yeSgpOwotCQkJY2F0ZWdvcnk0LnNldE5hbWUoIlBybyIpOwotCQkJY2F0ZWdvcnk0LnNldENvZGUoIjQiKTsKLQkJCUNhdGVnb3J5IGNhdGVnb3J5NSA9IFRheG9ub215RmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlQ2F0ZWdvcnkoKTsKLQkJCWNhdGVnb3J5NS5zZXROYW1lKCJBSEwiKTsKLQkJCWNhdGVnb3J5NS5zZXRDb2RlKCI0LjEiKTsKLQkJCUNhdGVnb3J5IGNhdGVnb3J5NiA9IFRheG9ub215RmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlQ2F0ZWdvcnkoKTsKLQkJCWNhdGVnb3J5Ni5zZXROYW1lKCJOSEwiKTsKLQkJCWNhdGVnb3J5Ni5zZXRDb2RlKCI0LjIiKTsKLQkJCWNhdGVnb3J5MS5zZXROYW1lKCJKdW5pb3IiKTsKLQkJCWNhdGVnb3J5MS5zZXRDb2RlKCIxIik7Ci0JCQlDYXRlZ29yeSBjYXRlZ29yeTIgPSBUYXhvbm9teUZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUNhdGVnb3J5KCk7Ci0JCQljYXRlZ29yeTIuc2V0TmFtZSgiTWlkZ2V0Iik7Ci0JCQljYXRlZ29yeTIuc2V0Q29kZSgiMiIpOwotCQkJQ2F0ZWdvcnkgY2F0ZWdvcnkzID0gVGF4b25vbXlGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVDYXRlZ29yeSgpOwotCQkJY2F0ZWdvcnkzLnNldE5hbWUoIkJhbnRhbSIpOwotCQkJY2F0ZWdvcnkzLnNldENvZGUoIjMiKTsKLQkJCWNhdGVnb3J5NC5nZXRDYXRlZ29yeSgpLmFkZChjYXRlZ29yeTUpOwotCQkJY2F0ZWdvcnk0LmdldENhdGVnb3J5KCkuYWRkKGNhdGVnb3J5Nik7Ci0JCQlsaXN0LmFkZChjYXRlZ29yeTEpOwotCQkJbGlzdC5hZGQoY2F0ZWdvcnkyKTsKLQkJCWxpc3QuYWRkKGNhdGVnb3J5Myk7Ci0JCQlsaXN0LmFkZChjYXRlZ29yeTQpOwotCQkJCi0JCQkvL3NhdmUgdGhlIGhvY2tleSB0YXhvbm9teQotCQkJVGF4b25vbXkgaG9ja2V5VGF4b25vbXlSZWYgPSByZWdNYW5hZ2VyLnNhdmVUYXhvbm9teShob2NrZXlUYXhvbm9teSk7Ci0KLQkJCS8vbWFrZSB0aGUgaG9ja2V5IHJlZ2lzdHJ5Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkJ1aWxkaW5nIHRoZSBob2NrZXkgUmVnaXN0cnkgbW9kZWwiKTsKLQkJCVVERElSZWdpc3RyeVNlcnZpY2UgdWRkaVJlZ2lzdHJ5U2VydmljZSA9IFVERElSZWdpc3RyeVNlcnZpY2UuaW5zdGFuY2UoKTsJCQkKLQkJCVVERElSZWdpc3RyeSB1ZGRpUmVnaXN0cnkgPSB1ZGRpUmVnaXN0cnlTZXJ2aWNlLm5ld1VERElSZWdpc3RyeSgpOwotCQkJdWRkaVJlZ2lzdHJ5LnNldElkKCJob2NrZXkucmVnaXN0cnkiKTsKLQkJCXVkZGlSZWdpc3RyeS5zZXRWZXJzaW9uKCIyLjAiKTsKLQkJCXVkZGlSZWdpc3RyeS5zZXREZWZhdWx0TG9naW4oImhvY2tleWZhbmF0aWMiKTsKLQkJCXVkZGlSZWdpc3RyeS5zZXREaXNjb3ZlcnlVUkwoImh0dHA6Ly9zb21lLmRpc2NvdmVyeS51cmwiKTsKLQkJCXVkZGlSZWdpc3RyeS5zZXRQdWJsaWNhdGlvblVSTCgiaHR0cDovL3NvbWUucHVibGljYXRpb24udXJsIik7Ci0JCQlOYW1lIG5hbWUgPSBSZWdpc3RyeUZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZU5hbWUoKTsKLQkJCW5hbWUuc2V0VmFsdWUoIkhvY2tleSBSZWdpc3RyeSIpOwotCQkJdWRkaVJlZ2lzdHJ5LmdldE5hbWUoKS5hZGQobmFtZSk7Ci0KLQkJCS8vIEFkZCB0aGUgcmVmZXJlbmNlIHRvIHRoZSB0YXhvbm9teSAoc2F2ZWQgYWJvdmUpIHRvIHRoZSByZWdpc3RyeS4gIAotCQkJdWRkaVJlZ2lzdHJ5U2VydmljZS5hZGRUYXhvbm9teSh1ZGRpUmVnaXN0cnksaG9ja2V5VGF4b25vbXlSZWYpOwotCi0JCQkvKgotCQkJVURESVRheG9ub215RmluZGVyIFVJVEZpbmRlciA9IG5ldyBVRERJVGF4b25vbXlGaW5kZXIoKTsKLQkJCXJlZ01hbmFnZXIuYWRkVGF4b25vbXlGaW5kZXIodWRkaVJlZ2lzdHJ5LmdldENsYXNzKCkuZ2V0TmFtZSgpLFVJVEZpbmRlcik7Ci0JCQkqLwotCQkJLy8gU2F2ZSB0aGUgdGhpbmcuCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNhdmluZyB0aGUgaG9ja2V5IFJlZ2lzdHJ5IG1vZGVsIik7Ci0JCQlyZWdNYW5hZ2VyLnNhdmVSZWdpc3RyeSh1ZGRpUmVnaXN0cnkpOwotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZXhjKQotCQl7Ci0JCQlleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0JCQlmYWlsKCJVbmV4cGVjdGVkIFRocm93YWJsZSBbIitleGMuZ2V0TWVzc2FnZSgpKyJdIik7Ci0JCX0KLQkJZmluYWxseQotCQl7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkZJTklTSEVEIHRlc3RfUmVnaXN0cnlNYW5hZ2VyX3NhdmVSZWdpc3RyeVxuIik7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBMb2FkcyB0aGUgcmVnaXN0cnkgYW5kIHRheG9ub215IGluIHRoZSBpbmRleCBjcmVhdGVkIGluCi0JICogdGVzdF9SZWdpc3RyeU1hbmFnZXJfc2F2ZVJlZ2lzdHJ5LCB0aGVuIGFzc2VydHMgdGhhdCB0aGUKLQkgKiBjb250ZW50IG9mIHRoZSBtb2RlbCBpcyB3aGF0IHdlIGV4cGVjdC4KLQkgKi8KLQlwdWJsaWMgdm9pZCB0ZXN0X1JlZ2lzdHJ5TWFuYWdlcl9sb2FkUmVnaXN0cnkoKQotCXsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJTVEFSVElORyB0ZXN0X1JlZ2lzdHJ5TWFuYWdlcl9sb2FkUmVnaXN0cnkiKTsKLQkJdHJ5IHsKLQkJCS8vIFNldHVwCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNyZWF0aW5nIFJlZ2lzdHJ5U2VydmljZSBhbmQgR2V0dGluZyBSZWdpc3RyeU1hbmFnZXIiKTsJCi0JCQlSZWdpc3RyeVNlcnZpY2UgcmVnaXN0cnlTZXJ2aWNlID0gUmVnaXN0cnlTZXJ2aWNlLmluc3RhbmNlKCk7CQotCQkJSVJlZ2lzdHJ5TWFuYWdlciByZWdNYW5hZ2VyID0gcmVnaXN0cnlTZXJ2aWNlLmdldERlZmF1bHRSZWdpc3RyeU1hbmFnZXIoKTsKLQkJCQotCQkJLy8gR2V0IHRoZSBvbmUgcmVnaXN0cnkgVVJJIHdlIGV4cGVjdCwgYW5kIGxvYWQgdGhlIHJlZ2lzdHJ5LgotCQkJU3RyaW5nW10gcmVnaXN0cmllcyA9IHJlZ01hbmFnZXIuZ2V0UmVnaXN0cnlVUklzKCk7Ci0JCQlhc3NlcnRFcXVhbHMoIlVuZXhwZWN0ZWQgbnVtYmVyIG9mIHJlZ2lzdHJpZXMgIityZWdpc3RyaWVzLmxlbmd0aCxyZWdpc3RyaWVzLmxlbmd0aCwxKTsKLQkJCVN0cmluZyB1cmkgPSByZWdpc3RyaWVzWzBdOwotCQkJU3lzdGVtLm91dC5wcmludGxuKCJMb2FkaW5nIHJlZ2lzdHJ5ICIgKyB1cmkpOwotCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSByZWdNYW5hZ2VyLmxvYWRSZWdpc3RyeSh1cmkpOwotCQkJU3lzdGVtLm91dC5wcmludGxuKCJGb3VuZCByZWdpc3RyeSAiICsgcmVnaXN0cnkuZ2V0SWQoKSk7Ci0JCQlhc3NlcnRFcXVhbHMoIkRpZCBub3QgZmluZCBob2NrZXkgcmVnaXN0cnkiLCJob2NrZXkucmVnaXN0cnkiLHJlZ2lzdHJ5LmdldElkKCkpOwotCQkJCi0JCQkvLyBJdCdzIHN1cHBvc2VkIHRvIGJlIGEgVURESSByZWdpc3RyeS4gVmVyaWZ5IGl0IGFuZCBjaGVjayBpdHMgdmFsdWVzLgotCQkJYXNzZXJ0VHJ1ZSgiUmVnaXN0cnkgaXMgbm90IGEgVURESVJlZ2lzdHJ5IiwocmVnaXN0cnkgaW5zdGFuY2VvZiBVRERJUmVnaXN0cnkpKTsKLQkJCVVERElSZWdpc3RyeSB1ZGRpUmVnaXN0cnkgPSAoVURESVJlZ2lzdHJ5KXJlZ2lzdHJ5OwotCQkJYXNzZXJ0RXF1YWxzKHVkZGlSZWdpc3RyeS5nZXRWZXJzaW9uKCksIjIuMCIpOwotCQkJYXNzZXJ0RXF1YWxzKHVkZGlSZWdpc3RyeS5nZXREZWZhdWx0TG9naW4oKSwiaG9ja2V5ZmFuYXRpYyIpOwotCQkJYXNzZXJ0RXF1YWxzKHVkZGlSZWdpc3RyeS5nZXREaXNjb3ZlcnlVUkwoKSwiaHR0cDovL3NvbWUuZGlzY292ZXJ5LnVybCIpOwotCQkJYXNzZXJ0RXF1YWxzKHVkZGlSZWdpc3RyeS5nZXRQdWJsaWNhdGlvblVSTCgpLCJodHRwOi8vc29tZS5wdWJsaWNhdGlvbi51cmwiKTsKLQkJCQotCQkJLy8gTG9hZCB0aGUgdGF4b25vbWllcyB1c2VkIHRoZSBVRERJIHJlZ2lzdHJ5LgotCQkJVURESVJlZ2lzdHJ5U2VydmljZSB1ZGRpUmVnaXN0cnlTZXJ2aWNlID0gVURESVJlZ2lzdHJ5U2VydmljZS5pbnN0YW5jZSgpOwotCQkJVGF4b25vbXlbXSB0YXhvbm9taWVzID0gcmVnTWFuYWdlci5sb2FkVGF4b25vbWllcyh1ZGRpUmVnaXN0cnlTZXJ2aWNlLmdldFRheG9ub215VVJJcyh1ZGRpUmVnaXN0cnkpKTsKLQkJCWFzc2VydEVxdWFscygiVW5leHBlY3RlZCBudW1iZXIgb2YgdGF4b25vbWllcyAiK3RheG9ub21pZXMubGVuZ3RoLHRheG9ub21pZXMubGVuZ3RoLDEpOwotCQkJVGF4b25vbXkgdGF4b25vbXkgPSB0YXhvbm9taWVzWzBdOwotCQkJU3lzdGVtLm91dC5wcmludGxuKCJGb3VuZCB0YXhvbm9teSAiICsgdGF4b25vbXkuZ2V0SWQoKSk7Ci0JCQlBc3NlcnQuYXNzZXJ0RXF1YWxzKCJEaWQgbm90IGZpbmQgaG9ja2V5IHRheG9ub215IiwiaG9ja2V5LnRheG9ub215Iix0YXhvbm9teS5nZXRJZCgpKTsKLQkJCQotCQkJLy8gRHVtcCBvdXQgdGhlIHZhbHVlcyAobm8gYXNzZXJ0aW9ucyBoZXJlKS4KLQkJCUVMaXN0IGNMaXN0ID0gdGF4b25vbXkuZ2V0Q2F0ZWdvcnkoKTsKLQkJCWZvcihpbnQgaSA9IDA7aTxjTGlzdC5zaXplKCk7aSsrKXsKLQkJCQlDYXRlZ29yeSBjYXRlZ29yeSA9IChDYXRlZ29yeSljTGlzdC5nZXQoaSk7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJGb3VuZCBjYXRlZ29yeSAiICsgY2F0ZWdvcnkuZ2V0TmFtZSgpKTsKLQkJCQlFTGlzdCBjMkxpc3QgPSBjYXRlZ29yeS5nZXRDYXRlZ29yeSgpOwotCQkJCWZvcihpbnQgaiA9IDA7ajxjMkxpc3Quc2l6ZSgpO2orKyl7Ci0JCQkJCUNhdGVnb3J5IGlDYXRlZ29yeSA9IChDYXRlZ29yeSljMkxpc3QuZ2V0KGopOwotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkZvdW5kIHN1YmNhdGVnb3J5ICIgKyBpQ2F0ZWdvcnkuZ2V0TmFtZSgpKTsKLQkJCQl9Ci0JCQl9CQkJCQkKLQkJfQotCQljYXRjaChFeGNlcHRpb24gdCkKLQkJewotCQkJdC5wcmludFN0YWNrVHJhY2UoKTsKLQkJCWZhaWwoIlVuZXhwZWN0ZWQgVGhyb3dhYmxlIFsiK3QuZ2V0TWVzc2FnZSgpKyJdIik7Ci0JCX0KLQkJZmluYWxseQotCQl7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkZJTklTSEVEIHRlc3RfUmVnaXN0cnlNYW5hZ2VyX2xvYWRSZWdpc3RyeVxuIik7Ci0JCX0KLQl9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L1Rlc3RCdW5kbGVVdGlscy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91bml0dGVzdC9UZXN0QnVuZGxlVXRpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgyMmExMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L1Rlc3RCdW5kbGVVdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MudGVzdHMudW5pdHRlc3Q7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwuY29tbW9uLkJ1bmRsZVV0aWxzOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5WZXJzaW9uOwotCi1wdWJsaWMgY2xhc3MgVGVzdEJ1bmRsZVV0aWxzIGV4dGVuZHMgVGVzdENhc2UgewotCi0JcHVibGljIHZvaWQgdGVzdEdldFZlcnNpb24oKSB7Ci0JCVZlcnNpb24gdmVyc2lvbiA9IEJ1bmRsZVV0aWxzLmdldFZlcnNpb24oIm9yZy5lY2xpcHNlLndzdC53cyIpOwotCQlhc3NlcnROb3ROdWxsKCJ2ZXJzaW9uIHNob3VsZCBuZXZlciBiZSBudWxsIiwgdmVyc2lvbik7Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L1dTRExDb3BpZXJUZXN0cy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91bml0dGVzdC9XU0RMQ29waWVyVGVzdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE1ZTdhNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L1dTRExDb3BpZXJUZXN0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA3MDEyNiAgIDE3MTA3MSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgQ3JlYXRlIHB1YmxpYyB1dGlsaXR5IG1ldGhvZCBmb3IgY29weWluZyBXU0RMIGZpbGVzCi0gKiAyMDA3MDQwOSAgIDE4MTYzNSBtYWthbmRyZUBjYS5pYm0uY29tIC0gQW5kcmV3IE1haywgV1NETENvcGllciB1dGlsaXR5IHNob3VsZCBjcmVhdGUgdGFyZ2V0IGZvbGRlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnVuaXR0ZXN0OwotCi1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkZpbGVMb2NhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC51dGlsLldTRExDb3BpZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnBsdWdpbi5UZXN0c1BsdWdpbjsKLQotLyoqCi0gKiBKVW5pdCB0ZXN0cyBmb3IgV1NETENvcGllcgotICovCi1wdWJsaWMgY2xhc3MgV1NETENvcGllclRlc3RzIGV4dGVuZHMgVGVzdENhc2UgewotCQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBEQVRBX0RJUiAgICAgPSAiZGF0YS93c2RsY29waWVyLyI7Ci0JCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfRk9MREVSMSA9ICJ3c2RsMSI7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfRk9MREVSMiA9ICJ3c2RsMiI7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfRk9MREVSMyA9ICJ3c2RsMyI7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfRk9MREVSNCA9ICJ3c2RsNCI7Ci0JCi0JcHJpdmF0ZSBJUHJvamVjdCBwcm9qZWN0OwotCi0JLyoqCi0JICogUmV0dXJuIHN1aXRlIG9mIHRlc3RzIHRvIHJ1bi4KLQkgKiAKLQkgKiBAcmV0dXJuIEEgVGVzdFN1aXRlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKLQkJVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZSgiV1NETENvcGllclRlc3RzIik7Ci0JCXN1aXRlLmFkZFRlc3QobmV3IFdTRExDb3BpZXJUZXN0cygidGVzdENhc2UxIikpOwotCQlzdWl0ZS5hZGRUZXN0KG5ldyBXU0RMQ29waWVyVGVzdHMoInRlc3RDYXNlMiIpKTsKLQkJc3VpdGUuYWRkVGVzdChuZXcgV1NETENvcGllclRlc3RzKCJ0ZXN0Q2FzZTMiKSk7Ci0JCXN1aXRlLmFkZFRlc3QobmV3IFdTRExDb3BpZXJUZXN0cygidGVzdENhc2U0IikpOwotCQlzdWl0ZS5hZGRUZXN0KG5ldyBXU0RMQ29waWVyVGVzdHMoInRlc3RDYXNlNSIpKTsKLQkJc3VpdGUuYWRkVGVzdChuZXcgV1NETENvcGllclRlc3RzKCJ0ZXN0Q2FzZTYiKSk7Ci0JCXJldHVybiBzdWl0ZTsKLQl9Ci0JCQotCS8qKgotCSAqIENvbnN0cnVjdG9yLgotCSAqIAotCSAqIEBwYXJhbSBuYW1lIFRlc3QgbWV0aG9kIG5hbWUuCi0JICovCi0JcHVibGljIFdTRExDb3BpZXJUZXN0cyhTdHJpbmcgbmFtZSkgewotCQlzdXBlcihuYW1lKTsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3NldFVwKCkKLQkgKi8KLQlwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24gewotCSAgICBwcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KCJXU0RMQ29waWVyVGVzdHMiKTsKLQkgICAgCi0JICAgIGlmICghcHJvamVjdC5leGlzdHMoKSkKLQkgICAgCXByb2plY3QuY3JlYXRlKG51bGwpOwotCSAgICAJCi0JICAgIGlmICghcHJvamVjdC5pc09wZW4oKSkKLQkgICAgCXByb2plY3Qub3BlbihudWxsKTsKLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGUgYSBmb2xkZXIuCi0JICogQHBhcmFtIG5hbWUgTmFtZSBvZiBmb2xkZXIuCi0JICogQHJldHVybiBUaGUgY3JlYXRlZCBmb2xkZXIuCi0JICogQHRocm93cyBDb3JlRXhjZXB0aW9uCi0JICovCi0JcHJvdGVjdGVkIElGb2xkZXIgY3JlYXRlRm9sZGVyKFN0cmluZyBuYW1lKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCUlGb2xkZXIgZm9sZGVyID0gcHJvamVjdC5nZXRGb2xkZXIobmV3IFBhdGgobmFtZSkpOwotICAgICAgICBmb2xkZXIuY3JlYXRlKGZhbHNlLCB0cnVlLCBudWxsKTsKLQkgICAgcmV0dXJuIGZvbGRlcjsKLQl9Ci0JCi0JLyoKLQkgKiBWYWxpZGF0ZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBvZiB0aGUgdGFyZ2V0IGZvbGRlciBhZnRlciBjb3B5aW5nLgotCSAqLwotCXByaXZhdGUgdm9pZCB2YWxpZGF0ZShJRm9sZGVyIGZvbGRlciwgU3RyaW5nIGZpbGVuYW1lKSB7CQkKLQkJYXNzZXJ0Tm90TnVsbChmb2xkZXIuZmluZE1lbWJlcigiMS8yLzMvdGVzdC53c2RsIikpOwotCQlhc3NlcnROb3ROdWxsKGZvbGRlci5maW5kTWVtYmVyKCIxLzJhLyIgKyBmaWxlbmFtZSkpOwotCQlhc3NlcnROb3ROdWxsKGZvbGRlci5maW5kTWVtYmVyKCIxLzJhL3Rlc3QueHNkIikpOwotCQlhc3NlcnROb3ROdWxsKGZvbGRlci5maW5kTWVtYmVyKCJ0ZXN0LnhzZCIpKTsJCQotCX0KLQkKLQkvKgotCSAqIFZhbGlkYXRlIHRoZSB0aW1lc3RhbXBzIG9mIHRoZSBmaWxlcyBoYXZlIG5vdCBjaGFuZ2VkLgotCSAqLwotCXByaXZhdGUgbG9uZ1tdIHZhbGlkYXRlVGltZXN0YW1wcyhJRm9sZGVyIGZvbGRlciwgbG9uZ1tdIG9sZFRpbWVzdGFtcHMpIHsKLQkJCi0JCWxvbmdbXSBjdXJyZW50VGltZXN0YW1wcyA9IG5ldyBsb25nWzNdOwotCQkKLQkJY3VycmVudFRpbWVzdGFtcHNbMF0gPSBmb2xkZXIuZmluZE1lbWJlcigiMS8yLzMvdGVzdC53c2RsIikuZ2V0TW9kaWZpY2F0aW9uU3RhbXAoKTsKLQkJaWYgKG9sZFRpbWVzdGFtcHMgIT0gbnVsbCkgYXNzZXJ0RXF1YWxzKGN1cnJlbnRUaW1lc3RhbXBzWzBdLCBvbGRUaW1lc3RhbXBzWzBdKTsKLQotCQljdXJyZW50VGltZXN0YW1wc1sxXSA9IGZvbGRlci5maW5kTWVtYmVyKCIxLzJhL3Rlc3QueHNkIikuZ2V0TW9kaWZpY2F0aW9uU3RhbXAoKTsKLQkJaWYgKG9sZFRpbWVzdGFtcHMgIT0gbnVsbCkgYXNzZXJ0RXF1YWxzKGN1cnJlbnRUaW1lc3RhbXBzWzFdLCBvbGRUaW1lc3RhbXBzWzFdKTsKLQkJCi0JCWN1cnJlbnRUaW1lc3RhbXBzWzJdID0gZm9sZGVyLmZpbmRNZW1iZXIoInRlc3QueHNkIikuZ2V0TW9kaWZpY2F0aW9uU3RhbXAoKTsKLQkJaWYgKG9sZFRpbWVzdGFtcHMgIT0gbnVsbCkgYXNzZXJ0RXF1YWxzKGN1cnJlbnRUaW1lc3RhbXBzWzJdLCBvbGRUaW1lc3RhbXBzWzJdKTsKLQkJCi0JCXJldHVybiBjdXJyZW50VGltZXN0YW1wczsKLQl9Ci0JCi0JLyoqCi0JICogVGVzdCBjYXNlICMxCi0JICogLSBjb3BpZXMgd3NkbCBmcm9tIHRlc3QgZGF0YSBkaXJlY3RvcnkgdXNpbmcgZmlsZTovIFVSSSAKLQkgKi8KLQlwdWJsaWMgdm9pZCB0ZXN0Q2FzZTEoKSB7Ci0JCXRyeSB7Ci0JCQlVUkwgdXJsID0gVGVzdHNQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldEJ1bmRsZSgpLmdldEVudHJ5KERBVEFfRElSICsgIjEvMmEvc3RhcnQud3NkbCIpOwkJCQkKLQkJCXVybCA9IEZpbGVMb2NhdG9yLnRvRmlsZVVSTCh1cmwpOwotCQkJCi0JCQlJRm9sZGVyIGZvbGRlciA9IGNyZWF0ZUZvbGRlcihXU0RMX0ZPTERFUjEpOwotCQkJU3RyaW5nIGZvbGRlclVSSSA9ICJwbGF0Zm9ybTovcmVzb3VyY2UiICsgZm9sZGVyLmdldEZ1bGxQYXRoKCk7Ci0JCQkKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQ29weWluZyBmcm9tOiAiICsgdXJsKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQ29weWluZyB0bzogICAiICsgZm9sZGVyVVJJKTsKLQkJCQotCQkJV1NETENvcGllciBjb3BpZXIgPSBuZXcgV1NETENvcGllcigpOwotCQkJY29waWVyLnNldFNvdXJjZVVSSSh1cmwudG9TdHJpbmcoKSk7Ci0JCQljb3BpZXIuc2V0VGFyZ2V0Rm9sZGVyVVJJKGZvbGRlclVSSSk7Ci0JCQkKLQkJCVJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5ydW4oY29waWVyLCBudWxsKTsKLQkJCVJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkucmVmcmVzaExvY2FsKElSZXNvdXJjZS5ERVBUSF9JTkZJTklURSwgbnVsbCk7Ci0JCQkKLQkJCXZhbGlkYXRlKGZvbGRlciwgInN0YXJ0LndzZGwiKTsKLQkJCWFzc2VydEVxdWFscyhjb3BpZXIuZ2V0UmVsYXRpdmVQYXRoKCkudG9TdHJpbmcoKSwgIjEvMmEvc3RhcnQud3NkbCIpOwotCQkJCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlN1Y2Nlc3MhIik7Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oZSk7Ci0JCQlhc3NlcnRUcnVlKGUuZ2V0TWVzc2FnZSgpLCBmYWxzZSk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBUZXN0IGNhc2UgIzIKLQkgKiAtIGNvcGllcyB3c2RsIGZyb20gb25lIGZvbGRlciB0byBhbm90aGVyIHVzaW5nIHBsYXRmb3JtOi9yZXNvdXJjZSBVUkkKLQkgKiAtIGFsc28gY2hhbmdlcyB0aGUgdGFyZ2V0IGZpbGVuYW1lCi0JICovCi0JcHVibGljIHZvaWQgdGVzdENhc2UyKCkgewotCQl0cnkgewotCQkJSVJlc291cmNlIHJlc291cmNlID0gcHJvamVjdC5nZXRGb2xkZXIoV1NETF9GT0xERVIxKS5maW5kTWVtYmVyKCIxLzJhL3N0YXJ0LndzZGwiKTsKLQkJCUlGb2xkZXIgZm9sZGVyID0gY3JlYXRlRm9sZGVyKFdTRExfRk9MREVSMik7CQkJCi0JCQkKLQkJCVN0cmluZyBwYXRoID0gInBsYXRmb3JtOi9yZXNvdXJjZSIgKyByZXNvdXJjZS5nZXRGdWxsUGF0aCgpOyAJCQkJCQkJCQkKLQkJCVN0cmluZyBmb2xkZXJVUkkgPSBmb2xkZXIuZ2V0TG9jYXRpb25VUkkoKS50b1N0cmluZygpOwotCQkJCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNvcHlpbmcgZnJvbTogIiArIHBhdGgpOwotCQkJU3lzdGVtLm91dC5wcmludGxuKCJDb3B5aW5nIHRvOiAgICIgKyBmb2xkZXJVUkkpOwotCQkJCi0JCQlXU0RMQ29waWVyIGNvcGllciA9IG5ldyBXU0RMQ29waWVyKCk7Ci0JCQljb3BpZXIuc2V0U291cmNlVVJJKHBhdGgpOwkJCQotCQkJY29waWVyLnNldFRhcmdldEZvbGRlclVSSShmb2xkZXJVUkkpOwotCQkJY29waWVyLnNldFRhcmdldEZpbGVuYW1lKCJuZXduYW1lLndzZGwiKTsKLQkJCQotCQkJUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLnJ1bihjb3BpZXIsIG51bGwpOwotCQkJUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5yZWZyZXNoTG9jYWwoSVJlc291cmNlLkRFUFRIX0lORklOSVRFLCBudWxsKTsKLQkJCQotCQkJdmFsaWRhdGUoZm9sZGVyLCAibmV3bmFtZS53c2RsIik7Ci0JCQlhc3NlcnRFcXVhbHMoY29waWVyLmdldFJlbGF0aXZlUGF0aCgpLnRvU3RyaW5nKCksICIxLzJhL25ld25hbWUud3NkbCIpOwotCQkJCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlN1Y2Nlc3MhIik7Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CQotCQkJU3lzdGVtLm91dC5wcmludGxuKGUpOwotCQkJYXNzZXJ0VHJ1ZShlLmdldE1lc3NhZ2UoKSwgZmFsc2UpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogVGVzdCBjYXNlICMzCi0JICogLSBydW5zIHRoZSBXU0RMQ29waWVyIHdpdGhvdXQgc3BlY2lmeWluZyBhIHNvdXJjZSBVUkkgKG9wZXJhdGlvbiBzaG91bGQgZmFpbCkKLQkgKi8KLQlwdWJsaWMgdm9pZCB0ZXN0Q2FzZTMoKSB7Ci0JCXRyeSB7CQkJCi0JCQlJRm9sZGVyIGZvbGRlciA9IGNyZWF0ZUZvbGRlcihXU0RMX0ZPTERFUjMpOwotCQkJCi0JCQlTdHJpbmcgZm9sZGVyVVJJID0gZm9sZGVyLmdldExvY2F0aW9uVVJJKCkudG9TdHJpbmcoKTsKLQkJCQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJDb3B5aW5nIGZyb206IE4vQSIpOwotCQkJU3lzdGVtLm91dC5wcmludGxuKCJDb3B5aW5nIHRvOiAgICIgKyBmb2xkZXJVUkkpOwotCQkJCi0JCQlXU0RMQ29waWVyIGNvcGllciA9IG5ldyBXU0RMQ29waWVyKCk7Ci0JCQljb3BpZXIuc2V0VGFyZ2V0Rm9sZGVyVVJJKGZvbGRlclVSSSk7CQkJCi0JCQkKLQkJCXRyeSB7Ci0JCQkJUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLnJ1bihjb3BpZXIsIG51bGwpOwotCQkJCWFzc2VydFRydWUoIlNob3VsZCBub3QgZ2V0IGhlcmUiLCBmYWxzZSk7Ci0JCQl9Ci0JCQljYXRjaCAoQ29yZUV4Y2VwdGlvbiBjZSkgewotCQkJCVN5c3RlbS5vdXQucHJpbnRsbihjZSk7Ci0JCQl9Ci0JCQkKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiU3VjY2VzcyEiKTsKLQkJfQotCQljYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbihlKTsKLQkJCWFzc2VydFRydWUoZS5nZXRNZXNzYWdlKCksIGZhbHNlKTsKLQkJfQotCX0JCi0KLQkvKioKLQkgKiBUZXN0IGNhc2UgIzQKLQkgKiAtIHJ1bnMgdGhlIFdTRExDb3BpZXIgd2l0aG91dCBjcmVhdGluZyBhIHRhcmdldCBmb2xkZXIKLQkgKi8KLQlwdWJsaWMgdm9pZCB0ZXN0Q2FzZTQoKSB7Ci0JCXRyeSB7Ci0JCQlJUmVzb3VyY2UgcmVzb3VyY2UgPSBwcm9qZWN0LmdldEZvbGRlcihXU0RMX0ZPTERFUjEpLmZpbmRNZW1iZXIoIjEvMmEvc3RhcnQud3NkbCIpOwotCQkJSUZvbGRlciBmb2xkZXIgPSBwcm9qZWN0LmdldEZvbGRlcihXU0RMX0ZPTERFUjQpOwotCQkJCQkJCi0JCQlTdHJpbmcgcGF0aCA9IHJlc291cmNlLmdldExvY2F0aW9uVVJJKCkudG9TdHJpbmcoKTsKLQkJCVN0cmluZyBmb2xkZXJVUkkgPSAicGxhdGZvcm06L3Jlc291cmNlIiArIGZvbGRlci5nZXRGdWxsUGF0aCgpOwotCQkJCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNvcHlpbmcgZnJvbTogIiArIHBhdGgpOwotCQkJU3lzdGVtLm91dC5wcmludGxuKCJDb3B5aW5nIHRvOiAgICIgKyBmb2xkZXJVUkkpOwotCQkJYXNzZXJ0VHJ1ZSghZm9sZGVyLmV4aXN0cygpKTsKLQkJCQotCQkJV1NETENvcGllciBjb3BpZXIgPSBuZXcgV1NETENvcGllcigpOwotCQkJY29waWVyLnNldFNvdXJjZVVSSShwYXRoKTsKLQkJCWNvcGllci5zZXRUYXJnZXRGb2xkZXJVUkkoZm9sZGVyVVJJKTsKLQkJCQotCQkJUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLnJ1bihjb3BpZXIsIG51bGwpOwotCQkJUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5yZWZyZXNoTG9jYWwoSVJlc291cmNlLkRFUFRIX0lORklOSVRFLCBudWxsKTsKLQkJCQotCQkJYXNzZXJ0VHJ1ZShmb2xkZXIuZXhpc3RzKCkpOwotCQkJdmFsaWRhdGUoZm9sZGVyLCAic3RhcnQud3NkbCIpOwotCQkJYXNzZXJ0RXF1YWxzKGNvcGllci5nZXRSZWxhdGl2ZVBhdGgoKS50b1N0cmluZygpLCAiMS8yYS9zdGFydC53c2RsIik7Ci0JCQkKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiU3VjY2VzcyEiKTsKLQkJfQotCQljYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbihlKTsKLQkJCWFzc2VydFRydWUoZS5nZXRNZXNzYWdlKCksIGZhbHNlKTsJCQkKLQkJfQotCX0KLQkKLQkvKioKLQkgKiBUZXN0IGNhc2UgIzUKLQkgKiAtIHJ1bnMgdGhlIFdTRExDb3BpZXIgd2l0aG91dCBzcGVjaWZ5aW5nIGEgdGFyZ2V0IGZvbGRlciAob3BlcmF0aW9uIHNob3VsZCBmYWlsKQotCSAqLwotCXB1YmxpYyB2b2lkIHRlc3RDYXNlNSgpIHsKLQkJdHJ5IHsKLQkJCUlSZXNvdXJjZSByZXNvdXJjZSA9IHByb2plY3QuZ2V0Rm9sZGVyKFdTRExfRk9MREVSMSkuZmluZE1lbWJlcigiMS8yYS9zdGFydC53c2RsIik7Ci0JCQkKLQkJCVN0cmluZyBwYXRoID0gInBsYXRmb3JtOi9yZXNvdXJjZSIgKyByZXNvdXJjZS5nZXRGdWxsUGF0aCgpOyAJCQkJCQkJCQkJCQkJCQkKLQkJCQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJDb3B5aW5nIGZyb206ICIgKyBwYXRoKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQ29weWluZyB0bzogICBOL0EiKTsKLQkJCQotCQkJV1NETENvcGllciBjb3BpZXIgPSBuZXcgV1NETENvcGllcigpOwotCQkJY29waWVyLnNldFNvdXJjZVVSSShwYXRoKTsJCQkKLQkJCQotCQkJdHJ5IHsKLQkJCQlSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkucnVuKGNvcGllciwgbnVsbCk7Ci0JCQkJYXNzZXJ0VHJ1ZSgiU2hvdWxkIG5vdCBnZXQgaGVyZSIsIGZhbHNlKTsKLQkJCX0KLQkJCWNhdGNoIChDb3JlRXhjZXB0aW9uIGNlKSB7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKGNlKTsKLQkJCX0KLQkJCQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJTdWNjZXNzISIpOwotCQl9Ci0JCWNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJU3lzdGVtLm91dC5wcmludGxuKGUpOwotCQkJYXNzZXJ0VHJ1ZShlLmdldE1lc3NhZ2UoKSwgZmFsc2UpOwkJCQotCQl9Ci0JfQotCQotCS8qKgotCSAqIFRlc3QgY2FzZSAjNgotCSAqIC0gY29waWVzIHdzZGwgZnJvbSBvbmUgZm9sZGVyIG9udG8gaXRzZWxmIHVzaW5nIHBsYXRmb3JtOi9yZXNvdXJjZSBVUkkKLQkgKi8KLQlwdWJsaWMgdm9pZCB0ZXN0Q2FzZTYoKSB7Ci0JCXRyeSB7Ci0JCQlJRm9sZGVyIGZvbGRlciA9IHByb2plY3QuZ2V0Rm9sZGVyKFdTRExfRk9MREVSMSk7Ci0JCQlJUmVzb3VyY2UgcmVzb3VyY2UgPSBmb2xkZXIuZmluZE1lbWJlcigiMS8yYS9zdGFydC53c2RsIik7Ci0JCQkKLQkJCVN0cmluZyBwYXRoID0gInBsYXRmb3JtOi9yZXNvdXJjZSIgKyByZXNvdXJjZS5nZXRGdWxsUGF0aCgpOyAJCQkJCQkKLQkJCVN0cmluZyBmb2xkZXJVUkkgPSBmb2xkZXIuZ2V0TG9jYXRpb25VUkkoKS50b1N0cmluZygpOwotCQkJCQkJCQkJCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNvcHlpbmcgZnJvbTogIiArIHBhdGgpOwotCQkJU3lzdGVtLm91dC5wcmludGxuKCJDb3B5aW5nIHRvOiAgICIgKyBmb2xkZXJVUkkpOwotCQkJCi0JCQlXU0RMQ29waWVyIGNvcGllciA9IG5ldyBXU0RMQ29waWVyKCk7Ci0JCQljb3BpZXIuc2V0U291cmNlVVJJKHBhdGgpOwkJCQotCQkJY29waWVyLnNldFRhcmdldEZvbGRlclVSSShmb2xkZXJVUkkpOwkJCQotCi0JCQlsb25nW10gb2xkVGltZXN0YW1wcyA9IHZhbGlkYXRlVGltZXN0YW1wcyhmb2xkZXIsIG51bGwpOwotCQkJCi0JCQlSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkucnVuKGNvcGllciwgbnVsbCk7Ci0JCQlSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLnJlZnJlc2hMb2NhbChJUmVzb3VyY2UuREVQVEhfSU5GSU5JVEUsIG51bGwpOwotCQkJCi0JCQl2YWxpZGF0ZShmb2xkZXIsICJzdGFydC53c2RsIik7Ci0JCQl2YWxpZGF0ZVRpbWVzdGFtcHMoZm9sZGVyLCBvbGRUaW1lc3RhbXBzKTsKLQkJCWFzc2VydEVxdWFscyhjb3BpZXIuZ2V0UmVsYXRpdmVQYXRoKCkudG9TdHJpbmcoKSwgIjEvMmEvc3RhcnQud3NkbCIpOwotCQkJCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlN1Y2Nlc3MhIik7Ci0JCX0KLQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CQotCQkJU3lzdGVtLm91dC5wcmludGxuKGUpOwotCQkJYXNzZXJ0VHJ1ZShlLmdldE1lc3NhZ2UoKSwgZmFsc2UpOwotCQl9Ci0JfQotfQotCi0KLQotCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L1dTSlVuaXRDb25zdGFudHMuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdW5pdHRlc3QvV1NKVW5pdENvbnN0YW50cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2U1ZmY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdW5pdHRlc3QvV1NKVW5pdENvbnN0YW50cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MudGVzdHMudW5pdHRlc3Q7Ci0KLQotcHVibGljIGludGVyZmFjZSBXU0pVbml0Q29uc3RhbnRzIHsKLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgU0VSVkVSX0lOU1RBTExfUEFUSCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgib3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQuNTAiKTsKLSAgcHVibGljIGZpbmFsIFN0cmluZyBSVU5USU1FVFlQRUlEX1RDNTAgPSAib3JnLmVjbGlwc2UuanN0LnNlcnZlci50b21jYXQucnVudGltZS41MCI7Ci0KLSAgcHVibGljIGZpbmFsIFN0cmluZyBXU19SVU5USU1FSURfQVhJUyA9ICJvcmcuZWNsaXBzZS5qc3Qud3MucnVudGltZS5heGlzMTEiOwotICAKLSAgcHVibGljIGZpbmFsIFN0cmluZyBTRVJWRVJUWVBFSURfVEM1MCA9ICJvcmcuZWNsaXBzZS5qc3Quc2VydmVyLnRvbWNhdC41MCI7Ci0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIHdlYlByb2plY3ROYW1lID0gIldQIjsKLSAgcHVibGljIGZpbmFsIFN0cmluZyB3ZWJQcm9qZWN0Mk5hbWUgPSAiV1AyIjsKLSAgcHVibGljIGZpbmFsIFN0cmluZyB3ZWJDb21wb25lbnROYW1lID0gIndlYkNvbXBvbmVudCI7Ci0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgd2ViQ29tcG9uZW50Mk5hbWUgPSAid2ViQ29tcDIiOwotICBwdWJsaWMgZmluYWwgU3RyaW5nIHdlYkNvbXAzTmFtZSA9ICJ3ZWJDb21wMyI7Ci0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgd2ViQ29tcDROYW1lID0gIndlYkNvbXA0IjsKLSAgCi0gIAotICBwdWJsaWMgZmluYWwgU3RyaW5nIGVqYlByb2plY3ROYW1lID0gIkVKQlByb2plY3QiOwotICBwdWJsaWMgZmluYWwgU3RyaW5nIGVqYkNvbXBvbmVudE5hbWUgPSAiZWpiQ29tcG9uZW50IjsKLQotICBwdWJsaWMgZmluYWwgU3RyaW5nIGFwcENsaWVudFByb2plY3ROYW1lID0gIkFwcENsaWVudFByb2plY3QiOwotICBwdWJsaWMgZmluYWwgU3RyaW5nIGFwcENsaWVudENvbXBOYW1lID0gImFwcENsaWVudENvbXBvbmVudCI7ICAKLSAgCi0gIHB1YmxpYyBmaW5hbCBTdHJpbmcgZWFyQ29tcE5hbWUgPSAiRUFSQ29tcG9uZW50IjsKLSAgCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L1dlYlNlcnZpY2VGaW5kZXJUZXN0cy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91bml0dGVzdC9XZWJTZXJ2aWNlRmluZGVyVGVzdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAxZjE5Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3VuaXR0ZXN0L1dlYlNlcnZpY2VGaW5kZXJUZXN0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICogeXl5eW1tZGQgYnVnICAgICAgRW1haWwgYW5kIG90aGVyIGNvbnRhY3QgaW5mb3JtYXRpb24KLSAqIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAyMDA2MDMxNyAgIDEyNzQ1NiBjYnJlYWxleUBjYS5pYm0uY29tIC0gQ2hyaXMgQnJlYWxleQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnVuaXR0ZXN0OwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NmaW5kZXIuV2ViU2VydmljZUZpbmRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwud3NydC5XZWJTZXJ2aWNlSW5mbzsKLQotLyoqCi0gKiBAYXV0aG9yIGpvYW4KLSAqCi0gKi8KLQotcHVibGljIGNsYXNzIFdlYlNlcnZpY2VGaW5kZXJUZXN0cyBleHRlbmRzIFRlc3RDYXNlIGltcGxlbWVudHMgV1NKVW5pdENvbnN0YW50cyB7Ci0KLQlwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKXsKLQkJcmV0dXJuIG5ldyBUZXN0U3VpdGUoV2ViU2VydmljZUZpbmRlclRlc3RzLmNsYXNzKTsKLQl9Ci0JCi0JcHVibGljIHZvaWQgdGVzdFdTRmluZGVyKCl7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiY3JlYXRpbmcgd2ViIHNlcnZpY2UgZmluZGVyIik7Ci0JCVdlYlNlcnZpY2VGaW5kZXIgd3NmID0gV2ViU2VydmljZUZpbmRlci5pbnN0YW5jZSgpOwotCQkKLQkJU3lzdGVtLm91dC5wcmludGxuKCJhdHRlbXB0aW5nIHRvIGxvY2F0ZSBhbGwgd2ViIHNlcnZpY2VzIGluIHdvcmtzcGFjZSIpOwotCQlJdGVyYXRvciB3c0l0ZXJhdG9yID0gd3NmLmdldFdlYlNlcnZpY2VzKG51bGwpOwotCQl3aGlsZSAod3NJdGVyYXRvci5oYXNOZXh0KCkpIHsKLQkJCVdlYlNlcnZpY2VJbmZvIHdzSW5mbyA9IChXZWJTZXJ2aWNlSW5mbykgd3NJdGVyYXRvci5uZXh0KCk7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIndlYlNlcnZpY2UgVVJMOiAiICsgd3NJbmZvLmdldFdzZGxVUkwoKSk7Ci0JCX0KLQkJCi0JCVN5c3RlbS5vdXQucHJpbnRsbigiZmluaXNoZWQgZmluZGluZyBhbGwgd2Vic2VydmljZXMiKTsKLQkJIAotCX0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9CdWlsZENsYXNzcGF0aC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9CdWlsZENsYXNzcGF0aC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDk2MjNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdXRpbHMvQnVpbGRDbGFzc3BhdGguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnV0aWxzOwotCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGxhdGZvcm1SdW5uYWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk1hbmlmZXN0RWxlbWVudDsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5Db25zdGFudHM7Ci0KLS8qKgotICogVGhpcyBwcm9ncmFtIHdpbGwgZ2VuZXJhdGUgYSBjbGFzc3BhdGggdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCB0aGUgd3NleHBsb3Jlci53YXIgZmlsZS4KLSAqIAotICovCi1wdWJsaWMgY2xhc3MgQnVpbGRDbGFzc3BhdGggaW1wbGVtZW50cyBJUGxhdGZvcm1SdW5uYWJsZQotewotICAgIHB1YmxpYyBPYmplY3QgcnVuKE9iamVjdCBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIAotICAgIHsgICAgICAgIAotICAgICAgUmVzb3VyY2VCdW5kbGUgcGx1Z2luUmVxdWlyZXMgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoICJvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYucHJvcGVydHkudG9vbHMuRXhwbG9yZXJSZXF1aXJlcyIgKTsKLSAgICAgIEVudW1lcmF0aW9uICAgIHJlcXVpcmVLZXlzICAgPSBwbHVnaW5SZXF1aXJlcy5nZXRLZXlzKCk7Ci0gICAgICAKLSAgICAgIHdoaWxlKCByZXF1aXJlS2V5cy5oYXNNb3JlRWxlbWVudHMoKSApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKXJlcXVpcmVLZXlzLm5leHRFbGVtZW50KCk7Ci0gICAgICAgIGJ1aWxkQ2xhc3NwYXRoKCBwbHVnaW5SZXF1aXJlcy5nZXRTdHJpbmcoa2V5KSApOwotICAgICAgfQotICAgICAgICAgICAgCi0gICAgICByZXR1cm4gSVBsYXRmb3JtUnVubmFibGUuRVhJVF9PSzsKLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSB2b2lkIGJ1aWxkQ2xhc3NwYXRoKCBTdHJpbmcgcGx1Z2luSWQgKSB0aHJvd3MgRXhjZXB0aW9uCi0gICAgewotICAgICAgQnVuZGxlIGJ1bmRsZSAgICA9IFBsYXRmb3JtLmdldEJ1bmRsZSggcGx1Z2luSWQgKTsKLSAgICAgIFN0cmluZyBjbGFzc3BhdGggPSAoU3RyaW5nKWJ1bmRsZS5nZXRIZWFkZXJzKCkuZ2V0KCBDb25zdGFudHMuQlVORExFX0NMQVNTUEFUSCApOwotICAgICAgU3RyaW5nIGxvY2F0aW9uICA9IGJ1bmRsZS5nZXRMb2NhdGlvbigpOwotICAgICAgICAgICAgICAKLSAgICAgIC8vIEFkZCBjbGFzc3BhdGggdG8gbGlzdAotICAgICAgTWFuaWZlc3RFbGVtZW50W10gY2xhc3NwYXRocyA9IE1hbmlmZXN0RWxlbWVudC5wYXJzZUhlYWRlcihDb25zdGFudHMuQlVORExFX0NMQVNTUEFUSCwgY2xhc3NwYXRoKTsKLSAgICAgIAotICAgICAgaWYoIGNsYXNzcGF0aHMgIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBjbGFzc3BhdGhzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgICAgIHsKLSAgICAgICAgICBTdHJpbmcgbmV3UGF0aCA9IG51bGw7Ci0gICAgICAgICAgCi0gICAgICAgICAgLy8gV2UgaGF2ZSBhIHNwZWNpYWwgY2FzZSBmb3IgdGhlIFNXVCBwbHVnaW4gc2luY2UgaXQKLSAgICAgICAgICBpZiggbG9jYXRpb24uaW5kZXhPZiggIm9yZy5lY2xpcHNlLnN3dCIgKSAhPSAtMSApCi0gICAgICAgICAgewotICAgICAgICAgICAgICBCdW5kbGVbXSBidW5kbGVzICAgICA9IFBsYXRmb3JtLmdldEZyYWdtZW50cyggYnVuZGxlICk7ICAKLSAgICAgICAgICAgICAgU3RyaW5nICAgbmV3TG9jYXRpb24gPSBidW5kbGVzWzBdLmdldExvY2F0aW9uKCkuc3Vic3RyaW5nKDgpOwotICAgICAgICAgICAgICBTdHJpbmcgICBwYXRoICAgICAgICA9IGNsYXNzcGF0aHNbaW5kZXhdLmdldFZhbHVlKCkucmVwbGFjZUZpcnN0KCAiXFwkd3NcXCQiLCAid3Mvd2luMzIiKTsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgIG5ld1BhdGggPSBuZXdMb2NhdGlvbiArIHBhdGg7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYoIGxvY2F0aW9uLnN0YXJ0c1dpdGgoICJ1cGRhdGUiICkgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbmV3UGF0aCA9IGxvY2F0aW9uLnN1YnN0cmluZyg4KSArIGNsYXNzcGF0aHNbaW5kZXhdLmdldFZhbHVlKCk7ICAgIAotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmKCBsb2NhdGlvbi5zdGFydHNXaXRoKCAiaW5pdGlhbCIgKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG5ld1BhdGggPSBsb2NhdGlvbi5zdWJzdHJpbmcoMjMpICsgY2xhc3NwYXRoc1tpbmRleF0uZ2V0VmFsdWUoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiggbG9jYXRpb24uc3RhcnRzV2l0aCggIlN5c3RlbSIgKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFN0cmluZyBwbGF0Zm9ybUxvY2F0aW9uID0gUGxhdGZvcm0uZ2V0SW5zdGFsbExvY2F0aW9uKCkuZ2V0VVJMKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoNik7Ci0gICAgICAgICAgICAgIG5ld1BhdGggPSBwbGF0Zm9ybUxvY2F0aW9uICsgInBsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaV8zLjAuMS8iICsgY2xhc3NwYXRoc1tpbmRleF0uZ2V0VmFsdWUoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgICAgU3lzdGVtLm91dC5wcmludCggbmV3UGF0aCArICc7Jyk7IAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9Db3B5UHJvcGVydHlGaWxlcy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9Db3B5UHJvcGVydHlGaWxlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGVlNTBmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdXRpbHMvQ29weVByb3BlcnR5RmlsZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnV0aWxzOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZVdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLXB1YmxpYyBjbGFzcyBDb3B5UHJvcGVydHlGaWxlcyAKLXsKLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oIFN0cmluZ1tdIGFyZ3MgKQotICB7Ci0gICAgRmlsZSAgICAgICAgc3RhcnRQYXRoICAgICA9IG5ldyBGaWxlKCBhcmdzWzBdICk7Ci0gICAgU3RyaW5nW10gICAgcGx1Z2luRmlsZXMgICA9IFV0aWxzLnJlYWRMaW5lcyggYXJnc1sxXSApOwotICAgIFN0cmluZyAgICAgIG5ld1BhdGggICAgICAgPSBhcmdzWzJdOwotICAgIFN0cmluZyAgICAgIHBhdGhSZWxhdGl2ZVRvPSBhcmdzWzNdOwotICAgIFZlY3RvciAgICAgIHByb3BlcnR5RmlsZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHBsdWdpbkZpbGVzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgewotICAgICAgRmlsZSAgIHBsdWdpbkRpciAgICAgPSBVdGlscy5nZXRGaWxlKCBzdGFydFBhdGgsIHBsdWdpbkZpbGVzW2luZGV4XSApOwotICAgICAgCi0gICAgICBpZiggcGx1Z2luRGlyICE9IG51bGwgKQotICAgICAgewotICAgICAgICBVdGlscy5nZXRGaWxlcyggcGx1Z2luRGlyLCBwcm9wZXJ0eUZpbGVzLCAicHJvcGVydGllcyIsIG5ldyBTdHJpbmdbXXsgImJpbiIsICJidWlsZC5wcm9wZXJ0aWVzIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIHByb3BlcnR5IGZpbGUKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgcHJvcGVydHlGaWxlcy5zaXplKCk7IGluZGV4KysgKQotICAgIHsKLSAgICAgIEZpbGUgICBwcm9wRmlsZSAgICA9IChGaWxlKXByb3BlcnR5RmlsZXMuZWxlbWVudEF0KGluZGV4KTsKLSAgICAgIFN0cmluZyBwcm9wTmFtZSAgICA9IHByb3BGaWxlLmdldEFic29sdXRlUGF0aCgpOwotICAgICAgaW50ICAgIHBsdWdpbkluZGV4ID0gcHJvcE5hbWUuaW5kZXhPZiggcGF0aFJlbGF0aXZlVG8gKTsKLSAgICAgIGludCAgICBmaXJzdFNsYXNoICA9IHByb3BOYW1lLmluZGV4T2YoICJcXCIsIHBsdWdpbkluZGV4ICk7Ci0gICAgICBpbnQgICAgbmV4dFNsYXNoICAgPSBwcm9wTmFtZS5pbmRleE9mKCAiXFwiLCBmaXJzdFNsYXNoKzEgKTsKLSAgICAgIFN0cmluZyBwbHVnaW5OYW1lICA9IHByb3BOYW1lLnN1YnN0cmluZyggZmlyc3RTbGFzaCArIDEsIG5leHRTbGFzaCApOwotICAgICAgaW50ICAgIHVuZGVySW5kZXggID0gcGx1Z2luTmFtZS5pbmRleE9mKCAnXycgKTsKLSAgICAgIAotICAgICAgaWYoIHVuZGVySW5kZXggIT0gLTEgKQotICAgICAgewotICAgICAgICBwbHVnaW5OYW1lID0gcGx1Z2luTmFtZS5zdWJzdHJpbmcoIDAsIHVuZGVySW5kZXggKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgU3RyaW5nIG5ld05hbWUgPSBuZXdQYXRoICsgRmlsZS5zZXBhcmF0b3IgKyAicGx1Z2lucyIgKyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUuc2VwYXJhdG9yICsgcGx1Z2luTmFtZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlLnNlcGFyYXRvciArIHByb3BOYW1lLnN1YnN0cmluZyggbmV4dFNsYXNoKzEsIHByb3BOYW1lLmxlbmd0aCgpICk7Ci0gICAgICAKLSAgICAgIEZpbGUgICAgICAgIG5ld0ZpbGUgPSBuZXcgRmlsZSggbmV3TmFtZSApOwotICAgICAgRmlsZSAgICAgICAgcGFyZW50ICA9IG5ldyBGaWxlKCBuZXdGaWxlLmdldFBhcmVudCgpICk7Ci0gICAgICBQcmludFdyaXRlciB3cml0ZXIgID0gbnVsbDsKLSAgICAgIAotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIHBhcmVudC5ta2RpcnMoKTsKLSAgICAgICAgCi0gICAgICAgIHdyaXRlciA9IG5ldyBQcmludFdyaXRlciggbmV3IEZpbGVXcml0ZXIoIG5ld0ZpbGUgKSk7Ci0gICAgICAgIFN0cmluZ1tdIGxpbmVzID0gVXRpbHMucmVhZExpbmVzKCBwcm9wRmlsZSApOwotICAgICAgICAKLSAgICAgICAgZm9yKCBpbnQgbGluZUluZGV4ID0gMDsgbGluZUluZGV4IDwgbGluZXMubGVuZ3RoOyBsaW5lSW5kZXgrKyApCi0gICAgICAgIHsKLSAgICAgICAgICB3cml0ZXIucHJpbnRsbiggbGluZXNbbGluZUluZGV4XSApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgICB7Ci0gICAgICAgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIH0KLSAgICAgIGZpbmFsbHkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBpZiggd3JpdGVyICE9IG51bGwgKSB3cml0ZXIuY2xvc2UoKTsgCi0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9ICAgIAotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL0ZpbmRDb250ZXh0SWRzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL0ZpbmRDb250ZXh0SWRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYjYzMDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9GaW5kQ29udGV4dElkcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MudGVzdHMudXRpbHM7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlV3JpdGVyOwotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotLyoKLSAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBmaW5kIENvbnRleHQgSURzIGluIHNvdXJjZSBmaWxlcy4KLSAqIGFyZ3NbMF0gPSBUaGUgcm9vdCBkaXJlY3Rvcnkgd2hlcmUgcGx1Z2lucyBzb3VyY2UgZGlyZWN0b3JpZXMgd2lsbCBiZSBzZWFyY2hlZC4KLSAqIGFyZ3NbMV0gPSBBIGZpbGUgY29udGFpbmluZyBwbHVnaW4gc291cmNlIGRpcmVjdG9yaWVzLiAgRWFjaCBsaW5lIHNob3VsZCBjb250YWluCi0gKiAgICAgICAgICAgYSBwYXRoIHRvIGEgc291cmNlIGRpcmVjdG9yeSByZWxhdGl2ZSB0byB0aGUgYXJnc1swXSBwYXJhbWV0ZXIuCi0gKiBhcmdzWzJdID0gVGhlIG91dHB1dCBmaWxlIG5hbWUuCi0gKi8KLXB1YmxpYyBjbGFzcyBGaW5kQ29udGV4dElkcyAKLXsKLSAgcHVibGljIHZvaWQgZmluZElkcyggU3RyaW5nIHJvb3REaXJlY3RvcnksIFN0cmluZyBzb3VyY2VEaXJlY3RvcnlOYW1lLCBTdHJpbmcgb3V0cHV0RmlsZU5hbWUgKQotICB7Ci0JRmlsZSAgICAgICAgc291cmNlRGlyZWN0b3J5RmlsZSA9IG5ldyBGaWxlKCBzb3VyY2VEaXJlY3RvcnlOYW1lICk7Ci0JU3RyaW5nW10gICAgc3JjRGlyTGluZXMgICAgICAgICA9IFV0aWxzLnJlYWRMaW5lcyggc291cmNlRGlyZWN0b3J5RmlsZSApOwotCVByaW50V3JpdGVyIG91dHB1dEZpbGUgICAgICAgICAgPSBudWxsOwotCQkKLQl0cnkKLQl7Ci0JICBvdXRwdXRGaWxlID0gbmV3IFByaW50V3JpdGVyKCBuZXcgRmlsZVdyaXRlciggb3V0cHV0RmlsZU5hbWUgKSApOwotCQotCSAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHNyY0RpckxpbmVzLmxlbmd0aDsgaW5kZXgrKyApCi0JICB7Ci0JCVN0cmluZyBzb3VyY2VEaXJOYW1lICAgPSBzcmNEaXJMaW5lc1tpbmRleF07Ci0JICAgIEZpbGUgICBzb3VyY2VEaXJlY3RvcnkgPSBuZXcgRmlsZSggcm9vdERpcmVjdG9yeSwgc291cmNlRGlyTmFtZSApOwotCSAgCi0JICAgIG91dHB1dEZpbGUucHJpbnRsbiggIj09PT09PT5Db250ZXh0IElEcyBmb3IgcGx1Z2luIGRpcmVjdG9yeTogIiArIHNvdXJjZURpck5hbWUgKTsKLQkgICAgCi0JICAgIGZpbmRJZHNGb3JhRGlyZWN0b3J5KCBzb3VyY2VEaXJlY3RvcnksIG91dHB1dEZpbGUgKTsKLQkgIH0KLQl9Ci0JY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotCXsKLQkgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLQl9Ci0JZmluYWxseQotCXsKLQkgIGlmKCBvdXRwdXRGaWxlICE9IG51bGwgKQotCSAgewotCSAgICBvdXRwdXRGaWxlLmNsb3NlKCk7Ci0JICB9Ci0JfQotICB9Ci0gIAotICBzdGF0aWMgcHVibGljIHZvaWQgbWFpbiggU3RyaW5nW10gYXJncyApCi0gIHsKLSAgICBGaW5kQ29udGV4dElkcyBmaW5kSWRzID0gbmV3IEZpbmRDb250ZXh0SWRzKCk7Ci0gICAgCi0gICAgaWYoIGFyZ3MubGVuZ3RoICE9IDMgKQotICAgIHsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIkVycm9yOiBleHBlY3RpbmcgYSByb290IGRpcmVjdG9yeSwgdGhlIHNvdXJjZSBkaXJlY3RvcnkgZmlsZSBuYW1lLCBhbmQgYW4gb3V0cHV0IGZpbGUgYXMgcGFyYW1ldGVycy4iICk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGZpbmRJZHMuZmluZElkcyggYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSApOwotICB9Ci0gIAotICBwcml2YXRlIGJvb2xlYW4gZmluZElkc0ZvcmFEaXJlY3RvcnkoIEZpbGUgc291cmNlRGlyZWN0b3J5LCBQcmludFdyaXRlciBvdXRwdXRGaWxlICkKLSAgewotCVZlY3RvciAgZmlsZXMgPSBuZXcgVmVjdG9yKCk7Ci0JYm9vbGVhbiBmb3VuZCA9IGZhbHNlOwotCQotICAgIFV0aWxzLmdldEZpbGVzKCBzb3VyY2VEaXJlY3RvcnksIGZpbGVzLCAiamF2YSIsIG5ldyBTdHJpbmdbMF0gKTsKLSAgICAKLSAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBmaWxlLgotICAgIGZvciggaW50IGZpbGVJbmRleCA9IDA7IGZpbGVJbmRleCA8IGZpbGVzLnNpemUoKTsgZmlsZUluZGV4KysgKQotICAgIHsKLSAgICAgIFN0cmluZ1tdIGxpbmVzID0gVXRpbHMucmVhZExpbmVzKCAoRmlsZSlmaWxlcy5lbGVtZW50QXQoZmlsZUluZGV4KSApOwkKLSAgICAgIAotICAgICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggbGluZSBpbiB0aGUgZmlsZS4KLSAgICAgIGZvciggaW50IGxpbmVJbmRleCA9IDA7IGxpbmVJbmRleCA8IGxpbmVzLmxlbmd0aDsgbGluZUluZGV4KysgKQotICAgICAgewotICAgICAgICBTdHJpbmcgbGluZSA9IGxpbmVzW2xpbmVJbmRleF07Ci0gICAgICAgIAotICAgICAgICBpZiggbGluZS5pbmRleE9mKCJDT05URVhUX0lEIikgIT0gLTEgKQotICAgICAgICB7Ci0gICAgICAgICAgb3V0cHV0RmlsZS5wcmludGxuKCBsaW5lICk7Ci0gICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmb3VuZDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9GaW5kRHVwbGljYXRlS2V5cy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9GaW5kRHVwbGljYXRlS2V5cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDJmZmQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdXRpbHMvRmluZER1cGxpY2F0ZUtleXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5NiArMCwwIEBACi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53cy50ZXN0cy51dGlsczsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1wdWJsaWMgY2xhc3MgRmluZER1cGxpY2F0ZUtleXMgCi17Ci0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkKLSAgewotICAgIEZpbGUgICAgICAgIHN0YXJ0UGF0aCAgICAgPSBuZXcgRmlsZSggYXJnc1swXSApOwotICAgIFN0cmluZ1tdICAgIHBsdWdpbkZpbGVzICAgPSBVdGlscy5yZWFkTGluZXMoIGFyZ3NbMV0gKTsKLSAgICBWZWN0b3IgICAgICBwcm9wZXJ0eUZpbGVzID0gbmV3IFZlY3RvcigpOwotICAgIEhhc2h0YWJsZSAgIGtleXMgICAgICAgICAgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgUHJpbnRXcml0ZXIgd3JpdGVyICAgICAgICA9IG51bGw7Ci0gICAgSGFzaHRhYmxlICAgc3JjS2V5cyAgICAgICA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBWZWN0b3IgICAgICBzcmNGaWxlcyAgICAgID0gbmV3IFZlY3RvcigpOwotICAgIFZlY3RvciAgICAgIHByb3BOYW1lcyAgICAgPSBuZXcgVmVjdG9yKCk7Ci0gICAgVmVjdG9yICAgICAgcGx1Z2luTmFtZXMgICA9IG5ldyBWZWN0b3IoKTsKLSAgICBTdHJpbmdbXSAgICBwbHVnaW5BcnJheSAgID0gbnVsbDsKLSAgICBIYXNodGFibGUgICBzcmNQbHVnaW5NYXAgID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIHdyaXRlciA9IG5ldyBQcmludFdyaXRlciggbmV3IEZpbGVXcml0ZXIoIGFyZ3NbMl0gKSk7Ci0gICAgfQotICAgIGNhdGNoKCBFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgfQotICAgIAotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBwbHVnaW5GaWxlcy5sZW5ndGg7IGluZGV4KysgKQotICAgIHsKLSAgICAgIEZpbGUgICBwbHVnaW5EaXIgICAgID0gVXRpbHMuZ2V0RmlsZSggc3RhcnRQYXRoLCBwbHVnaW5GaWxlc1tpbmRleF0gKTsKLSAgICAgIAotICAgICAgVXRpbHMuZ2V0RmlsZXMoIHBsdWdpbkRpciwgcHJvcGVydHlGaWxlcywgInByb3BlcnRpZXMiLCBuZXcgU3RyaW5nW117ICJiaW4iLCAiYnVpbGQucHJvcGVydGllcyIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3c2V4cGxvcmVyLnByb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1ZGRpLnByb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3c2RsLnByb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3c2lsLnByb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYXZvcml0ZXMucHJvcGVydGllcyIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApOwotICAgICAgVXRpbHMuZ2V0RmlsZXMoIHBsdWdpbkRpciwgc3JjRmlsZXMsICJqYXZhIiwgbmV3IFN0cmluZ1swXSApOwotICAgIH0KLSAgICAKLSAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBwcm9wZXJ0eSBmaWxlCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHByb3BlcnR5RmlsZXMuc2l6ZSgpOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBGaWxlICAgcHJvcEZpbGUgPSAoRmlsZSlwcm9wZXJ0eUZpbGVzLmVsZW1lbnRBdChpbmRleCk7Ci0gICAgICBGaWxlICAgcGFyZW50ICAgPSBuZXcgRmlsZSggcHJvcEZpbGUuZ2V0UGFyZW50KCkgKTsKLSAgICAgIAotICAgICAgLy8gU2tpcCBwcm9wZXJ0aWVzIGZpbGVzIHRoYXQgYXJlIGluIHRoZSBwbHVnaW4gZGlyZWN0b3J5LgotICAgICAgaWYoIFV0aWxzLnN0cmluZ0luQXJyYXkoIHBhcmVudC5nZXROYW1lKCksIHBsdWdpbkZpbGVzICkgKQotICAgICAgewotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgU3RyaW5nIHByb3BOYW1lID0gcHJvcEZpbGUuZ2V0QWJzb2x1dGVQYXRoKCk7Ci0gICAgICBpbnQgICAgc3JjU3RhcnQgPSBwcm9wTmFtZS5pbmRleE9mKCAic3JjIiApOwotICAgICAgCi0gICAgICBpZiggc3JjU3RhcnQgIT0gLTEgKQotICAgICAgewotICAgICAgICBpbnQgbGFzdFNsYXNoID0gcHJvcE5hbWUubGFzdEluZGV4T2YoICdcXCcgKTsKLSAgICAgICAgaW50IGxhc3REb3QgICA9IHByb3BOYW1lLmxhc3RJbmRleE9mKCAnLicgKTsKLSAgICAgICAgU3RyaW5nIG5hbWUgICA9IHByb3BOYW1lLnN1YnN0cmluZyggc3JjU3RhcnQgKyA0LCBsYXN0U2xhc2ggKTsKLSAgICAgICAgU3RyaW5nIG5hbWUyICA9IHByb3BOYW1lLnN1YnN0cmluZyggc3JjU3RhcnQgKyA0LCBsYXN0RG90ICk7Ci0gICAgICAgIG5hbWUgID0gbmFtZS5yZXBsYWNlKCAnXFwnLCAnLicgKTsgCi0gICAgICAgIG5hbWUyID0gbmFtZTIucmVwbGFjZSggJ1xcJywgJy4nICk7Ci0gICAgICAgIAotICAgICAgICBwbHVnaW5OYW1lcy5hZGQoIG5hbWUgKTsKLSAgICAgICAgcGx1Z2luTmFtZXMuYWRkKCBuYW1lMiApOwotICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbiggcHJvcE5hbWUgKyAiPj4iICsgbmFtZSArICI+PiIgKyBuYW1lMiApOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICBwbHVnaW5BcnJheSA9IChTdHJpbmdbXSlwbHVnaW5OYW1lcy50b0FycmF5KCBuZXcgU3RyaW5nWzBdICk7Ci0gICAgCi0gICAgLy8gRmluZCBhbGwgdGhlIGphdmEgc3RyaW5ncy4KLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgc3JjRmlsZXMuc2l6ZSgpOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBGaWxlICAgICBzcmNGaWxlICAgICA9IChGaWxlKXNyY0ZpbGVzLmVsZW1lbnRBdChpbmRleCk7Ci0gICAgICBWZWN0b3IgICBmaWxlU3JjS2V5cyA9IG5ldyBWZWN0b3IoKTsKLSAgICAgIFN0cmluZ1tdIGxpbmVzICAgICAgID0gVXRpbHMucmVhZExpbmVzKHNyY0ZpbGUgKTsKLSAgICAgIAotICAgICAgZm9yKCBpbnQgc3JjSW5kZXggPSAwOyBzcmNJbmRleCA8IGxpbmVzLmxlbmd0aDsgc3JjSW5kZXgrKyApCi0gICAgICB7Ci0gICAgICAgIFV0aWxzLmZpbmRKYXZhU3RyaW5ncyggbGluZXNbc3JjSW5kZXhdLCBmaWxlU3JjS2V5cyApOwotICAgICAgfQotICAgICAgCi0gICAgICBmb3IoIGludCBrZXlzSW5kZXggPSAwOyBrZXlzSW5kZXggPCBmaWxlU3JjS2V5cy5zaXplKCk7IGtleXNJbmRleCsrICkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nICBrZXkgICAgID0gKFN0cmluZylmaWxlU3JjS2V5cy5lbGVtZW50QXQoIGtleXNJbmRleCApOwotICAgICAgICBIYXNoU2V0IGZpbGVTZXQgPSAoSGFzaFNldClzcmNLZXlzLmdldCgga2V5ICk7Ci0gICAgICAgIAotICAgICAgICBpZiggZmlsZVNldCA9PSBudWxsICkKLSAgICAgICAgewotICAgICAgICAgIGZpbGVTZXQgPSBuZXcgSGFzaFNldCgpOwotICAgICAgICAgIHNyY0tleXMucHV0KCBrZXksIGZpbGVTZXQgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYoIFV0aWxzLnN0cmluZ0luQXJyYXkoIGtleSwgcGx1Z2luQXJyYXkgKSApCi0gICAgICAgIHsKLSAgICAgICAgICBIYXNoU2V0IG5hbWVzID0gKEhhc2hTZXQpc3JjUGx1Z2luTWFwLmdldCggc3JjRmlsZSApOwotICAgICAgICAgIAotICAgICAgICAgIGlmKCBuYW1lcyA9PSBudWxsICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBuYW1lcyA9IG5ldyBIYXNoU2V0KCk7Ci0gICAgICAgICAgICBzcmNQbHVnaW5NYXAucHV0KCBzcmNGaWxlLCBuYW1lcyApOwotICAgICAgICAgIH0KLSAgICAgICAgICAKLSAgICAgICAgICBuYW1lcy5hZGQoIGtleSApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmaWxlU2V0LmFkZCggc3JjRmlsZSApOwotICAgICAgfQotICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIGludCBjb3VudCA9IDE7Ci0gICAgCi0gICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggcHJvcGVydHkgZmlsZQotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBwcm9wZXJ0eUZpbGVzLnNpemUoKTsgaW5kZXgrKyApCi0gICAgewotICAgICAgRmlsZSAgIHByb3BGaWxlID0gKEZpbGUpcHJvcGVydHlGaWxlcy5lbGVtZW50QXQoaW5kZXgpOwotICAgICAgVmVjdG9yIHByb3BLZXlzID0gVXRpbHMuZ2V0UHJvcGVydHlLZXlzKCBwcm9wRmlsZSApOyAgCi0gICAgICBGaWxlICAgcGFyZW50ICAgPSBuZXcgRmlsZSggcHJvcEZpbGUuZ2V0UGFyZW50KCkgKTsKLSAgICAgIAotICAgICAgLy8gU2tpcCBwcm9wZXJ0aWVzIGZpbGVzIHRoYXQgYXJlIGluIHRoZSBwbHVnaW4gZGlyZWN0b3J5LgotICAgICAgaWYoIFV0aWxzLnN0cmluZ0luQXJyYXkoIHBhcmVudC5nZXROYW1lKCksIHBsdWdpbkZpbGVzICkgKQotICAgICAgewotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgU3lzdGVtLm91dC5wcmludGxuKCBwcm9wRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSApOwotICAgICAgCi0gICAgICBmb3IoIGludCBwcm9wSW5kZXggPSAwOyBwcm9wSW5kZXggPCBwcm9wS2V5cy5zaXplKCk7IHByb3BJbmRleCsrICkKLSAgICAgIHsKLSAgICAgICAgU3RyaW5nIHByb3BLZXkgPSAoU3RyaW5nKXByb3BLZXlzLmVsZW1lbnRBdCggcHJvcEluZGV4ICk7Ci0gICAgICAgIAotICAgICAgICBpZigga2V5cy5jb250YWluc0tleShwcm9wS2V5KSAmJiAhcHJvcEtleS5zdGFydHNXaXRoKCAiUExVR0lOIiApKQotICAgICAgICB7Ci0gICAgICAgICAgRmlsZSBvcmlnRmlsZSA9IChGaWxlKWtleXMuZ2V0KCBwcm9wS2V5ICk7Ci0gICAgICAgICAgCi0gICAgICAgICAgU3RyaW5nIG9yaWdOYW1lID0gb3JpZ0ZpbGUuZ2V0QWJzb2x1dGVQYXRoKCk7Ci0gICAgICAgICAgU3RyaW5nIHByb3BOYW1lID0gcHJvcEZpbGUuZ2V0QWJzb2x1dGVQYXRoKCk7Ci0gICAgICAgICAgCi0gICAgICAgICAgb3JpZ05hbWUgPSBvcmlnTmFtZS5zdWJzdHJpbmcoIGFyZ3NbMF0ubGVuZ3RoKCksIG9yaWdOYW1lLmxlbmd0aCgpICk7Ci0gICAgICAgICAgcHJvcE5hbWUgPSBwcm9wTmFtZS5zdWJzdHJpbmcoIGFyZ3NbMF0ubGVuZ3RoKCksIHByb3BOYW1lLmxlbmd0aCgpICk7Ci0gICAgICAgICAgCi0gICAgICAgICAgSGFzaFNldCBmaWxlU2V0ID0gKEhhc2hTZXQpc3JjS2V5cy5nZXQoIHByb3BLZXkgKTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZiggZmlsZVNldCAhPSBudWxsICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB3cml0ZXIucHJpbnRsbiggY291bnQgKyAiIFByb3BlcnR5OiAiICsgcHJvcEtleSArICIgaXMgaW4gYm90aCAiICsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ05hbWUgKyAiIGFuZCAiICsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wTmFtZSApOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBJdGVyYXRvciBpdGVyID0gZmlsZVNldC5pdGVyYXRvcigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB3aGlsZSggaXRlci5oYXNOZXh0KCkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBGaWxlIGZpbGUgPSAoRmlsZSlpdGVyLm5leHQoKTsKLSAgICAgICAgICAgICAgd3JpdGVyLnByaW50bG4oICIgID4iICsgZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSApOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgSGFzaFNldCAgbmFtZXMgPSAoSGFzaFNldClzcmNQbHVnaW5NYXAuZ2V0KCBmaWxlICk7Ci0gICAgICAgICAgICAgIEl0ZXJhdG9yIG5hbWVJdGVyID0gbmFtZXMuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgIHdoaWxlKCBuYW1lSXRlci5oYXNOZXh0KCkgKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgd3JpdGVyLnByaW50bG4oICIgICAgPiIgKyBuYW1lSXRlci5uZXh0KCkgKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBrZXlzLnB1dCggcHJvcEtleSwgcHJvcEZpbGUgKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICBpZiggd3JpdGVyICE9IG51bGwgKSB3cml0ZXIuY2xvc2UoKTsKLSAgICB9Ci0gICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgIHsKLSAgICAgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gIH0gIAotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9GaW5kUGVyY2VudFN0cmluZy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9GaW5kUGVyY2VudFN0cmluZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2RlZjlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdXRpbHMvRmluZFBlcmNlbnRTdHJpbmcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnV0aWxzOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZVdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLXB1YmxpYyBjbGFzcyBGaW5kUGVyY2VudFN0cmluZyAKLXsKLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oIFN0cmluZ1tdIGFyZ3MgKQotICB7Ci0gICAgRmlsZSAgICAgICAgc3RhcnRQYXRoICAgICA9IG5ldyBGaWxlKCBhcmdzWzBdICk7Ci0gICAgU3RyaW5nW10gICAgcGx1Z2luRmlsZXMgICA9IFV0aWxzLnJlYWRMaW5lcyggYXJnc1sxXSApOwotICAgIFByaW50V3JpdGVyIHdyaXRlciAgICAgICAgPSBudWxsOwotICAgIFZlY3RvciAgICAgIHNyY0ZpbGVzICAgICAgPSBuZXcgVmVjdG9yKCk7Ci0gICAgCi0gICAgdHJ5Ci0gICAgewotICAgICAgd3JpdGVyID0gbmV3IFByaW50V3JpdGVyKCBuZXcgRmlsZVdyaXRlciggYXJnc1syXSApKTsKLSAgICB9Ci0gICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgIHsKLSAgICAgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gICAgCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHBsdWdpbkZpbGVzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgewotICAgICAgRmlsZSAgIHBsdWdpbkRpciAgICAgPSBVdGlscy5nZXRGaWxlKCBzdGFydFBhdGgsIHBsdWdpbkZpbGVzW2luZGV4XSApOwotICAgICAgCi0gICAgICBpZiggcGx1Z2luRGlyICE9IG51bGwgKQotICAgICAgewotICAgICAgICBVdGlscy5nZXRGaWxlcyggcGx1Z2luRGlyLCBzcmNGaWxlcywgImphdmEiLCBuZXcgU3RyaW5nWzBdICk7Ci0gICAgICB9Ci0gICAgfQotICAgICAgICAgIAotICAgIC8vIEZpbmQgYWxsIHRoZSBqYXZhIHN0cmluZ3MuCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHNyY0ZpbGVzLnNpemUoKTsgaW5kZXgrKyApCi0gICAgewotICAgICAgRmlsZSAgICAgc3JjRmlsZSAgICAgPSAoRmlsZSlzcmNGaWxlcy5lbGVtZW50QXQoaW5kZXgpOwotICAgICAgVmVjdG9yICAgZmlsZVNyY0tleXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBTdHJpbmdbXSBsaW5lcyAgICAgICA9IFV0aWxzLnJlYWRMaW5lcyhzcmNGaWxlICk7Ci0gICAgICAKLSAgICAgIGZvciggaW50IHNyY0luZGV4ID0gMDsgc3JjSW5kZXggPCBsaW5lcy5sZW5ndGg7IHNyY0luZGV4KysgKQotICAgICAgewotICAgICAgICBVdGlscy5maW5kSmF2YVN0cmluZ3MoIGxpbmVzW3NyY0luZGV4XSwgZmlsZVNyY0tleXMgKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgZm9yKCBpbnQga2V5c0luZGV4ID0gMDsga2V5c0luZGV4IDwgZmlsZVNyY0tleXMuc2l6ZSgpOyBrZXlzSW5kZXgrKyApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyAga2V5ID0gKFN0cmluZylmaWxlU3JjS2V5cy5lbGVtZW50QXQoIGtleXNJbmRleCApOwotICAgICAgICAKLSAgICAgICAgaWYoIGtleS5zdGFydHNXaXRoKCIlIiApICkKLSAgICAgICAgewotICAgICAgICAgIHdyaXRlci5wcmludGxuKCBrZXkgKyAiID4+ICIgKyBzcmNGaWxlLmdldE5hbWUoKSApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIGlmKCB3cml0ZXIgIT0gbnVsbCApIHdyaXRlci5jbG9zZSgpOwotICAgIH0KLSAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgfSAgCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL0ZpbmRQcm9wZXJ0eU1vdmVtZW50LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL0ZpbmRQcm9wZXJ0eU1vdmVtZW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNjYzNjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9GaW5kUHJvcGVydHlNb3ZlbWVudC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnV0aWxzOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uRmlsZVdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlByb3BlcnR5UmVzb3VyY2VCdW5kbGU7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1wdWJsaWMgY2xhc3MgRmluZFByb3BlcnR5TW92ZW1lbnQgCi17Ci0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkKLSAgewotICAgIEZpbGUgb2xkUGF0aCAgICA9IG5ldyBGaWxlKCBhcmdzWzBdICk7Ci0gICAgRmlsZSBuZXdQYXRoICAgID0gbmV3IEZpbGUoIGFyZ3NbMV0gKTsKLSAgICBGaWxlIG91dHB1dEZpbGUgPSBuZXcgRmlsZSggYXJnc1syXSApOwotICAgCi0gICAgVmVjdG9yICAgIG9sZFByb3BlcnR5RmlsZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgVmVjdG9yICAgIG5ld1Byb3BlcnR5RmlsZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgCi0gICAgSGFzaHRhYmxlIG9sZEtleU1hcCAgICAgICAgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgSGFzaHRhYmxlIG5ld0tleU1hcCAgICAgICAgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgCi0gICAgVXRpbHMuZ2V0RmlsZXMoIG9sZFBhdGgsIG9sZFByb3BlcnR5RmlsZXMsICJwcm9wZXJ0aWVzIiwgbmV3IFN0cmluZ1swXSApOwotICAgIFV0aWxzLmdldEZpbGVzKCBuZXdQYXRoLCBuZXdQcm9wZXJ0eUZpbGVzLCAicHJvcGVydGllcyIsIG5ldyBTdHJpbmdbMF0gKTsKLQotICAgIGJ1aWxkTWFwKCBvbGRQcm9wZXJ0eUZpbGVzLCBvbGRLZXlNYXAgKTsKLSAgICBidWlsZE1hcCggbmV3UHJvcGVydHlGaWxlcywgbmV3S2V5TWFwICk7Ci0gICAgCi0gICAgU2V0ICAgICAgICAgbmV3S2V5U2V0ID0gbmV3S2V5TWFwLmVudHJ5U2V0KCk7Ci0gICAgSXRlcmF0b3IgICAgaXRlciAgICAgID0gbmV3S2V5U2V0Lml0ZXJhdG9yKCk7Ci0gICAgUHJpbnRXcml0ZXIgd3JpdGVyICAgID0gbnVsbDsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICB3cml0ZXIgPSBuZXcgUHJpbnRXcml0ZXIoIG5ldyBGaWxlV3JpdGVyKCBvdXRwdXRGaWxlICkpOwotICAgIH0KLSAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgICAKLSAgICB3aGlsZSggaXRlci5oYXNOZXh0KCkgJiYgd3JpdGVyICE9IG51bGwgKQotICAgIHsKLSAgICAgIE1hcC5FbnRyeSBlbnRyeSAgICAgICA9IChNYXAuRW50cnkpaXRlci5uZXh0KCk7Ci0gICAgICBTdHJpbmcgICAgcHJvcGVydHkgICAgPSAoU3RyaW5nKWVudHJ5LmdldEtleSgpOwotICAgICAgU3RyaW5nICAgIG5ld0ZpbGVOYW1lID0gKFN0cmluZyllbnRyeS5nZXRWYWx1ZSgpOwotICAgICAgU3RyaW5nICAgIG9sZEZpbGVOYW1lID0gKFN0cmluZylvbGRLZXlNYXAuZ2V0KCBwcm9wZXJ0eSApOwotICAgICAgCi0gICAgICBpZiggb2xkRmlsZU5hbWUgPT0gbnVsbCB8fCBuZXdGaWxlTmFtZS5lcXVhbHMoIG9sZEZpbGVOYW1lICkgKQotICAgICAgewotICAgICAgICAvLyBEbyBub3RoaW5nLiAgRWl0aGVyIHRoaXMga2V5IGRpZG4ndCBleGlzdCBpbiB0aGUgb2xkIHByb3BlcnR5Ci0gICAgICAgIC8vIGZpbGVzIG9yIHRoaXMga2V5IGlzIHN0aWxsIGluIHRoZSBzYW1lIHByb3BlcnR5IGZpbGUuCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHdyaXRlci5wcmludGxuKCBwcm9wZXJ0eSArICIgIiArIG9sZEZpbGVOYW1lICsgIiAiICsgbmV3RmlsZU5hbWUgKTsgCi0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHRyeQotICAgIHsKLSAgICAgIGlmKCB3cml0ZXIgIT0gbnVsbCApIHdyaXRlci5jbG9zZSgpOwotICAgIH0KLSAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgfQotICAKLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBidWlsZE1hcCggVmVjdG9yIGlucHV0RmlsZXMsIEhhc2h0YWJsZSBrZXlNYXAgKQotICB7Ci0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IGlucHV0RmlsZXMuc2l6ZSgpOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBGaWxlICAgICAgICBwcm9wRmlsZSAgICA9IChGaWxlKWlucHV0RmlsZXMuZWxlbWVudEF0KGluZGV4KTsKLSAgICAgIFN0cmluZyAgICAgIHByb3BOYW1lICAgID0gcHJvcEZpbGUuZ2V0QWJzb2x1dGVQYXRoKCk7Ci0gICAgICBpbnQgICAgICAgICBwbHVnaW5JbmRleCA9IHByb3BOYW1lLmluZGV4T2YoICJwbHVnaW5zIiApOwotICAgICAgU3RyaW5nICAgICAgcHJvcFN0cmluZyAgPSBwcm9wTmFtZS5zdWJzdHJpbmcoIHBsdWdpbkluZGV4LCBwcm9wTmFtZS5sZW5ndGgoKSApOyAgICAgIAotICAgICAgSW5wdXRTdHJlYW0gc3RyZWFtICAgICAgPSBudWxsOwotICAgICAgCi0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgc3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbSggcHJvcEZpbGUgKTsKLSAgICAgICAgUHJvcGVydHlSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSBuZXcgUHJvcGVydHlSZXNvdXJjZUJ1bmRsZSggc3RyZWFtICk7Ci0gICAgICAgIAotICAgICAgICBFbnVtZXJhdGlvbiBrZXlzID0gYnVuZGxlLmdldEtleXMoKTsKLSAgICAgICAgCi0gICAgICAgIHdoaWxlKCBrZXlzLmhhc01vcmVFbGVtZW50cygpICkKLSAgICAgICAgewotICAgICAgICAgIGtleU1hcC5wdXQoIGtleXMubmV4dEVsZW1lbnQoKSwgcHJvcFN0cmluZyApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgICB7Ci0gICAgICAgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIH0KLSAgICAgIGZpbmFsbHkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBpZiggc3RyZWFtICE9IG51bGwgKSBzdHJlYW0uY2xvc2UoKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgICAgIHsKLSAgICAgICAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9ICAgIAotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL0dlblBsdWdpblByb3BlcnRpZXNGcm9tUGx1Z2luWG1sLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL0dlblBsdWdpblByb3BlcnRpZXNGcm9tUGx1Z2luWG1sLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NmRkZjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9HZW5QbHVnaW5Qcm9wZXJ0aWVzRnJvbVBsdWdpblhtbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MudGVzdHMudXRpbHM7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlV3JpdGVyOwotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci0KLXB1YmxpYyBjbGFzcyBHZW5QbHVnaW5Qcm9wZXJ0aWVzRnJvbVBsdWdpblhtbCAKLXsKLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oIFN0cmluZ1tdIGFyZ3MgKQotICB7Ci0gICAgRmlsZSAgICAgc3RhcnRQYXRoID0gbmV3IEZpbGUoIGFyZ3NbMF0gKTsKLSAgICBTdHJpbmdbXSBwbHVnaW5GaWxlcyA9IFV0aWxzLnJlYWRMaW5lcyggYXJnc1sxXSApOwotICAgIAotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBwbHVnaW5GaWxlcy5sZW5ndGg7IGluZGV4KysgKQotICAgIHsKLSAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBsdWdpbkZpbGVzW2luZGV4XTsKLSAgICAgIAotICAgICAgSGFzaFNldCBrZXlzID0gbmV3IEhhc2hTZXQoKTsKLSAgICAgIEZpbGUgICAgZGlyICA9IFV0aWxzLmdldEZpbGUoIHN0YXJ0UGF0aCwgZmlsZW5hbWUgKTsKLSAgICAgIEZpbGUgICAgZmlsZSA9IFV0aWxzLmdldEZpbGUoIGRpciwgInBsdWdpbi54bWwiICk7Ci0KLSAgICAgIGlmKCBmaWxlID09IG51bGwgKSBjb250aW51ZTsKLSAgICAgIAotICAgICAgVXRpbHMuZ2V0UGx1Z2luWE1MS2V5cyggZmlsZSwga2V5cyApOwotCi0gICAgICBGaWxlIHByb3BmaWxlID0gVXRpbHMuZ2V0RmlsZSggZGlyLCAicGx1Z2luLnByb3BlcnRpZXMiICk7Ci0gICAgICAKLSAgICAgIGlmKCBrZXlzLnNpemUoKSA+IDAgJiYgcHJvcGZpbGUgPT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiTm8gcGx1Z2luLnByb3BlcnRpZXMgZmlsZSBmb3I6IiArIGZpbGUgKTsKLSAgICAgICAgICBwcm9wZmlsZSA9IEZpbGUuY3JlYXRlVGVtcEZpbGUoICJwcmVmaXgiLCAic3VmZml4IiApOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKCBFeGNlcHRpb24gZXhjICkKLSAgICAgICAgewotICAgICAgICAgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZigga2V5cy5zaXplKCkgPT0gMCApCi0gICAgICB7Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgICAgICAgICAgCi0gICAgICBGaWxlICAgICAgICAgICBvdXRwdXRGaWxlID0gbmV3IEZpbGUoIGRpci5nZXRBYnNvbHV0ZVBhdGgoKSArIEZpbGUuc2VwYXJhdG9yICsgInBsdWdpbi5wcm9wZXJ0aWVzLm5ldyIgKTsKLSAgICAgIEZpbGUgICAgICAgICAgIGRlbEZpbGUgPSBuZXcgRmlsZSggZGlyLmdldEFic29sdXRlUGF0aCgpICsgRmlsZS5zZXBhcmF0b3IgKyAicGx1Z2luLnByb3BlcnRpZXMuZGVsIiApOwotICAgICAgUHJpbnRXcml0ZXIgd3JpdGVyICAgICA9IG51bGw7Ci0gICAgICBQcmludFdyaXRlciBkZWxXcml0ZXIgID0gbnVsbDsKLSAgICAgIAotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIHdyaXRlciA9IG5ldyBQcmludFdyaXRlciggbmV3IEZpbGVXcml0ZXIoIG91dHB1dEZpbGUgKSApOwotICAgICAgICBkZWxXcml0ZXIgPSBuZXcgUHJpbnRXcml0ZXIoIG5ldyBGaWxlV3JpdGVyKCBkZWxGaWxlICkpOwotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJHZW5lcmF0aW5nIG91dHB1dCB0bzoiICsgb3V0cHV0RmlsZSApOwotICAgICAgICBVdGlscy5jcmVhdGVPdXRwdXRGaWxlKCBrZXlzLCBwcm9wZmlsZSwgd3JpdGVyLCBkZWxXcml0ZXIgKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoKCBFeGNlcHRpb24gZXhjICkKLSAgICAgIHsKLSAgICAgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOyAKLSAgICAgIH0KLSAgICAgIGZpbmFsbHkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBpZiggd3JpdGVyICE9IG51bGwgKSB3cml0ZXIuY2xvc2UoKTsKLSAgICAgICAgICBpZiggZGVsV3JpdGVyICE9IG51bGwgKSBkZWxXcml0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgICAgIHsKLSAgICAgICAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICAgIH0KLSAgICAgIH0gICAgICAKLSAgICB9Ci0gIH0gIAotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9MaXN0UHJvcGVydHlGaWxlcy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9MaXN0UHJvcGVydHlGaWxlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTBhNmMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdXRpbHMvTGlzdFByb3BlcnR5RmlsZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnV0aWxzOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLXB1YmxpYyBjbGFzcyBMaXN0UHJvcGVydHlGaWxlcyAKLXsKLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oIFN0cmluZ1tdIGFyZ3MgKQotICB7Ci0gICAgRmlsZSAgICAgICAgc3RhcnRQYXRoICAgICA9IG5ldyBGaWxlKCBhcmdzWzBdICk7Ci0gICAgVmVjdG9yICAgICAgcHJvcGVydHlGaWxlcyA9IG5ldyBWZWN0b3IoKTsKLSAgICAKLSAgICBVdGlscy5nZXRGaWxlcyggc3RhcnRQYXRoLCBwcm9wZXJ0eUZpbGVzLCAiYmFja3VwIiwgbmV3IFN0cmluZ1tdeyAiYmluIiwgImJ1aWxkLnByb3BlcnRpZXMiLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKLSAgICAKLSAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBwcm9wZXJ0eSBmaWxlCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHByb3BlcnR5RmlsZXMuc2l6ZSgpOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBGaWxlICAgcHJvcEZpbGUgICAgPSAoRmlsZSlwcm9wZXJ0eUZpbGVzLmVsZW1lbnRBdChpbmRleCk7Ci0gICAgICBTdHJpbmcgcHJvcE5hbWUgICAgPSBwcm9wRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKTsKLSAgICAgIGludCAgICBwbHVnaW5JbmRleCA9IHByb3BOYW1lLmluZGV4T2YoICJwbHVnaW5zIiApOwotICAgICAgaW50ICAgIGZpcnN0U2xhc2ggID0gcHJvcE5hbWUuaW5kZXhPZiggIlxcIiwgcGx1Z2luSW5kZXggKTsKLSAgICAgIGludCAgICBuZXh0U2xhc2ggICA9IHByb3BOYW1lLmluZGV4T2YoICJcXCIsIGZpcnN0U2xhc2grMSApOwotICAgICAgU3RyaW5nIHBsdWdpbk5hbWUgID0gcHJvcE5hbWUuc3Vic3RyaW5nKCBmaXJzdFNsYXNoICsgMSwgbmV4dFNsYXNoICk7Ci0gICAgICBpbnQgICAgdW5kZXJJbmRleCAgPSBwbHVnaW5OYW1lLmluZGV4T2YoICdfJyApOwotICAgICAgCi0gICAgICBpZiggdW5kZXJJbmRleCAhPSAtMSApCi0gICAgICB7Ci0gICAgICAgIHBsdWdpbk5hbWUgPSBwbHVnaW5OYW1lLnN1YnN0cmluZyggMCwgdW5kZXJJbmRleCApOwotICAgICAgfQotICAgICAgCi0gICAgICBTdHJpbmcgbmV3TmFtZSA9ICJkZWwgIHBsdWdpbnMiICsgCi0gICAgICAgICAgICAgICAgICAgICAgIEZpbGUuc2VwYXJhdG9yICsgcGx1Z2luTmFtZSArCi0gICAgICAgICAgICAgICAgICAgICAgIEZpbGUuc2VwYXJhdG9yICsgcHJvcE5hbWUuc3Vic3RyaW5nKCBuZXh0U2xhc2grMSwgcHJvcE5hbWUubGVuZ3RoKCkgKTsKLQotICAgICAgU3lzdGVtLm91dC5wcmludGxuKCBuZXdOYW1lICk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL1JlbW92ZUJyYWNrZXRzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL1JlbW92ZUJyYWNrZXRzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNTY4MmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9SZW1vdmVCcmFja2V0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MudGVzdHMudXRpbHM7Ci0KLWltcG9ydCBqYXZhLmF3dC5CdXR0b247Ci1pbXBvcnQgamF2YS5hd3QuRXZlbnQ7Ci1pbXBvcnQgamF2YS5hd3QuRnJhbWU7Ci1pbXBvcnQgamF2YS5hd3QuR3JpZExheW91dDsKLWltcG9ydCBqYXZhLmF3dC5UZXh0QXJlYTsKLWltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKLWltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcjsKLQotcHVibGljIGNsYXNzIFJlbW92ZUJyYWNrZXRzIGV4dGVuZHMgRnJhbWUgCi17Ci0gIC8qKgotICAgKiBDb21tZW50IGZvciA8Y29kZT5zZXJpYWxWZXJzaW9uVUlEPC9jb2RlPgotICAgKi8KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMzYxNzI5MjMyMDI5OTgyNDE3Nkw7Ci0gIHByaXZhdGUgVGV4dEFyZWEgaW5wdXRBcmVhXzsKLSAgcHJpdmF0ZSBUZXh0QXJlYSBvdXRwdXRBcmVhXzsKLSAgcHJpdmF0ZSBCdXR0b24gICBidXR0b25fOwotICAKLSAgcHVibGljIFJlbW92ZUJyYWNrZXRzKCkKLSAgewotICAJc3VwZXIoICJDb252ZXJ0IEhUTUwgYnJhY2tldHMiICk7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIAotICB7Ci0gIAlSZW1vdmVCcmFja2V0cyBjb252ZXJ0ID0gbmV3IFJlbW92ZUJyYWNrZXRzKCk7Ci0gIAkKLSAgCWNvbnZlcnQuYnVpbGRVSSgpOwotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgYnVpbGRVSSgpCi0gIHsKLSAgICBHcmlkTGF5b3V0IGxheW91dCA9IG5ldyBHcmlkTGF5b3V0KDMsMSk7Ci0gICAgLy9sYXlvdXQuc2V0Q29sdW1ucygxKTsKLSAgICBzZXRMYXlvdXQoIGxheW91dCApOwotICAgIAotICAgIGlucHV0QXJlYV8gID0gbmV3IFRleHRBcmVhKCAxMCwgNTAgKTsKLSAgICBvdXRwdXRBcmVhXyA9IG5ldyBUZXh0QXJlYSggMTAsIDUwICk7Ci0gICAgYnV0dG9uXyAgICAgPSBuZXcgQnV0dG9uKCAiUHJlc3MgaGVyZSB0byBjb252ZXJ0IHRvIEhUTUwiICk7Ci0gICAgCi0gICAgaW5wdXRBcmVhXy5zZXRFZGl0YWJsZSggdHJ1ZSApOwotICAgIG91dHB1dEFyZWFfLnNldEVkaXRhYmxlKCB0cnVlICk7Ci0gICAgYnV0dG9uXy5hZGRBY3Rpb25MaXN0ZW5lciggbmV3IEFjdGlvbkxpc3RlbmVyKCkKLSAgICAJCSAgICAgICAgICAgICAgICAgICB7Ci0gICAgCSAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoIEFjdGlvbkV2ZW50IGV2dCApCi0gICAgCSAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUZXh0KCk7Ci0gICAgCSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgCQkgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgCi0gICAgYWRkKCBpbnB1dEFyZWFfICk7Ci0gICAgYWRkKCBidXR0b25fICk7Ci0gICAgYWRkKCBvdXRwdXRBcmVhXyApOwotICAgIC8vc2V0U2l6ZSggMTAwLCAxMDAgKTsKLSAgICBwYWNrKCk7Ci0gICAgc2hvdygpOwotICB9Ci0gIAotICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVFdmVudCggRXZlbnQgZXZ0ICkKLSAgewotICAgIGlmKCBldnQuaWQgPT0gRXZlbnQuV0lORE9XX0RFU1RST1kgKQotICAgIHsKLSAgICAgIFN5c3RlbS5leGl0KDApOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICAKLSAgcHJpdmF0ZSB2b2lkIGNvbnZlcnRUZXh0KCkKLSAgewotICAJU3RyaW5nIGlucHV0U3RyaW5nID0gaW5wdXRBcmVhXy5nZXRUZXh0KCk7Ci0gIAlTdHJpbmcgb3V0cHV0U3RyaW5nID0gaW5wdXRTdHJpbmcucmVwbGFjZUFsbCggIjwiLCAiJmx0OyIpOwotICAJCi0gIAlvdXRwdXRTdHJpbmcgPSBvdXRwdXRTdHJpbmcucmVwbGFjZUFsbCggIj4iLCAiJmd0OyIgKTsKLSAgCQotICAJb3V0cHV0QXJlYV8uc2V0VGV4dCggb3V0cHV0U3RyaW5nICk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdXRpbHMvUmVtb3ZlVW51c2VkS2V5cy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9SZW1vdmVVbnVzZWRLZXlzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZWE4NmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9SZW1vdmVVbnVzZWRLZXlzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3MudGVzdHMudXRpbHM7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlV3JpdGVyOwotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1wdWJsaWMgY2xhc3MgUmVtb3ZlVW51c2VkS2V5cyAKLXsKLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oIFN0cmluZ1tdIGFyZ3MgKQotICB7Ci0gICAgRmlsZSAgICAgICAgc3RhcnRQYXRoICAgICA9IG5ldyBGaWxlKCBhcmdzWzBdICk7Ci0gICAgU3RyaW5nW10gICAgcGx1Z2luRmlsZXMgICA9IFV0aWxzLnJlYWRMaW5lcyggYXJnc1sxXSApOwotICAgIFZlY3RvciAgICAgIHByb3BlcnR5RmlsZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgSGFzaHRhYmxlICAga2V5cyAgICAgICAgICA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBIYXNodGFibGUgICBzcmNLZXlzICAgICAgID0gbmV3IEhhc2h0YWJsZSgpOwotICAgIFZlY3RvciAgICAgIHNyY0ZpbGVzICAgICAgPSBuZXcgVmVjdG9yKCk7Ci0gICAgVmVjdG9yICAgICAgcHJvcE5hbWVzICAgICA9IG5ldyBWZWN0b3IoKTsKLSAgICBWZWN0b3IgICAgICBwbHVnaW5OYW1lcyAgID0gbmV3IFZlY3RvcigpOwotICAgIFN0cmluZ1tdICAgIHBsdWdpbkFycmF5ICAgPSBudWxsOwotICAgIEhhc2h0YWJsZSAgIHNyY1BsdWdpbk1hcCAgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgCi0gICAgCi0gICAgLy8gRmluZCBhbGwgdGhlIHByb3BlcnR5IGZpbGVzLgotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBwbHVnaW5GaWxlcy5sZW5ndGg7IGluZGV4KysgKQotICAgIHsKLSAgICAgIEZpbGUgICBwbHVnaW5EaXIgICAgID0gVXRpbHMuZ2V0RmlsZSggc3RhcnRQYXRoLCBwbHVnaW5GaWxlc1tpbmRleF0gKTsKLSAgICAgIAotICAgICAgaWYoIHBsdWdpbkRpciA9PSBudWxsICkKLSAgICAgIHsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiUGx1Z2luOiAiICsgcGx1Z2luRmlsZXNbaW5kZXhdICsgIiBub3QgZm91bmQhIiApOwotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgVXRpbHMuZ2V0RmlsZXMoIHBsdWdpbkRpciwgcHJvcGVydHlGaWxlcywgInByb3BlcnRpZXMiLCBuZXcgU3RyaW5nW117ICJiaW4iLCAiYnVpbGQucHJvcGVydGllcyIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3c2V4cGxvcmVyLnByb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1ZGRpLnByb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3c2RsLnByb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3c2lsLnByb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYXZvcml0ZXMucHJvcGVydGllcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ld3Byb3BzLnByb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxwcm9wcy5wcm9wZXJ0aWVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTsKLSAgICAgIFV0aWxzLmdldEZpbGVzKCBwbHVnaW5EaXIsIHNyY0ZpbGVzLCAiamF2YSIsIG5ldyBTdHJpbmdbMF0gKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggcHJvcGVydHkgZmlsZQotICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBwcm9wZXJ0eUZpbGVzLnNpemUoKTsgaW5kZXgrKyApCi0gICAgewotICAgICAgRmlsZSAgIHByb3BGaWxlID0gKEZpbGUpcHJvcGVydHlGaWxlcy5lbGVtZW50QXQoaW5kZXgpOwotICAgICAgRmlsZSAgIHBhcmVudCAgID0gbmV3IEZpbGUoIHByb3BGaWxlLmdldFBhcmVudCgpICk7Ci0gICAgICAKLSAgICAgIC8vIFNraXAgcHJvcGVydGllcyBmaWxlcyB0aGF0IGFyZSBpbiB0aGUgcGx1Z2luIGRpcmVjdG9yeS4KLSAgICAgIGlmKCBVdGlscy5zdHJpbmdJbkFycmF5KCBwYXJlbnQuZ2V0TmFtZSgpLCBwbHVnaW5GaWxlcyApICkKLSAgICAgIHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIFN0cmluZyBwcm9wTmFtZSA9IHByb3BGaWxlLmdldEFic29sdXRlUGF0aCgpOwotICAgICAgaW50ICAgIHNyY1N0YXJ0ID0gcHJvcE5hbWUuaW5kZXhPZiggInNyYyIgKTsKLSAgICAgIAotICAgICAgaWYoIHNyY1N0YXJ0ICE9IC0xICkKLSAgICAgIHsKLSAgICAgICAgaW50IGxhc3RTbGFzaCA9IHByb3BOYW1lLmxhc3RJbmRleE9mKCAnXFwnICk7Ci0gICAgICAgIGludCBsYXN0RG90ICAgPSBwcm9wTmFtZS5sYXN0SW5kZXhPZiggJy4nICk7Ci0gICAgICAgIFN0cmluZyBuYW1lICAgPSBwcm9wTmFtZS5zdWJzdHJpbmcoIHNyY1N0YXJ0ICsgNCwgbGFzdFNsYXNoICk7Ci0gICAgICAgIFN0cmluZyBuYW1lMiAgPSBwcm9wTmFtZS5zdWJzdHJpbmcoIHNyY1N0YXJ0ICsgNCwgbGFzdERvdCApOwotICAgICAgICBuYW1lICA9IG5hbWUucmVwbGFjZSggJ1xcJywgJy4nICk7IAotICAgICAgICBuYW1lMiA9IG5hbWUyLnJlcGxhY2UoICdcXCcsICcuJyApOwotICAgICAgICAKLSAgICAgICAgcGx1Z2luTmFtZXMuYWRkKCBuYW1lICk7Ci0gICAgICAgIHBsdWdpbk5hbWVzLmFkZCggbmFtZTIgKTsKLSAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIHByb3BOYW1lICsgIj4+IiArIG5hbWUgKyAiPj4iICsgbmFtZTIgKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcGx1Z2luQXJyYXkgPSAoU3RyaW5nW10pcGx1Z2luTmFtZXMudG9BcnJheSggbmV3IFN0cmluZ1swXSApOwotICAgIAotICAgIC8vIEZpbmQgYWxsIHRoZSBqYXZhIHN0cmluZ3MuCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IHNyY0ZpbGVzLnNpemUoKTsgaW5kZXgrKyApCi0gICAgewotICAgICAgRmlsZSAgICAgc3JjRmlsZSAgICAgPSAoRmlsZSlzcmNGaWxlcy5lbGVtZW50QXQoaW5kZXgpOwotICAgICAgVmVjdG9yICAgZmlsZVNyY0tleXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgICBTdHJpbmdbXSBsaW5lcyAgICAgICA9IFV0aWxzLnJlYWRMaW5lcyhzcmNGaWxlICk7Ci0gICAgICAKLSAgICAgIGZvciggaW50IHNyY0luZGV4ID0gMDsgc3JjSW5kZXggPCBsaW5lcy5sZW5ndGg7IHNyY0luZGV4KysgKQotICAgICAgewotICAgICAgICBVdGlscy5maW5kSmF2YVN0cmluZ3MoIGxpbmVzW3NyY0luZGV4XSwgZmlsZVNyY0tleXMgKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgZm9yKCBpbnQga2V5c0luZGV4ID0gMDsga2V5c0luZGV4IDwgZmlsZVNyY0tleXMuc2l6ZSgpOyBrZXlzSW5kZXgrKyApCi0gICAgICB7Ci0gICAgICAgIFN0cmluZyAga2V5ICAgICA9IChTdHJpbmcpZmlsZVNyY0tleXMuZWxlbWVudEF0KCBrZXlzSW5kZXggKTsKLSAgICAgICAgSGFzaFNldCBmaWxlU2V0ID0gKEhhc2hTZXQpc3JjS2V5cy5nZXQoIGtleSApOwotICAgICAgICAKLSAgICAgICAgaWYoIGZpbGVTZXQgPT0gbnVsbCApCi0gICAgICAgIHsKLSAgICAgICAgICBmaWxlU2V0ID0gbmV3IEhhc2hTZXQoKTsKLSAgICAgICAgICBzcmNLZXlzLnB1dCgga2V5LCBmaWxlU2V0ICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmKCBVdGlscy5zdHJpbmdJbkFycmF5KCBrZXksIHBsdWdpbkFycmF5ICkgKQotICAgICAgICB7Ci0gICAgICAgICAgSGFzaFNldCBuYW1lcyA9IChIYXNoU2V0KXNyY1BsdWdpbk1hcC5nZXQoIHNyY0ZpbGUgKTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZiggbmFtZXMgPT0gbnVsbCApCi0gICAgICAgICAgewotICAgICAgICAgICAgbmFtZXMgPSBuZXcgSGFzaFNldCgpOwotICAgICAgICAgICAgc3JjUGx1Z2luTWFwLnB1dCggc3JjRmlsZSwgbmFtZXMgKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgICAgbmFtZXMuYWRkKCBrZXkgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZmlsZVNldC5hZGQoIHNyY0ZpbGUgKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICBpbnQgY291bnQgPSAxOwotICAgIAotICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIHByb3BlcnR5IGZpbGUKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgcHJvcGVydHlGaWxlcy5zaXplKCk7IGluZGV4KysgKQotICAgIHsKLSAgICAgIEZpbGUgICBwcm9wRmlsZSA9IChGaWxlKXByb3BlcnR5RmlsZXMuZWxlbWVudEF0KGluZGV4KTsKLSAgICAgIFZlY3RvciBwcm9wS2V5cyA9IFV0aWxzLmdldFByb3BlcnR5S2V5cyggcHJvcEZpbGUgKTsgIAotICAgICAgRmlsZSAgIHBhcmVudCAgID0gbmV3IEZpbGUoIHByb3BGaWxlLmdldFBhcmVudCgpICk7Ci0gICAgICAKLSAgICAgIC8vIFNraXAgcHJvcGVydGllcyBmaWxlcyB0aGF0IGFyZSBpbiB0aGUgcGx1Z2luIGRpcmVjdG9yeS4KLSAgICAgIGlmKCBVdGlscy5zdHJpbmdJbkFycmF5KCBwYXJlbnQuZ2V0TmFtZSgpLCBwbHVnaW5GaWxlcyApICkKLSAgICAgIHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgIFN0cmluZyBwcm9wTmFtZSAgID0gcHJvcEZpbGUuZ2V0QWJzb2x1dGVQYXRoKCk7Ci0gICAgICBpbnQgICAgc3JjU3RhcnQgICA9IHByb3BOYW1lLmluZGV4T2YoICJzcmMiICk7Ci0gICAgICBTdHJpbmcgZm9sZGVyTmFtZSA9ICIiOwotICAgICAgU3RyaW5nIHBrZ05hbWUgID0gIiI7Ci0gICAgICAKLSAgICAgIGlmKCBzcmNTdGFydCAhPSAtMSApCi0gICAgICB7Ci0gICAgICAgIGludCBsYXN0U2xhc2ggPSBwcm9wTmFtZS5sYXN0SW5kZXhPZiggJ1xcJyApOwotICAgICAgICBTdHJpbmcgbmFtZSAgID0gcHJvcE5hbWUuc3Vic3RyaW5nKCBzcmNTdGFydCArIDQsIGxhc3RTbGFzaCApOwotICAgICAgICBuYW1lICA9IG5hbWUucmVwbGFjZSggJ1xcJywgJy4nICk7IAotICAgICAgICAKLSAgICAgICAgcGtnTmFtZSAgICA9IG5hbWU7Ci0gICAgICAgIGZvbGRlck5hbWUgPSBwcm9wTmFtZS5zdWJzdHJpbmcoIDAsIGxhc3RTbGFzaCArIDEgKTsgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgICAgCi0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIHByb3BGaWxlLmdldEFic29sdXRlUGF0aCgpICk7Ci0gICAgICAKLSAgICAgIFN0cmluZyBuZXdQcm9wTmFtZSA9IGZvbGRlck5hbWUgKyAibmV3cHJvcHMucHJvcGVydGllcyI7Ci0gICAgICBTdHJpbmcgZGVsUHJvcE5hbWUgPSBmb2xkZXJOYW1lICsgImRlbHByb3BzLnByb3BlcnRpZXMiOwotICAgICAgCi0gICAgICBQcmludFdyaXRlciBuZXdQcm9wZXJ0eUZpbGUgPSBudWxsOwotICAgICAgUHJpbnRXcml0ZXIgZGVsUHJvcGVydHlGaWxlID0gbnVsbDsKLSAgICAgICAgCi0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgbmV3UHJvcGVydHlGaWxlID0gbmV3IFByaW50V3JpdGVyKCBuZXcgRmlsZVdyaXRlciggbmV3UHJvcE5hbWUgKSk7Ci0gICAgICAgIGRlbFByb3BlcnR5RmlsZSA9IG5ldyBQcmludFdyaXRlciggbmV3IEZpbGVXcml0ZXIoIGRlbFByb3BOYW1lICkpOwotICAgICAgICAKLSAgICAgICAgVXRpbHMuY3JlYXRlT3V0cHV0RmlsZSggc3JjS2V5cy5rZXlTZXQoKSwgcHJvcEZpbGUsIG5ld1Byb3BlcnR5RmlsZSwgZGVsUHJvcGVydHlGaWxlICk7Ci0gICAgICAgIAotICAgICAgfQotICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgICAgewotICAgICAgIGV4Yy5wcmludFN0YWNrVHJhY2UoKTsgCi0gICAgICB9Ci0gICAgICBmaW5hbGx5Ci0gICAgICB7Ci0gICAgICAgIGlmKCBuZXdQcm9wZXJ0eUZpbGUgIT0gbnVsbCApIG5ld1Byb3BlcnR5RmlsZS5jbG9zZSgpOwotICAgICAgICBpZiggZGVsUHJvcGVydHlGaWxlICE9IG51bGwgKSBkZWxQcm9wZXJ0eUZpbGUuY2xvc2UoKTsKLSAgICAgIH0gICAgIAotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9VcGRhdGVGZWF0dXJlWE1MRmlsZXMuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53cy50ZXN0cy90ZXN0cy9vcmcvZWNsaXBzZS93c3Qvd3MvdGVzdHMvdXRpbHMvVXBkYXRlRmVhdHVyZVhNTEZpbGVzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZmFlZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9VcGRhdGVGZWF0dXJlWE1MRmlsZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnV0aWxzOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZVdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7Ci0KLXB1YmxpYyBjbGFzcyBVcGRhdGVGZWF0dXJlWE1MRmlsZXMgCi17Ci0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkKLSAgewotICAJU3RyaW5nIHJvb3RQYXRoICAgICA9IGFyZ3NbMF07Ci0gIAlGaWxlICAgcm9vdEZpbGUgICAgID0gbmV3IEZpbGUoIHJvb3RQYXRoICk7Ci0gIAlWZWN0b3IgZmVhdHVyZUZpbGVzID0gbmV3IFZlY3RvcigpOwotICAJCi0gIAlnZXRGaWxlcyggZmVhdHVyZUZpbGVzLCByb290RmlsZSApOwotICAJCi0gIAlpbnQgc2l6ZSA9IGZlYXR1cmVGaWxlcy5zaXplKCk7Ci0gIAkKLSAgCWZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBzaXplOyBpbmRleCsrICkKLSAgCXsKLSAgCSAgRmlsZSAgICAgZmlsZSAgICAgID0gKEZpbGUpZmVhdHVyZUZpbGVzLmVsZW1lbnRBdCggaW5kZXggKTsKLSAgCSAgU3RyaW5nICAgZmlsZU5hbWUgID0gZmlsZS5nZXROYW1lKCk7Ci0gIAkgIGludCAgICAgIGxhbmdJbmRleCA9IGZpbGVOYW1lLmluZGV4T2YoICJmZWF0dXJlXyIgKTsKLSAgCSAgaW50ICAgICAgZG90SW5kZXggID0gZmlsZU5hbWUuaW5kZXhPZiggJy4nLCBsYW5nSW5kZXggKTsKLSAgCSAgU3RyaW5nICAgbGFuZyAgICAgID0gZmlsZU5hbWUuc3Vic3RyaW5nKCBsYW5nSW5kZXggKyA4LCBkb3RJbmRleCApOwotICAJICBTdHJpbmdbXSBsaW5lcyAgICAgPSBVdGlscy5yZWFkTGluZXMoIGZpbGUgKTsKLSAgCSAgCi0JICBQcmludFdyaXRlciB3cml0ZXIgICAgID0gbnVsbDsKLSAgCSAgRmlsZVdyaXRlciAgZmlsZVdyaXRlciA9IG51bGw7Ci0gIAkgIAotICAJICB0cnkKLQkgIHsKLQkgICAgZmlsZVdyaXRlciA9IG5ldyBGaWxlV3JpdGVyKCBmaWxlICk7Ci0gIAkgICAgd3JpdGVyID0gbmV3IFByaW50V3JpdGVyKCBmaWxlV3JpdGVyICk7Ci0gIAkgICAgCi0gIAkgICAgZm9yKCBpbnQgbGluZUluZGV4ID0gMDsgbGluZUluZGV4IDwgbGluZXMubGVuZ3RoOyBsaW5lSW5kZXgrKyApCi0gIAkgICAgewotICAJICAJICBTdHJpbmcgbGluZSA9IGxpbmVzW2xpbmVJbmRleF07Ci0gIAkgIAkKLSAgCSAgCSAgaWYoIGxpbmUuaW5kZXhPZiggImxpY2Vuc2VVUkwiICkgIT0gLTEgKQotICAJICAJICB7Ci0gIAkgIAkJd3JpdGVyLnByaW50bG4oICJsaWNlbnNlVVJMPWxpY2Vuc2VfIiArIGxhbmcgKyAiLmh0bWwiICk7Ci0gIAkgIAkgIH0KLSAgCSAgCSAgZWxzZQotICAJICAJICB7Ci0gIAkgIAkJd3JpdGVyLnByaW50bG4oIGxpbmUgKTsKLSAgCSAgCSAgfQotICAJICAgIH0KLQkgIH0KLSAgCSAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotCSAgewotICAJICAJZXhjLnByaW50U3RhY2tUcmFjZSgpOwotCSAgfQotICAJICBmaW5hbGx5Ci0JICB7Ci0gIAkgIAl0cnkKLQkJewotICAJICAJICB3cml0ZXIuY2xvc2UoKTsKLSAgCSAgCSAgZmlsZVdyaXRlci5jbG9zZSgpOwotCQl9Ci0gIAkgIAljYXRjaCggRXhjZXB0aW9uIGV4YyApCi0JCXsKLSAgCSAgCSAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotCQl9Ci0JICB9Ci0gIAl9Ci0gIH0KLSAgCi0gIHN0YXRpYyBwcml2YXRlIHZvaWQgZ2V0RmlsZXMoIFZlY3RvciBmaWxlcywgRmlsZSBwYXRoICkKLSAgewotICAgIGlmKCBwYXRoLmlzRGlyZWN0b3J5KCkgKQotICAgIHsKLSAgICAgIEZpbGVbXSBjaGlsZHJlbiA9IHBhdGgubGlzdEZpbGVzKCk7Ci0gICAgICAKLSAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBjaGlsZHJlbi5sZW5ndGg7IGluZGV4KysgKQotICAgICAgewotICAgICAgCWdldEZpbGVzKCBmaWxlcywgY2hpbGRyZW5baW5kZXhdICk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBTdHJpbmcgcGF0aE5hbWUgPSBwYXRoLmdldE5hbWUoKTsKLSAgICAgICAgICAgIAotICAgICAgaW50ICAgIGluZGV4ICAgID0gcGF0aE5hbWUuaW5kZXhPZiggImZlYXR1cmVfIiApOwotICAgICAgCi0gICAgICBpZiggaW5kZXggIT0gLTEgKQotICAgICAgewotICAgICAgCWZpbGVzLmFkZCggcGF0aCApOwotICAgICAgfQotICAgIH0gIAotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL1V0aWxzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3MudGVzdHMvdGVzdHMvb3JnL2VjbGlwc2Uvd3N0L3dzL3Rlc3RzL3V0aWxzL1V0aWxzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMjBkYmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzL3Rlc3RzL29yZy9lY2xpcHNlL3dzdC93cy90ZXN0cy91dGlscy9VdGlscy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzA1ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzLnRlc3RzLnV0aWxzOwotCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5GaWxlUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uRmlsZW5hbWVGaWx0ZXI7Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLlByb3BlcnR5UmVzb3VyY2VCdW5kbGU7Ci1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLQotcHVibGljIGNsYXNzIFV0aWxzIAotewotICBwdWJsaWMgc3RhdGljIHZvaWQgY3JlYXRlT3V0cHV0RmlsZSggQ29sbGVjdGlvbiBrZXlzLCBGaWxlIHByb3BzRmlsZSwgUHJpbnRXcml0ZXIgb3V0cHV0RmlsZSwgUHJpbnRXcml0ZXIgZGVsZXRlRmlsZSApCi0gIHsKLSAgICBTdHJpbmdbXSBsaW5lcyAgICAgICAgPSByZWFkTGluZXMoIHByb3BzRmlsZSApOwotICAgIGJvb2xlYW4gIGNvbnRpbnVlTGluZSA9IGZhbHNlOwotICAgIGJvb2xlYW4gIGRlbGV0ZUtleSAgICA9IGZhbHNlOwotICAgICAKLSAgICBmb3IoIGludCBpbmRleCA9IDA7IGluZGV4IDwgbGluZXMubGVuZ3RoOyBpbmRleCsrICkKLSAgICB7Ci0gICAgICBTdHJpbmcgICBsaW5lID0gbGluZXNbaW5kZXhdLnRyaW0oKTsKLSAgICAgIAotICAgICAgaWYoIGNvbnRpbnVlTGluZSApCi0gICAgICB7Ci0gICAgICAgIGNvbnRpbnVlTGluZSA9IGxpbmUuZW5kc1dpdGgoICJcXCIgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhZGVsZXRlS2V5ICkKLSAgICAgICAgewotICAgICAgICAgIG91dHB1dEZpbGUucHJpbnRsbiggbGluZSApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGRlbGV0ZUZpbGUucHJpbnRsbiggbGluZSApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgY29udGludWVMaW5lID0gbGluZS5lbmRzV2l0aCggIlxcIiApOwotICAgICAgCi0gICAgICBib29sZWFuICB2YWxpZEtleSAgICAgPSBpc0xpbmVLZXkoIGtleXMsIGxpbmUgKTsKLSAgICAgIGJvb2xlYW4gIGhhc0tleSAgICAgICA9IGxpbmUuaW5kZXhPZiggJz0nICkgIT0gLTE7Ci0gICAgICAKLSAgICAgIGlmKCB2YWxpZEtleSApCi0gICAgICB7Ci0gICAgICAgIG91dHB1dEZpbGUucHJpbnRsbiggbGluZSApOwotICAgICAgICBkZWxldGVLZXkgPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoIGhhc0tleSApCi0gICAgICB7Ci0gICAgICAgIGRlbGV0ZUtleSA9IHRydWU7Ci0gICAgICAgIGRlbGV0ZUZpbGUucHJpbnRsbiggbGluZSApOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBvdXRwdXRGaWxlLnByaW50bG4oIGxpbmUgKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xpbmVLZXkoIENvbGxlY3Rpb24ga2V5cywgU3RyaW5nIGxpbmUgKQotICB7Ci0gICAgYm9vbGVhbiAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgSXRlcmF0b3IgaXRlciAgID0ga2V5cy5pdGVyYXRvcigpOwotICAgIGludCAgICAgIGVxdWFsSW5kZXggPSBsaW5lLmluZGV4T2YoICc9JyApOwotICAgIFN0cmluZyAgIGtleSAgICAgICAgPSBudWxsOwotICAgIAotICAgIGlmKCBlcXVhbEluZGV4ICE9IC0xICYmICFsaW5lLnN0YXJ0c1dpdGgoICIjIiApKQotICAgIHsKLSAgICAgIGtleSA9IGxpbmUuc3Vic3RyaW5nKCAwLCBlcXVhbEluZGV4ICk7Ci0gICAgfQotICAgIAotICAgIHdoaWxlKCBpdGVyLmhhc05leHQoKSAmJiBrZXkgIT0gbnVsbCApCi0gICAgewotICAgICAgU3RyaW5nIGNvbGxlY3Rpb25LZXkgPSAoU3RyaW5nKWl0ZXIubmV4dCgpOwotICAgICAgaWYoIGtleS5lcXVhbHMoIGNvbGxlY3Rpb25LZXkgKSB8fCBjb2xsZWN0aW9uS2V5LmVxdWFscyggJyUnICsga2V5ICkgKQotICAgICAgewotICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyB2b2lkIGdldFBsdWdpblhNTEtleXMoIEZpbGUgZmlsZSwgSGFzaFNldCBrZXlzICkKLSAgewotICAgIEJ1ZmZlcmVkUmVhZGVyIHJlYWRlciA9IG51bGw7Ci0gICAgCi0gICAgdHJ5Ci0gICAgewotICAgICAgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKCBuZXcgRmlsZVJlYWRlciggZmlsZSApICk7Ci0gICAgICAKLSAgICAgIFN0cmluZyBsaW5lID0gcmVhZGVyLnJlYWRMaW5lKCk7Ci0gICAgICAKLSAgICAgIHdoaWxlKCBsaW5lICE9IG51bGwgKQotICAgICAgewotICAgICAgICBWZWN0b3IgbGluZWtleXMgPSBmaW5kS2V5cyggbGluZSApOwotICAgICAgICBrZXlzLmFkZEFsbCggbGluZWtleXMgKTsKLSAgICAgICAgbGluZSA9IHJlYWRlci5yZWFkTGluZSgpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgICBmaW5hbGx5Ci0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGlmKCByZWFkZXIgIT0gbnVsbCApIHJlYWRlci5jbG9zZSgpOwotICAgICAgfQotICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgICAgewotICAgICAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIEZpbGUgZ2V0RmlsZSggRmlsZSBiYXNlLCBmaW5hbCBTdHJpbmcgY2hpbGQgKQotICB7Ci0gICAgRmlsZVtdIGZpbGUgPSBiYXNlLmxpc3RGaWxlcyggbmV3IEZpbGVuYW1lRmlsdGVyKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBhY2NlcHQoIEZpbGUgZmlsZSwgU3RyaW5nIG5hbWUgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBuYW1lLmluZGV4T2YoICdfJyApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGluZGV4ICE9IC0xICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZyggMCwgaW5kZXggKTsgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZS5lbmRzV2l0aCggY2hpbGQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7Ci0gICAgcmV0dXJuIGZpbGUubGVuZ3RoID09IDAgPyBudWxsIDogZmlsZVswXTsKLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBWZWN0b3IgZmluZEtleXMoIFN0cmluZyBsaW5lICkKLSAgewotICAgIFZlY3RvciBrZXlzICAgICAgID0gbmV3IFZlY3RvcigpOwotICAgIGludCAgICBxdW90ZXN0YXJ0ID0gbGluZS5pbmRleE9mKCAnIicgKTsKLSAgICBpbnQgICAgcXVvdGVlbmQgICA9IGxpbmUuaW5kZXhPZiggJyInLCBxdW90ZXN0YXJ0ICsgMSApOwotICAgIAotICAgIHdoaWxlKCBxdW90ZXN0YXJ0ICE9IC0xICYmIHF1b3RlZW5kICE9IC0xICYmIHF1b3Rlc3RhcnQgPCBxdW90ZWVuZCApCi0gICAgewotICAgICAgU3RyaW5nIGtleSA9IGxpbmUuc3Vic3RyaW5nKCBxdW90ZXN0YXJ0KzEsIHF1b3RlZW5kICk7Ci0gICAgICAKLSAgICAgIGlmKCBrZXkuc3RhcnRzV2l0aCggIiUiKSApCi0gICAgICB7Ci0gICAgICAgIGtleXMuYWRkKCBrZXkuc3Vic3RyaW5nKDEsIGtleS5sZW5ndGgoKSApICk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIHF1b3Rlc3RhcnQgPSBsaW5lLmluZGV4T2YoICciJywgcXVvdGVlbmQrMSApOwotICAgICAgcXVvdGVlbmQgICA9IGxpbmUuaW5kZXhPZiggJyInLCBxdW90ZXN0YXJ0KzEgKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGtleXM7Ci0gIH0KLSAgCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBmaW5kSmF2YVN0cmluZ3MoIFN0cmluZyBsaW5lLCBWZWN0b3Iga2V5cyApCi0gIHsKLSAgICBpbnQgICAgcXVvdGVzdGFydCA9IGxpbmUuaW5kZXhPZiggJyInICk7Ci0gICAgaW50ICAgIHF1b3RlZW5kICAgPSBsaW5lLmluZGV4T2YoICciJywgcXVvdGVzdGFydCArIDEgKTsKLSAgICAKLSAgICB3aGlsZSggcXVvdGVzdGFydCAhPSAtMSAmJiBxdW90ZWVuZCAhPSAtMSAmJiBxdW90ZXN0YXJ0IDwgcXVvdGVlbmQgKQotICAgIHsKLSAgICAgIC8vIEZpbmQgbGFzdCByZWFsIGVuZGluZyBxdW90ZS4KLSAgICAgIHdoaWxlKCBxdW90ZXN0YXJ0ICE9IC0xICYmIHF1b3RlZW5kICE9IC0xICYmIGxpbmUuY2hhckF0KCBxdW90ZWVuZC0xICkgPT0gJ1xcJyApCi0gICAgICB7Ci0gICAgICAgIHF1b3RlZW5kID0gbGluZS5pbmRleE9mKCAnIicsIHF1b3RlZW5kICsgMSApOwotICAgICAgfQotICAgICAgCi0gICAgICBpZiggcXVvdGVzdGFydCA9PSAtMSB8fCBxdW90ZWVuZCA9PSAtMSB8fCBxdW90ZXN0YXJ0ID4gcXVvdGVlbmQgKSBicmVhazsKLSAgICAgIAotICAgICAgU3RyaW5nIGtleSA9IGxpbmUuc3Vic3RyaW5nKCBxdW90ZXN0YXJ0KzEsIHF1b3RlZW5kICk7Ci0gICAgICAKLSAgICAgIGtleXMuYWRkKCBrZXkgKTsKLSAgICAgIAotICAgICAgcXVvdGVzdGFydCA9IGxpbmUuaW5kZXhPZiggJyInLCBxdW90ZWVuZCsxICk7Ci0gICAgICBxdW90ZWVuZCAgID0gbGluZS5pbmRleE9mKCAnIicsIHF1b3Rlc3RhcnQrMSApOwotICAgIH0KLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSByZWFkTGluZXMoIEZpbGUgZmlsZSApCi0gIHsKLSAgICBWZWN0b3IgZmlsZXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgQnVmZmVyZWRSZWFkZXIgcmVhZGVyID0gbnVsbDsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICByZWFkZXIgPSBuZXcgQnVmZmVyZWRSZWFkZXIoIG5ldyBGaWxlUmVhZGVyKCBmaWxlICkgKTsKLSAgICAgIAotICAgICAgU3RyaW5nIGxpbmUgPSByZWFkZXIucmVhZExpbmUoKTsKLSAgICAgIAotICAgICAgd2hpbGUoIGxpbmUgIT0gbnVsbCApCi0gICAgICB7Ci0gICAgICAgIGZpbGVzLmFkZCggbGluZSApOwotICAgICAgICBsaW5lID0gcmVhZGVyLnJlYWRMaW5lKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoKCBFeGNlcHRpb24gZXhjICkKLSAgICB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJQcm9ibGVtIG9wZW5pbmcgZmlsZToiICsgZmlsZSApOwotICAgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgICBmaW5hbGx5Ci0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGlmKCByZWFkZXIgIT0gbnVsbCApIHJlYWRlci5jbG9zZSgpOwotICAgICAgfQotICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgICAgewotICAgICAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiAoU3RyaW5nW10pZmlsZXMudG9BcnJheSggbmV3IFN0cmluZ1swXSApOwotICAgIAotICB9Ci0gIAotICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIHJlYWRMaW5lcyggU3RyaW5nIGZpbGUgKQotICB7Ci0gICAgcmV0dXJuIHJlYWRMaW5lcyggbmV3IEZpbGUoIGZpbGUgKSApOwotICB9Ci0gICAgCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBnZXRGaWxlcyggRmlsZSBmaWxlLCBWZWN0b3IgZmlsZXMsIFN0cmluZyBmaWxlU3VmZml4LCBTdHJpbmdbXSBleGNsdWRlRmlsZXMgKQotICB7Ci0gICAgaWYoIHN0cmluZ0luQXJyYXkoIGZpbGUuZ2V0TmFtZSgpLCBleGNsdWRlRmlsZXMgKSApCi0gICAgewotICAgICAgLy8gZG8gbm90aGluZwotICAgIH0KLSAgICBlbHNlIGlmKCBmaWxlLmlzRGlyZWN0b3J5KCkgKQotICAgIHsKLSAgICAgIEZpbGVbXSBkaXJmaWxlcyA9IGZpbGUubGlzdEZpbGVzKCk7Ci0gICAgICAKLSAgICAgIGZvciggaW50IGluZGV4ID0gMDsgaW5kZXggPCBkaXJmaWxlcy5sZW5ndGg7IGluZGV4KysgKQotICAgICAgewotICAgICAgICBnZXRGaWxlcyggZGlyZmlsZXNbaW5kZXhdLCBmaWxlcywgZmlsZVN1ZmZpeCwgZXhjbHVkZUZpbGVzICk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYoIGZpbGUuZ2V0TmFtZSgpLmVuZHNXaXRoKCBmaWxlU3VmZml4ICkgKQotICAgIHsKLSAgICAgIGZpbGVzLmFkZCggZmlsZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIH0KLSAgfQotICAKLSAgcHVibGljIHN0YXRpYyBib29sZWFuIHN0cmluZ0luQXJyYXkoIFN0cmluZyBuYW1lLCBTdHJpbmdbXSBuYW1lcyApCi0gIHsKLSAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7Ci0gICAgCi0gICAgZm9yKCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IG5hbWVzLmxlbmd0aDsgaW5kZXgrKyApCi0gICAgewotICAgICAgaWYoIG5hbWUuZXF1YWxzKCBuYW1lc1tpbmRleF0gKSkKLSAgICAgIHsKLSAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZvdW5kOwotICB9Ci0gIHB1YmxpYyBzdGF0aWMgVmVjdG9yIGdldFByb3BlcnR5S2V5cyggRmlsZSBmaWxlICkKLSAgewotICAgIFZlY3RvciAgICAgIGtleXMgPSBuZXcgVmVjdG9yKCk7Ci0gICAgSW5wdXRTdHJlYW0gc3RyZWFtID0gbnVsbDsKLSAgICAKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKCBmaWxlICk7Ci0gICAgICAKLSAgICAgIFByb3BlcnR5UmVzb3VyY2VCdW5kbGUgYnVuZGxlICA9IG5ldyBQcm9wZXJ0eVJlc291cmNlQnVuZGxlKCBzdHJlYW0gKTsKLSAgICAgIEVudW1lcmF0aW9uICAgICAgICAgICAga2V5RW51bSA9IGJ1bmRsZS5nZXRLZXlzKCk7Ci0gICAgICAKLSAgICAgIHdoaWxlKCBrZXlFbnVtLmhhc01vcmVFbGVtZW50cygpICkKLSAgICAgIHsKLSAgICAgICAga2V5cy5hZGQoIGtleUVudW0ubmV4dEVsZW1lbnQoKSApOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCggRXhjZXB0aW9uIGV4YyApCi0gICAgewotICAgICAgZXhjLnByaW50U3RhY2tUcmFjZSgpOwotICAgIH0KLSAgICBmaW5hbGx5Ci0gICAgewotICAgICAgdHJ5Ci0gICAgICB7Ci0gICAgICAgIGlmKCBzdHJlYW0gIT0gbnVsbCApIHN0cmVhbS5jbG9zZSgpOwotICAgICAgfQotICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleGMgKQotICAgICAgewotICAgICAgICBleGMucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBrZXlzOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS8uY2xhc3NwYXRoIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE2OGQwZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS8uY2xhc3NwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0icGVyZm9ybWFuY2UiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIj4KLQkJPGFjY2Vzc3J1bGVzPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvKioiLz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49Im9yZy9lY2xpcHNlL3dzdC93cy9pbnRlcm5hbC9wcmVmZXJlbmNlcy9QZXJzaXN0ZW50V1NJQ29udGV4dCIvPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0ib3JnL2VjbGlwc2Uvd3N0L3dzL2ludGVybmFsL3BsdWdpbi9XU1BsdWdpbiIvPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0ib3JnL2VjbGlwc2Uvd3N0L3ZhbGlkYXRpb24vaW50ZXJuYWwvKioiLz4KLQkJPC9hY2Nlc3NydWxlcz4KLQk8L2NsYXNzcGF0aGVudHJ5PgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPgotPC9jbGFzc3BhdGg+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS8uY3ZzaWdub3JlIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE0NTZkMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1iaW4KLWJ1aWxkLnhtbAotdGVtcC5mb2xkZXIKLXBlcmZvcm1hbmNlLmphcgotamF2YUNvbXBpbGVyLnBlcmZvcm1hbmNlLmphci5hcmdzCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS8ucHJvamVjdCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzZlODYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2U8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+CQotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0gICAgIAk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMmM1MDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jV2VkIFNlcCAyNiAwNjozMToxMiBFRFQgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWVuY29kaW5nLzxwcm9qZWN0Pj1JU08tODg1OS0xCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NWZhZmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0jU3VuIEp1biAwMyAwMDo0MTo0NCBFRFQgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS4yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hc3NlcnRJZGVudGlmaWVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuMwpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRhNDNhOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVCdW5kbGUtTmFtZS4wCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZQotQnVuZGxlLVZlcnNpb246IDEuMC4xCi1CdW5kbGUtQ2xhc3NQYXRoOiBwZXJmb3JtYW5jZS5qYXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLlBlcmZvcm1hbmNlUGx1Z2luCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLUV4cG9ydC1QYWNrYWdlOiBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eQotUmVxdWlyZS1CdW5kbGU6IG9yZy5qdW5pdDtidW5kbGUtdmVyc2lvbj0iWzMuOC4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLAotIG9yZy5lY2xpcHNlLmVtZi5lY29yZSwKLSBvcmcuZWNsaXBzZS51aSwKLSBvcmcuZWNsaXBzZS51aS5pZGUsCi0gb3JnLmVjbGlwc2UudGVzdCwKLSBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLmZyYW1ld29ya3MsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwudWksCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbiwKLSBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbiwKLSBqYXZheC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS41LjAsMS42LjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3MsCi0gb3JnLmVjbGlwc2Uud3N0LmNvbW1hbmQuZW52LAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudi5jb3JlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24udGVzdHMucGVyZm9ybWFuY2UsCi0gb3JnLmVjbGlwc2UudGVzdCwKLSBvcmcuZWNsaXBzZS50ZXN0LnBlcmZvcm1hbmNlCi1CdW5kbGUtQWN0aXZhdGlvblBvbGljeTogbGF6eQotQnVuZGxlLVJlcXVpcmVkRXhlY3V0aW9uRW52aXJvbm1lbnQ6IEoyU0UtMS40CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9hYm91dC5odG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9hYm91dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPEhUTUw+Ci0KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLQotPEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDM+QWJvdXQgVGhpcyBDb250ZW50PC9IMz4KLQotPFA+SnVuZSwgMjAwODwvUD4KLQotPEgzPkxpY2Vuc2U8L0gzPgotCi08UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gCi0oIkNvbnRlbnQiKS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSAKLXVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAKLSgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHA8L0E+LiAKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KLQotPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgCi1Db250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IAotdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5IGFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gCi1DaGVjayB0aGUgUmVkaXN0cmlidXRvcpJzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCAKLWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIAotdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLzwvQT4uPC9QPgotCi08L0JPRFk+Ci08L0hUTUw+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9idWlsZC5wcm9wZXJ0aWVzIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjliM2M2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXNvdXJjZS5wZXJmb3JtYW5jZS5qYXIgPSBwZXJmb3JtYW5jZS8KLW91dHB1dC5wZXJmb3JtYW5jZS5qYXIgPSBiaW4vCi1iaW4uaW5jbHVkZXMgPSBwZXJmb3JtYW5jZS5qYXIsXAotICAgICAgICAgICAgICAgdGVzdC54bWwsXAotICAgICAgICAgICAgICAgZGF0YS8sXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I2MjI3OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkzIiBsb2NhdGlvbj0ic2FtcGxlODkzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY2IiBsb2NhdGlvbj0iLi9zYW1wbGU2NjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTkiIGxvY2F0aW9uPSIuXHNhbXBsZTQ1OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNjNzhhYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiIGxvY2F0aW9uPSJzYW1wbGUxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNCIgbG9jYXRpb249Ii4vc2FtcGxlODM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc1IiBsb2NhdGlvbj0iLlxzYW1wbGUzNzUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY3ZTE0MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA4IiBsb2NhdGlvbj0ic2FtcGxlMzA4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY5IiBsb2NhdGlvbj0iLi9zYW1wbGU4Njkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDAiIGxvY2F0aW9uPSIuXHNhbXBsZTE0MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEwMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTkzZmI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEwMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODIiIGxvY2F0aW9uPSJzYW1wbGU2ODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyIgbG9jYXRpb249Ii4vc2FtcGxlMjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzQiIGxvY2F0aW9uPSIuXHNhbXBsZTE3NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUzZTBlZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgxIiBsb2NhdGlvbj0ic2FtcGxlNzgxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk3IiBsb2NhdGlvbj0iLi9zYW1wbGU3OTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTgiIGxvY2F0aW9uPSIuXHNhbXBsZTg1OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTAyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U1ZTQ1ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkxIiBsb2NhdGlvbj0ic2FtcGxlMTkxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM2IiBsb2NhdGlvbj0iLi9zYW1wbGUzMzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODYiIGxvY2F0aW9uPSIuXHNhbXBsZTQ4Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTAzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI0NjdhYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA1IiBsb2NhdGlvbj0ic2FtcGxlNTA1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA4IiBsb2NhdGlvbj0iLi9zYW1wbGUzMDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTkiIGxvY2F0aW9uPSIuXHNhbXBsZTkxOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVlY2I3NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk0IiBsb2NhdGlvbj0ic2FtcGxlMTk0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDciIGxvY2F0aW9uPSIuL3NhbXBsZTQ3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk5IiBsb2NhdGlvbj0iLlxzYW1wbGUxOTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEwNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MWI2MzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NiIgbG9jYXRpb249InNhbXBsZTU2Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMiIgbG9jYXRpb249Ii4vc2FtcGxlODIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE0IiBsb2NhdGlvbj0iLlxzYW1wbGU4MTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ODkxOTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNiIgbG9jYXRpb249InNhbXBsZTQwNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NyIgbG9jYXRpb249Ii4vc2FtcGxlNzk3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcyIiBsb2NhdGlvbj0iLlxzYW1wbGUyNzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEwNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YWQ3ZmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NyIgbG9jYXRpb249InNhbXBsZTE4Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMiIgbG9jYXRpb249Ii4vc2FtcGxlNDIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI0IiBsb2NhdGlvbj0iLlxzYW1wbGU5MjQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEwOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZDYwMjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMSIgbG9jYXRpb249InNhbXBsZTQzMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1OCIgbG9jYXRpb249Ii4vc2FtcGxlODU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA4IiBsb2NhdGlvbj0iLlxzYW1wbGUyMDgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYmNhNzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NyIgbG9jYXRpb249InNhbXBsZTY0Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1OSIgbG9jYXRpb249Ii4vc2FtcGxlMTU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE0IiBsb2NhdGlvbj0iLlxzYW1wbGU3MTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmZhZDNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTUiIGxvY2F0aW9uPSJzYW1wbGU1OTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTYiIGxvY2F0aW9uPSIuL3NhbXBsZTMxNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNSIgbG9jYXRpb249Ii5cc2FtcGxlMjM1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTEwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZmUyNjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTEwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NyIgbG9jYXRpb249InNhbXBsZTU3Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNSIgbG9jYXRpb249Ii4vc2FtcGxlNjE1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk2IiBsb2NhdGlvbj0iLlxzYW1wbGUxOTYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZmE5ZGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MSIgbG9jYXRpb249InNhbXBsZTg1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNiIgbG9jYXRpb249Ii4vc2FtcGxlMzE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzciIGxvY2F0aW9uPSIuXHNhbXBsZTM3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjRhYTJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTIiIGxvY2F0aW9uPSJzYW1wbGU3OTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDgiIGxvY2F0aW9uPSIuL3NhbXBsZTQ0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3OCIgbG9jYXRpb249Ii5cc2FtcGxlMTc4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDI5MDYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzEiIGxvY2F0aW9uPSJzYW1wbGU1NzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTkiIGxvY2F0aW9uPSIuL3NhbXBsZTk1OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOCIgbG9jYXRpb249Ii5cc2FtcGxlNzA4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTE3MDU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTQiIGxvY2F0aW9uPSJzYW1wbGUzNTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDkiIGxvY2F0aW9uPSIuL3NhbXBsZTg0OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNSIgbG9jYXRpb249Ii5cc2FtcGxlNjE1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjVlYmFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDEiIGxvY2F0aW9uPSJzYW1wbGUxNDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OSIgbG9jYXRpb249Ii4vc2FtcGxlNTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODUiIGxvY2F0aW9uPSIuXHNhbXBsZTE4NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY5NjFlZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIyIiBsb2NhdGlvbj0ic2FtcGxlNjIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk2IiBsb2NhdGlvbj0iLi9zYW1wbGUyOTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDIiIGxvY2F0aW9uPSIuXHNhbXBsZTUwMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTE3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGViMjA1OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUyIiBsb2NhdGlvbj0ic2FtcGxlOTUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM1IiBsb2NhdGlvbj0iLi9zYW1wbGU4MzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSIgbG9jYXRpb249Ii5cc2FtcGxlNTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTE4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0OTU0YmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTE4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OCIgbG9jYXRpb249InNhbXBsZTg0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMSIgbG9jYXRpb249Ii4vc2FtcGxlNzIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI2IiBsb2NhdGlvbj0iLlxzYW1wbGU5MjYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTExOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMGM4MGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTE5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1OCIgbG9jYXRpb249InNhbXBsZTE1OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0OSIgbG9jYXRpb249Ii4vc2FtcGxlNTQ5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcxIiBsb2NhdGlvbj0iLlxzYW1wbGU0NzEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjliNzQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzUiIGxvY2F0aW9uPSJzYW1wbGU1MzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDEiIGxvY2F0aW9uPSIuL3NhbXBsZTM0MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1OCIgbG9jYXRpb249Ii5cc2FtcGxlNjU4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTIwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YjdjYTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTIwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MCIgbG9jYXRpb249InNhbXBsZTQ2MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMCIgbG9jYXRpb249Ii4vc2FtcGxlMTEwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk3IiBsb2NhdGlvbj0iLlxzYW1wbGU4OTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZmFjYjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3NCIgbG9jYXRpb249InNhbXBsZTE3NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNyIgbG9jYXRpb249Ii4vc2FtcGxlMzA3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIGxvY2F0aW9uPSIuXHNhbXBsZTgzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTVhMjc2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTUiIGxvY2F0aW9uPSJzYW1wbGU0NTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzEiIGxvY2F0aW9uPSIuL3NhbXBsZTgzMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMCIgbG9jYXRpb249Ii5cc2FtcGxlMTAwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjRmNDk1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDUiIGxvY2F0aW9uPSJzYW1wbGUzNDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMiIgbG9jYXRpb249Ii4vc2FtcGxlMTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjMiIGxvY2F0aW9uPSIuXHNhbXBsZTYyMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ3MGVkZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA2IiBsb2NhdGlvbj0ic2FtcGxlMjA2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEwIiBsb2NhdGlvbj0iLi9zYW1wbGUxMTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMCIgbG9jYXRpb249Ii5cc2FtcGxlMzAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwNjZiNTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4IiBsb2NhdGlvbj0ic2FtcGxlOTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOCIgbG9jYXRpb249Ii4vc2FtcGxlMzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTEiIGxvY2F0aW9uPSIuXHNhbXBsZTgxMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE3ZjFiZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMiIGxvY2F0aW9uPSJzYW1wbGU2My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMSIgbG9jYXRpb249Ii4vc2FtcGxlNzIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAwIiBsb2NhdGlvbj0iLlxzYW1wbGU1MDAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NWZhZWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NiIgbG9jYXRpb249InNhbXBsZTI3Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2OSIgbG9jYXRpb249Ii4vc2FtcGxlNDY5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA2IiBsb2NhdGlvbj0iLlxzYW1wbGU2MDYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZTAyMWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzOCIgbG9jYXRpb249InNhbXBsZTkzOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxOCIgbG9jYXRpb249Ii4vc2FtcGxlODE4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU5IiBsb2NhdGlvbj0iLlxzYW1wbGU2NTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyYzhiYTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTI5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NyIgbG9jYXRpb249InNhbXBsZTE2Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MCIgbG9jYXRpb249Ii4vc2FtcGxlNzkwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEwIiBsb2NhdGlvbj0iLlxzYW1wbGU4MTAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGRmOWQxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzUiIGxvY2F0aW9uPSJzYW1wbGU2MzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODEiIGxvY2F0aW9uPSIuL3NhbXBsZTQ4MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NCIgbG9jYXRpb249Ii5cc2FtcGxlODY0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZDc1NGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNCIgbG9jYXRpb249InNhbXBsZTkxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NSIgbG9jYXRpb249Ii4vc2FtcGxlMzc1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMwIiBsb2NhdGlvbj0iLlxzYW1wbGU2MzAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMTgyNzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NCIgbG9jYXRpb249InNhbXBsZTI4NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4OSIgbG9jYXRpb249Ii4vc2FtcGxlMjg5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk2IiBsb2NhdGlvbj0iLlxzYW1wbGUzOTYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZjcyNzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1OSIgbG9jYXRpb249InNhbXBsZTg1OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMSIgbG9jYXRpb249Ii4vc2FtcGxlODAxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg1IiBsb2NhdGlvbj0iLlxzYW1wbGU0ODUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDA4MWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MCIgbG9jYXRpb249InNhbXBsZTE1MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzIiBsb2NhdGlvbj0iLi9zYW1wbGUxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMSIgbG9jYXRpb249Ii5cc2FtcGxlNTIxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWM2ZjBkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDkiIGxvY2F0aW9uPSJzYW1wbGUyNDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDIiIGxvY2F0aW9uPSIuL3NhbXBsZTc0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3OCIgbG9jYXRpb249Ii5cc2FtcGxlNDc4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWMxNjZlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzciIGxvY2F0aW9uPSJzYW1wbGUzNzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDIiIGxvY2F0aW9uPSIuL3NhbXBsZTcwMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNCIgbG9jYXRpb249Ii5cc2FtcGxlOTM0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTk3OWFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjQiIGxvY2F0aW9uPSJzYW1wbGU5NjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTAiIGxvY2F0aW9uPSIuL3NhbXBsZTE1MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNyIgbG9jYXRpb249Ii5cc2FtcGxlOTE3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDZlNGRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODYiIGxvY2F0aW9uPSJzYW1wbGU3ODYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgbG9jYXRpb249Ii4vc2FtcGxlMjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTIiIGxvY2F0aW9uPSIuXHNhbXBsZTM5Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTM4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIyNmIwNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM3IiBsb2NhdGlvbj0ic2FtcGxlNzM3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQzIiBsb2NhdGlvbj0iLi9zYW1wbGU0NDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjciIGxvY2F0aW9uPSIuXHNhbXBsZTk2Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTM5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkzM2RjMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgiIGxvY2F0aW9uPSJzYW1wbGU3OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczOSIgbG9jYXRpb249Ii4vc2FtcGxlNzM5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgwIiBsb2NhdGlvbj0iLlxzYW1wbGUxODAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2I0YTQyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTAiIGxvY2F0aW9uPSJzYW1wbGU0OTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjciIGxvY2F0aW9uPSIuL3NhbXBsZTE2Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MSIgbG9jYXRpb249Ii5cc2FtcGxlMzQxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1OWUyNjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NCIgbG9jYXRpb249InNhbXBsZTM0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNCIgbG9jYXRpb249Ii4vc2FtcGxlMjM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA1IiBsb2NhdGlvbj0iLlxzYW1wbGU0MDUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMmY5NzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiBsb2NhdGlvbj0ic2FtcGxlMTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDgiIGxvY2F0aW9uPSIuL3NhbXBsZTYwOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCIgbG9jYXRpb249Ii5cc2FtcGxlMjQ4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmY3MWVjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTIiIGxvY2F0aW9uPSJzYW1wbGU5NTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjYiIGxvY2F0aW9uPSIuL3NhbXBsZTUyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MyIgbG9jYXRpb249Ii5cc2FtcGxlMzQzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjIyM2U4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDgiIGxvY2F0aW9uPSJzYW1wbGU2MDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTIiIGxvY2F0aW9uPSIuL3NhbXBsZTUxMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIiBsb2NhdGlvbj0iLlxzYW1wbGU2Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQ0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRmNWVmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ4IiBsb2NhdGlvbj0ic2FtcGxlNjQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA2IiBsb2NhdGlvbj0iLi9zYW1wbGU0MDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzIiIGxvY2F0aW9uPSIuXHNhbXBsZTczMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVjMGJiNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgxIiBsb2NhdGlvbj0ic2FtcGxlOTgxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI1IiBsb2NhdGlvbj0iLi9zYW1wbGU5MjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODYiIGxvY2F0aW9uPSIuXHNhbXBsZTU4Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQ2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0ODcxZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ4IiBsb2NhdGlvbj0ic2FtcGxlOTQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYwIiBsb2NhdGlvbj0iLi9zYW1wbGUxNjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODQiIGxvY2F0aW9uPSIuXHNhbXBsZTQ4NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQ3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFhNDA4Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk3IiBsb2NhdGlvbj0ic2FtcGxlNDk3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgwIiBsb2NhdGlvbj0iLi9zYW1wbGU1ODAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzMiIGxvY2F0aW9uPSIuXHNhbXBsZTY3My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEwNWM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMwIiBsb2NhdGlvbj0ic2FtcGxlMjMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY4IiBsb2NhdGlvbj0iLi9zYW1wbGU1Njgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTMiIGxvY2F0aW9uPSIuXHNhbXBsZTY1My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjMzYzhmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM1IiBsb2NhdGlvbj0ic2FtcGxlMjM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQwIiBsb2NhdGlvbj0iLi9zYW1wbGU2NDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODciIGxvY2F0aW9uPSIuXHNhbXBsZTg4Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2NWY3ODkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NiIgbG9jYXRpb249InNhbXBsZTY1Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4OSIgbG9jYXRpb249Ii4vc2FtcGxlNzg5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAyIiBsb2NhdGlvbj0iLlxzYW1wbGU5MDIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YwMDI2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk1IiBsb2NhdGlvbj0ic2FtcGxlOTk1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY2IiBsb2NhdGlvbj0iLi9zYW1wbGU2NjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTkiIGxvY2F0aW9uPSIuXHNhbXBsZTI5OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmZjU4ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAiIGxvY2F0aW9uPSJzYW1wbGUxMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5IiBsb2NhdGlvbj0iLi9zYW1wbGU0OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NyIgbG9jYXRpb249Ii5cc2FtcGxlNzY3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmJjNTRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDciIGxvY2F0aW9uPSJzYW1wbGU4NDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjciIGxvY2F0aW9uPSIuL3NhbXBsZTc2Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNSIgbG9jYXRpb249Ii5cc2FtcGxlOTM1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGIxZmY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTAiIGxvY2F0aW9uPSJzYW1wbGU1MTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjQiIGxvY2F0aW9uPSIuL3NhbXBsZTcyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMSIgbG9jYXRpb249Ii5cc2FtcGxlMjIxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDUyOTA5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTQiIGxvY2F0aW9uPSJzYW1wbGU0MTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjQiIGxvY2F0aW9uPSIuL3NhbXBsZTM2NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNCIgbG9jYXRpb249Ii5cc2FtcGxlODI0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmUzZWQ0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTgiIGxvY2F0aW9uPSJzYW1wbGU2NTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDYiIGxvY2F0aW9uPSIuL3NhbXBsZTkwNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MCIgbG9jYXRpb249Ii5cc2FtcGxlMjgwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRlZWZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjkiIGxvY2F0aW9uPSJzYW1wbGUyMjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTAiIGxvY2F0aW9uPSIuL3NhbXBsZTc5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NiIgbG9jYXRpb249Ii5cc2FtcGxlNTY2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDFjYzM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MiIgbG9jYXRpb249InNhbXBsZTUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc0IiBsb2NhdGlvbj0iLi9zYW1wbGU2NzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzciIGxvY2F0aW9uPSIuXHNhbXBsZTkzNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE0ZDMwMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI2IiBsb2NhdGlvbj0ic2FtcGxlMzI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc2IiBsb2NhdGlvbj0iLi9zYW1wbGUxNzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzMiIGxvY2F0aW9uPSIuXHNhbXBsZTYzMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM0ODFmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc0IiBsb2NhdGlvbj0ic2FtcGxlMzc0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEzIiBsb2NhdGlvbj0iLi9zYW1wbGU0MTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzkiIGxvY2F0aW9uPSIuXHNhbXBsZTMzOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNTE1ZWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExIiBsb2NhdGlvbj0ic2FtcGxlMTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MyIgbG9jYXRpb249Ii4vc2FtcGxlODMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzMiIGxvY2F0aW9uPSIuXHNhbXBsZTkzMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjc0NDFiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTMiIGxvY2F0aW9uPSJzYW1wbGUxMTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTEiIGxvY2F0aW9uPSIuL3NhbXBsZTg1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNSIgbG9jYXRpb249Ii5cc2FtcGxlNzM1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDdiOWJmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjciIGxvY2F0aW9uPSJzYW1wbGUxMjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzQiIGxvY2F0aW9uPSIuL3NhbXBsZTI3NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MCIgbG9jYXRpb249Ii5cc2FtcGxlMzkwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTk1Y2NjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjEiIGxvY2F0aW9uPSJzYW1wbGUzMjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzYiIGxvY2F0aW9uPSIuL3NhbXBsZTUzNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNyIgbG9jYXRpb249Ii5cc2FtcGxlMjM3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGMwNGM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDEiIGxvY2F0aW9uPSJzYW1wbGU5NDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyIgbG9jYXRpb249Ii4vc2FtcGxlNzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDUiIGxvY2F0aW9uPSIuXHNhbXBsZTE0NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM0ZDY2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU0IiBsb2NhdGlvbj0ic2FtcGxlODU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE4IiBsb2NhdGlvbj0iLi9zYW1wbGU0MTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODUiIGxvY2F0aW9uPSIuXHNhbXBsZTE4NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTY1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUxYjJjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIzIiBsb2NhdGlvbj0ic2FtcGxlOTIzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc4IiBsb2NhdGlvbj0iLi9zYW1wbGU5Nzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDUiIGxvY2F0aW9uPSIuXHNhbXBsZTM0NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTY2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFiMDRlOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk1IiBsb2NhdGlvbj0ic2FtcGxlODk1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUwIiBsb2NhdGlvbj0iLi9zYW1wbGUyNTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NSIgbG9jYXRpb249Ii5cc2FtcGxlNzUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTY3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1YmJmZTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTY3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MCIgbG9jYXRpb249InNhbXBsZTE2MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMyIgbG9jYXRpb249Ii4vc2FtcGxlODIzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM5IiBsb2NhdGlvbj0iLlxzYW1wbGU2Mzkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTY4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NGNlNjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTY4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5OCIgbG9jYXRpb249InNhbXBsZTY5OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NiIgbG9jYXRpb249Ii4vc2FtcGxlNTQ2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAwIiBsb2NhdGlvbj0iLlxzYW1wbGU0MDAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NjcwZTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOSIgbG9jYXRpb249InNhbXBsZTMzOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNyIgbG9jYXRpb249Ii4vc2FtcGxlNTA3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE1IiBsb2NhdGlvbj0iLlxzYW1wbGU2MTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzdiZjkzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTAiIGxvY2F0aW9uPSJzYW1wbGU4NTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTkiIGxvY2F0aW9uPSIuL3NhbXBsZTM1OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNyIgbG9jYXRpb249Ii5cc2FtcGxlOTI3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTcwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMzRhYTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTcwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NSIgbG9jYXRpb249InNhbXBsZTY0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MSIgbG9jYXRpb249Ii4vc2FtcGxlODcxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ0IiBsb2NhdGlvbj0iLlxzYW1wbGU0NDQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YWJhODMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIiBsb2NhdGlvbj0ic2FtcGxlMjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzIiIGxvY2F0aW9uPSIuL3NhbXBsZTEzMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNSIgbG9jYXRpb249Ii5cc2FtcGxlNjA1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjNhZjg1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzIiIGxvY2F0aW9uPSJzYW1wbGU0NzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTQiIGxvY2F0aW9uPSIuL3NhbXBsZTU5NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3OSIgbG9jYXRpb249Ii5cc2FtcGxlNzc5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODg1YWIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzAiIGxvY2F0aW9uPSJzYW1wbGU3NzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMiIgbG9jYXRpb249Ii4vc2FtcGxlMzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTgiIGxvY2F0aW9uPSIuXHNhbXBsZTM5OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTc0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMyMzExNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIzIiBsb2NhdGlvbj0ic2FtcGxlNTIzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTcxIiBsb2NhdGlvbj0iLi9zYW1wbGU1NzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDUiIGxvY2F0aW9uPSIuXHNhbXBsZTU0NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZkNWE5MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk2IiBsb2NhdGlvbj0ic2FtcGxlNTk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA3IiBsb2NhdGlvbj0iLi9zYW1wbGU4MDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDQiIGxvY2F0aW9uPSIuXHNhbXBsZTMwNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTc2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJhYmJkYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMzIiBsb2NhdGlvbj0ic2FtcGxlNjMzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkzIiBsb2NhdGlvbj0iLi9zYW1wbGUxOTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDUiIGxvY2F0aW9uPSIuXHNhbXBsZTgwNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhiOWNkNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQxIiBsb2NhdGlvbj0ic2FtcGxlMjQxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgyIiBsb2NhdGlvbj0iLi9zYW1wbGU0ODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDAiIGxvY2F0aW9uPSIuXHNhbXBsZTE0MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFlOTFmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQiIGxvY2F0aW9uPSJzYW1wbGUzNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MiIgbG9jYXRpb249Ii4vc2FtcGxlNjUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYxIiBsb2NhdGlvbj0iLlxzYW1wbGU3NjEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OTJmYTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MyIgbG9jYXRpb249InNhbXBsZTg2My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMSIgbG9jYXRpb249Ii4vc2FtcGxlODIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc2IiBsb2NhdGlvbj0iLlxzYW1wbGU1NzYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGFmYzk2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjUiIGxvY2F0aW9uPSJzYW1wbGU5NjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzYiIGxvY2F0aW9uPSIuL3NhbXBsZTc3Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMyIgbG9jYXRpb249Ii5cc2FtcGxlNjEzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNzEwMTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OCIgbG9jYXRpb249InNhbXBsZTQ4OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MiIgbG9jYXRpb249Ii4vc2FtcGxlNTkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI1IiBsb2NhdGlvbj0iLlxzYW1wbGU4MjUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzOGIzMWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzOCIgbG9jYXRpb249InNhbXBsZTUzOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MyIgbG9jYXRpb249Ii4vc2FtcGxlOTQzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk1IiBsb2NhdGlvbj0iLlxzYW1wbGUyOTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Y2NiODIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NCIgbG9jYXRpb249InNhbXBsZTg5NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MSIgbG9jYXRpb249Ii4vc2FtcGxlOTYxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMwIiBsb2NhdGlvbj0iLlxzYW1wbGU3MzAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YjVkNTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MSIgbG9jYXRpb249InNhbXBsZTk3MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1OCIgbG9jYXRpb249Ii4vc2FtcGxlMjU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgwIiBsb2NhdGlvbj0iLlxzYW1wbGU0ODAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhOGYyZjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTg0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiBsb2NhdGlvbj0ic2FtcGxlNDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODEiIGxvY2F0aW9uPSIuL3NhbXBsZTM4MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2IiBsb2NhdGlvbj0iLlxzYW1wbGU5Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTg1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ5MTRhOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxODUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQzIiBsb2NhdGlvbj0ic2FtcGxlOTQzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI1IiBsb2NhdGlvbj0iLi9zYW1wbGU4MjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgbG9jYXRpb249Ii5cc2FtcGxlMjQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTg2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MDVhZGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTg2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNCIgbG9jYXRpb249InNhbXBsZTgzNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNiIgbG9jYXRpb249Ii4vc2FtcGxlODA2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA4IiBsb2NhdGlvbj0iLlxzYW1wbGU2MDgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZGIyM2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTg3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIiBsb2NhdGlvbj0ic2FtcGxlNjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTEiIGxvY2F0aW9uPSIuL3NhbXBsZTQ1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2OCIgbG9jYXRpb249Ii5cc2FtcGxlOTY4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTEwM2Y0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjgiIGxvY2F0aW9uPSJzYW1wbGU3Mjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODYiIGxvY2F0aW9uPSIuL3NhbXBsZTI4Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNSIgbG9jYXRpb249Ii5cc2FtcGxlMzI1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmYyMmY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzkiIGxvY2F0aW9uPSJzYW1wbGU2Mzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMCIgbG9jYXRpb249Ii4vc2FtcGxlMTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjUiIGxvY2F0aW9uPSIuXHNhbXBsZTc2NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyM2E1YTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MiIgbG9jYXRpb249InNhbXBsZTM3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2MyIgbG9jYXRpb249Ii4vc2FtcGxlMjYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIGxvY2F0aW9uPSIuXHNhbXBsZTgzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhOWNjMGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NSIgbG9jYXRpb249InNhbXBsZTU4NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NiIgbG9jYXRpb249Ii4vc2FtcGxlNDY2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM2IiBsb2NhdGlvbj0iLlxzYW1wbGU4MzYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmMDNmMGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MiIgbG9jYXRpb249InNhbXBsZTI5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NCIgbG9jYXRpb249Ii4vc2FtcGxlNTc0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkyIiBsb2NhdGlvbj0iLlxzYW1wbGUzOTIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2NGQ2MWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MSIgbG9jYXRpb249InNhbXBsZTU4MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMyIgbG9jYXRpb249Ii4vc2FtcGxlNTAzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUyIiBsb2NhdGlvbj0iLlxzYW1wbGU5NTIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5N2VkNzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NSIgbG9jYXRpb249InNhbXBsZTk3NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNiIgbG9jYXRpb249Ii4vc2FtcGxlMTE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE5IiBsb2NhdGlvbj0iLlxzYW1wbGUyMTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwZDZlM2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTk0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNSIgbG9jYXRpb249InNhbXBsZTQyNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNCIgbG9jYXRpb249Ii4vc2FtcGxlNDE0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk5IiBsb2NhdGlvbj0iLlxzYW1wbGUyOTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NDBhMGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTk1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5IiBsb2NhdGlvbj0ic2FtcGxlMzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzAiIGxvY2F0aW9uPSIuL3NhbXBsZTY3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MSIgbG9jYXRpb249Ii5cc2FtcGxlMjkxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxOTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDZmZDg4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzciIGxvY2F0aW9uPSJzYW1wbGU3Mzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTMiIGxvY2F0aW9uPSIuL3NhbXBsZTk1My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIiBsb2NhdGlvbj0iLlxzYW1wbGU0MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxOTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBmNGYzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk0IiBsb2NhdGlvbj0ic2FtcGxlMTk0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgyIiBsb2NhdGlvbj0iLi9zYW1wbGUzODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDYiIGxvY2F0aW9uPSIuXHNhbXBsZTg0Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxOTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU0NDVkNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxOTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE5IiBsb2NhdGlvbj0ic2FtcGxlNDE5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIyIiBsb2NhdGlvbj0iLi9zYW1wbGU3MjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzEiIGxvY2F0aW9uPSIuXHNhbXBsZTY3MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTk5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxOTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJjMTg1NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxOTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYyIiBsb2NhdGlvbj0ic2FtcGxlNzYyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM5IiBsb2NhdGlvbj0iLi9zYW1wbGU1Mzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzciIGxvY2F0aW9uPSIuXHNhbXBsZTg3Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzU3YTBhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjQiIGxvY2F0aW9uPSJzYW1wbGUzNjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDQiIGxvY2F0aW9uPSIuL3NhbXBsZTg0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1OCIgbG9jYXRpb249Ii5cc2FtcGxlMjU4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MDcyMDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NCIgbG9jYXRpb249InNhbXBsZTc1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NiIgbG9jYXRpb249Ii4vc2FtcGxlOTQ2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc2IiBsb2NhdGlvbj0iLlxzYW1wbGU3NzYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjAwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGMyYTE1Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU3IiBsb2NhdGlvbj0ic2FtcGxlNDU3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE2IiBsb2NhdGlvbj0iLi9zYW1wbGU2MTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzMiIGxvY2F0aW9uPSIuXHNhbXBsZTY3My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UxZTdhNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI1IiBsb2NhdGlvbj0ic2FtcGxlNTI1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA2IiBsb2NhdGlvbj0iLi9zYW1wbGU1MDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTEiIGxvY2F0aW9uPSIuXHNhbXBsZTE1MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjAyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUyOGYxNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM0IiBsb2NhdGlvbj0ic2FtcGxlMTM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAyIiBsb2NhdGlvbj0iLi9zYW1wbGU3MDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzEiIGxvY2F0aW9uPSIuXHNhbXBsZTU3MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjAzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QxMjNlOTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NSIgbG9jYXRpb249InNhbXBsZTk4NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNSIgbG9jYXRpb249Ii4vc2FtcGxlMTM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ3IiBsb2NhdGlvbj0iLlxzYW1wbGUzNDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIwNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNjBjY2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMSIgbG9jYXRpb249InNhbXBsZTIwMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2OCIgbG9jYXRpb249Ii4vc2FtcGxlMzY4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM0IiBsb2NhdGlvbj0iLlxzYW1wbGU3MzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIwNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MzMyZWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMSIgbG9jYXRpb249InNhbXBsZTQwMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MyIgbG9jYXRpb249Ii4vc2FtcGxlNjgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA3IiBsb2NhdGlvbj0iLlxzYW1wbGU2MDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNjcxOWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMyIgbG9jYXRpb249InNhbXBsZTkxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNiIgbG9jYXRpb249Ii4vc2FtcGxlODI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQyIiBsb2NhdGlvbj0iLlxzYW1wbGUxNDIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIwNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NDBlNTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1OSIgbG9jYXRpb249InNhbXBsZTY1OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NCIgbG9jYXRpb249Ii4vc2FtcGxlNDg0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU5IiBsb2NhdGlvbj0iLlxzYW1wbGUzNTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIwOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YTRlY2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NiIgbG9jYXRpb249InNhbXBsZTk5Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MSIgbG9jYXRpb249Ii4vc2FtcGxlNzQxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkzIiBsb2NhdGlvbj0iLlxzYW1wbGUxOTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZjI1YjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMyIgbG9jYXRpb249InNhbXBsZTMzMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OCIgbG9jYXRpb249Ii4vc2FtcGxlMTg4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEzIiBsb2NhdGlvbj0iLlxzYW1wbGU0MTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODI1NTIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODEiIGxvY2F0aW9uPSJzYW1wbGU5ODEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzMiIGxvY2F0aW9uPSIuL3NhbXBsZTE3My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyOCIgbG9jYXRpb249Ii5cc2FtcGxlMzI4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjEwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczM2U0ZWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjEwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OCIgbG9jYXRpb249InNhbXBsZTY4OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNiIgbG9jYXRpb249Ii4vc2FtcGxlOTA2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc0IiBsb2NhdGlvbj0iLlxzYW1wbGUyNzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NzM5YzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNyIgbG9jYXRpb249InNhbXBsZTcwNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0OSIgbG9jYXRpb249Ii4vc2FtcGxlNDQ5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA4IiBsb2NhdGlvbj0iLlxzYW1wbGU3MDgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjExIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjEyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNTQxNmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjEyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NSIgbG9jYXRpb249InNhbXBsZTg1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOSIgbG9jYXRpb249Ii4vc2FtcGxlOTA5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU0IiBsb2NhdGlvbj0iLlxzYW1wbGU0NTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjEzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZjIwMzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5IiBsb2NhdGlvbj0ic2FtcGxlMzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTEiIGxvY2F0aW9uPSIuL3NhbXBsZTI1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMCIgbG9jYXRpb249Ii5cc2FtcGxlODAwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDY0M2FhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjIiIGxvY2F0aW9uPSJzYW1wbGUyNjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDUiIGxvY2F0aW9uPSIuL3NhbXBsZTMwNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MyIgbG9jYXRpb249Ii5cc2FtcGxlOTQzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjIyNzc1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDUiIGxvY2F0aW9uPSJzYW1wbGU0MDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0IiBsb2NhdGlvbj0iLi9zYW1wbGU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCIgbG9jYXRpb249Ii5cc2FtcGxlNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJmYWE5Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA3IiBsb2NhdGlvbj0ic2FtcGxlODA3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAzIiBsb2NhdGlvbj0iLi9zYW1wbGUyMDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTgiIGxvY2F0aW9uPSIuXHNhbXBsZTE1OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjE3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjMmMxNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc1IiBsb2NhdGlvbj0ic2FtcGxlOTc1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA4IiBsb2NhdGlvbj0iLi9zYW1wbGU3MDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDYiIGxvY2F0aW9uPSIuXHNhbXBsZTc0Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdiMmJkYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM3IiBsb2NhdGlvbj0ic2FtcGxlMzM3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkzIiBsb2NhdGlvbj0iLi9zYW1wbGUzOTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTIiIGxvY2F0aW9uPSIuXHNhbXBsZTMxMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg2ODFjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkxIiBsb2NhdGlvbj0ic2FtcGxlODkxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA2IiBsb2NhdGlvbj0iLi9zYW1wbGUxMDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTUiIGxvY2F0aW9uPSIuXHNhbXBsZTUxNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NmRmNTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NiIgbG9jYXRpb249InNhbXBsZTY0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MyIgbG9jYXRpb249Ii4vc2FtcGxlODgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMzIiBsb2NhdGlvbj0iLlxzYW1wbGU5MzMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU1MTNjYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQyIiBsb2NhdGlvbj0ic2FtcGxlODQyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEzIiBsb2NhdGlvbj0iLi9zYW1wbGU3MTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjMiIGxvY2F0aW9uPSIuXHNhbXBsZTY2My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjIxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM4OWI3NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE3IiBsb2NhdGlvbj0ic2FtcGxlMjE3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc4IiBsb2NhdGlvbj0iLi9zYW1wbGU5Nzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODMiIGxvY2F0aW9uPSIuXHNhbXBsZTY4My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjIyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlmNTc0NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA0IiBsb2NhdGlvbj0ic2FtcGxlNDA0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM3IiBsb2NhdGlvbj0iLi9zYW1wbGUyMzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzkiIGxvY2F0aW9uPSIuXHNhbXBsZTgzOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY3OTgxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc4IiBsb2NhdGlvbj0ic2FtcGxlOTc4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc4IiBsb2NhdGlvbj0iLi9zYW1wbGUzNzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzUiIGxvY2F0aW9uPSIuXHNhbXBsZTM3NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjI0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEyYzI1YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcxIiBsb2NhdGlvbj0ic2FtcGxlOTcxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcwIiBsb2NhdGlvbj0iLi9zYW1wbGUzNzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OCIgbG9jYXRpb249Ii5cc2FtcGxlOTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NDA2ODAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMSIgbG9jYXRpb249InNhbXBsZTIyMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNiIgbG9jYXRpb249Ii4vc2FtcGxlNDE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQyIiBsb2NhdGlvbj0iLlxzYW1wbGU5NDIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjI2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmOWJmM2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjI2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NSIgbG9jYXRpb249InNhbXBsZTc3NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NyIgbG9jYXRpb249Ii4vc2FtcGxlNDY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIiIGxvY2F0aW9uPSIuXHNhbXBsZTkyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGQyNGVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTYiIGxvY2F0aW9uPSJzYW1wbGUzOTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzciIGxvY2F0aW9uPSIuL3NhbXBsZTkzNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMCIgbG9jYXRpb249Ii5cc2FtcGxlNTIwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2RiYzA4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzkiIGxvY2F0aW9uPSJzYW1wbGU0Mzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDYiIGxvY2F0aW9uPSIuL3NhbXBsZTc0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNyIgbG9jYXRpb249Ii5cc2FtcGxlOTE3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWUyZWI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjgiIGxvY2F0aW9uPSJzYW1wbGU0Njgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDkiIGxvY2F0aW9uPSIuL3NhbXBsZTUwOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NiIgbG9jYXRpb249Ii5cc2FtcGxlMTk2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJiZTE0My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODExIiBsb2NhdGlvbj0ic2FtcGxlODExLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSIgbG9jYXRpb249Ii4vc2FtcGxlOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNSIgbG9jYXRpb249Ii5cc2FtcGxlNzE1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MjRkNTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MCIgbG9jYXRpb249InNhbXBsZTY5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNSIgbG9jYXRpb249Ii4vc2FtcGxlNjI1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUiIGxvY2F0aW9uPSIuXHNhbXBsZTE1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTkzMjVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzYiIGxvY2F0aW9uPSJzYW1wbGU4MzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTgiIGxvY2F0aW9uPSIuL3NhbXBsZTMxOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNiIgbG9jYXRpb249Ii5cc2FtcGxlODA2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjcyZmQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzYiIGxvY2F0aW9uPSJzYW1wbGU2MzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDgiIGxvY2F0aW9uPSIuL3NhbXBsZTMwOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxNSIgbG9jYXRpb249Ii5cc2FtcGxlODE1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzQ0Y2IwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDYiIGxvY2F0aW9uPSJzYW1wbGU3NDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOSIgbG9jYXRpb249Ii4vc2FtcGxlMjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDIiIGxvY2F0aW9uPSIuXHNhbXBsZTQ0Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdkMGZjNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYiIGxvY2F0aW9uPSJzYW1wbGU4Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MyIgbG9jYXRpb249Ii4vc2FtcGxlNTYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU0IiBsb2NhdGlvbj0iLlxzYW1wbGU4NTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNDY4NTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5IiBsb2NhdGlvbj0ic2FtcGxlNDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjYiIGxvY2F0aW9uPSIuL3NhbXBsZTkyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MSIgbG9jYXRpb249Ii5cc2FtcGxlODkxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODdiZTYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODUiIGxvY2F0aW9uPSJzYW1wbGUzODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDAiIGxvY2F0aW9uPSIuL3NhbXBsZTIwMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NyIgbG9jYXRpb249Ii5cc2FtcGxlODY3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOThjOGE4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjciIGxvY2F0aW9uPSJzYW1wbGUyNjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODAiIGxvY2F0aW9uPSIuL3NhbXBsZTc4MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OSIgbG9jYXRpb249Ii5cc2FtcGxlNTY5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTUxMTg5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzciIGxvY2F0aW9uPSJzYW1wbGU2Mzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTEiIGxvY2F0aW9uPSIuL3NhbXBsZTE1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1OCIgbG9jYXRpb249Ii5cc2FtcGxlODU4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTk1OTExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzIiIGxvY2F0aW9uPSJzYW1wbGU2NzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDMiIGxvY2F0aW9uPSIuL3NhbXBsZTgwMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MiIgbG9jYXRpb249Ii5cc2FtcGxlNjYyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkxYmMwOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY0IiBsb2NhdGlvbj0ic2FtcGxlMzY0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAwIiBsb2NhdGlvbj0iLi9zYW1wbGUyMDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzUiIGxvY2F0aW9uPSIuXHNhbXBsZTkzNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmJkYzdlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODQiIGxvY2F0aW9uPSJzYW1wbGU5ODQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTAiIGxvY2F0aW9uPSIuL3NhbXBsZTUxMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2OCIgbG9jYXRpb249Ii5cc2FtcGxlMjY4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWE0NjdkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDgiIGxvY2F0aW9uPSJzYW1wbGU3NDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NSIgbG9jYXRpb249Ii4vc2FtcGxlODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODUiIGxvY2F0aW9uPSIuXHNhbXBsZTE4NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU5OGNlMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI0IiBsb2NhdGlvbj0ic2FtcGxlNjI0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc3IiBsb2NhdGlvbj0iLi9zYW1wbGU4Nzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDgiIGxvY2F0aW9uPSIuXHNhbXBsZTE0OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RhYmY1OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEzIiBsb2NhdGlvbj0ic2FtcGxlNTEzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMzIiBsb2NhdGlvbj0iLi9zYW1wbGUzMzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDgiIGxvY2F0aW9uPSIuXHNhbXBsZTQwOC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQ0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI5NDA5My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY3IiBsb2NhdGlvbj0ic2FtcGxlMzY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQiIGxvY2F0aW9uPSIuL3NhbXBsZTM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI3IiBsb2NhdGlvbj0iLlxzYW1wbGUxMjcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MmFkNDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQ1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NCIgbG9jYXRpb249InNhbXBsZTY1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0OSIgbG9jYXRpb249Ii4vc2FtcGxlNDQ5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYxIiBsb2NhdGlvbj0iLlxzYW1wbGUzNjEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQ2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOWRmNWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQ2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5IiBsb2NhdGlvbj0ic2FtcGxlNzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTgiIGxvY2F0aW9uPSIuL3NhbXBsZTM1OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNSIgbG9jYXRpb249Ii5cc2FtcGxlMjA1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTA0MTE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODEiIGxvY2F0aW9uPSJzYW1wbGU3ODEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTkiIGxvY2F0aW9uPSIuL3NhbXBsZTI5OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NSIgbG9jYXRpb249Ii5cc2FtcGxlODk1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZThmMWNlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI0OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjUiIGxvY2F0aW9uPSJzYW1wbGUxMjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzIiIGxvY2F0aW9uPSIuL3NhbXBsZTE3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIiBsb2NhdGlvbj0iLlxzYW1wbGU2Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJkMGM3MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMzIiBsb2NhdGlvbj0ic2FtcGxlNDMzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMxIiBsb2NhdGlvbj0iLi9zYW1wbGU3MzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzUiIGxvY2F0aW9uPSIuXHNhbXBsZTkzNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5N2FhY2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NyIgbG9jYXRpb249InNhbXBsZTM5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MyIgbG9jYXRpb249Ii4vc2FtcGxlMTUzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkwIiBsb2NhdGlvbj0iLlxzYW1wbGUzOTAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIxYzg0Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUwIiBsb2NhdGlvbj0ic2FtcGxlMzUwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk2IiBsb2NhdGlvbj0iLi9zYW1wbGU2OTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTkiIGxvY2F0aW9uPSIuXHNhbXBsZTQ5OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJiOTVmNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiIGxvY2F0aW9uPSJzYW1wbGUyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MCIgbG9jYXRpb249Ii4vc2FtcGxlNTQwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQyIiBsb2NhdGlvbj0iLlxzYW1wbGU5NDIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZTExZWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NSIgbG9jYXRpb249InNhbXBsZTE0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MiIgbG9jYXRpb249Ii4vc2FtcGxlNDUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg1IiBsb2NhdGlvbj0iLlxzYW1wbGUzODUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YjU1OTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjUzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMyIgbG9jYXRpb249InNhbXBsZTUyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxIiBsb2NhdGlvbj0iLi9zYW1wbGU3MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3IiBsb2NhdGlvbj0iLlxzYW1wbGU4Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk3ZDQ5OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc5IiBsb2NhdGlvbj0ic2FtcGxlMzc5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk2IiBsb2NhdGlvbj0iLi9zYW1wbGUxOTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTEiIGxvY2F0aW9uPSIuXHNhbXBsZTk1MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjU1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZiMjJiZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAxIiBsb2NhdGlvbj0ic2FtcGxlNTAxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIzIiBsb2NhdGlvbj0iLi9zYW1wbGU2MjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjUiIGxvY2F0aW9uPSIuXHNhbXBsZTEyNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThhNmE0OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY3IiBsb2NhdGlvbj0ic2FtcGxlOTY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc2IiBsb2NhdGlvbj0iLi9zYW1wbGU1NzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjgiIGxvY2F0aW9uPSIuXHNhbXBsZTMyOC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM0NTU0YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA4IiBsb2NhdGlvbj0ic2FtcGxlMTA4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE4IiBsb2NhdGlvbj0iLi9zYW1wbGU2MTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTUiIGxvY2F0aW9uPSIuXHNhbXBsZTk5NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY2ZTI5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA5IiBsb2NhdGlvbj0ic2FtcGxlMzA5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY0IiBsb2NhdGlvbj0iLi9zYW1wbGUzNjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDIiIGxvY2F0aW9uPSIuXHNhbXBsZTYwMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ1NzU5NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM0IiBsb2NhdGlvbj0ic2FtcGxlMjM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUzIiBsb2NhdGlvbj0iLi9zYW1wbGUzNTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTgiIGxvY2F0aW9uPSIuXHNhbXBsZTI5OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlOWFkMjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiIgbG9jYXRpb249InNhbXBsZTk4Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MyIgbG9jYXRpb249Ii4vc2FtcGxlNDQzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgzIiBsb2NhdGlvbj0iLlxzYW1wbGU0ODMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjYwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM4M2MzZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiIGxvY2F0aW9uPSJzYW1wbGUyOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MiIgbG9jYXRpb249Ii4vc2FtcGxlNjgyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI0IiBsb2NhdGlvbj0iLlxzYW1wbGUxMjQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI2MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjYxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ODRlMWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjYxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNCIgbG9jYXRpb249InNhbXBsZTIyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMCIgbG9jYXRpb249Ii4vc2FtcGxlNjIwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU1IiBsb2NhdGlvbj0iLlxzYW1wbGUyNTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI2Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MzE2NTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1IiBsb2NhdGlvbj0ic2FtcGxlNTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMiIgbG9jYXRpb249Ii4vc2FtcGxlMTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTEiIGxvY2F0aW9uPSIuXHNhbXBsZTc1MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjYzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE3Mzg2ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA1IiBsb2NhdGlvbj0ic2FtcGxlOTA1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ1IiBsb2NhdGlvbj0iLi9zYW1wbGU4NDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDgiIGxvY2F0aW9uPSIuXHNhbXBsZTE0OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkyMTRjNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ0IiBsb2NhdGlvbj0ic2FtcGxlMzQ0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ2IiBsb2NhdGlvbj0iLi9zYW1wbGUzNDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDEiIGxvY2F0aW9uPSIuXHNhbXBsZTEwMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjY1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUzM2YwYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgbG9jYXRpb249InNhbXBsZTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MCIgbG9jYXRpb249Ii4vc2FtcGxlNTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjYiIGxvY2F0aW9uPSIuXHNhbXBsZTk2Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjY2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgwNDU5MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAzIiBsb2NhdGlvbj0ic2FtcGxlMjAzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE5IiBsb2NhdGlvbj0iLi9zYW1wbGU0MTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDQiIGxvY2F0aW9uPSIuXHNhbXBsZTY0NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWViZDA0ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQzIiBsb2NhdGlvbj0ic2FtcGxlNTQzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU4IiBsb2NhdGlvbj0iLi9zYW1wbGUzNTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDciIGxvY2F0aW9uPSIuXHNhbXBsZTIwNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjY4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI2OTkwZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkwIiBsb2NhdGlvbj0ic2FtcGxlNjkwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzciIGxvY2F0aW9uPSIuL3NhbXBsZTM3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ0IiBsb2NhdGlvbj0iLlxzYW1wbGUyNDQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZGU3ZWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMyIgbG9jYXRpb249InNhbXBsZTUzMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiIgbG9jYXRpb249Ii4vc2FtcGxlODMyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI2IiBsb2NhdGlvbj0iLlxzYW1wbGUxMjYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzVlMWE2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODciIGxvY2F0aW9uPSJzYW1wbGU5ODcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDgiIGxvY2F0aW9uPSIuL3NhbXBsZTk0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MCIgbG9jYXRpb249Ii5cc2FtcGxlMzkwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjcwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZjE3ODguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjcwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OCIgbG9jYXRpb249InNhbXBsZTk3OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIiBsb2NhdGlvbj0iLi9zYW1wbGU3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NiIgbG9jYXRpb249Ii5cc2FtcGxlNzg2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzkwYTQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTkiIGxvY2F0aW9uPSJzYW1wbGU3OTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTYiIGxvY2F0aW9uPSIuL3NhbXBsZTI5Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MyIgbG9jYXRpb249Ii5cc2FtcGxlNjczLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2U0MGU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDYiIGxvY2F0aW9uPSJzYW1wbGU4MDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTUiIGxvY2F0aW9uPSIuL3NhbXBsZTQxNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNyIgbG9jYXRpb249Ii5cc2FtcGxlMTM3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTlkNDVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTgiIGxvY2F0aW9uPSJzYW1wbGU4OTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzkiIGxvY2F0aW9uPSIuL3NhbXBsZTk3OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNiIgbG9jYXRpb249Ii5cc2FtcGxlNDM2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2NlOWQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTYiIGxvY2F0aW9uPSJzYW1wbGU0OTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTgiIGxvY2F0aW9uPSIuL3NhbXBsZTIxOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3IiBsb2NhdGlvbj0iLlxzYW1wbGUyNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE2M2U4OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAxIiBsb2NhdGlvbj0ic2FtcGxlNTAxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQxIiBsb2NhdGlvbj0iLi9zYW1wbGU3NDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTciIGxvY2F0aW9uPSIuXHNhbXBsZTg5Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjc2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY4NjJhYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU2IiBsb2NhdGlvbj0ic2FtcGxlNTU2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcxIiBsb2NhdGlvbj0iLi9zYW1wbGUzNzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTUiIGxvY2F0aW9uPSIuXHNhbXBsZTQ1NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVmNGJiYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEzIiBsb2NhdGlvbj0ic2FtcGxlMjEzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAwIiBsb2NhdGlvbj0iLi9zYW1wbGUxMDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyIgbG9jYXRpb249Ii5cc2FtcGxlMzcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjc4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NTEyMGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjc4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MCIgbG9jYXRpb249InNhbXBsZTM4MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNyIgbG9jYXRpb249Ii4vc2FtcGxlMTE3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY2IiBsb2NhdGlvbj0iLlxzYW1wbGU2NjYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI3OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZThiYmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMyIgbG9jYXRpb249InNhbXBsZTQyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MCIgbG9jYXRpb249Ii4vc2FtcGxlNzQwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYyIiBsb2NhdGlvbj0iLlxzYW1wbGU4NjIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzc4NTQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjkiIGxvY2F0aW9uPSJzYW1wbGUzNjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTciIGxvY2F0aW9uPSIuL3NhbXBsZTI1Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNyIgbG9jYXRpb249Ii5cc2FtcGxlODI3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZjQwNWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjgwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MiIgbG9jYXRpb249InNhbXBsZTM2Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MSIgbG9jYXRpb249Ii4vc2FtcGxlNDYxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE2IiBsb2NhdGlvbj0iLlxzYW1wbGU5MTYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjgxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZjVmYTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjgxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OSIgbG9jYXRpb249InNhbXBsZTI0OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNiIgbG9jYXRpb249Ii4vc2FtcGxlNjE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY5IiBsb2NhdGlvbj0iLlxzYW1wbGU5Njkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzNmY0NTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNCIgbG9jYXRpb249InNhbXBsZTYxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0OCIgbG9jYXRpb249Ii4vc2FtcGxlNDQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU0IiBsb2NhdGlvbj0iLlxzYW1wbGUyNTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjgzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMjlkZTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjgzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExOSIgbG9jYXRpb249InNhbXBsZTExOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNyIgbG9jYXRpb249Ii4vc2FtcGxlMjM3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM1IiBsb2NhdGlvbj0iLlxzYW1wbGUyMzUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNzQ0M2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjg0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NCIgbG9jYXRpb249InNhbXBsZTQ2NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMCIgbG9jYXRpb249Ii4vc2FtcGxlNzMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY2IiBsb2NhdGlvbj0iLlxzYW1wbGU5NjYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMGM2MmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIGxvY2F0aW9uPSJzYW1wbGU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM3IiBsb2NhdGlvbj0iLi9zYW1wbGUyMzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDUiIGxvY2F0aW9uPSIuXHNhbXBsZTYwNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI1ZDQxNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEwIiBsb2NhdGlvbj0ic2FtcGxlMjEwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE0IiBsb2NhdGlvbj0iLi9zYW1wbGU5MTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTYiIGxvY2F0aW9uPSIuXHNhbXBsZTY1Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjg3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyODcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkwYWY5Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyODcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiIGxvY2F0aW9uPSJzYW1wbGUzMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMCIgbG9jYXRpb249Ii4vc2FtcGxlOTIwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM4IiBsb2NhdGlvbj0iLlxzYW1wbGUyMzgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYzU3ZTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MiIgbG9jYXRpb249InNhbXBsZTE3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4IiBsb2NhdGlvbj0iLi9zYW1wbGU2OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NSIgbG9jYXRpb249Ii5cc2FtcGxlMjU1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTBlYTE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI4OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODgiIGxvY2F0aW9uPSJzYW1wbGU2ODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzgiIGxvY2F0aW9uPSIuL3NhbXBsZTgzOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMSIgbG9jYXRpb249Ii5cc2FtcGxlMTAxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcwMDkwZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk1IiBsb2NhdGlvbj0ic2FtcGxlMjk1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk5IiBsb2NhdGlvbj0iLi9zYW1wbGU1OTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDAiIGxvY2F0aW9uPSIuXHNhbXBsZTEwMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzZhNzQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI5MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzMiIGxvY2F0aW9uPSJzYW1wbGU4MzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzYiIGxvY2F0aW9uPSIuL3NhbXBsZTg3Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4IiBsb2NhdGlvbj0iLlxzYW1wbGUyOC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEyNTNhOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA3IiBsb2NhdGlvbj0ic2FtcGxlMzA3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc2IiBsb2NhdGlvbj0iLi9zYW1wbGU2NzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTUiIGxvY2F0aW9uPSIuXHNhbXBsZTY1NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJiMGNiNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk2IiBsb2NhdGlvbj0ic2FtcGxlOTk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA5IiBsb2NhdGlvbj0iLi9zYW1wbGUxMDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzAiIGxvY2F0aW9uPSIuXHNhbXBsZTE3MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjkzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQyMGI2Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIwIiBsb2NhdGlvbj0ic2FtcGxlMTIwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMiIGxvY2F0aW9uPSIuL3NhbXBsZTYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg3IiBsb2NhdGlvbj0iLlxzYW1wbGUxODcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiOTk3OGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjk0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NCIgbG9jYXRpb249InNhbXBsZTc0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NSIgbG9jYXRpb249Ii4vc2FtcGxlNDg1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMyIiBsb2NhdGlvbj0iLlxzYW1wbGU3MzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkMzQ3YzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjk1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIiBsb2NhdGlvbj0ic2FtcGxlNjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTUiIGxvY2F0aW9uPSIuL3NhbXBsZTUxNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MSIgbG9jYXRpb249Ii5cc2FtcGxlNDUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjg3Y2Y3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTI5Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMiIgbG9jYXRpb249InNhbXBsZTMyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgyIiBsb2NhdGlvbj0iLi9zYW1wbGU3ODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDYiIGxvY2F0aW9uPSIuXHNhbXBsZTY0Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM2NTFkNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUzIiBsb2NhdGlvbj0ic2FtcGxlMzUzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk5IiBsb2NhdGlvbj0iLi9zYW1wbGU4OTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzkiIGxvY2F0aW9uPSIuXHNhbXBsZTI3OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M3OTMyMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk2IiBsb2NhdGlvbj0ic2FtcGxlNDk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIyIiBsb2NhdGlvbj0iLi9zYW1wbGUxMjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDciIGxvY2F0aW9uPSIuXHNhbXBsZTQ0Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjk5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjMTI1Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA5IiBsb2NhdGlvbj0ic2FtcGxlNDA5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTcxIiBsb2NhdGlvbj0iLi9zYW1wbGU1NzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDUiIGxvY2F0aW9uPSIuXHNhbXBsZTY0NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGEyOWM2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTIiIGxvY2F0aW9uPSJzYW1wbGUyMTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTAiIGxvY2F0aW9uPSIuL3NhbXBsZTc5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NSIgbG9jYXRpb249Ii5cc2FtcGxlNjY1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYmViM2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExOSIgbG9jYXRpb249InNhbXBsZTExOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5OSIgbG9jYXRpb249Ii4vc2FtcGxlMzk5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg3IiBsb2NhdGlvbj0iLlxzYW1wbGUxODcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzAwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY2MGFlYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM4IiBsb2NhdGlvbj0ic2FtcGxlMTM4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ3IiBsb2NhdGlvbj0iLi9zYW1wbGUzNDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSIgbG9jYXRpb249Ii5cc2FtcGxlNTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzAxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMmFhNTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzAxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MSIgbG9jYXRpb249InNhbXBsZTU3MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2IiBsb2NhdGlvbj0iLi9zYW1wbGU2Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4OCIgbG9jYXRpb249Ii5cc2FtcGxlNTg4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjU3MmFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTciIGxvY2F0aW9uPSJzYW1wbGU1NTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDQiIGxvY2F0aW9uPSIuL3NhbXBsZTQ0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMCIgbG9jYXRpb249Ii5cc2FtcGxlMzIwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGZjODZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTciIGxvY2F0aW9uPSJzYW1wbGUxNTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTYiIGxvY2F0aW9uPSIuL3NhbXBsZTQ5Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5OCIgbG9jYXRpb249Ii5cc2FtcGxlMTk4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmViMjhjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODkiIGxvY2F0aW9uPSJzYW1wbGUxODkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjYiIGxvY2F0aW9uPSIuL3NhbXBsZTkyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMyIgbG9jYXRpb249Ii5cc2FtcGxlNzMzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWYyZDg2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzEiIGxvY2F0aW9uPSJzYW1wbGU5MzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjkiIGxvY2F0aW9uPSIuL3NhbXBsZTE2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NyIgbG9jYXRpb249Ii5cc2FtcGxlODY3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzM0OGU3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzUiIGxvY2F0aW9uPSJzYW1wbGU4MzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTciIGxvY2F0aW9uPSIuL3NhbXBsZTk5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NiIgbG9jYXRpb249Ii5cc2FtcGxlMjY2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTcxOGRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDciIGxvY2F0aW9uPSJzYW1wbGU5MDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzMiIGxvY2F0aW9uPSIuL3NhbXBsZTM3My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOSIgbG9jYXRpb249Ii5cc2FtcGxlNjA5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWJiY2Y1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDEiIGxvY2F0aW9uPSJzYW1wbGU2NDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODEiIGxvY2F0aW9uPSIuL3NhbXBsZTk4MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NSIgbG9jYXRpb249Ii5cc2FtcGxlNjg1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2M2ZjhkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjYiIGxvY2F0aW9uPSJzYW1wbGUzNjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDEiIGxvY2F0aW9uPSIuL3NhbXBsZTQwMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MiIgbG9jYXRpb249Ii5cc2FtcGxlMTUyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRlMTY1Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE5IiBsb2NhdGlvbj0ic2FtcGxlNjE5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcxIiBsb2NhdGlvbj0iLi9zYW1wbGU4NzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTIiIGxvY2F0aW9uPSIuXHNhbXBsZTQxMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzAxNjM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzEiIGxvY2F0aW9uPSJzYW1wbGU5MzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDQiIGxvY2F0aW9uPSIuL3NhbXBsZTE0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1IiBsb2NhdGlvbj0iLlxzYW1wbGU2NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzExLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI5OTllNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQxIiBsb2NhdGlvbj0ic2FtcGxlMzQxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE0IiBsb2NhdGlvbj0iLi9zYW1wbGUxMTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjUiIGxvY2F0aW9uPSIuXHNhbXBsZTEyNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAxZTgzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA1IiBsb2NhdGlvbj0ic2FtcGxlNTA1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU1IiBsb2NhdGlvbj0iLi9zYW1wbGUxNTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzIiIGxvY2F0aW9uPSIuXHNhbXBsZTkzMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzEzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU0NTc3ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiIGxvY2F0aW9uPSJzYW1wbGU3NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyIgbG9jYXRpb249Ii4vc2FtcGxlMjczLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ3IiBsb2NhdGlvbj0iLlxzYW1wbGU2NDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMTVhMDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2OCIgbG9jYXRpb249InNhbXBsZTg2OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMSIgbG9jYXRpb249Ii4vc2FtcGxlNDIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA0IiBsb2NhdGlvbj0iLlxzYW1wbGUyMDQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzE1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NzY2Y2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzE1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5IiBsb2NhdGlvbj0ic2FtcGxlNjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTMiIGxvY2F0aW9uPSIuL3NhbXBsZTE5My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NiIgbG9jYXRpb249Ii5cc2FtcGxlODk2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGZlMTNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDciIGxvY2F0aW9uPSJzYW1wbGUxMDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjciIGxvY2F0aW9uPSIuL3NhbXBsZTM2Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxOCIgbG9jYXRpb249Ii5cc2FtcGxlNDE4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWQ3NjM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjIiIGxvY2F0aW9uPSJzYW1wbGU0NjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTkiIGxvY2F0aW9uPSIuL3NhbXBsZTkxOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2MSIgbG9jYXRpb249Ii5cc2FtcGxlNzYxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzYwMzdkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzIiIGxvY2F0aW9uPSJzYW1wbGUxMzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTAiIGxvY2F0aW9uPSIuL3NhbXBsZTc5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NCIgbG9jYXRpb249Ii5cc2FtcGxlMjU0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjI4ZGZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzkiIGxvY2F0aW9uPSJzYW1wbGU0Mzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDUiIGxvY2F0aW9uPSIuL3NhbXBsZTk0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NyIgbG9jYXRpb249Ii5cc2FtcGxlOTk3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJhOGZiYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYiIGxvY2F0aW9uPSJzYW1wbGU0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NCIgbG9jYXRpb249Ii4vc2FtcGxlOTQ0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ4IiBsb2NhdGlvbj0iLlxzYW1wbGU1NDgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZkNWQ2Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEwIiBsb2NhdGlvbj0ic2FtcGxlMTEwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUyIiBsb2NhdGlvbj0iLi9zYW1wbGU2NTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSIgbG9jYXRpb249Ii5cc2FtcGxlMzUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyOGVlOTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MyIgbG9jYXRpb249InNhbXBsZTU3My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwOCIgbG9jYXRpb249Ii4vc2FtcGxlMjA4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgwIiBsb2NhdGlvbj0iLlxzYW1wbGU4ODAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NDM2ODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1IiBsb2NhdGlvbj0ic2FtcGxlOTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NiIgbG9jYXRpb249Ii4vc2FtcGxlOTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjAiIGxvY2F0aW9uPSIuXHNhbXBsZTY2MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNhM2M0ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY4IiBsb2NhdGlvbj0ic2FtcGxlNDY4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI4IiBsb2NhdGlvbj0iLi9zYW1wbGU4Mjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDYiIGxvY2F0aW9uPSIuXHNhbXBsZTUwNi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVlNmIxYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcwIiBsb2NhdGlvbj0ic2FtcGxlMzcwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYxIiBsb2NhdGlvbj0iLi9zYW1wbGU0NjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzgiIGxvY2F0aW9uPSIuXHNhbXBsZTE3OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTViYzk3MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM3IiBsb2NhdGlvbj0ic2FtcGxlMzM3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEiIGxvY2F0aW9uPSIuL3NhbXBsZTgxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE1IiBsb2NhdGlvbj0iLlxzYW1wbGUxMTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MWQ3N2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NyIgbG9jYXRpb249InNhbXBsZTc2Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NCIgbG9jYXRpb249Ii4vc2FtcGxlNTk0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAwIiBsb2NhdGlvbj0iLlxzYW1wbGUyMDAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMyNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYTRjNTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4OSIgbG9jYXRpb249InNhbXBsZTU4OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OCIgbG9jYXRpb249Ii4vc2FtcGxlNzQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgwIiBsb2NhdGlvbj0iLlxzYW1wbGUyODAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MDZiZDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMyIgbG9jYXRpb249InNhbXBsZTkxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOCIgbG9jYXRpb249Ii4vc2FtcGxlNjI4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE5IiBsb2NhdGlvbj0iLlxzYW1wbGUxMTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNWQ5MmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzI5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MSIgbG9jYXRpb249InNhbXBsZTg5MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MCIgbG9jYXRpb249Ii4vc2FtcGxlMzUwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA4IiBsb2NhdGlvbj0iLlxzYW1wbGU4MDgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTBiZDVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzIiIGxvY2F0aW9uPSJzYW1wbGUyNzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTgiIGxvY2F0aW9uPSIuL3NhbXBsZTcxOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0IiBsb2NhdGlvbj0iLlxzYW1wbGU5NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGVmNWFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTAiIGxvY2F0aW9uPSJzYW1wbGU2NTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODMiIGxvY2F0aW9uPSIuL3NhbXBsZTg4My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxOSIgbG9jYXRpb249Ii5cc2FtcGxlNjE5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjdmMWU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDYiIGxvY2F0aW9uPSJzYW1wbGUxNDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgbG9jYXRpb249Ii4vc2FtcGxlMjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjAiIGxvY2F0aW9uPSIuXHNhbXBsZTMyMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzMyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ3ZGIzZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU5IiBsb2NhdGlvbj0ic2FtcGxlODU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgzIiBsb2NhdGlvbj0iLi9zYW1wbGU1ODMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjQiIGxvY2F0aW9uPSIuXHNhbXBsZTQ2NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzMzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUzZGY2Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI4IiBsb2NhdGlvbj0ic2FtcGxlNzI4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA3IiBsb2NhdGlvbj0iLi9zYW1wbGUyMDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjUiIGxvY2F0aW9uPSIuXHNhbXBsZTUyNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgwNzAxMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg2IiBsb2NhdGlvbj0ic2FtcGxlNTg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUiIGxvY2F0aW9uPSIuL3NhbXBsZTM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIiBsb2NhdGlvbj0iLlxzYW1wbGUyODEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwOWY4ZGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0OSIgbG9jYXRpb249InNhbXBsZTk0OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMCIgbG9jYXRpb249Ii4vc2FtcGxlMzEwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU5IiBsb2NhdGlvbj0iLlxzYW1wbGU3NTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2N2NkNGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiBsb2NhdGlvbj0ic2FtcGxlNjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjYiIGxvY2F0aW9uPSIuL3NhbXBsZTkyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MiIgbG9jYXRpb249Ii5cc2FtcGxlOTcyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTI5NzI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTUiIGxvY2F0aW9uPSJzYW1wbGUzMTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTgiIGxvY2F0aW9uPSIuL3NhbXBsZTY1OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOCIgbG9jYXRpb249Ii5cc2FtcGxlMzM4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDZlYmNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzMiIGxvY2F0aW9uPSJzYW1wbGUxNzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTgiIGxvY2F0aW9uPSIuL3NhbXBsZTQxOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NCIgbG9jYXRpb249Ii5cc2FtcGxlMjU0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTViYmRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjciIGxvY2F0aW9uPSJzYW1wbGUxMjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiBsb2NhdGlvbj0iLi9zYW1wbGU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcwIiBsb2NhdGlvbj0iLlxzYW1wbGU0NzAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWVjYjg1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzAiIGxvY2F0aW9uPSJzYW1wbGU0MzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDMiIGxvY2F0aW9uPSIuL3NhbXBsZTM0My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNSIgbG9jYXRpb249Ii5cc2FtcGxlMzM1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NDYzY2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MiIgbG9jYXRpb249InNhbXBsZTY1Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0OCIgbG9jYXRpb249Ii4vc2FtcGxlNTQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk0IiBsb2NhdGlvbj0iLlxzYW1wbGUzOTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMTQ0ZjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MSIgbG9jYXRpb249InNhbXBsZTc4MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NyIgbG9jYXRpb249Ii4vc2FtcGxlNTQ3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY5IiBsb2NhdGlvbj0iLlxzYW1wbGU0Njkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMTNmYTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MiIgbG9jYXRpb249InNhbXBsZTc4Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OSIgbG9jYXRpb249Ii4vc2FtcGxlMTg5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ2IiBsb2NhdGlvbj0iLlxzYW1wbGU2NDYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NjQzYTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MyIgbG9jYXRpb249InNhbXBsZTI1My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NiIgbG9jYXRpb249Ii4vc2FtcGxlNzg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiIGxvY2F0aW9uPSIuXHNhbXBsZTk2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWVhZTFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTUiIGxvY2F0aW9uPSJzYW1wbGU0MTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDgiIGxvY2F0aW9uPSIuL3NhbXBsZTQ0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNSIgbG9jYXRpb249Ii5cc2FtcGxlMjI1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjQ1Y2IxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzYiIGxvY2F0aW9uPSJzYW1wbGU2NzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTIiIGxvY2F0aW9uPSIuL3NhbXBsZTM5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNiIgbG9jYXRpb249Ii5cc2FtcGxlNzA2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTMxM2VlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTIiIGxvY2F0aW9uPSJzYW1wbGUyNTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDYiIGxvY2F0aW9uPSIuL3NhbXBsZTE0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NCIgbG9jYXRpb249Ii5cc2FtcGxlODc0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODRjZDMwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSIgbG9jYXRpb249InNhbXBsZTcxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE1IiBsb2NhdGlvbj0iLi9zYW1wbGUxMTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjQiIGxvY2F0aW9uPSIuXHNhbXBsZTQyNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQyYTlhNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcwIiBsb2NhdGlvbj0ic2FtcGxlMjcwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ4IiBsb2NhdGlvbj0iLi9zYW1wbGU0NDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzQiIGxvY2F0aW9uPSIuXHNhbXBsZTY3NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk0ZjlmMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzciIGxvY2F0aW9uPSJzYW1wbGU3Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MyIgbG9jYXRpb249Ii4vc2FtcGxlOTkzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgzIiBsb2NhdGlvbj0iLlxzYW1wbGUzODMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDg3MDU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTAiIGxvY2F0aW9uPSJzYW1wbGU3OTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzgiIGxvY2F0aW9uPSIuL3NhbXBsZTU3OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NyIgbG9jYXRpb249Ii5cc2FtcGxlOTU3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNmU5MDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MiIgbG9jYXRpb249InNhbXBsZTY2Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMyIgbG9jYXRpb249Ii4vc2FtcGxlMTEzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIyIiBsb2NhdGlvbj0iLlxzYW1wbGU0MjIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzUxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZjRiZmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NSIgbG9jYXRpb249InNhbXBsZTQ1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5OSIgbG9jYXRpb249Ii4vc2FtcGxlMTk5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY3IiBsb2NhdGlvbj0iLlxzYW1wbGUxNjcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmN2YyODAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOSIgbG9jYXRpb249InNhbXBsZTMzOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NCIgbG9jYXRpb249Ii4vc2FtcGxlMTU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMyIiBsb2NhdGlvbj0iLlxzYW1wbGU2MzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZDdkN2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzUzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNSIgbG9jYXRpb249InNhbXBsZTEzNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNCIgbG9jYXRpb249Ii4vc2FtcGxlNzI0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciIGxvY2F0aW9uPSIuXHNhbXBsZTE3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjBlZWZlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDEiIGxvY2F0aW9uPSJzYW1wbGUyNDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTIiIGxvY2F0aW9uPSIuL3NhbXBsZTYxMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NiIgbG9jYXRpb249Ii5cc2FtcGxlNDg2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGNiNDZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MCIgbG9jYXRpb249InNhbXBsZTUwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAyIiBsb2NhdGlvbj0iLi9zYW1wbGU5MDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjMiIGxvY2F0aW9uPSIuXHNhbXBsZTgyMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZkZTFmNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY4IiBsb2NhdGlvbj0ic2FtcGxlMjY4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYxIiBsb2NhdGlvbj0iLi9zYW1wbGUzNjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDAiIGxvY2F0aW9uPSIuXHNhbXBsZTg0MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4YmFiOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcwIiBsb2NhdGlvbj0ic2FtcGxlODcwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAyIiBsb2NhdGlvbj0iLi9zYW1wbGU3MDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTciIGxvY2F0aW9uPSIuXHNhbXBsZTE5Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZiMWNlOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUzIiBsb2NhdGlvbj0ic2FtcGxlMTUzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ5IiBsb2NhdGlvbj0iLi9zYW1wbGU3NDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODgiIGxvY2F0aW9uPSIuXHNhbXBsZTY4OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNkYzkwNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA1IiBsb2NhdGlvbj0ic2FtcGxlODA1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg1IiBsb2NhdGlvbj0iLi9zYW1wbGU4ODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiIGxvY2F0aW9uPSIuXHNhbXBsZTIyMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMTJjY2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3OCIgbG9jYXRpb249InNhbXBsZTc3OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOCIgbG9jYXRpb249Ii4vc2FtcGxlNjM4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzczIiBsb2NhdGlvbj0iLlxzYW1wbGUzNzMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzYwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNiYTBlMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM1IiBsb2NhdGlvbj0ic2FtcGxlMzM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgzIiBsb2NhdGlvbj0iLi9zYW1wbGUxODMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODAiIGxvY2F0aW9uPSIuXHNhbXBsZTE4MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcwYjAwYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODczIiBsb2NhdGlvbj0ic2FtcGxlODczLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA1IiBsb2NhdGlvbj0iLi9zYW1wbGU4MDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjUiIGxvY2F0aW9uPSIuXHNhbXBsZTM2NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzYyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBmNDdkZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE5IiBsb2NhdGlvbj0ic2FtcGxlNDE5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIGxvY2F0aW9uPSIuL3NhbXBsZTgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUiIGxvY2F0aW9uPSIuXHNhbXBsZTQ1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM2My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGMyNDBkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDUiIGxvY2F0aW9uPSJzYW1wbGU0NDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDMiIGxvY2F0aW9uPSIuL3NhbXBsZTY0My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NCIgbG9jYXRpb249Ii5cc2FtcGxlMjQ0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM2NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjZhYmU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM2NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MyIgbG9jYXRpb249InNhbXBsZTQzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ4IiBsb2NhdGlvbj0iLi9zYW1wbGU1NDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNyIgbG9jYXRpb249Ii5cc2FtcGxlMTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MDY2NGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzY1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIGxvY2F0aW9uPSJzYW1wbGU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc4IiBsb2NhdGlvbj0iLi9zYW1wbGUxNzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzgiIGxvY2F0aW9uPSIuXHNhbXBsZTI3OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzY2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk5ZTc5My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEyIiBsb2NhdGlvbj0ic2FtcGxlNDEyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUzIiBsb2NhdGlvbj0iLi9zYW1wbGUxNTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjUiIGxvY2F0aW9uPSIuXHNhbXBsZTQ2NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMyMmYzZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUyIiBsb2NhdGlvbj0ic2FtcGxlMjUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAyIiBsb2NhdGlvbj0iLi9zYW1wbGU3MDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDQiIGxvY2F0aW9uPSIuXHNhbXBsZTcwNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzY4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY1ODk4NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ4IiBsb2NhdGlvbj0ic2FtcGxlNjQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc4IiBsb2NhdGlvbj0iLi9zYW1wbGUzNzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODkiIGxvY2F0aW9uPSIuXHNhbXBsZTQ4OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk1NGNlNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU0IiBsb2NhdGlvbj0ic2FtcGxlMjU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA4IiBsb2NhdGlvbj0iLi9zYW1wbGUzMDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTIiIGxvY2F0aW9uPSIuXHNhbXBsZTI5Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYWVjMDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIGxvY2F0aW9uPSJzYW1wbGUxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM4IiBsb2NhdGlvbj0iLi9zYW1wbGUyMzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODIiIGxvY2F0aW9uPSIuXHNhbXBsZTE4Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGMwM2MzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTEiIGxvY2F0aW9uPSJzYW1wbGU4NTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzIiIGxvY2F0aW9uPSIuL3NhbXBsZTc3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwIiBsb2NhdGlvbj0iLlxzYW1wbGU1MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzcxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI2MWFiMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIGxvY2F0aW9uPSJzYW1wbGU2OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMCIgbG9jYXRpb249Ii4vc2FtcGxlMTAwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg2IiBsb2NhdGlvbj0iLlxzYW1wbGUzODYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzcyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyYTUzNjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzcyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMiIgbG9jYXRpb249InNhbXBsZTExMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MyIgbG9jYXRpb249Ii4vc2FtcGxlNDQzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIGxvY2F0aW9uPSIuXHNhbXBsZTY4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzI2ZTg3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTYiIGxvY2F0aW9uPSJzYW1wbGU0OTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzUiIGxvY2F0aW9uPSIuL3NhbXBsZTkzNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MiIgbG9jYXRpb249Ii5cc2FtcGxlMjgyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmE1M2ViLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDIiIGxvY2F0aW9uPSJzYW1wbGU2MDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODMiIGxvY2F0aW9uPSIuL3NhbXBsZTc4My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NSIgbG9jYXRpb249Ii5cc2FtcGxlMTY1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGRjZDkyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTkiIGxvY2F0aW9uPSJzYW1wbGU2MTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzkiIGxvY2F0aW9uPSIuL3NhbXBsZTg3OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NiIgbG9jYXRpb249Ii5cc2FtcGxlMTQ2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWY3NjJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTEiIGxvY2F0aW9uPSJzYW1wbGU5OTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjUiIGxvY2F0aW9uPSIuL3NhbXBsZTIyNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMCIgbG9jYXRpb249Ii5cc2FtcGxlMjMwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2EwMzA3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzUiIGxvY2F0aW9uPSJzYW1wbGU0NzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODgiIGxvY2F0aW9uPSIuL3NhbXBsZTg4OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNCIgbG9jYXRpb249Ii5cc2FtcGxlODM0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTM5ZjNlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTIiIGxvY2F0aW9uPSJzYW1wbGU2NTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzUiIGxvY2F0aW9uPSIuL3NhbXBsZTgzNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MSIgbG9jYXRpb249Ii5cc2FtcGxlMjUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDNiZTNiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCIgbG9jYXRpb249InNhbXBsZTY0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYzIiBsb2NhdGlvbj0iLi9zYW1wbGU0NjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDYiIGxvY2F0aW9uPSIuXHNhbXBsZTg0Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ODBmNGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NCIgbG9jYXRpb249InNhbXBsZTk1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNiIgbG9jYXRpb249Ii4vc2FtcGxlNzA2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk0IiBsb2NhdGlvbj0iLlxzYW1wbGU1OTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk2OTAxYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTciIGxvY2F0aW9uPSJzYW1wbGU5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MiIgbG9jYXRpb249Ii4vc2FtcGxlNzkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3IiBsb2NhdGlvbj0iLlxzYW1wbGU4ODcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YzdkNGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NCIgbG9jYXRpb249InNhbXBsZTE0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMiIgbG9jYXRpb249Ii4vc2FtcGxlNTIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI0IiBsb2NhdGlvbj0iLlxzYW1wbGUxMjQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMzY3YmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCIgbG9jYXRpb249InNhbXBsZTI0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNCIgbG9jYXRpb249Ii4vc2FtcGxlMjM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc1IiBsb2NhdGlvbj0iLlxzYW1wbGU2NzUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzN2Y1MmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NSIgbG9jYXRpb249InNhbXBsZTU2NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNSIgbG9jYXRpb249Ii4vc2FtcGxlNDE1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAwIiBsb2NhdGlvbj0iLlxzYW1wbGUxMDAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MmZlODcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzg0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NCIgbG9jYXRpb249InNhbXBsZTQ0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMSIgbG9jYXRpb249Ii4vc2FtcGxlMzIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEiIGxvY2F0aW9uPSIuXHNhbXBsZTkxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzODUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjdkMGI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzkiIGxvY2F0aW9uPSJzYW1wbGUyMzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDciIGxvY2F0aW9uPSIuL3NhbXBsZTkwNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNSIgbG9jYXRpb249Ii5cc2FtcGxlMTI1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzODYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2I5Y2NjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODgiIGxvY2F0aW9uPSJzYW1wbGUxODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzkiIGxvY2F0aW9uPSIuL3NhbXBsZTIzOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MSIgbG9jYXRpb249Ii5cc2FtcGxlNjcxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODI0NDFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTAiIGxvY2F0aW9uPSJzYW1wbGUxOTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTQiIGxvY2F0aW9uPSIuL3NhbXBsZTExNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2OSIgbG9jYXRpb249Ii5cc2FtcGxlMjY5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMThhYzQ5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTAiIGxvY2F0aW9uPSJzYW1wbGU2NTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjAiIGxvY2F0aW9uPSIuL3NhbXBsZTMyMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNiIgbG9jYXRpb249Ii5cc2FtcGxlODM2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGI3MDU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzkiIGxvY2F0aW9uPSJzYW1wbGUzNzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTkiIGxvY2F0aW9uPSIuL3NhbXBsZTYxOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNiIgbG9jYXRpb249Ii5cc2FtcGxlOTA2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJhMmU4OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE3IiBsb2NhdGlvbj0ic2FtcGxlODE3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTExIiBsb2NhdGlvbj0iLi9zYW1wbGUxMTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjUiIGxvY2F0aW9uPSIuXHNhbXBsZTcyNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzOTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTM2MjVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODgiIGxvY2F0aW9uPSJzYW1wbGUzODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzMiIGxvY2F0aW9uPSIuL3NhbXBsZTY3My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MCIgbG9jYXRpb249Ii5cc2FtcGxlMzYwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzOTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzhjMTkzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDkiIGxvY2F0aW9uPSJzYW1wbGUyNDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzIiIGxvY2F0aW9uPSIuL3NhbXBsZTM3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyOCIgbG9jYXRpb249Ii5cc2FtcGxlODI4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzOTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzcyYzFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzciIGxvY2F0aW9uPSJzYW1wbGUyNzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCIgbG9jYXRpb249Ii4vc2FtcGxlNDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTUiIGxvY2F0aW9uPSIuXHNhbXBsZTY1NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzkzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzOTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY4MDQ5Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzOTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMwIiBsb2NhdGlvbj0ic2FtcGxlMjMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQzIiBsb2NhdGlvbj0iLi9zYW1wbGU2NDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiBsb2NhdGlvbj0iLlxzYW1wbGU5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzOTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWI2ZDMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NCIgbG9jYXRpb249InNhbXBsZTU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI5IiBsb2NhdGlvbj0iLi9zYW1wbGUxMjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiIgbG9jYXRpb249Ii5cc2FtcGxlNzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMmVhY2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNCIgbG9jYXRpb249InNhbXBsZTYxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NSIgbG9jYXRpb249Ii4vc2FtcGxlODQ1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYwIiBsb2NhdGlvbj0iLlxzYW1wbGU4NjAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwN2E3NjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NiIgbG9jYXRpb249InNhbXBsZTg4Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCIgbG9jYXRpb249Ii4vc2FtcGxlMjQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA2IiBsb2NhdGlvbj0iLlxzYW1wbGUzMDYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjNmZkOGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2IiBsb2NhdGlvbj0ic2FtcGxlOTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIiBsb2NhdGlvbj0iLi9zYW1wbGUzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA5IiBsb2NhdGlvbj0iLlxzYW1wbGU4MDkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNzAxYWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNSIgbG9jYXRpb249InNhbXBsZTkwNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMyIgbG9jYXRpb249Ii4vc2FtcGxlNzMzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgxIiBsb2NhdGlvbj0iLlxzYW1wbGUzODEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZmFlYTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3IiBsb2NhdGlvbj0ic2FtcGxlMzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTUiIGxvY2F0aW9uPSIuL3NhbXBsZTQ5NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOSIgbG9jYXRpb249Ii5cc2FtcGxlNjI5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MDA3MzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwIiBsb2NhdGlvbj0ic2FtcGxlOTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjMiIGxvY2F0aW9uPSIuL3NhbXBsZTYyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNiIgbG9jYXRpb249Ii5cc2FtcGxlMjI2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YmMzNTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMiIgbG9jYXRpb249InNhbXBsZTkzMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NSIgbG9jYXRpb249Ii4vc2FtcGxlNzY1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU4IiBsb2NhdGlvbj0iLlxzYW1wbGUzNTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDAwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY4NTZlMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAzIiBsb2NhdGlvbj0ic2FtcGxlNzAzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgyIiBsb2NhdGlvbj0iLi9zYW1wbGUyODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODUiIGxvY2F0aW9uPSIuXHNhbXBsZTk4NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBkNGE3Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiIGxvY2F0aW9uPSJzYW1wbGU5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNyIgbG9jYXRpb249Ii4vc2FtcGxlMTE3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg4IiBsb2NhdGlvbj0iLlxzYW1wbGU4ODgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDAyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3Yzk4M2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDAyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NSIgbG9jYXRpb249InNhbXBsZTg1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNSIgbG9jYXRpb249Ii4vc2FtcGxlNjM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIwIiBsb2NhdGlvbj0iLlxzYW1wbGU3MjAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYzY1MmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMyIgbG9jYXRpb249InNhbXBsZTkyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNSIgbG9jYXRpb249Ii4vc2FtcGxlMzE1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU3IiBsb2NhdGlvbj0iLlxzYW1wbGU2NTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDA0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMDBkMGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDA0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2IiBsb2NhdGlvbj0ic2FtcGxlNDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTgiIGxvY2F0aW9uPSIuL3NhbXBsZTk5OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMCIgbG9jYXRpb249Ii5cc2FtcGxlMTIwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2Y1OTkzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzIiIGxvY2F0aW9uPSJzYW1wbGU4MzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDUiIGxvY2F0aW9uPSIuL3NhbXBsZTEwNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NiIgbG9jYXRpb249Ii5cc2FtcGxlNDY2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjliYmM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjUiIGxvY2F0aW9uPSJzYW1wbGUyNjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzAiIGxvY2F0aW9uPSIuL3NhbXBsZTk3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMCIgbG9jYXRpb249Ii5cc2FtcGxlMzMwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDg5ZjFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODEiIGxvY2F0aW9uPSJzYW1wbGUxODEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDAiIGxvY2F0aW9uPSIuL3NhbXBsZTQwMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MSIgbG9jYXRpb249Ii5cc2FtcGxlMzQxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmJkNjJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzgiIGxvY2F0aW9uPSJzYW1wbGUzMzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTMiIGxvY2F0aW9uPSIuL3NhbXBsZTYxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNyIgbG9jYXRpb249Ii5cc2FtcGxlNTI3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmIzZTFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDkiIGxvY2F0aW9uPSJzYW1wbGU1MDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzMiIGxvY2F0aW9uPSIuL3NhbXBsZTkzMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NyIgbG9jYXRpb249Ii5cc2FtcGxlMTQ3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE4OGQ3Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE2IiBsb2NhdGlvbj0ic2FtcGxlNjE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEyIiBsb2NhdGlvbj0iLi9zYW1wbGUyMTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTgiIGxvY2F0aW9uPSIuXHNhbXBsZTkxOC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzE3MDc5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgbG9jYXRpb249InNhbXBsZTIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI0IiBsb2NhdGlvbj0iLi9zYW1wbGU3MjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTUiIGxvY2F0aW9uPSIuXHNhbXBsZTUxNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDExLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk2ODdlOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk2IiBsb2NhdGlvbj0ic2FtcGxlNTk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY2IiBsb2NhdGlvbj0iLi9zYW1wbGU0NjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjkiIGxvY2F0aW9uPSIuXHNhbXBsZTQ2OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYxZWQyNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQwIiBsb2NhdGlvbj0ic2FtcGxlOTQwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIiIGxvY2F0aW9uPSIuL3NhbXBsZTQyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA2IiBsb2NhdGlvbj0iLlxzYW1wbGU2MDYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQxMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDEzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NjdiMWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MiIgbG9jYXRpb249InNhbXBsZTk1Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4IiBsb2NhdGlvbj0iLi9zYW1wbGU0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNiIgbG9jYXRpb249Ii5cc2FtcGxlMzA2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmI4ZDk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQxNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDAiIGxvY2F0aW9uPSJzYW1wbGU0NDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjciIGxvY2F0aW9uPSIuL3NhbXBsZTkyNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OCIgbG9jYXRpb249Ii5cc2FtcGxlNDg4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQxNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTFmMGNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTEiIGxvY2F0aW9uPSJzYW1wbGU3OTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMCIgbG9jYXRpb249Ii4vc2FtcGxlMTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDciIGxvY2F0aW9uPSIuXHNhbXBsZTQ0Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEyMjMxMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM2IiBsb2NhdGlvbj0ic2FtcGxlNjM2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMyIiBsb2NhdGlvbj0iLi9zYW1wbGUxMzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDAiIGxvY2F0aW9uPSIuXHNhbXBsZTcwMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDE3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYzNmFiYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc5IiBsb2NhdGlvbj0ic2FtcGxlMTc5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE0IiBsb2NhdGlvbj0iLi9zYW1wbGUzMTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzAiIGxvY2F0aW9uPSIuXHNhbXBsZTYzMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUyNzIzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAzIiBsb2NhdGlvbj0ic2FtcGxlNDAzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc5IiBsb2NhdGlvbj0iLi9zYW1wbGUzNzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDgiIGxvY2F0aW9uPSIuXHNhbXBsZTQwOC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJkMjk4OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU1IiBsb2NhdGlvbj0ic2FtcGxlNDU1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiIGxvY2F0aW9uPSIuL3NhbXBsZTk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU3IiBsb2NhdGlvbj0iLlxzYW1wbGU0NTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDY3OGE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyIgbG9jYXRpb249InNhbXBsZTg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA2IiBsb2NhdGlvbj0iLi9zYW1wbGU2MDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTQiIGxvY2F0aW9uPSIuXHNhbXBsZTM1NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTUzOTllLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgbG9jYXRpb249InNhbXBsZTIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkxIiBsb2NhdGlvbj0iLi9zYW1wbGU5OTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTkiIGxvY2F0aW9uPSIuXHNhbXBsZTcxOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDIxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E1MDM5Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk2IiBsb2NhdGlvbj0ic2FtcGxlNTk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyIgbG9jYXRpb249Ii4vc2FtcGxlMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NyIgbG9jYXRpb249Ii5cc2FtcGxlNDc3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTYwZjEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTgiIGxvY2F0aW9uPSJzYW1wbGU4OTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjkiIGxvY2F0aW9uPSIuL3NhbXBsZTg2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNiIgbG9jYXRpb249Ii5cc2FtcGxlMjI2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTc3MTNlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDAiIGxvY2F0aW9uPSJzYW1wbGU1MDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzAiIGxvY2F0aW9uPSIuL3NhbXBsZTk3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NSIgbG9jYXRpb249Ii5cc2FtcGxlNjk1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmE5MWFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzYiIGxvY2F0aW9uPSJzYW1wbGU3NzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTciIGxvY2F0aW9uPSIuL3NhbXBsZTg1Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNiIgbG9jYXRpb249Ii5cc2FtcGxlODI2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzc3MDBkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDQiIGxvY2F0aW9uPSJzYW1wbGUyNDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDkiIGxvY2F0aW9uPSIuL3NhbXBsZTkwOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMiIgbG9jYXRpb249Ii5cc2FtcGxlNDMyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTA5YzZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyIgbG9jYXRpb249InNhbXBsZTg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIyIiBsb2NhdGlvbj0iLi9zYW1wbGU3MjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjkiIGxvY2F0aW9uPSIuXHNhbXBsZTgyOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDI3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Mjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQwZjY0My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Mjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ5IiBsb2NhdGlvbj0ic2FtcGxlOTQ5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM2IiBsb2NhdGlvbj0iLi9zYW1wbGUzMzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTYiIGxvY2F0aW9uPSIuXHNhbXBsZTM1Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDI4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Mjgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY0NDZmNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Mjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYiIGxvY2F0aW9uPSJzYW1wbGU2Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NiIgbG9jYXRpb249Ii4vc2FtcGxlODk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkwIiBsb2NhdGlvbj0iLlxzYW1wbGUxOTAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDI5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZGQ5YjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDI5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyIiBsb2NhdGlvbj0ic2FtcGxlNzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDMiIGxvY2F0aW9uPSIuL3NhbXBsZTYwMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNiIgbG9jYXRpb249Ii5cc2FtcGxlOTM2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE5ODk5My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTczIiBsb2NhdGlvbj0ic2FtcGxlMTczLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcxIiBsb2NhdGlvbj0iLi9zYW1wbGU5NzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDgiIGxvY2F0aW9uPSIuXHNhbXBsZTQwOC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTZlMjllLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzkiIGxvY2F0aW9uPSJzYW1wbGU2Mzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTIiIGxvY2F0aW9uPSIuL3NhbXBsZTg1Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiIGxvY2F0aW9uPSIuXHNhbXBsZTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDMxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3OTZkNzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDMxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNiIgbG9jYXRpb249InNhbXBsZTQwNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNSIgbG9jYXRpb249Ii4vc2FtcGxlMzA1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk0IiBsb2NhdGlvbj0iLlxzYW1wbGUxOTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YTNkNDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNSIgbG9jYXRpb249InNhbXBsZTkwNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MyIgbG9jYXRpb249Ii4vc2FtcGxlNjYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg0IiBsb2NhdGlvbj0iLlxzYW1wbGU1ODQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2Y2M3ZWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNSIgbG9jYXRpb249InNhbXBsZTgyNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MiIgbG9jYXRpb249Ii4vc2FtcGxlMTkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE3IiBsb2NhdGlvbj0iLlxzYW1wbGU2MTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYWI5YjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwMCIgbG9jYXRpb249InNhbXBsZTcwMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NSIgbG9jYXRpb249Ii4vc2FtcGxlMTY1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMwIiBsb2NhdGlvbj0iLlxzYW1wbGU3MzAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWJlZGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MCIgbG9jYXRpb249InNhbXBsZTM4MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NyIgbG9jYXRpb249Ii4vc2FtcGxlODY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIyIiBsb2NhdGlvbj0iLlxzYW1wbGU5MjIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNGI1ZGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MiIgbG9jYXRpb249InNhbXBsZTU3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MiIgbG9jYXRpb249Ii4vc2FtcGxlNDUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMxIiBsb2NhdGlvbj0iLlxzYW1wbGU1MzEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNDM4ZmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNSIgbG9jYXRpb249InNhbXBsZTIxNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNCIgbG9jYXRpb249Ii4vc2FtcGxlNjA0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYyIiBsb2NhdGlvbj0iLlxzYW1wbGUxNjIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1Zjg4ZWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDM4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNyIgbG9jYXRpb249InNhbXBsZTQxNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMCIgbG9jYXRpb249Ii4vc2FtcGxlMzEwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYiIGxvY2F0aW9uPSIuXHNhbXBsZTE2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Mzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTlkYjgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjkiIGxvY2F0aW9uPSJzYW1wbGU0Mjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjMiIGxvY2F0aW9uPSIuL3NhbXBsZTQ2My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MSIgbG9jYXRpb249Ii5cc2FtcGxlOTUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFjMjIzNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU5IiBsb2NhdGlvbj0ic2FtcGxlMzU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA0IiBsb2NhdGlvbj0iLi9zYW1wbGUxMDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjciIGxvY2F0aW9uPSIuXHNhbXBsZTQyNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTdhNDY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjQiIGxvY2F0aW9uPSJzYW1wbGUxNjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzAiIGxvY2F0aW9uPSIuL3NhbXBsZTc3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMyIgbG9jYXRpb249Ii5cc2FtcGxlMzEzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Yjc5ZTJlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjgiIGxvY2F0aW9uPSJzYW1wbGU4Njgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDYiIGxvY2F0aW9uPSIuL3NhbXBsZTE0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2OSIgbG9jYXRpb249Ii5cc2FtcGxlMjY5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzdiZWU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODgiIGxvY2F0aW9uPSJzYW1wbGU2ODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDQiIGxvY2F0aW9uPSIuL3NhbXBsZTQwNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzOSIgbG9jYXRpb249Ii5cc2FtcGxlOTM5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjcxMmIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODciIGxvY2F0aW9uPSJzYW1wbGU3ODcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTYiIGxvY2F0aW9uPSIuL3NhbXBsZTg1Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxIiBsb2NhdGlvbj0iLlxzYW1wbGUzMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDQ0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg0MjFiZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcyIiBsb2NhdGlvbj0ic2FtcGxlOTcyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA2IiBsb2NhdGlvbj0iLi9zYW1wbGU4MDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTIiIGxvY2F0aW9uPSIuXHNhbXBsZTI1Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ0NmYzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc1IiBsb2NhdGlvbj0ic2FtcGxlODc1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg4IiBsb2NhdGlvbj0iLi9zYW1wbGU3ODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDgiIGxvY2F0aW9uPSIuXHNhbXBsZTkwOC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDQ2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAyZDgzOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc3IiBsb2NhdGlvbj0ic2FtcGxlMTc3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA1IiBsb2NhdGlvbj0iLi9zYW1wbGU5MDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTciIGxvY2F0aW9uPSIuXHNhbXBsZTg5Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDQ3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg5NTI4Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYwIiBsb2NhdGlvbj0ic2FtcGxlMjYwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAwIiBsb2NhdGlvbj0iLi9zYW1wbGUyMDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDciIGxvY2F0aW9uPSIuXHNhbXBsZTcwNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJhYjZkNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI1IiBsb2NhdGlvbj0ic2FtcGxlMTI1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkzIiBsb2NhdGlvbj0iLi9zYW1wbGU4OTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzEiIGxvY2F0aW9uPSIuXHNhbXBsZTkzMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc2ZmNiOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ4IiBsb2NhdGlvbj0ic2FtcGxlODQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ5IiBsb2NhdGlvbj0iLi9zYW1wbGUxNDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDEiIGxvY2F0aW9uPSIuXHNhbXBsZTU0MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MzhiNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOCIgbG9jYXRpb249InNhbXBsZTcwOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNyIgbG9jYXRpb249Ii4vc2FtcGxlOTI3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMxIiBsb2NhdGlvbj0iLlxzYW1wbGU2MzEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY2OTYxNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAwIiBsb2NhdGlvbj0ic2FtcGxlMjAwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQzIiBsb2NhdGlvbj0iLi9zYW1wbGU5NDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTIiIGxvY2F0aW9uPSIuXHNhbXBsZTIxMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmNTEzMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE2IiBsb2NhdGlvbj0ic2FtcGxlMTE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ0IiBsb2NhdGlvbj0iLi9zYW1wbGUzNDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjQiIGxvY2F0aW9uPSIuXHNhbXBsZTgyNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDUyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdjZDExYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg3IiBsb2NhdGlvbj0ic2FtcGxlNTg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk5IiBsb2NhdGlvbj0iLi9zYW1wbGU3OTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjAiIGxvY2F0aW9uPSIuXHNhbXBsZTMyMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ0N2Y2NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg3IiBsb2NhdGlvbj0ic2FtcGxlNzg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI2IiBsb2NhdGlvbj0iLi9zYW1wbGU4MjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDMiIGxvY2F0aW9uPSIuXHNhbXBsZTE0My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFkNzE5ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIiIGxvY2F0aW9uPSJzYW1wbGU0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MCIgbG9jYXRpb249Ii4vc2FtcGxlNTkwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI2IiBsb2NhdGlvbj0iLlxzYW1wbGU2MjYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZmNiZWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NiIgbG9jYXRpb249InNhbXBsZTg0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2OSIgbG9jYXRpb249Ii4vc2FtcGxlMzY5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQiIGxvY2F0aW9uPSIuXHNhbXBsZTQ0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ1Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODk0NTEzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzgiIGxvY2F0aW9uPSJzYW1wbGUxMzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MCIgbG9jYXRpb249Ii4vc2FtcGxlODAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTgiIGxvY2F0aW9uPSIuXHNhbXBsZTg5OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmExMjZiZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc1IiBsb2NhdGlvbj0ic2FtcGxlNDc1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI4IiBsb2NhdGlvbj0iLi9zYW1wbGU4Mjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODEiIGxvY2F0aW9uPSIuXHNhbXBsZTQ4MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFhOTdjNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU4IiBsb2NhdGlvbj0ic2FtcGxlNzU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc1IiBsb2NhdGlvbj0iLi9zYW1wbGUxNzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDYiIGxvY2F0aW9uPSIuXHNhbXBsZTI0Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRiNmNmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY3IiBsb2NhdGlvbj0ic2FtcGxlNjY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYiIGxvY2F0aW9uPSIuL3NhbXBsZTg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY2IiBsb2NhdGlvbj0iLlxzYW1wbGU2NjYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTIwNjlhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTUiIGxvY2F0aW9uPSJzYW1wbGUyNTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDgiIGxvY2F0aW9uPSIuL3NhbXBsZTE0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OSIgbG9jYXRpb249Ii5cc2FtcGxlODk5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMTc4MWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MSIgbG9jYXRpb249InNhbXBsZTM3MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIiBsb2NhdGlvbj0iLi9zYW1wbGU3My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NSIgbG9jYXRpb249Ii5cc2FtcGxlMjk1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmM0MzYwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODgiIGxvY2F0aW9uPSJzYW1wbGU4ODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODgiIGxvY2F0aW9uPSIuL3NhbXBsZTc4OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NCIgbG9jYXRpb249Ii5cc2FtcGxlNTc0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjdlODYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjgiIGxvY2F0aW9uPSJzYW1wbGU4Njgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODUiIGxvY2F0aW9uPSIuL3NhbXBsZTc4NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OSIgbG9jYXRpb249Ii5cc2FtcGxlMjQ5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjVmMDVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDUiIGxvY2F0aW9uPSJzYW1wbGU4NDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTUiIGxvY2F0aW9uPSIuL3NhbXBsZTU5NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNCIgbG9jYXRpb249Ii5cc2FtcGxlMjA0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDdhNzU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTciIGxvY2F0aW9uPSJzYW1wbGUyOTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDIiIGxvY2F0aW9uPSIuL3NhbXBsZTUwMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NiIgbG9jYXRpb249Ii5cc2FtcGxlNzc2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjNlODRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDgiIGxvY2F0aW9uPSJzYW1wbGU1MDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzQiIGxvY2F0aW9uPSIuL3NhbXBsZTIzNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNSIgbG9jYXRpb249Ii5cc2FtcGxlMjI1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmVlNTRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDkiIGxvY2F0aW9uPSJzYW1wbGUxMDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDUiIGxvY2F0aW9uPSIuL3NhbXBsZTc0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NiIgbG9jYXRpb249Ii5cc2FtcGxlNzg2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Njcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTNhZjE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzgiIGxvY2F0aW9uPSJzYW1wbGUzNzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDciIGxvY2F0aW9uPSIuL3NhbXBsZTU0Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExOCIgbG9jYXRpb249Ii5cc2FtcGxlMTE4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGNlYTRiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjQiIGxvY2F0aW9uPSJzYW1wbGUzMjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjkiIGxvY2F0aW9uPSIuL3NhbXBsZTU2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OCIgbG9jYXRpb249Ii5cc2FtcGxlODk4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Njkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWI1ODVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzEiIGxvY2F0aW9uPSJzYW1wbGUzMzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiBsb2NhdGlvbj0iLi9zYW1wbGU2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE2IiBsb2NhdGlvbj0iLlxzYW1wbGUxMTYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGUxMDgxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDIiIGxvY2F0aW9uPSJzYW1wbGU0MDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDYiIGxvY2F0aW9uPSIuL3NhbXBsZTM0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNSIgbG9jYXRpb249Ii5cc2FtcGxlMTI1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDcwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2YTc4ODQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDcwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NiIgbG9jYXRpb249InNhbXBsZTU1Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNyIgbG9jYXRpb249Ii4vc2FtcGxlODA3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI2IiBsb2NhdGlvbj0iLlxzYW1wbGUzMjYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNTgxZmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNCIgbG9jYXRpb249InNhbXBsZTYwNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMCIgbG9jYXRpb249Ii4vc2FtcGxlNjAwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA3IiBsb2NhdGlvbj0iLlxzYW1wbGUxMDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDcyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3Y2EzYTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDcyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MSIgbG9jYXRpb249InNhbXBsZTU0MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NSIgbG9jYXRpb249Ii4vc2FtcGxlMTg1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkxIiBsb2NhdGlvbj0iLlxzYW1wbGUyOTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMGEwNTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDczLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDczIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NSIgbG9jYXRpb249InNhbXBsZTU2NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyOCIgbG9jYXRpb249Ii4vc2FtcGxlODI4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQzIiBsb2NhdGlvbj0iLlxzYW1wbGU2NDMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MDlkOGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OSIgbG9jYXRpb249InNhbXBsZTI0OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNiIgbG9jYXRpb249Ii4vc2FtcGxlNDE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg3IiBsb2NhdGlvbj0iLlxzYW1wbGU3ODcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDc1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExM2UyMGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDc1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2IiBsb2NhdGlvbj0ic2FtcGxlNDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzIiIGxvY2F0aW9uPSIuL3NhbXBsZTgzMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMiIgbG9jYXRpb249Ii5cc2FtcGxlMjEyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTAzNjY2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjUiIGxvY2F0aW9uPSJzYW1wbGUyNjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODQiIGxvY2F0aW9uPSIuL3NhbXBsZTk4NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOSIgbG9jYXRpb249Ii5cc2FtcGxlNTA5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Nzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTViMDdmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjgiIGxvY2F0aW9uPSJzYW1wbGUxNjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDUiIGxvY2F0aW9uPSIuL3NhbXBsZTI0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExIiBsb2NhdGlvbj0iLlxzYW1wbGUxMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY0MWE3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg0IiBsb2NhdGlvbj0ic2FtcGxlNzg0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUzIiBsb2NhdGlvbj0iLi9zYW1wbGUzNTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTAiIGxvY2F0aW9uPSIuXHNhbXBsZTYxMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDc5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Nzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU1YjJjMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Nzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIyIiBsb2NhdGlvbj0ic2FtcGxlOTIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE5IiBsb2NhdGlvbj0iLi9zYW1wbGUyMTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzYiIGxvY2F0aW9uPSIuXHNhbXBsZTg3Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYTY0MzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxIiBsb2NhdGlvbj0ic2FtcGxlNjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTQiIGxvY2F0aW9uPSIuL3NhbXBsZTkxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MCIgbG9jYXRpb249Ii5cc2FtcGxlMjkwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNzJkZmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDgwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0IiBsb2NhdGlvbj0ic2FtcGxlNzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzMiIGxvY2F0aW9uPSIuL3NhbXBsZTgzMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2IiBsb2NhdGlvbj0iLlxzYW1wbGU5Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDgxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgzNWFlMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQwIiBsb2NhdGlvbj0ic2FtcGxlNDQwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk0IiBsb2NhdGlvbj0iLi9zYW1wbGU3OTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzMiIGxvY2F0aW9uPSIuXHNhbXBsZTk3My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDgyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ1YjcyYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk2IiBsb2NhdGlvbj0ic2FtcGxlNDk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUzIiBsb2NhdGlvbj0iLi9zYW1wbGU3NTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzgiIGxvY2F0aW9uPSIuXHNhbXBsZTk3OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY3NmM4My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA5IiBsb2NhdGlvbj0ic2FtcGxlMTA5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcxIiBsb2NhdGlvbj0iLi9zYW1wbGU2NzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjciIGxvY2F0aW9uPSIuXHNhbXBsZTgyNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDg0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYyNzhlMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQwIiBsb2NhdGlvbj0ic2FtcGxlNjQwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ0IiBsb2NhdGlvbj0iLi9zYW1wbGU0NDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTciIGxvY2F0aW9uPSIuXHNhbXBsZTM1Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDg1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEwMjA4NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQiIGxvY2F0aW9uPSJzYW1wbGU4NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiIgbG9jYXRpb249Ii4vc2FtcGxlOTg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg0IiBsb2NhdGlvbj0iLlxzYW1wbGUyODQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDg2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmOGU1MGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDg2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyIiBsb2NhdGlvbj0ic2FtcGxlNzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjMiIGxvY2F0aW9uPSIuL3NhbXBsZTEyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NSIgbG9jYXRpb249Ii5cc2FtcGxlMzg1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWE2YWMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzMiIGxvY2F0aW9uPSJzYW1wbGU0NzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTMiIGxvY2F0aW9uPSIuL3NhbXBsZTg5My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MSIgbG9jYXRpb249Ii5cc2FtcGxlNDUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWJkNGM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzAiIGxvY2F0aW9uPSJzYW1wbGUyMzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTkiIGxvY2F0aW9uPSIuL3NhbXBsZTU5OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NSIgbG9jYXRpb249Ii5cc2FtcGxlODQ1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0ODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTM2ZmY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjIiIGxvY2F0aW9uPSJzYW1wbGU0MjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjgiIGxvY2F0aW9uPSIuL3NhbXBsZTQyOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MiIgbG9jYXRpb249Ii5cc2FtcGxlNTkyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFhZmJhZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgyIiBsb2NhdGlvbj0ic2FtcGxlMjgyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgwIiBsb2NhdGlvbj0iLi9zYW1wbGU3ODAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjMiIGxvY2F0aW9uPSIuXHNhbXBsZTU2My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDc3MjdhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjQiIGxvY2F0aW9uPSJzYW1wbGU5MjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTIiIGxvY2F0aW9uPSIuL3NhbXBsZTUxMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNyIgbG9jYXRpb249Ii5cc2FtcGxlOTE3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2ZkYWQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTAiIGxvY2F0aW9uPSJzYW1wbGUxNTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjUiIGxvY2F0aW9uPSIuL3NhbXBsZTEyNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MSIgbG9jYXRpb249Ii5cc2FtcGxlNDgxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmVjMTExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTMiIGxvY2F0aW9uPSJzYW1wbGUxMTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODkiIGxvY2F0aW9uPSIuL3NhbXBsZTI4OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NCIgbG9jYXRpb249Ii5cc2FtcGxlNjY0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmFiODlhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzQiIGxvY2F0aW9uPSJzYW1wbGU1MzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDUiIGxvY2F0aW9uPSIuL3NhbXBsZTU0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NiIgbG9jYXRpb249Ii5cc2FtcGxlNjg2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTVkZWY3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDIiIGxvY2F0aW9uPSJzYW1wbGU3MDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDIiIGxvY2F0aW9uPSIuL3NhbXBsZTU0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MyIgbG9jYXRpb249Ii5cc2FtcGxlOTkzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2M4MzY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODkiIGxvY2F0aW9uPSJzYW1wbGU5ODkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjQiIGxvY2F0aW9uPSIuL3NhbXBsZTc2NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NCIgbG9jYXRpb249Ii5cc2FtcGxlNjQ0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWQ0ZWMwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjMiIGxvY2F0aW9uPSJzYW1wbGU1NjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDkiIGxvY2F0aW9uPSIuL3NhbXBsZTMwOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNCIgbG9jYXRpb249Ii5cc2FtcGxlNzE0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2FmOTg1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzciIGxvY2F0aW9uPSJzYW1wbGUyMzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTMiIGxvY2F0aW9uPSIuL3NhbXBsZTM1My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MiIgbG9jYXRpb249Ii5cc2FtcGxlNTQyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2NiMWVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODQiIGxvY2F0aW9uPSJzYW1wbGU1ODQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjMiIGxvY2F0aW9uPSIuL3NhbXBsZTgyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NCIgbG9jYXRpb249Ii5cc2FtcGxlMTk0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODMzYjRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDIiIGxvY2F0aW9uPSJzYW1wbGU2NDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTAiIGxvY2F0aW9uPSIuL3NhbXBsZTU5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNyIgbG9jYXRpb249Ii5cc2FtcGxlOTA3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZGE4ZWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMiIgbG9jYXRpb249InNhbXBsZTIyMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMSIgbG9jYXRpb249Ii4vc2FtcGxlNDMxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc0IiBsb2NhdGlvbj0iLlxzYW1wbGUyNzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg5OTBiYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYyIiBsb2NhdGlvbj0ic2FtcGxlNDYyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI1IiBsb2NhdGlvbj0iLi9zYW1wbGUxMjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjQiIGxvY2F0aW9uPSIuXHNhbXBsZTgyNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDhhZjM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTgiIGxvY2F0aW9uPSJzYW1wbGU5NTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzciIGxvY2F0aW9uPSIuL3NhbXBsZTM3Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNyIgbG9jYXRpb249Ii5cc2FtcGxlMjE3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDU3MjliLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTMiIGxvY2F0aW9uPSJzYW1wbGU3NTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjUiIGxvY2F0aW9uPSIuL3NhbXBsZTk2NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NSIgbG9jYXRpb249Ii5cc2FtcGxlODU1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTI1ZTQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzgiIGxvY2F0aW9uPSJzYW1wbGU2Nzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzEiIGxvY2F0aW9uPSIuL3NhbXBsZTY3MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3IiBsb2NhdGlvbj0iLlxzYW1wbGUxNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTAzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU4OGNhOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkyIiBsb2NhdGlvbj0ic2FtcGxlNjkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkxIiBsb2NhdGlvbj0iLi9zYW1wbGUzOTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDYiIGxvY2F0aW9uPSIuXHNhbXBsZTQwNi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjljMjUyOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQwIiBsb2NhdGlvbj0ic2FtcGxlMzQwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAxIiBsb2NhdGlvbj0iLi9zYW1wbGU2MDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MCIgbG9jYXRpb249Ii5cc2FtcGxlNTAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTA1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMmQ1YTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMiIgbG9jYXRpb249InNhbXBsZTYwMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1OSIgbG9jYXRpb249Ii4vc2FtcGxlNjU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQyIiBsb2NhdGlvbj0iLlxzYW1wbGU0NDIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZGZjZTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NSIgbG9jYXRpb249InNhbXBsZTI2NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NyIgbG9jYXRpb249Ii4vc2FtcGxlMTg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc4IiBsb2NhdGlvbj0iLlxzYW1wbGUzNzgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTA3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZjE2YTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTA3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MiIgbG9jYXRpb249InNhbXBsZTI5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MiIgbG9jYXRpb249Ii4vc2FtcGxlMjkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQwIiBsb2NhdGlvbj0iLlxzYW1wbGU3NDAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTA4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhODcyMjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTA4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NCIgbG9jYXRpb249InNhbXBsZTc1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2IiBsb2NhdGlvbj0iLi9zYW1wbGU3Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNiIgbG9jYXRpb249Ii5cc2FtcGxlMzA2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDZlMDE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjgiIGxvY2F0aW9uPSJzYW1wbGU1Njgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTMiIGxvY2F0aW9uPSIuL3NhbXBsZTIxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NyIgbG9jYXRpb249Ii5cc2FtcGxlNDk3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU4NmRlMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkwIiBsb2NhdGlvbj0ic2FtcGxlMjkwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMzIiBsb2NhdGlvbj0iLi9zYW1wbGU0MzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTAiIGxvY2F0aW9uPSIuXHNhbXBsZTI1MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODQ0NDgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTUiIGxvY2F0aW9uPSJzYW1wbGU4OTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjAiIGxvY2F0aW9uPSIuL3NhbXBsZTQ2MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MiIgbG9jYXRpb249Ii5cc2FtcGxlNjgyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTc5NzJiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUxMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzUiIGxvY2F0aW9uPSJzYW1wbGUxNzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSIgbG9jYXRpb249Ii4vc2FtcGxlNTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDgiIGxvY2F0aW9uPSIuXHNhbXBsZTM0OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE0Mjg2Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcyIiBsb2NhdGlvbj0ic2FtcGxlOTcyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY5IiBsb2NhdGlvbj0iLi9zYW1wbGU3Njkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTMiIGxvY2F0aW9uPSIuXHNhbXBsZTU1My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTEzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI0ZTQwNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM0IiBsb2NhdGlvbj0ic2FtcGxlNTM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ5IiBsb2NhdGlvbj0iLi9zYW1wbGU5NDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTAiIGxvY2F0aW9uPSIuXHNhbXBsZTI5MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFmZDQwYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgzIiBsb2NhdGlvbj0ic2FtcGxlNzgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkzIiBsb2NhdGlvbj0iLi9zYW1wbGUyOTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTEiIGxvY2F0aW9uPSIuXHNhbXBsZTM1MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRhNmMwNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI0IiBsb2NhdGlvbj0ic2FtcGxlODI0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQxIiBsb2NhdGlvbj0iLi9zYW1wbGU0NDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSIgbG9jYXRpb249Ii5cc2FtcGxlOTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUxNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YmUyYzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMyIgbG9jYXRpb249InNhbXBsZTgwMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNiIgbG9jYXRpb249Ii4vc2FtcGxlMzI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY5IiBsb2NhdGlvbj0iLlxzYW1wbGUzNjkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxY2I2MmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NSIgbG9jYXRpb249InNhbXBsZTQ1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MyIgbG9jYXRpb249Ii4vc2FtcGxlNjgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ5IiBsb2NhdGlvbj0iLlxzYW1wbGU1NDkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUxOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NDc0YjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NSIgbG9jYXRpb249InNhbXBsZTE0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OSIgbG9jYXRpb249Ii4vc2FtcGxlNTk5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI5IiBsb2NhdGlvbj0iLlxzYW1wbGU1Mjkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUxOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NTdiNTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTE5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NCIgbG9jYXRpb249InNhbXBsZTg1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MiIgbG9jYXRpb249Ii4vc2FtcGxlMTUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg1IiBsb2NhdGlvbj0iLlxzYW1wbGUxODUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzhlYzY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTkiIGxvY2F0aW9uPSJzYW1wbGUxMTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTciIGxvY2F0aW9uPSIuL3NhbXBsZTQ5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NSIgbG9jYXRpb249Ii5cc2FtcGxlNjc1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTIwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZTM3Y2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTIwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MyIgbG9jYXRpb249InNhbXBsZTk2My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxOCIgbG9jYXRpb249Ii4vc2FtcGxlOTE4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg0IiBsb2NhdGlvbj0iLlxzYW1wbGUyODQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YTEzZDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MCIgbG9jYXRpb249InNhbXBsZTM0MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MiIgbG9jYXRpb249Ii4vc2FtcGxlNTQyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg2IiBsb2NhdGlvbj0iLlxzYW1wbGU0ODYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNDgyZTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NiIgbG9jYXRpb249InNhbXBsZTE0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MiIgbG9jYXRpb249Ii4vc2FtcGxlOTQyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM1IiBsb2NhdGlvbj0iLlxzYW1wbGU5MzUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTIzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzOTYzMzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTIzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MiIgbG9jYXRpb249InNhbXBsZTk0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNSIgbG9jYXRpb249Ii4vc2FtcGxlOTA1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk3IiBsb2NhdGlvbj0iLlxzYW1wbGU2OTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTI0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNDFhMzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTI0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIiBsb2NhdGlvbj0ic2FtcGxlNzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MiIgbG9jYXRpb249Ii4vc2FtcGxlNjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzIiIGxvY2F0aW9uPSIuXHNhbXBsZTUzMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTI1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU4YjQ2ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkxIiBsb2NhdGlvbj0ic2FtcGxlMzkxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA0IiBsb2NhdGlvbj0iLi9zYW1wbGU3MDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzMiIGxvY2F0aW9uPSIuXHNhbXBsZTYzMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE2NTU2Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM3IiBsb2NhdGlvbj0ic2FtcGxlMjM3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgyIiBsb2NhdGlvbj0iLi9zYW1wbGUxODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDAiIGxvY2F0aW9uPSIuXHNhbXBsZTcwMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTI3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Mjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNlNmQ1OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Mjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg2IiBsb2NhdGlvbj0ic2FtcGxlMjg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE1IiBsb2NhdGlvbj0iLi9zYW1wbGU0MTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDciIGxvY2F0aW9uPSIuXHNhbXBsZTc0Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTI4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Mjgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIwOTJhZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Mjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg1IiBsb2NhdGlvbj0ic2FtcGxlMzg1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQwIiBsb2NhdGlvbj0iLi9zYW1wbGUxNDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjUiIGxvY2F0aW9uPSIuXHNhbXBsZTUyNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IxN2IwMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Mjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ3IiBsb2NhdGlvbj0ic2FtcGxlNjQ3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc5IiBsb2NhdGlvbj0iLi9zYW1wbGU5Nzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTciIGxvY2F0aW9uPSIuXHNhbXBsZTI5Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ZjNlN2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NiIgbG9jYXRpb249InNhbXBsZTQ5Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNiIgbG9jYXRpb249Ii4vc2FtcGxlODA2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMyIiBsb2NhdGlvbj0iLlxzYW1wbGU1MzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTMwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRhMjBjZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQyIiBsb2NhdGlvbj0ic2FtcGxlOTQyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEyIiBsb2NhdGlvbj0iLi9zYW1wbGU3MTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzkiIGxvY2F0aW9uPSIuXHNhbXBsZTY3OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFiMzgyOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3IiBsb2NhdGlvbj0ic2FtcGxlODg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE3IiBsb2NhdGlvbj0iLi9zYW1wbGUyMTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMyIgbG9jYXRpb249Ii5cc2FtcGxlMjMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YTJiMmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2OSIgbG9jYXRpb249InNhbXBsZTI2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOCIgbG9jYXRpb249Ii4vc2FtcGxlMzA4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTczIiBsb2NhdGlvbj0iLlxzYW1wbGU1NzMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYmFhNmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMSIgbG9jYXRpb249InNhbXBsZTQwMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NiIgbG9jYXRpb249Ii4vc2FtcGxlMzg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIiIGxvY2F0aW9uPSIuXHNhbXBsZTUyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODEwYTU3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDUiIGxvY2F0aW9uPSJzYW1wbGU5MDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTYiIGxvY2F0aW9uPSIuL3NhbXBsZTM5Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NSIgbG9jYXRpb249Ii5cc2FtcGxlMTQ1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzZjZmQyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDEiIGxvY2F0aW9uPSJzYW1wbGUzMDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjMiIGxvY2F0aW9uPSIuL3NhbXBsZTkyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNiIgbG9jYXRpb249Ii5cc2FtcGxlNDE2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmRlZjM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODkiIGxvY2F0aW9uPSJzYW1wbGU0ODkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTkiIGxvY2F0aW9uPSIuL3NhbXBsZTUxOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIGxvY2F0aW9uPSIuXHNhbXBsZTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTM3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MjJjNGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTM3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MSIgbG9jYXRpb249InNhbXBsZTc5MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MCIgbG9jYXRpb249Ii4vc2FtcGxlODUwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc4IiBsb2NhdGlvbj0iLlxzYW1wbGU2Nzgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZmFmM2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTM4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNiIgbG9jYXRpb249InNhbXBsZTIxNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NCIgbG9jYXRpb249Ii4vc2FtcGxlMzU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUzIiBsb2NhdGlvbj0iLlxzYW1wbGUzNTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YTFhOGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwMSIgbG9jYXRpb249InNhbXBsZTcwMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMyIgbG9jYXRpb249Ii4vc2FtcGxlNzIzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiIGxvY2F0aW9uPSIuXHNhbXBsZTI2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc0MGEzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM4IiBsb2NhdGlvbj0ic2FtcGxlNjM4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ1IiBsb2NhdGlvbj0iLi9zYW1wbGUyNDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzkiIGxvY2F0aW9uPSIuXHNhbXBsZTU3OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjJiNjc4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzIiIGxvY2F0aW9uPSJzYW1wbGU3MzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDUiIGxvY2F0aW9uPSIuL3NhbXBsZTU0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMSIgbG9jYXRpb249Ii5cc2FtcGxlNjMxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGM1OWU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzIiIGxvY2F0aW9uPSJzYW1wbGUyMzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiIGxvY2F0aW9uPSIuL3NhbXBsZTIyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NSIgbG9jYXRpb249Ii5cc2FtcGxlMjk1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWI0NjkxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzQiIGxvY2F0aW9uPSJzYW1wbGU0MzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODEiIGxvY2F0aW9uPSIuL3NhbXBsZTQ4MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgbG9jYXRpb249Ii5cc2FtcGxlNDkyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDdjMDMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTkiIGxvY2F0aW9uPSJzYW1wbGU0NTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTciIGxvY2F0aW9uPSIuL3NhbXBsZTc5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNiIgbG9jYXRpb249Ii5cc2FtcGxlNTA2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGY5ZjVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODQiIGxvY2F0aW9uPSJzYW1wbGU1ODQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjIiIGxvY2F0aW9uPSIuL3NhbXBsZTgyMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OSIgbG9jYXRpb249Ii5cc2FtcGxlNTU5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjc5ZWNlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTIiIGxvY2F0aW9uPSJzYW1wbGU2OTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzgiIGxvY2F0aW9uPSIuL3NhbXBsZTczOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMyIgbG9jYXRpb249Ii5cc2FtcGxlMjAzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTk5OGUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDciIGxvY2F0aW9uPSJzYW1wbGUyMDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODciIGxvY2F0aW9uPSIuL3NhbXBsZTc4Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2IiBsb2NhdGlvbj0iLlxzYW1wbGU5Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTQ3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRkYjIxZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU0IiBsb2NhdGlvbj0ic2FtcGxlNDU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE3IiBsb2NhdGlvbj0iLi9zYW1wbGUyMTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDkiIGxvY2F0aW9uPSIuXHNhbXBsZTQwOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBkMDRkYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAiIGxvY2F0aW9uPSJzYW1wbGU1MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OSIgbG9jYXRpb249Ii4vc2FtcGxlNjg5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcxIiBsb2NhdGlvbj0iLlxzYW1wbGU4NzEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU0OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTQ5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2Mjc5ZjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTQ5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMiIgbG9jYXRpb249InNhbXBsZTMyMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNyIgbG9jYXRpb249Ii4vc2FtcGxlNzI3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEzIiBsb2NhdGlvbj0iLlxzYW1wbGU2MTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTNiYWZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTEiIGxvY2F0aW9uPSJzYW1wbGUxNTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzciIGxvY2F0aW9uPSIuL3NhbXBsZTI3Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NSIgbG9jYXRpb249Ii5cc2FtcGxlODg1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxYjJiZGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMSIgbG9jYXRpb249InNhbXBsZTkyMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MyIgbG9jYXRpb249Ii4vc2FtcGxlMTYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYyIiBsb2NhdGlvbj0iLlxzYW1wbGU2NjIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTUxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OWQzY2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4OSIgbG9jYXRpb249InNhbXBsZTI4OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NCIgbG9jYXRpb249Ii4vc2FtcGxlNDY0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA4IiBsb2NhdGlvbj0iLlxzYW1wbGUzMDgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YWVhZTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMyIgbG9jYXRpb249InNhbXBsZTgxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NiIgbG9jYXRpb249Ii4vc2FtcGxlNzg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkyIiBsb2NhdGlvbj0iLlxzYW1wbGU0OTIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMzBkNWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTUzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyIiBsb2NhdGlvbj0ic2FtcGxlNzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTMiIGxvY2F0aW9uPSIuL3NhbXBsZTY1My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxOSIgbG9jYXRpb249Ii5cc2FtcGxlNzE5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGIxZWI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzMiIGxvY2F0aW9uPSJzYW1wbGUzMzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzMiIGxvY2F0aW9uPSIuL3NhbXBsZTEzMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MSIgbG9jYXRpb249Ii5cc2FtcGxlMzkxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODI0MmNmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzYiIGxvY2F0aW9uPSJzYW1wbGUxNzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzQiIGxvY2F0aW9uPSIuL3NhbXBsZTMzNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NCIgbG9jYXRpb249Ii5cc2FtcGxlMTY0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWQ5ODI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTUiIGxvY2F0aW9uPSJzYW1wbGU0OTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTEiIGxvY2F0aW9uPSIuL3NhbXBsZTgxMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4OSIgbG9jYXRpb249Ii5cc2FtcGxlOTg5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjZlZDU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTAiIGxvY2F0aW9uPSJzYW1wbGU1OTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjciIGxvY2F0aW9uPSIuL3NhbXBsZTUyNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMiIgbG9jYXRpb249Ii5cc2FtcGxlMTIyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTAxMGIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDMiIGxvY2F0aW9uPSJzYW1wbGUzMDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzIiIGxvY2F0aW9uPSIuL3NhbXBsZTI3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NyIgbG9jYXRpb249Ii5cc2FtcGxlNjg3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzIwZWYyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU1OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDgiIGxvY2F0aW9uPSJzYW1wbGUzNDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODUiIGxvY2F0aW9uPSIuL3NhbXBsZTU4NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOSIgbG9jYXRpb249Ii5cc2FtcGxlOTA5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJjODg2Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMiIGxvY2F0aW9uPSJzYW1wbGUyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNCIgbG9jYXRpb249Ii4vc2FtcGxlMTM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEzIiBsb2NhdGlvbj0iLlxzYW1wbGU1MTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTYwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI4NDE5ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIzIiBsb2NhdGlvbj0ic2FtcGxlNjIzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiIgbG9jYXRpb249Ii4vc2FtcGxlNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNiIgbG9jYXRpb249Ii5cc2FtcGxlNzA2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjYwMjFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiIGxvY2F0aW9uPSJzYW1wbGUyMjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNSIgbG9jYXRpb249Ii4vc2FtcGxlMTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTgiIGxvY2F0aW9uPSIuXHNhbXBsZTcxOC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTYyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAwMTQ4NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NjIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM2IiBsb2NhdGlvbj0ic2FtcGxlNjM2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMwIiBsb2NhdGlvbj0iLi9zYW1wbGUzMzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjIiIGxvY2F0aW9uPSIuXHNhbXBsZTQ2Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTYzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA0ODJmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA0IiBsb2NhdGlvbj0ic2FtcGxlNDA0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTciIGxvY2F0aW9uPSIuL3NhbXBsZTU3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ5IiBsb2NhdGlvbj0iLlxzYW1wbGUxNDkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTY0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MWVkMDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MCIgbG9jYXRpb249InNhbXBsZTU5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NCIgbG9jYXRpb249Ii4vc2FtcGxlNjk0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc0IiBsb2NhdGlvbj0iLlxzYW1wbGUyNzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMGRiNTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTY1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NyIgbG9jYXRpb249InNhbXBsZTU1Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyIgbG9jYXRpb249Ii4vc2FtcGxlMjczLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMwIiBsb2NhdGlvbj0iLlxzYW1wbGU4MzAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYjNkM2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMCIgbG9jYXRpb249InNhbXBsZTczMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIiBsb2NhdGlvbj0iLi9zYW1wbGU4MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NyIgbG9jYXRpb249Ii5cc2FtcGxlNzk3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Njcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzY2NzlkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjIiIGxvY2F0aW9uPSJzYW1wbGU3NjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjEiIGxvY2F0aW9uPSIuL3NhbXBsZTkyMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NyIgbG9jYXRpb249Ii5cc2FtcGxlNzQ3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2JjNDg0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzQiIGxvY2F0aW9uPSJzYW1wbGUyNzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTkiIGxvY2F0aW9uPSIuL3NhbXBsZTU1OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MiIgbG9jYXRpb249Ii5cc2FtcGxlODkyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Njkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDVhMDZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTMiIGxvY2F0aW9uPSJzYW1wbGUxMTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjEiIGxvY2F0aW9uPSIuL3NhbXBsZTQ2MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NSIgbG9jYXRpb249Ii5cc2FtcGxlNTk1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc4MmNmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcwIiBsb2NhdGlvbj0ic2FtcGxlNDcwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU3IiBsb2NhdGlvbj0iLi9zYW1wbGUyNTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzIiIGxvY2F0aW9uPSIuXHNhbXBsZTQzMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjU1ODk3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTgiIGxvY2F0aW9uPSJzYW1wbGU0MTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODQiIGxvY2F0aW9uPSIuL3NhbXBsZTM4NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NSIgbG9jYXRpb249Ii5cc2FtcGxlODQ1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTg4ZWI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODIiIGxvY2F0aW9uPSJzYW1wbGU5ODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjIiIGxvY2F0aW9uPSIuL3NhbXBsZTk2Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwOSIgbG9jYXRpb249Ii5cc2FtcGxlODA5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGRhODQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjYiIGxvY2F0aW9uPSJzYW1wbGU4MjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzYiIGxvY2F0aW9uPSIuL3NhbXBsZTY3Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OCIgbG9jYXRpb249Ii5cc2FtcGxlNjQ4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGNkZjAzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTYiIGxvY2F0aW9uPSJzYW1wbGU3NTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjEiIGxvY2F0aW9uPSIuL3NhbXBsZTI2MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NCIgbG9jYXRpb249Ii5cc2FtcGxlODc0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzRiMjJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTgiIGxvY2F0aW9uPSJzYW1wbGUxNTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTAiIGxvY2F0aW9uPSIuL3NhbXBsZTU5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NCIgbG9jYXRpb249Ii5cc2FtcGxlNzU0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzM5NWFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzAiIGxvY2F0aW9uPSJzYW1wbGUxMzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMyIgbG9jYXRpb249Ii4vc2FtcGxlMjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTYiIGxvY2F0aW9uPSIuXHNhbXBsZTI1Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTc2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VmNDFlZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODExIiBsb2NhdGlvbj0ic2FtcGxlODExLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY4IiBsb2NhdGlvbj0iLi9zYW1wbGU2Njgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzEiIGxvY2F0aW9uPSIuXHNhbXBsZTgzMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Nzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRhY2U0ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Nzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg1IiBsb2NhdGlvbj0ic2FtcGxlMjg1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkxIiBsb2NhdGlvbj0iLi9zYW1wbGU5OTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTkiIGxvY2F0aW9uPSIuXHNhbXBsZTYxOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYxNjRjZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEwIiBsb2NhdGlvbj0ic2FtcGxlMTEwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEyIiBsb2NhdGlvbj0iLi9zYW1wbGU1MTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNSIgbG9jYXRpb249Ii5cc2FtcGxlMTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMzNkYjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMCIgbG9jYXRpb249InNhbXBsZTkzMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNSIgbG9jYXRpb249Ii4vc2FtcGxlNTE1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcxIiBsb2NhdGlvbj0iLlxzYW1wbGU2NzEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmFhNjI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTMiIGxvY2F0aW9uPSJzYW1wbGU4NTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDIiIGxvY2F0aW9uPSIuL3NhbXBsZTI0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MSIgbG9jYXRpb249Ii5cc2FtcGxlNzQxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzOTc5YjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTgwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNiIgbG9jYXRpb249InNhbXBsZTczNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMyIgbG9jYXRpb249Ii4vc2FtcGxlMTEzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg5IiBsb2NhdGlvbj0iLlxzYW1wbGUzODkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTgxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwN2ZmNjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTgxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0OCIgbG9jYXRpb249InNhbXBsZTQ0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MiIgbG9jYXRpb249Ii4vc2FtcGxlNjkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEyIiBsb2NhdGlvbj0iLlxzYW1wbGUzMTIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ODJlZDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MSIgbG9jYXRpb249InNhbXBsZTc4MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MCIgbG9jYXRpb249Ii4vc2FtcGxlMTkwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjciIGxvY2F0aW9uPSIuXHNhbXBsZTY3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzdkZTA0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzAiIGxvY2F0aW9uPSJzYW1wbGUyMzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDMiIGxvY2F0aW9uPSIuL3NhbXBsZTcwMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMiIgbG9jYXRpb249Ii5cc2FtcGxlMTEyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGY4YjhmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDAiIGxvY2F0aW9uPSJzYW1wbGUyNDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTQiIGxvY2F0aW9uPSIuL3NhbXBsZTYxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIiBsb2NhdGlvbj0iLlxzYW1wbGUyMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTg1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNhYzRlOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMwIiBsb2NhdGlvbj0ic2FtcGxlNjMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcwIiBsb2NhdGlvbj0iLi9zYW1wbGU2NzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTkiIGxvY2F0aW9uPSIuXHNhbXBsZTMxOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNjODU5My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIxIiBsb2NhdGlvbj0ic2FtcGxlNTIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDczIiBsb2NhdGlvbj0iLi9zYW1wbGU0NzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzMiIGxvY2F0aW9uPSIuXHNhbXBsZTYzMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTg3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBjMmE2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ3IiBsb2NhdGlvbj0ic2FtcGxlNDQ3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAwIiBsb2NhdGlvbj0iLi9zYW1wbGUyMDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjIiIGxvY2F0aW9uPSIuXHNhbXBsZTI2Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTg4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBlMWU2Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM2IiBsb2NhdGlvbj0ic2FtcGxlNzM2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI3IiBsb2NhdGlvbj0iLi9zYW1wbGU4Mjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODQiIGxvY2F0aW9uPSIuXHNhbXBsZTc4NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZjMDg3OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAzIiBsb2NhdGlvbj0ic2FtcGxlNzAzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMyIiBsb2NhdGlvbj0iLi9zYW1wbGU0MzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjkiIGxvY2F0aW9uPSIuXHNhbXBsZTQyOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMzI3ODMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyOSIgbG9jYXRpb249InNhbXBsZTMyOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4OSIgbG9jYXRpb249Ii4vc2FtcGxlMjg5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM0IiBsb2NhdGlvbj0iLlxzYW1wbGUyMzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTkwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzEwYjE3ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAiIGxvY2F0aW9uPSJzYW1wbGU0MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MiIgbG9jYXRpb249Ii4vc2FtcGxlNjYyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMzIiBsb2NhdGlvbj0iLlxzYW1wbGUzMzMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0NjliZmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTkxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NSIgbG9jYXRpb249InNhbXBsZTM1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMCIgbG9jYXRpb249Ii4vc2FtcGxlMTEwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQzIiBsb2NhdGlvbj0iLlxzYW1wbGU5NDMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMjhkZTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIiBsb2NhdGlvbj0ic2FtcGxlNzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODgiIGxvY2F0aW9uPSIuL3NhbXBsZTg4OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NiIgbG9jYXRpb249Ii5cc2FtcGxlNjg2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWNlZTRlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTMiIGxvY2F0aW9uPSJzYW1wbGUzMTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDciIGxvY2F0aW9uPSIuL3NhbXBsZTQwNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNSIgbG9jYXRpb249Ii5cc2FtcGxlMTA1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2ViYWIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjYiIGxvY2F0aW9uPSJzYW1wbGU5NjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzYiIGxvY2F0aW9uPSIuL3NhbXBsZTkzNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMSIgbG9jYXRpb249Ii5cc2FtcGxlMjAxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDg0NDU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjIiIGxvY2F0aW9uPSJzYW1wbGUyMjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODkiIGxvY2F0aW9uPSIuL3NhbXBsZTY4OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMCIgbG9jYXRpb249Ii5cc2FtcGxlMTMwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmViZWFiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjkiIGxvY2F0aW9uPSJzYW1wbGU2Mjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTQiIGxvY2F0aW9uPSIuL3NhbXBsZTcxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OSIgbG9jYXRpb249Ii5cc2FtcGxlNDk5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTViNGVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzEiIGxvY2F0aW9uPSJzYW1wbGU5MzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzgiIGxvY2F0aW9uPSIuL3NhbXBsZTQzOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NSIgbG9jYXRpb249Ii5cc2FtcGxlOTg1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzQwZDQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODMiIGxvY2F0aW9uPSJzYW1wbGU0ODMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjQiIGxvY2F0aW9uPSIuL3NhbXBsZTYyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NyIgbG9jYXRpb249Ii5cc2FtcGxlNTY3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWRmNzVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU5OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzQiIGxvY2F0aW9uPSJzYW1wbGU3MzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NiIgbG9jYXRpb249Ii4vc2FtcGxlNzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzMiIGxvY2F0aW9uPSIuXHNhbXBsZTEzMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDRiZmMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDQiIGxvY2F0aW9uPSJzYW1wbGUzNDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDIiIGxvY2F0aW9uPSIuL3NhbXBsZTI0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MCIgbG9jYXRpb249Ii5cc2FtcGxlMzUwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MDViNDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNiIgbG9jYXRpb249InNhbXBsZTkxNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NyIgbG9jYXRpb249Ii4vc2FtcGxlMTg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE3IiBsb2NhdGlvbj0iLlxzYW1wbGUzMTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjAwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIzNjc1ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQyIiBsb2NhdGlvbj0ic2FtcGxlNjQyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUwIiBsb2NhdGlvbj0iLi9zYW1wbGU1NTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTAiIGxvY2F0aW9uPSIuXHNhbXBsZTkxMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTczNjU4OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkiIGxvY2F0aW9uPSJzYW1wbGU5OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MyIgbG9jYXRpb249Ii4vc2FtcGxlMzQzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQiIGxvY2F0aW9uPSIuXHNhbXBsZTg0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTc2Y2YxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzUiIGxvY2F0aW9uPSJzYW1wbGU0NzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzAiIGxvY2F0aW9uPSIuL3NhbXBsZTEzMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNCIgbG9jYXRpb249Ii5cc2FtcGxlMzA0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjkwNWZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODYiIGxvY2F0aW9uPSJzYW1wbGU1ODYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTUiIGxvY2F0aW9uPSIuL3NhbXBsZTk5NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1OCIgbG9jYXRpb249Ii5cc2FtcGxlMTU4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjYyYzJmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjUiIGxvY2F0aW9uPSJzYW1wbGUyNjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzMiIGxvY2F0aW9uPSIuL3NhbXBsZTg3My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NiIgbG9jYXRpb249Ii5cc2FtcGxlNDU2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTY2NjJiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjkiIGxvY2F0aW9uPSJzYW1wbGUxMjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTciIGxvY2F0aW9uPSIuL3NhbXBsZTU5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NSIgbG9jYXRpb249Ii5cc2FtcGxlNjg1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzU4ZDQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiIgbG9jYXRpb249InNhbXBsZTg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ5IiBsb2NhdGlvbj0iLi9zYW1wbGU3NDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDMiIGxvY2F0aW9uPSIuXHNhbXBsZTgwMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUwYTM0YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUxIiBsb2NhdGlvbj0ic2FtcGxlNzUxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiIGxvY2F0aW9uPSIuL3NhbXBsZTU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAiIGxvY2F0aW9uPSIuXHNhbXBsZTIwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDJkYmU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjMiIGxvY2F0aW9uPSJzYW1wbGU4NjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDAiIGxvY2F0aW9uPSIuL3NhbXBsZTgwMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMyIgbG9jYXRpb249Ii5cc2FtcGxlOTIzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTlkOTEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNCIgbG9jYXRpb249InNhbXBsZTE0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzczIiBsb2NhdGlvbj0iLi9zYW1wbGUzNzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyIgbG9jYXRpb249Ii5cc2FtcGxlNDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjk1ZGU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTYiIGxvY2F0aW9uPSJzYW1wbGU1NTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjkiIGxvY2F0aW9uPSIuL3NhbXBsZTI2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiIgbG9jYXRpb249Ii5cc2FtcGxlODMyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjEwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MGVkNDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjEwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIiBsb2NhdGlvbj0ic2FtcGxlNjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzQiIGxvY2F0aW9uPSIuL3NhbXBsZTM3NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NyIgbG9jYXRpb249Ii5cc2FtcGxlODU3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmUzYWJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjAiIGxvY2F0aW9uPSJzYW1wbGUxMjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDciIGxvY2F0aW9uPSIuL3NhbXBsZTk0Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIiBsb2NhdGlvbj0iLlxzYW1wbGUxMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJiYmJmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU4IiBsb2NhdGlvbj0ic2FtcGxlNDU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcwIiBsb2NhdGlvbj0iLi9zYW1wbGUxNzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjkiIGxvY2F0aW9uPSIuXHNhbXBsZTYyOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjEzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzljODVmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkyIiBsb2NhdGlvbj0ic2FtcGxlODkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUiIGxvY2F0aW9uPSIuL3NhbXBsZTg1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg2IiBsb2NhdGlvbj0iLlxzYW1wbGUxODYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YzJiZTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NSIgbG9jYXRpb249InNhbXBsZTM3NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2IiBsb2NhdGlvbj0iLi9zYW1wbGU2Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MSIgbG9jYXRpb249Ii5cc2FtcGxlNTQxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWVlZmQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiBsb2NhdGlvbj0ic2FtcGxlOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMiIgbG9jYXRpb249Ii4vc2FtcGxlODAyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUxIiBsb2NhdGlvbj0iLlxzYW1wbGU1NTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YzJiNWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjE2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3IiBsb2NhdGlvbj0ic2FtcGxlODcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzEiIGxvY2F0aW9uPSIuL3NhbXBsZTIzMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MyIgbG9jYXRpb249Ii5cc2FtcGxlMzYzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDY1MDgwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzEiIGxvY2F0aW9uPSJzYW1wbGU3MzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjgiIGxvY2F0aW9uPSIuL3NhbXBsZTQ2OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MCIgbG9jYXRpb249Ii5cc2FtcGxlNjUwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDUzZjQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyIgbG9jYXRpb249InNhbXBsZTMzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI2IiBsb2NhdGlvbj0iLi9zYW1wbGU1MjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgbG9jYXRpb249Ii5cc2FtcGxlMjQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYmYwZTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjE5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MSIgbG9jYXRpb249InNhbXBsZTM1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4OCIgbG9jYXRpb249Ii4vc2FtcGxlNTg4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkyIiBsb2NhdGlvbj0iLlxzYW1wbGU0OTIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTE0MWQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTEiIGxvY2F0aW9uPSJzYW1wbGUyOTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODkiIGxvY2F0aW9uPSIuL3NhbXBsZTQ4OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MyIgbG9jYXRpb249Ii5cc2FtcGxlOTkzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjIwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NmJkYmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjIwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MiIgbG9jYXRpb249InNhbXBsZTU5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NCIgbG9jYXRpb249Ii4vc2FtcGxlMzY0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA1IiBsb2NhdGlvbj0iLlxzYW1wbGUxMDUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ODQ2N2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiIGxvY2F0aW9uPSJzYW1wbGU2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSIgbG9jYXRpb249Ii4vc2FtcGxlMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MyIgbG9jYXRpb249Ii5cc2FtcGxlMTgzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGRkMDA5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzQiIGxvY2F0aW9uPSJzYW1wbGU0NzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjUiIGxvY2F0aW9uPSIuL3NhbXBsZTMyNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMiIgbG9jYXRpb249Ii5cc2FtcGxlMzIyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzA0ZWNmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODMiIGxvY2F0aW9uPSJzYW1wbGU3ODMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTQiIGxvY2F0aW9uPSIuL3NhbXBsZTE5NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNSIgbG9jYXRpb249Ii5cc2FtcGxlNjM1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGMyMzE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzUiIGxvY2F0aW9uPSJzYW1wbGUyMzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTciIGxvY2F0aW9uPSIuL3NhbXBsZTM5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NCIgbG9jYXRpb249Ii5cc2FtcGxlNjU0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGU3NmQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTYiIGxvY2F0aW9uPSJzYW1wbGUyMTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTUiIGxvY2F0aW9uPSIuL3NhbXBsZTQxNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIiBsb2NhdGlvbj0iLlxzYW1wbGU2Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE4NzhlZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg3IiBsb2NhdGlvbj0ic2FtcGxlNjg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiIGxvY2F0aW9uPSIuL3NhbXBsZTcwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEiIGxvY2F0aW9uPSIuXHNhbXBsZTIxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGQzNGUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODgiIGxvY2F0aW9uPSJzYW1wbGU2ODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTciIGxvY2F0aW9uPSIuL3NhbXBsZTUxNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyOSIgbG9jYXRpb249Ii5cc2FtcGxlNTI5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Mjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGFjMWM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDEiIGxvY2F0aW9uPSJzYW1wbGU5NDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDIiIGxvY2F0aW9uPSIuL3NhbXBsZTk0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOSIgbG9jYXRpb249Ii5cc2FtcGxlNjI5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Mjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTRhYThkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjYiIGxvY2F0aW9uPSJzYW1wbGU1NjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTciIGxvY2F0aW9uPSIuL3NhbXBsZTcxNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MiIgbG9jYXRpb249Ii5cc2FtcGxlODQyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA3YzUwOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE5IiBsb2NhdGlvbj0ic2FtcGxlMTE5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU0IiBsb2NhdGlvbj0iLi9zYW1wbGU2NTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzQiIGxvY2F0aW9uPSIuXHNhbXBsZTMzNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzQ0NTIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTAiIGxvY2F0aW9uPSJzYW1wbGUyOTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOSIgbG9jYXRpb249Ii4vc2FtcGxlMzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjciIGxvY2F0aW9uPSIuXHNhbXBsZTY2Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUyN2VmNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQiIGxvY2F0aW9uPSJzYW1wbGUxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MiIgbG9jYXRpb249Ii4vc2FtcGxlNjgyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA1IiBsb2NhdGlvbj0iLlxzYW1wbGU1MDUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OTcwOWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOSIgbG9jYXRpb249InNhbXBsZTUwOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MyIgbG9jYXRpb249Ii4vc2FtcGxlNTgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkxIiBsb2NhdGlvbj0iLlxzYW1wbGUxOTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYjU1ZDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NCIgbG9jYXRpb249InNhbXBsZTM1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MiIgbG9jYXRpb249Ii4vc2FtcGxlOTcyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUxIiBsb2NhdGlvbj0iLlxzYW1wbGU1NTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NTAwNWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjM0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MCIgbG9jYXRpb249InNhbXBsZTQ3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiIgbG9jYXRpb249Ii4vc2FtcGxlOTg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3IiBsb2NhdGlvbj0iLlxzYW1wbGU4ODcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmY2VjM2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMCIgbG9jYXRpb249InNhbXBsZTcxMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NCIgbG9jYXRpb249Ii4vc2FtcGxlMzY0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUiIGxvY2F0aW9uPSIuXHNhbXBsZTg1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2MzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjM2ZmQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODQiIGxvY2F0aW9uPSJzYW1wbGUyODQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzkiIGxvY2F0aW9uPSIuL3NhbXBsZTk3OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OCIgbG9jYXRpb249Ii5cc2FtcGxlNzQ4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Mzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2UxYzE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTMiIGxvY2F0aW9uPSJzYW1wbGU1MTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTMiIGxvY2F0aW9uPSIuL3NhbXBsZTk1My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MCIgbG9jYXRpb249Ii5cc2FtcGxlOTQwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Mzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjgyYzFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjYiIGxvY2F0aW9uPSJzYW1wbGUzNjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDciIGxvY2F0aW9uPSIuL3NhbXBsZTEwNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwOSIgbG9jYXRpb249Ii5cc2FtcGxlODA5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Mzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDZjNTdjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTYiIGxvY2F0aW9uPSJzYW1wbGU2OTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDYiIGxvY2F0aW9uPSIuL3NhbXBsZTMwNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5IiBsb2NhdGlvbj0iLlxzYW1wbGU0OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkOWI4YTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgbG9jYXRpb249InNhbXBsZTQ5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MiIgbG9jYXRpb249Ii4vc2FtcGxlNTkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU4IiBsb2NhdGlvbj0iLlxzYW1wbGU2NTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjQwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FmNjIwNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM0IiBsb2NhdGlvbj0ic2FtcGxlODM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ5IiBsb2NhdGlvbj0iLi9zYW1wbGU3NDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzciIGxvY2F0aW9uPSIuXHNhbXBsZTEzNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjQxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI4ZTViZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMxIiBsb2NhdGlvbj0ic2FtcGxlMTMxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMwIiBsb2NhdGlvbj0iLi9zYW1wbGU3MzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NCIgbG9jYXRpb249Ii5cc2FtcGxlNDQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3YjA0ZmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjQyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OCIgbG9jYXRpb249InNhbXBsZTc0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNCIgbG9jYXRpb249Ii4vc2FtcGxlODM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiIGxvY2F0aW9uPSIuXHNhbXBsZTI2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTNlMWIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjkiIGxvY2F0aW9uPSJzYW1wbGU4Njkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjYiIGxvY2F0aW9uPSIuL3NhbXBsZTcyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MyIgbG9jYXRpb249Ii5cc2FtcGxlNzczLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzQ5OTA1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjciIGxvY2F0aW9uPSJzYW1wbGU2Njcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzEiIGxvY2F0aW9uPSIuL3NhbXBsZTQ3MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OSIgbG9jYXRpb249Ii5cc2FtcGxlMTg5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTE3MTc1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTciIGxvY2F0aW9uPSJzYW1wbGUxNTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTYiIGxvY2F0aW9uPSIuL3NhbXBsZTY1Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4OSIgbG9jYXRpb249Ii5cc2FtcGxlNTg5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWYyYzY3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjgiIGxvY2F0aW9uPSJzYW1wbGU4Mjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTkiIGxvY2F0aW9uPSIuL3NhbXBsZTExOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMiIgbG9jYXRpb249Ii5cc2FtcGxlOTAyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDA2ZDY1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjUiIGxvY2F0aW9uPSJzYW1wbGUxNjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjYiIGxvY2F0aW9uPSIuL3NhbXBsZTEyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MCIgbG9jYXRpb249Ii5cc2FtcGxlNDQwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWMzNGNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTYiIGxvY2F0aW9uPSJzYW1wbGU4OTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTEiIGxvY2F0aW9uPSIuL3NhbXBsZTI1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OSIgbG9jYXRpb249Ii5cc2FtcGxlODk5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2EyYjY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NCIgbG9jYXRpb249InNhbXBsZTQ0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI0IiBsb2NhdGlvbj0iLi9zYW1wbGU1MjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTAiIGxvY2F0aW9uPSIuXHNhbXBsZTQxMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZTkzMzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MCIgbG9jYXRpb249InNhbXBsZTM0MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNiIgbG9jYXRpb249Ii4vc2FtcGxlNjE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYyIiBsb2NhdGlvbj0iLlxzYW1wbGU0NjIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJlMWEyYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIxIiBsb2NhdGlvbj0ic2FtcGxlOTIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiIGxvY2F0aW9uPSIuL3NhbXBsZTI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTczIiBsb2NhdGlvbj0iLlxzYW1wbGU5NzMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjUxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNDQ2ODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNyIgbG9jYXRpb249InNhbXBsZTMxNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzOCIgbG9jYXRpb249Ii4vc2FtcGxlMTM4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM4IiBsb2NhdGlvbj0iLlxzYW1wbGUzMzgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YTM1M2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMiIgbG9jYXRpb249InNhbXBsZTkxMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNCIgbG9jYXRpb249Ii4vc2FtcGxlMTI0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDciIGxvY2F0aW9uPSIuXHNhbXBsZTQ3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY1My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGNkYzljLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTIiIGxvY2F0aW9uPSJzYW1wbGU0NTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTUiIGxvY2F0aW9uPSIuL3NhbXBsZTE5NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NyIgbG9jYXRpb249Ii5cc2FtcGxlNzQ3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzY1M2EzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNyIgbG9jYXRpb249InNhbXBsZTE3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI4IiBsb2NhdGlvbj0iLi9zYW1wbGU2Mjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjciIGxvY2F0aW9uPSIuXHNhbXBsZTgyNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjU1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZjZmM2NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgxIiBsb2NhdGlvbj0ic2FtcGxlODgxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkxIiBsb2NhdGlvbj0iLi9zYW1wbGUxOTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDEiIGxvY2F0aW9uPSIuXHNhbXBsZTQ0MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJmMTlkNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc3IiBsb2NhdGlvbj0ic2FtcGxlMTc3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU0IiBsb2NhdGlvbj0iLi9zYW1wbGUyNTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjEiIGxvY2F0aW9uPSIuXHNhbXBsZTE2MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThjYmExZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY4IiBsb2NhdGlvbj0ic2FtcGxlNjY4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTciIGxvY2F0aW9uPSIuL3NhbXBsZTU3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU3IiBsb2NhdGlvbj0iLlxzYW1wbGU3NTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YjA0Y2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOCIgbG9jYXRpb249InNhbXBsZTQwOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNiIgbG9jYXRpb249Ii4vc2FtcGxlOTI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkwIiBsb2NhdGlvbj0iLlxzYW1wbGU3OTAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjU5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMGVkMDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjU5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MSIgbG9jYXRpb249InNhbXBsZTQ0MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNiIgbG9jYXRpb249Ii4vc2FtcGxlMjE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU0IiBsb2NhdGlvbj0iLlxzYW1wbGUzNTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDBjYzU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTMiIGxvY2F0aW9uPSJzYW1wbGUxNTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDYiIGxvY2F0aW9uPSIuL3NhbXBsZTQ0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNSIgbG9jYXRpb249Ii5cc2FtcGxlNDM1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYzFiY2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NyIgbG9jYXRpb249InNhbXBsZTE1Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NCIgbG9jYXRpb249Ii4vc2FtcGxlODg0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM1IiBsb2NhdGlvbj0iLlxzYW1wbGU0MzUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1YjFjODcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMCIgbG9jYXRpb249InNhbXBsZTgxMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4OCIgbG9jYXRpb249Ii4vc2FtcGxlNTg4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU4IiBsb2NhdGlvbj0iLlxzYW1wbGU0NTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMTJhMWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NCIgbG9jYXRpb249InNhbXBsZTE1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNiIgbG9jYXRpb249Ii4vc2FtcGxlMTI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTExIiBsb2NhdGlvbj0iLlxzYW1wbGU1MTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYmRjY2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4OSIgbG9jYXRpb249InNhbXBsZTU4OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1OSIgbG9jYXRpb249Ii4vc2FtcGxlNDU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc5IiBsb2NhdGlvbj0iLlxzYW1wbGU0Nzkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjY0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3Nzc5ZDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNSIgbG9jYXRpb249InNhbXBsZTUzNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzOCIgbG9jYXRpb249Ii4vc2FtcGxlOTM4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIyIiBsb2NhdGlvbj0iLlxzYW1wbGUzMjIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyODM2NmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjY1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyIgbG9jYXRpb249InNhbXBsZTI3My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1IiBsb2NhdGlvbj0iLi9zYW1wbGU1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOCIgbG9jYXRpb249Ii5cc2FtcGxlNDA4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzMwODU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzciIGxvY2F0aW9uPSJzYW1wbGU0Nzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDciIGxvY2F0aW9uPSIuL3NhbXBsZTI0Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwOCIgbG9jYXRpb249Ii5cc2FtcGxlMTA4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Njcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTg5ZmEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NSIgbG9jYXRpb249InNhbXBsZTY1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIiBsb2NhdGlvbj0iLi9zYW1wbGUyODEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTYiIGxvY2F0aW9uPSIuXHNhbXBsZTg1Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjY4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Njgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRhZGM2My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Njgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg4IiBsb2NhdGlvbj0ic2FtcGxlMjg4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMyIiBsb2NhdGlvbj0iLi9zYW1wbGU4MzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODYiIGxvY2F0aW9uPSIuXHNhbXBsZTM4Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Njkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY3MWE0My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Njkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU1IiBsb2NhdGlvbj0ic2FtcGxlMjU1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI0IiBsb2NhdGlvbj0iLi9zYW1wbGU1MjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIiBsb2NhdGlvbj0iLlxzYW1wbGUyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU2Y2ZkYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc2IiBsb2NhdGlvbj0ic2FtcGxlMzc2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgwIiBsb2NhdGlvbj0iLi9zYW1wbGU3ODAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTEiIGxvY2F0aW9uPSIuXHNhbXBsZTU5MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDExYTIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTUiIGxvY2F0aW9uPSJzYW1wbGU3MTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4IiBsb2NhdGlvbj0iLi9zYW1wbGU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMyIiBsb2NhdGlvbj0iLlxzYW1wbGUyMzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMzYwNGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NiIgbG9jYXRpb249InNhbXBsZTk0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNCIgbG9jYXRpb249Ii4vc2FtcGxlNzE0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA2IiBsb2NhdGlvbj0iLlxzYW1wbGU4MDYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjcyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZTY1OTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjcyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyOCIgbG9jYXRpb249InNhbXBsZTkyOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NSIgbG9jYXRpb249Ii4vc2FtcGxlNDQ1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM1IiBsb2NhdGlvbj0iLlxzYW1wbGU5MzUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNWQyNjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjczLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjczIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyIiBsb2NhdGlvbj0ic2FtcGxlNDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzIiIGxvY2F0aW9uPSIuL3NhbXBsZTM3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NCIgbG9jYXRpb249Ii5cc2FtcGxlNjQ0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTU3ZjU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjEiIGxvY2F0aW9uPSJzYW1wbGU3MjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjIiIGxvY2F0aW9uPSIuL3NhbXBsZTY2Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4OCIgbG9jYXRpb249Ii5cc2FtcGxlNzg4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWIxMWMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTEiIGxvY2F0aW9uPSJzYW1wbGU1OTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjkiIGxvY2F0aW9uPSIuL3NhbXBsZTYyOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyIiBsb2NhdGlvbj0iLlxzYW1wbGUzMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjc2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1NzIxZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgiIGxvY2F0aW9uPSJzYW1wbGU3OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiIGxvY2F0aW9uPSIuL3NhbXBsZTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTIiIGxvY2F0aW9uPSIuXHNhbXBsZTg5Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Nzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZiNjM5OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Nzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMwIiBsb2NhdGlvbj0ic2FtcGxlMTMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkwIiBsb2NhdGlvbj0iLi9zYW1wbGUxOTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODciIGxvY2F0aW9uPSIuXHNhbXBsZTc4Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI2MjkyMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk1IiBsb2NhdGlvbj0ic2FtcGxlMjk1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUwIiBsb2NhdGlvbj0iLi9zYW1wbGU5NTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzIiIGxvY2F0aW9uPSIuXHNhbXBsZTg3Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjc5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Nzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM1YjVlMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Nzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYzIiBsb2NhdGlvbj0ic2FtcGxlOTYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAyIiBsb2NhdGlvbj0iLi9zYW1wbGU0MDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDIiIGxvY2F0aW9uPSIuXHNhbXBsZTcwMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZGEwMzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNiIgbG9jYXRpb249InNhbXBsZTMzNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNyIgbG9jYXRpb249Ii4vc2FtcGxlNDI3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMxIiBsb2NhdGlvbj0iLlxzYW1wbGU3MzEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JiNTc1OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA1IiBsb2NhdGlvbj0ic2FtcGxlNDA1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIiIGxvY2F0aW9uPSIuL3NhbXBsZTUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiIGxvY2F0aW9uPSIuXHNhbXBsZTkwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGI5ZWYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjEiIGxvY2F0aW9uPSJzYW1wbGUzNjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTIiIGxvY2F0aW9uPSIuL3NhbXBsZTc1Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNSIgbG9jYXRpb249Ii5cc2FtcGxlNTA1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGE1YTI4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTIiIGxvY2F0aW9uPSJzYW1wbGU2OTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjIiIGxvY2F0aW9uPSIuL3NhbXBsZTM2Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOCIgbG9jYXRpb249Ii5cc2FtcGxlNjI4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmYxN2Y4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjgiIGxvY2F0aW9uPSJzYW1wbGU1Mjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzIiIGxvY2F0aW9uPSIuL3NhbXBsZTk3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNyIgbG9jYXRpb249Ii5cc2FtcGxlNjI3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWEzZDgxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODQiIGxvY2F0aW9uPSJzYW1wbGU0ODQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjQiIGxvY2F0aW9uPSIuL3NhbXBsZTkyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNyIgbG9jYXRpb249Ii5cc2FtcGxlNTI3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWE0ZTZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDciIGxvY2F0aW9uPSJzYW1wbGUyMDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjYiIGxvY2F0aW9uPSIuL3NhbXBsZTEyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NCIgbG9jYXRpb249Ii5cc2FtcGxlNjU0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzQ0ODA4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzMiIGxvY2F0aW9uPSJzYW1wbGUxMzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzYiIGxvY2F0aW9uPSIuL3NhbXBsZTYzNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNyIgbG9jYXRpb249Ii5cc2FtcGxlMjM3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTMyNjdmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjYiIGxvY2F0aW9uPSJzYW1wbGU1NjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTQiIGxvY2F0aW9uPSIuL3NhbXBsZTYxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMSIgbG9jYXRpb249Ii5cc2FtcGxlNjMxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDJmNDNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTMiIGxvY2F0aW9uPSJzYW1wbGU5NTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjQiIGxvY2F0aW9uPSIuL3NhbXBsZTIyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NiIgbG9jYXRpb249Ii5cc2FtcGxlOTc2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2ODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGM2NzhhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTgiIGxvY2F0aW9uPSJzYW1wbGU4MTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTciIGxvY2F0aW9uPSIuL3NhbXBsZTU1Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MiIgbG9jYXRpb249Ii5cc2FtcGxlNDQyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM0Y2VlZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAxIiBsb2NhdGlvbj0ic2FtcGxlMzAxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDExIiBsb2NhdGlvbj0iLi9zYW1wbGU0MTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjAiIGxvY2F0aW9uPSIuXHNhbXBsZTUyMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2OTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjA5MTNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MiIgbG9jYXRpb249InNhbXBsZTgyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYwIiBsb2NhdGlvbj0iLi9zYW1wbGU1NjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDUiIGxvY2F0aW9uPSIuXHNhbXBsZTQ0NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2OTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRiODA2OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgyIiBsb2NhdGlvbj0ic2FtcGxlMjgyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg4IiBsb2NhdGlvbj0iLi9zYW1wbGUyODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTAiIGxvY2F0aW9uPSIuXHNhbXBsZTQ1MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2OTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRiYWMwNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2OTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE0IiBsb2NhdGlvbj0ic2FtcGxlMTE0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIGxvY2F0aW9uPSIuL3NhbXBsZTY4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMyIiBsb2NhdGlvbj0iLlxzYW1wbGU1MzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlOWY1Y2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNCIgbG9jYXRpb249InNhbXBsZTMxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiBsb2NhdGlvbj0iLi9zYW1wbGU0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiIGxvY2F0aW9uPSIuXHNhbXBsZTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMDczY2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNSIgbG9jYXRpb249InNhbXBsZTkyNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MiIgbG9jYXRpb249Ii4vc2FtcGxlNTcyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ3IiBsb2NhdGlvbj0iLlxzYW1wbGU5NDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMTFkNTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNCIgbG9jYXRpb249InNhbXBsZTYzNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOSIgbG9jYXRpb249Ii4vc2FtcGxlMzE5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgwIiBsb2NhdGlvbj0iLlxzYW1wbGU1ODAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NThiYTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NyIgbG9jYXRpb249InNhbXBsZTI5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MSIgbG9jYXRpb249Ii4vc2FtcGxlNDUxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3IiBsb2NhdGlvbj0iLlxzYW1wbGU4ODcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MjU5NzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3OCIgbG9jYXRpb249InNhbXBsZTU3OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3OSIgbG9jYXRpb249Ii4vc2FtcGxlMjc5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY1IiBsb2NhdGlvbj0iLlxzYW1wbGUxNjUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZjVkNmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNCIgbG9jYXRpb249InNhbXBsZTQyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1OCIgbG9jYXRpb249Ii4vc2FtcGxlMjU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcxIiBsb2NhdGlvbj0iLlxzYW1wbGUzNzEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNmIxMGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MiIgbG9jYXRpb249InNhbXBsZTI5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OSIgbG9jYXRpb249Ii4vc2FtcGxlNTU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ0IiBsb2NhdGlvbj0iLlxzYW1wbGU1NDQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAxOGRkYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3IiBsb2NhdGlvbj0ic2FtcGxlODg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIzIiBsb2NhdGlvbj0iLi9zYW1wbGUzMjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTkiIGxvY2F0aW9uPSIuXHNhbXBsZTQ5OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTYyN2U4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDciIGxvY2F0aW9uPSJzYW1wbGU1NDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODIiIGxvY2F0aW9uPSIuL3NhbXBsZTU4Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3OCIgbG9jYXRpb249Ii5cc2FtcGxlNjc4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMmNjNTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NyIgbG9jYXRpb249InNhbXBsZTQ2Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NiIgbG9jYXRpb249Ii4vc2FtcGxlMjU2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgzIiBsb2NhdGlvbj0iLlxzYW1wbGUxODMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZjIwOTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MyIgbG9jYXRpb249InNhbXBsZTU5My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMSIgbG9jYXRpb249Ii4vc2FtcGxlMTIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY3IiBsb2NhdGlvbj0iLlxzYW1wbGU1Njcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNTc1NjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3OCIgbG9jYXRpb249InNhbXBsZTE3OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NSIgbG9jYXRpb249Ii4vc2FtcGxlMjg1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAyIiBsb2NhdGlvbj0iLlxzYW1wbGU0MDIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZTQ1MzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NSIgbG9jYXRpb249InNhbXBsZTg1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyOSIgbG9jYXRpb249Ii4vc2FtcGxlODI5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ1IiBsb2NhdGlvbj0iLlxzYW1wbGU5NDUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzA0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMGRiZTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzA0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIiBsb2NhdGlvbj0ic2FtcGxlNjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzciIGxvY2F0aW9uPSIuL3NhbXBsZTM3Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MSIgbG9jYXRpb249Ii5cc2FtcGxlMzUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDA3ZWU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDEiIGxvY2F0aW9uPSJzYW1wbGU0NDEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzIiIGxvY2F0aW9uPSIuL3NhbXBsZTUzMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyOSIgbG9jYXRpb249Ii5cc2FtcGxlOTI5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjI5YWJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDIiIGxvY2F0aW9uPSJzYW1wbGUzMDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTgiIGxvY2F0aW9uPSIuL3NhbXBsZTYxOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MiIgbG9jYXRpb249Ii5cc2FtcGxlODgyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWUxMjFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzQiIGxvY2F0aW9uPSJzYW1wbGU2NzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzQiIGxvY2F0aW9uPSIuL3NhbXBsZTk3NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MCIgbG9jYXRpb249Ii5cc2FtcGxlOTQwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGYyM2MzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDkiIGxvY2F0aW9uPSJzYW1wbGU2NDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTUiIGxvY2F0aW9uPSIuL3NhbXBsZTYxNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NiIgbG9jYXRpb249Ii5cc2FtcGxlNzY2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzM1Mjg4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzUiIGxvY2F0aW9uPSJzYW1wbGUxNzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzkiIGxvY2F0aW9uPSIuL3NhbXBsZTY3OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNSIgbG9jYXRpb249Ii5cc2FtcGxlNjM1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVmZDJlMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY1IiBsb2NhdGlvbj0ic2FtcGxlMzY1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM0IiBsb2NhdGlvbj0iLi9zYW1wbGUzMzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDEiIGxvY2F0aW9uPSIuXHNhbXBsZTUwMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjQ0YTI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjAiIGxvY2F0aW9uPSJzYW1wbGUxNjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDkiIGxvY2F0aW9uPSIuL3NhbXBsZTcwOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NSIgbG9jYXRpb249Ii5cc2FtcGxlNzY1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTI5N2IwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODIiIGxvY2F0aW9uPSJzYW1wbGUyODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDUiIGxvY2F0aW9uPSIuL3NhbXBsZTgwNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNyIgbG9jYXRpb249Ii5cc2FtcGxlMTE3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGZiMzg5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTkiIGxvY2F0aW9uPSJzYW1wbGU0NTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODkiIGxvY2F0aW9uPSIuL3NhbXBsZTY4OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NyIgbG9jYXRpb249Ii5cc2FtcGxlMzQ3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODNhNTNmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjQiIGxvY2F0aW9uPSJzYW1wbGU4NjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTYiIGxvY2F0aW9uPSIuL3NhbXBsZTU5Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMiIgbG9jYXRpb249Ii5cc2FtcGxlNzEyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODQ3ZjMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTMiIGxvY2F0aW9uPSJzYW1wbGU2NTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzIiIGxvY2F0aW9uPSIuL3NhbXBsZTk3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMSIgbG9jYXRpb249Ii5cc2FtcGxlMzIxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmU5ZDcxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTIiIGxvY2F0aW9uPSJzYW1wbGU3NTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzciIGxvY2F0aW9uPSIuL3NhbXBsZTY3Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMiIgbG9jYXRpb249Ii5cc2FtcGxlNTAyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTYzMjJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTYiIGxvY2F0aW9uPSJzYW1wbGUxOTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzAiIGxvY2F0aW9uPSIuL3NhbXBsZTQzMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NCIgbG9jYXRpb249Ii5cc2FtcGxlMTQ0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTExYTFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODgiIGxvY2F0aW9uPSJzYW1wbGUzODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzUiIGxvY2F0aW9uPSIuL3NhbXBsZTQzNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiBsb2NhdGlvbj0iLlxzYW1wbGU2My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM5Yjg3NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU4IiBsb2NhdGlvbj0ic2FtcGxlMTU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYxIiBsb2NhdGlvbj0iLi9zYW1wbGU1NjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTkiIGxvY2F0aW9uPSIuXHNhbXBsZTU5OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAxZGZkOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY3IiBsb2NhdGlvbj0ic2FtcGxlNzY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ4IiBsb2NhdGlvbj0iLi9zYW1wbGU3NDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODkiIGxvY2F0aW9uPSIuXHNhbXBsZTI4OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MTRhYTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2OSIgbG9jYXRpb249InNhbXBsZTM2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNSIgbG9jYXRpb249Ii4vc2FtcGxlODM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkzIiBsb2NhdGlvbj0iLlxzYW1wbGU1OTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMyZDQ5NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI1IiBsb2NhdGlvbj0ic2FtcGxlNDI1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM4IiBsb2NhdGlvbj0iLi9zYW1wbGU3Mzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTIiIGxvY2F0aW9uPSIuXHNhbXBsZTExMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzIxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEyNGY3Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkyIiBsb2NhdGlvbj0ic2FtcGxlNjkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY4IiBsb2NhdGlvbj0iLi9zYW1wbGUzNjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzEiIGxvY2F0aW9uPSIuXHNhbXBsZTU3MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzIyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE0YmE0Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MjIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkiIGxvY2F0aW9uPSJzYW1wbGU0OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MiIgbG9jYXRpb249Ii4vc2FtcGxlNDcyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTciIGxvY2F0aW9uPSIuXHNhbXBsZTU3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTBiMWQ1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIiBsb2NhdGlvbj0ic2FtcGxlMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NiIgbG9jYXRpb249Ii4vc2FtcGxlNjk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM4IiBsb2NhdGlvbj0iLlxzYW1wbGU2Mzgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZDhiYmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MyIgbG9jYXRpb249InNhbXBsZTE2My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MCIgbG9jYXRpb249Ii4vc2FtcGxlNDQwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE0IiBsb2NhdGlvbj0iLlxzYW1wbGU0MTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmODQ2YWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NSIgbG9jYXRpb249InNhbXBsZTM3NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOSIgbG9jYXRpb249Ii4vc2FtcGxlOTA5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg3IiBsb2NhdGlvbj0iLlxzYW1wbGUyODcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MTM2MWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNiIgbG9jYXRpb249InNhbXBsZTcxNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MCIgbG9jYXRpb249Ii4vc2FtcGxlMjQwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc5IiBsb2NhdGlvbj0iLlxzYW1wbGU2Nzkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiODgzZGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNSIgbG9jYXRpb249InNhbXBsZTkyNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NSIgbG9jYXRpb249Ii4vc2FtcGxlODY1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk2IiBsb2NhdGlvbj0iLlxzYW1wbGU4OTYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYjBhMzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNiIgbG9jYXRpb249InNhbXBsZTgyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOSIgbG9jYXRpb249Ii4vc2FtcGxlNjM5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIwIiBsb2NhdGlvbj0iLlxzYW1wbGUyMjAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0Yjc3MGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzI5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiIgbG9jYXRpb249InNhbXBsZTk4Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MSIgbG9jYXRpb249Ii4vc2FtcGxlNzgxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSIgbG9jYXRpb249Ii5cc2FtcGxlMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZmI2ZDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5IiBsb2NhdGlvbj0ic2FtcGxlODkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTQiIGxvY2F0aW9uPSIuL3NhbXBsZTg1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNCIgbG9jYXRpb249Ii5cc2FtcGxlNDA0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZGNiZjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NiIgbG9jYXRpb249InNhbXBsZTY0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4OSIgbG9jYXRpb249Ii4vc2FtcGxlOTg5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg1IiBsb2NhdGlvbj0iLlxzYW1wbGUyODUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzMxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NjczNzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzMxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MSIgbG9jYXRpb249InNhbXBsZTY5MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MiIgbG9jYXRpb249Ii4vc2FtcGxlMjgyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE3IiBsb2NhdGlvbj0iLlxzYW1wbGUyMTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzY2ZlYjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3IiBsb2NhdGlvbj0ic2FtcGxlNDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjgiIGxvY2F0aW9uPSIuL3NhbXBsZTkyOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNCIgbG9jYXRpb249Ii5cc2FtcGxlNTI0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmE5NmQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzMiIGxvY2F0aW9uPSJzYW1wbGUxNzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjUiIGxvY2F0aW9uPSIuL3NhbXBsZTEyNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOCIgbG9jYXRpb249Ii5cc2FtcGxlNDA4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjU0NGM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODQiIGxvY2F0aW9uPSJzYW1wbGU2ODQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTIiIGxvY2F0aW9uPSIuL3NhbXBsZTI5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OCIgbG9jYXRpb249Ii5cc2FtcGxlNzQ4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjI2MzVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OSIgbG9jYXRpb249InNhbXBsZTY5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE0IiBsb2NhdGlvbj0iLi9zYW1wbGU0MTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDEiIGxvY2F0aW9uPSIuXHNhbXBsZTkwMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzM2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE3NjY3My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3MzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk4IiBsb2NhdGlvbj0ic2FtcGxlMzk4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc1IiBsb2NhdGlvbj0iLi9zYW1wbGU0NzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTEiIGxvY2F0aW9uPSIuXHNhbXBsZTM1MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Mzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWExY2UyZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Mzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY1IiBsb2NhdGlvbj0ic2FtcGxlODY1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc2IiBsb2NhdGlvbj0iLi9zYW1wbGU1NzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDUiIGxvY2F0aW9uPSIuXHNhbXBsZTE0NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzM4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Mzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ5MTY4OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Mzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAxIiBsb2NhdGlvbj0ic2FtcGxlOTAxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYwIiBsb2NhdGlvbj0iLi9zYW1wbGU1NjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDYiIGxvY2F0aW9uPSIuXHNhbXBsZTEwNi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzM5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Mzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFmYWYzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Mzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU2IiBsb2NhdGlvbj0ic2FtcGxlMTU2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYzIiBsb2NhdGlvbj0iLi9zYW1wbGU3NjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTIiIGxvY2F0aW9uPSIuXHNhbXBsZTY5Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNGNlMmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NiIgbG9jYXRpb249InNhbXBsZTI4Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNCIgbG9jYXRpb249Ii4vc2FtcGxlNDM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMwIiBsb2NhdGlvbj0iLlxzYW1wbGU5MzAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEyNmI5My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIyIiBsb2NhdGlvbj0ic2FtcGxlNDIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiIGxvY2F0aW9uPSIuL3NhbXBsZTU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA4IiBsb2NhdGlvbj0iLlxzYW1wbGU4MDgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMDYxZTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NSIgbG9jYXRpb249InNhbXBsZTU3NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMyIgbG9jYXRpb249Ii4vc2FtcGxlMTAzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQzIiBsb2NhdGlvbj0iLlxzYW1wbGU2NDMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiY2E5NDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MyIgbG9jYXRpb249InNhbXBsZTI0My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMSIgbG9jYXRpb249Ii4vc2FtcGxlOTIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE1IiBsb2NhdGlvbj0iLlxzYW1wbGU0MTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhYjRkMDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMCIgbG9jYXRpb249InNhbXBsZTEwMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NSIgbG9jYXRpb249Ii4vc2FtcGxlMzY1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkzIiBsb2NhdGlvbj0iLlxzYW1wbGU5OTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMWRmOGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NSIgbG9jYXRpb249InNhbXBsZTc2NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNiIgbG9jYXRpb249Ii4vc2FtcGxlMzI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUxIiBsb2NhdGlvbj0iLlxzYW1wbGU4NTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyZjc4NWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2OCIgbG9jYXRpb249InNhbXBsZTg2OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NiIgbG9jYXRpb249Ii4vc2FtcGxlOTQ2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQzIiBsb2NhdGlvbj0iLlxzYW1wbGUyNDMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkYTI4NzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNyIgbG9jYXRpb249InNhbXBsZTMyNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNiIgbG9jYXRpb249Ii4vc2FtcGxlMjM2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk0IiBsb2NhdGlvbj0iLlxzYW1wbGU2OTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MTFhNDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyIiBsb2NhdGlvbj0ic2FtcGxlNzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODYiIGxvY2F0aW9uPSIuL3NhbXBsZTE4Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4IiBsb2NhdGlvbj0iLlxzYW1wbGU0OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYyM2UyNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMyIiBsb2NhdGlvbj0ic2FtcGxlMzMyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU0IiBsb2NhdGlvbj0iLi9zYW1wbGUyNTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODgiIGxvY2F0aW9uPSIuXHNhbXBsZTY4OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZkZTJhZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY1IiBsb2NhdGlvbj0ic2FtcGxlNDY1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc5IiBsb2NhdGlvbj0iLi9zYW1wbGUyNzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OSIgbG9jYXRpb249Ii5cc2FtcGxlNTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODcwZGZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODYiIGxvY2F0aW9uPSJzYW1wbGU4ODYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTgiIGxvY2F0aW9uPSIuL3NhbXBsZTg1OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2OSIgbG9jYXRpb249Ii5cc2FtcGxlOTY5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YjEzNDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NSIgbG9jYXRpb249InNhbXBsZTY1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiBsb2NhdGlvbj0iLi9zYW1wbGU0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMSIgbG9jYXRpb249Ii5cc2FtcGxlNjMxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjQ1MDI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTgiIGxvY2F0aW9uPSJzYW1wbGU1MTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzMiIGxvY2F0aW9uPSIuL3NhbXBsZTM3My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMyIgbG9jYXRpb249Ii5cc2FtcGxlODAzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmE4MTIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTkiIGxvY2F0aW9uPSJzYW1wbGU2OTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDciIGxvY2F0aW9uPSIuL3NhbXBsZTg0Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1OCIgbG9jYXRpb249Ii5cc2FtcGxlOTU4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWZmYmMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzkiIGxvY2F0aW9uPSJzYW1wbGU2Mzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTIiIGxvY2F0aW9uPSIuL3NhbXBsZTg5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MiIgbG9jYXRpb249Ii5cc2FtcGxlODUyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTY4ZmVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSIgbG9jYXRpb249InNhbXBsZTMxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI0IiBsb2NhdGlvbj0iLi9zYW1wbGU0MjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjQiIGxvY2F0aW9uPSIuXHNhbXBsZTU2NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzU1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFlMTM1Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY4IiBsb2NhdGlvbj0ic2FtcGxlOTY4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM4IiBsb2NhdGlvbj0iLi9zYW1wbGU5Mzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDAiIGxvY2F0aW9uPSIuXHNhbXBsZTU0MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0YWIwMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM0IiBsb2NhdGlvbj0ic2FtcGxlMjM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEiIGxvY2F0aW9uPSIuL3NhbXBsZTYxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIyIiBsb2NhdGlvbj0iLlxzYW1wbGU0MjIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZjRkYjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNiIgbG9jYXRpb249InNhbXBsZTcyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMyIgbG9jYXRpb249Ii4vc2FtcGxlMjAzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiIGxvY2F0aW9uPSIuXHNhbXBsZTc1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDc4ZDlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODIiIGxvY2F0aW9uPSJzYW1wbGU0ODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjYiIGxvY2F0aW9uPSIuL3NhbXBsZTMyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1IiBsb2NhdGlvbj0iLlxzYW1wbGU1NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRlOGFjNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ1IiBsb2NhdGlvbj0ic2FtcGxlOTQ1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkwIiBsb2NhdGlvbj0iLi9zYW1wbGU3OTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzkiIGxvY2F0aW9uPSIuXHNhbXBsZTQzOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNTEyZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4IiBsb2NhdGlvbj0ic2FtcGxlODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTciIGxvY2F0aW9uPSIuL3NhbXBsZTg5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2OSIgbG9jYXRpb249Ii5cc2FtcGxlMzY5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkOGVlMWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0OSIgbG9jYXRpb249InNhbXBsZTU0OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MCIgbG9jYXRpb249Ii4vc2FtcGxlODgwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU3IiBsb2NhdGlvbj0iLlxzYW1wbGU3NTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYWU2OWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4OSIgbG9jYXRpb249InNhbXBsZTk4OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NSIgbG9jYXRpb249Ii4vc2FtcGxlODc1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIwIiBsb2NhdGlvbj0iLlxzYW1wbGU5MjAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4Zjg1YzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OSIgbG9jYXRpb249InNhbXBsZTM3OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNyIgbG9jYXRpb249Ii4vc2FtcGxlNzE3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ2IiBsb2NhdGlvbj0iLlxzYW1wbGU4NDYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NjI1YjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MSIgbG9jYXRpb249InNhbXBsZTk2MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NCIgbG9jYXRpb249Ii4vc2FtcGxlMjY0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM5IiBsb2NhdGlvbj0iLlxzYW1wbGUyMzkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NjQ5MTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMiIgbG9jYXRpb249InNhbXBsZTcyMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5OSIgbG9jYXRpb249Ii4vc2FtcGxlMjk5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM0IiBsb2NhdGlvbj0iLlxzYW1wbGUxMzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ZTJjZDQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxOCIgbG9jYXRpb249InNhbXBsZTcxOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NCIgbG9jYXRpb249Ii4vc2FtcGxlNzc0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIxIiBsb2NhdGlvbj0iLlxzYW1wbGUzMjEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMTA1YjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MiIgbG9jYXRpb249InNhbXBsZTg1Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OCIgbG9jYXRpb249Ii4vc2FtcGxlNjg4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI4IiBsb2NhdGlvbj0iLlxzYW1wbGU5Mjgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzNzQyMGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMiIgbG9jYXRpb249InNhbXBsZTcxMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMyIgbG9jYXRpb249Ii4vc2FtcGxlOTAzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIwIiBsb2NhdGlvbj0iLlxzYW1wbGU3MjAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMzdkZTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzY4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMSIgbG9jYXRpb249InNhbXBsZTYwMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2IiBsb2NhdGlvbj0iLi9zYW1wbGU0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NiIgbG9jYXRpb249Ii5cc2FtcGxlMzQ2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Njkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDVkN2UwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjEiIGxvY2F0aW9uPSJzYW1wbGU3NjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjQiIGxvY2F0aW9uPSIuL3NhbXBsZTEyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MCIgbG9jYXRpb249Ii5cc2FtcGxlMTkwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJjZTViMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEyIiBsb2NhdGlvbj0ic2FtcGxlNjEyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ0IiBsb2NhdGlvbj0iLi9zYW1wbGU5NDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODgiIGxvY2F0aW9uPSIuXHNhbXBsZTg4OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWRlNTU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NiIgbG9jYXRpb249InNhbXBsZTY2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc3IiBsb2NhdGlvbj0iLi9zYW1wbGU2Nzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjQiIGxvY2F0aW9uPSIuXHNhbXBsZTIyNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzcxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJmMTY3Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEyIiBsb2NhdGlvbj0ic2FtcGxlOTEyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSIgbG9jYXRpb249Ii4vc2FtcGxlMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2OCIgbG9jYXRpb249Ii5cc2FtcGxlNjY4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWVlYWI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjMiIGxvY2F0aW9uPSJzYW1wbGU0NjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OCIgbG9jYXRpb249Ii4vc2FtcGxlNjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOSIgbG9jYXRpb249Ii5cc2FtcGxlMjkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzcyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MjE1NmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzczLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzczIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MiIgbG9jYXRpb249InNhbXBsZTU5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MiIgbG9jYXRpb249Ii4vc2FtcGxlODgyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM5IiBsb2NhdGlvbj0iLlxzYW1wbGU0Mzkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwY2Q1ODguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczOSIgbG9jYXRpb249InNhbXBsZTczOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMyIgbG9jYXRpb249Ii4vc2FtcGxlNDEzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEyIiBsb2NhdGlvbj0iLlxzYW1wbGUyMTIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzc1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMDBhOGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzc1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MiIgbG9jYXRpb249InNhbXBsZTk0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NSIgbG9jYXRpb249Ii4vc2FtcGxlNDg1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQiIGxvY2F0aW9uPSIuXHNhbXBsZTE0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTcxNjNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTYiIGxvY2F0aW9uPSJzYW1wbGU4MTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjciIGxvY2F0aW9uPSIuL3NhbXBsZTk2Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIiBsb2NhdGlvbj0iLlxzYW1wbGU3MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Nzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYxOWZmOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Nzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM4IiBsb2NhdGlvbj0ic2FtcGxlMTM4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUiIGxvY2F0aW9uPSIuL3NhbXBsZTU1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMyIiBsb2NhdGlvbj0iLlxzYW1wbGU4MzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzc4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNjc3NTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzc4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5OCIgbG9jYXRpb249InNhbXBsZTc5OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NCIgbG9jYXRpb249Ii4vc2FtcGxlNTc0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA2IiBsb2NhdGlvbj0iLlxzYW1wbGUxMDYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc3OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlM2U1M2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NyIgbG9jYXRpb249InNhbXBsZTM2Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NyIgbG9jYXRpb249Ii4vc2FtcGxlNTY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiIGxvY2F0aW9uPSIuXHNhbXBsZTI4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRkOWYxOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQxIiBsb2NhdGlvbj0ic2FtcGxlMTQxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE4IiBsb2NhdGlvbj0iLi9zYW1wbGU2MTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjQiIGxvY2F0aW9uPSIuXHNhbXBsZTEyNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc4MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTM1MThiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc4MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODQiIGxvY2F0aW9uPSJzYW1wbGU1ODQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCIgbG9jYXRpb249Ii4vc2FtcGxlNjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzgiIGxvY2F0aW9uPSIuXHNhbXBsZTk3OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzgxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdhZjFlMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY1IiBsb2NhdGlvbj0ic2FtcGxlNjY1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg4IiBsb2NhdGlvbj0iLi9zYW1wbGU5ODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzciIGxvY2F0aW9uPSIuXHNhbXBsZTY3Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzgyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMzMTQxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkwIiBsb2NhdGlvbj0ic2FtcGxlMzkwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYwIiBsb2NhdGlvbj0iLi9zYW1wbGU0NjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTkiIGxvY2F0aW9uPSIuXHNhbXBsZTkxOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYwYzc4My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODciIGxvY2F0aW9uPSJzYW1wbGU4Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NiIgbG9jYXRpb249Ii4vc2FtcGxlMzY2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE3IiBsb2NhdGlvbj0iLlxzYW1wbGU4MTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc4NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNDY0ZTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMSIgbG9jYXRpb249InNhbXBsZTIyMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNSIgbG9jYXRpb249Ii4vc2FtcGxlNTE1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEwIiBsb2NhdGlvbj0iLlxzYW1wbGU5MTAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNGQ5OGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIiBsb2NhdGlvbj0ic2FtcGxlNzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OSIgbG9jYXRpb249Ii4vc2FtcGxlNzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODAiIGxvY2F0aW9uPSIuXHNhbXBsZTY4MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM3ODI2My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIyIiBsb2NhdGlvbj0ic2FtcGxlOTIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA1IiBsb2NhdGlvbj0iLi9zYW1wbGU4MDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjQiIGxvY2F0aW9uPSIuXHNhbXBsZTc2NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA4ZjdmNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3ODcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIxIiBsb2NhdGlvbj0ic2FtcGxlNDIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc5IiBsb2NhdGlvbj0iLi9zYW1wbGUxNzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiIgbG9jYXRpb249Ii5cc2FtcGxlNzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ODVjYWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MCIgbG9jYXRpb249InNhbXBsZTc0MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCIgbG9jYXRpb249Ii4vc2FtcGxlMjQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA3IiBsb2NhdGlvbj0iLlxzYW1wbGU4MDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc4OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNDJiM2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzg5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMSIgbG9jYXRpb249InNhbXBsZTIxMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MSIgbG9jYXRpb249Ii4vc2FtcGxlMzcxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMyIiBsb2NhdGlvbj0iLlxzYW1wbGU4MzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2U0ZWE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzUiIGxvY2F0aW9uPSJzYW1wbGUzNzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzAiIGxvY2F0aW9uPSIuL3NhbXBsZTQzMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNyIgbG9jYXRpb249Ii5cc2FtcGxlNDE3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMGMwNGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNyIgbG9jYXRpb249InNhbXBsZTEwNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NSIgbG9jYXRpb249Ii4vc2FtcGxlMTU1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY3IiBsb2NhdGlvbj0iLlxzYW1wbGUzNjcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNTA4ZTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NiIgbG9jYXRpb249InNhbXBsZTg3Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MiIgbG9jYXRpb249Ii4vc2FtcGxlODcyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQxIiBsb2NhdGlvbj0iLlxzYW1wbGUzNDEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZTMxYmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MCIgbG9jYXRpb249InNhbXBsZTU5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgbG9jYXRpb249Ii4vc2FtcGxlNDkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg0IiBsb2NhdGlvbj0iLlxzYW1wbGUxODQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYTIzNjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NyIgbG9jYXRpb249InNhbXBsZTc3Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNCIgbG9jYXRpb249Ii4vc2FtcGxlOTM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc3IiBsb2NhdGlvbj0iLlxzYW1wbGU0Nzcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NmQ3ODUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzk0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NyIgbG9jYXRpb249InNhbXBsZTc0Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMiIgbG9jYXRpb249Ii4vc2FtcGxlNTMyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAiIGxvY2F0aW9uPSIuXHNhbXBsZTEwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTY5NTRlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTEiIGxvY2F0aW9uPSJzYW1wbGU2OTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzAiIGxvY2F0aW9uPSIuL3NhbXBsZTM3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MSIgbG9jYXRpb249Ii5cc2FtcGxlOTgxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWIxNjkxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDYiIGxvY2F0aW9uPSJzYW1wbGU4NDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTgiIGxvY2F0aW9uPSIuL3NhbXBsZTM5OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMyIgbG9jYXRpb249Ii5cc2FtcGxlMjIzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjEzNjU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTEiIGxvY2F0aW9uPSJzYW1wbGU5MTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NiIgbG9jYXRpb249Ii4vc2FtcGxlNTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDciIGxvY2F0aW9uPSIuXHNhbXBsZTYwNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAxNTVlYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY3IiBsb2NhdGlvbj0ic2FtcGxlOTY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI1IiBsb2NhdGlvbj0iLi9zYW1wbGUzMjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTUiIGxvY2F0aW9uPSIuXHNhbXBsZTMxNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzk5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyY2JjMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3OTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkyIiBsb2NhdGlvbj0ic2FtcGxlNjkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYyIiBsb2NhdGlvbj0iLi9zYW1wbGU4NjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSIgbG9jYXRpb249Ii5cc2FtcGxlNjEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGViMDQxZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM2IiBsb2NhdGlvbj0ic2FtcGxlNTM2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUyIiBsb2NhdGlvbj0iLi9zYW1wbGUzNTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTEiIGxvY2F0aW9uPSIuXHNhbXBsZTYxMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzllMThjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDIiIGxvY2F0aW9uPSJzYW1wbGU0NDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDYiIGxvY2F0aW9uPSIuL3NhbXBsZTE0Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiBsb2NhdGlvbj0iLlxzYW1wbGUxOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjQ0YzVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODEiIGxvY2F0aW9uPSJzYW1wbGU2ODEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTUiIGxvY2F0aW9uPSIuL3NhbXBsZTY1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3IiBsb2NhdGlvbj0iLlxzYW1wbGU3Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIxNWQ1Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ3IiBsb2NhdGlvbj0ic2FtcGxlOTQ3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI4IiBsb2NhdGlvbj0iLi9zYW1wbGU0Mjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTciIGxvY2F0aW9uPSIuXHNhbXBsZTk1Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODAyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE5MzU2OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMwIiBsb2NhdGlvbj0ic2FtcGxlOTMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUwIiBsb2NhdGlvbj0iLi9zYW1wbGU3NTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTMiIGxvY2F0aW9uPSIuXHNhbXBsZTE5My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODAzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU2MzYyOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzcwIiBsb2NhdGlvbj0ic2FtcGxlNzcwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA4IiBsb2NhdGlvbj0iLi9zYW1wbGU3MDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTkiIGxvY2F0aW9uPSIuXHNhbXBsZTc1OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyNTcxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAxIiBsb2NhdGlvbj0ic2FtcGxlNDAxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI5IiBsb2NhdGlvbj0iLi9zYW1wbGU1Mjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDQiIGxvY2F0aW9uPSIuXHNhbXBsZTMwNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODA1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQyMjNhNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY5IiBsb2NhdGlvbj0ic2FtcGxlNjY5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg1IiBsb2NhdGlvbj0iLi9zYW1wbGU2ODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NyIgbG9jYXRpb249Ii5cc2FtcGxlNTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NjliMjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMSIgbG9jYXRpb249InNhbXBsZTgyMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMiIgbG9jYXRpb249Ii4vc2FtcGxlNjIyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgyIiBsb2NhdGlvbj0iLlxzYW1wbGU5ODIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODA3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZDMzY2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODA3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNiIgbG9jYXRpb249InNhbXBsZTIzNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNCIgbG9jYXRpb249Ii4vc2FtcGxlNzE0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY0IiBsb2NhdGlvbj0iLlxzYW1wbGU2NjQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODA4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ODM2ZDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODA4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MyIgbG9jYXRpb249InNhbXBsZTU4My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3IiBsb2NhdGlvbj0iLi9zYW1wbGU5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NSIgbG9jYXRpb249Ii5cc2FtcGxlNjU1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWYzYjUyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzAiIGxvY2F0aW9uPSJzYW1wbGU0NzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDMiIGxvY2F0aW9uPSIuL3NhbXBsZTcwMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MSIgbG9jYXRpb249Ii5cc2FtcGxlMzYxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRlOGMzZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgxIiBsb2NhdGlvbj0ic2FtcGxlNjgxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc4IiBsb2NhdGlvbj0iLi9zYW1wbGU0Nzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzAiIGxvY2F0aW9uPSIuXHNhbXBsZTIzMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2I4YWM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDIiIGxvY2F0aW9uPSJzYW1wbGU5NDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDIiIGxvY2F0aW9uPSIuL3NhbXBsZTU0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MSIgbG9jYXRpb249Ii5cc2FtcGxlOTUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2ZjNTcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgxMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCIgbG9jYXRpb249InNhbXBsZTk0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE1IiBsb2NhdGlvbj0iLi9zYW1wbGU0MTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTkiIGxvY2F0aW9uPSIuXHNhbXBsZTM5OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIzN2ZmYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY0IiBsb2NhdGlvbj0ic2FtcGxlMzY0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTExIiBsb2NhdGlvbj0iLi9zYW1wbGUxMTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTAiIGxvY2F0aW9uPSIuXHNhbXBsZTgxMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODEzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA1OGUwNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk5IiBsb2NhdGlvbj0ic2FtcGxlMzk5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ1IiBsb2NhdGlvbj0iLi9zYW1wbGUxNDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDUiIGxvY2F0aW9uPSIuXHNhbXBsZTk0NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIyODUwOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkzIiBsb2NhdGlvbj0ic2FtcGxlNjkzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzcwIiBsb2NhdGlvbj0iLi9zYW1wbGU3NzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NiIgbG9jYXRpb249Ii5cc2FtcGxlNzYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgxNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkOGMwNDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMiIgbG9jYXRpb249InNhbXBsZTQzMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMiIgbG9jYXRpb249Ii4vc2FtcGxlODAyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkyIiBsb2NhdGlvbj0iLlxzYW1wbGU5OTIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgxNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNzMwZmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNSIgbG9jYXRpb249InNhbXBsZTUxNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MSIgbG9jYXRpb249Ii4vc2FtcGxlMTcxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE5IiBsb2NhdGlvbj0iLlxzYW1wbGU2MTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZjA4NTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MyIgbG9jYXRpb249InNhbXBsZTQ5My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMSIgbG9jYXRpb249Ii4vc2FtcGxlODExLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY1IiBsb2NhdGlvbj0iLlxzYW1wbGU5NjUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgxOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4Nzg3ZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NSIgbG9jYXRpb249InNhbXBsZTY0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgbG9jYXRpb249Ii4vc2FtcGxlNDkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ1IiBsb2NhdGlvbj0iLlxzYW1wbGUyNDUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgxOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZjM2MTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODE5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NSIgbG9jYXRpb249InNhbXBsZTI5NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NCIgbG9jYXRpb249Ii4vc2FtcGxlODU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI5IiBsb2NhdGlvbj0iLlxzYW1wbGU4Mjkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDg2Y2UxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzgiIGxvY2F0aW9uPSJzYW1wbGU0Mzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTIiIGxvY2F0aW9uPSIuL3NhbXBsZTQ5Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIGxvY2F0aW9uPSIuXHNhbXBsZTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFiNDNlYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAxIiBsb2NhdGlvbj0ic2FtcGxlOTAxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQiIGxvY2F0aW9uPSIuL3NhbXBsZTM0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkzIiBsb2NhdGlvbj0iLlxzYW1wbGU0OTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Y2U4ODkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNSIgbG9jYXRpb249InNhbXBsZTExNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MyIgbG9jYXRpb249Ii4vc2FtcGxlMzkzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY3IiBsb2NhdGlvbj0iLlxzYW1wbGUyNjcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MGI0N2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2OSIgbG9jYXRpb249InNhbXBsZTg2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNyIgbG9jYXRpb249Ii4vc2FtcGxlNTA3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU4IiBsb2NhdGlvbj0iLlxzYW1wbGU0NTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODIzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMGNlNWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODIzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMiIgbG9jYXRpb249InNhbXBsZTQzMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNyIgbG9jYXRpb249Ii4vc2FtcGxlMjM3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAyIiBsb2NhdGlvbj0iLlxzYW1wbGUxMDIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyYzI5MWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNiIgbG9jYXRpb249InNhbXBsZTcwNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNSIgbG9jYXRpb249Ii4vc2FtcGxlNjE1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM5IiBsb2NhdGlvbj0iLlxzYW1wbGU4Mzkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMzdiMGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxOSIgbG9jYXRpb249InNhbXBsZTUxOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OCIgbG9jYXRpb249Ii4vc2FtcGxlMzc4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI1IiBsb2NhdGlvbj0iLlxzYW1wbGUzMjUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyZjg1NjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MSIgbG9jYXRpb249InNhbXBsZTg5MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MCIgbG9jYXRpb249Ii4vc2FtcGxlNDgwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAyIiBsb2NhdGlvbj0iLlxzYW1wbGU5MDIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZmZiMzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MSIgbG9jYXRpb249InNhbXBsZTQ3MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MSIgbG9jYXRpb249Ii4vc2FtcGxlMzUxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcyIiBsb2NhdGlvbj0iLlxzYW1wbGUyNzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MzU2MjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NyIgbG9jYXRpb249InNhbXBsZTc1Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNSIgbG9jYXRpb249Ii4vc2FtcGxlMjA1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc0IiBsb2NhdGlvbj0iLlxzYW1wbGUxNzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZWFmODYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODI5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NCIgbG9jYXRpb249InNhbXBsZTY1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2OSIgbG9jYXRpb249Ii4vc2FtcGxlODY5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkzIiBsb2NhdGlvbj0iLlxzYW1wbGUxOTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGNjNjgwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OSIgbG9jYXRpb249InNhbXBsZTc5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI2IiBsb2NhdGlvbj0iLi9zYW1wbGU3MjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjUiIGxvY2F0aW9uPSIuXHNhbXBsZTUyNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjgzNjRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjgiIGxvY2F0aW9uPSJzYW1wbGUzMjgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDkiIGxvY2F0aW9uPSIuL3NhbXBsZTI0OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MiIgbG9jYXRpb249Ii5cc2FtcGxlNjkyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzQwZmEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTciIGxvY2F0aW9uPSJzYW1wbGU1NTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTkiIGxvY2F0aW9uPSIuL3NhbXBsZTE1OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MyIgbG9jYXRpb249Ii5cc2FtcGxlNDQzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OThhZDkzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDAiIGxvY2F0aW9uPSJzYW1wbGU2NDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjMiIGxvY2F0aW9uPSIuL3NhbXBsZTUyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxOSIgbG9jYXRpb249Ii5cc2FtcGxlNDE5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWFiMDY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDAiIGxvY2F0aW9uPSJzYW1wbGUzNDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjkiIGxvY2F0aW9uPSIuL3NhbXBsZTc2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3OSIgbG9jYXRpb249Ii5cc2FtcGxlODc5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjY1MWUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjEiIGxvY2F0aW9uPSJzYW1wbGU4MjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDAiIGxvY2F0aW9uPSIuL3NhbXBsZTYwMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOCIgbG9jYXRpb249Ii5cc2FtcGxlMjM4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjQ5ZGY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjciIGxvY2F0aW9uPSJzYW1wbGU3Mjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTMiIGxvY2F0aW9uPSIuL3NhbXBsZTMxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCIgbG9jYXRpb249Ii5cc2FtcGxlMjQ4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTIwYjg0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzciIGxvY2F0aW9uPSJzYW1wbGU4Nzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDciIGxvY2F0aW9uPSIuL3NhbXBsZTQwNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MCIgbG9jYXRpb249Ii5cc2FtcGxlNzcwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Mzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTA0YTMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzYiIGxvY2F0aW9uPSJzYW1wbGUyNzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjciIGxvY2F0aW9uPSIuL3NhbXBsZTU2Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOSIgbG9jYXRpb249Ii5cc2FtcGxlNzA5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Mzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmE4M2FhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDMiIGxvY2F0aW9uPSJzYW1wbGUxNDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTgiIGxvY2F0aW9uPSIuL3NhbXBsZTIxOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNSIgbG9jYXRpb249Ii5cc2FtcGxlNzA1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Mzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWZiZWZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTAiIGxvY2F0aW9uPSJzYW1wbGU3OTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODMiIGxvY2F0aW9uPSIuL3NhbXBsZTY4My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0IiBsb2NhdGlvbj0iLlxzYW1wbGU1NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxNWEyNDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MiIgbG9jYXRpb249InNhbXBsZTg0Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0OCIgbG9jYXRpb249Ii4vc2FtcGxlMTQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc4IiBsb2NhdGlvbj0iLlxzYW1wbGU2Nzgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBiMjU1YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUxIiBsb2NhdGlvbj0ic2FtcGxlMzUxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA3IiBsb2NhdGlvbj0iLi9zYW1wbGU5MDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODMiIGxvY2F0aW9uPSIuXHNhbXBsZTY4My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM1ZjMxNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYzIiBsb2NhdGlvbj0ic2FtcGxlMjYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAzIiBsb2NhdGlvbj0iLi9zYW1wbGU4MDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTYiIGxvY2F0aW9uPSIuXHNhbXBsZTc1Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YxZDk3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQwIiBsb2NhdGlvbj0ic2FtcGxlODQwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg1IiBsb2NhdGlvbj0iLi9zYW1wbGUxODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTEiIGxvY2F0aW9uPSIuXHNhbXBsZTQxMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZlMWJhMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE5IiBsb2NhdGlvbj0ic2FtcGxlMzE5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY0IiBsb2NhdGlvbj0iLi9zYW1wbGUxNjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzUiIGxvY2F0aW9uPSIuXHNhbXBsZTQ3NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQ0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlkY2Y4NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIiBsb2NhdGlvbj0ic2FtcGxlMjgxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQwIiBsb2NhdGlvbj0iLi9zYW1wbGU5NDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDEiIGxvY2F0aW9uPSIuXHNhbXBsZTI0MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEyM2IwNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc1IiBsb2NhdGlvbj0ic2FtcGxlMTc1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE2IiBsb2NhdGlvbj0iLi9zYW1wbGU1MTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzYiIGxvY2F0aW9uPSIuXHNhbXBsZTc3Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQ2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAzNTBlYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzczIiBsb2NhdGlvbj0ic2FtcGxlNzczLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM0IiBsb2NhdGlvbj0iLi9zYW1wbGUyMzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODMiIGxvY2F0aW9uPSIuXHNhbXBsZTY4My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQ3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg1MmFjYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIGxvY2F0aW9uPSJzYW1wbGU2OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NCIgbG9jYXRpb249Ii4vc2FtcGxlOTk0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI4IiBsb2NhdGlvbj0iLlxzYW1wbGUzMjgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg0OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQ4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MjIwZTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODQ4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzOCIgbG9jYXRpb249InNhbXBsZTEzOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMCIgbG9jYXRpb249Ii4vc2FtcGxlNDEwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiIGxvY2F0aW9uPSIuXHNhbXBsZTk4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzdmMWJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjkiIGxvY2F0aW9uPSJzYW1wbGU2Mjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTMiIGxvY2F0aW9uPSIuL3NhbXBsZTQ5My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NiIgbG9jYXRpb249Ii5cc2FtcGxlNDc2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRkZWJiYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM5IiBsb2NhdGlvbj0ic2FtcGxlOTM5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk2IiBsb2NhdGlvbj0iLi9zYW1wbGUzOTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTQiIGxvY2F0aW9uPSIuXHNhbXBsZTcxNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2Q5MjI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyIgbG9jYXRpb249InNhbXBsZTQ3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYyIiBsb2NhdGlvbj0iLi9zYW1wbGU3NjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTciIGxvY2F0aW9uPSIuXHNhbXBsZTgxNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBiYjA0MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiIGxvY2F0aW9uPSJzYW1wbGU5Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMCIgbG9jYXRpb249Ii4vc2FtcGxlNzIwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMwIiBsb2NhdGlvbj0iLlxzYW1wbGUzMzAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZDdmNzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MCIgbG9jYXRpb249InNhbXBsZTI5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OCIgbG9jYXRpb249Ii4vc2FtcGxlMzg4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA4IiBsb2NhdGlvbj0iLlxzYW1wbGUyMDgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxNzZmOTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODUzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MyIgbG9jYXRpb249InNhbXBsZTc0My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NyIgbG9jYXRpb249Ii4vc2FtcGxlNTY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc4IiBsb2NhdGlvbj0iLlxzYW1wbGUxNzgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmMzMzOTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NyIgbG9jYXRpb249InNhbXBsZTI5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMCIgbG9jYXRpb249Ii4vc2FtcGxlNjMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU4IiBsb2NhdGlvbj0iLlxzYW1wbGU0NTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0M2Y3MTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNCIgbG9jYXRpb249InNhbXBsZTYyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MiIgbG9jYXRpb249Ii4vc2FtcGxlODYyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg0IiBsb2NhdGlvbj0iLlxzYW1wbGU2ODQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDZlYTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMSIgbG9jYXRpb249InNhbXBsZTgxMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MSIgbG9jYXRpb249Ii4vc2FtcGxlNjcxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE4IiBsb2NhdGlvbj0iLlxzYW1wbGU5MTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZDYxMTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MyIgbG9jYXRpb249InNhbXBsZTI0My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MiIgbG9jYXRpb249Ii4vc2FtcGxlMzcyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk3IiBsb2NhdGlvbj0iLlxzYW1wbGU3OTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyY2FhNDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNSIgbG9jYXRpb249InNhbXBsZTkxNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OCIgbG9jYXRpb249Ii4vc2FtcGxlNTk4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU5IiBsb2NhdGlvbj0iLlxzYW1wbGU1NTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMTNhM2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODU5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5IiBsb2NhdGlvbj0ic2FtcGxlODkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDYiIGxvY2F0aW9uPSIuL3NhbXBsZTEwNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNSIgbG9jYXRpb249Ii5cc2FtcGxlNDA1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFmYTg0Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYzIiBsb2NhdGlvbj0ic2FtcGxlNTYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ4IiBsb2NhdGlvbj0iLi9zYW1wbGU0NDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNiIgbG9jYXRpb249Ii5cc2FtcGxlMTYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODYwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ0M2EzZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEyIiBsb2NhdGlvbj0ic2FtcGxlNDEyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkxIiBsb2NhdGlvbj0iLi9zYW1wbGUyOTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgbG9jYXRpb249Ii5cc2FtcGxlMjIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg2MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODYxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYWU3NzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODYxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NiIgbG9jYXRpb249InNhbXBsZTM5Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNSIgbG9jYXRpb249Ii4vc2FtcGxlNzM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ5IiBsb2NhdGlvbj0iLlxzYW1wbGU5NDkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg2Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhN2MxY2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyOSIgbG9jYXRpb249InNhbXBsZTIyOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyIiBsb2NhdGlvbj0iLi9zYW1wbGUyMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNCIgbG9jYXRpb249Ii5cc2FtcGxlOTM0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg2My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjcxZjkyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiIgbG9jYXRpb249InNhbXBsZTI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIiIGxvY2F0aW9uPSIuL3NhbXBsZTUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg2IiBsb2NhdGlvbj0iLlxzYW1wbGU5ODYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODY0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ODFmYmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MyIgbG9jYXRpb249InNhbXBsZTE4My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4IiBsb2NhdGlvbj0iLi9zYW1wbGUxOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5OCIgbG9jYXRpb249Ii5cc2FtcGxlMTk4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTViYTBjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjMiIGxvY2F0aW9uPSJzYW1wbGU4NjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDQiIGxvY2F0aW9uPSIuL3NhbXBsZTM0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxIiBsb2NhdGlvbj0iLlxzYW1wbGU3MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODY2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ5NjczNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk5IiBsb2NhdGlvbj0ic2FtcGxlOTk5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY2IiBsb2NhdGlvbj0iLi9zYW1wbGU0NjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDkiIGxvY2F0aW9uPSIuXHNhbXBsZTI0OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Njcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg4NDhmMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Njcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc5IiBsb2NhdGlvbj0ic2FtcGxlNDc5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ0IiBsb2NhdGlvbj0iLi9zYW1wbGUzNDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzYiIGxvY2F0aW9uPSIuXHNhbXBsZTkzNi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODY4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Njgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZlMWQ1NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Njgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQzIiBsb2NhdGlvbj0ic2FtcGxlNjQzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIyIiBsb2NhdGlvbj0iLi9zYW1wbGU2MjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzUiIGxvY2F0aW9uPSIuXHNhbXBsZTg3NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Njkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThlZDI1MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Njkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA2IiBsb2NhdGlvbj0ic2FtcGxlNzA2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYwIiBsb2NhdGlvbj0iLi9zYW1wbGU0NjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODMiIGxvY2F0aW9uPSIuXHNhbXBsZTc4My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzYjMwOGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NCIgbG9jYXRpb249InNhbXBsZTY0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NiIgbG9jYXRpb249Ii4vc2FtcGxlMjY2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk4IiBsb2NhdGlvbj0iLlxzYW1wbGU2OTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODcwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdkYjE3Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI5IiBsb2NhdGlvbj0ic2FtcGxlNDI5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg5IiBsb2NhdGlvbj0iLi9zYW1wbGUzODkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzAiIGxvY2F0aW9uPSIuXHNhbXBsZTUzMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODcxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZjZjExMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc4IiBsb2NhdGlvbj0ic2FtcGxlMjc4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ3IiBsb2NhdGlvbj0iLi9zYW1wbGU3NDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODIiIGxvY2F0aW9uPSIuXHNhbXBsZTI4Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI5NmE2MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEzIiBsb2NhdGlvbj0ic2FtcGxlNDEzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc4IiBsb2NhdGlvbj0iLi9zYW1wbGUyNzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDEiIGxvY2F0aW9uPSIuXHNhbXBsZTEwMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODczLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFhNTY5Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ5IiBsb2NhdGlvbj0ic2FtcGxlODQ5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU0IiBsb2NhdGlvbj0iLi9zYW1wbGUxNTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzQiIGxvY2F0aW9uPSIuXHNhbXBsZTQ3NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODc0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE0MWNmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE2IiBsb2NhdGlvbj0ic2FtcGxlODE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI0IiBsb2NhdGlvbj0iLi9zYW1wbGUzMjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODkiIGxvY2F0aW9uPSIuXHNhbXBsZTg4OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI2OTk0ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI2IiBsb2NhdGlvbj0ic2FtcGxlODI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYwIiBsb2NhdGlvbj0iLi9zYW1wbGUxNjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzEiIGxvY2F0aW9uPSIuXHNhbXBsZTczMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODc2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg5ZWZlNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA0IiBsb2NhdGlvbj0ic2FtcGxlNzA0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI0IiBsb2NhdGlvbj0iLi9zYW1wbGUxMjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjYiIGxvY2F0aW9uPSIuXHNhbXBsZTQyNi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Nzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y2MTY5NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Nzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIGxvY2F0aW9uPSJzYW1wbGU2OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMiIgbG9jYXRpb249Ii4vc2FtcGxlNDMyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc2IiBsb2NhdGlvbj0iLlxzYW1wbGU0NzYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg3OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODc4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZTJjYzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODc4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MSIgbG9jYXRpb249InNhbXBsZTc5MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOSIgbG9jYXRpb249Ii4vc2FtcGxlNzA5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYxIiBsb2NhdGlvbj0iLlxzYW1wbGU2NjEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg3OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4YWJkMTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwIiBsb2NhdGlvbj0ic2FtcGxlOTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzYiIGxvY2F0aW9uPSIuL3NhbXBsZTY3Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NiIgbG9jYXRpb249Ii5cc2FtcGxlNTc2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVjMjM0ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkyIiBsb2NhdGlvbj0ic2FtcGxlNzkyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUyIiBsb2NhdGlvbj0iLi9zYW1wbGU2NTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDQiIGxvY2F0aW9uPSIuXHNhbXBsZTM0NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4ODAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWVmYzAwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODQiIGxvY2F0aW9uPSJzYW1wbGU4ODQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzUiIGxvY2F0aW9uPSIuL3NhbXBsZTU3NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MiIgbG9jYXRpb249Ii5cc2FtcGxlNTgyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2Y2MmNmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzMiIGxvY2F0aW9uPSJzYW1wbGU0MzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDUiIGxvY2F0aW9uPSIuL3NhbXBsZTIwNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNSIgbG9jYXRpb249Ii5cc2FtcGxlMjM1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4ODIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzBhZTA2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzYiIGxvY2F0aW9uPSJzYW1wbGU0MzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODMiIGxvY2F0aW9uPSIuL3NhbXBsZTU4My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMSIgbG9jYXRpb249Ii5cc2FtcGxlNjMxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4ODMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWExOTZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzciIGxvY2F0aW9uPSJzYW1wbGU4Mzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDkiIGxvY2F0aW9uPSIuL3NhbXBsZTcwOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NSIgbG9jYXRpb249Ii5cc2FtcGxlMjg1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGNlYWQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDYiIGxvY2F0aW9uPSJzYW1wbGU3MDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzYiIGxvY2F0aW9uPSIuL3NhbXBsZTczNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NCIgbG9jYXRpb249Ii5cc2FtcGxlNzg0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4ODUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDRhNzc4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzEiIGxvY2F0aW9uPSJzYW1wbGU1MzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDQiIGxvY2F0aW9uPSIuL3NhbXBsZTU0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NyIgbG9jYXRpb249Ii5cc2FtcGxlNTY3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4ODYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzIxNzBhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NiIgbG9jYXRpb249InNhbXBsZTY2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYiIGxvY2F0aW9uPSIuL3NhbXBsZTg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA1IiBsb2NhdGlvbj0iLlxzYW1wbGUyMDUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYzE4ZjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODg3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMSIgbG9jYXRpb249InNhbXBsZTUwMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MyIgbG9jYXRpb249Ii4vc2FtcGxlMTUzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYwIiBsb2NhdGlvbj0iLlxzYW1wbGUxNjAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhYjlkNmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OCIgbG9jYXRpb249InNhbXBsZTU1OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNSIgbG9jYXRpb249Ii4vc2FtcGxlODM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE1IiBsb2NhdGlvbj0iLlxzYW1wbGU2MTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODg5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMmM5NTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODg5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOSIgbG9jYXRpb249InNhbXBsZTYyOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxOCIgbG9jYXRpb249Ii4vc2FtcGxlOTE4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk1IiBsb2NhdGlvbj0iLlxzYW1wbGU0OTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTUyNDhlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzciIGxvY2F0aW9uPSJzYW1wbGU4Mzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjkiIGxvY2F0aW9uPSIuL3NhbXBsZTUyOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MSIgbG9jYXRpb249Ii5cc2FtcGxlODQxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZDdiMmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MSIgbG9jYXRpb249InNhbXBsZTE3MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMCIgbG9jYXRpb249Ii4vc2FtcGxlNDIwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc4IiBsb2NhdGlvbj0iLlxzYW1wbGU3Nzgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMmY2MDQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODkxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4OSIgbG9jYXRpb249InNhbXBsZTk4OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMiIgbG9jYXRpb249Ii4vc2FtcGxlNjAyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU5IiBsb2NhdGlvbj0iLlxzYW1wbGUxNTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiM2I5YTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MCIgbG9jYXRpb249InNhbXBsZTM5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MyIgbG9jYXRpb249Ii4vc2FtcGxlNzczLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAzIiBsb2NhdGlvbj0iLlxzYW1wbGU4MDMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNzJhZmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5OSIgbG9jYXRpb249InNhbXBsZTE5OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MSIgbG9jYXRpb249Ii4vc2FtcGxlNTYxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM2IiBsb2NhdGlvbj0iLlxzYW1wbGU3MzYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZGM0MDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODk0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMSIgbG9jYXRpb249InNhbXBsZTExMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NiIgbG9jYXRpb249Ii4vc2FtcGxlNzY2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkyIiBsb2NhdGlvbj0iLlxzYW1wbGU2OTIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYWJlMmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODk1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiIgbG9jYXRpb249InNhbXBsZTgzMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1OSIgbG9jYXRpb249Ii4vc2FtcGxlNzU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc0IiBsb2NhdGlvbj0iLlxzYW1wbGU4NzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2M2Y0NDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NCIgbG9jYXRpb249InNhbXBsZTg2NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOCIgbG9jYXRpb249Ii4vc2FtcGxlNTA4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgiIGxvY2F0aW9uPSIuXHNhbXBsZTQ4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4OTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDI3OTZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzEiIGxvY2F0aW9uPSJzYW1wbGUzNzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDgiIGxvY2F0aW9uPSIuL3NhbXBsZTE0OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NiIgbG9jYXRpb249Ii5cc2FtcGxlMTk2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4OTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODY2ODA2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDUiIGxvY2F0aW9uPSJzYW1wbGU1MDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzAiIGxvY2F0aW9uPSIuL3NhbXBsZTk3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MCIgbG9jYXRpb249Ii5cc2FtcGxlNjcwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4OTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmNkN2U2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg5OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDMiIGxvY2F0aW9uPSJzYW1wbGU5MDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTMiIGxvY2F0aW9uPSIuL3NhbXBsZTY1My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNyIgbG9jYXRpb249Ii5cc2FtcGxlODM3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYjg0YWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NiIgbG9jYXRpb249InNhbXBsZTM3Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMSIgbG9jYXRpb249Ii4vc2FtcGxlMTMxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY1IiBsb2NhdGlvbj0iLlxzYW1wbGU0NjUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVmYmZmNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgzIiBsb2NhdGlvbj0ic2FtcGxlNDgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEwIiBsb2NhdGlvbj0iLi9zYW1wbGUyMTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzUiIGxvY2F0aW9uPSIuXHNhbXBsZTczNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTNmMTlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTMiIGxvY2F0aW9uPSJzYW1wbGU5MTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzkiIGxvY2F0aW9uPSIuL3NhbXBsZTgzOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOCIgbG9jYXRpb249Ii5cc2FtcGxlMzA4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTE3NWZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTUiIGxvY2F0aW9uPSJzYW1wbGUxOTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODAiIGxvY2F0aW9uPSIuL3NhbXBsZTM4MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NCIgbG9jYXRpb249Ii5cc2FtcGxlMjk0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTljZTE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzYiIGxvY2F0aW9uPSJzYW1wbGU2NzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzciIGxvY2F0aW9uPSIuL3NhbXBsZTkzNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NCIgbG9jYXRpb249Ii5cc2FtcGxlNzY0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmM1NGM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTUiIGxvY2F0aW9uPSJzYW1wbGUyOTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMiIgbG9jYXRpb249Ii4vc2FtcGxlMTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjYiIGxvY2F0aW9uPSIuXHNhbXBsZTU2Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ2MDk0Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQzIiBsb2NhdGlvbj0ic2FtcGxlOTQzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUiIGxvY2F0aW9uPSIuL3NhbXBsZTM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ1IiBsb2NhdGlvbj0iLlxzYW1wbGUxNDUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTA1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMDM3NTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MSIgbG9jYXRpb249InNhbXBsZTk2MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OSIgbG9jYXRpb249Ii4vc2FtcGxlMjQ5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM0IiBsb2NhdGlvbj0iLlxzYW1wbGU3MzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMDE3ZjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NiIgbG9jYXRpb249InNhbXBsZTU4Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NSIgbG9jYXRpb249Ii4vc2FtcGxlMjg1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU3IiBsb2NhdGlvbj0iLlxzYW1wbGU1NTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTA3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZjAwYTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTA3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOSIgbG9jYXRpb249InNhbXBsZTkwOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0IiBsb2NhdGlvbj0iLi9zYW1wbGUxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NSIgbG9jYXRpb249Ii5cc2FtcGxlNTc1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWM4MjM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODUiIGxvY2F0aW9uPSJzYW1wbGU3ODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTkiIGxvY2F0aW9uPSIuL3NhbXBsZTcxOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMiIgbG9jYXRpb249Ii5cc2FtcGxlNTAyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDk4YWEzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDAiIGxvY2F0aW9uPSJzYW1wbGU3NDAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDMiIGxvY2F0aW9uPSIuL3NhbXBsZTg0My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MyIgbG9jYXRpb249Ii5cc2FtcGxlMjkzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTcyMzQ0Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk2IiBsb2NhdGlvbj0ic2FtcGxlNTk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI2IiBsb2NhdGlvbj0iLi9zYW1wbGU1MjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODEiIGxvY2F0aW9uPSIuXHNhbXBsZTg4MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWNkNTZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzYiIGxvY2F0aW9uPSJzYW1wbGU2MzYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDEiIGxvY2F0aW9uPSIuL3NhbXBsZTYwMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MiIgbG9jYXRpb249Ii5cc2FtcGxlMzYyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmQzMGFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkxMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDMiIGxvY2F0aW9uPSJzYW1wbGU1MDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjIiIGxvY2F0aW9uPSIuL3NhbXBsZTc2Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MCIgbG9jYXRpb249Ii5cc2FtcGxlMjgwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkxMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjlhNWNlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkxMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDUiIGxvY2F0aW9uPSJzYW1wbGUyMDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjkiIGxvY2F0aW9uPSIuL3NhbXBsZTY2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIiBsb2NhdGlvbj0iLlxzYW1wbGU4MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTEzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI2N2RlOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE5IiBsb2NhdGlvbj0ic2FtcGxlMjE5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI0IiBsb2NhdGlvbj0iLi9zYW1wbGU4MjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODIiIGxvY2F0aW9uPSIuXHNhbXBsZTU4Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTE0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY3OGNkZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE3IiBsb2NhdGlvbj0ic2FtcGxlNzE3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA5IiBsb2NhdGlvbj0iLi9zYW1wbGU4MDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTgiIGxvY2F0aW9uPSIuXHNhbXBsZTk1OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY3Y2NlNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk3IiBsb2NhdGlvbj0ic2FtcGxlODk3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU0IiBsb2NhdGlvbj0iLi9zYW1wbGU0NTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTQiIGxvY2F0aW9uPSIuXHNhbXBsZTU5NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA4M2MxNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM2IiBsb2NhdGlvbj0ic2FtcGxlNzM2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUwIiBsb2NhdGlvbj0iLi9zYW1wbGUxNTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDkiIGxvY2F0aW9uPSIuXHNhbXBsZTEwOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTE3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJjZjgxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciIGxvY2F0aW9uPSJzYW1wbGUxNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMCIgbG9jYXRpb249Ii4vc2FtcGxlMzMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgbG9jYXRpb249Ii5cc2FtcGxlNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdkY2MxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIiBsb2NhdGlvbj0ic2FtcGxlMjgxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkiIGxvY2F0aW9uPSIuL3NhbXBsZTI5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzExIiBsb2NhdGlvbj0iLlxzYW1wbGUzMTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkxOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMGEzMjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTE5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyOCIgbG9jYXRpb249InNhbXBsZTcyOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MyIgbG9jYXRpb249Ii4vc2FtcGxlMzYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQzIiBsb2NhdGlvbj0iLlxzYW1wbGU4NDMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzU2NDIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjciIGxvY2F0aW9uPSJzYW1wbGUzNjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDAiIGxvY2F0aW9uPSIuL3NhbXBsZTIwMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzOCIgbG9jYXRpb249Ii5cc2FtcGxlOTM4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTIwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyYjA5YWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTIwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NSIgbG9jYXRpb249InNhbXBsZTI3NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyOCIgbG9jYXRpb249Ii4vc2FtcGxlNzI4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA5IiBsb2NhdGlvbj0iLlxzYW1wbGU0MDkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwODkyZmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NCIgbG9jYXRpb249InNhbXBsZTk2NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNiIgbG9jYXRpb249Ii4vc2FtcGxlNDA2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM5IiBsb2NhdGlvbj0iLlxzYW1wbGU1Mzkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YzE0NTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIiBsb2NhdGlvbj0ic2FtcGxlOTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzUiIGxvY2F0aW9uPSIuL3NhbXBsZTU3NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2OSIgbG9jYXRpb249Ii5cc2FtcGxlNzY5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjUyY2Y2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjYiIGxvY2F0aW9uPSJzYW1wbGU3NjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTgiIGxvY2F0aW9uPSIuL3NhbXBsZTI1OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NyIgbG9jYXRpb249Ii5cc2FtcGxlMTQ3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODEyNzcwYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA1IiBsb2NhdGlvbj0ic2FtcGxlMTA1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgbG9jYXRpb249Ii4vc2FtcGxlNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMiIgbG9jYXRpb249Ii5cc2FtcGxlMzEyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTllNTQ0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODYiIGxvY2F0aW9uPSJzYW1wbGUzODYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTIiIGxvY2F0aW9uPSIuL3NhbXBsZTExMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExOCIgbG9jYXRpb249Ii5cc2FtcGxlMTE4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDI5YzJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDMiIGxvY2F0aW9uPSJzYW1wbGU0MDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjEiIGxvY2F0aW9uPSIuL3NhbXBsZTY2MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MCIgbG9jYXRpb249Ii5cc2FtcGxlNzcwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTJmOWQxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTkiIGxvY2F0aW9uPSJzYW1wbGUyNTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjAiIGxvY2F0aW9uPSIuL3NhbXBsZTg2MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNiIgbG9jYXRpb249Ii5cc2FtcGxlNzM2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Mjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzVhYTVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkyOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODUiIGxvY2F0aW9uPSJzYW1wbGU0ODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDkiIGxvY2F0aW9uPSIuL3NhbXBsZTk0OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2IiBsb2NhdGlvbj0iLlxzYW1wbGU3Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ5ZjNhNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Mjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk4IiBsb2NhdGlvbj0ic2FtcGxlNjk4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE0IiBsb2NhdGlvbj0iLi9zYW1wbGU5MTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDAiIGxvY2F0aW9uPSIuXHNhbXBsZTc0MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlOTliOWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMCIgbG9jYXRpb249InNhbXBsZTMxMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNCIgbG9jYXRpb249Ii4vc2FtcGxlMzI0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAzIiBsb2NhdGlvbj0iLlxzYW1wbGUzMDMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTMwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0MmQwOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkiIGxvY2F0aW9uPSJzYW1wbGUyOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIiBsb2NhdGlvbj0iLi9zYW1wbGUyMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NSIgbG9jYXRpb249Ii5cc2FtcGxlOTQ1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWNlMjlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODkiIGxvY2F0aW9uPSJzYW1wbGU1ODkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTgiIGxvY2F0aW9uPSIuL3NhbXBsZTExOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxOSIgbG9jYXRpb249Ii5cc2FtcGxlMjE5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjY2OTIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTciIGxvY2F0aW9uPSJzYW1wbGU2OTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODQiIGxvY2F0aW9uPSIuL3NhbXBsZTE4NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MyIgbG9jYXRpb249Ii5cc2FtcGxlMzUzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmQ5NzcxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzIiIGxvY2F0aW9uPSJzYW1wbGU5MzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjQiIGxvY2F0aW9uPSIuL3NhbXBsZTU2NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiIGxvY2F0aW9uPSIuXHNhbXBsZTYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYTQzY2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOSIgbG9jYXRpb249InNhbXBsZTMxOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1OSIgbG9jYXRpb249Ii4vc2FtcGxlMjU5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMyIiBsb2NhdGlvbj0iLlxzYW1wbGUyMzIud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNDg3NzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMCIgbG9jYXRpb249InNhbXBsZTgyMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMyIgbG9jYXRpb249Ii4vc2FtcGxlNDAzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA3IiBsb2NhdGlvbj0iLlxzYW1wbGUyMDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllN2UyNjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NCIgbG9jYXRpb249InNhbXBsZTk1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NyIgbG9jYXRpb249Ii4vc2FtcGxlOTY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc1IiBsb2NhdGlvbj0iLlxzYW1wbGU4NzUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNDljNzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NyIgbG9jYXRpb249InNhbXBsZTY3Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNiIgbG9jYXRpb249Ii4vc2FtcGxlNTI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgzIiBsb2NhdGlvbj0iLlxzYW1wbGUyODMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNmEwYWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzOCIgbG9jYXRpb249InNhbXBsZTUzOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNiIgbG9jYXRpb249Ii4vc2FtcGxlNTM2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMzIiBsb2NhdGlvbj0iLlxzYW1wbGU0MzMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZDY4NjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMiIgbG9jYXRpb249InNhbXBsZTIxMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NSIgbG9jYXRpb249Ii4vc2FtcGxlNTU1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM0IiBsb2NhdGlvbj0iLlxzYW1wbGU4MzQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzdiY2JjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzEiIGxvY2F0aW9uPSJzYW1wbGU2MzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTUiIGxvY2F0aW9uPSIuL3NhbXBsZTU5NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIiBsb2NhdGlvbj0iLlxzYW1wbGU4MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzBhZjE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyIgbG9jYXRpb249InNhbXBsZTg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUyIiBsb2NhdGlvbj0iLi9zYW1wbGUzNTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDAiIGxvY2F0aW9uPSIuXHNhbXBsZTgwMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI2ZGYzYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE4IiBsb2NhdGlvbj0ic2FtcGxlMjE4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI5IiBsb2NhdGlvbj0iLi9zYW1wbGUxMjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTUiIGxvY2F0aW9uPSIuXHNhbXBsZTIxNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNlOTk5MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg5IiBsb2NhdGlvbj0ic2FtcGxlNDg5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIyIiBsb2NhdGlvbj0iLi9zYW1wbGUzMjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTAiIGxvY2F0aW9uPSIuXHNhbXBsZTk1MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI1OGYxMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3IiBsb2NhdGlvbj0ic2FtcGxlODg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY5IiBsb2NhdGlvbj0iLi9zYW1wbGUzNjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzUiIGxvY2F0aW9uPSIuXHNhbXBsZTgzNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQ0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNlZGMxMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMwIiBsb2NhdGlvbj0ic2FtcGxlOTMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY1IiBsb2NhdGlvbj0iLi9zYW1wbGUyNjUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTciIGxvY2F0aW9uPSIuXHNhbXBsZTYxNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBiN2VkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY3IiBsb2NhdGlvbj0ic2FtcGxlOTY3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg4IiBsb2NhdGlvbj0iLi9zYW1wbGU5ODgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjYiIGxvY2F0aW9uPSIuXHNhbXBsZTQyNi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQ2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAyNTMwYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEyIiBsb2NhdGlvbj0ic2FtcGxlMzEyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc1IiBsb2NhdGlvbj0iLi9zYW1wbGU0NzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MSIgbG9jYXRpb249Ii5cc2FtcGxlODEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZmI0YzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMSIgbG9jYXRpb249InNhbXBsZTIzMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NCIgbG9jYXRpb249Ii4vc2FtcGxlMTk0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkxIiBsb2NhdGlvbj0iLlxzYW1wbGUxOTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk0OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQ4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZTM0ZTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQ4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOCIgbG9jYXRpb249InNhbXBsZTIzOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2IiBsb2NhdGlvbj0iLi9zYW1wbGUxNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NCIgbG9jYXRpb249Ii5cc2FtcGxlNjg0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmE4MjkwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTYiIGxvY2F0aW9uPSJzYW1wbGU5NTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjIiIGxvY2F0aW9uPSIuL3NhbXBsZTU2Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NyIgbG9jYXRpb249Ii5cc2FtcGxlMjQ3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZkNjk4Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU1IiBsb2NhdGlvbj0ic2FtcGxlMTU1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUwIiBsb2NhdGlvbj0iLi9zYW1wbGU0NTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDYiIGxvY2F0aW9uPSIuXHNhbXBsZTk0Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk1MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWIyNzg2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk1MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiIgbG9jYXRpb249InNhbXBsZTQyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY5IiBsb2NhdGlvbj0iLi9zYW1wbGU3Njkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDYiIGxvY2F0aW9uPSIuXHNhbXBsZTM0Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk5MzRmNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE4IiBsb2NhdGlvbj0ic2FtcGxlMTE4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA0IiBsb2NhdGlvbj0iLi9zYW1wbGUxMDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDkiIGxvY2F0aW9uPSIuXHNhbXBsZTIwOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTUyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IyMTBiNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ2IiBsb2NhdGlvbj0ic2FtcGxlMjQ2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU0IiBsb2NhdGlvbj0iLi9zYW1wbGU1NTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDkiIGxvY2F0aW9uPSIuXHNhbXBsZTMwOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ0YzJhZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY4IiBsb2NhdGlvbj0ic2FtcGxlNjY4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYxIiBsb2NhdGlvbj0iLi9zYW1wbGU1NjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzUiIGxvY2F0aW9uPSIuXHNhbXBsZTk3NS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUzNTg1My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ2IiBsb2NhdGlvbj0ic2FtcGxlNDQ2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI0IiBsb2NhdGlvbj0iLi9zYW1wbGU4MjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSIgbG9jYXRpb249Ii5cc2FtcGxlNzEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYTZlYjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyOSIgbG9jYXRpb249InNhbXBsZTEyOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMSIgbG9jYXRpb249Ii4vc2FtcGxlMTExLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ0IiBsb2NhdGlvbj0iLlxzYW1wbGUyNDQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk1Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NTEyY2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MSIgbG9jYXRpb249InNhbXBsZTc1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMyIgbG9jYXRpb249Ii4vc2FtcGxlNjEzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA3IiBsb2NhdGlvbj0iLlxzYW1wbGU1MDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk1Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZTMzMGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MCIgbG9jYXRpb249InNhbXBsZTE3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NyIgbG9jYXRpb249Ii4vc2FtcGxlNjg3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUwIiBsb2NhdGlvbj0iLlxzYW1wbGU0NTAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjN2UzYzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOCIgbG9jYXRpb249InNhbXBsZTUwOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNSIgbG9jYXRpb249Ii4vc2FtcGxlMjE1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk4IiBsb2NhdGlvbj0iLlxzYW1wbGUxOTgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYjFjOTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTU5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyIiBsb2NhdGlvbj0ic2FtcGxlNzIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzgiIGxvY2F0aW9uPSIuL3NhbXBsZTQzOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwOCIgbG9jYXRpb249Ii5cc2FtcGxlODA4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1NjMzZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM2IiBsb2NhdGlvbj0ic2FtcGxlNDM2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkyIiBsb2NhdGlvbj0iLi9zYW1wbGU5OTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzYiIGxvY2F0aW9uPSIuXHNhbXBsZTU3Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmVmZDIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjAiIGxvY2F0aW9uPSJzYW1wbGU2MjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzkiIGxvY2F0aW9uPSIuL3NhbXBsZTczOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMCIgbG9jYXRpb249Ii5cc2FtcGxlNDMwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzlkY2QwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTAiIGxvY2F0aW9uPSJzYW1wbGU2MTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjYiIGxvY2F0aW9uPSIuL3NhbXBsZTU2Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MSIgbG9jYXRpb249Ii5cc2FtcGxlMjUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmYzZjZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTciIGxvY2F0aW9uPSJzYW1wbGUyMTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTMiIGxvY2F0aW9uPSIuL3NhbXBsZTIxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0IiBsb2NhdGlvbj0iLlxzYW1wbGU5NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTYzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0NmNiOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEiIGxvY2F0aW9uPSJzYW1wbGU5MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NyIgbG9jYXRpb249Ii4vc2FtcGxlNjQ3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcwIiBsb2NhdGlvbj0iLlxzYW1wbGU4NzAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTY0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjNjlkMGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NCIgbG9jYXRpb249InNhbXBsZTc0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2MyIgbG9jYXRpb249Ii4vc2FtcGxlNzYzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg2IiBsb2NhdGlvbj0iLlxzYW1wbGU2ODYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3N2YwZWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTY1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNCIgbG9jYXRpb249InNhbXBsZTIyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNyIgbG9jYXRpb249Ii4vc2FtcGxlMjA3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY1IiBsb2NhdGlvbj0iLlxzYW1wbGUzNjUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NGRhNTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMiIgbG9jYXRpb249InNhbXBsZTIwMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIiBsb2NhdGlvbj0iLi9zYW1wbGU3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMyIgbG9jYXRpb249Ii5cc2FtcGxlODEzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Njcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjdhNGE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODUiIGxvY2F0aW9uPSJzYW1wbGU1ODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzQiIGxvY2F0aW9uPSIuL3NhbXBsZTgzNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NCIgbG9jYXRpb249Ii5cc2FtcGxlOTg0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmVlYmFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzciIGxvY2F0aW9uPSJzYW1wbGU5Mzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSIgbG9jYXRpb249Ii4vc2FtcGxlNjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzQiIGxvY2F0aW9uPSIuXHNhbXBsZTc3NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Njkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEyNzA0OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Njkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIwIiBsb2NhdGlvbj0ic2FtcGxlOTIwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIGxvY2F0aW9uPSIuL3NhbXBsZTgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI1IiBsb2NhdGlvbj0iLlxzYW1wbGUzMjUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjk3YWJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTciIGxvY2F0aW9uPSJzYW1wbGU1MTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjQiIGxvY2F0aW9uPSIuL3NhbXBsZTMyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIiBsb2NhdGlvbj0iLlxzYW1wbGU0My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTQ0ZmI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjQiIGxvY2F0aW9uPSJzYW1wbGUzMjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTIiIGxvY2F0aW9uPSIuL3NhbXBsZTMxMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMyIgbG9jYXRpb249Ii5cc2FtcGxlMjAzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDUwMTY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODIiIGxvY2F0aW9uPSJzYW1wbGU2ODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODYiIGxvY2F0aW9uPSIuL3NhbXBsZTk4Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNyIgbG9jYXRpb249Ii5cc2FtcGxlNTM3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDlmOWFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTYiIGxvY2F0aW9uPSJzYW1wbGU2MTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiIgbG9jYXRpb249Ii4vc2FtcGxlMjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTQiIGxvY2F0aW9uPSIuXHNhbXBsZTgxNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTczLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTljYzgxYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgbG9jYXRpb249InNhbXBsZTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzYiIGxvY2F0aW9uPSIuL3NhbXBsZTYzNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MSIgbG9jYXRpb249Ii5cc2FtcGxlNzgxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzQ1ODJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzQiIGxvY2F0aW9uPSJzYW1wbGU4NzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTEiIGxvY2F0aW9uPSIuL3NhbXBsZTY1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OCIgbG9jYXRpb249Ii5cc2FtcGxlMTg4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjhiYmRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTkiIGxvY2F0aW9uPSJzYW1wbGU1OTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTUiIGxvY2F0aW9uPSIuL3NhbXBsZTc1NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNSIgbG9jYXRpb249Ii5cc2FtcGxlMjA1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTkyOTdhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDYiIGxvY2F0aW9uPSJzYW1wbGU0NDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzQiIGxvY2F0aW9uPSIuL3NhbXBsZTUzNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NiIgbG9jYXRpb249Ii5cc2FtcGxlODk2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Nzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjU4MzM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDUiIGxvY2F0aW9uPSJzYW1wbGU3NDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzEiIGxvY2F0aW9uPSIuL3NhbXBsZTczMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NiIgbG9jYXRpb249Ii5cc2FtcGxlNTQ2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Nzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmQ2ZDZhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDMiIGxvY2F0aW9uPSJzYW1wbGU1NDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTciIGxvY2F0aW9uPSIuL3NhbXBsZTgxNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MiIgbG9jYXRpb249Ii5cc2FtcGxlMTcyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmY4YzQxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSIgbG9jYXRpb249InNhbXBsZTM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUxIiBsb2NhdGlvbj0iLi9zYW1wbGU4NTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjMiIGxvY2F0aW9uPSIuXHNhbXBsZTY2My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMzVmZGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NSIgbG9jYXRpb249InNhbXBsZTc4NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MiIgbG9jYXRpb249Ii4vc2FtcGxlNTcyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEzIiBsb2NhdGlvbj0iLlxzYW1wbGUxMTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI4MzNhMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk2IiBsb2NhdGlvbj0ic2FtcGxlMjk2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE2IiBsb2NhdGlvbj0iLi9zYW1wbGU3MTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTAiIGxvY2F0aW9uPSIuXHNhbXBsZTI5MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTgxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgwOGI2Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ4IiBsb2NhdGlvbj0ic2FtcGxlODQ4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM5IiBsb2NhdGlvbj0iLi9zYW1wbGU1Mzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTEiIGxvY2F0aW9uPSIuXHNhbXBsZTQxMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTgyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBkYzRmZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk5IiBsb2NhdGlvbj0ic2FtcGxlODk5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ4IiBsb2NhdGlvbj0iLi9zYW1wbGU5NDgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzEiIGxvY2F0aW9uPSIuXHNhbXBsZTUzMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y1M2FlOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSIgbG9jYXRpb249InNhbXBsZTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDEiIGxvY2F0aW9uPSIuL3NhbXBsZTk0MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MyIgbG9jYXRpb249Ii5cc2FtcGxlNDkzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mjg1YWU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTYiIGxvY2F0aW9uPSJzYW1wbGUxOTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDAiIGxvY2F0aW9uPSIuL3NhbXBsZTkwMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNiIgbG9jYXRpb249Ii5cc2FtcGxlODI2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWZmZjEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjkiIGxvY2F0aW9uPSJzYW1wbGU5Mjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjMiIGxvY2F0aW9uPSIuL3NhbXBsZTMyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNiIgbG9jYXRpb249Ii5cc2FtcGxlMTI2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjk2OGMwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDYiIGxvY2F0aW9uPSJzYW1wbGU5NDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDkiIGxvY2F0aW9uPSIuL3NhbXBsZTUwOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNiIgbG9jYXRpb249Ii5cc2FtcGxlMjE2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTQyODljLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDIiIGxvY2F0aW9uPSJzYW1wbGUyNDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTYiIGxvY2F0aW9uPSIuL3NhbXBsZTc5Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NiIgbG9jYXRpb249Ii5cc2FtcGxlMjU2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjEyNjU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTYiIGxvY2F0aW9uPSJzYW1wbGUzMTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyIgbG9jYXRpb249Ii4vc2FtcGxlMjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzUiIGxvY2F0aW9uPSIuXHNhbXBsZTEzNS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkYWNlYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE4IiBsb2NhdGlvbj0ic2FtcGxlNjE4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY2IiBsb2NhdGlvbj0iLi9zYW1wbGU0NjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjkiIGxvY2F0aW9uPSIuXHNhbXBsZTc2OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMjNhYTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MCIgbG9jYXRpb249InNhbXBsZTM5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NCIgbG9jYXRpb249Ii4vc2FtcGxlNTQ0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiIGxvY2F0aW9uPSIuXHNhbXBsZTI2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMTZjOTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MyIgbG9jYXRpb249InNhbXBsZTY2My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNyIgbG9jYXRpb249Ii4vc2FtcGxlODA3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE0IiBsb2NhdGlvbj0iLlxzYW1wbGUxMTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMzM1OWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTkxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIiBsb2NhdGlvbj0ic2FtcGxlNzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjciIGxvY2F0aW9uPSIuL3NhbXBsZTgyNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMCIgbG9jYXRpb249Ii5cc2FtcGxlNTAwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGI0NDMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDQiIGxvY2F0aW9uPSJzYW1wbGUzMDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTkiIGxvY2F0aW9uPSIuL3NhbXBsZTE1OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNSIgbG9jYXRpb249Ii5cc2FtcGxlMTE1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmE0MzFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTMiIGxvY2F0aW9uPSJzYW1wbGU0OTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTIiIGxvY2F0aW9uPSIuL3NhbXBsZTQxMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIiBsb2NhdGlvbj0iLlxzYW1wbGU0My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA5YWFmNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk1IiBsb2NhdGlvbj0ic2FtcGxlNjk1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgwIiBsb2NhdGlvbj0iLi9zYW1wbGUyODAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzgiIGxvY2F0aW9uPSIuXHNhbXBsZTEzOC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyMDYwMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQxIiBsb2NhdGlvbj0ic2FtcGxlMTQxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM5IiBsb2NhdGlvbj0iLi9zYW1wbGU5Mzkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NiIgbG9jYXRpb249Ii5cc2FtcGxlNjYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyYTU0ZTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwOSIgbG9jYXRpb249InNhbXBsZTIwOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNCIgbG9jYXRpb249Ii4vc2FtcGxlNDE0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU5IiBsb2NhdGlvbj0iLlxzYW1wbGU3NTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZDA4OGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NyIgbG9jYXRpb249InNhbXBsZTE0Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3NyIgbG9jYXRpb249Ii4vc2FtcGxlMTc3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzczIiBsb2NhdGlvbj0iLlxzYW1wbGU3NzMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NDU2MTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NCIgbG9jYXRpb249InNhbXBsZTg3NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNiIgbG9jYXRpb249Ii4vc2FtcGxlMjE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAxIiBsb2NhdGlvbj0iLlxzYW1wbGUzMDEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTk5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNzhlZGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNiIgbG9jYXRpb249InNhbXBsZTgyNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NiIgbG9jYXRpb249Ii4vc2FtcGxlMTY2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI2IiBsb2NhdGlvbj0iLlxzYW1wbGU3MjYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwOWZlNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjNlZWFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzliMzlmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhOWZmMGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVjYTM3Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDc2MzIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYTY4ZmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ4OGMxZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWRhNjU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YjMxMzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcwMjk5Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzM0ODQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwM2U0MGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4M2FlZGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODQ0ZTIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NWRkYjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWExNWZlMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzcxYzU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NjA4M2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQzZThjYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDRiOTlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZTlmOTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzYWIxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzI2ZTJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2RmYjA5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYwNWUwMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODU0NDA0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZGM5MDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFjOWUxZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTk5ZGUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMDAyZDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAxYWJiNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzVlY2IyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMWUwZDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc2NTRhNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY3NzE1Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNzcxNzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU2MDg5My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTMxNjJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyODU4ZDQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM4YzAyMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWFhNWU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZTIyZmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQwYzM5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTM1OGQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNjVkY2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NTdhMGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjg1NDIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMDBlY2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk3YTBkYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDYwZDUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMGJhYzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzEyODhiZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTY4Y2FlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOTk3MDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY3OTU1YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmIzZGQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTM4MGUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdiOTM5My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzQ3ZTBjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YWFmZGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU5NWQ1YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTlhZjhlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZWE4NzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdiNjUxMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OThhYmUyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNTVmYzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RjYjM5YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY2YjExZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MWI0ZTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkOTVlOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDA1NGUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MmYzMTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I5YTM0NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDY4NWVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMzlmNjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI3MDhlMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWJjOTgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YzU0NjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YTY5MjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTg0ZjYwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YzZkNTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM2MDg0Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjg2ZDQ5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMGVjNjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVlNGNmNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2IyMTkwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4Y2Y4NjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA4Mjc3MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWVjZDI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTAxYTljLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA4NDIyNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjM0NzgwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0NDcxYWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZlN2EzYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTBiZTQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZGMzOWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY0YzA1ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDdlNjVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhZTVkY2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFiNWViNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRkMTg1Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2Yzg3ODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI0Y2UwMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTM5NGYwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiZmJmZjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBmMmNlYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDRmNTdiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiOWVhNDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM5YmQ5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGIxZmUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZjg3MWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDA0ZjNmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxYjEyNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YzJjNjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZmZjljYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzgxYjI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmM2U3YWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJiNzMwOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZThmNjI3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ODE2OGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE5NmFlMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTg3Yzk3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZjA1MTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyOWI3MGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTcwMDFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYWI1NWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA2MzM2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTA4OTJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYWQyNTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRlMWJhYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzEyMDNmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMzNlZjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDcxN2ZiYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmVlNTJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjY0ZDY1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJhZDYyYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzJjYmI4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZjcyMTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY5YzlkNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWViZDgzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MmU5YjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM2YmQ3Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2JkNTIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMGI0MWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYzNzc2Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJhZGJmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MDlmY2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU1NTFhZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzA5N2I4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiZjk5MGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM3MGQ4Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWJkYjQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNTljMTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUwZjZmNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2IyYTIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMDMyMGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NmI3NzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzVmMjFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4OGU3MzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVjYTNhYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjc2OWY2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzZTBhMmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMxYzU2NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmY1ZGM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyOWE4ZmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhMmQwZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWFkNzVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTU2MzA0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJiNjA2Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTgwMzA1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYTU4MTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThkY2U4My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDllM2I3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MjI3YjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JkZWVmYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTdhNTExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMmFiNWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ1ODE1NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM0M2FmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMjI4YjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAyYzExMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzQ1NWMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYTZjYzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWEyY2U3Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGI1ZWU3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NDFmYTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIyMDFlOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjNiZTFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMmE3MTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNTMwOGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzRiNTE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1N2ViNjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQyN2RkOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjkxNGIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZmNhYzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQxMmFjNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWVmOGExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MGY5M2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyODA1NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjdmZjc2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjUyODFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYxNmNmNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDc0MDg4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMWFkZWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE0OGY1NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmE4M2VkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYTM2NWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJlZGVkOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGM5OGVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMWEwNzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM4NWQ5MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ0NDY2Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNDllNDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI3Mjg4MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTgzNTZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMzE0NDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk1Njg4OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWU1ZWI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYTNkMjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgzYThiMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWRiMWIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZDkxOTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODkxY2M2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc2ZTM2Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzYWZiYzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg5NzIzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmQ3YmNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYmQwNjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFlYjA1ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTJiMGFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZjQyYWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2YjJkYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmNmMTY2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZjhlNTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ODMyNTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGYxNTBmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkYjI1M2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBkN2UwNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2JjZWI3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMDYyNTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI3Yjk0Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTM4NmQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTM1ZWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMwOWRiMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzc5MDhhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzFmMTM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIzYjI2My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmE1ZWU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhODFjZDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFmNDU5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTAyYzhhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YjBkNWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFiN2VlOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjkwYjUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZTRmYTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIwYzcwZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdlZDMzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMGU2YWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY2OTliMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTgwNjUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOGY0NzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY5NjMyMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTdmMzg4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMGU5M2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIyZTBjYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzczZTRmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MmM0YjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMzY2OGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTg4NzAxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNDFkYTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYxZmZhNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGIzNWI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YzkyOTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgzYmY3Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGFkYWE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0YWM0ODYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzNDdiNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzczNDNiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzU1Nzg0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRlZTFhOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDBkNGU3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ZTIzODIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU4OWE1Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2IxMjQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmOTI2NGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk1Y2JhYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTVjYzNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MDZjY2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJkNGU2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVjZDFmMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1YmI1MTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNmMGRlYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTM4Y2FmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZmZjMTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I4OTMzZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWNlN2Q4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NTM0YWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNkMDYzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmIwNjk3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwYzZlYWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZTQxZWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWZhYTViLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyYWIyYTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjMzg1MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjQ4N2YxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmNzI4NWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI0ZWEzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGYyNzI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZDcxNjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM3ZjE5NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWM3MGYwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWVjMGViLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU1MWNmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGI1ZGUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYzU2Y2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ1MDM5OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2MzYjhjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNWUxODIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU1ZDk0ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjQxZTRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyY2Q1NmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY2MDlmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjExMDVlMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MThjNTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdkMWE3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmY0MGRlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMzlmMjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZhYzBiOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTg0YTFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNzBmYWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZjNDIyZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjE4MGY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZGYxZjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZThjMGE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEwODllNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNjJmMTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM2ZmYwOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTg0ZTZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZjUxZmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY3ZGMwNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmJjNWE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNDlhZDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgwYWM1Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTJmN2RkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OGVhZDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MTczNWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTg1MDhmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NjZlZjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVkNzIxYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmQ5ODU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ZTA3MDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwNTdhYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmQ1OGY2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZmIyODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVmMzA1MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjE0NzBjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzcwNDBiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkxZWQyNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTAwZmUwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNzExMzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY2MWVjNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjQ1OWZhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MzRmZmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI1NjgyYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDM0NzA0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNTYzNmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGIyMGUzMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Mjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5YjQyYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NTJkZjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc0N2U5NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGM3Yzc0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZDY3ZTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJjZjY0MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzdmOWNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxM2I4NGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Mzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVkNmNiNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Mzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Mzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDkyOTk3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3OTlmYmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNzA1MGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMmRjOTU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5N2E2YjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IzZGY4OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWJjODc3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMTViYjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg5YjcyOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTU1ZDc3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YjIxYWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJjODI1Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGE4MTI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTM0OTUyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkwNTdlNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDI3ZGY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNjEwNjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU0OGY3YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmJhYzI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNmZlYjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U4M2NlZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjA0N2Y3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NjA0NTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI4NWFiYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY0MDdiNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMTk3NzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMyYzU3NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWFjODkwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMzg5YjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE0MDZmNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzVlZGYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNzU5YTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Njcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkyOGY5MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Njcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDJmZTc3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMjVkNTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwYzEwZjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWQwNmRmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNjNlMzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZhMzJkMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTRkMjFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZGY2MDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNmZTQwMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTQ1OTZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZDI0MWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZhODg1ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjZjNGQyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTE0MzcxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ViYmY0OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGY1YjFiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1OWZlZTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJkMGFhOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTg0Y2NkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMmUwOWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU0YWM0NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGE2ZDVjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkM2ZlOWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEzMmJhNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk4ZmY1MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZjNlMDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE5OThlMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzEzZGIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNjQ2OTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE1YTkwMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDllYWRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkYTdiNjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZiMjQxOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjlmNGU3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlOGQ5YjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDE4NTY2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY4ODEyOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMmNhODUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg0ZTBkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDJhMmQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMjAyYjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk0NGFkYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODdlNzE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NjBmYjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzViNmVjMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmIzZGNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MDkzZjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZTJhNTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWNiZTQ0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxODdkZGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI5MzE4NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTM4OTI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkZjQwYzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM4NDM1MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjAyYzExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYWRmMWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI4ZmNmOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTVlYzJmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2UyNWU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlNTJlYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzMwNTQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYTlhYzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdiMjhjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjY1NzYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZTdhNGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU4Y2ZlYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjJhODJlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YTE5ZjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNhYjUxYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Mjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE1MTJhOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YTcyODMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JlNjZjZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDlhM2I2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5OGU3MWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM0NjYyYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjQ1ODRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5OGM4ODQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Mzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA1NTU2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Mzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Mzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWNkNDJmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyNTc0YjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MGY3OGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjc0YzRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYTc0ZDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzNDcyMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTg4ZDkyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZjljNjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE4ODM3Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmIwNjA4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMTUzMzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA2NTVmMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjUzYTc1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGFmYzQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlmOTMzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzljZDRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYTlmMDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlmZDZkMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTc4YzRmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YzRiZTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMxYzM3MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzM1NjA4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzYmMzOTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThiMTI1OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkzYjMyMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMjMxOGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU5YmYyZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTYxYTQ1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZTMxYmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VmZDNhYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTE4MzRiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMmQzM2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Njcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZkOGYyZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Njcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2ZjOWI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNTc0MGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZDA3NzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmNhNTkyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNmRjMGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFkYzZjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjExNTEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMzJiODAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgwZDgxZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzM5ZjgxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMjVhNzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgwNmM3Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2ExMzk2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWU1MWQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTExYmNjMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzBiYjdkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYWUxODQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMwODhkZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmQ0YzA2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZDBkZjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIwMzU3OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDRjMDE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1M2E4NjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE3YmQxZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU4YjU1ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMDUwNTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNiYmRjNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjA0ZGNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNWI3MzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZiNGM0YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmM2N2MzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMDdjYmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdiNTNkNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGIyMDlhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYzhkNWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjIyZDMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc2NjAwNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxMGYyNGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYxMjE2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWExYmI4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZGExZDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTAyYTg5NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTY3M2FiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMjRmNTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZkMmRkYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGY5NGJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NGFhOTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MWE0ZGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDhiNjk1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNjBhOTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZmY2EwMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTNhMmJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4YWFjYzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEzODQzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTcwMTRiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OTdlZjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNhNWRmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmY2NDQ1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTkwYTUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM4ZjBhZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzBjZjVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MjdkNWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg1YmUyYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Zjk5MzE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkODQ5MGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQxNGYxYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmE0MmM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4OTU0NjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU5NDdlMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Mjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA3NzJkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNmM2ZWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1NjQ3NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmQyNmIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhN2Y1NzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA3ZjY4MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDFiYjJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMTZhMGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Mzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRhZmJiYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Mzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Mzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWI1ZDkwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMTVhNjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNTRlOWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjBlOTllLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxYzRkN2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFiNTgyYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2JkNjNlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiOTY5NTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJiNGU2Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTgwNjYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YzI3ZWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc1MzQ2Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGY3YWQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjY4MmM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMzYzNhMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTg1ZmJlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MzI2NDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAyYmExZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzZhNjVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiOGZlNzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFkN2UwZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjFkNDczLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZTA1OTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI3YzliYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE0MDA0NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YjQyMGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQwNzk1Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWZmMjA5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhODM0Y2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI2Y2YwYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzhmMDQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2M2U5OTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Njcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUyMjAyZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Njcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWUwOTA3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYzExYmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4YjllNjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDg3NzlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMWFjZjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVhYWE3Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWM4ZTYyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1YTc4YzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YyN2RlZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmQyMWM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMGU2YjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjExODY1YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGFhM2E1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWIzMDk3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ2NTJkMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzQ2NzY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZTA4NjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEwNDE5NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTRiY2NjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ODRjNWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRkZWM5Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2Y2YmViLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NDk4ODMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRlOTA4Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE0MzEzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOTgwODAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwMmZmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTU2NzM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ODI0YTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkxNWM5OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDEyZTdjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ZDk0NDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVlNTFlNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWJiZGQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMGVjNTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDYwYTcyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU5NTAyYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YTFmMzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUwNmUxZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTI5Njc5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YTMxYWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRlNzZjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDM5YzY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNzNmZmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ5OWJjNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODEyZTM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczM2IyYTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMzcwZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWJiNTcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYzY5ZTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE0ZmYwYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTA2YzZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2NzhkMDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYxNWU5Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWNkZWIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMTljOWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJhZTU5YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzliN2VhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzdmMzRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JmOTBlNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWY1YjcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NmIyNDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg1ZWY5Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjk1NjhjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0OWViZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNmYWFhZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjBhZTJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZjgwNDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QwZmUxMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Mjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBkNmRhOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1Nzk3ZmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzNmM5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjcwYjM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMzllNTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc5OWU1OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWQ4ODE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZGMyYmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Mzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBiNDVmMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Mzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Mzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWVkNmNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MGJkMTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MDM1ZDQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDg5YTU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllOTE1ZGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ2YzA4MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGYzNGY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0Nzg4MTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFhMTdmZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzE2Zjc3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjODQ1NDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZiODg1ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmMwZDBmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2E1Zjk4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMxYmVlZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTQ1NWEzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZTYwNDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZmZjI5MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTY4ZDRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzZjIxNGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhlYWExZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmY3MmI3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MzcyMTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAxMmRlZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThmNWJlOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZTBjNzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwNDAzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzVhOTJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MDM5NjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVhYWMyMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzQ5Y2I0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkN2RjYmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Njcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNhMWZiNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Njcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDBhMDAwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwOWE5ZjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMWY2MmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGY2ZWNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYmUwNTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg1ODU3My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTg3ZjI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMjIzMDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThhMGYzMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWQ2YmZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMmE2ZmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY4OWI5Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWFkYTY3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjk3ZDhkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRiNmNlNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGVhMzg5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NDkwODIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJhYTQ2NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI3MTY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhOGIyZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI0ZGIyNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGRkYjk4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NzFkZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYyMDVmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4NzNiZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NjI2YzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRjYWE0MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTEwNDFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYzAwZjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVhNmZhYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTM4ZjkxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NTRhY2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRmYzRhNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjMwMzI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MTBmZTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDcxYjFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRhODJlMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMTc2YzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNhNGIwNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGE1NDZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZDE5NzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ3NjQwYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTdmOGU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0Y2Q2ODYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMwOTVhZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTQxMWVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMDAyYjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5YzZiZTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmYxMDdjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwMmMzM2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUyMDM3Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTU5NWY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1MDc1M2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI4Njg0YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWNiYzAwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ZGFjNTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNlNDNjMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2MwMmI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWFkZDYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZjZmQ0NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDBmY2QyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjc0MjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIxN2QwNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2YxNDIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYWQ5NTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNiYzAwYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDRjNTE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMjU3OTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWViOTI2Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Mjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjllYzk4NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYWI3MzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVkYzhmMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzUzNmI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMGQ4MzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0YWRiMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjUxODE4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MDUyZDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Mzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU4MjFmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Mzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Mzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjNhMTcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMTU1MzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZWQ2MGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Njk2Yjk4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMmI1MjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI1NDJmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWM0NzlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiOTUxNzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YzYjFjNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjg5NWNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MDhlMGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM2MTIyNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjJhMzliLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjQ5MjdjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIxMTk0NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTdlOTNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MzQ0MDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE2ZjczNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmI0MDdiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNTYzNmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIzZmQxYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzIxMzM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMjIzZjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc4NTAwOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWExZDA3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YTVjODguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE5ODJiMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWEwYmQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MmE1MzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc0NTI1MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTVjN2I0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5MTU2ZGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Njcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg4OGI2MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Njcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTk5NmI3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NzJjMDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5N2IzNTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2JmMDJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMGQ1MzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VhZGE0Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmIzMjY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYmRjY2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZkYzYzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzZmZGZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMzE4YzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkzMjQ5ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjYxMjAxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzNkYzIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEwMTRhMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjRmMmJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZmI3ZjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc1OTI5MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2RhNTc4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0M2I1MGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJmMGJhNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjBjODk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNTJmODMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIzY2Q3MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVmMjJmZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzODQ0MDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc2NzU5MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWUyZDE4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYjczNzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgyOGFmZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDIxNTA4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NDViY2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM2ZDFiZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTIxMzI3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhOGI3OWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmNkYTMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI3ODUxMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlYjk2YWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYyZGQwMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzA0ODM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwNTA5OTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVlMDgwYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDQyNTZhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmM2FiY2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNkYmYzMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWQyOGU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyOThlOWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMGU0MzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mjk3MjU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ODEwODcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI0MTRlNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODdiNjYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MTQ1NWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlM2Y4Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2JiZjJiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNTE4NTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU5NzQ5Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Q1ZTk5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDQzOGFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBjNmNlZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzhjZTM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiOWQ2MjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI1YTJkOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmY3OTZhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYTI4YzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFlM2Y5NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjMwYWY3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyYmNkYmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M3YmM2Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Mjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdlZGUyNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2M2FkOTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDcyNmI0ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2E1MWJlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNDRkNDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYzNmE4NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI0OGUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkY2Q3N2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Mzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM5OWQ4Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Mzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Mzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmNiZDEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMDNmZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3Y2MxNmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGUwNjVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1OGNhZjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUzMDBhYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWE3NGJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1Nzk2ZGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU5M2U1NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjc1YzhlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OGRkN2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAxMWRmMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTBmYWE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjlhN2Q1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU2NTg5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGYyNWVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MDgzMGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThlOWViMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWExZTY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNDhmMDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMyNWNhYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGMzYTMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NWQyNjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZjNDhkZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQzNjQ4MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ZmYxNDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRlMzVkOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGM4OWYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlOTBlZTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdjYjI3ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDY5ODM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZTIwMzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Njcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMxNGRkNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Njcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2E3OWE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ODFiMjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyY2QzOTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWJlZWQxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyYTJhMDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RmNzFiNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Yzc0ODM2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNGRmMDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJlN2E0OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTJkMGRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NzcxNDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEwOWJmZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDVkOTVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTY0NmRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI5NDEyYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDFjYmFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYTQ4OTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcxY2JiNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjQwMWVjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxOGU4MWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM1ZjYyMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDZkNzdmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NDJjMWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzliNDliOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM0YmEwMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2Y2Y3ZGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA0YTM0OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDZjYjE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3M2UwNTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU3MDRhZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTFlOTgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5ZjMxMDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQyZjM2ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTMwYjYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MTg2YTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMmE2YzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTNmYzFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8wIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8wIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMTIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI3MDdlYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YmI4ODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzN2I3MTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRjZjg5My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTAwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YWFiMmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTAwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIyZjJmYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTAxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMDEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDgxODM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEwMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDcyMjRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEwMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTA0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MGIyYjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTA0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBkZmZhNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMDUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODMyYTFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEwNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjdlYjZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEwNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTA4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTA4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzYzVkOWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTA4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI3YmQ4Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZlOTljYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTExIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWU0OGEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzcueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTEwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTEwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5M2Y0NWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTEwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThmYTdkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMTEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg0NDBkNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTEyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzM2Y2JmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTExMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjk0NDhiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTExNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWI1OThlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTExNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMzA0M2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTE2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTE3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlOTQ5Y2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTE3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY3Mzg2NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTE4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTE4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMTgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjdhN2YwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTExOSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTAxNjgxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MmQ3MjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTQ2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTIiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTUyLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTQ3ZGMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEyMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTIxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MWJhYmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTIxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhhZGQzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMjIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTNlMTU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEyMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmM3OTMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEyNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTI1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MTRjNzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTI1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMwMDdkNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTI2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMjYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTY2MDBlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEyNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTI4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMWU4YzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTI4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU5ZTE5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTI5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMjkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMWQ2ZjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTMueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTU3Y2JjOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzQiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTc0LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzMzYmExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEzMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTMxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Y2Y3NTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTMxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA5Nzg4Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMzIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWFjNjJmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEzMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzY2Y1ZTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTM0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc4NDc0Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMzUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTY0M2NiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEzNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTM3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NzcwYTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTM3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzllOTY2ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTM4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTM4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxMzgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzY3OTFiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEzOSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTdkNDgwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMTE1MWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTQiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTI0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhmNmI5OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNDAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDAwYWYwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE0MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMzYwOGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTQyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhmNThlMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNDMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2Q5MzZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE0NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MjE3YTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTQ1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA0MzY5YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQ2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNDYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODg1ZWU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE0NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQ4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxYmIxMzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTQ4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThiNmJiNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQ5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQ5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjYTNjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDNlMDc0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUyOC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBhZmFjNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDVkNTIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE1MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDE5OTVjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE1MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMWMwNjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTUzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E5ZjNkYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTU0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM5MzdkYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg2MTM1NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTU2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzAzMzZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE1NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZDU3NzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTU4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTU5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5OGQzOWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTU5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NjAyYjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY4NDNjYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzZhNWZhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE2MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYWRkNTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTYxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMxNjQ4Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNjIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA2NWI2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDc5M2JkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE2NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTY1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNGNmMjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTY1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMxYTk2MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNjYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcyMTA1OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTY3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNjciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTc2ZDUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE2OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3M2YwZDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTY5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkNGQzMzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQxMjA3Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTcwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTcwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZjZhNjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTcwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZkNjdkOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNzEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTYyMmM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE3MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTczLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxOGFmMzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTczIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY1ZjY2Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNzQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGE3NmNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE3NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTc2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTc2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyYjJlNWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTc2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YxZmFmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNzciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTE1YWUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE3OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTc5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNzE5YmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTc5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYzQxNzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQwYzUxYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNjM1YTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTgwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTgxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTgxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYzU2MmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTgxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxODIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxODIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI4ZjQ4ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxODIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTRiM2I5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE4MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTg0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2Y2QzYjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTg0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxODUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IwNGYyZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxODUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWZjMjc0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE4NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTg3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMGIzYjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTg3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxODgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y4YzI0OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxODgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWI0MTcxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE4OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDcyMjIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YzVjMWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTkzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTU2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTY3Mzc2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE5MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2QwZjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTkxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAyMmRmNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxOTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDU1NjNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE5MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlM2FkYmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTk0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY4MzUzMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTk1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxOTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGZmYmFiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE5NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTVmZjcyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTE5NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNmZkMTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTk4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE1ZjlkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxOTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ZDZmNzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MThhMmQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0NC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMTMwNTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg1MWMxZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOTI0YTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjAwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcwNzRhNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMDEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWY0YzMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIwMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMTVhODkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjAzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRkODllOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjA0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMDQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMThmZmExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIwNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjA2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzZTE2YTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjA2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRkMzc0Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjA3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMDciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTU2MzEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIwOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjA5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NmU0MWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjA5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjA5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMmY5MDQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNhZDUxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhNDNjNmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjEwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmZmM4NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMTEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzkxN2UzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIxMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiOWNmNjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjEzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI4NGJjNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFiZDAwOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjE1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzZhZDNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIxNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmM2MWMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIxNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjE4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNzhiMGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjE4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3OTg0YTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjE5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ZTVmNDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE1MzUyMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTUwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTE5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDcyNTc2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIyMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjIxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZTcwMzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjIxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJmYjVhNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMjIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjY3MmI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIyMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjI0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjI0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMDk1NWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjI0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZjOWFkYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMjUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmZmZWI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIyNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjI3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZjlmM2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjI3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU1YWEyNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMjgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzFkMDIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIyOSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWQ5MmM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMy54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNTdhNWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjMiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUyMS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQwNDhkNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMzAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2EzZTNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIzMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjMyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MjdiMzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjMyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI3YmYzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMzMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGQ2NmE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIzNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjM1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZmZmN2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjM1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRmODM3MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWQ4Zjk4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIzNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjM4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MjliYzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjM4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM4YjM2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMzkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNjNjc1Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjA2NTIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU2NC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E0NDdjMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNDAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjdlMTlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI0MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZTZiM2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjQyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY0MjU5ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNDMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGY0NzAwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI0NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1OTM5YzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjQ1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdlZTIyZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQ2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNDYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODY3MjhjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI0NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQ4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNGIwODcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjQ4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU4OWZjYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQ5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQ5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YTlhMTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjUueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU4MDI5Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTUueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3Y2NmNTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjUwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZjZjZiZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNTEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTI2MDQyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI1MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MDJkOWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjUzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjU0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZGI1YzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjU0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU1MjVjOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5NGI0Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjU2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWM3ZjJiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI1NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNmM2M2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjU4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTExNTE0ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjU5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYyM2I3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWUzNjk2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI2Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUyIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1Mi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MzFlNzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjYwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQwY2Q2NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNjEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWY4NTYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNjIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI2MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZGZjY2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjYzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQyZTIxNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNjQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2MyZjc0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI2NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjY2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNGViOTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjY2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FiMmViNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjY3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNjciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDFiMzMwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI2OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZDFkMTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjY5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlODBkYjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkxNTExOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzcueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjcwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjcwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzQ0ZjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjcwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI5YjNlYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNzEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzM1NjU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI3MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjczLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNGJkOTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjczIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM1MTJmMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNzQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWMwMDUwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI3NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjc2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjc2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ZTk3NTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjc2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdlYzgxYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNzciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzYzMjk2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI3OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjc5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMjgyYzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjc5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2M2E5MDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU5YzJlMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZmFjNjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjgwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY1ZGU3My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyODEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTM5ZjRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI4MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhMjViNmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjgzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJhODQyOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjg0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyODQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMzNDQ3YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyODUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGI5NTVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI4NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjg3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YTZhYTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjg3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ2ZDkzZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyODgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzI3Yjk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI4OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTI3ZTMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NjE1YTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTUzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTQ5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTg1OWUwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI5MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMGE1MDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjkxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1MTk4Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyOTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWJmNDVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI5MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNWI1NTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjk0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI2YTYxZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjk1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyOTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJlMDFlMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyOTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2U0OGE4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI5NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMTg4Y2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjk4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM2MGM1Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyOTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTc3NTU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZmMGU5NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMy54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTc4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTY3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ1MmRhMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGY0YjgxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5Mi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3Ni54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjljMmM4YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMDAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzA2NzQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMwMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyNWYxMTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzAyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE5Y2U4MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMDMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWIxODI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMwNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzA1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzA1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2OTAwM2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzA1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgxOWQxYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMDYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2I0NDkwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMwNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzA4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzA4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYjgyNzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzA4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdhOTMwOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY0NmIwNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTMyZjA4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMxIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0Ni54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU2NWZlMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGZhMTllLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMxMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMWY1MTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzEyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QzNmE3OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTRiMDA0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMxNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzE1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMWVjOWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzE1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMTRjMTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzE2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI3NDg2Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGZjYWY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMxOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMWY3NzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzE5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwZjE1NTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIyZWMxMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTIiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTkyLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTg1ZDQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMyMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzIxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMmM5OWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzIxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhjMGUwZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMjIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWZjOTExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMyMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDI2NGYyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMyNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzI1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMTZkNWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzI1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUzOWUwMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzI2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMjYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzE4ZTg5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMyNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzI4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYmZmMjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzI4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ0ZmQxMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzI5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMjkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZhODA4MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMy54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGU4YmEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMy54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMzIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Mi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEwIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxMC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYzNzZmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMzAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjIzOTU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMzMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1YTlhZTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzMyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNkMTZhMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMzMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGNlNzg0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMzNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzM1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZDc4MmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzM1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhkMTNjOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDcwN2JiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMzNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzViNDQ5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMzOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzM5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5N2FjOTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzM5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzM5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNmZhOGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJhOThjNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0NmQ0ZTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzQwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJjZDg0ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNDEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RjNmNmNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNDIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWNlOWEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM0MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQ0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwODBkMzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzQ0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRiMWFkMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQ1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNDUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGU1N2U4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM0NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQ3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiOGFmN2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzQ3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlmYWMyZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQ4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNDgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFjMjU3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQ5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQ5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEyOTg2ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWVjYmQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzMC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1NC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VhYmM3NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTEyNTA2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM1MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MzQ1MTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzUyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM3ZmZkNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGI1MTU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM1NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGVmNzgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM1NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzU2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NDY3MDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzU2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRjYWQ1NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIwODZkMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNTgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzk5NDk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM1OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWYyZTkwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzYmViODAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzYiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTY3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTQxLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGE1ZTFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM2MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzYxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMzRlZmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzYxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY1ZDc4YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNjIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZlYTZkZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWE4NWM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM2NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzY1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYjk4MGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzY1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJiMTRhNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNjYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjY1M2NlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM2NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWZmZDE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM2OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYjY4MzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzY5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4M2MwN2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUzMjgxYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmNDIzOTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzcwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NkN2Y5ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNzEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2RmZDQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM3MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzczLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwODc2OGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzczIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdkZmViOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNzQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGM4ODdjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM3NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTFjNjJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM3NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlYWViZTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzc3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAwYjkyMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzc4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzc4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNzgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjA2NGU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM3OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWQ0YzY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NWRkZGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTUwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTQiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTU0LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTZlMTEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM4MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzgxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzgxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmN2QzMzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzgxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODExNjQ5ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzODIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjdmY2U4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM4MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzg0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1N2JlYzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzg0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFjZDc2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzODUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmUwNzc1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM4NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzIwMTJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM4NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzg4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNzdjZTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzg4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY2MmQxOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzg5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzODkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQzNjkzNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjcyOWIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTJjN2M5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM5MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NGYxYTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzkxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNWQ0MmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzkyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZhOGVjNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzOTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjhhZTdjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM5NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzVmYmJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM5NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzk2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNGM4MDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzk2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEzMTUyZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzk3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzOTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjNlOGM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM5OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzk5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzk5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMTE0MTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzk5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzk5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzZjNjBjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg3YWI2My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzEiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTMxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzciIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTM3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNjNjE0Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTAxNTc4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQwIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZjJhMWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDAwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk3NDc2NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MDEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTE1OTVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQwMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjQ1YmU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQwMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDA0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzY2FkYjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDA0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYzMTQ1Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MDUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjliZGM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQwNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDA3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOWEwOTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDA3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ1NjY2Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDA4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDA4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MDgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzgyZjdmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQwOSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2E3NjI3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNGU3YmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTEwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTM1LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTJiOGQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQxMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDExLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMGI4NjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDExIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDExIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQwZDJiMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDEyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQxNjdkMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODkxYWM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQxNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDE1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMDQ3MmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDE1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk5ZWIwNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDE2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTAzNTg5Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTZkZGU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQxOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMWY1ZjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDE5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhM2U3YzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA4ZDhjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODUueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmOWViMjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDIwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI0NTJmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MjEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTE3MDMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MjIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQyMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NjIyOTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDIzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDI0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDI0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3YjE3ZTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDI0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA4YzU5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MjUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzEwZTlhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQyNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDI3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1N2IyY2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDI3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mjgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VkN2RkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MjgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM0MjZlNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDI5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MjkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUzZDMwMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0My54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjkzMWM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0My54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQzIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIwIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUyMC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI3NjhkNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MzAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxMDRiOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDMxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MzEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFlNjE5NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MzIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDVhZjg1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQzMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyOGExOGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDM0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjllNjk0Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MzUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzkxYjYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQzNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDM3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ZjY1Y2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDM3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc5OGUxNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDM4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDM4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MzgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTkxMDQxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQzOSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTAzM2FlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlYmVhNjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjQiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTY0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTEiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTkxLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzdkM2NjYjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDQwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlmNDhmNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NDEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzdiODZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ0MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTVlNjgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ0MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQ0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OWRlYTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDQ0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFmOWFhMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQ1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NDUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDkzYTQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ0NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQ3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZGVjNDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDQ3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY3YjhkYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQ4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQ4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NDgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTRjOWU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ0OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWRhNzVjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MDQ3YTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTExLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzQiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTc0LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjk0OGUyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ1MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDUxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMzdlODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDUxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA1OTZkNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTc0OTI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ1MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDU0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4OGFmNTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDU0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE5MjcwMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTM0MDNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ1NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNDhkODAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDU3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0ZjJkNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NTgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmZmNWU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ1OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODA5ZmU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ni54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYWQ3NTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTcwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk5NDg2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NjAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjQ0M2IwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ2MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDYyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYzg3ODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDYyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwZGJlYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVjMWQ1YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NjQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg1YzE0ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDY1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NjUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWYxMjg3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ2NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDY3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMWExMmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDY3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Njgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U0NTQ2OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDY4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDY4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NjgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjJhZDcxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Njkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ2OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWE3NjEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ny54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNWY1MjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTQ1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzMiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTMzLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDU5MzU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ3MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDcxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNWQwOTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDcxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxYzUyZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDcyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDcyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NzIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTI0YThiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ3MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDc0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MDI5YjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDc0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDc1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5Zjg2YTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDc1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI1YmYwNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDc2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjg0M2ZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Nzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ3NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDc4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMmIzMjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDc4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Nzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA4NzQxZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0NzkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBiNTUzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWE2NWZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMxIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzMS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1OC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0ODAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJhNTQ2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0ODAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4ODYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0ODEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ4MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ODg0MTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDgyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYTU5MjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDgzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0ODQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUwMzVlZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDg0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0ODQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmYxZmVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0ODUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ4NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDg2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYmNjY2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDg2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDg3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMDNhZGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDg3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDg4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMjE4YTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDg4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0ODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkyYzk4Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDg5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0ODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0ODkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU1ZmJiZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzY1ODFjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ5Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU4IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1OC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc5IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3OS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU3NGVmNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0OTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTMxNjc1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ5MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZTNhNTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDkyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI2M2FjNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0OTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzIzNzcxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ5NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDk1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0Mjg0YTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDk1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUwODMxZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0OTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWNkZTBjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ5NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMGU1MzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDk4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIzNWU4NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0OTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMjI3YTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTc3ZTg2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzOC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUxNi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUzIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1My54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZTNmYzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBmNjgwMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzZTFkZDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTAwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q2MGNjNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MDEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU4YWZmYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MDIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTdlOGY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUwMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTA0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMDMwMGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTA0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRlNjg1Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MDUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDhjZjNmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUwNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTdlOWJmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUwNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGNkNDFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUwOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTA5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiOTNkMzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTA5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTA5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNDczOTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU0YmM0ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2FiNGZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUxMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTExLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZWE5YWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTExIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTExIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNjY2IxMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTEyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2IxNzkyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUxMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTE0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YTkwZWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTE0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY3NGJjNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTE1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODJlOWQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUxNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmRmODI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUxNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTE4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZTBmMTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTE4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQzODg2Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTE5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTE5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTU5YzE4YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Mi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2FkNzE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Mi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJmZDU1ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MjAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzhjZmQ0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUyMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZGIyMWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTIyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI5YzFiOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWVhN2RjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUyNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGQxNmM2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUyNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTI2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0OTU5YzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTI2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Mjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY4NTg0Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTI3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MjciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjc5MWU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Mjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUyOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTI5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzODFlMTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTI5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTI5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MGM1ZTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1My54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhOWJhZTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTQzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTQ3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODgyZmMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUzMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTMxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MjNmMWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTMxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEzNjkyYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MzIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzE3ZDc2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUzMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxNGVmNWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTM0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdmNzQ2NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MzUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWM5MTgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUzNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTM3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTM3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NmY2ZjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTM3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTM4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YTcxMDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTM4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Mzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Mzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg3YTU5YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MzkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg3MTQ5NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmM3NzgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4OC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkyYjAwZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NDAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGZmMzM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU0MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwN2IwM2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTQyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQwY2ViNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NDMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDljYjA5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU0NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliZjExYjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTQ1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RkZWY0Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQ2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NDYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGQ3MWY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU0NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQ4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxM2YyOWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTQ4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEyODA2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQ5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQ5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRlZTJhOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODM5ZTgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkxIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU5MS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyOGQyZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjQ5NzQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU1MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMDdjZDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTUyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzZmNjMjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTUzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM3YWNlYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTU0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTNmZmQxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU1NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTU2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYzM2ZWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTU2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUyNmNhMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTU3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2Y5NWVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU1OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzMzMTU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU1OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGNhNmY2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ni54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDdiYTVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ni54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU2Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyNC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4OS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEzZjJjNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NjAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWVjMTRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU2MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTYyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMGYzMGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTYyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI3YWU1Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1YzUxYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NjQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2QyNGJiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU2NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTY2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5OTE5YTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTY2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Njcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Njcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJmYmU3Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTY3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NjciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODA3NDE2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Njgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU2OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwMmRlZjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTY5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZDc0OTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ny54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ODJjZmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTciPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUyMi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUzNDNhNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTcwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTcwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTcwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NzAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzRjYzFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU3MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTcyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZmZjNzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTcyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTcyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRlODAwYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTczLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTczIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NzMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTNjNmEzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU3NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTc1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNjk1ZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTc1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVjYTM0My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTc2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDZlMjJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Nzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU3NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTc4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNGZlMWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTc4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Nzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM0YjlkMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NzkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNkNTdjYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTg2ZGEzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU4Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE5IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUxOS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYzIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU2My54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkwMTZmMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTgwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1ODAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmU5MmIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU4MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTgyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4Y2U5MGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTgyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc0MzM2NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTgzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1ODMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjFmNWE4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU4NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTg1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhYzhiN2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTg1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNiMjNmZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTg2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1ODYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDIyMWQyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU4NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTg4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZGI2MTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTg4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUxY2IxNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTg5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1ODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1ODkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIxNmU2My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThkMmQ4NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMGNiYjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTkwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEyZjk0OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1OTEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWU2MTM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU5MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1YjBhOWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTkzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI0ODQ2Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTk0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1OTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWVkN2I2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU5NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTAwMDk4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU5NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTk3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMzVmYTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTk3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmYWIzZGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTk4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBiMWNlYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1OTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhODViMTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjEyMGEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Mi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNjQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGU0YWJiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNDA1M2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjAiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTQiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTk0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTMyLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGM5Y2FmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYwMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjAxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZGJlMzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjAxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkZDk1Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjAyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MDIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjI4ODhmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYwMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjA0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlM2U3NzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjA0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI4ZWEzNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MDUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU4NThkMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjA2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MDYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDg0N2EzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYwNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjA4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjA4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNjQ5MmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjA4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMyNTljYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUwYzM5Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWFhMjM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYxIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4MC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA4OTdhZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDE2ZjUyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYxMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ODg4NDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjEyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVlNDdhZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NmYWI5ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDBjZmEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYxNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NDQ5M2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjE2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRlZmIzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmM2ZmIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYxOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYzc2OTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjE5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwYTBmNzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZDFjMWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJjZTFmMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjIwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MjAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGYwZDZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYyMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjIyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMjJmMGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjIyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGViNjE2Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjIzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmNhNGQ5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYyNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjI1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjI1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMDcwZjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjI1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkwNzU3Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjI2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MjYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2JiZDRiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYyNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjI4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjI4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MjU4ZjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjI4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMzMzAyMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjI5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MjkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU1YzMxOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2My54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTNjZWE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2My54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYzIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzMC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTUueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwOTQ3MzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjMwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRlNWFhNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MzEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2E4NTI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYzMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZWI3MmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjMzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZlYTZmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjM0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MzQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDk5NmM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYzNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjM2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YjcxNTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjM2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY5ZWJmOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjM3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MzciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGNiOTk2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYzOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjM5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3ZjA2YTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjM5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjM5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlYjQ3OWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q5YWU2OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMTcwYTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjQwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRjMWU0Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NDEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzZjM2MxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY0MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjODE3NzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjQzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY5MTJhMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NDQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWNlYjg4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY0NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQ2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQ2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3OGY0ZjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjQ2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNhNzQ2Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NDciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTZmZjU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY0OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQ5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4Y2Y2N2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjQ5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyY2JiMTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGViNjhlYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDUueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNTA0ZjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjUwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJhNDFiYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NTEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM2MzNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY1MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZmZmMmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjUzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ4MGRiNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjU0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmI4MzI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY1NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjU2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkOTViYTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjU2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMGIxZWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjU3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgwMWU3Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NTgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjNkNzMwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY1OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGY5MzRmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Ni54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ZTJiZDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0OC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3My54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU3NTA5ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NjAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmNkYzlhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY2MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0YjJmYjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjYyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMjExMzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjYzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EzOGJmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NjQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDdmZDdhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY2NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjY2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZWNjZTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjY2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Njcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Njcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTczZWNjNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjY3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NjciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDVkMTgzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Njgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY2OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjY5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZDBlYTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjY5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjY2JkMTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAwMWQyMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjcwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjcwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZWFjZjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjcwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTliODliNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NzEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGY1MWM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY3MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjczLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzM2FhM2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjczIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk2MDY5Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NzQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljYTgzNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjc1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NzUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTI1NmRmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY3NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjOTA5YTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjc3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Nzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRlOGQ0My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjc4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjc4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NzgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTczMDhiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Nzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY3OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjBiY2VmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMWViNzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTkiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTE5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjQiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTY0LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzQ5NDk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY4MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjgxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjgxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNTk0NjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjgxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBhOTk2NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2ODIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjE4MGQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY4MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjg0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NTYwNTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjg0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlkMTQ5My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2ODUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzgwMGMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY4NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjg3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNTA5NmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjg3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QxYmY4Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2ODgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFjMmZjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjg5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2ODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2ODkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhlOWQwMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDVjNTNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY5Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3OC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMyODZiZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2OTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTAzMGU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY5MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZTdjZGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjkyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFiNzZmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2OTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODFlNzkwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY5NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjk1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyOTJlNjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjk1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRjNjY3Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2OTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODQ3YjIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY5NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMTFjNDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjk4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBjN2ExNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2OTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmE3YjAyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVjNzY5ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNy54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmVjY2IyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MzA3MWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzAiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjYiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTI2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzMiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTMzLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODc2OGU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcwMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzAxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZGMyYTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzAxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVmNDk0Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzAyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MDIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDhiZTQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcwMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWVmYTIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcwNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2ZlYzg4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcwNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzA2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYTMyMTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzA2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM3YTE1ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzA3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MDciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODhkZWE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcwOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzA5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzA5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxODE2ZmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzA5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzA5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MzcyNjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZhOWE2OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRkM2MyZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzEwY2IzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcxMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlYzgzMmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzEyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNlYTIzMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWZjZjQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcxNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzE1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZGFhZjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzE1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NzczZWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzE2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE5NTVhMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTJlMTg4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcxOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZjA2MWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzE5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjOTU5MTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEwNWMwZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODcueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMjQ1MTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzIwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMGQzMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MjEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjI4YmY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MjIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcyMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YTBjMTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzIzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFhYzBiMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzI0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MjQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGJiOGI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcyNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzI2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOTI5ZjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzI2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Mjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjMzZGQyOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzI3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MjciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGFlYjM2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Mjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcyOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzI5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxM2NjYWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzI5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzI5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MzE5MTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3My54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZmJjZDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTEwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzYiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTM2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjQ0Mjg4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTczMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzMxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkMDkxNmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzMxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y3YzlkYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MzIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2E3MTFiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTczMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZmYxNjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzM0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEzNGY2MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzM1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MzUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY1ZGQyZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmE4OTVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Mzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTczNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzM4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5OGQ1YjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzM4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Mzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Mzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg1ZDc2Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MzkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNiMjFkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTg3ZDAxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc0Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEwIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxMC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE4NmM1YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NDAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmUxODVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc0MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMGU4NWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzQyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI3YTZjMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NDMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmIxZjRlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc0NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2YjYyMzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzQ1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NmMjYyZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQ2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NDYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWU0NmZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc0NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmFlNDMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc0OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQ5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MDg3YzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzQ5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMzEyOTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5OTEzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMTkxOTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzUwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE0ZTZmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NTEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTI1MTBkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc1MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiODA2ZjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzUzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ2Y2ZiYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzU0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTE2NTNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc1NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzU2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyOWMxYTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzU2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI1NjVmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWY5NTFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc1OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzU5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NWQ1NmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzU5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5Yzc5NWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRmMmU2MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZjUyNGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzYwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8wIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMDkzYWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzYxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNiMDdhNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NjIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZiNzBlZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWZkYThhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc2NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzY1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NmZjZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzY1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhlZDdjYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NjYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjUzODk4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Njcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc2NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzY4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzY4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNDMzNDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzY4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Njkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Njkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQwMWJlNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NjkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUxMWUyYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ny54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2NmNjhmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ny54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU1IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1NS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThjOTlhNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzcwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzcwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzcwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NzAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjZjMDA3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc3MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzcyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzcyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMjUxMDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzcyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzcyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBjNjc1Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzczLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzczIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NzMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzUyZGU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc3NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzc1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMzdjOTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzc1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM2YTNmZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzc2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWRkODExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Nzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc3NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzc4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZTY5MDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzc4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Nzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIzZThkNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NzkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVkMjc0Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjM0ZTdkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNjkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyYjMzODMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzgwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZmNjk5OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3ODEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTM2OGYwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc4MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMDUzZjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzgzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAwMjkyMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzg0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3ODQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2YyNGE2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc4NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzg2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MjkzMDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzg2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ1NjY0MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzg3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzg3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3ODciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWRkZWRlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc4OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWIxODllLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc4OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzY0YWRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MDliN2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTQ1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTI5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjE1OTdkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc5MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGU4YWYyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc5MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMWJhZTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzkyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVhMWEzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3OTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjU5ZDk4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc5NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzk1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5YWZlNDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzk1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI1MmU5OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3OTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjYxMGYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc5NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2NWZmMTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzk4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc3NTc4ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3OTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YTA3NTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWMwZWNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEyIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUxMi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU1IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1NS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNmQyZGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk3N2U1MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjcueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODAwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODAwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NzY3MWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODAwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1YmI3Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODAxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MDEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODg0ZTc2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgwMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODAzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODAzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MDY5NDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODAzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTExLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNjMjE3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODA0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MDQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc5ZTU4Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MDUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzBmNjNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgwNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODA3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMDJlMTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODA3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI1OTRlNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODA4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MDgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdiMTU3Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODA5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODA5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMxMGVmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzNlNzI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMTUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODEwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODEwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ODcxZDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODEwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEyMWU1ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODExIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MTEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGU0MmEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgxMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODEzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODEzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZWI0ZTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODEzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNjNjVmNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWVkN2YxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgxNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MWZhODUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODE2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU3YTcxYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTQ1NWQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgxOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YTY3ZjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODE5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhODYyYzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0YmNjZmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODIiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTMwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTM5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTIwYzM2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgyMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODIxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1NDZkNmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODIxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RkZDE4Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MjIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjVkMTUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgyMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODI0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODI0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhM2ExYzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODI0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBlOGQ4Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MjUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTI4ODE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgyNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODI3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYTYxOWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODI3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mjgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RkY2RhNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MjgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGIwZDdiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgyOSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzIyZGU3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4My54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTdlMDU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4My54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgzIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkxIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3My54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc2ZTU5OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MzAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDhhMTcyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgzMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxNWEyNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODMyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJjNjNiNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MzMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmFlNzE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgzNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODM1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNWQwYTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODM1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNhYjBkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWI4OTNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgzNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODM4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNTIwNzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODM4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM2YzQ4OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODM5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MzkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMyMzIwMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjQxZDlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyMy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4OC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFlZTE3Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NDAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjM3YTMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg0MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNjQ3ZGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODQyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVkMmE0Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NDMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOThlMzM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg0NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4OTJkYjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODQ1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU2OGUxYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQ2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NDYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjQ5NmY1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg0NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQ4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZDM3OTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODQ4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVkY2FlNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQ5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQ5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAwZGRiYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2VjNWRiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU5Mi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEyMjA1ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjdiNmYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg1MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkOGI0ZjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODUyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI0NjIyNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTVlZTgwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg1NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODU1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmZDlhMzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODU1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkzZGQ5ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODU2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWU4ZmI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg1NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ZjEwNzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODU4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA3YTQyYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODU5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJmNDgwMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Ni54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODk4ZGIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Ni54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg2Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkZTQ2ZTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODYwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg2ZWM5Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NjEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFmNTdlZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NjIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWY0OWE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg2MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODY0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYmNjYjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODY0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZmYTExMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODY1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NjUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzk5YzQ1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg2NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODY3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYjYzNjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODY3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODY4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODY4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMDI3MDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODY4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Njkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Njkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNjZTdjZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODY5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NjkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMmVhZWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBhNTIxNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTIiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTkyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTEiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTUxLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDY3ZmJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg3MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMWZlZGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODcxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA3NDRhMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODcyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NzIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjA4MzI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NzMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg3MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODc0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNjgwNzguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODc0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NzUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBkZjdiNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODc1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NzUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjdhN2FiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg3NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODc3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjNGUyZDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODc3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Nzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Nzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZjYjQxNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODc4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NzgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Nzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Nzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY2ODU5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NzkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU4OGY4NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjgyNzZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg4Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyNS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE5IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxOS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE0ZjY1NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4ODAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjVjY2U1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg4MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMThhODQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODgyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzNjYwZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4ODMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTgyMzM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg4NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODg1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0Y2M3ODYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODg1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ1NWRhZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODg2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4ODYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODg5ZTQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg4NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODg4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NTljYmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODg4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4ODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJlYmNhMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODg5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4ODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4ODkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU3MmMxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVhMjA2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMyYzg3MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4OTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDVjNTY1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg5MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5OWEyN2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODkyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YzNTJmOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4OTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWIyNmY2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg5NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODk1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlODQ0ZjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODk1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE5OTA2ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4OTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmNhNjdiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg5NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4OTg1YTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODk4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRjZDdmZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4OTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTRlMjQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFmNTU3NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNDIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWQ2MTQ0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwODQ4ZWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTAiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMzIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUzMy54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJmMGIxMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTAwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MDAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODc3NTQ0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkwMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTAyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTAyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMjJjMmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTAyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhjNjM3My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MDMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FiYzUxZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTA0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MDQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2Y4Yzc3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkwNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTA2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZTU0ODYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTA2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTA3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMTM5ZDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTA3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgwMzkyOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTA4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTA4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MDgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWIzY2Q2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkwOSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDYxY2RhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMzdhMjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTEiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTMyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzYiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTM2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzI3ODFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkxMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTExLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3M2E4NjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTExIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTExIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M3YWY3Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTEyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAxNGUzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzcxNzJiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkxNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTE1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNDI3M2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTE1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRjOWFiOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTE2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTFkMjI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkxNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTE4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NjFhY2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTE4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZhZWFmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTE5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTE5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q4OGQ4MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2Q2YjU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc5IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3OS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EzMmEwOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTIwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MjAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGY5ZDRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkyMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTIyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMTgxZWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTIyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJjM2NkMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTIzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjMyZTUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkyNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzNiMjFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkyNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTI2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTI2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NmZlNDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTI2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk1YWU5Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTI3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MjciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzVjZGY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkyOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTI5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTI5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ODU1OTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTI5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTI5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMjUwNDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI3NmU2Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTg2OWE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkzMCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNDc0MzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTMxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU2YTJhYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MzIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjY2QxZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MzMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGNiNmMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkzNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTM1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNzYzMDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTM1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY4ODJkZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFjYmM2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTM3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MzciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTE1NThmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkzOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTM5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZTI4NDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTM5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTM5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMTUwOTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkwNjQ5NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODgiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTg4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTliNWU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk0MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMGYyN2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTQxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUxNjcxMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NDIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmY3MTQxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk0MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQ0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0Y2EyMjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTQ0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxYjJmZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQ1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NDUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTNmZjVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk0NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQ3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NmVjODAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTQ3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZmYWJhMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQ4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQ4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NDgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTQ2NTUwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk0OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ0ZTRlMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjkyZTBhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUxNS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MTA5NWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTUwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE4ZTE5Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NTEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWYxYWIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk1MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZTMzZGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTUzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQxMDI3YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTU0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTRhYTkxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk1NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTU2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNjFiMzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTU2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBiZmEyMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWIyYjAxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk1OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTU5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNTBjOGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTU5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzZDU2ZDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxNDkzMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0OWZhNzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTYwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkzODc4Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NjEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA1NDVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NjIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk2MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NWQyYWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTYzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NjQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NjQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlNmZjZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NjQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGEyMDBiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk2NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGM2OGI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk2NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTY3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0YmYzYjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTY3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Njgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Njgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNiNTZlZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTY4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTY4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NjgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjVhMTg2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Njkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NjkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk2OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTVjM2NkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Ny54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjRiYzM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Ny54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk3Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTcwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTcwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYmRiMjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTcwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThlYmY1MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTcxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NzEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGIxMjRiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk3MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTczLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1Y2U2NDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTczIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQzZjI1OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NzQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2FiOTE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk3NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTc2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTc2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MjJkMDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTc2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Nzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Nzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJiM2FjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NzciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTI5MmE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Nzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk3OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTc5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMTEzNzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTc5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMDMwYzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM4ZDgyNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxM2FhMDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTgwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxNTUyZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTgxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5ODEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTg0MWY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk4MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTgzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ODZmMTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTgzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM0NDUyNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTg0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5ODQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Yjc3YmIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk4NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTg2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NzRkMjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTg2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA0OTdjZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTg3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5ODciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFhMmQ3NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5ODgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWQ4OTg3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5ODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5ODkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk4OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGViYWRmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNzlkMWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzQiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTM0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTYyLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzBiN2RiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk5MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTkxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NWJkMGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTkxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMzODdmNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5OTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGFmMmY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk5MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTk0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YWUzNjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTk0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY4ZmM0ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTk1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5OTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzEyYWJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk5NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTk3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTk3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NDczMWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTk3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNzk5YjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTk4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM3MDNhYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5OTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBLQi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBLQi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTA0N2I5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwS0Iud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDMxMDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IkRlZmluaXRpb24iIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scyI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24wIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTAiIG5hbWU9IklucHV0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UwIiBuYW1lPSJPdXRwdXQwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcwIiB0eXBlPSJ0bnM6UG9ydFR5cGUwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24wIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDAiIGJpbmRpbmc9InRuczpCaW5kaW5nMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxIiBuYW1lPSJJbnB1dDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMSIgbmFtZT0iT3V0cHV0MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMSIgdHlwZT0idG5zOlBvcnRUeXBlMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMiIgbmFtZT0iSW5wdXQyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIiIG5hbWU9Ik91dHB1dDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIiIHR5cGU9InRuczpQb3J0VHlwZTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MiIgYmluZGluZz0idG5zOkJpbmRpbmcyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMiIG5hbWU9IklucHV0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzIiBuYW1lPSJPdXRwdXQzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczIiB0eXBlPSJ0bnM6UG9ydFR5cGUzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMiIGJpbmRpbmc9InRuczpCaW5kaW5nMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0IiBuYW1lPSJJbnB1dDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNCIgbmFtZT0iT3V0cHV0NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNCIgdHlwZT0idG5zOlBvcnRUeXBlNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNSIgbmFtZT0iSW5wdXQ1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUiIG5hbWU9Ik91dHB1dDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUiIHR5cGU9InRuczpQb3J0VHlwZTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NSIgYmluZGluZz0idG5zOkJpbmRpbmc1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYiIG5hbWU9IklucHV0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2IiBuYW1lPSJPdXRwdXQ2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2IiB0eXBlPSJ0bnM6UG9ydFR5cGU2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYiIGJpbmRpbmc9InRuczpCaW5kaW5nNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3IiBuYW1lPSJJbnB1dDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNyIgbmFtZT0iT3V0cHV0NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNyIgdHlwZT0idG5zOlBvcnRUeXBlNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOCIgbmFtZT0iSW5wdXQ4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgiIG5hbWU9Ik91dHB1dDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgiIHR5cGU9InRuczpQb3J0VHlwZTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OCIgYmluZGluZz0idG5zOkJpbmRpbmc4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkiIG5hbWU9IklucHV0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5IiBuYW1lPSJPdXRwdXQ5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5IiB0eXBlPSJ0bnM6UG9ydFR5cGU5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkiIGJpbmRpbmc9InRuczpCaW5kaW5nOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMCIgbmFtZT0iSW5wdXQxMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMCIgbmFtZT0iT3V0cHV0MTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMCIgYmluZGluZz0idG5zOkJpbmRpbmcxMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMSIgbmFtZT0iSW5wdXQxMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMSIgbmFtZT0iT3V0cHV0MTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMSIgYmluZGluZz0idG5zOkJpbmRpbmcxMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMiIgbmFtZT0iSW5wdXQxMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMiIgbmFtZT0iT3V0cHV0MTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMiIgYmluZGluZz0idG5zOkJpbmRpbmcxMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMyIgbmFtZT0iSW5wdXQxMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMyIgbmFtZT0iT3V0cHV0MTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMyIgYmluZGluZz0idG5zOkJpbmRpbmcxMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNCIgbmFtZT0iSW5wdXQxNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNCIgbmFtZT0iT3V0cHV0MTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNCIgYmluZGluZz0idG5zOkJpbmRpbmcxNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNSIgbmFtZT0iSW5wdXQxNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNSIgbmFtZT0iT3V0cHV0MTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNSIgYmluZGluZz0idG5zOkJpbmRpbmcxNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNiIgbmFtZT0iSW5wdXQxNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNiIgbmFtZT0iT3V0cHV0MTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNiIgYmluZGluZz0idG5zOkJpbmRpbmcxNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNyIgbmFtZT0iSW5wdXQxNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNyIgbmFtZT0iT3V0cHV0MTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNyIgYmluZGluZz0idG5zOkJpbmRpbmcxNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOCIgbmFtZT0iSW5wdXQxOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOCIgbmFtZT0iT3V0cHV0MTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOCIgYmluZGluZz0idG5zOkJpbmRpbmcxOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOSIgbmFtZT0iSW5wdXQxOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOSIgbmFtZT0iT3V0cHV0MTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOSIgYmluZGluZz0idG5zOkJpbmRpbmcxOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMCIgbmFtZT0iSW5wdXQyMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMCIgbmFtZT0iT3V0cHV0MjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIwIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMCIgYmluZGluZz0idG5zOkJpbmRpbmcyMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMSIgbmFtZT0iSW5wdXQyMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMSIgbmFtZT0iT3V0cHV0MjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIxIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMSIgYmluZGluZz0idG5zOkJpbmRpbmcyMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMiIgbmFtZT0iSW5wdXQyMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMiIgbmFtZT0iT3V0cHV0MjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMiIgYmluZGluZz0idG5zOkJpbmRpbmcyMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMyIgbmFtZT0iSW5wdXQyMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMyIgbmFtZT0iT3V0cHV0MjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIzIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMyIgYmluZGluZz0idG5zOkJpbmRpbmcyMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNCIgbmFtZT0iSW5wdXQyNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNCIgbmFtZT0iT3V0cHV0MjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI0IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNCIgYmluZGluZz0idG5zOkJpbmRpbmcyNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNSIgbmFtZT0iSW5wdXQyNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNSIgbmFtZT0iT3V0cHV0MjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI1IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNSIgYmluZGluZz0idG5zOkJpbmRpbmcyNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNiIgbmFtZT0iSW5wdXQyNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNiIgbmFtZT0iT3V0cHV0MjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI2IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNiIgYmluZGluZz0idG5zOkJpbmRpbmcyNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNyIgbmFtZT0iSW5wdXQyNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNyIgbmFtZT0iT3V0cHV0MjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI3IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNyIgYmluZGluZz0idG5zOkJpbmRpbmcyNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOCIgbmFtZT0iSW5wdXQyOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOCIgbmFtZT0iT3V0cHV0MjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI4IiB0eXBlPSJ0bnM6UG9ydFR5cGUyOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOCIgYmluZGluZz0idG5zOkJpbmRpbmcyOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOSIgbmFtZT0iSW5wdXQyOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOSIgbmFtZT0iT3V0cHV0MjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI5IiB0eXBlPSJ0bnM6UG9ydFR5cGUyOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOSIgYmluZGluZz0idG5zOkJpbmRpbmcyOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMCIgbmFtZT0iSW5wdXQzMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMCIgbmFtZT0iT3V0cHV0MzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMwIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMCIgYmluZGluZz0idG5zOkJpbmRpbmczMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMSIgbmFtZT0iSW5wdXQzMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMSIgbmFtZT0iT3V0cHV0MzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMxIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMSIgYmluZGluZz0idG5zOkJpbmRpbmczMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMiIgbmFtZT0iSW5wdXQzMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMiIgbmFtZT0iT3V0cHV0MzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMyIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMiIgYmluZGluZz0idG5zOkJpbmRpbmczMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMyIgbmFtZT0iSW5wdXQzMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMyIgbmFtZT0iT3V0cHV0MzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMzIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMyIgYmluZGluZz0idG5zOkJpbmRpbmczMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNCIgbmFtZT0iSW5wdXQzNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNCIgbmFtZT0iT3V0cHV0MzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM0IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNCIgYmluZGluZz0idG5zOkJpbmRpbmczNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNSIgbmFtZT0iSW5wdXQzNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNSIgbmFtZT0iT3V0cHV0MzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM1IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNSIgYmluZGluZz0idG5zOkJpbmRpbmczNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNiIgbmFtZT0iSW5wdXQzNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNiIgbmFtZT0iT3V0cHV0MzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM2IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNiIgYmluZGluZz0idG5zOkJpbmRpbmczNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNyIgbmFtZT0iSW5wdXQzNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNyIgbmFtZT0iT3V0cHV0MzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM3IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNyIgYmluZGluZz0idG5zOkJpbmRpbmczNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOCIgbmFtZT0iSW5wdXQzOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOCIgbmFtZT0iT3V0cHV0MzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM4IiB0eXBlPSJ0bnM6UG9ydFR5cGUzOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOCIgYmluZGluZz0idG5zOkJpbmRpbmczOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOSIgbmFtZT0iSW5wdXQzOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOSIgbmFtZT0iT3V0cHV0MzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM5IiB0eXBlPSJ0bnM6UG9ydFR5cGUzOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOSIgYmluZGluZz0idG5zOkJpbmRpbmczOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MCIgbmFtZT0iSW5wdXQ0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MCIgbmFtZT0iT3V0cHV0NDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQwIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MCIgYmluZGluZz0idG5zOkJpbmRpbmc0MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MSIgbmFtZT0iSW5wdXQ0MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MSIgbmFtZT0iT3V0cHV0NDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQxIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MSIgYmluZGluZz0idG5zOkJpbmRpbmc0MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MiIgbmFtZT0iSW5wdXQ0MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MiIgbmFtZT0iT3V0cHV0NDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQyIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MiIgYmluZGluZz0idG5zOkJpbmRpbmc0MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MyIgbmFtZT0iSW5wdXQ0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MyIgbmFtZT0iT3V0cHV0NDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQzIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MyIgYmluZGluZz0idG5zOkJpbmRpbmc0MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NCIgbmFtZT0iSW5wdXQ0NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NCIgbmFtZT0iT3V0cHV0NDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ0IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NCIgYmluZGluZz0idG5zOkJpbmRpbmc0NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NSIgbmFtZT0iSW5wdXQ0NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NSIgbmFtZT0iT3V0cHV0NDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ1IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NSIgYmluZGluZz0idG5zOkJpbmRpbmc0NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NiIgbmFtZT0iSW5wdXQ0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NiIgbmFtZT0iT3V0cHV0NDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ2IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NiIgYmluZGluZz0idG5zOkJpbmRpbmc0NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NyIgbmFtZT0iSW5wdXQ0NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NyIgbmFtZT0iT3V0cHV0NDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ3IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NyIgYmluZGluZz0idG5zOkJpbmRpbmc0NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OCIgbmFtZT0iSW5wdXQ0OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OCIgbmFtZT0iT3V0cHV0NDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ4IiB0eXBlPSJ0bnM6UG9ydFR5cGU0OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OCIgYmluZGluZz0idG5zOkJpbmRpbmc0OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OSIgbmFtZT0iSW5wdXQ0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OSIgbmFtZT0iT3V0cHV0NDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ5IiB0eXBlPSJ0bnM6UG9ydFR5cGU0OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OSIgYmluZGluZz0idG5zOkJpbmRpbmc0OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MCIgbmFtZT0iSW5wdXQ1MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MCIgbmFtZT0iT3V0cHV0NTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUwIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MCIgYmluZGluZz0idG5zOkJpbmRpbmc1MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MSIgbmFtZT0iSW5wdXQ1MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MSIgbmFtZT0iT3V0cHV0NTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUxIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MSIgYmluZGluZz0idG5zOkJpbmRpbmc1MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MiIgbmFtZT0iSW5wdXQ1MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MiIgbmFtZT0iT3V0cHV0NTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUyIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MiIgYmluZGluZz0idG5zOkJpbmRpbmc1MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MyIgbmFtZT0iSW5wdXQ1MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MyIgbmFtZT0iT3V0cHV0NTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUzIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MyIgYmluZGluZz0idG5zOkJpbmRpbmc1MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NCIgbmFtZT0iSW5wdXQ1NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NCIgbmFtZT0iT3V0cHV0NTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU0IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NCIgYmluZGluZz0idG5zOkJpbmRpbmc1NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NSIgbmFtZT0iSW5wdXQ1NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NSIgbmFtZT0iT3V0cHV0NTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU1IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NSIgYmluZGluZz0idG5zOkJpbmRpbmc1NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NiIgbmFtZT0iSW5wdXQ1NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NiIgbmFtZT0iT3V0cHV0NTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU2IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NiIgYmluZGluZz0idG5zOkJpbmRpbmc1NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NyIgbmFtZT0iSW5wdXQ1NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NyIgbmFtZT0iT3V0cHV0NTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU3IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NyIgYmluZGluZz0idG5zOkJpbmRpbmc1NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1OCIgbmFtZT0iSW5wdXQ1OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1OCIgbmFtZT0iT3V0cHV0NTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU4IiB0eXBlPSJ0bnM6UG9ydFR5cGU1OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1OCIgYmluZGluZz0idG5zOkJpbmRpbmc1OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1OSIgbmFtZT0iSW5wdXQ1OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1OSIgbmFtZT0iT3V0cHV0NTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU5IiB0eXBlPSJ0bnM6UG9ydFR5cGU1OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1OSIgYmluZGluZz0idG5zOkJpbmRpbmc1OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MCIgbmFtZT0iSW5wdXQ2MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MCIgbmFtZT0iT3V0cHV0NjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYwIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MCIgYmluZGluZz0idG5zOkJpbmRpbmc2MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MSIgbmFtZT0iSW5wdXQ2MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MSIgbmFtZT0iT3V0cHV0NjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYxIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MSIgYmluZGluZz0idG5zOkJpbmRpbmc2MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MiIgbmFtZT0iSW5wdXQ2MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MiIgbmFtZT0iT3V0cHV0NjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYyIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MiIgYmluZGluZz0idG5zOkJpbmRpbmc2MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MyIgbmFtZT0iSW5wdXQ2MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MyIgbmFtZT0iT3V0cHV0NjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYzIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MyIgYmluZGluZz0idG5zOkJpbmRpbmc2MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NCIgbmFtZT0iSW5wdXQ2NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NCIgbmFtZT0iT3V0cHV0NjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY0IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NCIgYmluZGluZz0idG5zOkJpbmRpbmc2NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NSIgbmFtZT0iSW5wdXQ2NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NSIgbmFtZT0iT3V0cHV0NjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY1IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NSIgYmluZGluZz0idG5zOkJpbmRpbmc2NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NiIgbmFtZT0iSW5wdXQ2NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NiIgbmFtZT0iT3V0cHV0NjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY2IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NiIgYmluZGluZz0idG5zOkJpbmRpbmc2NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NyIgbmFtZT0iSW5wdXQ2NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NyIgbmFtZT0iT3V0cHV0NjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY3IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NyIgYmluZGluZz0idG5zOkJpbmRpbmc2NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2OCIgbmFtZT0iSW5wdXQ2OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2OCIgbmFtZT0iT3V0cHV0NjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY4IiB0eXBlPSJ0bnM6UG9ydFR5cGU2OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2OCIgYmluZGluZz0idG5zOkJpbmRpbmc2OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2OSIgbmFtZT0iSW5wdXQ2OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2OSIgbmFtZT0iT3V0cHV0NjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY5IiB0eXBlPSJ0bnM6UG9ydFR5cGU2OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2OSIgYmluZGluZz0idG5zOkJpbmRpbmc2OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MCIgbmFtZT0iSW5wdXQ3MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MCIgbmFtZT0iT3V0cHV0NzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcwIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MCIgYmluZGluZz0idG5zOkJpbmRpbmc3MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MSIgbmFtZT0iSW5wdXQ3MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MSIgbmFtZT0iT3V0cHV0NzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcxIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MSIgYmluZGluZz0idG5zOkJpbmRpbmc3MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MiIgbmFtZT0iSW5wdXQ3MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MiIgbmFtZT0iT3V0cHV0NzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcyIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MiIgYmluZGluZz0idG5zOkJpbmRpbmc3MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MyIgbmFtZT0iSW5wdXQ3MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MyIgbmFtZT0iT3V0cHV0NzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzczIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjczIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjczIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTczIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MyIgYmluZGluZz0idG5zOkJpbmRpbmc3MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NCIgbmFtZT0iSW5wdXQ3NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NCIgbmFtZT0iT3V0cHV0NzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc0IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NCIgYmluZGluZz0idG5zOkJpbmRpbmc3NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NSIgbmFtZT0iSW5wdXQ3NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NSIgbmFtZT0iT3V0cHV0NzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc1IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NSIgYmluZGluZz0idG5zOkJpbmRpbmc3NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NiIgbmFtZT0iSW5wdXQ3NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NiIgbmFtZT0iT3V0cHV0NzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc2IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NiIgYmluZGluZz0idG5zOkJpbmRpbmc3NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NyIgbmFtZT0iSW5wdXQ3NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NyIgbmFtZT0iT3V0cHV0NzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc3IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NyIgYmluZGluZz0idG5zOkJpbmRpbmc3NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3OCIgbmFtZT0iSW5wdXQ3OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3OCIgbmFtZT0iT3V0cHV0NzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc4IiB0eXBlPSJ0bnM6UG9ydFR5cGU3OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3OCIgYmluZGluZz0idG5zOkJpbmRpbmc3OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3OSIgbmFtZT0iSW5wdXQ3OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3OSIgbmFtZT0iT3V0cHV0NzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc5IiB0eXBlPSJ0bnM6UG9ydFR5cGU3OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3OSIgYmluZGluZz0idG5zOkJpbmRpbmc3OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MCIgbmFtZT0iSW5wdXQ4MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MCIgbmFtZT0iT3V0cHV0ODAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgwIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MCIgYmluZGluZz0idG5zOkJpbmRpbmc4MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MSIgbmFtZT0iSW5wdXQ4MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MSIgbmFtZT0iT3V0cHV0ODEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgxIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MSIgYmluZGluZz0idG5zOkJpbmRpbmc4MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MiIgbmFtZT0iSW5wdXQ4MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MiIgbmFtZT0iT3V0cHV0ODIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgyIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MiIgYmluZGluZz0idG5zOkJpbmRpbmc4MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MyIgbmFtZT0iSW5wdXQ4MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MyIgbmFtZT0iT3V0cHV0ODMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgzIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MyIgYmluZGluZz0idG5zOkJpbmRpbmc4MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NCIgbmFtZT0iSW5wdXQ4NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NCIgbmFtZT0iT3V0cHV0ODQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg0IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NCIgYmluZGluZz0idG5zOkJpbmRpbmc4NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NSIgbmFtZT0iSW5wdXQ4NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NSIgbmFtZT0iT3V0cHV0ODUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg1IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NSIgYmluZGluZz0idG5zOkJpbmRpbmc4NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NiIgbmFtZT0iSW5wdXQ4NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NiIgbmFtZT0iT3V0cHV0ODYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg2IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NiIgYmluZGluZz0idG5zOkJpbmRpbmc4NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NyIgbmFtZT0iSW5wdXQ4NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NyIgbmFtZT0iT3V0cHV0ODciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg3IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NyIgYmluZGluZz0idG5zOkJpbmRpbmc4NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4OCIgbmFtZT0iSW5wdXQ4OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4OCIgbmFtZT0iT3V0cHV0ODgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg4IiB0eXBlPSJ0bnM6UG9ydFR5cGU4OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4OCIgYmluZGluZz0idG5zOkJpbmRpbmc4OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4OSIgbmFtZT0iSW5wdXQ4OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4OSIgbmFtZT0iT3V0cHV0ODkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg5IiB0eXBlPSJ0bnM6UG9ydFR5cGU4OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4OSIgYmluZGluZz0idG5zOkJpbmRpbmc4OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MCIgbmFtZT0iSW5wdXQ5MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MCIgbmFtZT0iT3V0cHV0OTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkwIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MCIgYmluZGluZz0idG5zOkJpbmRpbmc5MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MSIgbmFtZT0iSW5wdXQ5MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MSIgbmFtZT0iT3V0cHV0OTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkxIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MSIgYmluZGluZz0idG5zOkJpbmRpbmc5MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MiIgbmFtZT0iSW5wdXQ5MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MiIgbmFtZT0iT3V0cHV0OTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkyIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MiIgYmluZGluZz0idG5zOkJpbmRpbmc5MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MyIgbmFtZT0iSW5wdXQ5MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MyIgbmFtZT0iT3V0cHV0OTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkzIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MyIgYmluZGluZz0idG5zOkJpbmRpbmc5MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NCIgbmFtZT0iSW5wdXQ5NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NCIgbmFtZT0iT3V0cHV0OTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk0IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NCIgYmluZGluZz0idG5zOkJpbmRpbmc5NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NSIgbmFtZT0iSW5wdXQ5NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NSIgbmFtZT0iT3V0cHV0OTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk1IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NSIgYmluZGluZz0idG5zOkJpbmRpbmc5NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NiIgbmFtZT0iSW5wdXQ5NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NiIgbmFtZT0iT3V0cHV0OTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk2IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NiIgYmluZGluZz0idG5zOkJpbmRpbmc5NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NyIgbmFtZT0iSW5wdXQ5NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NyIgbmFtZT0iT3V0cHV0OTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk3IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NyIgYmluZGluZz0idG5zOkJpbmRpbmc5NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5OCIgbmFtZT0iSW5wdXQ5OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5OCIgbmFtZT0iT3V0cHV0OTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk4IiB0eXBlPSJ0bnM6UG9ydFR5cGU5OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5OCIgYmluZGluZz0idG5zOkJpbmRpbmc5OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5OSIgbmFtZT0iSW5wdXQ5OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5OSIgbmFtZT0iT3V0cHV0OTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk5IiB0eXBlPSJ0bnM6UG9ydFR5cGU5OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5OSIgYmluZGluZz0idG5zOkJpbmRpbmc5OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODA4YTI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0IiBsb2NhdGlvbj0ic2FtcGxlNjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MiIgbG9jYXRpb249Ii4vc2FtcGxlODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMyIgbG9jYXRpb249Ii5cc2FtcGxlMTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTJhMmI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIiBsb2NhdGlvbj0ic2FtcGxlMjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNCIgbG9jYXRpb249Ii4vc2FtcGxlMzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiBsb2NhdGlvbj0iLlxzYW1wbGU5LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGM0MmQyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4IiBsb2NhdGlvbj0ic2FtcGxlMTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgbG9jYXRpb249Ii4vc2FtcGxlMjQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyIgbG9jYXRpb249Ii5cc2FtcGxlMzcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MThkZGViLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIiBsb2NhdGlvbj0ic2FtcGxlMTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NiIgbG9jYXRpb249Ii4vc2FtcGxlNTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1IiBsb2NhdGlvbj0iLlxzYW1wbGU1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE4OTA1Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSIgbG9jYXRpb249InNhbXBsZTIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAiIGxvY2F0aW9uPSIuL3NhbXBsZTYwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQiIGxvY2F0aW9uPSIuXHNhbXBsZTM0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ2ZGUwZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiBsb2NhdGlvbj0ic2FtcGxlMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiBsb2NhdGlvbj0iLi9zYW1wbGU0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyIiBsb2NhdGlvbj0iLlxzYW1wbGUzMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NTcyMmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiIGxvY2F0aW9uPSJzYW1wbGU5OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIiBsb2NhdGlvbj0iLi9zYW1wbGU2MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiBsb2NhdGlvbj0iLlxzYW1wbGU0NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1Y2VmYjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMiIGxvY2F0aW9uPSJzYW1wbGU5My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2IiBsb2NhdGlvbj0iLi9zYW1wbGU1Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIiBsb2NhdGlvbj0iLlxzYW1wbGUyMy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhOGFmZWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCIgbG9jYXRpb249InNhbXBsZTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyIgbG9jYXRpb249Ii4vc2FtcGxlOTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3IiBsb2NhdGlvbj0iLlxzYW1wbGU3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMyMzRmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NyIgbG9jYXRpb249InNhbXBsZTU3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEiIGxvY2F0aW9uPSIuL3NhbXBsZTIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQiIGxvY2F0aW9uPSIuXHNhbXBsZTQ0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRhYmYwNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMCIgbG9jYXRpb249InNhbXBsZTMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiIGxvY2F0aW9uPSIuL3NhbXBsZTI2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjciIGxvY2F0aW9uPSIuXHNhbXBsZTY3LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRiMzgwNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTE5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiIgbG9jYXRpb249InNhbXBsZTQyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMiIGxvY2F0aW9uPSIuL3NhbXBsZTUzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgiIGxvY2F0aW9uPSIuXHNhbXBsZTQ4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNjg1MjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMiIGxvY2F0aW9uPSJzYW1wbGU2My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxIiBsb2NhdGlvbj0iLi9zYW1wbGUyMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5IiBsb2NhdGlvbj0iLlxzYW1wbGU1OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ4ZWJiNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCIgbG9jYXRpb249InNhbXBsZTY0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYiIGxvY2F0aW9uPSIuL3NhbXBsZTc2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEiIGxvY2F0aW9uPSIuXHNhbXBsZTkxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjliMDMxNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiIgbG9jYXRpb249InNhbXBsZTg2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEiIGxvY2F0aW9uPSIuL3NhbXBsZTgxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgbG9jYXRpb249Ii5cc2FtcGxlMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyYjA4MTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiIGxvY2F0aW9uPSJzYW1wbGU3MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiBsb2NhdGlvbj0iLi9zYW1wbGU0NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIGxvY2F0aW9uPSIuXHNhbXBsZTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzQxMDA5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwIiBsb2NhdGlvbj0ic2FtcGxlMzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMyIgbG9jYXRpb249Ii4vc2FtcGxlMTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MCIgbG9jYXRpb249Ii5cc2FtcGxlNjAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTBjMTdjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxIiBsb2NhdGlvbj0ic2FtcGxlODEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NSIgbG9jYXRpb249Ii4vc2FtcGxlNzUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NSIgbG9jYXRpb249Ii5cc2FtcGxlODUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjFiYWM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiBsb2NhdGlvbj0ic2FtcGxlMTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MSIgbG9jYXRpb249Ii4vc2FtcGxlODEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MyIgbG9jYXRpb249Ii5cc2FtcGxlNDMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmU5NTdiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiBsb2NhdGlvbj0ic2FtcGxlNjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MSIgbG9jYXRpb249Ii4vc2FtcGxlNTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgbG9jYXRpb249Ii5cc2FtcGxlMjQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWU3YjU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIiBsb2NhdGlvbj0ic2FtcGxlOTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NiIgbG9jYXRpb249Ii4vc2FtcGxlNDYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OSIgbG9jYXRpb249Ii5cc2FtcGxlNDkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjIzODk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2IiBsb2NhdGlvbj0ic2FtcGxlNjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNCIgbG9jYXRpb249Ii4vc2FtcGxlMTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOCIgbG9jYXRpb249Ii5cc2FtcGxlMzgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUyOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTRlYmU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiBsb2NhdGlvbj0ic2FtcGxlNDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMyIgbG9jYXRpb249Ii4vc2FtcGxlMjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiBsb2NhdGlvbj0iLlxzYW1wbGUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZjczODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYiIGxvY2F0aW9uPSJzYW1wbGU3Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiIGxvY2F0aW9uPSIuL3NhbXBsZTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCIgbG9jYXRpb249Ii5cc2FtcGxlNDgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2OGVhYzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQiIGxvY2F0aW9uPSJzYW1wbGUyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIiBsb2NhdGlvbj0iLi9zYW1wbGU2MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIGxvY2F0aW9uPSIuXHNhbXBsZTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTdiODRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3IiBsb2NhdGlvbj0ic2FtcGxlMjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MiIgbG9jYXRpb249Ii4vc2FtcGxlOTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIiBsb2NhdGlvbj0iLlxzYW1wbGUyLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBmMzhjNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3IiBsb2NhdGlvbj0ic2FtcGxlNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwIiBsb2NhdGlvbj0iLi9zYW1wbGU5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4IiBsb2NhdGlvbj0iLlxzYW1wbGU3OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3N2QxYzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjkiIGxvY2F0aW9uPSJzYW1wbGUyOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1IiBsb2NhdGlvbj0iLi9zYW1wbGUzNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0IiBsb2NhdGlvbj0iLlxzYW1wbGU2NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExODk3ZjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQiIGxvY2F0aW9uPSJzYW1wbGU3NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0IiBsb2NhdGlvbj0iLi9zYW1wbGU5NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4IiBsb2NhdGlvbj0iLlxzYW1wbGU2OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMjFmYzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiIGxvY2F0aW9uPSJzYW1wbGU1OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0IiBsb2NhdGlvbj0iLi9zYW1wbGUyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3IiBsb2NhdGlvbj0iLlxzYW1wbGUzNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhODY3ZDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODciIGxvY2F0aW9uPSJzYW1wbGU4Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIGxvY2F0aW9uPSIuL3NhbXBsZTcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OSIgbG9jYXRpb249Ii5cc2FtcGxlNzkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmRlYTU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1IiBsb2NhdGlvbj0ic2FtcGxlNTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMiIgbG9jYXRpb249Ii4vc2FtcGxlMTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiBsb2NhdGlvbj0iLlxzYW1wbGU2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdhNzY5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiBsb2NhdGlvbj0ic2FtcGxlOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyIiBsb2NhdGlvbj0iLi9zYW1wbGU3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0IiBsb2NhdGlvbj0iLlxzYW1wbGU3NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTM5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZTdhODQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUzOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUiIGxvY2F0aW9uPSJzYW1wbGU0NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiIGxvY2F0aW9uPSIuL3NhbXBsZTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NCIgbG9jYXRpb249Ii5cc2FtcGxlNTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMzNDllZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMCIgbG9jYXRpb249InNhbXBsZTEwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYiIGxvY2F0aW9uPSIuL3NhbXBsZTY2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMiIGxvY2F0aW9uPSIuXHNhbXBsZTIzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjMxZWIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3IiBsb2NhdGlvbj0ic2FtcGxlNDcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNCIgbG9jYXRpb249Ii4vc2FtcGxlMzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNiIgbG9jYXRpb249Ii5cc2FtcGxlMTYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDYyOGJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIGxvY2F0aW9uPSJzYW1wbGUxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSIgbG9jYXRpb249Ii4vc2FtcGxlOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIiBsb2NhdGlvbj0iLlxzYW1wbGU4MC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMzNiMzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiIGxvY2F0aW9uPSJzYW1wbGU4Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIiBsb2NhdGlvbj0iLi9zYW1wbGU4My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIiBsb2NhdGlvbj0iLlxzYW1wbGU0My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmMzMjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEiIGxvY2F0aW9uPSJzYW1wbGUzMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3IiBsb2NhdGlvbj0iLi9zYW1wbGU5Ny53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2IiBsb2NhdGlvbj0iLlxzYW1wbGU3Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NzMyZjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIiIGxvY2F0aW9uPSJzYW1wbGU3Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1IiBsb2NhdGlvbj0iLi9zYW1wbGU4NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxIiBsb2NhdGlvbj0iLlxzYW1wbGU3MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZWNhNjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYiIGxvY2F0aW9uPSJzYW1wbGU2Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1IiBsb2NhdGlvbj0iLi9zYW1wbGUxNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5IiBsb2NhdGlvbj0iLlxzYW1wbGU4OS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Njc5NDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAiIGxvY2F0aW9uPSJzYW1wbGUzMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4IiBsb2NhdGlvbj0iLi9zYW1wbGU1OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0IiBsb2NhdGlvbj0iLlxzYW1wbGU5NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NjRkYTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIiIGxvY2F0aW9uPSJzYW1wbGU2Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwIiBsb2NhdGlvbj0iLi9zYW1wbGUzMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiBsb2NhdGlvbj0iLlxzYW1wbGUxOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNjczYjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMiIGxvY2F0aW9uPSJzYW1wbGU1My53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE0IiBsb2NhdGlvbj0iLi9zYW1wbGUxNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyIiBsb2NhdGlvbj0iLlxzYW1wbGU1Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQ5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMGM3MzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIGxvY2F0aW9uPSJzYW1wbGU2OC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIGxvY2F0aW9uPSIuL3NhbXBsZTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MyIgbG9jYXRpb249Ii5cc2FtcGxlOTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlhNjBhOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyIgbG9jYXRpb249InNhbXBsZTQ3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIGxvY2F0aW9uPSIuL3NhbXBsZTY4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMiIGxvY2F0aW9uPSIuXHNhbXBsZTMzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjUxNjJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxIiBsb2NhdGlvbj0ic2FtcGxlNjEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiIgbG9jYXRpb249Ii4vc2FtcGxlODYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OSIgbG9jYXRpb249Ii5cc2FtcGxlODkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWFmYzhhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1IiBsb2NhdGlvbj0ic2FtcGxlODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgbG9jYXRpb249Ii4vc2FtcGxlMjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MCIgbG9jYXRpb249Ii5cc2FtcGxlODAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTkyNzgwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3IiBsb2NhdGlvbj0ic2FtcGxlNzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSIgbG9jYXRpb249Ii4vc2FtcGxlNzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyIgbG9jYXRpb249Ii5cc2FtcGxlNjcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWE5M2ExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIiBsb2NhdGlvbj0ic2FtcGxlNjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OSIgbG9jYXRpb249Ii4vc2FtcGxlNDkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OSIgbG9jYXRpb249Ii5cc2FtcGxlNTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmNkYjk3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyIiBsb2NhdGlvbj0ic2FtcGxlODIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMCIgbG9jYXRpb249Ii4vc2FtcGxlMzAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MyIgbG9jYXRpb249Ii5cc2FtcGxlNTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODM5MjRiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4IiBsb2NhdGlvbj0ic2FtcGxlNzgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyIgbG9jYXRpb249Ii4vc2FtcGxlNzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiBsb2NhdGlvbj0iLlxzYW1wbGUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFlOWMxZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMCIgbG9jYXRpb249InNhbXBsZTIwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzciIGxvY2F0aW9uPSIuL3NhbXBsZTc3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCIgbG9jYXRpb249Ii5cc2FtcGxlNC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZmJkNzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUiIGxvY2F0aW9uPSJzYW1wbGU5NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2IiBsb2NhdGlvbj0iLi9zYW1wbGU1Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2IiBsb2NhdGlvbj0iLlxzYW1wbGU5Ni53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMTdhNDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiIGxvY2F0aW9uPSJzYW1wbGU5MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiIGxvY2F0aW9uPSIuL3NhbXBsZTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MyIgbG9jYXRpb249Ii5cc2FtcGxlNzMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU1OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGQ0YTdhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiBsb2NhdGlvbj0ic2FtcGxlNjMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIiBsb2NhdGlvbj0iLi9zYW1wbGUwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUiIGxvY2F0aW9uPSIuXHNhbXBsZTY1LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5N2MyZTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkiIGxvY2F0aW9uPSJzYW1wbGU2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2IiBsb2NhdGlvbj0iLi9zYW1wbGU2Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiBsb2NhdGlvbj0iLlxzYW1wbGUxOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RmOTIxNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyIgbG9jYXRpb249InNhbXBsZTk3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIiIGxvY2F0aW9uPSIuL3NhbXBsZTEyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEiIGxvY2F0aW9uPSIuXHNhbXBsZTQxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA4YTg1Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOCIgbG9jYXRpb249InNhbXBsZTE4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYiIGxvY2F0aW9uPSIuL3NhbXBsZTE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSIgbG9jYXRpb249Ii5cc2FtcGxlOS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZGY0YWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiIGxvY2F0aW9uPSJzYW1wbGUyNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyIiBsb2NhdGlvbj0iLi9zYW1wbGUxMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxIiBsb2NhdGlvbj0iLlxzYW1wbGUyMS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMWYyNzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkiIGxvY2F0aW9uPSJzYW1wbGU2OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIGxvY2F0aW9uPSIuL3NhbXBsZTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOSIgbG9jYXRpb249Ii5cc2FtcGxlMTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmEyMjcyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMzIiBsb2NhdGlvbj0ic2FtcGxlMzMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCIgbG9jYXRpb249Ii4vc2FtcGxlNzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNSIgbG9jYXRpb249Ii5cc2FtcGxlMjUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWEwOTdiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiIGxvY2F0aW9uPSJzYW1wbGU2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAiIGxvY2F0aW9uPSIuL3NhbXBsZTMwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYiIGxvY2F0aW9uPSIuXHNhbXBsZTg2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I2MTMyZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgbG9jYXRpb249InNhbXBsZTI0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkiIGxvY2F0aW9uPSIuL3NhbXBsZTM5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiIGxvY2F0aW9uPSIuXHNhbXBsZTEzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M5ODA2NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4IiBsb2NhdGlvbj0ic2FtcGxlOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxIiBsb2NhdGlvbj0iLi9zYW1wbGU2MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIiBsb2NhdGlvbj0iLlxzYW1wbGU4My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwODYyMTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgbG9jYXRpb249InNhbXBsZTIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSIgbG9jYXRpb249Ii4vc2FtcGxlOTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiBsb2NhdGlvbj0iLlxzYW1wbGUxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA4N2RmNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyIgbG9jYXRpb249InNhbXBsZTMzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiIGxvY2F0aW9uPSIuL3NhbXBsZTcwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMiIGxvY2F0aW9uPSIuXHNhbXBsZTczLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYWNlNGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQiIGxvY2F0aW9uPSJzYW1wbGUyNC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2IiBsb2NhdGlvbj0iLi9zYW1wbGU2Ni53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3IiBsb2NhdGlvbj0iLlxzYW1wbGUxNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBmOWM3Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNiIgbG9jYXRpb249InNhbXBsZTE2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiIGxvY2F0aW9uPSIuL3NhbXBsZTEzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQiIGxvY2F0aW9uPSIuXHNhbXBsZTY0LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM0YjZlOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSIgbG9jYXRpb249InNhbXBsZTM1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYiIGxvY2F0aW9uPSIuL3NhbXBsZTU2LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMiIGxvY2F0aW9uPSIuXHNhbXBsZTQzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIxMzAwMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NSIgbG9jYXRpb249InNhbXBsZTk1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSIgbG9jYXRpb249Ii4vc2FtcGxlMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3IiBsb2NhdGlvbj0iLlxzYW1wbGU1Ny53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczOGY2NjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiIGxvY2F0aW9uPSJzYW1wbGUzMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0IiBsb2NhdGlvbj0iLi9zYW1wbGU3NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzIiBsb2NhdGlvbj0iLlxzYW1wbGU5My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYjk5OTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQiIGxvY2F0aW9uPSJzYW1wbGU1NC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxIiBsb2NhdGlvbj0iLi9zYW1wbGU1MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyIiBsb2NhdGlvbj0iLlxzYW1wbGUxMi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmOGMyN2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkiIGxvY2F0aW9uPSJzYW1wbGUxOS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIGxvY2F0aW9uPSIuL3NhbXBsZTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMyIgbG9jYXRpb249Ii5cc2FtcGxlMTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGI2M2Y3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0IiBsb2NhdGlvbj0ic2FtcGxlMzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OSIgbG9jYXRpb249Ii4vc2FtcGxlODkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyIgbG9jYXRpb249Ii5cc2FtcGxlNDcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU3Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGZhZTNiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiIGxvY2F0aW9uPSJzYW1wbGUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIGxvY2F0aW9uPSIuL3NhbXBsZTgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMiIGxvY2F0aW9uPSIuXHNhbXBsZTQzLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYwYzQyNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSIgbG9jYXRpb249InNhbXBsZTYxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkiIGxvY2F0aW9uPSIuL3NhbXBsZTg5LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYiIGxvY2F0aW9uPSIuXHNhbXBsZTU2LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRiNmVhNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTc5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3IiBsb2NhdGlvbj0ic2FtcGxlNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyIiBsb2NhdGlvbj0iLi9zYW1wbGU1Mi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4IiBsb2NhdGlvbj0iLlxzYW1wbGU0OC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjI1NjQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1IiBsb2NhdGlvbj0ic2FtcGxlNDUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiIgbG9jYXRpb249Ii4vc2FtcGxlNDIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OCIgbG9jYXRpb249Ii5cc2FtcGxlODgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Njc4MDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiIgbG9jYXRpb249InNhbXBsZTYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OCIgbG9jYXRpb249Ii4vc2FtcGxlOTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OCIgbG9jYXRpb249Ii5cc2FtcGxlNjgud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzk5OGRlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0IiBsb2NhdGlvbj0ic2FtcGxlNzQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIiBsb2NhdGlvbj0iLi9zYW1wbGUwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjEiIGxvY2F0aW9uPSIuXHNhbXBsZTYxLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y4YWQ1Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MyIgbG9jYXRpb249InNhbXBsZTkzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyIgbG9jYXRpb249Ii4vc2FtcGxlMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyIiBsb2NhdGlvbj0iLlxzYW1wbGU5Mi53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3OWNmMjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkiIGxvY2F0aW9uPSJzYW1wbGU1OS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1IiBsb2NhdGlvbj0iLi9zYW1wbGU4NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxIiBsb2NhdGlvbj0iLlxzYW1wbGU2MS53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMDIzOTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAiIGxvY2F0aW9uPSJzYW1wbGU1MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2IiBsb2NhdGlvbj0iLi9zYW1wbGUxNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE3IiBsb2NhdGlvbj0iLlxzYW1wbGUxNy53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MmE4ZDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMiIGxvY2F0aW9uPSJzYW1wbGUyMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIiBsb2NhdGlvbj0iLi9zYW1wbGU4MC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiBsb2NhdGlvbj0iLlxzYW1wbGU2My53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMzljNzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAiIGxvY2F0aW9uPSJzYW1wbGUzMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1IiBsb2NhdGlvbj0iLi9zYW1wbGU4NS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0IiBsb2NhdGlvbj0iLlxzYW1wbGU4NC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NGIzZDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYiIGxvY2F0aW9uPSJzYW1wbGUxNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxIiBsb2NhdGlvbj0iLi9zYW1wbGU3MS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIiBsb2NhdGlvbj0iLlxzYW1wbGUxMC53c2RsIi8+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyN2QyYTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiIGxvY2F0aW9uPSJzYW1wbGUxMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIGxvY2F0aW9uPSIuL3NhbXBsZTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSIgbG9jYXRpb249Ii5cc2FtcGxlOTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWIxYzcxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIiBsb2NhdGlvbj0ic2FtcGxlOTEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MyIgbG9jYXRpb249Ii4vc2FtcGxlNDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MCIgbG9jYXRpb249Ii5cc2FtcGxlNDAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZjNjJmMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSIgbG9jYXRpb249InNhbXBsZTIxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODMiIGxvY2F0aW9uPSIuL3NhbXBsZTgzLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgiIGxvY2F0aW9uPSIuXHNhbXBsZTQ4LndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmM3Y2Q1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYwIiBsb2NhdGlvbj0ic2FtcGxlNjAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MyIgbG9jYXRpb249Ii4vc2FtcGxlNTMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyIgbG9jYXRpb249Ii5cc2FtcGxlODcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzZhNjI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5IiBsb2NhdGlvbj0ic2FtcGxlOTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NyIgbG9jYXRpb249Ii4vc2FtcGxlODcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MSIgbG9jYXRpb249Ii5cc2FtcGxlNTEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDFmMDFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIiBsb2NhdGlvbj0ic2FtcGxlODMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyIgbG9jYXRpb249Ii4vc2FtcGxlMjcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMCIgbG9jYXRpb249Ii5cc2FtcGxlMjAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzFiMjk1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0IiBsb2NhdGlvbj0ic2FtcGxlNTQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NCIgbG9jYXRpb249Ii4vc2FtcGxlNDQud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyIgbG9jYXRpb249Ii5cc2FtcGxlOTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjJmZTEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIiBsb2NhdGlvbj0ic2FtcGxlNDMud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MiIgbG9jYXRpb249Ii4vc2FtcGxlNjIud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MCIgbG9jYXRpb249Ii5cc2FtcGxlNjAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2M1MDdiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwIiBsb2NhdGlvbj0ic2FtcGxlNTAud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyIgbG9jYXRpb249Ii4vc2FtcGxlMzcud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NiIgbG9jYXRpb249Ii5cc2FtcGxlNDYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2E4M2RiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1IiBsb2NhdGlvbj0ic2FtcGxlMTUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSIgbG9jYXRpb249Ii4vc2FtcGxlNzEud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyIgbG9jYXRpb249Ii5cc2FtcGxlMzMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDU2YWExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5IiBsb2NhdGlvbj0ic2FtcGxlNTkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiIgbG9jYXRpb249Ii4vc2FtcGxlMjYud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSIgbG9jYXRpb249Ii5cc2FtcGxlNzEud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWNiZTRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4IiBsb2NhdGlvbj0ic2FtcGxlMTgud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OSIgbG9jYXRpb249Ii4vc2FtcGxlNjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyIgbG9jYXRpb249Ii5cc2FtcGxlNjcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGU5OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWI0Mzg2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1IiBsb2NhdGlvbj0ic2FtcGxlODUud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOSIgbG9jYXRpb249Ii4vc2FtcGxlMjkud3NkbCIvPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIiBsb2NhdGlvbj0iLlxzYW1wbGUwLndzZGwiLz4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMDlmZTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYzZWVhYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YjM5ZmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgzYWVkYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTExLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2RmYjA5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTEzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NzcxNWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc1N2EwYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTM4MGUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNmIxMWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVhNjkyOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTAxYTljLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTE5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZDE4NTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMDRmM2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFiMTI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyOWI3MGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI2NGQ2NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmFkYmYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NmI3NzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE1NjMwNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzQzYWY3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNTMwOGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY1MjgxZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUyOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDQ0NjY3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODkxY2M2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc2ZTM2Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTgzMjUyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMWYxMzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdlZDMzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTM2NjhlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NTU3ODQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVjZDFmMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGU0MWVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZWMwZWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUzOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMzkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjExMDVlMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU4YzBhNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMDg5ZTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUxNzM1ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzcwNDBiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzOWI0MmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE3MDUwZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTM0OTUyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNDA3YjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBjMTBmOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTE0MzcxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTQ5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OGZmNTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwMTg1NjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Njg4MTI5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZTJhNTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNlMjVlOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTUxMmE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MGY3OGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRhZmM0MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTNiMzIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZDA3NzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFlNTFkNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU1OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNThiNTVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjIyZDMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc2NjAwNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjFhNGRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1OTBhNTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA3NzJkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzU0ZTlkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NjgyYzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE0MDA0NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGI5ZTYyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYjMwOTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNjkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE0MzEzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA2MGE3Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1OTUwMmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMzNzBlYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTcxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzdmMzRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTczLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwZDZkYTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYwMzVkNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2E1Zjk4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZjViZTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUxZjYyYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjk3ZDhkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlNzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzODczYmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU3OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNzFiMWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGE4MmUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5YzZiZTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFhZGQ2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWVjOTg0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZWQ2MGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI0OTI3Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTFkMDdkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5N2IzNTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMzZGMyMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTg4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWYyMmZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlODkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmNkYTMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI3ODUxMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzBlNDMwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNDM4YWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdlZGUyNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2NjMTZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmOWE3ZDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQzNjQ4MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmNkMzk3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NjQ2ZGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc05vRGVwZW5kcy9zYW1wbGU5OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNOb0RlcGVuZHMvc2FtcGxlOTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM0YmEwMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTk5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGQ0MWM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUwLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUxMmRjMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8wIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8wIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxOC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTUueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YjMyN2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWQxNDQxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTY2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjYiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTI2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhODhmZjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiZDhkMjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYjliNzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTExIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTExIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTExLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGExMzYwYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMTUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdmNDVlNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjZjMTI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTExLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzEiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTMxLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NTBiMTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTEzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjExMGNhYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMy54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEzIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyMi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGU2ODdkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYzA1YTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMTcueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBiYjBhNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU2NWNiMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRlNmJjYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTVlYWM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTYiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTkwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzBmNGEzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxNyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNy54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxNy54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MDAyMjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTQiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTE0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNy54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzZiODgzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUxOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZWEwYjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgzMDNmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTE5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTkueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2I1NzY2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzIiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTcyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTQiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTU0LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjhhYWUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ3MjI4Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTUueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4MTY3MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTI2YTE4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjAiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTMwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTgiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTE4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MWE0Y2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTIxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY2MWFiYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUxNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcxIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3MS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjUyMWU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyMiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZWRiYjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQxMGQ0NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMjMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjMueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjU2MThhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjMiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUyMi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTUxNjdjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMTVkMjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNy54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTczY2NjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzODBiZTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYWY3YTY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYzA2NDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUzLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NDNiMGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRjOWYzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNy54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1Mi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTUwODQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMjgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmQ1ZGM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzYiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTc2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTY2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyODYxZmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTI5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTI5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q0YjU0Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI5Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NzgyZmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTlhNWViLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTIiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTUyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTY2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMDZhNDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA2Y2E0OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4OC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxNy54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDVkMjE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTk5YTE0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzEiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzkiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTc5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjgiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTY4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMzliMzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBhN2RiNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Mi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI4IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyOC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjAwNjczLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzMyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMy54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzMy54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZmY0OWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNjUueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0YjJhOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2MwMzM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzQiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTYzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTYyLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxN2NkM2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMyYTI4MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE5IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxOS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzgyMjFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzNiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4OGMyYWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzUueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBkYTgyOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMzciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjNmM2NiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzciPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjIiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTIyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTg5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMzEwOTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTM4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTM4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc0LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlMjFkMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM4Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3My54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTBhZDFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMzkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUzOSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2OS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzOS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYmY4MTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYThiNTMyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RkZThkYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNjNjE0Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzJmZDJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDAiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTkiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTU5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzQzMDk5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOTM0YmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYzBlM2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMxLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3MTgxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1MS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0My53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDc1MjY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0MyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDMiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0MyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0My54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0My54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NjA2OTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMTMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjljZmQ2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDQiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmUxZDViLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTczLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTQ1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTEyLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlN2IwMDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk3MDJmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNjYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgyYzNlZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDYueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDQwMWU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTczLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTYzLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NGJmNGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTQ3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAxNTc4Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ny54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxNC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzM5NDg2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU0OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NDA0ZDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUwZTA2Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNDkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQ5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNDkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjQ0MWE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQ5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTkiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTk5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTUzLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDFhYzM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDkueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFmODhkMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYwYTliMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTAiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDIxNzI4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTIzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjBhMjEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzOS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ZmMyMjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTQxLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMTAzMmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTUyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlhOTQzZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Mi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMTkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJlNDE2YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTMueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWIzNDAwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3OC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWM5ZTU3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5ZTMzZTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YzZlYTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRjZGI5OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1NS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Mi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3NC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTkxZWJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ni54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ni54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMTc5MGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA4MGI4My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2ZlODNmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTciPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODgiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTg4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTU4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZGMzMzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTU4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUxZWFiZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU4Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI5IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyOS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTUueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZlNTllYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODQueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWJjZjIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjkiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTY5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTAiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTkwLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmRlNDM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU2YjljYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3Mi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGY0YTcxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YWRjZDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMTUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUzLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwYjRkMWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YmRhMTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMyMDJlMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2M4YjJlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTgiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTE4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTciIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTU3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MGMxMjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTg1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUxZDM4MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2My54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYzIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0OC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3MC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWIxMDgwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMTc3ZmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI3YWZkNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDM1MDdlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjUiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzUiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTM1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzgiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTM4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZWJkMmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTY2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc4Nzc4MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Ni54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1OS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjVlODQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Ny54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Ny54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1Yzg0YTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNDUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQyNzc0Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTY4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNjgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzI0MzlhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8wIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc5IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3OS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU5Ni54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWU2YjEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNjkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU2OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ni54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNzg2MjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjkueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTE5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWFiMmI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNy54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUxYjI3MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyNi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU5OC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDdhZGI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjOTgwNTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg0ODc3Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzEiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWQzMTgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzEiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTEzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTciIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTU3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiODk5ZmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTcyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3MiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTcyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Mi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Mi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NDcwM2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNjEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVkMjhmNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTczIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDgueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzMueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODA4OWFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTI3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTciIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTk3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwOGMwNTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc0Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMxYzA0YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc0Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4NC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTMzZjk2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3NS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMDFkOTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ni53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFjYjRmNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ni53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhmODA2Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ni54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUyNC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ny53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDc1ZmI4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3NyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU3NyI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ny54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ny54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYjhhYmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMTEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I4YjNiOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNzgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNzgiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGJlNTJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTQxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTk5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYWRhYWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTc5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3OSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTc5Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRhNzNmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc5Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3OC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRhMDhkMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ4LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNWM3ZjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTczLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjEiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTIxLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODAud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxOTgwYjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODAud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFmYzkzZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzOC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQxIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4OS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmNhYWM3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4MSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4MC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYmQ0YmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNDMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M1Mzg5MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgyIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODIiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDMueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTM1NGVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODIiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTEyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTQiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTE0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTY5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NTFlMmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4MyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTgzIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY1LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTExNjE0ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4My54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgzIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzMi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUyNC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Zjg1MDMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkY2M2MmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRlZTk5NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmYwZjIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODUiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTQ0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTI5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNjFjODYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4NiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg2Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTIyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM5ZGI4OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Ni54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg2Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Ny53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U0NzY3Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Ny53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg3Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlODciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzUueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODU5YTZmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODciPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzciIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTc3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzYiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTM2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZDRkYjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTg4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTg4Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA4NDdkZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg4Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU2Ni54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmYxZGY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4OSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlODkiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU4OSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3MS54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4OS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MWY1YzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTFjZWEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzEueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhOTQwOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkxIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU2Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjE0YzYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTllMTZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTAiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTI5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTYyLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMTQ3N2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTkxIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYzLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFkYWVjYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkxIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3MC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGI3Yzc5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5MiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5MiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZTJlNzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5My53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY0MzVlMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5My53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjAueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDBjM2M0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkzLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTMiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUxMy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU2Mi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjFiOTZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Mi54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZTA2MTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNDAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FiYjRkYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk1Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTUiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThjOTE3YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQxIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0MS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Ni53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGFkNDA0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTYiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5NiI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3OC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Ni54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Ni54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiZmRlN2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTY2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NTIzOGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5NyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTk3Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5OTM5Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Ny54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk3Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQwIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0MC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjcwNjhhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5OCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTgiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU5OCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3My54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMTg1YWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZhNWQ0Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOTkiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTk5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOTkiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU5LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFkMTUzMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk5Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzOS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxNC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBLQi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMEtCLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMGRiYzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMEtCLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IkRlZmluaXRpb24iIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scyI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24wIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTAiIG5hbWU9IklucHV0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UwIiBuYW1lPSJPdXRwdXQwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcwIiB0eXBlPSJ0bnM6UG9ydFR5cGUwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24wIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDAiIGJpbmRpbmc9InRuczpCaW5kaW5nMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxIiBuYW1lPSJJbnB1dDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMSIgbmFtZT0iT3V0cHV0MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMSIgdHlwZT0idG5zOlBvcnRUeXBlMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMiIgbmFtZT0iSW5wdXQyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIiIG5hbWU9Ik91dHB1dDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIiIHR5cGU9InRuczpQb3J0VHlwZTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MiIgYmluZGluZz0idG5zOkJpbmRpbmcyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMiIG5hbWU9IklucHV0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzIiBuYW1lPSJPdXRwdXQzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczIiB0eXBlPSJ0bnM6UG9ydFR5cGUzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMiIGJpbmRpbmc9InRuczpCaW5kaW5nMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0IiBuYW1lPSJJbnB1dDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNCIgbmFtZT0iT3V0cHV0NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNCIgdHlwZT0idG5zOlBvcnRUeXBlNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNSIgbmFtZT0iSW5wdXQ1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUiIG5hbWU9Ik91dHB1dDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUiIHR5cGU9InRuczpQb3J0VHlwZTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NSIgYmluZGluZz0idG5zOkJpbmRpbmc1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYiIG5hbWU9IklucHV0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2IiBuYW1lPSJPdXRwdXQ2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2IiB0eXBlPSJ0bnM6UG9ydFR5cGU2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYiIGJpbmRpbmc9InRuczpCaW5kaW5nNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3IiBuYW1lPSJJbnB1dDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNyIgbmFtZT0iT3V0cHV0NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNyIgdHlwZT0idG5zOlBvcnRUeXBlNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOCIgbmFtZT0iSW5wdXQ4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgiIG5hbWU9Ik91dHB1dDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgiIHR5cGU9InRuczpQb3J0VHlwZTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OCIgYmluZGluZz0idG5zOkJpbmRpbmc4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkiIG5hbWU9IklucHV0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5IiBuYW1lPSJPdXRwdXQ5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5IiB0eXBlPSJ0bnM6UG9ydFR5cGU5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkiIGJpbmRpbmc9InRuczpCaW5kaW5nOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMzNjk4ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIGxvY2F0aW9uPSJzYW1wbGUxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgbG9jYXRpb249Ii4vc2FtcGxlMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIGxvY2F0aW9uPSIuXHNhbXBsZTQud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVjMzI5Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiIGxvY2F0aW9uPSJzYW1wbGU4LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgbG9jYXRpb249Ii4vc2FtcGxlNy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIGxvY2F0aW9uPSIuXHNhbXBsZTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjljOTI3MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIGxvY2F0aW9uPSJzYW1wbGUwLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSIgbG9jYXRpb249Ii4vc2FtcGxlNS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIGxvY2F0aW9uPSIuXHNhbXBsZTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIyMWU4YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIGxvY2F0aW9uPSJzYW1wbGU3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCIgbG9jYXRpb249Ii4vc2FtcGxlOC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiIGxvY2F0aW9uPSIuXHNhbXBsZTYud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZkYzFjOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiIGxvY2F0aW9uPSJzYW1wbGUyLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyIgbG9jYXRpb249Ii4vc2FtcGxlMy53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIGxvY2F0aW9uPSIuXHNhbXBsZTcud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBhZTMyMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIGxvY2F0aW9uPSJzYW1wbGU3LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgbG9jYXRpb249Ii4vc2FtcGxlMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIGxvY2F0aW9uPSIuXHNhbXBsZTkud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVjYmUwMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiIGxvY2F0aW9uPSJzYW1wbGU1LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSIgbG9jYXRpb249Ii4vc2FtcGxlMS53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIGxvY2F0aW9uPSIuXHNhbXBsZTAud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgzMWZmMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIGxvY2F0aW9uPSJzYW1wbGU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiIgbG9jYXRpb249Ii4vc2FtcGxlNi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiIGxvY2F0aW9uPSIuXHNhbXBsZTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTgud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRlMmU4Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIGxvY2F0aW9uPSJzYW1wbGU0LndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgbG9jYXRpb249Ii4vc2FtcGxlMi53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiIGxvY2F0aW9uPSIuXHNhbXBsZTUud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZhOGY3MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIGxvY2F0aW9uPSJzYW1wbGUxLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgbG9jYXRpb249Ii4vc2FtcGxlMC53c2RsIi8+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMiIGxvY2F0aW9uPSIuXHNhbXBsZTMud3NkbCIvPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTAud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwOWZlNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlMC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUwIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGUxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjNlZWFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMDRmM2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg5MWNjNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGU0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZThjMGE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGU0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwMTg1NjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYyMmQzMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDYwYTcyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGU3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTciPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGU4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNzFiMWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlOCI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzTm9EZXBlbmRzL3NhbXBsZTkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZjZGEzMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUwLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NmFjOTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUwLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTAiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUwIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTcwLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTYwY2Q2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTRhZmM0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUxIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlMSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMy54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdhZTFjOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTgwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTc4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YWVlNTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEwIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0Mi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MDI2M2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyMy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUzOS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMjYxNWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxMi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTEzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTc1YWE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzU5ZmEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTRjNWI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjcyODEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzQ3YTVjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMTcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAwMWMyNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTYzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzYiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTc2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjMiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTIzLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUxOS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjYwNGUzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTE5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0OC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0YmI1NjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTIiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGUyIj48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM3LnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjhlZmU3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIwLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTI4MWI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDk3MjQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTciIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTk3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRjYmYxYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjIiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQ5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjkiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTY5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDIiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTQyLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyMy54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ2Y2Y1Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTIzLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjMiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTIiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTEyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjAiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTIwLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZkZWU4OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTk0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODciIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTg3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODYiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTg2LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI5NTkwYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI1LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjUiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzkiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTc5LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNy54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjYueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZGVkNDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyNi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI2Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Mi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjIyYjY1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI4LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTJkNWFlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMjgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8wIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUwLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUyOS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmExYWRmOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTI5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTQ2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTY5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQyZjJjYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlMyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTMiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODIueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMy54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NmQyM2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGUzLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMwLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGNkNGZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTIzYzNjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmUyOTRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTMzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTcwMTdiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmJhN2ZhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xMiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMTIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDFjNDE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTdhYzkwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83OSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWFmMzM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM4LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjQwZjNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTM5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWE3MWI4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMzkueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Yzk2YzRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU0Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlNCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ny54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFkYWRmZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUyMi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NjJmYjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0MC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQwIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTQxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTk0YTc5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMWYzZTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Mi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyOC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1OS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDMueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0My54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNTRiMDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0My54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQzIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1OS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ5IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0OS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQwIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0MC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNDNlNzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ0Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU5IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1OS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE1IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxNS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDUueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyY2U1YzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0NS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxOC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDYueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ni54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNzgxY2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ni54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDYiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMyIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzMi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQxIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU0MS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ny54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MTUwM2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0Ny54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDUiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0NS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzOS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3My54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMDY3MzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ4Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI1IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyNS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1Mi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNDkueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZDU2OTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU0OS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ5Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3My54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZjNjMjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0ic2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTUiPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz48L3hzZDpzY2hlbWE+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy9zYW1wbGU1Ij48eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMyLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08d3NkbDpiaW5kaW5nIG5hbWU9InNhbXBsZVNPQVAiIHR5cGU9InRuczpzYW1wbGUiPgotPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZS9OZXdPcGVyYXRpb24iLz4KLTx3c2RsOmlucHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOmlucHV0PgotPHdzZGw6b3V0cHV0PgotPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDpvdXRwdXQ+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOmJpbmRpbmc+Ci08d3NkbDpzZXJ2aWNlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpwb3J0IG5hbWU9InNhbXBsZVNPQVAiIGJpbmRpbmc9InRuczpzYW1wbGVTT0FQIj4KLTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci08L3dzZGw6cG9ydD4KLTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjM1NmMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY5IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zOSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzcueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUwLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWRiZjhlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTAueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUwIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNTcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNjYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzA0NGE4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNjUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNjMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWI5OTk5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTUzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWNiMWU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODRjNDI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzExIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNDgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjhiMWJiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIyIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmQyNzk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2JjMmQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNTcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdmZjY5Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTUwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTUiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTE1LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU1OS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE3ODhhYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTU5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOCIgc2NoZW1hTG9jYXRpb249InNhbXBsZTI4LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODUiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTg1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzIiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTcyLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU3NzQ4OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNiI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTYiPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDcueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZDhmZGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgwIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4MC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU5OC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZDEzNjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYwIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcyIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU3Mi54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzYmVhYTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2MS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYxIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDkiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0OS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk5IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU5OS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMyIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUzMi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmU3MTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Mi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80NCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDQueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTYzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGI5NTdhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzYzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmJiMTFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWQzYTk5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjI5NTRmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNjYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODciIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTg3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjgiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTI4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2Ny54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMxYzgzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY3LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjciPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTU3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTMwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTI3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFhN2ZjNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zMiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTMyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTUiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTU1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTM5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU2OS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlMjA2ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTY5LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82OSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTE1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjEiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTYxLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTQ3LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY1YWRjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJzYW1wbGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlNyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz48eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPjwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnL3NhbXBsZTciPjx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODYueHNkIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0ic2FtcGxlU09BUCIgdHlwZT0idG5zOnNhbXBsZSI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2FtcGxlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0ic2FtcGxlIj4KLTx3c2RsOnBvcnQgbmFtZT0ic2FtcGxlU09BUCIgYmluZGluZz0idG5zOnNhbXBsZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNy54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MjkyZDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzUzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU1My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI2IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUyNi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzAueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NmRhMDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3MC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzAiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcwIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yOSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMTYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmVlZDVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcxIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTcyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDQ3MGUwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzcyIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjIueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yMiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjIueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTczLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjE0OGMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWM0ZjQ5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMzQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy81MyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNTMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDU4ZWFkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQwIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTc2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTIxNTYwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU2LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMi54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzcueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ny54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNDQ1MzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3Ny54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzciIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc3Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM5IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUzOS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YjdkNzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc4Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTAiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxMC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQxIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzczIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU3My54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlNzkueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NGRjNzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU3OS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc5Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM4IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzOC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzAiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjUwOWI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU4Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOCI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU4NC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMwODdkZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTY1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTMwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTEiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTExLnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUzYzNiYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODAiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTczLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTAiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTkwLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjgiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTY4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE3MTFmYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgxLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODEiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NyIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc3LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODUiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTg1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNy54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMzA4OTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU4Mi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjYiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU2Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTMueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTgzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGRjNTE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNzMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlOTkueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2NmNWM2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODQueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg0IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg1IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlODUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzdhMWJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg1IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIxIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMjYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWE4ZjliLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzE4IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMTgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NiIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlOTYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDgueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGFjODU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84NyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNDYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy82NSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNjUueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MSIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlODEueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg4LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTUwNmIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODgueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg4IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzc2IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlNzYueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84MCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODAueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMzcueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTg5LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDZlMGRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlODkueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzg5IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OSI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOTQueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80OSIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlNDkueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NiIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNzYueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTMwNDUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9InNhbXBsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NhbXBsZTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5IiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGU5Ij4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPjx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+PC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvc2FtcGxlOSI+PHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMzgiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUzOC54c2QiLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9InNhbXBsZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJzYW1wbGVTT0FQIiB0eXBlPSJ0bnM6c2FtcGxlIj4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zYW1wbGUvTmV3T3BlcmF0aW9uIi8+Ci08d3NkbDppbnB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDppbnB1dD4KLTx3c2RsOm91dHB1dD4KLTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBwYXJ0cz0iIE5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3V0cHV0PgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpiaW5kaW5nPgotPHdzZGw6c2VydmljZSBuYW1lPSJzYW1wbGUiPgotPHdzZGw6cG9ydCBuYW1lPSJzYW1wbGVTT0FQIiBiaW5kaW5nPSJ0bnM6c2FtcGxlU09BUCI+Ci08c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotPC93c2RsOnBvcnQ+Ci08L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRkNzUzNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8zNSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTM1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNjQiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTY0LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzkiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTc5LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRmOWI0NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkwLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTAiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy83NSIgc2NoZW1hTG9jYXRpb249InNhbXBsZTc1LnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvODMiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTgzLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzQiIHNjaGVtYUxvY2F0aW9uPSIuXHNhbXBsZTc0LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjliOTMyNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTkxLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85MSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTEiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlOC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzIzIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyMy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzM1IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUzNS54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMzU4YmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5Mi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTIiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkyIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMTciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUxNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI4IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUyOC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzY4IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU2OC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTMueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5My54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmVmODguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5My54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzkzIj4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvMjciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGUyNy54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMxIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGUzMS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU0IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1NC54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZDhjMzIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTQiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk0Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzMiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU3My54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzgxIiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU4MS54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzU3IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU1Ny54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTUueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MzczZTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5NS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTUiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk1Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNDciIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU0Ny54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTEueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8xNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlMTcueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTc3YTUyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTYueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk2IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NiI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzI3IiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMjcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84OCIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlODgueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MCIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNDAueHNkIi8+PGNvbXBsZXhUeXBlIG5hbWU9Ik5ld0NvbXBsZXhUeXBlIj48c2VxdWVuY2U+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudCIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PGVsZW1lbnQgbmFtZT0iTmV3RWxlbWVudDEiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pjwvc2VxdWVuY2U+PC9jb21wbGV4VHlwZT48ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0bnM6TmV3Q29tcGxleFR5cGUiPjwvZWxlbWVudD48L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk3LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTcueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDc5MjRhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTcueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk3IiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85NyI+Ci08aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzMzIiBzY2hlbWFMb2NhdGlvbj0ic2FtcGxlMzMueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy8yNyIgc2NoZW1hTG9jYXRpb249Ii4vc2FtcGxlMjcueHNkIi8+PGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy84IiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGU4LnhzZCIvPjxjb21wbGV4VHlwZSBuYW1lPSJOZXdDb21wbGV4VHlwZSI+PHNlcXVlbmNlPjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PjxlbGVtZW50IG5hbWU9Ik5ld0VsZW1lbnQxIiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48L3NlcXVlbmNlPjwvY29tcGxleFR5cGU+PGVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idG5zOk5ld0NvbXBsZXhUeXBlIj48L2VsZW1lbnQ+PC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OC54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk3NWRiMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTk4LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy85OCIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTgiPgotPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2FtcGxlLm9yZy80MiIgc2NoZW1hTG9jYXRpb249InNhbXBsZTQyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNzIiIHNjaGVtYUxvY2F0aW9uPSIuL3NhbXBsZTcyLnhzZCIvPjxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNyIgc2NoZW1hTG9jYXRpb249Ii5cc2FtcGxlNy54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMTBXU0RMc1hTRERlcGVuZHMvc2FtcGxlOTkueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ZGFkMzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xMFdTRExzWFNERGVwZW5kcy9zYW1wbGU5OS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvOTkiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzk5Ij4KLTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhbXBsZS5vcmcvNTQiIHNjaGVtYUxvY2F0aW9uPSJzYW1wbGU1NC54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzQ2IiBzY2hlbWFMb2NhdGlvbj0iLi9zYW1wbGU0Ni54c2QiLz48aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5zYW1wbGUub3JnLzEzIiBzY2hlbWFMb2NhdGlvbj0iLlxzYW1wbGUxMy54c2QiLz48Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjxzZXF1ZW5jZT48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50IiB0eXBlPSJzdHJpbmciPjwvZWxlbWVudD48ZWxlbWVudCBuYW1lPSJOZXdFbGVtZW50MSIgdHlwZT0ic3RyaW5nIj48L2VsZW1lbnQ+PC9zZXF1ZW5jZT48L2NvbXBsZXhUeXBlPjxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InRuczpOZXdDb21wbGV4VHlwZSI+PC9lbGVtZW50Pjwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMUtCLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhLzFLQi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmE3YzhmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMUtCLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iRGVmaW5pdGlvbiIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzIj4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZSIgbmFtZT0iSW5wdXQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlIiBuYW1lPSJPdXRwdXQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZyIgdHlwZT0idG5zOlBvcnRUeXBlIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydCIgYmluZGluZz0idG5zOkJpbmRpbmciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xTUIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMU1CLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNmJjNGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8xTUIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDMxMDA3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJEZWZpbml0aW9uIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMiPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTAyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTA1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTA4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDExMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDExNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDExOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjAwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIwMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjAzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIwNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjA2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIwOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjA5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzAwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMwMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMwMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzAyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzAzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMwNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMwNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzA1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzA2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMwNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMwOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzA4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzA5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQwMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDAyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQwNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDA1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQwNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDA4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0ODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0ODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0ODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0ODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0ODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0ODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0ODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTAwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUwMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTAzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUwNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTA2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUwOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTA5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDUzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1ODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1ODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1ODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1ODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1ODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1ODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1ODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1OTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1OTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1OTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1OTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NTk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1OTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1OTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDU5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjAwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYwMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYwMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjAyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjAzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYwNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYwNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjA1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjA2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYwNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYwOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjA4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjA5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Njc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Njc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Njc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Njc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2ODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2ODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Njg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2ODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2ODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Njg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Njg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2ODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2ODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Njg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2OTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2OTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NjkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2OTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2OTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Njk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Njk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2OTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2OTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDY5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Njk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Njk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2OTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcwMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzAyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcwNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzA1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcwNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzA4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDcyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDczMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDczMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDczMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDczNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDczNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDczNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDczOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Nzc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Nzc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Nzc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Nzc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3ODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3ODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3ODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3ODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Nzg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Nzg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3ODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3ODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Nzg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Nzg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3ODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3OTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NzkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3OTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3OTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Nzk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Nzk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3OTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3OTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Nzk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Nzk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3OTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3OTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDc5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODAwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgwMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODAzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgwNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODA2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgwOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODA5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDgzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4ODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4ODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4ODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4ODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4ODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4ODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4ODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4OTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4OTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4OTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4OTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50ODk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4OTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4OTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDg5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTAwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkwMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkwMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTAyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTAzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkwNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkwNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTA1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTA2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkwNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkwOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTA4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTA5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5ODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5ODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5ODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5ODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5ODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5ODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5OTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5OTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5OTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5OTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5OTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5OTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDk5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OTk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5OTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UwIiBuYW1lPSJJbnB1dDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMCIgbmFtZT0iT3V0cHV0MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMCIgdHlwZT0idG5zOlBvcnRUeXBlMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMSIgbmFtZT0iSW5wdXQxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEiIG5hbWU9Ik91dHB1dDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEiIHR5cGU9InRuczpQb3J0VHlwZTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MSIgYmluZGluZz0idG5zOkJpbmRpbmcxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIiIG5hbWU9IklucHV0MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyIiBuYW1lPSJPdXRwdXQyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIiIGJpbmRpbmc9InRuczpCaW5kaW5nMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzIiBuYW1lPSJJbnB1dDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMyIgbmFtZT0iT3V0cHV0MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMyIgdHlwZT0idG5zOlBvcnRUeXBlMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNCIgbmFtZT0iSW5wdXQ0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQiIG5hbWU9Ik91dHB1dDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQiIHR5cGU9InRuczpQb3J0VHlwZTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NCIgYmluZGluZz0idG5zOkJpbmRpbmc0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUiIG5hbWU9IklucHV0NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1IiBuYW1lPSJPdXRwdXQ1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1IiB0eXBlPSJ0bnM6UG9ydFR5cGU1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUiIGJpbmRpbmc9InRuczpCaW5kaW5nNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2IiBuYW1lPSJJbnB1dDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNiIgbmFtZT0iT3V0cHV0NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNiIgdHlwZT0idG5zOlBvcnRUeXBlNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNyIgbmFtZT0iSW5wdXQ3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTciIG5hbWU9Ik91dHB1dDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzciIHR5cGU9InRuczpQb3J0VHlwZTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NyIgYmluZGluZz0idG5zOkJpbmRpbmc3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgiIG5hbWU9IklucHV0OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4IiBuYW1lPSJPdXRwdXQ4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4IiB0eXBlPSJ0bnM6UG9ydFR5cGU4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgiIGJpbmRpbmc9InRuczpCaW5kaW5nOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5IiBuYW1lPSJJbnB1dDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOSIgbmFtZT0iT3V0cHV0OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOSIgdHlwZT0idG5zOlBvcnRUeXBlOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTAiIG5hbWU9IklucHV0MTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTAiIG5hbWU9Ik91dHB1dDEwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMCIgdHlwZT0idG5zOlBvcnRUeXBlMTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTEiIG5hbWU9IklucHV0MTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTEiIG5hbWU9Ik91dHB1dDExIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMSIgdHlwZT0idG5zOlBvcnRUeXBlMTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTIiIG5hbWU9IklucHV0MTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTIiIG5hbWU9Ik91dHB1dDEyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMiIgdHlwZT0idG5zOlBvcnRUeXBlMTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTMiIG5hbWU9IklucHV0MTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTMiIG5hbWU9Ik91dHB1dDEzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMyIgdHlwZT0idG5zOlBvcnRUeXBlMTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQiIG5hbWU9IklucHV0MTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQiIG5hbWU9Ik91dHB1dDE0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNCIgdHlwZT0idG5zOlBvcnRUeXBlMTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTUiIG5hbWU9IklucHV0MTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTUiIG5hbWU9Ik91dHB1dDE1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNSIgdHlwZT0idG5zOlBvcnRUeXBlMTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTYiIG5hbWU9IklucHV0MTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTYiIG5hbWU9Ik91dHB1dDE2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNiIgdHlwZT0idG5zOlBvcnRUeXBlMTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTciIG5hbWU9IklucHV0MTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTciIG5hbWU9Ik91dHB1dDE3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNyIgdHlwZT0idG5zOlBvcnRUeXBlMTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTciIGJpbmRpbmc9InRuczpCaW5kaW5nMTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTgiIG5hbWU9IklucHV0MTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTgiIG5hbWU9Ik91dHB1dDE4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOCIgdHlwZT0idG5zOlBvcnRUeXBlMTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTkiIG5hbWU9IklucHV0MTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTkiIG5hbWU9Ik91dHB1dDE5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOSIgdHlwZT0idG5zOlBvcnRUeXBlMTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjAiIG5hbWU9IklucHV0MjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjAiIG5hbWU9Ik91dHB1dDIwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMCIgdHlwZT0idG5zOlBvcnRUeXBlMjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjAiIGJpbmRpbmc9InRuczpCaW5kaW5nMjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjEiIG5hbWU9IklucHV0MjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjEiIG5hbWU9Ik91dHB1dDIxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMSIgdHlwZT0idG5zOlBvcnRUeXBlMjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjEiIGJpbmRpbmc9InRuczpCaW5kaW5nMjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjIiIG5hbWU9IklucHV0MjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjIiIG5hbWU9Ik91dHB1dDIyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMiIgdHlwZT0idG5zOlBvcnRUeXBlMjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjIiIGJpbmRpbmc9InRuczpCaW5kaW5nMjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjMiIG5hbWU9IklucHV0MjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjMiIG5hbWU9Ik91dHB1dDIzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMyIgdHlwZT0idG5zOlBvcnRUeXBlMjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjMiIGJpbmRpbmc9InRuczpCaW5kaW5nMjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjQiIG5hbWU9IklucHV0MjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjQiIG5hbWU9Ik91dHB1dDI0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNCIgdHlwZT0idG5zOlBvcnRUeXBlMjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjQiIGJpbmRpbmc9InRuczpCaW5kaW5nMjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjUiIG5hbWU9IklucHV0MjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjUiIG5hbWU9Ik91dHB1dDI1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNSIgdHlwZT0idG5zOlBvcnRUeXBlMjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjUiIGJpbmRpbmc9InRuczpCaW5kaW5nMjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjYiIG5hbWU9IklucHV0MjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjYiIG5hbWU9Ik91dHB1dDI2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNiIgdHlwZT0idG5zOlBvcnRUeXBlMjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjYiIGJpbmRpbmc9InRuczpCaW5kaW5nMjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjciIG5hbWU9IklucHV0MjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjciIG5hbWU9Ik91dHB1dDI3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNyIgdHlwZT0idG5zOlBvcnRUeXBlMjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjciIGJpbmRpbmc9InRuczpCaW5kaW5nMjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjgiIG5hbWU9IklucHV0MjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjgiIG5hbWU9Ik91dHB1dDI4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyOCIgdHlwZT0idG5zOlBvcnRUeXBlMjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjgiIGJpbmRpbmc9InRuczpCaW5kaW5nMjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjkiIG5hbWU9IklucHV0MjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjkiIG5hbWU9Ik91dHB1dDI5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyOSIgdHlwZT0idG5zOlBvcnRUeXBlMjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjkiIGJpbmRpbmc9InRuczpCaW5kaW5nMjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzAiIG5hbWU9IklucHV0MzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzAiIG5hbWU9Ik91dHB1dDMwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMCIgdHlwZT0idG5zOlBvcnRUeXBlMzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzAiIGJpbmRpbmc9InRuczpCaW5kaW5nMzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzEiIG5hbWU9IklucHV0MzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzEiIG5hbWU9Ik91dHB1dDMxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMSIgdHlwZT0idG5zOlBvcnRUeXBlMzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzEiIGJpbmRpbmc9InRuczpCaW5kaW5nMzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzIiIG5hbWU9IklucHV0MzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzIiIG5hbWU9Ik91dHB1dDMyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMiIgdHlwZT0idG5zOlBvcnRUeXBlMzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzIiIGJpbmRpbmc9InRuczpCaW5kaW5nMzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzMiIG5hbWU9IklucHV0MzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzMiIG5hbWU9Ik91dHB1dDMzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMyIgdHlwZT0idG5zOlBvcnRUeXBlMzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzMiIGJpbmRpbmc9InRuczpCaW5kaW5nMzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzQiIG5hbWU9IklucHV0MzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzQiIG5hbWU9Ik91dHB1dDM0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNCIgdHlwZT0idG5zOlBvcnRUeXBlMzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzQiIGJpbmRpbmc9InRuczpCaW5kaW5nMzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzUiIG5hbWU9IklucHV0MzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzUiIG5hbWU9Ik91dHB1dDM1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNSIgdHlwZT0idG5zOlBvcnRUeXBlMzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzUiIGJpbmRpbmc9InRuczpCaW5kaW5nMzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzYiIG5hbWU9IklucHV0MzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzYiIG5hbWU9Ik91dHB1dDM2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNiIgdHlwZT0idG5zOlBvcnRUeXBlMzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzYiIGJpbmRpbmc9InRuczpCaW5kaW5nMzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzciIG5hbWU9IklucHV0MzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzciIG5hbWU9Ik91dHB1dDM3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNyIgdHlwZT0idG5zOlBvcnRUeXBlMzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzciIGJpbmRpbmc9InRuczpCaW5kaW5nMzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzgiIG5hbWU9IklucHV0MzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzgiIG5hbWU9Ik91dHB1dDM4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczOCIgdHlwZT0idG5zOlBvcnRUeXBlMzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzgiIGJpbmRpbmc9InRuczpCaW5kaW5nMzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzkiIG5hbWU9IklucHV0MzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzkiIG5hbWU9Ik91dHB1dDM5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczOSIgdHlwZT0idG5zOlBvcnRUeXBlMzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzkiIGJpbmRpbmc9InRuczpCaW5kaW5nMzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDAiIG5hbWU9IklucHV0NDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDAiIG5hbWU9Ik91dHB1dDQwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MCIgdHlwZT0idG5zOlBvcnRUeXBlNDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDAiIGJpbmRpbmc9InRuczpCaW5kaW5nNDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDEiIG5hbWU9IklucHV0NDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDEiIG5hbWU9Ik91dHB1dDQxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MSIgdHlwZT0idG5zOlBvcnRUeXBlNDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDEiIGJpbmRpbmc9InRuczpCaW5kaW5nNDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDIiIG5hbWU9IklucHV0NDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDIiIG5hbWU9Ik91dHB1dDQyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MiIgdHlwZT0idG5zOlBvcnRUeXBlNDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDIiIGJpbmRpbmc9InRuczpCaW5kaW5nNDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDMiIG5hbWU9IklucHV0NDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDMiIG5hbWU9Ik91dHB1dDQzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MyIgdHlwZT0idG5zOlBvcnRUeXBlNDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDMiIGJpbmRpbmc9InRuczpCaW5kaW5nNDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDQiIG5hbWU9IklucHV0NDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDQiIG5hbWU9Ik91dHB1dDQ0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NCIgdHlwZT0idG5zOlBvcnRUeXBlNDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDQiIGJpbmRpbmc9InRuczpCaW5kaW5nNDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDUiIG5hbWU9IklucHV0NDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDUiIG5hbWU9Ik91dHB1dDQ1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NSIgdHlwZT0idG5zOlBvcnRUeXBlNDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDUiIGJpbmRpbmc9InRuczpCaW5kaW5nNDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDYiIG5hbWU9IklucHV0NDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDYiIG5hbWU9Ik91dHB1dDQ2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NiIgdHlwZT0idG5zOlBvcnRUeXBlNDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDYiIGJpbmRpbmc9InRuczpCaW5kaW5nNDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDciIG5hbWU9IklucHV0NDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDciIG5hbWU9Ik91dHB1dDQ3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NyIgdHlwZT0idG5zOlBvcnRUeXBlNDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDciIGJpbmRpbmc9InRuczpCaW5kaW5nNDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDgiIG5hbWU9IklucHV0NDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDgiIG5hbWU9Ik91dHB1dDQ4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0OCIgdHlwZT0idG5zOlBvcnRUeXBlNDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDgiIGJpbmRpbmc9InRuczpCaW5kaW5nNDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDkiIG5hbWU9IklucHV0NDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDkiIG5hbWU9Ik91dHB1dDQ5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0OSIgdHlwZT0idG5zOlBvcnRUeXBlNDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDkiIGJpbmRpbmc9InRuczpCaW5kaW5nNDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTAiIG5hbWU9IklucHV0NTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTAiIG5hbWU9Ik91dHB1dDUwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MCIgdHlwZT0idG5zOlBvcnRUeXBlNTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTAiIGJpbmRpbmc9InRuczpCaW5kaW5nNTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTEiIG5hbWU9IklucHV0NTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTEiIG5hbWU9Ik91dHB1dDUxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MSIgdHlwZT0idG5zOlBvcnRUeXBlNTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTEiIGJpbmRpbmc9InRuczpCaW5kaW5nNTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTIiIG5hbWU9IklucHV0NTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTIiIG5hbWU9Ik91dHB1dDUyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MiIgdHlwZT0idG5zOlBvcnRUeXBlNTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTIiIGJpbmRpbmc9InRuczpCaW5kaW5nNTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTMiIG5hbWU9IklucHV0NTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTMiIG5hbWU9Ik91dHB1dDUzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MyIgdHlwZT0idG5zOlBvcnRUeXBlNTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTMiIGJpbmRpbmc9InRuczpCaW5kaW5nNTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTQiIG5hbWU9IklucHV0NTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTQiIG5hbWU9Ik91dHB1dDU0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NCIgdHlwZT0idG5zOlBvcnRUeXBlNTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTQiIGJpbmRpbmc9InRuczpCaW5kaW5nNTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTUiIG5hbWU9IklucHV0NTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTUiIG5hbWU9Ik91dHB1dDU1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NSIgdHlwZT0idG5zOlBvcnRUeXBlNTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTUiIGJpbmRpbmc9InRuczpCaW5kaW5nNTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTYiIG5hbWU9IklucHV0NTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTYiIG5hbWU9Ik91dHB1dDU2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NiIgdHlwZT0idG5zOlBvcnRUeXBlNTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTYiIGJpbmRpbmc9InRuczpCaW5kaW5nNTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTciIG5hbWU9IklucHV0NTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTciIG5hbWU9Ik91dHB1dDU3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NyIgdHlwZT0idG5zOlBvcnRUeXBlNTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTciIGJpbmRpbmc9InRuczpCaW5kaW5nNTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTgiIG5hbWU9IklucHV0NTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTgiIG5hbWU9Ik91dHB1dDU4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1OCIgdHlwZT0idG5zOlBvcnRUeXBlNTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTgiIGJpbmRpbmc9InRuczpCaW5kaW5nNTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTkiIG5hbWU9IklucHV0NTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTkiIG5hbWU9Ik91dHB1dDU5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1OSIgdHlwZT0idG5zOlBvcnRUeXBlNTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTkiIGJpbmRpbmc9InRuczpCaW5kaW5nNTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjAiIG5hbWU9IklucHV0NjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjAiIG5hbWU9Ik91dHB1dDYwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MCIgdHlwZT0idG5zOlBvcnRUeXBlNjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjAiIGJpbmRpbmc9InRuczpCaW5kaW5nNjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjEiIG5hbWU9IklucHV0NjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjEiIG5hbWU9Ik91dHB1dDYxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MSIgdHlwZT0idG5zOlBvcnRUeXBlNjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjEiIGJpbmRpbmc9InRuczpCaW5kaW5nNjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjIiIG5hbWU9IklucHV0NjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjIiIG5hbWU9Ik91dHB1dDYyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MiIgdHlwZT0idG5zOlBvcnRUeXBlNjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjIiIGJpbmRpbmc9InRuczpCaW5kaW5nNjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjMiIG5hbWU9IklucHV0NjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjMiIG5hbWU9Ik91dHB1dDYzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MyIgdHlwZT0idG5zOlBvcnRUeXBlNjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjMiIGJpbmRpbmc9InRuczpCaW5kaW5nNjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjQiIG5hbWU9IklucHV0NjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjQiIG5hbWU9Ik91dHB1dDY0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NCIgdHlwZT0idG5zOlBvcnRUeXBlNjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjQiIGJpbmRpbmc9InRuczpCaW5kaW5nNjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjUiIG5hbWU9IklucHV0NjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjUiIG5hbWU9Ik91dHB1dDY1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NSIgdHlwZT0idG5zOlBvcnRUeXBlNjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjUiIGJpbmRpbmc9InRuczpCaW5kaW5nNjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjYiIG5hbWU9IklucHV0NjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjYiIG5hbWU9Ik91dHB1dDY2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NiIgdHlwZT0idG5zOlBvcnRUeXBlNjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjYiIGJpbmRpbmc9InRuczpCaW5kaW5nNjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjciIG5hbWU9IklucHV0NjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjciIG5hbWU9Ik91dHB1dDY3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NyIgdHlwZT0idG5zOlBvcnRUeXBlNjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjciIGJpbmRpbmc9InRuczpCaW5kaW5nNjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjgiIG5hbWU9IklucHV0NjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjgiIG5hbWU9Ik91dHB1dDY4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2OCIgdHlwZT0idG5zOlBvcnRUeXBlNjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjgiIGJpbmRpbmc9InRuczpCaW5kaW5nNjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjkiIG5hbWU9IklucHV0NjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjkiIG5hbWU9Ik91dHB1dDY5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2OSIgdHlwZT0idG5zOlBvcnRUeXBlNjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjkiIGJpbmRpbmc9InRuczpCaW5kaW5nNjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzAiIG5hbWU9IklucHV0NzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzAiIG5hbWU9Ik91dHB1dDcwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MCIgdHlwZT0idG5zOlBvcnRUeXBlNzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzAiIGJpbmRpbmc9InRuczpCaW5kaW5nNzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzEiIG5hbWU9IklucHV0NzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzEiIG5hbWU9Ik91dHB1dDcxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MSIgdHlwZT0idG5zOlBvcnRUeXBlNzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzEiIGJpbmRpbmc9InRuczpCaW5kaW5nNzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzIiIG5hbWU9IklucHV0NzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzIiIG5hbWU9Ik91dHB1dDcyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MiIgdHlwZT0idG5zOlBvcnRUeXBlNzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzIiIGJpbmRpbmc9InRuczpCaW5kaW5nNzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTczIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzMiIG5hbWU9IklucHV0NzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzMiIG5hbWU9Ik91dHB1dDczIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MyIgdHlwZT0idG5zOlBvcnRUeXBlNzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzMiIGJpbmRpbmc9InRuczpCaW5kaW5nNzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzQiIG5hbWU9IklucHV0NzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzQiIG5hbWU9Ik91dHB1dDc0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NCIgdHlwZT0idG5zOlBvcnRUeXBlNzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzQiIGJpbmRpbmc9InRuczpCaW5kaW5nNzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzUiIG5hbWU9IklucHV0NzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzUiIG5hbWU9Ik91dHB1dDc1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NSIgdHlwZT0idG5zOlBvcnRUeXBlNzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzUiIGJpbmRpbmc9InRuczpCaW5kaW5nNzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzYiIG5hbWU9IklucHV0NzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzYiIG5hbWU9Ik91dHB1dDc2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NiIgdHlwZT0idG5zOlBvcnRUeXBlNzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzYiIGJpbmRpbmc9InRuczpCaW5kaW5nNzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzciIG5hbWU9IklucHV0NzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzciIG5hbWU9Ik91dHB1dDc3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NyIgdHlwZT0idG5zOlBvcnRUeXBlNzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzciIGJpbmRpbmc9InRuczpCaW5kaW5nNzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzgiIG5hbWU9IklucHV0NzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzgiIG5hbWU9Ik91dHB1dDc4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3OCIgdHlwZT0idG5zOlBvcnRUeXBlNzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzgiIGJpbmRpbmc9InRuczpCaW5kaW5nNzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzkiIG5hbWU9IklucHV0NzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzkiIG5hbWU9Ik91dHB1dDc5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3OSIgdHlwZT0idG5zOlBvcnRUeXBlNzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzkiIGJpbmRpbmc9InRuczpCaW5kaW5nNzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODAiIG5hbWU9IklucHV0ODAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODAiIG5hbWU9Ik91dHB1dDgwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MCIgdHlwZT0idG5zOlBvcnRUeXBlODAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODAiIGJpbmRpbmc9InRuczpCaW5kaW5nODAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODEiIG5hbWU9IklucHV0ODEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODEiIG5hbWU9Ik91dHB1dDgxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MSIgdHlwZT0idG5zOlBvcnRUeXBlODEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODEiIGJpbmRpbmc9InRuczpCaW5kaW5nODEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODIiIG5hbWU9IklucHV0ODIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODIiIG5hbWU9Ik91dHB1dDgyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MiIgdHlwZT0idG5zOlBvcnRUeXBlODIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODIiIGJpbmRpbmc9InRuczpCaW5kaW5nODIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODMiIG5hbWU9IklucHV0ODMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODMiIG5hbWU9Ik91dHB1dDgzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MyIgdHlwZT0idG5zOlBvcnRUeXBlODMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODMiIGJpbmRpbmc9InRuczpCaW5kaW5nODMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODQiIG5hbWU9IklucHV0ODQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODQiIG5hbWU9Ik91dHB1dDg0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NCIgdHlwZT0idG5zOlBvcnRUeXBlODQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODQiIGJpbmRpbmc9InRuczpCaW5kaW5nODQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODUiIG5hbWU9IklucHV0ODUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODUiIG5hbWU9Ik91dHB1dDg1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NSIgdHlwZT0idG5zOlBvcnRUeXBlODUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODUiIGJpbmRpbmc9InRuczpCaW5kaW5nODUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODYiIG5hbWU9IklucHV0ODYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODYiIG5hbWU9Ik91dHB1dDg2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NiIgdHlwZT0idG5zOlBvcnRUeXBlODYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODYiIGJpbmRpbmc9InRuczpCaW5kaW5nODYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODciIG5hbWU9IklucHV0ODciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODciIG5hbWU9Ik91dHB1dDg3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NyIgdHlwZT0idG5zOlBvcnRUeXBlODciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODciIGJpbmRpbmc9InRuczpCaW5kaW5nODciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODgiIG5hbWU9IklucHV0ODgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODgiIG5hbWU9Ik91dHB1dDg4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4OCIgdHlwZT0idG5zOlBvcnRUeXBlODgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODgiIGJpbmRpbmc9InRuczpCaW5kaW5nODgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODkiIG5hbWU9IklucHV0ODkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODkiIG5hbWU9Ik91dHB1dDg5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4OSIgdHlwZT0idG5zOlBvcnRUeXBlODkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODkiIGJpbmRpbmc9InRuczpCaW5kaW5nODkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTAiIG5hbWU9IklucHV0OTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTAiIG5hbWU9Ik91dHB1dDkwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MCIgdHlwZT0idG5zOlBvcnRUeXBlOTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTAiIGJpbmRpbmc9InRuczpCaW5kaW5nOTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTEiIG5hbWU9IklucHV0OTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTEiIG5hbWU9Ik91dHB1dDkxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MSIgdHlwZT0idG5zOlBvcnRUeXBlOTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTEiIGJpbmRpbmc9InRuczpCaW5kaW5nOTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTIiIG5hbWU9IklucHV0OTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTIiIG5hbWU9Ik91dHB1dDkyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MiIgdHlwZT0idG5zOlBvcnRUeXBlOTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTIiIGJpbmRpbmc9InRuczpCaW5kaW5nOTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTMiIG5hbWU9IklucHV0OTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTMiIG5hbWU9Ik91dHB1dDkzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MyIgdHlwZT0idG5zOlBvcnRUeXBlOTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTMiIGJpbmRpbmc9InRuczpCaW5kaW5nOTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTQiIG5hbWU9IklucHV0OTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTQiIG5hbWU9Ik91dHB1dDk0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NCIgdHlwZT0idG5zOlBvcnRUeXBlOTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTQiIGJpbmRpbmc9InRuczpCaW5kaW5nOTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTUiIG5hbWU9IklucHV0OTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTUiIG5hbWU9Ik91dHB1dDk1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NSIgdHlwZT0idG5zOlBvcnRUeXBlOTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTUiIGJpbmRpbmc9InRuczpCaW5kaW5nOTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTYiIG5hbWU9IklucHV0OTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTYiIG5hbWU9Ik91dHB1dDk2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NiIgdHlwZT0idG5zOlBvcnRUeXBlOTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTYiIGJpbmRpbmc9InRuczpCaW5kaW5nOTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTciIG5hbWU9IklucHV0OTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTciIG5hbWU9Ik91dHB1dDk3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NyIgdHlwZT0idG5zOlBvcnRUeXBlOTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTciIGJpbmRpbmc9InRuczpCaW5kaW5nOTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTgiIG5hbWU9IklucHV0OTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTgiIG5hbWU9Ik91dHB1dDk4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5OCIgdHlwZT0idG5zOlBvcnRUeXBlOTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTgiIGJpbmRpbmc9InRuczpCaW5kaW5nOTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTkiIG5hbWU9IklucHV0OTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTkiIG5hbWU9Ik91dHB1dDk5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5OSIgdHlwZT0idG5zOlBvcnRUeXBlOTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTkiIGJpbmRpbmc9InRuczpCaW5kaW5nOTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTAwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTAwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTAwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTAwIiBuYW1lPSJJbnB1dDEwMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDAiIG5hbWU9Ik91dHB1dDEwMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTAwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTAwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTAwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTAxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDEiIG5hbWU9IklucHV0MTAxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwMSIgbmFtZT0iT3V0cHV0MTAxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDEiIHR5cGU9InRuczpQb3J0VHlwZTEwMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTAxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTAxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTAyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwMiIgbmFtZT0iSW5wdXQxMDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTAyIiBuYW1lPSJPdXRwdXQxMDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwMiIgdHlwZT0idG5zOlBvcnRUeXBlMTAyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwMiIgYmluZGluZz0idG5zOkJpbmRpbmcxMDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTAzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTAzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTAzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTAzIiBuYW1lPSJJbnB1dDEwMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDMiIG5hbWU9Ik91dHB1dDEwMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTAzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTAzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTAzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTA0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDQiIG5hbWU9IklucHV0MTA0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwNCIgbmFtZT0iT3V0cHV0MTA0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDQiIHR5cGU9InRuczpQb3J0VHlwZTEwNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTA0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTA0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTA1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwNSIgbmFtZT0iSW5wdXQxMDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTA1IiBuYW1lPSJPdXRwdXQxMDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwNSIgdHlwZT0idG5zOlBvcnRUeXBlMTA1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwNSIgYmluZGluZz0idG5zOkJpbmRpbmcxMDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTA2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTA2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTA2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTA2IiBuYW1lPSJJbnB1dDEwNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDYiIG5hbWU9Ik91dHB1dDEwNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTA2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTA2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTA2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTA3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDciIG5hbWU9IklucHV0MTA3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwNyIgbmFtZT0iT3V0cHV0MTA3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDciIHR5cGU9InRuczpQb3J0VHlwZTEwNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTA3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDciIGJpbmRpbmc9InRuczpCaW5kaW5nMTA3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTA4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwOCIgbmFtZT0iSW5wdXQxMDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTA4IiBuYW1lPSJPdXRwdXQxMDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwOCIgdHlwZT0idG5zOlBvcnRUeXBlMTA4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwOCIgYmluZGluZz0idG5zOkJpbmRpbmcxMDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTA5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTA5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTA5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTA5IiBuYW1lPSJJbnB1dDEwOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDkiIG5hbWU9Ik91dHB1dDEwOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTA5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTA5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTA5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTAiIG5hbWU9IklucHV0MTEwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExMCIgbmFtZT0iT3V0cHV0MTEwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTAiIHR5cGU9InRuczpQb3J0VHlwZTExMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTEwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTEwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTExIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTExIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExMSIgbmFtZT0iSW5wdXQxMTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTExIiBuYW1lPSJPdXRwdXQxMTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExMSIgdHlwZT0idG5zOlBvcnRUeXBlMTExIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTExIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExMSIgYmluZGluZz0idG5zOkJpbmRpbmcxMTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTEyIiBuYW1lPSJJbnB1dDExMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTIiIG5hbWU9Ik91dHB1dDExMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTEyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTEyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTEyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzExMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTMiIG5hbWU9IklucHV0MTEzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExMyIgbmFtZT0iT3V0cHV0MTEzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTMiIHR5cGU9InRuczpQb3J0VHlwZTExMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTEzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTEzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTE0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExNCIgbmFtZT0iSW5wdXQxMTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTE0IiBuYW1lPSJPdXRwdXQxMTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExNCIgdHlwZT0idG5zOlBvcnRUeXBlMTE0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExNCIgYmluZGluZz0idG5zOkJpbmRpbmcxMTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTE1IiBuYW1lPSJJbnB1dDExNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTUiIG5hbWU9Ik91dHB1dDExNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTE1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTE1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTE1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzExNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTYiIG5hbWU9IklucHV0MTE2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExNiIgbmFtZT0iT3V0cHV0MTE2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTYiIHR5cGU9InRuczpQb3J0VHlwZTExNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTE2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTE2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTE3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExNyIgbmFtZT0iSW5wdXQxMTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTE3IiBuYW1lPSJPdXRwdXQxMTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExNyIgdHlwZT0idG5zOlBvcnRUeXBlMTE3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExNyIgYmluZGluZz0idG5zOkJpbmRpbmcxMTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTE4IiBuYW1lPSJJbnB1dDExOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTgiIG5hbWU9Ik91dHB1dDExOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTE4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTE4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTE4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzExOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTkiIG5hbWU9IklucHV0MTE5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExOSIgbmFtZT0iT3V0cHV0MTE5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTkiIHR5cGU9InRuczpQb3J0VHlwZTExOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTE5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTE5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTIwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyMCIgbmFtZT0iSW5wdXQxMjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTIwIiBuYW1lPSJPdXRwdXQxMjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyMCIgdHlwZT0idG5zOlBvcnRUeXBlMTIwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyMCIgYmluZGluZz0idG5zOkJpbmRpbmcxMjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTIxIiBuYW1lPSJJbnB1dDEyMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjEiIG5hbWU9Ik91dHB1dDEyMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTIxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTIxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTIxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjIiIG5hbWU9IklucHV0MTIyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyMiIgbmFtZT0iT3V0cHV0MTIyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjIiIHR5cGU9InRuczpQb3J0VHlwZTEyMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTIyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTIyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTIzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyMyIgbmFtZT0iSW5wdXQxMjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTIzIiBuYW1lPSJPdXRwdXQxMjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyMyIgdHlwZT0idG5zOlBvcnRUeXBlMTIzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyMyIgYmluZGluZz0idG5zOkJpbmRpbmcxMjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTI0IiBuYW1lPSJJbnB1dDEyNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjQiIG5hbWU9Ik91dHB1dDEyNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTI0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTI0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTI0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjUiIG5hbWU9IklucHV0MTI1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyNSIgbmFtZT0iT3V0cHV0MTI1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjUiIHR5cGU9InRuczpQb3J0VHlwZTEyNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTI1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTI1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTI2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyNiIgbmFtZT0iSW5wdXQxMjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTI2IiBuYW1lPSJPdXRwdXQxMjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyNiIgdHlwZT0idG5zOlBvcnRUeXBlMTI2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyNiIgYmluZGluZz0idG5zOkJpbmRpbmcxMjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTI3IiBuYW1lPSJJbnB1dDEyNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjciIG5hbWU9Ik91dHB1dDEyNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTI3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTI3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTI3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjgiIG5hbWU9IklucHV0MTI4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyOCIgbmFtZT0iT3V0cHV0MTI4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjgiIHR5cGU9InRuczpQb3J0VHlwZTEyOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTI4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTI4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTI5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyOSIgbmFtZT0iSW5wdXQxMjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTI5IiBuYW1lPSJPdXRwdXQxMjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyOSIgdHlwZT0idG5zOlBvcnRUeXBlMTI5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyOSIgYmluZGluZz0idG5zOkJpbmRpbmcxMjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTMwIiBuYW1lPSJJbnB1dDEzMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzAiIG5hbWU9Ik91dHB1dDEzMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTMwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTMwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTMwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzEiIG5hbWU9IklucHV0MTMxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzMSIgbmFtZT0iT3V0cHV0MTMxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzEiIHR5cGU9InRuczpQb3J0VHlwZTEzMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTMxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTMxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTMyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzMiIgbmFtZT0iSW5wdXQxMzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTMyIiBuYW1lPSJPdXRwdXQxMzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzMiIgdHlwZT0idG5zOlBvcnRUeXBlMTMyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzMiIgYmluZGluZz0idG5zOkJpbmRpbmcxMzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTMzIiBuYW1lPSJJbnB1dDEzMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzMiIG5hbWU9Ik91dHB1dDEzMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTMzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTMzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTMzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzQiIG5hbWU9IklucHV0MTM0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzNCIgbmFtZT0iT3V0cHV0MTM0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzQiIHR5cGU9InRuczpQb3J0VHlwZTEzNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTM0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTM0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTM1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzNSIgbmFtZT0iSW5wdXQxMzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTM1IiBuYW1lPSJPdXRwdXQxMzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzNSIgdHlwZT0idG5zOlBvcnRUeXBlMTM1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzNSIgYmluZGluZz0idG5zOkJpbmRpbmcxMzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTM2IiBuYW1lPSJJbnB1dDEzNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzYiIG5hbWU9Ik91dHB1dDEzNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTM2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTM2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTM2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzciIG5hbWU9IklucHV0MTM3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzNyIgbmFtZT0iT3V0cHV0MTM3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzciIHR5cGU9InRuczpQb3J0VHlwZTEzNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTM3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzciIGJpbmRpbmc9InRuczpCaW5kaW5nMTM3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTM4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzOCIgbmFtZT0iSW5wdXQxMzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTM4IiBuYW1lPSJPdXRwdXQxMzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzOCIgdHlwZT0idG5zOlBvcnRUeXBlMTM4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzOCIgYmluZGluZz0idG5zOkJpbmRpbmcxMzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTM5IiBuYW1lPSJJbnB1dDEzOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzkiIG5hbWU9Ik91dHB1dDEzOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTM5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTM5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTM5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDAiIG5hbWU9IklucHV0MTQwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0MCIgbmFtZT0iT3V0cHV0MTQwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDAiIHR5cGU9InRuczpQb3J0VHlwZTE0MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0MSIgbmFtZT0iSW5wdXQxNDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQxIiBuYW1lPSJPdXRwdXQxNDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0MSIgdHlwZT0idG5zOlBvcnRUeXBlMTQxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0MSIgYmluZGluZz0idG5zOkJpbmRpbmcxNDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQyIiBuYW1lPSJJbnB1dDE0MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDIiIG5hbWU9Ik91dHB1dDE0MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDMiIG5hbWU9IklucHV0MTQzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0MyIgbmFtZT0iT3V0cHV0MTQzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDMiIHR5cGU9InRuczpQb3J0VHlwZTE0MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQ0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0NCIgbmFtZT0iSW5wdXQxNDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQ0IiBuYW1lPSJPdXRwdXQxNDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0NCIgdHlwZT0idG5zOlBvcnRUeXBlMTQ0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0NCIgYmluZGluZz0idG5zOkJpbmRpbmcxNDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQ1IiBuYW1lPSJJbnB1dDE0NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDUiIG5hbWU9Ik91dHB1dDE0NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQ1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQ1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQ1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDYiIG5hbWU9IklucHV0MTQ2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0NiIgbmFtZT0iT3V0cHV0MTQ2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDYiIHR5cGU9InRuczpQb3J0VHlwZTE0NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQ2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQ2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQ3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0NyIgbmFtZT0iSW5wdXQxNDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQ3IiBuYW1lPSJPdXRwdXQxNDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0NyIgdHlwZT0idG5zOlBvcnRUeXBlMTQ3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0NyIgYmluZGluZz0idG5zOkJpbmRpbmcxNDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQ4IiBuYW1lPSJJbnB1dDE0OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDgiIG5hbWU9Ik91dHB1dDE0OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQ4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQ4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQ4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDkiIG5hbWU9IklucHV0MTQ5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0OSIgbmFtZT0iT3V0cHV0MTQ5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDkiIHR5cGU9InRuczpQb3J0VHlwZTE0OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQ5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQ5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTUwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1MCIgbmFtZT0iSW5wdXQxNTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTUwIiBuYW1lPSJPdXRwdXQxNTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1MCIgdHlwZT0idG5zOlBvcnRUeXBlMTUwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1MCIgYmluZGluZz0idG5zOkJpbmRpbmcxNTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTUxIiBuYW1lPSJJbnB1dDE1MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTEiIG5hbWU9Ik91dHB1dDE1MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTUxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTUxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTUxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTIiIG5hbWU9IklucHV0MTUyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1MiIgbmFtZT0iT3V0cHV0MTUyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTIiIHR5cGU9InRuczpQb3J0VHlwZTE1MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTUyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTUyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTUzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1MyIgbmFtZT0iSW5wdXQxNTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTUzIiBuYW1lPSJPdXRwdXQxNTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1MyIgdHlwZT0idG5zOlBvcnRUeXBlMTUzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1MyIgYmluZGluZz0idG5zOkJpbmRpbmcxNTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTU0IiBuYW1lPSJJbnB1dDE1NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTQiIG5hbWU9Ik91dHB1dDE1NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTU0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTU0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTU0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTUiIG5hbWU9IklucHV0MTU1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1NSIgbmFtZT0iT3V0cHV0MTU1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTUiIHR5cGU9InRuczpQb3J0VHlwZTE1NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTU1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTU1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTU2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1NiIgbmFtZT0iSW5wdXQxNTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTU2IiBuYW1lPSJPdXRwdXQxNTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1NiIgdHlwZT0idG5zOlBvcnRUeXBlMTU2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1NiIgYmluZGluZz0idG5zOkJpbmRpbmcxNTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTU3IiBuYW1lPSJJbnB1dDE1NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTciIG5hbWU9Ik91dHB1dDE1NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTU3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTU3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTU3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTgiIG5hbWU9IklucHV0MTU4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1OCIgbmFtZT0iT3V0cHV0MTU4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTgiIHR5cGU9InRuczpQb3J0VHlwZTE1OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTU4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTU4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTU5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1OSIgbmFtZT0iSW5wdXQxNTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTU5IiBuYW1lPSJPdXRwdXQxNTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1OSIgdHlwZT0idG5zOlBvcnRUeXBlMTU5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1OSIgYmluZGluZz0idG5zOkJpbmRpbmcxNTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTYwIiBuYW1lPSJJbnB1dDE2MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjAiIG5hbWU9Ik91dHB1dDE2MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTYwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTYwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTYwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjEiIG5hbWU9IklucHV0MTYxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2MSIgbmFtZT0iT3V0cHV0MTYxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjEiIHR5cGU9InRuczpQb3J0VHlwZTE2MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTYxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTYxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTYyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2MiIgbmFtZT0iSW5wdXQxNjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTYyIiBuYW1lPSJPdXRwdXQxNjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2MiIgdHlwZT0idG5zOlBvcnRUeXBlMTYyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2MiIgYmluZGluZz0idG5zOkJpbmRpbmcxNjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTYzIiBuYW1lPSJJbnB1dDE2MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjMiIG5hbWU9Ik91dHB1dDE2MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTYzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTYzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTYzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjQiIG5hbWU9IklucHV0MTY0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2NCIgbmFtZT0iT3V0cHV0MTY0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjQiIHR5cGU9InRuczpQb3J0VHlwZTE2NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTY0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTY0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTY1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2NSIgbmFtZT0iSW5wdXQxNjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTY1IiBuYW1lPSJPdXRwdXQxNjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2NSIgdHlwZT0idG5zOlBvcnRUeXBlMTY1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2NSIgYmluZGluZz0idG5zOkJpbmRpbmcxNjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTY2IiBuYW1lPSJJbnB1dDE2NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjYiIG5hbWU9Ik91dHB1dDE2NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTY2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTY2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTY2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjciIG5hbWU9IklucHV0MTY3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2NyIgbmFtZT0iT3V0cHV0MTY3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjciIHR5cGU9InRuczpQb3J0VHlwZTE2NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTY3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjciIGJpbmRpbmc9InRuczpCaW5kaW5nMTY3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTY4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2OCIgbmFtZT0iSW5wdXQxNjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTY4IiBuYW1lPSJPdXRwdXQxNjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2OCIgdHlwZT0idG5zOlBvcnRUeXBlMTY4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2OCIgYmluZGluZz0idG5zOkJpbmRpbmcxNjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTY5IiBuYW1lPSJJbnB1dDE2OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjkiIG5hbWU9Ik91dHB1dDE2OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTY5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTY5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTY5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzAiIG5hbWU9IklucHV0MTcwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3MCIgbmFtZT0iT3V0cHV0MTcwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzAiIHR5cGU9InRuczpQb3J0VHlwZTE3MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTcwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTcwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTcxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTcxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3MSIgbmFtZT0iSW5wdXQxNzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTcxIiBuYW1lPSJPdXRwdXQxNzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3MSIgdHlwZT0idG5zOlBvcnRUeXBlMTcxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTcxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3MSIgYmluZGluZz0idG5zOkJpbmRpbmcxNzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTcyIiBuYW1lPSJJbnB1dDE3MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzIiIG5hbWU9Ik91dHB1dDE3MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTcyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTcyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTcyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzMiIG5hbWU9IklucHV0MTczIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3MyIgbmFtZT0iT3V0cHV0MTczIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzMiIHR5cGU9InRuczpQb3J0VHlwZTE3MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTczIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTczIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTc0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3NCIgbmFtZT0iSW5wdXQxNzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTc0IiBuYW1lPSJPdXRwdXQxNzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3NCIgdHlwZT0idG5zOlBvcnRUeXBlMTc0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3NCIgYmluZGluZz0idG5zOkJpbmRpbmcxNzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTc1IiBuYW1lPSJJbnB1dDE3NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzUiIG5hbWU9Ik91dHB1dDE3NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTc1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTc1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTc1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzYiIG5hbWU9IklucHV0MTc2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3NiIgbmFtZT0iT3V0cHV0MTc2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzYiIHR5cGU9InRuczpQb3J0VHlwZTE3NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTc2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTc2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTc3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3NyIgbmFtZT0iSW5wdXQxNzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTc3IiBuYW1lPSJPdXRwdXQxNzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3NyIgdHlwZT0idG5zOlBvcnRUeXBlMTc3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3NyIgYmluZGluZz0idG5zOkJpbmRpbmcxNzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTc4IiBuYW1lPSJJbnB1dDE3OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzgiIG5hbWU9Ik91dHB1dDE3OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTc4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTc4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTc4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzkiIG5hbWU9IklucHV0MTc5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3OSIgbmFtZT0iT3V0cHV0MTc5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzkiIHR5cGU9InRuczpQb3J0VHlwZTE3OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTc5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTc5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTgwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4MCIgbmFtZT0iSW5wdXQxODAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTgwIiBuYW1lPSJPdXRwdXQxODAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4MCIgdHlwZT0idG5zOlBvcnRUeXBlMTgwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4MCIgYmluZGluZz0idG5zOkJpbmRpbmcxODAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTgxIiBuYW1lPSJJbnB1dDE4MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODEiIG5hbWU9Ik91dHB1dDE4MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTgxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxODEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTgxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTgxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODIiIG5hbWU9IklucHV0MTgyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4MiIgbmFtZT0iT3V0cHV0MTgyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODIiIHR5cGU9InRuczpQb3J0VHlwZTE4MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTgyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTgyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTgzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4MyIgbmFtZT0iSW5wdXQxODMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTgzIiBuYW1lPSJPdXRwdXQxODMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4MyIgdHlwZT0idG5zOlBvcnRUeXBlMTgzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4MyIgYmluZGluZz0idG5zOkJpbmRpbmcxODMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTg0IiBuYW1lPSJJbnB1dDE4NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODQiIG5hbWU9Ik91dHB1dDE4NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTg0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxODQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTg0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTg0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODUiIG5hbWU9IklucHV0MTg1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4NSIgbmFtZT0iT3V0cHV0MTg1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODUiIHR5cGU9InRuczpQb3J0VHlwZTE4NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTg1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTg1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTg2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4NiIgbmFtZT0iSW5wdXQxODYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTg2IiBuYW1lPSJPdXRwdXQxODYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4NiIgdHlwZT0idG5zOlBvcnRUeXBlMTg2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4NiIgYmluZGluZz0idG5zOkJpbmRpbmcxODYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTg3IiBuYW1lPSJJbnB1dDE4NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODciIG5hbWU9Ik91dHB1dDE4NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTg3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxODciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTg3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTg3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODgiIG5hbWU9IklucHV0MTg4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4OCIgbmFtZT0iT3V0cHV0MTg4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODgiIHR5cGU9InRuczpQb3J0VHlwZTE4OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTg4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTg4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTg5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4OSIgbmFtZT0iSW5wdXQxODkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTg5IiBuYW1lPSJPdXRwdXQxODkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4OSIgdHlwZT0idG5zOlBvcnRUeXBlMTg5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4OSIgYmluZGluZz0idG5zOkJpbmRpbmcxODkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTkwIiBuYW1lPSJJbnB1dDE5MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTAiIG5hbWU9Ik91dHB1dDE5MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTkwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTkwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTkwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTEiIG5hbWU9IklucHV0MTkxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5MSIgbmFtZT0iT3V0cHV0MTkxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTEiIHR5cGU9InRuczpQb3J0VHlwZTE5MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTkxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTkxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTkyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5MiIgbmFtZT0iSW5wdXQxOTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTkyIiBuYW1lPSJPdXRwdXQxOTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5MiIgdHlwZT0idG5zOlBvcnRUeXBlMTkyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5MiIgYmluZGluZz0idG5zOkJpbmRpbmcxOTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTkzIiBuYW1lPSJJbnB1dDE5MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTMiIG5hbWU9Ik91dHB1dDE5MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTkzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTkzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTkzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTQiIG5hbWU9IklucHV0MTk0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5NCIgbmFtZT0iT3V0cHV0MTk0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTQiIHR5cGU9InRuczpQb3J0VHlwZTE5NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTk0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTk0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTk1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5NSIgbmFtZT0iSW5wdXQxOTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTk1IiBuYW1lPSJPdXRwdXQxOTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5NSIgdHlwZT0idG5zOlBvcnRUeXBlMTk1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5NSIgYmluZGluZz0idG5zOkJpbmRpbmcxOTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTk2IiBuYW1lPSJJbnB1dDE5NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTYiIG5hbWU9Ik91dHB1dDE5NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTk2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTk2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTk2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTciIG5hbWU9IklucHV0MTk3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5NyIgbmFtZT0iT3V0cHV0MTk3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTciIHR5cGU9InRuczpQb3J0VHlwZTE5NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTk3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTciIGJpbmRpbmc9InRuczpCaW5kaW5nMTk3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTk4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5OCIgbmFtZT0iSW5wdXQxOTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTk4IiBuYW1lPSJPdXRwdXQxOTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5OCIgdHlwZT0idG5zOlBvcnRUeXBlMTk4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5OCIgYmluZGluZz0idG5zOkJpbmRpbmcxOTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTk5IiBuYW1lPSJJbnB1dDE5OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTkiIG5hbWU9Ik91dHB1dDE5OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTk5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTk5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTk5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjAwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIwMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMDAiIG5hbWU9IklucHV0MjAwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIwMCIgbmFtZT0iT3V0cHV0MjAwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMDAiIHR5cGU9InRuczpQb3J0VHlwZTIwMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjAwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMDAiIGJpbmRpbmc9InRuczpCaW5kaW5nMjAwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjAxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjAxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIwMSIgbmFtZT0iSW5wdXQyMDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjAxIiBuYW1lPSJPdXRwdXQyMDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIwMSIgdHlwZT0idG5zOlBvcnRUeXBlMjAxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjAxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIwMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIwMSIgYmluZGluZz0idG5zOkJpbmRpbmcyMDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIwMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjAyIiBuYW1lPSJJbnB1dDIwMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMDIiIG5hbWU9Ik91dHB1dDIwMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjAyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjAyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIwMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjAyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIwMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjAzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIwMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMDMiIG5hbWU9IklucHV0MjAzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIwMyIgbmFtZT0iT3V0cHV0MjAzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMDMiIHR5cGU9InRuczpQb3J0VHlwZTIwMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjAzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMDMiIGJpbmRpbmc9InRuczpCaW5kaW5nMjAzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjA0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjA0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIwNCIgbmFtZT0iSW5wdXQyMDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjA0IiBuYW1lPSJPdXRwdXQyMDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIwNCIgdHlwZT0idG5zOlBvcnRUeXBlMjA0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjA0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIwNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIwNCIgYmluZGluZz0idG5zOkJpbmRpbmcyMDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIwNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjA1IiBuYW1lPSJJbnB1dDIwNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMDUiIG5hbWU9Ik91dHB1dDIwNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjA1IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjA1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIwNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjA1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIwNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjA2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIwNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMDYiIG5hbWU9IklucHV0MjA2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIwNiIgbmFtZT0iT3V0cHV0MjA2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMDYiIHR5cGU9InRuczpQb3J0VHlwZTIwNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjA2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMDYiIGJpbmRpbmc9InRuczpCaW5kaW5nMjA2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjA3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjA3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIwNyIgbmFtZT0iSW5wdXQyMDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjA3IiBuYW1lPSJPdXRwdXQyMDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIwNyIgdHlwZT0idG5zOlBvcnRUeXBlMjA3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjA3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIwNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIwNyIgYmluZGluZz0idG5zOkJpbmRpbmcyMDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIwOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjA4IiBuYW1lPSJJbnB1dDIwOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMDgiIG5hbWU9Ik91dHB1dDIwOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjA4IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjA4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIwOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjA4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIwOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjA5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIwOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMDkiIG5hbWU9IklucHV0MjA5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIwOSIgbmFtZT0iT3V0cHV0MjA5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMDkiIHR5cGU9InRuczpQb3J0VHlwZTIwOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjA5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMDkiIGJpbmRpbmc9InRuczpCaW5kaW5nMjA5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjEwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjEwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIxMCIgbmFtZT0iSW5wdXQyMTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjEwIiBuYW1lPSJPdXRwdXQyMTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIxMCIgdHlwZT0idG5zOlBvcnRUeXBlMjEwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjEwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIxMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIxMCIgYmluZGluZz0idG5zOkJpbmRpbmcyMTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIxMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjExIiBuYW1lPSJJbnB1dDIxMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMTEiIG5hbWU9Ik91dHB1dDIxMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjExIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjExIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIxMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjExIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIxMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIxMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMTIiIG5hbWU9IklucHV0MjEyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIxMiIgbmFtZT0iT3V0cHV0MjEyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMTIiIHR5cGU9InRuczpQb3J0VHlwZTIxMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjEyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMTIiIGJpbmRpbmc9InRuczpCaW5kaW5nMjEyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjEzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjEzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIxMyIgbmFtZT0iSW5wdXQyMTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjEzIiBuYW1lPSJPdXRwdXQyMTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIxMyIgdHlwZT0idG5zOlBvcnRUeXBlMjEzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjEzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIxMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIxMyIgYmluZGluZz0idG5zOkJpbmRpbmcyMTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIxNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjE0IiBuYW1lPSJJbnB1dDIxNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMTQiIG5hbWU9Ik91dHB1dDIxNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjE0IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjE0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIxNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjE0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIxNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIxNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMTUiIG5hbWU9IklucHV0MjE1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIxNSIgbmFtZT0iT3V0cHV0MjE1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMTUiIHR5cGU9InRuczpQb3J0VHlwZTIxNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjE1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMTUiIGJpbmRpbmc9InRuczpCaW5kaW5nMjE1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjE2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjE2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIxNiIgbmFtZT0iSW5wdXQyMTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjE2IiBuYW1lPSJPdXRwdXQyMTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIxNiIgdHlwZT0idG5zOlBvcnRUeXBlMjE2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjE2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIxNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIxNiIgYmluZGluZz0idG5zOkJpbmRpbmcyMTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIxNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjE3IiBuYW1lPSJJbnB1dDIxNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMTciIG5hbWU9Ik91dHB1dDIxNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjE3IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjE3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIxNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjE3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIxNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIxOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMTgiIG5hbWU9IklucHV0MjE4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIxOCIgbmFtZT0iT3V0cHV0MjE4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMTgiIHR5cGU9InRuczpQb3J0VHlwZTIxOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjE4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMTgiIGJpbmRpbmc9InRuczpCaW5kaW5nMjE4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjE5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjE5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIxOSIgbmFtZT0iSW5wdXQyMTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjE5IiBuYW1lPSJPdXRwdXQyMTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIxOSIgdHlwZT0idG5zOlBvcnRUeXBlMjE5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjE5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIxOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIxOSIgYmluZGluZz0idG5zOkJpbmRpbmcyMTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjIwIiBuYW1lPSJJbnB1dDIyMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMjAiIG5hbWU9Ik91dHB1dDIyMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjIwIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjIwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIyMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjIwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIyMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIyMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMjEiIG5hbWU9IklucHV0MjIxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIyMSIgbmFtZT0iT3V0cHV0MjIxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMjEiIHR5cGU9InRuczpQb3J0VHlwZTIyMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjIxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMjEiIGJpbmRpbmc9InRuczpCaW5kaW5nMjIxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjIyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjIyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIyMiIgbmFtZT0iSW5wdXQyMjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjIyIiBuYW1lPSJPdXRwdXQyMjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIyMiIgdHlwZT0idG5zOlBvcnRUeXBlMjIyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjIyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIyMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIyMiIgYmluZGluZz0idG5zOkJpbmRpbmcyMjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjIzIiBuYW1lPSJJbnB1dDIyMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMjMiIG5hbWU9Ik91dHB1dDIyMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjIzIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjIzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIyMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjIzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIyMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIyNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMjQiIG5hbWU9IklucHV0MjI0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIyNCIgbmFtZT0iT3V0cHV0MjI0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMjQiIHR5cGU9InRuczpQb3J0VHlwZTIyNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjI0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMjQiIGJpbmRpbmc9InRuczpCaW5kaW5nMjI0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjI1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjI1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIyNSIgbmFtZT0iSW5wdXQyMjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjI1IiBuYW1lPSJPdXRwdXQyMjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIyNSIgdHlwZT0idG5zOlBvcnRUeXBlMjI1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjI1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIyNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIyNSIgYmluZGluZz0idG5zOkJpbmRpbmcyMjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjI2IiBuYW1lPSJJbnB1dDIyNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMjYiIG5hbWU9Ik91dHB1dDIyNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjI2IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjI2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIyNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjI2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIyNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIyNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMjciIG5hbWU9IklucHV0MjI3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIyNyIgbmFtZT0iT3V0cHV0MjI3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMjciIHR5cGU9InRuczpQb3J0VHlwZTIyNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjI3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMjciIGJpbmRpbmc9InRuczpCaW5kaW5nMjI3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjI4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjI4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIyOCIgbmFtZT0iSW5wdXQyMjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjI4IiBuYW1lPSJPdXRwdXQyMjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIyOCIgdHlwZT0idG5zOlBvcnRUeXBlMjI4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjI4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIyOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIyOCIgYmluZGluZz0idG5zOkJpbmRpbmcyMjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjI5IiBuYW1lPSJJbnB1dDIyOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMjkiIG5hbWU9Ik91dHB1dDIyOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjI5IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjI5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIyOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjI5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIyOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIzMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMzAiIG5hbWU9IklucHV0MjMwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIzMCIgbmFtZT0iT3V0cHV0MjMwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMzAiIHR5cGU9InRuczpQb3J0VHlwZTIzMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjMwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMzAiIGJpbmRpbmc9InRuczpCaW5kaW5nMjMwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjMxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjMxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIzMSIgbmFtZT0iSW5wdXQyMzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjMxIiBuYW1lPSJPdXRwdXQyMzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIzMSIgdHlwZT0idG5zOlBvcnRUeXBlMjMxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjMxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIzMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIzMSIgYmluZGluZz0idG5zOkJpbmRpbmcyMzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjMyIiBuYW1lPSJJbnB1dDIzMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMzIiIG5hbWU9Ik91dHB1dDIzMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjMyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjMyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIzMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjMyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIzMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIzMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMzMiIG5hbWU9IklucHV0MjMzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIzMyIgbmFtZT0iT3V0cHV0MjMzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMzMiIHR5cGU9InRuczpQb3J0VHlwZTIzMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjMzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMzMiIGJpbmRpbmc9InRuczpCaW5kaW5nMjMzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjM0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjM0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIzNCIgbmFtZT0iSW5wdXQyMzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjM0IiBuYW1lPSJPdXRwdXQyMzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIzNCIgdHlwZT0idG5zOlBvcnRUeXBlMjM0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjM0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIzNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIzNCIgYmluZGluZz0idG5zOkJpbmRpbmcyMzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjM1IiBuYW1lPSJJbnB1dDIzNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMzUiIG5hbWU9Ik91dHB1dDIzNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjM1IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjM1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIzNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjM1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIzNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIzNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMzYiIG5hbWU9IklucHV0MjM2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIzNiIgbmFtZT0iT3V0cHV0MjM2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMzYiIHR5cGU9InRuczpQb3J0VHlwZTIzNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjM2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMzYiIGJpbmRpbmc9InRuczpCaW5kaW5nMjM2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjM3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjM3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIzNyIgbmFtZT0iSW5wdXQyMzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjM3IiBuYW1lPSJPdXRwdXQyMzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIzNyIgdHlwZT0idG5zOlBvcnRUeXBlMjM3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjM3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIzNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIzNyIgYmluZGluZz0idG5zOkJpbmRpbmcyMzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjM4IiBuYW1lPSJJbnB1dDIzOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMzgiIG5hbWU9Ik91dHB1dDIzOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjM4IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjM4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIzOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjM4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIzOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIzOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMzkiIG5hbWU9IklucHV0MjM5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIzOSIgbmFtZT0iT3V0cHV0MjM5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMzkiIHR5cGU9InRuczpQb3J0VHlwZTIzOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjM5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMzkiIGJpbmRpbmc9InRuczpCaW5kaW5nMjM5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjQwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI0MCIgbmFtZT0iSW5wdXQyNDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjQwIiBuYW1lPSJPdXRwdXQyNDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI0MCIgdHlwZT0idG5zOlBvcnRUeXBlMjQwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI0MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI0MCIgYmluZGluZz0idG5zOkJpbmRpbmcyNDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjQxIiBuYW1lPSJJbnB1dDI0MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNDEiIG5hbWU9Ik91dHB1dDI0MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjQxIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjQxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI0MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjQxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI0MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI0MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNDIiIG5hbWU9IklucHV0MjQyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI0MiIgbmFtZT0iT3V0cHV0MjQyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNDIiIHR5cGU9InRuczpQb3J0VHlwZTI0MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjQyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNDIiIGJpbmRpbmc9InRuczpCaW5kaW5nMjQyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjQzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI0MyIgbmFtZT0iSW5wdXQyNDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjQzIiBuYW1lPSJPdXRwdXQyNDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI0MyIgdHlwZT0idG5zOlBvcnRUeXBlMjQzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI0MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI0MyIgYmluZGluZz0idG5zOkJpbmRpbmcyNDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjQ0IiBuYW1lPSJJbnB1dDI0NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNDQiIG5hbWU9Ik91dHB1dDI0NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjQ0IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjQ0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI0NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjQ0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI0NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI0NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNDUiIG5hbWU9IklucHV0MjQ1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI0NSIgbmFtZT0iT3V0cHV0MjQ1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNDUiIHR5cGU9InRuczpQb3J0VHlwZTI0NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjQ1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNDUiIGJpbmRpbmc9InRuczpCaW5kaW5nMjQ1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjQ2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQ2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI0NiIgbmFtZT0iSW5wdXQyNDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjQ2IiBuYW1lPSJPdXRwdXQyNDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI0NiIgdHlwZT0idG5zOlBvcnRUeXBlMjQ2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQ2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI0NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI0NiIgYmluZGluZz0idG5zOkJpbmRpbmcyNDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjQ3IiBuYW1lPSJJbnB1dDI0NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNDciIG5hbWU9Ik91dHB1dDI0NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjQ3IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjQ3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI0NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjQ3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI0NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI0OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNDgiIG5hbWU9IklucHV0MjQ4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI0OCIgbmFtZT0iT3V0cHV0MjQ4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNDgiIHR5cGU9InRuczpQb3J0VHlwZTI0OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjQ4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNDgiIGJpbmRpbmc9InRuczpCaW5kaW5nMjQ4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjQ5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQ5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI0OSIgbmFtZT0iSW5wdXQyNDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjQ5IiBuYW1lPSJPdXRwdXQyNDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI0OSIgdHlwZT0idG5zOlBvcnRUeXBlMjQ5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQ5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI0OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI0OSIgYmluZGluZz0idG5zOkJpbmRpbmcyNDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjUwIiBuYW1lPSJJbnB1dDI1MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNTAiIG5hbWU9Ik91dHB1dDI1MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjUwIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjUwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI1MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjUwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI1MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI1MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNTEiIG5hbWU9IklucHV0MjUxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI1MSIgbmFtZT0iT3V0cHV0MjUxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNTEiIHR5cGU9InRuczpQb3J0VHlwZTI1MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjUxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNTEiIGJpbmRpbmc9InRuczpCaW5kaW5nMjUxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjUyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjUyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI1MiIgbmFtZT0iSW5wdXQyNTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjUyIiBuYW1lPSJPdXRwdXQyNTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI1MiIgdHlwZT0idG5zOlBvcnRUeXBlMjUyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjUyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI1MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI1MiIgYmluZGluZz0idG5zOkJpbmRpbmcyNTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjUzIiBuYW1lPSJJbnB1dDI1MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNTMiIG5hbWU9Ik91dHB1dDI1MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjUzIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjUzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI1MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjUzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI1MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI1NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNTQiIG5hbWU9IklucHV0MjU0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI1NCIgbmFtZT0iT3V0cHV0MjU0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNTQiIHR5cGU9InRuczpQb3J0VHlwZTI1NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjU0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNTQiIGJpbmRpbmc9InRuczpCaW5kaW5nMjU0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjU1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjU1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI1NSIgbmFtZT0iSW5wdXQyNTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjU1IiBuYW1lPSJPdXRwdXQyNTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI1NSIgdHlwZT0idG5zOlBvcnRUeXBlMjU1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjU1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI1NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI1NSIgYmluZGluZz0idG5zOkJpbmRpbmcyNTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjU2IiBuYW1lPSJJbnB1dDI1NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNTYiIG5hbWU9Ik91dHB1dDI1NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjU2IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjU2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI1NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjU2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI1NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI1NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNTciIG5hbWU9IklucHV0MjU3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI1NyIgbmFtZT0iT3V0cHV0MjU3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNTciIHR5cGU9InRuczpQb3J0VHlwZTI1NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjU3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNTciIGJpbmRpbmc9InRuczpCaW5kaW5nMjU3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjU4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjU4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI1OCIgbmFtZT0iSW5wdXQyNTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjU4IiBuYW1lPSJPdXRwdXQyNTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI1OCIgdHlwZT0idG5zOlBvcnRUeXBlMjU4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjU4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI1OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI1OCIgYmluZGluZz0idG5zOkJpbmRpbmcyNTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjU5IiBuYW1lPSJJbnB1dDI1OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNTkiIG5hbWU9Ik91dHB1dDI1OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjU5IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjU5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI1OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjU5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI1OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI2MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNjAiIG5hbWU9IklucHV0MjYwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI2MCIgbmFtZT0iT3V0cHV0MjYwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNjAiIHR5cGU9InRuczpQb3J0VHlwZTI2MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjYwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNjAiIGJpbmRpbmc9InRuczpCaW5kaW5nMjYwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjYxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjYxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI2MSIgbmFtZT0iSW5wdXQyNjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjYxIiBuYW1lPSJPdXRwdXQyNjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI2MSIgdHlwZT0idG5zOlBvcnRUeXBlMjYxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjYxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI2MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI2MSIgYmluZGluZz0idG5zOkJpbmRpbmcyNjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjYyIiBuYW1lPSJJbnB1dDI2MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNjIiIG5hbWU9Ik91dHB1dDI2MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjYyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjYyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI2MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjYyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI2MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI2MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNjMiIG5hbWU9IklucHV0MjYzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI2MyIgbmFtZT0iT3V0cHV0MjYzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNjMiIHR5cGU9InRuczpQb3J0VHlwZTI2MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjYzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNjMiIGJpbmRpbmc9InRuczpCaW5kaW5nMjYzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjY0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjY0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI2NCIgbmFtZT0iSW5wdXQyNjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjY0IiBuYW1lPSJPdXRwdXQyNjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI2NCIgdHlwZT0idG5zOlBvcnRUeXBlMjY0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjY0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI2NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI2NCIgYmluZGluZz0idG5zOkJpbmRpbmcyNjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjY1IiBuYW1lPSJJbnB1dDI2NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNjUiIG5hbWU9Ik91dHB1dDI2NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjY1IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjY1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI2NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjY1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI2NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI2NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNjYiIG5hbWU9IklucHV0MjY2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI2NiIgbmFtZT0iT3V0cHV0MjY2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNjYiIHR5cGU9InRuczpQb3J0VHlwZTI2NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjY2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNjYiIGJpbmRpbmc9InRuczpCaW5kaW5nMjY2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjY3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjY3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI2NyIgbmFtZT0iSW5wdXQyNjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjY3IiBuYW1lPSJPdXRwdXQyNjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI2NyIgdHlwZT0idG5zOlBvcnRUeXBlMjY3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjY3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI2NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI2NyIgYmluZGluZz0idG5zOkJpbmRpbmcyNjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjY4IiBuYW1lPSJJbnB1dDI2OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNjgiIG5hbWU9Ik91dHB1dDI2OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjY4IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjY4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI2OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjY4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI2OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI2OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNjkiIG5hbWU9IklucHV0MjY5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI2OSIgbmFtZT0iT3V0cHV0MjY5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNjkiIHR5cGU9InRuczpQb3J0VHlwZTI2OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjY5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNjkiIGJpbmRpbmc9InRuczpCaW5kaW5nMjY5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjcwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjcwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI3MCIgbmFtZT0iSW5wdXQyNzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjcwIiBuYW1lPSJPdXRwdXQyNzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI3MCIgdHlwZT0idG5zOlBvcnRUeXBlMjcwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjcwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI3MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI3MCIgYmluZGluZz0idG5zOkJpbmRpbmcyNzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjcxIiBuYW1lPSJJbnB1dDI3MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNzEiIG5hbWU9Ik91dHB1dDI3MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjcxIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjcxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI3MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjcxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI3MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI3MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNzIiIG5hbWU9IklucHV0MjcyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI3MiIgbmFtZT0iT3V0cHV0MjcyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNzIiIHR5cGU9InRuczpQb3J0VHlwZTI3MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjcyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNzIiIGJpbmRpbmc9InRuczpCaW5kaW5nMjcyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjczIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjczIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI3MyIgbmFtZT0iSW5wdXQyNzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjczIiBuYW1lPSJPdXRwdXQyNzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI3MyIgdHlwZT0idG5zOlBvcnRUeXBlMjczIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjczIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI3MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI3MyIgYmluZGluZz0idG5zOkJpbmRpbmcyNzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjc0IiBuYW1lPSJJbnB1dDI3NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNzQiIG5hbWU9Ik91dHB1dDI3NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjc0IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjc0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI3NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjc0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI3NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI3NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNzUiIG5hbWU9IklucHV0Mjc1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI3NSIgbmFtZT0iT3V0cHV0Mjc1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNzUiIHR5cGU9InRuczpQb3J0VHlwZTI3NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjc1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNzUiIGJpbmRpbmc9InRuczpCaW5kaW5nMjc1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjc2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjc2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI3NiIgbmFtZT0iSW5wdXQyNzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjc2IiBuYW1lPSJPdXRwdXQyNzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI3NiIgdHlwZT0idG5zOlBvcnRUeXBlMjc2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjc2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI3NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI3NiIgYmluZGluZz0idG5zOkJpbmRpbmcyNzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjc3IiBuYW1lPSJJbnB1dDI3NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNzciIG5hbWU9Ik91dHB1dDI3NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjc3IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjc3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI3NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjc3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI3NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI3OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNzgiIG5hbWU9IklucHV0Mjc4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI3OCIgbmFtZT0iT3V0cHV0Mjc4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNzgiIHR5cGU9InRuczpQb3J0VHlwZTI3OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjc4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNzgiIGJpbmRpbmc9InRuczpCaW5kaW5nMjc4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjc5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjc5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI3OSIgbmFtZT0iSW5wdXQyNzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjc5IiBuYW1lPSJPdXRwdXQyNzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI3OSIgdHlwZT0idG5zOlBvcnRUeXBlMjc5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjc5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI3OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI3OSIgYmluZGluZz0idG5zOkJpbmRpbmcyNzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyODAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjgwIiBuYW1lPSJJbnB1dDI4MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyODAiIG5hbWU9Ik91dHB1dDI4MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjgwIiB0eXBlPSJ0bnM6UG9ydFR5cGUyODAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjgwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI4MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjgwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI4MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI4MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyODEiIG5hbWU9IklucHV0MjgxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI4MSIgbmFtZT0iT3V0cHV0MjgxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyODEiIHR5cGU9InRuczpQb3J0VHlwZTI4MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yODEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjgxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyODEiIGJpbmRpbmc9InRuczpCaW5kaW5nMjgxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjgyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjgyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI4MiIgbmFtZT0iSW5wdXQyODIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjgyIiBuYW1lPSJPdXRwdXQyODIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI4MiIgdHlwZT0idG5zOlBvcnRUeXBlMjgyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjgyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI4MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyODIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI4MiIgYmluZGluZz0idG5zOkJpbmRpbmcyODIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyODMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjgzIiBuYW1lPSJJbnB1dDI4MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyODMiIG5hbWU9Ik91dHB1dDI4MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjgzIiB0eXBlPSJ0bnM6UG9ydFR5cGUyODMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjgzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI4MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjgzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI4MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI4NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyODQiIG5hbWU9IklucHV0Mjg0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI4NCIgbmFtZT0iT3V0cHV0Mjg0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyODQiIHR5cGU9InRuczpQb3J0VHlwZTI4NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yODQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjg0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyODQiIGJpbmRpbmc9InRuczpCaW5kaW5nMjg0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjg1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjg1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI4NSIgbmFtZT0iSW5wdXQyODUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjg1IiBuYW1lPSJPdXRwdXQyODUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI4NSIgdHlwZT0idG5zOlBvcnRUeXBlMjg1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjg1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI4NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyODUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI4NSIgYmluZGluZz0idG5zOkJpbmRpbmcyODUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyODYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjg2IiBuYW1lPSJJbnB1dDI4NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyODYiIG5hbWU9Ik91dHB1dDI4NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjg2IiB0eXBlPSJ0bnM6UG9ydFR5cGUyODYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjg2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI4NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjg2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI4NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI4NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyODciIG5hbWU9IklucHV0Mjg3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI4NyIgbmFtZT0iT3V0cHV0Mjg3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyODciIHR5cGU9InRuczpQb3J0VHlwZTI4NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yODciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjg3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyODciIGJpbmRpbmc9InRuczpCaW5kaW5nMjg3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjg4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjg4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI4OCIgbmFtZT0iSW5wdXQyODgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjg4IiBuYW1lPSJPdXRwdXQyODgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI4OCIgdHlwZT0idG5zOlBvcnRUeXBlMjg4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjg4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI4OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyODgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI4OCIgYmluZGluZz0idG5zOkJpbmRpbmcyODgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyODkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjg5IiBuYW1lPSJJbnB1dDI4OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyODkiIG5hbWU9Ik91dHB1dDI4OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjg5IiB0eXBlPSJ0bnM6UG9ydFR5cGUyODkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjg5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI4OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjg5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI4OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyOTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyOTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI5MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOTAiIG5hbWU9IklucHV0MjkwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI5MCIgbmFtZT0iT3V0cHV0MjkwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyOTAiIHR5cGU9InRuczpQb3J0VHlwZTI5MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yOTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjkwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOTAiIGJpbmRpbmc9InRuczpCaW5kaW5nMjkwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyOTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjkxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjkxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI5MSIgbmFtZT0iSW5wdXQyOTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjkxIiBuYW1lPSJPdXRwdXQyOTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI5MSIgdHlwZT0idG5zOlBvcnRUeXBlMjkxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjkxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI5MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyOTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI5MSIgYmluZGluZz0idG5zOkJpbmRpbmcyOTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyOTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjkyIiBuYW1lPSJJbnB1dDI5MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOTIiIG5hbWU9Ik91dHB1dDI5MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjkyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyOTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjkyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI5MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjkyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI5MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyOTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyOTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI5MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOTMiIG5hbWU9IklucHV0MjkzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI5MyIgbmFtZT0iT3V0cHV0MjkzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyOTMiIHR5cGU9InRuczpQb3J0VHlwZTI5MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yOTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjkzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOTMiIGJpbmRpbmc9InRuczpCaW5kaW5nMjkzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyOTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjk0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjk0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI5NCIgbmFtZT0iSW5wdXQyOTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjk0IiBuYW1lPSJPdXRwdXQyOTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI5NCIgdHlwZT0idG5zOlBvcnRUeXBlMjk0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjk0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI5NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyOTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI5NCIgYmluZGluZz0idG5zOkJpbmRpbmcyOTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyOTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjk1IiBuYW1lPSJJbnB1dDI5NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOTUiIG5hbWU9Ik91dHB1dDI5NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjk1IiB0eXBlPSJ0bnM6UG9ydFR5cGUyOTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjk1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI5NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjk1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI5NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyOTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyOTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI5NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOTYiIG5hbWU9IklucHV0Mjk2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI5NiIgbmFtZT0iT3V0cHV0Mjk2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyOTYiIHR5cGU9InRuczpQb3J0VHlwZTI5NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yOTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjk2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOTYiIGJpbmRpbmc9InRuczpCaW5kaW5nMjk2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyOTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjk3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjk3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI5NyIgbmFtZT0iSW5wdXQyOTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjk3IiBuYW1lPSJPdXRwdXQyOTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI5NyIgdHlwZT0idG5zOlBvcnRUeXBlMjk3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjk3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI5NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyOTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI5NyIgYmluZGluZz0idG5zOkJpbmRpbmcyOTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyOTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjk4IiBuYW1lPSJJbnB1dDI5OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOTgiIG5hbWU9Ik91dHB1dDI5OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjk4IiB0eXBlPSJ0bnM6UG9ydFR5cGUyOTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjk4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI5OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjk4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI5OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyOTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyOTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI5OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOTkiIG5hbWU9IklucHV0Mjk5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI5OSIgbmFtZT0iT3V0cHV0Mjk5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyOTkiIHR5cGU9InRuczpQb3J0VHlwZTI5OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yOTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjk5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOTkiIGJpbmRpbmc9InRuczpCaW5kaW5nMjk5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMwMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzAwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzAwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMwMCIgbmFtZT0iSW5wdXQzMDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzAwIiBuYW1lPSJPdXRwdXQzMDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMwMCIgdHlwZT0idG5zOlBvcnRUeXBlMzAwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzAwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMwMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMwMCIgYmluZGluZz0idG5zOkJpbmRpbmczMDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzAxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzAxIiBuYW1lPSJJbnB1dDMwMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMDEiIG5hbWU9Ik91dHB1dDMwMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzAxIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzAxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMwMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzAxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMwMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMwMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMDIiIG5hbWU9IklucHV0MzAyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMwMiIgbmFtZT0iT3V0cHV0MzAyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMDIiIHR5cGU9InRuczpQb3J0VHlwZTMwMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzAyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMDIiIGJpbmRpbmc9InRuczpCaW5kaW5nMzAyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMwMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzAzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzAzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMwMyIgbmFtZT0iSW5wdXQzMDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzAzIiBuYW1lPSJPdXRwdXQzMDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMwMyIgdHlwZT0idG5zOlBvcnRUeXBlMzAzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzAzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMwMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMwMyIgYmluZGluZz0idG5zOkJpbmRpbmczMDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzA0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzA0IiBuYW1lPSJJbnB1dDMwNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMDQiIG5hbWU9Ik91dHB1dDMwNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzA0IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzA0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMwNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzA0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMwNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMwNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMDUiIG5hbWU9IklucHV0MzA1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMwNSIgbmFtZT0iT3V0cHV0MzA1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMDUiIHR5cGU9InRuczpQb3J0VHlwZTMwNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzA1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMDUiIGJpbmRpbmc9InRuczpCaW5kaW5nMzA1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMwNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzA2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzA2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMwNiIgbmFtZT0iSW5wdXQzMDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzA2IiBuYW1lPSJPdXRwdXQzMDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMwNiIgdHlwZT0idG5zOlBvcnRUeXBlMzA2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzA2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMwNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMwNiIgYmluZGluZz0idG5zOkJpbmRpbmczMDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzA3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzA3IiBuYW1lPSJJbnB1dDMwNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMDciIG5hbWU9Ik91dHB1dDMwNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzA3IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzA3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMwNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzA3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMwNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMwOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMDgiIG5hbWU9IklucHV0MzA4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMwOCIgbmFtZT0iT3V0cHV0MzA4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMDgiIHR5cGU9InRuczpQb3J0VHlwZTMwOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzA4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMDgiIGJpbmRpbmc9InRuczpCaW5kaW5nMzA4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMwOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzA5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzA5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMwOSIgbmFtZT0iSW5wdXQzMDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzA5IiBuYW1lPSJPdXRwdXQzMDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMwOSIgdHlwZT0idG5zOlBvcnRUeXBlMzA5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzA5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMwOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMwOSIgYmluZGluZz0idG5zOkJpbmRpbmczMDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzEwIiBuYW1lPSJJbnB1dDMxMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMTAiIG5hbWU9Ik91dHB1dDMxMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzEwIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzEwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMxMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzEwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMxMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMxMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMTEiIG5hbWU9IklucHV0MzExIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMxMSIgbmFtZT0iT3V0cHV0MzExIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMTEiIHR5cGU9InRuczpQb3J0VHlwZTMxMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzExIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMTEiIGJpbmRpbmc9InRuczpCaW5kaW5nMzExIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMxMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzEyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzEyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMxMiIgbmFtZT0iSW5wdXQzMTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzEyIiBuYW1lPSJPdXRwdXQzMTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMxMiIgdHlwZT0idG5zOlBvcnRUeXBlMzEyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzEyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMxMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMxMiIgYmluZGluZz0idG5zOkJpbmRpbmczMTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzEzIiBuYW1lPSJJbnB1dDMxMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMTMiIG5hbWU9Ik91dHB1dDMxMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzEzIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzEzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMxMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzEzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMxMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMxNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMTQiIG5hbWU9IklucHV0MzE0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMxNCIgbmFtZT0iT3V0cHV0MzE0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMTQiIHR5cGU9InRuczpQb3J0VHlwZTMxNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzE0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMTQiIGJpbmRpbmc9InRuczpCaW5kaW5nMzE0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMxNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzE1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzE1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMxNSIgbmFtZT0iSW5wdXQzMTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzE1IiBuYW1lPSJPdXRwdXQzMTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMxNSIgdHlwZT0idG5zOlBvcnRUeXBlMzE1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzE1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMxNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMxNSIgYmluZGluZz0idG5zOkJpbmRpbmczMTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzE2IiBuYW1lPSJJbnB1dDMxNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMTYiIG5hbWU9Ik91dHB1dDMxNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzE2IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzE2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMxNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzE2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMxNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMxNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMTciIG5hbWU9IklucHV0MzE3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMxNyIgbmFtZT0iT3V0cHV0MzE3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMTciIHR5cGU9InRuczpQb3J0VHlwZTMxNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzE3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMTciIGJpbmRpbmc9InRuczpCaW5kaW5nMzE3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMxOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzE4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzE4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMxOCIgbmFtZT0iSW5wdXQzMTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzE4IiBuYW1lPSJPdXRwdXQzMTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMxOCIgdHlwZT0idG5zOlBvcnRUeXBlMzE4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzE4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMxOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMxOCIgYmluZGluZz0idG5zOkJpbmRpbmczMTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzE5IiBuYW1lPSJJbnB1dDMxOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMTkiIG5hbWU9Ik91dHB1dDMxOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzE5IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzE5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMxOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzE5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMxOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMyMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMjAiIG5hbWU9IklucHV0MzIwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMyMCIgbmFtZT0iT3V0cHV0MzIwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMjAiIHR5cGU9InRuczpQb3J0VHlwZTMyMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzIwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMjAiIGJpbmRpbmc9InRuczpCaW5kaW5nMzIwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzIxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzIxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMyMSIgbmFtZT0iSW5wdXQzMjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzIxIiBuYW1lPSJPdXRwdXQzMjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMyMSIgdHlwZT0idG5zOlBvcnRUeXBlMzIxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzIxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMyMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMyMSIgYmluZGluZz0idG5zOkJpbmRpbmczMjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzIyIiBuYW1lPSJJbnB1dDMyMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMjIiIG5hbWU9Ik91dHB1dDMyMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzIyIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzIyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMyMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzIyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMyMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMyMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMjMiIG5hbWU9IklucHV0MzIzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMyMyIgbmFtZT0iT3V0cHV0MzIzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMjMiIHR5cGU9InRuczpQb3J0VHlwZTMyMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzIzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMjMiIGJpbmRpbmc9InRuczpCaW5kaW5nMzIzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzI0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzI0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMyNCIgbmFtZT0iSW5wdXQzMjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzI0IiBuYW1lPSJPdXRwdXQzMjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMyNCIgdHlwZT0idG5zOlBvcnRUeXBlMzI0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzI0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMyNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMyNCIgYmluZGluZz0idG5zOkJpbmRpbmczMjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzI1IiBuYW1lPSJJbnB1dDMyNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMjUiIG5hbWU9Ik91dHB1dDMyNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzI1IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzI1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMyNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzI1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMyNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMyNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMjYiIG5hbWU9IklucHV0MzI2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMyNiIgbmFtZT0iT3V0cHV0MzI2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMjYiIHR5cGU9InRuczpQb3J0VHlwZTMyNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzI2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMjYiIGJpbmRpbmc9InRuczpCaW5kaW5nMzI2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzI3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzI3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMyNyIgbmFtZT0iSW5wdXQzMjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzI3IiBuYW1lPSJPdXRwdXQzMjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMyNyIgdHlwZT0idG5zOlBvcnRUeXBlMzI3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzI3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMyNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMyNyIgYmluZGluZz0idG5zOkJpbmRpbmczMjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzI4IiBuYW1lPSJJbnB1dDMyOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMjgiIG5hbWU9Ik91dHB1dDMyOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzI4IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzI4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMyOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzI4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMyOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMyOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMjkiIG5hbWU9IklucHV0MzI5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMyOSIgbmFtZT0iT3V0cHV0MzI5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMjkiIHR5cGU9InRuczpQb3J0VHlwZTMyOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzI5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMjkiIGJpbmRpbmc9InRuczpCaW5kaW5nMzI5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzMwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzMwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMzMCIgbmFtZT0iSW5wdXQzMzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzMwIiBuYW1lPSJPdXRwdXQzMzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMzMCIgdHlwZT0idG5zOlBvcnRUeXBlMzMwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzMwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMzMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMzMCIgYmluZGluZz0idG5zOkJpbmRpbmczMzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzMxIiBuYW1lPSJJbnB1dDMzMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMzEiIG5hbWU9Ik91dHB1dDMzMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzMxIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzMxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMzMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzMxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMzMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMzMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMzIiIG5hbWU9IklucHV0MzMyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMzMiIgbmFtZT0iT3V0cHV0MzMyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMzIiIHR5cGU9InRuczpQb3J0VHlwZTMzMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzMyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMzIiIGJpbmRpbmc9InRuczpCaW5kaW5nMzMyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzMzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzMzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMzMyIgbmFtZT0iSW5wdXQzMzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzMzIiBuYW1lPSJPdXRwdXQzMzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMzMyIgdHlwZT0idG5zOlBvcnRUeXBlMzMzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzMzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMzMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMzMyIgYmluZGluZz0idG5zOkJpbmRpbmczMzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzM0IiBuYW1lPSJJbnB1dDMzNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMzQiIG5hbWU9Ik91dHB1dDMzNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzM0IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzM0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMzNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzM0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMzNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMzNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMzUiIG5hbWU9IklucHV0MzM1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMzNSIgbmFtZT0iT3V0cHV0MzM1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMzUiIHR5cGU9InRuczpQb3J0VHlwZTMzNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzM1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMzUiIGJpbmRpbmc9InRuczpCaW5kaW5nMzM1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzM2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzM2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMzNiIgbmFtZT0iSW5wdXQzMzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzM2IiBuYW1lPSJPdXRwdXQzMzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMzNiIgdHlwZT0idG5zOlBvcnRUeXBlMzM2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzM2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMzNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMzNiIgYmluZGluZz0idG5zOkJpbmRpbmczMzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzM3IiBuYW1lPSJJbnB1dDMzNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMzciIG5hbWU9Ik91dHB1dDMzNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzM3IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzM3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMzNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzM3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMzNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMzOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMzgiIG5hbWU9IklucHV0MzM4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMzOCIgbmFtZT0iT3V0cHV0MzM4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMzgiIHR5cGU9InRuczpQb3J0VHlwZTMzOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzM4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMzgiIGJpbmRpbmc9InRuczpCaW5kaW5nMzM4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzM5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzM5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMzOSIgbmFtZT0iSW5wdXQzMzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzM5IiBuYW1lPSJPdXRwdXQzMzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMzOSIgdHlwZT0idG5zOlBvcnRUeXBlMzM5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzM5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMzOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMzOSIgYmluZGluZz0idG5zOkJpbmRpbmczMzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzQwIiBuYW1lPSJJbnB1dDM0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNDAiIG5hbWU9Ik91dHB1dDM0MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzQwIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzQwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM0MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzQwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM0MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM0MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNDEiIG5hbWU9IklucHV0MzQxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM0MSIgbmFtZT0iT3V0cHV0MzQxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNDEiIHR5cGU9InRuczpQb3J0VHlwZTM0MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzQxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNDEiIGJpbmRpbmc9InRuczpCaW5kaW5nMzQxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzQyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM0MiIgbmFtZT0iSW5wdXQzNDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzQyIiBuYW1lPSJPdXRwdXQzNDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM0MiIgdHlwZT0idG5zOlBvcnRUeXBlMzQyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM0MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM0MiIgYmluZGluZz0idG5zOkJpbmRpbmczNDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzQzIiBuYW1lPSJJbnB1dDM0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNDMiIG5hbWU9Ik91dHB1dDM0MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzQzIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzQzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM0MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzQzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM0MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM0NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNDQiIG5hbWU9IklucHV0MzQ0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM0NCIgbmFtZT0iT3V0cHV0MzQ0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNDQiIHR5cGU9InRuczpQb3J0VHlwZTM0NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzQ0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNDQiIGJpbmRpbmc9InRuczpCaW5kaW5nMzQ0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzQ1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQ1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM0NSIgbmFtZT0iSW5wdXQzNDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzQ1IiBuYW1lPSJPdXRwdXQzNDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM0NSIgdHlwZT0idG5zOlBvcnRUeXBlMzQ1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQ1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM0NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM0NSIgYmluZGluZz0idG5zOkJpbmRpbmczNDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzQ2IiBuYW1lPSJJbnB1dDM0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNDYiIG5hbWU9Ik91dHB1dDM0NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzQ2IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzQ2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM0NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzQ2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM0NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM0NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNDciIG5hbWU9IklucHV0MzQ3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM0NyIgbmFtZT0iT3V0cHV0MzQ3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNDciIHR5cGU9InRuczpQb3J0VHlwZTM0NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzQ3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNDciIGJpbmRpbmc9InRuczpCaW5kaW5nMzQ3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzQ4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQ4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM0OCIgbmFtZT0iSW5wdXQzNDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzQ4IiBuYW1lPSJPdXRwdXQzNDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM0OCIgdHlwZT0idG5zOlBvcnRUeXBlMzQ4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQ4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM0OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM0OCIgYmluZGluZz0idG5zOkJpbmRpbmczNDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzQ5IiBuYW1lPSJJbnB1dDM0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNDkiIG5hbWU9Ik91dHB1dDM0OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzQ5IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzQ5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM0OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzQ5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM0OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM1MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNTAiIG5hbWU9IklucHV0MzUwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM1MCIgbmFtZT0iT3V0cHV0MzUwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNTAiIHR5cGU9InRuczpQb3J0VHlwZTM1MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzUwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNTAiIGJpbmRpbmc9InRuczpCaW5kaW5nMzUwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzUxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzUxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM1MSIgbmFtZT0iSW5wdXQzNTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzUxIiBuYW1lPSJPdXRwdXQzNTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM1MSIgdHlwZT0idG5zOlBvcnRUeXBlMzUxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzUxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM1MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM1MSIgYmluZGluZz0idG5zOkJpbmRpbmczNTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzUyIiBuYW1lPSJJbnB1dDM1MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNTIiIG5hbWU9Ik91dHB1dDM1MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzUyIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzUyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM1MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzUyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM1MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM1MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNTMiIG5hbWU9IklucHV0MzUzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM1MyIgbmFtZT0iT3V0cHV0MzUzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNTMiIHR5cGU9InRuczpQb3J0VHlwZTM1MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzUzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNTMiIGJpbmRpbmc9InRuczpCaW5kaW5nMzUzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzU0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzU0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM1NCIgbmFtZT0iSW5wdXQzNTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzU0IiBuYW1lPSJPdXRwdXQzNTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM1NCIgdHlwZT0idG5zOlBvcnRUeXBlMzU0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzU0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM1NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM1NCIgYmluZGluZz0idG5zOkJpbmRpbmczNTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzU1IiBuYW1lPSJJbnB1dDM1NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNTUiIG5hbWU9Ik91dHB1dDM1NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzU1IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzU1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM1NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzU1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM1NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM1NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNTYiIG5hbWU9IklucHV0MzU2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM1NiIgbmFtZT0iT3V0cHV0MzU2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNTYiIHR5cGU9InRuczpQb3J0VHlwZTM1NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzU2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNTYiIGJpbmRpbmc9InRuczpCaW5kaW5nMzU2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzU3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzU3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM1NyIgbmFtZT0iSW5wdXQzNTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzU3IiBuYW1lPSJPdXRwdXQzNTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM1NyIgdHlwZT0idG5zOlBvcnRUeXBlMzU3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzU3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM1NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM1NyIgYmluZGluZz0idG5zOkJpbmRpbmczNTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzU4IiBuYW1lPSJJbnB1dDM1OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNTgiIG5hbWU9Ik91dHB1dDM1OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzU4IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzU4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM1OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzU4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM1OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM1OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNTkiIG5hbWU9IklucHV0MzU5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM1OSIgbmFtZT0iT3V0cHV0MzU5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNTkiIHR5cGU9InRuczpQb3J0VHlwZTM1OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzU5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNTkiIGJpbmRpbmc9InRuczpCaW5kaW5nMzU5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzYwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzYwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM2MCIgbmFtZT0iSW5wdXQzNjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzYwIiBuYW1lPSJPdXRwdXQzNjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM2MCIgdHlwZT0idG5zOlBvcnRUeXBlMzYwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzYwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM2MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM2MCIgYmluZGluZz0idG5zOkJpbmRpbmczNjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzYxIiBuYW1lPSJJbnB1dDM2MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNjEiIG5hbWU9Ik91dHB1dDM2MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzYxIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzYxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM2MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzYxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM2MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM2MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNjIiIG5hbWU9IklucHV0MzYyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM2MiIgbmFtZT0iT3V0cHV0MzYyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNjIiIHR5cGU9InRuczpQb3J0VHlwZTM2MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzYyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNjIiIGJpbmRpbmc9InRuczpCaW5kaW5nMzYyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzYzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzYzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM2MyIgbmFtZT0iSW5wdXQzNjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzYzIiBuYW1lPSJPdXRwdXQzNjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM2MyIgdHlwZT0idG5zOlBvcnRUeXBlMzYzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzYzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM2MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM2MyIgYmluZGluZz0idG5zOkJpbmRpbmczNjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzY0IiBuYW1lPSJJbnB1dDM2NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNjQiIG5hbWU9Ik91dHB1dDM2NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzY0IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzY0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM2NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzY0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM2NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM2NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNjUiIG5hbWU9IklucHV0MzY1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM2NSIgbmFtZT0iT3V0cHV0MzY1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNjUiIHR5cGU9InRuczpQb3J0VHlwZTM2NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzY1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNjUiIGJpbmRpbmc9InRuczpCaW5kaW5nMzY1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzY2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzY2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM2NiIgbmFtZT0iSW5wdXQzNjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzY2IiBuYW1lPSJPdXRwdXQzNjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM2NiIgdHlwZT0idG5zOlBvcnRUeXBlMzY2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzY2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM2NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM2NiIgYmluZGluZz0idG5zOkJpbmRpbmczNjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzY3IiBuYW1lPSJJbnB1dDM2NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNjciIG5hbWU9Ik91dHB1dDM2NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzY3IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzY3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM2NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzY3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM2NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM2OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNjgiIG5hbWU9IklucHV0MzY4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM2OCIgbmFtZT0iT3V0cHV0MzY4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNjgiIHR5cGU9InRuczpQb3J0VHlwZTM2OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzY4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNjgiIGJpbmRpbmc9InRuczpCaW5kaW5nMzY4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzY5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzY5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM2OSIgbmFtZT0iSW5wdXQzNjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzY5IiBuYW1lPSJPdXRwdXQzNjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM2OSIgdHlwZT0idG5zOlBvcnRUeXBlMzY5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzY5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM2OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM2OSIgYmluZGluZz0idG5zOkJpbmRpbmczNjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzcwIiBuYW1lPSJJbnB1dDM3MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNzAiIG5hbWU9Ik91dHB1dDM3MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzcwIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzcwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM3MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzcwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM3MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM3MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNzEiIG5hbWU9IklucHV0MzcxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM3MSIgbmFtZT0iT3V0cHV0MzcxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNzEiIHR5cGU9InRuczpQb3J0VHlwZTM3MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzcxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNzEiIGJpbmRpbmc9InRuczpCaW5kaW5nMzcxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzcyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzcyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM3MiIgbmFtZT0iSW5wdXQzNzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzcyIiBuYW1lPSJPdXRwdXQzNzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM3MiIgdHlwZT0idG5zOlBvcnRUeXBlMzcyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzcyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM3MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM3MiIgYmluZGluZz0idG5zOkJpbmRpbmczNzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzczIiBuYW1lPSJJbnB1dDM3MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNzMiIG5hbWU9Ik91dHB1dDM3MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzczIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzczIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM3MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzczIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM3MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM3NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNzQiIG5hbWU9IklucHV0Mzc0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM3NCIgbmFtZT0iT3V0cHV0Mzc0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNzQiIHR5cGU9InRuczpQb3J0VHlwZTM3NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzc0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNzQiIGJpbmRpbmc9InRuczpCaW5kaW5nMzc0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzc1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzc1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM3NSIgbmFtZT0iSW5wdXQzNzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzc1IiBuYW1lPSJPdXRwdXQzNzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM3NSIgdHlwZT0idG5zOlBvcnRUeXBlMzc1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzc1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM3NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM3NSIgYmluZGluZz0idG5zOkJpbmRpbmczNzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzc2IiBuYW1lPSJJbnB1dDM3NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNzYiIG5hbWU9Ik91dHB1dDM3NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzc2IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzc2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM3NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzc2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM3NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM3NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNzciIG5hbWU9IklucHV0Mzc3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM3NyIgbmFtZT0iT3V0cHV0Mzc3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNzciIHR5cGU9InRuczpQb3J0VHlwZTM3NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzc3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNzciIGJpbmRpbmc9InRuczpCaW5kaW5nMzc3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzc4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzc4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM3OCIgbmFtZT0iSW5wdXQzNzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzc4IiBuYW1lPSJPdXRwdXQzNzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM3OCIgdHlwZT0idG5zOlBvcnRUeXBlMzc4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzc4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM3OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM3OCIgYmluZGluZz0idG5zOkJpbmRpbmczNzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzc5IiBuYW1lPSJJbnB1dDM3OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNzkiIG5hbWU9Ik91dHB1dDM3OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzc5IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzc5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM3OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzc5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM3OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM4MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzODAiIG5hbWU9IklucHV0MzgwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM4MCIgbmFtZT0iT3V0cHV0MzgwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczODAiIHR5cGU9InRuczpQb3J0VHlwZTM4MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zODAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzgwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzODAiIGJpbmRpbmc9InRuczpCaW5kaW5nMzgwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzgxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzgxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM4MSIgbmFtZT0iSW5wdXQzODEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzgxIiBuYW1lPSJPdXRwdXQzODEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM4MSIgdHlwZT0idG5zOlBvcnRUeXBlMzgxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzgxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM4MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzODEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM4MSIgYmluZGluZz0idG5zOkJpbmRpbmczODEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzODIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzgyIiBuYW1lPSJJbnB1dDM4MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzODIiIG5hbWU9Ik91dHB1dDM4MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzgyIiB0eXBlPSJ0bnM6UG9ydFR5cGUzODIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzgyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM4MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzgyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM4MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM4MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzODMiIG5hbWU9IklucHV0MzgzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM4MyIgbmFtZT0iT3V0cHV0MzgzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczODMiIHR5cGU9InRuczpQb3J0VHlwZTM4MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zODMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzgzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzODMiIGJpbmRpbmc9InRuczpCaW5kaW5nMzgzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzg0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzg0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM4NCIgbmFtZT0iSW5wdXQzODQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzg0IiBuYW1lPSJPdXRwdXQzODQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM4NCIgdHlwZT0idG5zOlBvcnRUeXBlMzg0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzg0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM4NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzODQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM4NCIgYmluZGluZz0idG5zOkJpbmRpbmczODQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzODUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzg1IiBuYW1lPSJJbnB1dDM4NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzODUiIG5hbWU9Ik91dHB1dDM4NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzg1IiB0eXBlPSJ0bnM6UG9ydFR5cGUzODUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzg1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM4NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzg1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM4NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM4NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzODYiIG5hbWU9IklucHV0Mzg2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM4NiIgbmFtZT0iT3V0cHV0Mzg2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczODYiIHR5cGU9InRuczpQb3J0VHlwZTM4NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zODYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzg2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzODYiIGJpbmRpbmc9InRuczpCaW5kaW5nMzg2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzg3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzg3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM4NyIgbmFtZT0iSW5wdXQzODciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzg3IiBuYW1lPSJPdXRwdXQzODciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM4NyIgdHlwZT0idG5zOlBvcnRUeXBlMzg3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzg3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM4NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzODciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM4NyIgYmluZGluZz0idG5zOkJpbmRpbmczODciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzODgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzg4IiBuYW1lPSJJbnB1dDM4OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzODgiIG5hbWU9Ik91dHB1dDM4OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzg4IiB0eXBlPSJ0bnM6UG9ydFR5cGUzODgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzg4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM4OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzg4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM4OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM4OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzODkiIG5hbWU9IklucHV0Mzg5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM4OSIgbmFtZT0iT3V0cHV0Mzg5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczODkiIHR5cGU9InRuczpQb3J0VHlwZTM4OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zODkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzg5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzODkiIGJpbmRpbmc9InRuczpCaW5kaW5nMzg5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzOTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzkwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzkwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM5MCIgbmFtZT0iSW5wdXQzOTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzkwIiBuYW1lPSJPdXRwdXQzOTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM5MCIgdHlwZT0idG5zOlBvcnRUeXBlMzkwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzkwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM5MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzOTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM5MCIgYmluZGluZz0idG5zOkJpbmRpbmczOTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzOTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzkxIiBuYW1lPSJJbnB1dDM5MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOTEiIG5hbWU9Ik91dHB1dDM5MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzkxIiB0eXBlPSJ0bnM6UG9ydFR5cGUzOTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzkxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM5MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzkxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM5MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzOTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzOTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM5MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOTIiIG5hbWU9IklucHV0MzkyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM5MiIgbmFtZT0iT3V0cHV0MzkyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczOTIiIHR5cGU9InRuczpQb3J0VHlwZTM5MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zOTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzkyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOTIiIGJpbmRpbmc9InRuczpCaW5kaW5nMzkyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzOTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzkzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzkzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM5MyIgbmFtZT0iSW5wdXQzOTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzkzIiBuYW1lPSJPdXRwdXQzOTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM5MyIgdHlwZT0idG5zOlBvcnRUeXBlMzkzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzkzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM5MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzOTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM5MyIgYmluZGluZz0idG5zOkJpbmRpbmczOTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzOTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzk0IiBuYW1lPSJJbnB1dDM5NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOTQiIG5hbWU9Ik91dHB1dDM5NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzk0IiB0eXBlPSJ0bnM6UG9ydFR5cGUzOTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzk0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM5NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzk0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM5NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzOTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzOTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM5NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOTUiIG5hbWU9IklucHV0Mzk1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM5NSIgbmFtZT0iT3V0cHV0Mzk1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczOTUiIHR5cGU9InRuczpQb3J0VHlwZTM5NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zOTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzk1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOTUiIGJpbmRpbmc9InRuczpCaW5kaW5nMzk1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzOTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzk2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzk2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM5NiIgbmFtZT0iSW5wdXQzOTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzk2IiBuYW1lPSJPdXRwdXQzOTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM5NiIgdHlwZT0idG5zOlBvcnRUeXBlMzk2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzk2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM5NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzOTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM5NiIgYmluZGluZz0idG5zOkJpbmRpbmczOTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzOTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzk3IiBuYW1lPSJJbnB1dDM5NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOTciIG5hbWU9Ik91dHB1dDM5NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzk3IiB0eXBlPSJ0bnM6UG9ydFR5cGUzOTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzk3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM5NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzk3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM5NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzOTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzOTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM5OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOTgiIG5hbWU9IklucHV0Mzk4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM5OCIgbmFtZT0iT3V0cHV0Mzk4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczOTgiIHR5cGU9InRuczpQb3J0VHlwZTM5OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zOTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzk4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOTgiIGJpbmRpbmc9InRuczpCaW5kaW5nMzk4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzOTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzk5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzk5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM5OSIgbmFtZT0iSW5wdXQzOTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzk5IiBuYW1lPSJPdXRwdXQzOTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM5OSIgdHlwZT0idG5zOlBvcnRUeXBlMzk5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzk5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM5OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzOTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM5OSIgYmluZGluZz0idG5zOkJpbmRpbmczOTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDAwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDAwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDAwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQwMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDAwIiBuYW1lPSJJbnB1dDQwMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MDAiIG5hbWU9Ik91dHB1dDQwMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDAwIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDAwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQwMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDAwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQwMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDAxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQwMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MDEiIG5hbWU9IklucHV0NDAxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQwMSIgbmFtZT0iT3V0cHV0NDAxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MDEiIHR5cGU9InRuczpQb3J0VHlwZTQwMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDAxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MDEiIGJpbmRpbmc9InRuczpCaW5kaW5nNDAxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQwMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQwMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQwMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDAyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDAyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQwMiIgbmFtZT0iSW5wdXQ0MDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDAyIiBuYW1lPSJPdXRwdXQ0MDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQwMiIgdHlwZT0idG5zOlBvcnRUeXBlNDAyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDAyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQwMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQwMiIgYmluZGluZz0idG5zOkJpbmRpbmc0MDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDAzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDAzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDAzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQwMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDAzIiBuYW1lPSJJbnB1dDQwMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MDMiIG5hbWU9Ik91dHB1dDQwMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDAzIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDAzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQwMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDAzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQwMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDA0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQwNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MDQiIG5hbWU9IklucHV0NDA0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQwNCIgbmFtZT0iT3V0cHV0NDA0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MDQiIHR5cGU9InRuczpQb3J0VHlwZTQwNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDA0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MDQiIGJpbmRpbmc9InRuczpCaW5kaW5nNDA0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQwNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQwNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQwNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDA1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDA1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQwNSIgbmFtZT0iSW5wdXQ0MDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDA1IiBuYW1lPSJPdXRwdXQ0MDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQwNSIgdHlwZT0idG5zOlBvcnRUeXBlNDA1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDA1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQwNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQwNSIgYmluZGluZz0idG5zOkJpbmRpbmc0MDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDA2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDA2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDA2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQwNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDA2IiBuYW1lPSJJbnB1dDQwNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MDYiIG5hbWU9Ik91dHB1dDQwNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDA2IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDA2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQwNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDA2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQwNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDA3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQwNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MDciIG5hbWU9IklucHV0NDA3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQwNyIgbmFtZT0iT3V0cHV0NDA3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MDciIHR5cGU9InRuczpQb3J0VHlwZTQwNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDA3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MDciIGJpbmRpbmc9InRuczpCaW5kaW5nNDA3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQwOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQwOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQwOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDA4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDA4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQwOCIgbmFtZT0iSW5wdXQ0MDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDA4IiBuYW1lPSJPdXRwdXQ0MDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQwOCIgdHlwZT0idG5zOlBvcnRUeXBlNDA4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDA4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQwOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQwOCIgYmluZGluZz0idG5zOkJpbmRpbmc0MDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDA5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDA5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDA5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQwOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDA5IiBuYW1lPSJJbnB1dDQwOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MDkiIG5hbWU9Ik91dHB1dDQwOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDA5IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDA5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQwOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDA5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQwOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQxMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MTAiIG5hbWU9IklucHV0NDEwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQxMCIgbmFtZT0iT3V0cHV0NDEwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MTAiIHR5cGU9InRuczpQb3J0VHlwZTQxMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDEwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MTAiIGJpbmRpbmc9InRuczpCaW5kaW5nNDEwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQxMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQxMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQxMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDExIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDExIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQxMSIgbmFtZT0iSW5wdXQ0MTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDExIiBuYW1lPSJPdXRwdXQ0MTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQxMSIgdHlwZT0idG5zOlBvcnRUeXBlNDExIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDExIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQxMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQxMSIgYmluZGluZz0idG5zOkJpbmRpbmc0MTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQxMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDEyIiBuYW1lPSJJbnB1dDQxMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MTIiIG5hbWU9Ik91dHB1dDQxMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDEyIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDEyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQxMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDEyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQxMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQxMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MTMiIG5hbWU9IklucHV0NDEzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQxMyIgbmFtZT0iT3V0cHV0NDEzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MTMiIHR5cGU9InRuczpQb3J0VHlwZTQxMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDEzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MTMiIGJpbmRpbmc9InRuczpCaW5kaW5nNDEzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQxNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQxNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQxNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDE0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDE0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQxNCIgbmFtZT0iSW5wdXQ0MTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDE0IiBuYW1lPSJPdXRwdXQ0MTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQxNCIgdHlwZT0idG5zOlBvcnRUeXBlNDE0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDE0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQxNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQxNCIgYmluZGluZz0idG5zOkJpbmRpbmc0MTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQxNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDE1IiBuYW1lPSJJbnB1dDQxNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MTUiIG5hbWU9Ik91dHB1dDQxNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDE1IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDE1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQxNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDE1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQxNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQxNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MTYiIG5hbWU9IklucHV0NDE2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQxNiIgbmFtZT0iT3V0cHV0NDE2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MTYiIHR5cGU9InRuczpQb3J0VHlwZTQxNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDE2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MTYiIGJpbmRpbmc9InRuczpCaW5kaW5nNDE2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQxNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQxNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQxNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDE3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDE3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQxNyIgbmFtZT0iSW5wdXQ0MTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDE3IiBuYW1lPSJPdXRwdXQ0MTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQxNyIgdHlwZT0idG5zOlBvcnRUeXBlNDE3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDE3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQxNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQxNyIgYmluZGluZz0idG5zOkJpbmRpbmc0MTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQxOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDE4IiBuYW1lPSJJbnB1dDQxOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MTgiIG5hbWU9Ik91dHB1dDQxOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDE4IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDE4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQxOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDE4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQxOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQxOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MTkiIG5hbWU9IklucHV0NDE5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQxOSIgbmFtZT0iT3V0cHV0NDE5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MTkiIHR5cGU9InRuczpQb3J0VHlwZTQxOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDE5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MTkiIGJpbmRpbmc9InRuczpCaW5kaW5nNDE5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDIwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDIwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQyMCIgbmFtZT0iSW5wdXQ0MjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDIwIiBuYW1lPSJPdXRwdXQ0MjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQyMCIgdHlwZT0idG5zOlBvcnRUeXBlNDIwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDIwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQyMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQyMCIgYmluZGluZz0idG5zOkJpbmRpbmc0MjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDIxIiBuYW1lPSJJbnB1dDQyMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MjEiIG5hbWU9Ik91dHB1dDQyMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDIxIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDIxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQyMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDIxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQyMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQyMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MjIiIG5hbWU9IklucHV0NDIyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQyMiIgbmFtZT0iT3V0cHV0NDIyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MjIiIHR5cGU9InRuczpQb3J0VHlwZTQyMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDIyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MjIiIGJpbmRpbmc9InRuczpCaW5kaW5nNDIyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDIzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDIzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQyMyIgbmFtZT0iSW5wdXQ0MjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDIzIiBuYW1lPSJPdXRwdXQ0MjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQyMyIgdHlwZT0idG5zOlBvcnRUeXBlNDIzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDIzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQyMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQyMyIgYmluZGluZz0idG5zOkJpbmRpbmc0MjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDI0IiBuYW1lPSJJbnB1dDQyNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MjQiIG5hbWU9Ik91dHB1dDQyNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDI0IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDI0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQyNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDI0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQyNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQyNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MjUiIG5hbWU9IklucHV0NDI1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQyNSIgbmFtZT0iT3V0cHV0NDI1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MjUiIHR5cGU9InRuczpQb3J0VHlwZTQyNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDI1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MjUiIGJpbmRpbmc9InRuczpCaW5kaW5nNDI1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDI2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDI2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQyNiIgbmFtZT0iSW5wdXQ0MjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDI2IiBuYW1lPSJPdXRwdXQ0MjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQyNiIgdHlwZT0idG5zOlBvcnRUeXBlNDI2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDI2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQyNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQyNiIgYmluZGluZz0idG5zOkJpbmRpbmc0MjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDI3IiBuYW1lPSJJbnB1dDQyNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MjciIG5hbWU9Ik91dHB1dDQyNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDI3IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDI3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQyNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDI3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQyNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQyOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MjgiIG5hbWU9IklucHV0NDI4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQyOCIgbmFtZT0iT3V0cHV0NDI4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MjgiIHR5cGU9InRuczpQb3J0VHlwZTQyOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDI4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MjgiIGJpbmRpbmc9InRuczpCaW5kaW5nNDI4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDI5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDI5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQyOSIgbmFtZT0iSW5wdXQ0MjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDI5IiBuYW1lPSJPdXRwdXQ0MjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQyOSIgdHlwZT0idG5zOlBvcnRUeXBlNDI5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDI5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQyOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQyOSIgYmluZGluZz0idG5zOkJpbmRpbmc0MjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDMwIiBuYW1lPSJJbnB1dDQzMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MzAiIG5hbWU9Ik91dHB1dDQzMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDMwIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDMwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQzMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDMwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQzMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQzMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MzEiIG5hbWU9IklucHV0NDMxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQzMSIgbmFtZT0iT3V0cHV0NDMxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MzEiIHR5cGU9InRuczpQb3J0VHlwZTQzMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDMxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MzEiIGJpbmRpbmc9InRuczpCaW5kaW5nNDMxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQzMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQzMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDMyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDMyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQzMiIgbmFtZT0iSW5wdXQ0MzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDMyIiBuYW1lPSJPdXRwdXQ0MzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQzMiIgdHlwZT0idG5zOlBvcnRUeXBlNDMyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDMyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQzMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQzMiIgYmluZGluZz0idG5zOkJpbmRpbmc0MzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDMzIiBuYW1lPSJJbnB1dDQzMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MzMiIG5hbWU9Ik91dHB1dDQzMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDMzIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDMzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQzMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDMzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQzMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQzNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MzQiIG5hbWU9IklucHV0NDM0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQzNCIgbmFtZT0iT3V0cHV0NDM0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MzQiIHR5cGU9InRuczpQb3J0VHlwZTQzNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDM0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MzQiIGJpbmRpbmc9InRuczpCaW5kaW5nNDM0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQzNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQzNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDM1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDM1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQzNSIgbmFtZT0iSW5wdXQ0MzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDM1IiBuYW1lPSJPdXRwdXQ0MzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQzNSIgdHlwZT0idG5zOlBvcnRUeXBlNDM1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDM1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQzNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQzNSIgYmluZGluZz0idG5zOkJpbmRpbmc0MzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDM2IiBuYW1lPSJJbnB1dDQzNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MzYiIG5hbWU9Ik91dHB1dDQzNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDM2IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDM2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQzNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDM2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQzNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQzNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MzciIG5hbWU9IklucHV0NDM3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQzNyIgbmFtZT0iT3V0cHV0NDM3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MzciIHR5cGU9InRuczpQb3J0VHlwZTQzNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDM3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MzciIGJpbmRpbmc9InRuczpCaW5kaW5nNDM3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQzOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQzOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDM4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDM4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQzOCIgbmFtZT0iSW5wdXQ0MzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDM4IiBuYW1lPSJPdXRwdXQ0MzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQzOCIgdHlwZT0idG5zOlBvcnRUeXBlNDM4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDM4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQzOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQzOCIgYmluZGluZz0idG5zOkJpbmRpbmc0MzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDM5IiBuYW1lPSJJbnB1dDQzOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MzkiIG5hbWU9Ik91dHB1dDQzOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDM5IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDM5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQzOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDM5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQzOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ0MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NDAiIG5hbWU9IklucHV0NDQwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ0MCIgbmFtZT0iT3V0cHV0NDQwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NDAiIHR5cGU9InRuczpQb3J0VHlwZTQ0MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDQwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NDAiIGJpbmRpbmc9InRuczpCaW5kaW5nNDQwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDQxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ0MSIgbmFtZT0iSW5wdXQ0NDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDQxIiBuYW1lPSJPdXRwdXQ0NDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ0MSIgdHlwZT0idG5zOlBvcnRUeXBlNDQxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ0MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ0MSIgYmluZGluZz0idG5zOkJpbmRpbmc0NDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDQyIiBuYW1lPSJJbnB1dDQ0MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NDIiIG5hbWU9Ik91dHB1dDQ0MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDQyIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDQyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ0MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDQyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ0MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ0MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NDMiIG5hbWU9IklucHV0NDQzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ0MyIgbmFtZT0iT3V0cHV0NDQzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NDMiIHR5cGU9InRuczpQb3J0VHlwZTQ0MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDQzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NDMiIGJpbmRpbmc9InRuczpCaW5kaW5nNDQzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDQ0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQ0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ0NCIgbmFtZT0iSW5wdXQ0NDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDQ0IiBuYW1lPSJPdXRwdXQ0NDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ0NCIgdHlwZT0idG5zOlBvcnRUeXBlNDQ0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQ0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ0NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ0NCIgYmluZGluZz0idG5zOkJpbmRpbmc0NDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDQ1IiBuYW1lPSJJbnB1dDQ0NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NDUiIG5hbWU9Ik91dHB1dDQ0NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDQ1IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDQ1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ0NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDQ1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ0NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ0NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NDYiIG5hbWU9IklucHV0NDQ2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ0NiIgbmFtZT0iT3V0cHV0NDQ2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NDYiIHR5cGU9InRuczpQb3J0VHlwZTQ0NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDQ2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NDYiIGJpbmRpbmc9InRuczpCaW5kaW5nNDQ2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDQ3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQ3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ0NyIgbmFtZT0iSW5wdXQ0NDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDQ3IiBuYW1lPSJPdXRwdXQ0NDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ0NyIgdHlwZT0idG5zOlBvcnRUeXBlNDQ3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQ3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ0NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ0NyIgYmluZGluZz0idG5zOkJpbmRpbmc0NDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDQ4IiBuYW1lPSJJbnB1dDQ0OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NDgiIG5hbWU9Ik91dHB1dDQ0OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDQ4IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDQ4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ0OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDQ4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ0OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ0OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NDkiIG5hbWU9IklucHV0NDQ5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ0OSIgbmFtZT0iT3V0cHV0NDQ5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NDkiIHR5cGU9InRuczpQb3J0VHlwZTQ0OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDQ5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NDkiIGJpbmRpbmc9InRuczpCaW5kaW5nNDQ5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDUwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDUwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ1MCIgbmFtZT0iSW5wdXQ0NTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDUwIiBuYW1lPSJPdXRwdXQ0NTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ1MCIgdHlwZT0idG5zOlBvcnRUeXBlNDUwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDUwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ1MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ1MCIgYmluZGluZz0idG5zOkJpbmRpbmc0NTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDUxIiBuYW1lPSJJbnB1dDQ1MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NTEiIG5hbWU9Ik91dHB1dDQ1MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDUxIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDUxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ1MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDUxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ1MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ1MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NTIiIG5hbWU9IklucHV0NDUyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ1MiIgbmFtZT0iT3V0cHV0NDUyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NTIiIHR5cGU9InRuczpQb3J0VHlwZTQ1MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDUyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NTIiIGJpbmRpbmc9InRuczpCaW5kaW5nNDUyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDUzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDUzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ1MyIgbmFtZT0iSW5wdXQ0NTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDUzIiBuYW1lPSJPdXRwdXQ0NTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ1MyIgdHlwZT0idG5zOlBvcnRUeXBlNDUzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDUzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ1MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ1MyIgYmluZGluZz0idG5zOkJpbmRpbmc0NTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDU0IiBuYW1lPSJJbnB1dDQ1NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NTQiIG5hbWU9Ik91dHB1dDQ1NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDU0IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDU0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ1NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDU0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ1NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ1NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NTUiIG5hbWU9IklucHV0NDU1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ1NSIgbmFtZT0iT3V0cHV0NDU1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NTUiIHR5cGU9InRuczpQb3J0VHlwZTQ1NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDU1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NTUiIGJpbmRpbmc9InRuczpCaW5kaW5nNDU1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDU2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDU2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ1NiIgbmFtZT0iSW5wdXQ0NTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDU2IiBuYW1lPSJPdXRwdXQ0NTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ1NiIgdHlwZT0idG5zOlBvcnRUeXBlNDU2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDU2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ1NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ1NiIgYmluZGluZz0idG5zOkJpbmRpbmc0NTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDU3IiBuYW1lPSJJbnB1dDQ1NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NTciIG5hbWU9Ik91dHB1dDQ1NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDU3IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDU3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ1NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDU3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ1NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ1OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NTgiIG5hbWU9IklucHV0NDU4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ1OCIgbmFtZT0iT3V0cHV0NDU4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NTgiIHR5cGU9InRuczpQb3J0VHlwZTQ1OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDU4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NTgiIGJpbmRpbmc9InRuczpCaW5kaW5nNDU4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDU5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDU5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ1OSIgbmFtZT0iSW5wdXQ0NTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDU5IiBuYW1lPSJPdXRwdXQ0NTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ1OSIgdHlwZT0idG5zOlBvcnRUeXBlNDU5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDU5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ1OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ1OSIgYmluZGluZz0idG5zOkJpbmRpbmc0NTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDYwIiBuYW1lPSJJbnB1dDQ2MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NjAiIG5hbWU9Ik91dHB1dDQ2MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDYwIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDYwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ2MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDYwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ2MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ2MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NjEiIG5hbWU9IklucHV0NDYxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ2MSIgbmFtZT0iT3V0cHV0NDYxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NjEiIHR5cGU9InRuczpQb3J0VHlwZTQ2MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDYxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NjEiIGJpbmRpbmc9InRuczpCaW5kaW5nNDYxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDYyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDYyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ2MiIgbmFtZT0iSW5wdXQ0NjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDYyIiBuYW1lPSJPdXRwdXQ0NjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ2MiIgdHlwZT0idG5zOlBvcnRUeXBlNDYyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDYyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ2MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ2MiIgYmluZGluZz0idG5zOkJpbmRpbmc0NjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDYzIiBuYW1lPSJJbnB1dDQ2MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NjMiIG5hbWU9Ik91dHB1dDQ2MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDYzIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDYzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ2MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDYzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ2MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ2NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NjQiIG5hbWU9IklucHV0NDY0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ2NCIgbmFtZT0iT3V0cHV0NDY0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NjQiIHR5cGU9InRuczpQb3J0VHlwZTQ2NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDY0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NjQiIGJpbmRpbmc9InRuczpCaW5kaW5nNDY0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDY1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDY1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ2NSIgbmFtZT0iSW5wdXQ0NjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDY1IiBuYW1lPSJPdXRwdXQ0NjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ2NSIgdHlwZT0idG5zOlBvcnRUeXBlNDY1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDY1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ2NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ2NSIgYmluZGluZz0idG5zOkJpbmRpbmc0NjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDY2IiBuYW1lPSJJbnB1dDQ2NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NjYiIG5hbWU9Ik91dHB1dDQ2NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDY2IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDY2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ2NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDY2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ2NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ2NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NjciIG5hbWU9IklucHV0NDY3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ2NyIgbmFtZT0iT3V0cHV0NDY3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NjciIHR5cGU9InRuczpQb3J0VHlwZTQ2NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDY3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NjciIGJpbmRpbmc9InRuczpCaW5kaW5nNDY3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDY4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDY4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ2OCIgbmFtZT0iSW5wdXQ0NjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDY4IiBuYW1lPSJPdXRwdXQ0NjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ2OCIgdHlwZT0idG5zOlBvcnRUeXBlNDY4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDY4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ2OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ2OCIgYmluZGluZz0idG5zOkJpbmRpbmc0NjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDY5IiBuYW1lPSJJbnB1dDQ2OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NjkiIG5hbWU9Ik91dHB1dDQ2OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDY5IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDY5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ2OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDY5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ2OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ3MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NzAiIG5hbWU9IklucHV0NDcwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ3MCIgbmFtZT0iT3V0cHV0NDcwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NzAiIHR5cGU9InRuczpQb3J0VHlwZTQ3MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDcwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NzAiIGJpbmRpbmc9InRuczpCaW5kaW5nNDcwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDcxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDcxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ3MSIgbmFtZT0iSW5wdXQ0NzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDcxIiBuYW1lPSJPdXRwdXQ0NzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ3MSIgdHlwZT0idG5zOlBvcnRUeXBlNDcxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDcxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ3MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ3MSIgYmluZGluZz0idG5zOkJpbmRpbmc0NzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDcyIiBuYW1lPSJJbnB1dDQ3MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NzIiIG5hbWU9Ik91dHB1dDQ3MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDcyIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDcyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ3MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDcyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ3MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ3MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NzMiIG5hbWU9IklucHV0NDczIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ3MyIgbmFtZT0iT3V0cHV0NDczIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NzMiIHR5cGU9InRuczpQb3J0VHlwZTQ3MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDczIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NzMiIGJpbmRpbmc9InRuczpCaW5kaW5nNDczIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDc0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDc0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ3NCIgbmFtZT0iSW5wdXQ0NzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDc0IiBuYW1lPSJPdXRwdXQ0NzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ3NCIgdHlwZT0idG5zOlBvcnRUeXBlNDc0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDc0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ3NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ3NCIgYmluZGluZz0idG5zOkJpbmRpbmc0NzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDc1IiBuYW1lPSJJbnB1dDQ3NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NzUiIG5hbWU9Ik91dHB1dDQ3NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDc1IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDc1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ3NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDc1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ3NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ3NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NzYiIG5hbWU9IklucHV0NDc2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ3NiIgbmFtZT0iT3V0cHV0NDc2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NzYiIHR5cGU9InRuczpQb3J0VHlwZTQ3NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDc2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NzYiIGJpbmRpbmc9InRuczpCaW5kaW5nNDc2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDc3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDc3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ3NyIgbmFtZT0iSW5wdXQ0NzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDc3IiBuYW1lPSJPdXRwdXQ0NzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ3NyIgdHlwZT0idG5zOlBvcnRUeXBlNDc3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDc3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ3NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ3NyIgYmluZGluZz0idG5zOkJpbmRpbmc0NzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDc4IiBuYW1lPSJJbnB1dDQ3OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NzgiIG5hbWU9Ik91dHB1dDQ3OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDc4IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDc4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ3OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDc4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ3OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ3OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NzkiIG5hbWU9IklucHV0NDc5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ3OSIgbmFtZT0iT3V0cHV0NDc5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NzkiIHR5cGU9InRuczpQb3J0VHlwZTQ3OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDc5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NzkiIGJpbmRpbmc9InRuczpCaW5kaW5nNDc5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0ODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDgwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDgwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ4MCIgbmFtZT0iSW5wdXQ0ODAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDgwIiBuYW1lPSJPdXRwdXQ0ODAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ4MCIgdHlwZT0idG5zOlBvcnRUeXBlNDgwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDgwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ4MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0ODAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ4MCIgYmluZGluZz0idG5zOkJpbmRpbmc0ODAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0ODEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDgxIiBuYW1lPSJJbnB1dDQ4MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0ODEiIG5hbWU9Ik91dHB1dDQ4MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDgxIiB0eXBlPSJ0bnM6UG9ydFR5cGU0ODEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDgxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ4MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDgxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ4MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0ODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0ODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0ODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ4MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0ODIiIG5hbWU9IklucHV0NDgyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ4MiIgbmFtZT0iT3V0cHV0NDgyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0ODIiIHR5cGU9InRuczpQb3J0VHlwZTQ4MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240ODIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDgyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0ODIiIGJpbmRpbmc9InRuczpCaW5kaW5nNDgyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0ODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDgzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDgzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ4MyIgbmFtZT0iSW5wdXQ0ODMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDgzIiBuYW1lPSJPdXRwdXQ0ODMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ4MyIgdHlwZT0idG5zOlBvcnRUeXBlNDgzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDgzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ4MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0ODMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ4MyIgYmluZGluZz0idG5zOkJpbmRpbmc0ODMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0ODQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDg0IiBuYW1lPSJJbnB1dDQ4NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0ODQiIG5hbWU9Ik91dHB1dDQ4NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDg0IiB0eXBlPSJ0bnM6UG9ydFR5cGU0ODQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDg0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ4NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDg0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ4NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0ODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0ODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0ODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ4NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0ODUiIG5hbWU9IklucHV0NDg1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ4NSIgbmFtZT0iT3V0cHV0NDg1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0ODUiIHR5cGU9InRuczpQb3J0VHlwZTQ4NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240ODUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDg1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0ODUiIGJpbmRpbmc9InRuczpCaW5kaW5nNDg1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0ODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDg2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDg2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ4NiIgbmFtZT0iSW5wdXQ0ODYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDg2IiBuYW1lPSJPdXRwdXQ0ODYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ4NiIgdHlwZT0idG5zOlBvcnRUeXBlNDg2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDg2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ4NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0ODYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ4NiIgYmluZGluZz0idG5zOkJpbmRpbmc0ODYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0ODciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDg3IiBuYW1lPSJJbnB1dDQ4NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0ODciIG5hbWU9Ik91dHB1dDQ4NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDg3IiB0eXBlPSJ0bnM6UG9ydFR5cGU0ODciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDg3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ4NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDg3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ4NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0ODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0ODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0ODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ4OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0ODgiIG5hbWU9IklucHV0NDg4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ4OCIgbmFtZT0iT3V0cHV0NDg4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0ODgiIHR5cGU9InRuczpQb3J0VHlwZTQ4OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240ODgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDg4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0ODgiIGJpbmRpbmc9InRuczpCaW5kaW5nNDg4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0ODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDg5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDg5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ4OSIgbmFtZT0iSW5wdXQ0ODkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDg5IiBuYW1lPSJPdXRwdXQ0ODkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ4OSIgdHlwZT0idG5zOlBvcnRUeXBlNDg5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDg5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ4OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0ODkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ4OSIgYmluZGluZz0idG5zOkJpbmRpbmc0ODkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0OTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDkwIiBuYW1lPSJJbnB1dDQ5MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OTAiIG5hbWU9Ik91dHB1dDQ5MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDkwIiB0eXBlPSJ0bnM6UG9ydFR5cGU0OTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDkwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ5MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDkwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ5MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0OTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0OTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ5MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OTEiIG5hbWU9IklucHV0NDkxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ5MSIgbmFtZT0iT3V0cHV0NDkxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0OTEiIHR5cGU9InRuczpQb3J0VHlwZTQ5MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240OTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDkxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OTEiIGJpbmRpbmc9InRuczpCaW5kaW5nNDkxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0OTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDkyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDkyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ5MiIgbmFtZT0iSW5wdXQ0OTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDkyIiBuYW1lPSJPdXRwdXQ0OTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ5MiIgdHlwZT0idG5zOlBvcnRUeXBlNDkyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDkyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ5MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0OTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ5MiIgYmluZGluZz0idG5zOkJpbmRpbmc0OTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0OTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDkzIiBuYW1lPSJJbnB1dDQ5MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OTMiIG5hbWU9Ik91dHB1dDQ5MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDkzIiB0eXBlPSJ0bnM6UG9ydFR5cGU0OTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDkzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ5MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDkzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ5MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0OTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0OTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ5NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OTQiIG5hbWU9IklucHV0NDk0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ5NCIgbmFtZT0iT3V0cHV0NDk0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0OTQiIHR5cGU9InRuczpQb3J0VHlwZTQ5NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240OTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDk0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OTQiIGJpbmRpbmc9InRuczpCaW5kaW5nNDk0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0OTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDk1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDk1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ5NSIgbmFtZT0iSW5wdXQ0OTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDk1IiBuYW1lPSJPdXRwdXQ0OTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ5NSIgdHlwZT0idG5zOlBvcnRUeXBlNDk1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDk1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ5NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0OTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ5NSIgYmluZGluZz0idG5zOkJpbmRpbmc0OTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0OTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDk2IiBuYW1lPSJJbnB1dDQ5NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OTYiIG5hbWU9Ik91dHB1dDQ5NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDk2IiB0eXBlPSJ0bnM6UG9ydFR5cGU0OTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDk2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ5NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDk2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ5NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0OTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0OTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ5NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OTciIG5hbWU9IklucHV0NDk3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ5NyIgbmFtZT0iT3V0cHV0NDk3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0OTciIHR5cGU9InRuczpQb3J0VHlwZTQ5NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240OTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDk3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OTciIGJpbmRpbmc9InRuczpCaW5kaW5nNDk3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0OTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDk4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDk4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ5OCIgbmFtZT0iSW5wdXQ0OTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDk4IiBuYW1lPSJPdXRwdXQ0OTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ5OCIgdHlwZT0idG5zOlBvcnRUeXBlNDk4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDk4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ5OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0OTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ5OCIgYmluZGluZz0idG5zOkJpbmRpbmc0OTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0OTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDk5IiBuYW1lPSJJbnB1dDQ5OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OTkiIG5hbWU9Ik91dHB1dDQ5OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDk5IiB0eXBlPSJ0bnM6UG9ydFR5cGU0OTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDk5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ5OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDk5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ5OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTAwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUwMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MDAiIG5hbWU9IklucHV0NTAwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUwMCIgbmFtZT0iT3V0cHV0NTAwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MDAiIHR5cGU9InRuczpQb3J0VHlwZTUwMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTAwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MDAiIGJpbmRpbmc9InRuczpCaW5kaW5nNTAwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTAxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTAxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUwMSIgbmFtZT0iSW5wdXQ1MDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTAxIiBuYW1lPSJPdXRwdXQ1MDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUwMSIgdHlwZT0idG5zOlBvcnRUeXBlNTAxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTAxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUwMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUwMSIgYmluZGluZz0idG5zOkJpbmRpbmc1MDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUwMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTAyIiBuYW1lPSJJbnB1dDUwMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MDIiIG5hbWU9Ik91dHB1dDUwMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTAyIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTAyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUwMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTAyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzUwMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTAzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUwMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MDMiIG5hbWU9IklucHV0NTAzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUwMyIgbmFtZT0iT3V0cHV0NTAzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MDMiIHR5cGU9InRuczpQb3J0VHlwZTUwMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTAzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MDMiIGJpbmRpbmc9InRuczpCaW5kaW5nNTAzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTA0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTA0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUwNCIgbmFtZT0iSW5wdXQ1MDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTA0IiBuYW1lPSJPdXRwdXQ1MDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUwNCIgdHlwZT0idG5zOlBvcnRUeXBlNTA0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTA0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUwNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUwNCIgYmluZGluZz0idG5zOkJpbmRpbmc1MDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUwNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTA1IiBuYW1lPSJJbnB1dDUwNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MDUiIG5hbWU9Ik91dHB1dDUwNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTA1IiB0eXBlPSJ0bnM6UG9ydFR5cGU1MDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTA1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUwNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTA1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzUwNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTA2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUwNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MDYiIG5hbWU9IklucHV0NTA2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUwNiIgbmFtZT0iT3V0cHV0NTA2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MDYiIHR5cGU9InRuczpQb3J0VHlwZTUwNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTA2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MDYiIGJpbmRpbmc9InRuczpCaW5kaW5nNTA2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTA3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTA3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUwNyIgbmFtZT0iSW5wdXQ1MDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTA3IiBuYW1lPSJPdXRwdXQ1MDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUwNyIgdHlwZT0idG5zOlBvcnRUeXBlNTA3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTA3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUwNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUwNyIgYmluZGluZz0idG5zOkJpbmRpbmc1MDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUwOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTA4IiBuYW1lPSJJbnB1dDUwOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MDgiIG5hbWU9Ik91dHB1dDUwOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTA4IiB0eXBlPSJ0bnM6UG9ydFR5cGU1MDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTA4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUwOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTA4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzUwOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTA5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUwOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MDkiIG5hbWU9IklucHV0NTA5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUwOSIgbmFtZT0iT3V0cHV0NTA5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MDkiIHR5cGU9InRuczpQb3J0VHlwZTUwOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTA5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MDkiIGJpbmRpbmc9InRuczpCaW5kaW5nNTA5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTEwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTEwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUxMCIgbmFtZT0iSW5wdXQ1MTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTEwIiBuYW1lPSJPdXRwdXQ1MTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUxMCIgdHlwZT0idG5zOlBvcnRUeXBlNTEwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTEwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUxMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUxMCIgYmluZGluZz0idG5zOkJpbmRpbmc1MTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUxMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTExIiBuYW1lPSJJbnB1dDUxMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MTEiIG5hbWU9Ik91dHB1dDUxMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTExIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTExIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUxMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTExIiBiaW5kaW5nPSJ0bnM6QmluZGluZzUxMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUxMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUxMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MTIiIG5hbWU9IklucHV0NTEyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUxMiIgbmFtZT0iT3V0cHV0NTEyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MTIiIHR5cGU9InRuczpQb3J0VHlwZTUxMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUxMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTEyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MTIiIGJpbmRpbmc9InRuczpCaW5kaW5nNTEyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTEzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTEzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUxMyIgbmFtZT0iSW5wdXQ1MTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTEzIiBuYW1lPSJPdXRwdXQ1MTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUxMyIgdHlwZT0idG5zOlBvcnRUeXBlNTEzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTEzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUxMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUxMyIgYmluZGluZz0idG5zOkJpbmRpbmc1MTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUxNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTE0IiBuYW1lPSJJbnB1dDUxNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MTQiIG5hbWU9Ik91dHB1dDUxNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTE0IiB0eXBlPSJ0bnM6UG9ydFR5cGU1MTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTE0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUxNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTE0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzUxNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUxNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUxNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MTUiIG5hbWU9IklucHV0NTE1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUxNSIgbmFtZT0iT3V0cHV0NTE1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MTUiIHR5cGU9InRuczpQb3J0VHlwZTUxNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUxNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTE1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MTUiIGJpbmRpbmc9InRuczpCaW5kaW5nNTE1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTE2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTE2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUxNiIgbmFtZT0iSW5wdXQ1MTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTE2IiBuYW1lPSJPdXRwdXQ1MTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUxNiIgdHlwZT0idG5zOlBvcnRUeXBlNTE2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTE2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUxNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUxNiIgYmluZGluZz0idG5zOkJpbmRpbmc1MTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUxNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTE3IiBuYW1lPSJJbnB1dDUxNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MTciIG5hbWU9Ik91dHB1dDUxNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTE3IiB0eXBlPSJ0bnM6UG9ydFR5cGU1MTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTE3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUxNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTE3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzUxNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUxOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUxOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MTgiIG5hbWU9IklucHV0NTE4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUxOCIgbmFtZT0iT3V0cHV0NTE4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MTgiIHR5cGU9InRuczpQb3J0VHlwZTUxOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUxOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTE4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MTgiIGJpbmRpbmc9InRuczpCaW5kaW5nNTE4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTE5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTE5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUxOSIgbmFtZT0iSW5wdXQ1MTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTE5IiBuYW1lPSJPdXRwdXQ1MTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUxOSIgdHlwZT0idG5zOlBvcnRUeXBlNTE5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTE5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUxOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUxOSIgYmluZGluZz0idG5zOkJpbmRpbmc1MTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTIwIiBuYW1lPSJJbnB1dDUyMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MjAiIG5hbWU9Ik91dHB1dDUyMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTIwIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTIwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUyMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTIwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzUyMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUyMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUyMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MjEiIG5hbWU9IklucHV0NTIxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUyMSIgbmFtZT0iT3V0cHV0NTIxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MjEiIHR5cGU9InRuczpQb3J0VHlwZTUyMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUyMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTIxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MjEiIGJpbmRpbmc9InRuczpCaW5kaW5nNTIxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTIyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTIyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUyMiIgbmFtZT0iSW5wdXQ1MjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTIyIiBuYW1lPSJPdXRwdXQ1MjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUyMiIgdHlwZT0idG5zOlBvcnRUeXBlNTIyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTIyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUyMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUyMiIgYmluZGluZz0idG5zOkJpbmRpbmc1MjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTIzIiBuYW1lPSJJbnB1dDUyMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MjMiIG5hbWU9Ik91dHB1dDUyMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTIzIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTIzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUyMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTIzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzUyMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUyNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUyNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MjQiIG5hbWU9IklucHV0NTI0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUyNCIgbmFtZT0iT3V0cHV0NTI0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MjQiIHR5cGU9InRuczpQb3J0VHlwZTUyNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUyNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTI0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MjQiIGJpbmRpbmc9InRuczpCaW5kaW5nNTI0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTI1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTI1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUyNSIgbmFtZT0iSW5wdXQ1MjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTI1IiBuYW1lPSJPdXRwdXQ1MjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUyNSIgdHlwZT0idG5zOlBvcnRUeXBlNTI1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTI1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUyNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUyNSIgYmluZGluZz0idG5zOkJpbmRpbmc1MjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTI2IiBuYW1lPSJJbnB1dDUyNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MjYiIG5hbWU9Ik91dHB1dDUyNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTI2IiB0eXBlPSJ0bnM6UG9ydFR5cGU1MjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTI2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUyNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTI2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzUyNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUyNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUyNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MjciIG5hbWU9IklucHV0NTI3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUyNyIgbmFtZT0iT3V0cHV0NTI3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MjciIHR5cGU9InRuczpQb3J0VHlwZTUyNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUyNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTI3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MjciIGJpbmRpbmc9InRuczpCaW5kaW5nNTI3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTI4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTI4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUyOCIgbmFtZT0iSW5wdXQ1MjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTI4IiBuYW1lPSJPdXRwdXQ1MjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUyOCIgdHlwZT0idG5zOlBvcnRUeXBlNTI4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTI4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUyOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUyOCIgYmluZGluZz0idG5zOkJpbmRpbmc1MjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTI5IiBuYW1lPSJJbnB1dDUyOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MjkiIG5hbWU9Ik91dHB1dDUyOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTI5IiB0eXBlPSJ0bnM6UG9ydFR5cGU1MjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTI5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUyOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTI5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzUyOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUzMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MzAiIG5hbWU9IklucHV0NTMwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUzMCIgbmFtZT0iT3V0cHV0NTMwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MzAiIHR5cGU9InRuczpQb3J0VHlwZTUzMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTMwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MzAiIGJpbmRpbmc9InRuczpCaW5kaW5nNTMwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTMxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTMxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUzMSIgbmFtZT0iSW5wdXQ1MzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTMxIiBuYW1lPSJPdXRwdXQ1MzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUzMSIgdHlwZT0idG5zOlBvcnRUeXBlNTMxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTMxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUzMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUzMSIgYmluZGluZz0idG5zOkJpbmRpbmc1MzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTMyIiBuYW1lPSJJbnB1dDUzMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MzIiIG5hbWU9Ik91dHB1dDUzMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTMyIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTMyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUzMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTMyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzUzMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUzMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MzMiIG5hbWU9IklucHV0NTMzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUzMyIgbmFtZT0iT3V0cHV0NTMzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MzMiIHR5cGU9InRuczpQb3J0VHlwZTUzMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTMzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MzMiIGJpbmRpbmc9InRuczpCaW5kaW5nNTMzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTM0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTM0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUzNCIgbmFtZT0iSW5wdXQ1MzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTM0IiBuYW1lPSJPdXRwdXQ1MzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUzNCIgdHlwZT0idG5zOlBvcnRUeXBlNTM0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTM0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUzNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUzNCIgYmluZGluZz0idG5zOkJpbmRpbmc1MzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTM1IiBuYW1lPSJJbnB1dDUzNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MzUiIG5hbWU9Ik91dHB1dDUzNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTM1IiB0eXBlPSJ0bnM6UG9ydFR5cGU1MzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTM1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUzNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTM1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzUzNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUzNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MzYiIG5hbWU9IklucHV0NTM2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUzNiIgbmFtZT0iT3V0cHV0NTM2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MzYiIHR5cGU9InRuczpQb3J0VHlwZTUzNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTM2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MzYiIGJpbmRpbmc9InRuczpCaW5kaW5nNTM2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTM3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTM3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUzNyIgbmFtZT0iSW5wdXQ1MzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTM3IiBuYW1lPSJPdXRwdXQ1MzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUzNyIgdHlwZT0idG5zOlBvcnRUeXBlNTM3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTM3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUzNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1MzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUzNyIgYmluZGluZz0idG5zOkJpbmRpbmc1MzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTM4IiBuYW1lPSJJbnB1dDUzOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MzgiIG5hbWU9Ik91dHB1dDUzOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTM4IiB0eXBlPSJ0bnM6UG9ydFR5cGU1MzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTM4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUzOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTM4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzUzOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1MzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTUzOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MzkiIG5hbWU9IklucHV0NTM5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUzOSIgbmFtZT0iT3V0cHV0NTM5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1MzkiIHR5cGU9InRuczpQb3J0VHlwZTUzOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241MzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTM5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MzkiIGJpbmRpbmc9InRuczpCaW5kaW5nNTM5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTQwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU0MCIgbmFtZT0iSW5wdXQ1NDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTQwIiBuYW1lPSJPdXRwdXQ1NDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU0MCIgdHlwZT0idG5zOlBvcnRUeXBlNTQwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU0MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU0MCIgYmluZGluZz0idG5zOkJpbmRpbmc1NDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTQxIiBuYW1lPSJJbnB1dDU0MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NDEiIG5hbWU9Ik91dHB1dDU0MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTQxIiB0eXBlPSJ0bnM6UG9ydFR5cGU1NDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTQxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU0MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTQxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzU0MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU0MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU0MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NDIiIG5hbWU9IklucHV0NTQyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU0MiIgbmFtZT0iT3V0cHV0NTQyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NDIiIHR5cGU9InRuczpQb3J0VHlwZTU0MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU0MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTQyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NDIiIGJpbmRpbmc9InRuczpCaW5kaW5nNTQyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTQzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU0MyIgbmFtZT0iSW5wdXQ1NDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTQzIiBuYW1lPSJPdXRwdXQ1NDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU0MyIgdHlwZT0idG5zOlBvcnRUeXBlNTQzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU0MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU0MyIgYmluZGluZz0idG5zOkJpbmRpbmc1NDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTQ0IiBuYW1lPSJJbnB1dDU0NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NDQiIG5hbWU9Ik91dHB1dDU0NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTQ0IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTQ0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU0NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTQ0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU0NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU0NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU0NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NDUiIG5hbWU9IklucHV0NTQ1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU0NSIgbmFtZT0iT3V0cHV0NTQ1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NDUiIHR5cGU9InRuczpQb3J0VHlwZTU0NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU0NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTQ1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NDUiIGJpbmRpbmc9InRuczpCaW5kaW5nNTQ1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTQ2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQ2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU0NiIgbmFtZT0iSW5wdXQ1NDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTQ2IiBuYW1lPSJPdXRwdXQ1NDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU0NiIgdHlwZT0idG5zOlBvcnRUeXBlNTQ2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQ2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU0NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU0NiIgYmluZGluZz0idG5zOkJpbmRpbmc1NDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTQ3IiBuYW1lPSJJbnB1dDU0NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NDciIG5hbWU9Ik91dHB1dDU0NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTQ3IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTQ3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU0NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTQ3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU0NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU0OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU0OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NDgiIG5hbWU9IklucHV0NTQ4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU0OCIgbmFtZT0iT3V0cHV0NTQ4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NDgiIHR5cGU9InRuczpQb3J0VHlwZTU0OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU0OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTQ4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NDgiIGJpbmRpbmc9InRuczpCaW5kaW5nNTQ4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTQ5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQ5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU0OSIgbmFtZT0iSW5wdXQ1NDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTQ5IiBuYW1lPSJPdXRwdXQ1NDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU0OSIgdHlwZT0idG5zOlBvcnRUeXBlNTQ5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQ5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU0OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU0OSIgYmluZGluZz0idG5zOkJpbmRpbmc1NDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTUwIiBuYW1lPSJJbnB1dDU1MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NTAiIG5hbWU9Ik91dHB1dDU1MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTUwIiB0eXBlPSJ0bnM6UG9ydFR5cGU1NTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTUwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU1MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTUwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzU1MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU1MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU1MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NTEiIG5hbWU9IklucHV0NTUxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU1MSIgbmFtZT0iT3V0cHV0NTUxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NTEiIHR5cGU9InRuczpQb3J0VHlwZTU1MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU1MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTUxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NTEiIGJpbmRpbmc9InRuczpCaW5kaW5nNTUxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTUyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTUyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU1MiIgbmFtZT0iSW5wdXQ1NTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTUyIiBuYW1lPSJPdXRwdXQ1NTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU1MiIgdHlwZT0idG5zOlBvcnRUeXBlNTUyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTUyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU1MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU1MiIgYmluZGluZz0idG5zOkJpbmRpbmc1NTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTUzIiBuYW1lPSJJbnB1dDU1MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NTMiIG5hbWU9Ik91dHB1dDU1MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTUzIiB0eXBlPSJ0bnM6UG9ydFR5cGU1NTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTUzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU1MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTUzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzU1MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU1NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU1NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NTQiIG5hbWU9IklucHV0NTU0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU1NCIgbmFtZT0iT3V0cHV0NTU0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NTQiIHR5cGU9InRuczpQb3J0VHlwZTU1NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU1NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTU0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NTQiIGJpbmRpbmc9InRuczpCaW5kaW5nNTU0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTU1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTU1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU1NSIgbmFtZT0iSW5wdXQ1NTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTU1IiBuYW1lPSJPdXRwdXQ1NTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU1NSIgdHlwZT0idG5zOlBvcnRUeXBlNTU1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTU1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU1NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU1NSIgYmluZGluZz0idG5zOkJpbmRpbmc1NTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTU2IiBuYW1lPSJJbnB1dDU1NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NTYiIG5hbWU9Ik91dHB1dDU1NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTU2IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTU2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU1NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTU2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU1NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU1NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU1NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NTciIG5hbWU9IklucHV0NTU3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU1NyIgbmFtZT0iT3V0cHV0NTU3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NTciIHR5cGU9InRuczpQb3J0VHlwZTU1NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU1NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTU3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NTciIGJpbmRpbmc9InRuczpCaW5kaW5nNTU3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTU4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTU4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU1OCIgbmFtZT0iSW5wdXQ1NTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTU4IiBuYW1lPSJPdXRwdXQ1NTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU1OCIgdHlwZT0idG5zOlBvcnRUeXBlNTU4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTU4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU1OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU1OCIgYmluZGluZz0idG5zOkJpbmRpbmc1NTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTU5IiBuYW1lPSJJbnB1dDU1OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NTkiIG5hbWU9Ik91dHB1dDU1OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTU5IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTU5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU1OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTU5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU1OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU2MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NjAiIG5hbWU9IklucHV0NTYwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU2MCIgbmFtZT0iT3V0cHV0NTYwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NjAiIHR5cGU9InRuczpQb3J0VHlwZTU2MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTYwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NjAiIGJpbmRpbmc9InRuczpCaW5kaW5nNTYwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTYxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTYxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU2MSIgbmFtZT0iSW5wdXQ1NjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTYxIiBuYW1lPSJPdXRwdXQ1NjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU2MSIgdHlwZT0idG5zOlBvcnRUeXBlNTYxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTYxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU2MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU2MSIgYmluZGluZz0idG5zOkJpbmRpbmc1NjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTYyIiBuYW1lPSJJbnB1dDU2MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NjIiIG5hbWU9Ik91dHB1dDU2MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTYyIiB0eXBlPSJ0bnM6UG9ydFR5cGU1NjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTYyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU2MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTYyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzU2MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU2MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NjMiIG5hbWU9IklucHV0NTYzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU2MyIgbmFtZT0iT3V0cHV0NTYzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NjMiIHR5cGU9InRuczpQb3J0VHlwZTU2MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTYzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NjMiIGJpbmRpbmc9InRuczpCaW5kaW5nNTYzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTY0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTY0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU2NCIgbmFtZT0iSW5wdXQ1NjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTY0IiBuYW1lPSJPdXRwdXQ1NjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU2NCIgdHlwZT0idG5zOlBvcnRUeXBlNTY0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTY0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU2NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU2NCIgYmluZGluZz0idG5zOkJpbmRpbmc1NjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTY1IiBuYW1lPSJJbnB1dDU2NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NjUiIG5hbWU9Ik91dHB1dDU2NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTY1IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTY1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU2NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTY1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU2NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU2NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NjYiIG5hbWU9IklucHV0NTY2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU2NiIgbmFtZT0iT3V0cHV0NTY2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NjYiIHR5cGU9InRuczpQb3J0VHlwZTU2NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTY2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NjYiIGJpbmRpbmc9InRuczpCaW5kaW5nNTY2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTY3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTY3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU2NyIgbmFtZT0iSW5wdXQ1NjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTY3IiBuYW1lPSJPdXRwdXQ1NjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU2NyIgdHlwZT0idG5zOlBvcnRUeXBlNTY3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTY3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU2NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU2NyIgYmluZGluZz0idG5zOkJpbmRpbmc1NjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTY4IiBuYW1lPSJJbnB1dDU2OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NjgiIG5hbWU9Ik91dHB1dDU2OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTY4IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTY4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU2OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTY4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU2OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU2OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NjkiIG5hbWU9IklucHV0NTY5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU2OSIgbmFtZT0iT3V0cHV0NTY5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NjkiIHR5cGU9InRuczpQb3J0VHlwZTU2OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTY5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NjkiIGJpbmRpbmc9InRuczpCaW5kaW5nNTY5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTcwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTcwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU3MCIgbmFtZT0iSW5wdXQ1NzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTcwIiBuYW1lPSJPdXRwdXQ1NzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU3MCIgdHlwZT0idG5zOlBvcnRUeXBlNTcwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTcwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU3MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU3MCIgYmluZGluZz0idG5zOkJpbmRpbmc1NzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTcxIiBuYW1lPSJJbnB1dDU3MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NzEiIG5hbWU9Ik91dHB1dDU3MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTcxIiB0eXBlPSJ0bnM6UG9ydFR5cGU1NzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTcxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU3MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTcxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzU3MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU3MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU3MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NzIiIG5hbWU9IklucHV0NTcyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU3MiIgbmFtZT0iT3V0cHV0NTcyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NzIiIHR5cGU9InRuczpQb3J0VHlwZTU3MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU3MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTcyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NzIiIGJpbmRpbmc9InRuczpCaW5kaW5nNTcyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTczIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTczIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU3MyIgbmFtZT0iSW5wdXQ1NzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTczIiBuYW1lPSJPdXRwdXQ1NzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU3MyIgdHlwZT0idG5zOlBvcnRUeXBlNTczIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTczIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU3MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU3MyIgYmluZGluZz0idG5zOkJpbmRpbmc1NzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTc0IiBuYW1lPSJJbnB1dDU3NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NzQiIG5hbWU9Ik91dHB1dDU3NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTc0IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTc0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU3NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTc0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU3NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU3NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU3NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NzUiIG5hbWU9IklucHV0NTc1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU3NSIgbmFtZT0iT3V0cHV0NTc1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NzUiIHR5cGU9InRuczpQb3J0VHlwZTU3NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU3NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTc1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NzUiIGJpbmRpbmc9InRuczpCaW5kaW5nNTc1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTc2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTc2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU3NiIgbmFtZT0iSW5wdXQ1NzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTc2IiBuYW1lPSJPdXRwdXQ1NzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU3NiIgdHlwZT0idG5zOlBvcnRUeXBlNTc2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTc2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU3NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU3NiIgYmluZGluZz0idG5zOkJpbmRpbmc1NzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTc3IiBuYW1lPSJJbnB1dDU3NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NzciIG5hbWU9Ik91dHB1dDU3NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTc3IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTc3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU3NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTc3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU3NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1NzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU3OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU3OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NzgiIG5hbWU9IklucHV0NTc4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU3OCIgbmFtZT0iT3V0cHV0NTc4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1NzgiIHR5cGU9InRuczpQb3J0VHlwZTU3OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU3OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241NzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTc4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NzgiIGJpbmRpbmc9InRuczpCaW5kaW5nNTc4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTc5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTc5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU3OSIgbmFtZT0iSW5wdXQ1NzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTc5IiBuYW1lPSJPdXRwdXQ1NzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU3OSIgdHlwZT0idG5zOlBvcnRUeXBlNTc5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTc5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU3OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1NzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU3OSIgYmluZGluZz0idG5zOkJpbmRpbmc1NzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1ODAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241ODAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTgwIiBuYW1lPSJJbnB1dDU4MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1ODAiIG5hbWU9Ik91dHB1dDU4MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTgwIiB0eXBlPSJ0bnM6UG9ydFR5cGU1ODAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241ODAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTgwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU4MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTgwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzU4MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1ODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1ODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1ODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU4MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU4MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1ODEiIG5hbWU9IklucHV0NTgxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU4MSIgbmFtZT0iT3V0cHV0NTgxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1ODEiIHR5cGU9InRuczpQb3J0VHlwZTU4MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU4MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241ODEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTgxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1ODEiIGJpbmRpbmc9InRuczpCaW5kaW5nNTgxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1ODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTgyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTgyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU4MiIgbmFtZT0iSW5wdXQ1ODIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTgyIiBuYW1lPSJPdXRwdXQ1ODIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU4MiIgdHlwZT0idG5zOlBvcnRUeXBlNTgyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTgyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU4MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1ODIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU4MiIgYmluZGluZz0idG5zOkJpbmRpbmc1ODIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1ODMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241ODMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTgzIiBuYW1lPSJJbnB1dDU4MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1ODMiIG5hbWU9Ik91dHB1dDU4MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTgzIiB0eXBlPSJ0bnM6UG9ydFR5cGU1ODMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241ODMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTgzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU4MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTgzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzU4MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1ODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1ODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1ODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU4NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU4NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1ODQiIG5hbWU9IklucHV0NTg0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU4NCIgbmFtZT0iT3V0cHV0NTg0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1ODQiIHR5cGU9InRuczpQb3J0VHlwZTU4NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU4NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241ODQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTg0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1ODQiIGJpbmRpbmc9InRuczpCaW5kaW5nNTg0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1ODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTg1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTg1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU4NSIgbmFtZT0iSW5wdXQ1ODUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTg1IiBuYW1lPSJPdXRwdXQ1ODUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU4NSIgdHlwZT0idG5zOlBvcnRUeXBlNTg1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTg1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU4NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1ODUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU4NSIgYmluZGluZz0idG5zOkJpbmRpbmc1ODUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1ODYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241ODYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTg2IiBuYW1lPSJJbnB1dDU4NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1ODYiIG5hbWU9Ik91dHB1dDU4NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTg2IiB0eXBlPSJ0bnM6UG9ydFR5cGU1ODYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241ODYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTg2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU4NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTg2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU4NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1ODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1ODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1ODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU4NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU4NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1ODciIG5hbWU9IklucHV0NTg3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU4NyIgbmFtZT0iT3V0cHV0NTg3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1ODciIHR5cGU9InRuczpQb3J0VHlwZTU4NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU4NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241ODciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTg3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1ODciIGJpbmRpbmc9InRuczpCaW5kaW5nNTg3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1ODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTg4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTg4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU4OCIgbmFtZT0iSW5wdXQ1ODgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTg4IiBuYW1lPSJPdXRwdXQ1ODgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU4OCIgdHlwZT0idG5zOlBvcnRUeXBlNTg4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTg4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU4OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1ODgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU4OCIgYmluZGluZz0idG5zOkJpbmRpbmc1ODgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1ODkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241ODkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTg5IiBuYW1lPSJJbnB1dDU4OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1ODkiIG5hbWU9Ik91dHB1dDU4OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTg5IiB0eXBlPSJ0bnM6UG9ydFR5cGU1ODkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241ODkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTg5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU4OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTg5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU4OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1OTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1OTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1OTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU5MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1OTAiIG5hbWU9IklucHV0NTkwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU5MCIgbmFtZT0iT3V0cHV0NTkwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1OTAiIHR5cGU9InRuczpQb3J0VHlwZTU5MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241OTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTkwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1OTAiIGJpbmRpbmc9InRuczpCaW5kaW5nNTkwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1OTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTkxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTkxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU5MSIgbmFtZT0iSW5wdXQ1OTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTkxIiBuYW1lPSJPdXRwdXQ1OTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU5MSIgdHlwZT0idG5zOlBvcnRUeXBlNTkxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTkxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU5MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1OTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU5MSIgYmluZGluZz0idG5zOkJpbmRpbmc1OTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1OTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTkyIiBuYW1lPSJJbnB1dDU5MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1OTIiIG5hbWU9Ik91dHB1dDU5MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTkyIiB0eXBlPSJ0bnM6UG9ydFR5cGU1OTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTkyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU5MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTkyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzU5MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1OTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1OTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1OTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU5MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1OTMiIG5hbWU9IklucHV0NTkzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU5MyIgbmFtZT0iT3V0cHV0NTkzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1OTMiIHR5cGU9InRuczpQb3J0VHlwZTU5MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241OTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTkzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1OTMiIGJpbmRpbmc9InRuczpCaW5kaW5nNTkzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1OTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTk0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTk0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU5NCIgbmFtZT0iSW5wdXQ1OTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTk0IiBuYW1lPSJPdXRwdXQ1OTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU5NCIgdHlwZT0idG5zOlBvcnRUeXBlNTk0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTk0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU5NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1OTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU5NCIgYmluZGluZz0idG5zOkJpbmRpbmc1OTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1OTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTk1IiBuYW1lPSJJbnB1dDU5NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1OTUiIG5hbWU9Ik91dHB1dDU5NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTk1IiB0eXBlPSJ0bnM6UG9ydFR5cGU1OTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTk1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU5NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTk1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU5NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1OTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1OTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1OTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU5NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1OTYiIG5hbWU9IklucHV0NTk2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU5NiIgbmFtZT0iT3V0cHV0NTk2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1OTYiIHR5cGU9InRuczpQb3J0VHlwZTU5NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241OTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTk2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1OTYiIGJpbmRpbmc9InRuczpCaW5kaW5nNTk2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTU5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1OTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTk3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTk3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU5NyIgbmFtZT0iSW5wdXQ1OTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNTk3IiBuYW1lPSJPdXRwdXQ1OTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU5NyIgdHlwZT0idG5zOlBvcnRUeXBlNTk3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTk3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU5NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1OTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU5NyIgYmluZGluZz0idG5zOkJpbmRpbmc1OTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNTk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDU5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1OTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNTk4IiBuYW1lPSJJbnB1dDU5OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1OTgiIG5hbWU9Ik91dHB1dDU5OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTk4IiB0eXBlPSJ0bnM6UG9ydFR5cGU1OTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTk4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU5OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NTk4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU5OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1OTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ1OTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1OTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTU5OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1OTkiIG5hbWU9IklucHV0NTk5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU5OSIgbmFtZT0iT3V0cHV0NTk5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc1OTkiIHR5cGU9InRuczpQb3J0VHlwZTU5OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb241OTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTk5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1OTkiIGJpbmRpbmc9InRuczpCaW5kaW5nNTk5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYwMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjAwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjAwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYwMCIgbmFtZT0iSW5wdXQ2MDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjAwIiBuYW1lPSJPdXRwdXQ2MDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYwMCIgdHlwZT0idG5zOlBvcnRUeXBlNjAwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjAwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYwMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYwMCIgYmluZGluZz0idG5zOkJpbmRpbmc2MDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjAxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjAxIiBuYW1lPSJJbnB1dDYwMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MDEiIG5hbWU9Ik91dHB1dDYwMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjAxIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjAxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYwMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjAxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzYwMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYwMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYwMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MDIiIG5hbWU9IklucHV0NjAyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYwMiIgbmFtZT0iT3V0cHV0NjAyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MDIiIHR5cGU9InRuczpQb3J0VHlwZTYwMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYwMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjAyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MDIiIGJpbmRpbmc9InRuczpCaW5kaW5nNjAyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYwMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjAzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjAzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYwMyIgbmFtZT0iSW5wdXQ2MDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjAzIiBuYW1lPSJPdXRwdXQ2MDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYwMyIgdHlwZT0idG5zOlBvcnRUeXBlNjAzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjAzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYwMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYwMyIgYmluZGluZz0idG5zOkJpbmRpbmc2MDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjA0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjA0IiBuYW1lPSJJbnB1dDYwNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MDQiIG5hbWU9Ik91dHB1dDYwNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjA0IiB0eXBlPSJ0bnM6UG9ydFR5cGU2MDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjA0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYwNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjA0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzYwNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYwNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYwNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MDUiIG5hbWU9IklucHV0NjA1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYwNSIgbmFtZT0iT3V0cHV0NjA1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MDUiIHR5cGU9InRuczpQb3J0VHlwZTYwNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYwNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjA1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MDUiIGJpbmRpbmc9InRuczpCaW5kaW5nNjA1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYwNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjA2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjA2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYwNiIgbmFtZT0iSW5wdXQ2MDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjA2IiBuYW1lPSJPdXRwdXQ2MDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYwNiIgdHlwZT0idG5zOlBvcnRUeXBlNjA2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjA2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYwNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYwNiIgYmluZGluZz0idG5zOkJpbmRpbmc2MDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjA3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjA3IiBuYW1lPSJJbnB1dDYwNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MDciIG5hbWU9Ik91dHB1dDYwNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjA3IiB0eXBlPSJ0bnM6UG9ydFR5cGU2MDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjA3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYwNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjA3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzYwNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYwOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYwOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MDgiIG5hbWU9IklucHV0NjA4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYwOCIgbmFtZT0iT3V0cHV0NjA4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MDgiIHR5cGU9InRuczpQb3J0VHlwZTYwOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYwOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjA4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MDgiIGJpbmRpbmc9InRuczpCaW5kaW5nNjA4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYwOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjA5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjA5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYwOSIgbmFtZT0iSW5wdXQ2MDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjA5IiBuYW1lPSJPdXRwdXQ2MDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYwOSIgdHlwZT0idG5zOlBvcnRUeXBlNjA5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjA5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYwOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYwOSIgYmluZGluZz0idG5zOkJpbmRpbmc2MDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjEwIiBuYW1lPSJJbnB1dDYxMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MTAiIG5hbWU9Ik91dHB1dDYxMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjEwIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjEwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYxMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjEwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzYxMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYxMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYxMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MTEiIG5hbWU9IklucHV0NjExIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYxMSIgbmFtZT0iT3V0cHV0NjExIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MTEiIHR5cGU9InRuczpQb3J0VHlwZTYxMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYxMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjExIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MTEiIGJpbmRpbmc9InRuczpCaW5kaW5nNjExIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYxMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjEyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjEyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYxMiIgbmFtZT0iSW5wdXQ2MTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjEyIiBuYW1lPSJPdXRwdXQ2MTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYxMiIgdHlwZT0idG5zOlBvcnRUeXBlNjEyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjEyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYxMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYxMiIgYmluZGluZz0idG5zOkJpbmRpbmc2MTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjEzIiBuYW1lPSJJbnB1dDYxMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MTMiIG5hbWU9Ik91dHB1dDYxMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjEzIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjEzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYxMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjEzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzYxMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYxNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYxNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MTQiIG5hbWU9IklucHV0NjE0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYxNCIgbmFtZT0iT3V0cHV0NjE0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MTQiIHR5cGU9InRuczpQb3J0VHlwZTYxNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYxNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjE0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MTQiIGJpbmRpbmc9InRuczpCaW5kaW5nNjE0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYxNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjE1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjE1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYxNSIgbmFtZT0iSW5wdXQ2MTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjE1IiBuYW1lPSJPdXRwdXQ2MTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYxNSIgdHlwZT0idG5zOlBvcnRUeXBlNjE1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjE1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYxNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYxNSIgYmluZGluZz0idG5zOkJpbmRpbmc2MTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjE2IiBuYW1lPSJJbnB1dDYxNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MTYiIG5hbWU9Ik91dHB1dDYxNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjE2IiB0eXBlPSJ0bnM6UG9ydFR5cGU2MTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjE2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYxNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjE2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzYxNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYxNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYxNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MTciIG5hbWU9IklucHV0NjE3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYxNyIgbmFtZT0iT3V0cHV0NjE3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MTciIHR5cGU9InRuczpQb3J0VHlwZTYxNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYxNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjE3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MTciIGJpbmRpbmc9InRuczpCaW5kaW5nNjE3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYxOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjE4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjE4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYxOCIgbmFtZT0iSW5wdXQ2MTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjE4IiBuYW1lPSJPdXRwdXQ2MTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYxOCIgdHlwZT0idG5zOlBvcnRUeXBlNjE4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjE4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYxOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYxOCIgYmluZGluZz0idG5zOkJpbmRpbmc2MTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjE5IiBuYW1lPSJJbnB1dDYxOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MTkiIG5hbWU9Ik91dHB1dDYxOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjE5IiB0eXBlPSJ0bnM6UG9ydFR5cGU2MTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjE5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYxOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjE5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzYxOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYyMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MjAiIG5hbWU9IklucHV0NjIwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYyMCIgbmFtZT0iT3V0cHV0NjIwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MjAiIHR5cGU9InRuczpQb3J0VHlwZTYyMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjIwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MjAiIGJpbmRpbmc9InRuczpCaW5kaW5nNjIwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjIxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjIxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYyMSIgbmFtZT0iSW5wdXQ2MjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjIxIiBuYW1lPSJPdXRwdXQ2MjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYyMSIgdHlwZT0idG5zOlBvcnRUeXBlNjIxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjIxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYyMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYyMSIgYmluZGluZz0idG5zOkJpbmRpbmc2MjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjIyIiBuYW1lPSJJbnB1dDYyMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MjIiIG5hbWU9Ik91dHB1dDYyMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjIyIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjIyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYyMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjIyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzYyMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYyMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MjMiIG5hbWU9IklucHV0NjIzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYyMyIgbmFtZT0iT3V0cHV0NjIzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MjMiIHR5cGU9InRuczpQb3J0VHlwZTYyMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjIzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MjMiIGJpbmRpbmc9InRuczpCaW5kaW5nNjIzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjI0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjI0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYyNCIgbmFtZT0iSW5wdXQ2MjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjI0IiBuYW1lPSJPdXRwdXQ2MjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYyNCIgdHlwZT0idG5zOlBvcnRUeXBlNjI0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjI0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYyNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYyNCIgYmluZGluZz0idG5zOkJpbmRpbmc2MjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjI1IiBuYW1lPSJJbnB1dDYyNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MjUiIG5hbWU9Ik91dHB1dDYyNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjI1IiB0eXBlPSJ0bnM6UG9ydFR5cGU2MjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjI1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYyNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjI1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzYyNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYyNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MjYiIG5hbWU9IklucHV0NjI2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYyNiIgbmFtZT0iT3V0cHV0NjI2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MjYiIHR5cGU9InRuczpQb3J0VHlwZTYyNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjI2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MjYiIGJpbmRpbmc9InRuczpCaW5kaW5nNjI2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjI3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjI3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYyNyIgbmFtZT0iSW5wdXQ2MjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjI3IiBuYW1lPSJPdXRwdXQ2MjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYyNyIgdHlwZT0idG5zOlBvcnRUeXBlNjI3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjI3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYyNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYyNyIgYmluZGluZz0idG5zOkJpbmRpbmc2MjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjI4IiBuYW1lPSJJbnB1dDYyOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MjgiIG5hbWU9Ik91dHB1dDYyOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjI4IiB0eXBlPSJ0bnM6UG9ydFR5cGU2MjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjI4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYyOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjI4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzYyOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYyOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MjkiIG5hbWU9IklucHV0NjI5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYyOSIgbmFtZT0iT3V0cHV0NjI5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MjkiIHR5cGU9InRuczpQb3J0VHlwZTYyOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjI5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MjkiIGJpbmRpbmc9InRuczpCaW5kaW5nNjI5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjMwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjMwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYzMCIgbmFtZT0iSW5wdXQ2MzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjMwIiBuYW1lPSJPdXRwdXQ2MzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYzMCIgdHlwZT0idG5zOlBvcnRUeXBlNjMwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjMwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYzMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYzMCIgYmluZGluZz0idG5zOkJpbmRpbmc2MzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjMxIiBuYW1lPSJJbnB1dDYzMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MzEiIG5hbWU9Ik91dHB1dDYzMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjMxIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjMxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYzMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjMxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzYzMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYzMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYzMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MzIiIG5hbWU9IklucHV0NjMyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYzMiIgbmFtZT0iT3V0cHV0NjMyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MzIiIHR5cGU9InRuczpQb3J0VHlwZTYzMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYzMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjMyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MzIiIGJpbmRpbmc9InRuczpCaW5kaW5nNjMyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjMzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjMzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYzMyIgbmFtZT0iSW5wdXQ2MzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjMzIiBuYW1lPSJPdXRwdXQ2MzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYzMyIgdHlwZT0idG5zOlBvcnRUeXBlNjMzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjMzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYzMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYzMyIgYmluZGluZz0idG5zOkJpbmRpbmc2MzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjM0IiBuYW1lPSJJbnB1dDYzNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MzQiIG5hbWU9Ik91dHB1dDYzNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjM0IiB0eXBlPSJ0bnM6UG9ydFR5cGU2MzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjM0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYzNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjM0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzYzNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYzNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYzNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MzUiIG5hbWU9IklucHV0NjM1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYzNSIgbmFtZT0iT3V0cHV0NjM1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MzUiIHR5cGU9InRuczpQb3J0VHlwZTYzNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYzNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjM1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MzUiIGJpbmRpbmc9InRuczpCaW5kaW5nNjM1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjM2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjM2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYzNiIgbmFtZT0iSW5wdXQ2MzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjM2IiBuYW1lPSJPdXRwdXQ2MzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYzNiIgdHlwZT0idG5zOlBvcnRUeXBlNjM2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjM2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYzNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYzNiIgYmluZGluZz0idG5zOkJpbmRpbmc2MzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjM3IiBuYW1lPSJJbnB1dDYzNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MzciIG5hbWU9Ik91dHB1dDYzNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjM3IiB0eXBlPSJ0bnM6UG9ydFR5cGU2MzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjM3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYzNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjM3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzYzNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2MzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYzOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYzOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MzgiIG5hbWU9IklucHV0NjM4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYzOCIgbmFtZT0iT3V0cHV0NjM4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2MzgiIHR5cGU9InRuczpQb3J0VHlwZTYzOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYzOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242MzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjM4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MzgiIGJpbmRpbmc9InRuczpCaW5kaW5nNjM4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTYzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjM5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjM5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYzOSIgbmFtZT0iSW5wdXQ2MzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjM5IiBuYW1lPSJPdXRwdXQ2MzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYzOSIgdHlwZT0idG5zOlBvcnRUeXBlNjM5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjM5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYzOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2MzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYzOSIgYmluZGluZz0idG5zOkJpbmRpbmc2MzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjQwIiBuYW1lPSJJbnB1dDY0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NDAiIG5hbWU9Ik91dHB1dDY0MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjQwIiB0eXBlPSJ0bnM6UG9ydFR5cGU2NDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjQwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY0MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjQwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzY0MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY0MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY0MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NDEiIG5hbWU9IklucHV0NjQxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY0MSIgbmFtZT0iT3V0cHV0NjQxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NDEiIHR5cGU9InRuczpQb3J0VHlwZTY0MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY0MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjQxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NDEiIGJpbmRpbmc9InRuczpCaW5kaW5nNjQxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjQyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjQyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY0MiIgbmFtZT0iSW5wdXQ2NDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjQyIiBuYW1lPSJPdXRwdXQ2NDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY0MiIgdHlwZT0idG5zOlBvcnRUeXBlNjQyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjQyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY0MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY0MiIgYmluZGluZz0idG5zOkJpbmRpbmc2NDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjQzIiBuYW1lPSJJbnB1dDY0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NDMiIG5hbWU9Ik91dHB1dDY0MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjQzIiB0eXBlPSJ0bnM6UG9ydFR5cGU2NDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjQzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY0MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjQzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzY0MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY0NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY0NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NDQiIG5hbWU9IklucHV0NjQ0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY0NCIgbmFtZT0iT3V0cHV0NjQ0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NDQiIHR5cGU9InRuczpQb3J0VHlwZTY0NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY0NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjQ0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NDQiIGJpbmRpbmc9InRuczpCaW5kaW5nNjQ0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjQ1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjQ1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY0NSIgbmFtZT0iSW5wdXQ2NDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjQ1IiBuYW1lPSJPdXRwdXQ2NDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY0NSIgdHlwZT0idG5zOlBvcnRUeXBlNjQ1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjQ1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY0NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY0NSIgYmluZGluZz0idG5zOkJpbmRpbmc2NDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjQ2IiBuYW1lPSJJbnB1dDY0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NDYiIG5hbWU9Ik91dHB1dDY0NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjQ2IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjQ2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY0NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjQ2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY0NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY0NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY0NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NDciIG5hbWU9IklucHV0NjQ3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY0NyIgbmFtZT0iT3V0cHV0NjQ3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NDciIHR5cGU9InRuczpQb3J0VHlwZTY0NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY0NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjQ3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NDciIGJpbmRpbmc9InRuczpCaW5kaW5nNjQ3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjQ4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjQ4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY0OCIgbmFtZT0iSW5wdXQ2NDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjQ4IiBuYW1lPSJPdXRwdXQ2NDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY0OCIgdHlwZT0idG5zOlBvcnRUeXBlNjQ4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjQ4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY0OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY0OCIgYmluZGluZz0idG5zOkJpbmRpbmc2NDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjQ5IiBuYW1lPSJJbnB1dDY0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NDkiIG5hbWU9Ik91dHB1dDY0OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjQ5IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjQ5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY0OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjQ5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY0OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY1MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NTAiIG5hbWU9IklucHV0NjUwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY1MCIgbmFtZT0iT3V0cHV0NjUwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NTAiIHR5cGU9InRuczpQb3J0VHlwZTY1MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjUwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NTAiIGJpbmRpbmc9InRuczpCaW5kaW5nNjUwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjUxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjUxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY1MSIgbmFtZT0iSW5wdXQ2NTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjUxIiBuYW1lPSJPdXRwdXQ2NTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY1MSIgdHlwZT0idG5zOlBvcnRUeXBlNjUxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjUxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY1MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY1MSIgYmluZGluZz0idG5zOkJpbmRpbmc2NTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjUyIiBuYW1lPSJJbnB1dDY1MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NTIiIG5hbWU9Ik91dHB1dDY1MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjUyIiB0eXBlPSJ0bnM6UG9ydFR5cGU2NTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjUyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY1MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjUyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzY1MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY1MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NTMiIG5hbWU9IklucHV0NjUzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY1MyIgbmFtZT0iT3V0cHV0NjUzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NTMiIHR5cGU9InRuczpQb3J0VHlwZTY1MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjUzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NTMiIGJpbmRpbmc9InRuczpCaW5kaW5nNjUzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjU0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjU0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY1NCIgbmFtZT0iSW5wdXQ2NTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjU0IiBuYW1lPSJPdXRwdXQ2NTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY1NCIgdHlwZT0idG5zOlBvcnRUeXBlNjU0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjU0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY1NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY1NCIgYmluZGluZz0idG5zOkJpbmRpbmc2NTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjU1IiBuYW1lPSJJbnB1dDY1NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NTUiIG5hbWU9Ik91dHB1dDY1NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjU1IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjU1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY1NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjU1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY1NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY1NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NTYiIG5hbWU9IklucHV0NjU2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY1NiIgbmFtZT0iT3V0cHV0NjU2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NTYiIHR5cGU9InRuczpQb3J0VHlwZTY1NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjU2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NTYiIGJpbmRpbmc9InRuczpCaW5kaW5nNjU2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjU3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjU3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY1NyIgbmFtZT0iSW5wdXQ2NTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjU3IiBuYW1lPSJPdXRwdXQ2NTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY1NyIgdHlwZT0idG5zOlBvcnRUeXBlNjU3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjU3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY1NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY1NyIgYmluZGluZz0idG5zOkJpbmRpbmc2NTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjU4IiBuYW1lPSJJbnB1dDY1OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NTgiIG5hbWU9Ik91dHB1dDY1OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjU4IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjU4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY1OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjU4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY1OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY1OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NTkiIG5hbWU9IklucHV0NjU5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY1OSIgbmFtZT0iT3V0cHV0NjU5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NTkiIHR5cGU9InRuczpQb3J0VHlwZTY1OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjU5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NTkiIGJpbmRpbmc9InRuczpCaW5kaW5nNjU5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjYwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjYwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY2MCIgbmFtZT0iSW5wdXQ2NjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjYwIiBuYW1lPSJPdXRwdXQ2NjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY2MCIgdHlwZT0idG5zOlBvcnRUeXBlNjYwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjYwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY2MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY2MCIgYmluZGluZz0idG5zOkJpbmRpbmc2NjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjYxIiBuYW1lPSJJbnB1dDY2MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NjEiIG5hbWU9Ik91dHB1dDY2MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjYxIiB0eXBlPSJ0bnM6UG9ydFR5cGU2NjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjYxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY2MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjYxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzY2MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY2MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY2MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NjIiIG5hbWU9IklucHV0NjYyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY2MiIgbmFtZT0iT3V0cHV0NjYyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NjIiIHR5cGU9InRuczpQb3J0VHlwZTY2MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY2MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjYyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NjIiIGJpbmRpbmc9InRuczpCaW5kaW5nNjYyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjYzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjYzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY2MyIgbmFtZT0iSW5wdXQ2NjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjYzIiBuYW1lPSJPdXRwdXQ2NjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY2MyIgdHlwZT0idG5zOlBvcnRUeXBlNjYzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjYzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY2MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY2MyIgYmluZGluZz0idG5zOkJpbmRpbmc2NjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjY0IiBuYW1lPSJJbnB1dDY2NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NjQiIG5hbWU9Ik91dHB1dDY2NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjY0IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjY0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY2NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjY0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY2NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY2NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY2NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NjUiIG5hbWU9IklucHV0NjY1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY2NSIgbmFtZT0iT3V0cHV0NjY1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NjUiIHR5cGU9InRuczpQb3J0VHlwZTY2NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY2NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjY1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NjUiIGJpbmRpbmc9InRuczpCaW5kaW5nNjY1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjY2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjY2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY2NiIgbmFtZT0iSW5wdXQ2NjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjY2IiBuYW1lPSJPdXRwdXQ2NjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY2NiIgdHlwZT0idG5zOlBvcnRUeXBlNjY2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjY2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY2NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY2NiIgYmluZGluZz0idG5zOkJpbmRpbmc2NjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjY3IiBuYW1lPSJJbnB1dDY2NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NjciIG5hbWU9Ik91dHB1dDY2NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjY3IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjY3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY2NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjY3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY2NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY2OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY2OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NjgiIG5hbWU9IklucHV0NjY4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY2OCIgbmFtZT0iT3V0cHV0NjY4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NjgiIHR5cGU9InRuczpQb3J0VHlwZTY2OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY2OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjY4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NjgiIGJpbmRpbmc9InRuczpCaW5kaW5nNjY4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjY5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjY5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY2OSIgbmFtZT0iSW5wdXQ2NjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjY5IiBuYW1lPSJPdXRwdXQ2NjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY2OSIgdHlwZT0idG5zOlBvcnRUeXBlNjY5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjY5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY2OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY2OSIgYmluZGluZz0idG5zOkJpbmRpbmc2NjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjcwIiBuYW1lPSJJbnB1dDY3MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NzAiIG5hbWU9Ik91dHB1dDY3MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjcwIiB0eXBlPSJ0bnM6UG9ydFR5cGU2NzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjcwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY3MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjcwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzY3MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY3MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY3MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NzEiIG5hbWU9IklucHV0NjcxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY3MSIgbmFtZT0iT3V0cHV0NjcxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NzEiIHR5cGU9InRuczpQb3J0VHlwZTY3MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY3MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjcxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NzEiIGJpbmRpbmc9InRuczpCaW5kaW5nNjcxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjcyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjcyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY3MiIgbmFtZT0iSW5wdXQ2NzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjcyIiBuYW1lPSJPdXRwdXQ2NzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY3MiIgdHlwZT0idG5zOlBvcnRUeXBlNjcyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjcyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY3MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY3MiIgYmluZGluZz0idG5zOkJpbmRpbmc2NzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjczIiBuYW1lPSJJbnB1dDY3MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NzMiIG5hbWU9Ik91dHB1dDY3MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjczIiB0eXBlPSJ0bnM6UG9ydFR5cGU2NzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjczIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY3MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjczIiBiaW5kaW5nPSJ0bnM6QmluZGluZzY3MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Njc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY3NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY3NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NzQiIG5hbWU9IklucHV0Njc0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY3NCIgbmFtZT0iT3V0cHV0Njc0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NzQiIHR5cGU9InRuczpQb3J0VHlwZTY3NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY3NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjc0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NzQiIGJpbmRpbmc9InRuczpCaW5kaW5nNjc0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjc1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjc1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY3NSIgbmFtZT0iSW5wdXQ2NzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjc1IiBuYW1lPSJPdXRwdXQ2NzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY3NSIgdHlwZT0idG5zOlBvcnRUeXBlNjc1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjc1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY3NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY3NSIgYmluZGluZz0idG5zOkJpbmRpbmc2NzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Njc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjc2IiBuYW1lPSJJbnB1dDY3NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NzYiIG5hbWU9Ik91dHB1dDY3NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjc2IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjc2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY3NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Njc2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY3NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2NzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Njc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY3NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY3NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NzciIG5hbWU9IklucHV0Njc3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY3NyIgbmFtZT0iT3V0cHV0Njc3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2NzciIHR5cGU9InRuczpQb3J0VHlwZTY3NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY3NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242NzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjc3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NzciIGJpbmRpbmc9InRuczpCaW5kaW5nNjc3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjc4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjc4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY3OCIgbmFtZT0iSW5wdXQ2NzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjc4IiBuYW1lPSJPdXRwdXQ2NzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY3OCIgdHlwZT0idG5zOlBvcnRUeXBlNjc4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjc4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY3OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2NzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY3OCIgYmluZGluZz0idG5zOkJpbmRpbmc2NzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Njc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjc5IiBuYW1lPSJJbnB1dDY3OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NzkiIG5hbWU9Ik91dHB1dDY3OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjc5IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjc5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY3OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Njc5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY3OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2ODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2ODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2ODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY4MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2ODAiIG5hbWU9IklucHV0NjgwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY4MCIgbmFtZT0iT3V0cHV0NjgwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2ODAiIHR5cGU9InRuczpQb3J0VHlwZTY4MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242ODAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjgwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2ODAiIGJpbmRpbmc9InRuczpCaW5kaW5nNjgwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2ODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjgxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjgxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY4MSIgbmFtZT0iSW5wdXQ2ODEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjgxIiBuYW1lPSJPdXRwdXQ2ODEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY4MSIgdHlwZT0idG5zOlBvcnRUeXBlNjgxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjgxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY4MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2ODEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY4MSIgYmluZGluZz0idG5zOkJpbmRpbmc2ODEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2ODIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242ODIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjgyIiBuYW1lPSJJbnB1dDY4MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2ODIiIG5hbWU9Ik91dHB1dDY4MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjgyIiB0eXBlPSJ0bnM6UG9ydFR5cGU2ODIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242ODIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjgyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY4MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjgyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzY4MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2ODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2ODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2ODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY4MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2ODMiIG5hbWU9IklucHV0NjgzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY4MyIgbmFtZT0iT3V0cHV0NjgzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2ODMiIHR5cGU9InRuczpQb3J0VHlwZTY4MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242ODMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjgzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2ODMiIGJpbmRpbmc9InRuczpCaW5kaW5nNjgzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2ODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjg0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjg0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY4NCIgbmFtZT0iSW5wdXQ2ODQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjg0IiBuYW1lPSJPdXRwdXQ2ODQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY4NCIgdHlwZT0idG5zOlBvcnRUeXBlNjg0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjg0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY4NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2ODQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY4NCIgYmluZGluZz0idG5zOkJpbmRpbmc2ODQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Njg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2ODUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242ODUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjg1IiBuYW1lPSJJbnB1dDY4NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2ODUiIG5hbWU9Ik91dHB1dDY4NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjg1IiB0eXBlPSJ0bnM6UG9ydFR5cGU2ODUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242ODUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjg1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY4NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Njg1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY4NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2ODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2ODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2ODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Njg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY4NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2ODYiIG5hbWU9IklucHV0Njg2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY4NiIgbmFtZT0iT3V0cHV0Njg2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2ODYiIHR5cGU9InRuczpQb3J0VHlwZTY4NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242ODYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjg2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2ODYiIGJpbmRpbmc9InRuczpCaW5kaW5nNjg2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2ODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjg3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjg3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY4NyIgbmFtZT0iSW5wdXQ2ODciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjg3IiBuYW1lPSJPdXRwdXQ2ODciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY4NyIgdHlwZT0idG5zOlBvcnRUeXBlNjg3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjg3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY4NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2ODciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY4NyIgYmluZGluZz0idG5zOkJpbmRpbmc2ODciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Njg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2ODgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242ODgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjg4IiBuYW1lPSJJbnB1dDY4OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2ODgiIG5hbWU9Ik91dHB1dDY4OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjg4IiB0eXBlPSJ0bnM6UG9ydFR5cGU2ODgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242ODgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjg4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY4OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Njg4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY4OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2ODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2ODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2ODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Njg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY4OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2ODkiIG5hbWU9IklucHV0Njg5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY4OSIgbmFtZT0iT3V0cHV0Njg5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2ODkiIHR5cGU9InRuczpQb3J0VHlwZTY4OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242ODkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjg5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2ODkiIGJpbmRpbmc9InRuczpCaW5kaW5nNjg5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2OTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjkwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjkwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY5MCIgbmFtZT0iSW5wdXQ2OTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjkwIiBuYW1lPSJPdXRwdXQ2OTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY5MCIgdHlwZT0idG5zOlBvcnRUeXBlNjkwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjkwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY5MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2OTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY5MCIgYmluZGluZz0idG5zOkJpbmRpbmc2OTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2OTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjkxIiBuYW1lPSJJbnB1dDY5MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2OTEiIG5hbWU9Ik91dHB1dDY5MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjkxIiB0eXBlPSJ0bnM6UG9ydFR5cGU2OTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjkxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY5MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NjkxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzY5MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2OTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2OTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2OTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY5MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY5MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2OTIiIG5hbWU9IklucHV0NjkyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY5MiIgbmFtZT0iT3V0cHV0NjkyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2OTIiIHR5cGU9InRuczpQb3J0VHlwZTY5MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY5MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242OTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjkyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2OTIiIGJpbmRpbmc9InRuczpCaW5kaW5nNjkyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2OTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjkzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjkzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY5MyIgbmFtZT0iSW5wdXQ2OTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjkzIiBuYW1lPSJPdXRwdXQ2OTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY5MyIgdHlwZT0idG5zOlBvcnRUeXBlNjkzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjkzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY5MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2OTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY5MyIgYmluZGluZz0idG5zOkJpbmRpbmc2OTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Njk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2OTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjk0IiBuYW1lPSJJbnB1dDY5NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2OTQiIG5hbWU9Ik91dHB1dDY5NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjk0IiB0eXBlPSJ0bnM6UG9ydFR5cGU2OTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjk0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY5NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Njk0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY5NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2OTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2OTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2OTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Njk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY5NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY5NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2OTUiIG5hbWU9IklucHV0Njk1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY5NSIgbmFtZT0iT3V0cHV0Njk1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2OTUiIHR5cGU9InRuczpQb3J0VHlwZTY5NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY5NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242OTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjk1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2OTUiIGJpbmRpbmc9InRuczpCaW5kaW5nNjk1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2OTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjk2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjk2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY5NiIgbmFtZT0iSW5wdXQ2OTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjk2IiBuYW1lPSJPdXRwdXQ2OTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY5NiIgdHlwZT0idG5zOlBvcnRUeXBlNjk2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjk2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY5NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2OTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY5NiIgYmluZGluZz0idG5zOkJpbmRpbmc2OTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNjk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Njk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDY5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2OTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNjk3IiBuYW1lPSJJbnB1dDY5NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2OTciIG5hbWU9Ik91dHB1dDY5NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjk3IiB0eXBlPSJ0bnM6UG9ydFR5cGU2OTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjk3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY5NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Njk3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY5NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2OTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2OTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2OTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Njk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTY5OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY5OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2OTgiIG5hbWU9IklucHV0Njk4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY5OCIgbmFtZT0iT3V0cHV0Njk4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2OTgiIHR5cGU9InRuczpQb3J0VHlwZTY5OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY5OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242OTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjk4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2OTgiIGJpbmRpbmc9InRuczpCaW5kaW5nNjk4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTY5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2OTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjk5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjk5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY5OSIgbmFtZT0iSW5wdXQ2OTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNjk5IiBuYW1lPSJPdXRwdXQ2OTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY5OSIgdHlwZT0idG5zOlBvcnRUeXBlNjk5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjk5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY5OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U2OTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY5OSIgYmluZGluZz0idG5zOkJpbmRpbmc2OTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzAwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzAwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzAwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcwMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzAwIiBuYW1lPSJJbnB1dDcwMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MDAiIG5hbWU9Ik91dHB1dDcwMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzAwIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzAwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcwMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzAwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzcwMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzAxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcwMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcwMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MDEiIG5hbWU9IklucHV0NzAxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcwMSIgbmFtZT0iT3V0cHV0NzAxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MDEiIHR5cGU9InRuczpQb3J0VHlwZTcwMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcwMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzAxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MDEiIGJpbmRpbmc9InRuczpCaW5kaW5nNzAxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcwMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcwMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcwMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzAyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzAyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcwMiIgbmFtZT0iSW5wdXQ3MDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzAyIiBuYW1lPSJPdXRwdXQ3MDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcwMiIgdHlwZT0idG5zOlBvcnRUeXBlNzAyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzAyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcwMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcwMiIgYmluZGluZz0idG5zOkJpbmRpbmc3MDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzAzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzAzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzAzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcwMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzAzIiBuYW1lPSJJbnB1dDcwMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MDMiIG5hbWU9Ik91dHB1dDcwMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzAzIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzAzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcwMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzAzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzcwMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzA0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcwNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcwNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MDQiIG5hbWU9IklucHV0NzA0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcwNCIgbmFtZT0iT3V0cHV0NzA0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MDQiIHR5cGU9InRuczpQb3J0VHlwZTcwNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcwNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzA0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MDQiIGJpbmRpbmc9InRuczpCaW5kaW5nNzA0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcwNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcwNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcwNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzA1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzA1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcwNSIgbmFtZT0iSW5wdXQ3MDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzA1IiBuYW1lPSJPdXRwdXQ3MDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcwNSIgdHlwZT0idG5zOlBvcnRUeXBlNzA1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzA1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcwNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcwNSIgYmluZGluZz0idG5zOkJpbmRpbmc3MDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzA2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzA2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzA2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcwNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzA2IiBuYW1lPSJJbnB1dDcwNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MDYiIG5hbWU9Ik91dHB1dDcwNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzA2IiB0eXBlPSJ0bnM6UG9ydFR5cGU3MDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzA2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcwNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzA2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzcwNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzA3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcwNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcwNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MDciIG5hbWU9IklucHV0NzA3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcwNyIgbmFtZT0iT3V0cHV0NzA3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MDciIHR5cGU9InRuczpQb3J0VHlwZTcwNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcwNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzA3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MDciIGJpbmRpbmc9InRuczpCaW5kaW5nNzA3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcwOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcwOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcwOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzA4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzA4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcwOCIgbmFtZT0iSW5wdXQ3MDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzA4IiBuYW1lPSJPdXRwdXQ3MDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcwOCIgdHlwZT0idG5zOlBvcnRUeXBlNzA4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzA4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcwOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcwOCIgYmluZGluZz0idG5zOkJpbmRpbmc3MDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzA5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzA5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzA5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcwOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzA5IiBuYW1lPSJJbnB1dDcwOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MDkiIG5hbWU9Ik91dHB1dDcwOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzA5IiB0eXBlPSJ0bnM6UG9ydFR5cGU3MDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzA5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcwOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzA5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzcwOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcxMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MTAiIG5hbWU9IklucHV0NzEwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcxMCIgbmFtZT0iT3V0cHV0NzEwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MTAiIHR5cGU9InRuczpQb3J0VHlwZTcxMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzEwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MTAiIGJpbmRpbmc9InRuczpCaW5kaW5nNzEwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcxMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcxMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcxMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzExIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzExIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcxMSIgbmFtZT0iSW5wdXQ3MTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzExIiBuYW1lPSJPdXRwdXQ3MTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcxMSIgdHlwZT0idG5zOlBvcnRUeXBlNzExIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzExIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcxMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcxMSIgYmluZGluZz0idG5zOkJpbmRpbmc3MTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcxMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzEyIiBuYW1lPSJJbnB1dDcxMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MTIiIG5hbWU9Ik91dHB1dDcxMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzEyIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzEyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcxMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzEyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzcxMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcxMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MTMiIG5hbWU9IklucHV0NzEzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcxMyIgbmFtZT0iT3V0cHV0NzEzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MTMiIHR5cGU9InRuczpQb3J0VHlwZTcxMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzEzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MTMiIGJpbmRpbmc9InRuczpCaW5kaW5nNzEzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcxNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcxNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcxNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzE0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzE0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcxNCIgbmFtZT0iSW5wdXQ3MTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzE0IiBuYW1lPSJPdXRwdXQ3MTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcxNCIgdHlwZT0idG5zOlBvcnRUeXBlNzE0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzE0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcxNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcxNCIgYmluZGluZz0idG5zOkJpbmRpbmc3MTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcxNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzE1IiBuYW1lPSJJbnB1dDcxNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MTUiIG5hbWU9Ik91dHB1dDcxNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzE1IiB0eXBlPSJ0bnM6UG9ydFR5cGU3MTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzE1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcxNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzE1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzcxNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcxNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MTYiIG5hbWU9IklucHV0NzE2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcxNiIgbmFtZT0iT3V0cHV0NzE2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MTYiIHR5cGU9InRuczpQb3J0VHlwZTcxNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzE2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MTYiIGJpbmRpbmc9InRuczpCaW5kaW5nNzE2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcxNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcxNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcxNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzE3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzE3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcxNyIgbmFtZT0iSW5wdXQ3MTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzE3IiBuYW1lPSJPdXRwdXQ3MTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcxNyIgdHlwZT0idG5zOlBvcnRUeXBlNzE3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzE3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcxNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcxNyIgYmluZGluZz0idG5zOkJpbmRpbmc3MTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcxOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzE4IiBuYW1lPSJJbnB1dDcxOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MTgiIG5hbWU9Ik91dHB1dDcxOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzE4IiB0eXBlPSJ0bnM6UG9ydFR5cGU3MTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzE4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcxOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzE4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzcxOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcxOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MTkiIG5hbWU9IklucHV0NzE5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcxOSIgbmFtZT0iT3V0cHV0NzE5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MTkiIHR5cGU9InRuczpQb3J0VHlwZTcxOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzE5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MTkiIGJpbmRpbmc9InRuczpCaW5kaW5nNzE5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzIwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzIwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcyMCIgbmFtZT0iSW5wdXQ3MjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzIwIiBuYW1lPSJPdXRwdXQ3MjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcyMCIgdHlwZT0idG5zOlBvcnRUeXBlNzIwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzIwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcyMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcyMCIgYmluZGluZz0idG5zOkJpbmRpbmc3MjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzIxIiBuYW1lPSJJbnB1dDcyMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MjEiIG5hbWU9Ik91dHB1dDcyMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzIxIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzIxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcyMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzIxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzcyMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcyMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcyMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MjIiIG5hbWU9IklucHV0NzIyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcyMiIgbmFtZT0iT3V0cHV0NzIyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MjIiIHR5cGU9InRuczpQb3J0VHlwZTcyMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcyMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzIyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MjIiIGJpbmRpbmc9InRuczpCaW5kaW5nNzIyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzIzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzIzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcyMyIgbmFtZT0iSW5wdXQ3MjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzIzIiBuYW1lPSJPdXRwdXQ3MjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcyMyIgdHlwZT0idG5zOlBvcnRUeXBlNzIzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzIzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcyMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcyMyIgYmluZGluZz0idG5zOkJpbmRpbmc3MjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzI0IiBuYW1lPSJJbnB1dDcyNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MjQiIG5hbWU9Ik91dHB1dDcyNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzI0IiB0eXBlPSJ0bnM6UG9ydFR5cGU3MjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzI0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcyNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzI0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzcyNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcyNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcyNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MjUiIG5hbWU9IklucHV0NzI1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcyNSIgbmFtZT0iT3V0cHV0NzI1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MjUiIHR5cGU9InRuczpQb3J0VHlwZTcyNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcyNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzI1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MjUiIGJpbmRpbmc9InRuczpCaW5kaW5nNzI1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzI2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzI2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcyNiIgbmFtZT0iSW5wdXQ3MjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzI2IiBuYW1lPSJPdXRwdXQ3MjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcyNiIgdHlwZT0idG5zOlBvcnRUeXBlNzI2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzI2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcyNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcyNiIgYmluZGluZz0idG5zOkJpbmRpbmc3MjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDcyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzI3IiBuYW1lPSJJbnB1dDcyNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MjciIG5hbWU9Ik91dHB1dDcyNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzI3IiB0eXBlPSJ0bnM6UG9ydFR5cGU3MjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzI3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcyNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzI3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzcyNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTcyOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcyOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MjgiIG5hbWU9IklucHV0NzI4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcyOCIgbmFtZT0iT3V0cHV0NzI4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MjgiIHR5cGU9InRuczpQb3J0VHlwZTcyOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcyOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzI4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MjgiIGJpbmRpbmc9InRuczpCaW5kaW5nNzI4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTcyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzI5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzI5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcyOSIgbmFtZT0iSW5wdXQ3MjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzI5IiBuYW1lPSJPdXRwdXQ3MjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcyOSIgdHlwZT0idG5zOlBvcnRUeXBlNzI5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzI5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcyOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcyOSIgYmluZGluZz0idG5zOkJpbmRpbmc3MjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDczMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzMwIiBuYW1lPSJJbnB1dDczMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MzAiIG5hbWU9Ik91dHB1dDczMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzMwIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzMwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTczMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzMwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzczMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTczMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjczMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MzEiIG5hbWU9IklucHV0NzMxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTczMSIgbmFtZT0iT3V0cHV0NzMxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MzEiIHR5cGU9InRuczpQb3J0VHlwZTczMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjczMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzMxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MzEiIGJpbmRpbmc9InRuczpCaW5kaW5nNzMxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTczMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDczMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTczMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzMyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzMyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTczMiIgbmFtZT0iSW5wdXQ3MzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzMyIiBuYW1lPSJPdXRwdXQ3MzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzczMiIgdHlwZT0idG5zOlBvcnRUeXBlNzMyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzMyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjczMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDczMiIgYmluZGluZz0idG5zOkJpbmRpbmc3MzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDczMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzMzIiBuYW1lPSJJbnB1dDczMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MzMiIG5hbWU9Ik91dHB1dDczMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzMzIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzMzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTczMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzMzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzczMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTczNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjczNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MzQiIG5hbWU9IklucHV0NzM0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTczNCIgbmFtZT0iT3V0cHV0NzM0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MzQiIHR5cGU9InRuczpQb3J0VHlwZTczNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjczNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzM0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MzQiIGJpbmRpbmc9InRuczpCaW5kaW5nNzM0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTczNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDczNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTczNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzM1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzM1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTczNSIgbmFtZT0iSW5wdXQ3MzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzM1IiBuYW1lPSJPdXRwdXQ3MzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzczNSIgdHlwZT0idG5zOlBvcnRUeXBlNzM1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzM1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjczNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDczNSIgYmluZGluZz0idG5zOkJpbmRpbmc3MzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDczNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzM2IiBuYW1lPSJJbnB1dDczNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MzYiIG5hbWU9Ik91dHB1dDczNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzM2IiB0eXBlPSJ0bnM6UG9ydFR5cGU3MzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzM2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTczNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzM2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzczNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3MzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTczNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjczNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MzciIG5hbWU9IklucHV0NzM3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTczNyIgbmFtZT0iT3V0cHV0NzM3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3MzciIHR5cGU9InRuczpQb3J0VHlwZTczNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjczNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243MzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzM3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MzciIGJpbmRpbmc9InRuczpCaW5kaW5nNzM3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTczOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDczOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTczOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzM4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzM4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTczOCIgbmFtZT0iSW5wdXQ3MzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzM4IiBuYW1lPSJPdXRwdXQ3MzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzczOCIgdHlwZT0idG5zOlBvcnRUeXBlNzM4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzM4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjczOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3MzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDczOCIgYmluZGluZz0idG5zOkJpbmRpbmc3MzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDczOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzM5IiBuYW1lPSJJbnB1dDczOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MzkiIG5hbWU9Ik91dHB1dDczOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzM5IiB0eXBlPSJ0bnM6UG9ydFR5cGU3MzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzM5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTczOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzM5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzczOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc0MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NDAiIG5hbWU9IklucHV0NzQwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc0MCIgbmFtZT0iT3V0cHV0NzQwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NDAiIHR5cGU9InRuczpQb3J0VHlwZTc0MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzQwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NDAiIGJpbmRpbmc9InRuczpCaW5kaW5nNzQwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzQxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzQxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc0MSIgbmFtZT0iSW5wdXQ3NDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzQxIiBuYW1lPSJPdXRwdXQ3NDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc0MSIgdHlwZT0idG5zOlBvcnRUeXBlNzQxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzQxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc0MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc0MSIgYmluZGluZz0idG5zOkJpbmRpbmc3NDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzQyIiBuYW1lPSJJbnB1dDc0MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NDIiIG5hbWU9Ik91dHB1dDc0MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzQyIiB0eXBlPSJ0bnM6UG9ydFR5cGU3NDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzQyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc0MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzQyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzc0MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc0MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NDMiIG5hbWU9IklucHV0NzQzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc0MyIgbmFtZT0iT3V0cHV0NzQzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NDMiIHR5cGU9InRuczpQb3J0VHlwZTc0MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzQzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NDMiIGJpbmRpbmc9InRuczpCaW5kaW5nNzQzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzQ0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzQ0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc0NCIgbmFtZT0iSW5wdXQ3NDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzQ0IiBuYW1lPSJPdXRwdXQ3NDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc0NCIgdHlwZT0idG5zOlBvcnRUeXBlNzQ0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzQ0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc0NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc0NCIgYmluZGluZz0idG5zOkJpbmRpbmc3NDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzQ1IiBuYW1lPSJJbnB1dDc0NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NDUiIG5hbWU9Ik91dHB1dDc0NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzQ1IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzQ1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc0NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzQ1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc0NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc0NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NDYiIG5hbWU9IklucHV0NzQ2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc0NiIgbmFtZT0iT3V0cHV0NzQ2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NDYiIHR5cGU9InRuczpQb3J0VHlwZTc0NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzQ2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NDYiIGJpbmRpbmc9InRuczpCaW5kaW5nNzQ2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzQ3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzQ3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc0NyIgbmFtZT0iSW5wdXQ3NDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzQ3IiBuYW1lPSJPdXRwdXQ3NDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc0NyIgdHlwZT0idG5zOlBvcnRUeXBlNzQ3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzQ3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc0NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc0NyIgYmluZGluZz0idG5zOkJpbmRpbmc3NDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzQ4IiBuYW1lPSJJbnB1dDc0OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NDgiIG5hbWU9Ik91dHB1dDc0OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzQ4IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzQ4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc0OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzQ4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc0OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc0OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NDkiIG5hbWU9IklucHV0NzQ5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc0OSIgbmFtZT0iT3V0cHV0NzQ5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NDkiIHR5cGU9InRuczpQb3J0VHlwZTc0OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzQ5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NDkiIGJpbmRpbmc9InRuczpCaW5kaW5nNzQ5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzUwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzUwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc1MCIgbmFtZT0iSW5wdXQ3NTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzUwIiBuYW1lPSJPdXRwdXQ3NTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc1MCIgdHlwZT0idG5zOlBvcnRUeXBlNzUwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzUwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc1MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc1MCIgYmluZGluZz0idG5zOkJpbmRpbmc3NTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzUxIiBuYW1lPSJJbnB1dDc1MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NTEiIG5hbWU9Ik91dHB1dDc1MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzUxIiB0eXBlPSJ0bnM6UG9ydFR5cGU3NTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzUxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc1MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzUxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzc1MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc1MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc1MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NTIiIG5hbWU9IklucHV0NzUyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc1MiIgbmFtZT0iT3V0cHV0NzUyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NTIiIHR5cGU9InRuczpQb3J0VHlwZTc1MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc1MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzUyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NTIiIGJpbmRpbmc9InRuczpCaW5kaW5nNzUyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzUzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzUzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc1MyIgbmFtZT0iSW5wdXQ3NTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzUzIiBuYW1lPSJPdXRwdXQ3NTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc1MyIgdHlwZT0idG5zOlBvcnRUeXBlNzUzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzUzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc1MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc1MyIgYmluZGluZz0idG5zOkJpbmRpbmc3NTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzU0IiBuYW1lPSJJbnB1dDc1NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NTQiIG5hbWU9Ik91dHB1dDc1NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzU0IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzU0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc1NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzU0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc1NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc1NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc1NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NTUiIG5hbWU9IklucHV0NzU1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc1NSIgbmFtZT0iT3V0cHV0NzU1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NTUiIHR5cGU9InRuczpQb3J0VHlwZTc1NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc1NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzU1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NTUiIGJpbmRpbmc9InRuczpCaW5kaW5nNzU1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzU2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzU2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc1NiIgbmFtZT0iSW5wdXQ3NTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzU2IiBuYW1lPSJPdXRwdXQ3NTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc1NiIgdHlwZT0idG5zOlBvcnRUeXBlNzU2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzU2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc1NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc1NiIgYmluZGluZz0idG5zOkJpbmRpbmc3NTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzU3IiBuYW1lPSJJbnB1dDc1NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NTciIG5hbWU9Ik91dHB1dDc1NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzU3IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzU3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc1NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzU3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc1NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc1OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc1OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NTgiIG5hbWU9IklucHV0NzU4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc1OCIgbmFtZT0iT3V0cHV0NzU4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NTgiIHR5cGU9InRuczpQb3J0VHlwZTc1OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc1OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzU4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NTgiIGJpbmRpbmc9InRuczpCaW5kaW5nNzU4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzU5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzU5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc1OSIgbmFtZT0iSW5wdXQ3NTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzU5IiBuYW1lPSJPdXRwdXQ3NTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc1OSIgdHlwZT0idG5zOlBvcnRUeXBlNzU5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzU5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc1OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc1OSIgYmluZGluZz0idG5zOkJpbmRpbmc3NTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzYwIiBuYW1lPSJJbnB1dDc2MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NjAiIG5hbWU9Ik91dHB1dDc2MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzYwIiB0eXBlPSJ0bnM6UG9ydFR5cGU3NjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzYwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc2MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzYwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzc2MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc2MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc2MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NjEiIG5hbWU9IklucHV0NzYxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc2MSIgbmFtZT0iT3V0cHV0NzYxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NjEiIHR5cGU9InRuczpQb3J0VHlwZTc2MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc2MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzYxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NjEiIGJpbmRpbmc9InRuczpCaW5kaW5nNzYxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzYyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzYyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc2MiIgbmFtZT0iSW5wdXQ3NjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzYyIiBuYW1lPSJPdXRwdXQ3NjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc2MiIgdHlwZT0idG5zOlBvcnRUeXBlNzYyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzYyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc2MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc2MiIgYmluZGluZz0idG5zOkJpbmRpbmc3NjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzYzIiBuYW1lPSJJbnB1dDc2MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NjMiIG5hbWU9Ik91dHB1dDc2MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzYzIiB0eXBlPSJ0bnM6UG9ydFR5cGU3NjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzYzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc2MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzYzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzc2MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc2NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc2NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NjQiIG5hbWU9IklucHV0NzY0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc2NCIgbmFtZT0iT3V0cHV0NzY0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NjQiIHR5cGU9InRuczpQb3J0VHlwZTc2NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc2NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzY0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NjQiIGJpbmRpbmc9InRuczpCaW5kaW5nNzY0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzY1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzY1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc2NSIgbmFtZT0iSW5wdXQ3NjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzY1IiBuYW1lPSJPdXRwdXQ3NjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc2NSIgdHlwZT0idG5zOlBvcnRUeXBlNzY1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzY1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc2NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc2NSIgYmluZGluZz0idG5zOkJpbmRpbmc3NjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzY2IiBuYW1lPSJJbnB1dDc2NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NjYiIG5hbWU9Ik91dHB1dDc2NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzY2IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzY2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc2NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzY2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc2NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc2NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc2NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NjciIG5hbWU9IklucHV0NzY3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc2NyIgbmFtZT0iT3V0cHV0NzY3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NjciIHR5cGU9InRuczpQb3J0VHlwZTc2NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc2NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzY3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NjciIGJpbmRpbmc9InRuczpCaW5kaW5nNzY3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzY4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzY4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc2OCIgbmFtZT0iSW5wdXQ3NjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzY4IiBuYW1lPSJPdXRwdXQ3NjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc2OCIgdHlwZT0idG5zOlBvcnRUeXBlNzY4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzY4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc2OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc2OCIgYmluZGluZz0idG5zOkJpbmRpbmc3NjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzY5IiBuYW1lPSJJbnB1dDc2OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NjkiIG5hbWU9Ik91dHB1dDc2OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzY5IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzY5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc2OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzY5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc2OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc3MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NzAiIG5hbWU9IklucHV0NzcwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc3MCIgbmFtZT0iT3V0cHV0NzcwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NzAiIHR5cGU9InRuczpQb3J0VHlwZTc3MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzcwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NzAiIGJpbmRpbmc9InRuczpCaW5kaW5nNzcwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzcxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzcxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc3MSIgbmFtZT0iSW5wdXQ3NzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzcxIiBuYW1lPSJPdXRwdXQ3NzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc3MSIgdHlwZT0idG5zOlBvcnRUeXBlNzcxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzcxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc3MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc3MSIgYmluZGluZz0idG5zOkJpbmRpbmc3NzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzcyIiBuYW1lPSJJbnB1dDc3MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NzIiIG5hbWU9Ik91dHB1dDc3MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzcyIiB0eXBlPSJ0bnM6UG9ydFR5cGU3NzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzcyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc3MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzcyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzc3MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc3MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NzMiIG5hbWU9IklucHV0NzczIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc3MyIgbmFtZT0iT3V0cHV0NzczIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NzMiIHR5cGU9InRuczpQb3J0VHlwZTc3MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzczIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NzMiIGJpbmRpbmc9InRuczpCaW5kaW5nNzczIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzc0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzc0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc3NCIgbmFtZT0iSW5wdXQ3NzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzc0IiBuYW1lPSJPdXRwdXQ3NzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc3NCIgdHlwZT0idG5zOlBvcnRUeXBlNzc0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzc0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc3NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc3NCIgYmluZGluZz0idG5zOkJpbmRpbmc3NzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Nzc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzc1IiBuYW1lPSJJbnB1dDc3NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NzUiIG5hbWU9Ik91dHB1dDc3NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzc1IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzc1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc3NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Nzc1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc3NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Nzc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc3NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NzYiIG5hbWU9IklucHV0Nzc2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc3NiIgbmFtZT0iT3V0cHV0Nzc2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NzYiIHR5cGU9InRuczpQb3J0VHlwZTc3NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzc2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NzYiIGJpbmRpbmc9InRuczpCaW5kaW5nNzc2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzc3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzc3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc3NyIgbmFtZT0iSW5wdXQ3NzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzc3IiBuYW1lPSJPdXRwdXQ3NzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc3NyIgdHlwZT0idG5zOlBvcnRUeXBlNzc3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzc3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc3NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3NzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc3NyIgYmluZGluZz0idG5zOkJpbmRpbmc3NzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Nzc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzc4IiBuYW1lPSJJbnB1dDc3OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NzgiIG5hbWU9Ik91dHB1dDc3OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzc4IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzc4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc3OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Nzc4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc3OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3NzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Nzc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc3OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NzkiIG5hbWU9IklucHV0Nzc5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc3OSIgbmFtZT0iT3V0cHV0Nzc5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3NzkiIHR5cGU9InRuczpQb3J0VHlwZTc3OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243NzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzc5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NzkiIGJpbmRpbmc9InRuczpCaW5kaW5nNzc5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3ODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzgwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzgwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc4MCIgbmFtZT0iSW5wdXQ3ODAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzgwIiBuYW1lPSJPdXRwdXQ3ODAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc4MCIgdHlwZT0idG5zOlBvcnRUeXBlNzgwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzgwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc4MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3ODAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc4MCIgYmluZGluZz0idG5zOkJpbmRpbmc3ODAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3ODEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243ODEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzgxIiBuYW1lPSJJbnB1dDc4MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3ODEiIG5hbWU9Ik91dHB1dDc4MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzgxIiB0eXBlPSJ0bnM6UG9ydFR5cGU3ODEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243ODEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzgxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc4MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzgxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzc4MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3ODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3ODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3ODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc4MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc4MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3ODIiIG5hbWU9IklucHV0NzgyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc4MiIgbmFtZT0iT3V0cHV0NzgyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3ODIiIHR5cGU9InRuczpQb3J0VHlwZTc4MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc4MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243ODIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzgyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3ODIiIGJpbmRpbmc9InRuczpCaW5kaW5nNzgyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3ODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzgzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzgzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc4MyIgbmFtZT0iSW5wdXQ3ODMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzgzIiBuYW1lPSJPdXRwdXQ3ODMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc4MyIgdHlwZT0idG5zOlBvcnRUeXBlNzgzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzgzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc4MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3ODMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc4MyIgYmluZGluZz0idG5zOkJpbmRpbmc3ODMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Nzg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3ODQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243ODQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzg0IiBuYW1lPSJJbnB1dDc4NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3ODQiIG5hbWU9Ik91dHB1dDc4NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzg0IiB0eXBlPSJ0bnM6UG9ydFR5cGU3ODQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243ODQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzg0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc4NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Nzg0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc4NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3ODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3ODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3ODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Nzg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc4NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc4NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3ODUiIG5hbWU9IklucHV0Nzg1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc4NSIgbmFtZT0iT3V0cHV0Nzg1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3ODUiIHR5cGU9InRuczpQb3J0VHlwZTc4NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc4NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243ODUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzg1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3ODUiIGJpbmRpbmc9InRuczpCaW5kaW5nNzg1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3ODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzg2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzg2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc4NiIgbmFtZT0iSW5wdXQ3ODYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzg2IiBuYW1lPSJPdXRwdXQ3ODYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc4NiIgdHlwZT0idG5zOlBvcnRUeXBlNzg2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzg2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc4NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3ODYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc4NiIgYmluZGluZz0idG5zOkJpbmRpbmc3ODYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Nzg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3ODciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243ODciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzg3IiBuYW1lPSJJbnB1dDc4NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3ODciIG5hbWU9Ik91dHB1dDc4NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzg3IiB0eXBlPSJ0bnM6UG9ydFR5cGU3ODciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243ODciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzg3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc4NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Nzg3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc4NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3ODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3ODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3ODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Nzg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc4OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc4OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3ODgiIG5hbWU9IklucHV0Nzg4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc4OCIgbmFtZT0iT3V0cHV0Nzg4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3ODgiIHR5cGU9InRuczpQb3J0VHlwZTc4OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc4OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243ODgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzg4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3ODgiIGJpbmRpbmc9InRuczpCaW5kaW5nNzg4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3ODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzg5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzg5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc4OSIgbmFtZT0iSW5wdXQ3ODkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzg5IiBuYW1lPSJPdXRwdXQ3ODkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc4OSIgdHlwZT0idG5zOlBvcnRUeXBlNzg5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzg5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc4OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3ODkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc4OSIgYmluZGluZz0idG5zOkJpbmRpbmc3ODkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3OTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzkwIiBuYW1lPSJJbnB1dDc5MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3OTAiIG5hbWU9Ik91dHB1dDc5MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzkwIiB0eXBlPSJ0bnM6UG9ydFR5cGU3OTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzkwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc5MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzkwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzc5MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3OTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3OTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3OTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc5MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc5MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3OTEiIG5hbWU9IklucHV0NzkxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc5MSIgbmFtZT0iT3V0cHV0NzkxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3OTEiIHR5cGU9InRuczpQb3J0VHlwZTc5MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc5MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243OTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzkxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3OTEiIGJpbmRpbmc9InRuczpCaW5kaW5nNzkxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3OTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzkyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzkyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc5MiIgbmFtZT0iSW5wdXQ3OTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzkyIiBuYW1lPSJPdXRwdXQ3OTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc5MiIgdHlwZT0idG5zOlBvcnRUeXBlNzkyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzkyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc5MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3OTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc5MiIgYmluZGluZz0idG5zOkJpbmRpbmc3OTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3OTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzkzIiBuYW1lPSJJbnB1dDc5MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3OTMiIG5hbWU9Ik91dHB1dDc5MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzkzIiB0eXBlPSJ0bnM6UG9ydFR5cGU3OTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzkzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc5MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NzkzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzc5MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3OTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3OTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3OTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Nzk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc5NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc5NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3OTQiIG5hbWU9IklucHV0Nzk0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc5NCIgbmFtZT0iT3V0cHV0Nzk0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3OTQiIHR5cGU9InRuczpQb3J0VHlwZTc5NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc5NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243OTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzk0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3OTQiIGJpbmRpbmc9InRuczpCaW5kaW5nNzk0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3OTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzk1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzk1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc5NSIgbmFtZT0iSW5wdXQ3OTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzk1IiBuYW1lPSJPdXRwdXQ3OTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc5NSIgdHlwZT0idG5zOlBvcnRUeXBlNzk1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzk1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc5NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3OTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc5NSIgYmluZGluZz0idG5zOkJpbmRpbmc3OTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Nzk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3OTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzk2IiBuYW1lPSJJbnB1dDc5NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3OTYiIG5hbWU9Ik91dHB1dDc5NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzk2IiB0eXBlPSJ0bnM6UG9ydFR5cGU3OTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzk2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc5NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Nzk2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc5NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3OTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3OTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3OTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Nzk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTc5NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc5NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3OTciIG5hbWU9IklucHV0Nzk3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc5NyIgbmFtZT0iT3V0cHV0Nzk3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3OTciIHR5cGU9InRuczpQb3J0VHlwZTc5NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc5NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243OTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzk3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3OTciIGJpbmRpbmc9InRuczpCaW5kaW5nNzk3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTc5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3OTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzk4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzk4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc5OCIgbmFtZT0iSW5wdXQ3OTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNzk4IiBuYW1lPSJPdXRwdXQ3OTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc5OCIgdHlwZT0idG5zOlBvcnRUeXBlNzk4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzk4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc5OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3OTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc5OCIgYmluZGluZz0idG5zOkJpbmRpbmc3OTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNzk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Nzk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDc5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3OTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNzk5IiBuYW1lPSJJbnB1dDc5OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3OTkiIG5hbWU9Ik91dHB1dDc5OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzk5IiB0eXBlPSJ0bnM6UG9ydFR5cGU3OTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzk5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc5OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Nzk5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc5OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODAwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgwMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MDAiIG5hbWU9IklucHV0ODAwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgwMCIgbmFtZT0iT3V0cHV0ODAwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MDAiIHR5cGU9InRuczpQb3J0VHlwZTgwMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODAwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MDAiIGJpbmRpbmc9InRuczpCaW5kaW5nODAwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODAxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODAxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgwMSIgbmFtZT0iSW5wdXQ4MDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODAxIiBuYW1lPSJPdXRwdXQ4MDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgwMSIgdHlwZT0idG5zOlBvcnRUeXBlODAxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODAxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgwMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgwMSIgYmluZGluZz0idG5zOkJpbmRpbmc4MDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgwMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODAyIiBuYW1lPSJJbnB1dDgwMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MDIiIG5hbWU9Ik91dHB1dDgwMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODAyIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODAyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgwMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODAyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzgwMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODAzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgwMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MDMiIG5hbWU9IklucHV0ODAzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgwMyIgbmFtZT0iT3V0cHV0ODAzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MDMiIHR5cGU9InRuczpQb3J0VHlwZTgwMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODAzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MDMiIGJpbmRpbmc9InRuczpCaW5kaW5nODAzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODA0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODA0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgwNCIgbmFtZT0iSW5wdXQ4MDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODA0IiBuYW1lPSJPdXRwdXQ4MDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgwNCIgdHlwZT0idG5zOlBvcnRUeXBlODA0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODA0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgwNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgwNCIgYmluZGluZz0idG5zOkJpbmRpbmc4MDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgwNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODA1IiBuYW1lPSJJbnB1dDgwNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MDUiIG5hbWU9Ik91dHB1dDgwNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODA1IiB0eXBlPSJ0bnM6UG9ydFR5cGU4MDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODA1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgwNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODA1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzgwNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODA2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgwNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MDYiIG5hbWU9IklucHV0ODA2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgwNiIgbmFtZT0iT3V0cHV0ODA2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MDYiIHR5cGU9InRuczpQb3J0VHlwZTgwNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODA2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MDYiIGJpbmRpbmc9InRuczpCaW5kaW5nODA2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODA3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODA3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgwNyIgbmFtZT0iSW5wdXQ4MDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODA3IiBuYW1lPSJPdXRwdXQ4MDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgwNyIgdHlwZT0idG5zOlBvcnRUeXBlODA3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODA3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgwNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgwNyIgYmluZGluZz0idG5zOkJpbmRpbmc4MDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgwOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODA4IiBuYW1lPSJJbnB1dDgwOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MDgiIG5hbWU9Ik91dHB1dDgwOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODA4IiB0eXBlPSJ0bnM6UG9ydFR5cGU4MDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODA4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgwOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODA4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzgwOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODA5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgwOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MDkiIG5hbWU9IklucHV0ODA5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgwOSIgbmFtZT0iT3V0cHV0ODA5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MDkiIHR5cGU9InRuczpQb3J0VHlwZTgwOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODA5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MDkiIGJpbmRpbmc9InRuczpCaW5kaW5nODA5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODEwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODEwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgxMCIgbmFtZT0iSW5wdXQ4MTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODEwIiBuYW1lPSJPdXRwdXQ4MTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgxMCIgdHlwZT0idG5zOlBvcnRUeXBlODEwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODEwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgxMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgxMCIgYmluZGluZz0idG5zOkJpbmRpbmc4MTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgxMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODExIiBuYW1lPSJJbnB1dDgxMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MTEiIG5hbWU9Ik91dHB1dDgxMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODExIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODExIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgxMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODExIiBiaW5kaW5nPSJ0bnM6QmluZGluZzgxMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgxMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgxMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MTIiIG5hbWU9IklucHV0ODEyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgxMiIgbmFtZT0iT3V0cHV0ODEyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MTIiIHR5cGU9InRuczpQb3J0VHlwZTgxMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgxMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODEyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MTIiIGJpbmRpbmc9InRuczpCaW5kaW5nODEyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODEzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODEzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgxMyIgbmFtZT0iSW5wdXQ4MTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODEzIiBuYW1lPSJPdXRwdXQ4MTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgxMyIgdHlwZT0idG5zOlBvcnRUeXBlODEzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODEzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgxMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgxMyIgYmluZGluZz0idG5zOkJpbmRpbmc4MTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgxNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODE0IiBuYW1lPSJJbnB1dDgxNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MTQiIG5hbWU9Ik91dHB1dDgxNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODE0IiB0eXBlPSJ0bnM6UG9ydFR5cGU4MTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODE0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgxNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODE0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzgxNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgxNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgxNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MTUiIG5hbWU9IklucHV0ODE1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgxNSIgbmFtZT0iT3V0cHV0ODE1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MTUiIHR5cGU9InRuczpQb3J0VHlwZTgxNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgxNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODE1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MTUiIGJpbmRpbmc9InRuczpCaW5kaW5nODE1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODE2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODE2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgxNiIgbmFtZT0iSW5wdXQ4MTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODE2IiBuYW1lPSJPdXRwdXQ4MTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgxNiIgdHlwZT0idG5zOlBvcnRUeXBlODE2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODE2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgxNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgxNiIgYmluZGluZz0idG5zOkJpbmRpbmc4MTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgxNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODE3IiBuYW1lPSJJbnB1dDgxNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MTciIG5hbWU9Ik91dHB1dDgxNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODE3IiB0eXBlPSJ0bnM6UG9ydFR5cGU4MTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODE3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgxNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODE3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzgxNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgxOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgxOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MTgiIG5hbWU9IklucHV0ODE4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgxOCIgbmFtZT0iT3V0cHV0ODE4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MTgiIHR5cGU9InRuczpQb3J0VHlwZTgxOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgxOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODE4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MTgiIGJpbmRpbmc9InRuczpCaW5kaW5nODE4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODE5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODE5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgxOSIgbmFtZT0iSW5wdXQ4MTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODE5IiBuYW1lPSJPdXRwdXQ4MTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgxOSIgdHlwZT0idG5zOlBvcnRUeXBlODE5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODE5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgxOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgxOSIgYmluZGluZz0idG5zOkJpbmRpbmc4MTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODIwIiBuYW1lPSJJbnB1dDgyMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MjAiIG5hbWU9Ik91dHB1dDgyMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODIwIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODIwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgyMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODIwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzgyMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgyMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgyMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MjEiIG5hbWU9IklucHV0ODIxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgyMSIgbmFtZT0iT3V0cHV0ODIxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MjEiIHR5cGU9InRuczpQb3J0VHlwZTgyMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgyMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODIxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MjEiIGJpbmRpbmc9InRuczpCaW5kaW5nODIxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODIyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODIyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgyMiIgbmFtZT0iSW5wdXQ4MjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODIyIiBuYW1lPSJPdXRwdXQ4MjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgyMiIgdHlwZT0idG5zOlBvcnRUeXBlODIyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODIyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgyMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgyMiIgYmluZGluZz0idG5zOkJpbmRpbmc4MjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODIzIiBuYW1lPSJJbnB1dDgyMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MjMiIG5hbWU9Ik91dHB1dDgyMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODIzIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODIzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgyMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODIzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzgyMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgyNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgyNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MjQiIG5hbWU9IklucHV0ODI0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgyNCIgbmFtZT0iT3V0cHV0ODI0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MjQiIHR5cGU9InRuczpQb3J0VHlwZTgyNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgyNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODI0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MjQiIGJpbmRpbmc9InRuczpCaW5kaW5nODI0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODI1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODI1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgyNSIgbmFtZT0iSW5wdXQ4MjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODI1IiBuYW1lPSJPdXRwdXQ4MjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgyNSIgdHlwZT0idG5zOlBvcnRUeXBlODI1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODI1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgyNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgyNSIgYmluZGluZz0idG5zOkJpbmRpbmc4MjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODI2IiBuYW1lPSJJbnB1dDgyNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MjYiIG5hbWU9Ik91dHB1dDgyNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODI2IiB0eXBlPSJ0bnM6UG9ydFR5cGU4MjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODI2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgyNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODI2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzgyNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgyNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgyNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MjciIG5hbWU9IklucHV0ODI3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgyNyIgbmFtZT0iT3V0cHV0ODI3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MjciIHR5cGU9InRuczpQb3J0VHlwZTgyNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgyNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODI3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MjciIGJpbmRpbmc9InRuczpCaW5kaW5nODI3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODI4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODI4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgyOCIgbmFtZT0iSW5wdXQ4MjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODI4IiBuYW1lPSJPdXRwdXQ4MjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgyOCIgdHlwZT0idG5zOlBvcnRUeXBlODI4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODI4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgyOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgyOCIgYmluZGluZz0idG5zOkJpbmRpbmc4MjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODI5IiBuYW1lPSJJbnB1dDgyOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MjkiIG5hbWU9Ik91dHB1dDgyOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODI5IiB0eXBlPSJ0bnM6UG9ydFR5cGU4MjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODI5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgyOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODI5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzgyOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgzMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MzAiIG5hbWU9IklucHV0ODMwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgzMCIgbmFtZT0iT3V0cHV0ODMwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MzAiIHR5cGU9InRuczpQb3J0VHlwZTgzMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODMwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MzAiIGJpbmRpbmc9InRuczpCaW5kaW5nODMwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODMxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODMxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgzMSIgbmFtZT0iSW5wdXQ4MzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODMxIiBuYW1lPSJPdXRwdXQ4MzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgzMSIgdHlwZT0idG5zOlBvcnRUeXBlODMxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODMxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgzMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgzMSIgYmluZGluZz0idG5zOkJpbmRpbmc4MzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODMyIiBuYW1lPSJJbnB1dDgzMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MzIiIG5hbWU9Ik91dHB1dDgzMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODMyIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODMyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgzMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODMyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzgzMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgzMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MzMiIG5hbWU9IklucHV0ODMzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgzMyIgbmFtZT0iT3V0cHV0ODMzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MzMiIHR5cGU9InRuczpQb3J0VHlwZTgzMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODMzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MzMiIGJpbmRpbmc9InRuczpCaW5kaW5nODMzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODM0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODM0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgzNCIgbmFtZT0iSW5wdXQ4MzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODM0IiBuYW1lPSJPdXRwdXQ4MzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgzNCIgdHlwZT0idG5zOlBvcnRUeXBlODM0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODM0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgzNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgzNCIgYmluZGluZz0idG5zOkJpbmRpbmc4MzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODM1IiBuYW1lPSJJbnB1dDgzNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MzUiIG5hbWU9Ik91dHB1dDgzNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODM1IiB0eXBlPSJ0bnM6UG9ydFR5cGU4MzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODM1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgzNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODM1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzgzNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgzNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MzYiIG5hbWU9IklucHV0ODM2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgzNiIgbmFtZT0iT3V0cHV0ODM2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MzYiIHR5cGU9InRuczpQb3J0VHlwZTgzNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODM2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MzYiIGJpbmRpbmc9InRuczpCaW5kaW5nODM2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODM3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODM3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgzNyIgbmFtZT0iSW5wdXQ4MzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODM3IiBuYW1lPSJPdXRwdXQ4MzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgzNyIgdHlwZT0idG5zOlBvcnRUeXBlODM3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODM3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgzNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4MzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgzNyIgYmluZGluZz0idG5zOkJpbmRpbmc4MzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODM4IiBuYW1lPSJJbnB1dDgzOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MzgiIG5hbWU9Ik91dHB1dDgzOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODM4IiB0eXBlPSJ0bnM6UG9ydFR5cGU4MzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODM4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgzOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODM4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzgzOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4MzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTgzOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MzkiIG5hbWU9IklucHV0ODM5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgzOSIgbmFtZT0iT3V0cHV0ODM5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4MzkiIHR5cGU9InRuczpQb3J0VHlwZTgzOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244MzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODM5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MzkiIGJpbmRpbmc9InRuczpCaW5kaW5nODM5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODQwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg0MCIgbmFtZT0iSW5wdXQ4NDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODQwIiBuYW1lPSJPdXRwdXQ4NDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg0MCIgdHlwZT0idG5zOlBvcnRUeXBlODQwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg0MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg0MCIgYmluZGluZz0idG5zOkJpbmRpbmc4NDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODQxIiBuYW1lPSJJbnB1dDg0MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NDEiIG5hbWU9Ik91dHB1dDg0MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODQxIiB0eXBlPSJ0bnM6UG9ydFR5cGU4NDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODQxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg0MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODQxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzg0MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg0MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg0MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NDIiIG5hbWU9IklucHV0ODQyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg0MiIgbmFtZT0iT3V0cHV0ODQyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NDIiIHR5cGU9InRuczpQb3J0VHlwZTg0MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg0MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODQyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NDIiIGJpbmRpbmc9InRuczpCaW5kaW5nODQyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODQzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg0MyIgbmFtZT0iSW5wdXQ4NDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODQzIiBuYW1lPSJPdXRwdXQ4NDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg0MyIgdHlwZT0idG5zOlBvcnRUeXBlODQzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg0MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg0MyIgYmluZGluZz0idG5zOkJpbmRpbmc4NDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODQ0IiBuYW1lPSJJbnB1dDg0NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NDQiIG5hbWU9Ik91dHB1dDg0NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODQ0IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODQ0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg0NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODQ0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg0NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg0NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg0NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NDUiIG5hbWU9IklucHV0ODQ1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg0NSIgbmFtZT0iT3V0cHV0ODQ1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NDUiIHR5cGU9InRuczpQb3J0VHlwZTg0NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg0NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODQ1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NDUiIGJpbmRpbmc9InRuczpCaW5kaW5nODQ1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODQ2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQ2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg0NiIgbmFtZT0iSW5wdXQ4NDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODQ2IiBuYW1lPSJPdXRwdXQ4NDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg0NiIgdHlwZT0idG5zOlBvcnRUeXBlODQ2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQ2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg0NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg0NiIgYmluZGluZz0idG5zOkJpbmRpbmc4NDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODQ3IiBuYW1lPSJJbnB1dDg0NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NDciIG5hbWU9Ik91dHB1dDg0NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODQ3IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODQ3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg0NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODQ3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg0NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg0OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg0OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NDgiIG5hbWU9IklucHV0ODQ4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg0OCIgbmFtZT0iT3V0cHV0ODQ4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NDgiIHR5cGU9InRuczpQb3J0VHlwZTg0OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg0OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODQ4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NDgiIGJpbmRpbmc9InRuczpCaW5kaW5nODQ4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODQ5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQ5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg0OSIgbmFtZT0iSW5wdXQ4NDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODQ5IiBuYW1lPSJPdXRwdXQ4NDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg0OSIgdHlwZT0idG5zOlBvcnRUeXBlODQ5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQ5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg0OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg0OSIgYmluZGluZz0idG5zOkJpbmRpbmc4NDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODUwIiBuYW1lPSJJbnB1dDg1MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NTAiIG5hbWU9Ik91dHB1dDg1MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODUwIiB0eXBlPSJ0bnM6UG9ydFR5cGU4NTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODUwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg1MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODUwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzg1MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg1MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg1MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NTEiIG5hbWU9IklucHV0ODUxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg1MSIgbmFtZT0iT3V0cHV0ODUxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NTEiIHR5cGU9InRuczpQb3J0VHlwZTg1MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg1MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODUxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NTEiIGJpbmRpbmc9InRuczpCaW5kaW5nODUxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODUyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODUyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg1MiIgbmFtZT0iSW5wdXQ4NTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODUyIiBuYW1lPSJPdXRwdXQ4NTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg1MiIgdHlwZT0idG5zOlBvcnRUeXBlODUyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODUyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg1MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg1MiIgYmluZGluZz0idG5zOkJpbmRpbmc4NTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODUzIiBuYW1lPSJJbnB1dDg1MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NTMiIG5hbWU9Ik91dHB1dDg1MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODUzIiB0eXBlPSJ0bnM6UG9ydFR5cGU4NTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODUzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg1MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODUzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzg1MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg1NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg1NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NTQiIG5hbWU9IklucHV0ODU0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg1NCIgbmFtZT0iT3V0cHV0ODU0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NTQiIHR5cGU9InRuczpQb3J0VHlwZTg1NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg1NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODU0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NTQiIGJpbmRpbmc9InRuczpCaW5kaW5nODU0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODU1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODU1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg1NSIgbmFtZT0iSW5wdXQ4NTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODU1IiBuYW1lPSJPdXRwdXQ4NTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg1NSIgdHlwZT0idG5zOlBvcnRUeXBlODU1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODU1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg1NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg1NSIgYmluZGluZz0idG5zOkJpbmRpbmc4NTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODU2IiBuYW1lPSJJbnB1dDg1NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NTYiIG5hbWU9Ik91dHB1dDg1NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODU2IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODU2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg1NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODU2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg1NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg1NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg1NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NTciIG5hbWU9IklucHV0ODU3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg1NyIgbmFtZT0iT3V0cHV0ODU3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NTciIHR5cGU9InRuczpQb3J0VHlwZTg1NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg1NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODU3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NTciIGJpbmRpbmc9InRuczpCaW5kaW5nODU3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODU4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODU4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg1OCIgbmFtZT0iSW5wdXQ4NTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODU4IiBuYW1lPSJPdXRwdXQ4NTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg1OCIgdHlwZT0idG5zOlBvcnRUeXBlODU4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODU4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg1OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg1OCIgYmluZGluZz0idG5zOkJpbmRpbmc4NTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODU5IiBuYW1lPSJJbnB1dDg1OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NTkiIG5hbWU9Ik91dHB1dDg1OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODU5IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODU5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg1OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODU5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg1OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg2MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NjAiIG5hbWU9IklucHV0ODYwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg2MCIgbmFtZT0iT3V0cHV0ODYwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NjAiIHR5cGU9InRuczpQb3J0VHlwZTg2MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODYwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NjAiIGJpbmRpbmc9InRuczpCaW5kaW5nODYwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODYxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODYxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg2MSIgbmFtZT0iSW5wdXQ4NjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODYxIiBuYW1lPSJPdXRwdXQ4NjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg2MSIgdHlwZT0idG5zOlBvcnRUeXBlODYxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODYxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg2MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg2MSIgYmluZGluZz0idG5zOkJpbmRpbmc4NjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODYyIiBuYW1lPSJJbnB1dDg2MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NjIiIG5hbWU9Ik91dHB1dDg2MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODYyIiB0eXBlPSJ0bnM6UG9ydFR5cGU4NjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODYyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg2MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODYyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzg2MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg2MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NjMiIG5hbWU9IklucHV0ODYzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg2MyIgbmFtZT0iT3V0cHV0ODYzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NjMiIHR5cGU9InRuczpQb3J0VHlwZTg2MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODYzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NjMiIGJpbmRpbmc9InRuczpCaW5kaW5nODYzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODY0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODY0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg2NCIgbmFtZT0iSW5wdXQ4NjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODY0IiBuYW1lPSJPdXRwdXQ4NjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg2NCIgdHlwZT0idG5zOlBvcnRUeXBlODY0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODY0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg2NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg2NCIgYmluZGluZz0idG5zOkJpbmRpbmc4NjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODY1IiBuYW1lPSJJbnB1dDg2NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NjUiIG5hbWU9Ik91dHB1dDg2NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODY1IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODY1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg2NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODY1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg2NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg2NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NjYiIG5hbWU9IklucHV0ODY2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg2NiIgbmFtZT0iT3V0cHV0ODY2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NjYiIHR5cGU9InRuczpQb3J0VHlwZTg2NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODY2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NjYiIGJpbmRpbmc9InRuczpCaW5kaW5nODY2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODY3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODY3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg2NyIgbmFtZT0iSW5wdXQ4NjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODY3IiBuYW1lPSJPdXRwdXQ4NjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg2NyIgdHlwZT0idG5zOlBvcnRUeXBlODY3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODY3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg2NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg2NyIgYmluZGluZz0idG5zOkJpbmRpbmc4NjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODY4IiBuYW1lPSJJbnB1dDg2OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NjgiIG5hbWU9Ik91dHB1dDg2OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODY4IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODY4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg2OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODY4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg2OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg2OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NjkiIG5hbWU9IklucHV0ODY5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg2OSIgbmFtZT0iT3V0cHV0ODY5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NjkiIHR5cGU9InRuczpQb3J0VHlwZTg2OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODY5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NjkiIGJpbmRpbmc9InRuczpCaW5kaW5nODY5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODcwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODcwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg3MCIgbmFtZT0iSW5wdXQ4NzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODcwIiBuYW1lPSJPdXRwdXQ4NzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg3MCIgdHlwZT0idG5zOlBvcnRUeXBlODcwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODcwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg3MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg3MCIgYmluZGluZz0idG5zOkJpbmRpbmc4NzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODcxIiBuYW1lPSJJbnB1dDg3MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NzEiIG5hbWU9Ik91dHB1dDg3MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODcxIiB0eXBlPSJ0bnM6UG9ydFR5cGU4NzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODcxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg3MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODcxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzg3MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg3MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg3MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NzIiIG5hbWU9IklucHV0ODcyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg3MiIgbmFtZT0iT3V0cHV0ODcyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NzIiIHR5cGU9InRuczpQb3J0VHlwZTg3MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg3MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODcyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NzIiIGJpbmRpbmc9InRuczpCaW5kaW5nODcyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODczIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODczIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg3MyIgbmFtZT0iSW5wdXQ4NzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODczIiBuYW1lPSJPdXRwdXQ4NzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg3MyIgdHlwZT0idG5zOlBvcnRUeXBlODczIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODczIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg3MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg3MyIgYmluZGluZz0idG5zOkJpbmRpbmc4NzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODc0IiBuYW1lPSJJbnB1dDg3NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NzQiIG5hbWU9Ik91dHB1dDg3NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODc0IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODc0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg3NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODc0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg3NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg3NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg3NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NzUiIG5hbWU9IklucHV0ODc1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg3NSIgbmFtZT0iT3V0cHV0ODc1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NzUiIHR5cGU9InRuczpQb3J0VHlwZTg3NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg3NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODc1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NzUiIGJpbmRpbmc9InRuczpCaW5kaW5nODc1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODc2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODc2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg3NiIgbmFtZT0iSW5wdXQ4NzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODc2IiBuYW1lPSJPdXRwdXQ4NzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg3NiIgdHlwZT0idG5zOlBvcnRUeXBlODc2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODc2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg3NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg3NiIgYmluZGluZz0idG5zOkJpbmRpbmc4NzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODc3IiBuYW1lPSJJbnB1dDg3NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NzciIG5hbWU9Ik91dHB1dDg3NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODc3IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODc3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg3NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODc3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg3NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4NzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg3OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg3OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NzgiIG5hbWU9IklucHV0ODc4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg3OCIgbmFtZT0iT3V0cHV0ODc4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4NzgiIHR5cGU9InRuczpQb3J0VHlwZTg3OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg3OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244NzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODc4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NzgiIGJpbmRpbmc9InRuczpCaW5kaW5nODc4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODc5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODc5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg3OSIgbmFtZT0iSW5wdXQ4NzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODc5IiBuYW1lPSJPdXRwdXQ4NzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg3OSIgdHlwZT0idG5zOlBvcnRUeXBlODc5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODc5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg3OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4NzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg3OSIgYmluZGluZz0idG5zOkJpbmRpbmc4NzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4ODAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244ODAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODgwIiBuYW1lPSJJbnB1dDg4MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4ODAiIG5hbWU9Ik91dHB1dDg4MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODgwIiB0eXBlPSJ0bnM6UG9ydFR5cGU4ODAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244ODAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODgwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg4MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODgwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzg4MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4ODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4ODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4ODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg4MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg4MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4ODEiIG5hbWU9IklucHV0ODgxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg4MSIgbmFtZT0iT3V0cHV0ODgxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4ODEiIHR5cGU9InRuczpQb3J0VHlwZTg4MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg4MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244ODEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODgxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4ODEiIGJpbmRpbmc9InRuczpCaW5kaW5nODgxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4ODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODgyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODgyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg4MiIgbmFtZT0iSW5wdXQ4ODIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODgyIiBuYW1lPSJPdXRwdXQ4ODIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg4MiIgdHlwZT0idG5zOlBvcnRUeXBlODgyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODgyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg4MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4ODIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg4MiIgYmluZGluZz0idG5zOkJpbmRpbmc4ODIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4ODMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244ODMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODgzIiBuYW1lPSJJbnB1dDg4MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4ODMiIG5hbWU9Ik91dHB1dDg4MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODgzIiB0eXBlPSJ0bnM6UG9ydFR5cGU4ODMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244ODMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODgzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg4MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODgzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzg4MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4ODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4ODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4ODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg4NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg4NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4ODQiIG5hbWU9IklucHV0ODg0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg4NCIgbmFtZT0iT3V0cHV0ODg0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4ODQiIHR5cGU9InRuczpQb3J0VHlwZTg4NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg4NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244ODQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODg0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4ODQiIGJpbmRpbmc9InRuczpCaW5kaW5nODg0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4ODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODg1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODg1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg4NSIgbmFtZT0iSW5wdXQ4ODUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODg1IiBuYW1lPSJPdXRwdXQ4ODUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg4NSIgdHlwZT0idG5zOlBvcnRUeXBlODg1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODg1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg4NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4ODUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg4NSIgYmluZGluZz0idG5zOkJpbmRpbmc4ODUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4ODYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244ODYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODg2IiBuYW1lPSJJbnB1dDg4NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4ODYiIG5hbWU9Ik91dHB1dDg4NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODg2IiB0eXBlPSJ0bnM6UG9ydFR5cGU4ODYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244ODYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODg2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg4NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODg2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg4NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4ODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4ODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4ODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg4NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg4NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4ODciIG5hbWU9IklucHV0ODg3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg4NyIgbmFtZT0iT3V0cHV0ODg3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4ODciIHR5cGU9InRuczpQb3J0VHlwZTg4NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg4NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244ODciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODg3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4ODciIGJpbmRpbmc9InRuczpCaW5kaW5nODg3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4ODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODg4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODg4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg4OCIgbmFtZT0iSW5wdXQ4ODgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODg4IiBuYW1lPSJPdXRwdXQ4ODgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg4OCIgdHlwZT0idG5zOlBvcnRUeXBlODg4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODg4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg4OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4ODgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg4OCIgYmluZGluZz0idG5zOkJpbmRpbmc4ODgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4ODkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244ODkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODg5IiBuYW1lPSJJbnB1dDg4OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4ODkiIG5hbWU9Ik91dHB1dDg4OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODg5IiB0eXBlPSJ0bnM6UG9ydFR5cGU4ODkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244ODkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODg5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg4OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODg5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg4OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4OTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4OTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4OTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg5MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4OTAiIG5hbWU9IklucHV0ODkwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg5MCIgbmFtZT0iT3V0cHV0ODkwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4OTAiIHR5cGU9InRuczpQb3J0VHlwZTg5MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244OTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODkwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4OTAiIGJpbmRpbmc9InRuczpCaW5kaW5nODkwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4OTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODkxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODkxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg5MSIgbmFtZT0iSW5wdXQ4OTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODkxIiBuYW1lPSJPdXRwdXQ4OTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg5MSIgdHlwZT0idG5zOlBvcnRUeXBlODkxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODkxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg5MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4OTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg5MSIgYmluZGluZz0idG5zOkJpbmRpbmc4OTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4OTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODkyIiBuYW1lPSJJbnB1dDg5MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4OTIiIG5hbWU9Ik91dHB1dDg5MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODkyIiB0eXBlPSJ0bnM6UG9ydFR5cGU4OTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODkyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg5MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODkyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzg5MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4OTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4OTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4OTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg5MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4OTMiIG5hbWU9IklucHV0ODkzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg5MyIgbmFtZT0iT3V0cHV0ODkzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4OTMiIHR5cGU9InRuczpQb3J0VHlwZTg5MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244OTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODkzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4OTMiIGJpbmRpbmc9InRuczpCaW5kaW5nODkzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4OTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODk0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODk0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg5NCIgbmFtZT0iSW5wdXQ4OTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODk0IiBuYW1lPSJPdXRwdXQ4OTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg5NCIgdHlwZT0idG5zOlBvcnRUeXBlODk0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODk0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg5NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4OTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg5NCIgYmluZGluZz0idG5zOkJpbmRpbmc4OTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4OTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODk1IiBuYW1lPSJJbnB1dDg5NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4OTUiIG5hbWU9Ik91dHB1dDg5NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODk1IiB0eXBlPSJ0bnM6UG9ydFR5cGU4OTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODk1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg5NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODk1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg5NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4OTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4OTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4OTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg5NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4OTYiIG5hbWU9IklucHV0ODk2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg5NiIgbmFtZT0iT3V0cHV0ODk2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4OTYiIHR5cGU9InRuczpQb3J0VHlwZTg5NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244OTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODk2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4OTYiIGJpbmRpbmc9InRuczpCaW5kaW5nODk2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTg5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4OTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODk3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODk3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg5NyIgbmFtZT0iSW5wdXQ4OTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlODk3IiBuYW1lPSJPdXRwdXQ4OTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg5NyIgdHlwZT0idG5zOlBvcnRUeXBlODk3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODk3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg5NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4OTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg5NyIgYmluZGluZz0idG5zOkJpbmRpbmc4OTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlODk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDg5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4OTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlODk4IiBuYW1lPSJJbnB1dDg5OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4OTgiIG5hbWU9Ik91dHB1dDg5OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODk4IiB0eXBlPSJ0bnM6UG9ydFR5cGU4OTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODk4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg5OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0ODk4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg5OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4OTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ4OTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4OTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTg5OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4OTkiIG5hbWU9IklucHV0ODk5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg5OSIgbmFtZT0iT3V0cHV0ODk5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc4OTkiIHR5cGU9InRuczpQb3J0VHlwZTg5OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb244OTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODk5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4OTkiIGJpbmRpbmc9InRuczpCaW5kaW5nODk5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkwMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTAwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTAwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkwMCIgbmFtZT0iSW5wdXQ5MDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTAwIiBuYW1lPSJPdXRwdXQ5MDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkwMCIgdHlwZT0idG5zOlBvcnRUeXBlOTAwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTAwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkwMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkwMCIgYmluZGluZz0idG5zOkJpbmRpbmc5MDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTAxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTAxIiBuYW1lPSJJbnB1dDkwMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MDEiIG5hbWU9Ik91dHB1dDkwMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTAxIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTAxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkwMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTAxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzkwMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkwMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkwMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MDIiIG5hbWU9IklucHV0OTAyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkwMiIgbmFtZT0iT3V0cHV0OTAyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MDIiIHR5cGU9InRuczpQb3J0VHlwZTkwMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkwMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTAyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MDIiIGJpbmRpbmc9InRuczpCaW5kaW5nOTAyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkwMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTAzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTAzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkwMyIgbmFtZT0iSW5wdXQ5MDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTAzIiBuYW1lPSJPdXRwdXQ5MDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkwMyIgdHlwZT0idG5zOlBvcnRUeXBlOTAzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTAzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkwMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkwMyIgYmluZGluZz0idG5zOkJpbmRpbmc5MDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTA0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTA0IiBuYW1lPSJJbnB1dDkwNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MDQiIG5hbWU9Ik91dHB1dDkwNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTA0IiB0eXBlPSJ0bnM6UG9ydFR5cGU5MDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTA0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkwNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTA0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzkwNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkwNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkwNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MDUiIG5hbWU9IklucHV0OTA1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkwNSIgbmFtZT0iT3V0cHV0OTA1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MDUiIHR5cGU9InRuczpQb3J0VHlwZTkwNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkwNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTA1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MDUiIGJpbmRpbmc9InRuczpCaW5kaW5nOTA1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkwNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTA2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTA2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkwNiIgbmFtZT0iSW5wdXQ5MDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTA2IiBuYW1lPSJPdXRwdXQ5MDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkwNiIgdHlwZT0idG5zOlBvcnRUeXBlOTA2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTA2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkwNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkwNiIgYmluZGluZz0idG5zOkJpbmRpbmc5MDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTA3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTA3IiBuYW1lPSJJbnB1dDkwNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MDciIG5hbWU9Ik91dHB1dDkwNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTA3IiB0eXBlPSJ0bnM6UG9ydFR5cGU5MDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTA3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkwNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTA3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzkwNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkwOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkwOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MDgiIG5hbWU9IklucHV0OTA4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkwOCIgbmFtZT0iT3V0cHV0OTA4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MDgiIHR5cGU9InRuczpQb3J0VHlwZTkwOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkwOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTA4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MDgiIGJpbmRpbmc9InRuczpCaW5kaW5nOTA4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkwOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTA5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTA5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkwOSIgbmFtZT0iSW5wdXQ5MDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTA5IiBuYW1lPSJPdXRwdXQ5MDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkwOSIgdHlwZT0idG5zOlBvcnRUeXBlOTA5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTA5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkwOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkwOSIgYmluZGluZz0idG5zOkJpbmRpbmc5MDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTEwIiBuYW1lPSJJbnB1dDkxMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MTAiIG5hbWU9Ik91dHB1dDkxMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTEwIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTEwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkxMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTEwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzkxMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkxMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkxMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MTEiIG5hbWU9IklucHV0OTExIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkxMSIgbmFtZT0iT3V0cHV0OTExIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MTEiIHR5cGU9InRuczpQb3J0VHlwZTkxMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkxMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTExIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MTEiIGJpbmRpbmc9InRuczpCaW5kaW5nOTExIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkxMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTEyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTEyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkxMiIgbmFtZT0iSW5wdXQ5MTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTEyIiBuYW1lPSJPdXRwdXQ5MTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkxMiIgdHlwZT0idG5zOlBvcnRUeXBlOTEyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTEyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkxMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkxMiIgYmluZGluZz0idG5zOkJpbmRpbmc5MTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTEzIiBuYW1lPSJJbnB1dDkxMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MTMiIG5hbWU9Ik91dHB1dDkxMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTEzIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTEzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkxMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTEzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzkxMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkxNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkxNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MTQiIG5hbWU9IklucHV0OTE0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkxNCIgbmFtZT0iT3V0cHV0OTE0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MTQiIHR5cGU9InRuczpQb3J0VHlwZTkxNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkxNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTE0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MTQiIGJpbmRpbmc9InRuczpCaW5kaW5nOTE0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkxNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTE1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTE1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkxNSIgbmFtZT0iSW5wdXQ5MTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTE1IiBuYW1lPSJPdXRwdXQ5MTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkxNSIgdHlwZT0idG5zOlBvcnRUeXBlOTE1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTE1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkxNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkxNSIgYmluZGluZz0idG5zOkJpbmRpbmc5MTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTE2IiBuYW1lPSJJbnB1dDkxNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MTYiIG5hbWU9Ik91dHB1dDkxNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTE2IiB0eXBlPSJ0bnM6UG9ydFR5cGU5MTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTE2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkxNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTE2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzkxNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkxNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkxNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MTciIG5hbWU9IklucHV0OTE3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkxNyIgbmFtZT0iT3V0cHV0OTE3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MTciIHR5cGU9InRuczpQb3J0VHlwZTkxNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkxNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTE3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MTciIGJpbmRpbmc9InRuczpCaW5kaW5nOTE3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkxOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTE4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTE4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkxOCIgbmFtZT0iSW5wdXQ5MTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTE4IiBuYW1lPSJPdXRwdXQ5MTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkxOCIgdHlwZT0idG5zOlBvcnRUeXBlOTE4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTE4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkxOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkxOCIgYmluZGluZz0idG5zOkJpbmRpbmc5MTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTE5IiBuYW1lPSJJbnB1dDkxOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MTkiIG5hbWU9Ik91dHB1dDkxOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTE5IiB0eXBlPSJ0bnM6UG9ydFR5cGU5MTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTE5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkxOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTE5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzkxOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkyMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MjAiIG5hbWU9IklucHV0OTIwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkyMCIgbmFtZT0iT3V0cHV0OTIwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MjAiIHR5cGU9InRuczpQb3J0VHlwZTkyMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTIwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MjAiIGJpbmRpbmc9InRuczpCaW5kaW5nOTIwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTIxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTIxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkyMSIgbmFtZT0iSW5wdXQ5MjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTIxIiBuYW1lPSJPdXRwdXQ5MjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkyMSIgdHlwZT0idG5zOlBvcnRUeXBlOTIxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTIxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkyMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkyMSIgYmluZGluZz0idG5zOkJpbmRpbmc5MjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTIyIiBuYW1lPSJJbnB1dDkyMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MjIiIG5hbWU9Ik91dHB1dDkyMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTIyIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTIyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkyMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTIyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzkyMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkyMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MjMiIG5hbWU9IklucHV0OTIzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkyMyIgbmFtZT0iT3V0cHV0OTIzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MjMiIHR5cGU9InRuczpQb3J0VHlwZTkyMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTIzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MjMiIGJpbmRpbmc9InRuczpCaW5kaW5nOTIzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTI0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTI0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkyNCIgbmFtZT0iSW5wdXQ5MjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTI0IiBuYW1lPSJPdXRwdXQ5MjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkyNCIgdHlwZT0idG5zOlBvcnRUeXBlOTI0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTI0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkyNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkyNCIgYmluZGluZz0idG5zOkJpbmRpbmc5MjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTI1IiBuYW1lPSJJbnB1dDkyNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MjUiIG5hbWU9Ik91dHB1dDkyNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTI1IiB0eXBlPSJ0bnM6UG9ydFR5cGU5MjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTI1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkyNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTI1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzkyNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkyNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MjYiIG5hbWU9IklucHV0OTI2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkyNiIgbmFtZT0iT3V0cHV0OTI2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MjYiIHR5cGU9InRuczpQb3J0VHlwZTkyNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTI2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MjYiIGJpbmRpbmc9InRuczpCaW5kaW5nOTI2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTI3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTI3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkyNyIgbmFtZT0iSW5wdXQ5MjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTI3IiBuYW1lPSJPdXRwdXQ5MjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkyNyIgdHlwZT0idG5zOlBvcnRUeXBlOTI3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTI3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkyNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkyNyIgYmluZGluZz0idG5zOkJpbmRpbmc5MjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTI4IiBuYW1lPSJJbnB1dDkyOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MjgiIG5hbWU9Ik91dHB1dDkyOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTI4IiB0eXBlPSJ0bnM6UG9ydFR5cGU5MjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTI4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkyOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTI4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzkyOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkyOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MjkiIG5hbWU9IklucHV0OTI5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkyOSIgbmFtZT0iT3V0cHV0OTI5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MjkiIHR5cGU9InRuczpQb3J0VHlwZTkyOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTI5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MjkiIGJpbmRpbmc9InRuczpCaW5kaW5nOTI5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTMwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTMwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkzMCIgbmFtZT0iSW5wdXQ5MzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTMwIiBuYW1lPSJPdXRwdXQ5MzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkzMCIgdHlwZT0idG5zOlBvcnRUeXBlOTMwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTMwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkzMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkzMCIgYmluZGluZz0idG5zOkJpbmRpbmc5MzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTMxIiBuYW1lPSJJbnB1dDkzMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MzEiIG5hbWU9Ik91dHB1dDkzMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTMxIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTMxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkzMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTMxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzkzMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkzMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkzMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MzIiIG5hbWU9IklucHV0OTMyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkzMiIgbmFtZT0iT3V0cHV0OTMyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MzIiIHR5cGU9InRuczpQb3J0VHlwZTkzMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkzMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTMyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MzIiIGJpbmRpbmc9InRuczpCaW5kaW5nOTMyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTMzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTMzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkzMyIgbmFtZT0iSW5wdXQ5MzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTMzIiBuYW1lPSJPdXRwdXQ5MzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkzMyIgdHlwZT0idG5zOlBvcnRUeXBlOTMzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTMzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkzMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkzMyIgYmluZGluZz0idG5zOkJpbmRpbmc5MzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTM0IiBuYW1lPSJJbnB1dDkzNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MzQiIG5hbWU9Ik91dHB1dDkzNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTM0IiB0eXBlPSJ0bnM6UG9ydFR5cGU5MzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTM0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkzNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTM0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzkzNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkzNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkzNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MzUiIG5hbWU9IklucHV0OTM1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkzNSIgbmFtZT0iT3V0cHV0OTM1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MzUiIHR5cGU9InRuczpQb3J0VHlwZTkzNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkzNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTM1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MzUiIGJpbmRpbmc9InRuczpCaW5kaW5nOTM1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTM2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTM2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkzNiIgbmFtZT0iSW5wdXQ5MzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTM2IiBuYW1lPSJPdXRwdXQ5MzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkzNiIgdHlwZT0idG5zOlBvcnRUeXBlOTM2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTM2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkzNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkzNiIgYmluZGluZz0idG5zOkJpbmRpbmc5MzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTM3IiBuYW1lPSJJbnB1dDkzNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MzciIG5hbWU9Ik91dHB1dDkzNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTM3IiB0eXBlPSJ0bnM6UG9ydFR5cGU5MzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTM3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkzNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTM3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzkzNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5MzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkzOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkzOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MzgiIG5hbWU9IklucHV0OTM4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkzOCIgbmFtZT0iT3V0cHV0OTM4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5MzgiIHR5cGU9InRuczpQb3J0VHlwZTkzOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkzOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245MzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTM4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MzgiIGJpbmRpbmc9InRuczpCaW5kaW5nOTM4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTkzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTM5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTM5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkzOSIgbmFtZT0iSW5wdXQ5MzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTM5IiBuYW1lPSJPdXRwdXQ5MzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkzOSIgdHlwZT0idG5zOlBvcnRUeXBlOTM5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTM5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkzOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5MzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkzOSIgYmluZGluZz0idG5zOkJpbmRpbmc5MzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTQwIiBuYW1lPSJJbnB1dDk0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NDAiIG5hbWU9Ik91dHB1dDk0MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTQwIiB0eXBlPSJ0bnM6UG9ydFR5cGU5NDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTQwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk0MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTQwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzk0MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk0MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk0MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NDEiIG5hbWU9IklucHV0OTQxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk0MSIgbmFtZT0iT3V0cHV0OTQxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NDEiIHR5cGU9InRuczpQb3J0VHlwZTk0MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk0MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTQxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NDEiIGJpbmRpbmc9InRuczpCaW5kaW5nOTQxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTQyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTQyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk0MiIgbmFtZT0iSW5wdXQ5NDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTQyIiBuYW1lPSJPdXRwdXQ5NDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk0MiIgdHlwZT0idG5zOlBvcnRUeXBlOTQyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTQyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk0MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk0MiIgYmluZGluZz0idG5zOkJpbmRpbmc5NDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTQzIiBuYW1lPSJJbnB1dDk0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NDMiIG5hbWU9Ik91dHB1dDk0MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTQzIiB0eXBlPSJ0bnM6UG9ydFR5cGU5NDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTQzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk0MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTQzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzk0MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk0NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk0NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NDQiIG5hbWU9IklucHV0OTQ0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk0NCIgbmFtZT0iT3V0cHV0OTQ0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NDQiIHR5cGU9InRuczpQb3J0VHlwZTk0NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk0NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTQ0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NDQiIGJpbmRpbmc9InRuczpCaW5kaW5nOTQ0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTQ1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTQ1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk0NSIgbmFtZT0iSW5wdXQ5NDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTQ1IiBuYW1lPSJPdXRwdXQ5NDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk0NSIgdHlwZT0idG5zOlBvcnRUeXBlOTQ1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTQ1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk0NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk0NSIgYmluZGluZz0idG5zOkJpbmRpbmc5NDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTQ2IiBuYW1lPSJJbnB1dDk0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NDYiIG5hbWU9Ik91dHB1dDk0NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTQ2IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTQ2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk0NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTQ2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk0NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk0NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk0NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NDciIG5hbWU9IklucHV0OTQ3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk0NyIgbmFtZT0iT3V0cHV0OTQ3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NDciIHR5cGU9InRuczpQb3J0VHlwZTk0NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk0NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTQ3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NDciIGJpbmRpbmc9InRuczpCaW5kaW5nOTQ3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTQ4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTQ4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk0OCIgbmFtZT0iSW5wdXQ5NDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTQ4IiBuYW1lPSJPdXRwdXQ5NDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk0OCIgdHlwZT0idG5zOlBvcnRUeXBlOTQ4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTQ4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk0OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk0OCIgYmluZGluZz0idG5zOkJpbmRpbmc5NDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTQ5IiBuYW1lPSJJbnB1dDk0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NDkiIG5hbWU9Ik91dHB1dDk0OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTQ5IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTQ5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk0OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTQ5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk0OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk1MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NTAiIG5hbWU9IklucHV0OTUwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk1MCIgbmFtZT0iT3V0cHV0OTUwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NTAiIHR5cGU9InRuczpQb3J0VHlwZTk1MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTUwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NTAiIGJpbmRpbmc9InRuczpCaW5kaW5nOTUwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTUxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTUxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk1MSIgbmFtZT0iSW5wdXQ5NTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTUxIiBuYW1lPSJPdXRwdXQ5NTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk1MSIgdHlwZT0idG5zOlBvcnRUeXBlOTUxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTUxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk1MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk1MSIgYmluZGluZz0idG5zOkJpbmRpbmc5NTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTUyIiBuYW1lPSJJbnB1dDk1MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NTIiIG5hbWU9Ik91dHB1dDk1MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTUyIiB0eXBlPSJ0bnM6UG9ydFR5cGU5NTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTUyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk1MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTUyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzk1MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk1MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NTMiIG5hbWU9IklucHV0OTUzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk1MyIgbmFtZT0iT3V0cHV0OTUzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NTMiIHR5cGU9InRuczpQb3J0VHlwZTk1MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTUzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NTMiIGJpbmRpbmc9InRuczpCaW5kaW5nOTUzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTU0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTU0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk1NCIgbmFtZT0iSW5wdXQ5NTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTU0IiBuYW1lPSJPdXRwdXQ5NTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk1NCIgdHlwZT0idG5zOlBvcnRUeXBlOTU0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTU0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk1NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk1NCIgYmluZGluZz0idG5zOkJpbmRpbmc5NTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTU1IiBuYW1lPSJJbnB1dDk1NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NTUiIG5hbWU9Ik91dHB1dDk1NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTU1IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTU1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk1NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTU1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk1NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk1NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NTYiIG5hbWU9IklucHV0OTU2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk1NiIgbmFtZT0iT3V0cHV0OTU2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NTYiIHR5cGU9InRuczpQb3J0VHlwZTk1NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTU2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NTYiIGJpbmRpbmc9InRuczpCaW5kaW5nOTU2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTU3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTU3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk1NyIgbmFtZT0iSW5wdXQ5NTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTU3IiBuYW1lPSJPdXRwdXQ5NTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk1NyIgdHlwZT0idG5zOlBvcnRUeXBlOTU3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTU3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk1NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk1NyIgYmluZGluZz0idG5zOkJpbmRpbmc5NTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTU4IiBuYW1lPSJJbnB1dDk1OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NTgiIG5hbWU9Ik91dHB1dDk1OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTU4IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTU4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk1OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTU4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk1OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk1OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NTkiIG5hbWU9IklucHV0OTU5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk1OSIgbmFtZT0iT3V0cHV0OTU5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NTkiIHR5cGU9InRuczpQb3J0VHlwZTk1OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTU5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NTkiIGJpbmRpbmc9InRuczpCaW5kaW5nOTU5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTYwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTYwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk2MCIgbmFtZT0iSW5wdXQ5NjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTYwIiBuYW1lPSJPdXRwdXQ5NjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk2MCIgdHlwZT0idG5zOlBvcnRUeXBlOTYwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTYwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk2MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk2MCIgYmluZGluZz0idG5zOkJpbmRpbmc5NjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTYxIiBuYW1lPSJJbnB1dDk2MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NjEiIG5hbWU9Ik91dHB1dDk2MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTYxIiB0eXBlPSJ0bnM6UG9ydFR5cGU5NjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTYxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk2MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTYxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzk2MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk2MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk2MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NjIiIG5hbWU9IklucHV0OTYyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk2MiIgbmFtZT0iT3V0cHV0OTYyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NjIiIHR5cGU9InRuczpQb3J0VHlwZTk2MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk2MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTYyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NjIiIGJpbmRpbmc9InRuczpCaW5kaW5nOTYyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTYzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTYzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk2MyIgbmFtZT0iSW5wdXQ5NjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTYzIiBuYW1lPSJPdXRwdXQ5NjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk2MyIgdHlwZT0idG5zOlBvcnRUeXBlOTYzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTYzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk2MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk2MyIgYmluZGluZz0idG5zOkJpbmRpbmc5NjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTY0IiBuYW1lPSJJbnB1dDk2NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NjQiIG5hbWU9Ik91dHB1dDk2NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTY0IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTY0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk2NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTY0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk2NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk2NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk2NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NjUiIG5hbWU9IklucHV0OTY1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk2NSIgbmFtZT0iT3V0cHV0OTY1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NjUiIHR5cGU9InRuczpQb3J0VHlwZTk2NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk2NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTY1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NjUiIGJpbmRpbmc9InRuczpCaW5kaW5nOTY1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTY2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTY2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk2NiIgbmFtZT0iSW5wdXQ5NjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTY2IiBuYW1lPSJPdXRwdXQ5NjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk2NiIgdHlwZT0idG5zOlBvcnRUeXBlOTY2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTY2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk2NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk2NiIgYmluZGluZz0idG5zOkJpbmRpbmc5NjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTY3IiBuYW1lPSJJbnB1dDk2NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NjciIG5hbWU9Ik91dHB1dDk2NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTY3IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTY3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk2NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTY3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk2NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk2OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk2OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NjgiIG5hbWU9IklucHV0OTY4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk2OCIgbmFtZT0iT3V0cHV0OTY4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NjgiIHR5cGU9InRuczpQb3J0VHlwZTk2OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk2OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTY4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NjgiIGJpbmRpbmc9InRuczpCaW5kaW5nOTY4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTY5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTY5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk2OSIgbmFtZT0iSW5wdXQ5NjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTY5IiBuYW1lPSJPdXRwdXQ5NjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk2OSIgdHlwZT0idG5zOlBvcnRUeXBlOTY5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTY5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk2OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk2OSIgYmluZGluZz0idG5zOkJpbmRpbmc5NjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTcwIiBuYW1lPSJJbnB1dDk3MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NzAiIG5hbWU9Ik91dHB1dDk3MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTcwIiB0eXBlPSJ0bnM6UG9ydFR5cGU5NzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTcwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk3MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTcwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzk3MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk3MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk3MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NzEiIG5hbWU9IklucHV0OTcxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk3MSIgbmFtZT0iT3V0cHV0OTcxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NzEiIHR5cGU9InRuczpQb3J0VHlwZTk3MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk3MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTcxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NzEiIGJpbmRpbmc9InRuczpCaW5kaW5nOTcxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTcyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTcyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk3MiIgbmFtZT0iSW5wdXQ5NzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTcyIiBuYW1lPSJPdXRwdXQ5NzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk3MiIgdHlwZT0idG5zOlBvcnRUeXBlOTcyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTcyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk3MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk3MiIgYmluZGluZz0idG5zOkJpbmRpbmc5NzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTczIiBuYW1lPSJJbnB1dDk3MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NzMiIG5hbWU9Ik91dHB1dDk3MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTczIiB0eXBlPSJ0bnM6UG9ydFR5cGU5NzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTczIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk3MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTczIiBiaW5kaW5nPSJ0bnM6QmluZGluZzk3MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk3NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk3NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NzQiIG5hbWU9IklucHV0OTc0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk3NCIgbmFtZT0iT3V0cHV0OTc0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NzQiIHR5cGU9InRuczpQb3J0VHlwZTk3NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk3NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTc0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NzQiIGJpbmRpbmc9InRuczpCaW5kaW5nOTc0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTc1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTc1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk3NSIgbmFtZT0iSW5wdXQ5NzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTc1IiBuYW1lPSJPdXRwdXQ5NzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk3NSIgdHlwZT0idG5zOlBvcnRUeXBlOTc1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTc1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk3NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk3NSIgYmluZGluZz0idG5zOkJpbmRpbmc5NzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTc2IiBuYW1lPSJJbnB1dDk3NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NzYiIG5hbWU9Ik91dHB1dDk3NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTc2IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTc2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk3NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTc2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk3NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5NzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk3NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk3NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NzciIG5hbWU9IklucHV0OTc3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk3NyIgbmFtZT0iT3V0cHV0OTc3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5NzciIHR5cGU9InRuczpQb3J0VHlwZTk3NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk3NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245NzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTc3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NzciIGJpbmRpbmc9InRuczpCaW5kaW5nOTc3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTc4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTc4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk3OCIgbmFtZT0iSW5wdXQ5NzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTc4IiBuYW1lPSJPdXRwdXQ5NzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk3OCIgdHlwZT0idG5zOlBvcnRUeXBlOTc4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTc4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk3OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5NzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk3OCIgYmluZGluZz0idG5zOkJpbmRpbmc5NzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTc5IiBuYW1lPSJJbnB1dDk3OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NzkiIG5hbWU9Ik91dHB1dDk3OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTc5IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTc5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk3OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTc5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk3OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5ODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5ODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5ODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk4MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5ODAiIG5hbWU9IklucHV0OTgwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk4MCIgbmFtZT0iT3V0cHV0OTgwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5ODAiIHR5cGU9InRuczpQb3J0VHlwZTk4MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245ODAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTgwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5ODAiIGJpbmRpbmc9InRuczpCaW5kaW5nOTgwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5ODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTgxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTgxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk4MSIgbmFtZT0iSW5wdXQ5ODEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTgxIiBuYW1lPSJPdXRwdXQ5ODEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk4MSIgdHlwZT0idG5zOlBvcnRUeXBlOTgxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTgxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk4MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5ODEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk4MSIgYmluZGluZz0idG5zOkJpbmRpbmc5ODEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5ODIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245ODIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTgyIiBuYW1lPSJJbnB1dDk4MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5ODIiIG5hbWU9Ik91dHB1dDk4MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTgyIiB0eXBlPSJ0bnM6UG9ydFR5cGU5ODIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245ODIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTgyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk4MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTgyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzk4MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5ODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5ODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5ODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk4MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5ODMiIG5hbWU9IklucHV0OTgzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk4MyIgbmFtZT0iT3V0cHV0OTgzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5ODMiIHR5cGU9InRuczpQb3J0VHlwZTk4MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245ODMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTgzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5ODMiIGJpbmRpbmc9InRuczpCaW5kaW5nOTgzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5ODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTg0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTg0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk4NCIgbmFtZT0iSW5wdXQ5ODQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTg0IiBuYW1lPSJPdXRwdXQ5ODQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk4NCIgdHlwZT0idG5zOlBvcnRUeXBlOTg0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTg0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk4NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5ODQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk4NCIgYmluZGluZz0idG5zOkJpbmRpbmc5ODQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5ODUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245ODUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTg1IiBuYW1lPSJJbnB1dDk4NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5ODUiIG5hbWU9Ik91dHB1dDk4NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTg1IiB0eXBlPSJ0bnM6UG9ydFR5cGU5ODUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245ODUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTg1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk4NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTg1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk4NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5ODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5ODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5ODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk4NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5ODYiIG5hbWU9IklucHV0OTg2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk4NiIgbmFtZT0iT3V0cHV0OTg2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5ODYiIHR5cGU9InRuczpQb3J0VHlwZTk4NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245ODYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTg2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5ODYiIGJpbmRpbmc9InRuczpCaW5kaW5nOTg2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5ODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTg3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTg3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk4NyIgbmFtZT0iSW5wdXQ5ODciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTg3IiBuYW1lPSJPdXRwdXQ5ODciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk4NyIgdHlwZT0idG5zOlBvcnRUeXBlOTg3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTg3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk4NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5ODciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk4NyIgYmluZGluZz0idG5zOkJpbmRpbmc5ODciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5ODgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245ODgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTg4IiBuYW1lPSJJbnB1dDk4OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5ODgiIG5hbWU9Ik91dHB1dDk4OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTg4IiB0eXBlPSJ0bnM6UG9ydFR5cGU5ODgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245ODgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTg4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk4OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTg4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk4OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5ODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5ODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5ODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk4OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5ODkiIG5hbWU9IklucHV0OTg5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk4OSIgbmFtZT0iT3V0cHV0OTg5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5ODkiIHR5cGU9InRuczpQb3J0VHlwZTk4OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245ODkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTg5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5ODkiIGJpbmRpbmc9InRuczpCaW5kaW5nOTg5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5OTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTkwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTkwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk5MCIgbmFtZT0iSW5wdXQ5OTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTkwIiBuYW1lPSJPdXRwdXQ5OTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk5MCIgdHlwZT0idG5zOlBvcnRUeXBlOTkwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTkwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk5MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5OTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk5MCIgYmluZGluZz0idG5zOkJpbmRpbmc5OTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5OTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTkxIiBuYW1lPSJJbnB1dDk5MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5OTEiIG5hbWU9Ik91dHB1dDk5MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTkxIiB0eXBlPSJ0bnM6UG9ydFR5cGU5OTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTkxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk5MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTkxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzk5MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5OTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5OTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5OTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk5MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk5MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5OTIiIG5hbWU9IklucHV0OTkyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk5MiIgbmFtZT0iT3V0cHV0OTkyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5OTIiIHR5cGU9InRuczpQb3J0VHlwZTk5MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk5MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245OTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTkyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5OTIiIGJpbmRpbmc9InRuczpCaW5kaW5nOTkyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5OTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTkzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTkzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk5MyIgbmFtZT0iSW5wdXQ5OTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTkzIiBuYW1lPSJPdXRwdXQ5OTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk5MyIgdHlwZT0idG5zOlBvcnRUeXBlOTkzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTkzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk5MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5OTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk5MyIgYmluZGluZz0idG5zOkJpbmRpbmc5OTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5OTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTk0IiBuYW1lPSJJbnB1dDk5NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5OTQiIG5hbWU9Ik91dHB1dDk5NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTk0IiB0eXBlPSJ0bnM6UG9ydFR5cGU5OTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTk0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk5NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTk0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk5NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5OTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5OTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5OTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk5NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk5NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5OTUiIG5hbWU9IklucHV0OTk1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk5NSIgbmFtZT0iT3V0cHV0OTk1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5OTUiIHR5cGU9InRuczpQb3J0VHlwZTk5NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk5NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245OTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTk1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5OTUiIGJpbmRpbmc9InRuczpCaW5kaW5nOTk1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5OTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTk2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTk2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk5NiIgbmFtZT0iSW5wdXQ5OTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTk2IiBuYW1lPSJPdXRwdXQ5OTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk5NiIgdHlwZT0idG5zOlBvcnRUeXBlOTk2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTk2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk5NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5OTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk5NiIgYmluZGluZz0idG5zOkJpbmRpbmc5OTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOTk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDk5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5OTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOTk3IiBuYW1lPSJJbnB1dDk5NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5OTciIG5hbWU9Ik91dHB1dDk5NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTk3IiB0eXBlPSJ0bnM6UG9ydFR5cGU5OTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTk3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk5NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OTk3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk5NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5OTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5OTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5OTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTk5OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk5OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5OTgiIG5hbWU9IklucHV0OTk4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk5OCIgbmFtZT0iT3V0cHV0OTk4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5OTgiIHR5cGU9InRuczpQb3J0VHlwZTk5OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk5OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245OTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTk4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5OTgiIGJpbmRpbmc9InRuczpCaW5kaW5nOTk4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTk5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5OTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTk5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTk5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk5OSIgbmFtZT0iSW5wdXQ5OTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOTk5IiBuYW1lPSJPdXRwdXQ5OTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk5OSIgdHlwZT0idG5zOlBvcnRUeXBlOTk5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTk5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk5OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U5OTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk5OSIgYmluZGluZz0idG5zOkJpbmRpbmc5OTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8yMDBLQi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS8yMDBLQi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWQzNzA2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvMjAwS0Iud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDYyMDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IkRlZmluaXRpb24iIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scyI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTAwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTAzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTA2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTA5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDExMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDExNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDExNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPC94c2Q6c2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMCIgbmFtZT0iSW5wdXQwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTAiIG5hbWU9Ik91dHB1dDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzAiIHR5cGU9InRuczpQb3J0VHlwZTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24wIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MCIgYmluZGluZz0idG5zOkJpbmRpbmcwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEiIG5hbWU9IklucHV0MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxIiBuYW1lPSJPdXRwdXQxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEiIGJpbmRpbmc9InRuczpCaW5kaW5nMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyIiBuYW1lPSJJbnB1dDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMiIgbmFtZT0iT3V0cHV0MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMiIgdHlwZT0idG5zOlBvcnRUeXBlMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMyIgbmFtZT0iSW5wdXQzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMiIG5hbWU9Ik91dHB1dDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMiIHR5cGU9InRuczpQb3J0VHlwZTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MyIgYmluZGluZz0idG5zOkJpbmRpbmczIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQiIG5hbWU9IklucHV0NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0IiBuYW1lPSJPdXRwdXQ0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0IiB0eXBlPSJ0bnM6UG9ydFR5cGU0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQiIGJpbmRpbmc9InRuczpCaW5kaW5nNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1IiBuYW1lPSJJbnB1dDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNSIgbmFtZT0iT3V0cHV0NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNSIgdHlwZT0idG5zOlBvcnRUeXBlNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNiIgbmFtZT0iSW5wdXQ2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYiIG5hbWU9Ik91dHB1dDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYiIHR5cGU9InRuczpQb3J0VHlwZTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NiIgYmluZGluZz0idG5zOkJpbmRpbmc2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTciIG5hbWU9IklucHV0NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3IiBuYW1lPSJPdXRwdXQ3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc3IiB0eXBlPSJ0bnM6UG9ydFR5cGU3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb243Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDciIGJpbmRpbmc9InRuczpCaW5kaW5nNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4IiBuYW1lPSJJbnB1dDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlOCIgbmFtZT0iT3V0cHV0OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOCIgdHlwZT0idG5zOlBvcnRUeXBlOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOSIgbmFtZT0iSW5wdXQ5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkiIG5hbWU9Ik91dHB1dDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkiIHR5cGU9InRuczpQb3J0VHlwZTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OSIgYmluZGluZz0idG5zOkJpbmRpbmc5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwIiBuYW1lPSJJbnB1dDEwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwIiBuYW1lPSJPdXRwdXQxMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTAiIHR5cGU9InRuczpQb3J0VHlwZTEwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExIiBuYW1lPSJJbnB1dDExIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExIiBuYW1lPSJPdXRwdXQxMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTEiIHR5cGU9InRuczpQb3J0VHlwZTExIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExIiBiaW5kaW5nPSJ0bnM6QmluZGluZzExIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyIiBuYW1lPSJJbnB1dDEyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyIiBuYW1lPSJPdXRwdXQxMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTIiIHR5cGU9InRuczpQb3J0VHlwZTEyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzIiBuYW1lPSJJbnB1dDEzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzIiBuYW1lPSJPdXRwdXQxMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTMiIHR5cGU9InRuczpQb3J0VHlwZTEzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0IiBuYW1lPSJJbnB1dDE0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0IiBuYW1lPSJPdXRwdXQxNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQiIHR5cGU9InRuczpQb3J0VHlwZTE0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1IiBuYW1lPSJJbnB1dDE1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1IiBuYW1lPSJPdXRwdXQxNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTUiIHR5cGU9InRuczpQb3J0VHlwZTE1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2IiBuYW1lPSJJbnB1dDE2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2IiBuYW1lPSJPdXRwdXQxNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTYiIHR5cGU9InRuczpQb3J0VHlwZTE2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3IiBuYW1lPSJJbnB1dDE3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3IiBuYW1lPSJPdXRwdXQxNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTciIHR5cGU9InRuczpQb3J0VHlwZTE3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4IiBuYW1lPSJJbnB1dDE4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4IiBuYW1lPSJPdXRwdXQxOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTgiIHR5cGU9InRuczpQb3J0VHlwZTE4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5IiBuYW1lPSJJbnB1dDE5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5IiBuYW1lPSJPdXRwdXQxOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTkiIHR5cGU9InRuczpQb3J0VHlwZTE5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIwIiBuYW1lPSJJbnB1dDIwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIwIiBuYW1lPSJPdXRwdXQyMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjAiIHR5cGU9InRuczpQb3J0VHlwZTIwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIxIiBuYW1lPSJJbnB1dDIxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIxIiBuYW1lPSJPdXRwdXQyMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjEiIHR5cGU9InRuczpQb3J0VHlwZTIxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIyIiBuYW1lPSJJbnB1dDIyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIyIiBuYW1lPSJPdXRwdXQyMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjIiIHR5cGU9InRuczpQb3J0VHlwZTIyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIzIiBuYW1lPSJJbnB1dDIzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIzIiBuYW1lPSJPdXRwdXQyMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjMiIHR5cGU9InRuczpQb3J0VHlwZTIzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI0IiBuYW1lPSJJbnB1dDI0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI0IiBuYW1lPSJPdXRwdXQyNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjQiIHR5cGU9InRuczpQb3J0VHlwZTI0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI1IiBuYW1lPSJJbnB1dDI1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI1IiBuYW1lPSJPdXRwdXQyNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjUiIHR5cGU9InRuczpQb3J0VHlwZTI1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI2IiBuYW1lPSJJbnB1dDI2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI2IiBuYW1lPSJPdXRwdXQyNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjYiIHR5cGU9InRuczpQb3J0VHlwZTI2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI3IiBuYW1lPSJJbnB1dDI3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI3IiBuYW1lPSJPdXRwdXQyNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjciIHR5cGU9InRuczpQb3J0VHlwZTI3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI4IiBuYW1lPSJJbnB1dDI4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI4IiBuYW1lPSJPdXRwdXQyOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjgiIHR5cGU9InRuczpQb3J0VHlwZTI4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI5IiBuYW1lPSJJbnB1dDI5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI5IiBuYW1lPSJPdXRwdXQyOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjkiIHR5cGU9InRuczpQb3J0VHlwZTI5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMwIiBuYW1lPSJJbnB1dDMwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMwIiBuYW1lPSJPdXRwdXQzMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzAiIHR5cGU9InRuczpQb3J0VHlwZTMwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMxIiBuYW1lPSJJbnB1dDMxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMxIiBuYW1lPSJPdXRwdXQzMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzEiIHR5cGU9InRuczpQb3J0VHlwZTMxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMyIiBuYW1lPSJJbnB1dDMyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMyIiBuYW1lPSJPdXRwdXQzMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzIiIHR5cGU9InRuczpQb3J0VHlwZTMyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMzIiBuYW1lPSJJbnB1dDMzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMzIiBuYW1lPSJPdXRwdXQzMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzMiIHR5cGU9InRuczpQb3J0VHlwZTMzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM0IiBuYW1lPSJJbnB1dDM0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM0IiBuYW1lPSJPdXRwdXQzNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzQiIHR5cGU9InRuczpQb3J0VHlwZTM0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM1IiBuYW1lPSJJbnB1dDM1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM1IiBuYW1lPSJPdXRwdXQzNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzUiIHR5cGU9InRuczpQb3J0VHlwZTM1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM2IiBuYW1lPSJJbnB1dDM2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM2IiBuYW1lPSJPdXRwdXQzNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzYiIHR5cGU9InRuczpQb3J0VHlwZTM2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM3IiBuYW1lPSJJbnB1dDM3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM3IiBuYW1lPSJPdXRwdXQzNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzciIHR5cGU9InRuczpQb3J0VHlwZTM3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM4IiBuYW1lPSJJbnB1dDM4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM4IiBuYW1lPSJPdXRwdXQzOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzgiIHR5cGU9InRuczpQb3J0VHlwZTM4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM5IiBuYW1lPSJJbnB1dDM5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM5IiBuYW1lPSJPdXRwdXQzOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzkiIHR5cGU9InRuczpQb3J0VHlwZTM5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQwIiBuYW1lPSJJbnB1dDQwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQwIiBuYW1lPSJPdXRwdXQ0MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDAiIHR5cGU9InRuczpQb3J0VHlwZTQwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQxIiBuYW1lPSJJbnB1dDQxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQxIiBuYW1lPSJPdXRwdXQ0MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDEiIHR5cGU9InRuczpQb3J0VHlwZTQxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQyIiBuYW1lPSJJbnB1dDQyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQyIiBuYW1lPSJPdXRwdXQ0MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDIiIHR5cGU9InRuczpQb3J0VHlwZTQyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQzIiBuYW1lPSJJbnB1dDQzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQzIiBuYW1lPSJPdXRwdXQ0MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDMiIHR5cGU9InRuczpQb3J0VHlwZTQzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ0IiBuYW1lPSJJbnB1dDQ0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ0IiBuYW1lPSJPdXRwdXQ0NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDQiIHR5cGU9InRuczpQb3J0VHlwZTQ0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ1IiBuYW1lPSJJbnB1dDQ1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ1IiBuYW1lPSJPdXRwdXQ0NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDUiIHR5cGU9InRuczpQb3J0VHlwZTQ1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ2IiBuYW1lPSJJbnB1dDQ2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ2IiBuYW1lPSJPdXRwdXQ0NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDYiIHR5cGU9InRuczpQb3J0VHlwZTQ2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ3IiBuYW1lPSJJbnB1dDQ3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ3IiBuYW1lPSJPdXRwdXQ0NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDciIHR5cGU9InRuczpQb3J0VHlwZTQ3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ4IiBuYW1lPSJJbnB1dDQ4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ4IiBuYW1lPSJPdXRwdXQ0OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDgiIHR5cGU9InRuczpQb3J0VHlwZTQ4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ5IiBuYW1lPSJJbnB1dDQ5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ5IiBuYW1lPSJPdXRwdXQ0OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDkiIHR5cGU9InRuczpQb3J0VHlwZTQ5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUwIiBuYW1lPSJJbnB1dDUwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUwIiBuYW1lPSJPdXRwdXQ1MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTAiIHR5cGU9InRuczpQb3J0VHlwZTUwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzUwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUxIiBuYW1lPSJJbnB1dDUxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUxIiBuYW1lPSJPdXRwdXQ1MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTEiIHR5cGU9InRuczpQb3J0VHlwZTUxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzUxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUyIiBuYW1lPSJJbnB1dDUyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUyIiBuYW1lPSJPdXRwdXQ1MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTIiIHR5cGU9InRuczpQb3J0VHlwZTUyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzUyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTUzIiBuYW1lPSJJbnB1dDUzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUzIiBuYW1lPSJPdXRwdXQ1MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTMiIHR5cGU9InRuczpQb3J0VHlwZTUzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDUzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzUzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU0IiBuYW1lPSJJbnB1dDU0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU0IiBuYW1lPSJPdXRwdXQ1NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTQiIHR5cGU9InRuczpQb3J0VHlwZTU0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU1IiBuYW1lPSJJbnB1dDU1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU1IiBuYW1lPSJPdXRwdXQ1NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTUiIHR5cGU9InRuczpQb3J0VHlwZTU1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU2IiBuYW1lPSJJbnB1dDU2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU2IiBuYW1lPSJPdXRwdXQ1NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTYiIHR5cGU9InRuczpQb3J0VHlwZTU2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU3IiBuYW1lPSJJbnB1dDU3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU3IiBuYW1lPSJPdXRwdXQ1NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTciIHR5cGU9InRuczpQb3J0VHlwZTU3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU4IiBuYW1lPSJJbnB1dDU4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU4IiBuYW1lPSJPdXRwdXQ1OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTgiIHR5cGU9InRuczpQb3J0VHlwZTU4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU1OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTU5IiBuYW1lPSJJbnB1dDU5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTU5IiBuYW1lPSJPdXRwdXQ1OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNTkiIHR5cGU9InRuczpQb3J0VHlwZTU5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDU5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzU5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYwIiBuYW1lPSJJbnB1dDYwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYwIiBuYW1lPSJPdXRwdXQ2MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjAiIHR5cGU9InRuczpQb3J0VHlwZTYwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzYwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYxIiBuYW1lPSJJbnB1dDYxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYxIiBuYW1lPSJPdXRwdXQ2MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjEiIHR5cGU9InRuczpQb3J0VHlwZTYxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzYxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYyIiBuYW1lPSJJbnB1dDYyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYyIiBuYW1lPSJPdXRwdXQ2MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjIiIHR5cGU9InRuczpQb3J0VHlwZTYyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzYyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYzIiBuYW1lPSJJbnB1dDYzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTYzIiBuYW1lPSJPdXRwdXQ2MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjMiIHR5cGU9InRuczpQb3J0VHlwZTYzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzYzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY0IiBuYW1lPSJJbnB1dDY0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY0IiBuYW1lPSJPdXRwdXQ2NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjQiIHR5cGU9InRuczpQb3J0VHlwZTY0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY1IiBuYW1lPSJJbnB1dDY1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY1IiBuYW1lPSJPdXRwdXQ2NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjUiIHR5cGU9InRuczpQb3J0VHlwZTY1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY2IiBuYW1lPSJJbnB1dDY2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY2IiBuYW1lPSJPdXRwdXQ2NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjYiIHR5cGU9InRuczpQb3J0VHlwZTY2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY3IiBuYW1lPSJJbnB1dDY3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY3IiBuYW1lPSJPdXRwdXQ2NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjciIHR5cGU9InRuczpQb3J0VHlwZTY3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY4IiBuYW1lPSJJbnB1dDY4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY4IiBuYW1lPSJPdXRwdXQ2OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjgiIHR5cGU9InRuczpQb3J0VHlwZTY4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU2OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTY5IiBuYW1lPSJJbnB1dDY5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTY5IiBuYW1lPSJPdXRwdXQ2OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNjkiIHR5cGU9InRuczpQb3J0VHlwZTY5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDY5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzY5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcwIiBuYW1lPSJJbnB1dDcwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcwIiBuYW1lPSJPdXRwdXQ3MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzAiIHR5cGU9InRuczpQb3J0VHlwZTcwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzcwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcxIiBuYW1lPSJJbnB1dDcxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcxIiBuYW1lPSJPdXRwdXQ3MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzEiIHR5cGU9InRuczpQb3J0VHlwZTcxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzcxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTcyIiBuYW1lPSJJbnB1dDcyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTcyIiBuYW1lPSJPdXRwdXQ3MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzIiIHR5cGU9InRuczpQb3J0VHlwZTcyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDcyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzcyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjczIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTczIiBuYW1lPSJJbnB1dDczIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTczIiBuYW1lPSJPdXRwdXQ3MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzMiIHR5cGU9InRuczpQb3J0VHlwZTczIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDczIiBiaW5kaW5nPSJ0bnM6QmluZGluZzczIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc0IiBuYW1lPSJJbnB1dDc0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc0IiBuYW1lPSJPdXRwdXQ3NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzQiIHR5cGU9InRuczpQb3J0VHlwZTc0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc1IiBuYW1lPSJJbnB1dDc1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc1IiBuYW1lPSJPdXRwdXQ3NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzUiIHR5cGU9InRuczpQb3J0VHlwZTc1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc2IiBuYW1lPSJJbnB1dDc2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc2IiBuYW1lPSJPdXRwdXQ3NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzYiIHR5cGU9InRuczpQb3J0VHlwZTc2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc3IiBuYW1lPSJJbnB1dDc3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc3IiBuYW1lPSJPdXRwdXQ3NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzciIHR5cGU9InRuczpQb3J0VHlwZTc3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc4IiBuYW1lPSJJbnB1dDc4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc4IiBuYW1lPSJPdXRwdXQ3OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzgiIHR5cGU9InRuczpQb3J0VHlwZTc4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTc5IiBuYW1lPSJJbnB1dDc5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTc5IiBuYW1lPSJPdXRwdXQ3OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNzkiIHR5cGU9InRuczpQb3J0VHlwZTc5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDc5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzc5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgwIiBuYW1lPSJJbnB1dDgwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgwIiBuYW1lPSJPdXRwdXQ4MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODAiIHR5cGU9InRuczpQb3J0VHlwZTgwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzgwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgxIiBuYW1lPSJJbnB1dDgxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgxIiBuYW1lPSJPdXRwdXQ4MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODEiIHR5cGU9InRuczpQb3J0VHlwZTgxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzgxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgyIiBuYW1lPSJJbnB1dDgyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgyIiBuYW1lPSJPdXRwdXQ4MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODIiIHR5cGU9InRuczpQb3J0VHlwZTgyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzgyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTgzIiBuYW1lPSJJbnB1dDgzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgzIiBuYW1lPSJPdXRwdXQ4MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODMiIHR5cGU9InRuczpQb3J0VHlwZTgzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDgzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzgzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg0IiBuYW1lPSJJbnB1dDg0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg0IiBuYW1lPSJPdXRwdXQ4NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODQiIHR5cGU9InRuczpQb3J0VHlwZTg0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg1IiBuYW1lPSJJbnB1dDg1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg1IiBuYW1lPSJPdXRwdXQ4NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODUiIHR5cGU9InRuczpQb3J0VHlwZTg1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg2IiBuYW1lPSJJbnB1dDg2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg2IiBuYW1lPSJPdXRwdXQ4NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODYiIHR5cGU9InRuczpQb3J0VHlwZTg2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg3IiBuYW1lPSJJbnB1dDg3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg3IiBuYW1lPSJPdXRwdXQ4NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODciIHR5cGU9InRuczpQb3J0VHlwZTg3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg4IiBuYW1lPSJJbnB1dDg4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg4IiBuYW1lPSJPdXRwdXQ4OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODgiIHR5cGU9InRuczpQb3J0VHlwZTg4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50ODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU4OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTg5IiBuYW1lPSJJbnB1dDg5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTg5IiBuYW1lPSJPdXRwdXQ4OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nODkiIHR5cGU9InRuczpQb3J0VHlwZTg5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uODkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uODkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlODkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDg5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzg5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkwIiBuYW1lPSJJbnB1dDkwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkwIiBuYW1lPSJPdXRwdXQ5MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTAiIHR5cGU9InRuczpQb3J0VHlwZTkwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzkwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkxIiBuYW1lPSJJbnB1dDkxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkxIiBuYW1lPSJPdXRwdXQ5MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTEiIHR5cGU9InRuczpQb3J0VHlwZTkxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzkxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkyIiBuYW1lPSJJbnB1dDkyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkyIiBuYW1lPSJPdXRwdXQ5MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTIiIHR5cGU9InRuczpQb3J0VHlwZTkyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzkyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkzIiBuYW1lPSJJbnB1dDkzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTkzIiBuYW1lPSJPdXRwdXQ5MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTMiIHR5cGU9InRuczpQb3J0VHlwZTkzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzkzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk0IiBuYW1lPSJJbnB1dDk0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk0IiBuYW1lPSJPdXRwdXQ5NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTQiIHR5cGU9InRuczpQb3J0VHlwZTk0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk1IiBuYW1lPSJJbnB1dDk1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk1IiBuYW1lPSJPdXRwdXQ5NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTUiIHR5cGU9InRuczpQb3J0VHlwZTk1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk2IiBuYW1lPSJJbnB1dDk2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk2IiBuYW1lPSJPdXRwdXQ5NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTYiIHR5cGU9InRuczpQb3J0VHlwZTk2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk3IiBuYW1lPSJJbnB1dDk3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk3IiBuYW1lPSJPdXRwdXQ5NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTciIHR5cGU9InRuczpQb3J0VHlwZTk3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk4IiBuYW1lPSJJbnB1dDk4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk4IiBuYW1lPSJPdXRwdXQ5OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTgiIHR5cGU9InRuczpQb3J0VHlwZTk4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50OTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU5OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTk5IiBuYW1lPSJJbnB1dDk5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTk5IiBuYW1lPSJPdXRwdXQ5OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nOTkiIHR5cGU9InRuczpQb3J0VHlwZTk5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uOTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDk5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzk5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTAwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwMCIgbmFtZT0iSW5wdXQxMDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTAwIiBuYW1lPSJPdXRwdXQxMDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwMCIgdHlwZT0idG5zOlBvcnRUeXBlMTAwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwMCIgYmluZGluZz0idG5zOkJpbmRpbmcxMDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTAxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTAxIiBuYW1lPSJJbnB1dDEwMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDEiIG5hbWU9Ik91dHB1dDEwMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTAxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTAxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTAxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDIiIG5hbWU9IklucHV0MTAyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwMiIgbmFtZT0iT3V0cHV0MTAyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDIiIHR5cGU9InRuczpQb3J0VHlwZTEwMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTAyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTAyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTAzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwMyIgbmFtZT0iSW5wdXQxMDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTAzIiBuYW1lPSJPdXRwdXQxMDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwMyIgdHlwZT0idG5zOlBvcnRUeXBlMTAzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwMyIgYmluZGluZz0idG5zOkJpbmRpbmcxMDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTA0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTA0IiBuYW1lPSJJbnB1dDEwNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDQiIG5hbWU9Ik91dHB1dDEwNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTA0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTA0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTA0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDUiIG5hbWU9IklucHV0MTA1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwNSIgbmFtZT0iT3V0cHV0MTA1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDUiIHR5cGU9InRuczpQb3J0VHlwZTEwNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTA1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTA1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTA2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwNiIgbmFtZT0iSW5wdXQxMDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTA2IiBuYW1lPSJPdXRwdXQxMDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwNiIgdHlwZT0idG5zOlBvcnRUeXBlMTA2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwNiIgYmluZGluZz0idG5zOkJpbmRpbmcxMDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTA3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTA3IiBuYW1lPSJJbnB1dDEwNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDciIG5hbWU9Ik91dHB1dDEwNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTA3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTA3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTA3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDgiIG5hbWU9IklucHV0MTA4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwOCIgbmFtZT0iT3V0cHV0MTA4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDgiIHR5cGU9InRuczpQb3J0VHlwZTEwOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTA4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTA4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTA5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwOSIgbmFtZT0iSW5wdXQxMDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTA5IiBuYW1lPSJPdXRwdXQxMDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwOSIgdHlwZT0idG5zOlBvcnRUeXBlMTA5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwOSIgYmluZGluZz0idG5zOkJpbmRpbmcxMDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTEwIiBuYW1lPSJJbnB1dDExMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTAiIG5hbWU9Ik91dHB1dDExMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTEwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTEwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTEwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzExMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTEiIG5hbWU9IklucHV0MTExIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExMSIgbmFtZT0iT3V0cHV0MTExIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTEiIHR5cGU9InRuczpQb3J0VHlwZTExMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTExIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTExIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTEyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTEyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExMiIgbmFtZT0iSW5wdXQxMTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTEyIiBuYW1lPSJPdXRwdXQxMTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExMiIgdHlwZT0idG5zOlBvcnRUeXBlMTEyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTEyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExMiIgYmluZGluZz0idG5zOkJpbmRpbmcxMTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTEzIiBuYW1lPSJJbnB1dDExMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTMiIG5hbWU9Ik91dHB1dDExMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTEzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTEzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTEzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzExMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTQiIG5hbWU9IklucHV0MTE0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExNCIgbmFtZT0iT3V0cHV0MTE0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTQiIHR5cGU9InRuczpQb3J0VHlwZTExNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTE0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTE0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTE1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExNSIgbmFtZT0iSW5wdXQxMTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTE1IiBuYW1lPSJPdXRwdXQxMTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExNSIgdHlwZT0idG5zOlBvcnRUeXBlMTE1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExNSIgYmluZGluZz0idG5zOkJpbmRpbmcxMTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTE2IiBuYW1lPSJJbnB1dDExNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTYiIG5hbWU9Ik91dHB1dDExNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTE2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTE2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTE2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzExNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTciIG5hbWU9IklucHV0MTE3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExNyIgbmFtZT0iT3V0cHV0MTE3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTciIHR5cGU9InRuczpQb3J0VHlwZTExNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTE3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTciIGJpbmRpbmc9InRuczpCaW5kaW5nMTE3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTE4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExOCIgbmFtZT0iSW5wdXQxMTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTE4IiBuYW1lPSJPdXRwdXQxMTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExOCIgdHlwZT0idG5zOlBvcnRUeXBlMTE4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExOCIgYmluZGluZz0idG5zOkJpbmRpbmcxMTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTE5IiBuYW1lPSJJbnB1dDExOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTkiIG5hbWU9Ik91dHB1dDExOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTE5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTE5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTE5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzExOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjAiIG5hbWU9IklucHV0MTIwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyMCIgbmFtZT0iT3V0cHV0MTIwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjAiIHR5cGU9InRuczpQb3J0VHlwZTEyMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTIwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTIwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTIxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyMSIgbmFtZT0iSW5wdXQxMjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTIxIiBuYW1lPSJPdXRwdXQxMjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyMSIgdHlwZT0idG5zOlBvcnRUeXBlMTIxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyMSIgYmluZGluZz0idG5zOkJpbmRpbmcxMjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTIyIiBuYW1lPSJJbnB1dDEyMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjIiIG5hbWU9Ik91dHB1dDEyMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTIyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTIyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTIyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjMiIG5hbWU9IklucHV0MTIzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyMyIgbmFtZT0iT3V0cHV0MTIzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjMiIHR5cGU9InRuczpQb3J0VHlwZTEyMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTIzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTIzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTI0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyNCIgbmFtZT0iSW5wdXQxMjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTI0IiBuYW1lPSJPdXRwdXQxMjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyNCIgdHlwZT0idG5zOlBvcnRUeXBlMTI0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyNCIgYmluZGluZz0idG5zOkJpbmRpbmcxMjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTI1IiBuYW1lPSJJbnB1dDEyNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjUiIG5hbWU9Ik91dHB1dDEyNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTI1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTI1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTI1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjYiIG5hbWU9IklucHV0MTI2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyNiIgbmFtZT0iT3V0cHV0MTI2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjYiIHR5cGU9InRuczpQb3J0VHlwZTEyNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTI2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTI2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTI3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyNyIgbmFtZT0iSW5wdXQxMjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTI3IiBuYW1lPSJPdXRwdXQxMjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyNyIgdHlwZT0idG5zOlBvcnRUeXBlMTI3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyNyIgYmluZGluZz0idG5zOkJpbmRpbmcxMjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTI4IiBuYW1lPSJJbnB1dDEyOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjgiIG5hbWU9Ik91dHB1dDEyOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTI4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTI4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTI4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjkiIG5hbWU9IklucHV0MTI5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyOSIgbmFtZT0iT3V0cHV0MTI5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjkiIHR5cGU9InRuczpQb3J0VHlwZTEyOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTI5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTI5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTMwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzMCIgbmFtZT0iSW5wdXQxMzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTMwIiBuYW1lPSJPdXRwdXQxMzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzMCIgdHlwZT0idG5zOlBvcnRUeXBlMTMwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzMCIgYmluZGluZz0idG5zOkJpbmRpbmcxMzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTMxIiBuYW1lPSJJbnB1dDEzMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzEiIG5hbWU9Ik91dHB1dDEzMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTMxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTMxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTMxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzIiIG5hbWU9IklucHV0MTMyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzMiIgbmFtZT0iT3V0cHV0MTMyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzIiIHR5cGU9InRuczpQb3J0VHlwZTEzMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTMyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTMyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTMzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzMyIgbmFtZT0iSW5wdXQxMzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTMzIiBuYW1lPSJPdXRwdXQxMzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzMyIgdHlwZT0idG5zOlBvcnRUeXBlMTMzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzMyIgYmluZGluZz0idG5zOkJpbmRpbmcxMzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTM0IiBuYW1lPSJJbnB1dDEzNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzQiIG5hbWU9Ik91dHB1dDEzNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTM0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTM0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTM0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzUiIG5hbWU9IklucHV0MTM1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzNSIgbmFtZT0iT3V0cHV0MTM1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzUiIHR5cGU9InRuczpQb3J0VHlwZTEzNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTM1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTM1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTM2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzNiIgbmFtZT0iSW5wdXQxMzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTM2IiBuYW1lPSJPdXRwdXQxMzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzNiIgdHlwZT0idG5zOlBvcnRUeXBlMTM2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzNiIgYmluZGluZz0idG5zOkJpbmRpbmcxMzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTM3IiBuYW1lPSJJbnB1dDEzNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzciIG5hbWU9Ik91dHB1dDEzNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTM3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTM3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTM3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzgiIG5hbWU9IklucHV0MTM4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzOCIgbmFtZT0iT3V0cHV0MTM4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzgiIHR5cGU9InRuczpQb3J0VHlwZTEzOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTM4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTM4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTM5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzOSIgbmFtZT0iSW5wdXQxMzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTM5IiBuYW1lPSJPdXRwdXQxMzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzOSIgdHlwZT0idG5zOlBvcnRUeXBlMTM5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzOSIgYmluZGluZz0idG5zOkJpbmRpbmcxMzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQwIiBuYW1lPSJJbnB1dDE0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDAiIG5hbWU9Ik91dHB1dDE0MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDEiIG5hbWU9IklucHV0MTQxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0MSIgbmFtZT0iT3V0cHV0MTQxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDEiIHR5cGU9InRuczpQb3J0VHlwZTE0MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0MiIgbmFtZT0iSW5wdXQxNDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQyIiBuYW1lPSJPdXRwdXQxNDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0MiIgdHlwZT0idG5zOlBvcnRUeXBlMTQyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0MiIgYmluZGluZz0idG5zOkJpbmRpbmcxNDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQzIiBuYW1lPSJJbnB1dDE0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDMiIG5hbWU9Ik91dHB1dDE0MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDQiIG5hbWU9IklucHV0MTQ0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0NCIgbmFtZT0iT3V0cHV0MTQ0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDQiIHR5cGU9InRuczpQb3J0VHlwZTE0NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQ0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQ0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQ1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0NSIgbmFtZT0iSW5wdXQxNDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQ1IiBuYW1lPSJPdXRwdXQxNDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0NSIgdHlwZT0idG5zOlBvcnRUeXBlMTQ1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0NSIgYmluZGluZz0idG5zOkJpbmRpbmcxNDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQ2IiBuYW1lPSJJbnB1dDE0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDYiIG5hbWU9Ik91dHB1dDE0NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQ2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQ2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQ2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDciIG5hbWU9IklucHV0MTQ3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0NyIgbmFtZT0iT3V0cHV0MTQ3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDciIHR5cGU9InRuczpQb3J0VHlwZTE0NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQ3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDciIGJpbmRpbmc9InRuczpCaW5kaW5nMTQ3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQ4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0OCIgbmFtZT0iSW5wdXQxNDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQ4IiBuYW1lPSJPdXRwdXQxNDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0OCIgdHlwZT0idG5zOlBvcnRUeXBlMTQ4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0OCIgYmluZGluZz0idG5zOkJpbmRpbmcxNDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQ5IiBuYW1lPSJJbnB1dDE0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDkiIG5hbWU9Ik91dHB1dDE0OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQ5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQ5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQ5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTAiIG5hbWU9IklucHV0MTUwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1MCIgbmFtZT0iT3V0cHV0MTUwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTAiIHR5cGU9InRuczpQb3J0VHlwZTE1MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTUwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTUwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTUxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1MSIgbmFtZT0iSW5wdXQxNTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTUxIiBuYW1lPSJPdXRwdXQxNTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1MSIgdHlwZT0idG5zOlBvcnRUeXBlMTUxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1MSIgYmluZGluZz0idG5zOkJpbmRpbmcxNTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTUyIiBuYW1lPSJJbnB1dDE1MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTIiIG5hbWU9Ik91dHB1dDE1MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTUyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTUyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTUyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTMiIG5hbWU9IklucHV0MTUzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1MyIgbmFtZT0iT3V0cHV0MTUzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTMiIHR5cGU9InRuczpQb3J0VHlwZTE1MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTUzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTUzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTU0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1NCIgbmFtZT0iSW5wdXQxNTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTU0IiBuYW1lPSJPdXRwdXQxNTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1NCIgdHlwZT0idG5zOlBvcnRUeXBlMTU0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1NCIgYmluZGluZz0idG5zOkJpbmRpbmcxNTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTU1IiBuYW1lPSJJbnB1dDE1NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTUiIG5hbWU9Ik91dHB1dDE1NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTU1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTU1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTU1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTYiIG5hbWU9IklucHV0MTU2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1NiIgbmFtZT0iT3V0cHV0MTU2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTYiIHR5cGU9InRuczpQb3J0VHlwZTE1NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTU2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTU2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTU3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1NyIgbmFtZT0iSW5wdXQxNTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTU3IiBuYW1lPSJPdXRwdXQxNTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1NyIgdHlwZT0idG5zOlBvcnRUeXBlMTU3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1NyIgYmluZGluZz0idG5zOkJpbmRpbmcxNTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTU4IiBuYW1lPSJJbnB1dDE1OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTgiIG5hbWU9Ik91dHB1dDE1OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTU4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTU4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTU4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTkiIG5hbWU9IklucHV0MTU5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1OSIgbmFtZT0iT3V0cHV0MTU5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTkiIHR5cGU9InRuczpQb3J0VHlwZTE1OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTU5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTU5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTYwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2MCIgbmFtZT0iSW5wdXQxNjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTYwIiBuYW1lPSJPdXRwdXQxNjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2MCIgdHlwZT0idG5zOlBvcnRUeXBlMTYwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2MCIgYmluZGluZz0idG5zOkJpbmRpbmcxNjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTYxIiBuYW1lPSJJbnB1dDE2MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjEiIG5hbWU9Ik91dHB1dDE2MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTYxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTYxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTYxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjIiIG5hbWU9IklucHV0MTYyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2MiIgbmFtZT0iT3V0cHV0MTYyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjIiIHR5cGU9InRuczpQb3J0VHlwZTE2MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTYyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTYyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTYzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2MyIgbmFtZT0iSW5wdXQxNjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTYzIiBuYW1lPSJPdXRwdXQxNjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2MyIgdHlwZT0idG5zOlBvcnRUeXBlMTYzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2MyIgYmluZGluZz0idG5zOkJpbmRpbmcxNjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTY0IiBuYW1lPSJJbnB1dDE2NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjQiIG5hbWU9Ik91dHB1dDE2NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTY0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTY0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTY0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjUiIG5hbWU9IklucHV0MTY1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2NSIgbmFtZT0iT3V0cHV0MTY1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjUiIHR5cGU9InRuczpQb3J0VHlwZTE2NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTY1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTY1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTY2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2NiIgbmFtZT0iSW5wdXQxNjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTY2IiBuYW1lPSJPdXRwdXQxNjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2NiIgdHlwZT0idG5zOlBvcnRUeXBlMTY2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2NiIgYmluZGluZz0idG5zOkJpbmRpbmcxNjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTY3IiBuYW1lPSJJbnB1dDE2NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjciIG5hbWU9Ik91dHB1dDE2NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTY3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTY3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTY3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjgiIG5hbWU9IklucHV0MTY4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2OCIgbmFtZT0iT3V0cHV0MTY4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjgiIHR5cGU9InRuczpQb3J0VHlwZTE2OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTY4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTY4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTY5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2OSIgbmFtZT0iSW5wdXQxNjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTY5IiBuYW1lPSJPdXRwdXQxNjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2OSIgdHlwZT0idG5zOlBvcnRUeXBlMTY5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2OSIgYmluZGluZz0idG5zOkJpbmRpbmcxNjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTcwIiBuYW1lPSJJbnB1dDE3MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzAiIG5hbWU9Ik91dHB1dDE3MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTcwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTcwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTcwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzEiIG5hbWU9IklucHV0MTcxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3MSIgbmFtZT0iT3V0cHV0MTcxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzEiIHR5cGU9InRuczpQb3J0VHlwZTE3MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTcxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTcxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTcyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTcyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3MiIgbmFtZT0iSW5wdXQxNzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTcyIiBuYW1lPSJPdXRwdXQxNzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3MiIgdHlwZT0idG5zOlBvcnRUeXBlMTcyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTcyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3MiIgYmluZGluZz0idG5zOkJpbmRpbmcxNzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTczIiBuYW1lPSJJbnB1dDE3MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzMiIG5hbWU9Ik91dHB1dDE3MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTczIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTczIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTczIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzQiIG5hbWU9IklucHV0MTc0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3NCIgbmFtZT0iT3V0cHV0MTc0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzQiIHR5cGU9InRuczpQb3J0VHlwZTE3NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTc0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTc0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTc1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3NSIgbmFtZT0iSW5wdXQxNzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTc1IiBuYW1lPSJPdXRwdXQxNzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3NSIgdHlwZT0idG5zOlBvcnRUeXBlMTc1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3NSIgYmluZGluZz0idG5zOkJpbmRpbmcxNzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTc2IiBuYW1lPSJJbnB1dDE3NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzYiIG5hbWU9Ik91dHB1dDE3NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTc2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTc2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTc2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzciIG5hbWU9IklucHV0MTc3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3NyIgbmFtZT0iT3V0cHV0MTc3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzciIHR5cGU9InRuczpQb3J0VHlwZTE3NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTc3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzciIGJpbmRpbmc9InRuczpCaW5kaW5nMTc3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTc4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3OCIgbmFtZT0iSW5wdXQxNzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTc4IiBuYW1lPSJPdXRwdXQxNzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3OCIgdHlwZT0idG5zOlBvcnRUeXBlMTc4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3OCIgYmluZGluZz0idG5zOkJpbmRpbmcxNzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTc5IiBuYW1lPSJJbnB1dDE3OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzkiIG5hbWU9Ik91dHB1dDE3OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTc5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTc5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTc5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODAiIG5hbWU9IklucHV0MTgwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4MCIgbmFtZT0iT3V0cHV0MTgwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODAiIHR5cGU9InRuczpQb3J0VHlwZTE4MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTgwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTgwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTgxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4MSIgbmFtZT0iSW5wdXQxODEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTgxIiBuYW1lPSJPdXRwdXQxODEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4MSIgdHlwZT0idG5zOlBvcnRUeXBlMTgxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4MSIgYmluZGluZz0idG5zOkJpbmRpbmcxODEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTgyIiBuYW1lPSJJbnB1dDE4MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODIiIG5hbWU9Ik91dHB1dDE4MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTgyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxODIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTgyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTgyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODMiIG5hbWU9IklucHV0MTgzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4MyIgbmFtZT0iT3V0cHV0MTgzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODMiIHR5cGU9InRuczpQb3J0VHlwZTE4MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTgzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTgzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTg0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4NCIgbmFtZT0iSW5wdXQxODQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTg0IiBuYW1lPSJPdXRwdXQxODQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4NCIgdHlwZT0idG5zOlBvcnRUeXBlMTg0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4NCIgYmluZGluZz0idG5zOkJpbmRpbmcxODQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTg1IiBuYW1lPSJJbnB1dDE4NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODUiIG5hbWU9Ik91dHB1dDE4NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTg1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxODUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTg1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTg1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODYiIG5hbWU9IklucHV0MTg2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4NiIgbmFtZT0iT3V0cHV0MTg2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODYiIHR5cGU9InRuczpQb3J0VHlwZTE4NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTg2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTg2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTg3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4NyIgbmFtZT0iSW5wdXQxODciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTg3IiBuYW1lPSJPdXRwdXQxODciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4NyIgdHlwZT0idG5zOlBvcnRUeXBlMTg3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4NyIgYmluZGluZz0idG5zOkJpbmRpbmcxODciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTg4IiBuYW1lPSJJbnB1dDE4OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODgiIG5hbWU9Ik91dHB1dDE4OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTg4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxODgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTg4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTg4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODkiIG5hbWU9IklucHV0MTg5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4OSIgbmFtZT0iT3V0cHV0MTg5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODkiIHR5cGU9InRuczpQb3J0VHlwZTE4OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTg5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTg5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTkwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5MCIgbmFtZT0iSW5wdXQxOTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTkwIiBuYW1lPSJPdXRwdXQxOTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5MCIgdHlwZT0idG5zOlBvcnRUeXBlMTkwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5MCIgYmluZGluZz0idG5zOkJpbmRpbmcxOTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTkxIiBuYW1lPSJJbnB1dDE5MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTEiIG5hbWU9Ik91dHB1dDE5MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTkxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTkxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTkxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTIiIG5hbWU9IklucHV0MTkyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5MiIgbmFtZT0iT3V0cHV0MTkyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTIiIHR5cGU9InRuczpQb3J0VHlwZTE5MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTkyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTkyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTkzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5MyIgbmFtZT0iSW5wdXQxOTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTkzIiBuYW1lPSJPdXRwdXQxOTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5MyIgdHlwZT0idG5zOlBvcnRUeXBlMTkzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5MyIgYmluZGluZz0idG5zOkJpbmRpbmcxOTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTk0IiBuYW1lPSJJbnB1dDE5NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTQiIG5hbWU9Ik91dHB1dDE5NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTk0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTk0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTk0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTUiIG5hbWU9IklucHV0MTk1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5NSIgbmFtZT0iT3V0cHV0MTk1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTUiIHR5cGU9InRuczpQb3J0VHlwZTE5NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTk1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTk1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTk2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5NiIgbmFtZT0iSW5wdXQxOTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTk2IiBuYW1lPSJPdXRwdXQxOTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5NiIgdHlwZT0idG5zOlBvcnRUeXBlMTk2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5NiIgYmluZGluZz0idG5zOkJpbmRpbmcxOTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTk3IiBuYW1lPSJJbnB1dDE5NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTciIG5hbWU9Ik91dHB1dDE5NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTk3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTk3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTk3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTgiIG5hbWU9IklucHV0MTk4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5OCIgbmFtZT0iT3V0cHV0MTk4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTgiIHR5cGU9InRuczpQb3J0VHlwZTE5OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTk4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTk4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTk5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5OSIgbmFtZT0iSW5wdXQxOTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTk5IiBuYW1lPSJPdXRwdXQxOTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5OSIgdHlwZT0idG5zOlBvcnRUeXBlMTk5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5OSIgYmluZGluZz0idG5zOkJpbmRpbmcxOTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS81MDBLQi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvZGF0YS81MDBLQi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWFiODM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvNTAwS0Iud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NTA3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJEZWZpbml0aW9uIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMiPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50ODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50OTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTAyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTA1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEwNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTA4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDExMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDExNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDExOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDExOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDEzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxMzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxMzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDEzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxNzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxNzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDE5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MTk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MTk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQxOTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQxOTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDE5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjAwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIwMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjAzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIwNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjA2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIwOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjA5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyMzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyMzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDIzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDIzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyNzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyNzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MjkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MjkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mjk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQyOTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQyOTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDI5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDI5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mjk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzAwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMwMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMwMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzAyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzAzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMwNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMwNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzA1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzA2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMwNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMwOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzA4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzA5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMxMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzEyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMxNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzE1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMxNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzE4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzIxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzI0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzI3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMyOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzMwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMzMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzMzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMzNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzM2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzMzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDMzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDMzOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzM5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzMzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM0MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzQyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM0NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzQ1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM0NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzQ4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzU0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzU3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM1OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzYwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM2MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzYzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM2NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzY2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM2OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzY5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM3MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzcyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM3NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzc1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM3NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzc4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzNzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzNzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzgxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzODIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzg0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzODUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzg3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzODgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM4OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzkwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM5MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50MzkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50MzkzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM5NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzk2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQzOTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDM5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDM5OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50Mzk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50Mzk5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQzOTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MDAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQwMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQwMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDAxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDAyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MDMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQwMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQwNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDA0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDA1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MDYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQwNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQwNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDA3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDA4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MDkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQwOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDEwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDExIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQxMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDEzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDE0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQxNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDE2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDE3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQxOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQxOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDE5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDIwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MjEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQyMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQyMiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDIyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDIzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MjQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQyNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQyNSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDI1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDI2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MjciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQyNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQyOCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDI4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDI5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MzAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQzMCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQzMSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDMxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDMyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MzMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQzMyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQzNCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDM0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDM1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MzYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQzNiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQzNyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDM3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDM4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0MzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0MzkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQzOSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDQxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NDEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NDIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ0MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDQ0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NDQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NDUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ0NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQ2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDQ3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NDciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NDgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ0OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ0OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDQ5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDUwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NTEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ1MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ1MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDUyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDUzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NTQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ1NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ1NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDU1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDU2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NTciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ1NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ1OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDU4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDU5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NjAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ2MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ2MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDYxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDYyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NjIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NjMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ2MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ2NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDY0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDY1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NjUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NjYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ2NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ2NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDY3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDY4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NjgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NjkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ2OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDcwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDcxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NzEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NzIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ3MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDczIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDc0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NzQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NzUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ3NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDc2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDc3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0NzciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0NzgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ3OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ3OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDc5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDgwIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0ODAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0ODEiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ4MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ4MiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDgyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDgzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0ODMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0ODQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ4NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ4NSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDg1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDg2IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0ODYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0ODciIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ4NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ4OCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDg4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDg5IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0ODkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OTAiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ5MCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ5MSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDkxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDkyIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OTIiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OTMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ5MyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ5NCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDk0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDk1IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OTUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OTYiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ5NiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlc3BvbnNlRWxlbWVudDQ5NyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3RFbGVtZW50NDk3IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VFbGVtZW50NDk4IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEVsZW1lbnQ0OTgiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUVsZW1lbnQ0OTkiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0RWxlbWVudDQ5OSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24wIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTAiIG5hbWU9IklucHV0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UwIiBuYW1lPSJPdXRwdXQwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcwIiB0eXBlPSJ0bnM6UG9ydFR5cGUwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24wIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDAiIGJpbmRpbmc9InRuczpCaW5kaW5nMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxIiBuYW1lPSJJbnB1dDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMSIgbmFtZT0iT3V0cHV0MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMSIgdHlwZT0idG5zOlBvcnRUeXBlMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMiIgbmFtZT0iSW5wdXQyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIiIG5hbWU9Ik91dHB1dDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIiIHR5cGU9InRuczpQb3J0VHlwZTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MiIgYmluZGluZz0idG5zOkJpbmRpbmcyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMiIG5hbWU9IklucHV0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzIiBuYW1lPSJPdXRwdXQzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczIiB0eXBlPSJ0bnM6UG9ydFR5cGUzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMiIGJpbmRpbmc9InRuczpCaW5kaW5nMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0IiBuYW1lPSJJbnB1dDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNCIgbmFtZT0iT3V0cHV0NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNCIgdHlwZT0idG5zOlBvcnRUeXBlNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNSIgbmFtZT0iSW5wdXQ1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTUiIG5hbWU9Ik91dHB1dDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUiIHR5cGU9InRuczpQb3J0VHlwZTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NSIgYmluZGluZz0idG5zOkJpbmRpbmc1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTYiIG5hbWU9IklucHV0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2IiBuYW1lPSJPdXRwdXQ2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc2IiB0eXBlPSJ0bnM6UG9ydFR5cGU2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb242Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDYiIGJpbmRpbmc9InRuczpCaW5kaW5nNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3IiBuYW1lPSJJbnB1dDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNyIgbmFtZT0iT3V0cHV0NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNyIgdHlwZT0idG5zOlBvcnRUeXBlNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlOCIgbmFtZT0iSW5wdXQ4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTgiIG5hbWU9Ik91dHB1dDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgiIHR5cGU9InRuczpQb3J0VHlwZTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0OCIgYmluZGluZz0idG5zOkJpbmRpbmc4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTkiIG5hbWU9IklucHV0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5IiBuYW1lPSJPdXRwdXQ5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc5IiB0eXBlPSJ0bnM6UG9ydFR5cGU5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb245Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDkiIGJpbmRpbmc9InRuczpCaW5kaW5nOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMCIgbmFtZT0iSW5wdXQxMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMCIgbmFtZT0iT3V0cHV0MTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMCIgYmluZGluZz0idG5zOkJpbmRpbmcxMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMSIgbmFtZT0iSW5wdXQxMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMSIgbmFtZT0iT3V0cHV0MTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMSIgYmluZGluZz0idG5zOkJpbmRpbmcxMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMiIgbmFtZT0iSW5wdXQxMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMiIgbmFtZT0iT3V0cHV0MTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMiIgYmluZGluZz0idG5zOkJpbmRpbmcxMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMyIgbmFtZT0iSW5wdXQxMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMyIgbmFtZT0iT3V0cHV0MTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMyIgYmluZGluZz0idG5zOkJpbmRpbmcxMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNCIgbmFtZT0iSW5wdXQxNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNCIgbmFtZT0iT3V0cHV0MTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNCIgYmluZGluZz0idG5zOkJpbmRpbmcxNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNSIgbmFtZT0iSW5wdXQxNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNSIgbmFtZT0iT3V0cHV0MTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNSIgYmluZGluZz0idG5zOkJpbmRpbmcxNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNiIgbmFtZT0iSW5wdXQxNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNiIgbmFtZT0iT3V0cHV0MTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNiIgYmluZGluZz0idG5zOkJpbmRpbmcxNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNyIgbmFtZT0iSW5wdXQxNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNyIgbmFtZT0iT3V0cHV0MTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNyIgYmluZGluZz0idG5zOkJpbmRpbmcxNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOCIgbmFtZT0iSW5wdXQxOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOCIgbmFtZT0iT3V0cHV0MTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOCIgYmluZGluZz0idG5zOkJpbmRpbmcxOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOSIgbmFtZT0iSW5wdXQxOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOSIgbmFtZT0iT3V0cHV0MTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOSIgYmluZGluZz0idG5zOkJpbmRpbmcxOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMCIgbmFtZT0iSW5wdXQyMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMCIgbmFtZT0iT3V0cHV0MjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIwIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMCIgYmluZGluZz0idG5zOkJpbmRpbmcyMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMSIgbmFtZT0iSW5wdXQyMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMSIgbmFtZT0iT3V0cHV0MjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIxIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMSIgYmluZGluZz0idG5zOkJpbmRpbmcyMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMiIgbmFtZT0iSW5wdXQyMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMiIgbmFtZT0iT3V0cHV0MjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMiIgYmluZGluZz0idG5zOkJpbmRpbmcyMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMyIgbmFtZT0iSW5wdXQyMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMyIgbmFtZT0iT3V0cHV0MjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIzIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMyIgYmluZGluZz0idG5zOkJpbmRpbmcyMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNCIgbmFtZT0iSW5wdXQyNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNCIgbmFtZT0iT3V0cHV0MjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI0IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNCIgYmluZGluZz0idG5zOkJpbmRpbmcyNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNSIgbmFtZT0iSW5wdXQyNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNSIgbmFtZT0iT3V0cHV0MjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI1IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNSIgYmluZGluZz0idG5zOkJpbmRpbmcyNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNiIgbmFtZT0iSW5wdXQyNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNiIgbmFtZT0iT3V0cHV0MjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI2IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNiIgYmluZGluZz0idG5zOkJpbmRpbmcyNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNyIgbmFtZT0iSW5wdXQyNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNyIgbmFtZT0iT3V0cHV0MjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI3IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNyIgYmluZGluZz0idG5zOkJpbmRpbmcyNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOCIgbmFtZT0iSW5wdXQyOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOCIgbmFtZT0iT3V0cHV0MjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI4IiB0eXBlPSJ0bnM6UG9ydFR5cGUyOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOCIgYmluZGluZz0idG5zOkJpbmRpbmcyOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOSIgbmFtZT0iSW5wdXQyOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOSIgbmFtZT0iT3V0cHV0MjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI5IiB0eXBlPSJ0bnM6UG9ydFR5cGUyOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOSIgYmluZGluZz0idG5zOkJpbmRpbmcyOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMCIgbmFtZT0iSW5wdXQzMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMCIgbmFtZT0iT3V0cHV0MzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMwIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMCIgYmluZGluZz0idG5zOkJpbmRpbmczMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMSIgbmFtZT0iSW5wdXQzMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMSIgbmFtZT0iT3V0cHV0MzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMxIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMSIgYmluZGluZz0idG5zOkJpbmRpbmczMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMiIgbmFtZT0iSW5wdXQzMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMiIgbmFtZT0iT3V0cHV0MzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMyIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMiIgYmluZGluZz0idG5zOkJpbmRpbmczMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMyIgbmFtZT0iSW5wdXQzMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMyIgbmFtZT0iT3V0cHV0MzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMzIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMyIgYmluZGluZz0idG5zOkJpbmRpbmczMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNCIgbmFtZT0iSW5wdXQzNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNCIgbmFtZT0iT3V0cHV0MzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM0IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNCIgYmluZGluZz0idG5zOkJpbmRpbmczNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNSIgbmFtZT0iSW5wdXQzNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNSIgbmFtZT0iT3V0cHV0MzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM1IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNSIgYmluZGluZz0idG5zOkJpbmRpbmczNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNiIgbmFtZT0iSW5wdXQzNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNiIgbmFtZT0iT3V0cHV0MzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM2IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNiIgYmluZGluZz0idG5zOkJpbmRpbmczNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNyIgbmFtZT0iSW5wdXQzNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNyIgbmFtZT0iT3V0cHV0MzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM3IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNyIgYmluZGluZz0idG5zOkJpbmRpbmczNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOCIgbmFtZT0iSW5wdXQzOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOCIgbmFtZT0iT3V0cHV0MzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM4IiB0eXBlPSJ0bnM6UG9ydFR5cGUzOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOCIgYmluZGluZz0idG5zOkJpbmRpbmczOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOSIgbmFtZT0iSW5wdXQzOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOSIgbmFtZT0iT3V0cHV0MzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM5IiB0eXBlPSJ0bnM6UG9ydFR5cGUzOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOSIgYmluZGluZz0idG5zOkJpbmRpbmczOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MCIgbmFtZT0iSW5wdXQ0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MCIgbmFtZT0iT3V0cHV0NDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQwIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MCIgYmluZGluZz0idG5zOkJpbmRpbmc0MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MSIgbmFtZT0iSW5wdXQ0MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MSIgbmFtZT0iT3V0cHV0NDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQxIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MSIgYmluZGluZz0idG5zOkJpbmRpbmc0MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MiIgbmFtZT0iSW5wdXQ0MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MiIgbmFtZT0iT3V0cHV0NDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQyIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MiIgYmluZGluZz0idG5zOkJpbmRpbmc0MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MyIgbmFtZT0iSW5wdXQ0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MyIgbmFtZT0iT3V0cHV0NDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQzIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MyIgYmluZGluZz0idG5zOkJpbmRpbmc0MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NCIgbmFtZT0iSW5wdXQ0NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NCIgbmFtZT0iT3V0cHV0NDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ0IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NCIgYmluZGluZz0idG5zOkJpbmRpbmc0NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NSIgbmFtZT0iSW5wdXQ0NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NSIgbmFtZT0iT3V0cHV0NDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ1IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NSIgYmluZGluZz0idG5zOkJpbmRpbmc0NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NiIgbmFtZT0iSW5wdXQ0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NiIgbmFtZT0iT3V0cHV0NDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ2IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NiIgYmluZGluZz0idG5zOkJpbmRpbmc0NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NyIgbmFtZT0iSW5wdXQ0NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NyIgbmFtZT0iT3V0cHV0NDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ3IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NyIgYmluZGluZz0idG5zOkJpbmRpbmc0NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OCIgbmFtZT0iSW5wdXQ0OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OCIgbmFtZT0iT3V0cHV0NDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ4IiB0eXBlPSJ0bnM6UG9ydFR5cGU0OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OCIgYmluZGluZz0idG5zOkJpbmRpbmc0OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OSIgbmFtZT0iSW5wdXQ0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OSIgbmFtZT0iT3V0cHV0NDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ5IiB0eXBlPSJ0bnM6UG9ydFR5cGU0OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OSIgYmluZGluZz0idG5zOkJpbmRpbmc0OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MCIgbmFtZT0iSW5wdXQ1MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MCIgbmFtZT0iT3V0cHV0NTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUwIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MCIgYmluZGluZz0idG5zOkJpbmRpbmc1MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MSIgbmFtZT0iSW5wdXQ1MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MSIgbmFtZT0iT3V0cHV0NTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUxIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MSIgYmluZGluZz0idG5zOkJpbmRpbmc1MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MiIgbmFtZT0iSW5wdXQ1MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MiIgbmFtZT0iT3V0cHV0NTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUyIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MiIgYmluZGluZz0idG5zOkJpbmRpbmc1MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1MyIgbmFtZT0iSW5wdXQ1MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1MyIgbmFtZT0iT3V0cHV0NTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzUzIiB0eXBlPSJ0bnM6UG9ydFR5cGU1MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjUzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjUzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTUzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1MyIgYmluZGluZz0idG5zOkJpbmRpbmc1MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NCIgbmFtZT0iSW5wdXQ1NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NCIgbmFtZT0iT3V0cHV0NTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU0IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NCIgYmluZGluZz0idG5zOkJpbmRpbmc1NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NSIgbmFtZT0iSW5wdXQ1NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NSIgbmFtZT0iT3V0cHV0NTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU1IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NSIgYmluZGluZz0idG5zOkJpbmRpbmc1NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NiIgbmFtZT0iSW5wdXQ1NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NiIgbmFtZT0iT3V0cHV0NTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU2IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NiIgYmluZGluZz0idG5zOkJpbmRpbmc1NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1NyIgbmFtZT0iSW5wdXQ1NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1NyIgbmFtZT0iT3V0cHV0NTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU3IiB0eXBlPSJ0bnM6UG9ydFR5cGU1NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1NyIgYmluZGluZz0idG5zOkJpbmRpbmc1NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1OCIgbmFtZT0iSW5wdXQ1OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1OCIgbmFtZT0iT3V0cHV0NTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU4IiB0eXBlPSJ0bnM6UG9ydFR5cGU1OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1OCIgYmluZGluZz0idG5zOkJpbmRpbmc1OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb241OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U1OSIgbmFtZT0iSW5wdXQ1OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U1OSIgbmFtZT0iT3V0cHV0NTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzU5IiB0eXBlPSJ0bnM6UG9ydFR5cGU1OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjU5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjU5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTU5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ1OSIgYmluZGluZz0idG5zOkJpbmRpbmc1OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MCIgbmFtZT0iSW5wdXQ2MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MCIgbmFtZT0iT3V0cHV0NjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYwIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MCIgYmluZGluZz0idG5zOkJpbmRpbmc2MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MSIgbmFtZT0iSW5wdXQ2MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MSIgbmFtZT0iT3V0cHV0NjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYxIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MSIgYmluZGluZz0idG5zOkJpbmRpbmc2MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MiIgbmFtZT0iSW5wdXQ2MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MiIgbmFtZT0iT3V0cHV0NjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYyIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MiIgYmluZGluZz0idG5zOkJpbmRpbmc2MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2MyIgbmFtZT0iSW5wdXQ2MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2MyIgbmFtZT0iT3V0cHV0NjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzYzIiB0eXBlPSJ0bnM6UG9ydFR5cGU2MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjYzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjYzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTYzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2MyIgYmluZGluZz0idG5zOkJpbmRpbmc2MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NCIgbmFtZT0iSW5wdXQ2NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NCIgbmFtZT0iT3V0cHV0NjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY0IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NCIgYmluZGluZz0idG5zOkJpbmRpbmc2NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NSIgbmFtZT0iSW5wdXQ2NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NSIgbmFtZT0iT3V0cHV0NjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY1IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NSIgYmluZGluZz0idG5zOkJpbmRpbmc2NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NiIgbmFtZT0iSW5wdXQ2NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NiIgbmFtZT0iT3V0cHV0NjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY2IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NiIgYmluZGluZz0idG5zOkJpbmRpbmc2NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2NyIgbmFtZT0iSW5wdXQ2NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2NyIgbmFtZT0iT3V0cHV0NjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY3IiB0eXBlPSJ0bnM6UG9ydFR5cGU2NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2NyIgYmluZGluZz0idG5zOkJpbmRpbmc2NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2OCIgbmFtZT0iSW5wdXQ2OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2OCIgbmFtZT0iT3V0cHV0NjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY4IiB0eXBlPSJ0bnM6UG9ydFR5cGU2OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2OCIgYmluZGluZz0idG5zOkJpbmRpbmc2OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb242OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U2OSIgbmFtZT0iSW5wdXQ2OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U2OSIgbmFtZT0iT3V0cHV0NjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzY5IiB0eXBlPSJ0bnM6UG9ydFR5cGU2OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjY5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjY5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTY5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ2OSIgYmluZGluZz0idG5zOkJpbmRpbmc2OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MCIgbmFtZT0iSW5wdXQ3MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MCIgbmFtZT0iT3V0cHV0NzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcwIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MCIgYmluZGluZz0idG5zOkJpbmRpbmc3MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MSIgbmFtZT0iSW5wdXQ3MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MSIgbmFtZT0iT3V0cHV0NzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcxIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MSIgYmluZGluZz0idG5zOkJpbmRpbmc3MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MiIgbmFtZT0iSW5wdXQ3MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MiIgbmFtZT0iT3V0cHV0NzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzcyIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjcyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjcyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTcyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MiIgYmluZGluZz0idG5zOkJpbmRpbmc3MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3MyIgbmFtZT0iSW5wdXQ3MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3MyIgbmFtZT0iT3V0cHV0NzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzczIiB0eXBlPSJ0bnM6UG9ydFR5cGU3MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjczIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjczIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTczIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3MyIgYmluZGluZz0idG5zOkJpbmRpbmc3MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NCIgbmFtZT0iSW5wdXQ3NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NCIgbmFtZT0iT3V0cHV0NzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc0IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NCIgYmluZGluZz0idG5zOkJpbmRpbmc3NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NSIgbmFtZT0iSW5wdXQ3NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NSIgbmFtZT0iT3V0cHV0NzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc1IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NSIgYmluZGluZz0idG5zOkJpbmRpbmc3NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NiIgbmFtZT0iSW5wdXQ3NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NiIgbmFtZT0iT3V0cHV0NzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc2IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NiIgYmluZGluZz0idG5zOkJpbmRpbmc3NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3NyIgbmFtZT0iSW5wdXQ3NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3NyIgbmFtZT0iT3V0cHV0NzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc3IiB0eXBlPSJ0bnM6UG9ydFR5cGU3NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3NyIgYmluZGluZz0idG5zOkJpbmRpbmc3NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3OCIgbmFtZT0iSW5wdXQ3OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3OCIgbmFtZT0iT3V0cHV0NzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc4IiB0eXBlPSJ0bnM6UG9ydFR5cGU3OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3OCIgYmluZGluZz0idG5zOkJpbmRpbmc3OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb243OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U3OSIgbmFtZT0iSW5wdXQ3OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U3OSIgbmFtZT0iT3V0cHV0NzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzc5IiB0eXBlPSJ0bnM6UG9ydFR5cGU3OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjc5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjc5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTc5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ3OSIgYmluZGluZz0idG5zOkJpbmRpbmc3OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MCIgbmFtZT0iSW5wdXQ4MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MCIgbmFtZT0iT3V0cHV0ODAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgwIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MCIgYmluZGluZz0idG5zOkJpbmRpbmc4MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MSIgbmFtZT0iSW5wdXQ4MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MSIgbmFtZT0iT3V0cHV0ODEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgxIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MSIgYmluZGluZz0idG5zOkJpbmRpbmc4MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MiIgbmFtZT0iSW5wdXQ4MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MiIgbmFtZT0iT3V0cHV0ODIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgyIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MiIgYmluZGluZz0idG5zOkJpbmRpbmc4MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4MyIgbmFtZT0iSW5wdXQ4MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4MyIgbmFtZT0iT3V0cHV0ODMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzgzIiB0eXBlPSJ0bnM6UG9ydFR5cGU4MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjgzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjgzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTgzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4MyIgYmluZGluZz0idG5zOkJpbmRpbmc4MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NCIgbmFtZT0iSW5wdXQ4NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NCIgbmFtZT0iT3V0cHV0ODQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg0IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NCIgYmluZGluZz0idG5zOkJpbmRpbmc4NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NSIgbmFtZT0iSW5wdXQ4NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NSIgbmFtZT0iT3V0cHV0ODUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg1IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NSIgYmluZGluZz0idG5zOkJpbmRpbmc4NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NiIgbmFtZT0iSW5wdXQ4NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NiIgbmFtZT0iT3V0cHV0ODYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg2IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NiIgYmluZGluZz0idG5zOkJpbmRpbmc4NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4NyIgbmFtZT0iSW5wdXQ4NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4NyIgbmFtZT0iT3V0cHV0ODciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg3IiB0eXBlPSJ0bnM6UG9ydFR5cGU4NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4NyIgYmluZGluZz0idG5zOkJpbmRpbmc4NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4OCIgbmFtZT0iSW5wdXQ4OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4OCIgbmFtZT0iT3V0cHV0ODgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg4IiB0eXBlPSJ0bnM6UG9ydFR5cGU4OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4OCIgYmluZGluZz0idG5zOkJpbmRpbmc4OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50ODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlODkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb244OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U4OSIgbmFtZT0iSW5wdXQ4OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U4OSIgbmFtZT0iT3V0cHV0ODkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzg5IiB0eXBlPSJ0bnM6UG9ydFR5cGU4OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjg5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjg5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTg5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ4OSIgYmluZGluZz0idG5zOkJpbmRpbmc4OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MCIgbmFtZT0iSW5wdXQ5MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MCIgbmFtZT0iT3V0cHV0OTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkwIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MCIgYmluZGluZz0idG5zOkJpbmRpbmc5MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MSIgbmFtZT0iSW5wdXQ5MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MSIgbmFtZT0iT3V0cHV0OTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkxIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MSIgYmluZGluZz0idG5zOkJpbmRpbmc5MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MiIgbmFtZT0iSW5wdXQ5MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MiIgbmFtZT0iT3V0cHV0OTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkyIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MiIgYmluZGluZz0idG5zOkJpbmRpbmc5MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5MyIgbmFtZT0iSW5wdXQ5MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5MyIgbmFtZT0iT3V0cHV0OTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzkzIiB0eXBlPSJ0bnM6UG9ydFR5cGU5MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjkzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjkzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTkzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5MyIgYmluZGluZz0idG5zOkJpbmRpbmc5MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NCIgbmFtZT0iSW5wdXQ5NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NCIgbmFtZT0iT3V0cHV0OTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk0IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NCIgYmluZGluZz0idG5zOkJpbmRpbmc5NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NSIgbmFtZT0iSW5wdXQ5NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NSIgbmFtZT0iT3V0cHV0OTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk1IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NSIgYmluZGluZz0idG5zOkJpbmRpbmc5NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NiIgbmFtZT0iSW5wdXQ5NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NiIgbmFtZT0iT3V0cHV0OTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk2IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NiIgYmluZGluZz0idG5zOkJpbmRpbmc5NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5NyIgbmFtZT0iSW5wdXQ5NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5NyIgbmFtZT0iT3V0cHV0OTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk3IiB0eXBlPSJ0bnM6UG9ydFR5cGU5NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5NyIgYmluZGluZz0idG5zOkJpbmRpbmc5NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5OCIgbmFtZT0iSW5wdXQ5OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5OCIgbmFtZT0iT3V0cHV0OTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk4IiB0eXBlPSJ0bnM6UG9ydFR5cGU5OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5OCIgYmluZGluZz0idG5zOkJpbmRpbmc5OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlOTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50OTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlOTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb245OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U5OSIgbmFtZT0iSW5wdXQ5OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U5OSIgbmFtZT0iT3V0cHV0OTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzk5IiB0eXBlPSJ0bnM6UG9ydFR5cGU5OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjk5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjk5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTk5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ5OSIgYmluZGluZz0idG5zOkJpbmRpbmc5OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTAwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDAiIG5hbWU9IklucHV0MTAwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwMCIgbmFtZT0iT3V0cHV0MTAwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDAiIHR5cGU9InRuczpQb3J0VHlwZTEwMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTAwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTAwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTAxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwMSIgbmFtZT0iSW5wdXQxMDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTAxIiBuYW1lPSJPdXRwdXQxMDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwMSIgdHlwZT0idG5zOlBvcnRUeXBlMTAxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTAxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwMSIgYmluZGluZz0idG5zOkJpbmRpbmcxMDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTAyIiBuYW1lPSJJbnB1dDEwMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDIiIG5hbWU9Ik91dHB1dDEwMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTAyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTAyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTAyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTAzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDMiIG5hbWU9IklucHV0MTAzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwMyIgbmFtZT0iT3V0cHV0MTAzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDMiIHR5cGU9InRuczpQb3J0VHlwZTEwMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTAzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTAzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTA0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwNCIgbmFtZT0iSW5wdXQxMDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTA0IiBuYW1lPSJPdXRwdXQxMDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwNCIgdHlwZT0idG5zOlBvcnRUeXBlMTA0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwNCIgYmluZGluZz0idG5zOkJpbmRpbmcxMDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTA1IiBuYW1lPSJJbnB1dDEwNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDUiIG5hbWU9Ik91dHB1dDEwNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTA1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTA1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTA1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTA2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDYiIG5hbWU9IklucHV0MTA2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwNiIgbmFtZT0iT3V0cHV0MTA2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDYiIHR5cGU9InRuczpQb3J0VHlwZTEwNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTA2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTA2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTA3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEwNyIgbmFtZT0iSW5wdXQxMDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTA3IiBuYW1lPSJPdXRwdXQxMDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEwNyIgdHlwZT0idG5zOlBvcnRUeXBlMTA3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTA3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEwNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEwNyIgYmluZGluZz0idG5zOkJpbmRpbmcxMDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEwOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTA4IiBuYW1lPSJJbnB1dDEwOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMDgiIG5hbWU9Ik91dHB1dDEwOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTA4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTA4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEwOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTA4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEwOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTA5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEwOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMDkiIG5hbWU9IklucHV0MTA5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEwOSIgbmFtZT0iT3V0cHV0MTA5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMDkiIHR5cGU9InRuczpQb3J0VHlwZTEwOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEwOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTA5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMDkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTA5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTEwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTEwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExMCIgbmFtZT0iSW5wdXQxMTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTEwIiBuYW1lPSJPdXRwdXQxMTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExMCIgdHlwZT0idG5zOlBvcnRUeXBlMTEwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTEwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExMCIgYmluZGluZz0idG5zOkJpbmRpbmcxMTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTExIiBuYW1lPSJJbnB1dDExMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTEiIG5hbWU9Ik91dHB1dDExMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTExIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTExIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTExIiBiaW5kaW5nPSJ0bnM6QmluZGluZzExMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTIiIG5hbWU9IklucHV0MTEyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExMiIgbmFtZT0iT3V0cHV0MTEyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTIiIHR5cGU9InRuczpQb3J0VHlwZTExMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTEyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTEyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTEzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTEzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExMyIgbmFtZT0iSW5wdXQxMTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTEzIiBuYW1lPSJPdXRwdXQxMTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExMyIgdHlwZT0idG5zOlBvcnRUeXBlMTEzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTEzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExMyIgYmluZGluZz0idG5zOkJpbmRpbmcxMTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTE0IiBuYW1lPSJJbnB1dDExNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTQiIG5hbWU9Ik91dHB1dDExNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTE0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTE0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTE0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzExNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTUiIG5hbWU9IklucHV0MTE1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExNSIgbmFtZT0iT3V0cHV0MTE1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTUiIHR5cGU9InRuczpQb3J0VHlwZTExNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTE1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTE1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTE2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExNiIgbmFtZT0iSW5wdXQxMTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTE2IiBuYW1lPSJPdXRwdXQxMTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExNiIgdHlwZT0idG5zOlBvcnRUeXBlMTE2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExNiIgYmluZGluZz0idG5zOkJpbmRpbmcxMTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDExNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTE3IiBuYW1lPSJJbnB1dDExNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMTciIG5hbWU9Ik91dHB1dDExNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTE3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTE3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTExNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTE3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzExNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTExOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMTgiIG5hbWU9IklucHV0MTE4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTExOCIgbmFtZT0iT3V0cHV0MTE4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMTgiIHR5cGU9InRuczpQb3J0VHlwZTExOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjExOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTE4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMTgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTE4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTExOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDExOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTExOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTE5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTExOSIgbmFtZT0iSW5wdXQxMTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTE5IiBuYW1lPSJPdXRwdXQxMTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzExOSIgdHlwZT0idG5zOlBvcnRUeXBlMTE5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTE5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjExOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDExOSIgYmluZGluZz0idG5zOkJpbmRpbmcxMTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTIwIiBuYW1lPSJJbnB1dDEyMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjAiIG5hbWU9Ik91dHB1dDEyMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTIwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTIwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTIwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjEiIG5hbWU9IklucHV0MTIxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyMSIgbmFtZT0iT3V0cHV0MTIxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjEiIHR5cGU9InRuczpQb3J0VHlwZTEyMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTIxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTIxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTIyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyMiIgbmFtZT0iSW5wdXQxMjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTIyIiBuYW1lPSJPdXRwdXQxMjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyMiIgdHlwZT0idG5zOlBvcnRUeXBlMTIyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTIyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyMiIgYmluZGluZz0idG5zOkJpbmRpbmcxMjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTIzIiBuYW1lPSJJbnB1dDEyMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjMiIG5hbWU9Ik91dHB1dDEyMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTIzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTIzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTIzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjQiIG5hbWU9IklucHV0MTI0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyNCIgbmFtZT0iT3V0cHV0MTI0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjQiIHR5cGU9InRuczpQb3J0VHlwZTEyNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTI0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTI0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTI1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyNSIgbmFtZT0iSW5wdXQxMjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTI1IiBuYW1lPSJPdXRwdXQxMjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyNSIgdHlwZT0idG5zOlBvcnRUeXBlMTI1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyNSIgYmluZGluZz0idG5zOkJpbmRpbmcxMjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTI2IiBuYW1lPSJJbnB1dDEyNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjYiIG5hbWU9Ik91dHB1dDEyNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTI2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTI2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTI2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEyNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMjciIG5hbWU9IklucHV0MTI3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEyNyIgbmFtZT0iT3V0cHV0MTI3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMjciIHR5cGU9InRuczpQb3J0VHlwZTEyNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEyNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTI3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMjciIGJpbmRpbmc9InRuczpCaW5kaW5nMTI3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTI4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEyOCIgbmFtZT0iSW5wdXQxMjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTI4IiBuYW1lPSJPdXRwdXQxMjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEyOCIgdHlwZT0idG5zOlBvcnRUeXBlMTI4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTI4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEyOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEyOCIgYmluZGluZz0idG5zOkJpbmRpbmcxMjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTI5IiBuYW1lPSJJbnB1dDEyOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMjkiIG5hbWU9Ik91dHB1dDEyOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTI5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTI5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEyOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTI5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEyOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzAiIG5hbWU9IklucHV0MTMwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzMCIgbmFtZT0iT3V0cHV0MTMwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzAiIHR5cGU9InRuczpQb3J0VHlwZTEzMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTMwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTMwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTMxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzMSIgbmFtZT0iSW5wdXQxMzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTMxIiBuYW1lPSJPdXRwdXQxMzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzMSIgdHlwZT0idG5zOlBvcnRUeXBlMTMxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTMxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzMSIgYmluZGluZz0idG5zOkJpbmRpbmcxMzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTMyIiBuYW1lPSJJbnB1dDEzMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzIiIG5hbWU9Ik91dHB1dDEzMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTMyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTMyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTMyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzMiIG5hbWU9IklucHV0MTMzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzMyIgbmFtZT0iT3V0cHV0MTMzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzMiIHR5cGU9InRuczpQb3J0VHlwZTEzMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTMzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTMzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTM0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzNCIgbmFtZT0iSW5wdXQxMzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTM0IiBuYW1lPSJPdXRwdXQxMzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzNCIgdHlwZT0idG5zOlBvcnRUeXBlMTM0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzNCIgYmluZGluZz0idG5zOkJpbmRpbmcxMzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTM1IiBuYW1lPSJJbnB1dDEzNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzUiIG5hbWU9Ik91dHB1dDEzNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTM1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTM1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTM1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzYiIG5hbWU9IklucHV0MTM2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzNiIgbmFtZT0iT3V0cHV0MTM2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzYiIHR5cGU9InRuczpQb3J0VHlwZTEzNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTM2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTM2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTEzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDEzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTEzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxMzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTM3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTEzNyIgbmFtZT0iSW5wdXQxMzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTM3IiBuYW1lPSJPdXRwdXQxMzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzEzNyIgdHlwZT0idG5zOlBvcnRUeXBlMTM3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTM3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjEzNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxMzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDEzNyIgYmluZGluZz0idG5zOkJpbmRpbmcxMzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDEzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxMzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTM4IiBuYW1lPSJJbnB1dDEzOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxMzgiIG5hbWU9Ik91dHB1dDEzOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTM4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxMzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xMzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTM4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTEzOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTM4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzEzOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxMzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxMzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxMzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTEzOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxMzkiIG5hbWU9IklucHV0MTM5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTEzOSIgbmFtZT0iT3V0cHV0MTM5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxMzkiIHR5cGU9InRuczpQb3J0VHlwZTEzOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjEzOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xMzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTM5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxMzkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTM5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0MCIgbmFtZT0iSW5wdXQxNDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQwIiBuYW1lPSJPdXRwdXQxNDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0MCIgdHlwZT0idG5zOlBvcnRUeXBlMTQwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0MCIgYmluZGluZz0idG5zOkJpbmRpbmcxNDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQxIiBuYW1lPSJJbnB1dDE0MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDEiIG5hbWU9Ik91dHB1dDE0MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDIiIG5hbWU9IklucHV0MTQyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0MiIgbmFtZT0iT3V0cHV0MTQyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDIiIHR5cGU9InRuczpQb3J0VHlwZTE0MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0MyIgbmFtZT0iSW5wdXQxNDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQzIiBuYW1lPSJPdXRwdXQxNDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0MyIgdHlwZT0idG5zOlBvcnRUeXBlMTQzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0MyIgYmluZGluZz0idG5zOkJpbmRpbmcxNDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQ0IiBuYW1lPSJJbnB1dDE0NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDQiIG5hbWU9Ik91dHB1dDE0NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQ0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQ0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQ0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDUiIG5hbWU9IklucHV0MTQ1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0NSIgbmFtZT0iT3V0cHV0MTQ1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDUiIHR5cGU9InRuczpQb3J0VHlwZTE0NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQ1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQ1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQ2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0NiIgbmFtZT0iSW5wdXQxNDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQ2IiBuYW1lPSJPdXRwdXQxNDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0NiIgdHlwZT0idG5zOlBvcnRUeXBlMTQ2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0NiIgYmluZGluZz0idG5zOkJpbmRpbmcxNDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTQ3IiBuYW1lPSJJbnB1dDE0NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNDciIG5hbWU9Ik91dHB1dDE0NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTQ3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTQ3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE0NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTQ3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE0NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE0OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNDgiIG5hbWU9IklucHV0MTQ4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE0OCIgbmFtZT0iT3V0cHV0MTQ4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNDgiIHR5cGU9InRuczpQb3J0VHlwZTE0OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE0OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTQ4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNDgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTQ4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTQ5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE0OSIgbmFtZT0iSW5wdXQxNDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTQ5IiBuYW1lPSJPdXRwdXQxNDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE0OSIgdHlwZT0idG5zOlBvcnRUeXBlMTQ5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTQ5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE0OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE0OSIgYmluZGluZz0idG5zOkJpbmRpbmcxNDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTUwIiBuYW1lPSJJbnB1dDE1MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTAiIG5hbWU9Ik91dHB1dDE1MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTUwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTUwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTUwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTEiIG5hbWU9IklucHV0MTUxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1MSIgbmFtZT0iT3V0cHV0MTUxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTEiIHR5cGU9InRuczpQb3J0VHlwZTE1MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTUxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTUxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTUyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1MiIgbmFtZT0iSW5wdXQxNTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTUyIiBuYW1lPSJPdXRwdXQxNTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1MiIgdHlwZT0idG5zOlBvcnRUeXBlMTUyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTUyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1MiIgYmluZGluZz0idG5zOkJpbmRpbmcxNTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTUzIiBuYW1lPSJJbnB1dDE1MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTMiIG5hbWU9Ik91dHB1dDE1MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTUzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTUzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTUzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTQiIG5hbWU9IklucHV0MTU0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1NCIgbmFtZT0iT3V0cHV0MTU0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTQiIHR5cGU9InRuczpQb3J0VHlwZTE1NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTU0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTU0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTU1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1NSIgbmFtZT0iSW5wdXQxNTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTU1IiBuYW1lPSJPdXRwdXQxNTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1NSIgdHlwZT0idG5zOlBvcnRUeXBlMTU1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1NSIgYmluZGluZz0idG5zOkJpbmRpbmcxNTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTU2IiBuYW1lPSJJbnB1dDE1NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTYiIG5hbWU9Ik91dHB1dDE1NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTU2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTU2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTU2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE1NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNTciIG5hbWU9IklucHV0MTU3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE1NyIgbmFtZT0iT3V0cHV0MTU3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNTciIHR5cGU9InRuczpQb3J0VHlwZTE1NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE1NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTU3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNTciIGJpbmRpbmc9InRuczpCaW5kaW5nMTU3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTU4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE1OCIgbmFtZT0iSW5wdXQxNTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTU4IiBuYW1lPSJPdXRwdXQxNTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE1OCIgdHlwZT0idG5zOlBvcnRUeXBlMTU4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTU4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE1OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE1OCIgYmluZGluZz0idG5zOkJpbmRpbmcxNTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTU5IiBuYW1lPSJJbnB1dDE1OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNTkiIG5hbWU9Ik91dHB1dDE1OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTU5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTU5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE1OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTU5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE1OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjAiIG5hbWU9IklucHV0MTYwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2MCIgbmFtZT0iT3V0cHV0MTYwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjAiIHR5cGU9InRuczpQb3J0VHlwZTE2MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTYwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTYwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTYxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2MSIgbmFtZT0iSW5wdXQxNjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTYxIiBuYW1lPSJPdXRwdXQxNjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2MSIgdHlwZT0idG5zOlBvcnRUeXBlMTYxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTYxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2MSIgYmluZGluZz0idG5zOkJpbmRpbmcxNjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTYyIiBuYW1lPSJJbnB1dDE2MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjIiIG5hbWU9Ik91dHB1dDE2MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTYyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTYyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTYyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjMiIG5hbWU9IklucHV0MTYzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2MyIgbmFtZT0iT3V0cHV0MTYzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjMiIHR5cGU9InRuczpQb3J0VHlwZTE2MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTYzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTYzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTY0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2NCIgbmFtZT0iSW5wdXQxNjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTY0IiBuYW1lPSJPdXRwdXQxNjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2NCIgdHlwZT0idG5zOlBvcnRUeXBlMTY0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2NCIgYmluZGluZz0idG5zOkJpbmRpbmcxNjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTY1IiBuYW1lPSJJbnB1dDE2NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjUiIG5hbWU9Ik91dHB1dDE2NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTY1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTY1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTY1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjYiIG5hbWU9IklucHV0MTY2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2NiIgbmFtZT0iT3V0cHV0MTY2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjYiIHR5cGU9InRuczpQb3J0VHlwZTE2NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTY2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTY2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTY3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE2NyIgbmFtZT0iSW5wdXQxNjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTY3IiBuYW1lPSJPdXRwdXQxNjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE2NyIgdHlwZT0idG5zOlBvcnRUeXBlMTY3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTY3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE2NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE2NyIgYmluZGluZz0idG5zOkJpbmRpbmcxNjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTY4IiBuYW1lPSJJbnB1dDE2OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNjgiIG5hbWU9Ik91dHB1dDE2OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTY4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTY4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE2OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTY4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE2OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE2OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNjkiIG5hbWU9IklucHV0MTY5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE2OSIgbmFtZT0iT3V0cHV0MTY5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNjkiIHR5cGU9InRuczpQb3J0VHlwZTE2OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE2OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTY5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNjkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTY5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTcwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTcwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3MCIgbmFtZT0iSW5wdXQxNzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTcwIiBuYW1lPSJPdXRwdXQxNzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3MCIgdHlwZT0idG5zOlBvcnRUeXBlMTcwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTcwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3MCIgYmluZGluZz0idG5zOkJpbmRpbmcxNzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTcxIiBuYW1lPSJJbnB1dDE3MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzEiIG5hbWU9Ik91dHB1dDE3MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTcxIiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTcxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTcxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzIiIG5hbWU9IklucHV0MTcyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3MiIgbmFtZT0iT3V0cHV0MTcyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzIiIHR5cGU9InRuczpQb3J0VHlwZTE3MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTcyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzIiIGJpbmRpbmc9InRuczpCaW5kaW5nMTcyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTczIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTczIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3MyIgbmFtZT0iSW5wdXQxNzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTczIiBuYW1lPSJPdXRwdXQxNzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3MyIgdHlwZT0idG5zOlBvcnRUeXBlMTczIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTczIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3MyIgYmluZGluZz0idG5zOkJpbmRpbmcxNzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTc0IiBuYW1lPSJJbnB1dDE3NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzQiIG5hbWU9Ik91dHB1dDE3NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTc0IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTc0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTc0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzUiIG5hbWU9IklucHV0MTc1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3NSIgbmFtZT0iT3V0cHV0MTc1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzUiIHR5cGU9InRuczpQb3J0VHlwZTE3NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTc1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzUiIGJpbmRpbmc9InRuczpCaW5kaW5nMTc1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTc2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3NiIgbmFtZT0iSW5wdXQxNzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTc2IiBuYW1lPSJPdXRwdXQxNzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3NiIgdHlwZT0idG5zOlBvcnRUeXBlMTc2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3NiIgYmluZGluZz0idG5zOkJpbmRpbmcxNzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxNzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTc3IiBuYW1lPSJJbnB1dDE3NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxNzciIG5hbWU9Ik91dHB1dDE3NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTc3IiB0eXBlPSJ0bnM6UG9ydFR5cGUxNzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xNzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTc3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE3NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTc3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE3NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxNzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxNzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxNzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE3OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxNzgiIG5hbWU9IklucHV0MTc4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE3OCIgbmFtZT0iT3V0cHV0MTc4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxNzgiIHR5cGU9InRuczpQb3J0VHlwZTE3OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE3OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xNzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTc4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxNzgiIGJpbmRpbmc9InRuczpCaW5kaW5nMTc4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxNzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTc5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE3OSIgbmFtZT0iSW5wdXQxNzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTc5IiBuYW1lPSJPdXRwdXQxNzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE3OSIgdHlwZT0idG5zOlBvcnRUeXBlMTc5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTc5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE3OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxNzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE3OSIgYmluZGluZz0idG5zOkJpbmRpbmcxNzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTgwIiBuYW1lPSJJbnB1dDE4MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODAiIG5hbWU9Ik91dHB1dDE4MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTgwIiB0eXBlPSJ0bnM6UG9ydFR5cGUxODAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTgwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTgwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODEiIG5hbWU9IklucHV0MTgxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4MSIgbmFtZT0iT3V0cHV0MTgxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODEiIHR5cGU9InRuczpQb3J0VHlwZTE4MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTgxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODEiIGJpbmRpbmc9InRuczpCaW5kaW5nMTgxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTgyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4MiIgbmFtZT0iSW5wdXQxODIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTgyIiBuYW1lPSJPdXRwdXQxODIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4MiIgdHlwZT0idG5zOlBvcnRUeXBlMTgyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTgyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4MiIgYmluZGluZz0idG5zOkJpbmRpbmcxODIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTgzIiBuYW1lPSJJbnB1dDE4MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODMiIG5hbWU9Ik91dHB1dDE4MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTgzIiB0eXBlPSJ0bnM6UG9ydFR5cGUxODMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTgzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTgzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODQiIG5hbWU9IklucHV0MTg0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4NCIgbmFtZT0iT3V0cHV0MTg0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODQiIHR5cGU9InRuczpQb3J0VHlwZTE4NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTg0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODQiIGJpbmRpbmc9InRuczpCaW5kaW5nMTg0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTg1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4NSIgbmFtZT0iSW5wdXQxODUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTg1IiBuYW1lPSJPdXRwdXQxODUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4NSIgdHlwZT0idG5zOlBvcnRUeXBlMTg1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4NSIgYmluZGluZz0idG5zOkJpbmRpbmcxODUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTg2IiBuYW1lPSJJbnB1dDE4NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODYiIG5hbWU9Ik91dHB1dDE4NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTg2IiB0eXBlPSJ0bnM6UG9ydFR5cGUxODYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTg2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTg2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE4NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxODciIG5hbWU9IklucHV0MTg3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE4NyIgbmFtZT0iT3V0cHV0MTg3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxODciIHR5cGU9InRuczpQb3J0VHlwZTE4NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE4NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xODciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTg3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxODciIGJpbmRpbmc9InRuczpCaW5kaW5nMTg3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTg4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE4OCIgbmFtZT0iSW5wdXQxODgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTg4IiBuYW1lPSJPdXRwdXQxODgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE4OCIgdHlwZT0idG5zOlBvcnRUeXBlMTg4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTg4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE4OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxODgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE4OCIgYmluZGluZz0idG5zOkJpbmRpbmcxODgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxODkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTg5IiBuYW1lPSJJbnB1dDE4OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxODkiIG5hbWU9Ik91dHB1dDE4OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTg5IiB0eXBlPSJ0bnM6UG9ydFR5cGUxODkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xODkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTg5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE4OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTg5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE4OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTAiIG5hbWU9IklucHV0MTkwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5MCIgbmFtZT0iT3V0cHV0MTkwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTAiIHR5cGU9InRuczpQb3J0VHlwZTE5MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTkwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTAiIGJpbmRpbmc9InRuczpCaW5kaW5nMTkwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTkxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5MSIgbmFtZT0iSW5wdXQxOTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTkxIiBuYW1lPSJPdXRwdXQxOTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5MSIgdHlwZT0idG5zOlBvcnRUeXBlMTkxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTkxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5MSIgYmluZGluZz0idG5zOkJpbmRpbmcxOTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTkyIiBuYW1lPSJJbnB1dDE5MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTIiIG5hbWU9Ik91dHB1dDE5MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTkyIiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTkyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTkyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTMiIG5hbWU9IklucHV0MTkzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5MyIgbmFtZT0iT3V0cHV0MTkzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTMiIHR5cGU9InRuczpQb3J0VHlwZTE5MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTkzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTMiIGJpbmRpbmc9InRuczpCaW5kaW5nMTkzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTk0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5NCIgbmFtZT0iSW5wdXQxOTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTk0IiBuYW1lPSJPdXRwdXQxOTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5NCIgdHlwZT0idG5zOlBvcnRUeXBlMTk0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5NCIgYmluZGluZz0idG5zOkJpbmRpbmcxOTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTk1IiBuYW1lPSJJbnB1dDE5NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTUiIG5hbWU9Ik91dHB1dDE5NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTk1IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTk1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTk1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTYiIG5hbWU9IklucHV0MTk2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5NiIgbmFtZT0iT3V0cHV0MTk2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTYiIHR5cGU9InRuczpQb3J0VHlwZTE5NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTk2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTYiIGJpbmRpbmc9InRuczpCaW5kaW5nMTk2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTE5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDE5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTE5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQxOTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMTk3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTE5NyIgbmFtZT0iSW5wdXQxOTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMTk3IiBuYW1lPSJPdXRwdXQxOTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzE5NyIgdHlwZT0idG5zOlBvcnRUeXBlMTk3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMTk3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjE5NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxOTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDE5NyIgYmluZGluZz0idG5zOkJpbmRpbmcxOTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMTk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MTk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMTk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDE5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUxOTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMTk4IiBuYW1lPSJJbnB1dDE5OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UxOTgiIG5hbWU9Ik91dHB1dDE5OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMTk4IiB0eXBlPSJ0bnM6UG9ydFR5cGUxOTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xOTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMTk4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTE5OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MTk4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzE5OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UxOTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQxOTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UxOTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MTk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTE5OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UxOTkiIG5hbWU9IklucHV0MTk5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTE5OSIgbmFtZT0iT3V0cHV0MTk5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcxOTkiIHR5cGU9InRuczpQb3J0VHlwZTE5OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjE5OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24xOTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMTk5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQxOTkiIGJpbmRpbmc9InRuczpCaW5kaW5nMTk5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIwMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIwMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjAwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjAwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIwMCIgbmFtZT0iSW5wdXQyMDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjAwIiBuYW1lPSJPdXRwdXQyMDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIwMCIgdHlwZT0idG5zOlBvcnRUeXBlMjAwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjAwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIwMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIwMCIgYmluZGluZz0idG5zOkJpbmRpbmcyMDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjAxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjAxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjAxIiBuYW1lPSJJbnB1dDIwMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMDEiIG5hbWU9Ik91dHB1dDIwMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjAxIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjAxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIwMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjAxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIwMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIwMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMDIiIG5hbWU9IklucHV0MjAyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIwMiIgbmFtZT0iT3V0cHV0MjAyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMDIiIHR5cGU9InRuczpQb3J0VHlwZTIwMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjAyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMDIiIGJpbmRpbmc9InRuczpCaW5kaW5nMjAyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIwMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIwMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjAzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjAzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIwMyIgbmFtZT0iSW5wdXQyMDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjAzIiBuYW1lPSJPdXRwdXQyMDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIwMyIgdHlwZT0idG5zOlBvcnRUeXBlMjAzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjAzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIwMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIwMyIgYmluZGluZz0idG5zOkJpbmRpbmcyMDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjA0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjA0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjA0IiBuYW1lPSJJbnB1dDIwNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMDQiIG5hbWU9Ik91dHB1dDIwNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjA0IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjA0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIwNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjA0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIwNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIwNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMDUiIG5hbWU9IklucHV0MjA1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIwNSIgbmFtZT0iT3V0cHV0MjA1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMDUiIHR5cGU9InRuczpQb3J0VHlwZTIwNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjA1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMDUiIGJpbmRpbmc9InRuczpCaW5kaW5nMjA1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIwNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIwNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjA2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjA2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIwNiIgbmFtZT0iSW5wdXQyMDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjA2IiBuYW1lPSJPdXRwdXQyMDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIwNiIgdHlwZT0idG5zOlBvcnRUeXBlMjA2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjA2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIwNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIwNiIgYmluZGluZz0idG5zOkJpbmRpbmcyMDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjA3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjA3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjA3IiBuYW1lPSJJbnB1dDIwNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMDciIG5hbWU9Ik91dHB1dDIwNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjA3IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjA3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIwNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjA3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIwNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIwOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMDgiIG5hbWU9IklucHV0MjA4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIwOCIgbmFtZT0iT3V0cHV0MjA4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMDgiIHR5cGU9InRuczpQb3J0VHlwZTIwOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIwOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjA4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMDgiIGJpbmRpbmc9InRuczpCaW5kaW5nMjA4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIwOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIwOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjA5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjA5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIwOSIgbmFtZT0iSW5wdXQyMDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjA5IiBuYW1lPSJPdXRwdXQyMDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIwOSIgdHlwZT0idG5zOlBvcnRUeXBlMjA5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjA5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIwOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIwOSIgYmluZGluZz0idG5zOkJpbmRpbmcyMDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjEwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjEwIiBuYW1lPSJJbnB1dDIxMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMTAiIG5hbWU9Ik91dHB1dDIxMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjEwIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjEwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIxMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjEwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIxMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIxMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMTEiIG5hbWU9IklucHV0MjExIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIxMSIgbmFtZT0iT3V0cHV0MjExIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMTEiIHR5cGU9InRuczpQb3J0VHlwZTIxMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjExIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMTEiIGJpbmRpbmc9InRuczpCaW5kaW5nMjExIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIxMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIxMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjEyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjEyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIxMiIgbmFtZT0iSW5wdXQyMTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjEyIiBuYW1lPSJPdXRwdXQyMTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIxMiIgdHlwZT0idG5zOlBvcnRUeXBlMjEyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjEyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIxMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIxMiIgYmluZGluZz0idG5zOkJpbmRpbmcyMTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjEzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjEzIiBuYW1lPSJJbnB1dDIxMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMTMiIG5hbWU9Ik91dHB1dDIxMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjEzIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjEzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIxMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjEzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIxMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIxNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMTQiIG5hbWU9IklucHV0MjE0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIxNCIgbmFtZT0iT3V0cHV0MjE0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMTQiIHR5cGU9InRuczpQb3J0VHlwZTIxNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjE0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMTQiIGJpbmRpbmc9InRuczpCaW5kaW5nMjE0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIxNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIxNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjE1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjE1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIxNSIgbmFtZT0iSW5wdXQyMTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjE1IiBuYW1lPSJPdXRwdXQyMTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIxNSIgdHlwZT0idG5zOlBvcnRUeXBlMjE1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjE1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIxNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIxNSIgYmluZGluZz0idG5zOkJpbmRpbmcyMTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjE2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjE2IiBuYW1lPSJJbnB1dDIxNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMTYiIG5hbWU9Ik91dHB1dDIxNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjE2IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjE2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIxNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjE2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIxNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIxNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMTciIG5hbWU9IklucHV0MjE3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIxNyIgbmFtZT0iT3V0cHV0MjE3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMTciIHR5cGU9InRuczpQb3J0VHlwZTIxNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIxNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjE3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMTciIGJpbmRpbmc9InRuczpCaW5kaW5nMjE3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIxOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIxOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjE4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjE4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIxOCIgbmFtZT0iSW5wdXQyMTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjE4IiBuYW1lPSJPdXRwdXQyMTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIxOCIgdHlwZT0idG5zOlBvcnRUeXBlMjE4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjE4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIxOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIxOCIgYmluZGluZz0idG5zOkJpbmRpbmcyMTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjE5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjE5IiBuYW1lPSJJbnB1dDIxOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMTkiIG5hbWU9Ik91dHB1dDIxOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjE5IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjE5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIxOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjE5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIxOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIyMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMjAiIG5hbWU9IklucHV0MjIwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIyMCIgbmFtZT0iT3V0cHV0MjIwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMjAiIHR5cGU9InRuczpQb3J0VHlwZTIyMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjIwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMjAiIGJpbmRpbmc9InRuczpCaW5kaW5nMjIwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIyMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjIxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjIxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIyMSIgbmFtZT0iSW5wdXQyMjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjIxIiBuYW1lPSJPdXRwdXQyMjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIyMSIgdHlwZT0idG5zOlBvcnRUeXBlMjIxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjIxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIyMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIyMSIgYmluZGluZz0idG5zOkJpbmRpbmcyMjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjIyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjIyIiBuYW1lPSJJbnB1dDIyMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMjIiIG5hbWU9Ik91dHB1dDIyMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjIyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjIyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIyMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjIyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIyMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIyMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMjMiIG5hbWU9IklucHV0MjIzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIyMyIgbmFtZT0iT3V0cHV0MjIzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMjMiIHR5cGU9InRuczpQb3J0VHlwZTIyMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjIzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMjMiIGJpbmRpbmc9InRuczpCaW5kaW5nMjIzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIyNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjI0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjI0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIyNCIgbmFtZT0iSW5wdXQyMjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjI0IiBuYW1lPSJPdXRwdXQyMjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIyNCIgdHlwZT0idG5zOlBvcnRUeXBlMjI0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjI0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIyNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIyNCIgYmluZGluZz0idG5zOkJpbmRpbmcyMjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjI1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjI1IiBuYW1lPSJJbnB1dDIyNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMjUiIG5hbWU9Ik91dHB1dDIyNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjI1IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjI1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIyNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjI1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIyNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIyNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMjYiIG5hbWU9IklucHV0MjI2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIyNiIgbmFtZT0iT3V0cHV0MjI2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMjYiIHR5cGU9InRuczpQb3J0VHlwZTIyNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjI2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMjYiIGJpbmRpbmc9InRuczpCaW5kaW5nMjI2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIyNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjI3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjI3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIyNyIgbmFtZT0iSW5wdXQyMjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjI3IiBuYW1lPSJPdXRwdXQyMjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIyNyIgdHlwZT0idG5zOlBvcnRUeXBlMjI3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjI3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIyNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIyNyIgYmluZGluZz0idG5zOkJpbmRpbmcyMjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjI4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjI4IiBuYW1lPSJJbnB1dDIyOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMjgiIG5hbWU9Ik91dHB1dDIyOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjI4IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjI4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIyOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjI4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIyOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIyOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMjkiIG5hbWU9IklucHV0MjI5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIyOSIgbmFtZT0iT3V0cHV0MjI5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMjkiIHR5cGU9InRuczpQb3J0VHlwZTIyOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIyOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjI5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMjkiIGJpbmRpbmc9InRuczpCaW5kaW5nMjI5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIzMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjMwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjMwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIzMCIgbmFtZT0iSW5wdXQyMzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjMwIiBuYW1lPSJPdXRwdXQyMzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIzMCIgdHlwZT0idG5zOlBvcnRUeXBlMjMwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjMwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIzMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIzMCIgYmluZGluZz0idG5zOkJpbmRpbmcyMzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjMxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjMxIiBuYW1lPSJJbnB1dDIzMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMzEiIG5hbWU9Ik91dHB1dDIzMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjMxIiB0eXBlPSJ0bnM6UG9ydFR5cGUyMzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjMxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIzMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjMxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzIzMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIzMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMzIiIG5hbWU9IklucHV0MjMyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIzMiIgbmFtZT0iT3V0cHV0MjMyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMzIiIHR5cGU9InRuczpQb3J0VHlwZTIzMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjMyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMzIiIGJpbmRpbmc9InRuczpCaW5kaW5nMjMyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIzMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjMzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjMzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIzMyIgbmFtZT0iSW5wdXQyMzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjMzIiBuYW1lPSJPdXRwdXQyMzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIzMyIgdHlwZT0idG5zOlBvcnRUeXBlMjMzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjMzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIzMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIzMyIgYmluZGluZz0idG5zOkJpbmRpbmcyMzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjM0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjM0IiBuYW1lPSJJbnB1dDIzNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMzQiIG5hbWU9Ik91dHB1dDIzNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjM0IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjM0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIzNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjM0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIzNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIzNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMzUiIG5hbWU9IklucHV0MjM1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIzNSIgbmFtZT0iT3V0cHV0MjM1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMzUiIHR5cGU9InRuczpQb3J0VHlwZTIzNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjM1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMzUiIGJpbmRpbmc9InRuczpCaW5kaW5nMjM1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIzNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjM2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjM2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIzNiIgbmFtZT0iSW5wdXQyMzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjM2IiBuYW1lPSJPdXRwdXQyMzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIzNiIgdHlwZT0idG5zOlBvcnRUeXBlMjM2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjM2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIzNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIzNiIgYmluZGluZz0idG5zOkJpbmRpbmcyMzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjM3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDIzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyMzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjM3IiBuYW1lPSJJbnB1dDIzNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyMzciIG5hbWU9Ik91dHB1dDIzNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjM3IiB0eXBlPSJ0bnM6UG9ydFR5cGUyMzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yMzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjM3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTIzNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjM3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzIzNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyMzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyMzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyMzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTIzOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyMzgiIG5hbWU9IklucHV0MjM4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTIzOCIgbmFtZT0iT3V0cHV0MjM4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyMzgiIHR5cGU9InRuczpQb3J0VHlwZTIzOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIzOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yMzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjM4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyMzgiIGJpbmRpbmc9InRuczpCaW5kaW5nMjM4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTIzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDIzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTIzOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyMzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjM5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjM5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTIzOSIgbmFtZT0iSW5wdXQyMzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjM5IiBuYW1lPSJPdXRwdXQyMzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzIzOSIgdHlwZT0idG5zOlBvcnRUeXBlMjM5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjM5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjIzOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyMzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDIzOSIgYmluZGluZz0idG5zOkJpbmRpbmcyMzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjQwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjQwIiBuYW1lPSJJbnB1dDI0MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNDAiIG5hbWU9Ik91dHB1dDI0MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjQwIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjQwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI0MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjQwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI0MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI0MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNDEiIG5hbWU9IklucHV0MjQxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI0MSIgbmFtZT0iT3V0cHV0MjQxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNDEiIHR5cGU9InRuczpQb3J0VHlwZTI0MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjQxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNDEiIGJpbmRpbmc9InRuczpCaW5kaW5nMjQxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI0MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjQyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI0MiIgbmFtZT0iSW5wdXQyNDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjQyIiBuYW1lPSJPdXRwdXQyNDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI0MiIgdHlwZT0idG5zOlBvcnRUeXBlMjQyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI0MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI0MiIgYmluZGluZz0idG5zOkJpbmRpbmcyNDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjQzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjQzIiBuYW1lPSJJbnB1dDI0MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNDMiIG5hbWU9Ik91dHB1dDI0MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjQzIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjQzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI0MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjQzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI0MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI0NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNDQiIG5hbWU9IklucHV0MjQ0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI0NCIgbmFtZT0iT3V0cHV0MjQ0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNDQiIHR5cGU9InRuczpQb3J0VHlwZTI0NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjQ0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNDQiIGJpbmRpbmc9InRuczpCaW5kaW5nMjQ0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI0NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjQ1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQ1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI0NSIgbmFtZT0iSW5wdXQyNDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjQ1IiBuYW1lPSJPdXRwdXQyNDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI0NSIgdHlwZT0idG5zOlBvcnRUeXBlMjQ1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQ1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI0NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI0NSIgYmluZGluZz0idG5zOkJpbmRpbmcyNDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjQ2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjQ2IiBuYW1lPSJJbnB1dDI0NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNDYiIG5hbWU9Ik91dHB1dDI0NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjQ2IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjQ2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI0NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjQ2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI0NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI0NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNDciIG5hbWU9IklucHV0MjQ3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI0NyIgbmFtZT0iT3V0cHV0MjQ3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNDciIHR5cGU9InRuczpQb3J0VHlwZTI0NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI0NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjQ3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNDciIGJpbmRpbmc9InRuczpCaW5kaW5nMjQ3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI0OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjQ4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQ4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI0OCIgbmFtZT0iSW5wdXQyNDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjQ4IiBuYW1lPSJPdXRwdXQyNDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI0OCIgdHlwZT0idG5zOlBvcnRUeXBlMjQ4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjQ4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI0OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI0OCIgYmluZGluZz0idG5zOkJpbmRpbmcyNDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjQ5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjQ5IiBuYW1lPSJJbnB1dDI0OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNDkiIG5hbWU9Ik91dHB1dDI0OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjQ5IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjQ5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI0OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjQ5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI0OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI1MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNTAiIG5hbWU9IklucHV0MjUwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI1MCIgbmFtZT0iT3V0cHV0MjUwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNTAiIHR5cGU9InRuczpQb3J0VHlwZTI1MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjUwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNTAiIGJpbmRpbmc9InRuczpCaW5kaW5nMjUwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI1MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjUxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjUxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI1MSIgbmFtZT0iSW5wdXQyNTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjUxIiBuYW1lPSJPdXRwdXQyNTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI1MSIgdHlwZT0idG5zOlBvcnRUeXBlMjUxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjUxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI1MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI1MSIgYmluZGluZz0idG5zOkJpbmRpbmcyNTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjUyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjUyIiBuYW1lPSJJbnB1dDI1MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNTIiIG5hbWU9Ik91dHB1dDI1MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjUyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjUyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI1MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjUyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI1MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI1MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNTMiIG5hbWU9IklucHV0MjUzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI1MyIgbmFtZT0iT3V0cHV0MjUzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNTMiIHR5cGU9InRuczpQb3J0VHlwZTI1MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjUzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNTMiIGJpbmRpbmc9InRuczpCaW5kaW5nMjUzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI1NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjU0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjU0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI1NCIgbmFtZT0iSW5wdXQyNTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjU0IiBuYW1lPSJPdXRwdXQyNTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI1NCIgdHlwZT0idG5zOlBvcnRUeXBlMjU0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjU0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI1NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI1NCIgYmluZGluZz0idG5zOkJpbmRpbmcyNTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjU1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjU1IiBuYW1lPSJJbnB1dDI1NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNTUiIG5hbWU9Ik91dHB1dDI1NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjU1IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjU1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI1NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjU1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI1NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI1NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNTYiIG5hbWU9IklucHV0MjU2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI1NiIgbmFtZT0iT3V0cHV0MjU2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNTYiIHR5cGU9InRuczpQb3J0VHlwZTI1NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjU2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNTYiIGJpbmRpbmc9InRuczpCaW5kaW5nMjU2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI1NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjU3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjU3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI1NyIgbmFtZT0iSW5wdXQyNTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjU3IiBuYW1lPSJPdXRwdXQyNTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI1NyIgdHlwZT0idG5zOlBvcnRUeXBlMjU3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjU3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI1NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI1NyIgYmluZGluZz0idG5zOkJpbmRpbmcyNTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjU4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjU4IiBuYW1lPSJJbnB1dDI1OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNTgiIG5hbWU9Ik91dHB1dDI1OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjU4IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjU4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI1OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjU4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI1OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI1OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNTkiIG5hbWU9IklucHV0MjU5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI1OSIgbmFtZT0iT3V0cHV0MjU5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNTkiIHR5cGU9InRuczpQb3J0VHlwZTI1OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI1OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjU5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNTkiIGJpbmRpbmc9InRuczpCaW5kaW5nMjU5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI2MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjYwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjYwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI2MCIgbmFtZT0iSW5wdXQyNjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjYwIiBuYW1lPSJPdXRwdXQyNjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI2MCIgdHlwZT0idG5zOlBvcnRUeXBlMjYwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjYwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI2MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI2MCIgYmluZGluZz0idG5zOkJpbmRpbmcyNjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjYxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjYxIiBuYW1lPSJJbnB1dDI2MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNjEiIG5hbWU9Ik91dHB1dDI2MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjYxIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjYxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI2MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjYxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI2MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI2MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNjIiIG5hbWU9IklucHV0MjYyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI2MiIgbmFtZT0iT3V0cHV0MjYyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNjIiIHR5cGU9InRuczpQb3J0VHlwZTI2MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjYyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNjIiIGJpbmRpbmc9InRuczpCaW5kaW5nMjYyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI2MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjYzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjYzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI2MyIgbmFtZT0iSW5wdXQyNjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjYzIiBuYW1lPSJPdXRwdXQyNjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI2MyIgdHlwZT0idG5zOlBvcnRUeXBlMjYzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjYzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI2MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI2MyIgYmluZGluZz0idG5zOkJpbmRpbmcyNjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjY0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjY0IiBuYW1lPSJJbnB1dDI2NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNjQiIG5hbWU9Ik91dHB1dDI2NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjY0IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjY0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI2NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjY0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI2NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI2NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNjUiIG5hbWU9IklucHV0MjY1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI2NSIgbmFtZT0iT3V0cHV0MjY1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNjUiIHR5cGU9InRuczpQb3J0VHlwZTI2NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjY1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNjUiIGJpbmRpbmc9InRuczpCaW5kaW5nMjY1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI2NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjY2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjY2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI2NiIgbmFtZT0iSW5wdXQyNjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjY2IiBuYW1lPSJPdXRwdXQyNjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI2NiIgdHlwZT0idG5zOlBvcnRUeXBlMjY2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjY2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI2NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI2NiIgYmluZGluZz0idG5zOkJpbmRpbmcyNjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjY3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjY3IiBuYW1lPSJJbnB1dDI2NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNjciIG5hbWU9Ik91dHB1dDI2NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjY3IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjY3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI2NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjY3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI2NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI2OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNjgiIG5hbWU9IklucHV0MjY4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI2OCIgbmFtZT0iT3V0cHV0MjY4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNjgiIHR5cGU9InRuczpQb3J0VHlwZTI2OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI2OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjY4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNjgiIGJpbmRpbmc9InRuczpCaW5kaW5nMjY4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI2OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjY5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjY5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI2OSIgbmFtZT0iSW5wdXQyNjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjY5IiBuYW1lPSJPdXRwdXQyNjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI2OSIgdHlwZT0idG5zOlBvcnRUeXBlMjY5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjY5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI2OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI2OSIgYmluZGluZz0idG5zOkJpbmRpbmcyNjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjcwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjcwIiBuYW1lPSJJbnB1dDI3MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNzAiIG5hbWU9Ik91dHB1dDI3MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjcwIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjcwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI3MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjcwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI3MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI3MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNzEiIG5hbWU9IklucHV0MjcxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI3MSIgbmFtZT0iT3V0cHV0MjcxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNzEiIHR5cGU9InRuczpQb3J0VHlwZTI3MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjcxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNzEiIGJpbmRpbmc9InRuczpCaW5kaW5nMjcxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI3MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjcyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjcyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI3MiIgbmFtZT0iSW5wdXQyNzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjcyIiBuYW1lPSJPdXRwdXQyNzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI3MiIgdHlwZT0idG5zOlBvcnRUeXBlMjcyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjcyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI3MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI3MiIgYmluZGluZz0idG5zOkJpbmRpbmcyNzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjczIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjczIiBuYW1lPSJJbnB1dDI3MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNzMiIG5hbWU9Ik91dHB1dDI3MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjczIiB0eXBlPSJ0bnM6UG9ydFR5cGUyNzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjczIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI3MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjczIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI3MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI3NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNzQiIG5hbWU9IklucHV0Mjc0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI3NCIgbmFtZT0iT3V0cHV0Mjc0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNzQiIHR5cGU9InRuczpQb3J0VHlwZTI3NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjc0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNzQiIGJpbmRpbmc9InRuczpCaW5kaW5nMjc0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI3NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjc1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjc1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI3NSIgbmFtZT0iSW5wdXQyNzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjc1IiBuYW1lPSJPdXRwdXQyNzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI3NSIgdHlwZT0idG5zOlBvcnRUeXBlMjc1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjc1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI3NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI3NSIgYmluZGluZz0idG5zOkJpbmRpbmcyNzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjc2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjc2IiBuYW1lPSJJbnB1dDI3NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNzYiIG5hbWU9Ik91dHB1dDI3NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjc2IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjc2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI3NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjc2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI3NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyNzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyNzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyNzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI3NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyNzciIG5hbWU9IklucHV0Mjc3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI3NyIgbmFtZT0iT3V0cHV0Mjc3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyNzciIHR5cGU9InRuczpQb3J0VHlwZTI3NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI3NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yNzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjc3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyNzciIGJpbmRpbmc9InRuczpCaW5kaW5nMjc3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI3OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyNzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjc4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjc4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI3OCIgbmFtZT0iSW5wdXQyNzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjc4IiBuYW1lPSJPdXRwdXQyNzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI3OCIgdHlwZT0idG5zOlBvcnRUeXBlMjc4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjc4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI3OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyNzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI3OCIgYmluZGluZz0idG5zOkJpbmRpbmcyNzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjc5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyNzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjc5IiBuYW1lPSJJbnB1dDI3OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyNzkiIG5hbWU9Ik91dHB1dDI3OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjc5IiB0eXBlPSJ0bnM6UG9ydFR5cGUyNzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yNzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjc5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI3OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjc5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI3OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyODAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI4MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyODAiIG5hbWU9IklucHV0MjgwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI4MCIgbmFtZT0iT3V0cHV0MjgwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyODAiIHR5cGU9InRuczpQb3J0VHlwZTI4MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yODAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjgwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyODAiIGJpbmRpbmc9InRuczpCaW5kaW5nMjgwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI4MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjgxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjgxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI4MSIgbmFtZT0iSW5wdXQyODEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjgxIiBuYW1lPSJPdXRwdXQyODEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI4MSIgdHlwZT0idG5zOlBvcnRUeXBlMjgxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjgxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI4MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyODEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI4MSIgYmluZGluZz0idG5zOkJpbmRpbmcyODEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjgyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyODIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjgyIiBuYW1lPSJJbnB1dDI4MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyODIiIG5hbWU9Ik91dHB1dDI4MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjgyIiB0eXBlPSJ0bnM6UG9ydFR5cGUyODIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjgyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI4MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjgyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI4MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyODMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI4MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyODMiIG5hbWU9IklucHV0MjgzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI4MyIgbmFtZT0iT3V0cHV0MjgzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyODMiIHR5cGU9InRuczpQb3J0VHlwZTI4MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yODMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjgzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyODMiIGJpbmRpbmc9InRuczpCaW5kaW5nMjgzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI4NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjg0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjg0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI4NCIgbmFtZT0iSW5wdXQyODQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjg0IiBuYW1lPSJPdXRwdXQyODQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI4NCIgdHlwZT0idG5zOlBvcnRUeXBlMjg0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjg0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI4NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyODQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI4NCIgYmluZGluZz0idG5zOkJpbmRpbmcyODQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjg1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyODUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjg1IiBuYW1lPSJJbnB1dDI4NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyODUiIG5hbWU9Ik91dHB1dDI4NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjg1IiB0eXBlPSJ0bnM6UG9ydFR5cGUyODUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjg1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI4NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjg1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI4NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyODYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI4NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyODYiIG5hbWU9IklucHV0Mjg2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI4NiIgbmFtZT0iT3V0cHV0Mjg2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyODYiIHR5cGU9InRuczpQb3J0VHlwZTI4NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yODYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjg2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyODYiIGJpbmRpbmc9InRuczpCaW5kaW5nMjg2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI4NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjg3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjg3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI4NyIgbmFtZT0iSW5wdXQyODciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjg3IiBuYW1lPSJPdXRwdXQyODciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI4NyIgdHlwZT0idG5zOlBvcnRUeXBlMjg3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjg3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI4NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyODciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI4NyIgYmluZGluZz0idG5zOkJpbmRpbmcyODciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjg4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyODgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjg4IiBuYW1lPSJJbnB1dDI4OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyODgiIG5hbWU9Ik91dHB1dDI4OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjg4IiB0eXBlPSJ0bnM6UG9ydFR5cGUyODgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yODgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjg4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI4OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjg4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI4OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyODkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI4OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyODkiIG5hbWU9IklucHV0Mjg5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI4OSIgbmFtZT0iT3V0cHV0Mjg5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyODkiIHR5cGU9InRuczpQb3J0VHlwZTI4OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI4OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yODkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjg5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyODkiIGJpbmRpbmc9InRuczpCaW5kaW5nMjg5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI5MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyOTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjkwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjkwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI5MCIgbmFtZT0iSW5wdXQyOTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjkwIiBuYW1lPSJPdXRwdXQyOTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI5MCIgdHlwZT0idG5zOlBvcnRUeXBlMjkwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjkwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI5MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyOTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI5MCIgYmluZGluZz0idG5zOkJpbmRpbmcyOTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MjkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjkxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyOTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjkxIiBuYW1lPSJJbnB1dDI5MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOTEiIG5hbWU9Ik91dHB1dDI5MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjkxIiB0eXBlPSJ0bnM6UG9ydFR5cGUyOTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjkxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI5MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MjkxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzI5MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyOTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyOTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MjkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI5MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOTIiIG5hbWU9IklucHV0MjkyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI5MiIgbmFtZT0iT3V0cHV0MjkyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyOTIiIHR5cGU9InRuczpQb3J0VHlwZTI5MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yOTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjkyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOTIiIGJpbmRpbmc9InRuczpCaW5kaW5nMjkyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI5MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyOTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjkzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjkzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI5MyIgbmFtZT0iSW5wdXQyOTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjkzIiBuYW1lPSJPdXRwdXQyOTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI5MyIgdHlwZT0idG5zOlBvcnRUeXBlMjkzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjkzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI5MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyOTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI5MyIgYmluZGluZz0idG5zOkJpbmRpbmcyOTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjk0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyOTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjk0IiBuYW1lPSJJbnB1dDI5NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOTQiIG5hbWU9Ik91dHB1dDI5NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjk0IiB0eXBlPSJ0bnM6UG9ydFR5cGUyOTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjk0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI5NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjk0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI5NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyOTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyOTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI5NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOTUiIG5hbWU9IklucHV0Mjk1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI5NSIgbmFtZT0iT3V0cHV0Mjk1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyOTUiIHR5cGU9InRuczpQb3J0VHlwZTI5NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yOTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjk1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOTUiIGJpbmRpbmc9InRuczpCaW5kaW5nMjk1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI5NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyOTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjk2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjk2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI5NiIgbmFtZT0iSW5wdXQyOTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjk2IiBuYW1lPSJPdXRwdXQyOTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI5NiIgdHlwZT0idG5zOlBvcnRUeXBlMjk2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjk2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI5NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyOTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI5NiIgYmluZGluZz0idG5zOkJpbmRpbmcyOTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMjk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mjk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMjk3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDI5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUyOTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMjk3IiBuYW1lPSJJbnB1dDI5NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UyOTciIG5hbWU9Ik91dHB1dDI5NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMjk3IiB0eXBlPSJ0bnM6UG9ydFR5cGUyOTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yOTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMjk3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTI5NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mjk3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzI5NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UyOTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQyOTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UyOTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mjk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTI5OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UyOTgiIG5hbWU9IklucHV0Mjk4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTI5OCIgbmFtZT0iT3V0cHV0Mjk4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmcyOTgiIHR5cGU9InRuczpQb3J0VHlwZTI5OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjI5OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24yOTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMjk4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQyOTgiIGJpbmRpbmc9InRuczpCaW5kaW5nMjk4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTI5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDI5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTI5OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQyOTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMjk5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjk5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTI5OSIgbmFtZT0iSW5wdXQyOTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMjk5IiBuYW1lPSJPdXRwdXQyOTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzI5OSIgdHlwZT0idG5zOlBvcnRUeXBlMjk5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMjk5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjI5OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UyOTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDI5OSIgYmluZGluZz0idG5zOkJpbmRpbmcyOTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzAwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzAwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzAwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMwMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMDAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzAwIiBuYW1lPSJJbnB1dDMwMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMDAiIG5hbWU9Ik91dHB1dDMwMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzAwIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMDAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzAwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMwMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzAwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMwMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMDEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzAxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMwMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMDEiIG5hbWU9IklucHV0MzAxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMwMSIgbmFtZT0iT3V0cHV0MzAxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMDEiIHR5cGU9InRuczpQb3J0VHlwZTMwMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMDEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzAxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMDEiIGJpbmRpbmc9InRuczpCaW5kaW5nMzAxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMwMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMwMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMwMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzAyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzAyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMwMiIgbmFtZT0iSW5wdXQzMDIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzAyIiBuYW1lPSJPdXRwdXQzMDIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMwMiIgdHlwZT0idG5zOlBvcnRUeXBlMzAyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzAyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMwMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMDIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMwMiIgYmluZGluZz0idG5zOkJpbmRpbmczMDIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzAzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzAzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzAzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMwMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMDMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzAzIiBuYW1lPSJJbnB1dDMwMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMDMiIG5hbWU9Ik91dHB1dDMwMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzAzIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMDMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzAzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMwMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzAzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMwMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMDQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzA0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMwNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMDQiIG5hbWU9IklucHV0MzA0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMwNCIgbmFtZT0iT3V0cHV0MzA0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMDQiIHR5cGU9InRuczpQb3J0VHlwZTMwNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMDQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzA0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMDQiIGJpbmRpbmc9InRuczpCaW5kaW5nMzA0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMwNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMwNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMwNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzA1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzA1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMwNSIgbmFtZT0iSW5wdXQzMDUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzA1IiBuYW1lPSJPdXRwdXQzMDUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMwNSIgdHlwZT0idG5zOlBvcnRUeXBlMzA1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzA1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMwNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMDUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMwNSIgYmluZGluZz0idG5zOkJpbmRpbmczMDUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzA2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzA2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzA2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMwNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMDYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzA2IiBuYW1lPSJJbnB1dDMwNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMDYiIG5hbWU9Ik91dHB1dDMwNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzA2IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMDYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzA2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMwNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzA2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMwNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMDciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzA3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMwNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMDciIG5hbWU9IklucHV0MzA3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMwNyIgbmFtZT0iT3V0cHV0MzA3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMDciIHR5cGU9InRuczpQb3J0VHlwZTMwNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMwNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMDciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzA3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMDciIGJpbmRpbmc9InRuczpCaW5kaW5nMzA3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMwOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMwOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMwOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzA4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzA4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMwOCIgbmFtZT0iSW5wdXQzMDgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzA4IiBuYW1lPSJPdXRwdXQzMDgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMwOCIgdHlwZT0idG5zOlBvcnRUeXBlMzA4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzA4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMwOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMDgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMwOCIgYmluZGluZz0idG5zOkJpbmRpbmczMDgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzA5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzA5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzA5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMwOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMDkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzA5IiBuYW1lPSJJbnB1dDMwOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMDkiIG5hbWU9Ik91dHB1dDMwOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzA5IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMDkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMDkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzA5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMwOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzA5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMwOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzEwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMxMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMTAiIG5hbWU9IklucHV0MzEwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMxMCIgbmFtZT0iT3V0cHV0MzEwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMTAiIHR5cGU9InRuczpQb3J0VHlwZTMxMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzEwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMTAiIGJpbmRpbmc9InRuczpCaW5kaW5nMzEwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMxMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMxMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMxMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzExIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzExIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMxMSIgbmFtZT0iSW5wdXQzMTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzExIiBuYW1lPSJPdXRwdXQzMTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMxMSIgdHlwZT0idG5zOlBvcnRUeXBlMzExIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzExIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMxMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMxMSIgYmluZGluZz0idG5zOkJpbmRpbmczMTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzEyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMxMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzEyIiBuYW1lPSJJbnB1dDMxMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMTIiIG5hbWU9Ik91dHB1dDMxMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzEyIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzEyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMxMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzEyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMxMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzEzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMxMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMTMiIG5hbWU9IklucHV0MzEzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMxMyIgbmFtZT0iT3V0cHV0MzEzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMTMiIHR5cGU9InRuczpQb3J0VHlwZTMxMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzEzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMTMiIGJpbmRpbmc9InRuczpCaW5kaW5nMzEzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMxNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMxNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMxNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzE0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzE0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMxNCIgbmFtZT0iSW5wdXQzMTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzE0IiBuYW1lPSJPdXRwdXQzMTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMxNCIgdHlwZT0idG5zOlBvcnRUeXBlMzE0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzE0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMxNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMxNCIgYmluZGluZz0idG5zOkJpbmRpbmczMTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzE1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMxNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzE1IiBuYW1lPSJJbnB1dDMxNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMTUiIG5hbWU9Ik91dHB1dDMxNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzE1IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzE1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMxNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzE1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMxNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzE2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMxNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMTYiIG5hbWU9IklucHV0MzE2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMxNiIgbmFtZT0iT3V0cHV0MzE2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMTYiIHR5cGU9InRuczpQb3J0VHlwZTMxNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzE2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMTYiIGJpbmRpbmc9InRuczpCaW5kaW5nMzE2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMxNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMxNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMxNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzE3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzE3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMxNyIgbmFtZT0iSW5wdXQzMTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzE3IiBuYW1lPSJPdXRwdXQzMTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMxNyIgdHlwZT0idG5zOlBvcnRUeXBlMzE3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzE3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMxNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMxNyIgYmluZGluZz0idG5zOkJpbmRpbmczMTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzE4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMxOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzE4IiBuYW1lPSJJbnB1dDMxOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMTgiIG5hbWU9Ik91dHB1dDMxOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzE4IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzE4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMxOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzE4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMxOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzE5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMxOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMTkiIG5hbWU9IklucHV0MzE5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMxOSIgbmFtZT0iT3V0cHV0MzE5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMTkiIHR5cGU9InRuczpQb3J0VHlwZTMxOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMxOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzE5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMTkiIGJpbmRpbmc9InRuczpCaW5kaW5nMzE5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMyMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzIwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzIwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMyMCIgbmFtZT0iSW5wdXQzMjAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzIwIiBuYW1lPSJPdXRwdXQzMjAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMyMCIgdHlwZT0idG5zOlBvcnRUeXBlMzIwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzIwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMyMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMjAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMyMCIgYmluZGluZz0idG5zOkJpbmRpbmczMjAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzIxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMyMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMjEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzIxIiBuYW1lPSJJbnB1dDMyMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMjEiIG5hbWU9Ik91dHB1dDMyMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzIxIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMjEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzIxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMyMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzIxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMyMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMjIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzIyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMyMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMjIiIG5hbWU9IklucHV0MzIyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMyMiIgbmFtZT0iT3V0cHV0MzIyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMjIiIHR5cGU9InRuczpQb3J0VHlwZTMyMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMjIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzIyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMjIiIGJpbmRpbmc9InRuczpCaW5kaW5nMzIyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMyMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzIzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzIzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMyMyIgbmFtZT0iSW5wdXQzMjMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzIzIiBuYW1lPSJPdXRwdXQzMjMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMyMyIgdHlwZT0idG5zOlBvcnRUeXBlMzIzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzIzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMyMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMjMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMyMyIgYmluZGluZz0idG5zOkJpbmRpbmczMjMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzI0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMyNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMjQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzI0IiBuYW1lPSJJbnB1dDMyNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMjQiIG5hbWU9Ik91dHB1dDMyNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzI0IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMjQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzI0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMyNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzI0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMyNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMjUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzI1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMyNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMjUiIG5hbWU9IklucHV0MzI1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMyNSIgbmFtZT0iT3V0cHV0MzI1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMjUiIHR5cGU9InRuczpQb3J0VHlwZTMyNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMjUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzI1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMjUiIGJpbmRpbmc9InRuczpCaW5kaW5nMzI1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMyNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzI2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzI2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMyNiIgbmFtZT0iSW5wdXQzMjYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzI2IiBuYW1lPSJPdXRwdXQzMjYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMyNiIgdHlwZT0idG5zOlBvcnRUeXBlMzI2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzI2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMyNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMjYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMyNiIgYmluZGluZz0idG5zOkJpbmRpbmczMjYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzI3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMyNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMjciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzI3IiBuYW1lPSJJbnB1dDMyNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMjciIG5hbWU9Ik91dHB1dDMyNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzI3IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMjciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMjciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzI3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMyNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzI3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMyNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMjgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzI4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMyOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMjgiIG5hbWU9IklucHV0MzI4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMyOCIgbmFtZT0iT3V0cHV0MzI4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMjgiIHR5cGU9InRuczpQb3J0VHlwZTMyOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMyOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMjgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzI4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMjgiIGJpbmRpbmc9InRuczpCaW5kaW5nMzI4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMyOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzI5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzI5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMyOSIgbmFtZT0iSW5wdXQzMjkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzI5IiBuYW1lPSJPdXRwdXQzMjkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMyOSIgdHlwZT0idG5zOlBvcnRUeXBlMzI5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzI5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMyOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMjkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMyOSIgYmluZGluZz0idG5zOkJpbmRpbmczMjkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzMwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMzMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMzAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzMwIiBuYW1lPSJJbnB1dDMzMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMzAiIG5hbWU9Ik91dHB1dDMzMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzMwIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMzAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzMwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMzMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzMwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMzMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMzEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzMxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMzMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMzEiIG5hbWU9IklucHV0MzMxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMzMSIgbmFtZT0iT3V0cHV0MzMxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMzEiIHR5cGU9InRuczpQb3J0VHlwZTMzMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMzEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzMxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMzEiIGJpbmRpbmc9InRuczpCaW5kaW5nMzMxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMzMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMzMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzMyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzMyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMzMiIgbmFtZT0iSW5wdXQzMzIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzMyIiBuYW1lPSJPdXRwdXQzMzIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMzMiIgdHlwZT0idG5zOlBvcnRUeXBlMzMyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzMyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMzMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMzIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMzMiIgYmluZGluZz0idG5zOkJpbmRpbmczMzIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzMzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMzMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMzMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzMzIiBuYW1lPSJJbnB1dDMzMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMzMiIG5hbWU9Ik91dHB1dDMzMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzMzIiB0eXBlPSJ0bnM6UG9ydFR5cGUzMzMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzMzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMzMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzMzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzMzMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMzQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzM0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMzNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMzQiIG5hbWU9IklucHV0MzM0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMzNCIgbmFtZT0iT3V0cHV0MzM0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMzQiIHR5cGU9InRuczpQb3J0VHlwZTMzNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMzQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzM0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMzQiIGJpbmRpbmc9InRuczpCaW5kaW5nMzM0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMzNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMzNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzM1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzM1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMzNSIgbmFtZT0iSW5wdXQzMzUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzM1IiBuYW1lPSJPdXRwdXQzMzUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMzNSIgdHlwZT0idG5zOlBvcnRUeXBlMzM1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzM1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMzNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMzUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMzNSIgYmluZGluZz0idG5zOkJpbmRpbmczMzUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzM2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMzNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMzYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzM2IiBuYW1lPSJJbnB1dDMzNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMzYiIG5hbWU9Ik91dHB1dDMzNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzM2IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMzYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzM2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMzNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzM2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMzNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzMzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzMzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzMzciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzM3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTMzNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzMzciIG5hbWU9IklucHV0MzM3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTMzNyIgbmFtZT0iT3V0cHV0MzM3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczMzciIHR5cGU9InRuczpQb3J0VHlwZTMzNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjMzNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zMzciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzM3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzMzciIGJpbmRpbmc9InRuczpCaW5kaW5nMzM3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTMzOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDMzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTMzOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzMzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzM4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzM4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTMzOCIgbmFtZT0iSW5wdXQzMzgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzM4IiBuYW1lPSJPdXRwdXQzMzgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzMzOCIgdHlwZT0idG5zOlBvcnRUeXBlMzM4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzM4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjMzOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzMzgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDMzOCIgYmluZGluZz0idG5zOkJpbmRpbmczMzgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzM5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDMzOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzMzkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzM5IiBuYW1lPSJJbnB1dDMzOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzMzkiIG5hbWU9Ik91dHB1dDMzOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzM5IiB0eXBlPSJ0bnM6UG9ydFR5cGUzMzkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zMzkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzM5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTMzOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzM5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzMzOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzQwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM0MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNDAiIG5hbWU9IklucHV0MzQwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM0MCIgbmFtZT0iT3V0cHV0MzQwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNDAiIHR5cGU9InRuczpQb3J0VHlwZTM0MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzQwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNDAiIGJpbmRpbmc9InRuczpCaW5kaW5nMzQwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM0MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzQxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM0MSIgbmFtZT0iSW5wdXQzNDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzQxIiBuYW1lPSJPdXRwdXQzNDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM0MSIgdHlwZT0idG5zOlBvcnRUeXBlMzQxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM0MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM0MSIgYmluZGluZz0idG5zOkJpbmRpbmczNDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzQyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM0MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzQyIiBuYW1lPSJJbnB1dDM0MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNDIiIG5hbWU9Ik91dHB1dDM0MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzQyIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzQyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM0MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzQyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM0MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzQzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM0MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNDMiIG5hbWU9IklucHV0MzQzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM0MyIgbmFtZT0iT3V0cHV0MzQzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNDMiIHR5cGU9InRuczpQb3J0VHlwZTM0MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzQzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNDMiIGJpbmRpbmc9InRuczpCaW5kaW5nMzQzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM0NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzQ0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQ0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM0NCIgbmFtZT0iSW5wdXQzNDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzQ0IiBuYW1lPSJPdXRwdXQzNDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM0NCIgdHlwZT0idG5zOlBvcnRUeXBlMzQ0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQ0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM0NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM0NCIgYmluZGluZz0idG5zOkJpbmRpbmczNDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzQ1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM0NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzQ1IiBuYW1lPSJJbnB1dDM0NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNDUiIG5hbWU9Ik91dHB1dDM0NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzQ1IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzQ1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM0NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzQ1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM0NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzQ2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM0NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNDYiIG5hbWU9IklucHV0MzQ2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM0NiIgbmFtZT0iT3V0cHV0MzQ2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNDYiIHR5cGU9InRuczpQb3J0VHlwZTM0NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzQ2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNDYiIGJpbmRpbmc9InRuczpCaW5kaW5nMzQ2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM0NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzQ3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQ3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM0NyIgbmFtZT0iSW5wdXQzNDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzQ3IiBuYW1lPSJPdXRwdXQzNDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM0NyIgdHlwZT0idG5zOlBvcnRUeXBlMzQ3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzQ3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM0NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM0NyIgYmluZGluZz0idG5zOkJpbmRpbmczNDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzQ4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM0OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzQ4IiBuYW1lPSJJbnB1dDM0OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNDgiIG5hbWU9Ik91dHB1dDM0OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzQ4IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzQ4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM0OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzQ4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM0OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzQ5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM0OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNDkiIG5hbWU9IklucHV0MzQ5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM0OSIgbmFtZT0iT3V0cHV0MzQ5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNDkiIHR5cGU9InRuczpQb3J0VHlwZTM0OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM0OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzQ5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNDkiIGJpbmRpbmc9InRuczpCaW5kaW5nMzQ5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM1MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzUwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzUwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM1MCIgbmFtZT0iSW5wdXQzNTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzUwIiBuYW1lPSJPdXRwdXQzNTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM1MCIgdHlwZT0idG5zOlBvcnRUeXBlMzUwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzUwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM1MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM1MCIgYmluZGluZz0idG5zOkJpbmRpbmczNTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzUxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM1MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzUxIiBuYW1lPSJJbnB1dDM1MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNTEiIG5hbWU9Ik91dHB1dDM1MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzUxIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzUxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM1MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzUxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM1MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzUyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM1MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNTIiIG5hbWU9IklucHV0MzUyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM1MiIgbmFtZT0iT3V0cHV0MzUyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNTIiIHR5cGU9InRuczpQb3J0VHlwZTM1MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzUyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNTIiIGJpbmRpbmc9InRuczpCaW5kaW5nMzUyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM1MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzUzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzUzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM1MyIgbmFtZT0iSW5wdXQzNTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzUzIiBuYW1lPSJPdXRwdXQzNTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM1MyIgdHlwZT0idG5zOlBvcnRUeXBlMzUzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzUzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM1MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM1MyIgYmluZGluZz0idG5zOkJpbmRpbmczNTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzU0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM1NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzU0IiBuYW1lPSJJbnB1dDM1NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNTQiIG5hbWU9Ik91dHB1dDM1NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzU0IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzU0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM1NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzU0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM1NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzU1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM1NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNTUiIG5hbWU9IklucHV0MzU1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM1NSIgbmFtZT0iT3V0cHV0MzU1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNTUiIHR5cGU9InRuczpQb3J0VHlwZTM1NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzU1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNTUiIGJpbmRpbmc9InRuczpCaW5kaW5nMzU1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM1NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzU2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzU2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM1NiIgbmFtZT0iSW5wdXQzNTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzU2IiBuYW1lPSJPdXRwdXQzNTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM1NiIgdHlwZT0idG5zOlBvcnRUeXBlMzU2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzU2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM1NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM1NiIgYmluZGluZz0idG5zOkJpbmRpbmczNTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzU3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM1NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzU3IiBuYW1lPSJJbnB1dDM1NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNTciIG5hbWU9Ik91dHB1dDM1NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzU3IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzU3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM1NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzU3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM1NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzU4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM1OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNTgiIG5hbWU9IklucHV0MzU4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM1OCIgbmFtZT0iT3V0cHV0MzU4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNTgiIHR5cGU9InRuczpQb3J0VHlwZTM1OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM1OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzU4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNTgiIGJpbmRpbmc9InRuczpCaW5kaW5nMzU4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM1OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzU5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzU5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM1OSIgbmFtZT0iSW5wdXQzNTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzU5IiBuYW1lPSJPdXRwdXQzNTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM1OSIgdHlwZT0idG5zOlBvcnRUeXBlMzU5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzU5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM1OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM1OSIgYmluZGluZz0idG5zOkJpbmRpbmczNTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzYwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM2MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzYwIiBuYW1lPSJJbnB1dDM2MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNjAiIG5hbWU9Ik91dHB1dDM2MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzYwIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzYwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM2MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzYwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM2MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzYxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM2MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNjEiIG5hbWU9IklucHV0MzYxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM2MSIgbmFtZT0iT3V0cHV0MzYxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNjEiIHR5cGU9InRuczpQb3J0VHlwZTM2MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzYxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNjEiIGJpbmRpbmc9InRuczpCaW5kaW5nMzYxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM2MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzYyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzYyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM2MiIgbmFtZT0iSW5wdXQzNjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzYyIiBuYW1lPSJPdXRwdXQzNjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM2MiIgdHlwZT0idG5zOlBvcnRUeXBlMzYyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzYyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM2MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM2MiIgYmluZGluZz0idG5zOkJpbmRpbmczNjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzYzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM2MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzYzIiBuYW1lPSJJbnB1dDM2MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNjMiIG5hbWU9Ik91dHB1dDM2MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzYzIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzYzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM2MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzYzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM2MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzY0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM2NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNjQiIG5hbWU9IklucHV0MzY0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM2NCIgbmFtZT0iT3V0cHV0MzY0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNjQiIHR5cGU9InRuczpQb3J0VHlwZTM2NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzY0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNjQiIGJpbmRpbmc9InRuczpCaW5kaW5nMzY0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM2NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzY1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzY1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM2NSIgbmFtZT0iSW5wdXQzNjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzY1IiBuYW1lPSJPdXRwdXQzNjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM2NSIgdHlwZT0idG5zOlBvcnRUeXBlMzY1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzY1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM2NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM2NSIgYmluZGluZz0idG5zOkJpbmRpbmczNjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzY2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM2NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzY2IiBuYW1lPSJJbnB1dDM2NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNjYiIG5hbWU9Ik91dHB1dDM2NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzY2IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzY2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM2NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzY2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM2NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzY3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM2NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNjciIG5hbWU9IklucHV0MzY3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM2NyIgbmFtZT0iT3V0cHV0MzY3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNjciIHR5cGU9InRuczpQb3J0VHlwZTM2NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM2NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzY3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNjciIGJpbmRpbmc9InRuczpCaW5kaW5nMzY3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM2OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzY4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzY4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM2OCIgbmFtZT0iSW5wdXQzNjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzY4IiBuYW1lPSJPdXRwdXQzNjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM2OCIgdHlwZT0idG5zOlBvcnRUeXBlMzY4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzY4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM2OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM2OCIgYmluZGluZz0idG5zOkJpbmRpbmczNjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzY5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM2OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzY5IiBuYW1lPSJJbnB1dDM2OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNjkiIG5hbWU9Ik91dHB1dDM2OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzY5IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzY5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM2OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzY5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM2OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzcwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM3MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNzAiIG5hbWU9IklucHV0MzcwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM3MCIgbmFtZT0iT3V0cHV0MzcwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNzAiIHR5cGU9InRuczpQb3J0VHlwZTM3MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzcwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNzAiIGJpbmRpbmc9InRuczpCaW5kaW5nMzcwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM3MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzcxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzcxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM3MSIgbmFtZT0iSW5wdXQzNzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzcxIiBuYW1lPSJPdXRwdXQzNzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM3MSIgdHlwZT0idG5zOlBvcnRUeXBlMzcxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzcxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM3MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM3MSIgYmluZGluZz0idG5zOkJpbmRpbmczNzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzcyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM3MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzcyIiBuYW1lPSJJbnB1dDM3MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNzIiIG5hbWU9Ik91dHB1dDM3MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzcyIiB0eXBlPSJ0bnM6UG9ydFR5cGUzNzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzcyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM3MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzcyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM3MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzczIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM3MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNzMiIG5hbWU9IklucHV0MzczIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM3MyIgbmFtZT0iT3V0cHV0MzczIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNzMiIHR5cGU9InRuczpQb3J0VHlwZTM3MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzczIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNzMiIGJpbmRpbmc9InRuczpCaW5kaW5nMzczIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM3NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzc0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzc0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM3NCIgbmFtZT0iSW5wdXQzNzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzc0IiBuYW1lPSJPdXRwdXQzNzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM3NCIgdHlwZT0idG5zOlBvcnRUeXBlMzc0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzc0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM3NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM3NCIgYmluZGluZz0idG5zOkJpbmRpbmczNzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzc1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM3NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzc1IiBuYW1lPSJJbnB1dDM3NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNzUiIG5hbWU9Ik91dHB1dDM3NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzc1IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzc1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM3NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzc1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM3NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzc2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM3NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNzYiIG5hbWU9IklucHV0Mzc2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM3NiIgbmFtZT0iT3V0cHV0Mzc2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNzYiIHR5cGU9InRuczpQb3J0VHlwZTM3NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzc2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNzYiIGJpbmRpbmc9InRuczpCaW5kaW5nMzc2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM3NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzNzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzc3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzc3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM3NyIgbmFtZT0iSW5wdXQzNzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzc3IiBuYW1lPSJPdXRwdXQzNzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM3NyIgdHlwZT0idG5zOlBvcnRUeXBlMzc3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzc3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM3NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzNzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM3NyIgYmluZGluZz0idG5zOkJpbmRpbmczNzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzc4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM3OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzNzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzc4IiBuYW1lPSJJbnB1dDM3OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzNzgiIG5hbWU9Ik91dHB1dDM3OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzc4IiB0eXBlPSJ0bnM6UG9ydFR5cGUzNzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zNzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzc4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM3OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzc4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM3OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzNzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzNzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzNzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzc5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM3OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzNzkiIG5hbWU9IklucHV0Mzc5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM3OSIgbmFtZT0iT3V0cHV0Mzc5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczNzkiIHR5cGU9InRuczpQb3J0VHlwZTM3OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM3OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zNzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzc5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzNzkiIGJpbmRpbmc9InRuczpCaW5kaW5nMzc5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM4MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzODAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzgwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzgwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM4MCIgbmFtZT0iSW5wdXQzODAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzgwIiBuYW1lPSJPdXRwdXQzODAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM4MCIgdHlwZT0idG5zOlBvcnRUeXBlMzgwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzgwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM4MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzODAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM4MCIgYmluZGluZz0idG5zOkJpbmRpbmczODAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzgxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM4MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzODEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzgxIiBuYW1lPSJJbnB1dDM4MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzODEiIG5hbWU9Ik91dHB1dDM4MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzgxIiB0eXBlPSJ0bnM6UG9ydFR5cGUzODEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzgxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM4MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzgxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM4MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzODIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzgyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM4MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzODIiIG5hbWU9IklucHV0MzgyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM4MiIgbmFtZT0iT3V0cHV0MzgyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczODIiIHR5cGU9InRuczpQb3J0VHlwZTM4MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zODIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzgyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzODIiIGJpbmRpbmc9InRuczpCaW5kaW5nMzgyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM4MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzODMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzgzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzgzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM4MyIgbmFtZT0iSW5wdXQzODMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzgzIiBuYW1lPSJPdXRwdXQzODMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM4MyIgdHlwZT0idG5zOlBvcnRUeXBlMzgzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzgzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM4MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzODMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM4MyIgYmluZGluZz0idG5zOkJpbmRpbmczODMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzg0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM4NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzODQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzg0IiBuYW1lPSJJbnB1dDM4NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzODQiIG5hbWU9Ik91dHB1dDM4NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzg0IiB0eXBlPSJ0bnM6UG9ydFR5cGUzODQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzg0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM4NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzg0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM4NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzODUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzg1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM4NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzODUiIG5hbWU9IklucHV0Mzg1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM4NSIgbmFtZT0iT3V0cHV0Mzg1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczODUiIHR5cGU9InRuczpQb3J0VHlwZTM4NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zODUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzg1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzODUiIGJpbmRpbmc9InRuczpCaW5kaW5nMzg1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM4NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzODYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzg2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzg2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM4NiIgbmFtZT0iSW5wdXQzODYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzg2IiBuYW1lPSJPdXRwdXQzODYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM4NiIgdHlwZT0idG5zOlBvcnRUeXBlMzg2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzg2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM4NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzODYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM4NiIgYmluZGluZz0idG5zOkJpbmRpbmczODYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzg3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM4NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzODciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzg3IiBuYW1lPSJJbnB1dDM4NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzODciIG5hbWU9Ik91dHB1dDM4NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzg3IiB0eXBlPSJ0bnM6UG9ydFR5cGUzODciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zODciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzg3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM4NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzg3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM4NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzODgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzg4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM4OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzODgiIG5hbWU9IklucHV0Mzg4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM4OCIgbmFtZT0iT3V0cHV0Mzg4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczODgiIHR5cGU9InRuczpQb3J0VHlwZTM4OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM4OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zODgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzg4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzODgiIGJpbmRpbmc9InRuczpCaW5kaW5nMzg4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM4OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzODkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzg5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzg5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM4OSIgbmFtZT0iSW5wdXQzODkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzg5IiBuYW1lPSJPdXRwdXQzODkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM4OSIgdHlwZT0idG5zOlBvcnRUeXBlMzg5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzg5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM4OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzODkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM4OSIgYmluZGluZz0idG5zOkJpbmRpbmczODkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzkwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM5MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzOTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzkwIiBuYW1lPSJJbnB1dDM5MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOTAiIG5hbWU9Ik91dHB1dDM5MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzkwIiB0eXBlPSJ0bnM6UG9ydFR5cGUzOTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzkwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM5MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzkwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM5MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzOTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzOTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50MzkxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM5MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOTEiIG5hbWU9IklucHV0MzkxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM5MSIgbmFtZT0iT3V0cHV0MzkxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczOTEiIHR5cGU9InRuczpQb3J0VHlwZTM5MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zOTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzkxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOTEiIGJpbmRpbmc9InRuczpCaW5kaW5nMzkxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM5MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzOTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzkyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzkyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM5MiIgbmFtZT0iSW5wdXQzOTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzkyIiBuYW1lPSJPdXRwdXQzOTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM5MiIgdHlwZT0idG5zOlBvcnRUeXBlMzkyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzkyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM5MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzOTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM5MiIgYmluZGluZz0idG5zOkJpbmRpbmczOTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50MzkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzkzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM5MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzOTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzkzIiBuYW1lPSJJbnB1dDM5MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOTMiIG5hbWU9Ik91dHB1dDM5MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzkzIiB0eXBlPSJ0bnM6UG9ydFR5cGUzOTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzkzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM5MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0MzkzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzM5MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzOTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzOTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzk0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM5NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOTQiIG5hbWU9IklucHV0Mzk0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM5NCIgbmFtZT0iT3V0cHV0Mzk0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczOTQiIHR5cGU9InRuczpQb3J0VHlwZTM5NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zOTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzk0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOTQiIGJpbmRpbmc9InRuczpCaW5kaW5nMzk0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM5NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzOTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzk1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzk1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM5NSIgbmFtZT0iSW5wdXQzOTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzk1IiBuYW1lPSJPdXRwdXQzOTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM5NSIgdHlwZT0idG5zOlBvcnRUeXBlMzk1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzk1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM5NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzOTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM5NSIgYmluZGluZz0idG5zOkJpbmRpbmczOTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzk2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM5NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzOTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzk2IiBuYW1lPSJJbnB1dDM5NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOTYiIG5hbWU9Ik91dHB1dDM5NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzk2IiB0eXBlPSJ0bnM6UG9ydFR5cGUzOTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzk2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM5NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzk2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM5NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2UzOTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQzOTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2UzOTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50Mzk3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTM5NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2UzOTciIG5hbWU9IklucHV0Mzk3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTM5NyIgbmFtZT0iT3V0cHV0Mzk3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmczOTciIHR5cGU9InRuczpQb3J0VHlwZTM5NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjM5NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb24zOTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlMzk3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQzOTciIGJpbmRpbmc9InRuczpCaW5kaW5nMzk3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTM5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDM5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTM5OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQzOTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlMzk4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzk4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTM5OCIgbmFtZT0iSW5wdXQzOTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlMzk4IiBuYW1lPSJPdXRwdXQzOTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzM5OCIgdHlwZT0idG5zOlBvcnRUeXBlMzk4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uMzk4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjM5OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2UzOTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDM5OCIgYmluZGluZz0idG5zOkJpbmRpbmczOTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlMzk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50Mzk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlMzk5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDM5OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGUzOTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlMzk5IiBuYW1lPSJJbnB1dDM5OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2UzOTkiIG5hbWU9Ik91dHB1dDM5OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nMzk5IiB0eXBlPSJ0bnM6UG9ydFR5cGUzOTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24zOTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uMzk5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTM5OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0Mzk5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzM5OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MDAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDAwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQwMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MDAiIG5hbWU9IklucHV0NDAwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQwMCIgbmFtZT0iT3V0cHV0NDAwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MDAiIHR5cGU9InRuczpQb3J0VHlwZTQwMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MDAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDAwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MDAiIGJpbmRpbmc9InRuczpCaW5kaW5nNDAwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQwMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQwMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MDEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDAxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDAxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQwMSIgbmFtZT0iSW5wdXQ0MDEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDAxIiBuYW1lPSJPdXRwdXQ0MDEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQwMSIgdHlwZT0idG5zOlBvcnRUeXBlNDAxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDAxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQwMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MDEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQwMSIgYmluZGluZz0idG5zOkJpbmRpbmc0MDEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDAyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDAyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQwMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MDIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDAyIiBuYW1lPSJJbnB1dDQwMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MDIiIG5hbWU9Ik91dHB1dDQwMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDAyIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MDIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDAyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQwMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDAyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQwMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MDMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDAzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQwMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MDMiIG5hbWU9IklucHV0NDAzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQwMyIgbmFtZT0iT3V0cHV0NDAzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MDMiIHR5cGU9InRuczpQb3J0VHlwZTQwMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MDMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDAzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MDMiIGJpbmRpbmc9InRuczpCaW5kaW5nNDAzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQwNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQwNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MDQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDA0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDA0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQwNCIgbmFtZT0iSW5wdXQ0MDQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDA0IiBuYW1lPSJPdXRwdXQ0MDQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQwNCIgdHlwZT0idG5zOlBvcnRUeXBlNDA0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDA0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQwNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MDQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQwNCIgYmluZGluZz0idG5zOkJpbmRpbmc0MDQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDA1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDA1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQwNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MDUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDA1IiBuYW1lPSJJbnB1dDQwNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MDUiIG5hbWU9Ik91dHB1dDQwNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDA1IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MDUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDA1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQwNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDA1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQwNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MDYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDA2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQwNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MDYiIG5hbWU9IklucHV0NDA2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQwNiIgbmFtZT0iT3V0cHV0NDA2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MDYiIHR5cGU9InRuczpQb3J0VHlwZTQwNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MDYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDA2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MDYiIGJpbmRpbmc9InRuczpCaW5kaW5nNDA2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQwNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQwNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MDciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDA3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDA3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQwNyIgbmFtZT0iSW5wdXQ0MDciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDA3IiBuYW1lPSJPdXRwdXQ0MDciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQwNyIgdHlwZT0idG5zOlBvcnRUeXBlNDA3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDA3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQwNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MDciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQwNyIgYmluZGluZz0idG5zOkJpbmRpbmc0MDciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDA4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDA4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQwOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MDgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDA4IiBuYW1lPSJJbnB1dDQwOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MDgiIG5hbWU9Ik91dHB1dDQwOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDA4IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MDgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MDgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDA4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQwOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDA4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQwOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MDkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDA5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQwOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MDkiIG5hbWU9IklucHV0NDA5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQwOSIgbmFtZT0iT3V0cHV0NDA5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MDkiIHR5cGU9InRuczpQb3J0VHlwZTQwOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQwOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MDkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDA5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MDkiIGJpbmRpbmc9InRuczpCaW5kaW5nNDA5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQxMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQxMCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDEwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDEwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQxMCIgbmFtZT0iSW5wdXQ0MTAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDEwIiBuYW1lPSJPdXRwdXQ0MTAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQxMCIgdHlwZT0idG5zOlBvcnRUeXBlNDEwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDEwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQxMCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MTAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQxMCIgYmluZGluZz0idG5zOkJpbmRpbmc0MTAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDExIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDExIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQxMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MTEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDExIiBuYW1lPSJJbnB1dDQxMSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MTEiIG5hbWU9Ik91dHB1dDQxMSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDExIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MTEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDExIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQxMSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDExIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQxMSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MTIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDEyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQxMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxMiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MTIiIG5hbWU9IklucHV0NDEyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQxMiIgbmFtZT0iT3V0cHV0NDEyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MTIiIHR5cGU9InRuczpQb3J0VHlwZTQxMiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxMiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MTIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDEyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MTIiIGJpbmRpbmc9InRuczpCaW5kaW5nNDEyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQxMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQxMyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDEzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDEzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQxMyIgbmFtZT0iSW5wdXQ0MTMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDEzIiBuYW1lPSJPdXRwdXQ0MTMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQxMyIgdHlwZT0idG5zOlBvcnRUeXBlNDEzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDEzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQxMyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MTMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQxMyIgYmluZGluZz0idG5zOkJpbmRpbmc0MTMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDE0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDE0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQxNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MTQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDE0IiBuYW1lPSJJbnB1dDQxNCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MTQiIG5hbWU9Ik91dHB1dDQxNCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDE0IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MTQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDE0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQxNCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDE0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQxNCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MTUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDE1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQxNSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxNSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MTUiIG5hbWU9IklucHV0NDE1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQxNSIgbmFtZT0iT3V0cHV0NDE1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MTUiIHR5cGU9InRuczpQb3J0VHlwZTQxNSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxNSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MTUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDE1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MTUiIGJpbmRpbmc9InRuczpCaW5kaW5nNDE1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQxNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQxNiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDE2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDE2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQxNiIgbmFtZT0iSW5wdXQ0MTYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDE2IiBuYW1lPSJPdXRwdXQ0MTYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQxNiIgdHlwZT0idG5zOlBvcnRUeXBlNDE2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDE2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQxNiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MTYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQxNiIgYmluZGluZz0idG5zOkJpbmRpbmc0MTYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDE3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDE3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQxNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MTciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDE3IiBuYW1lPSJJbnB1dDQxNyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MTciIG5hbWU9Ik91dHB1dDQxNyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDE3IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MTciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MTciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDE3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQxNyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDE3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQxNyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MTgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDE4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQxOCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxOCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MTgiIG5hbWU9IklucHV0NDE4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQxOCIgbmFtZT0iT3V0cHV0NDE4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MTgiIHR5cGU9InRuczpQb3J0VHlwZTQxOCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQxOCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MTgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDE4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MTgiIGJpbmRpbmc9InRuczpCaW5kaW5nNDE4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQxOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQxOSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDE5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDE5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQxOSIgbmFtZT0iSW5wdXQ0MTkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDE5IiBuYW1lPSJPdXRwdXQ0MTkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQxOSIgdHlwZT0idG5zOlBvcnRUeXBlNDE5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDE5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQxOSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MTkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQxOSIgYmluZGluZz0idG5zOkJpbmRpbmc0MTkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDIwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDIwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQyMCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MjAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDIwIiBuYW1lPSJJbnB1dDQyMCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MjAiIG5hbWU9Ik91dHB1dDQyMCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDIwIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MjAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDIwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQyMCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDIwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQyMCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MjEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDIxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQyMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyMSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MjEiIG5hbWU9IklucHV0NDIxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQyMSIgbmFtZT0iT3V0cHV0NDIxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MjEiIHR5cGU9InRuczpQb3J0VHlwZTQyMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyMSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MjEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDIxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MjEiIGJpbmRpbmc9InRuczpCaW5kaW5nNDIxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQyMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQyMiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MjIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDIyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDIyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQyMiIgbmFtZT0iSW5wdXQ0MjIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDIyIiBuYW1lPSJPdXRwdXQ0MjIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQyMiIgdHlwZT0idG5zOlBvcnRUeXBlNDIyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDIyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQyMiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MjIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQyMiIgYmluZGluZz0idG5zOkJpbmRpbmc0MjIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDIzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDIzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQyMyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MjMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDIzIiBuYW1lPSJJbnB1dDQyMyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MjMiIG5hbWU9Ik91dHB1dDQyMyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDIzIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MjMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDIzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQyMyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDIzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQyMyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MjQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDI0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQyNCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyNCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MjQiIG5hbWU9IklucHV0NDI0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQyNCIgbmFtZT0iT3V0cHV0NDI0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MjQiIHR5cGU9InRuczpQb3J0VHlwZTQyNCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyNCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MjQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDI0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MjQiIGJpbmRpbmc9InRuczpCaW5kaW5nNDI0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQyNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQyNSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MjUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDI1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDI1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQyNSIgbmFtZT0iSW5wdXQ0MjUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDI1IiBuYW1lPSJPdXRwdXQ0MjUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQyNSIgdHlwZT0idG5zOlBvcnRUeXBlNDI1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDI1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQyNSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MjUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQyNSIgYmluZGluZz0idG5zOkJpbmRpbmc0MjUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDI2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDI2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQyNiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MjYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDI2IiBuYW1lPSJJbnB1dDQyNiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MjYiIG5hbWU9Ik91dHB1dDQyNiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDI2IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MjYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDI2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQyNiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDI2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQyNiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MjciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDI3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQyNyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyNyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MjciIG5hbWU9IklucHV0NDI3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQyNyIgbmFtZT0iT3V0cHV0NDI3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MjciIHR5cGU9InRuczpQb3J0VHlwZTQyNyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQyNyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MjciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDI3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MjciIGJpbmRpbmc9InRuczpCaW5kaW5nNDI3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQyOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQyOCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MjgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDI4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDI4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQyOCIgbmFtZT0iSW5wdXQ0MjgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDI4IiBuYW1lPSJPdXRwdXQ0MjgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQyOCIgdHlwZT0idG5zOlBvcnRUeXBlNDI4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDI4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQyOCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MjgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQyOCIgYmluZGluZz0idG5zOkJpbmRpbmc0MjgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDI5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDI5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQyOSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MjkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDI5IiBuYW1lPSJJbnB1dDQyOSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MjkiIG5hbWU9Ik91dHB1dDQyOSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDI5IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MjkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MjkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDI5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQyOSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDI5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQyOSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MzAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDMwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQzMCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzMCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MzAiIG5hbWU9IklucHV0NDMwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQzMCIgbmFtZT0iT3V0cHV0NDMwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MzAiIHR5cGU9InRuczpQb3J0VHlwZTQzMCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzMCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MzAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDMwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MzAiIGJpbmRpbmc9InRuczpCaW5kaW5nNDMwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQzMSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQzMSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MzEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDMxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDMxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQzMSIgbmFtZT0iSW5wdXQ0MzEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDMxIiBuYW1lPSJPdXRwdXQ0MzEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQzMSIgdHlwZT0idG5zOlBvcnRUeXBlNDMxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDMxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQzMSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MzEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQzMSIgYmluZGluZz0idG5zOkJpbmRpbmc0MzEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDMyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDMyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQzMiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MzIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDMyIiBuYW1lPSJJbnB1dDQzMiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MzIiIG5hbWU9Ik91dHB1dDQzMiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDMyIiB0eXBlPSJ0bnM6UG9ydFR5cGU0MzIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDMyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQzMiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDMyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQzMiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MzMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDMzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQzMyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzMyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MzMiIG5hbWU9IklucHV0NDMzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQzMyIgbmFtZT0iT3V0cHV0NDMzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MzMiIHR5cGU9InRuczpQb3J0VHlwZTQzMyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzMyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MzMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDMzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MzMiIGJpbmRpbmc9InRuczpCaW5kaW5nNDMzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQzNCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQzNCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MzQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDM0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDM0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQzNCIgbmFtZT0iSW5wdXQ0MzQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDM0IiBuYW1lPSJPdXRwdXQ0MzQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQzNCIgdHlwZT0idG5zOlBvcnRUeXBlNDM0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDM0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQzNCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MzQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQzNCIgYmluZGluZz0idG5zOkJpbmRpbmc0MzQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDM1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDM1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQzNSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MzUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDM1IiBuYW1lPSJJbnB1dDQzNSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MzUiIG5hbWU9Ik91dHB1dDQzNSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDM1IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MzUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDM1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQzNSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDM1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQzNSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MzYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDM2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQzNiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzNiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MzYiIG5hbWU9IklucHV0NDM2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQzNiIgbmFtZT0iT3V0cHV0NDM2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MzYiIHR5cGU9InRuczpQb3J0VHlwZTQzNiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzNiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MzYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDM2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MzYiIGJpbmRpbmc9InRuczpCaW5kaW5nNDM2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQzNyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQzNyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0MzciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDM3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDM3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQzNyIgbmFtZT0iSW5wdXQ0MzciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDM3IiBuYW1lPSJPdXRwdXQ0MzciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQzNyIgdHlwZT0idG5zOlBvcnRUeXBlNDM3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDM3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQzNyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0MzciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQzNyIgYmluZGluZz0idG5zOkJpbmRpbmc0MzciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDM4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDM4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQzOCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0MzgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDM4IiBuYW1lPSJJbnB1dDQzOCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0MzgiIG5hbWU9Ik91dHB1dDQzOCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDM4IiB0eXBlPSJ0bnM6UG9ydFR5cGU0MzgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240MzgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDM4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQzOCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDM4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQzOCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0MzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0MzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0MzkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDM5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQzOSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzOSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0MzkiIG5hbWU9IklucHV0NDM5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQzOSIgbmFtZT0iT3V0cHV0NDM5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0MzkiIHR5cGU9InRuczpQb3J0VHlwZTQzOSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQzOSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240MzkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDM5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0MzkiIGJpbmRpbmc9InRuczpCaW5kaW5nNDM5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ0MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ0MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NDAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDQwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ0MCIgbmFtZT0iSW5wdXQ0NDAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDQwIiBuYW1lPSJPdXRwdXQ0NDAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ0MCIgdHlwZT0idG5zOlBvcnRUeXBlNDQwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ0MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NDAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ0MCIgYmluZGluZz0idG5zOkJpbmRpbmc0NDAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDQxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDQxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ0MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDQxIiBuYW1lPSJJbnB1dDQ0MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NDEiIG5hbWU9Ik91dHB1dDQ0MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDQxIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NDEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDQxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ0MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDQxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ0MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NDIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NDIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDQyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ0MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NDIiIG5hbWU9IklucHV0NDQyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ0MiIgbmFtZT0iT3V0cHV0NDQyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NDIiIHR5cGU9InRuczpQb3J0VHlwZTQ0MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NDIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDQyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NDIiIGJpbmRpbmc9InRuczpCaW5kaW5nNDQyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ0MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ0MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NDMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDQzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQzIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ0MyIgbmFtZT0iSW5wdXQ0NDMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDQzIiBuYW1lPSJPdXRwdXQ0NDMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ0MyIgdHlwZT0idG5zOlBvcnRUeXBlNDQzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQzIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ0MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NDMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ0MyIgYmluZGluZz0idG5zOkJpbmRpbmc0NDMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDQ0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDQ0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ0NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NDQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDQ0IiBuYW1lPSJJbnB1dDQ0NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NDQiIG5hbWU9Ik91dHB1dDQ0NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDQ0IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NDQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDQ0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ0NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDQ0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ0NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NDUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NDUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDQ1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ0NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NDUiIG5hbWU9IklucHV0NDQ1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ0NSIgbmFtZT0iT3V0cHV0NDQ1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NDUiIHR5cGU9InRuczpQb3J0VHlwZTQ0NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NDUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDQ1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NDUiIGJpbmRpbmc9InRuczpCaW5kaW5nNDQ1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ0NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ0NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NDYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDQ2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQ2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ0NiIgbmFtZT0iSW5wdXQ0NDYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDQ2IiBuYW1lPSJPdXRwdXQ0NDYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ0NiIgdHlwZT0idG5zOlBvcnRUeXBlNDQ2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQ2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ0NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NDYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ0NiIgYmluZGluZz0idG5zOkJpbmRpbmc0NDYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDQ3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDQ3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ0NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NDciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDQ3IiBuYW1lPSJJbnB1dDQ0NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NDciIG5hbWU9Ik91dHB1dDQ0NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDQ3IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NDciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NDciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDQ3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ0NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDQ3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ0NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NDgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NDgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDQ4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ0OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NDgiIG5hbWU9IklucHV0NDQ4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ0OCIgbmFtZT0iT3V0cHV0NDQ4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NDgiIHR5cGU9InRuczpQb3J0VHlwZTQ0OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ0OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NDgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDQ4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NDgiIGJpbmRpbmc9InRuczpCaW5kaW5nNDQ4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ0OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ0OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NDkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDQ5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQ5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ0OSIgbmFtZT0iSW5wdXQ0NDkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDQ5IiBuYW1lPSJPdXRwdXQ0NDkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ0OSIgdHlwZT0idG5zOlBvcnRUeXBlNDQ5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDQ5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ0OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NDkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ0OSIgYmluZGluZz0idG5zOkJpbmRpbmc0NDkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDUwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDUwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ1MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NTAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDUwIiBuYW1lPSJJbnB1dDQ1MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NTAiIG5hbWU9Ik91dHB1dDQ1MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDUwIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NTAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDUwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ1MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDUwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ1MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NTEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDUxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ1MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NTEiIG5hbWU9IklucHV0NDUxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ1MSIgbmFtZT0iT3V0cHV0NDUxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NTEiIHR5cGU9InRuczpQb3J0VHlwZTQ1MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NTEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDUxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NTEiIGJpbmRpbmc9InRuczpCaW5kaW5nNDUxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ1MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ1MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NTIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDUyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDUyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ1MiIgbmFtZT0iSW5wdXQ0NTIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDUyIiBuYW1lPSJPdXRwdXQ0NTIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ1MiIgdHlwZT0idG5zOlBvcnRUeXBlNDUyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDUyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ1MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NTIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ1MiIgYmluZGluZz0idG5zOkJpbmRpbmc0NTIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDUzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDUzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ1MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NTMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDUzIiBuYW1lPSJJbnB1dDQ1MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NTMiIG5hbWU9Ik91dHB1dDQ1MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDUzIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NTMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDUzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ1MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDUzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ1MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NTQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDU0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ1NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NTQiIG5hbWU9IklucHV0NDU0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ1NCIgbmFtZT0iT3V0cHV0NDU0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NTQiIHR5cGU9InRuczpQb3J0VHlwZTQ1NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NTQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDU0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NTQiIGJpbmRpbmc9InRuczpCaW5kaW5nNDU0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ1NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ1NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NTUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDU1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDU1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ1NSIgbmFtZT0iSW5wdXQ0NTUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDU1IiBuYW1lPSJPdXRwdXQ0NTUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ1NSIgdHlwZT0idG5zOlBvcnRUeXBlNDU1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDU1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ1NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NTUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ1NSIgYmluZGluZz0idG5zOkJpbmRpbmc0NTUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDU2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDU2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ1NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NTYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDU2IiBuYW1lPSJJbnB1dDQ1NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NTYiIG5hbWU9Ik91dHB1dDQ1NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDU2IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NTYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDU2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ1NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDU2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ1NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NTciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDU3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ1NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NTciIG5hbWU9IklucHV0NDU3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ1NyIgbmFtZT0iT3V0cHV0NDU3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NTciIHR5cGU9InRuczpQb3J0VHlwZTQ1NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ1NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NTciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDU3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NTciIGJpbmRpbmc9InRuczpCaW5kaW5nNDU3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ1OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ1OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NTgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDU4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDU4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ1OCIgbmFtZT0iSW5wdXQ0NTgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDU4IiBuYW1lPSJPdXRwdXQ0NTgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ1OCIgdHlwZT0idG5zOlBvcnRUeXBlNDU4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDU4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ1OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NTgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ1OCIgYmluZGluZz0idG5zOkJpbmRpbmc0NTgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDU5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDU5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ1OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NTkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDU5IiBuYW1lPSJJbnB1dDQ1OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NTkiIG5hbWU9Ik91dHB1dDQ1OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDU5IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NTkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NTkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDU5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ1OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDU5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ1OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NjAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NjAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDYwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ2MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NjAiIG5hbWU9IklucHV0NDYwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ2MCIgbmFtZT0iT3V0cHV0NDYwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NjAiIHR5cGU9InRuczpQb3J0VHlwZTQ2MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NjAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDYwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NjAiIGJpbmRpbmc9InRuczpCaW5kaW5nNDYwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ2MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ2MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NjEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDYxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDYxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ2MSIgbmFtZT0iSW5wdXQ0NjEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDYxIiBuYW1lPSJPdXRwdXQ0NjEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ2MSIgdHlwZT0idG5zOlBvcnRUeXBlNDYxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDYxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ2MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NjEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ2MSIgYmluZGluZz0idG5zOkJpbmRpbmc0NjEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDYyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDYyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ2MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NjIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDYyIiBuYW1lPSJJbnB1dDQ2MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NjIiIG5hbWU9Ik91dHB1dDQ2MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDYyIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NjIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDYyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ2MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDYyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ2MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NjMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NjMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDYzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ2MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NjMiIG5hbWU9IklucHV0NDYzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ2MyIgbmFtZT0iT3V0cHV0NDYzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NjMiIHR5cGU9InRuczpQb3J0VHlwZTQ2MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NjMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDYzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NjMiIGJpbmRpbmc9InRuczpCaW5kaW5nNDYzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ2NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ2NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NjQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDY0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDY0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ2NCIgbmFtZT0iSW5wdXQ0NjQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDY0IiBuYW1lPSJPdXRwdXQ0NjQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ2NCIgdHlwZT0idG5zOlBvcnRUeXBlNDY0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDY0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ2NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NjQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ2NCIgYmluZGluZz0idG5zOkJpbmRpbmc0NjQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDY1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDY1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ2NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NjUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDY1IiBuYW1lPSJJbnB1dDQ2NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NjUiIG5hbWU9Ik91dHB1dDQ2NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDY1IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NjUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDY1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ2NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDY1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ2NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NjYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NjYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDY2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ2NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NjYiIG5hbWU9IklucHV0NDY2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ2NiIgbmFtZT0iT3V0cHV0NDY2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NjYiIHR5cGU9InRuczpQb3J0VHlwZTQ2NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NjYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDY2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NjYiIGJpbmRpbmc9InRuczpCaW5kaW5nNDY2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ2NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ2NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NjciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDY3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDY3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ2NyIgbmFtZT0iSW5wdXQ0NjciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDY3IiBuYW1lPSJPdXRwdXQ0NjciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ2NyIgdHlwZT0idG5zOlBvcnRUeXBlNDY3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDY3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ2NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NjciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ2NyIgYmluZGluZz0idG5zOkJpbmRpbmc0NjciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDY4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDY4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ2OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NjgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDY4IiBuYW1lPSJJbnB1dDQ2OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NjgiIG5hbWU9Ik91dHB1dDQ2OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDY4IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NjgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NjgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDY4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ2OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDY4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ2OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NjkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NjkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDY5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ2OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NjkiIG5hbWU9IklucHV0NDY5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ2OSIgbmFtZT0iT3V0cHV0NDY5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NjkiIHR5cGU9InRuczpQb3J0VHlwZTQ2OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ2OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NjkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDY5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NjkiIGJpbmRpbmc9InRuczpCaW5kaW5nNDY5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ3MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ3MCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NzAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDcwIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDcwIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ3MCIgbmFtZT0iSW5wdXQ0NzAiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDcwIiBuYW1lPSJPdXRwdXQ0NzAiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ3MCIgdHlwZT0idG5zOlBvcnRUeXBlNDcwIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDcwIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ3MCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NzAiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ3MCIgYmluZGluZz0idG5zOkJpbmRpbmc0NzAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDcxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDcxIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ3MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDcxIiBuYW1lPSJJbnB1dDQ3MSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NzEiIG5hbWU9Ik91dHB1dDQ3MSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDcxIiB0eXBlPSJ0bnM6UG9ydFR5cGU0NzEiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzEiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDcxIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ3MSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDcxIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ3MSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NzIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NzIiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDcyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ3MiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3MiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NzIiIG5hbWU9IklucHV0NDcyIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ3MiIgbmFtZT0iT3V0cHV0NDcyIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NzIiIHR5cGU9InRuczpQb3J0VHlwZTQ3MiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3MiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NzIiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDcyIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NzIiIGJpbmRpbmc9InRuczpCaW5kaW5nNDcyIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ3MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ3MyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NzMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDczIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDczIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ3MyIgbmFtZT0iSW5wdXQ0NzMiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDczIiBuYW1lPSJPdXRwdXQ0NzMiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ3MyIgdHlwZT0idG5zOlBvcnRUeXBlNDczIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDczIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ3MyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NzMiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ3MyIgYmluZGluZz0idG5zOkJpbmRpbmc0NzMiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDc0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDc0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ3NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NzQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzQiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDc0IiBuYW1lPSJJbnB1dDQ3NCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NzQiIG5hbWU9Ik91dHB1dDQ3NCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDc0IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NzQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzQiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDc0Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ3NCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDc0IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ3NCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NzUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NzUiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDc1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ3NSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3NSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NzUiIG5hbWU9IklucHV0NDc1Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ3NSIgbmFtZT0iT3V0cHV0NDc1Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NzUiIHR5cGU9InRuczpQb3J0VHlwZTQ3NSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3NSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NzUiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDc1Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NzUiIGJpbmRpbmc9InRuczpCaW5kaW5nNDc1Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ3NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ3NiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NzYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDc2Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDc2Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ3NiIgbmFtZT0iSW5wdXQ0NzYiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDc2IiBuYW1lPSJPdXRwdXQ0NzYiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ3NiIgdHlwZT0idG5zOlBvcnRUeXBlNDc2Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDc2Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ3NiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NzYiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ3NiIgYmluZGluZz0idG5zOkJpbmRpbmc0NzYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDc3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDc3Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ3NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0NzciPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzciPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDc3IiBuYW1lPSJJbnB1dDQ3NyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0NzciIG5hbWU9Ik91dHB1dDQ3NyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDc3IiB0eXBlPSJ0bnM6UG9ydFR5cGU0NzciPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240NzciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDc3Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ3NyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDc3IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ3NyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0NzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0NzgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0NzgiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDc4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ3OCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3OCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0NzgiIG5hbWU9IklucHV0NDc4Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ3OCIgbmFtZT0iT3V0cHV0NDc4Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0NzgiIHR5cGU9InRuczpQb3J0VHlwZTQ3OCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ3OCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240NzgiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDc4Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0NzgiIGJpbmRpbmc9InRuczpCaW5kaW5nNDc4Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ3OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ3OSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0NzkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDc5Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDc5Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ3OSIgbmFtZT0iSW5wdXQ0NzkiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDc5IiBuYW1lPSJPdXRwdXQ0NzkiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ3OSIgdHlwZT0idG5zOlBvcnRUeXBlNDc5Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDc5Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ3OSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0NzkiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ3OSIgYmluZGluZz0idG5zOkJpbmRpbmc0NzkiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDgwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDgwIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ4MCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0ODAiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODAiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDgwIiBuYW1lPSJJbnB1dDQ4MCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0ODAiIG5hbWU9Ik91dHB1dDQ4MCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDgwIiB0eXBlPSJ0bnM6UG9ydFR5cGU0ODAiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODAiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDgwIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ4MCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDgwIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ4MCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0ODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0ODEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0ODEiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDgxIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ4MSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4MSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0ODEiIG5hbWU9IklucHV0NDgxIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ4MSIgbmFtZT0iT3V0cHV0NDgxIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0ODEiIHR5cGU9InRuczpQb3J0VHlwZTQ4MSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4MSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240ODEiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDgxIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0ODEiIGJpbmRpbmc9InRuczpCaW5kaW5nNDgxIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ4MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ4MiI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0ODIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDgyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDgyIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ4MiIgbmFtZT0iSW5wdXQ0ODIiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDgyIiBuYW1lPSJPdXRwdXQ0ODIiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ4MiIgdHlwZT0idG5zOlBvcnRUeXBlNDgyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDgyIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ4MiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0ODIiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ4MiIgYmluZGluZz0idG5zOkJpbmRpbmc0ODIiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDgzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDgzIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ4MyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0ODMiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODMiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDgzIiBuYW1lPSJJbnB1dDQ4MyIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0ODMiIG5hbWU9Ik91dHB1dDQ4MyIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDgzIiB0eXBlPSJ0bnM6UG9ydFR5cGU0ODMiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODMiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDgzIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ4MyI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDgzIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ4MyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0ODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0ODQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0ODQiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDg0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ4NCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4NCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0ODQiIG5hbWU9IklucHV0NDg0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ4NCIgbmFtZT0iT3V0cHV0NDg0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0ODQiIHR5cGU9InRuczpQb3J0VHlwZTQ4NCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4NCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240ODQiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDg0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0ODQiIGJpbmRpbmc9InRuczpCaW5kaW5nNDg0Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ4NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ4NSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0ODUiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDg1Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDg1Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ4NSIgbmFtZT0iSW5wdXQ0ODUiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDg1IiBuYW1lPSJPdXRwdXQ0ODUiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ4NSIgdHlwZT0idG5zOlBvcnRUeXBlNDg1Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDg1Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ4NSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0ODUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ4NSIgYmluZGluZz0idG5zOkJpbmRpbmc0ODUiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDg2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDg2Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ4NiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0ODYiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODYiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDg2IiBuYW1lPSJJbnB1dDQ4NiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0ODYiIG5hbWU9Ik91dHB1dDQ4NiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDg2IiB0eXBlPSJ0bnM6UG9ydFR5cGU0ODYiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODYiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDg2Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ4NiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDg2IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ4NiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0ODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0ODciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0ODciPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDg3Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ4NyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4NyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0ODciIG5hbWU9IklucHV0NDg3Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ4NyIgbmFtZT0iT3V0cHV0NDg3Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0ODciIHR5cGU9InRuczpQb3J0VHlwZTQ4NyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ4NyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240ODciLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDg3Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0ODciIGJpbmRpbmc9InRuczpCaW5kaW5nNDg3Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ4OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ4OCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0ODgiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDg4Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDg4Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ4OCIgbmFtZT0iSW5wdXQ0ODgiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDg4IiBuYW1lPSJPdXRwdXQ0ODgiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ4OCIgdHlwZT0idG5zOlBvcnRUeXBlNDg4Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDg4Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ4OCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0ODgiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ4OCIgYmluZGluZz0idG5zOkJpbmRpbmc0ODgiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDg5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDg5Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ4OSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0ODkiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODkiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDg5IiBuYW1lPSJJbnB1dDQ4OSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0ODkiIG5hbWU9Ik91dHB1dDQ4OSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDg5IiB0eXBlPSJ0bnM6UG9ydFR5cGU0ODkiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240ODkiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDg5Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ4OSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDg5IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ4OSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0OTAiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0OTAiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDkwIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ5MCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5MCI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OTAiIG5hbWU9IklucHV0NDkwIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ5MCIgbmFtZT0iT3V0cHV0NDkwIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0OTAiIHR5cGU9InRuczpQb3J0VHlwZTQ5MCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5MCI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240OTAiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDkwIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OTAiIGJpbmRpbmc9InRuczpCaW5kaW5nNDkwIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ5MSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ5MSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0OTEiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDkxIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDkxIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ5MSIgbmFtZT0iSW5wdXQ0OTEiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDkxIiBuYW1lPSJPdXRwdXQ0OTEiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ5MSIgdHlwZT0idG5zOlBvcnRUeXBlNDkxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDkxIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ5MSIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0OTEiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ5MSIgYmluZGluZz0idG5zOkJpbmRpbmc0OTEiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDkyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDkyIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ5MiIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0OTIiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTIiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDkyIiBuYW1lPSJJbnB1dDQ5MiIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OTIiIG5hbWU9Ik91dHB1dDQ5MiIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDkyIiB0eXBlPSJ0bnM6UG9ydFR5cGU0OTIiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTIiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDkyIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ5MiI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDkyIiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ5MiI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0OTMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0OTMiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDkzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ5MyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5MyI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OTMiIG5hbWU9IklucHV0NDkzIi8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ5MyIgbmFtZT0iT3V0cHV0NDkzIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0OTMiIHR5cGU9InRuczpQb3J0VHlwZTQ5MyI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5MyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240OTMiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDkzIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OTMiIGJpbmRpbmc9InRuczpCaW5kaW5nNDkzIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ5NCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ5NCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0OTQiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDk0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDk0Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ5NCIgbmFtZT0iSW5wdXQ0OTQiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDk0IiBuYW1lPSJPdXRwdXQ0OTQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ5NCIgdHlwZT0idG5zOlBvcnRUeXBlNDk0Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDk0Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ5NCIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0OTQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ5NCIgYmluZGluZz0idG5zOkJpbmRpbmc0OTQiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDk1Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDk1Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ5NSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0OTUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTUiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDk1IiBuYW1lPSJJbnB1dDQ5NSIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OTUiIG5hbWU9Ik91dHB1dDQ5NSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDk1IiB0eXBlPSJ0bnM6UG9ydFR5cGU0OTUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTUiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDk1Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ5NSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDk1IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ5NSI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0OTYiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0OTYiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDk2Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ5NiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5NiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OTYiIG5hbWU9IklucHV0NDk2Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ5NiIgbmFtZT0iT3V0cHV0NDk2Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0OTYiIHR5cGU9InRuczpQb3J0VHlwZTQ5NiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5NiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240OTYiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDk2Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OTYiIGJpbmRpbmc9InRuczpCaW5kaW5nNDk2Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlc3BvbnNlTWVzc2FnZTQ5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXNwb25zZSIgZWxlbWVudD0idG5zOlJlc3BvbnNlRWxlbWVudDQ5NyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TWVzc2FnZTQ5NyI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJSZXF1ZXN0IiBlbGVtZW50PSJ0bnM6UmVxdWVzdEVsZW1lbnQ0OTciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlNDk3Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDk3Ij4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TWVzc2FnZTQ5NyIgbmFtZT0iSW5wdXQ0OTciLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNZXNzYWdlNDk3IiBuYW1lPSJPdXRwdXQ0OTciLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZzQ5NyIgdHlwZT0idG5zOlBvcnRUeXBlNDk3Ij4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uNDk3Ij4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL09wZXJhdGlvbjQ5NyIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2U0OTciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydDQ5NyIgYmluZGluZz0idG5zOkJpbmRpbmc0OTciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVzcG9uc2VNZXNzYWdlNDk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6UmVzcG9uc2VFbGVtZW50NDk4Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlcXVlc3RNZXNzYWdlNDk4Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IlJlcXVlc3QiIGVsZW1lbnQ9InRuczpSZXF1ZXN0RWxlbWVudDQ5OCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGU0OTgiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTgiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOlJlcXVlc3RNZXNzYWdlNDk4IiBuYW1lPSJJbnB1dDQ5OCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpSZXNwb25zZU1lc3NhZ2U0OTgiIG5hbWU9Ik91dHB1dDQ5OCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nNDk4IiB0eXBlPSJ0bnM6UG9ydFR5cGU0OTgiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb240OTgiPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvT3BlcmF0aW9uNDk4Ii8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU2VydmljZTQ5OCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJQb3J0NDk4IiBiaW5kaW5nPSJ0bnM6QmluZGluZzQ5OCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZXNwb25zZU1lc3NhZ2U0OTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZUVsZW1lbnQ0OTkiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVxdWVzdE1lc3NhZ2U0OTkiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iUmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3RFbGVtZW50NDk5Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZTQ5OSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5OSI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVxdWVzdE1lc3NhZ2U0OTkiIG5hbWU9IklucHV0NDk5Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOlJlc3BvbnNlTWVzc2FnZTQ5OSIgbmFtZT0iT3V0cHV0NDk5Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmc0OTkiIHR5cGU9InRuczpQb3J0VHlwZTQ5OSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjQ5OSI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy93ZWJ0b29scy9PcGVyYXRpb240OTkiLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlNDk5Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnQ0OTkiIGJpbmRpbmc9InRuczpCaW5kaW5nNDk5Ij4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvU3RvY2tRdW90ZS9TdG9ja1F1b3RlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9kYXRhL1N0b2NrUXVvdGUvU3RvY2tRdW90ZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGJmOTY1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL2RhdGEvU3RvY2tRdW90ZS9TdG9ja1F1b3RlLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL1N0b2NrUXVvdGUvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iU3RvY2tRdW90ZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvU3RvY2tRdW90ZS8iPg0KLSAgPHdzZGw6dHlwZXM+DQotICAgIDx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL1N0b2NrUXVvdGUvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4NCi0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iZ2V0UXVvdGVSZXNwb25zZSI+DQotICAgICAgICA8eHNkOmNvbXBsZXhUeXBlPg0KLSAgICAgICAgICA8eHNkOmFsbD4NCi0gICAgICAgICAgICA8eHNkOmVsZW1lbnQgbmFtZT0idGlja2VyU3ltYm9sIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+DQotICAgICAgICAgIDwveHNkOmFsbD4NCi0gICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPg0KLSAgICAgIDwveHNkOmVsZW1lbnQ+DQotICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImdldFF1b3RlUmVxdWVzdCI+DQotICAgICAgICA8eHNkOmNvbXBsZXhUeXBlPg0KLSAgICAgICAgICA8eHNkOmFsbD4NCi0gICAgICAgICAgICA8eHNkOmVsZW1lbnQgbmFtZT0icHJpY2UiIHR5cGU9InhzZDpmbG9hdCIvPg0KLSAgICAgICAgICA8L3hzZDphbGw+DQotICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4NCi0gICAgICA8L3hzZDplbGVtZW50Pg0KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJIZWFkZXJzIj4NCi0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+DQotICAgICAgICAgIDx4c2Q6c2VxdWVuY2U+DQotICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImhlYWRlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQotICAgICAgICAgICAgICA8eHNkOmNvbXBsZXhUeXBlPg0KLSAgICAgICAgICAgICAgICA8eHNkOnNlcXVlbmNlPg0KLSAgICAgICAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJuYW1lIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+DQotICAgICAgICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9InZhbHVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+DQotICAgICAgICAgICAgICAgIDwveHNkOnNlcXVlbmNlPg0KLSAgICAgICAgICAgICAgPC94c2Q6Y29tcGxleFR5cGU+DQotICAgICAgICAgICAgPC94c2Q6ZWxlbWVudD4NCi0gICAgICAgICAgPC94c2Q6c2VxdWVuY2U+DQotICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4NCi0gICAgICA8L3hzZDplbGVtZW50Pg0KLSAgICA8L3hzZDpzY2hlbWE+DQotICA8L3dzZGw6dHlwZXM+DQotICA8d3NkbDptZXNzYWdlIG5hbWU9ImdldFF1b3RlUmVzcG9uc2UiPg0KLSAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpnZXRRdW90ZVJlc3BvbnNlIiBuYW1lPSJnZXRRdW90ZVJlc3BvbnNlIi8+DQotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOkhlYWRlcnMiIG5hbWU9ImhlYWRlcnMiLz4NCi0gIDwvd3NkbDptZXNzYWdlPg0KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJnZXRRdW90ZVJlcXVlc3QiPg0KLSAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpnZXRRdW90ZVJlcXVlc3QiIG5hbWU9ImdldFF1b3RlUmVxdWVzdCIvPg0KLSAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpIZWFkZXJzIiBuYW1lPSJoZWFkZXJzIi8+DQotICA8L3dzZGw6bWVzc2FnZT4NCi0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlN0b2NrUXVvdGUiPg0KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZ2V0UXVvdGUiPg0KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpnZXRRdW90ZVJlcXVlc3QiLz4NCi0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOmdldFF1b3RlUmVzcG9uc2UiLz4NCi0gICAgPC93c2RsOm9wZXJhdGlvbj4NCi0gIDwvd3NkbDpwb3J0VHlwZT4NCi0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iU3RvY2tRdW90ZVNPQVAiIHR5cGU9InRuczpTdG9ja1F1b3RlIj4NCi0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+DQotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJnZXRRdW90ZSI+DQotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9TdG9ja1F1b3RlL2dldFF1b3RlIi8+DQotICAgICAgPHdzZGw6aW5wdXQ+DQotICAgICAgICA8c29hcDpib2R5IHBhcnRzPSJnZXRRdW90ZVJlcXVlc3QiIHVzZT0ibGl0ZXJhbCIvPg0KLSAgICAgICAgPHNvYXA6aGVhZGVyIG1lc3NhZ2U9InRuczpnZXRRdW90ZVJlcXVlc3QiIHBhcnQ9ImhlYWRlcnMiIHVzZT0ibGl0ZXJhbCIvPg0KLSAgICAgIDwvd3NkbDppbnB1dD4NCi0gICAgICA8d3NkbDpvdXRwdXQ+DQotICAgICAgICA8c29hcDpib2R5IHBhcnRzPSJnZXRRdW90ZVJlc3BvbnNlIiB1c2U9ImxpdGVyYWwiLz4NCi0gICAgICAgIDxzb2FwOmhlYWRlciBtZXNzYWdlPSJ0bnM6Z2V0UXVvdGVSZXNwb25zZSIgcGFydD0iaGVhZGVycyIgdXNlPSJsaXRlcmFsIi8+DQotICAgICAgPC93c2RsOm91dHB1dD4NCi0gICAgPC93c2RsOm9wZXJhdGlvbj4NCi0gIDwvd3NkbDpiaW5kaW5nPg0KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTdG9ja1F1b3RlIj4NCi0gICAgPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6U3RvY2tRdW90ZVNPQVAiIG5hbWU9IlN0b2NrUXVvdGVTT0FQIj4NCi0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmciLz4NCi0gICAgPC93c2RsOnBvcnQ+DQotICA8L3dzZGw6c2VydmljZT4NCi08L3dzZGw6ZGVmaW5pdGlvbnM+DQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvQWxsVGVzdHMuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL0FsbFRlc3RzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4OGI5Y2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvQWxsVGVzdHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiCgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwKLSCgKgotICogQ29udHJpYnV0b3JzOgotICogICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LldTRExTY2FsYWJpbGl0eVRlc3RzOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotcHVibGljIGNsYXNzIEFsbFRlc3RzCi17Ci0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKCJUZXN0IGZvciBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZSIpOwotICAgIC8vJEpVbml0LUJFR0lOJAotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShSZWFkU3RvY2tRdW90ZVdTRExUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFJlYWRTdG9ja1F1b3RlV1NETEVNRlRlc3RDYXNlLmNsYXNzKTsKLSAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoVmFsaWRhdGVTdG9ja1F1b3RlV1NETFRlc3RDYXNlLmNsYXNzKTsKLSAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoVmFsaWRhdGVTdG9ja1F1b3RlV1NJVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShPcGVuU3RvY2tRdW90ZVdTRExTZXR1cC5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKE9wZW5TdG9ja1F1b3RlV1NETFRlc3RDYXNlLmNsYXNzKTsKLSAgICBzdWl0ZS5hZGRUZXN0KFdTRExTY2FsYWJpbGl0eVRlc3RzLnN1aXRlKCkpOwotICAgIC8vJEpVbml0LUVORCQKLSAgICByZXR1cm4gc3VpdGU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL09wZW5FZGl0b3JPQUdJU1dTRExUZXN0Y2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvT3BlbkVkaXRvck9BR0lTV1NETFRlc3RjYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwYjExNjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvT3BlbkVkaXRvck9BR0lTV1NETFRlc3RjYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZTsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLldTRExFeGNlcHRpb247Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUNvbnRhaW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZVByb3h5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZVByb3h5VmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5EaW1lbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZVRlc3RDYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklFZGl0b3JQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hXaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGFydEluaXRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5wYXJ0LkZpbGVFZGl0b3JJbnB1dDsKLQotcHVibGljIGNsYXNzIE9wZW5FZGl0b3JPQUdJU1dTRExUZXN0Y2FzZSBleHRlbmRzIFBlcmZvcm1hbmNlVGVzdENhc2UKLXsKLSAgcHVibGljIHZvaWQgdGVzdFJlYWRXU0RMKCkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgV1NETEV4Y2VwdGlvbiwgQ29yZUV4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCi0gIHsKLSAgICBTdHJpbmcgb2FnaXM4MERpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgib2FnaXM4MERpciIpOwotICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKG9hZ2lzODBEaXIpOwotICAgIGlmICghb2FnaXM4MERpci5lbmRzV2l0aCgiLyIpICYmICFvYWdpczgwRGlyLmVuZHNXaXRoKCJcXCIpKQotICAgICAgb2FnaXM4MERpciA9IG9hZ2lzODBEaXIgKyAiLyI7Ci0gICAgRmlsZSBkaXIgPSBuZXcgRmlsZShvYWdpczgwRGlyICsgIk9BR0lTOC4wIik7Ci0gICAgaWYgKGRpci5leGlzdHMoKSAmJiBkaXIuaXNEaXJlY3RvcnkoKSkKLSAgICB7Ci0gICAgICBJUHJvamVjdCBwcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KCJzcCIpOwotICAgICAgcHJvamVjdC5jcmVhdGUobnVsbCk7Ci0gICAgICBwcm9qZWN0Lm9wZW4obnVsbCk7Ci0gICAgICBjb3B5KGRpciwgcHJvamVjdCk7Ci0gICAgICBqb2luQmFja2dyb3VuZEpvYnMoKTsKLSAgICAgIGZpbmFsIExpc3Qgd3NkbHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgICBwcm9qZWN0LmFjY2VwdAotICAgICAgKAotICAgICAgICBuZXcgSVJlc291cmNlUHJveHlWaXNpdG9yKCkKLSAgICAgICAgewotICAgICAgICAgIHB1YmxpYyBib29sZWFuIHZpc2l0KElSZXNvdXJjZVByb3h5IHByb3h5KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChwcm94eS5nZXROYW1lKCkuZW5kc1dpdGgoIi53c2RsIikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHdzZGxzLmFkZChwcm94eS5yZXF1ZXN0UmVzb3VyY2UoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIElDb250YWluZXIuSU5DTFVERV9QSEFOVE9NUwotICAgICAgKTsKLSAgICAgIHRhZ0FzU3VtbWFyeSgiT3BlbiBPQUdJUyBXU0RMIiwgbmV3IERpbWVuc2lvbltdIHtEaW1lbnNpb24uRUxBUFNFRF9QUk9DRVNTLCBEaW1lbnNpb24uV09SS0lOR19TRVR9KTsKLSAgICAgIHN0YXJ0TWVhc3VyaW5nKCk7Ci0gICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gd3NkbHMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKLSAgICAgICAgb3BlbldTREwoKElGaWxlKWl0Lm5leHQoKSk7Ci0gICAgICBzdG9wTWVhc3VyaW5nKCk7Ci0gICAgICBjb21taXRNZWFzdXJlbWVudHMoKTsKLSAgICAgIGFzc2VydFBlcmZvcm1hbmNlKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGZhaWwoZGlyLnRvU3RyaW5nKCkpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGNvcHkoRmlsZSBzcmMsIElDb250YWluZXIgZGVzdCkgdGhyb3dzIENvcmVFeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgotICB7Ci0gICAgRmlsZVtdIGNoaWxkcmVuID0gc3JjLmxpc3RGaWxlcygpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgU3RyaW5nIG5hbWUgPSBjaGlsZHJlbltpXS5nZXROYW1lKCk7Ci0gICAgICBpZiAoY2hpbGRyZW5baV0uaXNEaXJlY3RvcnkoKSkKLSAgICAgIHsKLSAgICAgICAgSUZvbGRlciBmb2xkZXIgPSBkZXN0LmdldEZvbGRlcihuZXcgUGF0aChuYW1lKSk7Ci0gICAgICAgIGZvbGRlci5jcmVhdGUodHJ1ZSwgdHJ1ZSwgbnVsbCk7Ci0gICAgICAgIGNvcHkoY2hpbGRyZW5baV0sIGZvbGRlcik7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChuYW1lLmVuZHNXaXRoKCIud3NkbCIpIHx8IG5hbWUuZW5kc1dpdGgoIi54c2QiKSkKLSAgICAgIHsKLSAgICAgICAgSUZpbGUgZmlsZSA9IGRlc3QuZ2V0RmlsZShuZXcgUGF0aChuYW1lKSk7Ci0gICAgICAgIGZpbGUuY3JlYXRlKG5ldyBGaWxlSW5wdXRTdHJlYW0oY2hpbGRyZW5baV0pLCB0cnVlLCBudWxsKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgam9pbkJhY2tncm91bmRKb2JzKCkKLSAgewotICAgIERpc3BsYXkuZ2V0RGVmYXVsdCgpLnN5bmNFeGVjKG5ldyBSdW5uYWJsZSgpCi0gICAgewotICAgICAgcHVibGljIHZvaWQgcnVuKCkKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICBQbGF0Zm9ybS5nZXRKb2JNYW5hZ2VyKCkuam9pbihSZXNvdXJjZXNQbHVnaW4uRkFNSUxZX0FVVE9fQlVJTEQsIG51bGwpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwotICAgICAgICBEaXNwbGF5IGRpc3BsYXkgPSBEaXNwbGF5LmdldERlZmF1bHQoKTsKLSAgICAgICAgd2hpbGUgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnQgPCA1MDAwKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFkaXNwbGF5LnJlYWRBbmREaXNwYXRjaCgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGRpc3BsYXkuc2xlZXAoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBvcGVuV1NETChJRmlsZSBmaWxlKSB0aHJvd3MgUGFydEluaXRFeGNlcHRpb24KLSAgewotICAgIElXb3JrYmVuY2hXaW5kb3cgd29ya2JlbmNoV2luZG93ID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKTsKLSAgICBJRWRpdG9yUGFydCBlZGl0b3IgPSB3b3JrYmVuY2hXaW5kb3cuZ2V0QWN0aXZlUGFnZSgpLm9wZW5FZGl0b3IobmV3IEZpbGVFZGl0b3JJbnB1dChmaWxlKSwgUGVyZm9ybWFuY2VQbHVnaW4uV1NETF9FRElUT1JfSUQsIHRydWUpOwotICAgIHdvcmtiZW5jaFdpbmRvdy5nZXRBY3RpdmVQYWdlKCkuY2xvc2VFZGl0b3IoZWRpdG9yLCBmYWxzZSk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9PcGVuU3RvY2tRdW90ZVdTRExTZXR1cC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvT3BlblN0b2NrUXVvdGVXU0RMU2V0dXAuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA1YWI2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9PcGVuU3RvY2tRdW90ZVdTRExTZXR1cC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNCwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZTsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5pbnRyby5JSW50cm9NYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmludHJvLklJbnRyb1BhcnQ7Ci0KLXB1YmxpYyBjbGFzcyBPcGVuU3RvY2tRdW90ZVdTRExTZXR1cCBleHRlbmRzIFRlc3RDYXNlCi17Ci0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIFBST0pFQ1RfTkFNRSA9ICJQcm9qZWN0IjsKLQotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoT3BlblN0b2NrUXVvdGVXU0RMU2V0dXAuY2xhc3MsICJPcGVuU3RvY2tRdW90ZVdTRExTZXR1cCIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgY2xvc2VJbnRybygpCi0gIHsKLSAgICBJSW50cm9NYW5hZ2VyIGludHJvTWFuYWdlciA9IFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0SW50cm9NYW5hZ2VyKCk7Ci0gICAgSUludHJvUGFydCBpbnRyb1BhcnQgPSBpbnRyb01hbmFnZXIuZ2V0SW50cm8oKTsKLSAgICBpZiAoaW50cm9QYXJ0ICE9IG51bGwpCi0gICAgICBpbnRyb01hbmFnZXIuY2xvc2VJbnRybyhpbnRyb1BhcnQpOwotICB9Ci0KLSAgcHJvdGVjdGVkIElQcm9qZWN0IGNyZWF0ZVNpbXBsZVByb2plY3QoU3RyaW5nIG5hbWUpIHRocm93cyBDb3JlRXhjZXB0aW9uCi0gIHsKLSAgICBJUHJvamVjdCBzaW1wbGVQcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KG5hbWUpOwotICAgIHNpbXBsZVByb2plY3QuY3JlYXRlKG51bGwpOwotICAgIHNpbXBsZVByb2plY3Qub3BlbihudWxsKTsKLSAgICByZXR1cm4gc2ltcGxlUHJvamVjdDsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGNvcHlGaWxlKElQcm9qZWN0IHByb2plY3QsIFN0cmluZyBzb3VyY2UsIFN0cmluZyBkZXN0KSB0aHJvd3MgSU9FeGNlcHRpb24sIENvcmVFeGNlcHRpb24KLSAgewotICAgIElGaWxlIGZpbGUgPSBwcm9qZWN0LmdldEZpbGUoZGVzdCk7Ci0gICAgZmlsZS5jcmVhdGUoUGVyZm9ybWFuY2VQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldEJ1bmRsZSgpLmdldEVudHJ5KHNvdXJjZSkub3BlblN0cmVhbSgpLCB0cnVlLCBudWxsKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIGpvaW5BdXRvQnVpbGQoKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotICB7Ci0gICAgYm9vbGVhbiBpbnRlcnJ1cHRlZCA9IHRydWU7Ci0gICAgd2hpbGUgKGludGVycnVwdGVkKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBQbGF0Zm9ybS5nZXRKb2JNYW5hZ2VyKCkuam9pbihSZXNvdXJjZXNQbHVnaW4uRkFNSUxZX0FVVE9fQlVJTEQsIG51bGwpOwotICAgICAgICBpbnRlcnJ1cHRlZCA9IGZhbHNlOwotICAgICAgfQotICAgICAgY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0gICAgICAgIGludGVycnVwdGVkID0gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0U2V0dXAoKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBjbG9zZUludHJvKCk7Ci0gICAgSVByb2plY3QgcHJvamVjdCA9IGNyZWF0ZVNpbXBsZVByb2plY3QoUFJPSkVDVF9OQU1FKTsKLSAgICBjb3B5RmlsZShwcm9qZWN0LCAiZGF0YS9TdG9ja1F1b3RlL1N0b2NrUXVvdGUud3NkbCIsICJTdG9ja1F1b3RlLndzZGwiKTsKLSAgICBqb2luQXV0b0J1aWxkKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL09wZW5TdG9ja1F1b3RlV1NETFRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9PcGVuU3RvY2tRdW90ZVdTRExUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2JlNWI0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL09wZW5TdG9ja1F1b3RlV1NETFRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZVRlc3RDYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklFZGl0b3JJbnB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JRWRpdG9yUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoV2luZG93OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBhcnRJbml0RXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkucGFydC5GaWxlRWRpdG9ySW5wdXQ7Ci0KLXB1YmxpYyBjbGFzcyBPcGVuU3RvY2tRdW90ZVdTRExUZXN0Q2FzZSBleHRlbmRzIFBlcmZvcm1hbmNlVGVzdENhc2UKLXsKLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKE9wZW5TdG9ja1F1b3RlV1NETFRlc3RDYXNlLmNsYXNzLCAiT3BlblN0b2NrUXVvdGVXU0RMVGVzdENhc2UiKTsKLSAgfQotCi0gIHByb3RlY3RlZCBJUHJvamVjdCBnZXRQcm9qZWN0KFN0cmluZyBwcm9qZWN0TmFtZSkgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAgIElQcm9qZWN0IHByb2plY3QgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotICAgIGFzc2VydFRydWUocHJvamVjdC5leGlzdHMoKSk7Ci0gICAgcHJvamVjdC5vcGVuKG51bGwpOwotICAgIHByb2plY3QucmVmcmVzaExvY2FsKElQcm9qZWN0LkRFUFRIX0lORklOSVRFLCBudWxsKTsKLSAgICBqb2luQXV0b0J1aWxkKCk7Ci0gICAgcmV0dXJuIHByb2plY3Q7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCBqb2luQXV0b0J1aWxkKCkgdGhyb3dzIENvcmVFeGNlcHRpb24KLSAgewotICAgIGJvb2xlYW4gaW50ZXJydXB0ZWQgPSB0cnVlOwotICAgIHdoaWxlIChpbnRlcnJ1cHRlZCkKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgUGxhdGZvcm0uZ2V0Sm9iTWFuYWdlcigpLmpvaW4oUmVzb3VyY2VzUGx1Z2luLkZBTUlMWV9BVVRPX0JVSUxELCBudWxsKTsKLSAgICAgICAgaW50ZXJydXB0ZWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICBpbnRlcnJ1cHRlZCA9IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJvdGVjdGVkIElFZGl0b3JQYXJ0IG9wZW5FZGl0b3IoSUVkaXRvcklucHV0IGVkaXRvcklucHV0LCBTdHJpbmcgZWRpdG9yaWQpIHRocm93cyBQYXJ0SW5pdEV4Y2VwdGlvbgotICB7Ci0gICAgSVdvcmtiZW5jaFdpbmRvdyB3b3JrYmVuY2hXaW5kb3cgPSBQbGF0Zm9ybVVJLmdldFdvcmtiZW5jaCgpLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvdygpOwotICAgIHJldHVybiB3b3JrYmVuY2hXaW5kb3cuZ2V0QWN0aXZlUGFnZSgpLm9wZW5FZGl0b3IoZWRpdG9ySW5wdXQsIGVkaXRvcmlkLCB0cnVlKTsKLSAgfQotCi0gIHByb3RlY3RlZCBib29sZWFuIGNsb3NlRWRpdG9yKElFZGl0b3JQYXJ0IGVkaXRvcikKLSAgewotICAgIElXb3JrYmVuY2hXaW5kb3cgd29ya2JlbmNoV2luZG93ID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKTsKLSAgICByZXR1cm4gd29ya2JlbmNoV2luZG93LmdldEFjdGl2ZVBhZ2UoKS5jbG9zZUVkaXRvcihlZGl0b3IsIGZhbHNlKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RPcGVuU3RvY2tRdW90ZVdTREwoKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBJUHJvamVjdCBwcm9qZWN0ID0gZ2V0UHJvamVjdChPcGVuU3RvY2tRdW90ZVdTRExTZXR1cC5QUk9KRUNUX05BTUUpOwotICAgIElFZGl0b3JJbnB1dCBlZGl0b3JJbnB1dCA9IG5ldyBGaWxlRWRpdG9ySW5wdXQoKElGaWxlKXByb2plY3QuZmluZE1lbWJlcigiU3RvY2tRdW90ZS53c2RsIikpOwotICAgIHN0YXJ0TWVhc3VyaW5nKCk7Ci0gICAgSUVkaXRvclBhcnQgZWRpdG9yUGFydCA9IG9wZW5FZGl0b3IoZWRpdG9ySW5wdXQsIFBlcmZvcm1hbmNlUGx1Z2luLldTRExfRURJVE9SX0lEKTsKLSAgICBzdG9wTWVhc3VyaW5nKCk7Ci0gICAgY29tbWl0TWVhc3VyZW1lbnRzKCk7Ci0gICAgYXNzZXJ0UGVyZm9ybWFuY2UoKTsKLSAgICBjbG9zZUVkaXRvcihlZGl0b3JQYXJ0KTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvUGVyZm9ybWFuY2VQbHVnaW4uamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL1BlcmZvcm1hbmNlUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMzVhZGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvUGVyZm9ybWFuY2VQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2U7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbHVnaW47Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci0KLS8qKgotICogVGhlIG1haW4gcGx1Z2luIGNsYXNzIHRvIGJlIHVzZWQgaW4gdGhlIGRlc2t0b3AuCi0gKi8KLXB1YmxpYyBjbGFzcyBQZXJmb3JtYW5jZVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7Ci0JLy9UaGUgc2hhcmVkIGluc3RhbmNlLgotCXByaXZhdGUgc3RhdGljIFBlcmZvcm1hbmNlUGx1Z2luIHBsdWdpbjsKLQkvL1Jlc291cmNlIGJ1bmRsZS4KLQlwcml2YXRlIFJlc291cmNlQnVuZGxlIHJlc291cmNlQnVuZGxlOwotCi0gIC8vIFRPRE86IFRoZXNlIHR3byBjb25zdGFudHMgc2hvdWxkIHJlYWxseSBiZSBwdWxsZWQgZnJvbSB0aGUgcGx1Z2luIHdoaWNoIGRlY2xhcmVzIGl0LgotICAvLyBUaGlzIHdpbGwgYXZvaWQgIm1hZ2ljIHN0cmluZyIgZGVwZW5kZW5jaWVzIHdoaWNoIGNhbiBiZSBlYXNpbHkgYnJva2VuLgotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXU0RMX0VESVRPUl9JRCA9ICJvcmcuZWNsaXBzZS53c3Qud3NkbC51aS5pbnRlcm5hbC5XU0RMRWRpdG9yIjsgLy8kTk9OLU5MUy0xJAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXU0RMX1ZBTElEQVRPUl9JRCA9ICJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLndzZGwiOyAvLyROT04tTkxTLTEkCi0gIAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCVU5ETEVfSUQgPSAib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UiOwkvLyROT04tTkxTLTEkCi0JCi0gIC8qKgotCSAqIFRoZSBjb25zdHJ1Y3Rvci4KLQkgKi8KLQlwdWJsaWMgUGVyZm9ybWFuY2VQbHVnaW4oKSB7Ci0JCXN1cGVyKCk7Ci0JCXBsdWdpbiA9IHRoaXM7Ci0JfQotCi0JLyoqCi0JICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHVwb24gcGx1Zy1pbiBhY3RpdmF0aW9uCi0JICovCi0JcHVibGljIHZvaWQgc3RhcnQoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJc3VwZXIuc3RhcnQoY29udGV4dCk7Ci0JfQotCi0JLyoqCi0JICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIHBsdWctaW4gaXMgc3RvcHBlZAotCSAqLwotCXB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJc3VwZXIuc3RvcChjb250ZXh0KTsKLQkJcGx1Z2luID0gbnVsbDsKLQkJcmVzb3VyY2VCdW5kbGUgPSBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFBlcmZvcm1hbmNlUGx1Z2luIGdldERlZmF1bHQoKSB7Ci0JCXJldHVybiBwbHVnaW47Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc3RyaW5nIGZyb20gdGhlIHBsdWdpbidzIHJlc291cmNlIGJ1bmRsZSwKLQkgKiBvciAna2V5JyBpZiBub3QgZm91bmQuCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UmVzb3VyY2VTdHJpbmcoU3RyaW5nIGtleSkgewotCQlSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSBQZXJmb3JtYW5jZVBsdWdpbi5nZXREZWZhdWx0KCkuZ2V0UmVzb3VyY2VCdW5kbGUoKTsKLQkJdHJ5IHsKLQkJCXJldHVybiAoYnVuZGxlICE9IG51bGwpID8gYnVuZGxlLmdldFN0cmluZyhrZXkpIDoga2V5OwotCQl9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgewotCQkJcmV0dXJuIGtleTsKLQkJfQotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHBsdWdpbidzIHJlc291cmNlIGJ1bmRsZSwKLQkgKi8KLQlwdWJsaWMgUmVzb3VyY2VCdW5kbGUgZ2V0UmVzb3VyY2VCdW5kbGUoKSB7Ci0JCXRyeSB7Ci0JCQlpZiAocmVzb3VyY2VCdW5kbGUgPT0gbnVsbCkKLQkJCQlyZXNvdXJjZUJ1bmRsZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSgib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UuUGVyZm9ybWFuY2VQbHVnaW5SZXNvdXJjZXMiKTsKLQkJfSBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIHgpIHsKLQkJCXJlc291cmNlQnVuZGxlID0gbnVsbDsKLQkJfQotCQlyZXR1cm4gcmVzb3VyY2VCdW5kbGU7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvUmVhZE9BR0lTV1NETFRlc3RjYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9SZWFkT0FHSVNXU0RMVGVzdGNhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM2OTY4Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9SZWFkT0FHSVNXU0RMVGVzdGNhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2U7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlRmlsdGVyOwotaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnRlc3QucGVyZm9ybWFuY2UuRGltZW5zaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnRlc3QucGVyZm9ybWFuY2UuUGVyZm9ybWFuY2VUZXN0Q2FzZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLndzZGw0ai5XU0RMUmVhZGVySW1wbDsKLQotcHVibGljIGNsYXNzIFJlYWRPQUdJU1dTRExUZXN0Y2FzZSBleHRlbmRzIFBlcmZvcm1hbmNlVGVzdENhc2UKLXsKLSAgcHJpdmF0ZSBMaXN0IGRlZnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgcHVibGljIHZvaWQgdGVzdFJlYWRXU0RMKCkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIG9hZ2lzODBEaXIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIm9hZ2lzODBEaXIiKTsKLSAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbChvYWdpczgwRGlyKTsKLSAgICBpZiAoIW9hZ2lzODBEaXIuZW5kc1dpdGgoIi8iKSAmJiAhb2FnaXM4MERpci5lbmRzV2l0aCgiXFwiKSkKLSAgICAgIG9hZ2lzODBEaXIgPSBvYWdpczgwRGlyICsgIi8iOwotICAgIEZpbGUgZGlyID0gbmV3IEZpbGUob2FnaXM4MERpciArICJPQUdJUzguMC93cy93c2RsIik7Ci0gICAgaWYgKGRpci5leGlzdHMoKSAmJiBkaXIuaXNEaXJlY3RvcnkoKSkKLSAgICB7Ci0gICAgICBGaWxlW10gd3NkbHMgPSBkaXIubGlzdEZpbGVzCi0gICAgICAoCi0gICAgICAgIG5ldyBGaWxlRmlsdGVyKCkKLSAgICAgICAgewotICAgICAgICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdChGaWxlIHBhdGhuYW1lKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwYXRobmFtZS5nZXROYW1lKCkuZW5kc1dpdGgoIi53c2RsIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICApOwotICAgICAgdGFnQXNTdW1tYXJ5KCJSZWFkIE9BR0lTIFdTREwiLCBuZXcgRGltZW5zaW9uW10ge0RpbWVuc2lvbi5FTEFQU0VEX1BST0NFU1MsIERpbWVuc2lvbi5XT1JLSU5HX1NFVH0pOwotICAgICAgc3RhcnRNZWFzdXJpbmcoKTsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd3NkbHMubGVuZ3RoOyBpKyspCi0gICAgICAgIHJlYWRXU0RMKHdzZGxzW2ldLnRvVVJMKCkudG9TdHJpbmcoKSk7Ci0gICAgICBzdG9wTWVhc3VyaW5nKCk7Ci0gICAgICBjb21taXRNZWFzdXJlbWVudHMoKTsKLSAgICAgIGFzc2VydFBlcmZvcm1hbmNlKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGZhaWwoZGlyLnRvU3RyaW5nKCkpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHJlYWRXU0RMKFN0cmluZyBsb2NhdGlvbikgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIFdTRExSZWFkZXJJbXBsIHJlYWRlciA9IG5ldyBXU0RMUmVhZGVySW1wbCgpOwotICAgIGRlZnMuYWRkKHJlYWRlci5yZWFkV1NETChsb2NhdGlvbikpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvUmVhZFN0b2NrUXVvdGVXU0RMRU1GVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL1JlYWRTdG9ja1F1b3RlV1NETEVNRlRlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOThhMWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvUmVhZFN0b2NrUXVvdGVXU0RMRU1GVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2U7Ci0KLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLQotaW1wb3J0IGphdmF4LndzZGwuRGVmaW5pdGlvbjsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZVNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuaW1wbC5SZXNvdXJjZVNldEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZVRlc3RDYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbDsKLQotcHVibGljIGNsYXNzIFJlYWRTdG9ja1F1b3RlV1NETEVNRlRlc3RDYXNlIGV4dGVuZHMgUGVyZm9ybWFuY2VUZXN0Q2FzZQotewotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoUmVhZFN0b2NrUXVvdGVXU0RMRU1GVGVzdENhc2UuY2xhc3MsICJSZWFkU3RvY2tRdW90ZVdTRExFTUZUZXN0Q2FzZSIpOwotICB9Ci0gICAgCi0gIHB1YmxpYyB2b2lkIHRlc3RSZWFkU3RvY2tRdW90ZVdTRExfRU1GKCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgc3RhcnRNZWFzdXJpbmcoKTsKLSAgICBVUkwgd3NkbCA9IFBlcmZvcm1hbmNlUGx1Z2luLmdldERlZmF1bHQoKS5nZXRCdW5kbGUoKS5nZXRFbnRyeSgiZGF0YS9TdG9ja1F1b3RlL1N0b2NrUXVvdGUud3NkbCIpOwotICAgIAotCVJlc291cmNlU2V0IHJlc291cmNlU2V0ID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOwotICAgIFdTRExSZXNvdXJjZUltcGwgcmVzb3VyY2UgPSAoV1NETFJlc291cmNlSW1wbClyZXNvdXJjZVNldC5jcmVhdGVSZXNvdXJjZShVUkkuY3JlYXRlVVJJKCIqLndzZGwiKSk7Ci0JcmVzb3VyY2Uuc2V0VVJJKFVSSS5jcmVhdGVVUkkod3NkbC50b1N0cmluZygpKSk7Ci0gICAgamF2YS51dGlsLk1hcCBtYXAgPSBuZXcgSGFzaHRhYmxlKCk7Ci0gICAgbWFwLnB1dChXU0RMUmVzb3VyY2VJbXBsLkNPTlRJTlVFX09OX0xPQURfRVJST1IsQm9vbGVhbi52YWx1ZU9mKHRydWUpKTsKLSAgICBtYXAucHV0KFdTRExSZXNvdXJjZUltcGwuVVNFX0VYVEVOU0lPTl9GQUNUT1JJRVMsQm9vbGVhbi52YWx1ZU9mKHRydWUpKTsKLQlyZXNvdXJjZS5sb2FkKG1hcCk7IAotCURlZmluaXRpb24gZGVmaW5pdGlvbiA9IHJlc291cmNlLmdldERlZmluaXRpb24oKTsKLQlkZWZpbml0aW9uLmdldFFOYW1lKCk7Ci0JCi0Jc3RvcE1lYXN1cmluZygpOwotCWNvbW1pdE1lYXN1cmVtZW50cygpOwotCWFzc2VydFBlcmZvcm1hbmNlKCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL1JlYWRTdG9ja1F1b3RlV1NETFRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9SZWFkU3RvY2tRdW90ZVdTRExUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTBkMDk1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL1JlYWRTdG9ja1F1b3RlV1NETFRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlOwotCi1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwueG1sLldTRExSZWFkZXI7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZVRlc3RDYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwud3NkbDRqLldTRExGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLQotcHVibGljIGNsYXNzIFJlYWRTdG9ja1F1b3RlV1NETFRlc3RDYXNlIGV4dGVuZHMgUGVyZm9ybWFuY2VUZXN0Q2FzZQotewotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoUmVhZFN0b2NrUXVvdGVXU0RMVGVzdENhc2UuY2xhc3MsICJSZWFkU3RvY2tRdW90ZVdTRExUZXN0Q2FzZSIpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCB0ZXN0UmVhZFN0b2NrUXVvdGVXU0RMKCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgc3RhcnRNZWFzdXJpbmcoKTsKLSAgICBVUkwgd3NkbCA9IFBlcmZvcm1hbmNlUGx1Z2luLmdldERlZmF1bHQoKS5nZXRCdW5kbGUoKS5nZXRFbnRyeSgiZGF0YS9TdG9ja1F1b3RlL1N0b2NrUXVvdGUud3NkbCIpOwotICAgIFdTRExGYWN0b3J5SW1wbCBmYWN0b3J5ID0gbmV3IFdTRExGYWN0b3J5SW1wbCgpOwotICAgIFdTRExSZWFkZXIgcmVhZGVyID0gZmFjdG9yeS5uZXdXU0RMUmVhZGVyKCk7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gcmVhZGVyLnJlYWRXU0RMKHdzZGwudG9TdHJpbmcoKSwgbmV3IElucHV0U291cmNlKHdzZGwub3BlblN0cmVhbSgpKSk7Ci0gICAgZGVmaW5pdGlvbi5nZXRRTmFtZSgpOwotICAgIHN0b3BNZWFzdXJpbmcoKTsKLQljb21taXRNZWFzdXJlbWVudHMoKTsKLQlhc3NlcnRQZXJmb3JtYW5jZSgpOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9WYWxpZGF0ZU9BR0lTV1NETFRlc3RjYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9WYWxpZGF0ZU9BR0lTV1NETFRlc3RjYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZmM3ZjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvVmFsaWRhdGVPQUdJU1dTRExUZXN0Y2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZTsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVGaWx0ZXI7Ci1pbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOwotCi1pbXBvcnQgamF2YXgud3NkbC5XU0RMRXhjZXB0aW9uOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnRlc3QucGVyZm9ybWFuY2UuRGltZW5zaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnRlc3QucGVyZm9ybWFuY2UuUGVyZm9ybWFuY2VUZXN0Q2FzZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlcy5QZXJzaXN0ZW50V1NJQ29udGV4dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2UuV1NETFZhbGlkYXRvcjsKLQotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVPQUdJU1dTRExUZXN0Y2FzZSBleHRlbmRzIFBlcmZvcm1hbmNlVGVzdENhc2UKLXsKLSAgcHJpdmF0ZSBXU0RMVmFsaWRhdG9yIHZhbGlkYXRvcjsKLQkgIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3NldFVwKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiAKLSAgewotICAgIHN1cGVyLnNldFVwKCk7Ci0gICAgLy8gU2V0IHRoZSBXUy1JIHByZWZlcmVuY2UgdG8gaWdub3JlIHNvIG9ubHkgV1NETCBlcnJvcnMgd2lsbCBiZSB0ZXN0ZWQuCi0gICAgV1NQbHVnaW4gd3N1aSA9IFdTUGx1Z2luLmdldEluc3RhbmNlKCk7Ci0gICAgUGVyc2lzdGVudFdTSUNvbnRleHQgd3NpY29udGV4dCA9IHdzdWkuZ2V0V1NJU1NCUENvbnRleHQoKTsKLSAgICB3c2ljb250ZXh0LnVwZGF0ZVdTSUNvbXBsaWFuY2VzKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLSAgICB3c2ljb250ZXh0ID0gd3N1aS5nZXRXU0lBUENvbnRleHQoKTsKLSAgICB3c2ljb250ZXh0LnVwZGF0ZVdTSUNvbXBsaWFuY2VzKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLSAgfSAKLQotICBwdWJsaWMgdm9pZCB0ZXN0VmFsaWRhdGVXU0RMKCkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIG9hZ2lzODBEaXIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIm9hZ2lzODBEaXIiKTsKLSAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbChvYWdpczgwRGlyKTsKLSAgICBpZiAoIW9hZ2lzODBEaXIuZW5kc1dpdGgoIi8iKSAmJiAhb2FnaXM4MERpci5lbmRzV2l0aCgiXFwiKSkKLSAgICAgIG9hZ2lzODBEaXIgPSBvYWdpczgwRGlyICsgIi8iOwotICAgIEZpbGUgZGlyID0gbmV3IEZpbGUob2FnaXM4MERpciArICJPQUdJUzguMC93cy93c2RsIik7Ci0gICAgaWYgKGRpci5leGlzdHMoKSAmJiBkaXIuaXNEaXJlY3RvcnkoKSkKLSAgICB7Ci0gICAgICBGaWxlW10gd3NkbHMgPSBkaXIubGlzdEZpbGVzCi0gICAgICAoCi0gICAgICAgIG5ldyBGaWxlRmlsdGVyKCkKLSAgICAgICAgewotICAgICAgICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdChGaWxlIHBhdGhuYW1lKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwYXRobmFtZS5nZXROYW1lKCkuZW5kc1dpdGgoIi53c2RsIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICApOwotICAgICAgdGFnQXNTdW1tYXJ5KCJWYWxpZGF0ZSBPQUdJUyBXU0RMIiwgbmV3IERpbWVuc2lvbltdIHtEaW1lbnNpb24uRUxBUFNFRF9QUk9DRVNTLCBEaW1lbnNpb24uV09SS0lOR19TRVR9KTsKLQkgIHZhbGlkYXRvciA9IFdTRExWYWxpZGF0b3IuZ2V0SW5zdGFuY2UoKTsKLQkgIHN0YXJ0TWVhc3VyaW5nKCk7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdzZGxzLmxlbmd0aDsgaSsrKQotICAgICAgICB2YWxpZGF0ZVdTREwod3NkbHNbaV0udG9VUkwoKS50b1N0cmluZygpKTsKLSAgICAgIHN0b3BNZWFzdXJpbmcoKTsKLSAgICAgIGNvbW1pdE1lYXN1cmVtZW50cygpOwotICAgICAgYXNzZXJ0UGVyZm9ybWFuY2UoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgZmFpbChkaXIudG9TdHJpbmcoKSk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgdmFsaWRhdGVXU0RMKFN0cmluZyBsb2NhdGlvbikgdGhyb3dzIFdTRExFeGNlcHRpb24KLSAgewotICAgIHZhbGlkYXRvci52YWxpZGF0ZShsb2NhdGlvbik7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL1ZhbGlkYXRlT0FHSVNXU0lUZXN0Y2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvVmFsaWRhdGVPQUdJU1dTSVRlc3RjYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZWFhYzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvVmFsaWRhdGVPQUdJU1dTSVRlc3RjYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZUZpbHRlcjsKLWltcG9ydCBqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247Ci0KLWltcG9ydCBqYXZheC53c2RsLldTRExFeGNlcHRpb247Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5EaW1lbnNpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZVRlc3RDYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZWNsaXBzZS5XU0RMVmFsaWRhdG9yOwotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVPQUdJU1dTSVRlc3RjYXNlIGV4dGVuZHMgUGVyZm9ybWFuY2VUZXN0Q2FzZQotewotICBwcml2YXRlIFdTRExWYWxpZGF0b3IgdmFsaWRhdG9yOwotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZSNzZXRVcCgpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24gCi0gIHsKLSAgICBzdXBlci5zZXRVcCgpOwotICAgIC8vIFNldCB0aGUgV1MtSSBwcmVmZXJlbmNlIHRvIGlnbm9yZSBzbyBvbmx5IFdTREwgZXJyb3JzIHdpbGwgYmUgdGVzdGVkLgotICAgIFdTUGx1Z2luIHdzdWkgPSBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpOwotICAgIFBlcnNpc3RlbnRXU0lDb250ZXh0IHdzaWNvbnRleHQgPSB3c3VpLmdldFdTSVNTQlBDb250ZXh0KCk7Ci0gICAgd3NpY29udGV4dC51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5TVE9QX05PTl9XU0kpOwotICAgIHdzaWNvbnRleHQgPSB3c3VpLmdldFdTSUFQQ29udGV4dCgpOwotICAgIHdzaWNvbnRleHQudXBkYXRlV1NJQ29tcGxpYW5jZXMoUGVyc2lzdGVudFdTSUNvbnRleHQuU1RPUF9OT05fV1NJKTsKLSAgfSAKLQotICBwdWJsaWMgdm9pZCB0ZXN0VmFsaWRhdGVXU0RMKCkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgV1NETEV4Y2VwdGlvbgotICB7Ci0gICAgU3RyaW5nIG9hZ2lzODBEaXIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIm9hZ2lzODBEaXIiKTsKLSAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbChvYWdpczgwRGlyKTsKLSAgICBpZiAoIW9hZ2lzODBEaXIuZW5kc1dpdGgoIi8iKSAmJiAhb2FnaXM4MERpci5lbmRzV2l0aCgiXFwiKSkKLSAgICAgIG9hZ2lzODBEaXIgPSBvYWdpczgwRGlyICsgIi8iOwotICAgIEZpbGUgZGlyID0gbmV3IEZpbGUob2FnaXM4MERpciArICJPQUdJUzguMC93cy93c2RsIik7Ci0gICAgaWYgKGRpci5leGlzdHMoKSAmJiBkaXIuaXNEaXJlY3RvcnkoKSkKLSAgICB7Ci0gICAgICBGaWxlW10gd3NkbHMgPSBkaXIubGlzdEZpbGVzCi0gICAgICAoCi0gICAgICAgIG5ldyBGaWxlRmlsdGVyKCkKLSAgICAgICAgewotICAgICAgICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdChGaWxlIHBhdGhuYW1lKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwYXRobmFtZS5nZXROYW1lKCkuZW5kc1dpdGgoIi53c2RsIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICApOwotICAgICAgdGFnQXNTdW1tYXJ5KCJWYWxpZGF0ZSBPQUdJUyBXU0RMIHdpdGggV1MtSSIsIG5ldyBEaW1lbnNpb25bXSB7RGltZW5zaW9uLkVMQVBTRURfUFJPQ0VTUywgRGltZW5zaW9uLldPUktJTkdfU0VUfSk7Ci0JICB2YWxpZGF0b3IgPSBXU0RMVmFsaWRhdG9yLmdldEluc3RhbmNlKCk7Ci0JICBzdGFydE1lYXN1cmluZygpOwotICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3c2Rscy5sZW5ndGg7IGkrKykKLSAgICAgICAgdmFsaWRhdGVXU0RMKHdzZGxzW2ldLnRvVVJMKCkudG9TdHJpbmcoKSk7Ci0gICAgICBzdG9wTWVhc3VyaW5nKCk7Ci0gICAgICBjb21taXRNZWFzdXJlbWVudHMoKTsKLSAgICAgIGFzc2VydFBlcmZvcm1hbmNlKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGZhaWwoZGlyLnRvU3RyaW5nKCkpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHZhbGlkYXRlV1NETChTdHJpbmcgbG9jYXRpb24pIHRocm93cyBXU0RMRXhjZXB0aW9uCi0gIHsKLSAgICB2YWxpZGF0b3IudmFsaWRhdGUobG9jYXRpb24pOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9WYWxpZGF0ZVN0b2NrUXVvdGVXU0RMVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL1ZhbGlkYXRlU3RvY2tRdW90ZVdTRExUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTAyYzdmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL1ZhbGlkYXRlU3RvY2tRdW90ZVdTRExUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZTsKLQotaW1wb3J0IGphdmEubmV0LlVSTDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS50ZXN0LnBlcmZvcm1hbmNlLlBlcmZvcm1hbmNlVGVzdENhc2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUNvbnRleHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5lY2xpcHNlLldTRExWYWxpZGF0b3I7Ci0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZVN0b2NrUXVvdGVXU0RMVGVzdENhc2UgZXh0ZW5kcyBQZXJmb3JtYW5jZVRlc3RDYXNlCi17Ci0gIHByaXZhdGUgV1NETFZhbGlkYXRvciB2YWxpZGF0b3I7Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3NldFVwKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiAKLSAgewotICAgIHN1cGVyLnNldFVwKCk7Ci0gICAgLy8gU2V0IHRoZSBXUy1JIHByZWZlcmVuY2UgdG8gaWdub3JlIHNvIG9ubHkgV1NETCBlcnJvcnMgd2lsbCBiZSB0ZXN0ZWQuCi0gICAgV1NQbHVnaW4gd3N1aSA9IFdTUGx1Z2luLmdldEluc3RhbmNlKCk7Ci0gICAgUGVyc2lzdGVudFdTSUNvbnRleHQgd3NpY29udGV4dCA9IHdzdWkuZ2V0V1NJU1NCUENvbnRleHQoKTsKLSAgICB3c2ljb250ZXh0LnVwZGF0ZVdTSUNvbXBsaWFuY2VzKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLSAgICB3c2ljb250ZXh0ID0gd3N1aS5nZXRXU0lBUENvbnRleHQoKTsKLSAgICB3c2ljb250ZXh0LnVwZGF0ZVdTSUNvbXBsaWFuY2VzKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLSAgfSAgCi0gIAotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoVmFsaWRhdGVTdG9ja1F1b3RlV1NETFRlc3RDYXNlLmNsYXNzLCAiVmFsaWRhdGVTdG9ja1F1b3RlV1NETFRlc3RDYXNlIik7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3RWYWxpZGF0ZVN0b2NrUXVvdGVXU0RMKCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgdmFsaWRhdG9yID0gV1NETFZhbGlkYXRvci5nZXRJbnN0YW5jZSgpOwotICAgIFVSTCB3c2RsID0gUGVyZm9ybWFuY2VQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldEJ1bmRsZSgpLmdldEVudHJ5KCJkYXRhL1N0b2NrUXVvdGUvU3RvY2tRdW90ZS53c2RsIik7Ci0gICAgU3RyaW5nIHBhdGggPSB3c2RsLnRvU3RyaW5nKCk7Ci0KLSAgICBzdGFydE1lYXN1cmluZygpOwotICAgIHZhbGlkYXRvci52YWxpZGF0ZShwYXRoKTsKLSAgICBzdG9wTWVhc3VyaW5nKCk7Ci0gICAgY29tbWl0TWVhc3VyZW1lbnRzKCk7Ci0gICAgYXNzZXJ0UGVyZm9ybWFuY2UoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvVmFsaWRhdGVTdG9ja1F1b3RlV1NJVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL1ZhbGlkYXRlU3RvY2tRdW90ZVdTSVRlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZDVmYTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvVmFsaWRhdGVTdG9ja1F1b3RlV1NJVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2U7Ci0KLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZVRlc3RDYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZWNsaXBzZS5XU0RMVmFsaWRhdG9yOwotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGVTdG9ja1F1b3RlV1NJVGVzdENhc2UgZXh0ZW5kcyBQZXJmb3JtYW5jZVRlc3RDYXNlCi17Ci0gIHByaXZhdGUgV1NETFZhbGlkYXRvciB2YWxpZGF0b3I7Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3NldFVwKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiAKLSAgewotICAgIHN1cGVyLnNldFVwKCk7Ci0gICAgLy8gU2V0IHRoZSBXUy1JIHByZWZlcmVuY2UgdG8gaWdub3JlIHNvIG9ubHkgV1NETCBlcnJvcnMgd2lsbCBiZSB0ZXN0ZWQuCi0gICAgV1NQbHVnaW4gd3N1aSA9IFdTUGx1Z2luLmdldEluc3RhbmNlKCk7Ci0gICAgUGVyc2lzdGVudFdTSUNvbnRleHQgd3NpY29udGV4dCA9IHdzdWkuZ2V0V1NJU1NCUENvbnRleHQoKTsKLSAgICB3c2ljb250ZXh0LnVwZGF0ZVdTSUNvbXBsaWFuY2VzKFBlcnNpc3RlbnRXU0lDb250ZXh0LlNUT1BfTk9OX1dTSSk7Ci0gICAgd3NpY29udGV4dCA9IHdzdWkuZ2V0V1NJQVBDb250ZXh0KCk7Ci0gICAgd3NpY29udGV4dC51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5TVE9QX05PTl9XU0kpOwotICB9ICAKLSAgCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShWYWxpZGF0ZVN0b2NrUXVvdGVXU0lUZXN0Q2FzZS5jbGFzcywgIlZhbGlkYXRlU3RvY2tRdW90ZVdTSVRlc3RDYXNlIik7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3RWYWxpZGF0ZVN0b2NrUXVvdGVXU0koKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICB2YWxpZGF0b3IgPSBXU0RMVmFsaWRhdG9yLmdldEluc3RhbmNlKCk7Ci0gICAgVVJMIHdzZGwgPSBQZXJmb3JtYW5jZVBsdWdpbi5nZXREZWZhdWx0KCkuZ2V0QnVuZGxlKCkuZ2V0RW50cnkoImRhdGEvU3RvY2tRdW90ZS9TdG9ja1F1b3RlLndzZGwiKTsKLSAgICBTdHJpbmcgcGF0aCA9IHdzZGwudG9TdHJpbmcoKTsKLQotICAgIHN0YXJ0TWVhc3VyaW5nKCk7CQotICAgIHZhbGlkYXRvci52YWxpZGF0ZShwYXRoKTsKLSAgICBzdG9wTWVhc3VyaW5nKCk7Ci0gICAgY29tbWl0TWVhc3VyZW1lbnRzKCk7Ci0gICAgYXNzZXJ0UGVyZm9ybWFuY2UoKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2UvVmFsaWRhdGVXU0RMUHJvamVjdFRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9WYWxpZGF0ZVdTRExQcm9qZWN0VGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZkMjVhMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9WYWxpZGF0ZVdTRExQcm9qZWN0VGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUNvbnRhaW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVdvcmtzcGFjZVJ1bm5hYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsKLWltcG9ydCBvcmcuZWNsaXBzZS50ZXN0LnBlcmZvcm1hbmNlLkRpbWVuc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS50ZXN0LnBlcmZvcm1hbmNlLlBlcmZvcm1hbmNlVGVzdENhc2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwub3BlcmF0aW9ucy5PbmVWYWxpZGF0b3JPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUNvbnRleHQ7Ci0KLS8qKgotICogVGVzdCBmb3IgdmFsaWRhdGlvbiBvZiA1MCBXU0RMIGZpbGVzIGluIHRoZSBzYW1wbGUgd29ya3NwYWNlLgotICogCi0gKiBAYXV0aG9yIEtpaHVwIEJvbywgSUJNCi0gKi8KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZVdTRExQcm9qZWN0VGVzdENhc2UgZXh0ZW5kcyBQZXJmb3JtYW5jZVRlc3RDYXNlIHsKLQkKLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgewotCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShWYWxpZGF0ZVdTRExQcm9qZWN0VGVzdENhc2UuY2xhc3MsICJUZXN0Iik7Ci0JfQotCi0JLyoKLQkgKiAobm9uLUphdmFkb2MpCi0JICogCi0JICogQHNlZSBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2Ujc2V0VXAoKQotCSAqLwotCXByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JICAgIHN1cGVyLnNldFVwKCk7Ci0JCS8vIFNldCB0aGUgV1MtSSBwcmVmZXJlbmNlIHRvIGlnbm9yZSBzbyBXUy1JIHZhbGlkYXRpb24gd2lsbCBub3QgYmUgcnVuLgotCQlXU1BsdWdpbiB3c3VpID0gV1NQbHVnaW4uZ2V0SW5zdGFuY2UoKTsKLQkJUGVyc2lzdGVudFdTSUNvbnRleHQgd3NpY29udGV4dCA9IHdzdWkuZ2V0V1NJU1NCUENvbnRleHQoKTsKLQkJd3NpY29udGV4dC51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0JfQotCi0JcHVibGljIHZvaWQgdGVzdFdTRExQcm9qZWN0VmFsaWRhdGlvbigpIHRocm93cyBFeGNlcHRpb24gewotCQlTdHJpbmcgcHJvamVjdERpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgicHJvamVjdERpciIpOwotCQlBc3NlcnQuYXNzZXJ0Tm90TnVsbChwcm9qZWN0RGlyKTsKLQkJaWYgKCFwcm9qZWN0RGlyLmVuZHNXaXRoKCIvIikgJiYgIXByb2plY3REaXIuZW5kc1dpdGgoIlxcIikpCi0JCQlwcm9qZWN0RGlyID0gcHJvamVjdERpciArICIvIjsKLQkJRmlsZSBkaXIgPSBuZXcgRmlsZShwcm9qZWN0RGlyKTsKLQkJaWYgKGRpci5leGlzdHMoKSAmJiBkaXIuaXNEaXJlY3RvcnkoKSkgewotCQkJSVByb2plY3QgcHJvamVjdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0UHJvamVjdCgiV1NETFByb2plY3QiKTsKLQkJCXByb2plY3QuY3JlYXRlKG51bGwpOwotCQkJcHJvamVjdC5vcGVuKG51bGwpOwotCQkJY29weShkaXIsIHByb2plY3QpOwotCQkJam9pbkJhY2tncm91bmRKb2JzKCk7Ci0KLQkJCUlXb3Jrc3BhY2VSdW5uYWJsZSBteVJ1bm5hYmxlID0gbmV3IE9uZVZhbGlkYXRvck9wZXJhdGlvbigKLQkJCQkJcHJvamVjdCwKLSAgICAgICAgICBQZXJmb3JtYW5jZVBsdWdpbi5XU0RMX1ZBTElEQVRPUl9JRCwKLQkJCQkJdHJ1ZSwgCi0JCQkJCWZhbHNlKTsKLQkJCUlXb3Jrc3BhY2Ugd29ya3NwYWNlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpOwotCi0JCQl0YWdBc1N1bW1hcnkoIlZhbGlkYXRlIFdTREwgUHJvamVjdCIsIG5ldyBEaW1lbnNpb25bXSB7RGltZW5zaW9uLkVMQVBTRURfUFJPQ0VTUywgRGltZW5zaW9uLldPUktJTkdfU0VUIH0pOwotCQkJc3RhcnRNZWFzdXJpbmcoKTsKLQkJCXdvcmtzcGFjZS5ydW4obXlSdW5uYWJsZSwgbnVsbCk7Ci0JCQkvLyBwcm9qZWN0LmJ1aWxkKEluY3JlbWVudGFsUHJvamVjdEJ1aWxkZXIuQ0xFQU5fQlVJTEQsbnVsbCk7Ci0JCQlzdG9wTWVhc3VyaW5nKCk7Ci0JCQljb21taXRNZWFzdXJlbWVudHMoKTsKLQkJCWFzc2VydFBlcmZvcm1hbmNlKCk7Ci0JCX0gZWxzZQotCQkJZmFpbChkaXIudG9TdHJpbmcoKSk7Ci0JfQotCi0JcHJpdmF0ZSB2b2lkIGNvcHkoRmlsZSBzcmMsIElDb250YWluZXIgZGVzdCkgdGhyb3dzIENvcmVFeGNlcHRpb24sCi0JCQlGaWxlTm90Rm91bmRFeGNlcHRpb24gewotCQlGaWxlW10gY2hpbGRyZW4gPSBzcmMubGlzdEZpbGVzKCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKLQkJCVN0cmluZyBuYW1lID0gY2hpbGRyZW5baV0uZ2V0TmFtZSgpOwotCQkJaWYgKGNoaWxkcmVuW2ldLmlzRGlyZWN0b3J5KCkpIHsKLQkJCQlJRm9sZGVyIGZvbGRlciA9IGRlc3QuZ2V0Rm9sZGVyKG5ldyBQYXRoKG5hbWUpKTsKLQkJCQlmb2xkZXIuY3JlYXRlKHRydWUsIHRydWUsIG51bGwpOwotCQkJCWNvcHkoY2hpbGRyZW5baV0sIGZvbGRlcik7Ci0JCQl9IGVsc2UgewotCQkJCUlGaWxlIGZpbGUgPSBkZXN0LmdldEZpbGUobmV3IFBhdGgobmFtZSkpOwotCQkJCWZpbGUuY3JlYXRlKG5ldyBGaWxlSW5wdXRTdHJlYW0oY2hpbGRyZW5baV0pLCB0cnVlLCBudWxsKTsKLQkJCX0KLQkJfQotCX0KLQotCXByaXZhdGUgdm9pZCBqb2luQmFja2dyb3VuZEpvYnMoKSB7Ci0JCURpc3BsYXkuZ2V0RGVmYXVsdCgpLnN5bmNFeGVjKG5ldyBSdW5uYWJsZSgpIHsKLQkJCXB1YmxpYyB2b2lkIHJ1bigpIHsKLQkJCQl0cnkgewotCQkJCQlQbGF0Zm9ybS5nZXRKb2JNYW5hZ2VyKCkuam9pbigKLQkJCQkJCQlSZXNvdXJjZXNQbHVnaW4uRkFNSUxZX0FVVE9fQlVJTEQsIG51bGwpOwotCQkJCX0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKLQkJCQl9Ci0JCQkJbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwotCQkJCURpc3BsYXkgZGlzcGxheSA9IERpc3BsYXkuZ2V0RGVmYXVsdCgpOwotCQkJCXdoaWxlIChTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIHN0YXJ0IDwgNTAwMCkgewotCQkJCQlpZiAoIWRpc3BsYXkucmVhZEFuZERpc3BhdGNoKCkpIHsKLQkJCQkJCWRpc3BsYXkuc2xlZXAoKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfSk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvT3BlbjEwMEtCRmlsZVRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9PcGVuMTAwS0JGaWxlVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ3NjM4MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9PcGVuMTAwS0JGaWxlVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBPcGVuMTAwS0JGaWxlVGVzdENhc2UgZXh0ZW5kcyBPcGVuV1NETEVkaXRvclRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0RmlsZVBhdGgoKQotICB7Ci0gICAgcmV0dXJuICJkYXRhLzEwMEtCLndzZGwiOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW4xMDBLQkZpbGUoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0gICAgewotICAgICAgZmFpbCh0LmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9PcGVuMTBLQkZpbGVUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvT3BlbjEwS0JGaWxlVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTcxZmYxMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9PcGVuMTBLQkZpbGVUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLQotcHVibGljIGNsYXNzIE9wZW4xMEtCRmlsZVRlc3RDYXNlIGV4dGVuZHMgT3BlbldTRExFZGl0b3JUZXN0Q2FzZQotewotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVQYXRoKCkKLSAgewotICAgIHJldHVybiAiZGF0YS8xMEtCLndzZGwiOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW4xMEtCRmlsZSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzdXBlci5leGVjdXRlKCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLSAgICB7Ci0gICAgICBmYWlsKHQuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L09wZW4xS0JGaWxlVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L09wZW4xS0JGaWxlVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk2NmU0Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9PcGVuMUtCRmlsZVRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1wdWJsaWMgY2xhc3MgT3BlbjFLQkZpbGVUZXN0Q2FzZSBleHRlbmRzIE9wZW5XU0RMRWRpdG9yVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRGaWxlUGF0aCgpCi0gIHsKLSAgICByZXR1cm4gImRhdGEvMUtCLndzZGwiOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW4xS0JGaWxlKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvT3BlbjFNQkZpbGVUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvT3BlbjFNQkZpbGVUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDc0YzU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L09wZW4xTUJGaWxlVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBPcGVuMU1CRmlsZVRlc3RDYXNlIGV4dGVuZHMgT3BlbldTRExFZGl0b3JUZXN0Q2FzZQotewotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVQYXRoKCkKLSAgewotICAgIHJldHVybiAiZGF0YS8xTUIud3NkbCI7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0T3BlbjFNQkZpbGUoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0gICAgewotICAgICAgZmFpbCh0LmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9PcGVuMjAwS0JGaWxlVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L09wZW4yMDBLQkZpbGVUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTcyNjk2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L09wZW4yMDBLQkZpbGVUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLQotcHVibGljIGNsYXNzIE9wZW4yMDBLQkZpbGVUZXN0Q2FzZSBleHRlbmRzIE9wZW5XU0RMRWRpdG9yVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRGaWxlUGF0aCgpCi0gIHsKLSAgICByZXR1cm4gImRhdGEvMjAwS0Iud3NkbCI7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0T3BlbjIwMEtCRmlsZSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzdXBlci5leGVjdXRlKCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLSAgICB7Ci0gICAgICBmYWlsKHQuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L09wZW41MDBLQkZpbGVUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvT3BlbjUwMEtCRmlsZVRlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYjQxNDYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvT3BlbjUwMEtCRmlsZVRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1wdWJsaWMgY2xhc3MgT3BlbjUwMEtCRmlsZVRlc3RDYXNlIGV4dGVuZHMgT3BlbldTRExFZGl0b3JUZXN0Q2FzZQotewotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVQYXRoKCkKLSAgewotICAgIHJldHVybiAiZGF0YS81MDBLQi53c2RsIjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RPcGVuNTAwS0JGaWxlKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvT3BlbldTRExFZGl0b3JUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvT3BlbldTRExFZGl0b3JUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDQxM2Q2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L09wZW5XU0RMRWRpdG9yVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnRlc3RzLnBlcmZvcm1hbmNlLmludGVybmFsLnNjYWxhYmlsaXR5Lk9wZW5FZGl0b3JUZXN0Q2FzZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZVBsdWdpbjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIE9wZW5XU0RMRWRpdG9yVGVzdENhc2UgZXh0ZW5kcyBPcGVuRWRpdG9yVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRFZGl0b3JJZCgpCi0gIHsKLSAgICByZXR1cm4gUGVyZm9ybWFuY2VQbHVnaW4uV1NETF9FRElUT1JfSUQ7Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEJ1bmRsZUlkKCkKLSAgewotICAgIHJldHVybiBQZXJmb3JtYW5jZVBsdWdpbi5CVU5ETEVfSUQ7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdE9wZW5FZGl0b3J4MTAwVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdE9wZW5FZGl0b3J4MTAwVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThiM2M3Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRPcGVuRWRpdG9yeDEwMFRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1wdWJsaWMgY2xhc3MgUmVwZWF0T3BlbkVkaXRvcngxMDBUZXN0Q2FzZSBleHRlbmRzIFJlcGVhdE9wZW5XU0RMRWRpdG9yVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIGludCBnZXRSZXBlYXRDb3VudCgpCi0gIHsKLSAgICByZXR1cm4gMTAwOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW54MTAwKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0T3BlbkVkaXRvcngxMFRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRPcGVuRWRpdG9yeDEwVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ2ZWRmMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRPcGVuRWRpdG9yeDEwVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBSZXBlYXRPcGVuRWRpdG9yeDEwVGVzdENhc2UgZXh0ZW5kcyBSZXBlYXRPcGVuV1NETEVkaXRvclRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBpbnQgZ2V0UmVwZWF0Q291bnQoKQotICB7Ci0gICAgcmV0dXJuIDEwOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW54MTAoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0gICAgewotICAgICAgZmFpbCh0LmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRPcGVuRWRpdG9yeDFUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0T3BlbkVkaXRvcngxVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNjOGE1Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRPcGVuRWRpdG9yeDFUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLQotcHVibGljIGNsYXNzIFJlcGVhdE9wZW5FZGl0b3J4MVRlc3RDYXNlIGV4dGVuZHMgUmVwZWF0T3BlbldTRExFZGl0b3JUZXN0Q2FzZQotewotICBwcm90ZWN0ZWQgaW50IGdldFJlcGVhdENvdW50KCkKLSAgewotICAgIHJldHVybiAxOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW54MSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzdXBlci5leGVjdXRlKCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLSAgICB7Ci0gICAgICBmYWlsKHQuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdE9wZW5FZGl0b3J4MjVUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0T3BlbkVkaXRvcngyNVRlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NzVhN2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0T3BlbkVkaXRvcngyNVRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1wdWJsaWMgY2xhc3MgUmVwZWF0T3BlbkVkaXRvcngyNVRlc3RDYXNlIGV4dGVuZHMgUmVwZWF0T3BlbldTRExFZGl0b3JUZXN0Q2FzZQotewotICBwcm90ZWN0ZWQgaW50IGdldFJlcGVhdENvdW50KCkKLSAgewotICAgIHJldHVybiAyNTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RPcGVueDI1KCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0T3BlbkVkaXRvcng1MFRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRPcGVuRWRpdG9yeDUwVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWExNzI5OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRPcGVuRWRpdG9yeDUwVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBSZXBlYXRPcGVuRWRpdG9yeDUwVGVzdENhc2UgZXh0ZW5kcyBSZXBlYXRPcGVuV1NETEVkaXRvclRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBpbnQgZ2V0UmVwZWF0Q291bnQoKQotICB7Ci0gICAgcmV0dXJuIDUwOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW54NTAoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0gICAgewotICAgICAgZmFpbCh0LmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRPcGVuRWRpdG9yeDc1VGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdE9wZW5FZGl0b3J4NzVUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODg2NWQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdE9wZW5FZGl0b3J4NzVUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLQotcHVibGljIGNsYXNzIFJlcGVhdE9wZW5FZGl0b3J4NzVUZXN0Q2FzZSBleHRlbmRzIFJlcGVhdE9wZW5XU0RMRWRpdG9yVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIGludCBnZXRSZXBlYXRDb3VudCgpCi0gIHsKLSAgICByZXR1cm4gNzU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0T3Blbng3NSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzdXBlci5leGVjdXRlKCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLSAgICB7Ci0gICAgICBmYWlsKHQuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdE9wZW5XU0RMRWRpdG9yVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdE9wZW5XU0RMRWRpdG9yVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk1MjYzZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRPcGVuV1NETEVkaXRvclRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi50ZXN0cy5wZXJmb3JtYW5jZS5pbnRlcm5hbC5zY2FsYWJpbGl0eS5SZXBlYXRPcGVuRWRpdG9yVGVzdENhc2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UuUGVyZm9ybWFuY2VQbHVnaW47Ci0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBSZXBlYXRPcGVuV1NETEVkaXRvclRlc3RDYXNlIGV4dGVuZHMgUmVwZWF0T3BlbkVkaXRvclRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0RWRpdG9ySWQoKQotICB7Ci0gICAgcmV0dXJuIFBlcmZvcm1hbmNlUGx1Z2luLldTRExfRURJVE9SX0lEOwotICB9Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRCdW5kbGVJZCgpCi0gIHsKLSAgICByZXR1cm4gUGVyZm9ybWFuY2VQbHVnaW4uQlVORExFX0lEOwotICB9Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRGaWxlUGF0aCgpCi0gIHsKLSAgICByZXR1cm4gImRhdGEvMTAwS0Iud3NkbCI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdFJ1bldTRExWYWxpZGF0b3JUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0UnVuV1NETFZhbGlkYXRvclRlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMWRiNGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0UnVuV1NETFZhbGlkYXRvclRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0qIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0qIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0qIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0qCi0qIENvbnRyaWJ1dG9yczoKLSogSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAKLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnRlc3RzLnBlcmZvcm1hbmNlLmludGVybmFsLnNjYWxhYmlsaXR5LlJlcGVhdFJ1blZhbGlkYXRvclRlc3RDYXNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24udGVzdHMucGVyZm9ybWFuY2UuaW50ZXJuYWwudXRpbC5FZGl0b3JUZXN0SGVscGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLlZhbGlkYXRpb25GcmFtZXdvcms7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLmludGVybmFsLlZhbE1hbmFnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24uaW50ZXJuYWwuY29yZS5WYWxpZGF0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLlBlcmZvcm1hbmNlUGx1Z2luOwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgUmVwZWF0UnVuV1NETFZhbGlkYXRvclRlc3RDYXNlIGV4dGVuZHMgUmVwZWF0UnVuVmFsaWRhdG9yVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRWYWxpZGF0b3JJZCgpCi0gIHsKLSAgICByZXR1cm4gUGVyZm9ybWFuY2VQbHVnaW4uV1NETF9WQUxJREFUT1JfSUQ7Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEJ1bmRsZUlkKCkKLSAgewotICAgIHJldHVybiBQZXJmb3JtYW5jZVBsdWdpbi5CVU5ETEVfSUQ7Ci0gIH0KLQotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVQYXRoKCkKLSAgewotICAgIHJldHVybiAiZGF0YS8xMDBLQi53c2RsIjsKLSAgfQotICAKLSAgCi0JcHJvdGVjdGVkIHZvaWQgcnVuVmFsaWRhdG9yKElGaWxlIGZpbGUpIHRocm93cyBDb3JlRXhjZXB0aW9uLAotCQkJVmFsaWRhdGlvbkV4Y2VwdGlvbiB7Ci0KLQkJd2FpdEZvckpvYnMoKTsKLQkJdHVybm9mZk90aGVyVmFsaWRhdG9ycyhnZXRWYWxpZGF0b3JJZCgpKTsKLQotCQlWYWxpZGF0aW9uRnJhbWV3b3JrIHZmID0gVmFsaWRhdGlvbkZyYW1ld29yay5nZXREZWZhdWx0KCk7Ci0JCUlQcm9qZWN0W10gcHJvamVjdHMgPSB7IGZpbGUuZ2V0UHJvamVjdCgpIH07Ci0JCXRyeSB7Ci0JCQkvLyBqdXN0IHJ1biB2YWxpZGF0aW9uCi0JCQl2Zi52YWxpZGF0ZShwcm9qZWN0cywgdHJ1ZSwgZmFsc2UsIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotCQl9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLQkJCWZhaWwoZS5nZXRNZXNzYWdlKCkpOwotCQl9Ci0JfQotCi0JcHJpdmF0ZSB2b2lkIHdhaXRGb3JKb2JzKCkgewotCQl0cnkgewotCQkJRWRpdG9yVGVzdEhlbHBlci5qb2luQmFja2dyb3VuZEFjdGl2aXRpZXMoKTsKLQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQlmYWlsKGUuZ2V0TWVzc2FnZSgpKTsKLQkJfQotCX0KLQotCS8qKgotCSAqIFNpbmNlIG90aGVyIHBsdWctaW5zIGNhbiBhZGQgYW5kIHJlbW92ZSB2YWxpZGF0b3JzLCB0dXJuIG9mZiBhbGwgdGhlIG9uZXMKLQkgKiB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGVzZSB0ZXN0cy4KLQkgKi8KLQlwcml2YXRlIHZvaWQgdHVybm9mZk90aGVyVmFsaWRhdG9ycyhTdHJpbmcgaWQpIHsKLQkJVmFsaWRhdG9yW10gdmFscyA9IFZhbE1hbmFnZXIuZ2V0RGVmYXVsdCgpLmdldFZhbGlkYXRvcnMoKTsKLQkJaW50IGxlbmd0aCA9IHZhbHMubGVuZ3RoOwotCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0JCQlWYWxpZGF0b3IgdiA9IHZhbHNbaV07Ci0JCQlpZiAoIXYuZ2V0VmFsaWRhdG9yQ2xhc3NuYW1lKCkuc3RhcnRzV2l0aChpZCkpIHsKLQkJCQl2LnNldEJ1aWxkVmFsaWRhdGlvbihmYWxzZSk7Ci0JCQkJdi5zZXRNYW51YWxWYWxpZGF0aW9uKGZhbHNlKTsKLQkJCX0KLQkJfQotCX0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4MTAwVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdFZhbGlkYXRleDEwMFRlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NTU0ZmUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4MTAwVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBSZXBlYXRWYWxpZGF0ZXgxMDBUZXN0Q2FzZSBleHRlbmRzIFJlcGVhdFJ1bldTRExWYWxpZGF0b3JUZXN0Q2FzZQotewotICBwcm90ZWN0ZWQgaW50IGdldFJlcGVhdENvdW50KCkKLSAgewotICAgIHJldHVybiAxMDA7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0VmFsaWRhdGV4MTAwKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4MTBUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4MTBUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGI3YmIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdFZhbGlkYXRleDEwVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBSZXBlYXRWYWxpZGF0ZXgxMFRlc3RDYXNlIGV4dGVuZHMgUmVwZWF0UnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBpbnQgZ2V0UmVwZWF0Q291bnQoKQotICB7Ci0gICAgcmV0dXJuIDEwOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFZhbGlkYXRleDEwKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4MVRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRWYWxpZGF0ZXgxVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIyMTE2NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SZXBlYXRWYWxpZGF0ZXgxVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBSZXBlYXRWYWxpZGF0ZXgxVGVzdENhc2UgZXh0ZW5kcyBSZXBlYXRSdW5XU0RMVmFsaWRhdG9yVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIGludCBnZXRSZXBlYXRDb3VudCgpCi0gIHsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RWYWxpZGF0ZXgxKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4MjVUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4MjVUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODc3ZDY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdFZhbGlkYXRleDI1VGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBSZXBlYXRWYWxpZGF0ZXgyNVRlc3RDYXNlIGV4dGVuZHMgUmVwZWF0UnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBpbnQgZ2V0UmVwZWF0Q291bnQoKQotICB7Ci0gICAgcmV0dXJuIDI1OwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFZhbGlkYXRleDI1KCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4NTBUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4NTBUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGJkMTRjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdFZhbGlkYXRleDUwVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBSZXBlYXRWYWxpZGF0ZXg1MFRlc3RDYXNlIGV4dGVuZHMgUmVwZWF0UnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBpbnQgZ2V0UmVwZWF0Q291bnQoKQotICB7Ci0gICAgcmV0dXJuIDUwOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFZhbGlkYXRleDUwKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4NzVUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUmVwZWF0VmFsaWRhdGV4NzVUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2NiYjYwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1JlcGVhdFZhbGlkYXRleDc1VGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBSZXBlYXRWYWxpZGF0ZXg3NVRlc3RDYXNlIGV4dGVuZHMgUmVwZWF0UnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBpbnQgZ2V0UmVwZWF0Q291bnQoKQotICB7Ci0gICAgcmV0dXJuIDc1OwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFZhbGlkYXRleDc1KCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvUnVuV1NETFZhbGlkYXRvclRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SdW5XU0RMVmFsaWRhdG9yVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY2N2MwMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9SdW5XU0RMVmFsaWRhdG9yVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qIENvcHlyaWdodCAoYykgMjAwNiwgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSoKLSogQ29udHJpYnV0b3JzOgotKiBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIAotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi50ZXN0cy5wZXJmb3JtYW5jZS5pbnRlcm5hbC5zY2FsYWJpbGl0eS5SdW5WYWxpZGF0b3JUZXN0Q2FzZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnRlc3RzLnBlcmZvcm1hbmNlLmludGVybmFsLnV0aWwuRWRpdG9yVGVzdEhlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbi5WYWxpZGF0aW9uRnJhbWV3b3JrOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLlZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbi5pbnRlcm5hbC5WYWxNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLmludGVybmFsLmNvcmUuVmFsaWRhdGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZVBsdWdpbjsKLQotcHVibGljIGFic3RyYWN0IGNsYXNzIFJ1bldTRExWYWxpZGF0b3JUZXN0Q2FzZSBleHRlbmRzIFJ1blZhbGlkYXRvclRlc3RDYXNlCi17Ci0KLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRWYWxpZGF0b3JJZCgpCi0gIHsKLSAgICAgIHJldHVybiBQZXJmb3JtYW5jZVBsdWdpbi5XU0RMX1ZBTElEQVRPUl9JRDsKLSAgfQotCi0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0QnVuZGxlSWQoKQotICB7Ci0gICAgICByZXR1cm4gUGVyZm9ybWFuY2VQbHVnaW4uQlVORExFX0lEOwotICB9Ci0KLQotCXByb3RlY3RlZCB2b2lkIHJ1blZhbGlkYXRvcihJRmlsZSBmaWxlKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiwKLQkJCVZhbGlkYXRpb25FeGNlcHRpb24gewotCi0JCXdhaXRGb3JKb2JzKCk7Ci0JCXR1cm5vZmZPdGhlclZhbGlkYXRvcnMoZ2V0VmFsaWRhdG9ySWQoKSk7Ci0KLQkJVmFsaWRhdGlvbkZyYW1ld29yayB2ZiA9IFZhbGlkYXRpb25GcmFtZXdvcmsuZ2V0RGVmYXVsdCgpOwotCQlJUHJvamVjdFtdIHByb2plY3RzID0geyBmaWxlLmdldFByb2plY3QoKSB9OwotCQl0cnkgewotCQkJLy8ganVzdCBydW4gdmFsaWRhdGlvbgotCQkJdmYudmFsaWRhdGUocHJvamVjdHMsIHRydWUsIGZhbHNlLCBuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLQkJfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBlKSB7Ci0JCQlmYWlsKGUuZ2V0TWVzc2FnZSgpKTsKLQkJfQotCX0KLQotCXByaXZhdGUgdm9pZCB3YWl0Rm9ySm9icygpIHsKLQkJdHJ5IHsKLQkJCUVkaXRvclRlc3RIZWxwZXIuam9pbkJhY2tncm91bmRBY3Rpdml0aWVzKCk7Ci0JCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotCQkJZmFpbChlLmdldE1lc3NhZ2UoKSk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBTaW5jZSBvdGhlciBwbHVnLWlucyBjYW4gYWRkIGFuZCByZW1vdmUgdmFsaWRhdG9ycywgdHVybiBvZmYgYWxsIHRoZSBvbmVzCi0JICogdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlc2UgdGVzdHMuCi0JICovCi0JcHJpdmF0ZSB2b2lkIHR1cm5vZmZPdGhlclZhbGlkYXRvcnMoU3RyaW5nIGlkKSB7Ci0JCVZhbGlkYXRvcltdIHZhbHMgPSBWYWxNYW5hZ2VyLmdldERlZmF1bHQoKS5nZXRWYWxpZGF0b3JzKCk7Ci0JCWludCBsZW5ndGggPSB2YWxzLmxlbmd0aDsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotCQkJVmFsaWRhdG9yIHYgPSB2YWxzW2ldOwotCQkJaWYgKCF2LmdldFZhbGlkYXRvckNsYXNzbmFtZSgpLnN0YXJ0c1dpdGgoaWQpKSB7Ci0JCQkJdi5zZXRCdWlsZFZhbGlkYXRpb24oZmFsc2UpOwotCQkJCXYuc2V0TWFudWFsVmFsaWRhdGlvbihmYWxzZSk7Ci0JCQl9Ci0JCX0KLQl9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMDBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMDBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMjA3NjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMDAwV1NETHNDcm9zc0RlcGVuZHNUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUNvbnRleHQ7Ci0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZTEwMDBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlIGV4dGVuZHMgUnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0JcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJQVBDb250ZXh0KCkudXBkYXRlV1NJQ29tcGxpYW5jZXMoUGVyc2lzdGVudFdTSUNvbnRleHQuSUdOT1JFX05PTl9XU0kpOwotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJU1NCUENvbnRleHQoKS51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0JICAgIElQcm9qZWN0IHByb2plY3QgPSBjcmVhdGVQcm9qZWN0KCJzcCIpOwotCSAgICBTdHJpbmcgYnVuZGxlSWQgPSBnZXRCdW5kbGVJZCgpOwotCSAgICBmb3IoaW50IGkgPSAxOyBpIDwgMTAwMDsgaSsrKQotCSAgICB7Ci0JICAgICAgY29weUZpbGUoYnVuZGxlSWQsICJkYXRhLzEwMDBXU0RMc0Nyb3NzRGVwZW5kcy9zYW1wbGUiICsgaSArIi53c2RsIiwgcHJvamVjdCk7Ci0JICAgIH0KLQkgICAgc3VwZXIuc2V0VXAoKTsKLQl9Ci0KLQlwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVQYXRoKCkKLQl7Ci0JICAgIHJldHVybiAiZGF0YS8xMDAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMC53c2RsIjsKLQl9Ci0JCi0JcHVibGljIHZvaWQgdGVzdFZhbGlkYXRlMTAwMFdTRExzQ3Jvc3NEZXBlbmRzKCkKLQl7Ci0JICAgIHRyeQotCSAgICB7Ci0JICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotCSAgICB9Ci0JICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLQkgICAgewotCSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotCSAgICB9Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMDBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMDBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMWVlODYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMDAwV1NETHNOb0RlcGVuZHNUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUNvbnRleHQ7Ci0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZTEwMDBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlIGV4dGVuZHMgUnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0JcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJQVBDb250ZXh0KCkudXBkYXRlV1NJQ29tcGxpYW5jZXMoUGVyc2lzdGVudFdTSUNvbnRleHQuSUdOT1JFX05PTl9XU0kpOwotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJU1NCUENvbnRleHQoKS51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0JICAgIElQcm9qZWN0IHByb2plY3QgPSBjcmVhdGVQcm9qZWN0KCJzcCIpOwotCSAgICBTdHJpbmcgYnVuZGxlSWQgPSBnZXRCdW5kbGVJZCgpOwotCSAgICBmb3IoaW50IGkgPSAxOyBpIDwgMTAwMDsgaSsrKQotCSAgICB7Ci0JICAgICAgY29weUZpbGUoYnVuZGxlSWQsICJkYXRhLzEwMDBXU0RMc05vRGVwZW5kcy9zYW1wbGUiICsgaSArIi53c2RsIiwgcHJvamVjdCk7Ci0JICAgIH0KLQkgICAgc3VwZXIuc2V0VXAoKTsKLQl9Ci0KLQlwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVQYXRoKCkKLQl7Ci0JICAgIHJldHVybiAiZGF0YS8xMDAwV1NETHNOb0RlcGVuZHMvc2FtcGxlMC53c2RsIjsKLQl9Ci0JCi0JcHVibGljIHZvaWQgdGVzdFZhbGlkYXRlMTAwMFdTRExzTm9EZXBlbmRzKCkKLQl7Ci0JICAgIHRyeQotCSAgICB7Ci0JICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotCSAgICB9Ci0JICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLQkgICAgewotCSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotCSAgICB9Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMDBXU0RMc1hTRERlcGVuZHNUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMDAwV1NETHNYU0REZXBlbmRzVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM0MzI4NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMDBXU0RMc1hTRERlcGVuZHNUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUNvbnRleHQ7Ci0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZTEwMDBXU0RMc1hTRERlcGVuZHNUZXN0Q2FzZSBleHRlbmRzIFJ1bldTRExWYWxpZGF0b3JUZXN0Q2FzZQotewotCXByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJV1NQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldFdTSUFQQ29udGV4dCgpLnVwZGF0ZVdTSUNvbXBsaWFuY2VzKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLQkJV1NQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldFdTSVNTQlBDb250ZXh0KCkudXBkYXRlV1NJQ29tcGxpYW5jZXMoUGVyc2lzdGVudFdTSUNvbnRleHQuSUdOT1JFX05PTl9XU0kpOwotCSAgICBJUHJvamVjdCBwcm9qZWN0ID0gY3JlYXRlUHJvamVjdCgic3AiKTsKLQkgICAgU3RyaW5nIGJ1bmRsZUlkID0gZ2V0QnVuZGxlSWQoKTsKLQkgICAgZm9yKGludCBpID0gMTsgaSA8IDEwMDA7IGkrKykKLQkgICAgewotCSAgICAgIGNvcHlGaWxlKGJ1bmRsZUlkLCAiZGF0YS8xMDAwV1NETHNYU0REZXBlbmRzL3NhbXBsZSIgKyBpICsiLndzZGwiLCBwcm9qZWN0KTsKLQkgICAgfQotCSAgICBzdXBlci5zZXRVcCgpOwotCX0KLQotCXByb3RlY3RlZCBTdHJpbmcgZ2V0RmlsZVBhdGgoKQotCXsKLQkgICAgcmV0dXJuICJkYXRhLzEwMDBXU0RMc1hTRERlcGVuZHMvc2FtcGxlMC53c2RsIjsKLQl9Ci0JCi0JcHVibGljIHZvaWQgdGVzdFZhbGlkYXRlMTAwMFdTRExzWFNERGVwZW5kcygpCi0JewotCSAgICB0cnkKLQkgICAgewotCSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLQkgICAgfQotCSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0JICAgIHsKLQkgICAgICBmYWlsKHQuZ2V0TWVzc2FnZSgpKTsKLQkgICAgfQotCX0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMDBLQkZpbGVUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMDBLQkZpbGVUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODVkODEzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMTAwS0JGaWxlVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLQotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGUxMDBLQkZpbGVUZXN0Q2FzZSBleHRlbmRzIFJ1bldTRExWYWxpZGF0b3JUZXN0Q2FzZQotewotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVQYXRoKCkKLSAgewotICAgIHJldHVybiAiZGF0YS8xMDBLQi53c2RsIjsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RPcGVuMTAwS0JGaWxlKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMDBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMFdTRExzQ3Jvc3NEZXBlbmRzVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMzN2MzNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMFdTRExzQ3Jvc3NEZXBlbmRzVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lDb250ZXh0OwotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGUxMDBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlIGV4dGVuZHMgUnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0JcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJQVBDb250ZXh0KCkudXBkYXRlV1NJQ29tcGxpYW5jZXMoUGVyc2lzdGVudFdTSUNvbnRleHQuSUdOT1JFX05PTl9XU0kpOwotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJU1NCUENvbnRleHQoKS51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0JICAgIElQcm9qZWN0IHByb2plY3QgPSBjcmVhdGVQcm9qZWN0KCJzcCIpOwotCSAgICBTdHJpbmcgYnVuZGxlSWQgPSBnZXRCdW5kbGVJZCgpOwotCSAgICBmb3IoaW50IGkgPSAxOyBpIDwgMTAwOyBpKyspCi0JICAgIHsKLQkgICAgICBjb3B5RmlsZShidW5kbGVJZCwgImRhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlIiArIGkgKyIud3NkbCIsIHByb2plY3QpOwotCSAgICB9Ci0JICAgIHN1cGVyLnNldFVwKCk7Ci0JfQotCi0JcHJvdGVjdGVkIFN0cmluZyBnZXRGaWxlUGF0aCgpCi0JewotCSAgICByZXR1cm4gImRhdGEvMTAwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMC53c2RsIjsKLQl9Ci0JCi0JcHVibGljIHZvaWQgdGVzdFZhbGlkYXRlMTAwV1NETHNDcm9zc0RlcGVuZHMoKQotCXsKLQkgICAgdHJ5Ci0JICAgIHsKLQkgICAgICBzdXBlci5leGVjdXRlKCk7Ci0JICAgIH0KLQkgICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotCSAgICB7Ci0JICAgICAgZmFpbCh0LmdldE1lc3NhZ2UoKSk7Ci0JICAgIH0KLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMTAwV1NETHNOb0RlcGVuZHNUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMDBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0OWNjM2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMDBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlcy5QZXJzaXN0ZW50V1NJQ29udGV4dDsKLQotcHVibGljIGNsYXNzIFZhbGlkYXRlMTAwV1NETHNOb0RlcGVuZHNUZXN0Q2FzZSBleHRlbmRzIFJ1bldTRExWYWxpZGF0b3JUZXN0Q2FzZQotewotCXByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbgotCXsKLQkJV1NQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldFdTSUFQQ29udGV4dCgpLnVwZGF0ZVdTSUNvbXBsaWFuY2VzKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLQkJV1NQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldFdTSVNTQlBDb250ZXh0KCkudXBkYXRlV1NJQ29tcGxpYW5jZXMoUGVyc2lzdGVudFdTSUNvbnRleHQuSUdOT1JFX05PTl9XU0kpOwotCSAgICBJUHJvamVjdCBwcm9qZWN0ID0gY3JlYXRlUHJvamVjdCgic3AiKTsKLQkgICAgU3RyaW5nIGJ1bmRsZUlkID0gZ2V0QnVuZGxlSWQoKTsKLQkgICAgZm9yKGludCBpID0gMTsgaSA8IDEwMDsgaSsrKQotCSAgICB7Ci0JICAgICAgY29weUZpbGUoYnVuZGxlSWQsICJkYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZSIgKyBpICsiLndzZGwiLCBwcm9qZWN0KTsKLQkgICAgfQotCSAgICBzdXBlci5zZXRVcCgpOwotCX0KLQotCXByb3RlY3RlZCBTdHJpbmcgZ2V0RmlsZVBhdGgoKQotCXsKLQkgICAgcmV0dXJuICJkYXRhLzEwMFdTRExzTm9EZXBlbmRzL3NhbXBsZTAud3NkbCI7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHRlc3RWYWxpZGF0ZTEwMFdTRExzTm9EZXBlbmRzKCkKLQl7Ci0JICAgIHRyeQotCSAgICB7Ci0JICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotCSAgICB9Ci0JICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLQkgICAgewotCSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotCSAgICB9Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNTM3YTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMDBXU0RMc1hTRERlcGVuZHNUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUNvbnRleHQ7Ci0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZTEwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlIGV4dGVuZHMgUnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0JcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJQVBDb250ZXh0KCkudXBkYXRlV1NJQ29tcGxpYW5jZXMoUGVyc2lzdGVudFdTSUNvbnRleHQuSUdOT1JFX05PTl9XU0kpOwotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJU1NCUENvbnRleHQoKS51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0JICAgIElQcm9qZWN0IHByb2plY3QgPSBjcmVhdGVQcm9qZWN0KCJzcCIpOwotCSAgICBTdHJpbmcgYnVuZGxlSWQgPSBnZXRCdW5kbGVJZCgpOwotCSAgICBmb3IoaW50IGkgPSAxOyBpIDwgMTAwOyBpKyspCi0JICAgIHsKLQkgICAgICBjb3B5RmlsZShidW5kbGVJZCwgImRhdGEvMTAwV1NETHNYU0REZXBlbmRzL3NhbXBsZSIgKyBpICsiLndzZGwiLCBwcm9qZWN0KTsKLQkgICAgfQotCSAgICBzdXBlci5zZXRVcCgpOwotCX0KLQotCXByb3RlY3RlZCBTdHJpbmcgZ2V0RmlsZVBhdGgoKQotCXsKLQkgICAgcmV0dXJuICJkYXRhLzEwMFdTRExzWFNERGVwZW5kcy9zYW1wbGUwLnhzZCI7Ci0JfQotCQotCXB1YmxpYyB2b2lkIHRlc3RWYWxpZGF0ZTEwMFdTRExzWFNERGVwZW5kcygpCi0JewotCSAgICB0cnkKLQkgICAgewotCSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLQkgICAgfQotCSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0JICAgIHsKLQkgICAgICBmYWlsKHQuZ2V0TWVzc2FnZSgpKTsKLQkgICAgfQotCX0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMEtCRmlsZVRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwS0JGaWxlVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThkMjIzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwS0JGaWxlVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLQotcHVibGljIGNsYXNzIFZhbGlkYXRlMTBLQkZpbGVUZXN0Q2FzZSBleHRlbmRzIFJ1bldTRExWYWxpZGF0b3JUZXN0Q2FzZQotewotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVQYXRoKCkKLSAgewotICAgIHJldHVybiAiZGF0YS8xMEtCLndzZGwiOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW4xMEtCRmlsZSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzdXBlci5leGVjdXRlKCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLSAgICB7Ci0gICAgICBmYWlsKHQuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMTBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwV1NETHNDcm9zc0RlcGVuZHNUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2Y4MDUwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMTBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucGx1Z2luLldTUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wcmVmZXJlbmNlcy5QZXJzaXN0ZW50V1NJQ29udGV4dDsKLQotcHVibGljIGNsYXNzIFZhbGlkYXRlMTBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlIGV4dGVuZHMgUnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0JcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uCi0JewotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJQVBDb250ZXh0KCkudXBkYXRlV1NJQ29tcGxpYW5jZXMoUGVyc2lzdGVudFdTSUNvbnRleHQuSUdOT1JFX05PTl9XU0kpOwotCQlXU1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0V1NJU1NCUENvbnRleHQoKS51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0JICAgIElQcm9qZWN0IHByb2plY3QgPSBjcmVhdGVQcm9qZWN0KCJzcCIpOwotCSAgICBTdHJpbmcgYnVuZGxlSWQgPSBnZXRCdW5kbGVJZCgpOwotCSAgICBmb3IoaW50IGkgPSAxOyBpIDwgMTA7IGkrKykKLQkgICAgewotCSAgICAgIGNvcHlGaWxlKGJ1bmRsZUlkLCAiZGF0YS8xMFdTRExzQ3Jvc3NEZXBlbmRzL3NhbXBsZSIgKyBpICsiLndzZGwiLCBwcm9qZWN0KTsKLQkgICAgfQotCSAgICBzdXBlci5zZXRVcCgpOwotCX0KLQotCXByb3RlY3RlZCBTdHJpbmcgZ2V0RmlsZVBhdGgoKQotCXsKLQkgICAgcmV0dXJuICJkYXRhLzEwV1NETHNDcm9zc0RlcGVuZHMvc2FtcGxlMC53c2RsIjsKLQl9Ci0JCi0JcHVibGljIHZvaWQgdGVzdFZhbGlkYXRlMTBXU0RMc0Nyb3NzRGVwZW5kcygpCi0JewotCSAgICB0cnkKLQkgICAgewotCSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLQkgICAgfQotCSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0JICAgIHsKLQkgICAgICBmYWlsKHQuZ2V0TWVzc2FnZSgpKTsKLQkgICAgfQotCX0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMFdTRExzTm9EZXBlbmRzVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMTBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMWY5MzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxMFdTRExzTm9EZXBlbmRzVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lDb250ZXh0OwotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGUxMFdTRExzTm9EZXBlbmRzVGVzdENhc2UgZXh0ZW5kcyBSdW5XU0RMVmFsaWRhdG9yVGVzdENhc2UKLXsKLQlwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCVdTUGx1Z2luLmdldERlZmF1bHQoKS5nZXRXU0lBUENvbnRleHQoKS51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0JCVdTUGx1Z2luLmdldERlZmF1bHQoKS5nZXRXU0lTU0JQQ29udGV4dCgpLnVwZGF0ZVdTSUNvbXBsaWFuY2VzKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLQkgICAgSVByb2plY3QgcHJvamVjdCA9IGNyZWF0ZVByb2plY3QoInNwIik7Ci0JICAgIFN0cmluZyBidW5kbGVJZCA9IGdldEJ1bmRsZUlkKCk7Ci0JICAgIGZvcihpbnQgaSA9IDE7IGkgPCAxMDsgaSsrKQotCSAgICB7Ci0JICAgICAgY29weUZpbGUoYnVuZGxlSWQsICJkYXRhLzEwV1NETHNOb0RlcGVuZHMvc2FtcGxlIiArIGkgKyIud3NkbCIsIHByb2plY3QpOwotCSAgICB9Ci0JICAgIHN1cGVyLnNldFVwKCk7Ci0JfQotCi0JcHJvdGVjdGVkIFN0cmluZyBnZXRGaWxlUGF0aCgpCi0JewotCSAgICByZXR1cm4gImRhdGEvMTBXU0RMc05vRGVwZW5kcy9zYW1wbGUwLndzZGwiOwotCX0KLQkKLQlwdWJsaWMgdm9pZCB0ZXN0VmFsaWRhdGUxMFdTRExzTm9EZXBlbmRzKCkKLQl7Ci0JICAgIHRyeQotCSAgICB7Ci0JICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotCSAgICB9Ci0JICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLQkgICAgewotCSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotCSAgICB9Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTEwV1NETHNYU0REZXBlbmRzVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMTBXU0RMc1hTRERlcGVuZHNUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmEyOTZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMTBXU0RMc1hTRERlcGVuZHNUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnBsdWdpbi5XU1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3MuaW50ZXJuYWwucHJlZmVyZW5jZXMuUGVyc2lzdGVudFdTSUNvbnRleHQ7Ci0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZTEwV1NETHNYU0REZXBlbmRzVGVzdENhc2UgZXh0ZW5kcyBSdW5XU0RMVmFsaWRhdG9yVGVzdENhc2UKLXsKLQlwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24KLQl7Ci0JCVdTUGx1Z2luLmdldERlZmF1bHQoKS5nZXRXU0lBUENvbnRleHQoKS51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0JCVdTUGx1Z2luLmdldERlZmF1bHQoKS5nZXRXU0lTU0JQQ29udGV4dCgpLnVwZGF0ZVdTSUNvbXBsaWFuY2VzKFBlcnNpc3RlbnRXU0lDb250ZXh0LklHTk9SRV9OT05fV1NJKTsKLQkgICAgSVByb2plY3QgcHJvamVjdCA9IGNyZWF0ZVByb2plY3QoInNwIik7Ci0JICAgIFN0cmluZyBidW5kbGVJZCA9IGdldEJ1bmRsZUlkKCk7Ci0JICAgIGZvcihpbnQgaSA9IDE7IGkgPCAxMDsgaSsrKQotCSAgICB7Ci0JICAgICAgY29weUZpbGUoYnVuZGxlSWQsICJkYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZSIgKyBpICsiLndzZGwiLCBwcm9qZWN0KTsKLQkgICAgfQotCSAgICBzdXBlci5zZXRVcCgpOwotCX0KLQotCXByb3RlY3RlZCBTdHJpbmcgZ2V0RmlsZVBhdGgoKQotCXsKLQkgICAgcmV0dXJuICJkYXRhLzEwV1NETHNYU0REZXBlbmRzL3NhbXBsZTAueHNkIjsKLQl9Ci0JCi0JcHVibGljIHZvaWQgdGVzdFZhbGlkYXRlMTBXU0RMc1hTRERlcGVuZHMoKQotCXsKLQkgICAgdHJ5Ci0JICAgIHsKLQkgICAgICBzdXBlci5leGVjdXRlKCk7Ci0JICAgIH0KLQkgICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotCSAgICB7Ci0JICAgICAgZmFpbCh0LmdldE1lc3NhZ2UoKSk7Ci0JICAgIH0KLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMUtCRmlsZVRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTFLQkZpbGVUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWUzODBhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMUtCRmlsZVRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZTFLQkZpbGVUZXN0Q2FzZSBleHRlbmRzIFJ1bldTRExWYWxpZGF0b3JUZXN0Q2FzZQotewotICBwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVQYXRoKCkKLSAgewotICAgIHJldHVybiAiZGF0YS8xS0Iud3NkbCI7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0T3BlbjFLQkZpbGUoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0gICAgewotICAgICAgZmFpbCh0LmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTFNQkZpbGVUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUxTUJGaWxlVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU4Nzc5OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTFNQkZpbGVUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1wdWJsaWMgY2xhc3MgVmFsaWRhdGUxTUJGaWxlVGVzdENhc2UgZXh0ZW5kcyBSdW5XU0RMVmFsaWRhdG9yVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRGaWxlUGF0aCgpCi0gIHsKLSAgICByZXR1cm4gImRhdGEvMU1CLndzZGwiOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW4xTUJGaWxlKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHN1cGVyLmV4ZWN1dGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiB0KQotICAgIHsKLSAgICAgIGZhaWwodC5nZXRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUyMDBLQkZpbGVUZXN0Q2FzZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvVmFsaWRhdGUyMDBLQkZpbGVUZXN0Q2FzZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjg1MWQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlMjAwS0JGaWxlVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eTsKLQotcHVibGljIGNsYXNzIFZhbGlkYXRlMjAwS0JGaWxlVGVzdENhc2UgZXh0ZW5kcyBSdW5XU0RMVmFsaWRhdG9yVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBnZXRGaWxlUGF0aCgpCi0gIHsKLSAgICByZXR1cm4gImRhdGEvMjAwS0Iud3NkbCI7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0T3BlbjIwMEtCRmlsZSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBzdXBlci5leGVjdXRlKCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gdCkKLSAgICB7Ci0gICAgICBmYWlsKHQuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlNTAwS0JGaWxlVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3BlcmZvcm1hbmNlL3NjYWxhYmlsaXR5L1ZhbGlkYXRlNTAwS0JGaWxlVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEyY2IyYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9WYWxpZGF0ZTUwMEtCRmlsZVRlc3RDYXNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHk7Ci0KLXB1YmxpYyBjbGFzcyBWYWxpZGF0ZTUwMEtCRmlsZVRlc3RDYXNlIGV4dGVuZHMgUnVuV1NETFZhbGlkYXRvclRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0RmlsZVBhdGgoKQotICB7Ci0gICAgcmV0dXJuICJkYXRhLzUwMEtCLndzZGwiOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE9wZW41MDBLQkZpbGUoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgc3VwZXIuZXhlY3V0ZSgpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIHQpCi0gICAgewotICAgICAgZmFpbCh0LmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9XU0RMU2NhbGFiaWxpdHlUZXN0cy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvcGVyZm9ybWFuY2Uvc2NhbGFiaWxpdHkvV1NETFNjYWxhYmlsaXR5VGVzdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI2N2E5ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9wZXJmb3JtYW5jZS9zY2FsYWJpbGl0eS9XU0RMU2NhbGFiaWxpdHlUZXN0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIKAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ29tbW9uIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbAotIKAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5OwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotcHVibGljIGNsYXNzIFdTRExTY2FsYWJpbGl0eVRlc3RzCi17Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoIlRlc3QgZm9yIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5Iik7Ci0gICAgLy8kSlVuaXQtQkVHSU4kCi0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFJlcGVhdFZhbGlkYXRleDc1VGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShSZXBlYXRPcGVuRWRpdG9yeDI1VGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShSZXBlYXRPcGVuRWRpdG9yeDFUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFJlcGVhdE9wZW5FZGl0b3J4MTAwVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShSZXBlYXRPcGVuRWRpdG9yeDUwVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShSZXBlYXRPcGVuRWRpdG9yeDEwVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShPcGVuMjAwS0JGaWxlVGVzdENhc2UuY2xhc3MpOwotLy8gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFZhbGlkYXRlMTAwMFdTRExzQ3Jvc3NEZXBlbmRzVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShWYWxpZGF0ZTEwV1NETHNDcm9zc0RlcGVuZHNUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFZhbGlkYXRlMTAwV1NETHNDcm9zc0RlcGVuZHNUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFZhbGlkYXRlMjAwS0JGaWxlVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShSZXBlYXRWYWxpZGF0ZXgxMDBUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFJlcGVhdFZhbGlkYXRleDFUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFJlcGVhdFZhbGlkYXRleDI1VGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShSZXBlYXRWYWxpZGF0ZXg1MFRlc3RDYXNlLmNsYXNzKTsKLSAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoUmVwZWF0VmFsaWRhdGV4MTBUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFZhbGlkYXRlMTAwV1NETHNYU0REZXBlbmRzVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShWYWxpZGF0ZTEwV1NETHNYU0REZXBlbmRzVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShWYWxpZGF0ZTFNQkZpbGVUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFJlcGVhdE9wZW5FZGl0b3J4NzVUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKE9wZW4xTUJGaWxlVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShPcGVuMTBLQkZpbGVUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKE9wZW4xS0JGaWxlVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShPcGVuMTAwS0JGaWxlVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShPcGVuNTAwS0JGaWxlVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShWYWxpZGF0ZTEwMFdTRExzTm9EZXBlbmRzVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShWYWxpZGF0ZTUwMEtCRmlsZVRlc3RDYXNlLmNsYXNzKTsKLSAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoVmFsaWRhdGUxMDBLQkZpbGVUZXN0Q2FzZS5jbGFzcyk7Ci0gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFZhbGlkYXRlMUtCRmlsZVRlc3RDYXNlLmNsYXNzKTsKLS8vICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShWYWxpZGF0ZTEwMDBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlLmNsYXNzKTsKLSAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoVmFsaWRhdGUxMFdTRExzTm9EZXBlbmRzVGVzdENhc2UuY2xhc3MpOwotICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShWYWxpZGF0ZTEwS0JGaWxlVGVzdENhc2UuY2xhc3MpOwotLy8gICAgc3VpdGUuYWRkVGVzdFN1aXRlKFZhbGlkYXRlMTAwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlLmNsYXNzKTsKLSAgICAvLyRKVW5pdC1FTkQkCi0gICAgcmV0dXJuIHN1aXRlOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlL3BsdWdpbi5wcm9wZXJ0aWVzIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ZDBmZDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBwcm9wZXJ0aWVzIGZpbGUgZm9yIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlCi1CdW5kbGUtTmFtZS4wID0gV1NETCBQZXJmb3JtYW5jZSBQbHVnLWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UvdGVzdC54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS90ZXN0LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAzZWY0NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS90ZXN0LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDY0NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4KLQotPHByb2plY3QgbmFtZT0idGVzdHN1aXRlIiBkZWZhdWx0PSJwZXJmb3JtYW5jZSIgYmFzZWRpcj0iLiI+Ci0gIDwhLS0gc2V0cyB0aGUgcHJvcGVydGllcyBlY2xpcHNlLWhvbWUsIGFuZCBsaWJyYXJ5LWZpbGUgLS0+Ci0gIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlIi8+Ci0gIDxwcm9wZXJ0eSBuYW1lPSJsaWJyYXJ5LWZpbGUiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vcGx1Z2lucy9vcmcuZWNsaXBzZS50ZXN0XzMuMS4wL2xpYnJhcnkueG1sIi8+Ci0gIDxwcm9wZXJ0eSBuYW1lPSJwZXJmLXRlc3RzLWZpbGUiIHZhbHVlPSIke3Rlc3REaXJ9L3BlcmZvcm1hbmNlLXRlc3RzLnhtbCIvPgotICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSItRG9hZ2lzODBEaXI9JHt0ZXN0RGlyfSAtRHByb2plY3REaXI9JHt0ZXN0RGlyfS9PQUdJUzguMCAtWG14NTEyTSIvPgotICA8cHJvcGVydHkgbmFtZT0id29ya3NwYWNlIiB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3dvcmtzcGFjZV93c2RsX3BlcmZvcm1hbmNlIi8+Ci0gIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS93b3Jrc3BhY2Vfd3NkbF9wZXJmb3JtYW5jZSIvPgotCi0gIDwhLS0gVGhpcyB0YXJnZXQgaG9sZHMgYWxsIGluaXRpYWxpemF0aW9uIGNvZGUgdGhhdCBuZWVkcyB0byBiZSBkb25lIGZvciAtLT4KLSAgPCEtLSBhbGwgdGVzdHMgdGhhdCBhcmUgdG8gYmUgcnVuLiBJbml0aWFsaXphdGlvbiBmb3IgaW5kaXZpZHVhbCB0ZXN0cyAtLT4KLSAgPCEtLSBzaG91bGQgYmUgZG9uZSB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIHN1aXRlIHRhcmdldC4gLS0+Ci0gIDx0YXJnZXQgbmFtZT0iaW5pdCI+Ci0gICAgPHRzdGFtcC8+Ci0gICAgPGRlbGV0ZT4KLSAgICAgIDxmaWxlc2V0IGRpcj0iJHtlY2xpcHNlLWhvbWV9IiBpbmNsdWRlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UqLnhtbCIvPgotICAgIDwvZGVsZXRlPgotICA8L3RhcmdldD4KLSAgCi0gIDwhLS0gVGhpcyB0YXJnZXQgZGVmaW5lcyB0aGUgcGVyZm9ybWFuY2UgdGVzdHMgdGhhdCBuZWVkIHRvIGJlIHJ1bi4gLS0+Ci0gIDx0YXJnZXQgbmFtZT0icGVyZm9ybWFuY2Vfc3VpdGUiPgotCi0gICAgPGFudGNhbGwgdGFyZ2V0PSJyZWFkT0FHSVNXU0RMVGVzdGNhc2UiLz4KLSAgICA8YW50Y2FsbCB0YXJnZXQ9InJlYWRPQUdJU1dTRExUZXN0Y2FzZSIvPgotICAgIDxhbnRjYWxsIHRhcmdldD0icmVhZE9BR0lTV1NETFRlc3RjYXNlIi8+Ci0KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGVPQUdJU1dTRExUZXN0Y2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZU9BR0lTV1NETFRlc3RjYXNlIi8+Ci0JPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZU9BR0lTV1NETFRlc3RjYXNlIi8+Ci0KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGVPQUdJU1dTSVRlc3RjYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlT0FHSVNXU0lUZXN0Y2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZU9BR0lTV1NJVGVzdGNhc2UiLz4KLQotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZVdTRExQcm9qZWN0VGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGVXU0RMUHJvamVjdFRlc3RDYXNlIi8+Ci0JPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZVdTRExQcm9qZWN0VGVzdENhc2UiLz4KLSAgCQotICAgIDxhbnRjYWxsIHRhcmdldD0ib3BlbkVkaXRvck9BR0lTV1NETFRlc3RjYXNlIi8+Ci0gICAgPGFudGNhbGwgdGFyZ2V0PSJvcGVuRWRpdG9yT0FHSVNXU0RMVGVzdGNhc2UiLz4KLSAgICA8YW50Y2FsbCB0YXJnZXQ9Im9wZW5FZGl0b3JPQUdJU1dTRExUZXN0Y2FzZSIvPgotCi0gICAgPGFudGNhbGwgdGFyZ2V0PSJSZWFkU3RvY2tRdW90ZVdTRExUZXN0Q2FzZSIvPgotICAgIDxhbnRjYWxsIHRhcmdldD0iUmVhZFN0b2NrUXVvdGVXU0RMVGVzdENhc2UiLz4KLSAgICA8YW50Y2FsbCB0YXJnZXQ9IlJlYWRTdG9ja1F1b3RlV1NETFRlc3RDYXNlIi8+Ci0KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVhZFN0b2NrUXVvdGVXU0RMRU1GVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVhZFN0b2NrUXVvdGVXU0RMRU1GVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVhZFN0b2NrUXVvdGVXU0RMRU1GVGVzdENhc2UiLz4KLQotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZVN0b2NrUXVvdGVXU0RMVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGVTdG9ja1F1b3RlV1NETFRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlU3RvY2tRdW90ZVdTRExUZXN0Q2FzZSIvPgotCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlU3RvY2tRdW90ZVdTSVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlU3RvY2tRdW90ZVdTSVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlU3RvY2tRdW90ZVdTSVRlc3RDYXNlIi8+Ci0KLSAgCTxhbnRjYWxsIHRhcmdldD0iT3BlblN0b2NrUXVvdGVXU0RMU2V0dXAiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iT3BlblN0b2NrUXVvdGVXU0RMU2V0dXAiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iT3BlblN0b2NrUXVvdGVXU0RMU2V0dXAiLz4KLQotICAJPGFudGNhbGwgdGFyZ2V0PSJPcGVuMUtCRmlsZVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9Ik9wZW4xS0JGaWxlVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iT3BlbjFLQkZpbGVUZXN0Q2FzZSIvPgotCi0gIAk8YW50Y2FsbCB0YXJnZXQ9Ik9wZW4xMEtCRmlsZVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9Ik9wZW4xMEtCRmlsZVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9Ik9wZW4xMEtCRmlsZVRlc3RDYXNlIi8+Ci0KLSAgCTxhbnRjYWxsIHRhcmdldD0iT3BlbjEwMEtCRmlsZVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9Ik9wZW4xMDBLQkZpbGVUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJPcGVuMTAwS0JGaWxlVGVzdENhc2UiLz4KLQotICAJPGFudGNhbGwgdGFyZ2V0PSJPcGVuMjAwS0JGaWxlVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iT3BlbjIwMEtCRmlsZVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9Ik9wZW4yMDBLQkZpbGVUZXN0Q2FzZSIvPgotCi0gIAk8YW50Y2FsbCB0YXJnZXQ9Ik9wZW41MDBLQkZpbGVUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJPcGVuNTAwS0JGaWxlVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iT3BlbjUwMEtCRmlsZVRlc3RDYXNlIi8+Ci0KLSAgCTxhbnRjYWxsIHRhcmdldD0iT3BlbjFNQkZpbGVUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJPcGVuMU1CRmlsZVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9Ik9wZW4xTUJGaWxlVGVzdENhc2UiLz4KLQotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTFLQkZpbGVUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTFLQkZpbGVUZXN0Q2FzZSIvPgotCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxS0JGaWxlVGVzdENhc2UiLz4KLQotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwS0JGaWxlVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMEtCRmlsZVRlc3RDYXNlIi8+Ci0JPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwS0JGaWxlVGVzdENhc2UiLz4KLQkKLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMDBLQkZpbGVUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwMEtCRmlsZVRlc3RDYXNlIi8+Ci0JPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwMEtCRmlsZVRlc3RDYXNlIi8+Ci0gIAkKLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUyMDBLQkZpbGVUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTIwMEtCRmlsZVRlc3RDYXNlIi8+Ci0JPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTIwMEtCRmlsZVRlc3RDYXNlIi8+Ci0gIAkKLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGU1MDBLQkZpbGVUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTUwMEtCRmlsZVRlc3RDYXNlIi8+Ci0JPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTUwMEtCRmlsZVRlc3RDYXNlIi8+Ci0JCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMU1CRmlsZVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMU1CRmlsZVRlc3RDYXNlIi8+Ci0JPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTFNQkZpbGVUZXN0Q2FzZSIvPgotCi0JPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRPcGVuRWRpdG9yeDFUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRPcGVuRWRpdG9yeDFUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRPcGVuRWRpdG9yeDFUZXN0Q2FzZSIvPgotICAKLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0T3BlbkVkaXRvcngxMFRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdE9wZW5FZGl0b3J4MTBUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRPcGVuRWRpdG9yeDEwVGVzdENhc2UiLz4KLSAgCQotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRPcGVuRWRpdG9yeDI1VGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0T3BlbkVkaXRvcngyNVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdE9wZW5FZGl0b3J4MjVUZXN0Q2FzZSIvPgotCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdE9wZW5FZGl0b3J4NTBUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRPcGVuRWRpdG9yeDUwVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0T3BlbkVkaXRvcng1MFRlc3RDYXNlIi8+Ci0gIAkKLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0T3BlbkVkaXRvcng3NVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdE9wZW5FZGl0b3J4NzVUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRPcGVuRWRpdG9yeDc1VGVzdENhc2UiLz4KLSAKLSAgCTwhLS0KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0T3BlbkVkaXRvcngxMDBUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRPcGVuRWRpdG9yeDEwMFRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdE9wZW5FZGl0b3J4MTAwVGVzdENhc2UiLz4KLSAgCS0tPgotCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdFZhbGlkYXRleDFUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRWYWxpZGF0ZXgxVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0VmFsaWRhdGV4MVRlc3RDYXNlIi8+Ci0KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0VmFsaWRhdGV4MTBUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRWYWxpZGF0ZXgxMFRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdFZhbGlkYXRleDEwVGVzdENhc2UiLz4KLSAgCQotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRWYWxpZGF0ZXgyNVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdFZhbGlkYXRleDI1VGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0VmFsaWRhdGV4MjVUZXN0Q2FzZSIvPgotICAJCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdFZhbGlkYXRleDUwVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0VmFsaWRhdGV4NTBUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRWYWxpZGF0ZXg1MFRlc3RDYXNlIi8+Ci0gIAkKLSAgCTxhbnRjYWxsIHRhcmdldD0iUmVwZWF0VmFsaWRhdGV4NzVUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRWYWxpZGF0ZXg3NVRlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlJlcGVhdFZhbGlkYXRleDc1VGVzdENhc2UiLz4KLQotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRWYWxpZGF0ZXgxMDBUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRWYWxpZGF0ZXgxMDBUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJSZXBlYXRWYWxpZGF0ZXgxMDBUZXN0Q2FzZSIvPgotICAJCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTAwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTAwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTAwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlIi8+Ci0gCQotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTAwV1NETHNYU0REZXBlbmRzVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMDBXU0RMc1hTRERlcGVuZHNUZXN0Q2FzZSIvPgotICAJCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTBXU0RMc1hTRERlcGVuZHNUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwV1NETHNYU0REZXBlbmRzVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlIi8+Ci08IS0tICAJCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTAwMFdTRExzQ3Jvc3NEZXBlbmRzVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMDAwV1NETHNDcm9zc0RlcGVuZHNUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwMDBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlIi8+Ci0tLT4gCQotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwMFdTRExzQ3Jvc3NEZXBlbmRzVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMDBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTAwV1NETHNDcm9zc0RlcGVuZHNUZXN0Q2FzZSIvPgotICAJCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTBXU0RMc0Nyb3NzRGVwZW5kc1Rlc3RDYXNlIi8+Ci0gIAkKLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMDAwV1NETHNOb0RlcGVuZHNUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwMDBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlIi8+Ci0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTAwMFdTRExzTm9EZXBlbmRzVGVzdENhc2UiLz4KLSAJCi0gIAk8YW50Y2FsbCB0YXJnZXQ9IlZhbGlkYXRlMTAwV1NETHNOb0RlcGVuZHNUZXN0Q2FzZSIvPgotICAJPGFudGNhbGwgdGFyZ2V0PSJWYWxpZGF0ZTEwMFdTRExzTm9EZXBlbmRzVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMDBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlIi8+Ci0gIAkKLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMFdTRExzTm9EZXBlbmRzVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMFdTRExzTm9EZXBlbmRzVGVzdENhc2UiLz4KLSAgCTxhbnRjYWxsIHRhcmdldD0iVmFsaWRhdGUxMFdTRExzTm9EZXBlbmRzVGVzdENhc2UiLz4KLSAgCQotICA8L3RhcmdldD4KLQotICA8dGFyZ2V0IG5hbWU9InJlYWRPQUdJU1dTRExUZXN0Y2FzZSI+Ci0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLSAgICA8YW50IHRhcmdldD0iY29yZS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5SZWFkT0FHSVNXU0RMVGVzdGNhc2UiLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+Ci0gICAgPC9hbnQ+Ci0gIDwvdGFyZ2V0PgotCi0gIDx0YXJnZXQgbmFtZT0iVmFsaWRhdGVPQUdJU1dTRExUZXN0Y2FzZSI+Ci0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UuVmFsaWRhdGVPQUdJU1dTRExUZXN0Y2FzZSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLSAgICA8L2FudD4KLSAgPC90YXJnZXQ+Ci0KLSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZU9BR0lTV1NJVGVzdGNhc2UiPgotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLlZhbGlkYXRlT0FHSVNXU0lUZXN0Y2FzZSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLSAgICA8L2FudD4KLSAgPC90YXJnZXQ+Ci0KLSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZVdTRExQcm9qZWN0VGVzdENhc2UiPgotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLlZhbGlkYXRlV1NETFByb2plY3RUZXN0Q2FzZSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLSAgICA8L2FudD4KLSAgPC90YXJnZXQ+Ci0JCi0gIDx0YXJnZXQgbmFtZT0ib3BlbkVkaXRvck9BR0lTV1NETFRlc3RjYXNlIj4KLSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5PcGVuRWRpdG9yT0FHSVNXU0RMVGVzdGNhc2UiLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+Ci0gICAgPC9hbnQ+Ci0gIDwvdGFyZ2V0PgotCi0gIDx0YXJnZXQgbmFtZT0iUmVhZFN0b2NrUXVvdGVXU0RMVGVzdENhc2UiPgotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0gICAgPGFudCB0YXJnZXQ9ImNvcmUtdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UuUmVhZFN0b2NrUXVvdGVXU0RMVGVzdENhc2UiLz4KLSAgICA8L2FudD4KLSAgPC90YXJnZXQ+Ci0KLSAgPHRhcmdldCBuYW1lPSJSZWFkU3RvY2tRdW90ZVdTRExFTUZUZXN0Q2FzZSI+Ci0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLSAgICA8YW50IHRhcmdldD0iY29yZS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5SZWFkU3RvY2tRdW90ZVdTRExFTUZUZXN0Q2FzZSIvPgotICAgIDwvYW50PgotICA8L3RhcmdldD4KLQotICA8dGFyZ2V0IG5hbWU9IlZhbGlkYXRlU3RvY2tRdW90ZVdTRExUZXN0Q2FzZSI+Ci0gICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UuVmFsaWRhdGVTdG9ja1F1b3RlV1NETFRlc3RDYXNlIi8+Ci0gICAgPC9hbnQ+Ci0gIDwvdGFyZ2V0PgotCi0gIDx0YXJnZXQgbmFtZT0iVmFsaWRhdGVTdG9ja1F1b3RlV1NJVGVzdENhc2UiPgotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLlZhbGlkYXRlU3RvY2tRdW90ZVdTSVRlc3RDYXNlIi8+Ci0gICAgPC9hbnQ+Ci0gIDwvdGFyZ2V0PgotCi0gIDx0YXJnZXQgbmFtZT0iT3BlblN0b2NrUXVvdGVXU0RMU2V0dXAiPgotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLk9wZW5TdG9ja1F1b3RlV1NETFNldHVwIi8+Ci0gICAgPC9hbnQ+Ci0gICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLk9wZW5TdG9ja1F1b3RlV1NETFRlc3RDYXNlIi8+Ci0gICAgPC9hbnQ+Ci0gIDwvdGFyZ2V0PgotCi0JICA8dGFyZ2V0IG5hbWU9Ik9wZW4xS0JGaWxlVGVzdENhc2UiPgotCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkgICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuT3BlbjFLQkZpbGVUZXN0Q2FzZSIvPgotCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+Ci0JICAgIDwvYW50PgotCSAgPC90YXJnZXQ+Ci0KLQkJICA8dGFyZ2V0IG5hbWU9Ik9wZW4xMEtCRmlsZVRlc3RDYXNlIj4KLQkJICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0JCSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuT3BlbjEwS0JGaWxlVGVzdENhc2UiLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJICAgIDwvYW50PgotCQkgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJPcGVuMTAwS0JGaWxlVGVzdENhc2UiPgotCQkgICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5PcGVuMTAwS0JGaWxlVGVzdENhc2UiLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJICAgIDwvYW50PgotCQkgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJPcGVuMjAwS0JGaWxlVGVzdENhc2UiPgotCQkgICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5PcGVuMjAwS0JGaWxlVGVzdENhc2UiLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJICAgIDwvYW50PgotCQkgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJPcGVuNTAwS0JGaWxlVGVzdENhc2UiPgotCQkgICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5PcGVuNTAwS0JGaWxlVGVzdENhc2UiLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJICAgIDwvYW50PgotCQkgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJPcGVuMU1CRmlsZVRlc3RDYXNlIj4KLQkJICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0JCSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuT3BlbjFNQkZpbGVUZXN0Q2FzZSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkgICAgPC9hbnQ+Ci0JCSAgPC90YXJnZXQ+Ci0KLQkJICA8dGFyZ2V0IG5hbWU9IlZhbGlkYXRlMUtCRmlsZVRlc3RDYXNlIj4KLQkJICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0JCSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuVmFsaWRhdGUxS0JGaWxlVGVzdENhc2UiLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJICAgIDwvYW50PgotCQkgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZTEwS0JGaWxlVGVzdENhc2UiPgotCQkgICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5WYWxpZGF0ZTEwS0JGaWxlVGVzdENhc2UiLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJICAgIDwvYW50PgotCQkgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZTEwMEtCRmlsZVRlc3RDYXNlIj4KLQkJICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0JCSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuVmFsaWRhdGUxMDBLQkZpbGVUZXN0Q2FzZSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkgICAgPC9hbnQ+Ci0JCSAgPC90YXJnZXQ+Ci0KLQkJICA8dGFyZ2V0IG5hbWU9IlZhbGlkYXRlMjAwS0JGaWxlVGVzdENhc2UiPgotCQkgICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5WYWxpZGF0ZTIwMEtCRmlsZVRlc3RDYXNlIi8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+Ci0JCSAgICA8L2FudD4KLQkJICA8L3RhcmdldD4KLQotCQkgIDx0YXJnZXQgbmFtZT0iVmFsaWRhdGU1MDBLQkZpbGVUZXN0Q2FzZSI+Ci0JCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkgICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlZhbGlkYXRlNTAwS0JGaWxlVGVzdENhc2UiLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJICAgIDwvYW50PgotCQkgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZTFNQkZpbGVUZXN0Q2FzZSI+Ci0JCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkgICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlZhbGlkYXRlMU1CRmlsZVRlc3RDYXNlIi8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+Ci0JCSAgICA8L2FudD4KLQkJICA8L3RhcmdldD4KLQotCQkgIDx0YXJnZXQgbmFtZT0iUmVwZWF0T3BlbkVkaXRvcngxVGVzdENhc2UiPgotCQkgICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5SZXBlYXRPcGVuRWRpdG9yeDFUZXN0Q2FzZSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkgICAgPC9hbnQ+Ci0JCSAgPC90YXJnZXQ+Ci0KLQkJICA8dGFyZ2V0IG5hbWU9IlJlcGVhdE9wZW5FZGl0b3J4MTBUZXN0Q2FzZSI+Ci0JCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkgICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlJlcGVhdE9wZW5FZGl0b3J4MTBUZXN0Q2FzZSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkgICAgPC9hbnQ+Ci0JCSAgPC90YXJnZXQ+Ci0KLQkJICA8dGFyZ2V0IG5hbWU9IlJlcGVhdE9wZW5FZGl0b3J4MjVUZXN0Q2FzZSI+Ci0JCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkgICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlJlcGVhdE9wZW5FZGl0b3J4MjVUZXN0Q2FzZSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkgICAgPC9hbnQ+Ci0JCSAgPC90YXJnZXQ+Ci0KLQkJICA8dGFyZ2V0IG5hbWU9IlJlcGVhdE9wZW5FZGl0b3J4NTBUZXN0Q2FzZSI+Ci0JCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkgICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlJlcGVhdE9wZW5FZGl0b3J4NTBUZXN0Q2FzZSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkgICAgPC9hbnQ+Ci0JCSAgPC90YXJnZXQ+Ci0KLQkJICA8dGFyZ2V0IG5hbWU9IlJlcGVhdE9wZW5FZGl0b3J4NzVUZXN0Q2FzZSI+Ci0JCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkgICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlJlcGVhdE9wZW5FZGl0b3J4NzVUZXN0Q2FzZSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkgICAgPC9hbnQ+Ci0JCSAgPC90YXJnZXQ+Ci0KLQkJICA8dGFyZ2V0IG5hbWU9IlJlcGVhdE9wZW5FZGl0b3J4MTAwVGVzdENhc2UiPgotCQkgICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5SZXBlYXRPcGVuRWRpdG9yeDEwMFRlc3RDYXNlIi8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+Ci0JCSAgICA8L2FudD4KLQkJICA8L3RhcmdldD4KLQotCQkgIDx0YXJnZXQgbmFtZT0iUmVwZWF0VmFsaWRhdGV4MVRlc3RDYXNlIj4KLQkJICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0JCSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuUmVwZWF0VmFsaWRhdGV4MVRlc3RDYXNlIi8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+Ci0JCSAgICA8L2FudD4KLQkJICA8L3RhcmdldD4KLQotCQkgIDx0YXJnZXQgbmFtZT0iUmVwZWF0VmFsaWRhdGV4MTBUZXN0Q2FzZSI+Ci0JCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkgICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlJlcGVhdFZhbGlkYXRleDEwVGVzdENhc2UiLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJICAgIDwvYW50PgotCQkgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJSZXBlYXRWYWxpZGF0ZXgyNVRlc3RDYXNlIj4KLQkJICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0JCSAgICA8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuUmVwZWF0VmFsaWRhdGV4MjVUZXN0Q2FzZSIvPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkgICAgPC9hbnQ+Ci0JCSAgPC90YXJnZXQ+Ci0KLQkJICA8dGFyZ2V0IG5hbWU9IlJlcGVhdFZhbGlkYXRleDUwVGVzdENhc2UiPgotCQkgICAgPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJICAgIDxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5SZXBlYXRWYWxpZGF0ZXg1MFRlc3RDYXNlIi8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+Ci0JCSAgICA8L2FudD4KLQkJICA8L3RhcmdldD4KLQotCQkgIDx0YXJnZXQgbmFtZT0iUmVwZWF0VmFsaWRhdGV4NzVUZXN0Q2FzZSI+Ci0JCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkgICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlJlcGVhdFZhbGlkYXRleDc1VGVzdENhc2UiLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJICAgIDwvYW50PgotCQkgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJSZXBlYXRWYWxpZGF0ZXgxMDBUZXN0Q2FzZSI+Ci0JCSAgICA8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkgICAgPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkgICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlJlcGVhdFZhbGlkYXRleDEwMFRlc3RDYXNlIi8+Ci0JCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHRyYVZNYXJncyIgdmFsdWU9IiR7ZXh0cmFWTWFyZ3N9Ii8+Ci0JCSAgICA8L2FudD4KLQkJICA8L3RhcmdldD4KLQkKLQkJICA8dGFyZ2V0IG5hbWU9IlZhbGlkYXRlMTAwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlIj4KLQkJCTxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0JCQk8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuVmFsaWRhdGUxMDAwV1NETHNYU0REZXBlbmRzVGVzdENhc2UiLz4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJCTwvYW50PgotCSAgICAgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZTEwMFdTRExzWFNERGVwZW5kc1Rlc3RDYXNlIj4KLQkJCTxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0JCQk8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuVmFsaWRhdGUxMDBXU0RMc1hTRERlcGVuZHNUZXN0Q2FzZSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkJPC9hbnQ+Ci0JICAgICAgPC90YXJnZXQ+Ci0JCi0JCSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZTEwV1NETHNYU0REZXBlbmRzVGVzdENhc2UiPgotCQkJPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJCTxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5WYWxpZGF0ZTEwV1NETHNYU0REZXBlbmRzVGVzdENhc2UiLz4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJCTwvYW50PgotCSAgICAgIDwvdGFyZ2V0PgotCQotCQkgIDx0YXJnZXQgbmFtZT0iVmFsaWRhdGUxMDAwV1NETHNDcm9zc0RlcGVuZHNUZXN0Q2FzZSI+Ci0JCQk8ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIvPgotCQkJPGFudCB0YXJnZXQ9InVpLXRlc3QiIGFudGZpbGU9IiR7cGVyZi10ZXN0cy1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkJICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZX0iLz4KLQkJCSAgPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0iLz4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnBlcmZvcm1hbmNlLnNjYWxhYmlsaXR5LlZhbGlkYXRlMTAwMFdTRExzQ3Jvc3NEZXBlbmRzVGVzdENhc2UiLz4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJCTwvYW50PgotCSAgICAgIDwvdGFyZ2V0PgotCi0JCSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZTEwMFdTRExzQ3Jvc3NEZXBlbmRzVGVzdENhc2UiPgotCQkJPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJCTxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5WYWxpZGF0ZTEwMFdTRExzQ3Jvc3NEZXBlbmRzVGVzdENhc2UiLz4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJCTwvYW50PgotCSAgICAgIDwvdGFyZ2V0PgotCQotCQkgIDx0YXJnZXQgbmFtZT0iVmFsaWRhdGUxMFdTRExzQ3Jvc3NEZXBlbmRzVGVzdENhc2UiPgotCQkJPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJCTxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5WYWxpZGF0ZTEwV1NETHNDcm9zc0RlcGVuZHNUZXN0Q2FzZSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkJPC9hbnQ+Ci0JICAgICAgPC90YXJnZXQ+Ci0JCi0JCSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZTEwMDBXU0RMc05vRGVwZW5kc1Rlc3RDYXNlIj4KLQkJCTxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0JCQk8YW50IHRhcmdldD0idWktdGVzdCIgYW50ZmlsZT0iJHtwZXJmLXRlc3RzLWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJkYXRhLWRpciIgdmFsdWU9IiR7d29ya3NwYWNlfSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2Uuc2NhbGFiaWxpdHkuVmFsaWRhdGUxMDAwV1NETHNOb0RlcGVuZHNUZXN0Q2FzZSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkJPC9hbnQ+Ci0JICAgICAgPC90YXJnZXQ+Ci0JCi0JCSAgPHRhcmdldCBuYW1lPSJWYWxpZGF0ZTEwMFdTRExzTm9EZXBlbmRzVGVzdENhc2UiPgotCQkJPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJCTxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5WYWxpZGF0ZTEwMFdTRExzTm9EZXBlbmRzVGVzdENhc2UiLz4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImV4dHJhVk1hcmdzIiB2YWx1ZT0iJHtleHRyYVZNYXJnc30iLz4KLQkJCTwvYW50PgotCSAgICAgIDwvdGFyZ2V0PgotCQotCQkgIDx0YXJnZXQgbmFtZT0iVmFsaWRhdGUxMFdTRExzTm9EZXBlbmRzVGVzdENhc2UiPgotCQkJPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiLz4KLQkJCTxhbnQgdGFyZ2V0PSJ1aS10ZXN0IiBhbnRmaWxlPSIke3BlcmYtdGVzdHMtZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJCSAgPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3b3Jrc3BhY2V9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0JCQkgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZS5zY2FsYWJpbGl0eS5WYWxpZGF0ZTEwV1NETHNOb0RlcGVuZHNUZXN0Q2FzZSIvPgotCQkJICA8cHJvcGVydHkgbmFtZT0iZXh0cmFWTWFyZ3MiIHZhbHVlPSIke2V4dHJhVk1hcmdzfSIvPgotCQkJPC9hbnQ+Ci0JICAgICAgPC90YXJnZXQ+Ci0KLSAgPCEtLSBUaGlzIHRhcmdldCBob2xkcyBjb2RlIHRvIGNsZWFudXAgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQgYWZ0ZXIgLS0+Ci0gIDwhLS0gYWZ0ZXIgYWxsIG9mIHRoZSB0ZXN0cyBoYXZlIGJlZW4gcnVuLiBZb3UgY2FuIHVzZSB0aGlzIHRhcmdldCB0byAtLT4KLSAgPCEtLSBkZWxldGUgdGVtcG9yYXJ5IGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQuIC0tPgotICA8dGFyZ2V0IG5hbWU9ImNsZWFudXAiPgotCTxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIi8+Ci0gIDwvdGFyZ2V0PgotICAKLSAgPCEtLSBUaGlzIHRhcmdldCBydW5zIHRoZSBwZXJmb3JtYW5jZSB0ZXN0IHN1aXRlLiBBbnkgYWN0aW9ucyB0aGF0IG5lZWQgdG8gaGFwcGVuIC0tPgotICA8IS0tIGFmdGVyIGFsbCB0aGUgdGVzdHMgaGF2ZSBiZWVuIHJ1biBzaG91bGQgZ28gaGVyZS4gLS0+Ci0gIDx0YXJnZXQgbmFtZT0icGVyZm9ybWFuY2UiIGRlcGVuZHM9ImluaXQscGVyZm9ybWFuY2Vfc3VpdGUsY2xlYW51cCI+Ci0gICAgPGFudCB0YXJnZXQ9ImNvbGxlY3QiIGFudGZpbGU9IiR7bGlicmFyeS1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImluY2x1ZGVzIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMucGVyZm9ybWFuY2UqLnhtbCIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9Im91dHB1dC1maWxlIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0ueG1sIi8+Ci0gICAgPC9hbnQ+Ci0gIDwvdGFyZ2V0PgotCi08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51aS8uY2xhc3NwYXRoIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U3MzkzMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51aS8uY2xhc3NwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpLy5jdnNpZ25vcmUgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51aS8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDUwOGMwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWJpbgotYnVpbGQueG1sCi10ZW1wLmZvbGRlcgotd3NkbC50ZXN0cy51aS5qYXIKLWphdmFDb21waWxlci53c2RsLnRlc3RzLnVpLmphci5hcmdzCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51aS8ucHJvamVjdCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmZiNzhkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWk8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTVlMGQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotI1N1biBKdW4gMDMgMDA6NDc6MDUgRURUIDIwMDcKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpL01FVEEtSU5GL01BTklGRVNULk1GIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNWIyMDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiBXU0RMIE1vZGVsIFVJIFNhbXBsZXMKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpOyBzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuMTAxLnF1YWxpZmllcgotQnVuZGxlLUNsYXNzUGF0aDogd3NkbC50ZXN0cy51aS5qYXIKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS53c3Qud3NkbCwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cywKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcywKLSBvcmcuZWNsaXBzZS51aSwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUKLUJ1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5Ci1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpL2Fib3V0Lmh0bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51aS9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpL2J1aWxkLnByb3BlcnRpZXMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51aS9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjE1OGUwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotc291cmNlLndzZGwudGVzdHMudWkuamFyID0gc3JjLwotYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIHdzZGwudGVzdHMudWkuamFyLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLwpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvcGx1Z2luLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNWYxMWYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cGx1Z2luPgotCi0gICAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLnBvcHVwTWVudXMiPgotICAgICAgPG9iamVjdENvbnRyaWJ1dGlvbgotICAgICAgICAgIG9iamVjdENsYXNzPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZSIKLSAgICAgICAgICBuYW1lRmlsdGVyPSIqLndzZGwiCi0gICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpLm9iamVjdF9jb250cmlidXRpb24iPgotICAgICAgICAgPCEtLQotICAgICAgICAgPGFjdGlvbgotICAgICAgICAgICAgIGxhYmVsPSJHZW5lcmF0ZSBXU0RMIFNhbXBsZSIKLSAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkuR2VuZXJhdGVXU0RMQWN0aW9uRGVsZWdhdGUiCi0gICAgICAgICAgICAgZW5hYmxlc0Zvcj0iMSIKLSAgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkuZ2VuZXJhdGVfd3NkbF9hY3Rpb24iPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICAgICAtLT4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICBsYWJlbD0iQ29udmVydCB0byBXU0RMIDIuMCBEb2N1bWVudCIKLSAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkuQ29udmVydFdTREwyMEFjdGlvbkRlbGVnYXRlIgotICAgICAgICAgICAgIGVuYWJsZXNGb3I9IjEiCi0gICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpLmNvbnZlcnRfd3NkbF9hY3Rpb24iPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICAgICAKLSAgICAgIDwvb2JqZWN0Q29udHJpYnV0aW9uPgotICAgPC9leHRlbnNpb24+Ci0gICAKLTwvcGx1Z2luPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3VpL0NvbnZlcnRXU0RMMjBBY3Rpb25EZWxlZ2F0ZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3VpL0NvbnZlcnRXU0RMMjBBY3Rpb25EZWxlZ2F0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmFlZmQxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy91aS9Db252ZXJ0V1NETDIwQWN0aW9uRGVsZWdhdGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy4qOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5hY3Rpb24uSUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JQWN0aW9uRGVsZWdhdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25Mb2FkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5XU0RMQ29udmVydGVyOwotCi0KLQotcHVibGljIGNsYXNzIENvbnZlcnRXU0RMMjBBY3Rpb25EZWxlZ2F0ZSBpbXBsZW1lbnRzIElBY3Rpb25EZWxlZ2F0ZQotewotICBwcml2YXRlIElTZWxlY3Rpb24gc2VsZWN0aW9uID0gbnVsbDsKLQotICBwdWJsaWMgdm9pZCBydW4oSUFjdGlvbiBhY3Rpb24pCi0gIHsKLSAgICBJRmlsZSBpZmlsZSA9IG51bGw7Ci0gICAgaWYgKCFzZWxlY3Rpb24uaXNFbXB0eSgpICYmIHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKQotICAgIHsKLSAgICAgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHN0cnVjdHVyZWRTZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbGVjdGlvbjsKLSAgICAgIE9iamVjdCBlbGVtZW50ID0gc3RydWN0dXJlZFNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKTsKLQotICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBJRmlsZSkKLSAgICAgIHsKLSAgICAgIAlpZmlsZSA9IChJRmlsZSkgZWxlbWVudDsKLSAgICAgICAgSVBhdGggcGF0aCA9IGlmaWxlLmdldExvY2F0aW9uKCk7Ci0gICAgICAgIElQYXRoIHBhdGgyID0gcGF0aC5yZW1vdmVMYXN0U2VnbWVudHMoMSk7Ci0gICAgICAgIFN0cmluZyBvdXRwdXQgPSBwYXRoMi50b1N0cmluZygpICsgIi8iICsgZ2V0TmV3TmFtZShpZmlsZSk7Ci0gICAgICAgIAotICAgICAgICB0cnkKLQkJICAgIHsgIAotICAgICAgICAgICAgRGVmaW5pdGlvbiBkZWYgPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoImZpbGU6LyIgKyBwYXRoLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgV1NETENvbnZlcnRlciBjb252ZXJ0ZXIgPSBuZXcgV1NETENvbnZlcnRlcihkZWYpOwotICAgICAgICAgICAgY29udmVydGVyLmdlbmVyYXRlMjAob3V0cHV0KTsKLSAgICAgICAgICAgIElDb250YWluZXIgZm9sZGVyID0gaWZpbGUuZ2V0UGFyZW50KCk7Ci0gICAgICAgICAgICBmb2xkZXIucmVmcmVzaExvY2FsKElSZXNvdXJjZS5ERVBUSF9PTkUsbnVsbCk7Ci0JCSAgICB9Ci0gICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLQkJICAgIHsKLSAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotCQkgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0TmV3TmFtZShJRmlsZSBpZmlsZSkKLSAgewotICAgIC8vIEFzc2VydCBjdXJyZW50TmFtZSBoYXMgYSBmaWxlIGV4dGVuc2lvbiwgZS5nLiBmb28ud3NkbC4KLSAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIGZvb1YyMC53c2RsLgotICAgIFN0cmluZyBjdXJyZW50TmFtZSA9IGlmaWxlLmdldE5hbWUoKTsKLSAgICBTdHJpbmcgbmFtZSA9IGN1cnJlbnROYW1lLnN1YnN0cmluZygwLGN1cnJlbnROYW1lLmluZGV4T2YoIi4iKSk7Ci0gICAgU3RyaW5nIGV4dGVuc2lvbiA9IGN1cnJlbnROYW1lLnN1YnN0cmluZyhjdXJyZW50TmFtZS5pbmRleE9mKCIuIikpOwotICAgIFN0cmluZyBuZXdOYW1lID0gbmFtZSArICJWMjAiICsgZXh0ZW5zaW9uOwotICAgIHJldHVybiBuZXdOYW1lOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKElBY3Rpb24gYWN0aW9uLCBJU2VsZWN0aW9uIHNlbGVjdGlvbikKLSAgewotICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy91aS9HZW5lcmF0ZVdTRExBY3Rpb25EZWxlZ2F0ZS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3VpL0dlbmVyYXRlV1NETEFjdGlvbkRlbGVnYXRlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0OTUxMWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudWkvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3VpL0dlbmVyYXRlV1NETEFjdGlvbkRlbGVnYXRlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnVpOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmFjdGlvbi5JQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklBY3Rpb25EZWxlZ2F0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5XU0RMR2VuZXJhdGlvblRlc3Q7Ci0KLXB1YmxpYyBjbGFzcyBHZW5lcmF0ZVdTRExBY3Rpb25EZWxlZ2F0ZSBpbXBsZW1lbnRzIElBY3Rpb25EZWxlZ2F0ZQotewotICBwcml2YXRlIElTZWxlY3Rpb24gc2VsZWN0aW9uID0gbnVsbDsKLQotICBwdWJsaWMgdm9pZCBydW4oSUFjdGlvbiBhY3Rpb24pCi0gIHsKLSAgICBJRmlsZSBpZmlsZSA9IG51bGw7Ci0gICAgaWYgKCFzZWxlY3Rpb24uaXNFbXB0eSgpICYmIHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKQotICAgIHsKLSAgICAgIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHN0cnVjdHVyZWRTZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbGVjdGlvbjsKLSAgICAgIE9iamVjdCBlbGVtZW50ID0gc3RydWN0dXJlZFNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKTsKLQotICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBJRmlsZSkKLSAgICAgIHsKLSAgICAgIAlpZmlsZSA9IChJRmlsZSkgZWxlbWVudDsKLSAgICAgICAgSVBhdGggcGF0aCA9IGlmaWxlLmdldExvY2F0aW9uKCk7Ci0gICAgICAgIHBhdGggPSBwYXRoLnJlbW92ZUxhc3RTZWdtZW50cygxKTsKLSAgICAgICAgU3RyaW5nIG91dHB1dCA9IHBhdGgudG9TdHJpbmcoKSArICIvTXlTYW1wbGUud3NkbCI7Ci0gICAgICAgIAotICAgICAgICB0cnkKLQkJewotICAgICAgICAgIChuZXcgV1NETEdlbmVyYXRpb25UZXN0KCkpLmdlbmVyYXRlVGVtcGVyYXR1cmVTZXJ2aWNlKG91dHB1dCk7Ci0JCX0KLSAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCQl7Ci0gICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJfQotCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICB9Ci0gIAotICBwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKElBY3Rpb24gYWN0aW9uLCBJU2VsZWN0aW9uIHNlbGVjdGlvbikKLSAgewotICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLy5jbGFzc3BhdGggYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTVjMWIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ij4KLQkJPGFjY2Vzc3J1bGVzPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0iamF2YXgveG1sL25hbWVzcGFjZS9RTmFtZSIvPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0iamF2YXgveG1sL1hNTENvbnN0YW50cyIvPgotCQk8L2FjY2Vzc3J1bGVzPgotCTwvY2xhc3NwYXRoZW50cnk+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIj4KLQkJPGFjY2Vzc3J1bGVzPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0ib3JnL2VjbGlwc2Uvd3N0L3dzZGwvKioiLz4KLQkJPC9hY2Nlc3NydWxlcz4KLQk8L2NsYXNzcGF0aGVudHJ5PgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPgotPC9jbGFzc3BhdGg+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8uY3ZzaWdub3JlIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBiYTk5ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1iaW4KLWJ1aWxkLnhtbAotdGVtcC5mb2xkZXIKLXdzZGwudGVzdHMuamFyCi1qYXZhQ29tcGlsZXIud3NkbC50ZXN0cy5qYXIuYXJncwpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvLnByb2plY3QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgxM2E3NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ1MDMzNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSNXZWQgU2VwIDI2IDA1OjQ0OjU0IEVEVCAyMDA3Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotZW5jb2RpbmcvPHByb2plY3Q+PUlTTy04ODU5LTEKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q2YmJjNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTggKzAsMCBAQAotI1N1biBBcHIgMTUgMDI6MzQ6MjIgRURUIDIwMDcKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbl90eXBlX21lbWJlcnNfb25fY29sdW1ucz1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj01Mgotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2VudW1fY29uc3RhbnQ9MTYKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9leHBsaWNpdF9jb25zdHJ1Y3Rvcl9jYWxsPTUyCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fbWV0aG9kX2ludm9jYXRpb249NTIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9xdWFsaWZpZWRfYWxsb2NhdGlvbl9leHByZXNzaW9uPTUyCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hc3NpZ25tZW50PTAKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2JpbmFyeV9leHByZXNzaW9uPTIwCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb21wYWN0X2lmPTIwCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb25kaXRpb25hbF9leHByZXNzaW9uPTM2Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9lbnVtX2NvbnN0YW50cz0wCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9leHByZXNzaW9uc19pbl9hcnJheV9pbml0aWFsaXplcj01Mgotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbXVsdGlwbGVfZmllbGRzPTE2Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9wYXJhbWV0ZXJzX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPTUyCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9wYXJhbWV0ZXJzX2luX21ldGhvZF9kZWNsYXJhdGlvbj01Mgotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc2VsZWN0b3JfaW5fbWV0aG9kX2ludm9jYXRpb249MAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJjbGFzc19pbl90eXBlX2RlY2xhcmF0aW9uPTM2Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fZW51bV9kZWNsYXJhdGlvbj0xNgotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJpbnRlcmZhY2VzX2luX3R5cGVfZGVjbGFyYXRpb249NjgKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ODQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTg0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYWZ0ZXJfaW1wb3J0cz0yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYWZ0ZXJfcGFja2FnZT0yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ZpZWxkPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfZmlyc3RfY2xhc3NfYm9keV9kZWNsYXJhdGlvbj0wCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ltcG9ydHM9MAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9tZW1iZXJfdHlwZT0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX21ldGhvZD0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX25ld19jaHVuaz0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX3BhY2thZ2U9MAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JldHdlZW5faW1wb3J0X2dyb3Vwcz0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl90eXBlX2RlY2xhcmF0aW9ucz0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1uZXh0X2xpbmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249bmV4dF9saW5lX3NoaWZ0ZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9ZW5kX29mX2xpbmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2s9bmV4dF9saW5lCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Jsb2NrX2luX2Nhc2U9bmV4dF9saW5lCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPW5leHRfbGluZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2NvbnN0YW50PW5leHRfbGluZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2RlY2xhcmF0aW9uPW5leHRfbGluZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9tZXRob2RfZGVjbGFyYXRpb249bmV4dF9saW5lCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3N3aXRjaD1uZXh0X2xpbmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfdHlwZV9kZWNsYXJhdGlvbj1uZXh0X2xpbmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmNsZWFyX2JsYW5rX2xpbmVzX2luX2Jsb2NrX2NvbW1lbnQ9ZmFsc2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmNsZWFyX2JsYW5rX2xpbmVzX2luX2phdmFkb2NfY29tbWVudD1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2Jsb2NrX2NvbW1lbnRzPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaGVhZGVyPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaHRtbD1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2phdmFkb2NfY29tbWVudHM9ZmFsc2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9saW5lX2NvbW1lbnRzPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfc291cmNlX2NvZGU9ZmFsc2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmluZGVudF9wYXJhbWV0ZXJfZGVzY3JpcHRpb249dHJ1ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5kZW50X3Jvb3RfdGFncz10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX3Jvb3RfdGFncz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lmluc2VydF9uZXdfbGluZV9mb3JfcGFyYW1ldGVyPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubGluZV9sZW5ndGg9ODAKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21wYWN0X2Vsc2VfaWY9dHJ1ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbj0yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29udGludWF0aW9uX2luZGVudGF0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj0yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZm9ybWF0X2d1YXJkaWFuX2NsYXVzZV9vbl9vbmVfbGluZT1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2Fubm90YXRpb25fZGVjbGFyYXRpb25faGVhZGVyPXRydWUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2NvbnN0YW50X2hlYWRlcj10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fZW51bV9kZWNsYXJhdGlvbl9oZWFkZXI9dHJ1ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX3R5cGVfaGVhZGVyPXRydWUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYnJlYWtzX2NvbXBhcmVfdG9fY2FzZXM9dHJ1ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9lbXB0eV9saW5lcz1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYmxvY2s9dHJ1ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYm9keT10cnVlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N3aXRjaHN0YXRlbWVudHNfY29tcGFyZV90b19jYXNlcz1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zd2l0Y2hzdGF0ZW1lbnRzX2NvbXBhcmVfdG9fc3dpdGNoPXRydWUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRhdGlvbi5zaXplPTQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2F0X2VuZF9vZl9maWxlX2lmX21pc3Npbmc9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2F0Y2hfaW5fdHJ5X3N0YXRlbWVudD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2Nsb3NpbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfZWxzZV9pbl9pZl9zdGF0ZW1lbnQ9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9maW5hbGx5X2luX3RyeV9zdGF0ZW1lbnQ9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV93aGlsZV9pbl9kb19zdGF0ZW1lbnQ9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fubm90YXRpb25fZGVjbGFyYXRpb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9ibG9jaz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9jb25zdGFudD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfbWV0aG9kX2JvZHk9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2FuZF9pbl90eXBlX3BhcmFtZXRlcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXNzaWdubWVudF9vcGVyYXRvcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2JpbmFyeV9vcGVyYXRvcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2JyYWNlX2luX2Jsb2NrPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX3BhcmVuX2luX2Nhc3Q9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Nhc2U9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2NvbmRpdGlvbmFsPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9mb3I9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Fubm90YXRpb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9lbnVtX2RlY2xhcmF0aW9ucz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZm9yX2luaXRzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2ludm9jYXRpb25fYXJndW1lbnRzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fdHlwZV9wYXJhbWV0ZXJzPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9lbGxpcHNpcz1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Nhc3Q9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9zd2l0Y2g9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fd2hpbGU9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9wb3N0Zml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3F1ZXN0aW9uX2luX3dpbGRjYXJkPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfc2VtaWNvbG9uX2luX2Zvcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYW5kX2luX3R5cGVfcGFyYW1ldGVyPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYXNzaWdubWVudF9vcGVyYXRvcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2JpbmFyeV9vcGVyYXRvcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5faWY9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Fzc2VydD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Nhc2U9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9kZWZhdWx0PWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Zvcj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fdGhyb3dzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2V4cGxpY2l0Y29uc3RydWN0b3JjYWxsX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5pdHM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbXVsdGlwbGVfZmllbGRfZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3N1cGVyaW50ZXJmYWNlcz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfZWxsaXBzaXM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Jsb2NrPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fZW51bV9jb25zdGFudD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9zd2l0Y2g9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9mb3I9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2lmPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl93aGlsZT1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl9yZXR1cm49aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25faW5fdGhyb3c9aW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wb3N0Zml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3ByZWZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9xdWVzdGlvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3F1ZXN0aW9uX2luX3dpbGRjYXJkPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbj1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9zZW1pY29sb25faW5fZm9yPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3VuYXJ5X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9icmFja2V0c19pbl9hcnJheV90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfYnJhY2VzX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFja2V0c19pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9hbm5vdGF0aW9uX3R5cGVfbWVtYmVyX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydAotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZWxzZV9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9lbXB0eV9hcnJheV9pbml0aWFsaXplcl9vbl9vbmVfbGluZT1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfaW1wbGVfaWZfb25fb25lX2xpbmU9ZmFsc2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX3RoZW5fc3RhdGVtZW50X29uX3NhbWVfbGluZT1mYWxzZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmxpbmVTcGxpdD0xNDAKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5udW1iZXJfb2ZfYmxhbmtfbGluZXNfYXRfYmVnaW5uaW5nX29mX21ldGhvZF9ib2R5PTAKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5udW1iZXJfb2ZfZW1wdHlfbGluZXNfdG9fcHJlc2VydmU9MQotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnB1dF9lbXB0eV9zdGF0ZW1lbnRfb25fbmV3X2xpbmU9ZmFsc2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLmNoYXI9c3BhY2UKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLnNpemU9Mgotb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnVzZV90YWJzX29ubHlfZm9yX2xlYWRpbmdfaW5kZW50YXRpb25zPWZhbHNlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEwNWMzMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jVGh1IE1hciAwOCAxMDoyMzozNSBFU1QgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWZvcm1hdHRlcl9wcm9maWxlPV9FTUZDb2RlRm9ybWF0dGVyLnByb2ZpbGUKLWZvcm1hdHRlcl9zZXR0aW5nc192ZXJzaW9uPTExCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLmNvcmUucHJlZnMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UucGRlLmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmYTI1MDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jVGh1IEFwciAxMiAwMDowNzowOSBFRFQgMjAwNwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLXJlc29sdmUucmVxdWlyZWJ1bmRsZT1mYWxzZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJmMDE3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVwbHVnaW5OYW1lCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0czsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMS4wLjIwNC5xdWFsaWZpZXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLldTRExUZXN0c1BsdWdpbgotQnVuZGxlLVZlbmRvcjogJXByb3ZpZGVyTmFtZQotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmFwYWNoZS54ZXJjZXMsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLAotIG9yZy5lY2xpcHNlLmVtZi5lY29yZSwKLSBvcmcuZWNsaXBzZS54c2QsCi0gb3JnLmp1bml0O2J1bmRsZS12ZXJzaW9uPSJbMy44LjAsNC4wLjApIiwKLSBqYXZheC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS41LjAsMS42LjApIiwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbCwKLSBvcmcuZWNsaXBzZS53c3QuY29tbW9uLnVyaXJlc29sdmVyCi1CdW5kbGUtQ2xhc3NQYXRoOiB3c2RsLnRlc3RzLmphcgotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwKLUJ1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5Ci1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL2Fib3V0Lmh0bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTk5ZGYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGUwMGFiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotYmluLmluY2x1ZGVzID0gdGVzdC54bWwsXAotICAgICAgICAgICAgICAgd3NkbC50ZXN0cy5qYXIsXAotICAgICAgICAgICAgICAgc2FtcGxlcy8sXAotICAgICAgICAgICAgICAgYWJvdXQuaHRtbCxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8KLXNvdXJjZS53c2RsLnRlc3RzLmphciA9IHNyYy8KLWphdmFjV2FybmluZ3Mud3NkbC50ZXN0cy5qYXI9LWRpc2NvdXJhZ2VkCi1zb3VyY2Uud3NkbC50ZXN0cy5qYXIgPSBzcmMvCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9wbHVnaW4ucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjhhZDM5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1wbHVnaW5OYW1lID0gV1NETCBKVW5pdCBUZXN0Ci1wcm92aWRlck5hbWUgPSBFY2xpcHNlLm9yZwpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy8uY3ZzaWdub3JlIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmQ0YzJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWdlbmVyYXRlZApkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9CaW5kaW5nRmF1bHRSZWNvbmNpbGlhdGlvbi9CaW5kaW5nRmF1bHRTYW1wbGUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvQmluZGluZ0ZhdWx0UmVjb25jaWxpYXRpb24vQmluZGluZ0ZhdWx0U2FtcGxlLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZmNhMDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9CaW5kaW5nRmF1bHRSZWNvbmNpbGlhdGlvbi9CaW5kaW5nRmF1bHRTYW1wbGUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIg0KLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmluZGluZ0ZhdWx0U2FtcGxlLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSINCi0JbmFtZT0iQmluZGluZ0ZhdWx0U2FtcGxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmluZGluZ0ZhdWx0U2FtcGxlLyI+DQotCTx3c2RsOnR5cGVzPg0KLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0JpbmRpbmdGYXVsdFNhbXBsZS8iDQotCQkJeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+DQotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik9wZXJhdGlvbjEiPg0KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPg0KLQkJCQkJPHhzZDpzZXF1ZW5jZT4NCi0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+DQotCQkJCQk8L3hzZDpzZXF1ZW5jZT4NCi0JCQkJPC94c2Q6Y29tcGxleFR5cGU+DQotCQkJPC94c2Q6ZWxlbWVudD4NCi0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iT3BlcmF0aW9uMVJlc3BvbnNlIj4NCi0JCQkJPHhzZDpjb21wbGV4VHlwZT4NCi0JCQkJCTx4c2Q6c2VxdWVuY2U+DQotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyIgLz4NCi0JCQkJCTwveHNkOnNlcXVlbmNlPg0KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4NCi0JCQk8L3hzZDplbGVtZW50Pg0KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJPcGVyYXRpb24xRmF1bHQiPg0KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPg0KLQkJCQkJPHhzZDpzZXF1ZW5jZT4NCi0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iZmF1bHQiIHR5cGU9InhzZDpzdHJpbmciIC8+DQotCQkJCQk8L3hzZDpzZXF1ZW5jZT4NCi0JCQkJPC94c2Q6Y29tcGxleFR5cGU+DQotCQkJPC94c2Q6ZWxlbWVudD4NCi0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iT3BlcmF0aW9uMiI+DQotCQkJCTx4c2Q6Y29tcGxleFR5cGU+DQotCQkJCQk8eHNkOnNlcXVlbmNlPg0KLQ0KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4NCi0JCQkJCTwveHNkOnNlcXVlbmNlPg0KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4NCi0JCQk8L3hzZDplbGVtZW50Pg0KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJPcGVyYXRpb24yUmVzcG9uc2UiPg0KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPg0KLQkJCQkJPHhzZDpzZXF1ZW5jZT4NCi0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50Pg0KLQkJCQkJPC94c2Q6c2VxdWVuY2U+DQotCQkJCTwveHNkOmNvbXBsZXhUeXBlPg0KLQkJCTwveHNkOmVsZW1lbnQ+DQotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik9wZXJhdGlvbjJGYXVsdDEiPg0KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPg0KLQkJCQkJPHhzZDpzZXF1ZW5jZT4NCi0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iT3BlcmF0aW9uMkZhdWx0MSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4NCi0JCQkJCTwveHNkOnNlcXVlbmNlPg0KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4NCi0JCQk8L3hzZDplbGVtZW50Pg0KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJPcGVyYXRpb24yRmF1bHQyIj4NCi0JCQkJPHhzZDpjb21wbGV4VHlwZT4NCi0JCQkJCTx4c2Q6c2VxdWVuY2U+DQotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Ik9wZXJhdGlvbjJGYXVsdDIiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+DQotCQkJCQk8L3hzZDpzZXF1ZW5jZT4NCi0JCQkJPC94c2Q6Y29tcGxleFR5cGU+DQotCQkJPC94c2Q6ZWxlbWVudD4NCi0JCTwveHNkOnNjaGVtYT4NCi0JPC93c2RsOnR5cGVzPg0KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik9wZXJhdGlvbjFSZXF1ZXN0Ij4NCi0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk9wZXJhdGlvbjEiIG5hbWU9InBhcmFtZXRlcnMiIC8+DQotCTwvd3NkbDptZXNzYWdlPg0KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik9wZXJhdGlvbjFSZXNwb25zZSI+DQotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpPcGVyYXRpb24xUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiIC8+DQotCTwvd3NkbDptZXNzYWdlPg0KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik9wZXJhdGlvbjFGYXVsdCI+DQotCQk8d3NkbDpwYXJ0IG5hbWU9IkZhdWx0IiBlbGVtZW50PSJ0bnM6T3BlcmF0aW9uMUZhdWx0IiAvPg0KLQk8L3dzZGw6bWVzc2FnZT4NCi0JPHdzZGw6bWVzc2FnZSBuYW1lPSJPcGVyYXRpb24yUmVxdWVzdCI+DQotCQk8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9InRuczpPcGVyYXRpb24yIj48L3dzZGw6cGFydD4NCi0JPC93c2RsOm1lc3NhZ2U+DQotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iT3BlcmF0aW9uMlJlc3BvbnNlIj4NCi0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk9wZXJhdGlvbjJSZXNwb25zZSI+PC93c2RsOnBhcnQ+DQotCTwvd3NkbDptZXNzYWdlPg0KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik9wZXJhdGlvbjJGYXVsdDEiPg0KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6T3BlcmF0aW9uMkZhdWx0MSI+PC93c2RsOnBhcnQ+DQotCTwvd3NkbDptZXNzYWdlPg0KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik9wZXJhdGlvbjJGYXVsdDIiPg0KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6T3BlcmF0aW9uMkZhdWx0MiI+PC93c2RsOnBhcnQ+DQotCTwvd3NkbDptZXNzYWdlPg0KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJTYW1wbGVQb3J0Ij4NCi0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xIj4NCi0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6T3BlcmF0aW9uMVJlcXVlc3QiIC8+DQotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpPcGVyYXRpb24xUmVzcG9uc2UiIC8+DQotCQk8L3dzZGw6b3BlcmF0aW9uPg0KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbjIiPg0KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpPcGVyYXRpb24yUmVxdWVzdCIgLz4NCi0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk9wZXJhdGlvbjJSZXNwb25zZSIgLz4NCi0JCQk8d3NkbDpmYXVsdCBuYW1lPSJPcGVyYXRpb24yRmF1bHQxIiBtZXNzYWdlPSJ0bnM6T3BlcmF0aW9uMkZhdWx0MSIgLz4NCi0JCQk8d3NkbDpmYXVsdCBuYW1lPSJPcGVyYXRpb24yRmF1bHQyIiBtZXNzYWdlPSJ0bnM6T3BlcmF0aW9uMkZhdWx0MiIgLz4NCi0JCTwvd3NkbDpvcGVyYXRpb24+DQotCTwvd3NkbDpwb3J0VHlwZT4NCi0JPHdzZGw6YmluZGluZyBuYW1lPSJTYW1wbGVQb3J0U09BUEJpbmRpbmciIHR5cGU9InRuczpTYW1wbGVQb3J0Ij4NCi0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4NCi0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24xIj4NCi0JCQk8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CaW5kaW5nRmF1bHRTYW1wbGUvT3BlcmF0aW9uMSIgLz4NCi0JCQk8d3NkbDppbnB1dD4NCi0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+DQotCQkJPC93c2RsOmlucHV0Pg0KLQkJCTx3c2RsOm91dHB1dD4NCi0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+DQotCQkJPC93c2RsOm91dHB1dD4NCi0JCQk8d3NkbDpmYXVsdCBuYW1lPSJPcGVyYXRpb24xRmF1bHQiPg0KLQkJCQk8c29hcDpmYXVsdCBuYW1lPSJPcGVyYXRpb24xRmF1bHQiIC8+DQotCQkJPC93c2RsOmZhdWx0Pg0KLQkJPC93c2RsOm9wZXJhdGlvbj4NCi0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJPcGVyYXRpb24yIj4NCi0JCQk8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CaW5kaW5nRmF1bHRTYW1wbGUvT3BlcmF0aW9uMiIgLz4NCi0JCQk8d3NkbDppbnB1dD4NCi0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+DQotCQkJPC93c2RsOmlucHV0Pg0KLQkJCTx3c2RsOm91dHB1dD4NCi0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+DQotCQkJPC93c2RsOm91dHB1dD4NCi0JCQk8d3NkbDpmYXVsdCBuYW1lPSJPcGVyYXRpb24yRmF1bHQxIj4NCi0JCQkJPHNvYXA6ZmF1bHQgdXNlPSJsaXRlcmFsIiBuYW1lPSJPcGVyYXRpb24yRmF1bHQxIiAvPg0KLQkJCTwvd3NkbDpmYXVsdD4NCi0JCQk8d3NkbDpmYXVsdCBuYW1lPSJPcGVyYXRpb24yRmF1bHQyIj4NCi0JCQkJPHNvYXA6ZmF1bHQgdXNlPSJsaXRlcmFsIiBuYW1lPSJPcGVyYXRpb24yRmF1bHQyIiAvPg0KLQkJCTwvd3NkbDpmYXVsdD4NCi0JCTwvd3NkbDpvcGVyYXRpb24+DQotCTwvd3NkbDpiaW5kaW5nPg0KLQk8d3NkbDpzZXJ2aWNlIG5hbWU9IlNhbXBsZVNlcnZpY2UiPg0KLQkJPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6U2FtcGxlUG9ydFNPQVBCaW5kaW5nIiBuYW1lPSJTYW1wbGVQb3J0Ij4NCi0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4NCi0JCTwvd3NkbDpwb3J0Pg0KLQk8L3dzZGw6c2VydmljZT4NCi08L3dzZGw6ZGVmaW5pdGlvbnM+DQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9CaW5kaW5nT3BlcmF0aW9uUmVjb25jaWxpYXRpb24vQmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0JpbmRpbmdPcGVyYXRpb25SZWNvbmNpbGlhdGlvbi9CaW5kaW5nT3BlcmF0aW9uUmVjb25jaWxpYXRpb24ud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYzMDI2ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0JpbmRpbmdPcGVyYXRpb25SZWNvbmNpbGlhdGlvbi9CaW5kaW5nT3BlcmF0aW9uUmVjb25jaWxpYXRpb24ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCW5hbWU9IkJpbmRpbmdPcGVyYXRpb25SZWNvbmNpbGlhdGlvbiIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uLyIKLQkJCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotCi0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCi0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCi0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0MiI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbiIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UyIj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QzIj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCi0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZTMiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQotCTx3c2RsOnBvcnRUeXBlIG5hbWU9IkJpbmRpbmdPcGVyYXRpb25SZWNvbmNpbGlhdGlvbiI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uMiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdDIiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlMiIgLz4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbjMiPgotCQkJPHdzZGw6aW5wdXQgbmFtZT0iSW5wdXQzIiBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdDMiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbmFtZT0iT3V0cHV0MyIgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlMyIgLz4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci0KLQk8d3NkbDpiaW5kaW5nIG5hbWU9IkJpbmRpbmdPcGVyYXRpb25SZWNvbmNpbGlhdGlvblNPQVAiCi0JCXR5cGU9InRuczpCaW5kaW5nT3BlcmF0aW9uUmVjb25jaWxpYXRpb24iPgotCQk8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIKLQkJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTxzb2FwOm9wZXJhdGlvbgotCQkJCXNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uL05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbjIiPgotCQkJPHNvYXA6b3BlcmF0aW9uCi0JCQkJc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CaW5kaW5nT3BlcmF0aW9uUmVjb25jaWxpYXRpb24vTmV3T3BlcmF0aW9uMiIgLz4KLQkJCTx3c2RsOmlucHV0IG5hbWU9IklucHV0MiI+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQgbmFtZT0iT3V0cHV0MiI+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uMyI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0JpbmRpbmdPcGVyYXRpb25SZWNvbmNpbGlhdGlvbi9OZXdPcGVyYXRpb24zIiAvPgotCQkJPHdzZGw6aW5wdXQgbmFtZT0iSW5wdXQzIj4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dCBuYW1lPSJPdXRwdXQzIj4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JPHdzZGw6c2VydmljZSBuYW1lPSJCaW5kaW5nT3BlcmF0aW9uUmVjb25jaWxpYXRpb24iPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpCaW5kaW5nT3BlcmF0aW9uUmVjb25jaWxpYXRpb25TT0FQIgotCQkJbmFtZT0iQmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uU09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0R1cGxpY2F0ZVNBWEV4Y2VwdGlvbi9TQVhFeGNlcHRpb24ud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvRHVwbGljYXRlU0FYRXhjZXB0aW9uL1NBWEV4Y2VwdGlvbi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2Y0MzFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvRHVwbGljYXRlU0FYRXhjZXB0aW9uL1NBWEV4Y2VwdGlvbi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTmFtZXNwYWNlUHJlZml4Tm90Qm91bmQvIgotCXhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JbmFtZT0iTmFtZXNwYWNlUHJlZml4Tm90Qm91bmQiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL05hbWVzcGFjZVByZWZpeE5vdEJvdW5kLyI+Ci0JPHVuZGVmaW5lZDp0ZXN0IC8+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0Z1bGxFbGVtZW50RXh0ZW5zaWJpbGl0eS9FeHRlbmRlZFdTREwud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvRnVsbEVsZW1lbnRFeHRlbnNpYmlsaXR5L0V4dGVuZGVkV1NETC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmJkZjQ2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvRnVsbEVsZW1lbnRFeHRlbnNpYmlsaXR5L0V4dGVuZGVkV1NETC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9FeHRlbmRlZFdTREwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IkV4dGVuZGVkV1NETCIKLQl4bWxuczpleHQ9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRXh0ZW5zaW9ucy8iCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0V4dGVuZGVkV1NETC8iPgotCi0JPHdzZGw6aW1wb3J0IGxvY2F0aW9uPSJJbXBvcnRlZC53c2RsIgotCQluYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0ZWQvIj4KLQkJPGV4dDppbXBvcnQgLz4KLQk8L3dzZGw6aW1wb3J0PgotCi0JPHdzZGw6bWVzc2FnZSBuYW1lPSJleHRlbmRlZE1lc3NhZ2UiPgotCQk8ZXh0Om1lc3NhZ2UgLz4KLQkJPHdzZGw6cGFydCBuYW1lPSJleHRlbmRlZFBhcnQiPgotCQkJPGV4dDpwYXJ0IC8+Ci0JCTwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCi0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iZXh0ZW5kZWRQb3J0VHlwZSI+Ci0JCTxleHQ6cG9ydFR5cGUgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImV4dGVuZGVkT3BlcmF0aW9uIj4KLQkJCTxleHQ6b3BlcmF0aW9uIC8+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJleHRlbmRlZE1lc3NhZ2UiPgotCQkJCTxleHQ6aW5wdXQgLz4KLQkJCTwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJleHRlbmRlZE1lc3NhZ2UiPgotCQkJCTxleHQ6b3V0cHV0IC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQkJPHdzZGw6ZmF1bHQgbmFtZT0iZXh0ZW5kZWRGYXVsdCIgbWVzc2FnZT0iZXh0ZW5kZWRNZXNzYWdlIj4KLQkJCQk8ZXh0OmZhdWx0IC8+Ci0JCQk8L3dzZGw6ZmF1bHQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvRnVsbEVsZW1lbnRFeHRlbnNpYmlsaXR5L0ltcG9ydGVkLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0Z1bGxFbGVtZW50RXh0ZW5zaWJpbGl0eS9JbXBvcnRlZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmMwMDBlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvRnVsbEVsZW1lbnRFeHRlbnNpYmlsaXR5L0ltcG9ydGVkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnRlZC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IkltcG9ydGVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0ZWQvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydGVkLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgICAgPHhzZDpjb21wbGV4VHlwZT4KLSAgICAgICAgICA8eHNkOnNlcXVlbmNlPgotICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgICAgICA8L3hzZDpzZXF1ZW5jZT4KLSAgICAgICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0gICAgICA8L3hzZDplbGVtZW50PgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbiIgbmFtZT0icGFyYW1ldGVycyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkltcG9ydGVkIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkltcG9ydGVkU09BUCIgdHlwZT0idG5zOkltcG9ydGVkIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydGVkL05ld09wZXJhdGlvbiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkltcG9ydGVkIj4KLSAgICA8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpJbXBvcnRlZFNPQVAiIG5hbWU9IkltcG9ydGVkU09BUCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvR2V0V1NETFR5cGUvQmFkSW1wb3J0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0dldFdTRExUeXBlL0JhZEltcG9ydC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YThhN2QxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvR2V0V1NETFR5cGUvQmFkSW1wb3J0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9iYWR3c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iYmFkd3NkbCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL2JhZHdzZGwvIj4KLSAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnRNZS8iIGxvY2F0aW9uPSJJbXBvcnRNZS53c2RsIj48L3dzZGw6aW1wb3J0PgotICA8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vQmFkSW1wb3J0IiBzY2hlbWFMb2NhdGlvbj0iQmFkSW1wb3J0LnhzZCI+PC94c2Q6aW1wb3J0PgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvYmFkd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgICAgIDwveHNkOnNlcXVlbmNlPgotICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4KLSAgICAgIDwveHNkOmVsZW1lbnQ+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgICAgICA8eHNkOmNvbXBsZXhUeXBlPgotICAgICAgICAgIDx4c2Q6c2VxdWVuY2U+Ci0gICAgICAgICAgICA8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb24iIG5hbWU9InBhcmFtZXRlcnMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJiYWR3c2RsIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9ImJhZHdzZGxTT0FQIiB0eXBlPSJ0bnM6YmFkd3NkbCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9iYWR3c2RsL05ld09wZXJhdGlvbiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9ImJhZHdzZGwiPgotICAgIDx3c2RsOnBvcnQgYmluZGluZz0idG5zOmJhZHdzZGxTT0FQIiBuYW1lPSJiYWR3c2RsU09BUCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvR2V0V1NETFR5cGUvSW1wb3J0TWUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvR2V0V1NETFR5cGUvSW1wb3J0TWUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg4OTlkMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0dldFdTRExUeXBlL0ltcG9ydE1lLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pjx3c2RsOmRlZmluaXRpb25zIG5hbWU9IkltcG9ydE1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0TWUvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0TWUvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnRNZS8iPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgICAgIDwveHNkOnNlcXVlbmNlPgotICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4KLSAgICAgIDwveHNkOmVsZW1lbnQ+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgICAgICA8eHNkOmNvbXBsZXhUeXBlPgotICAgICAgICAgIDx4c2Q6c2VxdWVuY2U+Ci0gICAgICAgICAgICA8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZTEiPgotICAgICAgCTx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAJCTx4c2Q6c2VxdWVuY2U+Ci0KLSAgICAgIAkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0gICAgICAJCTwveHNkOnNlcXVlbmNlPgotICAgICAgCTwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJJbXBvcnRNZU1lc3NhZ2VSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb24iIG5hbWU9InBhcmFtZXRlcnMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iSW1wb3J0TWVNZXNzYWdlUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IkltcG9ydE1lTWVzc2FnZUV4dHJhIj4KLSAgCTx3c2RsOnBhcnQgbmFtZT0iTmV3UGFydCIgdHlwZT0ieHNkOnN0cmluZyI+PC93c2RsOnBhcnQ+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIj48L3dzZGw6cGFydD4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UxIj48L3dzZGw6cGFydD4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkltcG9ydE1lIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpJbXBvcnRNZU1lc3NhZ2VSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOkltcG9ydE1lTWVzc2FnZVJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJJbXBvcnRQb3J0VHlwZUV4dHJhIj4KLSAgCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ij48L3dzZGw6aW5wdXQ+Ci0gIAkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOm91dHB1dD4KLSAgCTwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJJbXBvcnRNZVNPQVAiIHR5cGU9InRuczpJbXBvcnRNZSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnRNZS9OZXdPcGVyYXRpb24iLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJJbXBvcnRCaW5kaW5nRXh0cmEiCi0gIAl0eXBlPSJ0bnM6SW1wb3J0UG9ydFR5cGVFeHRyYSI+Ci0gIAk8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIKLSAgCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLSAgCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAJCTxzb2FwOm9wZXJhdGlvbgotICAJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydE1lL05ld09wZXJhdGlvbiIgLz4KLSAgCQk8d3NkbDppbnB1dD4KLSAgCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0gIAkJPC93c2RsOmlucHV0PgotICAJCTx3c2RsOm91dHB1dD4KLSAgCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0gIAkJPC93c2RsOm91dHB1dD4KLSAgCTwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkltcG9ydE1lIj4KLSAgICA8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpJbXBvcnRNZVNPQVAiIG5hbWU9IkltcG9ydE1lU09BUCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJJbXBvcnRTZXJ2aWNlRXh0cmEiPgotICAJPHdzZGw6cG9ydCBuYW1lPSJJbXBvcnRQb3J0RXh0cmEiIGJpbmRpbmc9InRuczpJbXBvcnRCaW5kaW5nRXh0cmEiPgotICAJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIiAvPgotICAJPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9IYW5kbGVzRG9jdW1lbnRhdGlvbkVsZW1lbnRzL0RvY3VtZW50ZWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvSGFuZGxlc0RvY3VtZW50YXRpb25FbGVtZW50cy9Eb2N1bWVudGVkLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMzExMmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9IYW5kbGVzRG9jdW1lbnRhdGlvbkVsZW1lbnRzL0RvY3VtZW50ZWQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Eb2N1bWVudGVkLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJEb2N1bWVudGVkIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Eb2N1bWVudGVkLyI+Ci0JPHdzZGw6ZG9jdW1lbnRhdGlvbj5EZWZpbml0aW9ucyBkb2N1bWVudGF0aW9uLjwvd3NkbDpkb2N1bWVudGF0aW9uPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRG9jdW1lbnRlZC8iCi0JCQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpkb2N1bWVudGF0aW9uPk1lc3NhZ2UgZG9jdW1lbnRhdGlvbi48L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJEb2N1bWVudGVkIj4KLQkJPHdzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJCVBvcnQgdHlwZSBkb2N1bWVudGF0aW9uLgotCQk8L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8d3NkbDpkb2N1bWVudGF0aW9uPgotCQkJCU9wZXJhdGlvbiBkb2N1bWVudGF0aW9uLgotCQkJPC93c2RsOmRvY3VtZW50YXRpb24+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgLz4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci0JPHdzZGw6YmluZGluZyBuYW1lPSJEb2N1bWVudGVkU09BUCIgdHlwZT0idG5zOkRvY3VtZW50ZWQiPgotCQk8d3NkbDpkb2N1bWVudGF0aW9uPkJpbmRpbmcgZG9jdW1lbnRhdGlvbi48L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0JCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0RvY3VtZW50ZWQvTmV3T3BlcmF0aW9uIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iRG9jdW1lbnRlZCI+Ci0JCTx3c2RsOmRvY3VtZW50YXRpb24+U2VydmljZSBkb2N1bWVudGF0aW9uLjwvd3NkbDpkb2N1bWVudGF0aW9uPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpEb2N1bWVudGVkU09BUCIgbmFtZT0iRG9jdW1lbnRlZFNPQVAiPgotCQkJPHdzZGw6ZG9jdW1lbnRhdGlvbj5Qb3J0IGRvY3VtZW50YXRpb24uPC93c2RsOmRvY3VtZW50YXRpb24+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0lubGluZVR5cGVzRnJvbUltcG9ydHNBcmVWaXNpYmxlL0Eud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvSW5saW5lVHlwZXNGcm9tSW1wb3J0c0FyZVZpc2libGUvQS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGQ2MjIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvSW5saW5lVHlwZXNGcm9tSW1wb3J0c0FyZVZpc2libGUvQS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOmI9Imh0dHA6Ly9CIgotCXhtbG5zOnRucz0iaHR0cDovL0EiCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0JbmFtZT0iQSIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9BIj4JCQotCTx3c2RsOmltcG9ydCBsb2NhdGlvbj0iQi53c2RsIiBuYW1lc3BhY2U9Imh0dHA6Ly9CIi8+CQkJCQotCTx3c2RsOm1lc3NhZ2UgbmFtZT0ibWVzc2FnZSI+CQotCQk8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImI6QlR5cGUiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+CQotCTx3c2RsOnBvcnRUeXBlIG5hbWU9InBvcnRUeXBlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Im9wIj4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6bWVzc2FnZSIgLz4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0lubGluZVR5cGVzRnJvbUltcG9ydHNBcmVWaXNpYmxlL0Iud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvSW5saW5lVHlwZXNGcm9tSW1wb3J0c0FyZVZpc2libGUvQi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2U4NjQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvSW5saW5lVHlwZXNGcm9tSW1wb3J0c0FyZVZpc2libGUvQi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotCW5hbWU9IkIiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vQiI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9CIj4KLQkJCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iQlR5cGUiPgotCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJhdHRyaWJ1dGUxIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCTwveHNkOnNjaGVtYT4JCi0JPC93c2RsOnR5cGVzPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9Mb2Fkc05hbWVsZXNzRGVmaW5pdGlvbi9NaXNzaW5nTmFtZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9Mb2Fkc05hbWVsZXNzRGVmaW5pdGlvbi9NaXNzaW5nTmFtZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZThjOTk2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvTG9hZHNOYW1lbGVzc0RlZmluaXRpb24vTWlzc2luZ05hbWUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCi08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+DQotPC93c2RsOmRlZmluaXRpb25zPg0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvTG9hZHNOYW1lbGVzc0RlZmluaXRpb24vV2l0aE5hbWUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvTG9hZHNOYW1lbGVzc0RlZmluaXRpb24vV2l0aE5hbWUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkwOWI1MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0xvYWRzTmFtZWxlc3NEZWZpbml0aW9uL1dpdGhOYW1lLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIG5hbWU9IldTRExGaWxlIj4NCi08L3dzZGw6ZGVmaW5pdGlvbnM+DQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9Mb2NhbE5hbWVzcGFjZS9Mb2NhbE5hbWVzcGFjZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9Mb2NhbE5hbWVzcGFjZS9Mb2NhbE5hbWVzcGFjZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODI5YjI3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvTG9jYWxOYW1lc3BhY2UvTG9jYWxOYW1lc3BhY2Uud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL1NpbXBsZS8iDQotCXhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJTaW1wbGUiDQotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL1NpbXBsZS8iPg0KLQ0KLQk8d3NkbDp0eXBlcz4NCi0NCi0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiDQotCQkJZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiDQotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvU2ltcGxlLyI+DQotDQotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik9wZXJhdGlvbklucHV0Ij4NCi0NCi0JCQkJPHhzZDpjb21wbGV4VHlwZT4NCi0NCi0JCQkJCTx4c2Q6c2VxdWVuY2U+DQotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImF0dHJpYnV0ZTEiDQotCQkJCQkJCXR5cGU9InhzZDpzdHJpbmciIC8+DQotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImF0dHJpYnV0ZTIiDQotCQkJCQkJCXR5cGU9InhzZDpzdHJpbmciIC8+DQotCQkJCQk8L3hzZDpzZXF1ZW5jZT4NCi0JCQkJPC94c2Q6Y29tcGxleFR5cGU+DQotCQkJPC94c2Q6ZWxlbWVudD4NCi0NCi0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iT3BlcmF0aW9uT3V0cHV0Ij4NCi0NCi0JCQkJPHhzZDpjb21wbGV4VHlwZT4NCi0NCi0JCQkJCTx4c2Q6c2VxdWVuY2U+DQotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImF0dHJpYnV0ZTEiDQotCQkJCQkJCXR5cGU9InhzZDpzdHJpbmciIC8+DQotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImF0dHJpYnV0ZTIiDQotCQkJCQkJCXR5cGU9InhzZDpzdHJpbmciIC8+DQotCQkJCQk8L3hzZDpzZXF1ZW5jZT4NCi0JCQkJPC94c2Q6Y29tcGxleFR5cGU+DQotCQkJPC94c2Q6ZWxlbWVudD4NCi0JCTwveHNkOnNjaGVtYT4NCi0JPC93c2RsOnR5cGVzPg0KLQ0KLQk8d3NkbDptZXNzYWdlIG5hbWU9Im15T3BlcmF0aW9uUmVzcG9uc2UiPg0KLQkJPHdzZGw6cGFydCBuYW1lPSJteU9wZXJhdGlvblJlc3BvbnNlIg0KLQkJCWVsZW1lbnQ9InRuczpPcGVyYXRpb25PdXRwdXQiIC8+DQotCTwvd3NkbDptZXNzYWdlPg0KLQ0KLQk8d3NkbDptZXNzYWdlIG5hbWU9Im15T3BlcmF0aW9uUmVxdWVzdCI+DQotCQk8d3NkbDpwYXJ0IHhtbG5zOnBhcnR0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9TaW1wbGUvIg0KLQkJCW5hbWU9Im15T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0icGFydHRuczpPcGVyYXRpb25JbnB1dCIgLz4NCi0JPC93c2RsOm1lc3NhZ2U+DQotDQotCTx3c2RsOnBvcnRUeXBlIG5hbWU9Ik15UG9ydFR5cGUiPg0KLQ0KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Im15T3BlcmF0aW9uIj4NCi0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6bXlPcGVyYXRpb25SZXF1ZXN0IiAvPg0KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6bXlPcGVyYXRpb25SZXNwb25zZSIgLz4NCi0JCTwvd3NkbDpvcGVyYXRpb24+DQotCTwvd3NkbDpwb3J0VHlwZT4NCi0JDQotPC93c2RsOmRlZmluaXRpb25zPg0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvTG9jYWxOYW1lc3BhY2UvTG9jYWxOYW1lc3BhY2UyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL0xvY2FsTmFtZXNwYWNlL0xvY2FsTmFtZXNwYWNlMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGIyZWUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvTG9jYWxOYW1lc3BhY2UvTG9jYWxOYW1lc3BhY2UyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9leGFtcGxlLyIKLQl4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJleGFtcGxlIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9leGFtcGxlLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9leGFtcGxlLyI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJleGFtcGxlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgLz4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQkJbmFtZT0iZXhhbXBsZVNPQVAiIHR5cGU9InRuczpleGFtcGxlIj4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0JCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL2V4YW1wbGUvTmV3T3BlcmF0aW9uIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iZXhhbXBsZSI+Ci0JCTx3c2RsOnBvcnQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JCQliaW5kaW5nPSJ0bnM6ZXhhbXBsZVNPQVAiIG5hbWU9ImV4YW1wbGVTT0FQIj4KLQkJCTxhZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9OdWxsTmFtZXNwYWNlVVJJL0NvbmZpcm1hdGlvbi54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL051bGxOYW1lc3BhY2VVUkkvQ29uZmlybWF0aW9uLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM0MDg3Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL051bGxOYW1lc3BhY2VVUkkvQ29uZmlybWF0aW9uLnhzZAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvTnVsbE5hbWVzcGFjZVVSSS9Db250YWN0SW5mby54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL051bGxOYW1lc3BhY2VVUkkvQ29udGFjdEluZm8ueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzdkOGFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvTnVsbE5hbWVzcGFjZVVSSS9Db250YWN0SW5mby54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0NvbnRhY3RJbmZvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCi0JPHhzZDplbGVtZW50IG5hbWU9InBob25lTnVtYmVyIj4KLQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJPHhzZDplbGVtZW50IG5hbWU9ImFyZWFDb2RlIiB0eXBlPSJ4c2Q6aW50IiAvPgotCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJudW1iZXIiIHR5cGU9InhzZDppbnQiIC8+Ci0JCQk8L3hzZDpzZXF1ZW5jZT4KLQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JPC94c2Q6ZWxlbWVudD4KLQkKLQk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9ImFkZHJlc3NUeXBlIj4KLQkJPHhzZDpzZXF1ZW5jZT4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJzdHJlZXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iY2l0eSIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJPC94c2Q6c2VxdWVuY2U+Ci0JPC94c2Q6Y29tcGxleFR5cGU+Ci0KLTwveHNkOnNjaGVtYT4KLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9OdWxsTmFtZXNwYWNlVVJJL0NvbnRhY3RJbmZvU2VydmljZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9OdWxsTmFtZXNwYWNlVVJJL0NvbnRhY3RJbmZvU2VydmljZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTA5YzU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvTnVsbE5hbWVzcGFjZVVSSS9Db250YWN0SW5mb1NlcnZpY2Uud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJDb250YWN0SW5mb1NlcnZpY2UiCi0JeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQl4bWxuczpjb250YWN0PSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0NvbnRhY3RJbmZvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Db250YWN0SW5mb1NlcnZpY2UiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0NvbnRhY3RJbmZvU2VydmljZSI+Ci0KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Db250YWN0SW5mb1NlcnZpY2UiCi0JCQl4bWxuczpjb250YWN0PSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0NvbnRhY3RJbmZvIgotCQkJeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0NvbnRhY3RJbmZvU2VydmljZSIKLQkJCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQkJPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0NvbnRhY3RJbmZvIgotCQkJCXNjaGVtYUxvY2F0aW9uPSJDb250YWN0SW5mby54c2QiIC8+Ci0JCQk8eHNkOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iQ29uZmlybWF0aW9uLnhzZCIgLz4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQotCTx3c2RsOm1lc3NhZ2UgbmFtZT0idXBkYXRlUGhvbmVOdW1iZXJSZXF1ZXN0TXNnIj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJjb250YWN0OnBob25lTnVtYmVyIiBuYW1lPSJpbnB1dDEiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJ1cGRhdGVQaG9uZU51bWJlclJlc3BvbnNlTXNnIj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJDb25maXJtYXRpb24iIG5hbWU9Im91dHB1dDEiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJ1cGRhdGVBZGRyZXNzUmVxdWVzdE1zZyI+Ci0JCTx3c2RsOnBhcnQgdHlwZT0iY29udGFjdDphZGRyZXNzVHlwZSIgbmFtZT0iaW5wdXQyIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0idXBkYXRlQWRkcmVzc1Jlc3BvbnNlTXNnIj4KLQkJPHdzZGw6cGFydCB0eXBlPSJDb25maXJtYXRpb25UeXBlIiBuYW1lPSJvdXRwdXQyIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCi0JPHdzZGw6cG9ydFR5cGUgbmFtZT0idGVzdFBvcnRUeXBlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9InVwZGF0ZVBob25lTnVtYmVyIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczp1cGRhdGVQaG9uZU51bWJlclJlcXVlc3RNc2ciIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOnVwZGF0ZVBob25lTnVtYmVyUmVzcG9uc2VNc2ciIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJ1cGRhdGVBZGRyZXNzIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczp1cGRhdGVBZGRyZXNzUmVxdWVzdE1zZyIgLz4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6dXBkYXRlQWRkcmVzc1Jlc3BvbnNlTXNnIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL09wZXJhdGlvblN0eWxlL09wZXJhdGlvblN0eWxlVGVzdC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9PcGVyYXRpb25TdHlsZS9PcGVyYXRpb25TdHlsZVRlc3Qud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA2YWVjNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL09wZXJhdGlvblN0eWxlL09wZXJhdGlvblN0eWxlVGVzdC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQotPGRlZmluaXRpb25zIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6dG5zPSJodHRwOi8vZXhhbXBsZS5vcmciDQotCXhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIG5hbWU9Ik9wZXJhdGlvblN0eWxlVGVzdCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vZXhhbXBsZS5vcmciPg0KLQ0KLQk8amF4d3M6YmluZGluZ3MgeG1sbnM6amF4d3M9Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL2pheHdzIj4NCi0JCTxqYXh3czplbmFibGVXcmFwcGVyU3R5bGU+dHJ1ZTwvamF4d3M6ZW5hYmxlV3JhcHBlclN0eWxlPg0KLQkJPGpheHdzOmVuYWJsZUFzeW5jTWFwcGluZz5mYWxzZTwvamF4d3M6ZW5hYmxlQXN5bmNNYXBwaW5nPg0KLQk8L2pheHdzOmJpbmRpbmdzPg0KLQ0KLQk8dHlwZXM+DQotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9leGFtcGxlLm9yZyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSINCi0JCQllbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgeG1sbnM6dG5zPSJodHRwOi8vZXhhbXBsZS5vcmciPg0KLQ0KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJxdW90ZVJlcXVlc3QiIHR5cGU9InRuczpxdW90ZVJlcXVlc3RUeXBlIiAvPg0KLQ0KLQkJCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0icXVvdGVSZXF1ZXN0VHlwZSI+DQotCQkJCTx4c2Q6c2VxdWVuY2U+DQotCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ic3RvY2tTeW1ib2wiIHR5cGU9InhzZDppbnQiIC8+DQotCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0idHJhbnNhY3Rpb25EYXRlIiB0eXBlPSJ4c2Q6ZGF0ZSIgLz4NCi0JCQkJPC94c2Q6c2VxdWVuY2U+DQotCQkJPC94c2Q6Y29tcGxleFR5cGU+DQotDQotCQkJPHhzZDplbGVtZW50IG5hbWU9InF1b3RlUmVzcG9uc2UiIHR5cGU9InRuczpxdW90ZVJlc3BvbnNlVHlwZSIgLz4NCi0NCi0JCQk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9InF1b3RlUmVzcG9uc2VUeXBlIj4NCi0JCQkJPHhzZDpzZXF1ZW5jZT4NCi0JCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJ2YWx1ZSIgdHlwZT0ieHNkOmRvdWJsZSIgLz4NCi0JCQkJPC94c2Q6c2VxdWVuY2U+DQotCQkJPC94c2Q6Y29tcGxleFR5cGU+DQotDQotCQkJPHhzZDplbGVtZW50IG5hbWU9InF1b3RlRXJyb3IiIHR5cGU9InhzZDpzdHJpbmciIC8+DQotDQotCQk8L3hzZDpzY2hlbWE+DQotCTwvdHlwZXM+DQotDQotCTxtZXNzYWdlIG5hbWU9IlF1b3RlIj4NCi0JCTxwYXJ0IG5hbWU9InBhcmFtcyIgZWxlbWVudD0idG5zOnF1b3RlUmVxdWVzdCIgLz4NCi0JPC9tZXNzYWdlPg0KLQ0KLQk8bWVzc2FnZSBuYW1lPSJRdW90ZVJlc3BvbnNlIj4NCi0JCTxwYXJ0IG5hbWU9InJlc3VsdCIgZWxlbWVudD0idG5zOnF1b3RlUmVzcG9uc2UiIC8+DQotCTwvbWVzc2FnZT4NCi0NCi0JPG1lc3NhZ2UgbmFtZT0iUXVvdGVFcnJvciI+DQotCQk8cGFydCBuYW1lPSJlcnJvciIgZWxlbWVudD0idG5zOnF1b3RlRXJyb3IiIC8+DQotCTwvbWVzc2FnZT4NCi0NCi0JPHBvcnRUeXBlIG5hbWU9IlF1b3RlUG9ydFR5cGUiPg0KLQ0KLQkJPGpheHdzOmJpbmRpbmdzIHhtbG5zOmpheHdzPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9qYXh3cyI+DQotCQkJPGpheHdzOmNsYXNzIG5hbWU9IlF1b3RlUHJvdmlkZXJJbXBsIiAvPg0KLQkJCTxqYXh3czplbmFibGVXcmFwcGVyU3R5bGU+dHJ1ZTwvamF4d3M6ZW5hYmxlV3JhcHBlclN0eWxlPg0KLQkJCTxqYXh3czplbmFibGVBc3luY01hcHBpbmc+ZmFsc2U8L2pheHdzOmVuYWJsZUFzeW5jTWFwcGluZz4NCi0JCTwvamF4d3M6YmluZGluZ3M+DQotDQotCQk8b3BlcmF0aW9uIG5hbWU9IkdldFF1b3RlIj4NCi0NCi0JCQk8amF4d3M6YmluZGluZ3MgeG1sbnM6amF4d3M9Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL2pheHdzIg0KLQkJCQl4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+DQotCQkJCTxqYXh3czptZXRob2QgbmFtZT0iZ2V0UXVvdGUiIC8+DQotCQkJCTxqYXh3czpwYXJhbWV0ZXIgcGFydD0id3NkbDpkZWZpbml0aW9ucy93c2RsOm1lc3NhZ2VbQG5hbWU9J1F1b3RlJ10vd3NkbDpwYXJ0W0BuYW1lPSdwYXJhbXMnXSINCi0JCQkJCWNoaWxkRWxlbWVudE5hbWU9InRuczpzdG9ja1N5bWJvbCIgbmFtZT0ic3ltYm9sIiAvPg0KLQkJCQk8amF4d3M6cGFyYW1ldGVyIHBhcnQ9IndzZGw6ZGVmaW5pdGlvbnMvd3NkbDptZXNzYWdlW0BuYW1lPSdRdW90ZSddL3dzZGw6cGFydFtAbmFtZT0ncGFyYW1zJ10iDQotCQkJCQljaGlsZEVsZW1lbnROYW1lPSJ0bnM6dHJhbnNhY3Rpb25EYXRlIiBuYW1lPSJkYXRlIiAvPg0KLQkJCQk8amF4d3M6ZW5hYmxlV3JhcHBlclN0eWxlPnRydWU8L2pheHdzOmVuYWJsZVdyYXBwZXJTdHlsZT4NCi0JCQkJPGpheHdzOmVuYWJsZUFzeW5jTWFwcGluZz5mYWxzZTwvamF4d3M6ZW5hYmxlQXN5bmNNYXBwaW5nPg0KLQkJCTwvamF4d3M6YmluZGluZ3M+DQotDQotCQkJPGlucHV0IG1lc3NhZ2U9InRuczpRdW90ZSIgLz4NCi0NCi0JCQk8b3V0cHV0IG1lc3NhZ2U9InRuczpRdW90ZVJlc3BvbnNlIiAvPg0KLQ0KLQkJCTxmYXVsdCBuYW1lPSJRdW90ZUVycm9yIiBtZXNzYWdlPSJ0bnM6UXVvdGVFcnJvciI+DQotDQotCQkJCTxqYXh3czpiaW5kaW5ncyB4bWxuczpqYXh3cz0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvamF4d3MiPg0KLQkJCQkJPGpheHdzOmNsYXNzIG5hbWU9IlF1b3RlRXhjZXB0aW9uIiAvPg0KLQkJCQk8L2pheHdzOmJpbmRpbmdzPg0KLQ0KLQkJCTwvZmF1bHQ+DQotCQk8L29wZXJhdGlvbj4NCi0JPC9wb3J0VHlwZT4NCi0NCi0JPGJpbmRpbmcgbmFtZT0iUXVvdGVCaW5kaW5nIiB0eXBlPSJ0bnM6UXVvdGVQb3J0VHlwZSI+DQotDQotCQk8c29hcDpiaW5kaW5nIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiBzdHlsZT0iZG9jdW1lbnQiIC8+DQotDQotCQk8b3BlcmF0aW9uIG5hbWU9IkdldFF1b3RlIj4NCi0JCQk8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIiAvPg0KLQkJCTxpbnB1dD4NCi0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+DQotCQkJPC9pbnB1dD4NCi0JCQk8b3V0cHV0Pg0KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4NCi0JCQk8L291dHB1dD4NCi0JCQk8ZmF1bHQgbmFtZT0iUXVvdGVFcnJvciI+DQotCQkJCTxzb2FwOmZhdWx0IG5hbWU9IlF1b3RlRXJyb3IiIHVzZT0ibGl0ZXJhbCIgLz4NCi0JCQk8L2ZhdWx0Pg0KLQkJPC9vcGVyYXRpb24+DQotDQotCTwvYmluZGluZz4NCi0NCi0JPHNlcnZpY2UgbmFtZT0iUXVvdGVTZXJ2aWNlIj4NCi0NCi0JCTxqYXh3czpiaW5kaW5ncyB4bWxuczpqYXh3cz0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvamF4d3MiPg0KLQkJCTxqYXh3czpjbGFzcyBuYW1lPSJRdW90YXRpb25TZXJ2aWNlIiAvPg0KLQkJPC9qYXh3czpiaW5kaW5ncz4NCi0NCi0JCTxwb3J0IG5hbWU9IlF1b3RlUG9ydCIgYmluZGluZz0idG5zOlF1b3RlQmluZGluZyI+DQotDQotCQkJPGpheHdzOmJpbmRpbmdzIHhtbG5zOmpheHdzPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9qYXh3cyI+DQotCQkJCTxqYXh3czptZXRob2QgbmFtZT0iZ2V0UXVvdGF0aW9uU2VydmljZSIgLz4NCi0JCQk8L2pheHdzOmJpbmRpbmdzPg0KLQ0KLQkJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9xdW90ZSIgLz4NCi0NCi0JCTwvcG9ydD4NCi0NCi0JPC9zZXJ2aWNlPg0KLQ0KLTwvZGVmaW5pdGlvbnM+DQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9SZWNvbmNpbGVOb25XU0RMRWxlbWVudHMvUmVjb25jaWxlTm9uV1NETEVsZW1lbnRzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1JlY29uY2lsZU5vbldTRExFbGVtZW50cy9SZWNvbmNpbGVOb25XU0RMRWxlbWVudHMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRiNzg1Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1JlY29uY2lsZU5vbldTRExFbGVtZW50cy9SZWNvbmNpbGVOb25XU0RMRWxlbWVudHMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tL1JlY29uY2lsZU5vbldTRExFbGVtZW50cy8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IlJlY29uY2lsZU5vbldTRExFbGVtZW50cyIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tL1JlY29uY2lsZU5vbldTRExFbGVtZW50cy8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vUmVjb25jaWxlTm9uV1NETEVsZW1lbnRzLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgICAgPHhzZDpjb21wbGV4VHlwZT4KLSAgICAgICAgICA8eHNkOnNlcXVlbmNlPgotICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgICAgICA8L3hzZDpzZXF1ZW5jZT4KLSAgICAgICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0gICAgICA8L3hzZDplbGVtZW50PgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbiIgbmFtZT0icGFyYW1ldGVycyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlJlY29uY2lsZU5vbldTRExFbGVtZW50cyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJSZWNvbmNpbGVOb25XU0RMRWxlbWVudHNTT0FQIiB0eXBlPSJ0bnM6UmVjb25jaWxlTm9uV1NETEVsZW1lbnRzIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tL1JlY29uY2lsZU5vbldTRExFbGVtZW50cy9OZXdPcGVyYXRpb24iLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJSZWNvbmNpbGVOb25XU0RMRWxlbWVudHMiPgotICAgIDx3c2RsOnBvcnQgYmluZGluZz0idG5zOlJlY29uY2lsZU5vbldTRExFbGVtZW50c1NPQVAiIG5hbWU9IlJlY29uY2lsZU5vbldTRExFbGVtZW50c1NPQVAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1JlY29uY2lsZXNJbXBvcnRzV2l0aE5vTG9jYXRpb24vTWFpbi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9SZWNvbmNpbGVzSW1wb3J0c1dpdGhOb0xvY2F0aW9uL01haW4ud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM1ZTExMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1JlY29uY2lsZXNJbXBvcnRzV2l0aE5vTG9jYXRpb24vTWFpbi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJCIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOndzZGwxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0EvIj4KLQk8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0EvIiAvPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iQiI+Ci0JCTx3c2RsOnBvcnQgbmFtZT0iTmV3UG9ydCIgYmluZGluZz0id3NkbDE6QVNPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9UYXJnZXROYW1lc3BhY2UvVGFyZ2V0TmFtZXNwYWNlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1RhcmdldE5hbWVzcGFjZS9UYXJnZXROYW1lc3BhY2Uud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRmZDliYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1RhcmdldE5hbWVzcGFjZS9UYXJnZXROYW1lc3BhY2Uud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJUYXJnZXROYW1lc3BhY2UiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1RhcmdldE5hbWVzcGFjZS8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvVGFyZ2V0TmFtZXNwYWNlLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9UYXJnZXROYW1lc3BhY2UvIgotCQkJeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJUYXJnZXROYW1lc3BhY2UiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiAvPgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgLz4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci0JPHdzZGw6YmluZGluZyBuYW1lPSJUYXJnZXROYW1lc3BhY2VTT0FQIiB0eXBlPSJ0bnM6VGFyZ2V0TmFtZXNwYWNlIj4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0JCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9UYXJnZXROYW1lc3BhY2UvTmV3T3BlcmF0aW9uIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iVGFyZ2V0TmFtZXNwYWNlIj4KLQkJPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6VGFyZ2V0TmFtZXNwYWNlU09BUCIgbmFtZT0iVGFyZ2V0TmFtZXNwYWNlU09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9UeXBlQW5kRWxlbWVudFJlc29sdXRpb24vVGVzdC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9UeXBlQW5kRWxlbWVudFJlc29sdXRpb24vVGVzdC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGRlODhkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvVHlwZUFuZEVsZW1lbnRSZXNvbHV0aW9uL1Rlc3Qud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQotPGRlZmluaXRpb25zIG5hbWU9IlRlc3RTZXJ2aWNlIg0KLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZXN0Lm9yZy9TZXJ2aWNlLyINCi0JeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KLQl4bWxuczp0bnM9Imh0dHA6Ly90ZXN0Lm9yZy9TZXJ2aWNlLyINCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSINCi0JeG1sbnM6dGVzdD0iaHR0cDovL3Rlc3Qub3JnLyI+DQotCTx0eXBlcz4NCi0JCTx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4NCi0JCQk8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3Rlc3Qub3JnLyINCi0JCQkJc2NoZW1hTG9jYXRpb249IlRlc3QxLnhzZCIgLz4NCi0JCTwveHM6c2NoZW1hPg0KLQkJPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPg0KLQkJCTx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vdGVzdC5vcmcvIg0KLQkJCQlzY2hlbWFMb2NhdGlvbj0iVGVzdDIueHNkIiAvPg0KLQkJPC94czpzY2hlbWE+DQotCTwvdHlwZXM+DQotCTxtZXNzYWdlIG5hbWU9InRlc3RSZXF1ZXN0Ij4NCi0JCTxwYXJ0IG5hbWU9InJlcXVlc3RQYXJ0IiB0eXBlPSJ0ZXN0Ok15VHlwZSIgLz4NCi0JPC9tZXNzYWdlPg0KLQk8bWVzc2FnZSBuYW1lPSJ0ZXN0UmVzcG9uc2UiPg0KLQkJPHBhcnQgbmFtZT0icmVzcG9uc2VQYXJ0IiBlbGVtZW50PSJ0ZXN0Ok15RWxlbWVudCIgLz4NCi0JPC9tZXNzYWdlPg0KLQk8cG9ydFR5cGUgbmFtZT0iVGVzdFBvcnQiPg0KLQkJPG9wZXJhdGlvbiBuYW1lPSJ0ZXN0T3BlcmF0aW9uIj4NCi0JCQk8aW5wdXQgbWVzc2FnZT0idG5zOnRlc3RSZXF1ZXN0IiBuYW1lPSJ0ZXN0UmVxdWVzdCIgLz4NCi0JCQk8b3V0cHV0IG1lc3NhZ2U9InRuczp0ZXN0UmVzcG9uc2UiIG5hbWU9InRlc3RSZXNwb25zZSIgLz4NCi0JCTwvb3BlcmF0aW9uPg0KLQ0KLQk8L3BvcnRUeXBlPg0KLTwvZGVmaW5pdGlvbnM+DQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9UeXBlQW5kRWxlbWVudFJlc29sdXRpb24vVGVzdDEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9UeXBlQW5kRWxlbWVudFJlc29sdXRpb24vVGVzdDEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmMzNmFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvVHlwZUFuZEVsZW1lbnRSZXNvbHV0aW9uL1Rlc3QxLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCi08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSINCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVzdC5vcmcvIg0KLQl4bWxuczp0bnM9Imh0dHA6Ly90ZXN0Lm9yZy8iPg0KLTwvc2NoZW1hPg0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvVHlwZUFuZEVsZW1lbnRSZXNvbHV0aW9uL1Rlc3QyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvVHlwZUFuZEVsZW1lbnRSZXNvbHV0aW9uL1Rlc3QyLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI4MWExOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1R5cGVBbmRFbGVtZW50UmVzb2x1dGlvbi9UZXN0Mi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIg0KLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZXN0Lm9yZy8iDQotCXhtbG5zOnRucz0iaHR0cDovL3Rlc3Qub3JnLyI+DQotCQ0KLQk8ZWxlbWVudCBuYW1lPSJNeUVsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50Pg0KLQ0KLQk8c2ltcGxlVHlwZSBuYW1lPSJNeVR5cGUiPg0KLQkJPHJlc3RyaWN0aW9uIGJhc2U9InN0cmluZyI+PC9yZXN0cmljdGlvbj4NCi0JPC9zaW1wbGVUeXBlPg0KLQ0KLTwvc2NoZW1hPg0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvVHlwZXNFeHRlbnNpYmlsaXR5L1R5cGVzRXh0ZW5zaWJpbGl0eS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9UeXBlc0V4dGVuc2liaWxpdHkvVHlwZXNFeHRlbnNpYmlsaXR5LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNTY2OGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9UeXBlc0V4dGVuc2liaWxpdHkvVHlwZXNFeHRlbnNpYmlsaXR5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1R5cGVzRXh0ZW5zaWJpbGl0eS8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iVHlwZXNFeHRlbnNpYmlsaXR5IgotCXhtbG5zOnR5cGVFeD0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9PdGhlclR5cGVzLyIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvVHlwZXNFeHRlbnNpYmlsaXR5LyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx0eXBlRXg6dHlwZURlZiAvPgotCQk8eHNkOnNjaGVtYQotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1R5cGVzLyI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0idGVzdCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJPC94c2Q6c2NoZW1hPgotCQk8dHlwZUV4OnR5cGVEZWYgLz4KLQk8L3dzZGw6dHlwZXM+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1dTREw0SlJlbW92ZS9JbXBvcnRNZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9XU0RMNEpSZW1vdmUvSW1wb3J0TWUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg4OTlkMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1dTREw0SlJlbW92ZS9JbXBvcnRNZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJJbXBvcnRNZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydE1lLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydE1lLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0TWUvIj4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgICA8eHNkOmNvbXBsZXhUeXBlPgotICAgICAgICAgIDx4c2Q6c2VxdWVuY2U+Ci0gICAgICAgICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgICAgICA8L3hzZDpzZXF1ZW5jZT4KLSAgICAgICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0gICAgICA8L3hzZDplbGVtZW50PgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLSAgICAgICAgPHhzZDpjb21wbGV4VHlwZT4KLSAgICAgICAgICA8eHNkOnNlcXVlbmNlPgotICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgICAgIDwveHNkOnNlcXVlbmNlPgotICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4KLSAgICAgIDwveHNkOmVsZW1lbnQ+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UxIj4KLSAgICAgIAk8eHNkOmNvbXBsZXhUeXBlPgotICAgICAgCQk8eHNkOnNlcXVlbmNlPgotCi0gICAgICAJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotICAgICAgCQk8L3hzZDpzZXF1ZW5jZT4KLSAgICAgIAk8L3hzZDpjb21wbGV4VHlwZT4KLSAgICAgIDwveHNkOmVsZW1lbnQ+Ci0gICAgPC94c2Q6c2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iSW1wb3J0TWVNZXNzYWdlUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IkltcG9ydE1lTWVzc2FnZVJlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJJbXBvcnRNZU1lc3NhZ2VFeHRyYSI+Ci0gIAk8d3NkbDpwYXJ0IG5hbWU9Ik5ld1BhcnQiIHR5cGU9InhzZDpzdHJpbmciPjwvd3NkbDpwYXJ0PgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLSAgCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbiI+PC93c2RsOnBhcnQ+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLSAgCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlMSI+PC93c2RsOnBhcnQ+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJJbXBvcnRNZSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6SW1wb3J0TWVNZXNzYWdlUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpJbXBvcnRNZU1lc3NhZ2VSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iSW1wb3J0UG9ydFR5cGVFeHRyYSI+Ci0gIAk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCI+PC93c2RsOmlucHV0PgotICAJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpvdXRwdXQ+Ci0gIAk8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iSW1wb3J0TWVTT0FQIiB0eXBlPSJ0bnM6SW1wb3J0TWUiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0TWUvTmV3T3BlcmF0aW9uIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iSW1wb3J0QmluZGluZ0V4dHJhIgotICAJdHlwZT0idG5zOkltcG9ydFBvcnRUeXBlRXh0cmEiPgotICAJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0gIAkJdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIC8+Ci0gIAk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgCQk8c29hcDpvcGVyYXRpb24KLSAgCQkJc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnRNZS9OZXdPcGVyYXRpb24iIC8+Ci0gIAkJPHdzZGw6aW5wdXQ+Ci0gIAkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotICAJCTwvd3NkbDppbnB1dD4KLSAgCQk8d3NkbDpvdXRwdXQ+Ci0gIAkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotICAJCTwvd3NkbDpvdXRwdXQ+Ci0gIAk8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJJbXBvcnRNZSI+Ci0gICAgPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6SW1wb3J0TWVTT0FQIiBuYW1lPSJJbXBvcnRNZVNPQVAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iSW1wb3J0U2VydmljZUV4dHJhIj4KLSAgCTx3c2RsOnBvcnQgbmFtZT0iSW1wb3J0UG9ydEV4dHJhIiBiaW5kaW5nPSJ0bnM6SW1wb3J0QmluZGluZ0V4dHJhIj4KLSAgCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLSAgCTwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvV1NETDRKUmVtb3ZlL1JlbW92ZVZpYVdTREw0Si53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9XU0RMNEpSZW1vdmUvUmVtb3ZlVmlhV1NETDRKLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NzQ0YjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9XU0RMNEpSZW1vdmUvUmVtb3ZlVmlhV1NETDRKLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pjx3c2RsOmRlZmluaXRpb25zIG5hbWU9IlJlbW92ZVZpYVdTREw0SiIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1JlbW92ZVZpYVdTREw0Si8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9SZW1vdmVWaWFXU0RMNEovIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0TWUvIj4KLSAgICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydE1lLyIgbG9jYXRpb249IkltcG9ydE1lLndzZGwiPjwvd3NkbDppbXBvcnQ+Ci0gICAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1JlbW92ZVZpYVdTREw0Si8iPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgICAgIDwveHNkOnNlcXVlbmNlPgotICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4KLSAgICAgIDwveHNkOmVsZW1lbnQ+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgICAgICA8eHNkOmNvbXBsZXhUeXBlPgotICAgICAgICAgIDx4c2Q6c2VxdWVuY2U+Ci0gICAgICAgICAgICA8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZTEiPgotICAgICAgCTx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAJCTx4c2Q6c2VxdWVuY2U+Ci0KLSAgICAgIAkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0gICAgICAJCTwveHNkOnNlcXVlbmNlPgotICAgICAgCTwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJSZW1vdmVWaWFXU0RMNEpNZXNzYWdlUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9IlJlbW92ZVZpYVdTREw0Sk1lc3NhZ2VSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iUmVtb3ZlVmlhV1NETDRKTWVzc2FnZUV4dHJhIj4KLSAgCTx3c2RsOnBhcnQgbmFtZT0iTmV3UGFydCIgdHlwZT0ieHNkOnN0cmluZyI+PC93c2RsOnBhcnQ+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIj48L3dzZGw6cGFydD4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UxIj48L3dzZGw6cGFydD4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlJlbW92ZVZpYVdTREw0SiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6UmVtb3ZlVmlhV1NETDRKTWVzc2FnZVJlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6UmVtb3ZlVmlhV1NETDRKTWVzc2FnZVJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluUG9ydFR5cGVFeHRyYSI+Ci0gIAk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCI+PC93c2RsOmlucHV0PgotICAJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpvdXRwdXQ+Ci0gIAk8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iUmVtb3ZlVmlhV1NETDRKU09BUCIgdHlwZT0idG5zOlJlbW92ZVZpYVdTREw0SiI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9SZW1vdmVWaWFXU0RMNEovTmV3T3BlcmF0aW9uIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iTWFpbkJpbmRpbmdFeHRyYSIgdHlwZT0idG5zOk1haW5Qb3J0VHlwZUV4dHJhIj4KLSAgCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IgotICAJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotICAJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gIAkJPHNvYXA6b3BlcmF0aW9uCi0gIAkJCXNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvUmVtb3ZlVmlhV1NETDRKL05ld09wZXJhdGlvbiIgLz4KLSAgCQk8d3NkbDppbnB1dD4KLSAgCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0gIAkJPC93c2RsOmlucHV0PgotICAJCTx3c2RsOm91dHB1dD4KLSAgCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0gIAkJPC93c2RsOm91dHB1dD4KLSAgCTwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlJlbW92ZVZpYVdTREw0SiI+Ci0gICAgPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6UmVtb3ZlVmlhV1NETDRKU09BUCIgbmFtZT0iUmVtb3ZlVmlhV1NETDRKU09BUCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJNYWluU2VydmljZUV4dHJhIj4KLSAgCTx3c2RsOnBvcnQgbmFtZT0iTWFpblBvcnRFeHRyYSIgYmluZGluZz0idG5zOk1haW5CaW5kaW5nRXh0cmEiPgotICAJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIiAvPgotICAJPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9XU0RMRWxlbWVudFJlc29sdXRpb24vZmlyc3RsZXZlbC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9XU0RMRWxlbWVudFJlc29sdXRpb24vZmlyc3RsZXZlbC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2I4ZGMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvV1NETEVsZW1lbnRSZXNvbHV0aW9uL2ZpcnN0bGV2ZWwud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCi08ZGVmaW5pdGlvbnMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSI+DQotICAgIDxpbXBvcnQgbG9jYXRpb249InNlY29uZGxldmVsLndzZGwiIG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSIvPg0KLQk8bWVzc2FnZSBuYW1lPSJ0ZXN0SU5QVVRtZXNzYWdlIj4NCi0JCTxwYXJ0IG5hbWU9InRlc3RJTnBhcnQiIHR5cGU9InhzZDpzdHJpbmciLz4NCi0JPC9tZXNzYWdlPg0KLTwvZGVmaW5pdGlvbnM+DQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9XU0RMRWxlbWVudFJlc29sdXRpb24vbWFpbi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9CdWdGaXhlcy9XU0RMRWxlbWVudFJlc29sdXRpb24vbWFpbi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGE0MmE3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvV1NETEVsZW1lbnRSZXNvbHV0aW9uL21haW4ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQotPGRlZmluaXRpb25zIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgDQotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSIgDQotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSI+DQotICAgIA0KLSAgICA8aW1wb3J0IGxvY2F0aW9uPSJmaXJzdGxldmVsLndzZGwiIG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSIvPg0KLSAgICANCi0gICAgPHBvcnRUeXBlIG5hbWU9IlRlc3RQb3J0VHlwZSI+DQotDQotICAgIAk8b3BlcmF0aW9uIG5hbWU9IlRlc3RPcGVyYXRpb24iPg0KLQ0KLSAgICAJCTwhLS0gVGhpcyBpcyBsb2NhdGVkIGluIHRoZSBmaXJzdCBsZXZlbCBpbXBvcnQgLS0+DQotDQotICAgIAkJPGlucHV0IG1lc3NhZ2U9InRuczp0ZXN0SU5QVVRtZXNzYWdlIi8+DQotDQotICAgIAkJPCEtLSBUaGlzIGlzIGxvY2F0ZWQgaW4gdGhlIHNlY29uZCBsZXZlbCBpbXBvcnQgLS0+DQotDQotICAgIAkJPG91dHB1dCBtZXNzYWdlPSJ0bnM6dGVzdE9VVFBVVG1lc3NhZ2UiLz4NCi0NCi0gICAgCTwvb3BlcmF0aW9uPg0KLQ0KLSAgICA8L3BvcnRUeXBlPg0KLSAgICANCi08L2RlZmluaXRpb25zPg0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvV1NETEVsZW1lbnRSZXNvbHV0aW9uL3NlY29uZGxldmVsLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0J1Z0ZpeGVzL1dTRExFbGVtZW50UmVzb2x1dGlvbi9zZWNvbmRsZXZlbC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTJlZmQ5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvQnVnRml4ZXMvV1NETEVsZW1lbnRSZXNvbHV0aW9uL3NlY29uZGxldmVsLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KLTxkZWZpbml0aW9ucyB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIA0KLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iIA0KLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiANCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tIj4NCi0NCi0JPCEtLSBIZXJlIHRvIGZvcmNlIGEgY3ljbGljIGltcG9ydCB0byBtYWtlIHN1cmUgdGhlIGNvZGUgZG9lcyBub3QgZ28gaW50byBhbiBpbmZpbml0ZSByZWN1cnNpb24uIC0tPg0KLQkNCi0gICAgPGltcG9ydCBsb2NhdGlvbj0ibWFpbi53c2RsIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iLz4NCi0NCi0JPG1lc3NhZ2UgbmFtZT0idGVzdE9VVFBVVG1lc3NhZ2UiPg0KLQkJPHBhcnQgbmFtZT0idGVzdE9VVHBhcnQiIHR5cGU9InhzZDpzdHJpbmciLz4NCi0JPC9tZXNzYWdlPg0KLQ0KLQk8IS0tIER1cGxpY2F0ZWQgaGVyZSB0byBhbGxvdyB0ZXN0aW5nIHRoZSBpbXBvcnRzIHRyZWUgdHJhdmVyc2FsIG9yZGVyLg0KLQlUaGlzIG1lc3NhZ2Ugd2lsbCBiZSAibWFza2VkIiBieSB0aGUgb25lIGRlY2xhcmVkIGluIHRoZSBmaXJzdGxldmVsLndzZGwgLS0+DQotDQotCTxtZXNzYWdlIG5hbWU9InRlc3RJTlBVVG1lc3NhZ2UiPg0KLQkJPHBhcnQgbmFtZT0idGVzdElOcGFydCIgdHlwZT0ieHNkOmludCIvPg0KLQk8L21lc3NhZ2U+DQotDQotPC9kZWZpbml0aW9ucz4NCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0V4dGVuc2lvbnMvSFRUUC9IVFRQRXhhbXBsZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9FeHRlbnNpb25zL0hUVFAvSFRUUEV4YW1wbGUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFhNGI3Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0V4dGVuc2lvbnMvSFRUUC9IVFRQRXhhbXBsZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iCi0JeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSFRUUEV4YW1wbGUvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IkhUVFBFeGFtcGxlIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9IVFRQRXhhbXBsZS8iPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJIVFRQRXhhbXBsZSI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLQk8d3NkbDpiaW5kaW5nIG5hbWU9IkhUVFBFeGFtcGxlSFRUUCIgdHlwZT0idG5zOkhUVFBFeGFtcGxlIj4KLQkJPGh0dHA6YmluZGluZyB2ZXJiPSJHRVQiIC8+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPGh0dHA6b3BlcmF0aW9uIGxvY2F0aW9uPSIvTmV3T3BlcmF0aW9uIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPGh0dHA6dXJsRW5jb2RlZCAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxtaW1lOmNvbnRlbnQgdHlwZT0idGV4dC94bWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iSFRUUEV4YW1wbGUiPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpIVFRQRXhhbXBsZUhUVFAiCi0JCQluYW1lPSJIVFRQRXhhbXBsZUhUVFAiPgotCQkJPGh0dHA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9FeHRlbnNpb25zL0hUVFAvSFRUUFRlc3Qud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvRXh0ZW5zaW9ucy9IVFRQL0hUVFBUZXN0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMjExZWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9FeHRlbnNpb25zL0hUVFAvSFRUUFRlc3Qud3NkbAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvRXh0ZW5zaW9ucy9NSU1FL01JTUVFeGFtcGxlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0V4dGVuc2lvbnMvTUlNRS9NSU1FRXhhbXBsZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzNkNDRlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvRXh0ZW5zaW9ucy9NSU1FL01JTUVFeGFtcGxlLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGRlZmluaXRpb25zIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTUlNRUV4YW1wbGUiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01JTUVFeGFtcGxlIj4KLQk8dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTUlNRUV4YW1wbGUiPgotCQkJPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iWE1MRGF0YSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlbGVtZW50MSIgdHlwZT0ieHNkOmludCI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlbGVtZW50MiIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JPC90eXBlcz4KLQk8bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TXNnIj4KLQkJPHBhcnQgbmFtZT0icmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3QiIC8+Ci0JPC9tZXNzYWdlPgotCTxtZXNzYWdlIG5hbWU9IlJlc3BvbnNlTXNnIj4KLQkJPHBhcnQgbmFtZT0icmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZSIgLz4KLQkJPHBhcnQgbmFtZT0icmVzcG9uc2VEYXRhIiB0eXBlPSJ4c2Q6YmFzZTY0QmluYXJ5IiAvPgotCQk8cGFydCBuYW1lPSJ4bWxEYXRhIiBlbGVtZW50PSJ0bnM6WE1MRGF0YSIgLz4KLQk8L21lc3NhZ2U+Ci0JPHBvcnRUeXBlIG5hbWU9Ik1JTUVFeGFtcGxlUG9ydFR5cGUiPgotCQk8b3BlcmF0aW9uIG5hbWU9InRlc3RPcGVyYXRpb24iPgotCQkJPGlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TXNnIiAvPgotCQkJPG91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNc2ciIC8+Ci0JCTwvb3BlcmF0aW9uPgotCTwvcG9ydFR5cGU+Ci0JPGJpbmRpbmcgbmFtZT0iTUlNRUV4YW1wbGVCaW5kaW5nIiB0eXBlPSJ0bnM6TUlNRUV4YW1wbGVQb3J0VHlwZSI+Ci0JCTxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiCi0JCQlzdHlsZT0iZG9jdW1lbnQiIC8+Ci0JCTxvcGVyYXRpb24gbmFtZT0idGVzdE9wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01JTUVFeGFtcGxlL3Rlc3RPcGVyYXRpb24iIC8+Ci0JCQk8aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L2lucHV0PgotCQkJPG91dHB1dD4KLQkJCQk8bWltZTptdWx0aXBhcnRSZWxhdGVkPgotCQkJCQk8bWltZTpwYXJ0IG5hbWU9InJlc3BvbnNlIj4KLQkJCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJCQk8L21pbWU6cGFydD4KLQkJCQkJPG1pbWU6cGFydCBuYW1lPSJyZXNwb25zZURhdGEiPgotCQkJCQkJPG1pbWU6Y29udGVudCBwYXJ0PSJyZXNwb25zZURhdGEiIHR5cGU9InRleHQvYmluYXJ5IiAvPgotCQkJCQk8L21pbWU6cGFydD4KLQkJCQk8L21pbWU6bXVsdGlwYXJ0UmVsYXRlZD4KLQkJCQk8bWltZTptaW1lWE1MIHBhcnQ9InhtbERhdGEiIC8+Ci0JCQk8L291dHB1dD4KLQkJPC9vcGVyYXRpb24+Ci0JPC9iaW5kaW5nPgotCTxzZXJ2aWNlIG5hbWU9Ik1JTUVFeGFtcGxlU2VydmljZSI+Ci0JCTxwb3J0IG5hbWU9Ik1JTUVFeGFtcGxlUG9ydCIgYmluZGluZz0idG5zOk1JTUVFeGFtcGxlQmluZGluZyI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwODAvTUlNRUV4YW1wbGUiIC8+Ci0JCTwvcG9ydD4KLQk8L3NlcnZpY2U+Ci08L2RlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvRXh0ZW5zaW9ucy9NSU1FL01JTUVUZXN0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0V4dGVuc2lvbnMvTUlNRS9NSU1FVGVzdC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzMxNmFhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvRXh0ZW5zaW9ucy9NSU1FL01JTUVUZXN0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGRlZmluaXRpb25zIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTUlNRVRlc3QiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01JTUVUZXN0Ij4KLQk8dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTUlNRVRlc3QiPgotCQkJPHhzZDplbGVtZW50IG5hbWU9IlJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iWE1MRGF0YSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlbGVtZW50MSIgdHlwZT0ieHNkOmludCI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlbGVtZW50MiIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JPC90eXBlcz4KLQk8bWVzc2FnZSBuYW1lPSJSZXF1ZXN0TXNnIj4KLQkJPHBhcnQgbmFtZT0icmVxdWVzdCIgZWxlbWVudD0idG5zOlJlcXVlc3QiIC8+Ci0JPC9tZXNzYWdlPgotCTxtZXNzYWdlIG5hbWU9IlJlc3BvbnNlTXNnIj4KLQkJPHBhcnQgbmFtZT0icmVzcG9uc2UiIGVsZW1lbnQ9InRuczpSZXNwb25zZSIgLz4KLQkJPHBhcnQgbmFtZT0icmVzcG9uc2VEYXRhIiB0eXBlPSJ4c2Q6YmFzZTY0QmluYXJ5IiAvPgotCQk8cGFydCBuYW1lPSJ4bWxEYXRhIiBlbGVtZW50PSJ0bnM6WE1MRGF0YSIgLz4KLQk8L21lc3NhZ2U+Ci0JPHBvcnRUeXBlIG5hbWU9Ik1JTUVUZXN0UG9ydFR5cGUiPgotCQk8b3BlcmF0aW9uIG5hbWU9InRlc3RPcGVyYXRpb24iPgotCQkJPGlucHV0IG1lc3NhZ2U9InRuczpSZXF1ZXN0TXNnIiAvPgotCQkJPG91dHB1dCBtZXNzYWdlPSJ0bnM6UmVzcG9uc2VNc2ciIC8+Ci0JCTwvb3BlcmF0aW9uPgotCTwvcG9ydFR5cGU+Ci0JPGJpbmRpbmcgbmFtZT0iTUlNRVRlc3RCaW5kaW5nIiB0eXBlPSJ0bnM6TUlNRVRlc3RQb3J0VHlwZSI+Ci0JCTxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiCi0JCQlzdHlsZT0iZG9jdW1lbnQiIC8+Ci0JCTxvcGVyYXRpb24gbmFtZT0idGVzdE9wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01JTUVUZXN0L3Rlc3RPcGVyYXRpb24iIC8+Ci0JCQk8aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L2lucHV0PgotCQkJPG91dHB1dD4KLQkJCTwvb3V0cHV0PgotCQk8L29wZXJhdGlvbj4KLQk8L2JpbmRpbmc+Ci0JPHNlcnZpY2UgbmFtZT0iTUlNRVRlc3RTZXJ2aWNlIj4KLQkJPHBvcnQgbmFtZT0iTUlNRVRlc3RQb3J0IiBiaW5kaW5nPSJ0bnM6TUlNRVRlc3RCaW5kaW5nIj4KLQkJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9NSU1FVGVzdCIgLz4KLQkJPC9wb3J0PgotCTwvc2VydmljZT4KLTwvZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9FeHRlbnNpb25zL1NPQVAvRG9jdW1lbnRMaXRlcmFsU09BUEV4YW1wbGUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvRXh0ZW5zaW9ucy9TT0FQL0RvY3VtZW50TGl0ZXJhbFNPQVBFeGFtcGxlLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYjgzMGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9FeHRlbnNpb25zL1NPQVAvRG9jdW1lbnRMaXRlcmFsU09BUEV4YW1wbGUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRG9jdW1lbnRMaXRlcmFsU09BUEV4YW1wbGUvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JbmFtZT0iRG9jdW1lbnRMaXRlcmFsU09BUEV4YW1wbGUiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0RvY3VtZW50TGl0ZXJhbFNPQVBFeGFtcGxlLyI+Ci0JPHdzZGw6ZG9jdW1lbnRhdGlvbj5UZXN0IGRvY3VtZW50YXRpb24uPC93c2RsOmRvY3VtZW50YXRpb24+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx3c2RsOmRvY3VtZW50YXRpb24+VGVzdCBkb2N1bWVudGF0aW9uLjwvd3NkbDpkb2N1bWVudGF0aW9uPgotCQk8eHNkOnNjaGVtYQotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0RvY3VtZW50TGl0ZXJhbFNPQVBFeGFtcGxlLyIKLQkJCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25GYXVsdCI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJmYXVsdCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbkhlYWRlciI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJoZWFkZXIiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25IZWFkZXJGYXVsdCI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJoZWFkZXJGYXVsdCIKLQkJCQkJCQl0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJUZXN0TXNnIj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uSGVhZGVyIiBuYW1lPSJ0ZXN0SGVhZGVyIiAvPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25IZWFkZXJGYXVsdCIKLQkJCW5hbWU9InRlc3RIZWFkZXJGYXVsdCIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3RNc2ciPgotCQk8d3NkbDpkb2N1bWVudGF0aW9uPlRlc3QgZG9jdW1lbnRhdGlvbi48L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIKLQkJCW5hbWU9InBhcmFtZXRlcnMiPgotCQkJPHdzZGw6ZG9jdW1lbnRhdGlvbj5UZXN0IGRvY3VtZW50YXRpb24uPC93c2RsOmRvY3VtZW50YXRpb24+Ci0JCTwvd3NkbDpwYXJ0PgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25IZWFkZXIiIG5hbWU9ImhlYWRlciIgLz4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uSGVhZGVyRmF1bHQiCi0JCQluYW1lPSJoZWFkZXJGYXVsdCIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlTXNnIj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25GYXVsdE1zZyI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbkZhdWx0IiBuYW1lPSJmYXVsdCIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJEb2N1bWVudExpdGVyYWxTT0FQRXhhbXBsZSI+Ci0JCTx3c2RsOmRvY3VtZW50YXRpb24+VGVzdCBkb2N1bWVudGF0aW9uLjwvd3NkbDpkb2N1bWVudGF0aW9uPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTx3c2RsOmRvY3VtZW50YXRpb24+VGVzdCBkb2N1bWVudGF0aW9uLjwvd3NkbDpkb2N1bWVudGF0aW9uPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3RNc2ciPgotCQkJCTx3c2RsOmRvY3VtZW50YXRpb24+Ci0JCQkJCVRlc3QgZG9jdW1lbnRhdGlvbi4KLQkJCQk8L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJCTwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2VNc2ciPgotCQkJCTx3c2RsOmRvY3VtZW50YXRpb24+Ci0JCQkJCVRlc3QgZG9jdW1lbnRhdGlvbi4KLQkJCQk8L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCQk8d3NkbDpmYXVsdCBuYW1lPSJmYXVsdCIKLQkJCQltZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uRmF1bHRNc2ciPgotCQkJCTx3c2RsOmRvY3VtZW50YXRpb24+Ci0JCQkJCVRlc3QgZG9jdW1lbnRhdGlvbi4KLQkJCQk8L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJCTwvd3NkbDpmYXVsdD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci0JPHdzZGw6YmluZGluZyBuYW1lPSJEb2N1bWVudExpdGVyYWxTT0FQRXhhbXBsZVNPQVAiCi0JCXR5cGU9InRuczpEb2N1bWVudExpdGVyYWxTT0FQRXhhbXBsZSI+Ci0JCTx3c2RsOmRvY3VtZW50YXRpb24+VGVzdCBkb2N1bWVudGF0aW9uLjwvd3NkbDpkb2N1bWVudGF0aW9uPgotCQk8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIKLQkJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTx3c2RsOmRvY3VtZW50YXRpb24+VGVzdCBkb2N1bWVudGF0aW9uLjwvd3NkbDpkb2N1bWVudGF0aW9uPgotCQkJPHNvYXA6b3BlcmF0aW9uIHN0eWxlPSJkb2N1bWVudCIKLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0RvY3VtZW50TGl0ZXJhbFNPQVBFeGFtcGxlL05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTx3c2RsOmRvY3VtZW50YXRpb24+Ci0JCQkJCVRlc3QgZG9jdW1lbnRhdGlvbi4KLQkJCQk8L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9InBhcmFtZXRlcnMiIC8+Ci0JCQkJPHNvYXA6aGVhZGVyIHVzZT0ibGl0ZXJhbCIgcGFydD0iaGVhZGVyIgotCQkJCQltZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdE1zZyI+Ci0JCQkJCTxzb2FwOmhlYWRlcmZhdWx0IHVzZT0ibGl0ZXJhbCIgcGFydD0iaGVhZGVyRmF1bHQiCi0JCQkJCQltZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdE1zZyIgLz4KLQkJCQk8L3NvYXA6aGVhZGVyPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTx3c2RsOmRvY3VtZW50YXRpb24+Ci0JCQkJCVRlc3QgZG9jdW1lbnRhdGlvbi4KLQkJCQk8L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCQk8d3NkbDpmYXVsdCBuYW1lPSJmYXVsdCI+Ci0JCQkJPHdzZGw6ZG9jdW1lbnRhdGlvbj4KLQkJCQkJVGVzdCBkb2N1bWVudGF0aW9uLgotCQkJCTwvd3NkbDpkb2N1bWVudGF0aW9uPgotCQkJCTxzb2FwOmZhdWx0IG5hbWU9ImZhdWx0IiB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6ZmF1bHQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JPHdzZGw6c2VydmljZSBuYW1lPSJEb2N1bWVudExpdGVyYWxTT0FQRXhhbXBsZSI+Ci0JCTx3c2RsOmRvY3VtZW50YXRpb24+VGVzdCBkb2N1bWVudGF0aW9uLjwvd3NkbDpkb2N1bWVudGF0aW9uPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpEb2N1bWVudExpdGVyYWxTT0FQRXhhbXBsZVNPQVAiCi0JCQluYW1lPSJEb2N1bWVudExpdGVyYWxTT0FQRXhhbXBsZVNPQVAiPgotCQkJPHdzZGw6ZG9jdW1lbnRhdGlvbj5UZXN0IGRvY3VtZW50YXRpb24uPC93c2RsOmRvY3VtZW50YXRpb24+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9FeHRlbnNpb25zL1NPQVAvUlBDRW5jb2RlZFNPQVBFeGFtcGxlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0V4dGVuc2lvbnMvU09BUC9SUENFbmNvZGVkU09BUEV4YW1wbGUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcwMmEyZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0V4dGVuc2lvbnMvU09BUC9SUENFbmNvZGVkU09BUEV4YW1wbGUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9SUENFbmNvZGVkU09BUEV4YW1wbGUvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JbmFtZT0iUlBDRW5jb2RlZFNPQVBFeGFtcGxlIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9SUENFbmNvZGVkU09BUEV4YW1wbGUvIj4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iUlBDRW5jb2RlZFNPQVBFeGFtcGxlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgLz4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iUlBDRW5jb2RlZFNPQVBFeGFtcGxlU09BUCIKLQkJdHlwZT0idG5zOlJQQ0VuY29kZWRTT0FQRXhhbXBsZSI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9InJwYyIKLQkJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTxzb2FwOm9wZXJhdGlvbgotCQkJCXNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvUlBDRW5jb2RlZFNPQVBFeGFtcGxlL05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkKLQkJCQkJZW5jb2RpbmdTdHlsZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iCi0JCQkJCW5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9SUENFbmNvZGVkU09BUEV4YW1wbGUvIgotCQkJCQl1c2U9ImVuY29kZWQiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keQotCQkJCQllbmNvZGluZ1N0eWxlPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIKLQkJCQkJbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1JQQ0VuY29kZWRTT0FQRXhhbXBsZS8iCi0JCQkJCXVzZT0iZW5jb2RlZCIgLz4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JPHdzZGw6c2VydmljZSBuYW1lPSJSUENFbmNvZGVkU09BUEV4YW1wbGUiPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpSUENFbmNvZGVkU09BUEV4YW1wbGVTT0FQIgotCQkJbmFtZT0iUlBDRW5jb2RlZFNPQVBFeGFtcGxlU09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0V4dGVuc2lvbnMvU09BUC9SUENMaXRlcmFsU09BUEV4YW1wbGUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvRXh0ZW5zaW9ucy9TT0FQL1JQQ0xpdGVyYWxTT0FQRXhhbXBsZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGE3N2JiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvRXh0ZW5zaW9ucy9TT0FQL1JQQ0xpdGVyYWxTT0FQRXhhbXBsZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1JQQ0xpdGVyYWxTT0FQRXhhbXBsZS8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQluYW1lPSJSUENMaXRlcmFsU09BUEV4YW1wbGUiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1JQQ0xpdGVyYWxTT0FQRXhhbXBsZS8iPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvbkZhdWx0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25GYXVsdCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJSUENMaXRlcmFsU09BUEV4YW1wbGUiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiAvPgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgLz4KLQkJCTx3c2RsOmZhdWx0IG5hbWU9ImZhdWx0IiBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uRmF1bHQiIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iUlBDTGl0ZXJhbFNPQVBFeGFtcGxlU09BUCIKLQkJdHlwZT0idG5zOlJQQ0xpdGVyYWxTT0FQRXhhbXBsZSI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9InJwYyIKLQkJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTxzb2FwOm9wZXJhdGlvbgotCQkJCXNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvUlBDTGl0ZXJhbFNPQVBFeGFtcGxlL05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkKLQkJCQkJbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1JQQ0xpdGVyYWxTT0FQRXhhbXBsZS8iCi0JCQkJCXVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dD4KLQkJCQk8c29hcDpib2R5Ci0JCQkJCW5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9SUENMaXRlcmFsU09BUEV4YW1wbGUvIgotCQkJCQl1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQkJPHdzZGw6ZmF1bHQgbmFtZT0iZmF1bHQiPgotCQkJCTxzb2FwOmZhdWx0IG5hbWU9ImZhdWx0IgotCQkJCQluYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvUlBDTGl0ZXJhbFNPQVBFeGFtcGxlLyIKLQkJCQkJdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmZhdWx0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iUlBDTGl0ZXJhbFNPQVBFeGFtcGxlIj4KLQkJPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6UlBDTGl0ZXJhbFNPQVBFeGFtcGxlU09BUCIKLQkJCW5hbWU9IlJQQ0xpdGVyYWxTT0FQRXhhbXBsZVNPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9FeHRlbnNpb25zL1NPQVAvU09BUFRlc3Qud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvRXh0ZW5zaW9ucy9TT0FQL1NPQVBUZXN0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3Y2ViOTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9FeHRlbnNpb25zL1NPQVAvU09BUFRlc3Qud3NkbAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvTG9hZFN0b3JlQ29tcGFyZS8uY3ZzaWdub3JlIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9Mb2FkU3RvcmVDb21wYXJlLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxOTJlOGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9Mb2FkU3RvcmVDb21wYXJlLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0qLndzZGwub3V0CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0xvYWRTdG9yZUNvbXBhcmUvSW1wb3J0ZWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvTG9hZFN0b3JlQ29tcGFyZS9JbXBvcnRlZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2E4MmZhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NhbXBsZXMvTG9hZFN0b3JlQ29tcGFyZS9JbXBvcnRlZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IkltcG9ydGVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0ZWQvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0ZWQvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnRlZC8iPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iSW1wb3J0ZWQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iSW1wb3J0ZWRTT0FQIiB0eXBlPSJ0bnM6SW1wb3J0ZWQiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0ZWQvTmV3T3BlcmF0aW9uIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgcGFydHM9IiBOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJJbXBvcnRlZCI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJJbXBvcnRlZFNPQVAiIGJpbmRpbmc9InRuczpJbXBvcnRlZFNPQVAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0xvYWRTdG9yZUNvbXBhcmUvTG9hZEFuZFByaW50VGVzdC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc2FtcGxlcy9Mb2FkU3RvcmVDb21wYXJlL0xvYWRBbmRQcmludFRlc3Qud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFiYjI3My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zYW1wbGVzL0xvYWRTdG9yZUNvbXBhcmUvTG9hZEFuZFByaW50VGVzdC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL0xvYWRBbmRQcmludFRlc3QvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iTG9hZEFuZFByaW50VGVzdCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvTG9hZEFuZFByaW50VGVzdC8iIHhtbG5zOndzZGwxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydGVkLyI+Ci0gIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0ZWQvIiBsb2NhdGlvbj0iSW1wb3J0ZWQud3NkbCI+PC93c2RsOmltcG9ydD4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvTG9hZEFuZFByaW50VGVzdC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbk5ld0ZhdWx0IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotICAgICAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uTmV3RmF1bHQiPgotICAJPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25OZXdGYXVsdCIKLSAgCQllbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uTmV3RmF1bHQiPgotICAJPC93c2RsOnBhcnQ+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJMb2FkQW5kUHJpbnRUZXN0Ij4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJOZXdGYXVsdCIgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvbk5ld0ZhdWx0Ij48L3dzZGw6ZmF1bHQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkxvYWRBbmRQcmludFRlc3RTT0FQIiB0eXBlPSJ0bnM6TG9hZEFuZFByaW50VGVzdCI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0xvYWRBbmRQcmludFRlc3QvTmV3T3BlcmF0aW9uIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJOZXdGYXVsdCI+PC93c2RsOmZhdWx0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkxvYWRBbmRQcmludFRlc3QiPgotICAgIDx3c2RsOnBvcnQgYmluZGluZz0idG5zOkxvYWRBbmRQcmludFRlc3RTT0FQIiBuYW1lPSJMb2FkQW5kUHJpbnRUZXN0U09BUCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmciLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvQWxsVGVzdENhc2VzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvQWxsVGVzdENhc2VzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZGNjNGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL0FsbFRlc3RDYXNlcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0czsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMuZXh0ZW5zaW9ucy5IVFRQRXh0ZW5zaW9uc1Rlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMuZXh0ZW5zaW9ucy5NSU1FRXh0ZW5zaW9uc1Rlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMuZXh0ZW5zaW9ucy5TT0FQRXh0ZW5zaW9uc1Rlc3Q7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotCi0vKioKLSAqIEBhdXRob3IgS2lodXAgQm9vCi0gKi8KLXB1YmxpYyBjbGFzcyBBbGxUZXN0Q2FzZXMgZXh0ZW5kcyBUZXN0Q2FzZQotewotCi0gIHB1YmxpYyBBbGxUZXN0Q2FzZXMoKQotICB7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQotICB7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZSgpOwotCi0gICAgc3VpdGUuYWRkVGVzdChJbmxpbmVTY2hlbWFUZXN0LnN1aXRlKCkpOwotICAgIHN1aXRlLmFkZFRlc3QoTG9hZEFuZFNlcmlhbGl6YXRpb25UZXN0LnN1aXRlKCkpOwotICAgIHN1aXRlLmFkZFRlc3QoU2VtYW50aWNUZXN0LnN1aXRlKCkpOwotICAgIHN1aXRlLmFkZFRlc3QoV1NETEdlbmVyYXRpb25UZXN0LnN1aXRlKCkpOwotICAgIHN1aXRlLmFkZFRlc3QoV1NETDRKQVBJVGVzdC5zdWl0ZSgpKTsKLSAgICBzdWl0ZS5hZGRUZXN0KFdTRExFTUZBUElUZXN0LnN1aXRlKCkpOwotICAgIHN1aXRlLmFkZFRlc3QoVXRpbFRlc3Quc3VpdGUoKSk7Ci0gICAgc3VpdGUuYWRkVGVzdChCdWdGaXhlc1Rlc3Quc3VpdGUoKSk7Ci0gICAgc3VpdGUuYWRkVGVzdChMb2NhdGlvblRyYWNraW5nVGVzdC5zdWl0ZSgpKTsKLSAgICBzdWl0ZS5hZGRUZXN0KFJlZmFjdG9yaW5nVGVzdC5zdWl0ZSgpKTsKLSAgICBzdWl0ZS5hZGRUZXN0KFNPQVBFeHRlbnNpb25zVGVzdC5zdWl0ZSgpKTsKLSAgICBzdWl0ZS5hZGRUZXN0KEhUVFBFeHRlbnNpb25zVGVzdC5zdWl0ZSgpKTsKLSAgICBzdWl0ZS5hZGRUZXN0KE1JTUVFeHRlbnNpb25zVGVzdC5zdWl0ZSgpKTsKLQotICAgIHJldHVybiBzdWl0ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL0J1Z0ZpeGVzVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL0J1Z0ZpeGVzVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWZlZGJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9CdWdGaXhlc1Rlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3NjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzOwotCi0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvblR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuV1NETEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLmV4dGVuc2lvbnMuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFJlYWRlcjsKLWltcG9ydCBqYXZheC54bWwuWE1MQ29uc3RhbnRzOwotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkltcG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5NZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlR5cGVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQYWNrYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVDb250ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRU1pbWVYbWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVNdWx0aXBhcnRSZWxhdGVkOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRVBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLmludGVybmFsLnV0aWwuTUlNRUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwudXRpbC5TT0FQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLnV0aWwuV1NETFV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uTG9hZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETENvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RJbXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNjaGVtYTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEVHlwZURlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEQ29uc3RhbnRzOwotaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OwotCi0KLS8qKgotICogQ29udGFpbnMgdW5pdCB0ZXN0cyBmb3IgcmVwb3J0ZWQgYnVncy4KLSAqLwotcHVibGljIGNsYXNzIEJ1Z0ZpeGVzVGVzdCBleHRlbmRzIFRlc3RDYXNlCi17Ci0gIHByaXZhdGUgU3RyaW5nIFBMVUdJTl9BQlNPTFVURV9QQVRIID0gV1NETFRlc3RzUGx1Z2luLmdldEluc3RhbGxVUkwoKTsKLQotICBwdWJsaWMgQnVnRml4ZXNUZXN0KFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQotICB7Ci0gICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIucnVuKHN1aXRlKCkpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiVHlwZUFuZEVsZW1lbnRSZXNvbHV0aW9uIikgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RUeXBlQW5kRWxlbWVudFJlc29sdXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBCdWdGaXhlc1Rlc3QoIk1JTUVHZXRUeXBlTmFtZSIpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0UmV0dXJuc1Byb3BlclFOYW1lRm9yTUlNRUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiSW1wb3J0c0VsZW1lbnRPcmRlciIpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0UGxhY2VzSW1wb3J0c0FmdGVyVGhlRGVmaW5pdGlvbkVsZW1lbnQoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBCdWdGaXhlc1Rlc3QoIlJlc29sdmVXU0RMRWxlbWVudCIpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0UmVzb2x2ZXNFbGVtZW50SW5JbXBvcnRzKCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgQnVnRml4ZXNUZXN0KCJQYXJ0c1NlcmlhbGl6YXRpb24iKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdFNlcmlhbGl6ZXNQYXJ0c0luU09BUEJvZHkoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBCdWdGaXhlc1Rlc3QoIkltcG9ydHNTZXJpYWxpemF0aW9uIikgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RTZXJpYWxpemVzSW1wb3J0c0JlZm9yZVR5cGVzKCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgQnVnRml4ZXNUZXN0KCJMb2NhbE5hbWVzcGFjZVByZWZpeGVzIikgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RTdXBwb3J0c0xvY2FsTmFtZXNwYWNlUHJlZml4ZXMoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBCdWdGaXhlc1Rlc3QoIk9wZXJhdGlvbkV4dGVuc2lvbkVsZW1lbnRzIikgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RUb2xsZXJhdGVzRXh0ZW5zaW9uRWxlbWVudHNGb3JPcGVyYXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBCdWdGaXhlc1Rlc3QoIlJlY29uY2lsZXNCaW5kaW5nRmF1bHRzIikgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RSZWNvbmNpbGVzQmluZGluZ0ZhdWx0cygpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiRHVwbGljYXRlU0FYRXJyb3JEaWFnbm9zdGljcyIpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0QXZvaWREdXBsaWNhdGVTQVhFeGNlcHRpb25EaWFnbm9zdGljcygpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiQmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uIikgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RCaW5kaW5nT3BlcmF0aW9uUmVjb25jaWxpYXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBCdWdGaXhlc1Rlc3QoIkZ1bGxFbGVtZW50RXh0ZW5zaWJpbGl0eSIpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0RnVsbEVsZW1lbnRFeHRlbnNpYmlsaXR5KCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgQnVnRml4ZXNUZXN0KCJUeXBlc0V4dGVuc2liaWxpdHkiKSAvLyROT04tTkxTLTEkCi0gICAgewotICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICB7Ci0gICAgICAgIHRlc3RUeXBlc0V4dGVuc2liaWxpdHkoKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiQWxsb3dOdWxsTmFtZXNwYWNlVVJJIikgLy8kTk9OLU5MUy0xJAotICAgIHsKLSAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgewotICAgICAgICB0ZXN0QWxsb3dOdWxsTmFtZXNwYWNlVVJJKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBCdWdGaXhlc1Rlc3QoIkxvYWRzTmFtZWxlc3NEZWZpbml0aW9uIikgLy8kTk9OLU5MUy0xJAotICAgIHsKLSAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgewotICAgICAgICB0ZXN0TG9hZHNOYW1lbGVzc0RlZmluaXRpb24oKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiSGFuZGxlc0RvY3VtZW50YXRpb25FbGVtZW50cyIpIC8vJE5PTi1OTFMtMSQKLSAgICB7Ci0gICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgIHsKLSAgICAgICAgdGVzdEhhbmRsZXNEb2N1bWVudGF0aW9uRWxlbWVudHMoKTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiU3VwcG9ydHNMb2NhbE5TRm9yRXh0ZW5zaWJpbGl0eUVsZW1lbnRzIikgLy8kTk9OLU5MUy0xJAotICAgIHsKLSAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgewotICAgICAgICB0ZXN0U3VwcG9ydHNMb2NhbE5TRm9yRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgQnVnRml4ZXNUZXN0KCJJbmxpbmVUeXBlc0Zyb21JbXBvcnRzQXJlVmlzaWJsZSIpIC8vJE5PTi1OTFMtMSQKLSAgICB7Ci0gICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgIHsKLSAgICAgICAgdGVzdElubGluZVR5cGVzRnJvbUltcG9ydHNBcmVWaXNpYmxlKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgQnVnRml4ZXNUZXN0KCJQcm9wYWdhdGVzVGFyZ2V0TmFtZXNwYWNlQ2hhbmdlIikgLy8kTk9OLU5MUy0xJAotICAgIHsKLSAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgewotICAgICAgICB0ZXN0UHJvcGFnYXRlc1RhcmdldE5hbWVzcGFjZUNoYW5nZSgpOwotICAgICAgfQotICAgIH0pOwotICAgIAotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiUmVtb3ZlQmluZGluZyIpIC8vJE5PTi1OTFMtMSQKLSAgICB7Ci0gICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgIHsKLSAgICAgICAgdGVzdFJlbW92ZUJpbmRpbmcoKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICAKLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBCdWdGaXhlc1Rlc3QoIlJlbW92ZU1lc3NhZ2UiKSAvLyROT04tTkxTLTEkCi0gICAgewotICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICB7Ci0gICAgICAgIHRlc3RSZW1vdmVNZXNzYWdlKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgQnVnRml4ZXNUZXN0KCJSZW1vdmVQb3J0VHlwZSIpIC8vJE5PTi1OTFMtMSQKLSAgICB7Ci0gICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgIHsKLSAgICAgICAgdGVzdFJlbW92ZVBvcnRUeXBlKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgQnVnRml4ZXNUZXN0KCJSZW1vdmVTZXJ2aWNlIikgLy8kTk9OLU5MUy0xJAotICAgIHsKLSAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgewotICAgICAgICB0ZXN0UmVtb3ZlU2VydmljZSgpOwotICAgICAgfQotICAgIH0pOwotICAgIAotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiR2V0V1NETFR5cGUiKSAvLyROT04tTkxTLTEkCi0gICAgewotICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICB7Ci0gICAgICAgIHRlc3RHZXRXU0RMVHlwZSgpOwotICAgICAgfQotICAgIH0pOwotICAgIAotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiSW52YWxpZFhTREltcG9ydHMiKSAvLyROT04tTkxTLTEkCi0gICAgewotICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICB7Ci0gICAgICAgIHRlc3RJbnZhbGlkWFNESW1wb3J0cygpOwotICAgICAgfQotICAgIH0pOwotICAgIAotICAgIHN1aXRlLmFkZFRlc3QobmV3IEJ1Z0ZpeGVzVGVzdCgiUmVjb25jaWxlTm9uV1NETEVsZW1lbnRzIikgLy8kTk9OLU5MUy0xJAotICAgIHsKLSAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgewotICAgICAgICB0ZXN0UmVjb25jaWxlTm9uV1NETEVsZW1lbnRzKCk7Ci0gICAgICB9Ci0gICAgfSk7ICAgICAgICAKLSAgICAKLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBCdWdGaXhlc1Rlc3QoIlJlY29uY2lsZXNJbXBvcnRzV2l0aE5vTG9jYXRpb24iKSAvLyROT04tTkxTLTEkCi0gICAgewotICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICB7Ci0gICAgICAgIHRlc3RSZWNvbmNpbGVzSW1wb3J0c1dpdGhOb0xvY2F0aW9uKCk7Ci0gICAgICB9Ci0gICAgfSk7ICAgICAgICAKLQotICAgIHJldHVybiBzdWl0ZTsKLSAgfQotCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTEzMzMxMAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFR5cGVBbmRFbGVtZW50UmVzb2x1dGlvbigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9UeXBlQW5kRWxlbWVudFJlc29sdXRpb24vVGVzdC53c2RsIik7IC8vJE5PTi1OTFMtMSQKLQotICAgICAgLy8gVGhlcmUgYXJlIHR3byBpbmxpbmUgc2NoZW1hcywgZWFjaCBpbXBvcnRpbmcgYW4gZXh0ZXJuYWwgc2NoZW1hLgotICAgICAgLy8gVGhlIGZpcnN0IHNjaGVtYSBpcyBlbXB0eSBhbmQgdXNlZCBqdXN0IHRvIHNob3cgdGhlIHR5cGUgcmVzb2x1dGlvbgotICAgICAgLy8gbWVjaGFuaXNtJ3MgZmF1bHQuCi0gICAgICAvLyBUaGUgc2NoZW1hIGNvbnRhaW5pbmcgdGhlIHR5cGUgYW5kIGVsZW1lbnQgZGVjbGFyYXRpb24gd2UncmUgaW50ZXJlc3RlZAotICAgICAgLy8gaW4gaXMgdGhlIHNlY29uZCBzY2hlbWEgaW4gdGhlIGNvbGxlY3Rpb24uCi0KLSAgICAgIFhTRFNjaGVtYSBpbmxpbmVTY2hlbWEgPSAoWFNEU2NoZW1hKWRlZmluaXRpb24uZ2V0RVR5cGVzKCkuZ2V0U2NoZW1hcygpLmdldCgxKTsKLQotICAgICAgLy8gVGhlIGZpcnN0IGFuZCBvbmx5IGNvbXBvbmVudCBpbiB0aGlzIHNjaGVtYSBpcyBhbiBpbXBvcnQuCi0KLSAgICAgIFhTREltcG9ydCB4c2RJbXBvcnQgPSAoWFNESW1wb3J0KWlubGluZVNjaGVtYS5nZXRDb250ZW50cygpLmdldCgwKTsKLQotICAgICAgLy8gVGhlIGltcG9ydGVkIHNjaGVtYSB3YXMgcmVzb2x2ZWQgd2hlbiB0aGUgcmVzb3VyY2Ugd2FzIGxvYWRlZC4KLSAgICAgIC8vIFRoaXMgaXMgdGhlIHNjaGVtYSBjb250YWluaW5nIG91ciB0eXBlL2VsZW1lbnQuCi0KLSAgICAgIFhTRFNjaGVtYSBzY2hlbWEgPSB4c2RJbXBvcnQuZ2V0UmVzb2x2ZWRTY2hlbWEoKTsKLQotICAgICAgLy8gTm93IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgcmVzb2x2ZWQgdHlwZS9lbGVtZW50IGZvciB0aGUgbWVzc2FnZXMgaW4KLSAgICAgIC8vIHRoZSBXU0RMIGRvY3VtZW50Ci0gICAgICAvLyBhcmUgdGhlIG9uZXMgaW4gdGhlIHNjaGVtYSBhbmQgbm90IHNvbWUgYm9ndXMgb25lcy4KLQotICAgICAgSXRlcmF0b3IgbWVzc2FnZXNJdGVyYXRvciA9IGRlZmluaXRpb24uZ2V0RU1lc3NhZ2VzKCkuaXRlcmF0b3IoKTsKLQotICAgICAgd2hpbGUgKG1lc3NhZ2VzSXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBNZXNzYWdlIG1lc3NhZ2UgPSAoTWVzc2FnZSltZXNzYWdlc0l0ZXJhdG9yLm5leHQoKTsKLSAgICAgICAgU3RyaW5nIG5hbWUgPSBtZXNzYWdlLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgIGlmIChuYW1lLmVxdWFscygidGVzdFJlcXVlc3QiKSkgLy8kTk9OLU5MUy0xJAotICAgICAgICB7Ci0gICAgICAgICAgLy8gV2Uga25vdyB0aGVyZSBpcyBvbmx5IG9uZSBwYXJ0IGluIHRoZSBtZXNzYWdlIGFuZCBpdCByZWZlcnMgdG8gYQotICAgICAgICAgIC8vIHR5cGUuIE1ha2Ugc3VyZSB0aGUgdHlwZSBjYW4gYmUgcmVzb2x2ZWQuCi0KLSAgICAgICAgICBQYXJ0IHBhcnQgPSAoUGFydCltZXNzYWdlLmdldEVQYXJ0cygpLmdldCgwKTsKLSAgICAgICAgICBYU0RUeXBlRGVmaW5pdGlvbiBteVR5cGUgPSBwYXJ0LmdldFR5cGVEZWZpbml0aW9uKCk7Ci0gICAgICAgICAgYXNzZXJ0RXF1YWxzKHNjaGVtYSwgbXlUeXBlLmdldENvbnRhaW5lcigpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuYW1lLmVxdWFscygidGVzdFJlc3BvbnNlIikpIC8vJE5PTi1OTFMtMSQKLSAgICAgICAgewotICAgICAgICAgIC8vIFdlIGtub3cgdGhlcmUgaXMgb25seSBvbmUgcGFydCBpbiB0aGUgbWVzc2FnZSBhbmQgaXQgcmVmZXJzIHRvIGFuCi0gICAgICAgICAgLy8gZWxlbWVudC4KLQotICAgICAgICAgIFBhcnQgcGFydCA9IChQYXJ0KW1lc3NhZ2UuZ2V0RVBhcnRzKCkuZ2V0KDApOwotICAgICAgICAgIFhTREVsZW1lbnREZWNsYXJhdGlvbiBteUVsZW1lbnQgPSBwYXJ0LmdldEVsZW1lbnREZWNsYXJhdGlvbigpOwotICAgICAgICAgIGFzc2VydEVxdWFscyhzY2hlbWEsIG15RWxlbWVudC5nZXRDb250YWluZXIoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xMzM5NTMKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RSZXR1cm5zUHJvcGVyUU5hbWVGb3JNSU1FRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkKLSAgewotICAgIE1JTUVGYWN0b3J5IGZhY3RvcnkgPSBNSU1FUGFja2FnZS5lSU5TVEFOQ0UuZ2V0TUlNRUZhY3RvcnkoKTsKLQotICAgIE1JTUVDb250ZW50IGNvbnRlbnQgPSBmYWN0b3J5LmNyZWF0ZU1JTUVDb250ZW50KCk7Ci0gICAgUU5hbWUgY29udGVudEVsZW1lbnRUeXBlID0gY29udGVudC5nZXRFbGVtZW50VHlwZSgpOwotICAgIGFzc2VydEVxdWFscyhNSU1FQ29uc3RhbnRzLk1JTUVfTkFNRVNQQUNFX1VSSSwgY29udGVudEVsZW1lbnRUeXBlLmdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICBhc3NlcnRFcXVhbHMoTUlNRUNvbnN0YW50cy5DT05URU5UX0VMRU1FTlRfVEFHLCBjb250ZW50RWxlbWVudFR5cGUuZ2V0TG9jYWxQYXJ0KCkpOwotCi0gICAgTUlNRU1pbWVYbWwgbWltZVhtbCA9IGZhY3RvcnkuY3JlYXRlTUlNRU1pbWVYbWwoKTsKLSAgICBRTmFtZSBtaW1lWG1sRWxlbWVudFR5cGUgPSBtaW1lWG1sLmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKE1JTUVDb25zdGFudHMuTUlNRV9OQU1FU1BBQ0VfVVJJLCBtaW1lWG1sRWxlbWVudFR5cGUuZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgIGFzc2VydEVxdWFscyhNSU1FQ29uc3RhbnRzLk1JTUVfWE1MX0VMRU1FTlRfVEFHLCBtaW1lWG1sRWxlbWVudFR5cGUuZ2V0TG9jYWxQYXJ0KCkpOwotCi0gICAgTUlNRU11bHRpcGFydFJlbGF0ZWQgbXVsdGlwYXJ0UmVsYXRlZCA9IGZhY3RvcnkuY3JlYXRlTUlNRU11bHRpcGFydFJlbGF0ZWQoKTsKLSAgICBRTmFtZSBtdWx0aXBhcnRSZWxhdGVkRWxlbWVudFR5cGUgPSBtdWx0aXBhcnRSZWxhdGVkLmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKE1JTUVDb25zdGFudHMuTUlNRV9OQU1FU1BBQ0VfVVJJLCBtdWx0aXBhcnRSZWxhdGVkRWxlbWVudFR5cGUuZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgIGFzc2VydEVxdWFscyhNSU1FQ29uc3RhbnRzLk1VTFRJUEFSVF9SRUxBVEVEX0VMRU1FTlRfVEFHLCBtdWx0aXBhcnRSZWxhdGVkRWxlbWVudFR5cGUuZ2V0TG9jYWxQYXJ0KCkpOwotCi0gICAgTUlNRVBhcnQgcGFydCA9IGZhY3RvcnkuY3JlYXRlTUlNRVBhcnQoKTsKLSAgICBRTmFtZSBwYXJ0RWxlbWVudFR5cGUgPSBwYXJ0LmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKE1JTUVDb25zdGFudHMuTUlNRV9OQU1FU1BBQ0VfVVJJLCBwYXJ0RWxlbWVudFR5cGUuZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgIGFzc2VydEVxdWFscyhNSU1FQ29uc3RhbnRzLlBBUlRfRUxFTUVOVF9UQUcsIHBhcnRFbGVtZW50VHlwZS5nZXRMb2NhbFBhcnQoKSk7Ci0gIH0KLQotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xMzcwNDAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RQbGFjZXNJbXBvcnRzQWZ0ZXJUaGVEZWZpbml0aW9uRWxlbWVudCgpCi0gIHsKLSAgICBXU0RMRmFjdG9yeSBmYWN0b3J5ID0gV1NETFBhY2thZ2UuZUlOU1RBTkNFLmdldFdTRExGYWN0b3J5KCk7Ci0KLSAgICBTdHJpbmcgbmFtZXNwYWNlID0gInRlc3ROYW1lc3BhY2UiOyAvLyROT04tTkxTLTEkCi0KLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBmYWN0b3J5LmNyZWF0ZURlZmluaXRpb24oKTsKLSAgICBkZWZpbml0aW9uLnNldFFOYW1lKG5ldyBRTmFtZShuYW1lc3BhY2UsICJ0ZXN0RGVmaW5pdGlvbiIpKTsgLy8kTk9OLU5MUy0xJCAgCi0gICAgZGVmaW5pdGlvbi51cGRhdGVFbGVtZW50KCk7Ci0KLSAgICBTZXJ2aWNlIHNlcnZpY2UgPSBmYWN0b3J5LmNyZWF0ZVNlcnZpY2UoKTsKLSAgICBzZXJ2aWNlLnNldFFOYW1lKG5ldyBRTmFtZShuYW1lc3BhY2UsICJ0ZXN0U2VydmljZSIpKTsgLy8kTk9OLU5MUy0xJAotICAgIGRlZmluaXRpb24uYWRkU2VydmljZShzZXJ2aWNlKTsKLQotICAgIEltcG9ydCB3c2RsSW1wb3J0ID0gZmFjdG9yeS5jcmVhdGVJbXBvcnQoKTsKLSAgICBkZWZpbml0aW9uLmFkZEltcG9ydCh3c2RsSW1wb3J0KTsKLQotICAgIEVsZW1lbnQgZGVmaW5pdGlvbkVsZW1lbnQgPSBkZWZpbml0aW9uLmdldEVsZW1lbnQoKTsKLSAgICBFbGVtZW50IHNlcnZpY2VFbGVtZW50ID0gc2VydmljZS5nZXRFbGVtZW50KCk7Ci0gICAgRWxlbWVudCBpbXBvcnRFbGVtZW50ID0gd3NkbEltcG9ydC5nZXRFbGVtZW50KCk7Ci0KLSAgICBOb2RlTGlzdCBkZWZpbml0aW9uRWxlbWVudENoaWxkcmVuID0gZGVmaW5pdGlvbkVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpOwotCi0gICAgTm9kZSBmaXJzdENoaWxkID0gZGVmaW5pdGlvbkVsZW1lbnRDaGlsZHJlbi5pdGVtKDApOwotCi0gICAgYXNzZXJ0U2FtZShpbXBvcnRFbGVtZW50LCBmaXJzdENoaWxkKTsKLQotICAgIE5vZGUgc2Vjb25kQ2hpbGQgPSBkZWZpbml0aW9uRWxlbWVudENoaWxkcmVuLml0ZW0oMSk7Ci0KLSAgICBhc3NlcnRTYW1lKHNlcnZpY2VFbGVtZW50LCBzZWNvbmRDaGlsZCk7Ci0gIH0KLQotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xMzc4NjYKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RSZXNvbHZlc0VsZW1lbnRJbkltcG9ydHMoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvQnVnRml4ZXMvV1NETEVsZW1lbnRSZXNvbHV0aW9uL21haW4ud3NkbCIpOyAvLyROT04tTkxTLTEkCi0KLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSI7IC8vJE5PTi1OTFMtMSQKLQotICAgICAgLy8gVGhpcyB0ZXN0IGF0dGVtcHRzIHRvIGxvY2F0ZSBhIG1lc3NhZ2UgbG9jYXRlZCBpbiB0aGUgZmlyc3QgbGV2ZWwKLSAgICAgIC8vIGltcG9ydC4KLQotICAgICAgUU5hbWUgZmlyc3RMZXZlbE1lc3NhZ2VRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJ0ZXN0SU5QVVRtZXNzYWdlIik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGphdmF4LndzZGwuTWVzc2FnZSBmaXJzdExldmVsTWVzc2FnZSA9IGRlZmluaXRpb24uZ2V0TWVzc2FnZShmaXJzdExldmVsTWVzc2FnZVFOYW1lKTsKLQotICAgICAgYXNzZXJ0Tm90TnVsbChmaXJzdExldmVsTWVzc2FnZSk7Ci0KLSAgICAgIC8vIFRoaXMgdGVzdCBhdHRlbXB0cyB0byBsb2NhdGUgYSBtZXNzYWdlIGxvY2F0ZWQgaW4gdGhlIHNlY29uZCBsZXZlbAotICAgICAgLy8gaW1wb3J0LgotCi0gICAgICBRTmFtZSBzZWNvbmRMZXZlbE1lc3NhZ2VRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJ0ZXN0T1VUUFVUbWVzc2FnZSIpOyAvLyROT04tTkxTLTEkCi0gICAgICBqYXZheC53c2RsLk1lc3NhZ2Ugc2Vjb25kTGV2ZWxNZXNzYWdlID0gZGVmaW5pdGlvbi5nZXRNZXNzYWdlKHNlY29uZExldmVsTWVzc2FnZVFOYW1lKTsKLQotICAgICAgYXNzZXJ0Tm90TnVsbChzZWNvbmRMZXZlbE1lc3NhZ2UpOwotCi0gICAgICAvLyBUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHdlIGRvIGEgYnJlYWR0aCBmaXJzdCB0cmF2ZXJzYWwgdG8ga2VlcCB0aGluZ3MKLSAgICAgIC8vIHdvcmtpbmcgYXBwcm94aW1hdGl2ZWx5IGFzIHRoZSBvbGQgaW1wbGVtZW50YXRpb24gd2hpY2ggdXNlZCB0byBjaGVjawotICAgICAgLy8gb25seSB0aGUgZGVmaW5pdGlvbiBhbmQgaXRzIGZpcnN0IGxldmVsIGltcG9ydHMuIFRoZSBmaXJzdCBtZXNzYWdlIGlzCi0gICAgICAvLyBkZWZpbmVkIGluIGZpcnN0bGV2ZWwud3NkbCBhcyB3ZWxsIGFzIHNlY29uZGxldmVsLndzZGwgYnV0IHRoZQotICAgICAgLy8gYWxnb3JpdGhtIHNob3VsZCBmaW5kIHRoZSBvbmUgaW4gZmlyc3RsZXZlbC53c2RsLgotCi0gICAgICBJbXBvcnQgZmlyc3RMZXZlbEltcG9ydCA9IChJbXBvcnQpZGVmaW5pdGlvbi5nZXRJbXBvcnRzKHRhcmdldE5hbWVzcGFjZSkuZ2V0KDApOwotICAgICAgRGVmaW5pdGlvbiBmaXJzdExldmVsRGVmaW5pdGlvbiA9IGZpcnN0TGV2ZWxJbXBvcnQuZ2V0RURlZmluaXRpb24oKTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKGZpcnN0TGV2ZWxEZWZpbml0aW9uLCAoKE1lc3NhZ2UpZmlyc3RMZXZlbE1lc3NhZ2UpLmdldEVuY2xvc2luZ0RlZmluaXRpb24oKSk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBBc3NlcnQuZmFpbCgiVGVzdCBmYWlsZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbjogIiArIGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTEzNzk5MAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFNlcmlhbGl6ZXNQYXJ0c0luU09BUEJvZHkoKQotICB7Ci0gICAgLy8gQnVpbGQgYW4gaW4tbWVtb3J5IFdTREwgZGVmaW5pdGlvbi4KLQotICAgIFdTRExGYWN0b3J5IGZhY3RvcnkgPSBXU0RMUGFja2FnZS5lSU5TVEFOQ0UuZ2V0V1NETEZhY3RvcnkoKTsKLQotICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSAidGVzdE5hbWVzcGFjZSI7IC8vJE5PTi1OTFMtMSQKLQotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGZhY3RvcnkuY3JlYXRlRGVmaW5pdGlvbigpOwotICAgIGRlZmluaXRpb24uc2V0VGFyZ2V0TmFtZXNwYWNlKHRhcmdldE5hbWVzcGFjZSk7Ci0gICAgZGVmaW5pdGlvbi5zZXRRTmFtZShuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCAidGVzdERlZmluaXRpb24iKSk7IC8vJE5PTi1OTFMtMSQKLSAgICBkZWZpbml0aW9uLmFkZE5hbWVzcGFjZSgidG5zIiwgdGFyZ2V0TmFtZXNwYWNlKTsgLy8kTk9OLU5MUy0xJAotICAgIGRlZmluaXRpb24uYWRkTmFtZXNwYWNlKCJ4c2QiLCBYU0RDb25zdGFudHMuU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDEpOyAvLyROT04tTkxTLTEkCi0gICAgZGVmaW5pdGlvbi5hZGROYW1lc3BhY2UoInNvYXAiLCBTT0FQQ29uc3RhbnRzLlNPQVBfTkFNRVNQQUNFX1VSSSk7IC8vJE5PTi1OTFMtMSQKLQotICAgIE1lc3NhZ2UgbWVzc2FnZSA9IGZhY3RvcnkuY3JlYXRlTWVzc2FnZSgpOwotICAgIFFOYW1lIG1lc3NhZ2VRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJ0ZXN0TWVzc2FnZSIpOwotICAgIG1lc3NhZ2Uuc2V0UU5hbWUobWVzc2FnZVFOYW1lKTsKLSAgICBkZWZpbml0aW9uLmFkZE1lc3NhZ2UobWVzc2FnZSk7Ci0KLSAgICBQYXJ0IHBhcnQxID0gZmFjdG9yeS5jcmVhdGVQYXJ0KCk7Ci0gICAgU3RyaW5nIHBhcnQxTmFtZSA9ICJwYXJ0MSI7IC8vJE5PTi1OTFMtMSQgCi0gICAgcGFydDEuc2V0TmFtZShwYXJ0MU5hbWUpOwotICAgIHBhcnQxLnNldFR5cGVOYW1lKG5ldyBRTmFtZShYU0RDb25zdGFudHMuU0NIRU1BX0ZPUl9TQ0hFTUFfVVJJXzIwMDEsICJzdHJpbmciKSk7IC8vJE5PTi1OTFMtMSQKLSAgICBtZXNzYWdlLmFkZFBhcnQocGFydDEpOwotCi0gICAgUGFydCBwYXJ0MiA9IGZhY3RvcnkuY3JlYXRlUGFydCgpOwotICAgIFN0cmluZyBwYXJ0Mk5hbWUgPSAicGFydDIiOyAvLyROT04tTkxTLTEkIAotICAgIHBhcnQyLnNldE5hbWUocGFydDJOYW1lKTsKLSAgICBwYXJ0Mi5zZXRUeXBlTmFtZShuZXcgUU5hbWUoWFNEQ29uc3RhbnRzLlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxLCAic3RyaW5nIikpOyAvLyROT04tTkxTLTEkCi0gICAgbWVzc2FnZS5hZGRQYXJ0KHBhcnQyKTsKLQotICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gZmFjdG9yeS5jcmVhdGVQb3J0VHlwZSgpOwotICAgIFFOYW1lIHBvcnRRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJ0ZXN0UG9ydCIpOyAvLyROT04tTkxTLTEkCi0gICAgcG9ydFR5cGUuc2V0UU5hbWUocG9ydFFOYW1lKTsKLSAgICBkZWZpbml0aW9uLmFkZFBvcnRUeXBlKHBvcnRUeXBlKTsKLQotICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSBmYWN0b3J5LmNyZWF0ZU9wZXJhdGlvbigpOwotICAgIFN0cmluZyBvcGVyYXRpb25OYW1lID0gInRlc3RPcGVyYXRpb24iOyAvLyROT04tTkxTLTEkIAotICAgIG9wZXJhdGlvbi5zZXROYW1lKG9wZXJhdGlvbk5hbWUpOwotICAgIHBvcnRUeXBlLmFkZE9wZXJhdGlvbihvcGVyYXRpb24pOwotCi0gICAgSW5wdXQgaW5wdXQgPSBmYWN0b3J5LmNyZWF0ZUlucHV0KCk7Ci0gICAgaW5wdXQuc2V0TWVzc2FnZShtZXNzYWdlKTsKLSAgICBvcGVyYXRpb24uc2V0SW5wdXQoaW5wdXQpOwotCi0gICAgQmluZGluZyBiaW5kaW5nID0gZmFjdG9yeS5jcmVhdGVCaW5kaW5nKCk7Ci0gICAgUU5hbWUgYmluZGluZ1FOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgInRlc3RCaW5kaW5nIik7IC8vJE5PTi1OTFMtMSQKLSAgICBiaW5kaW5nLnNldFFOYW1lKGJpbmRpbmdRTmFtZSk7Ci0gICAgYmluZGluZy5zZXRQb3J0VHlwZShwb3J0VHlwZSk7Ci0gICAgZGVmaW5pdGlvbi5hZGRCaW5kaW5nKGJpbmRpbmcpOwotCi0gICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uID0gZmFjdG9yeS5jcmVhdGVCaW5kaW5nT3BlcmF0aW9uKCk7Ci0gICAgYmluZGluZ09wZXJhdGlvbi5zZXRPcGVyYXRpb24ob3BlcmF0aW9uKTsKLSAgICBiaW5kaW5nLmFkZEJpbmRpbmdPcGVyYXRpb24oYmluZGluZ09wZXJhdGlvbik7Ci0KLSAgICBCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0ID0gZmFjdG9yeS5jcmVhdGVCaW5kaW5nSW5wdXQoKTsKLSAgICBiaW5kaW5nT3BlcmF0aW9uLnNldEJpbmRpbmdJbnB1dChiaW5kaW5nSW5wdXQpOwotCi0gICAgU09BUEZhY3Rvcnkgc29hcEZhY3RvcnkgPSBTT0FQUGFja2FnZS5lSU5TVEFOQ0UuZ2V0U09BUEZhY3RvcnkoKTsKLSAgICBTT0FQQm9keSBzb2FwQm9keSA9IHNvYXBGYWN0b3J5LmNyZWF0ZVNPQVBCb2R5KCk7Ci0gICAgYmluZGluZ0lucHV0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBCb2R5KTsKLQotICAgIGRlZmluaXRpb24udXBkYXRlRWxlbWVudCgpOwotCi0gICAgLy8gVGVzdCB0aGUgIm5vIHBhcnRzIiBzY2VuYXJpby4gSW4gdGhpcyBjYXNlIHRoZSBwYXJ0cyBhdHRyaWJ1dGUgc2hvdWxkIG5vdAotICAgIC8vIGJlIHByZXNlbnQuCi0KLSAgICBFbGVtZW50IHNvYXBCb2R5RWxlbWVudCA9IHNvYXBCb2R5LmdldEVsZW1lbnQoKTsKLSAgICBBdHRyIHBhcnRzQXR0cmlidXRlTm9kZSA9IHNvYXBCb2R5RWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKFNPQVBDb25zdGFudHMuUEFSVFNfQVRUUklCVVRFKTsKLSAgICBhc3NlcnROdWxsKHBhcnRzQXR0cmlidXRlTm9kZSk7Ci0KLSAgICAvLyBUZXN0IHRoZSBzY2VuYXJpbyB3aGVuIHRoZSBib2R5IHNwZWNpZmllcyBvbmUgcGFydC4gSW4gdGhpcyBjYXNlIHRoZQotICAgIC8vIHBhcnRzIGF0dHJpYnV0ZQotICAgIC8vIHNob3VsZCBiZSBwcmVzZW50IGFuZCBsb29rIGxpa2UgdGhpcyBwYXJ0cz0icGFydDEiCi0KLSAgICBMaXN0IHBhcnRzID0gbmV3IEFycmF5TGlzdCgpOwotICAgIHBhcnRzLmFkZChwYXJ0MSk7Ci0gICAgc29hcEJvZHkuc2V0UGFydHMocGFydHMpOwotCi0gICAgc29hcEJvZHkudXBkYXRlRWxlbWVudCgpOwotCi0gICAgc29hcEJvZHlFbGVtZW50ID0gc29hcEJvZHkuZ2V0RWxlbWVudCgpOwotICAgIFN0cmluZyBwYXJ0c0F0dHJpYnV0ZVZhbHVlID0gc29hcEJvZHlFbGVtZW50LmdldEF0dHJpYnV0ZShTT0FQQ29uc3RhbnRzLlBBUlRTX0FUVFJJQlVURSk7Ci0gICAgYXNzZXJ0RXF1YWxzKHBhcnQxTmFtZSwgcGFydHNBdHRyaWJ1dGVWYWx1ZSk7Ci0KLSAgICAvLyBUZXN0IHRoZSBzY2VuYXJpbyB3aGVuIHRoZSBib2R5IHNwZWNpZmllcyB0d28gcGFydHMuIEluIHRoaXMgY2FzZSB0aGUKLSAgICAvLyBwYXJ0cyBhdHRyaWJ1dGUKLSAgICAvLyBzaG91bGQgYmUgcHJlc2VudCBhbmQgbG9vayBsaWtlIHRoaXMgcGFydHM9InBhcnQxIHBhcnQyIgotCi0gICAgcGFydHMuYWRkKHBhcnQyKTsKLSAgICBzb2FwQm9keS5zZXRQYXJ0cyhwYXJ0cyk7Ci0KLSAgICBzb2FwQm9keS51cGRhdGVFbGVtZW50KCk7Ci0KLSAgICBzb2FwQm9keUVsZW1lbnQgPSBzb2FwQm9keS5nZXRFbGVtZW50KCk7Ci0gICAgcGFydHNBdHRyaWJ1dGVWYWx1ZSA9IHNvYXBCb2R5RWxlbWVudC5nZXRBdHRyaWJ1dGUoU09BUENvbnN0YW50cy5QQVJUU19BVFRSSUJVVEUpOwotICAgIGFzc2VydEVxdWFscyhwYXJ0MU5hbWUgKyAiICIgKyBwYXJ0Mk5hbWUsIHBhcnRzQXR0cmlidXRlVmFsdWUpOyAvLyROT04tTkxTLTEkCi0gIH0KLQotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xMzgwMzMKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RTZXJpYWxpemVzSW1wb3J0c0JlZm9yZVR5cGVzKCkKLSAgewotICAgIFdTRExGYWN0b3J5IGZhY3RvcnkgPSBXU0RMUGFja2FnZS5lSU5TVEFOQ0UuZ2V0V1NETEZhY3RvcnkoKTsKLQotICAgIFN0cmluZyBuYW1lc3BhY2UgPSAidGVzdE5hbWVzcGFjZSI7IC8vJE5PTi1OTFMtMSQKLQotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGZhY3RvcnkuY3JlYXRlRGVmaW5pdGlvbigpOwotICAgIGRlZmluaXRpb24uc2V0UU5hbWUobmV3IFFOYW1lKG5hbWVzcGFjZSwgInRlc3REZWZpbml0aW9uIikpOyAvLyROT04tTkxTLTEkICAKLSAgICBkZWZpbml0aW9uLnVwZGF0ZUVsZW1lbnQoKTsKLQotICAgIFR5cGVzIHR5cGVzID0gZmFjdG9yeS5jcmVhdGVUeXBlcygpOwotICAgIGRlZmluaXRpb24uc2V0VHlwZXModHlwZXMpOwotCi0gICAgSW1wb3J0IHdzZGxJbXBvcnQgPSBmYWN0b3J5LmNyZWF0ZUltcG9ydCgpOwotICAgIGRlZmluaXRpb24uYWRkSW1wb3J0KHdzZGxJbXBvcnQpOwotCi0gICAgRWxlbWVudCBkZWZpbml0aW9uRWxlbWVudCA9IGRlZmluaXRpb24uZ2V0RWxlbWVudCgpOwotICAgIEVsZW1lbnQgdHlwZXNFbGVtZW50ID0gdHlwZXMuZ2V0RWxlbWVudCgpOwotICAgIEVsZW1lbnQgaW1wb3J0RWxlbWVudCA9IHdzZGxJbXBvcnQuZ2V0RWxlbWVudCgpOwotCi0gICAgTm9kZUxpc3QgZGVmaW5pdGlvbkVsZW1lbnRDaGlsZHJlbiA9IGRlZmluaXRpb25FbGVtZW50LmdldENoaWxkTm9kZXMoKTsKLQotICAgIE5vZGUgZmlyc3RDaGlsZCA9IGRlZmluaXRpb25FbGVtZW50Q2hpbGRyZW4uaXRlbSgwKTsKLQotICAgIGFzc2VydFNhbWUoaW1wb3J0RWxlbWVudCwgZmlyc3RDaGlsZCk7Ci0KLSAgICBOb2RlIHNlY29uZENoaWxkID0gZGVmaW5pdGlvbkVsZW1lbnRDaGlsZHJlbi5pdGVtKDEpOwotCi0gICAgYXNzZXJ0U2FtZSh0eXBlc0VsZW1lbnQsIHNlY29uZENoaWxkKTsKLQotICAgIC8vIEJsb3cgYXdheSB0aGUgYmFja2luZyBET00uCi0KLSAgICBkZWZpbml0aW9uLnNldEVsZW1lbnQobnVsbCk7Ci0gICAgZGVmaW5pdGlvbi51cGRhdGVFbGVtZW50KCk7Ci0KLSAgICBkZWZpbml0aW9uRWxlbWVudCA9IGRlZmluaXRpb24uZ2V0RWxlbWVudCgpOwotICAgIHR5cGVzRWxlbWVudCA9IHR5cGVzLmdldEVsZW1lbnQoKTsKLSAgICBpbXBvcnRFbGVtZW50ID0gd3NkbEltcG9ydC5nZXRFbGVtZW50KCk7Ci0KLSAgICBkZWZpbml0aW9uRWxlbWVudENoaWxkcmVuID0gZGVmaW5pdGlvbkVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpOwotCi0gICAgZmlyc3RDaGlsZCA9IGRlZmluaXRpb25FbGVtZW50Q2hpbGRyZW4uaXRlbSgwKTsKLQotICAgIGFzc2VydFNhbWUoaW1wb3J0RWxlbWVudCwgZmlyc3RDaGlsZCk7Ci0KLSAgICBzZWNvbmRDaGlsZCA9IGRlZmluaXRpb25FbGVtZW50Q2hpbGRyZW4uaXRlbSgxKTsKLQotICAgIGFzc2VydFNhbWUodHlwZXNFbGVtZW50LCBzZWNvbmRDaGlsZCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTI0NTI2MwotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFJlbW92ZU1lc3NhZ2UoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gbG9hZCBhIHdzZGwgdGhhdCBpbXBvcnRzIGFub3RoZXIgd3NkbAotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvQnVnRml4ZXMvV1NETDRKUmVtb3ZlL1JlbW92ZVZpYVdTREw0Si53c2RsIiwgdHJ1ZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSBkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgU3RyaW5nIGltcG9ydGVkVGFyZ2V0TmFtZXNwYWNlID0gImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0TWUvIjsgLy8kTk9OLU5MUy0xJAotICAgICAgaW50IHRvdGFsTWVzc2FnZXMgPSA1OwotICAgICAgZGVmaW5pdGlvbi51cGRhdGVFbGVtZW50KCk7Ci0gICAgICAKLSAgICAgIC8vIG1ha2Ugc3VyZSB3c2RsIHdhcyBsb2FkZWQgcHJvcGVybHkKLSAgICAgIGFzc2VydEVxdWFscygiSW5pdGlhbCBtZXNzYWdlcyB3ZXJlIG5vdCBwcm9wZXJseSBsb2FkZWQgKGNoZWNrZWQgdmlhIGRlZmluaXRpb24uZ2V0TWVzc2FnZXMoKSkiLCB0b3RhbE1lc3NhZ2VzLCBkZWZpbml0aW9uLmdldE1lc3NhZ2VzKCkuc2l6ZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYXNzZXJ0RXF1YWxzKCJJbml0aWFsIG1lc3NhZ2VzIHdlcmUgbm90IHByb3Blcmx5IGxvYWRlZCAoY2hlY2tlZCB2aWEgZGVmaW5pdGlvbi5nZXRFTWVzc2FnZXMoKSkiLCB0b3RhbE1lc3NhZ2VzLCBkZWZpbml0aW9uLmdldEVNZXNzYWdlcygpLnNpemUoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIEVsZW1lbnQgZGVmaW5pdGlvbkVsZW1lbnQgPSBkZWZpbml0aW9uLmdldEVsZW1lbnQoKTsKLSAgICAgIE5vZGVMaXN0IG1lc3NhZ2VFbGVtZW50cyA9IGRlZmluaXRpb25FbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkksIFdTRExDb25zdGFudHMuTUVTU0FHRV9FTEVNRU5UX1RBRyk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIkluaXRpYWwgbWVzc2FnZXMgd2VyZSBub3QgcHJvcGVybHkgbG9hZGVkIChjaGVja2VkIHZpYSBET00pIiwgdG90YWxNZXNzYWdlcywgbWVzc2FnZUVsZW1lbnRzLmdldExlbmd0aCgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgbWVzc2FnZSB3ZSdyZSBnb2luZyB0byByZW1vdmUgY3VycmVudGx5IGV4aXN0cwotICAgICAgUU5hbWUgbWVzc2FnZVFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgIlJlbW92ZVZpYVdTREw0Sk1lc3NhZ2VFeHRyYSIpOyAvLyROT04tTkxTLTEkCi0gICAgICBqYXZheC53c2RsLk1lc3NhZ2UgbWVzc2FnZSA9IGRlZmluaXRpb24uZ2V0TWVzc2FnZShtZXNzYWdlUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiVW5hYmxlIHRvIGZpbmQgUmVtb3ZlVmlhV1NETDRKTWVzc2FnZUV4dHJhIiwgbWVzc2FnZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gcmVtb3ZlIHRoZSBtZXNzYWdlCi0gICAgICBqYXZheC53c2RsLk1lc3NhZ2UgcmVtb3ZlZE1lc3NhZ2UgPSBkZWZpbml0aW9uLnJlbW92ZU1lc3NhZ2UobWVzc2FnZVFOYW1lKTsKLSAgICAgIGFzc2VydEVxdWFscygiSW5jb3JyZWN0IG1lc3NhZ2UgcmVtb3ZlZCIsIG1lc3NhZ2UsIHJlbW92ZWRNZXNzYWdlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgbWVzc2FnZSBpcyBnb25lCi0gICAgICBqYXZheC53c2RsLk1lc3NhZ2Ugbm9uZXhpc3RNZXNzYWdlID0gZGVmaW5pdGlvbi5nZXRNZXNzYWdlKG1lc3NhZ2VRTmFtZSk7Ci0gICAgICBhc3NlcnROdWxsKCJSZW1vdmVWaWFXU0RMNEpNZXNzYWdlRXh0cmEgc3RpbGwgZXhpc3RzIGluIG1vZGVsIiwgbm9uZXhpc3RNZXNzYWdlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgbm93IDEgbGVzcyBtZXNzYWdlCi0gICAgICBhc3NlcnRFcXVhbHMoIk1lc3NhZ2Ugd2FzIG5vdCByZW1vdmVkIChjaGVja2VkIHZpYSBkZWZpbml0aW9uLmdldE1lc3NhZ2VzKCkpIiwgdG90YWxNZXNzYWdlcy0xLCBkZWZpbml0aW9uLmdldE1lc3NhZ2VzKCkuc2l6ZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYXNzZXJ0RXF1YWxzKCJNZXNzYWdlIHdhcyBub3QgcmVtb3ZlZCAoY2hlY2tlZCB2aWEgZGVmaW5pdGlvbi5nZXRFTWVzc2FnZXMoKSkiLCB0b3RhbE1lc3NhZ2VzLTEsIGRlZmluaXRpb24uZ2V0RU1lc3NhZ2VzKCkuc2l6ZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgZGVmaW5pdGlvbkVsZW1lbnQgPSBkZWZpbml0aW9uLmdldEVsZW1lbnQoKTsKLSAgICAgIG1lc3NhZ2VFbGVtZW50cyA9IGRlZmluaXRpb25FbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkksIFdTRExDb25zdGFudHMuTUVTU0FHRV9FTEVNRU5UX1RBRyk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIk1lc3NhZ2Ugd2FzIG5vdCByZW1vdmVkIChjaGVja2VkIHZpYSBET00pIiwgdG90YWxNZXNzYWdlcy0xLCBtZXNzYWdlRWxlbWVudHMuZ2V0TGVuZ3RoKCkpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIC8vIG1ha2Ugc3VyZSBpbXBvcnRlZCBtZXNzYWdlIHdlJ3JlIGdvaW5nIHRvIHJlbW92ZSBjdXJyZW50bHkgZXhpc3RzCi0gICAgICBtZXNzYWdlUU5hbWUgPSBuZXcgUU5hbWUoaW1wb3J0ZWRUYXJnZXROYW1lc3BhY2UsICJJbXBvcnRNZU1lc3NhZ2VFeHRyYSIpOyAvLyROT04tTkxTLTEkCi0gICAgICBtZXNzYWdlID0gZGVmaW5pdGlvbi5nZXRNZXNzYWdlKG1lc3NhZ2VRTmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKCJVbmFibGUgdG8gZmluZCBJbXBvcnRNZU1lc3NhZ2VFeHRyYSIsIG1lc3NhZ2UpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIC8vIGF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBpbXBvcnRlZCBtZXNzYWdlCi0gICAgICByZW1vdmVkTWVzc2FnZSA9IGRlZmluaXRpb24ucmVtb3ZlTWVzc2FnZShtZXNzYWdlUU5hbWUpOwotICAgICAgYXNzZXJ0TnVsbCgiSW1wb3J0TWVNZXNzYWdlRXh0cmEgd2FzIGluY29ycmVjdGx5IHJlbW92ZWQiLCByZW1vdmVkTWVzc2FnZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gbWFrZSBzdXJlIGltcG9ydGVkIG1lc3NhZ2Ugc3RpbGwgZXhpc3RzCi0gICAgICBtZXNzYWdlID0gZGVmaW5pdGlvbi5nZXRNZXNzYWdlKG1lc3NhZ2VRTmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKCJJbXBvcnRNZU1lc3NhZ2VFeHRyYSBubyBsb25nZXIgZXhpc3RzIiwgbWVzc2FnZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgbm9uZXhpc3RNZXNzYWdlID0gZGVmaW5pdGlvbi5yZW1vdmVNZXNzYWdlKG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJkb2VzbnRleGlzdCIpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYXNzZXJ0TnVsbCgiQSBub24tZXhpc3RpbmcgbWVzc2FnZSB3YXMgcmVtb3ZlZCIsIG5vbmV4aXN0TWVzc2FnZSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICBmYWlsKCk7Ci0gICAgfSAgICAgIAotICB9Ci0gIAotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yNDUyNjMKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RSZW1vdmVTZXJ2aWNlKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIGxvYWQgYSB3c2RsIHRoYXQgaW1wb3J0cyBhbm90aGVyIHdzZGwKLSAgICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0J1Z0ZpeGVzL1dTREw0SlJlbW92ZS9SZW1vdmVWaWFXU0RMNEoud3NkbCIsIHRydWUpOyAvLyROT04tTkxTLTEkCi0gICAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLSAgICAgIFN0cmluZyBpbXBvcnRlZFRhcmdldE5hbWVzcGFjZSA9ICJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydE1lLyI7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGludCB0b3RhbFNlcnZpY2VzID0gMjsKLSAgICAgIGRlZmluaXRpb24udXBkYXRlRWxlbWVudCgpOwotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgd3NkbCB3YXMgbG9hZGVkIHByb3Blcmx5Ci0gICAgICBhc3NlcnRFcXVhbHMoIkluaXRpYWwgc2VydmljZXMgd2VyZSBub3QgcHJvcGVybHkgbG9hZGVkIChjaGVja2VkIHZpYSBkZWZpbml0aW9uLmdldFNlcnZpY2VzKCkpIiwgdG90YWxTZXJ2aWNlcywgZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpLnNpemUoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGFzc2VydEVxdWFscygiSW5pdGlhbCBzZXJ2aWNlcyB3ZXJlIG5vdCBwcm9wZXJseSBsb2FkZWQgKGNoZWNrZWQgdmlhIGRlZmluaXRpb24uZ2V0RVNlcnZpY2VzKCkpIiwgdG90YWxTZXJ2aWNlcywgZGVmaW5pdGlvbi5nZXRFU2VydmljZXMoKS5zaXplKCkpOyAvLyROT04tTkxTLTEkCi0gICAgICBFbGVtZW50IGRlZmluaXRpb25FbGVtZW50ID0gZGVmaW5pdGlvbi5nZXRFbGVtZW50KCk7Ci0gICAgICBOb2RlTGlzdCBzZXJ2aWNlRWxlbWVudHMgPSBkZWZpbml0aW9uRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKFdTRExDb25zdGFudHMuV1NETF9OQU1FU1BBQ0VfVVJJLCBXU0RMQ29uc3RhbnRzLlNFUlZJQ0VfRUxFTUVOVF9UQUcpOwotICAgICAgYXNzZXJ0RXF1YWxzKCJJbml0aWFsIHNlcnZpY2VzIHdlcmUgbm90IHByb3Blcmx5IGxvYWRlZCAoY2hlY2tlZCB2aWEgRE9NKSIsIHRvdGFsU2VydmljZXMsIHNlcnZpY2VFbGVtZW50cy5nZXRMZW5ndGgoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gbWFrZSBzdXJlIHNlcnZpY2Ugd2UncmUgZ29pbmcgdG8gcmVtb3ZlIGN1cnJlbnRseSBleGlzdHMKLSAgICAgIFFOYW1lIHNlcnZpY2VRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJNYWluU2VydmljZUV4dHJhIik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGphdmF4LndzZGwuU2VydmljZSBzZXJ2aWNlID0gZGVmaW5pdGlvbi5nZXRTZXJ2aWNlKHNlcnZpY2VRTmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKCJVbmFibGUgdG8gZmluZCBNYWluU2VydmljZUV4dHJhIiwgc2VydmljZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gcmVtb3ZlIHRoZSBzZXJ2aWNlCi0gICAgICBqYXZheC53c2RsLlNlcnZpY2UgcmVtb3ZlZFNlcnZpY2UgPSBkZWZpbml0aW9uLnJlbW92ZVNlcnZpY2Uoc2VydmljZVFOYW1lKTsKLSAgICAgIGFzc2VydEVxdWFscygiSW5jb3JyZWN0IHNlcnZpY2UgcmVtb3ZlZCIsIHNlcnZpY2UsIHJlbW92ZWRTZXJ2aWNlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgc2VydmljZSBpcyBnb25lCi0gICAgICBqYXZheC53c2RsLlNlcnZpY2Ugbm9uZXhpc3RTZXJ2aWNlID0gZGVmaW5pdGlvbi5nZXRTZXJ2aWNlKHNlcnZpY2VRTmFtZSk7Ci0gICAgICBhc3NlcnROdWxsKCJNYWluU2VydmljZUV4dHJhIHN0aWxsIGV4aXN0cyBpbiBtb2RlbCIsIG5vbmV4aXN0U2VydmljZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIG5vdyAxIGxlc3Mgc2VydmljZQotICAgICAgYXNzZXJ0RXF1YWxzKCJTZXJ2aWNlIHdhcyBub3QgcmVtb3ZlZCAoY2hlY2tlZCB2aWEgZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpKSIsIHRvdGFsU2VydmljZXMtMSwgZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpLnNpemUoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGFzc2VydEVxdWFscygiU2VydmljZSB3YXMgbm90IHJlbW92ZWQgKGNoZWNrZWQgdmlhIGRlZmluaXRpb24uZ2V0RVNlcnZpY2VzKCkpIiwgdG90YWxTZXJ2aWNlcy0xLCBkZWZpbml0aW9uLmdldEVTZXJ2aWNlcygpLnNpemUoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGRlZmluaXRpb25FbGVtZW50ID0gZGVmaW5pdGlvbi5nZXRFbGVtZW50KCk7Ci0gICAgICBzZXJ2aWNlRWxlbWVudHMgPSBkZWZpbml0aW9uRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKFdTRExDb25zdGFudHMuV1NETF9OQU1FU1BBQ0VfVVJJLCBXU0RMQ29uc3RhbnRzLlNFUlZJQ0VfRUxFTUVOVF9UQUcpOwotICAgICAgYXNzZXJ0RXF1YWxzKCJTZXJ2aWNlIHdhcyBub3QgcmVtb3ZlZCAoY2hlY2tlZCB2aWEgRE9NKSIsIHRvdGFsU2VydmljZXMtMSwgc2VydmljZUVsZW1lbnRzLmdldExlbmd0aCgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgaW1wb3J0ZWQgc2VydmljZSB3ZSdyZSBnb2luZyB0byByZW1vdmUgY3VycmVudGx5IGV4aXN0cwotICAgICAgc2VydmljZVFOYW1lID0gbmV3IFFOYW1lKGltcG9ydGVkVGFyZ2V0TmFtZXNwYWNlLCAiSW1wb3J0U2VydmljZUV4dHJhIik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIHNlcnZpY2UgPSBkZWZpbml0aW9uLmdldFNlcnZpY2Uoc2VydmljZVFOYW1lKTsKLSAgICAgIGFzc2VydE5vdE51bGwoIlVuYWJsZSB0byBmaW5kIEltcG9ydFNlcnZpY2VFeHRyYSIsIHNlcnZpY2UpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIC8vIGF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBpbXBvcnRlZCBzZXJ2aWNlCi0gICAgICByZW1vdmVkU2VydmljZSA9IGRlZmluaXRpb24ucmVtb3ZlU2VydmljZShzZXJ2aWNlUU5hbWUpOwotICAgICAgYXNzZXJ0TnVsbCgiSW1wb3J0U2VydmljZUV4dHJhIHdhcyBpbmNvcnJlY3RseSByZW1vdmVkIiwgcmVtb3ZlZFNlcnZpY2UpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIC8vIG1ha2Ugc3VyZSBpbXBvcnRlZCBzZXJ2aWNlIHN0aWxsIGV4aXN0cwotICAgICAgc2VydmljZSA9IGRlZmluaXRpb24uZ2V0U2VydmljZShzZXJ2aWNlUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiSW1wb3J0U2VydmljZUV4dHJhIG5vIGxvbmdlciBleGlzdHMiLCBzZXJ2aWNlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICBub25leGlzdFNlcnZpY2UgPSBkZWZpbml0aW9uLnJlbW92ZVNlcnZpY2UobmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgImRvZXNudGV4aXN0IikpOyAvLyROT04tTkxTLTEkCi0gICAgICBhc3NlcnROdWxsKCJBIG5vbi1leGlzdGluZyBzZXJ2aWNlIHdhcyByZW1vdmVkIiwgbm9uZXhpc3RTZXJ2aWNlKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIGZhaWwoKTsKLSAgICB9ICAgICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTI0NTI2MwotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFJlbW92ZUJpbmRpbmcoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gbG9hZCBhIHdzZGwgdGhhdCBpbXBvcnRzIGFub3RoZXIgd3NkbAotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvQnVnRml4ZXMvV1NETDRKUmVtb3ZlL1JlbW92ZVZpYVdTREw0Si53c2RsIiwgdHJ1ZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSBkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgU3RyaW5nIGltcG9ydGVkVGFyZ2V0TmFtZXNwYWNlID0gImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0TWUvIjsgLy8kTk9OLU5MUy0xJAotICAgICAgaW50IHRvdGFsQmluZGluZ3MgPSAyOwotICAgICAgZGVmaW5pdGlvbi51cGRhdGVFbGVtZW50KCk7Ci0gICAgICAKLSAgICAgIC8vIG1ha2Ugc3VyZSB3c2RsIHdhcyBsb2FkZWQgcHJvcGVybHkKLSAgICAgIGFzc2VydEVxdWFscygiSW5pdGlhbCBiaW5kaW5ncyB3ZXJlIG5vdCBwcm9wZXJseSBsb2FkZWQgKGNoZWNrZWQgdmlhIGRlZmluaXRpb24uZ2V0QmluZGluZ3MoKSkiLCB0b3RhbEJpbmRpbmdzLCBkZWZpbml0aW9uLmdldEJpbmRpbmdzKCkuc2l6ZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYXNzZXJ0RXF1YWxzKCJJbml0aWFsIGJpbmRpbmdzIHdlcmUgbm90IHByb3Blcmx5IGxvYWRlZCAoY2hlY2tlZCB2aWEgZGVmaW5pdGlvbi5nZXRFQmluZGluZ3MoKSkiLCB0b3RhbEJpbmRpbmdzLCBkZWZpbml0aW9uLmdldEVCaW5kaW5ncygpLnNpemUoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIEVsZW1lbnQgZGVmaW5pdGlvbkVsZW1lbnQgPSBkZWZpbml0aW9uLmdldEVsZW1lbnQoKTsKLSAgICAgIE5vZGVMaXN0IGJpbmRpbmdFbGVtZW50cyA9IGRlZmluaXRpb25FbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkksIFdTRExDb25zdGFudHMuQklORElOR19FTEVNRU5UX1RBRyk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIkluaXRpYWwgYmluZGluZ3Mgd2VyZSBub3QgcHJvcGVybHkgbG9hZGVkIChjaGVja2VkIHZpYSBET00pIiwgdG90YWxCaW5kaW5ncywgYmluZGluZ0VsZW1lbnRzLmdldExlbmd0aCgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgYmluZGluZyB3ZSdyZSBnb2luZyB0byByZW1vdmUgY3VycmVudGx5IGV4aXN0cwotICAgICAgUU5hbWUgYmluZGluZ1FOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgIk1haW5CaW5kaW5nRXh0cmEiKTsgLy8kTk9OLU5MUy0xJAotICAgICAgamF2YXgud3NkbC5CaW5kaW5nIGJpbmRpbmcgPSBkZWZpbml0aW9uLmdldEJpbmRpbmcoYmluZGluZ1FOYW1lKTsKLSAgICAgIGFzc2VydE5vdE51bGwoIlVuYWJsZSB0byBmaW5kIE1haW5CaW5kaW5nRXh0cmEiLCBiaW5kaW5nKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyByZW1vdmUgdGhlIGJpbmRpbmcKLSAgICAgIGphdmF4LndzZGwuQmluZGluZyByZW1vdmVkQmluZGluZyA9IGRlZmluaXRpb24ucmVtb3ZlQmluZGluZyhiaW5kaW5nUU5hbWUpOwotICAgICAgYXNzZXJ0RXF1YWxzKCJJbmNvcnJlY3QgYmluZGluZyByZW1vdmVkIiwgYmluZGluZywgcmVtb3ZlZEJpbmRpbmcpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIC8vIG1ha2Ugc3VyZSBiaW5kaW5nIGlzIGdvbmUKLSAgICAgIGphdmF4LndzZGwuQmluZGluZyBub25leGlzdEJpbmRpbmcgPSBkZWZpbml0aW9uLmdldEJpbmRpbmcoYmluZGluZ1FOYW1lKTsKLSAgICAgIGFzc2VydE51bGwoIk1haW5CaW5kaW5nRXh0cmEgc3RpbGwgZXhpc3RzIGluIG1vZGVsIiwgbm9uZXhpc3RCaW5kaW5nKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgbm93IDEgbGVzcyBiaW5kaW5nCi0gICAgICBhc3NlcnRFcXVhbHMoIkJpbmRpbmcgd2FzIG5vdCByZW1vdmVkIChjaGVja2VkIHZpYSBkZWZpbml0aW9uLmdldEJpbmRpbmdzKCkpIiwgdG90YWxCaW5kaW5ncy0xLCBkZWZpbml0aW9uLmdldEJpbmRpbmdzKCkuc2l6ZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYXNzZXJ0RXF1YWxzKCJCaW5kaW5nIHdhcyBub3QgcmVtb3ZlZCAoY2hlY2tlZCB2aWEgZGVmaW5pdGlvbi5nZXRFQmluZGluZ3MoKSkiLCB0b3RhbEJpbmRpbmdzLTEsIGRlZmluaXRpb24uZ2V0RUJpbmRpbmdzKCkuc2l6ZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgZGVmaW5pdGlvbkVsZW1lbnQgPSBkZWZpbml0aW9uLmdldEVsZW1lbnQoKTsKLSAgICAgIGJpbmRpbmdFbGVtZW50cyA9IGRlZmluaXRpb25FbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkksIFdTRExDb25zdGFudHMuQklORElOR19FTEVNRU5UX1RBRyk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIkJpbmRpbmcgd2FzIG5vdCByZW1vdmVkIChjaGVja2VkIHZpYSBET00pIiwgdG90YWxCaW5kaW5ncy0xLCBiaW5kaW5nRWxlbWVudHMuZ2V0TGVuZ3RoKCkpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIC8vIG1ha2Ugc3VyZSBpbXBvcnRlZCBiaW5kaW5nIHdlJ3JlIGdvaW5nIHRvIHJlbW92ZSBjdXJyZW50bHkgZXhpc3RzCi0gICAgICBiaW5kaW5nUU5hbWUgPSBuZXcgUU5hbWUoaW1wb3J0ZWRUYXJnZXROYW1lc3BhY2UsICJJbXBvcnRCaW5kaW5nRXh0cmEiKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYmluZGluZyA9IGRlZmluaXRpb24uZ2V0QmluZGluZyhiaW5kaW5nUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiVW5hYmxlIHRvIGZpbmQgSW1wb3J0QmluZGluZ0V4dHJhIiwgYmluZGluZyk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gYXR0ZW1wdCB0byByZW1vdmUgdGhlIGltcG9ydGVkIGJpbmRpbmcKLSAgICAgIHJlbW92ZWRCaW5kaW5nID0gZGVmaW5pdGlvbi5yZW1vdmVCaW5kaW5nKGJpbmRpbmdRTmFtZSk7Ci0gICAgICBhc3NlcnROdWxsKCJJbXBvcnRCaW5kaW5nRXh0cmEgd2FzIGluY29ycmVjdGx5IHJlbW92ZWQiLCByZW1vdmVkQmluZGluZyk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gbWFrZSBzdXJlIGltcG9ydGVkIGJpbmRpbmcgc3RpbGwgZXhpc3RzCi0gICAgICBiaW5kaW5nID0gZGVmaW5pdGlvbi5nZXRCaW5kaW5nKGJpbmRpbmdRTmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKCJJbXBvcnRCaW5kaW5nRXh0cmEgbm8gbG9uZ2VyIGV4aXN0cyIsIGJpbmRpbmcpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIG5vbmV4aXN0QmluZGluZyA9IGRlZmluaXRpb24ucmVtb3ZlQmluZGluZyhuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCAiZG9lc250ZXhpc3QiKSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGFzc2VydE51bGwoIkEgbm9uLWV4aXN0aW5nIGJpbmRpbmcgd2FzIHJlbW92ZWQiLCBub25leGlzdEJpbmRpbmcpOyAvLyROT04tTkxTLTEkCi0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgZmFpbCgpOwotICAgIH0gICAgICAKLSAgfQotICAKLSAgLyoqCi0gICAqIFNlZSBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1MjYzCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UmVtb3ZlUG9ydFR5cGUoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gbG9hZCBhIHdzZGwgdGhhdCBpbXBvcnRzIGFub3RoZXIgd3NkbAotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvQnVnRml4ZXMvV1NETDRKUmVtb3ZlL1JlbW92ZVZpYVdTREw0Si53c2RsIiwgdHJ1ZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSBkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgU3RyaW5nIGltcG9ydGVkVGFyZ2V0TmFtZXNwYWNlID0gImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0TWUvIjsgLy8kTk9OLU5MUy0xJAotICAgICAgaW50IHRvdGFsUG9ydFR5cGVzID0gMjsKLSAgICAgIGRlZmluaXRpb24udXBkYXRlRWxlbWVudCgpOwotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgd3NkbCB3YXMgbG9hZGVkIHByb3Blcmx5Ci0gICAgICBhc3NlcnRFcXVhbHMoIkluaXRpYWwgcG9ydCB0eXBlcyB3ZXJlIG5vdCBwcm9wZXJseSBsb2FkZWQgKGNoZWNrZWQgdmlhIGRlZmluaXRpb24uZ2V0UG9ydFR5cGVzKCkpIiwgdG90YWxQb3J0VHlwZXMsIGRlZmluaXRpb24uZ2V0UG9ydFR5cGVzKCkuc2l6ZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYXNzZXJ0RXF1YWxzKCJJbml0aWFsIHBvcnQgdHlwZXMgd2VyZSBub3QgcHJvcGVybHkgbG9hZGVkIChjaGVja2VkIHZpYSBkZWZpbml0aW9uLmdldEVQb3J0VHlwZXMoKSkiLCB0b3RhbFBvcnRUeXBlcywgZGVmaW5pdGlvbi5nZXRFUG9ydFR5cGVzKCkuc2l6ZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgRWxlbWVudCBkZWZpbml0aW9uRWxlbWVudCA9IGRlZmluaXRpb24uZ2V0RWxlbWVudCgpOwotICAgICAgTm9kZUxpc3QgcG9ydFR5cGVFbGVtZW50cyA9IGRlZmluaXRpb25FbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkksIFdTRExDb25zdGFudHMuUE9SVF9UWVBFX0VMRU1FTlRfVEFHKTsKLSAgICAgIGFzc2VydEVxdWFscygiSW5pdGlhbCBwb3J0IHR5cGVzIHdlcmUgbm90IHByb3Blcmx5IGxvYWRlZCAoY2hlY2tlZCB2aWEgRE9NKSIsIHRvdGFsUG9ydFR5cGVzLCBwb3J0VHlwZUVsZW1lbnRzLmdldExlbmd0aCgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgcG9ydCB0eXBlIHdlJ3JlIGdvaW5nIHRvIHJlbW92ZSBjdXJyZW50bHkgZXhpc3RzCi0gICAgICBRTmFtZSBwb3J0VHlwZVFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgIk1haW5Qb3J0VHlwZUV4dHJhIik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGphdmF4LndzZGwuUG9ydFR5cGUgcG9ydFR5cGUgPSBkZWZpbml0aW9uLmdldFBvcnRUeXBlKHBvcnRUeXBlUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiVW5hYmxlIHRvIGZpbmQgTWFpblBvcnRUeXBlRXh0cmEiLCBwb3J0VHlwZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gcmVtb3ZlIHRoZSBwb3J0VHlwZQotICAgICAgamF2YXgud3NkbC5Qb3J0VHlwZSByZW1vdmVkUG9ydFR5cGUgPSBkZWZpbml0aW9uLnJlbW92ZVBvcnRUeXBlKHBvcnRUeXBlUU5hbWUpOwotICAgICAgYXNzZXJ0RXF1YWxzKCJJbmNvcnJlY3QgcG9ydFR5cGUgcmVtb3ZlZCIsIHBvcnRUeXBlLCByZW1vdmVkUG9ydFR5cGUpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIC8vIG1ha2Ugc3VyZSBwb3J0VHlwZSBpcyBnb25lCi0gICAgICBqYXZheC53c2RsLlBvcnRUeXBlIG5vbmV4aXN0UG9ydFR5cGUgPSBkZWZpbml0aW9uLmdldFBvcnRUeXBlKHBvcnRUeXBlUU5hbWUpOwotICAgICAgYXNzZXJ0TnVsbCgiTWFpblBvcnRUeXBlRXh0cmEgc3RpbGwgZXhpc3RzIGluIG1vZGVsIiwgbm9uZXhpc3RQb3J0VHlwZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIG5vdyAxIGxlc3MgcG9ydFR5cGUKLSAgICAgIGFzc2VydEVxdWFscygiUG9ydFR5cGUgd2FzIG5vdCByZW1vdmVkIChjaGVja2VkIHZpYSBkZWZpbml0aW9uLmdldFBvcnRUeXBlcygpKSIsIHRvdGFsUG9ydFR5cGVzLTEsIGRlZmluaXRpb24uZ2V0UG9ydFR5cGVzKCkuc2l6ZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYXNzZXJ0RXF1YWxzKCJQb3J0VHlwZSB3YXMgbm90IHJlbW92ZWQgKGNoZWNrZWQgdmlhIGRlZmluaXRpb24uZ2V0RVBvcnRUeXBlcygpKSIsIHRvdGFsUG9ydFR5cGVzLTEsIGRlZmluaXRpb24uZ2V0RVBvcnRUeXBlcygpLnNpemUoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGRlZmluaXRpb25FbGVtZW50ID0gZGVmaW5pdGlvbi5nZXRFbGVtZW50KCk7Ci0gICAgICBwb3J0VHlwZUVsZW1lbnRzID0gZGVmaW5pdGlvbkVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhXU0RMQ29uc3RhbnRzLldTRExfTkFNRVNQQUNFX1VSSSwgV1NETENvbnN0YW50cy5QT1JUX1RZUEVfRUxFTUVOVF9UQUcpOwotICAgICAgYXNzZXJ0RXF1YWxzKCJQb3J0VHlwZSB3YXMgbm90IHJlbW92ZWQgKGNoZWNrZWQgdmlhIERPTSkiLCB0b3RhbFBvcnRUeXBlcy0xLCBwb3J0VHlwZUVsZW1lbnRzLmdldExlbmd0aCgpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICAvLyBtYWtlIHN1cmUgaW1wb3J0ZWQgcG9ydFR5cGUgd2UncmUgZ29pbmcgdG8gcmVtb3ZlIGN1cnJlbnRseSBleGlzdHMKLSAgICAgIHBvcnRUeXBlUU5hbWUgPSBuZXcgUU5hbWUoaW1wb3J0ZWRUYXJnZXROYW1lc3BhY2UsICJJbXBvcnRQb3J0VHlwZUV4dHJhIik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIHBvcnRUeXBlID0gZGVmaW5pdGlvbi5nZXRQb3J0VHlwZShwb3J0VHlwZVFOYW1lKTsKLSAgICAgIGFzc2VydE5vdE51bGwoIlVuYWJsZSB0byBmaW5kIEltcG9ydFBvcnRUeXBlRXh0cmEiLCBwb3J0VHlwZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gYXR0ZW1wdCB0byByZW1vdmUgdGhlIGltcG9ydGVkIHBvcnRUeXBlCi0gICAgICByZW1vdmVkUG9ydFR5cGUgPSBkZWZpbml0aW9uLnJlbW92ZVBvcnRUeXBlKHBvcnRUeXBlUU5hbWUpOwotICAgICAgYXNzZXJ0TnVsbCgiSW1wb3J0UG9ydFR5cGVFeHRyYSB3YXMgaW5jb3JyZWN0bHkgcmVtb3ZlZCIsIHJlbW92ZWRQb3J0VHlwZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgLy8gbWFrZSBzdXJlIGltcG9ydGVkIHBvcnRUeXBlIHN0aWxsIGV4aXN0cwotICAgICAgcG9ydFR5cGUgPSBkZWZpbml0aW9uLmdldFBvcnRUeXBlKHBvcnRUeXBlUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiSW1wb3J0UG9ydFR5cGVFeHRyYSBubyBsb25nZXIgZXhpc3RzIiwgcG9ydFR5cGUpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIG5vbmV4aXN0UG9ydFR5cGUgPSBkZWZpbml0aW9uLnJlbW92ZVBvcnRUeXBlKG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJkb2VzbnRleGlzdCIpKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYXNzZXJ0TnVsbCgiQSBub24tZXhpc3RpbmcgcG9ydFR5cGUgd2FzIHJlbW92ZWQiLCBub25leGlzdFBvcnRUeXBlKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIGZhaWwoKTsKLSAgICB9ICAgICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTE1MDU1MwotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFN1cHBvcnRzTG9jYWxOYW1lc3BhY2VQcmVmaXhlcygpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBudWxsOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0J1Z0ZpeGVzL0xvY2FsTmFtZXNwYWNlL0xvY2FsTmFtZXNwYWNlLndzZGwiKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBmYWlsKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gImh0dHA6Ly90ZW1wdXJpLm9yZy9TaW1wbGUvIjsgLy8kTk9OLU5MUy0xJAotCi0gICAgLy8gQ2hlY2sgdGhhdCB0aGUgcmVzcG9uc2UgbWVzc2FnZSdzIHBhcnQgZWxlbWVudCBpcyByZXNvbHZlZCBPSy4KLQotICAgIFFOYW1lIHJlc3BvbnNlTWVzc2FnZVFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgIm15T3BlcmF0aW9uUmVzcG9uc2UiKTsgLy8vLyROT04tTkxTLTEkCi0gICAgamF2YXgud3NkbC5NZXNzYWdlIHJlc3BvbnNlTWVzc2FnZSA9IGRlZmluaXRpb24uZ2V0TWVzc2FnZShyZXNwb25zZU1lc3NhZ2VRTmFtZSk7Ci0KLSAgICBQYXJ0IHJlc3BvbnNlUGFydCA9IChQYXJ0KXJlc3BvbnNlTWVzc2FnZS5nZXRQYXJ0KCJteU9wZXJhdGlvblJlc3BvbnNlIik7IC8vLy8kTk9OLU5MUy0xJAotCi0gICAgWFNERWxlbWVudERlY2xhcmF0aW9uIHJlc3BvbnNlRWxlbWVudERlY2xhcmF0aW9uID0gcmVzcG9uc2VQYXJ0LmdldEVsZW1lbnREZWNsYXJhdGlvbigpOwotCi0gICAgYXNzZXJ0Tm90TnVsbChyZXNwb25zZUVsZW1lbnREZWNsYXJhdGlvbik7Ci0gICAgYXNzZXJ0Tm90TnVsbChyZXNwb25zZUVsZW1lbnREZWNsYXJhdGlvbi5nZXRDb250YWluZXIoKSk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IHRoZSByZXF1ZXN0IG1lc3NhZ2UncyBwYXJ0IGVsZW1lbnQgaXMgcmVzb2x2ZWQgT0suCi0gICAgLy8gVGhpcyBwYXJ0IGRlZmluZXMgYSBsb2NhbCBuYW1lc3BhY2UgcHJlZml4Ci0KLSAgICBRTmFtZSByZXF1ZXN0TWVzc2FnZVFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgIm15T3BlcmF0aW9uUmVxdWVzdCIpOyAvLy8vJE5PTi1OTFMtMSQKLSAgICBqYXZheC53c2RsLk1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UgPSBkZWZpbml0aW9uLmdldE1lc3NhZ2UocmVxdWVzdE1lc3NhZ2VRTmFtZSk7Ci0KLSAgICBQYXJ0IHJlcXVlc3RQYXJ0ID0gKFBhcnQpcmVxdWVzdE1lc3NhZ2UuZ2V0UGFydCgibXlPcGVyYXRpb25SZXF1ZXN0Iik7IC8vLy8kTk9OLU5MUy0xJAotCi0gICAgWFNERWxlbWVudERlY2xhcmF0aW9uIHJlcXVlc3RFbGVtZW50RGVjbGFyYXRpb24gPSByZXF1ZXN0UGFydC5nZXRFbGVtZW50RGVjbGFyYXRpb24oKTsKLQotICAgIGFzc2VydE5vdE51bGwocmVxdWVzdEVsZW1lbnREZWNsYXJhdGlvbik7Ci0KLSAgICAvLyBOb3cgdG8gbWFrZSBzdXJlIHRoZSBET00gaXMgcmVjb25jaWxlZCBwcm9wZXJseSBhbmQgdXNlcyB0aGUgbG9jYWwgbmFtZXNwYWNlIHByZWZpeCwgCi0gICAgLy8gbGV0J3MgdHJ5IHRvIGNoYW5nZSB0aGUgcGFydCdzIGVsZW1lbnQgZGVjbGFyYXRpb24uIFdlJ2xsIHVzZSB0aGUgcmVzcG9uc2UgcGFydCBlbGVtZW50Ci0gICAgLy8ganVzdCBiZWNhdXNlIGl0IGlzIGNvbnZlbmllbnQuCi0KLSAgICByZXF1ZXN0UGFydC5zZXRFbGVtZW50RGVjbGFyYXRpb24ocmVzcG9uc2VFbGVtZW50RGVjbGFyYXRpb24pOwotCi0gICAgRWxlbWVudCBwYXJ0RWxlbWVudCA9IHJlcXVlc3RQYXJ0LmdldEVsZW1lbnQoKTsKLSAgICBTdHJpbmcgZWxlbWVudEF0dHJpYnV0ZVZhbHVlID0gcGFydEVsZW1lbnQuZ2V0QXR0cmlidXRlKFdTRExDb25zdGFudHMuRUxFTUVOVF9BVFRSSUJVVEUpOwotCi0gICAgYXNzZXJ0RXF1YWxzKGVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSwgInBhcnR0bnM6IiArIHJlc3BvbnNlRWxlbWVudERlY2xhcmF0aW9uLmdldE5hbWUoKSk7Ci0gIH0KLQotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xNTcxMDcKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RUb2xsZXJhdGVzRXh0ZW5zaW9uRWxlbWVudHNGb3JPcGVyYXRpb24oKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9PcGVyYXRpb25TdHlsZS9PcGVyYXRpb25TdHlsZVRlc3Qud3NkbCIpOyAvLyROT04tTkxTLTEkCi0gICAgfQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGZhaWwoZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLQotICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gKFBvcnRUeXBlKWRlZmluaXRpb24uZ2V0RVBvcnRUeXBlcygpLmdldCgwKTsKLSAgICBFTGlzdCBvcGVyYXRpb25zID0gcG9ydFR5cGUuZ2V0RU9wZXJhdGlvbnMoKTsKLQotICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSAoT3BlcmF0aW9uKW9wZXJhdGlvbnMuZ2V0KDApOwotICAgIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uVHlwZSA9IG9wZXJhdGlvbi5nZXRTdHlsZSgpOwotCi0gICAgYXNzZXJ0RXF1YWxzKE9wZXJhdGlvblR5cGUuUkVRVUVTVF9SRVNQT05TRSwgb3BlcmF0aW9uVHlwZSk7Ci0gIH0KLQotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xNjQ1NjUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RSZWNvbmNpbGVzQmluZGluZ0ZhdWx0cygpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBudWxsOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0J1Z0ZpeGVzL0JpbmRpbmdGYXVsdFJlY29uY2lsaWF0aW9uL0JpbmRpbmdGYXVsdFNhbXBsZS53c2RsIik7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZmFpbChlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotCi0gICAgLy8gVGVzdCB0aGUgYWJub3JtYWwgY2FzZSB3aGVuIHRoZSBiaW5kaW5nIG9wZXJhdGlvbiB0cmllcyB0byBiaW5kIGEgZmF1bHQKLSAgICAvLyBidXQgdGhlIGZhdWx0IGlzIG1pc3NpbmcgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uLiBJbiB0aGlzIGNhc2UgdGhlCi0gICAgLy8gZmF1bHQgb2J0YWluZWQgZnJvbSB0aGUgYmluZGluZyBvcGVyYXRpb24ncyBmYXVsdCBzaG91bGQgYmUgbnVsbC4KLQotICAgIExpc3QgYmluZGluZ3MgPSBkZWZpbml0aW9uLmdldEVCaW5kaW5ncygpOwotICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKWJpbmRpbmdzLmdldCgwKTsKLSAgICBMaXN0IGJpbmRpbmdPcGVyYXRpb25zID0gYmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9ucygpOwotICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKWJpbmRpbmdPcGVyYXRpb25zLmdldCgwKTsKLSAgICBCaW5kaW5nRmF1bHQgYmluZGluZ0ZhdWx0ID0gKEJpbmRpbmdGYXVsdCliaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdGYXVsdCgiT3BlcmF0aW9uMUZhdWx0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBGYXVsdCBmYXVsdCA9IGJpbmRpbmdGYXVsdC5nZXRFRmF1bHQoKTsKLSAgICBhc3NlcnROdWxsKGZhdWx0KTsKLQotICAgIC8vIFRlc3QgdGhlIG5vcm1hbCBjYXNlIHdoZW4gdGhlIG9wZXJhdGlvbiBhbmQgYmluZGluZyBvcGVyYXRpb24gYXJlIGluCi0gICAgLy8gc3luY2guIEluIHRoaXMgY2FzZSB0aGUgZmF1bHQgZGVmaW5lZCBpbiB0aGUgb3BlcmF0aW9uIHNob3VsZCBtYXRjaAotICAgIC8vIHRoZSBvbmUgb2J0YWluZWQgZnJvbSB0aGUgYmluZGluZyBvcGVyYXRpb24ncyBmYXVsdC4KLQotICAgIExpc3QgcG9ydFR5cGVzID0gZGVmaW5pdGlvbi5nZXRFUG9ydFR5cGVzKCk7Ci0gICAgUG9ydFR5cGUgcG9ydFR5cGUgPSAoUG9ydFR5cGUpcG9ydFR5cGVzLmdldCgwKTsKLSAgICBFTGlzdCBvcGVyYXRpb25zID0gcG9ydFR5cGUuZ2V0RU9wZXJhdGlvbnMoKTsKLQotICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSAoT3BlcmF0aW9uKW9wZXJhdGlvbnMuZ2V0KDEpOwotICAgIGphdmF4LndzZGwuRmF1bHQgZXhwZWN0ZWRGYXVsdDEgPSBvcGVyYXRpb24uZ2V0RmF1bHQoIk9wZXJhdGlvbjJGYXVsdDEiKTsgLy8kTk9OLU5MUy0xJAotICAgIGphdmF4LndzZGwuRmF1bHQgZXhwZWN0ZWRGYXVsdDIgPSBvcGVyYXRpb24uZ2V0RmF1bHQoIk9wZXJhdGlvbjJGYXVsdDIiKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uMiA9IChCaW5kaW5nT3BlcmF0aW9uKWJpbmRpbmdPcGVyYXRpb25zLmdldCgxKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmF1bHQgb2J0YWluZWQgZnJvbSB0aGUgYmluZGluZyBmYXVsdCBpcyBub3QgbnVsbCBhbmQKLSAgICAvLyBtYXRjaGVzIHRoZSBvbmUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uLgotCi0gICAgQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdDEgPSAoQmluZGluZ0ZhdWx0KWJpbmRpbmdPcGVyYXRpb24yLmdldEJpbmRpbmdGYXVsdCgiT3BlcmF0aW9uMkZhdWx0MSIpOyAvLyROT04tTkxTLTEkCi0gICAgamF2YXgud3NkbC5GYXVsdCBhY3R1YWxGYXVsdDEgPSBiaW5kaW5nRmF1bHQxLmdldEVGYXVsdCgpOwotICAgIGFzc2VydE5vdE51bGwoYWN0dWFsRmF1bHQxKTsKLSAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRGYXVsdDEsIGFjdHVhbEZhdWx0MSk7Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhlIGZhdWx0IG9idGFpbmVkIGZyb20gdGhlIGJpbmRpbmcgZmF1bHQgaXMgbm90IG51bGwgYW5kCi0gICAgLy8gbWF0Y2hlcyB0aGUgb25lIGluIHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbi4KLQotICAgIEJpbmRpbmdGYXVsdCBiaW5kaW5nRmF1bHQyID0gKEJpbmRpbmdGYXVsdCliaW5kaW5nT3BlcmF0aW9uMi5nZXRCaW5kaW5nRmF1bHQoIk9wZXJhdGlvbjJGYXVsdDIiKTsgLy8kTk9OLU5MUy0xJAotICAgIGphdmF4LndzZGwuRmF1bHQgYWN0dWFsRmF1bHQyID0gYmluZGluZ0ZhdWx0Mi5nZXRFRmF1bHQoKTsKLSAgICBhc3NlcnROb3ROdWxsKGFjdHVhbEZhdWx0Mik7Ci0gICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkRmF1bHQyLCBhY3R1YWxGYXVsdDIpOwotICB9Ci0KLSAgLyoqCi0gICAqIFNlZSBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDU5Ci0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0QXZvaWREdXBsaWNhdGVTQVhFeGNlcHRpb25EaWFnbm9zdGljcygpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBudWxsOwotCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gTWFrZSBzdXJlIHdlIHRyYWNrIGxvY2F0aW9uIHRvIGFsbG93IHRoZSBXU0RMUGFyc2VyIHRvIGtpY2sgaW4uCi0KLSAgICAgIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9EdXBsaWNhdGVTQVhFeGNlcHRpb24vU0FYRXhjZXB0aW9uLndzZGwiLCB0cnVlLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBmYWlsKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0KLSAgICBSZXNvdXJjZSByZXNvdXJjZSA9IGRlZmluaXRpb24uZVJlc291cmNlKCk7Ci0gICAgRUxpc3QgZXJyb3JzID0gcmVzb3VyY2UuZ2V0RXJyb3JzKCk7Ci0gICAgaW50IGV4cGVjdGVkU2l6ZSA9IDE7Ci0gICAgaW50IGFjdHVhbFNpemUgPSBlcnJvcnMuc2l6ZSgpOwotICAgIGFzc2VydEVxdWFscyhleHBlY3RlZFNpemUsIGFjdHVhbFNpemUpOwotICB9Ci0KLSAgLyoqCi0gICAqIFNlZSBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTc2Ci0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0QmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uKCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IG51bGw7Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRICi0gICAgICAgICsgInNhbXBsZXMvQnVnRml4ZXMvQmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uL0JpbmRpbmdPcGVyYXRpb25SZWNvbmNpbGlhdGlvbi53c2RsIiwgdHJ1ZSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZmFpbChlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRhcmdldE5hbWVzcGFjZSA9ICJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0JpbmRpbmdPcGVyYXRpb25SZWNvbmNpbGlhdGlvbi8iOyAvLyROT04tTkxTLTEkCi0gICAgUU5hbWUgcG9ydFR5cGVRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJCaW5kaW5nT3BlcmF0aW9uUmVjb25jaWxpYXRpb24iKTsgLy8kTk9OLU5MUy0xJAotICAgIGphdmF4LndzZGwuUG9ydFR5cGUgcG9ydFR5cGUgPSBkZWZpbml0aW9uLmdldFBvcnRUeXBlKHBvcnRUeXBlUU5hbWUpOwotCi0gICAgU3RyaW5nIGlucHV0M05hbWUgPSAiSW5wdXQzIjsgLy8kTk9OLU5MUy0xJAotICAgIFN0cmluZyBvdXRwdXQzTmFtZSA9ICJPdXRwdXQzIjsgLy8kTk9OLU5MUy0xJAotCi0gICAgLy8gQ2hlY2sgdGhhdCB0aGUgZmlyc3Qgb3BlcmF0aW9uIC0gd2hpY2ggaGFzIG5vIG5hbWVkIGlucHV0L291dHB1dCBpcyBiZWluZwotICAgIC8vIGZvdW5kLgotCi0gICAgU3RyaW5nIG9wZXJhdGlvbk5hbWUgPSAiTmV3T3BlcmF0aW9uIjsgLy8kTk9OLU5MUy0xJAotICAgIGphdmF4LndzZGwuT3BlcmF0aW9uIG9wZXJhdGlvbjEgPSBwb3J0VHlwZS5nZXRPcGVyYXRpb24ob3BlcmF0aW9uTmFtZSwgbnVsbCwgbnVsbCk7Ci0KLSAgICBRTmFtZSBiaW5kaW5nUU5hbWUgPSBuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCAiQmluZGluZ09wZXJhdGlvblJlY29uY2lsaWF0aW9uU09BUCIpOyAvLyROT04tTkxTLTEkCi0gICAgamF2YXgud3NkbC5CaW5kaW5nIGJpbmRpbmcgPSBkZWZpbml0aW9uLmdldEJpbmRpbmcoYmluZGluZ1FOYW1lKTsKLQotICAgIGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbiBiaW5kaW5nT3BlcmF0aW9uMSA9IGJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbihvcGVyYXRpb25OYW1lLCBudWxsLCBudWxsKTsKLSAgICBqYXZheC53c2RsLk9wZXJhdGlvbiBhY3R1YWxPcGVyYXRpb24xID0gYmluZGluZ09wZXJhdGlvbjEuZ2V0T3BlcmF0aW9uKCk7Ci0KLSAgICBhc3NlcnRFcXVhbHMob3BlcmF0aW9uMSwgYWN0dWFsT3BlcmF0aW9uMSk7Ci0KLSAgICAvLyBUaGUgc2Vjb25kIG9wZXJhdGlvbiAtIHdoaWNoIGhhcyBubyBuYW1lZCBpbnB1dC9vdXRwdXQgaXMgYmVpbmcgZm91bmQKLSAgICAvLyBzaG91bGQgbm90IGJlIHJlY29uY2lsZWQgYmVjYXVzZSB0aGUgYmluZGluZyBzcGVjaWZpZXMgdGhlIGlucHV0IGFuZAotICAgIC8vIG91dHB1dC4KLQotICAgIFN0cmluZyBpbnB1dDJOYW1lID0gIklucHV0MiI7IC8vJE5PTi1OTFMtMSQKLSAgICBTdHJpbmcgb3V0cHV0Mk5hbWUgPSAiT3V0cHV0MiI7IC8vJE5PTi1OTFMtMSQKLQotICAgIFN0cmluZyBvcGVyYXRpb24yTmFtZSA9ICJOZXdPcGVyYXRpb24yIjsgLy8kTk9OLU5MUy0xJAotCi0gICAgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24yID0gYmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9uKG9wZXJhdGlvbjJOYW1lLCBpbnB1dDJOYW1lLCBvdXRwdXQyTmFtZSk7Ci0gICAgamF2YXgud3NkbC5PcGVyYXRpb24gYWN0dWFsT3BlcmF0aW9uMiA9IGJpbmRpbmdPcGVyYXRpb24yLmdldE9wZXJhdGlvbigpOwotCi0gICAgYXNzZXJ0RXF1YWxzKG51bGwsIGFjdHVhbE9wZXJhdGlvbjIpOwotCi0gICAgLy8gVGhlIHRoaXJkIG9wZXJhdGlvbiBzcGVjaWZpZXMgYW4gaW5wdXQgYW5kIG91dHB1dCBuYW1lLCBhbmQgdGhlIGJpbmRpbmcKLSAgICAvLyBvcGVyYXRpb24gd2lsbCByZWNvbmNpbGUgZmluZSBiZWNhdXNlIHRoZSBpdCBhbHNvIHNwZWNpZmllcyB0aGUgcHJvcGVyCi0gICAgLy8gaW5wdXQgYW5kIG91dHB1dCBuYW1lLgotCi0gICAgU3RyaW5nIG9wZXJhdGlvbjNOYW1lID0gIk5ld09wZXJhdGlvbjMiOyAvLyROT04tTkxTLTEkCi0gICAgamF2YXgud3NkbC5PcGVyYXRpb24gb3BlcmF0aW9uMyA9IHBvcnRUeXBlLmdldE9wZXJhdGlvbihvcGVyYXRpb24zTmFtZSwgaW5wdXQzTmFtZSwgb3V0cHV0M05hbWUpOwotCi0gICAgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24zID0gYmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9uKG9wZXJhdGlvbjNOYW1lLCBpbnB1dDNOYW1lLCBvdXRwdXQzTmFtZSk7Ci0gICAgamF2YXgud3NkbC5PcGVyYXRpb24gYWN0dWFsT3BlcmF0aW9uMyA9IGJpbmRpbmdPcGVyYXRpb24zLmdldE9wZXJhdGlvbigpOwotCi0gICAgYXNzZXJ0RXF1YWxzKG9wZXJhdGlvbjMsIGFjdHVhbE9wZXJhdGlvbjMpOwotICB9Ci0KLSAgLyoqCi0gICAqIFNlZSBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODUyCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0RnVsbEVsZW1lbnRFeHRlbnNpYmlsaXR5KCkKLSAgewotCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9GdWxsRWxlbWVudEV4dGVuc2liaWxpdHkvRXh0ZW5kZWRXU0RMLndzZGwiLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBmYWlsKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZXh0ZW5zaW9uc05hbWVzcGFjZVVSSSA9ICJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0V4dGVuc2lvbnMvIjsgLy8kTk9OLU5MUy0xJCAKLSAgICBFTGlzdCBpbXBvcnRzID0gZGVmaW5pdGlvbi5nZXRFSW1wb3J0cygpOwotICAgIGFzc2VydEZhbHNlKGltcG9ydHMuaXNFbXB0eSgpKTsKLSAgICBJbXBvcnQgdGhlSW1wb3J0ID0gKEltcG9ydClpbXBvcnRzLmdldCgwKTsKLSAgICBjaGVja0V4dGVuc2lvbih0aGVJbXBvcnQsIGV4dGVuc2lvbnNOYW1lc3BhY2VVUkksICJpbXBvcnQiKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgRUxpc3QgbWVzc2FnZXMgPSBkZWZpbml0aW9uLmdldEVNZXNzYWdlcygpOwotICAgIGFzc2VydEZhbHNlKG1lc3NhZ2VzLmlzRW1wdHkoKSk7Ci0gICAgTWVzc2FnZSBtZXNzYWdlID0gKE1lc3NhZ2UpbWVzc2FnZXMuZ2V0KDApOwotICAgIGNoZWNrRXh0ZW5zaW9uKG1lc3NhZ2UsIGV4dGVuc2lvbnNOYW1lc3BhY2VVUkksICJtZXNzYWdlIik7IC8vJE5PTi1OTFMtMSQKLQotICAgIFBhcnQgcGFydCA9IChQYXJ0KW1lc3NhZ2UuZ2V0UGFydCgiZXh0ZW5kZWRQYXJ0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICBhc3NlcnROb3ROdWxsKHBhcnQpOwotICAgIGNoZWNrRXh0ZW5zaW9uKHBhcnQsIGV4dGVuc2lvbnNOYW1lc3BhY2VVUkksICJwYXJ0Iik7IC8vJE5PTi1OTFMtMSQKLQotICAgIEVMaXN0IHBvcnRUeXBlcyA9IGRlZmluaXRpb24uZ2V0RVBvcnRUeXBlcygpOwotICAgIGFzc2VydEZhbHNlKHBvcnRUeXBlcy5pc0VtcHR5KCkpOwotICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gKFBvcnRUeXBlKXBvcnRUeXBlcy5nZXQoMCk7Ci0gICAgY2hlY2tFeHRlbnNpb24ocG9ydFR5cGUsIGV4dGVuc2lvbnNOYW1lc3BhY2VVUkksICJwb3J0VHlwZSIpOyAvLyROT04tTkxTLTEkCi0KLSAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gKE9wZXJhdGlvbilwb3J0VHlwZS5nZXRPcGVyYXRpb24oImV4dGVuZGVkT3BlcmF0aW9uIiwgbnVsbCwgbnVsbCk7IC8vJE5PTi1OTFMtMSQKLSAgICBhc3NlcnROb3ROdWxsKG9wZXJhdGlvbik7Ci0gICAgY2hlY2tFeHRlbnNpb24ob3BlcmF0aW9uLCBleHRlbnNpb25zTmFtZXNwYWNlVVJJLCAib3BlcmF0aW9uIik7IC8vJE5PTi1OTFMtMSQKLQotICAgIElucHV0IGlucHV0ID0gb3BlcmF0aW9uLmdldEVJbnB1dCgpOwotICAgIGFzc2VydE5vdE51bGwoaW5wdXQpOwotICAgIGNoZWNrRXh0ZW5zaW9uKGlucHV0LCBleHRlbnNpb25zTmFtZXNwYWNlVVJJLCAiaW5wdXQiKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgT3V0cHV0IG91dHB1dCA9IG9wZXJhdGlvbi5nZXRFT3V0cHV0KCk7Ci0gICAgYXNzZXJ0Tm90TnVsbChvdXRwdXQpOwotICAgIGNoZWNrRXh0ZW5zaW9uKG91dHB1dCwgZXh0ZW5zaW9uc05hbWVzcGFjZVVSSSwgIm91dHB1dCIpOyAvLyROT04tTkxTLTEkCi0KLSAgICBGYXVsdCBmYXVsdCA9IChGYXVsdClvcGVyYXRpb24uZ2V0RmF1bHQoImV4dGVuZGVkRmF1bHQiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFzc2VydE5vdE51bGwoZmF1bHQpOwotICAgIGNoZWNrRXh0ZW5zaW9uKGZhdWx0LCBleHRlbnNpb25zTmFtZXNwYWNlVVJJLCAiZmF1bHQiKTsgLy8kTk9OLU5MUy0xJAotICB9Ci0KLSAgLyoqCi0gICAqIENoZWNrcyB0aGUgZ2l2ZW4gZXh0ZW5zaWJsZSBlbGVtZW50IHRvIG1ha2Ugc3VyZSB0aGF0IGl0cyBhc3N1bWVkIG9uZSBhbmQgb25seSBleHRlbnNpYmlsaXR5IGVsZW1lbnQgbWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGFuZCBsb2NhbCBuYW1lLgotICAgKiBAcGFyYW0gZXh0ZW5zaWJsZUVsZW1lbnQgdGhlIGV4dGVuc2libGUgZWxlbWVudCB0byB0ZXN0LgotICAgKiBAcGFyYW0gZXh0ZW5zaW9uc05hbWVzcGFjZVVSSSB0aGUgZXhwZWN0ZWQgbmFtZXNwYWNlIFVSSS4KLSAgICogQHBhcmFtIGVsZW1lbnROYW1lIHRoZSBleHBlY3RlZCBlbGVtZW50IG5hbWUuCi0gICAqLwotICBwcml2YXRlIHZvaWQgY2hlY2tFeHRlbnNpb24oRXh0ZW5zaWJsZUVsZW1lbnQgZXh0ZW5zaWJsZUVsZW1lbnQsIFN0cmluZyBleHRlbnNpb25zTmFtZXNwYWNlVVJJLCBTdHJpbmcgZWxlbWVudE5hbWUpCi0gIHsKLSAgICBMaXN0IGV4dGVuc2liaWxpdHlFbGVtZW50cyA9IGV4dGVuc2libGVFbGVtZW50LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIGFzc2VydEZhbHNlKGV4dGVuc2liaWxpdHlFbGVtZW50cy5pc0VtcHR5KCkpOwotICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dGVuc2liaWxpdHlFbGVtZW50ID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWV4dGVuc2liaWxpdHlFbGVtZW50cy5nZXQoMCk7Ci0gICAgUU5hbWUgZWxlbWVudFR5cGUgPSBleHRlbnNpYmlsaXR5RWxlbWVudC5nZXRFbGVtZW50VHlwZSgpOwotICAgIFN0cmluZyBuc1VSSSA9IGVsZW1lbnRUeXBlLmdldE5hbWVzcGFjZVVSSSgpOwotICAgIFN0cmluZyBsb2NhbFBhcnQgPSBlbGVtZW50VHlwZS5nZXRMb2NhbFBhcnQoKTsKLSAgICBhc3NlcnRFcXVhbHMoZXh0ZW5zaW9uc05hbWVzcGFjZVVSSSwgbnNVUkkpOwotICAgIGFzc2VydEVxdWFscyhsb2NhbFBhcnQsIGVsZW1lbnROYW1lKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFNlZSBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MzYxCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0VHlwZXNFeHRlbnNpYmlsaXR5KCkKLSAgewotCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9UeXBlc0V4dGVuc2liaWxpdHkvVHlwZXNFeHRlbnNpYmlsaXR5LndzZGwiLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBmYWlsKGUuZ2V0TWVzc2FnZSgpKTsKLSAgICB9Ci0gICAgCi0gICAgVHlwZXMgdHlwZXMgPSBkZWZpbml0aW9uLmdldEVUeXBlcygpOwotICAgIExpc3QgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzID0gdHlwZXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKDMsIGV4dGVuc2liaWxpdHlFbGVtZW50cy5zaXplKCkpOwotICAgIAotICAgIFN0cmluZyBvdGhlclR5cGVzTmFtZXNwYWNlID0gImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvT3RoZXJUeXBlcy8iOyAvLyROT04tTkxTLTEkCi0KLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClleHRlbnNpYmlsaXR5RWxlbWVudHMuZ2V0KDApOwotICAgIFFOYW1lIGVsZW1lbnRUeXBlID0gZXh0ZW5zaWJpbGl0eUVsZW1lbnQuZ2V0RWxlbWVudFR5cGUoKTsKLSAgICBhc3NlcnRFcXVhbHMob3RoZXJUeXBlc05hbWVzcGFjZSwgZWxlbWVudFR5cGUuZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgIGFzc2VydEVxdWFscygidHlwZURlZiIsIGVsZW1lbnRUeXBlLmdldExvY2FsUGFydCgpKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgTGlzdCBzY2hlbWFzID0gdHlwZXMuZ2V0U2NoZW1hcygpOwotICAgIGFzc2VydEVxdWFscygxLCBzY2hlbWFzLnNpemUoKSk7Ci0gICAgCi0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgc2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLmdldCgxKTsKLSAgICBYU0RTY2hlbWEgc2NoZW1hID0gc2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQuZ2V0U2NoZW1hKCk7Ci0gICAgYXNzZXJ0Tm90TnVsbChzY2hlbWEpOwotICAgIFhTREVsZW1lbnREZWNsYXJhdGlvbiBlbGVtZW50RGVjbGFyYXRpb24gPSBzY2hlbWEucmVzb2x2ZUVsZW1lbnREZWNsYXJhdGlvbigidGVzdCIpOyAvLyROT04tTkxTLTEkCi0gICAgYXNzZXJ0Tm90TnVsbChlbGVtZW50RGVjbGFyYXRpb24pOwotICAgIGFzc2VydE5vdE51bGwoZWxlbWVudERlY2xhcmF0aW9uLmdldENvbnRhaW5lcigpKTsgICAgCi0gICAgCi0gICAgZXh0ZW5zaWJpbGl0eUVsZW1lbnQgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLmdldCgyKTsKLSAgICBlbGVtZW50VHlwZSA9IGV4dGVuc2liaWxpdHlFbGVtZW50LmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKG90aGVyVHlwZXNOYW1lc3BhY2UsIGVsZW1lbnRUeXBlLmdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICBhc3NlcnRFcXVhbHMoInR5cGVEZWYiLCBlbGVtZW50VHlwZS5nZXRMb2NhbFBhcnQoKSk7IC8vJE5PTi1OTFMtMSQgICAgCi0gIH0KLQotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xNzg1NTUKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RBbGxvd051bGxOYW1lc3BhY2VVUkkoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLQotICAgIHRyeQotICAgIHsKLSAgICAgIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9OdWxsTmFtZXNwYWNlVVJJL0NvbnRhY3RJbmZvU2VydmljZS53c2RsIiwgdHJ1ZSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZmFpbChlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotCi0gICAgU3RyaW5nIHRhcmdldE5hbWVzcGFjZSA9ICJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0NvbnRhY3RJbmZvU2VydmljZSI7IC8vJE5PTi1OTFMtMSQKLQotICAgIC8vIFRoZSBlbGVtZW50IGRlY2xhcmF0aW9uIGZvciB0aGUgb3V0cHV0IG1lc3NhZ2UgcGFydCBpcyBzcGVjaWZpZWQgaW4gYQotICAgIC8vIHNjaGVtYSB3aXRoIG5vIHRhcmdldCBuYW1lc3BhY2UuIEl0IHNob3VsZCByZXNvbHZlIGZpbmUgYW5kIGhhdmUgYSBudWxsCi0gICAgLy8gbmFtZXNwYWNlIFVSSS4KLQotICAgIFFOYW1lIG91dHB1dDFRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJ1cGRhdGVQaG9uZU51bWJlclJlc3BvbnNlTXNnIik7IC8vJE5PTi1OTFMtMSQKLSAgICBNZXNzYWdlIG91dHB1dDFNZXNzYWdlID0gKE1lc3NhZ2UpZGVmaW5pdGlvbi5nZXRNZXNzYWdlKG91dHB1dDFRTmFtZSk7Ci0gICAgYXNzZXJ0Tm90TnVsbChvdXRwdXQxTWVzc2FnZSk7Ci0KLSAgICBQYXJ0IHBhcnQxID0gKFBhcnQpb3V0cHV0MU1lc3NhZ2UuZ2V0UGFydCgib3V0cHV0MSIpOyAvLyROT04tTkxTLTEkCi0gICAgYXNzZXJ0Tm90TnVsbChwYXJ0MSk7Ci0KLSAgICBRTmFtZSBvdXRwdXQyRWxlbWVudE5hbWUgPSBwYXJ0MS5nZXRFbGVtZW50TmFtZSgpOwotICAgIGFzc2VydE5vdE51bGwob3V0cHV0MkVsZW1lbnROYW1lKTsKLSAgICBhc3NlcnRFcXVhbHMoWE1MQ29uc3RhbnRzLk5VTExfTlNfVVJJLCBvdXRwdXQyRWxlbWVudE5hbWUuZ2V0TmFtZXNwYWNlVVJJKCkpOwotCi0gICAgWFNERWxlbWVudERlY2xhcmF0aW9uIG91dHB1dDJFbGVtZW50RGVjbGFyYXRpb24gPSBwYXJ0MS5nZXRFbGVtZW50RGVjbGFyYXRpb24oKTsKLSAgICBhc3NlcnROb3ROdWxsKG91dHB1dDJFbGVtZW50RGVjbGFyYXRpb24pOwotICAgIGFzc2VydE5vdE51bGwob3V0cHV0MkVsZW1lbnREZWNsYXJhdGlvbi5nZXRDb250YWluZXIoKSk7Ci0gICAgYXNzZXJ0TnVsbChvdXRwdXQyRWxlbWVudERlY2xhcmF0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpKTsKLQotICAgIC8vIFRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBvdXRwdXQgbWVzc2FnZSBwYXJ0IGlzIHNwZWNpZmllZCBpbiBhCi0gICAgLy8gc2NoZW1hIHdpdGggbm8gdGFyZ2V0IG5hbWVzcGFjZS4gSXQgc2hvdWxkIHJlc29sdmUgZmluZSBhbmQgaGF2ZSBhIG51bGwKLSAgICAvLyBuYW1lc3BhY2UgVVJJLgotCi0gICAgUU5hbWUgb3V0cHV0MlFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgInVwZGF0ZUFkZHJlc3NSZXNwb25zZU1zZyIpOyAvLyROT04tTkxTLTEkCi0gICAgTWVzc2FnZSBvdXRwdXQyTWVzc2FnZSA9IChNZXNzYWdlKWRlZmluaXRpb24uZ2V0TWVzc2FnZShvdXRwdXQyUU5hbWUpOwotICAgIGFzc2VydE5vdE51bGwob3V0cHV0Mk1lc3NhZ2UpOwotCi0gICAgUGFydCBwYXJ0MiA9IChQYXJ0KW91dHB1dDJNZXNzYWdlLmdldFBhcnQoIm91dHB1dDIiKTsgLy8kTk9OLU5MUy0xJAotICAgIGFzc2VydE5vdE51bGwocGFydDEpOwotCi0gICAgUU5hbWUgb3V0cHV0MlR5cGVOYW1lID0gcGFydDIuZ2V0VHlwZU5hbWUoKTsKLSAgICBhc3NlcnROb3ROdWxsKG91dHB1dDJUeXBlTmFtZSk7Ci0gICAgYXNzZXJ0RXF1YWxzKFhNTENvbnN0YW50cy5OVUxMX05TX1VSSSwgb3V0cHV0MlR5cGVOYW1lLmdldE5hbWVzcGFjZVVSSSgpKTsKLQotICAgIFhTRFR5cGVEZWZpbml0aW9uIG91dHB1dDJUeXBlRGVmaW5pdGlvbiA9IHBhcnQyLmdldFR5cGVEZWZpbml0aW9uKCk7Ci0gICAgYXNzZXJ0Tm90TnVsbChvdXRwdXQyVHlwZURlZmluaXRpb24pOwotICAgIGFzc2VydE5vdE51bGwob3V0cHV0MlR5cGVEZWZpbml0aW9uLmdldENvbnRhaW5lcigpKTsKLSAgICBhc3NlcnROdWxsKG91dHB1dDJUeXBlRGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NDUzCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0TG9hZHNOYW1lbGVzc0RlZmluaXRpb24oKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy9UZXN0IHdpdGggbmFtZWxlc3MgZGVmaW5pdGlvbgotICAgICAgCi0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9Mb2Fkc05hbWVsZXNzRGVmaW5pdGlvbi9NaXNzaW5nTmFtZS53c2RsIik7Ci0gICAgICBhc3NlcnROdWxsKGRlZmluaXRpb24uZ2V0UU5hbWUoKSk7Ci0KLSAgICAgIC8vVGVzdCB3aXRoIG5hbWVkIGRlZmluaXRpb24KLSAgICAgIAotICAgICAgZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0J1Z0ZpeGVzL0xvYWRzTmFtZWxlc3NEZWZpbml0aW9uL1dpdGhOYW1lLndzZGwiKTsKLSAgICAgIGFzc2VydE5vdE51bGwoZGVmaW5pdGlvbik7Ci0gICAgICBRTmFtZSBuYW1lID0gZGVmaW5pdGlvbi5nZXRRTmFtZSgpOyAKLSAgICAgIGFzc2VydE5vdE51bGwobmFtZSk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIldTRExGaWxlIiwgbmFtZS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBBc3NlcnQuZmFpbCgiVGVzdCBmYWlsZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbjogIiArIGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTE1MTY3NAotICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEhhbmRsZXNEb2N1bWVudGF0aW9uRWxlbWVudHMoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gTG9hZCBhIHNhbXBsZSBXU0RMIGRvY3VtZW50IHRoYXQgaGFzIGRvY3VtZW50YXRpb24gZWxlbWVudHMgaW4gYWxsIGFsbG93ZWQgcGxhY2VzLgotICAgICAgCi0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9IYW5kbGVzRG9jdW1lbnRhdGlvbkVsZW1lbnRzL0RvY3VtZW50ZWQud3NkbCIpOwotICAgICAgCi0gICAgICAvLyBNYWtlIHN1cmUgaW1wb3J0cyBhcmUgYWRkZWQgYWZ0ZXIgdGhlIGRvY3VtZW50YXRpb24gZWxlbWVudC4KLSAgICAgIAotICAgICAgV1NETEZhY3RvcnkgZmFjdG9yeSA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRTsKLSAgICAgIEltcG9ydCBhbkltcG9ydCA9IGZhY3RvcnkuY3JlYXRlSW1wb3J0KCk7Ci0gICAgICBhbkltcG9ydC5zZXROYW1lc3BhY2VVUkkoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKLSAgICAgIGRlZmluaXRpb24uYWRkSW1wb3J0KGFuSW1wb3J0KTsKLSAgICAgIAotICAgICAgRWxlbWVudCBkZWZpbml0aW9uRG9jdW1lbnRhdGlvbkVsZW1lbnQgPSBkZWZpbml0aW9uLmdldERvY3VtZW50YXRpb25FbGVtZW50KCk7Ci0gICAgICBhc3NlcnROb3ROdWxsKGRlZmluaXRpb25Eb2N1bWVudGF0aW9uRWxlbWVudCk7Ci0gICAgICBFbGVtZW50IGV4cGVjdGVkSW1wb3J0RWxlbWVudCA9IGdldE5leHRFbGVtZW50KGRlZmluaXRpb25Eb2N1bWVudGF0aW9uRWxlbWVudCk7Ci0gICAgICBFbGVtZW50IGltcG9ydEVsZW1lbnQgPSBhbkltcG9ydC5nZXRFbGVtZW50KCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoaW1wb3J0RWxlbWVudCwgZXhwZWN0ZWRJbXBvcnRFbGVtZW50KTsKLSAgICAgIAotICAgICAgLy8gVGhpcyBpcyBhIGJpdCBvdmVya2lsbCBzaW5jZSB0aGUgZG9jdW1lbnRhdGlvbiBlbGVtZW50cyBhcmUgaGFuZGxlZCBpbiB0aGUgYmFzZSBjbGFzcyBXU0RMRWxlbWVudEltcGwgYnV0Li4uCi0gICAgICAKLSAgICAgIC8vIE1ha2Ugc3VyZSBuZXcgbWVzc2FnZSBwYXJ0cyBhcmUgYWRkZWQgYWZ0ZXIgdGhlIGRvY3VtZW50YXRpb24gZWxlbWVudCBhbmQgYXMgdGhlIGxhc3QgZWxlbWVudC4KLQotICAgICAgTWVzc2FnZSBhTWVzc2FnZSA9IChNZXNzYWdlKWRlZmluaXRpb24uZ2V0RU1lc3NhZ2VzKCkuZ2V0KDApOwotICAgICAgUGFydCBuZXdQYXJ0ID0gZmFjdG9yeS5jcmVhdGVQYXJ0KCk7Ci0gICAgICBhTWVzc2FnZS5hZGRQYXJ0KG5ld1BhcnQpOwotCi0gICAgICBFbGVtZW50IG1lc3NhZ2VFbGVtZW50ID0gYU1lc3NhZ2UuZ2V0RWxlbWVudCgpOwotCi0gICAgICBFbGVtZW50IG1lc3NhZ2VEb2N1bWVudGF0aW9uRWxlbWVudCA9IGFNZXNzYWdlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCk7Ci0gICAgICBhc3NlcnROb3ROdWxsKG1lc3NhZ2VEb2N1bWVudGF0aW9uRWxlbWVudCk7Ci0gICAgICBFbGVtZW50IGZpcnN0Q2hpbGRFbGVtZW50ID0gZ2V0Rmlyc3RDaGlsZEVsZW1lbnQobWVzc2FnZUVsZW1lbnQpOwotICAgICAgYXNzZXJ0RXF1YWxzKG1lc3NhZ2VEb2N1bWVudGF0aW9uRWxlbWVudCwgZmlyc3RDaGlsZEVsZW1lbnQpOwotICAgICAgCi0gICAgICBFbGVtZW50IHBhcnRFbGVtZW50ID0gbmV3UGFydC5nZXRFbGVtZW50KCk7Ci0gICAgICBFbGVtZW50IGxhc3RDaGlsZEVsZW1lbnQgPSBnZXRMYXN0Q2hpbGRFbGVtZW50KG1lc3NhZ2VFbGVtZW50KTsKLSAgICAgIGFzc2VydEVxdWFscyhwYXJ0RWxlbWVudCwgbGFzdENoaWxkRWxlbWVudCk7Ci0gICAgICAKLSAgICAgIC8vIE1ha2Ugc3VyZSBuZXcgb3BlcmF0aW9ucyBhcmUgYWRkZWQgYWZ0ZXIgdGhlIGRvY3VtZW50YXRpb24gZWxlbWVudCBhbmQgYXMgdGhlIGxhc3QgZWxlbWVudC4KLQotICAgICAgUG9ydFR5cGUgcG9ydFR5cGUgPSAoUG9ydFR5cGUpZGVmaW5pdGlvbi5nZXRFUG9ydFR5cGVzKCkuZ2V0KDApOwotICAgICAgT3BlcmF0aW9uIG5ld09wZXJhdGlvbiA9IGZhY3RvcnkuY3JlYXRlT3BlcmF0aW9uKCk7Ci0gICAgICBwb3J0VHlwZS5hZGRPcGVyYXRpb24obmV3T3BlcmF0aW9uKTsKLSAgICAgIAotICAgICAgRWxlbWVudCBwb3J0VHlwZUVsZW1lbnQgPSBwb3J0VHlwZS5nZXRFbGVtZW50KCk7Ci0KLSAgICAgIEVsZW1lbnQgcG9ydFR5cGVEb2N1bWVudGF0aW9uRWxlbWVudCA9IHBvcnRUeXBlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCk7Ci0gICAgICBhc3NlcnROb3ROdWxsKHBvcnRUeXBlRG9jdW1lbnRhdGlvbkVsZW1lbnQpOwotICAgICAgZmlyc3RDaGlsZEVsZW1lbnQgPSBnZXRGaXJzdENoaWxkRWxlbWVudChwb3J0VHlwZUVsZW1lbnQpOwotICAgICAgYXNzZXJ0RXF1YWxzKHBvcnRUeXBlRG9jdW1lbnRhdGlvbkVsZW1lbnQsIGZpcnN0Q2hpbGRFbGVtZW50KTsKLSAgICAgIAotICAgICAgRWxlbWVudCBuZXdPcGVyYXRpb25FbGVtZW50ID0gbmV3T3BlcmF0aW9uLmdldEVsZW1lbnQoKTsKLSAgICAgIGxhc3RDaGlsZEVsZW1lbnQgPSBnZXRMYXN0Q2hpbGRFbGVtZW50KHBvcnRUeXBlRWxlbWVudCk7Ci0gICAgICBhc3NlcnRFcXVhbHMobmV3T3BlcmF0aW9uRWxlbWVudCwgbGFzdENoaWxkRWxlbWVudCk7Ci0gICAgICAKLSAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgb3V0cHV0IGVsZW1lbnQgaXMgYWRkZWQgYWZ0ZXIgdGhlIGRvY3VtZW50YXRpb24gZWxlbWVudCBhbmQgYXMgdGhlIGxhc3QgZWxlbWVudC4KLSAgICAgIAotICAgICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IChPcGVyYXRpb24pcG9ydFR5cGUuZ2V0RU9wZXJhdGlvbnMoKS5nZXQoMCk7Ci0gICAgICBPdXRwdXQgb3V0cHV0ID0gZmFjdG9yeS5jcmVhdGVPdXRwdXQoKTsKLSAgICAgIG9wZXJhdGlvbi5zZXRPdXRwdXQob3V0cHV0KTsKLQotICAgICAgRWxlbWVudCBvcGVyYXRpb25FbGVtZW50ID0gb3BlcmF0aW9uLmdldEVsZW1lbnQoKTsKLQotICAgICAgRWxlbWVudCBvcGVyYXRpb25Eb2N1bWVudGF0aW9uRWxlbWVudCA9IG9wZXJhdGlvbi5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpOwotICAgICAgYXNzZXJ0Tm90TnVsbChvcGVyYXRpb25Eb2N1bWVudGF0aW9uRWxlbWVudCk7Ci0gICAgICBmaXJzdENoaWxkRWxlbWVudCA9IGdldEZpcnN0Q2hpbGRFbGVtZW50KG9wZXJhdGlvbkVsZW1lbnQpOwotICAgICAgYXNzZXJ0RXF1YWxzKG9wZXJhdGlvbkRvY3VtZW50YXRpb25FbGVtZW50LCBmaXJzdENoaWxkRWxlbWVudCk7Ci0gICAgICAKLSAgICAgIEVsZW1lbnQgb3V0cHV0RWxlbWVudCA9IG91dHB1dC5nZXRFbGVtZW50KCk7Ci0gICAgICBsYXN0Q2hpbGRFbGVtZW50ID0gZ2V0TGFzdENoaWxkRWxlbWVudChvcGVyYXRpb25FbGVtZW50KTsKLSAgICAgIGFzc2VydEVxdWFscyhvdXRwdXRFbGVtZW50LCBsYXN0Q2hpbGRFbGVtZW50KTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIEFzc2VydC5mYWlsKCJUZXN0IGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uOiAiICsgZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTE5ODM5MAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFN1cHBvcnRzTG9jYWxOU0ZvckV4dGVuc2liaWxpdHlFbGVtZW50cygpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBTdHJpbmcgdXJpID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9Mb2NhbE5hbWVzcGFjZS9Mb2NhbE5hbWVzcGFjZTIud3NkbCI7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGphdmF4LndzZGwuZmFjdG9yeS5XU0RMRmFjdG9yeSBmYWN0b3J5ID0gV1NETFBsdWdpbi5JTlNUQU5DRS5jcmVhdGVXU0RMNEpGYWN0b3J5KCk7Ci0gICAgICBXU0RMUmVhZGVyIHdzZGxSZWFkZXIgPSBmYWN0b3J5Lm5ld1dTRExSZWFkZXIoKTsKLSAgICAgIGphdmF4LndzZGwuRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gd3NkbFJlYWRlci5yZWFkV1NETCh1cmkpOwotCi0gICAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvZXhhbXBsZS8iOyAvLyROT04tTkxTLTEkCi0KLSAgICAgIC8vIFRlc3QgYSBsb2NhbCBTT0FQIG5hbWVzcGFjZSBwcmVmaXggZGVjbGFyYXRpb24uCi0KLSAgICAgIFFOYW1lIGJpbmRpbmdRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsICJleGFtcGxlU09BUCIpOyAvLyROT04tTkxTLTEkCi0gICAgICBqYXZheC53c2RsLkJpbmRpbmcgYmluZGluZyA9IGRlZmluaXRpb24uZ2V0QmluZGluZyhiaW5kaW5nUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbChiaW5kaW5nKTsKLSAgICAgIExpc3QgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzID0gYmluZGluZy5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIGFzc2VydEVxdWFscygxLCBleHRlbnNpYmlsaXR5RWxlbWVudHMuc2l6ZSgpKTsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IHNvYXBCaW5kaW5nID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWV4dGVuc2liaWxpdHlFbGVtZW50cy5nZXQoMCk7Ci0gICAgICBhc3NlcnROb3ROdWxsKHNvYXBCaW5kaW5nKTsKLSAgICAgIFFOYW1lIGJpbmRpbmdFbGVtZW50VHlwZSA9IHNvYXBCaW5kaW5nLmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgICBhc3NlcnROb3ROdWxsKGJpbmRpbmdFbGVtZW50VHlwZSk7Ci0gICAgICBTdHJpbmcgbG9jYWxQYXJ0ID0gYmluZGluZ0VsZW1lbnRUeXBlLmdldExvY2FsUGFydCgpOwotICAgICAgYXNzZXJ0RXF1YWxzKFNPQVBDb25zdGFudHMuQklORElOR19FTEVNRU5UX1RBRywgbG9jYWxQYXJ0KTsKLSAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBiaW5kaW5nRWxlbWVudFR5cGUuZ2V0TmFtZXNwYWNlVVJJKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoU09BUENvbnN0YW50cy5TT0FQX05BTUVTUEFDRV9VUkksIG5hbWVzcGFjZVVSSSk7Ci0gICAgICBhc3NlcnRUcnVlKHNvYXBCaW5kaW5nIGluc3RhbmNlb2YgamF2YXgud3NkbC5leHRlbnNpb25zLnNvYXAuU09BUEJpbmRpbmcpOwotCi0gICAgICAvLyBUZXN0IGEgZGVmYXVsdCBTT0FQIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBhdCB0aGUgcG9ydCBsZXZlbC4KLQotICAgICAgUU5hbWUgc2VydmljZVFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgImV4YW1wbGUiKTsgLy8kTk9OLU5MUy0xJAotICAgICAgamF2YXgud3NkbC5TZXJ2aWNlIHNlcnZpY2UgPSBkZWZpbml0aW9uLmdldFNlcnZpY2Uoc2VydmljZVFOYW1lKTsKLSAgICAgIFBvcnQgcG9ydCA9IHNlcnZpY2UuZ2V0UG9ydCgiZXhhbXBsZVNPQVAiKTsKLSAgICAgIGV4dGVuc2liaWxpdHlFbGVtZW50cyA9IHBvcnQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoMSwgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLnNpemUoKSk7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBzb2FwQWRkcmVzcyA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClleHRlbnNpYmlsaXR5RWxlbWVudHMuZ2V0KDApOwotICAgICAgYXNzZXJ0Tm90TnVsbChzb2FwQWRkcmVzcyk7Ci0gICAgICBRTmFtZSBwb3J0RWxlbWVudFR5cGUgPSBzb2FwQWRkcmVzcy5nZXRFbGVtZW50VHlwZSgpOwotICAgICAgYXNzZXJ0Tm90TnVsbChwb3J0RWxlbWVudFR5cGUpOwotICAgICAgbG9jYWxQYXJ0ID0gcG9ydEVsZW1lbnRUeXBlLmdldExvY2FsUGFydCgpOwotICAgICAgYXNzZXJ0RXF1YWxzKFNPQVBDb25zdGFudHMuQUREUkVTU19FTEVNRU5UX1RBRywgbG9jYWxQYXJ0KTsKLSAgICAgIG5hbWVzcGFjZVVSSSA9IHBvcnRFbGVtZW50VHlwZS5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICAgIGFzc2VydEVxdWFscyhTT0FQQ29uc3RhbnRzLlNPQVBfTkFNRVNQQUNFX1VSSSwgbmFtZXNwYWNlVVJJKTsKLSAgICAgIGFzc2VydFRydWUoc29hcEFkZHJlc3MgaW5zdGFuY2VvZiBqYXZheC53c2RsLmV4dGVuc2lvbnMuc29hcC5TT0FQQWRkcmVzcyk7Ci0gICAgfQotICAgIGNhdGNoIChXU0RMRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIGZhaWwoKTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIEVsZW1lbnQgZ2V0TmV4dEVsZW1lbnQoRWxlbWVudCBhbkVsZW1lbnQpCi0gIHsKLSAgICBOb2RlIG5vZGUgPSBhbkVsZW1lbnQuZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICB3aGlsZSAobm9kZSAhPSBudWxsICYmIG5vZGUuZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICB7Ci0gICAgICBub2RlID0gbm9kZS5nZXROZXh0U2libGluZygpOwotICAgIH0KLSAgICByZXR1cm4gKEVsZW1lbnQpbm9kZTsKLSAgfQotCi0gIHByaXZhdGUgRWxlbWVudCBnZXRGaXJzdENoaWxkRWxlbWVudChFbGVtZW50IGFuRWxlbWVudCkKLSAgewotICAgIE5vZGUgbm9kZSA9IGFuRWxlbWVudC5nZXRGaXJzdENoaWxkKCk7Ci0gICAgd2hpbGUgKG5vZGUgIT0gbnVsbCAmJiBub2RlLmdldE5vZGVUeXBlKCkgIT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgewotICAgICAgbm9kZSA9IG5vZGUuZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIChFbGVtZW50KW5vZGU7Ci0gIH0KLQotICBwcml2YXRlIEVsZW1lbnQgZ2V0TGFzdENoaWxkRWxlbWVudChFbGVtZW50IGFuRWxlbWVudCkKLSAgewotICAgIE5vZGUgbm9kZSA9IGFuRWxlbWVudC5nZXRMYXN0Q2hpbGQoKTsKLSAgICB3aGlsZSAobm9kZSAhPSBudWxsICYmIG5vZGUuZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICB7Ci0gICAgICBub2RlID0gbm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIChFbGVtZW50KW5vZGU7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTIwODQ4NQotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdElubGluZVR5cGVzRnJvbUltcG9ydHNBcmVWaXNpYmxlKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0J1Z0ZpeGVzL0lubGluZVR5cGVzRnJvbUltcG9ydHNBcmVWaXNpYmxlL0Eud3NkbCIpOyAvLyROT04tTkxTLTEkCi0gICAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gImh0dHA6Ly9BIjsgLy8kTk9OLU5MUy0xJAotICAgICAgUU5hbWUgbWVzc2FnZVFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgIm1lc3NhZ2UiICk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGphdmF4LndzZGwuTWVzc2FnZSBtZXNzYWdlID0gZGVmaW5pdGlvbi5nZXRNZXNzYWdlKG1lc3NhZ2VRTmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKG1lc3NhZ2UpOwotICAgICAgUGFydCBwYXJ0ID0gKFBhcnQpbWVzc2FnZS5nZXRQYXJ0KCJwYXJhbWV0ZXJzIik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGFzc2VydE5vdE51bGwocGFydCk7Ci0gICAgICBYU0RUeXBlRGVmaW5pdGlvbiB0eXBlRGVmaW5pdGlvbiA9IHBhcnQuZ2V0VHlwZURlZmluaXRpb24oKTsKLSAgICAgIGFzc2VydE5vdE51bGwodHlwZURlZmluaXRpb24pOwotICAgICAgU3RyaW5nIG5hbWVzcGFjZSA9IHR5cGVEZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpOwotICAgICAgYXNzZXJ0RXF1YWxzKCJodHRwOi8vQiIsIG5hbWVzcGFjZSk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIkJUeXBlIiwgdHlwZURlZmluaXRpb24uZ2V0TmFtZSgpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICBmYWlsKCk7Ci0gICAgfSAgICAgIAotICB9Ci0KLSAgLyoqCi0gICAqIFNlZSBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDk2Ci0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UHJvcGFnYXRlc1RhcmdldE5hbWVzcGFjZUNoYW5nZSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9UYXJnZXROYW1lc3BhY2UvVGFyZ2V0TmFtZXNwYWNlLndzZGwiLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICBTdHJpbmcgb2xkVGFyZ2V0TmFtZXNwYWNlID0gZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLQotICAgICAgUU5hbWUgbWVzc2FnZVFOYW1lID0gbmV3IFFOYW1lKG9sZFRhcmdldE5hbWVzcGFjZSwgIk5ld09wZXJhdGlvblJlcXVlc3QiKTsKLSAgICAgIGphdmF4LndzZGwuTWVzc2FnZSBtZXNzYWdlID0gZGVmaW5pdGlvbi5nZXRNZXNzYWdlKG1lc3NhZ2VRTmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKG1lc3NhZ2UpOwotCi0gICAgICBRTmFtZSBwb3J0VHlwZVFOYW1lID0gbmV3IFFOYW1lKG9sZFRhcmdldE5hbWVzcGFjZSwgIlRhcmdldE5hbWVzcGFjZSIpOwotICAgICAgamF2YXgud3NkbC5Qb3J0VHlwZSBwb3J0VHlwZSA9IGRlZmluaXRpb24uZ2V0UG9ydFR5cGUocG9ydFR5cGVRTmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKHBvcnRUeXBlKTsKLSAgICAgIAotICAgICAgUU5hbWUgYmluZGluZ1FOYW1lID0gbmV3IFFOYW1lKG9sZFRhcmdldE5hbWVzcGFjZSwgIlRhcmdldE5hbWVzcGFjZVNPQVAiKTsKLSAgICAgIGphdmF4LndzZGwuQmluZGluZyBiaW5kaW5nID0gZGVmaW5pdGlvbi5nZXRCaW5kaW5nKGJpbmRpbmdRTmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKGJpbmRpbmcpOwotCi0gICAgICBRTmFtZSBzZXJ2aWNlUU5hbWUgPSBuZXcgUU5hbWUob2xkVGFyZ2V0TmFtZXNwYWNlLCAiVGFyZ2V0TmFtZXNwYWNlIik7Ci0gICAgICBqYXZheC53c2RsLlNlcnZpY2Ugc2VydmljZSA9IGRlZmluaXRpb24uZ2V0U2VydmljZShzZXJ2aWNlUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbChzZXJ2aWNlKTsKLQotICAgICAgU3RyaW5nIG5ld1RhcmdldE5hbWVzcGFjZSA9ICJodHRwOi8vd3d3LmV4YW1wbGUub3JnL05ld1RhcmdldE5hbWVzcGFjZS8iOyAKLSAgICAgIGRlZmluaXRpb24uc2V0VGFyZ2V0TmFtZXNwYWNlKG5ld1RhcmdldE5hbWVzcGFjZSk7Ci0gICAgICBFbGVtZW50IGRlZmluaXRpb25FbGVtZW50ID0gZGVmaW5pdGlvbi5nZXRFbGVtZW50KCk7Ci0gICAgICBBdHRyIHRhcmdldE5hbWVzcGFjZU5vZGUgPSBkZWZpbml0aW9uRWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKFdTRExDb25zdGFudHMuVEFSR0VUTkFNRVNQQUNFX0FUVFJJQlVURSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKHRhcmdldE5hbWVzcGFjZU5vZGUpOwotICAgICAgYXNzZXJ0RXF1YWxzKG5ld1RhcmdldE5hbWVzcGFjZSwgdGFyZ2V0TmFtZXNwYWNlTm9kZS5nZXRWYWx1ZSgpKTsKLSAgICAgIAotICAgICAgbWVzc2FnZVFOYW1lID0gbmV3IFFOYW1lKG5ld1RhcmdldE5hbWVzcGFjZSwgbWVzc2FnZVFOYW1lLmdldExvY2FsUGFydCgpKTsKLSAgICAgIG1lc3NhZ2UgPSBkZWZpbml0aW9uLmdldE1lc3NhZ2UobWVzc2FnZVFOYW1lKTsKLSAgICAgIGFzc2VydE5vdE51bGwobWVzc2FnZSk7Ci0gICAgIAotICAgICAgcG9ydFR5cGVRTmFtZSA9IG5ldyBRTmFtZShuZXdUYXJnZXROYW1lc3BhY2UsIHBvcnRUeXBlUU5hbWUuZ2V0TG9jYWxQYXJ0KCkpOwotICAgICAgcG9ydFR5cGUgPSBkZWZpbml0aW9uLmdldFBvcnRUeXBlKHBvcnRUeXBlUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbChwb3J0VHlwZSk7Ci0KLSAgICAgIGJpbmRpbmdRTmFtZSA9IG5ldyBRTmFtZShuZXdUYXJnZXROYW1lc3BhY2UsIGJpbmRpbmdRTmFtZS5nZXRMb2NhbFBhcnQoKSk7Ci0gICAgICBiaW5kaW5nID0gZGVmaW5pdGlvbi5nZXRCaW5kaW5nKGJpbmRpbmdRTmFtZSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKGJpbmRpbmcpOwotCi0gICAgICBzZXJ2aWNlUU5hbWUgPSBuZXcgUU5hbWUobmV3VGFyZ2V0TmFtZXNwYWNlLCBzZXJ2aWNlUU5hbWUuZ2V0TG9jYWxQYXJ0KCkpOwotICAgICAgc2VydmljZSA9IGRlZmluaXRpb24uZ2V0U2VydmljZShzZXJ2aWNlUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbChzZXJ2aWNlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICBmYWlsKCk7Ci0gICAgfSAgICAgIAotICB9Ci0gIAotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yNDcyOTYKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RHZXRXU0RMVHlwZSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBsb2FkIGEgd3NkbAotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvQnVnRml4ZXMvR2V0V1NETFR5cGUvQmFkSW1wb3J0LndzZGwiLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgZGVmaW5pdGlvbi51cGRhdGVFbGVtZW50KCk7Ci0KLSAgICAgIC8vIHRlc3QgYWxsIGRpcmVjdCBjaGlsZCBlbGVtZW50cyBvZiBkZWZpbml0aW9uIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBleHBlY3RlZCB0eXBlCi0gICAgICBFbGVtZW50IGRlZmluaXRpb25FbGVtZW50ID0gZGVmaW5pdGlvbi5nZXRFbGVtZW50KCk7Ci0gICAgICBpbnQgdHlwZSA9IFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoZGVmaW5pdGlvbkVsZW1lbnQpOwotICAgICAgYXNzZXJ0RXF1YWxzKCJEZWZpbml0aW9uIHR5cGUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCIsIFdTRExDb25zdGFudHMuREVGSU5JVElPTiwgdHlwZSk7ICAvLyROT04tTkxTLTEkCi0KLSAgICAgIE5vZGVMaXN0IGNoaWxkTm9kZXMgPSBkZWZpbml0aW9uRWxlbWVudC5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgICBOb2RlIG4gPSBjaGlsZE5vZGVzLml0ZW0oMCk7Ci0gICAgICAvLyBza2lwIG92ZXIgdGV4dCBub2RlCi0gICAgICBpZiAobi5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgdHlwZSA9IFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoKEVsZW1lbnQpbik7Ci0gICAgICBhc3NlcnRFcXVhbHMoIkltcG9ydCB0eXBlIGluY29ycmVjdGx5IGlkZW50aWZpZWQiLCBXU0RMQ29uc3RhbnRzLklNUE9SVCwgdHlwZSk7ICAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIG4gPSBuLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICAvLyBza2lwIG92ZXIgdGV4dCBub2RlCi0gICAgICBpZiAobi5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgdHlwZSA9IFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoKEVsZW1lbnQpbik7Ci0gICAgICBhc3NlcnRFcXVhbHMoInhzZDppbXBvcnQgdHlwZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIiwgLTEsIHR5cGUpOyAgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgLy8gc2tpcCBvdmVyIHRleHQgbm9kZQotICAgICAgaWYgKG4uZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgbiA9IG4uZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICAgIHR5cGUgPSBXU0RMVXRpbC5nZXRJbnN0YW5jZSgpLmdldFdTRExUeXBlKChFbGVtZW50KW4pOwotICAgICAgYXNzZXJ0RXF1YWxzKCJUeXBlcyB0eXBlIGluY29ycmVjdGx5IGlkZW50aWZpZWQiLCBXU0RMQ29uc3RhbnRzLlRZUEVTLCB0eXBlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgLy8gc2tpcCBvdmVyIHRleHQgbm9kZQotICAgICAgaWYgKG4uZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgbiA9IG4uZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICAgIHR5cGUgPSBXU0RMVXRpbC5nZXRJbnN0YW5jZSgpLmdldFdTRExUeXBlKChFbGVtZW50KW4pOwotICAgICAgYXNzZXJ0RXF1YWxzKCJNZXNzYWdlIHR5cGUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCIsIFdTRExDb25zdGFudHMuTUVTU0FHRSwgdHlwZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIG4gPSBuLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICAKLSAgICAgIG4gPSBuLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICAvLyBza2lwIG92ZXIgdGV4dCBub2RlCi0gICAgICBpZiAobi5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgdHlwZSA9IFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoKEVsZW1lbnQpbik7Ci0gICAgICBhc3NlcnRFcXVhbHMoIk1lc3NhZ2UgdHlwZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIiwgV1NETENvbnN0YW50cy5NRVNTQUdFLCB0eXBlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgLy8gc2tpcCBvdmVyIHRleHQgbm9kZQotICAgICAgaWYgKG4uZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgbiA9IG4uZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICAgIHR5cGUgPSBXU0RMVXRpbC5nZXRJbnN0YW5jZSgpLmdldFdTRExUeXBlKChFbGVtZW50KW4pOwotICAgICAgYXNzZXJ0RXF1YWxzKCJQb3J0IHR5cGUgdHlwZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIiwgV1NETENvbnN0YW50cy5QT1JUX1RZUEUsIHR5cGUpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIG4gPSBuLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICAvLyBza2lwIG92ZXIgdGV4dCBub2RlCi0gICAgICBpZiAobi5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgdHlwZSA9IFdTRExVdGlsLmdldEluc3RhbmNlKCkuZ2V0V1NETFR5cGUoKEVsZW1lbnQpbik7Ci0gICAgICBhc3NlcnRFcXVhbHMoIkJpbmRpbmcgdHlwZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIiwgV1NETENvbnN0YW50cy5CSU5ESU5HLCB0eXBlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgCi0gICAgICBuID0gbi5nZXROZXh0U2libGluZygpOwotICAgICAgLy8gc2tpcCBvdmVyIHRleHQgbm9kZQotICAgICAgaWYgKG4uZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgbiA9IG4uZ2V0TmV4dFNpYmxpbmcoKTsKLSAgICAgIHR5cGUgPSBXU0RMVXRpbC5nZXRJbnN0YW5jZSgpLmdldFdTRExUeXBlKChFbGVtZW50KW4pOwotICAgICAgYXNzZXJ0RXF1YWxzKCJTZXJ2aWNlIHR5cGUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCIsIFdTRExDb25zdGFudHMuU0VSVklDRSwgdHlwZSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICBmYWlsKCk7Ci0gICAgfSAgICAgIAotICB9Ci0gIAotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yNDcyOTYKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbnZhbGlkWFNESW1wb3J0cygpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBsb2FkIGEgd3NkbCB0aGF0IGNvbnRhaW5zIGFuIHhzZDppbXBvcnQgb3V0c2lkZSBvZiB3c2RsOnR5cGVzCi0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9CdWdGaXhlcy9HZXRXU0RMVHlwZS9CYWRJbXBvcnQud3NkbCIsIHRydWUpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIC8vIHRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSB2YWxpZCB3c2RsOmltcG9ydAotICAgICAgTWFwIGltcG9ydHMgPSBkZWZpbml0aW9uLmdldEltcG9ydHMoKTsKLSAgICAgIGFzc2VydEVxdWFscygiSW5jb3JyZWN0IG51bWJlciBvZiBpbXBvcnRzIiwgMSwgaW1wb3J0cy5zaXplKCkpOyAvLyROT04tTkxTLTEkCi0gICAgICAKLSAgICAgIC8vIHRoZSBiYWQgeHNkOmltcG9ydCBzaG91bGQgYmUgY29uc2lkZXJlZCBhbiBleHRlbnNpYmlsaXR5IGVsZW1lbnQKLSAgICAgIExpc3QgZXh0RWxlbWVudHMgPSBkZWZpbml0aW9uLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgYXNzZXJ0RXF1YWxzKCJJbmNvcnJlY3QgbnVtYmVyIG9mIGV4dGVuc2liaWxpdHkgZWxlbWVudHMiLCAxLCBleHRFbGVtZW50cy5zaXplKCkpOyAgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIGZhaWwoKTsKLSAgICB9ICAgICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3MvYXR0YWNobWVudC5jZ2k/YnVnaWQ9MjU3Mjc5Ci0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UmVjb25jaWxlTm9uV1NETEVsZW1lbnRzKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArIAotICAgICAgICAic2FtcGxlcy9CdWdGaXhlcy9SZWNvbmNpbGVOb25XU0RMRWxlbWVudHMvUmVjb25jaWxlTm9uV1NETEVsZW1lbnRzLndzZGwiLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgICAgICAgCi0gICAgICBEZWZpbml0aW9uIG5ld0RlZmluaXRpb24gPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlRGVmaW5pdGlvbigpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiVGhlIG5ldyBkZWZpbml0aW9uIGNhbm5vdCBiZSBudWxsIixuZXdEZWZpbml0aW9uKTsKLSAgICAgIAotICAgICAgLy8gVGhlIG5hbWVzcGFjZSBpbiB0aGUgV1NETCBkZWZpbml0aW9uIGlzIG5vdCBpbnN0YW5jZXMgb2YgV1NETEVsZW1lbnQsIGl0IGlzIGFuCi0gICAgICAvLyBpbnN0YW5jZXMgb2YgTmFtZXNwYWNlSW1wbAotICAgICAgbmV3RGVmaW5pdGlvbi5hZGROYW1lc3BhY2UoIndzZGwiLCAiaHR0cDovL2V4YW1wbGUub3JnIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJAotICAgICAgbmV3RGVmaW5pdGlvbi51cGRhdGVFbGVtZW50KCk7Ci0gICAgICAKLSAgICAgIERvY3VtZW50IG5ld0RvY3VtZW50ID0gbmV3RGVmaW5pdGlvbi5nZXREb2N1bWVudCgpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiVGhlIG5ldyBkZWZpbml0aW9uJ3MgZG9jdW1lbnQgY2Fubm90IGJlIG51bGwiLG5ld0RvY3VtZW50KTsgLy8kTk9OLU5MUy0xJAotICAgICAgVHlwZXMgdHlwZXMgPSAoVHlwZXMpZGVmaW5pdGlvbi5nZXRUeXBlcygpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiVGhlIGRlZmluaXRpb24gbXVzdCBoYXZlIFR5cGVzIix0eXBlcyk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIE5vZGUgdHlwZXNOb2RlID0gKHR5cGVzLmdldEVsZW1lbnQoKSk7Ci0gICAgICBhc3NlcnROb3ROdWxsKCJUaGUgVHlwZXMgZWxlbWVudCBjYW5ub3QgYmUgbnVsbCIsdHlwZXNOb2RlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgTm9kZSB0b0ltcG9ydCA9IG5ld0RvY3VtZW50LmltcG9ydE5vZGUodHlwZXNOb2RlLCB0cnVlKTsKLSAgICAgIAotICAgICAgLy8gQXBwZW5kIGNoaWxkIHdpbGwgY2FsbCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExFbGVtZW50SW1wbC5lbGVtZW50Q29udGVudHNDaGFuZ2VkKEVsZW1lbnQpCi0gICAgICAvLyB3aGljaCBjaGFuZ2VzIGlzUmVjb25jaWxpbmcgdG8gdHJ1ZSBhbmQgY2FsbHMgCi0gICAgICAvLyBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLldTRExFbGVtZW50SW1wbC5yZWNvbmNpbGVDb250ZW50cyhFbGVtZW50KSBhbmQgY2hhbmdlcyBpc1JlY29uY2lsaW5nIHRvCi0gICAgICAvLyBmYWxzZSBhZnRlci4gIEhvd2V2ZXIsIGR1ZSB0byBhIENsYXNzQ2FzdCBleGNlcHRpb24gaW4gcmVjb25jaWxlQ29udGVudHMsIGlzUmVjb25jaWxpbmcgaXMgbmV2ZXIgY2hhbmdlZCB0bwotICAgICAgLy8gZmFsc2UuICBUaGUgcmVzdWx0IGlzIG5ld2x5IGFkZGVkIFdTREwgZWxlbWVudHMgbm90IHNob3dpbmcgdXAgaW4gdGhlIEVNRiBtb2RlbC4gICAgICAgCi0gICAgICBuZXdEZWZpbml0aW9uLmdldEVsZW1lbnQoKS5hcHBlbmRDaGlsZCh0b0ltcG9ydCk7Ci0gICAgICAKLSAgICAgIC8vIFRoZSBidWcgd291bGQgaGF2ZSBzZXQgaXNSZWNvbmNpbGluZyB0byB0cnVlIGFuZCBzbyBtZXNzYWdlcyB3aWxsIG5vdCBiZSByZWNvbmNpbGVkCi0gICAgICBhc3NlcnROb3ROdWxsKCJUaGUgZGVmaW5pdGlvbiBtdXN0IGhhdmUgbWVzc2FnZXMiLGRlZmluaXRpb24uZ2V0TWVzc2FnZXMoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIAotICAgICAgTWVzc2FnZSBtZXNzYWdlVG9BZGQgPSAoKE1lc3NhZ2UpZGVmaW5pdGlvbi5nZXRNZXNzYWdlKAotICAgICAgICBuZXcgUU5hbWUoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vUmVjb25jaWxlTm9uV1NETEVsZW1lbnRzLyIsIk5ld09wZXJhdGlvblJlcXVlc3QiKSkpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQKLSAgICAgIE5vZGUgbWVzc2FnZU5vZGUgPSBtZXNzYWdlVG9BZGQuZ2V0RWxlbWVudCgpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiVGhlIG1lc3NhZ2UgdG8gYWRkIHRvIHRoZSBuZXcgZGVmaW5pdGlvbiBjYW5ub3QgYmUgbnVsbCIsbWVzc2FnZU5vZGUpOyAvLyROT04tTkxTLTEkCi0gICAgICBOb2RlIHRvSW1wb3J0MiA9IG5ld0RlZmluaXRpb24uZ2V0RG9jdW1lbnQoKS5pbXBvcnROb2RlKG1lc3NhZ2VOb2RlLGZhbHNlKTsKLSAgICAgIAotICAgICAgYXNzZXJ0VHJ1ZSgiTm8gbWVzc2FnZXMgc2hvdWxkIGV4aXN0IixuZXdEZWZpbml0aW9uLmdldEVNZXNzYWdlcygpLnNpemUoKSA9PSAwKTsgLy8kTk9OLU5MUy0xJAotICAgICAgbmV3RGVmaW5pdGlvbi5nZXRFbGVtZW50KCkuYXBwZW5kQ2hpbGQodG9JbXBvcnQyKTsKLSAgICAgIC8vIFRoZSBidWcgY2F1c2VzIHRoZSBtZXNzYWdlIHRvIGJlIGFkZGVkCi0gICAgICBhc3NlcnRUcnVlKCJBIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCIsIG5ld0RlZmluaXRpb24uZ2V0RU1lc3NhZ2VzKCkuc2l6ZSgpID09IDEpOyAvLyROT04tTkxTLTEkICAgICAgCi0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgZmFpbCgpOwotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBTZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3MvYXR0YWNobWVudC5jZ2k/YnVnaWQ9MjU3Mjc5Ci0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UmVjb25jaWxlc0ltcG9ydHNXaXRoTm9Mb2NhdGlvbigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAKLSAgICAgICAgInNhbXBsZXMvQnVnRml4ZXMvUmVjb25jaWxlc0ltcG9ydHNXaXRoTm9Mb2NhdGlvbi9NYWluLndzZGwiLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotICAgICAgYXNzZXJ0Tm90TnVsbChkZWZpbml0aW9uKTsKLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSAiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CLyI7Ci0gICAgICBRTmFtZSBzZXJ2aWNlUU5hbWUgPSBuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCAiQiIpOwotICAgICAgamF2YXgud3NkbC5TZXJ2aWNlIHNlcnZpY2UgPSBkZWZpbml0aW9uLmdldFNlcnZpY2Uoc2VydmljZVFOYW1lKTsKLSAgICAgIGFzc2VydE5vdE51bGwoc2VydmljZSk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgZmFpbCgpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL0lubGluZVNjaGVtYVRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9JbmxpbmVTY2hlbWFUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1N2Y0MWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL0lubGluZVNjaGVtYVRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHM7Ci0KLQotaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotaW1wb3J0IGphdmF4LndzZGwueG1sLldTRExSZWFkZXI7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC53c2RsNGouV1NETEZhY3RvcnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwuRGVmaW5pdGlvbkxvYWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RNb2RlbEdyb3VwOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RQYXJ0aWNsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEUGFydGljbGVDb250ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWE7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLlhTRFNpbXBsZVR5cGVEZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RUeXBlRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLQotCi0vKioKLSAqIEBhdXRob3IgS2lodXAgQm9vCi0gKi8KLXB1YmxpYyBjbGFzcyBJbmxpbmVTY2hlbWFUZXN0IGV4dGVuZHMgVGVzdENhc2UKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgUExVR0lOX0FCU09MVVRFX1BBVEggPSBXU0RMVGVzdHNQbHVnaW4uZ2V0SW5zdGFsbFVSTCgpOwotCi0gIHB1YmxpYyBJbmxpbmVTY2hlbWFUZXN0KFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQotICB7Ci0gICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIucnVuKHN1aXRlKCkpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IElubGluZVNjaGVtYVRlc3QoIklubGluZVNjaGVtYSIpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdElubGluZVNjaGVtYSgpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IElubGluZVNjaGVtYVRlc3QoIklubGluZVNjaGVtYVdpdGhXU0RMNEoiKQotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RJbmxpbmVTY2hlbWFXaXRoV1NETDRKKCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotCi0gICAgcmV0dXJuIHN1aXRlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdElubGluZVNjaGVtYSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9Mb2FkU3RvcmVDb21wYXJlL0xvYWRBbmRQcmludFRlc3Qud3NkbCIpOwotICAgICAgdHJhdmVyc2VEZWZpbml0aW9uKGRlZmluaXRpb24pOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdElubGluZVNjaGVtYVdpdGhXU0RMNEooKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbG9hZERlZmluaXRpb25Gb3JXU0RMNEooInNhbXBsZXMvTG9hZFN0b3JlQ29tcGFyZS9Mb2FkQW5kUHJpbnRUZXN0LndzZGwiKTsKLSAgICAgIHRyYXZlcnNlRGVmaW5pdGlvbihkZWZpbml0aW9uKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIEFzc2VydC5mYWlsKCJUZXN0IGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uOiAiICsgZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRyYXZlcnNlRGVmaW5pdGlvbihEZWZpbml0aW9uIGRlZmluaXRpb24pIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKGRlZmluaXRpb24pOwotCi0gICAgSXRlcmF0b3IgaXRlciA9IGRlZmluaXRpb24uZ2V0RUltcG9ydHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBJbXBvcnQgbXlJbXBvcnQgPSAoSW1wb3J0KWl0ZXIubmV4dCgpOwotICAgICAgdHJhdmVyc2VJbXBvcnQobXlJbXBvcnQpOwotICAgIH0KLQotICAgIC8vIEdldCBJbmxpbmUgU2NoZW1hCi0gICAgVHlwZXMgdHlwZXMgPSAob3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXMpZGVmaW5pdGlvbi5nZXRUeXBlcygpOwotICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCI8dHlwZXM+IGlzIG51bGwiLCB0eXBlcyk7Ci0gICAgaWYgKHR5cGVzICE9IG51bGwpCi0gICAgewotICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSB0eXBlcy5nZXRTY2hlbWFzKCkuaXRlcmF0b3IoKTsKLSAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCI8dHlwZXM+IGRvZXMgbm90IGhhdmUgaW5saW5lIDxzY2hlbWE+cyIsIGl0ZXJhdG9yLmhhc05leHQoKSk7Ci0gICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgewotICAgICAgICBYU0RTY2hlbWEgc2NoZW1hID0gKFhTRFNjaGVtYSlpdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgIHRyYXZlcnNlU2NoZW1hKHNjaGVtYSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlSW1wb3J0KEltcG9ydCBteUltcG9ydCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgLy8gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbXlJbXBvcnQuZ2V0RURlZmluaXRpb24oKTsKLSAgICAvLyAgICB0cmF2ZXJzZURlZmluaXRpb24oZGVmaW5pdGlvbik7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgdHJhdmVyc2VTY2hlbWEoWFNEU2NoZW1hIHNjaGVtYSkKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gc2NoZW1hLmdldEVsZW1lbnREZWNsYXJhdGlvbnMoKS5pdGVyYXRvcigpOwotICAgIFhTREVsZW1lbnREZWNsYXJhdGlvbiBlbGVtZW50RGVjbCA9IG51bGw7Ci0gICAgQXNzZXJ0LmFzc2VydFRydWUoIk5vIDxlbGVtZW50PnMgYXJlIGZvdW5kIiwgaXRlcmF0b3IuaGFzTmV4dCgpKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIGVsZW1lbnREZWNsID0gKFhTREVsZW1lbnREZWNsYXJhdGlvbilpdGVyYXRvci5uZXh0KCk7Ci0KLSAgICAgIGlmIChlbGVtZW50RGVjbC5nZXROYW1lKCkuZXF1YWxzKCJOZXdPcGVyYXRpb25SZXNwb25zZSIpKQotICAgICAgICB0cmF2ZXJzZUVsZW1lbnREZWNsKGVsZW1lbnREZWNsKTsKLSAgICAgIGVsc2UgaWYgKGVsZW1lbnREZWNsLmdldE5hbWUoKS5lcXVhbHMoIk5ld09wZXJhdGlvblJlcXVlc3QiKSkKLSAgICAgICAgdHJhdmVyc2VFbGVtZW50RGVjbChlbGVtZW50RGVjbCk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHRyYXZlcnNlRWxlbWVudERlY2woWFNERWxlbWVudERlY2xhcmF0aW9uIGVsZW1lbnREZWNsKQotICB7Ci0gICAgWFNEVHlwZURlZmluaXRpb24gdHlwZSA9IGVsZW1lbnREZWNsLmdldFR5cGVEZWZpbml0aW9uKCk7Ci0gICAgQXNzZXJ0LmFzc2VydFRydWUoIjxlbGVtZW50PiBkb2VzIG5vdCBoYXZlIDxzaW1wbGVUeXBlPiIsIHR5cGUgaW5zdGFuY2VvZiBYU0RTaW1wbGVUeXBlRGVmaW5pdGlvbik7Ci0gICAgaWYgKHR5cGUuZ2V0Q29tcGxleFR5cGUoKSA9PSBudWxsKSAvLyBzaW1wbGUgdHlwZQotICAgICAgcmV0dXJuOyAvLyBUQkQgLSBDdXJyZW50bHkgdGhpcyBhbHdheXMgcmV0dXJucyBhdCB0aGlzIHBvaW50LgotICAgIFhTRFBhcnRpY2xlQ29udGVudCBjb250ZW50ID0gdHlwZS5nZXRDb21wbGV4VHlwZSgpLmdldENvbnRlbnQoKTsKLSAgICB0cmF2ZXJzZU1vZGVsR3JvdXAoKFhTRE1vZGVsR3JvdXApY29udGVudCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgdHJhdmVyc2VNb2RlbEdyb3VwKFhTRE1vZGVsR3JvdXAgbW9kZWxHcm91cCkKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gbW9kZWxHcm91cC5nZXRDb250ZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgWFNEUGFydGljbGVDb250ZW50IHBhcnRpY2xlQ29udGVudCA9IG51bGw7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBwYXJ0aWNsZUNvbnRlbnQgPSAoKFhTRFBhcnRpY2xlKWl0ZXJhdG9yLm5leHQoKSkuZ2V0Q29udGVudCgpOwotICAgICAgaWYgKHBhcnRpY2xlQ29udGVudCBpbnN0YW5jZW9mIFhTREVsZW1lbnREZWNsYXJhdGlvbikKLSAgICAgIHsKLSAgICAgICAgaWYgKCgoWFNERWxlbWVudERlY2xhcmF0aW9uKXBhcnRpY2xlQ29udGVudCkuaXNFbGVtZW50RGVjbGFyYXRpb25SZWZlcmVuY2UoKSkKLSAgICAgICAgICB0cmF2ZXJzZUVsZW1lbnREZWNsKCgoWFNERWxlbWVudERlY2xhcmF0aW9uKXBhcnRpY2xlQ29udGVudCkuZ2V0UmVzb2x2ZWRFbGVtZW50RGVjbGFyYXRpb24oKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICB0cmF2ZXJzZUVsZW1lbnREZWNsKChYU0RFbGVtZW50RGVjbGFyYXRpb24pcGFydGljbGVDb250ZW50KTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIERlZmluaXRpb24gbG9hZERlZmluaXRpb25Gb3JXU0RMNEooU3RyaW5nIHdzZGxGaWxlKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBXU0RMUmVhZGVyIHJlYWRlciA9IChuZXcgV1NETEZhY3RvcnlJbXBsKCkpLm5ld1dTRExSZWFkZXIoKTsKLSAgICBTdHJpbmcgcyA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgd3NkbEZpbGU7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gKG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb24pcmVhZGVyLnJlYWRXU0RMKHMsIG5ldyBJbnB1dFNvdXJjZShuZXcgRmlsZUlucHV0U3RyZWFtKHMpKSk7Ci0gICAgcmV0dXJuIGRlZmluaXRpb247Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9Mb2FkQW5kU2VyaWFsaXphdGlvblRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9Mb2FkQW5kU2VyaWFsaXphdGlvblRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEyN2RlZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvTG9hZEFuZFNlcmlhbGl6YXRpb25UZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0czsKLQotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZUZpbHRlcjsKLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5EZWZpbml0aW9uSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25Mb2FkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5YTUxEaWZmOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbDsKLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0KLS8qKgotICogQGF1dGhvciBLaWh1cCBCb28KLSAqLwotcHVibGljIGNsYXNzIExvYWRBbmRTZXJpYWxpemF0aW9uVGVzdCBleHRlbmRzIFRlc3RDYXNlCi17Ci0gIHByaXZhdGUgU3RyaW5nIFBMVUdJTl9BQlNPTFVURV9QQVRIID0gV1NETFRlc3RzUGx1Z2luLmdldEluc3RhbGxVUkwoKTsKLQotICBwcml2YXRlIFZlY3RvciB3c2RsRmlsZXMgPSBuZXcgVmVjdG9yKCk7Ci0KLSAgc3RhdGljIHByaXZhdGUgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gbnVsbDsKLQotICAvKioKLSAgICogRXhlY3V0ZXMgYSBzdGFuZC1hbG9uZSB0ZXN0LgotICAgKiBAcGFyYW0gb2JqZWN0cyBhbiBhcnJheSBvZiBTdHJpbmdzIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KLSAgICogQHNlZSAjcnVuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKQotICB7Ci0gICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIucnVuKHN1aXRlKCkpOwotICB9Ci0KLSAgcHVibGljIExvYWRBbmRTZXJpYWxpemF0aW9uVGVzdChTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBMb2FkQW5kU2VyaWFsaXphdGlvblRlc3QoIkxvYWRBbmRTdG9yZSIpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdExvYWRBbmRTdG9yZSgpOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICBzdWl0ZS5hZGRUZXN0IC8vIHd0cCBidWcgNzkzMjYKLSAgICAobmV3IExvYWRBbmRTZXJpYWxpemF0aW9uVGVzdCgiQ29tcGFyZSIpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdENvbXBhcmUoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgcmV0dXJuIHN1aXRlOwotICB9Ci0KLSAgLyoqCi0gICAqIExvYWQgZnJvbSB0aGUgV1NETCBkZWZpbml0aW9ucyBmaWxlIGFuZCBzdG9yZSBiYWNrIHRvIGEgZGlmZmVyZW50IGZpbGUuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0TG9hZEFuZFN0b3JlKCkKLSAgewotICAgIFN0cmluZyBURVNUX0RBVEFfRElSID0gU3lzdGVtLmdldFByb3BlcnR5KCJ0ZXN0RGF0YURpciIpOwotICAgIC8vQXNzZXJ0LmFzc2VydE5vdE51bGwodGVzdERhdGFEaXIpOwotICAgIEZpbGUgZGlyID0gbnVsbDsKLSAgICBpZiAoVEVTVF9EQVRBX0RJUiAhPSBudWxsKQotICAgICAgZGlyID0gbmV3IEZpbGUoVEVTVF9EQVRBX0RJUik7Ci0gICAgZWxzZQotICAgICAgLy8gS0I6IGlmIHlvdSBhcmUgaGVyZSwgZml4IHRleHQueG1sCi0gICAgICBkaXIgPSBuZXcgRmlsZShQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0xvYWRTdG9yZUNvbXBhcmUiKTsgLy8gZmFsbGJhY2sKLQotICAgIGlmIChkaXIuZXhpc3RzKCkgJiYgZGlyLmlzRGlyZWN0b3J5KCkpCi0gICAgewotICAgICAgbGlzdERhdGFGaWxlcyhkaXIpOwotCi0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgRmlsZSBteUZpbGUgPSBudWxsOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdzZGxGaWxlcy5zaXplKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIG15RmlsZSA9IChGaWxlKXdzZGxGaWxlcy5lbGVtZW50QXQoaSk7Ci0gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG15RmlsZS50b1VSTCgpLnRvU3RyaW5nKCkpOwotICAgICAgICAgIGxvYWQobXlGaWxlLnRvU3RyaW5nKCkpOwotICAgICAgICAgIHByaW50KG15RmlsZS50b1N0cmluZygpICsgIi5vdXQiKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgICAgewotICAgICAgICBBc3NlcnQuZmFpbCgiVGVzdCBmYWlsZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbjogIiArIGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgICAgZmFpbChkaXIudG9TdHJpbmcoKSk7Ci0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBsaXN0RGF0YUZpbGVzKEZpbGUgc3JjKQotICB7Ci0gICAgaWYgKCFzcmMuaXNEaXJlY3RvcnkoKSkKLSAgICAgIHJldHVybjsgLy8gQXNzZXJ0aW9uIGZhaWxlZAotCi0gICAgZmlsdGVyV1NETEZpbGVzKHNyYyk7IC8vIEFkZCBXU0RMIGZpbGVzIGluIHRoZSBzcmMgZGlyZWN0b3J5Ci0KLSAgICBGaWxlW10gY2hpbGRyZW4gPSBzcmMubGlzdEZpbGVzKCk7Ci0gICAgRmlsZSBteUZpbGU7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICBteUZpbGUgPSBjaGlsZHJlbltpXTsKLSAgICAgIGlmIChteUZpbGUuaXNEaXJlY3RvcnkoKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKCJDVlMiLmVxdWFscyhteUZpbGUuZ2V0TmFtZSgpKSkKLSAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBsaXN0RGF0YUZpbGVzKG15RmlsZSk7IC8vIFZpc2l0IHN1Yi1kaXJlY3RvcmllcyByZWN1cnNpdmVseQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBmaWx0ZXJXU0RMRmlsZXMoRmlsZSBkaXIpCi0gIHsKLSAgICBGaWxlW10gd3NkbHMgPSBkaXIubGlzdEZpbGVzKG5ldyBGaWxlRmlsdGVyKCkKLSAgICAgIHsKLSAgICAgICAgcHVibGljIGJvb2xlYW4gYWNjZXB0KEZpbGUgcGF0aG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gcGF0aG5hbWUuZ2V0TmFtZSgpLmVuZHNXaXRoKCIud3NkbCIpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIGZvciAoaW50IGogPSAwOyBqIDwgd3NkbHMubGVuZ3RoOyBqKyspCi0gICAgewotICAgICAgd3NkbEZpbGVzLmFkZCh3c2Rsc1tqXSk7Ci0gICAgfQotICB9Ci0KLSAgLyoKLSAgICogTG9hZCBmcm9tIHRoZSBXU0RMIGRlZmluaXRpb25zIGZpbGUuCi0gICAqLwotICBwcml2YXRlIHZvaWQgbG9hZChTdHJpbmcgZmlsZW5hbWUpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKGZpbGVuYW1lKTsKLSAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKGRlZmluaXRpb24pOwotICAgICAgQXNzZXJ0LmFzc2VydFRydWUoZGVmaW5pdGlvbi5lUmVzb3VyY2UoKSBpbnN0YW5jZW9mIFdTRExSZXNvdXJjZUltcGwpOwotCi0gICAgICBXU0RMUmVzb3VyY2VJbXBsIHdzZGxSZXNvdXJjZSA9IChXU0RMUmVzb3VyY2VJbXBsKWRlZmluaXRpb24uZVJlc291cmNlKCk7Ci0gICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCh3c2RsUmVzb3VyY2UpOwotCi0gICAgICBFbGVtZW50IGVsZW1lbnQgPSBkZWZpbml0aW9uLmdldEVsZW1lbnQoKTsKLSAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKGRlZmluaXRpb24uZ2V0RWxlbWVudCgpKTsKLQotICAgICAgV1NETFJlc291cmNlSW1wbC5zZXJpYWxpemUoU3lzdGVtLm91dCwgZWxlbWVudCk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBBc3NlcnQuZmFpbCgiVGVzdCBmYWlsZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbjogIiArIGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLQotICAvKgotICAgKiBTdG9yZSB0aGUgV1NETCBkZWZpbml0aW9ucyB0byBhIGZpbGUuCi0gICAqLwotICBwcml2YXRlIHZvaWQgcHJpbnQoU3RyaW5nIGZpbGVuYW1lKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gVGhpcyByZW1vdmVzIHRoZSBhc3NvY2lhdGVkIERPTSBlbGVtZW50LCBjcmVhdGVzIGEgbmV3IGFzc29jaWF0ZWQgRE9NIGVsZW1lbnQsIGFuZCB0aGVuIHByaW50cyBpdC4KLSAgICAgIC8vIFRoaXMgaXMgYSBnb29kIHRlc3QgZm9yIGhvdyB3ZWxsIHNlcmlhbGl6YXRpb24gd29ya3MgZm9yIGEgbW9kZWwgY3JlYXRlZCAiYm90dG9tIHVwIi4KLSAgICAgIC8vCi0gICAgICBkZWZpbml0aW9uLnNldERvY3VtZW50KG51bGwpOwotICAgICAgZGVmaW5pdGlvbi5zZXRFbGVtZW50KG51bGwpOwotICAgICAgKChEZWZpbml0aW9uSW1wbClkZWZpbml0aW9uKS51cGRhdGVFbGVtZW50KCk7Ci0KLSAgICAgIERlZmluaXRpb25Mb2FkZXIuc3RvcmUoZGVmaW5pdGlvbiwgZmlsZW5hbWUpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIENvbXBhcmUgdGhlIG91dHB1dCBXU0RMIGZpbGUgdG8gdGhlIG9yaWdpbmFsLgotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdENvbXBhcmUoKQotICB7Ci0gICAgWE1MRGlmZiB4bWxkaWZmID0gbmV3IFhNTERpZmYoKTsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBGaWxlIG15RmlsZSA9IG51bGw7Ci0gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdzZGxGaWxlcy5zaXplKCk7IGkrKykKLSAgICAgIHsKLSAgICAgICAgbXlGaWxlID0gKEZpbGUpd3NkbEZpbGVzLmVsZW1lbnRBdChpKTsKLSAgICAgICAgQXNzZXJ0LmFzc2VydFRydWUoeG1sZGlmZi5kaWZmKG15RmlsZS50b1N0cmluZygpLCBteUZpbGUudG9TdHJpbmcoKSArICIub3V0IikpOwotICAgICAgfQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvTG9jYXRpb25UcmFja2luZ1Rlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9Mb2NhdGlvblRyYWNraW5nVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTI0MGJjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9Mb2NhdGlvblRyYWNraW5nVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHM7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25Mb2FkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNERWxlbWVudERlY2xhcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWE7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEUGFyc2VyOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiBUZXN0IGNsYXNzIHVzZWQgdG8gdmFsaWRhdGUgdGhlIFdTREwgbW9kZWwgc291cmNlIGxvY2F0aW9uIHRyYWNraW5nCi0gKiBtZWNoYW5pc20uCi0gKi8KLXB1YmxpYyBjbGFzcyBMb2NhdGlvblRyYWNraW5nVGVzdCBleHRlbmRzIFRlc3RDYXNlCi17Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBMb2NhdGlvblRyYWNraW5nVGVzdCgpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdFRyYWNrc0xvY2F0aW9uKCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIHJldHVybiBzdWl0ZTsKLSAgfQotCi0gIC8qKgotICAgKiBUZXN0cyB0aGUgbG9jYXRpb24gdHJhY2tpbmcgbWVjaGFuaXNtIHByb3ZpZGVkIGJ5IHRoZSBXU0RMIG1vZGVsIHJlc291cmNlCi0gICAqIGxvYWRlci4KLSAgICogCi0gICAqIEBzZWUgV1NETFJlc291cmNlSW1wbAotICAgKiBAc2VlIFdTRExQYXJzZXIKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RUcmFja3NMb2NhdGlvbigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBTdHJpbmcgZmlsZU5hbWUgPSBXU0RMVGVzdHNQbHVnaW4uZ2V0SW5zdGFsbFVSTCgpICsgIi9zYW1wbGVzL0xvYWRTdG9yZUNvbXBhcmUvTG9hZEFuZFByaW50VGVzdC53c2RsIjsgLy8kTk9OLU5MUy0xJAotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKGZpbGVOYW1lLCB0cnVlLCB0cnVlKTsKLSAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKGRlZmluaXRpb24pOwotICAgICAgQXNzZXJ0LmFzc2VydFRydWUoZGVmaW5pdGlvbi5lUmVzb3VyY2UoKSBpbnN0YW5jZW9mIFdTRExSZXNvdXJjZUltcGwpOwotCi0gICAgICBFbGVtZW50IGRlZmluaXRpb25FbGVtZW50ID0gZGVmaW5pdGlvbi5nZXRFbGVtZW50KCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoMSwgV1NETFBhcnNlci5nZXRTdGFydExpbmUoZGVmaW5pdGlvbkVsZW1lbnQpKTsKLQotICAgICAgVHlwZXMgdHlwZXMgPSBkZWZpbml0aW9uLmdldEVUeXBlcygpOwotICAgICAgRWxlbWVudCB0eXBlc0VsZW1lbnQgPSB0eXBlcy5nZXRFbGVtZW50KCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoNCwgV1NETFBhcnNlci5nZXRTdGFydExpbmUodHlwZXNFbGVtZW50KSk7Ci0KLSAgICAgIExpc3QgdHlwZXNFeHRlbnNpYmlsaXR5RWxlbWVudHMgPSB0eXBlcy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0KLSAgICAgIGFzc2VydEVxdWFscygxLCB0eXBlc0V4dGVuc2liaWxpdHlFbGVtZW50cy5zaXplKCkpOwotCi0gICAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCBzY2hlbWFFeHRlbnNpb24gPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpdHlwZXNFeHRlbnNpYmlsaXR5RWxlbWVudHMuZ2V0KDApOwotCi0gICAgICBYU0RTY2hlbWEgc2NoZW1hID0gc2NoZW1hRXh0ZW5zaW9uLmdldFNjaGVtYSgpOwotCi0gICAgICBFbGVtZW50IHNjaGVtYUVsZW1lbnQgPSBzY2hlbWEuZ2V0RWxlbWVudCgpOwotCi0gICAgICBhc3NlcnRFcXVhbHMoNSwgWFNEUGFyc2VyLmdldFN0YXJ0TGluZShzY2hlbWFFbGVtZW50KSk7Ci0KLSAgICAgIFhTREVsZW1lbnREZWNsYXJhdGlvbiByZXF1ZXN0RWxlbWVudERlY2xhcmF0aW9uID0gc2NoZW1hLnJlc29sdmVFbGVtZW50RGVjbGFyYXRpb24oIk5ld09wZXJhdGlvblJlcXVlc3QiKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgICBFbGVtZW50IHJlcXVlc3RFbGVtZW50ID0gcmVxdWVzdEVsZW1lbnREZWNsYXJhdGlvbi5nZXRFbGVtZW50KCk7Ci0KLSAgICAgIGFzc2VydEVxdWFscyg3LCBYU0RQYXJzZXIuZ2V0U3RhcnRMaW5lKHJlcXVlc3RFbGVtZW50KSk7Ci0KLSAgICAgIExpc3Qgc2VydmljZXMgPSBkZWZpbml0aW9uLmdldEVTZXJ2aWNlcygpOwotICAgICAgYXNzZXJ0RXF1YWxzKDEsIHNlcnZpY2VzLnNpemUoKSk7Ci0gICAgICBTZXJ2aWNlIHNlcnZpY2UgPSAoU2VydmljZSlzZXJ2aWNlcy5nZXQoMCk7Ci0KLSAgICAgIEVsZW1lbnQgc2VydmljZUVsZW1lbnQgPSBzZXJ2aWNlLmdldEVsZW1lbnQoKTsKLSAgICAgIGFzc2VydEVxdWFscyg0MiwgV1NETFBhcnNlci5nZXRTdGFydExpbmUoc2VydmljZUVsZW1lbnQpKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIEFzc2VydC5mYWlsKCJUZXN0IGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uOiAiICsgZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL015UmVzb2x2ZXIuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9NeVJlc29sdmVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5OTc0ZDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL015UmVzb2x2ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHM7Ci0KLQotaW1wb3J0IG9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyOwotaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOwotCi0KLXB1YmxpYyBjbGFzcyBNeVJlc29sdmVyIGltcGxlbWVudHMgRW50aXR5UmVzb2x2ZXIKLXsKLSAgcHVibGljIElucHV0U291cmNlIHJlc29sdmVFbnRpdHkoU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQpCi0gIHsKLSAgICBpZiAoc3lzdGVtSWQuZXF1YWxzKCJodHRwOi8vd3d3Lm15aG9zdC5jb20vdG9kYXkiKSkKLSAgICB7Ci0gICAgICAvLyByZXR1cm4gYSBzcGVjaWFsIGlucHV0IHNvdXJjZQotICAgICAgLy9NeVJlYWRlciByZWFkZXIgPSBuZXcgTXlSZWFkZXIoKTsKLSAgICAgIC8vcmV0dXJuIG5ldyBJbnB1dFNvdXJjZShyZWFkZXIpOwotICAgICAgcmV0dXJuIG5ldyBJbnB1dFNvdXJjZShzeXN0ZW1JZCk7IC8vIFRCRAotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLy8gdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW91cgotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvUGFyc2VyVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL1BhcnNlclRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY3Zjg0YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvUGFyc2VyVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0czsKLQotCi1pbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLQotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyOwotCi0KLXB1YmxpYyBjbGFzcyBQYXJzZXJUZXN0IGV4dGVuZHMgVGVzdENhc2UKLXsKLQotICBwdWJsaWMgUGFyc2VyVGVzdChTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IFBhcnNlclRlc3QoIlBhcnNlciIpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdFBhcnNlcigpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHJldHVybiBzdWl0ZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RQYXJzZXIoKQotICB7Ci0gICAgRW50aXR5UmVzb2x2ZXIgbXlSZXNvbHZlciA9IG5ldyBNeVJlc29sdmVyKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgSW5wdXRTdHJlYW0gaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKCIuL3NhbXBsZXMvTG9hZEFuZFByaW50VGVzdC53c2RsIik7Ci0gICAgICBEb2N1bWVudEJ1aWxkZXIgbXlCdWlsZGVyID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld0RvY3VtZW50QnVpbGRlcigpOwotICAgICAgbXlCdWlsZGVyLnNldEVudGl0eVJlc29sdmVyKG15UmVzb2x2ZXIpOwotICAgICAgRG9jdW1lbnQgZG9jID0gbXlCdWlsZGVyLnBhcnNlKGlzKTsKLSAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJEb2N1bWVudCBpcyBudWxsIiwgZG9jKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIEFzc2VydC5mYWlsKCJUZXN0IGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uOiAiICsgZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCi0gIHsKLSAgfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvUmVmYWN0b3JpbmdUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvUmVmYWN0b3JpbmdUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1Nzk0MWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL1JlZmFjdG9yaW5nVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHM7Ci0KLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlU2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC51dGlsLlNPQVBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzOwotCi0KLXB1YmxpYyBjbGFzcyBSZWZhY3RvcmluZ1Rlc3QgZXh0ZW5kcyBUZXN0Q2FzZQotewotICBwdWJsaWMgUmVmYWN0b3JpbmdUZXN0KCkKLSAgewotICB9Ci0KLSAgcHVibGljIFJlZmFjdG9yaW5nVGVzdChTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IFJlZmFjdG9yaW5nVGVzdCgiUmVmYWN0b3JpbmciKQotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RSZWZhY3RvcmluZygpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHJldHVybiBzdWl0ZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RSZWZhY3RvcmluZygpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICAvLyBCZWZvcmUgcnVubmluZyB0aGlzIHRlc3QsIG1vZGlmeSB0aGUgbG9jYXRpb24gb2YgdGhlIGdlbmVyYXRlZCBXU0RMIGZpbGUKLSAgICAgIGdlbmVyYXRlV1NETChXU0RMVGVzdHNQbHVnaW4uZ2V0SW5zdGFsbFVSTCgpICsic2FtcGxlcy9nZW5lcmF0ZWQvUmVmYWN0b3JpbmdUZXN0LndzZGwiKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIEFzc2VydC5mYWlsKCJUZXN0IGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uOiAiICsgZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotCi0gIC8vIGRlZmVjdCA2NTk0Ci0gIHB1YmxpYyB2b2lkIHJlbmFtZU9wZXJhdGlvbihPcGVyYXRpb24gb3ApCi0gIHsKLSAgICBJbnB1dCBpbnB1dCA9IG9wLmdldEVJbnB1dCgpOwotICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKGlucHV0KTsKLSAgICBNZXNzYWdlIG1lc3NhZ2UgPSBpbnB1dC5nZXRFTWVzc2FnZSgpOwotICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKG1lc3NhZ2UpOwotCi0gICAgb3Auc2V0TmFtZSgiUmVuYW1lZCIgKyBvcC5nZXROYW1lKCkpOwotICAgIFFOYW1lIG5ld1FOYW1lID0gbmV3IFFOYW1lKG1lc3NhZ2UuZ2V0UU5hbWUoKS5nZXROYW1lc3BhY2VVUkkoKSwgIlJlbmFtZWQiICsgbWVzc2FnZS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpKTsKLSAgICBtZXNzYWdlLnNldFFOYW1lKG5ld1FOYW1lKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlV1NETChTdHJpbmcgb3V0cHV0RmlsZSkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7Ci0gICAgUmVzb3VyY2UgcmVzb3VyY2UgPSByZXNvdXJjZVNldC5jcmVhdGVSZXNvdXJjZShVUkkuY3JlYXRlRmlsZVVSSShvdXRwdXRGaWxlKSk7Ci0gICAgcmVzb3VyY2VTZXQuZ2V0UmVzb3VyY2VzKCkuYWRkKHJlc291cmNlKTsKLQotICAgIC8vIENyZWF0ZSBhIERlZmluaXRpb24gLSBUZW1wZXJhdHVyZQotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVEZWZpbml0aW9uKCk7Ci0gICAgZGVmaW5pdGlvbi5zZXRRTmFtZShuZXcgUU5hbWUoV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkksICJUZW1wZXJhdHVyZSIpKTsKLSAgICByZXNvdXJjZS5nZXRDb250ZW50cygpLmFkZChkZWZpbml0aW9uKTsKLQotICAgIC8vIFRhcmdldCBuYW1lc3BhY2UgLSBodHRwOi8vd3d3LnRlbXBlcmF0dXJlLmNvbQotICAgIGRlZmluaXRpb24uc2V0VGFyZ2V0TmFtZXNwYWNlKCJodHRwOi8vd3d3LnRlbXBlcmF0dXJlLmNvbSIpOwotICAgIGRlZmluaXRpb24uYWRkTmFtZXNwYWNlKCJ0bnMiLCAiaHR0cDovL3d3dy50ZW1wZXJhdHVyZS5jb20iKTsKLQotICAgIC8vIE90aGVyIG5hbWVzcGFjZXMgLSB3c2RsLCBzb2FwLCB4c2QKLSAgICBkZWZpbml0aW9uLmFkZE5hbWVzcGFjZSgid3NkbCIsIFdTRExDb25zdGFudHMuV1NETF9OQU1FU1BBQ0VfVVJJKTsKLSAgICBkZWZpbml0aW9uLmFkZE5hbWVzcGFjZSgieHNkIiwgV1NETENvbnN0YW50cy5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMSk7Ci0gICAgZGVmaW5pdGlvbi5hZGROYW1lc3BhY2UoInNvYXAiLCBTT0FQQ29uc3RhbnRzLlNPQVBfTkFNRVNQQUNFX1VSSSk7Ci0KLSAgICAvLwotICAgIC8vIExldCdzIHN0YXJ0IGJ1aWxkaW5nIHR3byBtZXNzYWdlcwotICAgIC8vCi0KLSAgICAvLyBDcmVhdGUgYSBQYXJ0IC0gWmlwQ29kZQotICAgIFBhcnQgcGFydCA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVQYXJ0KCk7Ci0gICAgcGFydC5zZXROYW1lKCJaaXBDb2RlIik7Ci0gICAgcGFydC5zZXRUeXBlTmFtZShuZXcgUU5hbWUoV1NETENvbnN0YW50cy5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMSwgInN0cmluZyIpKTsKLQotICAgIC8vIENyZWF0ZSBhIE1lc3NhZ2UgLSBHZXRUZW1wZXJhdHVyZUlucHV0Ci0gICAgTWVzc2FnZSBpbnB1dE1lc3NhZ2UgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlTWVzc2FnZSgpOwotICAgIGlucHV0TWVzc2FnZS5zZXRRTmFtZShuZXcgUU5hbWUoZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKSwgIkdldFRlbXBlcmF0dXJlSW5wdXQiKSk7Ci0gICAgaW5wdXRNZXNzYWdlLmFkZFBhcnQocGFydCk7Ci0gICAgZGVmaW5pdGlvbi5hZGRNZXNzYWdlKGlucHV0TWVzc2FnZSk7Ci0KLSAgICAvLyBDcmVhdGUgYSBQYXJ0IC0gVGVtcGVyYXR1cmUKLSAgICBwYXJ0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVBhcnQoKTsKLSAgICBwYXJ0LnNldE5hbWUoIlRlbXBlcmF0dXJlIik7Ci0gICAgcGFydC5zZXRUeXBlTmFtZShuZXcgUU5hbWUoV1NETENvbnN0YW50cy5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMSwgImZsb2F0IikpOwotCi0gICAgLy8gQ3JlYXRlIGEgTWVzc2FnZSAtIEdldFRlbXBlcmF0dXJlT3V0cHV0Ci0gICAgTWVzc2FnZSBvdXRwdXRNZXNzYWdlID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZU1lc3NhZ2UoKTsKLSAgICBvdXRwdXRNZXNzYWdlLnNldFFOYW1lKG5ldyBRTmFtZShkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpLCAiR2V0VGVtcGVyYXR1cmVPdXRwdXQiKSk7Ci0gICAgb3V0cHV0TWVzc2FnZS5hZGRQYXJ0KHBhcnQpOwotICAgIGRlZmluaXRpb24uYWRkTWVzc2FnZShvdXRwdXRNZXNzYWdlKTsKLQotICAgIC8vCi0gICAgLy8gTmV4dCwgYnVpbGQgYSBQb3J0VHlwZQotICAgIC8vCi0KLSAgICAvLyBDcmVhdGUgYW4gSW5wdXQgLSBHZXRUZW1wZXJhdHVyZUlucHV0Ci0gICAgSW5wdXQgaW5wdXQgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlSW5wdXQoKTsKLSAgICBpbnB1dC5zZXRNZXNzYWdlKGlucHV0TWVzc2FnZSk7Ci0KLSAgICAvLyBDcmVhdGUgYW4gT3V0cHV0IC0gR2V0VGVtcGVyYXR1cmVPdXRwdXQKLSAgICBPdXRwdXQgb3V0cHV0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZU91dHB1dCgpOwotICAgIG91dHB1dC5zZXRNZXNzYWdlKG91dHB1dE1lc3NhZ2UpOwotCi0gICAgLy8gQ3JlYXRlIGFuIE9wZXJhdGlvbiAtIEdldFRlbXBlcmF0dXJlRm9yWmlwQ29kZQotICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlT3BlcmF0aW9uKCk7Ci0gICAgb3BlcmF0aW9uLnNldE5hbWUoIkdldFRlbXBlcmF0dXJlRm9yWmlwQ29kZSIpOwotICAgIG9wZXJhdGlvbi5zZXRJbnB1dChpbnB1dCk7Ci0gICAgb3BlcmF0aW9uLnNldE91dHB1dChvdXRwdXQpOwotCi0gICAgLy8gQ3JlYXRlIGEgUG9ydFR5cGUKLSAgICBQb3J0VHlwZSBwb3J0VHlwZSA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVQb3J0VHlwZSgpOwotICAgIHBvcnRUeXBlLnNldFFOYW1lKG5ldyBRTmFtZShkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpLCAiR2V0VGVtcGVyYXR1cmVJbmZvU09BUCIpKTsKLSAgICBwb3J0VHlwZS5hZGRPcGVyYXRpb24ob3BlcmF0aW9uKTsKLSAgICBkZWZpbml0aW9uLmFkZFBvcnRUeXBlKHBvcnRUeXBlKTsKLQotICAgIC8vCi0gICAgLy8gQ3JlYXRlIHRoZSBzZWNvbmQgc2V0IG9wIE9wZXJhdGlvbnMKLSAgICAvLwotCi0gICAgLy8gQ3JlYXRlIGEgUGFydAotICAgIHBhcnQgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlUGFydCgpOwotICAgIHBhcnQuc2V0TmFtZSgiUGFydDIiKTsKLSAgICBwYXJ0LnNldFR5cGVOYW1lKG5ldyBRTmFtZShXU0RMQ29uc3RhbnRzLlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxLCAic3RyaW5nIikpOwotCi0gICAgLy8gQ3JlYXRlIGEgTWVzc2FnZQotICAgIE1lc3NhZ2UgaW5wdXRNZXNzYWdlMiA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVNZXNzYWdlKCk7Ci0gICAgaW5wdXRNZXNzYWdlMi5zZXRRTmFtZShuZXcgUU5hbWUoZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKSwgIklucHV0TWVzc2FnZTIiKSk7Ci0gICAgaW5wdXRNZXNzYWdlMi5hZGRQYXJ0KHBhcnQpOwotICAgIGRlZmluaXRpb24uYWRkTWVzc2FnZShpbnB1dE1lc3NhZ2UyKTsKLQotICAgIC8vIENyZWF0ZSBhIFBhcnQKLSAgICBwYXJ0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVBhcnQoKTsKLSAgICBwYXJ0LnNldE5hbWUoIlBhcnQzIik7Ci0gICAgcGFydC5zZXRUeXBlTmFtZShuZXcgUU5hbWUoV1NETENvbnN0YW50cy5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMSwgImZsb2F0IikpOwotCi0gICAgLy8gQ3JlYXRlIGEgTWVzc2FnZSAtIEdldFRlbXBlcmF0dXJlT3V0cHV0Ci0gICAgTWVzc2FnZSBvdXRwdXRNZXNzYWdlMiA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVNZXNzYWdlKCk7Ci0gICAgb3V0cHV0TWVzc2FnZTIuc2V0UU5hbWUobmV3IFFOYW1lKGRlZmluaXRpb24uZ2V0VGFyZ2V0TmFtZXNwYWNlKCksICJPdXRwdXRNZXNzYWdlMiIpKTsKLSAgICBvdXRwdXRNZXNzYWdlMi5hZGRQYXJ0KHBhcnQpOwotICAgIGRlZmluaXRpb24uYWRkTWVzc2FnZShvdXRwdXRNZXNzYWdlMik7Ci0KLSAgICAvLyBDcmVhdGUgYW4gSW5wdXQKLSAgICBJbnB1dCBpbnB1dDIgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlSW5wdXQoKTsKLSAgICBpbnB1dDIuc2V0TWVzc2FnZShpbnB1dE1lc3NhZ2UyKTsKLQotICAgIC8vIENyZWF0ZSBhbiBPdXRwdXQgLSBHZXRUZW1wZXJhdHVyZU91dHB1dAotICAgIE91dHB1dCBvdXRwdXQyID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZU91dHB1dCgpOwotICAgIG91dHB1dDIuc2V0TWVzc2FnZShvdXRwdXRNZXNzYWdlMik7Ci0KLSAgICAvLyBDcmVhdGUgYW4gT3BlcmF0aW9uIC0gR2V0VGVtcGVyYXR1cmVGb3JaaXBDb2RlCi0gICAgT3BlcmF0aW9uIG9wZXJhdGlvbjIgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlT3BlcmF0aW9uKCk7Ci0gICAgb3BlcmF0aW9uMi5zZXROYW1lKCJPcGVyYXRpb24yIik7Ci0gICAgb3BlcmF0aW9uMi5zZXRJbnB1dChpbnB1dDIpOwotICAgIG9wZXJhdGlvbjIuc2V0T3V0cHV0KG91dHB1dDIpOwotCi0gICAgcG9ydFR5cGUuYWRkT3BlcmF0aW9uKG9wZXJhdGlvbjIpOwotCi0gICAgcmVuYW1lT3BlcmF0aW9uKG9wZXJhdGlvbik7Ci0gICAgcmVuYW1lT3BlcmF0aW9uKG9wZXJhdGlvbjIpOwotCi0gICAgcmVzb3VyY2Uuc2F2ZShudWxsKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL1NlbWFudGljVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL1NlbWFudGljVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjM1YzdiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9TZW1hbnRpY1Rlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvblR5cGU7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5Bc3NlcnQ7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5GYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlR5cGVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQWRkcmVzczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwuRGVmaW5pdGlvbkxvYWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25WaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWE7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLQotCi0vKioKLSAqIEBhdXRob3IgS2lodXAgQm9vCi0gKi8KLXB1YmxpYyBjbGFzcyBTZW1hbnRpY1Rlc3QgZXh0ZW5kcyBEZWZpbml0aW9uVmlzaXRvcgotewotICBwcml2YXRlIFN0cmluZyBQTFVHSU5fQUJTT0xVVEVfUEFUSCA9IFdTRExUZXN0c1BsdWdpbi5nZXRJbnN0YWxsVVJMKCk7Ci0KLSAgLy8gQWRkZWQgZm9yIEpVbml0Ci0gIHB1YmxpYyBTZW1hbnRpY1Rlc3QoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gZGVmaW5pdGlvbgotICAgKi8KLSAgcHVibGljIFNlbWFudGljVGVzdChEZWZpbml0aW9uIGRlZmluaXRpb24pCi0gIHsKLSAgICBzdXBlcihkZWZpbml0aW9uKTsKLSAgfQotCi0gIC8qICAKLSAgIHByaXZhdGUgdm9pZCBzZXJpYWxpemUoU3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgRXhjZXB0aW9uCi0gICB7Ci0gICBTb3VyY2UgZG9tU291cmNlID0gbmV3IERPTVNvdXJjZShkb2MpOwotICAgVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdUcmFuc2Zvcm1lcigpOwotICAgdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5JTkRFTlQsInllcyIpOwotICAgdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5FTkNPRElORywiVVRGLTgiKTsKLSAgIHRyYW5zZm9ybWVyLnNldE91dHB1dFByb3BlcnR5KCJ7aHR0cDovL3htbC5hcGFjaGUub3JnL3hzbHR9aW5kZW50LWFtb3VudCIsIjQiKTsKLSAgIHRyYW5zZm9ybWVyLnRyYW5zZm9ybShkb21Tb3VyY2UsbmV3IFN0cmVhbVJlc3VsdChuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlbmFtZSkpKTsKLSAgIH0KLSAgIAotICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZURvY3VtZW50KCkgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KLSAgIHsKLSAgIGRvYyA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdEb2N1bWVudEJ1aWxkZXIoKS5uZXdEb2N1bWVudCgpOwotICAgfQotICAgCi0gICBwcml2YXRlIEVsZW1lbnQgY3JlYXRlV1NETEVsZW1lbnQoU3RyaW5nIG5hbWUpCi0gICB7Ci0gICBFbGVtZW50IGVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDA0LzA4L3dzZGwiLG5hbWUpOwotICAgaWYgKHdzZGxOYW1lc3BhY2VQcmVmaXggIT0gbnVsbCkKLSAgIGVsZW1lbnQuc2V0UHJlZml4KHdzZGxOYW1lc3BhY2VQcmVmaXgpOwotICAgCi0gICByZXR1cm4gZWxlbWVudDsKLSAgIH0KLSAgICovCi0gIHByaXZhdGUgdm9pZCB2aXNpdERvY3VtZW50YXRpb24oRWxlbWVudCBkb2NFbGVtZW50KQotICB7Ci0gICAgaWYgKGRvY0VsZW1lbnQgPT0gbnVsbCkKLSAgICAgIHJldHVybjsKLSAgICBwcmludGxuKCJkb2N1bWVudGF0aW9uOiAiICsgZG9jRWxlbWVudCk7IC8vIFRCRCAtIHNlcmlhbGl6ZSBkb2NFbGVtZW50Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgcHJpbnRsbihTdHJpbmcgcykKLSAgewotICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0RGVmaW5pdGlvbihEZWZpbml0aW9uIGRlZikKLSAgewotICAgIHByaW50bG4oIlZpc2l0aW5nIGRlZmluaXRpb25zLi4uIik7Ci0gICAgdmlzaXREb2N1bWVudGF0aW9uKGRlZi5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLQotICAgIFFOYW1lIHFuYW1lID0gZGVmLmdldFFOYW1lKCk7Ci0gICAgaWYgKHFuYW1lICE9IG51bGwpCi0gICAgICBwcmludGxuKCJuYW1lOiAiICsgcW5hbWUuZ2V0TG9jYWxQYXJ0KCkpOwotCi0gICAgU3RyaW5nIHRhcmdldE5hbWVzcGFjZSA9IGRlZi5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLSAgICBpZiAodGFyZ2V0TmFtZXNwYWNlICE9IG51bGwpCi0gICAgICBwcmludGxuKCJ0YXJnZXROYW1lc3BhY2U6ICIgKyB0YXJnZXROYW1lc3BhY2UpOwotCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBkZWYuZ2V0TmFtZXNwYWNlcygpLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgU3RyaW5nIHByZWZpeCA9IG51bGw7Ci0gICAgU3RyaW5nIG5hbWVzcGFjZSA9IG51bGw7Ci0KLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIHByZWZpeCA9IChTdHJpbmcpaXRlcmF0b3IubmV4dCgpOwotICAgICAgbmFtZXNwYWNlID0gZGVmLmdldE5hbWVzcGFjZShwcmVmaXgpOwotICAgICAgcHJpbnRsbigibmFtZXNwYWNlIHByZWZpeDogIiArIHByZWZpeCArICIsIG5hbWVzcGFjZSBVUkk6ICIgKyBuYW1lc3BhY2UpOwotICAgIH0KLSAgICBzdXBlci52aXNpdERlZmluaXRpb24oZGVmKTsKLSAgICBwcmludGxuKCJMZWF2aW5nIGRlZmluaXRpb25zLi4uIik7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uVmlzaXRvciN2aXNpdEltcG9ydChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEltcG9ydChJbXBvcnQgd3NkbEltcG9ydCkKLSAgewotICAgIHByaW50bG4oIlZpc2l0aW5nIGltcG9ydC4uLiIpOwotICAgIC8vIERldGVybWluZSBpZiB3ZSA8aW1wb3J0PiBhIHNjaGVtYS4KLSAgICBpZiAoaW1wb3J0aW5nU2NoZW1hKHdzZGxJbXBvcnQpKQotICAgIHsKLSAgICAgIHByaW50bG4oIjxpbXBvcnQ+aW5nIFhNTCBTY2hlbWEiKTsKLQotICAgICAgLy8gIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vZm9vLmNvbSIgc2NoZW1hTG9jYXRpb249ICJiYXIueHNkIi8+Ci0gICAgICBwcmludGxuKCJuYW1lc3BhY2U6ICIgKyB3c2RsSW1wb3J0LmdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICAgIHByaW50bG4oInNjaGVtYUxvY2F0aW9uOiAiICsgd3NkbEltcG9ydC5nZXRMb2NhdGlvblVSSSgpKTsKLSAgICAgIHZpc2l0RG9jdW1lbnRhdGlvbih3c2RsSW1wb3J0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcHJpbnRsbigiPGltcG9ydD5pbmcgV1NETCIpOwotICAgICAgdmlzaXREb2N1bWVudGF0aW9uKHdzZGxJbXBvcnQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0gICAgfQotICAgIHByaW50bG4oIkxlYXZpbmcgaW1wb3J0Li4uIik7Ci0gIH0KLQotICBwcml2YXRlIGJvb2xlYW4gaW1wb3J0aW5nU2NoZW1hKEltcG9ydCBteUltcG9ydCkKLSAgewotICAgIGlmIChteUltcG9ydC5nZXREZWZpbml0aW9uKCkgIT0gbnVsbCkgLy8gaXQgaXMgV1NETCBpbXBvcnQKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25WaXNpdG9yI3Zpc2l0VHlwZXMob3JnLmVjbGlwc2Uud3N0LndzZGwuVHlwZXMpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFR5cGVzKFR5cGVzIHR5cGVzKQotICB7Ci0gICAgcHJpbnRsbigiVmlzaXRpbmcgdHlwZXMuLi4iKTsKLQotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gdHlwZXMuZ2V0U2NoZW1hcygpLml0ZXJhdG9yKCk7Ci0gICAgWFNEU2NoZW1hIHNjaGVtYSA9IG51bGw7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBzY2hlbWEgPSAoWFNEU2NoZW1hKWl0ZXJhdG9yLm5leHQoKTsKLSAgICAgIHByaW50bG4oImluLWxpbmUgc2NoZW1hOiAiICsgc2NoZW1hKTsKLSAgICB9Ci0gICAgcHJpbnRsbigiTGVhdmluZyB0eXBlcy4uLiIpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwuRGVmaW5pdGlvblZpc2l0b3IjdmlzaXRQYXJ0KG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFBhcnQoUGFydCBwYXJ0KQotICB7Ci0gICAgcHJpbnRsbigiVmlzaXRpbmcgcGFydC4uLiIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRQb3J0VHlwZShQb3J0VHlwZSBwb3J0VHlwZSkKLSAgewotICAgIHByaW50bG4oIlZpc2l0aW5nIHBvcnRUeXBlLi4uIik7Ci0gICAgdmlzaXREb2N1bWVudGF0aW9uKHBvcnRUeXBlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotCi0gICAgUU5hbWUgcW5hbWUgPSBwb3J0VHlwZS5nZXRRTmFtZSgpOwotICAgIGlmIChxbmFtZSAhPSBudWxsKQotICAgICAgcHJpbnRsbigibmFtZTogIiArIHFuYW1lLmdldExvY2FsUGFydCgpKTsKLQotICAgIHN1cGVyLnZpc2l0UG9ydFR5cGUocG9ydFR5cGUpOwotICAgIHByaW50bG4oIkxlYXZpbmcgcG9ydFR5cGUuLi4iKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0T3BlcmF0aW9uKE9wZXJhdGlvbiBvcGVyYXRpb24pCi0gIHsKLSAgICBwcmludGxuKCJWaXNpdGluZyBvcGVyYXRpb24uLi4iKTsKLSAgICB2aXNpdERvY3VtZW50YXRpb24ob3BlcmF0aW9uLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotCi0gICAgU3RyaW5nIG5hbWUgPSBvcGVyYXRpb24uZ2V0TmFtZSgpOwotICAgIGlmIChuYW1lICE9IG51bGwpCi0gICAgICBwcmludGxuKCJuYW1lOiAiICsgbmFtZSk7Ci0KLSAgICBPcGVyYXRpb25UeXBlIG9wVHlwZSA9IG9wZXJhdGlvbi5nZXRTdHlsZSgpOwotICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgZGV0ZXJtaW5pbmcgT3BlcmF0aW9uIFR5cGUiLCBvcFR5cGUpOwotCi0gICAgaWYgKE9wZXJhdGlvblR5cGUuUkVRVUVTVF9SRVNQT05TRSA9PSBvcFR5cGUpCi0gICAgICBwcmludGxuKCJvcCB0eXBlOiAiICsgImluLW91dCIpOwotICAgIGVsc2UgaWYgKE9wZXJhdGlvblR5cGUuU09MSUNJVF9SRVNQT05TRSA9PSBvcFR5cGUpCi0gICAgICBwcmludGxuKCJvcCB0eXBlIiArICJvdXQtaW4iKTsKLSAgICBlbHNlIGlmIChPcGVyYXRpb25UeXBlLk5PVElGSUNBVElPTiA9PSBvcFR5cGUpCi0gICAgICBwcmludGxuKCJvcCB0eXBlIiArICJvdXQtb25seSIpOwotICAgIGVsc2UgaWYgKE9wZXJhdGlvblR5cGUuT05FX1dBWSA9PSBvcFR5cGUpCi0gICAgICBwcmludGxuKCJvcCB0eXBlIiArICJpbi1vbmx5Iik7Ci0KLSAgICBzdXBlci52aXNpdE9wZXJhdGlvbihvcGVyYXRpb24pOwotICAgIHByaW50bG4oIkxlYXZpbmcgb3BlcmF0aW9uLi4uIik7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uVmlzaXRvciN2aXNpdElucHV0KG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0KQotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRJbnB1dChJbnB1dCBpbnB1dCkKLSAgewotICAgIHByaW50bG4oIlZpc2l0aW5nIGlucHV0Li4uIik7Ci0gICAgdmlzaXREb2N1bWVudGF0aW9uKGlucHV0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotCi0gICAgU3RyaW5nIG5hbWUgPSBpbnB1dC5nZXROYW1lKCk7Ci0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICAgIHByaW50bG4oIm5hbWU6ICIgKyBuYW1lKTsKLQotICAgIE1lc3NhZ2UgbWVzc2FnZSA9IGlucHV0LmdldEVNZXNzYWdlKCk7Ci0gICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byByZXNvbHZlIHRoZSBtZXNzYWdlIiwgbWVzc2FnZSk7Ci0KLSAgICBwcmludGxuKCJMZWF2aW5nIGlucHV0Li4uIik7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uVmlzaXRvciN2aXNpdE91dHB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5PdXRwdXQpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdE91dHB1dChPdXRwdXQgb3V0cHV0KQotICB7Ci0gICAgcHJpbnRsbigiVmlzaXRpbmcgb3V0cHV0Li4uIik7Ci0gICAgdmlzaXREb2N1bWVudGF0aW9uKG91dHB1dC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLQotICAgIFN0cmluZyBuYW1lID0gb3V0cHV0LmdldE5hbWUoKTsKLSAgICBpZiAobmFtZSAhPSBudWxsKQotICAgICAgcHJpbnRsbigibmFtZTogIiArIG5hbWUpOwotCi0gICAgTWVzc2FnZSBtZXNzYWdlID0gb3V0cHV0LmdldEVNZXNzYWdlKCk7Ci0gICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byByZXNvbHZlIHRoZSBtZXNzYWdlIiwgbWVzc2FnZSk7Ci0KLSAgICBwcmludGxuKCJMZWF2aW5nIG91dHB1dC4uLiIpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwuRGVmaW5pdGlvblZpc2l0b3IjdmlzaXRGYXVsdChvcmcuZWNsaXBzZS53c3Qud3NkbC5GYXVsdCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0RmF1bHQoRmF1bHQgZmF1bHQpCi0gIHsKLSAgICBwcmludGxuKCJWaXNpdGluZyBmYXVsdC4uLiIpOwotICAgIHByaW50bG4oIkxlYXZpbmcgZmF1bHQuLi4iKTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25WaXNpdG9yI3Zpc2l0QmluZGluZyhvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nKQotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRCaW5kaW5nKEJpbmRpbmcgYmluZGluZykKLSAgewotICAgIHByaW50bG4oIlZpc2l0aW5nIGJpbmRpbmcuLi4iKTsKLSAgICB2aXNpdERvY3VtZW50YXRpb24oYmluZGluZy5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLQotICAgIFFOYW1lIHFuYW1lID0gYmluZGluZy5nZXRRTmFtZSgpOwotICAgIGlmIChxbmFtZSAhPSBudWxsKQotICAgICAgcHJpbnRsbigibmFtZTogIiArIHFuYW1lLmdldExvY2FsUGFydCgpKTsKLQotICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gYmluZGluZy5nZXRFUG9ydFR5cGUoKTsKLSAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIHJlc29sdmUgdGhlIHBvcnRUeXBlIiwgcG9ydFR5cGUpOwotCi0gICAgc3VwZXIudmlzaXRCaW5kaW5nKGJpbmRpbmcpOwotICAgIEFzc2VydC5hc3NlcnRUcnVlKCI8c29hcEJvZHk+IGlzIG1pc3NpbmciLCBzb2FwQm9keVZpc2l0ZWQpOwotICAgIEFzc2VydC5hc3NlcnRUcnVlKCI8c29hcEJpbmRpbmc+IGlzIG1pc3NpbmciLCBzb2FwQmluZGluZ1Zpc2l0ZWQpOwotICAgIEFzc2VydC5hc3NlcnRUcnVlKCI8c29hcE9wZXJhdGlvbj4gaXMgbWlzc2luZyIsIHNvYXBPcGVyYXRpb25WaXNpdGVkKTsKLSAgICBwcmludGxuKCJMZWF2aW5nIGJpbmRpbmcuLi4iKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ09wZXJhdGlvbihCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24pCi0gIHsKLSAgICBwcmludGxuKCJWaXNpdGluZyBiaW5kaW5nIG9wZXJhdGlvbi4uLiIpOwotICAgIHZpc2l0RG9jdW1lbnRhdGlvbihiaW5kaW5nT3BlcmF0aW9uLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotCi0gICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0RU9wZXJhdGlvbigpOwotICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gcmVzb2x2ZSB0aGUgb3BlcmF0aW9uIiwgb3BlcmF0aW9uKTsKLQotICAgIGlmIChvcGVyYXRpb24gIT0gbnVsbCkKLSAgICB7Ci0gICAgICBTdHJpbmcgb3BlcmF0aW9uTmFtZSA9IG9wZXJhdGlvbi5nZXROYW1lKCk7Ci0gICAgICBwcmludGxuKCJuYW1lOiAiICsgb3BlcmF0aW9uTmFtZSk7Ci0gICAgfQotCi0gICAgc3VwZXIudmlzaXRCaW5kaW5nT3BlcmF0aW9uKGJpbmRpbmdPcGVyYXRpb24pOwotICAgIHByaW50bG4oIkxlYXZpbmcgYmluZGluZyBvcGVyYXRpb24uLi4iKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ0lucHV0KEJpbmRpbmdJbnB1dCBpbnB1dCkKLSAgewotICAgIHByaW50bG4oIlZpc2l0aW5nIGJpbmRpbmcgaW5wdXQuLi4iKTsKLSAgICB2aXNpdERvY3VtZW50YXRpb24oaW5wdXQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0KLSAgICBTdHJpbmcgaW5wdXROYW1lID0gaW5wdXQuZ2V0TmFtZSgpOwotICAgIGlmIChpbnB1dE5hbWUgIT0gbnVsbCkKLSAgICAgIHByaW50bG4oIm5hbWU6ICIgKyBpbnB1dE5hbWUpOwotCi0gICAgc3VwZXIudmlzaXRCaW5kaW5nSW5wdXQoaW5wdXQpOwotICAgIHByaW50bG4oIkxlYXZpbmcgYmluZGluZyBpbnB1dC4uLiIpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRCaW5kaW5nT3V0cHV0KEJpbmRpbmdPdXRwdXQgb3V0cHV0KQotICB7Ci0gICAgcHJpbnRsbigiVmlzaXRpbmcgYmluZGluZyBvdXRwdXQuLi4iKTsKLSAgICB2aXNpdERvY3VtZW50YXRpb24ob3V0cHV0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotCi0gICAgU3RyaW5nIG91dHB1dE5hbWUgPSBvdXRwdXQuZ2V0TmFtZSgpOwotICAgIGlmIChvdXRwdXROYW1lICE9IG51bGwpCi0gICAgICBwcmludGxuKCJuYW1lOiAiICsgb3V0cHV0TmFtZSk7Ci0KLSAgICBzdXBlci52aXNpdEJpbmRpbmdPdXRwdXQob3V0cHV0KTsKLSAgICBwcmludGxuKCJMZWF2aW5nIGJpbmRpbmcgb3V0cHV0Li4uIik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmdGYXVsdChCaW5kaW5nRmF1bHQgZmF1bHQpCi0gIHsKLSAgICBwcmludGxuKCJWaXNpdGluZyBiaW5kaW5nIGZhdWx0Li4uIik7Ci0gICAgdmlzaXREb2N1bWVudGF0aW9uKGZhdWx0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotCi0gICAgRWxlbWVudCBmYXVsdEVsZW1lbnQgPSBmYXVsdC5nZXRFbGVtZW50KCk7Ci0gICAgU3RyaW5nIGZhdWx0TmFtZSA9IGZhdWx0LmdldE5hbWUoKTsKLSAgICBpZiAoZmF1bHROYW1lICE9IG51bGwpCi0gICAgICBmYXVsdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJuYW1lIiwgZmF1bHROYW1lKTsKLQotICAgIHN1cGVyLnZpc2l0QmluZGluZ0ZhdWx0KGZhdWx0KTsKLSAgICBwcmludGxuKCJMZWF2aW5nIGJpbmRpbmcgZmF1bHQuLi4iKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0U2VydmljZShTZXJ2aWNlIHNlcnZpY2UpCi0gIHsKLSAgICBwcmludGxuKCJWaXNpdGluZyBzZXJ2aWNlLi4uIik7Ci0gICAgdmlzaXREb2N1bWVudGF0aW9uKHNlcnZpY2UuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0KLSAgICBRTmFtZSBxbmFtZSA9IHNlcnZpY2UuZ2V0UU5hbWUoKTsKLSAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiVmFsaWRhdGlvbiBFcnJvcjogc2VydmljZSBpcyBtaXNzaW5nIHRoZSBuYW1lIGF0dHJpYnV0ZSIsIHFuYW1lKTsKLSAgICBpZiAocW5hbWUgIT0gbnVsbCkKLSAgICAgIHByaW50bG4oIm5hbWU6ICIgKyBxbmFtZS5nZXRMb2NhbFBhcnQoKSk7Ci0KLSAgICBzdXBlci52aXNpdFNlcnZpY2Uoc2VydmljZSk7Ci0gICAgcHJpbnRsbigiTGVhdmluZyBzZXJ2aWNlLi4uIik7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uVmlzaXRvciN2aXNpdFBvcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0UG9ydChQb3J0IHBvcnQpCi0gIHsKLSAgICBwcmludGxuKCJWaXNpdGluZyBwb3J0Li4uIik7Ci0gICAgdmlzaXREb2N1bWVudGF0aW9uKHBvcnQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0KLSAgICBTdHJpbmcgbmFtZSA9IHBvcnQuZ2V0TmFtZSgpOwotICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJWYWxpZGF0aW9uIEVycm9yOiBwb3J0IGlzIG1pc3NpbmcgdGhlIG5hbWUgYXR0cmlidXRlIiwgcG9ydCk7Ci0gICAgaWYgKG5hbWUgIT0gbnVsbCkKLSAgICAgIHByaW50bG4oIm5hbWU6ICIgKyBwb3J0LmdldE5hbWUoKSk7Ci0KLSAgICBCaW5kaW5nIGJpbmRpbmcgPSBwb3J0LmdldEVCaW5kaW5nKCk7Ci0gICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byByZXNvbHZlIHRoZSBiaW5kaW5nIiwgYmluZGluZyk7Ci0KLSAgICBzdXBlci52aXNpdFBvcnQocG9ydCk7Ci0gICAgQXNzZXJ0LmFzc2VydFRydWUoIjxzb2FwQWRkcmVzcz4gaXMgbWlzc2luZyIsIHNvYXBBZGRyZXNzVmlzaXRlZCk7Ci0gICAgcHJpbnRsbigiTGVhdmluZyBwb3J0Li4uIik7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uVmlzaXRvciN2aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2libGVFbGVtZW50LCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoRXh0ZW5zaWJsZUVsZW1lbnQgb3duZXIsIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dGVuc2liaWxpdHlFbGVtZW50KQotICB7Ci0gICAgcHJpbnRsbigiVmlzaXRpbmcgZXh0ZW5zaWJpbGl0eSBlbGVtZW50Li4uIik7Ci0gICAgaWYgKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgU09BUEJvZHkpCi0gICAgICB2aXNpdFNPQVBCb2R5KChTT0FQQm9keSlleHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoZXh0ZW5zaWJpbGl0eUVsZW1lbnQgaW5zdGFuY2VvZiBTT0FQQmluZGluZykKLSAgICAgIHZpc2l0U09BUEJpbmRpbmcoKFNPQVBCaW5kaW5nKWV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICBlbHNlIGlmIChleHRlbnNpYmlsaXR5RWxlbWVudCBpbnN0YW5jZW9mIFNPQVBBZGRyZXNzKQotICAgICAgdmlzaXRTT0FQQWRkcmVzcygoU09BUEFkZHJlc3MpZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgIGVsc2UgaWYgKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgU09BUE9wZXJhdGlvbikKLSAgICAgIHZpc2l0U09BUE9wZXJhdGlvbigoU09BUE9wZXJhdGlvbilleHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgcHJpbnRsbigiTGVhdmluZyBleHRlbnNpYmlsaXR5IGVsZW1lbnQuLi4iKTsKLSAgfQotCi0gIC8vTmVlZHMgdG8gaW1wcm92ZSB0aGlzIHBhcnQKLSAgcHJpdmF0ZSBib29sZWFuIHNvYXBPcGVyYXRpb25WaXNpdGVkID0gZmFsc2U7Ci0KLSAgcHJpdmF0ZSB2b2lkIHZpc2l0U09BUE9wZXJhdGlvbihTT0FQT3BlcmF0aW9uIHNvYXBPcGVyYXRpb24pCi0gIHsKLSAgICBzb2FwT3BlcmF0aW9uVmlzaXRlZCA9IHRydWU7Ci0gICAgcHJpbnRsbigiVmlzaXRpbmcgU09BUE9wZXJhdGlvbi4uLiIpOwotICAgIHByaW50bG4oInNvYXBBY3Rpb246ICIgKyBzb2FwT3BlcmF0aW9uLmdldFNvYXBBY3Rpb25VUkkoKSk7Ci0gICAgcHJpbnRsbigiTGVhdmluZyBTT0FQT3BlcmF0aW9uLi4uIik7Ci0gIH0KLQotICAvL05lZWRzIHRvIGltcHJvdmUgdGhpcyBwYXJ0Ci0gIHByaXZhdGUgYm9vbGVhbiBzb2FwQm9keVZpc2l0ZWQgPSBmYWxzZTsKLQotICBwcml2YXRlIHZvaWQgdmlzaXRTT0FQQm9keShTT0FQQm9keSBzb2FwQm9keSkKLSAgewotICAgIHNvYXBCb2R5VmlzaXRlZCA9IHRydWU7Ci0gICAgcHJpbnRsbigiVmlzaXRpbmcgU09BUEJvZHkuLi4iKTsKLSAgICBwcmludGxuKCJ1c2U6ICIgKyBzb2FwQm9keS5nZXRVc2UoKSk7Ci0gICAgcHJpbnRsbigiTGVhdmluZyBTT0FQQm9keS4uLiIpOwotICB9Ci0KLSAgLy9OZWVkcyB0byBpbXByb3ZlIHRoaXMgcGFydAotICBwcml2YXRlIGJvb2xlYW4gc29hcEJpbmRpbmdWaXNpdGVkID0gZmFsc2U7Ci0KLSAgcHJpdmF0ZSB2b2lkIHZpc2l0U09BUEJpbmRpbmcoU09BUEJpbmRpbmcgc29hcEJpbmRpbmcpCi0gIHsKLSAgICBzb2FwQmluZGluZ1Zpc2l0ZWQgPSB0cnVlOwotICAgIHByaW50bG4oIlZpc2l0aW5nIFNPQVBCaW5kaW5nLi4uIik7Ci0gICAgcHJpbnRsbigic3R5bGU6ICIgKyBzb2FwQmluZGluZy5nZXRTdHlsZSgpKTsKLSAgICBwcmludGxuKCJ0cmFuc3BvcnQ6ICIgKyBzb2FwQmluZGluZy5nZXRUcmFuc3BvcnRVUkkoKSk7Ci0gICAgcHJpbnRsbigiTGVhdmluZyBTT0FQQmluZGluZy4uLiIpOwotICB9Ci0KLSAgLy8gTmVlZHMgdG8gaW1wcm92ZSB0aGlzIHBhcnQKLSAgcHJpdmF0ZSBib29sZWFuIHNvYXBBZGRyZXNzVmlzaXRlZCA9IGZhbHNlOwotCi0gIHByaXZhdGUgdm9pZCB2aXNpdFNPQVBBZGRyZXNzKFNPQVBBZGRyZXNzIHNvYXBBZGRyZXNzKQotICB7Ci0gICAgc29hcEFkZHJlc3NWaXNpdGVkID0gdHJ1ZTsKLSAgICBwcmludGxuKCJWaXNpdGluZyBTT0FQQWRkcmVzcy4uLiIpOwotICAgIHByaW50bG4oImxvY2F0aW9uOiAiICsgc29hcEFkZHJlc3MuZ2V0TG9jYXRpb25VUkkoKSk7Ci0gICAgcHJpbnRsbigiTGVhdmluZyBTT0FQQWRkcmVzcy4uLiIpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IFNlbWFudGljVGVzdCgiTW9kZWxTZW1hbnRpY1Rlc3QiKQotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RNb2RlbFNlbWFudGljKCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIHJldHVybiBzdWl0ZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RNb2RlbFNlbWFudGljKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZGVmID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvTG9hZFN0b3JlQ29tcGFyZS9Mb2FkQW5kUHJpbnRUZXN0LndzZGwiLCB0cnVlKTsKLSAgICAgIFNlbWFudGljVGVzdCB0ZXN0ID0gbmV3IFNlbWFudGljVGVzdChkZWYpOwotICAgICAgdGVzdC52aXNpdCgpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoZS50b1N0cmluZygpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQotICB7Ci0gICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIucnVuKHN1aXRlKCkpOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvVXRpbFRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9VdGlsVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Nzc4NDU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9VdGlsVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHM7Ci0KLQotaW1wb3J0IGphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWU7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQSGVhZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC51dGlsLlNPQVBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5FeHRlbnNpYmlsaXR5RWxlbWVudEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbC5XU0RMUmVzb3VyY2VGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25Mb2FkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5FeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnlSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51dGlsLldTRExDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotcHVibGljIGNsYXNzIFV0aWxUZXN0IGV4dGVuZHMgVGVzdENhc2UKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgUExVR0lOX0FCU09MVVRFX1BBVEggPSBXU0RMVGVzdHNQbHVnaW4uZ2V0SW5zdGFsbFVSTCgpOwotCi0gIHB1YmxpYyBVdGlsVGVzdChTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkKLSAgewotICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLnJ1bihzdWl0ZSgpKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKCk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBVdGlsVGVzdCgiV1NETENvbnN0YW50cyIpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdENvbnN0YW50cygpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IFV0aWxUZXN0KCJXU0RMUmVzb3VyY2VGYWN0b3J5SW1wbCIpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdFdTRExSZXNvdXJjZUZhY3RvcnlJbXBsKCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgVXRpbFRlc3QoIldTRExSZXNvdXJjZUltcGwiKQotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RXU0RMUmVzb3VyY2VJbXBsKCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIHN1aXRlLmFkZFRlc3QobmV3IFV0aWxUZXN0KCJFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkiKQotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgc3VpdGUuYWRkVGVzdChuZXcgVXRpbFRlc3QoIkV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5IikKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICByZXR1cm4gc3VpdGU7Ci0gIH0KLQotICBzdGF0aWMgcHJpdmF0ZSBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBudWxsOwotCi0gIHB1YmxpYyB2b2lkIHRlc3RDb25zdGFudHMoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgaW50IHR5cGUgPSBXU0RMQ29uc3RhbnRzLm5vZGVUeXBlKFdTRExDb25zdGFudHMuUE9SVF9FTEVNRU5UX1RBRyk7Ci0gICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZSgiTm9kZSB0eXBlIGlzIG5vdCB0aGF0IG9mIHBvcnQiLCB0eXBlID09IDEwKTsKLQotICAgICAgZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0xvYWRTdG9yZUNvbXBhcmUvTG9hZEFuZFByaW50VGVzdC53c2RsIik7Ci0gICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZShkZWZpbml0aW9uLmVSZXNvdXJjZSgpIGluc3RhbmNlb2YgV1NETFJlc291cmNlSW1wbCk7Ci0KLSAgICAgIGludCBkZWZpbml0aW9uTm9kZVR5cGUgPSBXU0RMQ29uc3RhbnRzLm5vZGVUeXBlKGRlZmluaXRpb24uZ2V0RWxlbWVudCgpKTsKLSAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCJOb2RlIHR5cGUgaXMgbm90IHRoYXQgb2YgZGVmaW5pdGlvbiIsIGRlZmluaXRpb25Ob2RlVHlwZSA9PSAxKTsKLQotICAgICAgYm9vbGVhbiBpc1dTRExOYW1lc3BhY2UgPSBXU0RMQ29uc3RhbnRzLmlzV1NETE5hbWVzcGFjZShkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpKTsKLSAgICAgIEFzc2VydC5hc3NlcnRGYWxzZSgiVGhpcyBzaG91bGQgbm90IGJlIHRoZSBXU0RMIE5hbWVzcGFjZSIsIGlzV1NETE5hbWVzcGFjZSk7Ci0KLSAgICAgIGJvb2xlYW4gaXNNYXRjaGluZyA9IFdTRExDb25zdGFudHMuaXNNYXRjaGluZ05hbWVzcGFjZSgiaHR0cDovL3d3dy5leGFtcGxlLm9yZyIsICJodHRwOi8vd3d3LmV4YW1wbGUub3JnIik7Ci0gICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZSgiaXNNYXRjaGluZ05hbWVzcGFjZSBpcyBpbmNvcnJlY3QiLCBpc01hdGNoaW5nKTsKLQotICAgICAgU3RyaW5nIGF0dHIgPSBXU0RMQ29uc3RhbnRzLmdldEF0dHJpYnV0ZShkZWZpbml0aW9uLmdldEVsZW1lbnQoKSwgIm5hbWUiKTsKLSAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCJnZXRBdHRyaWJ1dGUgaXMgaW5jb3JyZWN0IiwgYXR0ci5lcXVhbHMoIkxvYWRBbmRQcmludFRlc3QiKSk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBBc3NlcnQuZmFpbCgiVGVzdCBmYWlsZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbjogIiArIGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0V1NETFJlc291cmNlRmFjdG9yeUltcGwoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgV1NETFJlc291cmNlRmFjdG9yeUltcGwgZmFjdG9yeUltcGwgPSBuZXcgV1NETFJlc291cmNlRmFjdG9yeUltcGwoKTsKLSAgICAgIFJlc291cmNlIHJlc291cmNlID0gZmFjdG9yeUltcGwuY3JlYXRlUmVzb3VyY2UoVVJJLmNyZWF0ZUZpbGVVUkkoIi4vc2FtcGxlcy9jcmVhdGVSZXNvdXJjZVRlc3Qud3NkbCIpKTsKLSAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCJSZXNvdXJjZSBpcyBub3Qgb2YgdHlwZSBXU0RMUmVzb3VyY2VJbXBsIiwgcmVzb3VyY2UgaW5zdGFuY2VvZiBXU0RMUmVzb3VyY2VJbXBsKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIEFzc2VydC5mYWlsKCJUZXN0IGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uOiAiICsgZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RXU0RMUmVzb3VyY2VJbXBsKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIFdTRExSZXNvdXJjZUltcGwgcmVzb3VyY2VJbXBsID0gbmV3IFdTRExSZXNvdXJjZUltcGwoVVJJLmNyZWF0ZUZpbGVVUkkoIi4vc2FtcGxlcy9jcmVhdGVSZXNvdXJjZVRlc3Qud3NkbCIpKTsKLSAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCJSZXNvdXJjZSBpcyBub3Qgb2YgdHlwZSBXU0RMUmVzb3VyY2VJbXBsIiwgcmVzb3VyY2VJbXBsIGluc3RhbmNlb2YgV1NETFJlc291cmNlSW1wbCk7Ci0KLSAgICAgIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9Mb2FkU3RvcmVDb21wYXJlL0xvYWRBbmRQcmludFRlc3Qud3NkbCIpOwotICAgICAgQXNzZXJ0LmFzc2VydFRydWUoZGVmaW5pdGlvbi5lUmVzb3VyY2UoKSBpbnN0YW5jZW9mIFdTRExSZXNvdXJjZUltcGwpOwotICAgICAgRWxlbWVudCBlbGVtZW50ID0gZGVmaW5pdGlvbi5nZXRFbGVtZW50KCk7Ci0gICAgICBEb2N1bWVudCBkb2N1bWVudCA9IGRlZmluaXRpb24uZ2V0RG9jdW1lbnQoKTsKLQotICAgICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkKLSAgICAgIHsKLSAgICAgICAgV1NETFJlc291cmNlSW1wbC5zZXJpYWxpemUoU3lzdGVtLm91dCwgZWxlbWVudCwgbnVsbCk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChkb2N1bWVudCAhPSBudWxsKQotICAgICAgewotICAgICAgICBXU0RMUmVzb3VyY2VJbXBsLnNlcmlhbGl6ZShTeXN0ZW0ub3V0LCBkb2N1bWVudCwgbnVsbCk7Ci0gICAgICB9Ci0KLSAgICAgIHRyeQotICAgICAgewotICAgICAgICByZXNvdXJjZUltcGwuYXR0YWNoZWQoZGVmaW5pdGlvbik7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgICB7Ci0KLSAgICAgIH0KLQotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkgZmFjdG9yeSA9IFdTRExQbHVnaW4uSU5TVEFOQ0UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5KFNPQVBDb25zdGFudHMuU09BUF9OQU1FU1BBQ0VfVVJJKTsKLSAgICAgIGlmIChmYWN0b3J5ICE9IG51bGwpCi0gICAgICB7Ci0gICAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGVlID0gZmFjdG9yeS5jcmVhdGVFeHRlbnNpYmlsaXR5RWxlbWVudChTT0FQQ29uc3RhbnRzLlNPQVBfTkFNRVNQQUNFX1VSSSwgU09BUENvbnN0YW50cy5IRUFERVJfRUxFTUVOVF9UQUcpOwotICAgICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZSgiUHJvYmxlbSBjcmVhdGluZyBTT0FQIGV4dGVuc2liaWxpdHkgZWxlbWVudCIsIGVlIGluc3RhbmNlb2YgU09BUEhlYWRlcik7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBBc3NlcnQuZmFpbCgiVGVzdCBmYWlsZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbjogIiArIGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLQotICBjbGFzcyBUZXN0RXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5kcyBFeHRlbnNpYmlsaXR5RWxlbWVudEltcGwgaW1wbGVtZW50cyBFeHRlbnNpYmlsaXR5RWxlbWVudAotICB7Ci0gICAgU3RyaW5nIG5zLCBuYW1lOwotCi0gICAgcHVibGljIFRlc3RFeHRlbnNpYmlsaXR5RWxlbWVudChTdHJpbmcgbnMsIFN0cmluZyBuYW1lKQotICAgIHsKLSAgICAgIHN1cGVyKCk7Ci0gICAgICB0aGlzLm5zID0gbnM7Ci0gICAgICB0aGlzLm5hbWUgPSBuYW1lOwotICAgIH0KLQotICAgIHB1YmxpYyBRTmFtZSBnZXRFbGVtZW50VHlwZSgpCi0gICAgewotICAgICAgaWYgKGVsZW1lbnRUeXBlID09IG51bGwpCi0gICAgICB7Ci0gICAgICAgIGVsZW1lbnRUeXBlID0gbmV3IFFOYW1lKG5zLCBuYW1lKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAgICB9Ci0gIH0KLQotICBjbGFzcyBXU0RMVGVzdEZhY3RvcnkgaW1wbGVtZW50cyBFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkKLSAgewotICAgIHB1YmxpYyBXU0RMVGVzdEZhY3RvcnkoKQotICAgIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIGxvY2FsTmFtZSkKLSAgICB7Ci0gICAgICByZXR1cm4gbmV3IFRlc3RFeHRlbnNpYmlsaXR5RWxlbWVudChuYW1lc3BhY2UsIGxvY2FsTmFtZSk7Ci0gICAgfQotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5KCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeVJlZ2lzdHJ5IGZhY3RvcnlSZWdpc3RyeSA9IFdTRExQbHVnaW4uSU5TVEFOQ0UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRGYWN0b3J5UmVnaXN0cnkoKTsKLSAgICAgIGZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlckZhY3RvcnkoImh0dHA6Ly9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cyIsIG5ldyBXU0RMVGVzdEZhY3RvcnkoKSk7Ci0KLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50RmFjdG9yeSBmYWN0b3J5ID0gV1NETFBsdWdpbi5JTlNUQU5DRS5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudEZhY3RvcnkoImh0dHA6Ly9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cyIpOwotICAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZWUgPSBmYWN0b3J5LmNyZWF0ZUV4dGVuc2liaWxpdHlFbGVtZW50KCJodHRwOi8vb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMiLCAiVGVzdEVsZW1lbnQiKTsKLSAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCIxLiBQcm9ibGVtIGNyZWF0aW5nIGN1c3RvbSBUZXN0IGV4dGVuc2liaWxpdHkgZWxlbWVudCIsIGVlIGluc3RhbmNlb2YgVGVzdEV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCIyLiBQcm9ibGVtIGNyZWF0aW5nIGN1c3RvbSBUZXN0IGV4dGVuc2liaWxpdHkgZWxlbWVudCIsIGVlLmdldEVsZW1lbnRUeXBlKCkuZ2V0TG9jYWxQYXJ0KCkuZXF1YWxzKCJUZXN0RWxlbWVudCIpKTsKLSAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCIzLiBQcm9ibGVtIGNyZWF0aW5nIGN1c3RvbSBUZXN0IGV4dGVuc2liaWxpdHkgZWxlbWVudCIsIGVlLmdldEVsZW1lbnRUeXBlKCkuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKAotICAgICAgICAiaHR0cDovL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzIikpOwotCi0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBBc3NlcnQuZmFpbCgiVGVzdCBmYWlsZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbjogIiArIGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsKLSAgICB9Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL1dTREw0SkFQSVRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9XU0RMNEpBUElUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZGFjNzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL1dTREw0SkFQSVRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzOwotCi0KLWltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5GYXVsdDsKLWltcG9ydCBqYXZheC53c2RsLkltcG9ydDsKLWltcG9ydCBqYXZheC53c2RsLklucHV0OwotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLWltcG9ydCBqYXZheC53c2RsLk9wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLk91dHB1dDsKLWltcG9ydCBqYXZheC53c2RsLlBhcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgamF2YXgud3NkbC5TZXJ2aWNlOwotaW1wb3J0IGphdmF4LndzZGwuVHlwZXM7Ci1pbXBvcnQgamF2YXgud3NkbC5leHRlbnNpb25zLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBBZGRyZXNzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5zb2FwLlNPQVBPcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5mYWN0b3J5LldTRExGYWN0b3J5OwotaW1wb3J0IGphdmF4LndzZGwueG1sLldTRExSZWFkZXI7Ci1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5Bc3NlcnQ7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLldTRExQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5XU0RMNEpEZWZpbml0aW9uVmlzaXRvcjsKLWltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKLQotCi0vKioKLSAqIEBhdXRob3IgS2lodXAgQm9vCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMNEpBUElUZXN0IGV4dGVuZHMgV1NETDRKRGVmaW5pdGlvblZpc2l0b3IKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIFBMVUdJTl9BQlNPTFVURV9QQVRIID0gV1NETFRlc3RzUGx1Z2luLmdldEluc3RhbGxVUkwoKTsKLQotICBwcml2YXRlIFdTRExGYWN0b3J5IGZhY3RvcnkgPSBXU0RMUGx1Z2luLklOU1RBTkNFLmNyZWF0ZVdTREw0SkZhY3RvcnkoKTsKLQotICBwcml2YXRlIERlZmluaXRpb24gbmV3RGVmaW5pdGlvbjsKLQotICBwcml2YXRlIE1lc3NhZ2UgY3VycmVudE1lc3NhZ2U7Ci0KLSAgcHJpdmF0ZSBTZXJ2aWNlIGN1cnJlbnRTZXJ2aWNlOwotCi0gIHByaXZhdGUgUG9ydFR5cGUgY3VycmVudFBvcnRUeXBlOwotCi0gIHByaXZhdGUgT3BlcmF0aW9uIGN1cnJlbnRPcGVyYXRpb247Ci0KLSAgcHJpdmF0ZSBCaW5kaW5nIGN1cnJlbnRCaW5kaW5nOwotCi0gIHByaXZhdGUgQmluZGluZ09wZXJhdGlvbiBjdXJyZW50QmluZGluZ09wZXJhdGlvbjsKLQotICAvLyBBZGRlZCBmb3IgSlVuaXQKLSAgcHVibGljIFdTREw0SkFQSVRlc3QoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gZGVmaW5pdGlvbgotICAgKi8KLSAgcHVibGljIFdTREw0SkFQSVRlc3QoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotICB7Ci0gICAgc3VwZXIoZGVmaW5pdGlvbik7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgcHJpbnRsbihTdHJpbmcgcykKLSAgewotICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0RGVmaW5pdGlvbihEZWZpbml0aW9uIGRlZikKLSAgewotICAgIG5ld0RlZmluaXRpb24gPSBmYWN0b3J5Lm5ld0RlZmluaXRpb24oKTsKLSAgICBuZXdEZWZpbml0aW9uLnNldERvY3VtZW50YXRpb25FbGVtZW50KGRlZi5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBuZXdEZWZpbml0aW9uLnNldFFOYW1lKGRlZi5nZXRRTmFtZSgpKTsKLSAgICBuZXdEZWZpbml0aW9uLnNldFRhcmdldE5hbWVzcGFjZShkZWYuZ2V0VGFyZ2V0TmFtZXNwYWNlKCkpOwotICAgIG5ld0RlZmluaXRpb24uc2V0RG9jdW1lbnRCYXNlVVJJKGRlZi5nZXREb2N1bWVudEJhc2VVUkkoKSk7Ci0KLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGRlZi5nZXROYW1lc3BhY2VzKCkua2V5U2V0KCkuaXRlcmF0b3IoKTsKLSAgICBTdHJpbmcgcHJlZml4ID0gbnVsbDsKLSAgICBTdHJpbmcgbmFtZXNwYWNlID0gbnVsbDsKLQotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgcHJlZml4ID0gKFN0cmluZylpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBuYW1lc3BhY2UgPSBkZWYuZ2V0TmFtZXNwYWNlKHByZWZpeCk7Ci0gICAgICBuZXdEZWZpbml0aW9uLmFkZE5hbWVzcGFjZShwcmVmaXgsIG5hbWVzcGFjZSk7Ci0gICAgfQotCi0gICAgc3VwZXIudmlzaXREZWZpbml0aW9uKGRlZik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEltcG9ydChJbXBvcnQgd3NkbEltcG9ydCkKLSAgewotICAgIEltcG9ydCBteUltcG9ydCA9IG5ld0RlZmluaXRpb24uY3JlYXRlSW1wb3J0KCk7Ci0gICAgbmV3RGVmaW5pdGlvbi5hZGRJbXBvcnQobXlJbXBvcnQpOwotCi0gICAgLy8gZS5nLiA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL2Zvby5jb20iIHNjaGVtYUxvY2F0aW9uPSAiYmFyLnhzZCIvPgotICAgIG15SW1wb3J0LnNldE5hbWVzcGFjZVVSSSh3c2RsSW1wb3J0LmdldE5hbWVzcGFjZVVSSSgpKTsKLSAgICBteUltcG9ydC5zZXRMb2NhdGlvblVSSSh3c2RsSW1wb3J0LmdldExvY2F0aW9uVVJJKCkpOwotICAgIG15SW1wb3J0LnNldERvY3VtZW50YXRpb25FbGVtZW50KHdzZGxJbXBvcnQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0KLSAgICBteUltcG9ydC5zZXREZWZpbml0aW9uKG5ld0RlZmluaXRpb24pOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRUeXBlcyhUeXBlcyB0eXBlcykKLSAgewotICAgIFR5cGVzIG15VHlwZXMgPSBuZXdEZWZpbml0aW9uLmNyZWF0ZVR5cGVzKCk7Ci0gICAgbXlUeXBlcy5zZXREb2N1bWVudGF0aW9uRWxlbWVudCh0eXBlcy5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLQotICAgIC8qCi0gICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gdHlwZXMuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0RWxlbWVudCA9IG51bGw7Ci0gICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgIHsKLSAgICAgZXh0ZW5zaWJpbGl0RWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClpdGVyYXRvci5uZXh0KCk7Ci0gICAgIG15VHlwZXMuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoZXh0ZW5zaWJpbGl0RWxlbWVudCk7Ci0gICAgIH0qLwotICAgIG5ld0RlZmluaXRpb24uc2V0VHlwZXMobXlUeXBlcyk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFBhcnQoUGFydCBwYXJ0KQotICB7Ci0gICAgUGFydCBteVBhcnQgPSBuZXdEZWZpbml0aW9uLmNyZWF0ZVBhcnQoKTsKLSAgICBteVBhcnQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQocGFydC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBteVBhcnQuc2V0TmFtZShwYXJ0LmdldE5hbWUoKSk7Ci0gICAgbXlQYXJ0LnNldEVsZW1lbnROYW1lKHBhcnQuZ2V0RWxlbWVudE5hbWUoKSk7Ci0gICAgbXlQYXJ0LnNldFR5cGVOYW1lKHBhcnQuZ2V0VHlwZU5hbWUoKSk7Ci0KLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IHBhcnQuZ2V0RXh0ZW5zaW9uQXR0cmlidXRlcygpLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgUU5hbWUga2V5ID0gbnVsbDsKLSAgICBRTmFtZSB2YWx1ZSA9IG51bGw7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBrZXkgPSAoUU5hbWUpaXRlcmF0b3IubmV4dCgpOwotICAgICAgdmFsdWUgPSAoUU5hbWUpcGFydC5nZXRFeHRlbnNpb25BdHRyaWJ1dGUoa2V5KTsKLSAgICAgIG15UGFydC5zZXRFeHRlbnNpb25BdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7Ci0gICAgfQotICAgIGN1cnJlbnRNZXNzYWdlLmFkZFBhcnQobXlQYXJ0KTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0TWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpCi0gIHsKLSAgICBjdXJyZW50TWVzc2FnZSA9IG5ld0RlZmluaXRpb24uY3JlYXRlTWVzc2FnZSgpOwotICAgIHN1cGVyLnZpc2l0TWVzc2FnZShtZXNzYWdlKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0UG9ydFR5cGUoUG9ydFR5cGUgcG9ydFR5cGUpCi0gIHsKLSAgICBjdXJyZW50UG9ydFR5cGUgPSBuZXdEZWZpbml0aW9uLmNyZWF0ZVBvcnRUeXBlKCk7Ci0gICAgY3VycmVudFBvcnRUeXBlLnNldERvY3VtZW50YXRpb25FbGVtZW50KHBvcnRUeXBlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIGN1cnJlbnRQb3J0VHlwZS5zZXRRTmFtZShwb3J0VHlwZS5nZXRRTmFtZSgpKTsKLSAgICBjdXJyZW50UG9ydFR5cGUuc2V0VW5kZWZpbmVkKHBvcnRUeXBlLmlzVW5kZWZpbmVkKCkpOwotICAgIG5ld0RlZmluaXRpb24uYWRkUG9ydFR5cGUoY3VycmVudFBvcnRUeXBlKTsKLQotICAgIHN1cGVyLnZpc2l0UG9ydFR5cGUocG9ydFR5cGUpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRPcGVyYXRpb24oT3BlcmF0aW9uIG9wZXJhdGlvbikKLSAgewotICAgIGN1cnJlbnRPcGVyYXRpb24gPSBuZXdEZWZpbml0aW9uLmNyZWF0ZU9wZXJhdGlvbigpOwotICAgIGN1cnJlbnRPcGVyYXRpb24uc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3BlcmF0aW9uLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIGN1cnJlbnRPcGVyYXRpb24uc2V0TmFtZShvcGVyYXRpb24uZ2V0TmFtZSgpKTsKLSAgICBjdXJyZW50T3BlcmF0aW9uLnNldFN0eWxlKG9wZXJhdGlvbi5nZXRTdHlsZSgpKTsKLSAgICBjdXJyZW50T3BlcmF0aW9uLnNldFVuZGVmaW5lZChvcGVyYXRpb24uaXNVbmRlZmluZWQoKSk7Ci0gICAgY3VycmVudE9wZXJhdGlvbi5zZXRQYXJhbWV0ZXJPcmRlcmluZyhvcGVyYXRpb24uZ2V0UGFyYW1ldGVyT3JkZXJpbmcoKSk7Ci0gICAgY3VycmVudFBvcnRUeXBlLmFkZE9wZXJhdGlvbihjdXJyZW50T3BlcmF0aW9uKTsKLQotICAgIHN1cGVyLnZpc2l0T3BlcmF0aW9uKG9wZXJhdGlvbik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdElucHV0KElucHV0IGlucHV0KQotICB7Ci0gICAgSW5wdXQgbXlJbnB1dCA9IG5ld0RlZmluaXRpb24uY3JlYXRlSW5wdXQoKTsKLSAgICBteUlucHV0LnNldERvY3VtZW50YXRpb25FbGVtZW50KGlucHV0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIG15SW5wdXQuc2V0TmFtZShpbnB1dC5nZXROYW1lKCkpOwotICAgIG15SW5wdXQuc2V0TWVzc2FnZShpbnB1dC5nZXRNZXNzYWdlKCkpOwotICAgIGN1cnJlbnRPcGVyYXRpb24uc2V0SW5wdXQobXlJbnB1dCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdE91dHB1dChPdXRwdXQgb3V0cHV0KQotICB7Ci0gICAgT3V0cHV0IG15T3V0cHV0ID0gbmV3RGVmaW5pdGlvbi5jcmVhdGVPdXRwdXQoKTsKLSAgICBteU91dHB1dC5zZXREb2N1bWVudGF0aW9uRWxlbWVudChvdXRwdXQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0gICAgbXlPdXRwdXQuc2V0TmFtZShvdXRwdXQuZ2V0TmFtZSgpKTsKLSAgICBteU91dHB1dC5zZXRNZXNzYWdlKG91dHB1dC5nZXRNZXNzYWdlKCkpOwotICAgIGN1cnJlbnRPcGVyYXRpb24uc2V0T3V0cHV0KG15T3V0cHV0KTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0RmF1bHQoRmF1bHQgZmF1bHQpCi0gIHsKLSAgICBGYXVsdCBteUZhdWx0ID0gbmV3RGVmaW5pdGlvbi5jcmVhdGVGYXVsdCgpOwotICAgIG15RmF1bHQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoZmF1bHQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0gICAgbXlGYXVsdC5zZXROYW1lKGZhdWx0LmdldE5hbWUoKSk7Ci0gICAgbXlGYXVsdC5zZXRNZXNzYWdlKGZhdWx0LmdldE1lc3NhZ2UoKSk7Ci0gICAgY3VycmVudE9wZXJhdGlvbi5hZGRGYXVsdChteUZhdWx0KTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZyhCaW5kaW5nIGJpbmRpbmcpCi0gIHsKLSAgICBjdXJyZW50QmluZGluZyA9IG5ld0RlZmluaXRpb24uY3JlYXRlQmluZGluZygpOwotICAgIG5ld0RlZmluaXRpb24uYWRkQmluZGluZyhjdXJyZW50QmluZGluZyk7Ci0KLSAgICBjdXJyZW50QmluZGluZy5zZXREb2N1bWVudGF0aW9uRWxlbWVudChiaW5kaW5nLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIGN1cnJlbnRCaW5kaW5nLnNldFFOYW1lKGJpbmRpbmcuZ2V0UU5hbWUoKSk7Ci0gICAgY3VycmVudEJpbmRpbmcuc2V0UG9ydFR5cGUoYmluZGluZy5nZXRQb3J0VHlwZSgpKTsKLSAgICBjdXJyZW50QmluZGluZy5zZXRVbmRlZmluZWQoYmluZGluZy5pc1VuZGVmaW5lZCgpKTsKLQotICAgIHN1cGVyLnZpc2l0QmluZGluZyhiaW5kaW5nKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ09wZXJhdGlvbihCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24pCi0gIHsKLSAgICBjdXJyZW50QmluZGluZ09wZXJhdGlvbiA9IG5ld0RlZmluaXRpb24uY3JlYXRlQmluZGluZ09wZXJhdGlvbigpOwotICAgIGN1cnJlbnRCaW5kaW5nT3BlcmF0aW9uLnNldERvY3VtZW50YXRpb25FbGVtZW50KGJpbmRpbmdPcGVyYXRpb24uZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0gICAgY3VycmVudEJpbmRpbmdPcGVyYXRpb24uc2V0T3BlcmF0aW9uKGJpbmRpbmdPcGVyYXRpb24uZ2V0T3BlcmF0aW9uKCkpOwotICAgIGN1cnJlbnRCaW5kaW5nT3BlcmF0aW9uLnNldE5hbWUoYmluZGluZ09wZXJhdGlvbi5nZXROYW1lKCkpOwotICAgIGN1cnJlbnRCaW5kaW5nLmFkZEJpbmRpbmdPcGVyYXRpb24oY3VycmVudEJpbmRpbmdPcGVyYXRpb24pOwotCi0gICAgc3VwZXIudmlzaXRCaW5kaW5nT3BlcmF0aW9uKGJpbmRpbmdPcGVyYXRpb24pOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRCaW5kaW5nSW5wdXQoQmluZGluZ0lucHV0IGlucHV0KQotICB7Ci0gICAgQmluZGluZ0lucHV0IG15SW5wdXQgPSBuZXdEZWZpbml0aW9uLmNyZWF0ZUJpbmRpbmdJbnB1dCgpOwotICAgIG15SW5wdXQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoaW5wdXQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0gICAgbXlJbnB1dC5zZXROYW1lKGlucHV0LmdldE5hbWUoKSk7Ci0gICAgY3VycmVudEJpbmRpbmdPcGVyYXRpb24uc2V0QmluZGluZ0lucHV0KG15SW5wdXQpOwotCi0gICAgc3VwZXIudmlzaXRCaW5kaW5nSW5wdXQoaW5wdXQpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRCaW5kaW5nT3V0cHV0KEJpbmRpbmdPdXRwdXQgb3V0cHV0KQotICB7Ci0gICAgQmluZGluZ091dHB1dCBteU91dHB1dCA9IG5ld0RlZmluaXRpb24uY3JlYXRlQmluZGluZ091dHB1dCgpOwotICAgIG15T3V0cHV0LnNldERvY3VtZW50YXRpb25FbGVtZW50KG91dHB1dC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBteU91dHB1dC5zZXROYW1lKG91dHB1dC5nZXROYW1lKCkpOwotICAgIGN1cnJlbnRCaW5kaW5nT3BlcmF0aW9uLnNldEJpbmRpbmdPdXRwdXQobXlPdXRwdXQpOwotCi0gICAgc3VwZXIudmlzaXRCaW5kaW5nT3V0cHV0KG91dHB1dCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmdGYXVsdChCaW5kaW5nRmF1bHQgZmF1bHQpCi0gIHsKLSAgICBCaW5kaW5nRmF1bHQgbXlGYXVsdCA9IG5ld0RlZmluaXRpb24uY3JlYXRlQmluZGluZ0ZhdWx0KCk7Ci0gICAgbXlGYXVsdC5zZXREb2N1bWVudGF0aW9uRWxlbWVudChmYXVsdC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBteUZhdWx0LnNldE5hbWUoZmF1bHQuZ2V0TmFtZSgpKTsKLSAgICBjdXJyZW50QmluZGluZ09wZXJhdGlvbi5hZGRCaW5kaW5nRmF1bHQobXlGYXVsdCk7Ci0KLSAgICBzdXBlci52aXNpdEJpbmRpbmdGYXVsdChmYXVsdCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFNlcnZpY2UoU2VydmljZSBzZXJ2aWNlKQotICB7Ci0gICAgY3VycmVudFNlcnZpY2UgPSBuZXdEZWZpbml0aW9uLmNyZWF0ZVNlcnZpY2UoKTsKLSAgICBjdXJyZW50U2VydmljZS5zZXREb2N1bWVudGF0aW9uRWxlbWVudChzZXJ2aWNlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIGN1cnJlbnRTZXJ2aWNlLnNldFFOYW1lKHNlcnZpY2UuZ2V0UU5hbWUoKSk7Ci0gICAgbmV3RGVmaW5pdGlvbi5hZGRTZXJ2aWNlKGN1cnJlbnRTZXJ2aWNlKTsKLQotICAgIHN1cGVyLnZpc2l0U2VydmljZShzZXJ2aWNlKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0UG9ydChQb3J0IHBvcnQpCi0gIHsKLSAgICBQb3J0IG15UG9ydCA9IG5ld0RlZmluaXRpb24uY3JlYXRlUG9ydCgpOwotICAgIG15UG9ydC5zZXREb2N1bWVudGF0aW9uRWxlbWVudChwb3J0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIG15UG9ydC5zZXROYW1lKHBvcnQuZ2V0TmFtZSgpKTsKLSAgICBteVBvcnQuc2V0QmluZGluZyhwb3J0LmdldEJpbmRpbmcoKSk7Ci0gICAgY3VycmVudFNlcnZpY2UuYWRkUG9ydChteVBvcnQpOwotCi0gICAgc3VwZXIudmlzaXRQb3J0KHBvcnQpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudChFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgewotICAgIGlmIChleHRlbnNpYmlsaXR5RWxlbWVudCBpbnN0YW5jZW9mIFNPQVBCb2R5KQotICAgICAgdmlzaXRTT0FQQm9keSgoU09BUEJvZHkpZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgIGVsc2UgaWYgKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgU09BUEJpbmRpbmcpCi0gICAgICB2aXNpdFNPQVBCaW5kaW5nKChTT0FQQmluZGluZylleHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoZXh0ZW5zaWJpbGl0eUVsZW1lbnQgaW5zdGFuY2VvZiBTT0FQQWRkcmVzcykKLSAgICAgIHZpc2l0U09BUEFkZHJlc3MoKFNPQVBBZGRyZXNzKWV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICBlbHNlIGlmIChleHRlbnNpYmlsaXR5RWxlbWVudCBpbnN0YW5jZW9mIFNPQVBPcGVyYXRpb24pCi0gICAgICB2aXNpdFNPQVBPcGVyYXRpb24oKFNPQVBPcGVyYXRpb24pZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHZpc2l0U09BUE9wZXJhdGlvbihTT0FQT3BlcmF0aW9uIHNvYXBPcGVyYXRpb24pCi0gIHsKLSAgICBwcmludGxuKCJWaXNpdGluZyBTT0FQT3BlcmF0aW9uLi4uIik7Ci0gICAgcHJpbnRsbigic29hcEFjdGlvbjogIiArIHNvYXBPcGVyYXRpb24uZ2V0U29hcEFjdGlvblVSSSgpKTsKLSAgICBwcmludGxuKCJMZWF2aW5nIFNPQVBPcGVyYXRpb24uLi4iKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCB2aXNpdFNPQVBCb2R5KFNPQVBCb2R5IHNvYXBCb2R5KQotICB7Ci0gICAgcHJpbnRsbigiVmlzaXRpbmcgU09BUEJvZHkuLi4iKTsKLSAgICBwcmludGxuKCJ1c2U6ICIgKyBzb2FwQm9keS5nZXRVc2UoKSk7Ci0gICAgcHJpbnRsbigiTGVhdmluZyBTT0FQQm9keS4uLiIpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHZpc2l0U09BUEJpbmRpbmcoU09BUEJpbmRpbmcgc29hcEJpbmRpbmcpCi0gIHsKLSAgICBwcmludGxuKCJWaXNpdGluZyBTT0FQQmluZGluZy4uLiIpOwotICAgIHByaW50bG4oInN0eWxlOiAiICsgc29hcEJpbmRpbmcuZ2V0U3R5bGUoKSk7Ci0gICAgcHJpbnRsbigidHJhbnNwb3J0OiAiICsgc29hcEJpbmRpbmcuZ2V0VHJhbnNwb3J0VVJJKCkpOwotICAgIHByaW50bG4oIkxlYXZpbmcgU09BUEJpbmRpbmcuLi4iKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCB2aXNpdFNPQVBBZGRyZXNzKFNPQVBBZGRyZXNzIHNvYXBBZGRyZXNzKQotICB7Ci0gICAgcHJpbnRsbigiVmlzaXRpbmcgU09BUEFkZHJlc3MuLi4iKTsKLSAgICBwcmludGxuKCJsb2NhdGlvbjogIiArIHNvYXBBZGRyZXNzLmdldExvY2F0aW9uVVJJKCkpOwotICAgIHByaW50bG4oIkxlYXZpbmcgU09BUEFkZHJlc3MuLi4iKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKCk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBXU0RMNEpBUElUZXN0KCJNb2RlbFNlbWFudGljVGVzdCIpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdE1vZGVsU2VtYW50aWMoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgcmV0dXJuIHN1aXRlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE1vZGVsU2VtYW50aWMoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWYgPSBsb2FkRGVmaW5pdGlvbkZvcldTREw0SigiLi9zYW1wbGVzL0xvYWRTdG9yZUNvbXBhcmUvTG9hZEFuZFByaW50VGVzdC53c2RsIik7Ci0gICAgICBXU0RMNEpBUElUZXN0IHRlc3QgPSBuZXcgV1NETDRKQVBJVGVzdChkZWYpOwotICAgICAgdGVzdC52aXNpdCgpOwotICAgICAgc2VyaWFsaXplKHRlc3QubmV3RGVmaW5pdGlvbiwgIi4vc2FtcGxlcy9DbG9uZWRMb2FkQW5kUHJpbnRUZXN0LndzZGwiKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICBBc3NlcnQuZmFpbChlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBzZXJpYWxpemUoRGVmaW5pdGlvbiBkZWZpbml0aW9uLCBTdHJpbmcgY2xvbmVkRmlsZSkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgLy8gV1NETFdyaXRlciB3cml0ZXIgPSBmYWN0b3J5Lm5ld1dTRExXcml0ZXIoKTsKLSAgICAvLyBTdHJpbmcgcyA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgY2xvbmVkRmlsZTsKLSAgICAvLyB3cml0ZXIud3JpdGVXU0RMKGRlZmluaXRpb24sIG5ldyBGaWxlT3V0cHV0U3RyZWFtKHMpKTsKLSAgfQotCi0gIHByaXZhdGUgRGVmaW5pdGlvbiBsb2FkRGVmaW5pdGlvbkZvcldTREw0SihTdHJpbmcgd3NkbEZpbGUpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIFdTRExSZWFkZXIgcmVhZGVyID0gZmFjdG9yeS5uZXdXU0RMUmVhZGVyKCk7Ci0gICAgU3RyaW5nIHMgPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIHdzZGxGaWxlOwotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IHJlYWRlci5yZWFkV1NETChzLCBuZXcgSW5wdXRTb3VyY2UobmV3IEZpbGVJbnB1dFN0cmVhbShzKSkpOwotICAgIHJldHVybiBkZWZpbml0aW9uOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKLSAgewotICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLnJ1bihzdWl0ZSgpKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL1dTRExFTUZBUElUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvV1NETEVNRkFQSVRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZhYzVjNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvV1NETEVNRkFQSVRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU1MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzOwotCi0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVdvcmtzcGFjZVJvb3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlU2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZVJlZmVyZW5jZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5OYW1lc3BhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Vbmtub3duRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuV1NETFBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEFkZHJlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEhlYWRlckJhc2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC51dGlsLldTRExSZXNvdXJjZUZhY3RvcnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwuRGVmaW5pdGlvbkxvYWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25WaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbDsKLQotCi0vKioKLSAqIEBhdXRob3IgS2lodXAgQm9vCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMRU1GQVBJVGVzdCBleHRlbmRzIERlZmluaXRpb25WaXNpdG9yCi17Ci0gIHByaXZhdGUgU3RyaW5nIFBMVUdJTl9BQlNPTFVURV9QQVRIID0gV1NETFRlc3RzUGx1Z2luLmdldEluc3RhbGxVUkwoKTsKLQotICBwcml2YXRlIFdTRExGYWN0b3J5IGZhY3RvcnkgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0U7Ci0KLSAgRGVmaW5pdGlvbiBuZXdEZWZpbml0aW9uOwotCi0gIHByaXZhdGUgTWVzc2FnZSBjdXJyZW50TWVzc2FnZTsKLQotICBwcml2YXRlIFNlcnZpY2UgY3VycmVudFNlcnZpY2U7Ci0KLSAgcHJpdmF0ZSBQb3J0VHlwZSBjdXJyZW50UG9ydFR5cGU7Ci0KLSAgcHJpdmF0ZSBPcGVyYXRpb24gY3VycmVudE9wZXJhdGlvbjsKLQotICBwcml2YXRlIEJpbmRpbmcgY3VycmVudEJpbmRpbmc7Ci0KLSAgcHJpdmF0ZSBCaW5kaW5nT3BlcmF0aW9uIGN1cnJlbnRCaW5kaW5nT3BlcmF0aW9uOwotCi0gIHByaXZhdGUgRXh0ZW5zaWJsZUVsZW1lbnQgY3VycmVudEV4dGVuc2libGVFbGVtZW50OwotCi0gIC8vIEFkZGVkIGZvciBKVW5pdAotICBwdWJsaWMgV1NETEVNRkFQSVRlc3QoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBAcGFyYW0gZGVmaW5pdGlvbgotICAgKi8KLSAgcHVibGljIFdTRExFTUZBUElUZXN0KERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgIHN1cGVyKGRlZmluaXRpb24pOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXREZWZpbml0aW9uKERlZmluaXRpb24gZGVmKQotICB7Ci0gICAgLy8gVXNlIFdTRExFbGVtZW50IHRvIGluY3JlYXNlIHRoZSBBUEkgY292ZXJhZ2UgaW4gdGhlIHJlcG9ydHMKLSAgICBXU0RMRWxlbWVudCByb290ID0gZmFjdG9yeS5jcmVhdGVEZWZpbml0aW9uKCk7Ci0gICAgbmV3RGVmaW5pdGlvbiA9IChEZWZpbml0aW9uKXJvb3Q7Ci0KLSAgICByb290LnNldERvY3VtZW50YXRpb25FbGVtZW50KGRlZi5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICByb290LmdldERvY3VtZW50YXRpb25FbGVtZW50KCk7Ci0gICAgcm9vdC5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKG5ld0RlZmluaXRpb24pOwotICAgIHJvb3QuZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAgIHJvb3QuZ2V0Q29udGFpbmVyKCk7Ci0KLSAgICBuZXdEZWZpbml0aW9uLnNldFFOYW1lKGRlZi5nZXRRTmFtZSgpKTsKLSAgICBuZXdEZWZpbml0aW9uLnNldFRhcmdldE5hbWVzcGFjZShkZWYuZ2V0VGFyZ2V0TmFtZXNwYWNlKCkpOwotICAgIG5ld0RlZmluaXRpb24uc2V0RG9jdW1lbnRCYXNlVVJJKGRlZi5nZXREb2N1bWVudEJhc2VVUkkoKSk7Ci0gICAgbmV3RGVmaW5pdGlvbi5zZXRMb2NhdGlvbihkZWYuZ2V0TG9jYXRpb24oKSk7Ci0gICAgbmV3RGVmaW5pdGlvbi5zZXRFbmNvZGluZyhkZWYuZ2V0RW5jb2RpbmcoKSk7Ci0KLSAgICAvLyBnZXRFTmFtZXNwYWNlcyBkb2VzIG5vdCB3b3JrLgotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gZGVmLmdldEVOYW1lc3BhY2VzKCkuaXRlcmF0b3IoKTsKLSAgICBOYW1lc3BhY2UgbnMgPSBudWxsOwotICAgIFN0cmluZyBwcmVmaXggPSBudWxsOwotICAgIFN0cmluZyB1cmkgPSBudWxsOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgbnMgPSBmYWN0b3J5LmNyZWF0ZU5hbWVzcGFjZSgpOwotICAgICAgcHJlZml4ID0gKChOYW1lc3BhY2UpaXRlcmF0b3IubmV4dCgpKS5nZXRQcmVmaXgoKTsKLSAgICAgIHVyaSA9ICgoTmFtZXNwYWNlKWl0ZXJhdG9yLm5leHQoKSkuZ2V0VVJJKCk7Ci0gICAgICBucy5zZXRVUkkodXJpKTsKLSAgICAgIG5zLnNldFByZWZpeChwcmVmaXgpOwotICAgICAgbmV3RGVmaW5pdGlvbi5nZXRFTmFtZXNwYWNlcygpLmFkZChucyk7Ci0gICAgfQotCi0gICAgaXRlcmF0b3IgPSBkZWYuZ2V0TmFtZXNwYWNlcygpLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgcHJlZml4ID0gbnVsbDsKLSAgICBTdHJpbmcgbmFtZXNwYWNlID0gbnVsbDsKLQotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgcHJlZml4ID0gKFN0cmluZylpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBuYW1lc3BhY2UgPSBkZWYuZ2V0TmFtZXNwYWNlKHByZWZpeCk7Ci0gICAgICBuZXdEZWZpbml0aW9uLmFkZE5hbWVzcGFjZShwcmVmaXgsIG5hbWVzcGFjZSk7Ci0gICAgfQotICAgIC8vbmV3RGVmaW5pdGlvbi51cGRhdGVFbGVtZW50KCk7Ci0KLSAgICBjdXJyZW50RXh0ZW5zaWJsZUVsZW1lbnQgPSBkZWY7Ci0gICAgc3VwZXIudmlzaXREZWZpbml0aW9uKGRlZik7Ci0KLSAgICByb290LnNldEVsZW1lbnQobnVsbCk7Ci0gICAgcm9vdC51cGRhdGVFbGVtZW50KHRydWUpOwotICAgIHJvb3QuZ2V0RWxlbWVudCgpOwotICAgIHJvb3Quc2V0RWxlbWVudChudWxsKTsKLSAgICByb290LnVwZGF0ZUVsZW1lbnQoKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0SW1wb3J0KEltcG9ydCB3c2RsSW1wb3J0KQotICB7Ci0gICAgSW1wb3J0IG15SW1wb3J0ID0gZmFjdG9yeS5jcmVhdGVJbXBvcnQoKTsKLSAgICBuZXdEZWZpbml0aW9uLmdldEVJbXBvcnRzKCkuYWRkKG15SW1wb3J0KTsKLQotICAgIC8vIGUuZy4gPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly9mb28uY29tIiBzY2hlbWFMb2NhdGlvbj0gImJhci54c2QiLz4KLSAgICBteUltcG9ydC5zZXROYW1lc3BhY2VVUkkod3NkbEltcG9ydC5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgbXlJbXBvcnQuc2V0TG9jYXRpb25VUkkod3NkbEltcG9ydC5nZXRMb2NhdGlvblVSSSgpKTsKLSAgICBteUltcG9ydC5zZXREb2N1bWVudGF0aW9uRWxlbWVudCh3c2RsSW1wb3J0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIG15SW1wb3J0LnNldEVEZWZpbml0aW9uKHdzZGxJbXBvcnQuZ2V0RURlZmluaXRpb24oKSk7Ci0gICAgbXlJbXBvcnQuc2V0RVNjaGVtYSh3c2RsSW1wb3J0LmdldEVTY2hlbWEoKSk7Ci0gICAgbXlJbXBvcnQuc2V0U2NoZW1hKHdzZGxJbXBvcnQuZ2V0U2NoZW1hKCkpOwotICAgIG15SW1wb3J0LnNldEVuY2xvc2luZ0RlZmluaXRpb24obmV3RGVmaW5pdGlvbik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFR5cGVzKFR5cGVzIHR5cGVzKQotICB7Ci0gICAgVHlwZXMgbXlUeXBlcyA9IGZhY3RvcnkuY3JlYXRlVHlwZXMoKTsKLSAgICBteVR5cGVzLnNldERvY3VtZW50YXRpb25FbGVtZW50KHR5cGVzLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSB0eXBlcy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBlZSA9IG51bGw7Ci0gICAgdHlwZXMuZ2V0U2NoZW1hcygiaHR0cDovL3RlbXB1cmkub3JnL0xvYWRBbmRQcmludFRlc3QvIik7Ci0KLSAgICBjdXJyZW50RXh0ZW5zaWJsZUVsZW1lbnQgPSBteVR5cGVzOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgZWUgPSAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpOwotICAgICAgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudChlZSk7Ci0gICAgfQotCi0gICAgbXlUeXBlcy5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKG5ld0RlZmluaXRpb24pOwotICAgIG5ld0RlZmluaXRpb24uZ2V0RVR5cGVzKCk7Ci0gICAgbmV3RGVmaW5pdGlvbi5zZXRFVHlwZXMobXlUeXBlcyk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFBhcnQoUGFydCBwYXJ0KQotICB7Ci0gICAgUGFydCBteVBhcnQgPSBmYWN0b3J5LmNyZWF0ZVBhcnQoKTsKLSAgICBteVBhcnQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQocGFydC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBteVBhcnQuc2V0TmFtZShwYXJ0LmdldE5hbWUoKSk7Ci0gICAgbXlQYXJ0LnNldEVsZW1lbnROYW1lKHBhcnQuZ2V0RWxlbWVudE5hbWUoKSk7Ci0gICAgbXlQYXJ0LnNldFR5cGVOYW1lKHBhcnQuZ2V0VHlwZU5hbWUoKSk7Ci0gICAgbXlQYXJ0LnNldEVNZXNzYWdlKHBhcnQuZ2V0RU1lc3NhZ2UoKSk7Ci0gICAgbXlQYXJ0LnNldEVsZW1lbnREZWNsYXJhdGlvbihwYXJ0LmdldEVsZW1lbnREZWNsYXJhdGlvbigpKTsKLSAgICBteVBhcnQuc2V0VHlwZURlZmluaXRpb24ocGFydC5nZXRUeXBlRGVmaW5pdGlvbigpKTsKLQotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gcGFydC5nZXRFeHRlbnNpb25BdHRyaWJ1dGVzKCkua2V5U2V0KCkuaXRlcmF0b3IoKTsKLSAgICBRTmFtZSBrZXkgPSBudWxsOwotICAgIFFOYW1lIHZhbHVlID0gbnVsbDsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIGtleSA9IChRTmFtZSlpdGVyYXRvci5uZXh0KCk7Ci0gICAgICB2YWx1ZSA9IChRTmFtZSlwYXJ0LmdldEV4dGVuc2lvbkF0dHJpYnV0ZShrZXkpOwotICAgICAgbXlQYXJ0LnNldEV4dGVuc2lvbkF0dHJpYnV0ZShrZXksIHZhbHVlKTsKLSAgICB9Ci0gICAgY3VycmVudE1lc3NhZ2Uuc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihuZXdEZWZpbml0aW9uKTsKLSAgICBjdXJyZW50TWVzc2FnZS5hZGRQYXJ0KG15UGFydCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFBvcnRUeXBlKFBvcnRUeXBlIHBvcnRUeXBlKQotICB7Ci0gICAgY3VycmVudFBvcnRUeXBlID0gZmFjdG9yeS5jcmVhdGVQb3J0VHlwZSgpOwotICAgIGN1cnJlbnRQb3J0VHlwZS5zZXREb2N1bWVudGF0aW9uRWxlbWVudChwb3J0VHlwZS5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBjdXJyZW50UG9ydFR5cGUuc2V0UU5hbWUocG9ydFR5cGUuZ2V0UU5hbWUoKSk7Ci0gICAgY3VycmVudFBvcnRUeXBlLnNldFVuZGVmaW5lZChwb3J0VHlwZS5pc1VuZGVmaW5lZCgpKTsKLQotICAgIGN1cnJlbnRQb3J0VHlwZS5zZXRFbmNsb3NpbmdEZWZpbml0aW9uKG5ld0RlZmluaXRpb24pOwotICAgIG5ld0RlZmluaXRpb24uZ2V0RVBvcnRUeXBlcygpLmFkZChjdXJyZW50UG9ydFR5cGUpOwotCi0gICAgc3VwZXIudmlzaXRQb3J0VHlwZShwb3J0VHlwZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdE9wZXJhdGlvbihPcGVyYXRpb24gb3BlcmF0aW9uKQotICB7Ci0gICAgY3VycmVudE9wZXJhdGlvbiA9IGZhY3RvcnkuY3JlYXRlT3BlcmF0aW9uKCk7Ci0gICAgY3VycmVudE9wZXJhdGlvbi5zZXREb2N1bWVudGF0aW9uRWxlbWVudChvcGVyYXRpb24uZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0gICAgY3VycmVudE9wZXJhdGlvbi5zZXROYW1lKG9wZXJhdGlvbi5nZXROYW1lKCkpOwotICAgIGN1cnJlbnRPcGVyYXRpb24uc2V0U3R5bGUob3BlcmF0aW9uLmdldFN0eWxlKCkpOwotICAgIGN1cnJlbnRPcGVyYXRpb24uc2V0VW5kZWZpbmVkKG9wZXJhdGlvbi5pc1VuZGVmaW5lZCgpKTsKLSAgICBvcGVyYXRpb24uZ2V0RVBhcmFtZXRlck9yZGVyaW5nKCk7IC8vIFRCRAotICAgIGN1cnJlbnRPcGVyYXRpb24uc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihuZXdEZWZpbml0aW9uKTsKLSAgICBjdXJyZW50UG9ydFR5cGUuZ2V0RU9wZXJhdGlvbnMoKS5hZGQoY3VycmVudE9wZXJhdGlvbik7Ci0KLSAgICBzdXBlci52aXNpdE9wZXJhdGlvbihvcGVyYXRpb24pOwotICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJPcGVyYXRpb24gVHlwZSBpczogIiArIG9wZXJhdGlvbi5nZXRTdHlsZSgpKTsKLSAgICAvL29wZXJhdGlvbi5zZXRTdHlsZShPcGVyYXRpb25UeXBlLlJFUVVFU1RfUkVTUE9OU0UpOwotICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJPcGVyYXRpb24gVHlwZSBpczogIiArIG9wZXJhdGlvbi5nZXRTdHlsZSgpKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0TWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpCi0gIHsKLSAgICBjdXJyZW50TWVzc2FnZSA9IGZhY3RvcnkuY3JlYXRlTWVzc2FnZSgpOwotICAgIGN1cnJlbnRNZXNzYWdlLnNldFFOYW1lKG1lc3NhZ2UuZ2V0UU5hbWUoKSk7Ci0gICAgY3VycmVudE1lc3NhZ2Uuc2V0VW5kZWZpbmVkKG1lc3NhZ2UuaXNVbmRlZmluZWQoKSk7Ci0gICAgbmV3RGVmaW5pdGlvbi5hZGRNZXNzYWdlKGN1cnJlbnRNZXNzYWdlKTsKLQotICAgIHN1cGVyLnZpc2l0TWVzc2FnZShtZXNzYWdlKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0SW5wdXQoSW5wdXQgaW5wdXQpCi0gIHsKLSAgICBNZXNzYWdlUmVmZXJlbmNlIG15SW5wdXQgPSBmYWN0b3J5LmNyZWF0ZUlucHV0KCk7Ci0gICAgbXlJbnB1dC5zZXREb2N1bWVudGF0aW9uRWxlbWVudChpbnB1dC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBteUlucHV0LnNldE5hbWUoaW5wdXQuZ2V0TmFtZSgpKTsKLSAgICBteUlucHV0LmdldE5hbWUoKTsKLSAgICBteUlucHV0LnNldEVNZXNzYWdlKGlucHV0LmdldEVNZXNzYWdlKCkpOwotICAgIG15SW5wdXQuc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihuZXdEZWZpbml0aW9uKTsKLSAgICBjdXJyZW50T3BlcmF0aW9uLnNldEVJbnB1dCgoSW5wdXQpbXlJbnB1dCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdE91dHB1dChPdXRwdXQgb3V0cHV0KQotICB7Ci0gICAgT3V0cHV0IG15T3V0cHV0ID0gZmFjdG9yeS5jcmVhdGVPdXRwdXQoKTsKLSAgICBteU91dHB1dC5zZXREb2N1bWVudGF0aW9uRWxlbWVudChvdXRwdXQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSk7Ci0gICAgbXlPdXRwdXQuc2V0TmFtZShvdXRwdXQuZ2V0TmFtZSgpKTsKLSAgICBteU91dHB1dC5zZXRFTWVzc2FnZShvdXRwdXQuZ2V0RU1lc3NhZ2UoKSk7Ci0gICAgbXlPdXRwdXQuc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihuZXdEZWZpbml0aW9uKTsKLSAgICBjdXJyZW50T3BlcmF0aW9uLnNldEVPdXRwdXQobXlPdXRwdXQpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRGYXVsdChGYXVsdCBmYXVsdCkKLSAgewotICAgIEZhdWx0IG15RmF1bHQgPSBmYWN0b3J5LmNyZWF0ZUZhdWx0KCk7Ci0gICAgbXlGYXVsdC5zZXREb2N1bWVudGF0aW9uRWxlbWVudChmYXVsdC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBteUZhdWx0LnNldE5hbWUoZmF1bHQuZ2V0TmFtZSgpKTsKLSAgICBteUZhdWx0LnNldEVNZXNzYWdlKGZhdWx0LmdldEVNZXNzYWdlKCkpOwotICAgIG15RmF1bHQuc2V0RW5jbG9zaW5nRGVmaW5pdGlvbihuZXdEZWZpbml0aW9uKTsKLSAgICBjdXJyZW50T3BlcmF0aW9uLmdldEVGYXVsdHMoKS5hZGQobXlGYXVsdCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmcoQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgY3VycmVudEJpbmRpbmcgPSBmYWN0b3J5LmNyZWF0ZUJpbmRpbmcoKTsKLSAgICBuZXdEZWZpbml0aW9uLmdldEVCaW5kaW5ncygpLmFkZChjdXJyZW50QmluZGluZyk7Ci0KLSAgICBjdXJyZW50QmluZGluZy5zZXREb2N1bWVudGF0aW9uRWxlbWVudChiaW5kaW5nLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIGN1cnJlbnRCaW5kaW5nLnNldFFOYW1lKGJpbmRpbmcuZ2V0UU5hbWUoKSk7Ci0gICAgY3VycmVudEJpbmRpbmcuc2V0RVBvcnRUeXBlKGJpbmRpbmcuZ2V0RVBvcnRUeXBlKCkpOwotICAgIGN1cnJlbnRCaW5kaW5nLnNldFVuZGVmaW5lZChiaW5kaW5nLmlzVW5kZWZpbmVkKCkpOwotCi0gICAgY3VycmVudEV4dGVuc2libGVFbGVtZW50ID0gY3VycmVudEJpbmRpbmc7Ci0gICAgc3VwZXIudmlzaXRCaW5kaW5nKGJpbmRpbmcpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRCaW5kaW5nT3BlcmF0aW9uKEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbikKLSAgewotICAgIGN1cnJlbnRCaW5kaW5nT3BlcmF0aW9uID0gZmFjdG9yeS5jcmVhdGVCaW5kaW5nT3BlcmF0aW9uKCk7Ci0gICAgY3VycmVudEJpbmRpbmdPcGVyYXRpb24uc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoYmluZGluZ09wZXJhdGlvbi5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBjdXJyZW50QmluZGluZ09wZXJhdGlvbi5zZXRFT3BlcmF0aW9uKGJpbmRpbmdPcGVyYXRpb24uZ2V0RU9wZXJhdGlvbigpKTsKLSAgICBjdXJyZW50QmluZGluZ09wZXJhdGlvbi5zZXROYW1lKGJpbmRpbmdPcGVyYXRpb24uZ2V0TmFtZSgpKTsKLSAgICBjdXJyZW50QmluZGluZy5nZXRCaW5kaW5nT3BlcmF0aW9ucygpLmFkZChjdXJyZW50QmluZGluZ09wZXJhdGlvbik7Ci0KLSAgICBjdXJyZW50RXh0ZW5zaWJsZUVsZW1lbnQgPSBjdXJyZW50QmluZGluZ09wZXJhdGlvbjsKLSAgICBzdXBlci52aXNpdEJpbmRpbmdPcGVyYXRpb24oYmluZGluZ09wZXJhdGlvbik7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmdJbnB1dChCaW5kaW5nSW5wdXQgaW5wdXQpCi0gIHsKLSAgICBCaW5kaW5nSW5wdXQgbXlJbnB1dCA9IGZhY3RvcnkuY3JlYXRlQmluZGluZ0lucHV0KCk7Ci0gICAgbXlJbnB1dC5zZXREb2N1bWVudGF0aW9uRWxlbWVudChpbnB1dC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBteUlucHV0LnNldE5hbWUoaW5wdXQuZ2V0TmFtZSgpKTsKLSAgICBteUlucHV0LnNldElucHV0KGlucHV0LmdldElucHV0KCkpOwotICAgIG15SW5wdXQuc2V0RUlucHV0KGlucHV0LmdldEVJbnB1dCgpKTsKLSAgICBjdXJyZW50QmluZGluZ09wZXJhdGlvbi5zZXRFQmluZGluZ0lucHV0KG15SW5wdXQpOwotCi0gICAgY3VycmVudEV4dGVuc2libGVFbGVtZW50ID0gbXlJbnB1dDsKLSAgICBzdXBlci52aXNpdEJpbmRpbmdJbnB1dChpbnB1dCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmdPdXRwdXQoQmluZGluZ091dHB1dCBvdXRwdXQpCi0gIHsKLSAgICBCaW5kaW5nT3V0cHV0IG15T3V0cHV0ID0gZmFjdG9yeS5jcmVhdGVCaW5kaW5nT3V0cHV0KCk7Ci0gICAgbXlPdXRwdXQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQob3V0cHV0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIG15T3V0cHV0LnNldE5hbWUob3V0cHV0LmdldE5hbWUoKSk7Ci0gICAgbXlPdXRwdXQuc2V0T3V0cHV0KG91dHB1dC5nZXRPdXRwdXQoKSk7Ci0gICAgbXlPdXRwdXQuc2V0RU91dHB1dChvdXRwdXQuZ2V0RU91dHB1dCgpKTsKLSAgICBjdXJyZW50QmluZGluZ09wZXJhdGlvbi5zZXRFQmluZGluZ091dHB1dChteU91dHB1dCk7Ci0KLSAgICBjdXJyZW50RXh0ZW5zaWJsZUVsZW1lbnQgPSBteU91dHB1dDsKLSAgICBzdXBlci52aXNpdEJpbmRpbmdPdXRwdXQob3V0cHV0KTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ0ZhdWx0KEJpbmRpbmdGYXVsdCBmYXVsdCkKLSAgewotICAgIEJpbmRpbmdGYXVsdCBteUZhdWx0ID0gZmFjdG9yeS5jcmVhdGVCaW5kaW5nRmF1bHQoKTsKLSAgICBteUZhdWx0LnNldERvY3VtZW50YXRpb25FbGVtZW50KGZhdWx0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIG15RmF1bHQuc2V0TmFtZShmYXVsdC5nZXROYW1lKCkpOwotICAgIG15RmF1bHQuc2V0RUZhdWx0KGZhdWx0LmdldEVGYXVsdCgpKTsKLSAgICBteUZhdWx0LnNldEZhdWx0KGZhdWx0LmdldEZhdWx0KCkpOwotICAgIGN1cnJlbnRCaW5kaW5nT3BlcmF0aW9uLmdldEVCaW5kaW5nRmF1bHRzKCkuYWRkKG15RmF1bHQpOwotCi0gICAgY3VycmVudEV4dGVuc2libGVFbGVtZW50ID0gbXlGYXVsdDsKLSAgICBzdXBlci52aXNpdEJpbmRpbmdGYXVsdChmYXVsdCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFNlcnZpY2UoU2VydmljZSBzZXJ2aWNlKQotICB7Ci0gICAgY3VycmVudFNlcnZpY2UgPSBmYWN0b3J5LmNyZWF0ZVNlcnZpY2UoKTsKLSAgICBjdXJyZW50U2VydmljZS5zZXREb2N1bWVudGF0aW9uRWxlbWVudChzZXJ2aWNlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCkpOwotICAgIGN1cnJlbnRTZXJ2aWNlLnNldFFOYW1lKHNlcnZpY2UuZ2V0UU5hbWUoKSk7Ci0gICAgY3VycmVudFNlcnZpY2Uuc2V0VW5kZWZpbmVkKHNlcnZpY2UuaXNVbmRlZmluZWQoKSk7Ci0KLSAgICBuZXdEZWZpbml0aW9uLmdldEVTZXJ2aWNlcygpLmFkZChjdXJyZW50U2VydmljZSk7Ci0KLSAgICBzdXBlci52aXNpdFNlcnZpY2Uoc2VydmljZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFBvcnQoUG9ydCBwb3J0KQotICB7Ci0gICAgUG9ydCBteVBvcnQgPSBmYWN0b3J5LmNyZWF0ZVBvcnQoKTsKLSAgICBteVBvcnQuc2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQocG9ydC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpKTsKLSAgICBteVBvcnQuc2V0TmFtZShwb3J0LmdldE5hbWUoKSk7Ci0gICAgbXlQb3J0LnNldEVCaW5kaW5nKHBvcnQuZ2V0RUJpbmRpbmcoKSk7Ci0KLSAgICBjdXJyZW50U2VydmljZS5nZXRFUG9ydHMoKS5hZGQobXlQb3J0KTsKLQotICAgIGN1cnJlbnRFeHRlbnNpYmxlRWxlbWVudCA9IG15UG9ydDsKLSAgICBzdXBlci52aXNpdFBvcnQocG9ydCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KEV4dGVuc2libGVFbGVtZW50IG93bmVyLCBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCkKLSAgewotICAgIC8vIFRvIG1vdmUgdXAgdGhlIEFQSSB0ZXN0IGNvdmVyYWdlCi0gICAgb3duZXIuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIG93bmVyLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgIGZhY3RvcnkuY3JlYXRlRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICBXU0RMUGx1Z2luLmdldFBsdWdpbigpOwotICAgIFdTRExQbHVnaW4uSU5TVEFOQ0UuZ2V0UGx1Z2luUmVzb3VyY2VMb2NhdG9yKCk7Ci0KLSAgICB2aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KGV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCB2aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dGVuc2liaWxpdHlFbGVtZW50KQotICB7Ci0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgeHNlZSA9IG51bGw7Ci0gICAgVW5rbm93bkV4dGVuc2liaWxpdHlFbGVtZW50IHVlZSA9IG51bGw7Ci0gICAgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgbXlFRSA9IG51bGw7Ci0gICAgaWYgKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi0gICAgewotICAgICAgbXlFRSA9IGZhY3RvcnkuY3JlYXRlWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQoKTsKLSAgICAgIHhzZWUgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpbXlFRTsKLSAgICAgIHhzZWUuc2V0U2NoZW1hKCgoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpZXh0ZW5zaWJpbGl0eUVsZW1lbnQpLmdldFNjaGVtYSgpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIG15RUUgPSBmYWN0b3J5LmNyZWF0ZVVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudCgpOwotICAgICAgdWVlID0gKFVua25vd25FeHRlbnNpYmlsaXR5RWxlbWVudClteUVFOwotICAgICAgdWVlLmdldENoaWxkcmVuKCk7IC8vIFRCRAotICAgIH0KLSAgICBteUVFLnNldEVsZW1lbnRUeXBlKGV4dGVuc2liaWxpdHlFbGVtZW50LmdldEVsZW1lbnRUeXBlKCkpOwotICAgIG15RUUuc2V0UmVxdWlyZWQoZXh0ZW5zaWJpbGl0eUVsZW1lbnQuZ2V0UmVxdWlyZWQoKSk7Ci0gICAgbXlFRS5zZXRSZXF1aXJlZChleHRlbnNpYmlsaXR5RWxlbWVudC5pc1JlcXVpcmVkKCkpOwotICAgIGlmIChjdXJyZW50RXh0ZW5zaWJsZUVsZW1lbnQgIT0gbnVsbCkKLSAgICAgIGN1cnJlbnRFeHRlbnNpYmxlRWxlbWVudC5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChteUVFKTsKLQotICAgIGlmIChleHRlbnNpYmlsaXR5RWxlbWVudCBpbnN0YW5jZW9mIFNPQVBCb2R5KQotICAgICAgdmlzaXRTT0FQQm9keSgoU09BUEJvZHkpZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgIGVsc2UgaWYgKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgU09BUEJpbmRpbmcpCi0gICAgICB2aXNpdFNPQVBCaW5kaW5nKChTT0FQQmluZGluZylleHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoZXh0ZW5zaWJpbGl0eUVsZW1lbnQgaW5zdGFuY2VvZiBTT0FQQWRkcmVzcykKLSAgICAgIHZpc2l0U09BUEFkZHJlc3MoKFNPQVBBZGRyZXNzKWV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICBlbHNlIGlmIChleHRlbnNpYmlsaXR5RWxlbWVudCBpbnN0YW5jZW9mIFNPQVBPcGVyYXRpb24pCi0gICAgICB2aXNpdFNPQVBPcGVyYXRpb24oKFNPQVBPcGVyYXRpb24pZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICAgIGVsc2UgaWYgKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgU09BUEZhdWx0KQotICAgICAgdmlzaXRTT0FQRmF1bHQoKFNPQVBGYXVsdClleHRlbnNpYmlsaXR5RWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoZXh0ZW5zaWJpbGl0eUVsZW1lbnQgaW5zdGFuY2VvZiBTT0FQSGVhZGVyKQotICAgICAgdmlzaXRTT0FQSGVhZGVyKChTT0FQSGVhZGVyKWV4dGVuc2liaWxpdHlFbGVtZW50KTsKLSAgICBlbHNlIGlmIChleHRlbnNpYmlsaXR5RWxlbWVudCBpbnN0YW5jZW9mIFNPQVBIZWFkZXJGYXVsdCkKLSAgICAgIHZpc2l0U09BUEhlYWRlckZhdWx0KChTT0FQSGVhZGVyRmF1bHQpZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHZpc2l0U09BUEZhdWx0KFNPQVBGYXVsdCBzb2FwRmF1bHQpCi0gIHsKLSAgICBTT0FQRmF1bHQgbXlTb2FwRmF1bHQgPSBTT0FQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU09BUEZhdWx0KCk7Ci0gICAgbXlTb2FwRmF1bHQuc2V0RW5jb2RpbmdTdHlsZXMoc29hcEZhdWx0LmdldEVuY29kaW5nU3R5bGVzKCkpOwotICAgIG15U29hcEZhdWx0LnNldE5hbWUoc29hcEZhdWx0LmdldE5hbWUoKSk7Ci0gICAgbXlTb2FwRmF1bHQuc2V0TmFtZXNwYWNlVVJJKHNvYXBGYXVsdC5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgbXlTb2FwRmF1bHQuc2V0VXNlKHNvYXBGYXVsdC5nZXRVc2UoKSk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgdmlzaXRTT0FQSGVhZGVyKFNPQVBIZWFkZXIgc29hcEhlYWRlcikKLSAgewotICAgIC8vIFVzZSBTT0FQSGVhZGVyQmFzZSB0byBpbmNyZWFzZSB0aGUgQVBJIGNvdmVyYWdlIHZhbHVlcyBpbiB0aGUgcmVwb3J0cwotCi0gICAgU09BUEhlYWRlckJhc2UgeW91clNvYXBIZWFkZXIgPSBTT0FQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU09BUEhlYWRlckJhc2UoKTsKLSAgICB5b3VyU29hcEhlYWRlci5nZXRFbmNvZGluZ1N0eWxlcygpOwotCi0gICAgU09BUEhlYWRlckJhc2UgbXlTb2FwSGVhZGVyID0gU09BUEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVNPQVBIZWFkZXIoKTsKLSAgICBteVNvYXBIZWFkZXIuc2V0TWVzc2FnZShzb2FwSGVhZGVyLmdldE1lc3NhZ2UoKSk7Ci0gICAgbXlTb2FwSGVhZGVyLmdldE1lc3NhZ2UoKTsKLSAgICBteVNvYXBIZWFkZXIuc2V0UGFydChzb2FwSGVhZGVyLmdldFBhcnQoKSk7Ci0gICAgbXlTb2FwSGVhZGVyLmdldFBhcnQoKTsKLSAgICBteVNvYXBIZWFkZXIuc2V0TmFtZXNwYWNlVVJJKHNvYXBIZWFkZXIuZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgIG15U29hcEhlYWRlci5nZXROYW1lc3BhY2VVUkkoKTsKLSAgICBteVNvYXBIZWFkZXIuc2V0VXNlKHNvYXBIZWFkZXIuZ2V0VXNlKCkpOwotICAgIG15U29hcEhlYWRlci5nZXRVc2UoKTsKLSAgICAoKFNPQVBIZWFkZXIpc29hcEhlYWRlcikuZ2V0SGVhZGVyRmF1bHRzKCk7IC8vIFRCRAotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHZpc2l0U09BUEhlYWRlckZhdWx0KFNPQVBIZWFkZXJGYXVsdCBzb2FwSGVhZGVyRmF1bHQpCi0gIHsKLSAgICBTT0FQSGVhZGVyRmF1bHQgbXlTb2FwSGVhZGVyRmF1bHQgPSBTT0FQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU09BUEhlYWRlckZhdWx0KCk7Ci0gICAgbXlTb2FwSGVhZGVyRmF1bHQuc2V0TWVzc2FnZShzb2FwSGVhZGVyRmF1bHQuZ2V0TWVzc2FnZSgpKTsKLSAgICBteVNvYXBIZWFkZXJGYXVsdC5zZXRQYXJ0KHNvYXBIZWFkZXJGYXVsdC5nZXRQYXJ0KCkpOwotICAgIG15U29hcEhlYWRlckZhdWx0LnNldE5hbWVzcGFjZVVSSShzb2FwSGVhZGVyRmF1bHQuZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgIG15U29hcEhlYWRlckZhdWx0LnNldFVzZShzb2FwSGVhZGVyRmF1bHQuZ2V0VXNlKCkpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHZpc2l0U09BUE9wZXJhdGlvbihTT0FQT3BlcmF0aW9uIHNvYXBPcGVyYXRpb24pCi0gIHsKLSAgICBTT0FQT3BlcmF0aW9uIG15U29hcE9wZXJhdGlvbiA9IFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQT3BlcmF0aW9uKCk7Ci0gICAgbXlTb2FwT3BlcmF0aW9uLnNldFNvYXBBY3Rpb25VUkkoc29hcE9wZXJhdGlvbi5nZXRTb2FwQWN0aW9uVVJJKCkpOwotICAgIG15U29hcE9wZXJhdGlvbi5zZXRTdHlsZShzb2FwT3BlcmF0aW9uLmdldFN0eWxlKCkpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHZpc2l0U09BUEJvZHkoU09BUEJvZHkgc29hcEJvZHkpCi0gIHsKLSAgICBTT0FQQm9keSBteVNvYXBCb2R5ID0gU09BUEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVNPQVBCb2R5KCk7Ci0gICAgbXlTb2FwQm9keS5zZXRFbmNvZGluZ1N0eWxlcyhzb2FwQm9keS5nZXRFbmNvZGluZ1N0eWxlcygpKTsKLSAgICBteVNvYXBCb2R5LnNldE5hbWVzcGFjZVVSSShzb2FwQm9keS5nZXROYW1lc3BhY2VVUkkoKSk7Ci0gICAgbXlTb2FwQm9keS5zZXRQYXJ0cyhzb2FwQm9keS5nZXRQYXJ0cygpKTsKLSAgICBteVNvYXBCb2R5LnNldFVzZShzb2FwQm9keS5nZXRVc2UoKSk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgdmlzaXRTT0FQQmluZGluZyhTT0FQQmluZGluZyBzb2FwQmluZGluZykKLSAgewotICAgIFNPQVBCaW5kaW5nIG15U29hcEJpbmRpbmcgPSBTT0FQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU09BUEJpbmRpbmcoKTsKLSAgICBteVNvYXBCaW5kaW5nLnNldFN0eWxlKHNvYXBCaW5kaW5nLmdldFN0eWxlKCkpOwotICAgIG15U29hcEJpbmRpbmcuc2V0VHJhbnNwb3J0VVJJKHNvYXBCaW5kaW5nLmdldFRyYW5zcG9ydFVSSSgpKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCB2aXNpdFNPQVBBZGRyZXNzKFNPQVBBZGRyZXNzIHNvYXBBZGRyZXNzKQotICB7Ci0gICAgU09BUEFkZHJlc3MgbXlTb2FwQWRkcmVzcyA9IFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQQWRkcmVzcygpOwotICAgIG15U29hcEFkZHJlc3Muc2V0TG9jYXRpb25VUkkoc29hcEFkZHJlc3MuZ2V0TG9jYXRpb25VUkkoKSk7Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZSgpOwotCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgV1NETEVNRkFQSVRlc3QoIk1vZGVsU2VtYW50aWNUZXN0IikKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0TW9kZWxTZW1hbnRpYygpOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICByZXR1cm4gc3VpdGU7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0TW9kZWxTZW1hbnRpYygpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0xvYWRTdG9yZUNvbXBhcmUvTG9hZEFuZFByaW50VGVzdC53c2RsIiwgdHJ1ZSk7Ci0gICAgICBXU0RMRU1GQVBJVGVzdCB0ZXN0ID0gbmV3IFdTRExFTUZBUElUZXN0KGRlZik7Ci0gICAgICB0ZXN0LnZpc2l0KCk7Ci0gICAgICBzZXJpYWxpemUodGVzdC5uZXdEZWZpbml0aW9uKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICBBc3NlcnQuZmFpbChlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBzZXJpYWxpemUoRGVmaW5pdGlvbiBkZWYpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIFJlc291cmNlU2V0IHJlc291cmNlU2V0ID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOwotICAgIHJlc291cmNlU2V0LmdldFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5KCkuZ2V0RXh0ZW5zaW9uVG9GYWN0b3J5TWFwKCkucHV0KCJ3c2RsIiwgbmV3IFdTRExSZXNvdXJjZUZhY3RvcnlJbXBsKCkpOwotICAgIFdTRExSZXNvdXJjZUltcGwgd3NkbE1haW5SZXNvdXJjZSA9IChXU0RMUmVzb3VyY2VJbXBsKXJlc291cmNlU2V0LmNyZWF0ZVJlc291cmNlKFVSSS5jcmVhdGVVUkkoIioud3NkbCIpKTsKLSAgICB3c2RsTWFpblJlc291cmNlLmdldENvbnRlbnRzKCkuYWRkKGRlZik7Ci0KLSAgICBJV29ya3NwYWNlUm9vdCBteVdvcmtzcGFjZVJvb3QgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpOwotICAgIElQcm9qZWN0IG15V2ViUHJvamVjdCA9IG15V29ya3NwYWNlUm9vdC5nZXRQcm9qZWN0KCJvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cyIpOwotICAgIGlmICghbXlXZWJQcm9qZWN0LmV4aXN0cygpKQotICAgICAgbXlXZWJQcm9qZWN0LmNyZWF0ZShudWxsKTsKLQotICAgIFN0cmluZyBiYXNlRGlyID0gbXlXZWJQcm9qZWN0LmdldExvY2F0aW9uKCkudG9TdHJpbmcoKTsKLQotICAgIERlZmluaXRpb25Mb2FkZXIuc3RvcmUoZGVmLCBiYXNlRGlyICsgIi9DbG9uZWRMb2FkQW5kUHJpbnRUZXN0LndzZGwiKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCi0gIHsKLSAgICBqdW5pdC50ZXh0dWkuVGVzdFJ1bm5lci5ydW4oc3VpdGUoKSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9XU0RMR2VuZXJhdGlvblRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9XU0RMR2VuZXJhdGlvblRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdhOWI1Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvV1NETEdlbmVyYXRpb25UZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0czsKLQotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5Bc3NlcnQ7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2VTZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLmltcGwuUmVzb3VyY2VTZXRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEFkZHJlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQm9keTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmltcGwuU09BUEJvZHlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5pbnRlcm5hbC51dGlsLlNPQVBDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMQ29uc3RhbnRzOwotCi0KLXB1YmxpYyBjbGFzcyBXU0RMR2VuZXJhdGlvblRlc3QgZXh0ZW5kcyBUZXN0Q2FzZQotewotICBwdWJsaWMgV1NETEdlbmVyYXRpb25UZXN0KCkKLSAgewotICB9Ci0KLSAgcHVibGljIFdTRExHZW5lcmF0aW9uVGVzdChTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IFdTRExHZW5lcmF0aW9uVGVzdCgiU2FtcGxlV1NETEdlbmVyYXRpb24iKQotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RTYW1wbGVXU0RMR2VuZXJhdGlvbigpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHJldHVybiBzdWl0ZTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RTYW1wbGVXU0RMR2VuZXJhdGlvbigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBnZW5lcmF0ZVRlbXBlcmF0dXJlU2VydmljZShXU0RMVGVzdHNQbHVnaW4uZ2V0SW5zdGFsbFVSTCgpICsic2FtcGxlcy9nZW5lcmF0ZWQvVGVtcGVyYXR1cmVTZXJ2aWNlLndzZGwiKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIEFzc2VydC5mYWlsKCJUZXN0IGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uOiAiICsgZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlVGVtcGVyYXR1cmVTZXJ2aWNlKFN0cmluZyBvdXRwdXRGaWxlKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBSZXNvdXJjZVNldCByZXNvdXJjZVNldCA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsKLSAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHJlc291cmNlU2V0LmNyZWF0ZVJlc291cmNlKFVSSS5jcmVhdGVGaWxlVVJJKG91dHB1dEZpbGUpKTsKLSAgICByZXNvdXJjZVNldC5nZXRSZXNvdXJjZXMoKS5hZGQocmVzb3VyY2UpOwotCi0gICAgLy8gQ3JlYXRlIGEgRGVmaW5pdGlvbiAtIFRlbXBlcmF0dXJlCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZURlZmluaXRpb24oKTsKLSAgICBkZWZpbml0aW9uLnNldFFOYW1lKG5ldyBRTmFtZShXU0RMQ29uc3RhbnRzLldTRExfTkFNRVNQQUNFX1VSSSwgIlRlbXBlcmF0dXJlIikpOwotICAgIHJlc291cmNlLmdldENvbnRlbnRzKCkuYWRkKGRlZmluaXRpb24pOwotCi0gICAgLy8gVGFyZ2V0IG5hbWVzcGFjZSAtIGh0dHA6Ly93d3cudGVtcGVyYXR1cmUuY29tCi0gICAgZGVmaW5pdGlvbi5zZXRUYXJnZXROYW1lc3BhY2UoImh0dHA6Ly93d3cudGVtcGVyYXR1cmUuY29tIik7Ci0gICAgZGVmaW5pdGlvbi5hZGROYW1lc3BhY2UoInRucyIsICJodHRwOi8vd3d3LnRlbXBlcmF0dXJlLmNvbSIpOwotCi0gICAgLy8gT3RoZXIgbmFtZXNwYWNlcyAtIHdzZGwsIHNvYXAsIHhzZAotICAgIGRlZmluaXRpb24uYWRkTmFtZXNwYWNlKCJ3c2RsIiwgV1NETENvbnN0YW50cy5XU0RMX05BTUVTUEFDRV9VUkkpOwotICAgIGRlZmluaXRpb24uYWRkTmFtZXNwYWNlKCJ4c2QiLCBXU0RMQ29uc3RhbnRzLlNDSEVNQV9GT1JfU0NIRU1BX1VSSV8yMDAxKTsKLSAgICBkZWZpbml0aW9uLmdldE5hbWVzcGFjZXMoKS5wdXQoInNvYXAiLCBTT0FQQ29uc3RhbnRzLlNPQVBfTkFNRVNQQUNFX1VSSSk7Ci0KLSAgICAvLwotICAgIC8vIExldCdzIHN0YXJ0IGJ1aWxkaW5nIHR3byBtZXNzYWdlcwotICAgIC8vCi0KLSAgICAvLyBDcmVhdGUgYSBQYXJ0IC0gWmlwQ29kZQotICAgIFBhcnQgcGFydCA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVQYXJ0KCk7Ci0gICAgcGFydC5zZXROYW1lKCJaaXBDb2RlIik7Ci0gICAgcGFydC5zZXRUeXBlTmFtZShuZXcgUU5hbWUoV1NETENvbnN0YW50cy5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMSwgInN0cmluZyIpKTsKLQotICAgIC8vIENyZWF0ZSBhIE1lc3NhZ2UgLSBHZXRUZW1wZXJhdHVyZUlucHV0Ci0gICAgTWVzc2FnZSBpbnB1dE1lc3NhZ2UgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlTWVzc2FnZSgpOwotICAgIGlucHV0TWVzc2FnZS5zZXRRTmFtZShuZXcgUU5hbWUoZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKSwgIkdldFRlbXBlcmF0dXJlSW5wdXQiKSk7Ci0gICAgaW5wdXRNZXNzYWdlLmFkZFBhcnQocGFydCk7Ci0gICAgZGVmaW5pdGlvbi5hZGRNZXNzYWdlKGlucHV0TWVzc2FnZSk7Ci0KLSAgICAvLyBDcmVhdGUgYSBQYXJ0IC0gVGVtcGVyYXR1cmUKLSAgICBwYXJ0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVBhcnQoKTsKLSAgICBwYXJ0LnNldE5hbWUoIlRlbXBlcmF0dXJlIik7Ci0gICAgcGFydC5zZXRUeXBlTmFtZShuZXcgUU5hbWUoV1NETENvbnN0YW50cy5TQ0hFTUFfRk9SX1NDSEVNQV9VUklfMjAwMSwgImZsb2F0IikpOwotCi0gICAgLy8gQ3JlYXRlIGEgTWVzc2FnZSAtIEdldFRlbXBlcmF0dXJlT3V0cHV0Ci0gICAgTWVzc2FnZSBvdXRwdXRNZXNzYWdlID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZU1lc3NhZ2UoKTsKLSAgICBvdXRwdXRNZXNzYWdlLnNldFFOYW1lKG5ldyBRTmFtZShkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpLCAiR2V0VGVtcGVyYXR1cmVPdXRwdXQiKSk7Ci0gICAgb3V0cHV0TWVzc2FnZS5hZGRQYXJ0KHBhcnQpOwotICAgIGRlZmluaXRpb24uYWRkTWVzc2FnZShvdXRwdXRNZXNzYWdlKTsKLQotICAgIC8vCi0gICAgLy8gTmV4dCwgYnVpbGQgYSBQb3J0VHlwZQotICAgIC8vCi0KLSAgICAvLyBDcmVhdGUgYW4gSW5wdXQgLSBHZXRUZW1wZXJhdHVyZUlucHV0Ci0gICAgSW5wdXQgaW5wdXQgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlSW5wdXQoKTsKLSAgICBpbnB1dC5zZXRNZXNzYWdlKGlucHV0TWVzc2FnZSk7Ci0KLSAgICAvLyBDcmVhdGUgYW4gT3V0cHV0IC0gR2V0VGVtcGVyYXR1cmVPdXRwdXQKLSAgICBPdXRwdXQgb3V0cHV0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZU91dHB1dCgpOwotICAgIG91dHB1dC5zZXRNZXNzYWdlKG91dHB1dE1lc3NhZ2UpOwotCi0gICAgLy8gQ3JlYXRlIGFuIE9wZXJhdGlvbiAtIEdldFRlbXBlcmF0dXJlRm9yWmlwQ29kZQotICAgIE9wZXJhdGlvbiBvcGVyYXRpb24gPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlT3BlcmF0aW9uKCk7Ci0gICAgb3BlcmF0aW9uLnNldE5hbWUoIkdldFRlbXBlcmF0dXJlRm9yWmlwQ29kZSIpOwotICAgIG9wZXJhdGlvbi5zZXRJbnB1dChpbnB1dCk7Ci0gICAgb3BlcmF0aW9uLnNldE91dHB1dChvdXRwdXQpOwotCi0gICAgLy8gQ3JlYXRlIGEgUG9ydFR5cGUKLSAgICBQb3J0VHlwZSBwb3J0VHlwZSA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVQb3J0VHlwZSgpOwotICAgIHBvcnRUeXBlLnNldFFOYW1lKG5ldyBRTmFtZShkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpLCAiR2V0VGVtcGVyYXR1cmVJbmZvU09BUCIpKTsKLSAgICBwb3J0VHlwZS5hZGRPcGVyYXRpb24ob3BlcmF0aW9uKTsKLSAgICBkZWZpbml0aW9uLmFkZFBvcnRUeXBlKHBvcnRUeXBlKTsKLQotICAgIC8vCi0gICAgLy8gTm93LCBsZXQncyB3b3JrIG9uIEJpbmRpbmcKLSAgICAvLwotCi0gICAgLy8gQ3JlYXRlIGEgQmluZGluZyAtIEdldFRlbXBlcmF0dXJlSW5mb1NPQVAKLSAgICBCaW5kaW5nIGJpbmRpbmcgPSBXU0RMRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlQmluZGluZygpOwotICAgIGJpbmRpbmcuc2V0UU5hbWUobmV3IFFOYW1lKGRlZmluaXRpb24uZ2V0VGFyZ2V0TmFtZXNwYWNlKCksICJHZXRUZW1wZXJhdHVyZUluZm9TT0FQIikpOwotICAgIGJpbmRpbmcuc2V0UG9ydFR5cGUocG9ydFR5cGUpOwotICAgIGRlZmluaXRpb24uYWRkQmluZGluZyhiaW5kaW5nKTsKLQotICAgIC8vIENyZWF0ZSBhIFNPQVAgQmluZGluZwotICAgIFNPQVBCaW5kaW5nIHNvYXBCaW5kaW5nID0gU09BUEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVNPQVBCaW5kaW5nKCk7Ci0gICAgc29hcEJpbmRpbmcuc2V0U3R5bGUoInJwYyIpOwotICAgIHNvYXBCaW5kaW5nLnNldFRyYW5zcG9ydFVSSSgiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIik7Ci0gICAgYmluZGluZy5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwQmluZGluZyk7Ci0KLSAgICAvLyBDcmVhdGUgYSBCaW5kaW5nIE9wZXJhdGlvbgotICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVCaW5kaW5nT3BlcmF0aW9uKCk7Ci0gICAgYmluZGluZ09wZXJhdGlvbi5zZXROYW1lKCJHZXRUZW1wZXJhdHVyZUZvclppcENvZGUiKTsKLSAgICBiaW5kaW5nLmFkZEJpbmRpbmdPcGVyYXRpb24oYmluZGluZ09wZXJhdGlvbik7Ci0KLSAgICAvLyBDcmVhdGUgYSBTT0FQIE9wZXJhdGlvbgotICAgIFNPQVBPcGVyYXRpb24gc29hcE9wZXJhdGlvbiA9IFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQT3BlcmF0aW9uKCk7Ci0gICAgc29hcE9wZXJhdGlvbi5zZXRTb2FwQWN0aW9uVVJJKCJodHRwOi8vd3d3LnRlbXBlcmF0dXJlLmNvbS9HZXRUZW1wZXJhdHVyZUZvclppcENvZGUiKTsKLSAgICBiaW5kaW5nT3BlcmF0aW9uLmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBPcGVyYXRpb24pOwotCi0gICAgLy8gQ3JlYXRlIGEgU09BUCBCb2R5Ci0gICAgU09BUEJvZHkgc29hcEJvZHkgPSBTT0FQRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU09BUEJvZHkoKTsKLSAgICBzb2FwQm9keS5zZXRVc2UoImVuY29kZWQiKTsKLSAgICBzb2FwQm9keS5nZXRFbmNvZGluZ1N0eWxlcygpLmFkZCgiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iKTsKLSAgICBzb2FwQm9keS5zZXROYW1lc3BhY2VVUkkoImh0dHA6Ly93d3cudGVtcGVyYXR1cmUuY29tLyIpOwotCi0gICAgLy8gQWRkIGEgcGFydCAoVGVtcGVyYXR1cmUpIHRvIHRoZSBTT0FQIGJvZHkgKEJ1Z3ppbGxhIDEwODE3NikKLSAgICBqYXZhLnV0aWwuVmVjdG9yIHYgPSBuZXcgamF2YS51dGlsLlZlY3RvcigpOwotICAgIHYuYWRkKHBhcnQpOwotICAgIHNvYXBCb2R5LnNldFBhcnRzKHYpOwotICAgICgoU09BUEJvZHlJbXBsKXNvYXBCb2R5KS51cGRhdGVFbGVtZW50KCk7Ci0KLSAgICAvLyBDcmVhdGUgYSBCaW5kaW5nIElucHV0Ci0gICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IFdTRExGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVCaW5kaW5nSW5wdXQoKTsKLSAgICBiaW5kaW5nSW5wdXQuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoc29hcEJvZHkpOwotICAgIGJpbmRpbmdPcGVyYXRpb24uc2V0QmluZGluZ0lucHV0KGJpbmRpbmdJbnB1dCk7Ci0KLSAgICAvLyBDcmVhdGUgYSBTT0FQIEJvZHkKLSAgICBzb2FwQm9keSA9IFNPQVBGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTT0FQQm9keSgpOwotICAgIHNvYXBCb2R5LnNldFVzZSgiZW5jb2RlZCIpOwotICAgIHNvYXBCb2R5LmdldEVuY29kaW5nU3R5bGVzKCkuYWRkKCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIpOwotICAgIHNvYXBCb2R5LnNldE5hbWVzcGFjZVVSSSgiaHR0cDovL3d3dy50ZW1wZXJhdHVyZS5jb20vIik7Ci0KLSAgICAvLyBDcmVhdGUgYSBCaW5kaW5nIE91dHB1dAotICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091cHV0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUJpbmRpbmdPdXRwdXQoKTsKLSAgICBiaW5kaW5nT3VwdXQuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoc29hcEJvZHkpOwotICAgIGJpbmRpbmdPcGVyYXRpb24uc2V0QmluZGluZ091dHB1dChiaW5kaW5nT3VwdXQpOwotCi0gICAgLy8KLSAgICAvLyBGaW5hbGx5LCB3ZSBhcmUgYnVpbGRpbmcgYSBTZXJ2aWNlCi0gICAgLy8KLQotICAgIC8vIENyZWF0ZSBhIFNPQVAgQWRkcmVzcwotICAgIFNPQVBBZGRyZXNzIHNvYXBBZGRyZXNzID0gU09BUEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVNPQVBBZGRyZXNzKCk7Ci0gICAgc29hcEFkZHJlc3Muc2V0TG9jYXRpb25VUkkoImh0dHA6Ly90b2RvLXNvbWUtYWRkcmVzcy8iKTsKLQotICAgIC8vIENyZWF0ZSBhIFBvcnQgLSBHZXRUZW1wZXJhdHVyZUluZm9TT0FQCi0gICAgUG9ydCBwb3J0ID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVBvcnQoKTsKLSAgICBwb3J0LnNldE5hbWUoIkdldFRlbXBlcmF0dXJlSW5mb1NPQVAiKTsKLSAgICBwb3J0LnNldEJpbmRpbmcoYmluZGluZyk7Ci0gICAgcG9ydC5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwQWRkcmVzcyk7Ci0KLSAgICAvLyBDcmVhdGUgYSBTZXJ2aWNlIC0gVGVtcGVyYXR1cmVTZXJ2aWNlCi0gICAgU2VydmljZSBzZXJ2aWNlID0gV1NETEZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVNlcnZpY2UoKTsKLSAgICBzZXJ2aWNlLnNldFFOYW1lKG5ldyBRTmFtZShkZWZpbml0aW9uLmdldFRhcmdldE5hbWVzcGFjZSgpLCAiVGVtcGVyYXR1cmVTZXJ2aWNlIikpOwotICAgIHNlcnZpY2UuYWRkUG9ydChwb3J0KTsKLSAgICBkZWZpbml0aW9uLmFkZFNlcnZpY2Uoc2VydmljZSk7Ci0KLSAgICAvLwotICAgIC8vIFBoZXcsIHdlIGFyZSBkb25lLiBMZXQncyBzZXJpYWxpemUgaXQuCi0gICAgLy8KLQotICAgIHJlc291cmNlLnNhdmUobnVsbCk7Ci0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL1dTRExUZXN0c1BsdWdpbi5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL1dTRExUZXN0c1BsdWdpbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmQ0NjAxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9XU0RMVGVzdHNQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4goCBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDb21tb24gUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCi0goCoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHM7Ci0KLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwotCi0KLS8qKgotICogVGhlIG1haW4gcGx1Zy1pbiBjbGFzcyB0byBiZSB1c2VkIGluIHRoZSBkZXNrdG9wLgotICovCi1wdWJsaWMgY2xhc3MgV1NETFRlc3RzUGx1Z2luIGV4dGVuZHMgUGx1Z2luCi17Ci0gIC8vVGhlIHNoYXJlZCBpbnN0YW5jZS4KLSAgcHJpdmF0ZSBzdGF0aWMgV1NETFRlc3RzUGx1Z2luIHBsdWdpbjsKLQotICAvL1Jlc291cmNlIGJ1bmRsZS4KLSAgcHJpdmF0ZSBSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZUJ1bmRsZTsKLQotICBwcml2YXRlIHN0YXRpYyBCdW5kbGUgcGx1Z2luQnVuZGxlOwotCi0gIC8qKgotICAgKiBUaGUgY29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgV1NETFRlc3RzUGx1Z2luKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgcGx1Z2luID0gdGhpczsKLSAgfQotCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdXBvbiBwbHVnLWluIGFjdGl2YXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgc3VwZXIuc3RhcnQoY29udGV4dCk7Ci0gICAgcGx1Z2luQnVuZGxlID0gY29udGV4dC5nZXRCdW5kbGUoKTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgcGx1Zy1pbiBpcyBzdG9wcGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgc3VwZXIuc3RvcChjb250ZXh0KTsKLSAgICBwbHVnaW4gPSBudWxsOwotICAgIHJlc291cmNlQnVuZGxlID0gbnVsbDsKLSAgICBwbHVnaW5CdW5kbGUgPSBjb250ZXh0LmdldEJ1bmRsZSgpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgV1NETFRlc3RzUGx1Z2luIGdldERlZmF1bHQoKQotICB7Ci0gICAgcmV0dXJuIHBsdWdpbjsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgZnJvbSB0aGUgcGx1Z2luJ3MgcmVzb3VyY2UgYnVuZGxlLAotICAgKiBvciAna2V5JyBpZiBub3QgZm91bmQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRSZXNvdXJjZVN0cmluZyhTdHJpbmcga2V5KQotICB7Ci0gICAgUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gV1NETFRlc3RzUGx1Z2luLmdldERlZmF1bHQoKS5nZXRSZXNvdXJjZUJ1bmRsZSgpOwotICAgIHRyeQotICAgIHsKLSAgICAgIHJldHVybiAoYnVuZGxlICE9IG51bGwpID8gYnVuZGxlLmdldFN0cmluZyhrZXkpIDoga2V5OwotICAgIH0KLSAgICBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIGtleTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcGx1Z2luJ3MgcmVzb3VyY2UgYnVuZGxlLAotICAgKi8KLSAgcHVibGljIFJlc291cmNlQnVuZGxlIGdldFJlc291cmNlQnVuZGxlKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIGlmIChyZXNvdXJjZUJ1bmRsZSA9PSBudWxsKQotICAgICAgewotICAgICAgICByZXNvdXJjZUJ1bmRsZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSgib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMuV1NETFRlc3RzUGx1Z2luUmVzb3VyY2VzIik7Ci0gICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24geCkKLSAgICB7Ci0gICAgICByZXNvdXJjZUJ1bmRsZSA9IG51bGw7Ci0gICAgfQotICAgIHJldHVybiByZXNvdXJjZUJ1bmRsZTsKLSAgfQotCi0gIC8qKgotICAgKiBHZXQgdGhlIGluc3RhbGwgVVJMIG9mIHRoaXMgcGx1Zy1pbi4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIGluc3RhbGwgVVJMIG9mIHRoaXMgcGx1Zy1pbgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SW5zdGFsbFVSTCgpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICByZXR1cm4gRmlsZUxvY2F0b3IucmVzb2x2ZShwbHVnaW5CdW5kbGUuZ2V0RW50cnkoIi8iKSkuZ2V0RmlsZSgpOwotICAgIH0KLSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9leHRlbnNpb25zL0hUVFBFeHRlbnNpb25zVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL2V4dGVuc2lvbnMvSFRUUEV4dGVuc2lvbnNUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjOGI5OGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL2V4dGVuc2lvbnMvSFRUUEV4dGVuc2lvbnNUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLmV4dGVuc2lvbnM7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5Bc3NlcnQ7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZVNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuaW1wbC5SZXNvdXJjZVNldEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUEFkZHJlc3M7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBCaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuSFRUUFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLkhUVFBVcmxFbmNvZGVkOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuaHR0cC5IVFRQVXJsUmVwbGFjZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5odHRwLmludGVybmFsLmdlbmVyYXRvci5IVFRQQ29udGVudEdlbmVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLmh0dHAuaW50ZXJuYWwudXRpbC5IVFRQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvci5leHRlbnNpb24uQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5XU0RMVGVzdHNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uTG9hZGVyOwotCi0KLS8qKgotICogVGVzdHMgdGhlIEhUVFAgYmluZGluZyBleHRlbnNpb25zLiAKLSAqLwotcHVibGljIGNsYXNzIEhUVFBFeHRlbnNpb25zVGVzdCBleHRlbmRzIFdTRExFeHRlbnNpb25zVGVzdAotewotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUREUkVTU19MT0NBVElPTl9VUkkgPSAiaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iOyAvLyROT04tTkxTLTEkCi0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSFRUUEZhY3RvcnkgSFRUUF9GQUNUT1JZID0gSFRUUEZhY3RvcnkuZUlOU1RBTkNFOwotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIVFRQX0xPQ0FUSU9OX1VSSSA9ICJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0hUVFBUZXN0L05ld09wZXJhdGlvbiI7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9BQlNPTFVURV9QQVRIID0gV1NETFRlc3RzUGx1Z2luLmdldEluc3RhbGxVUkwoKTsKLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFSR0VUX05BTUVTUEFDRSA9ICJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0hUVFBUZXN0LyI7IC8vJE5PTi1OTFMtMSQKLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkVSQl9HRVQgPSAiR0VUIjsgLy8kTk9OLU5MUy0xJAotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBWRVJCX1BVVCA9ICJQVVQiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKLSAgewotICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLnJ1bihzdWl0ZSgpKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKCk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBIVFRQRXh0ZW5zaW9uc1Rlc3QoIkhUVFBFeHRlbnNpb25zQ3JlYXRpb24iKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdEhUVFBFeHRlbnNpb25zQ3JlYXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBIVFRQRXh0ZW5zaW9uc1Rlc3QoIkVNRlNlcmlhbGl6YXRpb24iKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdEVNRlNlcmlhbGl6YXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBIVFRQRXh0ZW5zaW9uc1Rlc3QoIkhUVFBFeHRlbnNpb25zUmVjb25jaWxpYXRpb24iKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdEhUVFBFeHRlbnNpb25zUmVjb25jaWxpYXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBIVFRQRXh0ZW5zaW9uc1Rlc3QoIkhUVFBDb250ZW50R2VuZXJhdG9yIikgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RIVFRQQ29udGVudEdlbmVyYXRvcigpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHJldHVybiBzdWl0ZTsKLSAgfQotCi0gIHB1YmxpYyBIVFRQRXh0ZW5zaW9uc1Rlc3QoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RIVFRQRXh0ZW5zaW9uc0NyZWF0aW9uKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0V4dGVuc2lvbnMvSFRUUC9IVFRQVGVzdC53c2RsIik7IC8vJE5PTi1OTFMtMSQKLQotICAgICAgU3RyaW5nIGJpbmRpbmdOYW1lID0gIkhUVFBUZXN0SFRUUCI7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFFOYW1lIGJpbmRpbmdRTmFtZSA9IG5ldyBRTmFtZShUQVJHRVRfTkFNRVNQQUNFLCBiaW5kaW5nTmFtZSk7Ci0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZylkZWZpbml0aW9uLmdldEJpbmRpbmcoYmluZGluZ1FOYW1lKTsKLQotICAgICAgYWRkSFRUUEJpbmRpbmcoYmluZGluZyk7Ci0KLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKWJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbigiTmV3T3BlcmF0aW9uIiwgbnVsbCwgbnVsbCk7IC8vJE5PTi1OTFMtMSQKLQotICAgICAgYWRkSFRUUE9wZXJhdGlvbihiaW5kaW5nT3BlcmF0aW9uKTsKLQotICAgICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0RUJpbmRpbmdJbnB1dCgpOwotCi0gICAgICBhZGRIVFRQQmluZGluZ0lucHV0KGJpbmRpbmdJbnB1dCk7Ci0KLSAgICAgIGFkZEhUVFBBZGRyZXNzKGRlZmluaXRpb24pOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0SFRUUEV4dGVuc2lvbnNSZWNvbmNpbGlhdGlvbigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9FeHRlbnNpb25zL0hUVFAvSFRUUEV4YW1wbGUud3NkbCIsIHRydWUpOyAvLyROT04tTkxTLTEkCi0KLSAgICAgIFN0cmluZyBzZXJ2aWNlTmFtZSA9ICJIVFRQRXhhbXBsZSI7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSAiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9IVFRQRXhhbXBsZS8iOyAvLyROT04tTkxTLTEkCi0gICAgICBRTmFtZSBzZXJ2aWNlUU5hbWUgPSBuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCBzZXJ2aWNlTmFtZSk7Ci0gICAgICBTZXJ2aWNlIHNlcnZpY2UgPSAoU2VydmljZSlkZWZpbml0aW9uLmdldFNlcnZpY2Uoc2VydmljZVFOYW1lKTsKLSAgICAgIHNlcnZpY2UudG9TdHJpbmcoKTsKLQotICAgICAgUG9ydCBwb3J0ID0gKFBvcnQpc2VydmljZS5nZXRQb3J0KCJIVFRQRXhhbXBsZUhUVFAiKTsgLy8kTk9OLU5MUy0xJAotICAgICAgTGlzdCBleHRlbnNpYmlsaXR5RWxlbWVudHMgPSBwb3J0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgYXNzZXJ0RXF1YWxzKDEsIGV4dGVuc2liaWxpdHlFbGVtZW50cy5zaXplKCkpOwotICAgICAgSFRUUEFkZHJlc3MgaHR0cEFkZHJlc3MgPSAoSFRUUEFkZHJlc3MpZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLmdldCgwKTsKLQotICAgICAgU3RyaW5nIGxvY2F0aW9uVVJJID0gaHR0cEFkZHJlc3MuZ2V0TG9jYXRpb25VUkkoKTsKLSAgICAgIGFzc2VydEVxdWFscygiaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLCBsb2NhdGlvblVSSSk7Ci0KLSAgICAgIGNoZWNrU3RyaW5nQXR0cmlidXRlUmVjb25jaWxpYXRpb24oCi0gICAgICAgIGh0dHBBZGRyZXNzLAotICAgICAgICBIVFRQQ29uc3RhbnRzLkxPQ0FUSU9OX1VSSV9BVFRSSUJVVEUsCi0gICAgICAgICJ0ZXN0IiwKLSAgICAgICAgSFRUUFBhY2thZ2UuTGl0ZXJhbHMuSFRUUF9BRERSRVNTX19MT0NBVElPTl9VUkkpOwotCi0gICAgICBTdHJpbmcgYmluZGluZ05hbWUgPSAiSFRUUEV4YW1wbGVIVFRQIjsgLy8kTk9OLU5MUy0xJAotICAgICAgUU5hbWUgYmluZGluZ1FOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgYmluZGluZ05hbWUpOwotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpZGVmaW5pdGlvbi5nZXRCaW5kaW5nKGJpbmRpbmdRTmFtZSk7Ci0KLSAgICAgIGV4dGVuc2liaWxpdHlFbGVtZW50cyA9IGJpbmRpbmcuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoMSwgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLnNpemUoKSk7Ci0gICAgICBIVFRQQmluZGluZyBodHRwQmluZGluZyA9IChIVFRQQmluZGluZylleHRlbnNpYmlsaXR5RWxlbWVudHMuZ2V0KDApOwotCi0gICAgICBTdHJpbmcgdmVyYiA9IGh0dHBCaW5kaW5nLmdldFZlcmIoKTsKLSAgICAgIGFzc2VydEVxdWFscyhWRVJCX0dFVCwgdmVyYik7Ci0KLSAgICAgIGNoZWNrU3RyaW5nQXR0cmlidXRlUmVjb25jaWxpYXRpb24oaHR0cEJpbmRpbmcsIEhUVFBDb25zdGFudHMuVkVSQl9BVFRSSUJVVEUsIFZFUkJfUFVULCBIVFRQUGFja2FnZS5MaXRlcmFscy5IVFRQX0JJTkRJTkdfX1ZFUkIpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhpcyBtZXRob2QgbG9hZHMgYSBXU0RMIG1vZGVsIHRoZW4gc2F2ZXMgaXQgdXNpbmcgdGhlIGRlZmF1bHQgRU1GIHNlcmlhbGl6YXRpb24KLSAgICogaW5zdGVhZCBvZiB0aGUgV1NETCBYTUwgZm9ybWF0LCB0aGVuIGxvYWRzIGl0IGFnYWluLiBUaGUgaW50ZW50IGlzIHRvIGV4ZXJjaXNlCi0gICAqIHRoZSBFTUYgZSogbWV0aG9kcyB0byBhaWQgaW4gaWRlbnRpZnlpbmcgcmVhbCBjb2RlIGNvdmVyYWdlIGlzc3Vlcy4gIAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEVNRlNlcmlhbGl6YXRpb24oKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvRXh0ZW5zaW9ucy9IVFRQL0hUVFBFeGFtcGxlLndzZGwiLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgICBSZXNvdXJjZVNldCByZXNvdXJjZVNldCA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsKLSAgICAgIFVSSSBmaWxlVVJJID0gVVJJLmNyZWF0ZUZpbGVVUkkoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9nZW5lcmF0ZWQvSFRUUEV4YW1wbGUueG1sIik7Ci0gICAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHJlc291cmNlU2V0LmNyZWF0ZVJlc291cmNlKGZpbGVVUkkpOwotICAgICAgcmVzb3VyY2UuZ2V0Q29udGVudHMoKS5hZGQoZGVmaW5pdGlvbik7Ci0gICAgICByZXNvdXJjZS5zYXZlKG51bGwpOwotICAgICAgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7Ci0gICAgICByZXNvdXJjZSA9IHJlc291cmNlU2V0LmdldFJlc291cmNlKGZpbGVVUkksIHRydWUpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0SFRUUENvbnRlbnRHZW5lcmF0b3IoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvRXh0ZW5zaW9ucy9IVFRQL0hUVFBUZXN0LndzZGwiKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgICBIVFRQQ29udGVudEdlbmVyYXRvciBjb250ZW50R2VuZXJhdG9yID0gKEhUVFBDb250ZW50R2VuZXJhdG9yKUNvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25GYWN0b3J5UmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRHZW5lcmF0b3JDbGFzc0Zyb21OYW1lKAotICAgICAgICAiSFRUUCIpOwotICAgICAgU3RyaW5nIGxvY2F0aW9uVVJJID0gImh0dHA6Ly90ZXN0Lm9yZy9leGFtcGxlIjsgLy8kTk9OLU5MUy0xJAotICAgICAgY29udGVudEdlbmVyYXRvci5zZXRBZGRyZXNzTG9jYXRpb24obG9jYXRpb25VUkkpOwotICAgICAgY29udGVudEdlbmVyYXRvci5zZXRWZXJiKEhUVFBDb250ZW50R2VuZXJhdG9yLlZFUkJfR0VUKTsKLQotICAgICAgU3RyaW5nIHNlcnZpY2VOYW1lID0gIkhUVFBUZXN0IjsgLy8kTk9OLU5MUy0xJAotICAgICAgUU5hbWUgc2VydmljZVFOYW1lID0gbmV3IFFOYW1lKFRBUkdFVF9OQU1FU1BBQ0UsIHNlcnZpY2VOYW1lKTsKLSAgICAgIFNlcnZpY2Ugc2VydmljZSA9IChTZXJ2aWNlKWRlZmluaXRpb24uZ2V0U2VydmljZShzZXJ2aWNlUU5hbWUpOwotCi0gICAgICBQb3J0IHBvcnQgPSAoUG9ydClzZXJ2aWNlLmdldFBvcnQoIkhUVFBUZXN0SFRUUCIpOyAvLyROT04tTkxTLTEkCi0gICAgICBMaXN0IGV4dGVuc2liaWxpdHlFbGVtZW50cyA9IHBvcnQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoMCwgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLnNpemUoKSk7Ci0gICAgICBjb250ZW50R2VuZXJhdG9yLmdlbmVyYXRlUG9ydENvbnRlbnQocG9ydCk7Ci0KLSAgICAgIGV4dGVuc2liaWxpdHlFbGVtZW50cyA9IHBvcnQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoMSwgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLnNpemUoKSk7Ci0gICAgICBFeHRlbnNpYmlsaXR5RWxlbWVudCBleHRlbnNpYmlsaXR5RWxlbWVudCA9IChFeHRlbnNpYmlsaXR5RWxlbWVudClleHRlbnNpYmlsaXR5RWxlbWVudHMuZ2V0KDApOwotICAgICAgYXNzZXJ0VHJ1ZShleHRlbnNpYmlsaXR5RWxlbWVudCBpbnN0YW5jZW9mIEhUVFBBZGRyZXNzKTsKLSAgICAgIEhUVFBBZGRyZXNzIGh0dHBBZGRyZXNzID0gKEhUVFBBZGRyZXNzKWV4dGVuc2liaWxpdHlFbGVtZW50OwotICAgICAgYXNzZXJ0RXF1YWxzKGxvY2F0aW9uVVJJLCBodHRwQWRkcmVzcy5nZXRMb2NhdGlvblVSSSgpKTsKLQotICAgICAgUU5hbWUgYmluZGluZ1FOYW1lID0gbmV3IFFOYW1lKFRBUkdFVF9OQU1FU1BBQ0UsICJIVFRQVGVzdEhUVFAiKTsgLy8kTk9OLU5MUy0xJAotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpZGVmaW5pdGlvbi5nZXRCaW5kaW5nKGJpbmRpbmdRTmFtZSk7Ci0KLSAgICAgIFFOYW1lIHBvcnRUeXBlUU5hbWUgPSBuZXcgUU5hbWUoVEFSR0VUX05BTUVTUEFDRSwgIkhUVFBUZXN0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gKFBvcnRUeXBlKWRlZmluaXRpb24uZ2V0UG9ydFR5cGUocG9ydFR5cGVRTmFtZSk7Ci0KLSAgICAgIGNvbnRlbnRHZW5lcmF0b3IuZ2VuZXJhdGVCaW5kaW5nQ29udGVudChiaW5kaW5nLCBwb3J0VHlwZSk7Ci0KLSAgICAgIC8vIFRPRE8gQ29tcGxldGUgdGhpcyB0ZXN0LgotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0KLSAgfQotCi0gIHByaXZhdGUgdm9pZCBhZGRIVFRQQWRkcmVzcyhEZWZpbml0aW9uIGRlZmluaXRpb24pCi0gIHsKLSAgICBIVFRQQWRkcmVzcyBodHRwQWRkcmVzcyA9IEhUVFBfRkFDVE9SWS5jcmVhdGVIVFRQQWRkcmVzcygpOwotICAgIGh0dHBBZGRyZXNzLnNldExvY2F0aW9uVVJJKEFERFJFU1NfTE9DQVRJT05fVVJJKTsKLQotICAgIGh0dHBBZGRyZXNzLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmcgc2VydmljZU5hbWUgPSAiSFRUUFRlc3QiOyAvLyROT04tTkxTLTEkCi0gICAgUU5hbWUgc2VydmljZVFOYW1lID0gbmV3IFFOYW1lKFRBUkdFVF9OQU1FU1BBQ0UsIHNlcnZpY2VOYW1lKTsKLSAgICBTZXJ2aWNlIHNlcnZpY2UgPSAoU2VydmljZSlkZWZpbml0aW9uLmdldFNlcnZpY2Uoc2VydmljZVFOYW1lKTsKLSAgICBzZXJ2aWNlLnRvU3RyaW5nKCk7Ci0KLSAgICBQb3J0IHBvcnQgPSAoUG9ydClzZXJ2aWNlLmdldFBvcnQoIkhUVFBUZXN0SFRUUCIpOyAvLyROT04tTkxTLTEkCi0gICAgcG9ydC5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChodHRwQWRkcmVzcyk7Ci0gICAgcG9ydC50b1N0cmluZygpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGFkZEhUVFBCaW5kaW5nKEJpbmRpbmcgYmluZGluZykKLSAgewotICAgIGJpbmRpbmcudG9TdHJpbmcoKTsKLQotICAgIEhUVFBCaW5kaW5nIGh0dHBCaW5kaW5nID0gSFRUUF9GQUNUT1JZLmNyZWF0ZUhUVFBCaW5kaW5nKCk7Ci0gICAgYmluZGluZy5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChodHRwQmluZGluZyk7Ci0KLSAgICBodHRwQmluZGluZy5zZXRWZXJiKFZFUkJfR0VUKTsKLQotICAgIGh0dHBCaW5kaW5nLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgYWRkSFRUUEJpbmRpbmdJbnB1dChCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0KQotICB7Ci0gICAgYmluZGluZ0lucHV0LnRvU3RyaW5nKCk7Ci0KLSAgICBIVFRQVXJsRW5jb2RlZCBodHRwVVJMRW5jb2RlZCA9IEhUVFBfRkFDVE9SWS5jcmVhdGVIVFRQVXJsRW5jb2RlZCgpOwotICAgIGJpbmRpbmdJbnB1dC5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChodHRwVVJMRW5jb2RlZCk7Ci0KLSAgICBiaW5kaW5nSW5wdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuY2xlYXIoKTsKLQotICAgIEhUVFBVcmxSZXBsYWNlbWVudCBodHRwVVJMUmVwbGFjZW1lbnQgPSBIVFRQX0ZBQ1RPUlkuY3JlYXRlSFRUUFVybFJlcGxhY2VtZW50KCk7Ci0gICAgYmluZGluZ0lucHV0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KGh0dHBVUkxSZXBsYWNlbWVudCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgYWRkSFRUUE9wZXJhdGlvbihCaW5kaW5nT3BlcmF0aW9uIGJpbmRpbmdPcGVyYXRpb24pCi0gIHsKLSAgICBiaW5kaW5nT3BlcmF0aW9uLnRvU3RyaW5nKCk7Ci0KLSAgICBIVFRQT3BlcmF0aW9uIGh0dHBPcGVyYXRpb24gPSBIVFRQX0ZBQ1RPUlkuY3JlYXRlSFRUUE9wZXJhdGlvbigpOwotCi0gICAgaHR0cE9wZXJhdGlvbi5zZXRMb2NhdGlvblVSSShIVFRQX0xPQ0FUSU9OX1VSSSk7Ci0KLSAgICBodHRwT3BlcmF0aW9uLnRvU3RyaW5nKCk7Ci0KLSAgICBiaW5kaW5nT3BlcmF0aW9uLmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KGh0dHBPcGVyYXRpb24pOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL2V4dGVuc2lvbnMvTUlNRUV4dGVuc2lvbnNUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvZXh0ZW5zaW9ucy9NSU1FRXh0ZW5zaW9uc1Rlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM4YTJhMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvZXh0ZW5zaW9ucy9NSU1FRXh0ZW5zaW9uc1Rlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMuZXh0ZW5zaW9uczsKLQotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZVNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuaW1wbC5SZXNvdXJjZVNldEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRUNvbnRlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5NSU1FTWltZVhtbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLm1pbWUuTUlNRU11bHRpcGFydFJlbGF0ZWQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5taW1lLk1JTUVQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcubWltZS5pbnRlcm5hbC51dGlsLk1JTUVDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBCb2R5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwudXRpbC5TT0FQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLldTRExUZXN0c1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25Mb2FkZXI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIFRlc3RzIHRoZSBNSU1FIGJpbmRpbmcgZXh0ZW5zaW9ucy4gCi0gKi8KLXB1YmxpYyBjbGFzcyBNSU1FRXh0ZW5zaW9uc1Rlc3QgZXh0ZW5kcyBUZXN0Q2FzZQotewotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNSU1FRmFjdG9yeSBNSU1FX0ZBQ1RPUlkgPSBNSU1FRmFjdG9yeS5lSU5TVEFOQ0U7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU09BUEZhY3RvcnkgU09BUF9GQUNUT1JZID0gU09BUEZhY3RvcnkuZUlOU1RBTkNFOwotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQTFVHSU5fQUJTT0xVVEVfUEFUSCA9IFdTRExUZXN0c1BsdWdpbi5nZXRJbnN0YWxsVVJMKCk7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBUkdFVF9OQU1FU1BBQ0UgPSAiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NSU1FVGVzdCI7IC8vJE5PTi1OTFMtMSQKLQotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQotICB7Ci0gICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIucnVuKHN1aXRlKCkpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoKTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IE1JTUVFeHRlbnNpb25zVGVzdCgiTUlNRUV4dGVuc2lvbnNDcmVhdGlvbiIpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0TUlNRUV4dGVuc2lvbnNDcmVhdGlvbigpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3QobmV3IE1JTUVFeHRlbnNpb25zVGVzdCgiRU1GU2VyaWFsaXphdGlvbiIpIC8vJE5PTi1OTFMtMSQKLSAgICAgIHsKLSAgICAgICAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0TUlNRUVNRlNlcmlhbGl6YXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBNSU1FRXh0ZW5zaW9uc1Rlc3QoIk1JTUVFeHRlbnNpb25zUmVjb25jaWxpYXRpb24iKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdE1JTUVFeHRlbnNpb25zUmVjb25jaWxpYXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICByZXR1cm4gc3VpdGU7Ci0gIH0KLQotICBwdWJsaWMgTUlNRUV4dGVuc2lvbnNUZXN0KFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0TUlNRUV4dGVuc2lvbnNDcmVhdGlvbigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9FeHRlbnNpb25zL01JTUUvTUlNRVRlc3Qud3NkbCIsIHRydWUpOyAvLyROT04tTkxTLTEkCi0KLSAgICAgIFN0cmluZyBiaW5kaW5nTmFtZSA9ICJNSU1FVGVzdEJpbmRpbmciOyAvLyROT04tTkxTLTEkCi0gICAgICBRTmFtZSBiaW5kaW5nUU5hbWUgPSBuZXcgUU5hbWUoVEFSR0VUX05BTUVTUEFDRSwgYmluZGluZ05hbWUpOwotICAgICAgQmluZGluZyBiaW5kaW5nID0gKEJpbmRpbmcpZGVmaW5pdGlvbi5nZXRCaW5kaW5nKGJpbmRpbmdRTmFtZSk7Ci0KLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKWJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbigidGVzdE9wZXJhdGlvbiIsIG51bGwsIG51bGwpOyAvLyROT04tTkxTLTEkCi0KLSAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0RUJpbmRpbmdPdXRwdXQoKTsKLQotICAgICAgTUlNRU11bHRpcGFydFJlbGF0ZWQgbXVsdGlwYXJ0ID0gTUlNRV9GQUNUT1JZLmNyZWF0ZU1JTUVNdWx0aXBhcnRSZWxhdGVkKCk7Ci0gICAgICBiaW5kaW5nT3V0cHV0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KG11bHRpcGFydCk7Ci0gICAgICBtdWx0aXBhcnQudG9TdHJpbmcoKTsKLSAgICAgIEVsZW1lbnQgbXVsdGlwYXJ0RWxlbWVudCA9IG11bHRpcGFydC5nZXRFbGVtZW50KCk7Ci0gICAgICBhc3NlcnROb3ROdWxsKG11bHRpcGFydEVsZW1lbnQpOwotCi0gICAgICBNSU1FUGFydCBtaW1lUGFydCA9IE1JTUVfRkFDVE9SWS5jcmVhdGVNSU1FUGFydCgpOwotICAgICAgbXVsdGlwYXJ0LmFkZE1JTUVQYXJ0KG1pbWVQYXJ0KTsKLSAgICAgIEVsZW1lbnQgbWltZVBhcnRFbGVtZW50ID0gbWltZVBhcnQuZ2V0RWxlbWVudCgpOwotICAgICAgTm9kZUxpc3QgbWltZVBhcnRFbGVtZW50cyA9IG11bHRpcGFydEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhNSU1FQ29uc3RhbnRzLk1JTUVfTkFNRVNQQUNFX1VSSSwgTUlNRUNvbnN0YW50cy5QQVJUX0VMRU1FTlRfVEFHKTsKLSAgICAgIGFzc2VydEVxdWFscygxLCBtaW1lUGFydEVsZW1lbnRzLmdldExlbmd0aCgpKTsKLSAgICAgIGFzc2VydEVxdWFscyhtaW1lUGFydEVsZW1lbnQsIG1pbWVQYXJ0RWxlbWVudHMuaXRlbSgwKSk7Ci0KLSAgICAgIFNPQVBCb2R5IHNvYXBCb2R5ID0gU09BUF9GQUNUT1JZLmNyZWF0ZVNPQVBCb2R5KCk7Ci0gICAgICBzb2FwQm9keS5zZXRVc2UoImxpdGVyYWwiKTsKLSAgICAgIG1pbWVQYXJ0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBCb2R5KTsKLSAgICAgIG1pbWVQYXJ0LnRvU3RyaW5nKCk7Ci0gICAgICBFbGVtZW50IHNvYXBCb2R5RWxlbWVudCA9IHNvYXBCb2R5LmdldEVsZW1lbnQoKTsKLSAgICAgIE5vZGVMaXN0IHNvYXBCb2R5RWxlbWVudHMgPSBtaW1lUGFydEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhTT0FQQ29uc3RhbnRzLlNPQVBfTkFNRVNQQUNFX1VSSSwgU09BUENvbnN0YW50cy5CT0RZX0VMRU1FTlRfVEFHKTsKLSAgICAgIGFzc2VydEVxdWFscygxLCBzb2FwQm9keUVsZW1lbnRzLmdldExlbmd0aCgpKTsKLSAgICAgIGFzc2VydEVxdWFscyhzb2FwQm9keUVsZW1lbnQsIHNvYXBCb2R5RWxlbWVudHMuaXRlbSgwKSk7Ci0gICAgICAKLSAgICAgIG1pbWVQYXJ0ID0gTUlNRV9GQUNUT1JZLmNyZWF0ZU1JTUVQYXJ0KCk7Ci0gICAgICBtdWx0aXBhcnQuYWRkTUlNRVBhcnQobWltZVBhcnQpOwotCi0gICAgICBNSU1FQ29udGVudCBtaW1lQ29udGVudCA9IE1JTUVfRkFDVE9SWS5jcmVhdGVNSU1FQ29udGVudCgpOwotICAgICAgbWltZUNvbnRlbnQuc2V0UGFydCgicmVzcG9uc2VEYXRhIik7Ci0gICAgICBtaW1lQ29udGVudC5zZXRUeXBlKCJ0ZXh0L2JpbmFyeSIpOwotICAgICAgbWltZUNvbnRlbnQudG9TdHJpbmcoKTsKLSAgICAgIAotICAgICAgbWltZVBhcnQuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQobWltZUNvbnRlbnQpOwotICAgICAgCi0gICAgICBtaW1lUGFydEVsZW1lbnQgPSBtaW1lUGFydC5nZXRFbGVtZW50KCk7Ci0gICAgICBtaW1lUGFydEVsZW1lbnRzID0gbXVsdGlwYXJ0RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKE1JTUVDb25zdGFudHMuTUlNRV9OQU1FU1BBQ0VfVVJJLCBNSU1FQ29uc3RhbnRzLlBBUlRfRUxFTUVOVF9UQUcpOwotICAgICAgYXNzZXJ0RXF1YWxzKDIsIG1pbWVQYXJ0RWxlbWVudHMuZ2V0TGVuZ3RoKCkpOwotICAgICAgYXNzZXJ0RXF1YWxzKG1pbWVQYXJ0RWxlbWVudCwgbWltZVBhcnRFbGVtZW50cy5pdGVtKDEpKTsKLSAgICAgIAotICAgICAgTGlzdCBtaW1lUGFydHMgPSBtdWx0aXBhcnQuZ2V0TUlNRVBhcnRzKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoMiwgbWltZVBhcnRzLnNpemUoKSk7Ci0gICAgICAKLSAgICAgIE1JTUVNaW1lWG1sIG1pbWVYTUwgPSBNSU1FX0ZBQ1RPUlkuY3JlYXRlTUlNRU1pbWVYbWwoKTsKLSAgICAgIGJpbmRpbmdPdXRwdXQuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQobWltZVhNTCk7Ci0gICAgICBtaW1lWE1MLnNldFBhcnQoInhtbERhdGEiKTsKLSAgICAgIG1pbWVYTUwudG9TdHJpbmcoKTsKLSAgICAgIAotICAgICAgRGVmaW5pdGlvbkxvYWRlci5zdG9yZShkZWZpbml0aW9uLCAic2FtcGxlcy9nZW5lcmF0ZWQvTUlNRVRlc3RPdXQud3NkbCIpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0TUlNRUV4dGVuc2lvbnNSZWNvbmNpbGlhdGlvbigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9FeHRlbnNpb25zL01JTUUvTUlNRUV4YW1wbGUud3NkbCIsIHRydWUpOyAvLyROT04tTkxTLTEkCi0gICAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTUlNRUV4YW1wbGUiOyAvLyROT04tTkxTLTEkCi0gICAgICBTdHJpbmcgYmluZGluZ05hbWUgPSAiTUlNRUV4YW1wbGVCaW5kaW5nIjsgLy8kTk9OLU5MUy0xJAotICAgICAgUU5hbWUgYmluZGluZ1FOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgYmluZGluZ05hbWUpOwotICAgICAgZGVmaW5pdGlvbi5nZXRCaW5kaW5nKGJpbmRpbmdRTmFtZSk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBBc3NlcnQuZmFpbCgiVGVzdCBmYWlsZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbjogIiArIGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgfQotCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBsb2FkcyBhIFdTREwgbW9kZWwgdGhlbiBzYXZlcyBpdCB1c2luZyB0aGUgZGVmYXVsdCBFTUYgc2VyaWFsaXphdGlvbgotICAgKiBpbnN0ZWFkIG9mIHRoZSBXU0RMIFhNTCBmb3JtYXQsIHRoZW4gbG9hZHMgaXQgYWdhaW4uIFRoZSBpbnRlbnQgaXMgdG8gZXhlcmNpc2UKLSAgICogdGhlIEVNRiBlKiBtZXRob2RzIHRvIGFpZCBpbiBpZGVudGlmeWluZyByZWFsIGNvZGUgY292ZXJhZ2UgaXNzdWVzLiAgCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0TUlNRUVNRlNlcmlhbGl6YXRpb24oKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvRXh0ZW5zaW9ucy9NSU1FL01JTUVFeGFtcGxlLndzZGwiLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgICBSZXNvdXJjZVNldCByZXNvdXJjZVNldCA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsKLSAgICAgIFVSSSBmaWxlVVJJID0gVVJJLmNyZWF0ZUZpbGVVUkkoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9nZW5lcmF0ZWQvTUlNRUV4YW1wbGUueG1sIik7Ci0gICAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHJlc291cmNlU2V0LmNyZWF0ZVJlc291cmNlKGZpbGVVUkkpOwotICAgICAgcmVzb3VyY2UuZ2V0Q29udGVudHMoKS5hZGQoZGVmaW5pdGlvbik7Ci0gICAgICByZXNvdXJjZS5zYXZlKG51bGwpOwotICAgICAgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7Ci0gICAgICByZXNvdXJjZSA9IHJlc291cmNlU2V0LmdldFJlc291cmNlKGZpbGVVUkksIGZhbHNlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIEFzc2VydC5mYWlsKCJUZXN0IGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uOiAiICsgZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOyAvLyROT04tTkxTLTEkCi0gICAgfQotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL2V4dGVuc2lvbnMvU09BUEV4dGVuc2lvbnNUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvZXh0ZW5zaW9ucy9TT0FQRXh0ZW5zaW9uc1Rlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA0YzJkMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvZXh0ZW5zaW9ucy9TT0FQRXh0ZW5zaW9uc1Rlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUxMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMuZXh0ZW5zaW9uczsKLQotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkJhc2ljRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZVNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuaW1wbC5SZXNvdXJjZVNldEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ091dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBBZGRyZXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQQmluZGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUEJvZHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBGYWN0b3J5OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmJpbmRpbmcuc29hcC5TT0FQRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLlNPQVBIZWFkZXJGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUE9wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuU09BUFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuYmluZGluZy5zb2FwLmludGVybmFsLmdlbmVyYXRvci5TT0FQQ29udGVudEdlbmVyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5iaW5kaW5nLnNvYXAuaW50ZXJuYWwudXRpbC5TT0FQQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmdlbmVyYXRvci5leHRlbnNpb24uQ29udGVudEdlbmVyYXRvckV4dGVuc2lvbkZhY3RvcnlSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5XU0RMVGVzdHNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uTG9hZGVyOwotaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotCi0vKioKLSAqIFRlc3RzIHRoZSBTT0FQIGJpbmRpbmcgZXh0ZW5zaW9ucy4gCi0gKi8KLXB1YmxpYyBjbGFzcyBTT0FQRXh0ZW5zaW9uc1Rlc3QgZXh0ZW5kcyBXU0RMRXh0ZW5zaW9uc1Rlc3QKLXsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhUVFBfVFJBTlNQT1JUX1VSSSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiOyAvLyROT04tTkxTLTEkCi0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIExPQ0FUSU9OX1VSSSA9ICJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyI7IC8vJE5PTi1OTFMtMSQKLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0FCU09MVVRFX1BBVEggPSBXU0RMVGVzdHNQbHVnaW4uZ2V0SW5zdGFsbFVSTCgpOwotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTT0FQX0FDVElPTl9VUkkgPSAiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TT0FQVGVzdC9OZXdPcGVyYXRpb24iOwotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFNPQVBGYWN0b3J5IFNPQVBfRkFDVE9SWSA9IFNPQVBGYWN0b3J5LmVJTlNUQU5DRTsKLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RZTEVfRE9DVU1FTlQgPSAiZG9jdW1lbnQiOyAvLyROT04tTkxTLTEkCi0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNUWUxFX1JQQyA9ICJycGMiOyAvLyROT04tTkxTLTEkCi0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVTRV9MSVRFUkFMID0gImxpdGVyYWwiOyAvLyROT04tTkxTLTEkCi0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVTRV9FTkNPREVEID0gImVuY29kZWQiOyAvLyROT04tTkxTLTEkCi0KLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKLSAgewotICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLnJ1bihzdWl0ZSgpKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKCk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBTT0FQRXh0ZW5zaW9uc1Rlc3QoIlNPQVBFeHRlbnNpb25zQ3JlYXRpb24iKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdFNPQVBFeHRlbnNpb25zQ3JlYXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBTT0FQRXh0ZW5zaW9uc1Rlc3QoIkVNRlNlcmlhbGl6YXRpb24iKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdEVNRlNlcmlhbGl6YXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBTT0FQRXh0ZW5zaW9uc1Rlc3QoIlNPQVBFeHRlbnNpb25zUmVjb25jaWxpYXRpb24iKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdFNPQVBFeHRlbnNpb25zUmVjb25jaWxpYXRpb24oKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBTT0FQRXh0ZW5zaW9uc1Rlc3QoIlNPQVBDb250ZW50R2VuZXJhdG9yIikgLy8kTk9OLU5MUy0xJAotICAgICAgewotICAgICAgICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgIHRlc3RTT0FQQ29udGVudEdlbmVyYXRvcigpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgIHJldHVybiBzdWl0ZTsKLSAgfQotCi0gIHB1YmxpYyBTT0FQRXh0ZW5zaW9uc1Rlc3QoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RTT0FQRXh0ZW5zaW9uc0NyZWF0aW9uKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0V4dGVuc2lvbnMvU09BUC9TT0FQVGVzdC53c2RsIik7IC8vJE5PTi1OTFMtMSQKLQotICAgICAgU3RyaW5nIGJpbmRpbmdOYW1lID0gIlNPQVBUZXN0U09BUCI7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSAiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TT0FQVGVzdC8iOyAvLyROT04tTkxTLTEkCi0gICAgICBRTmFtZSBiaW5kaW5nUU5hbWUgPSBuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCBiaW5kaW5nTmFtZSk7Ci0gICAgICBCaW5kaW5nIGJpbmRpbmcgPSAoQmluZGluZylkZWZpbml0aW9uLmdldEJpbmRpbmcoYmluZGluZ1FOYW1lKTsKLQotICAgICAgYWRkU09BUEJpbmRpbmcoYmluZGluZyk7Ci0KLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKWJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbigiTmV3T3BlcmF0aW9uIiwgbnVsbCwgbnVsbCk7IC8vJE5PTi1OTFMtMSQKLQotICAgICAgYWRkU09BUE9wZXJhdGlvbihiaW5kaW5nT3BlcmF0aW9uKTsKLQotICAgICAgQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0RUJpbmRpbmdJbnB1dCgpOwotCi0gICAgICBhZGRTT0FQQmluZGluZ0lucHV0KGJpbmRpbmdJbnB1dCk7Ci0KLSAgICAgIEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCA9IGJpbmRpbmdPcGVyYXRpb24uZ2V0RUJpbmRpbmdPdXRwdXQoKTsKLQotICAgICAgYWRkU09BUEJpbmRpbmdPdXRwdXQoYmluZGluZ091dHB1dCk7Ci0KLSAgICAgIFN0cmluZyBmYXVsdE5hbWUgPSAiZmF1bHQiOyAvLyROT04tTkxTLTEkCi0gICAgICBCaW5kaW5nRmF1bHQgYmluZGluZ0ZhdWx0ID0gKEJpbmRpbmdGYXVsdCliaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdGYXVsdChmYXVsdE5hbWUpOwotCi0gICAgICBhZGRTT0FQQmluZGluZ0ZhdWx0KGJpbmRpbmdGYXVsdCk7Ci0KLSAgICAgIGFkZFNPQVBBZGRyZXNzKGRlZmluaXRpb24pOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0U09BUENvbnRlbnRHZW5lcmF0b3IoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvRXh0ZW5zaW9ucy9TT0FQL1NPQVBUZXN0LndzZGwiKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgICBTT0FQQ29udGVudEdlbmVyYXRvciBjb250ZW50R2VuZXJhdG9yID0gKFNPQVBDb250ZW50R2VuZXJhdG9yKUNvbnRlbnRHZW5lcmF0b3JFeHRlbnNpb25GYWN0b3J5UmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRHZW5lcmF0b3JDbGFzc0Zyb21OYW1lKAotICAgICAgICAiU09BUCIpOwotICAgICAgU3RyaW5nIGxvY2F0aW9uVVJJID0gImh0dHA6Ly90ZXN0Lm9yZy9leGFtcGxlIjsgLy8kTk9OLU5MUy0xJAotICAgICAgY29udGVudEdlbmVyYXRvci5zZXRBZGRyZXNzTG9jYXRpb24obG9jYXRpb25VUkkpOwotICAgICAgY29udGVudEdlbmVyYXRvci5zZXRTdHlsZShTT0FQQ29udGVudEdlbmVyYXRvci5TVFlMRV9ET0NVTUVOVCk7Ci0KLSAgICAgIFN0cmluZyBzZXJ2aWNlTmFtZSA9ICJTT0FQVGVzdCI7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSAiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TT0FQVGVzdC8iOyAvLyROT04tTkxTLTEkIAotICAgICAgUU5hbWUgc2VydmljZVFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgc2VydmljZU5hbWUpOwotICAgICAgU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2UpZGVmaW5pdGlvbi5nZXRTZXJ2aWNlKHNlcnZpY2VRTmFtZSk7Ci0KLSAgICAgIFBvcnQgcG9ydCA9IChQb3J0KXNlcnZpY2UuZ2V0UG9ydCgiU09BUFRlc3RTT0FQIik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIExpc3QgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzID0gcG9ydC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIGFzc2VydEVxdWFscygwLCBleHRlbnNpYmlsaXR5RWxlbWVudHMuc2l6ZSgpKTsKLSAgICAgIGNvbnRlbnRHZW5lcmF0b3IuZ2VuZXJhdGVQb3J0Q29udGVudChwb3J0KTsKLQotICAgICAgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzID0gcG9ydC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIGFzc2VydEVxdWFscygxLCBleHRlbnNpYmlsaXR5RWxlbWVudHMuc2l6ZSgpKTsKLSAgICAgIEV4dGVuc2liaWxpdHlFbGVtZW50IGV4dGVuc2liaWxpdHlFbGVtZW50ID0gKEV4dGVuc2liaWxpdHlFbGVtZW50KWV4dGVuc2liaWxpdHlFbGVtZW50cy5nZXQoMCk7Ci0gICAgICBhc3NlcnRUcnVlKGV4dGVuc2liaWxpdHlFbGVtZW50IGluc3RhbmNlb2YgU09BUEFkZHJlc3MpOwotICAgICAgU09BUEFkZHJlc3Mgc29hcEFkZHJlc3MgPSAoU09BUEFkZHJlc3MpZXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci0gICAgICBhc3NlcnRFcXVhbHMobG9jYXRpb25VUkksIHNvYXBBZGRyZXNzLmdldExvY2F0aW9uVVJJKCkpOwotCi0gICAgICBRTmFtZSBiaW5kaW5nUU5hbWUgPSBuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCAiU09BUFRlc3RTT0FQIik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKWRlZmluaXRpb24uZ2V0QmluZGluZyhiaW5kaW5nUU5hbWUpOwotCi0gICAgICBRTmFtZSBwb3J0VHlwZVFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgIlNPQVBUZXN0Iik7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gKFBvcnRUeXBlKWRlZmluaXRpb24uZ2V0UG9ydFR5cGUocG9ydFR5cGVRTmFtZSk7Ci0KLSAgICAgIGNvbnRlbnRHZW5lcmF0b3IuZ2VuZXJhdGVCaW5kaW5nQ29udGVudChiaW5kaW5nLCBwb3J0VHlwZSk7Ci0KLSAgICAgIC8vIFRPRE8gQ29tcGxldGUgdGhpcyB0ZXN0LgotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogVGhpcyBtZXRob2QgbG9hZHMgYSBXU0RMIG1vZGVsIHRoZW4gc2F2ZXMgaXQgdXNpbmcgdGhlIGRlZmF1bHQgRU1GIHNlcmlhbGl6YXRpb24KLSAgICogaW5zdGVhZCBvZiB0aGUgV1NETCBYTUwgZm9ybWF0LCB0aGVuIGxvYWRzIGl0IGFnYWluLiBUaGUgaW50ZW50IGlzIHRvIGV4ZXJjaXNlCi0gICAqIHRoZSBFTUYgZSogbWV0aG9kcyB0byBhaWQgaW4gaWRlbnRpZnlpbmcgcmVhbCBjb2RlIGNvdmVyYWdlIGlzc3Vlcy4gIAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEVNRlNlcmlhbGl6YXRpb24oKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvRXh0ZW5zaW9ucy9TT0FQL0RvY3VtZW50TGl0ZXJhbFNPQVBFeGFtcGxlLndzZGwiLCB0cnVlKTsgLy8kTk9OLU5MUy0xJAotCi0gICAgICBSZXNvdXJjZVNldCByZXNvdXJjZVNldCA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsKLSAgICAgIFVSSSBmaWxlVVJJID0gVVJJLmNyZWF0ZUZpbGVVUkkoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9nZW5lcmF0ZWQvRG9jdW1lbnRMaXRlcmFsU09BUEV4YW1wbGUueG1sIik7Ci0gICAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHJlc291cmNlU2V0LmNyZWF0ZVJlc291cmNlKGZpbGVVUkkpOwotICAgICAgcmVzb3VyY2UuZ2V0Q29udGVudHMoKS5hZGQoZGVmaW5pdGlvbik7Ci0gICAgICByZXNvdXJjZS5zYXZlKG51bGwpOwotICAgICAgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7Ci0gICAgICByZXNvdXJjZSA9IHJlc291cmNlU2V0LmdldFJlc291cmNlKGZpbGVVUkksIGZhbHNlKTsKLQotICAgICAgZGVmaW5pdGlvbiA9IERlZmluaXRpb25Mb2FkZXIubG9hZChQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL0V4dGVuc2lvbnMvU09BUC9SUENMaXRlcmFsU09BUEV4YW1wbGUud3NkbCIsIHRydWUpOyAvLyROT04tTkxTLTEkCi0gICAgICBmaWxlVVJJID0gVVJJLmNyZWF0ZUZpbGVVUkkoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9nZW5lcmF0ZWQvUlBDTGl0ZXJhbFNPQVBFeGFtcGxlLnhtbCIpOwotICAgICAgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7Ci0gICAgICByZXNvdXJjZSA9IHJlc291cmNlU2V0LmNyZWF0ZVJlc291cmNlKGZpbGVVUkkpOwotICAgICAgcmVzb3VyY2UuZ2V0Q29udGVudHMoKS5hZGQoZGVmaW5pdGlvbik7Ci0gICAgICByZXNvdXJjZS5zYXZlKG51bGwpOwotICAgICAgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7Ci0gICAgICByZXNvdXJjZSA9IHJlc291cmNlU2V0LmdldFJlc291cmNlKGZpbGVVUkksIHRydWUpOwotCi0gICAgICBkZWZpbml0aW9uID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKFBMVUdJTl9BQlNPTFVURV9QQVRIICsgInNhbXBsZXMvRXh0ZW5zaW9ucy9TT0FQL1JQQ0VuY29kZWRTT0FQRXhhbXBsZS53c2RsIiwgdHJ1ZSk7IC8vJE5PTi1OTFMtMSQKLSAgICAgIGZpbGVVUkkgPSBVUkkuY3JlYXRlRmlsZVVSSShQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJzYW1wbGVzL2dlbmVyYXRlZC9SUENFbmNvZGVkU09BUEV4YW1wbGUueG1sIik7Ci0gICAgICByZXNvdXJjZVNldCA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsKLSAgICAgIHJlc291cmNlID0gcmVzb3VyY2VTZXQuY3JlYXRlUmVzb3VyY2UoZmlsZVVSSSk7Ci0gICAgICByZXNvdXJjZS5nZXRDb250ZW50cygpLmFkZChkZWZpbml0aW9uKTsKLSAgICAgIHJlc291cmNlLnNhdmUobnVsbCk7Ci0gICAgICByZXNvdXJjZVNldCA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsKLSAgICAgIHJlc291cmNlID0gcmVzb3VyY2VTZXQuZ2V0UmVzb3VyY2UoZmlsZVVSSSwgdHJ1ZSk7Ci0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgQXNzZXJ0LmZhaWwoIlRlc3QgZmFpbGVkIGR1ZSB0byBhbiBleGNlcHRpb246ICIgKyBlLmdldExvY2FsaXplZE1lc3NhZ2UoKSk7IC8vJE5PTi1OTFMtMSQKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0U09BUEV4dGVuc2lvbnNSZWNvbmNpbGlhdGlvbigpCi0gIHsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoUExVR0lOX0FCU09MVVRFX1BBVEggKyAic2FtcGxlcy9FeHRlbnNpb25zL1NPQVAvRG9jdW1lbnRMaXRlcmFsU09BUEV4YW1wbGUud3NkbCIsIHRydWUpOyAvLyROT04tTkxTLTEkCi0KLSAgICAgIFN0cmluZyBzZXJ2aWNlTmFtZSA9ICJEb2N1bWVudExpdGVyYWxTT0FQRXhhbXBsZSI7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSAiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Eb2N1bWVudExpdGVyYWxTT0FQRXhhbXBsZS8iOyAvLyROT04tTkxTLTEkCi0gICAgICBRTmFtZSBzZXJ2aWNlUU5hbWUgPSBuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCBzZXJ2aWNlTmFtZSk7Ci0gICAgICBTZXJ2aWNlIHNlcnZpY2UgPSAoU2VydmljZSlkZWZpbml0aW9uLmdldFNlcnZpY2Uoc2VydmljZVFOYW1lKTsKLSAgICAgIHNlcnZpY2UudG9TdHJpbmcoKTsKLQotICAgICAgUG9ydCBwb3J0ID0gKFBvcnQpc2VydmljZS5nZXRQb3J0KCJEb2N1bWVudExpdGVyYWxTT0FQRXhhbXBsZVNPQVAiKTsgLy8kTk9OLU5MUy0xJAotICAgICAgTGlzdCBleHRlbnNpYmlsaXR5RWxlbWVudHMgPSBwb3J0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgYXNzZXJ0RXF1YWxzKDEsIGV4dGVuc2liaWxpdHlFbGVtZW50cy5zaXplKCkpOwotICAgICAgU09BUEFkZHJlc3Mgc29hcEFkZHJlc3MgPSAoU09BUEFkZHJlc3MpZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLmdldCgwKTsKLQotICAgICAgY2hlY2tTdHJpbmdBdHRyaWJ1dGVSZWNvbmNpbGlhdGlvbihzb2FwQWRkcmVzcywgU09BUENvbnN0YW50cy5MT0NBVElPTl9BVFRSSUJVVEUsICJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIsIFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfQUREUkVTU19fTE9DQVRJT05fVVJJKTsKLQotICAgICAgU3RyaW5nIGJpbmRpbmdOYW1lID0gIkRvY3VtZW50TGl0ZXJhbFNPQVBFeGFtcGxlU09BUCI7IC8vJE5PTi1OTFMtMSQKLSAgICAgIFFOYW1lIGJpbmRpbmdRTmFtZSA9IG5ldyBRTmFtZSh0YXJnZXROYW1lc3BhY2UsIGJpbmRpbmdOYW1lKTsKLSAgICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKWRlZmluaXRpb24uZ2V0QmluZGluZyhiaW5kaW5nUU5hbWUpOwotCi0gICAgICBleHRlbnNpYmlsaXR5RWxlbWVudHMgPSBiaW5kaW5nLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgYXNzZXJ0RXF1YWxzKDEsIGV4dGVuc2liaWxpdHlFbGVtZW50cy5zaXplKCkpOwotICAgICAgU09BUEJpbmRpbmcgc29hcEJpbmRpbmcgPSAoU09BUEJpbmRpbmcpZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLmdldCgwKTsKLQotICAgICAgU3RyaW5nIHN0eWxlID0gc29hcEJpbmRpbmcuZ2V0U3R5bGUoKTsKLSAgICAgIGFzc2VydEVxdWFscyhTVFlMRV9ET0NVTUVOVCwgc3R5bGUpOwotCi0gICAgICBjaGVja1N0cmluZ0F0dHJpYnV0ZVJlY29uY2lsaWF0aW9uKHNvYXBCaW5kaW5nLCBTT0FQQ29uc3RhbnRzLlNUWUxFX0FUVFJJQlVURSwgU1RZTEVfUlBDLCBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0JJTkRJTkdfX1NUWUxFKTsKLQotICAgICAgY2hlY2tTdHJpbmdBdHRyaWJ1dGVSZWNvbmNpbGlhdGlvbihzb2FwQmluZGluZywgU09BUENvbnN0YW50cy5UUkFOU1BPUlRfQVRUUklCVVRFLCBIVFRQX1RSQU5TUE9SVF9VUkksIFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfQklORElOR19fVFJBTlNQT1JUX1VSSSk7Ci0KLSAgICAgIEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbiA9IChCaW5kaW5nT3BlcmF0aW9uKWJpbmRpbmcuZ2V0QmluZGluZ09wZXJhdGlvbigiTmV3T3BlcmF0aW9uIiwgbnVsbCwgbnVsbCk7Ci0gICAgICBleHRlbnNpYmlsaXR5RWxlbWVudHMgPSBiaW5kaW5nT3BlcmF0aW9uLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgYXNzZXJ0RXF1YWxzKDEsIGV4dGVuc2liaWxpdHlFbGVtZW50cy5zaXplKCkpOwotICAgICAgU09BUE9wZXJhdGlvbiBzb2FwT3BlcmF0aW9uID0gKFNPQVBPcGVyYXRpb24pZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLmdldCgwKTsKLQotICAgICAgc3R5bGUgPSBzb2FwT3BlcmF0aW9uLmdldFN0eWxlKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoU1RZTEVfRE9DVU1FTlQsIHN0eWxlKTsKLQotICAgICAgY2hlY2tTdHJpbmdBdHRyaWJ1dGVSZWNvbmNpbGlhdGlvbihzb2FwT3BlcmF0aW9uLCBTT0FQQ29uc3RhbnRzLlNUWUxFX0FUVFJJQlVURSwgU1RZTEVfUlBDLCBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX09QRVJBVElPTl9fU1RZTEUpOwotCi0gICAgICBCaW5kaW5nSW5wdXQgYmluZGluZ0lucHV0ID0gKEJpbmRpbmdJbnB1dCliaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdJbnB1dCgpOwotICAgICAgZXh0ZW5zaWJpbGl0eUVsZW1lbnRzID0gYmluZGluZ0lucHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotICAgICAgYXNzZXJ0RXF1YWxzKDIsIGV4dGVuc2liaWxpdHlFbGVtZW50cy5zaXplKCkpOwotCi0gICAgICBTT0FQQm9keSBzb2FwQm9keSA9IChTT0FQQm9keSlleHRlbnNpYmlsaXR5RWxlbWVudHMuZ2V0KDApOwotCi0gICAgICBTdHJpbmcgdXNlID0gc29hcEJvZHkuZ2V0VXNlKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoVVNFX0xJVEVSQUwsIHVzZSk7Ci0KLSAgICAgIGNoZWNrU3RyaW5nQXR0cmlidXRlUmVjb25jaWxpYXRpb24oc29hcEJvZHksIFNPQVBDb25zdGFudHMuVVNFX0FUVFJJQlVURSwgVVNFX0VOQ09ERUQsIFNPQVBQYWNrYWdlLkxpdGVyYWxzLlNPQVBfQk9EWV9fVVNFKTsKLQotICAgICAgU09BUEhlYWRlciBzb2FwSGVhZGVyID0gKFNPQVBIZWFkZXIpZXh0ZW5zaWJpbGl0eUVsZW1lbnRzLmdldCgxKTsKLQotICAgICAgU3RyaW5nIHBhcnQgPSBzb2FwSGVhZGVyLmdldFBhcnQoKTsKLSAgICAgIGFzc2VydEVxdWFscygiaGVhZGVyIiwgcGFydCk7Ci0KLSAgICAgIGNoZWNrU3RyaW5nQXR0cmlidXRlUmVjb25jaWxpYXRpb24oc29hcEhlYWRlciwgU09BUENvbnN0YW50cy5QQVJUX0FUVFJJQlVURSwgInRlc3QiLCBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0hFQURFUl9CQVNFX19QQVJUKTsKLQotICAgICAgUU5hbWUgaW5wdXRNZXNzYWdlUU5hbWUgPSBuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCAiTmV3T3BlcmF0aW9uUmVxdWVzdE1zZyIpOwotICAgICAgTWVzc2FnZSBpbnB1dE1lc3NhZ2UgPSAoTWVzc2FnZSlkZWZpbml0aW9uLmdldE1lc3NhZ2UoaW5wdXRNZXNzYWdlUU5hbWUpOwotICAgICAgYXNzZXJ0Tm90TnVsbChpbnB1dE1lc3NhZ2UpOwotCi0gICAgICBRTmFtZSBzb2FwSGVhZGVyTWVzc2FnZVFOYW1lID0gc29hcEhlYWRlci5nZXRNZXNzYWdlKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoaW5wdXRNZXNzYWdlUU5hbWUsIHNvYXBIZWFkZXJNZXNzYWdlUU5hbWUpOwotCi0gICAgICBFbGVtZW50IHNvYXBIZWFkZXJFbGVtZW50ID0gc29hcEhlYWRlci5nZXRFbGVtZW50KCk7Ci0gICAgICBBdHRyIG1lc3NhZ2VBdHRyaWJ1dGUgPSBzb2FwSGVhZGVyRWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKFNPQVBDb25zdGFudHMuTUVTU0FHRV9BVFRSSUJVVEUpOwotCi0gICAgICBRTmFtZSB0ZXN0TWVzc2FnZVFOYW1lID0gbmV3IFFOYW1lKHRhcmdldE5hbWVzcGFjZSwgIlRlc3RNc2ciKTsKLSAgICAgIE1lc3NhZ2UgdGVzdE1lc3NhZ2UgPSAoTWVzc2FnZSlkZWZpbml0aW9uLmdldE1lc3NhZ2UodGVzdE1lc3NhZ2VRTmFtZSk7Ci0gICAgICBtZXNzYWdlQXR0cmlidXRlLnNldFZhbHVlKCJ0bnM6VGVzdE1zZyIpOwotICAgICAgYXNzZXJ0RXF1YWxzKHRlc3RNZXNzYWdlLCBzb2FwSGVhZGVyLmdldEVNZXNzYWdlKCkpOwotCi0gICAgICBRTmFtZSBtZXNzYWdlID0gc29hcEhlYWRlci5nZXRNZXNzYWdlKCk7Ci0gICAgICBhc3NlcnRFcXVhbHModGVzdE1lc3NhZ2VRTmFtZSwgbWVzc2FnZSk7Ci0KLSAgICAgIHNvYXBIZWFkZXIuc2V0TWVzc2FnZShudWxsKTsKLSAgICAgIG1lc3NhZ2VBdHRyaWJ1dGUgPSBzb2FwSGVhZGVyRWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKFNPQVBDb25zdGFudHMuTUVTU0FHRV9BVFRSSUJVVEUpOwotICAgICAgYXNzZXJ0TnVsbChtZXNzYWdlQXR0cmlidXRlKTsKLQotICAgICAgTGlzdCBzb2FwSGVhZGVyRmF1bHRzID0gc29hcEhlYWRlci5nZXRTT0FQSGVhZGVyRmF1bHRzKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoMSwgc29hcEhlYWRlckZhdWx0cy5zaXplKCkpOwotICAgICAgc29hcEhlYWRlckZhdWx0cy5jbGVhcigpOwotICAgICAgTm9kZUxpc3QgaGVhZGVyRmF1bHROb2RlcyA9IHNvYXBIZWFkZXJFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFNPQVBDb25zdGFudHMuSEVBREVSX0ZBVUxUX0VMRU1FTlRfVEFHKTsKLSAgICAgIGFzc2VydEVxdWFscygwLCBoZWFkZXJGYXVsdE5vZGVzLmdldExlbmd0aCgpKTsKLQotICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBzb2FwSGVhZGVyRWxlbWVudC5nZXRPd25lckRvY3VtZW50KCk7Ci0gICAgICBFbGVtZW50IHNvYXBIZWFkZXJGYXVsdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU09BUENvbnN0YW50cy5TT0FQX05BTUVTUEFDRV9VUkksIFNPQVBDb25zdGFudHMuSEVBREVSX0ZBVUxUX0VMRU1FTlRfVEFHKTsKLSAgICAgIHNvYXBIZWFkZXJFbGVtZW50LmFwcGVuZENoaWxkKHNvYXBIZWFkZXJGYXVsdEVsZW1lbnQpOwotICAgICAgYXNzZXJ0RXF1YWxzKDEsIHNvYXBIZWFkZXIuZ2V0U09BUEhlYWRlckZhdWx0cygpLnNpemUoKSk7Ci0gICAgICBzb2FwSGVhZGVyRmF1bHRFbGVtZW50LnNldEF0dHJpYnV0ZShTT0FQQ29uc3RhbnRzLk1FU1NBR0VfQVRUUklCVVRFLCAidG5zOlRlc3RNc2ciKTsKLSAgICAgIFNPQVBIZWFkZXJGYXVsdCBzb2FwSGVhZGVyRmF1bHQgPSAoU09BUEhlYWRlckZhdWx0KXNvYXBIZWFkZXIuZ2V0U09BUEhlYWRlckZhdWx0cygpLmdldCgwKTsKLSAgICAgIGFzc2VydEVxdWFscyh0ZXN0TWVzc2FnZVFOYW1lLCBzb2FwSGVhZGVyRmF1bHQuZ2V0TWVzc2FnZSgpKTsKLSAgICAgIGFzc2VydEVxdWFscyh0ZXN0TWVzc2FnZSwgc29hcEhlYWRlckZhdWx0LmdldEVNZXNzYWdlKCkpOwotCi0gICAgICBCaW5kaW5nRmF1bHQgYmluZGluZ0ZhdWx0ID0gKEJpbmRpbmdGYXVsdCliaW5kaW5nT3BlcmF0aW9uLmdldEJpbmRpbmdGYXVsdCgiZmF1bHQiKTsKLSAgICAgIGV4dGVuc2liaWxpdHlFbGVtZW50cyA9IGJpbmRpbmdGYXVsdC5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLSAgICAgIGFzc2VydEVxdWFscygxLCBleHRlbnNpYmlsaXR5RWxlbWVudHMuc2l6ZSgpKTsKLSAgICAgIFNPQVBGYXVsdCBzb2FwRmF1bHQgPSAoU09BUEZhdWx0KWV4dGVuc2liaWxpdHlFbGVtZW50cy5nZXQoMCk7Ci0KLSAgICAgIFN0cmluZyBuYW1lID0gc29hcEZhdWx0LmdldE5hbWUoKTsKLSAgICAgIGFzc2VydEVxdWFscygiZmF1bHQiLCBuYW1lKTsKLQotICAgICAgY2hlY2tTdHJpbmdBdHRyaWJ1dGVSZWNvbmNpbGlhdGlvbihzb2FwRmF1bHQsIFNPQVBDb25zdGFudHMuTkFNRV9BVFRSSUJVVEUsICJ0ZXN0IiwgU09BUFBhY2thZ2UuTGl0ZXJhbHMuU09BUF9GQVVMVF9fTkFNRSk7Ci0KLSAgICAgIHNvYXBGYXVsdC5zZXROYW1lc3BhY2VVUkkoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vdGVzdCIpOwotICAgICAgY2hlY2tTdHJpbmdBdHRyaWJ1dGVSZWNvbmNpbGlhdGlvbihzb2FwRmF1bHQsIFNPQVBDb25zdGFudHMuTkFNRVNQQUNFX0FUVFJJQlVURSwgInRlc3QiLCBTT0FQUGFja2FnZS5MaXRlcmFscy5TT0FQX0ZBVUxUX19OQU1FU1BBQ0VfVVJJKTsKLSAgICB9Ci0gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIEFzc2VydC5mYWlsKCJUZXN0IGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uOiAiICsgZS5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOyAvLyROT04tTkxTLTEkCi0gICAgfQotICB9Ci0gIAotICBwcml2YXRlIHZvaWQgYWRkU09BUEFkZHJlc3MoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotICB7Ci0gICAgU09BUEFkZHJlc3Mgc29hcEFkZHJlc3MgPSBTT0FQX0ZBQ1RPUlkuY3JlYXRlU09BUEFkZHJlc3MoKTsKLSAgICBzb2FwQWRkcmVzcy5zZXRMb2NhdGlvblVSSShMT0NBVElPTl9VUkkpOwotCi0gICAgc29hcEFkZHJlc3MudG9TdHJpbmcoKTsKLQotICAgIFN0cmluZyBzZXJ2aWNlTmFtZSA9ICJTT0FQVGVzdCI7IC8vJE5PTi1OTFMtMSQKLSAgICBRTmFtZSBzZXJ2aWNlUU5hbWUgPSBuZXcgUU5hbWUoZGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKSwgc2VydmljZU5hbWUpOwotICAgIFNlcnZpY2Ugc2VydmljZSA9IChTZXJ2aWNlKWRlZmluaXRpb24uZ2V0U2VydmljZShzZXJ2aWNlUU5hbWUpOwotICAgIHNlcnZpY2UudG9TdHJpbmcoKTsKLQotICAgIFBvcnQgcG9ydCA9IChQb3J0KXNlcnZpY2UuZ2V0UG9ydCgiU09BUFRlc3RTT0FQIik7IC8vJE5PTi1OTFMtMSQKLSAgICBwb3J0LmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBBZGRyZXNzKTsKLSAgICBwb3J0LnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgYWRkU09BUEJpbmRpbmcoQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgU09BUEJpbmRpbmcgc29hcEJpbmRpbmcgPSBTT0FQX0ZBQ1RPUlkuY3JlYXRlU09BUEJpbmRpbmcoKTsKLQotICAgIHNvYXBCaW5kaW5nLnNldFN0eWxlKFNUWUxFX0RPQ1VNRU5UKTsKLSAgICBzb2FwQmluZGluZy5zZXRUcmFuc3BvcnRVUkkoSFRUUF9UUkFOU1BPUlRfVVJJKTsKLQotICAgIHNvYXBCaW5kaW5nLnRvU3RyaW5nKCk7Ci0KLSAgICBiaW5kaW5nLmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBCaW5kaW5nKTsKLSAgICBiaW5kaW5nLnRvU3RyaW5nKCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgYWRkU09BUEJpbmRpbmdGYXVsdChCaW5kaW5nRmF1bHQgYmluZGluZ0ZhdWx0KQotICB7Ci0gICAgU3RyaW5nIGZhdWx0TmFtZSA9IGJpbmRpbmdGYXVsdC5nZXROYW1lKCk7Ci0KLSAgICBTT0FQRmF1bHQgc29hcEZhdWx0ID0gU09BUF9GQUNUT1JZLmNyZWF0ZVNPQVBGYXVsdCgpOwotICAgIHNvYXBGYXVsdC5zZXROYW1lKGZhdWx0TmFtZSk7Ci0gICAgc29hcEZhdWx0LnRvU3RyaW5nKCk7Ci0KLSAgICBzb2FwRmF1bHQuc2V0VXNlKFVTRV9MSVRFUkFMKTsKLQotICAgIGJpbmRpbmdGYXVsdC5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwRmF1bHQpOwotICAgIGJpbmRpbmdGYXVsdC50b1N0cmluZygpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGFkZFNPQVBCaW5kaW5nSW5wdXQoQmluZGluZ0lucHV0IGJpbmRpbmdJbnB1dCkKLSAgewotICAgIGJpbmRpbmdJbnB1dC50b1N0cmluZygpOwotCi0gICAgU09BUEJvZHkgaW5wdXRTT0FQQm9keSA9IFNPQVBfRkFDVE9SWS5jcmVhdGVTT0FQQm9keSgpOwotICAgIGJpbmRpbmdJbnB1dC5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChpbnB1dFNPQVBCb2R5KTsKLQotICAgIGlucHV0U09BUEJvZHkuc2V0VXNlKFVTRV9MSVRFUkFMKTsKLQotICAgIExpc3QgcGFydHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0gIk5ld09wZXJhdGlvblJlcXVlc3QiOyAvLyROT04tTkxTLTEkCi0gICAgRGVmaW5pdGlvbiBlbmNsb3NpbmdEZWZpbml0aW9uID0gYmluZGluZ0lucHV0LmdldEVuY2xvc2luZ0RlZmluaXRpb24oKTsKLSAgICBTdHJpbmcgdGFyZ2V0TmFtZXNwYWNlID0gZW5jbG9zaW5nRGVmaW5pdGlvbi5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLSAgICBRTmFtZSBtZXNzYWdlUU5hbWUgPSBuZXcgUU5hbWUodGFyZ2V0TmFtZXNwYWNlLCBtZXNzYWdlTmFtZSk7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZW5jbG9zaW5nRGVmaW5pdGlvbjsKLSAgICBNZXNzYWdlIG1lc3NhZ2UgPSAoTWVzc2FnZSlkZWZpbml0aW9uLmdldE1lc3NhZ2UobWVzc2FnZVFOYW1lKTsKLSAgICBQYXJ0IHBhcnQgPSAoUGFydCltZXNzYWdlLmdldFBhcnQoInBhcmFtZXRlcnMiKTsgLy8kTk9OLU5MUy0xJAotICAgIHBhcnRzLmFkZChwYXJ0KTsKLSAgICBpbnB1dFNPQVBCb2R5LnNldFBhcnRzKHBhcnRzKTsKLSAgICBpbnB1dFNPQVBCb2R5LnRvU3RyaW5nKCk7Ci0KLSAgICBTT0FQSGVhZGVyIHNvYXBIZWFkZXIgPSBTT0FQX0ZBQ1RPUlkuY3JlYXRlU09BUEhlYWRlcigpOwotICAgIGJpbmRpbmdJbnB1dC5hZGRFeHRlbnNpYmlsaXR5RWxlbWVudChzb2FwSGVhZGVyKTsKLQotICAgIHNvYXBIZWFkZXIuc2V0TWVzc2FnZShtZXNzYWdlUU5hbWUpOwotCi0gICAgU3RyaW5nIGhlYWRlclBhcnQgPSAiaGVhZGVyIjsgLy8kTk9OLU5MUy0xJAotICAgIHNvYXBIZWFkZXIuc2V0UGFydChoZWFkZXJQYXJ0KTsKLQotICAgIHNvYXBIZWFkZXIuc2V0VXNlKFVTRV9MSVRFUkFMKTsKLQotICAgIHNvYXBIZWFkZXIudG9TdHJpbmcoKTsKLQotICAgIGFkZFNPQVBIZWFkZXJGYXVsdChtZXNzYWdlUU5hbWUsIHNvYXBIZWFkZXIpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGFkZFNPQVBCaW5kaW5nT3V0cHV0KEJpbmRpbmdPdXRwdXQgYmluZGluZ091dHB1dCkKLSAgewotICAgIC8vIEV4ZXJjaXNlIHNvbWUgb2YgdGhlIFJQQyAvIGVuY29kZWQgc3R1ZmYuCi0KLSAgICBTT0FQQm9keSBzb2FwQm9keSA9IFNPQVBfRkFDVE9SWS5jcmVhdGVTT0FQQm9keSgpOwotICAgIHNvYXBCb2R5LnNldFVzZShVU0VfRU5DT0RFRCk7Ci0KLSAgICBFTGlzdCBlbmNvZGluZ1N0eWxlcyA9IG5ldyBCYXNpY0VMaXN0KCk7Ci0gICAgZW5jb2RpbmdTdHlsZXMuYWRkKCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIpOwotICAgIGVuY29kaW5nU3R5bGVzLmFkZCgidGVzdCIpOwotICAgIAotICAgIHNvYXBCb2R5LnNldEVuY29kaW5nU3R5bGVzKGVuY29kaW5nU3R5bGVzKTsKLSAgICAKLSAgICBMaXN0IGVFbmNvZGluZ1N0eWxlcyA9IHNvYXBCb2R5LmdldEVFbmNvZGluZ1N0eWxlcygpOwotICAgIGFzc2VydEVxdWFscygyLCBlRW5jb2RpbmdTdHlsZXMuc2l6ZSgpKTsKLSAgICAKLSAgICBzb2FwQm9keS50b1N0cmluZygpOwotCi0gICAgYmluZGluZ091dHB1dC50b1N0cmluZygpOwotICAgIGJpbmRpbmdPdXRwdXQuYWRkRXh0ZW5zaWJpbGl0eUVsZW1lbnQoc29hcEJvZHkpOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIGFkZFNPQVBIZWFkZXJGYXVsdChRTmFtZSBtZXNzYWdlUU5hbWUsIFNPQVBIZWFkZXIgc29hcEhlYWRlcikKLSAgewotICAgIFNPQVBIZWFkZXJGYXVsdCBzb2FwSGVhZGVyRmF1bHQgPSBTT0FQX0ZBQ1RPUlkuY3JlYXRlU09BUEhlYWRlckZhdWx0KCk7Ci0gICAgc29hcEhlYWRlci5hZGRTT0FQSGVhZGVyRmF1bHQoc29hcEhlYWRlckZhdWx0KTsKLQotICAgIExpc3Qgc29hcEhlYWRlckZhdWx0cyA9IHNvYXBIZWFkZXIuZ2V0U09BUEhlYWRlckZhdWx0cygpOwotICAgIGFzc2VydEVxdWFscygxLCBzb2FwSGVhZGVyRmF1bHRzLnNpemUoKSk7Ci0gICAgU09BUEhlYWRlckZhdWx0IGV4cGVjdGVkU29hcEhlYWRlckZhdWx0ID0gKFNPQVBIZWFkZXJGYXVsdClzb2FwSGVhZGVyRmF1bHRzLmdldCgwKTsKLSAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRTb2FwSGVhZGVyRmF1bHQsIHNvYXBIZWFkZXJGYXVsdCk7Ci0KLSAgICBzb2FwSGVhZGVyRmF1bHQuc2V0TWVzc2FnZShtZXNzYWdlUU5hbWUpOwotCi0gICAgU3RyaW5nIGhlYWRlckZhdWx0UGFydCA9ICJoZWFkZXJGYXVsdDEiOyAvLyROT04tTkxTLTEkCi0gICAgc29hcEhlYWRlckZhdWx0LnNldFBhcnQoaGVhZGVyRmF1bHRQYXJ0KTsKLQotICAgIC8vIFRlc3QgdGhlIHJlbW92ZSBwYXJ0LgotCi0gICAgc29hcEhlYWRlci5nZXRTT0FQSGVhZGVyRmF1bHRzKCkuY2xlYXIoKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBhZGRTT0FQT3BlcmF0aW9uKEJpbmRpbmdPcGVyYXRpb24gYmluZGluZ09wZXJhdGlvbikKLSAgewotICAgIFNPQVBPcGVyYXRpb24gc29hcE9wZXJhdGlvbiA9IFNPQVBfRkFDVE9SWS5jcmVhdGVTT0FQT3BlcmF0aW9uKCk7Ci0gICAgc29hcE9wZXJhdGlvbi5zZXRTdHlsZShTVFlMRV9ET0NVTUVOVCk7Ci0gICAgc29hcE9wZXJhdGlvbi5zZXRTb2FwQWN0aW9uVVJJKFNPQVBfQUNUSU9OX1VSSSk7Ci0KLSAgICBzb2FwT3BlcmF0aW9uLnRvU3RyaW5nKCk7Ci0KLSAgICBiaW5kaW5nT3BlcmF0aW9uLmFkZEV4dGVuc2liaWxpdHlFbGVtZW50KHNvYXBPcGVyYXRpb24pOwotICAgIGJpbmRpbmdPcGVyYXRpb24udG9TdHJpbmcoKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy9leHRlbnNpb25zL1dTRExFeHRlbnNpb25zVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL2V4dGVuc2lvbnMvV1NETEV4dGVuc2lvbnNUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNzc5YWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL2V4dGVuc2lvbnMvV1NETEV4dGVuc2lvbnNUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMuZXh0ZW5zaW9uczsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVTdHJ1Y3R1cmFsRmVhdHVyZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5XU0RMRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5BdHRyOwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci0KLQotLyoqCi0gKiBCYXNlIGNsYXNzIGZvciBXU0RMIGV4dGVuc2lvbiB0ZXN0cy4KLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIFdTRExFeHRlbnNpb25zVGVzdCBleHRlbmRzIFRlc3RDYXNlCi17Ci0gIC8qKgotICAgKiBDb25zdHJ1Y3RzIGEgdGVzdCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAKLSAgICogQHBhcmFtIG5hbWUgdGhlIHRlc3QgbmFtZS4KLSAgICovCi0gIHB1YmxpYyBXU0RMRXh0ZW5zaW9uc1Rlc3QoU3RyaW5nIG5hbWUpCi0gIHsKLSAgICBzdXBlcihuYW1lKTsKLSAgfQotCi0gIC8qKgotICAgKiBUZXN0cyBhIFN0cmluZyBhdHRyaWJ1dGUgcmVjb25jaWxpYXRpb24uIFRoZSBjb2RlIGNoYW5nZXMgdGhlIGF0dHJpYnV0ZSB2YWx1ZSB0aHJvdWdoIHRoZSBET00gYW5kIGNvbXBhcmVzIGl0IHdpdGggdGhlIHZhbHVlIG9idGFpbmVkIGJ5IGNhbGxpbmcgZUdldC4KLSAgICogQHBhcmFtIHdzZGxFbGVtZW50IHRoZSBXU0RMIGVsZW1lbnQgdG8gdGVzdAotICAgKiBAcGFyYW0gYXR0cmlidXRlTmFtZSB0aGUgYXR0cmlidXRlIG5hbWUKLSAgICogQHBhcmFtIGV4cGVjdGVkVmFsdWUgdGhlIGV4cGVjdGVkIHZhbHVlCi0gICAqIEBwYXJhbSBmZWF0dXJlIHRoZSBFTUYgZmVhdHVyZSBvZiB0aGUgYXR0cmlidXRlIHRvIHRlc3QuIAotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgY2hlY2tTdHJpbmdBdHRyaWJ1dGVSZWNvbmNpbGlhdGlvbigKLSAgICBXU0RMRWxlbWVudCB3c2RsRWxlbWVudCwKLSAgICBTdHJpbmcgYXR0cmlidXRlTmFtZSwKLSAgICBTdHJpbmcgZXhwZWN0ZWRWYWx1ZSwKLSAgICBFU3RydWN0dXJhbEZlYXR1cmUgZmVhdHVyZSkKLSAgewotICAgIEVPYmplY3QgZU9iamVjdCA9IChFT2JqZWN0KXdzZGxFbGVtZW50OwotCi0gICAgU3RyaW5nIGluaXRpYWxWYWx1ZSA9IChTdHJpbmcpZU9iamVjdC5lR2V0KGZlYXR1cmUpOwotICAgIAotICAgIEVsZW1lbnQgZWxlbWVudCA9IHdzZGxFbGVtZW50LmdldEVsZW1lbnQoKTsKLSAgICBlT2JqZWN0LmVVbnNldChmZWF0dXJlKTsKLSAgICBBdHRyIGF0dHJpYnV0ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZShhdHRyaWJ1dGVOYW1lKTsKLSAgICBhc3NlcnROdWxsKGF0dHJpYnV0ZSk7Ci0KLSAgICBlT2JqZWN0LmVTZXQoZmVhdHVyZSwgaW5pdGlhbFZhbHVlKTsKLSAgICAKLSAgICBhdHRyaWJ1dGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgYXR0cmlidXRlLnNldFZhbHVlKGV4cGVjdGVkVmFsdWUpOwotCi0gICAgU3RyaW5nIGFjdHVhbFZhbHVlID0gKFN0cmluZyllT2JqZWN0LmVHZXQoZmVhdHVyZSk7Ci0gICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkVmFsdWUsIGFjdHVhbFZhbHVlKTsKLSAgICAKLSAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICBhY3R1YWxWYWx1ZSA9IChTdHJpbmcpZU9iamVjdC5lR2V0KGZlYXR1cmUpOwotICAgIGFzc2VydE51bGwoYWN0dWFsVmFsdWUpOwotCi0gICAgZU9iamVjdC5lU2V0KGZlYXR1cmUsIGluaXRpYWxWYWx1ZSk7Ci0gIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9EZWZpbml0aW9uTG9hZGVyLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9EZWZpbml0aW9uTG9hZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiOTBiNmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3V0aWwvRGVmaW5pdGlvbkxvYWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsOwotCi0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlU2V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnV0aWwuV1NETFJlc291cmNlSW1wbDsKLQotCi0vKioKLSAqIEBhdXRob3IgS2lodXAgQm9vCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBEZWZpbml0aW9uTG9hZGVyCi17Ci0gIC8qKgotICAgKiBUaGlzIGNsYXNzIHByb3ZpZGVzIHN0YXRpYyBtZXRob2RzIG9ubHkuCi0gICAqLwotICBwcml2YXRlIERlZmluaXRpb25Mb2FkZXIoKQotICB7Ci0gIH0KLQotICBzdGF0aWMgcHVibGljIERlZmluaXRpb24gbG9hZChTdHJpbmcgZmlsZW5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIGxvYWQoZmlsZW5hbWUsIGZhbHNlKTsKLSAgfQotCi0gIHN0YXRpYyBwdWJsaWMgRGVmaW5pdGlvbiBsb2FkKFN0cmluZyBmaWxlbmFtZSwgYm9vbGVhbiB1c2VFeHRlbnNpb25GYWN0b3JpZXMpIHRocm93cyBJT0V4Y2VwdGlvbgotICB7Ci0gICAgcmV0dXJuIGxvYWQoZmlsZW5hbWUsIHVzZUV4dGVuc2lvbkZhY3RvcmllcywgZmFsc2UpOwotICB9Ci0KLSAgc3RhdGljIHB1YmxpYyBEZWZpbml0aW9uIGxvYWQoU3RyaW5nIGZpbGVuYW1lLCBib29sZWFuIHVzZUV4dGVuc2lvbkZhY3RvcmllcywgYm9vbGVhbiB0cmFja0xvY2F0aW9uKSB0aHJvd3MgSU9FeGNlcHRpb24KLSAgewotICAgIC8vIGZpbGVuYW1lIGlzIGFuIGFic29sdXRlIHBhdGgKLQotICAgIFVSSSB1cmkgPSBudWxsOwotICAgIHVyaSA9IFVSSS5jcmVhdGVGaWxlVVJJKGZpbGVuYW1lKTsKLQotICAgIFJlc291cmNlU2V0IHJlc291cmNlU2V0ID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOwotICAgIHJlc291cmNlU2V0LmdldEFkYXB0ZXJGYWN0b3JpZXMoKS5hZGQobmV3IFdTRExNb2RlbExvY2F0b3JBZGFwdGVyRmFjdG9yeSgpKTsKLSAgICByZXNvdXJjZVNldC5nZXRBZGFwdGVyRmFjdG9yaWVzKCkuYWRkKG5ldyBYU0RTY2hlbWFMb2NhdGlvblJlc29sdmVyQWRhcHRlckZhY3RvcnkoKSk7Ci0KLSAgICBXU0RMUmVzb3VyY2VJbXBsIHdzZGxNYWluUmVzb3VyY2UgPSAoV1NETFJlc291cmNlSW1wbClyZXNvdXJjZVNldC5jcmVhdGVSZXNvdXJjZShVUkkuY3JlYXRlVVJJKCIqLndzZGwiKSk7Ci0gICAgd3NkbE1haW5SZXNvdXJjZS5zZXRVUkkodXJpKTsKLSAgICBqYXZhLnV0aWwuTWFwIG1hcCA9IG5ldyBIYXNodGFibGUoKTsKLSAgICBtYXAucHV0KFdTRExSZXNvdXJjZUltcGwuQ09OVElOVUVfT05fTE9BRF9FUlJPUiwgQm9vbGVhbi52YWx1ZU9mKHRydWUpKTsKLSAgICBtYXAucHV0KFdTRExSZXNvdXJjZUltcGwuVVNFX0VYVEVOU0lPTl9GQUNUT1JJRVMsIEJvb2xlYW4udmFsdWVPZih1c2VFeHRlbnNpb25GYWN0b3JpZXMpKTsKLSAgICBtYXAucHV0KFdTRExSZXNvdXJjZUltcGwuVFJBQ0tfTE9DQVRJT04sIEJvb2xlYW4udmFsdWVPZih0cmFja0xvY2F0aW9uKSk7Ci0gICAgd3NkbE1haW5SZXNvdXJjZS5sb2FkKG1hcCk7Ci0KLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBudWxsOwotICAgIGZvciAoSXRlcmF0b3IgcmVzb3VyY2VzID0gcmVzb3VyY2VTZXQuZ2V0UmVzb3VyY2VzKCkuaXRlcmF0b3IoKTsgcmVzb3VyY2VzLmhhc05leHQoKTspCi0gICAgewotICAgICAgT2JqZWN0IHJlc291cmNlID0gcmVzb3VyY2VzLm5leHQoKTsKLSAgICAgIGlmIChyZXNvdXJjZSBpbnN0YW5jZW9mIFdTRExSZXNvdXJjZUltcGwpCi0gICAgICB7Ci0gICAgICAgIFdTRExSZXNvdXJjZUltcGwgd3NkbFJlc291cmNlID0gKFdTRExSZXNvdXJjZUltcGwpcmVzb3VyY2U7Ci0gICAgICAgIGRlZmluaXRpb24gPSB3c2RsUmVzb3VyY2UuZ2V0RGVmaW5pdGlvbigpOwotICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbDsKLSAgfQotCi0gIHN0YXRpYyBwdWJsaWMgdm9pZCBzdG9yZShEZWZpbml0aW9uIGRlZmluaXRpb24sIFN0cmluZyBmaWxlbmFtZSkgdGhyb3dzIElPRXhjZXB0aW9uCi0gIHsKLSAgICAvLyBmaWxlbmFtZSBpcyBhbiBhYnNvbHV0ZSBwYXRoCi0KLSAgICBSZXNvdXJjZSByZXNvdXJjZSA9IGRlZmluaXRpb24uZVJlc291cmNlKCk7Ci0gICAgcmVzb3VyY2Uuc2V0VVJJKFVSSS5jcmVhdGVGaWxlVVJJKGZpbGVuYW1lKSk7Ci0gICAgcmVzb3VyY2Uuc2F2ZShudWxsKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3V0aWwvRGVmaW5pdGlvblZpc2l0b3IuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy91dGlsL0RlZmluaXRpb25WaXNpdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZmE2MjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3V0aWwvRGVmaW5pdGlvblZpc2l0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdJbnB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5FeHRlbnNpYmxlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5GYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5TZXJ2aWNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlR5cGVzOwotCi0KLS8qKgotICogQGF1dGhvciBLaWh1cCBCb28KLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIERlZmluaXRpb25WaXNpdG9yIGV4dGVuZHMgVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIERlZmluaXRpb24gZGVmaW5pdGlvbjsKLQotICAvLyBBZGRlZCBmb3IgSlVuaXQKLSAgcHVibGljIERlZmluaXRpb25WaXNpdG9yKFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgRGVmaW5pdGlvblZpc2l0b3IoRGVmaW5pdGlvbiBkZWZpbml0aW9uKQotICB7Ci0gICAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjsKLSAgfQotCi0gIC8vIG1haW4gZW50cnkKLSAgcHVibGljIHZvaWQgdmlzaXQoKQotICB7Ci0gICAgdmlzaXREZWZpbml0aW9uKGRlZmluaXRpb24pOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXREZWZpbml0aW9uKERlZmluaXRpb24gZGVmKQotICB7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBkZWYuZ2V0RUltcG9ydHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEltcG9ydCgoSW1wb3J0KWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgICBUeXBlcyB0eXBlcyA9IGRlZi5nZXRFVHlwZXMoKTsKLSAgICBpZiAodHlwZXMgIT0gbnVsbCkKLSAgICAgIHZpc2l0VHlwZXModHlwZXMpOwotCi0gICAgaXRlcmF0b3IgPSBkZWYuZ2V0RU1lc3NhZ2VzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRNZXNzYWdlKChNZXNzYWdlKWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgICBpdGVyYXRvciA9IGRlZi5nZXRFUG9ydFR5cGVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRQb3J0VHlwZSgoUG9ydFR5cGUpaXRlcmF0b3IubmV4dCgpKTsKLQotICAgIGl0ZXJhdG9yID0gZGVmLmdldEVCaW5kaW5ncygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHZpc2l0QmluZGluZygoQmluZGluZylpdGVyYXRvci5uZXh0KCkpOwotCi0gICAgaXRlcmF0b3IgPSBkZWYuZ2V0RVNlcnZpY2VzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRTZXJ2aWNlKChTZXJ2aWNlKWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgICBpdGVyYXRvciA9IGRlZi5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudChkZWYsIChFeHRlbnNpYmlsaXR5RWxlbWVudClpdGVyYXRvci5uZXh0KCkpOwotCi0gIH0KLQotICBhYnN0cmFjdCBwcm90ZWN0ZWQgdm9pZCB2aXNpdEltcG9ydChJbXBvcnQgd3NkbEltcG9ydCk7Ci0KLSAgYWJzdHJhY3QgcHJvdGVjdGVkIHZvaWQgdmlzaXRUeXBlcyhUeXBlcyB0eXBlcyk7Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gbWVzc2FnZS5nZXRFUGFydHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdFBhcnQoKFBhcnQpaXRlcmF0b3IubmV4dCgpKTsKLSAgfQotCi0gIGFic3RyYWN0IHByb3RlY3RlZCB2b2lkIHZpc2l0UGFydChQYXJ0IHBhcnQpOwotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0UG9ydFR5cGUoUG9ydFR5cGUgcG9ydFR5cGUpCi0gIHsKLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IHBvcnRUeXBlLmdldEVPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRPcGVyYXRpb24oKE9wZXJhdGlvbilpdGVyYXRvci5uZXh0KCkpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRPcGVyYXRpb24oT3BlcmF0aW9uIG9wZXJhdGlvbikKLSAgewotICAgIElucHV0IGlucHV0ID0gb3BlcmF0aW9uLmdldEVJbnB1dCgpOwotICAgIHZpc2l0SW5wdXQoKElucHV0KWlucHV0KTsKLQotICAgIE91dHB1dCBvdXRwdXQgPSBvcGVyYXRpb24uZ2V0RU91dHB1dCgpOwotICAgIHZpc2l0T3V0cHV0KChPdXRwdXQpb3V0cHV0KTsKLQotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gb3BlcmF0aW9uLmdldEVGYXVsdHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEZhdWx0KChGYXVsdClpdGVyYXRvci5uZXh0KCkpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgdmlzaXRJbnB1dChJbnB1dCBpbnB1dCk7Ci0KLSAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgdmlzaXRPdXRwdXQoT3V0cHV0IG91dHB1dCk7Ci0KLSAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgdmlzaXRGYXVsdChGYXVsdCBmYXVsdCk7Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRCaW5kaW5nKEJpbmRpbmcgYmluZGluZykKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gYmluZGluZy5nZXRFQmluZGluZ09wZXJhdGlvbnMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEJpbmRpbmdPcGVyYXRpb24oKEJpbmRpbmdPcGVyYXRpb24paXRlcmF0b3IubmV4dCgpKTsKLQotICAgIGl0ZXJhdG9yID0gYmluZGluZy5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudChiaW5kaW5nLCAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ09wZXJhdGlvbihCaW5kaW5nT3BlcmF0aW9uIG9wZXJhdGlvbikKLSAgewotICAgIEJpbmRpbmdJbnB1dCBpbnB1dCA9IG9wZXJhdGlvbi5nZXRFQmluZGluZ0lucHV0KCk7Ci0gICAgdmlzaXRCaW5kaW5nSW5wdXQoKEJpbmRpbmdJbnB1dClpbnB1dCk7Ci0KLSAgICBCaW5kaW5nT3V0cHV0IG91dHB1dCA9IG9wZXJhdGlvbi5nZXRFQmluZGluZ091dHB1dCgpOwotICAgIHZpc2l0QmluZGluZ091dHB1dCgoQmluZGluZ091dHB1dClvdXRwdXQpOwotCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBvcGVyYXRpb24uZ2V0RUJpbmRpbmdGYXVsdHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEJpbmRpbmdGYXVsdCgoQmluZGluZ0ZhdWx0KWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgICBpdGVyYXRvciA9IG9wZXJhdGlvbi5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudChvcGVyYXRpb24sIChFeHRlbnNpYmlsaXR5RWxlbWVudClpdGVyYXRvci5uZXh0KCkpOwotCi0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmdJbnB1dChCaW5kaW5nSW5wdXQgaW5wdXQpCi0gIHsKLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGlucHV0LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KGlucHV0LCAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ091dHB1dChCaW5kaW5nT3V0cHV0IG91dHB1dCkKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gb3V0cHV0LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KG91dHB1dCwgKEV4dGVuc2liaWxpdHlFbGVtZW50KWl0ZXJhdG9yLm5leHQoKSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmdGYXVsdChCaW5kaW5nRmF1bHQgZmF1bHQpCi0gIHsKLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGZhdWx0LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KGZhdWx0LCAoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0U2VydmljZShTZXJ2aWNlIHNlcnZpY2UpCi0gIHsKLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IHNlcnZpY2UuZ2V0RVBvcnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRQb3J0KChQb3J0KWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgICBpdGVyYXRvciA9IHNlcnZpY2UuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoc2VydmljZSwgKEV4dGVuc2liaWxpdHlFbGVtZW50KWl0ZXJhdG9yLm5leHQoKSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFBvcnQoUG9ydCBwb3J0KQotICB7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBwb3J0LmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KHBvcnQsIChFeHRlbnNpYmlsaXR5RWxlbWVudClpdGVyYXRvci5uZXh0KCkpOwotICB9Ci0KLSAgYWJzdHJhY3QgcHJvdGVjdGVkIHZvaWQgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudChFeHRlbnNpYmxlRWxlbWVudCBvd25lciwgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9XU0RMNEpEZWZpbml0aW9uVmlzaXRvci5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3V0aWwvV1NETDRKRGVmaW5pdGlvblZpc2l0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjcwYmY3Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9XU0RMNEpEZWZpbml0aW9uVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbDsKLQotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQgamF2YXgud3NkbC5CaW5kaW5nOwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0ZhdWx0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ0lucHV0OwotaW1wb3J0IGphdmF4LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmdPdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuRmF1bHQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbXBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5JbnB1dDsKLWltcG9ydCBqYXZheC53c2RsLk1lc3NhZ2U7Ci1pbXBvcnQgamF2YXgud3NkbC5PcGVyYXRpb247Ci1pbXBvcnQgamF2YXgud3NkbC5PdXRwdXQ7Ci1pbXBvcnQgamF2YXgud3NkbC5QYXJ0OwotaW1wb3J0IGphdmF4LndzZGwuUG9ydDsKLWltcG9ydCBqYXZheC53c2RsLlBvcnRUeXBlOwotaW1wb3J0IGphdmF4LndzZGwuU2VydmljZTsKLWltcG9ydCBqYXZheC53c2RsLlR5cGVzOwotaW1wb3J0IGphdmF4LndzZGwuZXh0ZW5zaW9ucy5FeHRlbnNpYmlsaXR5RWxlbWVudDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLQotCi0vKioKLSAqIEBhdXRob3IgS2lodXAgQm9vCi0gKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBXU0RMNEpEZWZpbml0aW9uVmlzaXRvciBleHRlbmRzIFRlc3RDYXNlCi17Ci0gIHByb3RlY3RlZCBEZWZpbml0aW9uIGRlZmluaXRpb247Ci0KLSAgLy8gQWRkZWQgZm9yIEpVbml0Ci0gIHB1YmxpYyBXU0RMNEpEZWZpbml0aW9uVmlzaXRvcihTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9Ci0KLSAgcHJvdGVjdGVkIFdTREw0SkRlZmluaXRpb25WaXNpdG9yKERlZmluaXRpb24gZGVmaW5pdGlvbikKLSAgewotICAgIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247Ci0gIH0KLQotICAvLyBtYWluIGVudHJ5Ci0gIHB1YmxpYyB2b2lkIHZpc2l0KCkKLSAgewotICAgIHZpc2l0RGVmaW5pdGlvbihkZWZpbml0aW9uKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0RGVmaW5pdGlvbihEZWZpbml0aW9uIGRlZikKLSAgewotICAgIGphdmEudXRpbC5NYXAgaW1wb3J0cyA9IGRlZi5nZXRJbXBvcnRzKCk7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBpbXBvcnRzLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgSW1wb3J0IG15SW1wb3J0ID0gbnVsbDsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIG15SW1wb3J0ID0gKEltcG9ydCkoKGphdmEudXRpbC5BcnJheUxpc3QpaW1wb3J0cy5nZXQoaXRlcmF0b3IubmV4dCgpKSkuZ2V0KDApOwotICAgICAgdmlzaXRJbXBvcnQobXlJbXBvcnQpOwotICAgIH0KLQotICAgIFR5cGVzIHR5cGVzID0gZGVmLmdldFR5cGVzKCk7Ci0gICAgaWYgKHR5cGVzICE9IG51bGwpCi0gICAgICB2aXNpdFR5cGVzKHR5cGVzKTsKLQotICAgIGl0ZXJhdG9yID0gZGVmLmdldE1lc3NhZ2VzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRNZXNzYWdlKChNZXNzYWdlKWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgICBpdGVyYXRvciA9IGRlZi5nZXRQb3J0VHlwZXMoKS52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdFBvcnRUeXBlKChQb3J0VHlwZSlpdGVyYXRvci5uZXh0KCkpOwotCi0gICAgaXRlcmF0b3IgPSBkZWYuZ2V0QmluZGluZ3MoKS52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEJpbmRpbmcoKEJpbmRpbmcpaXRlcmF0b3IubmV4dCgpKTsKLQotICAgIGl0ZXJhdG9yID0gZGVmLmdldFNlcnZpY2VzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRTZXJ2aWNlKChTZXJ2aWNlKWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgICBpdGVyYXRvciA9IGRlZi5nZXRFeHRlbnNpYmlsaXR5RWxlbWVudHMoKS5pdGVyYXRvcigpOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgICB2aXNpdEV4dGVuc2liaWxpdHlFbGVtZW50KChFeHRlbnNpYmlsaXR5RWxlbWVudClpdGVyYXRvci5uZXh0KCkpOwotCi0gIH0KLQotICBhYnN0cmFjdCBwcm90ZWN0ZWQgdm9pZCB2aXNpdEltcG9ydChJbXBvcnQgd3NkbEltcG9ydCk7Ci0KLSAgYWJzdHJhY3QgcHJvdGVjdGVkIHZvaWQgdmlzaXRUeXBlcyhUeXBlcyB0eXBlcyk7Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gbWVzc2FnZS5nZXRQYXJ0cygpLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHZpc2l0UGFydCgoUGFydClpdGVyYXRvci5uZXh0KCkpOwotICB9Ci0KLSAgYWJzdHJhY3QgcHJvdGVjdGVkIHZvaWQgdmlzaXRQYXJ0KFBhcnQgcGFydCk7Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRQb3J0VHlwZShQb3J0VHlwZSBwb3J0VHlwZSkKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gcG9ydFR5cGUuZ2V0T3BlcmF0aW9ucygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHZpc2l0T3BlcmF0aW9uKChPcGVyYXRpb24paXRlcmF0b3IubmV4dCgpKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0T3BlcmF0aW9uKE9wZXJhdGlvbiBvcGVyYXRpb24pCi0gIHsKLSAgICBJbnB1dCBpbnB1dCA9IG9wZXJhdGlvbi5nZXRJbnB1dCgpOwotICAgIHZpc2l0SW5wdXQoKElucHV0KWlucHV0KTsKLQotICAgIE91dHB1dCBvdXRwdXQgPSBvcGVyYXRpb24uZ2V0T3V0cHV0KCk7Ci0gICAgdmlzaXRPdXRwdXQoKE91dHB1dClvdXRwdXQpOwotCi0gICAgamF2YS51dGlsLk1hcCBmYXVsdHMgPSBvcGVyYXRpb24uZ2V0RmF1bHRzKCk7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBmYXVsdHMua2V5U2V0KCkuaXRlcmF0b3IoKTsKLSAgICBGYXVsdCBmYXVsdCA9IG51bGw7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBmYXVsdCA9IChGYXVsdClmYXVsdHMuZ2V0KGl0ZXJhdG9yLm5leHQoKSk7Ci0gICAgICB2aXNpdEZhdWx0KGZhdWx0KTsKLSAgICB9Ci0gIH0KLQotICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCB2aXNpdElucHV0KElucHV0IGlucHV0KTsKLQotICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCB2aXNpdE91dHB1dChPdXRwdXQgb3V0cHV0KTsKLQotICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCB2aXNpdEZhdWx0KEZhdWx0IGZhdWx0KTsKLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmcoQmluZGluZyBiaW5kaW5nKQotICB7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBiaW5kaW5nLmdldEJpbmRpbmdPcGVyYXRpb25zKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRCaW5kaW5nT3BlcmF0aW9uKChCaW5kaW5nT3BlcmF0aW9uKWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgICBpdGVyYXRvciA9IGJpbmRpbmcuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudCgoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ09wZXJhdGlvbihCaW5kaW5nT3BlcmF0aW9uIG9wZXJhdGlvbikKLSAgewotICAgIEJpbmRpbmdJbnB1dCBpbnB1dCA9IG9wZXJhdGlvbi5nZXRCaW5kaW5nSW5wdXQoKTsKLSAgICB2aXNpdEJpbmRpbmdJbnB1dCgoQmluZGluZ0lucHV0KWlucHV0KTsKLQotICAgIEJpbmRpbmdPdXRwdXQgb3V0cHV0ID0gb3BlcmF0aW9uLmdldEJpbmRpbmdPdXRwdXQoKTsKLSAgICB2aXNpdEJpbmRpbmdPdXRwdXQoKEJpbmRpbmdPdXRwdXQpb3V0cHV0KTsKLQotICAgIGphdmEudXRpbC5NYXAgYmluZGluZ0ZhdWx0cyA9IG9wZXJhdGlvbi5nZXRCaW5kaW5nRmF1bHRzKCk7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBiaW5kaW5nRmF1bHRzLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgQmluZGluZ0ZhdWx0IGJpbmRpbmdGYXVsdCA9IG51bGw7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICB7Ci0gICAgICBiaW5kaW5nRmF1bHQgPSAoQmluZGluZ0ZhdWx0KWJpbmRpbmdGYXVsdHMuZ2V0KGl0ZXJhdG9yLm5leHQoKSk7Ci0gICAgICB2aXNpdEJpbmRpbmdGYXVsdChiaW5kaW5nRmF1bHQpOwotICAgIH0KLQotICAgIGl0ZXJhdG9yID0gb3BlcmF0aW9uLmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKEV4dGVuc2liaWxpdHlFbGVtZW50KWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ0lucHV0KEJpbmRpbmdJbnB1dCBpbnB1dCkKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gaW5wdXQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudCgoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ091dHB1dChCaW5kaW5nT3V0cHV0IG91dHB1dCkKLSAgewotICAgIEl0ZXJhdG9yIGl0ZXJhdG9yID0gb3V0cHV0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKEV4dGVuc2liaWxpdHlFbGVtZW50KWl0ZXJhdG9yLm5leHQoKSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmdGYXVsdChCaW5kaW5nRmF1bHQgZmF1bHQpCi0gIHsKLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IGZhdWx0LmdldEV4dGVuc2liaWxpdHlFbGVtZW50cygpLml0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICAgIHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoKEV4dGVuc2liaWxpdHlFbGVtZW50KWl0ZXJhdG9yLm5leHQoKSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFNlcnZpY2UoU2VydmljZSBzZXJ2aWNlKQotICB7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBzZXJ2aWNlLmdldFBvcnRzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRQb3J0KChQb3J0KWl0ZXJhdG9yLm5leHQoKSk7Ci0KLSAgICBpdGVyYXRvciA9IHNlcnZpY2UuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudCgoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0UG9ydChQb3J0IHBvcnQpCi0gIHsKLSAgICBJdGVyYXRvciBpdGVyYXRvciA9IHBvcnQuZ2V0RXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCkuaXRlcmF0b3IoKTsKLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgICAgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudCgoRXh0ZW5zaWJpbGl0eUVsZW1lbnQpaXRlcmF0b3IubmV4dCgpKTsKLSAgfQotCi0gIGFic3RyYWN0IHByb3RlY3RlZCB2b2lkIHZpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQoRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQpOwotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9XU0RMQ29udmVydGVyLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9XU0RMQ29udmVydGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlOWIwMjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3V0aWwvV1NETENvbnZlcnRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTk4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbDsKLQotCi1pbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotaW1wb3J0IGphdmF4LndzZGwuT3BlcmF0aW9uVHlwZTsKLWltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5PdXRwdXRLZXlzOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXI7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkJpbmRpbmdGYXVsdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nSW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZ09wZXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5CaW5kaW5nT3V0cHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJpbGl0eUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk1lc3NhZ2VSZWZlcmVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuT3BlcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLk91dHB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5QYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuUG9ydFR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlczsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLQotLyoqCi0gKiBAYXV0aG9yIEtpaHVwIEJvbwotICovCi1wdWJsaWMgY2xhc3MgV1NETENvbnZlcnRlciBleHRlbmRzIERlZmluaXRpb25WaXNpdG9yCi17Ci0gIHByaXZhdGUgRG9jdW1lbnQgZG9jOwotCi0gIHByaXZhdGUgRWxlbWVudCBkZXNjcmlwdGlvbjsKLQotICBwcml2YXRlIEVsZW1lbnQgY3VycmVudFR5cGVzOwotCi0gIHByaXZhdGUgRWxlbWVudCBjdXJyZW50U2VydmljZTsKLQotICBwcml2YXRlIEVsZW1lbnQgY3VycmVudEVuZHBvaW50OwotCi0gIHByaXZhdGUgRWxlbWVudCBjdXJyZW50SW50ZXJmYWNlOwotCi0gIHByaXZhdGUgRWxlbWVudCBjdXJyZW50T3BlcmF0aW9uOwotCi0gIHByaXZhdGUgRWxlbWVudCBjdXJyZW50QmluZGluZzsKLQotICBwcml2YXRlIEVsZW1lbnQgY3VycmVudEJpbmRpbmdPcGVyYXRpb247Ci0KLSAgcHJpdmF0ZSBFbGVtZW50IGN1cnJlbnRCaW5kaW5nSW5wdXQ7Ci0KLSAgcHJpdmF0ZSBFbGVtZW50IGN1cnJlbnRCaW5kaW5nT3V0cHV0OwotCi0gIHByaXZhdGUgRWxlbWVudCBjdXJyZW50QmluZGluZ0ZhdWx0OwotCi0gIHByaXZhdGUgU3RyaW5nIHdzZGxOYW1lc3BhY2VQcmVmaXg7Ci0KLSAgcHJpdmF0ZSBTdHJpbmcgeHNkTmFtZXNwYWNlUHJlZml4OwotCi0gIC8vIEFkZGVkIGZvciBKVW5pdAotICBwdWJsaWMgV1NETENvbnZlcnRlcihTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBwYXJhbSBkZWZpbml0aW9uCi0gICAqLwotICBwdWJsaWMgV1NETENvbnZlcnRlcihEZWZpbml0aW9uIGRlZmluaXRpb24pCi0gIHsKLSAgICBzdXBlcihkZWZpbml0aW9uKTsKLSAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNvbnN0cnVjdG9yIHN0dWIKLSAgfQotCi0gIHB1YmxpYyB2b2lkIGdlbmVyYXRlMjAoU3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBjcmVhdGVEb2N1bWVudCgpOwotICAgIHZpc2l0KCk7Ci0gICAgc2VyaWFsaXplKGZpbGVuYW1lKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBzZXJpYWxpemUoU3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBTb3VyY2UgZG9tU291cmNlID0gbmV3IERPTVNvdXJjZShkb2MpOwotICAgIFRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyID0gVHJhbnNmb3JtZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCkubmV3VHJhbnNmb3JtZXIoKTsKLSAgICB0cmFuc2Zvcm1lci5zZXRPdXRwdXRQcm9wZXJ0eShPdXRwdXRLZXlzLklOREVOVCwgInllcyIpOwotICAgIHRyYW5zZm9ybWVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuRU5DT0RJTkcsICJVVEYtOCIpOwotICAgIHRyYW5zZm9ybWVyLnNldE91dHB1dFByb3BlcnR5KCJ7aHR0cDovL3htbC5hcGFjaGUub3JnL3hzbHR9aW5kZW50LWFtb3VudCIsICI0Iik7Ci0gICAgdHJhbnNmb3JtZXIudHJhbnNmb3JtKGRvbVNvdXJjZSwgbmV3IFN0cmVhbVJlc3VsdChuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlbmFtZSkpKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBjcmVhdGVEb2N1bWVudCgpIHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCi0gIHsKLSAgICBkb2MgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCkubmV3RG9jdW1lbnRCdWlsZGVyKCkubmV3RG9jdW1lbnQoKTsKLSAgfQotCi0gIHByaXZhdGUgRWxlbWVudCBjcmVhdGVXU0RMRWxlbWVudChTdHJpbmcgbmFtZSkKLSAgewotICAgIEVsZW1lbnQgZWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDgvd3NkbCIsIG5hbWUpOwotICAgIGlmICh3c2RsTmFtZXNwYWNlUHJlZml4ICE9IG51bGwpCi0gICAgICBlbGVtZW50LnNldFByZWZpeCh3c2RsTmFtZXNwYWNlUHJlZml4KTsKLQotICAgIHJldHVybiBlbGVtZW50OwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHByb2Nlc3NEb2N1bWVudGF0aW9uKEVsZW1lbnQgZG9jRWxlbWVudCwgRWxlbWVudCBwYXJlbnQpCi0gIHsKLSAgICBpZiAoZG9jRWxlbWVudCA9PSBudWxsKQotICAgICAgcmV0dXJuOwotCi0gICAgRWxlbWVudCBhZG9wdGVkRG9jRWxlbWVudCA9IChFbGVtZW50KWRvYy5pbXBvcnROb2RlKGRvY0VsZW1lbnQsIHRydWUpOwotICAgIHBhcmVudC5hcHBlbmRDaGlsZChhZG9wdGVkRG9jRWxlbWVudCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdERlZmluaXRpb24oRGVmaW5pdGlvbiBkZWYpCi0gIHsKLSAgICBkZXNjcmlwdGlvbiA9IGNyZWF0ZVdTRExFbGVtZW50KCJkZXNjcmlwdGlvbiIpOwotICAgIHByb2Nlc3NEb2N1bWVudGF0aW9uKGRlZi5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBkZXNjcmlwdGlvbik7Ci0KLSAgICAvLyBUQkQgLSBEZXRlcm1pbmUgbGF0ZXIgaWYgd2Ugd2FudCB0byBjb252ZXJ0IHRoZSBkb2N1bWVudCB0byB1c2UgU09BUCAxLjIuCi0gICAgLy8gSG93ZXZlciBhZGRpbmcgdGhlc2UgdHdvIG5hbWVzcGFjZXMgbWF5IG5vdCBiZSBoYXJtZnVsLgotICAgIGRlc2NyaXB0aW9uLnNldEF0dHJpYnV0ZSgieG1sbnM6c29hcGVudiIsICJodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAtZW52ZWxvcCIpOwotICAgIGRlc2NyaXB0aW9uLnNldEF0dHJpYnV0ZSgieG1sbnM6d3NvYXAiLCAiaHR0cDovL3d3dy53My5vcmcvMjAwNC8wOC9zb2FwMTIiKTsKLQotICAgIFN0cmluZyB0YXJnZXROYW1lc3BhY2UgPSBkZWYuZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0gICAgaWYgKHRhcmdldE5hbWVzcGFjZSAhPSBudWxsKQotICAgICAgZGVzY3JpcHRpb24uc2V0QXR0cmlidXRlKCJ0YXJnZXROYW1lc3BhY2UiLCB0YXJnZXROYW1lc3BhY2UpOwotCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBkZWYuZ2V0TmFtZXNwYWNlcygpLmtleVNldCgpLml0ZXJhdG9yKCk7Ci0gICAgU3RyaW5nIHByZWZpeCA9IG51bGw7Ci0gICAgU3RyaW5nIG5hbWVzcGFjZSA9IG51bGw7Ci0gICAgLyoKLSAgICAgeG1sbnM6c29hcGVuYz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iCi0gICAgIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iKi8KLSAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIHsKLSAgICAgIHByZWZpeCA9IChTdHJpbmcpaXRlcmF0b3IubmV4dCgpOwotICAgICAgbmFtZXNwYWNlID0gZGVmLmdldE5hbWVzcGFjZShwcmVmaXgpOwotCi0gICAgICBpZiAoImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIi5lcXVhbHMobmFtZXNwYWNlKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKHByZWZpeC5sZW5ndGgoKSA9PSAwKSAvLyBtZWFudCB0byBiZSBkZWZhdWx0IG5hbWVzcGFjZQotICAgICAgICAgIGRlc2NyaXB0aW9uLnNldEF0dHJpYnV0ZSgieG1sbnMiLCAiaHR0cDovL3d3dy53My5vcmcvMjAwNC8wOC93c2RsIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGRlc2NyaXB0aW9uLnNldEF0dHJpYnV0ZSgieG1sbnM6IiArIHByZWZpeCwgImh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDgvd3NkbCIpOwotICAgICAgICAgIHdzZGxOYW1lc3BhY2VQcmVmaXggPSBwcmVmaXg7Ci0gICAgICAgICAgZGVzY3JpcHRpb24uc2V0UHJlZml4KHdzZGxOYW1lc3BhY2VQcmVmaXgpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotCi0gICAgICAvLyBTT0FQIDEuMgotICAgICAgaWYgKCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIi5lcXVhbHMobmFtZXNwYWNlKSkKLSAgICAgIHsKLSAgICAgICAgLy8gU09BUCAxLjIKLSAgICAgICAgZGVzY3JpcHRpb24uc2V0QXR0cmlidXRlKCJ4bWxuczoiICsgcHJlZml4LCAiaHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwLWVudmVsb3AiKTsKLQotICAgICAgICAvLyBXU0RMIDIuMCBiaW5kaW5nIGZvciBTT0FQIDEuMgotICAgICAgICBkZXNjcmlwdGlvbi5zZXRBdHRyaWJ1dGUoInhtbG5zOndzb2FwIiwgImh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDgvc29hcDEyIik7Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotCi0gICAgICAvL2lmICgiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iLmVxdWFscyhuYW1lc3BhY2UpKQotICAgICAgLy8gIGNvbnRpbnVlOwotCi0gICAgICBpZiAoImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIi5lcXVhbHMobmFtZXNwYWNlKSkKLSAgICAgICAgeHNkTmFtZXNwYWNlUHJlZml4ID0gcHJlZml4OyAvLyBXZSB3aWxsIHVzZSB0aGlzIGluIHZpc2l0SW1wb3J0KCkuCi0KLSAgICAgIGlmIChwcmVmaXgubGVuZ3RoKCkgPT0gMCkgLy8gbWVhbnQgdG8gYmUgZGVmYXVsdCBuYW1lc3BhY2UKLSAgICAgICAgZGVzY3JpcHRpb24uc2V0QXR0cmlidXRlKCJ4bWxucyIgKyBwcmVmaXgsIG5hbWVzcGFjZSk7Ci0gICAgICBlbHNlCi0gICAgICAgIGRlc2NyaXB0aW9uLnNldEF0dHJpYnV0ZSgieG1sbnM6IiArIHByZWZpeCwgbmFtZXNwYWNlKTsKLSAgICB9Ci0KLSAgICBkb2MuYXBwZW5kQ2hpbGQoZGVzY3JpcHRpb24pOwotICAgIHN1cGVyLnZpc2l0RGVmaW5pdGlvbihkZWYpOwotCi0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uVmlzaXRvciN2aXNpdEltcG9ydChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbXBvcnQpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEltcG9ydChJbXBvcnQgd3NkbEltcG9ydCkKLSAgewotICAgIC8vIERldGVybWluZSBpZiB3ZSA8aW1wb3J0PiBhIHNjaGVtYS4KLSAgICBpZiAoaW1wb3J0aW5nU2NoZW1hKHdzZGxJbXBvcnQpKQotICAgIHsKLSAgICAgIGN1cnJlbnRUeXBlcyA9IGNyZWF0ZVdTRExFbGVtZW50KCJ0eXBlcyIpOwotICAgICAgZGVzY3JpcHRpb24uYXBwZW5kQ2hpbGQoY3VycmVudFR5cGVzKTsKLQotICAgICAgLy8gIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vZm9vLmNvbSIgc2NoZW1hTG9jYXRpb249ICJiYXIueHNkIi8+Ci0gICAgICBFbGVtZW50IHNjaGVtYUltcG9ydCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiwgImltcG9ydCIpOwotICAgICAgaWYgKHhzZE5hbWVzcGFjZVByZWZpeCA9PSBudWxsKSAvLyBuZWVkIHRvIGFkZCBvbmUKLSAgICAgIHsKLSAgICAgICAgZGVzY3JpcHRpb24uc2V0QXR0cmlidXRlKCJ4bWxuczp4cyIsICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIpOwotICAgICAgICB4c2ROYW1lc3BhY2VQcmVmaXggPSAieHMiOwotICAgICAgICBzY2hlbWFJbXBvcnQuc2V0UHJlZml4KHhzZE5hbWVzcGFjZVByZWZpeCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmICghIiIuZXF1YWxzKHhzZE5hbWVzcGFjZVByZWZpeCkpIC8vIGl0IGlzIG5vdCBkZWZhdWx0IG5hbWVzcGFjZQotICAgICAgICBzY2hlbWFJbXBvcnQuc2V0UHJlZml4KHhzZE5hbWVzcGFjZVByZWZpeCk7Ci0KLSAgICAgIHNjaGVtYUltcG9ydC5zZXRBdHRyaWJ1dGUoIm5hbWVzcGFjZSIsIHdzZGxJbXBvcnQuZ2V0TmFtZXNwYWNlVVJJKCkpOwotICAgICAgc2NoZW1hSW1wb3J0LnNldEF0dHJpYnV0ZSgic2NoZW1hTG9jYXRpb24iLCB3c2RsSW1wb3J0LmdldExvY2F0aW9uVVJJKCkpOwotICAgICAgcHJvY2Vzc0RvY3VtZW50YXRpb24od3NkbEltcG9ydC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBzY2hlbWFJbXBvcnQpOwotICAgICAgY3VycmVudFR5cGVzLmFwcGVuZENoaWxkKHNjaGVtYUltcG9ydCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICBFbGVtZW50IGltcG9ydEVsZW1lbnQgPSB3c2RsSW1wb3J0LmdldEVsZW1lbnQoKTsKLSAgICAgIEVsZW1lbnQgYWRvcHRlZEltcG9ydEVsZW1lbnQgPSAoRWxlbWVudClkb2MuaW1wb3J0Tm9kZShpbXBvcnRFbGVtZW50LCB0cnVlKTsKLSAgICAgIHByb2Nlc3NEb2N1bWVudGF0aW9uKHdzZGxJbXBvcnQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgYWRvcHRlZEltcG9ydEVsZW1lbnQpOwotICAgICAgZGVzY3JpcHRpb24uYXBwZW5kQ2hpbGQoYWRvcHRlZEltcG9ydEVsZW1lbnQpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBpbXBvcnRpbmdTY2hlbWEoSW1wb3J0IG15SW1wb3J0KQotICB7Ci0gICAgaWYgKG15SW1wb3J0LmdldERlZmluaXRpb24oKSAhPSBudWxsKSAvLyBpdCBpcyBXU0RMIGltcG9ydAotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGVsc2UKLSAgICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwuRGVmaW5pdGlvblZpc2l0b3IjdmlzaXRUeXBlcyhvcmcuZWNsaXBzZS53c3Qud3NkbC5UeXBlcykKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0VHlwZXMoVHlwZXMgdHlwZXMpCi0gIHsKLSAgICAvLyBjdXJyZW50VHlwZXMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIGluIHZpc2l0SW1wb3J0KCkuCi0gICAgaWYgKGN1cnJlbnRUeXBlcyA9PSBudWxsKQotICAgIHsKLSAgICAgIGN1cnJlbnRUeXBlcyA9IGNyZWF0ZVdTRExFbGVtZW50KCJ0eXBlcyIpOwotICAgICAgcHJvY2Vzc0RvY3VtZW50YXRpb24odHlwZXMuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgY3VycmVudFR5cGVzKTsKLSAgICAgIGRlc2NyaXB0aW9uLmFwcGVuZENoaWxkKGN1cnJlbnRUeXBlcyk7Ci0gICAgfQotCi0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSB0eXBlcy5nZXRTY2hlbWFzKCkuaXRlcmF0b3IoKTsKLSAgICBYU0RTY2hlbWEgc2NoZW1hID0gbnVsbDsKLSAgICBFbGVtZW50IHNjaGVtYUVsZW1lbnQgPSBudWxsOwotICAgIEVsZW1lbnQgYWRvcHRlZFNjaGVtYUVsZW1lbnQgPSBudWxsOwotICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgewotICAgICAgc2NoZW1hID0gKFhTRFNjaGVtYSlpdGVyYXRvci5uZXh0KCk7Ci0gICAgICBzY2hlbWEudXBkYXRlRWxlbWVudCgpOwotICAgICAgc2NoZW1hRWxlbWVudCA9IHNjaGVtYS5nZXRFbGVtZW50KCk7Ci0gICAgICBhZG9wdGVkU2NoZW1hRWxlbWVudCA9IChFbGVtZW50KWRvYy5pbXBvcnROb2RlKHNjaGVtYUVsZW1lbnQsIHRydWUpOwotICAgICAgY3VycmVudFR5cGVzLmFwcGVuZENoaWxkKGFkb3B0ZWRTY2hlbWFFbGVtZW50KTsKLSAgICB9Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uVmlzaXRvciN2aXNpdFBhcnQob3JnLmVjbGlwc2Uud3N0LndzZGwuUGFydCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0UGFydChQYXJ0IHBhcnQpCi0gIHsKLSAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFBvcnRUeXBlKFBvcnRUeXBlIHBvcnRUeXBlKQotICB7Ci0gICAgY3VycmVudEludGVyZmFjZSA9IGNyZWF0ZVdTRExFbGVtZW50KCJpbnRlcmZhY2UiKTsKLSAgICBwcm9jZXNzRG9jdW1lbnRhdGlvbihwb3J0VHlwZS5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBjdXJyZW50SW50ZXJmYWNlKTsKLQotICAgIEVsZW1lbnQgcG9ydFR5cGVFbGVtZW50ID0gcG9ydFR5cGUuZ2V0RWxlbWVudCgpOwotICAgIGlmIChwb3J0VHlwZUVsZW1lbnQuaGFzQXR0cmlidXRlKCJuYW1lIikpCi0gICAgICBjdXJyZW50SW50ZXJmYWNlLnNldEF0dHJpYnV0ZSgibmFtZSIsIHBvcnRUeXBlRWxlbWVudC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSk7Ci0KLSAgICBkZXNjcmlwdGlvbi5hcHBlbmRDaGlsZChjdXJyZW50SW50ZXJmYWNlKTsKLSAgICBzdXBlci52aXNpdFBvcnRUeXBlKHBvcnRUeXBlKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0T3BlcmF0aW9uKE9wZXJhdGlvbiBvcGVyYXRpb24pCi0gIHsKLSAgICBjdXJyZW50T3BlcmF0aW9uID0gY3JlYXRlV1NETEVsZW1lbnQoIm9wZXJhdGlvbiIpOwotICAgIHByb2Nlc3NEb2N1bWVudGF0aW9uKG9wZXJhdGlvbi5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBjdXJyZW50T3BlcmF0aW9uKTsKLQotICAgIEVsZW1lbnQgb3BlcmF0aW9uRWxlbWVudCA9IG9wZXJhdGlvbi5nZXRFbGVtZW50KCk7Ci0gICAgaWYgKG9wZXJhdGlvbkVsZW1lbnQuaGFzQXR0cmlidXRlKCJuYW1lIikpCi0gICAgICBjdXJyZW50T3BlcmF0aW9uLnNldEF0dHJpYnV0ZSgibmFtZSIsIG9wZXJhdGlvbkVsZW1lbnQuZ2V0QXR0cmlidXRlKCJuYW1lIikpOwotCi0gICAgT3BlcmF0aW9uVHlwZSBvcFR5cGUgPSBvcGVyYXRpb24uZ2V0U3R5bGUoKTsKLSAgICBpZiAoT3BlcmF0aW9uVHlwZS5SRVFVRVNUX1JFU1BPTlNFID09IG9wVHlwZSkKLSAgICAgIGN1cnJlbnRPcGVyYXRpb24uc2V0QXR0cmlidXRlKCJwYXR0ZXJuIiwgImh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDMvd3NkbC9pbi1vdXQiKTsKLSAgICBlbHNlIGlmIChPcGVyYXRpb25UeXBlLlNPTElDSVRfUkVTUE9OU0UgPT0gb3BUeXBlKQotICAgICAgY3VycmVudE9wZXJhdGlvbi5zZXRBdHRyaWJ1dGUoInBhdHRlcm4iLCAiaHR0cDovL3d3dy53My5vcmcvMjAwNC8wMy93c2RsL291dC1pbiIpOwotICAgIGVsc2UgaWYgKE9wZXJhdGlvblR5cGUuTk9USUZJQ0FUSU9OID09IG9wVHlwZSkKLSAgICAgIGN1cnJlbnRPcGVyYXRpb24uc2V0QXR0cmlidXRlKCJwYXR0ZXJuIiwgImh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDMvd3NkbC9vdXQtb25seSIpOwotICAgIGVsc2UgaWYgKE9wZXJhdGlvblR5cGUuT05FX1dBWSA9PSBvcFR5cGUpCi0gICAgICBjdXJyZW50T3BlcmF0aW9uLnNldEF0dHJpYnV0ZSgicGF0dGVybiIsICJodHRwOi8vd3d3LnczLm9yZy8yMDA0LzAzL3dzZGwvaW4tb25seSIpOwotCi0gICAgY3VycmVudEludGVyZmFjZS5hcHBlbmRDaGlsZChjdXJyZW50T3BlcmF0aW9uKTsKLSAgICBzdXBlci52aXNpdE9wZXJhdGlvbihvcGVyYXRpb24pOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwuRGVmaW5pdGlvblZpc2l0b3IjdmlzaXRJbnB1dChvcmcuZWNsaXBzZS53c3Qud3NkbC5JbnB1dCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0SW5wdXQoSW5wdXQgaW5wdXQpCi0gIHsKLSAgICBFbGVtZW50IGN1cnJlbnRJbnB1dCA9IGNyZWF0ZVdTRExFbGVtZW50KCJpbnB1dCIpOwotICAgIHByb2Nlc3NEb2N1bWVudGF0aW9uKGlucHV0LmdldERvY3VtZW50YXRpb25FbGVtZW50KCksIGN1cnJlbnRJbnB1dCk7Ci0KLSAgICBFbGVtZW50IGlucHV0RWxlbWVudCA9IGlucHV0LmdldEVsZW1lbnQoKTsKLQotICAgIGlmIChpbnB1dEVsZW1lbnQuaGFzQXR0cmlidXRlKCJuYW1lIikpCi0gICAgICBjdXJyZW50SW5wdXQuc2V0QXR0cmlidXRlKCJtZXNzYWdlTGFiZWwiLCBpbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJuYW1lIikpOwotCi0gICAgRWxlbWVudCBwYXJ0RWxlbWVudCA9IGdldFBhcnRFbGVtZW50KGlucHV0KTsKLSAgICBpZiAocGFydEVsZW1lbnQuaGFzQXR0cmlidXRlKCJlbGVtZW50IikpCi0gICAgICBjdXJyZW50SW5wdXQuc2V0QXR0cmlidXRlKCJlbGVtZW50IiwgcGFydEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJlbGVtZW50IikpOwotICAgIC8vIFRCRCAtIHdoYXQgaWYgdGhlIHBhcnQgdXNlcyAidHlwZSI/Ci0KLSAgICBjdXJyZW50T3BlcmF0aW9uLmFwcGVuZENoaWxkKGN1cnJlbnRJbnB1dCk7Ci0gIH0KLQotICBwcml2YXRlIEVsZW1lbnQgZ2V0UGFydEVsZW1lbnQoTWVzc2FnZVJlZmVyZW5jZSBtZXNzYWdlUmVmKQotICB7Ci0gICAgSXRlcmF0b3IgaXRlcmF0b3IgPSBtZXNzYWdlUmVmLmdldEVNZXNzYWdlKCkuZ2V0RVBhcnRzKCkuaXRlcmF0b3IoKTsKLSAgICAvLyBUQkQgLSBmb3Igbm93LCB0YWtlIHRoZSBmaXJzdCBwYXJ0LgotICAgIFBhcnQgcGFydCA9IChQYXJ0KWl0ZXJhdG9yLm5leHQoKTsKLSAgICBFbGVtZW50IHBhcnRFbGVtZW50ID0gcGFydC5nZXRFbGVtZW50KCk7Ci0gICAgcmV0dXJuIHBhcnRFbGVtZW50OwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwuRGVmaW5pdGlvblZpc2l0b3IjdmlzaXRPdXRwdXQob3JnLmVjbGlwc2Uud3N0LndzZGwuT3V0cHV0KQotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRPdXRwdXQoT3V0cHV0IG91dHB1dCkKLSAgewotICAgIEVsZW1lbnQgY3VycmVudE91dHB1dCA9IGNyZWF0ZVdTRExFbGVtZW50KCJvdXRwdXQiKTsKLSAgICBwcm9jZXNzRG9jdW1lbnRhdGlvbihvdXRwdXQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgY3VycmVudE91dHB1dCk7Ci0KLSAgICBFbGVtZW50IG91dHB1dEVsZW1lbnQgPSBvdXRwdXQuZ2V0RWxlbWVudCgpOwotCi0gICAgaWYgKG91dHB1dEVsZW1lbnQuaGFzQXR0cmlidXRlKCJuYW1lIikpCi0gICAgICBjdXJyZW50T3V0cHV0LnNldEF0dHJpYnV0ZSgibWVzc2FnZUxhYmVsIiwgb3V0cHV0RWxlbWVudC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSk7Ci0KLSAgICBFbGVtZW50IHBhcnRFbGVtZW50ID0gZ2V0UGFydEVsZW1lbnQob3V0cHV0KTsKLSAgICBpZiAocGFydEVsZW1lbnQuaGFzQXR0cmlidXRlKCJlbGVtZW50IikpCi0gICAgICBjdXJyZW50T3V0cHV0LnNldEF0dHJpYnV0ZSgiZWxlbWVudCIsIHBhcnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZWxlbWVudCIpKTsKLSAgICAvLyBUQkQgLSB3aGF0IGlmIHRoZSBwYXJ0IHVzZXMgInR5cGUiPwotCi0gICAgY3VycmVudE9wZXJhdGlvbi5hcHBlbmRDaGlsZChjdXJyZW50T3V0cHV0KTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25WaXNpdG9yI3Zpc2l0RmF1bHQob3JnLmVjbGlwc2Uud3N0LndzZGwuRmF1bHQpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEZhdWx0KEZhdWx0IGZhdWx0KQotICB7Ci0gICAgLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotCi0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbC5EZWZpbml0aW9uVmlzaXRvciN2aXNpdEJpbmRpbmcob3JnLmVjbGlwc2Uud3N0LndzZGwuQmluZGluZykKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZyhCaW5kaW5nIGJpbmRpbmcpCi0gIHsKLSAgICBjdXJyZW50QmluZGluZyA9IGNyZWF0ZVdTRExFbGVtZW50KCJiaW5kaW5nIik7Ci0gICAgcHJvY2Vzc0RvY3VtZW50YXRpb24oYmluZGluZy5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBjdXJyZW50QmluZGluZyk7Ci0KLSAgICBFbGVtZW50IGJpbmRpbmdFbGVtZW50ID0gYmluZGluZy5nZXRFbGVtZW50KCk7Ci0gICAgaWYgKGJpbmRpbmdFbGVtZW50Lmhhc0F0dHJpYnV0ZSgibmFtZSIpKQotICAgICAgY3VycmVudEJpbmRpbmcuc2V0QXR0cmlidXRlKCJuYW1lIiwgYmluZGluZ0VsZW1lbnQuZ2V0QXR0cmlidXRlKCJuYW1lIikpOwotICAgIGlmIChiaW5kaW5nRWxlbWVudC5oYXNBdHRyaWJ1dGUoInR5cGUiKSkKLSAgICAgIGN1cnJlbnRCaW5kaW5nLnNldEF0dHJpYnV0ZSgiaW50ZXJmYWNlIiwgYmluZGluZ0VsZW1lbnQuZ2V0QXR0cmlidXRlKCJ0eXBlIikpOwotCi0gICAgLy8gVEJEIC0gaXMgdGhlIG5leHQgbGluZSBmaXhlZCBmb3IgU09BUD8KLSAgICBjdXJyZW50QmluZGluZy5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiaHR0cDovL3d3dy53My5vcmcvMjAwNC8wOC93c2RsL3NvYXAxMiIpOwotICAgIGN1cnJlbnRCaW5kaW5nLnNldEF0dHJpYnV0ZSgid3NvYXA6cHJvdG9jb2wiLCAiaHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwL2JpbmRpbmdzL0hUVFAiKTsKLSAgICBjdXJyZW50QmluZGluZy5zZXRBdHRyaWJ1dGUoIndzb2FwOm1lcERlZmF1bHQiLCAiaHR0cDovL3d3dy53My5vcmcuMjAwMy8wNS9zb2FwL21lcC9yZXF1ZXN0LXJlc3BvbnNlIik7Ci0KLSAgICBkZXNjcmlwdGlvbi5hcHBlbmRDaGlsZChjdXJyZW50QmluZGluZyk7Ci0gICAgc3VwZXIudmlzaXRCaW5kaW5nKGJpbmRpbmcpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRCaW5kaW5nT3BlcmF0aW9uKEJpbmRpbmdPcGVyYXRpb24gb3BlcmF0aW9uKQotICB7Ci0gICAgY3VycmVudEJpbmRpbmdPcGVyYXRpb24gPSBjcmVhdGVXU0RMRWxlbWVudCgib3BlcmF0aW9uIik7Ci0gICAgcHJvY2Vzc0RvY3VtZW50YXRpb24ob3BlcmF0aW9uLmdldERvY3VtZW50YXRpb25FbGVtZW50KCksIGN1cnJlbnRCaW5kaW5nT3BlcmF0aW9uKTsKLQotICAgIFN0cmluZyBvcGVyYXRpb25OYW1lID0gb3BlcmF0aW9uLmdldEVPcGVyYXRpb24oKS5nZXROYW1lKCk7Ci0KLSAgICAvLyBEZXRlcm1pbmUgcHJlZml4Ci0gICAgU3RyaW5nIHByZWZpeCA9IG51bGw7Ci0gICAgU3RyaW5nIHRhcmdldE5hbWVzcGFjZSA9IG51bGw7Ci0gICAgRGVmaW5pdGlvbiBkZWYgPSBvcGVyYXRpb24uZ2V0RW5jbG9zaW5nRGVmaW5pdGlvbigpOwotICAgIGlmIChkZWYgIT0gbnVsbCkKLSAgICAgIHRhcmdldE5hbWVzcGFjZSA9IGRlZi5nZXRUYXJnZXROYW1lc3BhY2UoKTsKLSAgICBpZiAodGFyZ2V0TmFtZXNwYWNlICE9IG51bGwpCi0gICAgICBwcmVmaXggPSBkZWYuZ2V0UHJlZml4KHRhcmdldE5hbWVzcGFjZSk7Ci0KLSAgICBpZiAocHJlZml4ID09IG51bGwpCi0gICAgICBwcmVmaXggPSAiIjsKLSAgICBlbHNlCi0gICAgICBwcmVmaXggKz0gIjoiOwotCi0gICAgY3VycmVudEJpbmRpbmdPcGVyYXRpb24uc2V0QXR0cmlidXRlKCJyZWYiLCBwcmVmaXggKyBvcGVyYXRpb25OYW1lKTsKLQotICAgIGN1cnJlbnRCaW5kaW5nLmFwcGVuZENoaWxkKGN1cnJlbnRCaW5kaW5nT3BlcmF0aW9uKTsKLSAgICBzdXBlci52aXNpdEJpbmRpbmdPcGVyYXRpb24ob3BlcmF0aW9uKTsKLSAgfQotCi0gIHByb3RlY3RlZCB2b2lkIHZpc2l0QmluZGluZ0lucHV0KEJpbmRpbmdJbnB1dCBpbnB1dCkKLSAgewotICAgIGN1cnJlbnRCaW5kaW5nSW5wdXQgPSBjcmVhdGVXU0RMRWxlbWVudCgiaW5wdXQiKTsKLSAgICBwcm9jZXNzRG9jdW1lbnRhdGlvbihpbnB1dC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBjdXJyZW50QmluZGluZ0lucHV0KTsKLQotICAgIEVsZW1lbnQgaW5wdXRFbGVtZW50ID0gaW5wdXQuZ2V0RWxlbWVudCgpOwotICAgIFN0cmluZyBpbnB1dE5hbWUgPSBpbnB1dC5nZXROYW1lKCk7Ci0gICAgaWYgKGlucHV0TmFtZSAhPSBudWxsKQotICAgICAgaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZSgibmFtZSIsIGlucHV0TmFtZSk7Ci0KLSAgICBjdXJyZW50QmluZGluZ09wZXJhdGlvbi5hcHBlbmRDaGlsZChjdXJyZW50QmluZGluZ0lucHV0KTsKLSAgICBzdXBlci52aXNpdEJpbmRpbmdJbnB1dChpbnB1dCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmdPdXRwdXQoQmluZGluZ091dHB1dCBvdXRwdXQpCi0gIHsKLSAgICBjdXJyZW50QmluZGluZ091dHB1dCA9IGNyZWF0ZVdTRExFbGVtZW50KCJvdXRwdXQiKTsKLSAgICBwcm9jZXNzRG9jdW1lbnRhdGlvbihvdXRwdXQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgY3VycmVudEJpbmRpbmdPdXRwdXQpOwotCi0gICAgRWxlbWVudCBvdXRwdXRFbGVtZW50ID0gb3V0cHV0LmdldEVsZW1lbnQoKTsKLSAgICBTdHJpbmcgb3V0cHV0TmFtZSA9IG91dHB1dC5nZXROYW1lKCk7Ci0gICAgaWYgKG91dHB1dE5hbWUgIT0gbnVsbCkKLSAgICAgIG91dHB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCJuYW1lIiwgb3V0cHV0TmFtZSk7Ci0KLSAgICBjdXJyZW50QmluZGluZ09wZXJhdGlvbi5hcHBlbmRDaGlsZChjdXJyZW50QmluZGluZ091dHB1dCk7Ci0gICAgc3VwZXIudmlzaXRCaW5kaW5nT3V0cHV0KG91dHB1dCk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdEJpbmRpbmdGYXVsdChCaW5kaW5nRmF1bHQgZmF1bHQpCi0gIHsKLSAgICBjdXJyZW50QmluZGluZ0ZhdWx0ID0gY3JlYXRlV1NETEVsZW1lbnQoImZhdWx0Iik7Ci0gICAgcHJvY2Vzc0RvY3VtZW50YXRpb24oZmF1bHQuZ2V0RG9jdW1lbnRhdGlvbkVsZW1lbnQoKSwgY3VycmVudEJpbmRpbmdGYXVsdCk7Ci0KLSAgICBFbGVtZW50IGZhdWx0RWxlbWVudCA9IGZhdWx0LmdldEVsZW1lbnQoKTsKLSAgICBTdHJpbmcgZmF1bHROYW1lID0gZmF1bHQuZ2V0TmFtZSgpOwotICAgIGlmIChmYXVsdE5hbWUgIT0gbnVsbCkKLSAgICAgIGZhdWx0RWxlbWVudC5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBmYXVsdE5hbWUpOwotCi0gICAgY3VycmVudEJpbmRpbmdPcGVyYXRpb24uYXBwZW5kQ2hpbGQoY3VycmVudEJpbmRpbmdGYXVsdCk7Ci0gICAgc3VwZXIudmlzaXRCaW5kaW5nRmF1bHQoZmF1bHQpOwotICB9Ci0KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRTZXJ2aWNlKFNlcnZpY2Ugc2VydmljZSkKLSAgewotICAgIGN1cnJlbnRTZXJ2aWNlID0gY3JlYXRlV1NETEVsZW1lbnQoInNlcnZpY2UiKTsKLSAgICBwcm9jZXNzRG9jdW1lbnRhdGlvbihzZXJ2aWNlLmdldERvY3VtZW50YXRpb25FbGVtZW50KCksIGN1cnJlbnRTZXJ2aWNlKTsKLQotICAgIEVsZW1lbnQgc2VydmljZUVsZW1lbnQgPSBzZXJ2aWNlLmdldEVsZW1lbnQoKTsKLSAgICBpZiAoc2VydmljZUVsZW1lbnQuaGFzQXR0cmlidXRlKCJuYW1lIikpCi0gICAgICBjdXJyZW50U2VydmljZS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBzZXJ2aWNlRWxlbWVudC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSk7Ci0KLSAgICBkZXNjcmlwdGlvbi5hcHBlbmRDaGlsZChjdXJyZW50U2VydmljZSk7Ci0gICAgc3VwZXIudmlzaXRTZXJ2aWNlKHNlcnZpY2UpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWwuRGVmaW5pdGlvblZpc2l0b3IjdmlzaXRQb3J0KG9yZy5lY2xpcHNlLndzdC53c2RsLlBvcnQpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCB2aXNpdFBvcnQoUG9ydCBwb3J0KQotICB7Ci0gICAgY3VycmVudEVuZHBvaW50ID0gY3JlYXRlV1NETEVsZW1lbnQoImVuZHBvaW50Iik7Ci0gICAgcHJvY2Vzc0RvY3VtZW50YXRpb24ocG9ydC5nZXREb2N1bWVudGF0aW9uRWxlbWVudCgpLCBjdXJyZW50RW5kcG9pbnQpOwotCi0gICAgRWxlbWVudCBwb3J0RWxlbWVudCA9IHBvcnQuZ2V0RWxlbWVudCgpOwotICAgIGlmIChwb3J0RWxlbWVudC5oYXNBdHRyaWJ1dGUoIm5hbWUiKSkKLSAgICAgIGN1cnJlbnRFbmRwb2ludC5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBwb3J0RWxlbWVudC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSk7Ci0gICAgaWYgKHBvcnRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgiYmluZGluZyIpKQotICAgICAgY3VycmVudEVuZHBvaW50LnNldEF0dHJpYnV0ZSgiYmluZGluZyIsIHBvcnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiYmluZGluZyIpKTsKLQotICAgIC8vIEFkZCBpbnRlcmZhY2UgdG8gY3VycmVudCBzZXJ2aWNlCi0gICAgQmluZGluZyBiaW5kaW5nID0gcG9ydC5nZXRFQmluZGluZygpOwotICAgIGlmIChiaW5kaW5nICE9IG51bGwpIC8vIGJpbmRpbmcgY291bGQgbm90IGJlIHJlc29sdmVkCi0gICAgewotICAgICAgRWxlbWVudCBiaW5kaW5nRWxlbWVudCA9IGJpbmRpbmcuZ2V0RWxlbWVudCgpOwotICAgICAgaWYgKGJpbmRpbmdFbGVtZW50Lmhhc0F0dHJpYnV0ZSgidHlwZSIpKQotICAgICAgICBjdXJyZW50U2VydmljZS5zZXRBdHRyaWJ1dGUoImludGVyZmFjZSIsIGJpbmRpbmdFbGVtZW50LmdldEF0dHJpYnV0ZSgidHlwZSIpKTsKLSAgICB9Ci0KLSAgICBjdXJyZW50U2VydmljZS5hcHBlbmRDaGlsZChjdXJyZW50RW5kcG9pbnQpOwotICAgIHN1cGVyLnZpc2l0UG9ydChwb3J0KTsKLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy51dGlsLkRlZmluaXRpb25WaXNpdG9yI3Zpc2l0RXh0ZW5zaWJpbGl0eUVsZW1lbnQob3JnLmVjbGlwc2Uud3N0LndzZGwuRXh0ZW5zaWJsZUVsZW1lbnQsIG9yZy5lY2xpcHNlLndzdC53c2RsLkV4dGVuc2liaWxpdHlFbGVtZW50KQotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdmlzaXRFeHRlbnNpYmlsaXR5RWxlbWVudChFeHRlbnNpYmxlRWxlbWVudCBvd25lciwgRXh0ZW5zaWJpbGl0eUVsZW1lbnQgZXh0ZW5zaWJpbGl0eUVsZW1lbnQpCi0gIHsKLSAgICAvLyBUQkQgLSBJdCBpcyBub3QganVzdCBTT0FQIGJpbmRpbmcKLSAgICBpZiAob3duZXIgaW5zdGFuY2VvZiBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlBvcnRJbXBsKQotICAgIHsKLSAgICAgIEVsZW1lbnQgc29hcEVsZW1lbnQgPSBleHRlbnNpYmlsaXR5RWxlbWVudC5nZXRFbGVtZW50KCk7Ci0gICAgICBpZiAoc29hcEVsZW1lbnQuaGFzQXR0cmlidXRlKCJsb2NhdGlvbiIpKQotICAgICAgICBjdXJyZW50RW5kcG9pbnQuc2V0QXR0cmlidXRlKCJhZGRyZXNzIiwgc29hcEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJsb2NhdGlvbiIpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIEVsZW1lbnQgZG9tRWxlbWVudCA9IGV4dGVuc2liaWxpdHlFbGVtZW50LmdldEVsZW1lbnQoKTsKLSAgICAgIEVsZW1lbnQgYWRvcHRlZERPTUVsZW1lbnQgPSAoRWxlbWVudClkb2MuaW1wb3J0Tm9kZShkb21FbGVtZW50LCB0cnVlKTsKLQotICAgICAgaWYgKG93bmVyIGluc3RhbmNlb2Ygb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5EZWZpbml0aW9uSW1wbCkKLSAgICAgICAgZGVzY3JpcHRpb24uaW5zZXJ0QmVmb3JlKGFkb3B0ZWRET01FbGVtZW50LCBkZXNjcmlwdGlvbi5nZXRGaXJzdENoaWxkKCkpOwotICAgICAgZWxzZSBpZiAob3duZXIgaW5zdGFuY2VvZiBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLlNlcnZpY2VJbXBsKQotICAgICAgICBjdXJyZW50U2VydmljZS5pbnNlcnRCZWZvcmUoYWRvcHRlZERPTUVsZW1lbnQsIGN1cnJlbnRTZXJ2aWNlLmdldEZpcnN0Q2hpbGQoKSk7Ci0gICAgICBlbHNlIGlmIChvd25lciBpbnN0YW5jZW9mIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuUG9ydFR5cGVJbXBsKQotICAgICAgICBjdXJyZW50SW50ZXJmYWNlLmluc2VydEJlZm9yZShhZG9wdGVkRE9NRWxlbWVudCwgY3VycmVudEludGVyZmFjZS5nZXRGaXJzdENoaWxkKCkpOwotICAgICAgZWxzZSBpZiAob3duZXIgaW5zdGFuY2VvZiBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLk9wZXJhdGlvbkltcGwpCi0gICAgICAgIGN1cnJlbnRPcGVyYXRpb24uaW5zZXJ0QmVmb3JlKGFkb3B0ZWRET01FbGVtZW50LCBjdXJyZW50T3BlcmF0aW9uLmdldEZpcnN0Q2hpbGQoKSk7Ci0gICAgICBlbHNlIGlmIChvd25lciBpbnN0YW5jZW9mIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ0ltcGwpCi0gICAgICAgIGN1cnJlbnRCaW5kaW5nLmluc2VydEJlZm9yZShhZG9wdGVkRE9NRWxlbWVudCwgY3VycmVudEJpbmRpbmcuZ2V0Rmlyc3RDaGlsZCgpKTsKLSAgICAgIGVsc2UgaWYgKG93bmVyIGluc3RhbmNlb2Ygb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nT3BlcmF0aW9uSW1wbCkKLSAgICAgICAgY3VycmVudEJpbmRpbmdPcGVyYXRpb24uaW5zZXJ0QmVmb3JlKGFkb3B0ZWRET01FbGVtZW50LCBjdXJyZW50QmluZGluZ09wZXJhdGlvbi5nZXRGaXJzdENoaWxkKCkpOwotICAgICAgZWxzZSBpZiAob3duZXIgaW5zdGFuY2VvZiBvcmcuZWNsaXBzZS53c3Qud3NkbC5pbnRlcm5hbC5pbXBsLkJpbmRpbmdJbnB1dEltcGwpCi0gICAgICAgIGN1cnJlbnRCaW5kaW5nSW5wdXQuaW5zZXJ0QmVmb3JlKGFkb3B0ZWRET01FbGVtZW50LCBjdXJyZW50QmluZGluZ0lucHV0LmdldEZpcnN0Q2hpbGQoKSk7Ci0gICAgICBlbHNlIGlmIChvd25lciBpbnN0YW5jZW9mIG9yZy5lY2xpcHNlLndzdC53c2RsLmludGVybmFsLmltcGwuQmluZGluZ091dHB1dEltcGwpCi0gICAgICAgIGN1cnJlbnRCaW5kaW5nT3V0cHV0Lmluc2VydEJlZm9yZShhZG9wdGVkRE9NRWxlbWVudCwgY3VycmVudEJpbmRpbmdPdXRwdXQuZ2V0Rmlyc3RDaGlsZCgpKTsKLSAgICAgIGVsc2UgaWYgKG93bmVyIGluc3RhbmNlb2Ygb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwuaW1wbC5CaW5kaW5nRmF1bHRJbXBsKQotICAgICAgICBjdXJyZW50QmluZGluZ0ZhdWx0Lmluc2VydEJlZm9yZShhZG9wdGVkRE9NRWxlbWVudCwgY3VycmVudEJpbmRpbmdGYXVsdC5nZXRGaXJzdENoaWxkKCkpOwotCi0gICAgfQotCi0gIH0KLQotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZSgpOwotCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgV1NETENvbnZlcnRlcigiQ29udmVydCIpCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdENvbnZlcnQoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgcmV0dXJuIHN1aXRlOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdENvbnZlcnQoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWYgPSBEZWZpbml0aW9uTG9hZGVyLmxvYWQoImQ6L2VjbGlwc2UzMDEvZWNsaXBzZS93b3Jrc3BhY2Uvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvUFRBVGltZURpc3RyaWJ1dGlvbi53c2RsIik7Ci0gICAgICBXU0RMQ29udmVydGVyIGNvbnZlcnRlciA9IG5ldyBXU0RMQ29udmVydGVyKGRlZik7Ci0gICAgICBjb252ZXJ0ZXIuZ2VuZXJhdGUyMCgiZDovZWNsaXBzZTMwMS9lY2xpcHNlL3dvcmtzcGFjZS9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9QVEFUaW1lRGlzdHJpYnV0aW9uMjAud3NkbCIpOwotICAgIH0KLSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQotICB7Ci0gICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIucnVuKHN1aXRlKCkpOwotICAgIC8qCi0gICAgIHRyeQotICAgICB7Ci0gICAgIERlZmluaXRpb24gZGVmID0gRGVmaW5pdGlvbkxvYWRlci5sb2FkKGFyZ3NbMF0pOwotICAgICBXU0RMQ29udmVydGVyIGNvbnZlcnRlciA9IG5ldyBXU0RMQ29udmVydGVyKGRlZik7Ci0gICAgIGNvbnZlcnRlci5nZW5lcmF0ZTIwKCJ0ZXN0MjAud3NkbCIpOwotICAgICB9Ci0gICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICAgewotICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICB9Ki8KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3V0aWwvV1NETE1vZGVsTG9jYXRvckFkYXB0ZXJGYWN0b3J5LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9XU0RMTW9kZWxMb2NhdG9yQWRhcHRlckZhY3RvcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc1N2E4Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9XU0RMTW9kZWxMb2NhdG9yQWRhcHRlckZhY3RvcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbDsKLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmllcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5pbXBsLkFkYXB0ZXJGYWN0b3J5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5pbXBsLkFkYXB0ZXJJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5jb21tb24udXJpcmVzb2x2ZXIuaW50ZXJuYWwucHJvdmlzaW9uYWwuVVJJUmVzb2x2ZXJQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuaW50ZXJuYWwudXRpbC5XU0RMTW9kZWxMb2NhdG9yOwotCi0KLXB1YmxpYyBjbGFzcyBXU0RMTW9kZWxMb2NhdG9yQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBBZGFwdGVyRmFjdG9yeUltcGwKLXsKLSAgcHJvdGVjdGVkIEN1c3RvbVdTRExNb2RlbExvY2F0b3IgY3VzdG9tV1NETE1vZGVsTG9jYXRvciA9IG5ldyBDdXN0b21XU0RMTW9kZWxMb2NhdG9yKCk7Ci0KLSAgY2xhc3MgQ3VzdG9tV1NETE1vZGVsTG9jYXRvciBleHRlbmRzIEFkYXB0ZXJJbXBsIGltcGxlbWVudHMgV1NETE1vZGVsTG9jYXRvcgotICB7Ci0gICAgcHVibGljIFN0cmluZyByZXNvbHZlVVJJKFN0cmluZyBiYXNlTG9jYXRpb24sIFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBsb2NhdGlvbikKLSAgICB7Ci0gICAgICByZXR1cm4gVVJJUmVzb2x2ZXJQbHVnaW4uY3JlYXRlUmVzb2x2ZXIoKS5yZXNvbHZlKGJhc2VMb2NhdGlvbiwgbmFtZXNwYWNlLCBsb2NhdGlvbik7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaXNBZGF0cGVyRm9yVHlwZShPYmplY3QgdHlwZSkKLSAgICB7Ci0gICAgICByZXR1cm4gdHlwZSA9PSBXU0RMTW9kZWxMb2NhdG9yLmNsYXNzOwotICAgIH0KLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzRmFjdG9yeUZvclR5cGUoT2JqZWN0IHR5cGUpCi0gIHsKLSAgICByZXR1cm4gdHlwZSA9PSBXU0RMTW9kZWxMb2NhdG9yLmNsYXNzOwotICB9Ci0KLSAgcHVibGljIEFkYXB0ZXIgYWRhcHROZXcoTm90aWZpZXIgdGFyZ2V0LCBPYmplY3QgdHlwZSkKLSAgewotICAgIHJldHVybiBjdXN0b21XU0RMTW9kZWxMb2NhdG9yOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9YTUxEaWZmLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9YTUxEaWZmLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1Y2U5MzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3V0aWwvWE1MRGlmZi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDcgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMudXRpbDsKLQotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLlByaW50U3RyZWFtOwotCi1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKLQotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOwotaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7Ci1pbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7Ci1pbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOwotCi0KLS8qKgotICogQGF1dGhvciBLaWh1cCBCb28KLSAqLwotcHVibGljIGNsYXNzIFhNTERpZmYKLXsKLSAgcHJpdmF0ZSBQcmludFN0cmVhbSBvdXQgPSBTeXN0ZW0ub3V0OwotCi0gIHByaXZhdGUgYm9vbGVhbiBESUZGX0VMRU1FTlRfTk9ERV9PTkxZID0gZmFsc2U7Ci0KLSAgcHVibGljIGJvb2xlYW4gZGlmZihTdHJpbmcgZmlsZTEsIFN0cmluZyBmaWxlMikgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24KLSAgewotICAgIHJldHVybiBkaWZmKGZpbGUxLCBmaWxlMiwgZmFsc2UpOwotICB9Ci0KLSAgcHVibGljIGJvb2xlYW4gZGlmZihTdHJpbmcgZmlsZTEsIFN0cmluZyBmaWxlMiwgYm9vbGVhbiBlbGVtZW50T25seSkgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24KLSAgewotICAgIERvY3VtZW50IGRvYzEgPSBnZXREb2N1bWVudChmaWxlMSk7Ci0gICAgRG9jdW1lbnQgZG9jMiA9IGdldERvY3VtZW50KGZpbGUyKTsKLSAgICBESUZGX0VMRU1FTlRfTk9ERV9PTkxZID0gZWxlbWVudE9ubHk7Ci0gICAgcmV0dXJuIGRpZmYoZG9jMSwgZG9jMik7Ci0gIH0KLQotICBwdWJsaWMgYm9vbGVhbiBkaWZmKERvY3VtZW50IGRvYzEsIERvY3VtZW50IGRvYzIpCi0gIHsKLSAgICBFbGVtZW50IHJvb3QxID0gZG9jMS5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICBFbGVtZW50IHJvb3QyID0gZG9jMi5nZXREb2N1bWVudEVsZW1lbnQoKTsKLSAgICByZXR1cm4gY29tcGFyZU5vZGVzKHJvb3QxLCByb290Mik7Ci0gIH0KLQotICBwcml2YXRlIERvY3VtZW50IGdldERvY3VtZW50KFN0cmluZyB1cmkpIHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sIElPRXhjZXB0aW9uCi0gIHsKLSAgICBEb2N1bWVudEJ1aWxkZXIgYnVpbGRlciA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKLSAgICBEb2N1bWVudCBkb2MgPSBidWlsZGVyLnBhcnNlKHVyaSk7Ci0gICAgcmV0dXJuIGRvYzsKLSAgfQotCi0gIHByaXZhdGUgYm9vbGVhbiBjb21wYXJlTm9kZXMoTm9kZSBub2RlMSwgTm9kZSBub2RlMikKLSAgewotICAgIGlmIChESUZGX0VMRU1FTlRfTk9ERV9PTkxZKQotICAgIHsKLSAgICAgIC8vIENvbXBhcmUgb25seSBlbGVtZW50IG5vZGVzIGluIHRoZSBjaGlsZHJlbi4KLSAgICAgIGZpbHRlck5vbkVsZW1lbnROb2Rlcyhub2RlMSk7Ci0gICAgICBmaWx0ZXJOb25FbGVtZW50Tm9kZXMobm9kZTIpOwotICAgIH0KLQotICAgIGlmIChub2RlMS5nZXROb2RlVHlwZSgpICE9IG5vZGUyLmdldE5vZGVUeXBlKCkgfHwgbm9kZTEuZ2V0Tm9kZU5hbWUoKSAhPSBub2RlMi5nZXROb2RlTmFtZSgpKQotICAgIHsKLSAgICAgIHByaW50bG4oIk5vZGUgdHlwZSBvciBub2RlIG5hbWUgaXMgZGlmZmVyZW50OiIpOwotICAgICAgcHJpbnRsbigiTm9kZSAxOiAiICsgbm9kZTEuZ2V0Tm9kZU5hbWUoKSk7Ci0gICAgICBwcmludGxuKCJOb2RlIDI6ICIgKyBub2RlMi5nZXROb2RlTmFtZSgpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIWNvbXBhcmVBdHRyaWJ1dGVzKG5vZGUxLCBub2RlMikpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOb2RlTGlzdCBub2RlTGlzdDEgPSBub2RlMS5nZXRDaGlsZE5vZGVzKCk7Ci0gICAgTm9kZUxpc3Qgbm9kZUxpc3QyID0gbm9kZTIuZ2V0Q2hpbGROb2RlcygpOwotICAgIGlmIChub2RlTGlzdDEuZ2V0TGVuZ3RoKCkgIT0gbm9kZUxpc3QyLmdldExlbmd0aCgpKQotICAgIHsKLSAgICAgIHByaW50bG4oIlRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaXMgZGlmZmVyZW50OiIpOwotICAgICAgLy9wcmludGxuKCJOb2RlIDE6ICIgKyBub2RlTGlzdDEuZ2V0TGVuZ3RoKCkpOwotICAgICAgLy9wcmludGxuKCJOb2RlIDI6ICIgKyBub2RlTGlzdDIuZ2V0TGVuZ3RoKCkpOwotICAgICAgcHJpbnRsbigiTm9kZSAxOiAiICsgbm9kZTEuZ2V0Tm9kZU5hbWUoKSk7Ci0gICAgICBwcmludGxuKCJOb2RlIDI6ICIgKyBub2RlMi5nZXROb2RlTmFtZSgpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7Ci0gICAgaW50IGxlbmd0aCA9IG5vZGVMaXN0MS5nZXRMZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIHJlc3VsdCA9IGNvbXBhcmVOb2Rlcyhub2RlTGlzdDEuaXRlbShpKSwgbm9kZUxpc3QyLml0ZW0oaSkpOwotICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgZmlsdGVyTm9uRWxlbWVudE5vZGVzKE5vZGUgbm9kZSkKLSAgewotICAgIE5vZGUgZmlyc3RDaGlsZCA9IG5vZGUuZ2V0Rmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChmaXJzdENoaWxkLmdldE5vZGVUeXBlKCkgIT0gTm9kZS5FTEVNRU5UX05PREUpCi0gICAgewotICAgICAgbm9kZS5yZW1vdmVDaGlsZChmaXJzdENoaWxkKTsKLSAgICAgIGZpcnN0Q2hpbGQgPSBub2RlLmdldEZpcnN0Q2hpbGQoKTsKLSAgICB9Ci0KLSAgICBOb2RlIHNpYmxpbmcgPSBmaXJzdENoaWxkLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgTm9kZSBkZWxldGVNZSA9IG51bGw7Ci0gICAgd2hpbGUgKHNpYmxpbmcgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAoc2libGluZy5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgewotICAgICAgICBkZWxldGVNZSA9IHNpYmxpbmc7Ci0gICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLmdldE5leHRTaWJsaW5nKCk7Ci0gICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQoZGVsZXRlTWUpOwotICAgICAgfQotCi0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBib29sZWFuIGNvbXBhcmVBdHRyaWJ1dGVzKE5vZGUgbm9kZTEsIE5vZGUgbm9kZTIpCi0gIHsKLSAgICBOYW1lZE5vZGVNYXAgbm9kZU1hcDEgPSBub2RlMS5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgTmFtZWROb2RlTWFwIG5vZGVNYXAyID0gbm9kZTIuZ2V0QXR0cmlidXRlcygpOwotCi0gICAgaWYgKG5vZGVNYXAxID09IG51bGwgfHwgbm9kZU1hcDIgPT0gbnVsbCkKLSAgICB7Ci0gICAgICBpZiAobm9kZU1hcDEgPT0gbnVsbCAmJiBub2RlTWFwMiA9PSBudWxsKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChub2RlTWFwMS5nZXRMZW5ndGgoKSAhPSBub2RlTWFwMi5nZXRMZW5ndGgoKSkKLSAgICB7Ci0gICAgICBwcmludGxuKCJUaGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgaXMgZGlmZmVyZW50OiIpOwotICAgICAgcHJpbnRsbigiTm9kZSAxOiAiICsgbm9kZTEuZ2V0Tm9kZU5hbWUoKSk7Ci0gICAgICBwcmludGxuKCJOb2RlIDI6ICIgKyBub2RlMi5nZXROb2RlTmFtZSgpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBOb2RlIGF0dHJOb2RlMSA9IG51bGw7Ci0gICAgTm9kZSBhdHRyTm9kZTIgPSBudWxsOwotICAgIGludCBsZW5ndGggPSBub2RlTWFwMS5nZXRMZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgIGF0dHJOb2RlMSA9IG5vZGVNYXAxLml0ZW0oaSk7Ci0gICAgICBhdHRyTm9kZTIgPSBub2RlTWFwMi5nZXROYW1lZEl0ZW0oYXR0ck5vZGUxLmdldE5vZGVOYW1lKCkpOwotICAgICAgaWYgKGF0dHJOb2RlMiA9PSBudWxsKQotICAgICAgewotICAgICAgICBwcmludGxuKCJUaGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCBpbiBOb2RlIDI6ICIgKyBhdHRyTm9kZTEuZ2V0Tm9kZU5hbWUoKSk7Ci0gICAgICAgIHByaW50bG4oIk5vZGUgMTogIiArIG5vZGUxLmdldE5vZGVOYW1lKCkpOwotICAgICAgICBwcmludGxuKCJOb2RlIDI6ICIgKyBub2RlMi5nZXROb2RlTmFtZSgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoIWF0dHJOb2RlMS5nZXROb2RlVmFsdWUoKS5lcXVhbHMoYXR0ck5vZGUyLmdldE5vZGVWYWx1ZSgpKSkKLSAgICAgIHsKLSAgICAgICAgcHJpbnRsbigiVGhlIGF0dHJpYnV0ZSB2YWx1ZXMgYXJlIGRpZmZlcmVudDoiKTsKLSAgICAgICAgcHJpbnRsbigiTm9kZSAxOiAiICsgbm9kZTEuZ2V0Tm9kZU5hbWUoKSArICIsIiArIGF0dHJOb2RlMS5nZXROb2RlVmFsdWUoKSk7Ci0gICAgICAgIHByaW50bG4oIk5vZGUgMjogIiArIG5vZGUyLmdldE5vZGVOYW1lKCkgKyAiLCIgKyBhdHRyTm9kZTIuZ2V0Tm9kZVZhbHVlKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcHJpdmF0ZSB2b2lkIHByaW50bG4oU3RyaW5nIHMpCi0gIHsKLSAgICBvdXQucHJpbnRsbihzKTsKLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy91dGlsL1hTRFNjaGVtYUxvY2F0aW9uUmVzb2x2ZXJBZGFwdGVyRmFjdG9yeS5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3V0aWwvWFNEU2NoZW1hTG9jYXRpb25SZXNvbHZlckFkYXB0ZXJGYWN0b3J5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlOWZiMjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3Rlc3RzL3V0aWwvWFNEU2NoZW1hTG9jYXRpb25SZXNvbHZlckFkYXB0ZXJGYWN0b3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWw7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuaW1wbC5BZGFwdGVyRmFjdG9yeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEU2NoZW1hTG9jYXRpb25SZXNvbHZlcjsKLQotCi1wdWJsaWMgY2xhc3MgWFNEU2NoZW1hTG9jYXRpb25SZXNvbHZlckFkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgQWRhcHRlckZhY3RvcnlJbXBsCi17Ci0gIHByb3RlY3RlZCBYU0RTY2hlbWFMb2NhdGlvblJlc29sdmVySW1wbCBzY2hlbWFMb2NhdG9yID0gbmV3IFhTRFNjaGVtYUxvY2F0aW9uUmVzb2x2ZXJJbXBsKCk7Ci0KLSAgcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3QgdHlwZSkKLSAgewotICAgIHJldHVybiB0eXBlID09IFhTRFNjaGVtYUxvY2F0aW9uUmVzb2x2ZXIuY2xhc3M7Ci0gIH0KLQotICBwdWJsaWMgQWRhcHRlciBhZGFwdE5ldyhOb3RpZmllciB0YXJnZXQsIE9iamVjdCB0eXBlKQotICB7Ci0gICAgcmV0dXJuIHNjaGVtYUxvY2F0b3I7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy91dGlsL1hTRFNjaGVtYUxvY2F0aW9uUmVzb2x2ZXJJbXBsLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdGVzdHMvdXRpbC9YU0RTY2hlbWFMb2NhdGlvblJlc29sdmVySW1wbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDJmZWU1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC90ZXN0cy91dGlsL1hTRFNjaGVtYUxvY2F0aW9uUmVzb2x2ZXJJbXBsLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLnV0aWw7Ci0KLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LmltcGwuQWRhcHRlckltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi51cmlyZXNvbHZlci5pbnRlcm5hbC5wcm92aXNpb25hbC5VUklSZXNvbHZlclBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC51dGlsLlhTRFNjaGVtYUxvY2F0aW9uUmVzb2x2ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEU2NoZW1hTG9jYXRvcjsKLQotCi1wdWJsaWMgY2xhc3MgWFNEU2NoZW1hTG9jYXRpb25SZXNvbHZlckltcGwgZXh0ZW5kcyBBZGFwdGVySW1wbCBpbXBsZW1lbnRzIFhTRFNjaGVtYUxvY2F0aW9uUmVzb2x2ZXIKLXsKLSAgcHVibGljIFN0cmluZyByZXNvbHZlU2NoZW1hTG9jYXRpb24oWFNEU2NoZW1hIHhzZFNjaGVtYSwgU3RyaW5nIG5hbWVzcGFjZVVSSSwgU3RyaW5nIHNjaGVtYUxvY2F0aW9uVVJJKQotICB7Ci0gICAgU3RyaW5nIGJhc2VMb2NhdGlvbiA9IHhzZFNjaGVtYS5nZXRTY2hlbWFMb2NhdGlvbigpOwotICAgIHJldHVybiBVUklSZXNvbHZlclBsdWdpbi5jcmVhdGVSZXNvbHZlcigpLnJlc29sdmUoYmFzZUxvY2F0aW9uLCBuYW1lc3BhY2VVUkksIHNjaGVtYUxvY2F0aW9uVVJJKTsKLSAgfQotCi0gIHB1YmxpYyBib29sZWFuIGlzQWRhdHBlckZvclR5cGUoT2JqZWN0IHR5cGUpCi0gIHsKLSAgICByZXR1cm4gdHlwZSA9PSBYU0RTY2hlbWFMb2NhdG9yLmNsYXNzOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy90ZXN0LnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3Rlc3QueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWU3ZWQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzL3Rlc3QueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci0KLTxwcm9qZWN0IG5hbWU9InRlc3RzdWl0ZSIgZGVmYXVsdD0icnVuIiBiYXNlZGlyPSIuIj4KLQk8IS0tIFRoZSBwcm9wZXJ0eSAke2VjbGlwc2UtaG9tZX0gc2hvdWxkIGJlIHBhc3NlZCBpbnRvIHRoaXMgc2NyaXB0IC0tPgotCTwhLS0gU2V0IGEgbWVhbmluZ2Z1bCBkZWZhdWx0IHZhbHVlIGZvciB3aGVuIGl0IGlzIG5vdC4gLS0+Ci0JPCEtLSA8cHJvcGVydHkgbmFtZT0iZWNsaXBzZS1ob21lIiB2YWx1ZT0iJHtiYXNlZGlyfVwuLlwuLiIgLz4gLS0+Ci0JCQotCTxlY2hvIG1lc3NhZ2U9ImJhc2VkaXIgJHtiYXNlZGlyfSIgLz4KLQk8ZWNobyBtZXNzYWdlPSJlY2xpcHNlIHBsYWNlICR7ZWNsaXBzZS1ob21lfSIgLz4KLQkKLQk8IS0tIHNldHMgdGhlIHByb3BlcnRpZXMgcGx1Z2luLW5hbWUsIGFuZCBsaWJyYXJ5LWZpbGUgLS0+Ci0JPHByb3BlcnR5IG5hbWU9InBsdWdpbi1uYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMiIC8+Ci0JPHByb3BlcnR5IG5hbWU9ImxpYnJhcnktZmlsZSIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRlc3RfMy4xLjAvbGlicmFyeS54bWwiIC8+Ci0KLQk8IS0tIFRoaXMgdGFyZ2V0IGhvbGRzIGFsbCBpbml0aWFsaXphdGlvbiBjb2RlIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBmb3IgLS0+Ci0JPCEtLSBhbGwgdGVzdHMgdGhhdCBhcmUgdG8gYmUgcnVuLiBJbml0aWFsaXphdGlvbiBmb3IgaW5kaXZpZHVhbCB0ZXN0cyAtLT4KLQk8IS0tIHNob3VsZCBiZSBkb25lIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgc3VpdGUgdGFyZ2V0LiAtLT4KLQk8dGFyZ2V0IG5hbWU9ImluaXQiPgotCQk8dHN0YW1wLz4KLQkJPGRlbGV0ZT4KLQkJCTxmaWxlc2V0IGRpcj0iJHtlY2xpcHNlLWhvbWV9IiBpbmNsdWRlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMuKnhtbCIgLz4KLQkJPC9kZWxldGU+Ci0JPC90YXJnZXQ+Ci0KLQk8IS0tIFRoaXMgdGFyZ2V0IGRlZmluZXMgdGhlIHRlc3RzIHRoYXQgbmVlZCB0byBiZSBydW4uIC0tPgotCTx0YXJnZXQgbmFtZT0ic3VpdGUiPgotCQk8cHJvcGVydHkgbmFtZT0id3N0LWZvbGRlciIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS93c3RfZm9sZGVyIi8+Ci0JCTxkZWxldGUgZGlyPSIke3dzdC1mb2xkZXJ9IiBxdWlldD0idHJ1ZSIvPgotICAgIAk8YW50IHRhcmdldD0iY29yZS10ZXN0IiBhbnRmaWxlPSIke2xpYnJhcnktZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLSAgICAgIAkJPHByb3BlcnR5IG5hbWU9ImRhdGEtZGlyIiB2YWx1ZT0iJHt3c3QtZm9sZGVyfSIvPgotICAgICAgCQk8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgCQk8cHJvcGVydHkgbmFtZT0iY2xhc3NuYW1lIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudGVzdHMuQWxsVGVzdENhc2VzIiAvPgotICAgCQkJPHByb3BlcnR5IG5hbWU9InBsdWdpbi1wYXRoIiB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3BsdWdpbnMvJHtwbHVnaW4tbmFtZX0iLz4KLSAgICAJPC9hbnQ+Ci0JPC90YXJnZXQ+Ci0KLQk8IS0tIFRoaXMgdGFyZ2V0IGhvbGRzIGNvZGUgdG8gY2xlYW51cCB0aGUgdGVzdGluZyBlbnZpcm9ubWVudCBhZnRlciAtLT4KLQk8IS0tIGFmdGVyIGFsbCBvZiB0aGUgdGVzdHMgaGF2ZSBiZWVuIHJ1bi4gWW91IGNhbiB1c2UgdGhpcyB0YXJnZXQgdG8gLS0+Ci0JPCEtLSBkZWxldGUgdGVtcG9yYXJ5IGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQuIC0tPgotCTx0YXJnZXQgbmFtZT0iY2xlYW51cCI+Ci0JCTwhLS08ZGVsZXRlIGRpcj0iJHt3b3Jrc3BhY2V9IiBxdWlldD0idHJ1ZSIgLz4tLT4KLQk8L3RhcmdldD4KLQotCTwhLS0gVGhpcyB0YXJnZXQgcnVucyB0aGUgdGVzdCBzdWl0ZS4gQW55IGFjdGlvbnMgdGhhdCBuZWVkIHRvIGhhcHBlbiAtLT4KLQk8IS0tIGFmdGVyIGFsbCB0aGUgdGVzdHMgaGF2ZSBiZWVuIHJ1biBzaG91bGQgZ28gaGVyZS4gLS0+Ci0JPHRhcmdldCBuYW1lPSJydW4iIGRlcGVuZHM9ImluaXQsc3VpdGUsY2xlYW51cCI+Ci0JCTxhbnQgdGFyZ2V0PSJjb2xsZWN0IiBhbnRmaWxlPSIke2xpYnJhcnktZmlsZX0iIGRpcj0iJHtlY2xpcHNlLWhvbWV9Ij4KLQkJCTxwcm9wZXJ0eSBuYW1lPSJpbmNsdWRlcyIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnRlc3RzLip4bWwiIC8+Ci0JCQk8cHJvcGVydHkgbmFtZT0ib3V0cHV0LWZpbGUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfS54bWwiIC8+Ci0JCTwvYW50PgotCTwvdGFyZ2V0PgotCi08L3Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvLmNsYXNzcGF0aCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMDc2YjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0gICAgPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSL29yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZS9KMlNFLTEuNCIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPgotPC9jbGFzc3BhdGg+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy8ucHJvamVjdCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzg3ODJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHM8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjhlZGI3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLSNXZWQgSnVsIDIzIDExOjE5OjI3IEVEVCAyMDA4Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1pc3NpbmdPdmVycmlkZUFubm90YXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubnVsbFJlZmVyZW5jZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wbGV0ZUVudW1Td2l0Y2g9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluZGlyZWN0U3RhdGljQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmhhbmRsZWRXYXJuaW5nVG9rZW49d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5ub0ltcGxpY2l0U3RyaW5nQ29udmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnJlZHVuZGFudE51bGxDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZm9yYmlkZGVuUmVmZXJlbmNlPWVycm9yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnR5cGVQYXJhbWV0ZXJIaWRpbmc9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRJbXBvcnQ9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zcGVjaWFsUGFyYW1ldGVySGlkaW5nRmllbGQ9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5jaGVja2VkVHlwZU9wZXJhdGlvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVucXVhbGlmaWVkRmllbGRBY2Nlc3M9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsbHlCbG9ja05vdENvbXBsZXRpbmdOb3JtYWxseT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnBvdGVudGlhbE51bGxSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFubm90YXRpb25TdXBlckludGVyZmFjZT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZExvY2FsPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5kb2N1bWVudGVkRW1wdHlCbG9jaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucGFyYW1ldGVyQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb249d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuMwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maW5hbFBhcmFtZXRlckJvdW5kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ0RlcHJlY2F0ZWRBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRQYXJhbWV0ZXI9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnVudXNlZExvY2FsPXByZXNlcnZlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZExhYmVsPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlFbHNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nU2VyaWFsVmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbXB0eVN0YXRlbWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaGlkZGVuQ2F0Y2hCbG9jaz13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluY29tcGF0aWJsZU5vbkluaGVyaXRlZEludGVyZmFjZU1ldGhvZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFByaXZhdGVNZW1iZXI9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeVR5cGVDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpZWxkSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5wb3NzaWJsZUFjY2lkZW50YWxCb29sZWFuQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS4yCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm1ldGhvZFdpdGhDb25zdHJ1Y3Rvck5hbWU9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbkluRGVwcmVjYXRlZENvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkV2FybmluZ1Rva2VuPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVySW5jbHVkZURvY0NvbW1lbnRSZWZlcmVuY2U9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWREZWNsYXJlZFRocm93bkV4Y2VwdGlvbkluY2x1ZGVEb2NDb21tZW50UmVmZXJlbmNlPWVuYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3VwcHJlc3NXYXJuaW5ncz1lbmFibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnJhd1R5cGVSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnJlZHVuZGFudFN1cGVyaW50ZXJmYWNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5mYXRhbE9wdGlvbmFsRXJyb3I9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5vdmVycmlkaW5nUGFja2FnZURlZmF1bHRNZXRob2Q9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5sb2NhbFZhcmlhYmxlSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kZXByZWNhdGlvbldoZW5PdmVycmlkaW5nRGVwcmVjYXRlZE1ldGhvZD1kaXNhYmxlZAotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb25FeGVtcHRFeGNlcHRpb25BbmRUaHJvd2FibGU9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5kaXNjb3VyYWdlZFJlZmVyZW5jZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uc3ludGhldGljQWNjZXNzRW11bGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5mYWxsdGhyb3VnaENhc2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdGF0aWNBY2Nlc3NSZWNlaXZlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vRWZmZWN0QXNzaWdubWVudD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uV2hlbk92ZXJyaWRpbmc9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9uRXh0ZXJuYWxpemVkU3RyaW5nTGl0ZXJhbD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXV0b2JveGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbk92ZXJyaWRpbmdDb25jcmV0ZT1kaXNhYmxlZApkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQwNjQ0Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6ICVCdW5kbGUtTmFtZS4wCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cwotQnVuZGxlLVZlcnNpb246IDEuMC4xMDAucXVhbGlmaWVyCi1CdW5kbGUtQ2xhc3NQYXRoOiB3c2RsdWl0ZXN0cy5qYXIKLUJ1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzLkFjdGl2YXRvcgotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLndzdC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS4xLjAsMi4wLjApIiwKLSBvcmcuZWNsaXBzZS51aTtidW5kbGUtdmVyc2lvbj0iWzMuNC4wLDQuMC4wKSIsCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lO2J1bmRsZS12ZXJzaW9uPSJbMy40LjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcztidW5kbGUtdmVyc2lvbj0iWzMuNC4wLDQuMC4wKSIsCi0gb3JnLmp1bml0O2J1bmRsZS12ZXJzaW9uPSJbMy44LjEsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS53c3QueHNkLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4yLjAsMi4wLjApIiwKLSBvcmcuZWNsaXBzZS54c2Q7YnVuZGxlLXZlcnNpb249IlsyLjQuMCwzLjAuMCkiLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnVpO2J1bmRsZS12ZXJzaW9uPSJbMS4yLjAsMi4wLjApIiwKLSBqYXZheC53c2RsO2J1bmRsZS12ZXJzaW9uPSJbMS41LjAsMS42LjApIgotQnVuZGxlLVJlcXVpcmVkRXhlY3V0aW9uRW52aXJvbm1lbnQ6IEoyU0UtMS40Ci1CdW5kbGUtQWN0aXZhdGlvblBvbGljeTogbGF6eQotQnVuZGxlLVZlbmRvcjogJUJ1bmRsZS1WZW5kb3IuMApkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvYWJvdXQuaHRtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL2Fib3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTlkZjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxIVE1MPgotCi08aGVhZD4KLTx0aXRsZT5BYm91dDwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Ci08L2hlYWQ+Ci0KLTxCT0RZIGxhbmc9IkVOLVVTIj4KLQotPEgzPkFib3V0IFRoaXMgQ29udGVudDwvSDM+Ci0KLTxQPkp1bmUsIDIwMDg8L1A+Ci0KLTxIMz5MaWNlbnNlPC9IMz4KLQotPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluIAotKCJDb250ZW50IikuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgCi11bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgCi0oIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKLTxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VwbC12MTAucGhwPC9BPi4gCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+Ci0KLTxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIAotQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIAotQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2ggCi1saWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSAKLXRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy88L0E+LjwvUD4KLQotPC9CT0RZPgotPC9IVE1MPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvYnVpbGQucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZjFmYTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBDb250cmlidXRvcnM6Ci0jICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWJpbi5pbmNsdWRlcyA9IE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICB3c2RsdWl0ZXN0cy5qYXIsXAotICAgICAgICAgICAgICAgYnVpbGQucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICB0ZXN0cmVzb3VyY2VzLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIHRlc3QueG1sCi1qYXJzLmNvbXBpbGUub3JkZXIgPSB3c2RsdWl0ZXN0cy5qYXIKLXNvdXJjZS53c2RsdWl0ZXN0cy5qYXIgPSBzcmMvCi1vdXRwdXQud3NkbHVpdGVzdHMuamFyID0gYmluLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZGUwYmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIHByb3BlcnRpZXMgZmlsZSBmb3Igb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMKLUJ1bmRsZS1WZW5kb3IuMCA9IEVjbGlwc2Uub3JnCi1CdW5kbGUtTmFtZS4wID0gV1NETCBVSSBUZXN0cyBQbHVnLWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL0FjdGl2YXRvci5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL0FjdGl2YXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTBjYzVlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC91aS90ZXN0cy9BY3RpdmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0czsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZTsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsKLQotLyoqCi0gKiBUaGUgYWN0aXZhdG9yIGNsYXNzIGNvbnRyb2xzIHRoZSBwbHVnLWluIGxpZmUgY3ljbGUKLSAqLwotcHVibGljIGNsYXNzIEFjdGl2YXRvciBleHRlbmRzIEFic3RyYWN0VUlQbHVnaW4KLXsKLQotICAvLyBUaGUgcGx1Zy1pbiBJRAotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQTFVHSU5fSUQgPSAib3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMiOwotICBwcml2YXRlIHN0YXRpYyBCdW5kbGUgcGx1Z2luQnVuZGxlID0gbnVsbDsKLQotICAvLyBUaGUgc2hhcmVkIGluc3RhbmNlCi0gIHByaXZhdGUgc3RhdGljIEFjdGl2YXRvciBwbHVnaW47Ci0KLSAgLyoqCi0gICAqIFRoZSBjb25zdHJ1Y3RvcgotICAgKi8KLSAgcHVibGljIEFjdGl2YXRvcigpCi0gIHsKLSAgICBwbHVnaW4gPSB0aGlzOwotICB9Ci0KLSAgLyoKLSAgICogKG5vbi1KYXZhZG9jKQotICAgKiAKLSAgICogQHNlZQotICAgKiBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbiNzdGFydChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dAotICAgKiApCi0gICAqLwotICBwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIHN1cGVyLnN0YXJ0KGNvbnRleHQpOwotICAgIHBsdWdpbiA9IHRoaXM7Ci0gICAgcGx1Z2luQnVuZGxlID0gY29udGV4dC5nZXRCdW5kbGUoKTsKLSAgfQotCi0gIC8qCi0gICAqIChub24tSmF2YWRvYykKLSAgICogCi0gICAqIEBzZWUKLSAgICogb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dAotICAgKiApCi0gICAqLwotICBwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgcGx1Z2luID0gbnVsbDsKLSAgICBzdXBlci5zdG9wKGNvbnRleHQpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZQotICAgKiAKLSAgICogQHJldHVybiB0aGUgc2hhcmVkIGluc3RhbmNlCi0gICAqLwotICBwdWJsaWMgc3RhdGljIEFjdGl2YXRvciBnZXREZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBwbHVnaW47Ci0gIH0KLQotICAvKioKLSAgICogR2V0IHRoZSBpbnN0YWxsIFVSTCBvZiB0aGlzIHBsdWdpbi4KLSAgICogCi0gICAqIEByZXR1cm4gdGhlIGluc3RhbGwgdXJsIG9mIHRoaXMgcGx1Z2luCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRJbnN0YWxsVVJMKCkKLSAgewotICAgIHRyeQotICAgIHsKLSAgICAgIHJldHVybiBGaWxlTG9jYXRvci5yZXNvbHZlKHBsdWdpbkJ1bmRsZS5nZXRFbnRyeSgiLyIpKS5nZXRGaWxlKCk7Ci0gICAgfQotICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL2ludGVybmFsL0FsbFdTRExVSVRlc3RzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdWkvdGVzdHMvaW50ZXJuYWwvQWxsV1NETFVJVGVzdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIyMWQ3Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdWkvdGVzdHMvaW50ZXJuYWwvQWxsV1NETFVJVGVzdHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy5pbnRlcm5hbDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLS8qKgotICogV3JhcHBlciB0ZXN0IHN1aXRlIGZvciBhbGwgV1NETCBVSSB0ZXN0cy4KLSAqLwotcHVibGljIGNsYXNzIEFsbFdTRExVSVRlc3RzIGV4dGVuZHMgVGVzdFN1aXRlCi17Ci0gIC8qKgotICAgKiBDcmVhdGUgdGhpcyB0ZXN0IHN1aXRlLgotICAgKiAKLSAgICogQHJldHVybiBUaGlzIHRlc3Qgc3VpdGUuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBBbGxXU0RMVUlUZXN0cygpOwotICB9Ci0KLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yCi0gICAqLwotICBwdWJsaWMgQWxsV1NETFVJVGVzdHMoKQotICB7Ci0gICAgc3VwZXIoIkFsbFdTRExVSVRlc3RzIik7Ci0gICAgLy8gVW51c2VkIFhTRCBpbXBvcnRzIHRlc3RzIGluIFdTREwgZmlsZXMKLSAgICBhZGRUZXN0KFdTRExVbnVzZWRUZXN0cy5zdWl0ZSgpKTsKLSAgICAvLyBXU0RMIHhtbCBucyB0YWJsZSBjbGVhbnVwCi0gICAgYWRkVGVzdChXU0RMWE1MTlNDbGVhbnVwVGVzdHMuc3VpdGUoKSk7Ci0gICAgLy8gVW51c2VkIFdTREwgSW1wb3J0cwotICAgIGFkZFRlc3QoVW51c2VkV1NETEltcG9ydHNUZXN0cy5zdWl0ZSgpKTsKLSAgICAvLyBNaXNjIGJ1ZyBmaXhlcwotICAgIGFkZFRlc3QoQnVnRml4ZXNUZXN0LnN1aXRlKCkpOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdWkvdGVzdHMvaW50ZXJuYWwvQmFzZVRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdWkvdGVzdHMvaW50ZXJuYWwvQmFzZVRlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3OGYwODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL2ludGVybmFsL0Jhc2VUZXN0Q2FzZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzLmludGVybmFsOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2VTZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLmltcGwuUmVzb3VyY2VTZXRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudWkuaW50ZXJuYWwudXRpbC5XU0RMSW1wb3J0TWFuYWdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy5BY3RpdmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudXRpbC5XU0RMUmVzb3VyY2VJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWE7Ci1pbXBvcnQgb3JnLmVjbGlwc2UueHNkLnV0aWwuWFNEUmVzb3VyY2VJbXBsOwotCi1wdWJsaWMgY2xhc3MgQmFzZVRlc3RDYXNlIGV4dGVuZHMgVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0FCU09MVVRFX1BBVEggPSBBY3RpdmF0b3IuZ2V0SW5zdGFsbFVSTCgpOwotICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBSRVNPVVJDRVNfRk9MREVSID0gInRlc3RyZXNvdXJjZXMiOyAvLyROT04tTkxTLTEkCi0gIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFRDX1JPT1RfRk9MREVSID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyAiLyIgKyBSRVNPVVJDRVNfRk9MREVSICsgIi9XU0RMIjsgLy8kTk9OLU5MUy0xJAotICBwcm90ZWN0ZWQgV1NETEltcG9ydE1hbmFnZXIgaW1wb3J0TWFuYWdlciA9IG5ldyBXU0RMSW1wb3J0TWFuYWdlcigpOwotCi0gIHB1YmxpYyBCYXNlVGVzdENhc2UoKQotICB7Ci0gIH0KLQotICBwdWJsaWMgQmFzZVRlc3RDYXNlKFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgWFNEU2NoZW1hIGdldFhTRFNjaGVtYShTdHJpbmcgcGF0aCkKLSAgewotICAgIFVSSSB1cmkgPSBVUkkuY3JlYXRlRmlsZVVSSShwYXRoKTsKLSAgICBSZXNvdXJjZVNldCByZXNvdXJjZVNldCA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsKLSAgICBYU0RSZXNvdXJjZUltcGwgcmVzb3VyY2UgPSAoWFNEUmVzb3VyY2VJbXBsKSByZXNvdXJjZVNldC5nZXRSZXNvdXJjZSh1cmksIHRydWUpOwotICAgIFhTRFNjaGVtYSBzY2hlbWEgPSByZXNvdXJjZS5nZXRTY2hlbWEoKTsKLSAgICBhc3NlcnROb3ROdWxsKHNjaGVtYSk7Ci0gICAgcmV0dXJuIHNjaGVtYTsKLSAgfQotCi0gIHByb3RlY3RlZCBEZWZpbml0aW9uIGdldERlZmluaXRpb24oU3RyaW5nIHBhdGgpCi0gIHsKLSAgICBVUkkgdXJpID0gVVJJLmNyZWF0ZUZpbGVVUkkocGF0aCk7Ci0gICAgUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7Ci0gICAgV1NETFJlc291cmNlSW1wbCByZXNvdXJjZSA9IChXU0RMUmVzb3VyY2VJbXBsKSByZXNvdXJjZVNldC5nZXRSZXNvdXJjZSh1cmksIHRydWUpOwotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IHJlc291cmNlLmdldERlZmluaXRpb24oKTsKLSAgICBhc3NlcnROb3ROdWxsKGRlZmluaXRpb24pOwotICAgIHJldHVybiBkZWZpbml0aW9uOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC91aS90ZXN0cy9pbnRlcm5hbC9CdWdGaXhlc1Rlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC91aS90ZXN0cy9pbnRlcm5hbC9CdWdGaXhlc1Rlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAwMzBmZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdWkvdGVzdHMvaW50ZXJuYWwvQnVnRml4ZXNUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMuaW50ZXJuYWw7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC51aS5pbnRlcm5hbC51dGlsLlhTRFR5cGVTeXN0ZW1Qcm92aWRlcjsKLQotCi0vKioKLSAqIENvbnRhaW5zIHVuaXQgdGVzdHMgZm9yIHJlcG9ydGVkIGJ1Z3MuCi0gKi8KLXB1YmxpYyBjbGFzcyBCdWdGaXhlc1Rlc3QgZXh0ZW5kcyBCYXNlVGVzdENhc2UKLXsKLSAgcHVibGljIEJ1Z0ZpeGVzVGVzdChTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9Ci0KLSAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKLSAgewotICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLnJ1bihzdWl0ZSgpKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKEJ1Z0ZpeGVzVGVzdC5jbGFzcy5nZXROYW1lKCkpOwotCi0gICAgc3VpdGUuYWRkVGVzdChuZXcgQnVnRml4ZXNUZXN0KCJCdWlsdEluVHlwZXMiKSAvLyROT04tTkxTLTEkCi0gICAgICB7Ci0gICAgICAgIHByb3RlY3RlZCB2b2lkIHJ1blRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgdGVzdEJ1aWx0SW5UeXBlcygpOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICByZXR1cm4gc3VpdGU7Ci0gIH0KLQotICAvKioKLSAgICogU2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yNDM4MDAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RCdWlsdEluVHlwZXMoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvQnVpbHRJblR5cGUvTmV3V1NETEZpbGUxLndzZGwiKTsgIC8vJE5PTi1OTFMtMSQKLQotICAgICAgWFNEVHlwZVN5c3RlbVByb3ZpZGVyIHByb3ZpZGVyID0gbmV3IFhTRFR5cGVTeXN0ZW1Qcm92aWRlcigpOwotICAgICAgTGlzdCB0eXBlcyA9IHByb3ZpZGVyLmdldEJ1aWx0SW5UeXBlTmFtZXNMaXN0KGRlZmluaXRpb24pOwotICAgICAgYXNzZXJ0VHJ1ZSgiVW5hYmxlIHRvIGZpbmQgYnVpbHQgaW4gc2NoZW1hIHR5cGVzIiwgIXR5cGVzLmlzRW1wdHkoKSk7ICAvLyROT04tTkxTLTEkCi0gICAgfQotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBBc3NlcnQuZmFpbCgiVGVzdCBmYWlsZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbjogIiArIGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsgLy8kTk9OLU5MUy0xJAotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL2ludGVybmFsL1VudXNlZFdTRExJbXBvcnRzVGVzdHMuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC91aS90ZXN0cy9pbnRlcm5hbC9VbnVzZWRXU0RMSW1wb3J0c1Rlc3RzLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMmMyMTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL2ludGVybmFsL1VudXNlZFdTRExJbXBvcnRzVGVzdHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI2NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMuaW50ZXJuYWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLkRlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuSW1wb3J0OwotCi1wdWJsaWMgY2xhc3MgVW51c2VkV1NETEltcG9ydHNUZXN0cyBleHRlbmRzIEJhc2VUZXN0Q2FzZQotewotICAvKioKLSAgICogQ3JlYXRlIGEgdGVzdHMgc3VpdGUgZnJvbSB0aGlzIHRlc3QgY2xhc3MuCi0gICAqIAotICAgKiBAcmV0dXJuIEEgdGVzdCBzdWl0ZSBjb250YWluaW5nIHRoaXMgdGVzdCBjbGFzcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShVbnVzZWRXU0RMSW1wb3J0c1Rlc3RzLmNsYXNzKTsKLSAgfQotCi0vLwotLy8gVGVzdGluZyBVU0VEIFdTREwgaW1wb3J0cyAoVGhhdCB0aGV5IGFyZW4ndCByZW1vdmVkIG1pc3Rha2VubHkpCi0vLwotCi0gIHB1YmxpYyB2b2lkIHRlc3RVc2VkV1NETEltcG9ydDAwMSgpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKFRDX1JPT1RfRk9MREVSICsgIi9XU0RMSW1wb3J0cy9jb3JlL01haW4wMDIud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0gICAgTGlzdCBsaXN0ID0gaW1wb3J0TWFuYWdlci5nZXRXU0RMVW51c2VkSW1wb3J0cygpOwotICAgIGFzc2VydFRydWUobGlzdC5zaXplKCkgPT0gMCk7Ci0gICAgaW1wb3J0TWFuYWdlci5jbGVhbnVwKCk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0VXNlZFdTRExJbXBvcnQwMDIoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvV1NETEltcG9ydHMvY29yZS9NYWluMDA0LndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotICAgIExpc3QgbGlzdCA9IGltcG9ydE1hbmFnZXIuZ2V0V1NETFVudXNlZEltcG9ydHMoKTsKLSAgICBhc3NlcnRUcnVlKGxpc3Quc2l6ZSgpID09IDApOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFVzZWRXU0RMSW1wb3J0MDAzKCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwNi53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLSAgICBMaXN0IGxpc3QgPSBpbXBvcnRNYW5hZ2VyLmdldFdTRExVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAwKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RVc2VkV1NETEltcG9ydDAwNCgpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKFRDX1JPT1RfRk9MREVSICsgIi9XU0RMSW1wb3J0cy9jb3JlL01haW4wMDgud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0gICAgTGlzdCBsaXN0ID0gaW1wb3J0TWFuYWdlci5nZXRXU0RMVW51c2VkSW1wb3J0cygpOwotICAgIGFzc2VydFRydWUobGlzdC5zaXplKCkgPT0gMCk7Ci0gIH0KLQotICAvLwotLy8gVGVzdGluZyBvZiBVTlVTRUQgV1NETCBpbXBvcnRzCi0vLwotCi0gIHB1YmxpYyB2b2lkIHRlc3RVbnVzZWRXU0RMSW1wb3J0MDAxKCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwMS53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLSAgICBMaXN0IGxpc3QgPSBpbXBvcnRNYW5hZ2VyLmdldFdTRExVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAxKTsKLSAgICBJbXBvcnQgaW1wMSA9IChJbXBvcnQpIGxpc3QuZ2V0KDApOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIpKTsKLSAgICBhc3NlcnRUcnVlKGltcDEuZ2V0TG9jYXRpb25VUkkoKS5lcXVhbHMoIkltcG9ydDAwMS53c2RsIikpOwotCi0gICAgU2V0IHVudXNlZFdTRExQcmVmaXhlcyA9IGltcG9ydE1hbmFnZXIuZ2V0VW51c2VkV1NETFByZWZpeGVzKCk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuc2l6ZSgpID09IDEpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLmNvbnRhaW5zKCJ3c2RsMSIpKTsKLQotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFVudXNlZFdTRExJbXBvcnQwMDIoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvV1NETEltcG9ydHMvY29yZS9NYWluMDAzLndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotICAgIExpc3QgbGlzdCA9IGltcG9ydE1hbmFnZXIuZ2V0V1NETFVudXNlZEltcG9ydHMoKTsKLSAgICBhc3NlcnRUcnVlKGxpc3Quc2l6ZSgpID09IDEpOwotICAgIEltcG9ydCBpbXAxID0gKEltcG9ydCkgbGlzdC5nZXQoMCk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAxLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscygiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIikpOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiSW1wb3J0MDAxLndzZGwiKSk7Ci0KLSAgICBTZXQgdW51c2VkV1NETFByZWZpeGVzID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRXU0RMUHJlZml4ZXMoKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5zaXplKCkgPT0gMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMoIndzZGwxIikpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFVudXNlZFdTRExJbXBvcnQwMDMoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvV1NETEltcG9ydHMvY29yZS9NYWluMDA1LndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotICAgIExpc3QgbGlzdCA9IGltcG9ydE1hbmFnZXIuZ2V0V1NETFVudXNlZEltcG9ydHMoKTsKLSAgICBhc3NlcnRUcnVlKGxpc3Quc2l6ZSgpID09IDEpOwotICAgIEltcG9ydCBpbXAxID0gKEltcG9ydCkgbGlzdC5nZXQoMCk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAxLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscygiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIikpOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiSW1wb3J0MDAxLndzZGwiKSk7Ci0KLSAgICBTZXQgdW51c2VkV1NETFByZWZpeGVzID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRXU0RMUHJlZml4ZXMoKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5zaXplKCkgPT0gMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMoIndzZGwxIikpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFVudXNlZFdTRExJbXBvcnQwMDQoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvV1NETEltcG9ydHMvY29yZS9NYWluMDA3LndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotICAgIExpc3QgbGlzdCA9IGltcG9ydE1hbmFnZXIuZ2V0V1NETFVudXNlZEltcG9ydHMoKTsKLSAgICBhc3NlcnRUcnVlKGxpc3Quc2l6ZSgpID09IDEpOwotICAgIEltcG9ydCBpbXAxID0gKEltcG9ydCkgbGlzdC5nZXQoMCk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAxLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscygiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIikpOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiSW1wb3J0MDAxLndzZGwiKSk7Ci0KLSAgICBTZXQgdW51c2VkV1NETFByZWZpeGVzID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRXU0RMUHJlZml4ZXMoKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5zaXplKCkgPT0gMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMobnVsbCkpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFVudXNlZFdTRExJbXBvcnQwMDUoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvV1NETEltcG9ydHMvY29yZS9NYWluMDA5LndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotICAgIExpc3QgbGlzdCA9IGltcG9ydE1hbmFnZXIuZ2V0V1NETFVudXNlZEltcG9ydHMoKTsKLSAgICBhc3NlcnRUcnVlKGxpc3Quc2l6ZSgpID09IDEpOwotICAgIEltcG9ydCBpbXAxID0gKEltcG9ydCkgbGlzdC5nZXQoMCk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAxLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscygiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9GaWxlTm90Rm91bmQvIikpOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiV1NETEZpbGVOb3RGb3VuZC53c2RsIikpOwotCi0gICAgU2V0IHVudXNlZFdTRExQcmVmaXhlcyA9IGltcG9ydE1hbmFnZXIuZ2V0VW51c2VkV1NETFByZWZpeGVzKCk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuc2l6ZSgpID09IDApOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdFVudXNlZFdTRExJbXBvcnQwMDYoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvV1NETEltcG9ydHMvdGVzdC9NYWluMDAxLndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotICAgIExpc3QgbGlzdCA9IGltcG9ydE1hbmFnZXIuZ2V0V1NETFVudXNlZEltcG9ydHMoKTsKLSAgICBhc3NlcnRUcnVlKGxpc3Quc2l6ZSgpID09IDIpOwotICAgIEltcG9ydCBpbXAxID0gKEltcG9ydCkgbGlzdC5nZXQoMCk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAxLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscygiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIikpOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiSW1wb3J0MDAxLndzZGwiKSk7Ci0gICAgSW1wb3J0IGltcDIgPSAoSW1wb3J0KSBsaXN0LmdldCgxKTsKLSAgICBhc3NlcnRUcnVlKGltcDIuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKCJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMi8iKSk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAyLmdldExvY2F0aW9uVVJJKCkuZXF1YWxzKCJJbXBvcnQwMDIud3NkbCIpKTsKLQotICAgIFNldCB1bnVzZWRXU0RMUHJlZml4ZXMgPSBpbXBvcnRNYW5hZ2VyLmdldFVudXNlZFdTRExQcmVmaXhlcygpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLnNpemUoKSA9PSAyKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5jb250YWlucygid3NkbDEiKSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMoIndzZGwyIikpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdE1peFdTRExJbXBvcnQwMDEoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvV1NETEltcG9ydHMvdGVzdC9NYWluMDAyLndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotICAgIExpc3QgbGlzdCA9IGltcG9ydE1hbmFnZXIuZ2V0V1NETFVudXNlZEltcG9ydHMoKTsKLSAgICBhc3NlcnRUcnVlKGxpc3Quc2l6ZSgpID09IDQpOwotICAgIEltcG9ydCBpbXAxID0gKEltcG9ydCkgbGlzdC5nZXQoMCk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAxLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscygiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIikpOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiSW1wb3J0MDAxLndzZGwiKSk7Ci0gICAgSW1wb3J0IGltcDIgPSAoSW1wb3J0KSBsaXN0LmdldCgxKTsKLSAgICBhc3NlcnRUcnVlKGltcDIuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKCJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMi8iKSk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAyLmdldExvY2F0aW9uVVJJKCkuZXF1YWxzKCJJbXBvcnQwMDIud3NkbCIpKTsKLSAgICBJbXBvcnQgaW1wMyA9IChJbXBvcnQpIGxpc3QuZ2V0KDIpOwotICAgIGFzc2VydFRydWUoaW1wMy5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IikpOwotICAgIGFzc2VydFRydWUoaW1wMy5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiLi4vLi4vLi4vWFNEL1VudXNlZC9JbXBvcnQxLnhzZCIpKTsKLSAgICBJbXBvcnQgaW1wNCA9IChJbXBvcnQpIGxpc3QuZ2V0KDMpOwotICAgIGFzc2VydFRydWUoaW1wNC5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NiIpKTsKLSAgICBhc3NlcnRUcnVlKGltcDQuZ2V0TG9jYXRpb25VUkkoKS5lcXVhbHMoIi4uLy4uLy4uL1hTRC9VbnVzZWQvSW1wb3J0Ni54c2QiKSk7Ci0KLSAgICBTZXQgdW51c2VkV1NETFByZWZpeGVzID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRXU0RMUHJlZml4ZXMoKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5zaXplKCkgPT0gNCk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMoIndzZGwxIikpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLmNvbnRhaW5zKCJ3c2RsMiIpKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5jb250YWlucygieHNkMSIpKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5jb250YWlucygieHNkMiIpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RNaXhXU0RMSW1wb3J0MDAyKCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwMy53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLSAgICBMaXN0IGxpc3QgPSBpbXBvcnRNYW5hZ2VyLmdldFdTRExVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAyKTsKLSAgICBJbXBvcnQgaW1wMSA9IChJbXBvcnQpIGxpc3QuZ2V0KDApOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIpKTsKLSAgICBhc3NlcnRUcnVlKGltcDEuZ2V0TG9jYXRpb25VUkkoKS5lcXVhbHMoIkltcG9ydDAwMS53c2RsIikpOwotICAgIEltcG9ydCBpbXAyID0gKEltcG9ydCkgbGlzdC5nZXQoMSk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAyLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscygiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDIvIikpOwotICAgIGFzc2VydFRydWUoaW1wMi5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiSW1wb3J0MDAyLndzZGwiKSk7Ci0KLSAgICBTZXQgdW51c2VkV1NETFByZWZpeGVzID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRXU0RMUHJlZml4ZXMoKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5zaXplKCkgPT0gMik7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMoIndzZGwxIikpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLmNvbnRhaW5zKCJ3c2RsMiIpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RNaXhXU0RMSW1wb3J0MDAzKCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwNC53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLSAgICBMaXN0IGxpc3QgPSBpbXBvcnRNYW5hZ2VyLmdldFdTRExVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAyKTsKLSAgICBJbXBvcnQgaW1wMSA9IChJbXBvcnQpIGxpc3QuZ2V0KDApOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIpKTsKLSAgICBhc3NlcnRUcnVlKGltcDEuZ2V0TG9jYXRpb25VUkkoKS5lcXVhbHMoIkltcG9ydDAwMS53c2RsIikpOwotICAgIEltcG9ydCBpbXAyID0gKEltcG9ydCkgbGlzdC5nZXQoMSk7Ci0gICAgYXNzZXJ0VHJ1ZShpbXAyLmdldE5hbWVzcGFjZVVSSSgpLmVxdWFscygiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDIvIikpOwotICAgIGFzc2VydFRydWUoaW1wMi5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiSW1wb3J0MDAyLndzZGwiKSk7Ci0KLSAgICBTZXQgdW51c2VkV1NETFByZWZpeGVzID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRXU0RMUHJlZml4ZXMoKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5zaXplKCkgPT0gMik7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMoIndzZGwxIikpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLmNvbnRhaW5zKCJ3c2RsMiIpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RNaXhXU0RMSW1wb3J0MDA0KCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwNS53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLSAgICBMaXN0IGxpc3QgPSBpbXBvcnRNYW5hZ2VyLmdldFdTRExVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAwKTsKLQotICAgIFNldCB1bnVzZWRXU0RMUHJlZml4ZXMgPSBpbXBvcnRNYW5hZ2VyLmdldFVudXNlZFdTRExQcmVmaXhlcygpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLnNpemUoKSA9PSAwKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RNaXhXU0RMSW1wb3J0MDA1KCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwNi53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLSAgICBMaXN0IGxpc3QgPSBpbXBvcnRNYW5hZ2VyLmdldFdTRExVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAyKTsKLSAgICBJbXBvcnQgaW1wMSA9IChJbXBvcnQpIGxpc3QuZ2V0KDApOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IikpOwotICAgIGFzc2VydFRydWUoaW1wMS5nZXRMb2NhdGlvblVSSSgpLmVxdWFscygiLi4vLi4vLi4vWFNEL1VudXNlZC9JbXBvcnQxLnhzZCIpKTsKLSAgICBJbXBvcnQgaW1wMiA9IChJbXBvcnQpIGxpc3QuZ2V0KDEpOwotICAgIGFzc2VydFRydWUoaW1wMi5nZXROYW1lc3BhY2VVUkkoKS5lcXVhbHMoImh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NiIpKTsKLSAgICBhc3NlcnRUcnVlKGltcDIuZ2V0TG9jYXRpb25VUkkoKS5lcXVhbHMoIi4uLy4uLy4uL1hTRC9VbnVzZWQvSW1wb3J0Ni54c2QiKSk7Ci0KLSAgICBTZXQgdW51c2VkV1NETFByZWZpeGVzID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRXU0RMUHJlZml4ZXMoKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5zaXplKCkgPT0gMik7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMoInhzZDEiKSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMoInhzZDIiKSk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL2ludGVybmFsL1dTRExVbnVzZWRUZXN0cy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL2ludGVybmFsL1dTRExVbnVzZWRUZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWU2MDIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC91aS90ZXN0cy9pbnRlcm5hbC9XU0RMVW51c2VkVGVzdHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMuaW50ZXJuYWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnhzZC5YU0RTY2hlbWFEaXJlY3RpdmU7Ci0KLXB1YmxpYyBjbGFzcyBXU0RMVW51c2VkVGVzdHMgZXh0ZW5kcyBCYXNlVGVzdENhc2UKLXsKLSAgLyoqCi0gICAqIENyZWF0ZSBhIHRlc3RzIHN1aXRlIGZyb20gdGhpcyB0ZXN0IGNsYXNzLgotICAgKiAKLSAgICogQHJldHVybiBBIHRlc3Qgc3VpdGUgY29udGFpbmluZyB0aGlzIHRlc3QgY2xhc3MuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoV1NETFVudXNlZFRlc3RzLmNsYXNzKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RVbnVzZWRJbXBvcnQwMDEoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvVW51c2VkL3Rlc3QvTWFpbjEud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0gICAgTGlzdCBsaXN0ID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAyKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDEgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgwKTsKLSAgICBhc3NlcnRUcnVlKCJBLnhzZCIuZXF1YWxzKGQxLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDIgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgxKTsKLSAgICBhc3NlcnRUcnVlKCJCLnhzZCIuZXF1YWxzKGQyLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RVbnVzZWRJbXBvcnQwMDIoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvVW51c2VkL3Rlc3QvTWFpbjIud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0gICAgTGlzdCBsaXN0ID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAyKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDEgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgwKTsKLSAgICBhc3NlcnRUcnVlKCJBLnhzZCIuZXF1YWxzKGQxLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDIgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgxKTsKLSAgICBhc3NlcnRUcnVlKCJCLnhzZCIuZXF1YWxzKGQyLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RVbnVzZWRJbXBvcnQwMDMoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvVW51c2VkL3Rlc3QvTWFpbjMud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0gICAgTGlzdCBsaXN0ID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAyKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDEgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgwKTsKLSAgICBhc3NlcnRUcnVlKCJBLnhzZCIuZXF1YWxzKGQxLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDIgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgxKTsKLSAgICBhc3NlcnRUcnVlKCJCLnhzZCIuZXF1YWxzKGQyLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RVbnVzZWRJbXBvcnQwMDQoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvVW51c2VkL3Rlc3QvTWFpbjQud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0gICAgTGlzdCBsaXN0ID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSA3KTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDEgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgwKTsKLSAgICBhc3NlcnRUcnVlKCJBLnhzZCIuZXF1YWxzKGQxLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDIgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgxKTsKLSAgICBhc3NlcnRUcnVlKCJCLnhzZCIuZXF1YWxzKGQyLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDMgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgyKTsKLSAgICBhc3NlcnRUcnVlKCJDLnhzZCIuZXF1YWxzKGQzLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDQgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgzKTsKLSAgICBhc3NlcnRUcnVlKCJDLnhzZCIuZXF1YWxzKGQ0LmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDUgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCg0KTsKLSAgICBhc3NlcnRUcnVlKCJELnhzZCIuZXF1YWxzKGQ1LmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDYgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCg1KTsKLSAgICBhc3NlcnRUcnVlKCJFLnhzZCIuZXF1YWxzKGQ2LmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDcgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCg2KTsKLSAgICBhc3NlcnRUcnVlKCJGLnhzZCIuZXF1YWxzKGQ3LmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RVbnVzZWRJbXBvcnQwMDUoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIvVW51c2VkL3Rlc3QvTWFpbjUud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0gICAgTGlzdCBsaXN0ID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRJbXBvcnRzKCk7Ci0gICAgYXNzZXJ0VHJ1ZShsaXN0LnNpemUoKSA9PSAxKTsKLSAgICBYU0RTY2hlbWFEaXJlY3RpdmUgZDEgPSAoWFNEU2NoZW1hRGlyZWN0aXZlKSBsaXN0LmdldCgwKTsKLSAgICBhc3NlcnRUcnVlKCIuLi9JbXBvcnQyLnhzZCIuZXF1YWxzKGQxLmdldFNjaGVtYUxvY2F0aW9uKCkpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RVbnVzZWRJbXBvcnQwMDYoKQotICB7Ci0gICAgLyogZHVwbGljYXRlIHVudXNlZCBpbXBvcnRzIGluIHR3byBpbmxpbmUgc2NoZW1hcyAqLwotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL1VudXNlZC90ZXN0L01haW42LndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotICAgIExpc3QgbGlzdCA9IGltcG9ydE1hbmFnZXIuZ2V0VW51c2VkSW1wb3J0cygpOwotICAgIGFzc2VydFRydWUobGlzdC5zaXplKCkgPT0gMik7Ci0gICAgWFNEU2NoZW1hRGlyZWN0aXZlIGQxID0gKFhTRFNjaGVtYURpcmVjdGl2ZSkgbGlzdC5nZXQoMCk7Ci0gICAgYXNzZXJ0VHJ1ZSgiLi4vSW1wb3J0Mi54c2QiLmVxdWFscyhkMS5nZXRTY2hlbWFMb2NhdGlvbigpKSk7Ci0gICAgWFNEU2NoZW1hRGlyZWN0aXZlIGQyID0gKFhTRFNjaGVtYURpcmVjdGl2ZSkgbGlzdC5nZXQoMSk7Ci0gICAgYXNzZXJ0VHJ1ZSgiLi4vSW1wb3J0Mi54c2QiLmVxdWFscyhkMi5nZXRTY2hlbWFMb2NhdGlvbigpKSk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0VW51c2VkSW1wb3J0MDA3KCkKLSAgewotICAgIC8qIGR1cGxpY2F0ZSB1bnVzZWQgaW1wb3J0cyBpbiB0d28gaW5saW5lIHNjaGVtYXMgKi8KLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKFRDX1JPT1RfRk9MREVSICsgIi9VbnVzZWQvdGVzdC9NYWluNy53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLSAgICBMaXN0IGxpc3QgPSBpbXBvcnRNYW5hZ2VyLmdldFVudXNlZEltcG9ydHMoKTsKLSAgICBhc3NlcnRUcnVlKGxpc3Quc2l6ZSgpID09IDEpOwotICAgIFhTRFNjaGVtYURpcmVjdGl2ZSBkMSA9IChYU0RTY2hlbWFEaXJlY3RpdmUpIGxpc3QuZ2V0KDApOwotICAgIGFzc2VydFRydWUoIi4uL0ltcG9ydDMueHNkIi5lcXVhbHMoZDEuZ2V0U2NoZW1hTG9jYXRpb24oKSkpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL2ludGVybmFsL1dTRExYTUxOU0NsZWFudXBUZXN0cy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3VpL3Rlc3RzL2ludGVybmFsL1dTRExYTUxOU0NsZWFudXBUZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDM1NzkxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC91aS90ZXN0cy9pbnRlcm5hbC9XU0RMWE1MTlNDbGVhbnVwVGVzdHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMuaW50ZXJuYWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwuRGVmaW5pdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC5YU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS54c2QuWFNEU2NoZW1hOwotCi1wdWJsaWMgY2xhc3MgV1NETFhNTE5TQ2xlYW51cFRlc3RzIGV4dGVuZHMgQmFzZVRlc3RDYXNlCi17Ci0gIC8qKgotICAgKiBDcmVhdGUgYSB0ZXN0cyBzdWl0ZSBmcm9tIHRoaXMgdGVzdCBjbGFzcy4KLSAgICogCi0gICAqIEByZXR1cm4gQSB0ZXN0IHN1aXRlIGNvbnRhaW5pbmcgdGhpcyB0ZXN0IGNsYXNzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKFdTRExYTUxOU0NsZWFudXBUZXN0cy5jbGFzcyk7Ci0gIH0KLQotICBwdWJsaWMgdm9pZCB0ZXN0Q2xlYW51cDAwMSgpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKFRDX1JPT1RfRk9MREVSICsgIi94bWxuc0NsZWFudXAvdGVzdC9NYWluMDAxLndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotCi0gICAgTGlzdCBleHRFbGVtZW50cyA9IGRlZmluaXRpb24uZ2V0RVR5cGVzKCkuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotCi0gICAgTWFwIG1hcCA9IChNYXApIGltcG9ydE1hbmFnZXIuZ2V0U2NoZW1hVG9QcmVmaXhNYXAoKTsKLSAgICBTZXQgc2NoZW1hcyA9IG1hcC5rZXlTZXQoKTsKLSAgICAvLyBUd28gaW5saW5lIHNjaGVtYXMKLSAgICBhc3NlcnRUcnVlKHNjaGVtYXMuc2l6ZSgpID09IDIpOwotICAgIGFzc2VydFRydWUoZXh0RWxlbWVudHMuc2l6ZSgpID09IDIpOwotCi0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgeHNkRUUxID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50cy5nZXQoMCk7Ci0gICAgWFNEU2NoZW1hIGlubGluZVNjaGVtYTAxID0geHNkRUUxLmdldFNjaGVtYSgpOwotICAgIFNldCB1bnVzZWRQcmVmaXhlczAxID0gKFNldCkgbWFwLmdldChpbmxpbmVTY2hlbWEwMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczAxLnNpemUoKSA9PSAyKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDEuY29udGFpbnMoInRuczAzIikpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwMS5jb250YWlucygidG5zMDQiKSk7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTIgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCgxKTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDIgPSB4c2RFRTIuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDIgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTAyKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDIuc2l6ZSgpID09IDIpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwMi5jb250YWlucygidG5zMDUiKSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczAyLmNvbnRhaW5zKCJ0bnMwNiIpKTsKLQotICAgIFNldCB1bnVzZWRXU0RMUHJlZml4ZXMgPSBpbXBvcnRNYW5hZ2VyLmdldFVudXNlZFdTRExQcmVmaXhlcygpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLnNpemUoKSA9PSAyKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5jb250YWlucygidG5zMDEiKSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMoInRuczAyIikpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdENsZWFudXAwMDIoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwMi53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLQotICAgIExpc3QgZXh0RWxlbWVudHMgPSBkZWZpbml0aW9uLmdldEVUeXBlcygpLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQotICAgIE1hcCBtYXAgPSAoTWFwKSBpbXBvcnRNYW5hZ2VyLmdldFNjaGVtYVRvUHJlZml4TWFwKCk7Ci0gICAgU2V0IHNjaGVtYXMgPSBtYXAua2V5U2V0KCk7Ci0gICAgLy8gT25lIGlubGluZSBzY2hlbWEKLSAgICBhc3NlcnRUcnVlKHNjaGVtYXMuc2l6ZSgpID09IDEpOwotICAgIGFzc2VydFRydWUoZXh0RWxlbWVudHMuc2l6ZSgpID09IDEpOwotCi0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgeHNkRUUxID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50cy5nZXQoMCk7Ci0gICAgWFNEU2NoZW1hIGlubGluZVNjaGVtYTAxID0geHNkRUUxLmdldFNjaGVtYSgpOwotICAgIFNldCB1bnVzZWRQcmVmaXhlczAxID0gKFNldCkgbWFwLmdldChpbmxpbmVTY2hlbWEwMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczAxLnNpemUoKSA9PSAxKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDEuY29udGFpbnMoInRuczAyIikpOwotCi0gICAgU2V0IHVudXNlZFdTRExQcmVmaXhlcyA9IGltcG9ydE1hbmFnZXIuZ2V0VW51c2VkV1NETFByZWZpeGVzKCk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuc2l6ZSgpID09IDEpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLmNvbnRhaW5zKCJ0bnMwMSIpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RDbGVhbnVwMDAzKCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL3htbG5zQ2xlYW51cC90ZXN0L01haW4wMDMud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0KLSAgICBMaXN0IGV4dEVsZW1lbnRzID0gZGVmaW5pdGlvbi5nZXRFVHlwZXMoKS5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0KLSAgICBNYXAgbWFwID0gKE1hcCkgaW1wb3J0TWFuYWdlci5nZXRTY2hlbWFUb1ByZWZpeE1hcCgpOwotICAgIFNldCBzY2hlbWFzID0gbWFwLmtleVNldCgpOwotICAgIC8vIE9uZSBpbmxpbmUgc2NoZW1hCi0gICAgYXNzZXJ0VHJ1ZShzY2hlbWFzLnNpemUoKSA9PSAxKTsKLSAgICBhc3NlcnRUcnVlKGV4dEVsZW1lbnRzLnNpemUoKSA9PSAxKTsKLQotICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IHhzZEVFMSA9IChYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbWVudHMuZ2V0KDApOwotICAgIFhTRFNjaGVtYSBpbmxpbmVTY2hlbWEwMSA9IHhzZEVFMS5nZXRTY2hlbWEoKTsKLSAgICBTZXQgdW51c2VkUHJlZml4ZXMwMSA9IChTZXQpIG1hcC5nZXQoaW5saW5lU2NoZW1hMDEpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwMS5zaXplKCkgPT0gMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczAxLmNvbnRhaW5zKCJ0bnMwMiIpKTsKLQotICAgIFNldCB1bnVzZWRXU0RMUHJlZml4ZXMgPSBpbXBvcnRNYW5hZ2VyLmdldFVudXNlZFdTRExQcmVmaXhlcygpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLnNpemUoKSA9PSAwKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RDbGVhbnVwMDA0KCkKLSAgewotICAgIC8vIFRlc3RzIG51bGwgdXNlZCBwcmVmaXggZm9yIFdTREwgdGFyZ2V0IG5hbWVzcGFjZQotCi0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwNC53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLQotICAgIExpc3QgZXh0RWxlbWVudHMgPSBkZWZpbml0aW9uLmdldEVUeXBlcygpLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQotICAgIE1hcCBtYXAgPSAoTWFwKSBpbXBvcnRNYW5hZ2VyLmdldFNjaGVtYVRvUHJlZml4TWFwKCk7Ci0gICAgU2V0IHNjaGVtYXMgPSBtYXAua2V5U2V0KCk7Ci0gICAgLy8gT25lIGlubGluZSBzY2hlbWEKLSAgICBhc3NlcnRUcnVlKHNjaGVtYXMuc2l6ZSgpID09IDEpOwotICAgIGFzc2VydFRydWUoZXh0RWxlbWVudHMuc2l6ZSgpID09IDEpOwotCi0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgeHNkRUUxID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50cy5nZXQoMCk7Ci0gICAgWFNEU2NoZW1hIGlubGluZVNjaGVtYTAxID0geHNkRUUxLmdldFNjaGVtYSgpOwotICAgIFNldCB1bnVzZWRQcmVmaXhlczAxID0gKFNldCkgbWFwLmdldChpbmxpbmVTY2hlbWEwMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczAxLnNpemUoKSA9PSAwKTsKLQotICAgIFNldCB1bnVzZWRXU0RMUHJlZml4ZXMgPSBpbXBvcnRNYW5hZ2VyLmdldFVudXNlZFdTRExQcmVmaXhlcygpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLnNpemUoKSA9PSAwKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RDbGVhbnVwMDA1KCkKLSAgewotICAgIC8vIFRlc3QgbnVsbCB1bnVzZWQgcHJlZml4IGluIFdTREwgeG1sbnMgdGFibGUKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKFRDX1JPT1RfRk9MREVSICsgIi94bWxuc0NsZWFudXAvdGVzdC9NYWluMDA1LndzZGwiKTsKLSAgICBpbXBvcnRNYW5hZ2VyLnBlcmZvcm1SZW1vdmFsKGRlZmluaXRpb24pOwotCi0gICAgTGlzdCBleHRFbGVtZW50cyA9IGRlZmluaXRpb24uZ2V0RVR5cGVzKCkuZ2V0RUV4dGVuc2liaWxpdHlFbGVtZW50cygpOwotCi0gICAgTWFwIG1hcCA9IChNYXApIGltcG9ydE1hbmFnZXIuZ2V0U2NoZW1hVG9QcmVmaXhNYXAoKTsKLSAgICBTZXQgc2NoZW1hcyA9IG1hcC5rZXlTZXQoKTsKLSAgICAvLyBPbmUgaW5saW5lIHNjaGVtYQotICAgIGFzc2VydFRydWUoc2NoZW1hcy5zaXplKCkgPT0gMSk7Ci0gICAgYXNzZXJ0VHJ1ZShleHRFbGVtZW50cy5zaXplKCkgPT0gMSk7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTEgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCgwKTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDEgPSB4c2RFRTEuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDEgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTAxKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDEuc2l6ZSgpID09IDEpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwMS5jb250YWlucygidG5zMDIiKSk7Ci0KLSAgICBTZXQgdW51c2VkV1NETFByZWZpeGVzID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRXU0RMUHJlZml4ZXMoKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5zaXplKCkgPT0gMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMobnVsbCkpOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdENsZWFudXAwMDYoKQotICB7Ci0gICAgLy8gVGVzdHMgcmVtb3ZhbCBvZiBzb2FwIHhtbG5zIGVudHJ5IGluIFdTREwgbnMgdGFibGUKLQotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL3htbG5zQ2xlYW51cC90ZXN0L01haW4wMDYud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0KLSAgICBMaXN0IGV4dEVsZW1lbnRzID0gZGVmaW5pdGlvbi5nZXRFVHlwZXMoKS5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0KLSAgICBNYXAgbWFwID0gKE1hcCkgaW1wb3J0TWFuYWdlci5nZXRTY2hlbWFUb1ByZWZpeE1hcCgpOwotICAgIFNldCBzY2hlbWFzID0gbWFwLmtleVNldCgpOwotICAgIC8vIE9uZSBpbmxpbmUgc2NoZW1hCi0gICAgYXNzZXJ0VHJ1ZShzY2hlbWFzLnNpemUoKSA9PSAxKTsKLSAgICBhc3NlcnRUcnVlKGV4dEVsZW1lbnRzLnNpemUoKSA9PSAxKTsKLQotICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IHhzZEVFMSA9IChYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbWVudHMuZ2V0KDApOwotICAgIFhTRFNjaGVtYSBpbmxpbmVTY2hlbWEwMSA9IHhzZEVFMS5nZXRTY2hlbWEoKTsKLQotICAgIFNldCB1bnVzZWRQcmVmaXhlczAxID0gKFNldCkgbWFwLmdldChpbmxpbmVTY2hlbWEwMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczAxLnNpemUoKSA9PSAwKTsKLQotICAgIFNldCB1bnVzZWRXU0RMUHJlZml4ZXMgPSBpbXBvcnRNYW5hZ2VyLmdldFVudXNlZFdTRExQcmVmaXhlcygpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLnNpemUoKSA9PSAxKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5jb250YWlucygic29hcCIpKTsKLSAgfQotCi0gIHB1YmxpYyB2b2lkIHRlc3RDbGVhbnVwMDA3KCkKLSAgewotICAgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oVENfUk9PVF9GT0xERVIgKyAiL3htbG5zQ2xlYW51cC90ZXN0L01haW4wMDcud3NkbCIpOwotICAgIGltcG9ydE1hbmFnZXIucGVyZm9ybVJlbW92YWwoZGVmaW5pdGlvbik7Ci0KLSAgICBMaXN0IGV4dEVsZW1lbnRzID0gZGVmaW5pdGlvbi5nZXRFVHlwZXMoKS5nZXRFRXh0ZW5zaWJpbGl0eUVsZW1lbnRzKCk7Ci0KLSAgICBNYXAgbWFwID0gKE1hcCkgaW1wb3J0TWFuYWdlci5nZXRTY2hlbWFUb1ByZWZpeE1hcCgpOwotICAgIFNldCBzY2hlbWFzID0gbWFwLmtleVNldCgpOwotICAgIC8vIEZpdmUgaW5saW5lIHNjaGVtYXMKLSAgICBhc3NlcnRUcnVlKHNjaGVtYXMuc2l6ZSgpID09IDYpOwotICAgIGFzc2VydFRydWUoZXh0RWxlbWVudHMuc2l6ZSgpID09IDYpOwotCi0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgeHNkRUUxID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50cy5nZXQoMCk7Ci0gICAgWFNEU2NoZW1hIGlubGluZVNjaGVtYTAxID0geHNkRUUxLmdldFNjaGVtYSgpOwotICAgIFNldCB1bnVzZWRQcmVmaXhlczAxID0gKFNldCkgbWFwLmdldChpbmxpbmVTY2hlbWEwMSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczAxLnNpemUoKSA9PSAwKTsKLQotICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IHhzZEVFMiA9IChYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbWVudHMuZ2V0KDEpOwotICAgIFhTRFNjaGVtYSBpbmxpbmVTY2hlbWEwMiA9IHhzZEVFMi5nZXRTY2hlbWEoKTsKLSAgICBTZXQgdW51c2VkUHJlZml4ZXMwMiA9IChTZXQpIG1hcC5nZXQoaW5saW5lU2NoZW1hMDIpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwMi5zaXplKCkgPT0gMCk7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTMgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCgyKTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDMgPSB4c2RFRTMuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDMgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTAzKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDMuc2l6ZSgpID09IDApOwotCi0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgeHNkRUU0ID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50cy5nZXQoMyk7Ci0gICAgWFNEU2NoZW1hIGlubGluZVNjaGVtYTA0ID0geHNkRUU0LmdldFNjaGVtYSgpOwotICAgIFNldCB1bnVzZWRQcmVmaXhlczA0ID0gKFNldCkgbWFwLmdldChpbmxpbmVTY2hlbWEwNCk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczA0LnNpemUoKSA9PSAxKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDQuY29udGFpbnMobnVsbCkpOwotCi0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgeHNkRUU1ID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50cy5nZXQoNCk7Ci0gICAgWFNEU2NoZW1hIGlubGluZVNjaGVtYTA1ID0geHNkRUU1LmdldFNjaGVtYSgpOwotICAgIFNldCB1bnVzZWRQcmVmaXhlczA1ID0gKFNldCkgbWFwLmdldChpbmxpbmVTY2hlbWEwNSk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczA1LnNpemUoKSA9PSAxKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDUuY29udGFpbnMoInVudXNlZDAxIikpOwotCi0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgeHNkRUU2ID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50cy5nZXQoNSk7Ci0gICAgWFNEU2NoZW1hIGlubGluZVNjaGVtYTA2ID0geHNkRUU2LmdldFNjaGVtYSgpOwotICAgIFNldCB1bnVzZWRQcmVmaXhlczA2ID0gKFNldCkgbWFwLmdldChpbmxpbmVTY2hlbWEwNik7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczA2LnNpemUoKSA9PSAxKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDYuY29udGFpbnMoInVudXNlZDAxIikpOwotCi0gICAgU2V0IHVudXNlZFdTRExQcmVmaXhlcyA9IGltcG9ydE1hbmFnZXIuZ2V0VW51c2VkV1NETFByZWZpeGVzKCk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuc2l6ZSgpID09IDApOwotICB9Ci0KLSAgcHVibGljIHZvaWQgdGVzdENsZWFudXAwMDgoKQotICB7Ci0gICAgRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihUQ19ST09UX0ZPTERFUiArICIveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwOC53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLQotICAgIExpc3QgZXh0RWxlbWVudHMgPSBkZWZpbml0aW9uLmdldEVUeXBlcygpLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQotICAgIE1hcCBtYXAgPSAoTWFwKSBpbXBvcnRNYW5hZ2VyLmdldFNjaGVtYVRvUHJlZml4TWFwKCk7Ci0gICAgU2V0IHNjaGVtYXMgPSBtYXAua2V5U2V0KCk7Ci0gICAgLy8gRml2ZSBpbmxpbmUgc2NoZW1hcwotICAgIGFzc2VydFRydWUoc2NoZW1hcy5zaXplKCkgPT0gNik7Ci0gICAgYXNzZXJ0VHJ1ZShleHRFbGVtZW50cy5zaXplKCkgPT0gNik7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTEgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCgwKTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDEgPSB4c2RFRTEuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDEgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTAxKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDEuc2l6ZSgpID09IDApOwotCi0gICAgWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQgeHNkRUUyID0gKFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50KSBleHRFbGVtZW50cy5nZXQoMSk7Ci0gICAgWFNEU2NoZW1hIGlubGluZVNjaGVtYTAyID0geHNkRUUyLmdldFNjaGVtYSgpOwotICAgIFNldCB1bnVzZWRQcmVmaXhlczAyID0gKFNldCkgbWFwLmdldChpbmxpbmVTY2hlbWEwMik7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRQcmVmaXhlczAyLnNpemUoKSA9PSAwKTsKLQotICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IHhzZEVFMyA9IChYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbWVudHMuZ2V0KDIpOwotICAgIFhTRFNjaGVtYSBpbmxpbmVTY2hlbWEwMyA9IHhzZEVFMy5nZXRTY2hlbWEoKTsKLSAgICBTZXQgdW51c2VkUHJlZml4ZXMwMyA9IChTZXQpIG1hcC5nZXQoaW5saW5lU2NoZW1hMDMpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwMy5zaXplKCkgPT0gMCk7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTQgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCgzKTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDQgPSB4c2RFRTQuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDQgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTA0KTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDQuc2l6ZSgpID09IDEpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwNC5jb250YWlucyhudWxsKSk7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTUgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCg0KTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDUgPSB4c2RFRTUuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDUgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTA1KTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDUuc2l6ZSgpID09IDEpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwNS5jb250YWlucygidW51c2VkMDEiKSk7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTYgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCg1KTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDYgPSB4c2RFRTYuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDYgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTA2KTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDYuc2l6ZSgpID09IDEpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwNi5jb250YWlucygidW51c2VkMDEiKSk7Ci0KLSAgICBTZXQgdW51c2VkV1NETFByZWZpeGVzID0gaW1wb3J0TWFuYWdlci5nZXRVbnVzZWRXU0RMUHJlZml4ZXMoKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5zaXplKCkgPT0gMyk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuY29udGFpbnMobnVsbCkpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLmNvbnRhaW5zKCJ3c2RsVXNlZCIpKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFdTRExQcmVmaXhlcy5jb250YWlucygidXNlZDAxIikpOyAvLyB1c2VkIGluIHhzZCBidXQgdW51c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gV1NETAotICB9Ci0KLSAgLy8gVXNpbmcgdGhlIHRlc3QgV1NETHMgZnJvbSB0aGUgVW51c2VkIGZvbGRlcgotICBwdWJsaWMgdm9pZCB0ZXN0Q2xlYW51cDAwOSgpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKFRDX1JPT1RfRk9MREVSICsgIi9VbnVzZWQvdGVzdC9NYWluMS53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLQotICAgIExpc3QgZXh0RWxlbWVudHMgPSBkZWZpbml0aW9uLmdldEVUeXBlcygpLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQotICAgIE1hcCBtYXAgPSAoTWFwKSBpbXBvcnRNYW5hZ2VyLmdldFNjaGVtYVRvUHJlZml4TWFwKCk7Ci0gICAgU2V0IHNjaGVtYXMgPSBtYXAua2V5U2V0KCk7Ci0gICAgLy8gVHdvIGlubGluZSBzY2hlbWFzCi0gICAgYXNzZXJ0VHJ1ZShzY2hlbWFzLnNpemUoKSA9PSAyKTsKLSAgICBhc3NlcnRUcnVlKGV4dEVsZW1lbnRzLnNpemUoKSA9PSAyKTsKLQotICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IHhzZEVFMSA9IChYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbWVudHMuZ2V0KDApOwotICAgIFhTRFNjaGVtYSBpbmxpbmVTY2hlbWEwMSA9IHhzZEVFMS5nZXRTY2hlbWEoKTsKLSAgICBTZXQgdW51c2VkUHJlZml4ZXMwMSA9IChTZXQpIG1hcC5nZXQoaW5saW5lU2NoZW1hMDEpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwMS5zaXplKCkgPT0gMCk7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTIgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCgxKTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDIgPSB4c2RFRTIuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDIgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTAyKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDIuc2l6ZSgpID09IDApOwotCi0gICAgU2V0IHVudXNlZFdTRExQcmVmaXhlcyA9IGltcG9ydE1hbmFnZXIuZ2V0VW51c2VkV1NETFByZWZpeGVzKCk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuc2l6ZSgpID09IDApOwotICB9Ci0KLSAgLy8gVXNpbmcgdGhlIHRlc3QgV1NETHMgZnJvbSB0aGUgVW51c2VkIGZvbGRlcgotICBwdWJsaWMgdm9pZCB0ZXN0Q2xlYW51cDAxMCgpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKFRDX1JPT1RfRk9MREVSICsgIi9VbnVzZWQvdGVzdC9NYWluNS53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLQotICAgIExpc3QgZXh0RWxlbWVudHMgPSBkZWZpbml0aW9uLmdldEVUeXBlcygpLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQotICAgIE1hcCBtYXAgPSAoTWFwKSBpbXBvcnRNYW5hZ2VyLmdldFNjaGVtYVRvUHJlZml4TWFwKCk7Ci0gICAgU2V0IHNjaGVtYXMgPSBtYXAua2V5U2V0KCk7Ci0gICAgLy8gVHdvIGlubGluZSBzY2hlbWFzCi0gICAgYXNzZXJ0VHJ1ZShzY2hlbWFzLnNpemUoKSA9PSAyKTsKLSAgICBhc3NlcnRUcnVlKGV4dEVsZW1lbnRzLnNpemUoKSA9PSAyKTsKLQotICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IHhzZEVFMSA9IChYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbWVudHMuZ2V0KDApOwotICAgIFhTRFNjaGVtYSBpbmxpbmVTY2hlbWEwMSA9IHhzZEVFMS5nZXRTY2hlbWEoKTsKLSAgICBTZXQgdW51c2VkUHJlZml4ZXMwMSA9IChTZXQpIG1hcC5nZXQoaW5saW5lU2NoZW1hMDEpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwMS5zaXplKCkgPT0gMCk7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTIgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCgxKTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDIgPSB4c2RFRTIuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDIgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTAyKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDIuc2l6ZSgpID09IDApOwotCi0gICAgU2V0IHVudXNlZFdTRExQcmVmaXhlcyA9IGltcG9ydE1hbmFnZXIuZ2V0VW51c2VkV1NETFByZWZpeGVzKCk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuc2l6ZSgpID09IDApOwotICB9Ci0KLSAgLy8gVXNpbmcgdGhlIHRlc3QgV1NETHMgZnJvbSB0aGUgVW51c2VkIGZvbGRlcgotICBwdWJsaWMgdm9pZCB0ZXN0Q2xlYW51cDAxMSgpCi0gIHsKLSAgICBEZWZpbml0aW9uIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKFRDX1JPT1RfRk9MREVSICsgIi9VbnVzZWQvdGVzdC9NYWluNy53c2RsIik7Ci0gICAgaW1wb3J0TWFuYWdlci5wZXJmb3JtUmVtb3ZhbChkZWZpbml0aW9uKTsKLQotICAgIExpc3QgZXh0RWxlbWVudHMgPSBkZWZpbml0aW9uLmdldEVUeXBlcygpLmdldEVFeHRlbnNpYmlsaXR5RWxlbWVudHMoKTsKLQotICAgIE1hcCBtYXAgPSAoTWFwKSBpbXBvcnRNYW5hZ2VyLmdldFNjaGVtYVRvUHJlZml4TWFwKCk7Ci0gICAgU2V0IHNjaGVtYXMgPSBtYXAua2V5U2V0KCk7Ci0gICAgLy8gVHdvIGlubGluZSBzY2hlbWFzCi0gICAgYXNzZXJ0VHJ1ZShzY2hlbWFzLnNpemUoKSA9PSAyKTsKLSAgICBhc3NlcnRUcnVlKGV4dEVsZW1lbnRzLnNpemUoKSA9PSAyKTsKLQotICAgIFhTRFNjaGVtYUV4dGVuc2liaWxpdHlFbGVtZW50IHhzZEVFMSA9IChYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCkgZXh0RWxlbWVudHMuZ2V0KDApOwotICAgIFhTRFNjaGVtYSBpbmxpbmVTY2hlbWEwMSA9IHhzZEVFMS5nZXRTY2hlbWEoKTsKLSAgICBTZXQgdW51c2VkUHJlZml4ZXMwMSA9IChTZXQpIG1hcC5nZXQoaW5saW5lU2NoZW1hMDEpOwotICAgIGFzc2VydFRydWUodW51c2VkUHJlZml4ZXMwMS5zaXplKCkgPT0gMCk7Ci0KLSAgICBYU0RTY2hlbWFFeHRlbnNpYmlsaXR5RWxlbWVudCB4c2RFRTIgPSAoWFNEU2NoZW1hRXh0ZW5zaWJpbGl0eUVsZW1lbnQpIGV4dEVsZW1lbnRzLmdldCgxKTsKLSAgICBYU0RTY2hlbWEgaW5saW5lU2NoZW1hMDIgPSB4c2RFRTIuZ2V0U2NoZW1hKCk7Ci0gICAgU2V0IHVudXNlZFByZWZpeGVzMDIgPSAoU2V0KSBtYXAuZ2V0KGlubGluZVNjaGVtYTAyKTsKLSAgICBhc3NlcnRUcnVlKHVudXNlZFByZWZpeGVzMDIuc2l6ZSgpID09IDApOwotCi0gICAgU2V0IHVudXNlZFdTRExQcmVmaXhlcyA9IGltcG9ydE1hbmFnZXIuZ2V0VW51c2VkV1NETFByZWZpeGVzKCk7Ci0gICAgYXNzZXJ0VHJ1ZSh1bnVzZWRXU0RMUHJlZml4ZXMuc2l6ZSgpID09IDEpOwotICAgIGFzc2VydFRydWUodW51c2VkV1NETFByZWZpeGVzLmNvbnRhaW5zKCJ4c2QxIikpOwotICB9Ci0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0LnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3QueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTZkM2M4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3QueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTxwcm9qZWN0Ci0gICAgbmFtZT0idGVzdHN1aXRlIgotICAgIGRlZmF1bHQ9InJ1biIKLSAgICBiYXNlZGlyPSIuIj4KLSAgICAKLSAgICA8IS0tIFRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBzaG91bGQgYmUgcGFzc2VkIGludG8gdGhpcyBzY3JpcHQgLS0+Ci0gICAgPCEtLSAke2VjbGlwc2UtaG9tZX0gICAtLT4KLSAgICA8IS0tICR7YnVpbGREaXJlY3Rvcnl9ICAtLT4KLSAgICA8IS0tICR7YnVpbGRMYWJlbH0gICAgICAgIC0tPgotCi0gICAgPCEtLSBzaG91bGQgYmUgbGl0dGxlIG5lZWQgdG8gY2hhbmdlIHdoYXQncyBhYm92ZSAgLS0+Ci0JPHByb3BlcnR5Ci0JCW5hbWU9InBsdWdpbi1uYW1lIgotCQl2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMiIC8+Ci0gICAgPHByb3BlcnR5Ci0gICAgICAgIG5hbWU9ImNsYXNzbmFtZSIKLSAgICAgICAgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzLmludGVybmFsLkFsbFdTRExVSVRlc3RzIiAvPgotICAgIDxwcm9wZXJ0eQotICAgICAgICBuYW1lPSJ0ZXN0VHlwZSIKLSAgICAgICAgdmFsdWU9InVpLXRlc3QiIC8+Ci0KLSAgICA8IS0tIHNob3VsZCBiZSBsaXR0bGUgbmVlZCB0byBjaGFuZ2Ugd2hhdCdzIGJlbG93IC0tPgotCi0gICAgPGVjaG8gbWVzc2FnZT0iYmFzZWRpcjogJHtiYXNlZGlyfSIgLz4KLSAgICA8ZWNobyBtZXNzYWdlPSJlY2xpcHNlLWhvbWU6ICR7ZWNsaXBzZS1ob21lfSIgLz4KLSAgICA8ZWNobyBtZXNzYWdlPSJidWlsZERpcmVjdG9yeTogJHtidWlsZERpcmVjdG9yeX0iIC8+Ci0gICAgPGVjaG8gbWVzc2FnZT0icGx1Z2luLW5hbWU6ICR7cGx1Z2luLW5hbWV9IiAvPgotICAgIDxlY2hvIG1lc3NhZ2U9ImNsYXNzbmFtZTogJHtjbGFzc25hbWV9IiAvPgotICAgIDxlY2hvIG1lc3NhZ2U9InRlc3RUeXBlICR7dGVzdFR5cGV9IiAvPgotCi0KLSAgICA8cHJvcGVydHkKLSAgICAgICAgbmFtZT0ibGlicmFyeS1maWxlIgotICAgICAgICB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudGVzdF8zLjEuMC9saWJyYXJ5LnhtbCIgLz4KLSAgICA8cHJvcGVydHkKLSAgICAgICAgbmFtZT0id29ya3NwYWNlIgotICAgICAgICB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L2p1bml0d29ya3NwYWNlcy8ke3BsdWdpbi1uYW1lfSIgLz4KLSAgICAgICAgCi0gICAgPCEtLSBUaGlzIHRhcmdldCBob2xkcyBhbGwgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0IG5lZWRzIHRvIGJlIGRvbmUgZm9yIC0tPgotICAgIDwhLS0gYWxsIHRlc3RzIHRoYXQgYXJlIHRvIGJlIHJ1bi4gSW5pdGlhbGl6YXRpb24gZm9yIGluZGl2aWR1YWwgdGVzdHMgLS0+Ci0gICAgPCEtLSBzaG91bGQgYmUgZG9uZSB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIHN1aXRlIHRhcmdldC4gLS0+Ci0gICAgPHRhcmdldCBuYW1lPSJpbml0Ij4KLSAgICAgICAgPHRzdGFtcCAvPgotICAgICAgICA8ZGVsZXRlPgotICAgICAgICAgICAgPGZpbGVzZXQKLSAgICAgICAgICAgICAgICBkaXI9IiR7ZWNsaXBzZS1ob21lfSIKLSAgICAgICAgICAgICAgICBpbmNsdWRlcz0iJHtwbHVnaW4tbmFtZX0uKnhtbCIgLz4KLSAgICAgICAgPC9kZWxldGU+Ci0gICAgICAgIDwhLS0gbWFrZSBkaXJlY3RvcnksIGluIGNhc2UgcGF0aCBkb2Vzbid0IGV4aXN0IHlldCAtLT4KLSAgICAgICAgPG1rZGlyIGRpcj0iJHt3b3Jrc3BhY2V9IiAvPgotICAgICAgICA8IS0tICBidXQgZGVsZXRlIHRvIG1ha2Ugc3VyZSBmcmVzaCBjb250ZW50cy0tPgotICAgICAgICA8ZGVsZXRlCi0gICAgICAgICAgICBkaXI9IiR7d29ya3NwYWNlfSIKLSAgICAgICAgICAgIHF1aWV0PSJ0cnVlIiAvPgotCi0gICAgPC90YXJnZXQ+Ci0KLSAgICA8IS0tIFRoaXMgdGFyZ2V0IGRlZmluZXMgdGhlIHRlc3RzIHRoYXQgbmVlZCB0byBiZSBydW4uIC0tPgotICAgIDx0YXJnZXQgbmFtZT0ic3VpdGUiPgotCi0gICAgICAgIDxhbnQKLSAgICAgICAgICAgIHRhcmdldD0iJHt0ZXN0VHlwZX0iCi0gICAgICAgICAgICBhbnRmaWxlPSIke2xpYnJhcnktZmlsZX0iCi0gICAgICAgICAgICBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICAgICAgICA8cHJvcGVydHkKLSAgICAgICAgICAgICAgICBuYW1lPSJkYXRhLWRpciIKLSAgICAgICAgICAgICAgICB2YWx1ZT0iJHt3b3Jrc3BhY2V9IiAvPgotICAgICAgICAgICAgPHByb3BlcnR5Ci0gICAgICAgICAgICAgICAgbmFtZT0icGx1Z2luLW5hbWUiCi0gICAgICAgICAgICAgICAgdmFsdWU9IiR7cGx1Z2luLW5hbWV9IiAvPgotICAgICAgICAgICAgPHByb3BlcnR5Ci0gICAgICAgICAgICAgICAgbmFtZT0iY2xhc3NuYW1lIgotICAgICAgICAgICAgICAgIHZhbHVlPSIke2NsYXNzbmFtZX0iIC8+Ci0gICAgICAgICAgICA8cHJvcGVydHkKLSAgICAgICAgICAgICAgICBuYW1lPSJwbHVnaW4tcGF0aCIKLSAgICAgICAgICAgICAgICB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3BsdWdpbnMvJHtwbHVnaW4tbmFtZX0iIC8+Ci0gICAgICAgIDwvYW50PgotCi0gICAgICAgIDxjb3B5Ci0gICAgICAgICAgICBmYWlsb25lcnJvcj0iZmFsc2UiCi0gICAgICAgICAgICBmaWxlPSIke3dvcmtzcGFjZX0vLm1ldGFkYXRhLy5sb2ciCi0gICAgICAgICAgICB0b2ZpbGU9IiR7YnVpbGREaXJlY3Rvcnl9LyR7YnVpbGRMYWJlbH0vdGVzdFJlc3VsdHMvY29uc29sZWxvZ3MvJHtwbHVnaW4tbmFtZX0uY29uc29sZWxvZy50eHQiIC8+Ci0KLSAgICA8L3RhcmdldD4KLQotICAgIDwhLS0gVGhpcyB0YXJnZXQgaG9sZHMgY29kZSB0byBjbGVhbnVwIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50IGFmdGVyIC0tPgotICAgIDwhLS0gYWZ0ZXIgYWxsIG9mIHRoZSB0ZXN0cyBoYXZlIGJlZW4gcnVuLiBZb3UgY2FuIHVzZSB0aGlzIHRhcmdldCB0byAtLT4KLSAgICA8IS0tIGRlbGV0ZSB0ZW1wb3JhcnkgZmlsZXMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZC4gLS0+Ci0gICAgPHRhcmdldCBuYW1lPSJjbGVhbnVwIj4KLSAgICAgICAgPCEtLSB1c3VhbGx5IG5vIG5lZWQgdG8gZGVsZXRlIHdvcmtzcGFjZSB1bnRpbCBuZXh0IHJ1biwgYW5kIGxlYXZpbmcgaXQgYWxsb3dzIGluc3BlY3Rpb24gLS0+Ci0gICAgICAgIDwhLS0gPGRlbGV0ZSBkaXI9IiR7d29ya3NwYWNlfSIgcXVpZXQ9InRydWUiIC8+IC0tPgotICAgIDwvdGFyZ2V0PgotCi0gICAgPCEtLSBUaGlzIHRhcmdldCBydW5zIHRoZSB0ZXN0IHN1aXRlLiBBbnkgYWN0aW9ucyB0aGF0IG5lZWQgdG8gaGFwcGVuIC0tPgotICAgIDwhLS0gYWZ0ZXIgYWxsIHRoZSB0ZXN0cyBoYXZlIGJlZW4gcnVuIHNob3VsZCBnbyBoZXJlLiAtLT4KLSAgICA8dGFyZ2V0Ci0gICAgICAgIG5hbWU9InJ1biIKLSAgICAgICAgZGVwZW5kcz0iaW5pdCxzdWl0ZSxjbGVhbnVwIj4KLSAgICAgICAgPGFudAotICAgICAgICAgICAgdGFyZ2V0PSJjb2xsZWN0IgotICAgICAgICAgICAgYW50ZmlsZT0iJHtsaWJyYXJ5LWZpbGV9IgotICAgICAgICAgICAgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgICAgICAgPHByb3BlcnR5Ci0gICAgICAgICAgICAgICAgbmFtZT0iaW5jbHVkZXMiCi0gICAgICAgICAgICAgICAgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Lip4bWwiIC8+Ci0gICAgICAgICAgICA8cHJvcGVydHkKLSAgICAgICAgICAgICAgICBuYW1lPSJvdXRwdXQtZmlsZSIKLSAgICAgICAgICAgICAgICB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0ueG1sIiAvPgotICAgICAgICA8L2FudD4KLSAgICA8L3RhcmdldD4KLQotPC9wcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9CdWlsdEluVHlwZS9OZXdXU0RMRmlsZTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9CdWlsdEluVHlwZS9OZXdXU0RMRmlsZTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU0YTc3ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvQnVpbHRJblR5cGUvTmV3V1NETEZpbGUxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iTmV3V1NETEZpbGUxIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9OZXdXU0RMRmlsZTEvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTmV3V1NETEZpbGUxLyIKLQl4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczpwPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTmV3V1NETEZpbGUxLyI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3AzIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3AzUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJvcDNSZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6b3AzUmVzcG9uc2UiPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0ib3AzUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9InRuczpvcDMiPjwvd3NkbDpwYXJ0PgotCQk8d3NkbDpwYXJ0IG5hbWU9Ik5ld1BhcnQiIHR5cGU9InA6c3RyaW5nIj48L3dzZGw6cGFydD4KLQkJPHdzZGw6cGFydCBuYW1lPSJOZXdQYXJ0MSIgdHlwZT0icDpzdHJpbmciPjwvd3NkbDpwYXJ0PgotCQk8d3NkbDpwYXJ0IG5hbWU9Ik5ld1BhcnQyIiB0eXBlPSJwOnN0cmluZyI+PC93c2RsOnBhcnQ+Ci0JCTx3c2RsOnBhcnQgbmFtZT0iTmV3UGFydDQiIHR5cGU9InA6c3RyaW5nIj48L3dzZGw6cGFydD4KLQkKLQkJPHdzZGw6cGFydCBuYW1lPSJOZXdQYXJ0MyIgdHlwZT0icDpzdHJpbmciPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9InAyIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Im9wMyI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6b3AzUmVxdWVzdCIgbmFtZT0iYWFhIj48L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOm9wM1Jlc3BvbnNlIiBuYW1lPSJiYmIiPjwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iYjEiIHR5cGU9InRuczpwMiI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IgotCQkJdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIC8+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJvcDMiPgotCQkJPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTmV3V1NETEZpbGUxL29wMyIgLz4KLQkJCTx3c2RsOmlucHV0IG5hbWU9ImFhYSI+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQgbmFtZT0iYmJiIj4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JPHdzZGw6c2VydmljZSBuYW1lPSJzMSI+Ci0JCTx3c2RsOnBvcnQgbmFtZT0iTmV3UG9ydCIgYmluZGluZz0idG5zOmIxIj4KLQkJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIiAvPgotCQk8L3dzZGw6cG9ydD4KLQk8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvQ2hhbWVsZW9uLU5vTmFtZXNwYWNlL0ltcG9ydDEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML0NoYW1lbGVvbi1Ob05hbWVzcGFjZS9JbXBvcnQxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ5MDIyOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvQ2hhbWVsZW9uLU5vTmFtZXNwYWNlL0ltcG9ydDEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2Q6c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiAKLSAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiA+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcENUMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotCi0gICAgPHhzZDpncm91cCBuYW1lPSJJbXBHcjEiPgotICAgIAk8eHNkOnNlcXVlbmNlPgotICAgIAkJPHhzZDplbGVtZW50IG5hbWU9ImUxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotICAgIAk8L3hzZDpzZXF1ZW5jZT4KLSAgICA8L3hzZDpncm91cD4KLQotICAgIDx4c2Q6YXR0cmlidXRlIG5hbWU9IkltcEF0dHIxIiB0eXBlPSJJbXBTVDEiPjwveHNkOmF0dHJpYnV0ZT4KLQotICAgIDx4c2Q6YXR0cmlidXRlR3JvdXAgbmFtZT0iSW1wQXR0ckdyMSI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0MSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmF0dHJpYnV0ZUdyb3VwPgotCi0gICAgPHhzZDplbGVtZW50IG5hbWU9IkltcEVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcFNUMSI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXBTVDIiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcENUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML0NoYW1lbGVvbi1Ob05hbWVzcGFjZS9NdWx0aXBsZUlubGluZVNjaGVtYXMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9DaGFtZWxlb24tTm9OYW1lc3BhY2UvTXVsdGlwbGVJbmxpbmVTY2hlbWFzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjM2JmODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML0NoYW1lbGVvbi1Ob05hbWVzcGFjZS9NdWx0aXBsZUlubGluZVNjaGVtYXMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJNdWx0aXBsZUlubGluZVNjaGVtYXMiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL011bHRpcGxlSW5saW5lU2NoZW1hcy8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL011bHRpcGxlSW5saW5lU2NoZW1hcy8iCi0JeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JeG1sbnM6YWJjPSJodHRwOi8vYWJjIj4KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL011bHRpcGxlSW5saW5lU2NoZW1hcy8iPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOmJvb2xlYW4iIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iZmZmIj48L3hzZDpjb21wbGV4VHlwZT4KLQkJPC94c2Q6c2NoZW1hPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL011bHRpcGxlSW5saW5lU2NoZW1hcy8xIj4KLQkJCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPjwveHNkOmNvbXBsZXhUeXBlPgotCQk8L3hzZDpzY2hlbWE+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTXVsdGlwbGVJbmxpbmVTY2hlbWFzLzIiPgotCQkJCi0JCTwveHNkOnNjaGVtYT4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vYWJjIj4KLQkJCTx4c2Q6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iSW1wb3J0MS54c2QiPjwveHNkOmluY2x1ZGU+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9ImFiYzpJbXBFbGVtMSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNdWx0aXBsZUlubGluZVNjaGVtYXMiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiAvPgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgLz4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci0JPHdzZGw6YmluZGluZyBuYW1lPSJNdWx0aXBsZUlubGluZVNjaGVtYXNTT0FQIiB0eXBlPSJ0bnM6TXVsdGlwbGVJbmxpbmVTY2hlbWFzIj4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0JCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL011bHRpcGxlSW5saW5lU2NoZW1hcy9OZXdPcGVyYXRpb24iIC8+Ci0JCQk8d3NkbDppbnB1dD4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dD4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JPHdzZGw6c2VydmljZSBuYW1lPSJNdWx0aXBsZUlubGluZVNjaGVtYXMiPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpNdWx0aXBsZUlubGluZVNjaGVtYXNTT0FQIiBuYW1lPSJNdWx0aXBsZUlubGluZVNjaGVtYXNTT0FQIj4KLQkJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIiAvPgotCQk8L3dzZGw6cG9ydD4KLQk8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvSW1wb3J0c1dpdGhOYW1lc3BhY2UvSW1wb3J0MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvSW1wb3J0c1dpdGhOYW1lc3BhY2UvSW1wb3J0MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OWZjY2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML0ltcG9ydHNXaXRoTmFtZXNwYWNlL0ltcG9ydDEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2Q6c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiAKLSAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IiAKLSAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wQ1QxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyIgbWF4T2NjdXJzPSIyNSI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLSAgICA8eHNkOmdyb3VwIG5hbWU9IkltcEdyMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmdyb3VwPgotCi0gICAgPHhzZDphdHRyaWJ1dGUgbmFtZT0iSW1wQXR0cjEiIHR5cGU9InRuczpJbXBTVDEiPjwveHNkOmF0dHJpYnV0ZT4KLQotICAgIDx4c2Q6YXR0cmlidXRlR3JvdXAgbmFtZT0iSW1wQXR0ckdyMSI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0MSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmF0dHJpYnV0ZUdyb3VwPgotCi0gICAgPHhzZDplbGVtZW50IG5hbWU9IkltcEVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcFNUMSI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXBTVDIiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcENUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML0ltcG9ydHNXaXRoTmFtZXNwYWNlL3JlZkJ5UGFydEVsZW1lbnQvVW51c2VkL01haW4ud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9JbXBvcnRzV2l0aE5hbWVzcGFjZS9yZWZCeVBhcnRFbGVtZW50L1VudXNlZC9NYWluLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMjg2NzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML0ltcG9ydHNXaXRoTmFtZXNwYWNlL3JlZkJ5UGFydEVsZW1lbnQvVW51c2VkL01haW4ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJNYWluIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2QxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCQkJPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLQkJCQlzY2hlbWFMb2NhdGlvbj0iLi4vLi4vSW1wb3J0MS54c2QiPgotCQkJPC94c2Q6aW1wb3J0PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJNYWluT3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJNYWluT3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk1haW5PcGVyYXRpb24iPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTWFpbk9wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluUG9ydFR5cGUiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlcXVlc3QiPjwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvSW1wb3J0c1dpdGhOYW1lc3BhY2UvcmVmQnlQYXJ0RWxlbWVudC9Vc2VkL01haW4ud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9JbXBvcnRzV2l0aE5hbWVzcGFjZS9yZWZCeVBhcnRFbGVtZW50L1VzZWQvTWFpbi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmQwYzEyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9JbXBvcnRzV2l0aE5hbWVzcGFjZS9yZWZCeVBhcnRFbGVtZW50L1VzZWQvTWFpbi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9Ik1haW4iIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzZDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij4KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JCQk8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IgotCQkJCXNjaGVtYUxvY2F0aW9uPSIuLi8uLi9JbXBvcnQxLnhzZCI+Ci0JCQk8L3hzZDppbXBvcnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ4c2QxOkltcEVsZW0xIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpblBvcnRUeXBlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXF1ZXN0Ij48L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML0ltcG9ydHNXaXRoTmFtZXNwYWNlL3JlZkJ5UGFydFR5cGUvVXNlZC9NYWluLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvSW1wb3J0c1dpdGhOYW1lc3BhY2UvcmVmQnlQYXJ0VHlwZS9Vc2VkL01haW4ud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDljOGFjNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvSW1wb3J0c1dpdGhOYW1lc3BhY2UvcmVmQnlQYXJ0VHlwZS9Vc2VkL01haW4ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJNYWluIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2QxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCQkJPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLQkJCQlzY2hlbWFMb2NhdGlvbj0iLi4vLi4vSW1wb3J0MS54c2QiPgotCQkJPC94c2Q6aW1wb3J0PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJNYWluT3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJNYWluT3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ieHNkMTpJbXBDVDEiPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTWFpbk9wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluUG9ydFR5cGUiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlcXVlc3QiPjwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvTXVsdGlwbGVJbmxpbmVTY2hlbWFzL0ltcG9ydDEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML011bHRpcGxlSW5saW5lU2NoZW1hcy9JbXBvcnQxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY5ZmNjZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvTXVsdGlwbGVJbmxpbmVTY2hlbWFzL0ltcG9ydDEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2Q6c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiAKLSAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IiAKLSAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wQ1QxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyIgbWF4T2NjdXJzPSIyNSI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLSAgICA8eHNkOmdyb3VwIG5hbWU9IkltcEdyMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmdyb3VwPgotCi0gICAgPHhzZDphdHRyaWJ1dGUgbmFtZT0iSW1wQXR0cjEiIHR5cGU9InRuczpJbXBTVDEiPjwveHNkOmF0dHJpYnV0ZT4KLQotICAgIDx4c2Q6YXR0cmlidXRlR3JvdXAgbmFtZT0iSW1wQXR0ckdyMSI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0MSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmF0dHJpYnV0ZUdyb3VwPgotCi0gICAgPHhzZDplbGVtZW50IG5hbWU9IkltcEVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcFNUMSI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXBTVDIiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcENUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML011bHRpcGxlSW5saW5lU2NoZW1hcy9yZWZCeVBhcnRFbGVtZW50L1VudXNlZC9NYWluLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvTXVsdGlwbGVJbmxpbmVTY2hlbWFzL3JlZkJ5UGFydEVsZW1lbnQvVW51c2VkL01haW4ud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBkYWNkZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvTXVsdGlwbGVJbmxpbmVTY2hlbWFzL3JlZkJ5UGFydEVsZW1lbnQvVW51c2VkL01haW4ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJNYWluIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2QxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJNYWluT3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JCSAgIAk8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IgotCQkJCXNjaGVtYUxvY2F0aW9uPSIuLi8uLi9JbXBvcnQxLnhzZCI+Ci0JCQk8L3hzZDppbXBvcnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJNYWluT3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk1haW5PcGVyYXRpb24iPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTWFpbk9wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluUG9ydFR5cGUiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlcXVlc3QiPjwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvTXVsdGlwbGVJbmxpbmVTY2hlbWFzL3JlZkJ5UGFydEVsZW1lbnQvVXNlZC9NYWluLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvTXVsdGlwbGVJbmxpbmVTY2hlbWFzL3JlZkJ5UGFydEVsZW1lbnQvVXNlZC9NYWluLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MTg0ZTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML011bHRpcGxlSW5saW5lU2NoZW1hcy9yZWZCeVBhcnRFbGVtZW50L1VzZWQvTWFpbi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9Ik1haW4iIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzZDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij4KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj4KLQkJICAgCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiCi0JCQkJc2NoZW1hTG9jYXRpb249Ii4uLy4uL0ltcG9ydDEueHNkIj4KLQkJCTwveHNkOmltcG9ydD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ4c2QxOkltcEVsZW0xIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpblBvcnRUeXBlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXF1ZXN0Ij48L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML011bHRpcGxlSW5saW5lU2NoZW1hcy9yZWZCeVBhcnRUeXBlL1VzZWQvTWFpbi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML011bHRpcGxlSW5saW5lU2NoZW1hcy9yZWZCeVBhcnRUeXBlL1VzZWQvTWFpbi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTdjMzIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9NdWx0aXBsZUlubGluZVNjaGVtYXMvcmVmQnlQYXJ0VHlwZS9Vc2VkL01haW4ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJNYWluIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2QxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJNYWluT3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JCSAgIAk8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IgotCQkJCXNjaGVtYUxvY2F0aW9uPSIuLi8uLi9JbXBvcnQxLnhzZCI+Ci0JCQk8L3hzZDppbXBvcnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJNYWluT3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ieHNkMTpJbXBDVDEiPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTWFpbk9wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluUG9ydFR5cGUiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlcXVlc3QiPjwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvVW51c2VkL0ltcG9ydDEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC9JbXBvcnQxLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY5ZmNjZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvVW51c2VkL0ltcG9ydDEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2Q6c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiAKLSAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IiAKLSAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wQ1QxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyIgbWF4T2NjdXJzPSIyNSI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLSAgICA8eHNkOmdyb3VwIG5hbWU9IkltcEdyMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmdyb3VwPgotCi0gICAgPHhzZDphdHRyaWJ1dGUgbmFtZT0iSW1wQXR0cjEiIHR5cGU9InRuczpJbXBTVDEiPjwveHNkOmF0dHJpYnV0ZT4KLQotICAgIDx4c2Q6YXR0cmlidXRlR3JvdXAgbmFtZT0iSW1wQXR0ckdyMSI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0MSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmF0dHJpYnV0ZUdyb3VwPgotCi0gICAgPHhzZDplbGVtZW50IG5hbWU9IkltcEVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcFNUMSI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXBTVDIiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcENUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC9JbXBvcnQyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvSW1wb3J0Mi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYmE3NzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC9JbXBvcnQyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIgCi0gICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCI+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcDJDVDEiPgotICAgIAk8eHNkOnNlcXVlbmNlPgotICAgIAkJPHhzZDplbGVtZW50IG5hbWU9ImUxIiB0eXBlPSJ4c2Q6c3RyaW5nIiBtYXhPY2N1cnM9IjI1Ij48L3hzZDplbGVtZW50PgotICAgIAk8L3hzZDpzZXF1ZW5jZT4KLSAgICA8L3hzZDpjb21wbGV4VHlwZT4KLQotICAgIDx4c2Q6Z3JvdXAgbmFtZT0iSW1wMkdyMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmdyb3VwPgotCi0gICAgPHhzZDphdHRyaWJ1dGUgbmFtZT0iSW1wMkF0dHIxIiB0eXBlPSJ0bnM6SW1wMlNUMSI+PC94c2Q6YXR0cmlidXRlPgotCi0gICAgPHhzZDphdHRyaWJ1dGVHcm91cCBuYW1lPSJJbXAyQXR0ckdyMSI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0MSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmF0dHJpYnV0ZUdyb3VwPgotCi0gICAgPHhzZDplbGVtZW50IG5hbWU9IkltcDJFbGVtMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXAyU1QxIj4KLSAgICAJPHhzZDpyZXN0cmljdGlvbiBiYXNlPSJ4c2Q6c3RyaW5nIj48L3hzZDpyZXN0cmljdGlvbj4KLSAgICA8L3hzZDpzaW1wbGVUeXBlPgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcDJTVDIiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcDJDVDIiPgotICAgIAk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJhdHRyMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotPC94c2Q6c2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvSW1wb3J0My54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvVW51c2VkL0ltcG9ydDMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzE1ZDIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvSW1wb3J0My54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHhzZDpzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiIHhtbG5zOlExPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDQiPgotCi0gICAgPHhzZDppbXBvcnQgc2NoZW1hTG9jYXRpb249IkltcG9ydDQueHNkIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NCI+PC94c2Q6aW1wb3J0PgotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wM0NUMSI+Ci0JCTx4c2Q6c2VxdWVuY2U+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNlcXVlbmNlPgotCTwveHNkOmNvbXBsZXhUeXBlPgotCi0JPHhzZDpncm91cCBuYW1lPSJJbXAzR3IxIj4KLQkJPHhzZDpzZXF1ZW5jZT4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2VxdWVuY2U+Ci0JPC94c2Q6Z3JvdXA+Ci0KLQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJbXAzQXR0cjEiIHR5cGU9InRuczpJbXAzU1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLQk8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkltcDNBdHRyR3IxIj4KLQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXQxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0JPC94c2Q6YXR0cmlidXRlR3JvdXA+Ci0KLQk8eHNkOmVsZW1lbnQgbmFtZT0iSW1wM0VsZW0xIiB0eXBlPSJRMTpJbXA0Q1QxIj48L3hzZDplbGVtZW50PgotCi0JPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcDNTVDEiPgotCQk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotCTwveHNkOnNpbXBsZVR5cGU+Ci0KLQk8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW1wM1NUMiI+Ci0JCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0JPC94c2Q6c2ltcGxlVHlwZT4KLQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wM0NUMiI+Ci0JCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0JPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC9JbXBvcnQ0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvSW1wb3J0NC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0NTE5NTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC9JbXBvcnQ0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDQiIAotICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQ0IiB4bWxuczpRMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiPgotCi0gICAgPHhzZDppbXBvcnQgc2NoZW1hTG9jYXRpb249IkltcG9ydDMueHNkIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij48L3hzZDppbXBvcnQ+Ci0gICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJJbXA0Q1QxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyIgbWF4T2NjdXJzPSIyNSI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLSAgICA8eHNkOmdyb3VwIG5hbWU9IkltcDRHcjEiPgotICAgIAk8eHNkOnNlcXVlbmNlPgotICAgIAkJPHhzZDplbGVtZW50IG5hbWU9ImUxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotICAgIAk8L3hzZDpzZXF1ZW5jZT4KLSAgICA8L3hzZDpncm91cD4KLQotICAgIDx4c2Q6YXR0cmlidXRlIG5hbWU9IkltcDRBdHRyMSIgdHlwZT0idG5zOkltcDRTVDEiPjwveHNkOmF0dHJpYnV0ZT4KLQotICAgIDx4c2Q6YXR0cmlidXRlR3JvdXAgbmFtZT0iSW1wNEF0dHJHcjEiPgotICAgIAk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJhdDEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmF0dHJpYnV0ZT4KLSAgICA8L3hzZDphdHRyaWJ1dGVHcm91cD4KLQotICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJJbXA0RWxlbTEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0KLSAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW1wNFNUMSI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXA0U1QyIj4KLSAgICAJPHhzZDpyZXN0cmljdGlvbiBiYXNlPSJ4c2Q6c3RyaW5nIj48L3hzZDpyZXN0cmljdGlvbj4KLSAgICA8L3hzZDpzaW1wbGVUeXBlPgotCi0gICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJJbXA0Q1QyIj4KLSAgICAJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXR0cjEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmF0dHJpYnV0ZT4KLSAgICA8L3hzZDpjb21wbGV4VHlwZT4KLQotCi0gICAgPHhzZDplbGVtZW50IG5hbWU9IkltcDRFbGVtMiIgdHlwZT0iUTE6SW1wM0NUMiI+PC94c2Q6ZWxlbWVudD4KLTwveHNkOnNjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvVW51c2VkL3Rlc3QvTWFpbjEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvdGVzdC9NYWluMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODliYWIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvdGVzdC9NYWluMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9Ik1haW4iIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzZDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij4KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JCSAgIAk8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IgotCQkJCXNjaGVtYUxvY2F0aW9uPSJBLnhzZCI+Ci0JCQk8L3hzZDppbXBvcnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj4KLQkJICAgCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiCi0JCQkJc2NoZW1hTG9jYXRpb249Ii4uL0ltcG9ydDEueHNkIj4KLQkJCTwveHNkOmltcG9ydD4KLQkJICAgCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiCi0JCQkJc2NoZW1hTG9jYXRpb249IkIueHNkIj4KLQkJCTwveHNkOmltcG9ydD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2QxOkltcENUMSI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJNYWluT3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9InRuczpNYWluT3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9Ik1haW5Qb3J0VHlwZSI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJNYWluT3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpNYWluT3BlcmF0aW9uUmVxdWVzdCI+PC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpNYWluT3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvdGVzdC9NYWluMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC90ZXN0L01haW4yLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4OWJhYjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC90ZXN0L01haW4yLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iTWFpbiIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNkMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj4KLQkJICAgCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiCi0JCQkJc2NoZW1hTG9jYXRpb249IkEueHNkIj4KLQkJCTwveHNkOmltcG9ydD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJNYWluT3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTWFpbk9wZXJhdGlvblJlc3BvbnNlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCQkgICAJPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLQkJCQlzY2hlbWFMb2NhdGlvbj0iLi4vSW1wb3J0MS54c2QiPgotCQkJPC94c2Q6aW1wb3J0PgotCQkgICAJPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLQkJCQlzY2hlbWFMb2NhdGlvbj0iQi54c2QiPgotCQkJPC94c2Q6aW1wb3J0PgotCQk8L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTWFpbk9wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InhzZDE6SW1wQ1QxIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpblBvcnRUeXBlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXF1ZXN0Ij48L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC90ZXN0L01haW4zLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvVW51c2VkL3Rlc3QvTWFpbjMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMwNDVkOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvVW51c2VkL3Rlc3QvTWFpbjMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJNYWluIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2QxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCQkgICAJPHhzZDppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJBLnhzZCI+PC94c2Q6aW5jbHVkZT4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJNYWluT3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTWFpbk9wZXJhdGlvblJlc3BvbnNlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCQkgICAJPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLQkJCQlzY2hlbWFMb2NhdGlvbj0iLi4vSW1wb3J0MS54c2QiPgotCQkJPC94c2Q6aW1wb3J0PgotCQkgICAJPHhzZDppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJCLnhzZCI+PC94c2Q6aW5jbHVkZT4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2QxOkltcENUMSI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJNYWluT3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9InRuczpNYWluT3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9Ik1haW5Qb3J0VHlwZSI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJNYWluT3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpNYWluT3BlcmF0aW9uUmVxdWVzdCI+PC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpNYWluT3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvdGVzdC9NYWluNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC90ZXN0L01haW40LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjOTc2NzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC90ZXN0L01haW40LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iTWFpbiIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNkMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj4KLQkJICAgCTx4c2Q6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iQS54c2QiPjwveHNkOmluY2x1ZGU+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj4KLQkJICAgCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiCi0JCQkJc2NoZW1hTG9jYXRpb249Ii4uL0ltcG9ydDEueHNkIj4KLQkJCTwveHNkOmltcG9ydD4KLQkJICAgCTx4c2Q6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iQi54c2QiPjwveHNkOmluY2x1ZGU+Ci0JCTwveHNkOnNjaGVtYT4KLQkJPHhzZDpzY2hlbWE+Ci0gICAgICAgICAgICA8eHNkOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iQy54c2QiIG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+PC94c2Q6aW1wb3J0PiAKLSAgICAgICAgICAgIDx4c2Q6aW1wb3J0IHNjaGVtYUxvY2F0aW9uPSJDLnhzZCIgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj48L3hzZDppbXBvcnQ+Ci0gICAgICAgICAgICA8eHNkOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iRC54c2QiIG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+PC94c2Q6aW1wb3J0PgotICAgICAgICAgICAgPHhzZDppbXBvcnQgc2NoZW1hTG9jYXRpb249IkUueHNkIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPjwveHNkOmltcG9ydD4gCi0JCTwveHNkOnNjaGVtYT4KLQkJPHhzZDpzY2hlbWE+Ci0gICAgICAgICAgICA8eHNkOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iRi54c2QiIG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+PC94c2Q6aW1wb3J0PiAKLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2QxOkltcENUMSI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJNYWluT3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9InRuczpNYWluT3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9Ik1haW5Qb3J0VHlwZSI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJNYWluT3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpNYWluT3BlcmF0aW9uUmVxdWVzdCI+PC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpNYWluT3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvdGVzdC9NYWluNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC90ZXN0L01haW41LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYjcxZTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC90ZXN0L01haW41LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iTWFpbiIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNkMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj4KLQkJICAgCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiCi0JCQkJc2NoZW1hTG9jYXRpb249Ii4uL0ltcG9ydDIueHNkIj4KLQkJCTwveHNkOmltcG9ydD4KLQkJICAgCTx4c2Q6ZWxlbWVudCBuYW1lPSJNYWluT3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTWFpbk9wZXJhdGlvblJlc3BvbnNlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCQkgICAJPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLQkJCQlzY2hlbWFMb2NhdGlvbj0iLi4vSW1wb3J0MS54c2QiPgotCQkJPC94c2Q6aW1wb3J0PgotCQk8L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTWFpbk9wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InhzZDE6SW1wQ1QxIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpblBvcnRUeXBlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXF1ZXN0Ij48L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1VudXNlZC90ZXN0L01haW42LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvVW51c2VkL3Rlc3QvTWFpbjYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcyNzM5NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvVW51c2VkL3Rlc3QvTWFpbjYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJNYWluIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2QxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCQkgICAJPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLQkJCQlzY2hlbWFMb2NhdGlvbj0iLi4vSW1wb3J0Mi54c2QiPgotCQkJPC94c2Q6aW1wb3J0PgotCQkgICAJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJNYWluT3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JCSAgIAk8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IgotCQkJCXNjaGVtYUxvY2F0aW9uPSIuLi9JbXBvcnQxLnhzZCI+Ci0JCQk8L3hzZDppbXBvcnQ+Ci0JCSAgIAk8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IgotCQkJCXNjaGVtYUxvY2F0aW9uPSIuLi9JbXBvcnQyLnhzZCI+Ci0JCQk8L3hzZDppbXBvcnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJNYWluT3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ieHNkMTpJbXBDVDEiPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTWFpbk9wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluUG9ydFR5cGUiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlcXVlc3QiPjwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TWFpbk9wZXJhdGlvblJlc3BvbnNlIj48L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvVW51c2VkL3Rlc3QvTWFpbjcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvdGVzdC9NYWluNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjk0OTdkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9VbnVzZWQvdGVzdC9NYWluNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9Ik1haW4iIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzZDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij4KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTWFpbk9wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj4KLQkJICAgCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiCi0JCQkJc2NoZW1hTG9jYXRpb249Ii4uL0ltcG9ydDMueHNkIj4KLQkJCTwveHNkOmltcG9ydD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpblBvcnRUeXBlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik1haW5PcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXF1ZXN0Ij48L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk1haW5PcGVyYXRpb25SZXNwb25zZSI+PC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvSW1wb3J0MDAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9JbXBvcnQwMDEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFiNWE5ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9JbXBvcnQwMDEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IkltcG9ydDAwMSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgICAgPHhzZDpjb21wbGV4VHlwZT4KLSAgICAgICAgICA8eHNkOnNlcXVlbmNlPgotICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgICAgICA8L3hzZDpzZXF1ZW5jZT4KLSAgICAgICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0gICAgICA8L3hzZDplbGVtZW50PgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbiIgbmFtZT0icGFyYW1ldGVycyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkltcG9ydDAwMSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJJbXBvcnQwMDFTT0FQIiB0eXBlPSJ0bnM6SW1wb3J0MDAxIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS9OZXdPcGVyYXRpb24iLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJJbXBvcnQwMDEiPgotICAgIDx3c2RsOnBvcnQgYmluZGluZz0idG5zOkltcG9ydDAwMVNPQVAiIG5hbWU9IkltcG9ydDAwMVNPQVAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDAxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYWU0MjIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAxLyIKLQluYW1lPSJNYWluMDAxIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAxLyIKLQl4bWxuczp3c2RsMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIj4KLQkKLQk8IS0tIFVudXNlZCBJbXBvcnQgLS0+Ci0JCi0JPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIgotCQlsb2NhdGlvbj0iSW1wb3J0MDAxLndzZGwiPgotCTwvd3NkbDppbXBvcnQ+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDAyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDAyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMDIwOTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAyLyIKLSAgICBuYW1lPSJNYWluMDAyIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAyLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOndzZGwxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iPgotCQotCTwhLS0gVXNlZCBJbXBvcnQgLS0+Ci0JCi0JPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIgotCQlsb2NhdGlvbj0iSW1wb3J0MDAxLndzZGwiPgotCTwvd3NkbDppbXBvcnQ+Ci0JCi0JPHdzZGw6c2VydmljZSBuYW1lPSJNYWluU2VydmljZSI+Ci0JCTx3c2RsOnBvcnQgbmFtZT0iTmV3UG9ydCIgYmluZGluZz0id3NkbDE6SW1wb3J0MDAxU09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyI+PC9zb2FwOmFkZHJlc3M+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGE2MDJlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy9jb3JlL01haW4wMDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAzLyIKLSAgICBuYW1lPSJNYWluMDAzIgotICAgCXhtbG5zOndzZGwxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDMvIj4KLQotCTwhLS0gVW51c2VkIEltcG9ydCAtLT4KLQkKLQk8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iCi0JCWxvY2F0aW9uPSJJbXBvcnQwMDEud3NkbCI+Ci0JPC93c2RsOmltcG9ydD4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy9jb3JlL01haW4wMDQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy9jb3JlL01haW4wMDQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYzMmI1Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDA0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAwNC8iCi0gICAgbmFtZT0iTWFpbjAwNCIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAwNC8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczp3c2RsMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIj4KLQkKLQk8IS0tIFVzZWQgSW1wb3J0IC0tPgotCQotCTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIKLQkJbG9jYXRpb249IkltcG9ydDAwMS53c2RsIj4KLQk8L3dzZGw6aW1wb3J0PgotCQotCTx3c2RsOnNlcnZpY2UgbmFtZT0iTWFpblNlcnZpY2UiPgotCQk8d3NkbDpwb3J0IG5hbWU9Ik5ld1BvcnQiIGJpbmRpbmc9IndzZGwxOkltcG9ydDAwMVNPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iPjwvc29hcDphZGRyZXNzPgotCQk8L3dzZGw6cG9ydD4KLQk8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy9jb3JlL01haW4wMDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy9jb3JlL01haW4wMDUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVjMTNhYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDA1LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGRlZmluaXRpb25zIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAwNS8iCi0gICAgbmFtZT0iTWFpbjAwNSIKLSAgIAl4bWxuczp3c2RsMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA1LyI+Ci0KLQk8IS0tIFVudXNlZCBJbXBvcnQgLS0+Ci0JCi0JPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIKLQkJbG9jYXRpb249IkltcG9ydDAwMS53c2RsIj4KLQk8L2ltcG9ydD4KLTwvZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDA2LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDA2LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZTIwYzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxkZWZpbml0aW9ucyB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDYvIgotICAgIG5hbWU9Ik1haW4wMDYiCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLSAgIAl4bWxuczp3c2RsMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA2LyI+Ci0KLQk8IS0tIFVzZWQgSW1wb3J0IC0tPgotCQotCTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iCi0JCWxvY2F0aW9uPSJJbXBvcnQwMDEud3NkbCI+Ci0JPC9pbXBvcnQ+Ci0JCi0JPHNlcnZpY2UgbmFtZT0iTWFpblNlcnZpY2UiPgotCQk8cG9ydCBuYW1lPSJOZXdQb3J0IiBiaW5kaW5nPSJ3c2RsMTpJbXBvcnQwMDFTT0FQIj4KLQkJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIj48L3NvYXA6YWRkcmVzcz4KLQkJPC9wb3J0PgotCTwvc2VydmljZT4KLTwvZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDA3LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNjZiNGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwNy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA3LyIKLQluYW1lPSJNYWluMDA3IgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA3LyIKLQl4bWxucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIj4KLQkKLQk8IS0tIFVudXNlZCBJbXBvcnQgLS0+Ci0JCi0JPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIgotCQlsb2NhdGlvbj0iSW1wb3J0MDAxLndzZGwiPgotCTwvd3NkbDppbXBvcnQ+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDA4LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvY29yZS9NYWluMDA4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MDcwZGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwOC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA3LyIKLQluYW1lPSJNYWluMDA3IgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA3LyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iPgotCQotCTwhLS0gVXNlZCBJbXBvcnQgLS0+Ci0JCi0JPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIgotCQlsb2NhdGlvbj0iSW1wb3J0MDAxLndzZGwiPgotCTwvd3NkbDppbXBvcnQ+Ci0JCi0JPHdzZGw6c2VydmljZSBuYW1lPSJNYWluU2VydmljZSI+Ci0JCTx3c2RsOnBvcnQgbmFtZT0iTmV3UG9ydCIgYmluZGluZz0iSW1wb3J0MDAxU09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyI+PC9zb2FwOmFkZHJlc3M+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwOS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL2NvcmUvTWFpbjAwOS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGNiZjA2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy9jb3JlL01haW4wMDkud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAwOS8iCi0JbmFtZT0iTWFpbjAwOSIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAwOS8iPgotCQotCTwhLS0gVW51c2VkIEludmFsaWQgSW1wb3J0IC0tPgotCQotCTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRmlsZU5vdEZvdW5kLyIKLQkJbG9jYXRpb249IldTRExGaWxlTm90Rm91bmQud3NkbCI+Ci0JPC93c2RsOmltcG9ydD4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy90ZXN0L0ltcG9ydDAwMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvSW1wb3J0MDAxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExYjVhOWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvSW1wb3J0MDAxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJJbXBvcnQwMDEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgICAgIDwveHNkOnNlcXVlbmNlPgotICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4KLSAgICAgIDwveHNkOmVsZW1lbnQ+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgICAgICA8eHNkOmNvbXBsZXhUeXBlPgotICAgICAgICAgIDx4c2Q6c2VxdWVuY2U+Ci0gICAgICAgICAgICA8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb24iIG5hbWU9InBhcmFtZXRlcnMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJJbXBvcnQwMDEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iSW1wb3J0MDAxU09BUCIgdHlwZT0idG5zOkltcG9ydDAwMSI+Ci0gICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvTmV3T3BlcmF0aW9uIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iSW1wb3J0MDAxIj4KLSAgICA8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpJbXBvcnQwMDFTT0FQIiBuYW1lPSJJbXBvcnQwMDFTT0FQIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvSW1wb3J0MDAyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvdGVzdC9JbXBvcnQwMDIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRkYTJjYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvdGVzdC9JbXBvcnQwMDIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMi8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IkltcG9ydDAwMiIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMi8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAyLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgICAgPHhzZDpjb21wbGV4VHlwZT4KLSAgICAgICAgICA8eHNkOnNlcXVlbmNlPgotICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPgotICAgICAgPC94c2Q6ZWxlbWVudD4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgICAgICA8L3hzZDpzZXF1ZW5jZT4KLSAgICAgICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0gICAgICA8L3hzZDplbGVtZW50PgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbiIgbmFtZT0icGFyYW1ldGVycyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkltcG9ydDAwMiI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJJbXBvcnQwMDJTT0FQIiB0eXBlPSJ0bnM6SW1wb3J0MDAyIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMi9OZXdPcGVyYXRpb24iLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJJbXBvcnQwMDIiPgotICAgIDx3c2RsOnBvcnQgYmluZGluZz0idG5zOkltcG9ydDAwMlNPQVAiIG5hbWU9IkltcG9ydDAwMlNPQVAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvdGVzdC9NYWluMDAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvdGVzdC9NYWluMDAxLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNDY0OTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDEvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9Ik1haW4wMDEiCi0JeG1sbnM6d3NkbDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIKLQl4bWxuczp3c2RsMj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDIvIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAxLyI+Ci0KLSAgICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iIGxvY2F0aW9uPSJJbXBvcnQwMDEud3NkbCI+PC93c2RsOmltcG9ydD4KLSAgICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMi8iIGxvY2F0aW9uPSJJbXBvcnQwMDIud3NkbCI+PC93c2RsOmltcG9ydD4KLSAgICAKLSAgICA8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDEvIgotCQkJeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluMDAxIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgLz4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iTWFpbjAwMVNPQVAiIHR5cGU9InRuczpNYWluMDAxIj4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0JCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDEvTmV3T3BlcmF0aW9uIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iTWFpbjAwMSI+Ci0JCTx3c2RsOnBvcnQgYmluZGluZz0idG5zOk1haW4wMDFTT0FQIiBuYW1lPSJNYWluMDAxU09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvdGVzdC9NYWluMDAyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvdGVzdC9NYWluMDAyLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNWMxOTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDIvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9Ik1haW4wMDIiCi0JeG1sbnM6d3NkbDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIKLQl4bWxuczp3c2RsMj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDIvIgotCXhtbG5zOnhzZDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IgotICAgIHhtbG5zOnhzZDI9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NiIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAwMi8iPgotCi0gICAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDEvIiBsb2NhdGlvbj0iSW1wb3J0MDAxLndzZGwiPjwvd3NkbDppbXBvcnQ+Ci0gICAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQwMDIvIiBsb2NhdGlvbj0iSW1wb3J0MDAyLndzZGwiPjwvd3NkbDppbXBvcnQ+Ci0gICAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiIGxvY2F0aW9uPSIuLi8uLi8uLi9YU0QvVW51c2VkL0ltcG9ydDEueHNkIj48L3dzZGw6aW1wb3J0PgotICAgIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NiIgbG9jYXRpb249Ii4uLy4uLy4uL1hTRC9VbnVzZWQvSW1wb3J0Ni54c2QiPjwvd3NkbDppbXBvcnQ+Ci0gICAgCi0gICAgPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAyLyIKLQkJCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbiIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpbjAwMiI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLQk8d3NkbDpiaW5kaW5nIG5hbWU9Ik1haW4wMDJTT0FQIiB0eXBlPSJ0bnM6TWFpbjAwMiI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IgotCQkJdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIC8+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHNvYXA6b3BlcmF0aW9uCi0JCQkJc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAyL05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6YmluZGluZz4KLQk8d3NkbDpzZXJ2aWNlIG5hbWU9Ik1haW4wMDIiPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpNYWluMDAyU09BUCIgbmFtZT0iTWFpbjAwMlNPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzM4MjBmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy90ZXN0L01haW4wMDMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAzLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJNYWluMDAzIgotCXhtbG5zOndzZGwxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iCi0JeG1sbnM6d3NkbDI9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAyLyIKLQl4bWxuczp4c2QxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLSAgICB4bWxuczp4c2QyPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDYiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDMvIj4KLQotICAgIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIgbG9jYXRpb249IkltcG9ydDAwMS53c2RsIj48L3dzZGw6aW1wb3J0PgotICAgIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAyLyIgbG9jYXRpb249IkltcG9ydDAwMi53c2RsIj48L3dzZGw6aW1wb3J0PgotICAgIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IiBsb2NhdGlvbj0iLi4vLi4vLi4vWFNEL1VudXNlZC9JbXBvcnQxLnhzZCI+PC93c2RsOmltcG9ydD4KLSAgICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDYiIGxvY2F0aW9uPSIuLi8uLi8uLi9YU0QvVW51c2VkL0ltcG9ydDYueHNkIj48L3dzZGw6aW1wb3J0PgotICAgIAotICAgIDx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAwMy8iCi0JCQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InhzZDE6SW1wRWxlbTEiIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0ieHNkMjpJbXA2RWxlbTEiIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpbjAwMyI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLQk8d3NkbDpiaW5kaW5nIG5hbWU9Ik1haW4wMDNTT0FQIiB0eXBlPSJ0bnM6TWFpbjAwMyI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IgotCQkJdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIC8+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHNvYXA6b3BlcmF0aW9uCi0JCQkJc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDAzL05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6YmluZGluZz4KLQk8d3NkbDpzZXJ2aWNlIG5hbWU9Ik1haW4wMDMiPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpNYWluMDAzU09BUCIgbmFtZT0iTWFpbjAwM1NPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjA4MTk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy90ZXN0L01haW4wMDQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA0LyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJNYWluMDA0IgotCXhtbG5zOndzZGwxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDAwMS8iCi0JeG1sbnM6d3NkbDI9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAyLyIKLQl4bWxuczp4c2QxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLSAgICB4bWxuczp4c2QyPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDYiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDQvIj4KLQotICAgIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAxLyIgbG9jYXRpb249IkltcG9ydDAwMS53c2RsIj48L3dzZGw6aW1wb3J0PgotICAgIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0MDAyLyIgbG9jYXRpb249IkltcG9ydDAwMi53c2RsIj48L3dzZGw6aW1wb3J0PgotICAgIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IiBsb2NhdGlvbj0iLi4vLi4vLi4vWFNEL1VudXNlZC9JbXBvcnQxLnhzZCI+PC93c2RsOmltcG9ydD4KLSAgICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDYiIGxvY2F0aW9uPSIuLi8uLi8uLi9YU0QvVW51c2VkL0ltcG9ydDYueHNkIj48L3dzZGw6aW1wb3J0PgotICAgIAotICAgIDx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAwNC8iCi0JCQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IHR5cGU9InhzZDE6SW1wQ1QxIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IHR5cGU9InhzZDI6SW1wNkNUMSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluMDA0Ij4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgLz4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iTWFpbjAwNFNPQVAiIHR5cGU9InRuczpNYWluMDA0Ij4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0JCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDQvTmV3T3BlcmF0aW9uIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iTWFpbjAwNCI+Ci0JCTx3c2RsOnBvcnQgYmluZGluZz0idG5zOk1haW4wMDRTT0FQIiBuYW1lPSJNYWluMDA0U09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvdGVzdC9NYWluMDA1LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwvV1NETEltcG9ydHMvdGVzdC9NYWluMDA1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMmRmNjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwNS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDUvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9Ik1haW4wMDUiCi0JeG1sbnM6eHNkMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiCi0gICAgeG1sbnM6eHNkMj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQ2IgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA1LyI+Ci0KLSAgICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIgbG9jYXRpb249Ii4uLy4uLy4uL1hTRC9VbnVzZWQvSW1wb3J0MS54c2QiPjwvd3NkbDppbXBvcnQ+Ci0gICAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQ2IiBsb2NhdGlvbj0iLi4vLi4vLi4vWFNEL1VudXNlZC9JbXBvcnQ2LnhzZCI+PC93c2RsOmltcG9ydD4KLSAgICAKLSAgICA8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMDUvIgotCQkJeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCB0eXBlPSJ4c2QxOkltcENUMSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCB0eXBlPSJ4c2QyOkltcDZDVDEiIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpbjAwNSI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLQk8d3NkbDpiaW5kaW5nIG5hbWU9Ik1haW4wMDVTT0FQIiB0eXBlPSJ0bnM6TWFpbjAwNSI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IgotCQkJdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIC8+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHNvYXA6b3BlcmF0aW9uCi0JCQkJc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA1L05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6YmluZGluZz4KLQk8d3NkbDpzZXJ2aWNlIG5hbWU9Ik1haW4wMDUiPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpNYWluMDA1U09BUCIgbmFtZT0iTWFpbjAwNVNPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML1dTRExJbXBvcnRzL3Rlc3QvTWFpbjAwNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmFkMDk0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC9XU0RMSW1wb3J0cy90ZXN0L01haW4wMDYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA2LyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJNYWluMDA2IgotCXhtbG5zOnhzZDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IgotICAgIHhtbG5zOnhzZDI9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NiIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAwNi8iPgotCi0gICAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiIGxvY2F0aW9uPSIuLi8uLi8uLi9YU0QvVW51c2VkL0ltcG9ydDEueHNkIj48L3dzZGw6aW1wb3J0PgotICAgIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NiIgbG9jYXRpb249Ii4uLy4uLy4uL1hTRC9VbnVzZWQvSW1wb3J0Ni54c2QiPjwvd3NkbDppbXBvcnQ+Ci0gICAgCi0gICAgPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA2LyIKLQkJCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbiIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpbjAwNiI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLQk8d3NkbDpiaW5kaW5nIG5hbWU9Ik1haW4wMDZTT0FQIiB0eXBlPSJ0bnM6TWFpbjAwNiI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IgotCQkJdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIC8+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHNvYXA6b3BlcmF0aW9uCi0JCQkJc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDA2L05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6YmluZGluZz4KLQk8d3NkbDpzZXJ2aWNlIG5hbWU9Ik1haW4wMDYiPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpNYWluMDA2U09BUCIgbmFtZT0iTWFpbjAwNlNPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML3htbG5zQ2xlYW51cC9JbXBvcnQxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvSW1wb3J0MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OWZjY2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML3htbG5zQ2xlYW51cC9JbXBvcnQxLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIgCi0gICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCI+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcENUMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotCi0gICAgPHhzZDpncm91cCBuYW1lPSJJbXBHcjEiPgotICAgIAk8eHNkOnNlcXVlbmNlPgotICAgIAkJPHhzZDplbGVtZW50IG5hbWU9ImUxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotICAgIAk8L3hzZDpzZXF1ZW5jZT4KLSAgICA8L3hzZDpncm91cD4KLQotICAgIDx4c2Q6YXR0cmlidXRlIG5hbWU9IkltcEF0dHIxIiB0eXBlPSJ0bnM6SW1wU1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkltcEF0dHJHcjEiPgotICAgIAk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJhdDEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmF0dHJpYnV0ZT4KLSAgICA8L3hzZDphdHRyaWJ1dGVHcm91cD4KLQotICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJJbXBFbGVtMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXBTVDEiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW1wU1QyIj4KLSAgICAJPHhzZDpyZXN0cmljdGlvbiBiYXNlPSJ4c2Q6c3RyaW5nIj48L3hzZDpyZXN0cmljdGlvbj4KLSAgICA8L3hzZDpzaW1wbGVUeXBlPgotCi0gICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJJbXBDVDIiPgotICAgIAk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJhdHRyMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotPC94c2Q6c2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDAxLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTMzNTBjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDAxLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iTWFpbiIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0gICAgeG1sbnM6dG5zMDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAxLyIKLSAgICB4bWxuczp0bnMwMj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDIvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzZDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij4KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJICAgIHhtbG5zOnRuczAzPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMy8iCi0JCSAgICB4bWxuczp0bnMwND0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDQvIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj4KLQkJICAgCTx4c2Q6ZWxlbWVudCBuYW1lPSJNYWluT3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTWFpbk9wZXJhdGlvblJlc3BvbnNlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCSAgICB4bWxuczp0bnMwNT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDYvIgotCQkgICAgeG1sbnM6dG5zMDY9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjA3LyIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JCSAgIAk8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IgotCQkJCXNjaGVtYUxvY2F0aW9uPSIuLi9JbXBvcnQxLnhzZCI+Ci0JCQk8L3hzZDppbXBvcnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0ibG9jYWxFbGVtIiB0eXBlPSJ4c2QxOkltcENUMiI+PC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1haW5PcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2QxOkltcENUMSI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJNYWluT3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9InRuczpNYWluT3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9Ik1haW5Qb3J0VHlwZSI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJNYWluT3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpNYWluT3BlcmF0aW9uUmVxdWVzdCI+PC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpNYWluT3BlcmF0aW9uUmVzcG9uc2UiPjwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDAyLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzdlNmQ0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDAyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0gICAgeG1sbnM6dG5zMDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAxLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJNYWluMDAyIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLQkJICAgIHhtbG5zOnRuczAyPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMy8iCi0JCQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb24iIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9Ik1haW4wMDIiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiAvPgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgLz4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci0JPHdzZGw6YmluZGluZyBuYW1lPSJNYWluMDAyU09BUCIgdHlwZT0idG5zOk1haW4wMDIiPgotCQk8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIKLQkJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTxzb2FwOm9wZXJhdGlvbgotCQkJCXNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi9OZXdPcGVyYXRpb24iIC8+Ci0JCQk8d3NkbDppbnB1dD4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dD4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JPHdzZGw6c2VydmljZSBuYW1lPSJNYWluMDAyIj4KLQkJPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6TWFpbjAwMlNPQVAiIG5hbWU9Ik1haW4wMDJTT0FQIj4KLQkJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIiAvPgotCQk8L3dzZGw6cG9ydD4KLQk8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDAzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjU3ZDUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDAzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0gICAgeG1sbnM6dG5zMDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAxLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJNYWluMDAzIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLQkJICAgIHhtbG5zOnRuczAyPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMy8iCi0JCQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzZDphbm5vdGF0aW9uPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzZDphcHBpbmZvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRuczAxOnRlc3RFbGVtZW50IC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzZDphcHBpbmZvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2Q6YW5ub3RhdGlvbj4KLQkJCQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb24iIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9Ik1haW4wMDIiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiAvPgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgLz4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci0JPHdzZGw6YmluZGluZyBuYW1lPSJNYWluMDAyU09BUCIgdHlwZT0idG5zOk1haW4wMDIiPgotCQk8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIKLQkJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTxzb2FwOm9wZXJhdGlvbgotCQkJCXNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi9OZXdPcGVyYXRpb24iIC8+Ci0JCQk8d3NkbDppbnB1dD4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dD4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JPHdzZGw6c2VydmljZSBuYW1lPSJNYWluMDAyIj4KLQkJPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6TWFpbjAwMlNPQVAiIG5hbWU9Ik1haW4wMDJTT0FQIj4KLQkJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIiAvPgotCQk8L3dzZGw6cG9ydD4KLQk8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDA0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzgxMjQwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDA0LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJNYWluMDA0IgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLQkJCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0iTmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9Ik1haW4wMDQiPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9Ik5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iTWFpbjAwNFNPQVAiIHR5cGU9Ik1haW4wMDQiPgotCQk8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIKLQkJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTxzb2FwOm9wZXJhdGlvbgotCQkJCXNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi9OZXdPcGVyYXRpb24iIC8+Ci0JCQk8d3NkbDppbnB1dD4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dD4KLQkJCQk8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgLz4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JPHdzZGw6c2VydmljZSBuYW1lPSJNYWluMDA0Ij4KLQkJPHdzZGw6cG9ydCBiaW5kaW5nPSJNYWluMDA0U09BUCIgbmFtZT0iTWFpbjAwNFNPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML3htbG5zQ2xlYW51cC90ZXN0L01haW4wMDUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDA1LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2M2EyODUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML3htbG5zQ2xlYW51cC90ZXN0L01haW4wMDUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLSAgICB4bWxuczp0bnMwMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDEvIgotICAgIHhtbG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4tTlVMTC8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iTWFpbjAwNSIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JCSAgICB4bWxuczp0bnMwMj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDIvIgotCQkJeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2Q6YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2Q6YXBwaW5mbz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0bnMwMTp0ZXN0RWxlbWVudCAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2Q6YXBwaW5mbz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHNkOmFubm90YXRpb24+Ci0JCQkJCQk8L3hzZDplbGVtZW50PgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluMDAyIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgLz4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iTWFpbjAwMlNPQVAiIHR5cGU9InRuczpNYWluMDAyIj4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0JCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vTmV3T3BlcmF0aW9uIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iTWFpbjAwMiI+Ci0JCTx3c2RsOnBvcnQgYmluZGluZz0idG5zOk1haW4wMDJTT0FQIiBuYW1lPSJNYWluMDAyU09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML3htbG5zQ2xlYW51cC90ZXN0L01haW4wMDYud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgzOTgwNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwNi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9Ik1haW4wMDYiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIj4KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vIgotCQkJeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluMDA2Ij4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgLz4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iTWFpbjAwNlNPQVAiIHR5cGU9InRuczpNYWluMDA2Ij4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dD4KLQkJCTwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dD4KLQkJCTwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JPHdzZGw6c2VydmljZSBuYW1lPSJNYWluMDA2Ij4KLQk8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDA3LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1dTREwveG1sbnNDbGVhbnVwL3Rlc3QvTWFpbjAwNy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzEyMWI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDA3LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iTWFpbjAwNyIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iCi0JCQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAxLyI+Ci0gICAgICAgICAgICA8eHNkOmVsZW1lbnQgbmFtZT0ic3MiIHR5cGU9InhzZDpieXRlIj48L3hzZDplbGVtZW50PgotICAgICAgICAgICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJjdCI+Ci0gICAgICAgICAgICAgICA8eHNkOnNlcXVlbmNlPgotICAgICAgICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImFhYSI+PC94c2Q6ZWxlbWVudD4KLSAgICAgICAgICAgICAgIDwveHNkOnNlcXVlbmNlPgotICAgICAgICAgICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0JCTwveHNkOnNjaGVtYT4KLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMi8iCi0gICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAyLyIKLSAgICAgICAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJPC94c2Q6c2NoZW1hPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAzLyIKLSAgICAgICAgICB4bWxucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9VbnVzZWRBQUEvIgotICAgICAgICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQk8L3hzZDpzY2hlbWE+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDQvIgotICAgICAgICAgIHhtbG5zOnVudXNlZDAxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1VudXNlZC8iCi0gICAgICAgICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JCTwveHNkOnNjaGVtYT4KLQkJCi0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDUvIgotICAgICAgICAgIHhtbG5zOnVzZWQwMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDEvIgotICAgICAgICAgIHhtbG5zOnVudXNlZDAxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1VudXNlZC8iICAgICAgICAgIAotICAgICAgICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJhYWEiIHR5cGU9InhzZDpieXRlIj4KLSAgICAgICAgICAgICA8eHNkOmFubm90YXRpb24+Ci0gICAgICAgICAgICAgICAgPHhzZDphcHBpbmZvPgotICAgICAgICAgICAgICAgICAgIDx1c2VkMDE6ZHVtbXlFbGVtLz4KLSAgICAgICAgICAgICAgICA8L3hzZDphcHBpbmZvPgotICAgICAgICAgICAgIDwveHNkOmFubm90YXRpb24+Ci0gICAgICAgICAgPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCi0JPC93c2RsOnR5cGVzPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvbiIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iTWFpbjAwNyI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLQk8d3NkbDpiaW5kaW5nIG5hbWU9Ik1haW4wMDdTT0FQIiB0eXBlPSJ0bnM6TWFpbjAwNyI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IgotCQkJdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIC8+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHNvYXA6b3BlcmF0aW9uCi0JCQkJc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluL05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6YmluZGluZz4KLQk8d3NkbDpzZXJ2aWNlIG5hbWU9Ik1haW4wMDciPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpNYWluMDA3U09BUCIgbmFtZT0iTWFpbjAwN1NPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML3htbG5zQ2xlYW51cC90ZXN0L01haW4wMDgud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvV1NETC94bWxuc0NsZWFudXAvdGVzdC9NYWluMDA4LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhOWJjYTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9XU0RML3htbG5zQ2xlYW51cC90ZXN0L01haW4wMDgud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJNYWluMDA4IgotCXhtbG5zPSJodHRwOi8vVU5VU0VELU5VTEwiCi0JeG1sbnM6dXNlZDAxPSJodHRwOi8vWFNEVXNlZFdTRExVbnVzZWQiCi0JeG1sbnM6d3NkbFVzZWQ9Imh0dHA6Ly9XU0RMVXNlZCIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbi8iPgotICAgIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly9XU0RMVXNlZCIgbG9jYXRpb249Ii4vYWJjLndzZGwiPjwvd3NkbDppbXBvcnQ+Ci0gICAgPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluLyIKLQkJCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJpbiIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9Im91dCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDEvIj4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJzcyIgdHlwZT0ieHNkOmJ5dGUiPjwveHNkOmVsZW1lbnQ+Ci0gICAgICAgICAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9ImN0Ij4KLSAgICAgICAgICAgICAgIDx4c2Q6c2VxdWVuY2U+Ci0gICAgICAgICAgICAgICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iYWFhIj48L3hzZDplbGVtZW50PgotICAgICAgICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4KLQkJPC94c2Q6c2NoZW1hPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbjAyLyIKLSAgICAgICAgICB4bWxucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDIvIgotICAgICAgICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQk8L3hzZDpzY2hlbWE+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluMDMvIgotICAgICAgICAgIHhtbG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1VudXNlZEFBQS8iCi0gICAgICAgICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JCTwveHNkOnNjaGVtYT4KLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wNC8iCi0gICAgICAgICAgeG1sbnM6dW51c2VkMDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvVW51c2VkLyIKLSAgICAgICAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJPC94c2Q6c2NoZW1hPgotCQkKLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wNS8iCi0gICAgICAgICAgeG1sbnM6dXNlZDAxPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4wMS8iCi0gICAgICAgICAgeG1sbnM6dW51c2VkMDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvVW51c2VkLyIgICAgICAgICAgCi0gICAgICAgICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImFhYSIgdHlwZT0ieHNkOmJ5dGUiPgotICAgICAgICAgICAgIDx4c2Q6YW5ub3RhdGlvbj4KLSAgICAgICAgICAgICAgICA8eHNkOmFwcGluZm8+Ci0gICAgICAgICAgICAgICAgICAgPHVzZWQwMTpkdW1teUVsZW0vPgotICAgICAgICAgICAgICAgIDwveHNkOmFwcGluZm8+Ci0gICAgICAgICAgICAgPC94c2Q6YW5ub3RhdGlvbj4KLSAgICAgICAgICA8L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJNYWluMDA4Ij4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgLz4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIC8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iTWFpbjAwOFNPQVAiIHR5cGU9InRuczpNYWluMDA4Ij4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0JCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4vTmV3T3BlcmF0aW9uIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iTWFpbjAwOCI+Ci0JCTx3c2RsOnBvcnQgYmluZGluZz0idG5zOk1haW4wMDhTT0FQIiBuYW1lPSJNYWluMDA4U09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1hTRC9VbnVzZWQvSW1wb3J0MS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1hTRC9VbnVzZWQvSW1wb3J0MS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OWZjY2UuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0ltcG9ydDEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2Q6c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiAKLSAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0IiAKLSAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wQ1QxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyIgbWF4T2NjdXJzPSIyNSI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLSAgICA8eHNkOmdyb3VwIG5hbWU9IkltcEdyMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmdyb3VwPgotCi0gICAgPHhzZDphdHRyaWJ1dGUgbmFtZT0iSW1wQXR0cjEiIHR5cGU9InRuczpJbXBTVDEiPjwveHNkOmF0dHJpYnV0ZT4KLQotICAgIDx4c2Q6YXR0cmlidXRlR3JvdXAgbmFtZT0iSW1wQXR0ckdyMSI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0MSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmF0dHJpYnV0ZUdyb3VwPgotCi0gICAgPHhzZDplbGVtZW50IG5hbWU9IkltcEVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcFNUMSI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXBTVDIiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcENUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0ltcG9ydDIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0ltcG9ydDIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGJhNzcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbXBvcnQyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIgCi0gICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCI+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcDJDVDEiPgotICAgIAk8eHNkOnNlcXVlbmNlPgotICAgIAkJPHhzZDplbGVtZW50IG5hbWU9ImUxIiB0eXBlPSJ4c2Q6c3RyaW5nIiBtYXhPY2N1cnM9IjI1Ij48L3hzZDplbGVtZW50PgotICAgIAk8L3hzZDpzZXF1ZW5jZT4KLSAgICA8L3hzZDpjb21wbGV4VHlwZT4KLQotICAgIDx4c2Q6Z3JvdXAgbmFtZT0iSW1wMkdyMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmdyb3VwPgotCi0gICAgPHhzZDphdHRyaWJ1dGUgbmFtZT0iSW1wMkF0dHIxIiB0eXBlPSJ0bnM6SW1wMlNUMSI+PC94c2Q6YXR0cmlidXRlPgotCi0gICAgPHhzZDphdHRyaWJ1dGVHcm91cCBuYW1lPSJJbXAyQXR0ckdyMSI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0MSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmF0dHJpYnV0ZUdyb3VwPgotCi0gICAgPHhzZDplbGVtZW50IG5hbWU9IkltcDJFbGVtMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXAyU1QxIj4KLSAgICAJPHhzZDpyZXN0cmljdGlvbiBiYXNlPSJ4c2Q6c3RyaW5nIj48L3hzZDpyZXN0cmljdGlvbj4KLSAgICA8L3hzZDpzaW1wbGVUeXBlPgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcDJTVDIiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkltcDJDVDIiPgotICAgIAk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJhdHRyMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotPC94c2Q6c2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbXBvcnQzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbXBvcnQzLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMxNWQyMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1hTRC9VbnVzZWQvSW1wb3J0My54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHhzZDpzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydCIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiIHhtbG5zOlExPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDQiPgotCi0gICAgPHhzZDppbXBvcnQgc2NoZW1hTG9jYXRpb249IkltcG9ydDQueHNkIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NCI+PC94c2Q6aW1wb3J0PgotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wM0NUMSI+Ci0JCTx4c2Q6c2VxdWVuY2U+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNlcXVlbmNlPgotCTwveHNkOmNvbXBsZXhUeXBlPgotCi0JPHhzZDpncm91cCBuYW1lPSJJbXAzR3IxIj4KLQkJPHhzZDpzZXF1ZW5jZT4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2VxdWVuY2U+Ci0JPC94c2Q6Z3JvdXA+Ci0KLQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJbXAzQXR0cjEiIHR5cGU9InRuczpJbXAzU1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLQk8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkltcDNBdHRyR3IxIj4KLQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXQxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0JPC94c2Q6YXR0cmlidXRlR3JvdXA+Ci0KLQk8eHNkOmVsZW1lbnQgbmFtZT0iSW1wM0VsZW0xIiB0eXBlPSJRMTpJbXA0Q1QxIj48L3hzZDplbGVtZW50PgotCi0JPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcDNTVDEiPgotCQk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotCTwveHNkOnNpbXBsZVR5cGU+Ci0KLQk8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW1wM1NUMiI+Ci0JCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0JPC94c2Q6c2ltcGxlVHlwZT4KLQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wM0NUMiI+Ci0JCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0JPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0ltcG9ydDQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0ltcG9ydDQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDUxOTU4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbXBvcnQ0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDQiIAotICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQ0IiB4bWxuczpRMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiPgotCi0gICAgPHhzZDppbXBvcnQgc2NoZW1hTG9jYXRpb249IkltcG9ydDMueHNkIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij48L3hzZDppbXBvcnQ+Ci0gICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJJbXA0Q1QxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyIgbWF4T2NjdXJzPSIyNSI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLSAgICA8eHNkOmdyb3VwIG5hbWU9IkltcDRHcjEiPgotICAgIAk8eHNkOnNlcXVlbmNlPgotICAgIAkJPHhzZDplbGVtZW50IG5hbWU9ImUxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotICAgIAk8L3hzZDpzZXF1ZW5jZT4KLSAgICA8L3hzZDpncm91cD4KLQotICAgIDx4c2Q6YXR0cmlidXRlIG5hbWU9IkltcDRBdHRyMSIgdHlwZT0idG5zOkltcDRTVDEiPjwveHNkOmF0dHJpYnV0ZT4KLQotICAgIDx4c2Q6YXR0cmlidXRlR3JvdXAgbmFtZT0iSW1wNEF0dHJHcjEiPgotICAgIAk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJhdDEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmF0dHJpYnV0ZT4KLSAgICA8L3hzZDphdHRyaWJ1dGVHcm91cD4KLQotICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJJbXA0RWxlbTEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0KLSAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW1wNFNUMSI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbXA0U1QyIj4KLSAgICAJPHhzZDpyZXN0cmljdGlvbiBiYXNlPSJ4c2Q6c3RyaW5nIj48L3hzZDpyZXN0cmljdGlvbj4KLSAgICA8L3hzZDpzaW1wbGVUeXBlPgotCi0gICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJJbXA0Q1QyIj4KLSAgICAJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXR0cjEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmF0dHJpYnV0ZT4KLSAgICA8L3hzZDpjb21wbGV4VHlwZT4KLQotCi0gICAgPHhzZDplbGVtZW50IG5hbWU9IkltcDRFbGVtMiIgdHlwZT0iUTE6SW1wM0NUMiI+PC94c2Q6ZWxlbWVudD4KLTwveHNkOnNjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1hTRC9VbnVzZWQvSW1wb3J0NS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC51aS50ZXN0cy90ZXN0cmVzb3VyY2VzL1hTRC9VbnVzZWQvSW1wb3J0NS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMjBlODQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0ltcG9ydDUueHNkCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2Q6c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiAKLSAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDUiIHhtbG5zOlExPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDYiPgotCi0gICAgPHhzZDppbXBvcnQgc2NoZW1hTG9jYXRpb249IkltcG9ydDYueHNkIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0NiI+PC94c2Q6aW1wb3J0PgotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wNUNUMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotCi0gICAgPHhzZDpncm91cCBuYW1lPSJJbXA1R3IxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Z3JvdXA+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJbXA1QXR0cjEiIHR5cGU9InRuczpJbXA1U1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkltcDVBdHRyR3IxIj4KLSAgICAJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXQxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6YXR0cmlidXRlR3JvdXA+Ci0KLSAgICA8eHNkOmVsZW1lbnQgbmFtZT0iSW1wNUVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcDVTVDEiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW1wNVNUMiI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wNUNUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLQotICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJJbXA1RWxlbTIiIHR5cGU9IlExOkltcDZDVDEiPjwveHNkOmVsZW1lbnQ+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0ltcG9ydDYueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0ltcG9ydDYueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDE1ZWFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbXBvcnQ2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydDYiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQ2Ij4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wNkNUMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotCi0gICAgPHhzZDpncm91cCBuYW1lPSJJbXA2R3IxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Z3JvdXA+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJbXA2QXR0cjEiIHR5cGU9InRuczpJbXA2U1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkltcDZBdHRyR3IxIj4KLSAgICAJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXQxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6YXR0cmlidXRlR3JvdXA+Ci0KLSAgICA8eHNkOmVsZW1lbnQgbmFtZT0iSW1wNkVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkltcDZTVDEiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW1wNlNUMiI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW1wNkNUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLQotICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJJbXA2RWxlbTIiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGUxLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbmNsdWRlMS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZDk2ZDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGUxLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4iIAotICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluIj4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jMUNUMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotCi0gICAgPHhzZDpncm91cCBuYW1lPSJJbmMxR3IxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Z3JvdXA+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJbmMxQXR0cjEiIHR5cGU9InRuczpJbmMxU1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkluYzFBdHRyR3IxIj4KLSAgICAJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXQxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6YXR0cmlidXRlR3JvdXA+Ci0KLSAgICA8eHNkOmVsZW1lbnQgbmFtZT0iSW5jMUVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkluYzFTVDEiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW5jMVNUMiI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jMUNUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGUyLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbmNsdWRlMi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YWQ0YTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGUyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbiIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluIj4KLQotCTx4c2Q6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iSW5jbHVkZTMueHNkIj48L3hzZDppbmNsdWRlPgotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jMkNUMSI+Ci0JCTx4c2Q6c2VxdWVuY2U+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNlcXVlbmNlPgotCTwveHNkOmNvbXBsZXhUeXBlPgotCi0JPHhzZDpncm91cCBuYW1lPSJJbmMyR3IxIj4KLQkJPHhzZDpzZXF1ZW5jZT4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2VxdWVuY2U+Ci0JPC94c2Q6Z3JvdXA+Ci0KLQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJbmMyQXR0cjEiIHR5cGU9InRuczpJbmMyU1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLQk8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkluYzJBdHRyR3IxIj4KLQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXQxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0JPC94c2Q6YXR0cmlidXRlR3JvdXA+Ci0KLQk8eHNkOmVsZW1lbnQgbmFtZT0iSW5jMkVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0JPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkluYzJTVDEiPgotCQk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotCTwveHNkOnNpbXBsZVR5cGU+Ci0KLQk8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW5jMlNUMiI+Ci0JCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0JPC94c2Q6c2ltcGxlVHlwZT4KLQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jMkNUMiI+Ci0JCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0JPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGUzLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbmNsdWRlMy54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZTAyMDcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGUzLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTWFpbiIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluIj4KLQotCTx4c2Q6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iSW5jbHVkZTQueHNkIj48L3hzZDppbmNsdWRlPgotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jM0NUMSI+Ci0JCTx4c2Q6c2VxdWVuY2U+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNlcXVlbmNlPgotCTwveHNkOmNvbXBsZXhUeXBlPgotCi0JPHhzZDpncm91cCBuYW1lPSJJbmMzR3IxIj4KLQkJPHhzZDpzZXF1ZW5jZT4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2VxdWVuY2U+Ci0JPC94c2Q6Z3JvdXA+Ci0KLQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJbmMzQXR0cjEiIHR5cGU9InRuczpJbmMzU1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLQk8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkluYzNBdHRyR3IxIj4KLQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXQxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0JPC94c2Q6YXR0cmlidXRlR3JvdXA+Ci0KLQk8eHNkOmVsZW1lbnQgbmFtZT0iSW5jM0VsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0JPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkluYzNTVDEiPgotCQk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotCTwveHNkOnNpbXBsZVR5cGU+Ci0KLQk8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW5jM1NUMiI+Ci0JCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0JPC94c2Q6c2ltcGxlVHlwZT4KLQotCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jM0NUMiI+Ci0JCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0JPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGU0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbmNsdWRlNC54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NTliMTYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGU0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4iIAotICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluIj4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jNENUMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotCi0gICAgPHhzZDpncm91cCBuYW1lPSJJbmM0R3IxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Z3JvdXA+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJbmM0QXR0cjEiIHR5cGU9InRuczpJbmM0U1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkluYzRBdHRyR3IxIj4KLSAgICAJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXQxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6YXR0cmlidXRlR3JvdXA+Ci0KLSAgICA8eHNkOmVsZW1lbnQgbmFtZT0iSW5jNEVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkluYzRTVDEiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW5jNFNUMiI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jNENUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGU1LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbmNsdWRlNS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MmMzNjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGU1LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4iIAotICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluIj4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jNUNUMSI+Ci0gICAgCTx4c2Q6c2VxdWVuY2U+Ci0gICAgCQk8eHNkOmVsZW1lbnQgbmFtZT0iZTEiIHR5cGU9InhzZDpzdHJpbmciIG1heE9jY3Vycz0iMjUiPjwveHNkOmVsZW1lbnQ+Ci0gICAgCTwveHNkOnNlcXVlbmNlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotCi0gICAgPHhzZDpncm91cCBuYW1lPSJJbmM1R3IxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Z3JvdXA+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJbmM1QXR0cjEiIHR5cGU9InRuczpJbmM1U1QxIj48L3hzZDphdHRyaWJ1dGU+Ci0KLSAgICA8eHNkOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IkluYzVBdHRyR3IxIj4KLSAgICAJPHhzZDphdHRyaWJ1dGUgbmFtZT0iYXQxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6YXR0cmlidXRlR3JvdXA+Ci0KLSAgICA8eHNkOmVsZW1lbnQgbmFtZT0iSW5jNUVsZW0xIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkluYzVTVDEiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0iSW5jNVNUMiI+Ci0gICAgCTx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+PC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgPC94c2Q6c2ltcGxlVHlwZT4KLQotICAgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW5jNUNUMiI+Ci0gICAgCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImF0dHIxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDphdHRyaWJ1dGU+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci08L3hzZDpzY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGU2LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnVpLnRlc3RzL3Rlc3RyZXNvdXJjZXMvWFNEL1VudXNlZC9JbmNsdWRlNi54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNmQ0ZjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudWkudGVzdHMvdGVzdHJlc291cmNlcy9YU0QvVW51c2VkL0luY2x1ZGU2LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01haW4iIAotICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NYWluIiB4bWxuczpRMT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnQiPgotCi0gICAgPHhzZDppbXBvcnQgc2NoZW1hTG9jYXRpb249IkltcG9ydDEueHNkIiBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Ij48L3hzZDppbXBvcnQ+Ci0gICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJJbmM2Q1QxIj4KLSAgICAJPHhzZDpzZXF1ZW5jZT4KLSAgICAJCTx4c2Q6ZWxlbWVudCBuYW1lPSJlMSIgdHlwZT0ieHNkOnN0cmluZyIgbWF4T2NjdXJzPSIyNSI+PC94c2Q6ZWxlbWVudD4KLSAgICAJPC94c2Q6c2VxdWVuY2U+Ci0gICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0KLSAgICA8eHNkOmdyb3VwIG5hbWU9IkluYzZHcjEiPgotICAgIAk8eHNkOnNlcXVlbmNlPgotICAgIAkJPHhzZDplbGVtZW50IG5hbWU9ImUxIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgotICAgIAk8L3hzZDpzZXF1ZW5jZT4KLSAgICA8L3hzZDpncm91cD4KLQotICAgIDx4c2Q6YXR0cmlidXRlIG5hbWU9IkluYzZBdHRyMSIgdHlwZT0idG5zOkluYzZTVDEiPjwveHNkOmF0dHJpYnV0ZT4KLQotICAgIDx4c2Q6YXR0cmlidXRlR3JvdXAgbmFtZT0iSW5jNkF0dHJHcjEiPgotICAgIAk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJhdDEiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmF0dHJpYnV0ZT4KLSAgICA8L3hzZDphdHRyaWJ1dGVHcm91cD4KLQotICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJJbmM2RWxlbTEiIHR5cGU9IlExOkltcENUMSI+PC94c2Q6ZWxlbWVudD4KLQotICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJJbmM2U1QxIj4KLSAgICAJPHhzZDpyZXN0cmljdGlvbiBiYXNlPSJ4c2Q6c3RyaW5nIj48L3hzZDpyZXN0cmljdGlvbj4KLSAgICA8L3hzZDpzaW1wbGVUeXBlPgotCi0gICAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9IkluYzZTVDIiPgotICAgIAk8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPjwveHNkOnJlc3RyaWN0aW9uPgotICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0KLSAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkluYzZDVDIiPgotICAgIAk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJhdHRyMSIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6YXR0cmlidXRlPgotICAgIDwveHNkOmNvbXBsZXhUeXBlPgotPC94c2Q6c2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLmNsYXNzcGF0aCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk5OTA4ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS40Ij4KLQkJPGFjY2Vzc3J1bGVzPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0ib3JnL2FwYWNoZS94ZXJjZXMvKioiLz4KLQkJPC9hY2Nlc3NydWxlcz4KLQk8L2NsYXNzcGF0aGVudHJ5PgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyI+Ci0JCTxhY2Nlc3NydWxlcz4KLQkJCTxhY2Nlc3NydWxlIGtpbmQ9ImFjY2Vzc2libGUiIHBhdHRlcm49Im9yZy9lY2xpcHNlL3dzdC94bWwvY29yZS9pbnRlcm5hbC92YWxpZGF0aW9uLyoqIi8+Ci0JCQk8YWNjZXNzcnVsZSBraW5kPSJhY2Nlc3NpYmxlIiBwYXR0ZXJuPSJvcmcvZWNsaXBzZS93c3QvdmFsaWRhdGlvbi9pbnRlcm5hbC9wcm92aXNpb25hbC9jb3JlL0lNZXNzYWdlIi8+Ci0JCQk8YWNjZXNzcnVsZSBraW5kPSJhY2Nlc3NpYmxlIiBwYXR0ZXJuPSJvcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcGx1Z2luL1dTUGx1Z2luIi8+Ci0JCQk8YWNjZXNzcnVsZSBraW5kPSJhY2Nlc3NpYmxlIiBwYXR0ZXJuPSJvcmcvZWNsaXBzZS93c3Qvd3MvaW50ZXJuYWwvcHJlZmVyZW5jZXMvUGVyc2lzdGVudFdTSUNvbnRleHQiLz4KLQkJPC9hY2Nlc3NydWxlcz4KLQk8L2NsYXNzcGF0aGVudHJ5PgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPgotPC9jbGFzc3BhdGg+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLy5jdnNpZ25vcmUgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZGZlZDEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1iaW4KLWJ1aWxkLnhtbAotdGVtcC5mb2xkZXIKLXdzZGx2YWxpZGF0ZXRlc3RzLmphcgotamF2YUNvbXBpbGVyLndzZGx2YWxpZGF0ZXRlc3RzLmphci5hcmdzCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLy5wcm9qZWN0IGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhNmRiNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0czwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDIwZTU2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jU3VuIEFwciAxNiAxNzo1NjowNSBFRFQgMjAwNgotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWVuY29kaW5nLzxwcm9qZWN0Pj1JU08tODg1OS0xCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTRmYTJmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotI1R1ZSBBcHIgMTggMTI6NDc6MjcgRURUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuMgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxvY2FsVmFyaWFibGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLnNvdXJjZUZpbGU9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYW5ub3RhdGlvblN1cGVySW50ZXJmYWNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmF1dG9ib3hpbmc9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZGVwcmVjYXRpb25JbkRlcHJlY2F0ZWRDb2RlPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRlcHJlY2F0aW9uV2hlbk92ZXJyaWRpbmdEZXByZWNhdGVkTWV0aG9kPWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmRpc2NvdXJhZ2VkUmVmZXJlbmNlPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW1wdHlTdGF0ZW1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmFsbHRocm91Z2hDYXNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5maWVsZEhpZGluZz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZmluYWxQYXJhbWV0ZXJCb3VuZD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZpbmFsbHlCbG9ja05vdENvbXBsZXRpbmdOb3JtYWxseT13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmZvcmJpZGRlblJlZmVyZW5jZT1lcnJvcgotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5oaWRkZW5DYXRjaEJsb2NrPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wYXRpYmxlTm9uSW5oZXJpdGVkSW50ZXJmYWNlTWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uaW5jb21wbGV0ZUVudW1Td2l0Y2g9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmluZGlyZWN0U3RhdGljQWNjZXNzPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5sb2NhbFZhcmlhYmxlSGlkaW5nPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5tZXRob2RXaXRoQ29uc3RydWN0b3JOYW1lPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubWlzc2luZ0RlcHJlY2F0ZWRBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nT3ZlcnJpZGVBbm5vdGF0aW9uPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5taXNzaW5nU2VyaWFsVmVyc2lvbj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vRWZmZWN0QXNzaWdubWVudD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLm5vSW1wbGljaXRTdHJpbmdDb252ZXJzaW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubm9uRXh0ZXJuYWxpemVkU3RyaW5nTGl0ZXJhbD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ubnVsbFJlZmVyZW5jZT1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ub3ZlcnJpZGluZ1BhY2thZ2VEZWZhdWx0TWV0aG9kPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucGFyYW1ldGVyQXNzaWdubWVudD1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0ucG9zc2libGVBY2NpZGVudGFsQm9vbGVhbkFzc2lnbm1lbnQ9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnJhd1R5cGVSZWZlcmVuY2U9aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnNwZWNpYWxQYXJhbWV0ZXJIaWRpbmdGaWVsZD1kaXNhYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zdGF0aWNBY2Nlc3NSZWNlaXZlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnN1cHByZXNzV2FybmluZ3M9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5zeW50aGV0aWNBY2Nlc3NFbXVsYXRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnR5cGVQYXJhbWV0ZXJIaWRpbmc9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bmNoZWNrZWRUeXBlT3BlcmF0aW9uPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5kb2N1bWVudGVkRW1wdHlCbG9jaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5oYW5kbGVkV2FybmluZ1Rva2VuPXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5uZWNlc3NhcnlFbHNlPWlnbm9yZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bm5lY2Vzc2FyeVR5cGVDaGVjaz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW5xdWFsaWZpZWRGaWVsZEFjY2Vzcz1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkRGVjbGFyZWRUaHJvd25FeGNlcHRpb249aWdub3JlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZERlY2xhcmVkVGhyb3duRXhjZXB0aW9uV2hlbk92ZXJyaWRpbmc9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkSW1wb3J0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkTGFiZWw9d2FybmluZwotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS51bnVzZWRMb2NhbD13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcj1pZ25vcmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUGFyYW1ldGVyV2hlbkltcGxlbWVudGluZ0Fic3RyYWN0PWRpc2FibGVkCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnVudXNlZFBhcmFtZXRlcldoZW5PdmVycmlkaW5nQ29uY3JldGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0udW51c2VkUHJpdmF0ZU1lbWJlcj13YXJuaW5nCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLnZhcmFyZ3NBcmd1bWVudE5lZWRDYXN0PXdhcm5pbmcKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1NmY1Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSNGcmkgRmViIDE3IDE0OjIzOjU5IEVTVCAyMDA2Ci1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotaW50ZXJuYWwuZGVmYXVsdC5jb21wbGlhbmNlPWRlZmF1bHQKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLnBkZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE2NmQ1YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5wZGUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0jU3VuIEFwciAxNiAxNzo1NTowMiBFRFQgMjAwNgotY29tcGlsZXJzLnAuYnVpbGQ9MAotY29tcGlsZXJzLnAuZGVwcmVjYXRlZD0wCi1jb21waWxlcnMucC5uby1yZXF1aXJlZC1hdHQ9MAotY29tcGlsZXJzLnAubm90LWV4dGVybmFsaXplZC1hdHQ9MAotY29tcGlsZXJzLnAudW5rbm93bi1hdHRyaWJ1dGU9MAotY29tcGlsZXJzLnAudW5rbm93bi1jbGFzcz0wCi1jb21waWxlcnMucC51bmtub3duLWVsZW1lbnQ9MAotY29tcGlsZXJzLnAudW5rbm93bi1yZXNvdXJjZT0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWV4LXBvaW50cz0wCi1jb21waWxlcnMucC51bnJlc29sdmVkLWltcG9ydD0wCi1jb21waWxlcnMudXNlLXByb2plY3Q9dHJ1ZQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDI5OTBjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiAlX1BMVUdJTl9OQU1FCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzCi1CdW5kbGUtVmVyc2lvbjogMS4wLjIwMwotQnVuZGxlLUNsYXNzUGF0aDogd3NkbHZhbGlkYXRldGVzdHMuamFyCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLmludGVybmFsLldTRExWYWxpZGF0b3JUZXN0c1BsdWdpbgotQnVuZGxlLVZlbmRvcjogJV9QUk9WSURFUl9OQU1FCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS51aSwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUsCi0gb3JnLmp1bml0O2J1bmRsZS12ZXJzaW9uPSJbMy44LjAsNC4wLjApIiwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcywKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLAotIG9yZy5lY2xpcHNlLndzdC53cywKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZSwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYsCi0gb3JnLmFwYWNoZS5hbnQsCi0gamF2YXgud3NkbDtidW5kbGUtdmVyc2lvbj0iWzEuNS4wLDEuNi4wKSIsCi0gb3JnLmFwYWNoZS54ZXJjZXMsCi0gb3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24sCi0gb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLAotIG9yZy5lY2xpcHNlLndzdC5jb21tb24udXJpcmVzb2x2ZXIKLUVjbGlwc2UtTGF6eVN0YXJ0OiB0cnVlCi1CdW5kbGUtQWN0aXZhdGlvblBvbGljeTogbGF6eQotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwucmVzb2x2ZXI7eC1pbnRlcm5hbDo9dHJ1ZSwKLSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLmFudDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZDt4LWludGVybmFsOj10cnVlLAotIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sO3gtaW50ZXJuYWw6PXRydWUsCi0gb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy5pbnRlcm5hbDt4LWludGVybmFsOj10cnVlCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjQKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvYWJvdXQuaHRtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvYnVpbGQucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM5YTY4OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotc291cmNlLndzZGx2YWxpZGF0ZXRlc3RzLmphciA9IHNyYy8KLW91dHB1dC53c2RsdmFsaWRhdGV0ZXN0cy5qYXIgPSBiaW4vCi1iaW4uaW5jbHVkZXMgPSB3c2RsdmFsaWRhdGV0ZXN0cy5qYXIsXAotICAgICAgICAgICAgICAgdGVzdHJlc291cmNlcy8sXAotICAgICAgICAgICAgICAgdGVzdC54bWwsXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMKLXNyYy5pbmNsdWRlcyA9IGJ1aWxkLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvcGx1Z2luLnByb3BlcnRpZXMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjc4ZTA1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIS0tIHByb3BlcnRpZXMgZmlsZSBmb3Igb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0Ci1fUExVR0lOX05BTUUgICAgICAgPSBXU0RMIFZhbGlkYXRvciBUZXN0cyBQbHVnLWluCi1fUFJPVklERVJfTkFNRSAgICAgPSBFY2xpcHNlLm9yZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9WYWxpZGF0b3JUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvVmFsaWRhdG9yVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Nzg0ODZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9WYWxpZGF0b3JUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2U7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmFwYWNoZS54ZXJjZXMudXRpbC5YTUxHcmFtbWFyUG9vbEltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvbk1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5WYWxpZGF0aW9uSW5mb0ltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5WYWxpZGF0aW9uTWVzc2FnZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51dGlsLk1lc3NhZ2VHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy5pbnRlcm5hbC5XU0RMVmFsaWRhdG9yVGVzdHNQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5OZXN0ZWRWYWxpZGF0b3JDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuVmFsaWRhdGlvbkluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5WYWxpZGF0aW9uTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLmNvcmUuaW50ZXJuYWwudmFsaWRhdGlvbi5jb3JlLlZhbGlkYXRpb25SZXBvcnQ7Ci0KLS8qKgotICogVGVzdCB0aGUgV1NETCB2YWxpZGF0aW9uIGZyYW1ld29yayBWYWxpZGF0b3IuCi0gKi8KLXB1YmxpYyBjbGFzcyBWYWxpZGF0b3JUZXN0IGV4dGVuZHMgVGVzdENhc2UgCi17Ci0gIFZhbGlkYXRvcldyYXBwZXIgdmFsaWRhdG9yID0gbmV3IFZhbGlkYXRvcldyYXBwZXIoKTsKLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYSB0ZXN0cyBzdWl0ZSBmcm9tIHRoaXMgdGVzdCBjbGFzcy4KLSAgICogCi0gICAqIEByZXR1cm4gQSB0ZXN0IHN1aXRlIGNvbnRhaW5pbmcgdGhpcyB0ZXN0IGNsYXNzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKFZhbGlkYXRvclRlc3QuY2xhc3MpOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCB0aGUgdmFsaWRhdGUgbWV0aG9kLiBUZXN0cyB0byBiZSBwZXJmb3JtZWQ6PGJyLz4KLSAgICogMS4gVGVzdCB0aGF0IHZhbGlkYXRpbmcgYSB2YWxpZCBmaWxlIGZyb20gYSBVUkkgb3IgYW4gaW5wdXQgc3RyZWFtIHByb2R1Y2VzIHRoZSBzYW1lIHJlc3VsdC48YnIvPgotICAgKiAyLiBUZXN0IHRoYXQgdmFsaWRhdGluZyBhbiBpbnZhbGlkIGZpbGUgZnJvbSBhIFVSSSBvciBhbiBpbnB1dCBzdHJlYW0gcHJvZHVjZXMgdGhlIHNhbWUgcmVzdWx0LgotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFZhbGlkYXRlKCkKLSAgewotCXRyeQotCXsKLQkgIC8vIFRlc3QgdGhhdCB2YWxpZGF0aW5nIGEgdmFsaWQgZmlsZSBmcm9tIGEgVVJJIGFuZCBhbiBpbnB1dCBzdHJlYW0gcHJvZHVjZXMgdGhlIHNhbWUgcmVzdWx0LgotCSAgTmVzdGVkVmFsaWRhdG9yQ29udGV4dCBjb250ZXh0ID0gbmV3IE5lc3RlZFZhbGlkYXRvckNvbnRleHQoKTsKLQkgIHZhbGlkYXRvci5zZXR1cFZhbGlkYXRpb24oY29udGV4dCk7Ci0JICBTdHJpbmcgUExVR0lOX0FCU09MVVRFX1BBVEggPSBXU0RMVmFsaWRhdG9yVGVzdHNQbHVnaW4uZ2V0SW5zdGFsbFVSTCgpOwotCSAgU3RyaW5nIHVyaSA9ICJmaWxlOi8vLyIgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArICJ0ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRGFzaC1JblBhdGgvRGFzaEluUGF0aFZhbGlkLndzZGwiOwotCSAgVmFsaWRhdGlvblJlcG9ydCByZXBvcnQxID0gdmFsaWRhdG9yLnZhbGlkYXRlKHVyaSwgbnVsbCwgY29udGV4dCk7Ci0JICB2YWxpZGF0b3IudGVhcmRvd25WYWxpZGF0aW9uKGNvbnRleHQpOwotCSAgdmFsaWRhdG9yLnNldHVwVmFsaWRhdGlvbihjb250ZXh0KTsKLQkgIFZhbGlkYXRpb25SZXBvcnQgcmVwb3J0MiA9IG51bGw7Ci0JICBJbnB1dFN0cmVhbSBpcyA9IG51bGw7Ci0JICB0cnkKLQkgIHsKLQkgICAgaXMgPSBuZXcgVVJMKHVyaSkub3BlblN0cmVhbSgpOwotCSAgICByZXBvcnQyID0gdmFsaWRhdG9yLnZhbGlkYXRlKHVyaSwgaXMsIGNvbnRleHQpOwotCSAgfQotCSAgY2F0Y2goRXhjZXB0aW9uIGUpCi0JICB7Ci0JCWZhaWwoIkEgcHJvYmxlbSBvY2N1cnJlZCB3aGlsZSB2YWxpZGF0aW5nIGEgdmFsaWQgZmlsZSB3aXRoIGFuIGlucHV0c3RyZWFtOiAiICsgZSk7Ci0JICB9Ci0JICBmaW5hbGx5Ci0JICB7Ci0JCWlmKGlzICE9IG51bGwpCi0JCXsKLQkJICB0cnkKLQkJICB7Ci0JCSAgICBpcy5jbG9zZSgpOwotCQkgIH0KLQkJICBjYXRjaChJT0V4Y2VwdGlvbiBlKQotCQkgIHsKLQkJCS8vIERvIG5vdGhpbmcuCi0JCSAgfQotCQl9Ci0JICB9Ci0JICB2YWxpZGF0b3IudGVhcmRvd25WYWxpZGF0aW9uKGNvbnRleHQpOwotCSAgYXNzZXJ0VHJ1ZSgiVmFsaWRhdGlvbiB1c2luZyBhIFVSSSBkaWQgbm90IHByb2R1Y3QgYSB2YWxpZCB2YWxpZGF0aW9uIHJlc3VsdC4iLCByZXBvcnQxLmlzVmFsaWQoKSk7Ci0JICBhc3NlcnRFcXVhbHMoIlZhbGlkYXRpb24gdXNpbmcgVVJJIGFuZCB1c2luZyBpbnB1dHN0cmVhbSBvZiB0aGUgc2FtZSBmaWxlIHByb2R1Y2VzIGRpZmZlcmVudCBudW1iZXJzIG9mIGVycm9ycy4iLCByZXBvcnQxLmdldFZhbGlkYXRpb25NZXNzYWdlcygpLmxlbmd0aCwgcmVwb3J0Mi5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKS5sZW5ndGgpOwotCSAgCi0gICAgICAvLyBUZXN0IHRoYXQgdmFsaWRhdGluZyBhbiBpbnZhbGlkIGZpbGUgZnJvbSBhIFVSSSBhbmQgYW4gaW5wdXQgc3RyZWFtIHByb2R1Y2VzIHRoZSBzYW1lIHJlc3VsdC4KLQkgIE5lc3RlZFZhbGlkYXRvckNvbnRleHQgY29udGV4dDIgPSBuZXcgTmVzdGVkVmFsaWRhdG9yQ29udGV4dCgpOwotCSAgdmFsaWRhdG9yLnNldHVwVmFsaWRhdGlvbihjb250ZXh0Mik7Ci0JICB1cmkgPSAiZmlsZTovLy8iICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyAidGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0Rhc2gtSW5QYXRoL0Rhc2hJblBhdGhJbnZhbGlkLndzZGwiOwotCSAgcmVwb3J0MSA9IHZhbGlkYXRvci52YWxpZGF0ZSh1cmksIG51bGwsIGNvbnRleHQyKTsKLQkgIHZhbGlkYXRvci50ZWFyZG93blZhbGlkYXRpb24oY29udGV4dDIpOwotCSAgdmFsaWRhdG9yLnNldHVwVmFsaWRhdGlvbihjb250ZXh0Mik7Ci0JICByZXBvcnQyID0gbnVsbDsKLQkgIGlzID0gbnVsbDsKLQkgIHRyeQotCSAgewotCSAgICBpcyA9IG5ldyBVUkwodXJpKS5vcGVuU3RyZWFtKCk7Ci0JICAgIHJlcG9ydDIgPSB2YWxpZGF0b3IudmFsaWRhdGUodXJpLCBpcywgY29udGV4dDIpOwotCSAgfQotCSAgY2F0Y2goRXhjZXB0aW9uIGUpCi0JICB7Ci0JCWZhaWwoIkEgcHJvYmxlbSBvY2N1cnJlZCB3aGlsZSB2YWxpZGF0aW5nIGFuIGludmFsaWQgZmlsZSB3aXRoIGFuIGlucHV0c3RyZWFtOiAiICsgZSk7Ci0JICB9Ci0JICBmaW5hbGx5Ci0JICB7Ci0JCWlmKGlzICE9IG51bGwpCi0JCXsKLQkJICB0cnkKLQkJICB7Ci0JCSAgICBpcy5jbG9zZSgpOwotCQkgIH0KLQkJICBjYXRjaChJT0V4Y2VwdGlvbiBlKQotCQkgIHsKLQkJCS8vIERvIG5vdGhpbmcuCi0JCSAgfQotCQl9Ci0JICB9Ci0JICB2YWxpZGF0b3IudGVhcmRvd25WYWxpZGF0aW9uKGNvbnRleHQyKTsKLQkgIGFzc2VydEZhbHNlKCJWYWxpZGF0aW9uIHVzaW5nIGEgVVJJIGRpZCBub3QgcHJvZHVjdCBhbiBpbnZhbGlkIHZhbGlkYXRpb24gcmVzdWx0LiIsIHJlcG9ydDEuaXNWYWxpZCgpKTsKLQkgIGFzc2VydEVxdWFscygiVmFsaWRhdGlvbiB1c2luZyBVUkkgYW5kIHVzaW5nIGlucHV0c3RyZWFtIG9mIHRoZSBzYW1lIGZpbGUgcHJvZHVjZXMgZGlmZmVyZW50IG51bWJlcnMgb2YgZXJyb3JzLiIsIHJlcG9ydDEuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKCkubGVuZ3RoLCByZXBvcnQyLmdldFZhbGlkYXRpb25NZXNzYWdlcygpLmxlbmd0aCk7Ci0JfQotCWNhdGNoKEV4Y2VwdGlvbiBlKQotCXsKLQkgIGZhaWwoIlVuYWJsZSB0byBsb2NhdGUgcGx1Zy1pbiBsb2NhdGlvbjogIiArIGUpOwotCX0KLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgdGhlIHNldHVwVmFsaWRhdGlvbiBtZXRob2QuCi0gICAqIDEuIFRlc3QgdGhhdCBhZnRlciBydW4gZm9yIGEgY29udGV4dCBYTUwgYW5kIFhTRCBncmFtbWFyIHBvb2xzIGV4aXN0IGZvciB0aGUgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RTZXR1cFZhbGlkYXRpb24oKQotICB7Ci0JdmFsaWRhdG9yLmdldFhNTEdyYW1tYXJQb29sc01hcCgpLmNsZWFyKCk7Ci0JdmFsaWRhdG9yLmdldFhTREdyYW1tYXJQb29sc01hcCgpLmNsZWFyKCk7Ci0JCi0JTmVzdGVkVmFsaWRhdG9yQ29udGV4dCBjb250ZXh0ID0gbmV3IE5lc3RlZFZhbGlkYXRvckNvbnRleHQoKTsKLQlhc3NlcnROdWxsKCJBbiBYTUwgZ3JhbW1hciBwb29sIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgY29udGV4dC4iLCB2YWxpZGF0b3IuZ2V0WE1MR3JhbW1hclBvb2xGb3JDb250ZXh0KGNvbnRleHQpKTsKLQlhc3NlcnROdWxsKCJBbiBYU0QgZ3JhbW1hciBwb29sIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgY29udGV4dC4iLCB2YWxpZGF0b3IuZ2V0WFNER3JhbW1hclBvb2xGb3JDb250ZXh0KGNvbnRleHQpKTsKLQkKLQl2YWxpZGF0b3Iuc2V0dXBWYWxpZGF0aW9uKGNvbnRleHQpOwotCQotCWFzc2VydE5vdE51bGwoIkFuIFhNTCBncmFtbWFyIHBvb2wgZG9lcyBub3QgZXhpc3QgYWZ0ZXIgdGhlIHNldHVwVmFsaWRhdGlvbiBtZXRob2QgaXMgcnVuLiIsIHZhbGlkYXRvci5nZXRYTUxHcmFtbWFyUG9vbEZvckNvbnRleHQoY29udGV4dCkpOwotCWFzc2VydE5vdE51bGwoIkFuIFhTRCBncmFtbWFyIHBvb2wgZG9lcyBub3QgZXhpc3QgYWZ0ZXIgdGhlIHNldHVwVmFsaWRhdGlvbiBtZXRob2QgaXMgcnVuLiIsIHZhbGlkYXRvci5nZXRYU0RHcmFtbWFyUG9vbEZvckNvbnRleHQoY29udGV4dCkpOwotCQotCXZhbGlkYXRvci5nZXRYTUxHcmFtbWFyUG9vbHNNYXAoKS5jbGVhcigpOwotCXZhbGlkYXRvci5nZXRYU0RHcmFtbWFyUG9vbHNNYXAoKS5jbGVhcigpOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCB0aGUgdGVhcmRvd25WYWxpZGF0aW9uIG1ldGhvZC4KLSAgICogMS4gVGVzdCB0aGF0IGFmdGVyIHJ1biBmb3IgYSBjb250ZXh0IFhNTCBhbmQgWFNEIGdyYW1tYXIgcG9vbHMgZG8gbm90IGV4aXN0IGZvciB0aGUgY29udGV4dC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RUZWFyZG93blZhbGlkYXRpb24oKQotICB7Ci0JdmFsaWRhdG9yLmdldFhNTEdyYW1tYXJQb29sc01hcCgpLmNsZWFyKCk7Ci0JdmFsaWRhdG9yLmdldFhTREdyYW1tYXJQb29sc01hcCgpLmNsZWFyKCk7Ci0JCi0JTmVzdGVkVmFsaWRhdG9yQ29udGV4dCBjb250ZXh0ID0gbmV3IE5lc3RlZFZhbGlkYXRvckNvbnRleHQoKTsKLQl2YWxpZGF0b3IuZ2V0WE1MR3JhbW1hclBvb2xzTWFwKCkucHV0KGNvbnRleHQsIG5ldyBYTUxHcmFtbWFyUG9vbEltcGwoKSk7Ci0JdmFsaWRhdG9yLmdldFhTREdyYW1tYXJQb29sc01hcCgpLnB1dChjb250ZXh0LCBuZXcgSW5saW5lU2NoZW1hTW9kZWxHcmFtbWFyUG9vbEltcGwoKSk7Ci0JCi0JdmFsaWRhdG9yLnRlYXJkb3duVmFsaWRhdGlvbihjb250ZXh0KTsKLQkKLQlhc3NlcnROdWxsKCJBbiBYTUwgZ3JhbW1hciBwb29sIGV4aXN0cyBhZnRlciB0aGUgdGVhcmRvd25WYWxpZGF0aW9uIG1ldGhvZCBpcyBydW4uIiwgdmFsaWRhdG9yLmdldFhNTEdyYW1tYXJQb29sRm9yQ29udGV4dChjb250ZXh0KSk7Ci0JYXNzZXJ0TnVsbCgiQW4gWFNEIGdyYW1tYXIgcG9vbCBleGlzdHMgYWZ0ZXIgdGhlIHRlYXJkb3duVmFsaWRhdGlvbiBtZXRob2QgaXMgcnVuLiIsIHZhbGlkYXRvci5nZXRYU0RHcmFtbWFyUG9vbEZvckNvbnRleHQoY29udGV4dCkpOwotCQotCXZhbGlkYXRvci5nZXRYTUxHcmFtbWFyUG9vbHNNYXAoKS5jbGVhcigpOwotCXZhbGlkYXRvci5nZXRYU0RHcmFtbWFyUG9vbHNNYXAoKS5jbGVhcigpOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCBjb252ZXJ0aW5nIGEgbWVzc2FnZS4gVGhlIGNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgCi0gICAqIG5ldyByZXBvcnQuCi0gICAqIDEuIFRlc3QgdGhhdCBhIHJlZ3VsYXIgbWVzc2FnZSBpcyBhZGRlZCBhcyBpcy4KLSAgICogMi4gVGVzdCB0aGF0IGEgbmVzdGVkIG1lc3NhZ2UgaXMgYWRkZWQgYXMgYSBuZXN0ZWQgbWVzc2FnZS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RDb252ZXJ0TWVzc2FnZSgpCi0gIHsKLQkvLyAxLiBUZXN0IHRoYXQgYSByZWd1bGFyIG1lc3NhZ2UgaXMgYWRkZWQgYXMgaXMuCi0JVmFsaWRhdGlvbk1lc3NhZ2VJbXBsIG1lc3NhZ2UgPSBuZXcgVmFsaWRhdGlvbk1lc3NhZ2VJbXBsKCJtZXNzYWdlIiwgMSwgMiwgSVZhbGlkYXRpb25NZXNzYWdlLlNFVl9FUlJPUiwgImZpbGU6L3NvbWV1cmkiKTsKLQlWYWxpZGF0aW9uSW5mbyByZXBvcnQgPSBuZXcgVmFsaWRhdGlvbkluZm8oImZpbGU6L3NvbWV1cmkiKTsKLQl2YWxpZGF0b3IuY29udmVydE1lc3NhZ2UobWVzc2FnZSwgcmVwb3J0KTsKLQlhc3NlcnRFcXVhbHMoIlRoZSByZXBvcnQgZG9lcyBub3QgaGF2ZSAxIG1lc3NhZ2UuIiwgMSwgcmVwb3J0LmdldFZhbGlkYXRpb25NZXNzYWdlcygpLmxlbmd0aCk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSBzdHJpbmcgaXMgaW5jb3JyZWN0LiIsICJtZXNzYWdlIiwgcmVwb3J0LmdldFZhbGlkYXRpb25NZXNzYWdlcygpWzBdLmdldE1lc3NhZ2UoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSBsaW5lIG51bWJlciBpcyBpbmNvcnJlY3QuIiwgMSwgcmVwb3J0LmdldFZhbGlkYXRpb25NZXNzYWdlcygpWzBdLmdldExpbmVOdW1iZXIoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSBjb2x1bW4gbnVtYmVyIGlzIGluY29ycmVjdC4iLCAyLCByZXBvcnQuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKClbMF0uZ2V0Q29sdW1uTnVtYmVyKCkpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2Ugc2V2ZXJpdHkgaXMgaW5jb3JyZWN0LiIsIFZhbGlkYXRpb25NZXNzYWdlLlNFVl9OT1JNQUwsIHJlcG9ydC5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKVswXS5nZXRTZXZlcml0eSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBtZXNzYWdlIFVSSSBpcyBpbmNvcnJlY3QuIiwgImZpbGU6L3NvbWV1cmkiLCByZXBvcnQuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKClbMF0uZ2V0VXJpKCkpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2UgaGFzIGFuIGluY29ycmVjdGx5IHJlZ2lzdHJlZCBuZXN0ZWQgbWVzc2FnZS4iLCAwLCByZXBvcnQuZ2V0TmVzdGVkTWVzc2FnZXMoKS5zaXplKCkpOwotCQotCS8vIDIuIFRlc3QgdGhhdCBhIG5lc3RlZCBtZXNzYWdlIGlzIGFkZGVkIGFzIGEgbmVzdGVkIG1lc3NhZ2UuCi0JVmFsaWRhdGlvbk1lc3NhZ2VJbXBsIG1lc3NhZ2UyID0gbmV3IFZhbGlkYXRpb25NZXNzYWdlSW1wbCgibWVzc2FnZSIsIDEsIDIsIElWYWxpZGF0aW9uTWVzc2FnZS5TRVZfRVJST1IsICJmaWxlOi9zb21ldXJpMiIpOwotCVZhbGlkYXRpb25JbmZvIHJlcG9ydDIgPSBuZXcgVmFsaWRhdGlvbkluZm8oImZpbGU6L3NvbWV1cmkiKTsKLQl2YWxpZGF0b3IuY29udmVydE1lc3NhZ2UobWVzc2FnZTIsIHJlcG9ydDIpOwotCWFzc2VydEVxdWFscygiVGhlIHJlcG9ydCB3aXRoIHRoZSBuZXN0ZWQgbWVzc2FnZSBkb2VzIG5vdCBoYXZlIDEgbWVzc2FnZS4iLCAxLCByZXBvcnQyLmdldFZhbGlkYXRpb25NZXNzYWdlcygpLmxlbmd0aCk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgY29udGFpbmVyIG1lc3NhZ2UgVVJJIGlzIGluY29ycmVjdC4iLCAiZmlsZTovc29tZXVyaTIiLCByZXBvcnQyLmdldFZhbGlkYXRpb25NZXNzYWdlcygpWzBdLmdldFVyaSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBjb250YWluZXIgbWVzc2FnZSBkb2VzIG5vdCBoYXZlIDEgbmVzdGVkIG1lc3NhZ2UuIiwgMSwgcmVwb3J0Mi5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKVswXS5nZXROZXN0ZWRNZXNzYWdlcygpLnNpemUoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbmVzdGVkIG1lc3NhZ2UgVVJJIGlzIGluY29ycmVjdC4iLCAiZmlsZTovc29tZXVyaTIiLCAoKFZhbGlkYXRpb25NZXNzYWdlKXJlcG9ydDIuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKClbMF0uZ2V0TmVzdGVkTWVzc2FnZXMoKS5nZXQoMCkpLmdldFVyaSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBuZXN0ZWQgbWVzc2FnZSBzdHJpbmcgaXMgaW5jb3JyZWN0LiIsICJtZXNzYWdlIiwgKChWYWxpZGF0aW9uTWVzc2FnZSlyZXBvcnQyLmdldFZhbGlkYXRpb25NZXNzYWdlcygpWzBdLmdldE5lc3RlZE1lc3NhZ2VzKCkuZ2V0KDApKS5nZXRNZXNzYWdlKCkpOwotCWFzc2VydEVxdWFscygiVGhlIG5lc3RlZCBtZXNzYWdlIGxpbmUgbnVtYmVyIGlzIGluY29ycmVjdC4iLCAxLCAoKFZhbGlkYXRpb25NZXNzYWdlKXJlcG9ydDIuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKClbMF0uZ2V0TmVzdGVkTWVzc2FnZXMoKS5nZXQoMCkpLmdldExpbmVOdW1iZXIoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbmVzdGVkIG1lc3NhZ2UgY29sdW1uIG51bWJlciBpcyBpbmNvcnJlY3QuIiwgMiwgKChWYWxpZGF0aW9uTWVzc2FnZSlyZXBvcnQyLmdldFZhbGlkYXRpb25NZXNzYWdlcygpWzBdLmdldE5lc3RlZE1lc3NhZ2VzKCkuZ2V0KDApKS5nZXRDb2x1bW5OdW1iZXIoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbmVzdGVkIG1lc3NhZ2Ugc2V2ZXJpdHkgaXMgaW5jb3JyZWN0LiIsIFZhbGlkYXRpb25NZXNzYWdlLlNFVl9OT1JNQUwsICgoVmFsaWRhdGlvbk1lc3NhZ2UpcmVwb3J0Mi5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKVswXS5nZXROZXN0ZWRNZXNzYWdlcygpLmdldCgwKSkuZ2V0U2V2ZXJpdHkoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSBkb2VzIG5vdCBoYXZlIGEgbmVzdGVkIG1lc3NhZ2UuIiwgMSwgcmVwb3J0Mi5nZXROZXN0ZWRNZXNzYWdlcygpLnNpemUoKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IGNvbnZlcnRpbmcgYSBXU0RMIHZhbGlkYXRpb24gcmVwb3J0IHRvIGEgWE1MIHZhbGlkYXRpb24gcmVwb3J0LgotICAgKiBUaGUgY29udGVudHMgb2YgdGhlIG1lc3NhZ2VzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV3IHJlcG9ydC4KLSAgICogMS4gVGVzdCB0aGF0IGEgcmVndWxhciBtZXNzYWdlIGlzIGFkZGVkIGFzIGlzLgotICAgKiAyLiBUZXN0IHRoYXQgYSBuZXN0ZWQgbWVzc2FnZSBpcyBhZGRlZCBhcyBhIG5lc3RlZCBtZXNzYWdlLgotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdENvbnZlcnRSZXBvcnRUb1hNTFJlcG9ydCgpCi0gIHsKLQkvLyAxLiBUZXN0IHRoYXQgYSByZWd1bGFyIG1lc3NhZ2UgaXMgYWRkZWQgYXMgaXMuCi0JVmFsaWRhdGlvbkluZm9JbXBsIHdzZGxyZXBvcnQgPSBuZXcgVmFsaWRhdGlvbkluZm9JbXBsKCJmaWxlOi9zb21ldXJpIiwgbmV3IE1lc3NhZ2VHZW5lcmF0b3IoUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKCJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2UudmFsaWRhdGV3c2RsIikpKTsKLQl3c2RscmVwb3J0LmFkZEVycm9yKCJtZXNzYWdlIiwgMSwgMiwgImZpbGU6L3NvbWV1cmkiKTsKLQlWYWxpZGF0aW9uUmVwb3J0IHJlcG9ydCA9IHZhbGlkYXRvci5jb252ZXJ0UmVwb3J0VG9YTUxSZXBvcnQod3NkbHJlcG9ydCk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgcmVwb3J0IGRvZXMgbm90IGhhdmUgMSBtZXNzYWdlLiIsIDEsIHJlcG9ydC5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKS5sZW5ndGgpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2Ugc3RyaW5nIGlzIGluY29ycmVjdC4iLCAibWVzc2FnZSIsIHJlcG9ydC5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKVswXS5nZXRNZXNzYWdlKCkpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2UgbGluZSBudW1iZXIgaXMgaW5jb3JyZWN0LiIsIDEsIHJlcG9ydC5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKVswXS5nZXRMaW5lTnVtYmVyKCkpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2UgY29sdW1uIG51bWJlciBpcyBpbmNvcnJlY3QuIiwgMiwgcmVwb3J0LmdldFZhbGlkYXRpb25NZXNzYWdlcygpWzBdLmdldENvbHVtbk51bWJlcigpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBtZXNzYWdlIHNldmVyaXR5IGlzIGluY29ycmVjdC4iLCBWYWxpZGF0aW9uTWVzc2FnZS5TRVZfTk9STUFMLCByZXBvcnQuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKClbMF0uZ2V0U2V2ZXJpdHkoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSBVUkkgaXMgaW5jb3JyZWN0LiIsICJmaWxlOi9zb21ldXJpIiwgcmVwb3J0LmdldFZhbGlkYXRpb25NZXNzYWdlcygpWzBdLmdldFVyaSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBtZXNzYWdlIGhhcyBhbiBpbmNvcnJlY3RseSByZWdpc3RyZWQgbmVzdGVkIG1lc3NhZ2UuIiwgMCwgcmVwb3J0LmdldE5lc3RlZE1lc3NhZ2VzKCkuc2l6ZSgpKTsKLQkKLQkvLyAyLiBUZXN0IHRoYXQgYSBuZXN0ZWQgbWVzc2FnZSBpcyBhZGRlZCBhcyBhIG5lc3RlZCBtZXNzYWdlLgotCVZhbGlkYXRpb25JbmZvSW1wbCB3c2RscmVwb3J0MiA9IG5ldyBWYWxpZGF0aW9uSW5mb0ltcGwoImZpbGU6L3NvbWV1cmkiLCBuZXcgTWVzc2FnZUdlbmVyYXRvcihSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoIm9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZWNsaXBzZS52YWxpZGF0ZXdzZGwiKSkpOwotCXdzZGxyZXBvcnQyLmFkZEVycm9yKCJtZXNzYWdlIiwgMSwgMiwgImZpbGU6L3NvbWV1cmkyIik7Ci0JVmFsaWRhdGlvblJlcG9ydCByZXBvcnQyID0gdmFsaWRhdG9yLmNvbnZlcnRSZXBvcnRUb1hNTFJlcG9ydCh3c2RscmVwb3J0Mik7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgcmVwb3J0IGRvZXMgbm90IGhhdmUgMSBtZXNzYWdlLiIsIDEsIHJlcG9ydDIuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKCkubGVuZ3RoKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBtZXNzYWdlIFVSSSBpcyBpbmNvcnJlY3QuIiwgImZpbGU6L3NvbWV1cmkyIiwgcmVwb3J0Mi5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKVswXS5nZXRVcmkoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSBkb2VzIG5vdCBoYXZlIDEgbmVzdGVkIG1lc3NhZ2UuIiwgMSwgcmVwb3J0Mi5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKVswXS5nZXROZXN0ZWRNZXNzYWdlcygpLnNpemUoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSBVUkkgaXMgaW5jb3JyZWN0LiIsICJmaWxlOi9zb21ldXJpMiIsICgoVmFsaWRhdGlvbk1lc3NhZ2UpcmVwb3J0Mi5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKVswXS5nZXROZXN0ZWRNZXNzYWdlcygpLmdldCgwKSkuZ2V0VXJpKCkpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2Ugc3RyaW5nIGlzIGluY29ycmVjdC4iLCAibWVzc2FnZSIsICgoVmFsaWRhdGlvbk1lc3NhZ2UpcmVwb3J0Mi5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKVswXS5nZXROZXN0ZWRNZXNzYWdlcygpLmdldCgwKSkuZ2V0TWVzc2FnZSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBtZXNzYWdlIGxpbmUgbnVtYmVyIGlzIGluY29ycmVjdC4iLCAxLCAoKFZhbGlkYXRpb25NZXNzYWdlKXJlcG9ydDIuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKClbMF0uZ2V0TmVzdGVkTWVzc2FnZXMoKS5nZXQoMCkpLmdldExpbmVOdW1iZXIoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSBjb2x1bW4gbnVtYmVyIGlzIGluY29ycmVjdC4iLCAyLCAoKFZhbGlkYXRpb25NZXNzYWdlKXJlcG9ydDIuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKClbMF0uZ2V0TmVzdGVkTWVzc2FnZXMoKS5nZXQoMCkpLmdldENvbHVtbk51bWJlcigpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBtZXNzYWdlIHNldmVyaXR5IGlzIGluY29ycmVjdC4iLCBWYWxpZGF0aW9uTWVzc2FnZS5TRVZfTk9STUFMLCAoKFZhbGlkYXRpb25NZXNzYWdlKXJlcG9ydDIuZ2V0VmFsaWRhdGlvbk1lc3NhZ2VzKClbMF0uZ2V0TmVzdGVkTWVzc2FnZXMoKS5nZXQoMCkpLmdldFNldmVyaXR5KCkpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2UgZG9lcyBub3QgaGF2ZSBhIG5lc3RlZCBtZXNzYWdlLiIsIDEsIHJlcG9ydDIuZ2V0TmVzdGVkTWVzc2FnZXMoKS5zaXplKCkpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9WYWxpZGF0b3JXcmFwcGVyLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvVmFsaWRhdG9yV3JhcHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyY2FkMzgyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9WYWxpZGF0b3JXcmFwcGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2U7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5YTUxHcmFtbWFyUG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QudmFsaWRhdGlvbi5pbnRlcm5hbC5wcm92aXNpb25hbC5jb3JlLklNZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25NZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25SZXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5OZXN0ZWRWYWxpZGF0b3JDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuVmFsaWRhdGlvbkluZm87Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uY29yZS5WYWxpZGF0aW9uTWVzc2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLmNvcmUuaW50ZXJuYWwudmFsaWRhdGlvbi5jb3JlLlZhbGlkYXRpb25SZXBvcnQ7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBleHRlbmRzIHZhbGlkYXRvciB0byBleHBvc2UgdGhlIHByb3RlY3RlZCBtZXRob2RzCi0gKiBmb3IgdGVzdGluZy4KLSAqLwotcHVibGljIGNsYXNzIFZhbGlkYXRvcldyYXBwZXIgZXh0ZW5kcyBWYWxpZGF0b3IgCi17Ci0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuZWNsaXBzZS53c3QueG1sLmNvcmUuaW50ZXJuYWwudmFsaWRhdGlvbi5lY2xpcHNlLlZhbGlkYXRvciNhZGRJbmZvVG9NZXNzYWdlKG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuVmFsaWRhdGlvbk1lc3NhZ2UsIG9yZy5lY2xpcHNlLndzdC52YWxpZGF0aW9uLmludGVybmFsLnByb3Zpc2lvbmFsLmNvcmUuSU1lc3NhZ2UpCi0gICAqLwotICBwdWJsaWMgdm9pZCBhZGRJbmZvVG9NZXNzYWdlKFZhbGlkYXRpb25NZXNzYWdlIHZhbGlkYXRpb25NZXNzYWdlLCBJTWVzc2FnZSBtZXNzYWdlKSAKLSAgewotCXN1cGVyLmFkZEluZm9Ub01lc3NhZ2UodmFsaWRhdGlvbk1lc3NhZ2UsIG1lc3NhZ2UpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LnhtbC5jb3JlLmludGVybmFsLnZhbGlkYXRpb24uZWNsaXBzZS5WYWxpZGF0b3Ijc2V0dXBWYWxpZGF0aW9uKG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuTmVzdGVkVmFsaWRhdG9yQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldHVwVmFsaWRhdGlvbihOZXN0ZWRWYWxpZGF0b3JDb250ZXh0IGNvbnRleHQpIAotICB7Ci0Jc3VwZXIuc2V0dXBWYWxpZGF0aW9uKGNvbnRleHQpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZWNsaXBzZS5WYWxpZGF0b3IjdGVhcmRvd25WYWxpZGF0aW9uKG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuTmVzdGVkVmFsaWRhdG9yQ29udGV4dCkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlYXJkb3duVmFsaWRhdGlvbihOZXN0ZWRWYWxpZGF0b3JDb250ZXh0IGNvbnRleHQpIAotICB7Ci0Jc3VwZXIudGVhcmRvd25WYWxpZGF0aW9uKGNvbnRleHQpOwotICB9Ci0KLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZWNsaXBzZS5WYWxpZGF0b3IjY29udmVydE1lc3NhZ2Uob3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvbk1lc3NhZ2UsIG9yZy5lY2xpcHNlLndzdC54bWwuY29yZS5pbnRlcm5hbC52YWxpZGF0aW9uLmNvcmUuVmFsaWRhdGlvbkluZm8pCi0gICAqLwotICBwdWJsaWMgdm9pZCBjb252ZXJ0TWVzc2FnZShJVmFsaWRhdGlvbk1lc3NhZ2UgbWVzc2FnZSwgVmFsaWRhdGlvbkluZm8gY29udmVydGVkUmVwb3J0KSAKLSAgewotCXN1cGVyLmNvbnZlcnRNZXNzYWdlKG1lc3NhZ2UsIGNvbnZlcnRlZFJlcG9ydCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5lY2xpcHNlLlZhbGlkYXRvciNjb252ZXJ0UmVwb3J0VG9YTUxSZXBvcnQob3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvblJlcG9ydCkKLSAgICovCi0gIHB1YmxpYyBWYWxpZGF0aW9uUmVwb3J0IGNvbnZlcnRSZXBvcnRUb1hNTFJlcG9ydChJVmFsaWRhdGlvblJlcG9ydCByZXBvcnQpIAotICB7Ci0JcmV0dXJuIHN1cGVyLmNvbnZlcnRSZXBvcnRUb1hNTFJlcG9ydChyZXBvcnQpOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBYTUwgZ3JhbW1hciBwb29sIGRlZmluZWQgZm9yIHRoZSBnaXZlbiBjb250ZXh0LgotICAgKiAKLSAgICogQHBhcmFtIGNvbnRleHQKLSAgICogCQlUaGUgY29udGV4dCB0byB1c2UgdG8gcmV0cmlldmUgdGhlIFhNTCBncmFtbWFyIHBvb2wuCi0gICAqIEByZXR1cm4KLSAgICogCQlUaGUgWE1MIGdyYW1tYXIgcG9vbCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRleHQgb3IgbnVsbCBpZiBub25lIGlzIGFzc29jaWF0ZWQuCi0gICAqLwotICBwdWJsaWMgWE1MR3JhbW1hclBvb2wgZ2V0WE1MR3JhbW1hclBvb2xGb3JDb250ZXh0KE5lc3RlZFZhbGlkYXRvckNvbnRleHQgY29udGV4dCkKLSAgewotCXJldHVybiAoWE1MR3JhbW1hclBvb2wpeG1sR3JhbW1hclBvb2xzLmdldChjb250ZXh0KTsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdldCB0aGUgWFNEIGdyYW1tYXIgcG9vbCBkZWZpbmVkIGZvciB0aGUgZ2l2ZW4gY29udGV4dC4KLSAgICogCi0gICAqIEBwYXJhbSBjb250ZXh0Ci0gICAqIAkJVGhlIGNvbnRleHQgdG8gdXNlIHRvIHJldHJpZXZlIHRoZSBYU0QgZ3JhbW1hciBwb29sLgotICAgKiBAcmV0dXJuCi0gICAqIAkJVGhlIFhTRCBncmFtbWFyIHBvb2wgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250ZXh0IG9yIG51bGwgaWYgbm9uZSBpcyBhc3NvY2lhdGVkLgotICAgKi8KLSAgcHVibGljIFhNTEdyYW1tYXJQb29sIGdldFhTREdyYW1tYXJQb29sRm9yQ29udGV4dChOZXN0ZWRWYWxpZGF0b3JDb250ZXh0IGNvbnRleHQpCi0gIHsKLQlyZXR1cm4gKFhNTEdyYW1tYXJQb29sKXhzZEdyYW1tYXJQb29scy5nZXQoY29udGV4dCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBFeHBvc2UgdGhlIFhNTCBncmFtbWFyIHBvb2xzIEhhc2hNYXAgZm9yIHRlc3RpbmcuCi0gICAqIAotICAgKiBAcmV0dXJuCi0gICAqIAkJVGhlIFhNTCBncmFtbWFyIHBvb2xzIEhhc2hNYXAuCi0gICAqLwotICBwdWJsaWMgSGFzaE1hcCBnZXRYTUxHcmFtbWFyUG9vbHNNYXAoKQotICB7Ci0JcmV0dXJuIHhtbEdyYW1tYXJQb29sczsKLSAgfQotICAKLSAgLyoqCi0gICAqIEV4cG9zZSB0aGUgWFNEIGdyYW1tYXIgcG9vbHMgSGFzaE1hcCBmb3IgdGVzdGluZy4KLSAgICogCi0gICAqIEByZXR1cm4KLSAgICogCQlUaGUgWFNEIGdyYW1tYXIgcG9vbHMgSGFzaE1hcC4KLSAgICovCi0gIHB1YmxpYyBIYXNoTWFwIGdldFhTREdyYW1tYXJQb29sc01hcCgpCi0gIHsKLQlyZXR1cm4geHNkR3JhbW1hclBvb2xzOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvV1NETFZhbGlkYXRvclRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9XU0RMVmFsaWRhdG9yVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDdiODNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS9XU0RMVmFsaWRhdG9yVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmVjbGlwc2U7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotLyoqCi0gKiBUZXN0IHRoZSBFY2xpcHNlIHNwZWNpZmljIFdTREwgdmFsaWRhdG9yLgotICovCi1wdWJsaWMgY2xhc3MgV1NETFZhbGlkYXRvclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSAKLXsKLSAgLyoqCi0gICAqIENyZWF0ZSBhIHRlc3RzIHN1aXRlIGZyb20gdGhpcyB0ZXN0IGNsYXNzLgotICAgKiAKLSAgICogQHJldHVybiBBIHRlc3Qgc3VpdGUgY29udGFpbmluZyB0aGlzIHRlc3QgY2xhc3MuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0gICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoV1NETFZhbGlkYXRvclRlc3QuY2xhc3MpOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCB0byBlbnN1cmUgdGhlIFVSSSByZXNvbHZlciBpcyBub3QgbnVsbCBpbiB0aGUgRWNsaXBzZQotICAgKiBzcGVjaWZpYyBYTUwgdmFsaWRhdG9yLgotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFVSSVJlc29sdmVySXNSZWdpc3RlcmVkKCkKLSAgewotCVdTRExWYWxpZGF0b3JXcmFwcGVyIHZhbGlkYXRvciA9IG5ldyBXU0RMVmFsaWRhdG9yV3JhcHBlcigpOwotCWFzc2VydE5vdE51bGwoIlRoZSBVUkkgcmVzb2x2ZXIgaXMgbnVsbC4iLCB2YWxpZGF0b3IuZ2V0VVJJUmVzb2x2ZXIoKSk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9lY2xpcHNlL1dTRExWYWxpZGF0b3JXcmFwcGVyLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvV1NETFZhbGlkYXRvcldyYXBwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI0MjM0MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvV1NETFZhbGlkYXRvcldyYXBwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5lY2xpcHNlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlci5VUklSZXNvbHZlcjsKLQotLyoqCi0gKiBXcmFwcGVyIGZvciB0aGUgRWNsaXBzZSBXU0RMIHZhbGlkYXRvciBjbGFzcyB0byBhbGxvdyBmb3IgdGVzdGluZy4KLSAqLwotcHVibGljIGNsYXNzIFdTRExWYWxpZGF0b3JXcmFwcGVyIGV4dGVuZHMgV1NETFZhbGlkYXRvciAKLXsKLSAgLyoqCi0gICAqIENvbnN0cnVjdG9yLgotICAgKi8KLSAgcHVibGljIFdTRExWYWxpZGF0b3JXcmFwcGVyKCkKLSAgewotCXN1cGVyKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIFVSSSByZXNvbHZlciByZWdpc3RlcmVkIG9uIHRoZSBXU0RMIHZhbGlkYXRvci4KLSAgICogCi0gICAqIEByZXR1cm4gVGhlIFVSSSByZXNvbHZlciByZWdpc3RlcmVkIG9uIHRoZSBXU0RMIHZhbGlkYXRvci4KLSAgICovCi0gIHB1YmxpYyBVUklSZXNvbHZlciBnZXRVUklSZXNvbHZlcigpCi0gIHsKLQlyZXR1cm4gdXJpUmVzb2x2ZXI7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS92YWxpZGF0ZXdzZGwucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvZWNsaXBzZS92YWxpZGF0ZXdzZGwucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3ZmNlMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL2VjbGlwc2UvdmFsaWRhdGV3c2RsLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIENvbnRyaWJ1dG9yczoKLSMgICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBEdXBsaWNhdGUgZXJyb3IgbWVzc2FnZSBmb3IgdGVzdGluZwotX1JFRl9GSUxFX0VSUk9SX01FU1NBR0UgICAgICAgICAgPSBSZWZlcmVuY2VkIGZpbGUgY29udGFpbnMgZXJyb3JzICh7MH0pLiAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3Jlc29sdmVyL1VSSVJlc29sdmVyVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC9yZXNvbHZlci9VUklSZXNvbHZlclRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZjNjA1Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3Jlc29sdmVyL1VSSVJlc29sdmVyVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlcjsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi0vKioKLSAqIFVSSVJlc29sdmVyIHRlc3RzLgotICovCi1wdWJsaWMgY2xhc3MgVVJJUmVzb2x2ZXJUZXN0IGV4dGVuZHMgVGVzdENhc2UKLXsKLSAgcHJpdmF0ZSBVUklSZXNvbHZlciB1cmlSZXNvbHZlciA9IG51bGw7Ci0gLyoqCi0gICogQ3JlYXRlIGEgdGVzdHMgc3VpdGUgZnJvbSB0aGlzIHRlc3QgY2xhc3MuCi0gICogCi0gICogQHJldHVybiBBIHRlc3Qgc3VpdGUgY29udGFpbmluZyB0aGlzIHRlc3QgY2xhc3MuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShVUklSZXNvbHZlclRlc3QuY2xhc3MpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3NldFVwKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiAKLSAgewotCXVyaVJlc29sdmVyID0gbmV3IFVSSVJlc29sdmVyKCk7CQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCB0ZXN0Tm9ybWFsaXplQWJzb2x1dGVGaWxlKCkKLSAgewotICAJLy8gU3lzdGVtIGlkIGlzIGFic29sdXRlIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLgotICAJU3RyaW5nIGJhc2VMb2NhdGlvbiA9ICJmaWxlOi9jOi9zb21lcGF0aC9zb21lcGF0aC9maWxlLnR4dCI7Ci0gIAlTdHJpbmcgc3lzdGVtSWQgPSAiZmlsZTovYzovc29tZXBhdGgvbXlmaWxlLnR4dCI7Ci0gIAlhc3NlcnRFcXVhbHMoInN5c3RlbUlkIGlzIGFic29sdXRlIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLiIsIHN5c3RlbUlkLCB1cmlSZXNvbHZlci5yZXNvbHZlKGJhc2VMb2NhdGlvbiwgbnVsbCwgc3lzdGVtSWQpLmdldExvZ2ljYWxMb2NhdGlvbigpKTsKLSAgCQotICB9Ci0gIAotICBwdWJsaWMgdm9pZCB0ZXN0Tm9ybWFsaXplUmVsYXRpdmVGaWxlKCkKLSAgewotICAJLy8gU3lzdGVtIGlkIGlzIHJlbGF0aXZlIAotICAJU3RyaW5nIGJhc2VMb2NhdGlvbiA9ICJmaWxlOi9jOi9zb21lcGF0aC9zb21lcGF0aC9maWxlLnR4dCI7Ci0gIAlTdHJpbmcgc3lzdGVtSWQgPSAibXlmaWxlLnR4dCI7Ci0gIAlhc3NlcnRFcXVhbHMoInN5c3RlbUlkIGlzIHNpbXBsZSByZWxhdGl2ZSBhbmQgaXMgbm90IG1vZGlmaWVkIGNvcnJlY3RseS4iLCAiZmlsZTovYzovc29tZXBhdGgvc29tZXBhdGgvbXlmaWxlLnR4dCIsIHVyaVJlc29sdmVyLnJlc29sdmUoYmFzZUxvY2F0aW9uLCBudWxsLCBzeXN0ZW1JZCkuZ2V0TG9naWNhbExvY2F0aW9uKCkpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCB0ZXN0Tm9ybWFsaXplUmVsYXRpdmVGaWxlU3RhcnRzV2l0aERvdERvdCgpCi0gIHsKLSAgICAvLyBTeXN0ZW0gaWQgaXMgcmVsYXRpdmUgd2l0aCAuLi8KLSAgCVN0cmluZyBiYXNlTG9jYXRpb24gPSAiZmlsZTovYzovc29tZXBhdGgvc29tZXBhdGgvZmlsZS50eHQiOwotICAJU3RyaW5nIHN5c3RlbUlkID0gIi4uL215ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJzeXN0ZW1JZCBpcyByZWxhdGl2ZSB3aXRoIC4uLyBhbmQgaXMgbm90IG1vZGlmaWVkIGNvcnJlY3RseS4iLCAiZmlsZTovYzovc29tZXBhdGgvbXlmaWxlLnR4dCIsIHVyaVJlc29sdmVyLnJlc29sdmUoYmFzZUxvY2F0aW9uLCBudWxsLCBzeXN0ZW1JZCkuZ2V0TG9naWNhbExvY2F0aW9uKCkpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCB0ZXN0Tm9ybWFsaXplUmVsYXRpdmVGaWxlU3RhcnRzV2l0aERvdERvdFR3aWNlKCkKLSAgewotICAgIC8vIFN5c3RlbSBpZCBpcyByZWxhdGl2ZSB3aXRoIC4uLy4uLwotICAJU3RyaW5nIGJhc2VMb2NhdGlvbiA9ICJmaWxlOi9jOi9zb21lcGF0aC9zb21lcGF0aC9maWxlLnR4dCI7Ci0gIAlTdHJpbmcgc3lzdGVtSWQgPSAiLi4vLi4vbXlmaWxlLnR4dCI7Ci0gIAlhc3NlcnRFcXVhbHMoInN5c3RlbUlkIGlzIHJlbGF0aXZlIHdpdGggLi4vLi4vIGFuZCBpcyBub3QgbW9kaWZpZWQgY29ycmVjdGx5LiIsICJmaWxlOi9jOi9teWZpbGUudHh0IiwgdXJpUmVzb2x2ZXIucmVzb2x2ZShiYXNlTG9jYXRpb24sIG51bGwsIHN5c3RlbUlkKS5nZXRMb2dpY2FsTG9jYXRpb24oKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3ROb3JtYWxpemVSZWxhdGl2ZUZpbGVTdGFydHNXaXRoRG90KCkKLSAgewotICAgIC8vIFN5c3RlbSBpZCBpcyByZWxhdGl2ZSB3aXRoIC4vCi0gIAlTdHJpbmcgYmFzZUxvY2F0aW9uID0gImZpbGU6L2M6L3NvbWVwYXRoL3NvbWVwYXRoL2ZpbGUudHh0IjsKLSAgCVN0cmluZyBzeXN0ZW1JZCA9ICIuL215ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJzeXN0ZW1JZCBpcyByZWxhdGl2ZSB3aXRoIC4vIGFuZCBpcyBub3QgbW9kaWZpZWQgY29ycmVjdGx5LiIsICJmaWxlOi9jOi9zb21lcGF0aC9zb21lcGF0aC9teWZpbGUudHh0IiwgdXJpUmVzb2x2ZXIucmVzb2x2ZShiYXNlTG9jYXRpb24sIG51bGwsIHN5c3RlbUlkKS5nZXRMb2dpY2FsTG9jYXRpb24oKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3ROb3JtYWxpemVSZWxhdGl2ZUZpbGVTdGFydHNXaXRoRG90VHdpY2UoKQotICB7Ci0gICAgLy8gU3lzdGVtIGlkIGlzIHJlbGF0aXZlIHdpdGggLi8uLwotICAJU3RyaW5nIGJhc2VMb2NhdGlvbiA9ICJmaWxlOi9jOi9zb21lcGF0aC9zb21lcGF0aC9maWxlLnR4dCI7Ci0gIAlTdHJpbmcgc3lzdGVtSWQgPSAiLi8uL215ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJzeXN0ZW1JZCBpcyByZWxhdGl2ZSB3aXRoIC4vLi8gYW5kIGlzIG5vdCBtb2RpZmllZCBjb3JyZWN0bHkuIiwgImZpbGU6L2M6L3NvbWVwYXRoL3NvbWVwYXRoL215ZmlsZS50eHQiLCB1cmlSZXNvbHZlci5yZXNvbHZlKGJhc2VMb2NhdGlvbiwgbnVsbCwgc3lzdGVtSWQpLmdldExvZ2ljYWxMb2NhdGlvbigpKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgdGVzdE5vcm1hbGl6ZVJlbGF0aXZlRmlsZVN0YXJ0c1dpdGhTbGFzaCgpCi0gIHsKLSAgICAvLyBTeXN0ZW0gaWQgaXMgcmVsYXRpdmUgYmVnaW5uaW5nIHdpdGggLwotICAJU3RyaW5nIGJhc2VMb2NhdGlvbiA9ICJmaWxlOi9jOi9zb21lcGF0aC9zb21lcGF0aC9maWxlLnR4dCI7Ci0gIAlTdHJpbmcgc3lzdGVtSWQgPSAiL215ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJzeXN0ZW1JZCBpcyByZWxhdGl2ZSBiZWdpbm5pbmcgd2l0aCAvIGFuZCBpcyBub3QgbW9kaWZpZWQgY29ycmVjdGx5LiIsICJmaWxlOi9jOi9zb21lcGF0aC9zb21lcGF0aC9teWZpbGUudHh0IiwgdXJpUmVzb2x2ZXIucmVzb2x2ZShiYXNlTG9jYXRpb24sIG51bGwsIHN5c3RlbUlkKS5nZXRMb2dpY2FsTG9jYXRpb24oKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3ROb3JtYWxpemVSZWxhdGl2ZUZpbGVEb3REb3RJbk1pZGRsZSgpCi0gIHsKLSAgICAvLyBTeXN0ZW0gaWQgY29udGFpbnMgLi4vIGluIHRoZSBtaWRkbGUKLSAgCVN0cmluZyBiYXNlTG9jYXRpb24gPSAiZmlsZTovYzovc29tZXBhdGgvc29tZXBhdGgvZmlsZS50eHQiOwotICAJU3RyaW5nIHN5c3RlbUlkID0gInNvbWVwYXRoLy4uL215ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJzeXN0ZW1JZCBpcyByZWxhdGl2ZSBhbmQgY29udGFpbnMgLi4vIGluIHRoZSBtaWRkbGUgYW5kIGlzIG5vdCBtb2RpZmllZCBjb3JyZWN0bHkuIiwgImZpbGU6L2M6L3NvbWVwYXRoL3NvbWVwYXRoL215ZmlsZS50eHQiLCB1cmlSZXNvbHZlci5yZXNvbHZlKGJhc2VMb2NhdGlvbiwgbnVsbCwgc3lzdGVtSWQpLmdldExvZ2ljYWxMb2NhdGlvbigpKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgdGVzdE5vcm1hbGl6ZVJlbGF0aXZlRmlsZUZvdEluTWlkZGxlKCkKLSAgewotICAgIC8vIFN5c3RlbSBpZCBjb250YWlucyAuLyBpbiB0aGUgbWlkZGxlCi0gIAlTdHJpbmcgYmFzZUxvY2F0aW9uID0gImZpbGU6L2M6L3NvbWVwYXRoL3NvbWVwYXRoL2ZpbGUudHh0IjsKLSAgCVN0cmluZyBzeXN0ZW1JZCA9ICJzb21lcGF0aC8uL215ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJzeXN0ZW1JZCBpcyByZWxhdGl2ZSBhbmQgY29udGFpbnMgLi8gaW4gdGhlIG1pZGRsZSBhbmQgaXMgbm90IG1vZGlmaWVkIGNvcnJlY3RseS4iLCAiZmlsZTovYzovc29tZXBhdGgvc29tZXBhdGgvc29tZXBhdGgvbXlmaWxlLnR4dCIsIHVyaVJlc29sdmVyLnJlc29sdmUoYmFzZUxvY2F0aW9uLCBudWxsLCBzeXN0ZW1JZCkuZ2V0TG9naWNhbExvY2F0aW9uKCkpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCB0ZXN0Tm9ybWxpemVSZWxhdGl2ZUZpbGVEb3REb3RJbk1pZGRsZU9mQmFzZSgpCi0gIHsKLSAgICAvLyBCYXNlIGxvY2F0aW9uIGNvbnRhaW5zIC4uLyBpbiB0aGUgbWlkZGxlCi0gIAlTdHJpbmcgYmFzZUxvY2F0aW9uID0gImZpbGU6L2M6L3NvbWVwYXRoLy4uL3NvbWVwYXRoL2ZpbGUudHh0IjsKLSAgCVN0cmluZyBzeXN0ZW1JZCA9ICJteWZpbGUudHh0IjsKLSAgCWFzc2VydEVxdWFscygiYmFzZUxvY2F0aW9uIGNvbnRhaW5zIC4uLyBpbiB0aGUgbWlkZGxlIGFuZCBpcyBub3QgbW9kaWZpZWQgY29ycmVjdGx5LiIsICJmaWxlOi9jOi9zb21lcGF0aC9teWZpbGUudHh0IiwgdXJpUmVzb2x2ZXIucmVzb2x2ZShiYXNlTG9jYXRpb24sIG51bGwsIHN5c3RlbUlkKS5nZXRMb2dpY2FsTG9jYXRpb24oKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3ROb3JtYWxpemVSZWxhdGl2ZUZpbGVEb3RJbk1pZGRsZU9mQmFzZSgpCi0gIHsKLSAgICAvLyBCYXNlIGxvY2F0aW9uIGNvbnRhaW5zIC4vIGluIHRoZSBtaWRkbGUKLSAgCVN0cmluZyBiYXNlTG9jYXRpb24gPSAiZmlsZTovYzovc29tZXBhdGgvLi9zb21lcGF0aC9maWxlLnR4dCI7Ci0gIAlTdHJpbmcgc3lzdGVtSWQgPSAibXlmaWxlLnR4dCI7Ci0gIAlhc3NlcnRFcXVhbHMoImJhc2VMb2NhdGlvbiBjb250YWlucyAuLyBpbiB0aGUgbWlkZGxlIGFuZCBpcyBub3QgbW9kaWZpZWQgY29ycmVjdGx5LiIsICJmaWxlOi9jOi9zb21lcGF0aC9zb21lcGF0aC9teWZpbGUudHh0IiwgdXJpUmVzb2x2ZXIucmVzb2x2ZShiYXNlTG9jYXRpb24sIG51bGwsIHN5c3RlbUlkKS5nZXRMb2dpY2FsTG9jYXRpb24oKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3ROb3JtYWxpemVSZWxhdGl2ZUZpbGVCYXNlU3RhcnRzV2l0aFNsYXNoRG90RG90KCkKLSAgewotICAgIC8vIEJhc2UgbG9jYXRpb24gc3RhcnRzIHdpdGggLy4uLyAKLSAgCVN0cmluZyBiYXNlTG9jYXRpb24gPSAiZmlsZTovLi4vc29tZXBhdGgvZmlsZS50eHQiOwotICAJU3RyaW5nIHN5c3RlbUlkID0gIm15ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJiYXNlTG9jYXRpb24gc3RhcnRzIHdpdGggLi4vIGFuZCBpcyBub3QgbW9kaWZpZWQgY29ycmVjdGx5LiIsICJmaWxlOi8uLi9zb21lcGF0aC9teWZpbGUudHh0IiwgdXJpUmVzb2x2ZXIucmVzb2x2ZShiYXNlTG9jYXRpb24sIG51bGwsIHN5c3RlbUlkKS5nZXRMb2dpY2FsTG9jYXRpb24oKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3ROb3JtYWxpemVSZWxhdGl2ZUZpbGVCYXNlU3RhcnRzV2l0aFNsYXNoRG90KCkKLSAgewotICAgIC8vIEJhc2UgbG9jYXRpb24gc3RhcnRzIHdpdGggLy4vCi0gIAlTdHJpbmcgYmFzZUxvY2F0aW9uID0gImZpbGU6Ly4vc29tZXBhdGgvZmlsZS50eHQiOwotICAJU3RyaW5nIHN5c3RlbUlkID0gIm15ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJiYXNlTG9jYXRpb24gc3RhcnRzIHdpdGggLi8gYW5kIGlzIG5vdCBtb2RpZmllZCBjb3JyZWN0bHkuIiwgImZpbGU6L3NvbWVwYXRoL215ZmlsZS50eHQiLCB1cmlSZXNvbHZlci5yZXNvbHZlKGJhc2VMb2NhdGlvbiwgbnVsbCwgc3lzdGVtSWQpLmdldExvZ2ljYWxMb2NhdGlvbigpKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgdGVzdE5vcm1hbGl6ZVJlbGF0aXZlRmlsZUJhc2VTdGFydHNXaXRoRG90RG90KCkKLSAgewotICAgIC8vIEJhc2UgbG9jYXRpb24gc3RhcnRzIHdpdGggLi4vIAotICAJU3RyaW5nIGJhc2VMb2NhdGlvbiA9ICJmaWxlOi4uL3NvbWVwYXRoL2ZpbGUudHh0IjsKLSAgCVN0cmluZyBzeXN0ZW1JZCA9ICJteWZpbGUudHh0IjsKLSAgCWFzc2VydEVxdWFscygiYmFzZUxvY2F0aW9uIHN0YXJ0cyB3aXRoIC4uLyBhbmQgaXMgbm90IG1vZGlmaWVkIGNvcnJlY3RseS4iLCAiZmlsZTouLi9zb21lcGF0aC9teWZpbGUudHh0IiwgdXJpUmVzb2x2ZXIucmVzb2x2ZShiYXNlTG9jYXRpb24sIG51bGwsIHN5c3RlbUlkKS5nZXRMb2dpY2FsTG9jYXRpb24oKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3ROb3JtYWxpemVSZWxhdGl2ZUZpbGVCYXNlU3RhcnRzV2l0aERvdCgpCi0gIHsKLSAgICAvLyBCYXNlIGxvY2F0aW9uIHN0YXJ0cyB3aXRoIC4vIAotICAJU3RyaW5nIGJhc2VMb2NhdGlvbiA9ICJmaWxlOi4vc29tZXBhdGgvZmlsZS50eHQiOwotICAJU3RyaW5nIHN5c3RlbUlkID0gIm15ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJiYXNlTG9jYXRpb24gc3RhcnRzIHdpdGggLi8gYW5kIGlzIG5vdCBtb2RpZmllZCBjb3JyZWN0bHkuIiwgImZpbGU6c29tZXBhdGgvbXlmaWxlLnR4dCIsIHVyaVJlc29sdmVyLnJlc29sdmUoYmFzZUxvY2F0aW9uLCBudWxsLCBzeXN0ZW1JZCkuZ2V0TG9naWNhbExvY2F0aW9uKCkpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCB0ZXN0Tm9ybWFsaXplUmVsYXRpdmVGaWxlU29tZWRpckRvdERvdCgpCi0gIHsKLSAgICAvLyBTeXN0ZW0gaWQgY29udGFpbnMgc29tZWRpci4uLyBpbiB0aGUgbWlkZGxlCi0gIAlTdHJpbmcgYmFzZUxvY2F0aW9uID0gImZpbGU6L3NvbWVwYXRoL2ZpbGUudHh0IjsKLSAgCVN0cmluZyBzeXN0ZW1JZCA9ICJzb21lZGlyLi4vbXlmaWxlLnR4dCI7Ci0gIAlhc3NlcnRFcXVhbHMoInN5c3RlbUlkIGhhcyBzb21lZGlyLi4vIGFuZCBpcyBub3QgbW9kaWZpZWQgY29ycmVjdGx5LiIsICJmaWxlOi9zb21lcGF0aC9zb21lZGlyLi4vbXlmaWxlLnR4dCIsIHVyaVJlc29sdmVyLnJlc29sdmUoYmFzZUxvY2F0aW9uLCBudWxsLCBzeXN0ZW1JZCkuZ2V0TG9naWNhbExvY2F0aW9uKCkpOwotICB9Ci0gIAotICBwdWJsaWMgdm9pZCB0ZXN0Tm9ybWFsaXplUmVsYXRpdmVGaWxlU29tZWRpckRvdCgpCi0gIHsKLSAgICAvLyBTeXN0ZW0gaWQgY29udGFpbnMgc29tZWRpci4vIGluIHRoZSBtaWRkbGUKLSAgCVN0cmluZyBiYXNlTG9jYXRpb24gPSAiZmlsZTovc29tZXBhdGgvZmlsZS50eHQiOwotICAJU3RyaW5nIHN5c3RlbUlkID0gInNvbWVkaXIuL215ZmlsZS50eHQiOwotICAJYXNzZXJ0RXF1YWxzKCJzeXN0ZW1JZCBoYXMgc29tZWRpci4vIGFuZCBpcyBub3QgbW9kaWZpZWQgY29ycmVjdGx5LiIsICJmaWxlOi9zb21lcGF0aC9zb21lZGlyLi9teWZpbGUudHh0IiwgdXJpUmVzb2x2ZXIucmVzb2x2ZShiYXNlTG9jYXRpb24sIG51bGwsIHN5c3RlbUlkKS5nZXRMb2dpY2FsTG9jYXRpb24oKSk7Ci0gIH0KLSAgCi0gIHB1YmxpYyB2b2lkIHRlc3ROb3JtYWxpemVOdWxsU3lzdGVtSWQoKQotICB7Ci0gICAgLy8gU3lzdGVtIGlkIGlzIG51bGwKLSAgCVN0cmluZyBiYXNlTG9jYXRpb24gPSAiZmlsZTovc29tZXBhdGgvZmlsZS50eHQiOwotICAJU3RyaW5nIHN5c3RlbUlkID0gbnVsbDsKLSAgCWFzc2VydEVxdWFscygic3lzdGVtSWQgaXMgbnVsbC4iLCBudWxsLCB1cmlSZXNvbHZlci5yZXNvbHZlKGJhc2VMb2NhdGlvbiwgbnVsbCwgc3lzdGVtSWQpLmdldExvZ2ljYWxMb2NhdGlvbigpKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgdGVzdE5vcm1hbGl6ZU51bGxCYXNlTG9jYXRpb24oKQotICB7Ci0gICAgLy8gQmFzZSBsb2NhdGlvbiBpcyBudWxsCi0gIAlTdHJpbmcgYmFzZUxvY2F0aW9uID0gbnVsbDsKLSAgCVN0cmluZyBzeXN0ZW1JZCA9ICJzb21lZGlyLi9teWZpbGUudHh0IjsKLSAgCWFzc2VydEVxdWFscygic3lzdGVtSWQgaXMgbnVsbC4iLCBudWxsLCB1cmlSZXNvbHZlci5yZXNvbHZlKGJhc2VMb2NhdGlvbiwgbnVsbCwgc3lzdGVtSWQpLmdldExvZ2ljYWxMb2NhdGlvbigpKTsKLSAgfQotICAKLSAgcHVibGljIHZvaWQgdGVzdE5vcm1hbGl6ZVN5c3RlbUlkQWJzb2x1dGVOdWxsQmFzZUxvY2F0aW9uKCkKLSAgewotICAgIC8vIEJhc2UgbG9jYXRpb24gaXMgbnVsbAotICAJU3RyaW5nIGJhc2VMb2NhdGlvbiA9ICJudWxsIjsKLSAgCVN0cmluZyBzeXN0ZW1JZCA9ICJmaWxlOi9zb21lZGlyLi9teWZpbGUudHh0IjsKLSAgCWFzc2VydEVxdWFscygic3lzdGVtSWQgaXMgbnVsbC4iLCAiZmlsZTovc29tZWRpci4vbXlmaWxlLnR4dCIsIHVyaVJlc29sdmVyLnJlc29sdmUoYmFzZUxvY2F0aW9uLCBudWxsLCBzeXN0ZW1JZCkuZ2V0TG9naWNhbExvY2F0aW9uKCkpOwotICB9Ci0KLQkKLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L0FudExvZ2dlclRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L0FudExvZ2dlclRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJiYzc1My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9BbnRMb2dnZXJUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxODcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLmFudDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5JTG9nZ2VyOwotCi0vKioKLSAqIFRlc3RzIGZvciB0aGUgQW50TG9nZ2VyLgotICovCi1wdWJsaWMgY2xhc3MgQW50TG9nZ2VyVGVzdCBleHRlbmRzIFRlc3RDYXNlIAotewotICBBbnRMb2dnZXJUZXN0VGFzayB0YXNrID0gbnVsbDsKLQkKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZSNzZXRVcCgpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24gCi0gIHsKLQl0YXNrID0gbmV3IEFudExvZ2dlclRlc3RUYXNrKCk7Ci0gIH0KLQotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3RlYXJEb3duKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHRlYXJEb3duKCkgdGhyb3dzIEV4Y2VwdGlvbiAKLSAgewotCXRhc2sgPSBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFRlc3QgdGhhdCB0aGUgbG9nIG1ldGhvZDoKLSAgICogMS4gbG9ncyBlcnJvcnMgY29ycmVjdGx5LgotICAgKiAyLiByZWNvcmRzIHRoZSBtZXNzYWdlIGNvcnJlY3RseS4KLSAgICogMy4gcmVjb3JkcyB0aGUgdGhyb3dhYmxlIGNvcnJlY3RseS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RMb2dFcnJvcldpdGhUaHJvd2FibGUoKQotICB7Ci0JQW50TG9nZ2VyIGxvZ2dlciA9IG5ldyBBbnRMb2dnZXIodGFzayk7Ci0JbG9nZ2VyLmxvZygiTUVTU0FHRSIsIElMb2dnZXIuU0VWX0VSUk9SLCBuZXcgVGhyb3dhYmxlKCJUSFJPV0FCTEUiKSk7Ci0JCi0JYXNzZXJ0VHJ1ZSgiV2FybmluZ3Mgd2VyZSByZXBvcnRlZCB3aGVuIG9ubHkgZXJyb3JzIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRXYXJuaW5ncygpLmlzRW1wdHkoKSk7Ci0JYXNzZXJ0VHJ1ZSgiSW5mb3Mgd2VyZSByZXBvcnRlZCB3aGVuIG9ubHkgZXJyb3JzIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRJbmZvcygpLmlzRW1wdHkoKSk7Ci0JYXNzZXJ0VHJ1ZSgiVmVyYm9zZXMgd2VyZSByZXBvcnRlZCB3aGVuIG9ubHkgZXJyb3JzIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRWZXJib3NlcygpLmlzRW1wdHkoKSk7Ci0JYXNzZXJ0RXF1YWxzKCIyIGVycm9ycyB3ZXJlIG5vdCByZXBvcnRlZC4iLCAyLCB0YXNrLmdldEVycm9ycygpLnNpemUoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSB3YXMgbm90IE1FU1NBR0UuIiwgIk1FU1NBR0UiLCB0YXNrLmdldEVycm9ycygpLmdldCgwKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgdGhyb3dhYmxlIHdhcyBub3QgVEhST1dBQkxFLiIsICJqYXZhLmxhbmcuVGhyb3dhYmxlOiBUSFJPV0FCTEUiLCB0YXNrLmdldEVycm9ycygpLmdldCgxKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IHRoYXQgdGhlIGxvZyBtZXRob2Q6Ci0gICAqIDEuIGxvZ3Mgd2FybmluZ3MgY29ycmVjdGx5LgotICAgKiAyLiByZWNvcmRzIHRoZSBtZXNzYWdlIGNvcnJlY3RseS4KLSAgICogMy4gcmVjb3JkcyB0aGUgdGhyb3dhYmxlIGNvcnJlY3RseS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RMb2dXYXJuaW5nV2l0aFRocm93YWJsZSgpCi0gIHsKLQlBbnRMb2dnZXIgbG9nZ2VyID0gbmV3IEFudExvZ2dlcih0YXNrKTsKLQlsb2dnZXIubG9nKCJNRVNTQUdFIiwgSUxvZ2dlci5TRVZfV0FSTklORywgbmV3IFRocm93YWJsZSgiVEhST1dBQkxFIikpOwotCQotCWFzc2VydFRydWUoIkVycm9ycyB3ZXJlIHJlcG9ydGVkIHdoZW4gb25seSB3YXJuaW5ncyBzaG91bGQgaGF2ZSBiZWVuIHJlcG9ydGVkLiIsIHRhc2suZ2V0RXJyb3JzKCkuaXNFbXB0eSgpKTsKLQlhc3NlcnRUcnVlKCJJbmZvcyB3ZXJlIHJlcG9ydGVkIHdoZW4gb25seSB3YXJuaW5ncyBzaG91bGQgaGF2ZSBiZWVuIHJlcG9ydGVkLiIsIHRhc2suZ2V0SW5mb3MoKS5pc0VtcHR5KCkpOwotCWFzc2VydFRydWUoIlZlcmJvc2VzIHdlcmUgcmVwb3J0ZWQgd2hlbiBvbmx5IGVycm9ycyBzaG91bGQgaGF2ZSBiZWVuIHJlcG9ydGVkLiIsIHRhc2suZ2V0VmVyYm9zZXMoKS5pc0VtcHR5KCkpOwotCWFzc2VydEVxdWFscygiMiB3YXJuaW5ncyB3ZXJlIG5vdCByZXBvcnRlZC4iLCAyLCB0YXNrLmdldFdhcm5pbmdzKCkuc2l6ZSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBtZXNzYWdlIHdhcyBub3QgTUVTU0FHRS4iLCAiTUVTU0FHRSIsIHRhc2suZ2V0V2FybmluZ3MoKS5nZXQoMCkpOwotCWFzc2VydEVxdWFscygiVGhlIHRocm93YWJsZSB3YXMgbm90IFRIUk9XQUJMRS4iLCAiamF2YS5sYW5nLlRocm93YWJsZTogVEhST1dBQkxFIiwgdGFzay5nZXRXYXJuaW5ncygpLmdldCgxKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IHRoYXQgdGhlIGxvZyBtZXRob2Q6Ci0gICAqIDEuIGxvZ3MgaW5mb3MgY29ycmVjdGx5LgotICAgKiAyLiByZWNvcmRzIHRoZSBtZXNzYWdlIGNvcnJlY3RseS4KLSAgICogMy4gcmVjb3JkcyB0aGUgdGhyb3dhYmxlIGNvcnJlY3RseS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RMb2dJbmZvV2l0aFRocm93YWJsZSgpCi0gIHsKLQlBbnRMb2dnZXIgbG9nZ2VyID0gbmV3IEFudExvZ2dlcih0YXNrKTsKLQlsb2dnZXIubG9nKCJNRVNTQUdFIiwgSUxvZ2dlci5TRVZfSU5GTywgbmV3IFRocm93YWJsZSgiVEhST1dBQkxFIikpOwotCQotCWFzc2VydFRydWUoIldhcm5pbmdzIHdlcmUgcmVwb3J0ZWQgd2hlbiBvbmx5IGluZm9zIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRXYXJuaW5ncygpLmlzRW1wdHkoKSk7Ci0JYXNzZXJ0VHJ1ZSgiRXJyb3JzIHdlcmUgcmVwb3J0ZWQgd2hlbiBvbmx5IGluZm9zIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRFcnJvcnMoKS5pc0VtcHR5KCkpOwotCWFzc2VydFRydWUoIlZlcmJvc2VzIHdlcmUgcmVwb3J0ZWQgd2hlbiBvbmx5IGVycm9ycyBzaG91bGQgaGF2ZSBiZWVuIHJlcG9ydGVkLiIsIHRhc2suZ2V0VmVyYm9zZXMoKS5pc0VtcHR5KCkpOwotCWFzc2VydEVxdWFscygiMiBpbmZvcyB3ZXJlIG5vdCByZXBvcnRlZC4iLCAyLCB0YXNrLmdldEluZm9zKCkuc2l6ZSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSBtZXNzYWdlIHdhcyBub3QgTUVTU0FHRS4iLCAiTUVTU0FHRSIsIHRhc2suZ2V0SW5mb3MoKS5nZXQoMCkpOwotCWFzc2VydEVxdWFscygiVGhlIHRocm93YWJsZSB3YXMgbm90IFRIUk9XQUJMRS4iLCAiamF2YS5sYW5nLlRocm93YWJsZTogVEhST1dBQkxFIiwgdGFzay5nZXRJbmZvcygpLmdldCgxKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IHRoYXQgdGhlIGxvZyBtZXRob2Q6Ci0gICAqIDEuIGxvZ3MgdmVyYm9zZXMgY29ycmVjdGx5LgotICAgKiAyLiByZWNvcmRzIHRoZSBtZXNzYWdlIGNvcnJlY3RseS4KLSAgICogMy4gcmVjb3JkcyB0aGUgdGhyb3dhYmxlIGNvcnJlY3RseS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RMb2dWZXJib3NlV2l0aFRocm93YWJsZSgpCi0gIHsKLQlBbnRMb2dnZXIgbG9nZ2VyID0gbmV3IEFudExvZ2dlcih0YXNrKTsKLQlsb2dnZXIubG9nKCJNRVNTQUdFIiwgSUxvZ2dlci5TRVZfVkVSQk9TRSwgbmV3IFRocm93YWJsZSgiVEhST1dBQkxFIikpOwotCQotCWFzc2VydFRydWUoIldhcm5pbmdzIHdlcmUgcmVwb3J0ZWQgd2hlbiBvbmx5IHZlcmJvc2VzIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRXYXJuaW5ncygpLmlzRW1wdHkoKSk7Ci0JYXNzZXJ0VHJ1ZSgiRXJyb3JzIHdlcmUgcmVwb3J0ZWQgd2hlbiBvbmx5IHZlcmJvc2VzIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRFcnJvcnMoKS5pc0VtcHR5KCkpOwotCWFzc2VydFRydWUoIkluZm9zIHdlcmUgcmVwb3J0ZWQgd2hlbiBvbmx5IHZlcmJvc2VzIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRJbmZvcygpLmlzRW1wdHkoKSk7Ci0JYXNzZXJ0RXF1YWxzKCIyIHZlcmJvc2VzIHdlcmUgbm90IHJlcG9ydGVkLiIsIDIsIHRhc2suZ2V0VmVyYm9zZXMoKS5zaXplKCkpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2Ugd2FzIG5vdCBNRVNTQUdFLiIsICJNRVNTQUdFIiwgdGFzay5nZXRWZXJib3NlcygpLmdldCgwKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgdGhyb3dhYmxlIHdhcyBub3QgVEhST1dBQkxFLiIsICJqYXZhLmxhbmcuVGhyb3dhYmxlOiBUSFJPV0FCTEUiLCB0YXNrLmdldFZlcmJvc2VzKCkuZ2V0KDEpKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgdGhhdCB0aGUgbG9nIG1ldGhvZDoKLSAgICogMS4gbG9ncyBlcnJvcnMgY29ycmVjdGx5LgotICAgKiAyLiByZWNvcmRzIHRoZSBtZXNzYWdlIGNvcnJlY3RseS4KLSAgICogMy4gcmVjb3JkcyB0aGUgdGhyb3dhYmxlIGNvcnJlY3RseS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RMb2dFcnJvcldpdGhvdXRUaHJvd2FibGUoKQotICB7Ci0JQW50TG9nZ2VyIGxvZ2dlciA9IG5ldyBBbnRMb2dnZXIodGFzayk7Ci0JbG9nZ2VyLmxvZygiTUVTU0FHRSIsIElMb2dnZXIuU0VWX0VSUk9SKTsKLQkKLQlhc3NlcnRUcnVlKCJXYXJuaW5ncyB3ZXJlIHJlcG9ydGVkIHdoZW4gb25seSBlcnJvcnMgc2hvdWxkIGhhdmUgYmVlbiByZXBvcnRlZC4iLCB0YXNrLmdldFdhcm5pbmdzKCkuaXNFbXB0eSgpKTsKLQlhc3NlcnRUcnVlKCJJbmZvcyB3ZXJlIHJlcG9ydGVkIHdoZW4gb25seSBlcnJvcnMgc2hvdWxkIGhhdmUgYmVlbiByZXBvcnRlZC4iLCB0YXNrLmdldEluZm9zKCkuaXNFbXB0eSgpKTsKLQlhc3NlcnRUcnVlKCJWZXJib3NlcyB3ZXJlIHJlcG9ydGVkIHdoZW4gb25seSBlcnJvcnMgc2hvdWxkIGhhdmUgYmVlbiByZXBvcnRlZC4iLCB0YXNrLmdldFZlcmJvc2VzKCkuaXNFbXB0eSgpKTsKLQlhc3NlcnRFcXVhbHMoIjEgZXJyb3Igd2FzIG5vdCByZXBvcnRlZC4iLCAxLCB0YXNrLmdldEVycm9ycygpLnNpemUoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSB3YXMgbm90IE1FU1NBR0UuIiwgIk1FU1NBR0UiLCB0YXNrLmdldEVycm9ycygpLmdldCgwKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IHRoYXQgdGhlIGxvZyBtZXRob2Q6Ci0gICAqIDEuIGxvZ3Mgd2FybmluZ3MgY29ycmVjdGx5LgotICAgKiAyLiByZWNvcmRzIHRoZSBtZXNzYWdlIGNvcnJlY3RseS4KLSAgICogMy4gcmVjb3JkcyB0aGUgdGhyb3dhYmxlIGNvcnJlY3RseS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RMb2dXYXJuaW5nV2l0aG91dFRocm93YWJsZSgpCi0gIHsKLQlBbnRMb2dnZXIgbG9nZ2VyID0gbmV3IEFudExvZ2dlcih0YXNrKTsKLQlsb2dnZXIubG9nKCJNRVNTQUdFIiwgSUxvZ2dlci5TRVZfV0FSTklORyk7Ci0JCi0JYXNzZXJ0VHJ1ZSgiRXJyb3JzIHdlcmUgcmVwb3J0ZWQgd2hlbiBvbmx5IHdhcm5pbmdzIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRFcnJvcnMoKS5pc0VtcHR5KCkpOwotCWFzc2VydFRydWUoIkluZm9zIHdlcmUgcmVwb3J0ZWQgd2hlbiBvbmx5IHdhcm5pbmdzIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRJbmZvcygpLmlzRW1wdHkoKSk7Ci0JYXNzZXJ0VHJ1ZSgiVmVyYm9zZXMgd2VyZSByZXBvcnRlZCB3aGVuIG9ubHkgZXJyb3JzIHNob3VsZCBoYXZlIGJlZW4gcmVwb3J0ZWQuIiwgdGFzay5nZXRWZXJib3NlcygpLmlzRW1wdHkoKSk7Ci0JYXNzZXJ0RXF1YWxzKCIxIGVycm9yIHdhcyBub3QgcmVwb3J0ZWQuIiwgMSwgdGFzay5nZXRXYXJuaW5ncygpLnNpemUoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgbWVzc2FnZSB3YXMgbm90IE1FU1NBR0UuIiwgIk1FU1NBR0UiLCB0YXNrLmdldFdhcm5pbmdzKCkuZ2V0KDApKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgdGhhdCB0aGUgbG9nIG1ldGhvZDoKLSAgICogMS4gbG9ncyBpbmZvcyBjb3JyZWN0bHkuCi0gICAqIDIuIHJlY29yZHMgdGhlIG1lc3NhZ2UgY29ycmVjdGx5LgotICAgKiAzLiByZWNvcmRzIHRoZSB0aHJvd2FibGUgY29ycmVjdGx5LgotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdExvZ0luZm9XaXRob3V0VGhyb3dhYmxlKCkKLSAgewotCUFudExvZ2dlciBsb2dnZXIgPSBuZXcgQW50TG9nZ2VyKHRhc2spOwotCWxvZ2dlci5sb2coIk1FU1NBR0UiLCBJTG9nZ2VyLlNFVl9JTkZPKTsKLQkKLQlhc3NlcnRUcnVlKCJXYXJuaW5ncyB3ZXJlIHJlcG9ydGVkIHdoZW4gb25seSBpbmZvcyBzaG91bGQgaGF2ZSBiZWVuIHJlcG9ydGVkLiIsIHRhc2suZ2V0V2FybmluZ3MoKS5pc0VtcHR5KCkpOwotCWFzc2VydFRydWUoIkVycm9ycyB3ZXJlIHJlcG9ydGVkIHdoZW4gb25seSBpbmZvcyBzaG91bGQgaGF2ZSBiZWVuIHJlcG9ydGVkLiIsIHRhc2suZ2V0RXJyb3JzKCkuaXNFbXB0eSgpKTsKLQlhc3NlcnRUcnVlKCJWZXJib3NlcyB3ZXJlIHJlcG9ydGVkIHdoZW4gb25seSBlcnJvcnMgc2hvdWxkIGhhdmUgYmVlbiByZXBvcnRlZC4iLCB0YXNrLmdldFZlcmJvc2VzKCkuaXNFbXB0eSgpKTsKLQlhc3NlcnRFcXVhbHMoIjEgaW5mbyB3YXMgbm90IHJlcG9ydGVkLiIsIDEsIHRhc2suZ2V0SW5mb3MoKS5zaXplKCkpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2Ugd2FzIG5vdCBNRVNTQUdFLiIsICJNRVNTQUdFIiwgdGFzay5nZXRJbmZvcygpLmdldCgwKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IHRoYXQgdGhlIGxvZyBtZXRob2Q6Ci0gICAqIDEuIGxvZ3MgdmVyYm9zZXMgY29ycmVjdGx5LgotICAgKiAyLiByZWNvcmRzIHRoZSBtZXNzYWdlIGNvcnJlY3RseS4KLSAgICogMy4gcmVjb3JkcyB0aGUgdGhyb3dhYmxlIGNvcnJlY3RseS4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RMb2dWZXJib3NlV2l0aG91dFRocm93YWJsZSgpCi0gIHsKLQlBbnRMb2dnZXIgbG9nZ2VyID0gbmV3IEFudExvZ2dlcih0YXNrKTsKLQlsb2dnZXIubG9nKCJNRVNTQUdFIiwgSUxvZ2dlci5TRVZfVkVSQk9TRSk7Ci0JCi0JYXNzZXJ0VHJ1ZSgiV2FybmluZ3Mgd2VyZSByZXBvcnRlZCB3aGVuIG9ubHkgdmVyYm9zZXMgc2hvdWxkIGhhdmUgYmVlbiByZXBvcnRlZC4iLCB0YXNrLmdldFdhcm5pbmdzKCkuaXNFbXB0eSgpKTsKLQlhc3NlcnRUcnVlKCJFcnJvcnMgd2VyZSByZXBvcnRlZCB3aGVuIG9ubHkgdmVyYm9zZXMgc2hvdWxkIGhhdmUgYmVlbiByZXBvcnRlZC4iLCB0YXNrLmdldEVycm9ycygpLmlzRW1wdHkoKSk7Ci0JYXNzZXJ0VHJ1ZSgiSW5mb3Mgd2VyZSByZXBvcnRlZCB3aGVuIG9ubHkgdmVyYm9zZXMgc2hvdWxkIGhhdmUgYmVlbiByZXBvcnRlZC4iLCB0YXNrLmdldEluZm9zKCkuaXNFbXB0eSgpKTsKLQlhc3NlcnRFcXVhbHMoIjEgdmVyYm9zZSB3YXMgbm90IHJlcG9ydGVkLiIsIDEsIHRhc2suZ2V0VmVyYm9zZXMoKS5zaXplKCkpOwotCWFzc2VydEVxdWFscygiVGhlIG1lc3NhZ2Ugd2FzIG5vdCBNRVNTQUdFLiIsICJNRVNTQUdFIiwgdGFzay5nZXRWZXJib3NlcygpLmdldCgwKSk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L0FudExvZ2dlclRlc3RUYXNrLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9BbnRMb2dnZXJUZXN0VGFzay5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzIyNDdhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L0FudExvZ2dlclRlc3RUYXNrLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLmFudDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5Qcm9qZWN0OwotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LlRhc2s7Ci0KLS8qKgotICogQSBkdW1teSB0YXNrIHRoYXQgd2lsbCBhbGxvdyB0ZXN0aW5nIG9mIHRoZSBhbmQgbG9nZ2VyLgotICovCi1wdWJsaWMgY2xhc3MgQW50TG9nZ2VyVGVzdFRhc2sgZXh0ZW5kcyBUYXNrIAotewotICBwcm90ZWN0ZWQgTGlzdCBlcnJvcnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIHByb3RlY3RlZCBMaXN0IHdhcm5pbmdzID0gbmV3IEFycmF5TGlzdCgpOwotICBwcm90ZWN0ZWQgTGlzdCBpbmZvcyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgcHJvdGVjdGVkIExpc3QgdmVyYm9zZXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUgb3JnLmFwYWNoZS50b29scy5hbnQuVGFzayNsb2coamF2YS5sYW5nLlN0cmluZywgaW50KQotICAgKi8KLSAgcHVibGljIHZvaWQgbG9nKFN0cmluZyBtc2csIGludCBtc2dMZXZlbCkgCi0gIHsKLQlpZihtc2dMZXZlbCA9PSBQcm9qZWN0Lk1TR19FUlIpCi0JewotCSAgZXJyb3JzLmFkZChtc2cpOwotCX0KLQllbHNlIGlmKG1zZ0xldmVsID09IFByb2plY3QuTVNHX1dBUk4pCi0JewotCSAgd2FybmluZ3MuYWRkKG1zZyk7Ci0JfQotCWVsc2UgaWYobXNnTGV2ZWwgPT0gUHJvamVjdC5NU0dfSU5GTykKLQl7Ci0JICBpbmZvcy5hZGQobXNnKTsKLQl9Ci0JZWxzZSBpZihtc2dMZXZlbCA9PSBQcm9qZWN0Lk1TR19WRVJCT1NFKQotCXsKLQkgIHZlcmJvc2VzLmFkZChtc2cpOwotCX0KLSAgfQotCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBvcmcuYXBhY2hlLnRvb2xzLmFudC5UYXNrI2xvZyhqYXZhLmxhbmcuU3RyaW5nKQotICAgKi8KLSAgcHVibGljIHZvaWQgbG9nKFN0cmluZyBtc2cpIAotICB7Ci0JbG9nKG1zZywgUHJvamVjdC5NU0dfSU5GTyk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIGVycm9ycyB0aGF0IHdlcmUgbG9nZ2VkLgotICAgKiAKLSAgICogQHJldHVybgotICAgKiAJCVRoZSBlcnJvcnMgdGhhdCB3ZXJlIGxvZ2dlZC4KLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEVycm9ycygpCi0gIHsKLQlyZXR1cm4gZXJyb3JzOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSB3YXJuaW5ncyB0aGF0IHdlcmUgbG9nZ2VkLgotICAgKiAKLSAgICogQHJldHVybgotICAgKiAJCVRoZSB3YXJuaW5ncyB0aGF0IHdlcmUgbG9nZ2VkLgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0V2FybmluZ3MoKQotICB7Ci0JcmV0dXJuIHdhcm5pbmdzOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBpbmZvcyB0aGF0IHdlcmUgbG9nZ2VkLgotICAgKiAKLSAgICogQHJldHVybgotICAgKiAJCVRoZSBpbmZvcyB0aGF0IHdlcmUgbG9nZ2VkLgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0SW5mb3MoKQotICB7Ci0JcmV0dXJuIGluZm9zOwotICB9Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSB2ZXJib3NlcyB0aGF0IHdlcmUgbG9nZ2VkLgotICAgKiAKLSAgICogQHJldHVybgotICAgKiAJCVRoZSB2ZXJib3NlcyB0aGF0IHdlcmUgbG9nZ2VkLgotICAgKi8KLSAgcHVibGljIExpc3QgZ2V0VmVyYm9zZXMoKQotICB7Ci0JcmV0dXJuIHZlcmJvc2VzOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9XU0RMVmFsaWRhdGVUYXNrLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9XU0RMVmFsaWRhdGVUYXNrLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxZTEzMWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS9hbnQvV1NETFZhbGlkYXRlVGFzay5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLmFudDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi0vKioKLSAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBleHBvc2UgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSBXU0RMVmFsaWRhdGUgY2xhc3MgZm9yIHRlc3RpbmcuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMVmFsaWRhdGVUYXNrIGV4dGVuZHMgV1NETFZhbGlkYXRlCi17Ci0KLSAgLyoqCi0gICAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51aS5hbnQuV1NETFZhbGlkYXRlI2dldEZpbGVMaXN0KCkKLSAgICovCi0gIHB1YmxpYyBMaXN0IGdldEZpbGVMaXN0KCkKLSAgewotICAgIHJldHVybiBzdXBlci5nZXRGaWxlTGlzdCgpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L1dTRExWYWxpZGF0ZVRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvYW50L1dTRExWYWxpZGF0ZVRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY5Nzc2NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL2FudC9XU0RMVmFsaWRhdGVUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLmFudDsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRvb2xzLmFudC5Qcm9qZWN0OwotaW1wb3J0IG9yZy5hcGFjaGUudG9vbHMuYW50LnR5cGVzLkZpbGVTZXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQudHlwZXMuc2VsZWN0b3JzLkZpbGVuYW1lU2VsZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy5pbnRlcm5hbC5CYXNlVGVzdENhc2U7Ci0KLS8qKgotICogV1NETFZhbGlkYXRlIGFudCB0YXNrIHRlc3RzLgotICovCi1wdWJsaWMgY2xhc3MgV1NETFZhbGlkYXRlVGVzdCBleHRlbmRzIEJhc2VUZXN0Q2FzZQotewotICBwcml2YXRlIFN0cmluZyBCQVNFX0RJUjs7Ci0gIHByaXZhdGUgUHJvamVjdCBwcm9qZWN0OwotCi0gLyoqCi0gICogQ3JlYXRlIGEgdGVzdHMgc3VpdGUgZnJvbSB0aGlzIHRlc3QgY2xhc3MuCi0gICogCi0gICogQHJldHVybiBBIHRlc3Qgc3VpdGUgY29udGFpbmluZyB0aGlzIHRlc3QgY2xhc3MuCi0gICovCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShXU0RMVmFsaWRhdGVUZXN0LmNsYXNzKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZSNzZXRVcCgpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIHN1cGVyLnNldFVwKCk7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgQkFTRV9ESVIgPSBQTFVHSU5fQUJTT0xVVEVfUEFUSDsKLSAgICAgIEJBU0VfRElSID0gQkFTRV9ESVIucmVwbGFjZSgnLycsIEZpbGUuc2VwYXJhdG9yQ2hhcik7Ci0gICAgICBpZihCQVNFX0RJUi5zdGFydHNXaXRoKCJcXCIpKQotICAgICAgewotICAgICAgICBCQVNFX0RJUiA9IEJBU0VfRElSLnN1YnN0cmluZygxKTsgIAotICAgICAgfQotICAgIH0KLSAgICBjYXRjaChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICAKLSAgICB9Ci0gICAgcHJvamVjdCA9IG5ldyBQcm9qZWN0KCk7Ci0gICAgcHJvamVjdC5zZXRCYXNlRGlyKG5ldyBGaWxlKEJBU0VfRElSKSk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IHRoYXQgYSBzaW5nbGUgZmlsZSB3aXRoIGEgcmVsYXRpdmUgbG9jYXRpb24gaXMgcmVzb2x2ZWQgcHJvcGVybHkuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UmVsYXRpdmVTaW5nbGVGaWxlTG9jYXRpb24oKQotICB7Ci0gICAgU3RyaW5nIGZpbGVMb2MgPSAiZmlsZS53c2RsIjsKLSAgICBTdHJpbmcgcmVzb2x2ZWRMb2NhdGlvbiA9ICgiZmlsZTovLy8iICsgQkFTRV9ESVIgKyBmaWxlTG9jKS5yZXBsYWNlKCdcXCcsJy8nKTsKLSAgICBXU0RMVmFsaWRhdGVUYXNrIHdzZGxWYWxpZGF0ZVRhc2sgPSBuZXcgV1NETFZhbGlkYXRlVGFzaygpOwotICAgIHdzZGxWYWxpZGF0ZVRhc2suc2V0UHJvamVjdChwcm9qZWN0KTsKLSAgICB3c2RsVmFsaWRhdGVUYXNrLnNldEZpbGUoZmlsZUxvYyk7Ci0gICAgTGlzdCBmaWxlTGlzdCA9IHdzZGxWYWxpZGF0ZVRhc2suZ2V0RmlsZUxpc3QoKTsKLSAgICBhc3NlcnRFcXVhbHMoIlRoZSBmaWxlIGxpc3QgZG9lcyBub3QgY29udGFpbiBvbmx5IG9uZSBmaWxlLiIsIDEsIGZpbGVMaXN0LnNpemUoKSk7Ci0gICAgLy8gVGhlIGZpbGUgbG9jYXRpb25zIGFyZSBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZSB0byBhdm9pZCBkcml2ZSBsZXR0ZXIgY2FzZSBkaWZmZXJlbmNlcyBvbiB3aW5kb3dzLiBpZS4gQyB2cyBjLgotICAgIGFzc2VydEVxdWFscygiVGhlIGZpbGUgbG9jYXRpb24gJyIgKyBmaWxlTGlzdC5nZXQoMCkgKyAiJyBpcyBub3QgY29ycmVjdGx5IHJlc29sdmVkIHRvIHRoZSBiYXNlIGxvY2F0aW9uLiIsIHJlc29sdmVkTG9jYXRpb24udG9Mb3dlckNhc2UoKSwgKChTdHJpbmcpZmlsZUxpc3QuZ2V0KDApKS50b0xvd2VyQ2FzZSgpKTsKLSAgICAKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgdGhhdCBhIHNpbmdsZSBmaWxlIHdpdGggYW4gYWJzb2x1dGUgbG9jYXRpb24gaXMgcmVzb2x2ZWQgcHJvcGVybHkuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0QWJzb2x1dGVTaW5nbGVGaWxlTG9jYXRpb24oKQotICB7Ci0gICAgU3RyaW5nIGZpbGVMb2MgPSBCQVNFX0RJUiArICJmaWxlLndzZGwiOwotICAgIFN0cmluZyByZXNvbHZlZExvY2F0aW9uID0gKEZJTEVfUFJPVE9DT0wgKyBmaWxlTG9jKS5yZXBsYWNlKCdcXCcsJy8nKTsKLSAgICBXU0RMVmFsaWRhdGVUYXNrIHdzZGxWYWxpZGF0ZVRhc2sgPSBuZXcgV1NETFZhbGlkYXRlVGFzaygpOwotICAgIHdzZGxWYWxpZGF0ZVRhc2suc2V0UHJvamVjdChwcm9qZWN0KTsKLSAgICB3c2RsVmFsaWRhdGVUYXNrLnNldEZpbGUoZmlsZUxvYyk7Ci0gICAgTGlzdCBmaWxlTGlzdCA9IHdzZGxWYWxpZGF0ZVRhc2suZ2V0RmlsZUxpc3QoKTsKLSAgICBhc3NlcnRFcXVhbHMoIlRoZSBmaWxlIGxpc3QgZG9lcyBub3QgY29udGFpbiBvbmx5IG9uZSBmaWxlLiIsIDEsIGZpbGVMaXN0LnNpemUoKSk7Ci0gICAgYXNzZXJ0RXF1YWxzKCJUaGUgZmlsZSBsb2NhdGlvbiAnIiArIGZpbGVMb2MgKyAiJyBpcyBtb2RpZmllZC4iLCByZXNvbHZlZExvY2F0aW9uLnRvTG93ZXJDYXNlKCksICgoU3RyaW5nKWZpbGVMaXN0LmdldCgwKSkudG9Mb3dlckNhc2UoKSk7Ci0gICAgCi0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IHRoYXQgYSBzaW5nbGUgZmlsZSB3aXRoIGFuIGFic29sdXRlLCByZW1vdGUgbG9jYXRpb24gaXMgcmVzb2x2ZWQgcHJvcGVybHkuCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0QWJzb2x1dGVTaW5nbGVGaWxlUmVtb3RlTG9jYXRpb24oKQotICB7Ci0gICAgU3RyaW5nIHJlc29sdmVkTG9jYXRpb24gPSAiaHR0cDovL3d3dy53cy1pLm9yZy9TYW1wbGVBcHBsaWNhdGlvbnMvU3VwcGx5Q2hhaW5NYW5hZ2VtZW50LzIwMDMtMDcvQ2F0YWxvZy53c2RsIjsKLSAgICBTdHJpbmcgZmlsZUxvYyA9ICJodHRwOi8vd3d3LndzLWkub3JnL1NhbXBsZUFwcGxpY2F0aW9ucy9TdXBwbHlDaGFpbk1hbmFnZW1lbnQvMjAwMy0wNy9DYXRhbG9nLndzZGwiOwotICAgIFdTRExWYWxpZGF0ZVRhc2sgd3NkbFZhbGlkYXRlVGFzayA9IG5ldyBXU0RMVmFsaWRhdGVUYXNrKCk7Ci0gICAgd3NkbFZhbGlkYXRlVGFzay5zZXRQcm9qZWN0KHByb2plY3QpOwotICAgIHdzZGxWYWxpZGF0ZVRhc2suc2V0RmlsZShmaWxlTG9jKTsKLSAgICBMaXN0IGZpbGVMaXN0ID0gd3NkbFZhbGlkYXRlVGFzay5nZXRGaWxlTGlzdCgpOwotICAgIGFzc2VydEVxdWFscygiVGhlIGZpbGUgbGlzdCBkb2VzIG5vdCBjb250YWluIG9ubHkgb25lIGZpbGUuIiwgMSwgZmlsZUxpc3Quc2l6ZSgpKTsKLSAgICBhc3NlcnRFcXVhbHMoIlRoZSBmaWxlIGxvY2F0aW9uICciICsgZmlsZUxvYyArICInIGlzIG1vZGlmaWVkLiIsIHJlc29sdmVkTG9jYXRpb24udG9Mb3dlckNhc2UoKSwgKChTdHJpbmcpZmlsZUxpc3QuZ2V0KDApKS50b0xvd2VyQ2FzZSgpKTsKLSAgICAKLSAgfQotICAKLS8qKgotICAgKiBUZXN0IHRoYXQgYSBzaW5nbGUgZmlsZSBpbiBhIGZpbGVzZXQgd2l0aCBhIHJlbGF0aXZlIGxvY2F0aW9uIGlzIHJlc29sdmVkIHByb3Blcmx5Ci0gICAqIHdoZW4gbm8gZGlyZWN0b3J5IGlzIHNwZWNpZmllZC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RSZWxhdGl2ZVNpbmdsZUZpbGVJbkZpbGVzZXROb0RpclNwZWNpZmllZCgpCi0gIHsKLSAgICBTdHJpbmcgZmlsZUxvYyA9ICJFbXB0eS53c2RsIjsKLSAgICBTdHJpbmcgYmFzZV9kaXIgPSBCQVNFX0RJUiArIFNBTVBMRVNfRElSICsgIldTREwiICsgRmlsZS5zZXBhcmF0b3IgKyAiU2VsZkNvbnRhaW5lZCI7Ci0gICAgU3RyaW5nIHJlc29sdmVkTG9jYXRpb24gPSAoImZpbGU6Ly8vIiArIGJhc2VfZGlyICsgIi8iICsgZmlsZUxvYykucmVwbGFjZSgnXFwnLCcvJyk7Ci0gICAgYmFzZV9kaXIgPSBiYXNlX2Rpci5yZXBsYWNlKCcvJywgRmlsZS5zZXBhcmF0b3JDaGFyKTsKLSAgICAKLSAgICBXU0RMVmFsaWRhdGVUYXNrIHdzZGxWYWxpZGF0ZVRhc2sgPSBuZXcgV1NETFZhbGlkYXRlVGFzaygpOwotICAgIHdzZGxWYWxpZGF0ZVRhc2suc2V0UHJvamVjdChwcm9qZWN0KTsKLSAgICAKLSAgICBGaWxlU2V0IGZpbGVzZXQgPSB3c2RsVmFsaWRhdGVUYXNrLmNyZWF0ZUZpbGVzZXQoKTsKLSAgICBmaWxlc2V0LnNldFByb2plY3QocHJvamVjdCk7Ci0gICAgZmlsZXNldC5zZXREaXIobmV3IEZpbGUoYmFzZV9kaXIpKTsKLSAgIAotICAgIEZpbGVuYW1lU2VsZWN0b3IgZmlsZW5hbWVTZWxlY3RvciA9IG5ldyBGaWxlbmFtZVNlbGVjdG9yKCk7Ci0gICAgZmlsZW5hbWVTZWxlY3Rvci5zZXROYW1lKGZpbGVMb2MpOwotICAgIGZpbGVzZXQuYWRkRmlsZW5hbWUoZmlsZW5hbWVTZWxlY3Rvcik7Ci0gICAgLy9maWxlc2V0LnNldEZpbGUobmV3IEZpbGUoZmlsZUxvYykpOwotICAgIAotICAgIExpc3QgZmlsZUxpc3QgPSB3c2RsVmFsaWRhdGVUYXNrLmdldEZpbGVMaXN0KCk7Ci0gICAgYXNzZXJ0RXF1YWxzKCJUaGUgZmlsZSBsaXN0IGRvZXMgbm90IGNvbnRhaW4gb25seSBvbmUgZmlsZS4iLCAxLCBmaWxlTGlzdC5zaXplKCkpOwotICAgIC8vIFRoZSBmaWxlIGxvY2F0aW9ucyBhcmUgY29udmVydGVkIHRvIGxvd2VyIGNhc2UgdG8gYXZvaWQgZHJpdmUgbGV0dGVyIGNhc2UgZGlmZmVyZW5jZXMgb24gd2luZG93cy4gaWUuIEMgdnMgYy4KLSAgICBhc3NlcnRFcXVhbHMoIlRoZSBmaWxlIGxvY2F0aW9uICciICsgZmlsZUxpc3QuZ2V0KDApICsgIicgaXMgbm90IGNvcnJlY3RseSByZXNvbHZlZCB0byB0aGUgYmFzZSBsb2NhdGlvbi4iLCByZXNvbHZlZExvY2F0aW9uLnRvTG93ZXJDYXNlKCksICgoU3RyaW5nKWZpbGVMaXN0LmdldCgwKSkudG9Mb3dlckNhc2UoKSk7Ci0gICAgCi0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvdGV4dC9XU0RMVmFsaWRhdGVUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3VpL3RleHQvV1NETFZhbGlkYXRlVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjQ1OGYyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvdGV4dC9XU0RMVmFsaWRhdGVUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLnRleHQ7Ci0KLWltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25NZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25SZXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5WYWxpZGF0aW9uTWVzc2FnZUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5WYWxpZGF0b3JSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuTG9nZ2VyRmFjdG9yeTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuU3RhbmRhcmRMb2dnZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy5pbnRlcm5hbC5CYXNlVGVzdENhc2U7Ci0KLXB1YmxpYyBjbGFzcyBXU0RMVmFsaWRhdGVUZXN0IGV4dGVuZHMgQmFzZVRlc3RDYXNlCi17CQotCVdTRExWYWxpZGF0ZVdyYXBwZXIgdmFsaWRhdGUgPSBudWxsOwotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZSNzZXRVcCgpCi0JICovCi0JcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIAotCXsKLQkJc3VwZXIuc2V0VXAoKTsKLQkJdmFsaWRhdGUgPSBuZXcgV1NETFZhbGlkYXRlV3JhcHBlcigpOwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZSN0ZWFyRG93bigpCi0JICovCi0JcHJvdGVjdGVkIHZvaWQgdGVhckRvd24oKSB0aHJvd3MgRXhjZXB0aW9uIAotCXsKLQkJdmFsaWRhdGUgPSBudWxsOwotCQlzdXBlci50ZWFyRG93bigpOwotCX0KLQkKLQkvKioKLQkgKiBUZXN0IHRoZSB2YWxpZGF0ZUZpbGUgbWV0aG9kLgotCSAqIDEuIEEgdmFsaWQgZmlsZSBzaG91bGQgcmVwb3J0IGJhY2sgdGhhdCBpdCdzIHZhbGlkLgotCSAqIDIuIEFuIGludmFsaWQgZmlsZSBzaG91bGQgcmVwb3J0IGJhY2sgdGhhdCBpdCdzIGludmFsaWQuCi0JICogMy4gQSBmaWxlIHRoYXQgY2FuJ3QgYmUgZm91bmQgc2hvdWxkIHN1Y2NlZWQgYW5kIHJlcG9ydCB0aGF0IGl0J3MgaW52YWxpZC4KLQkgKi8KLQlwdWJsaWMgdm9pZCB0ZXN0VmFsaWRhdGVGaWxlKCkKLQl7Ci0JCVN0cmluZyB2YWxpZEZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArICJQYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhWYWxpZC53c2RsIjsKLQkJaWYoUExVR0lOX0FCU09MVVRFX1BBVEguc3RhcnRzV2l0aCgiLyIpKQotCQl7Ci0JCQl2YWxpZEZpbGUgPSAiZmlsZTovLyIgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgIlBhdGhzL0FuZ2xlSGF0XkluUGF0aC9BbmdsZUhhdEluUGF0aFZhbGlkLndzZGwiOwotCQl9Ci0JCVN0cmluZyBpbnZhbGlkRmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgIlBhdGhzL0FuZ2xlSGF0XkluUGF0aC9BbmdsZUhhdEluUGF0aEludmFsaWQud3NkbCI7Ci0JCWlmKFBMVUdJTl9BQlNPTFVURV9QQVRILnN0YXJ0c1dpdGgoIi8iKSkKLQkJewotCQkJaW52YWxpZEZpbGUgPSAiZmlsZTovLyIgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgIlBhdGhzL0FuZ2xlSGF0XkluUGF0aC9BbmdsZUhhdEluUGF0aEludmFsaWQud3NkbCI7Ci0JCX0KLQkJU3RyaW5nIG5vbmV4aXN0YW50RmlsZSA9ICJub25leGlzdGFudGZpbGUud3NkbCI7Ci0JCS8vIDEuIEEgdmFsaWQgZmlsZSBzaG91bGQgcmVwb3J0IGJhY2sgdGhhdCBpdCdzIHZhbGlkLgotCQlJVmFsaWRhdGlvblJlcG9ydCByZXBvcnQgPSB2YWxpZGF0ZS52YWxpZGF0ZUZpbGUodmFsaWRGaWxlKTsKLQkJYXNzZXJ0RmFsc2UoIkVycm9ycyB3ZXJlIHJlcG9ydGVkIGZvciBhIHZhbGlkIGZpbGUuIiwgcmVwb3J0Lmhhc0Vycm9ycygpKTsKLQkJCi0JCS8vIDIuIEFuIGludmFsaWQgZmlsZSBzaG91bGQgcmVwb3J0IGJhY2sgdGhhdCBpdCdzIGludmFsaWQuCi0JCUlWYWxpZGF0aW9uUmVwb3J0IHJlcG9ydDIgPSB2YWxpZGF0ZS52YWxpZGF0ZUZpbGUoaW52YWxpZEZpbGUpOwotCQlhc3NlcnRUcnVlKCJFcnJvcnMgd2VyZSBub3QgcmVwb3J0ZWQgZm9yIGFuIGludmFsaWQgZmlsZS4iLCByZXBvcnQyLmhhc0Vycm9ycygpKTsKLQkJCi0JCS8vIDMuIEEgZmlsZSB0aGF0IGNhbid0IGJlIGZvdW5kIHNob3VsZCBzdWNjZWVkIGFuZCByZXBvcnQgdGhhdCBpdCdzIGludmFsaWQuCi0JCUlWYWxpZGF0aW9uUmVwb3J0IHJlcG9ydDMgPSB2YWxpZGF0ZS52YWxpZGF0ZUZpbGUobm9uZXhpc3RhbnRGaWxlKTsKLQkJYXNzZXJ0VHJ1ZSgiRXJyb3JzIHdlcmUgbm90IHJlcG9ydGVkIGZvciBhIG5vbmV4aXN0YW50IGZpbGUuIiwgcmVwb3J0My5oYXNFcnJvcnMoKSk7Ci0JfQotCQotCS8qKgotCSAqIFRlc3QgdGhlIHZhbGlkYXRlIG1ldGhvZC4KLQkgKiAxLiBUaGUgbWV0aG9kIHNob3VsZCBzdWNjZWVkIHdpdGggb25lIGZpbGUgc3BlY2lmaWVkLgotCSAqIDIuIFRoZSBtZXRob2Qgc2hvdWxkIHN1Y2NlZWQgYW5kIHZhbGlkYXRlIDIgZmlsZXMgd2hlbiAyIGFyZSBzcGVjaWZpZWQuCi0JICogMy4gVGhlIG1ldGhvZCBzaG91bGQgb3V0cHV0IHZlcmJvc2UgaW5mb3JtYXRpb24gZm9yIHZhbGlkIGZpbGVzIHdoZW4gdmVyYm9zZSBpcyBlbmFibGVkLgotCSAqLwotCXB1YmxpYyB2b2lkIHRlc3RWYWxpZGF0ZSgpCi0JewotCQlTdHJpbmcgdmFsaWRGaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyAiUGF0aHMvQW5nbGVIYXReSW5QYXRoL0FuZ2xlSGF0SW5QYXRoVmFsaWQud3NkbCI7Ci0JCWlmKFBMVUdJTl9BQlNPTFVURV9QQVRILnN0YXJ0c1dpdGgoIi8iKSkKLQkJewotCQkJdmFsaWRGaWxlID0gImZpbGU6Ly8iICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArICJQYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhWYWxpZC53c2RsIjsKLQkJfQotCQlTdHJpbmcgdmFsaWRGaWxlMiA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgIlBhdGhzL0FuZ2xlSGF0SW5GaWxlbmFtZS9BbmdsZUhhdF5JbkZpbGVuYW1lVmFsaWQud3NkbCI7Ci0JCWlmKFBMVUdJTl9BQlNPTFVURV9QQVRILnN0YXJ0c1dpdGgoIi8iKSkKLQkJewotCQkJdmFsaWRGaWxlMiA9ICJmaWxlOi8vIiArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyAiUGF0aHMvQW5nbGVIYXRJbkZpbGVuYW1lL0FuZ2xlSGF0XkluRmlsZW5hbWVWYWxpZC53c2RsIjsKLQkJfQotCQlJTG9nZ2VyIGN1cnJlbnRMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0TG9nZ2VyKCk7Ci0JCVdTRExWYWxpZGF0ZVRlc3RMb2dnZXIgbG9nZ2VyID0gbmV3IFdTRExWYWxpZGF0ZVRlc3RMb2dnZXIoKTsKLQkJTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLnNldExvZ2dlcihsb2dnZXIpOwotCSAgCi0JCS8vIDEuIFRoZSBtZXRob2Qgc2hvdWxkIHN1Y2NlZWQgd2l0aCBvbmUgZmlsZSBzcGVjaWZpZWQuCi0JCXZhbGlkYXRlLmdldFdTRExGaWxlcygpLmFkZCh2YWxpZEZpbGUpOwotCQl2YWxpZGF0ZS52YWxpZGF0ZSgpOwotCQlhc3NlcnRFcXVhbHMoIlZhbGlkYXRpbmcgYSBzaW5nbGUgdmFsaWQgZmlsZSBmYWlsZWQuIiwgTWVzc2FnZUZvcm1hdC5mb3JtYXQoV1NETFZhbGlkYXRlVGV4dFVJTWVzc2FnZXMuX1VJX1ZBTElEQVRJT05fU1VNTUFSWSwgbmV3IE9iamVjdFtde25ldyBJbnRlZ2VyKDEpLCBuZXcgSW50ZWdlcigwKX0pLCBsb2dnZXIuZ2V0SW5mb3MoKS5nZXQoMCkpOwotCQl2YWxpZGF0ZS5nZXRXU0RMRmlsZXMoKS5jbGVhcigpOwotCQlsb2dnZXIuZ2V0SW5mb3MoKS5jbGVhcigpOwotCSAgCi0JICAJLy8gMi4gVGhlIG1ldGhvZCBzaG91bGQgc3VjY2VlZCBhbmQgdmFsaWRhdGUgMiBmaWxlcyB3aGVuIDIgYXJlIHNwZWNpZmllZC4KLQkgIAl2YWxpZGF0ZS5nZXRXU0RMRmlsZXMoKS5hZGQodmFsaWRGaWxlKTsKLQkgIAl2YWxpZGF0ZS5nZXRXU0RMRmlsZXMoKS5hZGQodmFsaWRGaWxlMik7Ci0JICAJdmFsaWRhdGUudmFsaWRhdGUoKTsKLQkgIAlhc3NlcnRFcXVhbHMoIlZhbGlkYXRpbmcgdHdvIHZhbGlkIGZpbGVzIGZhaWxlZC4iLCBNZXNzYWdlRm9ybWF0LmZvcm1hdChXU0RMVmFsaWRhdGVUZXh0VUlNZXNzYWdlcy5fVUlfVkFMSURBVElPTl9TVU1NQVJZLCBuZXcgT2JqZWN0W117bmV3IEludGVnZXIoMiksIG5ldyBJbnRlZ2VyKDApfSksIGxvZ2dlci5nZXRJbmZvcygpLmdldCgwKSk7Ci0JICAJdmFsaWRhdGUuZ2V0V1NETEZpbGVzKCkuY2xlYXIoKTsKLQkgIAlsb2dnZXIuZ2V0SW5mb3MoKS5jbGVhcigpOwotCSAgCi0JICAJLy8gMy4gVGhlIG1ldGhvZCBzaG91bGQgb3V0cHV0IHZlcmJvc2UgaW5mb3JtYXRpb24gZm9yIHZhbGlkIGZpbGVzIHdoZW4gdmVyYm9zZSBpcyBlbmFibGVkLgotCSAgCXZhbGlkYXRlLnNldFZlcmJvc2UodHJ1ZSk7Ci0JICAJdmFsaWRhdGUuZ2V0V1NETEZpbGVzKCkuYWRkKHZhbGlkRmlsZSk7Ci0JICAJdmFsaWRhdGUudmFsaWRhdGUoKTsKLQkgIAlhc3NlcnRFcXVhbHMoIlZhbGlkYXRpbmcgYSBzaW5nbGUgdmFsaWQgZmlsZSBmYWlsZWQuIiwgTWVzc2FnZUZvcm1hdC5mb3JtYXQoV1NETFZhbGlkYXRlVGV4dFVJTWVzc2FnZXMuX1VJX0ZJTEVfVkFMSUQsIG5ldyBPYmplY3RbXXt2YWxpZEZpbGV9KSwgbG9nZ2VyLmdldFZlcmJvc2VzKCkuZ2V0KDApKTsKLQkgIAlhc3NlcnRFcXVhbHMoIlZhbGlkYXRpbmcgYSBzaW5nbGUgdmFsaWQgZmlsZSBmYWlsZWQuIiwgTWVzc2FnZUZvcm1hdC5mb3JtYXQoV1NETFZhbGlkYXRlVGV4dFVJTWVzc2FnZXMuX1VJX1ZBTElEQVRJT05fU1VNTUFSWSwgbmV3IE9iamVjdFtde25ldyBJbnRlZ2VyKDEpLCBuZXcgSW50ZWdlcigwKX0pLCBsb2dnZXIuZ2V0SW5mb3MoKS5nZXQoMCkpOwotCSAgCXZhbGlkYXRlLmdldFdTRExGaWxlcygpLmNsZWFyKCk7Ci0JICAJdmFsaWRhdGUuc2V0VmVyYm9zZShmYWxzZSk7Ci0JICAJbG9nZ2VyLmdldEluZm9zKCkuY2xlYXIoKTsKLQkgIAlsb2dnZXIuZ2V0VmVyYm9zZXMoKS5jbGVhcigpOwotCSAgCi0JICAJTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLnNldExvZ2dlcihjdXJyZW50TG9nZ2VyKTsKLQl9Ci0JCi0JLyoqCi0JICogVGVzdCB0aGUgZ2V0TWVzc2FnZXMgbWV0aG9kLgotCSAqIDEuIFRoZSBtZXRob2Qgc2hvdWxkIHJldHVybiBhIHByb3Blcmx5IGZvcm1hdHRlZCBzdHJpbmcgZm9yIGEgc2luZ2xlIGVycm9yLgotCSAqIDIuIFRoZSBtZXRob2Qgc2hvdWxkIHJldHVybiBhIHByb3Blcmx5IGZvcm1hdHRlZCBzdHJpbmcgZm9yIGEgc2luZ2xlIHdhcm5pbmcuCi0JICogMy4gVGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgcHJvcGVybHkgZm9tYXR0ZWQgc3RyaW5nIGZvciAyIG1lc3NhZ2VzLgotCSAqLwotCXB1YmxpYyB2b2lkIHRlc3RHZXRNZXNzYWdlcygpCi0JewkKLQkJSVZhbGlkYXRpb25NZXNzYWdlIGVycm9yTWVzc2FnZSA9IG5ldyBWYWxpZGF0aW9uTWVzc2FnZUltcGwoIk1FU1NBR0UiLCAxLCAyLCBJVmFsaWRhdGlvbk1lc3NhZ2UuU0VWX0VSUk9SLCAiVVJJIik7Ci0JCUlWYWxpZGF0aW9uTWVzc2FnZSB3YXJuaW5nTWVzc2FnZSA9IG5ldyBWYWxpZGF0aW9uTWVzc2FnZUltcGwoIk1FU1NBR0UiLCAxLCAyLCBJVmFsaWRhdGlvbk1lc3NhZ2UuU0VWX1dBUk5JTkcsICJVUkkiKTsKLQkJLy8gMS4gVGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgcHJvcGVybHkgZm9ybWF0dGVkIHN0cmluZyBmb3IgYSBzaW5nbGUgZXJyb3IuCi0JCUlWYWxpZGF0aW9uTWVzc2FnZVtdIGVycm9yTWVzc2FnZXMgPSBuZXcgSVZhbGlkYXRpb25NZXNzYWdlW117ZXJyb3JNZXNzYWdlfTsKLQkJU3RyaW5nIG1lc3NhZ2UgPSB2YWxpZGF0ZS5nZXRNZXNzYWdlcyhlcnJvck1lc3NhZ2VzKTsKLQkJYXNzZXJ0RXF1YWxzKCJUaGUgZXJyb3IgbWVzc2FnZSB3YXMgbm90IGNvcnJlY3QuIiwgV1NETFZhbGlkYXRlVGV4dFVJTWVzc2FnZXMuX1VJX0VSUk9SX01BUktFUiArICIgMToyIE1FU1NBR0UiLCBtZXNzYWdlKTsKLQkJCi0JCS8vIDIuIFRoZSBtZXRob2Qgc2hvdWxkIHJldHVybiBhIHByb3Blcmx5IGZvcm1hdHRlZCBzdHJpbmcgZm9yIGEgc2luZ2xlIHdhcm5pbmcuCi0JCUlWYWxpZGF0aW9uTWVzc2FnZVtdIHdhcm5pbmdNZXNzYWdlcyA9IG5ldyBJVmFsaWRhdGlvbk1lc3NhZ2VbXXt3YXJuaW5nTWVzc2FnZX07Ci0JCVN0cmluZyBtZXNzYWdlMiA9IHZhbGlkYXRlLmdldE1lc3NhZ2VzKHdhcm5pbmdNZXNzYWdlcyk7Ci0JCWFzc2VydEVxdWFscygiVGhlIHdhcm5pbmcgbWVzc2FnZSB3YXMgbm90IGNvcnJlY3QuIiwgV1NETFZhbGlkYXRlVGV4dFVJTWVzc2FnZXMuX1VJX1dBUk5JTkdfTUFSS0VSICsgIiAxOjIgTUVTU0FHRSIsIG1lc3NhZ2UyKTsKLQkJCi0JCS8vIDMuIFRoZSBtZXRob2Qgc2hvdWxkIHJldHVybiBhIHByb3Blcmx5IGZvbWF0dGVkIHN0cmluZyBmb3IgMiBtZXNzYWdlcy4KLQkJSVZhbGlkYXRpb25NZXNzYWdlW10gdHdvTWVzc2FnZXMgPSBuZXcgSVZhbGlkYXRpb25NZXNzYWdlW117ZXJyb3JNZXNzYWdlLCB3YXJuaW5nTWVzc2FnZX07Ci0JCVN0cmluZyBtZXNzYWdlMyA9IHZhbGlkYXRlLmdldE1lc3NhZ2VzKHR3b01lc3NhZ2VzKTsKLQkJYXNzZXJ0RXF1YWxzKCJUd28gbWVzc2FnZXMgd2FzIG5vdCBjb3JyZWN0LiIsIFdTRExWYWxpZGF0ZVRleHRVSU1lc3NhZ2VzLl9VSV9FUlJPUl9NQVJLRVIgKyAiIDE6MiBNRVNTQUdFXG4iICsgV1NETFZhbGlkYXRlVGV4dFVJTWVzc2FnZXMuX1VJX1dBUk5JTkdfTUFSS0VSICsgIiAxOjIgTUVTU0FHRSIsIG1lc3NhZ2UzKTsKLQl9Ci0JCi0JLyoqCi0JICogVGVzdCB0aGUgcGFyc2VBcmd1bWVudHMgbWV0aG9kLgotCSAqIDEuIC13c2RsMTF2IHBhcnNpbmcgc3VjY2VlZHMgYW5kIHJlZ2lzdGVycyB0aGUgdmFsaWRhdG9yIHdpdGggdGhlIFdTREwgdmFsaWRhdG9yLgotCSAqIDIuIC1leHR2IHBhcnNpbmcgc3VjY2VlZHMgYW5kIHJlZ2lzdGVycyB0aGUgdmFsaWRhdG9yIHdpdGggdGhlIFdTREwgdmFsaWRhdG9yLgotCSAqIDMuIEV4dGVuc2lvbiB2YWxpZGF0b3IgcGFyc2luZyB3aGVyZSBhIHBhcmFtIGlzIG9taXR0ZWQgc3VjY2VlZHMuCi0JICogNC4gLWxvZ2dlciBwYXJzaW5nIHN1Y2NlZWRzIGFuZCBzZXRzIHRoZSBjb3JyZWN0IGxvZ2dlci4KLQkgKiA1LiAtRCAocHJvcGVydHkpIHBhcnNpbmcgc3VjY2VlZHMgc2V0cyB0aGUgcHJvcGVydHkgb24gdGhlIGNvbmZpZ3VyYXRpb24uCi0JICogNi4gLXYsIC12ZXJib3NlIHBhcnNpbmcgc3VjY2VlZHMgYW5kIHNldHMgdmVyYm9zZSBjb3JyZWN0bHkuCi0JICogNy4gVGhlIHNwZWNpZmllZCBXU0RMIGZpbGVzIGFyZSByZWFkIHByb3Blcmx5LgotCSAqIAotCSAqIE5vdCBjdXJyZW50bHkgdGVzdGVkOgotCSAqIAkJLXNjaGVtYQotCSAqIAkJLXNjaGVtYURpcgotCSAqIAkJLXVyaXJlc29sdmVyCi0JICovCi0JcHVibGljIHZvaWQgdGVzdFBhcnNlQXJndW1lbnRzKCkKLQl7Ci0JCS8vIDEuIC13c2RsMTF2IHBhcnNpbmcgc3VjY2VlZHMgYW5kIHJlZ2lzdGVycyB0aGUgdmFsaWRhdG9yIHdpdGggdGhlIFdTREwgdmFsaWRhdG9yLgotCQlTdHJpbmdbXSBhcmdzMSA9IG5ldyBTdHJpbmdbXXtXU0RMVmFsaWRhdGVXcmFwcGVyLlBBUkFNX1dTREwxMVZBTCwgImh0dHA6Ly93c2RsMTF2YWxpZGF0b3IiLCAib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuaHR0cC5IVFRQVmFsaWRhdG9yIn07Ci0JCXZhbGlkYXRlLnBhcnNlQXJndW1lbnRzKGFyZ3MxKTsKLQkJYXNzZXJ0VHJ1ZSgiVGhlIFdTREwgMS4xIHZhbGlkYXRvciB3YXMgbm90IHJlZ2lzdGVyZWQuIiwgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEuVmFsaWRhdG9yUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5oYXNSZWdpc3RlcmVkVmFsaWRhdG9yKCJodHRwOi8vd3NkbDExdmFsaWRhdG9yIikpOwotCQkKLQkJLy8gMi4gLWV4dHYgcGFyc2luZyBzdWNjZWVkcyBhbmQgcmVnaXN0ZXJzIHRoZSB2YWxpZGF0b3Igd2l0aCB0aGUgV1NETCB2YWxpZGF0b3IuCi0JCVN0cmluZ1tdIGFyZ3MyID0gbmV3IFN0cmluZ1tde1dTRExWYWxpZGF0ZVdyYXBwZXIuUEFSQU1fRVhUVkFMLCAiaHR0cDovL2V4dHZhbGlkYXRvciIsICJ2YWxpZGF0b3JjbGFzcyJ9OwotCQl2YWxpZGF0ZS5wYXJzZUFyZ3VtZW50cyhhcmdzMik7Ci0JCWFzc2VydFRydWUoIlRoZSBXU0RMIGV4dGVuc2lvbiB2YWxpZGF0b3Igd2FzIG5vdCByZWdpc3RlcmVkLiIsIFZhbGlkYXRvclJlZ2lzdHJ5LmdldEluc3RhbmNlKCkuaGFzUmVnaXN0ZXJlZFZhbGlkYXRvcigiaHR0cDovL2V4dHZhbGlkYXRvciIsIFZhbGlkYXRvclJlZ2lzdHJ5LkVYVF9WQUxJREFUT1IpKTsKLQkJCi0JCS8vIDMuIEV4dGVuc2lvbiB2YWxpZGF0b3IgcGFyc2luZyB3aGVyZSBhIHBhcmFtIGlzIG9taXR0ZWQgc3VjY2VlZHMuCi0JCVN0cmluZ1tdIGFyZ3MzID0gbmV3IFN0cmluZ1tde1dTRExWYWxpZGF0ZVdyYXBwZXIuUEFSQU1fRVhUVkFMLCAiaHR0cDovL2V4dHZhbGlkYXRvcjIiLCAiLWR1bW15cGFyYW0ifTsKLQkJdmFsaWRhdGUucGFyc2VBcmd1bWVudHMoYXJnczMpOwotCQlhc3NlcnRGYWxzZSgiVGhlIFdTREwgZXh0ZW5zaW9uIHZhbGlkYXRvciB3YXMgcmVnaXN0ZXJlZCB3aXRob3V0IGVub3VnaCBpbmZvcm1hdGlvbi4iLCBWYWxpZGF0b3JSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmhhc1JlZ2lzdGVyZWRWYWxpZGF0b3IoImh0dHA6Ly9leHR2YWxpZGF0b3IyIiwgVmFsaWRhdG9yUmVnaXN0cnkuRVhUX1ZBTElEQVRPUikpOwotCQkKLQkJLy8gNC4gLWxvZ2dlciBwYXJzaW5nIHN1Y2NlZWRzIGFuZCBzZXRzIHRoZSBjb3JyZWN0IGxvZ2dlci4KLQkJSUxvZ2dlciBjdXJyZW50TG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldExvZ2dlcigpOwotCQlTdHJpbmdbXSBhcmdzNCA9IG5ldyBTdHJpbmdbXXtXU0RMVmFsaWRhdGVXcmFwcGVyLlBBUkFNX0xPR0dFUiwgIm9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwubG9nZ2luZy5TdGFuZGFyZExvZ2dlciJ9OwotCQl2YWxpZGF0ZS5wYXJzZUFyZ3VtZW50cyhhcmdzNCk7Ci0JCWFzc2VydFRydWUoIlRoZSByZWdpc3RlcmVkIGxvZ2dlciBpcyBub3QgYSBTdGFuZGFyZExvZ2dlciIsIExvZ2dlckZhY3RvcnkuZ2V0SW5zdGFuY2UoKS5nZXRMb2dnZXIoKSBpbnN0YW5jZW9mIFN0YW5kYXJkTG9nZ2VyKTsKLQkJYXNzZXJ0RmFsc2UoIlRoZSByZWdpc3RlcmVkIGxvZ2dlciBpcyB0aGUgc2FtZSBhcyBvcmlnaW5hbGx5IHJlZ2lzdGVyZWQuIiwgY3VycmVudExvZ2dlci5lcXVhbHMoTG9nZ2VyRmFjdG9yeS5nZXRJbnN0YW5jZSgpLmdldExvZ2dlcigpKSk7Ci0JCUxvZ2dlckZhY3RvcnkuZ2V0SW5zdGFuY2UoKS5zZXRMb2dnZXIoY3VycmVudExvZ2dlcik7Ci0JCQotCQkvLyA1LiAtRCAocHJvcGVydHkpIHBhcnNpbmcgc3VjY2VlZHMgc2V0cyB0aGUgcHJvcGVydHkgb24gdGhlIGNvbmZpZ3VyYXRpb24uCi0JCVN0cmluZ1tdIGFyZ3M1ID0gbmV3IFN0cmluZ1tde1dTRExWYWxpZGF0ZVdyYXBwZXIuUEFSQU1fUFJPUEVSVFkgKyAiU0FNUExFTkFNRT1TQU1QTEVWQUxVRSJ9OwotCQl2YWxpZGF0ZS5wYXJzZUFyZ3VtZW50cyhhcmdzNSk7Ci0JCWFzc2VydEVxdWFscygiVGhlIHBhcmFtZXRlciB3YXMgbm90IHNldCBjb3JyZWN0bHkuIiwgIlNBTVBMRVZBTFVFIiwgdmFsaWRhdGUuZ2V0Q29uZmlndXJhdGlvbigpLmdldFByb3BlcnR5KCJTQU1QTEVOQU1FIikpOwotCQkKLQkJLy8gNi4gLXYsIC12ZXJib3NlIHBhcnNpbmcgc3VjY2VlZHMgYW5kIHNldHMgdmVyYm9zZSBjb3JyZWN0bHkuCi0JCVN0cmluZ1tdIGFyZ3M2ID0gbmV3IFN0cmluZ1tde1dTRExWYWxpZGF0ZVdyYXBwZXIuUEFSQU1fVkVSQk9TRX07Ci0JCXZhbGlkYXRlLnNldFZlcmJvc2UoZmFsc2UpOwotCQl2YWxpZGF0ZS5wYXJzZUFyZ3VtZW50cyhhcmdzNik7Ci0JCWFzc2VydFRydWUoIlZlcmJvc2UgaXMgbm90IHNldCB0byB0cnVlLiIsIHZhbGlkYXRlLmlzVmVyYm9zZSgpKTsKLQkJCi0JCVN0cmluZ1tdIGFyZ3M2YSA9IG5ldyBTdHJpbmdbXXtXU0RMVmFsaWRhdGVXcmFwcGVyLlBBUkFNX1ZFUkJPU0VfU0hPUlR9OwotCQl2YWxpZGF0ZS5zZXRWZXJib3NlKGZhbHNlKTsKLQkJdmFsaWRhdGUucGFyc2VBcmd1bWVudHMoYXJnczZhKTsKLQkJYXNzZXJ0VHJ1ZSgiVmVyYm9zZSBpcyBub3Qgc2V0IHRvIHRydWUuIiwgdmFsaWRhdGUuaXNWZXJib3NlKCkpOwotCQkKLQkJLy8gNy4gVGhlIHNwZWNpZmllZCBXU0RMIGZpbGVzIGFyZSByZWFkIHByb3Blcmx5LgotCQlTdHJpbmdbXSBhcmdzNyA9IG5ldyBTdHJpbmdbXXsiZmlsZW5hbWUxLndzZGwiLCAiZm9sZGVyL2ZpbGVuYW1lMi53c2RsIiwgImZvbGRlclxmaWxlbmFtZTMud3NkbCJ9OwotCQl2YWxpZGF0ZS5wYXJzZUFyZ3VtZW50cyhhcmdzNyk7Ci0JCUxpc3Qgd3NkbEZpbGVzID0gdmFsaWRhdGUuZ2V0V1NETEZpbGVzKCk7Ci0JCWFzc2VydEVxdWFscygiVGhlcmUgd2VyZSBub3QgMyBXU0RMIGZpbGVzIGxpc3RlZCB0byB2YWxpZGF0ZS4iLCAzLCB3c2RsRmlsZXMuc2l6ZSgpKTsKLQkJYXNzZXJ0VHJ1ZSgiVGhlIFdTREwgZmlsZSBsaXN0IGRpZCBub3QgaW5jbHVkZSBmaWxlbmFtZTEud3NkbCIsIHdzZGxGaWxlcy5jb250YWlucygiZmlsZW5hbWUxLndzZGwiKSk7Ci0JCWFzc2VydFRydWUoIlRoZSBXU0RMIGZpbGUgbGlzdCBkaWQgbm90IGluY2x1ZGUgZm9sZGVyL2ZpbGVuYW1lMi53c2RsIiwgd3NkbEZpbGVzLmNvbnRhaW5zKCJmb2xkZXIvZmlsZW5hbWUyLndzZGwiKSk7Ci0JCWFzc2VydFRydWUoIlRoZSBXU0RMIGZpbGUgbGlzdCBkaWQgbm90IGluY2x1ZGUgZm9sZGVyXGZpbGVuYW1lMy53c2RsIiwgd3NkbEZpbGVzLmNvbnRhaW5zKCJmb2xkZXJcZmlsZW5hbWUzLndzZGwiKSk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L1dTRExWYWxpZGF0ZVRlc3RMb2dnZXIuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvdGV4dC9XU0RMVmFsaWRhdGVUZXN0TG9nZ2VyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNTJhNGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L1dTRExWYWxpZGF0ZVRlc3RMb2dnZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudWkudGV4dDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlcjsKLQotLyoqCi0gKiBBIGhlbHBlciBjbGFzcyBmb3IgdGVzdGluZyB0aGF0IGFsbG93cyBhY2Nlc3MgdG8gdGhlIG1lc3NhZ2VzIGxvZ2dlZC4KLSAqLwotcHVibGljIGNsYXNzIFdTRExWYWxpZGF0ZVRlc3RMb2dnZXIgaW1wbGVtZW50cyBJTG9nZ2VyIHsKLQotCXByb3RlY3RlZCBMaXN0IGVycm9ycyA9IG5ldyBBcnJheUxpc3QoKTsKLQlwcm90ZWN0ZWQgTGlzdCB3YXJuaW5ncyA9IG5ldyBBcnJheUxpc3QoKTsKLQlwcm90ZWN0ZWQgTGlzdCBpbmZvcyA9IG5ldyBBcnJheUxpc3QoKTsKLQlwcm90ZWN0ZWQgTGlzdCB2ZXJib3NlcyA9IG5ldyBBcnJheUxpc3QoKTsKLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLmxvZ2dpbmcuSUxvZ2dlciNsb2coamF2YS5sYW5nLlN0cmluZywgaW50KQotCSAqLwotCXB1YmxpYyB2b2lkIGxvZyhTdHJpbmcgbWVzc2FnZSwgaW50IHNldmVyaXR5KSAKLQl7Ci0JCWlmKHNldmVyaXR5ID09IElMb2dnZXIuU0VWX0VSUk9SKQotCQl7Ci0JCQllcnJvcnMuYWRkKG1lc3NhZ2UpOwotCQl9Ci0JCWVsc2UgaWYoc2V2ZXJpdHkgPT0gSUxvZ2dlci5TRVZfV0FSTklORykKLQkJewotCQkJd2FybmluZ3MuYWRkKG1lc3NhZ2UpOwotCQl9Ci0JCWVsc2UgaWYoc2V2ZXJpdHkgPT0gSUxvZ2dlci5TRVZfSU5GTykKLQkJewotCQkJaW5mb3MuYWRkKG1lc3NhZ2UpOwotCQl9Ci0JCWVsc2UgaWYoc2V2ZXJpdHkgPT0gSUxvZ2dlci5TRVZfVkVSQk9TRSkKLQkJewotCQkJdmVyYm9zZXMuYWRkKG1lc3NhZ2UpOwotCQl9Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5sb2dnaW5nLklMb2dnZXIjbG9nKGphdmEubGFuZy5TdHJpbmcsIGludCwgamF2YS5sYW5nLlRocm93YWJsZSkKLQkgKi8KLQlwdWJsaWMgdm9pZCBsb2coU3RyaW5nIG1lc3NhZ2UsIGludCBzZXZlcml0eSwgVGhyb3dhYmxlIHRocm93YWJsZSkgCi0JewotCQlsb2cobWVzc2FnZSwgc2V2ZXJpdHkpOwotCQlsb2codGhyb3dhYmxlLnRvU3RyaW5nKCksIHNldmVyaXR5KTsKLQl9Ci0JCi0JLyoqCi0JICogR2V0IHRoZSBlcnJvciBsaXN0LgotCSAqIAotCSAqIEByZXR1cm4KLQkgKiAJCVRoZSBlcnJvciBsaXN0LgotCSAqLwotCXB1YmxpYyBMaXN0IGdldEVycm9ycygpCi0JewotCQlyZXR1cm4gZXJyb3JzOwotCX0KLQkKLQkvKioKLQkgKiBHZXQgdGhlIHdhcm5pbmcgbGlzdC4KLQkgKiAKLQkgKiBAcmV0dXJuCi0JICogCQlUaGUgd2FybmluZyBsaXN0LgotCSAqLwotCXB1YmxpYyBMaXN0IGdldFdhcm5pbmdzKCkKLQl7Ci0JCXJldHVybiB3YXJuaW5nczsKLQl9Ci0JCi0JLyoqCi0JICogR2V0IHRoZSBpbmZvIGxpc3QuCi0JICogCi0JICogQHJldHVybgotCSAqIAkJVGhlIGluZm8gbGlzdC4KLQkgKi8KLQlwdWJsaWMgTGlzdCBnZXRJbmZvcygpCi0JewotCQlyZXR1cm4gaW5mb3M7Ci0JfQotCi0JLyoqCi0JICogR2V0IHRoZSB2ZXJib3NlIGxpc3QuCi0JICogCi0JICogQHJldHVybgotCSAqIAkJVGhlIHZlcmJvc2UgbGlzdC4KLQkgKi8KLQlwdWJsaWMgTGlzdCBnZXRWZXJib3NlcygpCi0JewotCQlyZXR1cm4gdmVyYm9zZXM7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L1dTRExWYWxpZGF0ZVdyYXBwZXIuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwvdWkvdGV4dC9XU0RMVmFsaWRhdGVXcmFwcGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNDA3YmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC91aS90ZXh0L1dTRExWYWxpZGF0ZVdyYXBwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudWkudGV4dDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvbk1lc3NhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvblJlcG9ydDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLldTRExWYWxpZGF0aW9uQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLldTRExWYWxpZGF0b3I7Ci0KLS8qKgotICogQSB3cmFwcGVyIGNsYXNzIG9mIFdTRExWYWxpZGF0ZSB0aGF0IGV4cG9zZXMgaW50ZXJuYWxzIGZvciB0ZXN0aW5nLgotICovCi1wdWJsaWMgY2xhc3MgV1NETFZhbGlkYXRlV3JhcHBlciBleHRlbmRzIFdTRExWYWxpZGF0ZSAKLXsKLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwudWkudGV4dC5XU0RMVmFsaWRhdGUjZ2V0TWVzc2FnZXMob3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5JVmFsaWRhdGlvbk1lc3NhZ2VbXSkKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2VzKElWYWxpZGF0aW9uTWVzc2FnZVtdIG1lc3NhZ2VzKSAKLQl7Ci0JCXJldHVybiBzdXBlci5nZXRNZXNzYWdlcyhtZXNzYWdlcyk7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51aS50ZXh0LldTRExWYWxpZGF0ZSNwYXJzZUFyZ3VtZW50cyhqYXZhLmxhbmcuU3RyaW5nW10pCi0JICovCi0JcHVibGljIHZvaWQgcGFyc2VBcmd1bWVudHMoU3RyaW5nW10gYXJncykgCi0JewotCQlzdXBlci5wYXJzZUFyZ3VtZW50cyhhcmdzKTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLnRleHQuV1NETFZhbGlkYXRlI3ZhbGlkYXRlKCkKLQkgKi8KLQlwdWJsaWMgdm9pZCB2YWxpZGF0ZSgpIAotCXsKLQkJc3VwZXIudmFsaWRhdGUoKTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLnRleHQuV1NETFZhbGlkYXRlI3ZhbGlkYXRlRmlsZShqYXZhLmxhbmcuU3RyaW5nKQotCSAqLwotCXB1YmxpYyBJVmFsaWRhdGlvblJlcG9ydCB2YWxpZGF0ZUZpbGUoU3RyaW5nIGZpbGVuYW1lKSAKLQl7Ci0JCXJldHVybiBzdXBlci52YWxpZGF0ZUZpbGUoZmlsZW5hbWUpOwotCX0KLQkKLQkvKioKLQkgKiBHZXQgdGhlIGludGVybmFsIFdTREwgdmFsaWRhdG9yLgotCSAqIAotCSAqIEByZXR1cm4KLQkgKiAJCVRoZSBpbnRlcm5hbCBXU0RMIHZhbGlkYXRvci4KLQkgKi8KLQlwdWJsaWMgV1NETFZhbGlkYXRvciBnZXRXU0RMVmFsaWRhdG9yKCkKLQl7Ci0JCXJldHVybiB3c2RsVmFsaWRhdG9yOwotCX0KLQkKLQkvKioKLQkgKiBHZXQgdGhlIFdTREwgdmFsaWRhdGlvbiBjb25maWd1cmF0aW9uLgotCSAqIAotCSAqIEByZXR1cm4KLQkgKiAJCVRoZSBXU0RMIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbi4KLQkgKi8KLQlwdWJsaWMgV1NETFZhbGlkYXRpb25Db25maWd1cmF0aW9uIGdldENvbmZpZ3VyYXRpb24oKQotCXsKLQkJcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci0JfQotCQotCS8qKgotCSAqIEdldCB0aGUgbGlzdCBvZiBXU0RMIGZpbGVzIHRvIHZhbGlkYXRlLgotCSAqIAotCSAqIEByZXR1cm4KLQkgKiAJCVRoZSBsaXN0IG9mIFdTREwgZmlsZXMgdG8gdmFsaWRhdGUuCi0JICovCi0JcHVibGljIExpc3QgZ2V0V1NETEZpbGVzKCkKLQl7Ci0JCXJldHVybiB3c2RsRmlsZXM7Ci0JfQotCQotCS8qKgotCSAqIFJldHVybnMgdHJ1ZSBpZiB2ZXJib3NlIGlzIG9uLCBmYWxzZSBvdGhlcndpc2UuCi0JICogCi0JICogQHJldHVybgotCSAqIAkJVHJ1ZSBpZiB2ZXJib3NlIGlzIG9uLCBmYWxzZSBvdGhlcndpc2UuCi0JICovCi0JcHVibGljIGJvb2xlYW4gaXNWZXJib3NlKCkKLQl7Ci0JCXJldHVybiB2ZXJib3NlOwotCX0KLQkKLQkvKioKLQkgKiBTZXQgd2hldGhlciByZXBvcnRpbmcgc2hvdWxkIGJlIGRvbmUgaW4gYSB2ZXJib3NlIHdheS4KLQkgKiAKLQkgKiBAcGFyYW0gdmVyYm9zZQotCSAqIAkJSWYgdHJ1ZSByZXBvcnRpbmcgd2lsbCBiZSBkb25lIGluIGEgdmVyYm9zZSB3YXksIG90aGVyd2lzZSBpdCB3aWxsIG5vdC4KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRWZXJib3NlKGJvb2xlYW4gdmVyYm9zZSkKLQl7Ci0JCXRoaXMudmVyYm9zZSA9IHZlcmJvc2U7Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvSW5saW5lU2NoZW1hR2VuZXJhdG9yVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEveHNkL0lubGluZVNjaGVtYUdlbmVyYXRvclRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA3OTBhNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvSW5saW5lU2NoZW1hR2VuZXJhdG9yVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnhlcmNlcy5kb20uRG9jdW1lbnRJbXBsOwotaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OwotaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7Ci0KLWltcG9ydCBjb20uaWJtLndzZGwuQ29uc3RhbnRzOwotaW1wb3J0IGNvbS5pYm0ud3NkbC5leHRlbnNpb25zLnNjaGVtYS5TY2hlbWFDb25zdGFudHM7Ci0KLS8qKgotICogVGVzdHMgZm9yIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZC5JbmxpbmVTY2hlbWFHZW5lcmF0b3IuCi0gKgotICovCi1wdWJsaWMgY2xhc3MgSW5saW5lU2NoZW1hR2VuZXJhdG9yVGVzdCBleHRlbmRzIFRlc3RDYXNlIAotewotICBwcml2YXRlIElubGluZVNjaGVtYUdlbmVyYXRvcldyYXBwZXIgZ2VuZXJhdG9yOwotICAKLSAgLyoqCi0gICAqIENyZWF0ZSBhIHRlc3RzIHN1aXRlIGZyb20gdGhpcyB0ZXN0IGNsYXNzLgotICAgKiAKLSAgICogQHJldHVybiBBIHRlc3Qgc3VpdGUgY29udGFpbmluZyB0aGlzIHRlc3QgY2xhc3MuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0JcmV0dXJuIG5ldyBUZXN0U3VpdGUoSW5saW5lU2NoZW1hR2VuZXJhdG9yVGVzdC5jbGFzcyk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBKVW5pdCBzZXR1cCBtZXRob2QuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRVcCgpCi0gIHsKLQlnZW5lcmF0b3IgPSBuZXcgSW5saW5lU2NoZW1hR2VuZXJhdG9yV3JhcHBlcigpOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCB0aGF0IGNoZWNrU09BUEVuY29kaW5nUmVxdWlyZWQgbWV0aG9kLgotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdENoZWNrU09BUEVuY29kaW5nUmVxdWlyZWQoKQotICB7Ci0JLy8gVGVzdCBlbXB0eSBsaXN0LgotCWFzc2VydEZhbHNlKCJUaGUgbWV0aG9kIGRvZXMgbm90IHJldHVybiBmYWxzZSB3aGVuIGdpdmVuIGFuIGVtcHR5IGxpc3QuIiwgZ2VuZXJhdG9yLmNoZWNrU09BUEVuY29kaW5nUmVxdWlyZWQobmV3IEFycmF5TGlzdCgpKSk7Ci0JCi0JLy8gVGVzdCB0aGF0IGNoZWNrU09BUEVuY29kaW5nUmVxdWlyZWQgcmV0dXJucyBmYWxzZQotCS8vIHdoZW4gZ2l2ZW4gYSBsaXN0IHdpdGhvdXQgdGhlIFNPQVAgZW5jb2RpbmcgbmFtZXNwYWNlLgotCUxpc3QgbGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKLQlsaXN0LmFkZCgiaHR0cDovL25vdHNvYXBlbmNvZGluZ25hbWVzcGFjZSIpOwotCWFzc2VydEZhbHNlKCJUaGUgbWV0aG9kIGRvZXMgbm90IHJldHVybiBmYWxzZSB3aGVuIGdpdmVuIGEgbGlzdCB3aXRob3V0IHRoZSBTT0FQIGVudmVsb3BlIG5hbWVzcGFjZS4iLCBnZW5lcmF0b3IuY2hlY2tTT0FQRW5jb2RpbmdSZXF1aXJlZChsaXN0KSk7Ci0JCi0JLy8gVGVzdCB0aGF0IGNoZWNrU09BUEVuY29kaW5nUmVxdWlyZWQgcmV0dXJucyB0cnVlCi0JLy8gd2hlbiBnaXZlbiBhIGxpc3Qgd2l0aCB0aGUgU09BUCBlbmNvZGluZyBuYW1lc3BhY2UuCi0JTGlzdCBsaXN0MiA9IG5ldyBBcnJheUxpc3QoKTsKLQlsaXN0Mi5hZGQoSW5saW5lU2NoZW1hR2VuZXJhdG9yV3JhcHBlci5TT0FQX0VOQ09ESU5HX1VSSSk7Ci0JYXNzZXJ0VHJ1ZSgiVGhlIG1ldGhvZCBkb2VzIG5vdCByZXR1cm4gdHJ1ZSB3aGVuIGdpdmVuIGEgbGlzdCB3aXRoIHRoZSBTT0FQIGVuY29kaW5nIG5hbWVzcGFjZS4iLCBnZW5lcmF0b3IuY2hlY2tTT0FQRW5jb2RpbmdSZXF1aXJlZChsaXN0MikpOwotICB9Ci0gIAotICAvKioKLSAgICogVE9ETzogSW1wbGVtZW50IHRlc3RzIGZvciB0aGUgQ3JlYXRlWFNEU3RyaW5nUmVjdXJzaXZlbHkgbWV0aG9kLgotICAgKi8KLSAgcHVibGljIHZvaWQgdG9kb0NyZWF0ZVhTRFN0cmluZ1JlY3Vyc2l2ZWx5KCkgCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiBUT0RPOiBJbXBsZW1lbnQgdGVzdHMgZm9yIHRoZSBHZXRJbXBvcnROYW1lc3BhY2UgbWV0aG9kLgotICAgKi8KLSAgcHVibGljIHZvaWQgdG9kb0dldEltcG9ydE5hbWVzcGFjZXMoKSAKLSAgewotICB9Ci0KLSAgLyoqCi0gICAJKiBUZXN0IHRoYXQgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgY29ycmVjdCBuYW1lc3BhY2UKLSAgIAkqIHJlc29sdmVyLgotICAgCSovCi0gIHB1YmxpYyB2b2lkIHRlc3RHZXROU1Jlc29sdmVyKCkgCi0gIHsKLSAgICBEb2N1bWVudCBkb2MgPSBuZXcgRG9jdW1lbnRJbXBsKCk7Ci0JRWxlbWVudCByb290RWxlbSA9IGRvYy5jcmVhdGVFbGVtZW50TlMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMSwgInNjaGVtYSIpOwotCi0JLy8gQ2hlY2sgdGhhdCB0aGUgcmVzb2x2ZXIgaXMgZW1wdHkuCi0JSGFzaHRhYmxlIHJlc29sdmVyID0gZ2VuZXJhdG9yLmdldE5TUmVzb2x2ZXIocm9vdEVsZW0pOwotCWFzc2VydFRydWUoIlRoZSByZXNvbHZlciBpcyBub3QgZW1wdHkuIiwgcmVzb2x2ZXIuaXNFbXB0eSgpKTsKLQkKLQkvLyBDaGVjayB0aGUgcmVzb2x2ZXIgY29udGFpbnMgb25lIHZhbHVlLgotCXJvb3RFbGVtLnNldEF0dHJpYnV0ZSgieG1sbnMiLCBTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxKTsKLQlyZXNvbHZlciA9IGdlbmVyYXRvci5nZXROU1Jlc29sdmVyKHJvb3RFbGVtKTsKLQlhc3NlcnRUcnVlKCJUaGUgcmVzb2x2ZXIgZG9lcyBub3QgY29udGFpbiB0aGUgZW1wdHkgbmFtZXNwYWNlLiIsIHJlc29sdmVyLmNvbnRhaW5zS2V5KCIiKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgcmVzb2x2ZXIgZG9lcyBub3QgY29udGFpbiB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhlIGVtcHR5IG5hbWVzcGFjZS4iLCBTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxLCByZXNvbHZlci5nZXQoIiIpKTsKLQkKLQkvLyBDaGVjayB0aGUgcmVzb2x2ZXIgY29udGFpbnMgdHdvIHZhbHVlcy4KLQlyb290RWxlbS5zZXRBdHRyaWJ1dGUoInhtbG5zOm90aGVyIiwgImh0dHA6Ly9vdGhlcm5hbWVzcGFjZSIpOwotCXJlc29sdmVyID0gZ2VuZXJhdG9yLmdldE5TUmVzb2x2ZXIocm9vdEVsZW0pOwotCWFzc2VydFRydWUoIlRoZSByZXNvbHZlciBkb2VzIG5vdCBjb250YWluIHRoZSBvdGhlciBuYW1lc3BhY2UuIiwgcmVzb2x2ZXIuY29udGFpbnNLZXkoIm90aGVyIikpOwotCWFzc2VydEVxdWFscygiVGhlIHJlc29sdmVyIGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvcnJlY3QgdmFsdWUgZm9yIHRoZSBvdGhlciBuYW1lc3BhY2UuIiwgImh0dHA6Ly9vdGhlcm5hbWVzcGFjZSIsIHJlc29sdmVyLmdldCgib3RoZXIiKSk7Ci0JCi0JLy8gQ2hlY2sgdGhlIHJlc29sdmVyIHN0aWxsIGNvbnRhaW5zIHRoZSBlbXB0eSBuYW1lc3BhY2UuCi0JYXNzZXJ0VHJ1ZSgiVGhlIHJlc29sdmVyIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVtcHR5IG5hbWVzcGFjZSBhZnRlciBhZGRpbmcgYSBzZWNvbmQgbmFtZXNwYWNlLiIsIHJlc29sdmVyLmNvbnRhaW5zS2V5KCIiKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgcmVzb2x2ZXIgZG9lcyBub3QgY29udGFpbiB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhlIGVtcHR5IG5hbWVzcGFjZSBhZnRlciBhZGRpbmcgYSBzZWNvbmQgbmFtZXNwYWNlLiIsIFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEsIHJlc29sdmVyLmdldCgiIikpOwotCQotCS8vIENoZWNrIHRoZSByZXNvbHZlciBkb2Vzbid0IGNvbnRhaW4gbm9uLXhtbG5zIGF0dHJpYnV0ZSB2YWx1ZS4KLQlyb290RWxlbS5zZXRBdHRyaWJ1dGUoInR5cGU6b3RoZXIyIiwgIm90aGVyMjp0eXBlIik7Ci0JcmVzb2x2ZXIgPSBnZW5lcmF0b3IuZ2V0TlNSZXNvbHZlcihyb290RWxlbSk7Ci0JYXNzZXJ0RmFsc2UoIlRoZSByZXNvbHZlciBjb250YWlucyB0aGUgb3RoZXIyIG5hbWVzcGFjZS4iLCByZXNvbHZlci5jb250YWluc0tleSgib3RoZXIyIikpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRlc3QgdGhhdCB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSByZXF1aXJlZCBwcmVmaXhlcy4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RHZXRQcmVmaXhlcygpIAotICB7Ci0JLy8gQ2hlY2sgZG9jdW1lbnQgdGhhdCBjb250YWlucyBubyByZXF1aXJlZCBuYW1lc3BhY2VzIGFuZCBubyBwcmVmaXguCi0JRG9jdW1lbnQgZG9jID0gbmV3IERvY3VtZW50SW1wbCgpOwotCUVsZW1lbnQgcm9vdEVsZW0gPSBkb2MuY3JlYXRlRWxlbWVudE5TKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEsICJzY2hlbWEiKTsKLQlyb290RWxlbS5zZXRBdHRyaWJ1dGUoInhtbG5zIixTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxKTsKLQkvL2RvYy5hcHBlbmRDaGlsZChyb290RWxlbSk7Ci0JCi0JTGlzdCByZXFOU3MgPSBnZW5lcmF0b3IuZ2V0TmFtZXNwYWNlUHJlZml4ZXMocm9vdEVsZW0pOwotCWFzc2VydEVxdWFscygiVGhlIHJlcXVpcmVkIG5hbWVzcGFjZSBsaXN0IGRvZXMgbm90IGNvbnRhaW4gb25lIGVtcHR5IHN0cmluZy4iLCAxLCByZXFOU3Muc2l6ZSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSByZXF1aXJlZCBuYW1lc3BhY2UgbGlzdCBkb2VzIG5vdCBjb250YWluIG9uZSBlbXB0eSBzdHJpbmcuIiwgIiIsIHJlcU5Tcy5nZXQoMCkpOwotCQotCS8vIENoZWNrIGRvY3VtZW50IHRoYXQgY29udGFpbnMgbm8gcmVxdWlyZWQgbmFtZXNwYWNlcyBhbmQgdGhlIHhzZCBwcmVmaXguCi0JRWxlbWVudCByb290RWxlbTIgPSBkb2MuY3JlYXRlRWxlbWVudE5TKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEsICJ4c2Q6c2NoZW1hIik7Ci0Jcm9vdEVsZW0yLnNldEF0dHJpYnV0ZSgieG1sbnM6eHNkIixTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxKTsKLQlMaXN0IHJlcU5TczIgPSBnZW5lcmF0b3IuZ2V0TmFtZXNwYWNlUHJlZml4ZXMocm9vdEVsZW0yKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSByZXF1aXJlZCBuYW1lc3BhY2UgbGlzdCBkb2VzIG5vdCBjb250YWluIHRoZSBvbmUgc3RyaW5nICd4c2QnLiIsIDEsIHJlcU5TczIuc2l6ZSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSByZXF1aXJlZCBuYW1lc3BhY2UgbGlzdCBkb2VzIG5vdCBjb250YWluIHRoZSBvbmUgc3RyaW5nICd4c2QnLiIsICJ4c2QiLCByZXFOU3MyLmdldCgwKSk7Ci0JCi0JLy8gQ2hlY2sgZG9jdW1lbnQgdGhhdCBjb250YWlucyBhbiBlbGVtZW50IHdpdGggYSByZXF1aXJlZCBuYW1lc3BhY2UuCi0JRWxlbWVudCByb290RWxlbTQgPSBkb2MuY3JlYXRlRWxlbWVudE5TKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEsICJ4c2Q6c2NoZW1hIik7Ci0Jcm9vdEVsZW0yLnNldEF0dHJpYnV0ZSgieG1sbnM6eHNkIixTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxKTsKLQlFbGVtZW50IGRpZmZOU0VsZW0gPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vb3RoZXJuYW1lc3BhY2UiLCAib3RoZXI6ZWxlbWVudCIpOwotCXJvb3RFbGVtNC5hcHBlbmRDaGlsZChkaWZmTlNFbGVtKTsKLQlMaXN0IHJlcU5TczQgPSBnZW5lcmF0b3IuZ2V0TmFtZXNwYWNlUHJlZml4ZXMocm9vdEVsZW00KTsKLQlhc3NlcnRUcnVlKCJUaGUgcmVxdWlyZWQgbmFtZXNwYWNlIGxpc3QgZG9lcyBub3QgY29udGFpbiB0aGUgcHJlZml4ICdvdGhlcicgd2hlbiB0aGUgbmFtZXNwYWNlIGlzIHNwZWNpZmllZCBmb3IgYW4gZWxlbWVudC4iLCByZXFOU3M0LmNvbnRhaW5zKCJvdGhlciIpKTsKLQkKLQkvLyBDaGVjayBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIGEgdHlwZSB3aXRoIGEgcmVxdWlyZWQgbmFtZXNwYWNlLgotCUVsZW1lbnQgcm9vdEVsZW01ID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxLCAieHNkOnNjaGVtYSIpOwotCXJvb3RFbGVtNS5zZXRBdHRyaWJ1dGUoInhtbG5zOnhzZCIsU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMSk7Ci0JRWxlbWVudCBvdGhlckVsZW0gPSBkb2MuY3JlYXRlRWxlbWVudE5TKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEsICJ4c2Q6ZWxlbWVudCIpOwotCW90aGVyRWxlbS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAib3RoZXI6dHlwZSIpOwotCXJvb3RFbGVtNS5hcHBlbmRDaGlsZChvdGhlckVsZW0pOwotCUxpc3QgcmVxTlNzNSA9IGdlbmVyYXRvci5nZXROYW1lc3BhY2VQcmVmaXhlcyhyb290RWxlbTUpOwotCWFzc2VydFRydWUoIlRoZSByZXF1aXJlZCBuYW1lc3BhY2UgbGlzdCBkb2VzIG5vdCBjb250YWluICdvdGhlcicgd2hlbiB0aGUgbmFtZXNwYWNlIGlzIHNwZWNpZmllZCBmb3IgYSB0eXBlLiIsIHJlcU5TczUuY29udGFpbnMoIm90aGVyIikpOwotCQotCS8vIENoZWNrIGRvY3VtZW50IHRoYXQgY29udGFpbnMgYW4gaW1wb3J0LiBJbXBvcnQgZWxlbWVudHMgc2hvdWxkIGJlIGlnbm9yZWQuCi0JLy8gVGhpcyBpcyBhIGNvbnRyaXZlZCBleGFtcGxlIGFzIGl0IGNvbnRhaW5zIGEgdHlwZSBhdHRyaWJ1dGUgZm9yIHRoZSBpbXBvcnQgZWxlbWVudC4KLQlFbGVtZW50IHJvb3RFbGVtNiA9IGRvYy5jcmVhdGVFbGVtZW50TlMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMSwgInhzZDpzY2hlbWEiKTsKLQlyb290RWxlbTYuc2V0QXR0cmlidXRlKCJ4bWxuczp4c2QiLFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEpOwotCUVsZW1lbnQgaW1wb3J0RWxlbSA9IGRvYy5jcmVhdGVFbGVtZW50TlMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMSwgInhzZDppbXBvcnQiKTsKLQlpbXBvcnRFbGVtLnNldEF0dHJpYnV0ZSgidHlwZSIsICJvdGhlcjp0eXBlIik7Ci0Jcm9vdEVsZW02LmFwcGVuZENoaWxkKGltcG9ydEVsZW0pOwotCUxpc3QgcmVxTlNzNiA9IGdlbmVyYXRvci5nZXROYW1lc3BhY2VQcmVmaXhlcyhyb290RWxlbTYpOwotCWFzc2VydEVxdWFscygiVGhlIHJlcXVpcmVkIG5hbWVzcGFjZSBsaXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIG9uZSBzdHJpbmcgJ3hzZCcgd2hlbiBhbiBpbXBvcnQgZWxlbWVudCBpcyB1c2VkLiIsIDEsIHJlcU5TczYuc2l6ZSgpKTsKLQlhc3NlcnRFcXVhbHMoIlRoZSByZXF1aXJlZCBuYW1lc3BhY2UgbGlzdCBkb2VzIG5vdCBjb250YWluIHRoZSBvbmUgc3RyaW5nICd4c2QnIHdoZW4gYW4gaW1wb3J0IGVsZW1lbnQgaXMgdXNlZC4iLCAieHNkIiwgcmVxTlNzNi5nZXQoMCkpOwotCQotICAgIC8vIENoZWNrIGRvY3VtZW50IHRoYXQgY29udGFpbnMgYW4gaW5jbHVkZS4gSW5jbHVkZSBlbGVtZW50cyBzaG91bGQgYmUgaWdub3JlZC4KLSAgICAvLyBUaGlzIGlzIGEgY29udHJpdmVkIGV4YW1wbGUgYXMgaXQgY29udGFpbnMgYSB0eXBlIGF0dHJpYnV0ZSBmb3IgdGhlIGluY2x1ZGUgZWxlbWVudC4KLQlFbGVtZW50IHJvb3RFbGVtNyA9IGRvYy5jcmVhdGVFbGVtZW50TlMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMSwgInhzZDpzY2hlbWEiKTsKLQlyb290RWxlbTcuc2V0QXR0cmlidXRlKCJ4bWxuczp4c2QiLFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEpOwotCUVsZW1lbnQgaW5jbHVkZUVsZW0gPSBkb2MuY3JlYXRlRWxlbWVudE5TKFNjaGVtYUNvbnN0YW50cy5OU19VUklfWFNEXzIwMDEsICJ4c2Q6aW5jbHVkZSIpOwotCWluY2x1ZGVFbGVtLnNldEF0dHJpYnV0ZSgidHlwZSIsICJvdGhlcjp0eXBlIik7Ci0Jcm9vdEVsZW03LmFwcGVuZENoaWxkKGluY2x1ZGVFbGVtKTsKLQlMaXN0IHJlcU5TczcgPSBnZW5lcmF0b3IuZ2V0TmFtZXNwYWNlUHJlZml4ZXMocm9vdEVsZW02KTsKLQlhc3NlcnRFcXVhbHMoIlRoZSByZXF1aXJlZCBuYW1lc3BhY2UgbGlzdCBkb2VzIG5vdCBjb250YWluIHRoZSBvbmUgc3RyaW5nICd4c2QnIHdoZW4gYW4gaW1wb3J0IGVsZW1lbnQgaXMgdXNlZC4iLCAxLCByZXFOU3M3LnNpemUoKSk7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgcmVxdWlyZWQgbmFtZXNwYWNlIGxpc3QgZG9lcyBub3QgY29udGFpbiB0aGUgb25lIHN0cmluZyAneHNkJyB3aGVuIGFuIGltcG9ydCBlbGVtZW50IGlzIHVzZWQuIiwgInhzZCIsIHJlcU5TczcuZ2V0KDApKTsKLQkKLQkvLyBDaGVjayBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIGF0dHJpYnV0ZSB3aXRoIGEgcmVxdWlyZWQgbmFtZXNwYWNlLgotCUVsZW1lbnQgcm9vdEVsZW0zID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhTY2hlbWFDb25zdGFudHMuTlNfVVJJX1hTRF8yMDAxLCAieHNkOnNjaGVtYSIpOwotCXJvb3RFbGVtMy5zZXRBdHRyaWJ1dGUoInhtbG5zOnhzZCIsU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMSk7Ci0JRWxlbWVudCB3c2RsQXR0RWxlbSA9IGRvYy5jcmVhdGVFbGVtZW50TlMoU2NoZW1hQ29uc3RhbnRzLk5TX1VSSV9YU0RfMjAwMSwgInhzZDplbGVtZW50Iik7Ci0Jd3NkbEF0dEVsZW0uc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5TX1VSSV9XU0RMLCAid3NkbDphcnJheVR5cGUiLCAic29tZXR5cGVbXSIpOwotCXJvb3RFbGVtMy5hcHBlbmRDaGlsZCh3c2RsQXR0RWxlbSk7Ci0JTGlzdCByZXFOU3MzID0gZ2VuZXJhdG9yLmdldE5hbWVzcGFjZVByZWZpeGVzKHJvb3RFbGVtMyk7Ci0JYXNzZXJ0VHJ1ZSgiVGhlIHJlcXVpcmVkIG5hbWVzcGFjZSBsaXN0IGRvZXMgbm90IGNvbnRhaW4gJ3dzZGwnIHdoZW4gdGhlIG5hbWVzcGFjZSBpcyBzcGVjaWZpZWQgZm9yIGFuIGF0dHJpYnV0ZS4iLCByZXFOU3MzLmNvbnRhaW5zKCJ3c2RsIikpOwotCQotICB9Ci0KLSAgLyoqCi0gICAqIFRPRE86IEltcGxlbWVudCB0ZXN0cyBmb3IgdGhlIFJlbW92ZUltcG9ydHMgbWV0aG9kLgotICAgKi8KLSAgcHVibGljIHZvaWQgdG9kb1JlbW92ZUltcG9ydHMoKSAKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIFRPRE86IEltcGxlbWVudCB0ZXN0cyBmb3IgdGhlIFJlbW92ZUxvY2FsTmFtZXNwYWNlIG1ldGhvZC4KLSAgICovCi0gIHB1YmxpYyB2b2lkIHRvZG9SZW1vdmVMb2NhbE5hbWVzcGFjZXMoKSAKLSAgewotICB9Ci0KLSAgLyoqCi0gICAqIFRPRE86IEltcGxlbWVudCB0ZXN0cyBmb3IgdGhlIFJlc29sdmVOYW1lc3BhY2UgbWV0aG9kLgotICAgKi8KLSAgcHVibGljIHZvaWQgdG9kb1Jlc29sdmVOYW1lc3BhY2VzKCkgCi0gIHsKLSAgfQotCi0gIC8qKgotICAgKiAKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RSZXN0cmljdEltcG9ydHMoKSAKLSAgewotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvSW5saW5lU2NoZW1hR2VuZXJhdG9yV3JhcHBlci5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC93c2RsMTEveHNkL0lubGluZVNjaGVtYUdlbmVyYXRvcldyYXBwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEzOWQyNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL2ludGVybmFsL3dzZGwxMS94c2QvSW5saW5lU2NoZW1hR2VuZXJhdG9yV3JhcHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS54c2Q7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLWltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OwotCi0vKioKLSAqIFdyYXBwZXIgZm9yIElubGluZVNjaGVtYUdlbmVyYXRvciB0byBhbGxvdyB0ZXN0aW5nIHByb3RlY3RlZCBtZXRob2RzLgotICovCi1wdWJsaWMgY2xhc3MgSW5saW5lU2NoZW1hR2VuZXJhdG9yV3JhcHBlciBleHRlbmRzIElubGluZVNjaGVtYUdlbmVyYXRvciAKLXsKLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZC5JbmxpbmVTY2hlbWFHZW5lcmF0b3IjY2hlY2tTT0FQRW5jb2RpbmdSZXF1aXJlZChqYXZhLnV0aWwuTGlzdCkKLQkgKi8KLQlwcm90ZWN0ZWQgYm9vbGVhbiBjaGVja1NPQVBFbmNvZGluZ1JlcXVpcmVkKExpc3QgcmVxbnMpIAotCXsKLQkJcmV0dXJuIHN1cGVyLmNoZWNrU09BUEVuY29kaW5nUmVxdWlyZWQocmVxbnMpOwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZC5JbmxpbmVTY2hlbWFHZW5lcmF0b3IjY3JlYXRlWFNEU3RyaW5nUmVjdXJzaXZlbHkob3JnLnczYy5kb20uRWxlbWVudCwgamF2YS51dGlsLkxpc3QsIGphdmEudXRpbC5MaXN0LCBqYXZhLnV0aWwuSGFzaHRhYmxlLCBqYXZhLmxhbmcuU3RyaW5nKQotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgY3JlYXRlWFNEU3RyaW5nUmVjdXJzaXZlbHkoRWxlbWVudCBlbGVtLCBMaXN0IGVsZW1lbnRzLCBMaXN0IHJlcXVpcmVkTmFtZXNwYWNlcywgSGFzaHRhYmxlIHJlcU5TRGVjbCwgU3RyaW5nIGZpbGVsb2NhdGlvbikgCi0JewotCQlyZXR1cm4gc3VwZXIuY3JlYXRlWFNEU3RyaW5nUmVjdXJzaXZlbHkoZWxlbSwgZWxlbWVudHMsIHJlcXVpcmVkTmFtZXNwYWNlcywKLQkJCQlyZXFOU0RlY2wsIGZpbGVsb2NhdGlvbik7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkLklubGluZVNjaGVtYUdlbmVyYXRvciNnZXRJbXBvcnROYW1lc3BhY2VzKG9yZy53M2MuZG9tLkVsZW1lbnQpCi0JICovCi0JcHJvdGVjdGVkIExpc3QgZ2V0SW1wb3J0TmFtZXNwYWNlcyhFbGVtZW50IGVsZW0pIAotCXsKLQkJcmV0dXJuIHN1cGVyLmdldEltcG9ydE5hbWVzcGFjZXMoZWxlbSk7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkLklubGluZVNjaGVtYUdlbmVyYXRvciNnZXROU1Jlc29sdmVyKG9yZy53M2MuZG9tLkVsZW1lbnQpCi0JICovCi0JcHJvdGVjdGVkIEhhc2h0YWJsZSBnZXROU1Jlc29sdmVyKEVsZW1lbnQgZWxlbSkgCi0JewotCQlyZXR1cm4gc3VwZXIuZ2V0TlNSZXNvbHZlcihlbGVtKTsKLQl9Ci0KLSAgICAvKiAobm9uLUphdmFkb2MpCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS54c2QuSW5saW5lU2NoZW1hR2VuZXJhdG9yI2dldE5hbWVzcGFjZVByZWZpeGVzKG9yZy53M2MuZG9tLkVsZW1lbnQpCi0gICAgICovCi0gICAgcHJvdGVjdGVkIExpc3QgZ2V0TmFtZXNwYWNlUHJlZml4ZXMoRWxlbWVudCBlbGVtKSAKLSAgICB7Ci0JICAgIHJldHVybiBzdXBlci5nZXROYW1lc3BhY2VQcmVmaXhlcyhlbGVtKTsKLSAgICB9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLndzZGwxMS54c2QuSW5saW5lU2NoZW1hR2VuZXJhdG9yI3JlbW92ZUltcG9ydHMoamF2YS51dGlsLkxpc3QsIGphdmEudXRpbC5MaXN0KQotCSAqLwotCXByb3RlY3RlZCBMaXN0IHJlbW92ZUltcG9ydHMoTGlzdCBuYW1lc3BhY2VzLCBMaXN0IGltcG9ydGVkTmFtZXNwYWNlcykgCi0JewotCQlyZXR1cm4gc3VwZXIucmVtb3ZlSW1wb3J0cyhuYW1lc3BhY2VzLCBpbXBvcnRlZE5hbWVzcGFjZXMpOwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZC5JbmxpbmVTY2hlbWFHZW5lcmF0b3IjcmVtb3ZlTG9jYWxOYW1lc3BhY2VzKGphdmEudXRpbC5MaXN0LCBvcmcudzNjLmRvbS5FbGVtZW50KQotCSAqLwotCXByb3RlY3RlZCBMaXN0IHJlbW92ZUxvY2FsTmFtZXNwYWNlcyhMaXN0IG5hbWVzcGFjZXMsIEVsZW1lbnQgZWxlbSkgCi0JewotCQlyZXR1cm4gc3VwZXIucmVtb3ZlTG9jYWxOYW1lc3BhY2VzKG5hbWVzcGFjZXMsIGVsZW0pOwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZC5JbmxpbmVTY2hlbWFHZW5lcmF0b3IjcmVzb2x2ZU5hbWVzcGFjZXMoamF2YS51dGlsLkxpc3QsIGphdmEudXRpbC5IYXNodGFibGUsIGphdmEudXRpbC5IYXNodGFibGUpCi0JICovCi0JcHJvdGVjdGVkIEhhc2h0YWJsZSByZXNvbHZlTmFtZXNwYWNlcyhMaXN0IG5hbWVzcGFjZXMsIEhhc2h0YWJsZSBuc1Jlc29sdmVyLCBIYXNodGFibGUgcGFyZW50TlNSZXNvbHZlcikgCi0JewotCQlyZXR1cm4gc3VwZXIucmVzb2x2ZU5hbWVzcGFjZXMobmFtZXNwYWNlcywgbnNSZXNvbHZlciwgcGFyZW50TlNSZXNvbHZlcik7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC53c2RsMTEueHNkLklubGluZVNjaGVtYUdlbmVyYXRvciNyZXN0cmljdEltcG9ydHMoamF2YS51dGlsLkxpc3QsIGphdmEudXRpbC5TZXQpCi0JICovCi0JcHJvdGVjdGVkIExpc3QgcmVzdHJpY3RJbXBvcnRzKExpc3QgbmFtZXNwYWNlcywgU2V0IHZhbGlkSW1wb3J0TlNzKSAKLQl7Ci0JCXJldHVybiBzdXBlci5yZXN0cmljdEltcG9ydHMobmFtZXNwYWNlcywgdmFsaWRJbXBvcnROU3MpOwotCX0KLSAgIAotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvWE1MQ2F0YWxvZ1Rlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vaW50ZXJuYWwveG1sL1hNTENhdGFsb2dUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMWNkNmIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi9pbnRlcm5hbC94bWwvWE1MQ2F0YWxvZ1Rlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC54bWw7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy5pbnRlcm5hbC5CYXNlVGVzdENhc2U7Ci0KLS8qKgotICogVGVzdHMgZm9yIHRoZSBXU0RMIHZhbGlkYXRvcidzIGludGVybmFsIFhNTCBjYXRhbG9nLgotICovCi1wdWJsaWMgY2xhc3MgWE1MQ2F0YWxvZ1Rlc3QgZXh0ZW5kcyBCYXNlVGVzdENhc2UKLXsKLSAgcHJpdmF0ZSBTdHJpbmcgQ0FUQUxPR19ESVIgPSAidGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9DYXRhbG9nU2NoZW1hcy8iOwotICAKLSAgLyoqCi0gICAqIENyZWF0ZSBhIHRlc3RzIHN1aXRlIGZyb20gdGhpcyB0ZXN0IGNsYXNzLgotICAgKiAKLSAgICogQHJldHVybiBBIHRlc3Qgc3VpdGUgY29udGFpbmluZyB0aGlzIHRlc3QgY2xhc3MuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKQotICB7Ci0JcmV0dXJuIG5ldyBUZXN0U3VpdGUoWE1MQ2F0YWxvZ1Rlc3QuY2xhc3MpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3NldFVwKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0Jc3VwZXIuc2V0VXAoKTsKLQlYTUxDYXRhbG9nLnJlc2V0KCk7Ci0gIH0KLQotCi0KLXB1YmxpYyB2b2lkIHRlc3RTY2hlbWFEaXIoKQotICB7Ci0JWE1MQ2F0YWxvZy5hZGRTY2hlbWFEaXIoUExVR0lOX0FCU09MVVRFX1BBVEggKyBDQVRBTE9HX0RJUik7Ci0JU3RyaW5nIGNhdGFsb2dMb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgQ0FUQUxPR19ESVI7Ci0JY2F0YWxvZ0xvY2F0aW9uID0gY2F0YWxvZ0xvY2F0aW9uLnJlcGxhY2UoJ1xcJywnLycpOwotICAgIHdoaWxlKGNhdGFsb2dMb2NhdGlvbi5zdGFydHNXaXRoKCIvIikpCi0gICAgewotICAgIAljYXRhbG9nTG9jYXRpb24gPSBjYXRhbG9nTG9jYXRpb24uc3Vic3RyaW5nKDEpOwotICAgIH0KLSAgICBjYXRhbG9nTG9jYXRpb24gPSBGSUxFX1BST1RPQ09MICsgY2F0YWxvZ0xvY2F0aW9uOwotCUlYTUxDYXRhbG9nIGNhdGFsb2cgPSBYTUxDYXRhbG9nLmdldEluc3RhbmNlKCk7Ci0JU3RyaW5nIHJlc29sdmVkTG9jYXRpb24gPSBjYXRhbG9nLnJlc29sdmVFbnRpdHlMb2NhdGlvbigiaHR0cDovL3d3dy5leGFtcGxlLm9yZy9zY2hlbWExIiwgIiIpOwotCWFzc2VydEVxdWFscygiVGhlIHJlc29sdmVkIGxvY2F0aW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgZXhwZWN0ZWQgbG9jYXRpb24uIiwgY2F0YWxvZ0xvY2F0aW9uICsgInNjaGVtYTEueHNkIiwgcmVzb2x2ZWRMb2NhdGlvbik7Ci0JcmVzb2x2ZWRMb2NhdGlvbiA9IGNhdGFsb2cucmVzb2x2ZUVudGl0eUxvY2F0aW9uKCJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NjaGVtYTIiLCAiIik7Ci0JYXNzZXJ0RXF1YWxzKCJUaGUgc2Vjb25kIHJlc29sdmVkIGxvY2F0aW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgcmVzb2x2ZWQgbG9jYXRpb24uIiwgY2F0YWxvZ0xvY2F0aW9uICsgInNjaGVtYTIueHNkIiwgcmVzb2x2ZWRMb2NhdGlvbik7Ci0gIAotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL0FsbFdTRExUZXN0cy5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi90ZXN0cy9pbnRlcm5hbC9BbGxXU0RMVGVzdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUzNTBmOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL0FsbFdTRExUZXN0cy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLmludGVybmFsOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5lY2xpcHNlLlZhbGlkYXRvclRlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5yZXNvbHZlci5VUklSZXNvbHZlclRlc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51aS5hbnQuQW50TG9nZ2VyVGVzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLmludGVybmFsLnVpLmFudC5XU0RMVmFsaWRhdGVUZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwud3NkbDExLnhzZC5JbmxpbmVTY2hlbWFHZW5lcmF0b3JUZXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwueG1sLlhNTENhdGFsb2dUZXN0OwotLyoqCi0gKiBUaGUgcm9vdCB0ZXN0IHN1aXRlIHRoYXQgY29udGFpbnMgYWxsIG90aGVyIFdTREwgdmFsaWRhdG9yIHRlc3Qgc3VpdGVzLgotICovCi1wdWJsaWMgY2xhc3MgQWxsV1NETFRlc3RzIGV4dGVuZHMganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZQotewotICAvKioKLSAgICogQ3JlYXRlIHRoaXMgdGVzdCBzdWl0ZS4KLSAgICogCi0gICAqIEByZXR1cm4gVGhpcyB0ZXN0IHN1aXRlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIHJldHVybiBuZXcgQWxsV1NETFRlc3RzKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDb25zdHJ1Y3RvcgotICAgKi8KLSAgcHVibGljIEFsbFdTRExUZXN0cygpCi0gIHsKLSAgICBzdXBlcigiQWxsV1NETFRlc3RzIik7Ci0gICAgYWRkVGVzdChWYWxpZGF0b3JUZXN0LnN1aXRlKCkpOwotICAgIC8vYWRkVGVzdChXU0RMVmFsaWRhdG9yVGVzdC5zdWl0ZSgpKTsKLSAgICBhZGRUZXN0KFhTRFRlc3Quc3VpdGUoKSk7Ci0gICAgYWRkVGVzdChXU0RMVGVzdC5zdWl0ZSgpKTsKLSAgICBhZGRUZXN0KFBhdGhzVGVzdC5zdWl0ZSgpKTsKLSAgICBhZGRUZXN0KFVSSVJlc29sdmVyVGVzdC5zdWl0ZSgpKTsKLSAgICBhZGRUZXN0KFdTRExWYWxpZGF0ZVRlc3Quc3VpdGUoKSk7Ci0gICAgYWRkVGVzdChYTUxDYXRhbG9nVGVzdC5zdWl0ZSgpKTsKLSAgICBhZGRUZXN0KElubGluZVNjaGVtYUdlbmVyYXRvclRlc3Quc3VpdGUoKSk7Ci0gICAgYWRkVGVzdFN1aXRlKExpbmVOdW1iZXJBZGp1c3RtZW50c1Rlc3QuY2xhc3MpOwotICAgIGFkZFRlc3RTdWl0ZShBbnRMb2dnZXJUZXN0LmNsYXNzKTsKLSAgICBhZGRUZXN0U3VpdGUob3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC51aS50ZXh0LldTRExWYWxpZGF0ZVRlc3QuY2xhc3MpOwotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi90ZXN0cy9pbnRlcm5hbC9CYXNlVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vdGVzdHMvaW50ZXJuYWwvQmFzZVRlc3RDYXNlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMGE3ZTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi90ZXN0cy9pbnRlcm5hbC9CYXNlVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM3NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMuaW50ZXJuYWw7Ci0KLWltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOwotaW1wb3J0IGphdmEuaW8uRGF0YU91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uUmVhZGVyOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLQotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnV0aWwuWE1MR3JhbW1hclBvb2xJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLnhuaS5ncmFtbWFycy5YTUxHcmFtbWFyUG9vbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdERlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklXb3Jrc3BhY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53cy5pbnRlcm5hbC5wbHVnaW4uV1NQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzLmludGVybmFsLnByZWZlcmVuY2VzLlBlcnNpc3RlbnRXU0lDb250ZXh0OwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25NZXNzYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuSVZhbGlkYXRpb25SZXBvcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5XU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi5pbnRlcm5hbC5lY2xpcHNlLklubGluZVNjaGVtYU1vZGVsR3JhbW1hclBvb2xJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24uaW50ZXJuYWwuZWNsaXBzZS5XU0RMVmFsaWRhdG9yOwotCi0vKioKLSAqIEJhc2UgdGVzdCBjYXNlIGNsYXNzIHdoaWNoIHByb3ZpZGVzIG1ldGhvZHMgdG8gCi0gKiAtIGNyZWF0ZSBsb2dzCi0gKiAtIHJlYWQgZnJvbSBsb2dzCi0gKiAtIHJ1biBsb2cgY29tcGFyaXNvbiB0ZXN0cwotICovCi1wdWJsaWMgY2xhc3MgQmFzZVRlc3RDYXNlIGV4dGVuZHMgVGVzdENhc2UKLXsKLSAgcHJvdGVjdGVkIFN0cmluZyBGSUxFX1BST1RPQ09MID0gImZpbGU6Ly8vIjsgCi0gIHByb3RlY3RlZCBTdHJpbmcgUExVR0lOX0FCU09MVVRFX1BBVEg7Ci0gIHByb3RlY3RlZCBTdHJpbmcgU0FNUExFU19ESVIgPSAidGVzdHJlc291cmNlcy9zYW1wbGVzLyI7Ci0gIHByb3RlY3RlZCBTdHJpbmcgR0VORVJBVEVEX1JFU1VMVFNfRElSID0gInRlc3RyZXNvdXJjZXMvZ2VuZXJhdGVkUmVzdWx0cy8iOwotICBwcm90ZWN0ZWQgU3RyaW5nIElERUFMX1JFU1VMVFNfRElSID0gInRlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzLyI7Ci0gIHByb3RlY3RlZCBTdHJpbmcgTE9HX0ZJTEVfTE9DQVRJT04gPSAicmVzdWx0cy5sb2ciOwotICAKLSAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX05BTUUgPSAib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cyI7Ci0gIHByaXZhdGUgV1NETFZhbGlkYXRvciB2YWxpZGF0b3IgPSBXU0RMVmFsaWRhdG9yLmdldEluc3RhbmNlKCk7Ci0gIAotICBXU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IG51bGw7Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3NldFVwKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0Jc3VwZXIuc2V0VXAoKTsKLQkKLSAgICBQTFVHSU5fQUJTT0xVVEVfUEFUSCA9IFdTRExWYWxpZGF0b3JUZXN0c1BsdWdpbi5nZXRJbnN0YWxsVVJMKCk7Ly9nZXRQbHVnaW5Mb2NhdGlvbigpOwotICAgIAotICAgIC8vIFNldCB0aGUgV1MtSSBwcmVmZXJlbmNlIHRvIGlnbm9yZSBzbyBvbmx5IFdTREwgZXJyb3JzIHdpbGwgYmUgdGVzdGVkLgotICAgIFdTUGx1Z2luIHdzdWkgPSBXU1BsdWdpbi5nZXRJbnN0YW5jZSgpOwotICAgIFBlcnNpc3RlbnRXU0lDb250ZXh0IHdzaWNvbnRleHQgPSB3c3VpLmdldFdTSVNTQlBDb250ZXh0KCk7Ci0gICAgd3NpY29udGV4dC51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0gICAgd3NpY29udGV4dCA9IHdzdWkuZ2V0V1NJQVBDb250ZXh0KCk7Ci0gICAgd3NpY29udGV4dC51cGRhdGVXU0lDb21wbGlhbmNlcyhQZXJzaXN0ZW50V1NJQ29udGV4dC5JR05PUkVfTk9OX1dTSSk7Ci0gICAgCi0gICAgY29uZmlndXJhdGlvbiA9IG5ldyBXU0RMVmFsaWRhdGlvbkNvbmZpZ3VyYXRpb24oKTsKLQlYTUxHcmFtbWFyUG9vbCB4c2RHcmFtbWFyUG9vbCA9IG5ldyBJbmxpbmVTY2hlbWFNb2RlbEdyYW1tYXJQb29sSW1wbCgpOwotCVhNTEdyYW1tYXJQb29sIHhtbEdyYW1tYXJQb29sID0gbmV3IFhNTEdyYW1tYXJQb29sSW1wbCgpOwotCWNvbmZpZ3VyYXRpb24uc2V0UHJvcGVydHkoQ29uc3RhbnRzLlhNTFNDSEVNQV9DQUNIRV9BVFRSSUJVVEUsIHhzZEdyYW1tYXJQb29sKTsKLSAgICBjb25maWd1cmF0aW9uLnNldFByb3BlcnR5KENvbnN0YW50cy5YTUxfQ0FDSEVfQVRUUklCVVRFLCB4bWxHcmFtbWFyUG9vbCk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UjdGVhckRvd24oKQotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgdGVhckRvd24oKSB0aHJvd3MgRXhjZXB0aW9uIAotICB7Ci0JY29uZmlndXJhdGlvbiA9IG51bGw7Ci0JCi0Jc3VwZXIudGVhckRvd24oKTsKLSAgfQotCi0vKioKLSAgICogUnVuIGEgdmFsaWRhdG9yIHRlc3QuIFRoZSB0ZXN0IHdpbGwgcnVuIHRoZSB2YWxpZGF0b3IsIGxvZyB0aGUgcmVzdWx0cyBhbmQgY29tcGFyZSB0aGUgcmVzdWx0cwotICAgKiB3aXRoIHRoZSBpZGVhbCByZXN1bHRzLiBUaGUgdGVzdCB3aWxsIG9ubHkgcGFzcyBpZiB0aGUgdHdvIGxvZyBmaWxlcyBhcmUgdGhlIHNhbWUuCi0gICAqIAotICAgKiBAcGFyYW0gdGVzdGZpbGUgVGhlIGZpbGUgdG8gcnVuIHRoZSB2YWxpZGF0b3IgdGVzdCBvbi4KLSAgICogQHBhcmFtIGxvZ2xvY2F0aW9uIFRoZSBsb2NhdGlvbiB0byBjcmVhdGUgdGhlIGxvZyBmaWxlLgotICAgKiBAcGFyYW0gaWRlYWxsb2dsb2NhdGlvbiBUaGUgbG9jYXRpb24gb2YgdGhlIGlkZWFsIGxvZyBmaWxlLgotICAgKi8KLSAgcHVibGljIHZvaWQgcnVuVGVzdChTdHJpbmcgdGVzdGZpbGUsIFN0cmluZyBsb2dsb2NhdGlvbiwgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24pCi0gIHsKLSAgICBJVmFsaWRhdGlvblJlcG9ydCB2YWxyZXBvcnQgPSB2YWxpZGF0b3IudmFsaWRhdGUodGVzdGZpbGUsIG51bGwsIGNvbmZpZ3VyYXRpb24pOwotICAgIHRyeQotICAgIHsKLSAgICAgIGNyZWF0ZUxvZyhsb2dsb2NhdGlvbiwgdmFscmVwb3J0KTsKLSAgICAgIFN0cmluZyBnZW5lcmF0ZWRMb2cgPSBnZXRTdHJpbmdGcm9tRmlsZShsb2dsb2NhdGlvbik7Ci0gICAgICBTdHJpbmcgaWRlYWxMb2cgPSBnZXRTdHJpbmdGcm9tRmlsZShpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgICAgIGFzc2VydEVxdWFscyhpZGVhbExvZywgZ2VuZXJhdGVkTG9nKTsKLSAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBmYWlsKCJDb3VsZCBub3QgY29tcGFyZSBsb2cgZmlsZXMiKTsKLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBmaWxlLgotICAgKiAKLSAgICogQHBhcmFtIGZpbGVuYW1lIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGZpbGUgdG8gZ2V0IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24uCi0gICAqIEByZXR1cm4gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBpZiBzdWNjZXNzZnVsLgotICAgKiBAdGhyb3dzIEV4Y2VwdGlvbiBUaHJvd24gaWYgdW5hYmxlIHRvIGNyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhaW9uIG9mIHRoZSBmaWxlLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgZ2V0U3RyaW5nRnJvbUZpbGUoU3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBpZihmaWxlbmFtZS5zdGFydHNXaXRoKCJmaWxlOiIpKQotICAJewotICAJICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZyg2KTsKLSAgCSAgd2hpbGUoZmlsZW5hbWUuc3RhcnRzV2l0aCgiXFwiKSB8fCBmaWxlbmFtZS5zdGFydHNXaXRoKCIvIikpCi0gIAkgIHsKLSAgCSAgCWZpbGVuYW1lID0gZmlsZW5hbWUuc3Vic3RyaW5nKDEpOwotICAJICB9Ci0gIAl9Ci0gICAgU3RyaW5nQnVmZmVyIGZpbGVzdHJpbmcgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgUmVhZGVyIHJlYWRlciA9IG51bGw7Ci0gICAgQnVmZmVyZWRSZWFkZXIgYnVmcmVhZGVyID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBGaWxlIGZpbGUgPSBuZXcgRmlsZShmaWxlbmFtZSk7Ci0gICAgICByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcihmaWxlKTsKLSAgICAgIGJ1ZnJlYWRlciA9IG5ldyBCdWZmZXJlZFJlYWRlcihyZWFkZXIpOwotICAgICAgd2hpbGUgKGJ1ZnJlYWRlci5yZWFkeSgpKQotICAgICAgewotICAgICAgICBmaWxlc3RyaW5nLmFwcGVuZChidWZyZWFkZXIucmVhZExpbmUoKSArICJcbiIpOwotICAgICAgfQotICAgIH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKQotICAgIHsKLSAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKLSAgICB9IGZpbmFsbHkKLSAgICB7Ci0gICAgICBidWZyZWFkZXIuY2xvc2UoKTsKLSAgICAgIHJlYWRlci5jbG9zZSgpOwotICAgIH0KLSAgICByZXR1cm4gZmlsZXN0cmluZy50b1N0cmluZygpOwotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgbG9nIGZpbGUgZm9yIGFuIFhTRCB0ZXN0LgotICAgKiAKLSAgICogQHBhcmFtIGZpbGVuYW1lIFRoZSBuYW1lIG9mIHRoZSBsb2cgZmlsZSB0byBjcmVhdGUuCi0gICAqIEBwYXJhbSB2YWxyZXBvcnQgVGhlIHZhbGlkYXRpb24gcmVwb3J0IGZvciB0aGlzIGZpbGUuCi0gICAqIEByZXR1cm4gVGhlIGZpbGUgY29udGVudHMgYXMgYSBzdHJpbmcgaWYgc3VjY2Vzc2Z1bCBvciBudWxsIGlmIG5vdCBzdWNjZXNzZnVsLgotICAgKi8KLSAgcHJpdmF0ZSBTdHJpbmcgY3JlYXRlTG9nKFN0cmluZyBmaWxlbmFtZSwgSVZhbGlkYXRpb25SZXBvcnQgdmFscmVwb3J0KQotICB7Ci0gICAgaWYoZmlsZW5hbWUuc3RhcnRzV2l0aCgiZmlsZToiKSkKLSAgCXsKLSAgCSAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoNik7Ci0gIAkgIHdoaWxlKGZpbGVuYW1lLnN0YXJ0c1dpdGgoIlxcIikgfHwgZmlsZW5hbWUuc3RhcnRzV2l0aCgiLyIpKQotICAJICB7Ci0gIAkgIAlmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZygxKTsKLSAgCSAgfQotICAJfQotICAgICBJVmFsaWRhdGlvbk1lc3NhZ2VbXSB2YWxtZXNzYWdlcyA9IHZhbHJlcG9ydC5nZXRWYWxpZGF0aW9uTWVzc2FnZXMoKTsKLSAgICAgaW50IG51bW1lc3NhZ2VzID0gdmFsbWVzc2FnZXMubGVuZ3RoOy8vdmFsaWRhdG9yLmdldEVycm9ycygpLnNpemUoKSArIHZhbGlkYXRvci5nZXRXYXJuaW5ncygpLnNpemUoKTsKLSAgICAgU3RyaW5nQnVmZmVyIGVycm9yc1N0cmluZyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgU3RyaW5nQnVmZmVyIHdhcm5pbmdzU3RyaW5nID0gbmV3IFN0cmluZ0J1ZmZlcigpOwotICAgICBpbnQgbnVtZXJyb3JzID0gMDsKLSAgICAgaW50IG51bXdhcm5pbmdzID0gMDsKLSAgICAgZm9yKGludCBpID0gMDsgaSA8IG51bW1lc3NhZ2VzOyBpKyspCi0gICAgIHsKLSAgICAgICBJVmFsaWRhdGlvbk1lc3NhZ2UgdmFsbWVzID0gdmFsbWVzc2FnZXNbaV07Ci0gICAgICAgaWYodmFsbWVzLmdldFNldmVyaXR5KCkgPT0gSVZhbGlkYXRpb25NZXNzYWdlLlNFVl9XQVJOSU5HKQotICAgICAgIHsKLSAgICAgICAgIG51bXdhcm5pbmdzKys7Ci0gICAgICAgICAvLyBJZiB0aGUgbWVzc2FnZSBjb250YWlucyBhbnkgZmlsZSByZWZlcmVuY2VzIG1ha2UgdGhlbSByZWxhdGl2ZS4KLSAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gdmFsbWVzLmdldE1lc3NhZ2UoKTsKLSAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2VBbGwoIidbXiddKiIgKyBnZXRQbHVnaW5OYW1lKCkgKyAiW14nL10qLyIsICInIik7Ci0gICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlQWxsKCJbKF1bXihdKiIgKyBnZXRQbHVnaW5OYW1lKCkgKyAiW14nL10qLyIsICJbKF0iKTsKLSAgICAgICAgIHdhcm5pbmdzU3RyaW5nLmFwcGVuZChtZXNzYWdlICsgIiBbIiArIHZhbG1lcy5nZXRMaW5lKCkgKyIsICIgKyB2YWxtZXMuZ2V0Q29sdW1uKCkgKyJdXG4iKTsKLSAgICAgICAgIHdhcm5pbmdzU3RyaW5nLmFwcGVuZChjcmVhdGVOZXN0ZWRNZXNzYWdlU3RyaW5nKHZhbG1lcy5nZXROZXN0ZWRNZXNzYWdlcygpKSk7Ci0gICAgICAgfQotICAgICAgIGVsc2UKLSAgICAgICB7Ci0gICAgICAgICBudW1lcnJvcnMrKzsKLSAgICAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIGFueSBmaWxlIHJlZmVyZW5jZXMgbWFrZSB0aGVtIHJlbGF0aXZlLgotICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSB2YWxtZXMuZ2V0TWVzc2FnZSgpOwotICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZUFsbCgiJ1teJ10qIiArIGdldFBsdWdpbk5hbWUoKSArICJbXicvXSovIiwgIiciKTsKLSAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2VBbGwoIlsoXVteKF0qIiArIGdldFBsdWdpbk5hbWUoKSArICJbXicvXSovIiwgIigiKTsKLSAgICAgICAgIGVycm9yc1N0cmluZy5hcHBlbmQobWVzc2FnZSArICIgWyIgKyB2YWxtZXMuZ2V0TGluZSgpICsiLCAiICsgdmFsbWVzLmdldENvbHVtbigpICsiXVxuIik7Ci0gICAgICAgICBlcnJvcnNTdHJpbmcuYXBwZW5kKGNyZWF0ZU5lc3RlZE1lc3NhZ2VTdHJpbmcodmFsbWVzLmdldE5lc3RlZE1lc3NhZ2VzKCkpKTsKLSAgICAgICB9Ci0gICAgIH0KLSAgICAgU3RyaW5nQnVmZmVyIGxvZyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLSAgICAgbG9nLmFwcGVuZCgibnVtYmVyIG9mIGVycm9ycyAgICAgIDogIiArIG51bWVycm9ycyArICJcbiIpOwotICAgICBsb2cuYXBwZW5kKCJudW1iZXIgb2Ygd2FybmluZ3MgICAgOiAiICsgbnVtd2FybmluZ3MgKyAiXG5cbiIpOwotICAgICBsb2cuYXBwZW5kKCItLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Ci0gICAgIGlmKG51bWVycm9ycyA9PSAwKQotICAgICB7Ci0gICAgICAgbG9nLmFwcGVuZCgiKG5vbmUpXG4iKTsKLSAgICAgfQotICAgICBlbHNlCi0gICAgIHsKLSAgICAgICBsb2cuYXBwZW5kKGVycm9yc1N0cmluZy50b1N0cmluZygpKTsKLSAgICAgfQotICAgICBsb2cuYXBwZW5kKCItLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Ci0gICAgIGlmKG51bXdhcm5pbmdzID09IDApCi0gICAgIHsKLSAgICAgICBsb2cuYXBwZW5kKCIobm9uZSlcbiIpOwotICAgICB9Ci0gICAgIGVsc2UKLSAgICAgewotICAgICAgIGxvZy5hcHBlbmQod2FybmluZ3NTdHJpbmcudG9TdHJpbmcoKSk7Ci0gICAgIH0KLSAgICAgbG9nLmFwcGVuZCgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwotICAgCi0gICAgIERhdGFPdXRwdXRTdHJlYW0gb3V0U3RyZWFtID0gbnVsbDsKLSAgICB0cnkKLSAgICB7Ci0gICAgICBGaWxlIGxvZ2ZpbGUgPSBuZXcgRmlsZShmaWxlbmFtZSk7Ci0gICAgICBGaWxlIHBhcmVudCA9IGxvZ2ZpbGUuZ2V0UGFyZW50RmlsZSgpOwotICAJaWYgKCFwYXJlbnQuZXhpc3RzKCkpIAotICAJewotICAJICBwYXJlbnQubWtkaXJzKCk7Ci0gIAl9Ci0gICAgICBpZihsb2dmaWxlLmV4aXN0cygpKQotICAgICAgewotICAgICAgICBsb2dmaWxlLmRlbGV0ZSgpOwotICAgICAgfQotICAgICAgbG9nZmlsZS5jcmVhdGVOZXdGaWxlKCk7Ci0gICAgICAKLSAgICAgIG91dFN0cmVhbSA9IG5ldyBEYXRhT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGVuYW1lLCB0cnVlKSk7Ci0gICAgICBvdXRTdHJlYW0ud3JpdGVCeXRlcyhsb2cudG9TdHJpbmcoKSk7Ci0gICAgICBvdXRTdHJlYW0uY2xvc2UoKTsKLQotICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgLy8gSWYgd2UgY2FuJ3Qgd3JpdGUgdGhlIGxvZyB0aGVuIGNsZWFyIHRoZSBsb2cuCi0gICAgICBsb2cuZGVsZXRlKDAsIGxvZy5sZW5ndGgoKSk7Ci0gICAgfQotICAgIHJldHVybiBsb2cudG9TdHJpbmcoKTsKLSAgfQotCi0gIHByb3RlY3RlZCBTdHJpbmcgZ2V0UGx1Z2luTmFtZSgpCi0gIHsKLSAgICByZXR1cm4gUExVR0lOX05BTUU7Ci0gIH0KLSAgCi0gIHByaXZhdGUgU3RyaW5nIGNyZWF0ZU5lc3RlZE1lc3NhZ2VTdHJpbmcoTGlzdCBuZXN0ZWRNZXNzYWdlcykKLSAgewotICAgIHJldHVybiBjcmVhdGVOZXN0ZWRNZXNzYWdlU3RyaW5nKG5lc3RlZE1lc3NhZ2VzLCAwKTsKLSAgfQotICAKLSAgcHJpdmF0ZSBTdHJpbmcgY3JlYXRlTmVzdGVkTWVzc2FnZVN0cmluZyhMaXN0IG5lc3RlZE1lc3NhZ2VzLCBpbnQgZGVwdGgpCi0gIHsKLSAgICBpZihuZXN0ZWRNZXNzYWdlcyAhPSBudWxsICYmIG5lc3RlZE1lc3NhZ2VzLnNpemUoKSA+IDApCi0gICAgewotICAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcgPSAiIjsKLSAgICAgIEl0ZXJhdG9yIG5lc3RlZE1lc0l0ZXIgPSBuZXN0ZWRNZXNzYWdlcy5pdGVyYXRvcigpOwotICAgICAgd2hpbGUobmVzdGVkTWVzSXRlci5oYXNOZXh0KCkpCi0gICAgICB7Ci0gICAgICAgIElWYWxpZGF0aW9uTWVzc2FnZSBuZXN2YWxtZXMgPSAoSVZhbGlkYXRpb25NZXNzYWdlKW5lc3RlZE1lc0l0ZXIubmV4dCgpOwotICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgZGVwdGg7IGkrKykKLSAgICAgICAgewotICAgICAgICAgIG1lc3NhZ2VTdHJpbmcgKz0gIiAiOwotICAgICAgICB9Ci0gICAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIGFueSBmaWxlIHJlZmVyZW5jZXMgbWFrZSB0aGVtIHJlbGF0aXZlLgotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG5lc3ZhbG1lcy5nZXRNZXNzYWdlKCk7Ci0gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2VBbGwoIidbXiddKiIgKyBnZXRQbHVnaW5OYW1lKCkgKyAiW14nL10qLyIsICInIik7Ci0gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2VBbGwoIlsoXVteKF0qIiArIGdldFBsdWdpbk5hbWUoKSArICJbXicvXSovIiwgIlsoXSIpOwotICAgICAgICBtZXNzYWdlU3RyaW5nICs9ICgiLT4gIiArIG1lc3NhZ2UgKyAiIFsiICsgbmVzdmFsbWVzLmdldExpbmUoKSArIiwgIiArIG5lc3ZhbG1lcy5nZXRDb2x1bW4oKSArIl1cbiIpOwotICAgICAgICBtZXNzYWdlU3RyaW5nICs9IGNyZWF0ZU5lc3RlZE1lc3NhZ2VTdHJpbmcobmVzdmFsbWVzLmdldE5lc3RlZE1lc3NhZ2VzKCksIGRlcHRoICsgMSk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbWVzc2FnZVN0cmluZzsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIHJldHVybiAiIjsKLSAgICB9Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYSBwcm9qZWN0IGluIHRoZSB3b3Jrc3BhY2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQKLSAgICogYWRkIHRoZSBzcGVjaWZpZWQgZmlsZXMgdG8gdGhlIHByb2plY3QuCi0gICAqIAotICAgKiBAcGFyYW0gcHJvamVjdE5hbWUgVGhlIG5hbWUgZm9yIHRoZSBwcm9qZWN0LgotICAgKiBAcGFyYW0gZmlsZXMgQW4gYXJyYXkgb2YgZmlsZSBuYW1lcyBpbiB0aGUgZmlsZSBzeXN0ZW0gdGhhdAotICAgKiAgICAgICAgICAgICAgd2lsbCBiZSBjb3BpZWQgaW50byB0aGUgcHJvamVjdC4KLSAgICogQHJldHVybiBUaGUgY3JlYXRlZCBwcm9qZWN0LgotICAgKi8KLSAgcHJvdGVjdGVkIElQcm9qZWN0IGNyZWF0ZVNpbXBsZVByb2plY3QoU3RyaW5nIHByb2plY3ROYW1lLCBTdHJpbmdbXSBmaWxlcykKLSAgewotICAgIGZpbmFsIElXb3Jrc3BhY2Ugd29ya3NwYWNlID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpOwotICAgIGZpbmFsIElQcm9qZWN0IHByb2plY3QgPSB3b3Jrc3BhY2UuZ2V0Um9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWUpOwotICAgIGlmKCFwcm9qZWN0LmV4aXN0cygpKQotICAgIHsKLSAgICAgIHRyeQotCSAgewotICAgICAgICBwcm9qZWN0LmNyZWF0ZShudWxsKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoKENvcmVFeGNlcHRpb24gZSkKLQkgIHsKLSAgICAgICAgZmFpbCgiQ291bGQgbm90IGNyZWF0ZSBwcm9qZWN0ICIgKyBwcm9qZWN0TmFtZSArIGUpOwotICAgICAgfSAKLSAgICB9Ci0gICAgaWYoIXByb2plY3QuaXNPcGVuKCkpCi0gICAgewotICAgICAgdHJ5Ci0JICB7Ci0gICAgICAgIHByb2plY3Qub3BlbihudWxsKTsKLQkgIH0KLSAgICAgIGNhdGNoKENvcmVFeGNlcHRpb24gZSkKLSAgICAgIHsKLSAgICAgICAgZmFpbCgiQ291bGQgbm90IG9wZW4gcHJvamVjdCAiICsgcHJvamVjdE5hbWUgKyBlKTsKLQkgIH0KLSAgICB9Ci0gICAgdHJ5Ci0gICAgewotICAgICAgSVByb2plY3REZXNjcmlwdGlvbiBwcm9qZWN0RGVzY3JpcHRpb24gPSBwcm9qZWN0LmdldERlc2NyaXB0aW9uKCk7IAotICAgICAgcHJvamVjdERlc2NyaXB0aW9uLnNldE5hbWUocHJvamVjdE5hbWUpOwotICAgICAgcHJvamVjdC5zZXREZXNjcmlwdGlvbihwcm9qZWN0RGVzY3JpcHRpb24sIG51bGwpOwotICAgIH0KLSAgICBjYXRjaChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICBmYWlsKCJVbmFibGUgdG8gc2V0IHByb2plY3QgcHJvcGVydGllcyBmb3IgcHJvamVjdCAiICsgcHJvamVjdE5hbWUgKyAiLiAiICsgZSk7Ci0gICAgfQotCi0gICAgaWYoZmlsZXMgIT0gbnVsbCkKLSAgICB7Ci0gICAgICBpbnQgbnVtZmlsZXMgPSBmaWxlcy5sZW5ndGg7Ci0gICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbnVtZmlsZXM7IGkrKykKLSAgICAgIHsKLSAgICAgICAgdHJ5Ci0JCXsKLSAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBmaWxlc1tpXTsKLSAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoJ1xcJywnLycpOwotICAgICAgICAgIAotICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGZpbGVuYW1lKTsKLSAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gaW4gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOwotICAgICAgICAgIElGaWxlIGlGaWxlID0gcHJvamVjdC5nZXRGaWxlKGZpbGUuZ2V0TmFtZSgpKTsKLSAgICAgICAgICBpZighaUZpbGUuZXhpc3RzKCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgaUZpbGUuY3JlYXRlKGluLCB0cnVlLCBudWxsKTsKLSAgICAgICAgICAgIGluLmNsb3NlKCk7Ci0gICAgICAgICAgfQotCQl9Ci0gICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKQotCQl7Ci0JCSAgZmFpbCgiVW5hYmxlIHRvIGxvY2F0ZSBmaWxlICIgKyBmaWxlc1tpXSk7Ci0JCX0gCi0gICAgICB9Ci0gICAgfQotICAgIHRyeQotICAgIHsKLSAgICAgIHByb2plY3QucmVmcmVzaExvY2FsKC0xLCBudWxsKTsKLSAgICB9Ci0gICAgY2F0Y2goRXhjZXB0aW9uIGUpCi0gICAge30KLSAgICByZXR1cm4gcHJvamVjdDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi90ZXN0cy9pbnRlcm5hbC9MaW5lTnVtYmVyQWRqdXN0bWVudHNUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL0xpbmVOdW1iZXJBZGp1c3RtZW50c1Rlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMyOTUzNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL0xpbmVOdW1iZXJBZGp1c3RtZW50c1Rlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy5pbnRlcm5hbDsKLQotLyoqCi0gKiBUZXN0cyBmb3IgbGluZSBudW1iZXIgYWRqdXN0bWVudHMgaW4gdGhlIFdTREwgdmFsaWRhdG9yJ3MKLSAqIFhNTCB2YWxpZGF0b3IuCi0gKi8KLXB1YmxpYyBjbGFzcyBMaW5lTnVtYmVyQWRqdXN0bWVudHNUZXN0IGV4dGVuZHMgQmFzZVRlc3RDYXNlIAotewotICBwcml2YXRlIFN0cmluZyBMSU5FX05VTUJFUl9BREpVU1RNRU5UU19ESVIgPSAiTGluZU51bWJlckFkanVzdG1lbnRzLyI7Ci0KLSAgLyoqCi0gICAqIFRlc3QgL0xpbmVOdW1iZXJBZGp1c3RtZW50cy9jdmMtY29tcGxleC10eXBlLjIuMy9jdmMtY29tcGxleC10eXBlLjIuMy53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0Y3ZjY29tcGxleHR5cGUyMygpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiY3ZjLWNvbXBsZXgtdHlwZS4yLjMiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgTElORV9OVU1CRVJfQURKVVNUTUVOVFNfRElSICsgImN2Yy1jb21wbGV4LXR5cGUuMi4zLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBMSU5FX05VTUJFUl9BREpVU1RNRU5UU19ESVIgKyAiY3ZjLWNvbXBsZXgtdHlwZS4yLjMvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgTElORV9OVU1CRVJfQURKVVNUTUVOVFNfRElSICsgImN2Yy1jb21wbGV4LXR5cGUuMi4zLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL0xpbmVOdW1iZXJBZGp1c3RtZW50cy9jdmMtY29tcGxleC10eXBlLjIuNC5iL2N2Yy1jb21wbGV4LXR5cGUuMi40LmIud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdGN2Y2NvbXBsZXh0eXBlMjRiKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJjdmMtY29tcGxleC10eXBlLjIuNC5iIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIExJTkVfTlVNQkVSX0FESlVTVE1FTlRTX0RJUiArICJjdmMtY29tcGxleC10eXBlLjIuNC5iLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBMSU5FX05VTUJFUl9BREpVU1RNRU5UU19ESVIgKyAiY3ZjLWNvbXBsZXgtdHlwZS4yLjQuYi8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBMSU5FX05VTUJFUl9BREpVU1RNRU5UU19ESVIgKyAiY3ZjLWNvbXBsZXgtdHlwZS4yLjQuYi8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vdGVzdHMvaW50ZXJuYWwvUGF0aHNUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL1BhdGhzVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWQxZTMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2RsL3ZhbGlkYXRpb24vdGVzdHMvaW50ZXJuYWwvUGF0aHNUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1ODUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLmludGVybmFsOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotLyoqCi0gKiBUZXN0cyBmb3IgZmlsZSBwYXRocy4KLSAqLwotcHVibGljIGNsYXNzIFBhdGhzVGVzdCBleHRlbmRzIEJhc2VUZXN0Q2FzZQotewotICBwcml2YXRlIFN0cmluZyBQQVRIU19ESVIgPSAiUGF0aHMvIjsKLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYSB0ZXN0cyBzdWl0ZSBmcm9tIHRoaXMgdGVzdCBjbGFzcy4KLSAgICogCi0gICAqIEByZXR1cm4gQSB0ZXN0IHN1aXRlIGNvbnRhaW5pbmcgdGhpcyB0ZXN0IGNsYXNzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgewotICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKFBhdGhzVGVzdC5jbGFzcyk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2Ujc2V0VXAoKQotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBzdXBlci5zZXRVcCgpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3RlYXJEb3duKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHRlYXJEb3duKCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgLy8gRGVsZXRlIHRoZSBzaW1wbGUgcHJvamVjdCBmb3IgSW1wb3J0ZWRTY2hlbWFXaXRoU2NoZW1hSW1wb3J0IHRlc3QKLSAgICBzdXBlci50ZWFyRG93bigpOwotICB9Ci0KLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL1NwYWNlIEluUGF0aC9TcGFjZUluUGF0aFZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RTcGFjZUluUGF0aFZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJTcGFjZUluUGF0aFZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJTcGFjZSBJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJTcGFjZSBJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlNwYWNlIEluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9TcGFjZSBJblBhdGgvU3BhY2VJblBhdGhJbnZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RTcGFjZUluUGF0aEludmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlNwYWNlSW5QYXRoSW52YWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiU3BhY2UgSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiU3BhY2UgSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJTcGFjZSBJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvQW5nbGVIYXReSW5QYXRoL0FuZ2xlSGF0SW5QYXRoVmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEFuZ2xlSGF0SW5QYXRoVmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkFuZ2xlSGF0SW5QYXRoVmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIkFuZ2xlSGF0XkluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkFuZ2xlSGF0XkluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiQW5nbGVIYXReSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL0FuZ2xlSGF0XkluUGF0aC9BbmdsZUhhdEluUGF0aEludmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEFuZ2xlSGF0SW5QYXRoSW52YWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiQW5nbGVIYXRJblBhdGhJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJBbmdsZUhhdF5JblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJBbmdsZUhhdF5JblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkFuZ2xlSGF0XkluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9BbmdsZUhhdEluRmlsZW5hbWUvQW5nbGVIYXReSW5GaWxlbmFtZVZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RBbmdsZUhhdEluRmlsZW5hbWVWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiQW5nbGVIYXReSW5GaWxlbmFtZVZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJBbmdsZUhhdEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJBbmdsZUhhdEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkFuZ2xlSGF0SW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9BbmdsZUhhdEluRmlsZW5hbWUvQW5nbGVIYXReSW5GaWxlbmFtZUludmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEFuZ2xlSGF0SW5GaWxlbmFtZUludmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkFuZ2xlSGF0XkluRmlsZW5hbWVJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJBbmdsZUhhdEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJBbmdsZUhhdEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkFuZ2xlSGF0SW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9DbG9zZUJyYWNrZXQpSW5QYXRoL0Nsb3NlQnJhY2tldEluUGF0aFZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RDbG9zZUJyYWNrZXRJblBhdGhWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiQ2xvc2VCcmFja2V0SW5QYXRoVmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIkNsb3NlQnJhY2tldClJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJDbG9zZUJyYWNrZXQpSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJDbG9zZUJyYWNrZXQpSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL0Nsb3NlQnJhY2tldClJblBhdGgvQ2xvc2VCcmFja2V0SW5QYXRoSW52YWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0Q2xvc2VCcmFja2V0SW5QYXRoSW52YWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiQ2xvc2VCcmFja2V0SW5QYXRoSW52YWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiQ2xvc2VCcmFja2V0KUluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkNsb3NlQnJhY2tldClJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkNsb3NlQnJhY2tldClJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS9DbG9zZUJyYWNrZXQpSW5GaWxlbmFtZVZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RDbG9zZUJyYWNrZXRJbkZpbGVuYW1lVmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkNsb3NlQnJhY2tldClJbkZpbGVuYW1lVmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIkNsb3NlQnJhY2tldEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJDbG9zZUJyYWNrZXRJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJDbG9zZUJyYWNrZXRJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL0Nsb3NlQnJhY2tldEluRmlsZW5hbWUvQ2xvc2VCcmFja2V0KUluRmlsZW5hbWVJbnZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RDbG9zZUJyYWNrZXRJbkZpbGVuYW1lSW52YWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiQ2xvc2VCcmFja2V0KUluRmlsZW5hbWVJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJDbG9zZUJyYWNrZXRJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9EYXNoLUluUGF0aC9EYXNoSW5QYXRoVmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdERhc2hJblBhdGhWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiRGFzaEluUGF0aFZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJEYXNoLUluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkRhc2gtSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJEYXNoLUluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9EYXNoLUluUGF0aC9EYXNoSW5QYXRoSW52YWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0RGFzaEluUGF0aEludmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkRhc2hJblBhdGhJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJEYXNoLUluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkRhc2gtSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJEYXNoLUluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9EYXNoSW5GaWxlbmFtZS9EYXNoLUluRmlsZW5hbWVWYWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0RGFzaEluRmlsZW5hbWVWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiRGFzaC1JbkZpbGVuYW1lVmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIkRhc2hJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiRGFzaEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkRhc2hJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL0Rhc2hJbkZpbGVuYW1lL0Rhc2gtSW5GaWxlbmFtZUludmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdERhc2hJbkZpbGVuYW1lSW52YWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiRGFzaC1JbkZpbGVuYW1lSW52YWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiRGFzaEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJEYXNoSW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiRGFzaEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvRXhjbGFtYXRpb24hSW5QYXRoL0V4Y2xhbWF0aW9uSW5QYXRoVmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEV4Y2xhbWF0aW9uSW5QYXRoVmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkV4Y2xhbWF0aW9uSW5QYXRoVmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIkV4Y2xhbWF0aW9uIUluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkV4Y2xhbWF0aW9uIUluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiRXhjbGFtYXRpb24hSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL0V4Y2xhbWF0aW9uIUluUGF0aC9FeGNsYW1hdGlvbkluUGF0aEludmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEV4Y2xhbWF0aW9uSW5QYXRoSW52YWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiRXhjbGFtYXRpb25JblBhdGhJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJFeGNsYW1hdGlvbiFJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJFeGNsYW1hdGlvbiFJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkV4Y2xhbWF0aW9uIUluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9FeGNsYW1hdGlvbkluRmlsZW5hbWUvRXhjbGFtYXRpb24hSW5GaWxlbmFtZVZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RFeGNsYW1hdGlvbkluRmlsZW5hbWVWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiRXhjbGFtYXRpb24hSW5GaWxlbmFtZVZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJFeGNsYW1hdGlvbkluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJFeGNsYW1hdGlvbkluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkV4Y2xhbWF0aW9uSW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9FeGNsYW1hdGlvbkluRmlsZW5hbWUvRXhjbGFtYXRpb24hSW5GaWxlbmFtZUludmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEV4Y2xhbWF0aW9uSW5GaWxlbmFtZUludmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkV4Y2xhbWF0aW9uIUluRmlsZW5hbWVJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJFeGNsYW1hdGlvbkluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJFeGNsYW1hdGlvbkluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIkV4Y2xhbWF0aW9uSW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9PcGVuQnJhY2tldChJblBhdGgvT3BlbkJyYWNrZXRJblBhdGhWYWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0T3BlbkJyYWNrZXRJblBhdGhWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiT3BlbkJyYWNrZXRJblBhdGhWYWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiT3BlbkJyYWNrZXQoSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiT3BlbkJyYWNrZXQoSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJPcGVuQnJhY2tldChJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvT3BlbkJyYWNrZXQoSW5QYXRoL09wZW5CcmFja2V0SW5QYXRoSW52YWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0T3BlbkJyYWNrZXRJblBhdGhJbnZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJPcGVuQnJhY2tldEluUGF0aEludmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIk9wZW5CcmFja2V0KEluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIk9wZW5CcmFja2V0KEluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiT3BlbkJyYWNrZXQoSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL09wZW5CcmFja2V0SW5GaWxlbmFtZS9PcGVuQnJhY2tldChJbkZpbGVuYW1lVmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdE9wZW5CcmFja2V0SW5GaWxlbmFtZVZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJPcGVuQnJhY2tldChJbkZpbGVuYW1lVmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIk9wZW5CcmFja2V0SW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIk9wZW5CcmFja2V0SW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiT3BlbkJyYWNrZXRJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL09wZW5CcmFja2V0SW5GaWxlbmFtZS9PcGVuQnJhY2tldChJbkZpbGVuYW1lSW52YWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0T3BlbkJyYWNrZXRJbkZpbGVuYW1lSW52YWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiT3BlbkJyYWNrZXQoSW5GaWxlbmFtZUludmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIk9wZW5CcmFja2V0SW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIk9wZW5CcmFja2V0SW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiT3BlbkJyYWNrZXRJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL1BlcmlvZC5JblBhdGgvUGVyaW9kSW5QYXRoVmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFBlcmlvZEluUGF0aFZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJQZXJpb2RJblBhdGhWYWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiUGVyaW9kLkluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlBlcmlvZC5JblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlBlcmlvZC5JblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvUGVyaW9kLkluUGF0aC9QZXJpb2RJblBhdGhJbnZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RQZXJpb2RJblBhdGhJbnZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJQZXJpb2RJblBhdGhJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJQZXJpb2QuSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiUGVyaW9kLkluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiUGVyaW9kLkluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9QZXJpb2RJbkZpbGVuYW1lL1BlcmlvZC5JbkZpbGVuYW1lVmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFBlcmlvZEluRmlsZW5hbWVWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiUGVyaW9kLkluRmlsZW5hbWVWYWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiUGVyaW9kSW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlBlcmlvZEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlBlcmlvZEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvUGVyaW9kSW5GaWxlbmFtZS9QZXJpb2QuSW5GaWxlbmFtZUludmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFBlcmlvZEluRmlsZW5hbWVJbnZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJQZXJpb2QuSW5GaWxlbmFtZUludmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIlBlcmlvZEluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJQZXJpb2RJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJQZXJpb2RJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL1F1b3RlJ0luUGF0aC9RdW90ZUluUGF0aFZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RRdW90ZUluUGF0aFZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJRdW90ZUluUGF0aFZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJRdW90ZSdJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJRdW90ZSdJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlF1b3RlJ0luUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9RdW90ZSdJblBhdGgvUXVvdGVJblBhdGhJbnZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RRdW90ZUluUGF0aEludmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlF1b3RlSW5QYXRoSW52YWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiUXVvdGUnSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiUXVvdGUnSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJRdW90ZSdJblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvUXVvdGVJbkZpbGVuYW1lL1F1b3RlJ0luRmlsZW5hbWVWYWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UXVvdGVJbkZpbGVuYW1lVmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlF1b3RlJ0luRmlsZW5hbWVWYWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiUXVvdGVJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiUXVvdGVJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJRdW90ZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvUXVvdGVJbkZpbGVuYW1lL1F1b3RlJ0luRmlsZW5hbWVJbnZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RRdW90ZUluRmlsZW5hbWVJbnZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJRdW90ZSdJbkZpbGVuYW1lSW52YWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiUXVvdGVJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiUXVvdGVJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJRdW90ZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvU3BhY2VJbkZpbGVuYW1lL1NwYWNlIEluRmlsZW5hbWVWYWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0U3BhY2VJbkZpbGVuYW1lVmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlNwYWNlIEluRmlsZW5hbWVWYWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiU3BhY2VJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiU3BhY2VJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJTcGFjZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvU3BhY2VJbkZpbGVuYW1lL1NwYWNlIEluRmlsZW5hbWVJbnZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RTcGFjZUluRmlsZW5hbWVJbnZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJTcGFjZSBJbkZpbGVuYW1lSW52YWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiU3BhY2VJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiU3BhY2VJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJTcGFjZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvVGlsZGV+SW5QYXRoL1RpbGRlSW5QYXRoVmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFRpbGRlSW5QYXRoVmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlRpbGRlSW5QYXRoVmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIlRpbGRlfkluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlRpbGRlfkluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiVGlsZGV+SW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL1RpbGRlfkluUGF0aC9UaWxkZUluUGF0aEludmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFRpbGRlSW5QYXRoSW52YWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiVGlsZGVJblBhdGhJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJUaWxkZX5JblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJUaWxkZX5JblBhdGgvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlRpbGRlfkluUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9UaWxkZUluRmlsZW5hbWUvVGlsZGV+SW5GaWxlbmFtZVZhbGlkLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RUaWxkZUluRmlsZW5hbWVWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiVGlsZGV+SW5GaWxlbmFtZVZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJUaWxkZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJUaWxkZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlRpbGRlSW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9UaWxkZUluRmlsZW5hbWUvVGlsZGV+SW5GaWxlbmFtZUludmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFRpbGRlSW5GaWxlbmFtZUludmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlRpbGRlfkluRmlsZW5hbWVJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJUaWxkZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJUaWxkZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlRpbGRlSW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9VbmRlcnNjb3JlX0luUGF0aC9VbmRlcnNjb3JlSW5QYXRoVmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFVuZGVyc2NvcmVJblBhdGhWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiVW5kZXJzY29yZUluUGF0aFZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJVbmRlcnNjb3JlX0luUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlVuZGVyc2NvcmVfSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJVbmRlcnNjb3JlX0luUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9VbmRlcnNjb3JlX0luUGF0aC9VbmRlcnNjb3JlSW5QYXRoSW52YWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0VW5kZXJzY29yZUluUGF0aEludmFsaWQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlVuZGVyc2NvcmVJblBhdGhJbnZhbGlkIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFBBVEhTX0RJUiArICJVbmRlcnNjb3JlX0luUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlVuZGVyc2NvcmVfSW5QYXRoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJVbmRlcnNjb3JlX0luUGF0aC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9QYXRocy9VbmRlcnNjb3JlSW5GaWxlbmFtZS9VbmRlcnNjb3JlX0luRmlsZW5hbWVWYWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0VW5kZXJzY29yZUluRmlsZW5hbWVWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiVW5kZXJzY29yZV9JbkZpbGVuYW1lVmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIlVuZGVyc2NvcmVJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiVW5kZXJzY29yZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlVuZGVyc2NvcmVJbkZpbGVuYW1lLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1BhdGhzL1VuZGVyc2NvcmVJbkZpbGVuYW1lL1VuZGVyc2NvcmVfSW5GaWxlbmFtZUludmFsaWQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFVuZGVyc2NvcmVJbkZpbGVuYW1lSW52YWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiVW5kZXJzY29yZV9JbkZpbGVuYW1lSW52YWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiVW5kZXJzY29yZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJVbmRlcnNjb3JlSW5GaWxlbmFtZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBQQVRIU19ESVIgKyAiVW5kZXJzY29yZUluRmlsZW5hbWUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvUGF0aHMvUGxhdGZvcm1VUkwvb25lLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RQbGF0Zm9ybVVSTCgpCi0gIHsKLQlTdHJpbmcgdGVzdG5hbWUgPSAib25lIjsKLQlTdHJpbmcgdGVzdGZpbGUgPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgUEFUSFNfRElSICsgIlBsYXRmb3JtVVJMLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0JU3RyaW5nIHRlc3RmaWxlMiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBQQVRIU19ESVIgKyAiUGxhdGZvcm1VUkwvdHdvLndzZGwiOwotCVN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgUEFUSFNfRElSICsgIlBsYXRmb3JtVVJMLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotCVN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFBBVEhTX0RJUiArICJQbGF0Zm9ybVVSTC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLQkgCi0JY3JlYXRlU2ltcGxlUHJvamVjdCgidGVzdCIsIG5ldyBTdHJpbmdbXXt0ZXN0ZmlsZSx0ZXN0ZmlsZTJ9KTsKLQkKLQlydW5UZXN0KEZJTEVfUFJPVE9DT0wgKyB0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL1dTRExUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL1dTRExUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOWU3ZTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi90ZXN0cy9pbnRlcm5hbC9XU0RMVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjgwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICogCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy5pbnRlcm5hbDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLS8qKgotICogV1NETCB2YWxpZGF0aW9uIHRlc3RzIGZvciB0aGUgV1NETCB2YWxpZGF0b3IuCi0gKi8KLXB1YmxpYyBjbGFzcyBXU0RMVGVzdCBleHRlbmRzIEJhc2VUZXN0Q2FzZQotewotICBwcml2YXRlIFN0cmluZyBXU0RMX0RJUiA9ICJXU0RMLyI7Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgdGVzdHMgc3VpdGUgZnJvbSB0aGlzIHRlc3QgY2xhc3MuCi0gICAqIAotICAgKiBAcmV0dXJuIEEgdGVzdCBzdWl0ZSBjb250YWluaW5nIHRoaXMgdGVzdCBjbGFzcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShXU0RMVGVzdC5jbGFzcyk7Ci0gIH0KLSAgCi0gIC8qIChub24tSmF2YWRvYykKLSAgICogQHNlZSBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2Ujc2V0VXAoKQotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uCi0gIHsKLSAgICBzdXBlci5zZXRVcCgpOwotICB9Ci0gIAotICAvKiAobm9uLUphdmFkb2MpCi0gICAqIEBzZWUganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlI3RlYXJEb3duKCkKLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHRlYXJEb3duKCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgLy8gRGVsZXRlIHRoZSBzaW1wbGUgcHJvamVjdCBmb3IgSW1wb3J0ZWRTY2hlbWFXaXRoU2NoZW1hSW1wb3J0IHRlc3QKLSAgICBzdXBlci50ZWFyRG93bigpOwotICB9Ci0gIAotICAvKioKLSAgICogSU1QT1JUIFRFU1RTCi0gICAqLwotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvSW1wb3J0L0ltcG9ydFNjaGVtYVdpdGhXU0RMSW1wb3J0LndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbXBvcnRTY2hlbWFXaXRoV1NETEltcG9ydCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvSW1wb3J0L0ltcG9ydFNjaGVtYVdpdGhXU0RMSW1wb3J0SW52YWxpZE5TLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbXBvcnRTY2hlbWFXaXRoV1NETEltcG9ydEludmFsaWROUygpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnRJbnZhbGlkTlMiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvSW1wb3J0L0ltcG9ydFdTRExXaXRoV1NETC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0SW1wb3J0V1NETFdpdGhXU0RMKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJJbXBvcnRXU0RMV2l0aFdTREwiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvSW1wb3J0V1NETFdpdGhXU0RMSW52YWxpZE5TLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbXBvcnRXU0RMV2l0aFdTRExJbnZhbGlkTlMoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkltcG9ydFdTRExXaXRoV1NETEludmFsaWROUyI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvSW1wb3J0V1NETFdpdGhXU0RMSW52YWxpZEZpbGVuYW1lLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbXBvcnRXU0RMV2l0aFdTRExJbnZhbGlkRmlsZW5hbWUoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkltcG9ydFdTRExXaXRoV1NETEludmFsaWRGaWxlbmFtZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvV1NETEltcG9ydGluZ1R5cGVzLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RXU0RMSW1wb3J0aW5nVHlwZXMoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIldTRExJbXBvcnRpbmdUeXBlcyI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvSW1wb3J0Tm9uRXhpc3RhbnRGaWxlLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbXBvcnROb25FeGlzdGFudEZpbGUoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkltcG9ydE5vbkV4aXN0YW50RmlsZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvV1NETE5hbWVzcGFjZUFBQS53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0V1NETE5hbWVzcGFjZUFBQSgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiV1NETE5hbWVzcGFjZUFBQSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvSW1wb3J0aW5nV1NETFdpdGhJbXBvcnRlZFNjaGVtYS53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0SW1wb3J0aW5nV1NETFdpdGhJbXBvcnRlZFNjaGVtYSgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiSW1wb3J0aW5nV1NETFdpdGhJbXBvcnRlZFNjaGVtYSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvV1NETEltcG9ydGluZ1NjaGVtYUlubXBvcnRpbmdTY2hlbWEud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFdTRExJbXBvcnRpbmdTY2hlbWFJbm1wb3J0aW5nU2NoZW1hKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJXU0RMSW1wb3J0aW5nU2NoZW1hSW1wb3J0aW5nU2NoZW1hIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML0ltcG9ydC9JbXBvcnRYTUxJbnZhbGlkV1NETC9JbXBvcnRYTUxJbnZhbGlkV1NETC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0SW1wb3J0WE1MSW52YWxpZFdTREwoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkltcG9ydFhNTEludmFsaWRXU0RMIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9JbXBvcnRYTUxJbnZhbGlkV1NETC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L0ltcG9ydFhNTEludmFsaWRXU0RMLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9JbXBvcnRYTUxJbnZhbGlkV1NETC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML0ltcG9ydC9BbHBoYWJldGljYWxPcmRlck9mSW1wb3J0cy9JbXBvcnRPbmVBbmRUd28ud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEltcG9ydE9uZUFuZFR3bygpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiSW1wb3J0T25lQW5kVHdvIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9BbHBoYWJldGljYWxPcmRlck9mSW1wb3J0cy8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L0FscGhhYmV0aWNhbE9yZGVyT2ZJbXBvcnRzLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9BbHBoYWJldGljYWxPcmRlck9mSW1wb3J0cy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML0ltcG9ydC9BbHBoYWJldGljYWxPcmRlck9mSW1wb3J0cy9vbmUud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEltcG9ydE9uZUFuZFR3b19PbmUoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIm9uZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9BbHBoYWJldGljYWxPcmRlck9mSW1wb3J0cy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvdHdvLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbXBvcnRPbmVBbmRUd29fVHdvKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJ0d28iOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L0FscGhhYmV0aWNhbE9yZGVyT2ZJbXBvcnRzLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L0FscGhhYmV0aWNhbE9yZGVyT2ZJbXBvcnRzLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvSW1wb3J0L0ltcG9ydEVtcHR5TG9jYXRpb24vSW1wb3J0RW1wdHlMb2NhdGlvbi53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0SW1wb3J0RW1wdHlMb2NhdGlvbigpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiSW1wb3J0RW1wdHlMb2NhdGlvbiI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvSW1wb3J0RW1wdHlMb2NhdGlvbi8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L0ltcG9ydEVtcHR5TG9jYXRpb24vIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L0ltcG9ydEVtcHR5TG9jYXRpb24vIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2UvSW1wb3J0RW1wdHlOYW1lc3BhY2Uud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEltcG9ydEVtcHR5TmFtZXNwYWNlKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJJbXBvcnRFbXB0eU5hbWVzcGFjZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2UvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9JbXBvcnRFbXB0eU5hbWVzcGFjZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2UvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2VBbmRMb2NhdGlvbi9JbXBvcnRFbXB0eU5hbWVzcGFjZUFuZExvY2F0aW9uLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbXBvcnRFbXB0eU5hbWVzcGFjZUFuZExvY2F0aW9uKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJJbXBvcnRFbXB0eU5hbWVzcGFjZUFuZExvY2F0aW9uIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9JbXBvcnRFbXB0eU5hbWVzcGFjZUFuZExvY2F0aW9uLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2VBbmRMb2NhdGlvbi8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2VBbmRMb2NhdGlvbi8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML0ltcG9ydC9JbXBvcnROb0xvY2F0aW9uQXR0cmlidXRlL0ltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L0ltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9JbXBvcnROb0xvY2F0aW9uQXR0cmlidXRlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9JbXBvcnROb0xvY2F0aW9uQXR0cmlidXRlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvSW1wb3J0L1NpbXBsZUltcG9ydC90ZXN0LTEuMC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0U2ltcGxlSW1wb3J0KCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJ0ZXN0LTEuMCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvU2ltcGxlSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvU2ltcGxlSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkltcG9ydC9TaW1wbGVJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9JbXBvcnQvSW1wb3J0V2l0aEluY29ycmVjdFNsYXNoL0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0SW1wb3J0V2l0aEluY29ycmVjdFNsYXNoKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJJbXBvcnRXaXRoSW5jb3JyZWN0U2xhc2giOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvSW1wb3J0V2l0aEluY29ycmVjdFNsYXNoLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvSW1wb3J0L05vU2NoZW1lU2NoZW1hTmFtZXNwYWNlSW1wb3J0L05vU2NoZW1lU2NoZW1hTmFtZXNwYWNlSW1wb3J0LndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3ROb1NjaGVtZVNjaGVtYU5hbWVzcGFjZUltcG9ydCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiTm9TY2hlbWVTY2hlbWFOYW1lc3BhY2VJbXBvcnQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L05vU2NoZW1lU2NoZW1hTmFtZXNwYWNlSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbXBvcnQvTm9TY2hlbWVTY2hlbWFOYW1lc3BhY2VJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiSW1wb3J0L05vU2NoZW1lU2NoZW1hTmFtZXNwYWNlSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIENZQ0xJQyBURVNUUwotICAgKi8KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML0N5Y2xpYy9Qb3J0dHlwZVJlZk1lc3NhZ2UxLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RQb3J0dHlwZVJlZk1lc3NhZ2UxKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJQb3J0dHlwZVJlZk1lc3NhZ2UxIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIkN5Y2xpYy8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiQ3ljbGljLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkN5Y2xpYy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML0N5Y2xpYy9Qb3J0dHlwZVJlZk1lc3NhZ2UyLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RQb3J0dHlwZVJlZk1lc3NhZ2UyKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJQb3J0dHlwZVJlZk1lc3NhZ2UyIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIkN5Y2xpYy8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiQ3ljbGljLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkN5Y2xpYy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML1NlbGZDb250YWluZWQvUmVmZXJlbmNlSW5saW5lVHlwZXMud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFJlZmVyZW5jZUlubGluZVR5cGVzKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJSZWZlcmVuY2VJbmxpbmVUeXBlcyI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJTZWxmQ29udGFpbmVkLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJTZWxmQ29udGFpbmVkLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlNlbGZDb250YWluZWQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9TZWxmQ29udGFpbmVkL0VtcHR5LndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RFbXB0eSgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiRW1wdHkiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiU2VsZkNvbnRhaW5lZC8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiU2VsZkNvbnRhaW5lZC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJTZWxmQ29udGFpbmVkLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvU2VsZkNvbnRhaW5lZC9TT0FQQm9keUVuY29kZWROb05hbWVzcGFjZS53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0U09BUEJvZHlFbmNvZGVkTm9OYW1lc3BhY2UoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlNPQVBCb2R5RW5jb2RlZE5vTmFtZXNwYWNlIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIlNlbGZDb250YWluZWQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlNlbGZDb250YWluZWQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiU2VsZkNvbnRhaW5lZC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML1NlbGZDb250YWluZWQvU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZS53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0U09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZSgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJTZWxmQ29udGFpbmVkLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJTZWxmQ29udGFpbmVkLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlNlbGZDb250YWluZWQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9TZWxmQ29udGFpbmVkL05vRGVmYXVsdE5hbWVzcGFjZS9Ob0RlZmF1bHROYW1lc3BhY2Uud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdE5vRGVmYXVsdE5hbWVzcGFjZSgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiTm9EZWZhdWx0TmFtZXNwYWNlIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIlNlbGZDb250YWluZWQvTm9EZWZhdWx0TmFtZXNwYWNlLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJTZWxmQ29udGFpbmVkL05vRGVmYXVsdE5hbWVzcGFjZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJTZWxmQ29udGFpbmVkL05vRGVmYXVsdE5hbWVzcGFjZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML0JpbmRpbmdFbGVtZW50L0ludmFsaWRTdHlsZS9CaW5kaW5nSW52YWxpZFN0eWxlLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RCaW5kaW5nSW52YWxpZFN0eWxlKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJCaW5kaW5nSW52YWxpZFN0eWxlIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIkJpbmRpbmdFbGVtZW50L0ludmFsaWRTdHlsZS8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiQmluZGluZ0VsZW1lbnQvSW52YWxpZFN0eWxlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkJpbmRpbmdFbGVtZW50L0ludmFsaWRTdHlsZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML0JpbmRpbmdFbGVtZW50L0ludmFsaWRVc2UvQmluZGluZ0ludmFsaWRVc2Uud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEJpbmRpbmdJbnZhbGlkVXNlKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJCaW5kaW5nSW52YWxpZFVzZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJCaW5kaW5nRWxlbWVudC9JbnZhbGlkVXNlLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJCaW5kaW5nRWxlbWVudC9JbnZhbGlkVXNlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkJpbmRpbmdFbGVtZW50L0ludmFsaWRVc2UvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9NZXNzYWdlRWxlbWVudC9JbnZhbGlkRWxlbWVudC9NZXNzYWdlSW52YWxpZEVsZW1lbnQud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdE1lc3NhZ2VJbnZhbGlkRWxlbWVudCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiTWVzc2FnZUludmFsaWRFbGVtZW50IjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIk1lc3NhZ2VFbGVtZW50L0ludmFsaWRFbGVtZW50LyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJNZXNzYWdlRWxlbWVudC9JbnZhbGlkRWxlbWVudC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJNZXNzYWdlRWxlbWVudC9JbnZhbGlkRWxlbWVudC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML01lc3NhZ2VFbGVtZW50L0ludmFsaWRUeXBlL01lc3NhZ2VJbnZhbGlkVHlwZS53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0TWVzc2FnZUludmFsaWRUeXBlKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJNZXNzYWdlSW52YWxpZFR5cGUiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiTWVzc2FnZUVsZW1lbnQvSW52YWxpZFR5cGUvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIk1lc3NhZ2VFbGVtZW50L0ludmFsaWRUeXBlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIk1lc3NhZ2VFbGVtZW50L0ludmFsaWRUeXBlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvUG9ydFR5cGVFbGVtZW50L0ludmFsaWRJbnB1dC9Qb3J0VHlwZUludmFsaWRJbnB1dC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UG9ydFR5cGVJbnZhbGlkSW5wdXQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlBvcnRUeXBlSW52YWxpZElucHV0IjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIlBvcnRUeXBlRWxlbWVudC9JbnZhbGlkSW5wdXQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlBvcnRUeXBlRWxlbWVudC9JbnZhbGlkSW5wdXQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiUG9ydFR5cGVFbGVtZW50L0ludmFsaWRJbnB1dC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML1BvcnRUeXBlRWxlbWVudC9JbnZhbGlkT3V0cHV0L1BvcnRUeXBlSW52YWxpZE91dHB1dC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UG9ydFR5cGVJbnZhbGlkT3V0cHV0KCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJQb3J0VHlwZUludmFsaWRPdXRwdXQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiUG9ydFR5cGVFbGVtZW50L0ludmFsaWRPdXRwdXQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlBvcnRUeXBlRWxlbWVudC9JbnZhbGlkT3V0cHV0LyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlBvcnRUeXBlRWxlbWVudC9JbnZhbGlkT3V0cHV0LyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvU2VydmljZUVsZW1lbnQvSW52YWxpZEJpbmRpbmcvU2VydmljZUludmFsaWRCaW5kaW5nLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RTZXJ2aWNlSW52YWxpZEJpbmRpbmcoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlNlcnZpY2VJbnZhbGlkQmluZGluZyI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJTZXJ2aWNlRWxlbWVudC9JbnZhbGlkQmluZGluZy8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiU2VydmljZUVsZW1lbnQvSW52YWxpZEJpbmRpbmcvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiU2VydmljZUVsZW1lbnQvSW52YWxpZEJpbmRpbmcvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9TZXJ2aWNlRWxlbWVudC9Ob0FkZHJlc3MvU2VydmljZU5vQWRkcmVzcy53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0U2VydmljZU5vQWRkcmVzcygpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiU2VydmljZU5vQWRkcmVzcyI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJTZXJ2aWNlRWxlbWVudC9Ob0FkZHJlc3MvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlNlcnZpY2VFbGVtZW50L05vQWRkcmVzcy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJTZXJ2aWNlRWxlbWVudC9Ob0FkZHJlc3MvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9DYXNlSW5zZW5zaXRpdmVPcGVyYXRpb25OYW1lcy9DYXNlSW5zZW5zaXRpdmVPcGVyYXRpb25OYW1lcy53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0Q2FzZUluc2Vuc2l0aXZlT3BlcmF0aW9uTmFtZXMoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkNhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbk5hbWVzIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIkNhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbk5hbWVzLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJDYXNlSW5zZW5zaXRpdmVPcGVyYXRpb25OYW1lcy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJDYXNlSW5zZW5zaXRpdmVPcGVyYXRpb25OYW1lcy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML05hbWVzcGFjZURvZXNudFJlc29sdmUvTmFtZXNwYWNlRG9lc250UmVzb2x2ZS53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0TmFtZXNwYWNlRG9lc250UmVzb2x2ZSgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiTmFtZXNwYWNlRG9lc250UmVzb2x2ZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJOYW1lc3BhY2VEb2VzbnRSZXNvbHZlLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJOYW1lc3BhY2VEb2VzbnRSZXNvbHZlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIk5hbWVzcGFjZURvZXNudFJlc29sdmUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9OYW1lc3BhY2VSZXNvbHZlc0hUTUwvTmFtZXNwYWNlUmVzb2x2ZXNIVE1MLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3ROYW1lc3BhY2VSZXNvbHZlc0hUTUwoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIk5hbWVzcGFjZVJlc29sdmVzSFRNTCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJOYW1lc3BhY2VSZXNvbHZlc0hUTUwvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIk5hbWVzcGFjZVJlc29sdmVzSFRNTC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJOYW1lc3BhY2VSZXNvbHZlc0hUTUwvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9TZWxmSW1wb3J0L1NpbXBsZUZpbGUvU2VsZkltcG9ydC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0U2ltcGxlZmlsZVNlbGZJbXBvcnQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlNlbGZJbXBvcnQiOwotICAgIFN0cmluZyBmaWxlcHJlZml4ID0gRklMRV9QUk9UT0NPTDsKLSAgICAvLyBOZWVkIHRvIGVuc3VyZSB0aGUgVVJMIG9mIHRoZSB0ZXN0IGZpbGUgaXMgYXMgZXhwZWN0ZWQuCi0gICAgaWYoUExVR0lOX0FCU09MVVRFX1BBVEguc3RhcnRzV2l0aCgiLyIpKQotICAgIHsKLSAgICAgIGZpbGVwcmVmaXggPSBmaWxlcHJlZml4LnN1YnN0cmluZygwLCBmaWxlcHJlZml4Lmxlbmd0aCgpLTEpOwotICAgIH0KLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBmaWxlcHJlZml4ICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIlNlbGZJbXBvcnQvU2ltcGxlRmlsZS8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiU2VsZkltcG9ydC9TaW1wbGVGaWxlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlNlbGZJbXBvcnQvU2ltcGxlRmlsZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML1NlbGZJbXBvcnQvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0L0ltcG9ydEZpbGVXaXRoU2VsZkltcG9ydC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0SW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0KCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJJbXBvcnRGaWxlV2l0aFNlbGZJbXBvcnQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgV1NETF9ESVIgKyAiU2VsZkltcG9ydC9JbXBvcnRGaWxlV2l0aFNlbGZJbXBvcnQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlNlbGZJbXBvcnQvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlNlbGZJbXBvcnQvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0LyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1dTREwvU2VsZkltcG9ydC9TaW1wbGVGaWxlSW52YWxpZC9TZWxmSW1wb3J0LndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RTaW1wbGVGaWxlSW52YWxpZFNlbGZJbXBvcnQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlNlbGZJbXBvcnQiOwotICAgIFN0cmluZyBmaWxlcHJlZml4ID0gRklMRV9QUk9UT0NPTDsKLSAgICAvLyBOZWVkIHRvIGVuc3VyZSB0aGUgVVJMIG9mIHRoZSB0ZXN0IGZpbGUgaXMgYXMgZXhwZWN0ZWQuCi0gICAgaWYoUExVR0lOX0FCU09MVVRFX1BBVEguc3RhcnRzV2l0aCgiLyIpKQotICAgIHsKLSAgICAgIGZpbGVwcmVmaXggPSBmaWxlcHJlZml4LnN1YnN0cmluZygwLCBmaWxlcHJlZml4Lmxlbmd0aCgpLTEpOwotICAgIH0KLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBmaWxlcHJlZml4ICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFdTRExfRElSICsgIlNlbGZJbXBvcnQvU2ltcGxlRmlsZUludmFsaWQvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIlNlbGZJbXBvcnQvU2ltcGxlRmlsZUludmFsaWQvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgV1NETF9ESVIgKyAiU2VsZkltcG9ydC9TaW1wbGVGaWxlSW52YWxpZC8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9XU0RML0ludmFsaWRTY2hlbWFXaXRoUGFydFJlZmVyZW5jZXMvSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcy53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0SW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcygpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcyI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJJbnZhbGlkU2NoZW1hV2l0aFBhcnRSZWZlcmVuY2VzLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJJbnZhbGlkU2NoZW1hV2l0aFBhcnRSZWZlcmVuY2VzLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkludmFsaWRTY2hlbWFXaXRoUGFydFJlZmVyZW5jZXMvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvQmFkRXh0ZW5zaWJsZUVsZW1lbnRzLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RCYWRFeHRlbnNpYmxlRWxlbWVudHMoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkJhZEV4dGVuc2libGVFbGVtZW50cyI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJFeHRlbnNpYmxlRWxlbWVudHMvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkV4dGVuc2libGVFbGVtZW50cy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJFeHRlbnNpYmxlRWxlbWVudHMvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZUJpbmRpbmcud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEV4dGVuc2libGVCaW5kaW5nKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJFeHRlbnNpYmxlQmluZGluZyI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJFeHRlbnNpYmxlRWxlbWVudHMvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkV4dGVuc2libGVFbGVtZW50cy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJFeHRlbnNpYmxlRWxlbWVudHMvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZVBvcnRUeXBlLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RFeHRlbnNpYmxlUG9ydFR5cGUoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkV4dGVuc2libGVQb3J0VHlwZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJFeHRlbnNpYmxlRWxlbWVudHMvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkV4dGVuc2libGVFbGVtZW50cy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJFeHRlbnNpYmxlRWxlbWVudHMvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZVNlcnZpY2VQb3J0LndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RFeHRlbnNpYmxlU2VydmljZVBvcnQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkV4dGVuc2libGVTZXJ2aWNlUG9ydCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBXU0RMX0RJUiArICJFeHRlbnNpYmxlRWxlbWVudHMvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFdTRExfRElSICsgIkV4dGVuc2libGVFbGVtZW50cy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBXU0RMX0RJUiArICJFeHRlbnNpYmxlRWxlbWVudHMvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL1dTRExWYWxpZGF0b3JUZXN0c1BsdWdpbi5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi90ZXN0cy9pbnRlcm5hbC9XU0RMVmFsaWRhdG9yVGVzdHNQbHVnaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUxZWFlZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL1dTRExWYWxpZGF0b3JUZXN0c1BsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMSwgMjAwNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKiAKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzLmludGVybmFsOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5GaWxlTG9jYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbjsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwotCi0vKioKLSAqIFRoZSBtYWluIHBsdWdpbiBjbGFzcyB0byBiZSB1c2VkIGluIHRoZSBkZXNrdG9wLgotICovCi1wdWJsaWMgY2xhc3MgV1NETFZhbGlkYXRvclRlc3RzUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbgotewotICAvL1RoZSBzaGFyZWQgaW5zdGFuY2UuCi0gIHByaXZhdGUgc3RhdGljIFdTRExWYWxpZGF0b3JUZXN0c1BsdWdpbiBwbHVnaW47Ci0gIHByaXZhdGUgc3RhdGljIEJ1bmRsZSBwbHVnaW5CdW5kbGUgPSBudWxsOwotCi0gIC8qKgotICAgKiBUaGUgY29uc3RydWN0b3IuCi0gICAqLwotICBwdWJsaWMgV1NETFZhbGlkYXRvclRlc3RzUGx1Z2luKCkKLSAgewotICAgIHN1cGVyKCk7Ci0gICAgcGx1Z2luID0gdGhpczsKLSAgfQotCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdXBvbiBwbHVnLWluIGFjdGl2YXRpb24KLSAgICovCi0gIHB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgc3VwZXIuc3RhcnQoY29udGV4dCk7Ci0JcGx1Z2luQnVuZGxlID0gY29udGV4dC5nZXRCdW5kbGUoKTsKLSAgfQotCi0gIC8qKgotICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgcGx1Zy1pbiBpcyBzdG9wcGVkCi0gICAqLwotICBwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbgotICB7Ci0gICAgc3VwZXIuc3RvcChjb250ZXh0KTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIFdTRExWYWxpZGF0b3JUZXN0c1BsdWdpbiBnZXREZWZhdWx0KCkKLSAgewotICAgIHJldHVybiBwbHVnaW47Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIGluc3RhbGwgVVJMIG9mIHRoaXMgcGx1Z2luLgotICAgKiAKLSAgICogQHJldHVybiB0aGUgaW5zdGFsbCB1cmwgb2YgdGhpcyBwbHVnaW4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEluc3RhbGxVUkwoKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgcmV0dXJuIEZpbGVMb2NhdG9yLnJlc29sdmUocGx1Z2luQnVuZGxlLmdldEVudHJ5KCIvIikpLmdldEZpbGUoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0gICAgewotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzZGwvdmFsaWRhdGlvbi90ZXN0cy9pbnRlcm5hbC9YU0RUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL1hTRFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM4MWZkYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NkbC92YWxpZGF0aW9uL3Rlc3RzL2ludGVybmFsL1hTRFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIzNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqIAotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMuaW50ZXJuYWw7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi0vKioKLSAqIFhTRCB2YWxpZGF0aW9uIHRlc3RzIGZvciB0aGUgV1NETCB2YWxpZGF0b3IuCi0gKi8KLXB1YmxpYyBjbGFzcyBYU0RUZXN0IGV4dGVuZHMgQmFzZVRlc3RDYXNlCi17Ci0gIHByaXZhdGUgU3RyaW5nIFhTRF9ESVIgPSAiWFNELyI7Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgdGVzdHMgc3VpdGUgZnJvbSB0aGlzIHRlc3QgY2xhc3MuCi0gICAqIAotICAgKiBAcmV0dXJuIEEgdGVzdCBzdWl0ZSBjb250YWluaW5nIHRoaXMgdGVzdCBjbGFzcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gIHsKLSAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShYU0RUZXN0LmNsYXNzKTsKLSAgfQotICAKLSAgLyogKG5vbi1KYXZhZG9jKQotICAgKiBAc2VlIGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZSNzZXRVcCgpCi0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24KLSAgewotICAgIHN1cGVyLnNldFVwKCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9YU0QvRW50aXRpZXMvbm9ybWFsaXplRW50aXRpZXNWYWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0Tm9ybWFsaXplRW50aXRpZXNWYWxpZCgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAibm9ybWFsaXplRW50aXRpZXNWYWxpZCI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBYU0RfRElSICsgIkVudGl0aWVzLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIkVudGl0aWVzLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFhTRF9ESVIgKyAiRW50aXRpZXMvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvWFNEL0VudGl0aWVzL25vcm1hbGl6ZUVudGl0aWVzSW52YWxpZC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0Tm9ybWFsaXplRW50aXRpZXNJbnZhbGlkKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJub3JtYWxpemVFbnRpdGllc0ludmFsaWQiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgWFNEX0RJUiArICJFbnRpdGllcy8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgWFNEX0RJUiArICJFbnRpdGllcy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIkVudGl0aWVzLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1hTRC9SZWZlclRvQW5vdGhlcklubGluZVR5cGUvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RSZWZlclRvQW5vdGhlcklubGluZVR5cGUoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlJlZmVyVG9Bbm90aGVySW5saW5lVHlwZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBYU0RfRElSICsgIlJlZmVyVG9Bbm90aGVySW5saW5lVHlwZS8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgWFNEX0RJUiArICJSZWZlclRvQW5vdGhlcklubGluZVR5cGUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgWFNEX0RJUiArICJSZWZlclRvQW5vdGhlcklubGluZVR5cGUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvWFNEL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS9SZWZlclRvQW5vdGhlcklubGluZVR5cGVOb0ltcG9ydC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0UmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlTm9JbXBvcnQoKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlJlZmVyVG9Bbm90aGVySW5saW5lVHlwZU5vSW1wb3J0IjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFhTRF9ESVIgKyAiUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIlJlZmVyVG9Bbm90aGVySW5saW5lVHlwZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIlJlZmVyVG9Bbm90aGVySW5saW5lVHlwZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9YU0QvSW5saW5lU2NoZW1hR2VuZXJhdGVkSW1wb3J0cy9Ob0ltcG9ydEZvclVucHJlZml4ZWRBdHRyaWJ1dGUud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdE5vSW1wb3J0Rm9yVW5wcmVmaXhlZEF0dHJpYnV0ZSgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiTm9JbXBvcnRGb3JVbnByZWZpeGVkQXR0cmlidXRlIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFhTRF9ESVIgKyAiSW5saW5lU2NoZW1hR2VuZXJhdGVkSW1wb3J0cy8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgWFNEX0RJUiArICJJbmxpbmVTY2hlbWFHZW5lcmF0ZWRJbXBvcnRzLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFhTRF9ESVIgKyAiSW5saW5lU2NoZW1hR2VuZXJhdGVkSW1wb3J0cy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9YU0QvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNEL09uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRC53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0T25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNEKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJPbmVFcnJvckZvcklubGluZVhTRFJlZkludmFsaWRJbmxpbmVYU0QiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgWFNEX0RJUiArICJPbmVFcnJvckZvcklubGluZVhTRFJlZkludmFsaWRJbmxpbmVYU0QvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFhTRF9ESVIgKyAiT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNELyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFhTRF9ESVIgKyAiT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNELyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1hTRC9TY2hlbWFEb2NFbGVtV2l0aFNvdXJjZUFuZFN1YkVsZW0vU2NoZW1hRG9jRWxlbVdpdGhTb3VyY2VBbmRTdWJFbGVtLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RTY2hlbWFEb2NFbGVtV2l0aFNvdXJjZUFuZFN1YkVsZW0oKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIlNjaGVtYURvY0VsZW1XaXRoU291cmNlQW5kU3ViRWxlbSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBYU0RfRElSICsgIlNjaGVtYURvY0VsZW1XaXRoU291cmNlQW5kU3ViRWxlbS8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgWFNEX0RJUiArICJTY2hlbWFEb2NFbGVtV2l0aFNvdXJjZUFuZFN1YkVsZW0vIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgWFNEX0RJUiArICJTY2hlbWFEb2NFbGVtV2l0aFNvdXJjZUFuZFN1YkVsZW0vIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvWFNEL1Jlc3RyaWN0aW9uUGF0dGVybldpdGhDb2xvbi9SZXN0cmljdGlvblBhdHRlcm5XaXRoQ29sb24ud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdFJlc3RyaWN0aW9uUGF0dGVybldpdGhDb2xvbigpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiUmVzdHJpY3Rpb25QYXR0ZXJuV2l0aENvbG9uIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFhTRF9ESVIgKyAiUmVzdHJpY3Rpb25QYXR0ZXJuV2l0aENvbG9uLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIlJlc3RyaWN0aW9uUGF0dGVybldpdGhDb2xvbi8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIlJlc3RyaWN0aW9uUGF0dGVybldpdGhDb2xvbi8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9YU0QvSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUvSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEltcG9ydElubGluZVNjaGVtYVdpdGhJbmNsdWRlKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJJbXBvcnRJbmxpbmVTY2hlbWFXaXRoSW5jbHVkZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBYU0RfRElSICsgIkltcG9ydElubGluZVNjaGVtYVdpdGhJbmNsdWRlLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIkltcG9ydElubGluZVNjaGVtYVdpdGhJbmNsdWRlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFhTRF9ESVIgKyAiSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvWFNEL1ZhbHVlQ29sb24vVmFsdWVDb2xvbi53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0VmFsdWVDb2xvbigpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiVmFsdWVDb2xvbiI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBYU0RfRElSICsgIlZhbHVlQ29sb24vIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFhTRF9ESVIgKyAiVmFsdWVDb2xvbi8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIlZhbHVlQ29sb24vIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvWFNEL0ltcG9ydE5vTlNTY2hlbWEvSW1wb3J0Tm9OU1NjaGVtYS53c2RsCi0gICAqLwotICBwdWJsaWMgdm9pZCB0ZXN0SW1wb3J0Tm9OU1NjaGVtYSgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiSW1wb3J0Tm9OU1NjaGVtYSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBYU0RfRElSICsgIkltcG9ydE5vTlNTY2hlbWEvIiArIHRlc3RuYW1lICsgIi53c2RsIjsKLSAgICBTdHJpbmcgbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIEdFTkVSQVRFRF9SRVNVTFRTX0RJUiArIFhTRF9ESVIgKyAiSW1wb3J0Tm9OU1NjaGVtYS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIkltcG9ydE5vTlNTY2hlbWEvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvWFNEL0ltcG9ydE5vTlNTY2hlbUFuZFNlY29uZFNjaGVtYVdpdGhOUy9JbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJJbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TIjsKLSAgICBTdHJpbmcgdGVzdGZpbGUgPSBGSUxFX1BST1RPQ09MICsgUExVR0lOX0FCU09MVVRFX1BBVEggKyBTQU1QTEVTX0RJUiArIFhTRF9ESVIgKyAiSW1wb3J0Tm9OU1NjaGVtYUFuZFNlY29uZFNjaGVtYVdpdGhOUy8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgWFNEX0RJUiArICJJbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFhTRF9ESVIgKyAiSW1wb3J0Tm9OU1NjaGVtYUFuZFNlY29uZFNjaGVtYVdpdGhOUy8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICAKLSAgICBydW5UZXN0KHRlc3RmaWxlLCBsb2dsb2NhdGlvbiwgaWRlYWxsb2dsb2NhdGlvbik7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBUZXN0IC9YU0QvTm9OU0VsZW1lbnRSZWZlcmVuY2UvTm9OU0VsZW1lbnRSZWZlcmVuY2Uud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdE5vTlNFbGVtZW50UmVmZXJlbmNlKCkKLSAgewotICAgIFN0cmluZyB0ZXN0bmFtZSA9ICJOb05TRWxlbWVudFJlZmVyZW5jZSI7Ci0gICAgU3RyaW5nIHRlc3RmaWxlID0gRklMRV9QUk9UT0NPTCArIFBMVUdJTl9BQlNPTFVURV9QQVRIICsgU0FNUExFU19ESVIgKyBYU0RfRElSICsgIk5vTlNFbGVtZW50UmVmZXJlbmNlLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIk5vTlNFbGVtZW50UmVmZXJlbmNlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIFN0cmluZyBpZGVhbGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBJREVBTF9SRVNVTFRTX0RJUiArIFhTRF9ESVIgKyAiTm9OU0VsZW1lbnRSZWZlcmVuY2UvIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgCi0gICAgcnVuVGVzdCh0ZXN0ZmlsZSwgbG9nbG9jYXRpb24sIGlkZWFsbG9nbG9jYXRpb24pOwotICB9Ci0gIAotICAvKioKLSAgICogVGVzdCAvWFNEL0lubGluZVNjaGVtYU5vTmFtZXNwYWNlL0lubGluZVNjaGVtYU5vTmFtZXNwYWNlLndzZGwKLSAgICovCi0gIHB1YmxpYyB2b2lkIHRlc3RJbmxpbmVTY2hlbWFOb05hbWVzcGFjZSgpCi0gIHsKLSAgICBTdHJpbmcgdGVzdG5hbWUgPSAiSW5saW5lU2NoZW1hTm9OYW1lc3BhY2UiOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgWFNEX0RJUiArICJJbmxpbmVTY2hlbWFOb05hbWVzcGFjZS8iICsgdGVzdG5hbWUgKyAiLndzZGwiOwotICAgIFN0cmluZyBsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgR0VORVJBVEVEX1JFU1VMVFNfRElSICsgWFNEX0RJUiArICJJbmxpbmVTY2hlbWFOb05hbWVzcGFjZS8iICsgdGVzdG5hbWUgKyAiLndzZGwtbG9nIjsKLSAgICBTdHJpbmcgaWRlYWxsb2dsb2NhdGlvbiA9IFBMVUdJTl9BQlNPTFVURV9QQVRIICsgSURFQUxfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIklubGluZVNjaGVtYU5vTmFtZXNwYWNlLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRlc3QgL1hTRC9JbXBvcnROb1NjaGVtYUxvY2F0aW9uL0ltcG9ydE5vU2NoZW1hTG9jYXRpb24ud3NkbAotICAgKi8KLSAgcHVibGljIHZvaWQgdGVzdEltcG9ydE5vU2NoZW1hTG9jYXRpb24oKQotICB7Ci0gICAgU3RyaW5nIHRlc3RuYW1lID0gIkltcG9ydE5vU2NoZW1hTG9jYXRpb24iOwotICAgIFN0cmluZyB0ZXN0ZmlsZSA9IEZJTEVfUFJPVE9DT0wgKyBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIFNBTVBMRVNfRElSICsgWFNEX0RJUiArICJJbXBvcnROb1NjaGVtYUxvY2F0aW9uLyIgKyB0ZXN0bmFtZSArICIud3NkbCI7Ci0gICAgU3RyaW5nIGxvZ2xvY2F0aW9uID0gUExVR0lOX0FCU09MVVRFX1BBVEggKyBHRU5FUkFURURfUkVTVUxUU19ESVIgKyBYU0RfRElSICsgIkltcG9ydE5vU2NoZW1hTG9jYXRpb24vIiArIHRlc3RuYW1lICsgIi53c2RsLWxvZyI7Ci0gICAgU3RyaW5nIGlkZWFsbG9nbG9jYXRpb24gPSBQTFVHSU5fQUJTT0xVVEVfUEFUSCArIElERUFMX1JFU1VMVFNfRElSICsgWFNEX0RJUiArICJJbXBvcnROb1NjaGVtYUxvY2F0aW9uLyIgKyB0ZXN0bmFtZSArICIud3NkbC1sb2ciOwotICAgIAotICAgIHJ1blRlc3QodGVzdGZpbGUsIGxvZ2xvY2F0aW9uLCBpZGVhbGxvZ2xvY2F0aW9uKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0LnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NTllZTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/PgotCi08cHJvamVjdCBuYW1lPSJ0ZXN0c3VpdGUiIGRlZmF1bHQ9InJ1biIgYmFzZWRpcj0iLiI+Ci0KLSAgPCEtLSBDb25maWd1cmFibGUgUHJvcGVydGllcyAtLT4KLQotICA8IS0tIHNldHMgdGhlIHByb3BlcnRpZXMgZWNsaXBzZS1ob21lLCBhbmQgbGlicmFyeS1maWxlIC0tPgotICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzIi8+Ci0KLSAgPCEtLSBFbmQgQ29uZmlndXJhYmxlIFByb3BlcnRpZXMgLS0+Ci0KLSAgPCEtLSBUaGUgcHJvcGVydHkgJHtlY2xpcHNlLWhvbWV9IHNob3VsZCBiZSBwYXNzZWQgaW50byB0aGlzIHNjcmlwdCAtLT4KLSAgPCEtLSBTZXQgYSBtZWFuaW5nZnVsIGRlZmF1bHQgdmFsdWUgZm9yIHdoZW4gaXQgaXMgbm90LiAtLT4KLSAgPHByb3BlcnR5IG5hbWU9ImVjbGlwc2UtaG9tZSIgdmFsdWU9IiR7YmFzZWRpcn1cLi5cLi4iLz4KLSAgPHByb3BlcnR5IG5hbWU9ImJ2dHdvcmtzcGFjZSIgdmFsdWU9IiR7YmFzZWRpcn0iLz4KLSAgPHByb3BlcnR5IG5hbWU9ImxpYnJhcnktZmlsZSIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRlc3RfMy4xLjAvbGlicmFyeS54bWwiLz4KLSAgPHByb3BlcnR5IG5hbWU9IndvcmtzcGFjZS1mb2xkZXIiIHZhbHVlPSIke2J2dHdvcmtzcGFjZX0vJHtwbHVnaW4tbmFtZX0iLz4KLQotICA8IS0tIFRoaXMgdGFyZ2V0IGhvbGRzIGFsbCBpbml0aWFsaXphdGlvbiBjb2RlIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBmb3IgLS0+Ci0gIDwhLS0gYWxsIHRlc3RzIHRoYXQgYXJlIHRvIGJlIHJ1bi4gSW5pdGlhbGl6YXRpb24gZm9yIGluZGl2aWR1YWwgdGVzdHMgLS0+Ci0gIDwhLS0gc2hvdWxkIGJlIGRvbmUgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBzdWl0ZSB0YXJnZXQuIC0tPgotICA8dGFyZ2V0IG5hbWU9ImluaXQiPgotICAgIDx0c3RhbXAvPgotICAgICA8ZGVsZXRlPgotICAgICAgIDxmaWxlc2V0IGRpcj0iJHtlY2xpcHNlLWhvbWV9IiBpbmNsdWRlcz0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy4qLnhtbCIvPgotICAgIDwvZGVsZXRlPgotICA8L3RhcmdldD4KLQotICA8IS0tIFRoaXMgdGFyZ2V0IGRlZmluZXMgdGhlIHRlc3RzIHRoYXQgbmVlZCB0byBiZSBydW4uIC0tPgotICA8dGFyZ2V0IG5hbWU9InN1aXRlIj4KLQotICAgIDwhLS0gU3RhcnQgd2l0aCBjbGVhbiBkYXRhIHdvcmtzcGFjZSAtLT4gIAotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZS1mb2xkZXJ9IiBxdWlldD0idHJ1ZSIvPgotCi0gICAgPGFudCB0YXJnZXQ9ImNvcmUtdGVzdCIgYW50ZmlsZT0iJHtsaWJyYXJ5LWZpbGV9IiBkaXI9IiR7ZWNsaXBzZS1ob21lfSI+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dvcmtzcGFjZS1mb2xkZXJ9Ii8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0icGx1Z2luLW5hbWUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfSIvPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImNsYXNzbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMuaW50ZXJuYWwuQWxsV1NETFRlc3RzIi8+Ci0gICAgPC9hbnQ+Ci0KLSAgPC90YXJnZXQ+Ci0KLSAgPCEtLSBUaGlzIHRhcmdldCBob2xkcyBjb2RlIHRvIGNsZWFudXAgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQgYWZ0ZXIgLS0+Ci0gIDwhLS0gYWZ0ZXIgYWxsIG9mIHRoZSB0ZXN0cyBoYXZlIGJlZW4gcnVuLiBZb3UgY2FuIHVzZSB0aGlzIHRhcmdldCB0byAtLT4KLSAgPCEtLSBkZWxldGUgdGVtcG9yYXJ5IGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQuIC0tPgotICA8dGFyZ2V0IG5hbWU9ImNsZWFudXAiPgotICAgIDxkZWxldGUgZGlyPSIke3dvcmtzcGFjZS1mb2xkZXJ9IiBxdWlldD0idHJ1ZSIvPgotICA8L3RhcmdldD4KLQotICA8IS0tIFRoaXMgdGFyZ2V0IHJ1bnMgdGhlIHRlc3Qgc3VpdGUuIEFueSBhY3Rpb25zIHRoYXQgbmVlZCB0byBoYXBwZW4gLS0+Ci0gIDwhLS0gYWZ0ZXIgYWxsIHRoZSB0ZXN0cyBoYXZlIGJlZW4gcnVuIHNob3VsZCBnbyBoZXJlLiAtLT4KLSAgPHRhcmdldCBuYW1lPSJydW4iIGRlcGVuZHM9ImluaXQsc3VpdGUsY2xlYW51cCI+Ci0gICAgPGFudCB0YXJnZXQ9ImNvbGxlY3QiIGFudGZpbGU9IiR7bGlicmFyeS1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgPHByb3BlcnR5IG5hbWU9ImluY2x1ZGVzIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cyoueG1sIi8+Ci0gICAgICA8cHJvcGVydHkgbmFtZT0ib3V0cHV0LWZpbGUiIHZhbHVlPSIke3BsdWdpbi1uYW1lfS54bWwiLz4KLSAgICA8L2FudD4KLSAgPC90YXJnZXQ+Ci0KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy8uY3ZzaWdub3JlIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNTM1NzQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1nZW5lcmF0ZWRSZXN1bHRzCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL0xpbmVOdW1iZXJBZGp1c3RtZW50cy9jdmMtY29tcGxleC10eXBlLjIuMy9jdmMtY29tcGxleC10eXBlLjIuMy53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvTGluZU51bWJlckFkanVzdG1lbnRzL2N2Yy1jb21wbGV4LXR5cGUuMi4zL2N2Yy1jb21wbGV4LXR5cGUuMi4zLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Mjk4M2NlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvTGluZU51bWJlckFkanVzdG1lbnRzL2N2Yy1jb21wbGV4LXR5cGUuMi4zL2N2Yy1jb21wbGV4LXR5cGUuMi4zLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAxCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1jdmMtY29tcGxleC10eXBlLjIuMzogRWxlbWVudCAnd3NkbDpvcGVyYXRpb24nIGNhbm5vdCBoYXZlIGNoYXJhY3RlciBbY2hpbGRyZW5dLCBiZWNhdXNlIHRoZSB0eXBlJ3MgY29udGVudCB0eXBlIGlzIGVsZW1lbnQtb25seS4gWzE2LCAzN10KLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL0xpbmVOdW1iZXJBZGp1c3RtZW50cy9jdmMtY29tcGxleC10eXBlLjIuNC5iL2N2Yy1jb21wbGV4LXR5cGUuMi40LmIud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL0xpbmVOdW1iZXJBZGp1c3RtZW50cy9jdmMtY29tcGxleC10eXBlLjIuNC5iL2N2Yy1jb21wbGV4LXR5cGUuMi40LmIud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MzkwNjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9MaW5lTnVtYmVyQWRqdXN0bWVudHMvY3ZjLWNvbXBsZXgtdHlwZS4yLjQuYi9jdmMtY29tcGxleC10eXBlLjIuNC5iLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAxCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1jdmMtY29tcGxleC10eXBlLjIuNC5iOiBUaGUgY29udGVudCBvZiBlbGVtZW50ICd3c2RsOm9wZXJhdGlvbicgaXMgbm90IGNvbXBsZXRlLiBPbmUgb2YgJ3siaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iOmRvY3VtZW50YXRpb24sIFdDWyMjb3RoZXI6Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIl0sICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI6aW5wdXQsICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI6b3V0cHV0fScgaXMgZXhwZWN0ZWQuIFsxNiwgMzddCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9BbmdsZUhhdEluRmlsZW5hbWUvQW5nbGVIYXReSW5GaWxlbmFtZUludmFsaWQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL0FuZ2xlSGF0SW5GaWxlbmFtZS9BbmdsZUhhdF5JbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0NjVlNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL0FuZ2xlSGF0SW5GaWxlbmFtZS9BbmdsZUhhdF5JbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9BbmdsZUhhdEluRmlsZW5hbWUvQW5nbGVIYXReSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9BbmdsZUhhdEluRmlsZW5hbWUvQW5nbGVIYXReSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQW5nbGVIYXRJbkZpbGVuYW1lL0FuZ2xlSGF0XkluRmlsZW5hbWVWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhJbnZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhJbnZhbGlkLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTQ2NWU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQW5nbGVIYXReSW5QYXRoL0FuZ2xlSGF0SW5QYXRoSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhWYWxpZC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQW5nbGVIYXReSW5QYXRoL0FuZ2xlSGF0SW5QYXRoVmFsaWQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQ2xvc2VCcmFja2V0XDA1MUluUGF0aC9DbG9zZUJyYWNrZXRJblBhdGhJbnZhbGlkLndzZGwtbG9nIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL0Nsb3NlQnJhY2tldFwwNTFJblBhdGgvQ2xvc2VCcmFja2V0SW5QYXRoSW52YWxpZC53c2RsLWxvZyIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NDY1ZTQuLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQ2xvc2VCcmFja2V0XDA1MUluUGF0aC9DbG9zZUJyYWNrZXRJblBhdGhJbnZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQ2xvc2VCcmFja2V0XDA1MUluUGF0aC9DbG9zZUJyYWNrZXRJblBhdGhWYWxpZC53c2RsLWxvZyIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9DbG9zZUJyYWNrZXRcMDUxSW5QYXRoL0Nsb3NlQnJhY2tldEluUGF0aFZhbGlkLndzZGwtbG9nIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9DbG9zZUJyYWNrZXRcMDUxSW5QYXRoL0Nsb3NlQnJhY2tldEluUGF0aFZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS9DbG9zZUJyYWNrZXRcMDUxSW5GaWxlbmFtZUludmFsaWQud3NkbC1sb2ciICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS9DbG9zZUJyYWNrZXRcMDUxSW5GaWxlbmFtZUludmFsaWQud3NkbC1sb2ciCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTQ2NWU0Li4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL0Nsb3NlQnJhY2tldEluRmlsZW5hbWUvQ2xvc2VCcmFja2V0XDA1MUluRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS9DbG9zZUJyYWNrZXRcMDUxSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL0Nsb3NlQnJhY2tldEluRmlsZW5hbWUvQ2xvc2VCcmFja2V0XDA1MUluRmlsZW5hbWVWYWxpZC53c2RsLWxvZyIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS9DbG9zZUJyYWNrZXRcMDUxSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9EYXNoLUluUGF0aC9EYXNoSW5QYXRoSW52YWxpZC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvRGFzaC1JblBhdGgvRGFzaEluUGF0aEludmFsaWQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NDY1ZTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9EYXNoLUluUGF0aC9EYXNoSW5QYXRoSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9EYXNoLUluUGF0aC9EYXNoSW5QYXRoVmFsaWQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL0Rhc2gtSW5QYXRoL0Rhc2hJblBhdGhWYWxpZC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL0Rhc2gtSW5QYXRoL0Rhc2hJblBhdGhWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9EYXNoSW5GaWxlbmFtZS9EYXNoLUluRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9EYXNoSW5GaWxlbmFtZS9EYXNoLUluRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTQ2NWU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvRGFzaEluRmlsZW5hbWUvRGFzaC1JbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9EYXNoSW5GaWxlbmFtZS9EYXNoLUluRmlsZW5hbWVWYWxpZC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvRGFzaEluRmlsZW5hbWUvRGFzaC1JbkZpbGVuYW1lVmFsaWQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9EYXNoSW5GaWxlbmFtZS9EYXNoLUluRmlsZW5hbWVWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvRXhjbGFtYXRpb25cMDQxSW5QYXRoL0V4Y2xhbWF0aW9uSW5QYXRoSW52YWxpZC53c2RsLWxvZyIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9FeGNsYW1hdGlvblwwNDFJblBhdGgvRXhjbGFtYXRpb25JblBhdGhJbnZhbGlkLndzZGwtbG9nIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0NjVlNC4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9FeGNsYW1hdGlvblwwNDFJblBhdGgvRXhjbGFtYXRpb25JblBhdGhJbnZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvRXhjbGFtYXRpb25cMDQxSW5QYXRoL0V4Y2xhbWF0aW9uSW5QYXRoVmFsaWQud3NkbC1sb2ciICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvRXhjbGFtYXRpb25cMDQxSW5QYXRoL0V4Y2xhbWF0aW9uSW5QYXRoVmFsaWQud3NkbC1sb2ciCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL0V4Y2xhbWF0aW9uXDA0MUluUGF0aC9FeGNsYW1hdGlvbkluUGF0aFZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvRXhjbGFtYXRpb25JbkZpbGVuYW1lL0V4Y2xhbWF0aW9uXDA0MUluRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL0V4Y2xhbWF0aW9uSW5GaWxlbmFtZS9FeGNsYW1hdGlvblwwNDFJbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZyIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NDY1ZTQuLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvRXhjbGFtYXRpb25JbkZpbGVuYW1lL0V4Y2xhbWF0aW9uXDA0MUluRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvRXhjbGFtYXRpb25JbkZpbGVuYW1lL0V4Y2xhbWF0aW9uXDA0MUluRmlsZW5hbWVWYWxpZC53c2RsLWxvZyIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9FeGNsYW1hdGlvbkluRmlsZW5hbWUvRXhjbGFtYXRpb25cMDQxSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9FeGNsYW1hdGlvbkluRmlsZW5hbWUvRXhjbGFtYXRpb25cMDQxSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvT3BlbkJyYWNrZXRcMDUwSW5QYXRoL09wZW5CcmFja2V0SW5QYXRoSW52YWxpZC53c2RsLWxvZyIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9PcGVuQnJhY2tldFwwNTBJblBhdGgvT3BlbkJyYWNrZXRJblBhdGhJbnZhbGlkLndzZGwtbG9nIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0NjVlNC4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9PcGVuQnJhY2tldFwwNTBJblBhdGgvT3BlbkJyYWNrZXRJblBhdGhJbnZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvT3BlbkJyYWNrZXRcMDUwSW5QYXRoL09wZW5CcmFja2V0SW5QYXRoVmFsaWQud3NkbC1sb2ciICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvT3BlbkJyYWNrZXRcMDUwSW5QYXRoL09wZW5CcmFja2V0SW5QYXRoVmFsaWQud3NkbC1sb2ciCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL09wZW5CcmFja2V0XDA1MEluUGF0aC9PcGVuQnJhY2tldEluUGF0aFZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvT3BlbkJyYWNrZXRJbkZpbGVuYW1lL09wZW5CcmFja2V0XDA1MEluRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL09wZW5CcmFja2V0SW5GaWxlbmFtZS9PcGVuQnJhY2tldFwwNTBJbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZyIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NDY1ZTQuLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvT3BlbkJyYWNrZXRJbkZpbGVuYW1lL09wZW5CcmFja2V0XDA1MEluRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvT3BlbkJyYWNrZXRJbkZpbGVuYW1lL09wZW5CcmFja2V0XDA1MEluRmlsZW5hbWVWYWxpZC53c2RsLWxvZyIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9PcGVuQnJhY2tldEluRmlsZW5hbWUvT3BlbkJyYWNrZXRcMDUwSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9PcGVuQnJhY2tldEluRmlsZW5hbWUvT3BlbkJyYWNrZXRcMDUwSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9QZXJpb2QuSW5QYXRoL1BlcmlvZEluUGF0aEludmFsaWQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1BlcmlvZC5JblBhdGgvUGVyaW9kSW5QYXRoSW52YWxpZC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0NjVlNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1BlcmlvZC5JblBhdGgvUGVyaW9kSW5QYXRoSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9QZXJpb2QuSW5QYXRoL1BlcmlvZEluUGF0aFZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9QZXJpb2QuSW5QYXRoL1BlcmlvZEluUGF0aFZhbGlkLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvUGVyaW9kLkluUGF0aC9QZXJpb2RJblBhdGhWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9QZXJpb2RJbkZpbGVuYW1lL1BlcmlvZC5JbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvUGVyaW9kSW5GaWxlbmFtZS9QZXJpb2QuSW5GaWxlbmFtZUludmFsaWQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NDY1ZTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9QZXJpb2RJbkZpbGVuYW1lL1BlcmlvZC5JbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9QZXJpb2RJbkZpbGVuYW1lL1BlcmlvZC5JbkZpbGVuYW1lVmFsaWQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1BlcmlvZEluRmlsZW5hbWUvUGVyaW9kLkluRmlsZW5hbWVWYWxpZC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1BlcmlvZEluRmlsZW5hbWUvUGVyaW9kLkluRmlsZW5hbWVWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9QbGF0Zm9ybVVSTC9vbmUud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1BsYXRmb3JtVVJML29uZS53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1BsYXRmb3JtVVJML29uZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvUXVvdGVcMDQ3SW5QYXRoL1F1b3RlSW5QYXRoSW52YWxpZC53c2RsLWxvZyIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9RdW90ZVwwNDdJblBhdGgvUXVvdGVJblBhdGhJbnZhbGlkLndzZGwtbG9nIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0NjVlNC4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9RdW90ZVwwNDdJblBhdGgvUXVvdGVJblBhdGhJbnZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvUXVvdGVcMDQ3SW5QYXRoL1F1b3RlSW5QYXRoVmFsaWQud3NkbC1sb2ciICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvUXVvdGVcMDQ3SW5QYXRoL1F1b3RlSW5QYXRoVmFsaWQud3NkbC1sb2ciCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1F1b3RlXDA0N0luUGF0aC9RdW90ZUluUGF0aFZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvUXVvdGVJbkZpbGVuYW1lL1F1b3RlXDA0N0luRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1F1b3RlSW5GaWxlbmFtZS9RdW90ZVwwNDdJbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZyIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NDY1ZTQuLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvUXVvdGVJbkZpbGVuYW1lL1F1b3RlXDA0N0luRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0ICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvUXVvdGVJbkZpbGVuYW1lL1F1b3RlXDA0N0luRmlsZW5hbWVWYWxpZC53c2RsLWxvZyIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9RdW90ZUluRmlsZW5hbWUvUXVvdGVcMDQ3SW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9RdW90ZUluRmlsZW5hbWUvUXVvdGVcMDQ3SW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9TcGFjZSBJblBhdGgvU3BhY2VJblBhdGhJbnZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9TcGFjZSBJblBhdGgvU3BhY2VJblBhdGhJbnZhbGlkLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTQ2NWU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvU3BhY2UgSW5QYXRoL1NwYWNlSW5QYXRoSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9TcGFjZSBJblBhdGgvU3BhY2VJblBhdGhWYWxpZC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvU3BhY2UgSW5QYXRoL1NwYWNlSW5QYXRoVmFsaWQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9TcGFjZSBJblBhdGgvU3BhY2VJblBhdGhWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9TcGFjZUluRmlsZW5hbWUvU3BhY2UgSW5GaWxlbmFtZUludmFsaWQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1NwYWNlSW5GaWxlbmFtZS9TcGFjZSBJbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0NjVlNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1NwYWNlSW5GaWxlbmFtZS9TcGFjZSBJbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9TcGFjZUluRmlsZW5hbWUvU3BhY2UgSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9TcGFjZUluRmlsZW5hbWUvU3BhY2UgSW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvU3BhY2VJbkZpbGVuYW1lL1NwYWNlIEluRmlsZW5hbWVWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9UaWxkZUluRmlsZW5hbWUvVGlsZGV+SW5GaWxlbmFtZUludmFsaWQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1RpbGRlSW5GaWxlbmFtZS9UaWxkZX5JbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0NjVlNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1RpbGRlSW5GaWxlbmFtZS9UaWxkZX5JbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9UaWxkZUluRmlsZW5hbWUvVGlsZGV+SW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9UaWxkZUluRmlsZW5hbWUvVGlsZGV+SW5GaWxlbmFtZVZhbGlkLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvVGlsZGVJbkZpbGVuYW1lL1RpbGRlfkluRmlsZW5hbWVWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9UaWxkZX5JblBhdGgvVGlsZGVJblBhdGhJbnZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9UaWxkZX5JblBhdGgvVGlsZGVJblBhdGhJbnZhbGlkLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTQ2NWU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvVGlsZGV+SW5QYXRoL1RpbGRlSW5QYXRoSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9UaWxkZX5JblBhdGgvVGlsZGVJblBhdGhWYWxpZC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvVGlsZGV+SW5QYXRoL1RpbGRlSW5QYXRoVmFsaWQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9UaWxkZX5JblBhdGgvVGlsZGVJblBhdGhWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9VbmRlcnNjb3JlSW5GaWxlbmFtZS9VbmRlcnNjb3JlX0luRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9VbmRlcnNjb3JlSW5GaWxlbmFtZS9VbmRlcnNjb3JlX0luRmlsZW5hbWVJbnZhbGlkLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTQ2NWU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvVW5kZXJzY29yZUluRmlsZW5hbWUvVW5kZXJzY29yZV9JbkZpbGVuYW1lSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9VbmRlcnNjb3JlSW5GaWxlbmFtZS9VbmRlcnNjb3JlX0luRmlsZW5hbWVWYWxpZC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvVW5kZXJzY29yZUluRmlsZW5hbWUvVW5kZXJzY29yZV9JbkZpbGVuYW1lVmFsaWQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9VbmRlcnNjb3JlSW5GaWxlbmFtZS9VbmRlcnNjb3JlX0luRmlsZW5hbWVWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9VbmRlcnNjb3JlX0luUGF0aC9VbmRlcnNjb3JlSW5QYXRoSW52YWxpZC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvUGF0aHMvVW5kZXJzY29yZV9JblBhdGgvVW5kZXJzY29yZUluUGF0aEludmFsaWQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NDY1ZTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9VbmRlcnNjb3JlX0luUGF0aC9VbmRlcnNjb3JlSW5QYXRoSW52YWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotWE1MIGRvY3VtZW50IHN0cnVjdHVyZXMgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGhpbiB0aGUgc2FtZSBlbnRpdHkuIFsyLCAxOTJdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9QYXRocy9VbmRlcnNjb3JlX0luUGF0aC9VbmRlcnNjb3JlSW5QYXRoVmFsaWQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1VuZGVyc2NvcmVfSW5QYXRoL1VuZGVyc2NvcmVJblBhdGhWYWxpZC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1BhdGhzL1VuZGVyc2NvcmVfSW5QYXRoL1VuZGVyc2NvcmVJblBhdGhWYWxpZC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0JpbmRpbmdFbGVtZW50L0ludmFsaWRTdHlsZS9CaW5kaW5nSW52YWxpZFN0eWxlLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0JpbmRpbmdFbGVtZW50L0ludmFsaWRTdHlsZS9CaW5kaW5nSW52YWxpZFN0eWxlLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZThhZDU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9CaW5kaW5nRWxlbWVudC9JbnZhbGlkU3R5bGUvQmluZGluZ0ludmFsaWRTdHlsZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMgotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotY3ZjLWVudW1lcmF0aW9uLXZhbGlkOiBWYWx1ZSAnSW52YWxpZFN0eWxlJyBpcyBub3QgZmFjZXQtdmFsaWQgd2l0aCByZXNwZWN0IHRvIGVudW1lcmF0aW9uICdbcnBjLCBkb2N1bWVudF0nLiBJdCBtdXN0IGJlIGEgdmFsdWUgZnJvbSB0aGUgZW51bWVyYXRpb24uIFsyMiwgOTBdCi1jdmMtYXR0cmlidXRlLjM6IFRoZSB2YWx1ZSAnSW52YWxpZFN0eWxlJyBvZiBhdHRyaWJ1dGUgJ3N0eWxlJyBvbiBlbGVtZW50ICdzb2FwOmJpbmRpbmcnIGlzIG5vdCB2YWxpZCB3aXRoIHJlc3BlY3QgdG8gaXRzIHR5cGUsICd0U3R5bGVDaG9pY2UnLiBbMjIsIDkwXQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9CaW5kaW5nRWxlbWVudC9JbnZhbGlkVXNlL0JpbmRpbmdJbnZhbGlkVXNlLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0JpbmRpbmdFbGVtZW50L0ludmFsaWRVc2UvQmluZGluZ0ludmFsaWRVc2Uud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmNTgyYWUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0JpbmRpbmdFbGVtZW50L0ludmFsaWRVc2UvQmluZGluZ0ludmFsaWRVc2Uud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDIKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWN2Yy1lbnVtZXJhdGlvbi12YWxpZDogVmFsdWUgJ0ludmFsaWRVc2UnIGlzIG5vdCBmYWNldC12YWxpZCB3aXRoIHJlc3BlY3QgdG8gZW51bWVyYXRpb24gJ1tsaXRlcmFsLCBlbmNvZGVkXScuIEl0IG11c3QgYmUgYSB2YWx1ZSBmcm9tIHRoZSBlbnVtZXJhdGlvbi4gWzI5LCA0Nl0KLWN2Yy1hdHRyaWJ1dGUuMzogVGhlIHZhbHVlICdJbnZhbGlkVXNlJyBvZiBhdHRyaWJ1dGUgJ3VzZScgb24gZWxlbWVudCAnc29hcDpib2R5JyBpcyBub3QgdmFsaWQgd2l0aCByZXNwZWN0IHRvIGl0cyB0eXBlLCAndXNlQ2hvaWNlJy4gWzI5LCA0Nl0KLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvQ2FzZUluc2Vuc2l0aXZlT3BlcmF0aW9uTmFtZXMvQ2FzZUluc2Vuc2l0aXZlT3BlcmF0aW9uTmFtZXMud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvQ2FzZUluc2Vuc2l0aXZlT3BlcmF0aW9uTmFtZXMvQ2FzZUluc2Vuc2l0aXZlT3BlcmF0aW9uTmFtZXMud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0Nhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbk5hbWVzL0Nhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbk5hbWVzLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvQ3ljbGljL1BvcnR0eXBlUmVmTWVzc2FnZTEud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvQ3ljbGljL1BvcnR0eXBlUmVmTWVzc2FnZTEud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0N5Y2xpYy9Qb3J0dHlwZVJlZk1lc3NhZ2UxLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvQ3ljbGljL1BvcnR0eXBlUmVmTWVzc2FnZTIud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvQ3ljbGljL1BvcnR0eXBlUmVmTWVzc2FnZTIud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0N5Y2xpYy9Qb3J0dHlwZVJlZk1lc3NhZ2UyLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0JhZEV4dGVuc2libGVFbGVtZW50cy53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvQmFkRXh0ZW5zaWJsZUVsZW1lbnRzLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDVmNjlmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvQmFkRXh0ZW5zaWJsZUVsZW1lbnRzLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAxCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1UaGUgJ0JhZEV4dGVuc2libGVFbGVtZW50cycgcG9ydCB0eXBlIHNwZWNpZmllZCBmb3IgdGhlICdCYWRFeHRlbnNpYmxlRWxlbWVudHNTT0FQJyBiaW5kaW5nIGlzIHVuZGVmaW5lZC4gQ2hlY2sgdGhlICdCYWRFeHRlbnNpYmxlRWxlbWVudHMnIHBvcnQgdHlwZSBuYW1lIGFuZCBlbnN1cmUgaXQgaXMgZGVmaW5lZC4gWzQwLCA4Ml0KLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0V4dGVuc2libGVCaW5kaW5nLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0V4dGVuc2libGVFbGVtZW50cy9FeHRlbnNpYmxlQmluZGluZy53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0V4dGVuc2libGVCaW5kaW5nLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0V4dGVuc2libGVQb3J0VHlwZS53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZVBvcnRUeXBlLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZVBvcnRUeXBlLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0V4dGVuc2libGVTZXJ2aWNlUG9ydC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZVNlcnZpY2VQb3J0LndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZVNlcnZpY2VQb3J0LndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0FscGhhYmV0aWNhbE9yZGVyT2ZJbXBvcnRzL0ltcG9ydE9uZUFuZFR3by53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvSW1wb3J0T25lQW5kVHdvLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvSW1wb3J0T25lQW5kVHdvLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0FscGhhYmV0aWNhbE9yZGVyT2ZJbXBvcnRzL29uZS53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvb25lLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvb25lLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0FscGhhYmV0aWNhbE9yZGVyT2ZJbXBvcnRzL3R3by53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvdHdvLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvdHdvLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydEVtcHR5TG9jYXRpb24vSW1wb3J0RW1wdHlMb2NhdGlvbi53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlMb2NhdGlvbi9JbXBvcnRFbXB0eUxvY2F0aW9uLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmFiNjM4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlMb2NhdGlvbi9JbXBvcnRFbXB0eUxvY2F0aW9uLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAxCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1UaGUgbG9jYXRpb24gYXR0cmlidXRlIGlzIGVtcHR5LiBBIGxvY2F0aW9uIG11c3QgYmUgc3BlY2lmaWVkIGZvciB0aGUgbG9jYXRpb24gYXR0cmlidXRlLiBbNywgNTZdCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnRFbXB0eU5hbWVzcGFjZS9JbXBvcnRFbXB0eU5hbWVzcGFjZS53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2UvSW1wb3J0RW1wdHlOYW1lc3BhY2Uud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MDYwYjYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnRFbXB0eU5hbWVzcGFjZS9JbXBvcnRFbXB0eU5hbWVzcGFjZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMQotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGhlIGZpbGUgY2Fubm90IGJlIGltcG9ydGVkIGJlY2F1c2UgdGhlIG5hbWVzcGFjZSAnJyBkb2VzIG5vdCBtYXRjaCB0aGUgdGFyZ2V0IG5hbWVzcGFjZSAnaHR0cDovL2V4YW1wbGUuY29tL3NpbXBsZS8nIG9mIHRoZSBpbXBvcnRlZCBkb2N1bWVudC4gWzcsIDUzXQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2VBbmRMb2NhdGlvbi9JbXBvcnRFbXB0eU5hbWVzcGFjZUFuZExvY2F0aW9uLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnRFbXB0eU5hbWVzcGFjZUFuZExvY2F0aW9uL0ltcG9ydEVtcHR5TmFtZXNwYWNlQW5kTG9jYXRpb24ud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNmVhMDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnRFbXB0eU5hbWVzcGFjZUFuZExvY2F0aW9uL0ltcG9ydEVtcHR5TmFtZXNwYWNlQW5kTG9jYXRpb24ud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDEKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUgaXMgZW1wdHkuIEEgbG9jYXRpb24gbXVzdCBiZSBzcGVjaWZpZWQgZm9yIHRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUuIFs3LCA0Ml0KLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUvSW1wb3J0Tm9Mb2NhdGlvbkF0dHJpYnV0ZS53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0Tm9Mb2NhdGlvbkF0dHJpYnV0ZS9JbXBvcnROb0xvY2F0aW9uQXR0cmlidXRlLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2U0Njc4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0Tm9Mb2NhdGlvbkF0dHJpYnV0ZS9JbXBvcnROb0xvY2F0aW9uQXR0cmlidXRlLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAxCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1jdmMtY29tcGxleC10eXBlLjQ6IEF0dHJpYnV0ZSAnbG9jYXRpb24nIG11c3QgYXBwZWFyIG9uIGVsZW1lbnQgJ3dzZGw6aW1wb3J0Jy4gWzcsIDQ0XQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0Tm9uRXhpc3RhbnRGaWxlLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnROb25FeGlzdGFudEZpbGUud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMzA4ZjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnROb25FeGlzdGFudEZpbGUud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDAKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDEKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSAnVGhpc0ZpbGVEb2VzbnRFeGlzdC53c2RsJyBkb2N1bWVudCBjb3VsZCBub3QgYmUgaW1wb3J0ZWQuIENoZWNrIHRoYXQgdGhlIGRvY3VtZW50IGV4aXN0cyBhbmQgdGhhdCB0aGUgbG9jYXRpb24gaXMgY29ycmVjdC4gWzMsIDg2XQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFNjaGVtYVdpdGhXU0RMSW1wb3J0LndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnQud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDAKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnRJbnZhbGlkTlMud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFNjaGVtYVdpdGhXU0RMSW1wb3J0SW52YWxpZE5TLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzE1ZTQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnRJbnZhbGlkTlMud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDAKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDEKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSBmaWxlIGNhbm5vdCBiZSBpbXBvcnRlZCBiZWNhdXNlIHRoZSBuYW1lc3BhY2UgJ2h0dHA6Ly9pbnZhbGlkbmFtZXNwYWNlJyBkb2VzIG5vdCBtYXRjaCB0aGUgdGFyZ2V0IG5hbWVzcGFjZSAnaHR0cDovL3d3dy5leGFtcGxlLmNvbScgb2YgdGhlIGltcG9ydGVkIGRvY3VtZW50LiBbMywgNzNdCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnRXU0RMV2l0aFdTREwud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFdTRExXaXRoV1NETC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFdTRExXaXRoV1NETC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnRXU0RMV2l0aFdTRExJbnZhbGlkRmlsZW5hbWUud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFdTRExXaXRoV1NETEludmFsaWRGaWxlbmFtZS53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZiY2E3OS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFdTRExXaXRoV1NETEludmFsaWRGaWxlbmFtZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMQotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGhlICdTSU1QTEVXU0RMLndzZGwnIGRvY3VtZW50IGNvdWxkIG5vdCBiZSBpbXBvcnRlZC4gQ2hlY2sgdGhhdCB0aGUgZG9jdW1lbnQgZXhpc3RzIGFuZCB0aGF0IHRoZSBsb2NhdGlvbiBpcyBjb3JyZWN0LiBbMywgNzhdCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnRXU0RMV2l0aFdTRExJbnZhbGlkTlMud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFdTRExXaXRoV1NETEludmFsaWROUy53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI2MmM0NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFdTRExXaXRoV1NETEludmFsaWROUy53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMQotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGhlIGZpbGUgY2Fubm90IGJlIGltcG9ydGVkIGJlY2F1c2UgdGhlIG5hbWVzcGFjZSAnaHR0cDovL2ludmFsaWRuYW1lc3BhY2UnIGRvZXMgbm90IG1hdGNoIHRoZSB0YXJnZXQgbmFtZXNwYWNlICdodHRwOi8vdGVtcHVyaS5vcmcvc2ltcGxld3NkbC8nIG9mIHRoZSBpbXBvcnRlZCBkb2N1bWVudC4gWzMsIDc4XQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0V2l0aEluY29ycmVjdFNsYXNoL0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0V2l0aEluY29ycmVjdFNsYXNoL0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC9JbXBvcnRXaXRoSW5jb3JyZWN0U2xhc2gud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDAKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0WE1MSW52YWxpZFdTREwvSW1wb3J0WE1MSW52YWxpZFdTREwud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydFhNTEludmFsaWRXU0RML0ltcG9ydFhNTEludmFsaWRXU0RMLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzg2ODJlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvSW1wb3J0WE1MSW52YWxpZFdTREwvSW1wb3J0WE1MSW52YWxpZFdTREwud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDEKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVJlZmVyZW5jZWQgZmlsZSBjb250YWlucyBlcnJvcnMgKHRlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRYTUxJbnZhbGlkV1NETC9YTUxJbnZhbGlkV1NETC53c2RsKS4gIFsxLCAwXQotLT4gRWxlbWVudCB0eXBlICJ3c2RsOmRlZmluaXRpb25zIiBtdXN0IGJlIGZvbGxvd2VkIGJ5IGVpdGhlciBhdHRyaWJ1dGUgc3BlY2lmaWNhdGlvbnMsICI+IiBvciAiLz4iLiBbNCwgM10KLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydGluZ1dTRExXaXRoSW1wb3J0ZWRTY2hlbWEud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L0ltcG9ydGluZ1dTRExXaXRoSW1wb3J0ZWRTY2hlbWEud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9JbXBvcnRpbmdXU0RMV2l0aEltcG9ydGVkU2NoZW1hLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L05vU2NoZW1lU2NoZW1hTmFtZXNwYWNlSW1wb3J0L05vU2NoZW1lU2NoZW1hTmFtZXNwYWNlSW1wb3J0LndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9Ob1NjaGVtZVNjaGVtYU5hbWVzcGFjZUltcG9ydC9Ob1NjaGVtZVNjaGVtYU5hbWVzcGFjZUltcG9ydC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L05vU2NoZW1lU2NoZW1hTmFtZXNwYWNlSW1wb3J0L05vU2NoZW1lU2NoZW1hTmFtZXNwYWNlSW1wb3J0LndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L1NpbXBsZUltcG9ydC90ZXN0LTEuMC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvU2ltcGxlSW1wb3J0L3Rlc3QtMS4wLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvU2ltcGxlSW1wb3J0L3Rlc3QtMS4wLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L1dTRExJbXBvcnRpbmdTY2hlbWFJbXBvcnRpbmdTY2hlbWEud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L1dTRExJbXBvcnRpbmdTY2hlbWFJbXBvcnRpbmdTY2hlbWEud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9XU0RMSW1wb3J0aW5nU2NoZW1hSW1wb3J0aW5nU2NoZW1hLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L1dTRExJbXBvcnRpbmdUeXBlcy53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvV1NETEltcG9ydGluZ1R5cGVzLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9JbXBvcnQvV1NETEltcG9ydGluZ1R5cGVzLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L1dTRExOYW1lc3BhY2VBQUEud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW1wb3J0L1dTRExOYW1lc3BhY2VBQUEud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ltcG9ydC9XU0RMTmFtZXNwYWNlQUFBLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcy9JbnZhbGlkU2NoZW1hV2l0aFBhcnRSZWZlcmVuY2VzLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML0ludmFsaWRTY2hlbWFXaXRoUGFydFJlZmVyZW5jZXMvSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcy53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmOTkwOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcy9JbnZhbGlkU2NoZW1hV2l0aFBhcnRSZWZlcmVuY2VzLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAxCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1zcmMtcmVzb2x2ZS40LjI6IEVycm9yIHJlc29sdmluZyBjb21wb25lbnQgJ3hzZDpzdHJpbicuIEl0IHdhcyBkZXRlY3RlZCB0aGF0ICd4c2Q6c3RyaW4nIGlzIGluIG5hbWVzcGFjZSAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEnLCBidXQgY29tcG9uZW50cyBmcm9tIHRoaXMgbmFtZXNwYWNlIGFyZSBub3QgcmVmZXJlbmNlYWJsZSBmcm9tIHNjaGVtYSBkb2N1bWVudCAndGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcy9JbnZhbGlkU2NoZW1hV2l0aFBhcnRSZWZlcmVuY2VzLndzZGwnLiBJZiB0aGlzIGlzIHRoZSBpbmNvcnJlY3QgbmFtZXNwYWNlLCBwZXJoYXBzIHRoZSBwcmVmaXggb2YgJ3hzZDpzdHJpbicgbmVlZHMgdG8gYmUgY2hhbmdlZC4gSWYgdGhpcyBpcyB0aGUgY29ycmVjdCBuYW1lc3BhY2UsIHRoZW4gYW4gYXBwcm9wcmlhdGUgJ2ltcG9ydCcgdGFnIHNob3VsZCBiZSBhZGRlZCB0byAndGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcy9JbnZhbGlkU2NoZW1hV2l0aFBhcnRSZWZlcmVuY2VzLndzZGwnLiBbMTYsIDQ3XQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9NZXNzYWdlRWxlbWVudC9JbnZhbGlkRWxlbWVudC9NZXNzYWdlSW52YWxpZEVsZW1lbnQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvTWVzc2FnZUVsZW1lbnQvSW52YWxpZEVsZW1lbnQvTWVzc2FnZUludmFsaWRFbGVtZW50LndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWUzMzVmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9NZXNzYWdlRWxlbWVudC9JbnZhbGlkRWxlbWVudC9NZXNzYWdlSW52YWxpZEVsZW1lbnQud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDEKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSBwYXJ0ICdOZXdPcGVyYXRpb25SZXNwb25zZScgaGFzIGFuIGludmFsaWQgdmFsdWUgJ0ludmFsaWRFbGVtZW50JyBkZWZpbmVkIGZvciBpdHMgZWxlbWVudC4gRWxlbWVudCBkZWNsYXJhdGlvbnMgbXVzdCByZWZlciB0byB2YWxpZCB2YWx1ZXMgZGVmaW5lZCBpbiBhIHNjaGVtYS4gWzEwLCA3NF0KLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvTWVzc2FnZUVsZW1lbnQvSW52YWxpZFR5cGUvTWVzc2FnZUludmFsaWRUeXBlLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML01lc3NhZ2VFbGVtZW50L0ludmFsaWRUeXBlL01lc3NhZ2VJbnZhbGlkVHlwZS53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg5ZmU2Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvTWVzc2FnZUVsZW1lbnQvSW52YWxpZFR5cGUvTWVzc2FnZUludmFsaWRUeXBlLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAxCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1UaGUgcGFydCAnTmV3T3BlcmF0aW9uUmVxdWVzdCcgaGFzIGFuIGludmFsaWQgdmFsdWUgJ05ld09wZXJhdGlvblJlcXVlc3QnIGRlZmluZWQgZm9yIGl0cyB0eXBlLiBUeXBlIGRlY2xhcmF0aW9ucyBtdXN0IHJlZmVyIHRvIHZhbGlkIHZhbHVlcyBkZWZpbmVkIGluIGEgc2NoZW1hLiBbMTMsIDc1XQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9OYW1lc3BhY2VEb2VzbnRSZXNvbHZlL05hbWVzcGFjZURvZXNudFJlc29sdmUud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvTmFtZXNwYWNlRG9lc250UmVzb2x2ZS9OYW1lc3BhY2VEb2VzbnRSZXNvbHZlLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9OYW1lc3BhY2VEb2VzbnRSZXNvbHZlL05hbWVzcGFjZURvZXNudFJlc29sdmUud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDAKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9OYW1lc3BhY2VSZXNvbHZlc0hUTUwvTmFtZXNwYWNlUmVzb2x2ZXNIVE1MLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML05hbWVzcGFjZVJlc29sdmVzSFRNTC9OYW1lc3BhY2VSZXNvbHZlc0hUTUwud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML05hbWVzcGFjZVJlc29sdmVzSFRNTC9OYW1lc3BhY2VSZXNvbHZlc0hUTUwud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDAKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9Qb3J0VHlwZUVsZW1lbnQvSW52YWxpZElucHV0L1BvcnRUeXBlSW52YWxpZElucHV0LndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1BvcnRUeXBlRWxlbWVudC9JbnZhbGlkSW5wdXQvUG9ydFR5cGVJbnZhbGlkSW5wdXQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MDU4ZDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1BvcnRUeXBlRWxlbWVudC9JbnZhbGlkSW5wdXQvUG9ydFR5cGVJbnZhbGlkSW5wdXQud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDEKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSBpbnB1dCBlbGVtZW50IGlzIHJlZmVyZW5jaW5nIGFuIHVuZGVmaW5lZCBtZXNzYWdlICdJbnZhbGlkSW5wdXQnLiBDaGVjayB0aGF0IHRoZSBtZXNzYWdlIG5hbWUgYW5kIG5hbWVzcGFjZSBhcmUgY29ycmVjdCBhbmQgdGhhdCB0aGUgbWVzc2FnZSBoYXMgYmVlbiBkZWZpbmVkLiBbMTcsIDQ3XQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9Qb3J0VHlwZUVsZW1lbnQvSW52YWxpZE91dHB1dC9Qb3J0VHlwZUludmFsaWRPdXRwdXQud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvUG9ydFR5cGVFbGVtZW50L0ludmFsaWRPdXRwdXQvUG9ydFR5cGVJbnZhbGlkT3V0cHV0LndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTE1OTFiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9Qb3J0VHlwZUVsZW1lbnQvSW52YWxpZE91dHB1dC9Qb3J0VHlwZUludmFsaWRPdXRwdXQud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDEKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSBvdXRwdXQgZWxlbWVudCBpcyByZWZlcmVuY2luZyBhbiB1bmRlZmluZWQgbWVzc2FnZSAnSW52YWxpZE91dHB1dCcuIENoZWNrIHRoYXQgdGhlIG1lc3NhZ2UgbmFtZSBhbmQgbmFtZXNwYWNlIGFyZSBjb3JyZWN0IGFuZCB0aGF0IHRoZSBtZXNzYWdlIGhhcyBiZWVuIGRlZmluZWQuIFsxOCwgNDldCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZDb250YWluZWQvRW1wdHkud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvU2VsZkNvbnRhaW5lZC9FbXB0eS53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvU2VsZkNvbnRhaW5lZC9FbXB0eS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZDb250YWluZWQvTm9EZWZhdWx0TmFtZXNwYWNlL05vRGVmYXVsdE5hbWVzcGFjZS53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9TZWxmQ29udGFpbmVkL05vRGVmYXVsdE5hbWVzcGFjZS9Ob0RlZmF1bHROYW1lc3BhY2Uud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZDb250YWluZWQvTm9EZWZhdWx0TmFtZXNwYWNlL05vRGVmYXVsdE5hbWVzcGFjZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZDb250YWluZWQvUmVmZXJlbmNlSW5saW5lVHlwZXMud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvU2VsZkNvbnRhaW5lZC9SZWZlcmVuY2VJbmxpbmVUeXBlcy53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvU2VsZkNvbnRhaW5lZC9SZWZlcmVuY2VJbmxpbmVUeXBlcy53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZDb250YWluZWQvU09BUEJvZHlFbmNvZGVkTm9OYW1lc3BhY2Uud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvU2VsZkNvbnRhaW5lZC9TT0FQQm9keUVuY29kZWROb05hbWVzcGFjZS53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvU2VsZkNvbnRhaW5lZC9TT0FQQm9keUVuY29kZWROb05hbWVzcGFjZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZDb250YWluZWQvU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZS53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9TZWxmQ29udGFpbmVkL1NPQVBCb2R5RW5jb2RlZFdpdGhOYW1lc3BhY2Uud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZDb250YWluZWQvU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZJbXBvcnQvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0L0ltcG9ydEZpbGVXaXRoU2VsZkltcG9ydC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9TZWxmSW1wb3J0L0ltcG9ydEZpbGVXaXRoU2VsZkltcG9ydC9JbXBvcnRGaWxlV2l0aFNlbGZJbXBvcnQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZJbXBvcnQvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0L0ltcG9ydEZpbGVXaXRoU2VsZkltcG9ydC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZJbXBvcnQvU2ltcGxlRmlsZS9TZWxmSW1wb3J0LndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZJbXBvcnQvU2ltcGxlRmlsZS9TZWxmSW1wb3J0LndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9TZWxmSW1wb3J0L1NpbXBsZUZpbGUvU2VsZkltcG9ydC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZJbXBvcnQvU2ltcGxlRmlsZUludmFsaWQvU2VsZkltcG9ydC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9TZWxmSW1wb3J0L1NpbXBsZUZpbGVJbnZhbGlkL1NlbGZJbXBvcnQud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNTM0OTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9XU0RML1NlbGZJbXBvcnQvU2ltcGxlRmlsZUludmFsaWQvU2VsZkltcG9ydC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGhlIHBhcnQgJ05ld09wZXJhdGlvblJlc3BvbnNlJyBoYXMgYW4gaW52YWxpZCB2YWx1ZSAnSW52YWxpZEVsZW1lbnQnIGRlZmluZWQgZm9yIGl0cyBlbGVtZW50LiBFbGVtZW50IGRlY2xhcmF0aW9ucyBtdXN0IHJlZmVyIHRvIHZhbGlkIHZhbHVlcyBkZWZpbmVkIGluIGEgc2NoZW1hLiBbMTQsIDcwXQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9TZXJ2aWNlRWxlbWVudC9JbnZhbGlkQmluZGluZy9TZXJ2aWNlSW52YWxpZEJpbmRpbmcud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvU2VydmljZUVsZW1lbnQvSW52YWxpZEJpbmRpbmcvU2VydmljZUludmFsaWRCaW5kaW5nLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjQwZTYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9TZXJ2aWNlRWxlbWVudC9JbnZhbGlkQmluZGluZy9TZXJ2aWNlSW52YWxpZEJpbmRpbmcud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDEKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSAnU2VydmljZUludmFsaWRCaW5kaW5nU09BUCcgcG9ydCBoYXMgYW4gaW52YWxpZCBiaW5kaW5nIC0gJ0luY29ycmVjdEJpbmRpbmdSZWYnLiBDaGVjayB0aGF0IHRoZSAnSW5jb3JyZWN0QmluZGluZ1JlZicgYmluZGluZyBpcyBkZWZpbmVkLiBbMzQsIDgzXQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9TZXJ2aWNlRWxlbWVudC9Ob0FkZHJlc3MvU2VydmljZU5vQWRkcmVzcy53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvV1NETC9TZXJ2aWNlRWxlbWVudC9Ob0FkZHJlc3MvU2VydmljZU5vQWRkcmVzcy53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhlYWE5Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1dTREwvU2VydmljZUVsZW1lbnQvTm9BZGRyZXNzL1NlcnZpY2VOb0FkZHJlc3Mud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDEKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSBwb3J0ICdTZXJ2aWNlTm9BZGRyZXNzU09BUCcgaGFzIG5vIGFkZHJlc3MgZGVmaW5lZC4gRWFjaCBwb3J0IG11c3QgZGVmaW5lIG9uZSBhZGRyZXNzLiBbMzQsIDc5XQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvWFNEL0VudGl0aWVzL25vcm1hbGl6ZUVudGl0aWVzSW52YWxpZC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvWFNEL0VudGl0aWVzL25vcm1hbGl6ZUVudGl0aWVzSW52YWxpZC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZkYWY0OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9FbnRpdGllcy9ub3JtYWxpemVFbnRpdGllc0ludmFsaWQud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDEKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSB2YWx1ZSBvZiBhdHRyaWJ1dGUgInZhbHVlIiBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCB0eXBlICJ4c2Q6cGF0dGVybiIgbXVzdCBub3QgY29udGFpbiB0aGUgJzwnIGNoYXJhY3Rlci4gWzExLCA1NV0KLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9FbnRpdGllcy9ub3JtYWxpemVFbnRpdGllc1ZhbGlkLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvRW50aXRpZXMvbm9ybWFsaXplRW50aXRpZXNWYWxpZC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9FbnRpdGllcy9ub3JtYWxpemVFbnRpdGllc1ZhbGlkLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbXBvcnRJbmxpbmVTY2hlbWFXaXRoSW5jbHVkZS9JbXBvcnRJbmxpbmVTY2hlbWFXaXRoSW5jbHVkZS53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvWFNEL0ltcG9ydElubGluZVNjaGVtYVdpdGhJbmNsdWRlL0ltcG9ydElubGluZVNjaGVtYVdpdGhJbmNsdWRlLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvWFNEL0ltcG9ydElubGluZVNjaGVtYVdpdGhJbmNsdWRlL0ltcG9ydElubGluZVNjaGVtYVdpdGhJbmNsdWRlLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbXBvcnROb05TU2NoZW1hL0ltcG9ydE5vTlNTY2hlbWEud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbXBvcnROb05TU2NoZW1hL0ltcG9ydE5vTlNTY2hlbWEud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvSW1wb3J0Tm9OU1NjaGVtYS9JbXBvcnROb05TU2NoZW1hLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TL0ltcG9ydE5vTlNTY2hlbWFBbmRTZWNvbmRTY2hlbWFXaXRoTlMud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TL0ltcG9ydE5vTlNTY2hlbWFBbmRTZWNvbmRTY2hlbWFXaXRoTlMud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvSW1wb3J0Tm9OU1NjaGVtYUFuZFNlY29uZFNjaGVtYVdpdGhOUy9JbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbXBvcnROb1NjaGVtYUxvY2F0aW9uL0ltcG9ydE5vU2NoZW1hTG9jYXRpb24ud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbXBvcnROb1NjaGVtYUxvY2F0aW9uL0ltcG9ydE5vU2NoZW1hTG9jYXRpb24ud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NmUxOTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvSW1wb3J0Tm9TY2hlbWFMb2NhdGlvbi9JbXBvcnROb1NjaGVtYUxvY2F0aW9uLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAxCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1zY2hlbWFfcmVmZXJlbmNlLjQ6IEZhaWxlZCB0byByZWFkIHNjaGVtYSBkb2N1bWVudCAnbnVsbCcsIGJlY2F1c2UgMSkgY291bGQgbm90IGZpbmQgdGhlIGRvY3VtZW50OyAyKSB0aGUgZG9jdW1lbnQgY291bGQgbm90IGJlIHJlYWQ7IDMpIHRoZSByb290IGVsZW1lbnQgb2YgdGhlIGRvY3VtZW50IGlzIG5vdCA8eHNkOnNjaGVtYT4uIFs5LCA2MV0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvSW5saW5lU2NoZW1hR2VuZXJhdGVkSW1wb3J0cy9Ob0ltcG9ydEZvclVucHJlZml4ZWRBdHRyaWJ1dGUud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbmxpbmVTY2hlbWFHZW5lcmF0ZWRJbXBvcnRzL05vSW1wb3J0Rm9yVW5wcmVmaXhlZEF0dHJpYnV0ZS53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbmxpbmVTY2hlbWFHZW5lcmF0ZWRJbXBvcnRzL05vSW1wb3J0Rm9yVW5wcmVmaXhlZEF0dHJpYnV0ZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvSW5saW5lU2NoZW1hTm9OYW1lc3BhY2UvSW5saW5lU2NoZW1hTm9OYW1lc3BhY2Uud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbmxpbmVTY2hlbWFOb05hbWVzcGFjZS9JbmxpbmVTY2hlbWFOb05hbWVzcGFjZS53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9JbmxpbmVTY2hlbWFOb05hbWVzcGFjZS9JbmxpbmVTY2hlbWFOb05hbWVzcGFjZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvTm9OU0VsZW1lbnRSZWZlcmVuY2UvTm9OU0VsZW1lbnRSZWZlcmVuY2Uud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9Ob05TRWxlbWVudFJlZmVyZW5jZS9Ob05TRWxlbWVudFJlZmVyZW5jZS53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9Ob05TRWxlbWVudFJlZmVyZW5jZS9Ob05TRWxlbWVudFJlZmVyZW5jZS53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMAotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS13YXJuaW5nIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKG5vbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNEL09uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvWFNEL09uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRC9PbmVFcnJvckZvcklubGluZVhTRFJlZkludmFsaWRJbmxpbmVYU0Qud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MWFkMTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNEL09uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRC53c2RsLWxvZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotbnVtYmVyIG9mIGVycm9ycyAgICAgIDogMQotbnVtYmVyIG9mIHdhcm5pbmdzICAgIDogMAotCi0tLS0tLS0tLS0tLS1lcnJvciBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotc3JjLXJlc29sdmUuNC4yOiBFcnJvciByZXNvbHZpbmcgY29tcG9uZW50ICd4c2Q6c3RyaW5nYScuIEl0IHdhcyBkZXRlY3RlZCB0aGF0ICd4c2Q6c3RyaW5nYScgaXMgaW4gbmFtZXNwYWNlICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYScsIGJ1dCBjb21wb25lbnRzIGZyb20gdGhpcyBuYW1lc3BhY2UgYXJlIG5vdCByZWZlcmVuY2VhYmxlIGZyb20gc2NoZW1hIGRvY3VtZW50ICd0ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL09uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRC9PbmVFcnJvckZvcklubGluZVhTRFJlZkludmFsaWRJbmxpbmVYU0Qud3NkbCcuIElmIHRoaXMgaXMgdGhlIGluY29ycmVjdCBuYW1lc3BhY2UsIHBlcmhhcHMgdGhlIHByZWZpeCBvZiAneHNkOnN0cmluZ2EnIG5lZWRzIHRvIGJlIGNoYW5nZWQuIElmIHRoaXMgaXMgdGhlIGNvcnJlY3QgbmFtZXNwYWNlLCB0aGVuIGFuIGFwcHJvcHJpYXRlICdpbXBvcnQnIHRhZyBzaG91bGQgYmUgYWRkZWQgdG8gJ3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNEL09uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRC53c2RsJy4gWzcsIDYxXQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvWFNEL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS9SZWZlclRvQW5vdGhlcklubGluZVR5cGUud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9SZWZlclRvQW5vdGhlcklubGluZVR5cGUvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlLndzZGwtbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTJiMzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvWFNEL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS9SZWZlclRvQW5vdGhlcklubGluZVR5cGUud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDAKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0td2FybmluZyBsaXN0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLShub25lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvWFNEL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS9SZWZlclRvQW5vdGhlcklubGluZVR5cGVOb0ltcG9ydC53c2RsLWxvZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9pZGVhbFJlc3VsdHMvWFNEL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS9SZWZlclRvQW5vdGhlcklubGluZVR5cGVOb0ltcG9ydC53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE4ODE4OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9SZWZlclRvQW5vdGhlcklubGluZVR5cGUvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlTm9JbXBvcnQud3NkbC1sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLW51bWJlciBvZiBlcnJvcnMgICAgICA6IDIKLW51bWJlciBvZiB3YXJuaW5ncyAgICA6IDAKLQotLS0tLS0tLS0tLS0tZXJyb3IgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXNyYy1yZXNvbHZlLjQuMjogRXJyb3IgcmVzb2x2aW5nIGNvbXBvbmVudCAndHdvOk5ld1NpbXBsZVR5cGUnLiBJdCB3YXMgZGV0ZWN0ZWQgdGhhdCAndHdvOk5ld1NpbXBsZVR5cGUnIGlzIGluIG5hbWVzcGFjZSAnaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZTIvJywgYnV0IGNvbXBvbmVudHMgZnJvbSB0aGlzIG5hbWVzcGFjZSBhcmUgbm90IHJlZmVyZW5jZWFibGUgZnJvbSBzY2hlbWEgZG9jdW1lbnQgJ3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZU5vSW1wb3J0LndzZGwnLiBJZiB0aGlzIGlzIHRoZSBpbmNvcnJlY3QgbmFtZXNwYWNlLCBwZXJoYXBzIHRoZSBwcmVmaXggb2YgJ3R3bzpOZXdTaW1wbGVUeXBlJyBuZWVkcyB0byBiZSBjaGFuZ2VkLiBJZiB0aGlzIGlzIHRoZSBjb3JyZWN0IG5hbWVzcGFjZSwgdGhlbiBhbiBhcHByb3ByaWF0ZSAnaW1wb3J0JyB0YWcgc2hvdWxkIGJlIGFkZGVkIHRvICd0ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS9SZWZlclRvQW5vdGhlcklubGluZVR5cGVOb0ltcG9ydC53c2RsJy4gWzEzLCA2N10KLXNyYy1yZXNvbHZlLjQuMjogRXJyb3IgcmVzb2x2aW5nIGNvbXBvbmVudCAnb25lOk5ld1NpbXBsZVR5cGUnLiBJdCB3YXMgZGV0ZWN0ZWQgdGhhdCAnb25lOk5ld1NpbXBsZVR5cGUnIGlzIGluIG5hbWVzcGFjZSAnaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZTEvJywgYnV0IGNvbXBvbmVudHMgZnJvbSB0aGlzIG5hbWVzcGFjZSBhcmUgbm90IHJlZmVyZW5jZWFibGUgZnJvbSBzY2hlbWEgZG9jdW1lbnQgJ3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZU5vSW1wb3J0LndzZGwnLiBJZiB0aGlzIGlzIHRoZSBpbmNvcnJlY3QgbmFtZXNwYWNlLCBwZXJoYXBzIHRoZSBwcmVmaXggb2YgJ29uZTpOZXdTaW1wbGVUeXBlJyBuZWVkcyB0byBiZSBjaGFuZ2VkLiBJZiB0aGlzIGlzIHRoZSBjb3JyZWN0IG5hbWVzcGFjZSwgdGhlbiBhbiBhcHByb3ByaWF0ZSAnaW1wb3J0JyB0YWcgc2hvdWxkIGJlIGFkZGVkIHRvICd0ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS9SZWZlclRvQW5vdGhlcklubGluZVR5cGVOb0ltcG9ydC53c2RsJy4gWzI0LCA2N10KLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9SZXN0cmljdGlvblBhdHRlcm5XaXRoQ29sb24vUmVzdHJpY3Rpb25QYXR0ZXJuV2l0aENvbG9uLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvUmVzdHJpY3Rpb25QYXR0ZXJuV2l0aENvbG9uL1Jlc3RyaWN0aW9uUGF0dGVybldpdGhDb2xvbi53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9SZXN0cmljdGlvblBhdHRlcm5XaXRoQ29sb24vUmVzdHJpY3Rpb25QYXR0ZXJuV2l0aENvbG9uLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9TY2hlbWFEb2NFbGVtV2l0aFNvdXJjZUFuZFN1YkVsZW0vU2NoZW1hRG9jRWxlbVdpdGhTb3VyY2VBbmRTdWJFbGVtLndzZGwtbG9nIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvU2NoZW1hRG9jRWxlbVdpdGhTb3VyY2VBbmRTdWJFbGVtL1NjaGVtYURvY0VsZW1XaXRoU291cmNlQW5kU3ViRWxlbS53c2RsLWxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyYjM2MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9TY2hlbWFEb2NFbGVtV2l0aFNvdXJjZUFuZFN1YkVsZW0vU2NoZW1hRG9jRWxlbVdpdGhTb3VyY2VBbmRTdWJFbGVtLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9WYWx1ZUNvbG9uL1ZhbHVlQ29sb24ud3NkbC1sb2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvaWRlYWxSZXN1bHRzL1hTRC9WYWx1ZUNvbG9uL1ZhbHVlQ29sb24ud3NkbC1sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMmIzNjEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL2lkZWFsUmVzdWx0cy9YU0QvVmFsdWVDb2xvbi9WYWx1ZUNvbG9uLndzZGwtbG9nCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1udW1iZXIgb2YgZXJyb3JzICAgICAgOiAwCi1udW1iZXIgb2Ygd2FybmluZ3MgICAgOiAwCi0KLS0tLS0tLS0tLS0tLWVycm9yIGxpc3QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLXdhcm5pbmcgbGlzdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0obm9uZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9MaW5lTnVtYmVyQWRqdXN0bWVudHMvY3ZjLWNvbXBsZXgtdHlwZS4yLjMvY3ZjLWNvbXBsZXgtdHlwZS4yLjMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL0xpbmVOdW1iZXJBZGp1c3RtZW50cy9jdmMtY29tcGxleC10eXBlLjIuMy9jdmMtY29tcGxleC10eXBlLjIuMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWJlMzIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL0xpbmVOdW1iZXJBZGp1c3RtZW50cy9jdmMtY29tcGxleC10eXBlLjIuMy9jdmMtY29tcGxleC10eXBlLjIuMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9jdmMtY29tcGxleC10eXBlLjIuMy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJjdmMtY29tcGxleC10eXBlLjIuMyIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL2N2Yy1jb21wbGV4LXR5cGUuMi4zLyI+Ci08d3NkbDp0eXBlcz4KLTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9jdmMtY29tcGxleC10eXBlLjIuMy8iPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0iTmV3V1NETEZpbGUxIj4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHdzZGw6aW5wdXQgbWVzc2FnZT0iTmV3TWVzc2FnZSI+PC93c2RsOmlucHV0PgotYWFhYQotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL0xpbmVOdW1iZXJBZGp1c3RtZW50cy9jdmMtY29tcGxleC10eXBlLjIuNC5iL2N2Yy1jb21wbGV4LXR5cGUuMi40LmIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL0xpbmVOdW1iZXJBZGp1c3RtZW50cy9jdmMtY29tcGxleC10eXBlLjIuNC5iL2N2Yy1jb21wbGV4LXR5cGUuMi40LmIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE5YzUxNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9MaW5lTnVtYmVyQWRqdXN0bWVudHMvY3ZjLWNvbXBsZXgtdHlwZS4yLjQuYi9jdmMtY29tcGxleC10eXBlLjIuNC5iLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL2N2Yy1jb21wbGV4LXR5cGUuMi40LmIvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iY3ZjLWNvbXBsZXgtdHlwZS4yLjQuYiIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL2N2Yy1jb21wbGV4LXR5cGUuMi40LmIvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL2N2Yy1jb21wbGV4LXR5cGUuMi40LmIvIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9Ik5ld1dTRExGaWxlMSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6cG9ydFR5cGU+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9BbmdsZUhhdEluRmlsZW5hbWUvQW5nbGVIYXReSW5GaWxlbmFtZUludmFsaWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0FuZ2xlSGF0SW5GaWxlbmFtZS9BbmdsZUhhdF5JbkZpbGVuYW1lSW52YWxpZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmJlMzY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0FuZ2xlSGF0SW5GaWxlbmFtZS9BbmdsZUhhdF5JbkZpbGVuYW1lSW52YWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9BbmdsZUhhdEluRmlsZW5hbWUvQW5nbGVIYXReSW5GaWxlbmFtZVZhbGlkLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9BbmdsZUhhdEluRmlsZW5hbWUvQW5nbGVIYXReSW5GaWxlbmFtZVZhbGlkLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMjdkNzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQW5nbGVIYXRJbkZpbGVuYW1lL0FuZ2xlSGF0XkluRmlsZW5hbWVWYWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhJbnZhbGlkLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhJbnZhbGlkLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YmUzNjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQW5nbGVIYXReSW5QYXRoL0FuZ2xlSGF0SW5QYXRoSW52YWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhWYWxpZC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQW5nbGVIYXReSW5QYXRoL0FuZ2xlSGF0SW5QYXRoVmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEyN2Q3MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9BbmdsZUhhdF5JblBhdGgvQW5nbGVIYXRJblBhdGhWYWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQ2xvc2VCcmFja2V0XDA1MUluUGF0aC9DbG9zZUJyYWNrZXRJblBhdGhJbnZhbGlkLndzZGwiICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0Nsb3NlQnJhY2tldFwwNTFJblBhdGgvQ2xvc2VCcmFja2V0SW5QYXRoSW52YWxpZC53c2RsIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZiZTM2OC4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQ2xvc2VCcmFja2V0XDA1MUluUGF0aC9DbG9zZUJyYWNrZXRJblBhdGhJbnZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQ2xvc2VCcmFja2V0XDA1MUluUGF0aC9DbG9zZUJyYWNrZXRJblBhdGhWYWxpZC53c2RsIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9DbG9zZUJyYWNrZXRcMDUxSW5QYXRoL0Nsb3NlQnJhY2tldEluUGF0aFZhbGlkLndzZGwiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI3ZDcwLi4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9DbG9zZUJyYWNrZXRcMDUxSW5QYXRoL0Nsb3NlQnJhY2tldEluUGF0aFZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS9DbG9zZUJyYWNrZXRcMDUxSW5GaWxlbmFtZUludmFsaWQud3NkbCIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS9DbG9zZUJyYWNrZXRcMDUxSW5GaWxlbmFtZUludmFsaWQud3NkbCIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YmUzNjguLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0Nsb3NlQnJhY2tldEluRmlsZW5hbWUvQ2xvc2VCcmFja2V0XDA1MUluRmlsZW5hbWVJbnZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS9DbG9zZUJyYWNrZXRcMDUxSW5GaWxlbmFtZVZhbGlkLndzZGwiICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0Nsb3NlQnJhY2tldEluRmlsZW5hbWUvQ2xvc2VCcmFja2V0XDA1MUluRmlsZW5hbWVWYWxpZC53c2RsIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEyN2Q3MC4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvQ2xvc2VCcmFja2V0SW5GaWxlbmFtZS9DbG9zZUJyYWNrZXRcMDUxSW5GaWxlbmFtZVZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9EYXNoLUluUGF0aC9EYXNoSW5QYXRoSW52YWxpZC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRGFzaC1JblBhdGgvRGFzaEluUGF0aEludmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZiZTM2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9EYXNoLUluUGF0aC9EYXNoSW5QYXRoSW52YWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9EYXNoLUluUGF0aC9EYXNoSW5QYXRoVmFsaWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0Rhc2gtSW5QYXRoL0Rhc2hJblBhdGhWYWxpZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI3ZDcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0Rhc2gtSW5QYXRoL0Rhc2hJblBhdGhWYWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9EYXNoSW5GaWxlbmFtZS9EYXNoLUluRmlsZW5hbWVJbnZhbGlkLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9EYXNoSW5GaWxlbmFtZS9EYXNoLUluRmlsZW5hbWVJbnZhbGlkLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YmUzNjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRGFzaEluRmlsZW5hbWUvRGFzaC1JbkZpbGVuYW1lSW52YWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9EYXNoSW5GaWxlbmFtZS9EYXNoLUluRmlsZW5hbWVWYWxpZC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRGFzaEluRmlsZW5hbWUvRGFzaC1JbkZpbGVuYW1lVmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEyN2Q3MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9EYXNoSW5GaWxlbmFtZS9EYXNoLUluRmlsZW5hbWVWYWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRXhjbGFtYXRpb25cMDQxSW5QYXRoL0V4Y2xhbWF0aW9uSW5QYXRoSW52YWxpZC53c2RsIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9FeGNsYW1hdGlvblwwNDFJblBhdGgvRXhjbGFtYXRpb25JblBhdGhJbnZhbGlkLndzZGwiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmJlMzY4Li4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9FeGNsYW1hdGlvblwwNDFJblBhdGgvRXhjbGFtYXRpb25JblBhdGhJbnZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRXhjbGFtYXRpb25cMDQxSW5QYXRoL0V4Y2xhbWF0aW9uSW5QYXRoVmFsaWQud3NkbCIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRXhjbGFtYXRpb25cMDQxSW5QYXRoL0V4Y2xhbWF0aW9uSW5QYXRoVmFsaWQud3NkbCIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMjdkNzAuLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0V4Y2xhbWF0aW9uXDA0MUluUGF0aC9FeGNsYW1hdGlvbkluUGF0aFZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRXhjbGFtYXRpb25JbkZpbGVuYW1lL0V4Y2xhbWF0aW9uXDA0MUluRmlsZW5hbWVJbnZhbGlkLndzZGwiICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL0V4Y2xhbWF0aW9uSW5GaWxlbmFtZS9FeGNsYW1hdGlvblwwNDFJbkZpbGVuYW1lSW52YWxpZC53c2RsIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZiZTM2OC4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRXhjbGFtYXRpb25JbkZpbGVuYW1lL0V4Y2xhbWF0aW9uXDA0MUluRmlsZW5hbWVJbnZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvRXhjbGFtYXRpb25JbkZpbGVuYW1lL0V4Y2xhbWF0aW9uXDA0MUluRmlsZW5hbWVWYWxpZC53c2RsIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9FeGNsYW1hdGlvbkluRmlsZW5hbWUvRXhjbGFtYXRpb25cMDQxSW5GaWxlbmFtZVZhbGlkLndzZGwiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI3ZDcwLi4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9FeGNsYW1hdGlvbkluRmlsZW5hbWUvRXhjbGFtYXRpb25cMDQxSW5GaWxlbmFtZVZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvT3BlbkJyYWNrZXRcMDUwSW5QYXRoL09wZW5CcmFja2V0SW5QYXRoSW52YWxpZC53c2RsIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9PcGVuQnJhY2tldFwwNTBJblBhdGgvT3BlbkJyYWNrZXRJblBhdGhJbnZhbGlkLndzZGwiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmJlMzY4Li4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9PcGVuQnJhY2tldFwwNTBJblBhdGgvT3BlbkJyYWNrZXRJblBhdGhJbnZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvT3BlbkJyYWNrZXRcMDUwSW5QYXRoL09wZW5CcmFja2V0SW5QYXRoVmFsaWQud3NkbCIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvT3BlbkJyYWNrZXRcMDUwSW5QYXRoL09wZW5CcmFja2V0SW5QYXRoVmFsaWQud3NkbCIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMjdkNzAuLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL09wZW5CcmFja2V0XDA1MEluUGF0aC9PcGVuQnJhY2tldEluUGF0aFZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvT3BlbkJyYWNrZXRJbkZpbGVuYW1lL09wZW5CcmFja2V0XDA1MEluRmlsZW5hbWVJbnZhbGlkLndzZGwiICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL09wZW5CcmFja2V0SW5GaWxlbmFtZS9PcGVuQnJhY2tldFwwNTBJbkZpbGVuYW1lSW52YWxpZC53c2RsIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZiZTM2OC4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvT3BlbkJyYWNrZXRJbkZpbGVuYW1lL09wZW5CcmFja2V0XDA1MEluRmlsZW5hbWVJbnZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvT3BlbkJyYWNrZXRJbkZpbGVuYW1lL09wZW5CcmFja2V0XDA1MEluRmlsZW5hbWVWYWxpZC53c2RsIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9PcGVuQnJhY2tldEluRmlsZW5hbWUvT3BlbkJyYWNrZXRcMDUwSW5GaWxlbmFtZVZhbGlkLndzZGwiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI3ZDcwLi4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9PcGVuQnJhY2tldEluRmlsZW5hbWUvT3BlbkJyYWNrZXRcMDUwSW5GaWxlbmFtZVZhbGlkLndzZGwiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9QZXJpb2QuSW5QYXRoL1BlcmlvZEluUGF0aEludmFsaWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1BlcmlvZC5JblBhdGgvUGVyaW9kSW5QYXRoSW52YWxpZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmJlMzY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1BlcmlvZC5JblBhdGgvUGVyaW9kSW5QYXRoSW52YWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9QZXJpb2QuSW5QYXRoL1BlcmlvZEluUGF0aFZhbGlkLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9QZXJpb2QuSW5QYXRoL1BlcmlvZEluUGF0aFZhbGlkLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMjdkNzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvUGVyaW9kLkluUGF0aC9QZXJpb2RJblBhdGhWYWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9QZXJpb2RJbkZpbGVuYW1lL1BlcmlvZC5JbkZpbGVuYW1lSW52YWxpZC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvUGVyaW9kSW5GaWxlbmFtZS9QZXJpb2QuSW5GaWxlbmFtZUludmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZiZTM2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9QZXJpb2RJbkZpbGVuYW1lL1BlcmlvZC5JbkZpbGVuYW1lSW52YWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9QZXJpb2RJbkZpbGVuYW1lL1BlcmlvZC5JbkZpbGVuYW1lVmFsaWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1BlcmlvZEluRmlsZW5hbWUvUGVyaW9kLkluRmlsZW5hbWVWYWxpZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI3ZDcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1BlcmlvZEluRmlsZW5hbWUvUGVyaW9kLkluRmlsZW5hbWVWYWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ibmFtZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9QbGF0Zm9ybVVSTC9vbmUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1BsYXRmb3JtVVJML29uZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDI3NWE1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1BsYXRmb3JtVVJML29uZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL29uZS8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJvbmUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9vbmUvIj4KLTx3c2RsOmltcG9ydAotICBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvdHdvLyIKLSAgbG9jYXRpb249InBsYXRmb3JtOi9yZXNvdXJjZS90ZXN0L3R3by53c2RsIi8+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9QbGF0Zm9ybVVSTC90d28ud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1BsYXRmb3JtVVJML3R3by53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTMwZGIwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1BsYXRmb3JtVVJML3R3by53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3R3by8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJ0d28iIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy90d28vIj4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9RdW90ZVwwNDdJblBhdGgvUXVvdGVJblBhdGhJbnZhbGlkLndzZGwiICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1F1b3RlXDA0N0luUGF0aC9RdW90ZUluUGF0aEludmFsaWQud3NkbCIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YmUzNjguLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1F1b3RlXDA0N0luUGF0aC9RdW90ZUluUGF0aEludmFsaWQud3NkbCIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9RdW90ZVwwNDdJblBhdGgvUXVvdGVJblBhdGhWYWxpZC53c2RsIiAiYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9RdW90ZVwwNDdJblBhdGgvUXVvdGVJblBhdGhWYWxpZC53c2RsIgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEyN2Q3MC4uMDAwMDAwMAotLS0gImEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvUXVvdGVcMDQ3SW5QYXRoL1F1b3RlSW5QYXRoVmFsaWQud3NkbCIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9RdW90ZUluRmlsZW5hbWUvUXVvdGVcMDQ3SW5GaWxlbmFtZUludmFsaWQud3NkbCIgImIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvUXVvdGVJbkZpbGVuYW1lL1F1b3RlXDA0N0luRmlsZW5hbWVJbnZhbGlkLndzZGwiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmJlMzY4Li4wMDAwMDAwCi0tLSAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9RdW90ZUluRmlsZW5hbWUvUXVvdGVcMDQ3SW5GaWxlbmFtZUludmFsaWQud3NkbCIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCAiYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9RdW90ZUluRmlsZW5hbWUvUXVvdGVcMDQ3SW5GaWxlbmFtZVZhbGlkLndzZGwiICJiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1F1b3RlSW5GaWxlbmFtZS9RdW90ZVwwNDdJbkZpbGVuYW1lVmFsaWQud3NkbCIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMjdkNzAuLjAwMDAwMDAKLS0tICJhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1F1b3RlSW5GaWxlbmFtZS9RdW90ZVwwNDdJbkZpbGVuYW1lVmFsaWQud3NkbCIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1NwYWNlIEluUGF0aC9TcGFjZUluUGF0aEludmFsaWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1NwYWNlIEluUGF0aC9TcGFjZUluUGF0aEludmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZiZTM2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9TcGFjZSBJblBhdGgvU3BhY2VJblBhdGhJbnZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1NwYWNlIEluUGF0aC9TcGFjZUluUGF0aFZhbGlkLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9TcGFjZSBJblBhdGgvU3BhY2VJblBhdGhWYWxpZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI3ZDcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1NwYWNlIEluUGF0aC9TcGFjZUluUGF0aFZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1NwYWNlSW5GaWxlbmFtZS9TcGFjZSBJbkZpbGVuYW1lSW52YWxpZC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvU3BhY2VJbkZpbGVuYW1lL1NwYWNlIEluRmlsZW5hbWVJbnZhbGlkLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YmUzNjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvU3BhY2VJbkZpbGVuYW1lL1NwYWNlIEluRmlsZW5hbWVJbnZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1NwYWNlSW5GaWxlbmFtZS9TcGFjZSBJbkZpbGVuYW1lVmFsaWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1NwYWNlSW5GaWxlbmFtZS9TcGFjZSBJbkZpbGVuYW1lVmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEyN2Q3MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9TcGFjZUluRmlsZW5hbWUvU3BhY2UgSW5GaWxlbmFtZVZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1RpbGRlSW5GaWxlbmFtZS9UaWxkZX5JbkZpbGVuYW1lSW52YWxpZC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvVGlsZGVJbkZpbGVuYW1lL1RpbGRlfkluRmlsZW5hbWVJbnZhbGlkLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YmUzNjguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvVGlsZGVJbkZpbGVuYW1lL1RpbGRlfkluRmlsZW5hbWVJbnZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1RpbGRlSW5GaWxlbmFtZS9UaWxkZX5JbkZpbGVuYW1lVmFsaWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1RpbGRlSW5GaWxlbmFtZS9UaWxkZX5JbkZpbGVuYW1lVmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEyN2Q3MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9UaWxkZUluRmlsZW5hbWUvVGlsZGV+SW5GaWxlbmFtZVZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1RpbGRlfkluUGF0aC9UaWxkZUluUGF0aEludmFsaWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1RpbGRlfkluUGF0aC9UaWxkZUluUGF0aEludmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZiZTM2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9UaWxkZX5JblBhdGgvVGlsZGVJblBhdGhJbnZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1RpbGRlfkluUGF0aC9UaWxkZUluUGF0aFZhbGlkLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9UaWxkZX5JblBhdGgvVGlsZGVJblBhdGhWYWxpZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI3ZDcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1RpbGRlfkluUGF0aC9UaWxkZUluUGF0aFZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1VuZGVyc2NvcmVJbkZpbGVuYW1lL1VuZGVyc2NvcmVfSW5GaWxlbmFtZUludmFsaWQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1VuZGVyc2NvcmVJbkZpbGVuYW1lL1VuZGVyc2NvcmVfSW5GaWxlbmFtZUludmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZiZTM2OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9VbmRlcnNjb3JlSW5GaWxlbmFtZS9VbmRlcnNjb3JlX0luRmlsZW5hbWVJbnZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1VuZGVyc2NvcmVJbkZpbGVuYW1lL1VuZGVyc2NvcmVfSW5GaWxlbmFtZVZhbGlkLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9VbmRlcnNjb3JlSW5GaWxlbmFtZS9VbmRlcnNjb3JlX0luRmlsZW5hbWVWYWxpZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI3ZDcwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1VuZGVyc2NvcmVJbkZpbGVuYW1lL1VuZGVyc2NvcmVfSW5GaWxlbmFtZVZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1VuZGVyc2NvcmVfSW5QYXRoL1VuZGVyc2NvcmVJblBhdGhJbnZhbGlkLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9QYXRocy9VbmRlcnNjb3JlX0luUGF0aC9VbmRlcnNjb3JlSW5QYXRoSW52YWxpZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmJlMzY4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1VuZGVyc2NvcmVfSW5QYXRoL1VuZGVyc2NvcmVJblBhdGhJbnZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1BhdGhzL1VuZGVyc2NvcmVfSW5QYXRoL1VuZGVyc2NvcmVJblBhdGhWYWxpZC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvVW5kZXJzY29yZV9JblBhdGgvVW5kZXJzY29yZUluUGF0aFZhbGlkLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMjdkNzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvUGF0aHMvVW5kZXJzY29yZV9JblBhdGgvVW5kZXJzY29yZUluUGF0aFZhbGlkLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvQmluZGluZ0VsZW1lbnQvSW52YWxpZFN0eWxlL0JpbmRpbmdJbnZhbGlkU3R5bGUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvQmluZGluZ0VsZW1lbnQvSW52YWxpZFN0eWxlL0JpbmRpbmdJbnZhbGlkU3R5bGUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE0NWQzOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0JpbmRpbmdFbGVtZW50L0ludmFsaWRTdHlsZS9CaW5kaW5nSW52YWxpZFN0eWxlLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iQmluZGluZ0ludmFsaWRTdHlsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0JpbmRpbmdJbnZhbGlkU3R5bGUvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmluZGluZ0ludmFsaWRTdHlsZS8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0JpbmRpbmdJbnZhbGlkU3R5bGUvIj4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkJpbmRpbmdJbnZhbGlkU3R5bGUiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQmluZGluZ0ludmFsaWRTdHlsZVNPQVAiIHR5cGU9InRuczpCaW5kaW5nSW52YWxpZFN0eWxlIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJJbnZhbGlkU3R5bGUiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CaW5kaW5nSW52YWxpZFN0eWxlL05ld09wZXJhdGlvbiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkJpbmRpbmdJbnZhbGlkU3R5bGUiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQmluZGluZ0ludmFsaWRTdHlsZVNPQVAiIGJpbmRpbmc9InRuczpCaW5kaW5nSW52YWxpZFN0eWxlU09BUCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvQmluZGluZ0VsZW1lbnQvSW52YWxpZFVzZS9CaW5kaW5nSW52YWxpZFVzZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9CaW5kaW5nRWxlbWVudC9JbnZhbGlkVXNlL0JpbmRpbmdJbnZhbGlkVXNlLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNGMyNjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9CaW5kaW5nRWxlbWVudC9JbnZhbGlkVXNlL0JpbmRpbmdJbnZhbGlkVXNlLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iQmluZGluZ0ludmFsaWRVc2UiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CaW5kaW5nSW52YWxpZFVzZS8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CaW5kaW5nSW52YWxpZFVzZS8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0JpbmRpbmdJbnZhbGlkVXNlLyI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPC94c2Q6c2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJCaW5kaW5nSW52YWxpZFVzZSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJCaW5kaW5nSW52YWxpZFVzZVNPQVAiIHR5cGU9InRuczpCaW5kaW5nSW52YWxpZFVzZSI+Ci0gICAgICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgICAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgICAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0JpbmRpbmdJbnZhbGlkVXNlL05ld09wZXJhdGlvbiIvPgotICAgICAgICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgICAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgICAgICAgICA8c29hcDpib2R5IHVzZT0iSW52YWxpZFVzZSIvPgotICAgICAgICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJCaW5kaW5nSW52YWxpZFVzZSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJCaW5kaW5nSW52YWxpZFVzZVNPQVAiIGJpbmRpbmc9InRuczpCaW5kaW5nSW52YWxpZFVzZVNPQVAiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0Nhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbk5hbWVzL0Nhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbk5hbWVzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0Nhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbk5hbWVzL0Nhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbk5hbWVzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZTFjOGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9DYXNlSW5zZW5zaXRpdmVPcGVyYXRpb25OYW1lcy9DYXNlSW5zZW5zaXRpdmVPcGVyYXRpb25OYW1lcy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IkNhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbnMiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9DYXNlSW5zZW5zaXRpdmVPcGVyYXRpb25zLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0Nhc2VJbnNlbnNpdGl2ZU9wZXJhdGlvbnMvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9DYXNlSW5zZW5zaXRpdmVPcGVyYXRpb25zLyI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPC94c2Q6c2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJDYXNlSW5zZW5zaXRpdmVPcGVyYXRpb25zIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iT3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ib3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9DeWNsaWMvUG9ydHR5cGVSZWZNZXNzYWdlMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9DeWNsaWMvUG9ydHR5cGVSZWZNZXNzYWdlMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2U0YzU3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvQ3ljbGljL1BvcnR0eXBlUmVmTWVzc2FnZTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9jeWNsaWMxLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9ImN5Y2xpYzEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL2N5Y2xpYzEvIiB4bWxuczpjeWNsaWMyPSJodHRwOi8vdGVtcHVyaS5vcmcvY3ljbGljMi8iPgotICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvY3ljbGljMi8iIGxvY2F0aW9uPSJQb3J0dHlwZVJlZk1lc3NhZ2UyLndzZGwiPjwvd3NkbDppbXBvcnQ+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL2N5Y2xpYzEvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9ImN5Y2xpYzEiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0iY3ljbGljMjpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0iY3ljbGljMjpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvQ3ljbGljL1BvcnR0eXBlUmVmTWVzc2FnZTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvQ3ljbGljL1BvcnR0eXBlUmVmTWVzc2FnZTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEzNTI5MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0N5Y2xpYy9Qb3J0dHlwZVJlZk1lc3NhZ2UyLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvY3ljbGljMi8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJjeWNsaWMyIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9jeWNsaWMyLyIgeG1sbnM6Y3ljbGljMT0iaHR0cDovL3RlbXB1cmkub3JnL2N5Y2xpYzEvIj4KLSAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL2N5Y2xpYzEvIiBsb2NhdGlvbj0iUG9ydHR5cGVSZWZNZXNzYWdlMS53c2RsIj48L3dzZGw6aW1wb3J0PgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9jeWNsaWMyLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPC94c2Q6c2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJjeWNsaWMyIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9ImN5Y2xpYzE6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9ImN5Y2xpYzE6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0V4dGVuc2libGVFbGVtZW50cy9CYWRFeHRlbnNpYmxlRWxlbWVudHMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0JhZEV4dGVuc2libGVFbGVtZW50cy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWIyMGU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0JhZEV4dGVuc2libGVFbGVtZW50cy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IkJhZEV4dGVuc2libGVFbGVtZW50cyIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmFkRXh0ZW5zaWJsZUVsZW1lbnRzLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmFkRXh0ZW5zaWJsZUVsZW1lbnRzLyIKLQl4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9CYWRFeHRlbnNpYmxlRWxlbWVudHMvIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb24iIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9IkJhZEV4dGVuc2libGVFbGVtZW50cyI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiPgotCQkJCTx4c2Q6YW5ub3RhdGlvbj48L3hzZDphbm5vdGF0aW9uPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDphbm5vdGF0aW9uPjwveHNkOmFubm90YXRpb24+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLQk8d3NkbDpiaW5kaW5nIG5hbWU9IkJhZEV4dGVuc2libGVFbGVtZW50c1NPQVAiIHR5cGU9InRuczpCYWRFeHRlbnNpYmxlRWxlbWVudHMiPgotCQk8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIKLQkJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTxzb2FwOm9wZXJhdGlvbgotCQkJCXNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvQmFkRXh0ZW5zaWJsZUVsZW1lbnRzL05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6YmluZGluZz4KLQk8d3NkbDpzZXJ2aWNlIG5hbWU9IkJhZEV4dGVuc2libGVFbGVtZW50cyI+Ci0JCTx3c2RsOnBvcnQgYmluZGluZz0idG5zOkJhZEV4dGVuc2libGVFbGVtZW50c1NPQVAiIG5hbWU9IkJhZEV4dGVuc2libGVFbGVtZW50c1NPQVAiPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZUJpbmRpbmcud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0V4dGVuc2libGVCaW5kaW5nLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMmQ1NzkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZUJpbmRpbmcud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJFeHRlbnNpYmxlQmluZGluZyIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRXh0ZW5zaWJsZUJpbmRpbmcvIiB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIgotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9FeHRlbnNpYmxlQmluZGluZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRXh0ZW5zaWJsZUJpbmRpbmcvIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZTEiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb24iIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UxIj4KLQkJPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UxIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJFeHRlbnNpYmxlQmluZGluZyI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLQotCTx3c2RsOmJpbmRpbmcgbmFtZT0iRXh0ZW5zaWJsZUJpbmRpbmdTT0FQIgotCQl0eXBlPSJ0bnM6RXh0ZW5zaWJsZUJpbmRpbmciPgotCQk8eHNkOmFubm90YXRpb24+PC94c2Q6YW5ub3RhdGlvbj4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiCi0JCQl0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgLz4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8c29hcDpvcGVyYXRpb24KLQkJCQlzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0V4dGVuc2libGVCaW5kaW5nL05ld09wZXJhdGlvbiIgLz4KLQkJCTx4c2Q6YW5ub3RhdGlvbj48L3hzZDphbm5vdGF0aW9uPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHhzZDphbm5vdGF0aW9uPjwveHNkOmFubm90YXRpb24+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHhzZDphbm5vdGF0aW9uPjwveHNkOmFubm90YXRpb24+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQkJPHdzZGw6ZmF1bHQgbmFtZT0ibXlmYXVsdCI+Ci0JCQkJPHhzZDphbm5vdGF0aW9uPjwveHNkOmFubm90YXRpb24+Ci0JCQk8L3dzZGw6ZmF1bHQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOmJpbmRpbmc+Ci0JCi0JPHdzZGw6c2VydmljZSBuYW1lPSJFeHRlbnNpYmxlQmluZGluZyI+Ci0JCTx3c2RsOnBvcnQgYmluZGluZz0idG5zOkV4dGVuc2libGVCaW5kaW5nU09BUCIgbmFtZT0iRXh0ZW5zaWJsZUJpbmRpbmdTT0FQIj4KLQkJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIiAvPgotCQk8L3dzZGw6cG9ydD4KLQk8L3dzZGw6c2VydmljZT4KLQotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9FeHRlbnNpYmxlRWxlbWVudHMvRXh0ZW5zaWJsZVBvcnRUeXBlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0V4dGVuc2libGVFbGVtZW50cy9FeHRlbnNpYmxlUG9ydFR5cGUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIxMjZjZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0V4dGVuc2libGVFbGVtZW50cy9FeHRlbnNpYmxlUG9ydFR5cGUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJFeHRlbnNpYmxlUG9ydFR5cGUiCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0V4dGVuc2libGVQb3J0VHlwZS8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0V4dGVuc2libGVQb3J0VHlwZS8iCi0JeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRXh0ZW5zaWJsZVBvcnRUeXBlLyI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG5hbWU9ImluIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ib3V0IiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQk8L3hzZDpjb21wbGV4VHlwZT4KLQkJCTwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotCQk8eHNkOmFubm90YXRpb24+PC94c2Q6YW5ub3RhdGlvbj4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6cG9ydFR5cGUgbmFtZT0iRXh0ZW5zaWJsZVBvcnRUeXBlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0JCQk8eHNkOmFubm90YXRpb24+PC94c2Q6YW5ub3RhdGlvbj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iRXh0ZW5zaWJsZVBvcnRUeXBlU09BUCIgdHlwZT0idG5zOkV4dGVuc2libGVQb3J0VHlwZSI+Ci0JCTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IgotCQkJdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIC8+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHNvYXA6b3BlcmF0aW9uCi0JCQkJc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9FeHRlbnNpYmxlUG9ydFR5cGUvTmV3T3BlcmF0aW9uIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iRXh0ZW5zaWJsZVBvcnRUeXBlIj4KLQkJPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6RXh0ZW5zaWJsZVBvcnRUeXBlU09BUCIgbmFtZT0iRXh0ZW5zaWJsZVBvcnRUeXBlU09BUCI+Ci0JCQk8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0V4dGVuc2libGVFbGVtZW50cy9FeHRlbnNpYmxlU2VydmljZVBvcnQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0V4dGVuc2libGVTZXJ2aWNlUG9ydC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDQzNjRiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvRXh0ZW5zaWJsZUVsZW1lbnRzL0V4dGVuc2libGVTZXJ2aWNlUG9ydC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IkV4dGVuc2libGVTZXJ2aWNlUG9ydCIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRXh0ZW5zaWJsZVNlcnZpY2VQb3J0LyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRXh0ZW5zaWJsZVNlcnZpY2VQb3J0LyIKLQl4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9FeHRlbnNpYmxlU2VydmljZVBvcnQvIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0iaW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCQkJPHhzZDpjb21wbGV4VHlwZT4KLQkJCQkJPHhzZDpzZXF1ZW5jZT4KLQkJCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJvdXQiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotCQk8d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb24iIG5hbWU9InBhcmFtZXRlcnMiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIiAvPgotCTwvd3NkbDptZXNzYWdlPgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9IkV4dGVuc2libGVTZXJ2aWNlUG9ydCI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiAvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLQk8d3NkbDpiaW5kaW5nIG5hbWU9IkV4dGVuc2libGVTZXJ2aWNlUG9ydFNPQVAiIHR5cGU9InRuczpFeHRlbnNpYmxlU2VydmljZVBvcnQiPgotCQk8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIKLQkJCXRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLQkJCTxzb2FwOm9wZXJhdGlvbgotCQkJCXNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvRXh0ZW5zaWJsZVNlcnZpY2VQb3J0L05ld09wZXJhdGlvbiIgLz4KLQkJCTx3c2RsOmlucHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOmlucHV0PgotCQkJPHdzZGw6b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiAvPgotCQkJPC93c2RsOm91dHB1dD4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6YmluZGluZz4KLQk8d3NkbDpzZXJ2aWNlIG5hbWU9IkV4dGVuc2libGVTZXJ2aWNlUG9ydCI+Ci0JCTx4c2Q6YW5ub3RhdGlvbj48L3hzZDphbm5vdGF0aW9uPgotCQk8d3NkbDpwb3J0IGJpbmRpbmc9InRuczpFeHRlbnNpYmxlU2VydmljZVBvcnRTT0FQIiBuYW1lPSJFeHRlbnNpYmxlU2VydmljZVBvcnRTT0FQIj4KLQkJCTx4c2Q6YW5ub3RhdGlvbj48L3hzZDphbm5vdGF0aW9uPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iIC8+Ci0JCTwvd3NkbDpwb3J0PgotCTwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvSW1wb3J0T25lQW5kVHdvLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9BbHBoYWJldGljYWxPcmRlck9mSW1wb3J0cy9JbXBvcnRPbmVBbmRUd28ud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc2M2FmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9BbHBoYWJldGljYWxPcmRlck9mSW1wb3J0cy9JbXBvcnRPbmVBbmRUd28ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQluYW1lPSJJbXBvcnRPbmVBbmRUd28iCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vSW1wb3J0T25lQW5kVHdvIiAKLQl4bWxuczp3c2RsMT0iaHR0cDovL3RlbXB1cmkub3JnL29uZS53c2RsIgotCXhtbG5zOndzZGwyPSJodHRwOi8vYXRlbXB1cmkub3JnL3R3by53c2RsIj4KLQotCQotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL29uZS53c2RsIiBsb2NhdGlvbj0ib25lLndzZGwiLz4KLTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly9hdGVtcHVyaS5vcmcvdHdvLndzZGwiIGxvY2F0aW9uPSJ0d28ud3NkbCIvPgotCQotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0FscGhhYmV0aWNhbE9yZGVyT2ZJbXBvcnRzL29uZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvb25lLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMGZmMTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvb25lLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvb25lLndzZGwiCi0JeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0ib25lIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL29uZS53c2RsIj4KLQkKLQk8d3NkbDptZXNzYWdlIG5hbWU9Ik1lc3NhZ2UiPgotCQk8d3NkbDpwYXJ0IG5hbWU9Ik1lc3NhZ2UiIHR5cGU9InhzZDpzdHJpbmciPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvQWxwaGFiZXRpY2FsT3JkZXJPZkltcG9ydHMvdHdvLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9BbHBoYWJldGljYWxPcmRlck9mSW1wb3J0cy90d28ud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRmMTYwYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9BbHBoYWJldGljYWxPcmRlck9mSW1wb3J0cy90d28ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IS0tIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhlIG5hbWVzcGFjZSBvZiB0aGlzIGRvY3VtZW50IHN0YXJ0IHdpdGggYW4gYSBhcyBpdCBzaG91bGQKLSAgICAgYmUgaW1wb3J0ZWQgZmlyc3QgYnkgSW1wb3J0T25lQW5kVHdvLndzZGwuIFRoZSBvcmRlciBvZiB0aGUgaW1wb3J0cyBpcyBkZXRlcm1pbmVkCi0gICAgIGJ5IGFscGhhYmV0aWNhbCBvcmRlciBvZiB0aGUgbmFtZXNwYWNlcyBpbiB0aGlzIGRlZmVjdC4gLS0+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly9hdGVtcHVyaS5vcmcvdHdvLndzZGwiCi0JeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIG5hbWU9InR3byIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9hdGVtcHVyaS5vcmcvdHdvLndzZGwiCi0JeG1sbnM6d3NkbDE9Imh0dHA6Ly90ZW1wdXJpLm9yZy9vbmUud3NkbCIgeG1sbnM6d3NkbDI9Imh0dHA6Ly9hdGVtcHVyaS5vcmcvdHdvLndzZGwiPgotCTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9vbmUud3NkbCIKLQkJbG9jYXRpb249Im9uZS53c2RsIj4KLQk8L3dzZGw6aW1wb3J0PgotCTx3c2RsOnBvcnRUeXBlIG5hbWU9IlBvcnRUeXBlIj4KLQkJPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik9wZXJhdGlvbiI+Ci0JCQk8d3NkbDppbnB1dCBtZXNzYWdlPSJ3c2RsMTpNZXNzYWdlIiBuYW1lPSJJbnB1dCIvPgotCQkJPHdzZGw6b3V0cHV0IG1lc3NhZ2U9IndzZGwxOk1lc3NhZ2UiIG5hbWU9Ik91dHB1dCIvPgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydEVtcHR5TG9jYXRpb24vSW1wb3J0RW1wdHlMb2NhdGlvbi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlMb2NhdGlvbi9JbXBvcnRFbXB0eUxvY2F0aW9uLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhYjg5NjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlMb2NhdGlvbi9JbXBvcnRFbXB0eUxvY2F0aW9uLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vZXhhbXBsZS5jb20vSW1wb3J0RW1wdHlMb2NhdGlvbi8iIAotICAgICAgICAgICAgICAgICAgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0gICAgICAgICAgICAgICAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICAgICAgICAgICAgICAgIG5hbWU9IkltcG9ydEVtcHR5TG9jYXRpb24iIAotICAgICAgICAgICAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vZXhhbXBsZS5jb20vSW1wb3J0RW1wdHlMb2NhdGlvbi8iPgotICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vc29tZXVyaSIgbG9jYXRpb249IiIvPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Im1lc3NhZ2UiPgotCQk8d3NkbDpwYXJ0IG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzZDpzdHJpbmciPjwvd3NkbDpwYXJ0PgotCTwvd3NkbDptZXNzYWdlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2UvSW1wb3J0RW1wdHlOYW1lc3BhY2Uud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydEVtcHR5TmFtZXNwYWNlL0ltcG9ydEVtcHR5TmFtZXNwYWNlLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZWFmNzAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0RW1wdHlOYW1lc3BhY2UvSW1wb3J0RW1wdHlOYW1lc3BhY2Uud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly9leGFtcGxlLmNvbS9JbXBvcnRFbXB0eU5hbWVzcGFjZS8iIAotICAgICAgICAgICAgICAgICAgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIAotICAgICAgICAgICAgICAgICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLSAgICAgICAgICAgICAgICAgIG5hbWU9IkltcG9ydEVtcHR5TmFtZXNwYWNlIiAKLSAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2V4YW1wbGUuY29tL0ltcG9ydEVtcHR5TmFtZXNwYWNlLyI+Ci0gIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9IiIgbG9jYXRpb249InNpbXBsZS53c2RsIi8+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ibWVzc2FnZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0ibWVzc2FnZSIgdHlwZT0ieHNkOnN0cmluZyI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRFbXB0eU5hbWVzcGFjZS9zaW1wbGUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydEVtcHR5TmFtZXNwYWNlL3NpbXBsZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDBmMDk4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydEVtcHR5TmFtZXNwYWNlL3NpbXBsZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vZXhhbXBsZS5jb20vc2ltcGxlLyIgCi0gICAgICAgICAgICAgICAgICB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgCi0gICAgICAgICAgICAgICAgICBuYW1lPSJzaW1wbGUiIAotICAgICAgICAgICAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vZXhhbXBsZS5jb20vc2ltcGxlLyI+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRFbXB0eU5hbWVzcGFjZUFuZExvY2F0aW9uL0ltcG9ydEVtcHR5TmFtZXNwYWNlQW5kTG9jYXRpb24ud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydEVtcHR5TmFtZXNwYWNlQW5kTG9jYXRpb24vSW1wb3J0RW1wdHlOYW1lc3BhY2VBbmRMb2NhdGlvbi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTM1MjE2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydEVtcHR5TmFtZXNwYWNlQW5kTG9jYXRpb24vSW1wb3J0RW1wdHlOYW1lc3BhY2VBbmRMb2NhdGlvbi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL2V4YW1wbGUuY29tL0ltcG9ydEVtcHR5TmFtZXNwYWNlQW5kTG9jYXRpb24vIiAKLSAgICAgICAgICAgICAgICAgIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiAKLSAgICAgICAgICAgICAgICAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0gICAgICAgICAgICAgICAgICBuYW1lPSJJbXBvcnRFbXB0eU5hbWVzcGFjZUFuZExvY2F0aW9uIiAKLSAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2V4YW1wbGUuY29tL0ltcG9ydEVtcHR5TmFtZXNwYWNlQW5kTG9jYXRpb24vIj4KLSAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iIiBsb2NhdGlvbj0iIi8+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ibWVzc2FnZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0ibWVzc2FnZSIgdHlwZT0ieHNkOnN0cmluZyI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnROb0xvY2F0aW9uQXR0cmlidXRlL0ltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUvSW1wb3J0Tm9Mb2NhdGlvbkF0dHJpYnV0ZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDAyMjc4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUvSW1wb3J0Tm9Mb2NhdGlvbkF0dHJpYnV0ZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL2V4YW1wbGUuY29tL0ltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUvIiAKLSAgICAgICAgICAgICAgICAgIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotICAgICAgICAgICAgICAgICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgICAgICAgICAgICAgICBuYW1lPSJJbXBvcnROb0xvY2F0aW9uQXR0cmlidXRlIiAKLSAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2V4YW1wbGUuY29tL0ltcG9ydE5vTG9jYXRpb25BdHRyaWJ1dGUvIj4KLSAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3NvbWV1cmkiLz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJtZXNzYWdlIj4KLQkJPHdzZGw6cGFydCBuYW1lPSJtZXNzYWdlIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydE5vbkV4aXN0YW50RmlsZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0Tm9uRXhpc3RhbnRGaWxlLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NzY3NTAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0Tm9uRXhpc3RhbnRGaWxlLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnROb25FeGlzdGFudEZpbGUvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iSW1wb3J0Tm9uRXhpc3RhbnRGaWxlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnROb25FeGlzdGFudEZpbGUvIj4KLQk8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vbm9uZXhpc3RpbmdmaWxlIiBsb2NhdGlvbj0iVGhpc0ZpbGVEb2VzbnRFeGlzdC53c2RsIj48L3dzZGw6aW1wb3J0PgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFNjaGVtYVdpdGhXU0RMSW1wb3J0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYWVlYjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL0ltcG9ydFNjaGVtYVdpdGhXU0RMSW1wb3J0LyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IkltcG9ydFNjaGVtYVdpdGhXU0RMSW1wb3J0IiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnRTY2hlbWFXaXRoV1NETEltcG9ydC8iIHhtbG5zOnNjaGVtYT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSI+Ci0gIDx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iIGxvY2F0aW9uPSJzY2hlbWEueHNkIj48L3dzZGw6aW1wb3J0PiAgICAKLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdNZXNzYWdlIj4KLSAgICAJPHdzZGw6cGFydCBuYW1lPSJOZXdNZXNzYWdlIiBlbGVtZW50PSJzY2hlbWE6TmV3R2xvYmFsRWxlbWVudCI+PC93c2RsOnBhcnQ+Ci0gICAgPC93c2RsOm1lc3NhZ2U+ICAgCi08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRTY2hlbWFXaXRoV1NETEltcG9ydEludmFsaWROUy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnRJbnZhbGlkTlMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQxYTAyNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRTY2hlbWFXaXRoV1NETEltcG9ydEludmFsaWROUy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnRJbnZhbGlkTlMvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iSW1wb3J0U2NoZW1hV2l0aFdTRExJbXBvcnRJbnZhbGlkTlMiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL0ltcG9ydFNjaGVtYVdpdGhXU0RMSW1wb3J0SW52YWxpZE5TLyI+Ci0JPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL2ludmFsaWRuYW1lc3BhY2UiIGxvY2F0aW9uPSJzY2hlbWEueHNkIj48L3dzZGw6aW1wb3J0PgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0V1NETFdpdGhXU0RMLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRXU0RMV2l0aFdTREwud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc4ZTJmMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRXU0RMV2l0aFdTREwud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL0ltcG9ydFdTRExXaXRoV1NETC8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJJbXBvcnRXU0RMV2l0aFdTREwiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL0ltcG9ydFdTRExXaXRoV1NETC8iPgotCTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9zaW1wbGV3c2RsLyIgbG9jYXRpb249InNpbXBsZXdzZGwud3NkbCI+PC93c2RsOmltcG9ydD4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFdTRExXaXRoV1NETEludmFsaWRGaWxlbmFtZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0V1NETFdpdGhXU0RMSW52YWxpZEZpbGVuYW1lLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYmI5M2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0V1NETFdpdGhXU0RMSW52YWxpZEZpbGVuYW1lLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnRXU0RMV2l0aFdTRExJbnZhbGlkRmlsZW5hbWUvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iSW1wb3J0V1NETFdpdGhXU0RMSW52YWxpZEZpbGVuYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnRXU0RMV2l0aFdTRExJbnZhbGlkRmlsZW5hbWUvIj4KLQk8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vaW52YWxpZG5hbWVzcGFjZSIgbG9jYXRpb249IlNJTVBMRVdTREwud3NkbCI+PC93c2RsOmltcG9ydD4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFdTRExXaXRoV1NETEludmFsaWROUy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0V1NETFdpdGhXU0RMSW52YWxpZE5TLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmODJlYTUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0V1NETFdpdGhXU0RMSW52YWxpZE5TLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnRXU0RMV2l0aFdTRExJbnZhbGlkTlMvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iSW1wb3J0V1NETFdpdGhXU0RMSW52YWxpZE5TIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnRXU0RMV2l0aFdTRExJbnZhbGlkTlMvIj4KLQk8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vaW52YWxpZG5hbWVzcGFjZSIgbG9jYXRpb249InNpbXBsZXdzZGwud3NkbCI+PC93c2RsOmltcG9ydD4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC9CLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC9CLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ1MDA3ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRXaXRoSW5jb3JyZWN0U2xhc2gvQi54c2QKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vQiI+Ci0gIDx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL0FDIiBzY2hlbWFMb2NhdGlvbj0iLlxDLnhzZCIvPgotPC94c2Q6c2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC9DLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC9DLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZkZjY3NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRXaXRoSW5jb3JyZWN0U2xhc2gvQy54c2QKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vQUMiPgotICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJTYW1wbGVUeXBlIj4KLSAgICA8eHNkOnNlcXVlbmNlPgotICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iU2FtcGxlRWxlbWVudCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8L3hzZDpzZXF1ZW5jZT4KLSAgIDwveHNkOmNvbXBsZXhUeXBlPgotPC94c2Q6c2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC9JbXBvcnRXaXRoSW5jb3JyZWN0U2xhc2gud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFdpdGhJbmNvcnJlY3RTbGFzaC9JbXBvcnRXaXRoSW5jb3JyZWN0U2xhc2gud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE3YzEwNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRXaXRoSW5jb3JyZWN0U2xhc2gvSW1wb3J0V2l0aEluY29ycmVjdFNsYXNoLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9OZXdXU0RMRmlsZS8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJOZXdXU0RMRmlsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvTmV3V1NETEZpbGUvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL0FDIj4KLSAgCQk8eHNkOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249IkMueHNkIi8+Ci0gIAkJPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vQiIgc2NoZW1hTG9jYXRpb249IkIueHNkIi8+Ci0JCTwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0WE1MSW52YWxpZFdTREwvSW1wb3J0WE1MSW52YWxpZFdTREwud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFhNTEludmFsaWRXU0RML0ltcG9ydFhNTEludmFsaWRXU0RMLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYTc4ODkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0WE1MSW52YWxpZFdTREwvSW1wb3J0WE1MSW52YWxpZFdTREwud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL0ltcG9ydFhNTEludmFsaWRXU0RMLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IkltcG9ydFhNTEludmFsaWRXU0RMIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnRYTUxJbnZhbGlkV1NETC8iPgotCTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9YTUxJbnZhbGlkV1NETC8iIGxvY2F0aW9uPSJYTUxJbnZhbGlkV1NETC53c2RsIj48L3dzZGw6aW1wb3J0PgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0WE1MSW52YWxpZFdTREwvWE1MSW52YWxpZFdTREwud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydFhNTEludmFsaWRXU0RML1hNTEludmFsaWRXU0RMLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExOTJkODEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0WE1MSW52YWxpZFdTREwvWE1MSW52YWxpZFdTREwud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IS0tICBUaGUgZGVmaW5pdGlvbnMgZWxlbWVudCBpc24ndCBjbG9zZWQuIC0tPgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvWE1MSW52YWxpZFdTREwvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iWE1MSW52YWxpZFdTREwiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL1hNTEludmFsaWRXU0RMLyIKLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvWE1MSW52YWxpZFdTREwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlhNTEludmFsaWRXU0RMIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IlhNTEludmFsaWRXU0RMU09BUCIgdHlwZT0idG5zOlhNTEludmFsaWRXU0RMIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvWE1MSW52YWxpZFdTREwvTmV3T3BlcmF0aW9uIi8+Ci0gICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iWE1MSW52YWxpZFdTREwiPgotICAgIDx3c2RsOnBvcnQgYmluZGluZz0idG5zOlhNTEludmFsaWRXU0RMU09BUCIgbmFtZT0iWE1MSW52YWxpZFdTRExTT0FQIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRpbmdTY2hlbWFOb3RJbkRpci54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRpbmdTY2hlbWFOb3RJbkRpci54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZmZkY2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvSW1wb3J0aW5nU2NoZW1hTm90SW5EaXIueHNkCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSIgeG1sbnM6SW1wb3J0aW5nU2NoZW1hTm90SW5EaXI9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iIHhtbG5zOnBsYWluc2NoZW1hPSJodHRwOi8vcGxhaW5zY2hlbWEiPgotCTxpbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vcGxhaW5zY2hlbWEiIHNjaGVtYUxvY2F0aW9uPSJzdWJmb2xkZXIvUGxhaW5TY2hlbWEueHNkIj48L2ltcG9ydD4KLQk8ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJwbGFpbnNjaGVtYTpOZXdTaW1wbGVUeXBlIj48L2VsZW1lbnQ+Ci0KLTwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydGluZ1dTRExXaXRoSW1wb3J0ZWRTY2hlbWEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L0ltcG9ydGluZ1dTRExXaXRoSW1wb3J0ZWRTY2hlbWEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY5YzdjMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9JbXBvcnRpbmdXU0RMV2l0aEltcG9ydGVkU2NoZW1hLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnRpbmdXU0RMV2l0aEltcG9ydGVkU2NoZW1hLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IkltcG9ydGluZ1dTRExXaXRoSW1wb3J0ZWRTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL0ltcG9ydGluZ1dTRExXaXRoSW1wb3J0ZWRTY2hlbWEvIiB4bWxuczp3c2RsMT0iaHR0cDovL3RlbXB1cmkub3JnL0ltcG9ydGVkSW1wb3J0aW5nU2NoZW1hLyI+Ci0JPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL0ltcG9ydGVkSW1wb3J0aW5nU2NoZW1hLyIgbG9jYXRpb249InN1YmZvbGRlci9JbXBvcnRlZEltcG9ydGluZ1NjaGVtYS53c2RsIj48L3dzZGw6aW1wb3J0PgotCTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3TWVzc2FnZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0iTmV3TWVzc2FnZSIgZWxlbWVudD0id3NkbDE6TmV3R2xvYmFsRWxlbWVudCI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9Ob1NjaGVtZVNjaGVtYU5hbWVzcGFjZUltcG9ydC9Ob1NjaGVtZVNjaGVtYU5hbWVzcGFjZUltcG9ydC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvTm9TY2hlbWVTY2hlbWFOYW1lc3BhY2VJbXBvcnQvTm9TY2hlbWVTY2hlbWFOYW1lc3BhY2VJbXBvcnQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiMTY1ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9Ob1NjaGVtZVNjaGVtYU5hbWVzcGFjZUltcG9ydC9Ob1NjaGVtZVNjaGVtYU5hbWVzcGFjZUltcG9ydC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JeG1sbnM6dG5zPSJ3d3cuZXhhbXBsZS5vcmcvTm9TY2hlbWFTY2hlbWFOYW1lc3BhY2VJbXBvcnQvIgotCXhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JbmFtZT0iTm9TY2hlbWFTY2hlbWFOYW1lc3BhY2VJbXBvcnQiCi0JdGFyZ2V0TmFtZXNwYWNlPSJ3d3cuZXhhbXBsZS5vcmcvTm9TY2hlbWFTY2hlbWFOYW1lc3BhY2VJbXBvcnQvIgotCXhtbG5zOmVsbXM9ImNvbW1vbi5lbGVtZW50cyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTxzY2hlbWEKLQkJCXRhcmdldE5hbWVzcGFjZT0iY29tbW9uLmVsZW1lbnRzIgotCQkJeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJCTxjb21wbGV4VHlwZSBuYW1lPSJNeVR5cGUiPgotCQkJCTxzZXF1ZW5jZT4KLQkJCQkJPGVsZW1lbnQgbmFtZT0iTXlFbGVtZW50IiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJCTwvc2VxdWVuY2U+Ci0JCQk8L2NvbXBsZXhUeXBlPgotCQk8L3NjaGVtYT4KLQkJPHNjaGVtYQotCQkJdGFyZ2V0TmFtZXNwYWNlPSJ3d3cuZXhhbXBsZS5vcmcvTm9TY2hlbWFTY2hlbWFOYW1lc3BhY2VJbXBvcnQvIgotCQkJeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iY29tbW9uLmVsZW1lbnRzIi8+Ci0JCQk8ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0iZWxtczpNeVR5cGUiIC8+Ci0JCQk8ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQk8L3NjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIgotCQkJbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIKLQkJCW5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIC8+Ci0JPC93c2RsOm1lc3NhZ2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9TY2hlbWFOYW1lc3BhY2VBQUEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvU2NoZW1hTmFtZXNwYWNlQUFBLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc1MGQ0NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9TY2hlbWFOYW1lc3BhY2VBQUEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL0FBQSIgeG1sbnM6U2NoZW1hTmFtZXNwYWNlQUFBPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tIj4KLTwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L1NpbXBsZUltcG9ydC9pbXBvcnQtMS4wLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9TaW1wbGVJbXBvcnQvaW1wb3J0LTEuMC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjczYmFjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L1NpbXBsZUltcG9ydC9pbXBvcnQtMS4wLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucwotCXhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS93c2RsL2ltcG9ydC0xLjAud3NkbCIKLQl4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJpbXBvcnQtMS4wIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS93c2RsL2ltcG9ydC0xLjAud3NkbCIgLz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L1NpbXBsZUltcG9ydC90ZXN0LTEuMC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvU2ltcGxlSW1wb3J0L3Rlc3QtMS4wLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZTM5YjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvU2ltcGxlSW1wb3J0L3Rlc3QtMS4wLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vd3NkbC90ZXN0LTEuMC53c2RsIgotCXhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9InRlc3QtMS4wIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS93c2RsL3Rlc3QtMS4wLndzZGwiCi0JeG1sbnM6d3NkbDE9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vd3NkbC9pbXBvcnQtMS4wLndzZGwiPgotCTx3c2RsOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vd3NkbC9pbXBvcnQtMS4wLndzZGwiCi0JCWxvY2F0aW9uPSJpbXBvcnQtMS4wLndzZGwiIC8+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9XU0RMSW1wb3J0aW5nU2NoZW1hSW1wb3J0aW5nU2NoZW1hLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9XU0RMSW1wb3J0aW5nU2NoZW1hSW1wb3J0aW5nU2NoZW1hLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3YmU3OGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvV1NETEltcG9ydGluZ1NjaGVtYUltcG9ydGluZ1NjaGVtYS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvV1NETEltcG9ydGluZ1NjaGVtYUltcG9ydGluZ1NjaGVtYS8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJXU0RMSW1wb3J0aW5nU2NoZW1hSW1wb3J0aW5nU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9XU0RMSW1wb3J0aW5nU2NoZW1hSW1wb3J0aW5nU2NoZW1hLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotICAgICAgICAgICAgPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiBzY2hlbWFMb2NhdGlvbj0iSW1wb3J0aW5nU2NoZW1hTm90SW5EaXIueHNkIi8+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9XU0RMSW1wb3J0aW5nVHlwZXMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L1dTRExJbXBvcnRpbmdUeXBlcy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDQzN2ZkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L1dTRExJbXBvcnRpbmdUeXBlcy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvV1NETEltcG9ydGluZ1R5cGVzLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IldTRExJbXBvcnRpbmdUeXBlcyIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvV1NETEltcG9ydGluZ1R5cGVzLyIgeG1sbnM6d3NkbDE9Imh0dHA6Ly90ZW1wdXJpLm9yZy9XU0RMT25seVR5cGVzLyI+Ci0gICAgPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL1dTRExPbmx5VHlwZXMvIiBsb2NhdGlvbj0iV1NETE9ubHlUeXBlcy53c2RsIj48L3dzZGw6aW1wb3J0PiAgICAKLSAgICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld01lc3NhZ2UiPgotICAgIAk8d3NkbDpwYXJ0IG5hbWU9Ik5ld01lc3NhZ2UiIGVsZW1lbnQ9IndzZGwxOk5ld0dsb2JhbEVsZW1lbnQiPjwvd3NkbDpwYXJ0PgotICAgIDwvd3NkbDptZXNzYWdlPgotICAgIAotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvV1NETE5hbWVzcGFjZUFBQS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvV1NETE5hbWVzcGFjZUFBQS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmMxOGRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L1dTRExOYW1lc3BhY2VBQUEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL0FBQSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IldTRExOYW1lc3BhY2VBQUEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL0FBQSI+Ci0JPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL0FBQSIgbG9jYXRpb249IlNjaGVtYU5hbWVzcGFjZUFBQS54c2QiPjwvd3NkbDppbXBvcnQ+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9XU0RMT25seVR5cGVzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9XU0RMT25seVR5cGVzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZjRmNjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvV1NETE9ubHlUeXBlcy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvV1NETE9ubHlUeXBlcy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJXU0RMT25seVR5cGVzIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9XU0RMT25seVR5cGVzLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQllbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL1dTRExPbmx5VHlwZXMvIj4KLQkJPHhzZDplbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+PC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L3NjaGVtYS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9zY2hlbWEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2VlNTBhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L3NjaGVtYS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiB4bWxuczpzY2hlbWE9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iPgotCTxlbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InN0cmluZyI+PC9lbGVtZW50PgotCi08L3NjaGVtYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9zaW1wbGV3c2RsLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9zaW1wbGV3c2RsLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZjM3YWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvc2ltcGxld3NkbC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvc2ltcGxld3NkbC8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJzaW1wbGV3c2RsIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9zaW1wbGV3c2RsLyIvPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvc3ViZm9sZGVyL0ltcG9ydGVkSW1wb3J0aW5nU2NoZW1hLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9zdWJmb2xkZXIvSW1wb3J0ZWRJbXBvcnRpbmdTY2hlbWEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMyZmQyYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9zdWJmb2xkZXIvSW1wb3J0ZWRJbXBvcnRpbmdTY2hlbWEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9JbXBvcnRlZEltcG9ydGluZ1NjaGVtYS8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJJbXBvcnRlZEltcG9ydGluZ1NjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvSW1wb3J0ZWRJbXBvcnRpbmdTY2hlbWEvIj4KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCWVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvSW1wb3J0ZWRJbXBvcnRpbmdTY2hlbWEvIgotICAgICAgICAgICAgeG1sbnM6SW1wb3J0ZWRXU0RMSW1wb3J0ZWRTY2hlbWE9Imh0dHA6Ly9JbXBvcnRlZFdTRExJbXBvcnRlZFNjaGVtYSI+Ci0JCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL0ltcG9ydGVkV1NETEltcG9ydGVkU2NoZW1hIiBzY2hlbWFMb2NhdGlvbj0iSW1wb3J0ZWRXU0RMSW1wb3J0ZWRTY2hlbWEueHNkIj48L3hzZDppbXBvcnQ+Ci0JCTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJJbXBvcnRlZFdTRExJbXBvcnRlZFNjaGVtYTpOZXdTaW1wbGVUeXBlIj48L3hzZDplbGVtZW50PjwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9zdWJmb2xkZXIvSW1wb3J0ZWRXU0RMSW1wb3J0ZWRTY2hlbWEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvc3ViZm9sZGVyL0ltcG9ydGVkV1NETEltcG9ydGVkU2NoZW1hLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUwMmMwMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ltcG9ydC9zdWJmb2xkZXIvSW1wb3J0ZWRXU0RMSW1wb3J0ZWRTY2hlbWEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL0ltcG9ydGVkV1NETEltcG9ydGVkU2NoZW1hIiB4bWxuczpJbXBvcnRlZFdTRExJbXBvcnRlZFNjaGVtYT0iaHR0cDovL0ltcG9ydGVkV1NETEltcG9ydGVkU2NoZW1hIj4KLSAgPHNpbXBsZVR5cGUgbmFtZT0iTmV3U2ltcGxlVHlwZSI+Ci0gICAgPHJlc3RyaWN0aW9uIGJhc2U9InN0cmluZyI+Ci0gICAgICA8bWluTGVuZ3RoIHZhbHVlPSIxIi8+Ci0gICAgPC9yZXN0cmljdGlvbj4KLSAgPC9zaW1wbGVUeXBlPgotPC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvc3ViZm9sZGVyL1BsYWluU2NoZW1hLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW1wb3J0L3N1YmZvbGRlci9QbGFpblNjaGVtYS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlZGU3NTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9JbXBvcnQvc3ViZm9sZGVyL1BsYWluU2NoZW1hLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9wbGFpbnNjaGVtYSIgeG1sbnM6UGxhaW5TY2hlbWE9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iPgotCTxzaW1wbGVUeXBlIG5hbWU9Ik5ld1NpbXBsZVR5cGUiPgotICAgIDxyZXN0cmljdGlvbiBiYXNlPSJzdHJpbmciPgotICAgICAgPG1pbkxlbmd0aCB2YWx1ZT0iMSIvPgotICAgIDwvcmVzdHJpY3Rpb24+Ci0gIDwvc2ltcGxlVHlwZT4KLTwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcy9JbnZhbGlkU2NoZW1hV2l0aFBhcnRSZWZlcmVuY2VzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML0ludmFsaWRTY2hlbWFXaXRoUGFydFJlZmVyZW5jZXMvSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWRjMTU0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvSW52YWxpZFNjaGVtYVdpdGhQYXJ0UmVmZXJlbmNlcy9JbnZhbGlkU2NoZW1hV2l0aFBhcnRSZWZlcmVuY2VzLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iRm9vIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Gb28vIgotCXhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0JeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0Zvby8iCi0JeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Gb28vIgotCQkJeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iYSIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJiIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Imp1bmsiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgbmFtZT0ieSIgdHlwZT0ieHNkOnN0cmluIi8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLQk8d3NkbDptZXNzYWdlIG5hbWU9ImZvbyI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOmEiIG5hbWU9ImZvbyIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDptZXNzYWdlIG5hbWU9ImJhciI+Ci0JCTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOmIiIG5hbWU9ImJhciIgLz4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJGb28iPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iZ2V0Rm9vIj4KLQkJCTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpiYXIiIC8+Ci0JCQk8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOmZvbyIgLz4KLQkJPC93c2RsOm9wZXJhdGlvbj4KLQk8L3dzZGw6cG9ydFR5cGU+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML01lc3NhZ2VFbGVtZW50L0ludmFsaWRFbGVtZW50L01lc3NhZ2VJbnZhbGlkRWxlbWVudC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9NZXNzYWdlRWxlbWVudC9JbnZhbGlkRWxlbWVudC9NZXNzYWdlSW52YWxpZEVsZW1lbnQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBiZTIzZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML01lc3NhZ2VFbGVtZW50L0ludmFsaWRFbGVtZW50L01lc3NhZ2VJbnZhbGlkRWxlbWVudC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9Ik1lc3NhZ2VJbnZhbGlkRWxlbWVudCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL01lc3NhZ2VJbnZhbGlkRWxlbWVudC8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NZXNzYWdlSW52YWxpZEVsZW1lbnQvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NZXNzYWdlSW52YWxpZEVsZW1lbnQvIj4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOkludmFsaWRFbGVtZW50Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9Ik1lc3NhZ2VJbnZhbGlkRWxlbWVudCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJNZXNzYWdlSW52YWxpZEVsZW1lbnRTT0FQIiB0eXBlPSJ0bnM6TWVzc2FnZUludmFsaWRFbGVtZW50Ij4NCi0gICAgICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgICAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4NCi0gICAgICAgICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9NZXNzYWdlSW52YWxpZEVsZW1lbnQvTmV3T3BlcmF0aW9uIi8+Ci0gICAgICAgICAgICA8d3NkbDppbnB1dD4NCi0gICAgICAgICAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4NCi0gICAgICAgICAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iTWVzc2FnZUludmFsaWRFbGVtZW50Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9Ik1lc3NhZ2VJbnZhbGlkRWxlbWVudFNPQVAiIGJpbmRpbmc9InRuczpNZXNzYWdlSW52YWxpZEVsZW1lbnRTT0FQIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9NZXNzYWdlRWxlbWVudC9JbnZhbGlkVHlwZS9NZXNzYWdlSW52YWxpZFR5cGUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvTWVzc2FnZUVsZW1lbnQvSW52YWxpZFR5cGUvTWVzc2FnZUludmFsaWRUeXBlLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNGVkZWQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9NZXNzYWdlRWxlbWVudC9JbnZhbGlkVHlwZS9NZXNzYWdlSW52YWxpZFR5cGUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJOZXdXU0RMRmlsZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL05ld1dTRExGaWxlLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL05ld1dTRExGaWxlLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTmV3V1NETEZpbGUvIj4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9Ik5ld1dTRExGaWxlIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9Ik5ld1dTRExGaWxlU09BUCIgdHlwZT0idG5zOk5ld1dTRExGaWxlIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL05ld1dTRExGaWxlL05ld09wZXJhdGlvbiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9Ik5ld1dTRExGaWxlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9Ik5ld1dTRExGaWxlU09BUCIgYmluZGluZz0idG5zOk5ld1dTRExGaWxlU09BUCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLyIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvTmFtZXNwYWNlRG9lc250UmVzb2x2ZS9OYW1lc3BhY2VEb2VzbnRSZXNvbHZlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML05hbWVzcGFjZURvZXNudFJlc29sdmUvTmFtZXNwYWNlRG9lc250UmVzb2x2ZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWU3NGM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvTmFtZXNwYWNlRG9lc250UmVzb2x2ZS9OYW1lc3BhY2VEb2VzbnRSZXNvbHZlLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL05hbWVzcGFjZURvZXNudFJlc29sdmUvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iTmFtZXNwYWNlRG9lc250UmVzb2x2ZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL05hbWVzcGFjZURvZXNudFJlc29sdmUvIj4KLTx3c2RsOmRvY3VtZW50YXRpb24+Ci0JVGhpcyBXU0RMIGRvY3VtZW50IHRlc3RzIHRoYXQgYW4gZWxlbWVudCBzcGVjaWZpZWQgZm9yIGEgZGlmZmVyZW50IG5hbWVzcGFjZQotCXRoYXQgZG9lcyBub3QgcmVzb2x2ZSB0byBhbnkgcmVzb3VyY2UgdmFsaWRhdGVzIGNvcnJlY3RseS4KLTwvd3NkbDpkb2N1bWVudGF0aW9uPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTmFtZXNwYWNlRG9lc250UmVzb2x2ZS8iPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0iTmFtZXNwYWNlRG9lc250UmVzb2x2ZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPHdzZGw6YmluZGluZyBuYW1lPSJOYW1lc3BhY2VEb2VzbnRSZXNvbHZlU09BUCIgdHlwZT0idG5zOk5hbWVzcGFjZURvZXNudFJlc29sdmUiPgotPGV4dDplbGVtZW50IHhtbG5zOmV4dD0iaHR0cDovL3NjaGVtYXMubm9uZXhpc3RhbnRkb21haW4ubmVkL2VsZW1lbnQiLz4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9OYW1lc3BhY2VEb2VzbnRSZXNvbHZlL05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIgdXNlPSJsaXRlcmFsIi8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHVzZT0ibGl0ZXJhbCIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0iTmFtZXNwYWNlRG9lc250UmVzb2x2ZSI+Ci08d3NkbDpwb3J0IGJpbmRpbmc9InRuczpOYW1lc3BhY2VEb2VzbnRSZXNvbHZlU09BUCIgbmFtZT0iTmFtZXNwYWNlRG9lc250UmVzb2x2ZVNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML05hbWVzcGFjZVJlc29sdmVzSFRNTC9OYW1lc3BhY2VSZXNvbHZlc0hUTUwud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvTmFtZXNwYWNlUmVzb2x2ZXNIVE1ML05hbWVzcGFjZVJlc29sdmVzSFRNTC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDJmM2ExLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvTmFtZXNwYWNlUmVzb2x2ZXNIVE1ML05hbWVzcGFjZVJlc29sdmVzSFRNTC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9OYW1lc3BhY2VSZXNvbHZlc0hUTUwvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iTmFtZXNwYWNlUmVzb2x2ZXNIVE1MIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTmFtZXNwYWNlUmVzb2x2ZXNIVE1MLyI+Ci08d3NkbDpkb2N1bWVudGF0aW9uPgotCVRoaXMgV1NETCB0ZXN0cyB0aGF0IGFuIGV4dGVuc2lvbiBlbGVtZW50IGluIGEgZGlmZmVyZW50IG5hbWVzcGFjZSB0aGF0Ci0JcmVzb2x2ZXMgdG8gYW4gSFRNTCBkb2N1bWVudCAobm9uLXNjaGVtYSBkb2N1bWVudCkgZG9lcyBub3QgY2F1c2UKLQl2YWxpZGF0aW9uIGVycm9ycy4KLTwvd3NkbDpkb2N1bWVudGF0aW9uPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTmFtZXNwYWNlUmVzb2x2ZXNIVE1MLyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJOYW1lc3BhY2VSZXNvbHZlc0hUTUwiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0iTmFtZXNwYWNlUmVzb2x2ZXNIVE1MU09BUCIgdHlwZT0idG5zOk5hbWVzcGFjZVJlc29sdmVzSFRNTCI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTxleHQ6ZWxlbWVudCB4bWxuczpleHQ9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvTmFtZXNwYWNlUmVzb2x2ZXNIVE1ML05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIgdXNlPSJsaXRlcmFsIi8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHVzZT0ibGl0ZXJhbCIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0iTmFtZXNwYWNlUmVzb2x2ZXNIVE1MIj4KLTx3c2RsOnBvcnQgYmluZGluZz0idG5zOk5hbWVzcGFjZVJlc29sdmVzSFRNTFNPQVAiIG5hbWU9Ik5hbWVzcGFjZVJlc29sdmVzSFRNTFNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1BvcnRUeXBlRWxlbWVudC9JbnZhbGlkSW5wdXQvUG9ydFR5cGVJbnZhbGlkSW5wdXQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvUG9ydFR5cGVFbGVtZW50L0ludmFsaWRJbnB1dC9Qb3J0VHlwZUludmFsaWRJbnB1dC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjAyYjI2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvUG9ydFR5cGVFbGVtZW50L0ludmFsaWRJbnB1dC9Qb3J0VHlwZUludmFsaWRJbnB1dC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IlBvcnRUeXBlSW52YWxpZElucHV0IiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvUG9ydFR5cGVJbnZhbGlkSW5wdXQvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvUG9ydFR5cGVJbnZhbGlkSW5wdXQvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Qb3J0VHlwZUludmFsaWRJbnB1dC8iPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iUG9ydFR5cGVJbnZhbGlkSW5wdXQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOkludmFsaWRJbnB1dCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJQb3J0VHlwZUludmFsaWRJbnB1dFNPQVAiIHR5cGU9InRuczpQb3J0VHlwZUludmFsaWRJbnB1dCI+DQotICAgICAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICAgICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+DQotICAgICAgICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvUG9ydFR5cGVJbnZhbGlkSW5wdXQvTmV3T3BlcmF0aW9uIi8+Ci0gICAgICAgICAgICA8d3NkbDppbnB1dD4NCi0gICAgICAgICAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4NCi0gICAgICAgICAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iUG9ydFR5cGVJbnZhbGlkSW5wdXQiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iUG9ydFR5cGVJbnZhbGlkSW5wdXRTT0FQIiBiaW5kaW5nPSJ0bnM6UG9ydFR5cGVJbnZhbGlkSW5wdXRTT0FQIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9Qb3J0VHlwZUVsZW1lbnQvSW52YWxpZE91dHB1dC9Qb3J0VHlwZUludmFsaWRPdXRwdXQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvUG9ydFR5cGVFbGVtZW50L0ludmFsaWRPdXRwdXQvUG9ydFR5cGVJbnZhbGlkT3V0cHV0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZDFiNmMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9Qb3J0VHlwZUVsZW1lbnQvSW52YWxpZE91dHB1dC9Qb3J0VHlwZUludmFsaWRPdXRwdXQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJQb3J0VHlwZUludmFsaWRPdXRwdXQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Qb3J0VHlwZUludmFsaWRPdXRwdXQvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvUG9ydFR5cGVJbnZhbGlkT3V0cHV0LyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvUG9ydFR5cGVJbnZhbGlkT3V0cHV0LyI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPC94c2Q6c2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJQb3J0VHlwZUludmFsaWRPdXRwdXQiPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6SW52YWxpZE91dHB1dCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJQb3J0VHlwZUludmFsaWRPdXRwdXRTT0FQIiB0eXBlPSJ0bnM6UG9ydFR5cGVJbnZhbGlkT3V0cHV0Ij4NCi0gICAgICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgICAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4NCi0gICAgICAgICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Qb3J0VHlwZUludmFsaWRPdXRwdXQvTmV3T3BlcmF0aW9uIi8+Ci0gICAgICAgICAgICA8d3NkbDppbnB1dD4NCi0gICAgICAgICAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4NCi0gICAgICAgICAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iUG9ydFR5cGVJbnZhbGlkT3V0cHV0Ij4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IlBvcnRUeXBlSW52YWxpZE91dHB1dFNPQVAiIGJpbmRpbmc9InRuczpQb3J0VHlwZUludmFsaWRPdXRwdXRTT0FQIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9TZWxmQ29udGFpbmVkL0VtcHR5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZDb250YWluZWQvRW1wdHkud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZDb250YWluZWQvRW1wdHkud3NkbAorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZDb250YWluZWQvTm9EZWZhdWx0TmFtZXNwYWNlL05vRGVmYXVsdE5hbWVzcGFjZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9TZWxmQ29udGFpbmVkL05vRGVmYXVsdE5hbWVzcGFjZS9Ob0RlZmF1bHROYW1lc3BhY2Uud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTczM2U4Ny4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZDb250YWluZWQvTm9EZWZhdWx0TmFtZXNwYWNlL05vRGVmYXVsdE5hbWVzcGFjZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvTm9EZWZhdWx0TmFtZXNwYWNlLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9Ik5vRGVmYXVsdE5hbWVzcGFjZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvTm9EZWZhdWx0TmFtZXNwYWNlLyI+Ci0gIDx3c2RsOmRvY3VtZW50YXRpb24+Ci0gICAgPGVsZW1lbnROb05hbWVzcGFjZS8+Ci0gIDwvd3NkbDpkb2N1bWVudGF0aW9uPiAgICAKLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZDb250YWluZWQvUmVmZXJlbmNlSW5saW5lVHlwZXMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvU2VsZkNvbnRhaW5lZC9SZWZlcmVuY2VJbmxpbmVUeXBlcy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmMxMzMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvU2VsZkNvbnRhaW5lZC9SZWZlcmVuY2VJbmxpbmVUeXBlcy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyZW5jZUlubGluZVR5cGVzLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IlJlZmVyZW5jZUlubGluZVR5cGVzIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZWZlcmVuY2VJbmxpbmVUeXBlcy8iPgotICAgIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3TWVzc2FnZSI+Ci0gICAgCTx3c2RsOnBhcnQgbmFtZT0iTmV3TWVzc2FnZSIgZWxlbWVudD0idG5zOk5ld0dsb2JhbEVsZW1lbnQiPjwvd3NkbDpwYXJ0PgotICAgIDwvd3NkbDptZXNzYWdlPgotICAgIDx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZWZlcmVuY2VJbmxpbmVUeXBlcy8iPgotCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD48L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9TZWxmQ29udGFpbmVkL1NPQVBCb2R5RW5jb2RlZE5vTmFtZXNwYWNlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZDb250YWluZWQvU09BUEJvZHlFbmNvZGVkTm9OYW1lc3BhY2Uud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRlYmNkOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZDb250YWluZWQvU09BUEJvZHlFbmNvZGVkTm9OYW1lc3BhY2Uud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9TT0FQQm9keUVuY29kZWROb05hbWVzcGFjZS8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJTT0FQQm9keUVuY29kZWROb05hbWVzcGFjZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvU09BUEJvZHlFbmNvZGVkTm9OYW1lc3BhY2UvIj4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlNPQVBCb2R5RW5jb2RlZE5vTmFtZXNwYWNlIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IlNPQVBCb2R5RW5jb2RlZE5vTmFtZXNwYWNlU09BUCIgdHlwZT0idG5zOlNPQVBCb2R5RW5jb2RlZE5vTmFtZXNwYWNlIj4KLSAgICA8c29hcDpiaW5kaW5nIHN0eWxlPSJycGMiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL1NPQVBCb2R5RW5jb2RlZE5vTmFtZXNwYWNlL05ld09wZXJhdGlvbiIvPgotICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgZW5jb2RpbmdTdHlsZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIHVzZT0iZW5jb2RlZCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IGVuY29kaW5nU3R5bGU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiB1c2U9ImVuY29kZWQiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU09BUEJvZHlFbmNvZGVkTm9OYW1lc3BhY2UiPgotICAgIDx3c2RsOnBvcnQgYmluZGluZz0idG5zOlNPQVBCb2R5RW5jb2RlZE5vTmFtZXNwYWNlU09BUCIgbmFtZT0iU09BUEJvZHlFbmNvZGVkTm9OYW1lc3BhY2VTT0FQIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZDb250YWluZWQvU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9TZWxmQ29udGFpbmVkL1NPQVBCb2R5RW5jb2RlZFdpdGhOYW1lc3BhY2Uud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE0MTNmYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZDb250YWluZWQvU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL1NPQVBCb2R5RW5jb2RlZFdpdGhOYW1lc3BhY2UvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZS8iPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZSI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJTT0FQQm9keUVuY29kZWRXaXRoTmFtZXNwYWNlU09BUCIgdHlwZT0idG5zOlNPQVBCb2R5RW5jb2RlZFdpdGhOYW1lc3BhY2UiPgotICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9InJwYyIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZS9OZXdPcGVyYXRpb24iLz4KLSAgICAgIDx3c2RsOmlucHV0PgotICAgICAgICA8c29hcDpib2R5IGVuY29kaW5nU3R5bGU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9TT0FQQm9keUVuY29kZWRXaXRoTmFtZXNwYWNlLyIgdXNlPSJlbmNvZGVkIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgZW5jb2RpbmdTdHlsZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL1NPQVBCb2R5RW5jb2RlZFdpdGhOYW1lc3BhY2UvIiB1c2U9ImVuY29kZWQiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iU09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZSI+Ci0gICAgPHdzZGw6cG9ydCBiaW5kaW5nPSJ0bnM6U09BUEJvZHlFbmNvZGVkV2l0aE5hbWVzcGFjZVNPQVAiIG5hbWU9IlNPQVBCb2R5RW5jb2RlZFdpdGhOYW1lc3BhY2VTT0FQIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZJbXBvcnQvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0L0ltcG9ydEZpbGVXaXRoU2VsZkltcG9ydC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9TZWxmSW1wb3J0L0ltcG9ydEZpbGVXaXRoU2VsZkltcG9ydC9JbXBvcnRGaWxlV2l0aFNlbGZJbXBvcnQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk5NzlmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZJbXBvcnQvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0L0ltcG9ydEZpbGVXaXRoU2VsZkltcG9ydC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhLS0KLQlJbXBvcnRzIGEgZmlsZSB0aGF0IGNvbnRhaW5zIGEgc2VsZiBpbXBvcnQuCi0tLT4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbXBvcnRGaWxlV2l0aFNlbGZJbXBvcnQvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0IiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0LyI+Ci08d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1NlbGZJbXBvcnQvIiBsb2NhdGlvbj0iU2VsZkltcG9ydC53c2RsIj48L3dzZGw6aW1wb3J0PgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0LyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJJbXBvcnRGaWxlV2l0aFNlbGZJbXBvcnQiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0iSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0U09BUCIgdHlwZT0idG5zOkltcG9ydEZpbGVXaXRoU2VsZkltcG9ydCI+Ci08c29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0L05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIgdXNlPSJsaXRlcmFsIi8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHVzZT0ibGl0ZXJhbCIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0iSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0Ij4KLTx3c2RsOnBvcnQgYmluZGluZz0idG5zOkltcG9ydEZpbGVXaXRoU2VsZkltcG9ydFNPQVAiIG5hbWU9IkltcG9ydEZpbGVXaXRoU2VsZkltcG9ydFNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZJbXBvcnQvSW1wb3J0RmlsZVdpdGhTZWxmSW1wb3J0L1NlbGZJbXBvcnQud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvU2VsZkltcG9ydC9JbXBvcnRGaWxlV2l0aFNlbGZJbXBvcnQvU2VsZkltcG9ydC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODkxZDM1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1dTREwvU2VsZkltcG9ydC9JbXBvcnRGaWxlV2l0aFNlbGZJbXBvcnQvU2VsZkltcG9ydC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhLS0KLQlBIFdTREwgZG9jdW1lbnQgd2l0aCBhIHNlbGYgaW1wb3J0LgotLS0+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvU2VsZkltcG9ydC8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJTZWxmSW1wb3J0IiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvU2VsZkltcG9ydC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZWxmSW1wb3J0LyIgbG9jYXRpb249IlNlbGZJbXBvcnQud3NkbCI+PC93c2RsOmltcG9ydD4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1NlbGZJbXBvcnQvIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9IlNlbGZJbXBvcnQiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0iU2VsZkltcG9ydFNPQVAiIHR5cGU9InRuczpTZWxmSW1wb3J0Ij4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZWxmSW1wb3J0L05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIgdXNlPSJsaXRlcmFsIi8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHVzZT0ibGl0ZXJhbCIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0iU2VsZkltcG9ydCI+Ci08d3NkbDpwb3J0IGJpbmRpbmc9InRuczpTZWxmSW1wb3J0U09BUCIgbmFtZT0iU2VsZkltcG9ydFNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZJbXBvcnQvU2ltcGxlRmlsZS9TZWxmSW1wb3J0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZJbXBvcnQvU2ltcGxlRmlsZS9TZWxmSW1wb3J0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4OTFkMzUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9TZWxmSW1wb3J0L1NpbXBsZUZpbGUvU2VsZkltcG9ydC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhLS0KLQlBIFdTREwgZG9jdW1lbnQgd2l0aCBhIHNlbGYgaW1wb3J0LgotLS0+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvU2VsZkltcG9ydC8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJTZWxmSW1wb3J0IiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvU2VsZkltcG9ydC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZWxmSW1wb3J0LyIgbG9jYXRpb249IlNlbGZJbXBvcnQud3NkbCI+PC93c2RsOmltcG9ydD4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1NlbGZJbXBvcnQvIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVzcG9uc2UiIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9IlNlbGZJbXBvcnQiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0iU2VsZkltcG9ydFNPQVAiIHR5cGU9InRuczpTZWxmSW1wb3J0Ij4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZWxmSW1wb3J0L05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIgdXNlPSJsaXRlcmFsIi8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHVzZT0ibGl0ZXJhbCIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0iU2VsZkltcG9ydCI+Ci08d3NkbDpwb3J0IGJpbmRpbmc9InRuczpTZWxmSW1wb3J0U09BUCIgbmFtZT0iU2VsZkltcG9ydFNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZJbXBvcnQvU2ltcGxlRmlsZUludmFsaWQvU2VsZkltcG9ydC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9TZWxmSW1wb3J0L1NpbXBsZUZpbGVJbnZhbGlkL1NlbGZJbXBvcnQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVjOGM0Mi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlbGZJbXBvcnQvU2ltcGxlRmlsZUludmFsaWQvU2VsZkltcG9ydC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhLS0KLQlBbiBpbnZhbGlkIFdTREwgZG9jdW1lbnQgd2l0aCBhIHNlbGYgaW1wb3J0LgotLS0+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvU2VsZkltcG9ydC8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJTZWxmSW1wb3J0IiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvU2VsZkltcG9ydC8iPgotPHdzZGw6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZWxmSW1wb3J0LyIgbG9jYXRpb249IlNlbGZJbXBvcnQud3NkbCI+PC93c2RsOmltcG9ydD4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1NlbGZJbXBvcnQvIj4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLTwveHNkOnNjaGVtYT4KLTwvd3NkbDp0eXBlcz4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6SW52YWxpZEVsZW1lbnQiIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCI+Ci08d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0IiBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08L3dzZGw6bWVzc2FnZT4KLTx3c2RsOnBvcnRUeXBlIG5hbWU9IlNlbGZJbXBvcnQiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTx3c2RsOmJpbmRpbmcgbmFtZT0iU2VsZkltcG9ydFNPQVAiIHR5cGU9InRuczpTZWxmSW1wb3J0Ij4KLTxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZWxmSW1wb3J0L05ld09wZXJhdGlvbiIvPgotPHdzZGw6aW5wdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVxdWVzdCIgdXNlPSJsaXRlcmFsIi8+Ci08L3dzZGw6aW5wdXQ+Ci08d3NkbDpvdXRwdXQ+Ci08c29hcDpib2R5IHBhcnRzPSIgTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHVzZT0ibGl0ZXJhbCIvPgotPC93c2RsOm91dHB1dD4KLTwvd3NkbDpvcGVyYXRpb24+Ci08L3dzZGw6YmluZGluZz4KLTx3c2RsOnNlcnZpY2UgbmFtZT0iU2VsZkltcG9ydCI+Ci08d3NkbDpwb3J0IGJpbmRpbmc9InRuczpTZWxmSW1wb3J0U09BUCIgbmFtZT0iU2VsZkltcG9ydFNPQVAiPgotPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLTwvd3NkbDpwb3J0PgotPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlcnZpY2VFbGVtZW50L0ludmFsaWRCaW5kaW5nL1NlcnZpY2VJbnZhbGlkQmluZGluZy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9TZXJ2aWNlRWxlbWVudC9JbnZhbGlkQmluZGluZy9TZXJ2aWNlSW52YWxpZEJpbmRpbmcud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkzNzZhNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlcnZpY2VFbGVtZW50L0ludmFsaWRCaW5kaW5nL1NlcnZpY2VJbnZhbGlkQmluZGluZy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IlNlcnZpY2VJbnZhbGlkQmluZGluZyIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1NlcnZpY2VJbnZhbGlkQmluZGluZy8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZXJ2aWNlSW52YWxpZEJpbmRpbmcvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZXJ2aWNlSW52YWxpZEJpbmRpbmcvIj4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IlNlcnZpY2VJbnZhbGlkQmluZGluZyI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci0gICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJTZXJ2aWNlSW52YWxpZEJpbmRpbmdTT0FQIiB0eXBlPSJ0bnM6U2VydmljZUludmFsaWRCaW5kaW5nIj4KLSAgICAgICAgPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJOZXdPcGVyYXRpb24iPgotICAgICAgICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvU2VydmljZUludmFsaWRCaW5kaW5nL05ld09wZXJhdGlvbiIvPgotICAgICAgICAgICAgPHdzZGw6aW5wdXQ+Ci0gICAgICAgICAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dD4KLSAgICAgICAgICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJTZXJ2aWNlSW52YWxpZEJpbmRpbmciPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iU2VydmljZUludmFsaWRCaW5kaW5nU09BUCIgYmluZGluZz0idG5zOkluY29ycmVjdEJpbmRpbmdSZWYiPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8iLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlcnZpY2VFbGVtZW50L05vQWRkcmVzcy9TZXJ2aWNlTm9BZGRyZXNzLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9XU0RML1NlcnZpY2VFbGVtZW50L05vQWRkcmVzcy9TZXJ2aWNlTm9BZGRyZXNzLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YTA3ZmYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvV1NETC9TZXJ2aWNlRWxlbWVudC9Ob0FkZHJlc3MvU2VydmljZU5vQWRkcmVzcy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIG5hbWU9IlNlcnZpY2VOb0FkZHJlc3MiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZXJ2aWNlTm9BZGRyZXNzLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1NlcnZpY2VOb0FkZHJlc3MvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9TZXJ2aWNlTm9BZGRyZXNzLyI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPC94c2Q6c2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiIGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJTZXJ2aWNlTm9BZGRyZXNzIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IlNlcnZpY2VOb0FkZHJlc3NTT0FQIiB0eXBlPSJ0bnM6U2VydmljZU5vQWRkcmVzcyI+Ci0gICAgICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgICAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLSAgICAgICAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL1NlcnZpY2VOb0FkZHJlc3MvTmV3T3BlcmF0aW9uIi8+Ci0gICAgICAgICAgICA8d3NkbDppbnB1dD4KLSAgICAgICAgICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0PgotICAgICAgICAgICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICAgICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IlNlcnZpY2VOb0FkZHJlc3MiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iU2VydmljZU5vQWRkcmVzc1NPQVAiIGJpbmRpbmc9InRuczpTZXJ2aWNlTm9BZGRyZXNzU09BUCI+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0NhdGFsb2dTY2hlbWFzL3NjaGVtYTEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0NhdGFsb2dTY2hlbWFzL3NjaGVtYTEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjcxOTVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9DYXRhbG9nU2NoZW1hcy9zY2hlbWExLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2NoZW1hMSIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NjaGVtYTEiPgotPC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0NhdGFsb2dTY2hlbWFzL3NjaGVtYTIueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0NhdGFsb2dTY2hlbWFzL3NjaGVtYTIueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTRkZmQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9DYXRhbG9nU2NoZW1hcy9zY2hlbWEyLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxzY2hlbWEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2NoZW1hMiIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3NjaGVtYTIiPgotPC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0VudGl0aWVzL25vcm1hbGl6ZUVudGl0aWVzSW52YWxpZC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0VudGl0aWVzL25vcm1hbGl6ZUVudGl0aWVzSW52YWxpZC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjcyMjlhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9FbnRpdGllcy9ub3JtYWxpemVFbnRpdGllc0ludmFsaWQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IS0tIEludmFsaWQgdGVzdCBmb3IgRWNsaXBzZSBkZWZlY3QgNzA2NzAuIC0tPgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvbm9ybWFsaXplRW50aXRpZXNJbnZhbGlkLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9Im5vcm1hbGl6ZUVudGl0aWVzSW52YWxpZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvbm9ybWFsaXplRW50aXRpZXNJbnZhbGlkLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQllbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL25vcm1hbGl6ZUVudGl0aWVzSW52YWxpZC8iPgotICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJhU3RyaW5nIj4gCi0gICAgICAgICAgICAgICAgPHhzZDpzaW1wbGVUeXBlPiAKLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNkOnBhdHRlcm4gdmFsdWU9IkZ8PHw+fH58SHxKfHgiLz4gCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3hzZDpyZXN0cmljdGlvbj4gCi0gICAgICAgICAgICAgICAgPC94c2Q6c2ltcGxlVHlwZT4gCi0gICAgICAgICAgPC94c2Q6ZWxlbWVudD4gCi0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvRW50aXRpZXMvbm9ybWFsaXplRW50aXRpZXNWYWxpZC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0VudGl0aWVzL25vcm1hbGl6ZUVudGl0aWVzVmFsaWQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc1ZWE0YS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvRW50aXRpZXMvbm9ybWFsaXplRW50aXRpZXNWYWxpZC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhLS0gVmFsaWQgdGVzdCBmb3IgRWNsaXBzZSBkZWZlY3QgNzA2NzAuIC0tPgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvbm9ybWFsaXplRW50aXRlc1ZhbGlkLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9Im5vcm1hbGl6ZUVudGl0ZXNWYWxpZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvbm9ybWFsaXplRW50aXRlc1ZhbGlkLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQllbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL25vcm1hbGl6ZUVudGl0ZXNWYWxpZC8iPgotICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJhU3RyaW5nIj4gCi0gICAgICAgICAgICAgICAgPHhzZDpzaW1wbGVUeXBlPiAKLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNkOnBhdHRlcm4gdmFsdWU9IkZ8Jmx0O3wmZ3Q7fH58SHxKfHgiLz4gCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3hzZDpyZXN0cmljdGlvbj4gCi0gICAgICAgICAgICAgICAgPC94c2Q6c2ltcGxlVHlwZT4gCi0gICAgICAgICAgPC94c2Q6ZWxlbWVudD4gCi0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUvSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9JbXBvcnRJbmxpbmVTY2hlbWFXaXRoSW5jbHVkZS9JbXBvcnRJbmxpbmVTY2hlbWFXaXRoSW5jbHVkZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzg3ODMxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9JbXBvcnRJbmxpbmVTY2hlbWFXaXRoSW5jbHVkZS9JbXBvcnRJbmxpbmVTY2hlbWFXaXRoSW5jbHVkZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxkZWZpbml0aW9ucyBuYW1lPSJJbXBvcnRJbmxpbmVTY2hlbWFXaXRoSW5jbHVkZSIKLQl4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVzdC5jb20vSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUiCi0JeG1sbnM6dG5zPSJodHRwOi8vdGVzdC5jb20vSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUiCi0JeG1sbnM6c2NoPSJodHRwOi8vdGVzdC5jb20vc2NoZW1hIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotCQotCTx0eXBlcz4KLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVzdC5jb20vc2NoZW1hIj4JCQkKLQkJCTx4c2Q6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0ic2NoZW1hLnhzZCIvPgotCQk8L3hzZDpzY2hlbWE+Ci0JCQkKLQkJPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVzdC5jb20vSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUiIHhtbG5zOnNjaD0iaHR0cDovL3Rlc3QuY29tL3NjaGVtYSI+Ci0JCQk8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZXN0LmNvbS9zY2hlbWEiLz4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJFbGVtZW50IiB0eXBlPSJzY2g6TXlUeXBlIi8+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3R5cGVzPgkKLQkKLQk8bWVzc2FnZSBuYW1lPSJyZXF1ZXN0Ij4KLQkJPHBhcnQgbmFtZT0icGFydCIgZWxlbWVudD0idG5zOkVsZW1lbnQiLz4KLQk8L21lc3NhZ2U+CQkKLQkKLTwvZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0ltcG9ydElubGluZVNjaGVtYVdpdGhJbmNsdWRlL3NjaGVtYS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUvc2NoZW1hLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUwNmU3Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW1wb3J0SW5saW5lU2NoZW1hV2l0aEluY2x1ZGUvc2NoZW1hLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVzdC5jb20vc2NoZW1hIiAKLQl4bWxuczp0bnM9Imh0dHA6Ly90ZXN0LmNvbS9zY2hlbWEiPgotCQotCTxjb21wbGV4VHlwZSBuYW1lPSJNeVR5cGUiPgotCQk8YXR0cmlidXRlIG5hbWU9ImF0dG9uZSIgdHlwZT0ic3RyaW5nIiB1c2U9InJlcXVpcmVkIi8+Ci0JCTxhdHRyaWJ1dGUgbmFtZT0iYXR0dHdvIiB0eXBlPSJzdHJpbmciIHVzZT0icmVxdWlyZWQiLz4KLQk8L2NvbXBsZXhUeXBlPgotCQotPC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0ltcG9ydE5vTlNTY2hlbWEvSW1wb3J0Tm9OU1NjaGVtYS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0ltcG9ydE5vTlNTY2hlbWEvSW1wb3J0Tm9OU1NjaGVtYS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2ZlYmI3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9JbXBvcnROb05TU2NoZW1hL0ltcG9ydE5vTlNTY2hlbWEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly9TaW1wbGUvVGVzdCIKLXhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgoteG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iVGVzdCIKLXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL1NpbXBsZS9UZXN0Ij4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vU2ltcGxlL1Rlc3QiCi14bWxuczp0bnM9Imh0dHA6Ly9TaW1wbGUvVGVzdCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICAgICA8eHNkOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iTm9UbnMueHNkIi8+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0ib3BlcmF0aW9uMSI+Ci0gICAgICAgIDx4c2Q6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJpbnB1dDEiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJOb1RucyIvPgotICAgICAgICAgIDwveHNkOnNlcXVlbmNlPgotICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4KLSAgICAgIDwveHNkOmVsZW1lbnQ+Ci0gICAgPC94c2Q6c2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gICAgPHdzZGw6bWVzc2FnZSBuYW1lPSJvcGVyYXRpb24xUmVxdWVzdE1zZyI+Ci0gICAgPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6b3BlcmF0aW9uMSIgbmFtZT0ib3BlcmF0aW9uMVBhcmFtZXRlcnMiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gICAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iVGVzdCI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9Im9wZXJhdGlvbjEiPgotICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOm9wZXJhdGlvbjFSZXF1ZXN0TXNnIiBuYW1lPSJvcGVyYXRpb24xUmVxdWVzdCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW1wb3J0Tm9OU1NjaGVtYS9Ob1Rucy54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW1wb3J0Tm9OU1NjaGVtYS9Ob1Rucy54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmOWMyYmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0ltcG9ydE5vTlNTY2hlbWEvTm9UbnMueHNkCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iTm9UbnMiPgotICAgIDx4c2Q6c2VxdWVuY2U+Ci0gICAgICA8eHNkOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBuYW1lPSJhdHRyaWJ1dGUxIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPC94c2Q6c2VxdWVuY2U+Ci0gIDwveHNkOmNvbXBsZXhUeXBlPgotPC94c2Q6c2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9JbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TL0ltcG9ydE5vTlNTY2hlbWFBbmRTZWNvbmRTY2hlbWFXaXRoTlMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9JbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TL0ltcG9ydE5vTlNTY2hlbWFBbmRTZWNvbmRTY2hlbWFXaXRoTlMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFkNzk0OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW1wb3J0Tm9OU1NjaGVtYUFuZFNlY29uZFNjaGVtYVdpdGhOUy9JbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6dG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydFNjaGVtYU5vTmFtZXNwYWNlLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IkltcG9ydFNjaGVtYU5vTmFtZXNwYWNlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0U2NoZW1hTm9OYW1lc3BhY2UvIj4KLTx3c2RsOnR5cGVzPgotPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydFNjaGVtYU5vTmFtZXNwYWNlLyI+Ci0JPHhzZDppbXBvcnQgc2NoZW1hTG9jYXRpb249Im5vVE5TLnhzZCIvPgotPC94c2Q6c2NoZW1hPgotPHhzZDpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL0ltcG9ydFNjaGVtYU5vTmFtZXNwYWNlLyI+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiIHR5cGU9InhzZDpzdHJpbmciLz4KLTx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci08L3hzZDpzY2hlbWE+Ci08L3dzZGw6dHlwZXM+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIj4KLTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIiBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotPHdzZGw6cGFydCBlbGVtZW50PSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPC93c2RsOm1lc3NhZ2U+Ci08d3NkbDpwb3J0VHlwZSBuYW1lPSJJbXBvcnRTY2hlbWFOb05hbWVzcGFjZSI+Ci08d3NkbDpvcGVyYXRpb24gbmFtZT0iTmV3T3BlcmF0aW9uIj4KLTx3c2RsOmlucHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXF1ZXN0Ii8+Ci08d3NkbDpvdXRwdXQgbWVzc2FnZT0idG5zOk5ld09wZXJhdGlvblJlc3BvbnNlIi8+Ci08L3dzZGw6b3BlcmF0aW9uPgotPC93c2RsOnBvcnRUeXBlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0ltcG9ydE5vTlNTY2hlbWFBbmRTZWNvbmRTY2hlbWFXaXRoTlMvbm9UTlMueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0ltcG9ydE5vTlNTY2hlbWFBbmRTZWNvbmRTY2hlbWFXaXRoTlMvbm9UTlMueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzA4MGJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9JbXBvcnROb05TU2NoZW1hQW5kU2Vjb25kU2NoZW1hV2l0aE5TL25vVE5TLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotPC94c2Q6c2NoZW1hPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0ltcG9ydE5vU2NoZW1hTG9jYXRpb24vSW1wb3J0Tm9TY2hlbWFMb2NhdGlvbi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0ltcG9ydE5vU2NoZW1hTG9jYXRpb24vSW1wb3J0Tm9TY2hlbWFMb2NhdGlvbi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTRlMmVhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9JbXBvcnROb1NjaGVtYUxvY2F0aW9uL0ltcG9ydE5vU2NoZW1hTG9jYXRpb24ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKLQl4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Tm9TY2hlbWFMb2NhdGlvbi8iCi0JeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iSW1wb3J0Tm9TY2hlbWFMb2NhdGlvbiIKLQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Tm9TY2hlbWFMb2NhdGlvbi8iPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW1wb3J0Tm9TY2hlbWFMb2NhdGlvbi8iCi0JCQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLQkJCTx4c2Q6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL0RvY0xpdGVyYWwvIiAvPgotCQk8L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0lubGluZVNjaGVtYUdlbmVyYXRlZEltcG9ydHMvTm9JbXBvcnRGb3JVbnByZWZpeGVkQXR0cmlidXRlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW5saW5lU2NoZW1hR2VuZXJhdGVkSW1wb3J0cy9Ob0ltcG9ydEZvclVucHJlZml4ZWRBdHRyaWJ1dGUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAwNzljYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW5saW5lU2NoZW1hR2VuZXJhdGVkSW1wb3J0cy9Ob0ltcG9ydEZvclVucHJlZml4ZWRBdHRyaWJ1dGUud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vTm9JbXBvcnRGb3JVbnByZWZpeGVkQXR0cmlidXRlLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iTm9JbXBvcnRGb3JVbnByZWZpeGVkQXR0cmlidXRlIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vTm9JbXBvcnRGb3JVbnByZWZpeGVkQXR0cmlidXRlLyI+Ci0JPHdzZGw6dHlwZXM+Ci0JCTx4czpzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tL05vSW1wb3J0Rm9yVW5wcmVmaXhlZEF0dHJpYnV0ZS8iIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiBhdHRyaWJ1dGVGb3JtRGVmYXVsdD0idW5xdWFsaWZpZWQiPgotCQkJPHhzOmNvbXBsZXhUeXBlIG5hbWU9InR5cGVXaXRoTWluTWF4T2NjdXJzIj4KLQkJCQk8eHM6c2VxdWVuY2U+Ci0JCQkJCTx4czplbGVtZW50IG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIiBuYW1lPSJlbGVtMSIgdHlwZT0ieHM6c3RyaW5nIi8+Ci0JCQkJCTx4czplbGVtZW50IG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIiBuYW1lPSJlbGVtMiIgdHlwZT0ieHM6c3RyaW5nIi8+Ci0JCQkJPC94czpzZXF1ZW5jZT4KLQkJCTwveHM6Y29tcGxleFR5cGU+Ci0JCQk8eHM6Y29tcGxleFR5cGUgbmFtZT0idHlwZVdpdGhSZXN0cmljdGlvbiI+Ci0JCQkJPHhzOnNlcXVlbmNlPgotCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJlbGVtMyI+Ci0JCQkJCQk8eHM6c2ltcGxlVHlwZT4KLQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6Tk1UT0tFTiI+Ci0JCQkJCQkJCTx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic29tZXRoaW5nIi8+Ci0JCQkJCQkJPC94czpyZXN0cmljdGlvbj4KLQkJCQkJCTwveHM6c2ltcGxlVHlwZT4KLQkJCQkJPC94czplbGVtZW50PgotCQkJCTwveHM6c2VxdWVuY2U+Ci0JCQk8L3hzOmNvbXBsZXhUeXBlPgotCQk8L3hzOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL0lubGluZVNjaGVtYU5vTmFtZXNwYWNlL0lubGluZVNjaGVtYU5vTmFtZXNwYWNlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW5saW5lU2NoZW1hTm9OYW1lc3BhY2UvSW5saW5lU2NoZW1hTm9OYW1lc3BhY2Uud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQxMzc2MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvSW5saW5lU2NoZW1hTm9OYW1lc3BhY2UvSW5saW5lU2NoZW1hTm9OYW1lc3BhY2Uud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp0bnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvSW5saW5lU2NoZW1hTm9OYW1lc3BhY2UvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iSW5saW5lU2NoZW1hTm9OYW1lc3BhY2UiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbmxpbmVTY2hlbWFOb05hbWVzcGFjZS8iPgotPHdzZGw6dHlwZXM+Ci08eHNkOnNjaGVtYT4KLQkKLTwveHNkOnNjaGVtYT4KLTx4c2Q6c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9JbmxpbmVTY2hlbWFOb05hbWVzcGFjZS8iPgotPHhzZDplbGVtZW50IG5hbWU9Ik5ld09wZXJhdGlvblJlc3BvbnNlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci08eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPgotPC94c2Q6c2NoZW1hPgotPC93c2RsOnR5cGVzPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXNwb25zZSI+Ci08d3NkbDpwYXJ0IGVsZW1lbnQ9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIgbmFtZT0iTmV3T3BlcmF0aW9uUmVzcG9uc2UiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6bWVzc2FnZSBuYW1lPSJOZXdPcGVyYXRpb25SZXF1ZXN0Ij4KLTx3c2RsOnBhcnQgZWxlbWVudD0idG5zOk5ld09wZXJhdGlvblJlcXVlc3QiIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiLz4KLTwvd3NkbDptZXNzYWdlPgotPHdzZGw6cG9ydFR5cGUgbmFtZT0iSW5saW5lU2NoZW1hTm9OYW1lc3BhY2UiPgotPHdzZGw6b3BlcmF0aW9uIG5hbWU9Ik5ld09wZXJhdGlvbiI+Ci08d3NkbDppbnB1dCBtZXNzYWdlPSJ0bnM6TmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpOZXdPcGVyYXRpb25SZXNwb25zZSIvPgotPC93c2RsOm9wZXJhdGlvbj4KLTwvd3NkbDpwb3J0VHlwZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9Ob05TRWxlbWVudFJlZmVyZW5jZS9Ob05TRWxlbWVudFJlZmVyZW5jZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL05vTlNFbGVtZW50UmVmZXJlbmNlL05vTlNFbGVtZW50UmVmZXJlbmNlLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMzAyZDQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL05vTlNFbGVtZW50UmVmZXJlbmNlL05vTlNFbGVtZW50UmVmZXJlbmNlLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgbmFtZT0iTm9OU0VsZW1lbnRSZWZlcmVuY2UiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Ob05TRWxlbWVudFJlZmVyZW5jZS8iIHhtbG5zOnRucz0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9Ob05TRWxlbWVudFJlZmVyZW5jZS8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6ZG9jdW1lbnRhdGlvbj4KLQlUaGlzIFdTREwgZmlsZSBkZW1vbnN0cmF0ZXMgYSBtZXNzYWdlIHJlZmVycmluZyB0byBhbiBlbGVtZW50IHRoYXQgaXMgZGVmaW5lZAotCWJ5IGFuIGlubGluZSBzY2hlbWEgd2l0aCBubyB0YXJnZXQgbmFtZXNwYWNlLgotICA8L3dzZGw6ZG9jdW1lbnRhdGlvbj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICAgICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDwveHNkOnNjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9Ik5ld09wZXJhdGlvblJlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iTmV3T3BlcmF0aW9uUmVxdWVzdCIgZWxlbWVudD0iTmV3T3BlcmF0aW9uUmVxdWVzdCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9PbmVFcnJvckZvcklubGluZVhTRFJlZkludmFsaWRJbmxpbmVYU0QvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNELndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNEL09uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODMzZDc1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9PbmVFcnJvckZvcklubGluZVhTRFJlZkludmFsaWRJbmxpbmVYU0QvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNELndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNELyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9Ik9uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNELyIgeG1sbnM6eHNkMT0iaHR0cDovL3RlbXB1cmkub3JnL09uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRC8xIiB4bWxuczp4c2QyPSJodHRwOi8vdGVtcHVyaS5vcmcvT25lRXJyb3JGb3JJbmxpbmVYU0RSZWZJbnZhbGlkSW5saW5lWFNELzEiPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9PbmVFcnJvckZvcklubGluZVhTRFJlZkludmFsaWRJbmxpbmVYU0QvMSI+Ci0JCSAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9InhzZDpzdHJpbmdhIj48L3hzZDplbGVtZW50PgotICAgICAgICA8L3hzZDpzY2hlbWE+Ci0JCTx4c2Q6c2NoZW1hIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0JCQllbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIKLQkJCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL09uZUVycm9yRm9ySW5saW5lWFNEUmVmSW52YWxpZElubGluZVhTRC8yIj4KLQkJICA8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9PbmVFcnJvckZvcklubGluZVhTRFJlZkludmFsaWRJbmxpbmVYU0QvMSIvPgotCQkgIDx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iTmV3Q29tcGxleFR5cGUiPgotICAgICAgICAgICAgPHhzZDpzZXF1ZW5jZT4KLSAgICAgICAgICAgICAgPHhzZDplbGVtZW50IHJlZj0ieHNkMTpOZXdHbG9iYWxFbGVtZW50Ij48L3hzZDplbGVtZW50PgotICAgICAgICAgICAgPC94c2Q6c2VxdWVuY2U+Ci0gICAgICAgICAgPC94c2Q6Y29tcGxleFR5cGU+Ci0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS9SZWZlclRvQW5vdGhlcklubGluZVR5cGUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYyZDkxNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJSZWZlclRvQW5vdGhlcklubGluZVR5cGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS8iPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZWZlclRvQW5vdGhlcklubGluZVR5cGUxLyIKLSAgICAgICAgICAgIHhtbG5zOnR3bz0iaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZTIvIj4KLSAgICAgICAgICA8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZWZlclRvQW5vdGhlcklubGluZVR5cGUyLyIvPgotICAgICAgICAgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJOZXdTaW1wbGVUeXBlIj4KLSAgICAgICAgICAgIDx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+Ci0gICAgICAgICAgICAgIDx4c2Q6bWluTGVuZ3RoIHZhbHVlPSIxIi8+Ci0gICAgICAgICAgICA8L3hzZDpyZXN0cmljdGlvbj4KLSAgICAgICAgICA8L3hzZDpzaW1wbGVUeXBlPgotCQkgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJ0d286TmV3U2ltcGxlVHlwZSI+PC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZWZlclRvQW5vdGhlcklubGluZVR5cGUyLyIKLSAgICAgICAgICAgIHhtbG5zOm9uZT0iaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZTEvIj4KLQkJICA8eHNkOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZWZlclRvQW5vdGhlcklubGluZVR5cGUxLyIvPgotCQkgIDx4c2Q6c2ltcGxlVHlwZSBuYW1lPSJOZXdTaW1wbGVUeXBlIj4KLSAgICAgICAgICAgIDx4c2Q6cmVzdHJpY3Rpb24gYmFzZT0ieHNkOnN0cmluZyI+Ci0gICAgICAgICAgICAgIDx4c2Q6bWluTGVuZ3RoIHZhbHVlPSIxIi8+Ci0gICAgICAgICAgICA8L3hzZDpyZXN0cmljdGlvbj4KLSAgICAgICAgICA8L3hzZDpzaW1wbGVUeXBlPgotCQkgIDx4c2Q6ZWxlbWVudCBuYW1lPSJOZXdHbG9iYWxFbGVtZW50IiB0eXBlPSJvbmU6TmV3U2ltcGxlVHlwZSI+PC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZU5vSW1wb3J0LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZU5vSW1wb3J0LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1OThmZGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS9SZWZlclRvQW5vdGhlcklubGluZVR5cGVOb0ltcG9ydC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJSZWZlclRvQW5vdGhlcklubGluZVR5cGUiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZS8iPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZWZlclRvQW5vdGhlcklubGluZVR5cGUxLyIKLSAgICAgICAgICAgIHhtbG5zOnR3bz0iaHR0cDovL3RlbXB1cmkub3JnL1JlZmVyVG9Bbm90aGVySW5saW5lVHlwZTIvIj4KLSAgICAgICAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0iTmV3U2ltcGxlVHlwZSI+Ci0gICAgICAgICAgICA8eHNkOnJlc3RyaWN0aW9uIGJhc2U9InhzZDpzdHJpbmciPgotICAgICAgICAgICAgICA8eHNkOm1pbkxlbmd0aCB2YWx1ZT0iMSIvPgotICAgICAgICAgICAgPC94c2Q6cmVzdHJpY3Rpb24+Ci0gICAgICAgICAgPC94c2Q6c2ltcGxlVHlwZT4KLQkJICA8eHNkOmVsZW1lbnQgbmFtZT0iTmV3R2xvYmFsRWxlbWVudCIgdHlwZT0idHdvOk5ld1NpbXBsZVR5cGUiPjwveHNkOmVsZW1lbnQ+Ci0JCTwveHNkOnNjaGVtYT4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCWVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvUmVmZXJUb0Fub3RoZXJJbmxpbmVUeXBlMi8iCi0gICAgICAgICAgICB4bWxuczpvbmU9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZWZlclRvQW5vdGhlcklubGluZVR5cGUxLyI+Ci0JCSAgPHhzZDpzaW1wbGVUeXBlIG5hbWU9Ik5ld1NpbXBsZVR5cGUiPgotICAgICAgICAgICAgPHhzZDpyZXN0cmljdGlvbiBiYXNlPSJ4c2Q6c3RyaW5nIj4KLSAgICAgICAgICAgICAgPHhzZDptaW5MZW5ndGggdmFsdWU9IjEiLz4KLSAgICAgICAgICAgIDwveHNkOnJlc3RyaWN0aW9uPgotICAgICAgICAgIDwveHNkOnNpbXBsZVR5cGU+Ci0JCSAgPHhzZDplbGVtZW50IG5hbWU9Ik5ld0dsb2JhbEVsZW1lbnQiIHR5cGU9Im9uZTpOZXdTaW1wbGVUeXBlIj48L3hzZDplbGVtZW50PgotCQk8L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL1Jlc3RyaWN0aW9uUGF0dGVybldpdGhDb2xvbi9SZXN0cmljdGlvblBhdHRlcm5XaXRoQ29sb24ud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9SZXN0cmljdGlvblBhdHRlcm5XaXRoQ29sb24vUmVzdHJpY3Rpb25QYXR0ZXJuV2l0aENvbG9uLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMTQzN2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL1Jlc3RyaWN0aW9uUGF0dGVybldpdGhDb2xvbi9SZXN0cmljdGlvblBhdHRlcm5XaXRoQ29sb24ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB4bWxuczp0bnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZXN0cmljdGlvblBhdHRlcm5XaXRoQ29sb24vIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgbmFtZT0iUmVzdHJpY3Rpb25QYXR0ZXJuV2l0aENvbG9uIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9SZXN0cmljdGlvblBhdHRlcm5XaXRoQ29sb24vIj4KLQk8d3NkbDp0eXBlcz4KLQkJPHhzZDpzY2hlbWEgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKLQkJCWVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIgotCQkJdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvUmVzdHJpY3Rpb25QYXR0ZXJuV2l0aENvbG9uLyI+Ci0gICAgICAgICAgICA8eHNkOnNpbXBsZVR5cGUgbmFtZT0idGltZSI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgPHhzZDpyZXN0cmljdGlvbiBiYXNlPSJ4c2Q6c3RyaW5nIj4gICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgPHhzZDpwYXR0ZXJuIHZhbHVlPSIoWzAtOV17Mn06WzAtOV17Mn06WzAtOV17Mn0pfCgjZW1wdHkgdmFsdWUpIi8+ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIDwveHNkOnJlc3RyaWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIDwveHNkOnNpbXBsZVR5cGU+ICAgICAgICAgIAotCQk8L3hzZDpzY2hlbWE+Ci0JPC93c2RsOnR5cGVzPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL1NjaGVtYURvY0VsZW1XaXRoU291cmNlQW5kU3ViRWxlbS9TY2hlbWFEb2NFbGVtV2l0aFNvdXJjZUFuZFN1YkVsZW0ud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2RsLnZhbGlkYXRpb24udGVzdHMvdGVzdHJlc291cmNlcy9zYW1wbGVzL1hTRC9TY2hlbWFEb2NFbGVtV2l0aFNvdXJjZUFuZFN1YkVsZW0vU2NoZW1hRG9jRWxlbVdpdGhTb3VyY2VBbmRTdWJFbGVtLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjY2Y2MTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL1NjaGVtYURvY0VsZW1XaXRoU291cmNlQW5kU3ViRWxlbS9TY2hlbWFEb2NFbGVtV2l0aFNvdXJjZUFuZFN1YkVsZW0ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vc2FtcGxlLyIgCi0gICAgICAgICAgICAgeG1sbnM6dG5zPSJodHRwOi8vc2FtcGxlLyIgCi0gICAgICAgICAgICAgeG1sbnM6ZXg9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iIAotICAgICAgICAgICAgIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0JPHR5cGVzPgotCQk8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIGF0dHJpYnV0ZUZvcm1EZWZhdWx0PSJ1bnF1YWxpZmllZCI+Ci0JCQk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTmFtZSI+Ci0JCQkJPHhzOmFubm90YXRpb24+Ci0JCQkJCTx4czpkb2N1bWVudGF0aW9uIHNvdXJjZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbSI+Ci0JCQkJCQk8Y2hvaWNlIC8+Ci0JCQkJCTwveHM6ZG9jdW1lbnRhdGlvbj4KLQkJCQk8L3hzOmFubm90YXRpb24+Ci0JCQk8L3hzOmNvbXBsZXhUeXBlPgotCQk8L3hzOnNjaGVtYT4KLQk8L3R5cGVzPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvVmFsdWVDb2xvbi9WYWx1ZUNvbG9uLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NkbC52YWxpZGF0aW9uLnRlc3RzL3Rlc3RyZXNvdXJjZXMvc2FtcGxlcy9YU0QvVmFsdWVDb2xvbi9WYWx1ZUNvbG9uLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NDMzOWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzZGwudmFsaWRhdGlvbi50ZXN0cy90ZXN0cmVzb3VyY2VzL3NhbXBsZXMvWFNEL1ZhbHVlQ29sb24vVmFsdWVDb2xvbi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnL1ZhbHVlQ29sb24vIgotCXhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotCXhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIG5hbWU9IlZhbHVlQ29sb24iCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvVmFsdWVDb2xvbi8iPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgotCQkJZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiCi0JCQl0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9WYWx1ZUNvbG9uLyI+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTXlFbGVtZW50Ij4KLQkJCQk8eHNkOmFubm90YXRpb24+Ci0JCQkJCTx4c2Q6YXBwaW5mbyBzb3VyY2U9Imh0dHA6Ly9zYW1wbGUuY29tIj4KLQkJCQkJCTx4c2Q6aW5pdGlhbFZhbHVlIGtpbmQ9InN0cmluZ192YWx1ZSIgdmFsdWU9IjoiLz4KLQkJCQkJPC94c2Q6YXBwaW5mbz4KLQkJCQk8L3hzZDphbm5vdGF0aW9uPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJPC94c2Q6c2NoZW1hPgotCTwvd3NkbDp0eXBlcz4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvLmNsYXNzcGF0aCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRiY2ViZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS41Ii8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIj4KLQkJPGFjY2Vzc3J1bGVzPgotCQkJPGFjY2Vzc3J1bGUga2luZD0iYWNjZXNzaWJsZSIgcGF0dGVybj0ib3JnL2VjbGlwc2Uvd3N0L3dzaS8qKiIvPgotCQk8L2FjY2Vzc3J1bGVzPgotCTwvY2xhc3NwYXRoZW50cnk+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvLmN2c2lnbm9yZSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI4NDhmZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWJpbgotdGVtcC5mb2xkZXIKLXdzaS50ZXN0cy5qYXIKLWJ1aWxkLnhtbAotamF2YUNvbXBpbGVyLndzaS50ZXN0cy5qYXIuYXJncwpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy8ucHJvamVjdCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NWQxODcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLndzdC53c2kudGVzdHM8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRiNzkzYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotI1N1biBBcHIgMTYgMTc6NTk6MzkgRURUIDIwMDYKLWVjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCi1lbmNvZGluZy88cHJvamVjdD49SVNPLTg4NTktMQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU5MjRlYS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSNUdWUgRmViIDEwIDIyOjM3OjQxIEVTVCAyMDA5Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi51bnVzZWRMb2NhbD1wcmVzZXJ2ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcuc291cmNlRmlsZT1nZW5lcmF0ZQotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjIKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9d2FybmluZwotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4uaW5saW5lSnNyQnl0ZWNvZGU9ZGlzYWJsZWQKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjMKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj13YXJuaW5nCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYWE3NmQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jV2VkIE1hciAyOSAwNDowODo0OCBFU1QgMjAwNgotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLWludGVybmFsLmRlZmF1bHQuY29tcGxpYW5jZT1kZWZhdWx0CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEzZjFjMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJUJ1bmRsZS1OYW1lLjAKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLndzdC53c2kudGVzdHMKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuMAotQnVuZGxlLUNsYXNzUGF0aDogd3NpLnRlc3RzLmphcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy5pbnRlcm5hbC5XU0lUZXN0c1BsdWdpbgotQnVuZGxlLVZlbmRvcjogJUJ1bmRsZS1WZW5kb3IuMAotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2Uud3N0LndzaSwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcywKLSBvcmcuanVuaXQ7YnVuZGxlLXZlcnNpb249IlszLjguMCw0LjAuMCkiLAotIGphdmF4LndzZGw7YnVuZGxlLXZlcnNpb249IlsxLjUuMCwxLjYuMCkiLAotIG9yZy5lY2xpcHNlLm9zZ2ksCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLAotIG9yZy5lY2xpcHNlLndzdC5jb21tYW5kLmVudiwKLSBvcmcuZWNsaXBzZS53c3QuY29tbWFuZC5lbnYuY29yZQotQnVuZGxlLUFjdGl2YXRpb25Qb2xpY3k6IGxhenkKLUV4cG9ydC1QYWNrYWdlOiBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLmludGVybmFsCi1CdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSjJTRS0xLjUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvYWJvdXQuaHRtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE5OWRmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08SFRNTD4KLQotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotCi08Qk9EWSBsYW5nPSJFTi1VUyI+Ci0KLTxIMz5BYm91dCBUaGlzIENvbnRlbnQ8L0gzPgotCi08UD5KdW5lLCAyMDA4PC9QPgotCi08SDM+TGljZW5zZTwvSDM+Ci0KLTxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAKLSgiQ29udGVudCIpLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IAotdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIAotKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0Ci08QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5waHAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocDwvQT4uIAotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9QPgotCi08UD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSAKLUNvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAKLUNoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yknMgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIAotbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgCi10ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudCAKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdAotPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvPC9BPi48L1A+Ci0KLTwvQk9EWT4KLTwvSFRNTD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvYnVpbGQucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjMDdmNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXNvdXJjZS53c2kudGVzdHMuamFyID0gc3JjLwotb3V0cHV0LndzaS50ZXN0cy5qYXIgPSBiaW4vCi1iaW4uaW5jbHVkZXMgPSB3c2kudGVzdHMuamFyLFwKLSAgICAgICAgICAgICAgIHRlc3RSZXNvdXJjZXMvLFwKLSAgICAgICAgICAgICAgIHRlc3QueG1sLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBhYm91dC5odG1sLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEyOTE2ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jIHByb3BlcnRpZXMgZmlsZSBmb3Igb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cwotQnVuZGxlLU5hbWUuMCA9IFdTSSBKVW5pdCBUZXN0Ci1CdW5kbGUtVmVuZG9yLjAgPSBFY2xpcHNlLm9yZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvQmFzaWNQcm9maWxlQW5hbHl6ZXJUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3Rlc3RzL2ludGVybmFsL0Jhc2ljUHJvZmlsZUFuYWx5emVyVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODhmMGYzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvQmFzaWNQcm9maWxlQW5hbHl6ZXJUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLmludGVybmFsOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5CYXNpY1Byb2ZpbGVBbmFseXplcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLkFuYWx5emVyQ29uZmlnOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5hbmFseXplci5jb25maWcuQXNzZXJ0aW9uUmVzdWx0c09wdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLmNvcmUuYW5hbHl6ZXIuY29uZmlnLmltcGwuQXNzZXJ0aW9uUmVzdWx0c09wdGlvbkltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5jb3JlLmNvbW1vbi5pbXBsLkFkZFN0eWxlU2hlZXRJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS5kb2N1bWVudC5Eb2N1bWVudEZhY3Rvcnk7Ci0KLXB1YmxpYyBjbGFzcyBCYXNpY1Byb2ZpbGVBbmFseXplclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7Ci0JcHVibGljIHZvaWQgdGVzdFJlcG9ydFdyaXRlcklzQ2xvc2VkQWZ0ZXJSZXBvcnRJc0ZpbmlzaGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCURvY3VtZW50RmFjdG9yeSBkb2N1bWVudEZhY3RvcnkgPSBEb2N1bWVudEZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLQkJQW5hbHl6ZXJDb25maWcgYW5hbHl6ZXJjb25maWcgPSBkb2N1bWVudEZhY3RvcnkubmV3QW5hbHl6ZXJDb25maWcoKTsKLQkJQXNzZXJ0aW9uUmVzdWx0c09wdGlvbiBhcm8gPSBuZXcgQXNzZXJ0aW9uUmVzdWx0c09wdGlvbkltcGwoKTsKLQkJYXJvLnNldFNob3dNZXNzYWdlRW50cnkoZmFsc2UpOwotCQlhbmFseXplcmNvbmZpZy5zZXRBc3NlcnRpb25SZXN1bHRzT3B0aW9uKGFybyk7Ci0JCWFuYWx5emVyY29uZmlnLnNldEFkZFN0eWxlU2hlZXQobmV3IEFkZFN0eWxlU2hlZXRJbXBsKCkpOwotCQlGaWxlIHJlcG9ydEZpbGUgPSBGaWxlLmNyZWF0ZVRlbXBGaWxlKCJ3c2ktcmVwb3J0IiwgIi54bWwiKTsKLQkJYW5hbHl6ZXJjb25maWcuc2V0UmVwb3J0TG9jYXRpb24ocmVwb3J0RmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSk7Ci0JCUJhc2ljUHJvZmlsZUFuYWx5emVyIGFuYWx5emVyID0gbmV3IEJhc2ljUHJvZmlsZUFuYWx5emVyKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoYW5hbHl6ZXJjb25maWcpKTsKLQkJCi0JCWFuYWx5emVyLnZhbGlkYXRlQ29uZm9ybWFuY2UoKTsKLQkJCi0JCWJvb2xlYW4gZGVsZXRlZCA9IHJlcG9ydEZpbGUuZGVsZXRlKCk7Ci0JCWFzc2VydFRydWUoZGVsZXRlZCk7Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3Rlc3RzL2ludGVybmFsL0NvcmVDb25mb3JtYW5jZVRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvQ29yZUNvbmZvcm1hbmNlVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWQ5YmFjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvQ29yZUNvbmZvcm1hbmNlVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy5pbnRlcm5hbDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOwotaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLldTSVRlc3RUb29sc1Byb3BlcnRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5yZXBvcnQuQXNzZXJ0aW9uRXJyb3I7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci1pbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKLWltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLQotcHVibGljIGNsYXNzIENvcmVDb25mb3JtYW5jZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7Ci0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBURVNUX0NBU0VfRklMRSA9ICJ0ZXN0Y2FzZS54bWwiOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRF9JRF9BUCA9ICJBUDEwIjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUQURfSURfU1NCUCA9ICJTU0JQMTAiOwotCi0gICAgcHJvdGVjdGVkIFN0cmluZyBwbHVnaW5VUkkgPSBudWxsOwotICAgIHByb3RlY3RlZCBTdHJpbmcgdGFkSUQgPSBUQURfSURfQVA7Ci0KLSAgICBwdWJsaWMgQ29yZUNvbmZvcm1hbmNlVGVzdChTdHJpbmcgbmFtZSkgewotICAgICAgICBzdXBlcihuYW1lKTsKLSAgICAgICAgcGx1Z2luVVJJID0gV1NJVGVzdHNQbHVnaW4uZ2V0SW5zdGFsbFVSTCgpOwotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIHNldHVwKCkKLSAgICB7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0cmlldmUgdGhlIGV4cGVjdGVkIGFzc2VydGlvbiBmYWlsdXJlcy4KLSAgICAgKiBAcGFyYW0gZmlsZW5hbWUgLSB0aGUgbG9jYXRpb24gb2YgdGhlIHRlc3RjYXNlLnhtbCBmaWxlLgotICAgICAqIEByZXR1cm4gdGhlIGV4cGVjdGVkIGFzc2VydGlvbiBmYWlsdXJlcy4KLSAgICAgKi8KLSAgICBwcm90ZWN0ZWQgTGlzdCBnZXRFeHBlY3RlZEFzc2VydGlvbkZhaWx1cmVzKFN0cmluZyBmaWxlbmFtZSkgewotICAgICAgICBMaXN0IGFzc2VydGlvbkZhaWx1cmVzID0gbmV3IEFycmF5TGlzdCgpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyIGJ1aWxkZXIgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCkuCi0gICAgICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50QnVpbGRlcigpOwotICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gYnVpbGRlci5wYXJzZShmaWxlbmFtZSk7Ci0gICAgICAgICAgICBOb2RlTGlzdCBsaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhc3NlcnRpb24iKTsKLSAgICAgICAgICAgIGlmIChsaXN0ICE9IG51bGwpCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGxpc3QuZ2V0TGVuZ3RoKCk7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQgPSAoRWxlbWVudClsaXN0Lml0ZW0oaSk7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyB0YWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgidGFkSUQiKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCh0YWQgIT0gbnVsbCkgJiYgdGFkLmVxdWFscyh0aGlzLnRhZElEKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbkZhaWx1cmVzLmFkZChlbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgYXNzZXJ0aW9uRmFpbHVyZXMgPSBudWxsOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhc3NlcnRpb25GYWlsdXJlczsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDb21wYXJlIHRoZSBhY3R1YWwgZXJyb3JzIHdpdGggdGhlIGV4cGVjdGVkIGVycm9ycy4KLSAgICAgKiBAcGFyYW0gZXJyb3JzIHRoZSBhY3R1YWwgYXNzZXJ0aW9uIGZhaWx1cmVzCi0gICAgICogQHBhcmFtIGV4cGVjdGVkRXJyb3JzIHRoZSBleHBlY3RlZCBhc3NlcnRpb24gZmFpbHVyZXMKLSAgICAgKi8KLSAgICBwcm90ZWN0ZWQgdm9pZCBhbmFseXplUmVzdWx0cyhMaXN0IGVycm9ycywgTGlzdCBleHBlY3RlZEVycm9ycykgewotICAgICAgICBMaXN0IGFjdHVhbEVycm9ycyA9IG5ldyBBcnJheUxpc3QoKTsKLSAgICAgICAgaWYgKChlcnJvcnMgIT0gbnVsbCkgJiYgKGV4cGVjdGVkRXJyb3JzICE9IG51bGwpKSB7Ci0gICAgICAgICAgICBJdGVyYXRvciBpID0gZXJyb3JzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICB3aGlsZSAoaS5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciBlID0gKEFzc2VydGlvbkVycm9yKWkubmV4dCgpOwotICAgICAgICAgICAgICAgIFN0cmluZyBhc3NlcnRpb25JZCA9IGUuZ2V0QXNzZXJ0aW9uSUQoKTsKLSAgICAgICAgICAgICAgICBhY3R1YWxFcnJvcnMuYWRkKGFzc2VydGlvbklkKTsKLQotICAgICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRFcnJvcnMuY29udGFpbnMoYXNzZXJ0aW9uSWQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWwoIlVuZXhwZWN0ZWQgYXNzZXJ0aW9uIGZhaWx1cmU6ICIgKyBhc3NlcnRpb25JZCk7IAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaSA9IGV4cGVjdGVkRXJyb3JzLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICB3aGlsZSAoaS5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgYXNzZXJ0aW9uSWQgPSAoU3RyaW5nKWkubmV4dCgpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFhY3R1YWxFcnJvcnMuY29udGFpbnMoYXNzZXJ0aW9uSWQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWwoIkV4cGVjdGVkIGFzc2VydGlvbiBmYWlsdXJlOiAiICsgYXNzZXJ0aW9uSWQpOyAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRFcnJvcnMuc2l6ZSgpLCBlcnJvcnMuc2l6ZSgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIGdpdmVuIHRhZC4KLSAgICAgKiBAcGFyYW0gdGlkIHRoZSB0YWQgaWQuCi0gICAgICogQHJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIHRhZC4KLSAgICAgKi8KLSAgICBwcm90ZWN0ZWQgU3RyaW5nIGdldFRBRFVSSShTdHJpbmcgdGlkKQotICAgIHsKLSAgICAgICAgaWYgKHRpZC5lcXVhbHMoVEFEX0lEX0FQKSkKLSAgICAgICAgICAgIHJldHVybiBXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzLkFQX0FTU0VSVElPTl9GSUxFOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gV1NJVGVzdFRvb2xzUHJvcGVydGllcy5TU0JQX0FTU0VSVElPTl9GSUxFOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvQ29yZU1lc3NhZ2VMb2dDb25mb3JtYW5jZVRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvQ29yZU1lc3NhZ2VMb2dDb25mb3JtYW5jZVRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVkNWY3My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3Rlc3RzL2ludGVybmFsL0NvcmVNZXNzYWdlTG9nQ29uZm9ybWFuY2VUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy5pbnRlcm5hbDsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5XU0lQcmVmZXJlbmNlczsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Qud3NpLmludGVybmFsLldTSVRlc3RUb29sc1Byb3BlcnRpZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5hbmFseXplci5NZXNzYWdlQW5hbHl6ZXI7Ci0KLXB1YmxpYyBjbGFzcyBDb3JlTWVzc2FnZUxvZ0NvbmZvcm1hbmNlVGVzdCBleHRlbmRzIENvcmVDb25mb3JtYW5jZVRlc3QgCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1FU1NBR0VfTE9HX0JBU0VfRElSRUNUT1JZID0KLSAgICAgICJ0ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNRVNTQUdFX0xPR19FWFRFTlNJT04gPSAiLndzaW1zZyI7Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfQkFTRV9ESVJFQ1RPUlkgPSAidGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXU0RMX0VYVEVOU0lPTiA9ICIud3NkbCI7Ci0KLSAgcHVibGljIENvcmVNZXNzYWdlTG9nQ29uZm9ybWFuY2VUZXN0KFN0cmluZyBuYW1lKSAKLSAgewotICAgICAgc3VwZXIobmFtZSk7Ci0gIH0KLQotICAvKioKLSAgICogSlVuaXQgdGVzdDogdmFsaWRhdGUgdGhlIG1lc3NhZ2UgbG9nIGFnYWluc3QgdGhlIHNwZWNpZmllZCBXUy1JIFByb2ZpbGUuCi0gICAqIEBwYXJhbSB0YWQgaGUgV1MtSSBUZXN0IEFzc2VydGlvbiBEb2N1bWVudAotICAgKiBAcGFyYW0gdGVzdE5hbWUgdGhlIG5hbWUgb2YgdGhlIHRlc3QgY29udGFpbmluZyB0aGUgd3NkbCBkb2N1bWVudAotICAgKi8KLSAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdChTdHJpbmcgY2F0ZWdvcnksIFN0cmluZyB0ZXN0TmFtZSwgU3RyaW5nIHRhZElEKSB7CQotICAgICAgdGhpcy50YWRJRCA9IHRhZElEOwotCi0gICAgICBhc3NlcnROb3ROdWxsKCJQcm9ibGVtcyBkZXRlcm1pbmluZyBiYXNlIHVybCIsIHBsdWdpblVSSSk7Ci0gICAgICBTdHJpbmcgdGVzdERpcmVjdG9yeSAgPSBwbHVnaW5VUkkgKyBNRVNTQUdFX0xPR19CQVNFX0RJUkVDVE9SWSArICIvIiArCi0gICAgICAgICAgICAgIGNhdGVnb3J5ICsgIi8iICsgdGVzdE5hbWU7Ci0gICAgICBTdHJpbmcgbWVzc2FnZUxvZ0ZpbGUgPSAiZmlsZTovLyIgKyB0ZXN0RGlyZWN0b3J5ICsgIi8iICsgdGVzdE5hbWUgKwotICAgICAgICAgICAgICBNRVNTQUdFX0xPR19FWFRFTlNJT047Ci0gICAgICBTdHJpbmcgdGVzdGNhc2VGaWxlID0gdGVzdERpcmVjdG9yeSArICAiLyIgKyBURVNUX0NBU0VfRklMRTsKLQotICAgICAgLy8gdmFsaWRhdGUgdGhlIG1lc3NhZ2UgbG9nIGRvY3VtZW50Ci0gICAgICBNZXNzYWdlQW5hbHl6ZXIgYW5hbHl6ZXIgPSB2YWxpZGF0ZUNvbmZvcm1hbmNlKG1lc3NhZ2VMb2dGaWxlLCB0YWRJRCk7Ci0gICAgICBhc3NlcnROb3ROdWxsKCJVbmtub3duIHByb2JsZW1zIGR1cmluZyB2YWxpZGF0aW9uIiwgYW5hbHl6ZXIpOwotCi0gICAgICAvLyByZXRyaWV2ZSB0aGUgZXhwZWN0ZWQgYXNzZXJ0aW9uIGZhaWx1cmVzCi0gICAgICBMaXN0IGV4cGVjdGVkRXJyb3JzID0gZ2V0RXhwZWN0ZWRBc3NlcnRpb25GYWlsdXJlcyh0ZXN0Y2FzZUZpbGUpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiUHJvYmxlbXMgcmV0cmlldmluZyBleHBlY3RlZCBmYWlsdXJlcyIsIGV4cGVjdGVkRXJyb3JzKTsKLQotICAgICAgLy8gY29tcGFyZSB0aGUgYWN0dWFsIGVycm9ycyB3aXRoIHRoZSBleHBlY3RlZCBlcnJvcnMKLSAgICAgIGFuYWx5emVSZXN1bHRzKGFuYWx5emVyLmdldEFzc2VydGlvbkVycm9ycygpLCBleHBlY3RlZEVycm9ycyk7Ci0gIH0KLQotICAvKioKLSAgICogVmFsaWRhdGUgdGhlIHdzZGwgZG9jdW1lbnQgYWdhaW5zdCB0aGUgc3BlY2lmaWVkIFdTLUkgUHJvZmlsZS4KLSAgICogQHBhcmFtIHRhZCAgdGhlIFdTLUkgVGVzdCBBc3NlcnRpb24gRG9jdW1lbnQKLSAgICogQHBhcmFtIGZpbGVuYW1lIHRoZSB3c2RsIGRvY3VtZW50Ci0gICAqIEByZXR1cm4gdGhlIFdTRExBbmFseXplciBvYmplY3QgY29udGFpbmluZyB0aGUgdmFsaWRhdGlvbiByZXN1bHRzCi0gICAqLyAgCi0gIHByb3RlY3RlZCBNZXNzYWdlQW5hbHl6ZXIgdmFsaWRhdGVDb25mb3JtYW5jZShTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyB0YWRJRCkgewotICAgICAgTWVzc2FnZUFuYWx5emVyIGFuYWx5emVyID0gbnVsbDsKLSAgICAgIHRyeSB7Ci0gICAgICAgICAgV1NJUHJlZmVyZW5jZXMgcHJlZmVyZW5jZXMgPSBuZXcgV1NJUHJlZmVyZW5jZXMoKTsKLSAgICAgICAgICBwcmVmZXJlbmNlcy5zZXRDb21wbGlhbmNlTGV2ZWwoIFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuU1RPUF9OT05fV1NJKTsKLSAgICAgICAgICBwcmVmZXJlbmNlcy5zZXRUQURGaWxlKGdldFRBRFVSSSh0YWRJRCkpOwotCi0gICAgICAgICAgYW5hbHl6ZXIgPSBuZXcgTWVzc2FnZUFuYWx5emVyKGZpbGVuYW1lLCBwcmVmZXJlbmNlcyk7Ci0KLSAgICAgICAgICAvLyBydW4gdGhlIGNvbmZvcm1hbmNlIGNoZWNrIGFuZCBhZGQgZXJyb3JzIGFuZCB3YXJuaW5ncyBhcyBuZWVkZWQKLSAgICAgICAgICBhbmFseXplci52YWxpZGF0ZUNvbmZvcm1hbmNlKCk7Ci0gICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgfQkKLSAgICAgIHJldHVybiBhbmFseXplcjsKLSAgfQotCi0gIAotICAKLSAgLyoqCi0gICAqIEpVbml0IHRlc3Q6IHZhbGlkYXRlIHRoZSBtZXNzYWdlIGxvZyB3aXRoIGEgV1NETCBmaWxlCi0gICAqIEBwYXJhbSB3c2RsRmlsZSBVUkkgb2YgdGhlIFdTREwgZmlsZQotICAgKiBAcGFyYW0gV1NEYXRhIFN0cmluZyBhcnJheSBjb250YWluaW5nOiBlbGVtZW50bmFtZSwgbmFtZXNwYWNlLCBwYXJlbnRuYW1lLCB0eXBlCi0gICAqIEBwYXJhbSBmaWxlbmFtZSB0aGUgbmFtZSBvZiB0aGUgbG9nIGFuZCB3c2RsIGZpbGUgKHRoZXkgc2hvdWxkIGJlIGxvY2F0ZWQgaW4gdGhlIGxvZyBhbmQgd3NkbCBwYXRocyByZXNwZWN0aXZlbHkpCi0gICAqLwotICAKLSAgcHJvdGVjdGVkIHZvaWQgcnVuVGVzdFdpdGhXU0RMKFN0cmluZyBjYXRlZ29yeSwgU3RyaW5nIHRlc3ROYW1lLCBTdHJpbmdbXSBXU0RhdGEpIHsJCi0KLSAgICAgIGFzc2VydE5vdE51bGwoIlByb2JsZW1zIGRldGVybWluaW5nIGJhc2UgdXJsIiwgcGx1Z2luVVJJKTsKLSAgICAgIFN0cmluZyB0ZXN0RGlyZWN0b3J5ICA9IHBsdWdpblVSSSArIE1FU1NBR0VfTE9HX0JBU0VfRElSRUNUT1JZICsgIi8iICsKLSAgICAgICAgICAgICAgY2F0ZWdvcnkgKyAiLyIgKyB0ZXN0TmFtZTsKLSAgICAgIFN0cmluZyBtZXNzYWdlTG9nRmlsZSA9ICJmaWxlOi8vIiArIHRlc3REaXJlY3RvcnkgKyAiLyIgKyB0ZXN0TmFtZSArCi0gICAgICAgICAgICAgIE1FU1NBR0VfTE9HX0VYVEVOU0lPTjsKLSAgICAgIFN0cmluZyB0ZXN0Y2FzZUZpbGUgPSB0ZXN0RGlyZWN0b3J5ICsgICIvIiArIFRFU1RfQ0FTRV9GSUxFOwotICAgICAgU3RyaW5nIHdzZGxGaWxlID0gImZpbGU6Ly8iICsgcGx1Z2luVVJJICsgV1NETF9CQVNFX0RJUkVDVE9SWSArICIvIiArIGNhdGVnb3J5ICsgIi8iICsgdGVzdE5hbWUgKyBXU0RMX0VYVEVOU0lPTjsKLSAgICAgIAotICAgICAgLy8gdmFsaWRhdGUgdGhlIG1lc3NhZ2UgbG9nIGRvY3VtZW50Ci0gICAgICBNZXNzYWdlQW5hbHl6ZXIgYW5hbHl6ZXIgPSB2YWxpZGF0ZUNvbmZvcm1hbmNlV2l0aFdTREwobWVzc2FnZUxvZ0ZpbGUsIHdzZGxGaWxlLCBXU0RhdGEpOwotICAgICAgYXNzZXJ0Tm90TnVsbCgiVW5rbm93biBwcm9ibGVtcyBkdXJpbmcgdmFsaWRhdGlvbiIsIGFuYWx5emVyKTsKLQotICAgICAgLy8gcmV0cmlldmUgdGhlIGV4cGVjdGVkIGFzc2VydGlvbiBmYWlsdXJlcwotICAgICAgTGlzdCBleHBlY3RlZEVycm9ycyA9IGdldEV4cGVjdGVkQXNzZXJ0aW9uRmFpbHVyZXModGVzdGNhc2VGaWxlKTsKLSAgICAgIGFzc2VydE5vdE51bGwoIlByb2JsZW1zIHJldHJpZXZpbmcgZXhwZWN0ZWQgZmFpbHVyZXMiLCBleHBlY3RlZEVycm9ycyk7Ci0KLSAgICAgIC8vIGNvbXBhcmUgdGhlIGFjdHVhbCBlcnJvcnMgd2l0aCB0aGUgZXhwZWN0ZWQgZXJyb3JzCi0gICAgICBhbmFseXplUmVzdWx0cyhhbmFseXplci5nZXRBc3NlcnRpb25FcnJvcnMoKSwgZXhwZWN0ZWRFcnJvcnMpOwotICB9Ci0KLQotICAvKioKLSAgICogVmFsaWRhdGUgbG9nIHdpdGggYSBXU0RMIGZpbGUKLSAgICogQHBhcmFtIHdzZGxGaWxlIFVSSSBvZiB0aGUgV1NETCBmaWxlCi0gICAqIEBwYXJhbSBXU0RhdGEgU3RyaW5nIGFycmF5IGNvbnRhaW5pbmc6IGVsZW1lbnRuYW1lLCBuYW1lc3BhY2UsIHBhcmVudG5hbWUsIHR5cGUKLSAgICogQHBhcmFtIGZpbGVuYW1lIHRoZSBuYW1lIG9mIHRoZSBsb2cgYW5kIHdzZGwgZmlsZSAodGhleSBzaG91bGQgYmUgbG9jYXRlZCBpbiB0aGUgbG9nIGFuZCB3c2RsIHBhdGhzIHJlc3BlY3RpdmVseSkKLSAgICogQHJldHVybiB0aGUgV1NETEFuYWx5emVyIG9iamVjdCBjb250YWluaW5nIHRoZSB2YWxpZGF0aW9uIHJlc3VsdHMKLSAgICovICAKLQotCXByb3RlY3RlZCBNZXNzYWdlQW5hbHl6ZXIgdmFsaWRhdGVDb25mb3JtYW5jZVdpdGhXU0RMKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIHdzZGxGaWxlLCBTdHJpbmdbXSBXU0RhdGEpIHsKLQkgICAgTWVzc2FnZUFuYWx5emVyIGFuYWx5emVyID0gbnVsbDsKLQkgICAgdHJ5IHsKLQkgICAgICAgIFdTSVByZWZlcmVuY2VzIHByZWZlcmVuY2VzID0gbmV3IFdTSVByZWZlcmVuY2VzKCk7Ci0JICAgICAgICBwcmVmZXJlbmNlcy5zZXRDb21wbGlhbmNlTGV2ZWwoIFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuU1RPUF9OT05fV1NJKTsKLQkgICAgICAgIHByZWZlcmVuY2VzLnNldFRBREZpbGUoZ2V0VEFEVVJJKHRhZElEKSk7Ci0JCi0JICAgICAgICBhbmFseXplciA9IG5ldyBNZXNzYWdlQW5hbHl6ZXIoZmlsZW5hbWUsIHdzZGxGaWxlLCBXU0RhdGFbMF0sICBXU0RhdGFbMV0sIFdTRGF0YVsyXSwgV1NEYXRhWzNdLCBwcmVmZXJlbmNlcyk7Ci0JCi0JICAgICAgICAvLyBydW4gdGhlIGNvbmZvcm1hbmNlIGNoZWNrIGFuZCBhZGQgZXJyb3JzIGFuZCB3YXJuaW5ncyBhcyBuZWVkZWQKLQkgICAgICAgIGFuYWx5emVyLnZhbGlkYXRlQ29uZm9ybWFuY2UoKTsKLQkgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkgICAgICAgIHJldHVybiBudWxsOwotCSAgICB9CQotCSAgICByZXR1cm4gYW5hbHl6ZXI7Ci0JfQotCi19CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3Rlc3RzL2ludGVybmFsL0NvcmVXU0RMQ29uZm9ybWFuY2VUZXN0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3Rlc3RzL2ludGVybmFsL0NvcmVXU0RMQ29uZm9ybWFuY2VUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MzM4NGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9Db3JlV1NETENvbmZvcm1hbmNlVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdHMuaW50ZXJuYWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBqYXZheC53c2RsLkJpbmRpbmc7Ci1pbXBvcnQgamF2YXgud3NkbC5EZWZpbml0aW9uOwotaW1wb3J0IGphdmF4LndzZGwuTWVzc2FnZTsKLWltcG9ydCBqYXZheC53c2RsLlBvcnQ7Ci1pbXBvcnQgamF2YXgud3NkbC5Qb3J0VHlwZTsKLWltcG9ydCBqYXZheC53c2RsLlNlcnZpY2U7Ci1pbXBvcnQgamF2YXgud3NkbC54bWwuV1NETFJlYWRlcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuV1NJUHJlZmVyZW5jZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5XU0lUZXN0VG9vbHNQcm9wZXJ0aWVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuYW5hbHl6ZXIuV1NETEFuYWx5emVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS53c2RsLldTRExSZWFkZXJJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC53c2kuaW50ZXJuYWwuY29yZS54bWwuWE1MVXRpbHM7Ci1pbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7Ci0KLXB1YmxpYyBjbGFzcyBDb3JlV1NETENvbmZvcm1hbmNlVGVzdCBleHRlbmRzIENvcmVDb25mb3JtYW5jZVRlc3QgCi17Ci0gIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdTRExfQkFTRV9ESVJFQ1RPUlkgPSAidGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwiOwotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBXU0RMX0VYVEVOU0lPTiA9ICIud3NkbCI7Ci0KLSAgcHVibGljIENvcmVXU0RMQ29uZm9ybWFuY2VUZXN0KFN0cmluZyBuYW1lKSAKLSAgewotICAgICAgc3VwZXIobmFtZSk7Ci0gIH0KLQotICAvKioKLSAgICogSlVuaXQgdGVzdDogdmFsaWRhdGUgdGhlIHdzZGwgZG9jdW1lbnQgYWdhaW5zdCB0aGUgc3BlY2lmaWVkIFdTLUkgUHJvZmlsZS4KLSAgICogQHBhcmFtIHRhZCBoZSBXUy1JIFRlc3QgQXNzZXJ0aW9uIERvY3VtZW50Ci0gICAqIEBwYXJhbSB0ZXN0TmFtZSB0aGUgbmFtZSBvZiB0aGUgdGVzdCBjb250YWluaW5nIHRoZSB3c2RsIGRvY3VtZW50Ci0gICAqLwotICBwcm90ZWN0ZWQgdm9pZCBydW5UZXN0KFN0cmluZyBjYXRlZ29yeSwgU3RyaW5nIHRlc3ROYW1lLCBTdHJpbmcgdGFkSUQpCi0gIHsJCi0JdGhpcy50YWRJRCA9IHRhZElEOwotCi0gICAgYXNzZXJ0Tm90TnVsbCgiUHJvYmxlbXMgZGV0ZXJtaW5pbmcgYmFzZSB1cmwiLCBwbHVnaW5VUkkpOwotICAgIFN0cmluZyB0ZXN0RGlyZWN0b3J5ICA9IHBsdWdpblVSSSArIFdTRExfQkFTRV9ESVJFQ1RPUlkgKyAiLyIgKyBjYXRlZ29yeSArICIvIiArIHRlc3ROYW1lOwotICAgIFN0cmluZyB3c2RsRmlsZSA9ICJmaWxlOi8vIiArIHRlc3REaXJlY3RvcnkgKyAiLyIgKyB0ZXN0TmFtZSArIFdTRExfRVhURU5TSU9OOwotICAgIFN0cmluZyB0ZXN0Y2FzZUZpbGUgPSB0ZXN0RGlyZWN0b3J5ICsgICIvIiArIFRFU1RfQ0FTRV9GSUxFOwotICAgIAotCS8vIHZhbGlkYXRlIHRoZSBXU0RMIGRvY3VtZW50Ci0gICAgV1NETEFuYWx5emVyIGFuYWx5emVyID0gdmFsaWRhdGVDb25mb3JtYW5jZSh3c2RsRmlsZSwgdGFkSUQpOwotICAgIGFzc2VydE5vdE51bGwoIlVua25vd24gcHJvYmxlbXMgZHVyaW5nIHZhbGlkYXRpb24iLCBhbmFseXplcik7Ci0gICAgCi0JLy8gcmV0cmlldmUgdGhlIGV4cGVjdGVkIGFzc2VydGlvbiBmYWlsdXJlcwotCUxpc3QgZXhwZWN0ZWRFcnJvcnMgPSBnZXRFeHBlY3RlZEFzc2VydGlvbkZhaWx1cmVzKHRlc3RjYXNlRmlsZSk7Ci0JYXNzZXJ0Tm90TnVsbCgiUHJvYmxlbXMgcmV0cmlldmluZyBleHBlY3RlZCBmYWlsdXJlcyIsIGV4cGVjdGVkRXJyb3JzKTsKLQkKLQkvLyBjb21wYXJlIHRoZSBhY3R1YWwgZXJyb3JzIHdpdGggdGhlIGV4cGVjdGVkIGVycm9ycwotICAgIGFuYWx5emVSZXN1bHRzKGFuYWx5emVyLmdldEFzc2VydGlvbkVycm9ycygpLCBleHBlY3RlZEVycm9ycyk7Ci0gIH0gICAgCi0KLSAgLyoqCi0gICAqIFZhbGlkYXRlIHRoZSB3c2RsIGRvY3VtZW50IGFnYWluc3QgdGhlIHNwZWNpZmllZCBXUy1JIFByb2ZpbGUuCi0gICAqIEBwYXJhbSB0YWQgIHRoZSBXUy1JIFRlc3QgQXNzZXJ0aW9uIERvY3VtZW50Ci0gICAqIEBwYXJhbSBmaWxlbmFtZSB0aGUgd3NkbCBkb2N1bWVudAotICAgKiBAcmV0dXJuIHRoZSBXU0RMQW5hbHl6ZXIgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHZhbGlkYXRpb24gcmVzdWx0cwotICAgKi8gIAotICBwcm90ZWN0ZWQgV1NETEFuYWx5emVyIHZhbGlkYXRlQ29uZm9ybWFuY2UoU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcgdGFkSUQpCi0gIHsKLQlXU0RMQW5hbHl6ZXIgYW5hbHl6ZXIgPSBudWxsOwotICAgIHRyeSAKLSAgICB7Ci0gICAJICBXU0lQcmVmZXJlbmNlcyBwcmVmZXJlbmNlcyA9IG5ldyBXU0lQcmVmZXJlbmNlcygpOwotICAgCSAgcHJlZmVyZW5jZXMuc2V0Q29tcGxpYW5jZUxldmVsKCBXU0lUZXN0VG9vbHNQcm9wZXJ0aWVzLlNUT1BfTk9OX1dTSSk7Ci0JICBwcmVmZXJlbmNlcy5zZXRUQURGaWxlKGdldFRBRFVSSSh0YWRJRCkpOwotCQkKLQkgIGFuYWx5emVyID0gbmV3IFdTRExBbmFseXplcihmaWxlbmFtZSwgcHJlZmVyZW5jZXMpOwotCSAgc2V0Q29uZmlndXJhdGlvbnMoZmlsZW5hbWUsIGFuYWx5emVyKTsKLQkJCi0JICAvLyBydW4gdGhlIGNvbmZvcm1hbmNlIGNoZWNrIGFuZCBhZGQgZXJyb3JzIGFuZCB3YXJuaW5ncyBhcyBuZWVkZWQKLQkgIGFuYWx5emVyLnZhbGlkYXRlQ29uZm9ybWFuY2UoKTsKLSAgICB9ICAgIAotICAgIGNhdGNoIChFeGNlcHRpb24gZSkKLSAgICB7Ci0gICAgICByZXR1cm4gbnVsbDsKLSAgICB9CQotCXJldHVybiBhbmFseXplcjsKLSAgfQotICAKLSAgLyoqCi0gICAqIEdhdGhlciBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFdTREwgZmlsZS4KLSAgICogQHBhcmFtIGZpbGVOYW1lIHRoZSB3c2RsIGxvY2F0aW9uLgotICAgKiBAcGFyYW0gYSBXU0RMQW5hbHl6ZXIgb2JqZWN0IGNvbnRhaW5nIGNvbmZpZ3VyYXRpb24gaW5mby4KLSAgICovCi0gIHByb3RlY3RlZCB2b2lkIHNldENvbmZpZ3VyYXRpb25zKFN0cmluZyBmaWxlbmFtZSwgV1NETEFuYWx5emVyIGFuYWx5emVyKQotICB7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgV1NETFJlYWRlciB3c2RsUmVhZGVyID0gbmV3IFdTRExSZWFkZXJJbXBsKCk7Ci0KLSAgICAgIC8vIFNldCBmZWF0dXJlcwotICAgICAgd3NkbFJlYWRlci5zZXRGZWF0dXJlKGNvbS5pYm0ud3NkbC5Db25zdGFudHMuRkVBVFVSRV9WRVJCT1NFLCBmYWxzZSk7Ci0gICAgICB3c2RsUmVhZGVyLnNldEZlYXR1cmUoY29tLmlibS53c2RsLkNvbnN0YW50cy5GRUFUVVJFX0lNUE9SVF9ET0NVTUVOVFMsIHRydWUpOwotCi0gICAgICAvLyBQYXJzZSB0aGUgV1NETCBkb2N1bWVudAotICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBYTUxVdGlscy5wYXJzZVhNTERvY3VtZW50KGZpbGVuYW1lKTsKLQkgIERlZmluaXRpb24gZGVmaW5pdGlvbiA9IHdzZGxSZWFkZXIucmVhZFdTREwoZmlsZW5hbWUsIGRvY3VtZW50KTsKLSAgICAgIC8vRGVmaW5pdGlvbiBkZWZpbml0aW9uID0gcmVhZGVyLnJlYWRXU0RMKGZpbGVuYW1lKTsKLQotCSAgU3RyaW5nIG5hbWVzcGFjZSA9IGRlZmluaXRpb24uZ2V0VGFyZ2V0TmFtZXNwYWNlKCk7Ci0KLQkgIC8vIGdldCBhbGwgdGhlIGNvbGxlY3Rpb25zIHdlIG1heSBuZWVkIHRvIHZhbGlkYXRlCi0JICBDb2xsZWN0aW9uIHNlcnZpY2VzID0gZGVmaW5pdGlvbi5nZXRTZXJ2aWNlcygpLnZhbHVlcygpOwotCSAgQ29sbGVjdGlvbiBiaW5kaW5ncyA9IGRlZmluaXRpb24uZ2V0QmluZGluZ3MoKS52YWx1ZXMoKTsKLQkgIENvbGxlY3Rpb24gcG9ydFR5cGVzID0gZGVmaW5pdGlvbi5nZXRQb3J0VHlwZXMoKS52YWx1ZXMoKTsKLQkgIENvbGxlY3Rpb24gbWVzc2FnZXMgPSBkZWZpbml0aW9uLmdldE1lc3NhZ2VzKCkudmFsdWVzKCk7Ci0KLQkgIC8vIFRoZSBXUy1JIGNvbmZvcm1hbmNlIHRvb2xzIHJlcXVpcmUgdGhhdCBlYWNoIHNlcnZpY2UgYmUgYW5hbHl6ZWQgc2VwYXJhdGVseS4KLQkgIC8vIEdldCBhbGwgdGhlIHNlcnZpY2VzIGFuZCBhbmFseXplIHRoZW0uCi0JICBpZiAoc2VydmljZXMgIT0gbnVsbCAmJiAhc2VydmljZXMuaXNFbXB0eSgpKQotCSAgewotCSAgICBJdGVyYXRvciBzZXJ2aWNlSXRlcmF0b3IgPSBzZXJ2aWNlcy5pdGVyYXRvcigpOwotCi0JICAgIHdoaWxlIChzZXJ2aWNlSXRlcmF0b3IuaGFzTmV4dCgpKQotCSAgICB7Ci0JICAgICAgU2VydmljZSBzZXJ2aWNlID0gKFNlcnZpY2UpIHNlcnZpY2VJdGVyYXRvci5uZXh0KCk7Ci0KLQkgICAgICBTdHJpbmcgc2VydmljZW5hbWUgPSBzZXJ2aWNlLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0KLQkgICAgICBDb2xsZWN0aW9uIHBvcnRzID0gc2VydmljZS5nZXRQb3J0cygpLnZhbHVlcygpOwotCSAgICAgIGlmIChwb3J0cyAhPSBudWxsICYmICFwb3J0cy5pc0VtcHR5KCkpCi0JICAgICAgewotCSAgICAgICAgLy8gVGhlIFdTLUkgdG9vbHMgbXVzdCBiZSBjYWxsZWQgb25jZSBmb3IgZWFjaCBwb3J0IHdpdGhpbiBlYWNoIHNlcnZpY2UuCi0JICAgICAgICBJdGVyYXRvciBwb3J0SXRlcmF0b3IgPSBwb3J0cy5pdGVyYXRvcigpOwotCSAgICAgICAgd2hpbGUgKHBvcnRJdGVyYXRvci5oYXNOZXh0KCkpCi0JICAgICAgICB7Ci0JICAgICAgICAgIFBvcnQgcG9ydCA9IChQb3J0KSBwb3J0SXRlcmF0b3IubmV4dCgpOwotCQkJICBhbmFseXplci5hZGRDb25maWd1cmF0aW9uVG9UZXN0KHNlcnZpY2VuYW1lLCBuYW1lc3BhY2UsIHBvcnQuZ2V0TmFtZSgpLCBXU0RMQW5hbHl6ZXIuUE9SVCk7Ci0JICAgICAgICB9Ci0JICAgICAgfQotCSAgICAgIC8vIHZhbGlkYXRlIGF0IHRoZSBiaW5kaW5nIGxldmVsIC0gY2hlY2sgZm9yIGV2ZXJ5IGJpbmRpbmcKLQkgICAgICBlbHNlIGlmIChiaW5kaW5ncyAhPSBudWxsICYmICFiaW5kaW5ncy5pc0VtcHR5KCkpCi0JICAgICAgewotCSAgICAgICAgSXRlcmF0b3IgYmluZGluZ0l0ZXJhdG9yID0gYmluZGluZ3MuaXRlcmF0b3IoKTsKLQotCSAgICAgICAgd2hpbGUgKGJpbmRpbmdJdGVyYXRvci5oYXNOZXh0KCkpCi0JICAgICAgICB7Ci0JICAgICAgICAgIEJpbmRpbmcgYmluZGluZyA9IChCaW5kaW5nKSBiaW5kaW5nSXRlcmF0b3IubmV4dCgpOwotCSAgICAgICAgICBTdHJpbmcgYmluZGluZ25hbWUgPSBiaW5kaW5nLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgICAgICAgIGFuYWx5emVyLmFkZENvbmZpZ3VyYXRpb25Ub1Rlc3QobnVsbCwgbmFtZXNwYWNlLCBiaW5kaW5nbmFtZSwgV1NETEFuYWx5emVyLkJJTkRJTkcpOwotCSAgICAgICAgfQotCSAgICAgIH0KLQkgICAgICAvLyB2YWxpZGF0ZSBhdCB0aGUgcG9ydFR5cGUgbGV2ZWwgLSBjaGVjayBmb3IgZXZlcnkgcG9ydFR5cGUKLQkgICAgICBlbHNlIGlmIChwb3J0VHlwZXMgIT0gbnVsbCAmJiAhcG9ydFR5cGVzLmlzRW1wdHkoKSkKLQkgICAgICB7Ci0JICAgICAgICBJdGVyYXRvciBwb3J0VHlwZUl0ZXJhdG9yID0gcG9ydFR5cGVzLml0ZXJhdG9yKCk7Ci0JICAgICAgICB3aGlsZSAocG9ydFR5cGVJdGVyYXRvci5oYXNOZXh0KCkpCi0JICAgICAgICB7Ci0JICAgICAgICAgIFBvcnRUeXBlIHBvcnRUeXBlID0gKFBvcnRUeXBlKSBwb3J0VHlwZUl0ZXJhdG9yLm5leHQoKTsKLQkgICAgICAgICAgU3RyaW5nIHBvcnRUeXBlbmFtZSA9IHBvcnRUeXBlLmdldFFOYW1lKCkuZ2V0TG9jYWxQYXJ0KCk7Ci0gICAgICAgICAgICAgIGFuYWx5emVyLmFkZENvbmZpZ3VyYXRpb25Ub1Rlc3QobnVsbCwgbmFtZXNwYWNlLCBwb3J0VHlwZW5hbWUsIFdTRExBbmFseXplci5QT1JUVFlQRSk7Ci0JICAgICAgICB9Ci0JICAgICAgfQotCSAgICAgIC8vIHZhbGlkYXRlIGF0IHRoZSBtZXNzYWdlIGxldmVsIC0gY2hlY2sgZm9yIGV2ZXJ5IG1lc3NhZ2UKLQkgICAgICBlbHNlIGlmIChtZXNzYWdlcyAhPSBudWxsICYmICFtZXNzYWdlcy5pc0VtcHR5KCkpCi0JICAgICAgewotCSAgICAgICAgSXRlcmF0b3IgbWVzc2FnZUl0ZXJhdG9yID0gbWVzc2FnZXMuaXRlcmF0b3IoKTsKLQkgICAgICAgIHdoaWxlIChtZXNzYWdlSXRlcmF0b3IuaGFzTmV4dCgpKQotCSAgICAgICAgewotCSAgICAgICAgICBNZXNzYWdlIG1lc3NhZ2UgPSAoTWVzc2FnZSkgbWVzc2FnZUl0ZXJhdG9yLm5leHQoKTsKLQkgICAgICAgICAgU3RyaW5nIG1lc3NhZ2VuYW1lID0gbWVzc2FnZS5nZXRRTmFtZSgpLmdldExvY2FsUGFydCgpOwotICAgICAgICAgICAgICBhbmFseXplci5hZGRDb25maWd1cmF0aW9uVG9UZXN0KG51bGwsIG5hbWVzcGFjZSwgbWVzc2FnZW5hbWUsIFdTRExBbmFseXplci5NRVNTQUdFKTsKLQkgICAgICAgIH0KLQkgICAgICB9Ci0JICAgIH0KLQkgIH0KLSAgICB9Ci0JY2F0Y2ggKEV4Y2VwdGlvbiBlKQotCXsKLSAgICAgIGZhaWwoIlVuZXhwZWN0ZWQgcHJvYmxlbXMgc2V0dGluZyBjb25maWd1cmF0aW9ucyIpOwotCX0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9NZXNzYWdlTG9nQ29uZm9ybWFuY2VBUFRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvTWVzc2FnZUxvZ0NvbmZvcm1hbmNlQVBUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExOGQzOGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9NZXNzYWdlTG9nQ29uZm9ybWFuY2VBUFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy5pbnRlcm5hbDsKLQotLyoqCi0gKiBKVW5pdCB0ZXN0cyB0aGF0IHRlc3QgbWVzc2FnZSBsb2dzIGFnYWluc3QgdGhlIFdTLUkgQXR0YWNobWVudHMgcHJvZmlsZS4KLSAqLwotcHVibGljIGNsYXNzIE1lc3NhZ2VMb2dDb25mb3JtYW5jZUFQVGVzdCBleHRlbmRzIENvcmVNZXNzYWdlTG9nQ29uZm9ybWFuY2VUZXN0IHsKLQotICAgIHB1YmxpYyBNZXNzYWdlTG9nQ29uZm9ybWFuY2VBUFRlc3QoU3RyaW5nIG5hbWUpIHsKLSAgICAgICAgc3VwZXIobmFtZSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdGVzdF8xMzA5XzEoKSB7IHJ1blRlc3QoImJwIiwgIjEzMDktMSIsIFRBRF9JRF9BUCk7IH0gCi0gICAgcHVibGljIHZvaWQgdGVzdF8xMzA5XzIoKSB7IHJ1blRlc3QoImJwIiwgIjEzMDktMiIsIFRBRF9JRF9BUCk7IH0gCi0gICAgcHVibGljIHZvaWQgdGVzdF8xNjAwXzEoKSB7IHJ1blRlc3QoImJwIiwgIjE2MDAtMSIsIFRBRF9JRF9BUCk7IH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvTWVzc2FnZUxvZ0NvbmZvcm1hbmNlU09BUDEyVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9NZXNzYWdlTG9nQ29uZm9ybWFuY2VTT0FQMTJUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjOWIzM2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9NZXNzYWdlTG9nQ29uZm9ybWFuY2VTT0FQMTJUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLmludGVybmFsOwotCi0KLS8qKgotICogSlVuaXQgdGVzdHMgdGhhdCB0ZXN0IG1lc3NhZ2UgbG9ncyBhZ2FpbnN0IHRoZSBXUy1JIEF0dGFjaG1lbnRzIHByb2ZpbGUuCi0gKi8KLXB1YmxpYyBjbGFzcyBNZXNzYWdlTG9nQ29uZm9ybWFuY2VTT0FQMTJUZXN0IGV4dGVuZHMgQ29yZU1lc3NhZ2VMb2dDb25mb3JtYW5jZVRlc3QgewotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9MT0dfRklMRU5BTUUgPSAibG9nLndzaW1zZyI7Ci0JCi0gICAgcHVibGljIE1lc3NhZ2VMb2dDb25mb3JtYW5jZVNPQVAxMlRlc3QoU3RyaW5nIG5hbWUpIHsKLSAgICAgICAgc3VwZXIobmFtZSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdGVzdF9TT0FQKCkgeyBydW5UZXN0V2l0aFdTREwoIlNPQVAxMiIsICJTaW1wbGVMb2ciLCBuZXcgU3RyaW5nW10geyJIZWxsbyIsICJodHRwOi8vdGVzdC8iLCAiSGVsbG9TZXJ2aWNlIiwgInBvcnQifSk7IH0gCi0KLSAgIAotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9NZXNzYWdlTG9nQ29uZm9ybWFuY2VTU0JQVGVzdC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9NZXNzYWdlTG9nQ29uZm9ybWFuY2VTU0JQVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTM5MjdlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvTWVzc2FnZUxvZ0NvbmZvcm1hbmNlU1NCUFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy5pbnRlcm5hbDsKLQotLyoqCi0gKiBKVW5pdCB0ZXN0cyB0aGF0IHRlc3QgbWVzc2FnZSBsb2dzIGFnYWluc3QgdGhlIFdTLUkgU2ltcGxlIFNvYXAgQmluZGluZwotICogcHJvZmlsZS4KLSAqLwotcHVibGljIGNsYXNzIE1lc3NhZ2VMb2dDb25mb3JtYW5jZVNTQlBUZXN0IGV4dGVuZHMKLSAgICAgICAgQ29yZU1lc3NhZ2VMb2dDb25mb3JtYW5jZVRlc3QgewotCi0gICAgcHVibGljIE1lc3NhZ2VMb2dDb25mb3JtYW5jZVNTQlBUZXN0KFN0cmluZyBuYW1lKSB7Ci0gICAgICAgIHN1cGVyKG5hbWUpOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgdm9pZCB0ZXN0XzEzMDlfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMTMwOS0xIiwgVEFEX0lEX1NTQlApOyB9IAotICAgIHB1YmxpYyB2b2lkIHRlc3RfMTMwOV8yKCkgeyBydW5UZXN0KCJicCIsICIxMzA5LTIiLCBUQURfSURfU1NCUCk7IH0gCi0gICAgcHVibGljIHZvaWQgdGVzdF8xNjAwXzEoKSB7IHJ1blRlc3QoImJwIiwgIjE2MDAtMSIsIFRBRF9JRF9TU0JQKTsgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9NZXNzYWdlTG9nQ29uZm9ybWFuY2VTZWN1cmVXU1Rlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvTWVzc2FnZUxvZ0NvbmZvcm1hbmNlU2VjdXJlV1NUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjM2MwZDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9NZXNzYWdlTG9nQ29uZm9ybWFuY2VTZWN1cmVXU1Rlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdHMuaW50ZXJuYWw7Ci0KLQotLyoqCi0gKiBKVW5pdCB0ZXN0cyB0aGF0IHRlc3QgbWVzc2FnZSBsb2dzIGFnYWluc3QgdGhlIFdTLUkgQXR0YWNobWVudHMgcHJvZmlsZS4KLSAqLwotcHVibGljIGNsYXNzIE1lc3NhZ2VMb2dDb25mb3JtYW5jZVNlY3VyZVdTVGVzdCBleHRlbmRzIENvcmVNZXNzYWdlTG9nQ29uZm9ybWFuY2VUZXN0IHsKLQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfTE9HX0ZJTEVOQU1FID0gImxvZy53c2ltc2ciOwotCQotICAgIHB1YmxpYyBNZXNzYWdlTG9nQ29uZm9ybWFuY2VTZWN1cmVXU1Rlc3QoU3RyaW5nIG5hbWUpIHsKLSAgICAgICAgc3VwZXIobmFtZSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdGVzdF9TZWN1cmVXU19Ob1NlY3VyaXkoKSB7IHJ1blRlc3RXaXRoV1NETCgiU2VjdXJlV1MiLCAiTm9TZWN1cml0eSIsIG5ldyBTdHJpbmdbXSB7IldlYlNlcnZpY2UiLCAiaHR0cDovL21haW4iLCAiV2ViU2VydmljZVNlcnZpY2UiLCAicG9ydCJ9KTsgfSAKLQotICAgIHB1YmxpYyB2b2lkIHRlc3RfU2VjdXJlV1NfU2lnbmF0dXJlKCkgeyBydW5UZXN0V2l0aFdTREwoIlNlY3VyZVdTIiwgIlNpZ25hdHVyZSIsIG5ldyBTdHJpbmdbXSB7IldlYlNlcnZpY2UiLCAiaHR0cDovL21haW4iLCAiV2ViU2VydmljZVNlcnZpY2UiLCAicG9ydCJ9KTsgfSAKLSAgICAKLSAgICBwdWJsaWMgdm9pZCB0ZXN0X1NlY3VyZVdTX0VuY3J5cHRpb24oKSB7IHJ1blRlc3RXaXRoV1NETCgiU2VjdXJlV1MiLCAiRW5jcnlwdGlvbiIsIG5ldyBTdHJpbmdbXSB7IldlYlNlcnZpY2UiLCAiaHR0cDovL21haW4iLCAiV2ViU2VydmljZVNlcnZpY2UiLCAicG9ydCJ9KTsgfQotICAgICAgIAotICAgIHB1YmxpYyB2b2lkIHRlc3RfU2VjdXJlV1NfU2lnbmF0dXJlQW5kRW5jcnlwdGlvbigpIHsgcnVuVGVzdFdpdGhXU0RMKCJTZWN1cmVXUyIsICJTaWduYXR1cmVBbmRFbmNyeXB0aW9uIiwgbmV3IFN0cmluZ1tdIHsiV2ViU2VydmljZSIsICJodHRwOi8vbWFpbiIsICJXZWJTZXJ2aWNlU2VydmljZSIsICJwb3J0In0pOyB9IAotICAgIAotCi0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9SZWdyZXNzaW9uQnVja2V0LmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3Rlc3RzL2ludGVybmFsL1JlZ3Jlc3Npb25CdWNrZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QwMzRkNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3Rlc3RzL2ludGVybmFsL1JlZ3Jlc3Npb25CdWNrZXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdHMuaW50ZXJuYWw7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LndzaS5pbnRlcm5hbC5XU0lUZXN0VG9vbHNQcm9wZXJ0aWVzOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLS8qKgotICogSlVuaXQgdGVzdHMgdGhhdCBydW5zIGFsbCBvZiB0aGUgdGVzdHMgaW1wbGVtZW50ZWQgCi0gKiBpbiB0aGlzIHBsdWdpbi4KLSAqIAotICogQGF1dGhvciBsYXV6b25kCi0gKi8KLXB1YmxpYyBjbGFzcyBSZWdyZXNzaW9uQnVja2V0IGV4dGVuZHMgVGVzdFN1aXRlIHsKLQotCSAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgCi0JICB7Ci0JICAgIFRlc3RTdWl0ZSBzdWl0ZT0gbmV3IFRlc3RTdWl0ZSgiUmVncmVzc2lvbiBCdWNrZXQiKTsKLQkgICAgaWYgKHRhZElzQXZhaWxhYmxlKFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuU1NCUF9BU1NFUlRJT05fRklMRSkpIHsKLSAgICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChuZXcgVGVzdFN1aXRlKFdTRExDb25mb3JtYW5jZVNTQlBUZXN0LmNsYXNzKSk7Ci0gICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobmV3IFRlc3RTdWl0ZShNZXNzYWdlTG9nQ29uZm9ybWFuY2VTU0JQVGVzdC5jbGFzcykpOwotICAgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KG5ldyBUZXN0U3VpdGUoTWVzc2FnZUxvZ0NvbmZvcm1hbmNlU2VjdXJlV1NUZXN0LmNsYXNzKSk7Ci0gICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobmV3IFRlc3RTdWl0ZShNZXNzYWdlTG9nQ29uZm9ybWFuY2VTT0FQMTJUZXN0LmNsYXNzKSk7Ci0gICAgICAgIH0KLQkgICAgaWYgKHRhZElzQXZhaWxhYmxlKFdTSVRlc3RUb29sc1Byb3BlcnRpZXMuQVBfQVNTRVJUSU9OX0ZJTEUpKSB7Ci0gICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobmV3IFRlc3RTdWl0ZShXU0RMQ29uZm9ybWFuY2VBUFRlc3QuY2xhc3MpKTsKLSAgICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChuZXcgVGVzdFN1aXRlKE1lc3NhZ2VMb2dDb25mb3JtYW5jZUFQVGVzdC5jbGFzcykpOwotICAgICAgICB9Ci0JICAgIAotCSAgICBzdWl0ZS5hZGRUZXN0KG5ldyBUZXN0U3VpdGUoQmFzaWNQcm9maWxlQW5hbHl6ZXJUZXN0LmNsYXNzKSk7Ci0JICAgIAotCSAgICByZXR1cm4gc3VpdGU7Ci0JICB9Ci0JICAKLQkgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiB0YWRJc0F2YWlsYWJsZShTdHJpbmcgdGFkVVJJKQotCSAgewotCQlib29sZWFuIHJlc3VsdCA9IHRydWU7Ci0JCUlucHV0U3RyZWFtIGlzID0gbnVsbDsKLQkJdHJ5Ci0JCXsKLQkJICBVUkwgdXJsID0gbmV3IFVSTCh0YWRVUkkpOwotCQkgIGlzID0gdXJsLm9wZW5TdHJlYW0oKTsKLQkJICBpcy5jbG9zZSgpOwotCQl9Ci0JCWNhdGNoIChJT0V4Y2VwdGlvbiBlKQotCQl7Ci0JCSAgcmVzdWx0ID0gZmFsc2U7Ci0JCX0KLQkgICAgcmV0dXJuIHJlc3VsdDsKLQkgIH0KLQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9XU0RMQ29uZm9ybWFuY2VBUFRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvV1NETENvbmZvcm1hbmNlQVBUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NTgzYjQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3dzaS90ZXN0cy9pbnRlcm5hbC9XU0RMQ29uZm9ybWFuY2VBUFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAwMSwgMjAwOSBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSogCi0qIENvbnRyaWJ1dG9yczoKLSogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy5pbnRlcm5hbDsKLS8qKgotICogSlVuaXQgdGVzdHMgdGhhdCB0ZXN0IHdzZGwgZG9jdW1lbnRzIGFnYWluc3QgCi0gKiB0aGUgV1MtSSBBdHRhY2htZW50cyBwcm9maWxlLgotICogCi0gKiBAYXV0aG9yIGxhdXpvbmQKLSAqLwotcHVibGljIGNsYXNzIFdTRExDb25mb3JtYW5jZUFQVGVzdCBleHRlbmRzIENvcmVXU0RMQ29uZm9ybWFuY2VUZXN0IAotewotICBwdWJsaWMgV1NETENvbmZvcm1hbmNlQVBUZXN0KFN0cmluZyBuYW1lKQotICB7Ci0gICAgc3VwZXIobmFtZSk7Ci0gIH0KLS8vd3MtaSB3c2RscwotICBwdWJsaWMgdm9pZCB0ZXN0X2FkZHJlc3NCb29rKCkgeyBydW5UZXN0KCJ3c2kiLCAiYWRkcmVzc0Jvb2siLCBUQURfSURfQVApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfYWRkcmVzc0Jvb2tfcnBjKCkgeyBydW5UZXN0KCJ3c2kiLCAiYWRkcmVzc0Jvb2stcnBjIiwgVEFEX0lEX0FQKTsgfQotIC8vIHB1YmxpYyB2b2lkIHRlc3Rfc2FtcGxlQXBwQ2F0YWxvZygpIHsgcnVuVGVzdCgid3NpIiwgInNhbXBsZUFwcENhdGFsb2ciLCBUQURfSURfQVApOyB9ICAKLSAgcHVibGljIHZvaWQgdGVzdF9zYW1wbGVBcHBNYW51ZmFjdHVyZXIoKSB7IHJ1blRlc3QoIndzaSIsICJzYW1wbGVBcHBNYW51ZmFjdHVyZXIiLCBUQURfSURfQVApOyB9ICAKLSAgcHVibGljIHZvaWQgdGVzdF9zYW1wbGVBcHBXYXJlaG91c2UoKSB7IHJ1blRlc3QoIndzaSIsICJzYW1wbGVBcHBXYXJlaG91c2UiLCBUQURfSURfQVApOyB9IAotCi0gIC8vIGJwIHRlc3RzCi0gIHB1YmxpYyB2b2lkIHRlc3RfMjAxMl8xKCkgeyBydW5UZXN0KCJicCIsICIyMDEyLTEiLCBUQURfSURfQVApOyB9IAotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTNfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxMy0xIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTRfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxNC0xIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTRfMigpIHsgcnVuVGVzdCgiYnAiLCAiMjAxNC0yIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTRfMygpIHsgcnVuVGVzdCgiYnAiLCAiMjAxNC0zIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTdfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxNy0xIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTdfMigpIHsgcnVuVGVzdCgiYnAiLCAiMjAxNy0yIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMThfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOC0xIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMThfMigpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOC0yIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMThfMygpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOC0zIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMThfNCgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOC00IiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTlfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOS0xIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTlfMigpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOS0yIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTlfMygpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOS0zIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTlfNCgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOS00IiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMjBfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjAyMC0xIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMjBfMigpIHsgcnVuVGVzdCgiYnAiLCAiMjAyMC0yIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIxMDVfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjEwNS0xIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIxMDVfMigpIHsgcnVuVGVzdCgiYnAiLCAiMjEwNS0yIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIxMTdfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjExNy0xIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIxMTdfMigpIHsgcnVuVGVzdCgiYnAiLCAiMjExNy0yIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIxMTdfMygpIHsgcnVuVGVzdCgiYnAiLCAiMjExNy0zIiwgVEFEX0lEX0FQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzI0MDZfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjQwNi0xIiwgVEFEX0lEX0FQKTsgfQotCi0gIC8vIGFwIHRlc3RzCi0gIHB1YmxpYyB2b2lkIHRlc3RfMjk0MV8xKCkgeyBydW5UZXN0KCJhcCIsICIyOTQxLTEiLCBUQURfSURfQVApOyB9IAotCi0gIC8vIHJlZHVuZGFudCB0ZXN0cyAtLSBhc3NlcnRpb25zIGZhaWx1cmVzIGNhdWdodCBieSBiYXNlIHdzZGwgdmFsaWRhdG9yLgotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTBfMSgpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMTAtMSIsIFRBRF9JRF9BUCk7IH0KLSAgcHVibGljIHZvaWQgdGVzdF8yMDExXzEoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDExLTEiLCBUQURfSURfQVApOyB9IAotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTFfMigpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMTEtMiIsIFRBRF9JRF9BUCk7IH0gCi0gIHB1YmxpYyB2b2lkIHRlc3RfMjAxMV8zKCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAxMS0zIiwgVEFEX0lEX0FQKTsgfSAKLSAgLy9wdWJsaWMgdm9pZCB0ZXN0XzIwMTFfNCgpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMTEtNCIsIFRBRF9JRF9BUCk7IH0gCi0gIC8vcHVibGljIHZvaWQgdGVzdF8yMDExXzUoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDExLTUiLCBUQURfSURfQVApOyB9IAotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMjFfMSgpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMjEtMSIsIFRBRF9JRF9BUCk7IH0gCi0gIHB1YmxpYyB2b2lkIHRlc3RfMjAyMV8yKCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAyMS0yIiwgVEFEX0lEX0FQKTsgfSAKLSAgcHVibGljIHZvaWQgdGVzdF8yMDIxXzMoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDIxLTMiLCBUQURfSURfQVApOyB9IAotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMjFfNCgpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMjEtNCIsIFRBRF9JRF9BUCk7IH0gCi0gIHB1YmxpYyB2b2lkIHRlc3RfMjAyMV81KCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAyMS01IiwgVEFEX0lEX0FQKTsgfSAKLSAgcHVibGljIHZvaWQgdGVzdF8yMDIxXzYoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDIxLTYiLCBUQURfSURfQVApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjAyMl8xKCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAyMi0xIiwgVEFEX0lEX0FQKTsgfSAKLSAgcHVibGljIHZvaWQgdGVzdF8yMDIyXzIoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDIyLTIiLCBUQURfSURfQVApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjAzMl8xKCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAzMi0xIiwgVEFEX0lEX0FQKTsgfSAKLSAgcHVibGljIHZvaWQgdGVzdF8yMDMyXzIoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDMyLTIiLCBUQURfSURfQVApOyB9IAotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvV1NETENvbmZvcm1hbmNlU1NCUFRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvV1NETENvbmZvcm1hbmNlU1NCUFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRjZjczMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3Rlc3RzL2ludGVybmFsL1dTRExDb25mb3JtYW5jZVNTQlBUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDkgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0qIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0qIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0qIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0qIAotKiBDb250cmlidXRvcnM6Ci0qICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLndzdC53c2kudGVzdHMuaW50ZXJuYWw7Ci0vKioKLSAqIEpVbml0IHRlc3RzIHRoYXQgdGVzdCB3c2RsIGRvY3VtZW50cyBhZ2FpbnN0IAotICogdGhlIFdTLUkgU2ltcGxlIFNvYXAgQmluZGluZyBwcm9maWxlLgotICogCi0gKiBAYXV0aG9yIGxhdXpvbmQKLSAqLwotcHVibGljIGNsYXNzIFdTRExDb25mb3JtYW5jZVNTQlBUZXN0IGV4dGVuZHMgQ29yZVdTRExDb25mb3JtYW5jZVRlc3QgCi17Ci0gIHB1YmxpYyBXU0RMQ29uZm9ybWFuY2VTU0JQVGVzdChTdHJpbmcgbmFtZSkKLSAgewotICAgIHN1cGVyKG5hbWUpOwotICB9Ci0gIC8vIHdzLWkgd3NkbHMKLSAgcHVibGljIHZvaWQgdGVzdF9hZGRyZXNzQm9vaygpIHsgcnVuVGVzdCgid3NpIiwgImFkZHJlc3NCb29rIiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfYWRkcmVzc0Jvb2tfcnBjKCkgeyBydW5UZXN0KCJ3c2kiLCAiYWRkcmVzc0Jvb2stcnBjIiwgVEFEX0lEX1NTQlApOyB9Ci0gIC8vcHVibGljIHZvaWQgdGVzdF9zYW1wbGVBcHBDYXRhbG9nKCkgeyBydW5UZXN0KCJ3c2kiLCAic2FtcGxlQXBwQ2F0YWxvZyIsIFRBRF9JRF9TU0JQKTsgfSAgCi0gIHB1YmxpYyB2b2lkIHRlc3Rfc2FtcGxlQXBwTWFudWZhY3R1cmVyKCkgeyBydW5UZXN0KCJ3c2kiLCAic2FtcGxlQXBwTWFudWZhY3R1cmVyIiwgVEFEX0lEX1NTQlApOyB9ICAKLSAgcHVibGljIHZvaWQgdGVzdF9zYW1wbGVBcHBXYXJlaG91c2UoKSB7IHJ1blRlc3QoIndzaSIsICJzYW1wbGVBcHBXYXJlaG91c2UiLCBUQURfSURfU1NCUCk7IH0gCi0KLSAgLy8gYnAgdGVzdHMKLSAgcHVibGljIHZvaWQgdGVzdF8yMDEyXzEoKSB7IHJ1blRlc3QoImJwIiwgIjIwMTItMSIsIFRBRF9JRF9TU0JQKTsgfSAKLSAgcHVibGljIHZvaWQgdGVzdF8yMDEzXzEoKSB7IHJ1blRlc3QoImJwIiwgIjIwMTMtMSIsIFRBRF9JRF9TU0JQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTRfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxNC0xIiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjAxNF8yKCkgeyBydW5UZXN0KCJicCIsICIyMDE0LTIiLCBUQURfSURfU1NCUCk7IH0KLSAgcHVibGljIHZvaWQgdGVzdF8yMDE0XzMoKSB7IHJ1blRlc3QoImJwIiwgIjIwMTQtMyIsIFRBRF9JRF9TU0JQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTdfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxNy0xIiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjAxN18yKCkgeyBydW5UZXN0KCJicCIsICIyMDE3LTIiLCBUQURfSURfU1NCUCk7IH0KLSAgcHVibGljIHZvaWQgdGVzdF8yMDE4XzEoKSB7IHJ1blRlc3QoImJwIiwgIjIwMTgtMSIsIFRBRF9JRF9TU0JQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMThfMigpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOC0yIiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjAxOF8zKCkgeyBydW5UZXN0KCJicCIsICIyMDE4LTMiLCBUQURfSURfU1NCUCk7IH0KLSAgcHVibGljIHZvaWQgdGVzdF8yMDE4XzQoKSB7IHJ1blRlc3QoImJwIiwgIjIwMTgtNCIsIFRBRF9JRF9TU0JQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTlfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOS0xIiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjAxOV8yKCkgeyBydW5UZXN0KCJicCIsICIyMDE5LTIiLCBUQURfSURfU1NCUCk7IH0KLSAgcHVibGljIHZvaWQgdGVzdF8yMDE5XzMoKSB7IHJ1blRlc3QoImJwIiwgIjIwMTktMyIsIFRBRF9JRF9TU0JQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTlfNCgpIHsgcnVuVGVzdCgiYnAiLCAiMjAxOS00IiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjAyMF8xKCkgeyBydW5UZXN0KCJicCIsICIyMDIwLTEiLCBUQURfSURfU1NCUCk7IH0KLSAgcHVibGljIHZvaWQgdGVzdF8yMDIwXzIoKSB7IHJ1blRlc3QoImJwIiwgIjIwMjAtMiIsIFRBRF9JRF9TU0JQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIxMDVfMSgpIHsgcnVuVGVzdCgiYnAiLCAiMjEwNS0xIiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjEwNV8yKCkgeyBydW5UZXN0KCJicCIsICIyMTA1LTIiLCBUQURfSURfU1NCUCk7IH0KLSAgcHVibGljIHZvaWQgdGVzdF8yMTE3XzEoKSB7IHJ1blRlc3QoImJwIiwgIjIxMTctMSIsIFRBRF9JRF9TU0JQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIxMTdfMigpIHsgcnVuVGVzdCgiYnAiLCAiMjExNy0yIiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjExN18zKCkgeyBydW5UZXN0KCJicCIsICIyMTE3LTMiLCBUQURfSURfU1NCUCk7IH0KLSAgcHVibGljIHZvaWQgdGVzdF8yNDA2XzEoKSB7IHJ1blRlc3QoImJwIiwgIjI0MDYtMSIsIFRBRF9JRF9TU0JQKTsgfQotCi0gIC8vIHJlZHVuZGFudCB0ZXN0cyAtLSBhc3NlcnRpb25zIGZhaWx1cmVzIGNhdWdodCBieSBiYXNlIHdzZGwgdmFsaWRhdG9yLgotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTBfMSgpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMTAtMSIsIFRBRF9JRF9TU0JQKTsgfQotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMTFfMSgpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMTEtMSIsIFRBRF9JRF9TU0JQKTsgfSAKLSAgcHVibGljIHZvaWQgdGVzdF8yMDExXzIoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDExLTIiLCBUQURfSURfU1NCUCk7IH0gCi0gIHB1YmxpYyB2b2lkIHRlc3RfMjAxMV8zKCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAxMS0zIiwgVEFEX0lEX1NTQlApOyB9IAotICAvL3B1YmxpYyB2b2lkIHRlc3RfMjAxMV80KCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAxMS00IiwgVEFEX0lEX1NTQlApOyB9IAotICAvL3B1YmxpYyB2b2lkIHRlc3RfMjAxMV81KCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAxMS01IiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjAyMV8xKCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAyMS0xIiwgVEFEX0lEX1NTQlApOyB9IAotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMjFfMigpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMjEtMiIsIFRBRF9JRF9TU0JQKTsgfSAKLSAgcHVibGljIHZvaWQgdGVzdF8yMDIxXzMoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDIxLTMiLCBUQURfSURfU1NCUCk7IH0gCi0gIHB1YmxpYyB2b2lkIHRlc3RfMjAyMV80KCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAyMS00IiwgVEFEX0lEX1NTQlApOyB9IAotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMjFfNSgpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMjEtNSIsIFRBRF9JRF9TU0JQKTsgfSAKLSAgcHVibGljIHZvaWQgdGVzdF8yMDIxXzYoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDIxLTYiLCBUQURfSURfU1NCUCk7IH0KLSAgcHVibGljIHZvaWQgdGVzdF8yMDIyXzEoKSB7IHJ1blRlc3QoInJlZHVuZGFudCIsICIyMDIyLTEiLCBUQURfSURfU1NCUCk7IH0gCi0gIHB1YmxpYyB2b2lkIHRlc3RfMjAyMl8yKCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAyMi0yIiwgVEFEX0lEX1NTQlApOyB9Ci0gIHB1YmxpYyB2b2lkIHRlc3RfMjAzMl8xKCkgeyBydW5UZXN0KCJyZWR1bmRhbnQiLCAiMjAzMi0xIiwgVEFEX0lEX1NTQlApOyB9IAotICBwdWJsaWMgdm9pZCB0ZXN0XzIwMzJfMigpIHsgcnVuVGVzdCgicmVkdW5kYW50IiwgIjIwMzItMiIsIFRBRF9JRF9TU0JQKTsgfSAKLQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvV1NJVGVzdHNQbHVnaW4uamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC93c2kvdGVzdHMvaW50ZXJuYWwvV1NJVGVzdHNQbHVnaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFmZjNkZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvd3NpL3Rlc3RzL2ludGVybmFsL1dTSVRlc3RzUGx1Z2luLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDA5IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLmludGVybmFsOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5GaWxlTG9jYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGU7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci0KLS8qKgotKiBUaGUgbWFpbiBwbHVnaW4gY2xhc3MgdG8gYmUgdXNlZCBpbiB0aGUgZGVza3RvcC4KLSovCi1wdWJsaWMgY2xhc3MgV1NJVGVzdHNQbHVnaW4gZXh0ZW5kcyBQbHVnaW4KLXsKLSAvL1RoZSBzaGFyZWQgaW5zdGFuY2UuCi0gcHJpdmF0ZSBzdGF0aWMgV1NJVGVzdHNQbHVnaW4gcGx1Z2luOwotIHByaXZhdGUgc3RhdGljIEJ1bmRsZSBwbHVnaW5CdW5kbGUgPSBudWxsOwotCi0gLyoqCi0gICogVGhlIGNvbnN0cnVjdG9yLgotICAqLwotIHB1YmxpYyBXU0lUZXN0c1BsdWdpbigpCi0gewotICAgc3VwZXIoKTsKLSAgIHBsdWdpbiA9IHRoaXM7Ci0gfQotCi0gLyoqCi0gICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHVwb24gcGx1Zy1pbiBhY3RpdmF0aW9uCi0gICovCi0gcHVibGljIHZvaWQgc3RhcnQoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uCi0gewotICAgc3VwZXIuc3RhcnQoY29udGV4dCk7Ci0JcGx1Z2luQnVuZGxlID0gY29udGV4dC5nZXRCdW5kbGUoKTsKLSB9Ci0KLSAvKioKLSAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgcGx1Zy1pbiBpcyBzdG9wcGVkCi0gICovCi0gcHVibGljIHZvaWQgc3RvcChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24KLSB7Ci0gICBzdXBlci5zdG9wKGNvbnRleHQpOwotIH0KLQotIC8qKgotICAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZS4KLSAgKi8KLSBwdWJsaWMgc3RhdGljIFdTSVRlc3RzUGx1Z2luIGdldERlZmF1bHQoKQotIHsKLSAgIHJldHVybiBwbHVnaW47Ci0gfQotIAotIC8qKgotICAqIEdldCB0aGUgaW5zdGFsbCBVUkwgb2YgdGhpcyBwbHVnaW4uCi0gICogCi0gICogQHJldHVybiB0aGUgaW5zdGFsbCB1cmwgb2YgdGhpcyBwbHVnaW4KLSAgKi8KLSBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRJbnN0YWxsVVJMKCkKLSB7Ci0gICB0cnkKLSAgIHsKLSAgICAgcmV0dXJuIEZpbGVMb2NhdG9yLnJlc29sdmUocGx1Z2luQnVuZGxlLmdldEVudHJ5KCIvIikpLmdldEZpbGUoKTsgLy8kTk9OLU5MUy0xJAotICAgfQotICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0gICB7Ci0gICAgIHJldHVybiBudWxsOwotICAgfQotIH0KLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdC54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3QueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmU4YWQ5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4KLQotPHByb2plY3QgbmFtZT0idGVzdHN1aXRlIiBkZWZhdWx0PSJydW4iIGJhc2VkaXI9Ii4iPgotCTwhLS0gVGhlIHByb3BlcnR5ICR7ZWNsaXBzZS1ob21lfSBzaG91bGQgYmUgcGFzc2VkIGludG8gdGhpcyBzY3JpcHQgLS0+Ci0JPCEtLSBTZXQgYSBtZWFuaW5nZnVsIGRlZmF1bHQgdmFsdWUgZm9yIHdoZW4gaXQgaXMgbm90LiAtLT4KLQk8IS0tIDxwcm9wZXJ0eSBuYW1lPSJlY2xpcHNlLWhvbWUiIHZhbHVlPSIke2Jhc2VkaXJ9XC4uXC4uIiAvPiAtLT4KLQkJCi0JCTxlY2hvIG1lc3NhZ2U9ImJhc2VkaXIgJHtiYXNlZGlyfSIgLz4KLQkJPGVjaG8gbWVzc2FnZT0iZWNsaXBzZSBwbGFjZSAke2VjbGlwc2UtaG9tZX0iIC8+Ci0JCi0JPCEtLSBzZXRzIHRoZSBwcm9wZXJ0aWVzIHBsdWdpbi1uYW1lLCBhbmQgbGlicmFyeS1maWxlIC0tPgotCTxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9Im9yZy5lY2xpcHNlLndzdC53c2kudGVzdHMiIC8+Ci0JPHByb3BlcnR5IG5hbWU9ImxpYnJhcnktZmlsZSIgdmFsdWU9IiR7ZWNsaXBzZS1ob21lfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRlc3RfMy4xLjAvbGlicmFyeS54bWwiIC8+Ci0KLQk8IS0tIFRoaXMgdGFyZ2V0IGhvbGRzIGFsbCBpbml0aWFsaXphdGlvbiBjb2RlIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBmb3IgLS0+Ci0JPCEtLSBhbGwgdGVzdHMgdGhhdCBhcmUgdG8gYmUgcnVuLiBJbml0aWFsaXphdGlvbiBmb3IgaW5kaXZpZHVhbCB0ZXN0cyAtLT4KLQk8IS0tIHNob3VsZCBiZSBkb25lIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgc3VpdGUgdGFyZ2V0LiAtLT4KLQk8dGFyZ2V0IG5hbWU9ImluaXQiPgotCQk8dHN0YW1wLz4KLQkJPGRlbGV0ZT4KLQkJCTxmaWxlc2V0IGRpcj0iJHtlY2xpcHNlLWhvbWV9IiBpbmNsdWRlcz0ib3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy4qeG1sIiAvPgotCQk8L2RlbGV0ZT4KLQk8L3RhcmdldD4KLQotCTwhLS0gVGhpcyB0YXJnZXQgZGVmaW5lcyB0aGUgdGVzdHMgdGhhdCBuZWVkIHRvIGJlIHJ1bi4gLS0+Ci0JPHRhcmdldCBuYW1lPSJzdWl0ZSI+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJ3c3QtZm9sZGVyIiB2YWx1ZT0iJHtlY2xpcHNlLWhvbWV9L3dzdF9mb2xkZXIiLz4KLQkJPGRlbGV0ZSBkaXI9IiR7d3N0LWZvbGRlcn0iIHF1aWV0PSJ0cnVlIi8+Ci0gICAgCTxhbnQgdGFyZ2V0PSJjb3JlLXRlc3QiIGFudGZpbGU9IiR7bGlicmFyeS1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotICAgICAgCQk8cHJvcGVydHkgbmFtZT0iZGF0YS1kaXIiIHZhbHVlPSIke3dzdC1mb2xkZXJ9Ii8+Ci0gICAgICAJCTxwcm9wZXJ0eSBuYW1lPSJwbHVnaW4tbmFtZSIgdmFsdWU9IiR7cGx1Z2luLW5hbWV9Ii8+Ci0gICAgICAJCTxwcm9wZXJ0eSBuYW1lPSJjbGFzc25hbWUiIHZhbHVlPSJvcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzLmludGVybmFsLlJlZ3Jlc3Npb25CdWNrZXQiIC8+Ci0gICAJCQk8cHJvcGVydHkgbmFtZT0icGx1Z2luLXBhdGgiIHZhbHVlPSIke2VjbGlwc2UtaG9tZX0vcGx1Z2lucy8ke3BsdWdpbi1uYW1lfSIvPgotICAgIAk8L2FudD4KLQk8L3RhcmdldD4KLQotCTwhLS0gVGhpcyB0YXJnZXQgaG9sZHMgY29kZSB0byBjbGVhbnVwIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50IGFmdGVyIC0tPgotCTwhLS0gYWZ0ZXIgYWxsIG9mIHRoZSB0ZXN0cyBoYXZlIGJlZW4gcnVuLiBZb3UgY2FuIHVzZSB0aGlzIHRhcmdldCB0byAtLT4KLQk8IS0tIGRlbGV0ZSB0ZW1wb3JhcnkgZmlsZXMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZC4gLS0+Ci0JPHRhcmdldCBuYW1lPSJjbGVhbnVwIj4KLQkJPCEtLTxkZWxldGUgZGlyPSIke3dvcmtzcGFjZX0iIHF1aWV0PSJ0cnVlIiAvPi0tPgotCTwvdGFyZ2V0PgotCi0JPCEtLSBUaGlzIHRhcmdldCBydW5zIHRoZSB0ZXN0IHN1aXRlLiBBbnkgYWN0aW9ucyB0aGF0IG5lZWQgdG8gaGFwcGVuIC0tPgotCTwhLS0gYWZ0ZXIgYWxsIHRoZSB0ZXN0cyBoYXZlIGJlZW4gcnVuIHNob3VsZCBnbyBoZXJlLiAtLT4KLQk8dGFyZ2V0IG5hbWU9InJ1biIgZGVwZW5kcz0iaW5pdCxzdWl0ZSxjbGVhbnVwIj4KLQkJPGFudCB0YXJnZXQ9ImNvbGxlY3QiIGFudGZpbGU9IiR7bGlicmFyeS1maWxlfSIgZGlyPSIke2VjbGlwc2UtaG9tZX0iPgotCQkJPHByb3BlcnR5IG5hbWU9ImluY2x1ZGVzIiB2YWx1ZT0ib3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy4qeG1sIiAvPgotCQkJPHByb3BlcnR5IG5hbWU9Im91dHB1dC1maWxlIiB2YWx1ZT0iJHtwbHVnaW4tbmFtZX0ueG1sIiAvPgotCQk8L2FudD4KLQk8L3RhcmdldD4KLQotPC9wcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NPQVAxMi9TaW1wbGVMb2cvU2ltcGxlTG9nLndzaW1zZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NPQVAxMi9TaW1wbGVMb2cvU2ltcGxlTG9nLndzaW1zZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc5ZjEwYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9TT0FQMTIvU2ltcGxlTG9nL1NpbXBsZUxvZy53c2ltc2cKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGxvZyB0aW1lc3RhbXA9IjIwMDctMDEtMjRUMTM6MDM6NDAuNTMyIgotICAgIHhtbG5zPSJodHRwOi8vd3d3LndzLWkub3JnL3Rlc3RpbmcvMjAwNC8wNy9sb2cvIgotICAgIHhtbG5zOndzaS1tb25Db25maWc9Imh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDA0LzA3L21vbml0b3JDb25maWcvIgotICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPgotICA8bW9uaXRvciB2ZXJzaW9uPSIxLjAiIHJlbGVhc2VEYXRlPSIyMDAzLTAzLTIwIj4KLSAgICA8aW1wbGVtZW50ZXIgbmFtZT0iSUJNIiBsb2NhdGlvbj0iIi8+Ci0gICAgPGVudmlyb25tZW50PgotICAgICAgPHJ1bnRpbWUgbmFtZT0iSmF2YShUTSkgMiBSdW50aW1lIEVudmlyb25tZW50LCBTdGFuZGFyZCBFZGl0aW9uIiB2ZXJzaW9uPSJwd2kzMmRldi0yMDA2MTAwMmEgKFNSMykiLz4KLSAgICAgIDxvcGVyYXRpbmdTeXN0ZW0gbmFtZT0iV2luZG93cyBYUCIgdmVyc2lvbj0iNS4xIGJ1aWxkIDI2MDAgU2VydmljZSBQYWNrIDIiLz4KLSAgICAgIDx4bWxQYXJzZXIgbmFtZT0iQXBhY2hlIFhlcmNlcyIgdmVyc2lvbj0iWE1MNEogNC40LjYiLz4KLSAgICA8L2Vudmlyb25tZW50PgotICAgIDx3c2ktbW9uQ29uZmlnOmNvbmZpZ3VyYXRpb24+Ci0gICAgPHdzaS1tb25Db25maWc6Y29tbWVudD5Db21tZW50PC93c2ktbW9uQ29uZmlnOmNvbW1lbnQ+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpsb2dGaWxlIHJlcGxhY2U9InRydWUiIGxvY2F0aW9uPSJVUkwiPgotICAgICAgPHdzaS1tb25Db25maWc6YWRkU3R5bGVTaGVldCBocmVmPSJudWxsIiB0eXBlPSJudWxsIiAvPgotICAgIDwvd3NpLW1vbkNvbmZpZzpsb2dGaWxlPgotICAgICAgPHdzaS1tb25Db25maWc6bG9nRHVyYXRpb24+NjAwPC93c2ktbW9uQ29uZmlnOmxvZ0R1cmF0aW9uPgotICAgICAgPHdzaS1tb25Db25maWc6Y2xlYW51cFRpbWVvdXRTZWNvbmRzPjM8L3dzaS1tb25Db25maWc6Y2xlYW51cFRpbWVvdXRTZWNvbmRzPgotICAgICAgPHdzaS1tb25Db25maWc6bWFuSW5UaGVNaWRkbGU+Ci0gICAgICA8L3dzaS1tb25Db25maWc6bWFuSW5UaGVNaWRkbGU+Ci0gICAgPC93c2ktbW9uQ29uZmlnOmNvbmZpZ3VyYXRpb24+Ci0gIDwvbW9uaXRvcj4KLQotPG1lc3NhZ2VFbnRyeSB4c2k6dHlwZT0iaHR0cE1lc3NhZ2VFbnRyeSIgSUQ9IjEiIGNvbnZlcnNhdGlvbklEPSIxIiB0eXBlPSJyZXF1ZXN0IiB0aW1lc3RhbXA9IjIwMDctMDEtMjRUMTM6MDI6NTguMzQyWiI+Ci08bWVzc2FnZUNvbnRlbnQ+Jmx0Oz94bWwgdmVyc2lvbj0mcXVvdDsxLjAmcXVvdDsgZW5jb2Rpbmc9JnF1b3Q7VVRGLTgmcXVvdDs/Jmd0OyZsdDtzb2FwZW52OkVudmVsb3BlIHhtbG5zOnNvYXBlbnY9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwLWVudmVsb3BlJnF1b3Q7Jmd0OyZsdDtzb2FwZW52OkhlYWRlciZndDsmbHQ7L3NvYXBlbnY6SGVhZGVyJmd0OyZsdDtzb2FwZW52OkJvZHkmZ3Q7Jmx0O25zMjpoZWxsbyB4bWxuczpuczI9JnF1b3Q7aHR0cDovL3Rlc3QvJnF1b3Q7Jmd0OyZsdDthcmcwJmd0O2dhYmUmbHQ7L2FyZzAmZ3Q7Jmx0Oy9uczI6aGVsbG8mZ3Q7Jmx0Oy9zb2FwZW52OkJvZHkmZ3Q7Jmx0Oy9zb2FwZW52OkVudmVsb3BlJmd0OzwvbWVzc2FnZUNvbnRlbnQ+Ci08c2VuZGVySG9zdEFuZFBvcnQ+bG9jYWxob3N0OjkwODI8L3NlbmRlckhvc3RBbmRQb3J0PgotPHJlY2VpdmVySG9zdEFuZFBvcnQ+bG9jYWxob3N0OjkwODE8L3JlY2VpdmVySG9zdEFuZFBvcnQ+Ci08aHR0cEhlYWRlcnM+UE9TVCAvdGQxMi9IZWxsb1NlcnZpY2UgSFRUUC8xLjEmI3hkOwotSG9zdDogbG9jYWxob3N0OjkwODEmI3hkOwotQWNjZXB0OiBhcHBsaWNhdGlvbi9zb2FwK3htbCxtdWx0aXBhcnQvcmVsYXRlZCx0ZXh0LyomI3hkOwotVXNlci1BZ2VudDogSUJNIFdlYlNlcnZpY2VzLzEuMCYjeGQ7Ci1DYWNoZS1Db250cm9sOiBuby1jYWNoZSYjeGQ7Ci1QcmFnbWE6IG5vLWNhY2hlJiN4ZDsKLVNPQVBBY3Rpb246ICZxdW90OyZxdW90OyYjeGQ7Ci1Db25uZWN0aW9uOiBLZWVwLUFsaXZlJiN4ZDsKLUNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vc29hcCt4bWw7IGNoYXJzZXQ9VVRGLTgmI3hkOwotQ29udGVudC1MZW5ndGg6IDI1OCYjeGQ7Ci1EYXRlOiBXZWQsIDI0IEphbiAyMDA3IDE4OjAyOjU3IEdNVCYjeGQ7Ci0mI3hkOwotPC9odHRwSGVhZGVycz4KLTwvbWVzc2FnZUVudHJ5PgotPG1lc3NhZ2VFbnRyeSB4c2k6dHlwZT0iaHR0cE1lc3NhZ2VFbnRyeSIgSUQ9IjIiIGNvbnZlcnNhdGlvbklEPSIxIiB0eXBlPSJyZXNwb25zZSIgdGltZXN0YW1wPSIyMDA3LTAxLTI0VDEzOjAyOjU4LjQ3MloiPgotPG1lc3NhZ2VDb250ZW50PiZsdDs/eG1sIHZlcnNpb249JnF1b3Q7MS4wJnF1b3Q7IGVuY29kaW5nPSZxdW90O1VURi04JnF1b3Q7PyZndDsmbHQ7c29hcGVudjpFbnZlbG9wZSB4bWxuczpzb2FwZW52PSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDMvMDUvc29hcC1lbnZlbG9wZSZxdW90OyZndDsmbHQ7c29hcGVudjpIZWFkZXImZ3Q7Jmx0Oy9zb2FwZW52OkhlYWRlciZndDsmbHQ7c29hcGVudjpCb2R5Jmd0OyZsdDtuczI6aGVsbG9SZXNwb25zZSB4bWxuczpuczI9JnF1b3Q7aHR0cDovL3Rlc3QvJnF1b3Q7Jmd0OyZsdDtyZXR1cm4mZ3Q7SGVsbG8sIGdhYmUhJmx0Oy9yZXR1cm4mZ3Q7Jmx0Oy9uczI6aGVsbG9SZXNwb25zZSZndDsmbHQ7L3NvYXBlbnY6Qm9keSZndDsmbHQ7L3NvYXBlbnY6RW52ZWxvcGUmZ3Q7PC9tZXNzYWdlQ29udGVudD4KLTxzZW5kZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6OTA4MTwvc2VuZGVySG9zdEFuZFBvcnQ+Ci08cmVjZWl2ZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6OTA4MjwvcmVjZWl2ZXJIb3N0QW5kUG9ydD4KLTxodHRwSGVhZGVycz5IVFRQLzEuMSAyMDAgT0smI3hkOwotQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9zb2FwK3htbDsgY2hhcnNldD1VVEYtOCYjeGQ7Ci1Db250ZW50LUxhbmd1YWdlOiBlbi1VUyYjeGQ7Ci1TZXQtQ29va2llOiBKU0VTU0lPTklEPTAwMDA1ekZNV1lVd0dsdExhLWpOdU5heHdxMzotMTsgUGF0aD0vJiN4ZDsKLVRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkJiN4ZDsKLURhdGU6IFdlZCwgMjQgSmFuIDIwMDcgMTg6MDI6NTcgR01UJiN4ZDsKLVNlcnZlcjogV2ViU3BoZXJlIEFwcGxpY2F0aW9uIFNlcnZlci82LjEmI3hkOwotRXhwaXJlczogVGh1LCAwMSBEZWMgMTk5NCAxNjowMDowMCBHTVQmI3hkOwotQ2FjaGUtQ29udHJvbDogbm8tY2FjaGU9JnF1b3Q7c2V0LWNvb2tpZSwgc2V0LWNvb2tpZTImcXVvdDsmI3hkOwotJiN4ZDsKLTwvaHR0cEhlYWRlcnM+Ci08L21lc3NhZ2VFbnRyeT4KLTwvbG9nPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU09BUDEyL1NpbXBsZUxvZy90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9TT0FQMTIvU2ltcGxlTG9nL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNmMTJlOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9TT0FQMTIvU2ltcGxlTG9nL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iRW5jcnlwdGlvbiI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXNzYWdlIGxvZyBmaWxlIHRoYXQgY29udGFpbnMgYSBtZXNzYWdlIHdpdGggbm8gc2VjdXJpdHkuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotICAJPGFzc2VydGlvbiBpZD0iQlAxMjAxIiB0YWRJRD0iQVAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMTYwMCIgdGFkSUQ9IkFQMTAiLz4KLQkKLQk8YXNzZXJ0aW9uIGlkPSJCUDEyMDEiIHRhZElEPSJBUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAxNjAwIiB0YWRJRD0iQVAxMCIvPgotCQotCTxhc3NlcnRpb24gaWQ9IkFQMTk0NSIgdGFkSUQ9IkFQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJTU0JQNTEwMSIgdGFkSUQ9IkFQMTAiLz4KLQotCTxhc3NlcnRpb24gaWQ9IkFQMTk0NSIgdGFkSUQ9IkFQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJTU0JQNTEwMSIgdGFkSUQ9IkFQMTAiLz4KLQkKLQotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU2VjdXJlV1MvRW5jcnlwdGlvbi9FbmNyeXB0aW9uLndzaW1zZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL0VuY3J5cHRpb24vRW5jcnlwdGlvbi53c2ltc2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5ODYwNTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU2VjdXJlV1MvRW5jcnlwdGlvbi9FbmNyeXB0aW9uLndzaW1zZworKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08bG9nIHRpbWVzdGFtcD0iMjAwNy0wMS0xNlQxMjoxNTo1OC4zMjUiCi0gICAgeG1sbnM9Imh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDA0LzA3L2xvZy8iCi0gICAgeG1sbnM6d3NpLW1vbkNvbmZpZz0iaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDQvMDcvbW9uaXRvckNvbmZpZy8iCi0gICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Ci0gIDxtb25pdG9yIHZlcnNpb249IjEuMCIgcmVsZWFzZURhdGU9IjIwMDMtMDMtMjAiPgotICAgIDxpbXBsZW1lbnRlciBuYW1lPSJJQk0iIGxvY2F0aW9uPSIiLz4KLSAgICA8ZW52aXJvbm1lbnQ+Ci0gICAgICA8cnVudGltZSBuYW1lPSJKYXZhKFRNKSAyIFJ1bnRpbWUgRW52aXJvbm1lbnQsIFN0YW5kYXJkIEVkaXRpb24iIHZlcnNpb249InB3aTMyZGV2LTIwMDYxMDAyYSAoU1IzKSIvPgotICAgICAgPG9wZXJhdGluZ1N5c3RlbSBuYW1lPSJXaW5kb3dzIFhQIiB2ZXJzaW9uPSI1LjEgYnVpbGQgMjYwMCBTZXJ2aWNlIFBhY2sgMiIvPgotICAgICAgPHhtbFBhcnNlciBuYW1lPSJBcGFjaGUgWGVyY2VzIiB2ZXJzaW9uPSJYTUw0SiA0LjQuNiIvPgotICAgIDwvZW52aXJvbm1lbnQ+Ci0gICAgPHdzaS1tb25Db25maWc6Y29uZmlndXJhdGlvbj4KLSAgICA8d3NpLW1vbkNvbmZpZzpjb21tZW50PkNvbW1lbnQ8L3dzaS1tb25Db25maWc6Y29tbWVudD4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmxvZ0ZpbGUgcmVwbGFjZT0idHJ1ZSIgbG9jYXRpb249IlVSTCI+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzphZGRTdHlsZVNoZWV0IGhyZWY9Im51bGwiIHR5cGU9Im51bGwiIC8+Ci0gICAgPC93c2ktbW9uQ29uZmlnOmxvZ0ZpbGU+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpsb2dEdXJhdGlvbj42MDA8L3dzaS1tb25Db25maWc6bG9nRHVyYXRpb24+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpjbGVhbnVwVGltZW91dFNlY29uZHM+Mzwvd3NpLW1vbkNvbmZpZzpjbGVhbnVwVGltZW91dFNlY29uZHM+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzptYW5JblRoZU1pZGRsZT4KLSAgICAgIDwvd3NpLW1vbkNvbmZpZzptYW5JblRoZU1pZGRsZT4KLSAgICA8L3dzaS1tb25Db25maWc6Y29uZmlndXJhdGlvbj4KLSAgPC9tb25pdG9yPgotCi08bWVzc2FnZUVudHJ5IHhzaTp0eXBlPSJodHRwTWVzc2FnZUVudHJ5IiBJRD0iMSIgY29udmVyc2F0aW9uSUQ9IjEiIHR5cGU9InJlcXVlc3QiIHRpbWVzdGFtcD0iMjAwNy0wMS0xNlQxMDo0NzozMC42NTNaIj4KLTxtZXNzYWdlQ29udGVudD4mbHQ7c29hcGVudjpFbnZlbG9wZSB4bWxuczpzb2FwZW52PSZxdW90O2h0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvJnF1b3Q7IHhtbG5zOnNvYXBlbmM9JnF1b3Q7aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8mcXVvdDsgeG1sbnM6eHNkPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hJnF1b3Q7IHhtbG5zOnhzaT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSZxdW90OyB4bWxuczp3c2E9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwNS8wOC9hZGRyZXNzaW5nJnF1b3Q7Jmd0OyZsdDtzb2FwZW52OkhlYWRlciZndDsmbHQ7d3NzZTpTZWN1cml0eSBzb2FwZW52Om11c3RVbmRlcnN0YW5kPSZxdW90OzEmcXVvdDsgeG1sbnM6d3NzZT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktc2VjZXh0LTEuMC54c2QmcXVvdDsmZ3Q7Jmx0O0VuY3J5cHRlZEtleSB4bWxucz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMmcXVvdDsmZ3Q7Jmx0O0VuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS0xXzUmcXVvdDsvJmd0OyZsdDtkczpLZXlJbmZvIHhtbG5zOmRzPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMmcXVvdDsmZ3Q7Jmx0O3dzc2U6U2VjdXJpdHlUb2tlblJlZmVyZW5jZSZndDsmbHQ7d3NzZTpLZXlJZGVudGlmaWVyIFZhbHVlVHlwZT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXg1MDktdG9rZW4tcHJvZmlsZS0xLjAjWDUwOVN1YmplY3RLZXlJZGVudGlmaWVyJnF1b3Q7Jmd0Oy82MndYT2JFRDd6NmMxeVg3UWt2TjF0aFFkWT0mbHQ7L3dzc2U6S2V5SWRlbnRpZmllciZndDsmbHQ7L3dzc2U6U2VjdXJpdHlUb2tlblJlZmVyZW5jZSZndDsmbHQ7L2RzOktleUluZm8mZ3Q7Jmx0O0NpcGhlckRhdGEmZ3Q7Jmx0O0NpcGhlclZhbHVlJmd0O2pxZG9lS0VLS3FYZ1Fudld6RE8vV3lIUGIzNVVZV1J6end5WEF2U0hGWVRoZzNPOFlNN0hiZllGNUpVQXY4OWJpaThIdVQvNTJvRVhSdkxPZEFGSVBVbFlFMG5SU0grSkNiL3RpbiszWERscW0wSFNiL3BqenhLRzA3NGxsY0hmdHZSemhzSjJSK0NTelhpOXBDb3hHVlRiTFI5TWhjc1d4MWkvVnZEUExaRT0mbHQ7L0NpcGhlclZhbHVlJmd0OyZsdDsvQ2lwaGVyRGF0YSZndDsmbHQ7UmVmZXJlbmNlTGlzdCZndDsmbHQ7RGF0YVJlZmVyZW5jZSBVUkk9JnF1b3Q7I3dzc2VjdXJpdHlfZW5jcnlwdGlvbl9pZF8wJnF1b3Q7LyZndDsmbHQ7L1JlZmVyZW5jZUxpc3QmZ3Q7Jmx0Oy9FbmNyeXB0ZWRLZXkmZ3Q7Jmx0Oy93c3NlOlNlY3VyaXR5Jmd0OyZsdDt3c2E6VG8mZ3Q7aHR0cDovL2xvY2FsaG9zdDo5MDgyL1dlYlByb2plY3RXaXRoRW5jcmlwdGlvbi9zZXJ2aWNlcy9XZWJTZXJ2aWNlJmx0Oy93c2E6VG8mZ3Q7Jmx0O3dzYTpBY3Rpb24mZ3Q7aW5jcmVtZW50Jmx0Oy93c2E6QWN0aW9uJmd0OyZsdDt3c2E6TWVzc2FnZUlEJmd0O3V1aWQ6MkI5NzU3Q0MtMDExMC00MDAwLUUwMDAtMDM1QzA5MUE5REQ5Jmx0Oy93c2E6TWVzc2FnZUlEJmd0OyZsdDsvc29hcGVudjpIZWFkZXImZ3Q7Jmx0O3NvYXBlbnY6Qm9keSZndDsmbHQ7RW5jcnlwdGVkRGF0YSBJZD0mcXVvdDt3c3NlY3VyaXR5X2VuY3J5cHRpb25faWRfMCZxdW90OyBUeXBlPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0NvbnRlbnQmcXVvdDsgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjJnF1b3Q7Jmd0OyZsdDtFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyN0cmlwbGVkZXMtY2JjJnF1b3Q7LyZndDsmbHQ7Q2lwaGVyRGF0YSZndDsmbHQ7Q2lwaGVyVmFsdWUmZ3Q7dmRVNDJzT282L1d2MVYzcm9NSVZwYkp1dmdzSUV4Nm1Pd2xOV0RycjhqZ2tLdjY1VkJDdjJXSU1BU3dIWlZMWlpBcUo0emdpRVY5cnBDWHM3UWorOEdNZm1WUjlWWll2S0s1ajVIRXYxeGJ6QjBIUE9zYTVCQT09Jmx0Oy9DaXBoZXJWYWx1ZSZndDsmbHQ7L0NpcGhlckRhdGEmZ3Q7Jmx0Oy9FbmNyeXB0ZWREYXRhJmd0OyZsdDsvc29hcGVudjpCb2R5Jmd0OyZsdDsvc29hcGVudjpFbnZlbG9wZSZndDs8L21lc3NhZ2VDb250ZW50PgotPHNlbmRlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo5MDgyPC9zZW5kZXJIb3N0QW5kUG9ydD4KLTxyZWNlaXZlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo5MDgwPC9yZWNlaXZlckhvc3RBbmRQb3J0PgotPGh0dHBIZWFkZXJzPlBPU1QgL1dlYlByb2plY3RXaXRoRW5jcmlwdGlvbi9zZXJ2aWNlcy9XZWJTZXJ2aWNlIEhUVFAvMS4xJiN4ZDsKLUhvc3Q6IGxvY2FsaG9zdDo5MDgwJiN4ZDsKLUFjY2VwdDogYXBwbGljYXRpb24vc29hcCt4bWwsbXVsdGlwYXJ0L3JlbGF0ZWQsdGV4dC8qJiN4ZDsKLVVzZXItQWdlbnQ6IElCTSBXZWJTZXJ2aWNlcy8xLjAmI3hkOwotQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUmI3hkOwotUHJhZ21hOiBuby1jYWNoZSYjeGQ7Ci1TT0FQQWN0aW9uOiAmcXVvdDtpbmNyZW1lbnQmcXVvdDsmI3hkOwotQ29ubmVjdGlvbjogS2VlcC1BbGl2ZSYjeGQ7Ci1Db250ZW50LVR5cGU6IHRleHQveG1sOyBjaGFyc2V0PXV0Zi04JiN4ZDsKLUNvbnRlbnQtTGVuZ3RoOiAxODcxJiN4ZDsKLURhdGU6IFR1ZSwgMTYgSmFuIDIwMDcgMTU6NDc6MzAgR01UJiN4ZDsKLSYjeGQ7Ci08L2h0dHBIZWFkZXJzPgotPC9tZXNzYWdlRW50cnk+Ci08bWVzc2FnZUVudHJ5IHhzaTp0eXBlPSJodHRwTWVzc2FnZUVudHJ5IiBJRD0iMiIgY29udmVyc2F0aW9uSUQ9IjEiIHR5cGU9InJlc3BvbnNlIiB0aW1lc3RhbXA9IjIwMDctMDEtMTZUMTA6NDc6MzEuMDc0WiI+Ci08bWVzc2FnZUNvbnRlbnQ+Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczpzb2FwZW5jPSZxdW90O2h0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvJnF1b3Q7IHhtbG5zOnhzZD0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSZxdW90OyB4bWxuczp4c2k9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UmcXVvdDsgeG1sbnM6d3NhPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgvYWRkcmVzc2luZyZxdW90OyZndDsmbHQ7c29hcGVudjpIZWFkZXImZ3Q7Jmx0O3dzc2U6U2VjdXJpdHkgc29hcGVudjptdXN0VW5kZXJzdGFuZD0mcXVvdDsxJnF1b3Q7IHhtbG5zOndzc2U9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkJnF1b3Q7Jmd0OyZsdDtFbmNyeXB0ZWRLZXkgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjJnF1b3Q7Jmd0OyZsdDtFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2EtMV81JnF1b3Q7LyZndDsmbHQ7ZHM6S2V5SW5mbyB4bWxuczpkcz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJnF1b3Q7Jmd0OyZsdDt3c3NlOlNlY3VyaXR5VG9rZW5SZWZlcmVuY2UmZ3Q7Jmx0O3dzc2U6S2V5SWRlbnRpZmllciBWYWx1ZVR5cGU9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy14NTA5LXRva2VuLXByb2ZpbGUtMS4wI1g1MDlTdWJqZWN0S2V5SWRlbnRpZmllciZxdW90OyZndDt0eUJVM3FRdWZZWjcxdEpBVTdnVklxZ1JPdVE9Jmx0Oy93c3NlOktleUlkZW50aWZpZXImZ3Q7Jmx0Oy93c3NlOlNlY3VyaXR5VG9rZW5SZWZlcmVuY2UmZ3Q7Jmx0Oy9kczpLZXlJbmZvJmd0OyZsdDtDaXBoZXJEYXRhJmd0OyZsdDtDaXBoZXJWYWx1ZSZndDtQVlVPMGFmZEF1T1lGUDFuTXZlelA2VXFZNHJJbzgzeFBHSjRyVytzN05rUE9IZEVyRC90bWJ0Ykc4dVhBeWVUNGlMWE0vSzIrZlN5bG5pOEdGaUpaa3hvejA4a01FZDE5LzZhZWFmYkEwaXpVOURWQVVLUk0vZWhDZzJLQ1lpMndYaFFhallma1F1Rk1HdW1BOVZLVmdyWTdOZHU3Zi9ZYy9wbUlXdFEvc289Jmx0Oy9DaXBoZXJWYWx1ZSZndDsmbHQ7L0NpcGhlckRhdGEmZ3Q7Jmx0O1JlZmVyZW5jZUxpc3QmZ3Q7Jmx0O0RhdGFSZWZlcmVuY2UgVVJJPSZxdW90OyN3c3NlY3VyaXR5X2VuY3J5cHRpb25faWRfMSZxdW90Oy8mZ3Q7Jmx0Oy9SZWZlcmVuY2VMaXN0Jmd0OyZsdDsvRW5jcnlwdGVkS2V5Jmd0OyZsdDsvd3NzZTpTZWN1cml0eSZndDsmbHQ7d3NhOlRvJmd0O2h0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgvYWRkcmVzc2luZy9hbm9ueW1vdXMmbHQ7L3dzYTpUbyZndDsmbHQ7d3NhOkFjdGlvbiZndDtodHRwOi8vbWFpbi9XZWJTZXJ2aWNlL2luY3JlbWVudFJlc3BvbnNlJmx0Oy93c2E6QWN0aW9uJmd0OyZsdDt3c2E6TWVzc2FnZUlEJmd0O3V1aWQ6MkI5Nzc2NzgtMDExMC00MDAwLUUwMDAtMDM1QzA5MUE5REQ5Jmx0Oy93c2E6TWVzc2FnZUlEJmd0OyZsdDt3c2E6UmVsYXRlc1RvJmd0O3V1aWQ6MkI5NzU3Q0MtMDExMC00MDAwLUUwMDAtMDM1QzA5MUE5REQ5Jmx0Oy93c2E6UmVsYXRlc1RvJmd0OyZsdDsvc29hcGVudjpIZWFkZXImZ3Q7Jmx0O3NvYXBlbnY6Qm9keSZndDsmbHQ7RW5jcnlwdGVkRGF0YSBJZD0mcXVvdDt3c3NlY3VyaXR5X2VuY3J5cHRpb25faWRfMSZxdW90OyBUeXBlPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0NvbnRlbnQmcXVvdDsgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjJnF1b3Q7Jmd0OyZsdDtFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyN0cmlwbGVkZXMtY2JjJnF1b3Q7LyZndDsmbHQ7Q2lwaGVyRGF0YSZndDsmbHQ7Q2lwaGVyVmFsdWUmZ3Q7UkRTUzlMcGtwSXU1bFdPWnIraGZzRXpOb3VsakQ2L05SSWZzWVBIMFhDdHdwb200YW4vZ1pTMXZsNXU5cjVEWlV1cStXcFNKT3BlOE5zOW1xWmxqQ0ZKdlZtTUxHYitrQzNpZzdqRUpDdmJxYzc4cURJUUNtZ0xQT3JjbDFRMFpTbGgyNUF4NzNkZTRIV1dPUEpRaktQSFpZb3BjVThNSyZsdDsvQ2lwaGVyVmFsdWUmZ3Q7Jmx0Oy9DaXBoZXJEYXRhJmd0OyZsdDsvRW5jcnlwdGVkRGF0YSZndDsmbHQ7L3NvYXBlbnY6Qm9keSZndDsmbHQ7L3NvYXBlbnY6RW52ZWxvcGUmZ3Q7PC9tZXNzYWdlQ29udGVudD4KLTxzZW5kZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6OTA4MDwvc2VuZGVySG9zdEFuZFBvcnQ+Ci08cmVjZWl2ZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6OTA4MjwvcmVjZWl2ZXJIb3N0QW5kUG9ydD4KLTxodHRwSGVhZGVycz5IVFRQLzEuMSAyMDAgT0smI3hkOwotQ29udGVudC1UeXBlOiB0ZXh0L3htbDsgY2hhcnNldD11dGYtOCYjeGQ7Ci1Db250ZW50LUxhbmd1YWdlOiBlbi1VUyYjeGQ7Ci1Db250ZW50LUxlbmd0aDogMTk5NCYjeGQ7Ci1EYXRlOiBUdWUsIDE2IEphbiAyMDA3IDE1OjQ3OjMwIEdNVCYjeGQ7Ci1TZXJ2ZXI6IFdlYlNwaGVyZSBBcHBsaWNhdGlvbiBTZXJ2ZXIvNi4xJiN4ZDsKLSYjeGQ7Ci08L2h0dHBIZWFkZXJzPgotPC9tZXNzYWdlRW50cnk+Ci08L2xvZz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL0VuY3J5cHRpb24vdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU2VjdXJlV1MvRW5jcnlwdGlvbi90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5OTU4MDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU2VjdXJlV1MvRW5jcnlwdGlvbi90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iRW5jcnlwdGlvbiI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXNzYWdlIGxvZyBmaWxlIHRoYXQgY29udGFpbnMgYSBtZXNzYWdlIHdpdGggZW5jcnlwdGlvbi4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXMvPgotPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL05vU2VjdXJpdHkvTm9TZWN1cml0eS53c2ltc2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9TZWN1cmVXUy9Ob1NlY3VyaXR5L05vU2VjdXJpdHkud3NpbXNnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGM5MmE5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL05vU2VjdXJpdHkvTm9TZWN1cml0eS53c2ltc2cKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGxvZyB0aW1lc3RhbXA9IjIwMDctMDEtMTZUMTg6MTQ6MDYuMDA1IgotICAgIHhtbG5zPSJodHRwOi8vd3d3LndzLWkub3JnL3Rlc3RpbmcvMjAwNC8wNy9sb2cvIgotICAgIHhtbG5zOndzaS1tb25Db25maWc9Imh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDA0LzA3L21vbml0b3JDb25maWcvIgotICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPgotICA8bW9uaXRvciB2ZXJzaW9uPSIxLjAiIHJlbGVhc2VEYXRlPSIyMDAzLTAzLTIwIj4KLSAgICA8aW1wbGVtZW50ZXIgbmFtZT0iSUJNIiBsb2NhdGlvbj0iIi8+Ci0gICAgPGVudmlyb25tZW50PgotICAgICAgPHJ1bnRpbWUgbmFtZT0iSmF2YShUTSkgMiBSdW50aW1lIEVudmlyb25tZW50LCBTdGFuZGFyZCBFZGl0aW9uIiB2ZXJzaW9uPSJwd2kzMmRldi0yMDA2MTAwMmEgKFNSMykiLz4KLSAgICAgIDxvcGVyYXRpbmdTeXN0ZW0gbmFtZT0iV2luZG93cyBYUCIgdmVyc2lvbj0iNS4xIGJ1aWxkIDI2MDAgU2VydmljZSBQYWNrIDIiLz4KLSAgICAgIDx4bWxQYXJzZXIgbmFtZT0iQXBhY2hlIFhlcmNlcyIgdmVyc2lvbj0iWE1MNEogNC40LjYiLz4KLSAgICA8L2Vudmlyb25tZW50PgotICAgIDx3c2ktbW9uQ29uZmlnOmNvbmZpZ3VyYXRpb24+Ci0gICAgPHdzaS1tb25Db25maWc6Y29tbWVudD5Db21tZW50PC93c2ktbW9uQ29uZmlnOmNvbW1lbnQ+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpsb2dGaWxlIHJlcGxhY2U9InRydWUiIGxvY2F0aW9uPSJVUkwiPgotICAgICAgPHdzaS1tb25Db25maWc6YWRkU3R5bGVTaGVldCBocmVmPSJudWxsIiB0eXBlPSJudWxsIiAvPgotICAgIDwvd3NpLW1vbkNvbmZpZzpsb2dGaWxlPgotICAgICAgPHdzaS1tb25Db25maWc6bG9nRHVyYXRpb24+NjAwPC93c2ktbW9uQ29uZmlnOmxvZ0R1cmF0aW9uPgotICAgICAgPHdzaS1tb25Db25maWc6Y2xlYW51cFRpbWVvdXRTZWNvbmRzPjM8L3dzaS1tb25Db25maWc6Y2xlYW51cFRpbWVvdXRTZWNvbmRzPgotICAgICAgPHdzaS1tb25Db25maWc6bWFuSW5UaGVNaWRkbGU+Ci0gICAgICA8L3dzaS1tb25Db25maWc6bWFuSW5UaGVNaWRkbGU+Ci0gICAgPC93c2ktbW9uQ29uZmlnOmNvbmZpZ3VyYXRpb24+Ci0gIDwvbW9uaXRvcj4KLQotPG1lc3NhZ2VFbnRyeSB4c2k6dHlwZT0iaHR0cE1lc3NhZ2VFbnRyeSIgSUQ9IjEiIGNvbnZlcnNhdGlvbklEPSIxIiB0eXBlPSJyZXF1ZXN0IiB0aW1lc3RhbXA9IjIwMDctMDEtMTZUMTg6MTM6NTIuODM2WiI+Ci08bWVzc2FnZUNvbnRlbnQ+Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczpzb2FwZW5jPSZxdW90O2h0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvJnF1b3Q7IHhtbG5zOnhzZD0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSZxdW90OyB4bWxuczp4c2k9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UmcXVvdDsgeG1sbnM6d3NhPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgvYWRkcmVzc2luZyZxdW90OyZndDsmbHQ7c29hcGVudjpIZWFkZXImZ3Q7Jmx0O3dzYTpUbyZndDtodHRwOi8vbG9jYWxob3N0OjkwODIvV2ViUHJvamVjdE5vU2VjdXJpdHkvc2VydmljZXMvV2ViU2VydmljZSZsdDsvd3NhOlRvJmd0OyZsdDt3c2E6QWN0aW9uJmd0O2luY3JlbWVudCZsdDsvd3NhOkFjdGlvbiZndDsmbHQ7d3NhOk1lc3NhZ2VJRCZndDt1dWlkOjJEMzAxRUE2LTAxMTAtNDAwMC1FMDAwLTAzNUMwOTFBOUREOSZsdDsvd3NhOk1lc3NhZ2VJRCZndDsmbHQ7L3NvYXBlbnY6SGVhZGVyJmd0OyZsdDtzb2FwZW52OkJvZHkmZ3Q7Jmx0O3A2MTk6aW5jcmVtZW50IHhtbG5zOnA2MTk9JnF1b3Q7aHR0cDovL21haW4mcXVvdDsmZ3Q7Jmx0O3ZhbHVlJmd0OzEmbHQ7L3ZhbHVlJmd0OyZsdDsvcDYxOTppbmNyZW1lbnQmZ3Q7Jmx0Oy9zb2FwZW52OkJvZHkmZ3Q7Jmx0Oy9zb2FwZW52OkVudmVsb3BlJmd0OzwvbWVzc2FnZUNvbnRlbnQ+Ci08c2VuZGVySG9zdEFuZFBvcnQ+bG9jYWxob3N0OjkwODI8L3NlbmRlckhvc3RBbmRQb3J0PgotPHJlY2VpdmVySG9zdEFuZFBvcnQ+bG9jYWxob3N0OjkwODA8L3JlY2VpdmVySG9zdEFuZFBvcnQ+Ci08aHR0cEhlYWRlcnM+UE9TVCAvV2ViUHJvamVjdE5vU2VjdXJpdHkvc2VydmljZXMvV2ViU2VydmljZSBIVFRQLzEuMSYjeGQ7Ci1Ib3N0OiBsb2NhbGhvc3Q6OTA4MCYjeGQ7Ci1BY2NlcHQ6IGFwcGxpY2F0aW9uL3NvYXAreG1sLG11bHRpcGFydC9yZWxhdGVkLHRleHQvKiYjeGQ7Ci1Vc2VyLUFnZW50OiBJQk0gV2ViU2VydmljZXMvMS4wJiN4ZDsKLUNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlJiN4ZDsKLVByYWdtYTogbm8tY2FjaGUmI3hkOwotU09BUEFjdGlvbjogJnF1b3Q7aW5jcmVtZW50JnF1b3Q7JiN4ZDsKLUNvbm5lY3Rpb246IEtlZXAtQWxpdmUmI3hkOwotQ29udGVudC1UeXBlOiB0ZXh0L3htbDsgY2hhcnNldD11dGYtOCYjeGQ7Ci1Db250ZW50LUxlbmd0aDogNjIyJiN4ZDsKLURhdGU6IFR1ZSwgMTYgSmFuIDIwMDcgMjM6MTM6NTIgR01UJiN4ZDsKLSYjeGQ7Ci08L2h0dHBIZWFkZXJzPgotPC9tZXNzYWdlRW50cnk+Ci08bWVzc2FnZUVudHJ5IHhzaTp0eXBlPSJodHRwTWVzc2FnZUVudHJ5IiBJRD0iMiIgY29udmVyc2F0aW9uSUQ9IjEiIHR5cGU9InJlc3BvbnNlIiB0aW1lc3RhbXA9IjIwMDctMDEtMTZUMTg6MTM6NTIuOTc2WiI+Ci08bWVzc2FnZUNvbnRlbnQ+Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczpzb2FwZW5jPSZxdW90O2h0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvJnF1b3Q7IHhtbG5zOnhzZD0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSZxdW90OyB4bWxuczp4c2k9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UmcXVvdDsgeG1sbnM6d3NhPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgvYWRkcmVzc2luZyZxdW90OyZndDsmbHQ7c29hcGVudjpIZWFkZXImZ3Q7Jmx0O3dzYTpUbyZndDtodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L2FkZHJlc3NpbmcvYW5vbnltb3VzJmx0Oy93c2E6VG8mZ3Q7Jmx0O3dzYTpBY3Rpb24mZ3Q7aHR0cDovL21haW4vV2ViU2VydmljZS9pbmNyZW1lbnRSZXNwb25zZSZsdDsvd3NhOkFjdGlvbiZndDsmbHQ7d3NhOk1lc3NhZ2VJRCZndDt1dWlkOjJEMzAxRjUwLTAxMTAtNDAwMC1FMDAwLTAzNUMwOTFBOUREOSZsdDsvd3NhOk1lc3NhZ2VJRCZndDsmbHQ7d3NhOlJlbGF0ZXNUbyZndDt1dWlkOjJEMzAxRUE2LTAxMTAtNDAwMC1FMDAwLTAzNUMwOTFBOUREOSZsdDsvd3NhOlJlbGF0ZXNUbyZndDsmbHQ7L3NvYXBlbnY6SGVhZGVyJmd0OyZsdDtzb2FwZW52OkJvZHkmZ3Q7Jmx0O3A2MTk6aW5jcmVtZW50UmVzcG9uc2UgeG1sbnM6cDYxOT0mcXVvdDtodHRwOi8vbWFpbiZxdW90OyZndDsmbHQ7aW5jcmVtZW50UmV0dXJuJmd0OzImbHQ7L2luY3JlbWVudFJldHVybiZndDsmbHQ7L3A2MTk6aW5jcmVtZW50UmVzcG9uc2UmZ3Q7Jmx0Oy9zb2FwZW52OkJvZHkmZ3Q7Jmx0Oy9zb2FwZW52OkVudmVsb3BlJmd0OzwvbWVzc2FnZUNvbnRlbnQ+Ci08c2VuZGVySG9zdEFuZFBvcnQ+bG9jYWxob3N0OjkwODA8L3NlbmRlckhvc3RBbmRQb3J0PgotPHJlY2VpdmVySG9zdEFuZFBvcnQ+bG9jYWxob3N0OjkwODI8L3JlY2VpdmVySG9zdEFuZFBvcnQ+Ci08aHR0cEhlYWRlcnM+SFRUUC8xLjEgMjAwIE9LJiN4ZDsKLUNvbnRlbnQtVHlwZTogdGV4dC94bWw7IGNoYXJzZXQ9dXRmLTgmI3hkOwotQ29udGVudC1MYW5ndWFnZTogZW4tVVMmI3hkOwotQ29udGVudC1MZW5ndGg6IDc0NSYjeGQ7Ci1EYXRlOiBUdWUsIDE2IEphbiAyMDA3IDIzOjEzOjUyIEdNVCYjeGQ7Ci1TZXJ2ZXI6IFdlYlNwaGVyZSBBcHBsaWNhdGlvbiBTZXJ2ZXIvNi4xJiN4ZDsKLSYjeGQ7Ci08L2h0dHBIZWFkZXJzPgotPC9tZXNzYWdlRW50cnk+Ci08L2xvZz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL05vU2VjdXJpdHkvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU2VjdXJlV1MvTm9TZWN1cml0eS90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZWZkYTguLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU2VjdXJlV1MvTm9TZWN1cml0eS90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iRW5jcnlwdGlvbiI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXNzYWdlIGxvZyBmaWxlIHRoYXQgY29udGFpbnMgYSBtZXNzYWdlIHdpdGggbm8gc2VjdXJpdHkuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzLz4KLTwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9TZWN1cmVXUy9TaWduYXR1cmUvU2lnbmF0dXJlLndzaW1zZyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL1NpZ25hdHVyZS9TaWduYXR1cmUud3NpbXNnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2QwNWVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL1NpZ25hdHVyZS9TaWduYXR1cmUud3NpbXNnCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxsb2cgdGltZXN0YW1wPSIyMDA3LTAxLTE2VDE4OjA4OjM4LjUyNCIKLSAgICB4bWxucz0iaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDQvMDcvbG9nLyIKLSAgICB4bWxuczp3c2ktbW9uQ29uZmlnPSJodHRwOi8vd3d3LndzLWkub3JnL3Rlc3RpbmcvMjAwNC8wNy9tb25pdG9yQ29uZmlnLyIKLSAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4KLSAgPG1vbml0b3IgdmVyc2lvbj0iMS4wIiByZWxlYXNlRGF0ZT0iMjAwMy0wMy0yMCI+Ci0gICAgPGltcGxlbWVudGVyIG5hbWU9IklCTSIgbG9jYXRpb249IiIvPgotICAgIDxlbnZpcm9ubWVudD4KLSAgICAgIDxydW50aW1lIG5hbWU9IkphdmEoVE0pIDIgUnVudGltZSBFbnZpcm9ubWVudCwgU3RhbmRhcmQgRWRpdGlvbiIgdmVyc2lvbj0icHdpMzJkZXYtMjAwNjEwMDJhIChTUjMpIi8+Ci0gICAgICA8b3BlcmF0aW5nU3lzdGVtIG5hbWU9IldpbmRvd3MgWFAiIHZlcnNpb249IjUuMSBidWlsZCAyNjAwIFNlcnZpY2UgUGFjayAyIi8+Ci0gICAgICA8eG1sUGFyc2VyIG5hbWU9IkFwYWNoZSBYZXJjZXMiIHZlcnNpb249IlhNTDRKIDQuNC42Ii8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLSAgICA8d3NpLW1vbkNvbmZpZzpjb25maWd1cmF0aW9uPgotICAgIDx3c2ktbW9uQ29uZmlnOmNvbW1lbnQ+Q29tbWVudDwvd3NpLW1vbkNvbmZpZzpjb21tZW50PgotICAgICAgPHdzaS1tb25Db25maWc6bG9nRmlsZSByZXBsYWNlPSJ0cnVlIiBsb2NhdGlvbj0iVVJMIj4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmFkZFN0eWxlU2hlZXQgaHJlZj0ibnVsbCIgdHlwZT0ibnVsbCIgLz4KLSAgICA8L3dzaS1tb25Db25maWc6bG9nRmlsZT4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmxvZ0R1cmF0aW9uPjYwMDwvd3NpLW1vbkNvbmZpZzpsb2dEdXJhdGlvbj4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmNsZWFudXBUaW1lb3V0U2Vjb25kcz4zPC93c2ktbW9uQ29uZmlnOmNsZWFudXBUaW1lb3V0U2Vjb25kcz4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOm1hbkluVGhlTWlkZGxlPgotICAgICAgPC93c2ktbW9uQ29uZmlnOm1hbkluVGhlTWlkZGxlPgotICAgIDwvd3NpLW1vbkNvbmZpZzpjb25maWd1cmF0aW9uPgotICA8L21vbml0b3I+Ci0KLTxtZXNzYWdlRW50cnkgeHNpOnR5cGU9Imh0dHBNZXNzYWdlRW50cnkiIElEPSIxIiBjb252ZXJzYXRpb25JRD0iMSIgdHlwZT0icmVxdWVzdCIgdGltZXN0YW1wPSIyMDA3LTAxLTE2VDE4OjA4OjI2LjAwNloiPgotPG1lc3NhZ2VDb250ZW50PiZsdDtzb2FwZW52OkVudmVsb3BlIHhtbG5zOnNvYXBlbnY9JnF1b3Q7aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8mcXVvdDsgeG1sbnM6c29hcGVuYz0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyZxdW90OyB4bWxuczp4c2Q9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEmcXVvdDsgeG1sbnM6eHNpPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7IHhtbG5zOndzYT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L2FkZHJlc3NpbmcmcXVvdDsmZ3Q7Jmx0O3NvYXBlbnY6SGVhZGVyJmd0OyZsdDt3c3NlOlNlY3VyaXR5IHNvYXBlbnY6bXVzdFVuZGVyc3RhbmQ9JnF1b3Q7MSZxdW90OyB4bWxuczp3c3NlPSZxdW90O2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZCZxdW90OyZndDsmbHQ7d3NzZTpCaW5hcnlTZWN1cml0eVRva2VuIEVuY29kaW5nVHlwZT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXNvYXAtbWVzc2FnZS1zZWN1cml0eS0xLjAjQmFzZTY0QmluYXJ5JnF1b3Q7IFZhbHVlVHlwZT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXg1MDktdG9rZW4tcHJvZmlsZS0xLjAjWDUwOSZxdW90OyB3c3U6SWQ9JnF1b3Q7eDUwOWJzdF8xNiZxdW90OyB4bWxuczp3c3U9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXV0aWxpdHktMS4wLnhzZCZxdW90OyZndDtNSUlEUVRDQ0FxcWdBd0lCQWdJQ0FRUXdEUVlKS29aSWh2Y05BUUVGQlFBd1RqRUxNQWtHQTFVRUJoTUNTbEF4RVRBUEJnTlZCQWdUQ0V0aGJtRm5ZWGRoTVF3d0NnWURWUVFLRXdOSlFrMHhEREFLQmdOVkJBc1RBMVJTVERFUU1BNEdBMVVFQXhNSFNXNTBJRU5CTWpBZUZ3MHdNVEV3TURFd09UVTBNRFphRncweE1URXdNREV3T1RVME1EWmFNRlF4Q3pBSkJnTlZCQVlUQWtwUU1SRXdEd1lEVlFRSUV3aExZVzVoWjJGM1lURU1NQW9HQTFVRUNoTURTVUpOTVF3d0NnWURWUVFMRXdOVVVrd3hGakFVQmdOVkJBTVREVk5QUVZCU1pYRjFaWE4wWlhJd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNeTNQZloxbVBockVzQnZZaU91SWxQVjNVaXM1WXk2aG14bzJZd1lDMm5OREJQektzbFdVaS9RK2ZLK0ROZFk2S0VIbXVEcmNWY0VtYTQ4SjlYMWE1YXZSbGtzUWZLcHRLb1ZuNGVCeXMyaS93a3d5elFoRGFGamk3OS9Ndm5UUlc4RVZ5OTlGTkt3NFBGbmhPb2UxdGxEY05CdUlIL2ZJdUdPejlFbFRWK2ZBZ01CQUFHamdnRW1NSUlCSWpBSkJnTlZIUk1FQWpBQU1Bc0dBMVVkRHdRRUF3SUY0REFzQmdsZ2hrZ0JodmhDQVEwRUh4WWRUM0JsYmxOVFRDQkhaVzVsY21GMFpXUWdRMlZ5ZEdsbWFXTmhkR1V3SFFZRFZSME9CQllFRklXM0ZEMWNYaWU0ajR6dzFnQXA0Y3VPQVo0bE1JRzZCZ05WSFNNRWdiSXdnYStBRkwzNUlOVTQrV1J5MDl2YWY5ek9zUDdRdk85dm9ZR1NwSUdQTUlHTU1Rc3dDUVlEVlFRR0V3SktVREVSTUE4R0ExVUVDQk1JUzJGdVlXZGhkMkV4RHpBTkJnTlZCQWNUQmxsaGJXRjBiekVNTUFvR0ExVUVDaE1EU1VKTk1Rd3dDZ1lEVlFRTEV3TlVVa3d4R1RBWEJnTlZCQU1URUZOUFFWQWdNaTR4SUZSbGMzUWdRMEV4SWpBZ0Jna3Foa2lHOXcwQkNRRVdFMjFoY25WNVlXMWhRR3B3TG1saWJTNWpiMjJDQWdFQk1BMEdDU3FHU0liM0RRRUJCUVVBQTRHQkFIa3RoZEdEZ0N2ZElMOS92WFVvNzR4cGZPUWQvcnIxb3dCbU1kYjFUV2RPeXp3Yk9IQzdsa1Vsbktya0k3U29md1NMU0RVUDU3MWlpTVhVeDN0UmRtQVZDb0RNTUZ1RFhoOVY3MjEybHVYY2N4MHMxUzVLTjBEM3hXOTdMTE5lZ1FDMC9iK2FGRDhYS3cyVTVadHdibkZUUmdzMDk3ZG16MDlSb3NES2tMbE0mbHQ7L3dzc2U6QmluYXJ5U2VjdXJpdHlUb2tlbiZndDsmbHQ7ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMmcXVvdDsmZ3Q7Jmx0O2RzOlNpZ25lZEluZm8mZ3Q7Jmx0O2RzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyZxdW90OyZndDsmbHQ7ZWM6SW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0PSZxdW90O3hzaSB4c2Qgd3NhIHNvYXBlbnYgc29hcGVuYyB3c3NlIGRzICZxdW90OyB4bWxuczplYz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMmcXVvdDsvJmd0OyZsdDsvZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDsmbHQ7ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEmcXVvdDsvJmd0OyZsdDtkczpSZWZlcmVuY2UgVVJJPSZxdW90OyN3c3NlY3VyaXR5X3NpZ25hdHVyZV9pZF8xNSZxdW90OyZndDsmbHQ7ZHM6VHJhbnNmb3JtcyZndDsmbHQ7ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMmcXVvdDsmZ3Q7Jmx0O2VjOkluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdD0mcXVvdDt4c2kgeHNkIHdzYSBzb2FwZW52IHNvYXBlbmMgd3N1IHA2MTkgJnF1b3Q7IHhtbG5zOmVjPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyZxdW90Oy8mZ3Q7Jmx0Oy9kczpUcmFuc2Zvcm0mZ3Q7Jmx0Oy9kczpUcmFuc2Zvcm1zJmd0OyZsdDtkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExJnF1b3Q7LyZndDsmbHQ7ZHM6RGlnZXN0VmFsdWUmZ3Q7ZEhOQ2lFY3F4WFlTRHJiQmszYWhDYXR6d0tnPSZsdDsvZHM6RGlnZXN0VmFsdWUmZ3Q7Jmx0Oy9kczpSZWZlcmVuY2UmZ3Q7Jmx0Oy9kczpTaWduZWRJbmZvJmd0OyZsdDtkczpTaWduYXR1cmVWYWx1ZSZndDtPNm1pUTlsNmFtV25hV2k1Vld4b2d3eTZHSktNU3VkbWhzNDE3L3FHTzl5WnZBdGNHeHBBSElyRU9XekUvTXQvcEZNSDNsVUtsUlcxM0t2R2xtUlV1TXFNcmRrcEVoRDV0Z0NRWkFyVDBYV0VhVVplaytNbW1mTWhDbkI4YUFsRXBUSWFSY1dwLzBSbk5kSlhvemt5amJvVDdvdVVTSUpOL0t0bUJoTVdsa2c9Jmx0Oy9kczpTaWduYXR1cmVWYWx1ZSZndDsmbHQ7ZHM6S2V5SW5mbyZndDsmbHQ7d3NzZTpTZWN1cml0eVRva2VuUmVmZXJlbmNlJmd0OyZsdDt3c3NlOlJlZmVyZW5jZSBVUkk9JnF1b3Q7I3g1MDlic3RfMTYmcXVvdDsgVmFsdWVUeXBlPSZxdW90O2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3MteDUwOS10b2tlbi1wcm9maWxlLTEuMCNYNTA5JnF1b3Q7LyZndDsmbHQ7L3dzc2U6U2VjdXJpdHlUb2tlblJlZmVyZW5jZSZndDsmbHQ7L2RzOktleUluZm8mZ3Q7Jmx0Oy9kczpTaWduYXR1cmUmZ3Q7Jmx0Oy93c3NlOlNlY3VyaXR5Jmd0OyZsdDt3c2E6VG8mZ3Q7aHR0cDovL2xvY2FsaG9zdDo5MDgyL1dlYlByb2plY3RXaXRoU2lnbmF0dXJlL3NlcnZpY2VzL1dlYlNlcnZpY2UmbHQ7L3dzYTpUbyZndDsmbHQ7d3NhOkFjdGlvbiZndDtpbmNyZW1lbnQmbHQ7L3dzYTpBY3Rpb24mZ3Q7Jmx0O3dzYTpNZXNzYWdlSUQmZ3Q7dXVpZDoyRDJCMjFCQy0wMTEwLTQwMDAtRTAwMC0wMzVDMDkxQTlERDkmbHQ7L3dzYTpNZXNzYWdlSUQmZ3Q7Jmx0Oy9zb2FwZW52OkhlYWRlciZndDsmbHQ7c29hcGVudjpCb2R5IHdzdTpJZD0mcXVvdDt3c3NlY3VyaXR5X3NpZ25hdHVyZV9pZF8xNSZxdW90OyB4bWxuczp3c3U9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXV0aWxpdHktMS4wLnhzZCZxdW90OyZndDsmbHQ7cDYxOTppbmNyZW1lbnQgeG1sbnM6cDYxOT0mcXVvdDtodHRwOi8vbWFpbiZxdW90OyZndDsmbHQ7dmFsdWUmZ3Q7MSZsdDsvdmFsdWUmZ3Q7Jmx0Oy9wNjE5OmluY3JlbWVudCZndDsmbHQ7L3NvYXBlbnY6Qm9keSZndDsmbHQ7L3NvYXBlbnY6RW52ZWxvcGUmZ3Q7PC9tZXNzYWdlQ29udGVudD4KLTxzZW5kZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6OTA4Mjwvc2VuZGVySG9zdEFuZFBvcnQ+Ci08cmVjZWl2ZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6OTA4MDwvcmVjZWl2ZXJIb3N0QW5kUG9ydD4KLTxodHRwSGVhZGVycz5QT1NUIC9XZWJQcm9qZWN0V2l0aFNpZ25hdHVyZS9zZXJ2aWNlcy9XZWJTZXJ2aWNlIEhUVFAvMS4xJiN4ZDsKLUhvc3Q6IGxvY2FsaG9zdDo5MDgwJiN4ZDsKLUFjY2VwdDogYXBwbGljYXRpb24vc29hcCt4bWwsbXVsdGlwYXJ0L3JlbGF0ZWQsdGV4dC8qJiN4ZDsKLVVzZXItQWdlbnQ6IElCTSBXZWJTZXJ2aWNlcy8xLjAmI3hkOwotQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUmI3hkOwotUHJhZ21hOiBuby1jYWNoZSYjeGQ7Ci1TT0FQQWN0aW9uOiAmcXVvdDtpbmNyZW1lbnQmcXVvdDsmI3hkOwotQ29ubmVjdGlvbjogS2VlcC1BbGl2ZSYjeGQ7Ci1Db250ZW50LVR5cGU6IHRleHQveG1sOyBjaGFyc2V0PXV0Zi04JiN4ZDsKLUNvbnRlbnQtTGVuZ3RoOiAzNjcyJiN4ZDsKLURhdGU6IFR1ZSwgMTYgSmFuIDIwMDcgMjM6MDg6MjUgR01UJiN4ZDsKLSYjeGQ7Ci08L2h0dHBIZWFkZXJzPgotPC9tZXNzYWdlRW50cnk+Ci08bWVzc2FnZUVudHJ5IHhzaTp0eXBlPSJodHRwTWVzc2FnZUVudHJ5IiBJRD0iMiIgY29udmVyc2F0aW9uSUQ9IjEiIHR5cGU9InJlc3BvbnNlIiB0aW1lc3RhbXA9IjIwMDctMDEtMTZUMTg6MDg6MjYuMTI2WiI+Ci08bWVzc2FnZUNvbnRlbnQ+Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczpzb2FwZW5jPSZxdW90O2h0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvJnF1b3Q7IHhtbG5zOnhzZD0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSZxdW90OyB4bWxuczp4c2k9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UmcXVvdDsgeG1sbnM6d3NhPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgvYWRkcmVzc2luZyZxdW90OyZndDsmbHQ7c29hcGVudjpIZWFkZXImZ3Q7Jmx0O3dzc2U6U2VjdXJpdHkgc29hcGVudjptdXN0VW5kZXJzdGFuZD0mcXVvdDsxJnF1b3Q7IHhtbG5zOndzc2U9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkJnF1b3Q7Jmd0OyZsdDt3c3NlOkJpbmFyeVNlY3VyaXR5VG9rZW4gRW5jb2RpbmdUeXBlPSZxdW90O2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtc29hcC1tZXNzYWdlLXNlY3VyaXR5LTEuMCNCYXNlNjRCaW5hcnkmcXVvdDsgVmFsdWVUeXBlPSZxdW90O2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3MteDUwOS10b2tlbi1wcm9maWxlLTEuMCNYNTA5JnF1b3Q7IHdzdTpJZD0mcXVvdDt4NTA5YnN0XzE4JnF1b3Q7IHhtbG5zOndzdT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkJnF1b3Q7Jmd0O01JSURRRENDQXFtZ0F3SUJBZ0lDQVFVd0RRWUpLb1pJaHZjTkFRRUZCUUF3VGpFTE1Ba0dBMVVFQmhNQ1NsQXhFVEFQQmdOVkJBZ1RDRXRoYm1GbllYZGhNUXd3Q2dZRFZRUUtFd05KUWsweEREQUtCZ05WQkFzVEExUlNUREVRTUE0R0ExVUVBeE1IU1c1MElFTkJNakFlRncwd01URXdNREV4TURBd016bGFGdzB4TVRFd01ERXhNREF3TXpsYU1GTXhDekFKQmdOVkJBWVRBa3BRTVJFd0R3WURWUVFJRXdoTFlXNWhaMkYzWVRFTU1Bb0dBMVVFQ2hNRFNVSk5NUXd3Q2dZRFZRUUxFd05VVWt3eEZUQVRCZ05WQkFNVERGTlBRVkJRY205MmFXUmxjakNCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBcmFha05KMUp6a1BVdXZQZFhSdlBPT0NsMTJuQndtcXZ0NjVkay94K1F6eHhhckROd0grZVdSYkx5eUtjckF5ZDBYR1YrWmJ2ajZWM085RFNWQ1pVQ0p0dHc2YmJxcWVZaHdBUDNWOHMyNHNJRDc3dGszZ09oVVRFR1l4c2xqWDJvckwyNlNMcUZKTXJ2bnZrMkZSUzJtcmRrWkVCVUc5N21ENFFXY2xuNGQwQ0F3RUFBYU9DQVNZd2dnRWlNQWtHQTFVZEV3UUNNQUF3Q3dZRFZSMFBCQVFEQWdYZ01Dd0dDV0NHU0FHRytFSUJEUVFmRmgxUGNHVnVVMU5NSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpUQWRCZ05WSFE0RUZnUVVsWFNzclZSZlpPTEdkSmRqRUl3VGJ1U1RlNFV3Z2JvR0ExVWRJd1NCc2pDQnI0QVV2ZmtnMVRqNVpITFQyOXAvM002dy90Qzg3MitoZ1pLa2dZOHdnWXd4Q3pBSkJnTlZCQVlUQWtwUU1SRXdEd1lEVlFRSUV3aExZVzVoWjJGM1lURVBNQTBHQTFVRUJ4TUdXV0Z0WVhSdk1Rd3dDZ1lEVlFRS0V3TkpRazB4RERBS0JnTlZCQXNUQTFSU1RERVpNQmNHQTFVRUF4TVFVMDlCVUNBeUxqRWdWR1Z6ZENCRFFURWlNQ0FHQ1NxR1NJYjNEUUVKQVJZVGJXRnlkWGxoYldGQWFuQXVhV0p0TG1OdmJZSUNBUUV3RFFZSktvWklodmNOQVFFRkJRQURnWUVBWEU3bUUxUlBiM2xZQVlKRnpCYjNWQUh2a0NXYS9IUXRDT1pkeW5pQ0hwM01KOUViTlRxK1FwT0hWNjBZRTh1MCs1U2VqQ3pGU09IT3B5QmdMUGpXb3o4SlhRbmpWN1ZjQWJUZ2x3K1pvT1NZeTY0cmZoUmRyOWdpU3M0N0Y0RDZ3b1BzQWQydWJnL1loTWFYTFRTeUd4UGRWM1ZxUXN1dHVTZ0RVRG9xV0NBPSZsdDsvd3NzZTpCaW5hcnlTZWN1cml0eVRva2VuJmd0OyZsdDtkczpTaWduYXR1cmUgeG1sbnM6ZHM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyZxdW90OyZndDsmbHQ7ZHM6U2lnbmVkSW5mbyZndDsmbHQ7ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jJnF1b3Q7Jmd0OyZsdDtlYzpJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3Q9JnF1b3Q7eHNpIHhzZCB3c2Egc29hcGVudiBzb2FwZW5jIHdzc2UgZHMgJnF1b3Q7IHhtbG5zOmVjPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyZxdW90Oy8mZ3Q7Jmx0Oy9kczpDYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0OyZsdDtkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSZxdW90Oy8mZ3Q7Jmx0O2RzOlJlZmVyZW5jZSBVUkk9JnF1b3Q7I3dzc2VjdXJpdHlfc2lnbmF0dXJlX2lkXzE3JnF1b3Q7Jmd0OyZsdDtkczpUcmFuc2Zvcm1zJmd0OyZsdDtkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyZxdW90OyZndDsmbHQ7ZWM6SW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0PSZxdW90O3hzaSB4c2Qgd3NhIHNvYXBlbnYgc29hcGVuYyB3c3UgcDYxOSAmcXVvdDsgeG1sbnM6ZWM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jJnF1b3Q7LyZndDsmbHQ7L2RzOlRyYW5zZm9ybSZndDsmbHQ7L2RzOlRyYW5zZm9ybXMmZ3Q7Jmx0O2RzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEmcXVvdDsvJmd0OyZsdDtkczpEaWdlc3RWYWx1ZSZndDt0b0hEMjVuZytMVTQvVEpWblhTdzRxcVlmT2c9Jmx0Oy9kczpEaWdlc3RWYWx1ZSZndDsmbHQ7L2RzOlJlZmVyZW5jZSZndDsmbHQ7L2RzOlNpZ25lZEluZm8mZ3Q7Jmx0O2RzOlNpZ25hdHVyZVZhbHVlJmd0O2s2VjBKM3JWYUlONXprcmtsTk5sekFzbExkYkk0cElJYkJYaDRMOG9oNDc3VVJwSVc5azFRcDNjY2FhR0VvSmF6ZW9neXE4WXFXR2xpSkQwZjVxZlp6N29CcTZCUmkySnhCNjNFejFJeGZYbTB1QlpSTlJHeDlJVnBkQTB5NGlWeUZpQWdVUjVlN2NKVHkvWHVuN3RMcW1OM1hyR0gwZHZkcUZUT0t6aS9Xcz0mbHQ7L2RzOlNpZ25hdHVyZVZhbHVlJmd0OyZsdDtkczpLZXlJbmZvJmd0OyZsdDt3c3NlOlNlY3VyaXR5VG9rZW5SZWZlcmVuY2UmZ3Q7Jmx0O3dzc2U6UmVmZXJlbmNlIFVSST0mcXVvdDsjeDUwOWJzdF8xOCZxdW90OyBWYWx1ZVR5cGU9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy14NTA5LXRva2VuLXByb2ZpbGUtMS4wI1g1MDkmcXVvdDsvJmd0OyZsdDsvd3NzZTpTZWN1cml0eVRva2VuUmVmZXJlbmNlJmd0OyZsdDsvZHM6S2V5SW5mbyZndDsmbHQ7L2RzOlNpZ25hdHVyZSZndDsmbHQ7L3dzc2U6U2VjdXJpdHkmZ3Q7Jmx0O3dzYTpUbyZndDtodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L2FkZHJlc3NpbmcvYW5vbnltb3VzJmx0Oy93c2E6VG8mZ3Q7Jmx0O3dzYTpBY3Rpb24mZ3Q7aHR0cDovL21haW4vV2ViU2VydmljZS9pbmNyZW1lbnRSZXNwb25zZSZsdDsvd3NhOkFjdGlvbiZndDsmbHQ7d3NhOk1lc3NhZ2VJRCZndDt1dWlkOjJEMkIyMjdBLTAxMTAtNDAwMC1FMDAwLTAzNUMwOTFBOUREOSZsdDsvd3NhOk1lc3NhZ2VJRCZndDsmbHQ7d3NhOlJlbGF0ZXNUbyZndDt1dWlkOjJEMkIyMUJDLTAxMTAtNDAwMC1FMDAwLTAzNUMwOTFBOUREOSZsdDsvd3NhOlJlbGF0ZXNUbyZndDsmbHQ7L3NvYXBlbnY6SGVhZGVyJmd0OyZsdDtzb2FwZW52OkJvZHkgd3N1OklkPSZxdW90O3dzc2VjdXJpdHlfc2lnbmF0dXJlX2lkXzE3JnF1b3Q7IHhtbG5zOndzdT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkJnF1b3Q7Jmd0OyZsdDtwNjE5OmluY3JlbWVudFJlc3BvbnNlIHhtbG5zOnA2MTk9JnF1b3Q7aHR0cDovL21haW4mcXVvdDsmZ3Q7Jmx0O2luY3JlbWVudFJldHVybiZndDsyJmx0Oy9pbmNyZW1lbnRSZXR1cm4mZ3Q7Jmx0Oy9wNjE5OmluY3JlbWVudFJlc3BvbnNlJmd0OyZsdDsvc29hcGVudjpCb2R5Jmd0OyZsdDsvc29hcGVudjpFbnZlbG9wZSZndDs8L21lc3NhZ2VDb250ZW50PgotPHNlbmRlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo5MDgwPC9zZW5kZXJIb3N0QW5kUG9ydD4KLTxyZWNlaXZlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo5MDgyPC9yZWNlaXZlckhvc3RBbmRQb3J0PgotPGh0dHBIZWFkZXJzPkhUVFAvMS4xIDIwMCBPSyYjeGQ7Ci1Db250ZW50LVR5cGU6IHRleHQveG1sOyBjaGFyc2V0PXV0Zi04JiN4ZDsKLUNvbnRlbnQtTGFuZ3VhZ2U6IGVuLVVTJiN4ZDsKLUNvbnRlbnQtTGVuZ3RoOiAzNzkyJiN4ZDsKLURhdGU6IFR1ZSwgMTYgSmFuIDIwMDcgMjM6MDg6MjUgR01UJiN4ZDsKLVNlcnZlcjogV2ViU3BoZXJlIEFwcGxpY2F0aW9uIFNlcnZlci82LjEmI3hkOwotJiN4ZDsKLTwvaHR0cEhlYWRlcnM+Ci08L21lc3NhZ2VFbnRyeT4KLTwvbG9nPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU2VjdXJlV1MvU2lnbmF0dXJlL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL1NpZ25hdHVyZS90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwOGI4OGEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU2VjdXJlV1MvU2lnbmF0dXJlL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSJFbmNyeXB0aW9uIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG1lc3NhZ2UgbG9nIGZpbGUgdGhhdCBjb250YWlucyBhIG1lc3NhZ2Ugd2l0aCBzaWduYXR1cmUuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzLz4KLTwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9TZWN1cmVXUy9TaWduYXR1cmVBbmRFbmNyeXB0aW9uL1NpZ25hdHVyZUFuZEVuY3J5cHRpb24ud3NpbXNnIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvU2VjdXJlV1MvU2lnbmF0dXJlQW5kRW5jcnlwdGlvbi9TaWduYXR1cmVBbmRFbmNyeXB0aW9uLndzaW1zZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThlNjMxMC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9TZWN1cmVXUy9TaWduYXR1cmVBbmRFbmNyeXB0aW9uL1NpZ25hdHVyZUFuZEVuY3J5cHRpb24ud3NpbXNnCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxsb2cgdGltZXN0YW1wPSIyMDA3LTAxLTE2VDE4OjIwOjA5Ljg3OCIKLSAgICB4bWxucz0iaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDQvMDcvbG9nLyIKLSAgICB4bWxuczp3c2ktbW9uQ29uZmlnPSJodHRwOi8vd3d3LndzLWkub3JnL3Rlc3RpbmcvMjAwNC8wNy9tb25pdG9yQ29uZmlnLyIKLSAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4KLSAgPG1vbml0b3IgdmVyc2lvbj0iMS4wIiByZWxlYXNlRGF0ZT0iMjAwMy0wMy0yMCI+Ci0gICAgPGltcGxlbWVudGVyIG5hbWU9IklCTSIgbG9jYXRpb249IiIvPgotICAgIDxlbnZpcm9ubWVudD4KLSAgICAgIDxydW50aW1lIG5hbWU9IkphdmEoVE0pIDIgUnVudGltZSBFbnZpcm9ubWVudCwgU3RhbmRhcmQgRWRpdGlvbiIgdmVyc2lvbj0icHdpMzJkZXYtMjAwNjEwMDJhIChTUjMpIi8+Ci0gICAgICA8b3BlcmF0aW5nU3lzdGVtIG5hbWU9IldpbmRvd3MgWFAiIHZlcnNpb249IjUuMSBidWlsZCAyNjAwIFNlcnZpY2UgUGFjayAyIi8+Ci0gICAgICA8eG1sUGFyc2VyIG5hbWU9IkFwYWNoZSBYZXJjZXMiIHZlcnNpb249IlhNTDRKIDQuNC42Ii8+Ci0gICAgPC9lbnZpcm9ubWVudD4KLSAgICA8d3NpLW1vbkNvbmZpZzpjb25maWd1cmF0aW9uPgotICAgIDx3c2ktbW9uQ29uZmlnOmNvbW1lbnQ+Q29tbWVudDwvd3NpLW1vbkNvbmZpZzpjb21tZW50PgotICAgICAgPHdzaS1tb25Db25maWc6bG9nRmlsZSByZXBsYWNlPSJ0cnVlIiBsb2NhdGlvbj0iVVJMIj4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmFkZFN0eWxlU2hlZXQgaHJlZj0ibnVsbCIgdHlwZT0ibnVsbCIgLz4KLSAgICA8L3dzaS1tb25Db25maWc6bG9nRmlsZT4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmxvZ0R1cmF0aW9uPjYwMDwvd3NpLW1vbkNvbmZpZzpsb2dEdXJhdGlvbj4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmNsZWFudXBUaW1lb3V0U2Vjb25kcz4zPC93c2ktbW9uQ29uZmlnOmNsZWFudXBUaW1lb3V0U2Vjb25kcz4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOm1hbkluVGhlTWlkZGxlPgotICAgICAgPC93c2ktbW9uQ29uZmlnOm1hbkluVGhlTWlkZGxlPgotICAgIDwvd3NpLW1vbkNvbmZpZzpjb25maWd1cmF0aW9uPgotICA8L21vbml0b3I+Ci0KLTxtZXNzYWdlRW50cnkgeHNpOnR5cGU9Imh0dHBNZXNzYWdlRW50cnkiIElEPSIxIiBjb252ZXJzYXRpb25JRD0iMSIgdHlwZT0icmVxdWVzdCIgdGltZXN0YW1wPSIyMDA3LTAxLTE2VDE4OjE5OjU4LjA2MVoiPgotPG1lc3NhZ2VDb250ZW50PiZsdDtzb2FwZW52OkVudmVsb3BlIHhtbG5zOnNvYXBlbnY9JnF1b3Q7aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8mcXVvdDsgeG1sbnM6c29hcGVuYz0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyZxdW90OyB4bWxuczp4c2Q9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEmcXVvdDsgeG1sbnM6eHNpPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7IHhtbG5zOndzYT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA4L2FkZHJlc3NpbmcmcXVvdDsmZ3Q7Jmx0O3NvYXBlbnY6SGVhZGVyJmd0OyZsdDt3c3NlOlNlY3VyaXR5IHNvYXBlbnY6bXVzdFVuZGVyc3RhbmQ9JnF1b3Q7MSZxdW90OyB4bWxuczp3c3NlPSZxdW90O2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZCZxdW90OyZndDsmbHQ7d3NzZTpCaW5hcnlTZWN1cml0eVRva2VuIEVuY29kaW5nVHlwZT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXNvYXAtbWVzc2FnZS1zZWN1cml0eS0xLjAjQmFzZTY0QmluYXJ5JnF1b3Q7IFZhbHVlVHlwZT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXg1MDktdG9rZW4tcHJvZmlsZS0xLjAjWDUwOSZxdW90OyB3c3U6SWQ9JnF1b3Q7eDUwOWJzdF8yMCZxdW90OyB4bWxuczp3c3U9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXV0aWxpdHktMS4wLnhzZCZxdW90OyZndDtNSUlEUVRDQ0FxcWdBd0lCQWdJQ0FRUXdEUVlKS29aSWh2Y05BUUVGQlFBd1RqRUxNQWtHQTFVRUJoTUNTbEF4RVRBUEJnTlZCQWdUQ0V0aGJtRm5ZWGRoTVF3d0NnWURWUVFLRXdOSlFrMHhEREFLQmdOVkJBc1RBMVJTVERFUU1BNEdBMVVFQXhNSFNXNTBJRU5CTWpBZUZ3MHdNVEV3TURFd09UVTBNRFphRncweE1URXdNREV3T1RVME1EWmFNRlF4Q3pBSkJnTlZCQVlUQWtwUU1SRXdEd1lEVlFRSUV3aExZVzVoWjJGM1lURU1NQW9HQTFVRUNoTURTVUpOTVF3d0NnWURWUVFMRXdOVVVrd3hGakFVQmdOVkJBTVREVk5QUVZCU1pYRjFaWE4wWlhJd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNeTNQZloxbVBockVzQnZZaU91SWxQVjNVaXM1WXk2aG14bzJZd1lDMm5OREJQektzbFdVaS9RK2ZLK0ROZFk2S0VIbXVEcmNWY0VtYTQ4SjlYMWE1YXZSbGtzUWZLcHRLb1ZuNGVCeXMyaS93a3d5elFoRGFGamk3OS9Ndm5UUlc4RVZ5OTlGTkt3NFBGbmhPb2UxdGxEY05CdUlIL2ZJdUdPejlFbFRWK2ZBZ01CQUFHamdnRW1NSUlCSWpBSkJnTlZIUk1FQWpBQU1Bc0dBMVVkRHdRRUF3SUY0REFzQmdsZ2hrZ0JodmhDQVEwRUh4WWRUM0JsYmxOVFRDQkhaVzVsY21GMFpXUWdRMlZ5ZEdsbWFXTmhkR1V3SFFZRFZSME9CQllFRklXM0ZEMWNYaWU0ajR6dzFnQXA0Y3VPQVo0bE1JRzZCZ05WSFNNRWdiSXdnYStBRkwzNUlOVTQrV1J5MDl2YWY5ek9zUDdRdk85dm9ZR1NwSUdQTUlHTU1Rc3dDUVlEVlFRR0V3SktVREVSTUE4R0ExVUVDQk1JUzJGdVlXZGhkMkV4RHpBTkJnTlZCQWNUQmxsaGJXRjBiekVNTUFvR0ExVUVDaE1EU1VKTk1Rd3dDZ1lEVlFRTEV3TlVVa3d4R1RBWEJnTlZCQU1URUZOUFFWQWdNaTR4SUZSbGMzUWdRMEV4SWpBZ0Jna3Foa2lHOXcwQkNRRVdFMjFoY25WNVlXMWhRR3B3TG1saWJTNWpiMjJDQWdFQk1BMEdDU3FHU0liM0RRRUJCUVVBQTRHQkFIa3RoZEdEZ0N2ZElMOS92WFVvNzR4cGZPUWQvcnIxb3dCbU1kYjFUV2RPeXp3Yk9IQzdsa1Vsbktya0k3U29md1NMU0RVUDU3MWlpTVhVeDN0UmRtQVZDb0RNTUZ1RFhoOVY3MjEybHVYY2N4MHMxUzVLTjBEM3hXOTdMTE5lZ1FDMC9iK2FGRDhYS3cyVTVadHdibkZUUmdzMDk3ZG16MDlSb3NES2tMbE0mbHQ7L3dzc2U6QmluYXJ5U2VjdXJpdHlUb2tlbiZndDsmbHQ7RW5jcnlwdGVkS2V5IHhtbG5zPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyZxdW90OyZndDsmbHQ7RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLTFfNSZxdW90Oy8mZ3Q7Jmx0O2RzOktleUluZm8geG1sbnM6ZHM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyZxdW90OyZndDsmbHQ7d3NzZTpTZWN1cml0eVRva2VuUmVmZXJlbmNlJmd0OyZsdDt3c3NlOktleUlkZW50aWZpZXIgVmFsdWVUeXBlPSZxdW90O2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3MteDUwOS10b2tlbi1wcm9maWxlLTEuMCNYNTA5U3ViamVjdEtleUlkZW50aWZpZXImcXVvdDsmZ3Q7LzYyd1hPYkVEN3o2YzF5WDdRa3ZOMXRoUWRZPSZsdDsvd3NzZTpLZXlJZGVudGlmaWVyJmd0OyZsdDsvd3NzZTpTZWN1cml0eVRva2VuUmVmZXJlbmNlJmd0OyZsdDsvZHM6S2V5SW5mbyZndDsmbHQ7Q2lwaGVyRGF0YSZndDsmbHQ7Q2lwaGVyVmFsdWUmZ3Q7Z3V1QXJJZ0syMFpRa2xzTmtjajFYemFDbVN0Zyswcng1OXRldUQycEVBWGVSdktiQ1R6a2ZnbFJ2WDhDbi9EaVRCWU5leGJOaHZPbGpYL3N1ZTVVS0pBNUpzbWhTQ2pzc0dmc3dKallYWm5SY25jQXdDVHhmb3R0SXFhd1dRRjE2NUJhejg3dU9SMHlZN2FHaW1PSGlwRTdTTmtSNWxsLzhBaG13VjVnR1drPSZsdDsvQ2lwaGVyVmFsdWUmZ3Q7Jmx0Oy9DaXBoZXJEYXRhJmd0OyZsdDtSZWZlcmVuY2VMaXN0Jmd0OyZsdDtEYXRhUmVmZXJlbmNlIFVSST0mcXVvdDsjd3NzZWN1cml0eV9lbmNyeXB0aW9uX2lkXzIxJnF1b3Q7LyZndDsmbHQ7L1JlZmVyZW5jZUxpc3QmZ3Q7Jmx0Oy9FbmNyeXB0ZWRLZXkmZ3Q7Jmx0O2RzOlNpZ25hdHVyZSB4bWxuczpkcz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJnF1b3Q7Jmd0OyZsdDtkczpTaWduZWRJbmZvJmd0OyZsdDtkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMmcXVvdDsmZ3Q7Jmx0O2VjOkluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdD0mcXVvdDt4c2kgeHNkIHdzYSBzb2FwZW52IHNvYXBlbmMgd3NzZSBkcyAmcXVvdDsgeG1sbnM6ZWM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jJnF1b3Q7LyZndDsmbHQ7L2RzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7Jmx0O2RzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExJnF1b3Q7LyZndDsmbHQ7ZHM6UmVmZXJlbmNlIFVSST0mcXVvdDsjd3NzZWN1cml0eV9zaWduYXR1cmVfaWRfMTkmcXVvdDsmZ3Q7Jmx0O2RzOlRyYW5zZm9ybXMmZ3Q7Jmx0O2RzOlRyYW5zZm9ybSBBbGdvcml0aG09JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jJnF1b3Q7Jmd0OyZsdDtlYzpJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3Q9JnF1b3Q7eHNpIHhzZCB3c2Egc29hcGVudiBzb2FwZW5jIHdzdSBwNjE5ICZxdW90OyB4bWxuczplYz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMmcXVvdDsvJmd0OyZsdDsvZHM6VHJhbnNmb3JtJmd0OyZsdDsvZHM6VHJhbnNmb3JtcyZndDsmbHQ7ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSZxdW90Oy8mZ3Q7Jmx0O2RzOkRpZ2VzdFZhbHVlJmd0O096NHpnMUFTOWR5cExSa3lsbFk5SVhOdE9BVT0mbHQ7L2RzOkRpZ2VzdFZhbHVlJmd0OyZsdDsvZHM6UmVmZXJlbmNlJmd0OyZsdDsvZHM6U2lnbmVkSW5mbyZndDsmbHQ7ZHM6U2lnbmF0dXJlVmFsdWUmZ3Q7R29SQjJlQ2xIajdrbjRWc3lCUVlXdmVNRmx4UUZrNWFvWEUvUFdGc0JDVm1UR3p5UncrSXNabUR4eU1QUDFFdnQ1bXpJSVZzYXB0NWZqRlh6cTVsa0tKRVFwK3Q4VHZkUldTSUsrVUIvalh4dVV0a210K1pTZUtXamNlY1J0VFp0ZEdvTHkwQS8wNnhqK2JBV1Y0aUc2ZmZMdVAyNlloRzhZcytxSkI0WkdVPSZsdDsvZHM6U2lnbmF0dXJlVmFsdWUmZ3Q7Jmx0O2RzOktleUluZm8mZ3Q7Jmx0O3dzc2U6U2VjdXJpdHlUb2tlblJlZmVyZW5jZSZndDsmbHQ7d3NzZTpSZWZlcmVuY2UgVVJJPSZxdW90OyN4NTA5YnN0XzIwJnF1b3Q7IFZhbHVlVHlwZT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXg1MDktdG9rZW4tcHJvZmlsZS0xLjAjWDUwOSZxdW90Oy8mZ3Q7Jmx0Oy93c3NlOlNlY3VyaXR5VG9rZW5SZWZlcmVuY2UmZ3Q7Jmx0Oy9kczpLZXlJbmZvJmd0OyZsdDsvZHM6U2lnbmF0dXJlJmd0OyZsdDsvd3NzZTpTZWN1cml0eSZndDsmbHQ7d3NhOlRvJmd0O2h0dHA6Ly9sb2NhbGhvc3Q6OTA4Mi9XZWJQcm9qZWN0V2l0aFNpZ25hdHVyZUFuZEVuY3J5cHRpb24vc2VydmljZXMvV2ViU2VydmljZSZsdDsvd3NhOlRvJmd0OyZsdDt3c2E6QWN0aW9uJmd0O2luY3JlbWVudCZsdDsvd3NhOkFjdGlvbiZndDsmbHQ7d3NhOk1lc3NhZ2VJRCZndDt1dWlkOjJEMzVCMTA5LTAxMTAtNDAwMC1FMDAwLTAzNUMwOTFBOUREOSZsdDsvd3NhOk1lc3NhZ2VJRCZndDsmbHQ7L3NvYXBlbnY6SGVhZGVyJmd0OyZsdDtzb2FwZW52OkJvZHkgd3N1OklkPSZxdW90O3dzc2VjdXJpdHlfc2lnbmF0dXJlX2lkXzE5JnF1b3Q7IHhtbG5zOndzdT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkJnF1b3Q7Jmd0OyZsdDtFbmNyeXB0ZWREYXRhIElkPSZxdW90O3dzc2VjdXJpdHlfZW5jcnlwdGlvbl9pZF8yMSZxdW90OyBUeXBlPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0NvbnRlbnQmcXVvdDsgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjJnF1b3Q7Jmd0OyZsdDtFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyN0cmlwbGVkZXMtY2JjJnF1b3Q7LyZndDsmbHQ7Q2lwaGVyRGF0YSZndDsmbHQ7Q2lwaGVyVmFsdWUmZ3Q7ZGRBa3h0eWF1ZkxMYzEzZVBlMXREU2lDUXoraDVITDJRTjBnVjZoYzZSM2kzV3FLbzVnUUJ6d1U4SnNaV2JwOXZRMVZNclFZbWUyVFlIanN6S25jQ1p6eEl2U2JqTFo3bk1PdVdGRjdBZDhwNjdjV20vbVBKdz09Jmx0Oy9DaXBoZXJWYWx1ZSZndDsmbHQ7L0NpcGhlckRhdGEmZ3Q7Jmx0Oy9FbmNyeXB0ZWREYXRhJmd0OyZsdDsvc29hcGVudjpCb2R5Jmd0OyZsdDsvc29hcGVudjpFbnZlbG9wZSZndDs8L21lc3NhZ2VDb250ZW50PgotPHNlbmRlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo5MDgyPC9zZW5kZXJIb3N0QW5kUG9ydD4KLTxyZWNlaXZlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo5MDgwPC9yZWNlaXZlckhvc3RBbmRQb3J0PgotPGh0dHBIZWFkZXJzPlBPU1QgL1dlYlByb2plY3RXaXRoU2lnbmF0dXJlQW5kRW5jcnlwdGlvbi9zZXJ2aWNlcy9XZWJTZXJ2aWNlIEhUVFAvMS4xJiN4ZDsKLUhvc3Q6IGxvY2FsaG9zdDo5MDgwJiN4ZDsKLUFjY2VwdDogYXBwbGljYXRpb24vc29hcCt4bWwsbXVsdGlwYXJ0L3JlbGF0ZWQsdGV4dC8qJiN4ZDsKLVVzZXItQWdlbnQ6IElCTSBXZWJTZXJ2aWNlcy8xLjAmI3hkOwotQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUmI3hkOwotUHJhZ21hOiBuby1jYWNoZSYjeGQ7Ci1TT0FQQWN0aW9uOiAmcXVvdDtpbmNyZW1lbnQmcXVvdDsmI3hkOwotQ29ubmVjdGlvbjogS2VlcC1BbGl2ZSYjeGQ7Ci1Db250ZW50LVR5cGU6IHRleHQveG1sOyBjaGFyc2V0PXV0Zi04JiN4ZDsKLUNvbnRlbnQtTGVuZ3RoOiA0Nzc5JiN4ZDsKLURhdGU6IFR1ZSwgMTYgSmFuIDIwMDcgMjM6MTk6NTcgR01UJiN4ZDsKLSYjeGQ7Ci08L2h0dHBIZWFkZXJzPgotPC9tZXNzYWdlRW50cnk+Ci08bWVzc2FnZUVudHJ5IHhzaTp0eXBlPSJodHRwTWVzc2FnZUVudHJ5IiBJRD0iMiIgY29udmVyc2F0aW9uSUQ9IjEiIHR5cGU9InJlc3BvbnNlIiB0aW1lc3RhbXA9IjIwMDctMDEtMTZUMTg6MTk6NTguMjkxWiI+Ci08bWVzc2FnZUNvbnRlbnQ+Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczpzb2FwZW5jPSZxdW90O2h0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvJnF1b3Q7IHhtbG5zOnhzZD0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSZxdW90OyB4bWxuczp4c2k9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UmcXVvdDsgeG1sbnM6d3NhPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgvYWRkcmVzc2luZyZxdW90OyZndDsmbHQ7c29hcGVudjpIZWFkZXImZ3Q7Jmx0O3dzc2U6U2VjdXJpdHkgc29hcGVudjptdXN0VW5kZXJzdGFuZD0mcXVvdDsxJnF1b3Q7IHhtbG5zOndzc2U9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkJnF1b3Q7Jmd0OyZsdDt3c3NlOkJpbmFyeVNlY3VyaXR5VG9rZW4gRW5jb2RpbmdUeXBlPSZxdW90O2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtc29hcC1tZXNzYWdlLXNlY3VyaXR5LTEuMCNCYXNlNjRCaW5hcnkmcXVvdDsgVmFsdWVUeXBlPSZxdW90O2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3MteDUwOS10b2tlbi1wcm9maWxlLTEuMCNYNTA5JnF1b3Q7IHdzdTpJZD0mcXVvdDt4NTA5YnN0XzIzJnF1b3Q7IHhtbG5zOndzdT0mcXVvdDtodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkJnF1b3Q7Jmd0O01JSURRRENDQXFtZ0F3SUJBZ0lDQVFVd0RRWUpLb1pJaHZjTkFRRUZCUUF3VGpFTE1Ba0dBMVVFQmhNQ1NsQXhFVEFQQmdOVkJBZ1RDRXRoYm1GbllYZGhNUXd3Q2dZRFZRUUtFd05KUWsweEREQUtCZ05WQkFzVEExUlNUREVRTUE0R0ExVUVBeE1IU1c1MElFTkJNakFlRncwd01URXdNREV4TURBd016bGFGdzB4TVRFd01ERXhNREF3TXpsYU1GTXhDekFKQmdOVkJBWVRBa3BRTVJFd0R3WURWUVFJRXdoTFlXNWhaMkYzWVRFTU1Bb0dBMVVFQ2hNRFNVSk5NUXd3Q2dZRFZRUUxFd05VVWt3eEZUQVRCZ05WQkFNVERGTlBRVkJRY205MmFXUmxjakNCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBcmFha05KMUp6a1BVdXZQZFhSdlBPT0NsMTJuQndtcXZ0NjVkay94K1F6eHhhckROd0grZVdSYkx5eUtjckF5ZDBYR1YrWmJ2ajZWM085RFNWQ1pVQ0p0dHc2YmJxcWVZaHdBUDNWOHMyNHNJRDc3dGszZ09oVVRFR1l4c2xqWDJvckwyNlNMcUZKTXJ2bnZrMkZSUzJtcmRrWkVCVUc5N21ENFFXY2xuNGQwQ0F3RUFBYU9DQVNZd2dnRWlNQWtHQTFVZEV3UUNNQUF3Q3dZRFZSMFBCQVFEQWdYZ01Dd0dDV0NHU0FHRytFSUJEUVFmRmgxUGNHVnVVMU5NSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpUQWRCZ05WSFE0RUZnUVVsWFNzclZSZlpPTEdkSmRqRUl3VGJ1U1RlNFV3Z2JvR0ExVWRJd1NCc2pDQnI0QVV2ZmtnMVRqNVpITFQyOXAvM002dy90Qzg3MitoZ1pLa2dZOHdnWXd4Q3pBSkJnTlZCQVlUQWtwUU1SRXdEd1lEVlFRSUV3aExZVzVoWjJGM1lURVBNQTBHQTFVRUJ4TUdXV0Z0WVhSdk1Rd3dDZ1lEVlFRS0V3TkpRazB4RERBS0JnTlZCQXNUQTFSU1RERVpNQmNHQTFVRUF4TVFVMDlCVUNBeUxqRWdWR1Z6ZENCRFFURWlNQ0FHQ1NxR1NJYjNEUUVKQVJZVGJXRnlkWGxoYldGQWFuQXVhV0p0TG1OdmJZSUNBUUV3RFFZSktvWklodmNOQVFFRkJRQURnWUVBWEU3bUUxUlBiM2xZQVlKRnpCYjNWQUh2a0NXYS9IUXRDT1pkeW5pQ0hwM01KOUViTlRxK1FwT0hWNjBZRTh1MCs1U2VqQ3pGU09IT3B5QmdMUGpXb3o4SlhRbmpWN1ZjQWJUZ2x3K1pvT1NZeTY0cmZoUmRyOWdpU3M0N0Y0RDZ3b1BzQWQydWJnL1loTWFYTFRTeUd4UGRWM1ZxUXN1dHVTZ0RVRG9xV0NBPSZsdDsvd3NzZTpCaW5hcnlTZWN1cml0eVRva2VuJmd0OyZsdDtFbmNyeXB0ZWRLZXkgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjJnF1b3Q7Jmd0OyZsdDtFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2EtMV81JnF1b3Q7LyZndDsmbHQ7ZHM6S2V5SW5mbyB4bWxuczpkcz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJnF1b3Q7Jmd0OyZsdDt3c3NlOlNlY3VyaXR5VG9rZW5SZWZlcmVuY2UmZ3Q7Jmx0O3dzc2U6S2V5SWRlbnRpZmllciBWYWx1ZVR5cGU9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy14NTA5LXRva2VuLXByb2ZpbGUtMS4wI1g1MDlTdWJqZWN0S2V5SWRlbnRpZmllciZxdW90OyZndDt0eUJVM3FRdWZZWjcxdEpBVTdnVklxZ1JPdVE9Jmx0Oy93c3NlOktleUlkZW50aWZpZXImZ3Q7Jmx0Oy93c3NlOlNlY3VyaXR5VG9rZW5SZWZlcmVuY2UmZ3Q7Jmx0Oy9kczpLZXlJbmZvJmd0OyZsdDtDaXBoZXJEYXRhJmd0OyZsdDtDaXBoZXJWYWx1ZSZndDtZMW5KL2NTSHpvUVJuRlE4eHkwb1l3TUFaZStXMmpia21XRk1ycUdTLzk4RlF4cG9udUs5VEtWUVJiN05VMWJNd1NvTllNbXBOamJuM09GbXdRZ1ZYeHN4Z0Z1SkhTdzdVWVhmMmNTV2NkcTlBTFhNUjdPNE1PSzMyS09WMzhHZ21RNEZSR2h3anBYVHBQam1SSi9PSzVmS29OYlJ0d0gyajllaWFya1l3TVU9Jmx0Oy9DaXBoZXJWYWx1ZSZndDsmbHQ7L0NpcGhlckRhdGEmZ3Q7Jmx0O1JlZmVyZW5jZUxpc3QmZ3Q7Jmx0O0RhdGFSZWZlcmVuY2UgVVJJPSZxdW90OyN3c3NlY3VyaXR5X2VuY3J5cHRpb25faWRfMjQmcXVvdDsvJmd0OyZsdDsvUmVmZXJlbmNlTGlzdCZndDsmbHQ7L0VuY3J5cHRlZEtleSZndDsmbHQ7ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMmcXVvdDsmZ3Q7Jmx0O2RzOlNpZ25lZEluZm8mZ3Q7Jmx0O2RzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyZxdW90OyZndDsmbHQ7ZWM6SW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0PSZxdW90O3hzaSB4c2Qgd3NhIHNvYXBlbnYgc29hcGVuYyB3c3NlIGRzICZxdW90OyB4bWxuczplYz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMmcXVvdDsvJmd0OyZsdDsvZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDsmbHQ7ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEmcXVvdDsvJmd0OyZsdDtkczpSZWZlcmVuY2UgVVJJPSZxdW90OyN3c3NlY3VyaXR5X3NpZ25hdHVyZV9pZF8yMiZxdW90OyZndDsmbHQ7ZHM6VHJhbnNmb3JtcyZndDsmbHQ7ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMmcXVvdDsmZ3Q7Jmx0O2VjOkluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdD0mcXVvdDt4c2kgeHNkIHdzYSBzb2FwZW52IHNvYXBlbmMgd3N1IHA2MTkgJnF1b3Q7IHhtbG5zOmVjPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyZxdW90Oy8mZ3Q7Jmx0Oy9kczpUcmFuc2Zvcm0mZ3Q7Jmx0Oy9kczpUcmFuc2Zvcm1zJmd0OyZsdDtkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExJnF1b3Q7LyZndDsmbHQ7ZHM6RGlnZXN0VmFsdWUmZ3Q7U3J2VndsS1V3N2g5Z3dRVmdadHd6SEJkZTNZPSZsdDsvZHM6RGlnZXN0VmFsdWUmZ3Q7Jmx0Oy9kczpSZWZlcmVuY2UmZ3Q7Jmx0Oy9kczpTaWduZWRJbmZvJmd0OyZsdDtkczpTaWduYXR1cmVWYWx1ZSZndDtyUnpXc0tEaCtGRHlHN3hveWVkN2dVQlhhaXJXRy9uTmR2TEVSNHc1L1lmWVFBY0xGVkdNTmMyNGZsMUlzVnpFcFpmRXJabHU0a3daeUhqcHRHRURWUjROaDRjcitaT0pYVm1wVk90eE92YkpObDRwakxVMS9OM3dsUXlZSUcwcUJyRW1GSUxzM1JMV2sxK1hlRTJObEtWV0FsSkNER1ltTmRFcnJyWmgwa0U9Jmx0Oy9kczpTaWduYXR1cmVWYWx1ZSZndDsmbHQ7ZHM6S2V5SW5mbyZndDsmbHQ7d3NzZTpTZWN1cml0eVRva2VuUmVmZXJlbmNlJmd0OyZsdDt3c3NlOlJlZmVyZW5jZSBVUkk9JnF1b3Q7I3g1MDlic3RfMjMmcXVvdDsgVmFsdWVUeXBlPSZxdW90O2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3MteDUwOS10b2tlbi1wcm9maWxlLTEuMCNYNTA5JnF1b3Q7LyZndDsmbHQ7L3dzc2U6U2VjdXJpdHlUb2tlblJlZmVyZW5jZSZndDsmbHQ7L2RzOktleUluZm8mZ3Q7Jmx0Oy9kczpTaWduYXR1cmUmZ3Q7Jmx0Oy93c3NlOlNlY3VyaXR5Jmd0OyZsdDt3c2E6VG8mZ3Q7aHR0cDovL3d3dy53My5vcmcvMjAwNS8wOC9hZGRyZXNzaW5nL2Fub255bW91cyZsdDsvd3NhOlRvJmd0OyZsdDt3c2E6QWN0aW9uJmd0O2h0dHA6Ly9tYWluL1dlYlNlcnZpY2UvaW5jcmVtZW50UmVzcG9uc2UmbHQ7L3dzYTpBY3Rpb24mZ3Q7Jmx0O3dzYTpNZXNzYWdlSUQmZ3Q7dXVpZDoyRDM1QjIzRi0wMTEwLTQwMDAtRTAwMC0wMzVDMDkxQTlERDkmbHQ7L3dzYTpNZXNzYWdlSUQmZ3Q7Jmx0O3dzYTpSZWxhdGVzVG8mZ3Q7dXVpZDoyRDM1QjEwOS0wMTEwLTQwMDAtRTAwMC0wMzVDMDkxQTlERDkmbHQ7L3dzYTpSZWxhdGVzVG8mZ3Q7Jmx0Oy9zb2FwZW52OkhlYWRlciZndDsmbHQ7c29hcGVudjpCb2R5IHdzdTpJZD0mcXVvdDt3c3NlY3VyaXR5X3NpZ25hdHVyZV9pZF8yMiZxdW90OyB4bWxuczp3c3U9JnF1b3Q7aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXV0aWxpdHktMS4wLnhzZCZxdW90OyZndDsmbHQ7RW5jcnlwdGVkRGF0YSBJZD0mcXVvdDt3c3NlY3VyaXR5X2VuY3J5cHRpb25faWRfMjQmcXVvdDsgVHlwZT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNDb250ZW50JnF1b3Q7IHhtbG5zPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyZxdW90OyZndDsmbHQ7RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyZxdW90Oy8mZ3Q7Jmx0O0NpcGhlckRhdGEmZ3Q7Jmx0O0NpcGhlclZhbHVlJmd0OzdZZUVJOUNNdGowRGpwRkx5cGpCTXB4UkFnZG1ubnEzZDgzMjBrQnZNaHJRdWIvQUh5UHc2azFXYWpiOElRNW5HQmZOSXJDNG0wRmVodFpYVUVTWHlqUGZiU0dGN3NjT2pyMXd4ek40VkFSei90V251WFN5WlF4NkxtSjdLb3BNZXF2eW1kUDAzaGloc2lFWkZLOFNMQklhR2NtbG1BSGkmbHQ7L0NpcGhlclZhbHVlJmd0OyZsdDsvQ2lwaGVyRGF0YSZndDsmbHQ7L0VuY3J5cHRlZERhdGEmZ3Q7Jmx0Oy9zb2FwZW52OkJvZHkmZ3Q7Jmx0Oy9zb2FwZW52OkVudmVsb3BlJmd0OzwvbWVzc2FnZUNvbnRlbnQ+Ci08c2VuZGVySG9zdEFuZFBvcnQ+bG9jYWxob3N0OjkwODA8L3NlbmRlckhvc3RBbmRQb3J0PgotPHJlY2VpdmVySG9zdEFuZFBvcnQ+bG9jYWxob3N0OjkwODI8L3JlY2VpdmVySG9zdEFuZFBvcnQ+Ci08aHR0cEhlYWRlcnM+SFRUUC8xLjEgMjAwIE9LJiN4ZDsKLUNvbnRlbnQtVHlwZTogdGV4dC94bWw7IGNoYXJzZXQ9dXRmLTgmI3hkOwotQ29udGVudC1MYW5ndWFnZTogZW4tVVMmI3hkOwotQ29udGVudC1MZW5ndGg6IDQ4OTAmI3hkOwotRGF0ZTogVHVlLCAxNiBKYW4gMjAwNyAyMzoxOTo1NyBHTVQmI3hkOwotU2VydmVyOiBXZWJTcGhlcmUgQXBwbGljYXRpb24gU2VydmVyLzYuMSYjeGQ7Ci0mI3hkOwotPC9odHRwSGVhZGVycz4KLTwvbWVzc2FnZUVudHJ5PgotPC9sb2c+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9TZWN1cmVXUy9TaWduYXR1cmVBbmRFbmNyeXB0aW9uL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL1NpZ25hdHVyZUFuZEVuY3J5cHRpb24vdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDUwY2VkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL1NlY3VyZVdTL1NpZ25hdHVyZUFuZEVuY3J5cHRpb24vdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IkVuY3J5cHRpb24iPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbWVzc2FnZSBsb2cgZmlsZSB0aGF0IGNvbnRhaW5zIGEgbWVzc2FnZSB3aXRoIHNpZ25hdHVyZSBhbmQgZW5jcnlwdGlvbi4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXMvPgotPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL2JwLzEzMDktMS8xMzA5LTEud3NpbXNnIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTMwOS0xLzEzMDktMS53c2ltc2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1OTM2MDMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTMwOS0xLzEzMDktMS53c2ltc2cKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGxvZyB0aW1lc3RhbXA9IjIwMDYtMDQtMTNUMTg6NTI6MzIuNDg4IgotICAgIHhtbG5zPSJodHRwOi8vd3d3LndzLWkub3JnL3Rlc3RpbmcvMjAwNC8wNy9sb2cvIgotICAgIHhtbG5zOndzaS1tb25Db25maWc9Imh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDA0LzA3L21vbml0b3JDb25maWcvIgotICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPgotICA8bW9uaXRvciB2ZXJzaW9uPSIxLjAiIHJlbGVhc2VEYXRlPSIyMDAzLTAzLTIwIj4KLSAgICA8aW1wbGVtZW50ZXIgbmFtZT0iSUJNIiBsb2NhdGlvbj0iIi8+Ci0gICAgPGVudmlyb25tZW50PgotICAgICAgPHJ1bnRpbWUgbmFtZT0iSmF2YShUTSkgMiBSdW50aW1lIEVudmlyb25tZW50LCBTdGFuZGFyZCBFZGl0aW9uIiB2ZXJzaW9uPSIxLjQuMiIvPgotICAgICAgPG9wZXJhdGluZ1N5c3RlbSBuYW1lPSJMaW51eCIgdmVyc2lvbj0iMi42LjE1LjEiLz4KLSAgICAgIDx4bWxQYXJzZXIgbmFtZT0iQXBhY2hlIFhlcmNlcyIgdmVyc2lvbj0iWE1MNEogNC4zLjYiLz4KLSAgICA8L2Vudmlyb25tZW50PgotICAgIDx3c2ktbW9uQ29uZmlnOmNvbmZpZ3VyYXRpb24+Ci0gICAgPHdzaS1tb25Db25maWc6Y29tbWVudD5Db21tZW50PC93c2ktbW9uQ29uZmlnOmNvbW1lbnQ+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpsb2dGaWxlIHJlcGxhY2U9InRydWUiIGxvY2F0aW9uPSJVUkwiPgotICAgICAgPHdzaS1tb25Db25maWc6YWRkU3R5bGVTaGVldCBocmVmPSJudWxsIiB0eXBlPSJudWxsIiAvPgotICAgIDwvd3NpLW1vbkNvbmZpZzpsb2dGaWxlPgotICAgICAgPHdzaS1tb25Db25maWc6bG9nRHVyYXRpb24+NjAwPC93c2ktbW9uQ29uZmlnOmxvZ0R1cmF0aW9uPgotICAgICAgPHdzaS1tb25Db25maWc6Y2xlYW51cFRpbWVvdXRTZWNvbmRzPjM8L3dzaS1tb25Db25maWc6Y2xlYW51cFRpbWVvdXRTZWNvbmRzPgotICAgICAgPHdzaS1tb25Db25maWc6bWFuSW5UaGVNaWRkbGU+Ci0gICAgICA8L3dzaS1tb25Db25maWc6bWFuSW5UaGVNaWRkbGU+Ci0gICAgPC93c2ktbW9uQ29uZmlnOmNvbmZpZ3VyYXRpb24+Ci0gIDwvbW9uaXRvcj4KLQotPG1lc3NhZ2VFbnRyeSB4c2k6dHlwZT0iaHR0cE1lc3NhZ2VFbnRyeSIgSUQ9IjEiIGNvbnZlcnNhdGlvbklEPSIxIiB0eXBlPSJyZXF1ZXN0IiB0aW1lc3RhbXA9IjIwMDYtMDQtMTNUMTg6NTE6MzAuMTkzWiI+Ci08bWVzc2FnZUNvbnRlbnQ+Jmx0Oz94bWwgdmVyc2lvbj0mcXVvdDsxLjAmcXVvdDsgZW5jb2Rpbmc9JnF1b3Q7VVRGLTgmcXVvdDs/Jmd0OyZsdDtzb2FwZW52OkVudmVsb3BlIHhtbG5zOnNvYXBlbnY9JnF1b3Q7aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8mcXVvdDsgeG1sbnM6eHNkPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hJnF1b3Q7IHhtbG5zOnhzaT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSZxdW90OyZndDsmbHQ7c29hcGVudjpCb2R5Jmd0OyZsdDtjZWxzaXVzVG9GYXJlbmhlaXQgeG1sbnM9JnF1b3Q7aHR0cDovL3d0cCZxdW90OyZndDsmbHQ7Y2Vsc2l1cyZndDszNy4wJmx0Oy9jZWxzaXVzJmd0OyZsdDsvY2Vsc2l1c1RvRmFyZW5oZWl0Jmd0OyZsdDsvc29hcGVudjpCb2R5Jmd0OyZsdDsvc29hcGVudjpFbnZlbG9wZSZndDs8L21lc3NhZ2VDb250ZW50PgotPHNlbmRlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo4MTg1PC9zZW5kZXJIb3N0QW5kUG9ydD4KLTxyZWNlaXZlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo4MDgwPC9yZWNlaXZlckhvc3RBbmRQb3J0PgotPGh0dHBIZWFkZXJzPlBPU1QgL0NvbnZlcnRlclByb2ovc2VydmljZXMvQ29udmVydGVyIEhUVFAvMS4wJiN4ZDsKLUNvbnRlbnQtVHlwZTogdGV4dC94bWw7IGNoYXJzZXQ9dXRmLTgmI3hkOwotQWNjZXB0OiBhcHBsaWNhdGlvbi9zb2FwK3htbCwgYXBwbGljYXRpb24vZGltZSwgbXVsdGlwYXJ0L3JlbGF0ZWQsIHRleHQvKiYjeGQ7Ci1Vc2VyLUFnZW50OiBBeGlzLzEuMi4xJiN4ZDsKLUhvc3Q6IGxvY2FsaG9zdDo4MDgwJiN4ZDsKLUNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlJiN4ZDsKLVByYWdtYTogbm8tY2FjaGUmI3hkOwotU09BUEFjdGlvbjogJnF1b3Q7JnF1b3Q7JiN4ZDsKLUNvbnRlbnQtTGVuZ3RoOiAzNDQmI3hkOwotJiN4ZDsKLTwvaHR0cEhlYWRlcnM+Ci08L21lc3NhZ2VFbnRyeT4KLTxtZXNzYWdlRW50cnkgeHNpOnR5cGU9Imh0dHBNZXNzYWdlRW50cnkiIElEPSIyIiBjb252ZXJzYXRpb25JRD0iMSIgdHlwZT0icmVzcG9uc2UiIHRpbWVzdGFtcD0iMjAwNi0wNC0xM1QxODo1MTozMC45NjBaIj4KLTxtZXNzYWdlQ29udGVudD4mbHQ7P3htbCB2ZXJzaW9uPSZxdW90OzEuMCZxdW90OyBlbmNvZGluZz0mcXVvdDt1dGYtOCZxdW90Oz8mZ3Q7Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczp4c2Q9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEmcXVvdDsgeG1sbnM6eHNpPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7Jmd0OyZsdDtzb2FwZW52OkJvZHkmZ3Q7Jmx0O2NlbHNpdXNUb0ZhcmVuaGVpdFJlc3BvbnNlIHhtbG5zPSZxdW90O2h0dHA6Ly93dHAmcXVvdDsmZ3Q7Jmx0O2NlbHNpdXNUb0ZhcmVuaGVpdFJldHVybiZndDs5OC42Jmx0Oy9jZWxzaXVzVG9GYXJlbmhlaXRSZXR1cm4mZ3Q7Jmx0Oy9jZWxzaXVzVG9GYXJlbmhlaXRSZXNwb25zZSZndDsmbHQ7L3NvYXBlbnY6Qm9keSZndDsmbHQ7L3NvYXBlbnY6RW52ZWxvcGUmZ3Q7PC9tZXNzYWdlQ29udGVudD4KLTxzZW5kZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6ODA4MDwvc2VuZGVySG9zdEFuZFBvcnQ+Ci08cmVjZWl2ZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6ODE4NTwvcmVjZWl2ZXJIb3N0QW5kUG9ydD4KLTxodHRwSGVhZGVycz5IVFRQLzEuMSAyMDAgT0smI3hkOwotQ29udGVudC1UeXBlOiB0ZXh0L3htbDtjaGFyc2V0PXV0Zi04JiN4ZDsKLURhdGU6IFRodSwgMTMgQXByIDIwMDYgMTg6NTE6MzAgR01UJiN4ZDsKLVNlcnZlcjogQXBhY2hlLUNveW90ZS8xLjEmI3hkOwotQ29ubmVjdGlvbjogY2xvc2UmI3hkOwotJiN4ZDsKLTwvaHR0cEhlYWRlcnM+Ci08L21lc3NhZ2VFbnRyeT4KLTwvbG9nPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTMwOS0xL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL2JwLzEzMDktMS90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlZjYxNWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTMwOS0xL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIxMzA5LTEiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbWVzc2FnZSBsb2cgZmlsZSB0aGF0IGlzIGNvbmZvcm1hbnQgdG8gcmVxdWlyZW1lbnQKLSAgICAxMDExLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcy8+Ci08L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTMwOS0yLzEzMDktMi53c2ltc2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9icC8xMzA5LTIvMTMwOS0yLndzaW1zZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y4MjBiZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9icC8xMzA5LTIvMTMwOS0yLndzaW1zZworKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08bG9nIHRpbWVzdGFtcD0iMjAwNi0wNC0xM1QxODo1MjozMi40ODgiCi0gICAgeG1sbnM9Imh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDA0LzA3L2xvZy8iCi0gICAgeG1sbnM6d3NpLW1vbkNvbmZpZz0iaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDQvMDcvbW9uaXRvckNvbmZpZy8iCi0gICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Ci0gIDxtb25pdG9yIHZlcnNpb249IjEuMCIgcmVsZWFzZURhdGU9IjIwMDMtMDMtMjAiPgotICAgIDxpbXBsZW1lbnRlciBuYW1lPSJJQk0iIGxvY2F0aW9uPSIiLz4KLSAgICA8ZW52aXJvbm1lbnQ+Ci0gICAgICA8cnVudGltZSBuYW1lPSJKYXZhKFRNKSAyIFJ1bnRpbWUgRW52aXJvbm1lbnQsIFN0YW5kYXJkIEVkaXRpb24iIHZlcnNpb249IjEuNC4yIi8+Ci0gICAgICA8b3BlcmF0aW5nU3lzdGVtIG5hbWU9IkxpbnV4IiB2ZXJzaW9uPSIyLjYuMTUuMSIvPgotICAgICAgPHhtbFBhcnNlciBuYW1lPSJBcGFjaGUgWGVyY2VzIiB2ZXJzaW9uPSJYTUw0SiA0LjMuNiIvPgotICAgIDwvZW52aXJvbm1lbnQ+Ci0gICAgPHdzaS1tb25Db25maWc6Y29uZmlndXJhdGlvbj4KLSAgICA8d3NpLW1vbkNvbmZpZzpjb21tZW50PkNvbW1lbnQ8L3dzaS1tb25Db25maWc6Y29tbWVudD4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmxvZ0ZpbGUgcmVwbGFjZT0idHJ1ZSIgbG9jYXRpb249IlVSTCI+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzphZGRTdHlsZVNoZWV0IGhyZWY9Im51bGwiIHR5cGU9Im51bGwiIC8+Ci0gICAgPC93c2ktbW9uQ29uZmlnOmxvZ0ZpbGU+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpsb2dEdXJhdGlvbj42MDA8L3dzaS1tb25Db25maWc6bG9nRHVyYXRpb24+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpjbGVhbnVwVGltZW91dFNlY29uZHM+Mzwvd3NpLW1vbkNvbmZpZzpjbGVhbnVwVGltZW91dFNlY29uZHM+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzptYW5JblRoZU1pZGRsZT4KLSAgICAgIDwvd3NpLW1vbkNvbmZpZzptYW5JblRoZU1pZGRsZT4KLSAgICA8L3dzaS1tb25Db25maWc6Y29uZmlndXJhdGlvbj4KLSAgPC9tb25pdG9yPgotCi08bWVzc2FnZUVudHJ5IHhzaTp0eXBlPSJodHRwTWVzc2FnZUVudHJ5IiBJRD0iMSIgY29udmVyc2F0aW9uSUQ9IjEiIHR5cGU9InJlcXVlc3QiIHRpbWVzdGFtcD0iMjAwNi0wNC0xM1QxODo1MTozMC4xOTNaIj4KLTxtZXNzYWdlQ29udGVudD4mbHQ7P3htbCB2ZXJzaW9uPSZxdW90OzEuMCZxdW90OyBlbmNvZGluZz0mcXVvdDtVVEYtOCZxdW90Oz8mZ3Q7Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczp4c2Q9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEmcXVvdDsgeG1sbnM6eHNpPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7Jmd0OyZsdDtzb2FwZW52OkJvZHkmZ3Q7Jmx0O2NlbHNpdXNUb0ZhcmVuaGVpdCB4bWxucz0mcXVvdDtodHRwOi8vd3RwJnF1b3Q7Jmd0OyZsdDtjZWxzaXVzJmd0OzM3LjAmbHQ7L2NlbHNpdXMmZ3Q7Jmx0Oy9jZWxzaXVzVG9GYXJlbmhlaXQmZ3Q7Jmx0Oy9zb2FwZW52OkJvZHkmZ3Q7Jmx0O3NvYXBlbnY6YmFkQ2hpbGQvJmd0OyZsdDsvc29hcGVudjpFbnZlbG9wZSZndDs8L21lc3NhZ2VDb250ZW50PgotPHNlbmRlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo4MTg1PC9zZW5kZXJIb3N0QW5kUG9ydD4KLTxyZWNlaXZlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo4MDgwPC9yZWNlaXZlckhvc3RBbmRQb3J0PgotPGh0dHBIZWFkZXJzPlBPU1QgL0NvbnZlcnRlclByb2ovc2VydmljZXMvQ29udmVydGVyIEhUVFAvMS4wJiN4ZDsKLUNvbnRlbnQtVHlwZTogdGV4dC94bWw7IGNoYXJzZXQ9dXRmLTgmI3hkOwotQWNjZXB0OiBhcHBsaWNhdGlvbi9zb2FwK3htbCwgYXBwbGljYXRpb24vZGltZSwgbXVsdGlwYXJ0L3JlbGF0ZWQsIHRleHQvKiYjeGQ7Ci1Vc2VyLUFnZW50OiBBeGlzLzEuMi4xJiN4ZDsKLUhvc3Q6IGxvY2FsaG9zdDo4MDgwJiN4ZDsKLUNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlJiN4ZDsKLVByYWdtYTogbm8tY2FjaGUmI3hkOwotU09BUEFjdGlvbjogJnF1b3Q7JnF1b3Q7JiN4ZDsKLUNvbnRlbnQtTGVuZ3RoOiAzNDQmI3hkOwotJiN4ZDsKLTwvaHR0cEhlYWRlcnM+Ci08L21lc3NhZ2VFbnRyeT4KLTxtZXNzYWdlRW50cnkgeHNpOnR5cGU9Imh0dHBNZXNzYWdlRW50cnkiIElEPSIyIiBjb252ZXJzYXRpb25JRD0iMSIgdHlwZT0icmVzcG9uc2UiIHRpbWVzdGFtcD0iMjAwNi0wNC0xM1QxODo1MTozMC45NjBaIj4KLTxtZXNzYWdlQ29udGVudD4mbHQ7P3htbCB2ZXJzaW9uPSZxdW90OzEuMCZxdW90OyBlbmNvZGluZz0mcXVvdDt1dGYtOCZxdW90Oz8mZ3Q7Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczp4c2Q9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEmcXVvdDsgeG1sbnM6eHNpPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7Jmd0OyZsdDtzb2FwZW52OkJvZHkmZ3Q7Jmx0O2NlbHNpdXNUb0ZhcmVuaGVpdFJlc3BvbnNlIHhtbG5zPSZxdW90O2h0dHA6Ly93dHAmcXVvdDsmZ3Q7Jmx0O2NlbHNpdXNUb0ZhcmVuaGVpdFJldHVybiZndDs5OC42Jmx0Oy9jZWxzaXVzVG9GYXJlbmhlaXRSZXR1cm4mZ3Q7Jmx0Oy9jZWxzaXVzVG9GYXJlbmhlaXRSZXNwb25zZSZndDsmbHQ7L3NvYXBlbnY6Qm9keSZndDsmbHQ7L3NvYXBlbnY6RW52ZWxvcGUmZ3Q7PC9tZXNzYWdlQ29udGVudD4KLTxzZW5kZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6ODA4MDwvc2VuZGVySG9zdEFuZFBvcnQ+Ci08cmVjZWl2ZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6ODE4NTwvcmVjZWl2ZXJIb3N0QW5kUG9ydD4KLTxodHRwSGVhZGVycz5IVFRQLzEuMSAyMDAgT0smI3hkOwotQ29udGVudC1UeXBlOiB0ZXh0L3htbDtjaGFyc2V0PXV0Zi04JiN4ZDsKLURhdGU6IFRodSwgMTMgQXByIDIwMDYgMTg6NTE6MzAgR01UJiN4ZDsKLVNlcnZlcjogQXBhY2hlLUNveW90ZS8xLjEmI3hkOwotQ29ubmVjdGlvbjogY2xvc2UmI3hkOwotJiN4ZDsKLTwvaHR0cEhlYWRlcnM+Ci08L21lc3NhZ2VFbnRyeT4KLTwvbG9nPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTMwOS0yL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL2JwLzEzMDktMi90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyZjljNzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTMwOS0yL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMTMwOS0yIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG1lc3NhZ2UgbG9nIGZpbGUgd2l0aCBjaGlsZHJlbiBmb2xsb3dpbmcgdGhlCi0gICAgc29hcDpCb2R5IGVsZW1lbnQsIHRodXMgYnJlYWtpbmcgcmVxdWlyZW1lbnQgMTAxMS4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAxMzA5IiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAxMzA5IiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTYwMC0xLzE2MDAtMS53c2ltc2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9icC8xNjAwLTEvMTYwMC0xLndzaW1zZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdhZjY4ZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9icC8xNjAwLTEvMTYwMC0xLndzaW1zZworKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08bG9nIHRpbWVzdGFtcD0iMjAwNi0wNC0xM1QxODo1MjozMi40ODgiCi0gICAgeG1sbnM9Imh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDA0LzA3L2xvZy8iCi0gICAgeG1sbnM6d3NpLW1vbkNvbmZpZz0iaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDQvMDcvbW9uaXRvckNvbmZpZy8iCi0gICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Ci0gIDxtb25pdG9yIHZlcnNpb249IjEuMCIgcmVsZWFzZURhdGU9IjIwMDMtMDMtMjAiPgotICAgIDxpbXBsZW1lbnRlciBuYW1lPSJJQk0iIGxvY2F0aW9uPSIiLz4KLSAgICA8ZW52aXJvbm1lbnQ+Ci0gICAgICA8cnVudGltZSBuYW1lPSJKYXZhKFRNKSAyIFJ1bnRpbWUgRW52aXJvbm1lbnQsIFN0YW5kYXJkIEVkaXRpb24iIHZlcnNpb249IjEuNC4yIi8+Ci0gICAgICA8b3BlcmF0aW5nU3lzdGVtIG5hbWU9IkxpbnV4IiB2ZXJzaW9uPSIyLjYuMTUuMSIvPgotICAgICAgPHhtbFBhcnNlciBuYW1lPSJBcGFjaGUgWGVyY2VzIiB2ZXJzaW9uPSJYTUw0SiA0LjMuNiIvPgotICAgIDwvZW52aXJvbm1lbnQ+Ci0gICAgPHdzaS1tb25Db25maWc6Y29uZmlndXJhdGlvbj4KLSAgICA8d3NpLW1vbkNvbmZpZzpjb21tZW50PkNvbW1lbnQ8L3dzaS1tb25Db25maWc6Y29tbWVudD4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmxvZ0ZpbGUgcmVwbGFjZT0idHJ1ZSIgbG9jYXRpb249IlVSTCI+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzphZGRTdHlsZVNoZWV0IGhyZWY9Im51bGwiIHR5cGU9Im51bGwiIC8+Ci0gICAgPC93c2ktbW9uQ29uZmlnOmxvZ0ZpbGU+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpsb2dEdXJhdGlvbj42MDA8L3dzaS1tb25Db25maWc6bG9nRHVyYXRpb24+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpjbGVhbnVwVGltZW91dFNlY29uZHM+Mzwvd3NpLW1vbkNvbmZpZzpjbGVhbnVwVGltZW91dFNlY29uZHM+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzptYW5JblRoZU1pZGRsZT4KLSAgICAgIDwvd3NpLW1vbkNvbmZpZzptYW5JblRoZU1pZGRsZT4KLSAgICA8L3dzaS1tb25Db25maWc6Y29uZmlndXJhdGlvbj4KLSAgPC9tb25pdG9yPgotCi08bWVzc2FnZUVudHJ5IHhzaTp0eXBlPSJodHRwTWVzc2FnZUVudHJ5IiBJRD0iMSIgY29udmVyc2F0aW9uSUQ9IjEiIHR5cGU9InJlcXVlc3QiIHRpbWVzdGFtcD0iMjAwNi0wNC0xM1QxODo1MTozMC4xOTNaIj4KLTxtZXNzYWdlQ29udGVudD4mbHQ7P3htbCB2ZXJzaW9uPSZxdW90OzEuMCZxdW90OyBlbmNvZGluZz0mcXVvdDtVVEYtOCZxdW90Oz8mZ3Q7Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczp4c2Q9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEmcXVvdDsgeG1sbnM6eHNpPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7Jmd0OyZsdDtzb2FwZW52OkhlYWRlciB4bWxuczp0ZXN0PSZxdW90O2h0dHA6Ly93dHAvdGVzdDE2MDAtMSZxdW90OyZndDsmbHQ7dGVzdDp0ZXN0RWxlbWVudC8mZ3Q7Jmx0Oy9zb2FwZW52OkhlYWRlciZndDsmbHQ7c29hcGVudjpCb2R5Jmd0OyZsdDtjZWxzaXVzVG9GYXJlbmhlaXQgeG1sbnM9JnF1b3Q7aHR0cDovL3d0cCZxdW90OyZndDsmbHQ7Y2Vsc2l1cyZndDszNy4wJmx0Oy9jZWxzaXVzJmd0OyZsdDsvY2Vsc2l1c1RvRmFyZW5oZWl0Jmd0OyZsdDsvc29hcGVudjpCb2R5Jmd0OyZsdDsvc29hcGVudjpFbnZlbG9wZSZndDs8L21lc3NhZ2VDb250ZW50PgotPHNlbmRlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo4MTg1PC9zZW5kZXJIb3N0QW5kUG9ydD4KLTxyZWNlaXZlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo4MDgwPC9yZWNlaXZlckhvc3RBbmRQb3J0PgotPGh0dHBIZWFkZXJzPlBPU1QgL0NvbnZlcnRlclByb2ovc2VydmljZXMvQ29udmVydGVyIEhUVFAvMS4wJiN4ZDsKLUNvbnRlbnQtVHlwZTogdGV4dC94bWw7IGNoYXJzZXQ9dXRmLTgmI3hkOwotQWNjZXB0OiBhcHBsaWNhdGlvbi9zb2FwK3htbCwgYXBwbGljYXRpb24vZGltZSwgbXVsdGlwYXJ0L3JlbGF0ZWQsIHRleHQvKiYjeGQ7Ci1Vc2VyLUFnZW50OiBBeGlzLzEuMi4xJiN4ZDsKLUhvc3Q6IGxvY2FsaG9zdDo4MDgwJiN4ZDsKLUNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlJiN4ZDsKLVByYWdtYTogbm8tY2FjaGUmI3hkOwotU09BUEFjdGlvbjogJnF1b3Q7JnF1b3Q7JiN4ZDsKLUNvbnRlbnQtTGVuZ3RoOiAzNDQmI3hkOwotJiN4ZDsKLTwvaHR0cEhlYWRlcnM+Ci08L21lc3NhZ2VFbnRyeT4KLTxtZXNzYWdlRW50cnkgeHNpOnR5cGU9Imh0dHBNZXNzYWdlRW50cnkiIElEPSIyIiBjb252ZXJzYXRpb25JRD0iMSIgdHlwZT0icmVzcG9uc2UiIHRpbWVzdGFtcD0iMjAwNi0wNC0xM1QxODo1MTozMC45NjBaIj4KLTxtZXNzYWdlQ29udGVudD4mbHQ7P3htbCB2ZXJzaW9uPSZxdW90OzEuMCZxdW90OyBlbmNvZGluZz0mcXVvdDt1dGYtOCZxdW90Oz8mZ3Q7Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczp4c2Q9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEmcXVvdDsgeG1sbnM6eHNpPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7Jmd0OyZsdDtzb2FwZW52OkJvZHkmZ3Q7Jmx0O2NlbHNpdXNUb0ZhcmVuaGVpdFJlc3BvbnNlIHhtbG5zPSZxdW90O2h0dHA6Ly93dHAmcXVvdDsmZ3Q7Jmx0O2NlbHNpdXNUb0ZhcmVuaGVpdFJldHVybiZndDs5OC42Jmx0Oy9jZWxzaXVzVG9GYXJlbmhlaXRSZXR1cm4mZ3Q7Jmx0Oy9jZWxzaXVzVG9GYXJlbmhlaXRSZXNwb25zZSZndDsmbHQ7L3NvYXBlbnY6Qm9keSZndDsmbHQ7L3NvYXBlbnY6RW52ZWxvcGUmZ3Q7PC9tZXNzYWdlQ29udGVudD4KLTxzZW5kZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6ODA4MDwvc2VuZGVySG9zdEFuZFBvcnQ+Ci08cmVjZWl2ZXJIb3N0QW5kUG9ydD5sb2NhbGhvc3Q6ODE4NTwvcmVjZWl2ZXJIb3N0QW5kUG9ydD4KLTxodHRwSGVhZGVycz5IVFRQLzEuMSAyMDAgT0smI3hkOwotQ29udGVudC1UeXBlOiB0ZXh0L3htbDtjaGFyc2V0PXV0Zi04JiN4ZDsKLURhdGU6IFRodSwgMTMgQXByIDIwMDYgMTg6NTE6MzAgR01UJiN4ZDsKLVNlcnZlcjogQXBhY2hlLUNveW90ZS8xLjEmI3hkOwotQ29ubmVjdGlvbjogY2xvc2UmI3hkOwotJiN4ZDsKLTwvaHR0cEhlYWRlcnM+Ci08L21lc3NhZ2VFbnRyeT4KLTwvbG9nPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTYwMC0xL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL2JwLzE2MDAtMS90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MzZkODAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnAvMTYwMC0xL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMTYwMC0xIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG1lc3NhZ2UgbG9nIGZpbGUgdGhhdCBjb250YWlucyBhIG1lc3NhZ2Ugd2l0aCBhCi0gICAgaGVhZGVyIGVudHJ5IHdob3NlIG5hbWVzcGFjZSBpcyBkZWZpbmVkIGluIHRoZSBzb2FwOmhlYWRlciBlbGVtZW50LiAgVGhpcwotICAgIGlzIGNvbmZpcm1hbnQgdG8gcmVxdWlyZW1lbnQgOTk4MCBpbiB0aGUgQmFzaWMgUHJvZmlsZSBidXQgaXMgY3VycmVudGx5Ci0gICAgZmxhZ2dlZCBhcyBhIGNvbmZvcm1hbmNlIGVycm9yLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcy8+Ci08L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnVnemlsbGEvMTQxOTY2LzE0MTk2Ni53c2ltc2cgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9idWd6aWxsYS8xNDE5NjYvMTQxOTY2LndzaW1zZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI0NWZhOC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy9tZXNzYWdlTG9ncy9idWd6aWxsYS8xNDE5NjYvMTQxOTY2LndzaW1zZworKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08bG9nIHRpbWVzdGFtcD0iMjAwNi0wNC0xM1QxODo1MjozMi40ODgiCi0gICAgeG1sbnM9Imh0dHA6Ly93d3cud3MtaS5vcmcvdGVzdGluZy8yMDA0LzA3L2xvZy8iCi0gICAgeG1sbnM6d3NpLW1vbkNvbmZpZz0iaHR0cDovL3d3dy53cy1pLm9yZy90ZXN0aW5nLzIwMDQvMDcvbW9uaXRvckNvbmZpZy8iCi0gICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Ci0gIDxtb25pdG9yIHZlcnNpb249IjEuMCIgcmVsZWFzZURhdGU9IjIwMDMtMDMtMjAiPgotICAgIDxpbXBsZW1lbnRlciBuYW1lPSJJQk0iIGxvY2F0aW9uPSIiLz4KLSAgICA8ZW52aXJvbm1lbnQ+Ci0gICAgICA8cnVudGltZSBuYW1lPSJKYXZhKFRNKSAyIFJ1bnRpbWUgRW52aXJvbm1lbnQsIFN0YW5kYXJkIEVkaXRpb24iIHZlcnNpb249IjEuNC4yIi8+Ci0gICAgICA8b3BlcmF0aW5nU3lzdGVtIG5hbWU9IkxpbnV4IiB2ZXJzaW9uPSIyLjYuMTUuMSIvPgotICAgICAgPHhtbFBhcnNlciBuYW1lPSJBcGFjaGUgWGVyY2VzIiB2ZXJzaW9uPSJYTUw0SiA0LjMuNiIvPgotICAgIDwvZW52aXJvbm1lbnQ+Ci0gICAgPHdzaS1tb25Db25maWc6Y29uZmlndXJhdGlvbj4KLSAgICA8d3NpLW1vbkNvbmZpZzpjb21tZW50PkNvbW1lbnQ8L3dzaS1tb25Db25maWc6Y29tbWVudD4KLSAgICAgIDx3c2ktbW9uQ29uZmlnOmxvZ0ZpbGUgcmVwbGFjZT0idHJ1ZSIgbG9jYXRpb249IlVSTCI+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzphZGRTdHlsZVNoZWV0IGhyZWY9Im51bGwiIHR5cGU9Im51bGwiIC8+Ci0gICAgPC93c2ktbW9uQ29uZmlnOmxvZ0ZpbGU+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpsb2dEdXJhdGlvbj42MDA8L3dzaS1tb25Db25maWc6bG9nRHVyYXRpb24+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzpjbGVhbnVwVGltZW91dFNlY29uZHM+Mzwvd3NpLW1vbkNvbmZpZzpjbGVhbnVwVGltZW91dFNlY29uZHM+Ci0gICAgICA8d3NpLW1vbkNvbmZpZzptYW5JblRoZU1pZGRsZT4KLSAgICAgIDwvd3NpLW1vbkNvbmZpZzptYW5JblRoZU1pZGRsZT4KLSAgICA8L3dzaS1tb25Db25maWc6Y29uZmlndXJhdGlvbj4KLSAgPC9tb25pdG9yPgotCi08bWVzc2FnZUVudHJ5IHhzaTp0eXBlPSJodHRwTWVzc2FnZUVudHJ5IiBJRD0iMSIgY29udmVyc2F0aW9uSUQ9IjEiIHR5cGU9InJlcXVlc3QiIHRpbWVzdGFtcD0iMjAwNi0wNC0xM1QxODo1MTozMC4xOTNaIj4KLTxtZXNzYWdlQ29udGVudD4mbHQ7P3htbCB2ZXJzaW9uPSZxdW90OzEuMCZxdW90OyBlbmNvZGluZz0mcXVvdDtVVEYtOCZxdW90Oz8mZ3Q7Jmx0O3NvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0mcXVvdDtodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyZxdW90OyB4bWxuczp4c2Q9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEmcXVvdDsgeG1sbnM6eHNpPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7Jmd0OyZsdDtzb2FwZW52OkJvZHkmZ3Q7Jmx0O2NlbHNpdXNUb0ZhcmVuaGVpdCB4bWxucz0mcXVvdDtodHRwOi8vd3RwJnF1b3Q7Jmd0OyZsdDtjZWxzaXVzJmd0OzM3LjAmbHQ7L2NlbHNpdXMmZ3Q7Jmx0Oy9jZWxzaXVzVG9GYXJlbmhlaXQmZ3Q7Jmx0Oy9zb2FwZW52OkJvZHkmZ3Q7Jmx0O3NvYXBlbnY6YmFkQ2hpbGQvJmd0OyZsdDsvc29hcGVudjpFbnZlbG9wZSZndDs8L21lc3NhZ2VDb250ZW50PgotPHNlbmRlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo4MTg1PC9zZW5kZXJIb3N0QW5kUG9ydD4KLTxyZWNlaXZlckhvc3RBbmRQb3J0PmxvY2FsaG9zdDo4MDgwPC9yZWNlaXZlckhvc3RBbmRQb3J0PgotPGh0dHBIZWFkZXJzPlBPU1QgL0NvbnZlcnRlclByb2ovc2VydmljZXMvQ29udmVydGVyIEhUVFAvMS4xJiN4ZDsKLUNvbnRlbnQtVHlwZTogdGV4dC94bWw7IGNoYXJzZXQ9dXRmLTgmI3hkOwotQWNjZXB0OiBhcHBsaWNhdGlvbi9zb2FwK3htbCwgYXBwbGljYXRpb24vZGltZSwgbXVsdGlwYXJ0L3JlbGF0ZWQsIHRleHQvKiYjeGQ7Ci1Vc2VyLUFnZW50OiBBeGlzLzEuMi4xJiN4ZDsKLUhvc3Q6IGxvY2FsaG9zdDo4MDgwJiN4ZDsKLUNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlJiN4ZDsKLVByYWdtYTogbm8tY2FjaGUmI3hkOwotU09BUEFjdGlvbjogJnF1b3Q7JnF1b3Q7JiN4ZDsKLUNvbnRlbnQtTGVuZ3RoOiAzNDQmI3hkOwotJiN4ZDsKLTwvaHR0cEhlYWRlcnM+Ci08L21lc3NhZ2VFbnRyeT4KLTwvbG9nPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnVnemlsbGEvMTQxOTY2L3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL21lc3NhZ2VMb2dzL2J1Z3ppbGxhLzE0MTk2Ni90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MjgxYjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvbWVzc2FnZUxvZ3MvYnVnemlsbGEvMTQxOTY2L3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMTQxOTY2Ij4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG1lc3NhZ2UgbG9nIGZpbGUgdGhhdCBjb250YWlucyBvbmx5IGEgcmVxdWVzdCBhbmQKLSAgICBicmVha3MgcmVxdWlyZW1lbnQgMTAxMS4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAxMzA5IiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAxMzA5IiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9TT0FQMTIvSGVsbG9TZXJ2aWNlX3NjaGVtYTEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9TT0FQMTIvSGVsbG9TZXJ2aWNlX3NjaGVtYTEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTRjOWViLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvU09BUDEyL0hlbGxvU2VydmljZV9zY2hlbWExLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVzdC8iIHZlcnNpb249IjEuMCI+Ci0KLSAgPHhzOmVsZW1lbnQgeG1sbnM6bnMxPSJodHRwOi8vdGVzdC8iIG5hbWU9ImhlbGxvIiB0eXBlPSJuczE6aGVsbG8iLz4KLQotICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaGVsbG8iPgotICAgIDx4czpzZXF1ZW5jZT4KLSAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbmFtZT0iYXJnMCIgdHlwZT0ieHM6c3RyaW5nIi8+Ci0gICAgPC94czpzZXF1ZW5jZT4KLSAgPC94czpjb21wbGV4VHlwZT4KLQotICA8eHM6ZWxlbWVudCB4bWxuczpuczI9Imh0dHA6Ly90ZXN0LyIgbmFtZT0iaGVsbG9SZXNwb25zZSIgdHlwZT0ibnMyOmhlbGxvUmVzcG9uc2UiLz4KLQotICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaGVsbG9SZXNwb25zZSI+Ci0gICAgPHhzOnNlcXVlbmNlPgotICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBuYW1lPSJyZXR1cm4iIHR5cGU9InhzOnN0cmluZyIvPgotICAgIDwveHM6c2VxdWVuY2U+Ci0gIDwveHM6Y29tcGxleFR5cGU+Ci08L3hzOnNjaGVtYT4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvU09BUDEyL1NpbXBsZUxvZy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9TT0FQMTIvU2ltcGxlTG9nLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZTgzMzEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9TT0FQMTIvU2ltcGxlTG9nLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGRlZmluaXRpb25zIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6c29hcDEyPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAxMi8iIHhtbG5zOnRucz0iaHR0cDovL3Rlc3QvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBuYW1lPSJIZWxsb1NlcnZpY2UiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3Rlc3QvIj4KLSAgPHR5cGVzPgotICAgIDx4c2Q6c2NoZW1hPgotICAgICAgPHhzZDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vdGVzdC8iIHNjaGVtYUxvY2F0aW9uPSJIZWxsb1NlcnZpY2Vfc2NoZW1hMS54c2QiLz4KLSAgICA8L3hzZDpzY2hlbWE+Ci0gIDwvdHlwZXM+Ci0gIDxtZXNzYWdlIG5hbWU9ImhlbGxvIj4KLSAgICA8cGFydCBlbGVtZW50PSJ0bnM6aGVsbG8iIG5hbWU9InBhcmFtZXRlcnMiLz4KLSAgPC9tZXNzYWdlPgotICA8bWVzc2FnZSBuYW1lPSJoZWxsb1Jlc3BvbnNlIj4KLSAgICA8cGFydCBlbGVtZW50PSJ0bnM6aGVsbG9SZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIvPgotICA8L21lc3NhZ2U+Ci0gIDxwb3J0VHlwZSBuYW1lPSJIZWxsbyI+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJoZWxsbyI+Ci0gICAgICA8aW5wdXQgbWVzc2FnZT0idG5zOmhlbGxvIi8+Ci0gICAgICA8b3V0cHV0IG1lc3NhZ2U9InRuczpoZWxsb1Jlc3BvbnNlIi8+Ci0gICAgPC9vcGVyYXRpb24+Ci0gIDwvcG9ydFR5cGU+Ci0gIDxiaW5kaW5nIG5hbWU9IkhlbGxvUG9ydEJpbmRpbmciIHR5cGU9InRuczpIZWxsbyI+Ci0gICAgPHNvYXAxMjpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAvYmluZGluZ3MvSFRUUC8iLz4KLSAgICA8b3BlcmF0aW9uIG5hbWU9ImhlbGxvIj4KLSAgICAgIDxzb2FwMTI6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPGlucHV0PgotICAgICAgICA8c29hcDEyOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L2lucHV0PgotICAgICAgPG91dHB1dD4KLSAgICAgICAgPHNvYXAxMjpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC9vdXRwdXQ+Ci0gICAgPC9vcGVyYXRpb24+Ci0gIDwvYmluZGluZz4KLSAgPHNlcnZpY2UgbmFtZT0iSGVsbG9TZXJ2aWNlIj4KLSAgICA8cG9ydCBiaW5kaW5nPSJ0bnM6SGVsbG9Qb3J0QmluZGluZyIgbmFtZT0iSGVsbG9Qb3J0Ij4KLSAgICAgIDxzb2FwMTI6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo5MDgxL3RkMTIvSGVsbG9TZXJ2aWNlIi8+Ci0gICAgPC9wb3J0PgotICA8L3NlcnZpY2U+Ci08L2RlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9TZWN1cmVXUy9FbmNyeXB0aW9uLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL1NlY3VyZVdTL0VuY3J5cHRpb24ud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI5NjM2NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL1NlY3VyZVdTL0VuY3J5cHRpb24ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9tYWluIiB4bWxuczppbXBsPSJodHRwOi8vbWFpbiIgeG1sbnM6aW50Zj0iaHR0cDovL21haW4iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6d3NpPSJodHRwOi8vd3MtaS5vcmcvcHJvZmlsZXMvYmFzaWMvMS4xL3hzZCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gPHdzZGw6dHlwZXM+Ci0gIDxzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vbWFpbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICA8ZWxlbWVudCBuYW1lPSJpbmNyZW1lbnRSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJpbmNyZW1lbnRSZXR1cm4iIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0iaW5jcmVtZW50Ij4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9InZhbHVlIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgPC9zY2hlbWE+Ci0gPC93c2RsOnR5cGVzPgotCi0gICA8d3NkbDptZXNzYWdlIG5hbWU9ImluY3JlbWVudFJlc3BvbnNlIj4KLSAgICAgPHdzZGw6cGFydCBlbGVtZW50PSJpbnRmOmluY3JlbWVudFJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIi8+Ci0KLSAgPC93c2RsOm1lc3NhZ2U+Ci0KLSAgIDx3c2RsOm1lc3NhZ2UgbmFtZT0iaW5jcmVtZW50UmVxdWVzdCI+Ci0gICAgIDx3c2RsOnBhcnQgZWxlbWVudD0iaW50ZjppbmNyZW1lbnQiIG5hbWU9InBhcmFtZXRlcnMiLz4KLQotICA8L3dzZGw6bWVzc2FnZT4KLQotICAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iV2ViU2VydmljZSI+Ci0gICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJpbmNyZW1lbnQiPgotICAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9ImludGY6aW5jcmVtZW50UmVxdWVzdCIgbmFtZT0iaW5jcmVtZW50UmVxdWVzdCIvPgotCi0gICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9ImludGY6aW5jcmVtZW50UmVzcG9uc2UiIG5hbWU9ImluY3JlbWVudFJlc3BvbnNlIi8+Ci0KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotCi0gIDwvd3NkbDpwb3J0VHlwZT4KLQotICAgPHdzZGw6YmluZGluZyBuYW1lPSJXZWJTZXJ2aWNlU29hcEJpbmRpbmciIHR5cGU9ImludGY6V2ViU2VydmljZSI+Ci0gPHdzYXc6VXNpbmdBZGRyZXNzaW5nIHdzZGw6cmVxdWlyZWQ9ImZhbHNlIiB4bWxuczp3c2F3PSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzA1L2FkZHJlc3Npbmcvd3NkbCIvPgotCi0gICAgIDx3c2Rsc29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLQotICAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iaW5jcmVtZW50Ij4KLSAgICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249ImluY3JlbWVudCIvPgotCi0gICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iaW5jcmVtZW50UmVxdWVzdCI+Ci0gICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLQotICAgICAgPC93c2RsOmlucHV0PgotCi0gICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImluY3JlbWVudFJlc3BvbnNlIj4KLSAgICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotCi0gICAgICA8L3dzZGw6b3V0cHV0PgotCi0gICAgPC93c2RsOm9wZXJhdGlvbj4KLQotICA8L3dzZGw6YmluZGluZz4KLQotICAgPHdzZGw6c2VydmljZSBuYW1lPSJXZWJTZXJ2aWNlU2VydmljZSI+Ci0gICAgIDx3c2RsOnBvcnQgYmluZGluZz0iaW50ZjpXZWJTZXJ2aWNlU29hcEJpbmRpbmciIG5hbWU9IldlYlNlcnZpY2UiPgotICAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0OjkwODAvV2ViUHJvamVjdFdpdGhFbmNyaXB0aW9uL3NlcnZpY2VzL1dlYlNlcnZpY2UiLz4KLQotICAgIDwvd3NkbDpwb3J0PgotCi0gIDwvd3NkbDpzZXJ2aWNlPgotCi08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL1NlY3VyZVdTL05vU2VjdXJpdHkud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvU2VjdXJlV1MvTm9TZWN1cml0eS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjk2MzY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvU2VjdXJlV1MvTm9TZWN1cml0eS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL21haW4iIHhtbG5zOmltcGw9Imh0dHA6Ly9tYWluIiB4bWxuczppbnRmPSJodHRwOi8vbWFpbiIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczp3c2k9Imh0dHA6Ly93cy1pLm9yZy9wcm9maWxlcy9iYXNpYy8xLjEveHNkIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLSA8d3NkbDp0eXBlcz4KLSAgPHNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9tYWluIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KLSAgIDxlbGVtZW50IG5hbWU9ImluY3JlbWVudFJlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImluY3JlbWVudFJldHVybiIgdHlwZT0ieHNkOmludCIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJpbmNyZW1lbnQiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0idmFsdWUiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICA8L3NjaGVtYT4KLSA8L3dzZGw6dHlwZXM+Ci0KLSAgIDx3c2RsOm1lc3NhZ2UgbmFtZT0iaW5jcmVtZW50UmVzcG9uc2UiPgotICAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9ImludGY6aW5jcmVtZW50UmVzcG9uc2UiIG5hbWU9InBhcmFtZXRlcnMiLz4KLQotICA8L3dzZGw6bWVzc2FnZT4KLQotICAgPHdzZGw6bWVzc2FnZSBuYW1lPSJpbmNyZW1lbnRSZXF1ZXN0Ij4KLSAgICAgPHdzZGw6cGFydCBlbGVtZW50PSJpbnRmOmluY3JlbWVudCIgbmFtZT0icGFyYW1ldGVycyIvPgotCi0gIDwvd3NkbDptZXNzYWdlPgotCi0gICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJXZWJTZXJ2aWNlIj4KLSAgICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImluY3JlbWVudCI+Ci0gICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0iaW50ZjppbmNyZW1lbnRSZXF1ZXN0IiBuYW1lPSJpbmNyZW1lbnRSZXF1ZXN0Ii8+Ci0KLSAgICAgICA8d3NkbDpvdXRwdXQgbWVzc2FnZT0iaW50ZjppbmNyZW1lbnRSZXNwb25zZSIgbmFtZT0iaW5jcmVtZW50UmVzcG9uc2UiLz4KLQotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0KLSAgPC93c2RsOnBvcnRUeXBlPgotCi0gICA8d3NkbDpiaW5kaW5nIG5hbWU9IldlYlNlcnZpY2VTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpXZWJTZXJ2aWNlIj4KLSA8d3NhdzpVc2luZ0FkZHJlc3Npbmcgd3NkbDpyZXF1aXJlZD0iZmFsc2UiIHhtbG5zOndzYXc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMDUvYWRkcmVzc2luZy93c2RsIi8+Ci0KLSAgICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotCi0gICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJpbmNyZW1lbnQiPgotICAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaW5jcmVtZW50Ii8+Ci0KLSAgICAgICA8d3NkbDppbnB1dCBuYW1lPSJpbmNyZW1lbnRSZXF1ZXN0Ij4KLSAgICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotCi0gICAgICA8L3dzZGw6aW5wdXQ+Ci0KLSAgICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iaW5jcmVtZW50UmVzcG9uc2UiPgotICAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotCi0gIDwvd3NkbDpiaW5kaW5nPgotCi0gICA8d3NkbDpzZXJ2aWNlIG5hbWU9IldlYlNlcnZpY2VTZXJ2aWNlIj4KLSAgICAgPHdzZGw6cG9ydCBiaW5kaW5nPSJpbnRmOldlYlNlcnZpY2VTb2FwQmluZGluZyIgbmFtZT0iV2ViU2VydmljZSI+Ci0gICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6OTA4MC9XZWJQcm9qZWN0V2l0aEVuY3JpcHRpb24vc2VydmljZXMvV2ViU2VydmljZSIvPgotCi0gICAgPC93c2RsOnBvcnQ+Ci0KLSAgPC93c2RsOnNlcnZpY2U+Ci0KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvU2VjdXJlV1MvU2lnbmF0dXJlLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL1NlY3VyZVdTL1NpZ25hdHVyZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjk2MzY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvU2VjdXJlV1MvU2lnbmF0dXJlLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vbWFpbiIgeG1sbnM6aW1wbD0iaHR0cDovL21haW4iIHhtbG5zOmludGY9Imh0dHA6Ly9tYWluIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOndzaT0iaHR0cDovL3dzLWkub3JnL3Byb2ZpbGVzL2Jhc2ljLzEuMS94c2QiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotIDx3c2RsOnR5cGVzPgotICA8c2NoZW1hIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL21haW4iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgotICAgPGVsZW1lbnQgbmFtZT0iaW5jcmVtZW50UmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0iaW5jcmVtZW50UmV0dXJuIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9ImluY3JlbWVudCI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJ2YWx1ZSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gIDwvc2NoZW1hPgotIDwvd3NkbDp0eXBlcz4KLQotICAgPHdzZGw6bWVzc2FnZSBuYW1lPSJpbmNyZW1lbnRSZXNwb25zZSI+Ci0gICAgIDx3c2RsOnBhcnQgZWxlbWVudD0iaW50ZjppbmNyZW1lbnRSZXNwb25zZSIgbmFtZT0icGFyYW1ldGVycyIvPgotCi0gIDwvd3NkbDptZXNzYWdlPgotCi0gICA8d3NkbDptZXNzYWdlIG5hbWU9ImluY3JlbWVudFJlcXVlc3QiPgotICAgICA8d3NkbDpwYXJ0IGVsZW1lbnQ9ImludGY6aW5jcmVtZW50IiBuYW1lPSJwYXJhbWV0ZXJzIi8+Ci0KLSAgPC93c2RsOm1lc3NhZ2U+Ci0KLSAgIDx3c2RsOnBvcnRUeXBlIG5hbWU9IldlYlNlcnZpY2UiPgotICAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iaW5jcmVtZW50Ij4KLSAgICAgICA8d3NkbDppbnB1dCBtZXNzYWdlPSJpbnRmOmluY3JlbWVudFJlcXVlc3QiIG5hbWU9ImluY3JlbWVudFJlcXVlc3QiLz4KLQotICAgICAgIDx3c2RsOm91dHB1dCBtZXNzYWdlPSJpbnRmOmluY3JlbWVudFJlc3BvbnNlIiBuYW1lPSJpbmNyZW1lbnRSZXNwb25zZSIvPgotCi0gICAgPC93c2RsOm9wZXJhdGlvbj4KLQotICA8L3dzZGw6cG9ydFR5cGU+Ci0KLSAgIDx3c2RsOmJpbmRpbmcgbmFtZT0iV2ViU2VydmljZVNvYXBCaW5kaW5nIiB0eXBlPSJpbnRmOldlYlNlcnZpY2UiPgotIDx3c2F3OlVzaW5nQWRkcmVzc2luZyB3c2RsOnJlcXVpcmVkPSJmYWxzZSIgeG1sbnM6d3Nhdz0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8wNS9hZGRyZXNzaW5nL3dzZGwiLz4KLQotICAgICA8d3NkbHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0KLSAgICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImluY3JlbWVudCI+Ci0gICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJpbmNyZW1lbnQiLz4KLQotICAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImluY3JlbWVudFJlcXVlc3QiPgotICAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0KLSAgICAgIDwvd3NkbDppbnB1dD4KLQotICAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJpbmNyZW1lbnRSZXNwb25zZSI+Ci0gICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLQotICAgICAgPC93c2RsOm91dHB1dD4KLQotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0KLSAgPC93c2RsOmJpbmRpbmc+Ci0KLSAgIDx3c2RsOnNlcnZpY2UgbmFtZT0iV2ViU2VydmljZVNlcnZpY2UiPgotICAgICA8d3NkbDpwb3J0IGJpbmRpbmc9ImludGY6V2ViU2VydmljZVNvYXBCaW5kaW5nIiBuYW1lPSJXZWJTZXJ2aWNlIj4KLSAgICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo5MDgwL1dlYlByb2plY3RXaXRoRW5jcmlwdGlvbi9zZXJ2aWNlcy9XZWJTZXJ2aWNlIi8+Ci0KLSAgICA8L3dzZGw6cG9ydD4KLQotICA8L3dzZGw6c2VydmljZT4KLQotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9TZWN1cmVXUy9TaWduYXR1cmVBbmRFbmNyeXB0aW9uLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL1NlY3VyZVdTL1NpZ25hdHVyZUFuZEVuY3J5cHRpb24ud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI5NjM2NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL1NlY3VyZVdTL1NpZ25hdHVyZUFuZEVuY3J5cHRpb24ud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9tYWluIiB4bWxuczppbXBsPSJodHRwOi8vbWFpbiIgeG1sbnM6aW50Zj0iaHR0cDovL21haW4iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6d3NpPSJodHRwOi8vd3MtaS5vcmcvcHJvZmlsZXMvYmFzaWMvMS4xL3hzZCIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gPHdzZGw6dHlwZXM+Ci0gIDxzY2hlbWEgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vbWFpbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+Ci0gICA8ZWxlbWVudCBuYW1lPSJpbmNyZW1lbnRSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJpbmNyZW1lbnRSZXR1cm4iIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0iaW5jcmVtZW50Ij4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9InZhbHVlIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgPC9zY2hlbWE+Ci0gPC93c2RsOnR5cGVzPgotCi0gICA8d3NkbDptZXNzYWdlIG5hbWU9ImluY3JlbWVudFJlc3BvbnNlIj4KLSAgICAgPHdzZGw6cGFydCBlbGVtZW50PSJpbnRmOmluY3JlbWVudFJlc3BvbnNlIiBuYW1lPSJwYXJhbWV0ZXJzIi8+Ci0KLSAgPC93c2RsOm1lc3NhZ2U+Ci0KLSAgIDx3c2RsOm1lc3NhZ2UgbmFtZT0iaW5jcmVtZW50UmVxdWVzdCI+Ci0gICAgIDx3c2RsOnBhcnQgZWxlbWVudD0iaW50ZjppbmNyZW1lbnQiIG5hbWU9InBhcmFtZXRlcnMiLz4KLQotICA8L3dzZGw6bWVzc2FnZT4KLQotICAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iV2ViU2VydmljZSI+Ci0gICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJpbmNyZW1lbnQiPgotICAgICAgIDx3c2RsOmlucHV0IG1lc3NhZ2U9ImludGY6aW5jcmVtZW50UmVxdWVzdCIgbmFtZT0iaW5jcmVtZW50UmVxdWVzdCIvPgotCi0gICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9ImludGY6aW5jcmVtZW50UmVzcG9uc2UiIG5hbWU9ImluY3JlbWVudFJlc3BvbnNlIi8+Ci0KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotCi0gIDwvd3NkbDpwb3J0VHlwZT4KLQotICAgPHdzZGw6YmluZGluZyBuYW1lPSJXZWJTZXJ2aWNlU29hcEJpbmRpbmciIHR5cGU9ImludGY6V2ViU2VydmljZSI+Ci0gPHdzYXc6VXNpbmdBZGRyZXNzaW5nIHdzZGw6cmVxdWlyZWQ9ImZhbHNlIiB4bWxuczp3c2F3PSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzA1L2FkZHJlc3Npbmcvd3NkbCIvPgotCi0gICAgIDx3c2Rsc29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLQotICAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iaW5jcmVtZW50Ij4KLSAgICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249ImluY3JlbWVudCIvPgotCi0gICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iaW5jcmVtZW50UmVxdWVzdCI+Ci0gICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLQotICAgICAgPC93c2RsOmlucHV0PgotCi0gICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImluY3JlbWVudFJlc3BvbnNlIj4KLSAgICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotCi0gICAgICA8L3dzZGw6b3V0cHV0PgotCi0gICAgPC93c2RsOm9wZXJhdGlvbj4KLQotICA8L3dzZGw6YmluZGluZz4KLQotICAgPHdzZGw6c2VydmljZSBuYW1lPSJXZWJTZXJ2aWNlU2VydmljZSI+Ci0gICAgIDx3c2RsOnBvcnQgYmluZGluZz0iaW50ZjpXZWJTZXJ2aWNlU29hcEJpbmRpbmciIG5hbWU9IldlYlNlcnZpY2UiPgotICAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0OjkwODAvV2ViUHJvamVjdFdpdGhFbmNyaXB0aW9uL3NlcnZpY2VzL1dlYlNlcnZpY2UiLz4KLQotICAgIDwvd3NkbDpwb3J0PgotCi0gIDwvd3NkbDpzZXJ2aWNlPgotCi08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2FwLzI5NDEtMS8yOTQxLTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYXAvMjk0MS0xLzI5NDEtMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjRlMDBmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYXAvMjk0MS0xLzI5NDEtMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6aW1wbD0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzcyI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcm92aW5jZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0iY2l0eSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ic3RyZWV0IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwb3N0YWxDb2RlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwaG9uZU51bWJlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6UGhvbmVOdW1iZXIiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJQaG9uZU51bWJlciI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJhcmVhIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByZWZpeCIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJudW1iZXIiIHR5cGU9InhzZDppbnQiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXR1cm4iIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgIDxlbGVtZW50IG5hbWU9ImZhdWx0IiB0eXBlPSJzdHJpbmciLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZhdWx0TWVzc2FnZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJmYXVsdCIgZWxlbWVudD0iaW50ZjpmYXVsdCIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmYXVsdCIgbWVzc2FnZT0iaW50ZjpmYXVsdE1lc3NhZ2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkFkZHJlc3NCb29rU29hcEJpbmRpbmciIHR5cGU9ImludGY6QWRkcmVzc0Jvb2siPgotICAgIDx3c2Rsc29hcDpiaW5kaW5nIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc3R5bGU9ImRvY3VtZW50IiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpoZWFkZXIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCI+Ci0gICAgICAgICAgPHdzZGxzb2FwOmhlYWRlcmZhdWx0IG1lc3NhZ2U9ImludGY6ZmF1bHQiIHBhcnQ9ImZhdWx0IiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgPC93c2Rsc29hcDpoZWFkZXI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHBhcnRzPSJwYXJhbWV0ZXJzIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc3R5bGU9ImRvY3VtZW50IiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IkFkZHJlc3NCb29rIiBiaW5kaW5nPSJpbnRmOkFkZHJlc3NCb29rU29hcEJpbmRpbmciPgotICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9BZGRyZXNzQm9vayIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYXAvMjk0MS0xL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYXAvMjk0MS0xL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ4Mzk0My4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2FwLzI5NDEtMS90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjk0MS0xIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIGNvbmZvcm1hbnQgd3NkbCB3aXRoIGEgc29hcDpoZWFkZXJmYXVsdCBlbGVtZW50IHRoYXQKLSAgICBzaG91bGQgcGFzcyB0ZXN0IGFzc2VydGlvbiBCUDI5NDEuCi0gIDwvZGVzY3JpcHRpb24+Ci08L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDEyLTEvMjAxMi0xLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTItMS8yMDEyLTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRiOTJiZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTItMS8yMDEyLTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyBuYW1lPSJOYW1lIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOnRucz0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iPgotCTx3c2RsOnR5cGVzPgotCQk8eHNkOnNjaGVtYSB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJSZXBvcnQiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgcmVmPSJ0bnM6TmFtZSIgLz4KLQkJCQkJCTx4c2Q6ZWxlbWVudCByZWY9InRuczpTcGVjaW1lbiIgLz4KLQkJCQkJCTx4c2Q6ZWxlbWVudCByZWY9InRuczpMb3QiIC8+Ci0JCQkJCTwveHNkOnNlcXVlbmNlPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJTYW1wbGVMaXN0Ij4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiBtaW5PY2N1cnM9IjEiIHJlZj0idG5zOlJlcG9ydCIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9IkNvdW50IiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotCQkJPHhzZDplbGVtZW50IG5hbWU9Ikxhc3RNb2RpZmllZCIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJMb3QiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJOdW1iZXIiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iU3BlY2ltZW4iIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iU2FtcGxlIj4KLQkJCQk8eHNkOmNvbXBsZXhUeXBlPgotCQkJCQk8eHNkOnNlcXVlbmNlPgotCQkJCQkJPHhzZDplbGVtZW50IHJlZj0idG5zOlNhbXBsZU5hbWUiIC8+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgcmVmPSJ0bnM6Q291bnQiIC8+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgcmVmPSJ0bnM6TGFzdE1vZGlmaWVkIiAvPgotCQkJCQkJPHhzZDplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiBtaW5PY2N1cnM9IjAiIHJlZj0idG5zOlNhbXBsZVByb3ZpZGVyIiAvPgotCQkJCQk8L3hzZDpzZXF1ZW5jZT4KLQkJCQkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzZDpzdHJpbmciIHVzZT0ib3B0aW9uYWwiIC8+Ci0JCQkJPC94c2Q6Y29tcGxleFR5cGU+Ci0JCQk8L3hzZDplbGVtZW50PgotCQkJPHhzZDplbGVtZW50IG5hbWU9IlNhbXBsZU5hbWUiIHR5cGU9InhzZDpzdHJpbmciIC8+Ci0JCQk8eHNkOmVsZW1lbnQgbmFtZT0iU2FtcGxlUHJvdmlkZXIiPgotCQkJCTx4c2Q6Y29tcGxleFR5cGU+Ci0JCQkJCTx4c2Q6c2VxdWVuY2U+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgcmVmPSJ0bnM6TmFtZSIgLz4KLQkJCQkJCTx4c2Q6ZWxlbWVudCByZWY9InRuczpOdW1iZXIiIC8+Ci0JCQkJCQk8eHNkOmVsZW1lbnQgcmVmPSJ0bnM6U2FtcGxlTGlzdCIgLz4KLQkJCQkJPC94c2Q6c2VxdWVuY2U+Ci0JCQkJCTx4c2Q6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4c2Q6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIiAvPgotCQkJCTwveHNkOmNvbXBsZXhUeXBlPgotCQkJPC94c2Q6ZWxlbWVudD4KLQotCi0JCTwveHNkOnNjaGVtYT4KLQk8L3dzZGw6dHlwZXM+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJnZXRTYW1wbGVSZXF1ZXN0Ij4KLQkJPHdzZGw6cGFydCBuYW1lPSJzYW1wbGVJZCIgdHlwZT0ieHNkOnN0cmluZyI+PC93c2RsOnBhcnQ+Ci0JPC93c2RsOm1lc3NhZ2U+Ci0JPHdzZGw6bWVzc2FnZSBuYW1lPSJnZXRTYW1wbGVSZXNwb25zZSI+Ci0JCTx3c2RsOnBhcnQgbmFtZT0icmVwb3J0IiBlbGVtZW50PSJ0bnM6U2FtcGxlIj48L3dzZGw6cGFydD4KLQk8L3dzZGw6bWVzc2FnZT4KLQk8d3NkbDpwb3J0VHlwZSBuYW1lPSJTYW1wbGVQb3J0VHlwZSI+Ci0JCTx3c2RsOm9wZXJhdGlvbiBuYW1lPSJnZXRTYW1wbGUiPgotCQkJPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOmdldFNhbXBsZVJlcXVlc3QiPjwvd3NkbDppbnB1dD4KLQkJCTx3c2RsOm91dHB1dCBtZXNzYWdlPSJ0bnM6Z2V0U2FtcGxlUmVzcG9uc2UiPjwvd3NkbDpvdXRwdXQ+Ci0JCTwvd3NkbDpvcGVyYXRpb24+Ci0JPC93c2RsOnBvcnRUeXBlPgotCTx3c2RsOmJpbmRpbmcgbmFtZT0iU2FtcGxlQmluZGluZyIgdHlwZT0idG5zOlNhbXBsZVBvcnRUeXBlIj4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiAvPgotCQk8d3NkbDpvcGVyYXRpb24gbmFtZT0iZ2V0U2FtcGxlIj4KLQkJCTxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvZ2V0U2FtcGxlIiAvPgotCQkJPHdzZGw6aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6aW5wdXQ+Ci0JCQk8d3NkbDpvdXRwdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0JCQk8L3dzZGw6b3V0cHV0PgotCQk8L3dzZGw6b3BlcmF0aW9uPgotCTwvd3NkbDpiaW5kaW5nPgotCTx3c2RsOnNlcnZpY2UgbmFtZT0iU2FtcGxlU2VydmljZSI+Ci0JCTx3c2RsOnBvcnQgbmFtZT0iU2FtcGxlUG9ydCIgYmluZGluZz0idG5zOlNhbXBsZUJpbmRpbmciPgotCQkJPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnLyIgLz4KLQkJPC93c2RsOnBvcnQ+Ci0JPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDEyLTEvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDEyLTEvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTliN2IwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxMi0xL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAxMi0xIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1jb25mb3JtYW50IHdzZGwgdGhhdCBmYWlscyB0ZXN0IGFzc2VydGlvbiBCUDIwMTIuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAxMiIgdGFkSUQ9IlNTQlAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAxMiIgdGFkSUQ9IkFQMTAiLz4KLSAgPC9leHBlY3RlZEZhaWx1cmVzPgotPC90ZXN0Y2FzZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTItMi8yMDEyLTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxMi0yLzIwMTItMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTYxMDgwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxMi0yLzIwMTItMi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6aW1wbD0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzcyI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcm92aW5jZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0iY2l0eSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ic3RyZWV0IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwb3N0YWxDb2RlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwaG9uZU51bWJlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6UGhvbmVOdW1iZXIiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJQaG9uZU51bWJlciI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJhcmVhIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByZWZpeCIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJudW1iZXIiIHR5cGU9InhzZDppbnQiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXR1cm4iIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2UvPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzc0hlYWRlclR5cGUiPgotCTxhbGw+Ci0JIDxlbGVtZW50IG5hbWU9ImEiIHR5cGU9ImludCIvPgotCSA8ZWxlbWVudCBuYW1lPSJiIiB0eXBlPSJib29sZWFuIi8+Ci0JIDxlbGVtZW50IG5hbWU9InMiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJzdHJpbmciLz4KLQk8L2FsbD4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzSGVhZGVyVHlwZSIvPgotICA8L3NjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOnNhdmVBZGRyZXNzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOlBob25lTnVtYmVyIi8+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBlbGVtZW50PSJpbnRmOkFkZHJlc3NIZWFkZXIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgPC93c2Rsc29hcDpoZWFkZXI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHBhcnRzPSJwYXJhbWV0ZXJzIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkFkZHJlc3NCb29rU2VydmljZSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJBZGRyZXNzQm9vayIgYmluZGluZz0iaW50ZjpBZGRyZXNzQm9va1NvYXBCaW5kaW5nIj4KLSAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvQWRkcmVzc0Jvb2siLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTItMi90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTItMi90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlOGFkNWMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDEyLTIvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDEyLTIiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uLWNvbmZvcm1hbnQgd3NkbCB0aGF0IGZhaWxzIHRlc3QgYXNzZXJ0aW9uIEJQMjAxMi4KLSAgICAKLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDEyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDEyIiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxMy0xLzIwMTMtMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDEzLTEvMjAxMy0xLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1OTEyNGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDEzLTEvMjAxMy0xLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotIAotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2UvPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkFkZHJlc3NCb29rU29hcEJpbmRpbmciIHR5cGU9ImludGY6QWRkcmVzc0Jvb2siPgotICAgIDx3c2Rsc29hcDpiaW5kaW5nIHN0eWxlPSJycGMiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6aGVhZGVyIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiPgotICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDEzLTEvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDEzLTEvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzM4OGQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxMy0xL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAxMy0xIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIGNvbmZvcm1hbnQgd3NkbCB1c2VkIGluIHRoZSBXUy1JIAotICAgIGludGVyb3BlcmFiaWxpdHkgZGVtby4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDEzIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDEzIiB0YWRJRD0iQVAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjExMiIgdGFkSUQ9IlNTQlAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjExMiIgdGFkSUQ9IkFQMTAiLz4KLSAgIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE0LTEvMjAxNC0xLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTQtMS8yMDE0LTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYwMDI1OC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTQtMS8yMDE0LTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLTxkZWZpbml0aW9ucyAKLSAgICAgICAgeG1sbnM6aHR0cD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9odHRwLyIgCi0gICAgICAgIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIAotICAgICAgICB4bWxuczpzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgICAgIHhtbG5zOnMwPSJodHRwOi8vdGVtcHVyaS5vcmcvIiAKLSAgICAgICAgeG1sbnM6c29hcGVuYz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIAotICAgICAgICB4bWxuczp0bT0iaHR0cDovL21pY3Jvc29mdC5jb20vd3NkbC9taW1lL3RleHRNYXRjaGluZy8iIAotICAgICAgICB4bWxuczptaW1lPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL21pbWUvIiAKLSAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotCi0gIDxtZXNzYWdlIG5hbWU9ImVjaG9TdHJpbmdJbiI+Ci0gICAgPHBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iczpzdHJpbmciLz4KLSAgPC9tZXNzYWdlPgotICA8bWVzc2FnZSBuYW1lPSJlY2hvU3RyaW5nT3V0Ij4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJzOnN0cmluZyIgLz4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzMSIgdHlwZT0iczpzdHJpbmciLz4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzMiIgdHlwZT0iczpzdHJpbmciLz4KLSAgPC9tZXNzYWdlPgotICA8cG9ydFR5cGUgbmFtZT0iRWNob1BvcnRUeXBlIj4KLSAgICA8b3BlcmF0aW9uIG5hbWU9ImVjaG9TdHJpbmciIHBhcmFtZXRlck9yZGVyPSJwYXJhbWV0ZXJzIHBhcmFtZXRlcnMxIHBhcmFtZXRlcnMyIj4KLSAgICAgIDxpbnB1dCBtZXNzYWdlPSJzMDplY2hvU3RyaW5nSW4iIC8+Ci0gICAgICA8b3V0cHV0IG1lc3NhZ2U9InMwOmVjaG9TdHJpbmdPdXQiIC8+Ci0gICAgPC9vcGVyYXRpb24+Ci0gICA8L3BvcnRUeXBlPgotICA8YmluZGluZyBuYW1lPSJFY2hvQmluZGluZyIgdHlwZT0iczA6RWNob1BvcnRUeXBlIj4KLSAgICA8c29hcDpiaW5kaW5nIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiBzdHlsZT0icnBjIiAvPgotICAgIDxvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL2VjaG9TdHJpbmciIHN0eWxlPSJycGMiIC8+Ci0gICAgICA8aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0cDovL29yZy5vcmciLz4KLSAgICAgIDwvaW5wdXQ+Ci0gICAgICA8b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHA6Ly9vcmcub3JnIiAvPgotICAgICAgPC9vdXRwdXQ+Ci0gICAgPC9vcGVyYXRpb24+Ci0gPC9iaW5kaW5nPgotICA8c2VydmljZSBuYW1lPSJFY2hvU2VydmljZSI+Ci0gICAgPHBvcnQgbmFtZT0iRWNob1BvcnQiIGJpbmRpbmc9InMwOkVjaG9CaW5kaW5nIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICA8L3BvcnQ+Ci0gIDwvc2VydmljZT4KLTwvZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE0LTEvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE0LTEvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjY3NWY5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNC0xL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDE0LTEiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgY29uZm9ybWFudCB3c2RsIGNvbnRhaW5pbmcgYSB3c2RsOm9wZXJhdGlvbiAKLSAgICB3aXRoIGEgcGFyYW1ldGVyT3JkZXIgYXR0cmlidXRlLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcy8+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNC0yLzIwMTQtMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE0LTIvMjAxNC0yLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NTMwNjkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE0LTIvMjAxNC0yLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08ZGVmaW5pdGlvbnMgCi0gICAgICAgIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIAotICAgICAgICB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiAKLSAgICAgICAgeG1sbnM6cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICB4bWxuczpzMD0iaHR0cDovL3RlbXB1cmkub3JnLyIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLQotICA8bWVzc2FnZSBuYW1lPSJlY2hvU3RyaW5nSW4iPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InM6c3RyaW5nIi8+Ci0gIDwvbWVzc2FnZT4KLSAgPG1lc3NhZ2UgbmFtZT0iZWNob1N0cmluZ091dCI+Ci0gICAgPHBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iczpzdHJpbmciIC8+Ci0gICAgPHBhcnQgbmFtZT0icGFyYW1ldGVyczEiIHR5cGU9InM6c3RyaW5nIi8+Ci0gICAgPHBhcnQgbmFtZT0icGFyYW1ldGVyczIiIHR5cGU9InM6c3RyaW5nIi8+Ci0gIDwvbWVzc2FnZT4KLSAgPHBvcnRUeXBlIG5hbWU9IkVjaG9Qb3J0VHlwZSI+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIiBwYXJhbWV0ZXJPcmRlcj0icGFyYW1ldGVycyBwYXJhbWV0ZXJzMSI+Ci0gICAgICA8aW5wdXQgbWVzc2FnZT0iczA6ZWNob1N0cmluZ0luIiAvPgotICAgICAgPG91dHB1dCBtZXNzYWdlPSJzMDplY2hvU3RyaW5nT3V0IiAvPgotICAgIDwvb3BlcmF0aW9uPgotICAgPC9wb3J0VHlwZT4KLSAgPGJpbmRpbmcgbmFtZT0iRWNob0JpbmRpbmciIHR5cGU9InMwOkVjaG9Qb3J0VHlwZSI+Ci0gICAgPHNvYXA6YmluZGluZyB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgc3R5bGU9InJwYyIgLz4KLSAgICA8b3BlcmF0aW9uIG5hbWU9ImVjaG9TdHJpbmciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9lY2hvU3RyaW5nIiBzdHlsZT0icnBjIiAvPgotICAgICAgPGlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHA6Ly9vcmcub3JnIi8+Ci0gICAgICA8L2lucHV0PgotICAgICAgPG91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHRwOi8vb3JnLm9yZyIgLz4KLSAgICAgIDwvb3V0cHV0PgotICAgIDwvb3BlcmF0aW9uPgotIDwvYmluZGluZz4KLSAgPHNlcnZpY2UgbmFtZT0iRWNob1NlcnZpY2UiPgotICAgIDxwb3J0IG5hbWU9IkVjaG9Qb3J0IiBiaW5kaW5nPSJzMDpFY2hvQmluZGluZyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgPC9wb3J0PgotICA8L3NlcnZpY2U+Ci08L2RlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNC0yL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNC0yL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU1YjQwNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTQtMi90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAxNC0yIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIGNvbmZvcm1hbnQgd3NkbCBjb250YWluaW5nIGEgd3NkbDpvcGVyYXRpb24gCi0gICAgd2l0aCBhIHBhcmFtZXRlck9yZGVyIGF0dHJpYnV0ZS4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXMvPgotPC90ZXN0Y2FzZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTQtMy8yMDE0LTMud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNC0zLzIwMTQtMy53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmU3OTJhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNC0zLzIwMTQtMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotPGRlZmluaXRpb25zIAotICAgICAgICB4bWxuczpodHRwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL2h0dHAvIiAKLSAgICAgICAgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgCi0gICAgICAgIHhtbG5zOnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICAgICAgeG1sbnM6czA9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIAotICAgICAgICB4bWxuczpzb2FwZW5jPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIgCi0gICAgICAgIHhtbG5zOnRtPSJodHRwOi8vbWljcm9zb2Z0LmNvbS93c2RsL21pbWUvdGV4dE1hdGNoaW5nLyIgCi0gICAgICAgIHhtbG5zOm1pbWU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvbWltZS8iIAotICAgICAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0KLSAgPG1lc3NhZ2UgbmFtZT0iZWNob1N0cmluZ0luIj4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJzOnN0cmluZyIvPgotICA8L21lc3NhZ2U+Ci0gIDxtZXNzYWdlIG5hbWU9ImVjaG9TdHJpbmdPdXQiPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InM6c3RyaW5nIiAvPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMxIiB0eXBlPSJzOnN0cmluZyIvPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMyIiB0eXBlPSJzOnN0cmluZyIvPgotICA8L21lc3NhZ2U+Ci0gIDxwb3J0VHlwZSBuYW1lPSJFY2hvUG9ydFR5cGUiPgotICAgIDxvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyIgcGFyYW1ldGVyT3JkZXI9InBhcmFtZXRlcnMiPgotICAgICAgPGlucHV0IG1lc3NhZ2U9InMwOmVjaG9TdHJpbmdJbiIgLz4KLSAgICAgIDxvdXRwdXQgbWVzc2FnZT0iczA6ZWNob1N0cmluZ091dCIgLz4KLSAgICA8L29wZXJhdGlvbj4KLSAgIDwvcG9ydFR5cGU+Ci0gIDxiaW5kaW5nIG5hbWU9IkVjaG9CaW5kaW5nIiB0eXBlPSJzMDpFY2hvUG9ydFR5cGUiPgotICAgIDxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIHN0eWxlPSJycGMiIC8+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvZWNob1N0cmluZyIgc3R5bGU9InJwYyIgLz4KLSAgICAgIDxpbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHRwOi8vb3JnLm9yZyIvPgotICAgICAgPC9pbnB1dD4KLSAgICAgIDxvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0cDovL29yZy5vcmciIC8+Ci0gICAgICA8L291dHB1dD4KLSAgICA8L29wZXJhdGlvbj4KLSA8L2JpbmRpbmc+Ci0gIDxzZXJ2aWNlIG5hbWU9IkVjaG9TZXJ2aWNlIj4KLSAgICA8cG9ydCBuYW1lPSJFY2hvUG9ydCIgYmluZGluZz0iczA6RWNob0JpbmRpbmciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgIDwvcG9ydD4KLSAgPC9zZXJ2aWNlPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTQtMy90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTQtMy90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNzJjNzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE0LTMvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDE0LTEiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgY29uZm9ybWFudCB3c2RsIGNvbnRhaW5pbmcgYSB3c2RsOm9wZXJhdGlvbiAKLSAgICB3aXRoIGEgcGFyYW1ldGVyT3JkZXIgYXR0cmlidXRlLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMTQiIHRhZElEPSJTU0JQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMTQiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE3LTEvMjAxNy0xLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTctMS8yMDE3LTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZjNWQ3NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTctMS8yMDE3LTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2UvPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJBZGRyZXNzQm9va1NvYXBCaW5kaW5nIiB0eXBlPSJpbnRmOkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbHNvYXA6YmluZGluZyB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHN0eWxlPSJkb2N1bWVudCIgc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6aGVhZGVyIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiPgotICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzdHlsZT0icnBjIiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IkFkZHJlc3NCb29rIiBiaW5kaW5nPSJpbnRmOkFkZHJlc3NCb29rU29hcEJpbmRpbmciPgotICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9BZGRyZXNzQm9vayIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNy0xL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNy0xL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVkYTk0MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTctMS90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIwMTctMSI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBub24tY29uZm9ybWFudCB3c2RsIGNvbnRhaW5pbmcgCi0gICAgbXVsdGlwbGUgc3R5bGUgdmFsdWVzIHdpdGhpbiB0aGUgc2FtZSBiaW5kaW5nLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMTciIHRhZElEPSJTU0JQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMTciIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE3LTIvMjAxNy0yLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTctMi8yMDE3LTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI5MGVkNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTctMi8yMDE3LTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2UvPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vazIiPgotICAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzdHlsZT0iZG9jdW1lbnQiIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgPC93c2Rsc29hcDpoZWFkZXI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHBhcnRzPSJwYXJhbWV0ZXJzIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkFkZHJlc3NCb29rU29hcEJpbmRpbmcyIiB0eXBlPSJpbnRmOkFkZHJlc3NCb29rMiI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzdHlsZT0icnBjIiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IkFkZHJlc3NCb29rIiBiaW5kaW5nPSJpbnRmOkFkZHJlc3NCb29rU29hcEJpbmRpbmciPgotICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9BZGRyZXNzQm9vayIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNy0yL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxNy0yL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI2ZTMwYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTctMi90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAxNy0yIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIGNvbmZvcm1hbnQgd3NkbCBjb250YWluaW5nIAotICAgIG11bHRpcGxlIHN0eWxlIHZhbHVlcyBidXQgaW4gZGlmZmVyZW50IGJpbmRpbmdzLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcy8+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOC0xLzIwMTgtMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTEvMjAxOC0xLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMmFmOWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTEvMjAxOC0xLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08ZGVmaW5pdGlvbnMgCi0gICAgICAgIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIAotICAgICAgICB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiAKLSAgICAgICAgeG1sbnM6cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICB4bWxuczpzMD0iaHR0cDovL3RlbXB1cmkub3JnLyIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPGRvY3VtZW50YXRpb24+Ci0gIDwvZG9jdW1lbnRhdGlvbj4KLSAgPHR5cGVzLz4KLSAgPG1lc3NhZ2UgbmFtZT0iZWNob1N0cmluZ0luIj4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJzOnN0cmluZyIvPgotICA8L21lc3NhZ2U+Ci0gIDxtZXNzYWdlIG5hbWU9ImVjaG9TdHJpbmdPdXQiPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InM6c3RyaW5nIiAvPgotICA8L21lc3NhZ2U+Ci0gIDxwb3J0VHlwZSBuYW1lPSJFY2hvUG9ydFR5cGUiPgotICAgIDxvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyIgcGFyYW1ldGVyT3JkZXI9InBhcmFtZXRlcnMiPgotICAgICAgPGlucHV0IG1lc3NhZ2U9InMwOmVjaG9TdHJpbmdJbiIgLz4KLSAgICAgIDxvdXRwdXQgbWVzc2FnZT0iczA6ZWNob1N0cmluZ091dCIgLz4KLSAgICA8L29wZXJhdGlvbj4KLSAgIDwvcG9ydFR5cGU+Ci0gIDxiaW5kaW5nIG5hbWU9IkVjaG9CaW5kaW5nIiB0eXBlPSJzMDpFY2hvUG9ydFR5cGUiPgotICAgIDxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIHN0eWxlPSJycGMiIC8+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvZWNob1N0cmluZyIgc3R5bGU9InJwYyIgLz4KLSAgICAgIDxpbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHRwOi8vb3JnLm9yZyIvPgotICAgICAgPC9pbnB1dD4KLSAgICAgIDxvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0cDovL29yZy5vcmciIC8+Ci0gICAgICA8L291dHB1dD4KLSAgICA8L29wZXJhdGlvbj4KLSA8L2JpbmRpbmc+Ci0gIDxzZXJ2aWNlIG5hbWU9IkVjaG9TZXJ2aWNlIj4KLSAgICA8cG9ydCBuYW1lPSJFY2hvUG9ydCIgYmluZGluZz0iczA6RWNob0JpbmRpbmciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgIDwvcG9ydD4KLSAgPC9zZXJ2aWNlPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMS90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMS90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZjY1MzYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTEvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIwMTgtMSI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBjb25mb3JtYW50IHdzZGwgY29udGFpbmluZyBhIGRvY3VtZW50YXRpb24KLSAgICBlbGVtZW50IHByZWNlZGluZyB0aGUgdHlwZXMgZWxlbWVudC4gCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzLz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTIvMjAxOC0yLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMi8yMDE4LTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ3Yjk2Ni4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMi8yMDE4LTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTxkZWZpbml0aW9ucyAKLSAgICAgICAgeG1sbnM6aHR0cD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9odHRwLyIgCi0gICAgICAgIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIAotICAgICAgICB4bWxuczpzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgICAgIHhtbG5zOnMwPSJodHRwOi8vdGVtcHVyaS5vcmcvIiAKLSAgICAgICAgeG1sbnM6c29hcGVuYz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIAotICAgICAgICB4bWxuczp0bT0iaHR0cDovL21pY3Jvc29mdC5jb20vd3NkbC9taW1lL3RleHRNYXRjaGluZy8iIAotICAgICAgICB4bWxuczptaW1lPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL21pbWUvIiAKLSAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8ZG9jdW1lbnRhdGlvbj4KLSAgPC9kb2N1bWVudGF0aW9uPgotICA8aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLzIwMThhIiBsb2NhdGlvbj0iMjAxOGEud3NkbCIvPgotICA8aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLzIwMThiIiBsb2NhdGlvbj0iMjAxOGIud3NkbCIvPgotICA8dHlwZXMvPgotICAKLSAgPG1lc3NhZ2UgbmFtZT0iZWNob1N0cmluZ0luIj4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJzOnN0cmluZyIvPgotICA8L21lc3NhZ2U+Ci0gIDxtZXNzYWdlIG5hbWU9ImVjaG9TdHJpbmdPdXQiPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InM6c3RyaW5nIiAvPgotICA8L21lc3NhZ2U+Ci0gIDxwb3J0VHlwZSBuYW1lPSJFY2hvUG9ydFR5cGUiPgotICAgIDxvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyIgcGFyYW1ldGVyT3JkZXI9InBhcmFtZXRlcnMiPgotICAgICAgPGlucHV0IG1lc3NhZ2U9InMwOmVjaG9TdHJpbmdJbiIgLz4KLSAgICAgIDxvdXRwdXQgbWVzc2FnZT0iczA6ZWNob1N0cmluZ091dCIgLz4KLSAgICA8L29wZXJhdGlvbj4KLSAgIDwvcG9ydFR5cGU+Ci0gIDxiaW5kaW5nIG5hbWU9IkVjaG9CaW5kaW5nIiB0eXBlPSJzMDpFY2hvUG9ydFR5cGUiPgotICAgIDxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIHN0eWxlPSJycGMiIC8+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvZWNob1N0cmluZyIgc3R5bGU9InJwYyIgLz4KLSAgICAgIDxpbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHRwOi8vb3JnLm9yZyIvPgotICAgICAgPC9pbnB1dD4KLSAgICAgIDxvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0cDovL29yZy5vcmciIC8+Ci0gICAgICA8L291dHB1dD4KLSAgICA8L29wZXJhdGlvbj4KLSA8L2JpbmRpbmc+Ci0gIDxzZXJ2aWNlIG5hbWU9IkVjaG9TZXJ2aWNlIj4KLSAgICA8cG9ydCBuYW1lPSJFY2hvUG9ydCIgYmluZGluZz0iczA6RWNob0JpbmRpbmciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgIDwvcG9ydD4KLSAgPC9zZXJ2aWNlPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMi8yMDE4YS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTIvMjAxOGEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU4ZDk2Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMi8yMDE4YS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPGRlZmluaXRpb25zIAotICAgICAgICB4bWxuczpodHRwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL2h0dHAvIiAKLSAgICAgICAgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgCi0gICAgICAgIHhtbG5zOnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICAgICAgeG1sbnM6czA9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YSIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLzIwMThhIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMi8yMDE4Yi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTIvMjAxOGIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQzMmVjNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMi8yMDE4Yi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPGRlZmluaXRpb25zIAotICAgICAgICB4bWxuczpodHRwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL2h0dHAvIiAKLSAgICAgICAgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgCi0gICAgICAgIHhtbG5zOnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICAgICAgeG1sbnM6czA9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YiIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLzIwMThiIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMi90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMi90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2NmM1NDUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTIvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIwMTgtMSI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBjb25mb3JtYW50IHdzZGwgY29udGFpbmluZyBhIGRvY3VtZW50YXRpb24KLSAgICBlbGVtZW50IGFuZCAyIGltcG9ydCBlbGVtZW50cyBwcmVjZWRpbmcgdGhlIHR5cGVzIGVsZW1lbnQuIAotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcy8+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOC0zLzIwMTgtMy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTMvMjAxOC0zLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MGQ4NWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTMvMjAxOC0zLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08ZGVmaW5pdGlvbnMgCi0gICAgICAgIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIAotICAgICAgICB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiAKLSAgICAgICAgeG1sbnM6cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICB4bWxuczpzMD0iaHR0cDovL3RlbXB1cmkub3JnLyIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPGRvY3VtZW50YXRpb24+Ci0gIDwvZG9jdW1lbnRhdGlvbj4KLSAgPG1lc3NhZ2UgbmFtZT0iZWNob1N0cmluZ0luIj4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJzOnN0cmluZyIvPgotICA8L21lc3NhZ2U+Ci0gIDx0eXBlcy8+Ci0gIDxtZXNzYWdlIG5hbWU9ImVjaG9TdHJpbmdPdXQiPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InM6c3RyaW5nIiAvPgotICA8L21lc3NhZ2U+Ci0gIDxwb3J0VHlwZSBuYW1lPSJFY2hvUG9ydFR5cGUiPgotICAgIDxvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyIgcGFyYW1ldGVyT3JkZXI9InBhcmFtZXRlcnMiPgotICAgICAgPGlucHV0IG1lc3NhZ2U9InMwOmVjaG9TdHJpbmdJbiIgLz4KLSAgICAgIDxvdXRwdXQgbWVzc2FnZT0iczA6ZWNob1N0cmluZ091dCIgLz4KLSAgICA8L29wZXJhdGlvbj4KLSAgIDwvcG9ydFR5cGU+Ci0gIDxiaW5kaW5nIG5hbWU9IkVjaG9CaW5kaW5nIiB0eXBlPSJzMDpFY2hvUG9ydFR5cGUiPgotICAgIDxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIHN0eWxlPSJycGMiIC8+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvZWNob1N0cmluZyIgc3R5bGU9InJwYyIgLz4KLSAgICAgIDxpbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHRwOi8vb3JnLm9yZyIvPgotICAgICAgPC9pbnB1dD4KLSAgICAgIDxvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0cDovL29yZy5vcmciIC8+Ci0gICAgICA8L291dHB1dD4KLSAgICA8L29wZXJhdGlvbj4KLSA8L2JpbmRpbmc+Ci0gIDxzZXJ2aWNlIG5hbWU9IkVjaG9TZXJ2aWNlIj4KLSAgICA8cG9ydCBuYW1lPSJFY2hvUG9ydCIgYmluZGluZz0iczA6RWNob0JpbmRpbmciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgIDwvcG9ydD4KLSAgPC9zZXJ2aWNlPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMy90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtMy90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MzQ2NGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTMvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDE4LTMiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uIGNvbmZvcm1hbnQgd3NkbCBjb250YWluaW5nIGEgbWVzc2FnZQotICAgIGVsZW1lbnQgcHJlY2VkaW5nIHRoZSB0eXBlcyBlbGVtZW50LiAKLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDE4IiB0YWRJRD0iU1NCUDEwIi8+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDE4IiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOC00LzIwMTgtNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTQvMjAxOC00LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0MDU4OTEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTQvMjAxOC00LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi08ZGVmaW5pdGlvbnMgCi0gICAgICAgIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIAotICAgICAgICB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiAKLSAgICAgICAgeG1sbnM6cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICB4bWxuczpzMD0iaHR0cDovL3RlbXB1cmkub3JnLyIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPGRvY3VtZW50YXRpb24+Ci0gIDwvZG9jdW1lbnRhdGlvbj4KLSAgPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YSIgbG9jYXRpb249IjIwMThhLndzZGwiLz4KLSAgPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YiIgbG9jYXRpb249IjIwMThiLndzZGwiLz4KLSAgPG1lc3NhZ2UgbmFtZT0iZWNob1N0cmluZ0luIj4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJzOnN0cmluZyIvPgotICA8L21lc3NhZ2U+Ci0gIDx0eXBlcy8+Ci0gIDxtZXNzYWdlIG5hbWU9ImVjaG9TdHJpbmdPdXQiPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InM6c3RyaW5nIiAvPgotICA8L21lc3NhZ2U+Ci0gIDxwb3J0VHlwZSBuYW1lPSJFY2hvUG9ydFR5cGUiPgotICAgIDxvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyIgcGFyYW1ldGVyT3JkZXI9InBhcmFtZXRlcnMiPgotICAgICAgPGlucHV0IG1lc3NhZ2U9InMwOmVjaG9TdHJpbmdJbiIgLz4KLSAgICAgIDxvdXRwdXQgbWVzc2FnZT0iczA6ZWNob1N0cmluZ091dCIgLz4KLSAgICA8L29wZXJhdGlvbj4KLSAgIDwvcG9ydFR5cGU+Ci0gIDxiaW5kaW5nIG5hbWU9IkVjaG9CaW5kaW5nIiB0eXBlPSJzMDpFY2hvUG9ydFR5cGUiPgotICAgIDxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIHN0eWxlPSJycGMiIC8+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvZWNob1N0cmluZyIgc3R5bGU9InJwYyIgLz4KLSAgICAgIDxpbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHRwOi8vb3JnLm9yZyIvPgotICAgICAgPC9pbnB1dD4KLSAgICAgIDxvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0cDovL29yZy5vcmciIC8+Ci0gICAgICA8L291dHB1dD4KLSAgICA8L29wZXJhdGlvbj4KLSA8L2JpbmRpbmc+Ci0gIDxzZXJ2aWNlIG5hbWU9IkVjaG9TZXJ2aWNlIj4KLSAgICA8cG9ydCBuYW1lPSJFY2hvUG9ydCIgYmluZGluZz0iczA6RWNob0JpbmRpbmciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgIDwvcG9ydD4KLSAgPC9zZXJ2aWNlPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNC8yMDE4YS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTQvMjAxOGEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU4ZDk2Yi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNC8yMDE4YS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPGRlZmluaXRpb25zIAotICAgICAgICB4bWxuczpodHRwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL2h0dHAvIiAKLSAgICAgICAgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgCi0gICAgICAgIHhtbG5zOnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICAgICAgeG1sbnM6czA9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YSIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLzIwMThhIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNC8yMDE4Yi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTQvMjAxOGIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQzMmVjNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNC8yMDE4Yi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPGRlZmluaXRpb25zIAotICAgICAgICB4bWxuczpodHRwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL2h0dHAvIiAKLSAgICAgICAgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgCi0gICAgICAgIHhtbG5zOnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICAgICAgeG1sbnM6czA9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YiIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLzIwMThiIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNC90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNC90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MzU5MWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTQvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDE4LTQiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uIGNvbmZvcm1hbnQgd3NkbCBjb250YWluaW5nIGEgbWVzc2FnZQotICAgIGVsZW1lbnQgcHJlY2VkaW5nIHRoZSB0eXBlcyBlbGVtZW50LiAKLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDE4IiB0YWRJRD0iU1NCUDEwIi8+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDE4IiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOC01LzIwMTgtNS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTUvMjAxOC01LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYjlhNjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTUvMjAxOC01LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08ZGVmaW5pdGlvbnMgCi0gICAgICAgIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIAotICAgICAgICB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiAKLSAgICAgICAgeG1sbnM6cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICB4bWxuczpzMD0iaHR0cDovL3RlbXB1cmkub3JnLyIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPGRvY3VtZW50YXRpb24+Ci0gIDwvZG9jdW1lbnRhdGlvbj4KLSAgPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YSIgbG9jYXRpb249IjIwMThhLndzZGwiLz4KLTwvZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTUvMjAxOGEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOC01LzIwMThhLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkYWY1NWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTUvMjAxOGEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTxkZWZpbml0aW9ucyAKLSAgICAgICAgeG1sbnM6aHR0cD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9odHRwLyIgCi0gICAgICAgIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIAotICAgICAgICB4bWxuczpzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgICAgIHhtbG5zOnMwPSJodHRwOi8vdGVtcHVyaS5vcmcvMjAxOGEiIAotICAgICAgICB4bWxuczpzb2FwZW5jPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIgCi0gICAgICAgIHhtbG5zOnRtPSJodHRwOi8vbWljcm9zb2Z0LmNvbS93c2RsL21pbWUvdGV4dE1hdGNoaW5nLyIgCi0gICAgICAgIHhtbG5zOm1pbWU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvbWltZS8iIAotICAgICAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YSIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPGRvY3VtZW50YXRpb24+Ci0gIDwvZG9jdW1lbnRhdGlvbj4KLSAgPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YiIgbG9jYXRpb249IjIwMThiLndzZGwiLz4KLSAgPG1lc3NhZ2UgbmFtZT0iZWNob1N0cmluZ0luIj4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJzOnN0cmluZyIvPgotICA8L21lc3NhZ2U+Ci0gIDx0eXBlcy8+Ci0gIDxtZXNzYWdlIG5hbWU9ImVjaG9TdHJpbmdPdXQiPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InM6c3RyaW5nIiAvPgotICA8L21lc3NhZ2U+Ci0gIDxwb3J0VHlwZSBuYW1lPSJFY2hvUG9ydFR5cGUiPgotICAgIDxvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyIgcGFyYW1ldGVyT3JkZXI9InBhcmFtZXRlcnMiPgotICAgICAgPGlucHV0IG1lc3NhZ2U9InMwOmVjaG9TdHJpbmdJbiIgLz4KLSAgICAgIDxvdXRwdXQgbWVzc2FnZT0iczA6ZWNob1N0cmluZ091dCIgLz4KLSAgICA8L29wZXJhdGlvbj4KLSAgIDwvcG9ydFR5cGU+Ci0gIDxiaW5kaW5nIG5hbWU9IkVjaG9CaW5kaW5nIiB0eXBlPSJzMDpFY2hvUG9ydFR5cGUiPgotICAgIDxzb2FwOmJpbmRpbmcgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiIHN0eWxlPSJycGMiIC8+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvZWNob1N0cmluZyIgc3R5bGU9InJwYyIgLz4KLSAgICAgIDxpbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHRwOi8vb3JnLm9yZyIvPgotICAgICAgPC9pbnB1dD4KLSAgICAgIDxvdXRwdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0cDovL29yZy5vcmciIC8+Ci0gICAgICA8L291dHB1dD4KLSAgICA8L29wZXJhdGlvbj4KLSA8L2JpbmRpbmc+Ci0gIDxzZXJ2aWNlIG5hbWU9IkVjaG9TZXJ2aWNlIj4KLSAgICA8cG9ydCBuYW1lPSJFY2hvUG9ydCIgYmluZGluZz0iczA6RWNob0JpbmRpbmciPgotICAgICAgPHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgIDwvcG9ydD4KLSAgPC9zZXJ2aWNlPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNS8yMDE4Yi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTUvMjAxOGIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQzMmVjNC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNS8yMDE4Yi53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPGRlZmluaXRpb25zIAotICAgICAgICB4bWxuczpodHRwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL2h0dHAvIiAKLSAgICAgICAgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgCi0gICAgICAgIHhtbG5zOnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICAgICAgeG1sbnM6czA9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMDE4YiIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLzIwMThiIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotPC9kZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNS90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTgtNS90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MzU5MWIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE4LTUvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDE4LTQiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uIGNvbmZvcm1hbnQgd3NkbCBjb250YWluaW5nIGEgbWVzc2FnZQotICAgIGVsZW1lbnQgcHJlY2VkaW5nIHRoZSB0eXBlcyBlbGVtZW50LiAKLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDE4IiB0YWRJRD0iU1NCUDEwIi8+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDE4IiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOS0xLzIwMTktMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTEvMjAxOS0xLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNzUyZGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTEvMjAxOS0xLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczppbXBsPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPGVsZW1lbnQgbmFtZT0iYWRkcmVzcyIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJBZGRyZXNzQm9va1NvYXBCaW5kaW5nIiB0eXBlPSJpbnRmOkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6aGVhZGVyIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL25vd2hlcmUiPgotICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IkFkZHJlc3NCb29rIiBiaW5kaW5nPSJpbnRmOkFkZHJlc3NCb29rU29hcEJpbmRpbmciPgotICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9BZGRyZXNzQm9vayIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOS0xL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOS0xL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJhZDYwNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTktMS90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIwMTktMSI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBub24gY29uZm9ybWFudCB3c2RsIGNvbnRhaW5pbmcgYSBkb2N1bWVudCBsaXRlcmFsIGJpbmRpbmcKLSAgICB3aWggYSBuYW1wYWNlIGF0dHJpYnV0ZSBzcGVjaWZpZWQgdGhlIHNvYXBiaW5kOmhlYWRlciBlbGVtZW50LgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIwMTkiIHRhZElEPSJTU0JQMTAiLz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIwMTkiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTIvMjAxOS0yLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTktMi8yMDE5LTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYyMDBlMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTktMi8yMDE5LTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlLz4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkFkZHJlc3NCb29rU29hcEJpbmRpbmciIHR5cGU9ImludGY6QWRkcmVzc0Jvb2siPgotICAgIDx3c2Rsc29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpoZWFkZXIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCI+Ci0gICAgICAgIDwvd3NkbHNvYXA6aGVhZGVyPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSBwYXJ0cz0icGFyYW1ldGVycyIgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy9ub3doZXJlIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTIvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTIvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTlhZTAxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOS0yL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAxOS0yIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbiBjb25mb3JtYW50IHdzZGwgY29udGFpbmluZyBhIGRvY3VtZW50IGxpdGVyYWwgYmluZGluZwotICAgIHdpaCBhIG5hbXBhY2UgYXR0cmlidXRlIHNwZWNpZmllZCB0aGUgc29hcGJpbmQ6Ym9keSBlbGVtZW50LgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIwMTkiIHRhZElEPSJTU0JQMTAiLz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIwMTkiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTMvMjAxOS0zLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTktMy8yMDE5LTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE2Mzk5NC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTktMy8yMDE5LTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlLz4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InBhcmFtZXRlcmZhdWx0Ij4KLSAgICA8cGFydCBuYW1lPSJwYXJ0MyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIgLz4KLSAgIDwvd3NkbDptZXNzYWdlPiAKLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSIgbWVzc2FnZT0iaW50ZjpwYXJhbWV0ZXJmYXVsdCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgPC93c2Rsc29hcDpoZWFkZXI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHBhcnRzPSJwYXJhbWV0ZXJzIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgICAgPHdzZGw6ZmF1bHQgbmFtZT0iZjEiPgotICAgICAgICA8d3NkbHNvYXA6ZmF1bHQgdXNlPSJsaXRlcmFsIiBuYW1lPSJmMSIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvbm93aGVyZSIvPgotICAgICAgPC93c2RsOmZhdWx0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkFkZHJlc3NCb29rU2VydmljZSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJBZGRyZXNzQm9vayIgYmluZGluZz0iaW50ZjpBZGRyZXNzQm9va1NvYXBCaW5kaW5nIj4KLSAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvQWRkcmVzc0Jvb2siLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTktMy90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTktMy90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZWMwM2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTMvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDE5LTMiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uIGNvbmZvcm1hbnQgd3NkbCBjb250YWluaW5nIGEgZG9jdW1lbnQgbGl0ZXJhbCBiaW5kaW5nCi0gICAgd2loIGEgbmFtcGFjZSBhdHRyaWJ1dGUgc3BlY2lmaWVkIHRoZSBzb2FwYmluZDpmYXVsdCBlbGVtZW50LgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIwMTkiIHRhZElEPSJTU0JQMTAiLz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIwMTkiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTQvMjAxOS00LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTktNC8yMDE5LTQud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgyODFlMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIwMTktNC8yMDE5LTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlLz4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InBhcmFtZXRlcmZhdWx0Ij4KLSAgICA8cGFydCBuYW1lPSJwYXJ0MyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIgLz4KLSAgIDwvd3NkbDptZXNzYWdlPiAKLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSIgbWVzc2FnZT0iaW50ZjpwYXJhbWV0ZXJmYXVsdCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgICAgPHdzZGxzb2FwOmhlYWRlcmZhdWx0IG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiAgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgICAgIDwvd3NkbHNvYXA6aGVhZGVyPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSBwYXJ0cz0icGFyYW1ldGVycyIgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICAgIDx3c2RsOmZhdWx0IG5hbWU9ImYxIj4KLSAgICAgICAgPHdzZGxzb2FwOmZhdWx0IHVzZT0ibGl0ZXJhbCIgbmFtZT0iZjEiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnL25vd2hlcmUiLz4KLSAgICAgIDwvd3NkbDpmYXVsdD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTQvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDE5LTQvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTQ5YTUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAxOS00L3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAxOS00Ij4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbiBjb25mb3JtYW50IHdzZGwgY29udGFpbmluZyBhIGRvY3VtZW50IGxpdGVyYWwgYmluZGluZwotICAgIHdpaCBhIG5hbXBhY2UgYXR0cmlidXRlIHNwZWNpZmllZCB0aGUgc29hcGJpbmQ6aGVhZGVyZmF1bHQgZWxlbWVudC4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDE5IiB0YWRJRD0iU1NCUDEwIi8+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDE5IiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAyMC0xLzIwMjAtMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDIwLTEvMjAyMC0xLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyOTA0NTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDIwLTEvMjAyMC0xLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotIAotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgdHlwZT0iaW1wbDpBZGRyZXNzSGVhZGVyVHlwZSIvPgotICA8L3NjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBlbGVtZW50PSJpbnRmOkFkZHJlc3NIZWFkZXIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9InJwYyIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpoZWFkZXIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCI+Ci0gICAgICAgIDwvd3NkbHNvYXA6aGVhZGVyPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSBwYXJ0cz0icGFyYW1ldGVycyIgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDIwLTEvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDIwLTEvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmNjY2IzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAyMC0xL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAyMC0xIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbiBjb25mb3JtYW50IHdzZGwgY29udGFpbmluZyBhIHJwYyBsaXRlcmFsIGJpbmRpbmcKLSAgICB3aWggYSBuYW1wYWNlIGF0dHJpYnV0ZSBtaXNzaW5nIGZyb20gYSBzb2FwYmluZDpib2R5IGVsZW1lbnQuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotICAgIDxhc3NlcnRpb24gaWQ9IkJQMjAyMCIgdGFkSUQ9IlNTQlAxMCIvPgotICAgIDxhc3NlcnRpb24gaWQ9IkJQMjAyMCIgdGFkSUQ9IkFQMTAiLz4KLSAgPC9leHBlY3RlZEZhaWx1cmVzPgotCi08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAyMC0yLzIwMjAtMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDIwLTIvMjAyMC0yLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZmY2MzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDIwLTIvMjAyMC0yLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotIAotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgdHlwZT0iaW1wbDpBZGRyZXNzSGVhZGVyVHlwZSIvPgotICA8L3NjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBlbGVtZW50PSJpbnRmOkFkZHJlc3NIZWFkZXIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9InJwYyIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpoZWFkZXIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCI+Ci0gICAgICAgIDwvd3NkbHNvYXA6aGVhZGVyPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSBwYXJ0cz0icGFyYW1ldGVycyIgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9IjIwMjAueHNkIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDIwLTIvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMDIwLTIvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTc0MTgwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjAyMC0yL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAyMC0yIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbiBjb25mb3JtYW50IHdzZGwgY29udGFpbmluZyBhIHJwYyBsaXRlcmFsIGJpbmRpbmcKLSAgICB3aWggYSBuYW1wYWNlIGF0dHJpYnV0ZSBzcGVjaWZpZWQgaW4gdGhlIHNvYXBiaW5kOmJvZHkgZWxlbWVudCB0aGF0IGhhcyBhIAotICAgIHZhbHVlIHRoYXQgaXMgbm90IGFuIGFic29sdXRlIFVSSS4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDIwIiB0YWRJRD0iU1NCUDEwIi8+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMDIwIiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci0KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTA1LTEvMjEwNS0xLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMDUtMS8yMTA1LTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ0MTVjYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMDUtMS8yMTA1LTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTxkZWZpbml0aW9ucyAKLSAgICAgICAgeG1sbnM6aHR0cD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9odHRwLyIgCi0gICAgICAgIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIAotICAgICAgICB4bWxuczpzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgICAgIHhtbG5zOnMwPSJodHRwOi8vdGVtcHVyaS5vcmcvIiAKLSAgICAgICAgeG1sbnM6c29hcGVuYz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIAotICAgICAgICB4bWxuczp0bT0iaHR0cDovL21pY3Jvc29mdC5jb20vd3NkbC9taW1lL3RleHRNYXRjaGluZy8iIAotICAgICAgICB4bWxuczptaW1lPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL21pbWUvIiAKLSAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8ZG9jdW1lbnRhdGlvbj4KLSAgPC9kb2N1bWVudGF0aW9uPgotICA8dHlwZXMvPgotICA8aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLzIxMDVhIiBsb2NhdGlvbj0iMjEwNWEud3NkbCIvPgotICA8aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLzIxMDViIiBsb2NhdGlvbj0iMjEwNWIud3NkbCIvPgotCi0gIDxtZXNzYWdlIG5hbWU9ImVjaG9TdHJpbmdJbiI+Ci0gICAgPHBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iczpzdHJpbmciLz4KLSAgPC9tZXNzYWdlPgotICA8bWVzc2FnZSBuYW1lPSJlY2hvU3RyaW5nT3V0Ij4KLSAgICA8cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJzOnN0cmluZyIgLz4KLSAgPC9tZXNzYWdlPgotICA8cG9ydFR5cGUgbmFtZT0iRWNob1BvcnRUeXBlIj4KLSAgICA8b3BlcmF0aW9uIG5hbWU9ImVjaG9TdHJpbmciIHBhcmFtZXRlck9yZGVyPSJwYXJhbWV0ZXJzIj4KLSAgICAgIDxpbnB1dCBtZXNzYWdlPSJzMDplY2hvU3RyaW5nSW4iIC8+Ci0gICAgICA8b3V0cHV0IG1lc3NhZ2U9InMwOmVjaG9TdHJpbmdPdXQiIC8+Ci0gICAgPC9vcGVyYXRpb24+Ci0gICA8L3BvcnRUeXBlPgotICA8YmluZGluZyBuYW1lPSJFY2hvQmluZGluZyIgdHlwZT0iczA6RWNob1BvcnRUeXBlIj4KLSAgICA8c29hcDpiaW5kaW5nIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiBzdHlsZT0icnBjIiAvPgotICAgIDxvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyI+Ci0gICAgICA8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL2VjaG9TdHJpbmciIHN0eWxlPSJycGMiIC8+Ci0gICAgICA8aW5wdXQ+Ci0gICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0cDovL29yZy5vcmciLz4KLSAgICAgIDwvaW5wdXQ+Ci0gICAgICA8b3V0cHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHA6Ly9vcmcub3JnIiAvPgotICAgICAgPC9vdXRwdXQ+Ci0gICAgPC9vcGVyYXRpb24+Ci0gPC9iaW5kaW5nPgotICA8c2VydmljZSBuYW1lPSJFY2hvU2VydmljZSI+Ci0gICAgPHBvcnQgbmFtZT0iRWNob1BvcnQiIGJpbmRpbmc9InMwOkVjaG9CaW5kaW5nIj4KLSAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICA8L3BvcnQ+Ci0gIDwvc2VydmljZT4KLTwvZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTA1LTEvMjEwNWEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0xLzIxMDVhLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMWU3OWEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTA1LTEvMjEwNWEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTxkZWZpbml0aW9ucyAKLSAgICAgICAgeG1sbnM6aHR0cD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9odHRwLyIgCi0gICAgICAgIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIAotICAgICAgICB4bWxuczpzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgICAgIHhtbG5zOnMwPSJodHRwOi8vdGVtcHVyaS5vcmcvMjEwNWEiIAotICAgICAgICB4bWxuczpzb2FwZW5jPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIgCi0gICAgICAgIHhtbG5zOnRtPSJodHRwOi8vbWljcm9zb2Z0LmNvbS93c2RsL21pbWUvdGV4dE1hdGNoaW5nLyIgCi0gICAgICAgIHhtbG5zOm1pbWU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvbWltZS8iIAotICAgICAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMTA1YSIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLTwvZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTA1LTEvMjEwNWIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0xLzIxMDViLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MDc5YjMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTA1LTEvMjEwNWIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTxkZWZpbml0aW9ucyAKLSAgICAgICAgeG1sbnM6aHR0cD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9odHRwLyIgCi0gICAgICAgIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIAotICAgICAgICB4bWxuczpzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgICAgIHhtbG5zOnMwPSJodHRwOi8vdGVtcHVyaS5vcmcvMjEwNWIiIAotICAgICAgICB4bWxuczpzb2FwZW5jPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIgCi0gICAgICAgIHhtbG5zOnRtPSJodHRwOi8vbWljcm9zb2Z0LmNvbS93c2RsL21pbWUvdGV4dE1hdGNoaW5nLyIgCi0gICAgICAgIHhtbG5zOm1pbWU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvbWltZS8iIAotICAgICAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMTA1YiIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLTwvZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTA1LTEvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTA1LTEvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjdmYzBiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0xL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjEwNS0xIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbiBjb25mb3JtYW50IHdzZGwgY29udGFpbmluZyBhIHR5cGVzCi0gICAgZWxlbWVudCBwcmVjZWRpbmcgdGhlIDIgaW1wb3J0IGVsZW1lbnRzLiAKLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMTA1IiB0YWRJRD0iU1NCUDEwIi8+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMTA1IiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0yLzIxMDUtMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTA1LTIvMjEwNS0yLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MTE0N2YuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTA1LTIvMjEwNS0yLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08ZGVmaW5pdGlvbnMgCi0gICAgICAgIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIAotICAgICAgICB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiAKLSAgICAgICAgeG1sbnM6cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICB4bWxuczpzMD0iaHR0cDovL3RlbXB1cmkub3JnLyIgCi0gICAgICAgIHhtbG5zOnNvYXBlbmM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiAKLSAgICAgICAgeG1sbnM6dG09Imh0dHA6Ly9taWNyb3NvZnQuY29tL3dzZGwvbWltZS90ZXh0TWF0Y2hpbmcvIiAKLSAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgCi0gICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPGRvY3VtZW50YXRpb24+Ci0gIDwvZG9jdW1lbnRhdGlvbj4KLSAgPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMTA1YSIgbG9jYXRpb249IjIxMDVhLndzZGwiLz4KLSAgPHR5cGVzLz4KLSAgPGltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8yMTA1YiIgbG9jYXRpb249IjIxMDViLndzZGwiLz4KLQotICA8bWVzc2FnZSBuYW1lPSJlY2hvU3RyaW5nSW4iPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InM6c3RyaW5nIi8+Ci0gIDwvbWVzc2FnZT4KLSAgPG1lc3NhZ2UgbmFtZT0iZWNob1N0cmluZ091dCI+Ci0gICAgPHBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iczpzdHJpbmciIC8+Ci0gIDwvbWVzc2FnZT4KLSAgPHBvcnRUeXBlIG5hbWU9IkVjaG9Qb3J0VHlwZSI+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIiBwYXJhbWV0ZXJPcmRlcj0icGFyYW1ldGVycyI+Ci0gICAgICA8aW5wdXQgbWVzc2FnZT0iczA6ZWNob1N0cmluZ0luIiAvPgotICAgICAgPG91dHB1dCBtZXNzYWdlPSJzMDplY2hvU3RyaW5nT3V0IiAvPgotICAgIDwvb3BlcmF0aW9uPgotICAgPC9wb3J0VHlwZT4KLSAgPGJpbmRpbmcgbmFtZT0iRWNob0JpbmRpbmciIHR5cGU9InMwOkVjaG9Qb3J0VHlwZSI+Ci0gICAgPHNvYXA6YmluZGluZyB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIgc3R5bGU9InJwYyIgLz4KLSAgICA8b3BlcmF0aW9uIG5hbWU9ImVjaG9TdHJpbmciPgotICAgICAgPHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9lY2hvU3RyaW5nIiBzdHlsZT0icnBjIiAvPgotICAgICAgPGlucHV0PgotICAgICAgICA8c29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHA6Ly9vcmcub3JnIi8+Ci0gICAgICA8L2lucHV0PgotICAgICAgPG91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHRwOi8vb3JnLm9yZyIgLz4KLSAgICAgIDwvb3V0cHV0PgotICAgIDwvb3BlcmF0aW9uPgotIDwvYmluZGluZz4KLSAgPHNlcnZpY2UgbmFtZT0iRWNob1NlcnZpY2UiPgotICAgIDxwb3J0IG5hbWU9IkVjaG9Qb3J0IiBiaW5kaW5nPSJzMDpFY2hvQmluZGluZyI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgPC9wb3J0PgotICA8L3NlcnZpY2U+Ci08L2RlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0yLzIxMDVhLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMDUtMi8yMTA1YS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzFlNzlhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0yLzIxMDVhLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08ZGVmaW5pdGlvbnMgCi0gICAgICAgIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIAotICAgICAgICB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiAKLSAgICAgICAgeG1sbnM6cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICB4bWxuczpzMD0iaHR0cDovL3RlbXB1cmkub3JnLzIxMDVhIiAKLSAgICAgICAgeG1sbnM6c29hcGVuYz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIAotICAgICAgICB4bWxuczp0bT0iaHR0cDovL21pY3Jvc29mdC5jb20vd3NkbC9taW1lL3RleHRNYXRjaGluZy8iIAotICAgICAgICB4bWxuczptaW1lPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL21pbWUvIiAKLSAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvMjEwNWEiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci08L2RlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0yLzIxMDViLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMDUtMi8yMTA1Yi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzA3OWIzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0yLzIxMDViLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08ZGVmaW5pdGlvbnMgCi0gICAgICAgIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIAotICAgICAgICB4bWxuczpzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiAKLSAgICAgICAgeG1sbnM6cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICB4bWxuczpzMD0iaHR0cDovL3RlbXB1cmkub3JnLzIxMDViIiAKLSAgICAgICAgeG1sbnM6c29hcGVuYz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIAotICAgICAgICB4bWxuczp0bT0iaHR0cDovL21pY3Jvc29mdC5jb20vd3NkbC9taW1lL3RleHRNYXRjaGluZy8iIAotICAgICAgICB4bWxuczptaW1lPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL21pbWUvIiAKLSAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvMjEwNWIiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci08L2RlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0yL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjEwNS0yL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1OTlmOS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMDUtMi90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIxMDUtMiI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBub24gY29uZm9ybWFudCB3c2RsIGNvbnRhaW5pbmcgYSB0eXBlcwotICAgIGVsZW1lbnQgYmV0d2VlbiB0aGUgMiBpbXBvcnQgZWxlbWVudHMuIAotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIxMDUiIHRhZElEPSJTU0JQMTAiLz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIxMDUiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTE3LTEvMjExNy0xLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMTctMS8yMTE3LTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNiOGZlZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMTctMS8yMTE3LTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6aW1wbD0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gCi0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzcyI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcm92aW5jZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0iY2l0eSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ic3RyZWV0IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwb3N0YWxDb2RlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwaG9uZU51bWJlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6UGhvbmVOdW1iZXIiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJQaG9uZU51bWJlciI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJhcmVhIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByZWZpeCIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJudW1iZXIiIHR5cGU9InhzZDppbnQiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXR1cm4iIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPGVsZW1lbnQgbmFtZT0iYWRkcmVzcyIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgPHNlcXVlbmNlLz4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzc0hlYWRlclR5cGUiPgotCTxhbGw+Ci0JIDxlbGVtZW50IG5hbWU9ImEiIHR5cGU9ImludCIvPgotCSA8ZWxlbWVudCBuYW1lPSJiIiB0eXBlPSJib29sZWFuIi8+Ci0JIDxlbGVtZW50IG5hbWU9InMiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJzdHJpbmciLz4KLQk8L2FsbD4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJBZGRyZXNzSGVhZGVyIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJBZGRyZXNzQm9va1NvYXBCaW5kaW5nIiB0eXBlPSJpbnRmOkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbHNvYXA6YmluZGluZyBzdHlsZT0icnBjIiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTE3LTEvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTE3LTEvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTM3YWMzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjExNy0xL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjExNy0xIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbiBjb25mb3JtYW50IHdzZGwgY29udGFpbmluZyBhIHJwYyBsaXRlcmFsIGJpbmRpbmcKLSAgICB3aWggYSBuYW1wYWNlIGF0dHJpYnV0ZSBzcGVjaWZpZWQgdGhlIHNvYXBiaW5kOmZhdWx0IGVsZW1lbnQuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotICAgIDxhc3NlcnRpb24gaWQ9IkJQMjExNyIgdGFkSUQ9IlNTQlAxMCIvPgotICAgIDxhc3NlcnRpb24gaWQ9IkJQMjExNyIgdGFkSUQ9IkFQMTAiLz4KLSAgPC9leHBlY3RlZEZhaWx1cmVzPgotCi08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjExNy0yLzIxMTctMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTE3LTIvMjExNy0yLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmODIyYTcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTE3LTIvMjExNy0yLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczppbXBsPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAKLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2UvPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InBhcmFtZXRlcmZhdWx0Ij4KLSAgICA8cGFydCBuYW1lPSJwYXJ0MyIgdHlwZT0ieHNkOnN0cmluZyIgLz4KLSAgPC93c2RsOm1lc3NhZ2U+ICAKLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSIgbWVzc2FnZT0iaW50ZjpwYXJhbWV0ZXJmYXVsdCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9InJwYyIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpoZWFkZXIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCI+Ci0gICAgICAgIDwvd3NkbHNvYXA6aGVhZGVyPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSBwYXJ0cz0icGFyYW1ldGVycyIgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSI+Ci0gICAgICAgIDx3c2Rsc29hcDpmYXVsdCB1c2U9ImxpdGVyYWwiIG5hbWU9ImYxIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDpmYXVsdD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IkFkZHJlc3NCb29rIiBiaW5kaW5nPSJpbnRmOkFkZHJlc3NCb29rU29hcEJpbmRpbmciPgotICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9BZGRyZXNzQm9vayIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjExNy0yL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjExNy0yL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE0MDFlMi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMTctMi90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIxMTctMiI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBub24gY29uZm9ybWFudCB3c2RsIGNvbnRhaW5pbmcgYSBycGMgbGl0ZXJhbCBiaW5kaW5nCi0gICAgd2loIGEgbmFtcGFjZSBhdHRyaWJ1dGUgc3BlY2lmaWVkIHRoZSBzb2FwYmluZDpmYXVsdCBlbGVtZW50LgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIxMTciIHRhZElEPSJTU0JQMTAiLz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIxMTciIHRhZElEPSJBUDEwIi8+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMTEzIiB0YWRJRD0iU1NCUDEwIi8+Ci0gICAgPGFzc2VydGlvbiBpZD0iQlAyMTEzIiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci0KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTE3LTMvMjExNy0zLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMTctMy8yMTE3LTMud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI4OGY2MC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzIxMTctMy8yMTE3LTMud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotIAotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgdHlwZT0iaW1wbDpBZGRyZXNzSGVhZGVyVHlwZSIvPgotICA8L3NjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBlbGVtZW50PSJpbnRmOkFkZHJlc3NIZWFkZXIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0icGFyYW1ldGVyZmF1bHQiPgotICAgIDxwYXJ0IG5hbWU9InBhcnQzIiB0eXBlPSJ4c2Q6c3RyaW5nIiAvPgotICA8L3dzZGw6bWVzc2FnZT4gIAotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICAgIDx3c2RsOmZhdWx0IG5hbWU9ImYxIiBtZXNzYWdlPSJpbnRmOnBhcmFtZXRlcmZhdWx0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJBZGRyZXNzQm9va1NvYXBCaW5kaW5nIiB0eXBlPSJpbnRmOkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbHNvYXA6YmluZGluZyBzdHlsZT0icnBjIiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgICA8d3NkbHNvYXA6aGVhZGVyZmF1bHQgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiICBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgICAgPHdzZGw6ZmF1bHQgbmFtZT0iZjEiPgotICAgICAgICA8d3NkbHNvYXA6ZmF1bHQgdXNlPSJsaXRlcmFsIiBuYW1lPSJmMSIvPgotICAgICAgPC93c2RsOmZhdWx0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTE3LTMvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yMTE3LTMvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2QwNzJlLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjExNy0zL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjExNy0zIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbiBjb25mb3JtYW50IHdzZGwgY29udGFpbmluZyBhIHJwYyBsaXRlcmFsIGJpbmRpbmcKLSAgICB3aWggYSBuYW1wYWNlIGF0dHJpYnV0ZSBzcGVjaWZpZWQgdGhlIHNvYXBiaW5kOmhlYWRlcmZhdWx0IGVsZW1lbnQuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotICAgIDxhc3NlcnRpb24gaWQ9IkJQMjExNyIgdGFkSUQ9IlNTQlAxMCIvPgotICAgIDxhc3NlcnRpb24gaWQ9IkJQMjExNyIgdGFkSUQ9IkFQMTAiLz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIxMTMiIHRhZElEPSJTU0JQMTAiLz4KLSAgICA8YXNzZXJ0aW9uIGlkPSJCUDIxMTMiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLQotPC90ZXN0Y2FzZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzI0MDYtMS8yNDA2LTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjQwNi0xLzI0MDYtMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTI0ODYwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnAvMjQwNi0xLzI0MDYtMS53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci08ZGVmaW5pdGlvbnMgbmFtZT0iU2FtcGxlU2VydmljZSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiAgeG1sbnM6dG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIiAgIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0JPG1lc3NhZ2UgbmFtZT0iZ2V0U2FtcGxlUmVxdWVzdCI+Ci0JCTxwYXJ0IG5hbWU9InppcGNvZGUiIHR5cGU9InhzZDpzdHJpbmciLz4KLQk8L21lc3NhZ2U+Ci0JPG1lc3NhZ2UgbmFtZT0iZ2V0U2FtcGxlUmVzcG9uc2UiPgotCQk8cGFydCBuYW1lPSJyZXR1cm4iIHR5cGU9InhzZDpmbG9hdCIvPgotCTwvbWVzc2FnZT4KLQk8cG9ydFR5cGUgbmFtZT0iU2FtcGxlUG9ydFR5cGUiPgotCQk8b3BlcmF0aW9uIG5hbWU9ImdldFNhbXBsZSI+Ci0JCQk8aW5wdXQgbWVzc2FnZT0idG5zOmdldFNhbXBsZVJlcXVlc3QiLz4KLQkJCTxvdXRwdXQgbWVzc2FnZT0idG5zOmdldFNhbXBsZVJlc3BvbnNlIi8+Ci0JCTwvb3BlcmF0aW9uPgotCTwvcG9ydFR5cGU+Ci0JPGJpbmRpbmcgbmFtZT0iU2FtcGxlQmluZGluZyIgdHlwZT0idG5zOlNhbXBsZVBvcnRUeXBlIj4KLQkJPHNvYXA6YmluZGluZyBzdHlsZT0icnBjIiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotCQk8b3BlcmF0aW9uIG5hbWU9ImdldFNhbXBsZSI+Ci0JCQk8c29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0JCQk8aW5wdXQ+Ci0JCQkJPHNvYXA6Ym9keSB1c2U9ImVuY29kZWQiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgZW5jb2RpbmdTdHlsZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iLz4KLQkJCTwvaW5wdXQ+Ci0JCQk8b3V0cHV0PgotCQkJCTxzb2FwOmJvZHkgdXNlPSJlbmNvZGVkIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIGVuY29kaW5nU3R5bGU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIi8+Ci0JCQk8L291dHB1dD4KLQkJPC9vcGVyYXRpb24+Ci0JPC9iaW5kaW5nPgotCTxzZXJ2aWNlIG5hbWU9IlNhbXBsZVNlcnZpY2UiPgotCQk8ZG9jdW1lbnRhdGlvbj48L2RvY3VtZW50YXRpb24+Ci0JCTxwb3J0IG5hbWU9IlNhbXBsZVBvcnQiIGJpbmRpbmc9InRuczpTYW1wbGVCaW5kaW5nIj4KLQkJCTxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLQkJPC9wb3J0PgotCTwvc2VydmljZT4KLTwvZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzI0MDYtMS90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2JwLzI0MDYtMS90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczYTI4N2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9icC8yNDA2LTEvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyNDA2LTEiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uLWNvbmZvcm1hbnQgd3NkbCB0aGF0IGZhaWxzIHRlc3QgYXNzZXJ0aW9uIEJQMjQwNi4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyNDA2IiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyNDA2IiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnVnemlsbGEvZW1wdHlTb2FwQm9keS9lbXB0eVNvYXBCb2R5LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL2J1Z3ppbGxhL2VtcHR5U29hcEJvZHkvZW1wdHlTb2FwQm9keS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDIwMjk2Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvYnVnemlsbGEvZW1wdHlTb2FwQm9keS9lbXB0eVNvYXBCb2R5LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPGRlZmluaXRpb25zIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpzMD0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6c29hcGVuYz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIHhtbG5zOnRtPSJodHRwOi8vbWljcm9zb2Z0LmNvbS93c2RsL21pbWUvdGV4dE1hdGNoaW5nLyIgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8dHlwZXM+Ci0gICAgPHM6c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPgotICAgICAgPHM6ZWxlbWVudCBuYW1lPSJlY2hvU3RyaW5nIj4KLSAgICAgICAgPHM6Y29tcGxleFR5cGU+Ci0gICAgICAgICAgPHM6c2VxdWVuY2U+Ci0gICAgICAgICAgICA8czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIiBuYW1lPSJhcmciIHR5cGU9InM6c3RyaW5nIiAvPgotICAgICAgICAgIDwvczpzZXF1ZW5jZT4KLSAgICAgICAgPC9zOmNvbXBsZXhUeXBlPgotICAgICAgPC9zOmVsZW1lbnQ+Ci0gICAgPC9zOnNjaGVtYT4KLSAgPC90eXBlcz4KLSAgPG1lc3NhZ2UgbmFtZT0ic2V0TWVzc2FnZVJlcXVlc3QiPgotICAgIDxwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9InMwOmVjaG9TdHJpbmciIC8+Ci0gIDwvbWVzc2FnZT4KLSAgPG1lc3NhZ2UgbmFtZT0ic2V0TWVzc2FnZVJlc3BvbnNlIi8+Ci0KLSAgPHBvcnRUeXBlIG5hbWU9IlNlcnZpY2UxU29hcCI+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJzZXRNZXNzYWdlIj4KLSAgICAgIDxpbnB1dCBtZXNzYWdlPSJzMDpzZXRNZXNzYWdlUmVxdWVzdCIgLz4KLSAgICAgIDxvdXRwdXQgbWVzc2FnZT0iczA6c2V0TWVzc2FnZVJlc3BvbnNlIiAvPgotICAgIDwvb3BlcmF0aW9uPgotICA8L3BvcnRUeXBlPgotCi0gIDxiaW5kaW5nIG5hbWU9IlNlcnZpY2UxU29hcCIgdHlwZT0iczA6U2VydmljZTFTb2FwIj4KLSAgICA8c29hcDpiaW5kaW5nIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIiBzdHlsZT0iZG9jdW1lbnQiIC8+Ci0gICAgPG9wZXJhdGlvbiBuYW1lPSJzZXRNZXNzYWdlIj4KLSAgICAgIDxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiIHN0eWxlPSJkb2N1bWVudCIgLz4KLSAgICAgIDxpbnB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0gICAgICA8L2lucHV0PgotICAgICAgPG91dHB1dD4KLSAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIC8+Ci0gICAgICA8L291dHB1dD4KLSAgICA8L29wZXJhdGlvbj4KLSAgPC9iaW5kaW5nPgotCi0gIDxzZXJ2aWNlIG5hbWU9IlNlcnZpY2UxIj4KLSAgICA8cG9ydCBuYW1lPSJTZXJ2aWNlMVNvYXAiIGJpbmRpbmc9InMwOlNlcnZpY2UxU29hcCI+Ci0gICAgICA8c29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L1dTSVNlcnZpY2UvU2VydmljZTEuYXNteCIgLz4KLSAgICA8L3BvcnQ+Ci0gIDwvc2VydmljZT4KLTwvZGVmaW5pdGlvbnM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMC0xLzIwMTAtMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMC0xLzIwMTAtMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjEzZGEwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTAtMS8yMDEwLTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6aW1wbD0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzcyI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcm92aW5jZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0iY2l0eSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ic3RyZWV0IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwb3N0YWxDb2RlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwaG9uZU51bWJlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6UGhvbmVOdW1iZXIiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJQaG9uZU51bWJlciI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJhcmVhIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByZWZpeCIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJudW1iZXIiIHR5cGU9InhzZDppbnQiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXR1cm4iIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2UvPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzc0hlYWRlclR5cGUiPgotCTxhbGw+Ci0JIDxlbGVtZW50IG5hbWU9ImEiIHR5cGU9ImludCIvPgotCSA8ZWxlbWVudCBuYW1lPSJiIiB0eXBlPSJib29sZWFuIi8+Ci0JIDxlbGVtZW50IG5hbWU9InMiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJzdHJpbmciLz4KLQk8L2FsbD4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzSGVhZGVyVHlwZSIvPgotICA8L3NjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOnNhdmVBZGRyZXNzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOmZpbmRBZGRyZXNzIi8+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBlbGVtZW50PSJpbnRmOkFkZHJlc3NIZWFkZXIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTAtMS90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDEwLTEvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTliYWZjLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTAtMS90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIwMTAtMSI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBub24tY29uZm9ybWFudCB3c2RsIHRoYXQgZmFpbHMgdGVzdCBhc3NlcnRpb24gQlAyMDEwLgotICAgIE5vdGUgdGhpcyBhc3NlcnRpb24gaXMgY2F1Z2h0IGJ5IHRoZSBiYXNlIFdTREwgdmFsaWRhdG9yLgotICAgIFNvIHRoaXMgYXNzZXJ0aW9uIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKLSAgICBiYXNlIHZhbGlkYXRvci4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDEwIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDEwIiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMS8yMDExLTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMS8yMDExLTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQzMDhjZC4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTEvMjAxMS0xLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gICAgIDxpbXBvcnQgbmFtZXNwYWNlPSIyMDExLnhzZCIgc2NoZW1hTG9jYXRpb249IjIwMTEueHNkIi8+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzcyI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcm92aW5jZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0iY2l0eSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ic3RyZWV0IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwb3N0YWxDb2RlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwaG9uZU51bWJlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6UGhvbmVOdW1iZXIiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJQaG9uZU51bWJlciI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJhcmVhIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByZWZpeCIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJudW1iZXIiIHR5cGU9InhzZDppbnQiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXR1cm4iIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2UvPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzc0hlYWRlclR5cGUiPgotCTxhbGw+Ci0JIDxlbGVtZW50IG5hbWU9ImEiIHR5cGU9ImludCIvPgotCSA8ZWxlbWVudCBuYW1lPSJiIiB0eXBlPSJib29sZWFuIi8+Ci0JIDxlbGVtZW50IG5hbWU9InMiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJzdHJpbmciLz4KLQk8L2FsbD4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzSGVhZGVyVHlwZSIvPgotICA8L3NjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOnNhdmVBZGRyZXNzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOmZpbmRBZGRyZXNzIi8+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBlbGVtZW50PSJpbnRmOkFkZHJlc3NIZWFkZXIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMS8yMDExLnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMS8yMDExLnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg1N2Y3Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTEvMjAxMS54c2QKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0gPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgCi0gICAgICAgICB0YXJnZXROYW1lc3BhY2U9IjIwMTEueHNkIiAKLSAgICAgICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgCi0gICAgICAgICB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIAotICAgICAgICAgeG1sbnM6aW50Zj0iMjAxMS0xLnhzZCIgCi0gICAgICAgICB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gICAgPGltcG9ydCBuYW1lc3BhY2U9Im5leHQueHNkIiBzY2hlbWFMb2NhdGlvbj0ibmV4dC54c2QiLz4KLSAgPC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0xL25leHQueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0xL25leHQueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTY4NDIxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMS9uZXh0LnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08eHM6c2NoZW1hIAotICB0YXJnZXROYW1lc3BhY2U9Im5leHQueHNkIgotICB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICB4bWxuczpzPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyIgCi0gIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KLQk8eHM6YW5ub3RhdGlvbj4KLQkgIDx4czpkb2N1bWVudGF0aW9uPgotICAgCSAgPC94czpkb2N1bWVudGF0aW9uPgotCTwveHM6YW5ub3RhdGlvbj4KLTwveHM6c2NoZW1hPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0xL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMS90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYjY3MGMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0xL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDExLTEiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgb25mb3JtYW50IHdzZGwuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzLz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0yLzIwMTEtMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0yLzIwMTEtMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDMwOGNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMi8yMDExLTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6aW1wbD0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8d3NkbDp0eXBlcz4KLSAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgICAgPGltcG9ydCBuYW1lc3BhY2U9IjIwMTEueHNkIiBzY2hlbWFMb2NhdGlvbj0iMjAxMS54c2QiLz4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPGVsZW1lbnQgbmFtZT0iYWRkcmVzcyIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0yLzIwMTEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0yLzIwMTEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzIxNmQ3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMi8yMDExLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4xIiBlbmNvZGluZz0iVVRGLTgiPz4KLSA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiAKLSAgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iMjAxMS54c2QiIAotICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICAgICAgIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgCi0gICAgICAgICB4bWxuczppbnRmPSIyMDExLTEueHNkIiAKLSAgICAgICAgIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0yL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMi90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGQwOGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0yL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAxMS0yIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1jb25mb3JtYW50IHdzZGwgdGhhdCBzaG91bGQgZmFpbCB0ZXN0IGFzc2VydGlvbiBCUDIwMTEuCi0gICAgSG93ZXZlciB0aGUgcHJlcmVxdWlzaXRlIEJQMjEwMiBmYWlscyBiZWZvcmUgd2UgYWN0dWFsbHkgY2FuIGV4ZWN1dGUgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgIE5vdGUgdGhpcyBhc3NlcnRpb24gaXMgY2F1Z2h0IGJ5IHRoZSBiYXNlIFdTREwgdmFsaWRhdG9yLgotICAgIFNvIHRoaXMgYXNzZXJ0aW9uIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKLSAgICBiYXNlIHZhbGlkYXRvci4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMTAyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMjAyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMTAyIiB0YWRJRD0iQVAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjIwMiIgdGFkSUQ9IkFQMTAiLz4KLSAgPC9leHBlY3RlZEZhaWx1cmVzPgotPC90ZXN0Y2FzZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTMvMjAxMS0zLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTMvMjAxMS0zLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MzA4Y2QuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0zLzIwMTEtMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczppbXBsPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgICA8aW1wb3J0IG5hbWVzcGFjZT0iMjAxMS54c2QiIHNjaGVtYUxvY2F0aW9uPSIyMDExLnhzZCIvPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlLz4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkFkZHJlc3NCb29rU2VydmljZSI+Ci0gPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTMvMjAxMS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTMvMjAxMS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NTdmN2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS0zLzIwMTEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIAotICAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSIyMDExLnhzZCIgCi0gICAgICAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICAgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiAKLSAgICAgICAgIHhtbG5zOmludGY9IjIwMTEtMS54c2QiIAotICAgICAgICAgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgIDxpbXBvcnQgbmFtZXNwYWNlPSJuZXh0LnhzZCIgc2NoZW1hTG9jYXRpb249Im5leHQueHNkIi8+Ci0gIDwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMy9uZXh0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMy9uZXh0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYwYTc3Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTMvbmV4dC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjEiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHhzOnNjaGVtYSAKLSAgdGFyZ2V0TmFtZXNwYWNlPSJuZXh0LnhzZCIKLSAgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgeG1sbnM6cz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iIAotICBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+Ci0JPHhzOmFubm90YXRpb24+Ci0JICA8eHM6ZG9jdW1lbnRhdGlvbj4KLSAgIAkgIDwveHM6ZG9jdW1lbnRhdGlvbj4KLQk8L3hzOmFubm90YXRpb24+Ci08L3hzOnNjaGVtYT4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMy90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTMvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTA4YmVkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtMy90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIwMTEtMyI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBub24tY29uZm9ybWFudCB3c2RsIHRoYXQgc2hvdWxkIGZhaWwgdGVzdCBhc3NlcnRpb24gQlAyMDExLgotICAgIEhvd2V2ZXIgdGhlIHByZXJlcXVpc2l0ZSBCUDIxMDIgZmFpbHMgYmVmb3JlIHdlIGFjdHVhbGx5IGNhbiBleGVjdXRlIHRoZSB0ZXN0IGFzc2VydGlvbi4KLSAgICBOb3RlIHRoaXMgYXNzZXJ0aW9uIGlzIGNhdWdodCBieSB0aGUgYmFzZSBXU0RMIHZhbGlkYXRvci4KLSAgICBTbyB0aGlzIGFzc2VydGlvbiBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiBydW5uaW5nIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gICAgYmFzZSB2YWxpZGF0b3IuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotCTxhc3NlcnRpb24gaWQ9IkJQMjEwMiIgdGFkSUQ9IlNTQlAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjIwMiIgdGFkSUQ9IlNTQlAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjEwMiIgdGFkSUQ9IkFQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIyMDIiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS00LzIwMTEtNC53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS00LzIwMTEtNC53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDMwOGNkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtNC8yMDExLTQud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6aW1wbD0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8d3NkbDp0eXBlcz4KLSAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgICAgPGltcG9ydCBuYW1lc3BhY2U9IjIwMTEueHNkIiBzY2hlbWFMb2NhdGlvbj0iMjAxMS54c2QiLz4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPGVsZW1lbnQgbmFtZT0iYWRkcmVzcyIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS00LzIwMTEueHNkIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS00LzIwMTEueHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmM4N2JmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtNC8yMDExLnhzZAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLSA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiAKLSAgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iMjAxMS54c2QiIAotICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLSAgICAgICAgIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgCi0gICAgICAgICB4bWxuczppbnRmPSIyMDExLTEueHNkIiAKLSAgICAgICAgIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgICA8eHM6YW5ub3RhdGlvbj4KLSAgPC9zY2hlbWE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS00L3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtNC90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNmIyYTkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS00L3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAxMS00Ij4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1jb25mb3JtYW50IHdzZGwgdGhhdCBzaG91bGQgZmFpbCB0ZXN0IGFzc2VydGlvbiBCUDIwMTEuCi0gICAgSG93ZXZlciB0aGUgcHJlcmVxdWlzaXRlIEJQMjEwMiBmYWlscyBiZWZvcmUgd2UgYWN0dWFsbHkgY2FuIGV4ZWN1dGUgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgIE5vdGUgdGhpcyBhc3NlcnRpb24gaXMgY2F1Z2h0IGJ5IHRoZSBiYXNlIFdTREwgdmFsaWRhdG9yLgotICAgIFNvIHRoaXMgYXNzZXJ0aW9uIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKLSAgICBiYXNlIHZhbGlkYXRvci4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMTAyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMTIyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMTAyIiB0YWRJRD0iQVAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjEyMiIgdGFkSUQ9IkFQMTAiLz4KLSAgPC9leHBlY3RlZEZhaWx1cmVzPgotCi08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtNS8yMDExLTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtNS8yMDExLTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I0NTgzNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTUvMjAxMS01LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gICAgIDxpbXBvcnQgbmFtZXNwYWNlPSIyMDExLTEueHNkIiBzY2hlbWFMb2NhdGlvbj0iMjAxMS0xLnhzZCIvPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlLz4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkFkZHJlc3NCb29rU2VydmljZSI+Ci0gPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTUvMjAxMS54c2QgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTUvMjAxMS54c2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NTdmN2MuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS01LzIwMTEueHNkCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIAotICAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSIyMDExLnhzZCIgCi0gICAgICAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICAgICAgICAgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiAKLSAgICAgICAgIHhtbG5zOmludGY9IjIwMTEtMS54c2QiIAotICAgICAgICAgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgIDxpbXBvcnQgbmFtZXNwYWNlPSJuZXh0LnhzZCIgc2NoZW1hTG9jYXRpb249Im5leHQueHNkIi8+Ci0gIDwvc2NoZW1hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtNS9uZXh0LnhzZCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtNS9uZXh0LnhzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQzYzQ1NS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDExLTUvbmV4dC54c2QKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08eHM6c2NoZW1hIAotICB0YXJnZXROYW1lc3BhY2U9Im5leHQueHNkIgotICB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIAotICB4bWxuczpzPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyIgCi0gIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KLQk8eHM6YW5ub3RhdGlvbj4KLTwveHM6c2NoZW1hPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS01L3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMTEtNS90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0OWNiMjcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAxMS01L3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAxMS01Ij4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1jb25mb3JtYW50IHdzZGwgdGhhdCBzaG91bGQgZmFpbCB0ZXN0IGFzc2VydGlvbiBCUDIwMTEuCi0gICAgSG93ZXZlciB0aGUgcHJlcmVxdWlzaXRlIEJQMjEwMiBmYWlscyBiZWZvcmUgd2UgYWN0dWFsbHkgY2FuIGV4ZWN1dGUgdGhlIHRlc3QgYXNzZXJ0aW9uLgotICAgIE5vdGUgdGhpcyBhc3NlcnRpb24gaXMgY2F1Z2h0IGJ5IHRoZSBiYXNlIFdTREwgdmFsaWRhdG9yLgotICAgIFNvIHRoaXMgYXNzZXJ0aW9uIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKLSAgICBiYXNlIHZhbGlkYXRvci4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMTAyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMTIyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMjAyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMTAyIiB0YWRJRD0iQVAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjEyMiIgdGFkSUQ9IkFQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIyMDIiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS0xLzIwMjEtMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS0xLzIwMjEtMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDM2ODRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtMS8yMDIxLTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotIAotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgdHlwZT0iaW1wbDpBZGRyZXNzSGVhZGVyVHlwZSIvPgotICAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3MiIHR5cGU9InN0cmluZyIvPgotICA8L3NjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBlbGVtZW50PSJpbnRmOkFkZHJlc3NIZWFkZXIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0icGFyYW1ldGVyZmF1bHQiPgotICAgIDxwYXJ0IG5hbWU9InBhcnQzIiBlbGVtZW50PSJpbnRmOkFkZHJlc3MiIC8+Ci0gIDwvd3NkbDptZXNzYWdlPiAgCi0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICAgICAgPHdzZGw6ZmF1bHQgbmFtZT0iZjEiIG1lc3NhZ2U9ImludGY6cGFyYW1ldGVyZmF1bHQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkFkZHJlc3NCb29rU29hcEJpbmRpbmciIHR5cGU9ImludGY6QWRkcmVzc0Jvb2siPgotICAgIDx3c2Rsc29hcDpiaW5kaW5nIHN0eWxlPSJycGMiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6aGVhZGVyIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiBwYXJ0cz0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgICA8d3NkbHNvYXA6aGVhZGVyZmF1bHQgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiICBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgPC93c2Rsc29hcDpoZWFkZXI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHBhcnRzPSJwYXJhbWV0ZXJzIiB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICAgIDx3c2RsOmZhdWx0IG5hbWU9ImYxIj4KLSAgICAgICAgPHdzZGxzb2FwOmZhdWx0IHVzZT0ibGl0ZXJhbCIgbmFtZT0iZjEiLz4KLSAgICAgIDwvd3NkbDpmYXVsdD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IkFkZHJlc3NCb29rIiBiaW5kaW5nPSJpbnRmOkFkZHJlc3NCb29rU29hcEJpbmRpbmciPgotICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9BZGRyZXNzQm9vayIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtMS90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTEvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDY2N2I0Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtMS90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIwMjEtMSI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBub24tY29uZm9ybWFudCB3c2RsIHRoYXQgc2hvdWxkIGZhaWwgdGVzdCBhc3NlcnRpb24gQlAyMDIxLgotICAgIFNvYXBiaW5kOmhlYWRlciBlbGVtZW50IHVzZXMgcGFydHMgYXR0cmlidXRlLgotICAgIE5vdGUgdGhpcyBhc3NlcnRpb24gaXMgY2F1Z2h0IGJ5IHRoZSBiYXNlIFdTREwgdmFsaWRhdG9yLgotICAgIFNvIHRoaXMgYXNzZXJ0aW9uIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKLSAgICBiYXNlIHZhbGlkYXRvci4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDIxIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDIxIiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtMi8yMDIxLTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtMi8yMDIxLTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0ZjUyMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTIvMjAyMS0yLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczppbXBsPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAKLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2UvPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgICA8ZWxlbWVudCBuYW1lPSJBZGRyZXNzIiB0eXBlPSJzdHJpbmciLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InBhcmFtZXRlcmZhdWx0Ij4KLSAgICA8cGFydCBuYW1lPSJwYXJ0MyIgZWxlbWVudD0iaW50ZjpBZGRyZXNzIiAvPgotICA8L3dzZGw6bWVzc2FnZT4gIAotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICAgIDx3c2RsOmZhdWx0IG5hbWU9ImYxIiBtZXNzYWdlPSJpbnRmOnBhcmFtZXRlcmZhdWx0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJBZGRyZXNzQm9va1NvYXBCaW5kaW5nIiB0eXBlPSJpbnRmOkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbHNvYXA6YmluZGluZyBzdHlsZT0icnBjIiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgICA8d3NkbHNvYXA6aGVhZGVyZmF1bHQgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiICBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgPC93c2Rsc29hcDpoZWFkZXI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHBhcnRzPSJwYXJhbWV0ZXJzIiB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICAgIDx3c2RsOmZhdWx0IG5hbWU9ImYxIj4KLSAgICAgICAgPHdzZGxzb2FwOmZhdWx0IHVzZT0ibGl0ZXJhbCIgbmFtZT0iZjEiLz4KLSAgICAgIDwvd3NkbDpmYXVsdD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IkFkZHJlc3NCb29rIiBiaW5kaW5nPSJpbnRmOkFkZHJlc3NCb29rU29hcEJpbmRpbmciPgotICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9BZGRyZXNzQm9vayIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtMi90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTIvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjdiNmFmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtMi90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIwMjEtMiI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBub24tY29uZm9ybWFudCB3c2RsIHRoYXQgc2hvdWxkIGZhaWwgdGVzdCBhc3NlcnRpb24gQlAyMDIxLgotICAgIFNvYXBiaW5kOmhlYWRlciBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBwYXJ0IGF0dHJpYnV0ZS4KLSAgICBOb3RlIHRoaXMgYXNzZXJ0aW9uIGlzIGNhdWdodCBieSB0aGUgYmFzZSBXU0RMIHZhbGlkYXRvci4KLSAgICBTbyB0aGlzIGFzc2VydGlvbiBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiBydW5uaW5nIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gICAgYmFzZSB2YWxpZGF0b3IuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAyMSIgdGFkSUQ9IlNTQlAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAyMSIgdGFkSUQ9IkFQMTAiLz4KLSAgPC9leHBlY3RlZEZhaWx1cmVzPgotPC90ZXN0Y2FzZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTMvMjAyMS0zLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTMvMjAyMS0zLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmN2NlZGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS0zLzIwMjEtMy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6aW1wbD0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gCi0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzcyI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcm92aW5jZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0iY2l0eSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ic3RyZWV0IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwb3N0YWxDb2RlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwaG9uZU51bWJlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6UGhvbmVOdW1iZXIiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJQaG9uZU51bWJlciI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJhcmVhIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByZWZpeCIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJudW1iZXIiIHR5cGU9InhzZDppbnQiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXR1cm4iIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPGVsZW1lbnQgbmFtZT0iYWRkcmVzcyIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgPHNlcXVlbmNlLz4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzc0hlYWRlclR5cGUiPgotCTxhbGw+Ci0JIDxlbGVtZW50IG5hbWU9ImEiIHR5cGU9ImludCIvPgotCSA8ZWxlbWVudCBuYW1lPSJiIiB0eXBlPSJib29sZWFuIi8+Ci0JIDxlbGVtZW50IG5hbWU9InMiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJzdHJpbmciLz4KLQk8L2FsbD4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJBZGRyZXNzSGVhZGVyIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzcyIgdHlwZT0ic3RyaW5nIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJwYXJhbWV0ZXJmYXVsdCI+Ci0gICAgPHBhcnQgbmFtZT0icGFydDMiIGVsZW1lbnQ9ImludGY6QWRkcmVzcyIgLz4KLSAgPC93c2RsOm1lc3NhZ2U+ICAKLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSIgbWVzc2FnZT0iaW50ZjpwYXJhbWV0ZXJmYXVsdCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9InJwYyIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpoZWFkZXIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCI+Ci0gICAgICAgICAgPHdzZGxzb2FwOmhlYWRlcmZhdWx0IG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiAgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICAgIDwvd3NkbHNvYXA6aGVhZGVyPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSBwYXJ0cz0icGFyYW1ldGVycyIgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIiBuYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSI+Ci0gICAgICAgIDx3c2Rsc29hcDpmYXVsdCB1c2U9ImxpdGVyYWwiIG5hbWU9ImYxIi8+Ci0gICAgICA8L3dzZGw6ZmF1bHQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkFkZHJlc3NCb29rU2VydmljZSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJBZGRyZXNzQm9vayIgYmluZGluZz0iaW50ZjpBZGRyZXNzQm9va1NvYXBCaW5kaW5nIj4KLSAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvQWRkcmVzc0Jvb2siLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTMvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS0zL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjliMDE1Zi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTMvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDIxLTMiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uLWNvbmZvcm1hbnQgd3NkbCB0aGF0IHNob3VsZCBmYWlsIHRlc3QgYXNzZXJ0aW9uIEJQMjAyMS4KLSAgICBTb2FwYmluZDpoZWFkZXJmYXVsdCBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBwYXJ0IGF0dHJpYnV0ZS4KLSAgICBOb3RlIHRoaXMgYXNzZXJ0aW9uIGlzIGNhdWdodCBieSB0aGUgYmFzZSBXU0RMIHZhbGlkYXRvci4KLSAgICBTbyB0aGlzIGFzc2VydGlvbiBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiBydW5uaW5nIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gICAgYmFzZSB2YWxpZGF0b3IuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAyMSIgdGFkSUQ9IlNTQlAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAyMSIgdGFkSUQ9IkFQMTAiLz4KLSAgPC9leHBlY3RlZEZhaWx1cmVzPgotPC90ZXN0Y2FzZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTQvMjAyMS00LndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTQvMjAyMS00LndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NGFiN2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS00LzIwMjEtNC53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08d3NkbDpkZWZpbml0aW9ucyB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6aW1wbD0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8d3NkbDp0eXBlcz4KLSAgICA8c2NoZW1hIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6YXBhY2hlc29hcD0iaHR0cDovL3htbC5hcGFjaGUub3JnL3htbC1zb2FwIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzcyI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcm92aW5jZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0iY2l0eSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ic3RyZWV0IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwb3N0YWxDb2RlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwaG9uZU51bWJlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6UGhvbmVOdW1iZXIiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJQaG9uZU51bWJlciI+Ci0gICAgPHNlcXVlbmNlPgotICAgICA8ZWxlbWVudCBuYW1lPSJhcmVhIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByZWZpeCIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJudW1iZXIiIHR5cGU9InhzZDppbnQiLz4KLSAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXR1cm4iIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGVsZW1lbnQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2UvPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iQWRkcmVzc0hlYWRlclR5cGUiPgotCTxhbGw+Ci0JIDxlbGVtZW50IG5hbWU9ImEiIHR5cGU9ImludCIvPgotCSA8ZWxlbWVudCBuYW1lPSJiIiB0eXBlPSJib29sZWFuIi8+Ci0JIDxlbGVtZW50IG5hbWU9InMiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJzdHJpbmciLz4KLQk8L2FsbD4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzSGVhZGVyVHlwZSIvPgotICA8L3NjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOnNhdmVBZGRyZXNzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOmZpbmRBZGRyZXNzIi8+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBlbGVtZW50PSJpbnRmOkFkZHJlc3NIZWFkZXIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0icGFyYW1ldGVyZmF1bHQiPgotICAgIDxwYXJ0IG5hbWU9InBhcnQzIiBlbGVtZW50PSJpbnRmOmZpbmRBZGRyZXNzIiAvPgotICAgPC93c2RsOm1lc3NhZ2U+IAotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICAgIDx3c2RsOmZhdWx0IG5hbWU9ImYxIiBtZXNzYWdlPSJpbnRmOnBhcmFtZXRlcmZhdWx0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJBZGRyZXNzQm9va1NvYXBCaW5kaW5nIiB0eXBlPSJpbnRmOkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6aGVhZGVyIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiBwYXJ0cz0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgICAgPHdzZGxzb2FwOmhlYWRlcmZhdWx0IG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiAgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSI+Ci0gICAgICAgIDx3c2Rsc29hcDpmYXVsdCB1c2U9ImxpdGVyYWwiIG5hbWU9ImYxIi8+Ci0gICAgICA8L3dzZGw6ZmF1bHQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IkFkZHJlc3NCb29rIiBiaW5kaW5nPSJpbnRmOkFkZHJlc3NCb29rU29hcEJpbmRpbmciPgotICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9BZGRyZXNzQm9vayIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtNC90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTQvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDVjYzQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtNC90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9IjIwMjEtNCI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBub24tY29uZm9ybWFudCB3c2RsIHRoYXQgc2hvdWxkIGZhaWwgdGVzdCBhc3NlcnRpb24gQlAyMDIxLgotICAgIFNvYXBiaW5kOmhlYWRlciBlbGVtZW50IHVzZXMgcGFydHMgYXR0cmlidXRlLgotICAgIE5vdGUgdGhpcyBhc3NlcnRpb24gaXMgY2F1Z2h0IGJ5IHRoZSBiYXNlIFdTREwgdmFsaWRhdG9yLgotICAgIFNvIHRoaXMgYXNzZXJ0aW9uIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKLSAgICBiYXNlIHZhbGlkYXRvci4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDIxIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDIxIiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtNS8yMDIxLTUud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtNS8yMDIxLTUud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1ZDdmMy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTUvMjAyMS01LndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczppbXBsPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPGVsZW1lbnQgbmFtZT0iYWRkcmVzcyIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJwYXJhbWV0ZXJmYXVsdCI+Ci0gICAgPHBhcnQgbmFtZT0icGFydDMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiIC8+Ci0gICA8L3dzZGw6bWVzc2FnZT4gCi0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICAgICAgPHdzZGw6ZmF1bHQgbmFtZT0iZjEiIG1lc3NhZ2U9ImludGY6cGFyYW1ldGVyZmF1bHQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkFkZHJlc3NCb29rU29hcEJpbmRpbmciIHR5cGU9ImludGY6QWRkcmVzc0Jvb2siPgotICAgIDx3c2Rsc29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpoZWFkZXIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiIHVzZT0ibGl0ZXJhbCI+Ci0gICAgICAgICAgIDx3c2Rsc29hcDpoZWFkZXJmYXVsdCBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCIvPgotICAgICAgICAgPC93c2Rsc29hcDpoZWFkZXI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHBhcnRzPSJwYXJhbWV0ZXJzIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgICAgPHdzZGw6ZmF1bHQgbmFtZT0iZjEiPgotICAgICAgICA8d3NkbHNvYXA6ZmF1bHQgdXNlPSJsaXRlcmFsIiBuYW1lPSJmMSIvPgotICAgICAgPC93c2RsOmZhdWx0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkFkZHJlc3NCb29rU2VydmljZSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJBZGRyZXNzQm9vayIgYmluZGluZz0iaW50ZjpBZGRyZXNzQm9va1NvYXBCaW5kaW5nIj4KLSAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvQWRkcmVzc0Jvb2siLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTUvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS01L3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdjOTI4Yy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIxLTUvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDIxLTUiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uLWNvbmZvcm1hbnQgd3NkbCB0aGF0IHNob3VsZCBmYWlsIHRlc3QgYXNzZXJ0aW9uIEJQMjAyMS4KLSAgICBTb2FwYmluZDpoZWFkZXIgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgcGFydCBhdHRyaWJ1dGUuCi0gICAgTm90ZSB0aGlzIGFzc2VydGlvbiBpcyBjYXVnaHQgYnkgdGhlIGJhc2UgV1NETCB2YWxpZGF0b3IuCi0gICAgU28gdGhpcyBhc3NlcnRpb24gc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gcnVubmluZyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZQotICAgIGJhc2UgdmFsaWRhdG9yLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMjEiIHRhZElEPSJTU0JQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMjEiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS02LzIwMjEtNi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS02LzIwMjEtNi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2E4NTUzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtNi8yMDIxLTYud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlLz4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InBhcmFtZXRlcmZhdWx0Ij4KLSAgICA8cGFydCBuYW1lPSJwYXJ0MyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIgLz4KLSAgIDwvd3NkbDptZXNzYWdlPiAKLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSIgbWVzc2FnZT0iaW50ZjpwYXJhbWV0ZXJmYXVsdCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgICAgPHdzZGxzb2FwOmhlYWRlcmZhdWx0IG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgIDwvd3NkbHNvYXA6aGVhZGVyPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSBwYXJ0cz0icGFyYW1ldGVycyIgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICAgIDx3c2RsOmZhdWx0IG5hbWU9ImYxIj4KLSAgICAgICAgPHdzZGxzb2FwOmZhdWx0IHVzZT0ibGl0ZXJhbCIgbmFtZT0iZjEiLz4KLSAgICAgIDwvd3NkbDpmYXVsdD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS02L3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjEtNi90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZjE1MDkuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMS02L3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAyMS02Ij4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1jb25mb3JtYW50IHdzZGwgdGhhdCBzaG91bGQgZmFpbCB0ZXN0IGFzc2VydGlvbiBCUDIwMjEuCi0gICAgU29hcGJpbmQ6aGVhZGVyZmF1bHQgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgcGFydCBhdHRyaWJ1dGUuCi0gICAgTm90ZSB0aGlzIGFzc2VydGlvbiBpcyBjYXVnaHQgYnkgdGhlIGJhc2UgV1NETCB2YWxpZGF0b3IuCi0gICAgU28gdGhpcyBhc3NlcnRpb24gc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gcnVubmluZyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZQotICAgIGJhc2UgdmFsaWRhdG9yLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMjEiIHRhZElEPSJTU0JQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMjEiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMi0xLzIwMjItMS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMi0xLzIwMjItMS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTM4MGMwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjItMS8yMDIyLTEud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotIAotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImFkZHJlc3MiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3MiLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgdHlwZT0iaW1wbDpBZGRyZXNzSGVhZGVyVHlwZSIvPgotICAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3MiIHR5cGU9InN0cmluZyIvPgotICA8L3NjaGVtYT4KLSAgPC93c2RsOnR5cGVzPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJBZGRyZXNzSGVhZGVyIiBlbGVtZW50PSJpbnRmOkFkZHJlc3NIZWFkZXIiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0icGFyYW1ldGVyZmF1bHQiPgotICAgIDxwYXJ0IG5hbWU9InBhcnQzIiBlbGVtZW50PSJpbnRmOkFkZHJlc3MiIC8+Ci0gIDwvd3NkbDptZXNzYWdlPiAgCi0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICAgICAgPHdzZGw6ZmF1bHQgbmFtZT0iZjEiIG1lc3NhZ2U9ImludGY6cGFyYW1ldGVyZmF1bHQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkFkZHJlc3NCb29rU29hcEJpbmRpbmciIHR5cGU9ImludGY6QWRkcmVzc0Jvb2siPgotICAgIDx3c2Rsc29hcDpiaW5kaW5nIHN0eWxlPSJycGMiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6aGVhZGVyIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiPgotICAgICAgICAgIDx3c2Rsc29hcDpoZWFkZXJmYXVsdCBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCIvPgotICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgICAgPHdzZGw6ZmF1bHQgbmFtZT0iZjEiPgotICAgICAgICA8d3NkbHNvYXA6ZmF1bHQgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6ZmF1bHQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkFkZHJlc3NCb29rU2VydmljZSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJBZGRyZXNzQm9vayIgYmluZGluZz0iaW50ZjpBZGRyZXNzQm9va1NvYXBCaW5kaW5nIj4KLSAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvQWRkcmVzc0Jvb2siLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIyLTEvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMi0xL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFjYzAyYy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDIyLTEvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDIyLTEiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uLWNvbmZvcm1hbnQgd3NkbCB0aGF0IHNob3VsZCBmYWlsIHRlc3QgYXNzZXJ0aW9uIEJQMjAyMi4KLSAgICBTb2FwYmluZDpmYXVsdCBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBuYW1lIGF0dHJpYnV0ZS4KLSAgICBOb3RlIHRoaXMgYXNzZXJ0aW9uIGlzIGNhdWdodCBieSB0aGUgYmFzZSBXU0RMIHZhbGlkYXRvci4KLSAgICBTbyB0aGlzIGFzc2VydGlvbiBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiBydW5uaW5nIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gICAgYmFzZSB2YWxpZGF0b3IuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAyMiIgdGFkSUQ9IlNTQlAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAyMiIgdGFkSUQ9IkFQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMzIiIHRhZElEPSJTU0JQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMzIiIHRhZElEPSJBUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMi0yLzIwMjItMi53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMi0yLzIwMjItMi53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmRlMWRmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjItMi8yMDIyLTIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczp3c2RsPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmltcGw9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgPHdzZGw6dHlwZXM+Ci0gICAgPHNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmFwYWNoZXNvYXA9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc29hcCIgeG1sbnM6aW50Zj0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3MiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlPgotICAgICAgPGVsZW1lbnQgbmFtZT0ibmFtZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPC9zZXF1ZW5jZT4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3MiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJvdmluY2UiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImNpdHkiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InN0cmVldCIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSIgbmlsbGFibGU9InRydWUiIHR5cGU9InhzZDpzdHJpbmciLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icGhvbmVOdW1iZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOlBob25lTnVtYmVyIi8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8Y29tcGxleFR5cGUgbmFtZT0iUGhvbmVOdW1iZXIiPgotICAgIDxzZXF1ZW5jZT4KLSAgICAgPGVsZW1lbnQgbmFtZT0iYXJlYSIgdHlwZT0ieHNkOmludCIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJwcmVmaXgiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0ibnVtYmVyIiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgPC9zZXF1ZW5jZT4KLSAgIDwvY29tcGxleFR5cGU+Ci0gICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzUmV0dXJuIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxlbGVtZW50IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDxjb21wbGV4VHlwZT4KLSAgICAgPHNlcXVlbmNlLz4KLSAgICA8L2NvbXBsZXhUeXBlPgotICAgPC9lbGVtZW50PgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFkZHJlc3NIZWFkZXJUeXBlIj4KLQk8YWxsPgotCSA8ZWxlbWVudCBuYW1lPSJhIiB0eXBlPSJpbnQiLz4KLQkgPGVsZW1lbnQgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiIvPgotCSA8ZWxlbWVudCBuYW1lPSJzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ic3RyaW5nIi8+Ci0JPC9hbGw+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgZWxlbWVudD0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InBhcmFtZXRlcmZhdWx0Ij4KLSAgICA8cGFydCBuYW1lPSJwYXJ0MyIgZWxlbWVudD0iaW50ZjpmaW5kQWRkcmVzcyIgLz4KLSAgIDwvd3NkbDptZXNzYWdlPiAKLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSIgbWVzc2FnZT0iaW50ZjpwYXJhbWV0ZXJmYXVsdCIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6cG9ydFR5cGU+Ci0gIDx3c2RsOmJpbmRpbmcgbmFtZT0iQWRkcmVzc0Jvb2tTb2FwQmluZGluZyIgdHlwZT0iaW50ZjpBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgICAgPHdzZGxzb2FwOmhlYWRlcmZhdWx0IG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiAgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgICA8d3NkbDpmYXVsdCBuYW1lPSJmMSI+Ci0gICAgICAgIDx3c2Rsc29hcDpmYXVsdCB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpmYXVsdD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMi0yL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMjItMi90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYTg5MmEuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAyMi0yL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAyMi0yIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1jb25mb3JtYW50IHdzZGwgdGhhdCBzaG91bGQgZmFpbCB0ZXN0IGFzc2VydGlvbiBCUDIwMjIuCi0gICAgU29hcGJpbmQ6ZmF1bHQgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbmFtZSBhdHRyaWJ1dGUuCi0gICAgTm90ZSB0aGlzIGFzc2VydGlvbiBpcyBjYXVnaHQgYnkgdGhlIGJhc2UgV1NETCB2YWxpZGF0b3IuCi0gICAgU28gdGhpcyBhc3NlcnRpb24gc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gcnVubmluZyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZQotICAgIGJhc2UgdmFsaWRhdG9yLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMjIiIHRhZElEPSJTU0JQMTAiLz4KLQk8YXNzZXJ0aW9uIGlkPSJCUDIwMjIiIHRhZElEPSJBUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDMyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDMyIiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMzItMS8yMDMyLTEud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMzItMS8yMDMyLTEud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyMjM1ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDMyLTEvMjAzMi0xLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczppbXBsPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAKLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2UvPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgICA8ZWxlbWVudCBuYW1lPSJBZGRyZXNzIiB0eXBlPSJzdHJpbmciLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InBhcmFtZXRlcmZhdWx0Ij4KLSAgICA8cGFydCBuYW1lPSJwYXJ0MyIgZWxlbWVudD0iaW50ZjpBZGRyZXNzIiAvPgotICA8L3dzZGw6bWVzc2FnZT4gIAotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICAgIDx3c2RsOmZhdWx0IG5hbWU9ImYxIiBtZXNzYWdlPSJpbnRmOnBhcmFtZXRlcmZhdWx0Ii8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJBZGRyZXNzQm9va1NvYXBCaW5kaW5nIiB0eXBlPSJpbnRmOkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbHNvYXA6YmluZGluZyBzdHlsZT0icnBjIiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCIvPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmhlYWRlciBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgcGFydD0iQWRkcmVzc0hlYWRlciIgdXNlPSJsaXRlcmFsIj4KLSAgICAgICAgICA8d3NkbHNvYXA6aGVhZGVyZmF1bHQgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiICBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgICAgPC93c2Rsc29hcDpoZWFkZXI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHBhcnRzPSJwYXJhbWV0ZXJzIiB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICAgIDx3c2RsOmZhdWx0IG5hbWU9ImYxIj4KLSAgICAgICAgPHdzZGxzb2FwOmZhdWx0IG5hbWU9ImZhdWx0MSIgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6ZmF1bHQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpiaW5kaW5nPgotICA8d3NkbDpzZXJ2aWNlIG5hbWU9IkFkZHJlc3NCb29rU2VydmljZSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJBZGRyZXNzQm9vayIgYmluZGluZz0iaW50ZjpBZGRyZXNzQm9va1NvYXBCaW5kaW5nIj4KLSAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvQWRkcmVzc0Jvb2siLz4KLSAgICA8L3dzZGw6cG9ydD4KLSAgPC93c2RsOnNlcnZpY2U+Ci08L3dzZGw6ZGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDMyLTEvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAzMi0xL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE4YjMyNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDMyLTEvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSIyMDMyLTEiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgbm9uLWNvbmZvcm1hbnQgd3NkbCB0aGF0IHNob3VsZCBmYWlsIHRlc3QgYXNzZXJ0aW9uIEJQMjAyMi4KLSAgICBUaGUgbmFtZSBhdHRyaWJ1dGUgdmFsdWUgb24gdGhlIFNvYXBiaW5kOmZhdWx0IGVsZW1lbnQgZG9lcyBub3QgbWF0Y2ggdGhlIG5hbWUgCi0gICAgYXR0cmlidXRlIHZhbHVlIHNwZWNpZmllZCBvbiB0aGUgcGFyZW50IGVsZW1lbnQgd3NkbDpmYXVsdCBlbGVtZW50LgotICAgIE5vdGUgdGhpcyBhc3NlcnRpb24gaXMgY2F1Z2h0IGJ5IHRoZSBiYXNlIFdTREwgdmFsaWRhdG9yLgotICAgIFNvIHRoaXMgYXNzZXJ0aW9uIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKLSAgICBiYXNlIHZhbGlkYXRvci4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXM+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDMyIiB0YWRJRD0iU1NCUDEwIi8+Ci0JPGFzc2VydGlvbiBpZD0iQlAyMDMyIiB0YWRJRD0iQVAxMCIvPgotICA8L2V4cGVjdGVkRmFpbHVyZXM+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMzItMi8yMDMyLTIud3NkbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMzItMi8yMDMyLTIud3NkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUyZmFkZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3JlZHVuZGFudC8yMDMyLTIvMjAzMi0yLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczppbXBsPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPGVsZW1lbnQgbmFtZT0iYWRkcmVzcyIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJwYXJhbWV0ZXJmYXVsdCI+Ci0gICAgPHBhcnQgbmFtZT0icGFydDMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiIC8+Ci0gICA8L3dzZGw6bWVzc2FnZT4gCi0gIDx3c2RsOnBvcnRUeXBlIG5hbWU9IkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICAgICAgPHdzZGw6ZmF1bHQgbmFtZT0iZjEiIG1lc3NhZ2U9ImludGY6cGFyYW1ldGVyZmF1bHQiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkFkZHJlc3NCb29rU29hcEJpbmRpbmciIHR5cGU9ImludGY6QWRkcmVzc0Jvb2siPgotICAgIDx3c2Rsc29hcDpiaW5kaW5nIHN0eWxlPSJkb2N1bWVudCIgdHJhbnNwb3J0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2h0dHAiLz4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZmluZEFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpoZWFkZXIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCI+Ci0gICAgICAgICAgIDx3c2Rsc29hcDpoZWFkZXJmYXVsdCBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVxdWVzdCIgIHBhcnQ9IkFkZHJlc3NIZWFkZXIiIHVzZT0ibGl0ZXJhbCIvPgotICAgICAgICAgPC93c2Rsc29hcDpoZWFkZXI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHBhcnRzPSJwYXJhbWV0ZXJzIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDppbnB1dD4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgICAgPHdzZGw6ZmF1bHQgbmFtZT0iZjEiPgotICAgICAgICA8d3NkbHNvYXA6ZmF1bHQgbmFtZT0iZmF1bHQxIiB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpmYXVsdD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbHNvYXA6b3BlcmF0aW9uIHNvYXBBY3Rpb249IiIvPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAzMi0yL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvcmVkdW5kYW50LzIwMzItMi90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMzQ1OTMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC9yZWR1bmRhbnQvMjAzMi0yL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iMjAzMi0yIj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1jb25mb3JtYW50IHdzZGwgdGhhdCBzaG91bGQgZmFpbCB0ZXN0IGFzc2VydGlvbiBCUDIwMjIuCi0gICAgVGhlIG5hbWUgYXR0cmlidXRlIHZhbHVlIG9uIHRoZSBTb2FwYmluZDpmYXVsdCBlbGVtZW50IGRvZXMgbm90IG1hdGNoIHRoZSBuYW1lIAotICAgIGF0dHJpYnV0ZSB2YWx1ZSBzcGVjaWZpZWQgb24gdGhlIHBhcmVudCBlbGVtZW50IHdzZGw6ZmF1bHQgZWxlbWVudC4KLSAgICBOb3RlIHRoaXMgYXNzZXJ0aW9uIGlzIGNhdWdodCBieSB0aGUgYmFzZSBXU0RMIHZhbGlkYXRvci4KLSAgICBTbyB0aGlzIGFzc2VydGlvbiBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiBydW5uaW5nIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gICAgYmFzZSB2YWxpZGF0b3IuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAzMiIgdGFkSUQ9IlNTQlAxMCIvPgotCTxhc3NlcnRpb24gaWQ9IkJQMjAzMiIgdGFkSUQ9IkFQMTAiLz4KLSAgPC9leHBlY3RlZEZhaWx1cmVzPgotPC90ZXN0Y2FzZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3dzaS9hZGRyZXNzQm9vay1ycGMvYWRkcmVzc0Jvb2stcnBjLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3dzaS9hZGRyZXNzQm9vay1ycGMvYWRkcmVzc0Jvb2stcnBjLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NzdjMTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvYWRkcmVzc0Jvb2stcnBjL2FkZHJlc3NCb29rLXJwYy53c2RsCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczppbXBsPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAKLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpBZGRyZXNzIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICA8c2VxdWVuY2UvPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIHR5cGU9ImltcGw6QWRkcmVzc0hlYWRlclR5cGUiLz4KLSAgPC9zY2hlbWE+Ci0gIDwvd3NkbDp0eXBlcz4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpzYXZlQWRkcmVzcyIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgIDx3c2RsOnBhcnQgbmFtZT0iQWRkcmVzc0hlYWRlciIgZWxlbWVudD0iaW50ZjpBZGRyZXNzSGVhZGVyIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDptZXNzYWdlIG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgIDx3c2RsOnBhcnQgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gIDwvd3NkbDptZXNzYWdlPgotICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJBZGRyZXNzQm9vayI+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVxdWVzdCIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1JlcXVlc3QiLz4KLSAgICAgIDx3c2RsOm91dHB1dCBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIiBtZXNzYWdlPSJpbnRmOmZpbmRBZGRyZXNzUmVzcG9uc2UiLz4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpzYXZlQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOnBvcnRUeXBlPgotICA8d3NkbDpiaW5kaW5nIG5hbWU9IkFkZHJlc3NCb29rU29hcEJpbmRpbmciIHR5cGU9ImludGY6QWRkcmVzc0Jvb2siPgotICAgIDx3c2Rsc29hcDpiaW5kaW5nIHN0eWxlPSJycGMiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6aGVhZGVyIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiPgotICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6aW5wdXQ+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIgbmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIi8+Ci0gICAgICA8L3dzZGw6b3V0cHV0PgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9InNhdmVBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJzYXZlQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiIG5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIvPgotICAgICAgPC93c2RsOm91dHB1dD4KLSAgICA8L3dzZGw6b3BlcmF0aW9uPgotICA8L3dzZGw6YmluZGluZz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJBZGRyZXNzQm9va1NlcnZpY2UiPgotICAgIDx3c2RsOnBvcnQgbmFtZT0iQWRkcmVzc0Jvb2siIGJpbmRpbmc9ImludGY6QWRkcmVzc0Jvb2tTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0FkZHJlc3NCb29rIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvYWRkcmVzc0Jvb2stcnBjL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL2FkZHJlc3NCb29rLXJwYy90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1YTJmOGQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvYWRkcmVzc0Jvb2stcnBjL3Rlc3RjYXNlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSJhZGRyZXNzQm9vay1ycGMiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgY29uZm9ybWFudCB3c2RsIHVzZWQgaW4gdGhlIFdTLUkgCi0gICAgaW50ZXJvcGVyYWJpbGl0eSBkZW1vLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcy8+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL2FkZHJlc3NCb29rL2FkZHJlc3NCb29rLndzZGwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3dzaS9hZGRyZXNzQm9vay9hZGRyZXNzQm9vay53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTQ4MmQ4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL2FkZHJlc3NCb29rL2FkZHJlc3NCb29rLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx3c2RsOmRlZmluaXRpb25zIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiB4bWxuczppbnRmPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczppbXBsPSJodHRwOi8vdGVtcHVyaS5vcmcvIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI+Ci0gIDx3c2RsOnR5cGVzPgotICAgIDxzY2hlbWEgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczphcGFjaGVzb2FwPSJodHRwOi8veG1sLmFwYWNoZS5vcmcveG1sLXNvYXAiIHhtbG5zOmludGY9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIj4KLSAgIDxlbGVtZW50IG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZT4KLSAgICAgIDxlbGVtZW50IG5hbWU9Im5hbWUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDwvc2VxdWVuY2U+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9InByb3ZpbmNlIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJjaXR5IiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICA8ZWxlbWVudCBuYW1lPSJzdHJlZXQiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBvc3RhbENvZGUiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJ4c2Q6c3RyaW5nIi8+Ci0gICAgIDxlbGVtZW50IG5hbWU9InBob25lTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0iaW1wbDpQaG9uZU51bWJlciIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGNvbXBsZXhUeXBlIG5hbWU9IlBob25lTnVtYmVyIj4KLSAgICA8c2VxdWVuY2U+Ci0gICAgIDxlbGVtZW50IG5hbWU9ImFyZWEiIHR5cGU9InhzZDppbnQiLz4KLSAgICAgPGVsZW1lbnQgbmFtZT0icHJlZml4IiB0eXBlPSJ4c2Q6aW50Ii8+Ci0gICAgIDxlbGVtZW50IG5hbWU9Im51bWJlciIgdHlwZT0ieHNkOmludCIvPgotICAgIDwvc2VxdWVuY2U+Ci0gICA8L2NvbXBsZXhUeXBlPgotICAgPGVsZW1lbnQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJmaW5kQWRkcmVzc1JldHVybiIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzcyI+Ci0gICAgPGNvbXBsZXhUeXBlPgotICAgICA8c2VxdWVuY2U+Ci0gICAgICA8ZWxlbWVudCBuYW1lPSJuYW1lIiBuaWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHNkOnN0cmluZyIvPgotICAgICAgPGVsZW1lbnQgbmFtZT0iYWRkcmVzcyIgbmlsbGFibGU9InRydWUiIHR5cGU9ImltcGw6QWRkcmVzcyIvPgotICAgICA8L3NlcXVlbmNlPgotICAgIDwvY29tcGxleFR5cGU+Ci0gICA8L2VsZW1lbnQ+Ci0gICA8ZWxlbWVudCBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8Y29tcGxleFR5cGU+Ci0gICAgIDxzZXF1ZW5jZS8+Ci0gICAgPC9jb21wbGV4VHlwZT4KLSAgIDwvZWxlbWVudD4KLSAgIDxjb21wbGV4VHlwZSBuYW1lPSJBZGRyZXNzSGVhZGVyVHlwZSI+Ci0JPGFsbD4KLQkgPGVsZW1lbnQgbmFtZT0iYSIgdHlwZT0iaW50Ii8+Ci0JIDxlbGVtZW50IG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iLz4KLQkgPGVsZW1lbnQgbmFtZT0icyIgbmlsbGFibGU9InRydWUiIHR5cGU9InN0cmluZyIvPgotCTwvYWxsPgotICAgPC9jb21wbGV4VHlwZT4KLSAgIDxlbGVtZW50IG5hbWU9IkFkZHJlc3NIZWFkZXIiIG5pbGxhYmxlPSJ0cnVlIiB0eXBlPSJpbXBsOkFkZHJlc3NIZWFkZXJUeXBlIi8+Ci0gIDwvc2NoZW1hPgotICA8L3dzZGw6dHlwZXM+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3MiLz4KLSAgPC93c2RsOm1lc3NhZ2U+Ci0gIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZmluZEFkZHJlc3NSZXF1ZXN0Ij4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3MiLz4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9IkFkZHJlc3NIZWFkZXIiIGVsZW1lbnQ9ImludGY6QWRkcmVzc0hlYWRlciIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJmaW5kQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6ZmluZEFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6bWVzc2FnZSBuYW1lPSJzYXZlQWRkcmVzc1Jlc3BvbnNlIj4KLSAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICA8L3dzZGw6bWVzc2FnZT4KLSAgPHdzZGw6cG9ydFR5cGUgbmFtZT0iQWRkcmVzc0Jvb2siPgotICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJmaW5kQWRkcmVzcyI+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0Ii8+Ci0gICAgICA8d3NkbDpvdXRwdXQgbmFtZT0iZmluZEFkZHJlc3NSZXNwb25zZSIgbWVzc2FnZT0iaW50ZjpmaW5kQWRkcmVzc1Jlc3BvbnNlIi8+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGw6aW5wdXQgbmFtZT0ic2F2ZUFkZHJlc3NSZXF1ZXN0IiBtZXNzYWdlPSJpbnRmOnNhdmVBZGRyZXNzUmVxdWVzdCIvPgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiIG1lc3NhZ2U9ImludGY6c2F2ZUFkZHJlc3NSZXNwb25zZSIvPgotICAgIDwvd3NkbDpvcGVyYXRpb24+Ci0gIDwvd3NkbDpwb3J0VHlwZT4KLSAgPHdzZGw6YmluZGluZyBuYW1lPSJBZGRyZXNzQm9va1NvYXBCaW5kaW5nIiB0eXBlPSJpbnRmOkFkZHJlc3NCb29rIj4KLSAgICA8d3NkbHNvYXA6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQiIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9odHRwIi8+Ci0gICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImZpbmRBZGRyZXNzIj4KLSAgICAgIDx3c2Rsc29hcDpvcGVyYXRpb24gc29hcEFjdGlvbj0iIi8+Ci0gICAgICA8d3NkbDppbnB1dCBuYW1lPSJmaW5kQWRkcmVzc1JlcXVlc3QiPgotICAgICAgICA8d3NkbHNvYXA6aGVhZGVyIG1lc3NhZ2U9ImludGY6ZmluZEFkZHJlc3NSZXF1ZXN0IiBwYXJ0PSJBZGRyZXNzSGVhZGVyIiB1c2U9ImxpdGVyYWwiPgotICAgICAgICA8L3dzZGxzb2FwOmhlYWRlcj4KLSAgICAgICAgPHdzZGxzb2FwOmJvZHkgcGFydHM9InBhcmFtZXRlcnMiIHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9ImZpbmRBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0ic2F2ZUFkZHJlc3MiPgotICAgICAgPHdzZGxzb2FwOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSIiLz4KLSAgICAgIDx3c2RsOmlucHV0IG5hbWU9InNhdmVBZGRyZXNzUmVxdWVzdCI+Ci0gICAgICAgIDx3c2Rsc29hcDpib2R5IHVzZT0ibGl0ZXJhbCIvPgotICAgICAgPC93c2RsOmlucHV0PgotICAgICAgPHdzZGw6b3V0cHV0IG5hbWU9InNhdmVBZGRyZXNzUmVzcG9uc2UiPgotICAgICAgICA8d3NkbHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiLz4KLSAgICAgIDwvd3NkbDpvdXRwdXQ+Ci0gICAgPC93c2RsOm9wZXJhdGlvbj4KLSAgPC93c2RsOmJpbmRpbmc+Ci0gIDx3c2RsOnNlcnZpY2UgbmFtZT0iQWRkcmVzc0Jvb2tTZXJ2aWNlIj4KLSAgICA8d3NkbDpwb3J0IG5hbWU9IkFkZHJlc3NCb29rIiBiaW5kaW5nPSJpbnRmOkFkZHJlc3NCb29rU29hcEJpbmRpbmciPgotICAgICAgPHdzZGxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly90ZW1wdXJpLm9yZy9BZGRyZXNzQm9vayIvPgotICAgIDwvd3NkbDpwb3J0PgotICA8L3dzZGw6c2VydmljZT4KLTwvd3NkbDpkZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL2FkZHJlc3NCb29rL3Rlc3RjYXNlLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL2FkZHJlc3NCb29rL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRjNjhhNy4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3dzaS9hZGRyZXNzQm9vay90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08dGVzdGNhc2UgbmFtZT0iYWRkcmVzc0Jvb2siPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgY29uZm9ybWFudCB3c2RsIHVzZWQgaW4gdGhlIFdTLUkgCi0gICAgaW50ZXJvcGVyYWJpbGl0eSBkZW1vLgotICA8L2Rlc2NyaXB0aW9uPgotICA8ZXhwZWN0ZWRGYWlsdXJlcy8+Ci08L3Rlc3RjYXNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL3NhbXBsZUFwcENhdGFsb2cvc2FtcGxlQXBwQ2F0YWxvZy53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvc2FtcGxlQXBwQ2F0YWxvZy9zYW1wbGVBcHBDYXRhbG9nLndzZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYzI5NzMuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvc2FtcGxlQXBwQ2F0YWxvZy9zYW1wbGVBcHBDYXRhbG9nLndzZGwKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHdzZGw6ZGVmaW5pdGlvbnMgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIgotIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIgotIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCi0geG1sbnM6d3NkbHNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC8iCi0geG1sbnM6aW50Zj0iaHR0cDovL3d3dy53cy1pLm9yZy9TYW1wbGVBcHBsaWNhdGlvbnMvU3VwcGx5Q2hhaW5NYW5hZ2VtZW50LzIwMDMtMDcvQ2F0YWxvZy53c2RsIgotIHhtbG5zOmltcGw9Imh0dHA6Ly93d3cud3MtaS5vcmcvU2FtcGxlQXBwbGljYXRpb25zL1N1cHBseUNoYWluTWFuYWdlbWVudC8yMDAzLTA3L0NhdGFsb2dfSW1wbC53c2RsIgotIHhtbG5zOlNPQVAtRU5DPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIKLSB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iPgotICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LndzLWkub3JnL1NhbXBsZUFwcGxpY2F0aW9ucy9TdXBwbHlDaGFpbk1hbmFnZW1lbnQvMjAwMy0wNy9DYXRhbG9nLndzZGwiIAotCWxvY2F0aW9uPSJodHRwOi8vd3d3LndzLWkub3JnL1NhbXBsZUFwcGxpY2F0aW9ucy9TdXBwbHlDaGFpbk1hbmFnZW1lbnQvMjAwMy0wNy9DYXRhbG9nLndzZGwiLz4KLSAgPHdzZGw6c2VydmljZSBuYW1lPSJDYXRhbG9nU2VydmljZSI+Ci0gICAgPHdzZGw6cG9ydCBuYW1lPSJDYXRhbG9nIiBiaW5kaW5nPSJpbnRmOkNhdGFsb2dTb2FwQmluZGluZyI+Ci0gICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL0NhdGFsb2dTZXJ2aWNlIi8+Ci0gICAgPC93c2RsOnBvcnQ+Ci0gIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL3NhbXBsZUFwcENhdGFsb2cvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvc2FtcGxlQXBwQ2F0YWxvZy90ZXN0Y2FzZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMDUzYTIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvc2FtcGxlQXBwQ2F0YWxvZy90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9InNhbXBsZUFwcENhdGFsb2ciPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyB0aGUgV1MtSSBTYW1wbGUgQXBwbGljYXRpb24gZGVtb25zdHJhdGluZyBhdHRhY2htZW50IHN1cHBvcnQuCi0gICAgVGhpcyBzaG91bGQgdmFsaWRhdGUgYWdhaW5zdCB0aGUgV1MtSSBBdHRhY2htZW50cyBQcm9maWxlLgotICAgIEhvd2V2ZXIsIHRoaXMgc2hvdWxkIGZhaWwgdG8gY29uZm9ybSB0byB0aGUgV1MtSSBTaW1wbGUgU29hcCBCaW5kaW5nIFByb2ZpbGUuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzPgotCTxhc3NlcnRpb24gaWQ9IlNTQlAyNDAzIiB0YWRJRD0iU1NCUDEwIi8+Ci0gIDwvZXhwZWN0ZWRGYWlsdXJlcz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvc2FtcGxlQXBwTWFudWZhY3R1cmVyL3NhbXBsZUFwcE1hbnVmYWN0dXJlci53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvc2FtcGxlQXBwTWFudWZhY3R1cmVyL3NhbXBsZUFwcE1hbnVmYWN0dXJlci53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWQwNjc5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL3NhbXBsZUFwcE1hbnVmYWN0dXJlci9zYW1wbGVBcHBNYW51ZmFjdHVyZXIud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTx3c2RsOmRlZmluaXRpb25zIAotCXhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiAKLQl4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczpTT0FQLUVOQz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbmNvZGluZy8iIAotCXhtbG5zOmltcGw9Imh0dHA6Ly93d3cud3MtaS5vcmcvU2FtcGxlQXBwbGljYXRpb25zL1N1cHBseUNoYWluTWFuYWdlbWVudC8yMDAyLTEwL01hbnVmYWN0dXJlcl9JbXBsLndzZGwiIAotCXhtbG5zOmludGY9Imh0dHA6Ly93d3cud3MtaS5vcmcvU2FtcGxlQXBwbGljYXRpb25zL1N1cHBseUNoYWluTWFuYWdlbWVudC8yMDAyLTEwL01hbnVmYWN0dXJlci53c2RsIiAKLQl4bWxuczpjdD0iaHR0cDovL3d3dy53cy1pLm9yZy9TYW1wbGVBcHBsaWNhdGlvbnMvU3VwcGx5Q2hhaW5NYW5hZ2VtZW50LzIwMDItMDgvQ29uZmlndXJhdGlvbi54c2QiIAotCXhtbG5zOmNmZz0iaHR0cDovL3d3dy53cy1pLm9yZy9TYW1wbGVBcHBsaWNhdGlvbnMvU3VwcGx5Q2hhaW5NYW5hZ2VtZW50LzIwMDItMDgvQ29uZmlndXJhdGlvbi53c2RsIgotCXhtbG5zOndzZGxzb2FwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAvIiAKLQl4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiAKLQl4bWxuczp0bnM9Imh0dHA6Ly93d3cud3MtaS5vcmcvU2FtcGxlQXBwbGljYXRpb25zL1N1cHBseUNoYWluTWFuYWdlbWVudC8yMDAyLTEwL01hbnVmYWN0dXJlci53c2RsIgotCXRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3RlbXB1cmkub3JnLyI+Ci0KLSAgIDx3c2RsOmltcG9ydCBsb2NhdGlvbj0iaHR0cDovL3d3dy53cy1pLm9yZy9TYW1wbGVBcHBsaWNhdGlvbnMvU3VwcGx5Q2hhaW5NYW5hZ2VtZW50LzIwMDItMTAvTWFudWZhY3R1cmVyLndzZGwiIAotICAgCQluYW1lc3BhY2U9Imh0dHA6Ly93d3cud3MtaS5vcmcvU2FtcGxlQXBwbGljYXRpb25zL1N1cHBseUNoYWluTWFuYWdlbWVudC8yMDAyLTEwL01hbnVmYWN0dXJlci53c2RsIi8+Ci0gICA8d3NkbDppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LndzLWkub3JnL1NhbXBsZUFwcGxpY2F0aW9ucy9TdXBwbHlDaGFpbk1hbmFnZW1lbnQvMjAwMi0wOC9Db25maWd1cmF0aW9uLndzZGwiCi0JCWxvY2F0aW9uPSJodHRwOi8vd3d3LndzLWkub3JnL1NhbXBsZUFwcGxpY2F0aW9ucy9TdXBwbHlDaGFpbk1hbmFnZW1lbnQvMjAwMi0wOC9Db25maWd1cmF0aW9uLndzZGwiLz4KLQotICAgPHdzZGw6c2VydmljZSBuYW1lPSJUZXN0U2VydmljZSI+Ci0gICAgICA8d3NkbDpwb3J0IGJpbmRpbmc9ImludGY6TWFudWZhY3R1cmVyU29hcEJpbmRpbmciIG5hbWU9IlRlc3RQb3J0Ij4KLSAgICAgICAgIDx3c2Rsc29hcDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vdGVtcHVyaS5vcmcvVGVzdFNlcnZpY2UiLz4KLSAgICAgIDwvd3NkbDpwb3J0PgotICAgPC93c2RsOnNlcnZpY2U+Ci0KLTwvd3NkbDpkZWZpbml0aW9ucz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3dzaS9zYW1wbGVBcHBNYW51ZmFjdHVyZXIvdGVzdGNhc2UueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvc2FtcGxlQXBwTWFudWZhY3R1cmVyL3Rlc3RjYXNlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVjOWYwNi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3dzaS9zYW1wbGVBcHBNYW51ZmFjdHVyZXIvdGVzdGNhc2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTx0ZXN0Y2FzZSBuYW1lPSJzYW1wbGVBcHBNYW51ZmFjdHVyZXIiPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgVGhpcyBpcyB0aGUgV1MtSSBTYW1wbGUgQXBwbGljYXRpb24gZXhlcmNpc2luZyB0aGUgIE1hbnVmYWN0dXJlciB3c2RsIAotICAgIGluIHRoZSBXUy1JIEJhc2ljIFByb2ZpbGUuCi0gICAgVGhpcyBzaG91bGQgdmFsaWRhdGUgYWdhaW5zdCB0aGUgV1MtSSBTaW1wbGUgU29hcCBCaW5kaW5nIFByb2ZpbGUuCi0gICAgVGhpcyBzaG91bGQgYWxzbyB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBXUy1JIEF0dGFjaG1lbnRzIFByb2ZpbGUuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxleHBlY3RlZEZhaWx1cmVzLz4KLTwvdGVzdGNhc2U+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvc2FtcGxlQXBwV2FyZWhvdXNlL3NhbXBsZUFwcFdhcmVob3VzZS53c2RsIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LndzaS50ZXN0cy90ZXN0UmVzb3VyY2VzL3NhbXBsZXMvd3NkbC93c2kvc2FtcGxlQXBwV2FyZWhvdXNlL3NhbXBsZUFwcFdhcmVob3VzZS53c2RsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmUwZDIyLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL3NhbXBsZUFwcFdhcmVob3VzZS9zYW1wbGVBcHBXYXJlaG91c2Uud3NkbAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLTx3c2RsOmRlZmluaXRpb25zIAotCXhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIiAKLQl4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCi0JeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKLQl4bWxuczppbnRmPSJodHRwOi8vd3d3LndzLWkub3JnL1NhbXBsZUFwcGxpY2F0aW9ucy9TdXBwbHlDaGFpbk1hbmFnZW1lbnQvMjAwMi0wOC9XYXJlaG91c2Uud3NkbCIgCi0JeG1sbnM6bWFuPSJodHRwOi8vd3d3LndzLWkub3JnL1NhbXBsZUFwcGxpY2F0aW9ucy9TdXBwbHlDaGFpbk1hbmFnZW1lbnQvMjAwMi0xMC9NYW51ZmFjdHVyZXIud3NkbCIKLQl4bWxuczp3c2Rsc29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIgCi0JdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vdGVtcHVyaS5vcmcvIj4KLQotICAgPHdzZGw6aW1wb3J0IGxvY2F0aW9uPSJodHRwOi8vd3d3LndzLWkub3JnL1NhbXBsZUFwcGxpY2F0aW9ucy9TdXBwbHlDaGFpbk1hbmFnZW1lbnQvMjAwMi0xMC9NYW51ZmFjdHVyZXIud3NkbCIgCi0gICAJCW5hbWVzcGFjZT0iaHR0cDovL3d3dy53cy1pLm9yZy9TYW1wbGVBcHBsaWNhdGlvbnMvU3VwcGx5Q2hhaW5NYW5hZ2VtZW50LzIwMDItMTAvTWFudWZhY3R1cmVyLndzZGwiLz4KLSAgIDx3c2RsOmltcG9ydCBsb2NhdGlvbj0iaHR0cDovL3d3dy53cy1pLm9yZy9TYW1wbGVBcHBsaWNhdGlvbnMvU3VwcGx5Q2hhaW5NYW5hZ2VtZW50LzIwMDItMDgvV2FyZWhvdXNlLndzZGwiIAotICAgCQluYW1lc3BhY2U9Imh0dHA6Ly93d3cud3MtaS5vcmcvU2FtcGxlQXBwbGljYXRpb25zL1N1cHBseUNoYWluTWFuYWdlbWVudC8yMDAyLTA4L1dhcmVob3VzZS53c2RsIi8+Ci0KLSAgIDx3c2RsOnNlcnZpY2UgbmFtZT0iVGVzdFNlcnZpY2UiPgotICAgICAgPHdzZGw6cG9ydCBiaW5kaW5nPSJpbnRmOldhcmVob3VzZVNvYXBCaW5kaW5nIiBuYW1lPSJUZXN0UG9ydCI+Ci0gICAgICAgICA8d3NkbHNvYXA6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3RlbXB1cmkub3JnL1Rlc3RTZXJ2aWNlIi8+Ci0gICAgICA8L3dzZGw6cG9ydD4KLSAgIDwvd3NkbDpzZXJ2aWNlPgotPC93c2RsOmRlZmluaXRpb25zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL3NhbXBsZUFwcFdhcmVob3VzZS90ZXN0Y2FzZS54bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Qud3NpLnRlc3RzL3Rlc3RSZXNvdXJjZXMvc2FtcGxlcy93c2RsL3dzaS9zYW1wbGVBcHBXYXJlaG91c2UvdGVzdGNhc2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzBkYzUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC53c2kudGVzdHMvdGVzdFJlc291cmNlcy9zYW1wbGVzL3dzZGwvd3NpL3NhbXBsZUFwcFdhcmVob3VzZS90ZXN0Y2FzZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPHRlc3RjYXNlIG5hbWU9InNhbXBsZUFwcFdhcmVob3VzZSI+Ci0gIDxkZXNjcmlwdGlvbj4KLSAgICBUaGlzIGlzIHRoZSBXUy1JIFNhbXBsZSBBcHBsaWNhdGlvbiBleGVyY2lzaW5nIHRoZSAgV2FyZWhvdXNlIHdzZGwgCi0gICAgaW4gdGhlIFdTLUkgQmFzaWMgUHJvZmlsZS4KLSAgICBUaGlzIHNob3VsZCB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBXUy1JIFNpbXBsZSBTb2FwIEJpbmRpbmcgUHJvZmlsZS4KLSAgICBUaGlzIHNob3VsZCBhbHNvIHZhbGlkYXRlIGFnYWluc3QgdGhlIFdTLUkgQXR0YWNobWVudHMgUHJvZmlsZS4KLSAgPC9kZXNjcmlwdGlvbj4KLSAgPGV4cGVjdGVkRmFpbHVyZXMvPgotPC90ZXN0Y2FzZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==